aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.cvsignore26
-rw-r--r--AUTHORS78
-rw-r--r--COPYING340
-rw-r--r--ChangeLog6524
-rw-r--r--INSTALL182
-rw-r--r--MAINTAINERS5
-rw-r--r--Makefile.am41
-rw-r--r--NEWS992
-rw-r--r--README215
-rw-r--r--acconfig.h34
-rwxr-xr-xautogen.sh10
-rw-r--r--calendar/.cvsignore6
-rw-r--r--calendar/AUTHORS5
-rw-r--r--calendar/ChangeLog10214
-rw-r--r--calendar/Makefile.am7
-rw-r--r--calendar/TODO88
-rw-r--r--calendar/cal-client/.cvsignore15
-rw-r--r--calendar/cal-client/Makefile.am86
-rw-r--r--calendar/cal-client/cal-client-types.c53
-rw-r--r--calendar/cal-client/cal-client-types.h51
-rw-r--r--calendar/cal-client/cal-client.c1533
-rw-r--r--calendar/cal-client/cal-client.h133
-rw-r--r--calendar/cal-client/cal-listener.c387
-rw-r--r--calendar/cal-client/cal-listener.h93
-rw-r--r--calendar/cal-client/cal-query.c406
-rw-r--r--calendar/cal-client/cal-query.h82
-rw-r--r--calendar/cal-client/client-test.c216
-rw-r--r--calendar/cal-client/query-listener.c281
-rw-r--r--calendar/cal-client/query-listener.h96
-rw-r--r--calendar/cal-client/test.ics318
-rw-r--r--calendar/cal-util/.cvsignore7
-rw-r--r--calendar/cal-util/Makefile.am49
-rw-r--r--calendar/cal-util/cal-component.c4094
-rw-r--r--calendar/cal-util/cal-component.h361
-rw-r--r--calendar/cal-util/cal-recur.c3758
-rw-r--r--calendar/cal-util/cal-recur.h57
-rw-r--r--calendar/cal-util/cal-util.c75
-rw-r--r--calendar/cal-util/cal-util.h58
-rw-r--r--calendar/cal-util/calobj.c2008
-rw-r--r--calendar/cal-util/calobj.h312
-rw-r--r--calendar/cal-util/test-recur.c196
-rw-r--r--calendar/cal-util/timeutil.c385
-rw-r--r--calendar/cal-util/timeutil.h70
-rw-r--r--calendar/conduits/.cvsignore2
-rw-r--r--calendar/conduits/Makefile.am1
-rw-r--r--calendar/conduits/calendar/.cvsignore9
-rw-r--r--calendar/conduits/calendar/Makefile.am45
-rw-r--r--calendar/conduits/calendar/calendar-conduit-config.h120
-rw-r--r--calendar/conduits/calendar/calendar-conduit.c1198
-rw-r--r--calendar/conduits/calendar/calendar-conduit.h79
-rw-r--r--calendar/conduits/calendar/e-calendar-conduit-control-applet.desktop.in8
-rw-r--r--calendar/conduits/calendar/e-calendar.conduit.in9
-rw-r--r--calendar/conduits/todo/.cvsignore9
-rw-r--r--calendar/conduits/todo/Makefile.am45
-rw-r--r--calendar/conduits/todo/e-todo-conduit-control-applet.desktop.in7
-rw-r--r--calendar/conduits/todo/e-todo.conduit.in9
-rw-r--r--calendar/conduits/todo/todo-conduit-config.h120
-rw-r--r--calendar/conduits/todo/todo-conduit.c1012
-rw-r--r--calendar/conduits/todo/todo-conduit.h78
-rw-r--r--calendar/gui/.cvsignore17
-rw-r--r--calendar/gui/Evolution-Composer.h352
-rw-r--r--calendar/gui/GNOME_Evolution_Calendar.oaf.in120
-rw-r--r--calendar/gui/Makefile.am165
-rw-r--r--calendar/gui/alarm-notify.c963
-rw-r--r--calendar/gui/alarm-notify.h35
-rw-r--r--calendar/gui/alarm-notify/.cvsignore10
-rw-r--r--calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in24
-rw-r--r--calendar/gui/alarm-notify/Makefile.am78
-rw-r--r--calendar/gui/alarm-notify/alarm-notify-dialog.c231
-rw-r--r--calendar/gui/alarm-notify/alarm-notify-dialog.h45
-rw-r--r--calendar/gui/alarm-notify/alarm-notify.c404
-rw-r--r--calendar/gui/alarm-notify/alarm-notify.glade228
-rw-r--r--calendar/gui/alarm-notify/alarm-notify.h67
-rw-r--r--calendar/gui/alarm-notify/alarm-queue.c964
-rw-r--r--calendar/gui/alarm-notify/alarm-queue.h36
-rw-r--r--calendar/gui/alarm-notify/alarm.c357
-rw-r--r--calendar/gui/alarm-notify/alarm.h44
-rw-r--r--calendar/gui/alarm-notify/client-main.c178
-rw-r--r--calendar/gui/alarm-notify/notify-main.c119
-rw-r--r--calendar/gui/calendar-commands.c479
-rw-r--r--calendar/gui/calendar-commands.h43
-rw-r--r--calendar/gui/calendar-component.c175
-rw-r--r--calendar/gui/calendar-component.h32
-rw-r--r--calendar/gui/calendar-config.c535
-rw-r--r--calendar/gui/calendar-config.h130
-rw-r--r--calendar/gui/calendar-model.c2234
-rw-r--r--calendar/gui/calendar-model.h93
-rw-r--r--calendar/gui/calendar-summary.c778
-rw-r--r--calendar/gui/calendar-summary.h36
-rw-r--r--calendar/gui/comp-util.c58
-rw-r--r--calendar/gui/comp-util.h30
-rw-r--r--calendar/gui/component-factory.c175
-rw-r--r--calendar/gui/component-factory.h32
-rw-r--r--calendar/gui/control-factory.c213
-rw-r--r--calendar/gui/control-factory.h31
-rw-r--r--calendar/gui/dialogs/.cvsignore3
-rw-r--r--calendar/gui/dialogs/Makefile.am49
-rw-r--r--calendar/gui/dialogs/alarm-notify-dialog.c231
-rw-r--r--calendar/gui/dialogs/alarm-notify-dialog.h45
-rw-r--r--calendar/gui/dialogs/alarm-notify.glade228
-rw-r--r--calendar/gui/dialogs/alarm-page.c778
-rw-r--r--calendar/gui/dialogs/alarm-page.glade381
-rw-r--r--calendar/gui/dialogs/alarm-page.h64
-rw-r--r--calendar/gui/dialogs/cal-prefs-dialog.c456
-rw-r--r--calendar/gui/dialogs/cal-prefs-dialog.glade1241
-rw-r--r--calendar/gui/dialogs/cal-prefs-dialog.h70
-rw-r--r--calendar/gui/dialogs/delete-comp.c148
-rw-r--r--calendar/gui/dialogs/delete-comp.h32
-rw-r--r--calendar/gui/dialogs/editor-page.c259
-rw-r--r--calendar/gui/dialogs/editor-page.h86
-rw-r--r--calendar/gui/dialogs/event-page.c908
-rw-r--r--calendar/gui/dialogs/event-page.glade429
-rw-r--r--calendar/gui/dialogs/event-page.h70
-rw-r--r--calendar/gui/dialogs/recurrence-page.c900
-rw-r--r--calendar/gui/dialogs/recurrence-page.glade607
-rw-r--r--calendar/gui/dialogs/recurrence-page.h64
-rw-r--r--calendar/gui/dialogs/save-comp.c63
-rw-r--r--calendar/gui/dialogs/save-comp.h30
-rw-r--r--calendar/gui/dialogs/task-details-page.glade137
-rw-r--r--calendar/gui/dialogs/task-editor-dialog.glade695
-rw-r--r--calendar/gui/dialogs/task-editor.c1294
-rw-r--r--calendar/gui/dialogs/task-editor.h70
-rw-r--r--calendar/gui/dialogs/task-page.glade547
-rw-r--r--calendar/gui/e-calendar-table.c970
-rw-r--r--calendar/gui/e-calendar-table.h128
-rw-r--r--calendar/gui/e-day-view-main-item.c660
-rw-r--r--calendar/gui/e-day-view-main-item.h66
-rw-r--r--calendar/gui/e-day-view-time-item.c660
-rw-r--r--calendar/gui/e-day-view-time-item.h75
-rw-r--r--calendar/gui/e-day-view-top-item.c651
-rw-r--r--calendar/gui/e-day-view-top-item.h66
-rw-r--r--calendar/gui/e-day-view.c6665
-rw-r--r--calendar/gui/e-day-view.h615
-rw-r--r--calendar/gui/e-itip-control.c1082
-rw-r--r--calendar/gui/e-itip-control.glade478
-rw-r--r--calendar/gui/e-itip-control.h30
-rw-r--r--calendar/gui/e-meeting-dialog.glade491
-rw-r--r--calendar/gui/e-meeting-edit.c1001
-rw-r--r--calendar/gui/e-meeting-edit.h45
-rw-r--r--calendar/gui/e-tasks.c653
-rw-r--r--calendar/gui/e-tasks.h79
-rw-r--r--calendar/gui/e-week-view-event-item.c816
-rw-r--r--calendar/gui/e-week-view-event-item.h71
-rw-r--r--calendar/gui/e-week-view-main-item.c389
-rw-r--r--calendar/gui/e-week-view-main-item.h67
-rw-r--r--calendar/gui/e-week-view-titles-item.c311
-rw-r--r--calendar/gui/e-week-view-titles-item.h67
-rw-r--r--calendar/gui/e-week-view.c3628
-rw-r--r--calendar/gui/e-week-view.h452
-rw-r--r--calendar/gui/event-editor-dialog.glade1408
-rw-r--r--calendar/gui/event-editor.c3377
-rw-r--r--calendar/gui/event-editor.h77
-rw-r--r--calendar/gui/evolution-calendar-control.c202
-rw-r--r--calendar/gui/gnome-cal.c1705
-rw-r--r--calendar/gui/gnome-cal.h130
-rw-r--r--calendar/gui/gnome-cal.html44
-rw-r--r--calendar/gui/gnome-calendar-conduit.pngbin3000 -> 0 bytes
-rw-r--r--calendar/gui/goto-dialog.glade154
-rw-r--r--calendar/gui/goto.c220
-rw-r--r--calendar/gui/goto.h32
-rw-r--r--calendar/gui/itip-utils.c48
-rw-r--r--calendar/gui/itip-utils.h15
-rw-r--r--calendar/gui/main.c89
-rw-r--r--calendar/gui/meeting-mockup.glade488
-rw-r--r--calendar/gui/print.c1327
-rw-r--r--calendar/gui/print.h41
-rw-r--r--calendar/gui/tag-calendar.c172
-rw-r--r--calendar/gui/tag-calendar.h32
-rw-r--r--calendar/gui/tasks-control-factory.c77
-rw-r--r--calendar/gui/tasks-control-factory.h31
-rw-r--r--calendar/gui/tasks-control.c283
-rw-r--r--calendar/gui/tasks-control.h32
-rw-r--r--calendar/gui/tasks-migrate.c308
-rw-r--r--calendar/gui/tasks-migrate.h29
-rw-r--r--calendar/gui/test.vcf133
-rw-r--r--calendar/gui/test2.vcf133
-rw-r--r--calendar/gui/topic.dat2
-rw-r--r--calendar/gui/weekday-picker.c575
-rw-r--r--calendar/gui/weekday-picker.h73
-rw-r--r--calendar/gui/widget-util.c54
-rw-r--r--calendar/gui/widget-util.h31
-rw-r--r--calendar/idl/.cvsignore2
-rw-r--r--calendar/idl/Makefile.am7
-rw-r--r--calendar/idl/evolution-calendar.idl260
-rw-r--r--calendar/pcs/.cvsignore11
-rw-r--r--calendar/pcs/Makefile.am49
-rw-r--r--calendar/pcs/cal-backend-db.c1503
-rw-r--r--calendar/pcs/cal-backend-db.h57
-rw-r--r--calendar/pcs/cal-backend-file.c1623
-rw-r--r--calendar/pcs/cal-backend-file.h63
-rw-r--r--calendar/pcs/cal-backend.c542
-rw-r--r--calendar/pcs/cal-backend.h153
-rw-r--r--calendar/pcs/cal-common.h42
-rw-r--r--calendar/pcs/cal-factory.c652
-rw-r--r--calendar/pcs/cal-factory.h73
-rw-r--r--calendar/pcs/cal.c587
-rw-r--r--calendar/pcs/cal.h71
-rw-r--r--calendar/pcs/job.c99
-rw-r--r--calendar/pcs/job.h36
-rw-r--r--calendar/pcs/query.c1215
-rw-r--r--calendar/pcs/query.h69
-rw-r--r--camel/.cvsignore11
-rw-r--r--camel/CODING.STYLE19
-rw-r--r--camel/ChangeLog12671
-rw-r--r--camel/Makefile.am212
-rw-r--r--camel/README57
-rw-r--r--camel/README.COPYRIGHT47
-rw-r--r--camel/README.HACKING14
-rw-r--r--camel/README.mt171
-rw-r--r--camel/broken-date-parser.c318
-rw-r--r--camel/broken-date-parser.h32
-rw-r--r--camel/camel-address.c240
-rw-r--r--camel/camel-address.h70
-rw-r--r--camel/camel-charset-map-private.h4345
-rw-r--r--camel/camel-charset-map.c325
-rw-r--r--camel/camel-charset-map.h40
-rw-r--r--camel/camel-cipher-context.c450
-rw-r--r--camel/camel-cipher-context.h125
-rw-r--r--camel/camel-data-wrapper.c294
-rw-r--r--camel/camel-data-wrapper.h94
-rw-r--r--camel/camel-digest-folder.c305
-rw-r--r--camel/camel-digest-folder.h52
-rw-r--r--camel/camel-disco-folder.c335
-rw-r--r--camel/camel-disco-folder.h106
-rw-r--r--camel/camel-disco-store.c277
-rw-r--r--camel/camel-disco-store.h113
-rw-r--r--camel/camel-exception-list.def37
-rw-r--r--camel/camel-exception.c281
-rw-r--r--camel/camel-exception.h88
-rw-r--r--camel/camel-file-utils.c283
-rw-r--r--camel/camel-file-utils.h55
-rw-r--r--camel/camel-filter-driver.c913
-rw-r--r--camel/camel-filter-driver.h94
-rw-r--r--camel/camel-filter-search.c465
-rw-r--r--camel/camel-filter-search.h44
-rw-r--r--camel/camel-folder-search.c905
-rw-r--r--camel/camel-folder-search.h121
-rw-r--r--camel/camel-folder-summary.c2606
-rw-r--r--camel/camel-folder-summary.h327
-rw-r--r--camel/camel-folder-thread.c784
-rw-r--r--camel/camel-folder-thread.h58
-rw-r--r--camel/camel-folder.c1742
-rw-r--r--camel/camel-folder.h308
-rw-r--r--camel/camel-internet-address.c509
-rw-r--r--camel/camel-internet-address.h55
-rw-r--r--camel/camel-lock.c407
-rw-r--r--camel/camel-lock.h64
-rw-r--r--camel/camel-medium.c327
-rw-r--r--camel/camel-medium.h101
-rw-r--r--camel/camel-mime-filter-basic.c222
-rw-r--r--camel/camel-mime-filter-basic.h58
-rw-r--r--camel/camel-mime-filter-bestenc.c289
-rw-r--r--camel/camel-mime-filter-bestenc.h88
-rw-r--r--camel/camel-mime-filter-charset.c243
-rw-r--r--camel/camel-mime-filter-charset.h52
-rw-r--r--camel/camel-mime-filter-crlf.c150
-rw-r--r--camel/camel-mime-filter-crlf.h62
-rw-r--r--camel/camel-mime-filter-from.c221
-rw-r--r--camel/camel-mime-filter-from.h49
-rw-r--r--camel/camel-mime-filter-html.c322
-rw-r--r--camel/camel-mime-filter-html.h46
-rw-r--r--camel/camel-mime-filter-index.c156
-rw-r--r--camel/camel-mime-filter-index.h55
-rw-r--r--camel/camel-mime-filter-linewrap.c140
-rw-r--r--camel/camel-mime-filter-linewrap.h51
-rw-r--r--camel/camel-mime-filter-save.c144
-rw-r--r--camel/camel-mime-filter-save.h50
-rw-r--r--camel/camel-mime-filter.c256
-rw-r--r--camel/camel-mime-filter.h84
-rw-r--r--camel/camel-mime-message.c827
-rw-r--r--camel/camel-mime-message.h134
-rw-r--r--camel/camel-mime-parser.c1953
-rw-r--r--camel/camel-mime-parser.h133
-rw-r--r--camel/camel-mime-part-utils.c247
-rw-r--r--camel/camel-mime-part-utils.h45
-rw-r--r--camel/camel-mime-part.c811
-rw-r--r--camel/camel-mime-part.h134
-rw-r--r--camel/camel-mime-utils.c3650
-rw-r--r--camel/camel-mime-utils.h200
-rw-r--r--camel/camel-movemail.c598
-rw-r--r--camel/camel-movemail.h45
-rw-r--r--camel/camel-multipart.c522
-rw-r--r--camel/camel-multipart.h105
-rw-r--r--camel/camel-news-address.c65
-rw-r--r--camel/camel-news-address.h45
-rw-r--r--camel/camel-object.c986
-rw-r--r--camel/camel-object.h146
-rw-r--r--camel/camel-operation.c665
-rw-r--r--camel/camel-operation.h67
-rw-r--r--camel/camel-pgp-context.c1359
-rw-r--r--camel/camel-pgp-context.h80
-rw-r--r--camel/camel-pgp-mime.c514
-rw-r--r--camel/camel-pgp-mime.h64
-rw-r--r--camel/camel-pkcs7-context.c691
-rw-r--r--camel/camel-pkcs7-context.h73
-rw-r--r--camel/camel-private.h181
-rw-r--r--camel/camel-provider.c155
-rw-r--r--camel/camel-provider.h161
-rw-r--r--camel/camel-remote-store.c574
-rw-r--r--camel/camel-remote-store.h86
-rw-r--r--camel/camel-sasl-anonymous.c150
-rw-r--r--camel/camel-sasl-anonymous.h70
-rw-r--r--camel/camel-sasl-cram-md5.c142
-rw-r--r--camel/camel-sasl-cram-md5.h59
-rw-r--r--camel/camel-sasl-digest-md5.c895
-rw-r--r--camel/camel-sasl-digest-md5.h62
-rw-r--r--camel/camel-sasl-kerberos4.c223
-rw-r--r--camel/camel-sasl-kerberos4.h62
-rw-r--r--camel/camel-sasl-login.c134
-rw-r--r--camel/camel-sasl-login.h61
-rw-r--r--camel/camel-sasl-plain.c104
-rw-r--r--camel/camel-sasl-plain.h59
-rw-r--r--camel/camel-sasl.c256
-rw-r--r--camel/camel-sasl.h77
-rw-r--r--camel/camel-search-private.c433
-rw-r--r--camel/camel-search-private.h46
-rw-r--r--camel/camel-seekable-stream.c203
-rw-r--r--camel/camel-seekable-stream.h88
-rw-r--r--camel/camel-seekable-substream.c304
-rw-r--r--camel/camel-seekable-substream.h70
-rw-r--r--camel/camel-service.c624
-rw-r--r--camel/camel-service.h130
-rw-r--r--camel/camel-session.c667
-rw-r--r--camel/camel-session.h175
-rw-r--r--camel/camel-smime-context.c642
-rw-r--r--camel/camel-smime-context.h73
-rw-r--r--camel/camel-smime.c504
-rw-r--r--camel/camel-smime.h63
-rw-r--r--camel/camel-store.c801
-rw-r--r--camel/camel-store.h194
-rw-r--r--camel/camel-stream-buffer.c456
-rw-r--r--camel/camel-stream-buffer.h109
-rw-r--r--camel/camel-stream-filter.c382
-rw-r--r--camel/camel-stream-filter.h52
-rw-r--r--camel/camel-stream-fs.c374
-rw-r--r--camel/camel-stream-fs.h75
-rw-r--r--camel/camel-stream-mem.c251
-rw-r--r--camel/camel-stream-mem.h75
-rw-r--r--camel/camel-stream-null.c92
-rw-r--r--camel/camel-stream-null.h44
-rw-r--r--camel/camel-stream.c275
-rw-r--r--camel/camel-stream.h91
-rw-r--r--camel/camel-tcp-stream-openssl.c602
-rw-r--r--camel/camel-tcp-stream-openssl.h64
-rw-r--r--camel/camel-tcp-stream-raw.c445
-rw-r--r--camel/camel-tcp-stream-raw.h64
-rw-r--r--camel/camel-tcp-stream-ssl.c453
-rw-r--r--camel/camel-tcp-stream-ssl.h65
-rw-r--r--camel/camel-tcp-stream.c180
-rw-r--r--camel/camel-tcp-stream.h122
-rw-r--r--camel/camel-transport.c108
-rw-r--r--camel/camel-transport.h88
-rw-r--r--camel/camel-types.h79
-rw-r--r--camel/camel-uid-cache.c192
-rw-r--r--camel/camel-uid-cache.h56
-rw-r--r--camel/camel-url.c553
-rw-r--r--camel/camel-url.h87
-rw-r--r--camel/camel-vee-folder.c1055
-rw-r--r--camel/camel-vee-folder.h69
-rw-r--r--camel/camel-vee-store.c140
-rw-r--r--camel/camel-vee-store.h51
-rw-r--r--camel/camel-vtrash-folder.c142
-rw-r--r--camel/camel-vtrash-folder.h51
-rw-r--r--camel/camel.c89
-rw-r--r--camel/camel.h86
-rw-r--r--camel/devel-docs/camel_data_wrapper.diabin3062 -> 0 bytes
-rw-r--r--camel/devel-docs/camel_parser_states.diabin2505 -> 0 bytes
-rw-r--r--camel/devel-docs/camel_stream.diabin2669 -> 0 bytes
-rw-r--r--camel/gstring-util.c217
-rw-r--r--camel/gstring-util.h66
-rw-r--r--camel/hash-table-utils.c79
-rw-r--r--camel/hash-table-utils.h48
-rw-r--r--camel/providers/.cvsignore2
-rw-r--r--camel/providers/Makefile.am11
-rw-r--r--camel/providers/cache/.cvsignore11
-rw-r--r--camel/providers/cache/Makefile.am35
-rw-r--r--camel/providers/cache/camel-cache-folder.c810
-rw-r--r--camel/providers/cache/camel-cache-folder.h88
-rw-r--r--camel/providers/cache/camel-cache-map.c259
-rw-r--r--camel/providers/cache/camel-cache-map.h64
-rw-r--r--camel/providers/cache/camel-cache-provider.c54
-rw-r--r--camel/providers/cache/camel-cache-store.c299
-rw-r--r--camel/providers/cache/camel-cache-store.h68
-rw-r--r--camel/providers/cache/libcamelcache.urls1
-rw-r--r--camel/providers/imap/.cvsignore11
-rw-r--r--camel/providers/imap/Makefile.am50
-rw-r--r--camel/providers/imap/camel-imap-command.c633
-rw-r--r--camel/providers/imap/camel-imap-command.h65
-rw-r--r--camel/providers/imap/camel-imap-folder.c1428
-rw-r--r--camel/providers/imap/camel-imap-folder.h90
-rw-r--r--camel/providers/imap/camel-imap-message-cache.c465
-rw-r--r--camel/providers/imap/camel-imap-message-cache.h100
-rw-r--r--camel/providers/imap/camel-imap-private.h95
-rw-r--r--camel/providers/imap/camel-imap-provider.c149
-rw-r--r--camel/providers/imap/camel-imap-search.c148
-rw-r--r--camel/providers/imap/camel-imap-search.h51
-rw-r--r--camel/providers/imap/camel-imap-store.c1351
-rw-r--r--camel/providers/imap/camel-imap-store.h92
-rw-r--r--camel/providers/imap/camel-imap-summary.c199
-rw-r--r--camel/providers/imap/camel-imap-summary.h69
-rw-r--r--camel/providers/imap/camel-imap-types.h40
-rw-r--r--camel/providers/imap/camel-imap-utils.c725
-rw-r--r--camel/providers/imap/camel-imap-utils.h68
-rw-r--r--camel/providers/imap/camel-imap-wrapper.c220
-rw-r--r--camel/providers/imap/camel-imap-wrapper.h71
-rw-r--r--camel/providers/imap/libcamelimap.urls1
-rw-r--r--camel/providers/local/.cvsignore11
-rw-r--r--camel/providers/local/Makefile.am58
-rw-r--r--camel/providers/local/camel-local-folder.c351
-rw-r--r--camel/providers/local/camel-local-folder.h96
-rw-r--r--camel/providers/local/camel-local-private.h60
-rw-r--r--camel/providers/local/camel-local-provider.c80
-rw-r--r--camel/providers/local/camel-local-store.c308
-rw-r--r--camel/providers/local/camel-local-store.h68
-rw-r--r--camel/providers/local/camel-local-summary.c560
-rw-r--r--camel/providers/local/camel-local-summary.h86
-rw-r--r--camel/providers/local/camel-maildir-folder.c229
-rw-r--r--camel/providers/local/camel-maildir-folder.h59
-rw-r--r--camel/providers/local/camel-maildir-store.c200
-rw-r--r--camel/providers/local/camel-maildir-store.h56
-rw-r--r--camel/providers/local/camel-maildir-summary.c766
-rw-r--r--camel/providers/local/camel-maildir-summary.h84
-rw-r--r--camel/providers/local/camel-mbox-folder.c436
-rw-r--r--camel/providers/local/camel-mbox-folder.h63
-rw-r--r--camel/providers/local/camel-mbox-store.c171
-rw-r--r--camel/providers/local/camel-mbox-store.h59
-rw-r--r--camel/providers/local/camel-mbox-summary.c889
-rw-r--r--camel/providers/local/camel-mbox-summary.h63
-rw-r--r--camel/providers/local/camel-mh-folder.c214
-rw-r--r--camel/providers/local/camel-mh-folder.h59
-rw-r--r--camel/providers/local/camel-mh-store.c136
-rw-r--r--camel/providers/local/camel-mh-store.h56
-rw-r--r--camel/providers/local/camel-mh-summary.c397
-rw-r--r--camel/providers/local/camel-mh-summary.h53
-rw-r--r--camel/providers/local/libcamellocal.urls3
-rw-r--r--camel/providers/nntp/.cvsignore12
-rw-r--r--camel/providers/nntp/Makefile.am53
-rw-r--r--camel/providers/nntp/camel-nntp-auth.c94
-rw-r--r--camel/providers/nntp/camel-nntp-auth.h43
-rw-r--r--camel/providers/nntp/camel-nntp-folder.c265
-rw-r--r--camel/providers/nntp/camel-nntp-folder.h74
-rw-r--r--camel/providers/nntp/camel-nntp-grouplist.c214
-rw-r--r--camel/providers/nntp/camel-nntp-grouplist.h49
-rw-r--r--camel/providers/nntp/camel-nntp-newsrc.c645
-rw-r--r--camel/providers/nntp/camel-nntp-newsrc.h34
-rw-r--r--camel/providers/nntp/camel-nntp-provider.c112
-rw-r--r--camel/providers/nntp/camel-nntp-resp-codes.h53
-rw-r--r--camel/providers/nntp/camel-nntp-store.c850
-rw-r--r--camel/providers/nntp/camel-nntp-store.h113
-rw-r--r--camel/providers/nntp/camel-nntp-types.h34
-rw-r--r--camel/providers/nntp/camel-nntp-utils.c256
-rw-r--r--camel/providers/nntp/camel-nntp-utils.h42
-rw-r--r--camel/providers/nntp/libcamelnntp.urls2
-rw-r--r--camel/providers/nntp/test-newsrc.c10
-rw-r--r--camel/providers/pop3/.cvsignore10
-rw-r--r--camel/providers/pop3/Makefile.am37
-rw-r--r--camel/providers/pop3/camel-pop3-folder.c370
-rw-r--r--camel/providers/pop3/camel-pop3-folder.h72
-rw-r--r--camel/providers/pop3/camel-pop3-provider.c113
-rw-r--r--camel/providers/pop3/camel-pop3-store.c650
-rw-r--r--camel/providers/pop3/camel-pop3-store.h79
-rw-r--r--camel/providers/pop3/libcamelpop3.urls1
-rw-r--r--camel/providers/sendmail/.cvsignore11
-rw-r--r--camel/providers/sendmail/Makefile.am31
-rw-r--r--camel/providers/sendmail/camel-sendmail-provider.c63
-rw-r--r--camel/providers/sendmail/camel-sendmail-transport.c250
-rw-r--r--camel/providers/sendmail/camel-sendmail-transport.h64
-rw-r--r--camel/providers/sendmail/libcamelsendmail.urls1
-rw-r--r--camel/providers/smtp/.cvsignore10
-rw-r--r--camel/providers/smtp/Makefile.am37
-rw-r--r--camel/providers/smtp/camel-smtp-provider.c65
-rw-r--r--camel/providers/smtp/camel-smtp-transport.c1093
-rw-r--r--camel/providers/smtp/camel-smtp-transport.h81
-rw-r--r--camel/providers/smtp/libcamelsmtp.urls1
-rw-r--r--camel/string-utils.c233
-rw-r--r--camel/string-utils.h70
-rw-r--r--camel/tests/.cvsignore7
-rw-r--r--camel/tests/Makefile.am3
-rw-r--r--camel/tests/README44
-rwxr-xr-xcamel/tests/data/gendoc.pl65
-rwxr-xr-xcamel/tests/data/genline.pl72
-rwxr-xr-xcamel/tests/data/getaddr.pl32
-rw-r--r--camel/tests/folder/.cvsignore12
-rw-r--r--camel/tests/folder/Makefile.am29
-rw-r--r--camel/tests/folder/README11
-rw-r--r--camel/tests/folder/test1.c113
-rw-r--r--camel/tests/folder/test2.c113
-rw-r--r--camel/tests/folder/test3.c396
-rw-r--r--camel/tests/folder/test4.c127
-rw-r--r--camel/tests/folder/test5.c129
-rw-r--r--camel/tests/folder/test6.c130
-rw-r--r--camel/tests/folder/test7.c129
-rw-r--r--camel/tests/folder/test8.c277
-rw-r--r--camel/tests/folder/test9.c286
-rw-r--r--camel/tests/lib/.cvsignore12
-rw-r--r--camel/tests/lib/Makefile.am13
-rw-r--r--camel/tests/lib/address-data.h93
-rw-r--r--camel/tests/lib/addresses.c51
-rw-r--r--camel/tests/lib/addresses.h5
-rw-r--r--camel/tests/lib/camel-test.c350
-rw-r--r--camel/tests/lib/camel-test.h68
-rw-r--r--camel/tests/lib/folders.c526
-rw-r--r--camel/tests/lib/folders.h20
-rw-r--r--camel/tests/lib/messages.c153
-rw-r--r--camel/tests/lib/messages.h12
-rw-r--r--camel/tests/lib/streams.c244
-rw-r--r--camel/tests/lib/streams.h12
-rw-r--r--camel/tests/message/.cvsignore15
-rw-r--r--camel/tests/message/Makefile.am23
-rw-r--r--camel/tests/message/README5
-rw-r--r--camel/tests/message/test1.c200
-rw-r--r--camel/tests/message/test2.c326
-rw-r--r--camel/tests/message/test3.c199
-rw-r--r--camel/tests/misc/.cvsignore11
-rw-r--r--camel/tests/misc/Makefile.am21
-rw-r--r--camel/tests/misc/README3
-rw-r--r--camel/tests/misc/url.c103
-rw-r--r--camel/tests/smime/.cvsignore5
-rw-r--r--camel/tests/smime/Makefile.am21
-rw-r--r--camel/tests/smime/README2
-rw-r--r--camel/tests/smime/pgp-mime.c169
-rw-r--r--camel/tests/smime/pgp.c178
-rw-r--r--camel/tests/smime/pkcs7.c178
-rw-r--r--camel/tests/stream/.cvsignore11
-rw-r--r--camel/tests/stream/Makefile.am21
-rw-r--r--camel/tests/stream/README4
-rw-r--r--camel/tests/stream/test1.c119
-rw-r--r--camel/tests/stream/test2.c53
-rw-r--r--camel/tests/stream/test3.c104
-rw-r--r--configure.in926
-rw-r--r--devel-docs/.cvsignore3
-rw-r--r--devel-docs/Makefile.am3
-rw-r--r--devel-docs/camel/.cvsignore12
-rw-r--r--devel-docs/camel/Makefile.am101
-rw-r--r--devel-docs/camel/README_AND_TODO.txt43
-rw-r--r--devel-docs/camel/camel-docs.sgml28
-rw-r--r--devel-docs/camel/camel-sections.txt154
-rw-r--r--devel-docs/camel/camel.types9
-rw-r--r--devel-docs/camel/tmpl/.cvsignore2
-rw-r--r--devel-docs/camel/tmpl/camel-data-wrapper.sgml26
-rw-r--r--devel-docs/camel/tmpl/camel-folder.sgml96
-rw-r--r--devel-docs/camel/tmpl/camel-mime-message.sgml171
-rw-r--r--devel-docs/camel/tmpl/camel-mime-part.sgml151
-rw-r--r--devel-docs/camel/tmpl/camel-recipient.sgml88
-rw-r--r--devel-docs/camel/tmpl/camel-service.sgml72
-rw-r--r--devel-docs/camel/tmpl/camel-store.sgml45
-rw-r--r--devel-docs/camel/tmpl/camel-stream.sgml101
-rw-r--r--devel-docs/misc/ref_and_id_proposition.txt237
-rw-r--r--devel-docs/query/virtual-folder-in-depth.sgml407
-rw-r--r--devel-docs/query/virtual-folder-in-depth.txt309
-rw-r--r--libversit/.cvsignore9
-rw-r--r--libversit/Makefile.am15
-rw-r--r--libversit/README.TXT951
-rw-r--r--libversit/port.h88
-rw-r--r--libversit/vcaltest.c118
-rw-r--r--libversit/vcaltmp.c337
-rw-r--r--libversit/vcaltmp.h128
-rw-r--r--libversit/vcc.h80
-rw-r--r--libversit/vcc.y1262
-rw-r--r--libversit/vctest.c95
-rw-r--r--libversit/vobject.c1452
-rw-r--r--libversit/vobject.h366
-rw-r--r--macros/ChangeLog234
-rw-r--r--macros/gnome-gettext.m46
-rw-r--r--po/.cvsignore10
-rw-r--r--po/ChangeLog1944
-rw-r--r--po/Makefile.i18npatch63
-rw-r--r--po/POTFILES.in253
-rw-r--r--po/POTFILES.skip10
-rw-r--r--po/az.po8964
-rw-r--r--po/ca.po10707
-rw-r--r--po/da.po11238
-rw-r--r--po/de.po9488
-rw-r--r--po/el.po9326
-rw-r--r--po/en_GB.po8441
-rw-r--r--po/es.po9667
-rw-r--r--po/fi.po8696
-rw-r--r--po/flu-danish114
-rw-r--r--po/fr.po10371
-rwxr-xr-xpo/ga.po8761
-rw-r--r--po/gl.po10095
-rw-r--r--po/hu.po10602
-rw-r--r--po/it.po8878
-rw-r--r--po/ja.po9429
-rw-r--r--po/ko.po8055
-rw-r--r--po/lt.po9234
-rw-r--r--po/nl.po11105
-rw-r--r--po/nn.po9970
-rw-r--r--po/no.po11223
-rw-r--r--po/pl.po6711
-rw-r--r--po/pt.po6392
-rw-r--r--po/pt_BR.po7328
-rw-r--r--po/ru.po8974
-rw-r--r--po/sk.po9206
-rw-r--r--po/sl.po10648
-rw-r--r--po/sv.po10390
-rw-r--r--po/tr.po8696
-rw-r--r--po/uk.po8946
-rwxr-xr-xpo/update.sh45
-rw-r--r--stamp.h.in1
-rw-r--r--tests/.cvsignore24
-rw-r--r--tests/Makefile.am73
-rw-r--r--tests/test-movemail.c164
-rw-r--r--tests/test-url.c37
-rw-r--r--tests/test1.c136
-rw-r--r--tests/test10.c127
-rw-r--r--tests/test11.c136
-rw-r--r--tests/test12.c56
-rw-r--r--tests/test13.c123
-rw-r--r--tests/test14.c177
-rw-r--r--tests/test2.c48
-rw-r--r--tests/test3.c29
-rw-r--r--tests/test4.c65
-rw-r--r--tests/test5.c59
-rw-r--r--tests/test6.c49
-rw-r--r--tests/test8.c75
-rw-r--r--tests/test9.c80
-rw-r--r--tests/ui-tests/.cvsignore8
-rw-r--r--tests/ui-tests/Makefile.am39
-rw-r--r--tests/ui-tests/filter.c30
-rw-r--r--tests/ui-tests/filterdescription.xml99
-rw-r--r--tests/ui-tests/mail-atchmt-image.msg67
-rw-r--r--tests/ui-tests/mail-atchmt-postscript.msg8069
-rw-r--r--tests/ui-tests/mail-atchmt-svg.msg418
-rw-r--r--tests/ui-tests/message-browser.c819
-rw-r--r--tests/ui-tests/saveoptions.xml37
-rw-r--r--tests/ui-tests/store_listing.c424
-rw-r--r--tests/ui-tests/store_listing.glade489
-rw-r--r--tests/ui-tests/test-multipart-alt.msg17738
-rw-r--r--tests/ui-tests/test-multipart-mixed.msg377
-rw-r--r--widgets/.cvsignore9
-rw-r--r--widgets/ChangeLog218
-rw-r--r--widgets/LICENSE1
-rw-r--r--widgets/Makefile.am5
-rw-r--r--widgets/meeting-time-sel/.cvsignore8
-rw-r--r--widgets/meeting-time-sel/ChangeLog82
-rw-r--r--widgets/meeting-time-sel/LICENSE1
-rw-r--r--widgets/meeting-time-sel/Makefile.am35
-rw-r--r--widgets/meeting-time-sel/e-meeting-time-sel-item.c993
-rw-r--r--widgets/meeting-time-sel/e-meeting-time-sel-item.h79
-rw-r--r--widgets/meeting-time-sel/e-meeting-time-sel-list-item.c397
-rw-r--r--widgets/meeting-time-sel/e-meeting-time-sel-list-item.h73
-rw-r--r--widgets/meeting-time-sel/e-meeting-time-sel-mail.xpm135
-rw-r--r--widgets/meeting-time-sel/e-meeting-time-sel-no-mail.xpm123
-rw-r--r--widgets/meeting-time-sel/e-meeting-time-sel.c3308
-rw-r--r--widgets/meeting-time-sel/e-meeting-time-sel.h521
-rw-r--r--widgets/meeting-time-sel/test-meeting-time-sel.c252
-rw-r--r--widgets/menus/.cvsignore8
-rw-r--r--widgets/menus/Makefile.am11
-rw-r--r--widgets/menus/gal-define-views-dialog.c329
-rw-r--r--widgets/menus/gal-define-views-dialog.h75
-rw-r--r--widgets/menus/gal-define-views-model.c315
-rw-r--r--widgets/menus/gal-define-views-model.h50
-rw-r--r--widgets/menus/gal-define-views.glade311
-rw-r--r--widgets/menus/gal-view-collection.c578
-rw-r--r--widgets/menus/gal-view-collection.h95
-rw-r--r--widgets/menus/gal-view-etable.c199
-rw-r--r--widgets/menus/gal-view-etable.h44
-rw-r--r--widgets/menus/gal-view-factory-etable.c126
-rw-r--r--widgets/menus/gal-view-factory-etable.h39
-rw-r--r--widgets/menus/gal-view-factory.c112
-rw-r--r--widgets/menus/gal-view-factory.h56
-rw-r--r--widgets/menus/gal-view-menus.c319
-rw-r--r--widgets/menus/gal-view-menus.h36
-rw-r--r--widgets/menus/gal-view-new-dialog.c218
-rw-r--r--widgets/menus/gal-view-new-dialog.glade220
-rw-r--r--widgets/menus/gal-view-new-dialog.h76
-rw-r--r--widgets/menus/gal-view.c210
-rw-r--r--widgets/menus/gal-view.h74
-rw-r--r--widgets/misc/.cvsignore11
-rw-r--r--widgets/misc/ChangeLog470
-rw-r--r--widgets/misc/Makefile.am78
-rw-r--r--widgets/misc/e-calendar-item.c2886
-rw-r--r--widgets/misc/e-calendar-item.h320
-rw-r--r--widgets/misc/e-calendar.c604
-rw-r--r--widgets/misc/e-calendar.h102
-rw-r--r--widgets/misc/e-canvas-utils.c137
-rw-r--r--widgets/misc/e-canvas-utils.h36
-rw-r--r--widgets/misc/e-canvas-vbox.c350
-rw-r--r--widgets/misc/e-canvas-vbox.h88
-rw-r--r--widgets/misc/e-canvas.c760
-rw-r--r--widgets/misc/e-canvas.h129
-rw-r--r--widgets/misc/e-cell-date-edit.c875
-rw-r--r--widgets/misc/e-cell-date-edit.h84
-rw-r--r--widgets/misc/e-clipped-label.c384
-rw-r--r--widgets/misc/e-clipped-label.h90
-rw-r--r--widgets/misc/e-colors.c81
-rw-r--r--widgets/misc/e-colors.h21
-rw-r--r--widgets/misc/e-cursors.c136
-rw-r--r--widgets/misc/e-cursors.h45
-rw-r--r--widgets/misc/e-dateedit.c1733
-rw-r--r--widgets/misc/e-dateedit.h155
-rw-r--r--widgets/misc/e-dropdown-button.c252
-rw-r--r--widgets/misc/e-dropdown-button.h72
-rw-r--r--widgets/misc/e-filter-bar.c472
-rw-r--r--widgets/misc/e-filter-bar.h117
-rw-r--r--widgets/misc/e-gui-utils.c215
-rw-r--r--widgets/misc/e-gui-utils.h29
-rw-r--r--widgets/misc/e-hsv-utils.c166
-rw-r--r--widgets/misc/e-hsv-utils.h31
-rw-r--r--widgets/misc/e-messagebox.c356
-rw-r--r--widgets/misc/e-messagebox.h85
-rw-r--r--widgets/misc/e-popup-menu.c156
-rw-r--r--widgets/misc/e-popup-menu.h37
-rw-r--r--widgets/misc/e-printable.c207
-rw-r--r--widgets/misc/e-printable.h76
-rw-r--r--widgets/misc/e-reflow-model.c288
-rw-r--r--widgets/misc/e-reflow-model.h83
-rw-r--r--widgets/misc/e-reflow.c1263
-rw-r--r--widgets/misc/e-reflow.h131
-rw-r--r--widgets/misc/e-search-bar.c525
-rw-r--r--widgets/misc/e-search-bar.h105
-rw-r--r--widgets/misc/e-selection-model-array.c466
-rw-r--r--widgets/misc/e-selection-model-array.h64
-rw-r--r--widgets/misc/e-selection-model-simple.c101
-rw-r--r--widgets/misc/e-selection-model-simple.h48
-rw-r--r--widgets/misc/e-selection-model.c592
-rw-r--r--widgets/misc/e-selection-model.h132
-rw-r--r--widgets/misc/e-title-bar.c402
-rw-r--r--widgets/misc/e-title-bar.h87
-rw-r--r--widgets/misc/e-unicode.c3005
-rw-r--r--widgets/misc/e-unicode.h86
-rw-r--r--widgets/misc/gal-categories.glade197
-rw-r--r--widgets/misc/pixmaps/.cvsignore2
-rw-r--r--widgets/misc/pixmaps/cursor_cross.xpm38
-rw-r--r--widgets/misc/pixmaps/cursor_hand_closed.xpm38
-rw-r--r--widgets/misc/pixmaps/cursor_hand_open.xpm38
-rw-r--r--widgets/misc/pixmaps/cursor_zoom_in.xpm37
-rw-r--r--widgets/misc/pixmaps/cursor_zoom_out.xpm37
-rw-r--r--widgets/misc/test-calendar.c220
-rw-r--r--widgets/misc/test-color.c47
-rw-r--r--widgets/misc/test-dateedit.c284
-rw-r--r--widgets/misc/test-dropdown-button.c101
-rw-r--r--widgets/misc/test-title-bar.c77
-rw-r--r--widgets/table/.cvsignore13
-rw-r--r--widgets/table/add-col.xpm22
-rw-r--r--widgets/table/arrow-down.xpm21
-rw-r--r--widgets/table/arrow-up.xpm21
-rw-r--r--widgets/table/check-empty.xpm21
-rw-r--r--widgets/table/check-filled.xpm21
-rw-r--r--widgets/table/clip.pngbin192 -> 0 bytes
-rw-r--r--widgets/table/e-cell-checkbox.c53
-rw-r--r--widgets/table/e-cell-checkbox.h28
-rw-r--r--widgets/table/e-cell-combo.c619
-rw-r--r--widgets/table/e-cell-combo.h62
-rw-r--r--widgets/table/e-cell-date.c156
-rw-r--r--widgets/table/e-cell-date.h32
-rw-r--r--widgets/table/e-cell-float.c93
-rw-r--r--widgets/table/e-cell-float.h53
-rw-r--r--widgets/table/e-cell-number.c69
-rw-r--r--widgets/table/e-cell-number.h32
-rw-r--r--widgets/table/e-cell-pixbuf.c242
-rw-r--r--widgets/table/e-cell-pixbuf.h36
-rw-r--r--widgets/table/e-cell-popup.c504
-rw-r--r--widgets/table/e-cell-popup.h93
-rw-r--r--widgets/table/e-cell-size.c91
-rw-r--r--widgets/table/e-cell-size.h32
-rw-r--r--widgets/table/e-cell-spin-button.c663
-rw-r--r--widgets/table/e-cell-spin-button.h97
-rw-r--r--widgets/table/e-cell-string.c9
-rw-r--r--widgets/table/e-cell-text.c2431
-rw-r--r--widgets/table/e-cell-text.h81
-rw-r--r--widgets/table/e-cell-toggle.c342
-rw-r--r--widgets/table/e-cell-toggle.h39
-rw-r--r--widgets/table/e-cell-tree.c721
-rw-r--r--widgets/table/e-cell-tree.h52
-rw-r--r--widgets/table/e-cell.c354
-rw-r--r--widgets/table/e-cell.h113
-rw-r--r--widgets/table/e-table-click-to-add.c544
-rw-r--r--widgets/table/e-table-click-to-add.h55
-rw-r--r--widgets/table/e-table-col-dnd.h14
-rw-r--r--widgets/table/e-table-col.c207
-rw-r--r--widgets/table/e-table-col.h71
-rw-r--r--widgets/table/e-table-column-specification.c119
-rw-r--r--widgets/table/e-table-column-specification.h51
-rw-r--r--widgets/table/e-table-column.c293
-rw-r--r--widgets/table/e-table-config-field.c278
-rw-r--r--widgets/table/e-table-config-field.h47
-rw-r--r--widgets/table/e-table-config.c790
-rw-r--r--widgets/table/e-table-config.glade1870
-rw-r--r--widgets/table/e-table-config.h78
-rw-r--r--widgets/table/e-table-defines.h22
-rw-r--r--widgets/table/e-table-example-1.c286
-rw-r--r--widgets/table/e-table-example-2.c329
-rw-r--r--widgets/table/e-table-extras.c191
-rw-r--r--widgets/table/e-table-extras.h52
-rw-r--r--widgets/table/e-table-field-chooser-dialog.c190
-rw-r--r--widgets/table/e-table-field-chooser-dialog.h75
-rw-r--r--widgets/table/e-table-field-chooser-item.c561
-rw-r--r--widgets/table/e-table-field-chooser-item.h50
-rw-r--r--widgets/table/e-table-field-chooser.c248
-rw-r--r--widgets/table/e-table-field-chooser.glade129
-rw-r--r--widgets/table/e-table-field-chooser.h80
-rw-r--r--widgets/table/e-table-group-container.c1408
-rw-r--r--widgets/table/e-table-group-container.h75
-rw-r--r--widgets/table/e-table-group-leaf.c499
-rw-r--r--widgets/table/e-table-group-leaf.h59
-rw-r--r--widgets/table/e-table-group.c656
-rw-r--r--widgets/table/e-table-group.glade206
-rw-r--r--widgets/table/e-table-group.h151
-rw-r--r--widgets/table/e-table-header-item.c1602
-rw-r--r--widgets/table/e-table-header-item.h83
-rw-r--r--widgets/table/e-table-header-utils.c451
-rw-r--r--widgets/table/e-table-header-utils.h65
-rw-r--r--widgets/table/e-table-header.c834
-rw-r--r--widgets/table/e-table-header.h94
-rw-r--r--widgets/table/e-table-item.c2778
-rw-r--r--widgets/table/e-table-item.h158
-rw-r--r--widgets/table/e-table-memory-callbacks.c254
-rw-r--r--widgets/table/e-table-memory-callbacks.h72
-rw-r--r--widgets/table/e-table-memory.c284
-rw-r--r--widgets/table/e-table-memory.h58
-rw-r--r--widgets/table/e-table-model.c541
-rw-r--r--widgets/table/e-table-model.h148
-rw-r--r--widgets/table/e-table-one.c236
-rw-r--r--widgets/table/e-table-one.h39
-rw-r--r--widgets/table/e-table-scrolled.c211
-rw-r--r--widgets/table/e-table-scrolled.h54
-rw-r--r--widgets/table/e-table-selection-model.c303
-rw-r--r--widgets/table/e-table-selection-model.h55
-rw-r--r--widgets/table/e-table-simple.c269
-rw-r--r--widgets/table/e-table-simple.h75
-rw-r--r--widgets/table/e-table-size-test.c287
-rw-r--r--widgets/table/e-table-sort-info.c452
-rw-r--r--widgets/table/e-table-sort-info.h83
-rw-r--r--widgets/table/e-table-sorted-variable.c210
-rw-r--r--widgets/table/e-table-sorted-variable.h46
-rw-r--r--widgets/table/e-table-sorted.c274
-rw-r--r--widgets/table/e-table-sorted.h46
-rw-r--r--widgets/table/e-table-sorter.c395
-rw-r--r--widgets/table/e-table-sorter.h49
-rw-r--r--widgets/table/e-table-sorting-utils.c328
-rw-r--r--widgets/table/e-table-sorting-utils.h61
-rw-r--r--widgets/table/e-table-specification.c377
-rw-r--r--widgets/table/e-table-specification.h66
-rw-r--r--widgets/table/e-table-state.c243
-rw-r--r--widgets/table/e-table-state.h54
-rw-r--r--widgets/table/e-table-subset-variable.c227
-rw-r--r--widgets/table/e-table-subset-variable.h63
-rw-r--r--widgets/table/e-table-subset.c390
-rw-r--r--widgets/table/e-table-subset.h62
-rw-r--r--widgets/table/e-table-tooltip.h22
-rw-r--r--widgets/table/e-table-tree.h23
-rw-r--r--widgets/table/e-table-utils.c111
-rw-r--r--widgets/table/e-table-utils.h22
-rw-r--r--widgets/table/e-table.c2293
-rw-r--r--widgets/table/e-table.diabin4514 -> 0 bytes
-rw-r--r--widgets/table/e-table.h292
-rw-r--r--widgets/table/e-tree-memory-callbacks.c262
-rw-r--r--widgets/table/e-tree-memory-callbacks.h97
-rw-r--r--widgets/table/e-tree-memory.c644
-rw-r--r--widgets/table/e-tree-memory.h79
-rw-r--r--widgets/table/e-tree-model.c876
-rw-r--r--widgets/table/e-tree-model.h184
-rw-r--r--widgets/table/e-tree-scrolled.c208
-rw-r--r--widgets/table/e-tree-scrolled.h54
-rw-r--r--widgets/table/e-tree-selection-model.c1242
-rw-r--r--widgets/table/e-tree-selection-model.h52
-rw-r--r--widgets/table/e-tree-simple.c200
-rw-r--r--widgets/table/e-tree-simple.h67
-rw-r--r--widgets/table/e-tree-sorted-variable.c458
-rw-r--r--widgets/table/e-tree-sorted-variable.h62
-rw-r--r--widgets/table/e-tree-sorted.c1280
-rw-r--r--widgets/table/e-tree-sorted.h58
-rw-r--r--widgets/table/e-tree-table-adapter.c1035
-rw-r--r--widgets/table/e-tree-table-adapter.h64
-rw-r--r--widgets/table/e-tree.c2334
-rw-r--r--widgets/table/e-tree.h264
-rw-r--r--widgets/table/image1.pngbin1858 -> 0 bytes
-rw-r--r--widgets/table/image2.pngbin1987 -> 0 bytes
-rw-r--r--widgets/table/image3.pngbin2051 -> 0 bytes
-rw-r--r--widgets/table/remove-col.xpm22
-rw-r--r--widgets/table/sample.table11
-rw-r--r--widgets/table/spec.xml21
-rw-r--r--widgets/table/table-test.c45
-rw-r--r--widgets/table/table-test.h4
-rw-r--r--widgets/table/test-check.c206
-rw-r--r--widgets/table/test-cols.c250
-rw-r--r--widgets/table/test-table.c394
-rw-r--r--widgets/table/tree-expanded.xpm23
-rw-r--r--widgets/table/tree-unexpanded.xpm23
-rw-r--r--widgets/text/.cvsignore11
-rw-r--r--widgets/text/e-completion-test.c197
-rw-r--r--widgets/text/e-completion-view.c695
-rw-r--r--widgets/text/e-completion-view.h103
-rw-r--r--widgets/text/e-completion.c478
-rw-r--r--widgets/text/e-completion.h93
-rw-r--r--widgets/text/e-entry-test.c79
-rw-r--r--widgets/text/e-entry.c1194
-rw-r--r--widgets/text/e-entry.h93
-rw-r--r--widgets/text/e-table-text-model.c226
-rw-r--r--widgets/text/e-table-text-model.h60
-rw-r--r--widgets/text/e-text-model-repos.c73
-rw-r--r--widgets/text/e-text-model-repos.h55
-rw-r--r--widgets/text/e-text-model-test.c74
-rw-r--r--widgets/text/e-text-model-uri.c345
-rw-r--r--widgets/text/e-text-model-uri.h42
-rw-r--r--widgets/text/e-text-model.c592
-rw-r--r--widgets/text/e-text-model.h113
-rw-r--r--widgets/text/e-text-test.c155
-rw-r--r--widgets/text/e-text.c3847
-rw-r--r--widgets/text/e-text.h240
902 files changed, 10 insertions, 567664 deletions
diff --git a/.cvsignore b/.cvsignore
deleted file mode 100644
index 5d4ce997d6..0000000000
--- a/.cvsignore
+++ /dev/null
@@ -1,26 +0,0 @@
-ABOUT-NLS
-Makefile
-Makefile.in
-aclocal.m4
-config.cache
-config.guess
-config.h
-config.h.in
-config.log
-config.status
-config.sub
-configure
-install-sh
-intl
-libtool
-ltconfig
-ltmain.sh
-missing
-mkinstalldirs
-stamp-h
-stamp-h.in
-stamp.h
-xlibtool
-xltmain.sh
-evolution.spec
-xml-i18n-*
diff --git a/AUTHORS b/AUTHORS
deleted file mode 100644
index ac9da57868..0000000000
--- a/AUTHORS
+++ /dev/null
@@ -1,78 +0,0 @@
-Evolution was written by:
-
-Addressbook
- Arturo Esponosa <arturo@nuclecu.unam.mx> (Original Gnomecard author)
- Nat Friedman <nat@ximian.com>
- Chris Lahey <clahey@ximian.com>
- Chris Toshok <toshok@ximian.com>
- Jon Trowbridge <trow@ximian.com>
-
-Artwork
- Tuomas Kuosmanen <tigert@ximian.com>
- Jakub Steiner <jimmac@ximian.com>
-
-Calendar
- Seth Alves <seth@ximian.com>
- Eric Busboom <eric@softwarestudio.org> (libical author)
- Arturo Esponosa <arturo@nuclecu.unam.mx> (Gnomecal contributor)
- Damon Chaplin <damon@ximian.com>
- Federico Mena-Quintero <federico@ximian.com>
- Jesse Pavel <jesse@ximian.com>
- JP Rosevear <jpr@ximian.com>
- Russell Steinthal <rms39@columbia.edu> (Gnomecal maintainer)
-
-Documentation
- Kevin Breit <battery841@mypad.com>
- Aaron Weber <aaron@ximian.com>
-
-Mailer
- Bertrand Guiheneuf <bertrand@ximian.com>
- Matt Loper <matt@ximian.com>
- Ettore Perazzoli <ettore@ximian.com>
- Jeff Stedfast <fejj@ximian.com>
- Peter Williams <peterw@ximian.com>
- Dan Winship <danw@ximian.com>
- Michael Zucchi <notzed@ximian.com>
-
-Notes
- Anders Carlsson <andersca@gnu.org>
-
-Pilot
- JP Rosevear <jpr@ximian.com>
-
-Shell
- Miguel de Icaza <miguel@ximian.com>
- Ettore Perazzoli <ettore@ximian.com>
-
-Translations
- Akira TAGOH <tagoh@gnome.gr.jp>
- Andraz Tori <andraz.tori1@guest.arnes.si>
- Andreas Hyden <a.hyden@cyberpoint.se>
- Arjan Scherpenisse <acscherp@wins.uva.nl>
- Clara Tattoni <clara.tattoni@libero.it>
- Fatih Demir <kabalak@gmx.net>
- Gediminas Paulauskas <menesis@delfi.lt>
- GNOME PL Team <gnomepl@pandora.info.bielsko.pl>
- Gustavo Maciel Dias Vieira <gdvieira@zaz.com.br>
- Héctor García Alvarez <hector@scouts-es.org>
- Jesús Bravo Álvarez <jba@pobox.com>
- Keld Simonsen <keld@dkuug.dk>
- Kjartan Maraas <kmaraas@gnome.org>
- Matthias Warkus <mawa@iname.com>
- Spiros Papadimitriou <spapadim+@cs.cmu.edu>
- Sung-Hyun Nam <namsh@kldp.org>
- Szabolcs BAN <shooby@gnome.hu>
- Tiago Antão <tiagoantao@bigfoot.com>
- Valek Filippov <frob@df.ru>
- Vincent Renardias <vincent@redhat.com>
- Yuri Syrota <rasta@renome.rovno.ua>
-
-UI
- Anna Dirks <anna@ximian.com>
-
-Widgets
- Damon Chaplin <damon@ximian.com>
- Miguel de Icaza <miguel@ximian.com>
- Chris Lahey <clahey@ximian.com>
- Federico Mena-Quintero <federico@ximian.com>
- Chris Toshok <toshok@ximian.com>
diff --git a/COPYING b/COPYING
deleted file mode 100644
index d60c31a97a..0000000000
--- a/COPYING
+++ /dev/null
@@ -1,340 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- 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
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644
index f9898a9bc6..0000000000
--- a/ChangeLog
+++ /dev/null
@@ -1,6524 +0,0 @@
-2001-05-22 Jeffrey Stedfast <fejj@ximian.com>
-
- * configure.in: Create MAILER_CFLAGS and MAILER_LIBS so that we
- don't have the same libs multiple times in the libtool
- command-line.
-
-2001-05-20 Duncan Mak <duncan@ximian.com>
-
- * tools/killev (sysname): Add in evolution-vcard-importer as part
- of the list of processes to kill in killev.
-
-2001-05-18 Jon Trowbridge <trow@ximian.com>
-
- * Makefile.am (SUBDIRS): Changed build order. Now addressbook
- gets built before mail.
-
-2001-05-15 Jeffrey Stedfast <fejj@ximian.com>
-
- * configure.in: Create CAMEL_CFLAGS and CAMEL_LIBS so that we
- don't have to link in all sorts of unnecessary garbage from GNOME
- that we don't need.
-
-2001-05-15 Chris Toshok <toshok@ximian.com>
-
- * tools/killev: add the importers.
-
-2001-05-14 Kevin Breit <battery841@mediaone.net>
-
- * doc/C/evolution-C.omf: added file for Scrollkeeper
-
-2001-05-09 Chris Toshok <toshok@ximian.com>
-
- * configure.in: add the nspr includes to the list of includes used
- to test for NSS headers, and don't assume -lpthread in the
- nss/nspr libs - use PTHREAD_LIB.
-
-2001-05-09 Iain Holmes <iain@ximian.com>
-
- * tools/killev: Added rdf-summary killing stuff from R Burton
- (r.burton@180sw.com)
-
-2001-05-09 Jeffrey Stedfast <fejj@ximian.com>
-
- * configure.in: OpenSSL LDFLAGS also needs to include -lcrypt
-
-2001-05-08 Iain Holmes <iain@ximian.com>
-
- * Makefile.am: Add the importers subdir.
-
- * configure.in: Make the importers/Makefile
-
-2001-05-08 Christopher James Lahey <clahey@ximian.com>
-
- * configure.in: Bumped check for gal to 0.7.99.3.
-
-2001-05-04 Jeffrey Stedfast <fejj@ximian.com>
-
- * acconfig.h: undef HAVE_SSL and HAVE_OPENSSL
-
- * configure.in: Check for OpenSSL.
-
-2001-05-05 Gediminas Paulauskas <menesis@delfi.lt>
-
- * configure.in: upped required gtkhtml version to 0.9.3, even that is
- not enough for idl changes.
- * README: you need LIB_XML_1_BRANCH. updated all version requirements
- from configure.in
-
-2001-04-26 Ettore Perazzoli <ettore@ximian.com>
-
- * configure.in: Don't autogen
- `executive-summary/widgets/Makefile', as that subdir doesn't get
- distributed anymore.
-
-2001-04-26 Dan Winship <danw@ximian.com>
-
- * README: We no longer depend on libunicode.
-
- * configure.in: Remove check for libunicode. Remove unicode cflags
- and libs from all CFLAGS and LIBS variables. Add GAL_LIBS for
- things that need to depend on just gal (for gunicode).
-
- * configure.in: Check for gethostbyname_r so e_gethostbyname_r
- will DTRT.
-
-2001-04-24 Dan Winship <danw@ximian.com>
-
- * configure.in: Bump up the gal requirement
-
-2001-04-23 Ettore Perazzoli <ettore@ximian.com>
-
- * configure.in: Don't autogen the the Makefile for the importer
- docs.
-
- * Makefile.am (SUBDIRS): Build the docs last.
-
-2001-04-21 Jeffrey Stedfast <fejj@ximian.com>
-
- * configure.in (have_nspr_libs): We need to link in more than just
- libnspr4, we also need libpthread.
- (have_nss_libs): Don't forget to add nsprlibs to the LDFLAGS.
-
-2001-04-21 Duncan Mak <duncan@ximian.com>
-
- * art/Makefile.am (images_DATA): Added in composer-message.png.
-
-2001-04-16 Ettore Perazzoli <ettore@ximian.com>
-
- * configure.in: `mail/importers/Makefile' must come after
- `mail/Makefile'.
-
-2001-04-16 Ettore Perazzoli <ettore@ximian.com>
-
- * Makefile.am (SUBDIRS): Add `doc'.
-
- * configure.in: Check for Editor.idl using `$GNOME_PATH' as well.
-
-2001-04-12 Christopher James Lahey <clahey@ximian.com>
-
- * configure.in: Updated the required version of gal to 0.6.99.0.
-
-2001-04-11 JP Rosevear <jpr@ximian.com>
-
- * configure.in: Check if gethostbyname_r take five params
-
- * acconfig.h: add GETHOSTBYNAME_R_FIVE_ARGS
-
-2001-04-10 Gediminas Paulauskas <menesis@delfi.lt>
-
- * AUTHORS: /me is a translator.
- * configure.in (EVO_CHECK_LIB): fail with AC_MSG_ERROR, not echo &&
- exit 1.
-
-2001-04-10 Jeffrey Stedfast <fejj@ximian.com>
-
- * configure.in (EVOLUTION_DIR): create the makefile in
- camel/tests/smime
-
-2001-04-08 Chris Toshok <toshok@ximian.com>
-
- * tools/killev (sysname): add some more 16 character versions for
- freebsd.
-
-2001-04-04 Kjartan Maraas <kmaraas@gnome.org>
-
- * AUTHORS: Brag.
-
-2001-04-04 Gediminas Paulauskas <menesis@delfi.lt>
-
- * art/evolution-today-mini.png: converted from exec-16-summary.xpm,
- removed the latter.
- * art/evolution-trash.png, art/evolution-trash-mini.png: images for
- trash folder, one converted from deleted_message.xpm, another from mc.
- * art/Makefile.am: install.
-
-2001-04-02 Jeffrey Stedfast <fejj@ximian.com>
-
- * README (SSL): Remind users that they will currently have to copy
- their cert database from their mozilla directory into ~/evolution.
-
-2001-04-01 Gediminas Paulauskas <menesis@delfi.lt>
-
- * art/Makefile.am: added missing (new) files.
-
-2001-03-30 Dan Winship <danw@ximian.com>
-
- * configure.in (EVOLUTION_MICRO_VERSION): Bump this to 10. (We
- forgot to do this before branching *again*...)
-
-2001-03-28 Dan Winship <danw@ximian.com>
-
- * README: add a bit mentioning that if configure claims you don't
- have something installed when you think you do, that it's probably
- because you installed it in the wrong prefix, or because you need
- a -devel package.
-
- * configure.in: Add a new macro EVO_CHECK_LIB that checks for a
- gnome-config-based library of a given version or later, correctly,
- and if doesn't find it, suggests that you consult the README. Fix
- the various library checks to use this. Meanwhile, remove a bunch
- of old cruft and reorganize a little.
-
- * acconfig.h: Remove cruft
-
-2001-03-28 Jon Trowbridge <trow@ximian.com>
-
- * AUTHORS: In a burst of egomania, added myself.
-
-2001-03-26 Radek Doulik <rodo@ximian.com>
-
- * configure.in: create camel/misc/Makefile
-
-2001-03-22 Dan Winship <danw@ximian.com>
-
- * README: Update xml-i18n-tools version
-
-2001-03-22 Jakub Steiner <jimmac@ximian.com>
-
- * art/new-message.xpm: file->new->mail message
- * art/folder.xpm: file->new->folder
- * art/new_appointment.xpm: file->new->appontment
- * art/print-preview.xpm: file->print preview
- * art/configure_16_calendar.xpm: for the tools menu
-
-2001-03-22 Jakub Steiner <jimmac@ximian.com>
-
- * art/splash.png: move it a bit up so the icons fit better
-
-2001-03-22 Christopher James Lahey <clahey@ximian.com>
-
- * configure.in: Bumped gal requirement to 0.5.99.11.
-
-2001-03-22 Jakub Steiner <jimmac@ximian.com>
-
- * art/configure_16_folder.xpm, configure_16_mail.xpm,
- copy_16_message.xpm, edit.xpm, encrypt.xpm,
- evo-16-address-conduit.png, evo-16-calendar-conduit.png,
- evo-16-todo-conduit.png, exec-16-summary.xpm, import.xpm,
- print.xpm, reply_to_all.xpm, reply.xpm, save.xpm,
- send-receive.xpm, work_offline.xpm, find_contact.xpm,
- send-24-receive.png, evo-48-calendar-conduit.png,
- evo-48-todo-conduit.png, import.png, send-48-receive.png,
- move_message.xpm, all_contacts.xpm, forward.xpm,
- configure_16_addressbook.xpm, Makefile.am,
- evo-48-address-conduit.png: renamed icons to make Miguel's
- speedups possible
- * art/evolution-inbox.png: color coded one
- * art/envelope.png: reverted back to the non-color coded one
- * art/evolution-contacts-plain.png: non-color coded one for
- the "new contact" dialogue
-
-2001-03-21 Dan Winship <danw@ximian.com>
-
- * configure.in: Require bison, not yacc (for vcc.y)
-
-2001-03-20 Miguel de Icaza <miguel@ximian.com>
-
- * art/Makefile.am (images_DATA): Added all the new icons to the
- distribution.
-
-2001-03-20 Jeffrey Stedfast <fejj@ximian.com>
-
- * configure.in: More fixes for NSPR and NSS checks - use fixed it
- to use AC_CHECK_HEADERS instead of AC_CHECK_FILES. Also made it
- not default the nspr lib path to /usr/lib/mozilla which may not be
- in the user's library path when checking for nspr libs.
-
-2001-03-20 Jakub Steiner <jimmac@ximian.com>
-
- * art/48_send-receive.png: send-receive for the s/r dialog
- * art/24_send-receive.png: send-receive to replace the
- fetch-mail-doggie
- * art/16_send-receive.xpm: send-receive for (future) menu
- item
- * art/16_import.xpm: for the file menu
- * art/16_work_offline.xpm: for the file menu
- * AUTHORS: so I can show off
- * art/splash.png: making radek famous ;)
- * art/envelope.png, evolution-calendar.png, evolution-contacts.png,
- evolution-tasks.png, evolution-today.png:
- new concept of color coded apps:
- - mailer: #efb43e
- - calendar: #bab5ab
- - contacts: #9794ab
- - tasks: #6e9e6e
- - exec. summary: #c4757e
-
-2001-03-19 Jeffrey Stedfast <fejj@ximian.com>
-
- * configure.in: Fix ettore's fix ;-)
-
-2001-03-19 Christopher James Lahey <clahey@ximian.com>
-
- * configure.in: Bumped gal requirement to 0.5.99.8.
-
-2001-03-19 Ettore Perazzoli <ettore@ximian.com>
-
- * configure.in: Make sure we never define `NSPR_CFLAGS' or
- `NSS_CFLAGS' as just "-I".
-
-2001-03-19 Jeffrey Stedfast <fejj@ximian.com>
-
- * NEWS: pulled from the 0.9 release.
-
-2001-03-18 Jeffrey Stedfast <fejj@ximian.com>
-
- * configure.in: Updated the checks for NSS and NSPR
-
-2001-03-16 Jeffrey Stedfast <fejj@ximian.com>
-
- * README: Added directions on how to build with SSL support.
-
- * configure.in: Updated the checks for NSS and NSPR
-
-2001-03-16 Jakub Steiner <jimmac@ximian.com>
-
- * art/48_import.png: for the import druid
-
-2001-03-15 Dan Winship <danw@ximian.com>
-
- * configure.in: Bump gal requirement to 0.5.99.7
-
-2001-03-15 Gediminas Paulauskas <menesis@delfi.lt>
-
- * configure.in: create doc/devel/executive-summary/Makefile
- * evolution.png: moved to art/.
- * evolution.desktop: moved to data/.
- * Makefile.am: reflect those moves.
- * art/*.xpm: moved 8 files from calendar/gui here.
- * art/Makefile.am: added moved files.
- distribute *.xpm, install *.png and *view.xpm.
-
-2001-03-12 Jeffrey Stedfast <fejj@ximian.com>
-
- * configure.in: Updated to AC_SUBST the NSPR/NSS flags.
-
-2001-03-14 Dan Winship <danw@ximian.com>
-
- * README: Pull up some of the clarifications from the 0.9 branch
-
-2001-03-13 Chris Toshok <toshok@ximian.com>
-
- * configure.in: add -lresolv to LDAP_LIBS if it's there.
-
-2001-03-13 Iain Holmes <iain@ximian.com>
-
- * configure.in: Added the mail/importers dir.
-
-2001-03-12 Jeffrey Stedfast <fejj@ximian.com>
-
- * README: Rearranged some of the dependencies to try to get them
- into a more correct order (needed for people building all of these
- packages by hand).
-
-2001-03-12 JP Rosevear <jpr@ximian.com>
-
- * README: Update
-
-2001-03-09 Dan Winship <danw@ximian.com>
-
- * configure.in (EVOLUTION_MICRO_VERSION): Hm... probably would be
- clever to be calling this 0.9 rather than 0.8, since it's almost
- 0.10.
-
-2001-03-09 Christopher James Lahey <clahey@ximian.com>
-
- * libversit/vcc.y: Changed int to char when returning a character
- from a stream (since it needs to be able to hold EOF.)
-
-2001-03-07 Jeffrey Stedfast <fejj@ximian.com>
-
- * configure.in: Removed --enable-assbarn-security and replaced it
- with the real options:
- --with-nspr-includes=PREFIX
- --with-nspr-libs=PREFIX
- --with-nss=PREFIX
-
- * acconfig.h: #undef HAVE_NSS
-
-2001-03-07 Ettore Perazzoli <ettore@ximian.com>
-
- * configure.in: Require GAL 0.5.99.6 or later.
-
-2001-03-07 Kjartan Maraas <kmaraas@gnome.org>
-
- * shell/main: /* xgettext:no-c-format */ before the welcome
- message.
- * configure.in: Don't try to generate a Makefile in
- camel/providers/vee as it's empty.
-
-2001-03-05 JP Rosevear <jpr@ximian.com>
-
- * README: Update pilot instructions
-
-2001-03-05 Christopher James Lahey <clahey@ximian.com>
-
- * configure.in: Check for gal 0.5.99.4.
-
-2001-03-04 Dan Winship <danw@ximian.com>
-
- * configure.in: Reorganize a bit to get rid of warnings about
- AC_TRY_COMPILE being used before AC_ISC_POSIX
-
-2001-03-04 Christopher James Lahey <clahey@ximian.com>
-
- * configure.in: Added views/addressbook/Makefile.
-
-2001-03-02 JP Rosevear <jpr@ximian.com>
-
- * art/Makefile.am: install conduit icons
-
-2001-03-02 Chris Toshok <toshok@ximian.com>
-
- * configure.in: add logic to make sure we're building against OpenLDAP >= 2
-
-2001-03-01 Christopher James Lahey <clahey@ximian.com>
-
- * Makefile.am (SUBDIRS), configure.in: Added views stuff.
-
-2001-03-01 Dan Winship <danw@ximian.com>
-
- * configure.in: Redo the Kerberos stuff again to deal with the
- stuff currently on my machine. I think it should deal with both
- the MIT and KTH versions of both krb4 and krb5 now.
-
-2001-03-01 Jakub Steiner <jimmac@ximian.com>
-
- * art/48_evo-address-conduit.png: 48^2 version of the
- addressbook pilot conduit. (for the new control center)
- * art/16_evo-address-conduit.png: 16x16 version for current
- gnomecc
- * art/48_evo-todo-conduit.png: for new gnomecc
- * art/16_evo-todo-conduit.png: for old gnomecc
- * art/48_evo-calendar-conduit.png: for new gnomecc
- * art/16_evo-calendar-conduit.png: for old gnomecc
-
-2001-03-01 Christopher James Lahey <clahey@ximian.com>
-
- * configure.in: Check for gal 0.5.99.2.
-
-2001-02-19 Christopher James Lahey <clahey@ximian.com>
-
- * configure.in: Check for gal 0.5.99.1.
-
-2001-02-15 Christopher James Lahey <clahey@ximian.com>
-
- * configure.in: Check for gal 0.5.99.0.
-
-2001-02-14 Dan Winship <danw@ximian.com>
-
- * various .cvsignore files: Ignore generated .oaf files
-
-2001-02-13 JP Rosevear <jpr@ximian.com>
-
- * art/Makefile.am: install new files
-
- * art/*view.xpm: add files from calendar/gui
-
-2001-02-11 Chris Toshok <toshok@ximian.com>
-
- * configure.in: rework ldap check logic so it'll work to
- --disable-ldap if you've previously configured with --enable-ldap.
-
-2001-02-11 Gediminas Paulauskas <menesis@delfi.lt>
-
- * data/evolution.keys, evolution.desktop: removed, they are generated.
- * data/evolution.keys.in, evolution.desktop.in: new untranslated files.
- * data/evolution.desktop: removed, it duplicates above.
- * Makefile.am, data/Makefile.am: reflect above changes, merge
- translations.
-
-2001-02-09 Jeffrey Stedfast <fejj@ximian.com>
-
- * configure.in: Added hacks to check for Mozilla libs like nspr
- and nss that we will need for SSL and S/MIME.
-
-2001-02-09 Michael Meeks <michael@ximian.com>
-
- * configure.in: depend on bonobo >= 0.36
-
-2001-02-08 Christopher James Lahey <clahey@ximian.com>
-
- * configure.in: Upped the version number of gal required to 0.5.
-
-2001-02-07 JP Rosevear <jpr@ximian.com>
-
- * README: Update to latest requirements
-
-2001-02-05 Jeffrey Stedfast <fejj@ximian.com>
-
- * .cvsignore: Added xml-* files.
-
-2001-02-05 Gustavo Maciel Dias Vieira <gdvieira@zaz.com.br>
-
- * configure.in (ALL_LINGUAS): Added pt_BR to ALL_LINGUAS.
-
-2001-02-04 Christopher James Lahey <clahey@ximian.com>
-
- * configure.in: Require version 0.4.99.8 of gal.
-
-2001-02-03 Federico Mena Quintero <federico@ximian.com>
-
- * configure.in: Make sure we have gnome-libs 1.2.9 or higher.
-
-2001-02-01 Chris Toshok <toshok@ximian.com>
-
- * configure.in: allow --enable/disable-ldap.
-
-2001-02-01 Jason Leach <jasonleach@usa.net>
-
- * tools/killev: Fix this script to make it work with Solaris.
- Patch from Louise Miller.
-
-2001-01-29 Eskil Heyn Olsen <eskil@eazel.com>
-
- reviewed by: JP Rosevear <jpr@ximian.com>
-
- * acconfig.h:
- Added the ENABLE_NNTP define
-
- * configure.in:
- Fixed the NNTP m4 section.
-
-2001-01-29 Stanislav Visnovsky <visnovsky@nenya.ms.mff.cuni.cz>
-
- * configure.in: added sk to ALL_LINGUAS.
- * evolution.desktop: added Slovak messages.
-
-2001-01-27 Jason Leach <jasonleach@usa.net>
-
- * configure.in (AC_OUTPUT): remove
- widgets/shortcut-bar/Makefile from here.
-
-2001-01-25 Christopher James Lahey <clahey@helixcode.com>
-
- * configure.in: Upped the required version of gal in evolution.
-
-2001-01-25 Ettore Perazzoli <ettore@ximian.com>
-
- * art/Makefile.am (images_DATA): Add the missing .xpm files.
-
-2001-01-25 Ettore Perazzoli <ettore@ximian.com>
-
- * art/Makefile.am (images_DATA): Add `24_find_contacts.xpm',
- `16_print_xpm', `16_configure_addressbook'.
-
-2001-01-25 Ettore Perazzoli <ettore@ximian.com>
-
- * art/Makefile.am (images_DATA): Add `24_all_contacts.xpm'.
-
-2001-01-24 Christopher James Lahey <clahey@helixcode.com>
-
- * configure.in: Upped the required version of gal in evolution.
-
-2001-01-22 Tuomas Kuosmanen <tigert@ximian.com>
-
- * art/splash.png: From the "Ideas from the shower" department:
- new splash screen.
-
-2001-01-17 JP Rosevear <jpr@ximian.com>
-
- * README: Update package requirements
-
-2001-01-19 Jason Leach <jasonleach@usa.net>
-
- * configure.in: Changed a leftover $with_x_mailer to
- $with_sub_version. Made it so that if $with_sub_version isn't
- specified, we don't try to output it, and also corrected the way
- SUB_VERSION is defined.
-
-2001-01-18 Federico Mena Quintero <federico@ximian.com>
-
- * Makefile.am: Um, why was the doc directory removed from SUBDIRS?
-
-2001-01-17 Larry Ewing <lewing@helixcode.com>
-
- * configure.in (EVOLUTION_DIR): add the
- doc/devel/importer/Makefile as a target.
-
-2001-01-17 Ettore Perazzoli <ettore@ximian.com>
-
- * acconfig.h: Add `SUB_VERSION', remove `XMAILER_VERSION'.
-
- * configure.in: Removed `--with-x-mailer' option; replaced with a
- more generic `--with-sub-version' option. So, don't define
- `X_MAILER'; instead, define `SUB_VERSION'.
-
-2001-01-16 Chris Toshok <toshok@helixcode.com>
-
- * configure.in: add --enable-nntp switch. default is no.
-
-2001-01-16 Dan Winship <danw@ximian.com>
-
- * configure.in, acconfig.h: Add --with-x-mailer to set the version
- string that appears in the X-Mailer header.
-
-2001-01-15 Christopher James Lahey <clahey@ximian.com>
-
- * configure.in: Changed the required version of gal.
-
-2001-01-15 Tuomas Kuosmanen <tigert@ximian.com>
-
- * art/16_copy_message.xpm, art/16_move_message.xpm: icons for the
- Message->Move/Copy to folder -menu entries.
-
-2001-01-15 Tuomas Kuosmanen <tigert@ximian.com>
-
- * art/evolution-calendar-mini.png: New version of calendar icon that
- looks more like a calendar and not a dictionary or something :)
-
- Btw, the icons get scaled for some reason, even though that is
- not necessary as all of those should be 16x16 pixels. Can anyone look
- into this?
-
-2001-01-15 Dietmar Maurer <dietmar@ximian.com>
-
- * *.c: changed the signature of the property_bag get/set
- functions.
-
-2001-01-14 JP Rosevear <jpr@ximian.com>
-
- * configure.in: remove old config message
-
-2001-01-14 Damon Chaplin <damon@helixcode.com>
-
- * tools/evolution-move-tasks: new script to move tasks from the
- Calendar folder to the new Tasks folder, so people won't lose tasks.
- This can be deleted after a few releases.
-
- * tools/Makefile.am (bin_SCRIPTS): added above.
-
- * configure.in: added default_user/local/Tasks/Makefile to AC_OUTPUT.
-
-2001-01-12 Jeffrey Stedfast <fejj@ximian.com>
-
- * config.h.in: Removed GPG stuff.
-
- * acconfig.h: Take out all refs to PGP and GPG stuff.
-
- * configure.in: Take out the PGP/GPG detection stuff.
-
-2001-01-12 Federico Mena Quintero <federico@ximian.com>
-
- * configure.in: Suggest what to do if gtk-doc is not found.
-
-2001-01-12 Christopher James Lahey <clahey@helixcode.com>
-
- * configure.in: Make evolution depend on the new version of gal.
-
-2001-01-12 Dan Winship <danw@ximian.com>
-
- * MAINTAINERS, AUTHORS, README: Ximianize. Also update the README
- a bit and mention the OAF stable branch.
-
-2001-01-11 Dan Winship <danw@helixcode.com>
-
- * art/priority-high.xpm: Add a white outline around the "!" so it
- still shows up clearly in selected rows when your theme selection
- color is reddish. (Problem pointed out by Federico.)
-
-2001-01-11 Federico Mena Quintero <federico@helixcode.com>
-
- * configure.in: At the end of the configure process, report
- whether the documentation files will be built or not.
-
-2001-01-10 Tuomas Kuosmanen <tigert@helixcode.com>
-
- * art/move-message.png, art/move-message.png: New versions.
-
-2001-01-09 Federico Mena Quintero <federico@helixcode.com>
-
- * configure.in (AC_OUTPUT): Added calendar/gui/alarm-notify/Makefile.
-
-2001-01-05 Tuomas Kuosmanen <tigert@helixcode.com>
-
- * art/evolution-contacts-mini.png: This looks more pretty.
-
-2001-01-03 Christopher James Lahey <clahey@helixcode.com>
-
- * configure.in: Removed camel/providers/mbox/Makefile and
- camel/providers/mh/Makefile.
-
-2001-01-01 Michael Meeks <michael@helixcode.com>
-
- * configure.in: Require bonobo 0.31
-
-2000-12-24 Not Zed <NotZed@HelixCode.com>
-
- * configure.in: If we find threads ok, then always turn on
- ENABLE_THREADS.
-
-2000-12-14 Christopher James Lahey <clahey@helixcode.com>
-
- * NEWS (Addressbook): Added a bit of addressbook NEWS.
-
- * configure.in: Updated the gal check to require gal 0.4.
-
-2000-12-14 Christopher James Lahey <clahey@helixcode.com>
-
- * art/mail-new.xpm, art/mail-read.xpm, art/mail-replied.xpm: Moved
- these images each up one pixel.
-
-2000-12-14 Jeffrey Stedfast <fejj@helixcode.com>
-
- * NEWS: Update.
-
-2000-12-14 JP Rosevear <jpr@helixcode.com>
-
- * NEWS: Update
-
-2000-12-14 Christopher James Lahey <clahey@helixcode.com>
-
- * art/splash.png: New splash from Jimmac.
-
-2000-12-12 Christopher James Lahey <clahey@helixcode.com>
-
- * README: Removed mention of ETable and EText in widgets
- directory.
-
-2000-12-12 Dan Winship <danw@helixcode.com>
-
- * README: Mention the gconf stable branch.
-
-2000-12-07 Christopher James Lahey <clahey@helixcode.com>
-
- * configure.in: Updated the required version of gal.
-
-2000-12-07 Radek Doulik <rodo@helixcode.com>
-
- * configure.in (GTKHTML_LIBS): renamed HTMLEditor.idl to
- Editor.idl
-
-2000-12-06 Kjartan Maraas <kmaraas@gnome.org>
-
- * data/evolution.keys: Added some Norwegian translations.
-
-2000-12-06 Christopher James Lahey <clahey@helixcode.com>
-
- * configure.in: Increased the required version of gal.
-
-2000-12-05 JP Rosevear <jpr@helixcode.com>
-
- * README: minor tweak
-
-2000-12-05 Not Zed <NotZed@HelixCode.com>
-
- * configure.in: Added camel/tests/stream/Makefile.am.
-
-2000-12-01 Dan Winship <danw@helixcode.com>
-
- * README: gnome-vfs depends on gconf, so add that.
-
-2000-11-30 Jeffrey Stedfast <fejj@helixcode.com>
-
- * configure.in: Bumped required gal version to 0.2.99.4 for
- e_str_make_safe.
-
- * README: Added some necessary :'s in the pilot-link cvs stuff.
-
-2000-11-30 Gediminas Paulauskas <menesis@delfi.lt>
-
- * calendar/gui/main.c, executive-summary/component/main.c, mail/main.c,
- shell/main.c, notes/main.c,
- addressbook/gui/component/addressbook-factory.c:
- removed #ifdef ENABLE_NLS/#endif on Miguel's request.
-
-2000-11-29 JP Rosevear <jpr@helixcode.com>
-
- * README: Update pilot info
-
-2000-11-29 Dan Winship <danw@helixcode.com>
-
- * configure.in: Bump required gal version to 0.2.99.3 for iconv
- changes
-
-2000-11-29 Federico Mena Quintero <federico@helixcode.com>
-
- * COPYING-DOCS: Added a copy of the GNU Free Documentation
- License.
-
- * Makefile.am (EXTRA_DIST): Added COPYING-DOCS.
-
-2000-11-28 JP Rosevear <jpr@helixcode.com>
-
- * acconfig.h: Add USE_FLOCK, USE_FCNTL, USE_FLOCK
-
- * configure.in: Auto* magic for various camel locking types
-
-2000-11-28 Not Zed <NotZed@HelixCode.com>
-
- * configure.in (AC_OUTPUT): Added camel/tests/folder/Makefile
-
-2000-11-27 JP Rosevear <jpr@helixcode.com>
-
- * AUTHORS: Update - hopefully I assigned blame correctly :-)
-
- * MAINTAINERS: ditto
-
-2000-11-27 JP Rosevear <jpr@helixcode.com>
-
- * configure.in: Correct the bonobo version error message
-
- * README: Update
-
-2000-11-24 Not Zed <NotZed@HelixCode.com>
-
- * configure.in: Added camel/tests stuff to output macro.
-
-2000-11-14 Not Zed <NotZed@HelixCode.com>
-
- * configure.in: Added local provider dir to output macro.
-
-2000-11-21 Dan Winship <danw@helixcode.com>
-
- * configure.in: Check for libgpgme. (Support not added to mail
- yet.)
-
-2000-11-21 Federico Mena Quintero <federico@helixcode.com>
-
- * configure.in (EVOLUTION_DIR): Removed the
- default_user/local/Tasks/Makefile until the relevant files are on
- CVS.
-
-2000-11-18 Miguel de Icaza <miguel@helixcode.com>
-
- * Added widgets/menus that contains the gal-view-menus.c code from
- Gal that depended on Bonobo.
-
- * configure.in: Update list of Makefiles;
-
- * widgets/Makefile.am: Update.
-
-2000-11-13 Christopher James Lahey <clahey@helixcode.com>
-
- * configure.in: Update the gal reqiurement version.
-
-2000-11-10 Michael Meeks <michael@helixcode.com>
-
- * configure.in: Require Bonobo >= 0.29, due to the XSync
- fix.
-
-2000-11-09 Christopher James Lahey <clahey@helixcode.com>
-
- * configure.in: Require gal 0.2.99.1.
-
-2000-11-06 Jeffrey Stedfast <fejj@helixcode.com>
-
- * configure.in: Require gal 0.2.1.3
-
-2000-11-06 Dan Winship <danw@helixcode.com>
-
- * configure.in (GTKHTML_LIBS): ${prefix} doesn't get defaulted
- until the end of configure, so check if it's "NONE" and use
- ${ac_default_prefix} if so.
-
-2000-11-06 Radek Doulik <rodo@helixcode.com>
-
- * configure.in (GTKHTML_LIBS): also look for HTMLEditor.idl in
- ${prefix}/share/gtkhtml
-
-2000-11-03 Radek Doulik <rodo@helixcode.com>
-
- * configure.in (BONOBO_HTML_GNOME_CFLAGS): raise required version
- number to 0.8
- added check for HTMLEditor.idl file
-
-2000-11-02 Christopher James Lahey <clahey@helixcode.com>
-
- * configure.in: Require gal 0.2.1.2.
-
-2000-11-02 Michael Meeks <michael@helixcode.com>
-
- * configure.in: Require Bonobo-0.27+
-
-2000-11-01 Gediminas Paulauskas <menesis@delfi.lt>
-
- * addressbook/ename/.cvsignore, addressbook/gui/minicard/.cvsignore,
- calendar/doc/.cvsignore, widgets/e-paned/.cvsignore,
- widgets/e-table/.cvsignore, widgets/e-text/.cvsignore: added these
- files.
- * calendar/gui/.cvsignore, composer/.cvsignore,
- executive-summary/.cvsignore, executive-summary/component/.cvsignore,
- po/.cvsignore: added some files to ignore.
-
- * addressbook/gui/component/addressbook-factory.c, mail/main.c,
- shell/main.c, calendar/gui/main.c, notes/main.c,
- executive-summary/component/main.c: call *textdomain() only if
- ENABLE_NLS is defined.
-
-2000-11-01 Gediminas Paulauskas <menesis@delfi.lt>
-
- * configure.in: added lt to ALL_LINGUAS.
-
-2000-10-30 Dan Winship <danw@helixcode.com>
-
- * configure.in: fix up printing of kerberos configuration status
-
-2000-10-27 Christopher James Lahey <clahey@helixcode.com>
-
- * configure.in: Require gal cvs version.
-
-2000-10-27 <jpr@helixcode.com>
-
- * tools/killev: Kill executive summary components
-
-2000-10-25 Iain Holmes <iain@helixcode.com>
-
- * configure.in: Added executive-summary stuff
-
- * Makefile.am: Added the executive-summary subdirs.
-
-2000-10-23 Dan Winship <danw@helixcode.com>
-
- * notes/Makefile.am (INCLUDES): Update EVOLUTION_LOCALEDIR
-
- * configure.in: set localedir here to use in Makefiles.
- (AM_GNOME_GETTEXT doesn't actually always set it to
- $(datadir)/locale).
-
-2000-10-23 Christopher James Lahey <clahey@helixcode.com>
-
- * configure.in: Updated the gal check to check for gal 0.2.1.
-
-2000-10-22 Robert Brady <rwb197@zepler.org>
-
- * configure.in: Added "en_GB" to ALL_LINGUAS.
-
-2000-10-20 Michael Meeks <michael@helixcode.com>
-
- * notes/component-factory.c (control_activate_cb):
-
-2000-10-19 Christopher James Lahey <clahey@helixcode.com>
-
- * NEWS (General, Addressbook): Updated NEWS for addressbook and
- ETable.
-
-2000-10-19 Christopher James Lahey <clahey@helixcode.com>
-
- * configure.in: Updated the gal check to check for gal 0.2.
-
-2000-10-19 Ettore Perazzoli <ettore@helixcode.com>
-
- * configure.in (EVOLUTION_MICRO_VERSION): 6.
-
- * Makefile.am (EXTRA_DIST): Remove `evolution.spec.in'.
- (dist-hook:): Removed.
-
-2000-10-18 Michael Meeks <michael@helixcode.com>
-
- * notes/component-factory.c (control_activate, control_deactivate),
- (create_view): cripple, not worth updating to new UI code.
-
-2000-10-17 Tuomas Kuosmanen <tigert@helixcode.com>
-
- * art/splash.png: This looks happier than the dark piece of rusty
- metal. And the Big Dig in Boston is ugly looking too. Finnish
- road poles are much more cool!
-
-2000-10-15 Peter Williams <peterw@helixcode.com>
-
- * tools/verify-evolution-install.sh (libcamelvee): Check
- for linkage against version 0.5 libcamelvee, not version 0.3.
- This should track with the version of Evolution itself.
- (rm -f $ldddfile): Remove a temporary file.
-
-2000-10-15 Kjartan Maraas <kmaraas@gnome.org>
-
- * configure.in: Added "nn" to ALL_LINGUAS.
-
-2000-10-14 Ettore Perazzoli <ettore@helixcode.com>
-
- * art/Makefile.am (images_DATA): Add `splash.png'.
-
-2000-10-14 Tuomas Kuosmanen <tigert@helixcode.com>
-
- * art/splash.png: umm.. it's a splash screen image.
-
-2000-10-11 JP Rosevear <jpr@helixcode.com>
-
- * configure.in: Fix bonobo error message
-
-2000-10-11 Jesse Pavel <jpavel@helixcode.com>
-
- * data/evolution.keys: Added support for the text/calendar and
- text/x-calendar MIME types.
-
-2000-10-10 Gediminas Paulauskas <menesis@delfi.lt>
-
- * configure.in: Added lt to ALL_LINGUAS.
-
-2000-10-10 Tuomas Kuosmanen <tigert@helixcode.com>
-
- * calendar/gui/recur.xpm: Updated round-we-go-thingy icon..
-
-2000-10-06 Chris Toshok <toshok@helixcode.com>
-
- * art/empty.xpm: make it transparent instead of white.
-
-2000-10-06 Christophe Merlet <christophe@merlet.net>
-
- * *.desktop: Added french strings.
-
-2000-10-05 Dan Winship <danw@helixcode.com>
-
- * tools/Makefile.am (EXTRA_DIST): Add verify-evolution-install.sh
- to EXTRA_DIST
-
-2000-10-05 Jeffrey Stedfast <fejj@helixcode.com>
-
- * configure.in: Check for isblank
-
- * config.h.in:
- * acconfig.h: #undef HAVE_ISBLANK
-
-2000-10-05 Michael Meeks <michael@helixcode.com>
-
- * configure.in: Bump Bonobo requirement to >= 0.20
-
-2000-10-05 Iain Holmes <iain@helixcode.com>
-
- * executive-summary/*: Added the executive summary stuff.
-
- * ui/evolution-executive-summary.xml: New.
-
- * art/add-service.png: New icon.
-
-2000-10-03 Matt Bissiri <bissiri@eecs.umich.edu>
-
- * ui/evolution-addressbook-ldap.xml,
- * ui/evolution-addressbook.xml,
- * ui/evolution-calendar.xml,
- * ui/evolution-contact-editor.xml:
- Fixed typo `_decr' -> `_descr', so some missing tooltips will appear.
- Also fixed some typos in descr values.
-
-2000-09-29 Peter Williams <peterw@helixcode.com>
-
- * ui/Makefile.am (XML_FILES): Install the new evolution-subscribe.xml
- file.
-
-2000-09-29 Chris Toshok <toshok@helixcode.com>
-
- * ui/evolution-mail.xml: add a Settings/Manage Subscriptions...
- menu item.
-
- * ui/evolution-subscribe.xml: add a File/Close menu item.
-
-2000-09-28 Chris Toshok <toshok@helixcode.com>
-
- * ui/evolution-subscribe.xml: add a FolderSearch control, and
- change "Refresh" to "RefreshList".
-
-2000-09-27 Chris Toshok <toshok@helixcode.com>
-
- * ui/evolution-subscribe.xml: add an Refresh List button..
-
-2000-09-27 Chris Toshok <toshok@helixcode.com>
-
- * ui/Makefile.am (XML_FILES): add evolution-subscribe.xml.
-
- * ui/evolution-subscribe.xml: new file.
-
-2000-09-25 Jeffrey Stedfast <fejj@helixcode.com>
-
- * ui/evolution-mail.xml: Moved the (un)select all menu items over
- to the Edit menu - this looks nicer.
-
-2000-09-25 Jeffrey Stedfast <fejj@helixcode.com>
-
- * ui/evolution-mail.xml: Added some new menu items to the Message
- menu like (un)select all and moved "mark as read" to the Message
- menu.
-
-2000-09-25 Jeffrey Stedfast <fejj@helixcode.com>
-
- * configure.in: Moved addressbook/ename to e-util/ename so
- generate e-util/ename/Makefile and don't generate
- addressbook/ename/Makefile
-
-2000-09-23 Tuomas Kuosmanen <tigert@localhost>
-
- * art/attachment.xpm
- * art/add-attachment.png: OOPS. The attachment.xpm was not the one
- I thought, so I accidentally replaced the paperclip icon in the mail
- list column, which wasnt my intention. I hope this works now. The old
- one is back, instead the toolbar icon to add attachment is now called
- "add-attachment.png" as you can see also from above. Bummer. Sorry :)
-
-2000-09-22 Christopher James Lahey <clahey@helixcode.com>
-
- * libversit/vcc.y: Fixed some warnings. Fixed a bug where quoted
- printable fields were reading in semi-colons that should have been
- field separators.
-
-2000-09-22 Christopher James Lahey <clahey@helixcode.com>
-
- * ui/Makefile.am: Added evolution-addressbook-ldap.xml.
-
- * ui/evolution-addressbook-ldap.xml: New file. (A Variation on
- evolution-addressbook.xml)
-
- * ui/evolution-addressbook.xml: Added View All and Stop buttons.
-
-2000-09-21 Federico Mena Quintero <federico@helixcode.com>
-
- * ui/evolution-calendar.xml: Removed the AboutCalendar stuff.
-
- * ui/evolution.xml: Fix mis-spelling of "calendar".
-
-2000-09-21 Michael Meeks <michael@helixcode.com>
-
- * notes/component-factory.c (control_activate): upd.
-
-2000-09-20 Christopher James Lahey <clahey@helixcode.com>
-
- * ui/.cvsignore: Added a cvsignore file here.
-
-2000-09-20 Christopher James Lahey <clahey@helixcode.com>
-
- * ui/Makefile.am (XML_FILES): Added evolution-contact-editor.xml.
-
- * ui/evolution-contact-editor.xml: New file for the UI for the
- evolution contact editor.
-
-2000-09-20 Tuomas Kuosmanen <tigert@gimp.org>
-
- * art/attachment.xpm
- * art/send.png: new icons for "compose mail" dialog...
-
-2000-09-19 Dan Winship <danw@helixcode.com>
-
- * configure.in: alter the krb4 check a bit to deal with configure
- cache suckage. (If you do AC_CHECK_LIB with the same library and
- function name but different LDFLAGS, it will still use the result
- of the previous check. So use a different function the second
- time.)
-
-2000-09-18 Dan Winship <danw@helixcode.com>
-
- * README: add gal as a dependency
-
-2000-09-18 Jeffrey Stedfast <fejj@helixcode.com>
-
- * art/score-*.xpm: stupid looking icons for use with displaying
- scores in the message-list view. These need a makeover BADLY ;-)
-
-2000-09-18 Christopher James Lahey <clahey@helixcode.com>
-
- * configure.in: Added check for gnome-app-lib. Removed
- directories that have been moved to gal.
-
-2000-09-15 Dan Winship <danw@helixcode.com>
-
- * configure.in, evolution.spec.in: remove spec file. We haven't
- been keeping it up to date, and it's only good for RH anyway, and
- if people really want a spec file they can get it from our SRPMs.
-
-2000-09-07 Michael Meeks <michael@helixcode.com>
-
- * configure.in: Require Bonobo 0.19
-
-2000-09-13 Christopher James Lahey <clahey@helixcode.com>
-
- * configure.in: Added widgets/e-reflow/Makefile. Replaced
- addressbook/gui/minicard/Makefile with
- addressbook/gui/widgets/Makefile.
-
-2000-09-13 Tuomas Kuosmanen <tigert@localhost>
-
- * art/pin.png: added icon for the folder tree "pin down" button
-
-2000-09-12 JP Rosevear <jpr@helixcode.com>
-
- * NEWS (Calendar): Pilot stuff
-
-2000-09-12 Ettore Perazzoli <ettore@helixcode.com>
-
- * configure.in: The notes subdir isn't actually used, so remove
- it.
-
-2000-09-12 Ettore Perazzoli <ettore@helixcode.com>
-
- * configure.in: 0.5.
-
-2000-09-12 Jeffrey Stedfast <fejj@helixcode.com>
-
- * NEWS (Mailer): Added Sent/Outbox feature descriptions
-
-2000-09-12 Dan Winship <danw@helixcode.com>
-
- * NEWS (Mailer): add most (but not all) 0.5 Mailer features
-
- * configure.in: s/Sentbox/Sent/
-
-2000-09-12 Ettore Perazzoli <ettore@helixcode.com>
-
- * art/Makefile.am (buttonsdir): Install the new button icons into
- `$(datadir)/images/evolution/buttons'.
-
-2000-09-11 Tuomas Kuosmanen <tigert@helixcode.com>
-
- * art/fetch-mail.png
- * art/compose-message.png
- * art/reply.png
- * art/reply-to-all.png
- * art/forward.png
- * art/move-message.png
- * art/copy-message.png: New icons for the main window toolbar
-
-2000-09-11 Christopher James Lahey <clahey@helixcode.com>
-
- * NEWS: Added 0.5 changes for ETable and Addressbook.
-
-2000-09-07 Dan Winship <danw@helixcode.com>
-
- * README: Add a mention of the verify-evolution-install.sh script
- in tools/.
-
-2000-09-03 Jeffrey Stedfast <fejj@helixcode.com>
-
- Reversed my last change as it broke configure, how do I get it so
- that we can do folders with spaces in the name!?
-
-2000-09-03 Jeffrey Stedfast <fejj@helixcode.com>
-
- * configure.in: Renamed default_user/local/Sentbox to
- default_user/local/Sent\ Mail as Ettore and Danw are picky about
- folder names
-
-2000-09-02 Christopher James Lahey <clahey@helixcode.com>
-
- * configure.in: Added calendar/conduits/Makefile,
- calendar/conduits/calendar/Makefile and
- calendar/conduits/todo/Makefile to the list of makefiles to
- output.
-
-2000-09-01 Jeffrey Stedfast <fejj@helixcode.com>
-
- * configure.in: Add default_user/local/Sentbox/Makefile to the
- list of makefiles to output
-
-2000-08-31 Peter Williams <peterw@helixcode.com>
-
- * configure.in (kerberos): Check and see if krb_sendauth needs
- prototyping. (#define NEED_KRB_SENDAUTH_PROTO). Also check
- for a libkrb that doesn't need -ldes.
-
- * acconfig.h: #undef it
-
-2000-08-30 Lauris Kaplinski <lauris@helixcode.com>
-
- * configure.in: AC_DEFINE(USING_GNOME_PRINT_0_20)
-
- * acconfig.h: #undef that
-
-2000-08-30 Peter Williams <peterw@helixcode.com>
-
- * configure.in: Robustify the kerberos checks.
-
-2000-08-29 Dan Winship <danw@helixcode.com>
-
- * configure.in, acconfig.h: decruft
-
-2000-08-28 Jesus Bravo Alvarez <jba@pobox.com>
-
- * configure.in: Added Portuguese (pt) to ALL_LINGUAS
-
-2000-08-26 JP Rosevear <jpr@helixcode.com>
-
- * configure.in: Require oafized bonobo
-
-2000-08-24 Federico Mena Quintero <federico@helixcode.com>
-
- * configure.in: Ahem. If you add dependencies on libraries, make
- sure things still build. Fixed the libunicode foo.
-
-2000-08-22 Lauris Kaplinski <lauris@helixcode.com>
-
- * widgets/e-text/e-text.c (_get_position_from_xy): Don't crash on illegal string
-
-2000-08-22 Lauris Kaplinski <lauris@helixcode.com>
-
- * widgets/e-text/e-text.c (e_text_event): Use e_utf8_from_gtk_event_key
- to translate GDK_KEY_PRESS to insertable UTF-8 string
-
-2000-08-22 Christopher James Lahey <clahey@helixcode.com>
-
- * announcement-0.4.1.txt: Updated dependency list.
-
-2000-08-22 Lauris Kaplinski <lauris@helixcode.com>
-
- * widgets/e-text/e-text.c: Use byte based UTF-8 syntax
-
-2000-08-22 Christopher James Lahey <clahey@helixcode.com>
-
- * announcement-0.4.1.txt: Announcement message
-
-2000-08-19 Mathieu Lacage <mathieu@gnu.org>
-
- Fixes compile for non-standard prefixes. Mainly in idl
- compilation where -I`gnome-config --datadir`/idl is replaced
- by `gnome-config --cflags idl` (ugly but it works at least)
- and add some random _CFLAGS here and there and _LIBS for linking.
- * addressbook/gui/component/select-names/Makefile.am
- * composer/Makefile.am
- * e-util/Makefile.am
- * filter/Makefile.am
- * mail/Makefile.am
- * shell/Makefile.am
- * widgets/e-text/Makefile.am
-
-
-2000-08-21 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-paned/e-hpaned.c, widgets/e-paned/e-paned.c,
- widgets/e-paned/e-paned.h, widgets/e-paned/e-vpaned.c: Added code
- to make handle position persist across resizes.
-
-2000-08-20 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-text.c: Fixed a warning.
-
-2000-08-20 arik devens <arik@helixcode.com>
-
- * widgets/e-text/Makefile.am (INCLUDES): added UNICODE_CFLAGS
- support so that compiling in an alternate prefix works.
-
-2000-08-19 Lauris Kaplinski <lauris@helixcode.com>
-
- * widgets/e-text/e-text.h: Commented out Suckfont, added EFont
- * widgets/e-text/e-text.c: Ported to UTF-8
-
-2000-08-18 Peter Williams <peterw@helixcode.com>
-
- * configure.in (gnome-vfs): Check for new enough gnome-vfs
- (needs gnome_vfs_mime_get_default_action_without_fallback)
-
-2000-08-14 Federico Mena Quintero <federico@helixcode.com>
-
- * configure.in (AC_OUTPUT): Generate
- doc/devel/calendar/cal-util/Makefile.
-
-2000-08-14 Peter Williams <peterw@helixcode.com>
-
- * configure.in: Check for db1/db.h too, which is what
- RH 7.0 uses for the old db headers. Patch from Kenny Graunke
- <kwg@teleport.com>
-
-2000-08-13 Chris Toshok <toshok@helixcode.com>
-
- * configure.in: offer --enable-pilot-conduits to add pilot
- conduits if the user wants them.
-
-2000-08-13 Dan Winship <danw@helixcode.com>
-
- * configure.in: Fix the name of the binary to look for for PGP5
-
-2000-08-12 Michael Meeks <michael@helixcode.com>
-
- * configure.in: Check for Bonobo 0.17
-
-2000-08-12 Christopher James Lahey <clahey@helixcode.com>
-
- * configure.in: Added addressbook/gui/search/Makefile.
-
-2000-08-12 Dan Winship <danw@helixcode.com>
-
- * configure.in, README: Depend on gnome-vfs 0.3
-
-2000-08-10 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/.cvsignore, widgets/e-text/Makefile.am,
- widgets/e-text/e-entry-test.c: Added a test for the EEntry widget.
-
-2000-08-09 Dan Winship <danw@helixcode.com>
-
- * data/evolution.keys: New file containing MIME keys for
- Evolution. Currently just the addressbook minicard display.
-
- * data/Makefile.am (mime_DATA): add evolution.keys
-
-2000-08-09 Peter Williams <peterw@helixcode.com>
-
- * configure.in (EVOLUTION_DIR): Remove the warning about camel-async.
-
-2000-08-08 Peter Williams <peterw@helixcode.com>
-
- * Makefile.am (SUBDIRS): Reenable the calendar. Oops.
-
-2000-08-05 Dan Winship <danw@helixcode.com>
-
- * tools/verify-evolution-install.sh: Look for oafinfo files in
- oaf's prefix, not gnome-libs's. Allow binaries to be installed
- anywhere in $PATH.
-
- * configure.in, README: Update the README and the text of the
- Bonobo configure check to match reality. Remove the 0.15 vs
- 0.15-and-a-half check since we require post-0.16 now.
-
-2000-08-03 JP Rosevear <jpr@helixcode.com>
-
- * configure.in: Remove gconf check
-
-2000-08-03 Alastair McKinstry <mckinstry@computer.org>
-
- * configure.in (ALL_LINGUAS): Add Irish translation
-
-2000-08-02 Michael Meeks <michael@helixcode.com>
-
- * configure.in: update for BonoboX
-
-2000-08-02 Dan Winship <danw@helixcode.com>
-
- * configure.in (AC_OUTPUT): Add camel/providers/nntp
-
-2000-08-02 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-text.c: Made clicking choose the right
- character even if show_borders is on.
-
-2000-08-01 Dan Winship <danw@helixcode.com>
-
- * configure.in, acconfig.h: Add checks for GPG, PGP 5 and PGP 2.
- Only record the first one found.
-
-2000-08-01 Damon Chaplin <damon@helixcode.com>
-
- * configure.in (AC_OUTPUT): removed calendar/doc/*
-
-2000-08-01 Not Zed <NotZed@HelixCode.com>
-
- * configure.in: Added mh provider.
-
-2000-07-27 Dan Winship <danw@helixcode.com>
-
- * configure.in: Check for gconf_client_get_default (gconf 0.5 vs
- newer)
-
-2000-07-26 Ettore Perazzoli <ettore@helixcode.com>
-
- * configure.in: Bump version number to 0.3.
-
-2000-07-26 Peter Williams <peterw@helixcode.com>
-
- * widgets/e-table/e-table-scrolled.c (right_click_proxy): Default
- the return value to 0.
-
-2000-07-25 Dan Winship <danw@helixcode.com>
-
- * configure.in: some unrelated changes: check for mkdtemp,
- gnome_vfs_mime_get_default_action_without_fallback, and a
- setuid/setgid movemail binary.
-
- * acconfig.h: add MOVEMAIL_PATH
-
-2000-07-25 Christopher James Lahey <clahey@helixcode.com>
-
- * configure.in: Added addressbook/conduit/Makefile.
-
-2000-07-21 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-text.c: Made focus in not change your selection
- position.
-
-2000-07-21 Szabolcs BAN <shooby@gnome.hu>
-
- * calendar/gui/event-editor.c: Typo fix
-
-2000-07-20 Peter Williams <peterw@helixcode.com>
-
- * configure.in (THREADS_CFLAGS): Make threads mandatory
- again.
-
-2000-07-19 Fatih Demir <kabalak@gmx.net>
-
- * evolution.desktop & data/evolution.desktop: Added
- the Turkish desktop entries.
-
-2000-07-17 Federico Mena Quintero <federico@helixcode.com>
-
- * configure.in (EVOLUTION_DIR): Typo fix.
-
- * configure.in (AC_OUTPUT): Added the doc/devel Makefiles.
- (EVOLUTION_DIR): Substitute EVOLUTION_DIR for the top_srcdir.
- Added checks for gtk-doc.
-
-2000-07-13 Peter Williams <peterw@curious-george.helixcode.com>
-
- * configure.in (end): Bigass warnings for camel-async branch
- (remove them later).
-
-2000-07-12 Federico Mena Quintero <federico@helixcode.com>
-
- * configure.in: Make gnome-print-0.20 mandatory. We will bail out
- with CVS HEAD versions to avoid breakage.
-
-2000-07-10 Ettore Perazzoli <ettore@helixcode.com>
-
- * Version 0.2.
-
- * configure.in: Reverse the GtkHTML check.
-
-2000-07-10 Jeffrey Stedfast <fejj@helixcode.com>
-
- * configure.in: Updated to check for required GtkHTML and
- gnome-print
-
-2000-07-10 Ettore Perazzoli <ettore@helixcode.com>
-
- * configure.in: Remove the conduits stuff for now. They depend on
- CVS gnome-pilot, and this is not good for the release.
-
-2000-07-10 Dan Winship <danw@helixcode.com>
-
- * README: updates
-
-2000-07-10 Seth Alves <alves@hungry.com>
-
- * configure.in: added makefiles for calendar conduits
-
-2000-07-10 Dan Winship <danw@helixcode.com>
-
- * configure.in: Add a check for Bonobo 0.15 vs Bonobo post-0.15
-
-2000-07-09 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-text.c: Don't draw quite as large a "flat_box".
- If draw_borders is TRUE, cause the cursor to change even if not
- editing.
-
-2000-07-09 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-entry.c: Removed some border padding and set
- the "draw_borders" argument of the contained GtkText.
-
- * widgets/e-text/e-text.c, widget/e-text/e-text.h: Added a
- "draw_borders" argument which, if set, makes the EText look more
- like a GtkEntry.
-
-2000-07-09 Tuomas Kuosmanen <tigert@gimp.org>
-
- * art/evolution-contacts.png: updated so it has better contrast
- against the background.
-
- * art/evolution-contacts-small.png: Fits the style of the new contacts
- icon, this is a sigle card.
-
-2000-07-09 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-text-model.c (e_text_model_real_get_text):
- Return "" instead of NULL.
-
-2000-07-07 Christopher James Lahey <clahey@helixcode.com>
-
- * art/Makefile.am: Fixed EXTRA_DIST for make distcheck.
-
-2000-07-07 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-entry.c: Set "anchor" and "fill_clip_rectangle"
- arguments.
-
- * widgets/e-text/e-text.c, widgets/e-text/e-text.h: Added
- "fill_clip_rectangle" argument which describes whether to accept
- clicks throughout the clipping rectangle.
-
-2000-07-07 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-entry.c: Fixed some typos.
-
-2000-07-07 Tuomas Kuosmanen <tigert@gimp.org>
-
- * art/evolution-contacts.png: Changed icon (hi ettore)
- The old handshake one was a little too firm handshake..
- this is a rolodex icon..
-
-2000-07-07 Dan Winship <danw@helixcode.com>
-
- * configure.in: make pthreads not required again, since they
- aren't, and remove widgets/e-toolbar/Makefile from AC_OUTPUT since
- that dir doesn't exist any more.
-
-2000-07-06 Chris Toshok <toshok@helixcode.com>
-
- * configure.in (AC_OUTPUT): remove the default_user Directories
- dir.
-
-2000-07-06 Christopher James Lahey <clahey@helixcode.com>
-
- * Makefile.am, libical/configure.in: Fixed some make distcheck
- errors.
-
-2000-07-05 Ettore Perazzoli <ettore@helixcode.com>
-
- * configure.in (GNOME_VFS_CFLAGS): Define.
- (GNOME_VFS_LIBS): Define.
-
-2000-07-03 Ettore Perazzoli <ettore@helixcode.com>
-
- * configure.in: Add
- `addressbook/gui/component/select-names/Makefile' to the
- `AC_OUTPUT()' list.
-
-2000-07-03 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/Makefile.am: Added e-entry.c and e-entry.h.
-
- * widgets/e-text/e-entry.c, widgets/e-text/e-entry.h: New files to
- be a widget containing a text item.
-
- * widgets/e-text/e-text.c: Fixed some spacing.
-
-2000-06-29 Ettore Perazzoli <ettore@helixcode.com>
-
- * notes/component-factory.c (owner_set_cb): Get an
- EvolutionShellClient instead of an Evolution_Shell to match the
- changes in libeshell.
-
-2000-06-29 Peter Williams <peterw@helixcode.com>
-
- * configure.in: Re-enable GNOME_PILOT_CHECK.
- Change AC_MSG_CHECKING([For...]) to [for...]. It's the little
- things that matter.
-
-2000-06-28 Ettore Perazzoli <ettore@helixcode.com>
-
- * configure.in: `AM_PATH_GCONF'.
-
-2000-06-27 Peter Williams <peterw@curious-george.helixcode.com>
-
- * configure.in (ctime_r): Check for whether ctime_r takes
- two (Linux) or three (Solaris) arguments.
- (AC_OUTPUT): Don't create notes/Makefile twice.
-
- * acconfig.h: Add CTIME_R_THREE_ARGS to the list.
-
-2000-06-26 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-text.c: Calculate height including if
- clip_height is set to -1.
-
-2000-06-26 Peter Williams <peterw@curious-george.helixcode.com>
-
- * configure.in (THREADS_CFLAGS): Add option --enable-broken-threads
- to turn on the threading stuff in evolution-mail. Defaults to no.
-
- * acconfig.h: Add USE_BROKEN_THREADS to the list.
-
-2000-06-25 Ettore Perazzoli <ettore@helixcode.com>
-
- * configure.in: Use `glib-config' instead of `$GLIB_CONFIG' as the
- latter is not actually defined anywhere.
-
-2000-06-25 Peter Williams <peterw@helixcode.com>
-
- * configure.in (pthread stuff): Make threads required due
- to threaded evolution-mail. Subst in the THREADS_LIBS et
- al.
-
- * tests/Makefile.am: Remove USE_THREADS conditional as we
- always use threads now.
-
-2000-06-21 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-text.c: Fixed some vertical scroll bugs.
-
-2000-06-21 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-text.c: Fix a bug with intial vertical scroll.
-
-2000-06-21 Christopher James Lahey <clahey@helixcode.com>
-
- * notes/e-note.c, widgets/meeting-time-sel/e-meeting-time-sel.c,
- widgets/shortcut-bar/e-icon-bar.c: Removed the usage of "x" and
- "y" arguments to EText.
-
- * widgets/e-text/e-text.c, widgets/e-text/e-text.h: Removed the
- "x" and "y" arguments to EText. Added vertical scrolling.
-
-2000-06-20 Damon Chaplin <damon@helixcode.com>
-
- * widgets/meeting-time-sel/e-meeting-time-sel-item.c:
- * widgets/meeting-time-sel/e-meeting-time-sel.c: fixed a few warnings.
-
-2000-06-17 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-text.c: Made EText use the font from the
- canvas's style if one isn't set.
-
-2000-06-17 Damon Chaplin <damon@helixcode.com>
-
- * widgets/meeting-time-sel/*: updated to use EText items rather than
- GtkEntry widgets and added support for adding new rows.
-
-2000-06-15 Dan Winship <danw@helixcode.com>
-
- * README: bye bye goad
-
-2000-06-14 Damon Chaplin <damon@helixcode.com>
-
- * README (http): added command to co ORBit.
-
-2000-06-13 Jeffrey Stedfast <fejj@helixcode.com>
-
- * configure.in: Added IMAP into the build
-
-2000-06-13 Ettore Perazzoli <ettore@helixcode.com>
-
- * notes/Makefile.am (SHELL_OBJS): Removed.
- (evolution_notes_LDADD): Link with
- `$(top_builddir)/shell/libeshell.a'.
-
-2000-06-12 Ettore Perazzoli <ettore@helixcode.com>
-
- * widgets/Makefile.am (SUBDIRS): build `misc' before everything
- else.
-
- * Makefile.am: Install `evolution.png' and `evolution.desktop'
- where appropriate.
-
- * evolution.png: New. For now, it's just a copy of
- `art/evolution-inbox.png'.
-
- * evolution.desktop: New.
-
-2000-06-10 Zbigniew Chyla <chyla@buy.pl>
-
- * configure.in: Added pl (Polish) to ALL_LINGUAS
-
-2000-06-09 Ettore Perazzoli <ettore@helixcode.com>
-
- * configure.in: Added new directory `shell/glade'.
-
-2000-06-07 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-paned/e-hpaned.c, widgets/e-paned/e-paned.c,
- widgets/e-paned/e-paned.h, widgets/e-paned/e-vpaned.c: Added a
- "quantum" argument for making the panes move in jumps.
-
-2000-06-07 Anders Carlsson <andersca@gnu.org>
-
- * configure.in: Create notes/Makefile
-
- * notes/*: Add preliminary yellow sticky notes.
-
-2000-06-05 Mathieu Lacage <mathieu@gnome.org>
-
- * addressbook/contact-editor/Makefile.am: make it
- compile: add proper bonobo linking params.
- * addressbook/gui/minicard/Makefile.am: idem.
- * wombat/Makefile.am: add BONOBO_VFS_GNOME_CFLAGS.
- cleanup some useless includes and libs.
-
-2000-06-02 Ettore Perazzoli <ettore@helixcode.com>
-
- * configure.in (ALL_LINGUAS): Add `it' and `de'.
-
-2000-06-02 Christopher James Lahey <clahey@helixcode.com>
-
- * configure.in: Released Evolution 0.1.
-
-2000-06-02 Christopher James Lahey <clahey@helixcode.com>
-
- * tests/test-movemail.c: Reverted removal of e_setup_base_dir.
-
-2000-06-02 Jesus Bravo Alvarez <jba@pobox.com>
-
- * configure.in: Added pt (Portuguese) to ALL_LINGUAS
-
-2000-06-02 Dan Winship <danw@helixcode.com>
-
- * README: Update dependencies. Rewrite the GOAD vs OAF thing some
- more to reflect OAF's new ascendency. Make the fact that you don't
- need pilot stuff clearer. Add some new directories to the
- directory layout section.
-
-2000-06-02 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/misc/e-clipped-label.c: Free the finish data.
-
-2000-06-01 Christopher James Lahey <clahey@helixcode.com>
-
- * tests/test-movemail.c (main): Don't call e_setup_base_dir.
-
-2000-06-01 Dan Winship <danw@helixcode.com>
-
- * configure.in (AC_OUTPUT): add doc, doc/C
-
- * Makefile.am (SUBDIRS): add doc
-
-2000-05-31 Federico Mena Quintero <federico@helixcode.com>
-
- * widgets/misc/e-scroll-frame.[ch]: Imported GtkScrollFrame from
- EOG and renamed it to EScrollFrame.
-
- * widgets/misc/Makefile.am (libemiscwidgets_a_SOURCES): Added
- e-scroll-frame.[ch].
-
-2000-05-30 Ettore Perazzoli <ettore@helixcode.com>
-
- * widgets/e-paned/e-vpaned.c (e_vpaned_handle_shown): Show the
- handle even if the requisition for the child is zero.
- * widgets/e-paned/e-hpaned.c (e_hpaned_handle_shown): Likewise.
-
-2000-05-26 Héctor García Alvarez <hector@scouts-es.org>
-
- * configure.in: Added Spanish language
-
-2000-05-25 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-paned/e-hpaned.c, widgets/e-paned/e-vpaned.c: Fixed a
- bug where we were resizing a non-existent window.
-
-2000-05-25 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-paned/e-hpaned.c, widgets/e-paned/e-paned.c,
- widgets/e-paned/e-paned.h, widgets/e-paned/e-vpaned.c: Made
- the handlebar disappear if either side is empty, hidden, or
- requests 0 size.
-
-2000-05-24 Christopher James Lahey <clahey@helixcode.com>
-
- * configure.in: Added widgets/e-paned/Makefile.
-
- * tests/ui-tests/message-browser.c: Switched from GtkPaned to
- EPaned.
-
- * widgets/Makefile.am: Added e-paned directory.
-
- * widgets/e-paned/, widgets/e-paned/.cvsignore,
- widgets/e-paned/Makefile.am, widgets/e-paned/e-hpaned.c,
- widgets/e-paned/e-hpaned.h, widgets/e-paned/e-paned.c,
- widgets/e-paned/e-paned.h, widgets/e-paned/e-vpaned.c,
- widgets/e-paned/e-vpaned.h: New widget based completely on
- GtkPaned from 1.4. This will be more advanced soon.
-
-2000-05-22 Jeff Stedfast <fejj@helixcode.com>
-
- * configure.in: Readded camel/providers/smtp
-
-2000-05-22 Szabolcs BAN <shooby@gnome.hu>
-
- * configure.in: Added Hungarian language
-
-2000-05-18 Dan Winship <danw@helixcode.com>
-
- * configure.in (AC_OUTPUT): add camel/providers/vee
-
-2000-05-16 Ettore Perazzoli <ettore@helixcode.com>
-
- * art/Makefile.am: Install the mini icons.
-
-2000-05-16 Chris Toshok <toshok@helixcode.com>
-
- * configure.in: add --with-purify-options support, and default it
- to what we at helix need
-
-Tue May 16 06:11:40 2000 Tuomas Kuosmanen <tigert@gimp.org>
-
- * art/evolution-calendar-mini.png art/evolution-inbox-mini.png
- art/evolution-tasks-mini.png art/evolution-contacts-mini.png
- art/evolution-notes-mini.png: new mini-icons for the tree view
- of folders and stuff.
-
-2000-05-14 Federico Mena Quintero <federico@helixcode.com>
-
- * configure.in (AC_OUTPUT): Added calendar/gui/dialogs/Makefile.am.
-
-2000-05-10 Matt Loper <matt@helixcode.com>
-
- * README: Added version and availability of required libunicode
- library.
-
-2000-05-10 Dan Winship <danw@helixcode.com>
-
- * configure.in: Update versions needed for gnome-print, bonobo,
- and gtkhtml.
-
-2000-05-10 Christopher James Lahey <clahey@helixcode.com>
-
- * HACKING: We need a HACKING file.
-
-2000-05-10 Christopher James Lahey <clahey@helixcode.com>
-
- * Makefile.am: Removed dist-hook section.
-
- * configure.in: Set the version number. Added a check for gnome
- window icons. Removed a bunch of unused Makefiles.
-
- * tools/Makefile.am: Created a proper EXTRA_DIST section.
-
- * widgets/e-text/Makefile.am: Added
- e-text-event-processor-types.h.
-
-2000-05-09 Christopher James Lahey <clahey@helixcode.com>
-
- * art/Makefile.am: Added briefcase.png to get installed.
-
-2000-05-09 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-text.c: Remove the tooltip callback when
- destroyed.
-
-2000-05-09 Matt Loper <matt@helixcode.com>
-
- * calendar/pcs/cal-backend.c (cal_backend_add_cal): Return nothing
- for a 'void' function.
-
-2000-05-08 Christopher James Lahey <clahey@helixcode.com>
-
- * widget/e-text/e-text.c, widgets/e-text/e-text.h: Added an
- activate signal.
-
-2000-05-06 Chris Toshok <toshok@helixcode.com>
-
- * configure.in: Added new Directories section for the default_user.
-
-2000-05-06 Ettore Perazzoli <ettore@helixcode.com>
-
- * configure.in: Updated for the new `default_user' directory
- setup.
-
-2000-05-06 Chris Toshok <toshok@helixcode.com>
-
- * configure.in: check for purify.
-
-2000-05-06 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-text.c, widgets/e-text/e-text.h: Added a
- "changed" signal that gets sent whenever the text changes.
-
-2000-05-05 Ettore Perazzoli <ettore@helixcode.com>
-
- * Added `--enable-purify' flag.
-
-2000-05-05 Chris Toshok <toshok@helixcode.com>
-
- * shell/Makefile.am: add support for building purified evolution.
-
- * shell/.cvsignore: ignore evolution.pure
-
-2000-05-05 Chris Toshok <toshok@helixcode.com>
-
- * addressbook/backend/ebook/.cvsignore,
- addressbook/contact-editor/.cvsignore,
- addressbook/gui/component/.cvsignore,
- addressbook/gui/minicard/.cvsignore,
- addressbook/printing/.cvsignore,
- calendar/cal-client/.cvsignore,
- calendar/gui/.cvsignore,
- calendar/pcs/.cvsignore,
- filter/.cvsignore,
- mail/.cvsignore,
- shell/.cvsignore,
- tests/.cvsignore,
- widgets/e-table/.cvsignore,
- widgets/e-text/.cvsignore,
- widgets/meeting-time-sel/.cvsignore,
- widgets/shortcut-bar/.cvsignore,
- wombat/.cvsignore: ignore the .pure directory
-
-2000-05-04 Dan Winship <danw@helixcode.com>
-
- * configure.in: Oops. The Kerberos check was succeeding when it
- shouldn't have (and thus breaking the pop3 build for "normal"
- people). Fix.
-
-2000-05-03 Michael Meeks <michael@helixcode.com>
-
- * configure.in (xmlversion): Fix to remove older 'libxml' prefix.
-
-2000-05-02 Ettore Perazzoli <ettore@helixcode.com>
-
- * configure.in: Do not output `doc/Makefile' because there is
- nothing to generate it from.
-
-2000-05-02 Dan Winship <danw@helixcode.com>
-
- * configure.in, acconfig.h: add some minimal Kerberos checking.
- This isn't intended to be generically useful at this point, it's
- just there to give me a second POP auth mechanism to play with.
-
- Also remove a bit of cruft, and reorganize configure.in a bit.
-
-2000-05-02 NotZed <NotZed@HelixCode.com>
-
- * tests/test13.c: And here too.
-
- * tests/test2.c (main): REmoved gmime-utils.h
-
- * tests/Makefile.am (LDADD): Add libeutil to default link line.
- (test_movemail_LDADD): Fixed order for libutil linking.
-
-2000-05-02 Matt Loper <matt@helixcode.com>
-
- * tests/Makefile.am: set G_LOG_DOMAIN.
- * tests/ui-tests/Makefile.am: same.
- * widgets/e-text/Makefile.am: same.
- * widgets/meeting-time-sel/Makefile.am: same.
-
-2000-05-01 NotZed <NotZed@HelixCode.com>
-
- * tests/test11.c (main): *sigh* moved back to sync api.
-
-2000-05-01 NotZed <NotZed@HelixCode.com>
-
- * tests/test11.c (search_cb): Try deleting messages ...
- (main): Fix for provider api changes.
-
-2000-05-01 Anders Carlsson <andersca@gnu.org>
-
- * configure.in: Check if bonobo uses oaf, so you don't
- need to specify --enable-oaf.
-
-2000-04-27 Ettore Perazzoli <ettore@helixcode.com>
-
- * acconfig.h: New configured #define `USING_OAF'.
-
- * configure.in: Added `--enable-oaf' option and corresponding
- `OAF_LIBS' and `OAF_FLAGS' variables. Code friendly provided by
- Maciej Stachowiak <mjs@eazel.com>.
-
-2000-04-27 NotZed <NotZed@HelixCode.com>
-
- * tests/test10.c: Fix for removal of camelmimebodypart, and changes
- to recipient stuff.
-
- * tests/test1.c: Fix for removal of camelmimebodypart, and changes
- to recipient stuff.
-
-2000-04-27 Christopher James Lahey <clahey@helixcode.com>
-
- * configure.in: Added addressbook/ename/Makefile.
-
-2000-04-27 Matt Loper <matt@helixcode.com>
-
- * configure.in: added tools/Makefile.
-
- * Makefile.am: Added tools.
-
- * tools/: New directory for tools relating to evolution.
-
- * tools/killev: New script for killing all evolution-related
- stuff.
-
- * tools/Makefile.am: New file.
-
- * tools/.cvsignore: New file.
-
-2000-04-26 NotZed <NotZed@HelixCode.com>
-
- * tests/test13.c (main): And here too.
-
- * tests/test2.c (main): Same here.
-
- * tests/test1.c (main): Change for removed simpledatawrapper.
-
-2000-04-26 Matt Loper <matt@helixcode.com>
-
- * tests/.cvsignore: Added test13.
-
- * default_user/.cvsignore: New file.
-
- * widgets/e-text/e-text.c (e_text_destroy): Kill text->timer and
- text->timeout on destroy.
-
-2000-04-26 Dan Winship <danw@helixcode.com>
-
- * tests: Update for the camel changes.
-
- * Makefile.am (SUBDIRS): Remove tests. They aren't terribly
- useful/interesting any more for the most part, and they frequently
- don't compile.
-
-2000-04-24 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-text.c: Made the tooltip show up in the correct
- place and configuration when using the "max_lines", "anchor"
- (untested), or "justification" arguments.
-
-From a patch by Iain Holmes <ih@csd.abdn.ac.uk>
-
- * widgets/e-text/e-text-event-processor-emacs-like.c,
- widget/e-text/e-text-event-processor-types.h,
- widgets/e-text/e-text.c, widgets/e-text/e-text.h: Changed C-w and
- C-y to control the X clipboard. Added double and triple click
- events.
-
-2000-04-24 Fatih Demir <kabalak@gmx.net>
-
- * configure.in : Added tr to ALL_LINGUAS .
-
-2000-04-24 NotZed <NotZed@HelixCode.com>
-
- * tests/test13.c (main): Fixed for method movements.
-
- * tests/test3.c (main): Removed from build, data-wrapper-repository removed.
-
-2000-04-23 NotZed <NotZed@HelixCode.com>
-
- * tests/test2.c (main): Changed to use construct_from_stream.
-
- * tests/test1.c (main): Chagned to use construct_from_stream.
-
-2000-04-24 Matt Loper <matt@helixcode.com>
-
- * default_user/Makefile.am: new file.
-
- * default_user/Main_Shortcuts.xml: New file; is used to fill the
- shortcut bar's "main shortcuts" pane.
-
- * default_user/Other_Shortcuts.xml: New file, used to fill the
- shortcut bar's "other shortcuts" pane.
-
- * default_user/Inbox.mbox: New file. This is the first message a
- new user will see when they fire up Evolution. Needs work.
-
- * Makefile.am: added default_user directory.
- * configure.in: same.
-
-2000-04-23 NotZed <NotZed@HelixCode.com>
-
- * tests/test10.c: Removed some unecessary includes. From
- Ali Abdin <aliabdin@aucegypt.edu>
- (create_sample_mime_message): Changed for date api change.
-
- * tests/Makefile.am (noinst_PROGRAMS): Put test10 back.
-
-2000-04-22 NotZed <NotZed@HelixCode.com>
-
- * tests/test1.c (main): Changed for date api change.
-
-2000-04-20 NotZed <NotZed@HelixCode.com>
-
- * tests/test11.c: Fixed some headers.
-
- * tests/Makefile.am (noinst_PROGRAMS): Removed test9.
- (noinst_PROGRAMS): Removed test12, temporarirly (nntp not being
- built).
- Removed test10.
-
-2000-04-20 Yukihiro Nakai <nakai@gnome.gr.jp>
-
- * configure.in: Add Japanese to ALL_LINGUAS
-
-2000-04-19 Dan Winship <danw@helixcode.com>
-
- * README: More detail on exactly what versions of what libraries
- are needed.
-
-2000-04-18 Dan Winship <danw@helixcode.com>
-
- * tests/*: remove camel-log references
-
-2000-04-17 Dan Winship <danw@helixcode.com>
-
- * configure.in (xmlpatch): Require gnome-xml 1.8.7 (or later,
- but not 2.0). xmlParseMemory's behavior in 1.8.7 is incompatible
- with its behavior in 1.8.6 and earlier.
-
- * tests/test-url.c: New program to test CamelURL
-
-2000-04-16 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/backend/ebook/e-card.c,
- addressbook/backend/ebook/e-card.h,
- addressbook/backend/ebook/test-card.c,
- addressbook/backend/pas/pas-backend-file.c,
- addressbook/contact-editor/e-contact-editor.c: Added
- orginizational unit, nickname, and internet free-busy fields.
-
- * addressbook/contact-editor/contact-editor.glade: Renamed some
- incorrectly named fields.
-
-2000-04-16 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/backend/ebook/e-card.c,
- addressbook/backend/ebook/e-card.h,
- addressbook/backend/ebook/test-card.c,
- addressbook/backend/pas/pas-backend-file.c,
- addressbook/gui/minicard/e-minicard.c: Added orginization and role
- fields.
-
- * addressbook/contact-editor/contact-editor.glade,
- addressbook/contact-editor/e-contact-editor-strings.h: Renamed
- some incorrectly named fields.
-
- * addressbook/contact-editor/e-contact-editor.c: Added
- orginization and role fields as well as hooking up the birth date
- field.
-
- * addressbook/gui/minicard/e-minicard-view.c: Added a missing include.
-
-2000-04-15 Matt Loper <matt@helixcode.com>
-
- * addressbook/gui/component/addressbook.c
- (search_entry_activated): New function. Gets called when the quick
- search entry is called on to perform a search.
- (make_quick_search_widget): New function; returns a "quick search"
- widget.
- (control_activate): During the construction of the toolbar, a
- "quick search" widget is included.
-
-2000-04-14 Chris Toshok <toshok@helixcode.com>
-
- * tests/.cvsignore: add test12
-
- * tests/test12.c (main): add test for nntp stuff.
-
- * tests/Makefile.am (noinst_PROGRAMS): same.
-
-
-2000-04-14 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/backend/ebook/e-card.c,
- addressbook/backend/ebook/e-card.h,
- addressbook/backend/pas/pas-backend-file.c,
- addressbook/backend/pas/pas-backend-ldap.c,
- addressbook/contact-editor/e-contact-editor.c: Added a note field.
-
-2000-04-15 Ettore Perazzoli <ettore@helixcode.com>
-
- * addressbook/backend/ebook/e-card-cursor.h: #include
- "addressbook/backend/ebook" to make sure we pick up the right
- addressbook.h. Butt ugly, but at least it makes it possible for
- me to build Evolution.
-
- * addressbook/gui/minicard/Makefile.am (INCLUDES): Use
- `$(builddir)' so that we pick up the IDL-generated includes
- correctly.
- * addressbook/backend/pas/Makefile.am: Likewise. Also use
- `$(srcdir)'.
-
- * addressbook/backend/ebook/Makefile.am: Use `$(srcdir)' so that
- it works with builddir != srcdir.
- * addressbook/backend/pas/Makefile.am: Likewise.
-
-2000-04-14 Chris Toshok <toshok@helixcode.com>
-
- * addressbook/backend/pas/pas-backend-ldap.c
- (pas_backend_ldap_ensure_connected): don't ldap_simple_bind_s if
- the ldap_open failed, and fix warnings.
- (pas_backend_ldap_build_all_cards_list): don't do search if the
- ensure_connected failed, and fix warnings.
- (pas_backend_ldap_search): same.
- (poll_ldap): fix warnings.
- (pas_backend_ldap_process_get_book_view): same.
- (pas_backend_ldap_get_vcard): same.
- (pas_backend_ldap_load_uri): same.
-
- * configure.in: quiet configure in the case where it can't find
- ldap libs.
-
-2000-04-13 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/contact-editor/e-contact-editor.c (extract_info):
- Check for 0 length fields when building the outgoing ECard.
-
-2000-04-13 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/backend/pas/pas-book-view.c: Give correct warnings.
-
- * addressbook/backend/ebook/e-card.c (e_card_set_arg): g_strdup
- url and title.
-
-2000-04-13 Chris Toshok <toshok@helixcode.com>
-
- * addressbook/contact-editor/e-contact-editor.c
- (fill_in_info): reflect the title attribute in the contact editor.
- (extract_info): same.
-
- * addressbook/backend/pas/pas-backend-ldap.c: add the title attribute.
-
- * addressbook/gui/minicard/test-reflow.c: add a title.
-
- * addressbook/gui/minicard/e-minicard.c (remodel): add support for
- the title attribute.
-
- * addressbook/backend/ebook/e-card.c (e_card_get_vcard): save out
- the title to the vcard.
-
- * addressbook/backend/ebook/test-card.c: add title field foo to
- the test.
-
- * addressbook/backend/ebook/e-card.c: reflect the title field.
-
- * addressbook/backend/ebook/e-card.h: un-#if 0 the title field.
-
- * addressbook/backend/pas/pas-backend-ldap.c (poll_ldap): new
- function that polls ldap for more search responses.
- (pas_backend_ldap_search): use the async search interface and
- register an idle call to poll for the responses.
- (view_destroy): make sure to g_source_remove the idle id.
-
-2000-04-12 Chris Toshok <toshok@helixcode.com>
-
- * addressbook/backend/pas/pas-backend-file.c (entry_compare):
- rework this function to use a table mapping search field names to
- vcard properties and extra information (such as whether or not the
- property is a list.)
-
- * addressbook/backend/pas/pas-backend-ldap.c
- (construct_email_list): new function, to build the ECardList for
- email addresses.
- (construct_phone_list): new function, to build the ECardList for
- phone numbers.
- (pas_backend_ldap_search): use a table mapping ldap attributes to
- ecard properties, and use the special list construction functions
- if the property calls for it. general cleanup. added a comment
- about not calling ber_free if there was a decoding error.
-
-
-2000-04-12 Matt Loper <matt@helixcode.com>
-
- * art/Makefile.am: Add tigert's contact-dlg-related images.
-
- * addressbook/contact-editor/e-contact-editor.c (_add_images): Add
- tigert's images.
-
- * addressbook/contact-editor/Makefile.am: add EVOLUTION_IMAGES.
-
-2000-04-12 Tuomas Kuosmanen <tigert@gimp.org>
-
- * art/house.png, art/malehead.png, art/cellphone.png,
- art/briefcase.png, art/envelope.png, art/globe.png:
- New icons for the contact manager.. more to follow once I get
- around to do more artist work..
-
-2000-04-12 Chris Toshok <toshok@helixcode.com>
-
- * addressbook/backend/pas/pas-backend-ldap.c
- (pas_backend_ldap_build_all_cards_list): delay the setting of the
- ldap variable until we've ensured we were connected. Also, set
- the search limit to LDAP_MAX_SEARCH_RESPONSES (we'll eventually
- want a user setting here i assume.)
- (pas_backend_ldap_search): same here, and also send back lists of
- CARDS_PER_VIEW_NOTIFICATION length in each
- pas_book_view_notify_add call. also, don't call ber_free if there
- was a decoding error, since the ldap library frees it for us.
-
-2000-04-11 Miguel de Icaza <miguel@gnu.org>
-
- * configure.in (have_pthread): Properly use AC_ARG_WITH
-
-2000-04-11 Chris Toshok <toshok@helixcode.com>
-
- * wombat/Makefile.am (wombat_LDADD): add LDAP_LIBS here.
-
- * configure.in: check for -lldap and -llber and if both are
- present include ldap support in the pas/wombat.
-
- * addressbook/backend/pas/Makefile.am (libpas_la_SOURCES): include
- pas-backend.ldap.c if ENABLE_LDAP.
-
- * addressbook/backend/pas/pas-backend-ldap.c: get searching
- working (converting between the sexp and ldap stuff.)
-
- * wombat/wombat.c (setup_pas): register the ldap pas backend if
- HAVE_LDAP is defined.
-
-2000-04-11 Christopher James Lahey <clahey@helixcode.com>
-
- * configure.in: Changed AC_DEFUN to AC_DEFINE.
-
- * acconfig.h: Added HAVE_TIMEZONE and HAVE_TM_GMTOFF.
-
-2000-04-11 Chris Toshok <toshok@helixcode.com>
-
- * configure.in: check for timezone as a variable (as it is in
- linux, but not in freebsd or netbsd.)
-
-2000-04-11 Larry Ewing <lewing@helixcode.com>
-
- * widgets/e-table/e-cell-toggle.c (etog_draw): update for new
- gdk-pixbuf. Added a disabled chuck of code to do alpha blending
- on pixmaps.
-
-2000-04-11 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-text.c: Moved some logic a bit. Minor changes.
-
-00-04-11 Iain Holmes <ih@csd.abdn.ac.uk>
-
- * widgets/e-text/e-text.c
- (e_text_set_args): Recalculate bounds when width or clip_width changes.
- (tooltip_event): Forward clicks on the tooltip onto the text item.
- (_do_tooltip): Correct the origin co-ordinates to the items co-ords.
- (e_text_point): Return 0 when the mouse is on the item.
- (_do_tooltip): Make the tooltip obey the parent items
- line_wrap and max_lines.
-
-00-04-11 Chris Toshok <toshok@helixcode.com>
-
- * addressbook/backend/pas/pas-backend-file.c
- (get_e_card_prop): new function, taking code from func_contains to
- get string properties.
- (entry_compare): new function generic, taking strstr-like function
- as a parameter.
- (func_contains): rewrite function to use entry_compare.
- (is_helper): new helper function to map strcmp to a strstr-like
- function.
- (func_is): new function, implementing "is" for searches.
- (endswith_helper): new function.
- (func_endswith) new function, implementing "endswith" for
- searches.
- (beginswith_helper): new function.
- (func_beginswith): new function, implementing "beginswith" for
- searches.
- (compare_email): new function for searching all email addresses of
- a contact.
- (compare_phone): new function for searching all phone numbers of a
- contact.
- (compare_address): new function for searching all addresses of a
- contact (unimplemented as yet).
- (entry_compare): add support for searching the list items "email",
- "phone" and "address".
- (vcard_matches_search): free the esexp_result.
- (entry_compare): we want comparison functions to take 2 args.
-
-2000-04-11 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/gui/minicard/e-minicard-view.c: This was setting
- E_REFLOW(view)->items to NULL too soon. Fixed now.
-
-2000-04-11 Chris Toshok <toshok@helixcode.com>
-
- * addressbook/backend/pas/pas-backend-file.c
- (pas_backend_file_search): remove spew.
- (pas_backend_file_process_create_card): move the sync to the
- earliest possible point after the db operation.
- (pas_backend_file_process_remove_card): same.
- (pas_backend_file_process_modify_card): same, and call
- pas_book_respond_modify, not pas_book_respond_remove, here.
-
- * addressbook/gui/component/addressbook.c (card_deleted_cb): new
- function.
- (delete_contact_cb): wire up button to call
- e_minicard_view_remove_selection.
-
- * addressbook/gui/minicard/e-minicard-view.c
- (e_minicard_view_remove_selection): fix warning, and stick "view"
- in the name.
-
-2000-04-10 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/backend/ebook/e-book-view.c,
- addressbook/backend/ebook/e-book.c: Changed some incorrect
- gtk_object_refs and gtk_object_unrefs into bonobo_object_refs and
- bonobo_object_unrefs.
-
- * addressbook/backend/pas/pas-card-cursor.c: Changed a
- gtk_object_destroy to a gtk_object_unref.
-
- * addressbook/gui/minicard/e-minicard-view.c,
- addressbook/gui/minicard/e-minicard-view.h: Set a list pointer to
- NULL after freeing its contents. Added
- e_minicard_view_remove_selection function.
-
- * addressbook/gui/minicard/e-reflow.c: Set a list pointer to NULL
- after freeing its contents.
-
-2000-04-11 Chris Toshok <toshok@helixcode.com>
-
- * addressbook/gui/component/addressbook.c (find_contact_cb):
- implement braindead dialog to input the query string for the view.
-
- also, change all callbacks to get the EMinicardView instead of the
- EBook.
-
- * addressbook/gui/minicard/e-minicard-view.c
- (e_minicard_view_get_arg): add missing break.
-
-2000-04-10 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/gui/minicard/e-minicard-view.c,
- addressbook/gui/minicard/e-minicard-view.h: Added a "query"
- argument to the e-minicard-view. Documented all the arguments to
- the e-minicard-view.
-
-2000-04-10 Chris Toshok <toshok@helixcode.com>
-
- * addressbook/gui/minicard/e-minicard-view.c (get_view): change
- the empty search string ("") to the valid (contains "full_name" "").
-
- * wombat/Makefile.am (wombat_LDADD): reorder so libeutil.la comes
- after libpas (since it uses the sexp stuff now.)
-
- * addressbook/backend/pas/Makefile.am (INCLUDES): add
- -I$(top_srcdir)/addressbook/backend/ebook
-
- * addressbook/backend/pas/pas-backend-file.c
- (view_destroy): free the search context and unref the sexp.
- (string_to_dbt): save the zero byte of strings, so we don't have
- to g_strndup everywhere.
- (func_contains): new function, implementing the (contains) search
- function.
- (vcard_matches_search): generic predicate to tell whether or not a
- vcard entry matches the current book view.
- (pas_backend_file_search): rip some of this code out of
- get_book_view (the portion building the list of cards) and make it
- use the e-sexp stuff.
- (pas_backend_file_process_create_card): use vcard_matches_search
- to only notify if the card will appear in the view.
- (pas_backend_file_process_remove_card): use vcard_matches_search
- to only notify if the card will be removed from the view.
- (pas_backend_file_process_modify_card): use vcard_matches_search
- to notify if the modified card was added, removed, or changed in
- the view.
-
-2000-04-10 Miguel de Icaza <miguel@gnu.org>
-
- * configure.in (GNOME_PRINT_CFLAGS): Update to support
- --disable-threads correctly.
-
-2000-04-10 Chris Toshok <toshok@helixcode.com>
-
- * addressbook/backend/pas/pas-backend-file.c
- (pas_backend_file_process_get_book_view): use view != NULL instead
- of checking db_error when we call pas_book_respond_get_book_view)
-
-2000-04-10 Dan Winship <danw@helixcode.com>
-
- * configure.in: check for mkstemp
-
-2000-04-10 Damon Chaplin <damon@helixcode.com>
-
- * configure.in (AC_OUTPUT): removed libical stuff since it has its
- own configure.in.
-
-2000-04-10 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/backend/ebook/e-book-view.c: Fixed a bug where I was
- sending the wrong information to some callbacks.
-
- * addressbook/backend/ebook/e-card.c,
- addressbook/backend/ebook/e-card.h: Added an e_card_duplicate
- function. Made ids get stored in vcards. Made sure to delete the
- url if it exists.
-
- * addressbook/backend/pas/Makefile.am: Made pas include
- addressbook/backend/ebook/ in the search path.
-
- * addressbook/backend/pas/pas-backend-file.c: Fixed some bugs and
- made the create card function store the generated id in the card
- being saved.
-
- * addressbook/backend/pas/pas-book-view.c: Fixed a double free
- bug.
-
- * addressbook/contact-editor/e-contact-editor.c: Fixed some bugs.
- Made the contact editor actually return a valid card when
- gtk_object_get(editor, "card", ...) is called.
-
- * addressbook/contact-editor/e-contact-editor.h: Fixed a copy and
- paste error.
-
- * addressbook/gui/component/addressbook.c: Made this get the card
- properly.
-
- * addressbook/gui/minicard/Makefile.am: Made this include
- contact-editor directory in the search path and link against
- libecontacteditor so that double clicking can open a dialog.
-
- * addressbook/gui/minicard/e-minicard.c: Fixed some small bugs.
- Made double clicking open a contact editor dialog if this minicard
- is contained in a minicard view. (It needs the minicard view to
- get the EBook to save to.
-
- * wombat/Makefile.am: Link wombat against libebook, since
- pas-backend-file now uses ECard.
-
-2000-04-09 Matt Loper <matt@helixcode.com>
-
- * addressbook/gui/component/addressbook.c (control_activate): Make
- "New Contact" menuitem add a card with new_contact_cb().
-
- * addressbook/Makefile.am: Compile contact-editor, _then_ gui,
- since the gui now depends on the contact editor (shouldn't the
- contact-editor directory be moved into 'gui'?).
-
- * addressbook/gui/component/addressbook.c (card_added_cb): New
- function. Gets called when a card is successfully added via the
- contact-editor.
- (new_contact_cb): New function. Gets called when a user clicks the
- "new contact" button on the toolbar, and creates a contact-editor
- to edit a new contact entry.
- (control_activate): Call gnome_app_fill_toolbar_with_data()
- instead of gnome_app_fill_toolbar(), so that our toolbar can find
- the right book to add a new card to.
- (addressbook_factory): On an "activate" signal, send the book up
- to control_activate_cb.
-
- * addressbook/gui/component/addressbook-factory.c (init_bonobo):
- Call glade_gnome_init(), so that our contact-editor (which
- requires glade) doesn't barf.
-
- * addressbook/gui/component/Makefile.am: added the contact-editor
- to our libraries and include files.
-
- * addressbook/contact-editor/e-contact-editor.c
- (e_contact_editor_new): Set "card" gtk property to the passed-in
- card property.
-
- * addressbook/gui/component/addressbook.c (addressbook_factory):
- Added gtk_widget_push/pop_colormap/visual, which I assume is
- necessary for canvas use.
-
-2000-04-08 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/contact-editor/Makefile.am,
- addressbook/contact-editor/e-contact-editor.c,
- addressbook/contact-editor/e-contact-editor.h,
- addressbook/contact-editor/test-editor.c: Made the contact editor
- load from an ECard.
-
- * addressbook/backend/ebook/e-card.c,
- addressbook/backend/ebook/e-card.h,
- addressbook/gui/minicard/e-minicard.c: Added support for the URL
- field.
-
-2000-04-08 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/backend/ebook/e-card.c (e_card_get_vcard): Fixed a
- small typo.
-
-2000-04-08 Dan Winship <danw@helixcode.com>
-
- * art/Makefile.am: pixmap_DATA should have been images_DATA (after
- pixmapdir was renamed to imagesdir)
-
-2000-04-08 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/gui/minicard/.cvsignore,
- addressbook/gui/minicard/Makefile.am,
- addressbook/gui/minicard/e-minicard-view.c,
- addressbook/gui/minicard/e-minicard-view.h,
- addressbook/gui/minicard/e-minicard.c,
- addressbook/gui/minicard/e-minicard.h,
- addressbook/gui/minicard/e-reflow-sorted.c,
- addressbook/gui/minicard/e-reflow-sorted.h,
- addressbook/gui/minicard/e-reflow.c,
- addressbook/gui/minicard/e-reflow.h,
- addressbook/gui/minicard/test-minicard-view.c,
- addressbook/gui/minicard/test-reflow.c,
- widgets/e-minicard/.cvsignore, widgets/e-minicard/Makefile.am,
- widgets/e-minicard/e-minicard-label.c,
- widgets/e-minicard/e-minicard-label.h,
- widgets/e-minicard/e-minicard-view.c,
- widgets/e-minicard/e-minicard-view.h,
- widgets/e-minicard/e-minicard.c, widgets/e-minicard/e-minicard.h,
- widgets/e-minicard/e-reflow-sorted.c,
- widgets/e-minicard/e-reflow-sorted.h,
- widgets/e-minicard/e-reflow.c, widgets/e-minicard/e-reflow.h,
- widgets/e-minicard/test-minicard-label.c,
- widgets/e-minicard/test-minicard-view.c,
- widgets/e-minicard/test-minicard.c,
- widgets/e-minicard/test-reflow.c: CVS move mistake. Fixed the
- correct changes in the correct places.
-
-2000-04-08 Christopher James Lahey <clahey@helixcode.com>
-
- * art/Makefile.am: pixmap_DATA isn't defined so don't use it as a variable.
-
- * addressbook/gui/component/,
- addressbook/gui/component/.cvsignore, addressbook/gui/Makefile.am,
- addressbook/gui/component/addressbook-factory.c,
- addressbook/gui/component/addressbook.c,
- addressbook/gui/component/addressbook.gnorba,
- addressbook/gui/component/addressbook.h: New directory to proivde
- the component for contact management. Simply uses an e-minicard-view.
-
- * addressbook/gui/minicard/e-minicard-view.c,
- addressbook/gui/minicard/e-minicard-view.h: New subclass of
- e-reflow-sorted that takes an EBook and uses it to compute the
- card data to display.
-
- * addressbook/gui/minicard/e-minicard.c,
- addressbook/gui/minicard/e-minicard.h: This now backends to a
- ECard instead of a ETableModel.
-
- * addressbook/gui/minicard/e-reflow.c,
- addressbook/gui/minicard/e-reflow.h: This now has a virtualized
- add method.
-
- * addressbook/gui/minicard/e-reflow-sorted.c,
- addressbook/gui/minicard/e-reflow-sorted.h: New subclass of
- e-reflow that allows the data to be sorted on the fly.
-
- * addressbook/gui/minicard/test-minicard-view.c: New test to test
- the new minicard view.
-
- * addressbook/gui/minicard/test-reflow.c: Uses the new ECard
- backend of the e-minicard.
-
- * addressbook/gui/minicard/.cvsignore,
- addressbook/gui/minicard/Makefile.am: Added new test. Fixed
- dependencies. Added new files.
-
- * addressbook/gui/, addressbook/gui/Makefile.am,
- addressbook/gui/.cvsignore: New directory for addressbook gui
- bits. Added subdirectories. Created an initial .cvsignore.
-
- * addressbook/Makefile.am (SUBDIRS): Removed demo and added gui.
-
- * addressbook/backend/pas/pas-backend-file.c: Added code to do
- notification on bookviews when changes in the backend are made.
-
- * addressbook/backend/pas/pas-book-view.c,
- addressbook/backend/pas/pas-book-view.h: Added helper functions to
- notify the view about the addition or modification of a single
- card. Fixed a mistaken extra free.
-
- * addressbook/backend/ebook/e-card-list-iterator.h: Fixed
- incorrect parent class.
-
- * addressbook/backend/ebook/test-client.c: Made this accept an
- optional parameter that specifies the vcard to add.
-
- * configure.in: Replaced widgets/e-minicard/Makefile and
- addressbook/demo/Makefile with addressbook/gui/minicard/Makefile
- and addressbook/gui/component/Makefile respectively.
-
- * widgets/Makefile.am: Removed e-minicard since it's being moved
- to addressbook/gui/minicard.
-
- * widgets/e-text/e-text.c: Fixed the border width around tooltips
- and made the main tooltip area yellow.
-
-2000-04-08 Dan Winship <danw@helixcode.com>
-
- * configure.in, acconfig.h: add SYSTEM_MAIL_DIR
-
-2000-04-08 Jesus Bravo Alvarez <jba@pobox.com>
-
- * configure.in (ALL_LINGUAS): Added Galician (gl).
-
-2000-04-07 Jeffrey Stedfast <fejj@stampede.org>
- * configure.in: Modified to create camel/providers/smtp/Makefile
-
-2000-04-07 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-text.c: Made text tooltips appear in place.
- Iain figured out that to get them to not appear, we hide the
- tooltip when the mouse leaves the tooltip window, not the canvas
- item (this works because the tooltip window always covers the
- canvas item completely.)
-
-2000-04-07 Matt Loper <matt@helixcode.com>
-
- * addressbook/demo/addressbook.c (control_activate_cb): New
- function. Called when the control is (de)activated.
- (control_activate): New function; called when the control is
- activated, and sets up toolbar/menu times.
- (control_deactivate): New function; removes those toolbar/menu
- items.
- (do_nothing_cb): Does nothing :-)
- (addressbook_factory): Hook up to control_activate_cb().
-
-2000-04-07 Chris Toshok <toshok@laptoph.xtoph.org>
-
- * addressbook/backend/pas/pas-backend-file.c
- (pas_backend_file_process_get_book_view): correctly (well,
- untested) implement.
- (view_destroy): new function.
-
-2000-04-06 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/demo/demo.c, addressbook/demo/addressbook-widget.c:
- Changed calls to e_cell_text_new to match new function signature.
-
-2000-04-06 Miguel de Icaza <miguel@gnu.org>
-
- * art/Makefile.am (images_DATA): Renamed from pixmaps to images.
-
-2000-04-05 Matt Loper <matt@helixcode.com>
-
- * README: Added wombat.
-
-2000-04-04 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-text-test.c: Got rid of some runtime errors.
- Changed to "fixed" font so that it will work on everyone's
- machine. Added a white background rectangle. Made resizing the
- window resize the contained text item. Changed to using affines
- (e_canvas_item_move_absolute) instead of "x" and "y" attributes.
- Set the text in the entries so that they match the original values
- of the displayed text object.
-
-2000-04-04 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-minicard/e-minicard.c: Fixed some referencing and
- lifetime issues.
-
-2000-04-04 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-text.c: Removed an unnecessary get_bounds call.
-
- (From a patch by Iain Holmes <ih@csd.abdn.ac.uk>)
-
- * widgets/e-text/e-text.c: Made tooltips look more like the
- underlying text. Made tooltips show up more consistently.
-
-2000-04-04 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/demo/Makefile.am, addressbook/demo/e-test-model.c,
- addressbook/demo/e-test-model.h: Changed this to backend to an
- ebook.
-
- * addressbook/backend/ebook/e-card-iterator.c,
- addressbook/backend/ebook/e-card-iterator.h,
- addressbook/backend/ebook/e-card-list-iterator.c,
- addressbook/backend/ebook/e-card-list.c,
- addressbook/backend/ebook/e-card-list.h,
- addressbook/backend/ebook/e-card.c,
- addressbook/backend/ebook/e-card.h: Fixed const correctness and
- changed a couple of functions to be external.
-
- * addressbook/Makefile.am: Fixed subdir ordering.
-
-2000-04-04 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/backend/ebook/e-book-view.c: Fixed an incorrect
- function.
-
- * addressbook/backend/ebook/e-book-view.h,
- addressbook/backend/ebook/e-book.h: Fixed some incorrect function
- pointer declarations.
-
- * addressbook/backend/ebook/e-card-iterator.c,
- addressbook/backend/ebook/e-card-iterator.h,
- addressbook/backend/ebook/e-card-list-iterator.c,
- addressbook/backend/ebook/e-card-list-iterator.h,
- addressbook/backend/ebook/e-card-list.c,
- addressbook/backend/ebook/e-card-list.h,
- addressbook/backend/ebook/e-card.c,
- addressbook/backend/ebook/e-card.h,
- addressbook/backend/ebook/test-card.c: Built new iterator system
- for getting fields with multiple entries.
-
- * addressbook/backend/ebook/Makefile.am: Added new files
- addressbook/backend/ebook/e-card-iterator.c,
- addressbook/backend/ebook/e-card-iterator.h,
- addressbook/backend/ebook/e-card-list-iterator.c,
- addressbook/backend/ebook/e-card-list-iterator.h,
- addressbook/backend/ebook/e-card-list.c, and
- addressbook/backend/ebook/e-card-list.h.
-
-2000-04-04 Yuri Syrota <rasta@renome.rovno.ua>
-
- * configure.in: Added uk to ALL_LINGUAS.
-
-2000-04-04 Andreas Hyden <a.hyden@cyberpoint.se>
-
- * configure.in: Added no and sv to ALL_LINGUAS.
-
-2000-04-03 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/backend/ebook/e-card-cursor.h,
- addressbook/backend/ebook/e-card.c: A bit of clean up.
-
- * addressbook/backend/ebook/e-book-types.h,
- addressbook/backend/ebook/e-book-view-listener.c,
- addressbook/backend/ebook/e-book-view-listener.h,
- addressbook/backend/ebook/e-book-view.c,
- addressbook/backend/ebook/e-book-view.h,
- addressbook/backend/pas/pas-book-view.c,
- addressbook/backend/pas/pas-book-view.h: New files for live views.
-
- * addressbook/backend/ebook/Makefile.am,
- addressbook/backend/ebook/e-book-listener.c,
- addressbook/backend/ebook/e-book-listener.h,
- addressbook/backend/ebook/e-book.c,
- addressbook/backend/ebook/e-book.h,
- addressbook/backend/ebook/test-client-list.c,
- addressbook/backend/ebook/test-client.c,
- addressbook/backend/pas/pas-backend-file.c,
- addressbook/backend/pas/pas-book.c,
- addressbook/backend/pas/pas-book.h,
- addressbook/backend/idl/addressbook.idl: Added live views and
- searching to the interface (neither is working yet.)
-
-2000-04-01 Matt Loper <matt@helixcode.com>
-
- * tests/.cvsignore: Added test-movemail.
-
- * art/.cvsignore: New file.
-
-2000-03-31 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/demo/demo.c, addressbook/demo/addressbook-widget.c:
- Added some missing gtk_object_refs.
-
-2000-03-30 Matt Loper <matt@helixcode.com>
-
- * addressbook/backend/pas/pas-backend-file.c
- (pas_backend_file_build_all_cards_list): Get first card (with
- R_FIRST) on first seq().
-
-2000-03-30 Chris Toshok <toshok@laptoph.xtoph.org>
-
- * addressbook/backend/pas/pas-backend-ldap.h: new-file
- * addressbook/backend/pas/pas-backend-ldap.c: new file
-
-2000-03-30 Dan Winship <danw@helixcode.com>
-
- * configure.in:
- * Makefile.am:
- * art/Makefile.am: install new shortcut bar pixmaps.
-
-2000-03-30 Tuomas Kuosmanen <tigert@gimp.org>
-
- * art/evolution-calendar.png art/evolution-inbox.png
- art/evolution-tasks.png art/evolution-contacts.png
- art/evolution-notes.png evolution-today.png:
- added some artwork for the main shortcutbar.. someone
- could stick them in it.
-
-2000-03-29 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/backend/ebook/e-card-cursor.c: Fixed management of
- the corba-cursor object by calling CORBA_Object_duplicate on it on
- e-card-cursor creation and calling CORBA_Object_release on
- e-card-cursor destruction. Also, properly free string returned
- from Evolution_CardCursor_get_nth function.
-
-2000-03-29 Matt Loper <matt@helixcode.com>
-
- * addressbook/backend/ebook/test-client.c (get_cursor_cb): Added
- some debugging.
-
- * addressbook/backend/ebook/e-book-listener.c: Added inline
- documentation for exposed functions.
- * addressbook/backend/ebook/e-card-cursor.c: same.
- * addressbook/backend/ebook/e-card.c: same.
-
- * Makefile.am: add calendar compilation back in.
-
- * addressbook/backend/pas/pas-book-factory.c
- (PAS_BOOK_FACTORY_GOAD_ID): changed to
- "evolution:addressbook-server".
-
- * addressbook/backend/pas/Makefile.am: no need to install a
- .gnorba file from here, as the wombat.gnorba file in
- evolution/wombat will do its job.
-
- * addressbook/backend/ebook/test-client.c (ebook_create): if
- ebook_new fails, print a warning and return.
-
- * addressbook/backend/ebook/e-book.c (CARDSERVER_GOAD_ID): changed
- to "evolution:addressbook-server".
-
- * wombat/wombat.c: Changed headerfile path.
-
- * wombat/Makefile.am: Use relative paths to libraries in the build
- tree, rather than requiring libraries (such as libpcs) to already
- be installed.
-
-2000-03-28 Matt Loper <matt@helixcode.com>
-
- * wombat/Makefile.am: new file.
-
- * wombat/wombat.gnorba: Cleaned up.
-
- * wombat/wombat.c (setup_pcs): filled in the rest.
-
- * Makefile.am: added wombat.
-
- * wombat/wombat.gnorba: new file.
-
- * wombat/.cvsignore: new file.
-
- * wombat/wombat.c (setup_pcs): fill out this function some.
-
- * configure.in: added wombat.
-
-2000-03-28 Chris Toshok <toshok@laptoph.xtoph.org>
-
- * addressbook/backend/pas/pas-card-cursor.c (create_cursor): use
- g_new0 to allocate the BonoboObjectServant.
-
- * addressbook/backend/pas/pas-backend-file.c
- (pas_backend_file_build_all_cards_list): remove unnecessary
- strdup/free.
-
-2000-03-28 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/backend/pas/pas-backend-file.c: Removed an infinite
- loop.
-
- * addressbook/backend/ebook/test-client-list.c: New test that
- doesn't add an extra database item.
-
- * addressbook/backend/ebook/Makefile.am,
- addressbook/backend/ebook/.cvsignore: Added test-client-list.
-
-2000-03-28 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/backend/pas/pas-card-cursor.c: Fixed memory
- allocation.
-
- * addressbook/backend/pas/pas-backend-file.c: Fixed memory
- allocation. Made database stuff not do an extra entry.
-
- * addressbook/backend/ebook/test-client.c: Add test for
- get_all_cards functionality. Changed database name to test.db.
-
- * addressbook/backend/ebook/e-card-cursor.c: Changed bonobo_object
- to gtk_object in a couple of places.
-
-2000-03-28 Chris Toshok <toshok@laptoph.xtoph.org>
-
- * addressbook/backend/pas/pas-backend-file.c
- (pas_backend_file_create_unique_id): create id's for entries using
- the following format: ("pas-id-%08lX%08X", time(NULL), c++).
-
-2000-03-27 Dan Winship <danw@helixcode.com>
-
- * tests/test-movemail.c: new test program. Can be used to copy POP
- mail into your evolution inbox.
-
-2000-03-27 Chris Toshok <toshok@laptoph.xtoph.org>
-
- * addressbook/backend/pas/pas-backend-file.c
- (pas_backend_file_get_vcard): remove unneeded g_strdup;
- (get_length): implement function.
- (get_nth): implement function.
- (cursor_destroy): free up the internal glist of vcards, and fix
- warning.
- (pas_backend_file_build_all_cards_list): new function, to build up
- the list of cards in the db.
- (pas_backend_file_process_get_all_cards): call
- pas_backend_file_build_+all_cards_list, and fix warning.
-
-2000-03-27 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/backend/ebook/test-card.c: Fixed some warnings.
-
- * addressbook/backend/ebook/test-client.c: Added a section to test
- cursors and returning an id when adding.
-
- * addressbook/backend/ebook/e-card-pairs.h: Removed the address
- pairs since they were added to e-card.c.
-
- * addressbook/backend/ebook/e-card.c,
- addressbook/backend/ebook/e-card.h: Made the set_id function take
- a const char *.
-
- * addressbook/backend/ebook/e-book-listener.c,
- addressbook/backend/ebook/e-book-listener.h,
- addressbook/backend/ebook/e-book.c,
- addressbook/backend/ebook/e-book.h,
- addressbook/backend/idl/addressbook.idl,
- addressbook/backend/pas/pas-backend-file.c,
- addressbook/backend/pas/pas-book.c,
- addressbook/backend/pas/pas-book.h: Added a get_all_cards function
- and made the response to the create_card function include the card
- id.
-
- * addressbook/backend/ebook/Makefile.am: Added e-card-cursor.c and
- e-card-cursor.h.
-
- * addressbook/backend/ebook/e-card-cursor.c,
- addressbook/backend/ebook/e-card-cursor.h: New class for proxying
- to an Evolution_CardCursor.
-
- * addressbook/backend/pas/Makefile.am: Added pas-card-cursor.c and
- pas-card-cursor.h.
-
- * addressbook/backend/pas/pas-card-cursor.c,
- addressbook/backend/pas/pas-card-cursor.h: New bonobo class for
- making an Evolution_CardCursor server.
-
-2000-03-27 NotZed <NotZed@HelixCode.com>
-
- * tests/test9.c (main): This test is basically now invalid.
- * tests/test11.c (main): Fix for async search api. Probably works.
- Removed camel-mbox-*.h headers, should be private.
-
-2000-03-27 Tuomas Kuosmanen <tigert@gimp.org>
- * art/attachment.xpm art/mail-new.xpm art/mail-read.xpm
- art/mail-replied.xpm art/mark.xpm art/meeting.xpm
- art/priority-high.xpm art/priority-low.xpm
-
- Added some new icons for the message-list view..
-
-2000-03-26 Chris Toshok <toshok@laptoph.xtoph.org>
-
- * configure.in: check for db_185.h (present in newer db
- distributions.)
-
- * addressbook/backend/pas/pas-backend-file.c
- (pas_backend_file_create_unique_id): new function.
- (pas_backend_file_process_create_card): call
- pas_backend_file_create_unique_id and pas_book_notify_add (if the
- db->put was successful). also, sync out db.
- (pas_backend_file_process_remove_card): call
- pas_book_notify_remove if the db->del was successful, and sync out
- db.
- (pas_backend_file_process_modify_card): call
- pas_book_notify_change if db->put was successful, and sync out db.
- (string_to_dbt): new function.
- (pas_backend_file_process_create_card): use string_to_dbt
- (pas_backend_file_process_remove_card): likewise
- (pas_backend_file_process_modify_card): likewise
- (pas_backend_file_get_vcard): likewise
- (pas_backend_file_upgrade_db): new function, to upgrade a db file
- if we change the data format.
- (pas_backend_file_maybe_upgrade_db): check db version vs. current
- code version, and upgrade it necessary.
- (pas_backend_file_load_uri): call pas_backend_file_maybe_upgrade.
-
-2000-03-26 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/backend/ebook/test-client.c: Load an ECard instead
- of a VCard and then get the VCard from that ECard. Just tests
- ECard and the client stuff at the same time. Also, replaces
- carriage returns with newlines.
-
- * addressbook/backend/ebook/e-book.c: Fixed a small parity error.
-
-2000-03-25 Chris Toshok <toshok@laptoph.xtoph.org>
-
- * addressbook/backend/ebook/test-client.c: create a card and then
- look it up.
-
-2000-03-26 Chris Toshok <toshok@laptoph.xtoph.org>
-
- * addressbook/backend/pas/pas-backend-file.c
- (pas_backend_file_process_create_card): add db calls to flesh out
- the interface. hardcoded id that needs to change, once we decide
- how we're going to create it.
- (pas_backend_file_process_remove_card): add db calls to flesh out
- the interface.
- (pas_backend_file_process_modify_card): likewise
- (pas_backend_file_process_check_connection): likewise
- (pas_backend_file_get_vcard): likewise
- (pas_backend_file_load_uri): likewise
-
-2000-03-26 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/backend/ebook/e-book.c: Set the card id properly
- when retrieving a card.
-
-2000-03-22 NotZed <NotZed@HelixCode.com>
-
- * e-util/e-sexp.h: Formatting cleanup.
-
-2000-03-07 NotZed <NotZed@HelixCode.com>
-
- * e-util/Makefile.am (libeutil_la_SOURCES): s-sexp.h -> e-sexp.h.
-
- * addressbook/backend/ebook/e-card.c,
- addressbook/backend/ebook/e-card.h: Added the ability to set the
- card's id (and made getting it work correctly also.)
-
-2000-03-25 Chris Toshok <toshok@laptoph.xtoph.org>
-
- * addressbook/backend/ebook/e-book.c (e_book_pop_op): pass GList*
- as second parameter to g_list_remove_link, not the data pointer.
-
-2000-03-26 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/backend/ebook/e-card-types.h: Removed the
- address->description field.
-
- * addressbook/backend/ebook/e-card.c: Added VCard output and
- the use of GtkArguments.
-
- * addressbook/backend/ebook/test-card.c: Updated this to use the
- GtkArguments.
-
- * addressbook/backend/ebook/e-book.c: Fixed a memory leak.
-
-2000-03-25 Matt Loper <matt@helixcode.com>
-
- * ebook/e-book.c,
- ebook/e-book.h,
- ebook/e-book.h,
- ebook/e-card-fields.h,
- ebook/e-card.h,
- ebook/e-commerce.h: old, removed. Up-to-date EBook stuff is kept
- in addressbook/backend/ebook.
-
-2000-03-23 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/backend/ebook/e-card.c,
- addressbook/backend/ebook/e-card.h,
- addressbook/backend/ebook/e-card-types.h,
- addressbook/backend/ebook/e-card-pairs.h,
- addressbook/backend/ebook/test-card.c: Added parsing and testing
- for name, full name, birthday, telephone, email, and street
- address properties.
-
-2000-03-22 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/backend/ebook/.cvsignore,
- addressbook/backend/pas/.cvsignore,
- addressbook/backend/idl/.cvsignore,
- addressbook/backend/.cvsignore: Updated .cvsignore files.
-
-2000-03-22 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/Makefile.am, configure.in: Added the
- addressbook/backend directory.
-
- * addressbook/backend/Makefile.am: Removed the libversit directory
- as it's now included in the base evolution directory.
-
- * addressbook/backend/ebook/e-card-pairs.h,
- addressbook/backend/ebook/Makefile.am: Changed the place where
- libversit is looked for.
-
- * addressbook/backend/ebook/e-book-listener.c: Fixed some
- indentation.
-
- * addressbook/backend/ebook/e-card-pairs.h,
- addressbook/backend/ebook/e-card-types.h: Commented out some code
- to get this to compile.
-
- * addressbook/backend/ebook/e-card.c,
- addressbook/backend/ebook/e-card.h: Turned this into a GTK+
- object.
-
- * addressbook/backend/pas/pas.c,
- addressbook/backend/ebook/test-client.c: Include gnome.h and
- gnorba.h.
-
- * addressbook/backend/idl/addressbook.idl: Include Bonobo.idl
- instead of bonobo-unknown.idl.
-
- * addressbook/backend/pas/pas-backend-file.c,
- addressbook/backend/pas/pas-book.c,
- addressbook/contact-editor/test-editor.c,
- addressbook/contact-editor/e-contact-editor.c,
- addressbook/printing/e-contact-print.c,
- addressbook/printing/test-contact-print-style-editor.c,
- addressbook/printing/test-print.c: Killed some warnings.
-
-2000-03-21 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-text.c: Changed gnome_canvas_item_grab_focus to
- e_canvas_item_grab_focus.
-
-2000-03-21 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/demo/addressbook-widget.c: Make background pixmap
- get properly set to NULL.
-
-2000-03-20 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-text.c, widgets/e-text/e-text.h: Added the
- ability to access the text event processor.
-
-2000-03-13 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/demo/addressbook-widget.c: Made the addressbook
- component look in the users home directory for the addressbook.xml
- file.
-
-2000-03-20 Matt Loper <matt@helixcode.com>
-
- * tests/ui-tests/.cvsignore: added filter.
-
- * addressbook/demo/.cvsignore: added test-addressbook.
-
-2000-03-17 Elliot Lee <sopwith@redhat.com>
- * calendar/cal-client/Makefile.am,
- calendar/cal-util/Makefile.am, calendar/gui/Makefile.am,
- calendar/pcs/Makefile.am, mail/Makefile.am,
- widgets/e-text/Makefile.am: Fix for srcdir != builddir.
-
-2000-03-14 Dan Winship <danw@helixcode.com>
-
- * Makefile.am (SUBDIRS): build shell before mail, since mail
- relies on the shell idl files being compiled.
-
-2000-03-13 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/demo/Makefile.am: Added files for addressbook bonobo
- component. Changed non bonobo version to compile as
- test-addressbook.
-
- * addressbook/demo/addressbook.c,
- addressbook/demo/addressbook.gnorba,
- addressbook/demo/addressbook.h,
- addressbook/demo/addressbook-factory.c,
- addressbook/demo/addressbook-widget.c,
- addressbook/demo/addressbook-widget.h: New factory to create an
- addressbook bonobo component.
-
-2000-03-12 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/.cvsignore: Added e-text-test.
-
- * addressbook/demo/e-test-model.c,
- addressbook/demo/e-test-model.h: A model storing data in an array
- of Address objects.
-
- * addressbook/demo/demo.c: Changed to use
- addressbook/demo/e-test-model.c and
- addressbook/demo/e-test-model.h.
-
- * addressbook/demo/Makefile.am: Added e-test-model.c and
- e-test-model.h.
-
-2000-03-12 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/Makefile.am: Rearranged SUBDIRS for dependencies.
-
- * widgets/e-text/e-text-model.c, widgets/e-text-model.h: New
- object which stores a piece of text data. All methods are
- virtual.
-
- * widgets/e-text/e-text.c, widgets/e-text/e-text.h: Modified this
- to use an ETextModel for its data.
-
- * widgets/e-text/Makefile.am: Added e-text-model.c and e-text-model.h.
-
- * widgets/e-minicard/test-minicard-label.c: Made this work again.
-
- * widgets/e-minicard/e-minicard.c,
- widgets/e-minicard/e-minicard.h: Made this use an ETableModel to
- get its data.
-
- * widgets/e-minicard/e-minicard-label.c,
- widgets/e-minicard/e-minicard-label.h: Added the ability to set
- the text model used for the contained text widget.
-
- * widgets/e-minicard/Makefile.am: Added e-table since e-minicard
- is now dependent on an e-table-model for its data.
-
- * addressbook/demo, addressbook/demo/.cvsignore,
- addressbook/demo/Makefile.am, addressbook/demo/demo.c,
- addressbook/demo/spec: A new program to test ETable and EMinicard
- integration.
-
- * configure.in: Added addressbook/demo/Makefile.
-
- * addressbook/Makefile.am: Added the demo/ subdirectory.
-
-2000-03-10 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-minicard/e-minicard.c,
- widgets/e-minicard/e-minicard-label.c,
- widgets/e-minicard/e-minicard-label.h,
- widgets/e-minicard/e-reflow.c, widgets/e-minicard/test-reflow.c,
- widgets/e-text/e-text.c, widgets/e-text/e-text.h: Adapted to use
- the new e-canvas reflow system.
-
-2000-03-07 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-text.c, widgets/e-text/e-text.h: Added a
- "break_characters" argument. It lets you define a set of
- characters which should cause optional linebreaks to occur. Made
- setting the "clip_height" argument to -1 mean no height clipping.
- Moved calling the "resize" signal into an idle handler to avoid
- reentering the canvas update loop. Made EText recalc bounds if
- the affine has changed. Fixed up tooltip_count (this counts the
- number of ENTER and LEAVE events.)
-
- * widgets/e-text/e-text-test.c: Got rid of a few warnings.
-
- * widgets/e-minicard/e-minicard-label.h: Reindent a few lines.
-
- * widgets/e-minicard/e-minicard.c,
- widgets/e-minicard/e-minicard-label.c: Switch from using "x" and
- "y" to set the children's position to using
- e_canvas_item_move_absolute.
-
-2000-03-05 Matt Loper <matt.loper@splashtech.com>
-
- * tests/ui-tests/message-browser.c: Commenting added.
- (on_url_data_requested): renamed from "on_url_requested", to
- reflect that a stream of data is what's actually being asked for.
- (hydrate_persist_stream_from_gstring): New function.
- (camel_stream_to_gstring): New function.
- (on_object_requested): Cleaned up.
-
-2000-03-04 bertrand <bertrand@helixcode.com>
-
- * tests/ui-tests/Makefile.am: add bonobo to the build
- process.
-
- * tests/ui-tests/message-browser.c (main):
- initialize Bonobo. Use bonobo_main.
- (get_gtk_html_contents_window): set signal handlers
- for url requests and objects requests.
- (on_object_requested): answer to object requests.
-
-2000-03-03 bertrand <bertrand@helixcode.com>
-
- * tests/ui-tests/message-browser.c (main): initialize
- gdkrgb. Push visual/colormap.
- (on_url_requested): in the case where a camel url is requested,
- write the camel stream to gtkhtml.
-
- * tests/ui-tests/Makefile.am (filter_LDADD): add
- gnomeprint in the lib list.
-
-2000-03-01 Ettore Perazzoli <ettore@helixcode.com>
-
- * configure.in: Build `filter/Makefile'. Added check for GtkHTML.
- Set `GTKHTML_CFLAGS' and `GTKHTML_LIBS' to the appropriate values
- for linking with GtkHTML.
-
-2000-03-01 Federico Mena Quintero <federico@helixcode.com>
-
- * configure.in (AC_OUTPUT): Added calendar/idl/Makefile,
- calendar/cal-client/Makefile, and calendar/pcs/Makefile to the
- list of files to generate.
-
-2000-02-29 Iain Holmes <ih@csd.abdn.ac.uk>
-
- * widgets/e-text/e-text.c: Don't show the tooltip if the text is being
- editted or isn't clipped. Remove the tooltip when editting starts.
-
- * widgets/e-text/Makefile.am: Build the test program
-
-2000-02-29 NotZed <NotZed@HelixCode.com>
-
- * tests/ui-tests/Makefile.am (filter_LDADD): Added test program.
-
- * tests/ui-tests/filterdescription.xml, saveoptions.xml: Data
- files for test program.
-
- * tests/ui-tests/filter.c (main): Test program for filter ui.
-
-2000-02-28 NotZed <NotZed@HelixCode.com>
-
- * widgets/e-minicard/Makefile.am (INCLUDES): Fixed references to
- eutil.
-
- * Makefile.am (SUBDIRS): Build e-util before other stuff.
- (SUBDIRS): Build filter after camel.
-
-2000-02-28 Chris Lahey <clahey@umich.edu>
-
- * widgets/e-text/e-text.c: Compilation error.
-
-2000-02-28 Chris Lahey <clahey@umich.edu>
-
- * widgets/e-text/e-text.c, widgets/e-text/e-text.h: Updated these
- to use the canvas ::update system properly.
-
-2000-02-24 Dan Winship <danw@helixcode.com>
-
- * acconfig.h:
- * configure.in: define SENDMAIL_PATH with the path to sendmail.
-
-2000-02-24 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text.c, widgets/e-text.h, e-text-event-processor.c,
- e-text-event-processor.h, e-text-event-processor-emacs-like.c,
- e-text-event-processor-emacs-like.h,
- e-text-event-processor-types.h: This were moved to widgets/e-text/
- a while ago but never removed. They have now been removed.
-
- * widgets/e-text/e-text.c, widgets/e-text/e-text.h: Removed some
- warnings from this file. Made tooltips disappear when you're
- finished with them.
-
- * widgets/e-minicard/test-reflow.c,
- widgets/e-minicard/test-minicard.c,
- widgets/e-minicard/test-minicard-label.c: Commented out unused
- about_callback functions.
-
- * widgets/e-minicard/e-reflow.c: Made e-reflow pass an EFocus to
- its e-minicard children.
-
- * widgets/e-minicard/e-minicard.c: Made e-minicard take and return
- an EFocus for its "has_focus" argument. This makes shift-tab work properly.
-
- * widgets/e-minicard/e-minicard-label.c: Made e-minicard-label take and return
- an EFocus for its "has_focus" argument. Made the font that
- e-minicard-label uses only be allocated once.
-
-2000-02-21 Matt Loper <matt@helixcode.com>
-
- * tests/ui-tests/message-browser.c (on_link_clicked): stop
- sscanf() abuse.
-
- * tests/Makefile.am: changed references to libibex.a to
- libibex.la.
-
- * libical/src/libical/.cvsignore: Added *.lo, *.la, and .libs.
- * libical/src/libicalss/.cvsignore: same.
-
- * tests/.cvsignore: Added test11.
-
- * libical/Makefile.in: autogenerated file removed from cvs, and
- added to .cvsignore.
- * libical/src/Makefile.in: same.
- * libical/src/libical/Makefile.in: same.
- * libical/src/libicalss/Makefile.in: same.
-
-2000-02-22 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * tests/ui-tests/message-browser.c (on_link_clicked):
- uggly hack to test part saving and
- b64 streams.
-
-2000-02-21 Dan Winship <danw@helixcode.com>
-
- * tests/test10.c:
- * tests/test11.c: update for camel changes
-
-2000-02-20 Matt Loper <matt@helixcode.com>
-
- * tests/Makefile.am: Changed dependencies on libibex.la to
- libibex.a. In test9_LDADD, placed libcamelmbox.la before
- libibex.la, as the former requires the latter.
-
-2000-02-20 Iain Holmes <ih@csd.abdn.ac.uk>
-
- * widgets/e-text/e-text.[ch] (_do_tooltip): Show the text of the item,
- in a tooltip style.
- (e_text_event): Add a timeout on the Enter and remove it on the Leave
- events.
-
- * e-text-test.c: New file to test e-text items.
-
-2000-02-20 Matt Loper <matt@helixcode.com>
-
- * .cvsignore: added ABOUT-NLS.
- * ABOUT-NLS: removed.
-
-2000-02-19 Matt Loper <matt@helixcode.com>
-
- * tests/ui-tests/message-browser.c (on_link_clicked): When a link
- is clicked, indicate the link with a dialog.
-
- * libical/src/test/.cvsignore: Added Makefile.
-
- * libical/.cvsignore: Added Makefile, configure, config.status.
-
- * libical/src/.cvsignore: New file.
-
- * libical/Makefile: autogenerated file removed from cvs.
- * libical/configure: same.
- * libical/config.status: same.
- * libical/src/Makefile: same.
- * libical/src/test/Makefile: same.
-
- * widgets/e-minicard/.cvsignore: Added minicard-label-test,
- minicard-test, and reflow-test.
-
- * shell/.cvsignore: added files autogenerated from Evolution.idl.
-
- * libversit/.cvsignore: Added .libs, vcc.c, vcc.lo, vobject.lo,
- vcaltmp.lo, libversit.la
-
- * libical/src/test/.cvsignore: New file.
-
- * libical/src/libical/.cvsignore: New file.
-
- * libical/src/libicalss/.cvsignore: New file.
-
- * libical/.cvsignore: New file, with config.log in it.
-
- * tests/ui-tests/message-browser.c: minor cleanup.
-
- * tests/ui-tests/.cvsignore: added message-browser.
-
-2000-02-18 NotZed <NotZed@HelixCode.com>
-
- * tests/test11.c (main): Use a relative path to the mbox provider
- module.
-
-2000-02-18 Matt Loper <matt@helixcode.com>
-
- * tests/ui-tests/message-browser.c (filename_to_camel_msg): Call
- camel_data_wrapper_set_input_stream, rather than
- camel_data_wrapper_construct_from_stream. For the whole message,
- allow someone to see the header ("to", "from", etc.). Clicking on
- tree items to see their elements, now works also.
-
-2000-02-18 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * configure.in: Make gnomeui the last library on the command line,
- as its path is the one most likely to hold other old libraries
- (libxml) and we need newer versions.
-
- (BONOBO_VFS_GNOME_CFLAGS): Add libical to the
- AC_CONFIG_SUBDIRS
-
- (BONOBO_HTML_GNOME_CFLAGS): VFS checking needs to
- go before we rquery them.
-
- Use the new method for gnome-print
- checking instead of the old crufty gtk+ based one that nobody can
- debug. ever.
-
-2000-02-16 Matt Loper <matt@helixcode.com>
-
- * tests/ui-tests/message-browser.c (tree_selection_changed): New
- callback function, which will later change the main html window to
- reflect the newly-selected tree item.
- (get_gtk_html_contents_window): New function. Gets the content
- part of a message.
- (get_gtk_html_header_window): New function. Will get the header
- part of a message, when applicable.
-
- * camel/camel-formatter.c (str_tolower): Now returns a new string,
- rather than changing it in place.
- (initialize_camel_formatter): New function; gives a root
- CamelDataWrapper and a stream to a CamelFormatter.
- (camel_formatter_wrapper_to_html): New function. Translates any
- CamelDataWrapper into html.
- (lookup_unique_id): Allows the root object to be a
- CamelDataWrapper, which is more general than the previously
- required CamelMimeMessage.
-
-
-2000-02-14 NotZed <notzed@zedzone.helixcode.com>
-
- * configure.in (EXTRA_GNOME_CFLAGS): Add libunicode to CFLAGS/LIBS.
-
-2000-02-13 NotZed <notzed@zedzone.helixcode.com>
-
- * configure.in: Added check for libunicode.
-
- * Makefile.am (SUBDIRS): Added libibex.
-
- * tests/test11.c (main): New test, tests search api.
-
-2000-02-13 Matt Loper <matt@helixcode.com>
-
- * tests/ui-tests/test-multipart-mixed.msg: New rfc822 file, which
- crashes message-browser.
-
- * tests/ui-tests/message-browser.c (get_gtk_html_window): Takes a
- CamelMimeMessage as a param, rather than a filename.
- (main): Puts our windows in an hpane rather than a vbox. Also
- opens a file dlg box if a filename wasn't given as a first param.
-
- * camel/camel-stream-fs.c (_init_with_name): Set stream_fs->fd to
- -1 if we fail to load the file.
- (camel_stream_fs_new_with_name): If stream_fs->fd is -1, return
- NULL. These changes make it so that a CamelStreamFs won't be
- created if you give it a bogus filename; they may be replaced once
- exception handling is in place.
-
- * tests/ui-tests/message-browser.c (handle_tree_item): Expand tree
- items.
- (mime_message_to_html): New function; translates a
- CamelMimeMessage into two strings (one for the header, and one for
- the body).
- (get_gtk_html_window): New function; fills out a window with
- html. The html is taken from a processed rfc822 file, via a
- CamelFormatter.
-
- * camel/camel-formatter.c: Added assertions.
- (handle_text_html): Don't call text_to_html on something that's
- already html.
- (multipart_foreach): function deleted.
-
- * tests/ui-tests/message-browser.c: Added preliminary support for
- the viewing of messages via gtkhtml. Lots of commenting.
-
-2000-02-11 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/contact-editor/e-contact-editor.c: Fixed the
- location the first time you see the drop down menus for changing
- which phone, email, or snail mail address you see.
-
-2000-02-11 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-text.c (e_text_event): Made a click on a text
- widget set the cursor properly.
-
-2000-02-11 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text/e-text.h: Removed some arguments from the .h that
- will never be implemented.
-
-
-2000-02-10 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/data-wrapper-repository.c (data_wrapper_repository_init):
- default the text/* mime types to CamelSimpleDataWrapper so
- that Michael can use get_stream.
-
-2000-02-10 NotZed <notzed@zedzone.helixcode.com>
-
- * camel/camel-simple-data-wrapper-stream.h: The superclass is
- actually a seekable stream, not just a stream.
-
-2000-02-10 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * tests/Makefile.am (THREAD_RELATED_TESTS): don't
- build thread related tests if evolution has been
- compiled with no thread support.
-
- * configure.in (have_pthread): allow user to enable/disable
- thread support at configure time
- (EXTRA_GNOME_CFLAGS):
- (EXTRA_GNOME_LIBS): thread support is directly
- included in this variable if enabled. No more
- EXTRA_GNOME_CFLAGS_THREADS
- Other special support should be added in
- EXTRA_GNOME_LIBS and EXTRA_GNOME_CFLAGS
- instead of redefining a new variable
- each time we want to add a new lib.
- (bonobo, ....)
-
- * camel/camel.c (camel_init): only try to initialize threads if
- we enabled threads support.
-
- * tests/ui-tests/Makefile.am (message_browser_LDADD): use
- EXTRA_GNOME_LIBS
-
- * configure.in (have_pthread): remove HAVE_PTHREADS
- variable. Define ENABLE_THREADS instead.
-
- * camel/Makefile.am: use ENABLE_THREADS not HAVE_PTHREADS
- to test if we build thread relateed code.
-
- * tests/Makefile.am: use EXTRA_GNOME_LIBS,
- not EXTRA_GNOME_LIBS_THREADS
-
-2000-02-10 NotZed <notzed@zedzone.helixcode.com>
-
- * camel/hash-table-utils.c (g_strcase_hash): Removed a bizarre
- comparison construct for converting case.
-
-2000-02-09 NotZed <notzed@zedzone.helixcode.com>
-
- * camel/data-wrapper-repository.c (data_wrapper_repository_init):
- Uses case-insensitive compares.
-
- * camel/gmime-content-field.c (gmime_content_field_new): Uses
- case-insensitive compares.
-
- * camel/data-wrapper-repository.c (data_wrapper_repository_init):
- Use case-insensitive mime types.
-
- * camel/camel-simple-data-wrapper-stream.c (read): Increment the
- copy source address to match the data read offset.
- (seek): Actually implement the seek.
-
- * camel/camel-mime-part-utils.c
- (camel_mime_part_store_stream_in_buffer): If we get a -1 read,
- DONT update the total bytes, and try and truncate the array in
- reverse. Eek.
-
- * camel/camel-mime-part.c (camel_mime_part_encoding_from_string):
- This was DEFINETLEY not the right way to do it. strncmp!=strcmp
- (camel_mime_part_encoding_to_string): Handle the default case.
- : include string.h for strcmp() etc.
-
-2000-02-09 Matt Loper <matt@helixcode.com>
-
- * tests/ui-tests/test-multipart-alt.msg: New test file; run
- message-browser on it, and it will crash.
-
-2000-02-09 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * tests/ui-tests/message-browser.c (handle_tree_item):
- show the item.
- (handle_tree_item): show the containers and the containees
- (get_message_tree_ctrl): call handle_tree_item
- on the message itself
-
- * camel/camel-mime-message.c (camel_mime_message_init):
- set the mime type to "mime/message".
- --- THIS IS NOT THE CONTENT TYPE ---
-
- * camel/camel-mime-body-part.c (camel_mime_body_part_init):
- set the mime type to "body-part".
- --- THIS IS NOT THE CONTENT TYPE ---
-
- * camel/camel-data-wrapper.c (camel_data_wrapper_set_mime_type):
- mime_type is const.
- (_set_input_stream): really set the input stream
- (_set_output_stream): really set the output stream
- various other typo fixes.
-
- * tests/ui-tests/message-browser.c: various typo
- fixes in the ctree construction.
-
- * camel/string-utils.c (string_trim): fix braindead
- trailing trim bug.
-
- * camel/gmime-content-field.c (gmime_content_field_construct_from_string):
- strip the leading and trailing quotes when constructing the
- content field. This should be done in a more generic
- RFC822 approach, but this fixes a bug that prevent
- matt from analysing some multipart messages.
-
- * camel/camel-data-wrapper.h: reorganize the
- deprecated and new methods.
-
- * camel/providers/mbox/camel-mbox-folder.c
- (_check_get_or_maybe_generate_summary_file):
- Use "From " as the message separating string.
-
- * camel/providers/mbox/camel-mbox-folder.c (_append_message):
- set the mode when creating the mbox file.
-
- * camel/providers/mbox/camel-mbox-utils.c (camel_mbox_write_xev):
- ditto
- * camel/providers/mbox/camel-mbox-summary.c (camel_mbox_save_summary):
- ditto
-
-2000-02-09 Matt Loper <matt@helixcode.com>
-
- * tests/ui-tests/message-browser.c (print_usage_and_quit): Minor
- cleanup.
-
-2000-02-09 NotZed <notzed@zedzone.helixcode.com>
-
- * camel/camel-simple-data-wrapper-stream.c (class_init): Actually
- initialise the class. It simple couldn't have worked before.
- (camel_simple_data_wrapper_stream_construct): Commented out code
- which crashes just to get something working, memory corruption??
-
-2000-02-09 Christopher James Lahey <clahey@helixcode.com>
-
- * configure.in: Add new Makefiles to Makefile list.
-
- * widgets/e-text/Makefile.am: Build libetext.
-
- * widgets/e-minicard/Makefile.am: Build libeminicard and test
- programs.
-
- * widgets/Makefile.am: Remove all e-text and e-minicard code and
- add them to the SUBDIRS list.
-
-2000-02-08 Matt Loper <matt@helixcode.com>
-
- * tests/ui-tests/message-browser.c: New file; shows a message in
- tree format, where multipart's have multiple leaves.
-
- * camel/camel-formatter.c: Changed references from
- 'multipart/alternate' to 'multipart/alternative'.
-
- * tests/test-formatter.c (convert_to_html_and_print): Use the
- buffer length of the stream to create strings which are then
- printed, rather than printing the stream (which might not have a
- trailing \0) directly.
-
- * camel/camel-formatter.c (str_tolower): New function; makes a
- string lowercase.
-
- * tests/test-formatter.c (convert_to_html_and_print): Fixed call
- to 'camel_formatter_mime_message_to_html' to contain correct
- params.
-
- * camel/camel-formatter.c: New member to 'CamelFormatterPrivate',
- 'attachments', will be used to let the caller know which items
- should be treated as attachments (as opposed to objects which are
- inline to the body).
- (text_to_html): name changed from 'encode_entities'. Also now
- converts newlines to <br> tags.
- (camel_formatter_mime_message_to_html): Now takes two output
- streams -- one for the header, and one for the body.
- (get_bonobo_tag_for_object): New function; tries to make a tag out
- of (1) the leaf of a mime message and (2) a bonobo object that can
- handle its mime type, but can return NULL if it fails to find the
- mime type.
- (handle_vcard): New function; will write out a vcard as html.
-
-2000-02-07 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text.h, widgets/e-text.c: Added line wrap and a max
- number of lines (max number of lines is only obeyed if text is not
- being edited).
-
-2000-02-07 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/printing/e-contact-print.c: Removed an unneccessary
- include of libhnj. All uses of libhnj are commented out.
-
-2000-02-07 Matt Loper <matt@helixcode.com>
-
- * camel/camel-formatter.c (mime_part_to_html): function deleted.
-
- * tests/test-formatter.c (print_usage_and_quit): New function,
- which gives usage information.
-
- * camel/camel-formatter.c: made the 'stream' a member of the
- CamelFormatter class, so that streams don't have to be explicitly
- sent as a param where a CamelFormatter is also sent..
- (handle_text_plain): Use 'encode_entities' to change '<' to
- '&gt;', etc.
-
-2000-02-03 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-formatter.c (find_preferred_displayable_body_part_in_multipart_alternative):
- (mime_part_to_html): typo fix :
- use find_preferred_displayable_body_part_in_multipart_alternative
- instead of the other names. Allows camel to have no undefined symbols.
-
-2000-02-02 Matt Loper <matt@helixcode.com>
-
- * tests/test-formatter.c: New file; intended to test the
- CamelFormatter class.
-
- * camel/camel-formatter.c: Lots of cleanup, commenting, some new
- functions, and a really basic skeleton for getting bonobo objects
- into the html.
- (encode_entities): New function, stolen from Daniel Velliard.
-
-2000-01-28 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/printing/e-contact-print-style-editor.h,
- addressbook/printing/e-contact-print-style-editor.c,
- addressbook/printing/test-contact-print-style-editor.c: Files to
- load the contact print style editor from the glade file. Doesn't
- really do anything yet.
-
- * addressbook/printing/Makefile.am: Added style editor stuff.
-
- * addressbook/printing/e-contact-print.glade: Changed a bit.
- Fixed an out of place widget.
-
- * addressbook/printing/.cvsignore: Added
- contact-print-style-editor-test.
-
- * addressbook/printing/smallbook.ecps: Fixed up the values to
- match the new types.
-
- * addressbook/printing/medbook.ecps,
- addressbook/printing/phonelist.ecps: Added two new printing
- styles.
-
- * addressbook/printing/e-contact-print.h: Fixed an incorrect
- comment.
-
- * addressbook/printing/e-contact-print.c: Added columns and letter
- tabs. Tweaked spacing all over the place. Fixed card height
- function so that column wrapping is always done correctly. Added
- pulling of style information from a file. Added line wrapping
- within each text field.
-
- * addressbook/printing/e-contact-print-types.h: Added a type field
- for different types of print styles.
-
-
-2000-01-28 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text.c (e_text_command): Handle the grab and ungrab
- command instead of doing focus by hand. This fixes a problem
- related to the scroll wheel.
- (e_text_command): Reset the blink timer in many more command
- situations so that the cursor blinks less when you're interacting
- with it.
-
- * widgets/e-text-event-processor-emacs-like.c: Send the grab focus
- command when starting a selection and the ungrab focus command
- when ending it.
-
- * widgets/e-text-event-processor-types.h: Added grab command type
- so that the event processor can tell the widget to grab the focus.
-
- * widgets/e-reflow.c: Redefined all sizes using #defines so that
- they can be tweaked later. Added scroll wheel handling and set up
- adjustment increments so that the scroll bars will work correctly.
-
- * widgets/e-minicard.h: Added minicard focus type enum. This
- doesn't mean anything yet, but it will later be used to say which
- direction the focus is coming from (below for shift-tab, above for
- tab.)
-
-2000-01-28 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-minicard-label.c, widgets/e-minicard.c: Use
- e_canvas_item_grab_focus so that it will work with old versions of
- gnome-canvas.
-
- * widgets/e-canvas.c, widgets/e-canvas.h: Finished working around
- focus bugs.
-
-2000-01-28 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/test-reflow.c: Set the minimum_width.
-
- * widgets/e-reflow.h, widgets/e-reflow.c: Added one more column
- line so that the right edge of the reflow will have a line. Also
- added a minimum_width so that even if the reflow is thinner than
- the window, when you resize it larger all the lines are drawn.
-
-2000-01-27 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-reflow.h, widgets/e-reflow.c: Added an arrow cursor
- for the draggable columns. Made the clickable column area
- larger.
-
- * widgets/e-text.h, widgets/e-text.c: Added an I beam cursor for
- the text item when it is editable.
-
- * widgets/e-minicard-label.c: Forward enter and leave
- notifications to the contained editable text item.
-
-2000-01-26 Matt Loper <matt@helixcode.com>
-
- * camel/camel-formatter.c: By looking up a mimetype in a
- hashtable, we can now get a handler function for an arbitrary
- mimetype.
-
-2000-01-25 Mathieu Lacage <mathieu@advogato.org>
-
- * .cvsignore s: cvs shutup.
-
-2000-01-25 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-reflow.c, widgets/e-minicard.c: Handle shift-tab
- properly now.
-
- * widgets/e-minicard-label.c: Reindented some areas.
-
- * widgets/test-reflow.c: Use e-canvas. Set the back pixmap to
- NULL for the canvas so that scrolling won't flash grey.
-
- * widgets/e-canvas.c, widgets/e-canvas.h: These subclass
- GnomeCanvas to work around a few bugs so that evolution will work
- well with old versions of gnome-libs.
-
- * widgets/Makefile.am: Added e-canvas.c and e-canvas.h.
-
- * addressbook/contact-editor/contact-editor.glade: Not much
- change. Mostly internal reorganization by glade itself.
-
-2000-01-25 Christopher James Lahey <clahey@helixcode.com>
-
- * addressbook/printing/smallbook.ecps: Example contact printing
- style. Not used yet.
-
- * addressbook/printing/e-contact-print.glade: A glade file for
- editing contact printing styles. Not used yet.
-
- * addressbook/printing/test-print.c: Test file for printing.
-
- * addressbook/printing/e-contact-print.c,
- addressbook/printing/e-contact-print.h,
- addressbook/printing/e-contact-print-types.h,
- addressbook/printing/Makefile.am, addressbook/printing/.cvsignore:
- New files for contact printing support.
-
- * addressbook/Makefile.am (SUBDIRS): Add printing.
-
- * configure.in: Check for gnome-print. Build the
- addressbook/printing Makefile.
-
-2000-01-24 bertrand <bertrand@helixcode.com>
-
- * camel/camel-data-wrapper.h:
- * camel/camel-data-wrapper.c
- (_set_input_stream):
- (_get_input_stream):
- (_set_output_stream):
- (_get_output_stream):
- The CamelDataWrapper can now be provided with input and
- output streams, so that nothing has to be kept in memory.
-
- * camel/camel-stream.c (camel_stream_class_init):
- added the "data_available" signal.
-
-
-2000-01-24 Federico Mena Quintero <federico@helixcode.com>
-
- * configure.in: Added the gnome-pilot and capplet checks; they
- will likely be reworked for the Evolution framework, but for now
- the calendar/ directory needs them.
-
- * configure.in: Added checks for gnome-vfs.
-
-2000-01-24 bertrand <bertrand@helixcode.com>
-
- * camel/camel-seekable-stream.c:
- * camel/camel-seekable-stream.h:
- new files.
-
- * camel/camel-simple-data-wrapper-stream.h: parent class is now
- CamelSeekableStream
- * camel/camel-stream-buffered-fs.h: idem
- * camel/camel-stream-buffered-fs.c: idem
- * camel/camel-stream-mem.h: idem
- * camel/camel-stream-mem.c: idem
- (_seek): change declaration
- * camel/camel-stream-fs.c: parent class is now
- CamelSeekableStream
- (_seek): change declaration
-
- * camel/camel-stream-fs.h: parent class is now
- CamelSeekableStream
-
- * camel/camel-stream-fs.[ch]: converted all
- gint64 variables into guint32.
-
-
- * camel/camel-stream-fs.c (_read): fix stupid bug.
- (_write): ditto.
-
- * camel/camel-exception.c (camel_exception_new): don't
- forget to clean the exception when creating it.
-
- * camel/camel-recipient.c (camel_recipient_table_add_list):
- add recipient_list to the recipients, not recipients_list.
- I don't know what that variable was doing here.
-
-
-2000-01-24 Matt Loper <matt@helixcode.com>
-
- * camel/camel-formatter.c (write_header_info_to_stream): new
- function, broken out from 'camel_formatter_make_html'.
- (write_mimepart_to_stream): same.
- (find_text_body_part_in_multipart_related): new function.
- (camel_formatter_make_html): Now tries to deal with
- multipart/related, multipart/alternate, and text/(plain|html).
-
-
-2000-01-23 bertrand <bertrand@helixcode.com>
-
- * camel/camel-store.c (camel_store_get_session):
- added a public get_session method.
-
- * camel/providers/mbox/camel-mbox-summary.c (camel_mbox_save_summary):
- (camel_mbox_load_summary): load/save message sizes in the summary file
-
- * camel/providers/mbox/camel-mbox-summary.h:
- added a size field to the message information
- structure.
-
- * camel/providers/mbox/camel-mbox-utils.c (parsed_information_to_mbox_summary):
- copy message size to the mbox summary information too.
-
- * camel/camel-stream-fs.c (_seek): updated to
- work with bounded fs streams.
- (_write): ditto.
- (_read): ditto.
-
- * camel/camel-stream-fs.h (struct ):
- added the cur_pos, inf_bound and sup_bound
- members to allow for bounded fs stream.
-
- * camel/camel-stream-fs.c (_set_bounds): new func.
- (_init_with_fd_and_bounds): idem.
- (_init_with_name_and_bounds): idem.
- New functions to allow the usage of bounded fs streams.
-
- The bounded fs stream allow, for example, to make a stream
- from a message stored in an mbox file.
-
-
-2000-01-22 bertrand <bertrand@helixcode.com>
-
- * camel/providers/mbox/camel-mbox-folder.c (_check_get_or_maybe_generate_summary_file):
- use the real summary file path instead of a
- stupid hardcoded one. Fixes yet another bug.
-
- * camel/providers/mbox/camel-mbox-utils.c (parsed_information_to_mbox_summary):
- don't forget to copy the date too. Fix a very annoying bug.
-
- * camel/providers/mbox/camel-mbox-folder.c (_append_message):
- implemented. A lot of fixes too. Works now.
- (_get_uid_list): implemented.
-
-2000-01-21 bertrand <bertrand@helixcode.com>
-
- * tests/test10.c:
- test the mbox provider.
-
- * camel/camel-folder.c (_set_name):
- if camel_folder_get_mode returns an
- exception, return it instead of
- overriding it with a new one.
- (camel_folder_is_open): make the is_open
- method public.
- (_set_name): use the is_open instead of
- get_mode.
- (_set_name): set the fullname even in the case
- where the folder has no parent.
- (_set_name): use %c, not %d to add the
- separator char into the full path.
-
- * camel/camel-store.c: add exception handling everywhere in
- the store related functions arguments.
- * camel/providers/mbox/camel-mbox-folder.c: idem
- * camel/providers/mbox/camel-mbox-folder.h: idem
- * camel/providers/mbox/camel-mbox-store.h: idem
-
- * camel/providers/mbox/Makefile.am (libcamelmbox_la_SOURCES):
- added camel-mbox-provider.c to the mbox provider
- sources.
-
- * camel/providers/mbox/camel-mbox-provider.c:
- provider registration code.
-
- * camel/providers/mbox/camel-mbox-folder.c (_get_message_count): implemented
- (_append_message): implemented
-
- * camel/providers/mbox/camel-mbox-parser.c (initialize_buffer):
- use \0 to mark the end of the buffer.
- (read_next_buffer_chunk): ditto.
- (read_header): test the presence of a \0 instead of
- reading the eof field
- (read_message_begining): idem.
- (camel_mbox_parse_file): idem.
- Remove the eof field from the parser
- structure.
- (read_next_buffer_chunk): removed some nasty bugs
- again.
-
-
-2000-01-21 Federico Mena Quintero <federico@helixcode.com>
-
- * libversit/vcc.y: Removed the VFS crap; my mistake, it should not
- go here.
-
- * configure.in: Added yacc requirements for libversit.
-
-2000-01-21 Matt Loper <matt@helixcode.com>
-
- * camel/camel-formatter.c (camel_formatter_make_html): added a
- CamelMimeMessage as a param to this function, and removed it as a
- member of the object.
-
-2000-01-21 Federico Mena Quintero <federico@helixcode.com>
-
- * configure.in (AC_OUTPUT): Added libversit/Makefile and
- calendar/Makefile.
-
- * Makefile.am (SUBDIRS): Added libversit and calendar.
-
-2000-01-20 bertrand <bertrand@helixcode.com>
-
- * camel/providers/mbox/camel-mbox-parser.c (camel_mbox_parse_file):
- compute and return the file size.
-
-
-2000-01-20 Matt Loper <matt@helixcode.com>
-
- * camel/camel-formatter.c, camel/camel-formatter.h: New
- files. You'll be able to use a CamelFormatter to get
- html-formatted versions of a CamelMimeMessage.
-
-2000-01-20 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text-event-processor-types.h: Changed some line
- spacing.
-
- * widgets/test-reflow.c: Connected to the resize signal of the
- reflow.
-
- * widgets/e-minicard.c: Made width argument set function only
- update if width is different.
-
- * widgets/e-reflow.h, widgets/e-reflow.c: Added draggable column dividers.
-
- * addressbook/contact-editor/test-editor.c: Open two dialogs for
- more interesting testing.
-
- * addressbook/contact-editor/e-contact-editor.h,
- addressbook/contact-editor/e-contact-editor.c: Modified to use
- glade. Added menus to change which phone/address/email entries to
- view. Added images to the dialog.
-
- * addressbook/contact-editor/e-contact-editor-strings.h,
- addressbook/contact-editor/contact-editor.glade: Glade files for
- the contact editor dialog.
-
- * addressbook/contact-editor/Makefile.am: Added images and added
- glade stuff.
-
- * addressbook/contact-editor/arrow.png,
- addressbook/contact-editor/briefcase.png,
- addressbook/contact-editor/netfreebusy.png,
- addressbook/contact-editor/netmeeting.png: Image files for the
- contact editor dialog.
-
-2000-01-19 bertrand <bertrand@helixcode.com>
-
- * camel/providers/mbox/camel-mbox-folder.c (_get_message_count):
- implemented.
-
- * camel/providers/mbox/camel-mbox-summary.c (camel_mbox_save_summary):
- (camel_mbox_load_summary): save/load the next uid.
-
- * camel/providers/mbox/camel-mbox-parser.c (camel_mbox_parse_file):
- Compute the next available uid.
- * camel/providers/mbox/camel-mbox-folder.c (_create):
- (_check_get_or_maybe_generate_summary_file):
- Set and use the next_uid field properly.
- * camel/providers/mbox/camel-mbox-summary.h: added
- an extra field to store the next available uid.
-
- * camel/providers/mbox/camel-mbox-folder.c
- (_check_get_or_maybe_generate_summary_file):
- routine called when the folder is opened.
- Reads or creates the summary file.
- (_create): initialize the internal summary
- structure.
- (_close): save the summary file on closing.
- (_init_with_store): initialize mbox specific
- folder members.
-
-2000-01-18 bertrand <bertrand@helixcode.com>
-
- * tests/test9.c:
- tests for summary and parsing process of mbox files.
-
- * camel/providers/mbox/camel-mbox-parser.c (camel_mbox_parse_file): do
- not use case insensitive comp to detect message separators. Kill
- some nasty bugs in netscape file parsing,
-
- * camel/providers/mbox/camel-mbox-utils.c (parsed_information_to_mbox_summary):
- don't use g_array_append but write directly inside the
- array data instead. Better performance and bug fix.
-
- * camel/providers/mbox/camel-mbox-summary.c (camel_mbox_load_summary):
- fix the name and bugs.
-
- * camel/camel-folder-summary.h: update the class
- method definition to match the public defs.
-
- * camel/providers/mbox/camel-mbox-summary.c (camel_mbox_save_summary):
- (mbox_load_summary): summary file read/write routines.
-
- * camel/providers/mbox/camel-mbox-utils.c (parsed_information_to_mbox_summary):
- routine to construct the summary after the mbox
- file has been parsed and the x-evolution fields
- inserted.
-
-2000-01-17 bertrand <bertrand@helixcode.com>
-
- * camel/providers/mbox/camel-mbox-utils.c (camel_mbox_write_xev):
- dont use the x_evolution field but rather the uid to
- determine the presence of "X-Evolution" in the mail.
-
- * camel/providers/mbox/camel-mbox-parser.c (camel_mbox_parse_file):
- parse the status and uid values if the x-evolution
- has been found.
-
- * camel/providers/mbox/camel-mbox-utils.c (camel_mbox_xev_parse_header_content):
- return the parsed status field correctly.
-
- * camel/providers/mbox/camel-mbox-utils.h:
- fixed bad prototype.
-
- * camel/providers/mbox/camel-mbox-parser.c (camel_mbox_parse_file):
- parse and store the "To:" header.
-
- * camel/providers/mbox/camel-mbox-parser.h:
- added a "to" field
-
- * camel/camel-folder-summary.c:
- create the arrays here.
-
- * camel/camel-folder-summary.h: the list of
- summary information is no longer a GList but
- rather a GArray.
-
-2000-01-17 Chrsitopher James Lahey <clahey@helixcode.com>
-
- * head.png, phone.png, email.png, web.png, snailmail.png: Images
- for e-contact-editor.c.
-
- * addressbook/contact-editor/text-editor.c: Test program
- for contact editor widget.
-
- * addressbook/contact-editor/e-contact-editor.c,
- addressbook/contact-editor/e-contact-editor.h: Contact editor
- widget files.
-
- * addressbook/contact-editor/.cvsignore,
- addressbook/contact-editor/Makefile.am: New directory for contact
- editor files.
-
- * addressbook/.cvsignore, addressbook/Makefile.am: New directory
- for addressbook files.
-
- * widgets/.cvsignore: Added reflow-test.
-
- * Makefile.am (SUBDIRS): Added addressbook subdirectory.
-
- * configure.in, widgets/Makefile.am: Removed widgets/toolbar from
- SUBDIRS since the lack of content was preventing it from
- compiling.
-
- * widgets/e-text.c, widgets/e-text.h: Fixed a crashing bug.
-
-2000-01-17 bertrand <bertrand@helixcode.com>
-
- * tests/test9.c (main): test for the mbox utils.
-
-2000-01-17 Federico Mena Quintero <federico@helixcode.com>
-
- * configure.in: Add the gnomecanvaspixbuf argument to gnome-config
- invocations.
-
-2000-01-17 bertrand <bertrand@helixcode.com>
-
- * camel/providers/mbox/camel-mbox-utils.c (camel_mbox_write_xev):
- (copy_file_chunk):
- (camel_mbox_xev_write_header_content):
- (string_to_flag):
- (flag_to_string):
- (string_to_uid):
- (uid_to_string):
- A bunch of new funcs to handle x-evolution
- private header field.
- (copy_file_chunk): fixed a nasty bug.
- (camel_mbox_write_xev): create the copy file descriptor
- with the proper arguments. Exceptions implememnted.
- (camel_mbox_write_xev): changed the way bytes are counted.
- No more uses the message size cause it did not take into
- account the message separators characters.
- (camel_mbox_write_xev): hopefully fixed the last bugs.
- works ok now.
-
-
-2000-01-15 bertrand <bertrand@helixcode.com>
-
- * camel/providers/mbox/camel-mbox-parser.c
- (camel_mbox_parse_file):
- store the end of headers position.
-
- * camel/providers/mbox/camel-mbox-parser.h:
- added the end_of_header_position to locate the
- begining of the mail body.
-
-
- * camel/providers/mbox/camel-mbox-utils.c (uid_to_string):
- (string_to_uid):
- (flag_to_string):
- (string_to_flag):
- new functions to handle uids and
- flags in the X-Evolution header.
- (camel_mbox_xev_parse_header_content):
- new function to parse an X-Evolution
- header.
- (camel_mbox_xev_write_header_content):
- new function to write the X-Evolution
- header.
-
-2000-01-13 bertrand <bertrand@helixcode.com>
-
- * camel/providers/mbox/camel-mbox-parser.c (read_next_buffer_chunk):
- eof is true when no more chars are available, not
- when we've read the entire file.
- (initialize_buffer): ditto.
- (read_message_begining): documented.
- (read_header): ditto.
- (new_message_detected): ditto.
- (advance_n_chars): ditto.
- (goto_next_char): ditto.
- (read_next_buffer_chunk): ditto.
- (initialize_buffer): ditto.
- (parser_free): ditto.
- (new_parser): ditto.
-
-2000-01-12 <clahey@galapagos.helixcode.com>
-
- * widgets/e-text-event-processor-types.h,
- widgets/e-text-event-processor-emacs-like.c, widgets/e-text.c,
- widgets/e-text.h: Added selection and clipboard support. Added up
- and down arrow keys. Fixed choice of font colors for the
- selection to be based on the current style.
-
- * widgets/e-minicard.c: Caused a click to grab the focus. Changed
- the fake information added.
-
- * widgets/e-minicard-label.c: Forward mouse events to the field
- EText item.
-
-2000-01-13 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-canvas-utils.c, widgets/e-canvas-utils.h:
- e_canvas_item_move_absolute is just a helper function not supplied
- by the gnome_canvas.[ch] I put it here so that multiple items can
- use it.
-
- * widgets/e-reflow.c, widgets/e-reflow.h: This item contains a
- number of other items and places them into multiple columns. The
- items contained must support a number of arguments and signals to
- allow the reflow to interact with them.
-
- * widgets/test-reflow.c: This is a test program for e-reflow.
-
- * widgets/e-text.c, widgets/e-text.h: Added properly drawn
- selected text. Added some preliminary code for X selection
- handling and cut & paste.
-
- * widgets/e-minicard.c, widgets/e-minicard.h: Added ARG_HAS_FOCUS
- handling. Made label display random for more interesting tests of
- multiple cards. Tweaked sizing information for better display.
-
- * widgets/e-minicard-label.c, widgets/e-minicard-label.h: Added
- ARG_HAS_FOCUS handling.
-
- * widgets/Makefile.am: Added the reflow test and reflow files.
-
-2000-01-12 bertrand <bertrand@helixcode.com>
-
- * camel/providers/mbox/camel-mbox-parser.h (camel_mbox_parse_file):
- Added the prototype of camel_mbox_parse_file.
-
- * camel/providers/mbox/camel-mbox-parser.c (camel_mbox_parse_file):
- updated in-line documentation.
-
- * tests/Makefile.am (noinst_PROGRAMS):
- remove non updated tests from the build
- process.
-
- * corrected a bunch of bugs
-
- * camel/providers/mbox/camel-mbox-parser.c
- (camel_mbox_parse_file):
- parser the subject and date.
-
-
- * camel/providers/mbox/camel-mbox-parser.c
- (camel_mbox_parse_file): added the ability to
- follow the parsing progression.
-
- * camel/providers/mbox/camel-mbox-parser.h:
- parse the x-evolution field.
-
- * camel/Makefile.am (libcamel_la_SOURCES):
- disabled gmime-rfc2047 as it depends on libunicode
- and is not used for the moment.
-
-2000-01-12 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-minicard.c, widgets/e-minicard.h: Added a resize
- signal for when the card changes height. Made it so that when you
- press tab inside of a field, it goes to the next field.
-
- * widgets/e-minicard-label.c, widgets/e-minicard-label.h: Added a
- resize signal for when the label changes height.
-
- * widgets/e-text.c, widgets/e-text.h: Added a resize signal for
- multiple lines. Added scrolling based on cursor position.
-
- * widgets/Makefile.am: Removed an extraneous build target.
-
-2000-01-11 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/e-text-event-processor-emacs-like.c: Blocked the tab key
- from getting inserted into the buffer since the renderer doesn't
- know what a tab is.
-
- * widgets/e-text.c, widgets/e-text.h: Fixed a memory leak. Added
- a blinking cursor and scrolling for the text item.
-
-2000-01-11 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/test-minicard.c: Removed some code which got in the way
- of testing properly.
-
- * widgets/e-minicard-label.c (e_minicard_label_realize): Made the
- field text item editable.
-
- * widgets/Makefile.am: Added e-text-event-process*.[ch].
-
- * widgets/e-text.c, widgets/e-text.h: Changed these to support
- editing.
-
- * widgets/e-text-event-processor.c,
- widgets/e-text-event-processor.h,
- widgets/e-text-event-processor-types.h,
- widgets/e-text-event-processor-emacs-like.c,
- widgets/e-text-event-processor-emacs-like.h: These are a new pair
- of classes which handle all events from the text item and convert
- them into commands.
-
-
-2000-01-10 Christopher James Lahey <clahey@helixcode.com>
-
- * widgets/Makefile.am: Added minicard and text stuff.
-
- * widgets/e-minicard.c, widgets/e-minicard.h,
- widgets/e-minicard-label.c, widgets/e-minicard-label.h: Added
- canvas items for the minicard view in the contact manager.
-
- * widgets/test-minicard.c, widgets/test-minicard-label.c: Tests
- for the minicard items.
-
- * widgets/e-text.h, widgets/e-text.c: New canvas item. Based on
- GnomeCanvasText. Adds ellipsis capabilities. Used in
- e-minicard*.[ch].
-
- * widgets/.cvsignore: Added minicard-test and minicard-label-test.
-
-2000-01-06 Miguel de Icaza <miguel@gnu.org>
-
- * configure.in: Add Bonobo detection, Bonobo flags for compilation
- for the components and the shell.
-
-2000-01-06 Elliot Lee <sopwith@redhat.com>
- * composer/Makefile.am, widgets/e-table/Makefile.am: Work with
- builddir != srcdir
-
-2000-01-05 Miguel de Icaza <miguel@gnu.org>
-
- * configure.in (EXTRA_GNOME_CFLAGS_THREADS,
- EXTRA_GNOME_LIBS_THREADS): New variables that hold the thread
- version of the compile/link lines.
-
-1999-11-20 Miguel de Icaza <miguel@gnu.org>
-
- * configure.in (PACKAGE): Raise warning level.
-
-2000-01-04 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/providers/mbox/camel-mbox-folder.c (_list_subfolders):
- in the io_error label does not return before the
- list has been freed.
-
-2000-01-03 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/providers/mbox/camel-mbox-folder.c (_list_subfolders):
- detects netscape ".sdb" folders as well as simple
- non-suffixed folders (as the ones used in pine).
-
-
- * camel/string-utils.c (string_prefix):
- finished implementation.
- (string_prefix): added a boolean flag to indicate if the
- suffix has been found. When the suffix does not match,
- return NULL.
-
-1999-12-26 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-exception.c (camel_exception_setv):
- new function. Allow printf-like description
- string constructions.
-
- * camel/camel-exception.h: cosmetic changes.
-
- * camel/providers/mbox/camel-mbox-store.h:
- * camel/providers/mbox/camel-mbox-store.c:
- * camel/providers/mbox/camel-mbox-folder.h:
- * camel/providers/mbox/camel-mbox-folder.c:
- More work on the mbox provider.
-
-
-1999-12-22 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/providers/mbox/camel-mbox-store.h:
- * camel/providers/mbox/camel-mbox-store.c:
- * camel/providers/mbox/camel-mbox-folder.h:
- * camel/providers/mbox/camel-mbox-folder.c:
- part of the mbox provider.
-
-1999-12-20 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-folder.c (_set_name):
- check that the folder is closed or raise an exception.
- (_set_name): unset the name fields as soon as possible,
- even if an exception is raised.
-
- * configure.in:
- build mbox provider Makefile
-
- * camel/Makefile.am (SUBDIRS):
- re-enable providers compilation
-
-1999-12-19 Damon Chaplin <damon@karuna.freeserve.co.uk>
-
- * configure.in (AC_OUTPUT): added widgets/meeting-time-sel/Makefile
-
-1999-12-19 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-folder-utils.c: include camel-log.h
- to avoid unresolved symbols.
-
-1999-12-18 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-folder.c (camel_folder_get_summary):
- documented.
-
- * camel/camel-folder-pt-proxy.c (_append_message):
- updated to take the change on append into account.
-
- * camel/camel-folder.h:
- updated class def concerning append.
- * camel/camel-folder.c
- (camel_folder_append_message): documented.
- (camel_folder_append_message): don't return the
- message number. Use specific methods instead.
- (_append_message): idem.
-
- (_delete): use exception mechanism.
- (camel_folder_delete): idem.
- (_delete_messages): idem.
- (camel_folder_delete_messages): idem.
- (_get_parent_folder): idem.
- (camel_folder_get_parent_folder): idem.
- (_get_parent_store): idem.
- (_get_mode): idem.
- (camel_folder_get_parent_store): idem.
- (camel_folder_get_mode): idem.
- (_list_subfolders): idem.
- (camel_folder_list_subfolders): idem.
- (_expunge): idem.
- (camel_folder_expunge): idem.
- (_has_message_number_capability): idem.
- (camel_folder_has_message_number_capability): idem.
- (_get_message_by_number): idem.
- (camel_folder_get_message_by_number): idem.
- (camel_folder_get_message_count): idem.
- (_list_permanent_flags): idem.
- (camel_folder_list_permanent_flags): idem.
- (_copy_message_to): idem.
- (camel_folder_copy_message_to): idem.
- (camel_folder_has_summary_capability): idem.
- (camel_folder_get_summary): idem.
- (camel_folder_has_uid_capability): idem.
- (camel_folder_get_message_uid): idem.
- (_get_message_uid_by_number): idem.
- (camel_folder_get_message_uid_by_number): idem.
- (camel_folder_get_message_by_uid): idem.
- (camel_folder_get_uid_list): idem.
-
-1999-12-17 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-folder.c (_set_name):
- use exception mechanism.
- (camel_folder_set_name): idem.
- (camel_folder_set_full_name): idem.
- (_get_name): idem.
- (camel_folder_get_name): idem.
- (_get_full_name): idem.
- (camel_folder_get_full_name): idem.
- (_can_hold_folders): idem.
- (_can_hold_messages): idem.
- (_exists): idem.
- (camel_folder_exists): idem.
- (_is_open): idem.
- (_get_subfolder): idem.
- (camel_folder_get_subfolder): idem.
-
- * camel/camel-exception.c (camel_exception_clear):
- New function. Clear an exception.
- (camel_exception_get_id):
- New function.
- (camel_exception_get_description):
- New function.
-
- * camel/camel-folder.c (_set_name):
- Use the exception system. When the folder
- has no parent, don't set its full name
- field.
-
-
-1999-12-16 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-folder.c (camel_folder_expunge):
- (_expunge):
- * camel/camel-folder-pt-proxy.c (_expunge):
- changed the return value. Now returns the list
- of expunged messages
-
- * camel/camel-folder.c (_init_with_store):
- cleaned up. Use the exception system now.
- (_open): ditto.
- (camel_folder_open): ditto.
- (camel_folder_open_async): ditto.
- (_close): ditto.
- (camel_folder_close): ditto.
- (camel_folder_close_async): ditto.
-
- * camel/camel-exception.c (camel_exception_set):
- When no exception is given, do nothing, just
- return.
- (camel_exception_set): documented.
- (camel_exception_new): idem.
- (camel_exception_free): idem.
- (camel_exception_xfer): idem.
-
-
- * camel/camel-folder.c:
- * camel/camel-folder.h: more clean-ups.
- Removed message list related code.
- This was braindead design.
-
-
- * camel/camel-folder-utils.c (camel_aml_expunge_messages):
- implemented. The routines in this file will be
- called by providers to handle the list of
- message already standing in memory.
-
-1999-12-15 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-folder-utils.c:
- * camel/camel-folder-utils.h:
- New files, misc utilities for the
- folder providers. Includes active message
- list utilities.
-
-
- * camel/camel-folder.c (_has_message_number_capability):
- (camel_folder_has_message_number_capability):
- Added this to know if a folder provides
- number-based message access.
-
- * camel/camel-folder.c (_get_message_count):
- added warning when called directly.
- (_append_message): ditto
- (_open_async): ditto
- (_close_async): ditto
- (_delete_messages): ditto
- (_expunge): ditto
- (_get_message_by_number): ditto
- (_get_message_uid): ditto
- (_get_message_uid_by_number): ditto
- (_get_message_by_uid): ditto
- (_get_uid_list): ditto
-
-
- * camel/camel-folder-pt-proxy.c (_open_async):
- (_open):
- (_close_async):
- (_close):
- (camel_folder_pt_proxy_class_init):
- update
- (_get_message_by_number):
- Update to reflect changes in CamelFolder
-
- * camel/camel-folder.h:
- * camel/camel-folder.c (_get_subfolder):
- (camel_folder_get_subfolder):
- The CamelFolder::get_folder is renamed to
- get_subfolder as it is more intuitive.
-
- * camel/camel-folder.c (_get_message_by_number):
- (camel_folder_get_message_by_number):
- * camel/camel-folder.h
- (camel_folder_get_message_by_number):
- The get_message method is now named
- get_message_by_number for consistency
- with the _by_uid methods.
-
- * camel/camel-folder.[ch]:
- clean-ups.
-
-1999-12-13 Nat Friedman <nat@helixcode.com>
-
- * ebook/e-book.h: New file.
- * ebook/e-book.c: New file.
- * ebook/e-card.h: New file.
- * ebook/e-card-fields.h: New file.
- * ebook/e-commerce.h: New file. :-)
-
-1999-12-08 Ettore Perazzoli <ettore@gnu.org>
-
- * tests/test1.c (main): Removed the strdup()s, which are not
- deeded anymore.
-
- * camel/camel-mime-message.c (_set_subject): `subject' made const.
- (camel_mime_message_set_subject): Likewise.
- (_set_from): `from' made const.
- (camel_mime_message_set_from): Likewise.
- (_set_reply_to): Made `reply_to' const.
- (camel_mime_message_set_reply_to): Likewise.
- (_set_set_received_date): Made `received_date' const.
- (camel_mime_message_set_reply_to): Likewise.
- (_set_field): `value' made const. Also, strdup the string before
- assigning.
-
- * camel/camel-mime-message.h: Virtual methods changed to use const
- strings when setting header values.
-
-1999-11-17 Ettore Perazzoli <ettore@gnu.org>
-
- * composer/Makefile.am (EXTRA_DIST): Added `$(glade_DATA)'.
-
- * camel/Makefile.am (EXTRA_DIST): Added
- `$(libcamel_extra_sources)'.
- (libcamelinclude_HEADERS): Added `gmime-base64.h'.
-
-1999-11-17 Ettore Perazzoli <ettore@gnu.org>
-
- * camel/camel-mime-message.c (_write_to_stream): Removed extra ':'
- in the `Mime-Version' header.
-
- * tests/ui-tests/msg-composer-test.c: Removed.
-
- * Makefile.am (SUBDIRS): Added `composer'.
-
- * configure.in: Create `composer/Makefile'.
-
- * camel/camel-simple-data-wrapper-stream.c
- (camel_simple_data_wrapper_stream_construct): Updated accordingly.
- (camel_simple_data_wrapper_stream_new): Updated accordingly.
- * camel/camel-stream-data-wrapper.c
- (camel_stream_data_wrapper_construct): Updated accordingly.
-
- * camel/camel-data-wrapper.h: Replaced `IS_CAMEL...()' type check
- macro name with `CAMEL_IS...()'.
- * camel/camel-folder-pt-proxy.h: Likewise.
- * camel/camel-folder-summary.h: Likewise.
- * camel/camel-folder.h: Likewise.
- * camel/camel-medium.h: Likewise.
- * camel/camel-mime-body-part.h: Likewise.
- * camel/camel-mime-message.h: Likewise.
- * camel/camel-mime-part.h: Likewise.
- * camel/camel-multipart.h: Likewise.
- * camel/camel-service.h: Likewise.
- * camel/camel-session.h: Likewise.
- * camel/camel-simple-data-wrapper-stream.h: Likewise.
- * camel/camel-simple-data-wrapper.h: Likewise.
- * camel/camel-store.h: Likewise.
- * camel/camel-stream-buffered-fs.h: Likewise.
- * camel/camel-stream-data-wrapper.h: Likewise.
- * camel/camel-stream-fs.h: Likewise.
- * camel/camel-stream-mem.h: Likewise.
- * camel/camel-stream.h: Likewise.
-
- * tests/test1.c (main): Updated to match the `RECIPIENT_TYPE'
- changes.
-
- * camel/camel-mime-message.h: Changed `RECIPIENT_TYPE_TO',
- `RECIPIENT_TYPE_CC' and `RECIPIENT_TYPE_BCC' into
- `CAMEL_RECIPIENT_TYPE_TO', `CAMEL_RECIPIENT_TYPE_CC' and
- `CAMEL_RECIPIENT_TYPE_BCC', respectively.
-
-1999-11-17 Ettore Perazzoli <ettore@gnu.org>
-
- * camel/camel-mime-message.c (_write_to_stream): Write
- "Mime-Version: 1.0" to the stream.
-
- * tests/test1.c: If executed with a file name parameter, attach a
- file with with that name to the email without loading it into
- core, thus demonstrating usage of my latest changes.
-
- * camel/camel-mime-part.c (_set_encoding): Updated to use
- `CamelMimePartEncodingType'.
- (camel_mime_part_set_encoding): Likewise.
- (_get_encoding): Likewise.
- (camel_mime_part_get_encoding): Likewise.
- (_write_content_to_stream): Honour the `encoding' member.
- (_construct_from_stream): Made static.
- (camel_mime_part_encoding_to_string): New function.
- (_write_to_stream): Write the encoding string using it.
- (camel_mime_part_init): Set encoding to
- `CAMEL_MIME_PART_ENCODING_DEFAULT'.
- (_finalize): Don't free `encoding' anymore.
- (camel_mime_part_encoding_from_string): New function.
- (_parse_header_pair): Use it.
-
- * camel/camel-mime-part.h: New enum `CamelMimePartEncodingType'.
- Member `encoding' of `struct _CamelMimePart' changed from `gchar
- *' to `CamelMimePartEncodingType'. All the encoding-related
- methods changed to use this type instead of `gchar *'.
-
- * camel/gmime-base64.c (gmime_encode_base64): Got it to work.
-
- * camel/Makefile.am (libcamel_la_SOURCES): Compile
- `gmime-base64.c'.
-
- * camel/gmime-base64.h: New, previously missing, header.
-
- * camel/camel-stream-data-wrapper.c: New file implementing the
- `CamelStreamDataWrapper' class.
- * camel/camel-stream-data-wrapper.h: Corresponding header.
-
- * camel/camel-simple-data-wrapper.c: Implemented the `get_stream'
- virtual method.
- (_get_stream): New function implementing the method.
- (camel_simple_data_wrapper_class_init): Install it in the class
- struct.
- (camel_simple_data_wrapper_init): New function initializing the
- `stream' member to NULL,
- (camel_simple_data_wrapper_class_init): Set it as the
- GtkObjectInitFunc.
-
- * camel/camel-simple-data-wrapper.h: New member `stream' in
- `struct _CamelSimpleDataWrapper'.
-
- * camel/camel-simple-data-wrapper-stream.c: New file implementing
- the `CamelSimpleDataWrapperStream' class.
- * camel/camel-simple-data-wrapper-stream.h: Corresponding header.
-
- * camel/camel-data-wrapper.c (camel_data_wrapper_get_stream): New
- function.
- (_get_stream): New private function, just returning NULL.
- (camel_data_wrapper_class_init): Install it as the default
- `get_stream' virtual method.
-
- * camel/camel-data-wrapper.h: New virtual method `get_stream' in
- `CamelDataWrapperClass'.
- (camel_data_wrapper_get_stream): New function prototype.
-
-1999-11-05 Ettore Perazzoli <ettore@gnu.org>
-
- * tests/ui-tests/msg-composer-test.c: New file for testing the
- `EMsgComposer' widget.
- * tests/ui-tests/Makefile.am (noinst_PROGRAMS): Compile it. Do
- not compile `store_listing' for now because it's currently broken.
- (INCLUDES): Added the `widgets' source directory to the include
- path list.
- (LDADD): Removed the MH dependency; link with
- `libevolutionwidgets.la' from the `widgets' directory.
-
- * configure.in: Create `widgets/Makefile'.
-
- * camel/gmime-rfc2047.c (rfc2047_clean): Removed C++-like comment.
- * camel/camel-folder.c (camel_folder_get_message_uid_by_number):
- Likewise.
- * camel/gmime-content-field.c (gmime_content_field_get_parameter):
- Likewise.
- * camel/camel.c (camel_init): Likewise.
- * camel/camel-provider.c (camel_provider_register): Likewise.
- * camel/camel-multipart.c (_construct_from_stream): Likewise.
- * camel/camel-mime-part.c (_write_content_to_stream): Likewise.
- * camel/camel-medium.c (camel_medium_class_init): Likewise.
-
- * camel/camel-data-wrapper.h (camel_data_wrapper_get_type): Make
- prototype non-static.
-
- * camel/Makefile.am (libcamelinclude_HEADERS): Move
- `camel-exception-list.def' from `EXTRA_DIST' to
- `libcamelinclude_HEADERS'.
-
- * camel/camel.h: Do not #include <config.h>.
- * camel/data-wrapper-repository.h: Likewise.
-
-1999-11-05 Ettore Perazzoli <ettore@gnu.org>
-
- * tests/Makefile.am (INCLUDES): Add `-I$(top_srcdir)'.
-
-1999-10-13 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-folder.c (camel_folder_close): the
- folder->close method is now asynchronous.
-
- * camel/camel-folder-pt-proxy.c (_folder_open_cb):
- (_open):
- (_folder_open_cb):
- (_open):
- open/close method implemented in the thread proxy
- folder. More to come.
-
- * camel/camel-exception.c (camel_exception_xfer):
- new utility func.
-
- * camel/camel-marshal-utils.c: some new marshallers
-
- * camel/camel-folder-pt-proxy.c: Some explanations
- on the thread proxy system.
-
-1999-10-11 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-marshal-utils.c:
- camel/camel-marshal-utils.h:
- Handles operation marshalling.
-
- * camel/camel-thread-proxy.c:
- camel/camel-thread-proxy.h:
- new files. Generic proxy system.
-
- * camel/camel-folder-pt-proxy.c
- moved all proxy related code in dedicated files.
-
- (camel_folder_pt_proxy_init):
- removed proxy initialisation code
- (_finalize):
- removed proxy finalization code
-
-
- * camel/camel-exception.c
- (camel_exception_new):
- (camel_exception_set):
- (camel_exception_free):
- New funcs.
-
-1999-09-21 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-folder-pt-proxy.c (_async_close):
- implemented.
-
- * configure.in:
- Check pthreads.
-
- * camel/Makefile.am:
- camel-folder-pt-proxy.c is only compiled
- when pthreads are available.
-
- * camel/camel-folder-pt-proxy.c:
- Signal proxying implemenatation.
- (_signal_marshaller_server_side):
- (_signal_marshaller_client_side):
- (_init_signals_proxy):
- Code not is tested and has to be best
- explained as it uses threads conditions and
- gtk signal system.
- (_thread_notification_catch): notify pending signals
- as well as thread availability.
-
-1999-09-20 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-folder-pt-proxy.c (_op_exec_or_plan_for_exec):
- completed
-
- Binch of new funcs:
- (_maybe_run_next_op):
- Called by the watch notification when
- a threaded op is completed
- (_thread_notification_catch):
- notification watch call back
- (_init_notify_system):
- set up the notification channel
- (notify_availability):
- called by threads before completion.
-
-1999-09-18 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-folder-pt-proxy.c (_op_exec_or_plan_for_exec):
- new func. Try to exec an operation in a thread
- or queue it if a thread is already busy.
-
- * camel/camel-op-queue.c (camel_op_queue_set_service_availability):
- (camel_op_queue_get_service_availability):
- new funcs.
-
- * camel/camel-op-queue.c (camel_op_new):
- (camel_op_free):
- new funcs. Uses glib mem chunks.
-
-
-1999-09-17 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-folder-pt-proxy.c (_init_with_store):
- added notify io_channel.
-
- * camel/camel-op-queue.h:
- * camel/camel-op-queue.c:
- New object. Operation queue. Meant to be used in
- non-blocking proxy objects.
- (camel_op_queue_run_next_op): new func.
- run the next operation.
-
-1999-09-14 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/Makefile.am (libcamel_la_SOURCES):
- added camel-folder-pt-proxy.[ch] to the build
- process.
-
- * camel/camel-folder-pt-proxy.c (_init_with_store):
- started implementation of the pthread-based
- folder proxy.
-
-
-1999-09-08 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/providers/MH/mh-summary.c
- (mh_load_summary):
- (mh_save_summary):
- (mh_create_summary):
- implemented summary (files) for MH folders.
-
- * camel/providers/MH/camel-mh-folder.c
- (_get_message_by_uid): implemented.
- (camel_mh_folder_class_init):
- (_get_message_uid): implemented
-
- * camel/camel-folder.c (camel_folder_has_uid_capability):
- (camel_folder_get_message_uid):
- (camel_folder_get_message_uid_by_number):
- (camel_folder_get_message_by_uid):
- (camel_folder_get_uid_list):
- Documented UID methods.
- (camel_folder_get_message_uid_by_number):
- const'ified uid.
- (camel_folder_get_message_by_uid): idem
- removed stupid camel_folder_get_message_uid_by_number
- method.
-
- * tests/ui-tests/store_listing.c (close_all):
- close all open folders and stores. (necessary
- for UID list saving ).
-
- * camel/providers/MH/mh-uid.c (mh_generate_uid_list):
- fix: store UID list in CamelMHFolder object.
-
- * camel/providers/MH/camel-mh-folder.c (_open):
- read or create UID list.
- (_close): save UID list.
-
-1999-09-07 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/md5-utils.c (md5_get_digest_from_file):
- correct parameter decl (const)
-
- * camel/md5-utils.h: typo.
-
- * camel/providers/MH/mh-uid.c
- More work on UID stuff for MH.
- (mh_save_uid_list):
- (mh_load_uid_list):
- (mh_generate_uid_list):
- new funcs. Manage on-disk uid list.
-
- * camel/providers/MH/mh-utils.c (mh_is_a_message_file):
- Util routines live here now.
-
- * camel/md5-utils.c
- Documented all funcs.
-
- (md5_get_digest_from_stream):
- correct typo.
- (md5_get_digest_from_file):
- same typo corrected.
-
-
- * camel/md5-utils.h :
- raw routines are declared public now.
- Md5 use has to be versatile.
-
- * camel/providers/MH/mh-uid.c (mh_uid_get_for_file):
- new func. Returns an UID for an MH message.
-
-1999-09-06 bertrand <Bertrand.Guiheneuf@aful.org>
-
-
- * camel/md5-utils.h:
- * camel/md5-utils.c:
- changed names to follow camel style.
- (md5_get_digest_from_stream):
- new methods.
- (md5_get_digest_from_file):
- new function : get file md5 signature.
- To be used in providers code.
-
- * camel/md5-utils.c: imported md5 coding
- routine from rpm. Compiles.
-
-
-1999-09-05 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-folder.c (camel_folder_has_uid_capability):
- (camel_folder_get_message_uid):
- (camel_folder_get_message_uid_by_number):
- (camel_folder_get_message_by_uid):
- (camel_folder_get_uid_list):
- Basic UID framework.
-
- * devel-docs/misc/ref_and_id_proposition.txt:
- New revision. Some fixes.
-
- * camel/camel-folder.h (struct _CamelFolder): added
- uid_capability field.
-
-
- * camel/camel-folder.c (camel_folder_close): publicized
- the close method.
-
- * tests/ui-tests/store_listing.c (show_folder_messages):
- use folder summary instead of opening all messages.
- (show_folder_messages): re-enabled old CPU/Mem consumming
- method. Useful for pop3 for instance.
-
- * camel/providers/MH/camel-mh-folder.c (_create_summary):
- basic and highly non-efficient summary implementation.
- Should be seen as a proof of concept only.
- subfolder summary still has to be implemented.
-
- * camel/providers/maildir/camel-maildir-folder.c (_init_with_store):
- hasn't summary for the moment.
- * camel/providers/maildir/camel-maildir-folder.c
- cosmetic changes.
-
-
-1999-09-04 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/providers/MH/camel-mh-folder.c (_create_summary):
- started summary implementation.
- (_open): correct use of open.
-
- * camel/camel-folder.c (camel_folder_get_summary):
- get folder associated summary object.
-
- * camel/Makefile.am:
- added summary files build
-
- * camel/camel-folder-summary.[ch]:
- basic summary framework
-
-1999-09-03 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * devel-docs/camel/Makefile.am:
- sgml doc has camel-recipient now.
-
- * camel/camel-recipient.c (camel_recipient_foreach_recipient_type):
- added in-line documentation.
-
-1999-09-02 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/providers/maildir: Added (experimental) maildir
- provider written by Jukka Zitting <hukka@greywolves.org>
-
- * camel/providers/Makefile.am (SUBDIRS): build maildir
- provider.
-
- * camel/camel-provider.c (camel_provider_get_for_protocol):
- bug fix. patch from Jukka Zitting <hukka@greywolves.org>
-
- * camel/camel-mime-message.c (_write_one_recipient_to_stream):
- changed decl to fit CRLFunc.
- (_write_recipients_to_stream):
- calls camel_recipient_foreach_recipient_type now.
-
- * camel/camel-recipient.c (camel_recipient_foreach_recipient_type):
- new convinience function. Iterate over all recipient types.
-
- * camel/gmime-utils.c (gmime_write_header_table_to_stream):
- s/write_header_table_to_stream/gmime_write_header_table_to_stream/
- (gmime_write_header_with_glist_to_stream):
- s/write_header_with_glist_to_stream/gmime_write_header_with_glist_to_stream/
-
-1999-09-01 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-mime-message.c (_finalize):
- (_add_recipient):
- (_remove_recipient):
- (_get_recipients): now use CamelRecipientTable
-
- * camel/gmime-content-field.c:
- (gmime_content_field_unref): test if object
- to free is non void.
-
- * camel/camel-folder.c (_finalize):
- (_set_name):
- * camel/camel-mime-part.c (_finalize):
- (_set_description):
- (_set_disposition):
- * camel/camel-service.c (_finalize):
- * camel/camel-stream-fs.c (_finalize):
- * camel/gmime-content-field.c:
- (gmime_content_field_construct_from_string):
-
- * camel/url-util.c (g_url_free):
-
- When using g_free (obj) don't test if obj != NULL
- g_free () already do that. Thanks to elerium for
- the feedback.
-
-1999-08-30 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-recipient.c (camel_recipient_get):
- (camel_recipient_remove):
- (camel_recipient_add):
- new func. More work on new independant recipient code.
-
-1999-08-29 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * MAINTAINERS: updated my e-mail address.
-
-1999-08-28 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-mime-part.c (camel_mime_part_set_text):
- text parameter declared const
-
- * camel/camel-mime-part-utils.c (camel_mime_part_store_stream_in_buffer):
- actually test correctly nb_bytes_read_chunk is >0
-
- * camel/gstring-util.c:
- * camel/gmime-content-field.c:
- * camel/providers/MH/camel-mh-folder.c:
- * camel/camel-stream-fs.c:
- include string.h
-
- * camel/camel-stream-mem.c (_write): return
- the numver of written bytes.
-
- * camel/camel-stream-buffered-fs.c (_eos):
- return sthg
-
- * camel/camel-stream.c (default_camel_seek):
- return something.
-
-1999-08-26 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-mime-part.c (_get_content_object):
- contruct the content from the buffer before calling
- CamelMedium implementation.
- (_construct_from_stream): Do not construct the content
- by default, just store the content bytes in
- a temporary buffer. Content will be constructed only
- at caller request (when calling CamelMedium::get_content_object)
- Providers with better access to the messages (mbox/MH ...)
- will have to provider lighter implementation, that is
- shall not read content at all unless the caller asks
- for it (again with get_content).
-
- * camel/camel-mime-part-utils.c: new file, groups
- mime-part related utils. Meant to be used by providers
- subclassing MimeMessage.
- (camel_mime_part_construct_headers_from_stream):
- (camel_mime_part_construct_content_from_stream):
- no more useless temporary hash table.
-
- * camel/camel-mime-part.c (_construct_from_stream): calls
- mime-part-utils functions now.
-
- * camel/gmime-utils.c (_store_header_pair_from_string):
- do not use hash table to store header, use an array instead.
-
-1999-08-25 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-mime-part.c: now descend from CamelMedium.
-
- * tests/test1.c (main): all headers must be strdup'ed
- (main): unref created objects
-
- * camel/camel-medium.c (_set_content_object):
- (_get_content_object): these methods are
- in CamelMedium now.
-
-1999-08-24 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-medium.c (camel_medium_class_init):
- new class. Will handle all sort of information media
- (Mime mail messages, Lotus Notes mail messages,
- postit notes, faxes, who knows .... :)
- CamelMimePart will inherit from it.
-
- * camel/camel-mime-part.c (_set_disposition):
- (_set_description):
- description and disposition parameters are now const.
-
-
- * camel/gmime-content-field.c (gmime_content_field_free): added
- assertion code.
-
- * camel/providers/MH/camel-mh-folder.c (_get_message):
- uses buffered stream.
-
- * camel/camel-stream-buffered-fs.c:
- new stream to accelerate file ops.
-
-1999-08-20 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-stream-fs.c (camel_stream_fs_new_with_name):
- name parameter is const. This fixes a bug in destroy ()
-
-1999-08-18 Robert Brady <rwb197@ecs.soton.ac.uk>
-
- * camel/gmime-rfc2047.c: more work on encoder.
-
-1999-08-17 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-stream.c (camel_stream_read):
- return the number of bytes read.
- How can this have ever worked ?
- (camel_stream_flush): don't return anything.
-
- * camel/gmime-utils.c (get_header_table_from_stream):
- mem leak fixed.
-
-1999-08-16 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * tests/ui-tests/store_listing.c:
- Now has a popup menu on mailbox tree to allow
- easier tests. Implemented the copy stuff.
- Works well for the MH provider :)))
-
- * camel/providers/MH/camel-mh-folder.c (_copy_message_to):
- Test MH provider fast copy implemented.
-
-
-1999-08-15 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-folder.c (camel_folder_expunge):
- moved the active list readjustment code here.
- Much saner, providers won't have to worry about
- that.
- (_copy_message_to): new method.
-
- * camel/providers/MH/camel-mh-folder.c (_expunge):
- no more active list readjustment stuff.
-
- * camel/camel-folder.h: the expunge virtual no more
- returns a list of expunged messages. Now providers
- only have to set the expunge flag on the expunged
- messages.
-
- * camel/camel-folder.c (camel_folder_get_message):
- moved the caching code here. Finally, I don't want
- providers to crash the libs with a bad message cache
- implementation.
- (_close): do not call the CamelFolder virtual expunge
- method directly, use camel_folder_expunge() instead.
- (camel_folder_expunge): added the want_list param.
- The client can decide if it wants the expunged message
- list or not. If yes, it'll have to unref the messages
- itself.
-
-1999-08-14 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * tests/ui-tests/store_listing.c (delete_selected_messages):
- (expunge_selected_folders):
- Implemented deletion/expunge mechanism.
-
- * camel/camel-folder.c (_get_message):
- Added some debug info.
-
- * camel/providers/MH/camel-mh-folder.c (_expunge):
- implemented and tested.
-
- * camel/camel-mime-message.c (_set_flag):
- changed the old braindead implementation.
- boolean are inserted in the flag hash
- table casted as gpointers.
-
-
- * camel/camel-mime-message.c: indentation fix
-
-
-1999-08-13 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-folder.c (_get_message): default implementation
- to be called first by providers methods. It looks in the
- folder message list (in memory) to see if the message has
- not already been retrieved, and in this case, returns
- the same CamelMimeMessage object
-
- * camel/providers/MH/camel-mh-folder.c (_get_message): set
- message->message_number correctly.
-
- * camel/camel-folder.h (struct _CamelFolder):
- New field (message_list) which will hold a
- reference on each message obtained by the folder,
- which is necessary in order for the caching procedure
- to work (Getting the same message from a folder twice
- will return the same CamelMimeMessage object).
-
- * camel/camel-folder.c (camel_folder_get_message):
- When the store retreives a message put it in its
- message list.
- (_finalize): free message list.
-
- * ChangeLog: fix typo (parmanent)
-
- * camel/camel-folder.c (_get_permanent_flag_list):
- (camel_folder_get_permanent_flag_list):
- new method, returns the list of permanent
- flags supported by the folder.
-
- * camel/camel-mime-message.c (_get_flag_list):
- (camel_mime_message_get_flag_list): new method,
- return the list of flag name used by this message.
-
- * camel/hash-table-utils.c (g_strcase_equal):
- (g_strcase_hash): those two func go here now.
-
- * camel/hash_table_utils.c (hash_table_generic_free):
- free a (gpointer, gpointer) hash table pair.
-
- * camel/camel-mime-message.c (camel_mime_message_init): use
- case insensitive hash table functions.
- (_set_flag):
- (camel_mime_message_set_flag):
- (_get_flag):
- (camel_mime_message_get_flag):
- Use const for flag name, they are now
- duplicated.
-
-1999-08-12 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * tests/ui-tests/store_listing.c (show_folder_messages):
- remove stupid debug code.
- (add_mail_store): use camel_session_get_store instead
- of creating MH store directly.
- (main): load MH provider.
-
- * camel/camel-provider.c (camel_provider_register_as_module):
- register new provider.
- (camel_provider_get_for_protocol):
- Now, implementation is correct.
-
- * camel/camel-store.c (_finalize):
- * camel/camel-store.h (struct _CamelStore):
- further disabled url_name field use.
- URL will be generated dynamically.
-
- * camel/camel-session.c (camel_session_get_store_for_protocol):
- compilation and runtime fixes.
-
- * camel/providers/MH/camel-mh-store.c (_init):
- synced with CamelStore.
-
- * camel/camel-store.c (_init):
- in CamelStore::init, url_name is now const.
- disabled url_name copy.
-
- * camel/camel-session.c (camel_session_get_store):
- new function: returns a store for an URL.
- (camel_session_get_store_for_protocol):
- new functionc: returns a store for a given
- store protocol (as IMAP/POP/MH ...)
- * camel/string-utils.c (g_strcase_equal):
- (g_strcase_hash): case insensitive hash table
- funcs.
-
- * camel/camel-session.c (camel_session_init): hash table
- keys are case insensitive.
-
- * camel/camel-provider.c (camel_provider_get_for_protocol):
- new function, returns the last registered
- provider for a protocol.
-
- * camel/providers/MH/camel-mh-provider.c:
- new file. MH provider registration stuff.
-
- * camel/camel-provider.c (camel_provider_register_as_module):
- load a provider from a shared object (plugin).
- (camel_provider_register): register a provider
- "by hand". Used for statically defined providers.
-
- * tests/test7.c: new test.
- tests providers loading framework.
-
-1999-08-11
-
- * camel/camel-service.c (_finalize):
- * camel/camel-stream-fs.c (_finalize):
- (_destroy): close file descriptor.
- * camel/camel-stream-mem.c (_finalize):
- * camel/camel-store.c (_finalize):
- * camel/camel-folder.c (_finalize):
- * camel/camel-multipart.c (_finalize):
- * camel/camel-simple-data-wrapper.c (_finalize):
- * camel/camel-mime-part.c (_finalize):
- implemented destructors.
-
-
- * camel/gmime-content-field.c (gmime_content_field_ref):
- (gmime_content_field_unref):
- New reference mechanism for GMimeContentField objects.
-
- * camel/camel-data-wrapper.c (_finalize):
- Started implementing destructors.
-
- * camel/camel-mime-part.c (_construct_from_stream):
- * camel/gmime-content-field.c (gmime_content_field_write_to_stream):
- * camel/camel-multipart.c (_construct_from_stream):
- removed forgotten anarchic traces.
-
-1999-08-10 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * tests/ui-tests/store_listing.c:
- * tests/ui-tests/store_listing.glade:
- Quick and (very) dirty hack to test Camel more
- easily.
-
- * camel/camel-folder.c (camel_folder_append_message):
- new method.
-
-1999-08-09 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * devel-docs/misc/ref_and_id_proposition.txt:
- new file. Document message UID and vfolder
- implementation.
-
-1999-08-08 Robert Brady <rwb197@ecs.soton.ac.uk>
-
- * camel/gmime-rfc2047.c: more advanced RFC2047 encoder started.
-
-1999-08-08 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/providers/MH/camel-mh-folder.c (_get_message):
- fix. In MH, message number is not related to
- message position in folder.
-
- * camel/providers/MH/camel-mh-folder.c (_is_a_message_file):
- util func.
- (_get_message_count): implemented.
-
-1999-08-06 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * devel-docs/camel/:
- updated some autogen doc stuff.
- Still don't understand warnings :(
-
- * camel/camel-data-wrapper.c:
- * camel/providers/MH/camel-mh-store.c:
- * camel/url-util.c:
- * camel/gmime-content-field.c:
- * camel/camel-store.c:
- various inline doc corrections.
-
- * camel/camel-folder.c (get_message_count):
- new method. Returns the number of message
- in the folder.
-
-
-
-1999-08-06 Robert Brady <rwb197@ecs.soton.ac.uk>
-
- * tests/test6.c: encoder test.
-
- * camel/gmime-rfc2047.c: Fixed decoder bug : sequence
- ?= is not always the terminator for an encoded-string.
-
-
-1999-08-06 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/providers/MH/camel-mh-folder.c (_list_subfolders):
- stat was not testing the good file. Fixed.
-
- * tests/test4.c (main): added real test for MH folder
- provider. All tested things seem to work OK :)
-
-1998-08-06 Robert Brady <rwb197@ecs.soton.ac.uk>
-
- * tests/test5.c: test for RFC2047 decoder.
-
- * camel/gmime-rfc2047.c: Improved RFC2047 decoder.
-
-1999-08-06 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/providers/MH/camel-mh-folder.c (_exists): add debug information
- (_list_subfolders): test if first char in folder name is not '.'
- before adding it to the folder list.
-
- * camel/camel-store.c (_init):
- disable session check temporarily
- (_get_separator):
- (_get_folder): new static func.
- Fixed several oddities in class definition.
-
- * camel/providers/MH/camel-mh-store.c (camel_mh_store_get_type):
- parent type is CAMEL_STORE_TYPE not CAMEL_FOLDER_TYPE
-
- * camel/camel-store.c:
- prent class is CamelServiceClass not GtkObjectClass
-
- * camel/url-util.c :
- cosmetic changes + use of const when possible.
- (find_host):
- fix a bug: when there is no host and no port don't skip the '/'
- all static find_* func are now named _func_*
- (g_url_free): destructor func.
- cache field has been disabled. Constructing the url string
- won't be too slow and will occur rarely enough that we
- do not need to add complexity to this code.
-
- * camel/providers/MH/camel-mh-store.c:
- parent class is CamelStorClass not GtkObjectClass
-
-1999-08-05 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * tests/test4.c:
- test mh provider.
-
- * camel/providers/MH/camel-mh-folder.c (_get_message):
- implemented
-
- * camel/camel-folder.c (_get_message):
- new method.
- (camel_folder_get_message):
- corresponding public call
-
- * camel/README.HACKING:
- Some notes.
-
- * camel/CODING.STYLE:
- short note about coding style.
-
- * camel/README.COPYRIGHT:
- Note about copyright policy.
-
- * camel/providers/MH/camel-mh-folder.c (_list_subfolders):
- minor typo fixes.
-
-
-1999-08-04 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/gmime-rfc2047.c:
- * camel/gmime-rfc2047.h:
- indentation and cosmetic changes.
-
- * camel/providers/MH/camel-mh-folder.c (_list_subfolders):
- implemented.
- * camel/providers/MH/camel-mh-folder.c (_delete):
- finshed implementation
- (_delete_messages): implemented.
-
-
-1999-08-04 Robert Brady <rwb197@ecs.soton.ac.uk>
-
- * camel/gmime-rfc2047.[ch]: added an implemention of RFC2047
- (support for character sets other than US-ASCII in MIME
- headers). Not actually called from anywhere yet.
-
-
-1999-08-03 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/providers/MH/camel-mh-folder.c (_create):
- implemented.
- (_delete): started implementation.
-
- * camel/camel-folder.c (_get_folder): default implementation
- calls camel_store_get_folder ().
-
- * camel/providers/MH/camel-mh-folder.c (_init_with_store):
- implemented.
-
- * camel/camel-folder.h (struct _CamelFolder):
- remove useless exist_on_store field.
-
- * camel/camel-folder.c (_exists):
- do not use exist_on_store field.
-
- * camel/camel-folder.c (camel_folder_set_name):
- (camel_folder_get_name):
- new public functions
- (_set_name): set full_path.
-
- (_set_full_name):
- (camel_folder_set_full_name):
- commented out this functions def.
- It would make things very difficult to handle, and would not
- be very useful.
-
- * camel/providers/MH/camel-mh-store.h:
- * camel/providers/MH/camel-mh-store.c (camel_mh_store_set_toplevel_dir):
- (camel_mh_store_get_toplevel_dir):
- * camel/providers/MH/camel-mh-folder.c (_set_name):
- * camel/providers/MH/camel-mh-folder.h:
- use (gchar *) instead of (GString *) everywhere.
- use const when necessary.
-
- * camel/camel-folder.h (struct _CamelFolder):
- removed unused message_list field.
-
- * camel/camel-mime-part.c (_set_content_object):
- There is a probleme here. We can not allow mime part
- content-type field and content_object mime-type to be
- different. I thus chosed to set mime part object
- content field to be freed (if necessary) and set
- to be a pointer to content_object mime type
- field.
- (_construct_from_stream): set content_object mime type
- to be the same as mime_part's one. This is necessary
- because we use _set_content_type.
-
- This two things are a bit hackish ansd may need
- to be redesigned.
-
- * camel/gmime-utils.c (gmime_write_header_pair_to_stream):
- use g_strdup_printf and remove a bug.
-
- * camel/camel-simple-data-wrapper.c (_construct_from_stream):
- more debugging output + nb_bytes_read is now a signed int
- to avoid bug when eos is encountered.
-
- * camel/camel-mime-part.c (_construct_from_stream):
- sync to data_wrapper_repository function name changes.
- Use default "text/plain" type when conten-type field
- is not found. (following RFC 2046 spec).
-
- * camel/data-wrapper-repository.c (data_wrapper_repository_set_data_wrapper_type):
- (data_wrapper_repository_get_data_wrapper_type):
- change function name prefix (s/data_wrapper/data_wrapper_repository/)
-
- * camel/camel-multipart.c (_read_part):
- add `\n` at eol but not before boundary.
-
- * camel/gmime-utils.c (get_header_table_from_stream):
- correct implementation of end of stream detection.
-
-1999-08-01 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-multipart.c (_read_part):
- use a stream to store the part instead of GString.
-
- * camel/camel-mime-part.c (camel_mime_part_set_text):
- set data wrapper content type to "text/plain".
-
- * camel/camel-stream-mem.c:
- * camel/camel-stream-mem.h:
- new memory buffer based stream.
-
- * camel/camel-stream-fs.c (_seek):
- implementation for file system based stream.
-
- * camel/camel-stream.c (camel_stream_seek):
- new method.
-
- * camel/camel-stream-fs.c (camel_stream_fs_class_init):
- pass CamelStreamFsClass instead of CamelStreamClass.
-
-1999-08-01 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/gmime-utils.c (gmime_write_header_pair_to_stream):
- corrected a bug with memory not allocated for '\0' in strtmp
-
- * camel/gmime-utils.c (gmime_read_line_from_stream):
- do not return NULL when line is empty.
-
- * camel/camel-multipart.c (_read_part): return true when end
- of multipart is found, not the opposite
-
-1999-07-31 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/gmime-utils.c (gmime_read_line_from_stream):
- Don't return crlf at end of line.
-
-1999-07-30 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/gmime-utils.c (gmime_read_line_from_stream):
- new function: reads a line from a stream.
- should be in streams utils maybe.
-
-1999-07-29 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-mime-part.c (_construct_from_stream):
- Uses data wrapper repository to find what data wrapper
- to use to construct the content from a stream. When
- no object is registered for the mime type found in
- content type field a CamelSimpleDataWrapper is
- used.
-
- * camel/camel-mime-part.c (_get_content_type):
- (camel_mime_part_get_content_type): returns
- a pointer on the content_type field instead
- of the gchar * mime "type/subtype".
-
-1999-07-28 bertrand <Bertrand.Guiheneuf@aful.org>
-
-
- * camel/data-wrapper-repository.c
- * camel/data-wrapper-repository.h
- New files. Handles mime type <-> camel object
- (for example "multipart" <-> CamelMultipart
- * tests/tesst3.c: test data repository thing.
-
-1999-07-26 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-multipart.c (_write_to_stream):
- implemented output of multipart.
-
- * tests/test1.c (main): testing content objects operations.
-
-1999-07-25 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-mime-part.c (camel_mime_part_set_text):
- new util function to set a mime part content to be
- a text string.
-
- * camel/camel-simple-data-wrapper.c (camel_simple_data_wrapper_set_buffer_from_text):
- new util func.
- (camel_simple_data_wrapper_new): new func.
-
- * camel/camel-multipart.c (_write_to_stream):
- implemented output of multiparts.
-
-1999-07-24 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/gmime-content-field.c (gmime_content_field_get_parameter):
- New function. Returns the value associated to a
- mime parameter.
-
-
-1999-07-22 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-multipart.h:
- * camel/camel-multipart.c:
- New class. Models multipart mime objects.
-
- * camel/camel-mime-body-part.h:
- * camel/camel-mime-body-part.c:
- New class. Body part is a mime part contained in
- a multipart object.
-
-
-1999-07-21 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-log.h:
- implemented hard log level stuff.
- * came/*.c use "CAMEL_LOG_*" instead of "CAMEL_LOG (*"
- in order to allow hard level switch.
-
- * tests/test1.c:
- * tests/test2.c:
- updated to use gchar instead of GString. Tests passed.
-
-
-1999-07-19 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-stream.c:
- * camel/camel-stream.h:
- "const"-antified
-
-
- * camel/camel-simple-data-wrapper.c: (_construct_from_stream)
- do not use any limit when constructing the object from a stream
-
- * camel/camel-stream-fs.c:
- * camel/camel-stream-fs.h:
- * camel/camel-mime-message.c:
- * camel/camel-mime-message.h:
- * camel/camel-session.c:
- * camel/camel-session.h:
- * camel/camel-service.c:
- * camel/camel-service.h:
- * camel/camel-store.c:
- * camel/camel-store.h:
- * camel/camel-folder.c:
- * camel/camel-folder.h:
- * camel/gmime-utils.c:
- * camel/gmime-utils.h:
- GString -> gchar
- constantified what had to be.
-
- * camel/string-utils.c:
- * camel/string-utils.h:
- New files. Meant to replace gstring-util for gchar *
-
-1999-07-16 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/gmime-content-field.c (gmime_content_field_construct_from_string):
- GString -> gchar
- use const to indicate copied parameter.
-
-1999-07-15 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-simple-data-wrapper.c:
- * camel/camel-simple-data-wrapper.h:
- Gstring -> gchar
-
-1999-07-15 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/url-util.c:
- * camel/url-util.h:
- Do not use GStrings any more.
- Added assertion code.
- Cosmetic reformating
-
- * AUTHORS:
- * ChangeLog:
- Changed my email address.
-
-
-1999-07-13 Miguel de Icaza <miguel@gnu.org>
-
- * camel/gmime-base64.c (gmime_encode_base64): Implemented base64
- encoder based on CamelStreams. Should the encoder/decoder be a
- Stream itself?
-
- * camel/gmime-utils.c: include config.h here.
- * camel/url-util.c: ditto.
- * camel/gstring-util.c: ditto.
- * camel/gmime-content-field.c: ditto.
- * camel/camel-stream.c: ditto.
- * camel/camel-stream-fs.c: ditto.
- * camel/camel-store.c: ditto.
- * camel/camel-simple-data-wrapper.c: ditto.
- * camel/camel-session.c: ditto.
- * camel/camel-service.c: ditto.
- * camel/camel-mime-part.c: ditto.
- * camel/camel-mime-message.c: ditto.
- * camel/camel-log.c: ditto.
- * camel/camel-data-wrapper.c: ditto
- * camel/camel-folder.c: ditto.
-
- * camel/camel-stream.c (camel_stream_write): Moved api
- documentation to the places that they document.
- (camel_stream_class_init): Virtual classes do not need to have a
- default implementation. So null them all.
- (camel_stream_write): Return value from write.
- (camel_stream_available): implement.
- (camel_stream_write_strings): documented.
-
- * devel-docs/query/virtual-folder-in-depth.sgml: Small
- reformatting
-
-1999-06-28 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * tests/test2.c (main): now use
- CamelDataWrapper::contruct_form_stream to test
- message parsing
-
- * camel/camel-data-wrapper.c:
- * camel/camel-data-wrapper.h:
- construct_from_stream no longer has maximimum size arg.
-
- * camel/camel-mime-part.c (_construct_from_stream): new.
- Construct the mime_part from a stream.
-
- * camel/camel-mime-part.c:
- new field (content_type) and associated methods.
- (camel_mime_part_init): initialize content_type field.
- (_parse_header_pair): now set content_type MimePart field
- instead of using DataWrapper Mime typing facility.
-
-1999-06-28 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-data-wrapper.h:
- s/content_type/mime_type/
-
-1999-06-24 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-simple-data-wrapper.[ch]:
- new class. Simple implementation of a data wrapper:
- simply keeps the stream result in a byte array.
-
- * camel/camel-mime-part.c (_parse_header_pair): added a warning.
- Have to think about the correct way to store content type stuff.
-
-1999-06-24 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-mime-message.c (_write_one_recipient_to_stream):
- includes gmime-utils header.
- patch from Ulrich Drepper <drepper at cygnus.com>
- set separator string in write_header_with_glist_to_stream()
-
- * camel/camel-log.c (camel_log):
- patch from Ulrich Drepper <drepper at cygnus.com>
- Do not use stderr in initialization of logfile descriptor.
-
- * camel/camel-stream-fs.c (camel_stream_fs_new_with_name):
- patch from Ulrich Drepper <drepper at cygnus.com>
- initialize mode field in open().
-
-1999-06-22 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-data-wrapper.c (_get_content_type):
- moved all the content-type stuff here.
- (camel_data_wrapper_init): initialize the instance
- content-type field.
-
- * camel/camel-mime-part.c (_parse_header_pair):
- parse Content-Type stuff in header.
- (_write_to_stream): write the content type stuff to
- the stream.
-
- * camel/gmime-content-field.c (gmime_content_field_get_mime_type):
- new function, returns "type/subtype" mime type string.
- (gmime_content_field_construct_from_string):
- new function, construbt a content_field object
- form a string. be used to set the mime_type from a
- string.
-
- * camel/camel-mime-part.c (_set_content_type):
- (camel_mime_part_set_content_type):
- (_get_content_type):
- (_get_content_type):
- new methods.
-
-1999-06-21 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/gmime-utils.c (get_header_table_from_stream):
- replace CR/LF+'\t' with ' '
-
- * camel/camel-mime-message.c (_set_recipient_list_from_string):
- trim \t when splitting
-
- * camel/gmime-utils.c (get_header_table_from_file):
- corrected bug in scanning tabulations ('t' -> '\t')
-
- * tests/test2.c (main): read mail.test instead
- of mail1.test
-
- * camel/camel-mime-part.c (_add_header):
- added comments
-
-1999-06-03 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * devel-docs/query/virtual-folder-in-depth.sgml:
- sgmlized Giao's doc about virtual folders.
-
-1999-05-31 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * tests/test2.c (main):
- use new stream code instead of raw file * stuff.
-
- * camel/gmime-utils.c (get_header_table_from_stream):
- new func. Will replace get_header_table_from_file and will
- be used to parse headers from files as well as from
- memory buffers.
-
- * camel/camel-stream-fs.c:
- CamelStream Subclass. File system based
- stream.
-
-
-1999-05-30 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-stream.h: new class. Represents an
- abstract stream object.
-
- * camel/camel-mime-message.c (_set_recipient_list_from_string):
- remove leading and trailing spaces in recipient addresses.
-
- * camel/gmime-utils.c (_store_header_pair_from_gstring):
- remove leading and trailing spaces from header values.
-
- * camel/gstring-util.c (g_string_trim): new
- func: remove leading or trailng chars from
- a specified char set.
- (g_string_split): allow trimming of substrings.
-
- * tests/test1.c (main): remove gtk_main call
-
-1999-05-28 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-mime-part.c
- (_parse_header_pair):
- (_init_header_name_table):
- More header parsing code.
-
-
-1999-05-27 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * tests/test2.c (main): rewrite message obtained via
- parsing into a file. Actually, it works pretty well :))
-
- * camel/camel-mime-message.c (_set_recipient_list_from_string):
- create recipient list form a comma separated string.
- (_parse_header_pair): added recipient lists parsing.
-
- * camel/camel-mime-part.c (_parse_header_pair):
- new (protected) method. Parse a head pair and
- decides what to do with it.
-
- (_add_header): Call in _parse_header_pair
-
- * camel/camel-mime-message.c (_parse_header_pair):
- overload header parsing MimePart mthod.
-
- * camel/gstring-util.c (g_string_split):
- new func: split a gstring into a GList of
- substring.
-
-1999-05-26 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/gmime-utils.c (get_header_lines_from_file):
- new func. Parses message header zone and returns
- a Glist of all header lines.
-
- * tests/test2.c: tests message parsing
-
- * camel/gmime-utils.c (write_header_table_to_file):
- new func to write a table of headers.
-
-1999-05-20 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-mime-message.c (_write_to_file):
- recipient list printing
-
- * tests/test1.c (main): more tests.
-
-1999-05-19 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-mime-part.c (_write_to_file): test if content
- exists before calling its write_to method.
-
- * camel/camel-mime-message.c (_write_to_file): bugs fix.
-
- * camel/camel-mime-message.c (camel_mime_message_new_with_session):
- new func. Creates a message with the session field set
- up correctly.
-
-1999-05-18 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * tests/test1.c (main): tests
-
- * camel/camel-mime-message.c (_write_to_file):
- started write_to framework for mime_messages
-
- * camel/camel-mime-message.c (*_message_number):
- message number funcs.
-
-1999-05-15 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-mime-message.c (*_flag):
- flags handling methods
-
-1999-05-14 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-mime-message.c (camel_mime_message_class_init):
- added recipient handling class funcs.
-
-1999-05-13 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-mime-message.c (camel_mime_message_init):
- create recipients hash table
- (_remove_recipient):
- (_add_recipient):
- (_get_recipients): new funcs.
- Internal Recipients data structure is
- a bit complicated though.
-
- * camel/camel-mime-part.c (camel_mime_part_init):
- create headers hash table
-
- * camel/camel-mime-message.h:
- a bunch of get/set header field
- method done. Does nothing yet though.
-
- * camel/camel-mime-message.[ch] :
- new file.
-
-1999-05-12 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-mime-part.h (struct ):
- disposition is now a full GMimeContentField
- object.
-
- * camel/gmime-content-field.c: new file
- handle "type/subtype ;parameter=value ; parameter=value ..."
- BNF grammar elements
- (gmime_content_field_write_to_file): new func
-
- * camel/gmime-utils.c (gmime_write_header_pair_to_file):
- namespace change
-
-1999-05-11 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-mime-part.c (_write_to_file):
- overload wrapper class method.
- (_write_to_file): start to write some text in
- file.
-
- * camel/camel-store.c: typo fix.
-
- * camel/camel-store.c:
- * camel/camel-service.c:
- * camel/camel-folder.c:
- * camel/camel-data-wrapper.c:
- * camel/camel-mime-part.c:
- static functions naming follows gnome
- coding style guide.
-
- * camel/camel-mime-part.h: implemented public interfaces
-
-
-1999-05-10 Bertrand Guiheneuf <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-mime-part.c (__camel_mime_part_get_header_lines):
- (__camel_mime_part_set_header_lines):
- (__camel_mime_part_get_content_languages):
- (__camel_mime_part_set_content_languages):
- (__camel_mime_part_get_encoding):
- (__camel_mime_part_set_encoding):
- (__camel_mime_part_get_content_MD5):
- (__camel_mime_part_set_content_MD5):
- (__camel_mime_part_get_content_id):
- (__camel_mime_part_set_content_id):
- A bunch of new set/get func.
-
- * camel/gstring-util.c (g_string_list_free):
- convenience function for string list
- complete deallocation.
-
-1999-05-09 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-mime-part.c (__camel_mime_part_add_header):
- new method
-
- * camel/camel-mime-part.h (struct CamelMimePart):
- added core fields.
-
-1999-05-08 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-mime-part.[ch]:
- new class. models a mime mail part.
-
- * camel/camel-data-wrapper.c
- (camel_data_wrapper_write_to_buffer): method to
- stream data content in a buffer.
- (camel_data_wrapper_write_to_file):
- (camel_data_wrapper_construct_from_buffer):
- (camel_data_wrapper_construct_from_file):
- new methods.
-
-1999-05-07 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-data-wrapper.[ch]:new class.
- This should not be a class but rather an
- interface. The day Gtk support interfaces,
- it dataWrapper should become an interface.
-
-1999-05-04 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-service.c (camel_service_get_url):
- new method.
-
- * devel-docs/camel/camel-sections.txt: added
- function doc references
-
- * camel/camel-folder.c (__camel_folder_close):
- fixed indentation.
- (camel_folder_expunge): new method.
- (__camel_folder_close): used expunge flag
-
-1999-05-03 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-folder.c (camel_folder_get_mode):
- typo fix
-
- * camel/camel-folder.c (__camel_folder_list_subfolders):
- new func.
-
- * some doc stuffs
-
-
-1999-05-01 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-folder.c
- (__camel_folder_get_mode):
- (camel_folder_get_mode):
- (camel_folder_get_parent_store):
- (__camel_folder_get_parent_store):
- (camel_folder_get_parent_folder):
- (__camel_folder_get_parent_folder):
- new methods
-
- * camel/camel-service.c: put __ prefix before
- private virtual funcs.
-
- * camel/camel-folder.c (camel_folder_delete):
- (camel_folder_delete_messages):
- new methods.
-
- * camel/url-util.c (g_url_new): some
- more comments
-
-1999-04-27 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-folder.c (camel_folder_create):
- new public function.
-
-1999-04-25 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-session.c (camel_session_get_store_from_provider):
- initialize folder object.
-
- * camel/camel-store.c (init): new method.
- called by session object at instantiation time.
-
- * camel/camel-store.h (struct _CamelStore):
- new fields : session and url_name
-
-1999-04-25 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-session.c (camel_session_set_provider):
- new method to set the default provider for a protocol.
- (camel_session_get_store_from_provider):
- new method to instantiate a folder from a provider.
-
- * camel/camel-provider.h: s/GString/gchar/g
- + typo fix.
-
- * camel/camel-provider.[ch]:
- basic provider structure. Have to write the
- code for dynamic loading.
-
-1999-04-24 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/url-util.[ch]: s/new_g_url/g_url_new
-
- * camel/url-util.c (new_g_url): URL
- rewritten completely. Error handling not
- implemented in public functions.
- But URL scan works pretty well :)))
-
-1999-04-24 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/url-util.[ch]: I needed the url
- functions to use GString, and I wanted a more
- general scheme so I finally started rewriting
- the whole thing from scratch.
- No more code from gzilla :(
-
-1999-04-23 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/url-util.[ch]:
- Utility functions to parse URLs.
- Stolen shamelessly from gzilla (www.gzilla.com)
- written by Raph Levien <raph@acm.org>
-
- * camel/Makefile.am: added url-util.[ch]
- compilation.
-
- * Makefile.am (SUBDIRS): removed devel-docs
- until I come up with a correct Makefile.am
-
- * camel/camel-store.h:
- * camel/camel-folder.h:
- correct declarations of structs
-
-
-1999-04-22 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/providers/MH/camel-mh-store.c:
- more test implementation.
-
- * camel/camel-store.c (camel_store_get_type): typo fix
-
-
-1999-04-21 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/providers/MH/camel-mh-folder.c (camel_mh_folder_get_type):
- start test provider.
-
-1999-04-20 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-store.h: now CamelStore inherits from
- CamelService.
-
- * camel/camel-service.c (camel_service_class_init):
- basic abstract service class.
-
-1999-04-19 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/README: added some (few) explanations.
-
-1999-04-18 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-store.[ch]: started implementation
- * camel/camel-folder.c (camel_folder_get_type): typo
- uncommented the store related code.
- (camel_folder_create): enable som store relted code.
- Not finished. Have to define public methods first.
-
- * camel/camel-log.h: some explanation about the
- log system
-
-1999-04-18 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-folder.c:
- (camel_folder_create): implemented (partially)
- have to write CamelStore before finishing it.
-
- * camel/camel-folder.h (CamelFolder): added full_name field
- (CamelFolderClass): added set/get_full_name methods
-
-1999-04-18 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-folder.c: some work
- * camel/camel-log.c: log system for camel
- * camel/gstring-util.c: some utilities for GString objects
-
-
-1999-04-18 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * autogen.sh (PKG_NAME): groomf -> gnome-mailer
-
diff --git a/INSTALL b/INSTALL
deleted file mode 100644
index b42a17ac46..0000000000
--- a/INSTALL
+++ /dev/null
@@ -1,182 +0,0 @@
-Basic Installation
-==================
-
- These are generic installation instructions.
-
- The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation. It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions. Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, a file
-`config.cache' that saves the results of its tests to speed up
-reconfiguring, and a file `config.log' containing compiler output
-(useful mainly for debugging `configure').
-
- If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release. If at some point `config.cache'
-contains results you don't want to keep, you may remove or edit it.
-
- The file `configure.in' is used to create `configure' by a program
-called `autoconf'. You only need `configure.in' if you want to change
-it or regenerate `configure' using a newer version of `autoconf'.
-
-The simplest way to compile this package is:
-
- 1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system. If you're
- using `csh' on an old version of System V, you might need to type
- `sh ./configure' instead to prevent `csh' from trying to execute
- `configure' itself.
-
- Running `configure' takes awhile. While running, it prints some
- messages telling which features it is checking for.
-
- 2. Type `make' to compile the package.
-
- 3. Optionally, type `make check' to run any self-tests that come with
- the package.
-
- 4. Type `make install' to install the programs and any data files and
- documentation.
-
- 5. You can remove the program binaries and object files from the
- source code directory by typing `make clean'. To also remove the
- files that `configure' created (so you can compile the package for
- a different kind of computer), type `make distclean'. There is
- also a `make maintainer-clean' target, but that is intended mainly
- for the package's developers. If you use it, you may have to get
- all sorts of other programs in order to regenerate files that came
- with the distribution.
-
-Compilers and Options
-=====================
-
- Some systems require unusual options for compilation or linking that
-the `configure' script does not know about. You can give `configure'
-initial values for variables by setting them in the environment. Using
-a Bourne-compatible shell, you can do that on the command line like
-this:
- CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
-
-Or on systems that have the `env' program, you can do it like this:
- env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
-
-Compiling For Multiple Architectures
-====================================
-
- You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory. To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'. `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
- If you have to use a `make' that does not supports the `VPATH'
-variable, you have to compile the package for one architecture at a time
-in the source code directory. After you have installed the package for
-one architecture, use `make distclean' before reconfiguring for another
-architecture.
-
-Installation Names
-==================
-
- By default, `make install' will install the package's files in
-`/usr/local/bin', `/usr/local/man', etc. You can specify an
-installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
-
- You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files. If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
-
- In addition, if you use an unusual directory layout you can give
-options like `--bindir=PATH' to specify different values for particular
-kinds of files. Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
-
- If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
- Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System). The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
- For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
- There may be some features `configure' can not figure out
-automatically, but needs to determine by the type of host the package
-will run on. Usually `configure' can figure that out, but if it prints
-a message saying it can not guess the host type, give it the
-`--host=TYPE' option. TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name with three fields:
- CPU-COMPANY-SYSTEM
-
-See the file `config.sub' for the possible values of each field. If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the host type.
-
- If you are building compiler tools for cross-compiling, you can also
-use the `--target=TYPE' option to select the type of system they will
-produce code for and the `--build=TYPE' option to select the type of
-system on which you are compiling the package.
-
-Sharing Defaults
-================
-
- If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists. Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Operation Controls
-==================
-
- `configure' recognizes the following options to control how it
-operates.
-
-`--cache-file=FILE'
- Use and save the results of the tests in FILE instead of
- `./config.cache'. Set FILE to `/dev/null' to disable caching, for
- debugging `configure'.
-
-`--help'
- Print a summary of the options to `configure', and exit.
-
-`--quiet'
-`--silent'
-`-q'
- Do not print messages saying which checks are being made. To
- suppress all normal output, redirect it to `/dev/null' (any error
- messages will still be shown).
-
-`--srcdir=DIR'
- Look for the package's source code in directory DIR. Usually
- `configure' can determine that directory automatically.
-
-`--version'
- Print the version of Autoconf used to generate the `configure'
- script, and exit.
-
-`configure' also accepts some other, not widely useful, options.
diff --git a/MAINTAINERS b/MAINTAINERS
deleted file mode 100644
index 602e3bf73b..0000000000
--- a/MAINTAINERS
+++ /dev/null
@@ -1,5 +0,0 @@
-Email: ettore@ximian.com
-Email: danw@ximian.com
-Email: chris@ximian.com
-Email: federico@ximian.com
-Email: iain@ximian.com
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644
index 5c72dc6a19..0000000000
--- a/Makefile.am
+++ /dev/null
@@ -1,41 +0,0 @@
-changelogs = \
- ChangeLog
-
-EXTRA_DIST = \
- AUTHORS \
- $(changelogs) \
- COPYING-DOCS \
- README \
- HACKING \
- MAINTAINERS \
- NEWS \
- xml-i18n-merge.in \
- xml-i18n-update.in \
- xml-i18n-extract.in
-
-SUBDIRS = \
- intl \
- macros \
- data \
- e-util \
- widgets \
- shell \
- executive-summary \
- libibex \
- camel \
- filter \
- composer \
- libical \
- libversit \
- addressbook \
- mail \
- calendar \
- wombat \
- importers \
- art \
- ui \
- default_user \
- views \
- tools \
- doc \
- po
diff --git a/NEWS b/NEWS
deleted file mode 100644
index 820c398eb4..0000000000
--- a/NEWS
+++ /dev/null
@@ -1,992 +0,0 @@
-Version 0.9 "Platypus", 2001-03-12
-----------------------------------
-
-Shell:
-
- - Importing framework. (Iain)
-
- - Made the splash screen a regular window. (Miguel)
-
- - Added a menu item to hide the shortcut bar to the shortuct bar
- right-click menu. (Jason)
-
- - Update the shortcut labels to contain the number of unread
- messages as well. (Jason)
-
- - Pre-select a newly created folder in the folder selection dialog.
- (Ettore)
-
-Mail:
-
- - GPG/PGP support is now mostly working and sort of configurable.
- Except that the pretty pictures are missing. (Jeff)
-
- - Exciting new configuration druid (Anna, Jeff) and configuration
- editor-of-the-month (Jeff). You can now have multiple identities
- that use different transports. (Jeff)
-
- - The folder-tree unread message counts now work much better. But
- vfolders only display their unread message counts *after you've
- looked at the folder for the first time*. (Dan)
-
- - New mail send/receive stuff with status dialog. (NotZed)
-
- - "Stop" button and support for cancelling operations. (NotZed)
-
- - Various fixes involving IMAP folders and subscriptions. (Dan)
-
- - Fake messages to root threads in the message list are now gone. (NotZed)
-
- - NNTP support is no longer configured by default, as this code is
- not expected to be completed by 1.0.
-
- - Interface for hiding messages matching certain criteria. (NotZed)
-
- - Quick search bar now includes "Sender contains" option (Tuomas? Eek!)
-
- - The mailer now properly launches "gnome_segv" when it crashes. I
- mean, if it were to crash. (Dan)
-
- - IMAP attachments are now not loaded unless you look at them. (Dan)
-
- - The X-Mailer header can now include a compile-time-specified
- string (for specifying package version, etc). (Dan)
-
- - The Date header in the message list now formats dates differently
- depending on how long ago they are. (Chris)
-
- - The composer doesn't ask if you want to save before closing if you
- haven't changed anything. Also, it has more useful window titles
- (Jason Leach) And you can now turn off the "are you sure you
- didn't mean to enter a subject?" dialog box. (Jeff)
-
- - The "Menu" key on a Windows keyboard (the one with the picture of
- a pop-up menu) now pops up the message list right-click menu.
- (Dan)
-
- - Lots of internal stuff that doesn't much affect the user-visible
- functionality, particularly involving multithreading, message
- threading, filters/searching, and regression testing. (NotZed)
-
- - Importers for Outlook Express 4 and mbox (used by most mailers like
- Netscape, Pine, Elm, Eudora) (Iain & Jeff)
-
-Addressbook:
-
- - Fixed crashing bug on PPC. (Clahey)
-
- - Updated to work with both OpenLDAP 1 and OpenLDAP 2. (Toshok)
-
- - Added configuration dialog for LDAP. (Toshok)
-
- - Plenty of bug fixes. (Clahey, Toshok, Meeks, JP, Larry, Jason,
- Federico, Dan, Zucchi, Gediminas Paulauskas, Ettore)
-
- - Moved category dialog to gal. (JP)
-
- - Worked on LDAP authentication. (Toshok)
-
- - Worked on status messages. (Toshok)
-
- - Worked on GalView stuff. (Clahey)
-
- - Improved the select names dialog GUI. (Clahey)
-
-Calendar:
-
- - New "go to date" dialog. (JP)
-
- - Categories support for appointments. (JP)
-
- - New alarms page in event editor. (Anna, JP)
-
- - Weekday picker now follows the week start setting. (Federico)
-
- - Date-editing widgets are more consistent with each other.
- (Federico)
-
- - Colorization fixes to the views. (Damon)
-
- - Optimizations to the views. (Damon)
-
- - New, simpler loading interface for calendars in the Wombat. (Federico)
-
- - Removal of lots of old Gnomecal code. (Federico, JP)
-
- - Alarm instance generation support for the Wombat. (Federico)
-
- - Alarm trigger queueing for the GUI. (Federico)
-
- - More robust launching and registration of the components. (Federico)
-
- - More i18n friendliness. (JP, Federico)
-
- - Start of the alarm notification daemon. (Federico)
-
- - Cosmetic and focus fixes all over the place. (Federico, JP)
-
-Tasks:
-
- - New, stand-alone tasks component. (Damon)
-
- - Categories support. (JP, Damon)
-
- - Your old tasks are migrated automatically to the new tasks folder.
- (Federico)
-
- - You get asked for confirmation when trying to delete a task entry.
- (Federico)
-
-Conduits:
-
- - Many bug fixes and cleanups. (JP)
-
-Executive Summary:
-
- - Bugfixes and memory leaks removed. (Iain)
-
- - Calendar summary component. (Iain)
-
- - RDF Summary saves it's state. (Iain)
-
- - Mail summary shows vFolder summaries as well. (Iain)
-
- - User changable number of columns. (Iain)
-
-
-Version 0.8 "Archaeopteryx", 2000-12-14
----------------------------------------
-
-Shell:
-
- - Added a `--no-splash' option. (Ettore)
-
- - Plugged a number of memory leaks. (Federico)
-
- - Added interfaces to display an arbitrary string associated with a
- folder, and highlight it on demand. (Ettore, Dan)
-
- - Changed the Storage IDLs so that you can associate a physical URI
- to the toplevel node as well. (Ettore)
-
- - If a shell is already running, `evolution' will just make it
- create a new view instead of creating a new shell. (Ettore)
-
-Mail:
-
- Display:
-
- - The folder tree now shows unread message counts for mail
- folders. For local folders, this updates in real time. For IMAP, it
- only updates when you "Get Mail". To be continued. (Dan)
-
- - New "important" column in the message list. User-settable. (Dan)
-
- - The message list "Size" column now displays more prettily and
- sorts correctly. (Jeff)
-
- - New command to view the raw source to a message. (Jeff)
-
- - More reliable MIME icon code in the mailer and the composer.
- (Dan, Iain)
-
- - Lots of internationalization fixes. (Dan, Kjartan)
-
- Composer / Outgoing mail
-
- - Various fixes to use the best charset and MIME encoding for
- outgoing messages. (Michael, Jeff)
-
- - You can now forward messages inline, instead of attaching them.
- Forwarding multiple messages now results in a multipart/digest
- attachment. (Jeff)
-
- - Replies are now preceded by "On DATE, PERSON wrote:" (Jeff)
-
- - Better reply editing, automagically sets indentation and paragraph
- style to Normal. (Radek)
-
- - HTML signature support. (Radek)
-
- - Inline image support. (Radek)
-
- - Fixes for addresses with commas. (Jeff, Michael)
-
- - Fix to not allow attaching directories, devices, etc.
- (Jeff)
-
- - Fixed the sign of the GMT offset in generated Date headers.
- (Michael)
-
- - Fixed a bug in base64 encoding. (Michael)
-
- - Fixed a problem in connecting to non-ESMTP SMTP servers. (Jeff)
-
- Miscellaneous Commands / Features:
-
- - The mailer will now remember your passwords, if you configure
- that option for a service. (Dan)
-
- - New "Apply Filters" command to apply filter rules to selected
- messages. (Jeff)
-
- - No more "No new mail" dialog. (Jeff)
-
- - Individual messages can now be saved to disk. (Jeff)
-
- - Synced the Message menu with the right-click menu. (Jeff)
-
- - Mailer now uses the same search bar as the addressbook. (Anna,
- Chris, Jeff)
-
- Filters:
-
- - Now supports filtering on system flags (ie Answered, Seen,
- Unseen). (Jeff)
-
- - Regular expression searches are now moved to their own Option
- menu. (Jeff)
-
- - Allows regex searching on the entire message header. (Jeff)
-
- - Now has soundex filters (x sounds like y). (Jeff)
-
- IMAP:
-
- - "Get Mail" now scans all folders. (Dan)
-
- - IMAP password dialog no longer pops up at startup: click on the
- server in the folder tree to connect. (Dan)
-
- - Folder subscription support. (Chris Toshok, Dan)
-
- - Various IMAP folder naming fixes. (May fix Cyrus support) (Dan)
-
- - Seen/deleted flags are preserved across "Get Mail". (Jeff)
-
- - Fixed a bug that could cause messages to be marked as seen
- even when the UI thought they weren't. (Dan)
-
- - Fixes for IMAP folders with spaces in their names (again).
- (Jeff)
-
- - IMAP Kerberos 4 authentication support. (Dan)
-
- POP3:
-
- - Fixed a bunch of error cases in POP3 connection. (Dan)
-
- - Fixed POP3 to more reliably delete messages when it was supposed
- to be doing so. (Dan)
-
- Local mail:
-
- - Major local mail rewrite that fixed memory leaks, reduced
- memory consumption, improved efficiency, etc. (Michael)
-
- - Maildir support. (Michael)
-
- - Local mail folders are now locked (via dot locking and/or
- fcntl/flock) while Evolution is modifying them, and it will
- notice if they've changed while it's not looking. (Michael)
-
-Calendar:
-
- - To-do and calendar conduits working except for extended
- character support (ie accented chars) (JP)
-
- - Updated wombat implementation of change reporting (JP)
-
- - Majorly kick-ass new recurrence page in the event editor with an
- easy UI, a preview of what will happen, and lots of love. (Anna)
-
- - Imported a new libical with the APIs we require for alarms, the
- start of the timezone code. This may be the last Evolution
- release that uses a CVS-imported libical; in the future we should
- depend on official tarballs. (Federico)
-
- - Event editor now deals gracefully with iCalendar recurrences we
- cannot edit. (Federico)
-
- - Plenty of fixes to the ETable calendar model for the task list
- (Damon).
-
- - The task list now saves its state, selected columns and sort order
- (Damon).
-
- - Lots of love to the iTIP engine and user interface. Scheduling
- appointments via email should be working fine, and they should
- also work when you receive them. (Jesse)
-
- - Lots of work on the calendar preferences code. (Damon)
-
- - Many functional and cosmetic fixes to the day and week
- views. (Damon)
-
- - Event and task editors now ask if you try to close them without
- saving changes. (Damon)
-
- - You are now prompted if you are sure that you want to delete an
- appointment. (Federico)
-
- - Plenty of memory leaks fixed. (JP, Federico)
-
- - Prettified the event editor a bit by making widget spacings
- consistent. (Federico)
-
- - Fixed semantics for handling exception dates (Federico)
-
- - Some fixes to the recurrence instance generation engine. (Damon)
-
- - Fixed insertion of new objects via notification into the task
- list. (JP, Federico)
-
- - Misc. polishing for the event editor's innards. (Damon, Federico)
-
- - Misc. cruft removal from old Gnomecal code (Federico, Miguel)
-
- - Prettier icons for the task list. (Federico)
-
-Addressbook:
-
- - Addressbook conduit now working, experimentally, except for
- extended character support (ie accented chars.) (JP)
-
- - Extended wombat functionality with getChanges call. (JP)
-
- - Full name and address dialogs in contact editor fixed. (Chris)
-
-Executive Summary: (iain)
-
- - Now compiled by default.
-
- - Prettier default dialogs.
-
- - Customisable background.
-
- - RDF Summary, and Mail Summary components.
-
- - Fixes and optimisations.
-
- - Can restore state.
-
-Version 0.7, "Loch Ness Monster", ????
---------------------------------------
-
-There have been no verified sightings of this release.
-
-
-Version 0.6, "Procompsognathus", 2000-10-19
--------------------------------------------
-
-General:
-
- - Split out lots of functionality to gal. Evolution now depends on
- gal. (Chris Lahey, Gal Team)
-
-Shell:
-
- - Added a cute splash screen. (Ettore, TigerT)
-
- - Improved the way `~/evolution' is initialized the first time.
- (Iain)
-
- - Fixed the problem with the folder bar disappearing too son when
- clicking on the scrollbar. (Ettore)
-
- - Updated to use the new toolbar and UI merging code from Bonobo.
- (Michael Meeks, Ettore)
-
-Mail:
-
- - Numerous i18n encoding, decoding, and display fixes. Non-ASCII
- text should be displayed correctly in most context in the mailer
- now. The composer no longer sends undeclared 8bit data. (Jeff)
-
- - The IMAP provider now caches summary info between sessions, so
- startup should be much faster for large folders. (Dan)
-
- - Subscribe/unsubscribe UI for newsgroups. (IMAP subscriptions will
- be supported in a later release.) NNTP authentication support.
- Various other NNTP fixes. (Chris Toshok)
-
- - New "full search" button to do more complicated searches. (NotZed)
-
- - Composer attachment bar improvements. You can now drag files to
- the composer window to attach them to the message. (Iain)
-
- - Message list state (columns selected, sorting, etc) is now saved
- between sessions. (NotZed)
-
- - "Get Mail" now works for IMAP. IMAP mail no longer arrives
- asynchronously (although if you delete mail from another client,
- it will be deleted asynchronously). (Dan)
-
- - Image attachments now use thumbnail images rather than a generic
- image icon. (Iain)
-
- - Various IMAP provider bugs (Dan, Jeff)
-
- - Filter code cleanup/improvements. (NotZed) Filtering can read and
- write message scores. (Jeff) On-demand filters no longer expunge
- the source folder, and don't filter deleted messages. (Jeff)
- Filters now log their actions. (Jeff)
-
- - Drafts, Outbox, and Sent folders now default to showing "To"
- instead of "From" in the header list. Messages output to the Sent
- folder are marked as "Seen". "Send later" on a reply will mark the
- message as having been replied to. (Jeff)
-
- - Message list "attachment" column is now functional. The
- read/unread state of a fake thread header now matches the state of
- the thread. (NotZed) Message list sorting is more clever (Jeff)
-
- - The "Print" toolbar button now opens a Print dialog rather than a
- Print Preview window. (Miguel)
-
- - New "Select All" command. "Mark all messages as seen" became "Mark
- (selected) messages seen". (Jeff)
-
-Calendar:
-
- - Improved todo list and calendar view gui (Damon)
-
- - Printing works again (Federico)
-
- - Config dialog improvement and implementation (Damon)
-
- - Todo and calendar conduits working, except for archiving (JP)
-
-Addressbook:
-
- - Lots of internal refactoring of addressbook, including changes due
- to gal. (Chris, Chris)
-
- - Lots of bug fixes. (Chris, Chris, Matt Bissiri, Iain, Dan)
-
- - Added a working field to save whether the contact wants
- HTML. (Chris Lahey)
-
- - Added "Stop" and "View All" toolbar buttons. (Chris Lahey)
-
- - Lots of work on modifiable LDAP. (Chris Toshok)
-
- - Recognizes a lot more Prefixes and Suffixes when parsing names. (Nat)
-
- - The card view doesn't write out cards unless they've changed. (Chris Lahey)
-
- - New layout of address editor dialog. (Anna, Chris Lahey)
-
-Version 0.5.1, "Salamended", 2000-09-15
----------------------------------------
-
-General:
-
- - Fixed a font-handling problem that would cause Evolution to crash
- at startup with certain Gtk themes. (Chris)
-
- - Fixed some build problems. (Chris)
-
- - We no longer ship an out-of-date Red Hat-only RPM spec file.
-
-Shell:
-
- - The shell now installs the `Sent' folder at startup if it doesn't
- exist yet. (Ettore)
-
- - If a component crashes unexpectedly, the shell displays a dialog
- box informing the user of that. (Ettore)
-
- - Fixed a bug in the folder selector dialog that would result in
- crashes while trying to move messages in the mailer. (Dan)
-
-Addressbook:
-
- - Fixed a bug that would cause the addressbook to crash when
- embedded in the composer. (Dan)
-
-Mail:
-
- - Fixed a display problem caused by expunging an IMAP folder. (Dan)
-
- - Fixed POP mail so that "keep on server" is obeyed correctly. (Dan,
- Jeff)
-
- - Fixed replies so that replying to a message twice doesn't turn off
- the "replied" flag. (Dan)
-
- - Fixed a bug that prevented "Send later" from working. (Dan)
-
-
-Version 0.5, "Salamander", 2000-09-13
--------------------------------------
-
-Shell:
-
- - Switched to using ETree for the folder view. (Chris Toshok,
- Ettore)
-
- - Added interfaces to change the string displayed in the tree view
- as the name of the folder. (Ettore)
-
-Calendar:
-
- - Uses only the new iCalendar standard internally; this means future
- interoperability with new calendaring programs. (JP, Federico)
-
- - New ultra-cool date range selector, aka little calendar. (Damon)
-
- - Plenty of internal refactoring. (JP, Damon, Federico)
-
- - Pilot synch work, mostly on pcs infrastructure and some todo work (JP)
- <EXPERIMENTAL>
-
- - Pilot synch work, mostly on pcs infrastructure and some todo work (JP)
- <EXPERIMENTAL>
-
-Addressbook:
-
- - New advanced search dialog. (Michael Zucchi, Chris Lahey)
-
- - Added parsing of addresses. (Jesse Pavel)
-
- - Converted most of addressbook to UTF8. (Lauris)
-
-Mailer:
-
- - Filters (but not vfolders) are now more powerful: they can check
- any message header, and can do regexp searches on the headers and
- body. (Jeff)
-
- - A first draft of an automated mailing list recognizer
- has been added. (It will need more/better rules.) (Ettore)
-
- - Attachments are handled differently now. All attachments always
- have an icon and a header, and you can right-click on the icon to
- view/hide, save, or launch an external viewer. (Dan)
-
- - It is no longer necessary to quit and restart after adding a new
- IMAP server. (Peter)
-
- - Lots of i18n/charset fixing. (Lauris)
-
- - Shiny new toolbar icons. (Tuomas)
-
- - Giant menu reorganization. Most message operations are now in the
- "Message" menu, and folder operations in the "Folder" menu.
- (Ettore, Dan, Peter)
-
- - "Mark as seen" timeout is now configurable. Mail view remembers
- the location of the message list/message display split. (Richard
- Hult)
-
- - New filter category: "On-demand", for filters to be applied
- at arbitrary times rather than during mail incorporation. (Peter)
-
- - POP/IMAP config pages allow you to specify a port... this may
- go away in a later release when we support ssl/ssh tunneling
- directly. (Peter)
-
- - Reply To All will now remove your own addresses from the recipient
- lists. (Jesse Pavel)
-
- - Folders are synced when you switch to another folder now. (Dan)
-
- - An IMAP bug that caused all messages to be marked as read before
- they were read has been fixed. (Dan)
-
- - The IMAP provider is now more robust about dealing with other
- concurrent IMAP clients. (Jeff)
-
- - POP and IMAP are better about when they do and don't try to
- reconnect. This was part of Camel operation cancellation support,
- which unfortunately didn't make it into 0.5. (Peter)
-
- - Sent and Outbox folders are now functional. You now have 2
- options when sending a message - "Send Now" which will send the
- message imediately and "Send Later" which will queue the message in
- Outbox for later sending. When a message is successfully sent, it
- is copied to the Sent folder for your records. (Jeff)
-
-ETable:
-
- - ETree fixes. (Chris Toshok)
-
- - Lots of small usability fixes. (Chris Lahey)
-
- - Lots of grouping bug fixes. Specifically, fixed crashes when
- grouping in trees and made ETable not go crazy when you change
- data and the table is grouped. (Chris Lahey)
-
- - Improved table printing when grouped. (Chris Lahey)
-
- - Converted most of ETable to UTF8. (Lauris)
-
-
-Version 0.4, "Alewife", 2000-08-14
-----------------------------------
-
-Shell:
-
- - Added interfaces to display messages and a progress bar when the
- component is busy. (Ettore)
-
- - Changed the shell BonoboUIHandler code to allow placing menu items
- such as "Print" in the right places. (Ettore)
-
- - Added code to check if an existing `~/evolution' directory
- actually has the content we expect and, if not, complain to the
- user. (Dan)
-
- - Fixed some Bonobo-related refcounting problems. (Michael Meeks)
-
- - Removed the GConf dependency. (JP)
-
- - Improved the API for the folder selection dialog. (Ettore)
-
- - Memory leak fixes. (Peter)
-
-Calendar:
-
- The calendar is in the middle of major rewrite. Evolution 0.4
- ships with essentially the same calendar component as 0.3 did.
-
-Addressbook:
-
- - More work on the Palm Pilot conduits. (Chris Toshok)
-
- - Fixed some LDAP-related crashes. (Chris Toshok)
-
- - Added support for displaying embedded vCards through a Bonobo
- component. (Chris Lahey)
-
- - Added support for generic fields. (Chris Lahey)
-
- - Fixed the navigation order for the Tab key in the contact editor
- window. (Chris Lahey)
-
- - Fixed some Bonobo-related bugs and crashes. (Chris Lahey, Michael
- Meeks)
-
- - Only display entries that have an email address in the address
- selector dialog. (Chris Lahey)
-
- - Added an utility program to import vCards from Gnomecard. (Chris
- Lahey)
-
-Mailer:
-
- Generic
-
- - Long mailer operations (such as fetching new mail) now run
- asynchronously rather than blocking the UI. This involved
- a major rewrite of much of the Camel and mailer code. (Peter)
-
- - GPG/PGP message decryption support (Nathan Thompson-Amato, Dan)
-
- - Unfinished messages in the composer can be saved to the "Drafts"
- folder and finished later. (Jeff)
-
- - Double-clicking on a message in the message view now opens it in a
- separate window. (Jeff)
-
- - vCards attached to messages now bring up a minicard view with a
- button to add the vCard to the addressbook (Chris Lahey, Dan)
-
- - Inline uuencoded/binhexed "attachment" support (Dan)
-
- - "Mark All Messages Seen" command. (Cody Russell)
-
- Filters / VFolders
-
- - Major filter/vfolder dialog rewrite (Michael Zucchi) VFolders can
- now search any (searchable) folder, not just Inbox.
-
- - Auto-filter/auto-vfolder code (right click on a message in the
- list and pick one of the options at the bottom of the menu to
- create a filter/vfolder rule for similar messages). (Michael)
-
- - You can now set the color of messages in the message list, based
- on filter rules. (Local stores can also now store arbitrary user
- flags, although there is not yet UI code to set/view them.)
- (Michael)
-
- - Added "Save" button to the quicksearch bar to save a search as a
- vfolder. (Michael)
-
- Configuration
-
- - Major mail config dialog rewrite (JP).
-
- - The mailer now remembers your threaded/unthreaded message view
- setting between sessions. (Jeremy Wise).
-
- - Support for multiple identities (JP, Jeff), sources (JP, Peter), and
- IMAP servers (JP, Dan)
-
- Providers
-
- - You can now leave POP mail on the server. (This will [currently]
- only work right with POP servers that support the UIDL command.
- On other servers, it will never download some messages unless you
- never delete mail.)
-
- - There is now an MH-like local store available, and code to convert
- a folder from one type to the other. (Michael)
-
- - The mbox provider now writes out "From " lines that are more
- compatible with other mailers (like Mutt) that are picky about
- their exact format. (Michael)
-
- - The IMAP provider now supports searching (Jeff). Also various
- other speed/efficiency/robustness improvements (Jeff), and support
- for old IMAP4 servers as well as IMAP4rev1 (Jon K Hellan).
-
-
-Version 0.3, "Jellyfish", 2000-07-21
-------------------------------------
-
-Shell:
-
- - Pop-up folder selection. (Ettore)
-
- - Added support for multiple views. (Ettore)
-
- - Added support for saving component-specific settings, and
- some initial code to save the view's configuration.
- (Ettore)
-
- - Fixed the Bonobo menu code so that it works with all the
- locales. (Ettore)
-
-Mailer:
-
- - Lots of IMAP fixes. (Jeff)
-
- - You can use an external setuid/setgid movemail program
- (although we don't ship our own yet). If you have one
- installed with emacs, the configure script will find
- that. Otherwise, you can specify --with-movemail=/path.
- (Dan)
-
- - You can toggle HTML/plain text for an individual message
- in the composer now. (Ettore)
-
- - Bonobo embedding sort of works again, but there are
- problems with size allocation somewhere. Attachments can now
- also be handled by external applications. (Dan)
-
- - text/plain mail is now line-wrapped in the mail display,
- to deal with people who don't put newlines in their mail.
- (Dan)
-
- - Allow user to specify IMAP namespace in the mail config
- dialog. (Dan, Jeff)
-
- - Quoted-printable encoder fixes. (Michael Zucchi)
-
- - Various NNTP fixes, include a news pane in the config
- dialog. (Chris Toshok)
-
- - Some memory corruption fixes. (Peter Williams)
-
- - Fix for message not being re-drawn as deleted. (Peter
- Williams, Jeff)
-
- - Moving a message to another folder copies the flags now
- (Jeff)
-
- - Close signature in HTML mail with </PRE>, not <PRE>, and
- default to ~/.signature. (Michael Meeks)
-
- - Fixed some confusing behavior in the message threading
- algorithm. (Dan)
-
- - Improvements to the item selection code. (Chris Lahey)
-
-Calendar:
-
- - Added support for a bunch of previously unsupported iCalendar
- properties. (Federico)
-
- - Conduit for synchronizing the calendar with gnome-pilot
- (requires gnome-pilot from CVS). (Seth)
-
- - ETable-based to-do list view ("taskpad"), for your viewing
- pleasure.
-
-Addressbook:
-
- - Conduit for synchronizing the addressbook with gnome-pilot
- (requires gnome-pilot from CVS). (Chris Toshok)
-
- - Conduit for synchronizing the addressbook with gnome-pilot
- (requires gnome-pilot from CVS). (Chris Toshok)
-
- - Fixed some random crashes. (Chris Lahey)
-
- - Implemented a vCard Bonobo control so that we can support
- inline vCard viewing in the mailer. (Chris Lahey)
-
- - Quick search looks at both the name and the company name now.
- (Chris Lahey)
-
- - Added more functionality to the contact editor's toolbar. (Chris
- Lahey)
-
- - Support for printing single cards. (Chris Lahey)
-
-Version 0.2, "Saccharomyces", 2000-07-11
-----------------------------------------
-
-Shell:
-
- * Folder selection dialog (Ettore).
-
- * Folder creation dialog (Ettore).
-
-Addressbook:
-
- * LDAP server configuration dialog (Chris Toshok).
-
- * Integration of LDAP servers in the shell's tree view (Chris Toshok).
-
- * ETable-based view (Chris Lahey).
-
- * Printing support for the ETable-based view (Chris Lahey).
-
- * Address selection dialog integrated with the message composer (Chris
- Lahey).
-
- * Many miscellaneous bugs fixed (everyone).
-
-Calendar:
-
- * Printing support (Michael, Federico).
-
- * Many, many behavior fixes and polishing to the day/week/month view
- widgets (Damon).
-
- * New glade-based event editor. This is unfinished but usable (Seth,
- Federico).
-
- * Mouse wheel scrolling support (Anders).
-
- * We have an awesome new engine for computing recurring events
- (Damon). This will be plugged in to the new iCalendar code.
-
- * Internal and public API fixes (Federico, Seth).
-
- * Shell-related changes (Ettore).
-
- * Data model for ETable; this is not used yet (Federico).
-
- * New iCalendar support; this is not used yet (Federico).
-
- * Pilot syncing updates; this is not used yet (Seth).
-
- * Many miscellaneous bugs fixed (everyone).
-
-
-Mailer:
-
- Major features:
-
- * Basic IMAP support (Jeff)
-
- * Threaded message view (Michael, Chris Toshok)
-
- * Filters now work (original work by Michael, bugfixes by Dan)
-
-
- Smaller features:
-
- * Implemented moving messages between folders (Dan)
-
- * Very basic printing support (Dan, but it was only like 5 lines
- of code, because gnome-print kicks ass)
-
- * "Delete", "Forward", and "Refile" operations now work on
- multiple messages. (Chris Lahey, Peter Williams, Dan)
-
- * Toggle read/unread flag when the user clicks on the envelope
- icon (Chris Lahey, Dan).
-
- * The "New folder" menu item now works (Ettore, Dan).
-
- * The filter/vfolder druid now uses the new shell folder selection
- UI (Michael)
-
- * Added "Cc" to the set of filter/vfolderable headers and make the
- filter/vfolder "messages to address" rule work with to or cc.
- (Dan)
-
- * New key bindings: "Delete" deletes the current message and jumps
- to the next undeleted message. "N" and "P" go to next/previous
- unread message. (Dan)
-
- * Keep asking for POP/IMAP password until the user gets it correct
- or hits Cancel, and remember the result until the user exits (or
- chooses "Forget Passwords"). (Dan, Jeff)
-
- * Kludge Camel to output ISO-8859-1 instead of UTF-8, since
- neither GtkHTML nor ETable supports UTF-8 still. (Dan)
-
- * Use the gnome-vfs "sniff buffer" interface to try to identify
- the MIME type of attachments without useful type information
- (Dan)
-
- * Allow saving drafts in the composer (Ettore)
-
- * Added "Received date" header to the set of possible message list
- headers. (Dan)
-
- * Partial gladification of the config dialog (JP Rosevear)
-
-
- Bug fixes:
-
- * Message read/unread/deleted flags should now be saved reliably
- when you exit, and summary should not be rebuilt when a rebuild
- isn't needed. Expunging should work reliably (Dan, Ettore,
- Jeff).
-
- * Fix disappearing toolbar bug (Dan).
-
- * Fixed a bug that made downloading of very large messages over
- POP incredibly slow, and various other smaller POP bugs. (Dan)
-
- * Fixed bugs that made large attachments sometimes get dropped and
- small ones sometimes get truncated. (Dan)
-
- * Fixed filter/vfolder "messages to address" rule to correctly
- match "to" rather than "from". (Michael)
-
- * Fix some text/plain formatting bugs in the composer. (Dan,
- Ettore)
-
- * Turn off search mode when getting new mail (to avoid corrupting
- the display). Make "get mail" always put unfiltered mail into
- Inbox rather than the current folder. (Dan)
-
- * Fixed a bug that caused "Re:" to be prepended even to subjects
- that started with "Re:" when replying. Added a default subject
- to forwarded messages. (Dan)
-
- * Make the "Attach" dialog in the composer remember the last
- directory it was in. (Dan)
-
- * Code to parse invalid date formats since some mailers generate
- them... (Jeff)
-
- * Fixed various small SMTP bugs (Jeff, Chris Lahey)
-
- * Fixed some memory leaks (Peter, Jeff)
-
- * Make replies use the text/plain part of a multipart/alternative
- if the user configured plain text rather than HTML mail sending.
- (Dan)
-
- * Various config dialog fixes (Jeff)
-
- * Partial filter/vfolder GUI facelift (Jacob)
diff --git a/README b/README
deleted file mode 100644
index 208e99b18c..0000000000
--- a/README
+++ /dev/null
@@ -1,215 +0,0 @@
-Evolution is the integrated mail, calendar and address book
-distributed suite from Ximian, Inc.
-
-See http://www.ximian.com/apps/evolution.php3 for more information.
-
-Note that Evolution is still beta. This means it may delete all of
-your mail if you give it the chance.
-
-If you are using Evolution, you should subscribe to the Evolution
-mailing list. If you are interested in hacking on it, you should
-subscribe to the Evolution Hackers mailing list. Send mail to
-"evolution-request@ximian.com" or
-"evolution-hackers-request@ximian.com" with the word "subscribe" in
-the body of the message. If you are planning to work on any part of
-Evolution, please send mail to the mailing list first, to avoid
-duplicated effort (and to make sure that you aren't basing your work
-on interfaces that are expected to change).
-
-There are mailing list archives available at
-http://lists.ximian.com/archives/public/evolution/ and
-http://lists.ximian.com/archives/public/evolution-hackers/
-
-There is also an #evolution IRC channel on irc.gnome.org.
-
-
-IF IT DOESN'T WORK
-------------------
-
-Did you read the "How to build" section below? :-)
-
-If you have built Evolution and it doesn't work, or you can't get it
-or one of its dependencies to compile, try running the
-"verify-evolution-install.sh" script in the tools/ subdirectory. It
-may be able to figure out what went wrong.
-
-If the configure script complains that you don't have a library that
-you know you have installed, it usually means either that you've
-installed things into multiple prefixes (see the bits on GNOME_PATH
-below) or (if you're on Linux) that you installed the "foo" package
-but forgot the "foo-devel" package.
-
-
-HOW TO BUILD EVOLUTION
-----------------------
-
- *** READ THIS BEFORE YOU START BUILDING ANYTHING! ***
-
-Evolution depends on a large number of unreleased and rapidly-changing
-libraries. Some of these libraries in turn depend on other unreleased
-and rapidly-changing libraries.
-
-Building Evolution is HARD, and it's going to stay hard until all of
-the libraries it depends on stabilize, and there's nothing we can do
-to make it any easier until then.
-
-
-General Principles
-------------------
-
-First you have to decide whether you want to install Evolution (and
-its dependencies) into the same prefix as the rest of your GNOME
-install, or into a new prefix. Installing everything into the same
-prefix as the rest of your GNOME install will make it much easier to
-build and run programs, and easier to switch between using packages
-and building it yourself, but it may also make it harder to uninstall
-later.
-
-If you want to install into the same prefix as the rest of GNOME,
-type:
-
- gnome-config --prefix
- gnome-config --sysconfdir
-
-and remember the answers, and pass them to "configure" or "autogen.sh"
-when building the other packages you need. Eg:
-
- ./configure --prefix=/usr --sysconfdir=/etc
-
-
-If you build in another prefix instead, you will need to set the
-GNOME_PATH environment variable (and ACLOCAL_FLAGS as well if building
-from CVS) to include the prefix you install into. Eg:
-
- export GNOME_PATH=/usr/local
- export ACLOCAL_FLAGS="-I /usr/local/share/aclocal"
-
-(Assuming your shell is bash, and you installed into /usr/local.) You
-need to set GNOME_PATH both during compiling AND when you run
-evolution. Remember also that if you're installing into an odd prefix
-such as /evolution, that you also need to make sure to put
-${prefix}/bin in your PATH and ${prefix}/lib in your LD_LIBRARY_PATH.
-
-
-Dependencies
-------------
-
-All of these libraries are available in GNOME CVS, under the given
-names. Most (but not all) of them are also available as tarballs on
-ftp.gnome.org. The (*)ed packages are available in Ximian GNOME
-(http://www.ximian.com/desktop/) Other packages may be available from
-the Ximian GNOME evolution preview mirror.
-
-If installing from packages, remember that you need both the runtime
-and -devel packages for each library.
-
- - xml-i18n-tools - lates from xml-i18n-tools-stable-1-x branch in
- GNOME CVS (0.8.2 is too old)
-
- - gnome-xml - 1.8.10 or later in the 1.0 series, but not from the 2.0
- series (If you get this from GNOME CVS, use the tag "LIB_XML_1_BRANCH".)
- (*)
-
- - gnome-print - 0.25 or later (*)
-
- - gdk-pixbuf - 0.9.0 or later (*)
-
- - ORBit - 0.5.6 or later (*) (If you get this from GNOME CVS, use the
- tag "orbit-stable-0-5".)
-
- - oaf - 0.6.2 or later (If you get this from GNOME CVS, use the tag
- "oaf-stable-0-6")
-
- *** If you are using oaf from CVS, you should use the flag
- *** "--disable-more-warnings" when configure, or it may fail to
- *** build.
-
- - gconf - 0.6 or later.
-
- - gnome-vfs - 0.4.2 or later (If you get this from GNOME CVS, use
- the tag "gnome-vfs-1-0")
-
- *** If you are using gnome-vfs from CVS, you should use the flag
- *** "--disable-more-warnings" when configuring, or it may fail to
- *** build.
-
- - libglade - 0.14 or later
-
- - bonobo - 0.37 or later
-
- *** Note that bonobo must be installed with the same --prefix as
- *** either gnome-libs or evolution for the Makefiles to work
- *** properly.
-
- - gal (GNOME Application Library) - 0.7.99.2 or later
-
- - gtkhtml - later than 0.9.3
-
-If you want support for PalmPilot syncing (currently experimental so
-please back up your pilot) you will also need to do the following:
-
-1) pilot-link
-cvs -d :pserver:anonymous@cvs.gnu-designs.com:/cvs/pilot-link login
-The password is just <ENTER>.
-cvs -d :pserver:anonymous@cvs.gnu-designs.com:/cvs/pilot-link co pilot-link
-./configure --prefix=<pilot-link-prefix> --with-perl=no --with-java=no
---with-tcl=no --with-python=no
-make
-make install
-
-2) gnome-pilot
-cvs -z3 co gnome-pilot
-./autogen.sh --prefix=<gnome-pilot-prefix> --with-pisock=<pilot-link-prefix>
-make
-make install
-
-3) evolution
-in your evo source dir do ./autogen.sh --prefix=<evo-prefix>
---with-pisock=<pilot-link-prefix> --enable-pilot-conduits=yes
-make
-make install
-
-
-If you want support SSL (and someday S/MIME), you will also need libnspr4 and
-libnss3 which can be found at http://www.mozilla.org.
-
-Once you have libnspr4 and libnss3 (and their respective includes) installed,
-in your evolution source dir do:
-./autogen.sh --prefix=<evo-prefix> --with-nspr-includes=<nspr-includes-prefix>
---with-nspr-libs=<nspr-libs-prefix> --with-nss-includes=<nss-includes-prefix>
---with-nss-libs=<nss-libs-prefix>
-
-You'll need to `cp ~/.mozilla/default/*.db ~/evolution` on you've
-installed Evolution in order to get a functional SSL-enabled
-Evolution.
-
-The layout of the source tree is:
-
-addressbook: the Address Book UI
-art: graphics used by evolution
-calendar: the Calendar UI
-camel: libcamel, a messaging library used by the mailer.
- Camel is inspired by Sun's JavaMail
- (http://java.sun.com/products/javamail/) and the
- IMAPv4 spec (RFC 2060).
-composer: the message composer UI
-data: the .desktop file for Evolution
-default_user: initial Evolution config files for new users
-devel-docs: entirely inadequate documentation
-doc: more adequate documentation
-e-util: utility code used by various parts of Evolution
-filter: libfilter, a mail filtering library
-libibex: an indexing library used by the mailer
-libical: a library for the iCalendar format (RFC 2445-2446)
-libversit: a library for the vCard (RFC 2425-2426) and vCalendar
- (http://www.imc.org/pdi/vcal-10.txt) formats
-mail: the mail display UI
-shell: the Evolution shell (the main program that launches
- the other components)
-tests: some test programs
-tools: utilities, notably "killev", a script to kill of all
- of the Evolution components
-widgets: widgets used by Evolution, including the shortcut bar
-wombat: Has source code that will load in the addressbook
- and calendar backend, and will form the server
- process we'll be using
diff --git a/acconfig.h b/acconfig.h
deleted file mode 100644
index 4b6a2c2d6f..0000000000
--- a/acconfig.h
+++ /dev/null
@@ -1,34 +0,0 @@
-#undef ENABLE_NLS
-#undef HAVE_CATGETS
-#undef HAVE_GETTEXT
-#undef HAVE_LC_MESSAGES
-#undef HAVE_STPCPY
-#undef HAVE_LIBSM
-#undef PACKAGE
-#undef VERSION
-#undef ENABLE_THREADS
-#undef SENDMAIL_PATH
-#undef SYSTEM_MAIL_DIR
-#undef HAVE_LDAP
-#undef HAVE_TIMEZONE
-#undef HAVE_TM_GMTOFF
-#undef HAVE_KRB4
-#undef NEED_KRB_SENDAUTH_PROTO
-#undef HAVE_KRB5
-#undef HAVE_NSS
-#undef HAVE_SSL
-#undef HAVE_OPENSSL
-#undef MOVEMAIL_PATH
-#undef USE_DOT
-#undef USE_FCNTL
-#undef USE_FLOCK
-#undef ENABLE_NNTP
-
-/* Sub-version identification string. */
-#undef SUB_VERSION
-
-/* Define if ctime_r takes three arguments */
-#undef CTIME_R_THREE_ARGS
-
-/* Define if gethostbyname_r takes five arguments */
-#undef GETHOSTBYNAME_R_FIVE_ARGS
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755
index eec4b5f56d..0000000000
--- a/autogen.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-# Run this to generate all the initial makefiles, etc.
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-PKG_NAME="evolution"
-
-
-. $srcdir/macros/autogen.sh
diff --git a/calendar/.cvsignore b/calendar/.cvsignore
deleted file mode 100644
index b7f7dea650..0000000000
--- a/calendar/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-Makefile.in
-Makefile
-.deps
-_libs
-.libs
-*.lo
diff --git a/calendar/AUTHORS b/calendar/AUTHORS
deleted file mode 100644
index 0049fa248e..0000000000
--- a/calendar/AUTHORS
+++ /dev/null
@@ -1,5 +0,0 @@
-Miguel de Icaza <miguel@kernel.org>
-Federico Mena <federico@helixcode.com>
-Arturo Esponosa <arturo@nuclecu.unam.mx>
-Russell Steinthal <rms39@columbia.edu>
-Rodrigo Moya <rodrigo@ximian.com>
diff --git a/calendar/ChangeLog b/calendar/ChangeLog
deleted file mode 100644
index 249a9ae465..0000000000
--- a/calendar/ChangeLog
+++ /dev/null
@@ -1,10214 +0,0 @@
-2001-05-21 Federico Mena Quintero <federico@ximian.com>
-
- Fix bug #2831; the tasks toolbar and menu now have a button to
- delete the selected tasks.
-
- * gui/e-calendar-table.c (e_calendar_table_delete_selected): New
- function.
- (delete_cb): Use e_calendar_table_delete_selected().
- (e_calendar_table_get_table): New function.
-
- * gui/tasks-control.c (tasks_control_new_task_cmd): Handle the
- delete command.
- (selection_changed_cb): Change the sensitivity of the TasksDelete
- command when the selection in the table changes.
-
- * gui/e-tasks.c (table_selection_change_cb): Notify upstream when
- the ETable selection changes.
-
-2001-05-18 Federico Mena Quintero <federico@ximian.com>
-
- Fix bug #2829.
-
- * gui/dialogs/delete-comp.c (delete_component_dialog): Allow the
- caller to specify whether just one or many components are to be
- deleted.
-
- * gui/e-calendar-table.c (tasks_popup_one): Popup menu definition
- for when one and only one task is selected.
- (tasks_popup_many): Likewise, for more than one task.
- (e_calendar_table_on_right_click): Do not create a structure for
- the closure data; we can simply pass the cal_table. Use a
- different menu depending on the number of selected tasks.
- (mark_as_complete_cb): Renamed; now iterates over the selected
- rows.
- (delete_selected_components): New function to delete all the
- selected components.
- (delete_cb): Adjusted for delete_component_dialog().
- (open_task): New function, simply open a CalComponent in the task
- editor.
- (open_task_by_row): Renamed; use open_task().
-
- * gui/e-week-view.c (e_week_view_on_delete_appointment): Updated
- for delete_component_dialog().
-
- * gui/e-day-view.c (e_day_view_on_delete_appointment): Likewise.
-
-2001-05-16 Duncan Mak <duncan@ximian.com>
-
- * gui/Makefile.am (evolution_calendar_SOURCES): removed
- editor-page.[ch] because they've now moved dialogs.
-
-2001-05-16 Federico Mena Quintero <federico@ximian.com>
-
- Split the event and task editors into different objects for the
- separate pages; this way they can be shared by both editors.
-
- * gui/dialogs/editor-page.[ch]: New abstract class for a page in a
- calendar component editor.
-
- * gui/dialogs/event-page.[ch]: Main page of an event editor.
-
- * gui/dialogs/alarm-page.[ch]: Alarm page of a calendar component
- editor.
-
- * gui/dialogs/recurrence-page.[ch]: Recurrence page of a calendar
- component editor.
-
- * gui/dialogs/event-page.c (event_page_fill_widgets): Eeek, this
- was missing a bunch of break statements.
- (event_page_fill_component): Use a temporary variable rather than
- allocating a struct icaltimetype.
-
- * gui/dialogs/alarm-page.c (get_alarm_string): Do not use
- fixed-size buffers.
- (alarm_page_fill_widgets): Use cal_obj_uid_list_free().
- (append_reminder): Now the list stores the plain CalComponentAlarm
- structures in the row data. We do *NOT* want to be frobbing the
- component's data directly. Rather, we clone the alarms from the
- component and maintain them on our own.
- (alarm_page_fill_component): Clone the alarms before adding them
- to the component so that we maintain the invariant that the alarm
- structures in the list did *not* come from the component.
-
- * cal-util/cal-component.c (cal_component_add_alarm): Added
- documentation.
- (cal_component_remove_alarm): Added documentation.
- (cal_component_remove_alarm): Do a lookup in our hash table of
- alarms instead of scanning the whole component.
- (CalComponentAlarm): Removed the `parent' field, since it was
- unused.
- (cal_component_free_alarm_uids): Removed function, since
- cal_component_get_alarm_uids() is documented so that the user will
- know that he must use cal_obj_uid_list_free().
- (cal_component_alarm_clone): New function.
-
-2001-05-09 Federico Mena Quintero <federico@ximian.com>
-
- * gui/Makefile.am (evolution_calendar_SOURCES): Added
- editor-page.[ch] to the list of sources.
-
-2001-05-09 JP Rosevear <jpr@ximian.com>
-
- * gui/event-editor.c (reminder_add_cb): switch on the correct
- widget and map
-
-2001-05-08 JP Rosevear <jpr@ximian.com>
-
- * gui/e-itip-control.c (e_itip_control_factory): unref the
- property bag when we finish with it
-
- * gui/evolution-calendar-control.c (calendar_properties_init): ditto
-
- * gui/control-factory.c (calendar_properties_init): ditto
-
- * gui/calendar-summary.c (create_summary_view): ditto
-
-2001-05-08 JP Rosevear <jpr@ximian.com>
-
- * cal-util/cal-component.c (cal_component_alarm_free):
- (cal_component_alarm_free): free the alarm component if it doesn't
- have a parent, rather than if it does
-
- * gui/Makefile.am: sanitize LD_ADDS and CFLAGS so the libtool
- lines are shorter (fixes problem on solaries due to sed)
-
-2001-05-07 JP Rosevear <jpr@ximian.com>
-
- * pcs/cal-factory.[hc]: Convert to bonobo xobject
-
- * pcs/cal.[hc]: Convert to bonobo xobject
-
-2001-05-07 Gediminas Paulauskas <menesis@delfi.lt>
-
- * gui/event-editor.c (make_title_from_comp): conversion summary
- from utf8 here, use translated strings as is.
- (set_title_from_comp): reflect this, simplify.
-
- * gui/dialogs/task-editor.c: updated copies of above functions here.
-
- * gui/gnome-cal.c: use defines from widgets/misc/e-filter-bar.h for
- consistency in "Show all".
-
-2001-05-04 JP Rosevear <jpr@ximian.com>
-
- * gui/calendar-model.c (calendar_model_append_row): unref the
- calcomponent when we're done with it
-
- * cal-util/cal-component.c (cal_component_gen_uid): free the iso
- date string when we finish with it
-
-2001-04-27 JP Rosevear <jpr@ximian.com>
-
- * gui/e-meeting-edit.c (put_property_in_list): remove hardcoded
- values
- (edit_attendee): ditto, and there are only 4 roles now
-
- * gui/e-meeting-dialog.glade: tweak
-
- * gui/itip-utils.c: There shouldn't be an "other" role
-
-2001-04-26 JP Rosevear <jpr@ximian.com>
-
- * gui/e-meeting-edit.c (edit_attendee): use enums not hard code
- values
-
-2001-04-26 JP Rosevear <jpr@ximian.com>
-
- * gui/e-meeting-edit.c (add_button_clicked_cb):
- icalparameter_new_rsvp now takes an enum
-
-2001-04-26 JP Rosevear <jpr@ximian.com>
-
- * cal-util/cal-component.c (cal_component_alarm_set_trigger): the
- value type should be inited with ICAL_VALUE_* rather than
- ICAL_*_VALUE because it is a param argument.
-
-2001-04-26 Federico Mena Quintero <federico@ximian.com>
-
- * gui/calendar-model.c (get_is_overdue): Replace "<" by "<=" in
- the comparison for due dates against the current time. This makes
- tasks appear immediately as red when you click Now in the due date
- popup field.
-
- This is not a complete solution to the more general problem of
- tasks staying the same color even if they become overdue while the
- task list remains the same on the screen. This has been logged as
- bug #2399.
-
-2001-04-26 Ettore Perazzoli <ettore@ximian.com>
-
- * gui/dialogs/Makefile.am (INCLUDES): Add `$(EXTRA_GNOME_CFLAGS)'.
-
-2001-04-26 Dan Winship <danw@ximian.com>
-
- * conduits/todo/Makefile.am (libetodo_conduit_la_LIBADD): Remove
- UNICODE_LIBS
-
- * cal-client/Makefile.am (client_test_LDADD): Remove -lunicode
-
-2001-04-24 Duncan Mak <duncan@ximian.com>
-
- * gui/alarm-notify/notify-main.c (funny_trigger_cb): Fixed
- Strftime so it uses the locale prefered way to display date/time.
- ("%x %X" instead of "%Y/%m/%d %H:%M:%S")
-
-2001-04-21 Gediminas Paulauskas <menesis@delfi.lt>
-
- * gui/calendar-summary.c: translate "Things to do" etc. and convert them
- to utf8. Changed some link from helixcode to ximian.
-
-2001-04-18 Ettore Perazzoli <ettore@ximian.com>
-
- * gui/dialogs/Makefile.am (INCLUDES): Add
- `-I$(top_srcdir)/calendar/cal-client',
- `-I$(top_builddir)/calendar/cal-client'.
- * gui/Makefile.am (INCLUDES): Likewise.
-
- * cal-client/cal-query.h: #include "evolution-calendar.h".
-
-2001-04-17 Federico Mena Quintero <federico@ximian.com>
-
- * gui/event-editor.c (init_widgets): Connect to the "changed"
- signal of the categories entry so that they will be applied
- correctly.
- (EventEditorPrivate): Added fields for the contacts button and
- entry.
- (init_widgets): Disable the contacts widgets as we do not support
- them yet.
- (get_widgets): Get the contacts widgets.
-
- * gui/dialogs/task-editor.c (get_widgets): Get the contacts
- button, which was missing.
- (init_widgets): Disable the contacts widgets as we do not support
- them yet.
-
- * pcs/query.c (matches_text_list): Use e_utf8_strstrcasedecomp()
- instead of plain e_utf8_strstrcase().
- (matches_summary): Likewise.
-
-2001-04-17 JP Rosevear <jpr@ximian.com>
-
- * cal-util/cal-component.c (cal_component_alarm_set_action): the
- libical action stuff uses enums rather than strings to enumerate
- the various actions now
- (cal_component_alarm_get_action): ditto
-
-2001-04-17 Ettore Perazzoli <ettore@ximian.com>
-
- * gui/alarm-notify/Makefile.am (evolution_alarm_notify_SOURCES):
- Add `$(CORBA_GENERATED)'.
-
-2001-04-16 Dan Winship <danw@ximian.com>
-
- * pcs/Makefile.am (INCLUDES): Add EXTRA_GNOME_CFLAGS, for gal.
-
-2001-04-15 Federico Mena Quintero <federico@ximian.com>
-
- * gui/gnome-cal.c (setup_widgets): Create the ESearchBar thingy.
- (search_bar_query_changed_cb): Build the different queries based
- on the type and string.
-
- * pcs/query.c (backend_obj_updated_cb): Ref the query while we are
- notifying the listener so that it will not disappear from under us.
- (backend_obj_removed_cb): Likewise.
- (process_component_cb): Likewise.
- (func_contains): New function to match text fields.
- (matches_comment): New function to match comment lists.
- (matches_description): New function to match description lists.
- (matches_summary): New function to match summaries.
- (matches_any): New function to match any text field.
- (func_has_categories): New function to match categories.
-
-2001-04-14 Federico Mena Quintero <federico@ximian.com>
-
- * gui/alarm-notify/notify-main.c (main): Initialize the trigger
- and queue systems.
-
-2001-04-13 Dan Winship <danw@ximian.com>
-
- * cal-util/timeutil.c (time_from_isodate): Fix the syntactic bogon
- here, and attempt to fix the logical bogon too. (tm_gmtoff and
- timezone have opposite signs... I'm assuming Federico tested the
- Linux case, so I'm flipping the sign of the BSD case. But maybe he
- didn't and it's supposed to be the other way...)
-
-2001-04-12 Federico Mena Quintero <federico@ximian.com>
-
- * gui/e-day-view.c (update_query): New function to restart a query
- for the day view.
- (query_obj_updated_cb): Renamed from obj_updated_cb(); updated for
- queries instead of calendar clients.
- (query_obj_removed_cb): Likewise.
- (cal_opened_cb): Just update_query() instead of queueing reloading
- all the events.
- (e_day_view_set_cal_client): Likewise.
- (e_day_view_set_query): Likewise.
- (e_day_view_set_selected_time_range): Likewise.
- (e_day_view_set_days_shown): Likewise.
- (e_day_view_recalc_work_week): Likewise.
- (e_day_view_queue_reload_events): Removed function now that events
- are updated entirely by the query.
- (e_day_view_reload_events_idle_cb): Likewise.
- (e_day_view_reload_events): Likewise.
- (e_day_view_init): Use a pretty arrow instead of GDK_TOP_LEFT_ARROW.
-
- * gui/e-week-view.c: Analogous changes to the ones in e-day-view.c.
- (e_week_view_init): Use a pretty arrow instead of GDK_TOP_LEFT_ARROW.
-
- * cal-util/timeutil.c (isodate_from_time_t): Return a g_strdup()ed
- version of the string instead of a pointer to a static buffer.
- (time_from_isodate): Resurrected function. Polished up to our
- current standards of paranoia.
-
- * pcs/query.c (func_time_now): New function (time-now).
- (func_make_time): New function (make-time ISODATE).
- (func_time_add_day): New function (time-add-day TIME N).
- (func_time_day_begin): New function (time-day-begin TIME).
- (func_time_day_end): New function (time-day-end TIME).
- (func_occur_in_time_range): Use time_t values instead of ints.
- (match_component): Free the stringized component. Free the ESexp
- result value.
-
- * gui/e-day-view.h: Removed a couple of unused prototypes.
-
- * pcs/query.c (query_destroy): Oops, disconnect from the backend.
-
- * pcs/cal.c (Cal_get_query): Duplicate the query reference before
- we return it.
-
- * gui/calendar-commands.c (pixmaps): Fixed paths to image files.
-
-2001-04-11 JP Rosevear <jpr@ximian.com>
-
- * pcs/cal-backend-file.c (cal_backend_file_compute_changes):
- prepend to both changes and change_ids when different and mark as
- modified, not added
-
-2001-04-11 Christopher James Lahey <clahey@ximian.com>
-
- * gui/calendar-model.c (calendar_model_append_row): Fix this to
- just send the data to the wombat instead of inserting it
- ourselves.
-
-2001-04-11 Gediminas Paulauskas <menesis@delfi.lt>
-
- Display fixes, thanks to Kjartan for finding these.
-
- * gui/event-editor.c: use simple (not e_utf8_) gtk_clist_append for
- strings which are never in utf-8.
- * dialogs/delete-comp.c (delete_component_dialog): convert only
- summary from utf-8 to gtk charset. Translated values are in correct
- craset already.
-
-2001-04-04 Kjartan Maraas <kmaraas@gnome.org>
-
- * gui/calendar-commands.c: Fix headers.
- * gui/calendar-config.c: Same here.
- * gui/calendar-model.c: Same here.
- * gui/e-day-view-time-item.c: Same here.
- * gui/e-day-view-top-item.c: Same here.
- * gui/e-day-view.c: Same here.
- * gui/e-meeting-edit.c: Same here.
- * gui/e-week-view-main-item.c: Same here.
- * gui/e-week-view.c: Same here.
- * gui/event-editor.c: Same here.
- * gui/gnome-cal.c: Same here.
- * gui/goto.c: Same here.
- * gui/main.c: Same her.
- * gui/print.c: Same here.
-
-2001-04-02 Federico Mena Quintero <federico@ximian.com>
-
- * gui/e-tasks.c (e_tasks_setup_menus): Plug leak.
-
- * gui/event-editor.c (obj_updated_cb): Do nothing for now until we
- think of something sensible to do.
- (obj_removed_cb): Likewise.
-
- * gui/dialogs/task-editor.c (obj_updated_cb): Likewise.
- (obj_removed_cb): Likewise.
-
- * gui/event-editor.c (dialog_to_comp_object): Plug leak.
-
-2001-04-01 Federico Mena Quintero <federico@ximian.com>
-
- Client-side glue for the live query engine.
-
- * cal-client/query-listener.[ch]: New files with the
- implementation fo the QueryListener interface.
-
- * cal-client/cal-query.[ch]: New files with the client-side
- convenience object for live queries.
-
- * cal-client/cal-listener.h (CalListenerClass): Removed unused
- slots for signal handlers.
-
- * cal-client/Makefile.am (libcal_clientinclude_HEADERS): Now we
- install the evolution-calendar.h header. This sucks a bit.
-
-2001-04-01 Gediminas Paulauskas <menesis@delfi.lt>
-
- * gui/calendar-commands.c: use new pixmap cache. Added some menu icons
- and changed filenames of renamed icons.
- * gui/tasks-control.c: added icons for new task and print in menu.
-
-2001-03-29 Federico Mena Quintero <federico@ximian.com>
-
- Engine for live queries to calendars. A query object watches a
- CalBackend in the PCS and is otherwise completely separate from
- it; backends need to do nothing to support live queries. Right
- now we have the following functions:
-
- (get-vtype)
-
- Returns a string indicating the type of component
- (VEVENT, VTODO, VJOURNAL, VFREEBUSY, VTIMEZONE,
- UNKNOWN).
-
- (occur-in-time-range? START END)
-
- START - int, time_t start of the time range
- END - int, time_t end of the time range
-
- Returns a boolean indicating whether the component
- has any occurrences in the specified time range.
-
- * idl/evolution-calendar.idl (Cal::getQuery): New method that
- initiates a live query.
- (Query): New interface for a handle to a live query.
- (QueryListener): New interface for a listener to changes in a live
- query.
-
- * pcs/query.[ch]: New files with the live query engine.
-
- * pcs/cal-backend.h (CalBackendClass): Added notification signals
- so that the query system can catch them.
- (CalBackendClass): New virtual method ::get_load_state().
-
- * pcs/cal-backend.c (cal_backend_opened):
- (cal_backend_obj_updated):
- (cal_backend_obj_updated): New functions to emit the notification
- signals; to be used only by backend implementations.
- (cal_backend_get_load_state): New function.
-
- * pcs/cal-backend-file.c (notify_update): Call
- cal_backend_obj_updated().
- (notify_remove): Call call_backend_obj_removed().
- (open_cal): Free the icalcomp if it is not of the correct type.
- (cal_backend_file_get_load_state): Implemented new method.
-
- * pcs/cal-backend-db.c (cal_backend_db_update_object): Call
- cal_backend_obj_updated().
- (cal_backend_db_remove_object): Call cal_backend_obj_removed().
- (cal_backend_db_get_load_state): Implemented new method.
-
- * pcs/cal.c (Cal_get_query): Implementation of the ::getQuery()
- method.
-
-2001-03-27 Anna Marie Dirks <anna@ximian.com>
-
- * gui/e-itip-control.c: fixed button placement to comply
- with gnome standards.
-
-2001-03-27 Anna Marie Dirks <anna@ximian.com>
-
- * gui/e-itip-control.glade: fixed spacing and label alignment to
- comply with gnome standards. Also removed shadows from extraneous
- scrolled windows to avoid bevelitous. There are many more changes
- that need to happen to this viewer, but they all require a hacker
- to do some c-coding, so I will avoid committing them until after the
- .10 release.
-
-2001-03-26 Kjartan Maraas <kmaraas@gnome.org>
-
- * cal-client/client-test.c: Replace includes of <gnome.h>, <bonobo.h>
- and <gtk/gtk.h> with the needed headers to speed up compile.
- * cal-util/test-recur.c: Same here for <gtk/gtk.h>
- * gui/calendar-commands.c: Replace <bonobo.h> and remove
- <libgnorba/gnorba.h>
- * gui/calendar-summary.c: Replace <gnome.h> and <bonobo.h>
- * gui/calendar-summary.h: Added <bonobo/bonobo-generic-factory.h>
- * gui/component-factory.c: Remove <bonobo.h>
- * gui/control-factory.c: Replace <bonobo.h>
- * gui/e-calendar-table.c: Remove <gnome.h>
- * gui/e-itip-control.c: Replace <gnome.h> and <bonobo.h>
- * gui/e-meeting-edit.c: Replace <bonobo.h>
- * gui/e-tasks.c: Replace <gnome.h>
- * gui/e-tasks.h: Replace <bonobo.h>
- * gui/gnome-cal.h: Remove <bonobo.h>
- * gui/main.c: Replace <bonobo.h> and <glade/glade.h>
- * gui/tasks-control-factory.c: Replace <bonobo.h>
- * gui/tasks-control.c: Replace <gnome.h> and <bonobo.h>
- * gui/weekday-picker.c: Add <string.h> and <libgnome/gnome-defs.h>
- * gui/alarm-notify/client-main.c: Remove <gnome.h> and <bonobo.h>
- * gui/alarm-notify/notify-main.c: Replace <gnome.h> and <bonobo.h>
- * gui/dialogs/alarm-notify-dialog.c: Replace <gnome.h>
- * pcs/cal-backend.c: Replace <gtk/gtk.h>
-
-2001-03-25 Federico Mena Quintero <federico@ximian.com>
-
- * gui/e-calendar-table.c (e_calendar_table_init): The
- model_rows_{inserted,deleted} signals changed names; deal with it.
- (e_calendar_table_on_rows_inserted): Updated for new ETable API.
- (e_calendar_table_on_rows_deleted): Likewise.
-
- * gui/gnome-cal.h (GnomeCalendarOpenMode): Removed unused enum.
-
- * gui/gnome-cal.c (gnome_calendar_open): Constify.
-
- * gui/calendar-commands.c (calendar_set_uri): Removed function,
- since it was just calling gnome_calendar_open().
-
- * gui/control-factory.c (set_prop): Replace usage of
- calendar_set_uri() with gnome_calendar_open().
- (load_calendar): Likewise.
- (calendar_persist_init): Made static.
-
- * gui/e-tasks.c: #include "calendar-config.h"
- (e_tasks_update_all_config_settings): We are configuring a table,
- not a calendar! Use the appropriate function.
-
-2001-03-17 Miguel de Icaza <miguel@ximian.com>
-
- * gui/e-day-view.c (e_day_view_on_new_event,
- e_day_view_on_new_appointment): Simplifed this function to use the
- shared code.
-
- * gui/e-week-view.c (e_week_view_on_new_event,
- e_week_view_on_new_appointment): ditto.
-
- * gui/gnome-cal.c (gnome_calendar_new_appointment_for): New
- function used to launch editor components with a time range. A
- bunch of functions use this code now instead of duplicating code
- all over the place
-
- * gui/e-week-view.c (e_week_view_new_event): Moved functionality
- here from e_day_view_on_new_appointment. Allows setting for "full
- day" event.
- (e_week_view_on_new_full_day): New function for making a full day
- event.
- (e_week_view_on_goto_date): Go To support.
- (e_week_view_on_goto_today): Goto today support.
-
- * gui/e-day-view.c (e_day_view_new_event): Moved functionality
- here from e_day_view_on_new_appointment. Allows setting for "full
- day" event.
- (e_day_view_on_new_full_day): New function for making a full day
- event.
- (e_day_view_on_goto_date): Go To support.
- (e_day_view_on_goto_today): Goto today support.
-
- * main_items: Add New All Day Event; Go to Today; Go to Date.
-
-2001-03-07 Miguel de Icaza <miguel@ximian.com>
-
- * gui/control-factory.c (calendar_persist_init): New function:
- inits the BonoboPersistFile server.
-
- * gui/GNOME_Evolution_Calendar.oaf.in: Added BonoboPropertyBag to
- the list of supported interfaces that were supported but not
- reported. Add the new PersistFile.
-
- Add text/calendar mime type attribute.
-
-2001-03-15 Dan Winship <danw@ximian.com>
-
- * gui/e-week-view.c (e_week_view_start_editing_event):
- * gui/e-day-view.c (e_day_view_start_editing_event): Update
- arguments to e_canvas_item_grab_focus.
-
-2001-03-15 Gediminas Paulauskas <menesis@delfi.lt>
-
- * gui/*.xpm: moved to ../art.
- * gui/Makefile.am: removed *.xpm and oaf_DATA from EXTRA_DIST.
- * gui/e-calendar-table.c, gui/e-day-view.c, gui/e-week-view.c:
- #include "art/*.xpm".
-
-2001-03-09 JP Rosevear <jpr@ximian.com>
-
- * conduits/todo/Makefile.am: PISOCK_INCLUDEDIR has become
- PISOCK_CFLAGS in gnome-pilot.m4 and remove capplet foo
-
- * conduits/calendar/Makefile.am: ditto
-
-2001-03-08 Ettore Perazzoli <ettore@ximian.com>
-
- * gui/component-factory.c (factory_fn): Specify a NULL
- `EvolutionShellComponentGetDndSelectionFn'.
-
-2001-02-27 Miguel de Icaza <miguel@ximian.com>
-
- * gui/e-day-view.c (e_day_view_on_event_right_click): Reorganize
- the menus to have entries always in a consistent fashion, as
- reported to the genepool mailing list.
- (e_day_view_on_event_right_click): Added a FIXME comment to the
- FIXME comment without a FIXME.
-
- Now we use e_popup_menu. This allows us to hide/show items on
- demand, and to sensitize/de-sensitize items depending on their
- state.
-
- This will also let us add icon support (when we get nice icons for
- this)
-
- * gui/e-week-view.c (e_week_view_show_popup_menu): Ditto.
-
- The files popup-menu.c and popup-menu.h can now be removed.
-
-2001-03-05 Damon Chaplin <damon@ximian.com>
-
- * gui/e-tasks.c: keep list of all Tasks folders so we can update the
- preference settings when necessary.
-
- * gui/gnome-cal.c: configure the TaskPad according to the settings.
-
- * gui/e-calendar-table.c: use ECellCombo and ECellDateEdit for fields,
- so the tasks folders is almost usable now.
-
- * gui/calendar-model.c: added support for the Status property.
-
- * gui/calendar-config.[hc]: added convenience functions to setup
- ECalendarTable and ECellDateEdit objects.
-
- * gui/calendar-commands.c: connected to "destroy" signal of calendars
- so we can remove them from all_calendars list.
-
- * gui/dialogs/cal-prefs-dialog.c (cal_prefs_dialog_update_config):
- call e_tasks_update_all_config_settings() to update all the settings
- in the Tasks folders as well.
-
- * cal-util/cal-component.h: added CAL_COMPONENT_FIELD_STATUS.
-
- * cal-util/cal-component.c (cal_component_get_transparency): fixed
- calls to strcasecmp so they check for '== 0'.
-
- Applied patch from Miguel...
-
-2001-02-27 Miguel de Icaza <miguel@ximian.com>
-
- * gui/e-day-view.c (e_day_view_on_event_right_click): Reorganize
- the menus to have entries always in a consistent fashion, as
- reported to the genepool mailing list.
- (e_day_view_on_event_right_click): Added a FIXME comment to the
- FIXME comment without a FIXME.
-
- Now we use e_popup_menu. This allows us to hide/show items on
- demand, and to sensitize/de-sensitize items depending on their
- state.
-
- This will also let us add icon support (when we get nice icons for
- this)
-
- * gui/e-week-view.c (e_week_view_show_popup_menu): Ditto.
-
- The files popup-menu.c and popup-menu.h can now be removed.
-
-2001-03-02 JP Rosevear <jpr@ximian.com>
-
- * conduits/todo/e-todo.conduit.in: update for new pilot foo
-
- * conduits/calendar/e-calendar.conduit.in: ditto
-
- * conduits/todo/Makefile.am: update sed script
-
- * conduits/calendar/Makefile.am: ditto
-
-2001-02-28 Federico Mena Quintero <federico@ximian.com>
-
- * gui/event-editor.c (recurrence_exception_select_row_cb): New
- function to set the EDateEdit's value when a row is selected in
- the exception date list. Fixes bug #1638.
- (append_exception): Set the value as well. Block/unblock signals
- from the clist as appropriate. Gotta love non-model/view widgets.
- (recurrence_exception_delete_cb): Be more paranoid about the
- contents of the list row's data.
- (recur_to_comp_object): Likewise.
- (fill_exception_widgets): Select the first row after we are done
- appending the exception dates.
-
-2001-02-26 Federico Mena Quintero <federico@ximian.com>
-
- * gui/alarm-notify/Makefile.am (libalarm_a_SOURCES): Create a
- little stand-alone library for the low-level alarm trigger
- mechanism. This is so that the GUI parts of the calendar can use
- it in addition to the alarm daemon.
-
- * gui/main.c: #include "alarm-notify/alarm.h".
-
- * gui/calendar-summary.c: Likewise.
- (alarm_fn): Do not remove the previous alarm; it is removed
- automatically when it is triggered.
-
- * gui/Makefile.am (evolution_calendar_SOURCES): Removed alarm.[ch]
- from the sources.
-
- * gui/alarm.[ch]: Removed obsolete files.
-
-2001-02-23 Federico Mena Quintero <federico@ximian.com>
-
- * gui/alarm-notify/alarm-notify.c (AlarmNotify_addCalendar):
- Switched to using our own refcounted structure for loaded clients.
- (AlarmNotify_removeCalendar): Ditto. Also, do the full
- destruction of the client.
- (alarm_notify_destroy): Destroy each element in the hash table.
-
- * cal-client/cal-client.c (cal_client_construct): Test for
- exceptions from OAF when activating the Wombat calendar factory.
-
- * gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in:
- New .oaf.in file.
-
- * gui/alarm-notify/Makefile.am (oaf_in_files): Updated.
-
- * gui/GNOME_Evolution_Calendar.oaf.in: Put all the servers here
- instead of in a million files.
-
- * gui/GNOME_Evolution_Calendar_Control.oaf.in: Removed file.
-
- * gui/GNOME_Evolution_Calendar_gnomecal.oaf.in: Removed *REALLY*
- obsolete file.
-
- * gui/Makefile.am (oaf_in_files): Updated.
-
-2001-02-23 Rodrigo Moya <rodrigo@ximian.com>
-
- * pcs/cal-backend-db.c (add_history): fixed generation of history records
-
-2001-02-16 Federico Mena Quintero <federico@ximian.com>
-
- * pcs/cal-factory.c (CalFactoryPrivate): Added a `registered'
- field.
- (cal_factory_oaf_register): New function; now the factory performs
- its own registration with OAF.
- (cal_factory_destroy): Unregister from OAF if appropriate.
-
-2001-02-19 JP Rosevear <jpr@ximian.com>
-
- * conduits/todo/Makefile.am: Remove PISOCK_LIBDIR
-
- * conduits/calendar/Makefile.am: ditto
-
-2001-02-16 Rodrigo Moya <rodrigo@ximian.com>
-
- * pcs/calbackend-db.c (cal_backend_db_destroy): close DB environment.
- Some compilation warnings removed
-
-2001-02-13 Christopher James Lahey <clahey@ximian.com>
-
- * gui/Makefile.am (evolution_calendar_LDADD): Added libmenus.la.
-
- * gui/e-calendar-table.c, gui/e-calendar-table.h
- (e_calendar_table_get_spec): Added this function.
-
- * gui/e-tasks.c, gui/e-tasks.h (e_tasks_setup_menus): Added this
- function.
-
- * gui/tasks-control.c (tasks_control_activate): Call
- e_tasks_setup_menus.
-
-2001-02-13 JP Rosevear <jpr@ximian.com>
-
- * gui/e-tasks.c (e_tasks_new_task): call task_editor_focus
-
-2001-02-13 JP Rosevear <jpr@ximian.com>
-
- * gui/calendar-commands.c (update_pixmaps): Set toolbar new
- appointment icon
- (set_pixmap): load files rather than create from xpm file
-
- * gui/*view.xpm: move to the art directory
-
-2001-02-13 Rodrigo Moya <rodrigo@ximian.com>
-
- * pcs/cal-backend-db.c (cal_backend_db_get_alarms_for_object):
- implemented
-
-2001-02-13 JP Rosevear <jpr@ximian.com>
-
- * gui/calendar-commands.c (update_pixmaps): Set toolbar new command
-
- * gui/e-calendar-table.c: Add titles to pixbuf column for grouping
-
- * gui/calendar-model.c (calendar_model_class_init): override value
- to string virtual method
- (calendar_model_value_to_string): implement value to string for
- etable (necessary for group by)
-
-2001-02-12 Rodrigo Moya <rodrigo@ximian.com>
-
- * pcs/cal-backend-file.c:
- cal_backend_db_update_object(): manage both updates and additions/add notification
- cal_backend_db_get_object(): don't use DB cursors
- cal_backend_db_get_type_by_uid(): don't use DB cursors
- cal_backend_db_remove_object(): don't use DB cursors/add notification
- cal_backend_db_get_alarms_in_range(): implemented
-
-2001-02-12 Kjartan Maraas <kmaraas@gnome.org>
-
- * gui/Makefile.am: Hook up the xml-i18n-tools + .oaf.in stuff.
- * gui/GNOME_Evolution_Calendar*.oaf.in: Marked strings for translation.
-
-2001-02-11 Rodrigo Moya <rodrigo@ximian.com>
-
- * pcs/cal-backend-db.c: added DB3 transactions support
- * pcs/cal-backend-db.[ch]: added the new DB3-based backend. This is just
- the beginning, there are some missing things still.
-
-2001-02-11 Gediminas Paulauskas <menesis@delfi.lt>
-
- Really use xml-i18n-tools.
-
- * conduits/calendar/e-calendar-conduit-control-applet.desktop,
- conduits/todo/e-todo-conduit-control-applet.desktop: removed.
-
- * conduits/calendar/e-calendar-conduit-control-applet.desktop.in,
- conduits/todo/e-todo-conduit-control-applet.desktop.in: added empty.
-
- * conduits/calendar/Makefile.am, conduits/todo/Makefile.am:
- reflect above changes, merge translations.
-
- * gui/*.glade.h, gui/dialogs/*.glade.h: removed, xml-i18n-extract
- takes care of strings itself.
-
- * gui/*.glade, gui/dialogs/*.glade: do not output_translatable_strings
-
- * gui/Makefile.am, gui/dialogs/Makefile.am: do not include removed
- files in EXTRA_DIST.
-
-2001-02-08 JP Rosevear <jpr@ximian.com>
-
- * gui/dialogs/task-editor-dialog.glade: Oops, remove old widget
-
-2001-02-08 JP Rosevear <jpr@ximian.com>
-
- * gui/dialogs/task-editor.c (fill_widgets): fill in new
- classification stuff properly
- (get_widgets): load new class. widgets
- (init_widgets): if the class. widgets change, mark the dialog
- dirty
- (dialog_to_comp_object): set the comp class. from the new widgets
-
- * gui/dialogs/task-editor-dialog.glade: Make more consistent,
- fixing bugs 1247 and 1249
-
- * gui/dialogs/task-editor.c (fill_widgets):
-
- * gui/event-editor-dialog.glade: Gui tidying
-
- * gui/event-editor.c: Remove old alarm cruft
-
- * cal-util/cal-component.c (cal_component_set_url): Don't try and
- write an empty string as a property
-
-
-2001-02-08 JP Rosevear <jpr@ximian.com>
-
- * pcs/cal-backend-file.c: Move the get_change code here
-
- * pcs/cal-backend.c: Remove get_changes related stuff and
- implement by calling the virtual method instead
-
- * pcs/cal-backend.h: New virtual method.
-
- * pcs/cal-backend-file.c (compute_alarm_range): Use
- icaldurationtype_as_int (replace _as_timet)
- (add_alarm_occurrences_cb): ditto
-
-2001-02-08 JP Rosevear <jpr@ximian.com>
-
- * pcs/cal-backend-file.c (compute_alarm_range): Use
- icaldurationtype_as_int (replace _as_timet)
- (add_alarm_occurrences_cb): ditto
-
- * gui/e-week-view.c (e_week_view_on_schedule_meet): new routine to
- throw up the meeting schedule dialog
- (e_week_view_show_popup_menu): add schedule meeting to the
- contextual menu where appropriate
-
-2001-02-08 JP Rosevear <jpr@ximian.com>
-
- * gui/event-editor.c: Remove assorted menu/bonobo stuff
-
- * gui/dialogs/task-editor.c: Remove assorted menu/bonobo stuff
- (task_editor_construct): no longer suck out the glade contents
- into a bonobo win, listen for apply and close signals
- (tedit_apply_event_cb): listen for apply signal and save object
- (tedit_close_event_cb): listen for close signal and prompt to save
- if need be
- (task_editor_focus): new function to bring the dialog to the front
-
- * gui/dialogs/task-editor.h: new prototype
-
- * gui/e-meeting-edit.c (schedule_button_clicked_cb): no need to
- update widgets in the event editor since the event editor won't be
- open
- (e_meeting_editor_new): don't need the event editor reference any
- more
-
- * gui/e-meeting-edit.h: Change prototype
-
- * gui/e-day-view.c (e_day_view_on_event_right_click): Make
- schedule meeting a new contextual menu item
- (e_day_view_on_schedule_meet): new routine to schedule a meeting
- from the contextual menu
-
- * gui/e-calendar-table.c (e_calendar_table_open_task): Call
- task_editor_focus
-
- * gui/event-editor-dialog.glade: Update to be a property box
-
- * gui/dialogs/task-editor-dialog.glade: Update to be a property
- box
-
-2001-02-07 Iain Holmes <iain@ximian.com>
-
- * gui/calendar-summary.c (create_summary_view): Add a setter to the
- property bag.
- (set_property): The setter.
- (generate_html_summary): Sort the UIDs accodring to time.
-
-2001-02-06 JP Rosevear <jpr@ximian.com>
-
- * gui/event-editor.c (fill_reminder_widgets): Match new
- append_alarm signature
- (reminder_to_comp_object): only add alarms tagged as new, no
- longer delete all alarms first
- (append_reminder): the row data is now of type ReminderData,
- rename from append_alarm
- (reminder_add_cb): math new append_alarm signature
- (reminder_delete_cb): if the alarm existed before the dialog was
- loaded, delete it immediately from the cal component
-
-2001-02-06 JP Rosevear <jpr@ximian.com>
-
- * gui/event-editor-dialog.glade: Gui tweaks for bugs 1248 and 1246
-
- * gui/dialogs/task-editor-dialog.glade: ditto
-
-2001-02-07 JP Rosevear <jpr@ximian.com>
-
- * gui/event-editor-dialog.glade: Fix spacing
-
-2001-02-06 JP Rosevear <jpr@ximian.com>
-
- * gui/event-editor-dialog.glade: Gui tweaks for bugs 1248 and 1246
-
- * gui/dialogs/task-editor-dialog.glade: ditto
-
-2001-02-06 JP Rosevear <jpr@ximian.com>
-
- * gui/e-week-view.c (e_week_view_show_popup_menu): Make the menus more
- consistent
-
- * gui/e-day-view.c (e_day_view_on_event_right_click): ditto
-
- * gui/e-calendar-table.c: ditto
-
-2001-02-06 JP Rosevear <jpr@ximian.com>
-
- * cal-util/cal-component.c (cal_component_set_categories): If the
- categories string is empty, remove the property
- (get_period_list): Fixes from clahey to handle the new rdate
- format in libical
- (set_period_list): ditto
-
-2001-02-05 JP Rosevear <jpr@ximian.com>
-
- * cal-util/cal-component.c (cal_component_alarm_set_trigger): Set
- the time and duration values in the trigger to null by default
- (cal_component_free_alarm_uids): properly free the list of alarm
- uids
-
-2001-02-05 JP Rosevear <jpr@ximian.com>
-
- * gui/event-editor.c (get_widgets): get the new reminder widgets
- (sync_entries): different callback data
- (summary_changed_cb): take different data and handle various cases
- (init_widgets): connect signals for the new widgets
- (get_alarm_duration_string): give a text string of the alarm
- duration
- (get_alarm_string): give a string representing the alarm
- (fill_widgets): make sure we don't loop infinitely and remove old
- alarm cruft
- (reminder_to_comp_object): dump alarm info in the gui into the cal
- component
- (append_alarm): add alarm to the clist
- (reminder_add_cb): create new alarm
- (reminder_delete_cb): remove the alarm from the list
-
- * gui/event-editor-dialog.glade: Update gui
-
- * gui/e-calendar-table.c: include gnome.h for all the menu stuff
-
- * gui/calendar-summary.c: for internationalization
-
- * gui/tasks-control.c: include gnome.h
-
- * gui/e-tasks.c: ditto
-
- * gui/e-itip-control.c: ditto
-
- * cal-util/cal-recur.c (cal_recur_set_rule_end_date): Update for
- libical changes
-
-2001-02-05 Christopher James Lahey <clahey@helixcode.com>
-
- * gui/calendar-model.c: Fixed up these #includes.
-
-2001-02-03 Federico Mena Quintero <federico@ximian.com>
-
- * gui/dialogs/save-comp.c (save_component_dialog):
- gnome_dialog_grab_focus() on the Yes button. Fixes bug #1242.
-
-2001-01-30 Kjartan Maraas <kmaraas@gnome.org>
-
- * gui/e-calendar-table.c: Mark a string for translation.
- * gui/e-itip-control.c: Mark a bunch of strings for translation.
-
-2001-01-30 Ettore Perazzoli <ettore@ximian.com>
-
- * gui/print.c: #include <sys/time.h>.
-
-2001-01-29 Federico Mena Quintero <federico@ximian.com>
-
- * gui/calendar-config.c: <gnome.h> trimming to reduce compilation
- time.
- * gui/calendar-summary.c: Likewise.
- * gui/e-calendar-table.c: Likewise.
- * gui/e-day-view-time-item.c: Likewise.
- * gui/e-day-view.c: Likewise.
- * gui/e-itip-control.c: Likewise.
- * gui/e-meeting-edit.c: Likewise.
- * gui/e-meeting-edit.h: Likewise.
- * gui/e-tasks.c: Likewise.
- * gui/e-week-view.c: Likewise.
- * gui/event-editor.c: Likewise.
- * gui/gnome-cal.c: Likewise.
- * gui/goto.c: Likewise.
- * gui/itip-utils.h: Likewise.
- * gui/main.c: Likewise.
- * gui/popup-menu.c: Likewise.
- * gui/print.c: Likewise.
- * gui/tasks-control-factory.c: Likewise.
- * gui/tasks-control.c: Likewise.
- * gui/tasks-migrate.c: Likewise.
-
-2001-01-25 Federico Mena Quintero <federico@ximian.com>
-
- * cal-util/timeutil.c: <gnome.h> trimming to reduce compilation time.
- * gui/dialogs/task-editor.c: Ditto.
- * gui/dialogs/cal-prefs-dialog.c: Ditto.
- * gui/dialogs/save-comp.c: Ditto.
- * gui/dialogs/delete-comp.c: Ditto.
- * gui/calendar-commands.c: Ditto.
- * gui/calendar-model.c: Ditto.
-
-2001-01-26 Ettore Perazzoli <ettore@ximian.com>
-
- * gui/e-itip-control.c (itip_control_destroy_cb): Don't attempt to
- call `icalcomponent_remove_component()' on a NULL component or a
- NULL subcomponent.
-
-2001-01-25 Damon Chaplin <damon@ximian.com>
-
- * gui/tag-calendar.c: don't tag the calendar if no dates are shown.
- (e_calendar_item_get_date_range() now returns FALSE in this case.)
-
-2001-01-23 Damon Chaplin <damon@helixcode.com>
-
- * gui/calendar-model.c (ensure_task_complete): make sure the status
- is set to "Completed". Fixes bug #1253.
-
- * gui/e-tasks.c (e_tasks_open): load the ETable state after opening
- the tasks folder, since it relies on the folder uri, which isn't set
- now until you open the folder.
-
- * gui/calendar-model.c (obj_updated_cb): add the categories from the
- updated object to our tree, and emit the "categories-changed" signal
- if they have changed. Fixes bug #1255.
-
- * gui/e-tasks.c: removed debug messages.
-
-2001-01-23 JP Rosevear <jpr@ximian.com>
-
- * libical import cleanup
-
-2001-01-23 JP Rosevear <jpr@ximian.com>
-
- * conduits/todo/todo-conduit.c (local_record_from_comp): properly ref
- the cal component when we use it, prevents double free
-
- * conduits/calendar/calendar-conduit.c (local_record_from_comp): ditto
-
-2001-01-22 JP Rosevear <jpr@ximian.com>
-
- * gui/dialogs/Makefile.am: compile new stuff
-
- * gui/dialogs/task-editor.c (prompt_to_save_changes): use new
- standard dialog
-
- * gui/event-editor.c (prompt_to_save_changes): ditto
-
- * gui/dialogs/save-comp.h: new header
-
- * gui/dialogs/save-comp.c (save_component_dialog): shows the save
- dialog
-
-2001-01-22 JP Rosevear <jpr@ximian.com>
-
- * conduits/todo/todo-conduit.c (for_each_modified): remove duplicate
- message
-
- * conduits/calendar/Makefile.am: Remove vfs lib dependency
-
- * conduits/todo/Makefile.am: ditto
-
- * conduits/calendar/calendar-conduit.c: Remove alarm foo for now
- (for_each_modified): remove duplicate message
-
-2001-01-21 JP Rosevear <jpr@ximian.com>
-
- * conduits/calendar/calendar-conduit.c (delete_record): Remove
- deleted records from the pilot map so we don't have dupes in the future
-
- * conduits/todo/todo-conduit.c (delete_record): ditto
-
-2001-01-21 Federico Mena Quintero <federico@ximian.com>
-
- * gui/dialogs/task-editor.c (file_delete_cb): Fix bug #1250; now
- we present a confirmation dialog before deleting the component.
-
-2001-01-20 Federico Mena Quintero <federico@ximian.com>
-
- * gui/event-editor-dialog.glade: Fix bug #1243. Turn on the Y
- expand/fill options for the date widgets in the General page.
- This makes them be vertically aligned with the "All day event"
- toggle so that they will get the focus in the proper order; the
- toggle would get the focus before them because it was a pixel or
- two above them.
-
-2001-01-19 Federico Mena Quintero <federico@ximian.com>
-
- * gui/weekday-picker.c (weekday_picker_init): Unset the
- GTK_CAN_FOCUS flag on the weekday picker. This will do until it
- supports being used with the keyboard.
-
-2001-01-19 JP Rosevear <jpr@ximian.com>
-
- * cal-util/cal-component.c (cal_component_alarm_new): create a new
- cal component alarm
- (cal_component_add_alarm): add alarm to the cal component
- (cal_component_remove_alarm): remove alarm from the cal component
- (remove_alarm): remove alarm from hash
-
- * cal-util/cal-component.h: new protos
-
- * conduits/calendar/calendar-conduit.c (comp_from_remote_record):
- add alarm information, still needs to be hacked to replace an already
- existing alarm. questions abound about the heuristic for doing this.
-
-2001-01-17 JP Rosevear <jpr@ximian.com>
-
- * gui/event-editor.c (dialog_to_comp_object): Properly set categories
- to NULL if there are none
-
-2001-01-18 Federico Mena Quintero <federico@ximian.com>
-
- * gui/tasks-migrate.[ch]: New files with a simple sequence to
- migrate the task components from the old calendar folder into the
- new tasks folder.
-
- * gui/component-factory.c (owner_set_cb): Call tasks_migrate()
- once evolution_dir is set. It sucks to have to do this here.
-
- * cal-client/cal-client.c (cal_client_get_uids): In the inline
- docs, indicate how to free the return value.
- (cal_opened_cb): Ahem, moved assertion to the right place. Also,
- ref() and unref() around our own signal emission because we are
- not inside a signal handler, rather a simple callback from the
- listener object; we want to have a chance to clean up even if the
- client is unrefed during the emission.
-
- * gui/Makefile.am (evolution_calendar_SOURCES): Added
- tasks-migrate.[ch] to the list of sources.
-
-2001-01-17 Federico Mena Quintero <federico@ximian.com>
-
- * gui/event-editor.c (init_widgets): Use
- e_calendar_item_set_max_days_sel() instead of setting GTK+ object
- arguments.
-
- * gui/e-day-view.c (e_day_view_set_cal_client): Oops, we had a
- reversed test for the client being loaded.
-
- * gui/tag-calendar.c (tag_calendar_by_client): Fixed similarly
- reversed test.
-
-2001-01-17 Damon Chaplin <damon@helixcode.com>
-
- * gui/e-week-view*.c
- * gui/e-day-view*.c: don't use the theme colors at all within
- the graphical parts of the widgets, since they may clash with
- our colors. May make them configurable in future so people can tweak
- them to go with their theme. At least the calendars are usable in any
- theme now, even though the colors may not go well with the theme.
- Also set the font of all the EText items in style_set.
-
- * gui/e-week-view-event-item.c (e_week_view_event_item_draw): don't
- draw the icons if we are editing the event.
-
- * gui/e-day-view.c:
- * gui/e-week-view.c: reinstated the optimizations so we don't do a
- complete relayout if the event's dates haven't been changed.
- (Though we still do a re-layout when recurring events change, since
- comparing all the RDATES/RRULES/EXDATES/EXRULES is too much hassle.)
- A side-effect of this change is that the EWeekView won't crash so
- often - only recurring events will be a problem.
-
- * cal-util/cal-component.[hc]: added function to check if the start
- and end dates of a component match. Used for optimizing the updating
- of the EDayView & EWeekView.
-
-2001-01-17 JP Rosevear <jpr@ximian.com>
-
- * conduits/calendar/calendar-conduit.c (start_calendar_server): Check
- for open error and handled
-
- * conduits/todo/todo-conduit.c (start_calendar_server): ditto
-
-2001-01-17 JP Rosevear <jpr@ximian.com>
-
- * conduits/calendar/calendar-conduit.c (start_calendar_server): Check
- for open error and handled
-
- * pcs/cal-backend.c (cal_backend_compute_changes): Fix transposition
- of sync db location
-
-2001-01-17 Federico Mena Quintero <federico@ximian.com>
-
- * */*: Ximianified email addresses and copyrights.
-
- * idl/evolution-calendar.idl (CalFactory::open): Renamed from
- ::load(), and added an only_if_exists argument.
- (CalFactory::create): Removed method.
- (Listener::OpenStatus): Removed the IN_USE error and replaced it
- with a NOT_FOUND one; renamed the enum from LoadStatus.
- (Listener::notifyCalOpened): Renamed from notifyCalLoaded().
-
- * pcs/cal-backend.h (CalBackend): Removed the uri field.
- (CalBackendOpenStatus): Renamed from CalBackendLoadStatus and
- added a NOT_FOUND value.
- (CalBackendClass::open): Put in a slot for the open method.
-
- * pcs/cal-backend.c (cal_backend_create): Removed function.
-
- * pcs/cal-backend-file.c (cal_backend_file_open): Return the
- appropriate value when only_if_exists is TRUE.
- (create_cal): We are Ximian now, so set the PRODID property to
- the appropriate foo.
-
- * pcs/cal-factory.c (CalFactory_open): implemented, replacing
- CalFactory_load() and CalFactory_create().
- (CalFactory_open): Moved the queue_load_create_job() stuff to
- here, since we now only need to contemplate the open case instead
- of load/create ones.
- (open_backend): Do everything here; replaces load_backend() and
- create_backend().
-
- * cal-client/cal-listener.h (CalListenerClass::cal_opened):
- Renamed from cal_loaded.
- (CalListenerClass): Replaced the silly signals, which are
- gratuitous abstraction, by a set of function pointers in the
- instance structure.
-
- * cal-client/cal-listener.c (cal_listener_get_calendar): Removed
- unused function.
- (cal_listener_construct): Added the listener notification functions.
- (cal_listener_new): Ditto.
- (Listener_notifyCalOpened): Renamed to our new naming convention
- for servant implementations.
- (Listener_notifyObjUpdated): Ditto.
- (Listener_notifyObjRemoved): Ditto.
-
- * cal-client/cal-client.h (CalClientOpenStatus): Renamed from
- CalClientLoadStatus.
- (CalClientClass::cal_opened): Renamed from ::cal_loaded().
- (CalClientLoadState): New enum; basically make LoadState public so
- that users of this code do not have to maintain their own states.
-
- * cal-client/cal-client.c (cal_client_create_calendar): Removed
- function.
- (cal_client_open_calendar): Moved the functionality over from
- load_or_create(); now we do everything here.
- (*): Use the CalClientLoadState enum values instead of the old
- LoadState values.
- (cal_client_get_load_state): Renamed from cal_client_is_loaded(),
- and return the appropriate value.
- (CalClientPrivate): Added an uri field.
- (cal_client_init): Initialize priv->uri.
- (cal_client_destroy): Free the priv->uri.
- (cal_opened_cb): Maintain the priv->uri.
- (cal_client_open_calendar): Fill in the priv->uri.
- (cal_client_get_uri): New function.
-
- * gui/calendar-model.c (calendar_model_set_new_comp_vtype): New
- function to configure the type of calendar components to create
- when doing click-to-add. This makes the model usable for
- something other than task lists.
- (calendar_model_get_new_comp_vtype): New function.
-
- * gui/e-calendar-table.c (e_calendar_table_get_model): New function.
- (e_calendar_table_destroy): Unref the subset_model.
-
- * gui/gnome-cal.h (GnomeCalendarOpenMode): Removed enum.
-
- * gui/gnome-cal.c (LoadState): Removed enum; we now use the
- CalClientLoadState from the client objects.
- (GnomeCalendarPrivate): Removed the loading_uri and
- task_pad_loading_uri fields as well as the load_state and
- task_pad_load_state fields, as we can now query them directly from
- the CalClient.
- (open_error): Renamed from load_error().
- (create_error): Removed function.
- (gnome_calendar_open): Do not take in the mode parameter.
- (cal_opened_cb): Get rid of our beautifully-crafted state machine
- and replace it with simple code; all the loading smarts are in the
- Wombat now.
- (setup_widgets): Set the new component vtype of the table model to
- CAL_COMPONENT_TODO.
-
- * gui/Makefile.am (evolution_calendar_SOURCES): Removed
- gnome-month-item.[ch] from the list of sources.
-
- * gui/calendar-summary.c (CalSummary): Removed unused cal_loaded
- field.
- (create_summary_view): Do not check if the file exists; this is
- the job of the Wombat.
- (generate_html_summary): Fixed prototype.
- (alarm_fn): Fixed prototype.
- (property_dialog): Fixed prototype. Wonder if/how this ever
- worked.
- (create_summary_view): Cast the component and view as
- appropriate. Removed unused html variable.
-
- [Iain dude, are you compiling with -Wall?]
-
- * gui/e-itip-control.c (cal_opened_cb): Sigh, this function
- signature was *very* wrong. It was using CalClientGetStatus
- instead of CalClientOpenStatus.
-
- * gui/e-tasks.h (ETasksOpenMode): Removed enum.
-
- * gui/e-tasks.c (setup_widgets): Set the new component vtype of
- the table model to CAL_COMPONENT_TODO.
- (LoadState): Removed the state machine foo.
- (e_tasks_open): Removed the mode parameter.
- (initial_load): Removed function.
- (create_error): Removed function.
- (ETasksPrivate): Removed folder_uri field.
- (cal_opened_cb): Remove the state machine.
-
- * gui/component-factory.c: #include "tasks-control.h"
-
- * conduits/calendar/calendar-conduit.h (ECalConduitContext):
- Removed calendar_load_tried field.
-
- * conduits/calendar/calendar-conduit.c (start_calendar_server_cb):
- Sigh, fixed function prototype.
-
- * conduits/todo/todo-conduit.h (EToDoConduitContext): Removed
- calendar_load_tried field.
-
- * conduits/todo/todo-conduit.c (start_calendar_server_cb): Fixed
- function prototype.
-
-2001-01-16 JP Rosevear <jpr@ximian.com>
-
- * conduits/todo/todo-conduit.c (print_local): fix debug output
- (print_remote): ditto
-
-2001-01-15 JP Rosevear <jpr@ximian.com>
-
- * pcs/cal-backend.c (cal_backend_compute_changes): accomadate tasks
- in their new dir
-
- * conduits/todo/todo-conduit.c (start_calendar_server): ditto
-
-2001-01-15 JP Rosevear <jpr@ximian.com>
-
- * conduits/todo/todo-conduit.c (print_local): prevent segfaults and
- buffer overflows.
- (print_remote): ditto
-
- * conduits/calendar/calendar-conduit.c: as above
-
-2001-01-14 Damon Chaplin <damon@helixcode.com>
-
- * gui/e-calendar-table.c (E_CALENDAR_TABLE_SPEC): changed the expansion
- values so that small text fields are 1.0, all the date fields and the
- URL field are 2.0, and the Summary is 3.0. Hopefully the user will
- resize the fields as desired, but at least this is a better start.
-
-2001-01-14 JP Rosevear <jpr@ximian.com>
-
- * conduits/calendar/Makefile.am: pass -module and -avoid-version to
- conduit linker
-
- * conduits/todo/Makefile.am: ditto
-
-2001-01-14 Damon Chaplin <damon@helixcode.com>
-
- * gui/dialogs/task-editor.[hc]: moved #include
- <cal-client/cal-client.h> to the .h file.
-
- * gui/e-tasks.c: load & save the Tasks folders' ETable layout.
- Added an option menu to filter tasks by category.
-
- * gui/gnome-cal.c: use the "Tasks" folder for the TaskPad.
- (We may make the actual tasks folder shown a per-calendar option.)
-
- * gui/tasks-control.c (tasks_control_new_task_cmd): added support for
- the New Task icon on the toolbar.
-
- * gui/e-calendar-table.[hc]: we now use an ETableSubsetVariable model
- to filter the tasks by a category. And tidied up a little.
-
- * gui/calendar-model.[hc]: added way to get all the categories used by
- the tasks, so we can show an option menu of them. Also a signal which
- is emitted when they are changed.
- Also allows a default category to be set, which is used to initialize
- the 'click-to-add' row.
- Also made sure the initialize_value()/get_value() functions don't
- return NULL since that can cause a SEGV.
-
- * gui/e-week-view.c:
- * gui/e-day-view.c: set the "fill_color_rgba" arg of the EText items
- to black since it doesn't seem to set up a default color properly.
- Hopefully this fixes the bug on Solaris where the items appear with
- strange colors.
-
- * gui/widget-util.c (date_edit_new): use the calendar_config function
- to set most of the options. It wasn't setting the 12/24 hour option
- before.
-
- * gui/dialogs/task-editor-dialog.glade: added "Undefined" priority.
-
-2001-01-12 Ettore Perazzoli <ettore@helixcode.com>
-
- * gui/component-factory.c (factory_fn): Pass NULL as the
- @copy_folder_fn arg to `evolution_shell_component_new()'.
-
-2001-01-12 Miguel de Icaza <miguel@ximian.com>
-
- * gui/e-calendar-table.c: Add translation strings.
-
-2001-01-08 Iain Holmes <iain@helixcode.com>
-
- * gui/calendar-summary.c (create_summary_view): Add a PropertyControl
- interface to set whether or not to show tasks and appointments. Add
- a PersistStream to remember this.
-
-2001-01-09 Dave Camp <dave@helixcode.com>
-
- * gui/Makefile.am: Replaced e-meet-dialog.glade.h with
- e-meeting-dialog.glade in glade_messages.
-
- * gui/e-meeting-dialog.glade: Enabled the translatable string option.
-
- * gui/e-itip-control.glade: Likewise.
-
-2001-01-09 Federico Mena Quintero <federico@helixcode.com>
-
- * idl/evolution-calendar.idl (AlarmNotify): New interface for the
- alarm notification system.
-
- * gui/alarm-notify: New directory for the alarm notification
- daemon and its auxiliary stuff.
-
- * gui/alarm-notify/alarm.[ch]: Moved over from gui/alarm.[ch].
-
- * gui/alarm-notify/alarm-queue.[ch]: Moved over from
- gui/alarm-notify.[ch]. Renamed functions from alarm_notify_*() to
- alarm_queue_*().
-
- * gui/alarm-notify/alarm-notify.[ch]: Implementation of the
- GNOME::Evolution::Calendar::AlarmNotify interface.
-
- * gui/Makefile.am (evolution_calendar_LDADD): Removed the
- LINK_FLAGS variable and reordered the libraries to remove some
- duplicated ones.
- (SUBDIRS): Added the alarm-notify directory.
-
-2001-01-08 Iain Holmes <iain@helixcode.com>
-
- * gui/calendar-summary.c (generate_html_summary): Get the tasks
- correctly.
- (generate_html_summary): Mark the tasks as completed if so.
-
-2001-01-08 Damon Chaplin <damon@helixcode.com>
-
- * gui/Makefile.am: added new source files for the Tasks folders.
-
- * gui/e-tasks.[hc]: new widget to encapsulate the Tasks view.
-
- * gui/tasks-control.[hc]: new files to implement the Tasks control.
-
- * gui/tasks-control-factory.[hc]: new files to implement the factory
- for the Tasks controls. (I think the way I've split the code up is a
- lot cleaner than the GnomeCal implementation - the factory file just
- contains the factory functions and the control file contains all the
- control functions. Maybe we should make GnomeCal like this.)
-
- * gui/main.c: initialize the Tasks control factory.
-
- * gui/component-factory.c: added support for the Tasks control.
- Also added a "create_folder" function so we can now create new Tasks
- and Calendar folders within Evolution.
- I'm not a Bonobo expert so someone might want to check these over.
-
- * gui/calendar-config.[hc]: added convenience functions to configure
- the common settings of ECalendar and EDateEdit widgets.
-
- * gui/dialogs/task-editor.c (task_editor_create_date_edit):
- * gui/gnome-cal.c (gnome_calendar_update_config_settings):
- * gui/event-editor.c: used function to configure the ECalendars
- and EDateEdits.
-
- * gui/e-day-view-top-item.c (e_day_view_top_item_draw_long_event):
- fixed minor bug in format strings.
-
-2001-01-06 Iain Holmes <iain@helixcode.com>
-
- * gui/calendar-summary.c (generate_html_summary): Neaten the HTML,
- and fix the time printing stuff. Add stuff the get Tasks.
- (alarm_fn): Set up an alarm for midnight everynight and regenerate
- the HTML for the new day.
-
-2001-01-05 JP Rosevear <jpr@helixcode.com>
-
- * gui/event-editor.c (get_widgets): get categories button
- (init_widgets): listen for button click
- (fill_widgets): fill in the categories area
- (dialog_to_comp_object): set the cal component categories
- (categories_clicked): throw up the categories dialog and update
- when ok is clicked
-
- * gui/event-editor-dialog.glade: Add categories and contacts buttons
- and fields
-
- * gui/dialogs/task-editor-dialog.glade: Rename button
-
-2001-01-05 JP Rosevear <jpr@helixcode.com>
-
- * gui/dialogs/task-editor.c (get_widgets): get categories button
- (init_widgets): listen for button click
- (fill_widgets): fill in the categories area
- (dialog_to_comp_object): set the cal component categories
- (categories_clicked): throw up the categories dialog and update
- when ok is clicked
-
- * gui/dialogs/task-editor-dialog.glade: Tweak to name the categories
- button and make it active
-
- * gui/calendar-model.c (get_categories): We can get the string list of
- categories directly now
-
- * cal-util/cal-component.c (cal_component_get_categories): new function
- to get the categories list as a string
- (cal_component_set_categories): same but for setting
- (free_icalcomponent): init the categories var
- (scan_categories): kill
- (scan_property): assign the prop to the categories var
- (cal_component_get_categories_list): deal with renaming var to categories
- (cal_component_set_categories_list): fix brokeness
-
-2001-01-03 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/calendar-commands.c (new_calendar): Handle the case where
- the calendar view cannot be created; present a warning dialog box.
- (new_calendar): Do not show the widget here, since we already show
- it in control-factory.c.
-
- * gui/control-factory.c (control_factory_new_control): Handle the
- case where the calendar view cannot be created.
-
- * gui/component-factory.c (create_view): Ditto.
-
- * gui/calendar-summary.h: Added prototype for
- calendar_summary_factory_init().
-
-2001-01-02 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/alarm-notify.c (add_component_alarms): If the component has
- no alarms, do not try to queue them.
- (remove_client_alarms): New function to remove all the queued
- alarms for a calendar client.
- (alarm_notify_remove_client): Remove the client's alarms.
-
-2001-01-02 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/dialogs/delete-comp.c (delete_component_dialog): Do not
- compose strings so that they can be localized correctly. Also,
- convert from UTF8 into the font's encoding. Fixes bug #1030.
-
- * gui/e-calendar-table.c (delete_component): Pass the widget
- argument to delete_component_dialog().
-
- * gui/e-day-view.c (e_day_view_on_delete_appointment): Likewise.
-
- * gui/e-week-view.c (e_week_view_on_delete_appointment): Likewise.
-
- * gui/event-editor.c (file_delete_cb): Likewise.
-
- * gui/calendar-commands.c: Use BONOBO_UI_VERB() instead of
- BONOBO_UI_UNSAFE_VERB(). Guess what, all of our handler
- signatures were wrong.
-
- * gui/event-editor.c: Likewise.
-
- * gui/dialogs/task-editor.c: Likewise.
-
- * gui/goto-dialog.glade: Added some spacing between the month/year
- widgets and the calendar widget.
-
-2001-01-01 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/gnome-cal.c (gnome_calendar_destroy): Unconditionally remove
- the client from the alarm notification system.
- Removed all the obsolete alarm code.
-
- * gui/event-editor.c: Removed some crufty externs left over from
- Gnomecal.
-
- * gui/calendar-commands.c: #include "goto.h"
- Removed crufty variables left over from Gnomecal.
- (new_calendar): Do not take a full_name parameter.
- (init_username): Removed function.
- (init_calendar): Wheeeeeeee! Removed crufty function.
- (quit_cmd): Removed function.
-
- * gui/print.c (WEEK_STARTS_ON_MONDAY): Made it unconditionally
- FALSE because we do not use the configuration setting anyways.
- Sigh, all the printing code needs to be revamped.
-
-2000-12-26 Iain Holmes <iain@helixcode.com>
-
- * gui/calendar-summary.c (create_summary_view): Create a shared
- BonoboEventSource object.
-
-2000-12-25 Miguel de Icaza <miguel@helixcode.com>
-
- * gui/e-day-view.c (e_day_view_init): Set draw background to FALSE.
- (e_day_view_reshape_long_event): ditto.
- (e_day_view_reshape_day_event): ditto.
-
-2000-12-22 JP Rosevear <jpr@helixcode.com>
-
- * gui/dialogs/delete-comp.c (delete_component_dialog): Clean up
- translatable strings for translators, fixes bug 993
-
-2000-12-22 JP Rosevear <jpr@helixcode.com>
-
- * gui/goto.c (create_ecal): Make sure the current month is shown
- when the dialog pops up.
-
- * gui/goto-dialog.glade: Remove flicker
-
-2000-12-22 JP Rosevear <jpr@helixcode.com>
-
- * pcs/cal-backend-file.c (cal_backend_file_get_alarms_for_object):
- account for the case where there are no alarms, fixes crash
-
-2000-12-22 JP Rosevear <jpr@helixcode.com>
-
- * gui/goto.c (ecal_date_range_changed): New function to keep the
- ecal marked properly
- (create_ecal): move more creation code here, update marks
- (goto_dialog_init_widgets): listen for date_range_changed signal
- in the ecal
-
- * gui/calendar-commands.c (init_calendar): Remove ancient gnomecal
- cruft
-
- * gui/mark.[hc], gui/prop.c: Remove ancient gnomecal code that is
- no longer needed, last bit of bug 904
-
-2000-12-22 JP Rosevear <jpr@helixcode.com>
-
- * gui/goto-dialog.glade.h: translations
-
- * gui/goto-dialog.glade: new glade file for goto dialog
-
- * gui/gnome-cal.c (setup_widgets): Set date navigator attributes
-
- * gui/calendar-commands.h: remove prototype
-
- * gui/goto.h: Add prototype
-
- * gui/Makefile.am: Add glade file stuff
-
- * gui/gnome-cal.c (setup_widgets): Use accessors to configure the
- calendar item properly
-
-2000-12-21 Federico Mena Quintero <federico@helixcode.com>
-
- Alarm trigger queueing for the GUI part.
-
- * gui/alarm-notify.[ch]: New files with the high-level alarm
- notification system; mostly moved over from gnome-cal.c. The
- low-level timer stuff is still in alarm.[ch].
-
- * gui/alarm-notify.c (alarm_notify_init): New function to
- initialize the alarm notification system.
- (alarm_notify_done): New function to shut down the alarm
- notification system.
- (alarm_notify_add_client): New function to start monitoring a
- calendar client for alarm notification.
- (alarm_notify_remove_client): New function to stop monitoring a
- client.
-
- * gui/alarm.h (AlarmDestroyNotify): Also pass in the alarm ID so
- the callback may know which ID is being destroyed.
-
- * gui/alarm.c (clear_itimer): New function.
- (pop_alarm): Use clear_itimer().
- (alarm_done): New function to shut down the timer system.
- (alarm_add): Add some preconditions. Do not call the destroy
- notification function if we could not create the alarm.
- (alarm_ready): Pass the alarm ID to the destroy notify function.
- (alarm_remove): Likewise. Also, add some preconditions.
-
- * gui/gnome-cal.c: Removed the alarm notification functions from
- here since they are now in alarm-notify.c.
- (gnome_calendar_construct): Register the client with
- alarm_notify_add_client().
- (gnome_calendar_destroy): Use alarm_notify_remove_client() to
- unregister the client.
- (obj_updated_cb): Do not do any alarm-related stuff.
- (obj_removed_cb): Likewise.
-
- * gui/main.c (main): Shut down the alarm timer system.
- (main): Initialize and shut down the alarm notification system.
-
- * gui/Makefile.am (evolution_calendar_SOURCES): Added
- alarm-notify.[ch] to the list of sources.
-
- * gui/calendar-model.c (calendar_model_set_cal_client): Only
- connect to the "cal_loaded" signal if the client is not already
- loaded.
-
- * gui/e-day-view.c (e_day_view_set_cal_client): Likewise.
-
- * gui/e-week-view.c (e_week_view_set_cal_client): Likewise.
-
- * gui/e-itip-control.c (update_calendar): Connect to "cal_loaded"
- before issuing the load request.
-
-2000-12-21 Iain Holmes <iain@helixcode.com>
-
- * gui/calendar-summary.c: Updated for new executive summary.
-
- * gui/component-factory.c: Reenabled the summary.
-
- * gui/GNOME_Evolution_Calendar.oafinfo: Added the summary.
-
-2000-12-20 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/todo-conduit.h: Fix erroneous documentation
-
- * conduits/todo/todo-conduit.c (comp_from_remote_record): if
- !is_empty_time rather than is_empty_time
- (e_todo_context_new): Return a pointer rather than fill in
- a parameter
- (e_todo_context_foreach_change): Free just the key
- (e_todo_context_destroy): Plug this enormous leakage. I had assumed
- i had done this earlier, which isn't too bright when anything beyond
- 2 minutes ago is fuzzy.
- (comp_from_remote_record): Kill warnings
- (post_sync): Destroy the map later
- (conduit_get_gpilot_conduit): Fix e_todo_context_new params
-
- * conduits/calendar/calendar-conduit.[hc]: Similar to above
-
-2000-12-19 JP Rosevear <jpr@helixcode.com>
-
- * conduits/calendar/calendar-conduit.c: Remove pointless comment
-
- * conduits/todo/todo-conduit.c (is_empty_time): add utility function
- (comp_from_remote_record): use it
-
-2000-12-19 JP Rosevear <jpr@helixcode.com>
-
- * conduits/calendar/calendar-conduit.c (local_record_from_comp):
- Convert cal component strings to pilot character set
- (comp_from_remote_record): vice versa
-
- * conduits/todo/todo-conduit.c: Same as above
-
-2000-12-19 Federico Mena Quintero <federico@helixcode.com>
-
- * pcs/cal-backend-file.c (compute_alarm_range): Fix confusion in
- the way the range is expanded.
-
- * cal-util/cal-component.c (cal_component_alarms_free): Doh,
- alarms->alarms is a list, not a generic pointer. Free it properly.
- (cal_component_free_pilot_id): Removed unused function.
- (cal_component_free_pilot_status): Likewise.
-
- * gui/main.c (init_bonobo): Use VERSION instead of a hardcoded
- string. Pass argc by value, not by reference. Test the return
- value of gnome_init_with_popt_table().
-
- * cal-client/cal-client.c (cal_client_free_alarms): Oops, missed
- implementing this function.
-
- * cal-util/timeutil.c (print_time_t): Better printing format.
- (isodiff_to_secs): Removed unused function.
- (isodiff_from_secs): Removed unused function.
- (time_day_end): Removed crufty part.
- (time_day_begin): Removed crufty part.
- (time_day_hour): Removed unused function.
- (format_simple_hour): Removed unused function.
- (get_time_t_hour): Removed unused function.
- (time_from_start_duration): Removed unused function.
-
- * cal-util/timeutil.h (parse_date): Removed unimplemented, unused
- function prototype.
-
-2000-12-19 Christopher James Lahey <clahey@helixcode.com>
-
- * gui/gnome-cal.c: Removed prototype for setup_alarm to fix a
- warning.
-
-2000-12-18 Federico Mena Quintero <federico@helixcode.com>
-
- Alarm instance generation support for the Wombat.
-
- * idl/evolution-calendar.idl (Cal::CalAlarmInstance): Changed to
- have an alarm UID, the trigger time, and the actual occurrence
- time.
- (Cal::CalComponentAlarms): New structure to hold a pair of a
- component and its alarms that trigger in a particular range of
- time.
- (Cal::getAlarmsInRange): Changed to return a CalComponentAlarmsSeq.
-
- * cal-util/cal-component.h (CalAlarmInstance): New C-side
- structure to match the one on the IDL.
- (CalComponentAlarms): Ditto.
- (CalAlarmAction): Renamed from CalComponentAlarmAction.
- (CalAlarmTriggerType): Renamed from CalComponentAlarmTriggerType.
- Encoded the START and END parameters for the RELATED parameter in
- this enum, too. Added a NONE value for invalid or missing trigger
- specifications.
- (CalComponentAlarmTriggerRelated): Removed.
- (CalAlarmTrigger): Renamed from CalComponentAlarmTrigger. Renamed
- the duration/time fields to rel_duration/abs_time, respectively.
-
- * cal-util/cal-component.c (cal_component_alarm_get_trigger):
- Changed to use the new trigger structure.
- (cal_component_alarm_set_trigger): Likewise.
- (cal_component_alarm_free_trigger): Removed function.
- (cal_component_has_alarms): Count the elements in the
- alarm_uid_hash instead of trying to fetch the first alarm subcomponent.
- (cal_component_alarms_free): New function to free a
- CalComponentAlarms structure.
- (CalComponentAlarmPrivate): Added an uid property pointer.
- (scan_alarm_property): Scan for the our extension UID property.
- (cal_component_alarm_get_uid): New function.
-
- * pcs/cal-backend.h (CalBackendClass): Changed the signatures of
- the ::get_alarms_in_range() and ::get_alarms_for_object() methods.
-
- * pcs/cal-backend.c (cal_backend_get_alarms_in_range): Changed
- signature; use the new method.
- (cal_backend_get_alarms_for_object): Likewise.
-
- * pcs/cal-backend-file.c (compute_alarm_range): New spiffy
- function to compute a range of time for alarm occurrences.
- (add_alarm_occurrences_cb): New function to add alarms for a
- particular occurrence of the component.
- (generate_absolute_triggers): New function to add the absolute
- alarm triggers.
- (generate_alarms_for_comp): New function to generate all the alarm
- instances for a component.
- (cal_backend_file_get_alarms_in_range): Implemented.
-
- * pcs/cal.c (Cal_get_alarms_in_range): Use the new CalBackend API.
- (Cal_get_alarms_for_object): Likewise.
- (build_alarm_instance_seq): Removed old function.
-
- * cal-util/cal-util.c (cal_alarm_instance_list_free): Removed
- function.
-
- * cal-client/cal-client.c (build_component_alarms_list): New
- function to demarshal the component alarms sequence.
- (build_alarm_instance_list): New function to demarshal the alarm
- instances sequence.
- (cal_client_get_alarms_in_range): Updated for the new API.
- (cal_client_get_alarms_for_object): Updated for the new API.
-
- * gui/gnome-cal.c: Temporary #ifdef-ing out of alarm-related stuff
- to make it build.
-
-2000-12-15 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/timeutil.[ch] (time_from_isodate): Removed unused
- function, a relic from Gnomecal.
-
-2000-12-15 Dan Winship <danw@helixcode.com>
-
- * cal-util/timeutil.c (time_from_isodate): Fix the sign in the
- HAVE_TM_GMTOFF case
-
-2000-12-15 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/Makefile.am (evolution_calendar_SOURCES): Removed getdate.y.
- We no longer use it; it is a relic from Gnomecal.
-
- * gui/getdate.y: Removed file.
-
-2000-12-14 Federico Mena Quintero <federico@helixcode.com>
-
- Fixes bug #955.
-
- * gui/weekday-picker.c (WeekdayPickerPrivate): Added a field for
- the week_start_day, to be used in the same way as
- calendar-config.h defines it. Removed the week_starts_on_monday
- flag.
- (day_event_cb): Use the week_start_day.
- (colorize_items): Likewise.
- (configure_items): Likewise.
- (weekday_picker_set_week_start_day): New function.
- (weekday_picker_get_week_start_day): New function.
- (weekday_picker_set_week_starts_on_monday): Removed function.
- (weekday_picker_get_week_starts_on_monday): Removed function.
-
- * gui/widget-util.[ch]: New files with utilities for creating or
- configuring widgets.
-
- * gui/widget-util.c (date_edit_new): New function to create an
- EDateEdit configured with the calendar's preferences; moved over
- from event-editor.c.
-
- * gui/event-editor.c (make_recur_weekly_special): Use
- weekday_picker_set_week_start_day() and the corresponding function
- from calendar-config.h.
- (init_widgets): Likewise.
- (make_date_edit_with_time): Removed function.
- (make_recur_ending_until_special): Use date_edit_new().
- (make_date_edit): Likewise.
-
- * gui/dialogs/task-editor.c (task_editor_create_date_edit): Likewise.
-
- * gui/event-editor-dialog.glade: Removed references to
- make_date_edit_with_time(); replace them with make_date_edit().
-
- * gui/Makefile.am (evolution_calendar_SOURCES): Added
- widget-util.[ch] to the list of sources.
-
-2000-12-14 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/e-calendar-table.c (E_CALENDAR_TABLE_SPEC): Reset the widths
- of the columns with pixbufs to the actual pixbufs' sizes; now
- ETable properly computes its column widths so we do not need to
- add extra padding here.
-
-2000-12-14 Dan Winship <danw@helixcode.com>
-
- * gui/calendar-model.c (_XOPEN_SOURCE): #define this to 500, not
- nothing. Also, move this bit after the other #includes to
- prevent potential messiness.
-
-2000-12-13 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/cal-component.c (ensure_mandatory_properties): Even
- though icaltime_from_timet() now properly ignores the is_utc
- argument since time_t values *are* in UTC by definition, we were
- passing FALSE for that argument's value in a bunch of places. So
- although it is ignored, changed them to TRUE for consistency.
- Hopefully newer versions of libical will remove that argument
- entirely since it does not make sense to speak of non-absolute
- time_t values.
-
- * cal-util/cal-recur.c (cal_recur_set_rule_end_date): Likewise.
-
- * conduits/calendar/calendar-conduit.c (comp_from_remote_record): Likewise.
-
- * conduits/todo/todo-conduit.c (comp_from_remote_record): Likewise.
-
- * gui/dialogs/task-editor.c (dialog_to_comp_object): Likewise.
-
- * gui/e-day-view.c (e_day_view_on_new_appointment): Likewise.
- (e_day_view_on_delete_occurrence): Likewise.
- (e_day_view_on_unrecur_appointment): Likewise.
- (e_day_view_on_unrecur_appointment): Likewise.
- (e_day_view_finish_long_event_resize): Likewise.
- (e_day_view_finish_resize): Likewise.
- (e_day_view_key_press): Likewise.
- (e_day_view_on_top_canvas_drag_data_received): Likewise.
- (e_day_view_on_main_canvas_drag_data_received): Likewise.
-
- * gui/e-week-view.c (e_week_view_key_press): Likewise.
- (e_week_view_on_new_appointment): Likewise.
- (e_week_view_on_delete_occurrence): Likewise.
- (e_week_view_on_unrecur_appointment): Likewise.
-
- * gui/event-editor.c (simple_recur_to_comp_object): Likewise.
- (recur_to_comp_object): Likewise.
- (dialog_to_comp_object): Likewise.
-
- * gui/gnome-cal.c (gnome_calendar_new_appointment): Likewise.
-
-2000-12-13 Christopher James Lahey <clahey@helixcode.com>
-
- * cal-util/cal-recur.c: #if 0ed cal_obj_date_only_compare_func.
- (cal_object_get_rdate_end): Changed this function to get rid of a
- possible uninitialized error on the rdate function.
-
- * gui/calendar-model.c: Fixed some warnings involving the #define
- _XOPEN_SOURCE lines here.
-
- * gui/component-factory.c: #ifdef WANT_THE_EXECUTIVE_SUMMARYed out
- the summary_factory object since it's unused if
- WANT_THE_EXCUTIVE_SUMMARY is not defined.
-
- * gui/e-day-view.c: #if 0ed out e_day_view_remove_event_cb.
- (obj_updated_cb): #ifndef NO_WARNINGSed out a #warning.
-
- * gui/e-week-view-event-item.c (e_week_view_event_item_draw): Made
- it so that
-
- * gui/e-week-view.c (obj_updated_cb): #ifndef NO_WARNINGSed out a
- #warning.
-
-2000-12-13 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/Makefile.am: Revert federico's change for now
- because of libtool limitations with ldadding shared libtool
- libs
-
- * conduits/calendar/Makefile.am: ditto
-
-2000-12-12 JP Rosevear <jpr@helixcode.com>
-
- * gui/dialogs/task-editor.c (task_editor_set_todo_object): Use
- set_title_from_comp
- (save_todo_object): ditto
- (set_title_from_comp): Make sure the title is encoded properly (as in
- event-editor)
-
-2000-12-12 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/cal-component.c (get_text_list): Constify for new
- libical API.
- (set_text_list): Likewise.
-
- * cal-util/cal-recur.c (cal_recur_get_rule_end_date): Likewise.
- (cal_recur_set_rule_end_date): Likewise.
-
- * gui/e-itip-control.c (find_attendee): Likewise.
- (pstream_load): Likewise.
-
- * gui/gnome-cal.c (released_event_object_cb): Removed unused function.
-
- * gui/dialogs/task-editor.c (status_string_map): Removed unused
- variable.
-
-2000-12-11 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/Makefile.am (test_recur_LDADD): Link to the libical
- shared library.
-
- * cal-client/Makefile.am (client_test_LDADD): Likewise.
-
- * conduits/calendar/Makefile.am (libecalendar_conduit_la_LIBADD):
- Likewise.
-
- * gui/Makefile.am (LINK_FLAGS): Likewise.
-
-2000-12-11 Federico Mena Quintero <federico@helixcode.com>
-
- This is to make things work with libical 0.21helix1 and later.
- Warnings remain because at last libical was constified; will take
- care of those tomorrow.
-
- * cal-util/timeutil.h: #include <ical.h> instead of <icaltypes.h>
-
- * gui/e-itip-control.c: Likewise.
-
- * gui/e-meeting-edit.c: Likewise.
-
- * gui/itip-utils.h: Likewise.
-
- * cal-util/cal-component.c (alarm_uid_from_prop): constify.
- (cal_component_get_status): Updated for new libical API.
- (cal_component_set_status): Likewise.
-
- * gui/calendar-model.c (ensure_task_complete): Removed unused
- status code.
- (ensure_task_not_complete): Update for new status API.
-
- * gui/dialogs/task-editor.c (status_string_to_value): Removed
- function.
- (status_value_to_string): Removed function.
- (status_string_map): Removed variable.
- (fill_widgets): Update for new status API.
- (dialog_to_comp_object): Likewise.
-
-2000-12-11 Damon Chaplin <damon@helixcode.com>
-
- * cal-util/cal-recur.c (generate_instances_for_chunk): updated the
- tests on the start & end time just before calling the callback. It
- was skipping occurrences that started before the required interval's
- start time, which was wrong. We want all occurrences that intersect
- the interval.
- (cal_obj_time_weekday): removed the CalRecurrence* argument, since it
- isn't needed.
-
-2000-12-11 Damon Chaplin <damon@helixcode.com>
-
- * gui/event-editor.c: added changed flags and added calls to a new
- function event_editor_set_changed() to set & reset this flag.
- Added prompt_to_save_changed() which is called when the user
- selects File/Close or the window's close button.
- Fixed the 'All day event' toggle button.
- Made the 'Alarm' page sensitive as appropriate when filling widgets.
- (Though note that the alarm widgets are not being set yet.)
-
- * gui/dialogs/task-editor.c: added changed flag as above.
-
- * gui/event-editor-dialog.glade: used good names for all the
- classification radio buttons so we can access them in the code.
-
- * gui/event-editor.c (init_widgets): use the "show week numbers" config
- option in the recurrence preview calendar.
-
- * gui/e-day-view.c (e_day_view_update_event_label): use 9:00 instead
- of 09:00 in the main view, as we do everywhere else now. It means the
- times won't line up, but they are easier to read which I think is
- better.
- Added support for Page Up/Down, though I think it should move the
- selection rather than just scroll the canvas.
-
- * cal-util/cal-recur.c (generate_instances_for_chunk): removed the
- end parameter since we should be using the chunk end time now.
- Added single_rule parameter for when we are generating the
- occurrences of a single RRULE, in which case the event's start date is
- not included in the occurrences output (unless it results from the
- RRULE expansion). Both of these fix problems when using COUNT.
-
- * gui/gnome-cal.c (gnome_calendar_on_date_navigator_selection_changed):
- fixed bug when checking if the new start day starts on the week start
- day. If you select a complete week it should now show the Week view.
-
-2000-12-08 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/event-editor.c (dialog_to_comp_object): Free the strings we
- get from the editables.
-
- * gui/dialogs/task-editor.c (dialog_to_comp_object): Likewise.
- This sucks; this code should be shared between the two dialogs.
-
-2000-12-08 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/event-editor.c (fill_widgets): Free the dates we get from
- the component.
-
-2000-12-08 JP Rosevear <jpr@helixcode.com>
-
- * gui/e-calendar-table.c (e_calendar_table_init): Attach signal
- handlers to the e_scrolled_table's etable rather than to the
- e_scrolled_table directly
- (e_calendar_table_on_double_click): This signal provides more
- params now
-
-2000-12-07 Christopher James Lahey <clahey@helixcode.com>
-
- * gui/e-calendar-table.c: Got rid of code referencing the
- ETableScrolled proxy functions.
-
-2000-12-07 JP Rosevear <jpr@helixcode.com>
-
- * conduits/calendar/calendar-conduit.c (post_sync): Ugly hack for syncing
- until pcs can be altered (longer term)
-
- * conduits/todo/todo-conduit.c (post_sync): ditto
-
-2000-12-07 Chris Toshok <toshok@helixcode.com>
-
- * cal-client/Makefile.am (client_test_LDADD): add
- EXTRA_GNOME_LIBS.
-
-2000-12-07 JP Rosevear <jpr@helixcode.com>
-
- * pcs/cal-backend.c (cal_backend_compute_changes_foreach_key): Create
- an empty cal component if the object has been deleted.
-
- * idl/evolution-calendar.idl: Bit shift the change type constants
- properly
-
-2000-12-07 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-client/cal-client.c (cal_client_generate_instances): Unref
- the component from the objects list; it got referenced as many
- times as appropriate for the instances list.
-
-2000-12-06 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/event-editor.c (file_delete_cb): Confirm before deleting the
- event.
-
-2000-12-06 JP Rosevear <jpr@helixcode.com>
-
- * gui/e-week-view.c (e_week_view_init): unref the pixbuf when
- finished with it
-
-2000-12-06 Federico Mena Quintero <federico@helixcode.com>
-
- Fixes bug #920.
-
- * gui/e-calendar-table.c (delete_component): New function.
- (e_calendar_table_on_delete_task): Use delete_component().
- (e_calendar_table_on_key_press): Likewise. Also, mark the event
- as handled.
-
- * gui/calendar-model.c (calendar_model_get_component): Renamed
- function from calendar_model_get_cal_object().
- (calendar_model_delete_task): Removed function.
-
- * gui/dialogs/delete-comp.[ch]: New files with the dialog for
- deleting a calendar component.
-
- * gui/e-day-view.c (e_day_view_on_delete_appointment): Confirm
- before actually deleting the appointment.
-
- * gui/e-week-view.c (e_week_view_on_delete_appointment): Likewise.
-
- * gui/dialogs/Makefile.am (libcal_dialogs_a_SOURCES): Added
- delete-comp.[ch] to the list of sources.
-
- * cal-util/cal-component.c (cal_component_destroy): Free the alarm
- UID hash.
-
-2000-12-06 JP Rosevear <jpr@helixcode.com>
-
- * pcs/cal.c (build_change_seq): kill
- (Cal_get_changes): return the corba sequence directly
-
- * pcs/cal-backend.h: update prototype
-
- * pcs/cal-backend.c (cal_backend_compute_changes_foreach_key): Build
- the corba struct rather than the old calobjchange thing
- (cal_backend_compute_changes): ditto. build and return the actual
- corba sequence rather than the list of calobjchanges
- (cal_backend_get_changes): return the corba sequence
-
- * cal-util/cal-util.h: Remove CalObjChange cruft
-
- * cal-util/cal-util.c (cal_obj_change_list_free): Kill
-
-2000-12-06 JP Rosevear <jpr@helixcode.com>
-
- * cal-util/cal-util.c:
-
- * conduits/calendar/calendar-conduit.c (map_name): Update so as not to conflict
- with calendar
- (next_changed_item): update to use CalClientChange instead of CalObjChange
- (compute_status): ditto
- (pre_sync): ditto
- (for_each_modified): since we now have the cal component we can call
- local_record_from_comp directly
-
- * conduits/todo/todo-conduit.c: same as above
-
- * pcs/cal-backend.c: Remove much logging cruft
- (cal_backend_compute_changes): Calculate the changes based on the
- hashed database
- (cal_backend_get_changes): call cal_backend_compute_changes
- (cal_backend_compute_changes_foreach_key): hash callback for
- calculating deletions
-
- * pcs/cal-backend.h: update protype, remove logging cruft from
- object
-
- * pcs/cal.c (build_change_seq): dup the calobj rather than the uid
- now
- (Cal_get_changes): rename from Cal_get_changed_uids
- (cal_get_epv): reflect name change in epv
-
- * cal-util/cal-util.c (cal_obj_change_list_free): update assertion
-
- * cal-util/cal-util.h: CalObjChange now returns the entire ical
- component, update the change types. This should all go away shortly
-
- * idl/evolution-calendar.idl: getChangedUIds -> getChanges.
- CalObjChange now contains the calobj rather than the uid, update
- the change types
-
- * cal-client/cal-client.c (cal_client_get_changes): rename from
- cal_client_get_changed_uids to make idl and addressbook
-
- * cal-client/cal-client.h: Update prototype
-
- * cal-client/cal-client.c (build_change_list): Build a list of
- CalClientChange instead of CalObjChange
-
- * cal-client/cal-client-types.c (cal_client_change_list_free): Free
- a glist of CalClientChanges
-
- * cal-client/cal-client-types.h: New file. Declarations for
- CalClientChange.
-
- * cal-client/Makefile.am: Build new files
-
-2000-12-06 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/Makefile.am: Fix my build stupidty READ THE MACRO
-
- * conduits/calendar/Makefile.am: ditto
-
-2000-12-04 JP Rosevear <jpr@helixcode.com>
-
- * gui/e-day-view-time-item.c (e_day_view_time_item_get_column_width):
- Initialize max_large_digit_width to 0 to prevent crazy sizing issues.
-
-2000-12-04 Dan Winship <danw@helixcode.com>
-
- * gui/e-itip-control.c: Remove mysterious #include inserted by
- mmeeks to break the build.
-
-2000-12-01 Federico Mena Quintero <federico@helixcode.com>
-
- Fixes bug #918.
-
- * gui/weekday-picker.c (WeekdayPickerPrivate): Added a field for a
- set of blocked days.
- (weekday_picker_set_blocked_days): New function to configure a set
- of days that cannot be modified by the user.
- (weekday_picker_get_blocked_days): Query function for the above.
- (day_event_cb): Block the appropriate days from being modified.
-
- * gui/event-editor.c (get_start_weekday_mask): New function to
- compute a day mask for the start day of a calendar component.
- (set_recur_special_defaults): New function to set sane defaults
- for the recurrence special widgets.
- (fill_recurrence_widgets): Use set_recur_special_defaults().
- (make_recur_weekly_special): Block the appropriate days.
-
-2000-12-01 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/control-factory.c (set_prop): Removed debugging message.
- (control_factory_init): Ditto.
-
- * gui/calendar-commands.c (calendar_set_uri): Ditto.
-
- * gui/main.c (main): Ditto.
-
- * gui/event-editor.c (set_title_from_comp): New function to
- generate a title and convert it from UTF8 before setting it on the
- window.
- (save_event_object): Uset set_title_from_comp().
- (event_editor_set_event_object): Likewise.
-
-2000-11-30 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/todo-conduit.c: Debug message cleanups
- (comp_from_remote_record): Properly set the ical description field
-
- * conduits/calendar/calendar-conduit.c (is_empty_time): New utility
- functions that look for all 0's in a struct tm
- (comp_from_remote_record): use above
- (local_record_from_comp): Correctly set the repeatForever value so
- that we repeat forever instead of a really long time
- (comp_from_remote_record): Only set the cal component recurrence
- until field when repeatForever is 0
-
-2000-11-30 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/e-itip-control.c: fixed a bug that caused the calendar to
- segfault when the iTip control was destroyed.
-
-2000-11-30 JP Rosevear <jpr@helixcode.com>
-
- * conduits/calendar/calendar-conduit.c (local_record_from_comp): Empty
- by_day entries are no longer indicated by ICAL_RECURRENCE_ARRAY_MAX not
- SHRT_MAX. Calculate weekly and monthly by date recurrences properly
- (get_pilot_day): Convert ical day to corresponding integer for pilot day
-
-2000-11-30 JP Rosevear <jpr@helixcode.com>
-
- * conduits/calendar/calendar-conduit.c: Debug message cleanups
- (get_ical_day): Fix off-by-one error which affected weekly occurences.
- (comp_from_remote_record): Monthly by day and by date were reversed
- (nth_weekday): function taken from event-editor.c that encodes BYDAY
- values - this needs to be in libical really.
- (comp_from_remote_record): Don't set the description if the pilot note
- is null. Rejig so that we don't have to free objects.
-
-2000-11-28 Federico Mena Quintero <federico@helixcode.com>
-
- Upgrade of the alarm framework. We now access alarms by a unique
- identifier. This UID is added as an extension property to alarm
- subcomponents when their parent components are scanned by
- CalComponent.
-
- * cal-util/cal-component.c (CalComponentPrivate): Added a hash
- table of alarm UIDs -> alarm properties.
- (cal_component_init): Initialize priv->alarm_uid_hash.
- (free_icalcomponent): Free the elements in the
- priv->alarm_uid_hash.
- (scan_alarm): New function to add scan an alarm subcomponent and
- ensure that it has an alarm UID extension property so that we can
- add it to our mapping table.
- (cal_component_get_first_alarm): Removed function.
- (cal_component_get_next_alarm): Removed function.
- (cal_component_get_alarm_uids): New function.
- (cal_component_get_alarm): New function.
-
-2000-11-28 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/todo-conduit.c (local_record_to_pilot_record): Return
- a struct rather than a pointer to a struct
- (compare): local_record_to_pilot_record now returns a struct
- (prepare): ditto
- (free_prepare): remove as per gnome-pilot changes
- (conduit_get_gpilot_conduit): don't listen for free_prepare signal
-
- * conduits/calendar/calendar-conduit.c: Same as above
-
-2000-11-28 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/e-calendar-table.c (E_CALENDAR_TABLE_SPEC): Reformatted the
- table spec to make it easier to read.
-
- * gui/tag-calendar.c: Oops, Damon wrote this, not me. Fixed the
- Authors line.
-
-2000-11-28 Damon Chaplin <damon@helixcode.com>
-
- * gui/e-day-view*.[hc]:
- * gui/e-week-view*.[hc]: finished 12-hour support and tried to tidy
- up & comment the drawing code in places. Also fixed a couple of bugs I
- spotted. All the options on the 'Calendar' page should now work.
-
-2000-11-28 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/e-meeting-edit.c: removed some debugging code that I had,
- which might have caused problems.
-
-2000-11-27 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/calendar-model.c: added a preliminary change to have
- Assigned To-Do items have a corresponding icon.
-
-2000-11-27 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/todo-conduit.c (free_prepare): Ditto
-
- * conduits/calendar/calendar-conduit.c (free_prepare): Adjust
- free_prepare to the correct signal parameters. Don't actually
- do anything - there is a semantic discrepancy that needs to be
- resolved.
-
-2000-11-26 Damon Chaplin <damon@helixcode.com>
-
- * gui/e-day-view.c (e_day_view_set_days_shown): == instead of =.
-
-2000-11-26 Damon Chaplin <damon@helixcode.com>
-
- * gui/gnome-cal.c: added more support for config settings.
-
- * gui/e-week-view.[hc]:
- * gui/e-day-view.[hc]: added support for setting - show event end
- times, week start day and 12-hour format (unfinished).
-
- * gui/e-day-view-time-item.c: started 12-hour support.
-
- * gui/tag-calendar.c (prepare_tag): use end_day + 1 since we want to
- include the last day.
-
- * gui/event-editor.c (set_all_day): minor change when turning all_day
- off - set the event end to one hour after the event start if it is on
- or before the start time. Also added more comments to make it a bit
- clearer.
-
- * cal-util/cal-recur.c (cal_obj_time_add_days): use a gint for day
- rather than a guint since we now support -ve days.
- Also fixed bug with weekly recurrences.
-
- * gui/dialogs/task-editor.c (task_editor_create_date_edit): use
- config settings.
-
- * gui/dialogs/cal-prefs-dialog.c (cal_prefs_dialog_update_config):
- updated EDateEdit calls.
-
-2000-11-24 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/e-calendar-table.c (e_calendar_table_init): Unref the ETable
- extras.
-
-2000-11-24 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/cal-component.c (free_icalcomponent): DOH, fixed
- reversed test for the presence of the icalcomp's parent. This was
- causing memory leaks in the Wombat and elsewhere.
-
- * pcs/cal-backend.c (cal_backend_set_node_timet): Plug leak.
-
-2000-11-24 Federico Mena Quintero <federico@helixcode.com>
-
- * pcs/cal-backend-file.c (scan_vcalendar): Use the new libical
- external iterators (icalcomponent_begin_component() and friends);
- the internal iterators are deprecated.
-
- * cal-util/test-recur.c (generate_occurrences): Likewise.
-
- * gui/e-itip-control.c (pstream_load): Likewise.
-
- * gui/e-meeting-edit.c (e_meeting_edit): Likewise.
-
- * pcs/cal-backend.c (cal_backend_log_entry): Plug leak.
- (cal_backend_log_sync): Free the entry->uid.
-
- * util/icalendar-save.[ch]:
- * util/icalendar-test.c:
- * util/icalendar.[ch]: Removed obsolete files.
-
-2000-11-21 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/task.xpm: Remove the check because it makes it look like the
- task is already completed. This fixes bug #819.
-
- * gui/task-recurring.xpm: Make it use a prettier overlaid icon.
-
- * gui/task-*.xpm: Made the things look like little spiral-bound
- notebooks.
-
- * gui/e-calendar-table.c (E_CALENDAR_TABLE_SPEC): Make the default
- column order be icon/completed/summary. You may need to erase
- your ~/evolution/config/TaskPad for this to appear.
-
-2000-11-21 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/calendar-model.c (calendar_model_is_cell_editable): The icon
- column is not editable!
-
- * gui/calendar-commands.c (todo_properties_changed): Removed.
- (time_format_changed): Removed.
- (colors_changed): Removed.
-
- * gui/calendar-commands.h:
- * gui/prop.c (prop_apply):
- * gui/calendar-commands.c (init_calendar): Removed the old to-do
- list crap.
-
- * gui/gncal-todo.[ch]: Removed obsolete files.
-
- * gui/Makefile.am (evolution_calendar_SOURCES): Removed gncal-todo.[ch].
-
- * gui/gnome-cal.c (gnome_calendar_todo_properties_changed): Removed.
- (gnome_calendar_time_format_changed): Removed.
- (gnome_calendar_colors_changed): Removed.
-
-2000-11-21 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/e-itip-control.c: fixed the stupid Bonobo widget size
- allocation bug that had been vexing me.
-
- * gui/e-itip-control.glade: I removed some hacks that were
- necessary for said size bug.
-
-2000-11-16 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/e-itip-control.c, gui/e-meeting-edit.c: added cancellation
- code to our program; people can cancel meetings, which is the best
- thing to do for most meetings.
-
-2000-11-13 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/e-itip-control.c: made the REPLY code actually work.
-
-2000-11-13 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/itip-utils.[ch]: I created this file to store some commonly used enumeration to
- string mappings and functions.
-
- * gui/Makefile.am: this was changed to reflect the addition of the above file.
-
- * gui/e-itip-control.c: added code to take action on a REPLY message.
-
- * gui/e-meeting-edit.c: bug fixes.
-
-2000-11-12 Federico Mena Quintero <federico@helixcode.com>
-
- OK, bugzilla bug #829 is fixed and that does not redeem me from
- extreme procrastination. Wheeeeeeeeeeeeeeee!
-
- * gui/event-editor-dialog.c: Changed the "Rule view" label to
- "Preview"
-
-2000-11-12 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/event-editor.c (make_recur_ending_count_special): Misspelled
- "occurrences".
- (fill_recurrence_widgets): Sensitize the "Custom recurrence" radio
- button as appropriate.
- (sensitize_recur_widgets): Resurrected the recurrence custom
- warning label.
- (get_widgets): Load the recurrence custom warning bin.
-
- * gui/event-editor-dialog.glade: Add an empty alignment for the
- recurrence custom warning label.
-
-2000-11-12 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/event-editor.c (recur_preview_date_range_changed_cb): New
- function; re-tag the calendar when its date range changes.
- (init_widgets): Connect to "date_range_changed" on the recurrence
- preview calendar.
- (make_recur_weekly_special): Connect to "changed" on the weekday
- picker.
- (recur_weekday_picker_changed_cb): New function; re-tag the calendar.
- (month_day_menu_selection_done_cb): Re-tag the calendar.
- (recur_month_index_value_changed_cb): Likewise.
- (recur_ending_until_changed_cb): Likewise.
- (recur_ending_count_value_changed_cb): Likewise.
- (make_recur_monthly_special): Connect to "value_changed" on the
- adjustment of the month index.
- (make_recur_ending_until_special): Connect to "changed" on the
- ending-until date picker.
- (make_recur_ending_count_special): Connect to "value_changed" on
- the ending-count adjustment.
- (init_widgets): Set to zero the maximum number of selectable days
- in the recurrence preview calendar. Set the week_start_day from
- the calendar's configuration.
-
-2000-11-12 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/event-editor.c (clear_widgets): Block the signals as appropriate.
- (fill_ending_date): Ditto.
- (fill_recurrence_widgets): Ditto.
- (recurrence_type_toggled_cb): Only sensitize the widgets and
- preview the recurrence if the toggle button is active.
-
-2000-11-12 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/event-editor.c (recur_to_comp_object): Clear the rdate and
- exrule lists from the component if we are setting a simple
- recurrence.
- (recur_to_comp_object): Set the exdate list here instead of in
- dialog_to_comp_object().
- (preview_recur): New function to tag the recurrence preview
- calendar based on the information from the dialog box.
- (fill_exception_widgets): Fill the exception widgets here; moved
- over from fill_widgets().
- (fill_recurrence_widgets): Call preview_recur(). Also, call
- fill_exception_widgets() first of all.
- (recurrence_type_toggled_cb): Call preview_recur().
- (recur_interval_selection_done_cb): Likewise.
- (recur_ending_selection_done_cb): Likewise.
- (recurrence_exception_add_cb): Likewise.
- (recurrence_exception_modify_cb): Likewise.
- (recurrence_exception_delete_cb): Likewise.
- (date_changed_cb): Likewise.
- (recur_interval_value_changed_cb): Likewise, new function.
-
- * gui/tag-calendar.[ch]: New files with utilities for tagging
- calendars. mark.[ch] should go away some day.
-
- * gui/tag-calendar.c (tag_calendar): Moved over from
- gnome_calendar_tag_calendar(). Take in a CalClient instead of a
- GnomeCalendar. Added API docs.
- (tag_calendar_by_comp): New function to tag a calendar based on a
- single calendar component instead of a whole client.
-
- * gui/gnome-cal.c (initial_load): Use tag_calendar_by_client().
- (obj_updated_cb): Likewise.
- (obj_removed_cb): Likewise.
- (gnome_calendar_on_date_navigator_date_range_changed): Likewise.
- (editor_closed_cb): Free the closure.
- (destroy_editor_cb): Renamed from free_uid(). Do not free the
- UID; just unref the event editor. Our destroy handler to it will
- free things properly. This will also cause the corresponding
- calendar client to be unrefed.
- (editor_closed_cb): Use a flag on the GnomeCalendar to decide
- whether to remove the editor from the hash table. This is sort of
- icky.
-
- * gui/calendar-model.c (obj_updated_cb): If the object is new, we
- have to use e_table_model_row_inserted(), not row_changed().
- Thanks to JP Rosevear for reporting this.
-
- * gui/Makefile.am (evolution_calendar_SOURCES): Added
- tag-calendar.[ch] to the list of sources.
-
-2000-11-11 Matt Bissiri <bissiri@eecs.umich.edu>
-
- * gui/evolution-calendar.oafinfo:
- Update the remaining "IDL:Evolution*" to "IDL:GNOME/Evolution*"
- to sync up with yesterday's IDL re-scoping.
-
-2000-11-10 Michael Meeks <michael@helixcode.com>
-
- * gui/Makefile.am ($(IDL_GENERATED)): sort include order.
-
- * pcs/Makefile.am (idl_flags): ditto.
-
-2000-11-10 JP Rosevear <jpr@helixcode.com>
-
- * conduits/calendar/calendar-conduit.c (for_each_modified): Inc the
- iterator before finding the next changed item.
-
- * conduits/todo/todo-conduit.c (for_each_modified): ditto
-
-2000-11-09 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/e-itip-control.c: I wrote the code so that recipients of meeting requests
- can reply appropriately.
-
-2000-11-09 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/e-meeting-edit.c: fixed a bug that would make the calendar segfault
- if the meeting editor were called up twice without first saving the
- component.
-
-2000-11-08 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/e-itip-control.c, gui/e-itip-control.glade: updated the GUI
- to allow the user to add PUBLISHed events to his calendar, and created
- unworking buttons for meeting requests.
-
-2000-11-08 Federico Mena Quintero <federico@helixcode.com>
-
- These changes fix bugzilla bugs #874 and #875.
-
- * cal-util/cal-component.c (cal_component_get_exdate_list): Return
- a list of CalComponentDateTime instead of simple struct
- icaltimetype objects. Exception date properties *can* contain a
- timezone parameter, so we need to include those if they are
- present.
- (cal_component_set_exdate_list): On the input, handle a list of
- CalComponentDateTime structures. On the internals, handle a list
- of struct datetime instead of plain properties.
- (cal_component_free_exdate_list): Handle a list of
- CalComponentDateTime structures.
- (scan_exdate): Create a list of struct datetime structures.
- (free_icalcomponent): Free the exdate_list properly.
-
- * cal-util/cal-recur.c (generate_instances_for_chunk): Use the
- proper types for exception dates.
-
- * gui/comp-util.h:
- * gui/comp-util.c: New files with utilities for manipulating
- calendar component objects.
- (cal_comp_util_add_exdate): New function.
-
- * gui/Makefile.am (evolution_calendar_SOURCES): Added
- comp-util.[ch] to the list of sources.
-
- * gui/e-day-view.c (add_exdate): New convenience function to add
- an exception date to a calendar component.
- (e_day_view_on_unrecur_appointment): Use cal_comp_util_add_exdate().
- (e_day_view_on_delete_occurrence): Likewise.
-
- * gui/e-week-view.c (e_week_view_on_delete_occurrence): Likewise.
- (e_week_view_on_unrecur_appointment): Likewise.
-
- * gui/event-editor.c (nth_weekday): Be paranoid about valid
- position values.
- (fill_widgets): Use the proper types for exdates.
- (dialog_to_comp_object): Likewise.
-
-2000-11-08 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/event-editor.c (adjust_day_index_spin): Adjust the valid
- range of the month index spin button depending on the selection of
- the day/weekday menu.
-
-2000-11-07 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/e-itip-control.c, gui/e-itip-control.glade: changed the GUI,
- and added some extra feedback for the user.
-
-2000-11-07 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/weekday-picker.h (WeekdayPickerClass): Added a "changed"
- signal to notify of changes to the set of selected days.
-
- * gui/weekday-picker.c (weekday_picker_class_init): Create the
- "changed" signal.
- (weekday_picker_set_days): Emit the "changed" signal.
-
-2000-11-06 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/e-itip-control.c, gui/e-itip-control.glade: changed to GUI to
- accomodate dynamically generated buttons, which will be tailored to
- the type of iTip message that is incoming.
-
- * gui/e-meeting-dialog.glade gui/e-meeting-edit.c: added a new button
- to publish events, in addition to requesting meetings.
-
-2000-11-05 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/event-editor-dialog.glade: Removed the old recurrence page.
- Wheeeeeeeeee!
-
- * gui/event-editor.c (make_recurrence_special): Clear the monthly
- widgets.
- (make_recur_monthly_special): Create the monthly widgets.
- (clear_widgets): Clear the monthly values.
- (simple_recur_to_comp_object): Fill in the monthly values.
- (fill_recurrence_widgets): Fill in the monthly and yearly source
- values.
- (dialog_to_comp_object): Take in a CalComponent instead of using
- the event editor's directly.
- (recur_to_comp_object): Likewise.
- (simple_recur_to_comp_object): Likewise.
- (EventEditorPrivate): Removed the widgets from the old recurrence
- page.
- (get_widgets): Likewise.
- (clear_widgets): Likewise.
- (dialog_to_comp_object): If the description or summary are empty,
- just clear the description list or summary property, respectively,
- instead of saving empty ones.
- (simple_recur_to_comp_object): Set the week_start field.
-
- * gui/main.c: Fix includes, and add calendar-config.h.
-
- * gui/Makefile.am (evolution_calendar_SOURCES): The glade messages
- file should not be in SOURCES.
-
-2000-11-05 Christopher James Lahey <clahey@helixcode.com>
-
- * doc/.cvsignore, doc/C/.cvsignore: Removed unnecessary .cvsignore
- files.
-
-2000-11-03 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/event-editor.c (check_all_day): Block signals from the
- toggle button.
- (date_changed_cb): Merged check_dates() and check_times() into
- this function; provide better behavior as well.
- (check_dates): Removed function.
- (check_times): Removed function.
- (init_widgets): Connect to the "changed" signal on the start_time
- and end_time widgets.
- (check_all_day): Use a better test.
-
- * gui/Makefile.am: Clean the idl-generated sources properly.
- * cal-client/Makefile.am: Likewise.
-
-2000-11-03 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/e-itip-control.c: added some checks for the type of an
- incoming iCal component before passing it off to the CalComponent
- routines.
-
-2000-11-02 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/dialogs/task-editor.c (init_widgets): The date editor's
- signal is now "changed".
- (completed_changed): Renamed callback to reflect the name of the
- signal.
-
-2000-11-01 Gediminas Paulauskas <menesis@delfi.lt>
-
- * gui/main.c: (main): added call to bindtextdomain and textdomain, so
- all calendar gui shows up localized.
-
-2000-10-31 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/event-editor.c (count_by_xxx): Hmmm. SHRT_MAX changed to
- ICAL_RECURRENCE_ARRAY_MAX in libical. Deal with it.
- (fill_recurrence_widgets): Likewise.
- (simple_recur_to_comp_object): Fixed incorrect assertion. The
- weekday picker is not the immediate child of the recurrence
- special container.
- (fill_recurrence_widgets): Call make_recurrence_special() after
- setting the recurrence period type.
- (fill_ending_date): Call make_recurrence_ending_special(). This
- would be so much nicer if GTK+ were model/view all over.
-
-2000-10-31 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/todo-conduit.h: Remove add/del/mod hashes and
- add changed_hash.
-
- * conduits/calendar/calendar-conduit.h: ditto
-
- * conduits/todo/todo-conduit.c (next_changed_item): Utility function
- to get the next "really" changed item (changed status can be cleared now)
- (compute_status): Compute status based on changed_hash
- (pre_sync): Fill changed_hash and counts adds/mods/dels
- (set_status_cleared): New callback handler - avoid double syncing
- (for_each_modified): Use next_changed_item to iterate
- (add_archive_record): kill
- (delete_archive_record): kill
- (archive_record): New callback handler - mark/unmark archive status
- (conduit_get_gpilot_conduit): Adjust signal connects
-
- * conduits/calendar/calendar-conduit.c: ditto
-
-2000-10-30 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/event-editor.c (sensitize_recur_widgets): New function. We
- split it from the radio callback so that we can call it explicitly
- from fill_recurrence_widgets().
- (fill_recurrence_widgets): Call sensitize_recur_widgets() as
- appropriate.
-
-2000-10-30 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/calendar-commands.c (new_calendar): Removed the geometry and
- hidden arguments. This code is ancient.
- (all_calendars): Made static. This sucks; configuration should be
- notification-based instead of "let's iterate through all open
- calendars".
- (active_calendars): Removed. Functions can check the length of
- the all_calendars list if they are interested.
-
- * gui/event-editor.c (sync_entries): Do not take in an extra data
- pointer.
- (summary_changed_cb): Use a single call back to sync both entries.
- (sync_date_edits): New function to sync two EDateEdit widgets.
- (init_widgets): Connect the general and recurrence starting date
- widgets.
-
-2000-10-27 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/event-editor.c (sync_entries): New function.
- (general_summary_changed_cb): Sync the general summary to the
- recurrence summary widget.
- (recurrence_summary_changed_cb): Vice-versa.
- (init_widgets): Hook to the summaries.
-
- * event-editor-dialog.glade: Do not expand/fill the start and end
- date so that the "all day event" button is not pushed all the way
- to the right.
- Decrease the spacing between the recurrence sentence widgets.
- Remove a spurious empty label that was lurking around the
- recurrence widgets.
- Make the alarm widgets expand the right way.
- Delete old recurrence widgets.
-
-2000-10-27 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/event-editor.c (init_widgets): Connect to the recurrence
- ending menu.
- (recur_ending_selection_done_cb): Implemented.
- (make_recurrence_ending_special): Implemented.
- (make_recur_ending_until_special): Implemented.
- (fill_ending_date): Implemented.
- (make_recur_ending_count_special): Implemented.
- (simple_recur_to_comp_object): Fill in the ending date.
- (clear_widgets): Clear the recurrence ending widgets.
-
- * gui/event-editor-dialog.glade: Moved the recurrence type radio
- buttons to a single hbox to save space.
- Fixed the lower value of the recurrence interval spin button.
- Removed the stale widgets from the recurrence ending date part.
-
-2000-10-27 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/e-meeting-edit.c: fixed problems in which I allocated CORBA
- strings of 0 length, but then didn't NULL terminate them.
-
-2000-10-27 <jpr@helixcode.com>
-
- * conduits/calendar/calendar-conduit.c (check_for_slow_setting):
- Check boundary case of fast sync
-
- * conduits/todo/todo-conduit.c (check_for_slow_setting): ditto
-
-2000-10-27 <jpr@helixcode.com>
-
- * conduits/calendar/calendar-conduit.c (add_archive_record): Remove
- invalid test.
- (local_record_from_comp): If the event is all day, mark it as timeless
- (comp_from_remote_record): Timeless events take up all day
-
- * conduits/todo/todo-conduit.c (add_archive_record): ditto
-
-2000-10-27 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/todo-conduit.c (add_archive_record): Take proper
- number of parameters
-
- * conduits/calendar/calendar-conduit.c (add_archive_record): ditto
-
-2000-10-26 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/event-editor.c (EventEditorPrivate): Integrate Anna's new
- recurrence page. Replace the old widget pointers with the new
- ones. Modified the relevant functions accordingly and added
- plenty of new ones.
- (event_editor_get_cal_client): New function.
- (fill_recurrence_widgets): This is *THE* tricky function for you.
- It has to discriminate whether we get a recurrence we support for
- editing or not. And this is not trivial. Sigh.
- (event_editor_update_widgets): Added preconditions and API docs.
-
- * event-editor-dialog.glade: Fixed all the spacings/
- paddings/packing options so that the widgets will look right if
- the dialog box is resized. Also fixes some misaligned widgets.
-
- * cal-util/cal-component.c (cal_component_set_rdate_list): Removed
- incorrect assertion.
-
-2000-10-26 Michael Meeks <michael@helixcode.com>
-
- * pcs/cal-factory.c (str_tolower): unsigned chars to isalpha
-
- * cal-util/calobj.c (weekdaylist, weekdaynum): ditto.
-
-2000-10-25 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/e-meeting-edit.c: brushed up some code to deal with
- the organizer entry, and solidified the CORBA memory-freeing
- issues.
-
-2000-10-25 Jesse Pavel <jpavel@helixcode.com>
-
- * removed the Evolution-Composer generated files, due
- to a tip on how we do things.
-
-2000-10-25 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/e-meeting-edit.c: I fixed a bunch of memory-deallocation
- bugs, and finished the initial integration with the mailer.
-
- * gui/Makefile.am: made the build us the Evolution-Composer.idl
- from the composer directory.
-
-2000-10-25 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/Evolution-Composer.idl: added this from the composer IDL sources
-
- * gui/Makefile.am: changed to reflect the above IDL and the associated
- orbit-idl generated files.
-
- * gui/Evolution-Composer.h,
- gui/Evolution-Composer-common.c,
- gui/Evolution-Composer-stubs.c,
- gui/Evolution-Composer-skels.c:
- the generated files, as per the above description.
-
- * gui/e-meeting-edit.c: more work towards mailer integration.
-
-2000-10-24 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/e-meeting-edit.c: I've added code to interact with the mailer's
- CORBA interfaces, though it's not yet working.
-
-2000-10-23 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/todo-conduit.c (local_record_from_comp): Use
- new e-pilot-map lookup function
- (match): ditto
-
- * conduits/calendar/calendar-conduit.c (local_record_from_comp): Use
- new e-pilot-map lookup function
- (match): ditto
-
-2000-10-23 Dan Winship <danw@helixcode.com>
-
- * pcs/Makefile.am (INCLUDES):
- * gui/dialogs/Makefile.am (INCLUDES):
- * gui/Makefile.am (INCLUDES):
- * cal-util/Makefile.am (INCLUDES):
- * cal-client/Makefile.am (INCLUDES): Update GNOMELOCALEDIR.
-
-2000-10-23 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/todo-conduit.h: Use new libeconduit calls and
- abstraction
-
- * conduits/calendar/calendar-conduit.c: ditto
-
- * conduits/calendar/calendar-conduit.h: ditto
-
- * conduits/todo/todo-conduit.c: ditto
-
- * conduits/calendar/Makefile.am: Add libeconduit-static.la
-
- * conduits/calendar/calendar-conduit.c (post_sync): Use e_pilot_map_write
- (pre_sync): Use e_pilot_map_read
-
-2000-10-23 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/Makefile.am: Add libeconduit-static.la
-
- * conduits/todo/todo-conduit.c (post_sync): Use e_pilot_map_write
- (pre_sync): Use e_pilot_map_read
-
-2000-10-21 Damon Chaplin <damon@helixcode.com>
-
- * gui/dialogs/cal-prefs-dialog.c
- (cal_prefs_dialog_use_24_hour_toggled): removed debug message.
-
- * gui/e-calendar-table.c (e_calendar_table_save_state): new function
- to save the state of the table to a given file.
-
- * gui/e-calendar-table.h (struct _ECalendarTable): added etable field
- so we can access it to save the state.
-
- * gui/gnome-cal.c (gnome_calendar_destroy): call
- e_calendar_table_save_state() to save the state of the TaskPad.
- (setup_widgets): load the state of the TaskPad.
-
- * gui/calendar-config.c: added support for the default view.
-
- * gui/gnome-cal.c (gnome_calendar_construct):
- (gnome_calendar_set_view_internal): use/set the default view setting.
-
-2000-10-20 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/e-meeting-editor.c: added more (working) integration with the
- meeting schedular.
-
-2000-10-20 Jesse Pavel <jpavel@helixcode.com>
-
- * cal-utils/cal-component.c: in set_datetime(), I put an #if 0'd portion
- of the code back into operation, because the icalproperty_remove_parameter()
- function is now implemented.
-
- * gui/e-meeting-editor.c: added more (unworking) integration with the
- meeting schedular.
-
-2000-10-20 JP Rosevear <jpr@helixcode.com>
-
- * pcs/cal-backend.c (cal_backend_destroy): New destroy
- handler to properly stop the timer, sync the log and unref
- the URI.
- (cal_backend_last_client_gone): Just emit the signal,
- clean up work is done in cal_backend_destroy now.
-
- * pcs/cal-backend-file.c (cal_backend_file_load): Unref the
- uri we are replacing NOT the new uri.
-
-2000-10-20 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/Makefile.am: Fix build
-
- * conduits/calendar/Makefile.am: Fix build
-
-2000-10-20 JP Rosevear <jpr@helixcode.com>
-
- * conduits/calendar/calendar-conduit.c (delete_archive_record):
- Don't throw an error
-
- * conduits/todo/todo-conduit.c (delete_archive_record): ditto
-
-2000-10-20 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/todo-conduit-control-applet.c: Add defines
-
- * conduits/todo/todo-conduit-config.h: put #ifdefs around functions
- can't make this a public interface in the usual way as then the
- symbols would be exported
-
- * conduits/todo/todo-conduit.c: Kill warnings. clahey will be
- happy! Add some defines to include only the necessary config functions.
- (conduit_get_gpilot_conduit): Hook up archive signals
-
- * conduits/calendar/calendar-conduit.c: Same as above
-
- * conduits/calendar/calendar-conduit-control-applet.c: ditto
-
- * conduits/calendar/calendar-conduit-config.h: ditto
-
-2000-10-20 Michael Meeks <michael@helixcode.com>
-
- * gui/calendar-commands.h: s/BonoboUIHandler/BonoboUIComponent/
-
- * gui/calendar-commands.c (properties_cmd): ditto.
-
-2000-10-20 Damon Chaplin <damon@helixcode.com>
-
- * gui/calendar-model.c (calendar_model_value_at): use
- cal_component_has_alarms().
-
-2000-10-20 Damon Chaplin <damon@helixcode.com>
-
- * gui/e-calendar-table.c (E_CALENDAR_TABLE_SPEC): added
- _click-to-add-message, though I'm not sure if i18n will work.
-
- * cal-util/cal-recur.c (cal_obj_time_add_hours):
- (cal_obj_time_add_minutes):
- (cal_obj_time_add_seconds): updated to handle -ve args.
-
- * cal-util/timeutil.c (time_add_day): set tm_isdst to -1 before calling
- mktime().
-
- * cal-util/cal-recur.c (generate_instances_for_chunk): don't call the
- callback if the event ends exactly on the interval start time.
-
- * gui/e-week-view.c (e_week_view_reshape_event_span):
- * gui/e-week-view-event-item.c (e_week_view_event_item_draw_icons):
- * gui/e-day-view-top-item.c (e_day_view_top_item_draw_long_event):
- * gui/e-day-view-main-item.c (e_day_view_main_item_draw_day_event):
- * gui/e-day-view.c (e_day_view_reshape_long_event):
- (e_day_view_reshape_day_event): use cal_component_has_alarms().
-
- * cal-util/cal-component.[hc]: added cal_component_has_alarms().
-
-2000-10-16 Damon Chaplin <damon@helixcode.com>
-
- * gui/calendar-config.c (config_read): set default MonthVPanePosition
- to 1 rather than 0, so if you move the hpane you'll see the date
- navigator.
-
-2000-10-19 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/event-editor.[ch]: added a public function which causes the
- event editor to reload its widgets to the associated CalComponent.
-
- * gui/e-meeting-edit.c: added rudimentary support for the phat
- e-meeting-time-selector widget, though it has no effect on the
- component yet.
-
- * gui/Makefile.am: the meeting editor depends on the meeting widget
- library, now.
-
- * gui/e-itip-control.glade: I added another toolbar button that summons
- from the hoary deep the meeting time widget.
-
-2000-10-19 Ettore Perazzoli <ettore@helixcode.com>
-
- * gui/Makefile.am: Add `event-editor-dialog.glade.h'.
- (EXTRA_DIST): Add `$(glade_messages)'.
-
-2000-10-19 Michael Meeks <michael@helixcode.com>
-
- * gui/calendar-commands.c (tb_print_cb): remove; redundant.
-
- * gui/event-editor.c (create_menu, create_toolbar): kill.
- (event_editor_destroy): upd.
- (event_editor_construct): update to new UI handler, cast
- priv->general_summary to a widget not an object.
-
-2000-10-18 Michael Meeks <michael@helixcode.com>
-
- * gui/dialogs/task-editor.c (create_menu, create_toolbar): die.
- (debug_xml_cb): add debugging hook.
-
- * gui/dialogs/Makefile.am: add EVOLUTION_DATADIR
-
- * gui/dialogs/task-editor.c (task_editor_construct): upd for new UI.
-
-2000-10-17 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/todo-conduit-control-applet.c: Add defines
-
- * conduits/todo/todo-conduit-config.h: put #ifdefs around functions
- can't make this a public interface in the usual way as then the
- symbols would be exported
-
- * conduits/todo/todo-conduit.c: Kill warnings. clahey will be
- happy! Add some defines to include only the necessary config functions.
- (conduit_get_gpilot_conduit): Hook up archive signals
-
- * conduits/calendar/calendar-conduit.c: Same as above
-
- * conduits/calendar/calendar-conduit-control-applet.c: ditto
-
- * conduits/calendar/calendar-conduit-config.h: ditto
-
-2000-10-16 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/e-itip-control.c: You can now add incoming iTip
- messages to your calendar store.
-
- * gui/e-itip-control.glade: added a progress bar dialog
- in case the calendar loading takes a long time.
-
-2000-10-16 JP Rosevear <jpr@helixcode.com>
-
- * cal-client/cal-client.h: Remove pilot cruft. All pilot stuff
- is in the conduits now and uses the logging facility.
-
- * pcs/cal-backend-file.c: ditto
-
- * pcs/cal-backend.h: ditto
-
- * pcs/cal-backend.c: ditto
-
- * pcs/cal.c: ditto
-
- * pcs/cal.h: ditto
-
- * idl/evolution-calendar.idl: ditto
-
- * cal-util/cal-component.h: ditto
-
- * cal-util/cal-component.c: ditto
-
- * cal-client/cal-client.c: ditto
-
- * conduits/calendar/calendar-conduit.c (local_record_from_comp):
- Take a stab at storing recurrence stuff on the pilot properly
-
- * pcs/cal-backend.c (cal_backend_update_object): Don't log the
- event until after the update in case its a new item
-
-2000-10-16 Tuomas Kuosmanen <tigert@helixcode.com>
-
- * gui/dayview.xpm, gui/workweekview.xpm, gui/weekview.xpm
- gui/monthview.xpm gui/yearview.xpm: Updated icons, let me know
- if you like these or not, I might work on these some more but
- I wanted to put these versions up anyway to get feedback..
-
-2000-10-15 Dan Winship <danw@helixcode.com>
-
- * gui/Makefile.am: Remove CPPFLAGS def since the -D there was
- already in INCLUDES
-
-2000-10-14 Ettore Perazzoli <ettore@helixcode.com>
-
- * gui/evolution-calendar.oafinfo: Added an
- "evolution:shell-component-icon" attribute.
-
-2000-10-12 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/e-itip-control.{c,glade}: Made the control much more
- relavent to the function at hand.
-
-2000-10-12 Damon Chaplin <damon@helixcode.com>
-
- * gui/e-calendar-table.c (E_CALENDAR_TABLE_SPEC): set the 2 icon
- columns to a min width of 18 and resizable to FALSE.
-
-2000-10-12 Damon Chaplin <damon@helixcode.com>
-
- * gui/calendar-commands.c (calendar_control_activate):
- (update_pixmaps):
- (set_pixmap): set the pixmaps of the toolbar buttons for the views,
- and removed a lot of old unused stuff. We'll use plain buttons for
- the view buttons for now, until Bonobo toolbars support radio buttons.
-
- * gui/gnome-cal.c (gnome_calendar_dayjump): check day_button is not
- NULL before using it.
- (gnome_calendar_update_view_buttons): check button is not NULL.
-
-2000-10-11 Damon Chaplin <damon@helixcode.com>
-
- * gui/e-day-view-time-item.c (e_day_view_time_item_draw): got 12/24
- hour format the wrong way round.
-
-2000-10-12 JP Rosevear <jpr@helixcode.com>
-
- * conduits/calendar/calendar-conduit.c (comp_from_remote_record):
- Store recurrence stuff on the desktop properly
- (get_ical_day): Utility function
-
-2000-10-12 Iain Holmes <iain@helixcode.com>
-
- * gui/component-factory.c: Disable the executive summary.
-
-2000-10-11 JP Rosevear <jpr@helixcode.com>
-
- * pcs/cal-backend.c (cal_backend_log_entry): Take CalObjType
- as a param because its impossible to determine after a delete.
- (cal_backend_remove_object): Calculate CalObjType and pass
- it to cal_backend_log_entry
- (cal_backend_update_object): ditto
-
- * conduits/todo/todo-conduit.c (local_record_from_comp): Kill
- unused variables.
- (add_archive_record): Don't kill the sync if this happens
- (update_record): Kill old function
- (replace_record): New function to handle replace_record signal
- (conduit_get_gpilot_conduit): Listen for replace record signal
- (add_record): Always add a new record, never replace
- (replace_record): Always replace an existing record
-
- * conduits/calendar/calendar-conduit.c: Same as above
-
-2000-10-10 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/e-itip-control.c: set a default size for the control.
-
-2000-10-10 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/evolution-calendar.oafinfo: Added information about the
- text/calendar MIME type, so that the evolution-calendar is called
- to deal with iMIP attachments.
-
- * gui/e-itip-control.[ch]: These files implement a Bonobo
- control that will eventually deal with iMIP/iTIP messages from
- the mailer. Right now, it's not working.
-
- * gui/e-itip-control.glade: The Glade GUI for the above-mentioned
- control.
-
- * gui/Makefile.am: added references to the files I created.
-
- * gui/main.c: called the initialization function of the Bonobo
- control factory.
-
-2000-10-11 Tuomas Kuosmanen <tigert@helixcode.com>
-
- * gui/task-assigned-to.xpm gui/task-assigned.xpm
- gui/recur.xpm gui/task-recurring.xpm gui/task.xpm:
- New versions of the icons for the tasklist/pad.
-
-2000-10-11 Damon Chaplin <damon@helixcode.com>
-
- * gui/component-factory.c (owner_unset_cb): don't free evolution_dir
- as we need it to save the config settings.
-
-2000-10-11 Damon Chaplin <damon@helixcode.com>
-
- * gui/main.c (main): call calendar_config_write_on_exit() to write
- out some special config settings (as the mail component does).
-
- * gui/calendar-commands.c (properties_cmd): changed to use the new
- preferences dialog.
- (update_all_config_settings): new function to iterate over all the
- calendars and update the config settings.
-
- * gui/dialogs/cal-prefs-dialog.glade: preferences dialog.
-
- * gui/dialogs/cal-prefs-dialog.[hc]: new files for the preferences
- dialog.
-
- * gui/calendar-config.[hc]: new files to handle loading/saving config
- settings.
-
- * cal-util/cal-recur.c: fixed bug in YEARLY when no filters were set,
- plus minor changes.
-
- * cal-util/test-recur.c: updated.
-
- * gui/e-day-view-time-item.c:
- * gui/popup-menu.c: update to #include <gal/widgets/e-gui-utils.h>
-
- * gui/component-factory.c (owner_set_cb): called calendar_config_init.
- (owner_set_cb):
- (owner_unset_cb): updated the prototypes.
-
- * gui/main.c (main): added call to calendar_config_write_on_exit().
-
- * gui/component-factory.h:
- * gui/component-factory.c (owner_set_cb): added global evolution_dir
- just like the mail component, so we know we to store config stuff.
-
-2000-10-11 Christopher James Lahey <clahey@helixcode.com>
-
- * gui/e-calendar-table.c: Fixed the column elements here.
-
-2000-10-11 Christopher James Lahey <clahey@helixcode.com>
-
- * gui/e-calendar-table.c: Updated to use the new ETable
- specification stuff.
-
-2000-10-11 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/todo-conduit.c (map_sax_start_element): The
- element is "pilot_id" not "pilotid". Update both maps
- (compute_pid): Utility function to set a local records pid
- (local_record_from_comp): Compute the pid and status here,
- no longer use the old cal_component pilot interfaces
- (free_match): Its a *local not a **local
-
- * conduits/calendar/calendar-conduit.c: same as above
-
- * conduits/todo/todo-conduit.h: Have both a uid and pid map
-
- * conduits/todo/calendar-conduit.h: same as above
-
-2000-10-09 JP Rosevear <jpr@helixcode.com>
-
- * conduits/*: Adjust to using gnome-pilot-sync-abs conduit which
- is based on the latest pilot link changes.
-
-2000-10-09 Iain Holmes <iain@helixcode.com>
-
- * Makefile.am: Added the executive-summary library and cflags
-
- * gui/evolution-calendar.oafinfo: Added oaf servers for the
- executive summary and executive summary factory.
-
- * gui/calendar-summary.[ch]: New files to create the summary.
-
- * gui/component-factory.c (summary_fn): Create the executive
- summary component.
- (component_factory_init): Start the summary factory as well.
-
-2000-10-06 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/weekday-picker.[ch]: New widget to pick weekdays.
-
-2000-10-05 Michael Meeks <michael@helixcode.com>
-
- * gui/calendar-commands.c: upd.
- (calendar_control_activate): upd.
- (calendar_control_deactivate): upd.
-
-2000-10-05 Damon Chaplin <damon@helixcode.com>
-
- * gui/e-day-view.c:
- * gui/e-week-view.c: when the user types in a new event, don't create
- it until the user hits Return or switches focus. Removed the
- editing_new_event flags.
-
- * cal-util/test-recur.c: rewritten to work on ics files. Now I can
- start testing the recurrence code.
-
- * cal-util/cal-recur.c: a few fixes.
-
- * gui/e-day-view.c (e_day_view_check_if_new_event_fits): fixed to
- return TRUE for long events, not FALSE.
-
-2000-10-04 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/print.c (print_todo_details): As a temporary solution to the
- to-do printing, just print the summaries. We'll use the ETable
- printing stuff later.
-
- * gui/print.c (print_day_summary_cb): Use g_list_append() correctly.
- (print_todo_details_cb): Likewise.
- (print_day_summary): Initialize psi.events. This code was
- obviously never tested.
- (print_todo_details): Likewise.
- (print_day_details): Initialize pdi.slots.
-
- * gui/print.c (range_selector_new): Fix strftime() %a versus %b
- confusion. Fixes bugzilla #644.
- (range_selector_new): Fix the whole localization mess by making
- better use of strftime(). Now we generate whole date strings at a
- time and compose them later. Fixes bugzilla #643.
-
-2000-10-02 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/e-meeting-edit.c: added support for the ROLE and RSVP parameters
- in both the GUI and underlying iCal.
-
-2000-09-29 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/e-meeting-edit.c: added support for organizers in the meeting
- scheduler.
-
-2000-09-29 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/e-meeting-edit.c: added code that makes changes to the underlying
- iCAL structure of an event, when the user changes meeting information.
-
- * gui/e-meeting-dialog.glade: this is the Glade UI for the meeting dialog
- and accoutrements.
-
-2000-09-29 Damon Chaplin <damon@helixcode.com>
-
- * cal-util/cal-recur.c: updated to support RDATE end times or
- durations. Note that if you have two RDATEs with the same start times,
- but with different end dates/durations set, the results are
- unpredictable. So the event editor dialog should check for this.
-
- * gui/e-week-view-main-item.c (e_week_view_main_item_draw_day):
- make strftime() strings translatable, and changed the formats a bit.
-
- * NOTE: someone needs to check print.c to make sure strftime strings
- are OK for i18n.
-
- * gui/e-day-view.h: Changed EDayViewDateFormat enum. We now try to
- include the weekday if possible. Also changed EDayView struct so we
- store the month & weekdays with the longest names rather than the
- actual widths. This helps i18n.
-
- * gui/e-day-view.c (e_day_view_recalc_cell_sizes): used _() for
- strftime strings, tried to see if weekday fits, and rearranged a
- bit to make i18n easier.
-
- * gui/e-day-view-top-item.c (e_day_view_top_item_draw): used _() for
- strftime strings, and updated to use new formats.
-
- * gui/calendar-model.c: added use_24_hour_format boolean to
- CalendarModelPrivate so we can display dates in 12-hour format if
- requested. This meant adding a CalendarModel argument to a few
- functions. Also added get/set functions to set use_24_hour_format.
- I suppose ideally we should have an ECellDate renderer and this option
- should go there.
-
-2000-09-27 Jesse Pavel <jpavel@helixcode.com>
-
- * gui/event-editor.c: changed a menu entry so that it will invoke
- my meeting editor.
-
- * gui/e-meeting-edit.[ch]: added these files to provide preliminary
- support for iTIP meeting scheduling. Currently, only the GUI works;
- there is not yet any backend support.
-
- * gui/Makefile.am: added entries for e-meeting-edit.[ch]
-
-2000-09-24 Damon Chaplin <damon@helixcode.com>
-
- * gui/dialogs/task-editor-dialog.glade: set the height of the scrolled
- window for the description field, since the default window height
- doesn't seem to be working.
-
- * cal-util/cal-component.h: added functions to get the actual
- icalproperty lists for RRULE and EXRULE properties.
-
- * cal-util/cal-recur.[hc]: added support for COUNT, though I need to
- test it a bit. Also fixed the call to generate_instances_for_year() so
- it uses the chunk dates.
-
-2000-09-20 Damon Chaplin <damon@helixcode.com>
-
- * gui/event-editor.c: got rid of 1 '_' in '__Formatting'.
-
-2000-09-22 Michael Meeks <michael@helixcode.com>
-
- * gui/calendar-commands.c (calendar_control_activate): upd.
-
-2000-09-21 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/calendar-commands.c (verbs): Removed the "about calendar"
- command, since we don't want to have both "About Evolution" and
- "About Calendar".
-
-2000-09-21 Michael Meeks <michael@helixcode.com>
-
- * gui/calendar-commands.c (calendar_control_activate): _UIHandler
- update.
-
-2000-09-20 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/todo-conduit.c (pre_sync): Don't fail if there
- is no map file.
-
-2000-09-20 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/todo-conduit.h: Add since field to context
-
- * conduits/todo/todo-conduit.c (map_set_node_timet): New utility
- function
- (map_sax_start_element): Look for the map timestamp as well
- (map_write): Write the map timestamp
- (pre_sync): Use the map time stamp when looking for changed entries
-
- * pcs/cal-backend.c (cal_backend_log_sax_start_element): Make sure
- we are in a valid timestamp
-
-2000-09-20 JP Rosevear <jpr@helixcode.com>
-
- * pcs/cal-backend.c (cal_backend_log_name): Make the log file
- name relevant to the actual calendar file, rather than just the
- directory.
-
-2000-09-20 JP Rosevear <jpr@helixcode.com>
-
- * pcs/cal-backend.c (cal_backend_get_log_entries): Oops
-
-2000-09-20 JP Rosevear <jpr@helixcode.com>
-
- * pcs/cal-backend.c (cal_backend_get_log_entries): Use a local
- sax handler.
-
- * conduits/todo/todo-conduit.c (pre_sync): Use xmlSAXParseFile
- (map_sax_parse): Delete
-
-2000-09-20 JP Rosevear <jpr@helixcode.com>
-
- * pcs/cal-backend.c (cal_backend_log_sax_start_element): Properly
- assign the CalObjChange type.
- (cal_backend_log_sax_parse): Delete
- (cal_backend_get_log_entries): Use xmlSAXUserParseFile
-
-2000-09-19 JP Rosevear <jpr@helixcode.com>
-
- * pcs/cal-backend.c (cal_backend_set_uri): New utility function
- (cal_backend_load): use above
- (cal_backend_create): use above
- (cal_backend_log_name): Take a uri instead of a backend param
-
- * pcs/cal-backend-file.c: Get rid of useless hash functions
- (cal_backend_file_load): Check to make sure path exists and is
- local
- (cal_backend_file_load): Unref the current uri if there is one
- (cal_backend_file_create): ditto
-
- * pcs/cal-backend.c (cal_backend_last_client_gone): Sync before
- shooting ourselves in the foot
-
- * pcs/cal-backend-file.c (save): Fully implement backing up the
- calendar before writing out the new entry.
-
-2000-09-19 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/todo-conduit.c (check_for_slow_setting): Add some
- other cases where a slow sync is in order
- (pre_sync): Pre load the uids, the map and the add/mod/del lists
- (match_record): Use the map hash to match records
- (iterate): Iterate using the pre-loaded uid list
- (iterate_specific): Iterate using the add/mod/del lists
- (purge): Delete all entries in the del list
- (set_status): Set status by adding to an appropriate list
- (set_pilot_id): Set pilot_id by updating map hash
-
- * conduits/todo/todo-conduit.h: Add lists for added, modified and
- deleted objects
-
- * conduits/todo/todo-conduit.c (map_name): Get the pilot_id->uid map
- file name
- (map_sax_start_element): SAX handler to extract a pilot_id->uid
- mapping
- (map_sax_parse): Parse the given file and build a pilot_id->uid hash
- (map_write_foreach): Write out individual mapping elements
- (map_write): Write out the pilot_id->uid mapping
- (start_calendar_server_cb): Rename from gnome_calendar_load_cb
-
- * conduits/todo/todo-conduit-config.h: Rename pilotID to pilot_id
-
- * conduits/todo/e-todo.conduit.in: A little renaming
-
- * conduits/todo/Makefile.am: Fix build slightly
-
- * pcs/cal.c (build_change_seq): Build a corba sequence out of a list
- of CalObjChanges
- (Cal_get_objects_in_range): Implement new corba function
-
- * pcs/cal-backend.c (cal_backend_init): Intiliaze to NULL
- (cal_backend_load): Track the uri so we can write the log file
- to the same place
- (cal_backend_log_name): Figure out the log filename/path based on
- the calendar uri
- (cal_backend_set_node_timet): Set an xml node property value from
- a time_t
- (cal_backend_log_entry): Adds a log entry to list waiting to be written
- out
- (cal_backend_log_sync): Syncs the log entries to disk
- (cal_backend_log_sax_start_element): SAX callback for reading in
- log entries
- (cal_backend_log_sax_end_element): ditto
- (cal_backend_log_sax_parse): Main SAX parser call to parse the log
- file looking for particular log entries and creating a CalObjChange
- hash with the last change for each object
- (cal_backend_get_log_entries): Returns a hash of objects of a given
- type changed since the given time
- (cal_backend_update_object): Add appropriate log entries
- (cal_backend_remove_object): ditto
- (cal_backend_get_changed_uids): Implement new idl interface call
- (cal_backend_foreach_changed): Convert CalObjChange hash into a list
-
- * pcs/cal-backend-imc.[hc]: Remove crufty files
-
- * pcs/cal-backend-file.c (cal_backend_file_get_type_by_uid): New
- function that returns the CalObjType for a uid.
-
- * cal-client/cal-client.h: Update prototypes.
-
- * cal-client/cal-client.c (build_change_list): Build a list
- of CalObjChange items from a corba sequence.
- (cal_client_get_changed_uids): New accessor method for the
- similarly named addition to the idl file.
-
- * cal-util/cal-util.h: Update prototypes and add CalObjChangeType
- enum.
-
- * cal-util/cal-util.c (cal_obj_change_list_free): New utility
- method to free a list of CalObjChange objects.
-
- * idl/evolution-calendar.idl: Add get_changed_uids method
- and associated types.
-
-2000-09-18 Christopher James Lahey <clahey@helixcode.com>
-
- * gui/Makefile.am: Added $(EXTRA_GNOME_CFLAGS) and
- $(EXTRA_GNOME_LIBS). Removed unneeded libraries.
-
- * gui/calendar-model.h, gui/e-calendar-table.c, gui/e-day-view.c,
- gui/e-week-view-event-item.c, gui/e-week-view.c,
- gui/event-editor.c, gui/gncal-todo.c, gui/gnome-cal.c, gui/main.c,
- gui/print.c, gui/dialogs/task-editor.c: Fixed the #include lines
- to deal properly with gal.
-
- * gui/check-filled.xpm: New file since we can't include it from
- e-table anymore.
-
-2000-09-16 Michael Meeks <michael@helixcode.com>
-
- * gui/Makefile.am (INCLUDES): add datadir
-
- * gui/calendar-commands.c (calendar_control_activate): use it.
-
-2000-09-14 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/.cvsignore: Shush
-
-2000-09-14 JP Rosevear <jpr@helixcode.com>
-
- * Add headers with GPL notice and credit copyright to those appropriate
-
- * conduits/todo/todo-conduit-control-applet.c (doHelp): Update name,
- authors, copyright for about dialog.
- (activate_sync_type): Tidy
-
- * conduits/todo/Makefile.am: Rename binaries and libs to e-todo*
- to avoid conflicts.
-
- * conduits/todo/e-todo.conduit.in: Reflect binary/lib name changes
-
- * conduits/todo/e-todo-conduit-control-applet.desktop: ditto
-
- * conduits/todo/todo.conduit.in: Removed
-
- * conduits/todo/todo-conduit-control-applet.desktop: Removed
-
- * conduits/todo/todo-conduit-config.h (todoconduit_load_configuration):
- The config file will now be called e-todo-conduit
- (todoconduit_save_configuration): ditto
-
- * conduits/todo/todo-conduit.c: Some renaming to keep consistent.
- (pre_sync): Remove commented out function that does not exist.
-
- * conduits/todo/todo-conduit-control-applet.c: ditto
-
- * conduits/todo/todo-conduit-config.h: ditto
-
- * conduits/todo/todo-conduit.h: ditto
-
-
-2000-09-07 Michael Meeks <michael@helixcode.com>
-
- * gui/calendar-commands.c: Re-write most UI handler code.
-
-2000-09-13 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/calendar-model.c (obj_updated_cb): Removed an unused
- variable.
-
- * gui/calendar-model.c (obj_updated_cb): See if the new object
- matches the type of objects we were told to deal with.
- (load_objects): Likewise.
-
-2000-09-13 JP Rosevear <jpr@helixcode.com>
-
- * pcs/cal-backend-file.c (remove_component): Only remove the pilot
- item from the hash if it exists in the first place.
-
-2000-09-12 JP Rosevear <jpr@helixcode.com>
-
- * pcs/cal-backend-file.c (add_component): plug leakage
-
-2000-09-12 JP Rosevear <jpr@helixcode.com>
-
- * conduits/calendar/calendar-conduit.c: Hack to compile for distcheck.
-
- * conduits/calendar/calendar-conduit.h: Remove calobj.h dependency
-
-2000-09-12 JP Rosevear <jpr@helixcode.com>
-
- * pcs/cal-backend-file.c (cal_backend_file_load): Use g_int_*
- for now
- (cal_backend_file_create): ditto
-
- * conduits/todo/todo-conduit.c (local_record_from_compobject): Make
- this actually fill in the todo record.
- (find_record_in_repository): Add debug stuff
- (iterate_specific): Use the already exisiting utility function
-
- * pcs/cal-backend-file.c (cal_backend_file_update_pilot_id): correct
- the status and id types. g_strdup the uid since this is not a
- constified return
- (cal_backend_file_get_uid_by_pilot_id): correct the id type
-
-2000-09-12 Ettore Perazzoli <ettore@helixcode.com>
-
- * gui/Makefile.am: Remove `ui.xml' stuff.
-
- * pcs/cal-backend.c: Dont' #include calobj.h anymore as it's gone.
-
-2000-09-12 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/gnome-cal.c (gnome_calendar_construct): Connect to the
- "cal_loaded" signal of the client here.
- (connect_load): Removed function.
- (disconnect_load): Removed function.
- (cal_loaded_cb): Store the URI we are loading in the GnomeCal
- structure instead of in a weird closure. This gets rid of the
- connect/disconnect mess as well.
- (gnome_calendar_open): Store the URI in the GnomeCal.
-
-2000-09-11 Christopher James Lahey <clahey@helixcode.com>
-
- * gui/e-day-view.c: Fixed a warning (removed unused variable
- gfloat width from e_day_view_get_event_position.)
-
-2000-09-11 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/todo-conduit.c: Handle renaming, header cleanup
-
- * conduits/todo/todo-conduit.h: Rename GCalLocalRecord to
- EToDoLocalRecord, header cleanup
-
-2000-09-11 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/todo-conduit.c (comp_from_remote_record): Use
- description list instead of comment list for pilot todo note
- (transmit): Check for null cal component properties, set priority
- correctly, use description list instead of comment list. Make
- pilot record private when appropriate.
-
-2000-09-10 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/todo-conduit.c (comp_from_remote_record): Only
- set the due date only if it exists
-
-2000-09-10 JP Rosevear <jpr@helixcode.com>
-
- * gui/calendar-model.c (get_is_complete): Relying on the status
- field is somewhat faulty since it is related to group scheduling
-
-2000-09-10 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/todo-conduit.c (update_calendar_entry_in_repository):
- Make log output a little more sensible
- (comp_from_remote_record): Minor correction when making a CalComponent
- from scratch.
- (update_record): Use comp_from_remote_record for new items, rather
- than repeating the code here.
-
-2000-09-10 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/todo-conduit.c: Remove catch_ret_val function
- since its no longer useful. Fix naming of various fields from
- the header changes. Use GnomePilotRecord* stuff instead of
- ICAL_PILOT_SYNC_*
- (e_todo_context_new): Rename from gcalconduit_new_context. Now takes
- a pilot id and loads the configuration here
- (e_todo_context_destroy): Rename from gcalconduit_destroy_context.
- Unref the client and destroy the configuration if they exist here
- (start_calendar_server): Change the default calendar name
- (local_record_from_comp_uid): Rename from local_record_from_ical_uid
- (local_record_from_compobject): Rename from
- local_record_from_icalobject. Properly do the pilot id and status.
- (comp_from_remote_record): Rename from ical_from_remote_record.
- Handle due, complete, classification and pilot stuff properly
- (pre_sync): Remove some old stuff. We need to figure out how to
- set some of the field values.
- (set_status): Reflect pilot status changes from above
- (conduit_destroy_gpilot_conduit): Remove cleanup stuff that is
- now done by e_todo_context_destroy
- (conduit_get_gpilot_conduit): Only set the context as object
- data of the conduit.
-
- * conduits/todo/todo-conduit.h: Rename GCalConduitContext to
- EToDoConduitContext. Remove some unused struct fields.
- For GCalLocalRecord, rename ical to comp.
-
-2000-09-11 Damon Chaplin <damon@helixcode.com>
-
- * gui/dialogs/task-editor.c: changed to use EDateEdit.
-
- * gui/dialogs/task-editor-dialog.glade: added "None" option to
- Classification option menu, and used custom widgets for the date
- entries so we can use EDateEdit widgets.
-
- * gui/event-editor.c: changed to use EDateEdit. Note that this needs
- to be fixed at some point to handle invalid dates, i.e. when
- e_date_edit_get_time returns -1.
-
- * gui/calendar-model.c (ensure_task_complete):
- (ensure_task_not_complete): new functions to set the related properties
- to make sure a task is marked as complete on not, i.e. "Date Completed"
- "Status" and "Percent" properties.
-
-2000-09-08 Damon Chaplin <damon@helixcode.com>
-
- * gui/calendar-model.c (get_is_complete): use the status field rather
- than the completed date, as it is more reliable.
- (get_is_overdue): use get_is_complete().
- (calendar_model_mark_task_complete): check if it is already complete,
- and if so don't update it.
-
- * cal-util/cal-component.c (cal_component_get_status):
- (cal_component_set_status): added functions to support the STATUS
- property. Also added the property to CalComponentPrivate and set it
- to NULL in free_icalcomponent(). Someone should check my code as I've
- mainly done a Cut & Paste job.
-
-2000-09-10 JP Rosevear <jpr@helixcode.com>
- * conduits/todo/todo-conduit.c: Convert "//" style comments
- (local_record_from_ical_uid): Remove iCalObject cruft
- (ical_from_remote_record): ditto
- (free_match): Properly unref the CalComponent
-
-2000-09-10 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/todo-conduit.c (local_record_from_icalobject): Use
- cal component pilot stuff properly
- (find_record_in_repository): Remove cruft
- (ical_from_remote_record): Remove cruft
- (update_record): Set the vtype immediately after creation. Remove cruft
-
- * conduits/todo/todo-conduit.h: Remove iCalObject stuff
-
- * conduits/todo/todo-conduit-config.h: Move all the config stuff
- here, I need to kill the warnings at some point
-
- * conduits/todo/todo-conduit-control-applet.c (doRevertSettings):
- Set all the state variables correctly on a revert
- (doSaveSettings): Update original state
- (doHelp): Rename from about_cb
- (main): Destroy configurations when done
-
- * conduits/todo/Makefile.am: Tidy
-
- * pcs/cal-backend-file.c (cbf_pilot_hash): Function for hashing
- pilot ids
- (cbf_pilot_equal): For hash table of pilot ids
- (cal_backend_file_destroy): Destroy pilot id hash
- (add_component): Insert the uid into the pilot hash
- (remove_component): Remove the uid from the pilot hash
- (cal_backend_file_load): Create the pilot hash
- (cal_backend_file_create): ditto
- (cal_backend_file_get_uid_by_pilot_id): Implement using the pilot hash
- (cal_backend_file_update_pilot_id): ditto
-
- * cal-util/cal-component.h: Update prototypes
-
- * cal-util/cal-component.c (cal_component_get_pilot_id): Implement
- using ical X properties
- (cal_component_set_pilot_id): ditto
- (cal_component_get_pilot_status): ditto
- (cal_component_set_pilot_status): ditto
- (cal_component_free_pilot_id): Free a pilot id
- (cal_component_free_pilot_status): Free a pilot status
-
-2000-09-09 Ettore Perazzoli <ettore@helixcode.com>
-
- * gui/dialogs/Makefile.am (INCLUDES): Add
- `-I$(top_builddir)/libical/src/libical' so that we get
- `icalversion.h' from the build directory instead of taking it from
- the installation directory, which is of course Wrong (tm).
- * gui/Makefile.am (INCLUDES): Likewise.
-
-2000-09-08 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/gnome-cal.c (cal_loaded_cb): New function with the
- loading/creation state machine. It is carefully modelled after
- the state machine that started the Universe, so bow before it.
- (gnome_calendar_construct): Do not connect to cal_loaded here.
- (connect_load): The closure for the cal_loaded callback is a bit
- tricky, so provide a function to create it and connect to the
- signal.
- (disconnect_load): Disconnect from the signal and free the
- closure.
- (gnome_calendar_load_cb): Removed obsolete buggy function.
- (gnome_calendar_open): Use the new mechanism.
-
- * gui/control-factory.c (set_prop): The default filename is now
- calendar.ics.
-
-2000-09-08 JP Rosevear <jpr@helixcode.com>
-
- * conduits/calendar/calendar-conduit.c (transmit): Use
- icaltime_as_timet
-
-2000-09-08 Christopher James Lahey <clahey@helixcode.com>
-
- * cal-util/cal-recur.c, gui/e-day-view.c, gui/e-week-view.c,
- gui/event-editor.c, gui/getdate.y, gui/gncal-todo.c,
- gui/gnome-cal.c, gui/dialogs/task-editor.c: Fixed some warnings.
-
-2000-09-08 JP Rosevear <jpr@helixcode.com>
-
- * conduits/calendar/Makefile.am: Tidy
-
- * conduits/todo/Makefile.am: Tidy
-
-2000-09-08 Federico Mena Quintero <federico@helixcode.com>
-
- Fall equinox cleanup!
-
- OK, I know the equinox is not here yet, but weather has changed
- enough to warrant it.
-
- Sigh. This place is definitely not the tropics.
-
- * gui/gnome-cal.c (obj_updated_cb): Renamed from
- gnome_calendar_object_updated_cb(); fixed prototype.
- (obj_removed_cb): Renamed from gnome_calendar_object_removed_cb();
- fixed prototype.
- (GnomeCalendarPrivate): Moved all the GnomeCalendar fields to a
- private structure so I don't have to rebuild the whole calendar
- GUI directory every time something changes in the object.
- (GnomeCalendarPrivate): Removed the property bag and the control
- fields; they are local to the control-factory now.
- (gnome_calendar_update_view_buttons): Remove the
- ignore_view_button_clicks mess and just block the signal.
- (gnome_calendar_set_view): Added a "focus" argument to indicate
- whether we want the main widget in the specified view to grab the
- focus.
- (gnome_calendar_set_view_internal): Handle the focus argument here.
- (gnome_calendar_set_view_buttons): Temporary hack to notify the
- calendar about its buttons.
- (gnome_calendar_get_selected_time_range): New function.
- (gnome_calendar_get_cal_client): New function.
-
- * gui/control-factory.c (calendar_properties_init): Keep the
- property bag local to here; it does not need to be in the calendar
- object yet.
- (control_factory_fn): Renamed from control_factory(). Just use
- control_factory_new_control().
- (control_factory_new_control): Moved the stuff over from
- create_control(), and keep the control local to here. Check the
- return value of bonobo_control_new().
-
- * gui/calendar-commands.c (show_day_view_clicked): Remove the
- ignore_view_button_clicks mess.
- (new_calendar): Removed the useless "page" argument.
- (calendar_control_activate): Use gnome_calendar_set_view_buttons()
- for now.
-
-2000-09-07 Lauris Kaplinski <lauris@helixcode.com>
-
- * cal-client/Makefile.am: Added -lunicode
-
- * gui/dialogs/task-editor.c: More UTF-8 wrappers
- (priority_index_to_value): Kill warning, add assertion
-
-2000-09-06 JP Rosevear <jpr@helixcode.com>
-
- * gui/e-day-view-main-item.c (e_day_view_main_item_draw_day_event):
- Use new cal_component_has_recurrences convenience function
-
- * gui/e-week-view.c (e_week_view_show_popup_menu): ditto
-
- * gui/e-week-view-event-item.c (e_week_view_event_item_draw_icons):
- ditto
-
- * gui/calendar-model.c (calendar_model_value_at): ditto
- (calendar_model_value_at): ditto
-
- * gui/e-day-view.c (e_day_view_on_event_click): ditto
- (e_day_view_on_event_right_click): ditto
- (e_day_view_on_top_canvas_motion): ditto
- (e_day_view_on_top_canvas_motion): ditto
- (e_day_view_on_main_canvas_motion): ditto
- (e_day_view_on_main_canvas_motion): ditto
- (e_day_view_reshape_day_event): ditto
-
- * gui/e-day-view-top-item.c (e_day_view_top_item_draw_long_event):
- ditto
-
- * gui/e-day-view.c (e_day_view_on_long_event_click): ditto
-
-2000-09-06 JP Rosevear <jpr@helixcode.com>
-
- * cal-util/cal-recur.c (cal_recur_generate_instances): Use
- new convenience functions and only get the recurrence
- stuff if needed. Free the recurrence stuff if used.
-
-2000-09-05 JP Rosevear <jpr@helixcode.com>
-
- * cal-util/cal-component.h: Add new prototypes
-
- * cal-util/cal-component.c (cal_component_has_exrules): Utility
- function to determine whether a cal component has any exrules
- (cal_component_has_exdates): Ditto for exdates
- (cal_component_has_exceptions): Utility function to determine
- whether a cal component has any exception rules
- (cal_component_has_recurrences):Utility function to determine
- whether a cal component has any recurrence rules
-
-2000-09-05 JP Rosevear <jpr@helixcode.com>
-
- * gui/event-editor.c (dialog_to_comp_object): Kill all exdates if
- there are no dates in the box
-
- * cal-util/cal-recur.c (generate_instances_for_year): Add a special
- case for when there are exceptions but no rrules or rdates.
- (cal_obj_remove_exceptions): Use date only compare func
- (cal_obj_date_only_compare_func): New compare function that
- compares the date only, not the time.
-
- * gui/event-editor.c (dialog_to_comp_object): Need a break for the
- yearly recurrence type
- (dialog_to_comp_object): We need to allocate icaltimetypes for the
- exdate list
- (fill_widgets): Handle a weekly recurrence with no particular day set
- (dialog_to_comp_object): Kill all rrules if "None" is selected as
- the recurrence type by the user
-
-2000-09-06 Damon Chaplin <damon@helixcode.com>
-
- * gui/e-calendar-table.c (e_calendar_table_open_task): uses the new
- TaskEditor dialog.
-
- * gui/dialogs/task-editor.[hc]:
- * gui/dialogs/task-editor-dialog.glade: updated. Still need to fix the
- 'Status' property (CalComponent doesn't support it yet), and use a
- replacement for GnomeDateEdit, since we need to support setting 'None'
- as the date.
-
-2000-09-04 Damon Chaplin <damon@helixcode.com>
-
- * gui/event-editor.c (obj_updated_cb):
- (obj_removed_cb): compare the updated object's uid with the one we
- are editing, and just return if it doesn't match.
-
-2000-09-01 Damon Chaplin <damon@helixcode.com>
-
- * gui/gnome-cal.c (gnome_calendar_tag_calendar): added check to see
- if the client has loaded successfully. Gets rid of a few warnings.
-
-2000-09-05 JP Rosevear <jpr@helixcode.com>
-
- * cal-util/cal-recur.c (generate_instances_for_year): The exdate
- and rdate lists are a list of icaltimetypes, not CalComponentPeriods
-
- * gui/e-day-view.c (e_day_view_on_delete_occurrence): The exdate list
- is a list of icaltimetypes, not CalComponentDateTimes
-
-2000-09-05 JP Rosevear <jpr@helixcode.com>
-
- * gui/e-day-view.c (e_day_view_on_delete_occurrence): Append
- the exdate to the list AFTER we create the date value.
-
-2000-09-05 JP Rosevear <jpr@helixcode.com>
-
- * cal-util/cal-component.c (cal_component_free_recur_list): Free
- the data, not the list element.
-
-2000-09-05 JP Rosevear <jpr@helixcode.com>
-
- * cal-util/cal-recur.c (cal_recur_generate_instances): Compute
- the event duration using the event start/end times, not the
- interval times.
-
-2000-09-05 JP Rosevear <jpr@helixcode.com>
-
- * cal-util/cal-recur.c (cal_recur_from_icalrecurrencetype): Check
- to see if r->enddate is (time_t)-1 and set to 0 if so
-
-2000-09-02 Ettore Perazzoli <ettore@helixcode.com>
-
- * conduits/calendar/Makefile.am (INCLUDES): Add libical include
- directories and `$(BONOBO_GNOME_CFLAGS)'.
- * conduits/todo/Makefile.am (INCLUDES): Likewise.
-
-2000-09-02 Lauris Kaplinski <lauris@helixcode.com>
-
- * gui/event-editor.c: e_utf8 wrappers
-
- * gui/gncal-todo.c: e_utf8_wrappers
-
-2000-09-02 Christopher James Lahey <clahey@helixcode.com>
-
- * conduits/calendar/calendar-conduit.c,
- conduits/todo/todo-conduit.c, gui/e-week-view.c, gui/gnome-cal.c:
- Fixed some warnings.
-
-2000-09-01 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/gnome-cal.c (gnome_calendar_new): Use
- gnome_calendar_construct() so that we can check for proper
- creation of the client.
- (gnome_calendar_destroy): Check that the client exists before we
- unref it.
- (gnome_calendar_construct): Do the CalClient creation here. Bind
- the views to it here as well instead of in setup_widgets().
- (gnome_calendar_init): Call setup_widgets() here.
-
- * gui/e-calendar-table.c (e_calendar_table_destroy): Unref the
- model.
-
-2000-09-01 JP Rosevear <jpr@helixcode.com>
-
- * conduits/todo/todo-conduit.c: Update for new libical.
- Conduits should atleast compile now.
-
- * conduits/calendar/calendar-conduit.c: ditto
-
- * Makefile.am: Build the conduits only when they've been
- enabled.
-
-2000-09-01 JP Rosevear <jpr@helixcode.com>
-
- * gui/event-editor.c: Make toolbar save and close button.
- We should put a similar menu option in sometime.
-
-2000-08-31 JP Rosevear <jpr@helixcode.com>
-
- * cal-util/cal-recur.c (array_to_list): Use
- ICAL_RECURRENCE_ARRAY_MAX instead of MAX_SHORT
-
-2000-08-31 JP Rosevear <jpr@helixcode.com>
-
- * gui/event-editor.c (file_delete_cb): Implement delete option
- (dialog_to_comp_object): Set the weekday start value and use
- local not UTC time
-
-2000-08-31 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/event-editor.c (file_delete_cb): No need to spit a warning
- if removal fails.
- (event_editor_destroy): Free the exception clist data. Unref the
- calendar client here.
- (close_dialog): Just call gtk_object_destroy() on the event
- editor; the destroy handler will free everything else.
-
- * cal-client/cal-client.c (cal_client_object_exists): Removed
- function; this is not useful because we operate asynchronously.
-
- * gui/e-day-view.c (e_day_view_on_delete_appointment): No need to
- spit a warning if removal fails.
-
- * gui/e-week-view.c (e_week_view_on_delete_appointment): Likewise.
-
- * gui/calendar-model.c (calendar_model_delete_task): Likewise.
-
-2000-08-31 JP Rosevear <jpr@helixcode.com>
-
- * gui/event-editor.c (file_delete_cb): Implement delete option
- (recurrence_toggled): Make an ugly hack to get the recurrence
- pages showing properly since we don't yet implement all of the
- recurrence rule stuff.
-
- * cal-client/cal-client.c (cal_client_object_exists): New function
- to see if an object exists and is obtainable from the backend
-
- * cal-client/cal-client.h: Add prototype
-
-2000-08-31 JP Rosevear <jpr@helixcode.com>
-
- * gui/gnome-cal.c (editor_closed_cb): Event editor destroyed
- callback to do hash cleanup
- (gnome_calendar_edit_object): Set event editor calendar client.
-
- * gui/event-editor.h: Add new prototype
-
- * gui/event-editor.c: Trash signal stuff. We will manipulate
- the client directly. Make the toolbar save and menu save items
- work identically. Add icons to the toolbar.
- (save_event_object): Call cal_client_update_object
- (close_dialog): Unref the client and disconnect signals
- Actually destroy the event editor object.
- (obj_updated_cb): New function. Doesn't really do anything
- yet but it will inform the user the event has changed elsewhere
- in the future.
- (obj_removed_cb): ditto
- (event_editor_set_cal_client): New function to set the calendar
- client
-
- * gui/gnome-cal.c (gnome_calendar_new_appointment): Commit
- the sequence to the cal component and use non UTC times.
-
-2000-08-30 Lauris Kaplinski <lauris@helixcode.com>
-
- * gui/print.c: Countless small changes for gnome-print 0.21+
-
-2000-08-30 Damon Chaplin <damon@helixcode.com>
-
- * gui/e-day-view.[hc]:
- * gui/e-day-view-main-item.c:
- * gui/e-week-view.[hc]:
- * gui/e-week-view-main-item.c:
- * gui/calendar-commands.c:
- * gui/gnome-cal.[hc]: switched to using new ECalendar widget,
- and a few other fixes.
-
-2000-08-30 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/gnome-cal.h (GnomeCal): Removed unused field event_editor.
-
- * gui/e-day-view.c (e_day_view_key_press): Oops, set the
- dtstart/dtend on the component before adding it.
- (e_day_view_on_editing_stopped): No need to check for an UID.
- Update the summary properly.
-
-2000-08-30 JP Rosevear <jpr@helixcode.com>
-
- * gui/e-week-view.c: Make sure the is_utc flag is always
- FALSE for icaltime_from_timet
- (e_week_view_on_unrecur_appointment): Use icaltimetype struct
- from the stack and make sure tzid is always NULL
- (e_week_view_key_press): ditto
-
-2000-08-30 JP Rosevear <jpr@helixcode.com>
-
- * gui/e-day-view.c: Make sure the is_utc flag is always
- FALSE for icaltime_from_timet
- (e_day_view_on_unrecur_appointment): Use icaltimetype struct
- from the stack and make sure tzid is always NULL
- (e_day_view_finish_long_event_resize): ditto
- (e_day_view_finish_resize): ditto
- (e_day_view_on_top_canvas_drag_data_received): ditto
- (e_day_view_on_main_canvas_drag_data_received): ditto
-
-2000-08-30 JP Rosevear <jpr@helixcode.com>
-
- * cal-client/cal-client.c (add_instance): Actually add the
- comp_instance struct to the instances list. We now appear
- to able to keep events and todos between sessions. Yay!
-
-2000-08-29 Federico Mena Quintero <federico@helixcode.com>
-
- Now the views monitor the client by themselves; it does not make
- sense to proxy all notifications through the GnomeCal. The
- GnomeCal should just be a meta-widget that holds all the views.
-
- At some later point we'll want to decouple the views from the
- GnomeCal so that they can be embedded anywhere; they should emit
- signals to request appropriate actions from the toplevel GUI
- instead of calling the GnomeCal directly.
-
- * gui/e-day-view.c (e_day_view_set_cal_client): New function; now
- the day view monitors the client by itself.
- (cal_loaded_cb): New callback; moved over from
- e_day_view_update_all_events().
- (obj_updated_cb): New callback; moved over from
- e_day_view_update_event().
- (obj_removed_cb): New callback; moved over from
- e_day_view_remove_event().
- (e_day_view_update_all_events): Removed function.
- (e_day_view_update_event): Removed function.
- (e_day_view_remove_event): Removed function.
- (*): Use the day_view->client directly instead of fetching it from
- the GnomeCal.
- (e_day_view_destroy): Unref the client.
- (e_day_view_reload_events): Check if the client is loaded.
- (e_day_view_key_press): Set the vtype of the new component.
-
- * gui/e-week-view.c (e_week_view_set_cal_client): New function.
- (cal_loaded_cb): New callback.
- (obj_updated_cb): New callback.
- (obj_removed_cb): New callback.
- (e_week_view_update_all_events): Removed function.
- (e_week_view_update_event): Removed function.
- (e_week_view_remove_event): Removed function.
- (*): Use the week_view->client directly.
- (e_week_view_destroy): Unref the client.
- (e_week_view_reload_events): Check if the client is loaded.
-
- * gui/gnome-cal.c (setup_widgets): Set the cal_client on all the
- views.
- (gnome_calendar_update_all): Do not update the views, since now
- they do it themselves.
- (gnome_calendar_object_updated_cb): Likewise.
- (gnome_calendar_object_removed_cb): Likewise.
- (setup_widgets): Remove all to-do list cruft.
- (gnome_calendar_colors_changed): Likewise.
- (gnome_calendar_todo_properties_changed): Likewise.
-
- * gui/calendar-commands.h (todo_style_changed): Removed variable.
-
- * gui/gncal-todo.c: Removed old clist cruft; just left in the
- temporary dialog box for now.
-
-2000-08-29 Dan Winship <danw@helixcode.com>
-
- * cal-client/client-test.c:
- * cal-client/cal-client.c:
- * conduits/todo/todo-conduit.h:
- * conduits/calendar/calendar-conduit.h: remove USING_OAF checks.
-
-2000-08-29 JP Rosevear <jpr@helixcode.com>
-
- * gui/gnome-cal.c (gnome_calendar_edit_object): Use
- event_editor_set_event_object
-
- * gui/event-editor.c (event_editor_set_event_object): Rename
- from event_editor_set_ical_object
-
- * gui/event-editor.h: Update prototype
-
- * gui/e-week-view.c (e_week_view_on_new_appointment):
- Call cal_component_commit_sequence after event changes. Default
- to these being all day events.
-
-2000-08-29 JP Rosevear <jpr@helixcode.com>
-
- * gui/event-editor.c (dialog_to_comp_object): These are not UTC
- times
-
-2000-08-28 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-client/cal-client.c (cal_client_is_loaded): New function.
- We need this from code that dynamically updates from a client and
- could not have connected to the "cal_loaded" signal right after
- the client was created.
-
- * gui/calendar-model.c (load_objects): Do not try to load the
- objects if the client has not been loaded yet.
- (cal_loaded_cb): Check the status value.
-
- * gui/calendar-model.h (CalendarModel): Declare the private
- structure here so that gdb will give me love.
-
- * pcs/cal-factory.h (CalFactory): Likewise.
-
- * pcs/cal.h (Cal): Likewise.
-
- * cal-client/cal-listener.h (CalListener): Likewise.
-
- * cal-client/cal-client.h (CalClient): Likewise.
-
- * pcs/cal-backend.h (CalBackend): This no longer has a private
- structure, so remove it.
-
- * cal-util/Makefile.am (libcal_util_la_SOURCES): Removed the
- vCalendar and old iCalendar cruft.
- (libcal_utilinclude_HEADERS): Likewise.
- Removed the obsolete iCalendar test program.
-
-2000-08-28 JP Rosevear <jpr@helixcode.com>
-
- * cal-util/timeutil.h: We no longer need time_from_icaltimetype
- as libical has the API for this
-
- * cal-util/timeutil.c: ditto
-
- * cal-util/cal-recur.c: Replace time_from_icaltimetype with
- icaltime_as_timet
-
- * gui/calendar-model.c: ditto
-
- * gui/event-editor.c: ditto
-
- * gui/gnome-cal.c: ditto
-
-2000-08-28 Federico Mena Quintero <federico@helixcode.com>
-
- * pcs/cal-backend-file.c (remove_component): Remove the
- icalcomponent from the toplevel calendar here.
- (cal_backend_file_update_object): Do not remove it here.
- (cal_backend_file_remove_object): Do not remove it here.
- (add_component): Add the icalcomponent to the toplevel calendar if
- asked to.
- (cal_backend_file_update_object): Do not add it here.
-
-2000-08-28 JP Rosevear <jpr@helixcode.com>
-
- * gui/event-editor.c (dialog_to_comp_object): Initiliaze tzid to
- null, only set recurrence rules and exception dates if there
- are any
-
-2000-08-27 JP Rosevear <jpr@helixcode.com>
-
- * pcs/cal-backend-file.c (save): Write out the calendar object
- (cal_backend_file_update_object): Remove/add the icalcomponent
- from our master icalcomponent (the calendar)
- (cal_backend_file_remove_object): Remove the icalcomponent
- from our master icalcomponent
-
-2000-08-26 JP Rosevear <jpr@helixcode.com>
-
- * gui/Makefile.am: Remove gnorba stuff
-
- * gui/main.c: ditto
-
- * gui/component-factory.c: ditto
-
- * gui/control-factory.c: ditto
-
- * gui/*.gnorba: ditto
-
-2000-08-25 JP Rosevear <jpr@helixcode.com>
-
- * gui/e-calendar-table.c (e_calendar_table_init): Uncomment
- debug code.
-
- * gui/calendar-model.c (set_complete): Set the completed
- date to the current date
- (calendar_model_set_value_at): Handle complete field
-
-2000-08-25 JP Rosevear <jpr@helixcode.com>
-
- * gui/calendar-model.c (get_is_complete): Don't attempt to
- free this if its null
- (calendar_model_duplicate_value): Implement for summary field
- value
- (calendar_model_initialize_value): Remove debug code
-
- * gui/e-calendar-table.c: Correct etable init xml
- (create_column): Pass the id to e_table_header_add_column
- rather than a hard coded one
- (e_calendar_table_init): Make sure summary column isn't
- added twice. Add an alarms column, else etable won't
- work with columns who have an ID higher than that
-
-2000-08-24 JP Rosevear <jpr@helixcode.com>
-
- * gui/gncal-todo.c (ok_button): Properly append to list
-
- * gui/event-editor.c (dialog_to_comp_object): ditto
-
- * gui/e-day-view.c (e_day_view_on_new_appointment): The base
- times are not UTC
-
- * gui/e-week-view.c (e_week_view_on_new_appointment): ditto
-
-2000-08-24 JP Rosevear <jpr@helixcode.com>
-
- * Update for libical 0.19
-
-2000-08-24 Christopher James Lahey <clahey@helixcode.com>
-
- * gui/calendar-commands.c, gui/e-day-view.c, gui/e-week-view.c,
- gui/event-editor.c, gui/gncal-todo.c, gui/gnome-cal.c, gui/prop.c:
- Fixed some warnings.
-
-2000-08-24 JP Rosevear <jpr@helixcode.com>
-
- * gui/e-week-view.c (e_week_view_on_new_appointment): Do not alloc
- the struct icaltimetype but point to one on the stack. More
- importantly, set the date.tzid to NULL.
-
-2000-08-24 JP Rosevear <jpr@helixcode.com>
-
- * gui/gnome-cal.c (save_event_object_cb): Make signal
- names saner
- (released_event_object_cb): ditto
- (gnome_calendar_edit_object): ditto
-
- * gui/event-editor.h: Make signal names saner
-
- * gui/event-editor.c (event_editor_class_init): Make signal
- names saner now that we don't use ical object
- (save_event_object): ditto with callback names
- (file_save_cb): ditto
- (tb_save_and_close_cb): ditto
- (event_editor_set_ical_object): ditto
-
- * gui/e-day-view.c (e_day_view_update_event): Umm,
- != CAL_COMPONENT_EVENT (I hope that wasn't me!)
-
-2000-08-24 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/e-day-view.c (e_day_view_on_new_appointment): Do not alloc
- the struct icaltimetype but point to one on the stack. More
- importantly, set the date.tzid to NULL.
-
-2000-08-24 JP Rosevear <jpr@helixcode.com>
-
- * gui/event-editor-dialog.glade: Remove owner field
-
- * gui/event-editor.c (clear_widgets): Forget about owner field
- (get_widgets): ditto
- (fill_widgets): ditto
-
-2000-08-24 JP Rosevear <jpr@helixcode.com>
-
- * gui/calendar-model.c (calendar_model_initialize_value): Handle
- summary field
- (calendar_model_value_is_empty): ditto
- (calendar_model_free_value): ditto
-
-2000-08-23 JP Rosevear <jpr@helixcode.com>
-
- * gui/event-editor-dialog.glade: Remove status bar
-
- * cal-util/cal-component.c (cal_component_set_rrule_list): Allow
- a null list
- (cal_component_set_rdate_list): Allow a null list
-
- * gui/e-day-view.c (e_day_view_on_new_appointment): Commit
- the CalComponent sequence
-
-2000-08-23 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/main.c: #include <e-util/e-cursors.h>
-
- * gui/e-day-view-time-item.c (e_day_view_time_item_draw):
- Initialize time_min_x1 and hour_r to keep gcc happy.
-
- * gui/e-day-view.c (e_day_view_update_event_label): Warning fix.
- (e_day_view_update_main_canvas_drag): Initialize start_row.
-
- * gui/e-week-view-event-item.c (e_week_view_event_item_draw):
- Initialize time_y_small_min, icon_x.
-
- * Makefile.am (SUBDIRS): Re-enable the gui directory.
-
- * gui/prop.c (prop_store_alarm_default_values): Temporarily #if 0
- out.
-
-2000-08-23 JP Rosevear <jpr@helixcode.com>
-
- * gui/e-week-view.c (e_week_view_key_press): Set vtype of new
- CalComponent
- (e_week_view_on_new_appointment): ditto
-
- * gui/e-day-view.c (e_day_view_on_new_appointment): ditto
-
-2000-08-23 JP Rosevear <jpr@helixcode.com>
-
- * gui/e-day-view-time-item.c: Include gnome.h for gettext purposes
-
- * gui/gnome-cal.c: ditto
-
- * gui/prop.c: #if out some alarm stuff
-
-2000-08-23 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/e-calendar-table.c (e_calendar_table_init): Updated
- function.
- (e_calendar_table_open_task): Updated function.
-
-2000-08-21 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/calendar-model.c (calendar_model_duplicate_value): Updated
- function.
- (calendar_model_free_value): Updated function.
- (calendar_model_initialize_value): Updated function.
- (calendar_model_value_is_empty): Updated function.
- (remove_object): Updated function.
- (obj_updated_cb): Updated function.
- (calendar_model_get_cal_client): Added inline docs.
- (calendar_model_delete_task): Updated.
- (calendar_model_mark_task_complete): Updated.
- (calendar_model_get_cal_object): Updated.
-
-2000-08-21 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/calendar-model.c (set_categories): New function.
- (parse_time): Moved over from the old set_time_t(). This just
- parses the time and leaves the warning dialog for the caller.
- (set_datetime): New function.
- (set_geo): Updated old function.
- (set_percent): Updated old function.
- (set_priority): Updated old function.
- (set_summary): New function.
- (set_url): New function.
- (calendar_model_set_value_at): Updated function.
- (calendar_model_is_cell_editable): Updated function.
- (calendar_model_append_row): Updated. Added an ugly hack to
- accomodate ETable's lack of a real API for adding new items.
- Also, don't try to set columns that are not editable.
-
-2000-08-21 JP Rosevear <jpr@helixcode.com>
-
- * gui/e-week-view.c (e_week_view_reload_events):
- Use CalObjType
-
- * gui/e-day-view.c (e_day_view_reload_events): ditto
-
-2000-08-21 JP Rosevear <jpr@helixcode.com>
-
- * gui/e-day-view-main-item.c (e_day_view_main_item_draw_day_event):
- Use CalComponent instead of iCalObject. #if some alarm stuff
-
-2000-08-21 JP Rosevear <jpr@helixcode.com>
-
- * gui/e-day-view-top-item.c (e_day_view_top_draw_long_event):
- Use CalComponent instead of iCalObject. #if some alarm stuff
-
-2000-08-21 JP Rosevear <jpr@helixcode.com>
-
- * gui/e-day-view.h: Update prototypes
-
- * gui/e-day-view.c (e_day_view_on_unrecur_appointment):
- Remove commented out portions.
-
- * gui/e-week-view.c (e_week_view_on_unrecur_appointment):
- Tidy.
-
-2000-08-21 JP Rosevear <jpr@helixcode.com>
-
- * gui/e-day-view.c
- (e_day_view_update_event): Use CalComponent
- instead of iCalObject. Work around not having a compare
- dates routine for two CalComponents.
- (e_day_view_reshape_long_event): Use CalComponent instead
- of iCalObject, #if some alarm stuff
- (e_day_view_reshape_day_event): ditto
- (e_day_view_reload_events): Use revamped CalClient
- (e_day_view_update_event_cb): Use CalComponent
- instead of iCalObject
- (e_day_view_foreach_event_with_uid): ditto
- (e_day_view_remove_event_cb): ditto
- (e_day_view_update_event_label): ditto
- (e_day_view_find_event_from_uid): ditto
- (e_day_view_on_event_click): ditto
- (e_day_view_on_event_right_click): ditto
- (e_day_view_on_new_appointment): ditto
- (e_day_view_on_edit_appointment): ditto
- (e_day_view_on_delete_occurrence): ditto
- (e_day_view_on_delete_appointment): ditto
- (e_day_view_on_unrecur_appointment): ditto
- (e_day_view_on_top_canvas_motion): ditto
- (e_day_view_on_main_canvas_motion): ditto
- (e_day_view_finish_long_event_resize): ditto
- (e_day_view_finish_resize): ditto
- (e_day_view_free_event_array): ditto
- (e_day_view_add_event): ditto
- (e_day_view_key_press): ditto
- (e_day_view_on_editing_stopped): ditto
- (e_day_view_update_top_canvas_drag): ditto
- (e_day_view_update_main_canvas_drag): ditto
- (e_day_view_on_drag_data_get): ditto
- (e_day_view_on_top_canvas_drag_data_received): ditto
- (e_day_view_on_main_canvas_drag_data_received): ditto
-
-2000-08-20 JP Rosevear <jpr@helixcode.com>
-
- * gui/e-week-view-event-item.c (e_week_view_event_item_draw_icons):
- Use CalComponent instead of iCalObject. #if some alarm stuff
-
-2000-08-20 JP Rosevear <jpr@helixcode.com>
-
- * gui/e-week-view.c (e_week_view_update_event): Use CalComponent
- instead of iCalObject. Work around not having a compare
- dates routine for two CalComponents.
- (e_week_view_reload_events): Use revamped CalClient
- (e_week_view_reshape_event_span): Use CalComponent instead
- of iCalObject, #if some alarm stuff
- (e_week_view_update_event_cb): Use CalComponent instead of
- iCalObject
- (e_week_view_foreach_event_with_uid): ditto
- (e_week_view_remove_event_cb): ditto
- (e_week_view_free_events): ditto
- (e_week_view_add_event): ditto
- (e_week_view_on_editing_stopped): ditto
- (e_week_view_find_event_from_uid): ditto
- (e_week_view_key_press): ditto
- (e_week_view_show_popup_menu): ditto
- (e_week_view_on_new_appointment): ditto
- (e_week_view_on_edit_appointment): ditto
- (e_week_view_on_delete_occurrence): ditto
- (e_week_view_on_delete_appointment): ditto
- (e_week_view_on_unrecur_appointment): ditto
-
- * gui/e-week-view.h: Update prototypes.
-
-2000-08-18 JP Rosevear <jpr@helixcode.com>
-
- * gui/event-editor.h: Update prototypes.
-
- * gui/event-editor.c: Need to come back here later to fix the
- alarm stuff. The gui also needs to be completely redone to
- support the fancier CalComponent settings (exrules, rdates, etc)
- There are some warnings that I put in to mark some of these
- spots
- (event_editor_destroy): Use Calcomponent instead
- of iCalObject
- (make_title_from_comp): ditto
- (clear_widgets): ditto
- (fill_widgets): ditto
- (classification_get): ditto
- (dialog_to_comp_object): ditto
- (save_ical_object): ditto
- (close_dialog): ditto
- (event_editor_set_ical_object): ditto
-
-2000-08-17 JP Rosevear <jpr@helixcode.com>
-
- * gui/gncal-todo.c (ok_button): Use CalComponent instead of
- iCalObject
- (cancel_button): ditto
- (gncal_todo_edit): ditto
- (add_todo): ditto
- (edit_todo): ditto
- (delete_todo): ditto
- (insert_in_clist): ditto
- (gncal_todo_update): ditto
-
- * gui/gncal-todo.h: Update prototypes
-
-2000-08-16 JP Rosevear <jpr@helixcode.com>
-
- Rework gnome-cal.c - alarms are a tad broken ATM so this
- will need more cleaning later.
-
- * gui/gnome-cal.c (snooze): Use CalComponent instead of
- iCalObject
- (edit): ditto
- (audio_notification): ditto
- (display_notification_cb): Use CalComponent member of
- alarm_notify_closure rather than iCalObject
- (display_notification): ditto
- (trigger_alarm_cb): ditto. Use CalComponent alarm types
- (gnome_calendar_tag_calendar_cb): New
- cal_client_generate_instances callback to
- mark_gtk_calendar_day's
- (gnome_calendar_tag_calendar): Use above callback
- (save_ical_object_cb): Use CalComponent instead of
- iCalObject
- (gnome_calendar_edit_object): ditto
- (gnome_calendar_new_appointment): ditto
-
-2000-08-15 JP Rosevear <jpr@helixcode.com>
-
- * gui/mark.c (mark_month_item_cb): Callback used to mark every
- event in a month.
- (mark_month_item): Use cal_client_generate_instances with
- above callback
-
-2000-08-15 JP Rosevear <jpr@helixcode.com>
-
- * gui/print.c (print_month_small): Use
- cal_client_get_objects_in_range
- (print_day_details_cb): Callback used to create columns and fill
- events into a day view. Code should be shared with e-day-view
- in reality. Maybe need to go back to layout.[hc] a bit later
- (print_day_details): Use cal_client_generate_instances with
- above callback. Iterate over results to expand events to fit.
- (print_day_summary_cb): Callback to build list of event info
- for a day
- (print_day_summary): Use cal_client_generate_instances with
- above callback to generate the required event info for printing
- (print_todo_details_cb): Callback used create list of todo info
- (print_todo_details): Use cal_client_generate_instances with
- above callback to generate required todo info for printing.
-
- * gui/layout.[hc]: No longer used.
-
-2000-08-12 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/calendar-model.c (get_is_overdue): Finished implementing.
- (calendar_model_value_at): Handle the color field.
-
-2000-08-11 Seth Alves <alves@hungry.com>
-
- * cal-util/cal-component.c (cal_component_get_pilot_id):
- (cal_component_set_pilot_id): stubs for pilot id accessors
- (cal_component_get_pilot_status):
- (cal_component_set_pilot_status): stubs for pilot status accessors
-
- * conduits/calendar/calendar-conduit.c (transmit): start to
- convert to cal-component interface
-
- * conduits/todo/todo-conduit.c (transmit): same
-
-2000-08-11 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/calendar-model.c (get_geo): Generate a prettier string for
- the geographical position.
- (get_classification): New function.
- (get_categories): New function.
- (get_completed): New function.
- (get_dtend): New function.
- (get_dtstart): New function.
- (get_due): New function.
- (get_percent): New function.
- (get_priority): New function.
- (get_summary): New function.
- (get_transparency): New function.
- (get_url): New function.
- (get_has_alarms): New function.
- (get_has_recurrences): New function.
- (get_is_complete): New function.
- (get_is_overdue): New function.
-
- * cal-util/cal-component.c (scan_property): Handle the GEO
- property.
- (free_icalcomponent): Likewise.
- (cal_component_get_geo): Likewise.
- (cal_component_set_geo): Likewise.
- (cal_component_free_geo): Likewise.
- (cal_component_set_exdate_list): Removed incorrect assertion.
- (cal_component_set_exrule_list): Removed incorrect assertion.
- (cal_component_get_next_alarm): Oops, this had not been
- implemented at all.
- (cal_component_has_rdates): New function.
- (cal_component_has_rrules): New function.
-
- * cal-util/cal-component.h (CalComponentField): Added the GEO
- property.
-
-2000-08-11 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/cal-component.c (scan_property): Handle the
- PERCENT-COMPLETE property.
- (free_icalcomponent): Likewise.
- (cal_component_get_percent): Likewise.
- (cal_component_set_percent): Likewise.
- (cal_component_free_percent): Likewise.
- (scan_property): Handle the PRIORITY property.
- (free_icalcomponent): Likewise.
- (cal_component_get_priority): Likewise.
- (cal_component_set_priority): Likewise.
- (cal_component_free_priority): Likewise.
-
- * cal-util/cal-component.h (CalComponentField): New enumeration
- with the list of fields we support for ETable.
-
-2000-08-10 Dan Winship <danw@helixcode.com>
-
- * gui/component-factory.c (owner_set_cb): Update prototype.
-
-2000-08-10 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/gnome-cal.c (gnome_calendar_new_appointment): New function.
- Mostly moved over from calendar-commands.c:display_objedit().
-
- * gui/calendar-commands.c (calendar_iterate): Removed. Wheee!
- (display_objedit): Removed.
- (new_appointment_cb): New function. Just call
- gnome_calendar_new_appointment().
- (display_objedit_today): Removed.
- (calendar_control_activate): Removed the "New appointment for
- today" option, since it is pretty useless.
-
-2000-08-10 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-client/cal-client.c (cal_client_generate_instances): There.
- A pretty function to generate recurrence instances atomically so
- that clients don't have to jump through hoops. Now we can get rid
- of the ugly calendar_iterate() function.
-
-2000-08-09 Cody Russell <bratsche@gnome.org>
-
- * gui/calendar-commands.c: Make the toolbar honor the user's
- gnomecc settings for detachable toolbars.
-
-2000-08-09 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/alarm.c (pop_alarm): Oops, subtract the new alarm's trigger
- time from the current time.
-
-2000-08-09 Christopher James Lahey <clahey@helixcode.com>
-
- * cal-client/cal-client.c: Fixed a warning.
-
-2000-08-09 Christopher James Lahey <clahey@helixcode.com>
-
- * cal-client/cal-client.c, gui/e-calendar-table.c, pcs/cal.c:
- Fixed some warnings.
-
-2000-08-08 Federico Mena Quintero <federico@helixcode.com>
-
- * idl/evolution-calendar.idl (Cal): Added a get_objects_in_range()
- method. Takes in a time range and the type of component we are
- interested in; returns a list of UIDs. The idea is that
- ocurrences get computed in the client; we can have multiple
- recurrences in iCalendar and we cannot identify them trivially
- across the wire.
- (Cal): Removed the get_events_in_range() method.
-
- * pcs/cal-backend.c (cal_backend_free_uid_list): New function.
- (cal_backend_get_objects_in_range): New function.
- (cal_backend_get_events_in_range): Removed.
-
- * pcs/cal-backend-file.c (cal_backend_file_get_objects_in_range):
- Implemented new method.
- (cal_backend_file_get_events_in_range): Removed.
-
- * pcs/cal.c (Cal_get_events_in_range): Removed.
- (uncorba_obj_type): New function.
- (Cal_get_uids): Use uncorba_obj_type().
- (Cal_get_n_objects): Likewise.
- (Cal_get_objects_in_range): Implemented new method.
-
- * cal-client/cal-client.c (cal_client_get_events_in_range): Removed.
- (cal_client_get_objects_in_range): Implemented.
- (corba_obj_type): New function.
- (cal_client_get_n_objects): Use corba_obj_type().
- (cal_client_get_uids): Likewise.
-
-2000-08-07 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/cal-component.c (cal_component_clone): New function.
- (cal_component_get_icalcomponent): Ensure that the SEQUENCE
- property does not need incrementing.
-
- * gui/dialogs/alarm-notify-dialog.c (alarm_notify_dialog): Use
- CalComponent. Deal with an empty summary property.
-
-2000-08-07 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/cal-component.c (cal_component_get_as_string): Doh,
- libical owns the string's memory, so do not free it.
-
- * cal-client/client-test.c (create_client): Connect to the destroy
- signal of the client here.
-
- * cal-client/test.ics: New test file, modified from Eric Busboom's
- test file from RFC 2445.
-
-2000-08-05 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-client/client-test.c (dump_component): This was gone for
- some reason.
- (main): Load a new test file.
-
-2000-08-04 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/cal-component.c (cal_component_commit_sequence): New
- function to commit changes to the SEQUENCE property.
- (cal_component_get_as_string): Ensure that the sequence has been
- committed.
-
- * cal-client/cal-client.c (cal_client_get_object): Use
- CalComponent instead of the old iCalObject.
- (cal_client_update_object): Use iCalObject. Commit the SEQUENCE
- property before stringifying the object and piping it over to the
- Wombat.
-
-2000-08-04 Seth Alves <alves@hungry.com>
-
- * conduits/todo/todo-conduit.c (conduit_get_gpilot_conduit): if
- oaf isn't initialized by the time the conduit starts, start it
- up. we do this because we need to start wombat with oaf, and
- gpilotd doesn't currently start oaf.
-
-2000-08-04 Michael Meeks <michael@helixcode.com>
-
- * gui/calendar-commands.c (calendar_control_activate): unref.
-
-2000-08-02 Federico Mena Quintero <federico@helixcode.com>
-
- * pcs/cal-backend-file.c (cal_backend_file_get_uid_by_pilot_id):
- Added stub for now.
- (cal_backend_file_update_pilot_id): Likewise.
-
- * pcs/Makefile.am (libpcs_a_SOURCES): Removed cal-backend-imc.[ch]
- from the list of sources. The idea is to move vCalendar importing
- to the GUI as a convenience function.
-
-2000-08-02 Seth Alves <alves@hungry.com>
-
- * pcs/cal-backend-imc.c (cal_backend_imc_update_pilot_id): call
- save (cbimc) after setting the pilot id and status.
-
-2000-08-02 Joe Shaw <joe@helixcode.com>
-
- * pcs/cal-backend-file.c (cal_backend_file_update_pilot_id):
- Fixed a g_return_if_fail that had two parameters and thus
- wouldn't build.
-
-2000-08-03 Damon Chaplin <damon@helixcode.com>
-
- * gui/calendar-model.c (calendar_model_append_row): updated to match
- the new ETableModel append_row. This meant we could also get rid of
- the row_being_added and idle_id hack.
-
-2000-08-02 Christopher James Lahey <clahey@helixcode.com>
-
- * gui/calendar-model.c: Emit "model_pre_change" signals as
- appropriate.
-
-2000-08-02 Federico Mena Quintero <federico@helixcode.com>
-
- * pcs/cal-backend-file.[ch]: New files for the iCalendar file
- backend.
-
- * pcs/Makefile.am (libpcs_a_SOURCES): Added cal-backend-file.[ch].
-
- * cal-util/cal-component.c (cal_component_set_icalcomponent):
- Return an operation success code for if we are passed a component
- of a type we don't support.
-
-2000-07-31 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/cal-recur.c (*): Use CalComponent and the new property
- types instead of the old iCalObject stuff.
- (cal_recur_generate_instances): Renamed from
- cal_object_generate_events(). Ensure that the component has the
- DTSTART property.
- (generate_instances_for_year): Renamed from
- cal_object_generate_events_for_year().
- (cal_obj_expand_recurrence): Made static.
- (cal_recur_from_icalrecurrencetype): New function. We should
- really convert this whole file to use struct icalrecurrencetype
- instead.
- (cal_recur_free): New function.
-
- * cal-util/cal-recur.h (CalRecurType): Renamed from CalObjRecurType.
- (CalRecurrence): Renamed from CalObjRecurrence.
-
- * cal-util/timeutil.c (time_from_icaltimetype): New function.
-
- * cal-util/Makefile.am: Commented out the test-recur program.
-
-2000-08-01 Damon Chaplin <damon@helixcode.com>
-
- * Removed doc directory, since it is the old gnome-pim docs which
- aren't used any more.
-
- * Makefile.am (SUBDIRS): removed doc.
-
-2000-07-26 Peter Williams <peterw@helixcode.com>
-
- * gui/calendar-model.c: compile fix for Solaris
- (works under Linux, too; don't know about others)
-
- * this is a test of whether CVS merge does what I
- think it will do.
-
-2000-07-26 Federico Mena Quintero <federico@helixcode.com>
-
- OK, it seems that we have all the interesting properties for
- single-user calendars now. RFC 2445 can bite me.
-
- * cal-util/cal-component.c (scan_property): Handle the RRULE
- property. Yay!.
- (scan_recur): Likewise, yow!
- (get_recur_list): Likewise, yeehaw!
- (get_recur_list): Likewise, honk honk!
- (set_recur_list): Likewise, booooga booooga!
- (cal_component_get_rrule_list): Likewise, squeek squeek!
- (cal_component_set_rrule_list): That's it, I ran out of sounds.
- (cal_component_free_recur_list): Likewise.
- (scan_property): Handle the EXRULE property.
- (free_icalcomponent): Likewise.
- (cal_component_get_exrule_list): Likewise.
- (cal_component_set_exrule_list): Likewise.
- (set_period_list): Oops, free the old properties as well as
- removing them.
- (set_text_list): Ditto.
- (cal_component_set_exdate_list): Ditto.
-
- * cal-util/cal-component.c: Put all the functions used to free
- returned values all together.
- (cal_component_set_rdate_list): Oops, mark SEQUENCE property to be
- incremented since the RFC requires it.
- (scan_property): Handle the EXDATE property.
- (scan_exdate): Likewise.
- (free_icalcomponent): Likewise.
- (cal_component_get_exdate_list): Likewise.
- (cal_component_set_exdate_list): Likewise.
- (cal_component_free_exdate_list): Likewise.
-
-2000-07-26 Jeffrey Stedfast <fejj@helixcode.com>
-
- * gui/Makefile.am: Fixed a typo
-
-2000-07-26 Jeffrey Stedfast <fejj@helixcode.com>
-
- * gui/Makefile.am: Added a few xpm files to the EXTRA DIST section
-
-2000-07-25 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/cal-component.c (cal_component_free_period_list): New function.
- (scan_property): Handle the RDATE property.
- (scan_period): Likewise.
- (free_icalcomponent): Likewise.
- (get_period_list): Likewise.
- (set_period_list): Likewise.
- (cal_component_get_rdate_list): Likewise.
- (cal_component_set_rdate_list): Likewise.
- (scan_text): Simplify a bit since we only handle the ALTREP
- parameter; there is no need to iterate over all parameters.
- (scan_datetime): Simplify; just handle the TZID parameter.
- (scan_summary): Simplify; just handle the ALTREP parameter.
- (cal_component_get_as_string): New function.
-
- * idl/evolution-calendar.idl (CalObjType): Removed the TYPE_OTHER;
- now we only expose the types of objects we know about.
-
- * cal-util/cal-util.h (CalObjType): Likewise.
-
- * cal-client/cal-client.c (cal_client_get_n_objects): Likewise.
- (cal_client_get_uids): Likewise.
-
- * conduits/calendar/calendar-conduit.c (get_calendar_objects): Likewise.
- (check_for_slow_setting): Likewise.
-
- * pcs/cal-backend-imc.c (count_objects): Likewise.
- (build_uids_list): Likewise.
-
- * pcs/cal.c (Cal_get_uids): Likewise.
- (Cal_get_n_objects): Likewise.
-
-2000-07-25 Damon Chaplin <damon@helixcode.com>
-
- * gui/e-calendar-table.[hc]: new ECalendarTable to show an ETable view
- for Todo/Event items.
-
- * gui/task-assigned-to.xpm:
- * gui/task-recurring.xpm:
- * gui/task-assigned.xpm:
- * gui/task.xpm: new pixmaps (all the same at present) to go in the
- icon column of the ETable.
-
- * gui/event-editor.c: hid the silly 'Calendar' labels on the
- GnomeDateEdits and hid the times when you select 'All day event'.
- Also adjusted the time_t's so that when an all day event finishes on
- say midnight 13th May, we show 12th May in the dialog, since it
- implicitly includes all of that day up to midnight.
-
- * gui/dialogs/task-editor-dialog.glade:
- * gui/dialogs/task-editor.[hc]: unfinished dialog to edit tasks.
-
- * gui/gncal-todo.c: temporary hack so that we can use the simple dialog
- with our new ETable.
-
-2000-07-23 Damon Chaplin <damon@helixcode.com>
-
- * cal-util/calobj.h: added a few more fields.
-
- * cal-util/calobj.c (ical_object_create_from_vobject): check for a
- NULL return from vObjectUStringZValue for URL property to avoid SEGV.
- For some reason an empty 'URL:' property appears and causes trouble.
-
-2000-07-20 Ettore Perazzoli <ettore@helixcode.com>
-
- * gui/component-factory.c (factory_fn): Update for the new
- `evolution_shell_component_new()' arg.
-
-2000-07-19 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/cal-component.c (cal_component_alarm_set_trigger):
- Finish filling the trigger. What a pain, again.
- (cal_component_alarm_free_trigger): Implemented.
-
-2000-07-19 Fatih Demir <kabalak@gmx.net>
-
- * conduits/calendar/calendar-conduit-control-applet.desktop:
-
- * conduits/todo/todo-conduit-control-applet.desktop:
- Added the Turkish desktop entries.
-
-2000-07-18 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/cal-component.c (cal_component_alarm_free): Free the
- icalcomponent if this is an unattached alarm.
- (scan_alarm_property): Handle the TRIGGER property.
- (cal_component_alarm_get_trigger): Ditto. Royal pain.
- (cal_component_alarm_set_trigger): Ditto. Less pain.
-
-2000-07-17 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-client/cal-client.c (cal_client_get_object): Fixed inline
- docs.
- (cal_client_new): Ditto.
- (cal_client_get_n_objects): Added inline docs.
-
-2000-07-14 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/cal-component.c (CalComponentAlarm): New internal
- represntation for alarm components. We really don't map them to a
- CalComponent because it is more convenient to handle them as
- "child" structures.
- (make_alarm): New function to create a CalComponentAlarm from an
- icalcomponent representing a VALARM.
- (scan_alarm_property): New function to scan a property from an
- alarm component. We support ACTION.
- (cal_component_get_first_alarm): New function to start an iterator
- over the alarms in a calendar component.
- (cal_component_alarm_get_action): New function.
- (cal_component_alarm_set_action): New function.
-
-2000-07-13 Seth Alves <alves@hungry.com>
-
- * conduits/todo/todo-conduit.c: conduit based on the calendar conduit.
- this conduit syncs a pilot's ToDoDB database to wombat's list of "todo"
- events.
-
- * gui/gncal-todo.c (simple_todo_editor): set todo's priority control
- based on value from ical object during edit.
-
-2000-07-12 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/print.c: Revert Michael's GnomeFont patch until the
- gnome-print API stabilizes.
-
-2000-07-12 Michael Meeks <michael@helixcode.com>
-
- * gui/print.c (titled_box, print_text, print_month_small),
- (bound_text): GnomeFont update.
-
-2000-07-12 Seth Alves <alves@hungry.com>
-
- * conduits/calendar/calendar-conduit.c: fixed various problems
-
- * cal-client/Makefile.am: build a static version of the library
- to link with the conduits
-
- * cal-util/Makefile.am: same
-
-2000-07-11 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/cal-component.c (scan_property): Handle the COMPLETED
- property.
- (free_icalcomponent): Ditto.
- (cal_component_get_completed): Ditto.
- (cal_component_set_completed): Ditto.
- (scan_property): Handle the TRANSPARENCY property.
- (free_icalcomponent): Ditto.
- (cal_component_get_transparency): Ditto.
- (cal_component_set_transparency): Ditto.
- (scan_property): Handle the URL property.
- (free_icalcomponent): Ditto.
- (cal_component_get_url): Ditto.
- (cal_component_set_url): Ditto.
-
- * pcs/cal-factory.c (queue_load_create_job): Removed unneeded
- check for the URI.
- (load_fn): Be more paranoid about the URI and notify the listener
- if we got passed a bad URI. Simplify the termination code a bit.
- (create_fn): Likewise.
- (queue_load_create_job): Be more paranoid about the URI.
-
-2000-07-10 Ettore Perazzoli <ettore@helixcode.com>
-
- * gui/Makefile.am: Remove pilot stuff for now.
-
- * Makefile.am (SUBDIRS): Remove `conduits'.
-
-2000-07-10 Dan Winship <danw@helixcode.com>
-
- * gui/Makefile.am (EXTRA_DIST): remove gnomecal.conduit
-
- * conduits/calendar/Makefile.am (EXTRA_DIST): We want
- calendar.conduit.in, not calendar.conduit.
-
-2000-07-10 Seth Alves <alves@hungry.com>
-
- * gui/Makefile.am (SUBDIRS):
- * conduits/calendar/Makefile.am: moved calendar-conduit stuff from
- the gui directory to here.
-
- * Makefile.am (SUBDIRS): added conduits to SIBDIRS
-
-2000-07-08 Ettore Perazzoli <ettore@helixcode.com>
-
- * gui/calendar-commands.c (calendar_control_activate): Remove
- "close calendar" command.
-
-2000-07-08 Anders Carlsson <andersca@gnu.org>
-
- * gui/e-week-view.c (e_week_view_on_button_press): Handle mouse wheel scrolling.
-
- * gui/e-day-view.c (e_day_view_on_time_canvas_button_press): New function to handle
- mouse wheel scrolling.
- (e_day_view_on_main_canvas_button_press): Handle mouse wheel scrolling.
-
-2000-07-07 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/cal-component.c (scan_property): Handle the SEQUENCE
- property.
- (free_icalcomponent): Ditto.
- (cal_component_get_sequence): Ditto.
- (cal_component_set_sequence): Ditto.
- (cal_component_free_sequence): Ditto.
- (cal_component_set_last_modified): Removed incorrect assertion.
- (CalComponentPrivate): New need_sequence_inc flag. The sequence
- number must be incremented when certain properties change, so we
- store a flag that says if we need to bump it when piping the
- object over the wire.
- (free_icalcomponent): Reset need_sequence_inc.
- (cal_component_set_dtstart): Set need_sequence_inc.
- (cal_component_set_dtend): Ditto.
- (cal_component_set_due): Ditto.
-
-2000-07-06 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/cal-component.c (scan_property): Handle the
- LAST-MODIFIED property.
- (free_icalcomponent): Ditto.
- (cal_component_get_last_modified): Ditto.
- (cal_component_set_last_modified): Ditto.
- (get_icaltimetype): New function to get struct icaltimetype
- values.
- (cal_component_get_created): Use get_icaltimetype().
- (set_icaltimetype): New function to set struct icaltimetype
- values.
- (cal_component_set_created): Use set_icaltimetype().
-
- * cal-util/cal-component.c (scan_property): Handle the CREATED
- property.
- (free_icalcomponent): Ditto.
- (cal_component_free_icaltimetype): Ditto.
- (cal_component_get_created): Ditto.
- (cal_component_set_created): Ditto.
- (cal_component_init): Do not create an UID here.
- (ensure_mandatory_properties): New function to ensure that the
- mandatory RFC properties are indeed in the component. If they are
- not, we create them on the fly.
- (cal_component_set_new_vtype): Use ensure_mandatory_properties().
- (cal_component_set_icalcomponent): Ditto.
- (cal_component_get_uid): Return the UID in a parameter, not as a
- function return value, for consistency's sake.
- (scan_property): Handle the DTSTAMP property.
- (free_icalcomponent): Ditto.
- (cal_component_get_dtstamp): Ditto.
- (cal_component_set_dtstamp): Ditto.
-
-2000-07-04 Damon Chaplin <damon@helixcode.com>
-
- * gui/gncal-todo.c (gncal_todo_update): Use &obj instead of &ico in
- the call to cal_client_get_object(). The ToDo list should work now.
-
- * gui/event-editor-dialog.glade: set the toplevel GnomeApp to invisible
- so it doesn't appear and then resize.
-
-2000-07-03 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/cal-component.c (cal_component_get_summary): Use
- CalComponentText instead of CalComponentPropSummary. Removed the
- latter typedef.
- (cal_component_set_summary): Likewise.
- (scan_property): Handle the CLASSIFICATION property.
- (cal_component_get_classification): Ditto.
- (cal_component_set_classification): Ditto.
-
- * cal-util/cal-component.c (cal_component_free_text_list): Renamed
- from cal_component_free_description_list(). We can share this
- function since both comments and descriptions have the same form.
- (scan_text): Ditto.
- (get_text_list): New function.
- (set_text_list): New function.
- (cal_component_get_description_list): Use get_text_list().
- (cal_component_set_description_list): Use set_text_list().
- (cal_component_set_uid): Add sanity check.
- (cal_component_get_summary): Ditto.
- (cal_component_get_description_list): Ditto.
- (cal_component_get_dtstart): Ditto.
- (cal_component_get_dtend): Ditto.
- (cal_component_get_due): Ditto.
- (scan_property): Handle the COMMENT property.
- (cal_component_get_comment_list): Ditto.
- (cal_component_set_comment_list): Ditto.
-
-2000-07-02 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/cal-component.c (scan_categories): Handle CATEGORIES.
- This can appear multiple times, so we maintain a list. We
- compress them later to a single property with multiple values.
- (cal_component_get_categories_list): Ditto.
- (cal_component_set_categories_list): Ditto.
- (cal_component_free_categories_list): Ditto.
- (free_icalcomponent): Properly free the mappings.
-
-2000-07-02 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/cal-component.c (scan_datetime): Handle date/time and
- timezone pairs.
- (scan_property): Handle DTSTART and DTEND.
- (cal_component_free_datetime): Ditto.
- (get_datetime): Ditto.
- (cal_component_get_dtstart): Ditto.
- (set_datetime): Ditto.
- (cal_component_set_dtstart): Ditto.
- (cal_component_get_dtend): Ditto.
- (cal_component_set_dtend): Ditto.
- (scan_property): Handle DUE date.
- (cal_component_get_due): Ditto.
- (cal_component_set_due): Ditto.
-
-2000-07-01 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/cal-component.c (cal_component_get_description_list):
- Handle the DESCRIPTION property. There can be multiple
- descriptions with parameters each, so we deal with a list instead
- of a single structure.
- (cal_component_set_description_list): Ditto.
- (cal_component_free_description_list): Ditto.
- (scan_property): Ditto.
- (scan_description): Ditto.
-
-2000-06-30 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/cal-component.c (cal_component_get_summary): To avoid
- passing a million parameters to setters/getters for properties
- that support parameters, we now pass client-side structures
- instead. Here we use CalComponentPropSummary.
- (cal_component_set_summary): Ditto.
-
-2000-06-29 Christopher James Lahey <clahey@helixcode.com>
-
- * gui/component-factory.c: Make calendar die when evolution quits.
-
-2000-06-30 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/cal-component.c: Change of plans. We use an
- icalcomponent from libical as our core representation so that we
- can preserve extension fields and fields that we don't (yet)
- support. CalComponent is just a wrapper with a nice API that
- provides non-iterative, random access to the ical's fields.
- (cal_component_destroy): Free the thing correctly.
- (cal_component_get_vtype): Re-implement in terms of icalcomponent.
- (cal_component_set_icalcomponent): New function to set the
- CalComponent's data from an existing icalcomponent.
- (cal_component_get_icalcomponent): New function.
- (cal_component_set_new_vtype): New convenience function to create
- an empty component.
- (scan_icalcomponent): Core scanning function.
- (scan_property): Another core scanning function.
- (cal_component_get_uid): Use the property directly.
- (cal_component_get_summary): Ditto. Handle the altrep parameter
- as well.
- (cal_component_set_summary): Ditto. Feel the pain, motherfucker.
- It is ridiculous how much code this involves.
- (scan_summary): Ditto.
-
-2000-06-29 Ettore Perazzoli <ettore@helixcode.com>
-
- * gui/component-factory.c (owner_set_cb): Get an
- EvolutionShellClient instead of an Evolution_Shell to match the
- changes in libeshell.
-
-2000-06-29 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/Makefile.am: Do not link and include the pilot stuff for the
- calendar component, just for the Pilot conduit. Commented out the
- Pilot part so that Evolution can build. Sigh, we'll have to
- modify gnome-pilot to use OAF.
-
-2000-06-29 Peter Williams <peterw@helixcode.com>
-
- * gui/Makefile.am (LINK_FLAGS): Make the calendar-pilot-sync
- program conditional on HAVE_GNOME_PILOT, and add
- GNOME_PILOT_CFLAGS, GNOME_PILOT_LIBS, and PISOCK_LIBS in the
- appropriate places.
-
-2000-06-29 Seth Alves <alves@hungry.com>
-
- * pcs/cal.c (Cal_get_uid_by_pilot_id):
- (Cal_update_pilot_id):
- * pcs/cal-backend-imc.c (cal_backend_imc_update_pilot_id):
- (cal_backend_imc_get_uid_by_pilot_id):
- * pcs/cal-backend.c (cal_backend_get_uid_by_pilot_id):
- (cal_backend_update_pilot_id): server code to service these:
-
- * gui/calendar-pilot-sync.c: updated to make use of cal-client.
- also uses dirty bits on both sides to aid in syncing.
-
- * cal-client/cal-client.c (cal_client_get_uid_by_pilot_id): new
- function -- ask the cal server to return uid given an object's
- pilot id.
- (cal_client_update_pilot_id): new function -- inform the
- cal server of an objects pilot id and pilot dirty-flag.
-
-2000-06-28 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/cal-component.[ch]: New files for the new iCalendar
- component object. Today's properties: basic component type, UID,
- SUMMARY.
-
- * cal-util/Makefile.am: Added cal-component.[ch] to the list of
- sources.
-
-2000-06-27 Michael Meeks <michael@helixcode.com>
-
- * pcs/Makefile.am (INCLUDES): use BONOBO_VFS_GNOME_CFLAGS.
-
-2000-06-26 Christopher James Lahey <clahey@helixcode.com>
-
- * gui/calendar-model.c: Added an #ifdefed value_to_string handler
- assignment.
-
-2000-06-26 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/calendar-model.c (calendar_model_duplicate_value):
- Implement.
- (calendar_model_initialize_value): Implement.
- (calendar_model_value_is_empty): Implement.
-
-2000-06-21 Damon Chaplin <damon@helixcode.com>
-
- * gui/e-day-view.c (e_day_view_reshape_long_event): set event before
- using it!
- (e_day_view_init): used new colors from tigert.
-
-2000-06-21 Christopher James Lahey <clahey@helixcode.com>
-
- * gui/e-day-view.c, gui/e-week-view.c: Remove the usage of the "x"
- and "y" arguments.
-
-2000-06-21 Damon Chaplin <damon@helixcode.com>
-
- * gui/gnome-cal.c (gnome_calendar_direction): changed so it keeps the
- selection range. It just moves it on one day/week etc. This makes
- it very handy for the keyboard shortcut code.
-
- * gui/calendar-commands.c (calendar_control_activate): fixed bug
- setting the radio button active.
-
- * gui/e-day-view.[hc]: added support for keyboard navigation and
- selection of the time range.
-
-2000-06-20 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/calendar-model.c (calendar_model_set_value_at): Implemented.
- (calendar_model_is_cell_editable): Implemented.
-
- * cal-client/cal-client.c (cal_client_update_object): Take in an
- iCalObject instead of a stringified version.
-
- * gui/gnome-cal.c (gnome_calendar_update_object): Removed.
- (gnome_calendar_remove_object): Removed.
- (save_ical_object_cb): Use the CalClient function.
-
- * gui/e-day-view.c (e_day_view_on_delete_occurrence): Likewise.
- (e_day_view_on_unrecur_appointment): Likewise.
- (e_day_view_finish_long_event_resize): Likewise.
- (e_day_view_finish_resize): Likewise.
- (e_day_view_key_press): Likewise.
- (e_day_view_on_editing_stopped): Likewise.
- (e_day_view_on_top_canvas_drag_data_received): Likewise.
- (e_day_view_on_main_canvas_drag_data_received): Likewise.
- (e_day_view_on_delete_appointment): Likewise.
-
- * gui/e-week-view.c (e_week_view_on_editing_stopped): Likewise.
- (e_week_view_key_press): Likewise.
- (e_week_view_on_delete_occurrence): Likewise.
- (e_week_view_on_unrecur_appointment): Likewise.
- (e_week_view_on_delete_appointment): Likewise.
-
- * gui/gncal-todo.c (ok_button): Likewise.
- (delete_todo): Likewise.
-
-2000-06-19 Damon Chaplin <damon@helixcode.com>
-
- * gui/event-editor-dialog.glade: tidied up dialog a bit, adding
- space etc.
-
- * gui/e-week-view.c (e_week_view_reshape_events): removed debug msg.
-
-2000-06-18 Ettore Perazzoli <ettore@helixcode.com>
-
- * cal-util/Makefile.am (INCLUDES): Include from
- `$(top_builddir)/libical/src/libical' too. [For the generated
- libical `icalversion.h' header.]
- * cal-client/Makefile.am (INCLUDES): Likewise.
-
-2000-06-18 Damon Chaplin <damon@helixcode.com>
-
- * gui/e-day-view.c (e_day_view_on_top_canvas_drag_data_received):
- fixed a DnD bug.
-
-2000-06-17 Dan Winship <danw@helixcode.com>
-
- * cal-client/Makefile.am (INCLUDES): Fix to not depend on
- installed ical.h
-
-2000-06-17 Damon Chaplin <damon@helixcode.com>
-
- * gui/e-week-view.c: added little buttons which are shown when there
- are more events than will fit in a day. Clicking on the button takes
- the user to the 1-Day view and shows the full day.
-
- * gui/e-day-view.c:
- * gui/e-week-view.c: set the "use_ellipsis" arg to TRUE for the EText
- items so we get tooltips automatically. Though we may want to use our
- own code to show tooltips so we can show the tips when the mouse is
- around the edges of the event box, and we may want to show the start
- and end times of the event in full.
-
- * gui/calendar-commands.c (calendar_control_activate):
- * gui/gnome-cal.h: added view_toolbar_buttons[] so we can access the
- radio buttons in the code easily. We need this if we want to jump to
- another view programmatically.
-
-2000-06-16 Damon Chaplin <damon@helixcode.com>
-
- * gui/jump.xpm: new icon for the EWeekView to jump to the day.
-
- * gui/Makefile.am (EXTRA_DIST): added jump.xpm
-
-2000-06-16 Damon Chaplin <damon@helixcode.com>
-
- * gui/calendar-model.c (calendar_model_class_init): #ifdef'ed out
- references to functions which don't exist yet, so evolution still
- compiles.
-
-2000-06-16 Damon Chaplin <damon@helixcode.com>
-
- * cal-util/test-recur.c: updated.
-
- * cal-util/cal-recur.[hc]: mostly finished, though it depends on the
- iCalObject struct being updated to support more of iCalendar.
-
-2000-06-16 Damon Chaplin <damon@helixcode.com>
-
- * pcs/.cvsignore: added icalendar-test.
-
-2000-06-15 Damon Chaplin <damon@helixcode.com>
-
- * cal-util/Makefile.am (test_recur_LDADD): use libical.a
-
-2000-06-15 Dan Winship <danw@helixcode.com>
-
- * cal-util/Makefile.am (noinst_PROGRAMS): merge the two separate
- noinst_PROGRAMS declarations into one so automake accepts it.
- (INCLUDES): include libical src dir so we don't depend on having
- ical.h already installed
-
-2000-06-14 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/calendar-model.c: GPtrArray cannot insert stuff in the
- middle of the array (!), so use plain GArray everywhere. Sigh.
-
-2000-06-13 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-client/cal-client.c (cal_client_get_object): Use vCalendar
- again.
-
- * cal-util/calobj.c (ical_object_find_in_string): From Seth, make
- it use vCalendar again.
-
-2000-06-13 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/calendar-model.c (obj_updated_cb): Juggle some eggs in
- asynchronous fashion. Finished implementing.
- (obj_removed_cb): Implemented. This one needs no juggling.
- (calendar_model_set_cal_client): Only load the objects if we have
- a client.
- (calendar_model_destroy): Disconnect from the client's signals.
-
- * gui/Makefile.am (evolution_calendar_SOURCES): Added
- calendar-model.[ch] to the list of sources.
-
- * pcs/cal-backend-imc.c (cal_backend_imc_get_n_objects): Doh,
- return the computed value.
-
-2000-06-13 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/calendar-model.c (CalendarModelPrivate): Added the array of
- objects and the hash table of UID->array index.
- (calendar_model_row_count): Return the length directly from the
- array instead of asking the Wombat.
- (calendar_model_value_at): Implemented.
- (calendar_model_new): Create an empty model. We provide a new
- setter function now.
- (calendar_model_construct): Removed function.
- (calendar_model_set_cal_client): New function to set the calendar
- client and object type at any time. This lets us reuse a calendar
- model object.
-
- * cal-util/calobj.h (iCalObjectField): Just report whether the
- object has alarms; not every single alarm.
-
-2000-06-13 Ettore Perazzoli <ettore@helixcode.com>
-
- * gui/Makefile.am (SHELL_OBJS): Removed.
- (evolution_calendar_LDADD): Link with
- `$(top_builddir)/shell/libeshell.a'.
-
-2000-06-09 Ettore Perazzoli <ettore@helixcode.com>
-
- * gui/component-factory.c (factory_fn): Pass NULL for the new args
- @create_folder_fn and @remove_folder_fn.
- (create_view): Updated to match the new
- `EvolutionShellComponentCreateViewFn'. Return
- `EVOLUTION_SHELL_COMPONENT_UNSUPPORTEDTYPE' if type is not
- "calendar".
-
-2000-06-09 Federico Mena Quintero <federico@helixcode.com>
-
- * idl/evolution-calendar.idl (Cal): Added a get_n_objects()
- method.
-
- * pcs/cal-backend.c (cal_backend_get_n_objects): New function.
-
- * pcs/cal-backend-imc.c (cal_backend_imc_get_n_objects):
- Implemented.
-
- * pcs/cal.c (Cal_get_n_objects): Implemented.
-
- * cal-client/cal-client.c (cal_client_get_uids): Free the ev.
- (cal_client_get_n_objects): Implemented.
-
- * cal-util/calobj.h (iCalObjectField): New enumeration to identify
- the fields in an iCalObject.
-
-2000-06-08 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/event-editor.c (event_editor_destroy): Free the private
- structure.
-
-2000-06-08 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/calobj.c (ical_object_to_vobject): Allow for NULL
- summaries.
-
-2000-06-07 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/event-editor.c (toolbar): Added missing tooltips. We still
- need icons, though.
-
-2000-06-07 Seth Alves <alves@hungry.com>
-
- * cal-util/calobj.c (ical_object_find_in_string): put this back in,
- it's still used in cal-backend-imc.c:cal_backend_imc_update_object
-
- * cal-client/cal-client.c (cal_client_get_object): instead of
- returning a text representation, decode the text and return an
- iCalObject. Also added CalClientGetStatus which indicates
- success or type of failure.
-
- * cal-util/calobj.c (ical_object_find_in_string): #ifed out
- ical_object_find_in_string since it is unused now.
-
- * cal-client/client-test.c (list_uids): track get_object change
- * gui/calendar-commands.c (calendar_iterate): same
- * gui/e-day-view.c (e_day_view_update_event): same
- * gui/e-week-view.c (e_week_view_update_event): same
- * gui/print.c (print_day_details): same
- (print_day_summary): same
- (print_todo_details): same
- * gui/gnome-cal.c (trigger_alarm_cb): same
- * gui/gncal-todo.c (gncal_todo_update): same
-
-2000-06-06 Seth Alves <alves@hungry.com>
-
- * cal-util/icalendar.c, icalendar-save.c: fixed a bunch of problems
- * cal-util/calobj.c (ical_object_find_in_string): use libical
- instead of libversit
- (ical_object_to_string): same
- (dump_icalobject): prints the contents of an icalobject for debugging
-
- * gui/Makefile.am (LINK_FLAGS): link libical.a instead of libical.la
- so we don't have to modify the build system of the released libical
- * cal-client/Makefile.am (client_test_LDADD): same
- * cal-util/Makefile.am (icalendar_test_LDADD): same
-
-2000-06-06 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/calobj.c (ical_object_destroy): Removed from the public
- header; made static. Now everyone should use refcounting.
-
- * pcs/cal-backend-imc.c (free_ical_object): Use
- ical_object_unref().
- (remove_object): Likewise.
-
-2000-06-02 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/calendar-commands.c (print): New function to call the print
- engine.
- (calendar_toolbar): Added the Print button.
- (calendar_control_activate): Added the File/Print item.
-
- * gui/e-day-view.c (e_day_view_get_selected_time_range): Allow
- start_time and end_time to be NULL.
-
- * gui/e-week-view.c (e_week_view_get_selected_time_range):
- Likewise.
-
- * gui/print.c (range_selector_new): Show the range selector
- widgets. Use the correct radio group for all of them!
- (print_calendar): Do the dialog box here. We may want to split
- this function later into smaller chunks.
-
-2000-06-05 Damon Chaplin <damon@helixcode.com>
-
- * gui/e-week-view-event-item.c (e_week_view_event_item_button_press):
- allow the right button to popup the menu, even when the event is
- being edited.
-
- * gui/e-week-view.c:
- * gui/e-day-view.c: Set the keyboard focus to the EDayView/EWeekView
- when the right button is clicked, so that any event being edited is
- saved before any action (e.g. opening the Event Editor dialog) is
- started. Note that this won't work if we switch to asynchronous
- notification.
-
-2000-06-02 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/event-editor.c (tb_save_and_close_cb): Implemented.
- (toolbar): Added an icon for the Save and Close command.
- (save_ical_object): Recompute the title of the window here. Maybe
- it would be better to do it when we actually get the
- "object_changed" signal from the CalClient.
- (file_close_cb): Implemented.
-
-2000-06-02 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/gnome-cal.c (save_ical_object_cb): Implemented.
- (gnome_calendar_add_object): Removed function, since it was
- identical to gnome_calendar_update_object(). Modified the rest
- of the code to use only the latter.
- (gnome_calendar_remove_object): Be more paranoid about the UID.
- (gnome_calendar_update_object): Ditto. Also, renamed this
- function from gnome_calendar_object_changed(), for consistency
- with the lower-level CalClient interface.
-
- * gui/event-editor.c (event_editor_class_init): New
- "save_ical_object" signal to ask that our parent store the
- calendar object to the backend.
- (save_ical_object): New function to save the calendar object,
- actually if just emits the signal.
- (file_save_cb): Implemented.
- (dialog_to_ical_object): We want priv->
- alarm_program_run_program_entry (i.e. the entry inside the
- GnomeFileEntry), not the file entry itself.
- (dialog_to_ical_object): Only insert the recurrence ending date if
- the event is recurrent!
-
-2000-06-02 Christopher James Lahey <clahey@helixcode.com>
-
- * gui/Makefile.am: Fixed EXTRA_DIST.
-
-2000-06-01 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/gnome-cal.c (editor_closed_cb): Handler for the
- "editor_closed" signal of the event editor; we just destroy it
- then.
-
- * gui/event-editor.c (app_delete_event_cb): Callback used when the
- dialog is closed. Release the iCalObject here instead of the
- event editor's destroy handler, and emit the new "editor_closed"
- signal.
-
-2000-06-01 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/event-editor-dialog.glade: Change of plans. The toplevel
- GnomeApp is now generated with Glade instead of being created in
- the program code. Otherwise we can't migrate the accelerators to
- the new toplevel and they won't work.
-
- * gui/event-editor.[ch]: EventEditor now derives from GtkObject.
- This lets us use the GnomeApp created by libglade and still have
- signals and stuff.
-
- * gui/event-editor.c (create_menu): Tell the UI handler that the
- menubar is the GnomeApp's existing one, not to create a new one.
- (create_toolbar): Tell the UI handler to use the GnomeApp's
- existing toolbar.
- (event_editor_focus): New function to raise/focus an event editor.
-
- * gui/gnome-cal.c (gnome_calendar_edit_object): Use
- event_editor_focus().
-
-2000-06-01 Ettore Perazzoli <ettore@helixcode.com>
-
- * gui/calendar-commands.c (calendar_control_activate): Put the
- toolbar into a frame to make it look like standard GNOME toolbars.
- Also, set `GNOME_DOCK_ITEM_BEH_NEVER_VERTICAL' so that it does not
- do evil things when its moved to the left or the right of the
- window.
-
-2000-05-31 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/gnome-cal.h (GnomeCalendar): Added a hash table to map
- calendar objects to their respective event editors.
-
- * gui/gnome-cal.c (gnome_calendar_init): Create the
- object_editor_hash.
- (gnome_calendar_destroy): Free the object_editor_hash.
- (gnome_calendar_edit_object): New function to centralize the
- launching of event editors; if one already exists for a particular
- calendar object, we just raise its window.
- (edit): Use gnome_calendar_edit_object().
-
- * gui/calendar-commands.c (display_objedit): Use
- gnome_calendar_edit_object().
- (display_objedit_today): Likewise.
-
- * gui/e-day-view.c (e_day_view_on_new_appointment): Likewise.
- (e_day_view_on_edit_appointment): Likewise.
-
- * gui/e-week-view.c (e_week_view_on_new_appointment): Likewise.
- (e_week_view_on_edit_appointment): Likewise.
-
- * gui/event-editor.c (event_editor_new): Do not take in an
- iCalObject; rather provide an event_editor_set_ical_object()
- function. We need this because a single editor may be switched
- between different calendar objects. Also, do not show the event
- editor; leave it up to the client code.
- (event_editor_construct): Likewise.
- (clear_widgets): New function to clear the widgets to default
- values.
- (fill_widgets): New function to fill in the widgets from the
- iCalObject. We don't do this in init_widgets() anymore.
- (free_exception_clist_data): New function to free the exceptions
- clist data. We were leaking the row data.
- (init_widgets): Hook to the destroy signal of the exceptions
- clist.
- (event_editor_set_ical_object): New function. Now it also makes a
- copy of the calendar object for the event editor; clients do not
- need to copy it anymore.
- (event_editor_destroy): Unref the UI handler as well.
- (event_editor_class_init): New "ical_object_released" signal to
- notify the parent that we are no longer editing the calendar
- object.
- (make_title_from_ico): Handle NULL objects.
-
- * gui/event-editor.h (EventEditor): Removed fields that are no
- longer used.
-
-2000-05-31 Damon Chaplin <damon@helixcode.com>
-
- * cal-util/Makefile.am: added test-recur test program.
-
- * cal-util/test-recur.c: new file to test the recurrence code.
-
- * cal-util/.cvsignore: added test-recur.
-
- * cal-util/cal-recur.c: updated.
-
-2000-05-30 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/event-editor.c (event_editor_construct): Create the UI
- handler after we have constructed the parent GnomeApp.
- (main_menu): Menu template is now in place.
- (toolbar): Tollbar template is now in place.
- (create_toolbar): Turn off labels in the toolbar since it sucks;
- it should support non-homogeneous buttons with horizontal icons
- and text.
-
-2000-05-29 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/gnome-cal.c (gnome_calendar_object_changed): Removed the
- flags argument, since now we just proxy the calendar object to the
- calendar client.
-
- * gui/event-editor.c (alarm_unit_get): Moved over from
- event-editor-utils.c.
-
- * gui/event-editor-utils.[ch]: Removed files, since the two
- functions that were left there (i.e. the ones not present in
- e-dialog-widgets) can simply be moved to event-editor.c.
-
- * gui/Makefile.am (evolution_calendar_SOURCES): Removed
- event-editor-utils.[ch] from the list of sources.
-
-2000-05-27 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/event-editor-utils.c: Moved many functions to
- e-util/e-dialog-widgets.c.
-
-2000-05-25 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/event-editor-dialog.glade: Put the main notebook directly
- under a simple GtkWindow. We are going to pull out the notebook
- and slap it into our custom-built GnomeApp, anwyays.
-
- * gui/event-editor.c: Made the EventEditor derive from GnomeApp.
- Added a BonoboUIHandler for its menu and toolbar.
- (make_title_from_ico): Create a nice title for the window.
- (get_widgets): Fetch the Glade widgets here instead of all over
- the place.
- (event_editor_new): Temporary hack to show the dialog here, just
- so that I can test it.
-
- * gui/Makefile.am (EXTRA_DIST): Added the Glade messages file.
-
-2000-05-25 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/main.c (init_bonobo): Do not initialize libglade twice.
-
- * gui/component-factory.c (create_view): Set the folder_uri
- property, otherwise the calendar will not get loaded into the
- view.
-
-2000-05-25 Christopher James Lahey <clahey@helixcode.com>
-
- * gui/main.c: Make it so that warnings don't crash calendar.
-
-2000-05-25 Ettore Perazzoli <ettore@helixcode.com>
-
- * gui/evolution-calendar-control.c: Removed.
-
- * gui/main.c: New.
-
- * gui/control-factory.c: New.
- * gui/control-factory.h: New.
-
- * gui/calendar-component-factory.c: New.
- * gui/calendar-component-factory.c: New.
-
- * gui/evolution-calendar-control.c (calendar_control_factory):
- Renamed from `calendar_factory'.
- (calendar_control_factory_init): Renamed from
- `calendar_factory_init'.
-
- * gui/Makefile.am: Link with the files from `$(builddir)/shell'.
-
- * gui/evolution-calendar.gnorba: New.
- * gui/evolution-calendar.oafinfo: New.
-
-2000-05-24 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/print.c (range_selector_new): New function to create the
- custom range selector.
- (print_dialog): New function to show the print dialog.
- (print_calendar): Use the print dialog.
-
-2000-05-24 Christopher James Lahey <clahey@helixcode.com>
-
- * gui/Makefile.am: Added libepaned.a.
-
- * gui/gnome-cal.c: Switched from GtkPaned to EPaned.
-
-2000-05-22 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/calendar-commands.c (calendar_get_events_in_range): Removed
- function.
-
- * gui/mark.c (mark_month_item): Use
- cal_client_get_events_in_range().
-
- * gui/calendar-commands.c (show_year_view_clicked): Comment out,
- since we don't have a year view.
-
- * gui/gnome-cal.c (setup_widgets): Removed the year view stuff.
- (gnome_calendar_get_current_view_name): Likewise.
- (gnome_calendar_update_view_times): Likewise.
- (gnome_calendar_direction): Likewise.
- (gnome_calendar_set_view): Likewise.
- (gnome_calendar_update_all): Likewise.
- (gnome_calendar_object_updated_cb): Likewise.
- (gnome_calendar_object_removed_cb): Likewise.
- (gnome_calendar_time_format_changed): Likewise.
- (gnome_calendar_get_current_time_range): Likewise.
-
- * gui/gnome-cal.h (GnomeCalendar): Removed the year view stuff.
-
- * gui/Makefile.am (evolution_calendar_SOURCES): Added layout.[ch],
- print.[ch]. Removed quick-view.[ch], year-view.[ch] since they
- are no longer used. Removed all the old Pilot crap.
-
-2000-05-20 Damon Chaplin <damon@helixcode.com>
-
- * cal-util/cal-recur.[hc]: new files to implement iCalendar recurrence
- rules. These are only part finished, but people may like to check that
- the architecture seems OK.
-
-2000-05-17 Damon Chaplin <damon@helixcode.com>
-
- * gui/e-day-view.c (e_day_view_on_delete_occurrence):
- * gui/e-week-view.c (e_week_view_on_delete_occurrence): use a copy of
- the iCalObject so we detect the change in the "update_event" callback.
- Maybe we should just update the view ourselves and then we wouldn't
- need to detect any change in the callback.
-
- * cal-util/calobj.c (ical_object_reset_recurrence): new function to
- get rid of any recurrence rules. Used when we 'unrecur' an event.
-
- * gui/e-day-view.c (e_day_view_key_press): don't add a new event if it
- won't fit, or we end up adding a new event for each key press.
- (e_day_view_update_event_label): don't update it if it doesn't have
- an EText item (i.e. it isn't visible).
-
- * gui/e-day-view-time-item.c: allow selection of times using this
- column.
-
-2000-05-19 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/timeutil.c (time_add_minutes): Fixed warning message.
- (time_add_day): Likewise.
- (time_add_month): Likewise.
- (time_add_year): Likewise.
- (time_from_day): Of all functions, *this* one had to have a bug.
- Set the tm.tm_isdst to -1 to specify that we don't know whether
- the time is in DST or not. This fixes *many* bugs upstream.
- (time_week_begin): Likewise. We never noticed this since the week
- functions are never used.
- (time_week_end): Likewise.
-
-2000-05-17 Seth Alves <alves@hungry.com>
-
- * gui/event-editor.c: hooked up more widget signals to callbacks
- to the gladified dialog acts more like the original one.
-
-2000-05-16 Seth Alves <alves@hungry.com>
-
- * gui/event-editor.c (recurrence_toggled): hook the radio buttons
- to the pages of the notebook.
- (append_exception):
- (recurrence_exception_added):
- (recurrence_exception_deleted):
- (recurrence_exception_changed): code to deal with the recurrence
- exception list.
-
-2000-05-15 Seth Alves <alves@hungry.com>
-
- * gui/event-editor.[ch]: gladeified replacement for eventedit.c
-
- * gui/event-editor-utils.[ch]: utilities used by event-editor.c
-
- * gui/event-editor-dialog.glade: glade file used by event-editor.c
-
-2000-05-14 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/gnome-cal.c (display_notification): Use the alarm
- notification dialog.
- (display_notification_cb): New callback for the result of the
- alarm notification dialog.
-
- * gui/dialogs/alarm-notify.glade: New file with the alarm
- notification dialog.
-
- * gui/dialogs/alarm-notify-dialog.[ch]: New file.
-
- * gui/dialogs/Makefile.am: New file.
-
- * gui/Makefile.am (SUBDIRS): Added the dialogs directory.
-
-2000-05-13 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/gnome-cal.c (trigger_alarm_cb): Better error checking, and
- plug leaks of str_ico and ico.
-
- * gui/evolution-calendar-control.c (main): Initialize libglade.
-
-2000-05-13 Ettore Perazzoli <ettore@helixcode.com>
-
- * pcs/Makefile.am (INCLUDES): Add
- `-I$(top_builddir)/libical/src/libical'.
-
-2000-05-12 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/calobj.c (generate): Use a (dtend - dtstart) offset to
- compute the ending time of the occurrence. This takes care of
- recurring events that span multiple days. Also, removed the DST
- condition since it did not look right at all: if you have a daily
- appointment at 18:00, it still should happen at 18:00 even during
- daylight savings.
-
- * gui/gnome-cal.c (gnome_calendar_tag_calendar): Use the timeutil
- functions instead of calculating the month's times by hand. Use
- cal_obj_instance_list_free() instead of freeing the list by hand.
- Clip the range we pass to mark_gtk_calendar_day().
- (mark_gtk_calendar_day): Fixed off-by-one error at the end of the
- month by adding real day offsets.
-
-2000-05-11 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/gnome-cal.c (add_alarms_for_object): New function to add
- today's alarms for a single object.
- (gnome_calendar_object_updated_cb): Update the object's alarms.
-
- * idl/evolution-calendar.idl (Cal): Added a
- get_alarms_for_object() method.
-
- * pcs/cal.c (Cal_get_alarms_for_object): Implemented method.
-
- * pcs/cal-backend.c (cal_backend_get_alarms_for_object): New
- function.
-
- * pcs/cal-backend-imc.c (cal_backend_imc_get_alarms_for_object):
- Implemented.
-
- * cal-client/cal-client.c (cal_client_get_alarms_for_object): New
- function.
-
-2000-05-11 Dan Winship <danw@helixcode.com>
-
- * gui/calendar-commands.c (calendar_control_activate): Now that we
- depend on current gnome-libs we can make the toolbar detachable
- again.
-
- * pcs/icalendar-save.c (timet_to_icaltime): remove unused timezone
- variable to make this compile on BSD systems (where timezone is
- the name of a function)
-
-2000-05-11 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/gnome-cal.c (gnome_calendar_update_all): Removed unused
- arguments. Load the initial alarms here.
- (load_alarms): New function to load a day's worth of alarms.
- (gnome_calendar_class_init): Eeeek! This was taking in an
- incorrect argument type.
- (gnome_calendar_init): Now the calendar keeps a hash table of
- UIDs->queued alarms. Create the hash table here.
- (gnome_calendar_destroy): Destroy the alarms hash table.
- (gnome_calendar_object_updated_cb): Remove the alarms for the
- object and regenerate them.
- (gnome_calendar_object_removed_cb): Remove the alarms for the
- object.
-
- * gui/alarm.c (alarm_add): Do not take in a CalendarAlarm, just
- the trigger time, the callback and the closure data. Return an
- opaque identifier for the alarm so that it can be removed by the
- client code if needed. Use the queue_alarm() helper function.
- (queue_alarm): Helper function to actually queue the alarm and set
- up the itimer. Deal with a nonzero return value from
- setitimer().
- (alarm_remove): New function to remove an alarm based on its ID.
- (pop_alarm): New helper function; pops the first alarm of the
- queue and resets the timer as appropriate.
- (alarm_ready): Simplified a lot by using pop_alarm().
-
- * idl/evolution-calendar.idl (Cal): Added get_alarms_in_range().
-
- * pcs/cal.c (build_instance_seq): New function to build a CORBA
- sequence from the internal list of instances.
- (Cal_get_events_in_range): Use build_instance_seq().
- (Cal_get_alarms_in_range): Implemented new method.
-
- * pcs/cal-backend.c (cal_backend_get_alarms_in_range): New
- function with the get_alarms_in_range() engine.
-
- * pcs/cal-backend-imc.c (cal_backend_imc_get_alarms_in_range):
- Implemented the get_alarms_in_range() method.
-
- * cal-client/cal-client.c (cal_client_get_alarms_in_range): New
- client-side function for getting the alarms.
- (build_instance_list): New helper function to build the
- CalObjInstance list from the CORBA sequence.
- (cal_client_get_events_in_range): Use build_instance_list().
-
- * gui/calendar-commands.h: #include <cal-util/calobj.h>. #include
- "gnome-cal.h".
-
- * gui/e-week-view.c: #include "calendar-commands.h" instead of
- main.h; the latter is an obsolete file and will be killed.
-
- * gui/evolution-calendar-control.c (main): Call init_bonobo()
- before anything else. We need the GTK+ object system initialized.
-
- * gui/Makefile.am (evolution_calendar_SOURCES): Do not use main.h.
-
- * cal-util/cal-util.c (cal_alarm_instance_list_free): New function.
-
-2000-05-10 Matt Loper <matt@helixcode.com>
-
- * gui/calendar-commands.c (calendar_control_activate): Move
- "about" menuitem to the help menu.
-
-2000-05-10 Christopher James Lahey <clahey@helixcode.com>
-
- * gui/Makefile.am: Added main.h. Combined the two EXTRA_DIST
- sections.
-
-2000-05-09 Christopher James Lahey <clahey@helixcode.com>
-
- * pcs/cal-backend-imc.c: Set the format when creating a new
- calendar.
-
-2000-05-09 Christopher James Lahey <clahey@helixcode.com>
-
- * pcs/cal-factory.c: Removed double free of method_string in
- uri->method_string.
-
-2000-05-08 Ettore Perazzoli <ettore@helixcode.com>
-
- * pcs/cal.h: Include "calendar/pcs/evolution-calendar.h" instead
- of "evolution-calendar.h".
-
- * pcs/cal-backend.h: Include "calendar/pcs/evolution-calendar.h"
- instead of "evolution-calendar.h".
-
-2000-05-08 Seth Alves <alves@hungry.com>
-
- * gui/e-day-view.c (e_day_view_on_delete_appointment): call
- e_day_view_stop_editing_event here to avoid a divide by zero
- a bit further on. i'm not sure if this is the best fix for this.
-
-2000-05-08 Federico Mena Quintero <federico@helixcode.com>
-
- * pcs/cal-backend.h (CalBackendClass): CalBackendClass now is just
- an interface for calendar backends; this is an abstract class.
- Put in the vtable for the backend methods.
-
- * pcs/cal-backend.c (cal_backend_new): Removed function, since
- CalBackend is not just an abstract class.
- Removed implementation-specific functions and made public
- functions call the virtual methods instead.
-
- * pcs/cal-backend-imc.[ch]: New files with the CalBackendIMC
- implementation; this implements a backend for iCalendar and
- vCalendar files. Moved the implementation-specific stuff from
- cal-backend.[ch] to here.
-
- * pcs/cal-backend-imc.c (CalendarFormat): Moved enumeration to
- here. Added a CAL_UNKNOWN value for when the backend is not
- loaded yet.
- (cal_backend_imc_init): Initialize priv->format as CAL_UNKNOWN.
- (save_to_vcal): Use the same VCProdIdProp value as in
- cal-util/calobj.c. Use "1.0" as the VCVersionProp as per the
- vCalendar spec.
- (ensure_uid): Return nothing, since the result value need not be
- used anymore.
- (add_object): Since we mark the calendar as dirty anyways, we do
- not need to check the result value of ensure_uid() anymore.
- (remove_object): Asssert that we know how to handle the object's
- type. We do this in add_object() anyways.
-
- * pcs/Makefile.am (libpcs_a_SOURCES): Added cal-backend-imc.[ch].
-
- * gui/gnome-cal.c: Replaced debugging printf()s with g_message()
- so that we can see the line number where they occur.
-
- * gui/gnome-cal.c (gnome_calendar_load_cb): Sort of handle the
- LOAD_METHOD_NOT_SUPPORTED result code, and added a default for the
- switch.
-
- * cal-client/cal-listener.h (CalListenerLoadStatus): Removed
- enumeration; it is stupid to translate all values for the
- CalClient when it is going to translate them again.
- (CalListenerClass::cal_loaded): This signal now passes the
- LoadStatus directly from the CORBA side.
-
- * cal-client/cal-listener.c (Listener_cal_loaded): Do not
- translate the status value.
-
- * cal-client/cal-client.h (CalClientLoadStatus): Added the
- CAL_CLIENT_LOAD_METHOD_NOT_SUPPORTED error code.
-
- * cal-client/cal-client.c (cal_loaded_cb): Translate the CORBA
- version of the LoadStatus result code.
-
- * pcs/cal-factory.c (CalFactoryPrivate): New methods field for the
- hash table from method strings to the GtkTypes for backend class
- types.
- (cal_factory_init): Create the priv->methods hash table.
- (cal_factory_destroy): Free the priv->methods hash table.
- (cal_factory_register_method): New function to register a backend
- class for a particular URI method.
- (launch_backend_for_uri): New function to launch a backend for a
- particular URI's method.
- (load_backend): Use launch_backend_for_uri(). Move the error
- notification code from load_fn() to here.
- (create_backend): Use launch_backend_for_uri(). Move the error
- notification code form create_fn() to here; it is #ifdefed out
- since currently cal_backend_create() does not have any error
- reporting capabilities.
-
- * idl/evolution-calendar.idl (Listener::LoadStatus): Added a
- PROTOCOL_NOT_SUPPORTED error code.
-
- * pcs/cal-factory.c (cal_factory_load cal_factory_create): Removed
- functions, since they were supposed to be internal only.
- (CalFactory_load): Call queue_load_create_job() directly.
- (CalFactory_create): Likewise.
-
-2000-05-08 Damon Chaplin <damon@helixcode.com>
-
- * gui/e-week-view.c (e_week_view_remove_event_cb):
- * gui/e-day-view.c (e_day_view_remove_event_cb): don't set the ico->uid
- to NULL or we won't find any other occurrences of the event. Set the
- editing_event_day/num to -1 instead.
-
- * gui/e-week-view-event-item.c (e_week_view_event_item_draw): fixed the
- positioning of the icons for long events.
-
- * cal-util/calobj.c (ical_object_normalize_summary): forgot to
- terminate the string.
-
-2000-05-07 Damon Chaplin <damon@helixcode.com>
-
- * gui/e-day-view.c (e_day_view_on_main_canvas_drag_data_received):
- (e_day_view_on_top_canvas_drag_data_received): show the EText item,
- just in case it hasn't moved, otherwise it won't appear.
-
- * gui/e-day-view.h (E_DAY_VIEW_BAR_WIDTH): increased from 6 to 8 to
- make it easier to drag an event. Also increased E_DAY_VIEW_GAP_WIDTH
- since it must be >= the BAR_WIDTH.
-
-2000-05-07 Matt Loper <matt@helixcode.com>
-
- * gui/evolution-calendar-control.c (PROPERTY_CALENDAR_URI):
- Changed to "folder_uri" from "calendar_uri".
- (set_prop): The uri given to us is a directory, so we append a
- filename onto the end before we use it.
-
-2000-05-06 Damon Chaplin <damon@helixcode.com>
-
- * cal-util/timeutil.c (time_day_begin):
- (time_day_end): changed these so they just do a simple localtime(),
- update the struct tm, then do a mktime(). I don't know why it used to
- look at the tm_isdst flags etc. From a little test program I wrote
- which steps through testing every hour for a year it wasn't working
- correctly, and the new code does.
- (time_add_day): also got rid of the stuff that looked at tm_isdst here.
- My test program now works better.
-
-2000-05-06 Chris Toshok <toshok@helixcode.com>
- * gui/.cvsignore: ignore evolution-calendar.pure
-
- * gui/Makefile.am: add support for building evolution-calendar.pure
-
-2000-05-06 Damon Chaplin <damon@helixcode.com>
-
- * gui/e-day-view.c:
- * gui/e-week-view.c: finish editing event when user hits Return key.
- (e_week_view_on_text_item_event): stop event signals after doing any
- other calls, since otherwise it will also stop any other resulting
- event signals.
-
- * gui/e-week-view-event-item.c (e_week_view_event_item_draw): don't
- draw the start/end times while editing.
-
- * gui/eventedit.c: changed the Summary field to a GtkEntry, since we
- now only want a single line of text.
-
- * cal-util/calobj.c (ical_object_normalize_summary): new function to
- convert the summary field to a single line of text, by converting any
- sequence of CR & LF characters to a single space.
- (ical_object_create_from_vobject): call the above function. I think
- all functions that load iCalObjects go through this.
- (ical_new): called it here as well just in case.
-
-2000-05-06 Damon Chaplin <damon@helixcode.com>
-
- * gui/week-view.[hc]: removed.
-
-2000-05-06 Damon Chaplin <damon@helixcode.com>
-
- * gui/gncal-day-panel.[hc]:
- * gui/gncal-day-view.[hc]:
- * gui/gncal-full-day.[hc]:
- * gui/gncal-week-view.[hc]:
- * gui/layout.[hc]:
- * gui/view-utils.[hc]: removed old calendar view files.
-
-2000-05-06 Damon Chaplin <damon@helixcode.com>
-
- * cal-util/calobj.[hc]: added guint ref_count to iCalObject struct,
- and ical_object_ref/unref() functions. I've updated all the gui/
- stuff to use ref_counts but I haven't touched the pcs/ stuff. Maybe
- just using ical_object_destroy() is OK there.
-
- * gui/gncal-todo.c:
- * gui/calendar-commands.c:
- * gui/eventedit.c:
- * gui/e-week-view.c:
- * gui/e-day-view.c: use refcounting for iCalObjects.
-
- * gui/e-day-view-main-item.c:
- * gui/e-day-view-top-item.c:
- * gui/e-day-view.c: try not to ever draw outside the event, even when
- the event is very small.
-
-2000-05-05 Damon Chaplin <damon@helixcode.com>
-
- * gui/e-day-view.c: don't allow recurring events to be resized or
- dragged, and don't show the resize/drag cursors. Actually it may be
- better to let the user do the resize/drag and then ask them what they
- want to do - change the single occurrence or the entire series.
-
- * gui/e-day-view-time-item.c (e_day_view_time_item_show_popup_menu):
- use e_auto_kill_popup_menu_on_hide() to destroy the popup menu.
-
- * gui/popup-menu.c: include e-gui-utils.h
-
-2000-05-04 Damon Chaplin <damon@helixcode.com>
-
- * gui/e-day-view.c (e_day_view_foreach_event_with_uid): for the long
- events pass E_DAY_VIEW_LONG_EVENT as the day. Fixes SEGV.
-
- * gui/calendar-commands.c: when we switch views, grab the focus.
-
- * gui/gnome-cal.c (gnome_calendar_tag_calendar):
- (gnome_calendar_mark_gtk_calendar_day): changed this so it uses
- cal_client_get_events_in_range(), and doesn't load any objects.
- Also just return if it isn't visible.
-
- * gui/calendar-commands.c (calendar_get_events_in_range): call
- g_list_sort() to sort the list rather than g_list_insert_sorted() for
- each element. It is much more efficient.
- Also changed it so that the co->ev_start/end fields are copied from
- the CalObjInstance rather than the parameters to the function
- (that is right, isn't it?)
- Also freed the list elements, and finally the list.
- (calendar_iterate): changed this to use cal_client_get_events_in_range
- since that is more efficient than getting all the uids and then loading
- and parsing all the events.
-
- * pcs/cal-backend.c (save): output the '... saved' message before
- freeing the string!
-
- * gui/gncal-todo.c (gncal_todo_update):
- * gui/e-week-view.c (e_week_view_update_event):
- * gui/e-day-view.c (e_day_view_update_event):
- * gui/calendar-commands.c (calendar_get_events_in_range):
- (calendar_iterate): free obj_string after it is parsed.
-
-2000-05-02 Damon Chaplin <damon@helixcode.com>
-
- * gui/calendar-commands.c (calendar_control_activate): set the active
- radio button here. Oops - it wasn't a Bonobo problem after all.
-
- * gui/popup-menu.c (popup_menu): added call to
- e_auto_kill_popup_menu_on_hide() to destroy the menu.
-
- * gui/e-week-view.c (e_week_view_show_popup_menu):
- * gui/e-day-view.c (e_day_view_on_event_right_click): ico->user_data
- isn't useful any more, since the event editor keeps its own iCalObject.
- So for now we make the menu commands available even when the event is
- being edited in the event editor.
- Also corrected misspellings of 'occurance' -> 'occurrence'.
-
- * gui/eventedit.c (event_editor_destroy): destroy the iCalObject.
- The event editor now uses its own independent iCalObject.
-
- * gui/e-week-view.c (e_week_view_on_unrecur_appointment):
- * gui/e-day-view.c (e_day_view_on_unrecur_appointment): create a new
- uid for the new single instance. I'm not sure what we should do about
- the creation/last modification times of the objects.
-
- * gui/e-week-view.c (e_week_view_on_edit_appointment):
- * gui/e-day-view.c (e_day_view_on_edit_appointment): duplicate the
- iCalObject before passing it to the event editor, since it will change
- the fields. If we don't duplicate it we won't know what has changed
- when we get the "update_event" callback.
-
- * gui/e-week-view.c (e_week_view_key_press):
- * gui/e-day-view.c (e_day_view_key_press): set the created and last_mod
- times of the new iCalObject. We may want to set the default alarm as
- well.
-
- * cal-util/calobj.c (ical_gen_uid): made this function public so we
- can generate new uids if necessary.
-
-2000-05-01 Damon Chaplin <damon@helixcode.com>
-
- * gui/gnome-cal.[hc] (gnome_calendar_get_current_time_range): new
- function to get the currently seleted time range form the current view.
-
- * gui/calendar-commands.c (display_objedit): use the above function
- to get the time for the new appointment.
-
- * gui/e-week-view.c:
- * gui/e-day-view.c: use a shallow copy of the ico when we update the
- times (when resizing/dragging). Otherwise we won't detect that the
- time has changed in the "update_event" callback.
-
- Also added functions to get the currently selected time range.
-
-2000-04-30 Seth Alves <alves@hungry.com>
-
- * pcs/icalendar-save.c (icalcomponent_create_from_ical_object): set
- attendee and contact address correctly.
-
- * pcs/cal-backend.c (icalendar_calendar_load): init priv->object_hash
- when loading.
- (cal_get_type_from_filename): if file extension is .ical, consider
- the file an ical file.
-
-2000-05-01 Damon Chaplin <damon@helixcode.com>
-
- * cal-util/calobj.c (ical_object_compare_dates): new function to see
- if the event dates have changed (including any recurrence rules).
- It is used for optimization when we get the "object_changed" signal.
- We have to do far less work if the dates are unchanged.
-
- * gui/e-week-view.c:
- * gui/e-day-view.c: only draw the selection when we have the keyboard
- focus, since the user expects to be able to type in a new event when
- the selection is shown. Also keep the selection when we lose focus,
- but just don't show it.
-
- Also quite a few changes to cope with the new client/server
- architecture.
-
- * gui/e-day-view-top-item.c (e_day_view_top_item_draw):
- * gui/e-day-view-main-item.c (e_day_view_main_item_draw):
- * gui/e-week-view-main-item.c (e_week_view_main_item_draw_day):
- only draw the selection if the widget has the keyboard focus.
-
- * gui/gnome-cal.c (mark_gtk_calendar_day): fixed so it works with
- events longer than one day. And changed the code for updating events
- in the new views.
-
-2000-04-27 Ettore Perazzoli <ettore@helixcode.com>
-
- * gui/evolution-calendar-control.c
- (init_bonobo): OAFized.
-
- * gui/main.c (main): Initialize with OAF if `USING_OAF'.
-
- * gui/evolution-calendar-control.c: New #define
- `CONTROL_FACTORY_ID', varying according to whether we are
- `USING_OAF'.
- (calendar_factory_init): Use `CONTROL_FACTORY_ID'.
-
- * gui/Makefile.am: Updated for OAF.
-
- * pcs/cal-factory.h: Explicitly #include
- "calendar/pcs/evolution-calendar.h" instead of just
- "evolution-calendar.h".
-
- * cal-client/cal-client.c (cal_client_construct) [USING_OAF]: Use
- OAF.
-
- * cal-client/client-test.c (init_corba): New function, implemented
- differently depending on `USING_OAF'.
-
-2000-04-27 <alves@hungry.com>
-
- * pcs/cal-backend.c (cal_backend_load): fix memory leak
- (save_to_vcal): same
- (save): same
- (cal_backend_load): same
-
-2000-04-26 Christopher James Lahey <clahey@helixcode.com>
-
- * cal-util/.cvsignore: Replaced libcal-util.la with *.la
-
- * pcs/.cvsignore: Added *.la and *.lo.
-
-2000-04-25 Federico Mena Quintero <federico@helixcode.com>
-
- * pcs/cal-factory.c (backend_last_client_gone_cb): Renamed from
- backend_destroy_cb. Now we use it for the "last_client_gone"
- signal from the backend. Also, unref the backend to destroy it.
- (add_backend): Connect to the "last_client_gone" signal of the
- backend.
- (cal_factory_get_n_backends): New function to query the number of
- running backends.
-
- * pcs/cal-backend.c (cal_backend_class_init): Register the new
- "last_client_gone" signal. It is emitted when the last Cal client
- goes away. It is used to notify the factory when a backend may be
- safely destroyed.
- (cal_destroy_cb): Emit the "last_client_gone" signal when the last
- client disconnects from the backend.
-
-2000-04-25 Seth Alves <alves@hungry.com>
-
- * gui/e-day-view.c (e_day_view_find_event_from_ico): compare
- iCalObjects by their UIDs instead of by their pointers.
-
- * pcs/cal-backend.c (cal_backend_destroy): don't save on destroy.
-
-2000-04-25 Ettore Perazzoli <ettore@helixcode.com>
-
- * cal-client/Makefile.am: Add `$(datadir)/idl'.
-
- * pcs/Makefile.am (idl_flags): Add `$(datadir)/idl'.
- (INCLUDES): Use `$(BONOBO_GNOME_CFLAGS)'.
-
-2000-04-25 Seth Alves <alves@hungry.com>
-
- * gui/gnome-cal.c (gnome_calendar_destroy): hook for widget
- destroy -- used to unref the CalClient so wombat knows we are gone.
- (gnome_calendar_class_init): added a class init for this widget.
-
- * gui/e-day-view.c (e_day_view_update_event): allow for null ico
-
- * gui/e-week-view.c (e_week_view_update_event): allow for null ico
-
-2000-04-24 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-client/client-test.c (main): The path to the test calendar
- changed when we moved stuff around. Users will have to tweak this
- for their CVS setup, anyways.
- (create_client): Create or load the calendar as appropriate.
- (client_destroy_cb): Exit the main loop if both clients are gone.
- (main): Connect to the "destroy" signal of the clients so that we
- can terminate the test program.
-
-2000-04-24 Seth Alves <alves@hungry.com>
-
- * pcs/icalendar.c (parse_person): allow for null CN
- (parse_person): allow for null sent_by
-
- * pcs/Makefile.am: build icalendar-test
-
- * pcs/icalendar-test.c: a test which loads an ical file and
- converts it to our internal format, and then saves it back out.
-
-2000-04-24 Damon Chaplin <damon@helixcode.com>
-
- * gui/Makefile.am: added new source files and pixmaps, and removed
- old source files, which can be deleted.
-
- * gui/e-week-view-titles-item.[hc]:
- * gui/e-week-view-main-item.[hc]:
- * gui/e-week-view-event-item.[hc]:
- * gui/e-week-view.[hc]: new files implementing the week/month views.
-
- * gui/yearview.xpm:
- * gui/monthview.xpm:
- * gui/weekview.xpm:
- * gui/workweekview.xpm:
- * gui/dayview.xpm: new pixmaps for the toolbar buttons. These aren't
- intended to be the final pixmaps.
-
- * gui/calendar-commands.c: added radio buttons to the toolbar to
- switch between the calendar views, and moved the am_pm_flag here so we
- can get rid of view-utils.c.
-
- * gui/gnome-cal.[hc]: made it a subclass of GtkVBox, rearranged the
- widgets into 2 notebooks, and added the selection_start_time and
- selection_end_time fields.
-
- * gui/goto.c: updated to use new selection time range.
-
- * gui/quick-view.c: added '#include <gtk/gtkwindow.h>' so it compiles.
-
- * gui/e-day-view.[hc]: changed the interface to support the new
- selection time range, got rid of a few debugging messages and changed
- a few bits.
-
-2000-04-21 Seth Alves <alves@hungry.com>
-
- * pcs/icalendar-save.c: start on code to do the opposite of
- icalendar.c (convert from iCalObjects to libical's icalcomponents).
-
- * gui/calendar-commands.c (calendar_control_activate): moved
- "About Calendar" into the View menu so it shows up.
-
-2000-04-20 Seth Alves <alves@hungry.com>
-
- * gui/gnome-cal.c (gnome_calendar_changed_cb): new function: callback
- for listener's object updated signal.
- (gnome_calendar_object_removed_cb): new function: callback for
- listener's object removed signal.
- (gnome_calendar_new): hook up listener's "obj_updated" and
- "obj_removed" signals so if evolution is running twice,
- they will both see changes right away.
- (gnome_calendar_object_changed): don't call update_all, since
- it will be called by the listener.
- (gnome_calendar_remove_object): don't call update_all
- (gnome_calendar_add_object): don't call update_all
-
- * gui/gncal-full-day.c (child_realize): create fullday's gcs
- even if pixmap_bell has already been created. this was
- causing crashes if the calendar was run twice.
-
-2000-04-19 Seth Alves <alves@hungry.com>
-
- * gui/eventedit.c (ee_rp_init_rule): changed the order around
- a bit to avoid a Gtk-CRITICAL crash
-
- * gui/gncal-todo.c (gncal_todo_update): fixed code to populate
- the todo clist
-
- * cal-client/cal-client.c (cal_client_get_uids): don't check
- type against CALOBJ_TYPE_ANY since it will always match.
- (cal_client_get_uids): same (re: CALOBJ_TYPE_ANY)
-
- * pcs/cal-backend.c (build_uids_list): same (re: CALOBJ_TYPE_ANY)
-
- * pcs/cal.c (Cal_get_uids): same (re: CALOBJ_TYPE_ANY)
-
- * pcs/cal-backend.c (remove_object): don't call save from here
- because in all cases the caller of remove_object calls save
-
- * gui/calendar-commands.c (calendar_set_uri): calls gnome_calendar_open
- instead of checking on disk and calling load or create.
-
- * gui/gnome-cal.c (gnome_calendar_object_changed): fixed to use
- cal_client_update_object -- editing and dragging events works again
- (gnome_calendar_open): collapsed gnome_calendar_load and
- gnome_calendar_create into this function. added new type
- GnomeCalendarOpenMode which has the value CALENDAR_OPEN or
- CALENDAR_OPEN_OR_CREATE.
-
- * gui/evolution-calendar-control.c (calendar_properties_init): create
- a property bag for this control
- (set_prop): callback for property sets
- (get_prop): callback for proprety gets
-
- * gui/calendar-commands.c (calendar_set_uri): new function,
- called when the "calendar_uri" property is set on the calendar-
- control's property bag.
-
-2000-04-18 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/Makefile.am (INCLUDES): Fix include path.
-
-2000-04-16 Federico Mena Quintero <federico@helixcode.com>
-
- * pcs/cal-factory.h (CalFactoryClass): We have a new
- "last_calendar_gone" signal that Wombat can use to terminate
- itself properly.
-
- * pcs/cal-factory.c (cal_factory_class_init): Register the
- "last_calendar_gone" signal.
- (backend_destroy_cb): Emit the "last_calendar_gone" signal instead
- of killing the factory.
-
- * pcs/Makefile.am: Added $(CORBA_GENERATED) to BUILT_SOURCES.
- (INCLUDES): Make the log domain be "wombat-pcs".
-
-2000-04-17 Seth Alves <alves@hungry.com>
-
- * pcs/cal-backend.c (add_object): removed implicit save, since
- we don't want to save as we load from disk.
- (cal_backend_update_object): added a call to save, since it
- isn't done by add_object now.
-
-2000-04-16 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-util/Makefile.am: Renamed library from libcalutil to
- libcal-util, to be consistent with libcal-client. Install header
- files in $(includedir)/evolution/cal-util.
- (INCLUDES): Add "cal-util" log domain for glib.
- (libcal_clientincludedir): The header files are now installed in
- $(includedir)/evolution/cal-client.
-
- * cal-util/cal-util.h: Fix includes.
-
- * cal-client/client-test.c: Fix includes.
-
- * pcs/Makefile.am: Create libpcs.a, not a shared library, because
- it is for internal use by Wombat only. The header files should
- not be installed, either. Removed all the old Tlacuache stuff.
-
- * gui/Makefile.am (EXTRA_DIST): We no longer distribute
- gncal.desktop.
- (evolution_calendar_INCLUDES): Add "calendar-gui" for the glib log
- domain.
-
- * gui/*.[ch]: Fix cal-util and cal-client includes.
-
- * pcs/Makefile.am (INCLUDES): Added "pcs" log domain for glib.
-
- * pcs/*.[ch]: Fix cal-util includes.
-
-2000-04-11 Chris Toshok <toshok@helixcode.com>
-
- * pcs/icalendar.c (icaltime_to_timet): use HAVE_TIMEZONE to switch
- between linux's timezone variable and *bsd's method of getting the
- gmt offset.
-
-2000-04-10 Seth Alves <alves@hungry.com>
-
- * pcs/cal-backend.c (save_to_vcal): create and save an actual
- vcalendar instead of a list of vcal objects.
-
-2000-04-10 Damon Chaplin <damon@helixcode.com>
-
- * gui/Makefile.am (INCLUDES): moved srcdir directories to the top so
- we search headers in the evolution tree before installed headers.
- (Otherwise when you do 'make install' lots of files in gui/ get
- rebuilt, since they depend on the installed cal-client.h which has just
- been updated.)
-
-2000-04-09 Seth Alves <alves@hungry.com>
-
- * gui/gnome-cal.c (gnome_calendar_load): catch cal_loaded signal
- on the cal client.
- (gnome_calendar_load_cb): callback for cal_loaded signal. moved
- gnome_calendar_update_all from gnome_calendar_load to here.
-
- * gui/calendar-commands.c: minor cleanups
-
- * pcs/cal-backend.c (save_to_vcal): copied code from gnome-pim
- to write vcal to a file
- (save): filled it with more gnome-pim code
- (add_object): call save () after changing
- (remove_object): same
- (cal_backend_create): same
- (cal_backend_remove_object): same
-
-2000-04-08 Christopher James Lahey <clahey@helixcode.com>
-
- * gui/Makefile.am: Removed linking with libetable and libeminicard
- since they weren't being used.
-
-2000-04-08 Seth Alves <alves@hungry.com>
-
- * gui/gnome-cal.c (gnome_calendar_create): new function:
- friendly wrapper for cal_client_create_calendar
-
- * gui/calendar-commands.c (new_calendar): call gnome_calendar_create
- if no filename is provided
-
- * gui/prop.c (properties): calendar is a frame
-
- * gui/calendar-commands.c (calendar_control_activate): sort out the
- menus a bit, more of them show up now.
-
- * gui/Makefile.am: don't build library or test, just the bonobo control
-
- * gui/gncal-todo.c (simple_todo_editor): calendar is a frame instead
- of a window, now.
-
- * gui/gnome-cal.c (gnome_calendar_new): same
-
- * gui/goto.c (goto_dialog): same
-
-2000-04-06 Seth Alves <alves@hungry.com>
-
- * gui/calendar-commands.c (calendar_control_activate): removed
- uih from the argument list, added cal. use cal as user_data
- in callbacks rather than the control.
- (calendar_control_deactivate): removed uih from argument list
-
-2000-04-05 Seth Alves <alves@hungry.com>
-
- * gui/calendar-commands.c (setup_menu): removed
- (setup_appbar): removed
- (calendar_control_activate): new function -- does the work
- that setup_appbar and setup_menu used to do.
- (calendar_control_deactivate): undoes what calendar_control_activate
- does by removing the toolbar items and menu items.
-
- * gui/Makefile.am: build test-calendar-widget and evolution-calendar,
- common stuff is in a library
-
- * gui/gnome-cal.c (gnome_calendar_get_type): made the calendar widget
- based on a gtk_frame rather than a gnome_app
-
- * gui/calendar-commands.c: split out some of main.c
-
- * gui/evolution-calendar-control.c: bonobo bung so evolution
- can use the calendar widget
-
-2000-04-01 Matt Loper <matt@helixcode.com>
-
- * pcs/.cvsignore: Added *.lo.
-
-2000-03-30 Seth Alves <alves@hungry.com>
-
- * gui/main.c (calendar_get_events_in_range):
- cal_client_get_events_in_range returns a list of CalObjInstance *, not
- a list of (char *) uid.
-
- * Makefile.am (SUBDIRS): readded the gui directory
-
- * gui/main.c: temporarily added alarm_defaults back in,
- since the calendar doesn't link without it
-
-2000-03-29 Matt Loper <matt@helixcode.com>
-
- * Makefile.am: remove the gui directory, which doesn't compile.
-
-2000-03-28 Matt Loper <matt@helixcode.com>
-
- * pcs/Makefile.am: create a libpcs.la library, for use in the
- wombat.
-
-2000-03-28 Seth Alves <alves@hungry.com>
-
- * gui/Makefile.am (LINK_FLAGS): added libeutil.la and libetext.a
-
- * gui/main.c (calendar_iterate): switch from string_to_ical_object to
- ical_object_find_in_string
- (calendar_get_events_in_range): same
- (session_save_state): commented out references
- to gcal->client->filename
-
-2000-03-27 Federico Mena Quintero <federico@helixcode.com>
-
- * pcs/cal-backend.c (cal_backend_get_object): Use
- ical_object_to_string().
-
- * cal-util/calobj.c (ical_object_to_string): Moved over from
- pcs/cal-backend.c (was string_from_ical_object).
- (get_calendar_base_vobject): Likewise, moved over from
- pcs/cal-backend.c.
-
- * cal-util/cal-util.c: Removed string_to_ical_object(); the
- correct function is in calobj.[ch], called
- ical_object_find_in_string(). Removed ical_object_to_string,
- since we now implement it in calobj.c.
-
- * cal-util/calobj.c: Removed ical_object_new_from_string(); see
- above.
-
- * idl/evolution-calendar.idl (CalObjInstance): Calendar object
- instances now contain only the UID for the object, not the whole
- string representation of the object. This allows clients to
- implement caching of objects if they wish.
-
- * pcs/cal.c (Cal_get_events_in_range): Likewise.
-
- * pcs/cal-backend.c (build_event_list): Likewise.
-
- * cal-client/cal-client.c (cal_client_get_events_in_range):
- Likewise.
-
- * cal-util/cal-util.h (CalObjInstance): Likewise.
-
- * cal-util/cal-util.c (cal_obj_instance_list_free): Likewise.
- (cal_obj_uid_list_free): Assert that the UIDs in the list are not
- NULL.
-
- * pcs/tlacuache.gnorba (repo_id): The calendar factory also
- supports the Unknown interface.
-
-2000-03-17 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/e-day-view.c: Fix includes.
- (e_day_view_on_delete_occurance): Do not call save_default_calendar().
- (e_day_view_on_delete_appointment): Likewise.
- (e_day_view_on_unrecur_appointment): Likewise.
- (e_day_view_finish_long_event_resize): Likewise.
- (e_day_view_finish_resize): Likewise.
- (e_day_view_key_press): Likewise.
- (e_day_view_on_editing_stopped): Likewise.
- (e_day_view_on_top_canvas_drag_data_received): Likewise.
- (e_day_view_on_main_canvas_drag_data_received): Likewise.
-
-2000-03-13 Damon Chaplin <damon@helixcode.com>
-
- * gui/e-day-view*.[hc]: new files for the Day/Work-Week views.
-
-2000-03-12 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/main.c (gnome_calendar_locate): Removed function now that it
- is no CORBA server in the GUI.
- (save_default_calendar): Removed function. Now the personal
- calendar server will take care of saving modified calendars when
- appropriate.
- (close_cmd): Do not call unregister_calendar_services().
-
- * gui/eventedit.c (ee_ok): Do not save the calendar.
-
- * gui/gncal-day-panel.c (day_view_range_activated): Likewise.
-
- * gui/gncal-todo.c (ok_button): Likewise.
- (delete_todo): Likewise.
-
- * gui/gncal-full-day.c (delete_occurance): Likewise.
- (delete_appointment): Likewise.
- (unrecur_appointment): Likewise.
- (child_focus_out): Likewise.
- (update_from_drag_info): Likewise.
-
- * gui/gnome-cal.c (gnome_calendar_new): Removed obsolete call to
- create the CORBA server.
-
- * gui/gnome-cal.h (GnomeCalendar): Renamed `calc' field to
- `client'.
-
- * cal-client/cal-client.h (CalClient): Removed filename and
- corba_server fields.
-
-2000-03-10 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/main.c (main): Do not pass the INIT_SERVER flag to
- gnome_CORBA_init_with_popt_table(). Check for exceptions
- properly.
- (main): Initialize Bonobo.
- (main): Call process_dates() to parse the dates from the command
- line before we dump the events or the TODOs.
- (main): Use bonobo_main() instead of gtk_main().
-
- * cal-util/calobj.c (ical_new): Initialize the alarm types here.
- Do not call default_alarm() anymore, since that is a GUI issue.
- (default_alarm): Removed function.
- (alarm_defaults): Removed defaults data.
-
- * pcs/tlacuache.c (calendar_notify): Removed stubs for
- alarm_defaults, calendar_notify(), debug_alarms.
-
-2000-03-09 Federico Mena Quintero <federico@helixcode.com>
-
- * gui/Makefile.am: Removed the corba-cal stuff. Commented out the
- Pilot conduit stuff for now.
-
- * gui/calendar.c: Random #ifdefs to make it build, although this
- file is going away.
-
- * gui/Makefile.am: Removed referenes to calobj.[ch] and timeutil.[ch].
-
- * gui/calendar-conduit.c: Fixup includes.
-
- * gui/calendar-conduit.h: Fixup includes.
-
-2000-03-09 Seth Alves <alves@hungry.com>
-
- * gui/gnome-cal.h: replaced "Calendar *cal" with "CalClient *calc"
- in the GnomeCalendar struct.
-
- * gui/*.c: tracked change from Calendar * to CalClient
-
- * gui/main.c: moved alarm_defaults from here to cal-util/calobj.c
- (calendar_get_events_in_range): pulled this out of calendar.c and
- fixed it up to use cal-client stuff. i'm not sure where to put it yet.
-
- * gui/main.c (calendar_iterate): pulled this one out of calendar.c also
-
-2000-03-07 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-client/Makefile.am: Removed cal-client-alarm.[ch] from the
- list of sources. This was a miscommunication on our part.
-
-2000-03-05 Seth Alves <alves@hungry.com>
-
- * cal-client/cal-client-alarm.c: stubs for client side
- access to alarm structures. this will probably change,
- since i don't know what i'm doing.
-
- * cal-util/alarm-enums.h: enums for alarms needed by
- both the client and the server
-
- * remaining source files in calendar/... have been moved
- to calendar/gui.
-
- * gui/alarm.c: start to decouple the view from the model
- in the alarm editing code
-
-2000-03-03 Seth Alves <alves@hungry.com>
-
- * cal-util/Makefile.am: new file -- things shared between
- the client and server go in this directory
-
- * calobj.c calobj.h icalendar.c icalendar.h
- timeutil.c timeutil.h cal-util.c cal-util.h where moved
- backend stuff went into pcs. shared stuff went into
- cal-util.
-
-2000-03-02 Federico Mena Quintero <federico@helixcode.com>
-
- At this point the calendar client and personal calendar server
- files were moved to the idl/, cal-client/, and pcs/ directories.
-
- * idl/Makefile.am: New file.
-
- * cal-client/Makefile.am: New file. Moved the libcal-client stuff
- from calendar/Makefile.am to here.
-
- * pcs/Makefile.am: New file. Moved the tlacuache stuff from
- calendar/Makefile.am to here.
-
- * Makefile.am (SUBDIRS): Added the idl and cal-client directories.
-
- * calendar.h: Removed the references to cal-backend.h and its
- stuff. This file is going away soon!
-
- * icalendar.c: #include <config.h>. Also, we don't need to
- include cal-backend.h or gnome.h.
-
- * icalendar.h: Protect from multiple inclusions.
-
-2000-03-01 Federico Mena Quintero <federico@helixcode.com>
-
- * Makefile.am: Use the gnome-config flags for orbit-idl.
- Create a libcal-client library with the calendar client object.
-
-2000-02-29 Federico Mena Quintero <federico@helixcode.com>
-
- * Makefile.am: Removed stale rule for the conduit.
-
-2000-02-21 Matt Loper <matt@helixcode.com>
-
- * .cvsignore: Added *.lo.
-
-2000-02-19 Matt Loper <matt@helixcode.com>
-
- * .cvsignore: Added tlacuache and tl-test.
-
-2000-02-18 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * Makefile.am (INCLUDES): Use BONOBO_VFS_GNOME_CFLAGS instead of
- GNOMEUI_INCLUDES, as we use Bonobo and VFS.
-
-2000-02-17 Seth Alves <alves@hungry.com>
-
- * cal-backend.h: moved CalendarFormat type def here
-
- * cal-backend.c (cal_backend_load): if extension suggests
- an ical file, attempt to load an iCal file.
- (cal_get_type_from_filename): returns CAL_ICAL if file
- extension is 'ics' or 'ifb', else returns CAL_VCAL
- (icalendar_calendar_load): moved this here from
- icalendar.c because it needs to call the static function
- add_object.
-
-2000-02-17 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-client.c (cal_client_remove_object): Implemented.
-
- * cal.c (cal_notify_remove): Implemented.
- (Cal_remove_object): Implemented.
- (cal_get_epv): Fill in the remove_object field in the epv.
-
- * cal-backend.c (cal_backend_remove_object): Implemented.
- (notify_remove): New function to notify clients that an object was
- removed.
-
-2000-02-16 Russell Steinthal <rms39@columbia.edu>
-
- * calobj.[ch], eventedit.c, main.c: Change iCalObject.organizer
- from char* to iCalPerson*
-
- * calobj.[ch]: Change iCalObject.related from list of char* to
- list of iCalRelation*; assorted related fixes
-
- * icalendar.c: interface between libical and the gnomecal
- internal representation
-
-2000-02-11 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-client.c (cal_client_update_object): Implemented.
-
- * cal.c (cal_notify_update): New function to notify the listener
- about an updated object.
- (Cal_update_object): Implemented.
- (Cal_get_uids): set_release() the sequence to TRUE.
- (Cal_get_events_in_range): Likewise.
-
- * cal-backend.c (remove_object): New function to remove objects
- from a calendar backend.
- (cal_backend_update_object): New public function to update an
- object and notify clients about it.
-
- * evolution-calendar.idl (Cal): Added update_object() and
- delete_object() methods.
- (Listener): Removed the obj_changed method and renamed obj_added
- to obj_updated. We now only have updated and removed notifiers.
-
- * cal-listener.[ch]: Removed the "changed" notification code.
- Changed the "added" notification code to the "updated"
- notification.
-
- * cal-client.c: Likewise.
-
- * tlacuache.c (create_cal_factory): Connect to "destroy" on the
- factory and exit the main loop when the factory is destroyed.
-
- * cal-factory.c (backend_destroy_cb): New callback used when a
- backend is destroyed. Removes the backend from the factory's hash
- table and unrefs the factory if all backends go away.
- (add_calendar_client): Free the environment.
-
- * cal.c (cal_new): Use bonobo_object_unref() if we fail to
- initialize.
-
- * cal-listener.c (cal_listener_new): Likewise.
-
- * layout.c (layout_events): Plug li.partition memory leak.
-
-2000-02-10 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-backend.c (cal_backend_add_cal): Connect to the Cal's
- destroy signal.
- (cal_backend_remove_cal): Killed function now that removal of Cal
- objects is done in their destroy callback.
- (cal_destroy_cb): New callback to remove a Cal from the backend's
- list of clients. Also, the backend destroys itself when there are
- no more clients connected to it.
- (save): New placeholder function to save a backend.
- (destroy): New function to destroy a backend's data.
- (cal_backend_destroy): Save the calendar and destroy it.
-
- * cal.c (cal_destroy): Reset the priv->backend to NULL.
-
- * cal-factory.c (add_calendar_client): There is no need to call
- cal_backend_remove_cal(); we can now just destroy the Cal object.
- (create_fn): Make sure we always unref the URI.
- (load_fn): Move the URI unref to the end of the function for
- safety.
-
- * cal-factory.c (add_calendar_client): Unref the Cal only if
- notification of the listener was unsuccessful. Otherwise, the
- calendar user agent (Listener side) keeps the reference.
-
- * tl-test.c (list_uids): Free the calobj.
-
- * cal-client.c (cal_loaded_cb): Use bonobo_object_unref() to get
- rid of the listener.
- (load_or_create): Likewise.
- (destroy_factory): New function to get rid of the factory.
- (destroy_listener): New function to get rid of the listener.
- (destroy_cal): New function to get rid of the calendar client
- interface object.
- (cal_client_destroy): Free all resources.
- (cal_client_get_object): CORBA_free() the calobj string. Boy, I
- love memprof.
-
- * cal-listener.c (cal_listener_destroy): Reset the priv->cal to
- CORBA_OBJECT_NIL.
-
- * cal-backend.c (cal_backend_remove_cal): Do not unref the Cal,
- since the calendar user agent owns it.
- (cal_backend_add_cal): Do not ref the Cal, since the calendar user
- agent owns it.
-
- * cal-factory.c (add_calendar_client): Use bonobo_object_unref()
- to get rid of the calendar client interface object.
-
- * calobj.c (ical_object_create_from_vobject): Duplicate the
- default "PUBLIC" string.
-
-2000-02-09 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-factory.c (cal_factory_load): Added documentation comment.
- (load_fn): Do not print a message if the backend could not be
- loaded due to a non-fatal error.
- (queue_load_create_job): Moved the stuff from cal_factory_load()
- to here. Now this function serves to queue load or create
- requests.
- (cal_factory_load): Use queue_load_create_job().
- (cal_factory_create): Implemented; use queue_load_create_job().
- (create_fn): New job handler for creating new calendars.
- (create_backend): New function to create a new backend with a new
- calendar.
- (add_backend): New helper function to add backends to the
- factory's hash table.
- (load_backend): Use add_backend() instead of adding the backend by
- ourselves.
-
- * cal-client.c (load_or_create): Moved the functionality from
- cal_client_load_calendar() to here, and added an option to create
- a new calendar instead of loading an existing one.
- (cal_client_load_calendar): Use load_or_create().
- (cal_client_create_calendar): Implemented.
-
- * cal-backend.c (cal_backend_create): Implemented.
-
- * evolution-calendar.idl (LoadStatus): Added an IN_USE error for
- create requests.
-
- * cal-listener.h (CalListenerLoadStatus): Added CAL_LISTENER_LOAD_IN_USE.
-
- * cal-listener.c (Listener_cal_loaded): Convert the IN_USE error.
-
- * cal-client.h (CalClientLoadStatus): Added CAL_CLIENT_LOAD_IN_USE.
-
- * cal-client.c (cal_loaded_cb): Handle CAL_LISTENER_LOAD_IN_USE.
-
- * tl-test.c: New test program for the calendar client side; it
- also exercises the server side by sending commands to it.
-
- * Makefile.am: Added the tl-test program.
-
- * tlacuache.gnorba: Updated.
-
- * tlacuache.c (create_cal_factory): Use the right GOAD id.
-
- * cal-client.c (cal_client_construct): Use the right GOAD id.
-
-2000-02-08 Federico Mena Quintero <federico@helixcode.com>
-
- * evolution-calendar.idl (Cal): Added get_uids() method to get a
- list of UIDs based on object types.
-
- * cal-backend.c (cal_backend_get_uids): Implemented get_uids() in
- the backend.
-
- * cal.c (Cal_get_uids): Implemented get_uids() method.
-
- * cal-client.c (cal_client_get_uids): Implemented client-side
- function.
-
- * cal-util.c (cal_obj_instance_list_free): Doh. Free the list,
- not the last link.
- (cal_obj_uid_list_free): New function to free a list of UIDs.
-
- * GnomeCal.idl (Repository): Removed unused method
- get_object_by_id_list(). This is just for cleanup purposes and to
- remind me exactly of what needs to be moved over to
- evolution-calendar.idl.
- (Repository): Removed unused get_objects() method.
-
- * corba-cal.c (init_calendar_repo_class): Removed the unused
- get_objects method.
-
- * calobj.h (CalObjFindStatus): New status value enumeration for
- the find function.
-
- * calobj.c (ical_object_find_in_string): New function to parse a
- complete calendar and find a calendar object in it. This should
- be used instead ical_object_new_from_string() in the future.
-
- * evolution-calendar.idl (CalObjInstance): Added an uid field.
- Now the idea is that whenever calendar object strings are passed
- around, their UIDs are passed along with them so that the actual
- object can be pulled from the whole VCAL object using its UID to
- identify it.
-
- * cal-util.h (CalObjInstance): Added uid field.
-
- * cal-util.c (cal_obj_instance_list_free): Free the UIDs.
-
- * cal-backend.c (build_event_list): Store the object's UID in the
- instance structure.
-
- * cal.c (Cal_get_events_in_range): Copy the UID field to the CORBA
- structure.
-
- * cal-client.c (cal_client_get_events_in_range): Copy the UID
- field from the CORBA structure.
-
- * main.c (gnome_cal_file_menu): Removed unfinished html-month stuff.
-
- * Makefile.am (gnomecal_SOURCES): Removed html-month.c.
-
- * gnome-cal.c: #include "alarm.h"
- (mail_notify): Made static.
-
- * alarm.h: #include "calobj.h"
-
- * corba-cal-factory.h (init_corba_server): Fixed prototype.
-
- * quick-view.c (create_items_for_event): Made static.
-
- * gncal-todo.c (column_resized): Made static.
-
- * layout.c (find_index): Made static.
-
-2000-02-08 Federico Mena Quintero <federico@helixcode.com>
-
- * evolution-calendar.idl (CalObjInstance): New struct to wrap
- instances of calendar objects for recurrencies and alarms.
- (Cal::get_events_in_range): New method to get ocurring and
- recurring events by time range.
-
- * cal-backend.c (cal_backend_get_events_in_range): New function to
- get a list of event instances in a time range.
- (string_from_ical_object): New internal function.
- (cal_backend_get_object): Use string_from_ical_object() instead of
- doing everything ourselves.
- (cal_backend_get_events_in_range): New function to get a list of
- the events that occur or recur in a specified time range.
-
- * cal-client.c (cal_client_get_events_in_range): Implemented
- client-side function.
-
- * cal-util.h:
- * cal-util.c: New files with utilities and types common to the
- client and server parts.
- (CalObjInstance): New structure to hold an instance of an actual
- occurrence, recurrence, or alarm trigger of a calendar object.
- (cal_obj_instance_list_free): New function to free a list of
- calendar object instances.
-
- * cal.c (Cal_get_events_in_range): Implemented new method.
-
- * corba-cal.c (cal_repo_get_updated_objects): Free `str' with
- free(), not g_free(), since calendar_get_as_vcal_string() uses
- writeMemVObject(), which uses realloc(). Fixed in gnome-pim as
- well.
-
-2000-02-04 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-backend.c (get_calendar_base_vobject): New function to
- create the base VObject for a calendar.
- (cal_backend_get_object): Create the base calendar and add the
- sought object to it, then stringify it.
-
- * evolution-calendar.idl (Listener::obj_added
- Listener::obj_changed): Now these pass in just the UIDs, not the
- complete objects.
-
- * cal-listener.c (Listener_obj_added): Changed to pass in the uid,
- not the object.
- (Listener_obj_changed): Likewise.
-
- * cal-client.h (CalClientClass): Made the obj_added and
- obj_changed signals take in the UIDs, not the full objects.
-
- * cal-client.c (obj_added_cb): Likewise.
- (obj_changed_cb): Likewise.
-
-2000-02-04 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-backend.c (CalBackendPrivate): Renamed the event_hash field
- to object_hash. Now we hash all the calendar's objects here based
- on their UIDs.
- (ensure_uid): New function to create UIDs for calendar objects
- that don't have them.
- (add_object): Ensure the object has an UID before inserting it in
- the calendar.
- (cal_backend_get_object): New function.
-
-2000-02-03 Federico Mena Quintero <federico@helixcode.com>
-
- * evolution-calendar.idl (Cal): Added the get_object() method.
-
- * cal-client.c (cal_client_get_object): New function to get a
- calendar object by its UID.
-
- * cal.c (Cal_get_object): Implemented.
-
- * cal-backend.c (cal_backend_get_object): New unfinished backend
- function. We need some reorganizing of how the calendar objects
- are stored.
-
-2000-02-02 Federico Mena Quintero <federico@helixcode.com>
-
- * Makefile.am (gnomecal_SOURCES): Added the CORBA generated
- sources.
-
-2000-02-01 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-client.c (cal_loaded): Handle the cal_loaded signal from the
- listener. Store the calendar client interface object, and emit
- our own cal_loaded signal.
- (cal_client_load_calendar): Connect to the listener's signals.
- (cal_client_class_init): Added the "obj_added", "obj_removed",
- öbj_changed" signals.
- (obj_added_cb): Handle the signal from the listener.
- (obj_removed_cb): Likewise.
- (obj_changed_cb): Likewise.
-
-2000-01-30 Federico Mena Quintero <federico@helixcode.com>
-
- * Makefile.am (gnomecal_SOURCES): Added cal-client.[ch] and
- cal-listener.[ch].
-
-2000-01-30 Federico Mena Quintero <federico@helixcode.com>
-
- * evolution-calendar.idl: Changed the namespace from
- GNOME::Calendar to Evolution::Calendar.
- (Listener::LoadStatus): Fixed SUCESSS -> SUCCESS typo. And I
- never noticed it in the implementation. Ain't M-/ grand?
-
- * Makefile.am: Changed ocurrences of gnome-calendar.idl to
- evolution-calendar.idl.
-
- * *.[ch]: Changed GNOME_Calendar_foo identifiers to
- Evolution_Calendar_foo.
-
-2000-01-25 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-client.c cal-client.h: New files with the calendar client
- object.
-
-2000-01-25 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-factory.c (CalFactory_load): Check that the listener is not
- nil and emit and exception if it is.
-
- * gnome-calendar.idl (CalFactory::load CalFactory::create): Now
- these raise the NilListener exception.
-
- * tlacuache.c (calendar_notify): Error stub for alarms.
- (alarm_defaults): Stub array.
- (debug_alarms): Stub variable.
- (main): Initialize gnome-vfs.
-
-2000-01-24 Federico Mena Quintero <federico@helixcode.com>
-
- * tlacuache.c: New main module for the Tlacuache personal calendar
- server.
-
- * tlacuache.gnorba: New gnorba file for Tlacuache, the GNOME
- personal calendar server.
-
- * Makefile.am: Added the stuff necessary to build Tlacuache.
-
- * cal.c (Cal_get_uri): Convert the URI to a string before
- returning it.
-
- * cal-factory.c (CalFactory_create): Doh, this function is void.
-
- * job.c (job_add): Use g_idle_add(), not gtk_idle_add().
-
-2000-01-24 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-backend.c (cal_backend_remove_cal): New function to remove a
- calendar client interface object from a backend.
- (cal_backend_load): Convert the URI to string and use
- Parse_MIME_FromFileName(). The conversion is not very smart,
- though.
-
- * cal-factory.c (load_backend): Moved most of the error handling
- upstream to load_fn().
- (load_fn): Handle failure in case the backend could not be loaded.
- (cal_factory_destroy): Free the backends and the backend hash
- table.
- (add_calendar_client): Implemented. We create a Cal client
- interface object and attach it to the backend, and we notify the
- listener.
-
-2000-01-22 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-factory.c (lookup_backend): Renamed from lookup_calendar().
- Also, return a backend instead of a Cal client object.
-
- * cal-backend.c (cal_backend_load): Take in a GnomeVFSURI, not a
- string.
-
- * cal-listener.c (Listener_cal_loaded): Pass the load status to
- the signal.
- (cal_listener_destroy): Better error checking.
- (cal_listener_new): Better error checking.
-
- * cal-listener.h (CalListenerLoadStatus): New enum for the load
- status of a calendar.
- (CalListenerClass): Added the status argument to the cal_loaded
- signal.
-
- * gnome-calendar.idl (cal_loaded): Added a load status code.
-
- * cal-backend.h (CalBackendLoadStatus): Renamed from
- CalBackendLoadResult.
-
-2000-01-18 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-backend.c cal-backend.h: Moved the calendar backend here.
- This is the actual calendar-handling object.
- (load_from_vobject): Moved over from calendar.c. Modified to use
- a CalBackend instead of the old Calendar structure.
- (add_object): Likewise.
-
- * cal.c: Now the Cal object is just a calendar client interface
- object; we use it as a "viewport" onto a CalBackend. This also
- lets us do correct resource management.
-
- * cal-common.h: New file with common forward declarations; we
- can't have circular dependencies between headers.
-
-2000-01-18 Federico Mena Quintero <federico@helixcode.com>
-
- * cal-factory.c (cal_factory_load): Queue a load job.
- (load_fn): Load job handler. Lookup the calendar by URI, load it
- if it is not loaded, or just report it to the new listener if it is.
-
- * job.c job.h: New files with a simple job queue manager.
-
- * gnome-calendar.idl (Listener::cal_loaded): Do not return the
- whole calendar object string. The client will be able to query
- the calendar for the events it needs.
-
- * cal-listener.c (Listener_cal_loaded): Ref the calendar GNOME
- object. We unref it when the listener is destroyed.
-
-2000-01-17 Federico Mena Quintero <federico@helixcode.com>
-
- The files from the gncal directory of the gnome-pim module on CVS
- were moved here, to evolution/calendar, in preparation for the
- Evolution work. The calendar is being split into a model/view
- architecture. The model is a personal calendar server (PAS): it
- provides storage, notification, and event generation; the
- views/controllers are the calendar user agents and things like
- Pilot synchronizers.
-
-2000-01-11 Federico Mena Quintero <federico@helixcode.com>
-
- * cal.c: Removed the CORBA listener methods, adjusted for the new
- IDL.
-
- * cal-listener.c (cal_listener_init): Create the private
- structure. In it we hold a reference to the calendar the listener
- is watching.
- (cal_listener_destroy): Destroy the private structure and unref
- the calendar.
- (Listener_cal_loaded): Stuff the calendar into our private data.
- (Listener_obj_added): Adjusted for new IDL.
- (Listener_obj_removed): Likewise.
-
- * gnome-calendar.idl: New IDL for the personal calendar server.
-
- * cal.h cal.c: New files with the calendar object.
-
- * cal-listener.h cal-listener.c: New files with the calendar
- listener object.
-
- * cal-factory.h cal-factory.c: New files with the calendar factory
- object.
-
-2000-01-09 Eskil Heyn Olsen <deity@eskil.dk>
-
- * Makefile.am: Changes to remove todo capplet stuff from distro.
-
-2000-01-08 Vadim Strizhevsky <vadim@optonline.net>
-
- * calendar-conduit-control-applet.c: Added pilotID argument to
- gpilotd_conduit_mgmt_new.
-
-
-2000-01-05 Eskil Heyn Olsen <deity@eskil.dk>
-
- * GnomeCal.idl: Added an argument to get_number_of_objects, so you
- can choose which state the object should have
- (any/new/modified/...). Will also add one to choose type
- (event/journal etc).
-
- * corba-cal.c (cal_repo_get_number_of_objects): Implemented the
- new version of get_number_of_objects.
-
- * calendar-conduit.c (pre_sync): Calls various
- gnome_pilot_conduit_standard_abs_set_num_yadayda to get progress bars.
-
-2000-01-04 Eskil Heyn Olsen <deity@eskil.dk>
-
- * calendar-conduit.c (start_calendar_server): Let's not call
- g_error, but g_warning instead.
- (pre_sync): Get record numbers info, total, new, deleted etc, and
- tell gpilotd.
-
-1999-12-31 Eskil Heyn Olsen <deity@eskil.dk>
-
- * eventedit.c (ee_store_recur_end_to_ical): Adds 86400 secs (1
- day) to the date chooses by the user. This ensures the recurrence
- also occurs on that date.
- (ee_rp_init_ending_date): And subtracts 86400 secs when about to
- redisplay the box.
-
- * calendar.h: Added an argument to calendar_new, to enable certain
- features, such as initing alarms or nor.
-
- * calendar.c (calendar_new): Implemented support for the
- CALENDAR_INIT_ALARMS option to calendar_new.
-
- * corba-cal.c (cal_repo_get_updated_objects): Added
- CALENDAR_INIT_ALARMS to calendar_new calls.
-
- * main.c: Added CALENDAR_INIT_ALARMS to calendar_new calls. This
- should probably be CALENDAR_INIT_NIL, but I'm not sure, guess
- steintr should check it.
-
- * gnome-cal.c: Added CALENDAR_INIT_ALARMS to calendar_new calls.
-
- * calendar-pilot-sync.c: Added CALENDAR_INIT_NIL to calendar_new calls.
-
-1999-12-10 Russell Steinthal <rms39@columbia.edu>
-
- * eventedit.c (ee_create_ae): Fix sensitivity bug when used to
- create default alarm box (widgets in that box should always be
- sensitive, even if the enabled checkbutton is not set)
-
-1999-12-08 Eskil Heyn Olsen <deity@eskil.dk>
-
- * calendar-conduit-control-applet.c (setSettings): Capplets now
- sets first_sync on enable, this should make the conduit copy old
- entries from the pilot to gnomecal.
-
-1999-12-07 Eskil Heyn Olsen <deity@eskil.dk>
-
- * calendar-conduit.c (pre_sync): Check if local store is
- empty. If, force slow sync.
-
- * GnomeCal.idl (GNOME): Added get_number_of_objects.
-
- * corba-cal.c (cal_repo_get_number_of_objects): implemented the
- get_number_of_objects.
-
- * calendar-conduit-control-applet.c (setStateCfg): Fixed bug that
- caused the capplet to always set the sync action to Disable upon start.
-
-1999-12-05 Eskil Heyn Olsen <deity@eskil.dk>
-
- * Makefile.am (Conduits_second_DATA): Also install .desktop files
- for conduit capplets in the gnome/apps menu dir.
-
-1999-12-04 Eskil Heyn Olsen <deity@eskil.dk>
-
- * Makefile.am (EXTRA_DIST): Added .desktop files to EXTRA_DIST.
-
-1999-10-12 Clifford R. Conover <rusty@zootweb.com>
-
- * gncal-todo.c Todo List improvements.
-
- Cleaned up todo item highlighting, added support for highlighting
- events due today, and events not due yet. Colors are configurable
- on the Colors Tab of the properties window.
-
- Renamed Frame in Properties window to Colors rather then Month
- Colors since we are now asking for Todo item colors.
-
- Added ability to display time until todo item is due in list, it
- automatically selects the best denomination of time (up to weeks)
- and down to seconds to display. This should be made configurable
- in a future version.
-
- Changed Todo dialog to ask for time that event is due. This
- allows more accurate tracking of then the item is due, before the
- dialog was only asking for the date of the todo item.
-
-1999-12-03 Eskil Heyn Olsen <deity@eskil.dk>
-
- * calendar-conduit.c: undef DEBUG_CALCONDUT, suppresses debug output.
-
-1999-12-02 Russell Steinthal <rms39@columbia.edu>
-
- * alarm.c: Enhanced debug support: can be toggled on and off by
- SIGUSR1, reports alarms which could not be added
-
- * gnome-cal.c, main.[ch], prop.c: Add snooze capability for audio
- and display alarms. Snooze interval can be configured in the
- Properties box.
-
-1999-11-30 Eskil Heyn Olsen <deity@eskil.dk>
-
- * calendar-conduit.c (compare): Fixed compare bug. Also neated up
- some of the if's in set_status.
-
-1999-11-22 Russell Steinthal <rms39@columbia.edu>
-
- * Merged todo list coloring patch from stable
- * Added myself to AUTHORS, about box (per Miguel)
-
-1999-11-22 Eskil Heyn Olsen <deity@eskil.dk>
-
- * calendar-conduit.c (pre_sync): Writes some warning
- messages when pre_sync fails.
-
-1999-11-14 Eskil Heyn Olsen <deity@eskil.dk>
-
- * Makefile.am: Stupid misplaced endif cause gncal to depend on an
- install gnome-pilot... fixed... sorry.
-
-1999-11-12 Eskil Heyn Olsen <deity@eskil.dk>
-
- * Makefile.am (extra_pilot_bins): Fixed the if then else problem,
- using solution suggested by James Henstridge, appears to be caused
- by a (by now fixed) bug in my automake.
-
-1999-11-12 Russell Steinthal <rms39@columbia.edu>
-
- * prop.c: Config code for timeout, make Alarms property page use a
- vbox instead of an hbox so that the propbox stays a reasonable width.
-
- * gnome-cal.c, main.[ch]: Add timeout for audio alarms, code to load
- from config file
-
- * eventedit.c: Give some static functions external linkage so they
- can be used elsewhere (make_spin_button); add some prototypes to
- appease gcc.
-
-1999-11-11 Russell Steinthal <rms39@columbia.edu>
-
- * calendar.c (calendar_day_change): Add call to
- calendar_init_alarms() to schedule another day change alarm.
-
-1999-11-09 Eskil Heyn Olsen <deity@eskil.dk>
-
- * calendar-conduit.c: Enabled debug output. Sets a g_log_domain,
- now version 0.8.5. Consistent use of GSList/GList. Implemented
- compare, default uses one that compares the contents of a struct
- Appointment, but also has #ifdeffed code that does a field level
- comparison, not complete, but perhaps educational.
-
- * Makefile.am (#todo_conduit_control_applet_SOURCES): Fixed an
- unwanted conditional on libcalendar_conduit_la_LDFLAGS
-
-1999-11-05 Eskil Heyn Olsen <deity@eskil.dk>
-
- * calendar-conduit-control-applet.c (readStateCfg): Commented the
- code out, thus the capplet works again.
-
-1999-11-04 Eskil Olsen <deity@eskil.dk>
-
- * Makefile.am: Uses the PISOCK_LIBDIR, for people with odd install
- dirs for their pilot-link. Also install a pretty icon for the
- calendar-conduit.
-
- * calendar-conduit-control-applet.c: Modfied the
- try/revert/ok/cancel scheme to be more intuitive, also uses a
- GtkOptionMenu for the possible sync methods.
-
- * calendar-conduit-control-applet.desktop: use the nice icon...
-
- * calendar-conduit.c: Ack, had to define debug_alarms and
- alarm_default, otherwise they are undefined. Is gncal code messy
- or is this considered a way of configuring the cal engine ?
- Implemented delete_all syncabs methods.
-
- * calendar-pilot-sync.c: also had to declare debug_alarms and
- alarm_defaults, just as ugly.
-
-1999-11-02 Russell Steinthal <rms39@columbia.edu>
-
- * prop.c: Add new alarm page to properties box
-
- * prop.c, calobj.c, main.[ch] eventedit.c: New support for default
- alarms, configurable in the properties box.
-
- * gnome-cal.c, prop.c, main.[ch]: add option to beep on Display
- alarms
-
-1999-10-23 Russell Steinthal <rms39@columbia.edu>
-
- * calendar.c (calendar_new): Correctly initialize calendar_day_end
- and calendar_day_begin *before* installing day-change alarm.
-
-1999-10-21 Russell Steinthal <rms39@columbia.edu>
-
- * alarm.c, main.c: Added alarm debugging code
-
- * main.c (open_ok): Show an error box if the user tries to open a
- non-existent file; fixes bug #1818
-
-1999-10-19 Russell Steinthal <rms39@columbia.edu>
-
- * gnome-cal.c (calendar_notify): Fix typos which were causing
- invalid times in audio notification dialogs; fixes Bug #2561
-
-1999-10-18 Russell Steinthal <rms39@columbia.edu>
-
- * gncal-day-panel.c (gncal_day_panel_new): Placed the various
- elements of the day view in paned windows so that the user can
- adjust the relative sizes of the daily schedule, monthly calendar,
- and to-do list.
-
-1999-10-18 Martin Norbäck <norpan@bigfoot.com>
-
- * gncal.desktop: Added swedish translation
-
-1999-10-13 Eskil Olsen <deity@eskil.dk>
-
- * Makefile.am: Hopefully the fixes the much-hated
- gnome-pilot dependency.
-
-1999-10-07 Eskil Olsen <deity@eskil.dk>
-
- * calendar.c (calendar_object_changed): moved the pilot_status =
- MOD up, so even a CHANGE_SUMMARY will set the modified flag.
-
- * calendar-conduit.c: more _free calls, vamped the noise on output.
-
-1999-10-06 Eskil Olsen <deity@eskil.dk>
-
- * *conduit*[ch]: checks return values from gpilotd_init/connect.
-
- * calender.c (vcalendar_create_from_calendar): removed a set
- of cleanVObject cleanStrTbl, since the freed memory that the
- function returned.
-
-1999-09-27 Timur Bakeyev <mc@bat.ru>
-
- * timeutil.c (time_from_isodate): Use tm.gmtoff or timezone to get
- correct offset from UTC, according to HAVE_TM_GMTOFF or HAVE_TIMEZONE.
- See also 1999-07-19 Matt Martin <matt@abacusnet.net>
-
-1999-09-27 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * month-view.c (add_event): ditto
- (mark_current_day): ditto
- (month_view_set): ditto
-
- * goto.c (goto_dialog): ditto.
-
- * gnome-month-item.c (gnome_month_item_init): ditto.
-
- * gncal-day-panel.c (gncal_day_panel_new): ditto.
-
- * getdate.c (RelativeDate): ditto.
-
- * eventedit.c (set_all_day): ditto.
- (ee_rp_init_rule): ditto.
-
- * calendar.c (vcalendar_create_from_calendar): ditto.
-
- * calendar-conduit.c (update_record): ditto.
-
- * calobj.c (ical_object_generate_events): Get rid of pointers to
- values returned from localtime, as it uses a static buffer.
-
-1999-09-26 Eskil Olsen <deity@eskil.dk>
-
- * corba-cal.c: the g_free that was commented out since glib said
- was a duplicate free, was supposed to be a free.
-
- * GnomeCal.idl/corba-cal.c: added a get_object_id_list and a
- get_objects_by_id_list. Latter is not done.
-
- * calendar-conduit.c: rewrote the way the conduit iterates over
- records. It no longers fetches all entries (since that didn't work
- with more then 285 entries. It now fetches the id list, and gets
- each record. (will be using get_objects_by_id_list to get records
- in amounts of 10 or so later, to reduce amount of corba calls).
-
- * calendar-conduit.c: now sets alarm parameters when transferring
- from gnomecal to pilot.
-
-1999-09-23 Eskil Olsen <deity@eskil.dk>
-
- * calendar-conduit.c: better merge of summary/description
- when doing ical_from_remote (update_record), also handles
- import from gnomecal to pilot better, and on both ways, repeat
- events are much better now.
-
-1999-09-22 Eskil Olsen <deity@eskil.dk>
-
- * corba-cal.c: commented out a g_free that glib reported
- as being a duplicate free.
- * calendar-conduit.c: got gnomecal->pilot up and runnning.
-
-1999-02-06 Lauris Kaplinski <lauris@ariman.ee>
-
- * gncal.desktop: Added Estonian translations.
-
-1999-09-14 Federico Mena Quintero <federico@redhat.com>
-
- * gncal-full-day.c (child_popup_menu): Set the data pointers for
- all the items.
-
-1999-09-14 Kjartan Maraas <kmaraas@online.no>
-
- * doc/C/gnomecal.sgml: Merge from gnome-pim-1-0. Synced with newest
- user-guide.
-
-1999-09-01 Miguel de Icaza <miguel@gnu.org>
-
- * eventedit.c (ee_create_buttons): Make the OK button the default
- button per Russell's suggestion.
-
-1999-08-30 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * calendar.c (calendar_object_changed): Modify the
- object->last_mod field.
- (calendar_add_object): Ditto.
-
- Closes bug #676
-
- * main.c (save_calendar_cmd): Fix problem in which we warned the
- user about the calendar being modified the first time the calendar
- was used.
-
-1999-08-22 Tomas Ogren <stric@ing.umu.se>
-
- * gnomecal.gnorba: "GenericFactoy" is wrong...
-
-1999-08-15 Miguel de Icaza <miguel@gnu.org>
-
- * calobj.c (ical_gen_uid): Fix the hostname part.
-
-1999-08-07 Peter Teichman <pat4@acpub.duke.edu>
-
- * calendar-pilot-sync.c (sync_pilot): sync correctly for objects
- created on the pilot, but not dirty (because they have been synced
- with some other program in the past)
-
-1999-07-30 Miguel de Icaza <miguel@gnu.org>
-
- * month-view.c (month_view_init): Release points here.
-
-1999-08-02 Peter Teichman <pat4@acpub.duke.edu>
-
- * Makefile.am (libcalendar_conduit_la_LDFLAGS):
- libcalendar_conduit now installs
-
- * calendar-pilot-sync.c (sync_pilot): do deletion of appointments
- correctly, when they are deleted on the pilot
- (conduit_free_Appointment): protect against double-freeing parts
- of the Appointment structure
- (update_record): all-day events from the pilot are handled a bit
- more reasonably
-
-1999-08-01 Peter Teichman <pat4@acpub.duke.edu>
-
- * calendar-pilot-sync.c (sync_object_to_pilot): The multi-day
- appointment corruption bug is dead. Whoo!
-
-1999-07-31 Peter Teichman <pat4@acpub.duke.edu>
-
- * Makefile.am: fixed this up slightly with respect to pilot conduits
-
-1999-07-30 Jonathan Blandford <jrb@redhat.com>
-
- * Makefile.am (libcalendar_conduit_la_LIBADD): More autoconf-stuff
-
-1999-07-29 Jonathan Blandford <jrb@redhat.com>
-
- * gnome-cal.c (setup_widgets): Add scrolling to the yearview.
-
-1999-07-28 Miguel de Icaza <miguel@gnu.org>
-
- * calendar-pilot-sync.c: (sync_object_to_pilot): If the enddate is
- not set, set the repeatForever to 1. This fixes all of the
- birthdays problems I had.
-
- Make the code not take arguments
- (sync_cal_to_pilot): Nice event update information
-
- * calendar.c (calendar_new): Add Event UID hash table.
- (calendar_add_object): Add events to the hash table here.
- (calendar_remove_object): Remove events here.
- (calendar_object_find_event): Use the hash table here.
-
- * main.c (save_calendar_cmd): The object is already destroyed by
- gnome_dialog_run.
-
- * calendar-pilot-sync.c (sync_object_to_pilot): Do not turn
- archived bit on.
-
- * calobj.c (ical_gen_uid): Use the hostname, not the domain name.
- (ical_gen_uid): Add a serial number. Isodates can be small.
-
- * corba-cal.c (cal_repo_update_pilot_id): New method to update the
- pilot status.
- (cal_repo_get_updated_objects): New method. Returns a list of
- modified and not-sycned objects
-
- * calendar-pilot-sync.c (sync_cal_to_pilot): New function to sync
- from the GnomeCalendar to the pilot.
- (sync_object_to_pilot): Sync a single event to the pilot.
- (try_alarm): Alarm syncing code.
-
-1999-07-27 Miguel de Icaza <miguel@gnu.org>
-
- * calendar-pilot-sync.c: New file. Implements PalmPilot
- syncronization with the Gnome Calendar.
-
- * calobj.c (ical_object_new_from_string): New function. Creates
- an iCalObject from a vCalendar string that is supposed to contain
- only one vEvent.
-
- * calendar.c:
- (calendar_save): Split this routine in two.
-
- * gnome-cal.c (gnome_calendar_new): Create the corba server here.
-
- * main.c: Include gnorba.h, and corba-cal-factory.h here
- (close_cmd): Kill the calendar server on shutdown.
-
- * calobj.c (load_recur_yearly_day): Added a fixme comment. WE
- need to handle intervals in the years.
-
- * calendar.c (calendar_object_find_in_list, calendar_object_find,
- calendar_object_find_todo, calendar_object_find_event): New
- functions for looking up information.
-
- * main.c (gnome_calendar_locate): New function.
-
- * corba-cal.c (calendar_create_object): New file. Implements the
- corba server.
-
- * calendar.c (calendar_object_changed): Flag pilot-status as changed.
-
- * calobj.c (ical_object_to_vobject): Save pilot information for syncing.
- (ical_object_create_from_vobject): Load syncing information for
- pilot. Do it in a way compatible with KOrganizer.
-
-1999-07-26 Miguel de Icaza <miguel@gnu.org>
-
- * calobj.c (ical_object_create_from_vobject): Generate unique IDs
- on Vevents we load that lack it. WE need this for the old
- gnome calendar generated files (ie, before now :-).
-
- Required to sync with the Palm
-
-1999-07-26 Miguel de Icaza <miguel@gnu.org>
-
- * calobj.c (ical_object_create_from_vobject): Generate unique IDs
- on Vevents we load that lack it. WE need this for the old
- gnome calendar generated files (ie, before now :-).
-
- Required to sync with the Palm
-
-1999-07-19 Matt Martin <matt@abacusnet.net>
-
- * timeutil.c (time_from_isodate): Handle the 'Z' parameter to the
- ISO date format to convert from GMT time.
-
-1999-07-17 Nat Friedman <nat@gnome-support.com>
-
- * calendar.c (calendar_add_object): Copy the new UID into the
- iCalObject structure.
-
-1999-07-16 Miguel de Icaza <miguel@gnu.org>
-
- * gnome-month-item.c (gnome_month_item_set_arg): Merge fix from
- gnome-pim-1-0: Fixed cut&paste bug for day fontsets.
-
-1999-07-14 Miguel de Icaza <miguel@gnu.org>
-
- * calobj.c (ical_gen_uid): Returns a UID.
- (ical_object_new): Use a UID when creating an event. Should get
- syncing done easier.
-
-1999-07-14 Nicholas J Kreucher <nick@poetic.com>
-
- * calobj.c (skip_numbers): Actually skip over the numbers.
- (ical_object_to_vobject): Test the proper variable for storing the
- proper information.
-
-1999-07-14 Jean-Noel Guiheneuf <jean-noel.guiheneuf@wanadoo.fr>
-
- * timeutil.c (time_add_month): Fixed the problem with next month
- going from a 31-day to a 30-day by adjusting the date to the
- closest day at the end of the month.
-
-1999-06-07 Mike McEwan <mike@lotusland.demon.co.uk>
-
- * timeutil.c (time_add_month): Tell ktime' that we don't know
- about daylight saving time so that it does *not* make adjustments
- when we traverse a DST boundary.
- (time_year_begin): ditto.
- (time_year_end): ditto.
- (time_month_begin): ditto.
- (time_month_end): ditto.
-
-1999-06-16 Anders Carlsson <anders.carlsson@tordata.se>
-
- * main.c (new_calendar): Realize the toplevel widget when
- --hidden is passed to gnomecal. This fixes a segfault.
-
-1999-06-04 Robert Brady <rwb197@ecs.soton.ac.uk>
-
- * gnome-cal.h, gnome-cal.c: Fix abort() problem with the year view.
- (Bug #1367). Thanks to Owen Cliffe <oc197@ecs.soton.ac.uk> for
- helping track it down.
-
-1999-06-03 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * calobj.c (daynumberlist): One line bug fix from Sergey I Panov.
-
-1999-06-02 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * view-utils.c (nicetime): Use %H instead of %k, as %k is a GNU
- extension, not available in other systems.
-
-1999-06-01 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * calobj.c (daynumberlist): Work around broken software that
- writes a broken month-of-day as "zero". Use the dtstart date for
- this on this event.
-
-1999-05-28 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * Makefile.am (install-data-local): help files be gone. They are
- now installed from the Docbook stuff.
-
-1999-05-26 Russell Steinthal <steintr@condor.penguinpowered.com>
-
- * gncal-todo.c main.c main.h prop.c: Added support for priorities
- for todo items. Doesn't do much, but you can set them and sort by
- them. (Use the properties box to enable them; should they be on
- by default?)
-
-1999-05-25 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * main.c (parse_an_arg): Added missing break here. It was causing
- core dumps when invoked with --userfile.
-
- * gnome-cal.c (gnome_calendar_set_view): Add some assertions here,
- to pin point the bug reported on gnome-list.
-
- * calobj.c (load_recurrence): Make intervals always exist. a 0
- interval is wrong.
-
-1999-05-25 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * year-view.c: Removed unused macro CALENDAR_HEIGHT.
-
-1999-05-25 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * year-view.c (idle_handler): Set the canvas scroll region here,
- not in size_allocate(). Also, use the correct width and height
- based on the allocation and the precomputed minimum width/height
- values.
-
- * gnome-cal.c (setup_widgets): Set the scrollbar policy of the
- scrolled window.
-
- * main.c (setup_appbar): Use the correct type for the appbar.
-
- * gncal-day-view.c: Removed unused function switch_to_day().
-
- * gncal-day-panel.c (calendar_day_selected): Removed unused variable.
-
-1999-05-25 Nat Friedman <nat@nat.org>
-
- * doc/C/gnomecal.sgml: Fixed a typo.
-
- * gnome-cal.c (setup_widgets): Added a scrolled window widget into
- which the year view is placed.
-
- * year-view.c (CALENDAR_HEIGHT): The height of the total year view
- inside the scrolled window.
- (idle_handler): Set the height of the year view to
- CALENDAR_HEIGHT.
- (year_view_size_allocate): Set the scroll region of the year view
- canvas to allocation->width, CALENDAR_HEIGHT.
-
-1999-04-25 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * main.c (dump_todo): Add --todo flag to dump the todo contents.
-
-1999-04-19 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * gncal-todo.c (add_activated): Use same hack used in edit_activated
-
-1999-04-16 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * gncal-todo.c (edit_activated): Kill all grabs from the CList
- before running the new dialog box.
-
- This fixes the problem of button-3/Edit on the todo item blocking
- the GUI (actually, the main window responds, but not the todo
- window).
-
-1999-04-08 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * gncal-todo.c (gncal_todo_init): Make sure we can get events for
- button3. The code for the nice popup menu was there but was not
- getting invoked.
-
-1999-04-01 Steve Murphy <murf@e-tools.com>
-
- * calobj.c (weekdaynum): Added this routine so Monthly recurrences
- use the weekday field as a simple integer for a single weekday.
-
- * calobj.c (load_recur_monthly_pos): Call weekdaynum instead of
- weekdaylist. The interface only lets the user input a single value
- anyway.
-
- * calobj.c (ical_object_to_vobject): instead of code to output day
- names from a bit array, use instead the value as an int and output
- a single dayname.
-
- * calobj.c (ical_object_generate_events): first_week_day gets the
- day int instead of the first entry in the bit field. I inserted a
- fair chunk of code to avoid calling generate if the day is out of
- range for a month. It may be unneccessary, because mktime will
- turn the extra days into a valid date the next month. But not all
- mktimes are equal, I fear.
-
- * eventedit.c (ee_store_recur_rule_to_ical): For case 3,
- (Monthly), I added code to set the interval slot of the recur
- struct; without this value, selecting a monthly recursing, by
- date, would lead to an infinite loop broken only by a failure to
- alloc more memory. Also, in the "by position" case, both
- u.month_pos and u.month_day were being assigned values. This is a
- mistake, as they are both part of an union, and the same
- thing. The weekday field should get the recur_rr_month_weekday
- value.
-
- * eventedit.c (ee_rp_init_rule): set default day from the weekday
- field instead of the u.month_day field, which is really the
- month_pos value.
-
- * gnome-cal.c (gnome_calendar_tag_calendar): Month days start with
- 1, not 0; thus, setting tm.tm_mday = 0, and then calling mktime
- will generate a time corresponding to the end of the previous
- month, which may have a mday anywhere from 28 to 31. The end time
- just adds 1 to the month, so your end time may not cover the last
- few days of this month, depending on what the biggest mday of last
- month was. I changed it so tm_mday is set to 1 instead.
-
-1999-03-30 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal-todo.c (convert_time_t_to_char): Made static. Make it use
- the full year format for strftime().
-
-1999-03-27 Nuno Ferreira <nmrf@rnl.ist.utl.pt>
-
- * calobj.c: Include <config.h> So that strings get translated.
-
-1999-03-26 Tomas Ogren <stric@ing.umu.se>
-
- * prop.c (build_hours_menu): Made it respect 12/24h settings..
- Doesn't show until next time you open the dialog.. yet..
-
-1999-03-24 Tomas Ogren <stric@ing.umu.se>
-
- * gncal-week-view.c (gncal_week_view_set): Did some i18n work
- * eventedit.c (get_exception_string): Did some i18n work
-
-1999-03-24 Tomas Ogren <stric@ing.umu.se>
-
- * gncal-todo.c (gncal_todo_init): Made clist titles i18n:able
- * main.c (poptOption): Added which views that are possible for
- --view in the --help text (closes #367)
- * main.c (dump_events): Added (short) month to the strftime and made
- the strings i18n:able
-
-1999-03-23 Tomas Ogren <stric@ing.umu.se>
-
- * gncal/calobj.c: Added 2 paranthesis..
- "foobar = d / 60*60" is _NOT_ the same as "foobar = d / (60*60)"
- which caused heavy alarm-corruption with alarms between 2 hrs and
- 2 days.
-
-1999-03-23 Nat Friedman <nat@nat.org>
-
- * eventedit.c (ee_store_recur_rule_to_ical): Set the
- recur->interval to the value of the recur_rr_month_period spin
- button if the event is being set "by day." This closes bug #675
- as reported by bagfors@hpc2n.umu.se. Thanks for the report!
-
-1999-03-10 Clifford R. Conover <rconover@montana.edu>
-
- * gncal-todo.c (simple_todo_editor): Add support for Due Date when
- adding a TODO item here.
- (column_resized): New function
- (init_column_sorting): New function.
- (todo_click_column): New function.
- (convert_time_t_to_char, make_overdue_todo_style): New functions.
-
- * gnome-cal.c (gnome_calendar_todo_properties_changed): New
- function used to update the TODO when the properties have been
- chagned for it.
-
- * prop.c (prop_apply_todo): Apply TODO properties.
-
- * gncal-day-panel.c (todo_list_properties_changed): Update the
- TODO display here.
-
- * eventedit.c (date_edit_new): Made public
-
-1999-03-10 Craig A Soules (soules+@andrew.cmu.edu)
-
- * timeutil.c, calendar.c, calobj.c, gncal-day-panel.c: Add support
- for daylight time savings.
-
-1999-02-28 Martin Baulig <martin@home-of-linux.org>
-
- * gncal-full-day.c (recompute_motion): For DRAG_MOVE, DRAG_SIZE_TOP
- and DRAG_SIZE_BOTTOM: call child_focus_out () if the child currently
- has the focus.
-
-1999-02-27 Changwoo Ryu <cwryu@adam.kaist.ac.kr>
-
- * quick-view.c (QUICK_VIEW_FONTSET): Added Korean font to the
- fontset string.
- * mark.h (*_FONTSET): Likewise.
-
-1999-02-23 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * calobj.c (ical_object_to_vobject): Save the owner/organizer of
- the event.
- (ical_object_create_from_vobject): Load the owner/organizer of the event.
-
- * gncal-full-day.c (delete_occurance): Assign child to data (fixes
- crash on "delete this occurrance").
-
-1999-02-22 Timur Bakeyev <mc@bat.ru>
-
- * calendar.c: According to configured values, use either tm.tm_zone
- or tzname. In last case, also declare it extern.
-
- * prop.c: langinfo.h not available everywhere. Wrapped. BTW, works
- fine without it.
-
-1999-02-20 Tomas Ogren <stric@ing.umu.se>
-
- * main.c (init_username): Made use of g_get_{user,real}_name() instead
- of our own home-brew...
-
-1999-02-17 Sergey Panov <sipan@mit.edu>
-
- * gnome-month-item.c,gnome-month-item.h,goto.c,mark.h,
- month-view.c,prop.c,quick-view.c,year-view.c: will define
- fonts via fontset. Friendlier to locales that use iso8859-[^1]
- and koi8-r encodings. Does not solve problem for Asian languiges
- --- better solution is needed (e.g. standart GNOME fontstyles
- defined in gtkrc).
-
-1999-02-16 Sergey Panov <sipan@mit.edu>
-
- * main.c: Use N_() macro for color settings labels in
- color_props structure.
-
-1999-02-15 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * goto.c (goto_dialog): Indentation fixes.
-
-1999-02-15 Tomas Ogren <stric@ing.umu.se>
-
- * goto.c: Made a private copy of what localtime() returns, to be able
- to keep the data after more calls to localtime().
-
-1999-02-11 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * main.c (save_default_calendar): New function. Saves the
- calendar if it is the user's default calendar
-
- * gncal-full-day.c (unrecur_appointment):
- * gncal-day-panel.c (day_view_range_activated):
- * eventedit.c (ee_ok):
- * gncal-todo.c (ok_button): Added autosave for the default
- calendar.
-
-1999-02-09 Tomas Ogren <stric@ing.umu.se>
-
- * main.c: Removed the gtk_widget_realize call.
-
-1999-02-06 Changwoo Ryu <cwryu@adam.kaist.ac.kr>
-
- * gncal.desktop: Added Korean translations.
-
-1999-02-04 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * eventedit.c (date_edit_new): New convenience function to create
- a properly-configured date editor widget.
-
-1999-02-03 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal-week-view.c (gncal_week_view_new): Make the calendar start
- weeks on Monday if appropriate.
- (gncal_week_view_time_format_changed): New function to notify the
- week view that the time format has changed.
-
- * gncal-day-panel.c (gncal_day_panel_new): Make the calendar start
- weeks on Monday if appropriate.
- (gncal_day_panel_time_format_changed): New function to notify the
- day panel that the time format has changed.
-
- * gnome-cal.c (gnome_calendar_time_format_changed): Tell the day
- and week views that the time format has changed.
-
-1999-02-01 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * eventedit.c (event_editor_init): Set the title of the event
- editor window.
-
-1999-01-31 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal-day-view.c (gncal_day_view_expose): Do not remove the
- clipping rectangle here.
-
- * view-utils.c (view_utils_draw_events): Remove the clipping
- rectangle here, since the user of this function should not know
- about it.
-
-1999-01-30 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * view-utils.c (view_utils_draw_events): Improve this draw
- routine. Now it can split the text in lines and fit as many
- events as possible.
- (nicetime): Return strings without spaces at the beginning.
-
- * gncal-day-view.c (gncal_day_view_expose): Move clip-clear
- operation here.
-
-1999-01-29 Jason Tackaberry <tack@dok.org>
-
- * gncal-full-day.c (child_popup_menu): if the user clicks on an
- event that is an occurance, the menu will allow the user to delete
- all occurances of this event, or just the selected occurance.
- (delete_occurance): added.
-
- * eventedit.c (append_exception): force the clist to select the
- new exception. (fixes segfault)
- (delete_exception): if the last exception in the clist is deleted,
- move the selection index up. (fixes segfault)
-
-1999-01-28 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * main.c (parse_an_arg): Add --hidden key to hide the calendar at
- startup. Only works with GNOME window managers though :-(
-
- * calendar.c (calendar_day_change): Reschedule alarms for the new day.
-
- (calendar_init_alarms): Schedule an alarm for midnight to change
- the calendar_day_begin/calendar_day_end.
-
- * alarm.c (alarm_ready): If we reschedule, there is no need to
- activate any pending alarms.
-
-1999-01-28 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal-full-day.c (child_new): Insert the summary text here.
- (child_focus_in): No need to raise the window, since we have
- Spiffo(tm) layout code. Boy, this is old code.
- (gncal_full_day_focus_child): Now that GtkText works better, we
- can avoid synthesizing a click which was causing grief, anyway.
- (child_button_press): Grab the focus before popping up the menu.
-
- * layout.c (find_index): Added a sanity check.
-
- * gncal-full-day.c (child_destroy): Unmap and unrealize the child
- before unparenting/destroying it.
- (child_unrealize): Unrealize the widget. What was I thinking?
- (child_new): Save the focus_out_event signal connection id in
- Child structure (in a new field).
- (child_destroy): Disconnect from the focus_out_event signal, since
- we don't want to get such an event when the widget is destroyed.
- (gncal_full_day_destroy): Destroy the children properly; it was
- leaking memory.
-
-1999-01-27 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * main.c (save_calendar_cmd): Warn if the calendar file has
- changed.
-
- * calendar.c (calendar_load, calendar_save): Keep track of the
- modification time for the calendar file.
-
-1999-01-20 Nat Friedman <nat@nat.org>
-
- * gncal-full-day.c (gncal_full_day_key_press): Only trap printable
- characters such that hotkeys work.
- (UNSELECT_TIMEOUT): Changed to 0. Much saner behavior.
-
- * prop.c (properties): Connect gnome_help_pbox_display to the
- GnomePropertyBox help button.
-
-1999-01-19 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * quick-view.c (quick_view_do_popup): Do not grab the mouse here
- (it was being grabbed incorrectly, anyways).
- (quick_view_map_event): Grab the mouse when the window is mapped.
- This avoids the ugly "while (xGrabPointer () != Success)" hack.
- (quick_view_button_release): Handle button releases here.
-
-1999-01-19 Tomas Ogren <stric@ing.umu.se>
-
- * main.c: do gtk_widget_realize on the toplevel window..
-
-1999-01-13 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal-day-panel.c (gncal_day_panel_new): Make the little
- calendar start up with the correct date.
-
- * gncal-week-view.c (gncal_week_view_set): Add the month to the
- date range display label.
-
-1999-01-08 Nat Friedman <nat@nat.org>
-
- * main.c: Converted some more stuff to use the standards.
-
-1999-01-08 Nat Friedman <nat@nat.org>
-
- * main.c (setup_appbar): New function to create the status bar.
- (setup_menu): Install menu hints.
-
- Menu items updated to match the standards. New Settings menu
- created.
-
-1998-12-30 Jeff Garzik <jgarzik@pobox.com>
-
- * gncal/calendar.c, gncal/gnome-cal.c, gncal/main.c,
- gncal/quick-view.c:
- s/g_copy_strings/g_strconcat/
-
-1998-12-16 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- Rewrote the old and broken alarm system. It never actually
- worked properly. Now it works properly, and I figured a nice way
- to get the Audio alarm do something nicer (it is now like an alarm
- clock :-).
-
- * gnome-cal.c (calendar_notify): Now we take a CalendarAlarm to
- actually distinguish which alarm was triggered.
-
- * alarm.c (alarm_ready): The code was only activating the first
- alarm. Reschedule the timer upon delivery of an alarm.
-
-1998-12-14 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * year-view.c (idle_handler): Use the allocation size instead of
- the old fields in the canvas structure.
-
- * goto.c (create_days): Use gtk_widget_set_usize() instead of
- gnome_canvas_set_size().
- * quick-view.c (setup_event_list): Likewise.
-
-1998-12-09 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * gncal-todo.c (simple_todo_editor): Use gnome_dialog_set_parent.
- * goto.c (goto_dialog): ditto
- * prop.c (properties): ditto.
-
-1998-11-23 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * eventedit.c (ee_rp_init_exceptions): Update GtkClist usage.
-
-1998-11-23 Andrew T. Veliath <andrewtv@usa.net>
-
- * gncal-day-panel.c (gncal_day_panel_new): Use
- gtk_scrolled_window_add_with_viewport instead of
- gtk_container_add (gtk changes).
-
-1998-11-23 Herbert V. Riedel <hvr@hvrlab.ml.org>
-
- * eventedit.c: use GPOINTER_TO_INT
-
- * gncal-todo.c: same.
-
-1998-11-22 Matthew Wilson <msw@redhat.com>
-
- * main.c: Fixed the popt event parsing callback to have the
- correct number of arguments. This stops it from segfaulting.
-
-1998-11-16 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * eventedit.c (ee_classification_widgets): Doh. Fixed stupid bug
- where the classification buttons were not being set correctly.
- (ee_store_general_values_to_ical): Take into account the fact that
- radio group lists are stored in reverse order of insertion.
-
- * gncal-todo.c (gncal_todo_init): Use a scrolled window to put the
- clist into.
-
-1998-11-11 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * calendar.c (calendar_save): Backup the old file before saving
- the caledar.
-
-1998-11-06 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * calobj.c: Add ctype.h
-
-1998-10-31 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gnome-cal.c (gnome_calendar_direction): Add the offset from the
- beginning of the current time unit (day/month/etc), otherwise it
- does not work right, for example, you are on the 31st day of a
- month and the next month is a 30-day one and you jump to the next
- month.
-
-1998-10-16 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * month-view.c: Changed a lot of stuff not to use the layout code
- -- the month view's days are too small to display layout
- usefully. Now they display a little list of the events in each
- day. We also have a popup menu for the days in the month view.
-
- * calendar.c (calendar_get_objects_in_range): Reverse the list so
- that it is returned in increasing order.
-
- * eventedit.c (event_editor_new_whole_day): New public function to
- create an event for the complete span of day_begin to day_end.
-
- * year-view.c (new_appointment): Use event_editor_new_whole_day().
-
- * year-view.c (yv_popup_menu): Mark strings for i18n.
-
-1998-10-12 Ji Lee <g@ucsd.edu>
-
- * eventedit.c (ee_store_recur_rule_to_ical): The interval was
- never being loaded from the spin button.
-
-1998-10-09 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * month-view.c (month_view_update): Create a list of children and
- lay them out nicely. Lots of functions added for this purpose.
- (adjust_segment): Main event segment adjustment routine.
- (adjust_children): Adjusts all the children in the month view.
- (child_create_segments): Creates the segments for a particular event.
- (layout_children): Uses the generic layout engine to organize the children.
-
-1998-10-08 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal-todo.c (clist_row_selected): Set the sensitivity of the
- edit/delete buttons.
- (gncal_todo_update): Likewise. Thanks to Dirk Luetjens for the
- bug report.
-
- * layout.c: Do some cleanup; now we pass a struct with the layout
- algorithm's state instead of passing a trillion parameters around.
-
- * gncal-full-day.c (layout_children): Use the new generic layout
- engine.
- (child_compare): Sort keys are start time then end time, not just
- start time. This produces somewhat nicer results for the layout
- algorithm.
-
- The new layout code uses a partition of the time range occupied by
- the events, rather than using a fixed time granularity. This is
- better since the different parts of the program that use the
- layout module will have different semantics regarding snapping the
- event bounds to a fixed "time grid".
-
-1998-10-07 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * layout.[ch]: New files that abstract the event layout code from
- gncal-full-day.c into something useful for other parts of the
- program. Now all event layout is done here.
-
- * Makefile.am (gnomecal_SOURCES): Added layout.[ch] to the list of
- sources.
-
-1998-10-07 Carsten Schaar <nhadcasc@fs-maphy.uni-hannover.de>
-
- * main.c (main): Replaced the 'gnome_client_new_default' call with
- 'gnome_master_client'.
-
-1998-10-02 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * timeutil.c (time_day_begin): Changed name from
- time_start_of_day() to be consistent with the other begin/end functions.
- (time_day_end): Likewise.
-
- * calobj.c (ical_object_get_first_weekday): New public function to
- get the first toggled day in a weekday mask. Since we do not
- support multiple weekdays in a monthly-by-pos rule, we just fetch
- the first toggled one.
- (ical_object_generate_events): Added a missing break statement.
-
- * timeutil.c (time_month_end): Made it consistent with the rest of
- the time begin/end functions -- now it returns the first second of
- the *next* month.
- (time_week_end): Actually implemented this function. It will be
- used when the week view is rewritten.
-
- * calobj.c (time_in_range): Fix off-by-one in the comparison of
- the time against the end time.
-
- * gncal-full-day.c (expand_space): Fixed bug where the columns not
- were being expanded due to a missing "slot + j".
-
-1998-10-01 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * month-view.c (month_view_init): Use the font #defines.
- (month_view_new): Set the colors of the month view upon creation.
- (mark_current_day): New function to mark the current day in the
- month view.
- (month_view_set): Mark the current day.
- (month_view_colors_changed): Mark the current day and colorify the
- month item appropriately.
-
- * month-view.h: Added year and month fields to the MonthView
- structure.
-
- * main.c: Renamed the Appointments color property, since it will
- be used by the month view as well.
-
- * goto.c (update): Set the current day's font and color.
-
- * year-view.c (year_view_init): Set the fonts of the month items
- when creating them.
-
- * mark.h: Added new #defines for HEADING_FONT and TITLE_FONT.
-
- * year-view.c (year_view_init): Use the new font #defines.
-
- * prop.c (prop_apply_colors): Fixed to work with the
- I-am-paranoid-and-I-need-to-size-my-ints changes to
- GnomeColorPicker.
- (color_spec_from_picker): Likewise.
-
-1998-09-30 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * goto.c (create_days): Colorify the month item and prepare it for
- prelighting here.
-
- * main.c (color_props): Changed the default colors to something
- not dull.
-
- * year-view.c (compute_min_size): New function to compute the
- minimum size of the year view properly.
- (year_view_size_request): Added two new fields to the year view
- structure that contain the minimum size. Return this in the
- size_request method.
- (year_view_new): Call compute_min_size to save the minimum size
- for later use.
- (idle_handler): Make it resize the items correctly.
-
- * gnome-month-item.c (gnome_month_item_set_arg): Reshape when
- necessary. This is needed becaues we now actually calculate a
- minimum size for the month item based on the font sizes and paddings.
- (check_heading_sizes): New function to calculate a minimum size
- based on the headings' dimensions.
- (check_day_sizes): New function to calculate a minimum size based
- on the day number labels' dimensions.
- (check_sizes): New function that computes a minimum size for the
- month item.
- (reshape): Now calls check_sizes() to ensure a minimum size for
- the month item.
-
- * year-view.c (mark_current_day): New function to mark the current
- day in the year view.
-
- * mark.c: Removed mark_current_day from here.
-
-1998-09-29 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * prop.c (fetch_color_spec): Changed name from fetch_prelight_spec
- and made it conform to the new prelighting mechanism.
- (fake_mark_days): Set the proper day attributes.
- (reconfigure_month): Use colorify_month_item().
- (fake_mark_days): Use mark_month_item_index().
-
- * mark.c (colorify_month_item): New public function to reset the
- colors in a month item.
- (get_attributes): New internal function that creates an array of
- attributes for the days in a month item. This is the basis of all
- the new optimizations to month item marking.
- (unmark_month_item): Now it uses the attributes array to unmark
- only the days that need unmarking.
- (mark_event_in_month): Update the day attributes array.
- (month_item_prepare_prelight): Changed the definition of the
- prelight color query function. Use the new function.
- (day_event): Do color changes based on the day attributes array.
- (mark_month_item_index): New public function to mark a single day
- by index.
- (mark_event_in_month): Use mark_month_item_index().
-
- * gnome-month-item.c (gnome_month_item_num2child): Now takes an
- int, not a GnomeMonthItemChild.
- (gnome_month_item_child2num): Now returns an int, not a
- GnomeMonthItemChild.
- (gnome_month_item_num2day): Now takes an int, not a
- GnomeMonthItemChild.
-
- * goto.c (goto_dialog): Create the days before the year spin
- button, because the year_changed callback expects the month item
- to be created. The new semantics of the spin button cause it to
- emit a value_changed signal on the adjustment upon creation -- is
- this the behavior we want from it?
- (goto_dialog): Use gtk_window_set_modal() instead of the
- deprectaed gnome_dialog_set_modal().
-
- * quick-view.c (quick_view_new): Make it look not as crappy by
- putting the title inside the frame.
- (quick_view_do_popup): Fixed the pointer grab and added a cursor.
- (create_items_for_event): Query the text width/height from the
- text item using the new object arguments, so that the size of the
- popup window can be set properly.
-
- * year-view.c (do_quick_view_popup): Calculate a nice date string
- for the popup window.
-
-1998-09-28 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * quick-view.[ch]: New file that presents a quick view of the
- events in a particular day when the mouse is clicked on the year
- view. Work in progress.
-
- * year-view.c (do_quick_view_popup): New function that creates a
- quick view for the events in a day.
-
- * Makefile.am (gnomecal_SOURCES): Added quick-view.[ch] to the
- list of sources.
-
-1998-09-27 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * main.c: Hotkey for File/Exit should be C-q, not C-x.
-
-1998-09-24 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * year-view.c (do_popup_menu): New function to execute the popup
- menu in the year view.
- (day_event): Invoke the popup menu with the context set to days.
- (new_appointment): New function to create a new appointment from
- the year view.
- (do_jump): New function to do the appropriate view/date jumping
- from the popup menu.
-
- * main.c: Fixed two icons in the File menu.
-
-1998-09-21 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * main.c: Added underlined shortcuts and accelerators to the main menu.
-
-1998-09-16 Raja R Harinath <harinath@cs.umn.edu>
-
- * gncal-week-view.c (<gtk/gtklabel.h>): Include.
- * gncal-week-view.h (<gtk/gtkvbox.h>): Include.
-
-1998-09-06 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * gnome-cal.c (mail_notify): Fixed the bug reported about the mail
- notification not beint sent until the program was terminated.
-
-1998-09-03 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal-full-day.c (gncal_full_day_forall): Updated foreach ->
- forall from Gtk changes, bleah.
-
- * year-view.c (day_event): New function to handle events from
- days. Jumps to the day that is clicked.
-
- * main.c: Use a watch cursor while the previous/today/next
- functions are doing their job.
-
- * mark.c (month_item_prepare_prelight): New public utility
- function to prepare a month item for prelighting. It will store
- the proper prelight information and attach the appropriate signals.
- (mark_current_day): Make the current day bold as well (useful for
- color-blind people, I guess).
-
- * prop.c (set_current_day): Reset the date in the sample calendar
- and mark the current day.
- (fake_mark_days): Mark fake events in the sample calendar.
-
- * year-view.c (year_view_set): Use the general prelighting engine.
-
- * goto.c (day_event): Just process button presses, as prelighting
- is done behind the scenes now.
- (update): Use the general prelighting engine.
-
- * prop.c (create_colors_page): We can now configure the colors of
- the monthly calendars! Wheeeeee! There are still some nits to be
- fixed, which are listed in the TODO file.
- (build_color_spec): New function to build color specifications.
- (parse_color_spec): New function to parse color specifications.
-
- * mark.c: Modified all functions to use the configured colors.
- * goto.c: Likewise.
-
- * main.c (colors_changed): New function that notifies all
- calendars that colors have changed.
-
- * gnome-cal.c (gnome_calendar_colors_changed): New function that
- notifies all the views that the colors have changed.
-
- * month-view.c (month_view_colors_changed): New function that
- notifies the month view that colors have changed.
-
- * year-view.c (year_view_colors_changed): New function that
- notifies the year view that colors have changed.
-
- * gnome-month-item.h (struct _GnomeMonthItem): Added fields for
- outline and day box colors.
-
- * gnome-month-item.c (gnome_month_item_set_arg): Added
- outline_color, outline_color_gdk, day_box_color, and
- day_box_color_gdk arguments to month items. These are convenient
- to quickly set the colors of the month item.
- (gnome_month_item_get_arg): Likewise.
-
- * main.[ch]: Added a global array of structures for color preferences.
-
-1998-08-31 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * goto.c: Small code cleanup.
- (day_event): Upon receiving a LeaveNotify event, Reset the day's
- background to the correct color.
-
-1998-08-29 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * mark.[ch]: New files with utility functions to mark calendars
- with their events.
-
- * mark.c (mark_month_item): New public function to mark a month
- item with events.
- (unmark_month_item): New public function to unmark all the days in
- a month item to their default appearance.
-
- * year-view.c (year_view_set): Use the new unmark_month_item() and
- mark_month_item() to mark the months with events.
-
- * goto.c (update): New function that updates the calendar in the
- Go-to dialog by marking the days.
-
- * timeutil.c (time_year_begin): Modified to take a time_t value.
- (time_year_end): Likewise.
- (time_month_begin): Actually implemented this function, which was
- in the header file but not here.
- (time_days_in_month): New public function that returns the number
- of days in a month.
-
- * Makefile.am (gnomecal_SOURCES): Added mark.[ch] to the sources.
-
- * year-view.c (unmark_days): Use unmark_month_item().
-
- * gncal-full-day.c (gncal_full_day_destroy): Fixed crash when
- destroying the full day view. The full day's destroy method is
- unusual in that it destroys the list of child widgets itself, as
- it does not have a remove method, so it needs to reset the list to
- NULL.
-
-1998-08-27 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gnome-month-item.c (build_month): Now does the correct thing
- when the user wants weeks to start on Monday. Now all the Monday
- special casing, as far as day numbering is concerned, is only in
- this function.
-
- * year-view.c (mark_days): This function marks the days that have
- events in them. It also fixes a memory leak in the old
- implementation (it was leaking the whole list).
- (unmark_days): New function used to unmark all the days in the
- year view.
- (mark_event): New function that marks all the days that are
- spanned by a time range. It also fixes the bug in the old
- implementation where it could possibly mark days past the ends of
- the year (if the event crosses year boundaries, for example).
-
- * timeutil.c (time_year_begin): Take the year parameter since year
- 1, not 1900.
- (time_year_end): Likewise.
-
- * year-view.c (year_view_size_allocate): Now changing the size of
- the calendars is done in the idle loop.
- (idle_handler): This function actually does the resizing of the items.
-
- * year-view.h (struct _YearView): Added idle_id and need_resize
- fields.
-
-1998-08-26 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * year-view.c: Beginning of the new year view. Sizing and event
- marking needs to be finished.
-
- * gnome-cal.c: Updated for year-view.
- (gnome_calendar_time_format_changed): Use year_view_time_format_changed().
-
- * year-view.[ch]: Renamed the gncal-year-view.[ch] files to
- year-view.[ch].
-
- * Makefile.am (gnomecal_SOURCES): Updated year-view.[ch] in the
- list of source files.
-
-1998-08-25 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * goto.c (create_days): Set the heading color of the month item.
-
- * main.c: Use GNOME_STOCK_PIXMAP_JUMP_TO, now that it exists,
- instead of goto.xpm. Also, removed goto.xpm from cvs.
-
- * gnome-month-item.h (struct _GnomeMonthItem): Added fields for
- the heading and day number fonts. Added fields for heading and
- day number label colors.
-
- * gnome-month-item.c (gnome_month_item_class_init): ARG_DAY_NAMES
- should be write-only. Also, added arguments for heading and day
- number fonts. Added arguments for heading and day number colors.
-
-1998-08-24 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * prop.c (build_two_radio_group): Doh. Set the state of the radio
- buttons properly.
-
- * month-view.c (month_view_time_format_changed): New public
- function that notifies the month view of a time format change.
-
- * gnome-cal.c (gnome_calendar_time_format_changed): New public
- function that notifies the calendar of a time format change.
-
- * main.c (time_format_changed): Use gnome_calendar_time_format_changed().
-
- * month-view.c (month_view_update): New public function to update
- the month view when an event changes. This is still unfinished.
- (month_view_set): New public function to set the month in the
- month view.
-
- * gnome-cal.c (gnome_calendar_direction): Add case for month view.
- (gnome_calendar_set_view): Likewise.
- (gnome_calendar_update_all): Likewise.
-
- * timeutil.c (time_add_week): Implemented the time_add_week()
- function, which was on the header file.
- (time_add_month): Added public month-adding routine.
-
- * gnome-cal.c (gnome_calendar_get_current_view_name): Add case for
- month view.
- (gnome_calendar_goto): Likewise, and set the time on the month view.
-
- * month-view.c (month_view_new): Now it takes the calendar plus
- the time_t representing the month.
-
- * gnome-month-item.h: Added documentation on the object arguments
- for the month item.
-
- * month-view.c (month_view_init): Added a month/year heading to
- the month view.
-
- * TODO: Updated the TODO list a bit.
-
- * main.c (gnome_cal_file_menu): The preferences menu option should
- go in the File menu.
- (gnome_cal_edit_menu): Added stock pixmaps to the menu items.
- (gnome_cal_menu): Renamed the Calendar menu to Edit.
- (gnome_cal_help_menu): Use "About Gnomecal", not just "About".
-
- * prop.c (hour_activated): Notify the property box that it has changed.
-
- * main.c: Changed the Properties menu item to Preferences. These
- are global application preferences, not a single calendar's
- properties.
-
- * prop.c (prop_apply): Save the week_starts_on_monday flag to the
- configuration file.
- (properties): Added a check button for weeks starting on Monday.
- (properties): Beautified the Preferences dialog.
-
- * month-view.c (month_view_init):
- * goto.c (create_days): Set the month item to start weeks on
- Monday if appropriate.
-
- * main.c (init_calendar): A boolean is not an hour, so don't
- range_check_hour() on it.
- (init_calendar): Added a global week_starts_on_monday flag.
-
- * main.h: Added global week_starts_on_monday flag.
-
-1998-08-21 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * calobj.c (ical_object_create_from_vobject): If mail alarm or
- program alarm are missing the action, then set an empty default.
-
-1998-08-18 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gnome-month-item.c (gnome_month_item_day2index): New public
- function to get the displayed day index of the specified date.
-
- * gnome-cal.c (gnome_calendar_goto_today): New public function to
- jump to the current day.
-
- * goto.c (day_event): Jump to the selected day when the user
- clicks the mouse, and prelight days as appropriate.
-
- * timeutil.c (time_from_day): New public function to build a
- time_t from a year/month/day triplet.
-
- * gnome-month-item.c (gnome_month_item_num2child):
- (gnome_month_item_child2num): New public functions to convert an
- index into a child and vice-versa, respectively.
- (gnome_month_item_num2day): New public function to convert a child
- number into a displayed day number.
-
- * goto.c (goto_dialog): Doh, use gnome-dialog properly :-)
-
- * gnome-month-item.c (create_items): Use g_strdup()ed day names
- from the start.
-
-1998-08-17 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * main.c (gnome_toolbar): Made it use goto.xpm.
-
- * Makefile.am (EXTRA_DIST): Added goto.xpm to the list of files.
-
-1998-08-13 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gnome-month-item.c (gnome_month_item_set_arg): Doh. Actually
- recalculate the days using the month and year.
-
- * main.c: Added "Go to" button to quickly jump to a specific date.
-
- * goto.c: New file that defines the quick go-to date dialog.
-
- * Makefile.am (gnomecal_SOURCES): Added goto.c to the sources.
-
-1998-08-11 Nuno Ferreira <nmrf@rnl.ist.utl.pt>
-
- * main.c (new_calendar): Made title i18n friendly. This was bug
- #215.
-
- * eventedit.c (ee_store_recur_end_to_ical): Set recur->enddate to
- recur->_enddate, not to itself, when adding recurring event and
- supplying an end date. This fixes (at least part of) bug #99.
-
-1998-08-10 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * month-view.[ch]: Start of the month view widget. This will use
- the generic month item and extend it to have the semantics desired
- for the gnomecal month view.
-
- * gnome-month-item.[ch]: New generic canvas item for the month
- view and the "small calendars". This is intended to be a
- high-level display engine for monthly calendars. This is a work
- in progress.
-
- * gnome-cal.h (GnomeCalendar): Added a month_view field.
-
- * gnome-cal.c (setup_widgets): Create the month view and insert it
- into the notebook.
-
- * Makefile.am: Added month-view.[ch] and gnome-month-item.[ch] to
- the sources.
-
-1998-08-03 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * main.c (about_calendar_cmd): Use an array of const strings to
- keep gcc happy.
-
- * alarm.c (alarm_compare_by_time): Use gconstpointer to keep gcc happy.
- * calendar.c (calendar_object_compare_by_start): Likewise.
- * gncal-full-day.c (child_compare_by_start): Likewise.
-
-1998-07-07 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * main.c: Add support for --view flag.
- (session_save_state): Save the view mode;
- (new_calendar): Now takes a view mode flag.
-
- * gnome-cal.c (gnome_calendar_get_current_view_name): New
- function for enhancing the session management support for
- gnomecal.
- (gnome_calendar_set_view): New function that makes a given page
- active.
-
-1998-07-01 Nuno Ferreira <nmrf@rnl.ist.utl.pt>
-
- * gncal.desktop: Added Portuguese translation.
-
-Mon Jun 22 13:01:16 1998 Havoc Pennington <hp@pobox.com>
-
- * main.c (session_save_state): Use gnome_geometry_string to get
- the geometry string.
-
-1998-06-04 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * eventedit.c (ee_rp_init_rule): Do not subtract 1 from
- tm->tm_mday for the default_day.
-
- * gnome-cal.c (gnome_calendar_new):
- (gnome_calendar_goto): Use the start of the day -- things expect
- it to be that way.
-
-1998-05-27 Nuno Ferreira <nmrf@rnl.ist.utl.pt>
-
- * eventedit.c (ee_store_recur_rule_to_ical): Fill in
- ical->recur->interval from value in spin_button. This ixed an
- infinnite loop.
-
-1998-05-30 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal-full-day.c (child_draw): Paint the decorations correctly.
- (child_draw_decor): Paint the recurrence/bell icons correctly.
-
-1998-05-25 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * eventedit.c (ee_rp_init_rule): Use the contents of
- ee->ical->dtstart for computing the predefined values of the recurrence.
-
- * gncal-full-day.c (gncal_full_day_unrealize): Fix the gc
- destruction in the unrealization code and fix the pixmap unrefing.
-
- * main.c (close_cmd): Remove a bad hack that disabled calendar
- widget destruction.
-
- * calobj.c (ical_object_generate_events): Fix for the weekly event
- generation. Was reported on the bug tracking system.
-
-1998-05-18 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * gncal-full-day.c (layout_children): Implemented ultra-cool
- layout for the events that share the same time range. Gals and
- guys you can now drop Outlook on the recycle bin.
-
- Which reminds me. We do not have a recycle bin. How could that
- happen in a project as cool as this one? Someone explain this to
- me.
-
-1998-05-18 Federico Mena <federico@nuclecu.unam.mx>
-
- * gncal-full-day.c (paint_back): Eliminated unnecessary border repainting.
-
-Sun May 17 17:55:03 1998 Havoc Pennington <hp@pobox.com>
-
- * gncal-todo.c (simple_todo_editor): Close dialog when return is pressed.
-
-1998-05-15 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * gnome-cal.c (mark_gtk_calendar_day): Bug free version of the
- range computation in place.
-
- * gncal-year-view.c (year_view_mark_day): Use the same new version
- of the range computation here.
-
- * calobj.c (ical_object_generate_events): Fix the begin/end
- condition.
-
-1998-05-14 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * timeutil.c (isodate_from_time_t): Do not add the spurious
- padding.
-
- * calobj.c (store_date_list): Bug fix: I was using the wrong
- pointer when saving the exception date list.
- (set_date_list): Bug fix: load correctly the complete exception
- date list.
- (set_date_list): Use ',' for the exception date separator as the
- versit people can not get their standard right.
-
- * gncal-full-day.c (unrecur_appointment): Support for making an
- existing recurrent event `movable' for a day.
-
- * calobj.c (ical_object_add_exdate): New routine, used to add
- exception dates.
- (ical_object_duplicate): New routine: used to do the magic
- recur->no-recur event.
-
-1998-05-08 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * gncal-full-day.c (new_appointment): Use gtk_calendar freeze/thaw
-
- * gncal-year-view.c (gncal_year_view_set_year): Use gtkcalendar freeze/thaw.
-
- * eventedit.c (event_editor_init): Use gnome_dialog_set_close to
- avoid the ugly warning.
-
- * main.c (display_objedit): Default to the day the user is looking
- at.
-
-1998-05-05 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * gncal-day-panel.c (full_day_size_allocated): Do not emit a value
- changed signal if the value is the same.
-
-1998-05-04 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * prop.c (prop_apply): Only run the apply code once.
-
-1998-05-03 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * gncal-day-panel.c (update): Draw the day at startup.
- (gncal_day_panel_set): Fix selected-day display.
- (gncal_day_panel_new): Switch day on double clicks, not on single
- clicks.
-
- * calobj.c (ical_object_compute_end): Removed debug messages.
-
-1998-04-30 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * prop.c (prop_apply): Do not call prop_cancel, ths is now using
- GnomePropertyDialog.
-
-1998-04-29 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * gncal-week-view.c (sync_week): Use gnome_calendar_tag_calendar.
-
- * gnome-cal.c (gnome_calendar_tag_calendar): New routine used to
- fill a gtk_calendar with the events on a GnomeCalendar object.
-
- * gncal-week-view.c (gncal_week_view_new): Set the week to the day
- we double clicked.
-
-1998-04-28 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * gnome-cal.c (calendar_notify): Apply black magic to get mail
- notifications to work.
-
- * gncal-full-day.c (child_focus_out): Temporary optimization, the
- child_focus_out is constantly calling the
- gnome_calendar_object_changed when the property editor has been
- invoked. This happens every time the mouse moves crosses the main
- window.
-
- * calendar.c (calendar_object_changed): Reschedule alarms when a
- calendar object has changed its times.
-
-Sat Apr 25 22:20:45 1998 Havoc Pennington <hp@pobox.com>
-
- * eventedit.c, eventedit.h: Descend from GnomeDialog. Took vbox
- out of class structure; use GnomeDialog vbox
- instead. gnome_dialog_set_destroy instead of destroying in button
- callbacks. Don't create buttons, separator, or vbox manually.
- #include <libgnomeui/gnome-dialog.h>.
-
-1998-04-24 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * calobj.c (ical_object_create_from_vobject): Fixed alarm loading;
- Load snooze time and snooze count
-
-1998-04-23 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * calendar.c (calendar_save): Actually save the to-do entries.
-
- * gncal-todo.c (simple_todo_editor): Now you can add and edit
- to-do entries.
-
-1998-04-22 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal-full-day.c: Made it use popup_menu().
-
- * popup-menu.c: New file with utility functions for creating popup
- menus. Maybe such a thing would be useful in libgnomeui, a la
- gnome-app-helper?
-
- * Makefile.am (gnomecal_SOURCES): Added popup-menu.[ch] to the sources.
-
-1998-04-22 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * prop.c (properties): Added Calendar properties editor.
- (properties): Make the code use a propery box.
-
- * main.c: Save/load properties (fix to old commit).
-
-1998-04-21 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal-todo.c: New widget for editing TODO lists. This will be
- worked on a lot.
-
- * Makefile.am (gnomecal_SOURCES): Added gncal-todo.[ch] to the sources.
-
- * gncal-day-panel.c: Make it use the new TODO widget.
-
-1998-04-21 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * timeutil.c (isodate_from_time_t): Do not save with the global
- time flag (Z at the end of the isodate). When we figure out a way
- to load times in GMT time, we will add this back
-
- * view-utils.c (popup_menu): Moved this routine here as there are
- more users of this code.
-
- * gncal-day-view.c (gncal_day_view_class_init): Add button press
- handler.
- (new_appointment): New routine for creating appointments on a day.
-
-
-
- * main.c (save_ok): Added call to gtk_window_set_wmclass.
-
- * gncal-day-panel.c (calendar_day_selected): Fix, years for mktime
- should substract 1900 and gtk_calendar stores years relative to
- year 0.
-
- * gncal-week-view.c (gncal_week_view_new): Make the week view
- descend from VBox so that we can add a label to it.
- (gncal_week_view_set): Display the ending day of the week
- correctly.
-
- Added a label that displays the week range.
-
-1998-04-21 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gnome-cal.c: Made it use GncalDayPanel.
-
- * gncal-day-panel.c: New widget for the day view in the main
- calendar toplevel. It basically takes care of everything
- gnome-cal did by hand with respect to the day view.
-
- * Makefile.am (gnomecal_SOURCES): Added gncal-day-panel.[ch] to
- the rules.
-
- * main.c: Added a separator between the About menu item and the
- help topics.
-
-1998-04-20 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * eventedit.c (ee_ok): Mark the event as non-new after accepting changes.
-
-1998-04-20 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal-full-day.c (gncal_full_day_get_day_start_yoffset): New
- public function that returns the y offset for the row
- corresponding to the "day begin" time.
-
- * gncal-full-day.c (gncal_full_day_key_press): Now any printable
- keystroke (not just Return) will activate the selected range.
-
- * gncal-full-day.c (paint_back): Made it use the new paint_row
- function instead of painting everything directly. We calculate
- areas in a smarter way so there is even less flicker than before,
- especially when selecting regions.
-
- * eventedit.c: Sensitize recurrence widgets properly.
-
- * calobj.c (duration_callback): Pass the correct pointer type to
- is_date_in_list().
-
-1998-04-20 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * calobj.c (duration_callback): Take exception dates into
- account.
-
- * gncal-full-day.c (new_appointment): Setup the event editor dates
- to those of the currently displayed day.
- (gncal_full_day_selection_range): Use sensible values in the case
- no range is selected.
- (new_appointment): Events now use the current day for event creation.
-
- * view-utils.c: Pretty up the time display.
-
- * calobj.c (ical_object_compute_end): Initialize
- ico->recur->enddate, otherwise we loop forever during final date computation.
-
- * eventedit.c: Now recurrence is toggled by a radio button in the
- recurrence page, as the checkbox is confusing.
-
- * calobj.c (is_date_in_list): Add support for the exclussion
- dates.
-
-1998-04-18 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * gncal-year-view.c (double_click): Fix this routine as well.
-
- * gncal-week-view.c (jump_to_day): Bind the gtkcalendar signals to
- the week.
-
- * gncal-year-view.c (gncal_year_view_set_year): Put things in the
- proper range. Now the year view actually matches this year.
-
- * gnome-cal.html: Added small documentation.
-
- * main.c: Add more icons to the menus; Rename some menubar
- entries; Add `new' icon to the toolbar.
- (dump_events): Added argument handling and dumping of events from
- the command line. Extremely cool.
-
- * getdate.y: Taken from the CVS source code. Used for date
- parsing in the command line.
-
- Internationalized getdate.y. Wee! It even works with spanish.
-
- * calobj.c (ical_object_to_vobject): Add Quoted printable property
- to items containing new lines.
- (duration): Use unsigned integers, to work around buggy calendar
- files generated by korganizer.
-
- * main.c (save_calendar_cmd): Do not ask for file name if we are
- saving.
- (save_as_calendar_cmd): New command.
-
-
-1998-04-17 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * alarm.c (alarm_kill, alarm_init, alarm_add): Implement the alarm
- management framework.
-
-1998-04-17 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * calobj.c (ical_new): Added mandatory status property.
- (ical_object_to_vobject): Only store "related" list if it exists.
- (store_list): Add terminating null char and free the correct data.
-
- * main.c (save_calendar_cmd): Implemented calendar saving.
- (open_calendar_cmd): Implemented calendar loading.
- (new_calendar_cmd): Implemented calendar creation.
- (new_calendar): Don't load our test calendar by default.
-
- * gncal-full-day.c (delete_appointment): Delete appointment implemented.
-
- * eventedit.c (ee_store_recur_values_to_ical): Free/create
- ical's recurrence appropriately.
- (ee_rp_init_rule): Initialize all missing parameters from ical.
- (ee_rp_init_ending_date): Initialize missing fields from ical.
-
-1998-04-17 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * gnome-cal.c (gnome_calendar_remove_object): Add support for
- removing objects.
-
-1998-04-17 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * eventedit.c (ee_init_recurrence_page): New function that creates
- the recurrence page in the toplevel notebook.
- (ee_store_recur_values_to_ical): Now we can also store the recurrences.
-
-1998-04-17 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * calobj.c (ical_object_generate_events): Implement
- RECUR_MONTHLY_BY_POS implemented.
- (ical_object_create_from_vobject): Fix the alarm
- initialization code.
- (save_alarm): Save alarms.
- (ical_object_generate_events): Fixed the recurrent code to take
- into account the recur->endate field (if at all specified).
-
- (ical_object_to_vobject): Implement recurrence rule saving.
-
-1998-04-16 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * eventedit.c (ee_store_alarm): Use menu_shell->children, not
- menu->children. Why does GtkMenu have a children field in the
- object structure?
- (check_dates): New function that insures that start_date < end_date.
- (check_times): In addition to checking whether the event spans the
- whole day, now it insures that start_time < end_time.
-
- * gncal-full-day.c (child_set_size): Now children get bigger
- temporarily while they are focused. This allows the handles not
- to "overlap" the rows used by the child and thus allow editing of
- very thin events.
- (recompute_motion): Fix for new child coordinates.
- (gncal_full_day_expose): Make it use find_child_by_window()
- instead of looking for it by hand.
-
- * bell.xpm recur.xpm: XPM files for events with alarm and
- recurrence, respectively.
-
-1998-04-15 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal-full-day.c (button_1): Preserve the up/down cursor while dragging.
-
- * gncal-full-day.c (child_draw): Now children have a vertical
- handle as well. This can be used to move the child anytime, not
- only when it is focused.
- (recompute_motion): Modified for new drag behavior.
-
- * eventedit.c (ee_init_general_page): The general_owner may be
- null. Do the proper thing when creating the label.
- (ee_ok): Update the gnome calendar appropriately.
-
- * timeutil.h:
- * gncal-year-view.h: Add some missing prototypes.
-
- * gncal-full-day.c (child_popup_menu): Set the sensitivity of menu
- items according to whether the ical object is being edited or not.
-
- * eventedit.c (event_editor_new): Set the "being edited" flag on
- the ical object (stored as the ical object's user data).
- (event_editor_destroy): Release the flag.
-
- * calobj.h: The iCalObject structure now has a generic user_data pointer.
- * calobj.c (ical_object_set_user_data ical_object_get_user_data):
- Functions to set this data.
-
- * gncal-full-day.c (child_button_press): Do child popup menu correctly.
-
- * main.c (about_calendar_cmd): Fixed my address and added Arturo
- to the authors in the about box.
-
- * gncal-full-day.c (find_child_by_window): Compare child's widget
- windows by user_data (which will be the parent widget, that is,
- the text widget). We cannot assume that child->widget->window
- will be *the* window we are interested on because there may be
- child widgets with multiple windows.
-
-1998-04-15 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * calobj.c (ical_foreach): Define iterator routine.
-
-1998-04-15 Arturo Espinosa Aldama <arturo@nuclecu.unam.mx>
-
- * gncal-year-view.[hc]: Now using time_t for new and set.
- Random fixes, as well.
-
-1998-04-15 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal-full-day.c (button_3): New popup menus activated with
- mouse button 3.
- (create_appointment): Create a new appointment from the popup
- menus. See the FIXME.
-
-1998-04-15 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * gncal-full-day.c (layout_kill_rows): Routine to destory rows
- array properly.
-
- * gncal-year-view.c (gncal_year_view_new): Add missing year in
- call to strftime.
-
- * calobj.c (ical_object_create_from_vobject): Fixed memory leaks
- from the return values of versit's fakeCString.
-
-1998-04-14 Arturo Espinosa Aldama <arturo@nuclecu.unam.mx>
-
- * gncal-year-view.[hc]: New widget for the year view.
- * Makefile.am: added required compilation of the new files.
-
-1998-04-14 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * eventedit.c (event_editor_setup_time_frame): Fixed some table
- expansions to make the dialog look nicer when resized.
-
- * calobj.c (ignore_space): Fixed compiler warning about unused
- computed value.
- (ocurrencelist): Replace str by p confusion. Removed unused
- variables value and q.
- (daynumber): Fixed a couple of warnings about unused values.
- (load_recurrence): Removed unused variable c. Added a default
- clause to the switch(type).
-
- * eventedit.c (ee_rp_init_frequency): Removed unused variable content.
- Fixed a compiler warning by adding a missing cast.
-
- * calobj.c (ical_object_create_from_vobject): Make the
- load_recurrence() part work correctly. Eliminated use of
- syntax_error variable.
-
-1998-04-13 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal-full-day.c (child_key_press): Unfocus the child and focus
- the parent fullday widget when the user presses Esc.
-
- * gncal-week-view.c (gncal_week_view_update): Now takes object and
- flags parameters.
- * gncal-day-view.c (gncal_day_view_update): Likewise.
- * gncal-full-day.c (gncal_full_day_update): Likewise.
- (child_focus_in): New function. In conjunction with
- child_focus_out(), these only display the handles in the child
- when it is focused. The result is that the user can see more of
- the child's text when nothing is focused, and we can also display
- fatter and nicer drag handles.
-
- * gnome-cal.c (gnome_calendar_object_changed): Now takes an
- additional flags parameter
- (gnome_calendar_update_all): Made function static. Now takes
- changed object and flags parameters as well.
- (gnome_calendar_object_changed): Now takes additional flags
- parameter to indicate what changed in the specified object.
-
- * calobj.h (CalObjectChange): New enum with flags to describe what
- has been changed in an object.
-
- * gncal-full-day.h:
- * gncal-full-day.c (gncal_full_day_focus_child): New function to
- let the outside world decide which child to focus.
- (gncal_full_day_focus_child): Bleah. We have to synthesize a
- click because GtkText will not set the cursor when you focus it.
-
- * gnome-cal.c (day_view_range_activated): Focus the new child in
- the full day widget.
-
- * eventedit.c (event_editor_setup_time_frame): Re-aligned some
- widgets to make it look prettier.
- (ee_alarm_widgets): Likewise.
- (ee_init_general_page): Likewise.
- (ee_classification_widgets): Likewise.
- (event_editor_init_widgets): Likewise.
-
- * gnome-cal.c (day_view_range_activated): Create new object and
- add it to the calendar. You can now select a range in the
- full-day view, hit Return, and a new event will be added at the
- selected range. I still have to figure out how to focus this new child.
-
- * gncal-full-day.c (paint_back): Rewrote function to avoid
- painting an area more than once -- eliminate flicker.
- (paint_back_rows): New function that calls paint_back() only for
- the area of the specified rows.
- (gncal_full_day_button_press):
- (gncal_full_day_button_release):
- (gncal_full_day_motion): Made these functions use
- paint_back_rows() instead of paint_back(), to eliminate flicker. Wheee!
-
-1998-04-12 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gnome-cal.c (setup_day_view): We now connect to the
- range_activated signal of the fullday widget instead of catching
- key presses ourselves.
- (day_view_range_activated): New function that creates a new
- iCalObject and inserts it into the calendar, not finished yet.
-
-1998-04-11 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal-full-day.c (get_time_from_rows): New function, calculates
- a pair of time_t values from the specified start and number of rows.
-
- * gncal-full-day.h (GncalFullDayClass): New signal
- "range_activated". It is emitted when a range is selected and the
- user hits Return.
- (gncal_full_day_selection_range): New function, returns the
- selected range.
-
- * gncal-full-day.c (struct drag_info): Moved selection information
- to their own fields instead of sharing the child's drag fields.
- This allows us to keep the selection when a child is moved.
- (recompute_motion): Made the case when (row < di->sel_click_row)
- work correctly.
-
-1998-04-11 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * gnome-cal.c (gnome_calendar_goto): Add support for navigating
- on the day view.
-
- * timeutil.c (time_start_of_day, time_end_of_day, time_day_hour):
- New time manipulation functions.
-
- * eventedit.c (ee_rp_init_frequency): Add the different frequency
- editors to a notebook. Make the notebook startup on the entry
- selected recurrence type;
-
-1998-04-11 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal-full-day.c (recompute_motion): Now we support selecting a
- range in the main window (by clicking+dragging). It flickers
- horribly and is not perfect, but it is a start.
-
-1998-04-09 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal-full-day.c: #include <string.h>
-
- * gncal-full-day.c (child_map): Show instead of just map the child
- widget (otherwise the text widget gets confused and will not focus).
-
- * calobj.c (ical_object_to_vobject): Quote chars as 'x', not "x".
-
- * calobj.h: Added prototype for ical_object_to_vobject().
-
- * gnome-cal.c (gnome_calendar_object_changed): New function. This
- should be called when a calendar object is changed.
-
- * gncal-full-day.c (update_from_drag_info): Call
- gnome_calendar_object_changed() instead of updating manually.
-
- * calendar.c (calendar_add_object):
- (calendar_remove_object): Set the modified flag to true.
-
- * gncal-full-day.c (gncal_full_day_draw): Finished implementing
- this function.
-
-1998-04-08 Raja R Harinath <harinath@cs.umn.edu>
-
- * gncal.c (update_calendar): Say `#if 0', not `#ifdef 0'.
-
-1998-04-07 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * eventedit.c: Removed unused global variable parent_class.
-
- * eventedit.h: Renamed gtk_window field to window.
- Made the parent_class field in the EventEditorClass structure be a
- GtkWindowClass, not a gnome property box class.
- Added prototype for event_editor_get_type().
-
-1998-04-06 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal-week-view.c (gncal_week_view_new): Use the new
- gtk_table_set_homogeneous() instead of setting the variable directly.
-
-1998-04-03 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * eventedit.c (ee_create_ae): Make it return void.
- (ee_alarm_widgets): Remove some unused variables.
- (ee_store_alarm): Make it return void.
- #include <string.h>
-
- * eventedit.h: #include "gnome-cal.h"
-
- * calobj.c (list_free): Don't use g_free in the g_list_foreach.
-
- * calendar.h: Add prototype for calendar_load().
-
- * timeutil.h: Add prototypes for time_add_*().
-
- * calendar.c:
- * calobj.c:
- * eventedit.c:
- * gnome-cal.c: #include "timeutil.h"
-
- * gncal-day-view.c (gncal_day_view_size_request): Make the minimum
- width equal or larger to the title width.
-
- * main.c: #include "eventedit.h"
- (main): Add a return statement.
- (new_calendar): Show stuff *after* the calendar has been loaded.
-
- * gnome-cal.c (gnome_calendar_load): Update the day view.
- (setup_widgets): Hackish setup of a day view widget - will fix later.
- (gnome_calendar_init): Initialize all fields.
-
- * gnome-cal.h: Added day_view field. Maybe this should be changed
- when the a complete day view panel is complete.
-
- * gncal-day-view.c (gncal_day_view_update): Draw after update, not
- before.
-
-1998-04-06 Carsten Schaar <nhadcasc@fs-maphy.uni-hannover.de>
-
- * versit/.cvsignore: New file.
-
-Fri Apr 3 22:31:54 1998 Tom Tromey <tromey@cygnus.com>
-
- * calendar.c: Include <config.h>.
-
-1998-04-03 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * timeutil.c (time_add_year, time_add_year, time_add_week):
- Routines for time manipulation.
-
- * calobj.c (ical_object_destroy): Full destruction of the object.
-
- * eventedit.c: Finished the main event editor form; It still
- lacks the details and the recurrence bits. It now adds events
- and cancels.
-
-1998-04-03 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * view-utils.c (view_utils_draw_events): The "better" format
- string for strftime() wasn't better, after all :-(
-
-1998-04-02 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal-full-day.c: New full-day widget. It is still a work in
- progress. It will be similar to M$ Schedule's nifty full day view
- widget, but with Gtk's elegance :-)
-
- * Makefile.am (gnomecal_SOURCES): Added gncal-full-day.[ch] to the sources.
-
-1998-04-02 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * eventedit.c: Object editor widget. We dropped ObjEdit.
-
- * timeutil.c (time_from_isodate): Fix.
-
- * view-utils.c (view_utils_draw_events): Changed the display
- formats.
-
-1998-04-02 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * view-utils.c (view_utils_draw_events): Use better format
- specifier for strftime().
- (view_utils_draw_textured_frame): Ultra-nifty function to draw
- textured "metal" frames, like Netscape's handles.
-
-1998-04-02 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * gncal-day-view.c (gncal_day_view_update): Day events are now
- cached inside the widget. They get initialized at this time.
-
- * view-utils.c (view_utils_draw_events): Use the list of events.
-
-1998-04-02 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal-day-view.c (gncal_day_view_set_shadow): New customization
- function. We can't decide on a stupid border type :-)
- (gncal_day_view_init): Made GTK_SHADOW_ETCHED_IN be the default
- shadow type. Looks good.
-
-1998-04-02 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * main.c: New main program that uses our new datatypes and
- objects.
-
- * calendar.c (calendar_load_from_vobject, calendar_load):
- Implement loading of vCalendar objects and vCalendar files.
-
- * calobj.c (ical_object_create_from_vobject): Implement loading of
- vCalendar event and todo objects.
-
- * timeutil.c (isodate_from_time_t): New function.
-
- * gnome-cal.c, gnome-cal.h: Implement a toplevel widget, derived
- from GnomeApp. It holds all of the day views and arbitrates the
- display.
-
-1998-04-02 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal-week-view.[ch]: New week view composite widget. This
- provides a full week view (7 day views plus busy time display --
- the latter is currently unimplemented).
-
-1998-04-01 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal-day-view.c: New day view widget. It is intended to be a
- child widget of the week view composite widget.
-
- * calendar.c (calendar_get_objects_in_range):
- (calendar_get_events_in_range):
- (calendar_get_journal_in_range):
- (calendar_get_journal_in_range): These functions now take a
- sort_func parameter, which is of type GCompareFunc. If the
- specified value is non-NULL, it will return a sorted list.
- Otherwise, it will return an unordered list.
- (calendar_compare_by_dtstart): Provide a generic sorting routine
- for calendar objects.
-
-1998-04-01 Miguel de Icaza <miguel@kernel.org>
-
- * Start from scratch
-
-Tue Mar 31 23:46:50 1998 Tom Tromey <tromey@cygnus.com>
-
- * timeutil.c (format_simple_hour): `buf' now static.
-
-1998-03-31 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal.c: Removed #include "gtkcalendar.h", because it now comes
- from libgnomeui.
-
- * Makefile.am (gncal_SOURCES): Added new source files to the rules.
-
- * timeutil.c (format_simple_hour): New function, formats an
- hour/am_pm pair into a string of the form "3am", "12pm", "05h",
- "19h", etc. It is used by the day view widget for its labels.
-
-1998-03-31 Craig Small <csmall@small.dropbear.id.au>
-
- * Now has (non working) session maangement
- * Uses a clist for the dailylist like gtt
-
-Sat Mar 21 15:43:20 1998 Tom Tromey <tromey@cygnus.com>
-
- * gncal.c: Use gnome_message_box_*, not gnome_messagebox_*.
-
-1998-03-12 Craig Small <csmall@small.dropbear.id.au>
-
- * Now linked (in some horrible way) to the gtkcalendar widget.
-
-Sun Mar 8 16:38:10 1998 Tom Tromey <tromey@cygnus.com>
-
- * Makefile.am (INCLUDES): Added GNOME_INCLUDEDIR.
- (gncal_LDADD): Don't include libsupport.a.
-
- * gncal.c (main): Use new gnome_init.
-
-1998-02-19 Federico Mena Quintero <federico@nuclecu.unam.mx>
-
- * gncal.c (main): Added app_id "gncal".
-
-1998-02-19 Carsten Schaar <nhadcasc@fs-maphy.uni-hannover.de>
-
- * Makefile.am (gncal_LDADD): Added '$(INTLLIBS)'
-
-1998-02-18 Raja R Harinath <harinath@cs.umn.edu>
-
- * Makefile.am (gncal_LDADD): Include `libsupport.a'.
-
- * calcs.c (month_atoi): Replace buggy explicit loop string compare
- with strcasecmp.
- (day_atoi): Likewise.
-
-Sun Jan 25 23:38:30 1998 Miguel de Icaza <miguel@nuclecu.unam.mx>
-
- * menus.c: Replace "Quit" with "Exit".
diff --git a/calendar/Makefile.am b/calendar/Makefile.am
deleted file mode 100644
index e17d581184..0000000000
--- a/calendar/Makefile.am
+++ /dev/null
@@ -1,7 +0,0 @@
-if ENABLE_PILOT_CONDUITS
-CONDUIT_DIR = conduits
-else
-CONDUIT_DIR =
-endif
-
-SUBDIRS = idl cal-util pcs cal-client gui $(CONDUIT_DIR)
diff --git a/calendar/TODO b/calendar/TODO
deleted file mode 100644
index 4a5dd6c6ff..0000000000
--- a/calendar/TODO
+++ /dev/null
@@ -1,88 +0,0 @@
-Cal-util:
-
-- calobj.h depends on libversit/vcc.h, because it uses a VObject for
- ical_object_create_from_vobject(). This should be an internal
- function in the PCS and nothing else (we do not install libversit,
- so our public libraries should not depend on it).
-
-- Or maybe we *should* install libversit, since the addressbook code
- uses it as well.
-
-- timeutil has a lot of crap and some namespace pollution. Clean it
- up.
-
-PCS:
-
-- When loading a calendar, substitute duplicated UIDs by new ones, and
- possibly print out a warning message.
-
------ Old Gnomecal TODO starts here -----
-
-Pilot:
-
-* Better support for untimed events (we have none now).
-
-* Hash objects based on their UIDs.
-
-* Add placeholders for deleted events, so that we can kill those
- when syncing to the pilot.
-
-BUGS:
-
-- Recurrence end date is wrong. An event that repeats daily will not
- be included in the ending date of the recurrence (off-by-one
- error?).
-
-- X-fields (extensions) are stripped from a vCal file when it is
- saved. They should be preserved.
-
-Features:
-
-- Add a calendar-week so that people know which week of the year it is
-
-Year view:
-
-- See why it is so fucking slow when opening its notebook page for the
- first time.
-
-Month view:
-
-- Popup menu like in the year view.
-
-- Double click on a day takes you to the day view.
-
-- DnD of appointments to move them around.
-
-Week view:
-
-- Nice display as in the Palm Pilot.
-
-Day view:
-
-- Rewrite in terms of the canvas and make it pretty.
-
-Preferences:
-
-- BUG: 12/24 hours stuff is not consistent - I remember that on editing
- new appointment you get the time-selectors always on 12-hr format
-
-Event editor dialog:
-
-- Make it figure out whether the alarm is in
- minutes/hours/days/etc. (via a cascade of conditions) and set the
- widgets appropriately.
-
-Gnome date selection widget:
-
-- Make the displayed date be localized properly -- use strftime().
-
-General:
-
-- Write online help. Nice help. Lots of help.
-
-- If you leave the calendar running overnight, the "current day"
- marker in the GnomeMonthItems does not get updated.
-
-- Add categories support. Color-coded categories.
-
-- Untimed events
diff --git a/calendar/cal-client/.cvsignore b/calendar/cal-client/.cvsignore
deleted file mode 100644
index 1537e6e01d..0000000000
--- a/calendar/cal-client/.cvsignore
+++ /dev/null
@@ -1,15 +0,0 @@
-Makefile.in
-.deps
-.libs
-.pure
-Makefile
-evolution-calendar-stubs.c
-evolution-calendar-skels.c
-evolution-calendar-common.c
-evolution-calendar.h
-evolution-calendar-common.lo
-evolution-calendar-skels.lo
-evolution-calendar-stubs.lo
-*.lo
-*.la
-client-test
diff --git a/calendar/cal-client/Makefile.am b/calendar/cal-client/Makefile.am
deleted file mode 100644
index 8813db05bf..0000000000
--- a/calendar/cal-client/Makefile.am
+++ /dev/null
@@ -1,86 +0,0 @@
-#
-# libcal-client
-#
-
-CORBA_GENERATED = \
- evolution-calendar-common.c \
- evolution-calendar-skels.c \
- evolution-calendar-stubs.c
-
-CORBA_HEADERS_GENERATED = \
- evolution-calendar.h
-
-idls = \
- $(srcdir)/../idl/evolution-calendar.idl
-
-idl_flags = `$(GNOME_CONFIG) --cflags idl` -I $(datadir)/idl
-
-$(CORBA_GENERATED): $(idls)
- $(ORBIT_IDL) $(idl_flags) $(srcdir)/../idl/evolution-calendar.idl
-
-INCLUDES = \
- -DGNOMELOCALEDIR=\""$(localedir)"\" \
- -DG_LOG_DOMAIN=\"cal-client\" \
- -I$(top_srcdir)/calendar \
- -I$(srcdir) -I$(top_srcdir) \
- -I. \
- -I.. \
- -I$(top_builddir) \
- -I$(top_builddir)/libical/src/libical \
- -I$(top_srcdir)/libical/src/libical \
- $(BONOBO_GNOME_CFLAGS)
-
-lib_LTLIBRARIES = libcal-client.la
-
-libcal_clientincludedir = $(includedir)/evolution/cal-client
-
-libcal_client_la_SOURCES = \
- $(CORBA_GENERATED) \
- cal-client-types.c \
- cal-client.c \
- cal-listener.c \
- cal-listener.h \
- cal-query.c \
- query-listener.c \
- query-listener.h
-
-libcal_clientinclude_HEADERS = \
- $(CORBA_HEADERS_GENERATED) \
- cal-client-types.h \
- cal-client.h \
- cal-query.h
-
-#
-# make a static library for use by calendar conduit's shared library
-#
-noinst_LTLIBRARIES = libcal-client-static.la
-libcal_client_static_la_SOURCES = $(libcal_client_la_SOURCES)
-libcal_client_static_la_LDFLAGS = --all-static
-
-
-#
-# client-test program
-#
-
-noinst_PROGRAMS = client-test
-
-client_test_SOURCES = \
- client-test.c
-
-client_test_INCLUDES = \
- $(INCLUDES) \
- -DG_LOG_DOMAIN=\"client-test\"
-
-client_test_LDADD = \
- $(BONOBO_VFS_GNOME_LIBS) \
- $(EXTRA_GNOME_LIBS) \
- $(top_builddir)/calendar/cal-util/libcal-util.la \
- $(top_builddir)/libversit/libversit.la \
- $(top_builddir)/libical/src/libical/libical.la \
- libcal-client.la
-
-BUILT_SOURCES = $(CORBA_GENERATED)
-CLEANFILES += $(BUILT_SOURCES)
-
-dist-hook:
- cd $(distdir); rm -f $(BUILT_SOURCES)
diff --git a/calendar/cal-client/cal-client-types.c b/calendar/cal-client/cal-client-types.c
deleted file mode 100644
index 23aa14475f..0000000000
--- a/calendar/cal-client/cal-client-types.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Evolution calendar utilities and types
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Authors: Federico Mena-Quintero <federico@ximian.com>
- * JP Rosevear <jpr@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <stdlib.h>
-#include "cal-client-types.h"
-
-
-
-/**
- * cal_client_change_list_free:
- * @list: List of #CalClientChange structures.
- *
- * Frees a list of #CalClientChange structures.
- **/
-void
-cal_client_change_list_free (GList *list)
-{
- CalClientChange *c;
- GList *l;
-
- for (l = list; l; l = l->next) {
- c = l->data;
-
- g_assert (c != NULL);
- g_assert (c->comp != NULL);
-
- gtk_object_unref (GTK_OBJECT (c->comp));
- g_free (c);
- }
-
- g_list_free (list);
-}
diff --git a/calendar/cal-client/cal-client-types.h b/calendar/cal-client/cal-client-types.h
deleted file mode 100644
index c356f2378e..0000000000
--- a/calendar/cal-client/cal-client-types.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Evolution calendar utilities and types
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Authors: Federico Mena-Quintero <federico@ximian.com>
- * JP Rosevear <jpr@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef CAL_CLIENT_TYPES_H
-#define CAL_CLIENT_TYPES_H
-
-#include <libgnome/gnome-defs.h>
-#include <cal-util/cal-component.h>
-
-BEGIN_GNOME_DECLS
-
-
-
-typedef enum {
- CAL_CLIENT_CHANGE_ADDED = 1 << 0,
- CAL_CLIENT_CHANGE_MODIFIED = 1 << 1,
- CAL_CLIENT_CHANGE_DELETED = 1 << 2
-} CalClientChangeType;
-
-typedef struct
-{
- CalComponent *comp;
- CalClientChangeType type;
-} CalClientChange;
-
-void cal_client_change_list_free (GList *list);
-
-END_GNOME_DECLS
-
-#endif
-
diff --git a/calendar/cal-client/cal-client.c b/calendar/cal-client/cal-client.c
deleted file mode 100644
index cd8c8713d6..0000000000
--- a/calendar/cal-client/cal-client.c
+++ /dev/null
@@ -1,1533 +0,0 @@
-/* Evolution calendar client
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gtk/gtksignal.h>
-#include <liboaf/liboaf.h>
-
-#include "cal-client-types.h"
-#include "cal-client.h"
-#include "cal-listener.h"
-
-
-
-/* Private part of the CalClient structure */
-struct _CalClientPrivate {
- /* Load state to avoid multiple loads */
- CalClientLoadState load_state;
-
- /* URI of the calendar that is being loaded or is already loaded, or
- * NULL if we are not loaded.
- */
- char *uri;
-
- /* The calendar factory we are contacting */
- GNOME_Evolution_Calendar_CalFactory factory;
-
- /* Our calendar listener implementation */
- CalListener *listener;
-
- /* The calendar client interface object we are contacting */
- GNOME_Evolution_Calendar_Cal cal;
-};
-
-
-
-/* Signal IDs */
-enum {
- CAL_OPENED,
- OBJ_UPDATED,
- OBJ_REMOVED,
- LAST_SIGNAL
-};
-
-static void cal_client_class_init (CalClientClass *class);
-static void cal_client_init (CalClient *client);
-static void cal_client_destroy (GtkObject *object);
-
-static guint cal_client_signals[LAST_SIGNAL];
-
-static GtkObjectClass *parent_class;
-
-
-
-/**
- * cal_client_get_type:
- *
- * Registers the #CalClient class if necessary, and returns the type ID assigned
- * to it.
- *
- * Return value: The type ID of the #CalClient class.
- **/
-GtkType
-cal_client_get_type (void)
-{
- static GtkType cal_client_type = 0;
-
- if (!cal_client_type) {
- static const GtkTypeInfo cal_client_info = {
- "CalClient",
- sizeof (CalClient),
- sizeof (CalClientClass),
- (GtkClassInitFunc) cal_client_class_init,
- (GtkObjectInitFunc) cal_client_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- cal_client_type = gtk_type_unique (GTK_TYPE_OBJECT, &cal_client_info);
- }
-
- return cal_client_type;
-}
-
-/* Class initialization function for the calendar client */
-static void
-cal_client_class_init (CalClientClass *class)
-{
- GtkObjectClass *object_class;
-
- object_class = (GtkObjectClass *) class;
-
- parent_class = gtk_type_class (GTK_TYPE_OBJECT);
-
- cal_client_signals[CAL_OPENED] =
- gtk_signal_new ("cal_opened",
- GTK_RUN_FIRST,
- object_class->type,
- GTK_SIGNAL_OFFSET (CalClientClass, cal_opened),
- gtk_marshal_NONE__ENUM,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_ENUM);
- cal_client_signals[OBJ_UPDATED] =
- gtk_signal_new ("obj_updated",
- GTK_RUN_FIRST,
- object_class->type,
- GTK_SIGNAL_OFFSET (CalClientClass, obj_updated),
- gtk_marshal_NONE__STRING,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_STRING);
- cal_client_signals[OBJ_REMOVED] =
- gtk_signal_new ("obj_removed",
- GTK_RUN_FIRST,
- object_class->type,
- GTK_SIGNAL_OFFSET (CalClientClass, obj_removed),
- gtk_marshal_NONE__STRING,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_STRING);
-
- gtk_object_class_add_signals (object_class, cal_client_signals, LAST_SIGNAL);
-
- object_class->destroy = cal_client_destroy;
-}
-
-/* Object initialization function for the calendar client */
-static void
-cal_client_init (CalClient *client)
-{
- CalClientPrivate *priv;
-
- priv = g_new0 (CalClientPrivate, 1);
- client->priv = priv;
-
- priv->load_state = CAL_CLIENT_LOAD_NOT_LOADED;
- priv->uri = NULL;
- priv->factory = CORBA_OBJECT_NIL;
-}
-
-/* Gets rid of the factory that a client knows about */
-static void
-destroy_factory (CalClient *client)
-{
- CalClientPrivate *priv;
- CORBA_Environment ev;
- int result;
-
- priv = client->priv;
-
- CORBA_exception_init (&ev);
- result = CORBA_Object_is_nil (priv->factory, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_message ("destroy_factory(): could not see if the factory was nil");
- priv->factory = CORBA_OBJECT_NIL;
- CORBA_exception_free (&ev);
- return;
- }
- CORBA_exception_free (&ev);
-
- if (result)
- return;
-
- CORBA_exception_init (&ev);
- CORBA_Object_release (priv->factory, &ev);
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("destroy_factory(): could not release the factory");
-
- CORBA_exception_free (&ev);
- priv->factory = CORBA_OBJECT_NIL;
-}
-
-/* Gets rid of the listener that a client knows about */
-static void
-destroy_listener (CalClient *client)
-{
- CalClientPrivate *priv;
-
- priv = client->priv;
-
- if (!priv->listener)
- return;
-
- bonobo_object_unref (BONOBO_OBJECT (priv->listener));
- priv->listener = NULL;
-}
-
-/* Gets rid of the calendar client interface object that a client knows about */
-static void
-destroy_cal (CalClient *client)
-{
- CalClientPrivate *priv;
- CORBA_Environment ev;
- int result;
-
- priv = client->priv;
-
- CORBA_exception_init (&ev);
- result = CORBA_Object_is_nil (priv->cal, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_message ("destroy_cal(): could not see if the "
- "calendar client interface object was nil");
- priv->cal = CORBA_OBJECT_NIL;
- CORBA_exception_free (&ev);
- return;
- }
- CORBA_exception_free (&ev);
-
- if (result)
- return;
-
- CORBA_exception_init (&ev);
- GNOME_Evolution_Calendar_Cal_unref (priv->cal, &ev);
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("destroy_cal(): could not unref the calendar client interface object");
-
- CORBA_exception_free (&ev);
-
- CORBA_exception_init (&ev);
- CORBA_Object_release (priv->cal, &ev);
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("destroy_cal(): could not release the calendar client interface object");
-
- CORBA_exception_free (&ev);
- priv->cal = CORBA_OBJECT_NIL;
-
-}
-
-/* Destroy handler for the calendar client */
-static void
-cal_client_destroy (GtkObject *object)
-{
- CalClient *client;
- CalClientPrivate *priv;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (IS_CAL_CLIENT (object));
-
- client = CAL_CLIENT (object);
- priv = client->priv;
-
- destroy_factory (client);
- destroy_listener (client);
- destroy_cal (client);
-
- priv->load_state = CAL_CLIENT_LOAD_NOT_LOADED;
-
- if (priv->uri) {
- g_free (priv->uri);
- priv->uri = NULL;
- }
-
- g_free (priv);
- client->priv = NULL;
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-
-
-/* Signal handlers for the listener's signals */
-
-/* Handle the cal_opened notification from the listener */
-static void
-cal_opened_cb (CalListener *listener,
- GNOME_Evolution_Calendar_Listener_OpenStatus status,
- GNOME_Evolution_Calendar_Cal cal,
- gpointer data)
-{
- CalClient *client;
- CalClientPrivate *priv;
- CORBA_Environment ev;
- GNOME_Evolution_Calendar_Cal cal_copy;
- CalClientOpenStatus client_status;
-
- client = CAL_CLIENT (data);
- priv = client->priv;
-
- g_assert (priv->load_state == CAL_CLIENT_LOAD_LOADING);
- g_assert (priv->uri != NULL);
-
- client_status = CAL_CLIENT_OPEN_ERROR;
-
- switch (status) {
- case GNOME_Evolution_Calendar_Listener_SUCCESS:
- CORBA_exception_init (&ev);
- cal_copy = CORBA_Object_duplicate (cal, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_message ("cal_opened_cb(): could not duplicate the "
- "calendar client interface");
- CORBA_exception_free (&ev);
- goto error;
- }
- CORBA_exception_free (&ev);
-
- priv->cal = cal_copy;
- priv->load_state = CAL_CLIENT_LOAD_LOADED;
-
- client_status = CAL_CLIENT_OPEN_SUCCESS;
- goto out;
-
- case GNOME_Evolution_Calendar_Listener_ERROR:
- client_status = CAL_CLIENT_OPEN_ERROR;
- goto error;
-
- case GNOME_Evolution_Calendar_Listener_NOT_FOUND:
- client_status = CAL_CLIENT_OPEN_NOT_FOUND;
- goto error;
-
- case GNOME_Evolution_Calendar_Listener_METHOD_NOT_SUPPORTED:
- client_status = CAL_CLIENT_OPEN_METHOD_NOT_SUPPORTED;
- goto error;
-
- default:
- g_assert_not_reached ();
- }
-
- error:
-
- bonobo_object_unref (BONOBO_OBJECT (priv->listener));
- priv->listener = NULL;
-
- /* We free the priv->uri and set the priv->load_state until after the
- * "cal_opened" signal has been emitted so that handlers will be able to
- * access this information.
- */
-
- out:
-
- /* We are *not* inside a signal handler (this is just a simple callback
- * called from the listener), so there is not a temporary reference to
- * the client object. We ref() so that we can safely emit our own
- * signal and clean up.
- */
-
- gtk_object_ref (GTK_OBJECT (client));
-
- gtk_signal_emit (GTK_OBJECT (client), cal_client_signals[CAL_OPENED],
- client_status);
-
- if (client_status != CAL_CLIENT_OPEN_SUCCESS) {
- priv->load_state = CAL_CLIENT_LOAD_NOT_LOADED;
- g_free (priv->uri);
- priv->uri = NULL;
- }
-
- g_assert (priv->load_state != CAL_CLIENT_LOAD_LOADING);
-
- gtk_object_unref (GTK_OBJECT (client));
-}
-
-/* Handle the obj_updated signal from the listener */
-static void
-obj_updated_cb (CalListener *listener, const GNOME_Evolution_Calendar_CalObjUID uid, gpointer data)
-{
- CalClient *client;
-
- client = CAL_CLIENT (data);
- gtk_signal_emit (GTK_OBJECT (client), cal_client_signals[OBJ_UPDATED], uid);
-}
-
-/* Handle the obj_removed signal from the listener */
-static void
-obj_removed_cb (CalListener *listener, const GNOME_Evolution_Calendar_CalObjUID uid, gpointer data)
-{
- CalClient *client;
-
- client = CAL_CLIENT (data);
- gtk_signal_emit (GTK_OBJECT (client), cal_client_signals[OBJ_REMOVED], uid);
-}
-
-
-
-/**
- * cal_client_construct:
- * @client: A calendar client.
- *
- * Constructs a calendar client object by contacting the calendar factory of the
- * calendar server.
- *
- * Return value: The same object as the @client argument, or NULL if the
- * calendar factory could not be contacted.
- **/
-CalClient *
-cal_client_construct (CalClient *client)
-{
- CalClientPrivate *priv;
- GNOME_Evolution_Calendar_CalFactory factory, factory_copy;
- CORBA_Environment ev;
-
- CORBA_exception_init (&ev);
- g_return_val_if_fail (client != NULL, NULL);
- g_return_val_if_fail (IS_CAL_CLIENT (client), NULL);
-
- priv = client->priv;
-
- CORBA_exception_init (&ev);
- factory = (GNOME_Evolution_Calendar_CalFactory) oaf_activate_from_id (
- "OAFIID:GNOME_Evolution_Wombat_CalendarFactory",
- 0, NULL, &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_message ("cal_client_construct(): Could not activate the calendar factory");
- CORBA_exception_free (&ev);
- return NULL;
- }
-
- CORBA_exception_init (&ev);
- factory_copy = CORBA_Object_duplicate (factory, &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_message ("cal_client_construct(): could not duplicate the calendar factory");
- CORBA_exception_free (&ev);
- return NULL;
- }
- CORBA_exception_free (&ev);
-
- priv->factory = factory_copy;
- return client;
-}
-
-/**
- * cal_client_new:
- *
- * Creates a new calendar client. It should be initialized by calling
- * cal_client_open_calendar().
- *
- * Return value: A newly-created calendar client, or NULL if the client could
- * not be constructed because it could not contact the calendar server.
- **/
-CalClient *
-cal_client_new (void)
-{
- CalClient *client;
-
- client = gtk_type_new (CAL_CLIENT_TYPE);
-
- if (!cal_client_construct (client)) {
- g_message ("cal_client_new(): could not construct the calendar client");
- gtk_object_unref (GTK_OBJECT (client));
- return NULL;
- }
-
- return client;
-}
-
-/**
- * cal_client_open_calendar:
- * @client: A calendar client.
- * @str_uri: URI of calendar to open.
- * @only_if_exists: FALSE if the calendar should be opened even if there
- * was no storage for it, i.e. to create a new calendar or load an existing
- * one if it already exists. TRUE if it should only try to load calendars
- * that already exist.
- *
- * Makes a calendar client initiate a request to open a calendar. The calendar
- * client will emit the "cal_opened" signal when the response from the server is
- * received.
- *
- * Return value: TRUE on success, FALSE on failure to issue the open request.
- **/
-gboolean
-cal_client_open_calendar (CalClient *client, const char *str_uri, gboolean only_if_exists)
-{
- CalClientPrivate *priv;
- GNOME_Evolution_Calendar_Listener corba_listener;
- CORBA_Environment ev;
-
- g_return_val_if_fail (client != NULL, FALSE);
- g_return_val_if_fail (IS_CAL_CLIENT (client), FALSE);
-
- priv = client->priv;
- g_return_val_if_fail (priv->load_state == CAL_CLIENT_LOAD_NOT_LOADED, FALSE);
- g_assert (priv->uri == NULL);
-
- g_return_val_if_fail (str_uri != NULL, FALSE);
-
- priv->listener = cal_listener_new (cal_opened_cb,
- obj_updated_cb,
- obj_removed_cb,
- client);
- if (!priv->listener) {
- g_message ("cal_client_open_calendar(): could not create the listener");
- return FALSE;
- }
-
- corba_listener = (GNOME_Evolution_Calendar_Listener) bonobo_object_corba_objref (
- BONOBO_OBJECT (priv->listener));
-
- CORBA_exception_init (&ev);
-
- priv->load_state = CAL_CLIENT_LOAD_LOADING;
- priv->uri = g_strdup (str_uri);
-
- GNOME_Evolution_Calendar_CalFactory_open (priv->factory, str_uri, only_if_exists,
- corba_listener, &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION) {
- CORBA_exception_free (&ev);
-
- g_message ("cal_client_open_calendar(): open request failed");
- bonobo_object_unref (BONOBO_OBJECT (priv->listener));
- priv->listener = NULL;
- priv->load_state = CAL_CLIENT_LOAD_NOT_LOADED;
- g_free (priv->uri);
- priv->uri = NULL;
-
- return FALSE;
- }
- CORBA_exception_free (&ev);
-
- return TRUE;
-}
-
-/**
- * cal_client_get_load_state:
- * @client: A calendar client.
- *
- * Queries the state of loading of a calendar client.
- *
- * Return value: A #CalClientLoadState value indicating whether the client has
- * not been loaded with cal_client_open_calendar() yet, whether it is being
- * loaded, or whether it is already loaded.
- **/
-CalClientLoadState
-cal_client_get_load_state (CalClient *client)
-{
- CalClientPrivate *priv;
-
- g_return_val_if_fail (client != NULL, FALSE);
- g_return_val_if_fail (IS_CAL_CLIENT (client), FALSE);
-
- priv = client->priv;
- return priv->load_state;
-}
-
-/**
- * cal_client_get_uri:
- * @client: A calendar client.
- *
- * Queries the URI that is open in a calendar client.
- *
- * Return value: The URI of the calendar that is already loaded or is being
- * loaded, or NULL if the client has not started a load request yet.
- **/
-const char *
-cal_client_get_uri (CalClient *client)
-{
- CalClientPrivate *priv;
-
- g_return_val_if_fail (client != NULL, NULL);
- g_return_val_if_fail (IS_CAL_CLIENT (client), NULL);
-
- priv = client->priv;
- return priv->uri;
-}
-
-/* Converts our representation of a calendar component type into its CORBA representation */
-static GNOME_Evolution_Calendar_CalObjType
-corba_obj_type (CalObjType type)
-{
- return (((type & CALOBJ_TYPE_EVENT) ? GNOME_Evolution_Calendar_TYPE_EVENT : 0)
- | ((type & CALOBJ_TYPE_TODO) ? GNOME_Evolution_Calendar_TYPE_TODO : 0)
- | ((type & CALOBJ_TYPE_JOURNAL) ? GNOME_Evolution_Calendar_TYPE_JOURNAL : 0));
-}
-
-/**
- * cal_client_get_n_objects:
- * @client: A calendar client.
- * @type: Type of objects that will be counted.
- *
- * Counts the number of calendar components of the specified @type. This can be
- * used to count how many events, to-dos, or journals there are, for example.
- *
- * Return value: Number of components.
- **/
-int
-cal_client_get_n_objects (CalClient *client, CalObjType type)
-{
- CalClientPrivate *priv;
- CORBA_Environment ev;
- int n;
- int t;
-
- g_return_val_if_fail (client != NULL, -1);
- g_return_val_if_fail (IS_CAL_CLIENT (client), -1);
-
- priv = client->priv;
- g_return_val_if_fail (priv->load_state == CAL_CLIENT_LOAD_LOADED, -1);
-
- t = corba_obj_type (type);
-
- CORBA_exception_init (&ev);
- n = GNOME_Evolution_Calendar_Cal_countObjects (priv->cal, t, &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_message ("cal_client_get_n_objects(): could not get the number of objects");
- CORBA_exception_free (&ev);
- return -1;
- }
-
- CORBA_exception_free (&ev);
- return n;
-}
-
-/**
- * cal_client_get_object:
- * @client: A calendar client.
- * @uid: Unique identifier for a calendar component.
- * @comp: Return value for the calendar component object.
- *
- * Queries a calendar for a calendar component object based on its unique
- * identifier.
- *
- * Return value: Result code based on the status of the operation.
- **/
-CalClientGetStatus
-cal_client_get_object (CalClient *client, const char *uid, CalComponent **comp)
-{
- CalClientPrivate *priv;
- CORBA_Environment ev;
- GNOME_Evolution_Calendar_CalObj comp_str;
- CalClientGetStatus retval;
- icalcomponent *icalcomp;
-
- g_return_val_if_fail (client != NULL, CAL_CLIENT_GET_NOT_FOUND);
- g_return_val_if_fail (IS_CAL_CLIENT (client), CAL_CLIENT_GET_NOT_FOUND);
-
- priv = client->priv;
- g_return_val_if_fail (priv->load_state == CAL_CLIENT_LOAD_LOADED, CAL_CLIENT_GET_NOT_FOUND);
-
- g_return_val_if_fail (uid != NULL, CAL_CLIENT_GET_NOT_FOUND);
- g_return_val_if_fail (comp != NULL, CAL_CLIENT_GET_NOT_FOUND);
-
- retval = CAL_CLIENT_GET_NOT_FOUND;
- *comp = NULL;
-
- CORBA_exception_init (&ev);
- comp_str = GNOME_Evolution_Calendar_Cal_getObject (priv->cal, (char *) uid, &ev);
-
- if (ev._major == CORBA_USER_EXCEPTION
- && strcmp (CORBA_exception_id (&ev), ex_GNOME_Evolution_Calendar_Cal_NotFound) == 0)
- goto out;
- else if (ev._major != CORBA_NO_EXCEPTION) {
- g_message ("cal_client_get_object(): could not get the object");
- goto out;
- }
-
- icalcomp = icalparser_parse_string (comp_str);
- CORBA_free (comp_str);
-
- if (!icalcomp) {
- retval = CAL_CLIENT_GET_SYNTAX_ERROR;
- goto out;
- }
-
- *comp = cal_component_new ();
- if (!cal_component_set_icalcomponent (*comp, icalcomp)) {
- icalcomponent_free (icalcomp);
- gtk_object_unref (GTK_OBJECT (*comp));
- *comp = NULL;
-
- retval = CAL_CLIENT_GET_SYNTAX_ERROR;
- goto out;
- }
-
- retval = CAL_CLIENT_GET_SUCCESS;
-
- out:
-
- CORBA_exception_free (&ev);
- return retval;
-}
-
-/* Builds an UID list out of a CORBA UID sequence */
-static GList *
-build_uid_list (GNOME_Evolution_Calendar_CalObjUIDSeq *seq)
-{
- GList *uids;
- int i;
-
- uids = NULL;
-
- for (i = 0; i < seq->_length; i++)
- uids = g_list_prepend (uids, g_strdup (seq->_buffer[i]));
-
- return uids;
-}
-
-/**
- * cal_client_get_uids:
- * @client: A calendar client.
- * @type: Bitmask with types of objects to return.
- *
- * Queries a calendar for a list of unique identifiers corresponding to calendar
- * objects whose type matches one of the types specified in the @type flags.
- *
- * Return value: A list of strings that are the sought UIDs. This should be
- * freed using the cal_obj_uid_list_free() function.
- **/
-GList *
-cal_client_get_uids (CalClient *client, CalObjType type)
-{
- CalClientPrivate *priv;
- CORBA_Environment ev;
- GNOME_Evolution_Calendar_CalObjUIDSeq *seq;
- int t;
- GList *uids;
-
- g_return_val_if_fail (client != NULL, NULL);
- g_return_val_if_fail (IS_CAL_CLIENT (client), NULL);
-
- priv = client->priv;
- g_return_val_if_fail (priv->load_state == CAL_CLIENT_LOAD_LOADED, NULL);
-
- t = corba_obj_type (type);
-
- CORBA_exception_init (&ev);
-
- seq = GNOME_Evolution_Calendar_Cal_getUIDs (priv->cal, t, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_message ("cal_client_get_uids(): could not get the list of UIDs");
- CORBA_exception_free (&ev);
- return NULL;
- }
-
- CORBA_exception_free (&ev);
-
- uids = build_uid_list (seq);
- CORBA_free (seq);
-
- return uids;
-}
-
-/* Builds a GList of CalClientChange structures from the CORBA sequence */
-static GList *
-build_change_list (GNOME_Evolution_Calendar_CalObjChangeSeq *seq)
-{
- GList *list = NULL;
- icalcomponent *icalcomp;
- int i;
-
- /* Create the list in reverse order */
- for (i = 0; i < seq->_length; i++) {
- GNOME_Evolution_Calendar_CalObjChange *corba_coc;
- CalClientChange *ccc;
-
- corba_coc = &seq->_buffer[i];
- ccc = g_new (CalClientChange, 1);
-
- icalcomp = icalparser_parse_string (corba_coc->calobj);
- if (!icalcomp)
- continue;
-
- ccc->comp = cal_component_new ();
- if (!cal_component_set_icalcomponent (ccc->comp, icalcomp)) {
- icalcomponent_free (icalcomp);
- gtk_object_unref (GTK_OBJECT (ccc->comp));
- continue;
- }
- ccc->type = corba_coc->type;
-
- list = g_list_prepend (list, ccc);
- }
-
- list = g_list_reverse (list);
-
- return list;
-}
-
-GList *
-cal_client_get_changes (CalClient *client, CalObjType type, const char *change_id)
-{
- CalClientPrivate *priv;
- CORBA_Environment ev;
- GNOME_Evolution_Calendar_CalObjChangeSeq *seq;
- int t;
- GList *changes;
-
- g_return_val_if_fail (client != NULL, NULL);
- g_return_val_if_fail (IS_CAL_CLIENT (client), NULL);
-
- priv = client->priv;
- g_return_val_if_fail (priv->load_state == CAL_CLIENT_LOAD_LOADED, NULL);
-
- t = corba_obj_type (type);
- CORBA_exception_init (&ev);
-
- seq = GNOME_Evolution_Calendar_Cal_getChanges (priv->cal, t, change_id, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_message ("cal_client_get_changes(): could not get the list of changes");
- CORBA_exception_free (&ev);
- return NULL;
- }
-
- CORBA_exception_free (&ev);
-
- changes = build_change_list (seq);
- CORBA_free (seq);
-
- return changes;
-}
-
-/* FIXME: Not used? */
-#if 0
-/* Builds a GList of CalObjInstance structures from the CORBA sequence */
-static GList *
-build_object_instance_list (GNOME_Evolution_Calendar_CalObjInstanceSeq *seq)
-{
- GList *list;
- int i;
-
- /* Create the list in reverse order */
-
- list = NULL;
- for (i = 0; i < seq->_length; i++) {
- GNOME_Evolution_Calendar_CalObjInstance *corba_icoi;
- CalObjInstance *icoi;
-
- corba_icoi = &seq->_buffer[i];
- icoi = g_new (CalObjInstance, 1);
-
- icoi->uid = g_strdup (corba_icoi->uid);
- icoi->start = corba_icoi->start;
- icoi->end = corba_icoi->end;
-
- list = g_list_prepend (list, icoi);
- }
-
- list = g_list_reverse (list);
- return list;
-}
-#endif
-
-/**
- * cal_client_get_objects_in_range:
- * @client: A calendar client.
- * @type: Bitmask with types of objects to return.
- * @start: Start time for query.
- * @end: End time for query.
- *
- * Queries a calendar for the objects that occur or recur in the specified range
- * of time.
- *
- * Return value: A list of UID strings. This should be freed using the
- * cal_obj_uid_list_free() function.
- **/
-GList *
-cal_client_get_objects_in_range (CalClient *client, CalObjType type, time_t start, time_t end)
-{
- CalClientPrivate *priv;
- CORBA_Environment ev;
- GNOME_Evolution_Calendar_CalObjUIDSeq *seq;
- GList *uids;
- int t;
-
- g_return_val_if_fail (client != NULL, NULL);
- g_return_val_if_fail (IS_CAL_CLIENT (client), NULL);
-
- priv = client->priv;
- g_return_val_if_fail (priv->load_state == CAL_CLIENT_LOAD_LOADED, NULL);
-
- g_return_val_if_fail (start != -1 && end != -1, NULL);
- g_return_val_if_fail (start <= end, NULL);
-
- CORBA_exception_init (&ev);
-
- t = corba_obj_type (type);
-
- seq = GNOME_Evolution_Calendar_Cal_getObjectsInRange (priv->cal, t, start, end, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_message ("cal_client_get_objects_in_range(): could not get the objects");
- CORBA_exception_free (&ev);
- return NULL;
- }
- CORBA_exception_free (&ev);
-
- uids = build_uid_list (seq);
- CORBA_free (seq);
-
- return uids;
-}
-
-/* Callback used when an object is updated and we must update the copy we have */
-static void
-generate_instances_obj_updated_cb (CalClient *client, const char *uid, gpointer data)
-{
- GHashTable *uid_comp_hash;
- CalComponent *comp;
- CalClientGetStatus status;
- const char *comp_uid;
-
- uid_comp_hash = data;
-
- comp = g_hash_table_lookup (uid_comp_hash, uid);
- if (!comp)
- /* OK, so we don't care about new objects that may indeed be in
- * the requested time range. We only care about the ones that
- * were returned by the first query to
- * cal_client_get_objects_in_range().
- */
- return;
-
- g_hash_table_remove (uid_comp_hash, uid);
- gtk_object_unref (GTK_OBJECT (comp));
-
- status = cal_client_get_object (client, uid, &comp);
-
- switch (status) {
- case CAL_CLIENT_GET_SUCCESS:
- /* The hash key comes from the component's internal data */
- cal_component_get_uid (comp, &comp_uid);
- g_hash_table_insert (uid_comp_hash, (char *) comp_uid, comp);
- break;
-
- case CAL_CLIENT_GET_NOT_FOUND:
- /* No longer in the server, too bad */
- break;
-
- case CAL_CLIENT_GET_SYNTAX_ERROR:
- g_message ("obj_updated_cb(): Syntax error when getting "
- "object `%s'; ignoring...", uid);
- break;
-
- }
-}
-
-/* Callback used when an object is removed and we must delete the copy we have */
-static void
-generate_instances_obj_removed_cb (CalClient *client, const char *uid, gpointer data)
-{
- GHashTable *uid_comp_hash;
- CalComponent *comp;
-
- uid_comp_hash = data;
-
- comp = g_hash_table_lookup (uid_comp_hash, uid);
- if (!comp)
- return;
-
- g_hash_table_remove (uid_comp_hash, uid);
- gtk_object_unref (GTK_OBJECT (comp));
-}
-
-/* Adds a component to the list; called from g_hash_table_foreach() */
-static void
-add_component (gpointer key, gpointer value, gpointer data)
-{
- CalComponent *comp;
- GList **list;
-
- comp = CAL_COMPONENT (value);
- list = data;
-
- *list = g_list_prepend (*list, comp);
-}
-
-/* Gets a list of components that recur within the specified range of time. It
- * ensures that the resulting list of CalComponent objects contains only objects
- * that are actually in the server at the time the initial
- * cal_client_get_objects_in_range() query ends.
- */
-static GList *
-get_objects_atomically (CalClient *client, CalObjType type, time_t start, time_t end)
-{
- GList *uids;
- GHashTable *uid_comp_hash;
- GList *objects;
- guint obj_updated_id;
- guint obj_removed_id;
- GList *l;
-
- uids = cal_client_get_objects_in_range (client, type, start, end);
-
- uid_comp_hash = g_hash_table_new (g_str_hash, g_str_equal);
-
- /* While we are getting the actual object data, keep track of changes */
-
- obj_updated_id = gtk_signal_connect (GTK_OBJECT (client), "obj_updated",
- GTK_SIGNAL_FUNC (generate_instances_obj_updated_cb),
- uid_comp_hash);
-
- obj_removed_id = gtk_signal_connect (GTK_OBJECT (client), "obj_removed",
- GTK_SIGNAL_FUNC (generate_instances_obj_removed_cb),
- uid_comp_hash);
-
- /* Get the objects */
-
- for (l = uids; l; l = l->next) {
- CalComponent *comp;
- CalClientGetStatus status;
- char *uid;
- const char *comp_uid;
-
- uid = l->data;
-
- status = cal_client_get_object (client, uid, &comp);
-
- switch (status) {
- case CAL_CLIENT_GET_SUCCESS:
- /* The hash key comes from the component's internal data
- * instead of the duped UID from the list of UIDS.
- */
- cal_component_get_uid (comp, &comp_uid);
- g_hash_table_insert (uid_comp_hash, (char *) comp_uid, comp);
- break;
-
- case CAL_CLIENT_GET_NOT_FOUND:
- /* Object disappeared from the server, so don't log it */
- break;
-
- case CAL_CLIENT_GET_SYNTAX_ERROR:
- g_message ("get_objects_atomically(): Syntax error when getting "
- "object `%s'; ignoring...", uid);
- break;
-
- default:
- g_assert_not_reached ();
- }
- }
-
- cal_obj_uid_list_free (uids);
-
- /* Now our state is consistent with the server, so disconnect from the
- * notification signals and generate the final list of components.
- */
-
- gtk_signal_disconnect (GTK_OBJECT (client), obj_updated_id);
- gtk_signal_disconnect (GTK_OBJECT (client), obj_removed_id);
-
- objects = NULL;
- g_hash_table_foreach (uid_comp_hash, add_component, &objects);
- g_hash_table_destroy (uid_comp_hash);
-
- return objects;
-}
-
-struct comp_instance {
- CalComponent *comp;
- time_t start;
- time_t end;
-};
-
-/* Called from cal_recur_generate_instances(); adds an instance to the list */
-static gboolean
-add_instance (CalComponent *comp, time_t start, time_t end, gpointer data)
-{
- GList **list;
- struct comp_instance *ci;
-
- list = data;
-
- ci = g_new (struct comp_instance, 1);
-
- ci->comp = comp;
- gtk_object_ref (GTK_OBJECT (ci->comp));
-
- ci->start = start;
- ci->end = end;
-
- *list = g_list_prepend (*list, ci);
-
- return TRUE;
-}
-
-/* Used from g_list_sort(); compares two struct comp_instance structures */
-static gint
-compare_comp_instance (gconstpointer a, gconstpointer b)
-{
- const struct comp_instance *cia, *cib;
- time_t diff;
-
- cia = a;
- cib = b;
-
- diff = cia->start - cib->start;
- return (diff < 0) ? -1 : (diff > 0) ? 1 : 0;
-}
-
-/**
- * cal_client_generate_instances:
- * @client: A calendar client.
- * @type: Bitmask with types of objects to return.
- * @start: Start time for query.
- * @end: End time for query.
- * @cb: Callback for each generated instance.
- * @cb_data: Closure data for the callback.
- *
- * Does a combination of cal_client_get_objects_in_range() and
- * cal_recur_generate_instances(). It fetches the list of objects in an atomic
- * way so that the generated instances are actually in the server at the time
- * the initial cal_client_get_objects_in_range() query ends.
- *
- * The callback function should do a gtk_object_ref() of the calendar component
- * it gets passed if it intends to keep it around.
- **/
-void
-cal_client_generate_instances (CalClient *client, CalObjType type,
- time_t start, time_t end,
- CalRecurInstanceFn cb, gpointer cb_data)
-{
- CalClientPrivate *priv;
- GList *objects;
- GList *instances;
- GList *l;
-
- g_return_if_fail (client != NULL);
- g_return_if_fail (IS_CAL_CLIENT (client));
-
- priv = client->priv;
- g_return_if_fail (priv->load_state == CAL_CLIENT_LOAD_LOADED);
-
- g_return_if_fail (start != -1 && end != -1);
- g_return_if_fail (start <= end);
- g_return_if_fail (cb != NULL);
-
- /* Generate objects */
-
- objects = get_objects_atomically (client, type, start, end);
- instances = NULL;
-
- for (l = objects; l; l = l->next) {
- CalComponent *comp;
-
- comp = l->data;
- cal_recur_generate_instances (comp, start, end, add_instance, &instances);
- gtk_object_unref (GTK_OBJECT (comp));
- }
-
- g_list_free (objects);
-
- /* Generate instances and spew them out */
-
- instances = g_list_sort (instances, compare_comp_instance);
-
- for (l = instances; l; l = l->next) {
- struct comp_instance *ci;
- gboolean result;
-
- ci = l->data;
-
- result = (* cb) (ci->comp, ci->start, ci->end, cb_data);
-
- if (!result)
- break;
- }
-
- /* Clean up */
-
- for (l = instances; l; l = l->next) {
- struct comp_instance *ci;
-
- ci = l->data;
- gtk_object_unref (GTK_OBJECT (ci->comp));
- g_free (ci);
- }
-
- g_list_free (instances);
-}
-
-/* Builds a list of CalAlarmInstance structures */
-static GSList *
-build_alarm_instance_list (CalComponent *comp, GNOME_Evolution_Calendar_CalAlarmInstanceSeq *seq)
-{
- GSList *alarms;
- int i;
-
- alarms = NULL;
-
- for (i = 0; i < seq->_length; i++) {
- GNOME_Evolution_Calendar_CalAlarmInstance *corba_instance;
- CalComponentAlarm *alarm;
- const char *auid;
- CalAlarmInstance *instance;
-
- corba_instance = seq->_buffer + i;
-
- /* Since we want the in-commponent auid, we look for the alarm
- * in the component and fetch its "real" auid.
- */
-
- alarm = cal_component_get_alarm (comp, corba_instance->auid);
- if (!alarm)
- continue;
-
- auid = cal_component_alarm_get_uid (alarm);
- cal_component_alarm_free (alarm);
-
- instance = g_new (CalAlarmInstance, 1);
- instance->auid = auid;
- instance->trigger = corba_instance->trigger;
- instance->occur = corba_instance->occur;
-
- alarms = g_slist_prepend (alarms, instance);
- }
-
- return g_slist_reverse (alarms);
-}
-
-/* Builds a list of CalComponentAlarms structures */
-static GSList *
-build_component_alarms_list (GNOME_Evolution_Calendar_CalComponentAlarmsSeq *seq)
-{
- GSList *comp_alarms;
- int i;
-
- comp_alarms = NULL;
-
- for (i = 0; i < seq->_length; i++) {
- GNOME_Evolution_Calendar_CalComponentAlarms *corba_alarms;
- CalComponent *comp;
- CalComponentAlarms *alarms;
- icalcomponent *icalcomp;
-
- corba_alarms = seq->_buffer + i;
-
- icalcomp = icalparser_parse_string (corba_alarms->calobj);
- if (!icalcomp)
- continue;
-
- comp = cal_component_new ();
- if (!cal_component_set_icalcomponent (comp, icalcomp)) {
- icalcomponent_free (icalcomp);
- gtk_object_unref (GTK_OBJECT (comp));
- continue;
- }
-
- alarms = g_new (CalComponentAlarms, 1);
- alarms->comp = comp;
- alarms->alarms = build_alarm_instance_list (comp, &corba_alarms->alarms);
-
- comp_alarms = g_slist_prepend (comp_alarms, alarms);
- }
-
- return comp_alarms;
-}
-
-/**
- * cal_client_get_alarms_in_range:
- * @client: A calendar client.
- * @start: Start time for query.
- * @end: End time for query.
- *
- * Queries a calendar for the alarms that trigger in the specified range of
- * time.
- *
- * Return value: A list of #CalComponentAlarms structures. This should be freed
- * using the cal_client_free_alarms() function, or by freeing each element
- * separately with cal_component_alarms_free() and then freeing the list with
- * g_slist_free().
- **/
-GSList *
-cal_client_get_alarms_in_range (CalClient *client, time_t start, time_t end)
-{
- CalClientPrivate *priv;
- CORBA_Environment ev;
- GNOME_Evolution_Calendar_CalComponentAlarmsSeq *seq;
- GSList *alarms;
-
- g_return_val_if_fail (client != NULL, NULL);
- g_return_val_if_fail (IS_CAL_CLIENT (client), NULL);
-
- priv = client->priv;
- g_return_val_if_fail (priv->load_state == CAL_CLIENT_LOAD_LOADED, NULL);
-
- g_return_val_if_fail (start != -1 && end != -1, NULL);
- g_return_val_if_fail (start <= end, NULL);
-
- CORBA_exception_init (&ev);
-
- seq = GNOME_Evolution_Calendar_Cal_getAlarmsInRange (priv->cal, start, end, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_message ("cal_client_get_alarms_in_range(): could not get the alarm range");
- CORBA_exception_free (&ev);
- return NULL;
- }
- CORBA_exception_free (&ev);
-
- alarms = build_component_alarms_list (seq);
- CORBA_free (seq);
-
- return alarms;
-}
-
-/**
- * cal_client_free_alarms:
- * @comp_alarms: A list of #CalComponentAlarms structures.
- *
- * Frees a list of #CalComponentAlarms structures as returned by
- * cal_client_get_alarms_in_range().
- **/
-void
-cal_client_free_alarms (GSList *comp_alarms)
-{
- GSList *l;
-
- for (l = comp_alarms; l; l = l->next) {
- CalComponentAlarms *alarms;
-
- alarms = l->data;
- g_assert (alarms != NULL);
-
- cal_component_alarms_free (alarms);
- }
-
- g_slist_free (comp_alarms);
-}
-
-/**
- * cal_client_get_alarms_for_object:
- * @client: A calendar client.
- * @uid: Unique identifier for a calendar component.
- * @start: Start time for query.
- * @end: End time for query.
- * @alarms: Return value for the component's alarm instances. Will return NULL
- * if no instances occur within the specified time range. This should be freed
- * using the cal_component_alarms_free() function.
- *
- * Queries a calendar for the alarms of a particular object that trigger in the
- * specified range of time.
- *
- * Return value: TRUE on success, FALSE if the object was not found.
- **/
-gboolean
-cal_client_get_alarms_for_object (CalClient *client, const char *uid,
- time_t start, time_t end,
- CalComponentAlarms **alarms)
-{
- CalClientPrivate *priv;
- CORBA_Environment ev;
- GNOME_Evolution_Calendar_CalComponentAlarms *corba_alarms;
- gboolean retval;
- icalcomponent *icalcomp;
- CalComponent *comp;
-
- g_return_val_if_fail (client != NULL, FALSE);
- g_return_val_if_fail (IS_CAL_CLIENT (client), FALSE);
-
- priv = client->priv;
- g_return_val_if_fail (priv->load_state == CAL_CLIENT_LOAD_LOADED, FALSE);
-
- g_return_val_if_fail (uid != NULL, FALSE);
- g_return_val_if_fail (start != -1 && end != -1, FALSE);
- g_return_val_if_fail (start <= end, FALSE);
- g_return_val_if_fail (alarms != NULL, FALSE);
-
- *alarms = NULL;
- retval = FALSE;
-
- CORBA_exception_init (&ev);
-
- corba_alarms = GNOME_Evolution_Calendar_Cal_getAlarmsForObject (priv->cal, (char *) uid,
- start, end, &ev);
- if (ev._major == CORBA_USER_EXCEPTION
- && strcmp (CORBA_exception_id (&ev), ex_GNOME_Evolution_Calendar_Cal_NotFound) == 0)
- goto out;
- else if (ev._major != CORBA_NO_EXCEPTION) {
- g_message ("cal_client_get_alarms_for_object(): could not get the alarm range");
- goto out;
- }
-
- icalcomp = icalparser_parse_string (corba_alarms->calobj);
- if (!icalcomp)
- goto out;
-
- comp = cal_component_new ();
- if (!cal_component_set_icalcomponent (comp, icalcomp)) {
- icalcomponent_free (icalcomp);
- gtk_object_unref (GTK_OBJECT (comp));
- goto out;
- }
-
- retval = TRUE;
-
- *alarms = g_new (CalComponentAlarms, 1);
- (*alarms)->comp = comp;
- (*alarms)->alarms = build_alarm_instance_list (comp, &corba_alarms->alarms);
- CORBA_free (corba_alarms);
-
- out:
- CORBA_exception_free (&ev);
- return retval;
-}
-
-/**
- * cal_client_update_object:
- * @client: A calendar client.
- * @comp: A calendar component object.
- *
- * Asks a calendar to update a component. Any existing component with the
- * specified component's UID will be replaced. The client program should not
- * assume that the object is actually in the server's storage until it has
- * received the "obj_updated" notification signal.
- *
- * Return value: TRUE on success, FALSE on specifying an invalid component.
- **/
-gboolean
-cal_client_update_object (CalClient *client, CalComponent *comp)
-{
- CalClientPrivate *priv;
- CORBA_Environment ev;
- gboolean retval;
- char *obj_string;
- const char *uid;
-
- g_return_val_if_fail (client != NULL, FALSE);
- g_return_val_if_fail (IS_CAL_CLIENT (client), FALSE);
-
- priv = client->priv;
- g_return_val_if_fail (priv->load_state == CAL_CLIENT_LOAD_LOADED, FALSE);
-
- g_return_val_if_fail (comp != NULL, FALSE);
-
- retval = FALSE;
-
- cal_component_commit_sequence (comp);
- obj_string = cal_component_get_as_string (comp);
-
- cal_component_get_uid (comp, &uid);
-
- CORBA_exception_init (&ev);
- GNOME_Evolution_Calendar_Cal_updateObject (priv->cal, (char *) uid, obj_string, &ev);
- g_free (obj_string);
-
- if (ev._major == CORBA_USER_EXCEPTION &&
- strcmp (CORBA_exception_id (&ev), ex_GNOME_Evolution_Calendar_Cal_InvalidObject) == 0)
- goto out;
- else if (ev._major != CORBA_NO_EXCEPTION) {
- g_message ("cal_client_update_object(): could not update the object");
- goto out;
- }
-
- retval = TRUE;
-
- out:
- CORBA_exception_free (&ev);
- return retval;
-}
-
-/**
- * cal_client_remove_object:
- * @client: A calendar client.
- * @uid: Unique identifier of the calendar component to remove.
- *
- * Asks a calendar to remove a component. If the server is able to remove the
- * component, all clients will be notified and they will emit the "obj_removed"
- * signal.
- *
- * Return value: TRUE on success, FALSE on specifying a UID for a component that
- * is not in the server. Returning FALSE is normal; the object may have
- * disappeared from the server before the client has had a chance to receive the
- * corresponding notification.
- **/
-gboolean
-cal_client_remove_object (CalClient *client, const char *uid)
-{
- CalClientPrivate *priv;
- CORBA_Environment ev;
- gboolean retval;
-
- g_return_val_if_fail (client != NULL, FALSE);
- g_return_val_if_fail (IS_CAL_CLIENT (client), FALSE);
-
- priv = client->priv;
- g_return_val_if_fail (priv->load_state == CAL_CLIENT_LOAD_LOADED, FALSE);
-
- g_return_val_if_fail (uid != NULL, FALSE);
-
- retval = FALSE;
-
- CORBA_exception_init (&ev);
- GNOME_Evolution_Calendar_Cal_removeObject (priv->cal, (char *) uid, &ev);
-
- if (ev._major == CORBA_USER_EXCEPTION &&
- strcmp (CORBA_exception_id (&ev), ex_GNOME_Evolution_Calendar_Cal_NotFound) == 0)
- goto out;
- else if (ev._major != CORBA_NO_EXCEPTION) {
- g_message ("cal_client_remove_object(): could not remove the object");
- goto out;
- }
-
- retval = TRUE;
-
- out:
- CORBA_exception_free (&ev);
- return retval;
-}
-
-/**
- * cal_client_get_query:
- * @client: A calendar client.
- * @sexp: S-expression representing the query.
- *
- * Creates a live query object from a loaded calendar.
- *
- * Return value: A query object that will emit notification signals as calendar
- * components are added and removed from the query in the server.
- **/
-CalQuery *
-cal_client_get_query (CalClient *client, const char *sexp)
-{
- CalClientPrivate *priv;
-
- g_return_val_if_fail (client != NULL, NULL);
- g_return_val_if_fail (IS_CAL_CLIENT (client), NULL);
-
- priv = client->priv;
- g_return_val_if_fail (priv->load_state == CAL_CLIENT_LOAD_LOADED, FALSE);
-
- g_return_val_if_fail (sexp != NULL, NULL);
-
- return cal_query_new (priv->cal, sexp);
-}
diff --git a/calendar/cal-client/cal-client.h b/calendar/cal-client/cal-client.h
deleted file mode 100644
index 1f0211ef32..0000000000
--- a/calendar/cal-client/cal-client.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/* Evolution calendar client
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef CAL_CLIENT_H
-#define CAL_CLIENT_H
-
-#include <libgnome/gnome-defs.h>
-#include <gtk/gtkobject.h>
-#include <cal-util/cal-recur.h>
-#include <cal-util/cal-util.h>
-#include <cal-client/cal-query.h>
-
-BEGIN_GNOME_DECLS
-
-
-
-#define CAL_CLIENT_TYPE (cal_client_get_type ())
-#define CAL_CLIENT(obj) (GTK_CHECK_CAST ((obj), CAL_CLIENT_TYPE, CalClient))
-#define CAL_CLIENT_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), CAL_CLIENT_TYPE, CalClientClass))
-#define IS_CAL_CLIENT(obj) (GTK_CHECK_TYPE ((obj), CAL_CLIENT_TYPE))
-#define IS_CAL_CLIENT_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), CAL_CLIENT_TYPE))
-
-typedef struct _CalClient CalClient;
-typedef struct _CalClientClass CalClientClass;
-
-typedef struct _CalClientPrivate CalClientPrivate;
-
-/* Open status for the cal_opened signal */
-typedef enum {
- CAL_CLIENT_OPEN_SUCCESS,
- CAL_CLIENT_OPEN_ERROR,
- CAL_CLIENT_OPEN_NOT_FOUND,
- CAL_CLIENT_OPEN_METHOD_NOT_SUPPORTED
-} CalClientOpenStatus;
-
-/* Get status for the cal_client_get_object() function */
-typedef enum {
- CAL_CLIENT_GET_SUCCESS,
- CAL_CLIENT_GET_NOT_FOUND,
- CAL_CLIENT_GET_SYNTAX_ERROR
-} CalClientGetStatus;
-
-/* Whether the client is not loaded, is being loaded, or is already loaded */
-typedef enum {
- CAL_CLIENT_LOAD_NOT_LOADED,
- CAL_CLIENT_LOAD_LOADING,
- CAL_CLIENT_LOAD_LOADED
-} CalClientLoadState;
-
-
-struct _CalClient {
- GtkObject object;
-
- /* Private data */
- CalClientPrivate *priv;
-};
-
-struct _CalClientClass {
- GtkObjectClass parent_class;
-
- /* Notification signals */
-
- void (* cal_opened) (CalClient *client, CalClientOpenStatus status);
-
- void (* obj_updated) (CalClient *client, const char *uid);
- void (* obj_removed) (CalClient *client, const char *uid);
-};
-
-GtkType cal_client_get_type (void);
-
-CalClient *cal_client_construct (CalClient *client);
-
-CalClient *cal_client_new (void);
-
-gboolean cal_client_open_calendar (CalClient *client, const char *str_uri, gboolean only_if_exists);
-
-CalClientLoadState cal_client_get_load_state (CalClient *client);
-
-const char *cal_client_get_uri (CalClient *client);
-
-int cal_client_get_n_objects (CalClient *client, CalObjType type);
-
-CalClientGetStatus cal_client_get_object (CalClient *client,
- const char *uid,
- CalComponent **comp);
-
-GList *cal_client_get_uids (CalClient *client, CalObjType type);
-GList *cal_client_get_changes (CalClient *client, CalObjType type, const char *change_id);
-
-GList *cal_client_get_objects_in_range (CalClient *client, CalObjType type,
- time_t start, time_t end);
-
-void cal_client_generate_instances (CalClient *client, CalObjType type,
- time_t start, time_t end,
- CalRecurInstanceFn cb, gpointer cb_data);
-
-GSList *cal_client_get_alarms_in_range (CalClient *client, time_t start, time_t end);
-
-void cal_client_free_alarms (GSList *comp_alarms);
-
-gboolean cal_client_get_alarms_for_object (CalClient *client, const char *uid,
- time_t start, time_t end,
- CalComponentAlarms **alarms);
-
-gboolean cal_client_update_object (CalClient *client, CalComponent *comp);
-
-gboolean cal_client_remove_object (CalClient *client, const char *uid);
-
-CalQuery *cal_client_get_query (CalClient *client, const char *sexp);
-
-
-
-END_GNOME_DECLS
-
-#endif
diff --git a/calendar/cal-client/cal-listener.c b/calendar/cal-client/cal-listener.c
deleted file mode 100644
index 32da6136f7..0000000000
--- a/calendar/cal-client/cal-listener.c
+++ /dev/null
@@ -1,387 +0,0 @@
-/* Evolution calendar listener
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include "cal-listener.h"
-
-
-
-/* Private part of the CalListener structure */
-struct _CalListenerPrivate {
- /* The calendar this listener refers to */
- GNOME_Evolution_Calendar_Cal cal;
-
- /* Notification functions and their closure data */
- CalListenerCalOpenedFn cal_opened_fn;
- CalListenerObjUpdatedFn obj_updated_fn;
- CalListenerObjRemovedFn obj_removed_fn;
- gpointer fn_data;
-};
-
-
-
-static void cal_listener_class_init (CalListenerClass *class);
-static void cal_listener_init (CalListener *listener);
-static void cal_listener_destroy (GtkObject *object);
-
-static POA_GNOME_Evolution_Calendar_Listener__vepv cal_listener_vepv;
-
-static BonoboObjectClass *parent_class;
-
-
-
-/**
- * cal_listener_get_type:
- * @void:
- *
- * Registers the #CalListener class if necessary, and returns the type ID
- * associated to it.
- *
- * Return value: The type ID of the #CalListener class.
- **/
-GtkType
-cal_listener_get_type (void)
-{
- static GtkType cal_listener_type = 0;
-
- if (!cal_listener_type) {
- static const GtkTypeInfo cal_listener_info = {
- "CalListener",
- sizeof (CalListener),
- sizeof (CalListenerClass),
- (GtkClassInitFunc) cal_listener_class_init,
- (GtkObjectInitFunc) cal_listener_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- cal_listener_type = gtk_type_unique (bonobo_object_get_type (), &cal_listener_info);
- }
-
- return cal_listener_type;
-}
-
-/* CORBA class initialization function for the calendar listener */
-static void
-init_cal_listener_corba_class (void)
-{
- cal_listener_vepv.Bonobo_Unknown_epv = bonobo_object_get_epv ();
- cal_listener_vepv.GNOME_Evolution_Calendar_Listener_epv = cal_listener_get_epv ();
-}
-
-/* Class initialization function for the calendar listener */
-static void
-cal_listener_class_init (CalListenerClass *class)
-{
- GtkObjectClass *object_class;
-
- object_class = (GtkObjectClass *) class;
-
- parent_class = gtk_type_class (bonobo_object_get_type ());
-
- object_class->destroy = cal_listener_destroy;
-
- init_cal_listener_corba_class ();
-}
-
-/* Object initialization function for the calendar listener */
-static void
-cal_listener_init (CalListener *listener)
-{
- CalListenerPrivate *priv;
-
- priv = g_new0 (CalListenerPrivate, 1);
- listener->priv = priv;
-
- priv->cal = CORBA_OBJECT_NIL;
- priv->cal_opened_fn = NULL;
- priv->obj_updated_fn = NULL;
- priv->obj_removed_fn = NULL;
-}
-
-/* Destroy handler for the calendar listener */
-static void
-cal_listener_destroy (GtkObject *object)
-{
- CalListener *listener;
- CalListenerPrivate *priv;
- CORBA_Environment ev;
- gboolean result;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (IS_CAL_LISTENER (object));
-
- listener = CAL_LISTENER (object);
- priv = listener->priv;
-
- CORBA_exception_init (&ev);
- result = CORBA_Object_is_nil (priv->cal, &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("cal_listener_destroy(): could not see if the calendar was NIL");
- else if (!result) {
- CORBA_exception_free (&ev);
-
- CORBA_exception_init (&ev);
- CORBA_Object_release (priv->cal, &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("cal_listener_destroy(): could not release the calendar");
-
- priv->cal = CORBA_OBJECT_NIL;
- }
- CORBA_exception_free (&ev);
-
- g_free (priv);
- listener->priv = NULL;
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-
-
-/* CORBA servant implementation */
-
-/* Listener::notifyCalOpened method */
-static void
-Listener_notifyCalOpened (PortableServer_Servant servant,
- GNOME_Evolution_Calendar_Listener_OpenStatus status,
- GNOME_Evolution_Calendar_Cal cal,
- CORBA_Environment *ev)
-{
- CalListener *listener;
- CalListenerPrivate *priv;
- CORBA_Environment aev;
- GNOME_Evolution_Calendar_Cal cal_copy;
-
- listener = CAL_LISTENER (bonobo_object_from_servant (servant));
- priv = listener->priv;
-
- if (priv->cal != CORBA_OBJECT_NIL) {
- g_message ("Listener_notifyCalOpened(): calendar was already open!");
- return;
- }
-
- CORBA_exception_init (&aev);
- cal_copy = CORBA_Object_duplicate (cal, &aev);
-
- if (aev._major != CORBA_NO_EXCEPTION) {
- g_message ("Listener_notifyCalOpened(): could not duplicate the calendar");
- CORBA_exception_free (&aev);
- return;
- }
- CORBA_exception_free (&aev);
-
- priv->cal = cal_copy;
-
- g_assert (priv->cal_opened_fn != NULL);
- (* priv->cal_opened_fn) (listener, status, cal, priv->fn_data);
-}
-
-/* Listener::notifyObjUpdated method */
-static void
-Listener_notifyObjUpdated (PortableServer_Servant servant,
- GNOME_Evolution_Calendar_CalObjUID uid,
- CORBA_Environment *ev)
-{
- CalListener *listener;
- CalListenerPrivate *priv;
-
- listener = CAL_LISTENER (bonobo_object_from_servant (servant));
- priv = listener->priv;
-
- g_assert (priv->obj_updated_fn != NULL);
- (* priv->obj_updated_fn) (listener, uid, priv->fn_data);
-}
-
-/* Listener::notifyObjRemoved method */
-static void
-Listener_notifyObjRemoved (PortableServer_Servant servant,
- GNOME_Evolution_Calendar_CalObjUID uid,
- CORBA_Environment *ev)
-{
- CalListener *listener;
- CalListenerPrivate *priv;
-
- listener = CAL_LISTENER (bonobo_object_from_servant (servant));
- priv = listener->priv;
-
- g_assert (priv->obj_removed_fn != NULL);
- (* priv->obj_removed_fn) (listener, uid, priv->fn_data);
-}
-
-/**
- * cal_listener_get_epv:
- * @void:
- *
- * Creates an EPV for the Listener CORBA class.
- *
- * Return value: A newly-allocated EPV.
- **/
-POA_GNOME_Evolution_Calendar_Listener__epv *
-cal_listener_get_epv (void)
-{
- POA_GNOME_Evolution_Calendar_Listener__epv *epv;
-
- epv = g_new0 (POA_GNOME_Evolution_Calendar_Listener__epv, 1);
- epv->notifyCalOpened = Listener_notifyCalOpened;
- epv->notifyObjUpdated = Listener_notifyObjUpdated;
- epv->notifyObjRemoved = Listener_notifyObjRemoved;
- return epv;
-}
-
-
-
-/**
- * cal_listener_construct:
- * @listener: A calendar listener.
- * @corba_listener: CORBA object for the calendar listener.
- * @cal_opened_fn: Function that will be called to notify that a calendar was
- * opened.
- * @obj_updated_fn: Function that will be called to notify that an object in the
- * calendar was updated.
- * @obj_removed_fn: Function that will be called to notify that an object in the
- * calendar was removed.
- * @fn_data: Closure data pointer that will be passed to the notification
- * functions.
- *
- * Constructs a calendar listener by binding the corresponding CORBA object to
- * it.
- *
- * Return value: the same object as the @listener argument.
- **/
-CalListener *
-cal_listener_construct (CalListener *listener,
- GNOME_Evolution_Calendar_Listener corba_listener,
- CalListenerCalOpenedFn cal_opened_fn,
- CalListenerObjUpdatedFn obj_updated_fn,
- CalListenerObjRemovedFn obj_removed_fn,
- gpointer fn_data)
-{
- CalListenerPrivate *priv;
-
- g_return_val_if_fail (listener != NULL, NULL);
- g_return_val_if_fail (IS_CAL_LISTENER (listener), NULL);
- g_return_val_if_fail (cal_opened_fn != NULL, NULL);
- g_return_val_if_fail (obj_updated_fn != NULL, NULL);
- g_return_val_if_fail (obj_removed_fn != NULL, NULL);
-
- priv = listener->priv;
-
- priv->cal_opened_fn = cal_opened_fn;
- priv->obj_updated_fn = obj_updated_fn;
- priv->obj_removed_fn = obj_removed_fn;
- priv->fn_data = fn_data;
-
- bonobo_object_construct (BONOBO_OBJECT (listener), corba_listener);
- return listener;
-}
-
-/**
- * cal_listener_corba_object_create:
- * @object: #BonoboObject that will wrap the CORBA object.
- *
- * Creates and activates the CORBA object that is wrapped by the specified
- * calendar listener @object.
- *
- * Return value: An activated object reference or #CORBA_OBJECT_NIL in case of
- * failure.
- **/
-GNOME_Evolution_Calendar_Listener
-cal_listener_corba_object_create (BonoboObject *object)
-{
- POA_GNOME_Evolution_Calendar_Listener *servant;
- CORBA_Environment ev;
-
- g_return_val_if_fail (object != NULL, CORBA_OBJECT_NIL);
- g_return_val_if_fail (IS_CAL_LISTENER (object), CORBA_OBJECT_NIL);
-
- servant = (POA_GNOME_Evolution_Calendar_Listener *) g_new0 (BonoboObjectServant, 1);
- servant->vepv = &cal_listener_vepv;
-
- CORBA_exception_init (&ev);
- POA_GNOME_Evolution_Calendar_Listener__init ((PortableServer_Servant) servant, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_free (servant);
- CORBA_exception_free (&ev);
- return CORBA_OBJECT_NIL;
- }
-
- CORBA_exception_free (&ev);
- return (GNOME_Evolution_Calendar_Listener) bonobo_object_activate_servant (object, servant);
-}
-
-/**
- * cal_listener_new:
- * @cal_opened_fn: Function that will be called to notify that a calendar was
- * opened.
- * @obj_updated_fn: Function that will be called to notify that an object in the
- * calendar was updated.
- * @obj_removed_fn: Function that will be called to notify that an object in the
- * calendar was removed.
- * @fn_data: Closure data pointer that will be passed to the notification
- * functions.
- *
- * Creates a new #CalListener object.
- *
- * Return value: A newly-created #CalListener, or NULL if its corresponding
- * CORBA object could not be created.
- **/
-CalListener *
-cal_listener_new (CalListenerCalOpenedFn cal_opened_fn,
- CalListenerObjUpdatedFn obj_updated_fn,
- CalListenerObjRemovedFn obj_removed_fn,
- gpointer fn_data)
-{
- CalListener *listener;
- CORBA_Environment ev;
- GNOME_Evolution_Calendar_Listener corba_listener;
- gboolean result;
-
- g_return_val_if_fail (cal_opened_fn != NULL, NULL);
- g_return_val_if_fail (obj_updated_fn != NULL, NULL);
- g_return_val_if_fail (obj_removed_fn != NULL, NULL);
-
- listener = gtk_type_new (CAL_LISTENER_TYPE);
-
- corba_listener = cal_listener_corba_object_create (BONOBO_OBJECT (listener));
-
- CORBA_exception_init (&ev);
- result = CORBA_Object_is_nil (corba_listener, &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION || result) {
- g_message ("cal_listener_new(): could not create the CORBA listener");
- bonobo_object_unref (BONOBO_OBJECT (listener));
- CORBA_exception_free (&ev);
- return NULL;
- }
- CORBA_exception_free (&ev);
-
- return cal_listener_construct (listener,
- corba_listener,
- cal_opened_fn,
- obj_updated_fn,
- obj_removed_fn,
- fn_data);
-}
diff --git a/calendar/cal-client/cal-listener.h b/calendar/cal-client/cal-listener.h
deleted file mode 100644
index 7997cbb69c..0000000000
--- a/calendar/cal-client/cal-listener.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/* Evolution calendar listener
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef CAL_LISTENER_H
-#define CAL_LISTENER_H
-
-#include <libgnome/gnome-defs.h>
-#include <bonobo/bonobo-object.h>
-#include "evolution-calendar.h"
-
-BEGIN_GNOME_DECLS
-
-
-
-#define CAL_LISTENER_TYPE (cal_listener_get_type ())
-#define CAL_LISTENER(obj) (GTK_CHECK_CAST ((obj), CAL_LISTENER_TYPE, CalListener))
-#define CAL_LISTENER_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), CAL_LISTENER_TYPE, \
- CalListenerClass))
-#define IS_CAL_LISTENER(obj) (GTK_CHECK_TYPE ((obj), CAL_LISTENER_TYPE))
-#define IS_CAL_LISTENER_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), CAL_LISTENER_TYPE))
-
-typedef struct _CalListener CalListener;
-typedef struct _CalListenerClass CalListenerClass;
-
-typedef struct _CalListenerPrivate CalListenerPrivate;
-
-struct _CalListener {
- BonoboObject object;
-
- /* Private data */
- CalListenerPrivate *priv;
-};
-
-struct _CalListenerClass {
- BonoboObjectClass parent_class;
-};
-
-/* Notification functions */
-typedef void (* CalListenerCalOpenedFn) (CalListener *listener,
- GNOME_Evolution_Calendar_Listener_OpenStatus status,
- GNOME_Evolution_Calendar_Cal cal,
- gpointer data);
-
-typedef void (* CalListenerObjUpdatedFn) (CalListener *listener,
- const GNOME_Evolution_Calendar_CalObjUID uid,
- gpointer data);
-typedef void (* CalListenerObjRemovedFn) (CalListener *listener,
- const GNOME_Evolution_Calendar_CalObjUID uid,
- gpointer data);
-
-
-GtkType cal_listener_get_type (void);
-
-CalListener *cal_listener_construct (CalListener *listener,
- GNOME_Evolution_Calendar_Listener corba_listener,
- CalListenerCalOpenedFn cal_opened_fn,
- CalListenerObjUpdatedFn obj_updated_fn,
- CalListenerObjRemovedFn obj_removed_fn,
- gpointer fn_data);
-
-GNOME_Evolution_Calendar_Listener cal_listener_corba_object_create (BonoboObject *object);
-
-CalListener *cal_listener_new (CalListenerCalOpenedFn cal_opened_fn,
- CalListenerObjUpdatedFn obj_updated_fn,
- CalListenerObjRemovedFn obj_removed_fn,
- gpointer fn_data);
-
-POA_GNOME_Evolution_Calendar_Listener__epv *cal_listener_get_epv (void);
-
-
-
-END_GNOME_DECLS
-
-#endif
diff --git a/calendar/cal-client/cal-query.c b/calendar/cal-client/cal-query.c
deleted file mode 100644
index 727a2dcb3b..0000000000
--- a/calendar/cal-client/cal-query.c
+++ /dev/null
@@ -1,406 +0,0 @@
-/* Evolution calendar - Live query client object
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gtk/gtksignal.h>
-#include "cal-query.h"
-#include "query-listener.h"
-
-
-
-/* Private part of the CalQuery structure */
-struct _CalQueryPrivate {
- /* Our query listener implementation */
- QueryListener *ql;
-
- /* Handle to the query in the server */
- GNOME_Evolution_Calendar_Query corba_query;
-};
-
-
-
-static void cal_query_class_init (CalQueryClass *class);
-static void cal_query_init (CalQuery *query);
-static void cal_query_destroy (GtkObject *object);
-
-/* Signal IDs */
-enum {
- OBJ_UPDATED,
- OBJ_REMOVED,
- QUERY_DONE,
- EVAL_ERROR,
- LAST_SIGNAL
-};
-
-static void marshal_obj_updated (GtkObject *object,
- GtkSignalFunc func, gpointer func_data,
- GtkArg *args);
-static void marshal_query_done (GtkObject *object,
- GtkSignalFunc func, gpointer func_data,
- GtkArg *args);
-
-static guint query_signals[LAST_SIGNAL];
-
-static GtkObjectClass *parent_class;
-
-
-
-/**
- * cal_query_get_type:
- *
- * Registers the #CalQuery class if necessary, and returns the type ID assigned
- * to it.
- *
- * Return value: The type ID of the #CalQuery class.
- **/
-GtkType
-cal_query_get_type (void)
-{
- static GtkType cal_query_type = 0;
-
- if (!cal_query_type) {
- static const GtkTypeInfo cal_query_info = {
- "CalQuery",
- sizeof (CalQuery),
- sizeof (CalQueryClass),
- (GtkClassInitFunc) cal_query_class_init,
- (GtkObjectInitFunc) cal_query_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- cal_query_type = gtk_type_unique (GTK_TYPE_OBJECT, &cal_query_info);
- }
-
- return cal_query_type;
-}
-
-/* Class initialization function for the calendar query */
-static void
-cal_query_class_init (CalQueryClass *class)
-{
- GtkObjectClass *object_class;
-
- object_class = (GtkObjectClass *) class;
-
- parent_class = gtk_type_class (GTK_TYPE_OBJECT);
-
- query_signals[OBJ_UPDATED] =
- gtk_signal_new ("obj_updated",
- GTK_RUN_FIRST,
- object_class->type,
- GTK_SIGNAL_OFFSET (CalQueryClass, obj_updated),
- marshal_obj_updated,
- GTK_TYPE_NONE, 4,
- GTK_TYPE_STRING,
- GTK_TYPE_BOOL,
- GTK_TYPE_INT,
- GTK_TYPE_INT);
- query_signals[OBJ_REMOVED] =
- gtk_signal_new ("obj_removed",
- GTK_RUN_FIRST,
- object_class->type,
- GTK_SIGNAL_OFFSET (CalQueryClass, obj_removed),
- gtk_marshal_NONE__STRING,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_STRING);
- query_signals[QUERY_DONE] =
- gtk_signal_new ("query_done",
- GTK_RUN_FIRST,
- object_class->type,
- GTK_SIGNAL_OFFSET (CalQueryClass, query_done),
- marshal_query_done,
- GTK_TYPE_NONE, 2,
- GTK_TYPE_ENUM,
- GTK_TYPE_STRING);
- query_signals[EVAL_ERROR] =
- gtk_signal_new ("eval_error",
- GTK_RUN_FIRST,
- object_class->type,
- GTK_SIGNAL_OFFSET (CalQueryClass, eval_error),
- gtk_marshal_NONE__STRING,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_STRING);
-
- gtk_object_class_add_signals (object_class, query_signals, LAST_SIGNAL);
-
- class->obj_updated = NULL;
- class->obj_removed = NULL;
- class->query_done = NULL;
- class->eval_error = NULL;
-
- object_class->destroy = cal_query_destroy;
-}
-
-/* Object initialization function for the calendar query */
-static void
-cal_query_init (CalQuery *query)
-{
- CalQueryPrivate *priv;
-
- priv = g_new0 (CalQueryPrivate, 1);
- query->priv = priv;
-
- priv->ql = NULL;
- priv->corba_query = CORBA_OBJECT_NIL;
-}
-
-/* Destroy handler for the calendar query */
-static void
-cal_query_destroy (GtkObject *object)
-{
- CalQuery *query;
- CalQueryPrivate *priv;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (IS_CAL_QUERY (object));
-
- query = CAL_QUERY (object);
- priv = query->priv;
-
- /* The server unrefs the query listener, so we just NULL it out here */
- priv->ql = NULL;
-
- if (priv->corba_query != CORBA_OBJECT_NIL) {
- CORBA_Environment ev;
-
- CORBA_exception_init (&ev);
- bonobo_object_release_unref (priv->corba_query, &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("cal_query_destroy(): Could not release/unref the query");
-
- CORBA_exception_free (&ev);
- priv->corba_query = CORBA_OBJECT_NIL;
- }
-
- g_free (priv);
- query->priv = NULL;
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-
-
-/* Marshalers */
-
-typedef void (* ObjUpdatedFunc) (CalQuery *query, const char *uid,
- gboolean query_in_progress, int n_scanned, int total,
- gpointer data);
-
-static void
-marshal_obj_updated (GtkObject *object, GtkSignalFunc func, gpointer func_data, GtkArg *args)
-{
- ObjUpdatedFunc f;
-
- f = (ObjUpdatedFunc) func;
-
- (* f) (CAL_QUERY (object), GTK_VALUE_STRING (args[0]),
- GTK_VALUE_BOOL (args[1]), GTK_VALUE_INT (args[2]), GTK_VALUE_INT (args[3]),
- func_data);
-}
-
-typedef void (* QueryDoneFunc) (CalQuery *query, CalQueryDoneStatus status, const char *error_str,
- gpointer data);
-
-static void
-marshal_query_done (GtkObject *object, GtkSignalFunc func, gpointer func_data, GtkArg *args)
-{
- QueryDoneFunc f;
-
- f = (QueryDoneFunc) func;
-
- (* f) (CAL_QUERY (object), GTK_VALUE_ENUM (args[0]), GTK_VALUE_STRING (args[1]),
- func_data);
-}
-
-
-
-/* Callback used when an object is updated in the query */
-static void
-obj_updated_cb (QueryListener *ql,
- const GNOME_Evolution_Calendar_CalObjUID uid,
- CORBA_boolean query_in_progress,
- CORBA_long n_scanned,
- CORBA_long total,
- gpointer data)
-{
- CalQuery *query;
-
- query = CAL_QUERY (data);
-
- gtk_signal_emit (GTK_OBJECT (query), query_signals[OBJ_UPDATED],
- uid, query_in_progress, (int) n_scanned, (int) total);
-}
-
-/* Callback used when an object is removed from the query */
-static void
-obj_removed_cb (QueryListener *ql,
- const GNOME_Evolution_Calendar_CalObjUID uid,
- gpointer data)
-{
- CalQuery *query;
-
- query = CAL_QUERY (data);
-
- gtk_signal_emit (GTK_OBJECT (query), query_signals[OBJ_REMOVED],
- uid);
-}
-
-/* Callback used when the query terminates */
-static void
-query_done_cb (QueryListener *ql,
- GNOME_Evolution_Calendar_QueryListener_QueryDoneStatus corba_status,
- const CORBA_char *error_str,
- gpointer data)
-{
- CalQuery *query;
- CalQueryDoneStatus status;
-
- query = CAL_QUERY (data);
-
- switch (corba_status) {
- case GNOME_Evolution_Calendar_QueryListener_SUCCESS:
- status = CAL_QUERY_DONE_SUCCESS;
- break;
-
- case GNOME_Evolution_Calendar_QueryListener_PARSE_ERROR:
- status = CAL_QUERY_DONE_PARSE_ERROR;
- break;
-
- default:
- g_assert_not_reached ();
- return;
- }
-
- gtk_signal_emit (GTK_OBJECT (query), query_signals[QUERY_DONE],
- status, error_str);
-}
-
-/* Callback used when an error occurs when evaluating the query */
-static void
-eval_error_cb (QueryListener *ql,
- const CORBA_char *error_str,
- gpointer data)
-{
- CalQuery *query;
-
- query = CAL_QUERY (data);
-
- gtk_signal_emit (GTK_OBJECT (query), query_signals[EVAL_ERROR],
- error_str);
-}
-
-/**
- * cal_query_construct:
- * @query: A calendar query.
- * @cal: Handle to an open calendar.
- * @sexp: S-expression that defines the query.
- *
- * Constructs a query object by issuing the query creation request to the
- * calendar server.
- *
- * Return value: The same value as @query on success, or NULL if the request
- * failed.
- **/
-CalQuery *
-cal_query_construct (CalQuery *query,
- GNOME_Evolution_Calendar_Cal cal,
- const char *sexp)
-{
- CalQueryPrivate *priv;
- GNOME_Evolution_Calendar_QueryListener corba_ql;
- CORBA_Environment ev;
-
- g_return_val_if_fail (query != NULL, NULL);
- g_return_val_if_fail (IS_CAL_QUERY (query), NULL);
- g_return_val_if_fail (sexp != NULL, NULL);
-
- priv = query->priv;
-
- priv->ql = query_listener_new (obj_updated_cb,
- obj_removed_cb,
- query_done_cb,
- eval_error_cb,
- query);
- if (!priv->ql) {
- g_message ("cal_query_construct(): Could not create the query listener");
- return NULL;
- }
-
- corba_ql = BONOBO_OBJREF (priv->ql);
-
- CORBA_exception_init (&ev);
- priv->corba_query = GNOME_Evolution_Calendar_Cal_getQuery (cal, sexp, corba_ql, &ev);
-
- if (ev._major == CORBA_USER_EXCEPTION
- && strcmp (CORBA_exception_id (&ev),
- ex_GNOME_Evolution_Calendar_Cal_CouldNotCreate) == 0) {
- g_message ("cal_query_construct(): The server could not create the query");
- goto error;
- } else if (ev._major != CORBA_NO_EXCEPTION) {
- g_message ("cal_query_construct(): Could not issue the getQuery() request");
- goto error;
- }
-
- CORBA_exception_free (&ev);
-
- return query;
-
- error:
-
- CORBA_exception_free (&ev);
-
- bonobo_object_unref (BONOBO_OBJECT (priv->ql));
- priv->ql = NULL;
- return NULL;
-}
-
-/**
- * cal_query_new:
- * @cal: Handle to an open calendar.
- * @sexp: S-expression that defines the query.
- *
- * Creates a new query object by issuing the query creation request to the
- * calendar server.
- *
- * Return value: A newly-created query object, or NULL if the request failed.
- **/
-CalQuery *
-cal_query_new (GNOME_Evolution_Calendar_Cal cal,
- const char *sexp)
-{
- CalQuery *query;
-
- query = gtk_type_new (CAL_QUERY_TYPE);
-
- if (!cal_query_construct (query, cal, sexp)) {
- gtk_object_unref (GTK_OBJECT (query));
- return NULL;
- }
-
- return query;
-}
diff --git a/calendar/cal-client/cal-query.h b/calendar/cal-client/cal-query.h
deleted file mode 100644
index 53bc7382da..0000000000
--- a/calendar/cal-client/cal-query.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* Evolution calendar - Live query client object
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef CAL_QUERY_H
-#define CAL_QUERY_H
-
-#include <libgnome/gnome-defs.h>
-#include <gtk/gtkobject.h>
-
-#include "evolution-calendar.h"
-
-BEGIN_GNOME_DECLS
-
-
-
-#define CAL_QUERY_TYPE (cal_query_get_type ())
-#define CAL_QUERY(obj) (GTK_CHECK_CAST ((obj), CAL_QUERY_TYPE, CalQuery))
-#define CAL_QUERY_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), CAL_QUERY_TYPE, CalQueryClass))
-#define IS_CAL_QUERY(obj) (GTK_CHECK_TYPE ((obj), CAL_QUERY_TYPE))
-#define IS_CAL_QUERY_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), CAL_QUERY_TYPE))
-
-/* Status values when a query terminates */
-typedef enum {
- CAL_QUERY_DONE_SUCCESS,
- CAL_QUERY_DONE_PARSE_ERROR
-} CalQueryDoneStatus;
-
-typedef struct _CalQueryPrivate CalQueryPrivate;
-
-typedef struct {
- GtkObject object;
-
- /* Private data */
- CalQueryPrivate *priv;
-} CalQuery;
-
-typedef struct {
- GtkObjectClass parent_class;
-
- /* Notification signals */
-
- void (* obj_updated) (CalQuery *query, const char *uid,
- gboolean query_in_progress, int n_scanned, int total);
- void (* obj_removed) (CalQuery *query, const char *uid);
-
- void (* query_done) (CalQuery *query, CalQueryDoneStatus status, const char *error_str);
-
- void (* eval_error) (CalQuery *query, const char *error_str);
-} CalQueryClass;
-
-GtkType cal_query_get_type (void);
-
-CalQuery *cal_query_construct (CalQuery *query,
- GNOME_Evolution_Calendar_Cal cal,
- const char *sexp);
-
-CalQuery *cal_query_new (GNOME_Evolution_Calendar_Cal cal,
- const char *sexp);
-
-
-
-END_GNOME_DECLS
-
-#endif
diff --git a/calendar/cal-client/client-test.c b/calendar/cal-client/client-test.c
deleted file mode 100644
index d6a57cbffd..0000000000
--- a/calendar/cal-client/client-test.c
+++ /dev/null
@@ -1,216 +0,0 @@
-/* Evolution calendar client - test program
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <stdlib.h>
-#include <gtk/gtkmain.h>
-#include <gtk/gtksignal.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <libgnomeui/gnome-init.h>
-#include <liboaf/liboaf.h>
-#include <bonobo/bonobo-main.h>
-#include "cal-client.h"
-
-static CalClient *client1;
-static CalClient *client2;
-
-/* Prints a message with a client identifier */
-static void
-cl_printf (CalClient *client, const char *format, ...)
-{
- va_list args;
-
- va_start (args, format);
- printf ("Client %s: ",
- client == client1 ? "1" :
- client == client2 ? "2" :
- "UNKNOWN");
- vprintf (format, args);
- va_end (args);
-}
-
-/* Dumps some interesting data from a component */
-static void
-dump_component (CalComponent *comp)
-{
- const char *uid;
- CalComponentText summary;
-
- cal_component_get_uid (comp, &uid);
-
- printf ("UID %s\n", uid);
-
- cal_component_get_summary (comp, &summary);
- if (summary.value)
- printf ("\tSummary: `%s', altrep `%s'\n",
- summary.value,
- summary.altrep ? summary.altrep : "NONE");
- else
- printf ("\tNo summary\n");
-}
-
-/* Lists the UIDs of objects in a calendar, called as an idle handler */
-static gboolean
-list_uids (gpointer data)
-{
- CalClient *client;
- GList *uids;
- GList *l;
-
- client = CAL_CLIENT (data);
-
- uids = cal_client_get_uids (client, CALOBJ_TYPE_ANY);
-
- cl_printf (client, "UIDs: ");
-
- if (!uids)
- printf ("none\n");
- else {
- for (l = uids; l; l = l->next) {
- char *uid;
-
- uid = l->data;
- printf ("`%s' ", uid);
- }
-
- printf ("\n");
-
- for (l = uids; l; l = l->next) {
- char *uid;
- CalComponent *comp;
- CalClientGetStatus status;
-
- uid = l->data;
- status = cal_client_get_object (client, uid, &comp);
-
- if (status == CAL_CLIENT_GET_SUCCESS) {
- printf ("------------------------------\n");
- dump_component (comp);
- printf ("------------------------------\n");
- gtk_object_unref (GTK_OBJECT (comp));
- } else {
- printf ("FAILED: %d\n", status);
- }
- }
- }
-
- cal_obj_uid_list_free (uids);
-
- gtk_object_unref (GTK_OBJECT (client));
-
- return FALSE;
-}
-
-/* Callback used when a calendar is opened */
-static void
-cal_opened_cb (CalClient *client, CalClientOpenStatus status, gpointer data)
-{
- cl_printf (client, "Load/create %s\n",
- ((status == CAL_CLIENT_OPEN_SUCCESS) ? "success" :
- (status == CAL_CLIENT_OPEN_ERROR) ? "error" :
- (status == CAL_CLIENT_OPEN_NOT_FOUND) ? "not found" :
- (status == CAL_CLIENT_OPEN_METHOD_NOT_SUPPORTED) ? "method not supported" :
- "unknown status value"));
-
- if (status == CAL_CLIENT_OPEN_SUCCESS)
- g_idle_add (list_uids, client);
- else
- gtk_object_unref (GTK_OBJECT (client));
-}
-
-/* Callback used when an object is updated */
-static void
-obj_updated_cb (CalClient *client, const char *uid, gpointer data)
-{
- cl_printf (client, "Object updated: %s\n", uid);
-}
-
-/* Callback used when a client is destroyed */
-static void
-client_destroy_cb (GtkObject *object, gpointer data)
-{
- if (CAL_CLIENT (object) == client1)
- client1 = NULL;
- else if (CAL_CLIENT (object) == client2)
- client2 = NULL;
- else
- g_assert_not_reached ();
-
- if (!client1 && !client2)
- gtk_main_quit ();
-}
-
-/* Creates a calendar client and tries to load the specified URI into it */
-static void
-create_client (CalClient **client, const char *uri, gboolean only_if_exists)
-{
- gboolean result;
-
- *client = cal_client_new ();
- if (!*client) {
- g_message ("create_client(): could not create the client");
- exit (1);
- }
-
- gtk_signal_connect (GTK_OBJECT (*client), "destroy",
- client_destroy_cb,
- NULL);
-
- gtk_signal_connect (GTK_OBJECT (*client), "cal_opened",
- GTK_SIGNAL_FUNC (cal_opened_cb),
- NULL);
- gtk_signal_connect (GTK_OBJECT (*client), "obj_updated",
- GTK_SIGNAL_FUNC (obj_updated_cb),
- NULL);
-
- printf ("Calendar loading `%s'...\n", uri);
-
- result = cal_client_open_calendar (*client, uri, only_if_exists);
-
- if (!result) {
- g_message ("create_client(): failure when issuing calendar open request `%s'",
- uri);
- exit (1);
- }
-}
-
-int
-main (int argc, char **argv)
-{
- bindtextdomain (PACKAGE, GNOMELOCALEDIR);
- textdomain (PACKAGE);
-
- gnome_init ("tl-test", VERSION, argc, argv);
- oaf_init (argc, argv);
-
- if (!bonobo_init (CORBA_OBJECT_NIL, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL)) {
- g_message ("main(): could not initialize Bonobo");
- exit (1);
- }
-
- create_client (&client1, "/cvs/evolution/calendar/cal-client/test.ics", FALSE);
- create_client (&client2, "/cvs/evolution/calendar/cal-client/test.ics", TRUE);
-
- bonobo_main ();
- return 0;
-}
diff --git a/calendar/cal-client/query-listener.c b/calendar/cal-client/query-listener.c
deleted file mode 100644
index 980b0a1ece..0000000000
--- a/calendar/cal-client/query-listener.c
+++ /dev/null
@@ -1,281 +0,0 @@
-/* Evolution calendar - Live search query listener convenience object
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "query-listener.h"
-
-
-
-/* Private part of the QueryListener structure */
-
-struct _QueryListenerPrivate {
- /* Callbacks for notification and their closure data */
- QueryListenerObjUpdatedFn obj_updated_fn;
- QueryListenerObjRemovedFn obj_removed_fn;
- QueryListenerQueryDoneFn query_done_fn;
- QueryListenerEvalErrorFn eval_error_fn;
- gpointer fn_data;
-};
-
-
-
-static void query_listener_class_init (QueryListenerClass *class);
-static void query_listener_init (QueryListener *ql);
-static void query_listener_destroy (GtkObject *object);
-
-static void impl_notifyObjUpdated (PortableServer_Servant servant,
- GNOME_Evolution_Calendar_CalObjUID uid,
- CORBA_boolean query_in_progress,
- CORBA_long n_scanned,
- CORBA_long total,
- CORBA_Environment *ev);
-
-static void impl_notifyObjRemoved (PortableServer_Servant servant,
- GNOME_Evolution_Calendar_CalObjUID uid,
- CORBA_Environment *ev);
-
-static void impl_notifyQueryDone (PortableServer_Servant servant,
- GNOME_Evolution_Calendar_QueryListener_QueryDoneStatus corba_status,
- const CORBA_char *error_str,
- CORBA_Environment *ev);
-
-static void impl_notifyEvalError (PortableServer_Servant servant,
- const CORBA_char *error_str,
- CORBA_Environment *ev);
-
-static BonoboXObjectClass *parent_class;
-
-
-
-BONOBO_X_TYPE_FUNC_FULL (QueryListener,
- GNOME_Evolution_Calendar_QueryListener,
- BONOBO_X_OBJECT_TYPE,
- query_listener);
-
-/* Class initialization function for the live search query listener */
-static void
-query_listener_class_init (QueryListenerClass *class)
-{
- GtkObjectClass *object_class;
-
- object_class = (GtkObjectClass *) class;
-
- parent_class = gtk_type_class (BONOBO_X_OBJECT_TYPE);
-
- object_class->destroy = query_listener_destroy;
-
- class->epv.notifyObjUpdated = impl_notifyObjUpdated;
- class->epv.notifyObjRemoved = impl_notifyObjRemoved;
- class->epv.notifyQueryDone = impl_notifyQueryDone;
- class->epv.notifyEvalError = impl_notifyEvalError;
-}
-
-/* Object initialization function for the live search query listener */
-static void
-query_listener_init (QueryListener *ql)
-{
- QueryListenerPrivate *priv;
-
- priv = g_new0 (QueryListenerPrivate, 1);
- ql->priv = priv;
-
- priv->obj_updated_fn = NULL;
- priv->obj_removed_fn = NULL;
- priv->query_done_fn = NULL;
- priv->eval_error_fn = NULL;
- priv->fn_data = NULL;
-}
-
-/* Destroy handler for the live search query listener */
-static void
-query_listener_destroy (GtkObject *object)
-{
- QueryListener *ql;
- QueryListenerPrivate *priv;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (IS_QUERY_LISTENER (object));
-
- ql = QUERY_LISTENER (object);
- priv = ql->priv;
-
- priv->obj_updated_fn = NULL;
- priv->obj_removed_fn = NULL;
- priv->query_done_fn = NULL;
- priv->eval_error_fn = NULL;
- priv->fn_data = NULL;
-
- g_free (priv);
- ql->priv = NULL;
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-
-
-/* CORBA method implementations */
-
-/* ::notifyObjUpdated() method */
-static void
-impl_notifyObjUpdated (PortableServer_Servant servant,
- GNOME_Evolution_Calendar_CalObjUID uid,
- CORBA_boolean query_in_progress,
- CORBA_long n_scanned,
- CORBA_long total,
- CORBA_Environment *ev)
-{
- QueryListener *ql;
- QueryListenerPrivate *priv;
-
- ql = QUERY_LISTENER (bonobo_object_from_servant (servant));
- priv = ql->priv;
-
- g_assert (priv->obj_updated_fn != NULL);
- (* priv->obj_updated_fn) (ql, uid, query_in_progress, n_scanned, total, priv->fn_data);
-}
-
-/* ::notifyObjRemoved() method */
-static void
-impl_notifyObjRemoved (PortableServer_Servant servant,
- GNOME_Evolution_Calendar_CalObjUID uid,
- CORBA_Environment *ev)
-{
- QueryListener *ql;
- QueryListenerPrivate *priv;
-
- ql = QUERY_LISTENER (bonobo_object_from_servant (servant));
- priv = ql->priv;
-
- g_assert (priv->obj_removed_fn != NULL);
- (* priv->obj_removed_fn) (ql, uid, priv->fn_data);
-}
-
-/* ::notifyQueryDone() method */
-static void
-impl_notifyQueryDone (PortableServer_Servant servant,
- GNOME_Evolution_Calendar_QueryListener_QueryDoneStatus corba_status,
- const CORBA_char *error_str,
- CORBA_Environment *ev)
-{
- QueryListener *ql;
- QueryListenerPrivate *priv;
-
- ql = QUERY_LISTENER (bonobo_object_from_servant (servant));
- priv = ql->priv;
-
- g_assert (priv->query_done_fn != NULL);
- (* priv->query_done_fn) (ql, corba_status, error_str, priv->fn_data);
-}
-
-/* ::notifyEvalError() method */
-static void
-impl_notifyEvalError (PortableServer_Servant servant,
- const CORBA_char *error_str,
- CORBA_Environment *ev)
-{
- QueryListener *ql;
- QueryListenerPrivate *priv;
-
- ql = QUERY_LISTENER (bonobo_object_from_servant (servant));
- priv = ql->priv;
-
- g_assert (priv->eval_error_fn != NULL);
- (* priv->eval_error_fn) (ql, error_str, priv->fn_data);
-}
-
-
-
-/**
- * query_listener_construct:
- * @ql: A query listener.
- * @obj_updated_fn: Callback to use when a component is updated in the query.
- * @obj_removed_fn: Callback to use when a component is removed from the query.
- * @query_done_fn: Callback to use when a query is done.
- * @eval_error_fn: Callback to use when an evaluation error happens during a query.
- * @fn_data: Closure data to pass to the callbacks.
- *
- * Constructs a query listener by setting the callbacks it will use for
- * notification from the calendar server.
- *
- * Return value: The same value as @ql.
- **/
-QueryListener *
-query_listener_construct (QueryListener *ql,
- QueryListenerObjUpdatedFn obj_updated_fn,
- QueryListenerObjRemovedFn obj_removed_fn,
- QueryListenerQueryDoneFn query_done_fn,
- QueryListenerEvalErrorFn eval_error_fn,
- gpointer fn_data)
-{
- QueryListenerPrivate *priv;
-
- g_return_val_if_fail (ql != NULL, NULL);
- g_return_val_if_fail (IS_QUERY_LISTENER (ql), NULL);
- g_return_val_if_fail (obj_updated_fn != NULL, NULL);
- g_return_val_if_fail (obj_removed_fn != NULL, NULL);
- g_return_val_if_fail (query_done_fn != NULL, NULL);
- g_return_val_if_fail (eval_error_fn != NULL, NULL);
-
- priv = ql->priv;
-
- priv->obj_updated_fn = obj_updated_fn;
- priv->obj_removed_fn = obj_removed_fn;
- priv->query_done_fn = query_done_fn;
- priv->eval_error_fn = eval_error_fn;
- priv->fn_data = fn_data;
-
- return ql;
-}
-
-/**
- * query_listener_new:
- * @obj_updated_fn: Callback to use when a component is updated in the query.
- * @obj_removed_fn: Callback to use when a component is removed from the query.
- * @query_done_fn: Callback to use when a query is done.
- * @eval_error_fn: Callback to use when an evaluation error happens during a query.
- * @fn_data: Closure data to pass to the callbacks.
- *
- * Creates a new query listener object.
- *
- * Return value: A newly-created query listener object.
- **/
-QueryListener *
-query_listener_new (QueryListenerObjUpdatedFn obj_updated_fn,
- QueryListenerObjRemovedFn obj_removed_fn,
- QueryListenerQueryDoneFn query_done_fn,
- QueryListenerEvalErrorFn eval_error_fn,
- gpointer fn_data)
-{
- QueryListener *ql;
-
- ql = gtk_type_new (QUERY_LISTENER_TYPE);
-
- return query_listener_construct (ql,
- obj_updated_fn,
- obj_removed_fn,
- query_done_fn,
- eval_error_fn,
- fn_data);
-}
diff --git a/calendar/cal-client/query-listener.h b/calendar/cal-client/query-listener.h
deleted file mode 100644
index 53be9f3229..0000000000
--- a/calendar/cal-client/query-listener.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/* Evolution calendar - Live search query listener implementation
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef QUERY_LISTENER_H
-#define QUERY_LISTENER_H
-
-#include <bonobo/bonobo-xobject.h>
-#include "evolution-calendar.h"
-
-BEGIN_GNOME_DECLS
-
-
-
-#define QUERY_LISTENER_TYPE (query_listener_get_type ())
-#define QUERY_LISTENER(obj) (GTK_CHECK_CAST ((obj), QUERY_LISTENER_TYPE, QueryListener))
-#define QUERY_LISTENER_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), QUERY_LISTENER_TYPE, \
- QueryListenerClass))
-#define IS_QUERY_LISTENER(obj) (GTK_CHECK_TYPE ((obj), QUERY_LISTENER_TYPE))
-#define IS_QUERY_LISTENER_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), QUERY_LISTENER_TYPE))
-
-typedef struct _QueryListenerPrivate QueryListenerPrivate;
-
-typedef struct {
- BonoboXObject xobject;
-
- /* Private data */
- QueryListenerPrivate *priv;
-} QueryListener;
-
-typedef struct {
- BonoboXObjectClass parent_class;
-
- POA_GNOME_Evolution_Calendar_QueryListener__epv epv;
-} QueryListenerClass;
-
-/* Notification functions */
-
-typedef void (* QueryListenerObjUpdatedFn) (QueryListener *ql,
- const GNOME_Evolution_Calendar_CalObjUID uid,
- CORBA_boolean query_in_progress,
- CORBA_long n_scanned,
- CORBA_long total,
- gpointer data);
-
-typedef void (* QueryListenerObjRemovedFn) (QueryListener *ql,
- const GNOME_Evolution_Calendar_CalObjUID uid,
- gpointer data);
-
-typedef void (* QueryListenerQueryDoneFn) (
- QueryListener *ql,
- GNOME_Evolution_Calendar_QueryListener_QueryDoneStatus status,
- const CORBA_char *error_str,
- gpointer data);
-
-typedef void (* QueryListenerEvalErrorFn) (QueryListener *ql,
- const CORBA_char *error_str,
- gpointer data);
-
-GtkType query_listener_get_type (void);
-
-QueryListener *query_listener_construct (QueryListener *ql,
- QueryListenerObjUpdatedFn obj_updated_fn,
- QueryListenerObjRemovedFn obj_removed_fn,
- QueryListenerQueryDoneFn query_done_fn,
- QueryListenerEvalErrorFn eval_error_fn,
- gpointer fn_data);
-
-QueryListener *query_listener_new (QueryListenerObjUpdatedFn obj_updated_fn,
- QueryListenerObjRemovedFn obj_removed_fn,
- QueryListenerQueryDoneFn query_done_fn,
- QueryListenerEvalErrorFn eval_error_fn,
- gpointer fn_data);
-
-
-
-END_GNOME_DECLS
-
-#endif
diff --git a/calendar/cal-client/test.ics b/calendar/cal-client/test.ics
deleted file mode 100644
index 128251ee11..0000000000
--- a/calendar/cal-client/test.ics
+++ /dev/null
@@ -1,318 +0,0 @@
-BEGIN:VCALENDAR
-VERSION:2.0
-PRODID:-//hacksw/handcal//NONSGML v1.0//EN
-
-BEGIN:VEVENT
-DTSTART:19970714T170000Z
-DTEND:19970715T035959Z
-SUMMARY:Bastille Day Party
-END:VEVENT
-
-BEGIN:VEVENT
-UID:19970901T130000Z-123401@host.com
-DTSTAMP:19970901T1300Z
-DTSTART:19970903T163000Z
-DTEND:19970903T190000Z
-SUMMARY:Annual Employee Review
-CLASS:PRIVATE
-CATEGORIES:BUSINESS,HUMAN RESOURCES
-END:VEVENT
-
-BEGIN:VEVENT
-UID:19970901T130000Z-123402@host.com
-DTSTAMP:19970901T1300Z
-DTSTART:19970401T163000Z
-DTEND:19970402T010000Z
-SUMMARY:Laurel is in sensitivity awareness class.
-CLASS:PUBLIC
-CATEGORIES:BUSINESS,HUMAN RESOURCES
-TRANSP:TRANSPARENT
-END:VEVENT
-
-BEGIN:VEVENT
-UID:19970901T130000Z-123403@host.com
-DTSTAMP:19970901T1300Z
-DTSTART:19971102
-SUMMARY:Our Blissful Anniversary
-CLASS:CONFIDENTIAL
-CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION
-RRULE:FREQ=YEARLY
-END:VEVENT
-
-BEGIN:VTODO
-UID:19970901T130000Z-123404@host.com
-DTSTAMP:19970901T1300Z
-DTSTART:19970415T133000Z
-DUE:19970416T045959Z
-SUMMARY:1996 Income Tax Preparation
-CLASS:CONFIDENTIAL
-CATEGORIES:FAMILY,FINANCE
-PRIORITY:1
-STATUS:NEEDS-ACTION
-END:VTODO
-
-BEGIN:VJOURNAL
-UID:19970901T130000Z-123405@host.com
-DTSTAMP:19970901T1300Z
-DTSTART;VALUE=DATE:19970317
-SUMMARY:Staff meeting minutes
-DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa
- and Bob. Aurora project plans were reviewed. There is currently
- no budget reserves for this project. Lisa will escalate to
- management. Next meeting on Tuesday.\n
- 2. Telephone Conference: ABC Corp. sales representative called
- to discuss new printer. Promised to get us a demo by Friday.\n
- 3. Henry Miller (Handsoff Insurance): Car was totaled by tree.
- Is looking into a loaner car. 654-2323 (tel).
-END:VJOURNAL
-
-BEGIN:VFREEBUSY
-ORGANIZER:MAILTO:jane_doe@host1.com
-ATTENDEE:MAILTO:john_public@host2.com
-DTSTART:19971015T050000Z
-DTEND:19971016T050000Z
-DTSTAMP:19970901T083000Z
-END:VFREEBUSY
-
-BEGIN:VFREEBUSY
-ORGANIZER:MAILTO:jane_doe@host1.com
-ATTENDEE:MAILTO:john_public@host2.com
-DTSTAMP:19970901T100000Z
-FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M,
- 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M
-URL:http://host2.com/pub/busy/jpublic-01.ifb
-COMMENT:This iCalendar file contains busy time information for
- the next three months.
-END:VFREEBUSY
-
-BEGIN:VFREEBUSY
-ORGANIZER:jsmith@host.com
-DTSTART:19980313T141711Z
-DTEND:19980410T141711Z
-FREEBUSY:19980314T233000Z/19980315T003000Z
-FREEBUSY:19980316T153000Z/19980316T163000Z
-FREEBUSY:19980318T030000Z/19980318T040000Z
-URL:http://www.host.com/calendar/busytime/jsmith.ifb
-END:VFREEBUSY
-
-BEGIN:VTIMEZONE
-TZID:US-Eastern
-LAST-MODIFIED:19870101T000000Z
-BEGIN:STANDARD
-DTSTART:19971026T020000
-RDATE:19971026T020000
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-TZNAME:EST
-END:STANDARD
-BEGIN:DAYLIGHT
-DTSTART:19971026T020000
-RDATE:19970406T020000
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-TZNAME:EDT
-END:DAYLIGHT
-END:VTIMEZONE
-
-BEGIN:VTIMEZONE
-TZID:US-Eastern
-LAST-MODIFIED:19870101T000000Z
-TZURL:http://zones.stds_r_us.net/tz/US-Eastern
-BEGIN:STANDARD
-DTSTART:19671029T020000
-RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-TZNAME:EST
-END:STANDARD
-BEGIN:DAYLIGHT
-DTSTART:19870405T020000
-RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-TZNAME:EDT
-END:DAYLIGHT
-END:VTIMEZONE
-
-BEGIN:VTIMEZONE
-TZID:US--Fictitious-Eastern
-LAST-MODIFIED:19870101T000000Z
-BEGIN:STANDARD
-DTSTART:19671029T020000
-RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-TZNAME:EST
-END:STANDARD
-BEGIN:DAYLIGHT
-DTSTART:19870405T020000
-RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-TZNAME:EDT
-END:DAYLIGHT
-END:VTIMEZONE
-
-BEGIN:VTIMEZONE
-TZID:US--Fictitious-Eastern
-LAST-MODIFIED:19870101T000000Z
-BEGIN:STANDARD
-DTSTART:19671029T020000
-RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-TZNAME:EST
-END:STANDARD
-BEGIN:DAYLIGHT
-DTSTART:19870405T020000
-RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-TZNAME:EDT
-END:DAYLIGHT
-BEGIN:DAYLIGHT
-DTSTART:19990424T020000
-RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-TZNAME:EDT
-END:DAYLIGHT
-END:VTIMEZONE
-
-BEGIN:VALARM
-TRIGGER;VALUE=DATE-TIME:19970317T133000Z
-REPEAT:4
-DURATION:PT15M
-ACTION:AUDIO
-ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud
-END:VALARM
-BEGIN:VALARM
-TRIGGER:-PT30M
-REPEAT:2
-DURATION:PT15M
-ACTION:DISPLAY
-DESCRIPTION:Breakfast meeting with executive\n
- team at 8:30 AM EST.
-END:VALARM
-
-BEGIN:VALARM
-TRIGGER:-P2D
-ACTION:EMAIL
-ATTENDEE:MAILTO:john_doe@host.com
-SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING ***
-DESCRIPTION:A draft agenda needs to be sent out to the attendees
- to the weekly managers meeting (MGR-LIST). Attached is a
- pointer the document template for the agenda file.
-ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen
- da.doc
-END:VALARM
-
-BEGIN:VALARM
-TRIGGER;VALUE=DATE-TIME:19980101T050000Z
-REPEAT:23
-DURATION:PT1H
-ACTION:PROCEDURE
-ATTACH;FMTTYPE=application/binary:ftp://host.com/novo-
- procs/felizano.exe
-END:VALARM
-
-BEGIN:VTIMEZONE
-TZID:US-Eastern
-BEGIN:STANDARD
-DTSTART:19981025T020000
-RDATE:19981025T020000
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-TZNAME:EST
-END:STANDARD
-BEGIN:DAYLIGHT
-DTSTART:19990404T020000
-RDATE:19990404T020000
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-TZNAME:EDT
-END:DAYLIGHT
-END:VTIMEZONE
-
-BEGIN:VEVENT
-DTSTAMP:19980309T231000Z
-UID:guid-1.host1.com
-ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com
-ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:
- MAILTO:employee-A@host.com
-DESCRIPTION:Project XYZ Review Meeting
-CATEGORIES:MEETING
-CLASS:PUBLIC
-CREATED:19980309T130000Z
-SUMMARY:XYZ Project Review
-DTSTART;TZID=US-Eastern:19980312T083000
-DTEND;TZID=US-Eastern:19980312T093000
-LOCATION:1CP Conference Room 4350
-END:VEVENT
-
-BEGIN:VEVENT
-DTSTAMP:19970324T1200Z
-SEQUENCE:0
-UID:uid3@host1.com
-ORGANIZER:MAILTO:jdoe@host1.com
-DTSTART:19970324T123000Z
-DTEND:19970324T210000Z
-CATEGORIES:MEETING,PROJECT
-CLASS:PUBLIC
-SUMMARY:Calendaring Interoperability Planning Meeting
-DESCRIPTION:Discuss how we can test c&s interoperability\n
- using iCalendar and other IETF standards.
-LOCATION:LDB Lobby
-ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/
- conf/bkgrnd.ps
-END:VEVENT
-
-BEGIN:VTODO
-DTSTAMP:19980130T134500Z
-SEQUENCE:2
-UID:uid4@host1.com
-ORGANIZER:MAILTO:unclesam@us.gov
-ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com
-DUE:19980415T235959
-STATUS:NEEDS-ACTION
-SUMMARY:Submit Income Taxes
-BEGIN:VALARM
-ACTION:AUDIO
-TRIGGER:19980403T120000
-ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio-
- files/ssbanner.aud
-REPEAT:4
-DURATION:PT1H
-END:VALARM
-END:VTODO
-
-BEGIN:VJOURNAL
-DTSTAMP:19970324T120000Z
-UID:uid5@host1.com
-ORGANIZER:MAILTO:jsmith@host.com
-STATUS:DRAFT
-CLASS:PUBLIC
-CATEGORIES:Project Report, XYZ, Weekly Meeting
-DESCRIPTION:Project xyz Review Meeting Minutes\n
- Agenda\n1. Review of project version 1.0 requirements.\n2.
- Definition
- of project processes.\n3. Review of project schedule.\n
- Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was
- decided that the requirements need to be signed off by
- product marketing.\n-Project processes were accepted.\n
- -Project schedule needs to account for scheduled holidays
- and employee vacation time. Check with HR for specific
- dates.\n-New schedule will be distributed by Friday.\n-
- Next weeks meeting is cancelled. No meeting until 3/23.
-END:VJOURNAL
-
-BEGIN:VFREEBUSY
-ORGANIZER:MAILTO:jsmith@host.com
-DTSTART:19980313T141711Z
-DTEND:19980410T141711Z
-FREEBUSY:19980314T233000Z/19980315T003000Z
-FREEBUSY:19980316T153000Z/19980316T163000Z
-FREEBUSY:19980318T030000Z/19980318T040000Z
-URL:http://www.host.com/calendar/busytime/jsmith.ifb
-END:VFREEBUSY
-END:VCALENDAR
diff --git a/calendar/cal-util/.cvsignore b/calendar/cal-util/.cvsignore
deleted file mode 100644
index 9f93120f8a..0000000000
--- a/calendar/cal-util/.cvsignore
+++ /dev/null
@@ -1,7 +0,0 @@
-.libs
-Makefile.in
-Makefile
-.deps
-*.lo
-*.la
-test-recur
diff --git a/calendar/cal-util/Makefile.am b/calendar/cal-util/Makefile.am
deleted file mode 100644
index 80c8da2662..0000000000
--- a/calendar/cal-util/Makefile.am
+++ /dev/null
@@ -1,49 +0,0 @@
-noinst_PROGRAMS = test-recur
-
-INCLUDES = \
- -DGNOMELOCALEDIR=\""$(localedir)"\" \
- -DG_LOG_DOMAIN=\"cal-util\" \
- -I$(top_srcdir) \
- -I$(top_srcdir)/calendar \
- -I. \
- -I.. \
- -I$(top_builddir) \
- -I$(top_srcdir)/libical/src/libical \
- -I$(top_builddir)/libical/src/libical \
- $(GNOME_INCLUDEDIR)
-
-#
-# cal util library
-#
-
-lib_LTLIBRARIES = libcal-util.la
-
-libcal_util_la_SOURCES = \
- cal-component.c \
- cal-recur.c \
- cal-util.c \
- timeutil.c
-
-libcal_utilincludedir = $(includedir)/evolution/cal-util
-
-libcal_utilinclude_HEADERS = \
- cal-component.h \
- cal-recur.h \
- cal-util.h \
- timeutil.h
-
-#
-# static library for use in conduits' shared libraries
-#
-noinst_LTLIBRARIES = libcal-util-static.la
-libcal_util_static_la_SOURCES = $(libcal_util_la_SOURCES)
-libcal_util_static_la_LDFLAGS = --all-static
-
-test_recur_SOURCES = \
- test-recur.c
-
-test_recur_LDADD = \
- libcal-util.la \
- $(top_builddir)/libversit/libversit.la \
- $(top_builddir)/libical/src/libical/libical.la \
- $(EXTRA_GNOME_LIBS)
diff --git a/calendar/cal-util/cal-component.c b/calendar/cal-util/cal-component.c
deleted file mode 100644
index d716c0e581..0000000000
--- a/calendar/cal-util/cal-component.c
+++ /dev/null
@@ -1,4094 +0,0 @@
-/* Evolution calendar - iCalendar component object
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include "cal-component.h"
-#include "timeutil.h"
-
-
-
-/* Extension property for alarm components so that we can reference them by UID */
-#define EVOLUTION_ALARM_UID_PROPERTY "X-EVOLUTION-ALARM-UID"
-
-/* Private part of the CalComponent structure */
-struct _CalComponentPrivate {
- /* The icalcomponent we wrap */
- icalcomponent *icalcomp;
-
- /* Properties */
-
- icalproperty *uid;
-
- icalproperty *status;
-
- icalproperty *categories;
-
- icalproperty *classification;
-
- struct text {
- icalproperty *prop;
- icalparameter *altrep_param;
- };
-
- GSList *comment_list; /* list of struct text */
-
- icalproperty *completed;
- icalproperty *created;
-
- GSList *description_list; /* list of struct text */
-
- struct datetime {
- icalproperty *prop;
- icalparameter *tzid_param;
- };
-
- struct datetime dtstart;
- struct datetime dtend;
-
- icalproperty *dtstamp;
-
- struct datetime due;
-
- GSList *exdate_list; /* list of struct datetime */
- GSList *exrule_list; /* list of icalproperty objects */
-
- icalproperty *geo;
- icalproperty *last_modified;
- icalproperty *percent;
- icalproperty *priority;
-
- struct period {
- icalproperty *prop;
- icalparameter *value_param;
- };
-
- GSList *rdate_list; /* list of struct period */
-
- GSList *rrule_list; /* list of icalproperty objects */
-
- icalproperty *sequence;
-
- struct {
- icalproperty *prop;
- icalparameter *altrep_param;
- } summary;
-
- icalproperty *transparency;
- icalproperty *url;
-
- /* Subcomponents */
-
- GHashTable *alarm_uid_hash;
-
- /* Whether we should increment the sequence number when piping the
- * object over the wire.
- */
- guint need_sequence_inc : 1;
-};
-
-/* Private structure for alarms */
-struct _CalComponentAlarm {
- /* Alarm icalcomponent we wrap */
- icalcomponent *icalcomp;
-
- /* Our extension UID property */
- icalproperty *uid;
-
- /* Properties */
-
- icalproperty *action;
- icalproperty *trigger;
-};
-
-
-
-static void cal_component_class_init (CalComponentClass *class);
-static void cal_component_init (CalComponent *comp);
-static void cal_component_destroy (GtkObject *object);
-
-static GtkObjectClass *parent_class;
-
-
-
-/**
- * cal_component_get_type:
- *
- * Registers the #CalComponent class if necessary, and returns the type ID
- * associated to it.
- *
- * Return value: The type ID of the #CalComponent class.
- **/
-GtkType
-cal_component_get_type (void)
-{
- static GtkType cal_component_type = 0;
-
- if (!cal_component_type) {
- static const GtkTypeInfo cal_component_info = {
- "CalComponent",
- sizeof (CalComponent),
- sizeof (CalComponentClass),
- (GtkClassInitFunc) cal_component_class_init,
- (GtkObjectInitFunc) cal_component_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- cal_component_type = gtk_type_unique (GTK_TYPE_OBJECT, &cal_component_info);
- }
-
- return cal_component_type;
-}
-
-/* Class initialization function for the calendar component object */
-static void
-cal_component_class_init (CalComponentClass *class)
-{
- GtkObjectClass *object_class;
-
- object_class = (GtkObjectClass *) class;
-
- parent_class = gtk_type_class (GTK_TYPE_OBJECT);
-
- object_class->destroy = cal_component_destroy;
-}
-
-/* Object initialization function for the calendar component object */
-static void
-cal_component_init (CalComponent *comp)
-{
- CalComponentPrivate *priv;
-
- priv = g_new0 (CalComponentPrivate, 1);
- comp->priv = priv;
-
- priv->alarm_uid_hash = g_hash_table_new (g_str_hash, g_str_equal);
-}
-
-/* Does a simple g_free() of the elements of a GSList and then frees the list
- * itself. Returns NULL.
- */
-static GSList *
-free_slist (GSList *slist)
-{
- GSList *l;
-
- for (l = slist; l; l = l->next)
- g_free (l->data);
-
- g_slist_free (slist);
- return NULL;
-}
-
-/* Used from g_hash_table_foreach_remove() to free the alarm UIDs hash table.
- * We do not need to do anything to individual elements since we were storing
- * the UID pointers inside the icalproperties themselves.
- */
-static gboolean
-free_alarm_cb (gpointer key, gpointer value, gpointer data)
-{
- return TRUE;
-}
-
-/* Frees the internal icalcomponent only if it does not have a parent. If it
- * does, it means we don't own it and we shouldn't free it.
- */
-static void
-free_icalcomponent (CalComponent *comp)
-{
- CalComponentPrivate *priv;
-
- priv = comp->priv;
-
- if (!priv->icalcomp)
- return;
-
- /* Free the icalcomponent */
-
- if (icalcomponent_get_parent (priv->icalcomp) == NULL)
- icalcomponent_free (priv->icalcomp);
-
- priv->icalcomp = NULL;
-
- /* Free the mappings */
-
- priv->uid = NULL;
-
- priv->status = NULL;
-
- priv->categories = NULL;
-
- priv->classification = NULL;
- priv->comment_list = NULL;
- priv->completed = NULL;
- priv->created = NULL;
-
- priv->description_list = free_slist (priv->description_list);
-
- priv->dtend.prop = NULL;
- priv->dtend.tzid_param = NULL;
-
- priv->dtstamp = NULL;
-
- priv->dtstart.prop = NULL;
- priv->dtstart.tzid_param = NULL;
-
- priv->due.prop = NULL;
- priv->due.tzid_param = NULL;
-
- priv->exdate_list = free_slist (priv->exdate_list);
-
- g_slist_free (priv->exrule_list);
- priv->exrule_list = NULL;
-
- priv->geo = NULL;
- priv->last_modified = NULL;
- priv->percent = NULL;
- priv->priority = NULL;
-
- priv->rdate_list = free_slist (priv->rdate_list);
-
- g_slist_free (priv->rrule_list);
- priv->rrule_list = NULL;
-
- priv->sequence = NULL;
-
- priv->summary.prop = NULL;
- priv->summary.altrep_param = NULL;
-
- priv->transparency = NULL;
- priv->url = NULL;
-
- /* Free the subcomponents */
-
- g_hash_table_foreach_remove (priv->alarm_uid_hash, free_alarm_cb, NULL);
-
- /* Clean up */
-
- priv->need_sequence_inc = FALSE;
-}
-
-/* Destroy handler for the calendar component object */
-static void
-cal_component_destroy (GtkObject *object)
-{
- CalComponent *comp;
- CalComponentPrivate *priv;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (object));
-
- comp = CAL_COMPONENT (object);
- priv = comp->priv;
-
- free_icalcomponent (comp);
- g_hash_table_destroy (priv->alarm_uid_hash);
- priv->alarm_uid_hash = NULL;
-
- g_free (priv);
- comp->priv = NULL;
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-
-
-/**
- * cal_component_gen_uid:
- *
- * Generates a unique identifier suitable for calendar components.
- *
- * Return value: A unique identifier string. Every time this function is called
- * a different string is returned.
- **/
-char *
-cal_component_gen_uid (void)
-{
- char *iso, *ret;
- static char *hostname;
- time_t t = time (NULL);
- static int serial;
-
- if (!hostname) {
- static char buffer [512];
-
- if ((gethostname (buffer, sizeof (buffer) - 1) == 0) &&
- (buffer [0] != 0))
- hostname = buffer;
- else
- hostname = "localhost";
- }
-
- iso = isodate_from_time_t (t);
- ret = g_strdup_printf ("%s-%d-%d-%d-%d@%s",
- iso,
- getpid (),
- getgid (),
- getppid (),
- serial++,
- hostname);
- g_free (iso);
-
- return ret;
-}
-
-/**
- * cal_component_new:
- *
- * Creates a new empty calendar component object. You should set it from an
- * #icalcomponent structure by using cal_component_set_icalcomponent() or with a
- * new empty component type by using cal_component_set_new_vtype().
- *
- * Return value: A newly-created calendar component object.
- **/
-CalComponent *
-cal_component_new (void)
-{
- return CAL_COMPONENT (gtk_type_new (CAL_COMPONENT_TYPE));
-}
-
-/**
- * cal_component_clone:
- * @comp: A calendar component object.
- *
- * Creates a new calendar component object by copying the information from
- * another one.
- *
- * Return value: A newly-created calendar component with the same values as the
- * original one.
- **/
-CalComponent *
-cal_component_clone (CalComponent *comp)
-{
- CalComponentPrivate *priv;
- CalComponent *new_comp;
- icalcomponent *new_icalcomp;
-
- g_return_val_if_fail (comp != NULL, NULL);
- g_return_val_if_fail (IS_CAL_COMPONENT (comp), NULL);
-
- priv = comp->priv;
- g_return_val_if_fail (priv->need_sequence_inc == FALSE, NULL);
-
- new_comp = cal_component_new ();
-
- if (priv->icalcomp) {
- new_icalcomp = icalcomponent_new_clone (priv->icalcomp);
- cal_component_set_icalcomponent (new_comp, new_icalcomp);
- }
-
- return new_comp;
-}
-
-/* Scans a date/time and timezone pair property */
-static void
-scan_datetime (CalComponent *comp, struct datetime *datetime, icalproperty *prop)
-{
- CalComponentPrivate *priv;
-
- priv = comp->priv;
-
- datetime->prop = prop;
- datetime->tzid_param = icalproperty_get_first_parameter (prop, ICAL_TZID_PARAMETER);
-}
-
-/* Scans an exception date property */
-static void
-scan_exdate (CalComponent *comp, icalproperty *prop)
-{
- CalComponentPrivate *priv;
- struct datetime *dt;
-
- priv = comp->priv;
-
- dt = g_new (struct datetime, 1);
- dt->prop = prop;
- dt->tzid_param = icalproperty_get_first_parameter (prop, ICAL_TZID_PARAMETER);
-
- priv->exdate_list = g_slist_append (priv->exdate_list, dt);
-}
-
-/* Scans an icalperiodtype property */
-static void
-scan_period (CalComponent *comp, GSList **list, icalproperty *prop)
-{
- struct period *period;
-
- period = g_new (struct period, 1);
- period->prop = prop;
- period->value_param = icalproperty_get_first_parameter (prop, ICAL_VALUE_PARAMETER);
-
- *list = g_slist_append (*list, period);
-}
-
-/* Scans an icalrecurtype property */
-static void
-scan_recur (CalComponent *comp, GSList **list, icalproperty *prop)
-{
- *list = g_slist_append (*list, prop);
-}
-
-/* Scans the summary property */
-static void
-scan_summary (CalComponent *comp, icalproperty *prop)
-{
- CalComponentPrivate *priv;
-
- priv = comp->priv;
-
- priv->summary.prop = prop;
- priv->summary.altrep_param = icalproperty_get_first_parameter (prop, ICAL_ALTREP_PARAMETER);
-}
-
-/* Scans a text (i.e. text + altrep) property */
-static void
-scan_text (CalComponent *comp, GSList **text_list, icalproperty *prop)
-{
- struct text *text;
-
- text = g_new (struct text, 1);
- text->prop = prop;
- text->altrep_param = icalproperty_get_first_parameter (prop, ICAL_ALTREP_PARAMETER);
-
- *text_list = g_slist_append (*text_list, text);
-}
-
-/* Scans an icalproperty and adds its mapping to the component */
-static void
-scan_property (CalComponent *comp, icalproperty *prop)
-{
- CalComponentPrivate *priv;
- icalproperty_kind kind;
-
- priv = comp->priv;
-
- kind = icalproperty_isa (prop);
-
- switch (kind) {
- case ICAL_STATUS_PROPERTY:
- priv->status = prop;
- break;
-
- case ICAL_CATEGORIES_PROPERTY:
- priv->categories = prop;
- break;
-
- case ICAL_CLASS_PROPERTY:
- priv->classification = prop;
- break;
-
- case ICAL_COMMENT_PROPERTY:
- scan_text (comp, &priv->comment_list, prop);
- break;
-
- case ICAL_COMPLETED_PROPERTY:
- priv->completed = prop;
- break;
-
- case ICAL_CREATED_PROPERTY:
- priv->created = prop;
- break;
-
- case ICAL_DESCRIPTION_PROPERTY:
- scan_text (comp, &priv->description_list, prop);
- break;
-
- case ICAL_DTEND_PROPERTY:
- scan_datetime (comp, &priv->dtend, prop);
- break;
-
- case ICAL_DTSTAMP_PROPERTY:
- priv->dtstamp = prop;
- break;
-
- case ICAL_DTSTART_PROPERTY:
- scan_datetime (comp, &priv->dtstart, prop);
- break;
-
- case ICAL_DUE_PROPERTY:
- scan_datetime (comp, &priv->due, prop);
- break;
-
- case ICAL_EXDATE_PROPERTY:
- scan_exdate (comp, prop);
- break;
-
- case ICAL_EXRULE_PROPERTY:
- scan_recur (comp, &priv->exrule_list, prop);
- break;
-
- case ICAL_GEO_PROPERTY:
- priv->geo = prop;
- break;
-
- case ICAL_LASTMODIFIED_PROPERTY:
- priv->last_modified = prop;
- break;
-
- case ICAL_PERCENTCOMPLETE_PROPERTY:
- priv->percent = prop;
- break;
-
- case ICAL_PRIORITY_PROPERTY:
- priv->priority = prop;
- break;
-
- case ICAL_RDATE_PROPERTY:
- scan_period (comp, &priv->rdate_list, prop);
- break;
-
- case ICAL_RRULE_PROPERTY:
- scan_recur (comp, &priv->rrule_list, prop);
- break;
-
- case ICAL_SEQUENCE_PROPERTY:
- priv->sequence = prop;
- break;
-
- case ICAL_SUMMARY_PROPERTY:
- scan_summary (comp, prop);
- break;
-
- case ICAL_TRANSP_PROPERTY:
- priv->transparency = prop;
- break;
-
- case ICAL_UID_PROPERTY:
- priv->uid = prop;
- break;
-
- case ICAL_URL_PROPERTY:
- priv->url = prop;
- break;
-
- default:
- break;
- }
-}
-
-/* Gets our alarm UID string from a property that is known to contain it */
-static const char *
-alarm_uid_from_prop (icalproperty *prop)
-{
- const char *xstr;
-
- g_assert (icalproperty_isa (prop) == ICAL_X_PROPERTY);
-
- xstr = icalproperty_get_x (prop);
- g_assert (xstr != NULL);
-
- return xstr;
-}
-
-/* Sets our alarm UID extension property on an alarm component. Returns a
- * pointer to the UID string inside the property itself.
- */
-static const char *
-set_alarm_uid (icalcomponent *alarm, const char *auid)
-{
- icalproperty *prop;
- const char *inprop_auid;
-
- /* Create the new property */
-
- prop = icalproperty_new_x ((char *) auid);
- icalproperty_set_x_name (prop, EVOLUTION_ALARM_UID_PROPERTY);
-
- icalcomponent_add_property (alarm, prop);
-
- inprop_auid = alarm_uid_from_prop (prop);
- return inprop_auid;
-}
-
-/* Removes any alarm UID extension properties from an alarm subcomponent */
-static void
-remove_alarm_uid (icalcomponent *alarm)
-{
- icalproperty *prop;
- GSList *list, *l;
-
- list = NULL;
-
- for (prop = icalcomponent_get_first_property (alarm, ICAL_X_PROPERTY);
- prop;
- prop = icalcomponent_get_next_property (alarm, ICAL_X_PROPERTY)) {
- const char *xname;
-
- xname = icalproperty_get_x_name (prop);
- g_assert (xname != NULL);
-
- if (strcmp (xname, EVOLUTION_ALARM_UID_PROPERTY) == 0)
- list = g_slist_prepend (list, prop);
- }
-
- for (l = list; l; l = l->next) {
- prop = l->data;
- icalcomponent_remove_property (alarm, prop);
- icalproperty_free (prop);
- }
-
- g_slist_free (list);
-}
-
-/* Adds an alarm subcomponent to the calendar component's mapping table. The
- * actual UID with which it gets added may not be the same as the specified one;
- * this function will change it if the table already had an alarm subcomponent
- * with the specified UID. Returns the actual UID used.
- */
-static const char *
-add_alarm (CalComponent *comp, icalcomponent *alarm, const char *auid)
-{
- CalComponentPrivate *priv;
- icalcomponent *old_alarm;
-
- priv = comp->priv;
-
- /* First we see if we already have an alarm with the requested UID. In
- * that case, we need to change the new UID to something else. This
- * should never happen, but who knows.
- */
-
- old_alarm = g_hash_table_lookup (priv->alarm_uid_hash, auid);
- if (old_alarm != NULL) {
- char *new_auid;
-
- g_message ("add_alarm(): Got alarm with duplicated UID `%s', changing it...", auid);
-
- remove_alarm_uid (alarm);
-
- new_auid = cal_component_gen_uid ();
- auid = set_alarm_uid (alarm, new_auid);
- g_free (new_auid);
- }
-
- g_hash_table_insert (priv->alarm_uid_hash, (char *) auid, alarm);
- return auid;
-}
-
-/* Scans an alarm subcomponent, adds an UID extension property to it (so that we
- * can reference alarms by unique IDs), and adds its mapping to the component. */
-static void
-scan_alarm (CalComponent *comp, icalcomponent *alarm)
-{
- CalComponentPrivate *priv;
- icalproperty *prop;
- const char *auid;
- char *new_auid;
-
- priv = comp->priv;
-
- for (prop = icalcomponent_get_first_property (alarm, ICAL_X_PROPERTY);
- prop;
- prop = icalcomponent_get_next_property (alarm, ICAL_X_PROPERTY)) {
- const char *xname;
-
- xname = icalproperty_get_x_name (prop);
- g_assert (xname != NULL);
-
- if (strcmp (xname, EVOLUTION_ALARM_UID_PROPERTY) == 0) {
- auid = alarm_uid_from_prop (prop);
- add_alarm (comp, alarm, auid);
- return;
- }
- }
-
- /* The component has no alarm UID property, so we create one. */
-
- new_auid = cal_component_gen_uid ();
- auid = set_alarm_uid (alarm, new_auid);
- g_free (new_auid);
-
- add_alarm (comp, alarm, auid);
-}
-
-/* Scans an icalcomponent for its properties so that we can provide
- * random-access to them. It also builds a hash table of the component's alarm
- * subcomponents.
- */
-static void
-scan_icalcomponent (CalComponent *comp)
-{
- CalComponentPrivate *priv;
- icalproperty *prop;
- icalcompiter iter;
-
- priv = comp->priv;
-
- g_assert (priv->icalcomp != NULL);
-
- /* Scan properties */
-
- for (prop = icalcomponent_get_first_property (priv->icalcomp, ICAL_ANY_PROPERTY);
- prop;
- prop = icalcomponent_get_next_property (priv->icalcomp, ICAL_ANY_PROPERTY))
- scan_property (comp, prop);
-
- /* Scan subcomponents */
-
- for (iter = icalcomponent_begin_component (priv->icalcomp, ICAL_VALARM_COMPONENT);
- icalcompiter_deref (&iter) != NULL;
- icalcompiter_next (&iter)) {
- icalcomponent *subcomp;
-
- subcomp = icalcompiter_deref (&iter);
- scan_alarm (comp, subcomp);
- }
-}
-
-/* Ensures that the mandatory calendar component properties (uid, dtstamp) do
- * exist. If they don't exist, it creates them automatically.
- */
-static void
-ensure_mandatory_properties (CalComponent *comp)
-{
- CalComponentPrivate *priv;
-
- priv = comp->priv;
- g_assert (priv->icalcomp != NULL);
-
- if (!priv->uid) {
- char *uid;
-
- uid = cal_component_gen_uid ();
- priv->uid = icalproperty_new_uid (uid);
- g_free (uid);
-
- icalcomponent_add_property (priv->icalcomp, priv->uid);
- }
-
- if (!priv->dtstamp) {
- time_t tim;
- struct icaltimetype t;
-
- tim = time (NULL);
- t = icaltime_from_timet (tim, FALSE);
-
- priv->dtstamp = icalproperty_new_dtstamp (t);
- icalcomponent_add_property (priv->icalcomp, priv->dtstamp);
- }
-}
-
-/**
- * cal_component_set_new_vtype:
- * @comp: A calendar component object.
- * @type: Type of calendar component to create.
- *
- * Clears any existing component data from a calendar component object and
- * creates a new #icalcomponent of the specified type for it. The only property
- * that will be set in the new component will be its unique identifier.
- **/
-void
-cal_component_set_new_vtype (CalComponent *comp, CalComponentVType type)
-{
- CalComponentPrivate *priv;
- icalcomponent *icalcomp;
- icalcomponent_kind kind;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- priv = comp->priv;
-
- free_icalcomponent (comp);
-
- if (type == CAL_COMPONENT_NO_TYPE)
- return;
-
- /* Figure out the kind and create the icalcomponent */
-
- switch (type) {
- case CAL_COMPONENT_EVENT:
- kind = ICAL_VEVENT_COMPONENT;
- break;
-
- case CAL_COMPONENT_TODO:
- kind = ICAL_VTODO_COMPONENT;
- break;
-
- case CAL_COMPONENT_JOURNAL:
- kind = ICAL_VJOURNAL_COMPONENT;
- break;
-
- case CAL_COMPONENT_FREEBUSY:
- kind = ICAL_VFREEBUSY_COMPONENT;
- break;
-
- case CAL_COMPONENT_TIMEZONE:
- kind = ICAL_VTIMEZONE_COMPONENT;
- break;
-
- default:
- g_assert_not_reached ();
- kind = ICAL_NO_COMPONENT;
- }
-
- icalcomp = icalcomponent_new (kind);
- if (!icalcomp) {
- g_message ("cal_component_set_new_vtype(): Could not create the icalcomponent!");
- return;
- }
-
- /* Scan the component to build our mapping table */
-
- priv->icalcomp = icalcomp;
- scan_icalcomponent (comp);
-
- /* Add missing stuff */
-
- ensure_mandatory_properties (comp);
-}
-
-/**
- * cal_component_set_icalcomponent:
- * @comp: A calendar component object.
- * @icalcomp: An #icalcomponent.
- *
- * Sets the contents of a calendar component object from an #icalcomponent
- * structure. If the @comp already had an #icalcomponent set into it, it will
- * will be freed automatically if the #icalcomponent does not have a parent
- * component itself.
- *
- * Supported component types are VEVENT, VTODO, VJOURNAL, VFREEBUSY, and VTIMEZONE.
- *
- * Return value: TRUE on success, FALSE if @icalcomp is an unsupported component
- * type.
- **/
-gboolean
-cal_component_set_icalcomponent (CalComponent *comp, icalcomponent *icalcomp)
-{
- CalComponentPrivate *priv;
- icalcomponent_kind kind;
-
- g_return_val_if_fail (comp != NULL, FALSE);
- g_return_val_if_fail (IS_CAL_COMPONENT (comp), FALSE);
-
- priv = comp->priv;
-
- if (priv->icalcomp == icalcomp)
- return TRUE;
-
- free_icalcomponent (comp);
-
- if (!icalcomp) {
- priv->icalcomp = NULL;
- return TRUE;
- }
-
- kind = icalcomponent_isa (icalcomp);
-
- if (!(kind == ICAL_VEVENT_COMPONENT
- || kind == ICAL_VTODO_COMPONENT
- || kind == ICAL_VJOURNAL_COMPONENT
- || kind == ICAL_VFREEBUSY_COMPONENT
- || kind == ICAL_VTIMEZONE_COMPONENT))
- return FALSE;
-
- priv->icalcomp = icalcomp;
-
- scan_icalcomponent (comp);
- ensure_mandatory_properties (comp);
-
- return TRUE;
-}
-
-/**
- * cal_component_get_icalcomponent:
- * @comp: A calendar component object.
- *
- * Queries the #icalcomponent structure that a calendar component object is
- * wrapping.
- *
- * Return value: An #icalcomponent structure, or NULL if the @comp has no
- * #icalcomponent set to it.
- **/
-icalcomponent *
-cal_component_get_icalcomponent (CalComponent *comp)
-{
- CalComponentPrivate *priv;
-
- g_return_val_if_fail (comp != NULL, NULL);
- g_return_val_if_fail (IS_CAL_COMPONENT (comp), NULL);
-
- priv = comp->priv;
- g_return_val_if_fail (priv->need_sequence_inc == FALSE, NULL);
-
- return priv->icalcomp;
-}
-
-/**
- * cal_component_get_vtype:
- * @comp: A calendar component object.
- *
- * Queries the type of a calendar component object.
- *
- * Return value: The type of the component, as defined by RFC 2445.
- **/
-CalComponentVType
-cal_component_get_vtype (CalComponent *comp)
-{
- CalComponentPrivate *priv;
- icalcomponent_kind kind;
-
- g_return_val_if_fail (comp != NULL, CAL_COMPONENT_NO_TYPE);
- g_return_val_if_fail (IS_CAL_COMPONENT (comp), CAL_COMPONENT_NO_TYPE);
-
- priv = comp->priv;
- g_return_val_if_fail (priv->icalcomp != NULL, CAL_COMPONENT_NO_TYPE);
-
- kind = icalcomponent_isa (priv->icalcomp);
- switch (kind) {
- case ICAL_VEVENT_COMPONENT:
- return CAL_COMPONENT_EVENT;
-
- case ICAL_VTODO_COMPONENT:
- return CAL_COMPONENT_TODO;
-
- case ICAL_VJOURNAL_COMPONENT:
- return CAL_COMPONENT_JOURNAL;
-
- case ICAL_VFREEBUSY_COMPONENT:
- return CAL_COMPONENT_FREEBUSY;
-
- case ICAL_VTIMEZONE_COMPONENT:
- return CAL_COMPONENT_TIMEZONE;
-
- default:
- /* We should have been loaded with a supported type! */
- g_assert_not_reached ();
- return CAL_COMPONENT_NO_TYPE;
- }
-}
-
-/**
- * cal_component_get_as_string:
- * @comp: A calendar component.
- *
- * Gets the iCalendar string representation of a calendar component. You should
- * call cal_component_commit_sequence() before this function to ensure that the
- * component's sequence number is consistent with the state of the object.
- *
- * Return value: String representation of the calendar component according to
- * RFC 2445.
- **/
-char *
-cal_component_get_as_string (CalComponent *comp)
-{
- CalComponentPrivate *priv;
- char *str, *buf;
-
- g_return_val_if_fail (comp != NULL, NULL);
- g_return_val_if_fail (IS_CAL_COMPONENT (comp), NULL);
-
- priv = comp->priv;
- g_return_val_if_fail (priv->icalcomp != NULL, NULL);
-
- /* Ensure that the user has committed the new SEQUENCE */
- g_return_val_if_fail (priv->need_sequence_inc == FALSE, NULL);
-
- /* We dup the string; libical owns that memory */
-
- str = icalcomponent_as_ical_string (priv->icalcomp);
-
- if (str)
- buf = g_strdup (str);
- else
- buf = NULL;
-
- return buf;
-}
-
-/**
- * cal_component_commit_sequence:
- * @comp:
- *
- * Increments the sequence number property in a calendar component object if it
- * needs it. This needs to be done when any of a number of properties listed in
- * RFC 2445 change values, such as the start and end dates of a component.
- *
- * This function must be called before calling cal_component_get_as_string() to
- * ensure that the component is fully consistent.
- **/
-void
-cal_component_commit_sequence (CalComponent *comp)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- if (!priv->need_sequence_inc)
- return;
-
- if (priv->sequence) {
- int seq;
-
- seq = icalproperty_get_sequence (priv->sequence);
- icalproperty_set_sequence (priv->sequence, seq + 1);
- } else {
- /* The component had no SEQUENCE property, so assume that the
- * default would have been zero. Since it needed incrementing
- * anyways, we use a value of 1 here.
- */
- priv->sequence = icalproperty_new_sequence (1);
- icalcomponent_add_property (priv->icalcomp, priv->sequence);
- }
-
- priv->need_sequence_inc = FALSE;
-}
-
-/**
- * cal_component_get_uid:
- * @comp: A calendar component object.
- * @uid: Return value for the UID string.
- *
- * Queries the unique identifier of a calendar component object.
- **/
-void
-cal_component_get_uid (CalComponent *comp, const char **uid)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (uid != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- /* This MUST exist, since we ensured that it did */
- g_assert (priv->uid != NULL);
-
- *uid = icalproperty_get_uid (priv->uid);
-}
-
-/**
- * cal_component_set_uid:
- * @comp: A calendar component object.
- * @uid: Unique identifier.
- *
- * Sets the unique identifier string of a calendar component object.
- **/
-void
-cal_component_set_uid (CalComponent *comp, const char *uid)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (uid != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- /* This MUST exist, since we ensured that it did */
- g_assert (priv->uid != NULL);
-
- icalproperty_set_uid (priv->uid, (char *) uid);
-}
-
-/**
- * cal_component_get_categories:
- * @comp: A calendar component object.
- * @categories:
- *
- *
- **/
-void
-cal_component_get_categories (CalComponent *comp, const char **categories)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (categories != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- if (priv->categories)
- *categories = icalproperty_get_categories (priv->categories);
- else
- *categories = NULL;
-}
-
-/**
- * cal_component_set_categories:
- * @comp: A calendar component object.
- * @categories:
- *
- *
- **/
-void
-cal_component_set_categories (CalComponent *comp, const char *categories)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- if (!categories || !(*categories)) {
- if (priv->categories) {
- icalcomponent_remove_property (priv->icalcomp, priv->categories);
- icalproperty_free (priv->categories);
- priv->url = NULL;
- }
-
- return;
- }
-
- if (priv->categories)
- icalproperty_set_categories (priv->categories, (char *) categories);
- else {
- priv->categories = icalproperty_new_categories ((char *) categories);
- icalcomponent_add_property (priv->icalcomp, priv->categories);
- }
-}
-
-
-/**
- * cal_component_get_categories_list:
- * @comp: A calendar component object.
- * @categ_list: Return value for the list of strings, where each string is a
- * category. This should be freed using cal_component_free_categories_list().
- *
- * Queries the list of categories of a calendar component object. Each element
- * in the returned categ_list is a string with the corresponding category.
- **/
-void
-cal_component_get_categories_list (CalComponent *comp, GSList **categ_list)
-{
- CalComponentPrivate *priv;
- const char *categories;
- const char *p;
- const char *cat_start;
- char *str;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (categ_list != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- if (!priv->categories) {
- *categ_list = NULL;
- return;
- }
-
- categories = icalproperty_get_categories (priv->categories);
- g_assert (categories != NULL);
-
- cat_start = categories;
- *categ_list = NULL;
-
- for (p = categories; *p; p++)
- if (*p == ',') {
- str = g_strndup (cat_start, p - cat_start);
- *categ_list = g_slist_prepend (*categ_list, str);
-
- cat_start = p + 1;
- }
-
- str = g_strndup (cat_start, p - cat_start);
- *categ_list = g_slist_prepend (*categ_list, str);
-
- *categ_list = g_slist_reverse (*categ_list);
-}
-
-/* Creates a comma-delimited string of categories */
-static char *
-stringify_categories (GSList *categ_list)
-{
- GString *s;
- GSList *l;
- char *str;
-
- s = g_string_new (NULL);
-
- for (l = categ_list; l; l = l->next) {
- g_string_append (s, l->data);
-
- if (l->next != NULL)
- g_string_append (s, ",");
- }
-
- str = s->str;
- g_string_free (s, FALSE);
-
- return str;
-}
-
-/**
- * cal_component_set_categories_list:
- * @comp: A calendar component object.
- * @categ_list: List of strings, one for each category.
- *
- * Sets the list of categories of a calendar component object.
- **/
-void
-cal_component_set_categories_list (CalComponent *comp, GSList *categ_list)
-{
- CalComponentPrivate *priv;
- char *categories_str;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- if (!categ_list) {
- if (priv->categories) {
- icalcomponent_remove_property (priv->icalcomp, priv->categories);
- icalproperty_free (priv->categories);
- }
-
- return;
- }
-
- /* Create a single string of categories */
- categories_str = stringify_categories (categ_list);
-
- /* Set the categories */
- priv->categories = icalproperty_new_categories (categories_str);
- g_free (categories_str);
-
- icalcomponent_add_property (priv->icalcomp, priv->categories);
-}
-
-/**
- * cal_component_get_classification:
- * @comp: A calendar component object.
- * @classif: Return value for the classification.
- *
- * Queries the classification of a calendar component object. If the
- * classification property is not set on this component, this function returns
- * #CAL_COMPONENT_CLASS_NONE.
- **/
-void
-cal_component_get_classification (CalComponent *comp, CalComponentClassification *classif)
-{
- CalComponentPrivate *priv;
- const char *class;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (classif != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- if (!priv->classification) {
- *classif = CAL_COMPONENT_CLASS_NONE;
- return;
- }
-
- class = icalproperty_get_class (priv->classification);
-
- if (strcasecmp (class, "PUBLIC") == 0)
- *classif = CAL_COMPONENT_CLASS_PUBLIC;
- else if (strcasecmp (class, "PRIVATE") == 0)
- *classif = CAL_COMPONENT_CLASS_PRIVATE;
- else if (strcasecmp (class, "CONFIDENTIAL") == 0)
- *classif = CAL_COMPONENT_CLASS_CONFIDENTIAL;
- else
- *classif = CAL_COMPONENT_CLASS_UNKNOWN;
-}
-
-/**
- * cal_component_set_classification:
- * @comp: A calendar component object.
- * @classif: Classification to use.
- *
- * Sets the classification property of a calendar component object. To unset
- * the property, specify CAL_COMPONENT_CLASS_NONE for @classif.
- **/
-void
-cal_component_set_classification (CalComponent *comp, CalComponentClassification classif)
-{
- CalComponentPrivate *priv;
- char *str;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (classif != CAL_COMPONENT_CLASS_UNKNOWN);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- if (classif == CAL_COMPONENT_CLASS_NONE) {
- if (priv->classification) {
- icalcomponent_remove_property (priv->icalcomp, priv->classification);
- icalproperty_free (priv->classification);
- priv->classification = NULL;
- }
-
- return;
- }
-
- switch (classif) {
- case CAL_COMPONENT_CLASS_PUBLIC:
- str = "PUBLIC";
- break;
-
- case CAL_COMPONENT_CLASS_PRIVATE:
- str = "PRIVATE";
- break;
-
- case CAL_COMPONENT_CLASS_CONFIDENTIAL:
- str = "CONFIDENTIAL";
- break;
-
- default:
- g_assert_not_reached ();
- str = NULL;
- }
-
- if (priv->classification)
- icalproperty_set_class (priv->classification, str);
- else {
- priv->classification = icalproperty_new_class (str);
- icalcomponent_add_property (priv->icalcomp, priv->classification);
- }
-}
-
-/* Gets a text list value */
-static void
-get_text_list (GSList *text_list,
- const char *(* get_prop_func) (icalproperty *prop),
- GSList **tl)
-{
- GSList *l;
-
- *tl = NULL;
-
- if (!text_list)
- return;
-
- for (l = text_list; l; l = l->next) {
- struct text *text;
- CalComponentText *t;
-
- text = l->data;
- g_assert (text->prop != NULL);
-
- t = g_new (CalComponentText, 1);
- t->value = (* get_prop_func) (text->prop);
-
- if (text->altrep_param)
- t->altrep = icalparameter_get_altrep (text->altrep_param);
- else
- t->altrep = NULL;
-
- *tl = g_slist_prepend (*tl, t);
- }
-
- *tl = g_slist_reverse (*tl);
-}
-
-/* Sets a text list value */
-static void
-set_text_list (CalComponent *comp,
- icalproperty *(* new_prop_func) (const char *value),
- GSList **text_list,
- GSList *tl)
-{
- CalComponentPrivate *priv;
- GSList *l;
-
- priv = comp->priv;
-
- /* Remove old texts */
-
- for (l = *text_list; l; l = l->next) {
- struct text *text;
-
- text = l->data;
- g_assert (text->prop != NULL);
-
- icalcomponent_remove_property (priv->icalcomp, text->prop);
- icalproperty_free (text->prop);
- g_free (text);
- }
-
- g_slist_free (*text_list);
- *text_list = NULL;
-
- /* Add in new texts */
-
- for (l = tl; l; l = l->next) {
- CalComponentText *t;
- struct text *text;
-
- t = l->data;
- g_return_if_fail (t->value != NULL);
-
- text = g_new (struct text, 1);
-
- text->prop = (* new_prop_func) ((char *) t->value);
- icalcomponent_add_property (priv->icalcomp, text->prop);
-
- if (t->altrep) {
- text->altrep_param = icalparameter_new_altrep ((char *) t->altrep);
- icalproperty_add_parameter (text->prop, text->altrep_param);
- } else
- text->altrep_param = NULL;
-
- *text_list = g_slist_prepend (*text_list, text);
- }
-
- *text_list = g_slist_reverse (*text_list);
-}
-
-/**
- * cal_component_get_comment_list:
- * @comp: A calendar component object.
- * @text_list: Return value for the comment properties and their parameters, as
- * a list of #CalComponentText structures. This should be freed using the
- * cal_component_free_text_list() function.
- *
- * Queries the comment of a calendar component object. The comment property can
- * appear several times inside a calendar component, and so a list of
- * #CalComponentText is returned.
- **/
-void
-cal_component_get_comment_list (CalComponent *comp, GSList **text_list)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (text_list != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- get_text_list (priv->comment_list, icalproperty_get_comment, text_list);
-}
-
-/**
- * cal_component_set_comment_list:
- * @comp: A calendar component object.
- * @text_list: List of #CalComponentText structures.
- *
- * Sets the comment of a calendar component object. The comment property can
- * appear several times inside a calendar component, and so a list of
- * #CalComponentText structures is used.
- **/
-void
-cal_component_set_comment_list (CalComponent *comp, GSList *text_list)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- set_text_list (comp, icalproperty_new_comment, &priv->comment_list, text_list);
-}
-
-/* Gets a struct icaltimetype value */
-static void
-get_icaltimetype (icalproperty *prop,
- struct icaltimetype (* get_prop_func) (icalproperty *prop),
- struct icaltimetype **t)
-{
- if (!prop) {
- *t = NULL;
- return;
- }
-
- *t = g_new (struct icaltimetype, 1);
- **t = (* get_prop_func) (prop);
-}
-
-/* Sets a struct icaltimetype value */
-static void
-set_icaltimetype (CalComponent *comp, icalproperty **prop,
- icalproperty *(* prop_new_func) (struct icaltimetype v),
- void (* prop_set_func) (icalproperty *prop, struct icaltimetype v),
- struct icaltimetype *t)
-{
- CalComponentPrivate *priv;
-
- priv = comp->priv;
-
- if (!t) {
- if (*prop) {
- icalcomponent_remove_property (priv->icalcomp, *prop);
- icalproperty_free (*prop);
- *prop = NULL;
- }
-
- return;
- }
-
- if (*prop)
- (* prop_set_func) (*prop, *t);
- else {
- *prop = (* prop_new_func) (*t);
- icalcomponent_add_property (priv->icalcomp, *prop);
- }
-}
-
-/**
- * cal_component_get_completed:
- * @comp: A calendar component object.
- * @t: Return value for the completion date. This should be freed using the
- * cal_component_free_icaltimetype() function.
- *
- * Queries the date at which a calendar compoment object was completed.
- **/
-void
-cal_component_get_completed (CalComponent *comp, struct icaltimetype **t)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (t != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- get_icaltimetype (priv->completed, icalproperty_get_completed, t);
-}
-
-/**
- * cal_component_set_completed:
- * @comp: A calendar component object.
- * @t: Value for the completion date.
- *
- * Sets the date at which a calendar component object was completed.
- **/
-void
-cal_component_set_completed (CalComponent *comp, struct icaltimetype *t)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- set_icaltimetype (comp, &priv->completed,
- icalproperty_new_completed,
- icalproperty_set_completed,
- t);
-}
-
-
-/**
- * cal_component_get_created:
- * @comp: A calendar component object.
- * @t: Return value for the creation date. This should be freed using the
- * cal_component_free_icaltimetype() function.
- *
- * Queries the date in which a calendar component object was created in the
- * calendar store.
- **/
-void
-cal_component_get_created (CalComponent *comp, struct icaltimetype **t)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (t != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- get_icaltimetype (priv->created, icalproperty_get_created, t);
-}
-
-/**
- * cal_component_set_created:
- * @comp: A calendar component object.
- * @t: Value for the creation date.
- *
- * Sets the date in which a calendar component object is created in the calendar
- * store. This should only be used inside a calendar store application, i.e.
- * not by calendar user agents.
- **/
-void
-cal_component_set_created (CalComponent *comp, struct icaltimetype *t)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- set_icaltimetype (comp, &priv->created,
- icalproperty_new_created,
- icalproperty_set_created,
- t);
-}
-
-/**
- * cal_component_get_description_list:
- * @comp: A calendar component object.
- * @text_list: Return value for the description properties and their parameters,
- * as a list of #CalComponentText structures. This should be freed using the
- * cal_component_free_text_list() function.
- *
- * Queries the description of a calendar component object. Journal components
- * may have more than one description, and as such this function returns a list
- * of #CalComponentText structures. All other types of components can have at
- * most one description.
- **/
-void
-cal_component_get_description_list (CalComponent *comp, GSList **text_list)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (text_list != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- get_text_list (priv->description_list, icalproperty_get_description, text_list);
-}
-
-/**
- * cal_component_set_description_list:
- * @comp: A calendar component object.
- * @text_list: List of #CalComponentSummary structures.
- *
- * Sets the description of a calendar component object. Journal components may
- * have more than one description, and as such this function takes in a list of
- * #CalComponentDescription structures. All other types of components can have
- * at most one description.
- **/
-void
-cal_component_set_description_list (CalComponent *comp, GSList *text_list)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- set_text_list (comp, icalproperty_new_description, &priv->description_list, text_list);
-}
-
-/* Gets a date/time and timezone pair */
-static void
-get_datetime (struct datetime *datetime,
- struct icaltimetype (* get_prop_func) (icalproperty *prop),
- CalComponentDateTime *dt)
-{
- if (datetime->prop) {
- dt->value = g_new (struct icaltimetype, 1);
- *dt->value = (* get_prop_func) (datetime->prop);
- } else
- dt->value = NULL;
-
- if (datetime->tzid_param)
- dt->tzid = icalparameter_get_tzid (datetime->tzid_param);
- else
- dt->tzid = NULL;
-}
-
-/* Sets a date/time and timezone pair */
-static void
-set_datetime (CalComponent *comp, struct datetime *datetime,
- icalproperty *(* prop_new_func) (struct icaltimetype v),
- void (* prop_set_func) (icalproperty * prop, struct icaltimetype v),
- CalComponentDateTime *dt)
-{
- CalComponentPrivate *priv;
-
- priv = comp->priv;
-
- if (!dt) {
- if (datetime->prop) {
- icalcomponent_remove_property (priv->icalcomp, datetime->prop);
- icalproperty_free (datetime->prop);
-
- datetime->prop = NULL;
- datetime->tzid_param = NULL;
- }
-
- return;
- }
-
- g_return_if_fail (dt->value != NULL);
-
- if (datetime->prop)
- (* prop_set_func) (datetime->prop, *dt->value);
- else {
- datetime->prop = (* prop_new_func) (*dt->value);
- icalcomponent_add_property (priv->icalcomp, datetime->prop);
- }
-
- if (dt->tzid) {
- g_assert (datetime->prop != NULL);
-
- if (datetime->tzid_param)
- icalparameter_set_tzid (datetime->tzid_param, (char *) dt->tzid);
- else {
- datetime->tzid_param = icalparameter_new_tzid ((char *) dt->tzid);
- icalproperty_add_parameter (datetime->prop, datetime->tzid_param);
- }
- } else if (datetime->tzid_param) {
- icalproperty_remove_parameter (datetime->prop, ICAL_TZID_PARAMETER);
- icalparameter_free (datetime->tzid_param);
- datetime->tzid_param = NULL;
- }
-}
-
-/**
- * cal_component_get_dtend:
- * @comp: A calendar component object.
- * @dt: Return value for the date/time end. This should be freed with the
- * cal_component_free_datetime() function.
- *
- * Queries the date/time end of a calendar component object.
- **/
-void
-cal_component_get_dtend (CalComponent *comp, CalComponentDateTime *dt)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (dt != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- get_datetime (&priv->dtend, icalproperty_get_dtend, dt);
-}
-
-/**
- * cal_component_set_dtend:
- * @comp: A calendar component object.
- * @dt: End date/time.
- *
- * Sets the date/time end property of a calendar component object.
- **/
-void
-cal_component_set_dtend (CalComponent *comp, CalComponentDateTime *dt)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- set_datetime (comp, &priv->dtend,
- icalproperty_new_dtend,
- icalproperty_set_dtend,
- dt);
-
- priv->need_sequence_inc = TRUE;
-}
-
-/**
- * cal_component_get_dtstamp:
- * @comp: A calendar component object.
- * @t: Return value for the date/timestamp.
- *
- * Queries the date/timestamp property of a calendar component object, which is
- * the last time at which the object was modified by a calendar user agent.
- **/
-void
-cal_component_get_dtstamp (CalComponent *comp, struct icaltimetype *t)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (t != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- /* This MUST exist, since we ensured that it did */
- g_assert (priv->dtstamp != NULL);
-
- *t = icalproperty_get_dtstamp (priv->dtstamp);
-}
-
-/**
- * cal_component_set_dtstamp:
- * @comp: A calendar component object.
- * @t: Date/timestamp value.
- *
- * Sets the date/timestamp of a calendar component object. This should be
- * called whenever a calendar user agent makes a change to a component's
- * properties.
- **/
-void
-cal_component_set_dtstamp (CalComponent *comp, struct icaltimetype *t)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (t != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- /* This MUST exist, since we ensured that it did */
- g_assert (priv->dtstamp != NULL);
-
- icalproperty_set_dtstamp (priv->dtstamp, *t);
-}
-
-/**
- * cal_component_get_dtstart:
- * @comp: A calendar component object.
- * @dt: Return value for the date/time start. This should be freed with the
- * cal_component_free_datetime() function.
- *
- * Queries the date/time start of a calendar component object.
- **/
-void
-cal_component_get_dtstart (CalComponent *comp, CalComponentDateTime *dt)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (dt != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- get_datetime (&priv->dtstart, icalproperty_get_dtstart, dt);
-}
-
-/**
- * cal_component_set_dtstart:
- * @comp: A calendar component object.
- * @dt: Start date/time.
- *
- * Sets the date/time start property of a calendar component object.
- **/
-void
-cal_component_set_dtstart (CalComponent *comp, CalComponentDateTime *dt)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- set_datetime (comp, &priv->dtstart,
- icalproperty_new_dtstart,
- icalproperty_set_dtstart,
- dt);
-
- priv->need_sequence_inc = TRUE;
-}
-
-/**
- * cal_component_get_due:
- * @comp: A calendar component object.
- * @dt: Return value for the due date/time. This should be freed with the
- * cal_component_free_datetime() function.
- *
- * Queries the due date/time of a calendar component object.
- **/
-void
-cal_component_get_due (CalComponent *comp, CalComponentDateTime *dt)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (dt != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- get_datetime (&priv->due, icalproperty_get_due, dt);
-}
-
-/**
- * cal_component_set_due:
- * @comp: A calendar component object.
- * @dt: End date/time.
- *
- * Sets the due date/time property of a calendar component object.
- **/
-void
-cal_component_set_due (CalComponent *comp, CalComponentDateTime *dt)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- set_datetime (comp, &priv->due,
- icalproperty_new_due,
- icalproperty_set_due,
- dt);
-
- priv->need_sequence_inc = TRUE;
-}
-
-/* Builds a list of CalComponentPeriod structures based on a list of icalproperties */
-static void
-get_period_list (GSList *period_list,
- struct icaldatetimeperiodtype (* get_prop_func) (icalproperty *prop),
- GSList **list)
-{
- GSList *l;
-
- *list = NULL;
-
- if (!period_list)
- return;
-
- for (l = period_list; l; l = l->next) {
- struct period *period;
- CalComponentPeriod *p;
- struct icaldatetimeperiodtype ip;
-
- period = l->data;
- g_assert (period->prop != NULL);
-
- p = g_new (CalComponentPeriod, 1);
-
- /* Get value parameter */
-
- if (period->value_param) {
- icalparameter_value value_type;
-
- value_type = icalparameter_get_value (period->value_param);
-
- if (value_type == ICAL_VALUE_DATE || value_type == ICAL_VALUE_DATETIME)
- p->type = CAL_COMPONENT_PERIOD_DATETIME;
- else if (value_type == ICAL_VALUE_DURATION)
- p->type = CAL_COMPONENT_PERIOD_DURATION;
- else {
- g_message ("get_period_list(): Unknown value for period %d; "
- "using DATETIME", value_type);
- p->type = CAL_COMPONENT_PERIOD_DATETIME;
- }
- } else
- p->type = CAL_COMPONENT_PERIOD_DATETIME;
-
- /* Get start and end/duration */
-
- ip = (* get_prop_func) (period->prop);
-
- p->start = ip.period.start;
-
- if (p->type == CAL_COMPONENT_PERIOD_DATETIME)
- p->u.end = ip.period.end;
- else if (p->type == CAL_COMPONENT_PERIOD_DURATION)
- p->u.duration = ip.period.duration;
- else
- g_assert_not_reached ();
-
- /* Put in list */
-
- *list = g_slist_prepend (*list, p);
- }
-
- *list = g_slist_reverse (*list);
-}
-
-/* Sets a period list value */
-static void
-set_period_list (CalComponent *comp,
- icalproperty *(* new_prop_func) (struct icaldatetimeperiodtype period),
- GSList **period_list,
- GSList *pl)
-{
- CalComponentPrivate *priv;
- GSList *l;
-
- priv = comp->priv;
-
- /* Remove old periods */
-
- for (l = *period_list; l; l = l->next) {
- struct period *period;
-
- period = l->data;
- g_assert (period->prop != NULL);
-
- icalcomponent_remove_property (priv->icalcomp, period->prop);
- icalproperty_free (period->prop);
- g_free (period);
- }
-
- g_slist_free (*period_list);
- *period_list = NULL;
-
- /* Add in new periods */
-
- for (l = pl; l; l = l->next) {
- CalComponentPeriod *p;
- struct period *period;
- struct icaldatetimeperiodtype ip;
- icalparameter_value value_type;
-
- g_assert (l->data != NULL);
- p = l->data;
-
- /* Create libical value */
-
- ip.period.start = p->start;
-
- if (p->type == CAL_COMPONENT_PERIOD_DATETIME) {
- value_type = ICAL_VALUE_DATETIME;
- ip.period.end = p->u.end;
- } else if (p->type == CAL_COMPONENT_PERIOD_DURATION) {
- value_type = ICAL_VALUE_DURATION;
- ip.period.duration = p->u.duration;
- } else {
- g_assert_not_reached ();
- return;
- }
-
- /* Create property */
-
- period = g_new (struct period, 1);
-
- period->prop = (* new_prop_func) (ip);
- period->value_param = icalparameter_new_value (value_type);
- icalproperty_add_parameter (period->prop, period->value_param);
-
- /* Add to list */
-
- *period_list = g_slist_prepend (*period_list, period);
- }
-
- *period_list = g_slist_reverse (*period_list);
-}
-
-/**
- * cal_component_get_exdate_list:
- * @comp: A calendar component object.
- * @exdate_list: Return value for the list of exception dates, as a list of
- * #CalComponentDateTime structures. This should be freed using the
- * cal_component_free_exdate_list() function.
- *
- * Queries the list of exception date properties in a calendar component object.
- **/
-void
-cal_component_get_exdate_list (CalComponent *comp, GSList **exdate_list)
-{
- CalComponentPrivate *priv;
- GSList *l;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (exdate_list != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- *exdate_list = NULL;
-
- for (l = priv->exdate_list; l; l = l->next) {
- struct datetime *dt;
- CalComponentDateTime *cdt;
-
- dt = l->data;
-
- cdt = g_new (CalComponentDateTime, 1);
- cdt->value = g_new (struct icaltimetype, 1);
-
- *cdt->value = icalproperty_get_exdate (dt->prop);
-
- if (dt->tzid_param)
- cdt->tzid = icalparameter_get_tzid (dt->tzid_param);
- else
- cdt->tzid = NULL;
-
- *exdate_list = g_slist_prepend (*exdate_list, cdt);
- }
-
- *exdate_list = g_slist_reverse (*exdate_list);
-}
-
-/**
- * cal_component_set_exdate_list:
- * @comp: A calendar component object.
- * @exdate_list: List of #CalComponentDateTime structures.
- *
- * Sets the list of exception dates in a calendar component object.
- **/
-void
-cal_component_set_exdate_list (CalComponent *comp, GSList *exdate_list)
-{
- CalComponentPrivate *priv;
- GSList *l;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- /* Remove old exception dates */
-
- for (l = priv->exdate_list; l; l = l->next) {
- struct datetime *dt;
-
- dt = l->data;
-
- icalcomponent_remove_property (priv->icalcomp, dt->prop);
- icalproperty_free (dt->prop);
- g_free (dt);
- }
-
- g_slist_free (priv->exdate_list);
- priv->exdate_list = NULL;
-
- /* Add in new exception dates */
-
- for (l = exdate_list; l; l = l->next) {
- CalComponentDateTime *cdt;
- struct datetime *dt;
-
- g_assert (l->data != NULL);
- cdt = l->data;
-
- g_assert (cdt->value != NULL);
-
- dt = g_new (struct datetime, 1);
- dt->prop = icalproperty_new_exdate (*cdt->value);
-
- if (cdt->tzid) {
- dt->tzid_param = icalparameter_new_tzid ((char *) cdt->tzid);
- icalproperty_add_parameter (dt->prop, dt->tzid_param);
- } else
- dt->tzid_param = NULL;
-
- icalcomponent_add_property (priv->icalcomp, dt->prop);
- priv->exdate_list = g_slist_prepend (priv->exdate_list, dt);
- }
-
- priv->exdate_list = g_slist_reverse (priv->exdate_list);
-
- priv->need_sequence_inc = TRUE;
-}
-
-/**
- * cal_component_has_exdates:
- * @comp: A calendar component object.
- *
- * Queries whether a calendar component object has any exception dates defined
- * for it.
- *
- * Return value: TRUE if the component has exception dates, FALSE otherwise.
- **/
-gboolean
-cal_component_has_exdates (CalComponent *comp)
-{
- CalComponentPrivate *priv;
-
- g_return_val_if_fail (comp != NULL, FALSE);
- g_return_val_if_fail (IS_CAL_COMPONENT (comp), FALSE);
-
- priv = comp->priv;
- g_return_val_if_fail (priv->icalcomp != NULL, FALSE);
-
- return (priv->exdate_list != NULL);
-}
-
-/* Gets a list of recurrence rules */
-static void
-get_recur_list (GSList *recur_list,
- struct icalrecurrencetype (* get_prop_func) (icalproperty *prop),
- GSList **list)
-{
- GSList *l;
-
- *list = NULL;
-
- for (l = recur_list; l; l = l->next) {
- icalproperty *prop;
- struct icalrecurrencetype *r;
-
- prop = l->data;
-
- r = g_new (struct icalrecurrencetype, 1);
- *r = (* get_prop_func) (prop);
-
- *list = g_slist_prepend (*list, r);
- }
-
- *list = g_slist_reverse (*list);
-}
-
-/* Sets a list of recurrence rules */
-static void
-set_recur_list (CalComponent *comp,
- icalproperty *(* new_prop_func) (struct icalrecurrencetype recur),
- GSList **recur_list,
- GSList *rl)
-{
- CalComponentPrivate *priv;
- GSList *l;
-
- priv = comp->priv;
-
- /* Remove old recurrences */
-
- for (l = *recur_list; l; l = l->next) {
- icalproperty *prop;
-
- prop = l->data;
- icalcomponent_remove_property (priv->icalcomp, prop);
- icalproperty_free (prop);
- }
-
- g_slist_free (*recur_list);
- *recur_list = NULL;
-
- /* Add in new recurrences */
-
- for (l = rl; l; l = l->next) {
- icalproperty *prop;
- struct icalrecurrencetype *recur;
-
- g_assert (l->data != NULL);
- recur = l->data;
-
- prop = (* new_prop_func) (*recur);
- icalcomponent_add_property (priv->icalcomp, prop);
-
- *recur_list = g_slist_prepend (*recur_list, prop);
- }
-
- *recur_list = g_slist_reverse (*recur_list);
-}
-
-/**
- * cal_component_get_exrule_list:
- * @comp: A calendar component object.
- * @recur_list: List of exception rules as struct #icalrecurrencetype
- * structures. This should be freed using the cal_component_free_recur_list()
- * function.
- *
- * Queries the list of exception rule properties of a calendar component
- * object.
- **/
-void
-cal_component_get_exrule_list (CalComponent *comp, GSList **recur_list)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (recur_list != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- get_recur_list (priv->exrule_list, icalproperty_get_exrule, recur_list);
-}
-
-/**
- * cal_component_get_exrule_property_list:
- * @comp: A calendar component object.
- * @recur_list: Returns a list of exception rule properties.
- *
- * Queries the list of exception rule properties of a calendar component object.
- **/
-void
-cal_component_get_exrule_property_list (CalComponent *comp, GSList **recur_list)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (recur_list != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- *recur_list = priv->exrule_list;
-}
-
-/**
- * cal_component_set_exrule_list:
- * @comp: A calendar component object.
- * @recur_list: List of struct #icalrecurrencetype structures.
- *
- * Sets the list of exception rules in a calendar component object.
- **/
-void
-cal_component_set_exrule_list (CalComponent *comp, GSList *recur_list)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- set_recur_list (comp, icalproperty_new_exrule, &priv->exrule_list, recur_list);
-
- priv->need_sequence_inc = TRUE;
-}
-
-/**
- * cal_component_has_exrules:
- * @comp: A calendar component object.
- *
- * Queries whether a calendar component object has any exception rules defined
- * for it.
- *
- * Return value: TRUE if the component has exception rules, FALSE otherwise.
- **/
-gboolean
-cal_component_has_exrules (CalComponent *comp)
-{
- CalComponentPrivate *priv;
-
- g_return_val_if_fail (comp != NULL, FALSE);
- g_return_val_if_fail (IS_CAL_COMPONENT (comp), FALSE);
-
- priv = comp->priv;
- g_return_val_if_fail (priv->icalcomp != NULL, FALSE);
-
- return (priv->exrule_list != NULL);
-}
-
-/**
- * cal_component_has_exceptions:
- * @comp: A calendar component object
- *
- * Queries whether a calendar component object has any exception dates
- * or exception rules.
- *
- * Return value: TRUE if the component has exceptions, FALSE otherwise.
- **/
-gboolean
-cal_component_has_exceptions (CalComponent *comp)
-{
- return cal_component_has_exdates (comp) || cal_component_has_exrules (comp);
-}
-
-/**
- * cal_component_get_geo:
- * @comp: A calendar component object.
- * @geo: Return value for the geographic position property. This should be
- * freed using the cal_component_free_geo() function.
- *
- * Sets the geographic position property of a calendar component object.
- **/
-void
-cal_component_get_geo (CalComponent *comp, struct icalgeotype **geo)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (geo != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- if (priv->geo) {
- *geo = g_new (struct icalgeotype, 1);
- **geo = icalproperty_get_geo (priv->geo);
- } else
- *geo = NULL;
-}
-
-/**
- * cal_component_set_geo:
- * @comp: A calendar component object.
- * @geo: Value for the geographic position property.
- *
- * Sets the geographic position property on a calendar component object.
- **/
-void
-cal_component_set_geo (CalComponent *comp, struct icalgeotype *geo)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- if (!geo) {
- if (priv->geo) {
- icalcomponent_remove_property (priv->icalcomp, priv->geo);
- icalproperty_free (priv->geo);
- priv->geo = NULL;
- }
-
- return;
- }
-
- if (priv->geo)
- icalproperty_set_geo (priv->geo, *geo);
- else {
- priv->geo = icalproperty_new_geo (*geo);
- icalcomponent_add_property (priv->icalcomp, priv->geo);
- }
-}
-
-/**
- * cal_component_get_last_modified:
- * @comp: A calendar component object.
- * @t: Return value for the last modified time value.
- *
- * Queries the time at which a calendar component object was last modified in
- * the calendar store.
- **/
-void
-cal_component_get_last_modified (CalComponent *comp, struct icaltimetype **t)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (t != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- get_icaltimetype (priv->last_modified, icalproperty_get_lastmodified, t);
-}
-
-/**
- * cal_component_set_last_modified:
- * @comp: A calendar component object.
- * @t: Value for the last time modified.
- *
- * Sets the time at which a calendar component object was last stored in the
- * calendar store. This should not be called by plain calendar user agents.
- **/
-void
-cal_component_set_last_modified (CalComponent *comp, struct icaltimetype *t)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- set_icaltimetype (comp, &priv->last_modified,
- icalproperty_new_lastmodified,
- icalproperty_set_lastmodified,
- t);
-}
-
-/**
- * cal_component_get_percent:
- * @comp: A calendar component object.
- * @percent: Return value for the percent-complete property. This should be
- * freed using the cal_component_free_percent() function.
- *
- * Queries the percent-complete property of a calendar component object.
- **/
-void
-cal_component_get_percent (CalComponent *comp, int **percent)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (percent != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- if (priv->percent) {
- *percent = g_new (int, 1);
- **percent = icalproperty_get_percentcomplete (priv->percent);
- } else
- *percent = NULL;
-}
-
-/**
- * cal_component_set_percent:
- * @comp: A calendar component object.
- * @percent: Value for the percent-complete property.
- *
- * Sets the percent-complete property of a calendar component object.
- **/
-void
-cal_component_set_percent (CalComponent *comp, int *percent)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- if (!percent) {
- if (priv->percent) {
- icalcomponent_remove_property (priv->icalcomp, priv->percent);
- icalproperty_free (priv->percent);
- priv->percent = NULL;
- }
-
- return;
- }
-
- g_return_if_fail (*percent >= 0 && *percent <= 100);
-
- if (priv->percent)
- icalproperty_set_percentcomplete (priv->percent, *percent);
- else {
- priv->percent = icalproperty_new_percentcomplete (*percent);
- icalcomponent_add_property (priv->icalcomp, priv->percent);
- }
-}
-
-/**
- * cal_component_get_priority:
- * @comp: A calendar component object.
- * @priority: Return value for the priority property. This should be freed using
- * the cal_component_free_priority() function.
- *
- * Queries the priority property of a calendar component object.
- **/
-void
-cal_component_get_priority (CalComponent *comp, int **priority)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (priority != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- if (priv->priority) {
- *priority = g_new (int, 1);
- **priority = icalproperty_get_priority (priv->priority);
- } else
- *priority = NULL;
-}
-
-/**
- * cal_component_set_priority:
- * @comp: A calendar component object.
- * @priority: Value for the priority property.
- *
- * Sets the priority property of a calendar component object.
- **/
-void
-cal_component_set_priority (CalComponent *comp, int *priority)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- if (!priority) {
- if (priv->priority) {
- icalcomponent_remove_property (priv->icalcomp, priv->priority);
- icalproperty_free (priv->priority);
- priv->priority = NULL;
- }
-
- return;
- }
-
- g_return_if_fail (*priority >= 0 && *priority <= 9);
-
- if (priv->priority)
- icalproperty_set_priority (priv->priority, *priority);
- else {
- priv->priority = icalproperty_new_priority (*priority);
- icalcomponent_add_property (priv->icalcomp, priv->priority);
- }
-}
-
-/**
- * cal_component_get_rdate_list:
- * @comp: A calendar component object.
- * @period_list: Return value for the list of recurrence dates, as a list of
- * #CalComponentPeriod structures. This should be freed using the
- * cal_component_free_period_list() function.
- *
- * Queries the list of recurrence date properties in a calendar component
- * object.
- **/
-void
-cal_component_get_rdate_list (CalComponent *comp, GSList **period_list)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (period_list != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- get_period_list (priv->rdate_list, icalproperty_get_rdate, period_list);
-}
-
-/**
- * cal_component_set_rdate_list:
- * @comp: A calendar component object.
- * @period_list: List of #CalComponentPeriod structures.
- *
- * Sets the list of recurrence dates in a calendar component object.
- **/
-void
-cal_component_set_rdate_list (CalComponent *comp, GSList *period_list)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- set_period_list (comp, icalproperty_new_rdate, &priv->rdate_list, period_list);
-
- priv->need_sequence_inc = TRUE;
-}
-
-/**
- * cal_component_has_rdates:
- * @comp: A calendar component object.
- *
- * Queries whether a calendar component object has any recurrence dates defined
- * for it.
- *
- * Return value: TRUE if the component has recurrence dates, FALSE otherwise.
- **/
-gboolean
-cal_component_has_rdates (CalComponent *comp)
-{
- CalComponentPrivate *priv;
-
- g_return_val_if_fail (comp != NULL, FALSE);
- g_return_val_if_fail (IS_CAL_COMPONENT (comp), FALSE);
-
- priv = comp->priv;
- g_return_val_if_fail (priv->icalcomp != NULL, FALSE);
-
- return (priv->rdate_list != NULL);
-}
-
-/**
- * cal_component_get_rrule_list:
- * @comp: A calendar component object.
- * @recur_list: List of recurrence rules as struct #icalrecurrencetype
- * structures. This should be freed using the cal_component_free_recur_list()
- * function.
- *
- * Queries the list of recurrence rule properties of a calendar component
- * object.
- **/
-void
-cal_component_get_rrule_list (CalComponent *comp, GSList **recur_list)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (recur_list != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- get_recur_list (priv->rrule_list, icalproperty_get_rrule, recur_list);
-}
-
-/**
- * cal_component_get_rrule_property_list:
- * @comp: A calendar component object.
- * @recur_list: Returns a list of recurrence rule properties.
- *
- * Queries a list of recurrence rule properties of a calendar component object.
- **/
-void
-cal_component_get_rrule_property_list (CalComponent *comp, GSList **recur_list)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (recur_list != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- *recur_list = priv->rrule_list;
-}
-
-/**
- * cal_component_set_rrule_list:
- * @comp: A calendar component object.
- * @recur_list: List of struct #icalrecurrencetype structures.
- *
- * Sets the list of recurrence rules in a calendar component object.
- **/
-void
-cal_component_set_rrule_list (CalComponent *comp, GSList *recur_list)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- set_recur_list (comp, icalproperty_new_rrule, &priv->rrule_list, recur_list);
-
- priv->need_sequence_inc = TRUE;
-}
-
-/**
- * cal_component_has_rrules:
- * @comp: A calendar component object.
- *
- * Queries whether a calendar component object has any recurrence rules defined
- * for it.
- *
- * Return value: TRUE if the component has recurrence rules, FALSE otherwise.
- **/
-gboolean
-cal_component_has_rrules (CalComponent *comp)
-{
- CalComponentPrivate *priv;
-
- g_return_val_if_fail (comp != NULL, FALSE);
- g_return_val_if_fail (IS_CAL_COMPONENT (comp), FALSE);
-
- priv = comp->priv;
- g_return_val_if_fail (priv->icalcomp != NULL, FALSE);
-
- return (priv->rrule_list != NULL);
-}
-
-/**
- * cal_component_has_recurrences:
- * @comp: A calendar component object
- *
- * Queries whether a calendar component object has any recurrence dates or
- * recurrence rules.
- *
- * Return value: TRUE if the component has recurrences, FALSE otherwise.
- **/
-gboolean
-cal_component_has_recurrences (CalComponent *comp)
-{
- return cal_component_has_rdates (comp) || cal_component_has_rrules (comp);
-}
-
-/**
- * cal_component_get_sequence:
- * @comp: A calendar component object.
- * @sequence: Return value for the sequence number. This should be freed using
- * cal_component_free_sequence().
- *
- * Queries the sequence number of a calendar component object.
- **/
-void
-cal_component_get_sequence (CalComponent *comp, int **sequence)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (sequence != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- if (!priv->sequence) {
- *sequence = NULL;
- return;
- }
-
- *sequence = g_new (int, 1);
- **sequence = icalproperty_get_sequence (priv->sequence);
-}
-
-/**
- * cal_component_set_sequence:
- * @comp: A calendar component object.
- * @sequence: Sequence number value.
- *
- * Sets the sequence number of a calendar component object. Normally this
- * function should not be called, since the sequence number is incremented
- * automatically at the proper times.
- **/
-void
-cal_component_set_sequence (CalComponent *comp, int *sequence)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- priv->need_sequence_inc = FALSE;
-
- if (!sequence) {
- if (priv->sequence) {
- icalcomponent_remove_property (priv->icalcomp, priv->sequence);
- icalproperty_free (priv->sequence);
- priv->sequence = NULL;
- }
-
- return;
- }
-
- if (priv->sequence)
- icalproperty_set_sequence (priv->sequence, *sequence);
- else {
- priv->sequence = icalproperty_new_sequence (*sequence);
- icalcomponent_add_property (priv->icalcomp, priv->sequence);
- }
-}
-
-/**
- * cal_component_get_status:
- * @comp: A calendar component object.
- * @status: Return value for the status value. It is set to #ICAL_STATUS_NONE
- * if the component has no status property.
- *
- * Queries the status property of a calendar component object.
- **/
-void
-cal_component_get_status (CalComponent *comp, icalproperty_status *status)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (status != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- if (!priv->status) {
- *status = ICAL_STATUS_NONE;
- return;
- }
-
- *status = icalproperty_get_status (priv->status);
-}
-
-/**
- * cal_component_set_status:
- * @comp: A calendar component object.
- * @status: Status value. You should use #ICAL_STATUS_NONE if you want to unset
- * this property.
- *
- * Sets the status property of a calendar component object.
- **/
-void
-cal_component_set_status (CalComponent *comp, icalproperty_status status)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- priv->need_sequence_inc = TRUE;
-
- if (status == ICAL_STATUS_NONE) {
- if (priv->status) {
- icalcomponent_remove_property (priv->icalcomp, priv->status);
- icalproperty_free (priv->status);
- priv->status = NULL;
- }
-
- return;
- }
-
- if (priv->status) {
- icalproperty_set_status (priv->status, status);
- } else {
- priv->status = icalproperty_new_status (status);
- icalcomponent_add_property (priv->icalcomp, priv->status);
- }
-}
-
-/**
- * cal_component_get_summary:
- * @comp: A calendar component object.
- * @summary: Return value for the summary property and its parameters.
- *
- * Queries the summary of a calendar component object.
- **/
-void
-cal_component_get_summary (CalComponent *comp, CalComponentText *summary)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (summary != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- if (priv->summary.prop)
- summary->value = icalproperty_get_summary (priv->summary.prop);
- else
- summary->value = NULL;
-
- if (priv->summary.altrep_param)
- summary->altrep = icalparameter_get_altrep (priv->summary.altrep_param);
- else
- summary->altrep = NULL;
-}
-
-/**
- * cal_component_set_summary:
- * @comp: A calendar component object.
- * @summary: Summary property and its parameters.
- *
- * Sets the summary of a calendar component object.
- **/
-void
-cal_component_set_summary (CalComponent *comp, CalComponentText *summary)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- if (!summary) {
- if (priv->summary.prop) {
- icalcomponent_remove_property (priv->icalcomp, priv->summary.prop);
- icalproperty_free (priv->summary.prop);
-
- priv->summary.prop = NULL;
- priv->summary.altrep_param = NULL;
- }
-
- return;
- }
-
- g_return_if_fail (summary->value != NULL);
-
- if (priv->summary.prop)
- icalproperty_set_summary (priv->summary.prop, (char *) summary->value);
- else {
- priv->summary.prop = icalproperty_new_summary ((char *) summary->value);
- icalcomponent_add_property (priv->icalcomp, priv->summary.prop);
- }
-
- if (summary->altrep) {
- g_assert (priv->summary.prop != NULL);
-
- if (priv->summary.altrep_param)
- icalparameter_set_altrep (priv->summary.altrep_param,
- (char *) summary->altrep);
- else {
- priv->summary.altrep_param = icalparameter_new_altrep (
- (char *) summary->altrep);
- icalproperty_add_parameter (priv->summary.prop,
- priv->summary.altrep_param);
- }
- } else if (priv->summary.altrep_param) {
- icalproperty_remove_parameter (priv->summary.prop, ICAL_ALTREP_PARAMETER);
- icalparameter_free (priv->summary.altrep_param);
- priv->summary.altrep_param = NULL;
- }
-}
-
-/**
- * cal_component_get_transparency:
- * @comp: A calendar component object.
- * @transp: Return value for the time transparency.
- *
- * Queries the time transparency of a calendar component object.
- **/
-void
-cal_component_get_transparency (CalComponent *comp, CalComponentTransparency *transp)
-{
- CalComponentPrivate *priv;
- const char *val;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (transp != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- if (!priv->transparency) {
- *transp = CAL_COMPONENT_TRANSP_NONE;
- return;
- }
-
- val = icalproperty_get_transp (priv->transparency);
-
- if (strcasecmp (val, "TRANSPARENT") == 0)
- *transp = CAL_COMPONENT_TRANSP_TRANSPARENT;
- else if (strcasecmp (val, "OPAQUE") == 0)
- *transp = CAL_COMPONENT_TRANSP_OPAQUE;
- else
- *transp = CAL_COMPONENT_TRANSP_UNKNOWN;
-}
-
-/**
- * cal_component_set_transparency:
- * @comp: A calendar component object.
- * @transp: Time transparency value.
- *
- * Sets the time transparency of a calendar component object.
- **/
-void
-cal_component_set_transparency (CalComponent *comp, CalComponentTransparency transp)
-{
- CalComponentPrivate *priv;
- char *str;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (transp != CAL_COMPONENT_TRANSP_UNKNOWN);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
-
- if (transp == CAL_COMPONENT_TRANSP_NONE) {
- if (priv->transparency) {
- icalcomponent_remove_property (priv->icalcomp, priv->transparency);
- icalproperty_free (priv->transparency);
- priv->transparency = NULL;
- }
-
- return;
- }
-
- switch (transp) {
- case CAL_COMPONENT_TRANSP_TRANSPARENT:
- str = "TRANSPARENT";
- break;
-
- case CAL_COMPONENT_TRANSP_OPAQUE:
- str = "OPAQUE";
- break;
-
- default:
- g_assert_not_reached ();
- str = NULL;
- }
-
- if (priv->transparency)
- icalproperty_set_transp (priv->transparency, str);
- else {
- priv->transparency = icalproperty_new_transp (str);
- icalcomponent_add_property (priv->icalcomp, priv->transparency);
- }
-}
-
-/**
- * cal_component_get_url:
- * @comp: A calendar component object.
- * @url: Return value for the URL.
- *
- * Queries the uniform resource locator property of a calendar component object.
- **/
-void
-cal_component_get_url (CalComponent *comp, const char **url)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (url != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- if (priv->url)
- *url = icalproperty_get_url (priv->url);
- else
- *url = NULL;
-}
-
-/**
- * cal_component_set_url:
- * @comp: A calendar component object.
- * @url: URL value.
- *
- * Sets the uniform resource locator property of a calendar component object.
- **/
-void
-cal_component_set_url (CalComponent *comp, const char *url)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- if (!url || !(*url)) {
- if (priv->url) {
- icalcomponent_remove_property (priv->icalcomp, priv->url);
- icalproperty_free (priv->url);
- priv->url = NULL;
- }
-
- return;
- }
-
- if (priv->url)
- icalproperty_set_url (priv->url, (char *) url);
- else {
- priv->url = icalproperty_new_url ((char *) url);
- icalcomponent_add_property (priv->icalcomp, priv->url);
- }
-}
-
-
-
-/**
- * cal_component_free_categories_list:
- * @categ_list: List of category strings.
- *
- * Frees a list of category strings.
- **/
-void
-cal_component_free_categories_list (GSList *categ_list)
-{
- GSList *l;
-
- for (l = categ_list; l; l = l->next)
- g_free (l->data);
-
- g_slist_free (categ_list);
-}
-
-/**
- * cal_component_free_datetime:
- * @dt: A date/time structure.
- *
- * Frees a date/time structure.
- **/
-void
-cal_component_free_datetime (CalComponentDateTime *dt)
-{
- g_return_if_fail (dt != NULL);
-
- if (dt->value)
- g_free (dt->value);
-}
-
-/**
- * cal_component_free_exdate_list:
- * @exdate_list: List of #CalComponentDateTime structures.
- *
- * Frees a list of #CalComponentDateTime structures as returned by the
- * cal_component_get_exdate_list() function.
- **/
-void
-cal_component_free_exdate_list (GSList *exdate_list)
-{
- GSList *l;
-
- for (l = exdate_list; l; l = l->next) {
- CalComponentDateTime *cdt;
-
- g_assert (l->data != NULL);
- cdt = l->data;
-
- g_assert (cdt->value != NULL);
- g_free (cdt->value);
-
- g_free (cdt);
- }
-
- g_slist_free (exdate_list);
-}
-
-/**
- * cal_component_free_geo:
- * @geo: An #icalgeotype structure.
- *
- * Frees a struct #icalgeotype structure as returned by the calendar component
- * functions.
- **/
-void
-cal_component_free_geo (struct icalgeotype *geo)
-{
- g_return_if_fail (geo != NULL);
-
- g_free (geo);
-}
-
-/**
- * cal_component_free_icaltimetype:
- * @t: An #icaltimetype structure.
- *
- * Frees a struct #icaltimetype value as returned by the calendar component
- * functions.
- **/
-void
-cal_component_free_icaltimetype (struct icaltimetype *t)
-{
- g_return_if_fail (t != NULL);
-
- g_free (t);
-}
-
-/**
- * cal_component_free_percent:
- * @percent: Percent value.
- *
- * Frees a percent value as returned by the cal_component_get_percent()
- * function.
- **/
-void
-cal_component_free_percent (int *percent)
-{
- g_return_if_fail (percent != NULL);
-
- g_free (percent);
-}
-
-/**
- * cal_component_free_priority:
- * @priority: Priority value.
- *
- * Frees a priority value as returned by the cal_component_get_priority()
- * function.
- **/
-void
-cal_component_free_priority (int *priority)
-{
- g_return_if_fail (priority != NULL);
-
- g_free (priority);
-}
-
-/**
- * cal_component_free_period_list:
- * @period_list: List of #CalComponentPeriod structures.
- *
- * Frees a list of #CalComponentPeriod structures.
- **/
-void
-cal_component_free_period_list (GSList *period_list)
-{
- GSList *l;
-
- for (l = period_list; l; l = l->next) {
- CalComponentPeriod *period;
-
- g_assert (l->data != NULL);
-
- period = l->data;
- g_free (period);
- }
-
- g_slist_free (period_list);
-}
-
-/**
- * cal_component_free_recur_list:
- * @recur_list: List of struct #icalrecurrencetype structures.
- *
- * Frees a list of struct #icalrecurrencetype structures.
- **/
-void
-cal_component_free_recur_list (GSList *recur_list)
-{
- GSList *l;
-
- for (l = recur_list; l; l = l->next) {
- struct icalrecurrencetype *r;
-
- g_assert (l->data != NULL);
- r = l->data;
-
- g_free (r);
- }
-
- g_slist_free (recur_list);
-}
-
-/**
- * cal_component_free_sequence:
- * @sequence: Sequence number value.
- *
- * Frees a sequence number value.
- **/
-void
-cal_component_free_sequence (int *sequence)
-{
- g_return_if_fail (sequence != NULL);
-
- g_free (sequence);
-}
-
-/**
- * cal_component_free_text_list:
- * @text_list: List of #CalComponentText structures.
- *
- * Frees a list of #CalComponentText structures. This function should only be
- * used to free lists of text values as returned by the other getter functions
- * of #CalComponent.
- **/
-void
-cal_component_free_text_list (GSList *text_list)
-{
- GSList *l;
-
- for (l = text_list; l; l = l->next) {
- CalComponentText *text;
-
- g_assert (l->data != NULL);
-
- text = l->data;
- g_return_if_fail (text != NULL);
- g_free (text);
- }
-
- g_slist_free (text_list);
-}
-
-
-
-/**
- * cal_component_has_alarms:
- * @comp: A calendar component object.
- *
- * Checks whether the component has any alarms.
- *
- * Return value: TRUE if the component has any alarms.
- **/
-gboolean
-cal_component_has_alarms (CalComponent *comp)
-{
- CalComponentPrivate *priv;
-
- g_return_val_if_fail (comp != NULL, FALSE);
- g_return_val_if_fail (IS_CAL_COMPONENT (comp), FALSE);
-
- priv = comp->priv;
- g_return_val_if_fail (priv->icalcomp != NULL, FALSE);
-
- return g_hash_table_size (priv->alarm_uid_hash) != 0;
-}
-
-/**
- * cal_component_add_alarm:
- * @comp: A calendar component.
- * @alarm: An alarm.
- *
- * Adds an alarm subcomponent to a calendar component. You should have created
- * the @alarm by using cal_component_alarm_new(); it is invalid to use a
- * #CalComponentAlarm structure that came from cal_component_get_alarm(). After
- * adding the alarm, the @alarm structure is no longer valid because the
- * internal structures may change and you should get rid of it by using
- * cal_component_alarm_free().
- **/
-void
-cal_component_add_alarm (CalComponent *comp, CalComponentAlarm *alarm)
-{
- CalComponentPrivate *priv;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (alarm != NULL);
-
- priv = comp->priv;
-
- add_alarm (comp, alarm->icalcomp, icalproperty_get_x (alarm->uid));
- icalcomponent_add_component (priv->icalcomp, alarm->icalcomp);
-}
-
-/**
- * cal_component_remove_alarm:
- * @comp: A calendar component.
- * @auid: UID of the alarm to remove.
- *
- * Removes an alarm subcomponent from a calendar component. If the alarm that
- * corresponds to the specified @auid had been fetched with
- * cal_component_get_alarm(), then those alarm structures will be invalid; you
- * should get rid of them with cal_component_alarm_free() before using this
- * function.
- **/
-void
-cal_component_remove_alarm (CalComponent *comp, const char *auid)
-{
- CalComponentPrivate *priv;
- icalcomponent *alarm;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
- g_return_if_fail (auid != NULL);
-
- priv = comp->priv;
- g_return_if_fail (priv->icalcomp != NULL);
-
- alarm = g_hash_table_lookup (priv->alarm_uid_hash, auid);
- if (!alarm)
- return;
-
- g_hash_table_remove (priv->alarm_uid_hash, auid);
- icalcomponent_remove_component (priv->icalcomp, alarm);
- icalcomponent_free (alarm);
-}
-
-
-/* Scans an icalproperty from a calendar component and adds its mapping to our
- * own alarm structure.
- */
-static void
-scan_alarm_property (CalComponentAlarm *alarm, icalproperty *prop)
-{
- icalproperty_kind kind;
- const char *xname;
-
- kind = icalproperty_isa (prop);
-
- switch (kind) {
- case ICAL_ACTION_PROPERTY:
- alarm->action = prop;
- break;
-
- case ICAL_TRIGGER_PROPERTY:
- alarm->trigger = prop;
- break;
-
- case ICAL_X_PROPERTY:
- xname = icalproperty_get_x_name (prop);
- g_assert (xname != NULL);
-
- if (strcmp (xname, EVOLUTION_ALARM_UID_PROPERTY) == 0)
- alarm->uid = prop;
-
- break;
-
- default:
- break;
- }
-}
-
-/* Creates a CalComponentAlarm from a libical alarm subcomponent */
-static CalComponentAlarm *
-make_alarm (icalcomponent *subcomp)
-{
- CalComponentAlarm *alarm;
- icalproperty *prop;
-
- alarm = g_new (CalComponentAlarm, 1);
-
- alarm->icalcomp = subcomp;
- alarm->uid = NULL;
-
- for (prop = icalcomponent_get_first_property (subcomp, ICAL_ANY_PROPERTY);
- prop;
- prop = icalcomponent_get_next_property (subcomp, ICAL_ANY_PROPERTY))
- scan_alarm_property (alarm, prop);
-
- g_assert (alarm->uid != NULL);
-
- return alarm;
-}
-
-/* Used from g_hash_table_foreach(); adds an alarm UID to a list */
-static void
-add_alarm_uid (gpointer key, gpointer value, gpointer data)
-{
- const char *auid;
- GList **l;
-
- auid = key;
- l = data;
-
- *l = g_list_prepend (*l, g_strdup (auid));
-}
-
-/**
- * cal_component_get_alarm_uids:
- * @comp: A calendar component.
- *
- * Builds a list of the unique identifiers of the alarm subcomponents inside a
- * calendar component.
- *
- * Return value: List of unique identifiers for alarms. This should be freed
- * using cal_obj_uid_list_free().
- **/
-GList *
-cal_component_get_alarm_uids (CalComponent *comp)
-{
- CalComponentPrivate *priv;
- GList *l;
-
- g_return_val_if_fail (comp != NULL, NULL);
- g_return_val_if_fail (IS_CAL_COMPONENT (comp), NULL);
-
- priv = comp->priv;
- g_return_val_if_fail (priv->icalcomp != NULL, NULL);
-
- l = NULL;
- g_hash_table_foreach (priv->alarm_uid_hash, add_alarm_uid, &l);
-
- return l;
-}
-
-/**
- * cal_component_get_alarm:
- * @comp: A calendar component.
- * @auid: Unique identifier for the sought alarm subcomponent.
- *
- * Queries a particular alarm subcomponent of a calendar component.
- *
- * Return value: The alarm subcomponent that corresponds to the specified @auid,
- * or #NULL if no alarm exists with that UID. This should be freed using
- * cal_component_alarm_free().
- **/
-CalComponentAlarm *
-cal_component_get_alarm (CalComponent *comp, const char *auid)
-{
- CalComponentPrivate *priv;
- icalcomponent *alarm;
-
- g_return_val_if_fail (comp != NULL, NULL);
- g_return_val_if_fail (IS_CAL_COMPONENT (comp), NULL);
-
- priv = comp->priv;
- g_return_val_if_fail (priv->icalcomp != NULL, NULL);
-
- g_return_val_if_fail (auid != NULL, NULL);
-
- alarm = g_hash_table_lookup (priv->alarm_uid_hash, auid);
-
- if (alarm)
- return make_alarm (alarm);
- else
- return NULL;
-}
-
-/**
- * cal_component_alarms_free:
- * @alarms: Component alarms structure.
- *
- * Frees a #CalComponentAlarms structure.
- **/
-void
-cal_component_alarms_free (CalComponentAlarms *alarms)
-{
- GSList *l;
-
- g_return_if_fail (alarms != NULL);
-
- g_assert (alarms->comp != NULL);
- gtk_object_unref (GTK_OBJECT (alarms->comp));
-
- for (l = alarms->alarms; l; l = l->next) {
- CalAlarmInstance *instance;
-
- instance = l->data;
- g_assert (instance != NULL);
- g_free (instance);
- }
-
- g_slist_free (alarms->alarms);
- g_free (alarms);
-}
-
-/**
- * cal_component_alarm_new:
- *
- *
- *
- * Return value: a new alarm component
- **/
-CalComponentAlarm *
-cal_component_alarm_new (void)
-{
- CalComponentAlarm *alarm;
- char *new_auid ;
-
- alarm = g_new (CalComponentAlarm, 1);
-
- alarm->icalcomp = icalcomponent_new (ICAL_VALARM_COMPONENT);
-
- new_auid = cal_component_gen_uid ();
- alarm->uid = icalproperty_new_x (new_auid);
- icalproperty_set_x_name (alarm->uid, EVOLUTION_ALARM_UID_PROPERTY);
- icalcomponent_add_property (alarm->icalcomp, alarm->uid);
- g_free (new_auid);
-
- alarm->action = NULL;
- alarm->trigger = NULL;
-
- return alarm;
-}
-
-/**
- * cal_component_alarm_clone:
- * @alarm: An alarm subcomponent.
- *
- * Creates a new alarm subcomponent by copying the information from another one.
- *
- * Return value: A newly-created alarm subcomponent with the same values as the
- * original one. Should be freed with cal_component_alarm_free().
- **/
-CalComponentAlarm *
-cal_component_alarm_clone (CalComponentAlarm *alarm)
-{
- icalcomponent *icalcomp;
-
- g_return_val_if_fail (alarm != NULL, NULL);
-
- icalcomp = icalcomponent_new_clone (alarm->icalcomp);
- return make_alarm (icalcomp);
-}
-
-/**
- * cal_component_alarm_get_uid:
- * @alarm: An alarm subcomponent.
- *
- * Queries the unique identifier of an alarm subcomponent.
- *
- * Return value: UID of the alarm.
- **/
-const char *
-cal_component_alarm_get_uid (CalComponentAlarm *alarm)
-{
- g_return_val_if_fail (alarm != NULL, NULL);
-
- return alarm_uid_from_prop (alarm->uid);
-}
-
-/**
- * cal_component_alarm_get_action:
- * @alarm: An alarm.
- * @action: Return value for the alarm's action type.
- *
- * Queries the action type of an alarm.
- **/
-void
-cal_component_alarm_get_action (CalComponentAlarm *alarm, CalAlarmAction *action)
-{
- enum icalproperty_action ipa;
-
- g_return_if_fail (alarm != NULL);
- g_return_if_fail (action != NULL);
-
- g_assert (alarm->icalcomp != NULL);
-
- if (!alarm->action) {
- *action = CAL_ALARM_NONE;
- return;
- }
-
- ipa = icalproperty_get_action (alarm->action);
-
- switch (ipa) {
- case ICAL_ACTION_AUDIO:
- *action = CAL_ALARM_AUDIO;
- break;
-
- case ICAL_ACTION_DISPLAY:
- *action = CAL_ALARM_DISPLAY;
- break;
-
- case ICAL_ACTION_EMAIL:
- *action = CAL_ALARM_EMAIL;
- break;
-
- case ICAL_ACTION_PROCEDURE:
- *action = CAL_ALARM_PROCEDURE;
- break;
-
- case ICAL_ACTION_NONE:
- *action = CAL_ALARM_NONE;
- break;
-
- default:
- *action = CAL_ALARM_UNKNOWN;
- }
-}
-
-/**
- * cal_component_alarm_set_action:
- * @alarm: An alarm.
- * @action: Action type.
- *
- * Sets the action type for an alarm.
- **/
-void
-cal_component_alarm_set_action (CalComponentAlarm *alarm, CalAlarmAction action)
-{
- enum icalproperty_action ipa;
-
- g_return_if_fail (alarm != NULL);
- g_return_if_fail (action != CAL_ALARM_NONE);
- g_return_if_fail (action != CAL_ALARM_UNKNOWN);
-
- g_assert (alarm->icalcomp != NULL);
-
- switch (action) {
- case CAL_ALARM_AUDIO:
- ipa = ICAL_ACTION_AUDIO;
- break;
-
- case CAL_ALARM_DISPLAY:
- ipa = ICAL_ACTION_DISPLAY;
- break;
-
- case CAL_ALARM_EMAIL:
- ipa = ICAL_ACTION_EMAIL;
- break;
-
- case CAL_ALARM_PROCEDURE:
- ipa = ICAL_ACTION_PROCEDURE;
- break;
-
- default:
- g_assert_not_reached ();
- ipa = ICAL_ACTION_NONE;
- }
-
- if (alarm->action)
- icalproperty_set_action (alarm->action, ipa);
- else {
- alarm->action = icalproperty_new_action (ipa);
- icalcomponent_add_property (alarm->icalcomp, alarm->action);
- }
-}
-
-/**
- * cal_component_alarm_get_trigger:
- * @alarm: An alarm.
- * @trigger: Return value for the trigger time.
- *
- * Queries the trigger time for an alarm.
- **/
-void
-cal_component_alarm_get_trigger (CalComponentAlarm *alarm, CalAlarmTrigger *trigger)
-{
- icalparameter *param;
- struct icaltriggertype t;
- gboolean relative;
-
- g_return_if_fail (alarm != NULL);
- g_return_if_fail (trigger != NULL);
-
- g_assert (alarm->icalcomp != NULL);
-
- if (!alarm->trigger) {
- trigger->type = CAL_ALARM_TRIGGER_NONE;
- return;
- }
-
- /* Get trigger type */
-
- param = icalproperty_get_first_parameter (alarm->trigger, ICAL_VALUE_PARAMETER);
- if (param) {
- icalparameter_value value;
-
- value = icalparameter_get_value (param);
-
- switch (value) {
- case ICAL_VALUE_DURATION:
- relative = TRUE;
- break;
-
- case ICAL_VALUE_DATETIME:
- relative = FALSE;
- break;
-
- default:
- g_message ("cal_component_alarm_get_trigger(): Unknown value for trigger "
- "value %d; using RELATIVE", value);
-
- relative = TRUE;
- break;
- }
- } else
- relative = TRUE;
-
- /* Get trigger value and the RELATED parameter */
-
- t = icalproperty_get_trigger (alarm->trigger);
-
- if (relative) {
- trigger->u.rel_duration = t.duration;
-
- param = icalproperty_get_first_parameter (alarm->trigger, ICAL_RELATED_PARAMETER);
- if (param) {
- icalparameter_related rel;
-
- rel = icalparameter_get_related (param);
-
- switch (rel) {
- case ICAL_RELATED_START:
- trigger->type = CAL_ALARM_TRIGGER_RELATIVE_START;
- break;
-
- case ICAL_RELATED_END:
- trigger->type = CAL_ALARM_TRIGGER_RELATIVE_END;
- break;
-
- default:
- g_assert_not_reached ();
- }
- } else
- trigger->type = CAL_ALARM_TRIGGER_RELATIVE_START;
- } else {
- trigger->u.abs_time = t.time;
- trigger->type = CAL_ALARM_TRIGGER_ABSOLUTE;
- }
-}
-
-/**
- * cal_component_alarm_set_trigger:
- * @alarm: An alarm.
- * @trigger: Trigger time structure.
- *
- * Sets the trigger time of an alarm.
- **/
-void
-cal_component_alarm_set_trigger (CalComponentAlarm *alarm, CalAlarmTrigger trigger)
-{
- struct icaltriggertype t;
- icalparameter *param;
- icalparameter_value value_type;
- icalparameter_related related;
-
- g_return_if_fail (alarm != NULL);
- g_return_if_fail (trigger.type != CAL_ALARM_TRIGGER_NONE);
-
- g_assert (alarm->icalcomp != NULL);
-
- /* Delete old trigger */
-
- if (alarm->trigger) {
- icalcomponent_remove_property (alarm->icalcomp, alarm->trigger);
- icalproperty_free (alarm->trigger);
- alarm->trigger = NULL;
- }
-
- /* Set the value */
-
- related = ICAL_RELATED_START; /* Keep GCC happy */
-
- t.time = icaltime_null_time ();
- t.duration = icaldurationtype_null_duration ();
- switch (trigger.type) {
- case CAL_ALARM_TRIGGER_RELATIVE_START:
- t.duration = trigger.u.rel_duration;
- t.time.is_date = -1;
- value_type = ICAL_VALUE_DURATION;
- related = ICAL_RELATED_START;
- break;
-
- case CAL_ALARM_TRIGGER_RELATIVE_END:
- t.duration = trigger.u.rel_duration;
- t.time.is_date = -1;
- value_type = ICAL_VALUE_DURATION;
- related = ICAL_RELATED_END;
- break;
-
- case CAL_ALARM_TRIGGER_ABSOLUTE:
- t.time = trigger.u.abs_time;
- value_type = ICAL_VALUE_DATETIME;
- break;
-
- default:
- g_assert_not_reached ();
- return;
- }
-
- alarm->trigger = icalproperty_new_trigger (t);
- icalcomponent_add_property (alarm->icalcomp, alarm->trigger);
-
- /* Value parameters */
-
- param = icalproperty_get_first_parameter (alarm->trigger, ICAL_VALUE_PARAMETER);
- if (param)
- icalparameter_set_value (param, value_type);
- else {
- param = icalparameter_new_value (value_type);
- icalproperty_add_parameter (alarm->trigger, param);
- }
-
- /* Related parameter */
-
- if (trigger.type != CAL_ALARM_TRIGGER_ABSOLUTE) {
- param = icalproperty_get_first_parameter (alarm->trigger, ICAL_RELATED_PARAMETER);
-
- if (param)
- icalparameter_set_related (param, related);
- else {
- param = icalparameter_new_related (related);
- icalproperty_add_parameter (alarm->trigger, param);
- }
- }
-}
-
-/**
- * cal_component_alarm_free:
- * @alarm: A calendar alarm.
- *
- * Frees an alarm structure.
- **/
-void
-cal_component_alarm_free (CalComponentAlarm *alarm)
-{
- g_return_if_fail (alarm != NULL);
-
- g_assert (alarm->icalcomp != NULL);
-
- if (icalcomponent_get_parent (alarm->icalcomp) == NULL)
- icalcomponent_free (alarm->icalcomp);
-
- alarm->icalcomp = NULL;
- alarm->uid = NULL;
- alarm->action = NULL;
- alarm->trigger = NULL;
-
- g_free (alarm);
-}
-
-
-/* Returns TRUE if both strings match, i.e. they are both NULL or the
- strings are equal. */
-static gboolean
-cal_component_strings_match (const gchar *string1,
- const gchar *string2)
-{
- if (string1 == NULL || string2 == NULL)
- return (string1 == string2) ? TRUE : FALSE;
-
- if (!strcmp (string1, string2))
- return TRUE;
-
- return FALSE;
-}
-
-
-/**
- * cal_component_event_dates_match:
- * @comp1: A calendar component object.
- * @comp2: A calendar component object.
- *
- * Checks if the DTSTART and DTEND properties of the 2 components match.
- * Note that the events may have different recurrence properties which are not
- * taken into account here.
- *
- * Returns: TRUE if the DTSTART and DTEND properties of the 2 components match.
- **/
-gboolean
-cal_component_event_dates_match (CalComponent *comp1,
- CalComponent *comp2)
-{
- CalComponentDateTime comp1_dtstart, comp1_dtend;
- CalComponentDateTime comp2_dtstart, comp2_dtend;
-
- cal_component_get_dtstart (comp1, &comp1_dtstart);
- cal_component_get_dtend (comp1, &comp1_dtend);
- cal_component_get_dtstart (comp2, &comp2_dtstart);
- cal_component_get_dtend (comp2, &comp2_dtend);
-
- /* If either value is NULL they must both be NULL to match. */
- if (comp1_dtstart.value == NULL || comp2_dtstart.value == NULL) {
- if (comp1_dtstart.value != comp2_dtstart.value)
- return FALSE;
- } else {
- if (icaltime_compare (*comp1_dtstart.value,
- *comp2_dtstart.value))
- return FALSE;
- }
-
- if (comp1_dtend.value == NULL || comp2_dtend.value == NULL) {
- if (comp1_dtend.value != comp2_dtend.value)
- return FALSE;
- } else {
- if (icaltime_compare (*comp1_dtend.value,
- *comp2_dtend.value))
- return FALSE;
- }
-
- /* Now check the timezones. */
- if (!cal_component_strings_match (comp1_dtstart.tzid,
- comp2_dtstart.tzid))
- return FALSE;
-
- if (!cal_component_strings_match (comp1_dtend.tzid,
- comp2_dtend.tzid))
- return FALSE;
-
- return TRUE;
-}
-
-
-
diff --git a/calendar/cal-util/cal-component.h b/calendar/cal-util/cal-component.h
deleted file mode 100644
index e4a2e2421e..0000000000
--- a/calendar/cal-util/cal-component.h
+++ /dev/null
@@ -1,361 +0,0 @@
-/* Evolution calendar - iCalendar component object
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef CAL_COMPONENT_H
-#define CAL_COMPONENT_H
-
-#include <libgnome/gnome-defs.h>
-#include <time.h>
-#include <gtk/gtkobject.h>
-#include <ical.h>
-
-BEGIN_GNOME_DECLS
-
-
-
-#define CAL_COMPONENT_TYPE (cal_component_get_type ())
-#define CAL_COMPONENT(obj) (GTK_CHECK_CAST ((obj), CAL_COMPONENT_TYPE, CalComponent))
-#define CAL_COMPONENT_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), CAL_COMPONENT_TYPE, \
- CalComponentClass))
-#define IS_CAL_COMPONENT(obj) (GTK_CHECK_TYPE ((obj), CAL_COMPONENT_TYPE))
-#define IS_CAL_COMPONENT_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), CAL_COMPONENT_TYPE))
-
-/* Types of calendar components to be stored by a CalComponent, as per RFC 2445.
- * We don't put the alarm component type here since we store alarms as separate
- * structures inside the other "real" components.
- */
-typedef enum {
- CAL_COMPONENT_NO_TYPE,
- CAL_COMPONENT_EVENT,
- CAL_COMPONENT_TODO,
- CAL_COMPONENT_JOURNAL,
- CAL_COMPONENT_FREEBUSY,
- CAL_COMPONENT_TIMEZONE
-} CalComponentVType;
-
-/* Field identifiers for a calendar component; these are used by the data model
- * for ETable.
- *
- * NOTE: These are also used in the ETable specification, and the column
- * numbers are saved in the user settings file. So don't reorder them!
- */
-typedef enum {
- CAL_COMPONENT_FIELD_CATEGORIES, /* concatenation of the categories list */
- CAL_COMPONENT_FIELD_CLASSIFICATION,
- CAL_COMPONENT_FIELD_COMPLETED,
- CAL_COMPONENT_FIELD_DTEND,
- CAL_COMPONENT_FIELD_DTSTART,
- CAL_COMPONENT_FIELD_DUE,
- CAL_COMPONENT_FIELD_GEO,
- CAL_COMPONENT_FIELD_PERCENT,
- CAL_COMPONENT_FIELD_PRIORITY,
- CAL_COMPONENT_FIELD_SUMMARY,
- CAL_COMPONENT_FIELD_TRANSPARENCY,
- CAL_COMPONENT_FIELD_URL,
- CAL_COMPONENT_FIELD_HAS_ALARMS, /* not a real field */
- CAL_COMPONENT_FIELD_ICON, /* not a real field */
- CAL_COMPONENT_FIELD_COMPLETE, /* not a real field */
- CAL_COMPONENT_FIELD_RECURRING, /* not a real field */
- CAL_COMPONENT_FIELD_OVERDUE, /* not a real field */
- CAL_COMPONENT_FIELD_COLOR, /* not a real field */
- CAL_COMPONENT_FIELD_STATUS,
- CAL_COMPONENT_FIELD_NUM_FIELDS
-} CalComponentField;
-
-/* Structures and enumerations to return properties and their parameters */
-
-/* CLASSIFICATION property */
-typedef enum {
- CAL_COMPONENT_CLASS_NONE,
- CAL_COMPONENT_CLASS_PUBLIC,
- CAL_COMPONENT_CLASS_PRIVATE,
- CAL_COMPONENT_CLASS_CONFIDENTIAL,
- CAL_COMPONENT_CLASS_UNKNOWN
-} CalComponentClassification;
-
-/* Properties that have time and timezone information */
-typedef struct {
- /* Actual date/time value */
- struct icaltimetype *value;
-
- /* Timezone ID */
- const char *tzid;
-} CalComponentDateTime;
-
-/* Way in which a period of time is specified */
-typedef enum {
- CAL_COMPONENT_PERIOD_DATETIME,
- CAL_COMPONENT_PERIOD_DURATION
-} CalComponentPeriodType;
-
-/* Period of time, can have explicit start/end times or start/duration instead */
-typedef struct {
- CalComponentPeriodType type;
-
- struct icaltimetype start;
-
- union {
- struct icaltimetype end;
- struct icaldurationtype duration;
- } u;
-} CalComponentPeriod;
-
-/* Text properties */
-typedef struct {
- /* Description string */
- const char *value;
-
- /* Alternate representation URI */
- const char *altrep;
-} CalComponentText;
-
-/* Time transparency */
-typedef enum {
- CAL_COMPONENT_TRANSP_NONE,
- CAL_COMPONENT_TRANSP_TRANSPARENT,
- CAL_COMPONENT_TRANSP_OPAQUE,
- CAL_COMPONENT_TRANSP_UNKNOWN
-} CalComponentTransparency;
-
-/* Main calendar component object */
-
-typedef struct _CalComponent CalComponent;
-typedef struct _CalComponentClass CalComponentClass;
-
-typedef struct _CalComponentPrivate CalComponentPrivate;
-
-struct _CalComponent {
- GtkObject object;
-
- /* Private data */
- CalComponentPrivate *priv;
-};
-
-struct _CalComponentClass {
- GtkObjectClass parent_class;
-};
-
-/* Calendar component */
-
-GtkType cal_component_get_type (void);
-
-char *cal_component_gen_uid (void);
-
-CalComponent *cal_component_new (void);
-
-CalComponent *cal_component_clone (CalComponent *comp);
-
-void cal_component_set_new_vtype (CalComponent *comp, CalComponentVType type);
-
-gboolean cal_component_set_icalcomponent (CalComponent *comp, icalcomponent *icalcomp);
-icalcomponent *cal_component_get_icalcomponent (CalComponent *comp);
-
-CalComponentVType cal_component_get_vtype (CalComponent *comp);
-
-char *cal_component_get_as_string (CalComponent *comp);
-
-void cal_component_commit_sequence (CalComponent *comp);
-
-void cal_component_get_uid (CalComponent *comp, const char **uid);
-void cal_component_set_uid (CalComponent *comp, const char *uid);
-
-void cal_component_get_categories (CalComponent *comp, const char **categories);
-void cal_component_set_categories (CalComponent *comp, const char *categories);
-void cal_component_get_categories_list (CalComponent *comp, GSList **categ_list);
-void cal_component_set_categories_list (CalComponent *comp, GSList *categ_list);
-
-void cal_component_get_classification (CalComponent *comp, CalComponentClassification *classif);
-void cal_component_set_classification (CalComponent *comp, CalComponentClassification classif);
-
-void cal_component_get_comment_list (CalComponent *comp, GSList **text_list);
-void cal_component_set_comment_list (CalComponent *comp, GSList *text_list);
-
-void cal_component_get_completed (CalComponent *comp, struct icaltimetype **t);
-void cal_component_set_completed (CalComponent *comp, struct icaltimetype *t);
-
-void cal_component_get_created (CalComponent *comp, struct icaltimetype **t);
-void cal_component_set_created (CalComponent *comp, struct icaltimetype *t);
-
-void cal_component_get_description_list (CalComponent *comp, GSList **text_list);
-void cal_component_set_description_list (CalComponent *comp, GSList *text_list);
-
-void cal_component_get_dtend (CalComponent *comp, CalComponentDateTime *dt);
-void cal_component_set_dtend (CalComponent *comp, CalComponentDateTime *dt);
-
-void cal_component_get_dtstamp (CalComponent *comp, struct icaltimetype *t);
-void cal_component_set_dtstamp (CalComponent *comp, struct icaltimetype *t);
-
-void cal_component_get_dtstart (CalComponent *comp, CalComponentDateTime *dt);
-void cal_component_set_dtstart (CalComponent *comp, CalComponentDateTime *dt);
-
-void cal_component_get_due (CalComponent *comp, CalComponentDateTime *dt);
-void cal_component_set_due (CalComponent *comp, CalComponentDateTime *dt);
-
-void cal_component_get_exdate_list (CalComponent *comp, GSList **exdate_list);
-void cal_component_set_exdate_list (CalComponent *comp, GSList *exdate_list);
-gboolean cal_component_has_exdates (CalComponent *comp);
-
-void cal_component_get_exrule_list (CalComponent *comp, GSList **recur_list);
-void cal_component_get_exrule_property_list (CalComponent *comp, GSList **recur_list);
-void cal_component_set_exrule_list (CalComponent *comp, GSList *recur_list);
-gboolean cal_component_has_exrules (CalComponent *comp);
-
-gboolean cal_component_has_exceptions (CalComponent *comp);
-
-void cal_component_get_geo (CalComponent *comp, struct icalgeotype **geo);
-void cal_component_set_geo (CalComponent *comp, struct icalgeotype *geo);
-
-void cal_component_get_last_modified (CalComponent *comp, struct icaltimetype **t);
-void cal_component_set_last_modified (CalComponent *comp, struct icaltimetype *t);
-
-void cal_component_get_percent (CalComponent *comp, int **percent);
-void cal_component_set_percent (CalComponent *comp, int *percent);
-
-void cal_component_get_priority (CalComponent *comp, int **priority);
-void cal_component_set_priority (CalComponent *comp, int *priority);
-
-void cal_component_get_rdate_list (CalComponent *comp, GSList **period_list);
-void cal_component_set_rdate_list (CalComponent *comp, GSList *period_list);
-gboolean cal_component_has_rdates (CalComponent *comp);
-
-void cal_component_get_rrule_list (CalComponent *comp, GSList **recur_list);
-void cal_component_get_rrule_property_list (CalComponent *comp, GSList **recur_list);
-void cal_component_set_rrule_list (CalComponent *comp, GSList *recur_list);
-gboolean cal_component_has_rrules (CalComponent *comp);
-
-gboolean cal_component_has_recurrences (CalComponent *comp);
-
-void cal_component_get_sequence (CalComponent *comp, int **sequence);
-void cal_component_set_sequence (CalComponent *comp, int *sequence);
-
-void cal_component_get_status (CalComponent *comp, icalproperty_status *status);
-void cal_component_set_status (CalComponent *comp, icalproperty_status status);
-
-void cal_component_get_summary (CalComponent *comp, CalComponentText *summary);
-void cal_component_set_summary (CalComponent *comp, CalComponentText *summary);
-
-void cal_component_get_transparency (CalComponent *comp, CalComponentTransparency *transp);
-void cal_component_set_transparency (CalComponent *comp, CalComponentTransparency transp);
-
-void cal_component_get_url (CalComponent *comp, const char **url);
-void cal_component_set_url (CalComponent *comp, const char *url);
-
-gboolean cal_component_event_dates_match (CalComponent *comp1, CalComponent *comp2);
-
-/* Functions to free returned values */
-
-void cal_component_free_categories_list (GSList *categ_list);
-void cal_component_free_datetime (CalComponentDateTime *dt);
-void cal_component_free_exdate_list (GSList *exdate_list);
-void cal_component_free_geo (struct icalgeotype *geo);
-void cal_component_free_icaltimetype (struct icaltimetype *t);
-void cal_component_free_percent (int *percent);
-void cal_component_free_priority (int *priority);
-void cal_component_free_period_list (GSList *period_list);
-void cal_component_free_recur_list (GSList *recur_list);
-void cal_component_free_sequence (int *sequence);
-void cal_component_free_text_list (GSList *text_list);
-
-/* Alarms */
-
-/* Opaque structure used to represent alarm subcomponents */
-typedef struct _CalComponentAlarm CalComponentAlarm;
-
-/* An alarm occurrence, i.e. a trigger instance */
-typedef struct {
- /* UID of the alarm that triggered */
- const char *auid;
-
- /* Trigger time, i.e. "5 minutes before the appointment" */
- time_t trigger;
-
- /* Actual event occurrence to which this trigger corresponds */
- time_t occur;
-} CalAlarmInstance;
-
-/* Alarm trigger instances for a particular component */
-typedef struct {
- /* The actual component */
- CalComponent *comp;
-
- /* List of CalAlarmInstance structures */
- GSList *alarms;
-} CalComponentAlarms;
-
-/* Alarm types */
-typedef enum {
- CAL_ALARM_NONE,
- CAL_ALARM_AUDIO,
- CAL_ALARM_DISPLAY,
- CAL_ALARM_EMAIL,
- CAL_ALARM_PROCEDURE,
- CAL_ALARM_UNKNOWN
-} CalAlarmAction;
-
-/* Whether a trigger is relative to the start or end of an event occurrence, or
- * whether it is specified to occur at an absolute time.
- */
-typedef enum {
- CAL_ALARM_TRIGGER_NONE,
- CAL_ALARM_TRIGGER_RELATIVE_START,
- CAL_ALARM_TRIGGER_RELATIVE_END,
- CAL_ALARM_TRIGGER_ABSOLUTE
-} CalAlarmTriggerType;
-
-typedef struct {
- CalAlarmTriggerType type;
-
- union {
- struct icaldurationtype rel_duration;
- struct icaltimetype abs_time;
- } u;
-} CalAlarmTrigger;
-
-gboolean cal_component_has_alarms (CalComponent *comp);
-void cal_component_add_alarm (CalComponent *comp, CalComponentAlarm *alarm);
-void cal_component_remove_alarm (CalComponent *comp, const char *auid);
-
-GList *cal_component_get_alarm_uids (CalComponent *comp);
-CalComponentAlarm *cal_component_get_alarm (CalComponent *comp, const char *auid);
-
-void cal_component_alarms_free (CalComponentAlarms *alarms);
-
-/* CalComponentAlarms */
-CalComponentAlarm *cal_component_alarm_new (void);
-CalComponentAlarm *cal_component_alarm_clone (CalComponentAlarm *alarm);
-
-const char *cal_component_alarm_get_uid (CalComponentAlarm *alarm);
-
-void cal_component_alarm_get_action (CalComponentAlarm *alarm, CalAlarmAction *action);
-void cal_component_alarm_set_action (CalComponentAlarm *alarm, CalAlarmAction action);
-
-void cal_component_alarm_get_trigger (CalComponentAlarm *alarm, CalAlarmTrigger *trigger);
-void cal_component_alarm_set_trigger (CalComponentAlarm *alarm, CalAlarmTrigger trigger);
-
-void cal_component_alarm_free (CalComponentAlarm *alarm);
-
-
-
-
-END_GNOME_DECLS
-
-#endif
diff --git a/calendar/cal-util/cal-recur.c b/calendar/cal-util/cal-recur.c
deleted file mode 100644
index 0b4f114484..0000000000
--- a/calendar/cal-util/cal-recur.c
+++ /dev/null
@@ -1,3758 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Evolution calendar recurrence rule functions
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Author: Damon Chaplin <damon@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <stdlib.h>
-#include <string.h>
-#include <cal-util/cal-recur.h>
-#include <cal-util/timeutil.h>
-
-
-/*
- * Introduction to The Recurrence Generation Functions:
- *
- * Note: This is pretty complicated. See the iCalendar spec (RFC 2445) for
- * the specification of the recurrence rules and lots of examples
- * (sections 4.3.10 & 4.8.5). We also want to support the older
- * vCalendar spec, though this should be easy since it is basically a
- * subset of iCalendar.
- *
- * o An iCalendar event can have any number of recurrence rules specifying
- * occurrences of the event, as well as dates & times of specific
- * occurrences. It can also have any number of recurrence rules and
- * specific dates & times specifying exceptions to the occurrences.
- * So we first merge all the occurrences generated, eliminating any
- * duplicates, then we generate all the exceptions and remove these to
- * form the final set of occurrences.
- *
- * o There are 7 frequencies of occurrences: YEARLY, MONTHLY, WEEKLY, DAILY,
- * HOURLY, MINUTELY & SECONDLY. The 'interval' property specifies the
- * multiples of the frequency which we step by. We generate a 'set' of
- * occurrences for each period defined by the frequency & interval.
- * So for a YEARLY frequency with an interval of 3, we generate a set of
- * occurrences for every 3rd year. We use complete years here - any
- * generated occurrences that occur before the event's start (or after its
- * end) are just discarded.
- *
- * o There are 8 frequency modifiers: BYMONTH, BYWEEKNO, BYYEARDAY, BYMONTHDAY,
- * BYDAY, BYHOUR, BYMINUTE & BYSECOND. These can either add extra occurrences
- * or filter out occurrences. For example 'FREQ=YEARLY;BYMONTH=1,2' produces
- * 2 occurrences for each year rather than the default 1. And
- * 'FREQ=DAILY;BYMONTH=1' filters out all occurrences except those in Jan.
- * If the modifier works on periods which are less than the recurrence
- * frequency, then extra occurrences are added, otherwise occurrences are
- * filtered. So we have 2 functions for each modifier - one to expand events
- * and the other to filter. We use a table of functions for each frequency
- * which points to the appropriate function to use for each modifier.
- *
- * o Any number of frequency modifiers can be used in a recurrence rule.
- * (Though the iCalendar spec says that BYWEEKNO can only be used in a YEARLY
- * rule, and some modifiers aren't appropriate for some frequencies - e.g.
- * BYMONTHDAY is not really useful in a WEEKLY frequency, and BYYEARDAY is
- * not useful in a MONTHLY or WEEKLY frequency).
- * The frequency modifiers are applied in the order given above. The first 5
- * modifier rules (BYMONTH, BYWEEKNO, BYYEARDAY, BYMONTHDAY & BYDAY) all
- * produce the days on which the occurrences take place, and so we have to
- * compute some of these in parallel rather than sequentially, or we may end
- * up with too many days.
- *
- * o Note that some expansion functions may produce days which are invalid,
- * e.g. 31st September, 30th Feb. These invalid days are removed before the
- * BYHOUR, BYMINUTE & BYSECOND modifier functions are applied.
- *
- * o After the set of occurrences for the frequency interval are generated,
- * the BYSETPOS property is used to select which of the occurrences are
- * finally output. If BYSETPOS is not specified then all the occurrences are
- * output.
- */
-
-/* Define this for some debugging output. */
-#if 0
-#define CAL_OBJ_DEBUG 1
-#endif
-
-/* We will use icalrecurrencetype instead of this eventually. */
-typedef struct {
- icalrecurrencetype_frequency freq;
-
- int interval;
-
- /* Specifies the end of the recurrence. No occurrences are generated
- after this date. If it is 0, the event recurs forever. */
- time_t enddate;
-
- /* WKST property - the week start day: 0 = Monday to 6 = Sunday. */
- gint week_start_day;
-
-
- /* NOTE: I've used GList's here, but it doesn't matter if we use
- other data structures like arrays. The code should be easy to
- change. So long as it is easy to see if the modifier is set. */
-
- /* For BYMONTH modifier. A list of GINT_TO_POINTERs, 0-11. */
- GList *bymonth;
-
- /* For BYWEEKNO modifier. A list of GINT_TO_POINTERs, [+-]1-53. */
- GList *byweekno;
-
- /* For BYYEARDAY modifier. A list of GINT_TO_POINTERs, [+-]1-366. */
- GList *byyearday;
-
- /* For BYMONTHDAY modifier. A list of GINT_TO_POINTERs, [+-]1-31. */
- GList *bymonthday;
-
- /* For BYDAY modifier. A list of GINT_TO_POINTERs, in pairs.
- The first of each pair is the weekday, 0 = Monday to 6 = Sunday.
- The second of each pair is the week number [+-]0-53. */
- GList *byday;
-
- /* For BYHOUR modifier. A list of GINT_TO_POINTERs, 0-23. */
- GList *byhour;
-
- /* For BYMINUTE modifier. A list of GINT_TO_POINTERs, 0-59. */
- GList *byminute;
-
- /* For BYSECOND modifier. A list of GINT_TO_POINTERs, 0-60. */
- GList *bysecond;
-
- /* For BYSETPOS modifier. A list of GINT_TO_POINTERs, +ve or -ve. */
- GList *bysetpos;
-} CalRecurrence;
-
-/* This is what we use to pass to all the filter functions. */
-typedef struct _RecurData RecurData;
-struct _RecurData {
- CalRecurrence *recur;
-
- /* This is used for the WEEKLY frequency. It is the offset from the
- week_start_day. */
- gint weekday_offset;
-
- /* This is used for fast lookup in BYMONTH filtering. */
- guint8 months[12];
-
- /* This is used for fast lookup in BYYEARDAY filtering. */
- guint8 yeardays[367], neg_yeardays[367]; /* Days are 1 - 366. */
-
- /* This is used for fast lookup in BYMONTHDAY filtering. */
- guint8 monthdays[32], neg_monthdays[32]; /* Days are 1 to 31. */
-
- /* This is used for fast lookup in BYDAY filtering. */
- guint8 weekdays[7];
-
- /* This is used for fast lookup in BYHOUR filtering. */
- guint8 hours[24];
-
- /* This is used for fast lookup in BYMINUTE filtering. */
- guint8 minutes[60];
-
- /* This is used for fast lookup in BYSECOND filtering. */
- guint8 seconds[62];
-};
-
-/* This is what we use to represent a date & time. */
-typedef struct _CalObjTime CalObjTime;
-struct _CalObjTime {
- guint16 year;
- guint8 month; /* 0 - 11 */
- guint8 day; /* 1 - 31 */
- guint8 hour; /* 0 - 23 */
- guint8 minute; /* 0 - 59 */
- guint8 second; /* 0 - 59 (maybe up to 61 for leap seconds) */
- guint8 is_rdate; /* TRUE if this is an RDATE, which may have an
- end or duration set. */
-};
-
-/* This is what we use to represent specific recurrence dates.
- Note that we assume it starts with a CalObjTime when sorting. */
-typedef struct _CalObjRecurrenceDate CalObjRecurrenceDate;
-struct _CalObjRecurrenceDate {
- CalObjTime start;
- CalComponentPeriod *period;
-};
-
-/* The paramter we use to store the enddate in RRULE and EXRULE properties. */
-#define EVOLUTION_END_DATE_PARAMETER "X-EVOLUTION-ENDDATE"
-
-typedef gboolean (*CalObjFindStartFn) (CalObjTime *event_start,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_start,
- CalObjTime *interval_end,
- CalObjTime *cotime);
-typedef gboolean (*CalObjFindNextFn) (CalObjTime *cotime,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_end);
-typedef GArray* (*CalObjFilterFn) (RecurData *recur_data,
- GArray *occs);
-
-typedef struct _CalRecurVTable CalRecurVTable;
-struct _CalRecurVTable {
- CalObjFindStartFn find_start_position;
- CalObjFindNextFn find_next_position;
-
- CalObjFilterFn bymonth_filter;
- CalObjFilterFn byweekno_filter;
- CalObjFilterFn byyearday_filter;
- CalObjFilterFn bymonthday_filter;
- CalObjFilterFn byday_filter;
- CalObjFilterFn byhour_filter;
- CalObjFilterFn byminute_filter;
- CalObjFilterFn bysecond_filter;
-};
-
-
-/* This is used to specify which parts of the CalObjTime to compare in
- cal_obj_time_compare(). */
-typedef enum {
- CALOBJ_YEAR,
- CALOBJ_MONTH,
- CALOBJ_DAY,
- CALOBJ_HOUR,
- CALOBJ_MINUTE,
- CALOBJ_SECOND
-} CalObjTimeComparison;
-
-static void cal_recur_generate_instances_of_rule (CalComponent *comp,
- icalproperty *prop,
- time_t start,
- time_t end,
- CalRecurInstanceFn cb,
- gpointer cb_data);
-
-static CalRecurrence * cal_recur_from_icalproperty (icalproperty *prop,
- gboolean exception);
-static gint cal_recur_ical_weekday_to_weekday (enum icalrecurrencetype_weekday day);
-static void cal_recur_free (CalRecurrence *r);
-
-
-static gboolean cal_object_get_rdate_end (CalObjTime *occ,
- GArray *rdate_periods);
-static void cal_object_compute_duration (CalObjTime *start,
- CalObjTime *end,
- gint *days,
- gint *seconds);
-
-static gboolean generate_instances_for_chunk (CalComponent *comp,
- time_t comp_dtstart,
- GSList *rrules,
- GSList *rdates,
- GSList *exrules,
- GSList *exdates,
- gboolean single_rule,
- CalObjTime *event_start,
- time_t interval_start,
- CalObjTime *chunk_start,
- CalObjTime *chunk_end,
- gint duration_days,
- gint duration_seconds,
- CalRecurInstanceFn cb,
- gpointer cb_data);
-
-static GArray* cal_obj_expand_recurrence (CalObjTime *event_start,
- CalRecurrence *recur,
- CalObjTime *interval_start,
- CalObjTime *interval_end,
- gboolean *finished);
-
-static GArray* cal_obj_generate_set_yearly (RecurData *recur_data,
- CalRecurVTable *vtable,
- CalObjTime *occ);
-static GArray* cal_obj_generate_set_monthly (RecurData *recur_data,
- CalRecurVTable *vtable,
- CalObjTime *occ);
-static GArray* cal_obj_generate_set_default (RecurData *recur_data,
- CalRecurVTable *vtable,
- CalObjTime *occ);
-
-
-static CalRecurVTable* cal_obj_get_vtable (icalrecurrencetype_frequency recur_type);
-static void cal_obj_initialize_recur_data (RecurData *recur_data,
- CalRecurrence *recur,
- CalObjTime *event_start);
-static void cal_obj_sort_occurrences (GArray *occs);
-static gint cal_obj_time_compare_func (const void *arg1,
- const void *arg2);
-static void cal_obj_remove_duplicates_and_invalid_dates (GArray *occs);
-static void cal_obj_remove_exceptions (GArray *occs,
- GArray *ex_occs);
-static GArray* cal_obj_bysetpos_filter (CalRecurrence *recur,
- GArray *occs);
-
-
-static gboolean cal_obj_yearly_find_start_position (CalObjTime *event_start,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_start,
- CalObjTime *interval_end,
- CalObjTime *cotime);
-static gboolean cal_obj_yearly_find_next_position (CalObjTime *cotime,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_end);
-
-static gboolean cal_obj_monthly_find_start_position (CalObjTime *event_start,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_start,
- CalObjTime *interval_end,
- CalObjTime *cotime);
-static gboolean cal_obj_monthly_find_next_position (CalObjTime *cotime,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_end);
-
-static gboolean cal_obj_weekly_find_start_position (CalObjTime *event_start,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_start,
- CalObjTime *interval_end,
- CalObjTime *cotime);
-static gboolean cal_obj_weekly_find_next_position (CalObjTime *cotime,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_end);
-
-static gboolean cal_obj_daily_find_start_position (CalObjTime *event_start,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_start,
- CalObjTime *interval_end,
- CalObjTime *cotime);
-static gboolean cal_obj_daily_find_next_position (CalObjTime *cotime,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_end);
-
-static gboolean cal_obj_hourly_find_start_position (CalObjTime *event_start,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_start,
- CalObjTime *interval_end,
- CalObjTime *cotime);
-static gboolean cal_obj_hourly_find_next_position (CalObjTime *cotime,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_end);
-
-static gboolean cal_obj_minutely_find_start_position (CalObjTime *event_start,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_start,
- CalObjTime *interval_end,
- CalObjTime *cotime);
-static gboolean cal_obj_minutely_find_next_position (CalObjTime *cotime,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_end);
-
-static gboolean cal_obj_secondly_find_start_position (CalObjTime *event_start,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_start,
- CalObjTime *interval_end,
- CalObjTime *cotime);
-static gboolean cal_obj_secondly_find_next_position (CalObjTime *cotime,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_end);
-
-static GArray* cal_obj_bymonth_expand (RecurData *recur_data,
- GArray *occs);
-static GArray* cal_obj_bymonth_filter (RecurData *recur_data,
- GArray *occs);
-static GArray* cal_obj_byweekno_expand (RecurData *recur_data,
- GArray *occs);
-#if 0
-/* This isn't used at present. */
-static GArray* cal_obj_byweekno_filter (RecurData *recur_data,
- GArray *occs);
-#endif
-static GArray* cal_obj_byyearday_expand (RecurData *recur_data,
- GArray *occs);
-static GArray* cal_obj_byyearday_filter (RecurData *recur_data,
- GArray *occs);
-static GArray* cal_obj_bymonthday_expand (RecurData *recur_data,
- GArray *occs);
-static GArray* cal_obj_bymonthday_filter (RecurData *recur_data,
- GArray *occs);
-static GArray* cal_obj_byday_expand_yearly (RecurData *recur_data,
- GArray *occs);
-static GArray* cal_obj_byday_expand_monthly (RecurData *recur_data,
- GArray *occs);
-static GArray* cal_obj_byday_expand_weekly (RecurData *recur_data,
- GArray *occs);
-static GArray* cal_obj_byday_filter (RecurData *recur_data,
- GArray *occs);
-static GArray* cal_obj_byhour_expand (RecurData *recur_data,
- GArray *occs);
-static GArray* cal_obj_byhour_filter (RecurData *recur_data,
- GArray *occs);
-static GArray* cal_obj_byminute_expand (RecurData *recur_data,
- GArray *occs);
-static GArray* cal_obj_byminute_filter (RecurData *recur_data,
- GArray *occs);
-static GArray* cal_obj_bysecond_expand (RecurData *recur_data,
- GArray *occs);
-static GArray* cal_obj_bysecond_filter (RecurData *recur_data,
- GArray *occs);
-
-static void cal_obj_time_add_months (CalObjTime *cotime,
- gint months);
-static void cal_obj_time_add_days (CalObjTime *cotime,
- gint days);
-static void cal_obj_time_add_hours (CalObjTime *cotime,
- gint hours);
-static void cal_obj_time_add_minutes (CalObjTime *cotime,
- gint minutes);
-static void cal_obj_time_add_seconds (CalObjTime *cotime,
- gint seconds);
-static gint cal_obj_time_compare (CalObjTime *cotime1,
- CalObjTime *cotime2,
- CalObjTimeComparison type);
-static gint cal_obj_time_weekday (CalObjTime *cotime);
-static gint cal_obj_time_weekday_offset (CalObjTime *cotime,
- CalRecurrence *recur);
-static gint cal_obj_time_day_of_year (CalObjTime *cotime);
-static void cal_obj_time_find_first_week (CalObjTime *cotime,
- RecurData *recur_data);
-static void cal_object_time_from_time (CalObjTime *cotime,
- time_t t);
-#if 0
-static gint cal_obj_date_only_compare_func (const void *arg1,
- const void *arg2);
-#endif
-
-
-
-static gboolean cal_recur_ensure_end_dates (CalComponent *comp,
- gboolean refresh);
-static gboolean cal_recur_ensure_rule_end_date (CalComponent *comp,
- icalproperty *prop,
- gboolean exception,
- gboolean refresh);
-static gboolean cal_recur_ensure_rule_end_date_cb (CalComponent *comp,
- time_t instance_start,
- time_t instance_end,
- gpointer data);
-static time_t cal_recur_get_rule_end_date (icalproperty *prop);
-static void cal_recur_set_rule_end_date (icalproperty *prop,
- time_t end_date);
-
-
-#ifdef CAL_OBJ_DEBUG
-static char* cal_obj_time_to_string (CalObjTime *cotime);
-#endif
-
-
-CalRecurVTable cal_obj_yearly_vtable = {
- cal_obj_yearly_find_start_position,
- cal_obj_yearly_find_next_position,
-
- cal_obj_bymonth_expand,
- cal_obj_byweekno_expand,
- cal_obj_byyearday_expand,
- cal_obj_bymonthday_expand,
- cal_obj_byday_expand_yearly,
- cal_obj_byhour_expand,
- cal_obj_byminute_expand,
- cal_obj_bysecond_expand
-};
-
-CalRecurVTable cal_obj_monthly_vtable = {
- cal_obj_monthly_find_start_position,
- cal_obj_monthly_find_next_position,
-
- cal_obj_bymonth_filter,
- NULL, /* BYWEEKNO is only applicable to YEARLY frequency. */
- NULL, /* BYYEARDAY is not useful in a MONTHLY frequency. */
- cal_obj_bymonthday_expand,
- cal_obj_byday_expand_monthly,
- cal_obj_byhour_expand,
- cal_obj_byminute_expand,
- cal_obj_bysecond_expand
-};
-
-CalRecurVTable cal_obj_weekly_vtable = {
- cal_obj_weekly_find_start_position,
- cal_obj_weekly_find_next_position,
-
- cal_obj_bymonth_filter,
- NULL, /* BYWEEKNO is only applicable to YEARLY frequency. */
- NULL, /* BYYEARDAY is not useful in a WEEKLY frequency. */
- NULL, /* BYMONTHDAY is not useful in a WEEKLY frequency. */
- cal_obj_byday_expand_weekly,
- cal_obj_byhour_expand,
- cal_obj_byminute_expand,
- cal_obj_bysecond_expand
-};
-
-CalRecurVTable cal_obj_daily_vtable = {
- cal_obj_daily_find_start_position,
- cal_obj_daily_find_next_position,
-
- cal_obj_bymonth_filter,
- NULL, /* BYWEEKNO is only applicable to YEARLY frequency. */
- cal_obj_byyearday_filter,
- cal_obj_bymonthday_filter,
- cal_obj_byday_filter,
- cal_obj_byhour_expand,
- cal_obj_byminute_expand,
- cal_obj_bysecond_expand
-};
-
-CalRecurVTable cal_obj_hourly_vtable = {
- cal_obj_hourly_find_start_position,
- cal_obj_hourly_find_next_position,
-
- cal_obj_bymonth_filter,
- NULL, /* BYWEEKNO is only applicable to YEARLY frequency. */
- cal_obj_byyearday_filter,
- cal_obj_bymonthday_filter,
- cal_obj_byday_filter,
- cal_obj_byhour_filter,
- cal_obj_byminute_expand,
- cal_obj_bysecond_expand
-};
-
-CalRecurVTable cal_obj_minutely_vtable = {
- cal_obj_minutely_find_start_position,
- cal_obj_minutely_find_next_position,
-
- cal_obj_bymonth_filter,
- NULL, /* BYWEEKNO is only applicable to YEARLY frequency. */
- cal_obj_byyearday_filter,
- cal_obj_bymonthday_filter,
- cal_obj_byday_filter,
- cal_obj_byhour_filter,
- cal_obj_byminute_filter,
- cal_obj_bysecond_expand
-};
-
-CalRecurVTable cal_obj_secondly_vtable = {
- cal_obj_secondly_find_start_position,
- cal_obj_secondly_find_next_position,
-
- cal_obj_bymonth_filter,
- NULL, /* BYWEEKNO is only applicable to YEARLY frequency. */
- cal_obj_byyearday_filter,
- cal_obj_bymonthday_filter,
- cal_obj_byday_filter,
- cal_obj_byhour_filter,
- cal_obj_byminute_filter,
- cal_obj_bysecond_filter
-};
-
-/*
- * Calls the given callback function for each occurrence of the event that
- * intersects the range between the given start and end times (the end time is
- * not included). Note that the occurrences may start before the given start
- * time.
- *
- * If the callback routine returns FALSE the occurrence generation stops.
- *
- * Both start and end can be -1, in which case we start at the events first
- * instance and continue until it ends, or forever if it has no enddate.
- */
-void
-cal_recur_generate_instances (CalComponent *comp,
- time_t start,
- time_t end,
- CalRecurInstanceFn cb,
- gpointer cb_data)
-{
-#if 0
- g_print ("In cal_recur_generate_instances comp: %p\n", comp);
- g_print (" start: %li - %s", start, ctime (&start));
- g_print (" end : %li - %s", end, ctime (&end));
-#endif
- cal_recur_generate_instances_of_rule (comp, NULL, start, end,
- cb, cb_data);
-}
-
-
-/*
- * Calls the given callback function for each occurrence of the given
- * recurrence rule between the given start and end times. If the rule is NULL
- * it uses all the rules from the component.
- *
- * If the callback routine returns FALSE the occurrence generation stops.
- *
- * The use of the specific rule is for determining the end of a rule when
- * COUNT is set. The callback will count instances and store the enddate
- * when COUNT is reached.
- *
- * Both start and end can be -1, in which case we start at the events first
- * instance and continue until it ends, or forever if it has no enddate.
- */
-static void
-cal_recur_generate_instances_of_rule (CalComponent *comp,
- icalproperty *prop,
- time_t start,
- time_t end,
- CalRecurInstanceFn cb,
- gpointer cb_data)
-{
- CalComponentDateTime dtstart, dtend;
- time_t dtstart_time, dtend_time;
- GSList *rrules = NULL, *rdates = NULL, elem;
- GSList *exrules = NULL, *exdates = NULL;
- CalObjTime interval_start, interval_end, event_start, event_end;
- CalObjTime chunk_start, chunk_end;
- gint days, seconds, year;
- gboolean single_rule;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (cb != NULL);
- g_return_if_fail (start >= -1);
- g_return_if_fail (end >= -1);
-
- /* Get dtstart, dtend, recurrences, and exceptions */
-
- cal_component_get_dtstart (comp, &dtstart);
- cal_component_get_dtend (comp, &dtend);
-
- if (!dtstart.value) {
- g_message ("cal_recur_generate_instances_of_rule(): bogus "
- "component, does not have DTSTART. Skipping...");
- goto out;
- }
-
- dtstart_time = icaltime_as_timet (*dtstart.value);
- if (start == -1)
- start = dtstart_time;
-
- /* FIXME: DURATION could be used instead, couldn't it? - Damon */
- if (dtend.value)
- dtend_time = icaltime_as_timet (*dtend.value);
- else
- dtend_time = time_day_end (dtstart_time);
-
- /* If there is no recurrence, just call the callback if the event
- intersects the given interval. */
- if (!(cal_component_has_recurrences (comp)
- || cal_component_has_exceptions (comp))) {
- if ((end == -1 || dtstart_time < end) && dtend_time > start) {
- (* cb) (comp, dtstart_time, dtend_time, cb_data);
- }
-
- goto out;
- }
-
- /* If a specific recurrence rule is being used, set up a simple list,
- else get the recurrence rules from the component. */
- if (prop) {
- single_rule = TRUE;
-
- elem.data = prop;
- elem.next = NULL;
- rrules = &elem;
- } else {
- single_rule = FALSE;
-
- /* Make sure all the enddates for the rules are set. */
- cal_recur_ensure_end_dates (comp, FALSE);
-
- cal_component_get_rrule_property_list (comp, &rrules);
- cal_component_get_rdate_list (comp, &rdates);
- cal_component_get_exrule_property_list (comp, &exrules);
- cal_component_get_exdate_list (comp, &exdates);
- }
-
- /* Convert the interval start & end to CalObjTime. Note that if end
- is -1 interval_end won't be set, so don't use it!
- Also note that we use end - 1 since we want the interval to be
- inclusive as it makes the code simpler. */
- cal_object_time_from_time (&interval_start, start);
- if (end != -1)
- cal_object_time_from_time (&interval_end, end - 1);
-
- cal_object_time_from_time (&event_start, dtstart_time);
- cal_object_time_from_time (&event_end, dtend_time);
-
- /* Calculate the duration of the event, which we use for all
- occurrences. We can't just subtract start from end since that may
- be affected by daylight-saving time. So we want a value of days
- + seconds. */
- cal_object_compute_duration (&event_start, &event_end,
- &days, &seconds);
-
- /* Take off the duration from interval_start, so we get occurrences
- that start just before the start time but overlap it. But only do
- that if the interval is after the event's start time. */
- if (start > dtstart_time) {
- cal_obj_time_add_days (&interval_start, -days);
- cal_obj_time_add_seconds (&interval_start, -seconds);
- }
-
- /* Expand the recurrence for each year between start & end, or until
- the callback returns 0 if end is 0. We do a year at a time to
- give the callback function a chance to break out of the loop, and
- so we don't get into problems with infinite recurrences. Since we
- have to work on complete sets of occurrences, if there is a yearly
- frequency it wouldn't make sense to break it into smaller chunks,
- since we would then be calculating the same sets several times.
- Though this does mean that we sometimes do a lot more work than
- is necessary, e.g. if COUNT is set to something quite low. */
- for (year = interval_start.year;
- end == -1 || year <= interval_end.year;
- year++) {
- chunk_start = interval_start;
- chunk_start.year = year;
- if (end != -1)
- chunk_end = interval_end;
- chunk_end.year = year;
-
- if (year != interval_start.year) {
- chunk_start.month = 0;
- chunk_start.day = 1;
- chunk_start.hour = 0;
- chunk_start.minute = 0;
- chunk_start.second = 0;
- }
- if (end == -1 || year != interval_end.year) {
- chunk_end.month = 11;
- chunk_end.day = 31;
- chunk_end.hour = 23;
- chunk_end.minute = 59;
- chunk_end.second = 61;
- chunk_end.is_rdate = FALSE;
- }
-
- if (!generate_instances_for_chunk (comp, dtstart_time,
- rrules, rdates,
- exrules, exdates,
- single_rule,
- &event_start,
- start,
- &chunk_start, &chunk_end,
- days, seconds,
- cb, cb_data))
- break;
- }
-
- if (!prop) {
- cal_component_free_period_list (rdates);
- cal_component_free_exdate_list (exdates);
- }
-
- out:
- cal_component_free_datetime (&dtstart);
- cal_component_free_datetime (&dtend);
-}
-
-/* Builds a list of GINT_TO_POINTER() elements out of a short array from a
- * struct icalrecurrencetype.
- */
-static GList *
-array_to_list (short *array, int max_elements)
-{
- GList *l;
- int i;
-
- l = NULL;
-
- for (i = 0; i < max_elements && array[i] != ICAL_RECURRENCE_ARRAY_MAX; i++)
- l = g_list_prepend (l, GINT_TO_POINTER ((int) (array[i])));
- return g_list_reverse (l);
-}
-
-/**
- * cal_recur_from_icalproperty:
- * @ir: An RRULE or EXRULE #icalproperty.
- *
- * Converts an #icalproperty to a #CalRecurrence. This should be
- * freed using the cal_recur_free() function.
- *
- * Return value: #CalRecurrence structure.
- **/
-static CalRecurrence *
-cal_recur_from_icalproperty (icalproperty *prop, gboolean exception)
-{
- struct icalrecurrencetype ir;
- CalRecurrence *r;
- gint max_elements, i;
-
- g_return_val_if_fail (prop != NULL, NULL);
-
- r = g_new (CalRecurrence, 1);
-
- if (exception)
- ir = icalproperty_get_exrule (prop);
- else
- ir = icalproperty_get_rrule (prop);
-
- r->freq = ir.freq;
- r->interval = ir.interval;
-
- if (ir.count != 0) {
- r->enddate = cal_recur_get_rule_end_date (prop);
- } else {
- /* FIXME: icaltime_as_timet() seems to return -1 if UNTIL isn't
- set, but a simpler test would be better. */
- r->enddate = icaltime_as_timet (ir.until);
- if (r->enddate == -1)
- r->enddate = 0;
- else if (ir.until.is_date)
- /* FIXME: Decide what to do here. */
- r->enddate = time_add_day (r->enddate, 1) - 1;
- }
-
- r->week_start_day = cal_recur_ical_weekday_to_weekday (ir.week_start);
-
- r->bymonth = array_to_list (ir.by_month,
- sizeof (ir.by_month) / sizeof (ir.by_month[0]));
-
- r->byweekno = array_to_list (ir.by_week_no,
- sizeof (ir.by_week_no) / sizeof (ir.by_week_no[0]));
-
- r->byyearday = array_to_list (ir.by_year_day,
- sizeof (ir.by_year_day) / sizeof (ir.by_year_day[0]));
-
- r->bymonthday = array_to_list (ir.by_month_day,
- sizeof (ir.by_month_day) / sizeof (ir.by_month_day[0]));
-
- /* FIXME: libical only supports 8 values, out of possible 107 * 7. */
- r->byday = NULL;
- max_elements = sizeof (ir.by_day) / sizeof (ir.by_day[0]);
- for (i = 0; i < max_elements && ir.by_day[i] != ICAL_RECURRENCE_ARRAY_MAX; i++) {
- enum icalrecurrencetype_weekday day;
- gint weeknum, weekday;
-
- day = icalrecurrencetype_day_day_of_week (ir.by_day[i]);
- weeknum = icalrecurrencetype_day_position (ir.by_day[i]);
-
- weekday = cal_recur_ical_weekday_to_weekday (day);
-
- r->byday = g_list_prepend (r->byday,
- GINT_TO_POINTER (weeknum));
- r->byday = g_list_prepend (r->byday,
- GINT_TO_POINTER (weekday));
- }
-
- r->byhour = array_to_list (ir.by_hour,
- sizeof (ir.by_hour) / sizeof (ir.by_hour[0]));
-
- r->byminute = array_to_list (ir.by_minute,
- sizeof (ir.by_minute) / sizeof (ir.by_minute[0]));
-
- r->bysecond = array_to_list (ir.by_second,
- sizeof (ir.by_second) / sizeof (ir.by_second[0]));
-
- r->bysetpos = array_to_list (ir.by_set_pos,
- sizeof (ir.by_set_pos) / sizeof (ir.by_set_pos[0]));
-
- return r;
-}
-
-
-static gint
-cal_recur_ical_weekday_to_weekday (enum icalrecurrencetype_weekday day)
-{
- gint weekday;
-
- switch (day) {
- case ICAL_NO_WEEKDAY: /* Monday is the default in RFC2445. */
- case ICAL_MONDAY_WEEKDAY:
- weekday = 0;
- break;
- case ICAL_TUESDAY_WEEKDAY:
- weekday = 1;
- break;
- case ICAL_WEDNESDAY_WEEKDAY:
- weekday = 2;
- break;
- case ICAL_THURSDAY_WEEKDAY:
- weekday = 3;
- break;
- case ICAL_FRIDAY_WEEKDAY:
- weekday = 4;
- break;
- case ICAL_SATURDAY_WEEKDAY:
- weekday = 5;
- break;
- case ICAL_SUNDAY_WEEKDAY:
- weekday = 6;
- break;
- default:
- g_warning ("cal_recur_ical_weekday_to_weekday(): Unknown week day %d",
- day);
- weekday = 0;
- }
-
- return weekday;
-}
-
-
-/**
- * cal_recur_free:
- * @r: A #CalRecurrence structure.
- *
- * Frees a #CalRecurrence structure.
- **/
-static void
-cal_recur_free (CalRecurrence *r)
-{
- g_return_if_fail (r != NULL);
-
- g_list_free (r->bymonth);
- g_list_free (r->byweekno);
- g_list_free (r->byyearday);
- g_list_free (r->bymonthday);
- g_list_free (r->byday);
- g_list_free (r->byhour);
- g_list_free (r->byminute);
- g_list_free (r->bysecond);
- g_list_free (r->bysetpos);
-
- g_free (r);
-}
-
-/* Generates one year's worth of recurrence instances. Returns TRUE if all the
- * callback invocations returned TRUE, or FALSE when any one of them returns
- * FALSE, i.e. meaning that the instance generation should be stopped.
- *
- * This should only output instances whose start time is between chunk_start
- * and chunk_end (inclusive), or we may generate duplicates when we do the next
- * chunk. (This applies mainly to weekly recurrences, since weeks can span 2
- * years.)
- *
- * It should also only output instances that are on or after the event's
- * DTSTART property and that intersect the required interval, between
- * interval_start and interval_end.
- */
-static gboolean
-generate_instances_for_chunk (CalComponent *comp,
- time_t comp_dtstart,
- GSList *rrules,
- GSList *rdates,
- GSList *exrules,
- GSList *exdates,
- gboolean single_rule,
- CalObjTime *event_start,
- time_t interval_start,
- CalObjTime *chunk_start,
- CalObjTime *chunk_end,
- gint duration_days,
- gint duration_seconds,
- CalRecurInstanceFn cb,
- gpointer cb_data)
-{
- GArray *occs, *ex_occs, *tmp_occs, *rdate_periods;
- CalObjTime cotime, *occ;
- GSList *elem;
- gint i;
- time_t start_time, end_time;
- struct tm start_tm, end_tm;
- gboolean cb_status = TRUE, rule_finished, finished = TRUE;
-
-#if 0
- g_print ("In generate_instances_for_chunk rrules: %p\n"
- " %i/%i/%i %02i:%02i:%02i - %i/%i/%i %02i:%02i:%02i\n",
- rrules,
- chunk_start->day, chunk_start->month + 1,
- chunk_start->year, chunk_start->hour,
- chunk_start->minute, chunk_start->second,
- chunk_end->day, chunk_end->month + 1,
- chunk_end->year, chunk_end->hour,
- chunk_end->minute, chunk_end->second);
-#endif
-
- occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
- ex_occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
- rdate_periods = g_array_new (FALSE, FALSE,
- sizeof (CalObjRecurrenceDate));
-
- /* The original DTSTART property is included in the occurrence set,
- but not if we are just generating occurrences for a single rule. */
- if (!single_rule) {
- /* We add it if it is in this chunk. If it is after this chunk
- we set finished to FALSE, since we know we aren't finished
- yet. */
- if (cal_obj_time_compare_func (event_start, chunk_end) >= 0)
- finished = FALSE;
- else if (cal_obj_time_compare_func (event_start, chunk_start) >= 0)
- g_array_append_vals (occs, event_start, 1);
- }
-
- /* Expand each of the recurrence rules. */
- for (elem = rrules; elem; elem = elem->next) {
- icalproperty *prop;
- CalRecurrence *r;
-
- prop = elem->data;
- r = cal_recur_from_icalproperty (prop, FALSE);
-
- tmp_occs = cal_obj_expand_recurrence (event_start, r,
- chunk_start,
- chunk_end,
- &rule_finished);
- cal_recur_free (r);
-
- /* If any of the rules return FALSE for finished, we know we
- have to carry on so we set finished to FALSE. */
- if (!rule_finished)
- finished = FALSE;
-
- g_array_append_vals (occs, tmp_occs->data, tmp_occs->len);
- g_array_free (tmp_occs, TRUE);
- }
-
- /* Add on specific occurrence dates, flag them as RDATEs, and store
- a pointer to the period in the rdate_periods array. */
- for (elem = rdates; elem; elem = elem->next) {
- CalComponentPeriod *p;
- CalObjRecurrenceDate rdate;
- time_t t;
-
- p = elem->data;
- t = icaltime_as_timet (p->start);
- cal_object_time_from_time (&cotime, t);
-
- /* If the rdate is after the current chunk we set finished
- to FALSE, and we skip it. */
- if (cal_obj_time_compare_func (&cotime, chunk_end) >= 0) {
- finished = FALSE;
- continue;
- }
-
- /* Check if the end date or duration is set. If it is we need
- to store it so we can get it later. (libical seems to set
- second to -1 to denote an unset time. See icalvalue.c) */
- if (p->type != CAL_COMPONENT_PERIOD_DATETIME
- || p->u.end.second != -1) {
- cotime.is_rdate = TRUE;
-
- rdate.start = cotime;
- rdate.period = p;
- g_array_append_val (rdate_periods, rdate);
- }
-
- g_array_append_val (occs, cotime);
- }
-
- /* Expand each of the exception rules. */
- for (elem = exrules; elem; elem = elem->next) {
- icalproperty *prop;
- CalRecurrence *r;
-
- prop = elem->data;
- r = cal_recur_from_icalproperty (prop, FALSE);
-
- tmp_occs = cal_obj_expand_recurrence (event_start, r,
- chunk_start,
- chunk_end,
- &rule_finished);
- cal_recur_free (r);
-
- g_array_append_vals (ex_occs, tmp_occs->data, tmp_occs->len);
- g_array_free (tmp_occs, TRUE);
- }
-
- /* Add on specific exception dates. */
- for (elem = exdates; elem; elem = elem->next) {
- CalComponentDateTime *cdt;
- time_t t;
-
- /* FIXME we should only be dealing with dates, not times too.
-
- No, I think it is supposed to be dates & times - Damon.
- I'm not sure what the semantics of just a date would be,
- since the event could recur several times each day. */
- cdt = elem->data;
- t = icaltime_as_timet (*cdt->value);
- cal_object_time_from_time (&cotime, t);
-
- g_array_append_val (ex_occs, cotime);
- }
-
-
- /* Sort all the arrays. */
- cal_obj_sort_occurrences (occs);
- cal_obj_sort_occurrences (ex_occs);
-
- qsort (rdate_periods->data, rdate_periods->len,
- sizeof (CalObjRecurrenceDate), cal_obj_time_compare_func);
-
- /* Create the final array, by removing the exceptions from the
- occurrences, and removing any duplicates. */
- cal_obj_remove_exceptions (occs, ex_occs);
-
- /* Call the callback for each occurrence. If it returns 0 we break
- out of the loop. */
- for (i = 0; i < occs->len; i++) {
- /* Convert each CalObjTime into a start & end time_t, and
- check it is within the bounds of the event & interval. */
- occ = &g_array_index (occs, CalObjTime, i);
-#if 0
- g_print ("Checking occurrence: %s\n",
- cal_obj_time_to_string (occ));
-#endif
- start_tm.tm_year = occ->year - 1900;
- start_tm.tm_mon = occ->month;
- start_tm.tm_mday = occ->day;
- start_tm.tm_hour = occ->hour;
- start_tm.tm_min = occ->minute;
- start_tm.tm_sec = occ->second;
- start_tm.tm_isdst = -1;
- start_time = mktime (&start_tm);
-
- if (start_time == -1) {
- g_warning ("mktime failed - time_t out of range?");
- finished = TRUE;
- break;
- }
-
- /* Check to ensure that the start time is at or after the
- event's DTSTART time, and that it is inside the chunk that
- we are currently working on. (Note that the chunk_end time
- is never after the interval end time, so this also tests
- that we don't go past the end of the required interval). */
- if (start_time < comp_dtstart
- || cal_obj_time_compare_func (occ, chunk_start) < 0
- || cal_obj_time_compare_func (occ, chunk_end) > 0) {
-#if 0
- g_print (" start time invalid\n");
-#endif
- continue;
- }
-
- if (occ->is_rdate) {
- if (!cal_object_get_rdate_end (occ, rdate_periods)) {
- cal_obj_time_add_days (occ, duration_days);
- cal_obj_time_add_seconds (occ,
- duration_seconds);
- }
- } else {
- cal_obj_time_add_days (occ, duration_days);
- cal_obj_time_add_seconds (occ, duration_seconds);
- }
-
- end_tm.tm_year = occ->year - 1900;
- end_tm.tm_mon = occ->month;
- end_tm.tm_mday = occ->day;
- end_tm.tm_hour = occ->hour;
- end_tm.tm_min = occ->minute;
- end_tm.tm_sec = occ->second;
- end_tm.tm_isdst = -1;
- end_time = mktime (&end_tm);
-
- if (end_time == -1) {
- g_warning ("mktime failed - time_t out of range?");
- finished = TRUE;
- break;
- }
-
- /* Check that the end time is after the interval start, so we
- know that it intersects the required interval. */
- if (end_time <= interval_start) {
-#if 0
- g_print (" end time invalid\n");
-#endif
- continue;
- }
-
- cb_status = (*cb) (comp, start_time, end_time, cb_data);
- if (!cb_status)
- break;
- }
-
- g_array_free (occs, TRUE);
- g_array_free (ex_occs, TRUE);
- g_array_free (rdate_periods, TRUE);
-
- /* We return TRUE (i.e. carry on) only if the callback has always
- returned TRUE and we know that we have more occurrences to generate
- (i.e. finished is FALSE). */
- return cb_status && !finished;
-}
-
-
-/* This looks up the occurrence time in the sorted rdate_periods array, and
- tries to compute the end time of the occurrence. If no end time or duration
- is set it returns FALSE and the default duration will be used. */
-static gboolean
-cal_object_get_rdate_end (CalObjTime *occ,
- GArray *rdate_periods)
-{
- CalObjRecurrenceDate *rdate = NULL;
- CalComponentPeriod *p;
- gint lower, upper, middle, cmp = 0;
- time_t t;
-
- lower = 0;
- upper = rdate_periods->len;
-
- while (lower < upper) {
- middle = (lower + upper) >> 1;
-
- rdate = &g_array_index (rdate_periods, CalObjRecurrenceDate,
- middle);
-
- cmp = cal_obj_time_compare_func (occ, &rdate->start);
-
- if (cmp == 0)
- break;
- else if (cmp < 0)
- upper = middle;
- else
- lower = middle + 1;
- }
-
- /* This should never happen. */
- if (cmp == 0) {
- g_warning ("Recurrence date not found");
- return FALSE;
- }
-
- p = rdate->period;
- if (p->type == CAL_COMPONENT_PERIOD_DATETIME) {
- t = icaltime_as_timet (p->u.end);
- cal_object_time_from_time (occ, t);
- } else {
- cal_obj_time_add_days (occ, p->u.duration.weeks * 7
- + p->u.duration.days);
- cal_obj_time_add_hours (occ, p->u.duration.hours);
- cal_obj_time_add_minutes (occ, p->u.duration.minutes);
- cal_obj_time_add_seconds (occ, p->u.duration.seconds);
- }
-
- return TRUE;
-}
-
-
-static void
-cal_object_compute_duration (CalObjTime *start,
- CalObjTime *end,
- gint *days,
- gint *seconds)
-{
- GDate start_date, end_date;
- gint start_seconds, end_seconds;
-
- g_date_clear (&start_date, 1);
- g_date_clear (&end_date, 1);
- g_date_set_dmy (&start_date, start->day, start->month + 1,
- start->year);
- g_date_set_dmy (&end_date, end->day, end->month + 1,
- end->year);
-
- *days = g_date_julian (&end_date) - g_date_julian (&start_date);
- start_seconds = start->hour * 3600 + start->minute * 60
- + start->second;
- end_seconds = end->hour * 3600 + end->minute * 60 + end->second;
-
- *seconds = end_seconds - start_seconds;
- if (*seconds < 0) {
- *days = *days - 1;
- *seconds += 24 * 60 * 60;
- }
-}
-
-
-/* Returns an unsorted GArray of CalObjTime's resulting from expanding the
- given recurrence rule within the given interval. Note that it doesn't
- clip the generated occurrences to the interval, i.e. if the interval
- starts part way through the year this function still returns all the
- occurrences for the year. Clipping is done later.
- The finished flag is set to FALSE if there are more occurrences to generate
- after the given interval.*/
-static GArray*
-cal_obj_expand_recurrence (CalObjTime *event_start,
- CalRecurrence *recur,
- CalObjTime *interval_start,
- CalObjTime *interval_end,
- gboolean *finished)
-{
- CalRecurVTable *vtable;
- CalObjTime *event_end = NULL, event_end_cotime;
- RecurData recur_data;
- CalObjTime occ, *cotime;
- GArray *all_occs, *occs;
- gint len;
-
- /* This is the resulting array of CalObjTime elements. */
- all_occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
-
- *finished = TRUE;
-
- vtable = cal_obj_get_vtable (recur->freq);
- if (!vtable)
- return all_occs;
-
- /* Calculate some useful data such as some fast lookup tables. */
- cal_obj_initialize_recur_data (&recur_data, recur, event_start);
-
- /* Compute the event_end, if the recur's enddate is set. */
- if (recur->enddate > 0) {
- cal_object_time_from_time (&event_end_cotime,
- recur->enddate);
- event_end = &event_end_cotime;
-
- /* If the enddate is before the requested interval return. */
- if (cal_obj_time_compare_func (event_end, interval_start) < 0)
- return all_occs;
- }
-
- /* Set finished to FALSE if we know there will be more occurrences to
- do after this interval. */
- if (!interval_end || !event_end
- || cal_obj_time_compare_func (event_end, interval_end) > 0)
- *finished = FALSE;
-
- /* Get the first period based on the frequency and the interval that
- intersects the interval between start and end. */
- if ((*vtable->find_start_position) (event_start, event_end,
- &recur_data,
- interval_start, interval_end,
- &occ))
- return all_occs;
-
- /* Loop until the event ends or we go past the end of the required
- interval. */
- for (;;) {
- /* Generate the set of occurrences for this period. */
- switch (recur->freq) {
- case ICAL_YEARLY_RECURRENCE:
- occs = cal_obj_generate_set_yearly (&recur_data,
- vtable, &occ);
- break;
- case ICAL_MONTHLY_RECURRENCE:
- occs = cal_obj_generate_set_monthly (&recur_data,
- vtable, &occ);
- break;
- default:
- occs = cal_obj_generate_set_default (&recur_data,
- vtable, &occ);
- break;
- }
-
- /* Sort the occurrences and remove duplicates. */
- cal_obj_sort_occurrences (occs);
- cal_obj_remove_duplicates_and_invalid_dates (occs);
-
- /* Apply the BYSETPOS property. */
- occs = cal_obj_bysetpos_filter (recur, occs);
-
- /* Remove any occs after event_end. */
- len = occs->len - 1;
- if (event_end) {
- while (len >= 0) {
- cotime = &g_array_index (occs, CalObjTime,
- len);
- if (cal_obj_time_compare_func (cotime,
- event_end) <= 0)
- break;
- len--;
- }
- }
-
- /* Add the occurrences onto the main array. */
- if (len >= 0)
- g_array_append_vals (all_occs, occs->data, len + 1);
-
- g_array_free (occs, TRUE);
-
- /* Skip to the next period, or exit the loop if finished. */
- if ((*vtable->find_next_position) (&occ, event_end,
- &recur_data, interval_end))
- break;
- }
-
- return all_occs;
-}
-
-
-static GArray*
-cal_obj_generate_set_yearly (RecurData *recur_data,
- CalRecurVTable *vtable,
- CalObjTime *occ)
-{
- CalRecurrence *recur = recur_data->recur;
- GArray *occs_arrays[4], *occs, *occs2;
- gint num_occs_arrays = 0, i;
-
- /* This is a bit complicated, since the iCalendar spec says that
- several BYxxx modifiers can be used simultaneously. So we have to
- be quite careful when determining the days of the occurrences.
- The BYHOUR, BYMINUTE & BYSECOND modifiers are no problem at all.
-
- The modifiers we have to worry about are: BYMONTH, BYWEEKNO,
- BYYEARDAY, BYMONTHDAY & BYDAY. We can't do these sequentially
- since each filter will mess up the results of the previous one.
- But they aren't all completely independant, e.g. BYMONTHDAY and
- BYDAY are related to BYMONTH, and BYDAY is related to BYWEEKNO.
-
- BYDAY & BYMONTHDAY can also be applied independently, which makes
- it worse. So we assume that if BYMONTH or BYWEEKNO is used, then
- the BYDAY modifier applies to those, else it is applied
- independantly.
-
- We expand the occurrences in parallel into the occs_arrays[] array,
- and then merge them all into one GArray before expanding BYHOUR,
- BYMINUTE & BYSECOND. */
-
- if (recur->bymonth) {
- occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
- g_array_append_vals (occs, occ, 1);
-
- occs = (*vtable->bymonth_filter) (recur_data, occs);
-
- /* If BYMONTHDAY & BYDAY are both set we need to expand them
- in parallel and add the results. */
- if (recur->bymonthday && recur->byday) {
- /* Copy the occs array. */
- occs2 = g_array_new (FALSE, FALSE,
- sizeof (CalObjTime));
- g_array_append_vals (occs2, occs->data, occs->len);
-
- occs = (*vtable->bymonthday_filter) (recur_data, occs);
- /* Note that we explicitly call the monthly version
- of the BYDAY expansion filter. */
- occs2 = cal_obj_byday_expand_monthly (recur_data,
- occs2);
-
- /* Add the 2 resulting arrays together. */
- g_array_append_vals (occs, occs2->data, occs2->len);
- g_array_free (occs2, TRUE);
- } else {
- occs = (*vtable->bymonthday_filter) (recur_data, occs);
- /* Note that we explicitly call the monthly version
- of the BYDAY expansion filter. */
- occs = cal_obj_byday_expand_monthly (recur_data, occs);
- }
-
- occs_arrays[num_occs_arrays++] = occs;
- }
-
- if (recur->byweekno) {
- occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
- g_array_append_vals (occs, occ, 1);
-
- occs = (*vtable->byweekno_filter) (recur_data, occs);
- /* Note that we explicitly call the weekly version of the
- BYDAY expansion filter. */
- occs = cal_obj_byday_expand_weekly (recur_data, occs);
-
- occs_arrays[num_occs_arrays++] = occs;
- }
-
- if (recur->byyearday) {
- occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
- g_array_append_vals (occs, occ, 1);
-
- occs = (*vtable->byyearday_filter) (recur_data, occs);
-
- occs_arrays[num_occs_arrays++] = occs;
- }
-
- /* If BYMONTHDAY is set, and BYMONTH is not set, we need to
- expand BYMONTHDAY independantly. */
- if (recur->bymonthday && !recur->bymonth) {
- occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
- g_array_append_vals (occs, occ, 1);
-
- occs = (*vtable->bymonthday_filter) (recur_data, occs);
-
- occs_arrays[num_occs_arrays++] = occs;
- }
-
- /* If BYDAY is set, and BYMONTH and BYWEEKNO are not set, we need to
- expand BYDAY independantly. */
- if (recur->byday && !recur->bymonth && !recur->byweekno) {
- occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
- g_array_append_vals (occs, occ, 1);
-
- occs = (*vtable->byday_filter) (recur_data, occs);
-
- occs_arrays[num_occs_arrays++] = occs;
- }
-
- /* Add all the arrays together. If no filters were used we just
- create an array with one element. */
- if (num_occs_arrays > 0) {
- occs = occs_arrays[0];
- for (i = 1; i < num_occs_arrays; i++) {
- occs2 = occs_arrays[i];
- g_array_append_vals (occs, occs2->data, occs2->len);
- g_array_free (occs2, TRUE);
- }
- } else {
- occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
- g_array_append_vals (occs, occ, 1);
- }
-
- /* Now expand BYHOUR, BYMINUTE & BYSECOND. */
- occs = (*vtable->byhour_filter) (recur_data, occs);
- occs = (*vtable->byminute_filter) (recur_data, occs);
- occs = (*vtable->bysecond_filter) (recur_data, occs);
-
- return occs;
-}
-
-
-static GArray*
-cal_obj_generate_set_monthly (RecurData *recur_data,
- CalRecurVTable *vtable,
- CalObjTime *occ)
-{
- GArray *occs, *occs2;
-
- /* We start with just the one time in each set. */
- occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
- g_array_append_vals (occs, occ, 1);
-
- occs = (*vtable->bymonth_filter) (recur_data, occs);
-
- /* We need to combine the output of BYMONTHDAY & BYDAY, by doing them
- in parallel rather than sequentially. If we did them sequentially
- then we would lose the occurrences generated by BYMONTHDAY, and
- instead have repetitions of the occurrences from BYDAY. */
- if (recur_data->recur->bymonthday && recur_data->recur->byday) {
- occs2 = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
- g_array_append_vals (occs2, occs->data, occs->len);
-
- occs = (*vtable->bymonthday_filter) (recur_data, occs);
- occs2 = (*vtable->byday_filter) (recur_data, occs2);
-
- g_array_append_vals (occs, occs2->data, occs2->len);
- g_array_free (occs2, TRUE);
- } else {
- occs = (*vtable->bymonthday_filter) (recur_data, occs);
- occs = (*vtable->byday_filter) (recur_data, occs);
- }
-
- occs = (*vtable->byhour_filter) (recur_data, occs);
- occs = (*vtable->byminute_filter) (recur_data, occs);
- occs = (*vtable->bysecond_filter) (recur_data, occs);
-
- return occs;
-}
-
-
-static GArray*
-cal_obj_generate_set_default (RecurData *recur_data,
- CalRecurVTable *vtable,
- CalObjTime *occ)
-{
- GArray *occs;
-
-#if 0
- g_print ("Generating set for %i/%i/%i %02i:%02i:%02i\n",
- occ->day, occ->month + 1, occ->year, occ->hour, occ->minute,
- occ->second);
-#endif
-
- /* We start with just the one time in the set. */
- occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
- g_array_append_vals (occs, occ, 1);
-
- occs = (*vtable->bymonth_filter) (recur_data, occs);
- if (vtable->byweekno_filter)
- occs = (*vtable->byweekno_filter) (recur_data, occs);
- if (vtable->byyearday_filter)
- occs = (*vtable->byyearday_filter) (recur_data, occs);
- if (vtable->bymonthday_filter)
- occs = (*vtable->bymonthday_filter) (recur_data, occs);
- occs = (*vtable->byday_filter) (recur_data, occs);
-
- occs = (*vtable->byhour_filter) (recur_data, occs);
- occs = (*vtable->byminute_filter) (recur_data, occs);
- occs = (*vtable->bysecond_filter) (recur_data, occs);
-
- return occs;
-}
-
-
-
-/* Returns the function table corresponding to the recurrence frequency. */
-static CalRecurVTable* cal_obj_get_vtable (icalrecurrencetype_frequency recur_type)
-{
- CalRecurVTable* vtable;
-
- switch (recur_type) {
- case ICAL_YEARLY_RECURRENCE:
- vtable = &cal_obj_yearly_vtable;
- break;
- case ICAL_MONTHLY_RECURRENCE:
- vtable = &cal_obj_monthly_vtable;
- break;
- case ICAL_WEEKLY_RECURRENCE:
- vtable = &cal_obj_weekly_vtable;
- break;
- case ICAL_DAILY_RECURRENCE:
- vtable = &cal_obj_daily_vtable;
- break;
- case ICAL_HOURLY_RECURRENCE:
- vtable = &cal_obj_hourly_vtable;
- break;
- case ICAL_MINUTELY_RECURRENCE:
- vtable = &cal_obj_minutely_vtable;
- break;
- case ICAL_SECONDLY_RECURRENCE:
- vtable = &cal_obj_secondly_vtable;
- break;
- default:
- g_warning ("Unknown recurrence frequenct");
- vtable = NULL;
- }
-
- return vtable;
-}
-
-
-/* This creates a number of fast lookup tables used when filtering with the
- modifier properties BYMONTH, BYYEARDAY etc. */
-static void
-cal_obj_initialize_recur_data (RecurData *recur_data,
- CalRecurrence *recur,
- CalObjTime *event_start)
-{
- GList *elem;
- gint month, yearday, monthday, weekday, week_num, hour, minute, second;
-
- /* Clear the entire RecurData. */
- memset (recur_data, 0, sizeof (RecurData));
-
- recur_data->recur = recur;
-
- /* Set the weekday, used for the WEEKLY frequency and the BYWEEKNO
- modifier. */
- recur_data->weekday_offset = cal_obj_time_weekday_offset (event_start,
- recur);
-
- /* Create an array of months from bymonths for fast lookup. */
- elem = recur->bymonth;
- while (elem) {
- month = GPOINTER_TO_INT (elem->data);
- recur_data->months[month] = 1;
- elem = elem->next;
- }
-
- /* Create an array of yeardays from byyearday for fast lookup.
- We create a second array to handle the negative values. The first
- element there corresponds to the last day of the year. */
- elem = recur->byyearday;
- while (elem) {
- yearday = GPOINTER_TO_INT (elem->data);
- if (yearday >= 0)
- recur_data->yeardays[yearday] = 1;
- else
- recur_data->neg_yeardays[-yearday] = 1;
- elem = elem->next;
- }
-
- /* Create an array of monthdays from bymonthday for fast lookup.
- We create a second array to handle the negative values. The first
- element there corresponds to the last day of the month. */
- elem = recur->bymonthday;
- while (elem) {
- monthday = GPOINTER_TO_INT (elem->data);
- if (monthday >= 0)
- recur_data->monthdays[monthday] = 1;
- else
- recur_data->neg_monthdays[-monthday] = 1;
- elem = elem->next;
- }
-
- /* Create an array of weekdays from byday for fast lookup. */
- elem = recur->byday;
- while (elem) {
- weekday = GPOINTER_TO_INT (elem->data);
- elem = elem->next;
- /* The week number is not used when filtering. */
- week_num = GPOINTER_TO_INT (elem->data);
- elem = elem->next;
-
- recur_data->weekdays[weekday] = 1;
- }
-
- /* Create an array of hours from byhour for fast lookup. */
- elem = recur->byhour;
- while (elem) {
- hour = GPOINTER_TO_INT (elem->data);
- recur_data->hours[hour] = 1;
- elem = elem->next;
- }
-
- /* Create an array of minutes from byminutes for fast lookup. */
- elem = recur->byminute;
- while (elem) {
- minute = GPOINTER_TO_INT (elem->data);
- recur_data->minutes[minute] = 1;
- elem = elem->next;
- }
-
- /* Create an array of seconds from byseconds for fast lookup. */
- elem = recur->bysecond;
- while (elem) {
- second = GPOINTER_TO_INT (elem->data);
- recur_data->seconds[second] = 1;
- elem = elem->next;
- }
-}
-
-
-static void
-cal_obj_sort_occurrences (GArray *occs)
-{
- qsort (occs->data, occs->len, sizeof (CalObjTime),
- cal_obj_time_compare_func);
-}
-
-
-static void
-cal_obj_remove_duplicates_and_invalid_dates (GArray *occs)
-{
- static const int days_in_month[12] = {
- 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
- };
-
- CalObjTime *occ, *prev_occ = NULL;
- gint len, i, j = 0, year, month, days;
- gboolean keep_occ;
-
- len = occs->len;
- for (i = 0; i < len; i++) {
- occ = &g_array_index (occs, CalObjTime, i);
- keep_occ = TRUE;
-
- if (prev_occ && cal_obj_time_compare_func (occ,
- prev_occ) == 0)
- keep_occ = FALSE;
-
- year = occ->year;
- month = occ->month;
- days = days_in_month[occ->month];
- /* If it is february and a leap year, add a day. */
- if (month == 1 && (year % 4 == 0
- && (year % 100 != 0
- || year % 400 == 0)))
- days++;
- if (occ->day > days)
- keep_occ = FALSE;
-
- if (keep_occ) {
- if (i != j)
- g_array_index (occs, CalObjTime, j)
- = g_array_index (occs, CalObjTime, i);
- j++;
- }
-
- prev_occ = occ;
- }
-
- g_array_set_size (occs, j);
-}
-
-
-/* Removes the exceptions from the ex_occs array from the occurrences in the
- occs array, and removes any duplicates. Both arrays are sorted. */
-static void
-cal_obj_remove_exceptions (GArray *occs,
- GArray *ex_occs)
-{
- CalObjTime *occ, *prev_occ = NULL, *ex_occ = NULL, *last_occ_kept;
- gint i, j = 0, cmp, ex_index, occs_len, ex_occs_len;
- gboolean keep_occ, current_time_is_exception = FALSE;
-
- if (occs->len == 0)
- return;
-
- ex_index = 0;
- occs_len = occs->len;
- ex_occs_len = ex_occs->len;
-
- if (ex_occs_len > 0)
- ex_occ = &g_array_index (ex_occs, CalObjTime, ex_index);
-
- for (i = 0; i < occs_len; i++) {
- occ = &g_array_index (occs, CalObjTime, i);
- keep_occ = TRUE;
-
- /* If the occurrence is a duplicate of the previous one, skip
- it. */
- if (prev_occ
- && cal_obj_time_compare_func (occ, prev_occ) == 0) {
- keep_occ = FALSE;
-
- /* If this occurrence is an RDATE, and the previous
- occurrence in the array was kept, set the RDATE flag
- of the last one, so we still use the end date
- or duration. */
- if (occ->is_rdate && !current_time_is_exception) {
- last_occ_kept = &g_array_index (occs,
- CalObjTime,
- j - 1);
- last_occ_kept->is_rdate = TRUE;
- }
- } else {
- /* We've found a new occurrence time. Reset the flag
- to indicate that it hasn't been found in the
- exceptions array (yet). */
- current_time_is_exception = FALSE;
-
- if (ex_occ) {
- /* Step through the exceptions until we come
- to one that matches or follows this
- occurrence. */
- while (ex_occ) {
- cmp = cal_obj_time_compare_func (ex_occ, occ);
- /* I'm pretty sure this is wrong. */
- /*cmp = cal_obj_date_only_compare_func (ex_occ, occ);*/
- if (cmp > 0)
- break;
-
- /* Move to the next exception, or set
- ex_occ to NULL when we reach the
- end of array. */
- ex_index++;
- if (ex_index < ex_occs_len)
- ex_occ = &g_array_index (ex_occs, CalObjTime, ex_index);
- else
- ex_occ = NULL;
-
- /* If the exception did match this
- occurrence we remove it, and set the
- flag to indicate that the current
- time is an exception. */
- if (cmp == 0) {
- current_time_is_exception = TRUE;
- keep_occ = FALSE;
- break;
- }
- }
- }
- }
-
- if (keep_occ) {
- if (i != j)
- g_array_index (occs, CalObjTime, j)
- = g_array_index (occs, CalObjTime, i);
- j++;
- }
-
- prev_occ = occ;
- }
-
- g_array_set_size (occs, j);
-}
-
-
-
-static GArray*
-cal_obj_bysetpos_filter (CalRecurrence *recur,
- GArray *occs)
-{
- GArray *new_occs;
- CalObjTime *occ;
- GList *elem;
- gint len, pos;
-
- /* If BYSETPOS has not been specified, or the array is empty, just
- return the array. */
- elem = recur->bysetpos;
- if (!elem || occs->len == 0)
- return occs;
-
- new_occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
-
- /* Iterate over the indices given in bysetpos, adding the corresponding
- element from occs to new_occs. */
- len = occs->len;
- while (elem) {
- pos = GPOINTER_TO_INT (elem->data);
-
- /* Negative values count back from the end of the array. */
- if (pos < 0)
- pos += len;
-
- if (pos >= 0 && pos < len) {
- occ = &g_array_index (occs, CalObjTime, pos);
- g_array_append_vals (new_occs, occ, 1);
- }
- elem = elem->next;
- }
-
- g_array_free (occs, TRUE);
-
- return new_occs;
-}
-
-
-
-
-/* Finds the first year from the event_start, counting in multiples of the
- recurrence interval, that intersects the given interval. It returns TRUE
- if there is no intersection. */
-static gboolean
-cal_obj_yearly_find_start_position (CalObjTime *event_start,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_start,
- CalObjTime *interval_end,
- CalObjTime *cotime)
-{
- *cotime = *event_start;
-
- /* Move on to the next interval, if the event starts before the
- given interval. */
- if (cotime->year < interval_start->year) {
- gint years = interval_start->year - cotime->year
- + recur_data->recur->interval - 1;
- years -= years % recur_data->recur->interval;
- /* NOTE: The day may now be invalid, e.g. 29th Feb. */
- cotime->year += years;
- }
-
- if ((event_end && cotime->year > event_end->year)
- || (interval_end && cotime->year > interval_end->year))
- return TRUE;
-
- return FALSE;
-}
-
-
-static gboolean
-cal_obj_yearly_find_next_position (CalObjTime *cotime,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_end)
-{
- /* NOTE: The day may now be invalid, e.g. 29th Feb. */
- cotime->year += recur_data->recur->interval;
-
- if ((event_end && cotime->year > event_end->year)
- || (interval_end && cotime->year > interval_end->year))
- return TRUE;
-
- return FALSE;
-}
-
-
-
-static gboolean
-cal_obj_monthly_find_start_position (CalObjTime *event_start,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_start,
- CalObjTime *interval_end,
- CalObjTime *cotime)
-{
- *cotime = *event_start;
-
- /* Move on to the next interval, if the event starts before the
- given interval. */
- if (cal_obj_time_compare (cotime, interval_start, CALOBJ_MONTH) < 0) {
- gint months = (interval_start->year - cotime->year) * 12
- + interval_start->month - cotime->month
- + recur_data->recur->interval - 1;
- months -= months % recur_data->recur->interval;
- /* NOTE: The day may now be invalid, e.g. 31st Sep. */
- cal_obj_time_add_months (cotime, months);
- }
-
- if (event_end && cal_obj_time_compare (cotime, event_end,
- CALOBJ_MONTH) > 0)
- return TRUE;
- if (interval_end && cal_obj_time_compare (cotime, interval_end,
- CALOBJ_MONTH) > 0)
- return TRUE;
-
- return FALSE;
-}
-
-
-static gboolean
-cal_obj_monthly_find_next_position (CalObjTime *cotime,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_end)
-{
- /* NOTE: The day may now be invalid, e.g. 31st Sep. */
- cal_obj_time_add_months (cotime, recur_data->recur->interval);
-
- if (event_end && cal_obj_time_compare (cotime, event_end,
- CALOBJ_MONTH) > 0)
- return TRUE;
- if (interval_end && cal_obj_time_compare (cotime, interval_end,
- CALOBJ_MONTH) > 0)
- return TRUE;
-
- return FALSE;
-}
-
-
-
-static gboolean
-cal_obj_weekly_find_start_position (CalObjTime *event_start,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_start,
- CalObjTime *interval_end,
- CalObjTime *cotime)
-{
- GDate event_start_date, interval_start_date;
- guint32 event_start_julian, interval_start_julian;
- gint interval_start_weekday_offset;
- CalObjTime week_start;
-
- if (event_end && cal_obj_time_compare (event_end, interval_start,
- CALOBJ_DAY) < 0)
- return TRUE;
- if (interval_end && cal_obj_time_compare (event_start, interval_end,
- CALOBJ_DAY) > 0)
- return TRUE;
-
- *cotime = *event_start;
-
- /* Convert the event start and interval start to GDates, so we can
- easily find the number of days between them. */
- g_date_clear (&event_start_date, 1);
- g_date_set_dmy (&event_start_date, event_start->day,
- event_start->month + 1, event_start->year);
- g_date_clear (&interval_start_date, 1);
- g_date_set_dmy (&interval_start_date, interval_start->day,
- interval_start->month + 1, interval_start->year);
-
- /* Calculate the start of the weeks corresponding to the event start
- and interval start. */
- event_start_julian = g_date_julian (&event_start_date);
- event_start_julian -= recur_data->weekday_offset;
-
- interval_start_julian = g_date_julian (&interval_start_date);
- interval_start_weekday_offset = cal_obj_time_weekday_offset (interval_start, recur_data->recur);
- interval_start_julian -= interval_start_weekday_offset;
-
- /* We want to find the first full week using the recurrence interval
- that intersects the given interval dates. */
- if (event_start_julian < interval_start_julian) {
- gint weeks = (interval_start_julian - event_start_julian) / 7;
- weeks += recur_data->recur->interval - 1;
- weeks -= weeks % recur_data->recur->interval;
- cal_obj_time_add_days (cotime, weeks * 7);
- }
-
- week_start = *cotime;
- cal_obj_time_add_days (&week_start, -recur_data->weekday_offset);
-
- if (event_end && cal_obj_time_compare (&week_start, event_end,
- CALOBJ_DAY) > 0)
- return TRUE;
- if (interval_end && cal_obj_time_compare (&week_start, interval_end,
- CALOBJ_DAY) > 0)
- return TRUE;
-
- return FALSE;
-}
-
-
-static gboolean
-cal_obj_weekly_find_next_position (CalObjTime *cotime,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_end)
-{
- CalObjTime week_start;
-
- cal_obj_time_add_days (cotime, recur_data->recur->interval * 7);
-
- /* Return TRUE if the start of this week is after the event finishes
- or is after the end of the required interval. */
- week_start = *cotime;
- cal_obj_time_add_days (&week_start, -recur_data->weekday_offset);
-
-#ifdef CAL_OBJ_DEBUG
- g_print ("Next day: %s\n", cal_obj_time_to_string (cotime));
- g_print ("Week Start: %s\n", cal_obj_time_to_string (&week_start));
-#endif
-
- if (event_end && cal_obj_time_compare (&week_start, event_end,
- CALOBJ_DAY) > 0)
- return TRUE;
- if (interval_end && cal_obj_time_compare (&week_start, interval_end,
- CALOBJ_DAY) > 0) {
-#ifdef CAL_OBJ_DEBUG
- g_print ("Interval end reached: %s\n",
- cal_obj_time_to_string (interval_end));
-#endif
- return TRUE;
- }
-
- return FALSE;
-}
-
-
-static gboolean
-cal_obj_daily_find_start_position (CalObjTime *event_start,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_start,
- CalObjTime *interval_end,
- CalObjTime *cotime)
-{
- GDate event_start_date, interval_start_date;
- guint32 event_start_julian, interval_start_julian, days;
-
- if (interval_end && cal_obj_time_compare (event_start, interval_end,
- CALOBJ_DAY) > 0)
- return TRUE;
- if (event_end && cal_obj_time_compare (event_end, interval_start,
- CALOBJ_DAY) < 0)
- return TRUE;
-
- *cotime = *event_start;
-
- /* Convert the event start and interval start to GDates, so we can
- easily find the number of days between them. */
- g_date_clear (&event_start_date, 1);
- g_date_set_dmy (&event_start_date, event_start->day,
- event_start->month + 1, event_start->year);
- g_date_clear (&interval_start_date, 1);
- g_date_set_dmy (&interval_start_date, interval_start->day,
- interval_start->month + 1, interval_start->year);
-
- event_start_julian = g_date_julian (&event_start_date);
- interval_start_julian = g_date_julian (&interval_start_date);
-
- if (event_start_julian < interval_start_julian) {
- days = interval_start_julian - event_start_julian
- + recur_data->recur->interval - 1;
- days -= days % recur_data->recur->interval;
- cal_obj_time_add_days (cotime, days);
- }
-
- if (event_end && cal_obj_time_compare (cotime, event_end,
- CALOBJ_DAY) > 0)
- return TRUE;
- if (interval_end && cal_obj_time_compare (cotime, interval_end,
- CALOBJ_DAY) > 0)
- return TRUE;
-
- return FALSE;
-}
-
-
-static gboolean
-cal_obj_daily_find_next_position (CalObjTime *cotime,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_end)
-{
- cal_obj_time_add_days (cotime, recur_data->recur->interval);
-
- if (event_end && cal_obj_time_compare (cotime, event_end,
- CALOBJ_DAY) > 0)
- return TRUE;
- if (interval_end && cal_obj_time_compare (cotime, interval_end,
- CALOBJ_DAY) > 0)
- return TRUE;
-
- return FALSE;
-}
-
-
-static gboolean
-cal_obj_hourly_find_start_position (CalObjTime *event_start,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_start,
- CalObjTime *interval_end,
- CalObjTime *cotime)
-{
- GDate event_start_date, interval_start_date;
- guint32 event_start_julian, interval_start_julian, hours;
-
- if (interval_end && cal_obj_time_compare (event_start, interval_end,
- CALOBJ_HOUR) > 0)
- return TRUE;
- if (event_end && cal_obj_time_compare (event_end, interval_start,
- CALOBJ_HOUR) < 0)
- return TRUE;
-
- *cotime = *event_start;
-
- if (cal_obj_time_compare (event_start, interval_start,
- CALOBJ_HOUR) < 0) {
- /* Convert the event start and interval start to GDates, so we
- can easily find the number of days between them. */
- g_date_clear (&event_start_date, 1);
- g_date_set_dmy (&event_start_date, event_start->day,
- event_start->month + 1, event_start->year);
- g_date_clear (&interval_start_date, 1);
- g_date_set_dmy (&interval_start_date, interval_start->day,
- interval_start->month + 1,
- interval_start->year);
-
- event_start_julian = g_date_julian (&event_start_date);
- interval_start_julian = g_date_julian (&interval_start_date);
-
- hours = (interval_start_julian - event_start_julian) * 24;
- hours += interval_start->hour - event_start->hour;
- hours += recur_data->recur->interval - 1;
- hours -= hours % recur_data->recur->interval;
- cal_obj_time_add_hours (cotime, hours);
- }
-
- if (event_end && cal_obj_time_compare (cotime, event_end,
- CALOBJ_HOUR) > 0)
- return TRUE;
- if (interval_end && cal_obj_time_compare (cotime, interval_end,
- CALOBJ_HOUR) > 0)
- return TRUE;
-
- return FALSE;
-}
-
-
-static gboolean
-cal_obj_hourly_find_next_position (CalObjTime *cotime,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_end)
-{
- cal_obj_time_add_hours (cotime, recur_data->recur->interval);
-
- if (event_end && cal_obj_time_compare (cotime, event_end,
- CALOBJ_HOUR) > 0)
- return TRUE;
- if (interval_end && cal_obj_time_compare (cotime, interval_end,
- CALOBJ_HOUR) > 0)
- return TRUE;
-
- return FALSE;
-}
-
-
-static gboolean
-cal_obj_minutely_find_start_position (CalObjTime *event_start,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_start,
- CalObjTime *interval_end,
- CalObjTime *cotime)
-{
- GDate event_start_date, interval_start_date;
- guint32 event_start_julian, interval_start_julian, minutes;
-
- if (interval_end && cal_obj_time_compare (event_start, interval_end,
- CALOBJ_MINUTE) > 0)
- return TRUE;
- if (event_end && cal_obj_time_compare (event_end, interval_start,
- CALOBJ_MINUTE) < 0)
- return TRUE;
-
- *cotime = *event_start;
-
- if (cal_obj_time_compare (event_start, interval_start,
- CALOBJ_MINUTE) < 0) {
- /* Convert the event start and interval start to GDates, so we
- can easily find the number of days between them. */
- g_date_clear (&event_start_date, 1);
- g_date_set_dmy (&event_start_date, event_start->day,
- event_start->month + 1, event_start->year);
- g_date_clear (&interval_start_date, 1);
- g_date_set_dmy (&interval_start_date, interval_start->day,
- interval_start->month + 1,
- interval_start->year);
-
- event_start_julian = g_date_julian (&event_start_date);
- interval_start_julian = g_date_julian (&interval_start_date);
-
- minutes = (interval_start_julian - event_start_julian)
- * 24 * 60;
- minutes += (interval_start->hour - event_start->hour) * 24;
- minutes += interval_start->minute - event_start->minute;
- minutes += recur_data->recur->interval - 1;
- minutes -= minutes % recur_data->recur->interval;
- cal_obj_time_add_minutes (cotime, minutes);
- }
-
- if (event_end && cal_obj_time_compare (cotime, event_end,
- CALOBJ_MINUTE) > 0)
- return TRUE;
- if (interval_end && cal_obj_time_compare (cotime, interval_end,
- CALOBJ_MINUTE) > 0)
- return TRUE;
-
- return FALSE;
-}
-
-
-static gboolean
-cal_obj_minutely_find_next_position (CalObjTime *cotime,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_end)
-{
- cal_obj_time_add_minutes (cotime, recur_data->recur->interval);
-
- if (event_end && cal_obj_time_compare (cotime, event_end,
- CALOBJ_MINUTE) > 0)
- return TRUE;
- if (interval_end && cal_obj_time_compare (cotime, interval_end,
- CALOBJ_MINUTE) > 0)
- return TRUE;
-
- return FALSE;
-}
-
-
-static gboolean
-cal_obj_secondly_find_start_position (CalObjTime *event_start,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_start,
- CalObjTime *interval_end,
- CalObjTime *cotime)
-{
- GDate event_start_date, interval_start_date;
- guint32 event_start_julian, interval_start_julian, seconds;
-
- if (interval_end && cal_obj_time_compare (event_start, interval_end,
- CALOBJ_SECOND) > 0)
- return TRUE;
- if (event_end && cal_obj_time_compare (event_end, interval_start,
- CALOBJ_SECOND) < 0)
- return TRUE;
-
- *cotime = *event_start;
-
- if (cal_obj_time_compare (event_start, interval_start,
- CALOBJ_SECOND) < 0) {
- /* Convert the event start and interval start to GDates, so we
- can easily find the number of days between them. */
- g_date_clear (&event_start_date, 1);
- g_date_set_dmy (&event_start_date, event_start->day,
- event_start->month + 1, event_start->year);
- g_date_clear (&interval_start_date, 1);
- g_date_set_dmy (&interval_start_date, interval_start->day,
- interval_start->month + 1,
- interval_start->year);
-
- event_start_julian = g_date_julian (&event_start_date);
- interval_start_julian = g_date_julian (&interval_start_date);
-
- seconds = (interval_start_julian - event_start_julian)
- * 24 * 60 * 60;
- seconds += (interval_start->hour - event_start->hour)
- * 24 * 60;
- seconds += (interval_start->minute - event_start->minute) * 60;
- seconds += interval_start->second - event_start->second;
- seconds += recur_data->recur->interval - 1;
- seconds -= seconds % recur_data->recur->interval;
- cal_obj_time_add_seconds (cotime, seconds);
- }
-
- if (event_end && cal_obj_time_compare (cotime, event_end,
- CALOBJ_SECOND) >= 0)
- return TRUE;
- if (interval_end && cal_obj_time_compare (cotime, interval_end,
- CALOBJ_SECOND) >= 0)
- return TRUE;
-
- return FALSE;
-}
-
-
-static gboolean
-cal_obj_secondly_find_next_position (CalObjTime *cotime,
- CalObjTime *event_end,
- RecurData *recur_data,
- CalObjTime *interval_end)
-{
- cal_obj_time_add_seconds (cotime, recur_data->recur->interval);
-
- if (event_end && cal_obj_time_compare (cotime, event_end,
- CALOBJ_SECOND) >= 0)
- return TRUE;
- if (interval_end && cal_obj_time_compare (cotime, interval_end,
- CALOBJ_SECOND) >= 0)
- return TRUE;
-
- return FALSE;
-}
-
-
-
-
-
-/* If the BYMONTH rule is specified it expands each occurrence in occs, by
- using each of the months in the bymonth list. */
-static GArray*
-cal_obj_bymonth_expand (RecurData *recur_data,
- GArray *occs)
-{
- GArray *new_occs;
- CalObjTime *occ;
- GList *elem;
- gint len, i;
-
- /* If BYMONTH has not been specified, or the array is empty, just
- return the array. */
- if (!recur_data->recur->bymonth || occs->len == 0)
- return occs;
-
- new_occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
-
- len = occs->len;
- for (i = 0; i < len; i++) {
- occ = &g_array_index (occs, CalObjTime, i);
-
- elem = recur_data->recur->bymonth;
- while (elem) {
- /* NOTE: The day may now be invalid, e.g. 31st Feb. */
- occ->month = GPOINTER_TO_INT (elem->data);
- g_array_append_vals (new_occs, occ, 1);
- elem = elem->next;
- }
- }
-
- g_array_free (occs, TRUE);
-
- return new_occs;
-}
-
-
-/* If the BYMONTH rule is specified it filters out all occurrences in occs
- which do not match one of the months in the bymonth list. */
-static GArray*
-cal_obj_bymonth_filter (RecurData *recur_data,
- GArray *occs)
-{
- GArray *new_occs;
- CalObjTime *occ;
- gint len, i;
-
- /* If BYMONTH has not been specified, or the array is empty, just
- return the array. */
- if (!recur_data->recur->bymonth || occs->len == 0)
- return occs;
-
- new_occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
-
- len = occs->len;
- for (i = 0; i < len; i++) {
- occ = &g_array_index (occs, CalObjTime, i);
- if (recur_data->months[occ->month])
- g_array_append_vals (new_occs, occ, 1);
- }
-
- g_array_free (occs, TRUE);
-
- return new_occs;
-}
-
-
-
-static GArray*
-cal_obj_byweekno_expand (RecurData *recur_data,
- GArray *occs)
-{
- GArray *new_occs;
- CalObjTime *occ, year_start_cotime, year_end_cotime, cotime;
- GList *elem;
- gint len, i, weekno;
-
- /* If BYWEEKNO has not been specified, or the array is empty, just
- return the array. */
- if (!recur_data->recur->byweekno || occs->len == 0)
- return occs;
-
- new_occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
-
- len = occs->len;
- for (i = 0; i < len; i++) {
- occ = &g_array_index (occs, CalObjTime, i);
-
- /* Find the day that would correspond to week 1 (note that
- week 1 is the first week starting from the specified week
- start day that has 4 days in the new year). */
- year_start_cotime = *occ;
- cal_obj_time_find_first_week (&year_start_cotime,
- recur_data);
-
- /* Find the day that would correspond to week 1 of the next
- year, which we use for -ve week numbers. */
- year_end_cotime = *occ;
- year_end_cotime.year++;
- cal_obj_time_find_first_week (&year_end_cotime,
- recur_data);
-
- /* Now iterate over the week numbers in byweekno, generating a
- new occurrence for each one. */
- elem = recur_data->recur->byweekno;
- while (elem) {
- weekno = GPOINTER_TO_INT (elem->data);
- if (weekno > 0) {
- cotime = year_start_cotime;
- cal_obj_time_add_days (&cotime,
- (weekno - 1) * 7);
- } else {
- cotime = year_end_cotime;
- cal_obj_time_add_days (&cotime, weekno * 7);
- }
-
- /* Skip occurrences if they fall outside the year. */
- if (cotime.year == occ->year)
- g_array_append_val (new_occs, cotime);
- elem = elem->next;
- }
- }
-
- g_array_free (occs, TRUE);
-
- return new_occs;
-}
-
-
-#if 0
-/* This isn't used at present. */
-static GArray*
-cal_obj_byweekno_filter (RecurData *recur_data,
- GArray *occs)
-{
-
- return occs;
-}
-#endif
-
-
-static GArray*
-cal_obj_byyearday_expand (RecurData *recur_data,
- GArray *occs)
-{
- GArray *new_occs;
- CalObjTime *occ, year_start_cotime, year_end_cotime, cotime;
- GList *elem;
- gint len, i, dayno;
-
- /* If BYYEARDAY has not been specified, or the array is empty, just
- return the array. */
- if (!recur_data->recur->byyearday || occs->len == 0)
- return occs;
-
- new_occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
-
- len = occs->len;
- for (i = 0; i < len; i++) {
- occ = &g_array_index (occs, CalObjTime, i);
-
- /* Find the day that would correspond to day 1. */
- year_start_cotime = *occ;
- year_start_cotime.month = 0;
- year_start_cotime.day = 1;
-
- /* Find the day that would correspond to day 1 of the next
- year, which we use for -ve day numbers. */
- year_end_cotime = *occ;
- year_end_cotime.year++;
- year_end_cotime.month = 0;
- year_end_cotime.day = 1;
-
- /* Now iterate over the day numbers in byyearday, generating a
- new occurrence for each one. */
- elem = recur_data->recur->byyearday;
- while (elem) {
- dayno = GPOINTER_TO_INT (elem->data);
- if (dayno > 0) {
- cotime = year_start_cotime;
- cal_obj_time_add_days (&cotime, dayno - 1);
- } else {
- cotime = year_end_cotime;
- cal_obj_time_add_days (&cotime, dayno);
- }
-
- /* Skip occurrences if they fall outside the year. */
- if (cotime.year == occ->year)
- g_array_append_val (new_occs, cotime);
- elem = elem->next;
- }
- }
-
- g_array_free (occs, TRUE);
-
- return new_occs;
-}
-
-
-/* Note: occs must not contain invalid dates, e.g. 31st September. */
-static GArray*
-cal_obj_byyearday_filter (RecurData *recur_data,
- GArray *occs)
-{
- GArray *new_occs;
- CalObjTime *occ;
- gint yearday, len, i, days_in_year;
-
- /* If BYYEARDAY has not been specified, or the array is empty, just
- return the array. */
- if (!recur_data->recur->byyearday || occs->len == 0)
- return occs;
-
- new_occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
-
- len = occs->len;
- for (i = 0; i < len; i++) {
- occ = &g_array_index (occs, CalObjTime, i);
- yearday = cal_obj_time_day_of_year (occ);
- if (recur_data->yeardays[yearday]) {
- g_array_append_vals (new_occs, occ, 1);
- } else {
- days_in_year = g_date_is_leap_year (occ->year)
- ? 366 : 365;
- if (recur_data->neg_yeardays[days_in_year + 1
- - yearday])
- g_array_append_vals (new_occs, occ, 1);
- }
- }
-
- g_array_free (occs, TRUE);
-
- return new_occs;
-}
-
-
-
-static GArray*
-cal_obj_bymonthday_expand (RecurData *recur_data,
- GArray *occs)
-{
- GArray *new_occs;
- CalObjTime *occ, month_start_cotime, month_end_cotime, cotime;
- GList *elem;
- gint len, i, dayno;
-
- /* If BYMONTHDAY has not been specified, or the array is empty, just
- return the array. */
- if (!recur_data->recur->bymonthday || occs->len == 0)
- return occs;
-
- new_occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
-
- len = occs->len;
- for (i = 0; i < len; i++) {
- occ = &g_array_index (occs, CalObjTime, i);
-
- /* Find the day that would correspond to day 1. */
- month_start_cotime = *occ;
- month_start_cotime.day = 1;
-
- /* Find the day that would correspond to day 1 of the next
- month, which we use for -ve day numbers. */
- month_end_cotime = *occ;
- month_end_cotime.month++;
- month_end_cotime.day = 1;
-
- /* Now iterate over the day numbers in bymonthday, generating a
- new occurrence for each one. */
- elem = recur_data->recur->bymonthday;
- while (elem) {
- dayno = GPOINTER_TO_INT (elem->data);
- if (dayno > 0) {
- cotime = month_start_cotime;
- cal_obj_time_add_days (&cotime, dayno - 1);
- } else {
- cotime = month_end_cotime;
- cal_obj_time_add_days (&cotime, dayno);
- }
-
- /* Skip occurrences if they fall outside the month. */
- if (cotime.month == occ->month)
- g_array_append_val (new_occs, cotime);
- elem = elem->next;
- }
- }
-
- g_array_free (occs, TRUE);
-
- return new_occs;
-}
-
-
-static GArray*
-cal_obj_bymonthday_filter (RecurData *recur_data,
- GArray *occs)
-{
- GArray *new_occs;
- CalObjTime *occ;
- gint len, i, days_in_month;
-
- /* If BYMONTHDAY has not been specified, or the array is empty, just
- return the array. */
- if (!recur_data->recur->bymonthday || occs->len == 0)
- return occs;
-
- new_occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
-
- len = occs->len;
- for (i = 0; i < len; i++) {
- occ = &g_array_index (occs, CalObjTime, i);
- if (recur_data->monthdays[occ->day]) {
- g_array_append_vals (new_occs, occ, 1);
- } else {
- days_in_month = time_days_in_month (occ->year,
- occ->month);
- if (recur_data->neg_monthdays[days_in_month + 1
- - occ->day])
- g_array_append_vals (new_occs, occ, 1);
- }
- }
-
- g_array_free (occs, TRUE);
-
- return new_occs;
-}
-
-
-
-static GArray*
-cal_obj_byday_expand_yearly (RecurData *recur_data,
- GArray *occs)
-{
- GArray *new_occs;
- CalObjTime *occ;
- GList *elem;
- gint len, i, weekday, week_num;
- gint first_weekday, last_weekday, offset;
- guint16 year;
-
- /* If BYDAY has not been specified, or the array is empty, just
- return the array. */
- if (!recur_data->recur->byday || occs->len == 0)
- return occs;
-
- new_occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
-
- len = occs->len;
- for (i = 0; i < len; i++) {
- occ = &g_array_index (occs, CalObjTime, i);
-
- elem = recur_data->recur->byday;
- while (elem) {
- weekday = GPOINTER_TO_INT (elem->data);
- elem = elem->next;
- week_num = GPOINTER_TO_INT (elem->data);
- elem = elem->next;
-
- year = occ->year;
- if (week_num == 0) {
- /* Expand to every Mon/Tue/etc. in the year. */
- occ->month = 0;
- occ->day = 1;
- first_weekday = cal_obj_time_weekday (occ);
- offset = (weekday + 7 - first_weekday) % 7;
- cal_obj_time_add_days (occ, offset);
-
- while (occ->year == year) {
- g_array_append_vals (new_occs, occ, 1);
- cal_obj_time_add_days (occ, 7);
- }
-
- } else if (week_num > 0) {
- /* Add the nth Mon/Tue/etc. in the year. */
- occ->month = 0;
- occ->day = 1;
- first_weekday = cal_obj_time_weekday (occ);
- offset = (weekday + 7 - first_weekday) % 7;
- offset += (week_num - 1) * 7;
- cal_obj_time_add_days (occ, offset);
- if (occ->year == year)
- g_array_append_vals (new_occs, occ, 1);
-
- } else {
- /* Add the -nth Mon/Tue/etc. in the year. */
- occ->month = 11;
- occ->day = 31;
- last_weekday = cal_obj_time_weekday (occ);
- offset = (last_weekday + 7 - weekday) % 7;
- offset += (week_num - 1) * 7;
- cal_obj_time_add_days (occ, -offset);
- if (occ->year == year)
- g_array_append_vals (new_occs, occ, 1);
- }
-
- /* Reset the year, as we may have gone past the end. */
- occ->year = year;
- }
- }
-
- g_array_free (occs, TRUE);
-
- return new_occs;
-}
-
-
-static GArray*
-cal_obj_byday_expand_monthly (RecurData *recur_data,
- GArray *occs)
-{
- GArray *new_occs;
- CalObjTime *occ;
- GList *elem;
- gint len, i, weekday, week_num;
- gint first_weekday, last_weekday, offset;
- guint16 year;
- guint8 month;
-
- /* If BYDAY has not been specified, or the array is empty, just
- return the array. */
- if (!recur_data->recur->byday || occs->len == 0)
- return occs;
-
- new_occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
-
- len = occs->len;
- for (i = 0; i < len; i++) {
- occ = &g_array_index (occs, CalObjTime, i);
-
- elem = recur_data->recur->byday;
- while (elem) {
- weekday = GPOINTER_TO_INT (elem->data);
- elem = elem->next;
- week_num = GPOINTER_TO_INT (elem->data);
- elem = elem->next;
-
- year = occ->year;
- month = occ->month;
- if (week_num == 0) {
- /* Expand to every Mon/Tue/etc. in the month.*/
- occ->day = 1;
- first_weekday = cal_obj_time_weekday (occ);
- offset = (weekday + 7 - first_weekday) % 7;
- cal_obj_time_add_days (occ, offset);
-
- while (occ->year == year
- && occ->month == month) {
- g_array_append_vals (new_occs, occ, 1);
- cal_obj_time_add_days (occ, 7);
- }
-
- } else if (week_num > 0) {
- /* Add the nth Mon/Tue/etc. in the month. */
- occ->day = 1;
- first_weekday = cal_obj_time_weekday (occ);
- offset = (weekday + 7 - first_weekday) % 7;
- offset += (week_num - 1) * 7;
- cal_obj_time_add_days (occ, offset);
- if (occ->year == year && occ->month == month)
- g_array_append_vals (new_occs, occ, 1);
-
- } else {
- /* Add the -nth Mon/Tue/etc. in the month. */
- occ->day = time_days_in_month (occ->year,
- occ->month);
- last_weekday = cal_obj_time_weekday (occ);
- offset = (last_weekday + 7 - weekday) % 7;
- offset += (week_num - 1) * 7;
- cal_obj_time_add_days (occ, -offset);
- if (occ->year == year && occ->month == month)
- g_array_append_vals (new_occs, occ, 1);
- }
-
- /* Reset the year & month, as we may have gone past
- the end. */
- occ->year = year;
- occ->month = month;
- }
- }
-
- g_array_free (occs, TRUE);
-
- return new_occs;
-}
-
-
-/* Note: occs must not contain invalid dates, e.g. 31st September. */
-static GArray*
-cal_obj_byday_expand_weekly (RecurData *recur_data,
- GArray *occs)
-{
- GArray *new_occs;
- CalObjTime *occ;
- GList *elem;
- gint len, i, weekday, week_num;
- gint weekday_offset, new_weekday_offset;
-
- /* If BYDAY has not been specified, or the array is empty, just
- return the array. */
- if (!recur_data->recur->byday || occs->len == 0)
- return occs;
-
- new_occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
-
- len = occs->len;
- for (i = 0; i < len; i++) {
- occ = &g_array_index (occs, CalObjTime, i);
-
- elem = recur_data->recur->byday;
- while (elem) {
- weekday = GPOINTER_TO_INT (elem->data);
- elem = elem->next;
-
- /* FIXME: Currently we just ignore this, but maybe we
- should skip all elements where week_num != 0.
- The spec isn't clear about this. */
- week_num = GPOINTER_TO_INT (elem->data);
- elem = elem->next;
-
- weekday_offset = cal_obj_time_weekday_offset (occ, recur_data->recur);
- new_weekday_offset = (weekday + 7 - recur_data->recur->week_start_day) % 7;
- cal_obj_time_add_days (occ, new_weekday_offset - weekday_offset);
- g_array_append_vals (new_occs, occ, 1);
- }
- }
-
- g_array_free (occs, TRUE);
-
- return new_occs;
-}
-
-
-/* Note: occs must not contain invalid dates, e.g. 31st September. */
-static GArray*
-cal_obj_byday_filter (RecurData *recur_data,
- GArray *occs)
-{
- GArray *new_occs;
- CalObjTime *occ;
- gint len, i, weekday;
-
- /* If BYDAY has not been specified, or the array is empty, just
- return the array. */
- if (!recur_data->recur->byday || occs->len == 0)
- return occs;
-
- new_occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
-
- len = occs->len;
- for (i = 0; i < len; i++) {
- occ = &g_array_index (occs, CalObjTime, i);
- weekday = cal_obj_time_weekday (occ);
-
- /* See if the weekday on its own is set. */
- if (recur_data->weekdays[weekday])
- g_array_append_vals (new_occs, occ, 1);
- }
-
- g_array_free (occs, TRUE);
-
- return new_occs;
-}
-
-
-
-/* If the BYHOUR rule is specified it expands each occurrence in occs, by
- using each of the hours in the byhour list. */
-static GArray*
-cal_obj_byhour_expand (RecurData *recur_data,
- GArray *occs)
-{
- GArray *new_occs;
- CalObjTime *occ;
- GList *elem;
- gint len, i;
-
- /* If BYHOUR has not been specified, or the array is empty, just
- return the array. */
- if (!recur_data->recur->byhour || occs->len == 0)
- return occs;
-
- new_occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
-
- len = occs->len;
- for (i = 0; i < len; i++) {
- occ = &g_array_index (occs, CalObjTime, i);
-
- elem = recur_data->recur->byhour;
- while (elem) {
- occ->hour = GPOINTER_TO_INT (elem->data);
- g_array_append_vals (new_occs, occ, 1);
- elem = elem->next;
- }
- }
-
- g_array_free (occs, TRUE);
-
- return new_occs;
-}
-
-
-/* If the BYHOUR rule is specified it filters out all occurrences in occs
- which do not match one of the hours in the byhour list. */
-static GArray*
-cal_obj_byhour_filter (RecurData *recur_data,
- GArray *occs)
-{
- GArray *new_occs;
- CalObjTime *occ;
- gint len, i;
-
- /* If BYHOUR has not been specified, or the array is empty, just
- return the array. */
- if (!recur_data->recur->byhour || occs->len == 0)
- return occs;
-
- new_occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
-
- len = occs->len;
- for (i = 0; i < len; i++) {
- occ = &g_array_index (occs, CalObjTime, i);
- if (recur_data->hours[occ->hour])
- g_array_append_vals (new_occs, occ, 1);
- }
-
- g_array_free (occs, TRUE);
-
- return new_occs;
-}
-
-
-
-/* If the BYMINUTE rule is specified it expands each occurrence in occs, by
- using each of the minutes in the byminute list. */
-static GArray*
-cal_obj_byminute_expand (RecurData *recur_data,
- GArray *occs)
-{
- GArray *new_occs;
- CalObjTime *occ;
- GList *elem;
- gint len, i;
-
- /* If BYMINUTE has not been specified, or the array is empty, just
- return the array. */
- if (!recur_data->recur->byminute || occs->len == 0)
- return occs;
-
- new_occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
-
- len = occs->len;
- for (i = 0; i < len; i++) {
- occ = &g_array_index (occs, CalObjTime, i);
-
- elem = recur_data->recur->byminute;
- while (elem) {
- occ->minute = GPOINTER_TO_INT (elem->data);
- g_array_append_vals (new_occs, occ, 1);
- elem = elem->next;
- }
- }
-
- g_array_free (occs, TRUE);
-
- return new_occs;
-}
-
-
-/* If the BYMINUTE rule is specified it filters out all occurrences in occs
- which do not match one of the minutes in the byminute list. */
-static GArray*
-cal_obj_byminute_filter (RecurData *recur_data,
- GArray *occs)
-{
- GArray *new_occs;
- CalObjTime *occ;
- gint len, i;
-
- /* If BYMINUTE has not been specified, or the array is empty, just
- return the array. */
- if (!recur_data->recur->byminute || occs->len == 0)
- return occs;
-
- new_occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
-
- len = occs->len;
- for (i = 0; i < len; i++) {
- occ = &g_array_index (occs, CalObjTime, i);
- if (recur_data->minutes[occ->minute])
- g_array_append_vals (new_occs, occ, 1);
- }
-
- g_array_free (occs, TRUE);
-
- return new_occs;
-}
-
-
-
-/* If the BYSECOND rule is specified it expands each occurrence in occs, by
- using each of the seconds in the bysecond list. */
-static GArray*
-cal_obj_bysecond_expand (RecurData *recur_data,
- GArray *occs)
-{
- GArray *new_occs;
- CalObjTime *occ;
- GList *elem;
- gint len, i;
-
- /* If BYSECOND has not been specified, or the array is empty, just
- return the array. */
- if (!recur_data->recur->bysecond || occs->len == 0)
- return occs;
-
- new_occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
-
- len = occs->len;
- for (i = 0; i < len; i++) {
- occ = &g_array_index (occs, CalObjTime, i);
-
- elem = recur_data->recur->bysecond;
- while (elem) {
- occ->second = GPOINTER_TO_INT (elem->data);
- g_array_append_vals (new_occs, occ, 1);
- elem = elem->next;
- }
- }
-
- g_array_free (occs, TRUE);
-
- return new_occs;
-}
-
-
-/* If the BYSECOND rule is specified it filters out all occurrences in occs
- which do not match one of the seconds in the bysecond list. */
-static GArray*
-cal_obj_bysecond_filter (RecurData *recur_data,
- GArray *occs)
-{
- GArray *new_occs;
- CalObjTime *occ;
- gint len, i;
-
- /* If BYSECOND has not been specified, or the array is empty, just
- return the array. */
- if (!recur_data->recur->bysecond || occs->len == 0)
- return occs;
-
- new_occs = g_array_new (FALSE, FALSE, sizeof (CalObjTime));
-
- len = occs->len;
- for (i = 0; i < len; i++) {
- occ = &g_array_index (occs, CalObjTime, i);
- if (recur_data->seconds[occ->second])
- g_array_append_vals (new_occs, occ, 1);
- }
-
- g_array_free (occs, TRUE);
-
- return new_occs;
-}
-
-
-
-
-
-/* Adds a positive or negative number of months to the given CalObjTime,
- updating the year appropriately so we end up with a valid month.
- Note that the day may be invalid, e.g. 30th Feb. */
-static void
-cal_obj_time_add_months (CalObjTime *cotime,
- gint months)
-{
- guint month, years;
-
- /* We use a guint to avoid overflow on the guint8. */
- month = cotime->month + months;
- cotime->month = month % 12;
- if (month > 0) {
- cotime->year += month / 12;
- } else {
- years = month / 12;
- if (cotime->month != 0) {
- cotime->month += 12;
- years -= 1;
- }
- cotime->year += years;
- }
-}
-
-
-/* Adds a positive or negative number of days to the given CalObjTime,
- updating the month and year appropriately so we end up with a valid day. */
-static void
-cal_obj_time_add_days (CalObjTime *cotime,
- gint days)
-{
- gint day, days_in_month;
-
- /* We use a guint to avoid overflow on the guint8. */
- day = cotime->day;
- day += days;
-
- if (days >= 0) {
- for (;;) {
- days_in_month = time_days_in_month (cotime->year,
- cotime->month);
- if (day <= days_in_month)
- break;
-
- cotime->month++;
- if (cotime->month >= 12) {
- cotime->year++;
- cotime->month = 0;
- }
-
- day -= days_in_month;
- }
-
- cotime->day = (guint8) day;
- } else {
- while (day <= 0) {
- if (cotime->month == 0) {
- cotime->year--;
- cotime->month = 11;
- } else {
- cotime->month--;
- }
-
- days_in_month = time_days_in_month (cotime->year,
- cotime->month);
- day += days_in_month;
- }
-
- cotime->day = (guint8) day;
- }
-}
-
-
-/* Adds a positive or negative number of hours to the given CalObjTime,
- updating the day, month & year appropriately so we end up with a valid
- time. */
-static void
-cal_obj_time_add_hours (CalObjTime *cotime,
- gint hours)
-{
- gint hour, days;
-
- /* We use a gint to avoid overflow on the guint8. */
- hour = cotime->hour + hours;
- cotime->hour = hour % 24;
- if (hour >= 0) {
- if (hour >= 24)
- cal_obj_time_add_days (cotime, hour / 24);
- } else {
- days = hour / 24;
- if (cotime->hour != 0) {
- cotime->hour += 24;
- days -= 1;
- }
- cal_obj_time_add_days (cotime, days);
- }
-}
-
-
-/* Adds a positive or negative number of minutes to the given CalObjTime,
- updating the rest of the CalObjTime appropriately. */
-static void
-cal_obj_time_add_minutes (CalObjTime *cotime,
- gint minutes)
-{
- gint minute, hours;
-
- /* We use a gint to avoid overflow on the guint8. */
- minute = cotime->minute + minutes;
- cotime->minute = minute % 60;
- if (minute >= 0) {
- if (minute >= 60)
- cal_obj_time_add_hours (cotime, minute / 60);
- } else {
- hours = minute / 60;
- if (cotime->minute != 0) {
- cotime->minute += 60;
- hours -= 1;
- }
- cal_obj_time_add_hours (cotime, hours);
- }
-}
-
-
-/* Adds a positive or negative number of seconds to the given CalObjTime,
- updating the rest of the CalObjTime appropriately. */
-static void
-cal_obj_time_add_seconds (CalObjTime *cotime,
- gint seconds)
-{
- gint second, minutes;
-
- /* We use a gint to avoid overflow on the guint8. */
- second = cotime->second + seconds;
- cotime->second = second % 60;
- if (second >= 0) {
- if (second >= 60)
- cal_obj_time_add_minutes (cotime, second / 60);
- } else {
- minutes = second / 60;
- if (cotime->second != 0) {
- cotime->second += 60;
- minutes -= 1;
- }
- cal_obj_time_add_minutes (cotime, minutes);
- }
-}
-
-
-/* Compares 2 CalObjTimes. Returns -1 if the cotime1 is before cotime2, 0 if
- they are the same, or 1 if cotime1 is after cotime2. The comparison type
- specifies which parts of the times we are interested in, e.g. if CALOBJ_DAY
- is used we only want to know if the days are different. */
-static gint
-cal_obj_time_compare (CalObjTime *cotime1,
- CalObjTime *cotime2,
- CalObjTimeComparison type)
-{
- if (cotime1->year < cotime2->year)
- return -1;
- if (cotime1->year > cotime2->year)
- return 1;
-
- if (type == CALOBJ_YEAR)
- return 0;
-
- if (cotime1->month < cotime2->month)
- return -1;
- if (cotime1->month > cotime2->month)
- return 1;
-
- if (type == CALOBJ_MONTH)
- return 0;
-
- if (cotime1->day < cotime2->day)
- return -1;
- if (cotime1->day > cotime2->day)
- return 1;
-
- if (type == CALOBJ_DAY)
- return 0;
-
- if (cotime1->hour < cotime2->hour)
- return -1;
- if (cotime1->hour > cotime2->hour)
- return 1;
-
- if (type == CALOBJ_HOUR)
- return 0;
-
- if (cotime1->minute < cotime2->minute)
- return -1;
- if (cotime1->minute > cotime2->minute)
- return 1;
-
- if (type == CALOBJ_MINUTE)
- return 0;
-
- if (cotime1->second < cotime2->second)
- return -1;
- if (cotime1->second > cotime2->second)
- return 1;
-
- return 0;
-}
-
-
-/* This is the same as the above function, but without the comparison type.
- It is used for qsort(). */
-static gint
-cal_obj_time_compare_func (const void *arg1,
- const void *arg2)
-{
- CalObjTime *cotime1, *cotime2;
- gint retval;
-
- cotime1 = (CalObjTime*) arg1;
- cotime2 = (CalObjTime*) arg2;
-
- if (cotime1->year < cotime2->year)
- retval = -1;
- else if (cotime1->year > cotime2->year)
- retval = 1;
-
- else if (cotime1->month < cotime2->month)
- retval = -1;
- else if (cotime1->month > cotime2->month)
- retval = 1;
-
- else if (cotime1->day < cotime2->day)
- retval = -1;
- else if (cotime1->day > cotime2->day)
- retval = 1;
-
- else if (cotime1->hour < cotime2->hour)
- retval = -1;
- else if (cotime1->hour > cotime2->hour)
- retval = 1;
-
- else if (cotime1->minute < cotime2->minute)
- retval = -1;
- else if (cotime1->minute > cotime2->minute)
- retval = 1;
-
- else if (cotime1->second < cotime2->second)
- retval = -1;
- else if (cotime1->second > cotime2->second)
- retval = 1;
-
- else
- retval = 0;
-
-#if 0
- g_print ("%s - ", cal_obj_time_to_string (cotime1));
- g_print ("%s : %i\n", cal_obj_time_to_string (cotime2), retval);
-#endif
-
- return retval;
-}
-
-#if 0
-static gint
-cal_obj_date_only_compare_func (const void *arg1,
- const void *arg2)
-{
- CalObjTime *cotime1, *cotime2;
-
- cotime1 = (CalObjTime*) arg1;
- cotime2 = (CalObjTime*) arg2;
-
- if (cotime1->year < cotime2->year)
- return -1;
- if (cotime1->year > cotime2->year)
- return 1;
-
- if (cotime1->month < cotime2->month)
- return -1;
- if (cotime1->month > cotime2->month)
- return 1;
-
- if (cotime1->day < cotime2->day)
- return -1;
- if (cotime1->day > cotime2->day)
- return 1;
-
- return 0;
-}
-#endif
-
-/* Returns the weekday of the given CalObjTime, from 0 (Mon) - 6 (Sun). */
-static gint
-cal_obj_time_weekday (CalObjTime *cotime)
-{
- GDate date;
- gint weekday;
-
- g_date_clear (&date, 1);
- g_date_set_dmy (&date, cotime->day, cotime->month + 1, cotime->year);
-
- /* This results in a value of 0 (Monday) - 6 (Sunday). */
- weekday = g_date_weekday (&date) - 1;
-
- return weekday;
-}
-
-
-/* Returns the weekday of the given CalObjTime, from 0 - 6. The week start
- day is Monday by default, but can be set in the recurrence rule. */
-static gint
-cal_obj_time_weekday_offset (CalObjTime *cotime,
- CalRecurrence *recur)
-{
- GDate date;
- gint weekday, offset;
-
- g_date_clear (&date, 1);
- g_date_set_dmy (&date, cotime->day, cotime->month + 1, cotime->year);
-
- /* This results in a value of 0 (Monday) - 6 (Sunday). */
- weekday = g_date_weekday (&date) - 1;
-
- /* This calculates the offset of our day from the start of the week.
- We just add on a week (to avoid any possible negative values) and
- then subtract the specified week start day, then convert it into a
- value from 0-6. */
- offset = (weekday + 7 - recur->week_start_day) % 7;
-
- return offset;
-}
-
-
-/* Returns the day of the year of the given CalObjTime, from 1 - 366. */
-static gint
-cal_obj_time_day_of_year (CalObjTime *cotime)
-{
- GDate date;
-
- g_date_clear (&date, 1);
- g_date_set_dmy (&date, cotime->day, cotime->month + 1, cotime->year);
-
- return g_date_day_of_year (&date);
-}
-
-
-/* Finds the first week in the given CalObjTime's year, using the same weekday
- as the event start day (i.e. from the RecurData).
- The first week of the year is the first week starting from the specified
- week start day that has 4 days in the new year. It may be in the previous
- year. */
-static void
-cal_obj_time_find_first_week (CalObjTime *cotime,
- RecurData *recur_data)
-{
- GDate date;
- gint weekday, week_start_day, first_full_week_start_offset, offset;
-
- /* Find out the weekday of the 1st of the year, 0 (Mon) - 6 (Sun). */
- g_date_clear (&date, 1);
- g_date_set_dmy (&date, 1, 1, cotime->year);
- weekday = g_date_weekday (&date) - 1;
-
- /* Calculate the first day of the year that starts a new week, i.e. the
- first week_start_day after weekday, using 0 = 1st Jan.
- e.g. if the 1st Jan is a Tuesday (1) and week_start_day is a
- Monday (0), the result will be (0 + 7 - 1) % 7 = 6 (7th Jan). */
- week_start_day = recur_data->recur->week_start_day;
- first_full_week_start_offset = (week_start_day + 7 - weekday) % 7;
-
- /* Now see if we have to move backwards 1 week, i.e. if the week
- starts on or after Jan 5th (since the previous week has 4 days in
- this year and so will be the first week of the year). */
- if (first_full_week_start_offset >= 4)
- first_full_week_start_offset -= 7;
-
- /* Now add the days to get to the event's weekday. */
- offset = first_full_week_start_offset + recur_data->weekday_offset;
-
- /* Now move the cotime to the appropriate day. */
- cotime->month = 0;
- cotime->day = 1;
- cal_obj_time_add_days (cotime, offset);
-}
-
-
-static void
-cal_object_time_from_time (CalObjTime *cotime,
- time_t t)
-{
- struct tm *tmp_tm;
- time_t tmp_time_t;
-
- tmp_time_t = t;
- tmp_tm = localtime (&tmp_time_t);
-
- cotime->year = tmp_tm->tm_year + 1900;
- cotime->month = tmp_tm->tm_mon;
- cotime->day = tmp_tm->tm_mday;
- cotime->hour = tmp_tm->tm_hour;
- cotime->minute = tmp_tm->tm_min;
- cotime->second = tmp_tm->tm_sec;
- cotime->is_rdate = FALSE;
-}
-
-
-/* Debugging function to convert a CalObjTime to a string. It uses a static
- buffer so beware. */
-#ifdef CAL_OBJ_DEBUG
-static char*
-cal_obj_time_to_string (CalObjTime *cotime)
-{
- static char buffer[20];
- char *weekdays[] = { "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun",
- " " };
- gint weekday;
-
- weekday = cal_obj_time_weekday (cotime);
-
- sprintf (buffer, "%s %02i/%02i/%04i %02i:%02i:%02i",
- weekdays[weekday],
- cotime->day, cotime->month + 1, cotime->year,
- cotime->hour, cotime->minute, cotime->second);
- return buffer;
-}
-#endif
-
-
-/* This recalculates the end dates for recurrence & exception rules which use
- the COUNT property. If refresh is TRUE it will recalculate all enddates
- for rules which use COUNT. If refresh is FALSE, it will only calculate
- the enddate if it hasn't already been set. It returns TRUE if the component
- was changed, i.e. if the component should be saved at some point.
- We store the enddate in the "X-EVOLUTION-ENDDATE" parameter of the RRULE
- or EXRULE. */
-static gboolean
-cal_recur_ensure_end_dates (CalComponent *comp,
- gboolean refresh)
-{
- GSList *rrules, *exrules, *elem;
- gboolean changed = FALSE;
-
- /* Do the RRULEs. */
- cal_component_get_rrule_property_list (comp, &rrules);
- for (elem = rrules; elem; elem = elem->next) {
- changed |= cal_recur_ensure_rule_end_date (comp, elem->data,
- FALSE, refresh);
- }
-
- /* Do the EXRULEs. */
- cal_component_get_exrule_property_list (comp, &exrules);
- for (elem = exrules; elem; elem = elem->next) {
- changed |= cal_recur_ensure_rule_end_date (comp, elem->data,
- TRUE, refresh);
- }
-
- return changed;
-}
-
-
-typedef struct _CalRecurEnsureEndDateData CalRecurEnsureEndDateData;
-struct _CalRecurEnsureEndDateData {
- gint count;
- gint instances;
- time_t end_date;
-};
-
-
-static gboolean
-cal_recur_ensure_rule_end_date (CalComponent *comp,
- icalproperty *prop,
- gboolean exception,
- gboolean refresh)
-{
- struct icalrecurrencetype rule;
- CalRecurEnsureEndDateData cb_data;
-
- if (exception)
- rule = icalproperty_get_exrule (prop);
- else
- rule = icalproperty_get_rrule (prop);
-
- /* If the rule doesn't use COUNT just return. */
- if (rule.count == 0)
- return FALSE;
-
- /* If refresh is FALSE, we check if the enddate is already set, and
- if it is we just return. */
- if (!refresh) {
- if (cal_recur_get_rule_end_date (prop) != -1)
- return FALSE;
- }
-
- /* Calculate the end date. */
- cb_data.count = rule.count;
- cb_data.instances = 0;
- cal_recur_generate_instances_of_rule (comp, prop, -1, -1,
- cal_recur_ensure_rule_end_date_cb,
- &cb_data);
-
- /* Store the end date in the "X-EVOLUTION-ENDDATE" parameter of the
- rule. */
- cal_recur_set_rule_end_date (prop, cb_data.end_date);
-
- return TRUE;
-}
-
-
-static gboolean
-cal_recur_ensure_rule_end_date_cb (CalComponent *comp,
- time_t instance_start,
- time_t instance_end,
- gpointer data)
-{
- CalRecurEnsureEndDateData *cb_data;
-
- cb_data = (CalRecurEnsureEndDateData*) data;
-
- cb_data->instances++;
-
- if (cb_data->instances == cb_data->count) {
- cb_data->end_date = instance_start;
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-static time_t
-cal_recur_get_rule_end_date (icalproperty *prop)
-{
- icalparameter *param;
- const char *xname, *xvalue;
- icalvalue *value;
- struct icaltimetype icaltime;
-
- param = icalproperty_get_first_parameter (prop, ICAL_X_PARAMETER);
- while (param) {
- xname = icalparameter_get_xname (param);
- if (xname && !strcmp (xname, EVOLUTION_END_DATE_PARAMETER)) {
- xvalue = icalparameter_get_x (param);
- value = icalvalue_new_from_string (ICAL_DATETIME_VALUE,
- xvalue);
- if (value) {
- icaltime = icalvalue_get_datetime (value);
- icalvalue_free (value);
-
- return icaltime_as_timet (icaltime);
- }
- }
-
- param = icalproperty_get_next_parameter (prop,
- ICAL_X_PARAMETER);
- }
-
- return -1;
-}
-
-
-static void
-cal_recur_set_rule_end_date (icalproperty *prop,
- time_t end_date)
-{
- icalparameter *param;
- icalvalue *value;
- struct icaltimetype icaltime;
- const char *end_date_string, *xname;
-
- icaltime = icaltime_from_timet (end_date, FALSE);
- value = icalvalue_new_datetime (icaltime);
- end_date_string = icalvalue_as_ical_string (value);
- icalvalue_free (value);
-
- /* If we already have an X-EVOLUTION-ENDDATE parameter, set the value
- to the new date-time. */
- param = icalproperty_get_first_parameter (prop, ICAL_X_PARAMETER);
- while (param) {
- xname = icalparameter_get_xname (param);
- if (xname && !strcmp (xname, EVOLUTION_END_DATE_PARAMETER)) {
- icalparameter_set_x (param, end_date_string);
- return;
- }
- param = icalproperty_get_next_parameter (prop, ICAL_X_PARAMETER);
- }
-
- /* Create a new X-EVOLUTION-ENDDATE and add it to the property. */
- param = icalparameter_new_x (end_date_string);
- icalparameter_set_xname (param, EVOLUTION_END_DATE_PARAMETER);
- icalproperty_add_parameter (prop, param);
-}
-
diff --git a/calendar/cal-util/cal-recur.h b/calendar/cal-util/cal-recur.h
deleted file mode 100644
index de5a139f78..0000000000
--- a/calendar/cal-util/cal-recur.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Evolution calendar recurrence rule functions
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Author: Damon Chaplin <damon@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef CAL_RECUR_H
-#define CAL_RECUR_H
-
-#include <libgnome/gnome-defs.h>
-#include <glib.h>
-#include <cal-util/cal-component.h>
-
-BEGIN_GNOME_DECLS
-
-typedef gboolean (* CalRecurInstanceFn) (CalComponent *comp,
- time_t instance_start,
- time_t instance_end,
- gpointer data);
-
-/*
- * Calls the given callback function for each occurrence of the event that
- * intersects the range between the given start and end times (the end time is
- * not included). Note that the occurrences may start before the given start
- * time.
- *
- * If the callback routine returns FALSE the occurrence generation stops.
- *
- * Both start and end can be -1, in which case we start at the events first
- * instance and continue until it ends, or forever if it has no enddate.
- */
-void cal_recur_generate_instances (CalComponent *comp,
- time_t start,
- time_t end,
- CalRecurInstanceFn cb,
- gpointer cb_data);
-
-END_GNOME_DECLS
-
-#endif
diff --git a/calendar/cal-util/cal-util.c b/calendar/cal-util/cal-util.c
deleted file mode 100644
index 67da788b0f..0000000000
--- a/calendar/cal-util/cal-util.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Evolution calendar utilities and types
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <stdlib.h>
-#include "cal-util.h"
-
-
-
-/**
- * cal_obj_instance_list_free:
- * @list: List of #CalObjInstance structures.
- *
- * Frees a list of #CalObjInstance structures.
- **/
-void
-cal_obj_instance_list_free (GList *list)
-{
- CalObjInstance *i;
- GList *l;
-
- for (l = list; l; l = l->next) {
- i = l->data;
-
- g_assert (i != NULL);
- g_assert (i->uid != NULL);
-
- g_free (i->uid);
- g_free (i);
- }
-
- g_list_free (list);
-}
-
-/**
- * cal_obj_uid_list_free:
- * @list: List of strings with unique identifiers.
- *
- * Frees a list of unique identifiers for calendar objects.
- **/
-void
-cal_obj_uid_list_free (GList *list)
-{
- GList *l;
-
- for (l = list; l; l = l->next) {
- char *uid;
-
- uid = l->data;
-
- g_assert (uid != NULL);
- g_free (uid);
- }
-
- g_list_free (list);
-}
diff --git a/calendar/cal-util/cal-util.h b/calendar/cal-util/cal-util.h
deleted file mode 100644
index a0a111258d..0000000000
--- a/calendar/cal-util/cal-util.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Evolution calendar utilities and types
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef CAL_UTIL_H
-#define CAL_UTIL_H
-
-#include <libgnome/gnome-defs.h>
-#include <time.h>
-#include <glib.h>
-
-BEGIN_GNOME_DECLS
-
-
-
-/* Instance of a calendar object. This can be an actual occurrence, a
- * recurrence, or an alarm trigger of a `real' calendar object.
- */
-typedef struct {
- char *uid; /* UID of the object */
- time_t start; /* Start time of instance */
- time_t end; /* End time of instance */
-} CalObjInstance;
-
-void cal_obj_instance_list_free (GList *list);
-
-/* Used for multiple UID queries */
-typedef enum {
- CALOBJ_TYPE_EVENT = 1 << 0,
- CALOBJ_TYPE_TODO = 1 << 1,
- CALOBJ_TYPE_JOURNAL = 1 << 2,
- CALOBJ_TYPE_ANY = 0x07
-} CalObjType;
-
-void cal_obj_uid_list_free (GList *list);
-
-END_GNOME_DECLS
-
-#endif
-
diff --git a/calendar/cal-util/calobj.c b/calendar/cal-util/calobj.c
deleted file mode 100644
index bcb1b9bb88..0000000000
--- a/calendar/cal-util/calobj.c
+++ /dev/null
@@ -1,2008 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Calendar objects implementations.
- * Copyright (C) 1998 the Free Software Foundation
- *
- * Authors:
- * Miguel de Icaza (miguel@gnu.org)
- * Federico Mena (quartic@gimp.org)
- */
-#include <config.h>
-#include <string.h>
-#include <glib.h>
-#include <ctype.h>
-#include <unistd.h>
-#include <time.h>
-#include "calobj.h"
-#include "timeutil.h"
-#include "libversit/vcc.h"
-#include "icalendar-save.h"
-#include "icalendar.h"
-
-
-
-/* VCalendar product ID */
-#define PRODID "-//Helix Code//NONSGML Evolution Calendar//EN"
-
-static gint compare_exdates (gconstpointer a, gconstpointer b);
-static void ical_object_normalize_summary (iCalObject *ico);
-static void list_free (GList *list);
-
-
-
-char *
-ical_gen_uid (void)
-{
- static char *hostname;
- time_t t = time (NULL);
- static int serial;
-
- if (!hostname){
- char buffer [128];
-
- if ((gethostname (buffer, sizeof (buffer)-1) == 0) &&
- (buffer [0] != 0))
- hostname = g_strdup (buffer);
- else
- hostname = g_strdup ("localhost");
- }
-
- return g_strdup_printf (
- "%s-%d-%d-%d-%d@%s",
- isodate_from_time_t (t),
- getpid (),
- getgid (),
- getppid (),
- serial++,
- hostname);
-}
-
-iCalObject *
-ical_object_new (void)
-{
- iCalObject *ico;
-
- ico = g_new0 (iCalObject, 1);
-
- ico->seq = -1;
- ico->dtstamp = time (NULL);
- ico->uid = ical_gen_uid ();
-
- ico->pilot_id = 0;
- ico->pilot_status = ICAL_PILOT_SYNC_MOD;
-
- ico->ref_count = 1;
-
- return ico;
-}
-
-iCalObject *
-ical_new (char *comment, char *organizer, char *summary)
-{
- iCalObject *ico;
-
- ico = ical_object_new ();
-
- ico->comment = g_strdup (comment);
- ico->organizer = g_new0 (iCalPerson, 1);
- ico->organizer->addr = g_strdup (organizer);
- ico->summary = g_strdup (summary);
- ico->class = g_strdup ("PUBLIC");
- ico->status = g_strdup ("NEEDS ACTION");
-
- ico->dalarm.type = ALARM_DISPLAY;
- ico->palarm.type = ALARM_PROGRAM;
- ico->malarm.type = ALARM_MAIL;
- ico->aalarm.type = ALARM_AUDIO;
-
- ical_object_normalize_summary (ico);
-
- return ico;
-}
-
-
-void
-ical_object_ref (iCalObject *ico)
-{
- ico->ref_count++;
-}
-
-
-#define free_if_defined(x) if (x){ g_free (x); x = 0; }
-#define lfree_if_defined(x) if (x){ list_free (x); x = 0; }
-static void
-ical_object_destroy (iCalObject *ico)
-{
- /* Regular strings */
- free_if_defined (ico->comment);
- free_if_defined (ico->organizer);
- free_if_defined (ico->summary);
- free_if_defined (ico->uid);
- free_if_defined (ico->status);
- free_if_defined (ico->class);
- free_if_defined (ico->url);
- free_if_defined (ico->recur);
-
- /* Lists */
- lfree_if_defined (ico->exdate);
- lfree_if_defined (ico->categories);
- lfree_if_defined (ico->resources);
- lfree_if_defined (ico->related);
- lfree_if_defined (ico->attach);
-
- /* Alarms */
- g_free (ico->dalarm.data);
- g_free (ico->palarm.data);
- g_free (ico->malarm.data);
- g_free (ico->aalarm.data);
-
- g_free (ico);
-}
-
-void
-ical_object_unref (iCalObject *ico)
-{
- ico->ref_count--;
- if (ico->ref_count == 0)
- ical_object_destroy (ico);
-}
-
-
-static void
-my_free (gpointer data, gpointer user_dat_ignored)
-{
- g_free (data);
-}
-
-static void
-list_free (GList *list)
-{
- g_list_foreach (list, my_free, 0);
- g_list_free (list);
-}
-
-/* This resets any recurrence rules of the iCalObject. */
-void
-ical_object_reset_recurrence (iCalObject *ico)
-{
- free_if_defined (ico->recur);
- lfree_if_defined (ico->exdate);
-}
-
-static GList *
-set_list (char *str)
-{
- GList *list = 0;
- char *s;
-
- for (s = strtok (str, ";"); s; s = strtok (NULL, ";"))
- list = g_list_prepend (list, g_strdup (s));
-
- return list;
-}
-
-static GList *
-set_date_list (char *str)
-{
- GList *list = 0;
- char *s;
-
- for (s = strtok (str, ";,"); s; s = strtok (NULL, ";,")){
- time_t *t = g_new (time_t, 1);
-
- while (*s && isspace (*s))
- s++;
- *t = time_from_isodate (s);
- list = g_list_prepend (list, t);
- }
- return list;
-}
-
-void
-ical_object_add_exdate (iCalObject *o, time_t t)
-{
- time_t *pt = g_new (time_t, 1);
-
- *pt = t;
- o->exdate = g_list_prepend (o->exdate, pt);
-}
-
-static void
-ignore_space(char **str)
-{
- while (**str && isspace (**str))
- (*str)++;
-}
-
-static void
-skip_numbers (char **str)
-{
- while (**str){
- ignore_space (str);
- if (!isdigit (**str))
- return;
- while (**str && isdigit (**str))
- (*str)++;
- }
-}
-
-static void
-weekdaylist (iCalObject *o, char **str)
-{
- int i;
- struct {
- char first_letter, second_letter;
- int index;
- } days [] = {
- { 'S', 'U', 0 },
- { 'M', 'O', 1 },
- { 'T', 'U', 2 },
- { 'W', 'E', 3 },
- { 'T', 'H', 4 },
- { 'F', 'R', 5 },
- { 'S', 'A', 6 }
- };
-
- ignore_space (str);
- do {
- for (i = 0; i < 7; i++){
- if (**str == days [i].first_letter && *(*str+1) == days [i].second_letter){
- o->recur->weekday |= 1 << i;
- *str += 2;
- if (**str == ' ')
- (*str)++;
- }
- }
- } while (isalpha ((unsigned char) **str));
-
- if (o->recur->weekday == 0){
- struct tm tm = *localtime (&o->dtstart);
-
- o->recur->weekday = 1 << tm.tm_wday;
- }
-}
-
-static void
-weekdaynum (iCalObject *o, char **str)
-{
- int i;
- struct {
- char first_letter, second_letter;
- int index;
- } days [] = {
- { 'S', 'U', 0 },
- { 'M', 'O', 1 },
- { 'T', 'U', 2 },
- { 'W', 'E', 3 },
- { 'T', 'H', 4 },
- { 'F', 'R', 5 },
- { 'S', 'A', 6 }
- };
-
- ignore_space (str);
- do {
- for (i = 0; i < 7; i++){
- if (**str == days [i].first_letter && *(*str+1) == days [i].second_letter){
- o->recur->weekday = i;
- *str += 2;
- if (**str == ' ')
- (*str)++;
- }
- }
- } while (isalpha ((unsigned char) **str));
-}
-
-static void
-ocurrencelist (iCalObject *o, char **str)
-{
- char *p;
-
- ignore_space (str);
- p = *str;
- if (!isdigit (*p))
- return;
-
- if (!(*p >= '1' && *p <= '5'))
- return;
-
- if (!(*(p+1) == '+' || *(p+1) == '-'))
- return;
-
- o->recur->u.month_pos = (*p-'0') * (*(p+1) == '+' ? 1 : -1);
- *str += 2;
-}
-
-#if 0
-
-static void
-daynumber (iCalObject *o, char **str)
-{
- int val = 0;
- char *p = *str;
-
- ignore_space (str);
- if (strcmp (p, "LD")){
- o->recur->u.month_day = DAY_LASTDAY;
- *str += 2;
- return;
- }
-
- if (!(isdigit (*p)))
- return;
-
- while (**str && isdigit (**str)){
- val = val * 10 + (**str - '0');
- (*str)++;
- }
-
- if (**str == '+')
- (*str)++;
-
- if (**str == '-')
- val *= -1;
- o->recur->u.month_day = val;
-}
-
-#endif
-
-static void
-daynumberlist (iCalObject *o, char **str)
-{
- int first = 0;
- int val = 0;
-
- ignore_space (str);
-
- while (**str){
- if (!isdigit (**str))
- return;
- while (**str && isdigit (**str)){
- val = 10 * val + (**str - '0');
- (*str)++;
- }
- if (!first){
- /*
- * Some broken applications set this to zero
- */
- if (val == 0){
- struct tm day = *localtime (&o->dtstart);
-
- val = day.tm_mday;
- }
- o->recur->u.month_day = val;
- first = 1;
- val = 0;
- }
- }
-}
-
-static void
-load_recur_weekly (iCalObject *o, char **str)
-{
- weekdaylist (o, str);
-}
-
-static void
-load_recur_monthly_pos (iCalObject *o, char **str)
-{
- ocurrencelist (o, str);
- weekdaynum (o, str);
-}
-
-static void
-load_recur_monthly_day (iCalObject *o, char **str)
-{
- daynumberlist (o, str);
-}
-
-static void
-load_recur_yearly_month (iCalObject *o, char **str)
-{
- /* Skip as we do not support multiple months and we do expect
- * the dtstart to agree with the value on this field
- */
- skip_numbers (str);
-}
-
-static void
-load_recur_yearly_day (iCalObject *o, char **str)
-{
- /* Skip as we do not support multiple days and we do expect
- * the dtstart to agree with the value on this field
- *
- * FIXME: we should support every-n-years
- */
- skip_numbers (str);
-}
-
-static void
-duration (iCalObject *o, char **str)
-{
- unsigned int duration = 0;
-
- ignore_space (str);
- if (**str != '#')
- return;
- (*str)++;
- while (**str && isdigit (**str)){
- duration = duration * 10 + (**str - '0');
- (*str)++;
- }
- o->recur->duration = duration;
-}
-
-static void
-enddate (iCalObject *o, char **str)
-{
- ignore_space (str);
- if (isdigit (**str)){
- o->recur->_enddate = time_from_isodate (*str);
- *str += 16;
- }
-}
-
-static int
-load_recurrence (iCalObject *o, char *str)
-{
- enum RecurType type;
- int interval = 0;
-
- type = -1;
- switch (*str++){
- case 'D':
- type = RECUR_DAILY;
- break;
-
- case 'W':
- type = RECUR_WEEKLY;
- break;
-
- case 'M':
- if (*str == 'P')
- type = RECUR_MONTHLY_BY_POS;
- else if (*str == 'D')
- type = RECUR_MONTHLY_BY_DAY;
- str++;
- break;
-
- case 'Y':
- if (*str == 'M')
- type = RECUR_YEARLY_BY_MONTH;
- else if (*str == 'D')
- type = RECUR_YEARLY_BY_DAY;
- str++;
- break;
- }
- if (type == -1)
- return 0;
-
- o->recur = g_new0 (Recurrence, 1);
- o->recur->type = type;
- ignore_space (&str);
-
- /* Get the interval */
- for (;*str && isdigit (*str);str++)
- interval = interval * 10 + (*str-'0');
-
- if (interval == 0)
- interval = 1;
-
- o->recur->interval = interval;
-
- /* this is the default per the spec */
- o->recur->duration = 2;
-
- ignore_space (&str);
-
- switch (type){
- case RECUR_DAILY:
- break;
- case RECUR_WEEKLY:
- load_recur_weekly (o, &str);
- break;
- case RECUR_MONTHLY_BY_POS:
- load_recur_monthly_pos (o, &str);
- break;
- case RECUR_MONTHLY_BY_DAY:
- load_recur_monthly_day (o, &str);
- break;
- case RECUR_YEARLY_BY_MONTH:
- load_recur_yearly_month (o, &str);
- break;
- case RECUR_YEARLY_BY_DAY:
- load_recur_yearly_day (o, &str);
- break;
- default:
- g_warning ("Unimplemented recurrence type %d", (int) type);
- break;
- }
- duration (o, &str);
- enddate (o, &str);
-
- /* Compute the enddate */
- if (o->recur->_enddate == 0){
- if (o->recur->duration != 0){
- ical_object_compute_end (o);
- } else
- o->recur->enddate = 0;
- } else {
- o->recur->enddate = o->recur->_enddate;
- }
- return 1;
-}
-
-#define is_a_prop_of(obj,prop) isAPropertyOf (obj,prop)
-#define str_val(obj) the_str = fakeCString (vObjectUStringZValue (obj))
-#define has(obj,prop) (vo = isAPropertyOf (obj, prop))
-
-/*
- * FIXME: This is loosing precission. Enhanec the thresholds
- */
-#define HOURS(n) (n*(60*60))
-
-static void
-setup_alarm_at (iCalObject *ico, CalendarAlarm *alarm, char *iso_time, VObject *vo)
-{
- time_t alarm_time = time_from_isodate (iso_time);
- time_t base = ico->dtstart;
- int d = difftime (base, alarm_time);
- VObject *a;
- char *the_str;
-
- alarm->enabled = 1;
- if (d > HOURS (2)){
- if (d > HOURS (48)){
- alarm->count = d / HOURS (24);
- alarm->units = ALARM_DAYS;
- } else {
- alarm->count = d / (60*60);
- alarm->units = ALARM_HOURS;
- }
- } else {
- alarm->count = d / 60;
- alarm->units = ALARM_MINUTES;
- }
-
- if ((a = is_a_prop_of (vo, VCSnoozeTimeProp))){
- alarm->snooze_secs = isodiff_to_secs (str_val (a));
- free (the_str);
- }
-
- if ((a = is_a_prop_of (vo, VCRepeatCountProp))){
- alarm->snooze_repeat = atoi (str_val (a));
- free (the_str);
- }
-}
-
-/*
- * Duplicates an iCalObject. Implementation is a grand hack.
- * If you need the new ICalObject to have a new uid, free the current one,
- * and call ical_gen_uid() to generate a new one.
- */
-iCalObject *
-ical_object_duplicate (iCalObject *o)
-{
- VObject *vo;
- iCalObject *new;
-
- vo = ical_object_to_vobject (o);
- switch (o->type){
- case ICAL_EVENT:
- new = ical_object_create_from_vobject (vo, VCEventProp);
- break;
- case ICAL_TODO:
- new = ical_object_create_from_vobject (vo, VCTodoProp);
- break;
- default:
- new = NULL;
- }
-
- cleanVObject (vo);
- return new;
-}
-
-/* FIXME: we need to load the recurrence properties */
-iCalObject *
-ical_object_create_from_vobject (VObject *o, const char *object_name)
-{
- time_t now = time (NULL);
- iCalObject *ical;
- VObject *vo, *a;
- VObjectIterator i;
- char *the_str;
-
- ical = g_new0 (iCalObject, 1);
-
- if (strcmp (object_name, VCEventProp) == 0)
- ical->type = ICAL_EVENT;
- else if (strcmp (object_name, VCTodoProp) == 0)
- ical->type = ICAL_TODO;
- else {
- g_free (ical);
- return 0;
- }
-
- ical->ref_count = 1;
-
- /* uid */
- if (has (o, VCUniqueStringProp)){
- ical->uid = g_strdup (str_val (vo));
- free (the_str);
- } else {
- ical->uid = ical_gen_uid ();
- }
-
- /* seq */
- if (has (o, VCSequenceProp)){
- ical->seq = atoi (str_val (vo));
- free (the_str);
- } else
- ical->seq = 0;
-
- /* dtstart */
- if (has (o, VCDTstartProp)){
- ical->dtstart = time_from_isodate (str_val (vo));
- free (the_str);
- } else
- ical->dtstart = 0;
-
- /* dtend */
- ical->dtend = 0; /* default value */
- if (ical->type == ICAL_EVENT){
- if (has (o, VCDTendProp)){
- ical->dtend = time_from_isodate (str_val (vo));
- free (the_str);
- }
- } else if (ical->type == ICAL_TODO){
- if (has (o, VCDueProp)){
- ical->dtend = time_from_isodate (str_val (vo));
- free (the_str);
- }
- }
-
- /* dcreated */
- if (has (o, VCDCreatedProp)){
- ical->created = time_from_isodate (str_val (vo));
- free (the_str);
- }
-
- /* completed */
- if (has (o, VCCompletedProp)){
- ical->completed = time_from_isodate (str_val (vo));
- free (the_str);
- }
-
- /* last_mod */
- if (has (o, VCLastModifiedProp)){
- ical->last_mod = time_from_isodate (str_val (vo));
- free (the_str);
- } else
- ical->last_mod = now;
-
- /* exdate */
- if (has (o, VCExpDateProp)){
- ical->exdate = set_date_list (str_val (vo));
- free (the_str);
- }
-
- /* description/comment */
- if (has (o, VCDescriptionProp)){
- ical->comment = g_strdup (str_val (vo));
- free (the_str);
- }
-
- /* summary */
- if (has (o, VCSummaryProp)){
- ical->summary = g_strdup (str_val (vo));
- free (the_str);
-
- /* Convert any CR/LF/CRLF sequences in the summary field to
- spaces so we just have a one-line field. */
- ical_object_normalize_summary (ical);
- } else
- ical->summary = g_strdup ("");
-
- /* status */
- if (has (o, VCStatusProp)){
- ical->status = g_strdup (str_val (vo));
- free (the_str);
- } else
- ical->status = g_strdup ("NEEDS ACTION");
-
- if (has (o, VCClassProp)){
- ical->class = g_strdup (str_val (vo));
- free (the_str);
- } else
- ical->class = g_strdup ("PUBLIC");
-
- /* categories */
- if (has (o, VCCategoriesProp)){
- ical->categories = set_list (str_val (vo));
- free (the_str);
- }
-
- /* resources */
- if (has (o, VCResourcesProp)){
- ical->resources = set_list (str_val (vo));
- free (the_str);
- }
-
- /* priority */
- if (has (o, VCPriorityProp)){
- ical->priority = atoi (str_val (vo));
- free (the_str);
- }
-
- /* tranparency */
- if (has (o, VCTranspProp)){
- ical->transp = atoi (str_val (vo)) ? ICAL_TRANSPARENT : ICAL_OPAQUE;
- free (the_str);
- }
-
- /* Organizer */
- if (has (o, VCOrgNameProp)){
- ical->organizer = g_new0 (iCalPerson, 1);
- ical->organizer->addr = g_strdup (str_val (vo));
- free (the_str);
- }
-
- /* related */
- if (has (o, VCRelatedToProp)){
- char *str;
- char *s;
- iCalRelation *rel;
- str = str_val (vo);
- for (s = strtok (str, ";"); s; s = strtok (NULL, ";")) {
- rel = g_new0 (iCalRelation, 1);
- rel->uid = g_strdup (s);
- rel->reltype = g_strdup ("PARENT");
- ical->related = g_list_prepend (ical->related, rel);
- }
- free (the_str);
- }
-
- /* attach */
- initPropIterator (&i, o);
- while (moreIteration (&i)){
- vo = nextVObject (&i);
- if (strcmp (vObjectName (vo), VCAttachProp) == 0){
- ical->attach = g_list_prepend (ical->attach, g_strdup (str_val (vo)));
- free (the_str);
- }
- }
-
- /* url */
- if (has (o, VCURLProp)){
- /* There seems to be a problem with the URL property. For some
- reason an empty property gets saved, vObjectUStringZValue
- returns NULL and fakeCString crashes. So we check for NULL.
- */
- const wchar_t *zval;
-
- zval = vObjectUStringZValue (o);
- if (zval) {
- the_str = fakeCString (zval);
- ical->url = g_strdup (the_str);
- free (the_str);
- }
- }
-
- /* dalarm */
- ical->dalarm.type = ALARM_DISPLAY;
- ical->dalarm.enabled = 0;
- if (has (o, VCDAlarmProp)){
- if ((a = is_a_prop_of (vo, VCRunTimeProp))){
- setup_alarm_at (ical, &ical->dalarm, str_val (a), vo);
- free (the_str);
- }
- }
-
- /* aalarm */
- ical->aalarm.type = ALARM_AUDIO;
- ical->aalarm.enabled = 0;
- if (has (o, VCAAlarmProp)){
- if ((a = is_a_prop_of (vo, VCRunTimeProp))){
- setup_alarm_at (ical, &ical->aalarm, str_val (a), vo);
- free (the_str);
- }
- }
-
- /* palarm */
- ical->palarm.type = ALARM_PROGRAM;
- ical->palarm.enabled = 0;
- if (has (o, VCPAlarmProp)){
- ical->palarm.type = ALARM_PROGRAM;
- if ((a = is_a_prop_of (vo, VCRunTimeProp))){
- setup_alarm_at (ical, &ical->palarm, str_val (a), vo);
- free (the_str);
-
- if ((a = is_a_prop_of (vo, VCProcedureNameProp))){
- ical->palarm.data = g_strdup (str_val (a));
- free (the_str);
- } else
- ical->palarm.data = g_strdup ("");
- }
- }
-
- /* malarm */
- ical->malarm.type = ALARM_MAIL;
- ical->malarm.enabled = 0;
- if (has (o, VCMAlarmProp)){
- ical->malarm.type = ALARM_MAIL;
- if ((a = is_a_prop_of (vo, VCRunTimeProp))){
- setup_alarm_at (ical, &ical->malarm, str_val (a), vo);
- free (the_str);
-
- if ((a = is_a_prop_of (vo, VCEmailAddressProp))){
- ical->malarm.data = g_strdup (str_val (a));
- free (the_str);
- } else
- ical->malarm.data = g_strdup ("");
- }
- }
-
- /* rrule */
- if (has (o, VCRRuleProp)){
- if (!load_recurrence (ical, str_val (vo))) {
- ical_object_unref (ical);
- return NULL;
- }
- free (the_str);
- }
-
- /*
- * Pilot
- */
- if (has (o, XPilotIdProp)){
- ical->pilot_id = atoi (str_val (vo));
- free (the_str);
- } else
- ical->pilot_id = 0;
-
- if (has (o, XPilotStatusProp)){
- ical->pilot_status = atoi (str_val (vo));
- free (the_str);
- } else
- ical->pilot_status = ICAL_PILOT_SYNC_MOD;
-
- return ical;
-}
-
-static char *
-to_str (int num)
-{
- static char buf [40];
-
- sprintf (buf, "%d", num);
- return buf;
-}
-
-/*
- * stores a GList in the property.
- */
-static void
-store_list (VObject *o, char *prop, GList *values)
-{
- GList *l;
- int len;
- char *result, *p;
-
- for (len = 0, l = values; l; l = l->next)
- len += strlen (l->data) + 1;
-
- result = g_malloc (len);
-
- for (p = result, l = values; l; l = l->next) {
- int len = strlen (l->data);
-
- strcpy (p, l->data);
-
- if (l->next) {
- p [len] = ';';
- p += len+1;
- } else
- p += len;
- }
-
- *p = 0;
-
- addPropValue (o, prop, result);
- g_free (result);
-}
-
-static void
-store_rel_list (VObject *o, char *prop, GList *values)
-{
- GList *l;
- int len;
- char *result, *p;
-
- for (len = 0, l = values; l; l = l->next)
- len += strlen (((iCalRelation*)(l->data))->uid) + 1;
-
- result = g_malloc (len);
-
- for (p = result, l = values; l; l = l->next) {
- int len = strlen (((iCalRelation*)(l->data))->uid);
-
- strcpy (p, ((iCalRelation*)(l->data))->uid);
-
- if (l->next) {
- p [len] = ';';
- p += len+1;
- } else
- p += len;
- }
-
- *p = 0;
-
- addPropValue (o, prop, result);
- g_free (result);
-}
-
-static void
-store_date_list (VObject *o, char *prop, GList *values)
-{
- GList *l;
- int size, len;
- char *s, *p;
-
- size = g_list_length (values);
- s = p = g_malloc ((size * 17 + 1) * sizeof (char));
-
- for (l = values; l; l = l->next){
- strcpy (s, isodate_from_time_t (*(time_t *)l->data));
- len = strlen (s);
- s [len] = ',';
- s += len + 1;
- }
- s--;
- *s = 0;
- addPropValue (o, prop, p);
- g_free (p);
-}
-
-static char *recur_type_name [] = { "D", "W", "MP", "MD", "YM", "YD" };
-static char *recur_day_list [] = { "SU", "MO", "TU","WE", "TH", "FR", "SA" };
-static char *alarm_names [] = { VCMAlarmProp, VCPAlarmProp, VCDAlarmProp, VCAAlarmProp };
-
-static VObject *
-save_alarm (VObject *o, CalendarAlarm *alarm, iCalObject *ical)
-{
- VObject *alarm_object;
- struct tm tm;
- time_t alarm_time;
-
- if (!alarm->enabled)
- return NULL;
- tm = *localtime (&ical->dtstart);
- switch (alarm->units){
- case ALARM_MINUTES:
- tm.tm_min -= alarm->count;
- break;
-
- case ALARM_HOURS:
- tm.tm_hour -= alarm->count;
- break;
-
- case ALARM_DAYS:
- tm.tm_mday -= alarm->count;
- break;
- }
-
- alarm_time = mktime (&tm);
- alarm_object = addProp (o, alarm_names [alarm->type]);
- addPropValue (alarm_object, VCRunTimeProp, isodate_from_time_t (alarm_time));
-
- if (alarm->snooze_secs)
- addPropValue (alarm_object, VCSnoozeTimeProp, isodiff_from_secs (alarm->snooze_secs));
- else
- addPropValue (alarm_object, VCSnoozeTimeProp, "");
-
- if (alarm->snooze_repeat){
- char buf [20];
-
- sprintf (buf, "%d", alarm->snooze_repeat);
- addPropValue (alarm_object, VCRepeatCountProp, buf);
- } else
- addPropValue (alarm_object, VCRepeatCountProp, "");
- return alarm_object;
-}
-
-VObject *
-ical_object_to_vobject (iCalObject *ical)
-{
- VObject *o, *alarm, *s;
- GList *l;
-
- if (ical->type == ICAL_EVENT)
- o = newVObject (VCEventProp);
- else
- o = newVObject (VCTodoProp);
-
- /* uid */
- if (ical->uid)
- addPropValue (o, VCUniqueStringProp, ical->uid);
-
- /* seq */
- addPropValue (o, VCSequenceProp, to_str (ical->seq));
-
- /* dtstart */
- addPropValue (o, VCDTstartProp, isodate_from_time_t (ical->dtstart));
-
- /* dtend */
- if (ical->type == ICAL_EVENT){
- addPropValue (o, VCDTendProp, isodate_from_time_t (ical->dtend));
- } else if (ical->type == ICAL_TODO){
- addPropValue (o, VCDueProp, isodate_from_time_t (ical->dtend));
- }
-
- /* dcreated */
- addPropValue (o, VCDCreatedProp, isodate_from_time_t (ical->created));
-
- /* completed */
- if (ical->completed)
- addPropValue (o, VCDTendProp, isodate_from_time_t (ical->completed));
-
- /* last_mod */
- addPropValue (o, VCLastModifiedProp, isodate_from_time_t (ical->last_mod));
-
- /* exdate */
- if (ical->exdate)
- store_date_list (o, VCExpDateProp, ical->exdate);
-
- /* description/comment */
- if (ical->comment && strlen (ical->comment)){
- s = addPropValue (o, VCDescriptionProp, ical->comment);
- if (strchr (ical->comment, '\n'))
- addProp (s, VCQuotedPrintableProp);
- }
-
- /* summary */
- if (ical->summary && strlen (ical->summary)) {
- s = addPropValue (o, VCSummaryProp, ical->summary);
- if (strchr (ical->summary, '\n'))
- addProp (s, VCQuotedPrintableProp);
- }
-
- /* status */
- addPropValue (o, VCStatusProp, ical->status);
-
- /* class */
- addPropValue (o, VCClassProp, ical->class);
-
- /* categories */
- if (ical->categories)
- store_list (o, VCCategoriesProp, ical->categories);
-
- /* resources */
- if (ical->resources)
- store_list (o, VCCategoriesProp, ical->resources);
-
- /* priority */
- addPropValue (o, VCPriorityProp, to_str (ical->priority));
-
- /* transparency */
- addPropValue (o, VCTranspProp, to_str (ical->transp));
-
- /* Owner/organizer */
- if (ical->organizer && ical->organizer->addr)
- addPropValue (o, VCOrgNameProp, ical->organizer->addr);
-
- /* related */
- if (ical->related)
- store_rel_list (o, VCRelatedToProp, ical->related);
-
- /* attach */
- for (l = ical->attach; l; l = l->next)
- addPropValue (o, VCAttachProp, l->data);
-
- /* url */
- if (ical->url)
- addPropValue (o, VCURLProp, ical->url);
-
- if (ical->recur){
- char result [256];
- char buffer [80];
- int i;
-
- sprintf (result, "%s%d ", recur_type_name [ical->recur->type], ical->recur->interval);
- switch (ical->recur->type){
- case RECUR_DAILY:
- break;
-
- case RECUR_WEEKLY:
- for (i = 0; i < 7; i++){
- if (ical->recur->weekday & (1 << i)){
- sprintf (buffer, "%s ", recur_day_list [i]);
- strcat (result, buffer);
- }
- }
- break;
-
- case RECUR_MONTHLY_BY_POS: {
- int nega = ical->recur->u.month_pos < 0;
-
- sprintf (buffer, "%d%s ", nega ? -ical->recur->u.month_pos : ical->recur->u.month_pos,
- nega ? "-" : "+");
- strcat (result, buffer);
- /* the gui is set up for a single day, not a set here in this case */
- sprintf (buffer, "%s ", recur_day_list [ical->recur->weekday]);
- strcat (result, buffer);
- }
- break;
-
- case RECUR_MONTHLY_BY_DAY:
- sprintf (buffer, "%d ", ical->recur->u.month_pos);
- strcat (result, buffer);
- break;
-
- case RECUR_YEARLY_BY_MONTH:
- break;
-
- case RECUR_YEARLY_BY_DAY:
- break;
- }
- if (ical->recur->_enddate == 0)
- sprintf (buffer, "#%d ",ical->recur->duration);
- else
- sprintf (buffer, "%s ", isodate_from_time_t (ical->recur->_enddate));
- strcat (result, buffer);
- addPropValue (o, VCRRuleProp, result);
- }
-
- save_alarm (o, &ical->aalarm, ical);
- save_alarm (o, &ical->dalarm, ical);
-
- if ((alarm = save_alarm (o, &ical->palarm, ical)))
- addPropValue (alarm, VCProcedureNameProp, ical->palarm.data);
- if ((alarm = save_alarm (o, &ical->malarm, ical)))
- addPropValue (alarm, VCEmailAddressProp, ical->malarm.data);
-
- /* Pilot */
- {
- char buffer [20];
-
- sprintf (buffer, "%d", ical->pilot_id);
- addPropValue (o, XPilotIdProp, buffer);
- sprintf (buffer, "%d", ical->pilot_status);
- addPropValue (o, XPilotStatusProp, buffer);
- }
-
- return o;
-}
-
-void
-ical_foreach (GList *events, calendarfn fn, void *closure)
-{
- for (; events; events = events->next){
- iCalObject *ical = events->data;
-
- (*fn) (ical, ical->dtstart, ical->dtend, closure);
- }
-}
-
-static int
-is_date_in_list (GList *list, struct tm *date)
-{
- struct tm tm;
-
- for (; list; list = list->next){
- time_t *timep = list->data;
-
- tm = *localtime (timep);
- if (date->tm_mday == tm.tm_mday &&
- date->tm_mon == tm.tm_mon &&
- date->tm_year == tm.tm_year){
- return 1;
- }
- }
- return 0;
-}
-
-/* Generates an event instance based on the reference time */
-static gboolean
-generate (iCalObject *ico, time_t reference, calendarfn cb, void *closure)
-{
- time_t offset;
- struct tm tm_start, ref;
- time_t start, end;
-
- offset = ico->dtend - ico->dtstart;
-
- tm_start = *localtime (&ico->dtstart);
- ref = *localtime (&reference);
-
- tm_start.tm_mday = ref.tm_mday;
- tm_start.tm_mon = ref.tm_mon;
- tm_start.tm_year = ref.tm_year;
-
- start = mktime (&tm_start);
- if (start == -1) {
- g_message ("generate(): Produced invalid start date!");
- return FALSE;
- }
-
- end = start + offset;
-
-#if 0
- /* FIXME: I think this is not needed, since we are offsetting by full day values,
- * and the times should remain the same --- if you have a daily appointment
- * at 18:00, it is always at 18:00 even during daylight savings.
- *
- * However, what should happen on the exact change-of-savings day with
- * appointments in the early morning hours?
- */
-
- if (ref.tm_isdst > tm_start.tm_isdst) {
- tm_start.tm_hour--;
- tm_end.tm_hour--;
- } else if (ref.tm_isdst < tm_start.tm_isdst) {
- tm_start.tm_hour++;
- tm_end.tm_hour++;
- }
-#endif
-
- if (ico->exdate && is_date_in_list (ico->exdate, &tm_start))
- return TRUE;
-
- return (*cb) (ico, start, end, closure);
-}
-
-int
-ical_object_get_first_weekday (int weekday_mask)
-{
- int i;
-
- for (i = 0; i < 7; i++)
- if (weekday_mask & (1 << i))
- return i;
-
- return -1;
-}
-
-#define time_in_range(t, a, b) ((t >= a) && (b ? (t < b) : 1))
-#define recur_in_range(t, r) (r->enddate ? (t < r->enddate) : 1)
-
-/*
- * Generate every possible event. Invokes the callback routine for
- * every occurrence of the event in the [START, END] time interval.
- *
- * If END is zero, the event is generated forever.
- * The callback routine is expected to return 0 when no further event
- * generation is requested.
- */
-void
-ical_object_generate_events (iCalObject *ico, time_t start, time_t end, calendarfn cb, void *closure)
-{
- time_t current;
- int first_week_day;
-
- /* If there is no recurrence, just check ranges */
-
- if (!ico->recur) {
- if ((end && (ico->dtstart < end) && (ico->dtend > start))
- || ((end == 0) && (ico->dtend > start))) {
- /* The new calendar views expect the times to not be
- clipped, so they can show that it continues past
- the end of the viewable area. */
-#if 0
- time_t ev_s, ev_e;
-
- /* Clip range */
-
- ev_s = MAX (ico->dtstart, start);
- ev_e = MIN (ico->dtend, end);
-
- (* cb) (ico, ev_s, ev_e, closure);
-#else
- (* cb) (ico, ico->dtstart, ico->dtend, closure);
-#endif
- }
- return;
- }
-
- /* The event has a recurrence rule -- check that we will generate at least one instance */
-
- if (end != 0) {
- if (ico->dtstart > end)
- return;
-
- if (!IS_INFINITE (ico->recur) && (ico->recur->enddate < start))
- return;
- }
-
- /* Generate the instances */
-
- current = ico->dtstart;
-
- switch (ico->recur->type) {
- case RECUR_DAILY:
- do {
- if (time_in_range (current, start, end) && recur_in_range (current, ico->recur))
- if (!generate (ico, current, cb, closure))
- return;
-
- /* Advance */
-
- current = time_add_day (current, ico->recur->interval);
-
- if (current == -1) {
- g_warning ("RECUR_DAILY: time_add_day() returned invalid time");
- return;
- }
- } while ((current < end) || (end == 0));
-
- break;
-
- case RECUR_WEEKLY:
- do {
- struct tm tm;
-
- tm = *localtime (&current);
-
- if (time_in_range (current, start, end) && recur_in_range (current, ico->recur)) {
- /* Weekdays to recur on are specified as a bitmask */
- if (ico->recur->weekday & (1 << tm.tm_wday)) {
- if (!generate (ico, current, cb, closure))
- return;
- }
- }
-
- /* Advance by day for scanning the week or by interval at week end */
-
- if (tm.tm_wday == 6)
- current = time_add_day (current, (ico->recur->interval - 1) * 7 + 1);
- else
- current = time_add_day (current, 1);
-
- if (current == -1) {
- g_warning ("RECUR_WEEKLY: time_add_day() returned invalid time\n");
- return;
- }
- } while (current < end || (end == 0));
-
- break;
-
- case RECUR_MONTHLY_BY_POS:
- /* FIXME: We only deal with positives now */
- if (ico->recur->u.month_pos < 0) {
- g_warning ("RECUR_MONTHLY_BY_POS does not support negative positions yet");
- return;
- }
-
- if (ico->recur->u.month_pos == 0)
- return;
-
- first_week_day = /* ical_object_get_first_weekday (ico->recur->weekday); */
- ico->recur->weekday; /* the i/f only lets you choose a single day of the week! */
-
- /* This should not happen, but take it into account */
- if (first_week_day == -1) {
- g_warning ("ical_object_get_first_weekday() returned -1");
- return;
- }
-
- do {
- struct tm tm;
- time_t t;
- int week_day_start;
-
- tm = *localtime (&current);
- tm.tm_mday = 1;
- t = mktime (&tm);
- tm = *localtime (&t);
- week_day_start = tm.tm_wday;
-
- tm.tm_mday = (7 * (ico->recur->u.month_pos - ((week_day_start <= first_week_day ) ? 1 : 0))
- - (week_day_start - first_week_day) + 1);
- if( tm.tm_mday > 31 )
- {
- tm.tm_mday = 1;
- tm.tm_mon += ico->recur->interval;
- current = mktime (&tm);
- continue;
- }
-
- switch( tm.tm_mon )
- {
- case 3:
- case 5:
- case 8:
- case 10:
- if( tm.tm_mday > 30 )
- {
- tm.tm_mday = 1;
- tm.tm_mon += ico->recur->interval;
- current = mktime (&tm);
- continue;
- }
- break;
- case 1:
- if( ((tm.tm_year+1900)%4) == 0
- && ((tm.tm_year+1900)%400) != 100
- && ((tm.tm_year+1900)%400) != 200
- && ((tm.tm_year+1900)%400) != 300 )
- {
-
- if( tm.tm_mday > 29 )
- {
- tm.tm_mday = 1;
- tm.tm_mon += ico->recur->interval;
- current = mktime (&tm);
- continue;
- }
- }
- else
- {
- if( tm.tm_mday > 28 )
- {
- tm.tm_mday = 1;
- tm.tm_mon += ico->recur->interval;
- current = mktime (&tm);
- continue;
- }
- }
- break;
- }
-
- t = mktime (&tm);
-
- if (time_in_range (t, start, end) && recur_in_range (current, ico->recur))
- if (!generate (ico, t, cb, closure))
- return;
-
- /* Advance by the appropriate number of months */
-
- current = mktime (&tm);
-
- tm.tm_mday = 1;
- tm.tm_mon += ico->recur->interval;
- current = mktime (&tm);
-
- if (current == -1) {
- g_warning ("RECUR_MONTHLY_BY_DAY: mktime error\n");
- return;
- }
- } while ((current < end) || (end == 0));
-
- break;
-
- case RECUR_MONTHLY_BY_DAY:
- do {
- struct tm tm;
- time_t t;
- int p;
-
- tm = *localtime (&current);
-
- p = tm.tm_mday;
- tm.tm_mday = ico->recur->u.month_day;
- t = mktime (&tm);
- if (time_in_range (t, start, end) && recur_in_range (current, ico->recur))
- if (!generate (ico, t, cb, closure))
- return;
-
- /* Advance by the appropriate number of months */
-
- tm.tm_mday = p;
- tm.tm_mon += ico->recur->interval;
- current = mktime (&tm);
-
- if (current == -1) {
- g_warning ("RECUR_MONTHLY_BY_DAY: mktime error\n");
- return;
- }
- } while (current < end || (end == 0));
-
- break;
-
- case RECUR_YEARLY_BY_MONTH:
- case RECUR_YEARLY_BY_DAY:
- do {
- if (time_in_range (current, start, end) && recur_in_range (current, ico->recur))
- if (!generate (ico, current, cb, closure))
- return;
-
- /* Advance */
-
- current = time_add_year (current, ico->recur->interval);
- } while (current < end || (end == 0));
-
- break;
-
- default:
- g_assert_not_reached ();
- }
-}
-
-static int
-duration_callback (iCalObject *ico, time_t start, time_t end, void *closure)
-{
- int *count = closure;
- struct tm tm;
-
- tm = *localtime (&start);
-
- (*count)++;
- if (ico->recur->duration == *count) {
- ico->recur->enddate = time_day_end (end);
- return 0;
- }
- return 1;
-}
-
-/* Computes ico->recur->enddate from ico->recur->duration */
-void
-ical_object_compute_end (iCalObject *ico)
-{
- int count = 0;
-
- g_return_if_fail (ico->recur != NULL);
-
- ico->recur->_enddate = 0;
- ico->recur->enddate = 0;
- ical_object_generate_events (ico, ico->dtstart, 0, duration_callback, &count);
-}
-
-int
-alarm_compute_offset (CalendarAlarm *a)
-{
- if (!a->enabled)
- return -1;
- switch (a->units){
- case ALARM_MINUTES:
- a->offset = a->count * 60;
- break;
- case ALARM_HOURS:
- a->offset = a->count * 3600;
- break;
- case ALARM_DAYS:
- a->offset = a->count * 24 * 3600;
- }
- return a->offset;
-}
-
-
-/**
- * ical_object_find_in_string:
- * @uid: Unique identifier of the sought object.
- * @vcalobj: String representation of a complete calendar object.
- * @ico: The resulting #iCalObject is stored here.
- *
- * Parses a complete vCalendar object string and tries to find the calendar
- * object that matches the specified @uid. If found, it stores the resulting
- * #iCalObject in the @ico parameter.
- *
- * Return value: A result code depending on whether the parse and search were
- * successful.
- **/
-CalObjFindStatus
-ical_object_find_in_string (const char *uid, const char *vcalobj, iCalObject **ico)
-{
-#if 0
- icalcomponent* comp = NULL;
- icalcomponent *subcomp;
- iCalObject *ical;
-
- g_return_val_if_fail (vcalobj != NULL, CAL_OBJ_FIND_NOT_FOUND);
-
- comp = icalparser_parse_string (vcalobj);
-
- if (!comp) {
- printf ("CAL_OBJ_FIND_SYNTAX_ERROR #1\n");
- return CAL_OBJ_FIND_SYNTAX_ERROR;
- }
-
- subcomp = icalcomponent_get_first_component (comp,
- ICAL_ANY_COMPONENT);
- if (!subcomp) {
- printf ("CAL_OBJ_FIND_SYNTAX_ERROR #2\n");
- return CAL_OBJ_FIND_SYNTAX_ERROR;
- }
-
- while (subcomp) {
- ical = ical_object_create_from_icalcomponent (subcomp);
- if (ical->type != ICAL_EVENT &&
- ical->type != ICAL_TODO &&
- ical->type != ICAL_JOURNAL) {
- g_warning ("Skipping unsupported iCalendar component");
- } else {
- if (strcasecmp (ical->uid, uid) == 0) {
- (*ico) = ical;
- (*ico)->ref_count = 1;
- printf ("CAL_OBJ_FIND_SUCCESS\n");
-
- printf ("ical_object_find_in_string:\n");
- printf ("-----------------------------------------------------\n");
- dump_icalobject (*ico);
- printf ("-----------------------------------------------------\n");
-
-
- return CAL_OBJ_FIND_SUCCESS;
- }
- }
- subcomp = icalcomponent_get_next_component (comp,
- ICAL_ANY_COMPONENT);
- }
-
- printf ("CAL_OBJ_FIND_NOT_FOUND\n");
- return CAL_OBJ_FIND_NOT_FOUND;
-
-#else /* 1 */
- VObject *vcal;
- VObjectIterator i;
- CalObjFindStatus status;
-
- g_return_val_if_fail (uid != NULL, CAL_OBJ_FIND_SYNTAX_ERROR);
- g_return_val_if_fail (vcalobj != NULL, CAL_OBJ_FIND_SYNTAX_ERROR);
- g_return_val_if_fail (ico != NULL, CAL_OBJ_FIND_SYNTAX_ERROR);
-
- *ico = NULL;
- status = CAL_OBJ_FIND_NOT_FOUND;
-
- vcal = Parse_MIME (vcalobj, strlen (vcalobj));
-
- if (!vcal)
- return CAL_OBJ_FIND_SYNTAX_ERROR;
-
- initPropIterator (&i, vcal);
-
- while (moreIteration (&i)) {
- VObject *vobj;
- VObject *uid_prop;
- char *the_str;
-
- vobj = nextVObject (&i);
-
- uid_prop = isAPropertyOf (vobj, VCUniqueStringProp);
- if (!uid_prop)
- continue;
-
- /* str_val() sets the_str to the string representation of the
- * property.
- */
- str_val (uid_prop);
-
- if (strcmp (the_str, uid) == 0) {
- const char *object_name;
-
- object_name = vObjectName (vobj);
- *ico = ical_object_create_from_vobject (vobj, object_name);
-
- if (*ico)
- status = CAL_OBJ_FIND_SUCCESS;
- }
-
- free (the_str);
-
- if (status == CAL_OBJ_FIND_SUCCESS)
- break;
- }
-
- cleanVObject (vcal);
- cleanStrTbl ();
-
- return status;
-#endif /* 1 */
-}
-
-
-#if 1
-/* Creates a VObject with the base information of a calendar */
-static VObject *
-get_calendar_base_vobject (void)
-{
- VObject *vobj;
- time_t now;
- struct tm tm;
-
- /* We call localtime for the side effect of setting tzname */
-
- now = time (NULL);
- tm = *localtime (&now);
-
- vobj = newVObject (VCCalProp);
-
- addPropValue (vobj, VCProdIdProp, PRODID);
-
-#if defined (HAVE_TM_ZONE)
- addPropValue (vobj, VCTimeZoneProp, tm.tm_zone);
-#elif defined (HAVE_TZNAME)
- addPropValue (vobj, VCTimeZoneProp, tzname[0]);
-#endif
-
- /* Per the vCalendar spec, this must be "1.0" */
- addPropValue (vobj, VCVersionProp, "1.0");
-
- return vobj;
-}
-#endif /* 0 */
-
-/**
- * ical_object_to_string:
- * @ico: A calendar object.
- *
- * Converts a vCalendar object to its string representation. It is wrapped
- * inside a complete VCALENDAR object because other auxiliary information such
- * as timezones may appear there.
- *
- * Return value: String representation of the object.
- **/
-char *
-ical_object_to_string (iCalObject *ico)
-{
-#if 0
- icalcomponent *top = icalcomponent_new (ICAL_VCALENDAR_COMPONENT);
- char *out_cal_string;
- icalcomponent *comp;
-
- printf ("ical_object_to_string:\n");
- printf ("-----------------------------------------------------\n");
- dump_icalobject (ico);
- printf ("-----------------------------------------------------\n");
-
- comp = icalcomponent_create_from_ical_object (ico);
- icalcomponent_add_component (top, comp);
- out_cal_string = icalcomponent_as_ical_string (top);
- return g_strdup (out_cal_string);
-
-#else /* 1 */
- VObject *vcalobj, *vobj;
- char *buf, *gbuf;
-
- vcalobj = get_calendar_base_vobject ();
- vobj = ical_object_to_vobject (ico);
- addVObjectProp (vcalobj, vobj);
-
- buf = writeMemVObject (NULL, NULL, vcalobj);
-
- cleanVObject (vcalobj);
- cleanStrTbl ();
-
- /* We have to g_strdup() it because libversit uses malloc()/realloc(),
- * and we want clients to be able to use g_free(). Sigh.
- */
- gbuf = g_strdup (buf);
- free (buf);
-
- return gbuf;
-#endif /* 1 */
-}
-
-
-/**
- * ical_object_compare_dates:
- * @ico1: A calendar event.
- * @ico2: A calendar event to compare with @ico1.
- *
- * Returns TRUE if the dates of both objects match, including any recurrence
- * rules. Both calendar objects must have a type of ICAL_EVENT.
- *
- * Return value: TRUE if both calendar objects have the same dates.
- **/
-gboolean
-ical_object_compare_dates (iCalObject *ico1,
- iCalObject *ico2)
-{
- Recurrence *recur1, *recur2;
- gint num_exdates;
- GList *elem1, *elem2;
- time_t *time1, *time2;
-
- g_return_val_if_fail (ico1 != NULL, FALSE);
- g_return_val_if_fail (ico2 != NULL, FALSE);
- g_return_val_if_fail (ico1->type == ICAL_EVENT, FALSE);
- g_return_val_if_fail (ico2->type == ICAL_EVENT, FALSE);
-
- /* First check the base dates. */
- if (ico1->dtstart != ico2->dtstart
- || ico1->dtend != ico2->dtend)
- return FALSE;
-
- recur1 = ico1->recur;
- recur2 = ico2->recur;
-
- /* If the event doesn't recur, we already know it matches. */
- if (!recur1 && !recur2)
- return TRUE;
-
- /* Check that both recur. */
- if (!(recur1 && recur2))
- return FALSE;
-
- /* Now we need to see if the recurrence rules are the same. */
- if (recur1->type != recur2->type
- || recur1->interval != recur2->interval
- || recur1->enddate != recur2->enddate
- || recur1->weekday != recur2->weekday
- || recur1->duration != recur2->duration
- || recur1->_enddate != recur2->_enddate
- || recur1->__count != recur2->__count)
- return FALSE;
-
- switch (recur1->type) {
- case RECUR_MONTHLY_BY_POS:
- if (recur1->u.month_pos != recur2->u.month_pos)
- return FALSE;
- break;
- case RECUR_MONTHLY_BY_DAY:
- if (recur1->u.month_day != recur2->u.month_day)
- return FALSE;
- break;
- default:
- break;
- }
-
- /* Now check if the excluded dates match. */
- num_exdates = g_list_length (ico1->exdate);
- if (g_list_length (ico2->exdate) != num_exdates)
- return FALSE;
- if (num_exdates == 0)
- return TRUE;
-
- ico1->exdate = g_list_sort (ico1->exdate, compare_exdates);
- ico2->exdate = g_list_sort (ico2->exdate, compare_exdates);
-
- elem1 = ico1->exdate;
- elem2 = ico2->exdate;
- while (elem1) {
- time1 = (time_t*) elem1->data;
- time2 = (time_t*) elem2->data;
-
- if (*time1 != *time2)
- return FALSE;
-
- elem1 = elem1->next;
- elem2 = elem2->next;
- }
-
- return TRUE;
-}
-
-
-static gint
-compare_exdates (gconstpointer a, gconstpointer b)
-{
- const time_t *ca = a, *cb = b;
- time_t diff = *ca - *cb;
- return (diff < 0) ? -1 : (diff > 0) ? 1 : 0;
-}
-
-
-/* Converts any CR/LF sequences in the summary field to spaces so we just
- have a one-line field. The iCalObjects summary field is changed. */
-static void
-ical_object_normalize_summary (iCalObject *ico)
-{
- gchar *src, *dest, ch;
- gboolean just_output_space = FALSE;
-
- src = dest = ico->summary;
- while ((ch = *src++)) {
- if (ch == '\n' || ch == '\r') {
- /* We only output 1 space for each sequence of CR & LF
- characters. */
- if (!just_output_space) {
- *dest++ = ' ';
- just_output_space = TRUE;
- }
- } else {
- *dest++ = ch;
- just_output_space = FALSE;
- }
- }
- *dest = '\0';
-}
-
-
-void dump_icalobject (iCalObject *ico)
-{
- if (!ico) {
- printf ("<<NULL>>\n");
- return;
- }
-
- printf ("type ");
- switch (ico->type) {
- case ICAL_EVENT: printf ("event"); break;
- case ICAL_TODO: printf ("todo"); break;
- case ICAL_JOURNAL: printf ("journal"); break;
- case ICAL_FBREQUEST: printf ("fbrequest"); break;
- case ICAL_FBREPLY: printf ("fbreply"); break;
- case ICAL_BUSYTIME: printf ("busytime"); break;
- case ICAL_TIMEZONE: printf ("timezone"); break;
- }
- printf ("\n");
-
- printf ("attach-length %d\n", g_list_length (ico->attach));
-
- printf ("attendee-length %d\n", g_list_length (ico->attendee));
-
- printf ("catagories-length %d\n", g_list_length (ico->categories));
-
- printf ("class '%s'\n", ico->class ? ico->class : "NULL");
-
- printf ("comment '%s'\n", ico->comment ? ico->comment : "NULL");
-
- printf ("completed %ld=%s",
- ico->completed, ctime (&ico->completed));
-
- printf ("created %ld=%s", ico->created, ctime (&ico->created));
-
- printf ("contact-length %d\n", g_list_length (ico->contact));
-
- printf ("desc '%s'\n", ico->desc ? ico->desc : "NULL");
-
- printf ("dtstamp %ld=%s", ico->dtstamp, ctime (&ico->dtstamp));
-
- printf ("dtstart %ld=%s", ico->dtstart, ctime (&ico->dtstart));
-
- printf ("dtend %ld=%s", ico->dtend, ctime (&ico->dtend));
-
- printf ("date_only %d\n", ico->date_only);
-
- printf ("exdate-length %d\n", g_list_length (ico->exdate));
-
- printf ("exrule-length %d\n", g_list_length (ico->exrule));
-
- printf ("iCalGeo %d %f %f\n",
- ico->geo.valid, ico->geo.latitude, ico->geo.longitude);
-
- printf ("last_mod %ld=%s", ico->last_mod, ctime (&ico->last_mod));
-
- printf ("location '%s'\n", ico->location ? ico->location : "NULL");
-
- printf ("organizer %p\n", ico->organizer);
-
- printf ("percent %d\n", ico->percent);
-
- printf ("priority %d\n", ico->priority);
-
- printf ("rstatus '%s'\n", ico->rstatus ? ico->rstatus : "NULL");
-
- printf ("related-length %d\n", g_list_length (ico->related));
-
- printf ("resources-length %d\n", g_list_length (ico->resources));
-
- printf ("rdate-length %d\n", g_list_length (ico->rdate));
-
- printf ("rrule-length %d\n", g_list_length (ico->rrule));
-
- printf ("seq %d\n", ico->seq);
-
- printf ("status '%s'\n", ico->status ? ico->status : "NULL");
-
- printf ("summary '%s'\n", ico->summary ? ico->summary : "NULL");
-
- printf ("transp ");
- switch (ico->transp) {
- case ICAL_OPAQUE: printf ("opaque"); break;
- case ICAL_TRANSPARENT: printf ("transparent"); break;
- }
- printf ("\n");
-
- printf ("uid '%s'\n", ico->uid ? ico->uid : "NULL");
-
- printf ("url '%s'\n", ico->url ? ico->url : "NULL");
-
- printf ("recurid %ld=%s", ico->recurid, ctime (&ico->recurid));
-
- printf ("dalarm %d\n", ico->dalarm.enabled);
-
- printf ("aalarm %d\n", ico->aalarm.enabled);
-
- printf ("palarm %d\n", ico->palarm.enabled);
-
- printf ("malarm %d\n", ico->malarm.enabled);
-
- printf ("alarms-length %d\n", g_list_length (ico->alarms));
-
- printf ("recur %p\n", ico->recur);
-
- printf ("new %d\n", ico->new);
-
- printf ("user_data %p\n", ico->user_data);
-
- printf ("ref_count %d\n", ico->ref_count);
-}
diff --git a/calendar/cal-util/calobj.h b/calendar/cal-util/calobj.h
deleted file mode 100644
index 3caef945e2..0000000000
--- a/calendar/cal-util/calobj.h
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
- * Internal representation of a Calendar object. This is modeled after the
- * iCalendar/vCalendar specificiation
- *
- * Authors: Miguel de Icaza (miguel@gnu.org)
- * Federico Mena (quartic@gimp.org).
- */
-#ifndef CALOBJ_H
-#define CALOBJ_H
-
-#include <libgnome/libgnome.h>
-#include "libversit/vcc.h"
-
-BEGIN_GNOME_DECLS
-
-/* Alarm types */
-enum AlarmType {
- ALARM_MAIL,
- ALARM_PROGRAM,
- ALARM_DISPLAY,
- ALARM_AUDIO
-};
-
-/* Whether the alarm should trigger N mins/hours/days before its due time */
-enum AlarmUnit {
- ALARM_MINUTES,
- ALARM_HOURS,
- ALARM_DAYS
-};
-
-/* Field identifiers for the iCalObject structure. These are also used to
- identify columns in ECalendarTable, so be careful when reordering them. */
-typedef enum {
- ICAL_OBJECT_FIELD_COMMENT,
- ICAL_OBJECT_FIELD_COMPLETED,
- ICAL_OBJECT_FIELD_CREATED,
- ICAL_OBJECT_FIELD_DESCRIPTION,
- ICAL_OBJECT_FIELD_DTSTAMP,
- ICAL_OBJECT_FIELD_DTSTART,
- ICAL_OBJECT_FIELD_DTEND,
- ICAL_OBJECT_FIELD_GEO,
- ICAL_OBJECT_FIELD_LAST_MOD,
- ICAL_OBJECT_FIELD_LOCATION,
- ICAL_OBJECT_FIELD_ORGANIZER,
- ICAL_OBJECT_FIELD_PERCENT,
- ICAL_OBJECT_FIELD_PRIORITY,
- ICAL_OBJECT_FIELD_SUMMARY,
- ICAL_OBJECT_FIELD_URL,
- ICAL_OBJECT_FIELD_HAS_ALARMS, /* not a real field */
- ICAL_OBJECT_FIELD_ICON, /* not a real field */
- ICAL_OBJECT_FIELD_COMPLETE, /* not a real field */
- ICAL_OBJECT_FIELD_RECURRING, /* not a real field */
- ICAL_OBJECT_FIELD_OVERDUE, /* not a real field */
- ICAL_OBJECT_FIELD_COLOR, /* not a real field */
- ICAL_OBJECT_FIELD_NUM_FIELDS
-} iCalObjectField;
-
-typedef struct {
- enum AlarmType type;
- int enabled;
- int count;
- enum AlarmUnit units;
- char *data; /* not used for iCalendar alarms */
-
- /* the following pointers are used for iCalendar alarms */
-
- char *attach; /* AUDIO, EMAIL, PROC */
- char *desc; /* DISPLAY, EMAIL, PROC */
- char *summary; /* EMAIL */
- char *attendee; /* EMAIL */
-
- /* Does not get saved, internally used */
- time_t offset;
- time_t trigger;
-
- int snooze_secs;
- int snooze_repeat;
-
- /* Widgets */
- void *w_count; /* A GtkEntry */
- void *w_enabled; /* A GtkChecButton */
- void *w_timesel; /* A GtkMenu */
- void *w_entry; /* A GnomeEntryFile/GtkEntry for PROGRAM/MAIL */
- void *w_label;
-} CalendarAlarm;
-
-/* Calendar object type */
-typedef enum {
- ICAL_EVENT,
- ICAL_TODO,
- ICAL_JOURNAL,
- ICAL_FBREQUEST,
- ICAL_FBREPLY,
- ICAL_BUSYTIME,
- ICAL_TIMEZONE
-} iCalType;
-
-/* For keys that might contain binary or text/binary */
-typedef struct {
- char *data;
- int len;
-} iCalValue;
-
-typedef enum {
- ICAL_PILOT_SYNC_NONE = 0,
- ICAL_PILOT_SYNC_MOD = 1,
- ICAL_PILOT_SYNC_DEL = 3
-} iCalPilotState;
-
-typedef struct {
- int valid; /* true if the Geography was specified */
- double latitude;
- double longitude;
-} iCalGeo;
-
-typedef enum {
- ICAL_OPAQUE,
- ICAL_TRANSPARENT
-} iCalTransp;
-
-typedef struct {
- char *uid;
- char *reltype;
-} iCalRelation;
-
-typedef char NotYet;
-
-enum RecurType {
- RECUR_DAILY,
- RECUR_WEEKLY,
- RECUR_MONTHLY_BY_POS,
- RECUR_MONTHLY_BY_DAY,
- RECUR_YEARLY_BY_MONTH,
- RECUR_YEARLY_BY_DAY,
-};
-
-#define DAY_LASTDAY 10000
-
-typedef struct {
- enum RecurType type;
-
- int interval;
-
- /* Used for recur computation */
- time_t enddate; /* If the value is zero, it is an infinite event
- * otherwise, it is either the _enddate value (if
- * this is what got specified) or it is our computed
- * ending date (computed from the duration item).
- */
-
- int weekday;
-
- union {
- int month_pos;
- int month_day;
- } u;
-
- int duration;
- time_t _enddate; /* As found on the vCalendar file */
- int __count;
-} Recurrence;
-
-/*
- NOTE: iCalPerson is used for various property values which specify
- people (e.g. ATTENDEE, ORGANIZER, etc. Not all fields are valid
- under RFC 2445 for all property values, but iCalPerson can store
- them anyway. Enforcing the RFC is a job for the parser.
-*/
-
-typedef struct {
- char *addr;
- char *name;
- char *role;
- char *partstat;
- gboolean rsvp;
- char *cutype; /* calendar user type */
- GList *member; /* group memberships */
- GList *deleg_to;
- GList *deleg_from;
- char *sent_by;
- char *directory;
- GList *altrep; /* list of char* URI's */
-} iCalPerson;
-
-#define IS_INFINITE(r) (r->duration == 0)
-
-/* Flags to indicate what has changed in an object */
-typedef enum {
- CHANGE_NEW = 1 << 0, /* new object */
- CHANGE_SUMMARY = 1 << 1, /* summary */
- CHANGE_DATES = 1 << 2, /* dtstart / dtend */
- CHANGE_ALL = CHANGE_SUMMARY | CHANGE_DATES
-} CalObjectChange;
-
-/*
- * This describes an iCalendar object, note that we never store durations, instead we
- * always compute the end time computed from the start + duration.
- */
-typedef struct {
- iCalType type;
-
- GList *attach; /* type: one or more URIs or binary data */
- GList *attendee; /* type: CAL-ADDRESS (list of iCalPerson) */
- GList *categories; /* type: one or more TEXT */
- char *class;
-
- char *comment; /* we collapse one or more TEXTs into one */
- time_t completed;
- time_t created;
- GList *contact; /* type: one or more TEXT */
- char *desc;
- time_t dtstamp;
- time_t dtstart;
- time_t dtend; /* also duedate for todo's */
- gboolean date_only; /* set if the start/end times were
- specified using dates, not times (internal use, not stored to disk) */
- GList *exdate; /* type: one or more time_t's */
- GList *exrule; /* type: one or more RECUR */
- iCalGeo geo;
- time_t last_mod;
- char *location;
- iCalPerson *organizer;
- int percent;
- int priority;
- char *rstatus; /* request status for freebusy */
- GList *related; /* type: one or more TEXT */
- GList *resources; /* type: one or more TEXT */
- GList *rdate; /* type: one or more recurrence date */
- GList *rrule; /* type: one or more recurrence rules */
- int seq;
- char *status;
- char *summary;
- iCalTransp transp;
- char *uid;
- char *url;
- time_t recurid;
-
- CalendarAlarm dalarm;
- CalendarAlarm aalarm;
- CalendarAlarm palarm;
- CalendarAlarm malarm;
-
- GList *alarms;
-
- Recurrence *recur;
-
- int new;
- void *user_data; /* Generic data pointer */
-
- /* Pilot */
- iCalPilotState pilot_status; /* Status information */
- guint32 pilot_id; /* Pilot ID */
-
- guint ref_count;
-} iCalObject;
-
-/* The callback for the recurrence generator */
-typedef int (*calendarfn) (iCalObject *, time_t, time_t, void *);
-
-iCalObject *ical_new (char *comment, char *organizer, char *summary);
-iCalObject *ical_object_new (void);
-
-void ical_object_ref (iCalObject *ico);
-void ical_object_unref (iCalObject *ico);
-
-iCalObject *ical_object_create_from_vobject (VObject *obj, const char *object_name);
-VObject *ical_object_to_vobject (iCalObject *ical);
-iCalObject *ical_object_duplicate (iCalObject *o);
-void ical_foreach (GList *events, calendarfn fn, void *closure);
-void ical_object_generate_events (iCalObject *ico, time_t start, time_t end, calendarfn cb, void *closure);
-void ical_object_add_exdate (iCalObject *o, time_t t);
-
-/* Computes the enddate field of the recurrence based on the duration */
-void ical_object_compute_end (iCalObject *ico);
-
-typedef enum {
- CAL_OBJ_FIND_SUCCESS,
- CAL_OBJ_FIND_SYNTAX_ERROR,
- CAL_OBJ_FIND_NOT_FOUND
-} CalObjFindStatus;
-
-CalObjFindStatus ical_object_find_in_string (const char *uid, const char *vcalobj, iCalObject **ico);
-
-char *ical_object_to_string (iCalObject *ico);
-
-
-/* Returns the first toggled day in a weekday mask -- we do this because we do not support multiple
- * days on a monthly-by-pos recurrence. If no days are toggled, it returns -1.
- */
-int ical_object_get_first_weekday (int weekday_mask);
-
-/* Returns the number of seconds configured to trigger the alarm in advance to an event */
-int alarm_compute_offset (CalendarAlarm *a);
-
-
-/* Returns TRUE if the dates of both objects match, including any recurrence
- rules. */
-gboolean ical_object_compare_dates (iCalObject *ico1, iCalObject *ico2);
-
-/* Generates a new uid for a calendar object. Should be g_free'd eventually. */
-char *ical_gen_uid (void);
-
-/* This resets any recurrence rules of the iCalObject. */
-void ical_object_reset_recurrence (iCalObject *ico);
-
-
-void dump_icalobject (iCalObject *ico);
-
-END_GNOME_DECLS
-
-#endif
-
diff --git a/calendar/cal-util/test-recur.c b/calendar/cal-util/test-recur.c
deleted file mode 100644
index e84b0f9201..0000000000
--- a/calendar/cal-util/test-recur.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@helixcode.com>
- *
- * Copyright 2000, Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * This tests the recurrence rule expansion functions.
- *
- * NOTE: currently it starts from the event start date and continues
- * until all recurrence rules/dates end or we reach MAX_OCCURRENCES
- * occurrences. So it does not test generating occurrences for a specific
- * interval. A nice addition might be to do this automatically and compare
- * the results from the complete set to ensure they match.
- */
-
-#include <config.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <gtk/gtkmain.h>
-#include <cal-util/cal-recur.h>
-
-
-/* Since events can recur infinitely, we set a limit to the number of
- occurrences we output. */
-#define MAX_OCCURRENCES 1000
-
-static void usage (void);
-static icalcomponent* scan_ics_file (char *filename);
-static char* get_line (char *s,
- size_t size,
- void *data);
-static void generate_occurrences (icalcomponent *comp);
-static gboolean occurrence_cb (CalComponent *comp,
- time_t instance_start,
- time_t instance_end,
- gpointer data);
-
-
-int
-main (int argc,
- char *argv[])
-{
- gchar *filename;
- icalcomponent *icalcomp;
-
- gtk_init (&argc, &argv);
-
- if (argc != 2)
- usage ();
-
- filename = argv[1];
-
- icalcomp = scan_ics_file (filename);
- if (icalcomp)
- generate_occurrences (icalcomp);
-
- return 0;
-}
-
-
-static void
-usage (void)
-{
- g_print ("Usage: test-recur <filename>\n");
- exit (1);
-}
-
-
-static icalcomponent*
-scan_ics_file (char *filename)
-{
- FILE *fp;
- icalcomponent *icalcomp;
- icalparser *parser;
-
- g_print ("Opening file: %s\n", filename);
- fp = fopen (filename, "r");
-
- if (!fp) {
- g_print ("Can't open file: %s\n", filename);
- return NULL;
- }
-
- parser = icalparser_new ();
- icalparser_set_gen_data (parser, fp);
-
- icalcomp = icalparser_parse (parser, get_line);
- icalparser_free (parser);
-
- return icalcomp;
-}
-
-
-/* Callback used from icalparser_parse() */
-static char *
-get_line (char *s,
- size_t size,
- void *data)
-{
- return fgets (s, size, (FILE*) data);
-}
-
-
-static void
-generate_occurrences (icalcomponent *icalcomp)
-{
- icalcompiter iter;
-
- for (iter = icalcomponent_begin_component (icalcomp, ICAL_ANY_COMPONENT);
- icalcompiter_deref (&iter) != NULL;
- icalcompiter_next (&iter)) {
- icalcomponent *tmp_icalcomp;
- CalComponent *comp;
- icalcomponent_kind kind;
- gint occurrences;
-
- tmp_icalcomp = icalcompiter_deref (&iter);
- kind = icalcomponent_isa (tmp_icalcomp);
-
- if (!(kind == ICAL_VEVENT_COMPONENT
- || kind == ICAL_VTODO_COMPONENT
- || kind == ICAL_VJOURNAL_COMPONENT))
- continue;
-
- comp = cal_component_new ();
-
- if (!cal_component_set_icalcomponent (comp, tmp_icalcomp))
- continue;
-
- g_print ("#############################################################################\n");
- g_print ("%s\n\n", icalcomponent_as_ical_string (tmp_icalcomp));
- g_print ("Instances:\n");
-
- occurrences = 0;
- /* I use specific times when I am trying to pin down a bug seen
- in one of the calendar views. */
-#if 0
- cal_recur_generate_instances (comp, 982022400, 982108800,
- occurrence_cb, &occurrences);
-#else
- cal_recur_generate_instances (comp, -1, -1,
- occurrence_cb, &occurrences);
-#endif
-
- /* Print the component again so we can see the
- X-EVOLUTION-ENDDATE parameter (only set if COUNT is used).
- */
- g_print ("#############################################################################\n");
-#if 0
- g_print ("%s\n\n", icalcomponent_as_ical_string (tmp_icalcomp));
-#endif
- }
-}
-
-
-static gboolean
-occurrence_cb (CalComponent *comp,
- time_t instance_start,
- time_t instance_end,
- gpointer data)
-{
- char start[32], finish[32];
- gint *occurrences;
-
- occurrences = (gint*) data;
-
- strcpy (start, ctime (&instance_start));
- start[24] = '\0';
- strcpy (finish, ctime (&instance_end));
- finish[24] = '\0';
-
- g_print ("%s - %s\n", start, finish);
-
- (*occurrences)++;
- return (*occurrences == MAX_OCCURRENCES) ? FALSE : TRUE;
-}
diff --git a/calendar/cal-util/timeutil.c b/calendar/cal-util/timeutil.c
deleted file mode 100644
index 764ec5d078..0000000000
--- a/calendar/cal-util/timeutil.c
+++ /dev/null
@@ -1,385 +0,0 @@
-/* Miscellaneous time-related utilities
- *
- * Copyright (C) 1998 The Free Software Foundation
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Authors: Federico Mena <federico@ximian.com>
- * Miguel de Icaza <miguel@ximian.com>
- */
-
-#include <string.h>
-#include <ctype.h>
-#include <glib.h>
-#include "timeutil.h"
-
-
-
-void
-print_time_t (time_t t)
-{
- struct tm *tm = localtime (&t);
-
- printf ("%d/%02d/%02d %02d:%02d:%02d",
- 1900 + tm->tm_year, tm->tm_mon+1, tm->tm_mday,
- tm->tm_hour, tm->tm_min, tm->tm_sec);
-}
-
-/**
- * isodate_from_time_t:
- * @t: A time value.
- *
- * Creates an ISO 8601 local time representation from a time value.
- *
- * Return value: String with the ISO 8601 representation of the local time.
- **/
-char *
-isodate_from_time_t (time_t t)
-{
- struct tm *tm;
- char isotime[40];
-
- tm = localtime (&t);
- strftime (isotime, sizeof (isotime)-1, "%Y%m%dT%H%M%S", tm);
- return g_strdup (isotime);
-}
-
-/**
- * time_from_isodate:
- * @str: Date/time value in ISO 8601 format.
- *
- * Converts an ISO 8601 time string into a time_t value.
- *
- * Return value: Time_t corresponding to the specified ISO string.
- **/
-time_t
-time_from_isodate (const char *str)
-{
- int len;
- struct tm my_tm;
- time_t t;
- int i;
-
- g_return_val_if_fail (str != NULL, -1);
-
- /* yyyymmdd[Thhmmss[Z]] */
-
- len = strlen (str);
-
- if (!(len == 8 || len == 15 || len == 16))
- return -1;
-
- for (i = 0; i < len; i++)
- if (!((i != 8 && i != 15 && isdigit (str[i]))
- || (i == 8 && str[i] == 'T')
- || (i == 15 && str[i] == 'Z')))
- return -1;
-
- memset (&my_tm, 0, sizeof (my_tm));
-
-#define digit_at(x,y) (x[y] - '0')
-
- my_tm.tm_year = (digit_at (str, 0) * 1000 + digit_at (str, 1) * 100 +
- digit_at (str, 2) * 10 + digit_at (str, 3)) - 1900;
-
- my_tm.tm_mon = digit_at (str, 4) * 10 + digit_at (str, 5) - 1;
- my_tm.tm_mday = digit_at (str, 6) * 10 + digit_at (str, 7);
-
- if (len > 8) {
- my_tm.tm_hour = digit_at (str, 9) * 10 + digit_at (str, 10);
- my_tm.tm_min = digit_at (str, 11) * 10 + digit_at (str, 12);
- my_tm.tm_sec = digit_at (str, 13) * 10 + digit_at (str, 14);
- }
-
- my_tm.tm_isdst = -1;
-
- t = mktime (&my_tm);
-
- if (len == 16) {
-#if defined(HAVE_TM_GMTOFF)
- t += my_tm.tm_gmtoff;
-#elif defined(HAVE_TIMEZONE)
- t -= timezone;
-#endif
- }
-
- return t;
-}
-
-time_t
-time_add_minutes (time_t time, int minutes)
-{
- struct tm *tm = localtime (&time);
- time_t new_time;
-
- tm->tm_min += minutes;
- if ((new_time = mktime (tm)) == -1) {
- g_message ("time_add_minutes(): mktime() could not handle "
- "adding %d minutes with\n", minutes);
- print_time_t (time);
- printf ("\n");
- return time;
- }
- return new_time;
-}
-
-/* Adds a day onto the time, using local time.
- Note that if clocks go forward due to daylight savings time, there are
- some non-existent local times, so the hour may be changed to make it a
- valid time. This also means that it may not be wise to keep calling
- time_add_day() to step through a certain period - if the hour gets changed
- to make it valid time, any further calls to time_add_day() will also return
- this hour, which may not be what you want. */
-time_t
-time_add_day (time_t time, int days)
-{
- struct tm *tm = localtime (&time);
- time_t new_time;
-#if 0
- int dst_flag = tm->tm_isdst;
-#endif
-
- tm->tm_mday += days;
- tm->tm_isdst = -1;
-
- if ((new_time = mktime (tm)) == -1) {
- g_message ("time_add_day(): mktime() could not handling adding %d days with\n",
- days);
- print_time_t (time);
- printf ("\n");
- return time;
- }
-
-#if 0
- /* I don't know what this is for. See also time_day_begin() and
- time_day_end(). - Damon. */
- if (dst_flag > tm->tm_isdst) {
- tm->tm_hour++;
- new_time += 3600;
- } else if (dst_flag < tm->tm_isdst) {
- tm->tm_hour--;
- new_time -= 3600;
- }
-#endif
-
- return new_time;
-}
-
-time_t
-time_add_week (time_t time, int weeks)
-{
- return time_add_day (time, weeks * 7);
-}
-
-time_t
-time_add_month (time_t time, int months)
-{
- struct tm *tm = localtime (&time);
- time_t new_time;
- int mday;
-
- mday = tm->tm_mday;
-
- tm->tm_mon += months;
- tm->tm_isdst = -1;
- if ((new_time = mktime (tm)) == -1) {
- g_message ("time_add_month(): mktime() could not handling adding %d months with\n",
- months);
- print_time_t (time);
- printf ("\n");
- return time;
- }
- tm = localtime (&new_time);
- if (tm->tm_mday < mday) {
- tm->tm_mon--;
- tm->tm_mday = time_days_in_month (tm->tm_year+1900, tm->tm_mon);
- return new_time = mktime (tm);
- }
- else
- return new_time;
-}
-
-time_t
-time_add_year (time_t time, int years)
-{
- struct tm *tm = localtime (&time);
- time_t new_time;
-
- tm->tm_year += years;
- if ((new_time = mktime (tm)) == -1) {
- g_message ("time_add_year(): mktime() could not handling adding %d years with\n",
- years);
- print_time_t (time);
- printf ("\n");
- return time;
- }
- return new_time;
-}
-
-/* Number of days in a month, for normal and leap years */
-static const int days_in_month[2][12] = {
- { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
- { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
-};
-
-/* Returns whether the specified year is a leap year */
-static int
-is_leap_year (int year)
-{
- if (year <= 1752)
- return !(year % 4);
- else
- return (!(year % 4) && (year % 100)) || !(year % 400);
-}
-
-int
-time_days_in_month (int year, int month)
-{
- g_return_val_if_fail (year >= 1900, 0);
- g_return_val_if_fail ((month >= 0) && (month < 12), 0);
-
- return days_in_month [is_leap_year (year)][month];
-}
-
-time_t
-time_from_day (int year, int month, int day)
-{
- struct tm tm;
-
- memset (&tm, 0, sizeof (tm));
- tm.tm_year = year - 1900;
- tm.tm_mon = month;
- tm.tm_mday = day;
- tm.tm_isdst = -1;
-
- return mktime (&tm);
-}
-
-time_t
-time_year_begin (time_t t)
-{
- struct tm tm;
-
- tm = *localtime (&t);
- tm.tm_hour = 0;
- tm.tm_min = 0;
- tm.tm_sec = 0;
- tm.tm_mon = 0;
- tm.tm_mday = 1;
- tm.tm_isdst = -1;
-
- return mktime (&tm);
-}
-
-time_t
-time_year_end (time_t t)
-{
- struct tm tm;
-
- tm = *localtime (&t);
- tm.tm_hour = 0;
- tm.tm_min = 0;
- tm.tm_sec = 0;
- tm.tm_mon = 0;
- tm.tm_mday = 1;
- tm.tm_year++;
- tm.tm_isdst = -1;
-
- return mktime (&tm);
-}
-
-time_t
-time_month_begin (time_t t)
-{
- struct tm tm;
-
- tm = *localtime (&t);
- tm.tm_hour = 0;
- tm.tm_min = 0;
- tm.tm_sec = 0;
- tm.tm_mday = 1;
- tm.tm_isdst = -1;
-
- return mktime (&tm);
-}
-
-time_t
-time_month_end (time_t t)
-{
- struct tm tm;
-
- tm = *localtime (&t);
- tm.tm_hour = 0;
- tm.tm_min = 0;
- tm.tm_sec = 0;
- tm.tm_mday = 1;
- tm.tm_mon++;
- tm.tm_isdst = -1;
-
- return mktime (&tm);
-}
-
-time_t
-time_week_begin (time_t t)
-{
- struct tm tm;
-
- /* FIXME: make it take week_starts_on_monday into account */
-
- tm = *localtime (&t);
- tm.tm_hour = 0;
- tm.tm_min = 0;
- tm.tm_sec = 0;
- tm.tm_mday -= tm.tm_wday;
- tm.tm_isdst = -1;
-
- return mktime (&tm);
-}
-
-time_t
-time_week_end (time_t t)
-{
- struct tm tm;
-
- /* FIXME: make it take week_starts_on_monday into account */
-
- tm = *localtime (&t);
- tm.tm_hour = 0;
- tm.tm_min = 0;
- tm.tm_sec = 0;
- tm.tm_mday += 7 - tm.tm_wday;
- tm.tm_isdst = -1;
-
- return mktime (&tm);
-}
-
-/* Returns the start of the day, according to the local time. */
-time_t
-time_day_begin (time_t t)
-{
- struct tm tm;
-
- tm = *localtime (&t);
- tm.tm_hour = 0;
- tm.tm_min = 0;
- tm.tm_sec = 0;
- tm.tm_isdst = -1;
-
- return mktime (&tm);
-}
-
-/* Returns the end of the day, according to the local time. */
-time_t
-time_day_end (time_t t)
-{
- struct tm tm;
-
- tm = *localtime (&t);
- tm.tm_mday++;
- tm.tm_hour = 0;
- tm.tm_min = 0;
- tm.tm_sec = 0;
- tm.tm_isdst = -1;
-
- return mktime (&tm);
-}
diff --git a/calendar/cal-util/timeutil.h b/calendar/cal-util/timeutil.h
deleted file mode 100644
index 04f1ca4867..0000000000
--- a/calendar/cal-util/timeutil.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* Miscellaneous time-related utilities
- *
- * Copyright (C) 1998 The Free Software Foundation
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Authors: Federico Mena <federico@ximian.com>
- * Miguel de Icaza <miguel@ximian.com>
- */
-
-#ifndef TIMEUTIL_H
-#define TIMEUTIL_H
-
-
-#include <time.h>
-#include <ical.h>
-
-
-char *isodate_from_time_t (time_t t);
-time_t time_from_isodate (const char *str);
-
-time_t time_add_minutes (time_t time, int minutes);
-time_t time_add_day (time_t time, int days);
-time_t time_add_week (time_t time, int weeks);
-time_t time_add_month (time_t time, int months);
-time_t time_add_year (time_t time, int years);
-
-
-/* Returns the number of days in the specified month. Years are full years (starting from year 1).
- * Months are in [0, 11].
- */
-int time_days_in_month (int year, int month);
-
-/* Converts the specified date to a time_t at the start of the specified day. Years are full years
- * (starting from year 1). Months are in [0, 11]. Days are 1-based.
- */
-time_t time_from_day (int year, int month, int day);
-
-/* For the functions below, time ranges are considered to contain the start time, but not the end
- * time.
- */
-
-/* These two functions take a time value and return the beginning or end of the corresponding year,
- * respectively.
- */
-time_t time_year_begin (time_t t);
-time_t time_year_end (time_t t);
-
-/* These two functions take a time value and return the beginning or end of the corresponding month,
- * respectively.
- */
-time_t time_month_begin (time_t t);
-time_t time_month_end (time_t t);
-
-/* These functions take a time value and return the beginning or end of the corresponding week,
- * respectively. This takes into account the global week_starts_on_monday flag.
- */
-time_t time_week_begin (time_t t);
-time_t time_week_end (time_t t);
-
-/* These two functions take a time value and return the beginning or end of the corresponding day,
- * respectively.
- */
-time_t time_day_begin (time_t t);
-time_t time_day_end (time_t t);
-
-void print_time_t (time_t t);
-
-
-#endif
diff --git a/calendar/conduits/.cvsignore b/calendar/conduits/.cvsignore
deleted file mode 100644
index b840c21800..0000000000
--- a/calendar/conduits/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile.in
-Makefile \ No newline at end of file
diff --git a/calendar/conduits/Makefile.am b/calendar/conduits/Makefile.am
deleted file mode 100644
index 906ea61971..0000000000
--- a/calendar/conduits/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS = calendar todo
diff --git a/calendar/conduits/calendar/.cvsignore b/calendar/conduits/calendar/.cvsignore
deleted file mode 100644
index e8ba6ad844..0000000000
--- a/calendar/conduits/calendar/.cvsignore
+++ /dev/null
@@ -1,9 +0,0 @@
-Makefile.in
-Makefile
-.deps
-e-calendar.conduit
-*.lo
-.libs
-libecalendar_conduit.la
-e-calendar-conduit-control-applet
-e-calendar-conduit-control-applet.desktop
diff --git a/calendar/conduits/calendar/Makefile.am b/calendar/conduits/calendar/Makefile.am
deleted file mode 100644
index 8d8b81a9ee..0000000000
--- a/calendar/conduits/calendar/Makefile.am
+++ /dev/null
@@ -1,45 +0,0 @@
-INCLUDES = \
- -I$(top_srcdir) \
- -I$(top_srcdir)/calendar \
- -I$(top_srcdir)/libical/src/libical \
- -I$(top_builddir)/libical/src/libical \
- -I$(top_builddir)/e-util \
- $(BONOBO_GNOME_CFLAGS) \
- $(PISOCK_CFLAGS) \
- $(GNOME_PILOT_CFLAGS)
-
-# Calendar Conduit
-e_calendar_conduitsdir=$(libdir)/gnome-pilot/conduits
-e_calendar_conduits_LTLIBRARIES = libecalendar_conduit.la
-
-libecalendar_conduit_la_SOURCES = \
- calendar-conduit.c \
- calendar-conduit.h \
- calendar-conduit-config.h
-
-libecalendar_conduit_la_LDFLAGS = -module -avoid-version
-libecalendar_conduit_la_LIBADD = \
- $(top_builddir)/calendar/cal-client/libcal-client-static.la \
- $(top_builddir)/calendar/cal-util/libcal-util-static.la \
- $(top_builddir)/libversit/libversit.la \
- $(top_builddir)/libical/src/libical/libical-static.la \
- $(top_builddir)/e-util/libeconduit-static.la \
- $(BONOBO_GNOME_LIBS) \
- $(PISOCK_LIBS) \
- $(GNOME_LIBDIR) \
- $(GNOME_LIBS)
-
-e-calendar.conduit: e-calendar.conduit.in Makefile
- sed -e 's^\@prefix\@^$(prefix)^g' \
- -e 's^\@datadir\@^$(datadir)^g' \
- < $(srcdir)/e-calendar.conduit.in > e-calendar.conduit.tmp \
- && mv e-calendar.conduit.tmp e-calendar.conduit
-
-Conduitdir = $(datadir)/gnome-pilot/conduits/
-Conduit_DATA = e-calendar.conduit
-
-EXTRA_DIST = \
- e-calendar.conduit.in
-
-install-data-local:
- $(mkinstalldirs) $(Conduitdir)
diff --git a/calendar/conduits/calendar/calendar-conduit-config.h b/calendar/conduits/calendar/calendar-conduit-config.h
deleted file mode 100644
index d0ba28dbb1..0000000000
--- a/calendar/conduits/calendar/calendar-conduit-config.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* Evolution calendar - Calendar Conduit Configuration
- *
- * Copyright (C) 1998 Free Software Foundation
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Authors: Eskil Heyn Olsen <deity@eskil.dk>
- * JP Rosevear <jpr@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef __CAL_CONDUIT_CONFIG_H__
-#define __CAL_CONDUIT_CONFIG_H__
-
-#include <gnome.h>
-#include <libgpilotdCM/gnome-pilot-conduit-management.h>
-#include <libgpilotdCM/gnome-pilot-conduit-config.h>
-
-/* Configuration info */
-typedef struct _ECalConduitCfg ECalConduitCfg;
-struct _ECalConduitCfg {
- gboolean open_secret;
- guint32 pilot_id;
- GnomePilotConduitSyncType sync_type; /* only used by capplet */
-};
-
-#ifdef CAL_CONFIG_LOAD
-/* Loads the configuration data */
-static void
-calconduit_load_configuration (ECalConduitCfg **c, guint32 pilot_id)
-{
- gchar prefix[256];
- g_snprintf (prefix, 255, "/gnome-pilot.d/e-todo-conduit/Pilot_%u/",
- pilot_id);
-
- *c = g_new0 (ECalConduitCfg,1);
- g_assert (*c != NULL);
-
- gnome_config_push_prefix (prefix);
- (*c)->open_secret = gnome_config_get_bool ("open_secret=FALSE");
-
- /* set in capplets main */
- (*c)->sync_type = GnomePilotConduitSyncTypeCustom;
- gnome_config_pop_prefix ();
-
- (*c)->pilot_id = pilot_id;
-}
-#endif
-
-#ifdef CAL_CONFIG_SAVE
-/* Saves the configuration data. */
-static void
-calconduit_save_configuration (ECalConduitCfg *c)
-{
- gchar prefix[256];
-
- g_snprintf (prefix, 255, "/gnome-pilot.d/e-todo-conduit/Pilot_%u/",
- c->pilot_id);
-
- gnome_config_push_prefix (prefix);
- gnome_config_set_bool ("open_secret", c->open_secret);
- gnome_config_pop_prefix ();
-
- gnome_config_sync ();
- gnome_config_drop_all ();
-}
-#endif
-
-#ifdef CAL_CONFIG_DUPE
-/* Creates a duplicate of the configuration data */
-static ECalConduitCfg*
-calconduit_dupe_configuration (ECalConduitCfg *c)
-{
- ECalConduitCfg *retval;
-
- g_return_val_if_fail (c != NULL, NULL);
-
- retval = g_new0 (ECalConduitCfg, 1);
- retval->sync_type = c->sync_type;
- retval->open_secret = c->open_secret;
- retval->pilot_id = c->pilot_id;
-
- return retval;
-}
-#endif
-
-#ifdef CAL_CONFIG_DESTROY
-/* Destroy a configuration */
-static void
-calconduit_destroy_configuration (ECalConduitCfg **c)
-{
- g_return_if_fail (c != NULL);
- g_return_if_fail (*c != NULL);
-
- g_free (*c);
- *c = NULL;
-}
-#endif
-
-#endif __CAL_CONDUIT_CONFIG_H__
-
-
-
-
-
-
-
diff --git a/calendar/conduits/calendar/calendar-conduit.c b/calendar/conduits/calendar/calendar-conduit.c
deleted file mode 100644
index 155813d65e..0000000000
--- a/calendar/conduits/calendar/calendar-conduit.c
+++ /dev/null
@@ -1,1198 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* Evolution calendar - Calendar Conduit
- *
- * Copyright (C) 1998 Free Software Foundation
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Authors: Eskil Heyn Olsen <deity@eskil.dk>
- * JP Rosevear <jpr@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-
-#include <liboaf/liboaf.h>
-#include <bonobo.h>
-#include <cal-client/cal-client-types.h>
-#include <cal-client/cal-client.h>
-#include <cal-util/timeutil.h>
-#include <pi-source.h>
-#include <pi-socket.h>
-#include <pi-file.h>
-#include <pi-dlp.h>
-#include <libical/src/libical/icaltypes.h>
-#include <e-pilot-util.h>
-
-#define CAL_CONFIG_LOAD 1
-#define CAL_CONFIG_DESTROY 1
-#include <calendar-conduit-config.h>
-#undef CAL_CONFIG_LOAD
-#undef CAL_CONFIG_DESTROY
-
-#include <calendar-conduit.h>
-
-GnomePilotConduit * conduit_get_gpilot_conduit (guint32);
-void conduit_destroy_gpilot_conduit (GnomePilotConduit*);
-
-#define CONDUIT_VERSION "0.1.5"
-#ifdef G_LOG_DOMAIN
-#undef G_LOG_DOMAIN
-#endif
-#define G_LOG_DOMAIN "ecalconduit"
-
-#define DEBUG_CALCONDUIT 1
-/* #undef DEBUG_CALCONDUIT */
-
-#ifdef DEBUG_CALCONDUIT
-#define LOG(e...) g_log (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, e)
-#else
-#define LOG(e...)
-#endif
-
-#define WARN(e...) g_log (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, e)
-#define INFO(e...) g_log (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, e)
-
-/* Debug routines */
-static char *
-print_local (ECalLocalRecord *local)
-{
- static char buff[ 4096 ];
-
- if (local == NULL) {
- sprintf (buff, "[NULL]");
- return buff;
- }
-
- if (local->appt && local->appt->description) {
- g_snprintf (buff, 4096, "[%ld %ld '%s' '%s']",
- mktime (&local->appt->begin),
- mktime (&local->appt->end),
- local->appt->description ?
- local->appt->description : "",
- local->appt->note ?
- local->appt->note : "");
- return buff;
- }
-
- return "";
-}
-
-static char *print_remote (GnomePilotRecord *remote)
-{
- static char buff[ 4096 ];
- struct Appointment appt;
-
- if (remote == NULL) {
- sprintf (buff, "[NULL]");
- return buff;
- }
-
- memset (&appt, 0, sizeof (struct Appointment));
- unpack_Appointment (&appt, remote->record, remote->length);
-
- g_snprintf (buff, 4096, "[%ld %ld '%s' '%s']",
- mktime (&appt.begin),
- mktime (&appt.end),
- appt.description ?
- appt.description : "",
- appt.note ?
- appt.note : "");
-
- return buff;
-}
-
-/* Context Routines */
-static ECalConduitContext *
-e_calendar_context_new (guint32 pilot_id)
-{
- ECalConduitContext *ctxt = g_new0 (ECalConduitContext, 1);
-
- calconduit_load_configuration (&ctxt->cfg, pilot_id);
-
- return ctxt;
-}
-
-static void
-e_calendar_context_foreach_change (gpointer key, gpointer value, gpointer data)
-{
- g_free (key);
-}
-
-static void
-e_calendar_context_destroy (ECalConduitContext *ctxt)
-{
- g_return_if_fail (ctxt != NULL);
-
- if (ctxt->cfg != NULL)
- calconduit_destroy_configuration (&ctxt->cfg);
-
- if (ctxt->client != NULL)
- gtk_object_unref (GTK_OBJECT (ctxt->client));
-
- if (ctxt->calendar_file)
- g_free (ctxt->calendar_file);
-
- if (ctxt->uids)
- cal_obj_uid_list_free (ctxt->uids);
-
- if (ctxt->changed_hash)
- g_hash_table_foreach (ctxt->changed_hash, e_calendar_context_foreach_change, NULL);
-
- if (ctxt->changed)
- cal_client_change_list_free (ctxt->changed);
-
- if (ctxt->map)
- e_pilot_map_destroy (ctxt->map);
-
- g_free (ctxt);
-}
-
-/* Calendar Server routines */
-static void
-start_calendar_server_cb (CalClient *cal_client,
- CalClientOpenStatus status,
- gpointer data)
-{
- ECalConduitContext *ctxt;
-
- ctxt = data;
-
- LOG (" entering start_calendar_server_cb\n");
-
- if (status == CAL_CLIENT_OPEN_SUCCESS) {
- ctxt->calendar_open_success = TRUE;
- LOG (" success\n");
- } else
- LOG (" open of calendar failed\n");
-
- gtk_main_quit (); /* end the sub event loop */
-}
-
-static int
-start_calendar_server (ECalConduitContext *ctxt)
-{
-
- g_return_val_if_fail (ctxt != NULL, -2);
-
- ctxt->client = cal_client_new ();
-
- /* FIX ME */
- ctxt->calendar_file = g_concat_dir_and_file (g_get_home_dir (),
- "evolution/local/Calendar/calendar.ics");
-
- gtk_signal_connect (GTK_OBJECT (ctxt->client), "cal_opened",
- start_calendar_server_cb, ctxt);
-
- LOG (" calling cal_client_open_calendar\n");
- if (!cal_client_open_calendar (ctxt->client, ctxt->calendar_file, FALSE))
- return -1;
-
- /* run a sub event loop to turn cal-client's async load
- notification into a synchronous call */
- gtk_main ();
-
- if (ctxt->calendar_open_success)
- return 0;
-
- return -1;
-}
-
-/* Utility routines */
-static char *
-map_name (ECalConduitContext *ctxt)
-{
- char *filename;
-
- filename = g_strdup_printf ("%s/evolution/local/Calendar/pilot-map-calendar-%d.xml", g_get_home_dir (), ctxt->cfg->pilot_id);
-
- return filename;
-}
-
-static icalrecurrencetype_weekday
-get_ical_day (int day)
-{
- switch (day) {
- case 0:
- return ICAL_SUNDAY_WEEKDAY;
- case 1:
- return ICAL_MONDAY_WEEKDAY;
- case 2:
- return ICAL_TUESDAY_WEEKDAY;
- case 3:
- return ICAL_WEDNESDAY_WEEKDAY;
- case 4:
- return ICAL_THURSDAY_WEEKDAY;
- case 5:
- return ICAL_FRIDAY_WEEKDAY;
- case 6:
- return ICAL_SATURDAY_WEEKDAY;
- }
-
- return ICAL_NO_WEEKDAY;
-}
-
-static int
-get_pilot_day (icalrecurrencetype_weekday wd)
-{
- switch (wd) {
- case ICAL_SUNDAY_WEEKDAY:
- return 0;
- case ICAL_MONDAY_WEEKDAY:
- return 1;
- case ICAL_TUESDAY_WEEKDAY:
- return 2;
- case ICAL_WEDNESDAY_WEEKDAY:
- return 3;
- case ICAL_THURSDAY_WEEKDAY:
- return 4;
- case ICAL_FRIDAY_WEEKDAY:
- return 5;
- case ICAL_SATURDAY_WEEKDAY:
- return 6;
- default:
- return -1;
- }
-}
-
-static gboolean
-is_empty_time (struct tm time)
-{
- if (time.tm_sec || time.tm_min || time.tm_hour
- || time.tm_mday || time.tm_mon || time.tm_year)
- return FALSE;
-
- return TRUE;
-}
-
-static short
-nth_weekday (int pos, icalrecurrencetype_weekday weekday)
-{
- g_assert (pos > 0 && pos <= 5);
-
- return (pos << 3) | (int) weekday;
-}
-
-static GList *
-next_changed_item (ECalConduitContext *ctxt, GList *changes)
-{
- CalClientChange *ccc;
- GList *l;
-
- for (l = changes; l != NULL; l = l->next) {
- const char *uid;
-
- ccc = l->data;
-
- cal_component_get_uid (ccc->comp, &uid);
- if (g_hash_table_lookup (ctxt->changed_hash, uid))
- return l;
- }
-
- return NULL;
-}
-
-static void
-compute_status (ECalConduitContext *ctxt, ECalLocalRecord *local, const char *uid)
-{
- CalClientChange *ccc;
-
- local->local.archived = FALSE;
- local->local.secret = FALSE;
-
- ccc = g_hash_table_lookup (ctxt->changed_hash, uid);
-
- if (ccc == NULL) {
- local->local.attr = GnomePilotRecordNothing;
- return;
- }
-
- switch (ccc->type) {
- case CAL_CLIENT_CHANGE_ADDED:
- local->local.attr = GnomePilotRecordNew;
- break;
-
- case CAL_CLIENT_CHANGE_MODIFIED:
- local->local.attr = GnomePilotRecordModified;
- break;
-
- case CAL_CLIENT_CHANGE_DELETED:
- local->local.attr = GnomePilotRecordDeleted;
- break;
- }
-}
-
-static GnomePilotRecord
-local_record_to_pilot_record (ECalLocalRecord *local,
- ECalConduitContext *ctxt)
-{
- GnomePilotRecord p;
-
- g_assert (local->comp != NULL);
- g_assert (local->appt != NULL );
-
- p.ID = local->local.ID;
- p.category = 0;
- p.attr = local->local.attr;
- p.archived = local->local.archived;
- p.secret = local->local.secret;
-
- /* Generate pilot record structure */
- p.record = g_new0 (char, 0xffff);
- p.length = pack_Appointment (local->appt, p.record, 0xffff);
-
- return p;
-}
-
-/*
- * converts a CalComponent object to a ECalLocalRecord
- */
-static void
-local_record_from_comp (ECalLocalRecord *local, CalComponent *comp, ECalConduitContext *ctxt)
-{
- const char *uid;
- CalComponentText summary;
- GSList *d_list = NULL;
- CalComponentText *description;
- CalComponentDateTime dt;
- time_t dt_time;
- CalComponentClassification classif;
- int i;
-
- g_return_if_fail (local != NULL);
- g_return_if_fail (comp != NULL);
-
- local->comp = comp;
- gtk_object_ref (GTK_OBJECT (comp));
-
- cal_component_get_uid (local->comp, &uid);
- local->local.ID = e_pilot_map_lookup_pid (ctxt->map, uid);
- compute_status (ctxt, local, uid);
-
- local->appt = g_new0 (struct Appointment, 1);
-
- /* STOP: don't replace these with g_strdup, since free_Appointment
- uses free to deallocate */
- cal_component_get_summary (comp, &summary);
- if (summary.value)
- local->appt->description = e_pilot_utf8_to_pchar (summary.value);
-
- cal_component_get_description_list (comp, &d_list);
- if (d_list) {
- description = (CalComponentText *) d_list->data;
- if (description && description->value)
- local->appt->note = e_pilot_utf8_to_pchar (description->value);
- else
- local->appt->note = NULL;
- } else {
- local->appt->note = NULL;
- }
-
- cal_component_get_dtstart (comp, &dt);
- if (dt.value) {
- dt_time = icaltime_as_timet (*dt.value);
-
- local->appt->begin = *localtime (&dt_time);
- }
-
- cal_component_get_dtend (comp, &dt);
- if (dt.value && time_add_day (dt_time, 1) != icaltime_as_timet (*dt.value)) {
- dt_time = icaltime_as_timet (*dt.value);
-
- local->appt->end = *localtime (&dt_time);
- local->appt->event = 0;
- } else {
- local->appt->event = 1;
- }
-
- /* Recurrence Rules */
- local->appt->repeatType = repeatNone;
-
- if (cal_component_has_rrules (comp)) {
- GSList *list;
- struct icalrecurrencetype *recur;
-
- cal_component_get_rrule_list (comp, &list);
- recur = list->data;
-
- switch (recur->freq) {
- case ICAL_DAILY_RECURRENCE:
- local->appt->repeatType = repeatDaily;
- break;
- case ICAL_WEEKLY_RECURRENCE:
- local->appt->repeatType = repeatWeekly;
- for (i = 0; i <= 7 && recur->by_day[i] != ICAL_RECURRENCE_ARRAY_MAX; i++) {
- icalrecurrencetype_weekday wd;
-
- wd = icalrecurrencetype_day_day_of_week (recur->by_day[i]);
- local->appt->repeatDays[get_pilot_day (wd)] = 1;
- }
-
- break;
- case ICAL_MONTHLY_RECURRENCE:
- if (recur->by_month_day[0] != ICAL_RECURRENCE_ARRAY_MAX) {
- local->appt->repeatType = repeatMonthlyByDate;
- break;
- }
-
- /* FIX ME Not going to work with -ve by_day */
- local->appt->repeatType = repeatMonthlyByDay;
- switch (icalrecurrencetype_day_position (recur->by_day[0])) {
- case 1:
- local->appt->repeatDay = dom1stSun;
- break;
- case 2:
- local->appt->repeatDay = dom2ndSun;
- break;
- case 3:
- local->appt->repeatDay = dom3rdSun;
- break;
- case 4:
- local->appt->repeatDay = dom4thSun;
- break;
- case 5:
- local->appt->repeatDay = domLastSun;
- break;
- }
- local->appt->repeatDay += get_pilot_day (icalrecurrencetype_day_day_of_week (recur->by_day[0]));
- break;
- case ICAL_YEARLY_RECURRENCE:
- local->appt->repeatType = repeatYearly;
- break;
- default:
- break;
- }
-
- if (local->appt->repeatType != repeatNone) {
- local->appt->repeatFrequency = recur->interval;
- }
-
- if (icaltime_is_null_time (recur->until)) {
- local->appt->repeatForever = 1;
- } else {
- local->appt->repeatForever = 0;
- dt_time = icaltime_as_timet (recur->until);
- local->appt->repeatEnd = *localtime (&dt_time);
- }
-
- cal_component_free_recur_list (list);
- }
-
- cal_component_get_classification (comp, &classif);
-
- if (classif == CAL_COMPONENT_CLASS_PRIVATE)
- local->local.secret = 1;
- else
- local->local.secret = 0;
-
- local->local.archived = 0;
-}
-
-static void
-local_record_from_uid (ECalLocalRecord *local,
- const char *uid,
- ECalConduitContext *ctxt)
-{
- CalComponent *comp;
- CalClientGetStatus status;
-
- g_assert(local!=NULL);
-
- status = cal_client_get_object (ctxt->client, uid, &comp);
-
- if (status == CAL_CLIENT_GET_SUCCESS) {
- local_record_from_comp (local, comp, ctxt);
- } else if (status == CAL_CLIENT_GET_NOT_FOUND) {
- comp = cal_component_new ();
- cal_component_set_new_vtype (comp, CAL_COMPONENT_EVENT);
- cal_component_set_uid (comp, uid);
- local_record_from_comp (local, comp, ctxt);
- } else {
- INFO ("Object did not exist");
- }
-}
-
-static CalComponent *
-comp_from_remote_record (GnomePilotConduitSyncAbs *conduit,
- GnomePilotRecord *remote,
- CalComponent *in_comp)
-{
- CalComponent *comp;
- struct Appointment appt;
- struct icaltimetype now = icaltime_from_timet (time (NULL), FALSE), it;
- struct icalrecurrencetype recur;
- int pos, i;
- CalComponentText summary = {NULL, NULL};
- CalComponentDateTime dt = {NULL, NULL};
- GList *alist, *l;
- char *txt;
-
- g_return_val_if_fail (remote != NULL, NULL);
-
- memset (&appt, 0, sizeof (struct Appointment));
- unpack_Appointment (&appt, remote->record, remote->length);
-
- if (in_comp == NULL) {
- comp = cal_component_new ();
- cal_component_set_new_vtype (comp, CAL_COMPONENT_EVENT);
- cal_component_set_created (comp, &now);
- } else {
- comp = cal_component_clone (in_comp);
- }
-
- cal_component_set_last_modified (comp, &now);
-
- summary.value = txt = e_pilot_utf8_from_pchar (appt.description);
- cal_component_set_summary (comp, &summary);
- free (txt);
-
- /* The iCal description field */
- if (!appt.note) {
- cal_component_set_comment_list (comp, NULL);
- } else {
- GSList l;
- CalComponentText text;
-
- text.value = txt = e_pilot_utf8_from_pchar (appt.note);
- text.altrep = NULL;
- l.data = &text;
- l.next = NULL;
-
- cal_component_set_description_list (comp, &l);
- free (txt);
- }
-
- if (!is_empty_time (appt.begin)) {
- it = icaltime_from_timet (mktime (&appt.begin), FALSE);
- dt.value = &it;
- cal_component_set_dtstart (comp, &dt);
- }
-
- if (appt.event) {
- time_t t = mktime (&appt.begin);
-
- t = time_day_end (t);
- it = icaltime_from_timet (t, FALSE);
- dt.value = &it;
- cal_component_set_dtend (comp, &dt);
- } else if (!is_empty_time (appt.end)) {
- it = icaltime_from_timet (mktime (&appt.end), FALSE);
- dt.value = &it;
- cal_component_set_dtend (comp, &dt);
- }
-
- /* Recurrence information */
- icalrecurrencetype_clear (&recur);
-
- switch (appt.repeatType) {
- case repeatNone:
- recur.freq = ICAL_NO_RECURRENCE;
- break;
-
- case repeatDaily:
- recur.freq = ICAL_DAILY_RECURRENCE;
- recur.interval = appt.repeatFrequency;
- break;
-
- case repeatWeekly:
- recur.freq = ICAL_WEEKLY_RECURRENCE;
- recur.interval = appt.repeatFrequency;
-
- pos = 0;
- for (i = 0; i < 7; i++) {
- if (appt.repeatDays[i])
- recur.by_day[pos++] = get_ical_day (i);
- }
-
- break;
-
- case repeatMonthlyByDay:
- recur.freq = ICAL_MONTHLY_RECURRENCE;
- recur.interval = appt.repeatFrequency;
- recur.by_day[0] = nth_weekday (appt.repeatDay / 5, get_ical_day (appt.repeatDay % 5 - 1));
- break;
-
- case repeatMonthlyByDate:
- recur.freq = ICAL_MONTHLY_RECURRENCE;
- recur.interval = appt.repeatFrequency;
- recur.by_month_day[0] = appt.begin.tm_mday;
- break;
-
- case repeatYearly:
- recur.freq = ICAL_YEARLY_RECURRENCE;
- recur.interval = appt.repeatFrequency;
- break;
-
- default:
- g_assert_not_reached ();
- }
-
- if (recur.freq != ICAL_NO_RECURRENCE) {
- GSList *list = NULL;
-
- /* recurrence start of week */
- recur.week_start = get_ical_day (appt.repeatWeekstart);
-
- if (!appt.repeatForever) {
- time_t t = mktime (&appt.repeatEnd);
- t = time_add_day (t, 1);
- recur.until = icaltime_from_timet (t, FALSE);
- }
-
- list = g_slist_append (list, &recur);
- cal_component_set_rrule_list (comp, list);
- g_slist_free (list);
- } else {
- cal_component_set_rrule_list (comp, NULL);
- }
-
- cal_component_set_transparency (comp, CAL_COMPONENT_TRANSP_NONE);
-
- if (remote->attr & dlpRecAttrSecret)
- cal_component_set_classification (comp, CAL_COMPONENT_CLASS_PRIVATE);
- else
- cal_component_set_classification (comp, CAL_COMPONENT_CLASS_PUBLIC);
-
- cal_component_commit_sequence (comp);
-
- free_Appointment (&appt);
-
- return comp;
-}
-
-static void
-update_comp (GnomePilotConduitSyncAbs *conduit, CalComponent *comp,
- ECalConduitContext *ctxt)
-{
- gboolean success;
-
- g_return_if_fail (conduit != NULL);
- g_return_if_fail (comp != NULL);
-
- success = cal_client_update_object (ctxt->client, comp);
-
- if (!success)
- WARN (_("Error while communicating with calendar server"));
-}
-
-static void
-check_for_slow_setting (GnomePilotConduit *c, ECalConduitContext *ctxt)
-{
- int count, map_count;
-
- count = g_list_length (ctxt->uids);
- map_count = g_hash_table_size (ctxt->map->pid_map);
-
- /* If there are no objects or objects but no log */
- if (map_count == 0) {
- GnomePilotConduitStandard *conduit;
- LOG (" doing slow sync\n");
- conduit = GNOME_PILOT_CONDUIT_STANDARD (c);
- gnome_pilot_conduit_standard_set_slow (conduit);
- } else {
- LOG (" doing fast sync\n");
- }
-}
-
-/* Pilot syncing callbacks */
-static gint
-pre_sync (GnomePilotConduit *conduit,
- GnomePilotDBInfo *dbi,
- ECalConduitContext *ctxt)
-{
- GnomePilotConduitSyncAbs *abs_conduit;
- GList *l;
- int len;
- unsigned char *buf;
- char *filename, *change_id;
- gint num_records, add_records = 0, mod_records = 0, del_records = 0;
-
- abs_conduit = GNOME_PILOT_CONDUIT_SYNC_ABS (conduit);
-
- LOG ("---------------------------------------------------------\n");
- LOG ("pre_sync: Calendar Conduit v.%s", CONDUIT_VERSION);
- g_message ("Calendar Conduit v.%s", CONDUIT_VERSION);
-
- ctxt->client = NULL;
-
- if (start_calendar_server (ctxt) != 0) {
- WARN(_("Could not start wombat server"));
- gnome_pilot_conduit_error (conduit, _("Could not start wombat"));
- return -1;
- }
-
- /* Load the uid <--> pilot id mapping */
- filename = map_name (ctxt);
- e_pilot_map_read (filename, &ctxt->map);
- g_free (filename);
-
- /* Get the local database */
- ctxt->uids = cal_client_get_uids (ctxt->client, CALOBJ_TYPE_EVENT);
-
- /* Find the added, modified and deleted items */
- change_id = g_strdup_printf ("pilot-sync-evolution-calendar-%d", ctxt->cfg->pilot_id);
- ctxt->changed = cal_client_get_changes (ctxt->client, CALOBJ_TYPE_EVENT, change_id);
- ctxt->changed_hash = g_hash_table_new (g_str_hash, g_str_equal);
-
- for (l = ctxt->changed; l != NULL; l = l->next) {
- CalClientChange *ccc = l->data;
- const char *uid;
-
- cal_component_get_uid (ccc->comp, &uid);
- if (!e_pilot_map_uid_is_archived (ctxt->map, uid)) {
-
- g_hash_table_insert (ctxt->changed_hash, g_strdup (uid), ccc);
-
- switch (ccc->type) {
- case CAL_CLIENT_CHANGE_ADDED:
- add_records++;
- break;
- case CAL_CLIENT_CHANGE_MODIFIED:
- mod_records++;
- break;
- case CAL_CLIENT_CHANGE_DELETED:
- del_records++;
- break;
- }
- }
- }
-
- /* Set the count information */
- num_records = cal_client_get_n_objects (ctxt->client, CALOBJ_TYPE_TODO);
- gnome_pilot_conduit_sync_abs_set_num_local_records(abs_conduit, num_records);
- gnome_pilot_conduit_sync_abs_set_num_new_local_records (abs_conduit, add_records);
- gnome_pilot_conduit_sync_abs_set_num_updated_local_records (abs_conduit, mod_records);
- gnome_pilot_conduit_sync_abs_set_num_deleted_local_records(abs_conduit, del_records);
-
- gtk_object_set_data (GTK_OBJECT (conduit), "dbinfo", dbi);
-
- buf = (unsigned char*)g_malloc (0xffff);
- len = dlp_ReadAppBlock (dbi->pilot_socket, dbi->db_handle, 0,
- (unsigned char *)buf, 0xffff);
-
- if (len < 0) {
- WARN (_("Could not read pilot's Calendar application block"));
- WARN ("dlp_ReadAppBlock(...) = %d", len);
- gnome_pilot_conduit_error (conduit,
- _("Could not read pilot's Calendar application block"));
- return -1;
- }
- unpack_AppointmentAppInfo (&(ctxt->ai), buf, len);
- g_free (buf);
-
- check_for_slow_setting (conduit, ctxt);
-
- return 0;
-}
-
-static gint
-post_sync (GnomePilotConduit *conduit,
- GnomePilotDBInfo *dbi,
- ECalConduitContext *ctxt)
-{
- GList *changed;
- gchar *filename, *change_id;
-
- LOG ("post_sync: Calendar Conduit v.%s", CONDUIT_VERSION);
- LOG ("---------------------------------------------------------\n");
-
- filename = map_name (ctxt);
- e_pilot_map_write (filename, ctxt->map);
- g_free (filename);
-
- /* FIX ME ugly hack - our changes musn't count, this does introduce
- * a race condition if anyone changes a record elsewhere during sycnc
- */
- change_id = g_strdup_printf ("pilot-sync-evolution-calendar-%d", ctxt->cfg->pilot_id);
- changed = cal_client_get_changes (ctxt->client, CALOBJ_TYPE_EVENT, change_id);
- cal_client_change_list_free (changed);
-
- return 0;
-}
-
-static gint
-set_pilot_id (GnomePilotConduitSyncAbs *conduit,
- ECalLocalRecord *local,
- guint32 ID,
- ECalConduitContext *ctxt)
-{
- const char *uid;
-
- LOG ("set_pilot_id: setting to %d\n", ID);
-
- cal_component_get_uid (local->comp, &uid);
- e_pilot_map_insert (ctxt->map, ID, uid, FALSE);
-
- return 0;
-}
-
-static gint
-set_status_cleared (GnomePilotConduitSyncAbs *conduit,
- ECalLocalRecord *local,
- ECalConduitContext *ctxt)
-{
- const char *uid;
-
- LOG ("set_status_cleared: clearing status\n");
-
- cal_component_get_uid (local->comp, &uid);
- g_hash_table_remove (ctxt->changed_hash, uid);
-
- return 0;
-}
-
-static gint
-for_each (GnomePilotConduitSyncAbs *conduit,
- ECalLocalRecord **local,
- ECalConduitContext *ctxt)
-{
- static GList *uids, *iterator;
- static int count;
-
- g_return_val_if_fail (local != NULL, -1);
-
- if (*local == NULL) {
- LOG ("beginning for_each");
-
- uids = ctxt->uids;
- count = 0;
-
- if (uids != NULL) {
- LOG ("iterating over %d records", g_list_length (uids));
-
- *local = g_new0 (ECalLocalRecord, 1);
- local_record_from_uid (*local, uids->data, ctxt);
-
- iterator = uids;
- } else {
- LOG ("no events");
- (*local) = NULL;
- return 0;
- }
- } else {
- count++;
- if (g_list_next (iterator)) {
- iterator = g_list_next (iterator);
-
- *local = g_new0 (ECalLocalRecord, 1);
- local_record_from_uid (*local, iterator->data, ctxt);
- } else {
- LOG ("for_each ending");
-
- /* Tell the pilot the iteration is over */
- *local = NULL;
-
- return 0;
- }
- }
-
- return 0;
-}
-
-static gint
-for_each_modified (GnomePilotConduitSyncAbs *conduit,
- ECalLocalRecord **local,
- ECalConduitContext *ctxt)
-{
- static GList *iterator;
- static int count;
-
- g_return_val_if_fail (local != NULL, 0);
-
- if (*local == NULL) {
- LOG ("beginning for_each_modified: beginning\n");
-
- iterator = ctxt->changed;
-
- count = 0;
-
- LOG ("iterating over %d records", g_hash_table_size (ctxt->changed_hash));
-
- iterator = next_changed_item (ctxt, iterator);
- if (iterator != NULL) {
- CalClientChange *ccc = iterator->data;
-
- *local = g_new0 (ECalLocalRecord, 1);
- local_record_from_comp (*local, ccc->comp, ctxt);
- } else {
- LOG ("no events");
-
- *local = NULL;
- }
- } else {
- count++;
- iterator = g_list_next (iterator);
- if (iterator && (iterator = next_changed_item (ctxt, iterator))) {
- CalClientChange *ccc = iterator->data;
-
- *local = g_new0 (ECalLocalRecord, 1);
- local_record_from_comp (*local, ccc->comp, ctxt);
- } else {
- LOG ("for_each_modified ending");
-
- /* Signal the iteration is over */
- *local = NULL;
- }
- }
-
- return 0;
-}
-
-static gint
-compare (GnomePilotConduitSyncAbs *conduit,
- ECalLocalRecord *local,
- GnomePilotRecord *remote,
- ECalConduitContext *ctxt)
-{
- /* used by the quick compare */
- GnomePilotRecord local_pilot;
- int retval = 0;
-
- LOG ("compare: local=%s remote=%s...\n",
- print_local (local), print_remote (remote));
-
- g_return_val_if_fail (local!=NULL,-1);
- g_return_val_if_fail (remote!=NULL,-1);
-
- local_pilot = local_record_to_pilot_record (local, ctxt);
-
- if (remote->length != local_pilot.length
- || memcmp (local_pilot.record, remote->record, remote->length))
- retval = 1;
-
- if (retval == 0)
- LOG (" equal");
- else
- LOG (" not equal");
-
- return retval;
-}
-
-static gint
-add_record (GnomePilotConduitSyncAbs *conduit,
- GnomePilotRecord *remote,
- ECalConduitContext *ctxt)
-{
- CalComponent *comp;
- const char *uid;
- int retval = 0;
-
- g_return_val_if_fail (remote != NULL, -1);
-
- LOG ("add_record: adding %s to desktop\n", print_remote (remote));
-
- comp = comp_from_remote_record (conduit, remote, NULL);
- update_comp (conduit, comp, ctxt);
-
- cal_component_get_uid (comp, &uid);
-
- e_pilot_map_insert (ctxt->map, remote->ID, uid, FALSE);
-
- return retval;
-}
-
-static gint
-replace_record (GnomePilotConduitSyncAbs *conduit,
- ECalLocalRecord *local,
- GnomePilotRecord *remote,
- ECalConduitContext *ctxt)
-{
- CalComponent *new_comp;
- int retval = 0;
-
- g_return_val_if_fail (remote != NULL, -1);
-
- LOG ("replace_record: replace %s with %s\n",
- print_local (local), print_remote (remote));
-
- new_comp = comp_from_remote_record (conduit, remote, local->comp);
- gtk_object_unref (GTK_OBJECT (local->comp));
- local->comp = new_comp;
- update_comp (conduit, local->comp, ctxt);
-
- return retval;
-}
-
-static gint
-delete_record (GnomePilotConduitSyncAbs *conduit,
- ECalLocalRecord *local,
- ECalConduitContext *ctxt)
-{
- const char *uid;
-
- g_return_val_if_fail (local != NULL, -1);
- g_assert (local->comp != NULL);
-
- cal_component_get_uid (local->comp, &uid);
-
- LOG ("delete_record: deleting %s\n", uid);
-
- e_pilot_map_remove_by_uid (ctxt->map, uid);
- cal_client_remove_object (ctxt->client, uid);
-
- return 0;
-}
-
-static gint
-archive_record (GnomePilotConduitSyncAbs *conduit,
- ECalLocalRecord *local,
- gboolean archive,
- ECalConduitContext *ctxt)
-{
- const char *uid;
- int retval = 0;
-
- g_return_val_if_fail (local != NULL, -1);
-
- LOG ("archive_record: %s\n", archive ? "yes" : "no");
-
- cal_component_get_uid (local->comp, &uid);
- e_pilot_map_insert (ctxt->map, local->local.ID, uid, archive);
-
- return retval;
-}
-
-static gint
-match (GnomePilotConduitSyncAbs *conduit,
- GnomePilotRecord *remote,
- ECalLocalRecord **local,
- ECalConduitContext *ctxt)
-{
- const char *uid;
-
- LOG ("match: looking for local copy of %s\n",
- print_remote (remote));
-
- g_return_val_if_fail (local != NULL, -1);
- g_return_val_if_fail (remote != NULL, -1);
-
- *local = NULL;
- uid = e_pilot_map_lookup_uid (ctxt->map, remote->ID);
-
- if (!uid)
- return 0;
-
- LOG (" matched\n");
-
- *local = g_new0 (ECalLocalRecord, 1);
- local_record_from_uid (*local, uid, ctxt);
-
- return 0;
-}
-
-static gint
-free_match (GnomePilotConduitSyncAbs *conduit,
- ECalLocalRecord *local,
- ECalConduitContext *ctxt)
-{
- LOG ("free_match: freeing\n");
-
- g_return_val_if_fail (local != NULL, -1);
-
- gtk_object_unref (GTK_OBJECT (local->comp));
- g_free (local);
-
- return 0;
-}
-
-static gint
-prepare (GnomePilotConduitSyncAbs *conduit,
- ECalLocalRecord *local,
- GnomePilotRecord *remote,
- ECalConduitContext *ctxt)
-{
- LOG ("prepare: encoding local %s\n", print_local (local));
-
- *remote = local_record_to_pilot_record (local, ctxt);
-
- return 0;
-}
-
-static ORBit_MessageValidationResult
-accept_all_cookies (CORBA_unsigned_long request_id,
- CORBA_Principal *principal,
- CORBA_char *operation)
-{
- /* allow ALL cookies */
- return ORBIT_MESSAGE_ALLOW_ALL;
-}
-
-
-GnomePilotConduit *
-conduit_get_gpilot_conduit (guint32 pilot_id)
-{
- GtkObject *retval;
- ECalConduitContext *ctxt;
-
- LOG ("in calendar's conduit_get_gpilot_conduit\n");
-
- /* we need to find wombat with oaf, so make sure oaf
- is initialized here. once the desktop is converted
- to oaf and gpilotd is built with oaf, this can go away */
- if (!oaf_is_initialized ()) {
- char *argv[ 1 ] = {"hi"};
- oaf_init (1, argv);
-
- if (bonobo_init (CORBA_OBJECT_NIL,
- CORBA_OBJECT_NIL,
- CORBA_OBJECT_NIL) == FALSE)
- g_error (_("Could not initialize Bonobo"));
-
- ORBit_set_request_validation_handler (accept_all_cookies);
- }
-
- retval = gnome_pilot_conduit_sync_abs_new ("DatebookDB", 0x64617465);
- g_assert (retval != NULL);
-
- gnome_pilot_conduit_construct (GNOME_PILOT_CONDUIT (retval),
- "e_calendar_conduit");
-
- ctxt = e_calendar_context_new (pilot_id);
- gtk_object_set_data (GTK_OBJECT (retval), "calconduit_context", ctxt);
-
- gtk_signal_connect (retval, "pre_sync", (GtkSignalFunc) pre_sync, ctxt);
- gtk_signal_connect (retval, "post_sync", (GtkSignalFunc) post_sync, ctxt);
-
- gtk_signal_connect (retval, "set_pilot_id", (GtkSignalFunc) set_pilot_id, ctxt);
- gtk_signal_connect (retval, "set_status_cleared", (GtkSignalFunc) set_status_cleared, ctxt);
-
- gtk_signal_connect (retval, "for_each", (GtkSignalFunc) for_each, ctxt);
- gtk_signal_connect (retval, "for_each_modified", (GtkSignalFunc) for_each_modified, ctxt);
- gtk_signal_connect (retval, "compare", (GtkSignalFunc) compare, ctxt);
-
- gtk_signal_connect (retval, "add_record", (GtkSignalFunc) add_record, ctxt);
- gtk_signal_connect (retval, "replace_record", (GtkSignalFunc) replace_record, ctxt);
- gtk_signal_connect (retval, "delete_record", (GtkSignalFunc) delete_record, ctxt);
- gtk_signal_connect (retval, "archive_record", (GtkSignalFunc) archive_record, ctxt);
-
- gtk_signal_connect (retval, "match", (GtkSignalFunc) match, ctxt);
- gtk_signal_connect (retval, "free_match", (GtkSignalFunc) free_match, ctxt);
-
- gtk_signal_connect (retval, "prepare", (GtkSignalFunc) prepare, ctxt);
-
- return GNOME_PILOT_CONDUIT (retval);
-}
-
-void
-conduit_destroy_gpilot_conduit (GnomePilotConduit *conduit)
-{
- GtkObject *obj = GTK_OBJECT (conduit);
- ECalConduitContext *ctxt;
-
- ctxt = gtk_object_get_data (obj, "calconduit_context");
- e_calendar_context_destroy (ctxt);
-
- gtk_object_destroy (obj);
-}
diff --git a/calendar/conduits/calendar/calendar-conduit.h b/calendar/conduits/calendar/calendar-conduit.h
deleted file mode 100644
index 03308e77d9..0000000000
--- a/calendar/conduits/calendar/calendar-conduit.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* Evolution calendar - Calendar Conduit
- *
- * Copyright (C) 1998 Free Software Foundation
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Authors: Eskil Heyn Olsen <deity@eskil.dk>
- * JP Rosevear <jpr@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef __CALENDAR_CONDUIT_H__
-#define __CALENDAR_CONDUIT_H__
-
-#include <sys/types.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <gnome.h>
-#include <pi-datebook.h>
-#include <gpilotd/gnome-pilot-conduit.h>
-#include <gpilotd/gnome-pilot-conduit-sync-abs.h>
-#include <cal-client/cal-client.h>
-#include <e-pilot-map.h>
-
-/* This is the local record structure for the Evolution Calendar conduit. */
-typedef struct _ECalLocalRecord ECalLocalRecord;
-struct _ECalLocalRecord {
- /* The stuff from gnome-pilot-conduit-standard-abs.h
- Must be first in the structure, or instances of this
- structure cannot be used by gnome-pilot-conduit-standard-abs.
- */
- GnomePilotDesktopRecord local;
-
- /* The corresponding Comp object */
- CalComponent *comp;
-
- /* pilot-link todo structure */
- struct Appointment *appt;
-};
-
-/* This is the context for all the Evolution Calendar conduit methods. */
-typedef struct _ECalConduitContext ECalConduitContext;
-struct _ECalConduitContext {
- ECalConduitCfg *cfg;
-
- struct AppointmentAppInfo ai;
-
- CalClient *client;
- char *calendar_file;
- gboolean calendar_open_success;
-
- time_t since;
- GList *uids;
- GList *changed;
- GHashTable *changed_hash;
-
- EPilotMap *map;
-};
-
-#endif __CALENDAR_CONDUIT_H__
-
-
-
-
-
-
diff --git a/calendar/conduits/calendar/e-calendar-conduit-control-applet.desktop.in b/calendar/conduits/calendar/e-calendar-conduit-control-applet.desktop.in
deleted file mode 100644
index 5988e6cb08..0000000000
--- a/calendar/conduits/calendar/e-calendar-conduit-control-applet.desktop.in
+++ /dev/null
@@ -1,8 +0,0 @@
-[Desktop Entry]
-_Name=Evolution Calendar Conduit
-_Comment=Configure the Evolution Calendar conduit
-Exec=e-calendar-conduit-control-applet --cap-id=1
-TryExec=e-calendar-conduit-control-applet
-Terminal=0
-Type=Application
-Icon=gnome-calendar-conduit.png
diff --git a/calendar/conduits/calendar/e-calendar.conduit.in b/calendar/conduits/calendar/e-calendar.conduit.in
deleted file mode 100644
index 336901f581..0000000000
--- a/calendar/conduits/calendar/e-calendar.conduit.in
+++ /dev/null
@@ -1,9 +0,0 @@
-<gnome-pilot-conduit version="1.0">
- <conduit id="e_calendar_conduit" type="shlib" location="@prefix@/lib/gnome-pilot/conduits/libecalendar_conduit.so"/>
- <name value="ECalendar"/>
- <conduit-attribute name="description" _value="Synchronizes Calendar with Evolution"/>
- <conduit-attribute name="default-synctype" value="synchronize"/>
- <conduit-attribute name="valid-synctypes" value="synchronize copy_from_pilot copy_to_pilot merge_from_pilot merge_to_pilot"/>
- <conduit-attribute name="settings" value="FALSE"/>
- <conduit-attribute name="icon" value="@datadir@/images/evolution/conduits/48_evo-calendar-conduit.png"/>
-</gnome-pilot-conduit>
diff --git a/calendar/conduits/todo/.cvsignore b/calendar/conduits/todo/.cvsignore
deleted file mode 100644
index 3ee063c770..0000000000
--- a/calendar/conduits/todo/.cvsignore
+++ /dev/null
@@ -1,9 +0,0 @@
-Makefile.in
-Makefile
-.deps
-.libs
-*.lo
-*.la
-e-todo-conduit-control-applet
-e-todo-conduit-control-applet.desktop
-e-todo.conduit
diff --git a/calendar/conduits/todo/Makefile.am b/calendar/conduits/todo/Makefile.am
deleted file mode 100644
index 41e897878e..0000000000
--- a/calendar/conduits/todo/Makefile.am
+++ /dev/null
@@ -1,45 +0,0 @@
-INCLUDES = \
- -I$(top_srcdir) \
- -I$(top_srcdir)/calendar \
- -I$(top_srcdir)/libical/src/libical \
- -I$(top_builddir)/libical/src/libical \
- -I$(top_builddir)/e-util \
- $(BONOBO_GNOME_CFLAGS) \
- $(PISOCK_CFLAGS) \
- $(GNOME_PILOT_CFLAGS)
-
-# ToDo Conduit
-e_todo_conduitsdir=$(libdir)/gnome-pilot/conduits
-e_todo_conduits_LTLIBRARIES = libetodo_conduit.la
-
-libetodo_conduit_la_SOURCES = \
- todo-conduit.c \
- todo-conduit.h \
- todo-conduit-config.h
-
-libetodo_conduit_la_LDFLAGS = -module -avoid-version
-libetodo_conduit_la_LIBADD = \
- $(top_builddir)/calendar/cal-client/libcal-client-static.la \
- $(top_builddir)/calendar/cal-util/libcal-util-static.la \
- $(top_builddir)/libversit/libversit.la \
- $(top_builddir)/libical/src/libical/libical-static.la \
- $(top_builddir)/e-util/libeconduit-static.la \
- $(BONOBO_GNOME_LIBS) \
- $(PISOCK_LIBS) \
- $(GNOME_LIBDIR) \
- $(GNOME_LIBS)
-
-e-todo.conduit: e-todo.conduit.in Makefile
- sed -e 's^\@prefix\@^$(prefix)^g' \
- -e 's^\@datadir\@^$(datadir)^g' \
- < $(srcdir)/e-todo.conduit.in > e-todo.conduit.tmp \
- && mv e-todo.conduit.tmp e-todo.conduit
-
-Conduitdir = $(datadir)/gnome-pilot/conduits/
-Conduit_DATA = e-todo.conduit
-
-EXTRA_DIST = \
- e-todo.conduit.in
-
-install-data-local:
- $(mkinstalldirs) $(Conduitdir)
diff --git a/calendar/conduits/todo/e-todo-conduit-control-applet.desktop.in b/calendar/conduits/todo/e-todo-conduit-control-applet.desktop.in
deleted file mode 100644
index ec5856fcad..0000000000
--- a/calendar/conduits/todo/e-todo-conduit-control-applet.desktop.in
+++ /dev/null
@@ -1,7 +0,0 @@
-[Desktop Entry]
-_Name=Evolution ToDo Conduit
-_Comment=Configure the Evolution ToDo conduit
-Exec=e-todo-conduit-control-applet --cap-id=1
-TryExec=e-todo-conduit-control-applet
-Terminal=0
-Type=Application
diff --git a/calendar/conduits/todo/e-todo.conduit.in b/calendar/conduits/todo/e-todo.conduit.in
deleted file mode 100644
index 733c2105db..0000000000
--- a/calendar/conduits/todo/e-todo.conduit.in
+++ /dev/null
@@ -1,9 +0,0 @@
-<gnome-pilot-conduit version="1.0">
- <conduit id="e_todo_conduit" type="shlib" location="@prefix@/lib/gnome-pilot/conduits/libetodo_conduit.so"/>
- <name value="EToDo"/>
- <conduit-attribute name="description" value="Synchronizes ToDo List with Evolution"/>
- <conduit-attribute name="default-synctype" value="synchronize"/>
- <conduit-attribute name="valid-synctypes" value="synchronize copy_from_pilot copy_to_pilot merge_from_pilot merge_to_pilot"/>
- <conduit-attribute name="settings" value="FALSE"/>
- <conduit-attribute name="icon" value="@datadir@/images/evolution/conduits/48_evo-todo-conduit.png"/>
-</gnome-pilot-conduit>
diff --git a/calendar/conduits/todo/todo-conduit-config.h b/calendar/conduits/todo/todo-conduit-config.h
deleted file mode 100644
index fe7b1dbafa..0000000000
--- a/calendar/conduits/todo/todo-conduit-config.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* Evolution calendar - ToDo Conduit Configuration
- *
- * Copyright (C) 1998 Free Software Foundation
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Authors: Eskil Heyn Olsen <deity@eskil.dk>
- * JP Rosevear <jpr@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef __TODO_CONDUIT_CONFIG_H__
-#define __TODO_CONDUIT_CONFIG_H__
-
-#include <gnome.h>
-#include <libgpilotdCM/gnome-pilot-conduit-management.h>
-#include <libgpilotdCM/gnome-pilot-conduit-config.h>
-
-/* Configuration info */
-typedef struct _EToDoConduitCfg EToDoConduitCfg;
-struct _EToDoConduitCfg {
- gboolean open_secret;
- guint32 pilot_id;
- GnomePilotConduitSyncType sync_type; /* only used by capplet */
-};
-
-#ifdef TODO_CONFIG_LOAD
-/* Load the configuration data */
-static void
-todoconduit_load_configuration (EToDoConduitCfg **c, guint32 pilot_id)
-{
- gchar prefix[256];
- g_snprintf (prefix, 255, "/gnome-pilot.d/e-todo-conduit/Pilot_%u/",
- pilot_id);
-
- *c = g_new0 (EToDoConduitCfg,1);
- g_assert (*c != NULL);
-
- gnome_config_push_prefix (prefix);
- (*c)->open_secret = gnome_config_get_bool ("open_secret=FALSE");
-
- /* set in capplets main */
- (*c)->sync_type = GnomePilotConduitSyncTypeCustom;
- gnome_config_pop_prefix ();
-
- (*c)->pilot_id = pilot_id;
-}
-#endif
-
-#ifdef TODO_CONFIG_SAVE
-/* Saves the configuration data. */
-static void
-todoconduit_save_configuration (EToDoConduitCfg *c)
-{
- gchar prefix[256];
-
- g_snprintf (prefix, 255, "/gnome-pilot.d/e-todo-conduit/Pilot_%u/",
- c->pilot_id);
-
- gnome_config_push_prefix (prefix);
- gnome_config_set_bool ("open_secret", c->open_secret);
- gnome_config_pop_prefix ();
-
- gnome_config_sync ();
- gnome_config_drop_all ();
-}
-#endif
-
-#ifdef TODO_CONFIG_DUPE
-/* Creates a duplicate of the configuration data */
-static EToDoConduitCfg*
-todoconduit_dupe_configuration (EToDoConduitCfg *c)
-{
- EToDoConduitCfg *retval;
-
- g_return_val_if_fail (c != NULL, NULL);
-
- retval = g_new0 (EToDoConduitCfg, 1);
- retval->sync_type = c->sync_type;
- retval->open_secret = c->open_secret;
- retval->pilot_id = c->pilot_id;
-
- return retval;
-}
-#endif
-
-#ifdef TODO_CONFIG_DESTROY
-/* Destroy a configuration */
-static void
-todoconduit_destroy_configuration (EToDoConduitCfg **c)
-{
- g_return_if_fail (c != NULL);
- g_return_if_fail (*c != NULL);
-
- g_free (*c);
- *c = NULL;
-}
-#endif
-
-#endif __TODO_CONDUIT_CONFIG_H__
-
-
-
-
-
-
-
diff --git a/calendar/conduits/todo/todo-conduit.c b/calendar/conduits/todo/todo-conduit.c
deleted file mode 100644
index f812532616..0000000000
--- a/calendar/conduits/todo/todo-conduit.c
+++ /dev/null
@@ -1,1012 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* Evolution calendar - ToDo Conduit
- *
- * Copyright (C) 1998 Free Software Foundation
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Authors: Eskil Heyn Olsen <deity@eskil.dk>
- * JP Rosevear <jpr@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-
-#include <liboaf/liboaf.h>
-#include <bonobo.h>
-#include <cal-client/cal-client-types.h>
-#include <cal-client/cal-client.h>
-#include <cal-util/timeutil.h>
-#include <pi-source.h>
-#include <pi-socket.h>
-#include <pi-file.h>
-#include <pi-dlp.h>
-#include <libical/src/libical/icaltypes.h>
-#include <e-pilot-util.h>
-
-#define TODO_CONFIG_LOAD 1
-#define TODO_CONFIG_DESTROY 1
-#include <todo-conduit-config.h>
-#undef TODO_CONFIG_LOAD
-#undef TODO_CONFIG_DESTROY
-
-#include <todo-conduit.h>
-
-GnomePilotConduit * conduit_get_gpilot_conduit (guint32);
-void conduit_destroy_gpilot_conduit (GnomePilotConduit*);
-
-#define CONDUIT_VERSION "0.1.4"
-#ifdef G_LOG_DOMAIN
-#undef G_LOG_DOMAIN
-#endif
-#define G_LOG_DOMAIN "etodoconduit"
-
-#define DEBUG_CALCONDUIT 1
-/* #undef DEBUG_CALCONDUIT */
-
-#ifdef DEBUG_CALCONDUIT
-#define LOG(e...) g_log (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, e)
-#else
-#define LOG(e...)
-#endif
-
-#define WARN(e...) g_log (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, e)
-#define INFO(e...) g_log (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, e)
-
-/* Debug routines */
-static char *
-print_local (EToDoLocalRecord *local)
-{
- static char buff[ 4096 ];
-
- if (local == NULL) {
- sprintf (buff, "[NULL]");
- return buff;
- }
-
- if (local->todo && local->todo->description) {
- g_snprintf (buff, 4096, "[%d %ld %d %d '%s' '%s']",
- local->todo->indefinite,
- mktime (& local->todo->due),
- local->todo->priority,
- local->todo->complete,
- local->todo->description ?
- local->todo->description : "",
- local->todo->note ?
- local->todo->note : "");
- return buff;
- }
-
- return "";
-}
-
-static char *print_remote (GnomePilotRecord *remote)
-{
- static char buff[ 4096 ];
- struct ToDo todo;
-
- if (remote == NULL) {
- sprintf (buff, "[NULL]");
- return buff;
- }
-
- memset (&todo, 0, sizeof (struct ToDo));
- unpack_ToDo (&todo, remote->record, remote->length);
-
- g_snprintf (buff, 4096, "[%d %ld %d %d '%s' '%s']",
- todo.indefinite,
- mktime (&todo.due),
- todo.priority,
- todo.complete,
- todo.description ?
- todo.description : "",
- todo.note ?
- todo.note : "");
-
- return buff;
-}
-
-/* Context Routines */
-static EToDoConduitContext *
-e_todo_context_new (guint32 pilot_id)
-{
- EToDoConduitContext *ctxt = g_new0 (EToDoConduitContext, 1);
-
- todoconduit_load_configuration (&ctxt->cfg, pilot_id);
-
- return ctxt;
-}
-
-static void
-e_todo_context_foreach_change (gpointer key, gpointer value, gpointer data)
-{
- g_free (key);
-}
-
-static void
-e_todo_context_destroy (EToDoConduitContext *ctxt)
-{
- g_return_if_fail (ctxt != NULL);
-
- if (ctxt->cfg != NULL)
- todoconduit_destroy_configuration (&ctxt->cfg);
-
- if (ctxt->client != NULL)
- gtk_object_unref (GTK_OBJECT (ctxt->client));
-
- if (ctxt->calendar_file)
- g_free (ctxt->calendar_file);
-
- if (ctxt->uids)
- cal_obj_uid_list_free (ctxt->uids);
-
- if (ctxt->changed_hash)
- g_hash_table_foreach (ctxt->changed_hash, e_todo_context_foreach_change, NULL);
-
- if (ctxt->changed)
- cal_client_change_list_free (ctxt->changed);
-
- if (ctxt->map)
- e_pilot_map_destroy (ctxt->map);
-
- g_free (ctxt);
-}
-
-/* Calendar Server routines */
-static void
-start_calendar_server_cb (CalClient *cal_client,
- CalClientOpenStatus status,
- gpointer data)
-{
- EToDoConduitContext *ctxt;
-
- ctxt = data;
-
- LOG (" entering start_calendar_server_cb\n");
-
- if (status == CAL_CLIENT_OPEN_SUCCESS) {
- ctxt->calendar_open_success = TRUE;
- LOG (" success\n");
- } else
- LOG (" open of calendar failed\n");
-
- gtk_main_quit (); /* end the sub event loop */
-}
-
-static int
-start_calendar_server (EToDoConduitContext *ctxt)
-{
-
- g_return_val_if_fail (ctxt != NULL, -2);
-
- ctxt->client = cal_client_new ();
-
- /* FIX ME */
- ctxt->calendar_file = g_concat_dir_and_file (g_get_home_dir (),
- "evolution/local/Tasks/tasks.ics");
-
- gtk_signal_connect (GTK_OBJECT (ctxt->client), "cal_opened",
- start_calendar_server_cb, ctxt);
-
- LOG (" calling cal_client_open_calendar\n");
- if (!cal_client_open_calendar (ctxt->client, ctxt->calendar_file, FALSE))
- return -1;
-
- /* run a sub event loop to turn cal-client's async load
- notification into a synchronous call */
- gtk_main ();
-
- if (ctxt->calendar_open_success)
- return 0;
-
- return -1;
-}
-
-/* Utility routines */
-static char *
-map_name (EToDoConduitContext *ctxt)
-{
- char *filename;
-
- filename = g_strdup_printf ("%s/evolution/local/Tasks/pilot-map-todo-%d.xml", g_get_home_dir (), ctxt->cfg->pilot_id);
-
- return filename;
-}
-
-static gboolean
-is_empty_time (struct tm time)
-{
- if (time.tm_sec || time.tm_min || time.tm_hour
- || time.tm_mday || time.tm_mon || time.tm_year)
- return FALSE;
-
- return TRUE;
-}
-
-static GList *
-next_changed_item (EToDoConduitContext *ctxt, GList *changes)
-{
- CalClientChange *ccc;
- GList *l;
-
- for (l = changes; l != NULL; l = l->next) {
- const char *uid;
-
- ccc = l->data;
-
- cal_component_get_uid (ccc->comp, &uid);
- if (g_hash_table_lookup (ctxt->changed_hash, uid))
- return l;
- }
-
- return NULL;
-}
-
-static void
-compute_status (EToDoConduitContext *ctxt, EToDoLocalRecord *local, const char *uid)
-{
- CalClientChange *ccc;
-
- local->local.archived = FALSE;
- local->local.secret = FALSE;
-
- ccc = g_hash_table_lookup (ctxt->changed_hash, uid);
-
- if (ccc == NULL) {
- local->local.attr = GnomePilotRecordNothing;
- return;
- }
-
- switch (ccc->type) {
- case CAL_CLIENT_CHANGE_ADDED:
- local->local.attr = GnomePilotRecordNew;
- break;
- case CAL_CLIENT_CHANGE_MODIFIED:
- local->local.attr = GnomePilotRecordModified;
- break;
- case CAL_CLIENT_CHANGE_DELETED:
- local->local.attr = GnomePilotRecordDeleted;
- break;
- }
-}
-
-static GnomePilotRecord
-local_record_to_pilot_record (EToDoLocalRecord *local,
- EToDoConduitContext *ctxt)
-{
- GnomePilotRecord p;
-
- g_assert (local->comp != NULL);
- g_assert (local->todo != NULL );
-
- LOG ("local_record_to_pilot_record\n");
-
- p.ID = local->local.ID;
- p.category = 0;
- p.attr = local->local.attr;
- p.archived = local->local.archived;
- p.secret = local->local.secret;
-
- /* Generate pilot record structure */
- p.record = g_new0 (char, 0xffff);
- p.length = pack_ToDo (local->todo, p.record, 0xffff);
-
- return p;
-}
-
-/*
- * converts a CalComponent object to a EToDoLocalRecord
- */
-static void
-local_record_from_comp (EToDoLocalRecord *local, CalComponent *comp, EToDoConduitContext *ctxt)
-{
- const char *uid;
- int *priority;
- struct icaltimetype *completed;
- CalComponentText summary;
- GSList *d_list = NULL;
- CalComponentText *description;
- CalComponentDateTime due;
- time_t due_time;
- CalComponentClassification classif;
-
- LOG ("local_record_from_comp\n");
-
- g_return_if_fail (local != NULL);
- g_return_if_fail (comp != NULL);
-
- local->comp = comp;
- gtk_object_ref (GTK_OBJECT (comp));
-
- cal_component_get_uid (local->comp, &uid);
- local->local.ID = e_pilot_map_lookup_pid (ctxt->map, uid);
-
- compute_status (ctxt, local, uid);
-
- local->todo = g_new0 (struct ToDo,1);
-
- /* STOP: don't replace these with g_strdup, since free_ToDo
- uses free to deallocate */
- cal_component_get_summary (comp, &summary);
- if (summary.value)
- local->todo->description = e_pilot_utf8_to_pchar (summary.value);
-
- cal_component_get_description_list (comp, &d_list);
- if (d_list) {
- description = (CalComponentText *) d_list->data;
- if (description && description->value)
- local->todo->note = e_pilot_utf8_to_pchar (description->value);
- else
- local->todo->note = NULL;
- } else {
- local->todo->note = NULL;
- }
-
- cal_component_get_due (comp, &due);
- if (due.value) {
- due_time = icaltime_as_timet (*due.value);
-
- local->todo->due = *localtime (&due_time);
- local->todo->indefinite = 0;
- } else {
- local->todo->indefinite = 1;
- }
-
- cal_component_get_completed (comp, &completed);
- if (completed) {
- local->todo->complete = 1;
- cal_component_free_icaltimetype (completed);
- }
-
- cal_component_get_priority (comp, &priority);
- if (priority) {
- local->todo->priority = *priority;
- cal_component_free_priority (priority);
- }
-
- cal_component_get_classification (comp, &classif);
-
- if (classif == CAL_COMPONENT_CLASS_PRIVATE)
- local->local.secret = 1;
- else
- local->local.secret = 0;
-
- local->local.archived = 0;
-}
-
-static void
-local_record_from_uid (EToDoLocalRecord *local,
- const char *uid,
- EToDoConduitContext *ctxt)
-{
- CalComponent *comp;
- CalClientGetStatus status;
-
- g_assert(local!=NULL);
-
- status = cal_client_get_object (ctxt->client, uid, &comp);
-
- if (status == CAL_CLIENT_GET_SUCCESS) {
- local_record_from_comp (local, comp, ctxt);
- } else if (status == CAL_CLIENT_GET_NOT_FOUND) {
- comp = cal_component_new ();
- cal_component_set_new_vtype (comp, CAL_COMPONENT_TODO);
- cal_component_set_uid (comp, uid);
- local_record_from_comp (local, comp, ctxt);
- } else {
- INFO ("Object did not exist");
- }
-}
-
-
-static CalComponent *
-comp_from_remote_record (GnomePilotConduitSyncAbs *conduit,
- GnomePilotRecord *remote,
- CalComponent *in_comp)
-{
- CalComponent *comp;
- struct ToDo todo;
- struct icaltimetype now = icaltime_from_timet (time (NULL), FALSE);
- CalComponentText summary = {NULL, NULL};
- CalComponentDateTime dt = {NULL, NULL};
- struct icaltimetype due;
- char *txt;
-
- g_return_val_if_fail (remote != NULL, NULL);
-
- memset (&todo, 0, sizeof (struct ToDo));
- unpack_ToDo (&todo, remote->record, remote->length);
-
- if (in_comp == NULL) {
- comp = cal_component_new ();
- cal_component_set_new_vtype (comp, CAL_COMPONENT_TODO);
- cal_component_set_created (comp, &now);
- } else {
- comp = cal_component_clone (in_comp);
- }
-
- cal_component_set_last_modified (comp, &now);
-
- summary.value = txt = e_pilot_utf8_from_pchar (todo.description);
- cal_component_set_summary (comp, &summary);
- free (txt);
-
- /* The iCal description field */
- if (!todo.note) {
- cal_component_set_comment_list (comp, NULL);
- } else {
- GSList l;
- CalComponentText text;
-
- text.value = txt = e_pilot_utf8_from_pchar (todo.note);
- text.altrep = NULL;
- l.data = &text;
- l.next = NULL;
-
- cal_component_set_description_list (comp, &l);
- free (txt);
- }
-
- if (todo.complete) {
- int percent = 100;
- cal_component_set_completed (comp, &now);
- cal_component_set_percent (comp, &percent);
- }
-
- if (!is_empty_time (todo.due)) {
- due = icaltime_from_timet (mktime (&todo.due), FALSE);
- dt.value = &due;
- cal_component_set_due (comp, &dt);
- }
-
- cal_component_set_priority (comp, &todo.priority);
- cal_component_set_transparency (comp, CAL_COMPONENT_TRANSP_NONE);
-
- if (remote->attr & dlpRecAttrSecret)
- cal_component_set_classification (comp, CAL_COMPONENT_CLASS_PRIVATE);
- else
- cal_component_set_classification (comp, CAL_COMPONENT_CLASS_PUBLIC);
-
- cal_component_commit_sequence (comp);
-
- free_ToDo(&todo);
-
- return comp;
-}
-
-static void
-update_comp (GnomePilotConduitSyncAbs *conduit, CalComponent *comp,
- EToDoConduitContext *ctxt)
-{
- gboolean success;
-
- g_return_if_fail (conduit != NULL);
- g_return_if_fail (comp != NULL);
-
- success = cal_client_update_object (ctxt->client, comp);
-
- if (!success)
- WARN (_("Error while communicating with calendar server"));
-}
-
-static void
-check_for_slow_setting (GnomePilotConduit *c, EToDoConduitContext *ctxt)
-{
- int count, map_count;
-
- count = g_list_length (ctxt->uids);
- map_count = g_hash_table_size (ctxt->map->pid_map);
-
- /* If there are no objects or objects but no log */
- if (map_count == 0) {
- GnomePilotConduitStandard *conduit;
- LOG (" doing slow sync\n");
- conduit = GNOME_PILOT_CONDUIT_STANDARD (c);
- gnome_pilot_conduit_standard_set_slow (conduit);
- } else {
- LOG (" doing fast sync\n");
- }
-}
-
-/* Pilot syncing callbacks */
-static gint
-pre_sync (GnomePilotConduit *conduit,
- GnomePilotDBInfo *dbi,
- EToDoConduitContext *ctxt)
-{
- GnomePilotConduitSyncAbs *abs_conduit;
- GList *l;
- int len;
- unsigned char *buf;
- char *filename, *change_id;
- gint num_records, add_records = 0, mod_records = 0, del_records = 0;
-
- abs_conduit = GNOME_PILOT_CONDUIT_SYNC_ABS (conduit);
-
- LOG ("---------------------------------------------------------\n");
- LOG ("pre_sync: ToDo Conduit v.%s", CONDUIT_VERSION);
- g_message ("ToDo Conduit v.%s", CONDUIT_VERSION);
-
- ctxt->client = NULL;
-
- if (start_calendar_server (ctxt) != 0) {
- WARN(_("Could not start wombat server"));
- gnome_pilot_conduit_error (conduit, _("Could not start wombat"));
- return -1;
- }
-
- /* Load the uid <--> pilot id map */
- filename = map_name (ctxt);
- e_pilot_map_read (filename, &ctxt->map);
- g_free (filename);
-
- /* Get the local database */
- ctxt->uids = cal_client_get_uids (ctxt->client, CALOBJ_TYPE_TODO);
-
- /* Count and hash the changes */
- change_id = g_strdup_printf ("pilot-sync-evolution-todo-%d", ctxt->cfg->pilot_id);
- ctxt->changed = cal_client_get_changes (ctxt->client, CALOBJ_TYPE_TODO, change_id);
- ctxt->changed_hash = g_hash_table_new (g_str_hash, g_str_equal);
-
- for (l = ctxt->changed; l != NULL; l = l->next) {
- CalClientChange *ccc = l->data;
- const char *uid;
-
- cal_component_get_uid (ccc->comp, &uid);
- if (!e_pilot_map_uid_is_archived (ctxt->map, uid)) {
-
- g_hash_table_insert (ctxt->changed_hash, g_strdup (uid), ccc);
-
- switch (ccc->type) {
- case CAL_CLIENT_CHANGE_ADDED:
- add_records++;
- break;
- case CAL_CLIENT_CHANGE_MODIFIED:
- mod_records++;
- break;
- case CAL_CLIENT_CHANGE_DELETED:
- del_records++;
- break;
- }
- }
- }
-
- /* Set the count information */
- num_records = cal_client_get_n_objects (ctxt->client, CALOBJ_TYPE_TODO);
- gnome_pilot_conduit_sync_abs_set_num_local_records(abs_conduit, num_records);
- gnome_pilot_conduit_sync_abs_set_num_new_local_records (abs_conduit, add_records);
- gnome_pilot_conduit_sync_abs_set_num_updated_local_records (abs_conduit, mod_records);
- gnome_pilot_conduit_sync_abs_set_num_deleted_local_records(abs_conduit, del_records);
-
- gtk_object_set_data (GTK_OBJECT (conduit), "dbinfo", dbi);
-
- buf = (unsigned char*)g_malloc (0xffff);
- len = dlp_ReadAppBlock (dbi->pilot_socket, dbi->db_handle, 0,
- (unsigned char *)buf, 0xffff);
-
- if (len < 0) {
- WARN (_("Could not read pilot's ToDo application block"));
- WARN ("dlp_ReadAppBlock(...) = %d", len);
- gnome_pilot_conduit_error (conduit,
- _("Could not read pilot's ToDo application block"));
- return -1;
- }
- unpack_ToDoAppInfo (&(ctxt->ai), buf, len);
- g_free (buf);
-
- check_for_slow_setting (conduit, ctxt);
-
- return 0;
-}
-
-static gint
-post_sync (GnomePilotConduit *conduit,
- GnomePilotDBInfo *dbi,
- EToDoConduitContext *ctxt)
-{
- GList *changed;
- gchar *filename, *change_id;
-
- LOG ("post_sync: ToDo Conduit v.%s", CONDUIT_VERSION);
- LOG ("---------------------------------------------------------\n");
-
- filename = map_name (ctxt);
- e_pilot_map_write (filename, ctxt->map);
- g_free (filename);
-
- /* FIX ME ugly hack - our changes musn't count, this does introduce
- * a race condition if anyone changes a record elsewhere during sycnc
- */
- change_id = g_strdup_printf ("pilot-sync-evolution-todo-%d", ctxt->cfg->pilot_id);
- changed = cal_client_get_changes (ctxt->client, CALOBJ_TYPE_TODO, change_id);
- cal_client_change_list_free (changed);
-
- return 0;
-}
-
-static gint
-set_pilot_id (GnomePilotConduitSyncAbs *conduit,
- EToDoLocalRecord *local,
- guint32 ID,
- EToDoConduitContext *ctxt)
-{
- const char *uid;
-
- LOG ("set_pilot_id: setting to %d\n", ID);
-
- cal_component_get_uid (local->comp, &uid);
- e_pilot_map_insert (ctxt->map, ID, uid, FALSE);
-
- return 0;
-}
-
-static gint
-set_status_cleared (GnomePilotConduitSyncAbs *conduit,
- EToDoLocalRecord *local,
- EToDoConduitContext *ctxt)
-{
- const char *uid;
-
- LOG ("set_status_cleared: clearing status\n");
-
- cal_component_get_uid (local->comp, &uid);
- g_hash_table_remove (ctxt->changed_hash, uid);
-
- return 0;
-}
-
-static gint
-for_each (GnomePilotConduitSyncAbs *conduit,
- EToDoLocalRecord **local,
- EToDoConduitContext *ctxt)
-{
- static GList *uids, *iterator;
- static int count;
-
- g_return_val_if_fail (local != NULL, -1);
-
- if (*local == NULL) {
- LOG ("beginning for_each");
-
- uids = ctxt->uids;
- count = 0;
-
- if (uids != NULL) {
- LOG ("iterating over %d records", g_list_length (uids));
-
- *local = g_new0 (EToDoLocalRecord, 1);
- local_record_from_uid (*local, uids->data, ctxt);
-
- iterator = uids;
- } else {
- LOG ("no events");
- (*local) = NULL;
- return 0;
- }
- } else {
- count++;
- if (g_list_next (iterator)) {
- iterator = g_list_next (iterator);
-
- *local = g_new0 (EToDoLocalRecord, 1);
- local_record_from_uid (*local, iterator->data, ctxt);
- } else {
- LOG ("for_each ending");
-
- /* Tell the pilot the iteration is over */
- *local = NULL;
-
- return 0;
- }
- }
-
- return 0;
-}
-
-static gint
-for_each_modified (GnomePilotConduitSyncAbs *conduit,
- EToDoLocalRecord **local,
- EToDoConduitContext *ctxt)
-{
- static GList *iterator;
- static int count;
-
- g_return_val_if_fail (local != NULL, 0);
-
- if (*local == NULL) {
- LOG ("beginning for_each_modified: beginning\n");
-
- iterator = ctxt->changed;
-
- count = 0;
-
- LOG ("iterating over %d records", g_hash_table_size (ctxt->changed_hash));
-
- iterator = next_changed_item (ctxt, iterator);
- if (iterator != NULL) {
- CalClientChange *ccc = iterator->data;
-
- *local = g_new0 (EToDoLocalRecord, 1);
- local_record_from_comp (*local, ccc->comp, ctxt);
- } else {
- LOG ("no events");
-
- *local = NULL;
- }
- } else {
- count++;
- iterator = g_list_next (iterator);
- if (iterator && (iterator = next_changed_item (ctxt, iterator))) {
- CalClientChange *ccc = iterator->data;
-
- *local = g_new0 (EToDoLocalRecord, 1);
- local_record_from_comp (*local, ccc->comp, ctxt);
- } else {
- LOG ("for_each_modified ending");
-
- /* Signal the iteration is over */
- *local = NULL;
- }
- }
-
- return 0;
-}
-
-static gint
-compare (GnomePilotConduitSyncAbs *conduit,
- EToDoLocalRecord *local,
- GnomePilotRecord *remote,
- EToDoConduitContext *ctxt)
-{
- /* used by the quick compare */
- GnomePilotRecord local_pilot;
- int retval = 0;
-
- LOG ("compare: local=%s remote=%s...\n",
- print_local (local), print_remote (remote));
-
- g_return_val_if_fail (local!=NULL,-1);
- g_return_val_if_fail (remote!=NULL,-1);
-
- local_pilot = local_record_to_pilot_record (local, ctxt);
-
- if (remote->length != local_pilot.length
- || memcmp (local_pilot.record, remote->record, remote->length))
- retval = 1;
-
- if (retval == 0)
- LOG (" equal");
- else
- LOG (" not equal");
-
- return retval;
-}
-
-static gint
-add_record (GnomePilotConduitSyncAbs *conduit,
- GnomePilotRecord *remote,
- EToDoConduitContext *ctxt)
-{
- CalComponent *comp;
- const char *uid;
- int retval = 0;
-
- g_return_val_if_fail (remote != NULL, -1);
-
- LOG ("add_record: adding %s to desktop\n", print_remote (remote));
-
- comp = comp_from_remote_record (conduit, remote, NULL);
- update_comp (conduit, comp, ctxt);
-
- cal_component_get_uid (comp, &uid);
-
- e_pilot_map_insert (ctxt->map, remote->ID, uid, FALSE);
-
- return retval;
-}
-
-static gint
-replace_record (GnomePilotConduitSyncAbs *conduit,
- EToDoLocalRecord *local,
- GnomePilotRecord *remote,
- EToDoConduitContext *ctxt)
-{
- CalComponent *new_comp;
- int retval = 0;
-
- g_return_val_if_fail (remote != NULL, -1);
-
- LOG ("replace_record: replace %s with %s\n",
- print_local (local), print_remote (remote));
-
- new_comp = comp_from_remote_record (conduit, remote, local->comp);
- gtk_object_unref (GTK_OBJECT (local->comp));
- local->comp = new_comp;
- update_comp (conduit, local->comp, ctxt);
-
- return retval;
-}
-
-static gint
-delete_record (GnomePilotConduitSyncAbs *conduit,
- EToDoLocalRecord *local,
- EToDoConduitContext *ctxt)
-{
- const char *uid;
-
- g_return_val_if_fail (local != NULL, -1);
- g_return_val_if_fail (local->comp != NULL, -1);
-
- cal_component_get_uid (local->comp, &uid);
-
- LOG ("delete_record: deleting %s\n", uid);
-
- e_pilot_map_remove_by_uid (ctxt->map, uid);
- cal_client_remove_object (ctxt->client, uid);
-
- return 0;
-}
-
-static gint
-archive_record (GnomePilotConduitSyncAbs *conduit,
- EToDoLocalRecord *local,
- gboolean archive,
- EToDoConduitContext *ctxt)
-{
- const char *uid;
- int retval = 0;
-
- g_return_val_if_fail (local != NULL, -1);
-
- LOG ("archive_record: %s\n", archive ? "yes" : "no");
-
- cal_component_get_uid (local->comp, &uid);
- e_pilot_map_insert (ctxt->map, local->local.ID, uid, archive);
-
- return retval;
-}
-
-static gint
-match (GnomePilotConduitSyncAbs *conduit,
- GnomePilotRecord *remote,
- EToDoLocalRecord **local,
- EToDoConduitContext *ctxt)
-{
- const char *uid;
-
- LOG ("match: looking for local copy of %s\n",
- print_remote (remote));
-
- g_return_val_if_fail (local != NULL, -1);
- g_return_val_if_fail (remote != NULL, -1);
-
- *local = NULL;
- uid = e_pilot_map_lookup_uid (ctxt->map, remote->ID);
-
- if (!uid)
- return 0;
-
- LOG (" matched\n");
-
- *local = g_new0 (EToDoLocalRecord, 1);
- local_record_from_uid (*local, uid, ctxt);
-
- return 0;
-}
-
-static gint
-free_match (GnomePilotConduitSyncAbs *conduit,
- EToDoLocalRecord *local,
- EToDoConduitContext *ctxt)
-{
- LOG ("free_match: freeing\n");
-
- g_return_val_if_fail (local != NULL, -1);
-
- gtk_object_unref (GTK_OBJECT (local->comp));
- g_free (local);
-
- return 0;
-}
-
-static gint
-prepare (GnomePilotConduitSyncAbs *conduit,
- EToDoLocalRecord *local,
- GnomePilotRecord *remote,
- EToDoConduitContext *ctxt)
-{
- LOG ("prepare: encoding local %s\n", print_local (local));
-
- *remote = local_record_to_pilot_record (local, ctxt);
-
- return 0;
-}
-
-static ORBit_MessageValidationResult
-accept_all_cookies (CORBA_unsigned_long request_id,
- CORBA_Principal *principal,
- CORBA_char *operation)
-{
- /* allow ALL cookies */
- return ORBIT_MESSAGE_ALLOW_ALL;
-}
-
-
-GnomePilotConduit *
-conduit_get_gpilot_conduit (guint32 pilot_id)
-{
- GtkObject *retval;
- EToDoConduitContext *ctxt;
-
- LOG ("in todo's conduit_get_gpilot_conduit\n");
-
- /* we need to find wombat with oaf, so make sure oaf
- is initialized here. once the desktop is converted
- to oaf and gpilotd is built with oaf, this can go away */
- if (!oaf_is_initialized ()) {
- char *argv[ 1 ] = {"hi"};
- oaf_init (1, argv);
-
- if (bonobo_init (CORBA_OBJECT_NIL,
- CORBA_OBJECT_NIL,
- CORBA_OBJECT_NIL) == FALSE)
- g_error (_("Could not initialize Bonobo"));
-
- ORBit_set_request_validation_handler (accept_all_cookies);
- }
-
- retval = gnome_pilot_conduit_sync_abs_new ("ToDoDB", 0x746F646F);
- g_assert (retval != NULL);
-
- gnome_pilot_conduit_construct (GNOME_PILOT_CONDUIT (retval),
- "e_todo_conduit");
-
- ctxt = e_todo_context_new (pilot_id);
- gtk_object_set_data (GTK_OBJECT (retval), "todoconduit_context", ctxt);
-
- gtk_signal_connect (retval, "pre_sync", (GtkSignalFunc) pre_sync, ctxt);
- gtk_signal_connect (retval, "post_sync", (GtkSignalFunc) post_sync, ctxt);
-
- gtk_signal_connect (retval, "set_pilot_id", (GtkSignalFunc) set_pilot_id, ctxt);
- gtk_signal_connect (retval, "set_status_cleared", (GtkSignalFunc) set_status_cleared, ctxt);
-
- gtk_signal_connect (retval, "for_each", (GtkSignalFunc) for_each, ctxt);
- gtk_signal_connect (retval, "for_each_modified", (GtkSignalFunc) for_each_modified, ctxt);
- gtk_signal_connect (retval, "compare", (GtkSignalFunc) compare, ctxt);
-
- gtk_signal_connect (retval, "add_record", (GtkSignalFunc) add_record, ctxt);
- gtk_signal_connect (retval, "replace_record", (GtkSignalFunc) replace_record, ctxt);
- gtk_signal_connect (retval, "delete_record", (GtkSignalFunc) delete_record, ctxt);
- gtk_signal_connect (retval, "archive_record", (GtkSignalFunc) archive_record, ctxt);
-
- gtk_signal_connect (retval, "match", (GtkSignalFunc) match, ctxt);
- gtk_signal_connect (retval, "free_match", (GtkSignalFunc) free_match, ctxt);
-
- gtk_signal_connect (retval, "prepare", (GtkSignalFunc) prepare, ctxt);
-
- return GNOME_PILOT_CONDUIT (retval);
-}
-
-void
-conduit_destroy_gpilot_conduit (GnomePilotConduit *conduit)
-{
- GtkObject *obj = GTK_OBJECT (conduit);
- EToDoConduitContext *ctxt;
-
- ctxt = gtk_object_get_data (obj, "todoconduit_context");
- e_todo_context_destroy (ctxt);
-
- gtk_object_destroy (obj);
-}
diff --git a/calendar/conduits/todo/todo-conduit.h b/calendar/conduits/todo/todo-conduit.h
deleted file mode 100644
index 46f89fc1a0..0000000000
--- a/calendar/conduits/todo/todo-conduit.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* Evolution calendar - ToDo Conduit Capplet
- *
- * Copyright (C) 1998 Free Software Foundation
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Authors: Eskil Heyn Olsen <deity@eskil.dk>
- * JP Rosevear <jpr@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef __TODO_CONDUIT_H__
-#define __TODO_CONDUIT_H__
-
-#include <sys/types.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <gnome.h>
-#include <pi-todo.h>
-#include <gpilotd/gnome-pilot-conduit.h>
-#include <gpilotd/gnome-pilot-conduit-sync-abs.h>
-#include <cal-client/cal-client.h>
-#include <e-pilot-map.h>
-
-/* This is the local record structure for the Evolution ToDo conduit. */
-typedef struct _EToDoLocalRecord EToDoLocalRecord;
-struct _EToDoLocalRecord {
- /* The stuff from gnome-pilot-conduit-standard-abs.h
- Must be first in the structure, or instances of this
- structure cannot be used by gnome-pilot-conduit-standard-abs.
- */
- GnomePilotDesktopRecord local;
-
- /* The corresponding Comp object */
- CalComponent *comp;
-
- /* pilot-link todo structure */
- struct ToDo *todo;
-};
-
-/* This is the context for all the Evolution ToDo conduit methods. */
-typedef struct _EToDoConduitContext EToDoConduitContext;
-struct _EToDoConduitContext {
- EToDoConduitCfg *cfg;
-
- struct ToDoAppInfo ai;
-
- CalClient *client;
- char *calendar_file;
- gboolean calendar_open_success;
-
- GList *uids;
- GList *changed;
- GHashTable *changed_hash;
-
- EPilotMap *map;
-};
-
-#endif __TODO_CONDUIT_H__
-
-
-
-
-
-
diff --git a/calendar/gui/.cvsignore b/calendar/gui/.cvsignore
deleted file mode 100644
index f7f6b10b34..0000000000
--- a/calendar/gui/.cvsignore
+++ /dev/null
@@ -1,17 +0,0 @@
-Makefile.in
-Makefile
-.deps
-_libs
-.libs
-.pure
-evolution-calendar
-evolution-calendar.pure
-getdate.c
-*.lo
-Evolution-Composer-common.c
-Evolution-Composer-skels.c
-Evolution-Composer-stubs.c
-Evolution-Composer.h
-GNOME_Evolution_Calendar_Control.oaf
-GNOME_Evolution_Calendar.oaf
-GNOME_Evolution_Calendar_gnomecal.oaf
diff --git a/calendar/gui/Evolution-Composer.h b/calendar/gui/Evolution-Composer.h
deleted file mode 100644
index bd61419d04..0000000000
--- a/calendar/gui/Evolution-Composer.h
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- * This file was generated by orbit-idl - DO NOT EDIT!
- */
-
-#include <glib.h>
-#define ORBIT_IDL_SERIAL 9
-#include <orb/orbit.h>
-
-#ifndef Evolution_Composer_H
-#define Evolution_Composer_H 1
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/** typedefs **/
-#include <bonobo/Bonobo.h>
-#if !defined(ORBIT_DECL_GNOME_Evolution_Composer) && !defined(_GNOME_Evolution_Composer_defined)
-#define ORBIT_DECL_GNOME_Evolution_Composer 1
-#define _GNOME_Evolution_Composer_defined 1
-#define GNOME_Evolution_Composer__free CORBA_Object__free
- typedef CORBA_Object GNOME_Evolution_Composer;
- extern CORBA_unsigned_long GNOME_Evolution_Composer__classid;
-#if !defined(TC_IMPL_TC_GNOME_Evolution_Composer_0)
-#define TC_IMPL_TC_GNOME_Evolution_Composer_0 'E'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_1 'v'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_2 'o'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_3 'l'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_4 'u'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_5 't'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_6 'i'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_7 'o'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_8 'n'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_9 '_'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_10 'C'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_11 'o'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_12 'm'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_13 'p'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_14 'o'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_15 's'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_16 'e'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_17 'r'
- extern const struct CORBA_TypeCode_struct
- TC_GNOME_Evolution_Composer_struct;
-#define TC_GNOME_Evolution_Composer ((CORBA_TypeCode)&TC_GNOME_Evolution_Composer_struct)
-#endif
-#endif
-#if !defined(_GNOME_Evolution_Composer_Recipient_defined)
-#define _GNOME_Evolution_Composer_Recipient_defined 1
- typedef struct
- {
- CORBA_char *name;
- CORBA_char *address;
- }
- GNOME_Evolution_Composer_Recipient;
-
-#if !defined(TC_IMPL_TC_GNOME_Evolution_Composer_Recipient_0)
-#define TC_IMPL_TC_GNOME_Evolution_Composer_Recipient_0 'E'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_Recipient_1 'v'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_Recipient_2 'o'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_Recipient_3 'l'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_Recipient_4 'u'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_Recipient_5 't'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_Recipient_6 'i'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_Recipient_7 'o'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_Recipient_8 'n'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_Recipient_9 '_'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_Recipient_10 'C'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_Recipient_11 'o'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_Recipient_12 'm'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_Recipient_13 'p'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_Recipient_14 'o'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_Recipient_15 's'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_Recipient_16 'e'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_Recipient_17 'r'
- extern const struct CORBA_TypeCode_struct
- TC_GNOME_Evolution_Composer_Recipient_struct;
-#define TC_GNOME_Evolution_Composer_Recipient ((CORBA_TypeCode)&TC_GNOME_Evolution_Composer_Recipient_struct)
-#endif
- extern GNOME_Evolution_Composer_Recipient
- *GNOME_Evolution_Composer_Recipient__alloc(void);
- extern gpointer GNOME_Evolution_Composer_Recipient__free(gpointer mem,
- gpointer dat,
- CORBA_boolean free_strings); /* ORBit internal use */
-#endif
-#if !defined(ORBIT_DECL_CORBA_sequence_GNOME_Evolution_Composer_Recipient) && !defined(_CORBA_sequence_GNOME_Evolution_Composer_Recipient_defined)
-#define ORBIT_DECL_CORBA_sequence_GNOME_Evolution_Composer_Recipient 1
-#define _CORBA_sequence_GNOME_Evolution_Composer_Recipient_defined 1
-#define ORBIT_IMPL_CORBA_sequence_GNOME_Evolution_Composer_Recipient_0 'E'
-#define ORBIT_IMPL_CORBA_sequence_GNOME_Evolution_Composer_Recipient_1 'v'
-#define ORBIT_IMPL_CORBA_sequence_GNOME_Evolution_Composer_Recipient_2 'o'
-#define ORBIT_IMPL_CORBA_sequence_GNOME_Evolution_Composer_Recipient_3 'l'
-#define ORBIT_IMPL_CORBA_sequence_GNOME_Evolution_Composer_Recipient_4 'u'
-#define ORBIT_IMPL_CORBA_sequence_GNOME_Evolution_Composer_Recipient_5 't'
-#define ORBIT_IMPL_CORBA_sequence_GNOME_Evolution_Composer_Recipient_6 'i'
-#define ORBIT_IMPL_CORBA_sequence_GNOME_Evolution_Composer_Recipient_7 'o'
-#define ORBIT_IMPL_CORBA_sequence_GNOME_Evolution_Composer_Recipient_8 'n'
-#define ORBIT_IMPL_CORBA_sequence_GNOME_Evolution_Composer_Recipient_9 '_'
-#define ORBIT_IMPL_CORBA_sequence_GNOME_Evolution_Composer_Recipient_10 'C'
-#define ORBIT_IMPL_CORBA_sequence_GNOME_Evolution_Composer_Recipient_11 'o'
-#define ORBIT_IMPL_CORBA_sequence_GNOME_Evolution_Composer_Recipient_12 'm'
-#define ORBIT_IMPL_CORBA_sequence_GNOME_Evolution_Composer_Recipient_13 'p'
-#define ORBIT_IMPL_CORBA_sequence_GNOME_Evolution_Composer_Recipient_14 'o'
-#define ORBIT_IMPL_CORBA_sequence_GNOME_Evolution_Composer_Recipient_15 's'
-#define ORBIT_IMPL_CORBA_sequence_GNOME_Evolution_Composer_Recipient_16 'e'
-#define ORBIT_IMPL_CORBA_sequence_GNOME_Evolution_Composer_Recipient_17 'r'
- typedef struct
- {
- CORBA_unsigned_long _maximum,
- _length;
- GNOME_Evolution_Composer_Recipient *_buffer;
- CORBA_boolean _release;
- }
- CORBA_sequence_GNOME_Evolution_Composer_Recipient;
-#if !defined(TC_IMPL_TC_CORBA_sequence_GNOME_Evolution_Composer_Recipient_0)
-#define TC_IMPL_TC_CORBA_sequence_GNOME_Evolution_Composer_Recipient_0 'E'
-#define TC_IMPL_TC_CORBA_sequence_GNOME_Evolution_Composer_Recipient_1 'v'
-#define TC_IMPL_TC_CORBA_sequence_GNOME_Evolution_Composer_Recipient_2 'o'
-#define TC_IMPL_TC_CORBA_sequence_GNOME_Evolution_Composer_Recipient_3 'l'
-#define TC_IMPL_TC_CORBA_sequence_GNOME_Evolution_Composer_Recipient_4 'u'
-#define TC_IMPL_TC_CORBA_sequence_GNOME_Evolution_Composer_Recipient_5 't'
-#define TC_IMPL_TC_CORBA_sequence_GNOME_Evolution_Composer_Recipient_6 'i'
-#define TC_IMPL_TC_CORBA_sequence_GNOME_Evolution_Composer_Recipient_7 'o'
-#define TC_IMPL_TC_CORBA_sequence_GNOME_Evolution_Composer_Recipient_8 'n'
-#define TC_IMPL_TC_CORBA_sequence_GNOME_Evolution_Composer_Recipient_9 '_'
-#define TC_IMPL_TC_CORBA_sequence_GNOME_Evolution_Composer_Recipient_10 'C'
-#define TC_IMPL_TC_CORBA_sequence_GNOME_Evolution_Composer_Recipient_11 'o'
-#define TC_IMPL_TC_CORBA_sequence_GNOME_Evolution_Composer_Recipient_12 'm'
-#define TC_IMPL_TC_CORBA_sequence_GNOME_Evolution_Composer_Recipient_13 'p'
-#define TC_IMPL_TC_CORBA_sequence_GNOME_Evolution_Composer_Recipient_14 'o'
-#define TC_IMPL_TC_CORBA_sequence_GNOME_Evolution_Composer_Recipient_15 's'
-#define TC_IMPL_TC_CORBA_sequence_GNOME_Evolution_Composer_Recipient_16 'e'
-#define TC_IMPL_TC_CORBA_sequence_GNOME_Evolution_Composer_Recipient_17 'r'
- extern const struct CORBA_TypeCode_struct
- TC_CORBA_sequence_GNOME_Evolution_Composer_Recipient_struct;
-#define TC_CORBA_sequence_GNOME_Evolution_Composer_Recipient ((CORBA_TypeCode)&TC_CORBA_sequence_GNOME_Evolution_Composer_Recipient_struct)
-#endif
- extern CORBA_sequence_GNOME_Evolution_Composer_Recipient
- *CORBA_sequence_GNOME_Evolution_Composer_Recipient__alloc(void);
- extern gpointer
- CORBA_sequence_GNOME_Evolution_Composer_Recipient__free(gpointer mem,
- gpointer dat,
- CORBA_boolean free_strings); /* ORBit internal use */
- GNOME_Evolution_Composer_Recipient
- *CORBA_sequence_GNOME_Evolution_Composer_Recipient_allocbuf
- (CORBA_unsigned_long len);
-#endif
-#if !defined(_GNOME_Evolution_Composer_RecipientList_defined)
-#define _GNOME_Evolution_Composer_RecipientList_defined 1
- typedef CORBA_sequence_GNOME_Evolution_Composer_Recipient
- GNOME_Evolution_Composer_RecipientList;
-#if !defined(TC_IMPL_TC_GNOME_Evolution_Composer_RecipientList_0)
-#define TC_IMPL_TC_GNOME_Evolution_Composer_RecipientList_0 'E'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_RecipientList_1 'v'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_RecipientList_2 'o'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_RecipientList_3 'l'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_RecipientList_4 'u'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_RecipientList_5 't'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_RecipientList_6 'i'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_RecipientList_7 'o'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_RecipientList_8 'n'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_RecipientList_9 '_'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_RecipientList_10 'C'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_RecipientList_11 'o'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_RecipientList_12 'm'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_RecipientList_13 'p'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_RecipientList_14 'o'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_RecipientList_15 's'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_RecipientList_16 'e'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_RecipientList_17 'r'
- extern const struct CORBA_TypeCode_struct
- TC_GNOME_Evolution_Composer_RecipientList_struct;
-#define TC_GNOME_Evolution_Composer_RecipientList ((CORBA_TypeCode)&TC_GNOME_Evolution_Composer_RecipientList_struct)
-#endif
- extern GNOME_Evolution_Composer_RecipientList
- *GNOME_Evolution_Composer_RecipientList__alloc(void);
- extern gpointer GNOME_Evolution_Composer_RecipientList__free(gpointer mem,
- gpointer dat,
- CORBA_boolean free_strings); /* ORBit internal use */
-#endif
-#define ex_GNOME_Evolution_Composer_CouldNotParse "IDL:GNOME/Evolution/Composer/CouldNotParse:1.0"
- void _ORBIT_GNOME_Evolution_Composer_CouldNotParse_demarshal(GIOPRecvBuffer
- *
- _ORBIT_recv_buffer,
- CORBA_Environment
- * ev);
- void _ORBIT_GNOME_Evolution_Composer_CouldNotParse_marshal(GIOPSendBuffer *
- _ORBIT_send_buffer,
- CORBA_Environment
- * ev);
-#if !defined(_GNOME_Evolution_Composer_CouldNotParse_defined)
-#define _GNOME_Evolution_Composer_CouldNotParse_defined 1
- typedef struct
- {
- int dummy;
- }
- GNOME_Evolution_Composer_CouldNotParse;
-
-#if !defined(TC_IMPL_TC_GNOME_Evolution_Composer_CouldNotParse_0)
-#define TC_IMPL_TC_GNOME_Evolution_Composer_CouldNotParse_0 'E'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_CouldNotParse_1 'v'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_CouldNotParse_2 'o'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_CouldNotParse_3 'l'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_CouldNotParse_4 'u'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_CouldNotParse_5 't'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_CouldNotParse_6 'i'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_CouldNotParse_7 'o'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_CouldNotParse_8 'n'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_CouldNotParse_9 '_'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_CouldNotParse_10 'C'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_CouldNotParse_11 'o'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_CouldNotParse_12 'm'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_CouldNotParse_13 'p'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_CouldNotParse_14 'o'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_CouldNotParse_15 's'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_CouldNotParse_16 'e'
-#define TC_IMPL_TC_GNOME_Evolution_Composer_CouldNotParse_17 'r'
- extern const struct CORBA_TypeCode_struct
- TC_GNOME_Evolution_Composer_CouldNotParse_struct;
-#define TC_GNOME_Evolution_Composer_CouldNotParse ((CORBA_TypeCode)&TC_GNOME_Evolution_Composer_CouldNotParse_struct)
-#endif
-#define GNOME_Evolution_Composer_CouldNotParse__alloc() NULL
- extern gpointer GNOME_Evolution_Composer_CouldNotParse__free(gpointer mem,
- gpointer dat,
- CORBA_boolean free_strings); /* ORBit internal use */
-#endif
-
-/** POA structures **/
- typedef struct
- {
- void *_private;
- void (*setHeaders) (PortableServer_Servant _servant,
- const GNOME_Evolution_Composer_RecipientList * to,
- const GNOME_Evolution_Composer_RecipientList * cc,
- const GNOME_Evolution_Composer_RecipientList * bcc,
- const CORBA_char * subject, CORBA_Environment * ev);
- void (*setBodyText) (PortableServer_Servant _servant,
- const CORBA_char * body, CORBA_Environment * ev);
- void (*attachMIME) (PortableServer_Servant _servant,
- const CORBA_char * data, CORBA_Environment * ev);
- void (*attachData) (PortableServer_Servant _servant,
- const CORBA_char * content_type,
- const CORBA_char * filename,
- const CORBA_char * description,
- const CORBA_boolean show_inline,
- const CORBA_char * data, CORBA_Environment * ev);
- void (*show) (PortableServer_Servant _servant, CORBA_Environment * ev);
- }
- POA_GNOME_Evolution_Composer__epv;
- typedef struct
- {
- PortableServer_ServantBase__epv *_base_epv;
- POA_Bonobo_Unknown__epv *Bonobo_Unknown_epv;
- POA_GNOME_Evolution_Composer__epv *GNOME_Evolution_Composer_epv;
- }
- POA_GNOME_Evolution_Composer__vepv;
- typedef struct
- {
- void *_private;
- POA_GNOME_Evolution_Composer__vepv *vepv;
- }
- POA_GNOME_Evolution_Composer;
- extern void POA_GNOME_Evolution_Composer__init(PortableServer_Servant
- servant,
- CORBA_Environment * ev);
- extern void POA_GNOME_Evolution_Composer__fini(PortableServer_Servant
- servant,
- CORBA_Environment * ev);
-
-/** prototypes **/
-#define GNOME_Evolution_Composer_ref Bonobo_Unknown_ref
-#define GNOME_Evolution_Composer_unref Bonobo_Unknown_unref
-#define GNOME_Evolution_Composer_queryInterface Bonobo_Unknown_queryInterface
- void GNOME_Evolution_Composer_setHeaders(GNOME_Evolution_Composer _obj,
- const
- GNOME_Evolution_Composer_RecipientList
- * to,
- const
- GNOME_Evolution_Composer_RecipientList
- * cc,
- const
- GNOME_Evolution_Composer_RecipientList
- * bcc, const CORBA_char * subject,
- CORBA_Environment * ev);
- void GNOME_Evolution_Composer_setBodyText(GNOME_Evolution_Composer _obj,
- const CORBA_char * body,
- CORBA_Environment * ev);
- void GNOME_Evolution_Composer_attachMIME(GNOME_Evolution_Composer _obj,
- const CORBA_char * data,
- CORBA_Environment * ev);
- void GNOME_Evolution_Composer_attachData(GNOME_Evolution_Composer _obj,
- const CORBA_char * content_type,
- const CORBA_char * filename,
- const CORBA_char * description,
- const CORBA_boolean show_inline,
- const CORBA_char * data,
- CORBA_Environment * ev);
- void GNOME_Evolution_Composer_show(GNOME_Evolution_Composer _obj,
- CORBA_Environment * ev);
-
- void
- _ORBIT_skel_GNOME_Evolution_Composer_setHeaders
- (POA_GNOME_Evolution_Composer * _ORBIT_servant,
- GIOPRecvBuffer * _ORBIT_recv_buffer, CORBA_Environment * ev,
- void (*_impl_setHeaders) (PortableServer_Servant _servant,
- const GNOME_Evolution_Composer_RecipientList
- * to,
- const GNOME_Evolution_Composer_RecipientList
- * cc,
- const GNOME_Evolution_Composer_RecipientList
- * bcc, const CORBA_char * subject,
- CORBA_Environment * ev));
- void
- _ORBIT_skel_GNOME_Evolution_Composer_setBodyText
- (POA_GNOME_Evolution_Composer * _ORBIT_servant,
- GIOPRecvBuffer * _ORBIT_recv_buffer, CORBA_Environment * ev,
- void (*_impl_setBodyText) (PortableServer_Servant _servant,
- const CORBA_char * body,
- CORBA_Environment * ev));
- void
- _ORBIT_skel_GNOME_Evolution_Composer_attachMIME
- (POA_GNOME_Evolution_Composer * _ORBIT_servant,
- GIOPRecvBuffer * _ORBIT_recv_buffer, CORBA_Environment * ev,
- void (*_impl_attachMIME) (PortableServer_Servant _servant,
- const CORBA_char * data,
- CORBA_Environment * ev));
- void
- _ORBIT_skel_GNOME_Evolution_Composer_attachData
- (POA_GNOME_Evolution_Composer * _ORBIT_servant,
- GIOPRecvBuffer * _ORBIT_recv_buffer, CORBA_Environment * ev,
- void (*_impl_attachData) (PortableServer_Servant _servant,
- const CORBA_char * content_type,
- const CORBA_char * filename,
- const CORBA_char * description,
- const CORBA_boolean show_inline,
- const CORBA_char * data,
- CORBA_Environment * ev));
- void _ORBIT_skel_GNOME_Evolution_Composer_show(POA_GNOME_Evolution_Composer
- * _ORBIT_servant,
- GIOPRecvBuffer *
- _ORBIT_recv_buffer,
- CORBA_Environment * ev,
- void (*_impl_show)
- (PortableServer_Servant
- _servant,
- CORBA_Environment * ev));
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-#undef ORBIT_IDL_SERIAL
diff --git a/calendar/gui/GNOME_Evolution_Calendar.oaf.in b/calendar/gui/GNOME_Evolution_Calendar.oaf.in
deleted file mode 100644
index 70924677f7..0000000000
--- a/calendar/gui/GNOME_Evolution_Calendar.oaf.in
+++ /dev/null
@@ -1,120 +0,0 @@
-<oaf_info>
-
-<oaf_server iid="OAFIID:GNOME_Evolution_Calendar_iTip_ControlFactory"
- type="exe"
- location="evolution-calendar">
-
- <oaf_attribute name="repo_ids" type="stringv">
- <item value="IDL:GNOME/ObjectFactory:1.0"/>
- </oaf_attribute>
-
- <oaf_attribute name="description" type="string"
- _value="Factory for the calendar iTip view control"/>
-
-</oaf_server>
-
-<oaf_server iid="OAFIID:GNOME_Evolution_Calendar_iTip_Control"
- type="factory"
- location="OAFIID:GNOME_Evolution_Calendar_iTip_ControlFactory">
-
- <oaf_attribute name="repo_ids" type="stringv">
- <item value="IDL:Bonobo/Control:1.0"/>
- <item value="IDL:Bonobo/PersistStream:1.0"/>
- </oaf_attribute>
-
- <oaf_attribute name="bonobo:supported_mime_types" type="stringv">
- <item value="text/calendar"/>
- <item value="text/x-calendar"/>
- </oaf_attribute>
-
- <oaf_attribute name="name" type="string"
- _value="Evolution calendar iTip/iMip viewer"/>
- <oaf_attribute name="description" type="string"
- _value="Factory for the calendar iTip view control"/>
-
-</oaf_server>
-
-<oaf_server iid="OAFIID:GNOME_Evolution_Calendar_ShellComponentFactory"
- type="exe"
- location="evolution-calendar">
-
- <oaf_attribute name="repo_ids" type="stringv">
- <item value="IDL:GNOME/ObjectFactory:1.0"/>
- </oaf_attribute>
-
- <oaf_attribute name="description" type="string"
- _value="Factory for the Evolution calendar component."/>
-
-</oaf_server>
-
-<oaf_server iid="OAFIID:GNOME_Evolution_Calendar_ShellComponent"
- type="factory"
- location="OAFIID:GNOME_Evolution_Calendar_ShellComponentFactory">
-
- <oaf_attribute name="repo_ids" type="stringv">
- <item value="IDL:GNOME/Evolution/ShellComponent:1.0"/>
- </oaf_attribute>
-
- <oaf_attribute name="description" type="string"
- _value="Evolution component for handling the calendar."/>
-
- <oaf_attribute name="evolution:shell-component-icon" type="string"
- value="evolution-calendar.png"/>
-</oaf_server>
-
-<oaf_server iid="OAFIID:GNOME_Evolution_Calendar_Summary_ComponentFactory"
- type="exe"
- location="evolution-calendar">
-
- <oaf_attribute name="repo_ids" type="stringv">
- <item value="IDL:GNOME:GenericFactory:1.0"/>
- </oaf_attribute>
-
- <oaf_attribute name="description" type="string"
- _value="Factory for the Calendar Summary component."/>
-</oaf_server>
-
-<oaf_server iid="OAFIID:GNOME_Evolution_Calendar_Summary_Component"
- type="factory"
- location="OAFIID:GNOME_Evolution_Calendar_Summary_ComponentFactory">
-
- <oaf_attribute name="repo_ids" type="stringv">
- <item value="IDL:GNOME/Evolution:Summary:ComponentFactory:1.0"/>
- </oaf_attribute>
-
- <oaf_attribute name="description" type="string"
- _value="Evolution calendar executive summary component."/>
-</oaf_server>
-
-<oaf_server iid="OAFIID:GNOME_Evolution_Calendar_ControlFactory"
- type="exe"
- location="evolution-calendar">
-
- <oaf_attribute name="repo_ids" type="stringv">
- <item value="IDL:GNOME/ObjectFactory:1.0"/>
- </oaf_attribute>
-
- <oaf_attribute name="description" type="string"
- _value="Factory for the sample Calendar control"/>
-</oaf_server>
-
-<oaf_server iid="OAFIID:GNOME_Evolution_Calendar_Control"
- type="factory"
- location="OAFIID:GNOME_Evolution_Calendar_ControlFactory">
-
- <oaf_attribute name="repo_ids" type="stringv">
- <item value="IDL:BonoboControl/calendar-control:1.0"/>
- <item value="IDL:Bonobo/Control:1.0"/>
- <item value="IDL:Bonobo/PersistFile:1.0"/>
- <item value="IDL:Bonobo/PropertyBag:1.0"/>
- </oaf_attribute>
-
- <oaf_attribute name="bonobo:supported_mime_types" type="stringv">
- <item value="text/calendar"/>
- </oaf_attribute>
-
- <oaf_attribute name="description" type="string"
- _value="A sample Bonobo control which displays an calendar."/>
-</oaf_server>
-
-</oaf_info>
diff --git a/calendar/gui/Makefile.am b/calendar/gui/Makefile.am
deleted file mode 100644
index 292e1ebd28..0000000000
--- a/calendar/gui/Makefile.am
+++ /dev/null
@@ -1,165 +0,0 @@
-## CORBA stuff
-
-IDLS = \
- $(srcdir)/../../composer/Evolution-Composer.idl
-
-IDL_GENERATED = \
- Evolution-Composer.h \
- Evolution-Composer-common.c \
- Evolution-Composer-skels.c \
- Evolution-Composer-stubs.c
-
-$(IDL_GENERATED): $(IDLS)
- $(ORBIT_IDL) -I $(srcdir) -I $(datadir)/idl `$(GNOME_CONFIG) --cflags idl` \
- $(srcdir)/../../composer/Evolution-Composer.idl
-
-SUBDIRS = alarm-notify dialogs
-
-help_base = $(datadir)/gnome/help/cal
-
-bin_PROGRAMS = evolution-calendar
-
-INCLUDES = \
- -DG_LOG_DOMAIN=\"calendar-gui\" \
- -I$(top_builddir)/shell \
- -I$(top_srcdir)/shell \
- -I$(top_srcdir) \
- -I$(top_srcdir)/calendar \
- -I$(top_srcdir)/calendar/cal-client \
- -I$(top_builddir)/calendar/cal-client \
- -I$(top_srcdir)/libical/src/libical \
- -I$(top_builddir)/libical/src/libical \
- -I$(top_srcdir)/widgets \
- -I$(top_srcdir)/executive-summary \
- -I$(includedir) \
- $(BONOBO_HTML_GNOME_CFLAGS) \
- $(GNOME_VFS_CFLAGS) \
- $(GAL_CFLAGS) \
- -DEVOLUTION_DATADIR=\""$(datadir)"\" \
- -DEVOLUTION_GLADEDIR=\""$(gladedir)"\" \
- -DEVOLUTION_LOCALEDIR=\""$(localedir)"\"
-
-gladedir = $(datadir)/evolution/glade
-
-glade_DATA = \
- event-editor-dialog.glade \
- e-meeting-dialog.glade \
- e-itip-control.glade \
- goto-dialog.glade
-
-evolution_calendar_SOURCES = \
- $(IDL_GENERATED) \
- calendar-config.c \
- calendar-config.h \
- calendar-commands.c \
- calendar-commands.h \
- calendar-model.c \
- calendar-model.h \
- calendar-summary.c \
- calendar-summary.h \
- comp-util.c \
- comp-util.h \
- control-factory.c \
- control-factory.h \
- component-factory.c \
- component-factory.h \
- e-calendar-table.h \
- e-calendar-table.c \
- e-day-view-main-item.c \
- e-day-view-main-item.h \
- e-day-view-time-item.c \
- e-day-view-time-item.h \
- e-day-view-top-item.c \
- e-day-view-top-item.h \
- e-day-view.c \
- e-day-view.h \
- e-itip-control.h \
- e-itip-control.c \
- e-meeting-edit.h \
- e-meeting-edit.c \
- e-week-view-event-item.c \
- e-week-view-event-item.h \
- e-week-view-main-item.c \
- e-week-view-main-item.h \
- e-week-view-titles-item.c \
- e-week-view-titles-item.h \
- e-week-view.c \
- e-week-view.h \
- e-tasks.c \
- e-tasks.h \
- event-editor.c \
- event-editor.h \
- gnome-cal.c \
- gnome-cal.h \
- goto.c \
- goto.h \
- itip-utils.c \
- itip-utils.h \
- main.c \
- print.c \
- print.h \
- tag-calendar.c \
- tag-calendar.h \
- tasks-control-factory.c \
- tasks-control-factory.h \
- tasks-control.c \
- tasks-control.h \
- tasks-migrate.c \
- tasks-migrate.h \
- weekday-picker.c \
- weekday-picker.h \
- widget-util.c \
- widget-util.h
-
-evolution_calendar_LDADD = \
- alarm-notify/libalarm.a \
- $(top_builddir)/shell/libeshell.a \
- $(top_builddir)/calendar/cal-client/libcal-client.la \
- $(top_builddir)/calendar/cal-util/libcal-util.la \
- $(top_builddir)/e-util/libeutil.la \
- $(top_builddir)/executive-summary/evolution-services/libevolution-services.la \
- $(top_builddir)/libversit/libversit.la \
- $(top_builddir)/libical/src/libical/libical.la \
- $(top_builddir)/widgets/meeting-time-sel/libevolutionmtsel.a \
- $(top_builddir)/widgets/misc/libemiscwidgets.a \
- $(top_builddir)/widgets/menus/libmenus.la \
- dialogs/libcal-dialogs.a \
- $(BONOBO_HTML_GNOME_LIBS) \
- $(GNOME_VFS_LIBS) \
- $(GAL_LIBS) \
- $(INTLLIBS)
-
-#evolution_calendar_LDFLAGS = `gnome-config --libs gdk_pixbuf`
-
-oafdir = $(datadir)/oaf
-oaf_in_files = \
- GNOME_Evolution_Calendar.oaf.in
-
-oaf_DATA = $(oaf_in_files:.oaf.in=.oaf)
-
-@XML_I18N_MERGE_OAF_RULE@
-
-EXTRA_DIST = \
- $(glade_DATA) \
- $(oaf_in_files)
-
-install-data-local:
- $(mkinstalldirs) $(DESTDIR)$(help_base)/C
- $(mkinstalldirs) $(Conduitsdir)
-
-if ENABLE_PURIFY
-PLINK = $(LIBTOOL) --mode=link $(PURIFY) $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
-
-all-local: evolution-calendar.pure
-
-evolution-calendar.pure: evolution-calendar
- @rm -f evolution-calendar.pure
- $(PLINK) $(evolution_calendar_LDFLAGS) $(evolution_calendar_OBJECTS) $(evolution_calendar_LDADD) $(LIBS)
-
-endif
-
-BUILT_SOURCES = $(IDL_GENERATED)
-CLEANFILES += $(BUILT_SOURCES)
-
-dist-hook:
- cd $(distdir); rm -f $(BUILT_SOURCES)
diff --git a/calendar/gui/alarm-notify.c b/calendar/gui/alarm-notify.c
deleted file mode 100644
index d824b2a189..0000000000
--- a/calendar/gui/alarm-notify.c
+++ /dev/null
@@ -1,963 +0,0 @@
-/* Evolution calendar - Alarm notification engine
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Authors: Federico Mena-Quintero <federico@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gtk/gtksignal.h>
-#include <cal-util/timeutil.h>
-#include "alarm.h"
-#include "alarm-notify.h"
-
-
-
-/* Whether the notification system has been initialized */
-static gboolean alarm_notify_inited;
-
-/* Clients we are monitoring for alarms */
-static GHashTable *client_alarms_hash = NULL;
-
-/* Structure that stores a client we are monitoring */
-typedef struct {
- /* Monitored client */
- CalClient *client;
-
- /* Number of times this client has been registered */
- int refcount;
-
- /* Hash table of component UID -> CompQueuedAlarms. If an element is
- * present here, then it means its cqa->queued_alarms contains at least
- * one queued alarm. When all the alarms for a component have been
- * dequeued, the CompQueuedAlarms structure is removed from the hash
- * table. Thus a CQA exists <=> it has queued alarms.
- */
- GHashTable *uid_alarms_hash;
-} ClientAlarms;
-
-/* Pair of a CalComponentAlarms and the mapping from queued alarm IDs to the
- * actual alarm instance structures.
- */
-typedef struct {
- /* The parent client alarms structure */
- ClientAlarms *parent_client;
-
- /* The actual component and its alarm instances */
- CalComponentAlarms *alarms;
-
- /* List of QueuedAlarm structures */
- GSList *queued_alarms;
-} CompQueuedAlarms;
-
-/* Pair of a queued alarm ID and the alarm trigger instance it refers to */
-typedef struct {
- /* Alarm ID from alarm.h */
- gpointer alarm_id;
-
- /* Instance from our parent CompAlarms->alarms list */
- CalAlarmInstance *instance;
-} QueuedAlarm;
-
-/* Alarm ID for the midnight refresh function */
-static gpointer midnight_refresh_id = NULL;
-
-
-
-static void load_alarms (ClientAlarms *ca);
-static void midnight_refresh_cb (gpointer alarm_id, time_t trigger, gpointer data);
-
-/* Queues an alarm trigger for midnight so that we can load the next day's worth
- * of alarms.
- */
-static void
-queue_midnight_refresh (void)
-{
- time_t midnight;
-
- g_assert (midnight_refresh_id == NULL);
-
- midnight = time_day_end (time (NULL));
-
- midnight_refresh_id = alarm_add (midnight, midnight_refresh_cb, NULL, NULL);
- if (!midnight_refresh_id) {
- g_message ("alarm_notify_init(): Could not set up the midnight refresh alarm!");
- /* FIXME: what to do? */
- }
-}
-
-/* Loads a client's alarms; called from g_hash_table_foreach() */
-static void
-add_client_alarms_cb (gpointer key, gpointer value, gpointer data)
-{
- ClientAlarms *ca;
-
- ca = value;
- load_alarms (ca);
-}
-
-/* Loads the alarms for the new day every midnight */
-static void
-midnight_refresh_cb (gpointer alarm_id, time_t trigger, gpointer data)
-{
- /* Re-load the alarms for all clients */
-
- g_hash_table_foreach (client_alarms_hash, add_client_alarms_cb, NULL);
-
- /* Re-schedule the midnight update */
-
- midnight_refresh_id = NULL;
- queue_midnight_refresh ();
-}
-
-/* Looks up a client in the client alarms hash table */
-static ClientAlarms *
-lookup_client (CalClient *client)
-{
- return g_hash_table_lookup (client_alarms_hash, client);
-}
-
-/* Callback used when an alarm triggers */
-static void
-alarm_trigger_cb (gpointer alarm_id, time_t trigger, gpointer data)
-{
- CompQueuedAlarms *cqa;
-
- cqa = data;
-
- /* FIXME */
-
- g_message ("alarm_trigger_cb(): Triggered!");
-}
-
-/* Callback used when an alarm must be destroyed */
-static void
-alarm_destroy_cb (gpointer alarm_id, gpointer data)
-{
- CompQueuedAlarms *cqa;
- GSList *l;
- QueuedAlarm *qa;
- const char *uid;
-
- cqa = data;
-
- qa = NULL; /* Keep GCC happy */
-
- /* Find the alarm in the queued alarms */
-
- for (l = cqa->queued_alarms; l; l = l->next) {
- qa = l->data;
- if (qa->alarm_id == alarm_id)
- break;
- }
-
- g_assert (l != NULL);
-
- /* Remove it and free it */
-
- cqa->queued_alarms = g_slist_remove_link (cqa->queued_alarms, l);
- g_slist_free_1 (l);
-
- g_free (qa);
-
- /* If this was the last queued alarm for this component, remove the
- * component itself.
- */
-
- if (cqa->queued_alarms != NULL)
- return;
-
- cal_component_get_uid (cqa->alarms->comp, &uid);
- g_hash_table_remove (cqa->parent_client->uid_alarms_hash, uid);
- cqa->parent_client = NULL;
-
- cal_component_alarms_free (cqa->alarms);
- cqa->alarms = NULL;
-
- g_free (cqa);
-}
-
-/* Adds the alarms in a CalComponentAlarms structure to the alarms queued for a
- * particular client. Also puts the triggers in the alarm timer queue.
- */
-static void
-add_component_alarms (ClientAlarms *ca, CalComponentAlarms *alarms)
-{
- const char *uid;
- CompQueuedAlarms *cqa;
- GSList *l;
-
- /* No alarms? */
- if (alarms->alarms == NULL) {
- cal_component_alarms_free (alarms);
- return;
- }
-
- cqa = g_new (CompQueuedAlarms, 1);
- cqa->parent_client = ca;
- cqa->alarms = alarms;
-
- cqa->queued_alarms = NULL;
-
- for (l = alarms->alarms; l; l = l->next) {
- CalAlarmInstance *instance;
- gpointer alarm_id;
- QueuedAlarm *qa;
-
- instance = l->data;
-
- alarm_id = alarm_add (instance->trigger, alarm_trigger_cb, cqa, alarm_destroy_cb);
- if (!alarm_id) {
- g_message ("add_component_alarms(): Could not schedule a trigger for "
- "%ld, discarding...", (long) instance->trigger);
- continue;
- }
-
- qa = g_new (QueuedAlarm, 1);
- qa->alarm_id = alarm_id;
- qa->instance = instance;
-
- cqa->queued_alarms = g_slist_prepend (cqa->queued_alarms, qa);
- }
-
- cal_component_get_uid (alarms->comp, &uid);
-
- /* If we failed to add all the alarms, then we should get rid of the cqa */
- if (cqa->queued_alarms == NULL) {
- g_message ("add_component_alarms(): Could not add any of the alarms "
- "for the component `%s'; discarding it...", uid);
-
- cal_component_alarms_free (cqa->alarms);
- cqa->alarms = NULL;
-
- g_free (cqa);
- return;
- }
-
- cqa->queued_alarms = g_slist_reverse (cqa->queued_alarms);
- g_hash_table_insert (ca->uid_alarms_hash, (char *) uid, cqa);
-}
-
-/* Loads today's remaining alarms for a client */
-static void
-load_alarms (ClientAlarms *ca)
-{
- time_t now, day_end;
- GSList *comp_alarms;
- GSList *l;
-
- now = time (NULL);
- day_end = time_day_end (now);
-
- comp_alarms = cal_client_get_alarms_in_range (ca->client, now, day_end);
-
- /* All of the last day's alarms should have already triggered and should
- * have been removed, so we should have no pending components.
- */
- g_assert (g_hash_table_size (ca->uid_alarms_hash) == 0);
-
- for (l = comp_alarms; l; l = l->next) {
- CalComponentAlarms *alarms;
-
- alarms = l->data;
- add_component_alarms (ca, alarms);
- }
-
- g_slist_free (comp_alarms);
-}
-
-/* Called when a calendar client finished loading; we load its alarms */
-static void
-cal_loaded_cb (CalClient *client, CalClientLoadStatus status, gpointer data)
-{
- ClientAlarms *ca;
-
- ca = data;
-
- if (status != CAL_CLIENT_LOAD_SUCCESS)
- return;
-
- load_alarms (ca);
-}
-
-/* Looks up a component's queued alarm structure in a client alarms structure */
-static CompQueuedAlarms *
-lookup_comp_queued_alarms (ClientAlarms *ca, const char *uid)
-{
- return g_hash_table_lookup (ca->uid_alarms_hash, uid);
-}
-
-/* Removes a component an its alarms */
-static void
-remove_comp (ClientAlarms *ca, const char *uid)
-{
- CompQueuedAlarms *cqa;
- GSList *l;
-
- cqa = lookup_comp_queued_alarms (ca, uid);
- if (!cqa)
- return;
-
- /* If a component is present, then it means we must have alarms queued
- * for it.
- */
- g_assert (cqa->queued_alarms != NULL);
-
- for (l = cqa->queued_alarms; l;) {
- QueuedAlarm *qa;
-
- qa = l->data;
-
- /* Get the next element here because the list element will go
- * away. Also, we do not free the qa here because it will be
- * freed by the destroy notification function.
- */
- l = l->next;
-
- alarm_remove (qa->alarm_id);
- }
-
- /* The list should be empty now, and thus the queued component alarms
- * structure should have been freed and removed from the hash table.
- */
- g_assert (lookup_comp_queued_alarms (ca, uid) == NULL);
-}
-
-/* Called when a calendar component changes; we must reload its corresponding
- * alarms.
- */
-static void
-obj_updated_cb (CalClient *client, const char *uid, gpointer data)
-{
- ClientAlarms *ca;
- time_t now, day_end;
- CalComponentAlarms *alarms;
- gboolean found;
-
- ca = data;
-
- remove_comp (ca, uid);
-
- now = time (NULL);
- day_end = time_day_end (now);
-
- found = cal_client_get_alarms_for_object (ca->client, uid, now, day_end, &alarms);
-
- if (!found)
- return;
-
- add_component_alarms (ca, alarms);
-}
-
-/* Called when a calendar component is removed; we must delete its corresponding
- * alarms.
- */
-static void
-obj_removed_cb (CalClient *client, const char *uid, gpointer data)
-{
- ClientAlarms *ca;
-
- ca = data;
-
- remove_comp (ca, uid);
-}
-
-
-
-/**
- * alarm_notify_init:
- *
- * Initializes the alarm notification system. This should be called near the
- * beginning of the program, after calling alarm_init().
- **/
-void
-alarm_notify_init (void)
-{
- g_return_if_fail (alarm_notify_inited == FALSE);
-
- client_alarms_hash = g_hash_table_new (g_direct_hash, g_direct_equal);
- queue_midnight_refresh ();
-
- alarm_notify_inited = TRUE;
-}
-
-/**
- * alarm_notify_done:
- *
- * Shuts down the alarm notification system. This should be called near the end
- * of the program. All the monitored calendar clients should already have been
- * unregistered with alarm_notify_remove_client().
- **/
-void
-alarm_notify_done (void)
-{
- g_return_if_fail (alarm_notify_inited);
-
- /* All clients must be unregistered by now */
- g_return_if_fail (g_hash_table_size (client_alarms_hash) == 0);
-
- g_hash_table_destroy (client_alarms_hash);
- client_alarms_hash = NULL;
-
- g_assert (midnight_refresh_id != NULL);
- alarm_remove (midnight_refresh_id);
- midnight_refresh_id = NULL;
-
- alarm_notify_inited = FALSE;
-}
-
-/**
- * alarm_notify_add_client:
- * @client: A calendar client.
- *
- * Adds a calendar client to the alarm notification system. Alarm trigger
- * notifications will be presented at the appropriate times. The client should
- * be removed with alarm_notify_remove_client() when receiving notifications
- * from it is no longer desired.
- *
- * A client can be added any number of times to the alarm notification system,
- * but any single alarm trigger will only be presented once for a particular
- * client. The client must still be removed the same number of times from the
- * notification system when it is no longer wanted.
- **/
-void
-alarm_notify_add_client (CalClient *client)
-{
- ClientAlarms *ca;
-
- g_return_if_fail (alarm_notify_inited);
- g_return_if_fail (client != NULL);
- g_return_if_fail (IS_CAL_CLIENT (client));
-
- ca = lookup_client (client);
- if (ca) {
- ca->refcount++;
- return;
- }
-
- ca = g_new (ClientAlarms, 1);
-
- ca->client = client;
- gtk_object_ref (GTK_OBJECT (ca->client));
-
- ca->refcount = 1;
- g_hash_table_insert (client_alarms_hash, client, ca);
-
- ca->uid_alarms_hash = g_hash_table_new (g_str_hash, g_str_equal);
-
- if (!cal_client_is_loaded (client))
- gtk_signal_connect (GTK_OBJECT (client), "cal_loaded",
- GTK_SIGNAL_FUNC (cal_loaded_cb), ca);
-
- gtk_signal_connect (GTK_OBJECT (client), "obj_updated",
- GTK_SIGNAL_FUNC (obj_updated_cb), ca);
- gtk_signal_connect (GTK_OBJECT (client), "obj_removed",
- GTK_SIGNAL_FUNC (obj_removed_cb), ca);
-
- if (cal_client_is_loaded (client))
- load_alarms (ca);
-}
-
-/* Called from g_hash_table_foreach(); adds a component UID to a list */
-static void
-add_uid_cb (gpointer key, gpointer value, gpointer data)
-{
- GSList **uids;
- const char *uid;
-
- uids = data;
- uid = key;
-
- *uids = g_slist_prepend (*uids, (char *) uid);
-}
-
-/* Removes all the alarms queued for a particular calendar client */
-static void
-remove_client_alarms (ClientAlarms *ca)
-{
- GSList *uids;
- GSList *l;
-
- /* First we build a list of UIDs so that we can remove them one by one */
-
- uids = NULL;
- g_hash_table_foreach (ca->uid_alarms_hash, add_uid_cb, &uids);
-
- for (l = uids; l; l = l->next) {
- const char *uid;
-
- uid = l->data;
-
- remove_comp (ca, uid);
- }
-
- g_slist_free (uids);
-
- /* The hash table should be empty now */
-
- g_assert (g_hash_table_size (ca->uid_alarms_hash) == 0);
-}
-
-/**
- * alarm_notify_remove_client:
- * @client: A calendar client.
- *
- * Removes a calendar client from the alarm notification system.
- **/
-void
-alarm_notify_remove_client (CalClient *client)
-{
- ClientAlarms *ca;
-
- g_return_if_fail (alarm_notify_inited);
- g_return_if_fail (client != NULL);
- g_return_if_fail (IS_CAL_CLIENT (client));
-
- ca = lookup_client (client);
- g_return_if_fail (ca != NULL);
-
- g_assert (ca->refcount > 0);
- ca->refcount--;
-
- if (ca->refcount > 0)
- return;
-
- remove_client_alarms (ca);
-
- /* Clean up */
-
- gtk_signal_disconnect_by_data (GTK_OBJECT (ca->client), ca);
-
- gtk_object_unref (GTK_OBJECT (ca->client));
- ca->client = NULL;
-
- g_hash_table_destroy (ca->uid_alarms_hash);
- ca->uid_alarms_hash = NULL;
-
- g_free (ca);
-
- g_hash_table_remove (client_alarms_hash, client);
-}
-
-
-
-#if 0
-
-/* Sends a mail notification of an alarm trigger */
-static void
-mail_notification (char *mail_address, char *text, time_t app_time)
-{
- pid_t pid;
- int p [2];
- char *command;
-
- pipe (p);
- pid = fork ();
- if (pid == 0){
- int dev_null;
-
- dev_null = open ("/dev/null", O_RDWR);
- dup2 (p [0], 0);
- dup2 (dev_null, 1);
- dup2 (dev_null, 2);
- execl ("/usr/lib/sendmail", "/usr/lib/sendmail",
- mail_address, NULL);
- _exit (127);
- }
- command = g_strconcat ("To: ", mail_address, "\n",
- "Subject: ", _("Reminder of your appointment at "),
- ctime (&app_time), "\n\n", text, "\n", NULL);
- write (p [1], command, strlen (command));
- close (p [1]);
- close (p [0]);
- g_free (command);
-}
-
-static int
-max_open_files (void)
-{
- static int files;
-
- if (files)
- return files;
-
- files = sysconf (_SC_OPEN_MAX);
- if (files != -1)
- return files;
-#ifdef OPEN_MAX
- return files = OPEN_MAX;
-#else
- return files = 256;
-#endif
-}
-
-/* Executes a program as a notification of an alarm trigger */
-static void
-program_notification (char *command, int close_standard)
-{
- struct sigaction ignore, save_intr, save_quit;
- int status = 0, i;
- pid_t pid;
-
- ignore.sa_handler = SIG_IGN;
- sigemptyset (&ignore.sa_mask);
- ignore.sa_flags = 0;
-
- sigaction (SIGINT, &ignore, &save_intr);
- sigaction (SIGQUIT, &ignore, &save_quit);
-
- if ((pid = fork ()) < 0){
- fprintf (stderr, "\n\nfork () = -1\n");
- return;
- }
- if (pid == 0){
- pid = fork ();
- if (pid == 0){
- const int top = max_open_files ();
- sigaction (SIGINT, &save_intr, NULL);
- sigaction (SIGQUIT, &save_quit, NULL);
-
- for (i = (close_standard ? 0 : 3); i < top; i++)
- close (i);
-
- /* FIXME: As an excercise to the reader, copy the
- * code from mc to setup shell properly instead of
- * /bin/sh. Yes, this comment is larger than a cut and paste.
- */
- execl ("/bin/sh", "/bin/sh", "-c", command, (char *) 0);
-
- _exit (127);
- } else {
- _exit (127);
- }
- }
- wait (&status);
- sigaction (SIGINT, &save_intr, NULL);
- sigaction (SIGQUIT, &save_quit, NULL);
-}
-
-/* Queues a snooze alarm */
-static void
-snooze (GnomeCalendar *gcal, CalComponent *comp, time_t occur, int snooze_mins, gboolean audio)
-{
- time_t now, trigger;
- struct tm tm;
- CalAlarmInstance ai;
-
- now = time (NULL);
- tm = *localtime (&now);
- tm.tm_min += snooze_mins;
-
- trigger = mktime (&tm);
- if (trigger == -1) {
- g_message ("snooze(): produced invalid time_t; not queueing alarm!");
- return;
- }
-
-#if 0
- cal_component_get_uid (comp, &ai.uid);
- ai.type = audio ? ALARM_AUDIO : ALARM_DISPLAY;
-#endif
- ai.trigger = trigger;
- ai.occur = occur;
-
- setup_alarm (gcal, &ai);
-}
-
-struct alarm_notify_closure {
- GnomeCalendar *gcal;
- CalComponent *comp;
- time_t occur;
-};
-
-/* Callback used for the result of the alarm notification dialog */
-static void
-display_notification_cb (AlarmNotifyResult result, int snooze_mins, gpointer data)
-{
- struct alarm_notify_closure *c;
-
- c = data;
-
- switch (result) {
- case ALARM_NOTIFY_CLOSE:
- break;
-
- case ALARM_NOTIFY_SNOOZE:
- snooze (c->gcal, c->comp, c->occur, snooze_mins, FALSE);
- break;
-
- case ALARM_NOTIFY_EDIT:
- gnome_calendar_edit_object (c->gcal, c->comp);
- break;
-
- default:
- g_assert_not_reached ();
- }
-
- gtk_object_unref (GTK_OBJECT (c->comp));
- g_free (c);
-}
-
-/* Present a display notification of an alarm trigger */
-static void
-display_notification (time_t trigger, time_t occur, CalComponent *comp, GnomeCalendar *gcal)
-{
- gboolean result;
- struct alarm_notify_closure *c;
-
- gtk_object_ref (GTK_OBJECT (comp));
-
- c = g_new (struct alarm_notify_closure, 1);
- c->gcal = gcal;
- c->comp = comp;
- c->occur = occur;
-
- result = alarm_notify_dialog (trigger, occur, comp, display_notification_cb, c);
- if (!result) {
- g_message ("display_notification(): could not display the alarm notification dialog");
- g_free (c);
- gtk_object_unref (GTK_OBJECT (comp));
- }
-}
-
-/* Present an audible notification of an alarm trigger */
-static void
-audio_notification (time_t trigger, time_t occur, CalComponent *comp, GnomeCalendar *gcal)
-{
- g_message ("AUDIO NOTIFICATION!");
- /* FIXME */
-}
-
-/* Callback function used when an alarm is triggered */
-static void
-trigger_alarm_cb (gpointer alarm_id, time_t trigger, gpointer data)
-{
- struct trigger_alarm_closure *c;
- GnomeCalendarPrivate *priv;
- CalComponent *comp;
- CalClientGetStatus status;
- const char *uid;
- ObjectAlarms *oa;
- GList *l;
-
- c = data;
- priv = c->gcal->priv;
-
- /* Fetch the object */
-
- status = cal_client_get_object (priv->client, c->uid, &comp);
-
- switch (status) {
- case CAL_CLIENT_GET_SUCCESS:
- /* Go on */
- break;
- case CAL_CLIENT_GET_SYNTAX_ERROR:
- case CAL_CLIENT_GET_NOT_FOUND:
- g_message ("trigger_alarm_cb(): syntax error in fetched object");
- return;
- }
-
- g_assert (comp != NULL);
-
- /* Present notification */
-
- switch (c->type) {
- case CAL_COMPONENT_ALARM_EMAIL:
-#if 0
- g_assert (ico->malarm.enabled);
- mail_notification (ico->malarm.data, ico->summary, c->occur);
-#endif
- break;
-
- case CAL_COMPONENT_ALARM_PROCEDURE:
-#if 0
- g_assert (ico->palarm.enabled);
- program_notification (ico->palarm.data, FALSE);
-#endif
- break;
-
- case CAL_COMPONENT_ALARM_DISPLAY:
-#if 0
- g_assert (ico->dalarm.enabled);
-#endif
- display_notification (trigger, c->occur, comp, c->gcal);
- break;
-
- case CAL_COMPONENT_ALARM_AUDIO:
-#if 0
- g_assert (ico->aalarm.enabled);
-#endif
- audio_notification (trigger, c->occur, comp, c->gcal);
- break;
-
- default:
- break;
- }
-
- /* Remove the alarm from the hash table */
- cal_component_get_uid (comp, &uid);
- oa = g_hash_table_lookup (priv->alarms, uid);
- g_assert (oa != NULL);
-
- l = g_list_find (oa->alarm_ids, alarm_id);
- g_assert (l != NULL);
-
- oa->alarm_ids = g_list_remove_link (oa->alarm_ids, l);
- g_list_free_1 (l);
-
- if (!oa->alarm_ids) {
- g_hash_table_remove (priv->alarms, uid);
- g_free (oa->uid);
- g_free (oa);
- }
-
- gtk_object_unref (GTK_OBJECT (comp));
-}
-
-#endif
-
-#if 0
-
-static void
-stop_beeping (GtkObject* object, gpointer data)
-{
- guint timer_tag, beep_tag;
- timer_tag = GPOINTER_TO_INT (gtk_object_get_data (object, "timer_tag"));
- beep_tag = GPOINTER_TO_INT (gtk_object_get_data (object, "beep_tag"));
-
- if (beep_tag > 0) {
- gtk_timeout_remove (beep_tag);
- gtk_object_set_data (object, "beep_tag", GINT_TO_POINTER (0));
- }
- if (timer_tag > 0) {
- gtk_timeout_remove (timer_tag);
- gtk_object_set_data (object, "timer_tag", GINT_TO_POINTER (0));
- }
-}
-
-static gint
-start_beeping (gpointer data)
-{
- gdk_beep ();
-
- return TRUE;
-}
-
-static gint
-timeout_beep (gpointer data)
-{
- stop_beeping (data, NULL);
- return FALSE;
-}
-
-void
-calendar_notify (time_t activation_time, CalendarAlarm *which, void *data)
-{
- iCalObject *ico = data;
- guint beep_tag, timer_tag;
- int ret;
- gchar* snooze_button = (enable_snooze ? _("Snooze") : NULL);
- time_t now, diff;
-
- if (&ico->aalarm == which){
- time_t app = ico->aalarm.trigger + ico->aalarm.offset;
- GtkWidget *w;
- char *msg;
-
- msg = g_strconcat (_("Reminder of your appointment at "),
- ctime (&app), "`",
- ico->summary, "'", NULL);
-
- /* Idea: we need Snooze option :-) */
- w = gnome_message_box_new (msg, GNOME_MESSAGE_BOX_INFO, _("Ok"), snooze_button, NULL);
- beep_tag = gtk_timeout_add (1000, start_beeping, NULL);
- if (enable_aalarm_timeout)
- timer_tag = gtk_timeout_add (audio_alarm_timeout*1000,
- timeout_beep, w);
- else
- timer_tag = 0;
- gtk_object_set_data (GTK_OBJECT (w), "timer_tag",
- GINT_TO_POINTER (timer_tag));
- gtk_object_set_data (GTK_OBJECT (w), "beep_tag",
- GINT_TO_POINTER (beep_tag));
- gtk_widget_ref (w);
- gtk_window_set_modal (GTK_WINDOW (w), FALSE);
- ret = gnome_dialog_run (GNOME_DIALOG (w));
- switch (ret) {
- case 1:
- stop_beeping (GTK_OBJECT (w), NULL);
- now = time (NULL);
- diff = now - which->trigger;
- which->trigger = which->trigger + diff + snooze_secs;
- which->offset = which->offset - diff - snooze_secs;
- alarm_add (which, &calendar_notify, data);
- break;
- default:
- stop_beeping (GTK_OBJECT (w), NULL);
- break;
- }
-
- gtk_widget_unref (w);
- return;
- }
-
- if (&ico->palarm == which){
- execute (ico->palarm.data, 0);
- return;
- }
-
- if (&ico->malarm == which){
- time_t app = ico->malarm.trigger + ico->malarm.offset;
-
- mail_notify (ico->malarm.data, ico->summary, app);
- return;
- }
-
- if (&ico->dalarm == which){
- time_t app = ico->dalarm.trigger + ico->dalarm.offset;
- GtkWidget *w;
- char *msg;
-
- if (beep_on_display)
- gdk_beep ();
- msg = g_strconcat (_("Reminder of your appointment at "),
- ctime (&app), "`",
- ico->summary, "'", NULL);
- w = gnome_message_box_new (msg, GNOME_MESSAGE_BOX_INFO,
- _("Ok"), snooze_button, NULL);
- gtk_window_set_modal (GTK_WINDOW (w), FALSE);
- ret = gnome_dialog_run (GNOME_DIALOG (w));
- switch (ret) {
- case 1:
- now = time (NULL);
- diff = now - which->trigger;
- which->trigger = which->trigger + diff + snooze_secs;
- which->offset = which->offset - diff - snooze_secs;
- alarm_add (which, &calendar_notify, data);
- break;
- default:
- break;
- }
-
- return;
- }
-}
-
-#endif
diff --git a/calendar/gui/alarm-notify.h b/calendar/gui/alarm-notify.h
deleted file mode 100644
index f386a56ae4..0000000000
--- a/calendar/gui/alarm-notify.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Evolution calendar - Alarm notification engine
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Authors: Federico Mena-Quintero <federico@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef ALARM_NOTIFY_H
-#define ALARM_NOTIFY_H
-
-#include <cal-client/cal-client.h>
-
-
-void alarm_notify_init (void);
-void alarm_notify_done (void);
-
-void alarm_notify_add_client (CalClient *client);
-void alarm_notify_remove_client (CalClient *client);
-
-
-#endif
diff --git a/calendar/gui/alarm-notify/.cvsignore b/calendar/gui/alarm-notify/.cvsignore
deleted file mode 100644
index 1f2b546c7c..0000000000
--- a/calendar/gui/alarm-notify/.cvsignore
+++ /dev/null
@@ -1,10 +0,0 @@
-.deps
-.libs
-Makefile
-Makefile.in
-evolution-calendar-stubs.c
-evolution-calendar-skels.c
-evolution-calendar-common.c
-evolution-calendar.h
-evolution-alarm-notify
-GNOME_Evolution_Calendar_AlarmNotify.oaf
diff --git a/calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in b/calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in
deleted file mode 100644
index 86f5c71493..0000000000
--- a/calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in
+++ /dev/null
@@ -1,24 +0,0 @@
-<oaf_info>
-
-<oaf_server iid="OAFIID:GNOME_Evolution_Calendar_AlarmNotify_Factory"
- type="exe"
- location="evolution-alarm-notify">
-
- <oaf_attribute name="repo_ids" type="stringv">
- <item value="IDL:GNOME/ObjectFactory:1.0"/>
- </oaf_attribute>
-
- <oaf_attribute name="description" type="string"
- _value="Factory for the alarm notification service"/>
-
-</oaf_server>
-
-<oaf_server iid="OAFIID:GNOME_Evolution_Calendar_AlarmNotify"
- type="factory"
- location="OAFIID:GNOME_Evolution_Calendar_AlarmNotify_Factory">
-
- <oaf_attribute name="description" type="string"
- _value="Alarm notification service"/>
-</oaf_server>
-
-</oaf_info>
diff --git a/calendar/gui/alarm-notify/Makefile.am b/calendar/gui/alarm-notify/Makefile.am
deleted file mode 100644
index 528841da89..0000000000
--- a/calendar/gui/alarm-notify/Makefile.am
+++ /dev/null
@@ -1,78 +0,0 @@
-CORBA_GENERATED = \
- evolution-calendar.h \
- evolution-calendar-common.c \
- evolution-calendar-skels.c \
- evolution-calendar-stubs.c
-
-idls = $(top_srcdir)/calendar/idl/evolution-calendar.idl
-
-idl_flags = `$(GNOME_CONFIG) --cflags idl` -I $(datadir)/idl
-
-$(CORBA_GENERATED): $(idls)
- $(ORBIT_IDL) $(idl_flags) $(top_srcdir)/calendar/idl/evolution-calendar.idl
-
-bin_PROGRAMS = evolution-alarm-notify # evolution-alarm-client
-
-noinst_LIBRARIES = libalarm.a
-
-libalarm_a_SOURCES = \
- alarm.c \
- alarm.h
-
-INCLUDES = \
- -DG_LOG_DOMAIN=\"evolution-alarm-notify\" \
- -I$(top_srcdir) \
- -I$(top_srcdir)/calendar \
- -I$(top_builddir)/calendar \
- -I$(top_srcdir)/libical/src/libical \
- -I$(top_builddir)/libical/src/libical \
- -I$(top_srcdir)/widgets \
- -I$(includedir) \
- $(BONOBO_VFS_GNOME_CFLAGS) \
- $(EXTRA_GNOME_CFLAGS) \
- -DEVOLUTION_DATADIR=\""$(datadir)"\" \
- -DEVOLUTION_GLADEDIR=\""$(gladedir)"\" \
- -DEVOLUTION_LOCALEDIR=\""$(localedir)"\"
-
-gladedir = $(datadir)/evolution/glade
-
-evolution_alarm_notify_SOURCES = \
- $(CORBA_GENERATED) \
- alarm-notify.c \
- alarm-notify.h \
- alarm-queue.c \
- alarm-queue.h \
- notify-main.c
-
-evolution_alarm_notify_LDADD = \
- libalarm.a \
- $(top_builddir)/calendar/cal-client/libcal-client.la \
- $(top_builddir)/calendar/cal-util/libcal-util.la \
- $(top_builddir)/libical/src/libical/libical.la \
- $(BONOBO_VFS_GNOME_LIBS) \
- $(EXTRA_GNOME_LIBS) \
- $(INTLLIBS)
-
-# evolution_alarm_client_SOURCES = \
-# client-main.c \
-# $(CORBA_GENERATED)
-#
-# evolution_alarm_client_LDADD = \
-# $(BONOBO_VFS_GNOME_LIBS) \
-# $(EXTRA_GNOME_LIBS) \
-# $(INTLLIBS)
-
-oafdir = $(datadir)/oaf
-oaf_in_files = \
- GNOME_Evolution_Calendar_AlarmNotify.oaf.in
-
-oaf_DATA = $(oaf_in_files:.oaf.in=.oaf)
-
-@XML_I18N_MERGE_OAF_RULE@
-
-EXTRA_DIST = \
- $(oaf_DATA) \
- $(oaf_in_files)
-
-BUILT_SOURCES = $(CORBA_GENERATED)
-CLEANFILES += $(BUILT_SOURCES)
diff --git a/calendar/gui/alarm-notify/alarm-notify-dialog.c b/calendar/gui/alarm-notify/alarm-notify-dialog.c
deleted file mode 100644
index 164d043e13..0000000000
--- a/calendar/gui/alarm-notify/alarm-notify-dialog.c
+++ /dev/null
@@ -1,231 +0,0 @@
-/* Evolution calendar - alarm notification dialog
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkspinbutton.h>
-#include <gtk/gtksignal.h>
-#include <gtk/gtkwindow.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <glade/glade.h>
-#include "alarm-notify-dialog.h"
-
-
-
-/* The useful contents of the alarm notify dialog */
-typedef struct {
- GladeXML *xml;
-
- GtkWidget *dialog;
- GtkWidget *close;
- GtkWidget *snooze;
- GtkWidget *edit;
- GtkWidget *heading;
- GtkWidget *summary;
- GtkWidget *snooze_time;
-
- AlarmNotifyFunc func;
- gpointer func_data;
-} AlarmNotify;
-
-
-
-/* Callback used when the notify dialog is destroyed */
-static void
-dialog_destroy_cb (GtkObject *object, gpointer data)
-{
- AlarmNotify *an;
-
- an = data;
- gtk_object_unref (GTK_OBJECT (an->xml));
- g_free (an);
-}
-
-/* Delete_event handler for the alarm notify dialog */
-static gint
-delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer data)
-{
- AlarmNotify *an;
-
- an = data;
- g_assert (an->func != NULL);
-
- (* an->func) (ALARM_NOTIFY_CLOSE, -1, an->func_data);
-
- gtk_widget_destroy (widget);
- return TRUE;
-}
-
-/* Callback for the close button */
-static void
-close_clicked_cb (GtkWidget *widget, gpointer data)
-{
- AlarmNotify *an;
-
- an = data;
- g_assert (an->func != NULL);
-
- (* an->func) (ALARM_NOTIFY_CLOSE, -1, an->func_data);
-
- gtk_widget_destroy (an->dialog);
-}
-
-/* Callback for the snooze button */
-static void
-snooze_clicked_cb (GtkWidget *widget, gpointer data)
-{
- AlarmNotify *an;
- int snooze_time;
-
- an = data;
- g_assert (an->func != NULL);
-
- snooze_time = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (an->snooze_time));
- (* an->func) (ALARM_NOTIFY_SNOOZE, snooze_time, an->func_data);
-
- gtk_widget_destroy (an->dialog);
-}
-
-/* Callback for the edit button */
-static void
-edit_clicked_cb (GtkWidget *widget, gpointer data)
-{
- AlarmNotify *an;
-
- an = data;
- g_assert (an->func != NULL);
-
- (* an->func) (ALARM_NOTIFY_EDIT, -1, an->func_data);
-
- gtk_widget_destroy (an->dialog);
-}
-
-/**
- * alarm_notify_dialog:
- * @trigger: Trigger time for the alarm.
- * @occur: Occurrence time for the event.
- * @comp: Calendar component object which corresponds to the alarm.
- * @func: Function to be called when a dialog action is invoked.
- * @func_data: Closure data for @func.
- *
- * Runs the alarm notification dialog. The specified @func will be used to
- * notify the client about result of the actions in the dialog.
- *
- * Return value: TRUE on success, FALSE if the dialog could not be created.
- **/
-gboolean
-alarm_notify_dialog (time_t trigger, time_t occur, CalComponent *comp,
- AlarmNotifyFunc func, gpointer func_data)
-{
- AlarmNotify *an;
- char buf[256];
- struct tm tm_trigger;
- struct tm tm_occur;
- CalComponentText summary;
-
- g_return_val_if_fail (trigger != -1, FALSE);
- g_return_val_if_fail (occur != -1, FALSE);
- g_return_val_if_fail (comp != NULL, FALSE);
- g_return_val_if_fail (IS_CAL_COMPONENT (comp), FALSE);
- g_return_val_if_fail (func != NULL, FALSE);
-
- an = g_new0 (AlarmNotify, 1);
-
- an->func = func;
- an->func_data = func_data;
-
- an->xml = glade_xml_new (EVOLUTION_GLADEDIR "/alarm-notify.glade", NULL);
- if (!an->xml) {
- g_message ("alarm_notify_dialog(): Could not load the Glade XML file!");
- g_free (an);
- return FALSE;
- }
-
- an->dialog = glade_xml_get_widget (an->xml, "alarm-notify");
- an->close = glade_xml_get_widget (an->xml, "close");
- an->snooze = glade_xml_get_widget (an->xml, "snooze");
- an->edit = glade_xml_get_widget (an->xml, "edit");
- an->heading = glade_xml_get_widget (an->xml, "heading");
- an->summary = glade_xml_get_widget (an->xml, "summary");
- an->snooze_time = glade_xml_get_widget (an->xml, "snooze-time");
-
- if (!(an->dialog && an->close && an->snooze && an->edit && an->heading && an->summary
- && an->snooze_time)) {
- g_message ("alarm_notify_dialog(): Could not find all widgets in Glade file!");
- gtk_object_unref (GTK_OBJECT (an->xml));
- g_free (an);
- return FALSE;
- }
-
- gtk_object_set_data (GTK_OBJECT (an->dialog), "alarm-notify", an);
- gtk_signal_connect (GTK_OBJECT (an->dialog), "destroy",
- GTK_SIGNAL_FUNC (dialog_destroy_cb), an);
-
- /* Title */
-
- /* FIXME: use am_pm_flag or 24-hour time */
-
- tm_trigger = *localtime (&trigger);
- strftime (buf, sizeof (buf), _("Alarm on %A %b %d %Y %H:%M"), &tm_trigger);
- gtk_window_set_title (GTK_WINDOW (an->dialog), buf);
-
- /* Heading */
-
- tm_occur = *localtime (&occur);
- strftime (buf, sizeof (buf),
- _("Notification about your appointment on %A %b %d %Y %H:%M"),
- &tm_occur);
- gtk_label_set_text (GTK_LABEL (an->heading), buf);
-
- /* Summary */
-
- cal_component_get_summary (comp, &summary);
-
- if (summary.value)
- gtk_label_set_text (GTK_LABEL (an->summary), summary.value);
- else
- gtk_label_set_text (GTK_LABEL (an->summary), _("No summary available."));
-
- /* Connect actions */
-
- gtk_signal_connect (GTK_OBJECT (an->dialog), "delete_event",
- GTK_SIGNAL_FUNC (delete_event_cb),
- an);
-
- gtk_signal_connect (GTK_OBJECT (an->close), "clicked",
- GTK_SIGNAL_FUNC (close_clicked_cb),
- an);
-
- gtk_signal_connect (GTK_OBJECT (an->snooze), "clicked",
- GTK_SIGNAL_FUNC (snooze_clicked_cb),
- an);
-
- gtk_signal_connect (GTK_OBJECT (an->edit), "clicked",
- GTK_SIGNAL_FUNC (edit_clicked_cb),
- an);
-
- /* Run! */
-
- gtk_widget_show (an->dialog);
- return TRUE;
-}
diff --git a/calendar/gui/alarm-notify/alarm-notify-dialog.h b/calendar/gui/alarm-notify/alarm-notify-dialog.h
deleted file mode 100644
index f2c938c495..0000000000
--- a/calendar/gui/alarm-notify/alarm-notify-dialog.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Evolution calendar - alarm notification dialog
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef ALARM_NOTIFY_DIALOG_H
-#define ALARM_NOTIFY_DIALOG_H
-
-#include <time.h>
-#include <glib.h>
-#include <cal-util/cal-component.h>
-
-
-
-typedef enum {
- ALARM_NOTIFY_CLOSE,
- ALARM_NOTIFY_SNOOZE,
- ALARM_NOTIFY_EDIT
-} AlarmNotifyResult;
-
-typedef void (* AlarmNotifyFunc) (AlarmNotifyResult result, int snooze_mins, gpointer data);
-
-gboolean alarm_notify_dialog (time_t trigger, time_t occur, CalComponent *comp,
- AlarmNotifyFunc func, gpointer func_data);
-
-
-
-#endif
diff --git a/calendar/gui/alarm-notify/alarm-notify.c b/calendar/gui/alarm-notify/alarm-notify.c
deleted file mode 100644
index fa70a1d236..0000000000
--- a/calendar/gui/alarm-notify/alarm-notify.c
+++ /dev/null
@@ -1,404 +0,0 @@
-/* Evolution calendar - Alarm notification service object
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <libgnomevfs/gnome-vfs.h>
-#include <cal-client/cal-client.h>
-#include "alarm-notify.h"
-#include "alarm-queue.h"
-
-
-
-/* A loaded client */
-typedef struct {
- /* The actual client */
- CalClient *client;
-
- /* The URI of the client in gnome-vfs's format. This *is* the key that
- * is stored in the uri_client_hash hash table below.
- */
- GnomeVFSURI *uri;
-
- /* Number of times clients have requested this URI to be added to the
- * alarm notification system.
- */
- int refcount;
-} LoadedClient;
-
-/* Private part of the AlarmNotify structure */
-struct _AlarmNotifyPrivate {
- /* Mapping from GnomeVFSURIs to LoadedClient structures */
- GHashTable *uri_client_hash;
-};
-
-
-
-static void alarm_notify_class_init (AlarmNotifyClass *class);
-static void alarm_notify_init (AlarmNotify *an);
-static void alarm_notify_destroy (GtkObject *object);
-
-static POA_GNOME_Evolution_Calendar_AlarmNotify__vepv alarm_notify_vepv;
-
-static BonoboObjectClass *parent_class;
-
-
-
-/**
- * alarm_notify_get_type:
- *
- * Registers the #AlarmNotify class if necessary, and returns the type ID
- * associated to it.
- *
- * Return value: The type ID of the #AlarmNotify class.
- **/
-GtkType
-alarm_notify_get_type (void)
-{
- static GtkType alarm_notify_type = 0;
-
- if (!alarm_notify_type) {
- static const GtkTypeInfo alarm_notify_info = {
- "AlarmNotify",
- sizeof (AlarmNotify),
- sizeof (AlarmNotifyClass),
- (GtkClassInitFunc) alarm_notify_class_init,
- (GtkObjectInitFunc) alarm_notify_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- alarm_notify_type = gtk_type_unique (BONOBO_OBJECT_TYPE, &alarm_notify_info);
- }
-
- return alarm_notify_type;
-}
-
-/* CORBA class initialization function for the alarm notify service */
-static void
-init_alarm_notify_corba_class (void)
-{
- alarm_notify_vepv.Bonobo_Unknown_epv = bonobo_object_get_epv ();
- alarm_notify_vepv.GNOME_Evolution_Calendar_AlarmNotify_epv = alarm_notify_get_epv ();
-}
-
-/* Class initialization function for the alarm notify service */
-static void
-alarm_notify_class_init (AlarmNotifyClass *class)
-{
- GtkObjectClass *object_class;
-
- object_class = (GtkObjectClass *) class;
-
- parent_class = gtk_type_class (BONOBO_OBJECT_TYPE);
-
- object_class->destroy = alarm_notify_destroy;
-
- init_alarm_notify_corba_class ();
-}
-
-/* Object initialization function for the alarm notify system */
-static void
-alarm_notify_init (AlarmNotify *an)
-{
- AlarmNotifyPrivate *priv;
-
- priv = g_new0 (AlarmNotifyPrivate, 1);
- an->priv = priv;
-
- priv->uri_client_hash = g_hash_table_new (gnome_vfs_uri_hash, gnome_vfs_uri_hequal);
-}
-
-/* Callback used from g_hash-table_forach(), used to destroy a loade client */
-static void
-destroy_loaded_client_cb (gpointer key, gpointer value, gpointer data)
-{
- LoadedClient *lc;
-
- lc = value;
-
- gtk_object_unref (GTK_OBJECT (lc->client));
- gnome_vfs_uri_unref (lc->uri);
- g_free (lc);
-}
-
-/* Destroy handler for the alarm notify system */
-static void
-alarm_notify_destroy (GtkObject *object)
-{
- AlarmNotify *an;
- AlarmNotifyPrivate *priv;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (IS_ALARM_NOTIFY (object));
-
- an = ALARM_NOTIFY (object);
- priv = an->priv;
-
- g_hash_table_foreach (priv->uri_client_hash, destroy_loaded_client_cb, NULL);
-
- g_hash_table_destroy (priv->uri_client_hash);
- priv->uri_client_hash = NULL;
-
- g_free (priv);
- an->priv = NULL;
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-
-
-/* CORBA servant implementation */
-
-/* AlarmNotify::addCalendar method */
-static void
-AlarmNotify_addCalendar (PortableServer_Servant servant,
- const CORBA_char *str_uri,
- CORBA_Environment *ev)
-{
- AlarmNotify *an;
- AlarmNotifyPrivate *priv;
- GnomeVFSURI *uri;
- CalClient *client;
- LoadedClient *lc;
-
- an = ALARM_NOTIFY (bonobo_object_from_servant (servant));
- priv = an->priv;
-
- uri = gnome_vfs_uri_new (str_uri);
- if (!uri) {
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_GNOME_Evolution_Calendar_AlarmNotify_InvalidURI,
- NULL);
- return;
- }
-
- lc = g_hash_table_lookup (priv->uri_client_hash, uri);
-
- if (lc) {
- gnome_vfs_uri_unref (uri);
- g_assert (lc->refcount > 0);
- lc->refcount++;
- return;
- }
-
- client = cal_client_new ();
-
- if (client) {
- if (cal_client_open_calendar (client, str_uri, FALSE)) {
- lc = g_new (LoadedClient, 1);
- lc->client = client;
- lc->uri = uri;
- lc->refcount = 1;
- g_hash_table_insert (priv->uri_client_hash, uri, lc);
-
- alarm_queue_add_client (client);
- } else {
- gtk_object_unref (GTK_OBJECT (client));
- client = NULL;
- }
- }
-
- if (!client) {
- gnome_vfs_uri_unref (uri);
-
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_GNOME_Evolution_Calendar_AlarmNotify_BackendContactError,
- NULL);
- return;
- }
-}
-
-/* AlarmNotify::removeCalendar method */
-static void
-AlarmNotify_removeCalendar (PortableServer_Servant servant,
- const CORBA_char *str_uri,
- CORBA_Environment *ev)
-{
- AlarmNotify *an;
- AlarmNotifyPrivate *priv;
- LoadedClient *lc;
- GnomeVFSURI *uri;
-
- an = ALARM_NOTIFY (bonobo_object_from_servant (servant));
- priv = an->priv;
-
- uri = gnome_vfs_uri_new (str_uri);
- if (!uri) {
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_GNOME_Evolution_Calendar_AlarmNotify_InvalidURI,
- NULL);
- return;
- }
-
- lc = g_hash_table_lookup (priv->uri_client_hash, uri);
- gnome_vfs_uri_unref (uri);
-
- if (!lc) {
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_GNOME_Evolution_Calendar_AlarmNotify_NotFound,
- NULL);
- return;
- }
-
- g_assert (lc->refcount > 0);
-
- lc->refcount--;
- if (lc->refcount > 0)
- return;
-
- g_hash_table_remove (priv->uri_client_hash, lc->uri);
-
- gtk_object_unref (GTK_OBJECT (lc->client));
- gnome_vfs_uri_unref (lc->uri);
- g_free (lc);
-}
-
-static void
-AlarmNotify_die (PortableServer_Servant servant,
- CORBA_Environment *ev)
-{
- AlarmNotify *an;
- AlarmNotifyPrivate *priv;
-
- an = ALARM_NOTIFY (bonobo_object_from_servant (servant));
- priv = an->priv;
-
- /* FIXME */
-}
-
-/**
- * alarm_notify_get_epv:
- *
- * Creates an EPV for the AlarmNotify CORBA class.
- *
- * Return value: A newly-allocated EPV.
- **/
-POA_GNOME_Evolution_Calendar_AlarmNotify__epv *
-alarm_notify_get_epv (void)
-{
- POA_GNOME_Evolution_Calendar_AlarmNotify__epv *epv;
-
- epv = g_new0 (POA_GNOME_Evolution_Calendar_AlarmNotify__epv, 1);
- epv->addCalendar = AlarmNotify_addCalendar;
- epv->removeCalendar = AlarmNotify_removeCalendar;
- epv->die = AlarmNotify_die;
- return epv;
-}
-
-
-
-/**
- * alarm_notify_construct:
- * @an: An alarm notification service object.
- * @corba_an: CORBA object for the alarm notification service.
- *
- * Constructs an alarm notification service object by binding the corresponding
- * CORBA object to it.
- *
- * Return value: the same object as the @an argument.
- **/
-AlarmNotify *
-alarm_notify_construct (AlarmNotify *an,
- GNOME_Evolution_Calendar_AlarmNotify corba_an)
-{
- g_return_val_if_fail (an != NULL, NULL);
- g_return_val_if_fail (IS_ALARM_NOTIFY (an), NULL);
-
- /* FIXME: add_interface the property bag here */
-
- bonobo_object_construct (BONOBO_OBJECT (an), corba_an);
- return an;
-}
-
-/**
- * alarm_notify_corba_object_create:
- * @object: #BonoboObject that will wrap the CORBA object.
- *
- * Creates and activates the CORBA object that is wrapped by the specified alarm
- * notification service @object.
- *
- * Return value: An activated object reference or #CORBA_OBJECT_NIL in case of
- * failure.
- **/
-GNOME_Evolution_Calendar_AlarmNotify
-alarm_notify_corba_object_create (BonoboObject *object)
-{
- POA_GNOME_Evolution_Calendar_AlarmNotify *servant;
- CORBA_Environment ev;
-
- g_return_val_if_fail (object != NULL, CORBA_OBJECT_NIL);
- g_return_val_if_fail (IS_ALARM_NOTIFY (object), CORBA_OBJECT_NIL);
-
- servant = (POA_GNOME_Evolution_Calendar_AlarmNotify *) g_new (BonoboObjectServant, 1);
- servant->vepv = &alarm_notify_vepv;
-
- CORBA_exception_init (&ev);
- POA_GNOME_Evolution_Calendar_AlarmNotify__init ((PortableServer_Servant) servant, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_free (servant);
- CORBA_exception_free (&ev);
- return CORBA_OBJECT_NIL;
- }
-
- CORBA_exception_free (&ev);
- return (GNOME_Evolution_Calendar_AlarmNotify) bonobo_object_activate_servant (
- object, servant);
-}
-
-/**
- * alarm_notify_new:
- *
- * Creates a new #AlarmNotify object.
- *
- * Return value: A newly-created #AlarmNotify, or NULL if its corresponding
- * CORBA object could not be created.
- **/
-AlarmNotify *
-alarm_notify_new (void)
-{
- AlarmNotify *an;
- GNOME_Evolution_Calendar_AlarmNotify corba_an;
- CORBA_Environment ev;
- gboolean result;
-
- an = gtk_type_new (TYPE_ALARM_NOTIFY);
-
- corba_an = alarm_notify_corba_object_create (BONOBO_OBJECT (an));
-
- CORBA_exception_init (&ev);
- result = CORBA_Object_is_nil (corba_an, &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION || result) {
- g_message ("alarm_notify_new(): could not create the CORBA alarm notify service");
- bonobo_object_unref (BONOBO_OBJECT (an));
- CORBA_exception_free (&ev);
- return NULL;
- }
- CORBA_exception_free (&ev);
-
- return alarm_notify_construct (an, corba_an);
-}
diff --git a/calendar/gui/alarm-notify/alarm-notify.glade b/calendar/gui/alarm-notify/alarm-notify.glade
deleted file mode 100644
index 41718d0572..0000000000
--- a/calendar/gui/alarm-notify/alarm-notify.glade
+++ /dev/null
@@ -1,228 +0,0 @@
-<?xml version="1.0"?>
-<GTK-Interface>
-
-<project>
- <name>Evolution Calendar</name>
- <program_name>evolution-calendar</program_name>
- <directory></directory>
- <source_directory>src</source_directory>
- <pixmaps_directory>pixmaps</pixmaps_directory>
- <language>C</language>
- <gnome_support>True</gnome_support>
- <gettext_support>True</gettext_support>
- <use_widget_names>False</use_widget_names>
- <output_main_file>True</output_main_file>
- <output_support_files>True</output_support_files>
- <output_build_files>True</output_build_files>
- <backup_source_files>True</backup_source_files>
- <main_source_file>interface.c</main_source_file>
- <main_header_file>interface.h</main_header_file>
- <handler_source_file>callbacks.c</handler_source_file>
- <handler_header_file>callbacks.h</handler_header_file>
- <support_source_file>support.c</support_source_file>
- <support_header_file>support.h</support_header_file>
-</project>
-
-<widget>
- <class>GtkWindow</class>
- <name>alarm-notify</name>
- <cxx_use_heap>True</cxx_use_heap>
- <title></title>
- <type>GTK_WINDOW_DIALOG</type>
- <position>GTK_WIN_POS_CENTER</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>False</allow_grow>
- <auto_shrink>False</auto_shrink>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox2</name>
- <border_width>4</border_width>
- <cxx_use_heap>True</cxx_use_heap>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox3</name>
- <cxx_use_heap>True</cxx_use_heap>
- <homogeneous>False</homogeneous>
- <spacing>8</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox5</name>
- <cxx_use_heap>True</cxx_use_heap>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>heading</name>
- <cxx_use_heap>True</cxx_use_heap>
- <label></label>
- <justify>GTK_JUSTIFY_LEFT</justify>
- <wrap>True</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>summary</name>
- <cxx_use_heap>True</cxx_use_heap>
- <label></label>
- <justify>GTK_JUSTIFY_LEFT</justify>
- <wrap>True</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox4</name>
- <cxx_use_heap>True</cxx_use_heap>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>close</name>
- <cxx_use_heap>True</cxx_use_heap>
- <can_focus>True</can_focus>
- <label>Close</label>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>snooze</name>
- <cxx_use_heap>True</cxx_use_heap>
- <can_focus>True</can_focus>
- <label>Snooze</label>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>edit</name>
- <cxx_use_heap>True</cxx_use_heap>
- <can_focus>True</can_focus>
- <label>Edit appointment</label>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHSeparator</class>
- <name>hseparator1</name>
- <cxx_use_heap>True</cxx_use_heap>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox4</name>
- <cxx_use_heap>True</cxx_use_heap>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label4</name>
- <cxx_use_heap>True</cxx_use_heap>
- <label>Snooze time (minutes)</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkSpinButton</class>
- <name>snooze-time</name>
- <cxx_use_heap>True</cxx_use_heap>
- <can_focus>True</can_focus>
- <climb_rate>1</climb_rate>
- <digits>0</digits>
- <numeric>False</numeric>
- <update_policy>GTK_UPDATE_ALWAYS</update_policy>
- <snap>False</snap>
- <wrap>False</wrap>
- <value>5</value>
- <lower>1</lower>
- <upper>1440</upper>
- <step>1</step>
- <page>5</page>
- <page_size>5</page_size>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
-</widget>
-
-</GTK-Interface>
diff --git a/calendar/gui/alarm-notify/alarm-notify.h b/calendar/gui/alarm-notify/alarm-notify.h
deleted file mode 100644
index e7a907485d..0000000000
--- a/calendar/gui/alarm-notify/alarm-notify.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* Evolution calendar - Alarm notification service object
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef ALARM_NOTIFY_H
-#define ALARM_NOTIFY_H
-
-#include <bonobo/bonobo-object.h>
-#include "evolution-calendar.h"
-
-
-
-#define TYPE_ALARM_NOTIFY (alarm_notify_get_type ())
-#define ALARM_NOTIFY(obj) (GTK_CHECK_CAST ((obj), TYPE_ALARM_NOTIFY, AlarmNotify))
-#define ALARM_NOTIFY_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), TYPE_ALARM_NOTIFY, \
- AlarmNotifyClass))
-#define IS_ALARM_NOTIFY(obj) (GTK_CHECK_TYPE ((obj), TYPE_ALARM_NOTIFY))
-#define IS_ALARM_NOTIFY_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), TYPE_ALARM_NOTIFY))
-
-typedef struct _AlarmNotify AlarmNotify;
-typedef struct _AlarmNotifyClass AlarmNotifyClass;
-
-typedef struct _AlarmNotifyPrivate AlarmNotifyPrivate;
-
-struct _AlarmNotify {
- BonoboObject object;
-
- /* Private data */
- AlarmNotifyPrivate *priv;
-};
-
-struct _AlarmNotifyClass {
- BonoboObjectClass parent_class;
-};
-
-GtkType alarm_notify_get_type (void);
-
-AlarmNotify *alarm_notify_construct (AlarmNotify *an,
- GNOME_Evolution_Calendar_AlarmNotify corba_an);
-
-GNOME_Evolution_Calendar_AlarmNotify alarm_notify_corba_object_create (BonoboObject *object);
-POA_GNOME_Evolution_Calendar_AlarmNotify__epv *alarm_notify_get_epv (void);
-
-AlarmNotify *alarm_notify_new (void);
-
-
-
-
-#endif
diff --git a/calendar/gui/alarm-notify/alarm-queue.c b/calendar/gui/alarm-notify/alarm-queue.c
deleted file mode 100644
index 1e235c116d..0000000000
--- a/calendar/gui/alarm-notify/alarm-queue.c
+++ /dev/null
@@ -1,964 +0,0 @@
-/* Evolution calendar - Alarm queueing engine
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Authors: Federico Mena-Quintero <federico@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gtk/gtksignal.h>
-#include <cal-util/timeutil.h>
-#include "alarm.h"
-#include "alarm-queue.h"
-
-
-
-/* Whether the queueing system has been initialized */
-static gboolean alarm_queue_inited;
-
-/* Clients we are monitoring for alarms */
-static GHashTable *client_alarms_hash = NULL;
-
-/* Structure that stores a client we are monitoring */
-typedef struct {
- /* Monitored client */
- CalClient *client;
-
- /* Number of times this client has been registered */
- int refcount;
-
- /* Hash table of component UID -> CompQueuedAlarms. If an element is
- * present here, then it means its cqa->queued_alarms contains at least
- * one queued alarm. When all the alarms for a component have been
- * dequeued, the CompQueuedAlarms structure is removed from the hash
- * table. Thus a CQA exists <=> it has queued alarms.
- */
- GHashTable *uid_alarms_hash;
-} ClientAlarms;
-
-/* Pair of a CalComponentAlarms and the mapping from queued alarm IDs to the
- * actual alarm instance structures.
- */
-typedef struct {
- /* The parent client alarms structure */
- ClientAlarms *parent_client;
-
- /* The actual component and its alarm instances */
- CalComponentAlarms *alarms;
-
- /* List of QueuedAlarm structures */
- GSList *queued_alarms;
-} CompQueuedAlarms;
-
-/* Pair of a queued alarm ID and the alarm trigger instance it refers to */
-typedef struct {
- /* Alarm ID from alarm.h */
- gpointer alarm_id;
-
- /* Instance from our parent CompAlarms->alarms list */
- CalAlarmInstance *instance;
-} QueuedAlarm;
-
-/* Alarm ID for the midnight refresh function */
-static gpointer midnight_refresh_id = NULL;
-
-
-
-static void load_alarms (ClientAlarms *ca);
-static void midnight_refresh_cb (gpointer alarm_id, time_t trigger, gpointer data);
-
-/* Queues an alarm trigger for midnight so that we can load the next day's worth
- * of alarms.
- */
-static void
-queue_midnight_refresh (void)
-{
- time_t midnight;
-
- g_assert (midnight_refresh_id == NULL);
-
- midnight = time_day_end (time (NULL));
-
- midnight_refresh_id = alarm_add (midnight, midnight_refresh_cb, NULL, NULL);
- if (!midnight_refresh_id) {
- g_message ("queue_midnight_refresh(): Could not set up the midnight refresh alarm!");
- /* FIXME: what to do? */
- }
-}
-
-/* Loads a client's alarms; called from g_hash_table_foreach() */
-static void
-add_client_alarms_cb (gpointer key, gpointer value, gpointer data)
-{
- ClientAlarms *ca;
-
- ca = value;
- load_alarms (ca);
-}
-
-/* Loads the alarms for the new day every midnight */
-static void
-midnight_refresh_cb (gpointer alarm_id, time_t trigger, gpointer data)
-{
- /* Re-load the alarms for all clients */
-
- g_hash_table_foreach (client_alarms_hash, add_client_alarms_cb, NULL);
-
- /* Re-schedule the midnight update */
-
- midnight_refresh_id = NULL;
- queue_midnight_refresh ();
-}
-
-/* Looks up a client in the client alarms hash table */
-static ClientAlarms *
-lookup_client (CalClient *client)
-{
- return g_hash_table_lookup (client_alarms_hash, client);
-}
-
-/* Callback used when an alarm triggers */
-static void
-alarm_trigger_cb (gpointer alarm_id, time_t trigger, gpointer data)
-{
- CompQueuedAlarms *cqa;
-
- cqa = data;
-
- /* FIXME */
-
- g_message ("alarm_trigger_cb(): Triggered!");
-}
-
-/* Callback used when an alarm must be destroyed */
-static void
-alarm_destroy_cb (gpointer alarm_id, gpointer data)
-{
- CompQueuedAlarms *cqa;
- GSList *l;
- QueuedAlarm *qa;
- const char *uid;
-
- cqa = data;
-
- qa = NULL; /* Keep GCC happy */
-
- /* Find the alarm in the queued alarms */
-
- for (l = cqa->queued_alarms; l; l = l->next) {
- qa = l->data;
- if (qa->alarm_id == alarm_id)
- break;
- }
-
- g_assert (l != NULL);
-
- /* Remove it and free it */
-
- cqa->queued_alarms = g_slist_remove_link (cqa->queued_alarms, l);
- g_slist_free_1 (l);
-
- g_free (qa);
-
- /* If this was the last queued alarm for this component, remove the
- * component itself.
- */
-
- if (cqa->queued_alarms != NULL)
- return;
-
- cal_component_get_uid (cqa->alarms->comp, &uid);
- g_hash_table_remove (cqa->parent_client->uid_alarms_hash, uid);
- cqa->parent_client = NULL;
-
- cal_component_alarms_free (cqa->alarms);
- cqa->alarms = NULL;
-
- g_free (cqa);
-}
-
-/* Adds the alarms in a CalComponentAlarms structure to the alarms queued for a
- * particular client. Also puts the triggers in the alarm timer queue.
- */
-static void
-add_component_alarms (ClientAlarms *ca, CalComponentAlarms *alarms)
-{
- const char *uid;
- CompQueuedAlarms *cqa;
- GSList *l;
-
- /* No alarms? */
- if (alarms->alarms == NULL) {
- cal_component_alarms_free (alarms);
- return;
- }
-
- cqa = g_new (CompQueuedAlarms, 1);
- cqa->parent_client = ca;
- cqa->alarms = alarms;
-
- cqa->queued_alarms = NULL;
-
- for (l = alarms->alarms; l; l = l->next) {
- CalAlarmInstance *instance;
- gpointer alarm_id;
- QueuedAlarm *qa;
-
- instance = l->data;
-
- alarm_id = alarm_add (instance->trigger, alarm_trigger_cb, cqa, alarm_destroy_cb);
- if (!alarm_id) {
- g_message ("add_component_alarms(): Could not schedule a trigger for "
- "%ld, discarding...", (long) instance->trigger);
- continue;
- }
-
- qa = g_new (QueuedAlarm, 1);
- qa->alarm_id = alarm_id;
- qa->instance = instance;
-
- cqa->queued_alarms = g_slist_prepend (cqa->queued_alarms, qa);
- }
-
- cal_component_get_uid (alarms->comp, &uid);
-
- /* If we failed to add all the alarms, then we should get rid of the cqa */
- if (cqa->queued_alarms == NULL) {
- g_message ("add_component_alarms(): Could not add any of the alarms "
- "for the component `%s'; discarding it...", uid);
-
- cal_component_alarms_free (cqa->alarms);
- cqa->alarms = NULL;
-
- g_free (cqa);
- return;
- }
-
- cqa->queued_alarms = g_slist_reverse (cqa->queued_alarms);
- g_hash_table_insert (ca->uid_alarms_hash, (char *) uid, cqa);
-}
-
-/* Loads today's remaining alarms for a client */
-static void
-load_alarms (ClientAlarms *ca)
-{
- time_t now, day_end;
- GSList *comp_alarms;
- GSList *l;
-
- now = time (NULL);
- day_end = time_day_end (now);
-
- comp_alarms = cal_client_get_alarms_in_range (ca->client, now, day_end);
-
- /* All of the last day's alarms should have already triggered and should
- * have been removed, so we should have no pending components.
- */
- g_assert (g_hash_table_size (ca->uid_alarms_hash) == 0);
-
- for (l = comp_alarms; l; l = l->next) {
- CalComponentAlarms *alarms;
-
- alarms = l->data;
- add_component_alarms (ca, alarms);
- }
-
- g_slist_free (comp_alarms);
-}
-
-/* Called when a calendar client finished loading; we load its alarms */
-static void
-cal_opened_cb (CalClient *client, CalClientOpenStatus status, gpointer data)
-{
- ClientAlarms *ca;
-
- ca = data;
-
- if (status != CAL_CLIENT_OPEN_SUCCESS)
- return;
-
- load_alarms (ca);
-}
-
-/* Looks up a component's queued alarm structure in a client alarms structure */
-static CompQueuedAlarms *
-lookup_comp_queued_alarms (ClientAlarms *ca, const char *uid)
-{
- return g_hash_table_lookup (ca->uid_alarms_hash, uid);
-}
-
-/* Removes a component an its alarms */
-static void
-remove_comp (ClientAlarms *ca, const char *uid)
-{
- CompQueuedAlarms *cqa;
- GSList *l;
-
- cqa = lookup_comp_queued_alarms (ca, uid);
- if (!cqa)
- return;
-
- /* If a component is present, then it means we must have alarms queued
- * for it.
- */
- g_assert (cqa->queued_alarms != NULL);
-
- for (l = cqa->queued_alarms; l;) {
- QueuedAlarm *qa;
-
- qa = l->data;
-
- /* Get the next element here because the list element will go
- * away. Also, we do not free the qa here because it will be
- * freed by the destroy notification function.
- */
- l = l->next;
-
- alarm_remove (qa->alarm_id);
- }
-
- /* The list should be empty now, and thus the queued component alarms
- * structure should have been freed and removed from the hash table.
- */
- g_assert (lookup_comp_queued_alarms (ca, uid) == NULL);
-}
-
-/* Called when a calendar component changes; we must reload its corresponding
- * alarms.
- */
-static void
-obj_updated_cb (CalClient *client, const char *uid, gpointer data)
-{
- ClientAlarms *ca;
- time_t now, day_end;
- CalComponentAlarms *alarms;
- gboolean found;
-
- ca = data;
-
- remove_comp (ca, uid);
-
- now = time (NULL);
- day_end = time_day_end (now);
-
- found = cal_client_get_alarms_for_object (ca->client, uid, now, day_end, &alarms);
-
- if (!found)
- return;
-
- add_component_alarms (ca, alarms);
-}
-
-/* Called when a calendar component is removed; we must delete its corresponding
- * alarms.
- */
-static void
-obj_removed_cb (CalClient *client, const char *uid, gpointer data)
-{
- ClientAlarms *ca;
-
- ca = data;
-
- remove_comp (ca, uid);
-}
-
-
-
-/**
- * alarm_queue_init:
- *
- * Initializes the alarm queueing system. This should be called near the
- * beginning of the program, after calling alarm_init().
- **/
-void
-alarm_queue_init (void)
-{
- g_return_if_fail (alarm_queue_inited == FALSE);
-
- client_alarms_hash = g_hash_table_new (g_direct_hash, g_direct_equal);
- queue_midnight_refresh ();
-
- alarm_queue_inited = TRUE;
-}
-
-/**
- * alarm_queue_done:
- *
- * Shuts down the alarm queueing system. This should be called near the end
- * of the program. All the monitored calendar clients should already have been
- * unregistered with alarm_queue_remove_client().
- **/
-void
-alarm_queue_done (void)
-{
- g_return_if_fail (alarm_queue_inited);
-
- /* All clients must be unregistered by now */
- g_return_if_fail (g_hash_table_size (client_alarms_hash) == 0);
-
- g_hash_table_destroy (client_alarms_hash);
- client_alarms_hash = NULL;
-
- g_assert (midnight_refresh_id != NULL);
- alarm_remove (midnight_refresh_id);
- midnight_refresh_id = NULL;
-
- alarm_queue_inited = FALSE;
-}
-
-/**
- * alarm_queue_add_client:
- * @client: A calendar client.
- *
- * Adds a calendar client to the alarm queueing system. Alarm trigger
- * notifications will be presented at the appropriate times. The client should
- * be removed with alarm_queue_remove_client() when receiving notifications
- * from it is no longer desired.
- *
- * A client can be added any number of times to the alarm queueing system,
- * but any single alarm trigger will only be presented once for a particular
- * client. The client must still be removed the same number of times from the
- * queueing system when it is no longer wanted.
- **/
-void
-alarm_queue_add_client (CalClient *client)
-{
- ClientAlarms *ca;
-
- g_return_if_fail (alarm_queue_inited);
- g_return_if_fail (client != NULL);
- g_return_if_fail (IS_CAL_CLIENT (client));
-
- ca = lookup_client (client);
- if (ca) {
- ca->refcount++;
- return;
- }
-
- ca = g_new (ClientAlarms, 1);
-
- ca->client = client;
- gtk_object_ref (GTK_OBJECT (ca->client));
-
- ca->refcount = 1;
- g_hash_table_insert (client_alarms_hash, client, ca);
-
- ca->uid_alarms_hash = g_hash_table_new (g_str_hash, g_str_equal);
-
- if (cal_client_get_load_state (client) != CAL_CLIENT_LOAD_LOADED)
- gtk_signal_connect (GTK_OBJECT (client), "cal_opened",
- GTK_SIGNAL_FUNC (cal_opened_cb), ca);
-
- gtk_signal_connect (GTK_OBJECT (client), "obj_updated",
- GTK_SIGNAL_FUNC (obj_updated_cb), ca);
- gtk_signal_connect (GTK_OBJECT (client), "obj_removed",
- GTK_SIGNAL_FUNC (obj_removed_cb), ca);
-
- if (cal_client_get_load_state (client) == CAL_CLIENT_LOAD_LOADED)
- load_alarms (ca);
-}
-
-/* Called from g_hash_table_foreach(); adds a component UID to a list */
-static void
-add_uid_cb (gpointer key, gpointer value, gpointer data)
-{
- GSList **uids;
- const char *uid;
-
- uids = data;
- uid = key;
-
- *uids = g_slist_prepend (*uids, (char *) uid);
-}
-
-/* Removes all the alarms queued for a particular calendar client */
-static void
-remove_client_alarms (ClientAlarms *ca)
-{
- GSList *uids;
- GSList *l;
-
- /* First we build a list of UIDs so that we can remove them one by one */
-
- uids = NULL;
- g_hash_table_foreach (ca->uid_alarms_hash, add_uid_cb, &uids);
-
- for (l = uids; l; l = l->next) {
- const char *uid;
-
- uid = l->data;
-
- remove_comp (ca, uid);
- }
-
- g_slist_free (uids);
-
- /* The hash table should be empty now */
-
- g_assert (g_hash_table_size (ca->uid_alarms_hash) == 0);
-}
-
-/**
- * alarm_queue_remove_client:
- * @client: A calendar client.
- *
- * Removes a calendar client from the alarm queueing system.
- **/
-void
-alarm_queue_remove_client (CalClient *client)
-{
- ClientAlarms *ca;
-
- g_return_if_fail (alarm_queue_inited);
- g_return_if_fail (client != NULL);
- g_return_if_fail (IS_CAL_CLIENT (client));
-
- ca = lookup_client (client);
- g_return_if_fail (ca != NULL);
-
- g_assert (ca->refcount > 0);
- ca->refcount--;
-
- if (ca->refcount > 0)
- return;
-
- remove_client_alarms (ca);
-
- /* Clean up */
-
- gtk_signal_disconnect_by_data (GTK_OBJECT (ca->client), ca);
-
- gtk_object_unref (GTK_OBJECT (ca->client));
- ca->client = NULL;
-
- g_hash_table_destroy (ca->uid_alarms_hash);
- ca->uid_alarms_hash = NULL;
-
- g_free (ca);
-
- g_hash_table_remove (client_alarms_hash, client);
-}
-
-
-
-#if 0
-
-/* Sends a mail notification of an alarm trigger */
-static void
-mail_notification (char *mail_address, char *text, time_t app_time)
-{
- pid_t pid;
- int p [2];
- char *command;
-
- pipe (p);
- pid = fork ();
- if (pid == 0){
- int dev_null;
-
- dev_null = open ("/dev/null", O_RDWR);
- dup2 (p [0], 0);
- dup2 (dev_null, 1);
- dup2 (dev_null, 2);
- execl ("/usr/lib/sendmail", "/usr/lib/sendmail",
- mail_address, NULL);
- _exit (127);
- }
- command = g_strconcat ("To: ", mail_address, "\n",
- "Subject: ", _("Reminder of your appointment at "),
- ctime (&app_time), "\n\n", text, "\n", NULL);
- write (p [1], command, strlen (command));
- close (p [1]);
- close (p [0]);
- g_free (command);
-}
-
-static int
-max_open_files (void)
-{
- static int files;
-
- if (files)
- return files;
-
- files = sysconf (_SC_OPEN_MAX);
- if (files != -1)
- return files;
-#ifdef OPEN_MAX
- return files = OPEN_MAX;
-#else
- return files = 256;
-#endif
-}
-
-/* Executes a program as a notification of an alarm trigger */
-static void
-program_notification (char *command, int close_standard)
-{
- struct sigaction ignore, save_intr, save_quit;
- int status = 0, i;
- pid_t pid;
-
- ignore.sa_handler = SIG_IGN;
- sigemptyset (&ignore.sa_mask);
- ignore.sa_flags = 0;
-
- sigaction (SIGINT, &ignore, &save_intr);
- sigaction (SIGQUIT, &ignore, &save_quit);
-
- if ((pid = fork ()) < 0){
- fprintf (stderr, "\n\nfork () = -1\n");
- return;
- }
- if (pid == 0){
- pid = fork ();
- if (pid == 0){
- const int top = max_open_files ();
- sigaction (SIGINT, &save_intr, NULL);
- sigaction (SIGQUIT, &save_quit, NULL);
-
- for (i = (close_standard ? 0 : 3); i < top; i++)
- close (i);
-
- /* FIXME: As an excercise to the reader, copy the
- * code from mc to setup shell properly instead of
- * /bin/sh. Yes, this comment is larger than a cut and paste.
- */
- execl ("/bin/sh", "/bin/sh", "-c", command, (char *) 0);
-
- _exit (127);
- } else {
- _exit (127);
- }
- }
- wait (&status);
- sigaction (SIGINT, &save_intr, NULL);
- sigaction (SIGQUIT, &save_quit, NULL);
-}
-
-/* Queues a snooze alarm */
-static void
-snooze (GnomeCalendar *gcal, CalComponent *comp, time_t occur, int snooze_mins, gboolean audio)
-{
- time_t now, trigger;
- struct tm tm;
- CalAlarmInstance ai;
-
- now = time (NULL);
- tm = *localtime (&now);
- tm.tm_min += snooze_mins;
-
- trigger = mktime (&tm);
- if (trigger == -1) {
- g_message ("snooze(): produced invalid time_t; not queueing alarm!");
- return;
- }
-
-#if 0
- cal_component_get_uid (comp, &ai.uid);
- ai.type = audio ? ALARM_AUDIO : ALARM_DISPLAY;
-#endif
- ai.trigger = trigger;
- ai.occur = occur;
-
- setup_alarm (gcal, &ai);
-}
-
-struct alarm_notify_closure {
- GnomeCalendar *gcal;
- CalComponent *comp;
- time_t occur;
-};
-
-/* Callback used for the result of the alarm notification dialog */
-static void
-display_notification_cb (AlarmNotifyResult result, int snooze_mins, gpointer data)
-{
- struct alarm_notify_closure *c;
-
- c = data;
-
- switch (result) {
- case ALARM_NOTIFY_CLOSE:
- break;
-
- case ALARM_NOTIFY_SNOOZE:
- snooze (c->gcal, c->comp, c->occur, snooze_mins, FALSE);
- break;
-
- case ALARM_NOTIFY_EDIT:
- gnome_calendar_edit_object (c->gcal, c->comp);
- break;
-
- default:
- g_assert_not_reached ();
- }
-
- gtk_object_unref (GTK_OBJECT (c->comp));
- g_free (c);
-}
-
-/* Present a display notification of an alarm trigger */
-static void
-display_notification (time_t trigger, time_t occur, CalComponent *comp, GnomeCalendar *gcal)
-{
- gboolean result;
- struct alarm_notify_closure *c;
-
- gtk_object_ref (GTK_OBJECT (comp));
-
- c = g_new (struct alarm_notify_closure, 1);
- c->gcal = gcal;
- c->comp = comp;
- c->occur = occur;
-
- result = alarm_notify_dialog (trigger, occur, comp, display_notification_cb, c);
- if (!result) {
- g_message ("display_notification(): could not display the alarm notification dialog");
- g_free (c);
- gtk_object_unref (GTK_OBJECT (comp));
- }
-}
-
-/* Present an audible notification of an alarm trigger */
-static void
-audio_notification (time_t trigger, time_t occur, CalComponent *comp, GnomeCalendar *gcal)
-{
- g_message ("AUDIO NOTIFICATION!");
- /* FIXME */
-}
-
-/* Callback function used when an alarm is triggered */
-static void
-trigger_alarm_cb (gpointer alarm_id, time_t trigger, gpointer data)
-{
- struct trigger_alarm_closure *c;
- GnomeCalendarPrivate *priv;
- CalComponent *comp;
- CalClientGetStatus status;
- const char *uid;
- ObjectAlarms *oa;
- GList *l;
-
- c = data;
- priv = c->gcal->priv;
-
- /* Fetch the object */
-
- status = cal_client_get_object (priv->client, c->uid, &comp);
-
- switch (status) {
- case CAL_CLIENT_GET_SUCCESS:
- /* Go on */
- break;
- case CAL_CLIENT_GET_SYNTAX_ERROR:
- case CAL_CLIENT_GET_NOT_FOUND:
- g_message ("trigger_alarm_cb(): syntax error in fetched object");
- return;
- }
-
- g_assert (comp != NULL);
-
- /* Present notification */
-
- switch (c->type) {
- case CAL_COMPONENT_ALARM_EMAIL:
-#if 0
- g_assert (ico->malarm.enabled);
- mail_notification (ico->malarm.data, ico->summary, c->occur);
-#endif
- break;
-
- case CAL_COMPONENT_ALARM_PROCEDURE:
-#if 0
- g_assert (ico->palarm.enabled);
- program_notification (ico->palarm.data, FALSE);
-#endif
- break;
-
- case CAL_COMPONENT_ALARM_DISPLAY:
-#if 0
- g_assert (ico->dalarm.enabled);
-#endif
- display_notification (trigger, c->occur, comp, c->gcal);
- break;
-
- case CAL_COMPONENT_ALARM_AUDIO:
-#if 0
- g_assert (ico->aalarm.enabled);
-#endif
- audio_notification (trigger, c->occur, comp, c->gcal);
- break;
-
- default:
- break;
- }
-
- /* Remove the alarm from the hash table */
- cal_component_get_uid (comp, &uid);
- oa = g_hash_table_lookup (priv->alarms, uid);
- g_assert (oa != NULL);
-
- l = g_list_find (oa->alarm_ids, alarm_id);
- g_assert (l != NULL);
-
- oa->alarm_ids = g_list_remove_link (oa->alarm_ids, l);
- g_list_free_1 (l);
-
- if (!oa->alarm_ids) {
- g_hash_table_remove (priv->alarms, uid);
- g_free (oa->uid);
- g_free (oa);
- }
-
- gtk_object_unref (GTK_OBJECT (comp));
-}
-
-#endif
-
-#if 0
-
-static void
-stop_beeping (GtkObject* object, gpointer data)
-{
- guint timer_tag, beep_tag;
- timer_tag = GPOINTER_TO_INT (gtk_object_get_data (object, "timer_tag"));
- beep_tag = GPOINTER_TO_INT (gtk_object_get_data (object, "beep_tag"));
-
- if (beep_tag > 0) {
- gtk_timeout_remove (beep_tag);
- gtk_object_set_data (object, "beep_tag", GINT_TO_POINTER (0));
- }
- if (timer_tag > 0) {
- gtk_timeout_remove (timer_tag);
- gtk_object_set_data (object, "timer_tag", GINT_TO_POINTER (0));
- }
-}
-
-static gint
-start_beeping (gpointer data)
-{
- gdk_beep ();
-
- return TRUE;
-}
-
-static gint
-timeout_beep (gpointer data)
-{
- stop_beeping (data, NULL);
- return FALSE;
-}
-
-void
-calendar_notify (time_t activation_time, CalendarAlarm *which, void *data)
-{
- iCalObject *ico = data;
- guint beep_tag, timer_tag;
- int ret;
- gchar* snooze_button = (enable_snooze ? _("Snooze") : NULL);
- time_t now, diff;
-
- if (&ico->aalarm == which){
- time_t app = ico->aalarm.trigger + ico->aalarm.offset;
- GtkWidget *w;
- char *msg;
-
- msg = g_strconcat (_("Reminder of your appointment at "),
- ctime (&app), "`",
- ico->summary, "'", NULL);
-
- /* Idea: we need Snooze option :-) */
- w = gnome_message_box_new (msg, GNOME_MESSAGE_BOX_INFO, _("Ok"), snooze_button, NULL);
- beep_tag = gtk_timeout_add (1000, start_beeping, NULL);
- if (enable_aalarm_timeout)
- timer_tag = gtk_timeout_add (audio_alarm_timeout*1000,
- timeout_beep, w);
- else
- timer_tag = 0;
- gtk_object_set_data (GTK_OBJECT (w), "timer_tag",
- GINT_TO_POINTER (timer_tag));
- gtk_object_set_data (GTK_OBJECT (w), "beep_tag",
- GINT_TO_POINTER (beep_tag));
- gtk_widget_ref (w);
- gtk_window_set_modal (GTK_WINDOW (w), FALSE);
- ret = gnome_dialog_run (GNOME_DIALOG (w));
- switch (ret) {
- case 1:
- stop_beeping (GTK_OBJECT (w), NULL);
- now = time (NULL);
- diff = now - which->trigger;
- which->trigger = which->trigger + diff + snooze_secs;
- which->offset = which->offset - diff - snooze_secs;
- alarm_add (which, &calendar_notify, data);
- break;
- default:
- stop_beeping (GTK_OBJECT (w), NULL);
- break;
- }
-
- gtk_widget_unref (w);
- return;
- }
-
- if (&ico->palarm == which){
- execute (ico->palarm.data, 0);
- return;
- }
-
- if (&ico->malarm == which){
- time_t app = ico->malarm.trigger + ico->malarm.offset;
-
- mail_notify (ico->malarm.data, ico->summary, app);
- return;
- }
-
- if (&ico->dalarm == which){
- time_t app = ico->dalarm.trigger + ico->dalarm.offset;
- GtkWidget *w;
- char *msg;
-
- if (beep_on_display)
- gdk_beep ();
- msg = g_strconcat (_("Reminder of your appointment at "),
- ctime (&app), "`",
- ico->summary, "'", NULL);
- w = gnome_message_box_new (msg, GNOME_MESSAGE_BOX_INFO,
- _("Ok"), snooze_button, NULL);
- gtk_window_set_modal (GTK_WINDOW (w), FALSE);
- ret = gnome_dialog_run (GNOME_DIALOG (w));
- switch (ret) {
- case 1:
- now = time (NULL);
- diff = now - which->trigger;
- which->trigger = which->trigger + diff + snooze_secs;
- which->offset = which->offset - diff - snooze_secs;
- alarm_add (which, &calendar_notify, data);
- break;
- default:
- break;
- }
-
- return;
- }
-}
-
-#endif
diff --git a/calendar/gui/alarm-notify/alarm-queue.h b/calendar/gui/alarm-notify/alarm-queue.h
deleted file mode 100644
index 1f8871fb96..0000000000
--- a/calendar/gui/alarm-notify/alarm-queue.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Evolution calendar - Alarm queueing engine
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Authors: Federico Mena-Quintero <federico@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef ALARM_QUEUE_H
-#define ALARM_QUEUE_H
-
-#include <cal-client/cal-client.h>
-
-
-void alarm_queue_init (void);
-void alarm_queue_done (void);
-
-void alarm_queue_add_client (CalClient *client);
-void alarm_queue_remove_client (CalClient *client);
-
-
-#endif
diff --git a/calendar/gui/alarm-notify/alarm.c b/calendar/gui/alarm-notify/alarm.c
deleted file mode 100644
index d32d8f1af9..0000000000
--- a/calendar/gui/alarm-notify/alarm.c
+++ /dev/null
@@ -1,357 +0,0 @@
-/* Evolution calendar - Low-level alarm timer mechanism
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Authors: Miguel de Icaza <miguel@ximian.com>
- * Federico Mena-Quintero <federico@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <unistd.h>
-#include <time.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <sys/time.h>
-#include <gdk/gdk.h>
-#include "alarm.h"
-
-
-
-/* Whether the timer system has been initialized */
-static gboolean alarm_inited;
-
-/* The pipes used to notify about an alarm */
-static int alarm_pipes [2];
-
-/* The list of pending alarms */
-static GList *alarms;
-
-/* A queued alarm structure */
-typedef struct {
- time_t trigger;
- AlarmFunction alarm_fn;
- gpointer data;
- AlarmDestroyNotify destroy_notify_fn;
-} AlarmRecord;
-
-
-
-/* SIGALRM handler. Notifies the callback about the alarm. */
-static void
-alarm_signal (int arg)
-{
- char c = 0;
-
- write (alarm_pipes [1], &c, 1);
-}
-
-/* Sets up an itimer and returns a success code */
-static gboolean
-setup_itimer (time_t diff)
-{
- struct itimerval itimer;
- int v;
-
- itimer.it_interval.tv_sec = 0;
- itimer.it_interval.tv_usec = 0;
- itimer.it_value.tv_sec = diff;
- itimer.it_value.tv_usec = 0;
-
- v = setitimer (ITIMER_REAL, &itimer, NULL);
-
- return (v == 0) ? TRUE : FALSE;
-}
-
-/* Clears the itimer we have pending */
-static gboolean
-clear_itimer (void)
-{
- return setup_itimer (0);
-}
-
-/* Removes the head alarm, returns it, and schedules the next alarm in the
- * queue.
- */
-static AlarmRecord *
-pop_alarm (void)
-{
- AlarmRecord *ar;
- GList *l;
-
- if (!alarms)
- return NULL;
-
- ar = alarms->data;
-
- l = alarms;
- alarms = g_list_remove_link (alarms, l);
- g_list_free_1 (l);
-
- if (alarms) {
- time_t now;
- AlarmRecord *new_ar;
-
- now = time (NULL);
- new_ar = alarms->data;
-
- if (!setup_itimer (new_ar->trigger - now)) {
- g_message ("pop_alarm(): Could not reset the timer! "
- "Weird things will happen.");
-
- /* FIXME: should we free the alarm list? What
- * about further alarm removal requests that
- * will fail?
- */
- }
- } else
- if (!clear_itimer ())
- g_message ("pop_alarm(): Could not clear the timer! "
- "Weird things may happen.");
-
- return ar;
-}
-
-/* Input handler for our own alarm notification pipe */
-static void
-alarm_ready (gpointer data, gint fd, GdkInputCondition cond)
-{
- AlarmRecord *ar;
- char c;
-
- if (read (alarm_pipes [0], &c, 1) != 1) {
- g_message ("alarm_ready(): Uh? Could not read from notification pipe.");
- return;
- }
-
- g_assert (alarms != NULL);
- ar = pop_alarm ();
-
- g_print ("alarm_ready(): Notifying about alarm on %s\n", ctime (&ar->trigger));
-
- (* ar->alarm_fn) (ar, ar->trigger, ar->data);
-
- if (ar->destroy_notify_fn)
- (* ar->destroy_notify_fn) (ar, ar->data);
-
- g_free (ar);
-}
-
-static int
-compare_alarm_by_time (gconstpointer a, gconstpointer b)
-{
- const AlarmRecord *ara = a;
- const AlarmRecord *arb = b;
- time_t diff;
-
- diff = ara->trigger - arb->trigger;
- return (diff < 0) ? -1 : (diff > 0) ? 1 : 0;
-}
-
-/* Adds an alarm to the queue and sets up the timer */
-static gboolean
-queue_alarm (time_t now, AlarmRecord *ar)
-{
- time_t diff;
- AlarmRecord *old_head;
-
- if (alarms)
- old_head = alarms->data;
- else
- old_head = NULL;
-
- alarms = g_list_insert_sorted (alarms, ar, compare_alarm_by_time);
-
- if (old_head == alarms->data)
- return TRUE;
-
- /* Set the timer for removal upon activation */
-
- diff = ar->trigger - now;
- if (!setup_itimer (diff)) {
- GList *l;
-
- g_message ("queue_alarm(): Could not set up timer! Not queueing alarm.");
-
- l = g_list_find (alarms, ar);
- g_assert (l != NULL);
-
- alarms = g_list_remove_link (alarms, l);
- g_list_free_1 (l);
- return FALSE;
- }
-
- return TRUE;
-}
-
-/**
- * alarm_add:
- * @trigger: Time at which alarm will trigger.
- * @alarm_fn: Callback for trigger.
- * @data: Closure data for callback.
- *
- * Adds an alarm to trigger at the specified time. The @alarm_fn will be called
- * with the provided data and the alarm will be removed from the trigger list.
- *
- * Return value: An identifier for this alarm; it can be used to remove the
- * alarm later with alarm_remove(). If the trigger time occurs in the past, then
- * the alarm will not be queued and the function will return NULL.
- **/
-gpointer
-alarm_add (time_t trigger, AlarmFunction alarm_fn, gpointer data,
- AlarmDestroyNotify destroy_notify_fn)
-{
- time_t now;
- AlarmRecord *ar;
-
- g_return_val_if_fail (alarm_inited, NULL);
- g_return_val_if_fail (trigger != -1, NULL);
- g_return_val_if_fail (alarm_fn != NULL, NULL);
-
- now = time (NULL);
- if (trigger < now)
- return NULL;
-
- ar = g_new (AlarmRecord, 1);
- ar->trigger = trigger;
- ar->alarm_fn = alarm_fn;
- ar->data = data;
- ar->destroy_notify_fn = destroy_notify_fn;
-
- g_print ("alarm_add(): Adding alarm for %s\n", ctime (&trigger));
-
- if (!queue_alarm (now, ar)) {
- g_free (ar);
- ar = NULL;
- }
-
- return ar;
-}
-
-/**
- * alarm_remove:
- * @alarm: A queued alarm identifier.
- *
- * Removes an alarm from the alarm queue.
- **/
-void
-alarm_remove (gpointer alarm)
-{
- AlarmRecord *ar;
- AlarmRecord *old_head;
- GList *l;
-
- g_return_if_fail (alarm_inited);
- g_return_if_fail (alarm != NULL);
-
- ar = alarm;
-
- l = g_list_find (alarms, ar);
- if (!l) {
- g_message ("alarm_remove(): Requested removal of nonexistent alarm!");
- return;
- }
-
- old_head = alarms->data;
-
- if (old_head == ar)
- pop_alarm ();
- else {
- alarms = g_list_remove_link (alarms, l);
- g_list_free_1 (l);
- }
-
- if (ar->destroy_notify_fn)
- (* ar->destroy_notify_fn) (ar, ar->data);
-
- g_free (ar);
-}
-
-/**
- * alarm_init:
- *
- * Initializes the alarm timer mechanism. This must be called near the
- * beginning of the program.
- **/
-void
-alarm_init (void)
-{
- struct sigaction sa;
- int flags;
-
- g_return_if_fail (alarm_inited == FALSE);
-
- pipe (alarm_pipes);
-
- /* set non blocking mode */
- flags = 0;
- fcntl (alarm_pipes [0], F_GETFL, &flags);
- fcntl (alarm_pipes [0], F_SETFL, flags | O_NONBLOCK);
- gdk_input_add (alarm_pipes [0], GDK_INPUT_READ, alarm_ready, NULL);
-
- /* Setup the signal handler */
- sa.sa_handler = alarm_signal;
- sigemptyset (&sa.sa_mask);
- sa.sa_flags = SA_RESTART;
- sigaction (SIGALRM, &sa, NULL);
-
- alarm_inited = TRUE;
-}
-
-/**
- * alarm_done:
- *
- * Terminates the alarm timer mechanism. This should be called at the end of
- * the program.
- **/
-void
-alarm_done (void)
-{
- GList *l;
-
- g_return_if_fail (alarm_inited);
-
- if (!clear_itimer ())
- g_message ("alarm_done(): Could not clear the timer! "
- "Weird things may happen.");
-
- for (l = alarms; l; l = l->next) {
- AlarmRecord *ar;
-
- ar = l->data;
-
- if (ar->destroy_notify_fn)
- (* ar->destroy_notify_fn) (ar, ar->data);
-
- g_free (ar);
- }
-
- g_list_free (alarms);
- alarms = NULL;
-
- if (close (alarm_pipes[0]) != 0)
- g_message ("alarm_done(): Could not close the input pipe for notification");
-
- alarm_pipes[0] = -1;
-
- if (close (alarm_pipes[1]) != 0)
- g_message ("alarm_done(): Could not close the output pipe for notification");
-
- alarm_pipes[1] = -1;
-
- alarm_inited = FALSE;
-}
diff --git a/calendar/gui/alarm-notify/alarm.h b/calendar/gui/alarm-notify/alarm.h
deleted file mode 100644
index fc81908ef2..0000000000
--- a/calendar/gui/alarm-notify/alarm.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Evolution calendar - Low-level alarm timer mechanism
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Authors: Miguel de Icaza <miguel@ximian.com>
- * Federico Mena-Quintero <federico@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef ALARM_H
-#define ALARM_H
-
-#include <time.h>
-#include <glib.h>
-
-
-
-typedef void (* AlarmFunction) (gpointer alarm_id, time_t trigger, gpointer data);
-typedef void (* AlarmDestroyNotify) (gpointer alarm_id, gpointer data);
-
-void alarm_init (void);
-void alarm_done (void);
-
-gpointer alarm_add (time_t trigger, AlarmFunction alarm_fn, gpointer data,
- AlarmDestroyNotify destroy_notify_fn);
-void alarm_remove (gpointer alarm);
-
-
-
-#endif
diff --git a/calendar/gui/alarm-notify/client-main.c b/calendar/gui/alarm-notify/client-main.c
deleted file mode 100644
index 5b0fb669d2..0000000000
--- a/calendar/gui/alarm-notify/client-main.c
+++ /dev/null
@@ -1,178 +0,0 @@
-/* Evolution calendar - Command-line client for the alarm notification service
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Federico Mena-Quintero <federico@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <liboaf/liboaf.h>
-#include "evolution-calendar.h"
-
-
-
-/* Requests that a calendar be added to the alarm notification service */
-static void
-add_calendar (GNOME_Evolution_Calendar_AlarmNotify an, const char *uri)
-{
- CORBA_Environment ev;
-
- CORBA_exception_init (&ev);
- GNOME_Evolution_Calendar_AlarmNotify_addCalendar (an, uri, &ev);
-
- if (ev._major == CORBA_USER_EXCEPTION) {
- char *ex_id;
-
- ex_id = CORBA_exception_id (&ev);
- if (strcmp (ex_id, ex_GNOME_Evolution_Calendar_AlarmNotify_InvalidURI) == 0) {
- g_message ("add_calendar(): Invalid URI reported from the "
- "alarm notification service");
- goto out;
- } else if (strcmp (ex_id,
- ex_GNOME_Evolution_Calendar_AlarmNotify_BackendContactError)
- == 0) {
- g_message ("add_calendar(): The alarm notification service could "
- "not contact the backend");
- goto out;
- }
- }
-
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("add_calendar(): Could not issue the addCalendar request");
-
- out:
- CORBA_exception_free (&ev);
-}
-
-/* Loads the calendars that the user has configured to be loaded */
-static void
-load_calendars (void)
-{
- CORBA_Environment ev;
- GNOME_Evolution_Calendar_AlarmNotify an;
- char *base_uri;
- char *uri;
-
- CORBA_exception_init (&ev);
- an = oaf_activate_from_id ("OAFID:GNOME_Evolution_Calendar_AlarmNotify", 0, NULL, &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_message ("load_calendars(): Could not activate the alarm notification service");
- CORBA_exception_free (&ev);
- exit (EXIT_FAILURE);
- }
- CORBA_exception_free (&ev);
-
- /* FIXME: this should be obtained from the configuration in the Wombat */
-
- base_uri = g_concat_dir_and_file (g_get_home_dir (), "evolution");
-
- uri = g_concat_dir_and_file (base_uri, "local/Calendar/calendar.ics");
- add_calendar (an, uri);
- g_free (uri);
-
- uri = g_concat_dir_and_file (base_uri, "local/Tasks/tasks.ics");
- add_calendar (an, uri);
- g_free (uri);
-
- g_free (base_uri);
-
- CORBA_exception_init (&ev);
- Bonobo_Unknown_unref (an, &ev);
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("load_calendars(): Could not unref the alarm notification service");
-
- CORBA_exception_free (&ev);
-
- CORBA_exception_init (&ev);
- CORBA_Object_release (an, &ev);
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("load_calendars(): Could not release the alarm notification service");
-
- CORBA_exception_free (&ev);
-}
-
-/* FIXME: handle the --die option */
-
-int
-main (int argc, char **argv)
-{
- GnomeClient *client;
- int flags;
- gboolean launch_service;
-
- bindtextdomain (PACKAGE, EVOLUTION_LOCALEDIR);
- textdomain (PACKAGE);
-
- if (gnome_init_with_popt_table ("evolution-alarm-client", VERSION,
- argc, argv, oaf_popt_options, 0, NULL) != 0) {
- g_message ("main(): Could not initialize GNOME");
- exit (EXIT_FAILURE);
- }
-
- oaf_init (argc, argv);
-
- if (!bonobo_init (CORBA_OBJECT_NIL, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL)) {
- g_message ("main(): Could not initialize Bonobo");
- exit (EXIT_FAILURE);
- }
-
- /* Ask the session manager to restart us */
-
- client = gnome_master_client ();
- flags = gnome_client_get_flags (client);
-
- if (flags & GNOME_CLIENT_IS_CONNECTED) {
- char *client_id;
-
- client_id = gnome_client_get_id (client);
- g_assert (client_id != NULL);
-
- launch_service = gnome_startup_acquire_token ("EVOLUTION_ALARM_NOTIFY",
- client_id);
-
- if (launch_service) {
- char *args[3];
-
- args[0] = argv[0];
- args[2] = NULL;
-
- gnome_client_set_restart_style (client, GNOME_RESTART_ANYWAY);
- gnome_client_set_restart_command (client, 2, args);
-
- args[0] = argv[0];
- args[1] = "--die";
- args[2] = NULL;
-
- gnome_client_set_shutdown_command (client, 2, args);
- } else
- gnome_client_set_restart_style (client, GNOME_RESTART_NEVER);
-
- gnome_client_flush (client);
- } else
- launch_service = TRUE;
-
- if (!launch_service)
- return EXIT_SUCCESS;
-
- load_calendars ();
-
- return EXIT_SUCCESS;
-}
diff --git a/calendar/gui/alarm-notify/notify-main.c b/calendar/gui/alarm-notify/notify-main.c
deleted file mode 100644
index 23d383384b..0000000000
--- a/calendar/gui/alarm-notify/notify-main.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Evolution calendar - Alarm notification service main file
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <glib.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <libgnomeui/gnome-init.h>
-#include <bonobo/bonobo-main.h>
-#include <bonobo/bonobo-generic-factory.h>
-#include <liboaf/liboaf.h>
-#include "alarm.h"
-#include "alarm-queue.h"
-#include "alarm-notify.h"
-
-
-
-static BonoboGenericFactory *factory;
-
-static AlarmNotify *alarm_notify_service;
-
-
-/* La de da */
-static void
-funny_trigger_cb (gpointer alarm_id, time_t trigger, gpointer data)
-{
- char *msg;
- char str[256];
- struct tm *tm;
-
- tm = localtime (&trigger);
- strftime (str, sizeof (str), "%x %X", tm);
-
- msg = g_strdup_printf (_("It is %s. The Unix time is %ld right now. We just thought "
- "you may like to know."), str, (long) trigger);
- gnome_ok_dialog (msg);
- g_free (msg);
-}
-
-/* Dum de dum */
-static void
-funny_times_init (void)
-{
- alarm_add ((time_t) 999999999L, funny_trigger_cb, NULL, NULL); /* Sep 9 01:46:39 2001 UTC */
-}
-
-/* Factory function for the alarm notify service; just creates and references a
- * singleton service object.
- */
-static BonoboObject *
-alarm_notify_factory_fn (BonoboGenericFactory *factory, void *data)
-{
- if (!alarm_notify_service) {
- alarm_notify_service = alarm_notify_new ();
- if (!alarm_notify_service)
- return NULL;
- }
-
- bonobo_object_ref (BONOBO_OBJECT (alarm_notify_service));
- return BONOBO_OBJECT (alarm_notify_service);
-}
-
-int
-main (int argc, char **argv)
-{
- bindtextdomain (PACKAGE, EVOLUTION_LOCALEDIR);
- textdomain (PACKAGE);
-
- if (gnome_init_with_popt_table ("evolution-alarm-notify", VERSION, argc, argv,
- oaf_popt_options, 0, NULL) != 0)
- g_error (_("Could not initialize GNOME"));
-
- oaf_init (argc, argv);
-
- if (bonobo_init (CORBA_OBJECT_NIL, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL) == FALSE)
- g_error (_("Could not initialize Bonobo"));
-
- alarm_init ();
- alarm_queue_init ();
-
- funny_times_init ();
-
- factory = bonobo_generic_factory_new ("OAFID:GNOME_Evolution_Calendar_AlarmNotify_Factory",
- alarm_notify_factory_fn, NULL);
- if (!factory)
- g_error (_("Could not create the alarm notify service factory"));
-
- bonobo_main ();
-
- bonobo_object_unref (BONOBO_OBJECT (factory));
- factory = NULL;
-
- alarm_queue_done ();
- alarm_done ();
-
- return 0;
-}
diff --git a/calendar/gui/calendar-commands.c b/calendar/gui/calendar-commands.c
deleted file mode 100644
index 3556554d82..0000000000
--- a/calendar/gui/calendar-commands.c
+++ /dev/null
@@ -1,479 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* Evolution calendar - Commands for the calendar GUI control
- *
- * Copyright (C) 1998 The Free Software Foundation
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Authors: Miguel de Icaza <miguel@ximian.com>
- * Federico Mena-Quintero <federico@ximian.com>
- * Seth Alves <alves@hungry.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <pwd.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-
-#include <gdk-pixbuf/gdk-pixbuf.h>
-#include <gtk/gtkfilesel.h>
-#include <gtk/gtkmain.h>
-#include <gtk/gtksignal.h>
-
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-util.h>
-#include <libgnomeui/gnome-dialog-util.h>
-#include <libgnomeui/gnome-messagebox.h>
-#include <libgnomeui/gnome-stock.h>
-#include <libgnome/gnome-util.h>
-#include <libgnome/gnome-i18n.h>
-#include <bonobo/bonobo-ui-util.h>
-#include <cal-util/timeutil.h>
-#include "calendar-commands.h"
-#include "gnome-cal.h"
-#include "goto.h"
-#include "print.h"
-#include "dialogs/cal-prefs-dialog.h"
-#include "e-util/e-gui-utils.h"
-
-/* A list of all of the calendars started */
-static GList *all_calendars = NULL;
-
-/* We have one global preferences dialog. */
-static CalPrefsDialog *preferences_dialog = NULL;
-
-/* Callback for the new appointment command */
-static void
-new_appointment_cb (BonoboUIComponent *uic, gpointer data, const char *path)
-{
- GnomeCalendar *gcal;
-
- gcal = GNOME_CALENDAR (data);
- gnome_calendar_new_appointment (gcal);
-}
-
-static void
-new_event_cb (BonoboUIComponent *uic, gpointer data, const char *path)
-{
- GnomeCalendar *gcal;
- time_t dtstart, dtend;
-
- gcal = GNOME_CALENDAR (data);
- gnome_calendar_get_current_time_range (gcal, &dtstart, &dtend);
- gnome_calendar_new_appointment_for (gcal, dtstart, dtend, TRUE);
-}
-
-/* Prints the calendar at its current view and time range */
-static void
-print (GnomeCalendar *gcal, gboolean preview)
-{
- time_t start;
- const char *view;
- PrintView print_view;
-
- gnome_calendar_get_current_time_range (gcal, &start, NULL);
- view = gnome_calendar_get_current_view_name (gcal);
-
- if (strcmp (view, "dayview") == 0)
- print_view = PRINT_VIEW_DAY;
- else if (strcmp (view, "workweekview") == 0 || strcmp (view, "weekview") == 0)
- print_view = PRINT_VIEW_WEEK;
- else if (strcmp (view, "monthview") == 0)
- print_view = PRINT_VIEW_MONTH;
- else {
- g_assert_not_reached ();
- print_view = PRINT_VIEW_DAY;
- }
-
- print_calendar (gcal, preview, start, print_view);
-}
-
-/* File/Print callback */
-static void
-file_print_cb (BonoboUIComponent *uic, gpointer data, const char *path)
-{
- GnomeCalendar *gcal;
-
- gcal = GNOME_CALENDAR (data);
- print (gcal, FALSE);
-}
-
-static void
-file_print_preview_cb (BonoboUIComponent *uic, gpointer data, const char *path)
-{
- GnomeCalendar *gcal;
-
- gcal = GNOME_CALENDAR (data);
- print (gcal, TRUE);
-}
-
-/* This iterates over each calendar telling them to update their config
- settings. */
-void
-update_all_config_settings (void)
-{
- GList *l;
-
- for (l = all_calendars; l; l = l->next)
- gnome_calendar_update_config_settings (GNOME_CALENDAR (l->data), FALSE);
-}
-
-
-/* Sets a clock cursor for the specified calendar window */
-static void
-set_clock_cursor (GnomeCalendar *gcal)
-{
- GdkCursor *cursor;
-
- cursor = gdk_cursor_new (GDK_WATCH);
- gdk_window_set_cursor (GTK_WIDGET (gcal)->window, cursor);
- gdk_cursor_destroy (cursor);
- gdk_flush ();
-}
-
-/* Resets the normal cursor for the specified calendar window */
-static void
-set_normal_cursor (GnomeCalendar *gcal)
-{
- gdk_window_set_cursor (GTK_WIDGET (gcal)->window, NULL);
- gdk_flush ();
-}
-
-static void
-previous_clicked (BonoboUIComponent *uic, gpointer data, const char *path)
-{
- GnomeCalendar *gcal;
-
- gcal = GNOME_CALENDAR (data);
-
- set_clock_cursor (gcal);
- gnome_calendar_previous (gcal);
- set_normal_cursor (gcal);
-}
-
-static void
-next_clicked (BonoboUIComponent *uic, gpointer data, const char *path)
-{
- GnomeCalendar *gcal;
-
- gcal = GNOME_CALENDAR (data);
-
- set_clock_cursor (gcal);
- gnome_calendar_next (gcal);
- set_normal_cursor (gcal);
-}
-
-void
-calendar_goto_today (GnomeCalendar *gcal)
-{
- set_clock_cursor (gcal);
- gnome_calendar_goto_today (gcal);
- set_normal_cursor (gcal);
-}
-
-static void
-today_clicked (BonoboUIComponent *uic, gpointer data, const char *path)
-{
- GnomeCalendar *gcal;
-
- gcal = GNOME_CALENDAR (data);
-
- calendar_goto_today (gcal);
-}
-
-static void
-goto_clicked (BonoboUIComponent *uic, gpointer data, const char *path)
-{
- GnomeCalendar *gcal;
-
- gcal = GNOME_CALENDAR (data);
-
- goto_dialog (gcal);
-}
-
-static void
-show_day_view_clicked (BonoboUIComponent *uic, gpointer data, const char *path)
-{
- GnomeCalendar *gcal;
-
- gcal = GNOME_CALENDAR (data);
-
- gnome_calendar_set_view (gcal, "dayview", FALSE, TRUE);
-}
-
-static void
-show_work_week_view_clicked (BonoboUIComponent *uic, gpointer data, const char *path)
-{
- GnomeCalendar *gcal;
-
- gcal = GNOME_CALENDAR (data);
-
- gnome_calendar_set_view (gcal, "workweekview", FALSE, TRUE);
-}
-
-static void
-show_week_view_clicked (BonoboUIComponent *uic, gpointer data, const char *path)
-{
- GnomeCalendar *gcal;
-
- gcal = GNOME_CALENDAR (data);
-
- gnome_calendar_set_view (gcal, "weekview", FALSE, TRUE);
-}
-
-static void
-show_month_view_clicked (BonoboUIComponent *uic, gpointer data, const char *path)
-{
- GnomeCalendar *gcal;
-
- gcal = GNOME_CALENDAR (data);
-
- gnome_calendar_set_view (gcal, "monthview", FALSE, TRUE);
-}
-
-
-static void
-new_calendar_cmd (BonoboUIComponent *uic, gpointer data, const char *path)
-{
- new_calendar ();
-}
-
-static void
-open_ok (GtkWidget *widget, GtkFileSelection *fs)
-{
- GtkWidget *error_dialog;
- int ret;
- if(!g_file_exists (gtk_file_selection_get_filename (fs))) {
- error_dialog = gnome_message_box_new (
- _("File not found"),
- GNOME_MESSAGE_BOX_ERROR,
- GNOME_STOCK_BUTTON_OK,
- NULL);
-
- gnome_dialog_set_parent (GNOME_DIALOG (error_dialog), GTK_WINDOW (fs));
- ret = gnome_dialog_run (GNOME_DIALOG (error_dialog));
- } else {
- /* FIXME: find out who owns this calendar and use that name */
-#ifndef NO_WARNINGS
-#warning "FIXME: find out who owns this calendar and use that name"
-#endif
- /*
- new_calendar ("Somebody", gtk_file_selection_get_filename (fs));
- */
- gtk_widget_destroy (GTK_WIDGET (fs));
- }
-}
-
-static void
-open_calendar_cmd (BonoboUIComponent *uic, gpointer data, const char *path)
-{
- GtkFileSelection *fs;
-
- fs = GTK_FILE_SELECTION (gtk_file_selection_new (_("Open calendar")));
-
- gtk_signal_connect (GTK_OBJECT (fs->ok_button), "clicked",
- (GtkSignalFunc) open_ok,
- fs);
- gtk_signal_connect_object (GTK_OBJECT (fs->cancel_button), "clicked",
- (GtkSignalFunc) gtk_widget_destroy,
- GTK_OBJECT (fs));
-
- gtk_widget_show (GTK_WIDGET (fs));
- gtk_grab_add (GTK_WIDGET (fs)); /* Yes, it is modal, so sue me */
-}
-
-static void
-save_ok (GtkWidget *widget, GtkFileSelection *fs)
-{
- GnomeCalendar *gcal;
- gchar *fname;
-
- gcal = GNOME_CALENDAR (gtk_object_get_user_data (GTK_OBJECT (fs)));
- gtk_window_set_wmclass (GTK_WINDOW (gcal), "gnomecal", "gnomecal");
-
- fname = g_strdup (gtk_file_selection_get_filename (fs));
- g_free(fname);
- gtk_main_quit ();
-}
-
-static gint
-close_save (GtkWidget *w)
-{
- gtk_main_quit ();
- return TRUE;
-}
-
-static void
-save_as_calendar_cmd (BonoboUIComponent *uic, gpointer data, const char *path)
-{
- GnomeCalendar *gcal;
- GtkFileSelection *fs;
-
- gcal = GNOME_CALENDAR (data);
-
- fs = GTK_FILE_SELECTION (gtk_file_selection_new (_("Save calendar")));
- gtk_object_set_user_data (GTK_OBJECT (fs), gcal);
-
- gtk_signal_connect (GTK_OBJECT (fs->ok_button), "clicked",
- (GtkSignalFunc) save_ok,
- fs);
- gtk_signal_connect_object (GTK_OBJECT (fs->cancel_button), "clicked",
- (GtkSignalFunc) close_save,
- GTK_OBJECT (fs));
- gtk_signal_connect_object (GTK_OBJECT (fs), "delete_event",
- GTK_SIGNAL_FUNC (close_save),
- GTK_OBJECT (fs));
- gtk_widget_show (GTK_WIDGET (fs));
- gtk_grab_add (GTK_WIDGET (fs)); /* Yes, it is modal, so sue me even more */
- gtk_main ();
- gtk_widget_destroy (GTK_WIDGET (fs));
-}
-
-static void
-properties_cmd (BonoboUIComponent *uic, gpointer data, const char *path)
-{
- if (!preferences_dialog)
- preferences_dialog = cal_prefs_dialog_new ();
- else
- cal_prefs_dialog_show (preferences_dialog);
-}
-
-
-static BonoboUIVerb verbs [] = {
- BONOBO_UI_VERB ("CalendarNew", new_calendar_cmd),
- BONOBO_UI_VERB ("CalendarOpen", open_calendar_cmd),
- BONOBO_UI_VERB ("CalendarSaveAs", save_as_calendar_cmd),
- BONOBO_UI_VERB ("CalendarPrint", file_print_cb),
- BONOBO_UI_VERB ("CalendarPrintPreview", file_print_preview_cb),
- BONOBO_UI_VERB ("EditNewAppointment", new_appointment_cb),
- BONOBO_UI_VERB ("EditNewEvent", new_event_cb),
- BONOBO_UI_VERB ("CalendarPreferences", properties_cmd),
-
- BONOBO_UI_VERB ("CalendarPrev", previous_clicked),
- BONOBO_UI_VERB ("CalendarToday", today_clicked),
- BONOBO_UI_VERB ("CalendarNext", next_clicked),
- BONOBO_UI_VERB ("CalendarGoto", goto_clicked),
-
- BONOBO_UI_VERB ("ShowDayView", show_day_view_clicked),
- BONOBO_UI_VERB ("ShowWorkWeekView", show_work_week_view_clicked),
- BONOBO_UI_VERB ("ShowWeekView", show_week_view_clicked),
- BONOBO_UI_VERB ("ShowMonthView", show_month_view_clicked),
-
- BONOBO_UI_VERB_END
-};
-
-static EPixmap pixmaps [] =
-{
- E_PIXMAP ("/menu/File/New/NewFirstItem/CalendarNew", "new_appointment.xpm"),
- E_PIXMAP ("/menu/File/Print/Print", "print.xpm"),
- E_PIXMAP ("/menu/File/Print/Print Preview", "print-preview.xpm"),
- E_PIXMAP ("/menu/Actions/Component/CalendarNew", "new_appointment.xpm"),
- E_PIXMAP ("/menu/Tools/Component/CalendarPreferences", "configure_16_calendar.xpm"),
-
- E_PIXMAP ("/Toolbar/New", "buttons/new_appointment.png"),
- E_PIXMAP ("/Toolbar/DayView", "buttons/dayview.xpm"),
- E_PIXMAP ("/Toolbar/WorkWeekView", "buttons/workweekview.xpm"),
- E_PIXMAP ("/Toolbar/WeekView", "buttons/weekview.xpm"),
- E_PIXMAP ("/Toolbar/MonthView", "buttons/monthview.xpm"),
-
- E_PIXMAP_END
-};
-
-void
-calendar_control_activate (BonoboControl *control,
- GnomeCalendar *cal)
-{
- Bonobo_UIContainer remote_uih;
- BonoboUIComponent *uic;
-
- uic = bonobo_control_get_ui_component (control);
- g_assert (uic != NULL);
-
- remote_uih = bonobo_control_get_remote_ui_container (control);
- bonobo_ui_component_set_container (uic, remote_uih);
- bonobo_object_release_unref (remote_uih, NULL);
-
-#if 0
- /* FIXME: Need to update this to use new Bonobo ui stuff somehow.
- Also need radio buttons really. */
-
- /* Note that these indices should correspond with the button indices
- in the gnome_toolbar_view_buttons UIINFO struct. */
- gnome_calendar_set_view_buttons (cal,
- gnome_toolbar_view_buttons[0].widget,
- gnome_toolbar_view_buttons[1].widget,
- gnome_toolbar_view_buttons[2].widget,
- gnome_toolbar_view_buttons[3].widget);
-
- /* This makes the appropriate radio button in the toolbar active. */
- gnome_calendar_update_view_buttons (cal);
-#endif
-
- bonobo_ui_component_add_verb_list_with_data (
- uic, verbs, cal);
-
- bonobo_ui_component_freeze (uic, NULL);
-
- bonobo_ui_util_set_ui (uic, EVOLUTION_DATADIR,
- "evolution-calendar.xml",
- "evolution-calendar");
-
- e_pixmaps_update (uic, pixmaps);
-
- bonobo_ui_component_thaw (uic, NULL);
-}
-
-void
-calendar_control_deactivate (BonoboControl *control)
-{
- BonoboUIComponent *uic = bonobo_control_get_ui_component (control);
- g_assert (uic != NULL);
-
- bonobo_ui_component_rm (uic, "/", NULL);
- bonobo_ui_component_unset_container (uic);
-}
-
-/* Removes a calendar from our list of all calendars when it is destroyed. */
-static void
-on_calendar_destroyed (GnomeCalendar *gcal)
-{
- all_calendars = g_list_remove (all_calendars, gcal);
-}
-
-GnomeCalendar *
-new_calendar (void)
-{
- GtkWidget *gcal;
-
- gcal = gnome_calendar_new ();
- if (!gcal) {
- gnome_warning_dialog (_("Could not create the calendar view. Please check your "
- "ORBit and OAF setup."));
- return NULL;
- }
-
- gtk_signal_connect (GTK_OBJECT (gcal), "destroy",
- GTK_SIGNAL_FUNC (on_calendar_destroyed), NULL);
-
- all_calendars = g_list_prepend (all_calendars, gcal);
-
- return GNOME_CALENDAR (gcal);
-}
diff --git a/calendar/gui/calendar-commands.h b/calendar/gui/calendar-commands.h
deleted file mode 100644
index 3dfad41dab..0000000000
--- a/calendar/gui/calendar-commands.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Evolution calendar - Commands for the calendar GUI control
- *
- * Copyright (C) 1998 The Free Software Foundation
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Authors: Miguel de Icaza <miguel@ximian.com>
- * Federico Mena-Quintero <federico@ximian.com>
- * Seth Alves <alves@hungry.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef CALENDAR_COMMANDS_H
-#define CALENDAR_COMMANDS_H
-
-#include <bonobo/bonobo-control.h>
-#include "gnome-cal.h"
-
-/* This tells all the calendars to reload the config settings. */
-void update_all_config_settings (void);
-
-GnomeCalendar *new_calendar (void);
-
-void calendar_control_activate (BonoboControl *control,
- GnomeCalendar *cal);
-void calendar_control_deactivate (BonoboControl *control);
-
-void calendar_goto_today (GnomeCalendar *gcal);
-
-#endif /* CALENDAR_COMMANDS_H */
diff --git a/calendar/gui/calendar-component.c b/calendar/gui/calendar-component.c
deleted file mode 100644
index 5135eb26b8..0000000000
--- a/calendar/gui/calendar-component.c
+++ /dev/null
@@ -1,175 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* component-factory.c
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli <ettore@ximian.com>
- */
-
-#include <config.h>
-#include "evolution-shell-component.h"
-#include <executive-summary/evolution-services/executive-summary-component.h>
-#include "component-factory.h"
-#include "tasks-control-factory.h"
-#include "control-factory.h"
-#include "calendar-config.h"
-#include "calendar-summary.h"
-#include "tasks-control.h"
-#include "tasks-migrate.h"
-
-
-
-#define COMPONENT_FACTORY_ID "OAFIID:GNOME_Evolution_Calendar_ShellComponentFactory"
-
-static BonoboGenericFactory *factory = NULL;
-static BonoboGenericFactory *summary_factory = NULL;
-char *evolution_dir;
-
-static const EvolutionShellComponentFolderType folder_types[] = {
- { "calendar", "evolution-calendar.png" },
- { "tasks", "evolution-tasks.png" },
- { NULL, NULL }
-};
-
-
-/* EvolutionShellComponent methods and signals. */
-
-static EvolutionShellComponentResult
-create_view (EvolutionShellComponent *shell_component,
- const char *physical_uri,
- const char *type,
- BonoboControl **control_return,
- void *closure)
-{
- BonoboControl *control;
-
- if (!g_strcasecmp (type, "calendar")) {
- control = control_factory_new_control ();
- if (!control)
- return EVOLUTION_SHELL_COMPONENT_CORBAERROR;
- } else if (!g_strcasecmp (type, "tasks")) {
- control = tasks_control_new ();
- if (!control)
- return EVOLUTION_SHELL_COMPONENT_CORBAERROR;
- } else {
- return EVOLUTION_SHELL_COMPONENT_UNSUPPORTEDTYPE;
- }
-
- bonobo_control_set_property (control, "folder_uri", physical_uri, NULL);
-
- *control_return = control;
-
- return EVOLUTION_SHELL_COMPONENT_OK;
-}
-
-static void
-create_folder (EvolutionShellComponent *shell_component,
- const char *physical_uri,
- const char *type,
- const GNOME_Evolution_ShellComponentListener listener,
- void *closure)
-{
- CORBA_Environment ev;
-
- CORBA_exception_init(&ev);
- /* FIXME: I don't think we have to do anything to create a calendar
- or tasks folder - the '.ics' files are created automatically when
- needed. But I'm not sure - Damon. */
- if (!strcmp(type, "calendar") || !strcmp(type, "tasks")) {
- GNOME_Evolution_ShellComponentListener_notifyResult(listener, GNOME_Evolution_ShellComponentListener_OK, &ev);
- } else {
- GNOME_Evolution_ShellComponentListener_notifyResult(listener, GNOME_Evolution_ShellComponentListener_UNSUPPORTED_TYPE, &ev);
- }
- CORBA_exception_free(&ev);
-}
-
-static gint owner_count = 0;
-
-static void
-owner_set_cb (EvolutionShellComponent *shell_component,
- EvolutionShellClient *shell_client,
- const char *evolution_homedir,
- gpointer user_data)
-{
- static gboolean migrated = FALSE;
-
- owner_count ++;
- evolution_dir = g_strdup (evolution_homedir);
-
- calendar_config_init ();
-
- if (!migrated) {
- tasks_migrate ();
- migrated = TRUE;
- }
-}
-
-static void
-owner_unset_cb (EvolutionShellComponent *shell_component,
- gpointer user_data)
-{
- owner_count --;
- if (owner_count <= 0)
- gtk_main_quit();
-}
-
-
-/* The factory function. */
-
-static BonoboObject *
-factory_fn (BonoboGenericFactory *factory,
- void *closure)
-{
- EvolutionShellComponent *shell_component;
-
- shell_component = evolution_shell_component_new (folder_types,
- create_view,
- create_folder,
- NULL, /* remove_folder_fn */
- NULL, /* copy_folder_fn */
- NULL, /* populate_folder_context_menu_fn */
- NULL, /* get_dnd_selection_fn */
- NULL /* closure */);
-
- gtk_signal_connect (GTK_OBJECT (shell_component), "owner_set",
- GTK_SIGNAL_FUNC (owner_set_cb), NULL);
- gtk_signal_connect (GTK_OBJECT (shell_component), "owner_unset",
- GTK_SIGNAL_FUNC (owner_unset_cb), NULL);
-
- return BONOBO_OBJECT (shell_component);
-}
-
-
-
-void
-component_factory_init (void)
-{
- if (factory != NULL && factory != NULL)
- return;
-
- factory = bonobo_generic_factory_new (COMPONENT_FACTORY_ID, factory_fn, NULL);
-
- summary_factory = calendar_summary_factory_init ();
-
- if (factory == NULL)
- g_error ("Cannot initialize Evolution's calendar component.");
-
- if (summary_factory == NULL)
- g_error ("Cannot initialize Evolution's calendar summary component.");
-}
diff --git a/calendar/gui/calendar-component.h b/calendar/gui/calendar-component.h
deleted file mode 100644
index d2d570e340..0000000000
--- a/calendar/gui/calendar-component.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* component-factory.h
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli <ettore@ximian.com>
- */
-
-#ifndef _COMPONENT_FACTORY_H_
-#define _COMPONENT_FACTORY_H_
-
-extern char *evolution_dir;
-
-void component_factory_init (void);
-
-#endif /* _COMPONENT_FACTORY_H_ */
diff --git a/calendar/gui/calendar-config.c b/calendar/gui/calendar-config.c
deleted file mode 100644
index 1446783c3c..0000000000
--- a/calendar/gui/calendar-config.c
+++ /dev/null
@@ -1,535 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 2000, Helix Code, Inc.
- * Copyright 2000, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * calendar-config.c - functions to load/save/get/set user settings.
- */
-
-#include <config.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-config.h>
-#include "component-factory.h"
-#include "calendar-config.h"
-
-
-typedef struct
-{
- CalWeekdays working_days;
- gboolean use_24_hour_format;
- gint week_start_day;
- gint day_start_hour;
- gint day_start_minute;
- gint day_end_hour;
- gint day_end_minute;
- gint time_divisions;
- gboolean dnav_show_week_no;
- gint view;
- gfloat hpane_pos;
- gfloat vpane_pos;
- gfloat month_hpane_pos;
- gfloat month_vpane_pos;
- gboolean compress_weekend;
- gboolean show_event_end;
-} CalendarConfig;
-
-
-static CalendarConfig *config = NULL;
-
-static void config_read (void);
-
-
-void
-calendar_config_init (void)
-{
- if (config)
- return;
-
- config = g_new0 (CalendarConfig, 1);
-
- config_read ();
-}
-
-
-static void
-config_read (void)
-{
- gchar *prefix;
- gboolean is_default;
-
- /* 'Display' settings. */
- prefix = g_strdup_printf ("=%s/config/Calendar=/Display/",
- evolution_dir);
- gnome_config_push_prefix (prefix);
- g_free (prefix);
-
- config->working_days = gnome_config_get_int_with_default ("WorkingDays", &is_default);
- if (is_default) {
- config->working_days = CAL_MONDAY | CAL_TUESDAY
- | CAL_WEDNESDAY | CAL_THURSDAY | CAL_FRIDAY;
- }
- config->use_24_hour_format = gnome_config_get_bool ("Use24HourFormat=0");
- config->week_start_day = gnome_config_get_int ("WeekStartDay=1");
- config->day_start_hour = gnome_config_get_int ("DayStartHour=9");
- config->day_start_minute = gnome_config_get_int ("DayStartMinute=0");
- config->day_end_hour = gnome_config_get_int ("DayEndHour=17");
- config->day_end_minute = gnome_config_get_int ("DayEndMinute=0");
- config->time_divisions = gnome_config_get_int ("TimeDivisions=30");
- config->view = gnome_config_get_int ("View=0");
- config->hpane_pos = gnome_config_get_float ("HPanePosition=1");
- config->vpane_pos = gnome_config_get_float ("VPanePosition=1");
- config->month_hpane_pos = gnome_config_get_float ("MonthHPanePosition=0");
- config->month_vpane_pos = gnome_config_get_float ("MonthVPanePosition=1");
- config->compress_weekend = gnome_config_get_bool ("CompressWeekend=1");
- config->show_event_end = gnome_config_get_bool ("ShowEventEndTime=1");
-
- gnome_config_pop_prefix ();
-
-
- /* 'DateNavigator' settings. */
- prefix = g_strdup_printf ("=%s/config/Calendar=/DateNavigator/",
- evolution_dir);
- gnome_config_push_prefix (prefix);
- g_free (prefix);
-
- config->dnav_show_week_no = gnome_config_get_bool ("ShowWeekNumbers=0");
-
- gnome_config_pop_prefix ();
-
-
- gnome_config_sync ();
-}
-
-
-void
-calendar_config_write (void)
-{
- gchar *prefix;
-
- /* 'Display' settings. */
- prefix = g_strdup_printf ("=%s/config/Calendar=/Display/",
- evolution_dir);
- gnome_config_push_prefix (prefix);
- g_free (prefix);
-
- gnome_config_set_int ("WorkingDays", config->working_days);
- gnome_config_set_bool ("Use24HourFormat", config->use_24_hour_format);
- gnome_config_set_int ("WeekStartDay", config->week_start_day);
- gnome_config_set_int ("DayStartHour", config->day_start_hour);
- gnome_config_set_int ("DayStartMinute", config->day_start_minute);
- gnome_config_set_int ("DayEndHour", config->day_end_hour);
- gnome_config_set_int ("DayEndMinute", config->day_end_minute);
- gnome_config_set_bool ("CompressWeekend", config->compress_weekend);
- gnome_config_set_bool ("ShowEventEndTime", config->show_event_end);
-
- gnome_config_pop_prefix ();
-
-
- /* 'DateNavigator' settings. */
- prefix = g_strdup_printf ("=%s/config/Calendar=/DateNavigator/",
- evolution_dir);
- gnome_config_push_prefix (prefix);
- g_free (prefix);
-
- gnome_config_set_bool ("ShowWeekNumbers", config->dnav_show_week_no);
-
- gnome_config_pop_prefix ();
-
-
- gnome_config_sync ();
-}
-
-
-void
-calendar_config_write_on_exit (void)
-{
- gchar *prefix;
-
- /* 'Display' settings. */
- prefix = g_strdup_printf ("=%s/config/Calendar=/Display/",
- evolution_dir);
- gnome_config_push_prefix (prefix);
- g_free (prefix);
-
- gnome_config_set_int ("View", config->view);
- gnome_config_set_int ("TimeDivisions", config->time_divisions);
- gnome_config_set_float ("HPanePosition", config->hpane_pos);
- gnome_config_set_float ("VPanePosition", config->vpane_pos);
- gnome_config_set_float ("MonthHPanePosition", config->month_hpane_pos);
- gnome_config_set_float ("MonthVPanePosition", config->month_vpane_pos);
-
- gnome_config_pop_prefix ();
-
-
- gnome_config_sync ();
-}
-
-
-/*
- * Calendar Settings.
- */
-
-/* Whether we use 24-hour format or 12-hour format (AM/PM). */
-gboolean
-calendar_config_get_24_hour_format (void)
-{
- return config->use_24_hour_format;
-}
-
-
-void
-calendar_config_set_24_hour_format (gboolean use_24_hour)
-{
- config->use_24_hour_format = use_24_hour;
-}
-
-
-/* The start day of the week (0 = Sun to 6 = Mon). */
-gint
-calendar_config_get_week_start_day (void)
-{
- return config->week_start_day;
-}
-
-
-void
-calendar_config_set_week_start_day (gint week_start_day)
-{
- config->week_start_day = week_start_day;
-}
-
-
-/* The start and end times of the work-day. */
-gint
-calendar_config_get_day_start_hour (void)
-{
- return config->day_start_hour;
-}
-
-
-void
-calendar_config_set_day_start_hour (gint day_start_hour)
-{
- config->day_start_hour = day_start_hour;
-}
-
-
-gint
-calendar_config_get_day_start_minute (void)
-{
- return config->day_start_minute;
-}
-
-
-void
-calendar_config_set_day_start_minute (gint day_start_min)
-{
- config->day_start_minute = day_start_min;
-}
-
-
-gint
-calendar_config_get_day_end_hour (void)
-{
- return config->day_end_hour;
-}
-
-
-void
-calendar_config_set_day_end_hour (gint day_end_hour)
-{
- config->day_end_hour = day_end_hour;
-}
-
-
-gint
-calendar_config_get_day_end_minute (void)
-{
- return config->day_end_minute;
-}
-
-
-void
-calendar_config_set_day_end_minute (gint day_end_min)
-{
- config->day_end_minute = day_end_min;
-}
-
-
-/* The time divisions in the Day/Work-Week view in minutes (5/10/15/30/60). */
-gint
-calendar_config_get_time_divisions (void)
-{
- return config->time_divisions;
-}
-
-
-void
-calendar_config_set_time_divisions (gint divisions)
-{
- config->time_divisions = divisions;
-}
-
-
-/* Whether we show week numbers in the Date Navigator. */
-gboolean
-calendar_config_get_dnav_show_week_no (void)
-{
- return config->dnav_show_week_no;
-}
-
-
-void
-calendar_config_set_dnav_show_week_no (gboolean show_week_no)
-{
- config->dnav_show_week_no = show_week_no;
-}
-
-
-/* The view to show on start-up, 0 = Day, 1 = WorkWeek, 2 = Week, 3 = Month. */
-gint
-calendar_config_get_default_view (void)
-{
- return config->view;
-}
-
-
-void
-calendar_config_set_default_view (gint view)
-{
- config->view = view;
-}
-
-
-/* The positions of the panes in the normal and month views. */
-gfloat
-calendar_config_get_hpane_pos (void)
-{
- return config->hpane_pos;
-}
-
-
-void
-calendar_config_set_hpane_pos (gfloat hpane_pos)
-{
- config->hpane_pos = hpane_pos;
-}
-
-
-gfloat
-calendar_config_get_vpane_pos (void)
-{
- return config->vpane_pos;
-}
-
-
-void
-calendar_config_set_vpane_pos (gfloat vpane_pos)
-{
- config->vpane_pos = vpane_pos;
-}
-
-
-gfloat
-calendar_config_get_month_hpane_pos (void)
-{
- return config->month_hpane_pos;
-}
-
-
-void
-calendar_config_set_month_hpane_pos (gfloat hpane_pos)
-{
- config->month_hpane_pos = hpane_pos;
-}
-
-
-gfloat
-calendar_config_get_month_vpane_pos (void)
-{
- return config->month_vpane_pos;
-}
-
-
-void
-calendar_config_set_month_vpane_pos (gfloat vpane_pos)
-{
- config->month_vpane_pos = vpane_pos;
-}
-
-
-/* Whether we compress the weekend in the week/month views. */
-gboolean
-calendar_config_get_compress_weekend (void)
-{
- return config->compress_weekend;
-}
-
-
-void
-calendar_config_set_compress_weekend (gboolean compress)
-{
- config->compress_weekend = compress;
-}
-
-
-/* Whether we show event end times. */
-gboolean
-calendar_config_get_show_event_end (void)
-{
- return config->show_event_end;
-}
-
-
-void
-calendar_config_set_show_event_end (gboolean show_end)
-{
- config->show_event_end = show_end;
-}
-
-
-/* The working days of the week, a bit-wise combination of flags. */
-CalWeekdays
-calendar_config_get_working_days (void)
-{
- return config->working_days;
-}
-
-
-void
-calendar_config_set_working_days (CalWeekdays days)
-{
- config->working_days = days;
-}
-
-
-/* This sets all the common config settings for an ECalendar widget.
- These are the week start day, and whether we show week numbers. */
-void
-calendar_config_configure_e_calendar (ECalendar *cal)
-{
- gboolean dnav_show_week_no;
- gint week_start_day;
-
- g_return_if_fail (E_IS_CALENDAR (cal));
-
- dnav_show_week_no = calendar_config_get_dnav_show_week_no ();
-
- /* Note that this is 0 (Sun) to 6 (Sat). */
- week_start_day = calendar_config_get_week_start_day ();
-
- /* Convert it to 0 (Mon) to 6 (Sun), which is what we use. */
- week_start_day = (week_start_day + 6) % 7;
-
- gnome_canvas_item_set (GNOME_CANVAS_ITEM (cal->calitem),
- "show_week_numbers", dnav_show_week_no,
- "week_start_day", week_start_day,
- NULL);
-}
-
-
-/* This sets all the common config settings for an EDateEdit widget.
- These are the week start day, whether we show week numbers, whether we
- use 24 hour format, and the hours of the working day to use in the time
- popup. */
-void
-calendar_config_configure_e_date_edit (EDateEdit *dedit)
-{
- gboolean dnav_show_week_no, use_24_hour;
- gint week_start_day, start_hour, end_hour;
-
- g_return_if_fail (E_IS_DATE_EDIT (dedit));
-
- dnav_show_week_no = calendar_config_get_dnav_show_week_no ();
-
- /* Note that this is 0 (Sun) to 6 (Sat). */
- week_start_day = calendar_config_get_week_start_day ();
-
- /* Convert it to 0 (Mon) to 6 (Sun), which is what we use. */
- week_start_day = (week_start_day + 6) % 7;
-
- use_24_hour = calendar_config_get_24_hour_format ();
-
- start_hour = calendar_config_get_day_start_hour ();
- end_hour = calendar_config_get_day_end_hour ();
- /* Round up the end hour. */
- if (calendar_config_get_day_end_minute () != 0)
- end_hour = end_hour + 1 % 24;
-
- e_date_edit_set_week_start_day (dedit, week_start_day);
- e_date_edit_set_show_week_numbers (dedit, dnav_show_week_no);
- e_date_edit_set_use_24_hour_format (dedit, use_24_hour);
- e_date_edit_set_time_popup_range (dedit, start_hour, end_hour);
-}
-
-
-/* This sets all the common config settings for an ECellDateEdit ETable item.
- These are the settings for the ECalendar popup and the time list (if we use
- 24 hour format, and the hours of the working day). */
-void
-calendar_config_configure_e_cell_date_edit (ECellDateEdit *ecde)
-{
- gboolean use_24_hour;
- gint start_hour, end_hour;
-
- g_return_if_fail (E_IS_CELL_DATE_EDIT (ecde));
-
- calendar_config_configure_e_calendar (E_CALENDAR (ecde->calendar));
-
- use_24_hour = calendar_config_get_24_hour_format ();
-
- start_hour = calendar_config_get_day_start_hour ();
- end_hour = calendar_config_get_day_end_hour ();
- /* Round up the end hour. */
- if (calendar_config_get_day_end_minute () != 0)
- end_hour = end_hour + 1 % 24;
-
- e_cell_date_edit_freeze (ecde);
- gtk_object_set (GTK_OBJECT (ecde),
- "use_24_hour_format", use_24_hour,
- "lower_hour", start_hour,
- "upper_hour", end_hour,
- NULL);
- e_cell_date_edit_thaw (ecde);
-}
-
-
-/* This sets all the common config settings for an ECalendarTable widget.
- These are the settings for the ECalendar popup and the time list (if we use
- 24 hour format, and the hours of the working day). */
-void
-calendar_config_configure_e_calendar_table (ECalendarTable *cal_table)
-{
- CalendarModel *model;
- gboolean use_24_hour;
-
- g_return_if_fail (E_IS_CALENDAR_TABLE (cal_table));
-
- use_24_hour = calendar_config_get_24_hour_format ();
-
- model = e_calendar_table_get_model (cal_table);
- calendar_model_set_use_24_hour_format (model, use_24_hour);
-
- calendar_config_configure_e_cell_date_edit (cal_table->dates_cell);
-}
diff --git a/calendar/gui/calendar-config.h b/calendar/gui/calendar-config.h
deleted file mode 100644
index fb19ba2cc5..0000000000
--- a/calendar/gui/calendar-config.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 2000, Helix Code, Inc.
- * Copyright 2000, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * calendar-config.h - functions to load/save/get/set user settings.
- */
-
-#ifndef _CALENDAR_CONFIG_H_
-#define _CALENDAR_CONFIG_H_
-
-#include <widgets/misc/e-calendar.h>
-#include <widgets/misc/e-dateedit.h>
-#include <widgets/misc/e-cell-date-edit.h>
-#include "e-calendar-table.h"
-
-
-/* These are used to get/set the working days in the week. The bit-flags are
- combined together. The bits must be from 0 (Sun) to 6 (Sat) to match the
- day values used by localtime etc. */
-typedef enum
-{
- CAL_SUNDAY = 1 << 0,
- CAL_MONDAY = 1 << 1,
- CAL_TUESDAY = 1 << 2,
- CAL_WEDNESDAY = 1 << 3,
- CAL_THURSDAY = 1 << 4,
- CAL_FRIDAY = 1 << 5,
- CAL_SATURDAY = 1 << 6
-} CalWeekdays;
-
-
-
-void calendar_config_init (void);
-void calendar_config_write (void);
-void calendar_config_write_on_exit (void);
-
-
-/*
- * Calendar Settings.
- */
-
-/* The working days of the week, a bit-wise combination of flags. */
-CalWeekdays calendar_config_get_working_days (void);
-void calendar_config_set_working_days (CalWeekdays days);
-
-/* The start day of the week (0 = Sun to 6 = Sat). */
-gint calendar_config_get_week_start_day (void);
-void calendar_config_set_week_start_day (gint week_start_day);
-
-/* The start and end times of the work-day. */
-gint calendar_config_get_day_start_hour (void);
-void calendar_config_set_day_start_hour (gint day_start_hour);
-
-gint calendar_config_get_day_start_minute (void);
-void calendar_config_set_day_start_minute (gint day_start_min);
-
-gint calendar_config_get_day_end_hour (void);
-void calendar_config_set_day_end_hour (gint day_end_hour);
-
-gint calendar_config_get_day_end_minute (void);
-void calendar_config_set_day_end_minute (gint day_end_min);
-
-/* Whether we use 24-hour format or 12-hour format (AM/PM). */
-gboolean calendar_config_get_24_hour_format (void);
-void calendar_config_set_24_hour_format (gboolean use_24_hour);
-
-/* The time divisions in the Day/Work-Week view in minutes (5/10/15/30/60). */
-gint calendar_config_get_time_divisions (void);
-void calendar_config_set_time_divisions (gint divisions);
-
-/* Whether we show event end times. */
-gboolean calendar_config_get_show_event_end (void);
-void calendar_config_set_show_event_end (gboolean show_end);
-
-/* Whether we compress the weekend in the week/month views. */
-gboolean calendar_config_get_compress_weekend (void);
-void calendar_config_set_compress_weekend (gboolean compress);
-
-/* Whether we show week numbers in the Date Navigator. */
-gboolean calendar_config_get_dnav_show_week_no (void);
-void calendar_config_set_dnav_show_week_no (gboolean show_week_no);
-
-/* The view to show on start-up, 0 = Day, 1 = WorkWeek, 2 = Week, 3 = Month. */
-gint calendar_config_get_default_view (void);
-void calendar_config_set_default_view (gint view);
-
-/* The positions of the panes in the normal and month views. */
-gfloat calendar_config_get_hpane_pos (void);
-void calendar_config_set_hpane_pos (gfloat hpane_pos);
-
-gfloat calendar_config_get_vpane_pos (void);
-void calendar_config_set_vpane_pos (gfloat vpane_pos);
-
-gfloat calendar_config_get_month_hpane_pos (void);
-void calendar_config_set_month_hpane_pos (gfloat hpane_pos);
-
-gfloat calendar_config_get_month_vpane_pos (void);
-void calendar_config_set_month_vpane_pos (gfloat vpane_pos);
-
-
-/* Convenience functions to configure common properties of ECalendar,
- EDateEdit & ECalendarTable widgets, and the ECellDateEdit ETable cell. */
-void calendar_config_configure_e_calendar (ECalendar *cal);
-void calendar_config_configure_e_date_edit (EDateEdit *dedit);
-void calendar_config_configure_e_calendar_table (ECalendarTable *cal_table);
-void calendar_config_configure_e_cell_date_edit (ECellDateEdit *ecde);
-
-#endif /* _CALENDAR_CONFIG_H_ */
diff --git a/calendar/gui/calendar-model.c b/calendar/gui/calendar-model.c
deleted file mode 100644
index d3b95e5054..0000000000
--- a/calendar/gui/calendar-model.c
+++ /dev/null
@@ -1,2234 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/* Evolution calendar - Data model for ETable
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Authors: Federico Mena-Quintero <federico@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-
-#include <math.h>
-#include <sys/types.h>
-
-/* We need this for strptime. */
-#define _XOPEN_SOURCE 500
-#define __USE_XOPEN
-#include <time.h>
-#include <sys/time.h>
-#undef _XOPEN_SOURCE
-#undef __USE_XOPEN
-
-#include <ctype.h>
-
-#include <libgnomeui/gnome-messagebox.h>
-#include <libgnomeui/gnome-stock.h>
-#include <libgnome/gnome-i18n.h>
-#include <gal/widgets/e-unicode.h>
-#include <e-util/e-time-utils.h>
-#include <cal-util/timeutil.h>
-#include "calendar-model.h"
-#include "calendar-commands.h"
-
-
-/* Private part of the ECalendarModel structure */
-struct _CalendarModelPrivate {
- /* Calendar client we are using */
- CalClient *client;
-
- /* Types of objects we are dealing with */
- CalObjType type;
-
- /* Array of pointers to calendar objects */
- GArray *objects;
-
- /* UID -> array index hash */
- GHashTable *uid_index_hash;
-
- /* Type of components to create when using click-to-add in the table */
- CalComponentVType new_comp_vtype;
-
- /* Whether we display dates in 24-hour format. */
- gboolean use_24_hour_format;
-
- /* The default category to use when creating new tasks, e.g. when the
- filter is set to a certain category we use that category when
- creating a new task. */
- gchar *default_category;
-
- /* A balanced tree of the categories used by all the tasks/events. */
- GTree *categories;
-};
-
-enum {
- CATEGORIES_CHANGED,
- LAST_SIGNAL
-};
-
-static gint calendar_model_signals [LAST_SIGNAL] = { 0 };
-
-
-
-static void calendar_model_class_init (CalendarModelClass *class);
-static void calendar_model_init (CalendarModel *model);
-static void calendar_model_destroy (GtkObject *object);
-
-static int calendar_model_column_count (ETableModel *etm);
-static int calendar_model_row_count (ETableModel *etm);
-static void *calendar_model_value_at (ETableModel *etm, int col, int row);
-static void calendar_model_set_value_at (ETableModel *etm, int col, int row, const void *value);
-static gboolean calendar_model_is_cell_editable (ETableModel *etm, int col, int row);
-static void calendar_model_append_row (ETableModel *etm, ETableModel *source, gint row);
-static void *calendar_model_duplicate_value (ETableModel *etm, int col, const void *value);
-static void calendar_model_free_value (ETableModel *etm, int col, void *value);
-static void *calendar_model_initialize_value (ETableModel *etm, int col);
-static gboolean calendar_model_value_is_empty (ETableModel *etm, int col, const void *value);
-static char * calendar_model_value_to_string (ETableModel *etm, int col, const void *value);
-static void load_objects (CalendarModel *model);
-static int remove_object (CalendarModel *model, const char *uid);
-static void ensure_task_complete (CalComponent *comp,
- time_t completed_date);
-static void ensure_task_not_complete (CalComponent *comp);
-static void calendar_model_collect_all_categories (CalendarModel *model);
-static gboolean calendar_model_collect_categories (CalendarModel *model,
- CalComponent *comp);
-
-static ETableModelClass *parent_class;
-
-
-
-/**
- * calendar_model_get_type:
- * @void:
- *
- * Registers the #CalendarModel class if necessary, and returns the type ID
- * associated to it.
- *
- * Return value: The type ID of the #CalendarModel class.
- **/
-GtkType
-calendar_model_get_type (void)
-{
- static GtkType calendar_model_type = 0;
-
- if (!calendar_model_type) {
- static GtkTypeInfo calendar_model_info = {
- "CalendarModel",
- sizeof (CalendarModel),
- sizeof (CalendarModelClass),
- (GtkClassInitFunc) calendar_model_class_init,
- (GtkObjectInitFunc) calendar_model_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- calendar_model_type = gtk_type_unique (E_TABLE_MODEL_TYPE, &calendar_model_info);
- }
-
- return calendar_model_type;
-}
-
-/* Class initialization function for the calendar table model */
-static void
-calendar_model_class_init (CalendarModelClass *class)
-{
- GtkObjectClass *object_class;
- ETableModelClass *etm_class;
-
- object_class = (GtkObjectClass *) class;
- etm_class = (ETableModelClass *) class;
-
- parent_class = gtk_type_class (E_TABLE_MODEL_TYPE);
-
- calendar_model_signals [CATEGORIES_CHANGED] =
- gtk_signal_new ("categories-changed",
- GTK_RUN_LAST, object_class->type,
- GTK_SIGNAL_OFFSET (CalendarModelClass,
- categories_changed),
- gtk_signal_default_marshaller,
- GTK_TYPE_NONE, 0);
-
- gtk_object_class_add_signals (object_class, calendar_model_signals,
- LAST_SIGNAL);
-
- object_class->destroy = calendar_model_destroy;
-
- etm_class->column_count = calendar_model_column_count;
- etm_class->row_count = calendar_model_row_count;
- etm_class->value_at = calendar_model_value_at;
- etm_class->set_value_at = calendar_model_set_value_at;
- etm_class->is_cell_editable = calendar_model_is_cell_editable;
- etm_class->append_row = calendar_model_append_row;
- etm_class->duplicate_value = calendar_model_duplicate_value;
- etm_class->free_value = calendar_model_free_value;
- etm_class->initialize_value = calendar_model_initialize_value;
- etm_class->value_is_empty = calendar_model_value_is_empty;
- etm_class->value_to_string = calendar_model_value_to_string;
-
- class->categories_changed = NULL;
-}
-
-/* Object initialization function for the calendar table model */
-static void
-calendar_model_init (CalendarModel *model)
-{
- CalendarModelPrivate *priv;
-
- priv = g_new0 (CalendarModelPrivate, 1);
- model->priv = priv;
-
- priv->objects = g_array_new (FALSE, TRUE, sizeof (CalComponent *));
- priv->uid_index_hash = g_hash_table_new (g_str_hash, g_str_equal);
- priv->new_comp_vtype = CAL_COMPONENT_EVENT;
- priv->use_24_hour_format = TRUE;
-
- priv->categories = g_tree_new ((GCompareFunc)strcmp);
-}
-
-/* Called from g_hash_table_foreach_remove(), frees a stored UID->index
- * mapping.
- */
-static gboolean
-free_uid_index (gpointer key, gpointer value, gpointer data)
-{
- int *idx;
-
- idx = value;
- g_free (idx);
-
- return TRUE;
-}
-
-/* Frees the objects stored in the calendar model */
-static void
-free_objects (CalendarModel *model)
-{
- CalendarModelPrivate *priv;
- int i;
-
- priv = model->priv;
-
- g_hash_table_foreach_remove (priv->uid_index_hash, free_uid_index, NULL);
-
- for (i = 0; i < priv->objects->len; i++) {
- CalComponent *comp;
-
- comp = g_array_index (priv->objects, CalComponent *, i);
- g_assert (comp != NULL);
- gtk_object_unref (GTK_OBJECT (comp));
- }
-
- g_array_set_size (priv->objects, 0);
-}
-
-/* Destroy handler for the calendar table model */
-static void
-calendar_model_destroy (GtkObject *object)
-{
- CalendarModel *model;
- CalendarModelPrivate *priv;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (IS_CALENDAR_MODEL (object));
-
- model = CALENDAR_MODEL (object);
- priv = model->priv;
-
- /* Free the calendar client interface object */
-
- if (priv->client) {
- gtk_signal_disconnect_by_data (GTK_OBJECT (priv->client), model);
- gtk_object_unref (GTK_OBJECT (priv->client));
- priv->client = NULL;
- }
-
- /* Free the uid->index hash data and the array of UIDs */
-
- free_objects (model);
-
- g_hash_table_destroy (priv->uid_index_hash);
- priv->uid_index_hash = NULL;
-
- g_array_free (priv->objects, TRUE);
- priv->objects = NULL;
-
- g_free (priv->default_category);
-
- /* We only need to free the first argument, the key, so g_free will do.
- */
- g_tree_traverse (priv->categories, (GTraverseFunc) g_free,
- G_PRE_ORDER, NULL);
- g_tree_destroy (priv->categories);
-
- /* Free the private structure */
-
- g_free (priv);
- model->priv = NULL;
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-
-
-/* ETableModel methods */
-
-/* column_count handler for the calendar table model */
-static int
-calendar_model_column_count (ETableModel *etm)
-{
- return CAL_COMPONENT_FIELD_NUM_FIELDS;
-}
-
-/* row_count handler for the calendar table model */
-static int
-calendar_model_row_count (ETableModel *etm)
-{
- CalendarModel *model;
- CalendarModelPrivate *priv;
-
- model = CALENDAR_MODEL (etm);
- priv = model->priv;
-
- return priv->objects->len;
-}
-
-/* Creates a nice string representation of a time value. If show_midnight is
- FALSE, and the time is midnight, then we just show the date. */
-static char*
-get_time_t (CalendarModel *model, time_t *t, gboolean show_midnight)
-{
- static char buffer[64];
- struct tm *tmp_tm;
-
- if (*t <= 0) {
- buffer[0] = '\0';
- } else {
- tmp_tm = localtime (t);
- e_time_format_date_and_time (tmp_tm,
- model->priv->use_24_hour_format,
- show_midnight, FALSE,
- buffer, sizeof (buffer));
- }
-
- return buffer;
-}
-
-/* Builds a string based on the list of CATEGORIES properties of a calendar
- * component.
- */
-static char *
-get_categories (CalComponent *comp)
-{
- const char *categories;
-
- cal_component_get_categories (comp, &categories);
-
- return categories ? (char*) categories : "";
-}
-
-/* Returns a string based on the CLASSIFICATION property of a calendar component */
-static char *
-get_classification (CalComponent *comp)
-{
- CalComponentClassification classif;
-
- cal_component_get_classification (comp, &classif);
-
- switch (classif) {
- case CAL_COMPONENT_CLASS_NONE:
- return "";
-
- case CAL_COMPONENT_CLASS_PUBLIC:
- return _("Public");
-
- case CAL_COMPONENT_CLASS_PRIVATE:
- return _("Private");
-
- case CAL_COMPONENT_CLASS_CONFIDENTIAL:
- return _("Confidential");
-
- case CAL_COMPONENT_CLASS_UNKNOWN:
- return _("Unknown");
-
- default:
- g_assert_not_reached ();
- return "";
- }
-}
-
-/* Builds a string for the COMPLETED property of a calendar component */
-static char *
-get_completed (CalendarModel *model,
- CalComponent *comp)
-{
- struct icaltimetype *completed;
- time_t t;
-
- cal_component_get_completed (comp, &completed);
-
- if (!completed)
- t = 0;
- else {
- t = icaltime_as_timet (*completed);
- cal_component_free_icaltimetype (completed);
- }
-
- return get_time_t (model, &t, TRUE);
-}
-
-/* Builds a string for and frees a date/time value */
-static char *
-get_and_free_datetime (CalendarModel *model, CalComponentDateTime dt)
-{
- time_t t;
-
- if (!dt.value)
- t = 0;
- else
- t = icaltime_as_timet (*dt.value);
-
- cal_component_free_datetime (&dt);
-
- return get_time_t (model, &t, TRUE);
-}
-
-/* Builds a string for the DTEND property of a calendar component */
-static char *
-get_dtend (CalendarModel *model, CalComponent *comp)
-{
- CalComponentDateTime dt;
-
- cal_component_get_dtend (comp, &dt);
- return get_and_free_datetime (model, dt);
-}
-
-/* Builds a string for the DTSTART property of a calendar component */
-static char *
-get_dtstart (CalendarModel *model, CalComponent *comp)
-{
- CalComponentDateTime dt;
-
- cal_component_get_dtstart (comp, &dt);
- return get_and_free_datetime (model, dt);
-}
-
-/* Builds a string for the DUE property of a calendar component */
-static char *
-get_due (CalendarModel *model, CalComponent *comp)
-{
- CalComponentDateTime dt;
-
- cal_component_get_due (comp, &dt);
- return get_and_free_datetime (model, dt);
-}
-
-/* Builds a string for the GEO property of a calendar component */
-static char*
-get_geo (CalComponent *comp)
-{
- struct icalgeotype *geo;
- static gchar buf[32];
-
- cal_component_get_geo (comp, &geo);
-
- if (!geo)
- buf[0] = '\0';
- else {
- g_snprintf (buf, sizeof (buf), "%g %s, %g %s",
- fabs (geo->lat),
- geo->lat >= 0.0 ? _("N") : _("S"),
- fabs (geo->lon),
- geo->lon >= 0.0 ? _("E") : _("W"));
- cal_component_free_geo (geo);
- }
-
- return buf;
-}
-
-/* Builds a string for the PERCENT property of a calendar component */
-static char *
-get_percent (CalComponent *comp)
-{
- int *percent;
- static char buf[32];
-
- cal_component_get_percent (comp, &percent);
-
- if (!percent)
- buf[0] = '\0';
- else {
- g_snprintf (buf, sizeof (buf), "%d%%", *percent);
- cal_component_free_percent (percent);
- }
-
- return buf;
-}
-
-/* Builds a string for the PRIORITY property of a calendar component */
-static char *
-get_priority (CalComponent *comp)
-{
- int *priority;
- char *retval;
-
- cal_component_get_priority (comp, &priority);
-
- if (!priority || *priority == 0)
- retval = "";
- else if (*priority <= 4)
- retval = _("High");
- else if (*priority == 5)
- retval = _("Normal");
- else
- retval = _("Low");
-
- if (priority)
- cal_component_free_priority (priority);
-
- return retval;
-}
-
-/* Builds a string for the SUMMARY property of a calendar component */
-static char *
-get_summary (CalComponent *comp)
-{
- CalComponentText summary;
-
- cal_component_get_summary (comp, &summary);
-
- if (summary.value)
- return (char *) summary.value;
- else
- return "";
-}
-
-/* Builds a string for the TRANSPARENCY property of a calendar component */
-static char *
-get_transparency (CalComponent *comp)
-{
- CalComponentTransparency transp;
-
- cal_component_get_transparency (comp, &transp);
-
- switch (transp) {
- case CAL_COMPONENT_TRANSP_NONE:
- case CAL_COMPONENT_TRANSP_UNKNOWN:
- return "";
-
- case CAL_COMPONENT_TRANSP_TRANSPARENT:
- return _("Transparent");
-
- case CAL_COMPONENT_TRANSP_OPAQUE:
- return _("Opaque");
-
- default:
- g_assert_not_reached ();
- return NULL;
- }
-}
-
-/* Builds a string for the URL property of a calendar component */
-static char *
-get_url (CalComponent *comp)
-{
- const char *url;
-
- cal_component_get_url (comp, &url);
-
- if (url)
- return (char *) url;
- else
- return "";
-}
-
-/* Returns whether the completion date has been set on a component */
-static gboolean
-get_is_complete (CalComponent *comp)
-{
- struct icaltimetype *t;
- gboolean retval;
-
- cal_component_get_completed (comp, &t);
- retval = (t != NULL);
-
- if (retval)
- cal_component_free_icaltimetype (t);
-
- return retval;
-}
-
-/* Returns whether a calendar component is overdue.
- *
- * FIXME: This will only get called when the component is scrolled into the
- * ETable. There should be some sort of dynamic update thingy for if a component
- * becomes overdue while it is being viewed.
- */
-static gboolean
-get_is_overdue (CalComponent *comp)
-{
- CalComponentDateTime dt;
- gboolean retval;
-
- cal_component_get_due (comp, &dt);
-
- /* First, do we have a due date? */
-
- if (!dt.value)
- retval = FALSE;
- else {
- time_t t;
-
- /* Second, is it already completed? */
-
- if (get_is_complete (comp)) {
- retval = FALSE;
- goto out;
- }
-
- /* Third, are we overdue as of right now? We use <= in the
- * comparison below so that the table entries change color
- * immediately.
- */
-
- t = icaltime_as_timet (*dt.value);
-
- if (t <= time (NULL))
- retval = TRUE;
- else
- retval = FALSE;
- }
-
- out:
-
- cal_component_free_datetime (&dt);
-
- return retval;
-}
-
-static void *
-get_status (CalComponent *comp)
-{
- icalproperty_status status;
-
- cal_component_get_status (comp, &status);
-
- switch (status) {
- case ICAL_STATUS_NONE:
- return "";
-
- case ICAL_STATUS_NEEDSACTION:
- return _("Not Started");
-
- case ICAL_STATUS_INPROCESS:
- return _("In Progress");
-
- case ICAL_STATUS_COMPLETED:
- return _("Completed");
-
- case ICAL_STATUS_CANCELLED:
- return _("Cancelled");
-
- default:
- g_assert_not_reached ();
- return NULL;
- }
-}
-
-/* value_at handler for the calendar table model */
-static void *
-calendar_model_value_at (ETableModel *etm, int col, int row)
-{
- CalendarModel *model;
- CalendarModelPrivate *priv;
- CalComponent *comp;
-
- model = CALENDAR_MODEL (etm);
- priv = model->priv;
-
- g_return_val_if_fail (col >= 0 && col < CAL_COMPONENT_FIELD_NUM_FIELDS, NULL);
- g_return_val_if_fail (row >= 0 && row < priv->objects->len, NULL);
-
- comp = g_array_index (priv->objects, CalComponent *, row);
- g_assert (comp != NULL);
-
-#if 0
- g_print ("In calendar_model_value_at: %i\n", col);
-#endif
-
- switch (col) {
- case CAL_COMPONENT_FIELD_CATEGORIES:
- return get_categories (comp);
-
- case CAL_COMPONENT_FIELD_CLASSIFICATION:
- return get_classification (comp);
-
- case CAL_COMPONENT_FIELD_COMPLETED:
- return get_completed (model, comp);
-
- case CAL_COMPONENT_FIELD_DTEND:
- return get_dtend (model, comp);
-
- case CAL_COMPONENT_FIELD_DTSTART:
- return get_dtstart (model, comp);
-
- case CAL_COMPONENT_FIELD_DUE:
- return get_due (model, comp);
-
- case CAL_COMPONENT_FIELD_GEO:
- return get_geo (comp);
-
- case CAL_COMPONENT_FIELD_PERCENT:
- return get_percent (comp);
-
- case CAL_COMPONENT_FIELD_PRIORITY:
- return get_priority (comp);
-
- case CAL_COMPONENT_FIELD_SUMMARY:
- return get_summary (comp);
-
- case CAL_COMPONENT_FIELD_TRANSPARENCY:
- return get_transparency (comp);
-
- case CAL_COMPONENT_FIELD_URL:
- return get_url (comp);
-
- case CAL_COMPONENT_FIELD_HAS_ALARMS:
- return GINT_TO_POINTER (cal_component_has_alarms (comp));
-
- case CAL_COMPONENT_FIELD_ICON:
- /* FIXME: Also support 'Assigned to me' & 'Assigned to someone
- else'. */
- if (cal_component_has_recurrences (comp))
- return GINT_TO_POINTER (1);
- else {
- icalcomponent *ical_comp;
-
- ical_comp = cal_component_get_icalcomponent (comp);
- if (icalcomponent_get_first_property (ical_comp,
- ICAL_ATTENDEE_PROPERTY) != NULL)
- {
- return GINT_TO_POINTER (2); /* Task-assigned */
- }
- else {
- return GINT_TO_POINTER (0);
- }
- }
- case CAL_COMPONENT_FIELD_COMPLETE:
- return GINT_TO_POINTER (get_is_complete (comp));
-
- case CAL_COMPONENT_FIELD_RECURRING:
- return GINT_TO_POINTER (cal_component_has_recurrences (comp));
-
- case CAL_COMPONENT_FIELD_OVERDUE:
- return GINT_TO_POINTER (get_is_overdue (comp));
-
- case CAL_COMPONENT_FIELD_COLOR:
- if (get_is_overdue (comp))
- return "red";
- else
- return NULL;
-
- case CAL_COMPONENT_FIELD_STATUS:
- return get_status (comp);
-
- default:
- g_message ("calendar_model_value_at(): Requested invalid column %d", col);
- return NULL;
- }
-}
-
-/* Returns whether a string is NULL, empty, or full of whitespace */
-static gboolean
-string_is_empty (const char *value)
-{
- const char *p;
- gboolean empty = TRUE;
-
- if (value) {
- p = value;
- while (*p) {
- if (!isspace (*p)) {
- empty = FALSE;
- break;
- }
- p++;
- }
- }
- return empty;
-}
-
-
-/* FIXME: We need to set the "transient_for" property for the dialog, but
- the model doesn't know anything about the windows. */
-static void
-show_date_warning (CalendarModel *model)
-{
- GtkWidget *dialog;
- char buffer[64], message[256], *format;
- time_t t;
- struct tm *tmp_tm;
-
- t = time (NULL);
- tmp_tm = localtime (&t);
-
- if (model->priv->use_24_hour_format)
- /* strftime format of a weekday, a date and a time, 24-hour. */
- format = _("%a %m/%d/%Y %H:%M:%S");
- else
- /* strftime format of a weekday, a date and a time, 12-hour. */
- format = _("%a %m/%d/%Y %I:%M:%S %p");
-
- strftime (buffer, sizeof (buffer), format, tmp_tm);
-
- g_snprintf (message, 256,
- _("The date must be entered in the format: \n\n%s"),
- buffer);
-
- dialog = gnome_message_box_new (message,
- GNOME_MESSAGE_BOX_ERROR,
- GNOME_STOCK_BUTTON_OK, NULL);
- gtk_widget_show (dialog);
-}
-
-/* Builds a list of categories from a comma-delimited string */
-static GSList *
-categories_from_string (const char *value)
-{
- GSList *list;
- const char *categ_start;
- const char *categ_end;
- const char *p;
-
- if (!value)
- return NULL;
-
- list = NULL;
-
- categ_start = categ_end = NULL;
-
- for (p = value; *p; p++) {
- if (categ_start) {
- if (*p == ',') {
- char *c;
-
- c = g_strndup (categ_start, categ_end - categ_start + 1);
- list = g_slist_prepend (list, c);
-
- categ_start = categ_end = NULL;
- } else if (!isspace (*p))
- categ_end = p;
- } else if (!isspace (*p) && *p != ',')
- categ_start = categ_end = p;
- }
-
- if (categ_start) {
- char *c;
-
- c = g_strndup (categ_start, categ_end - categ_start + 1);
- list = g_slist_prepend (list, c);
- }
-
- return g_slist_reverse (list);
-}
-
-/* Sets the list of categories from a comma-delimited string */
-static void
-set_categories (CalComponent *comp, const char *value)
-{
- GSList *list;
- GSList *l;
-
- list = categories_from_string (value);
-
- cal_component_set_categories_list (comp, list);
-
- for (l = list; l; l = l->next) {
- char *s;
-
- s = l->data;
- g_free (s);
- }
-
- g_slist_free (list);
-}
-
-
-/* FIXME: We won't need this eventually, since the user won't be allowed to
- * edit the field.
- */
-static void
-show_classification_warning (void)
-{
- GtkWidget *dialog;
-
- dialog = gnome_message_box_new (_("The classification must be 'Public', 'Private', 'Confidential' or 'None'"),
- GNOME_MESSAGE_BOX_ERROR,
- GNOME_STOCK_BUTTON_OK, NULL);
- gtk_widget_show (dialog);
-}
-
-
-static void
-set_classification (CalComponent *comp,
- const char *value)
-{
- CalComponentClassification classif;
-
- /* An empty string is the same as 'None'. */
- if (!value[0] || !g_strcasecmp (value, _("None")))
- classif = CAL_COMPONENT_CLASS_NONE;
- else if (!g_strcasecmp (value, _("Public")))
- classif = CAL_COMPONENT_CLASS_PUBLIC;
- else if (!g_strcasecmp (value, _("Private")))
- classif = CAL_COMPONENT_CLASS_PRIVATE;
- else if (!g_strcasecmp (value, _("Confidential")))
- classif = CAL_COMPONENT_CLASS_CONFIDENTIAL;
- else {
- show_classification_warning ();
- return;
- }
-
- cal_component_set_classification (comp, classif);
-}
-
-
-/* Called to set the "Date Completed" field. We also need to update the
- Status and Percent fields to make sure they match. */
-static void
-set_completed (CalendarModel *model, CalComponent *comp, const char *value)
-{
- ETimeParseStatus status;
- struct tm tmp_tm;
- time_t t;
-
- status = e_time_parse_date_and_time (value, &tmp_tm);
-
- if (status == E_TIME_PARSE_INVALID) {
- show_date_warning (model);
- } else if (status == E_TIME_PARSE_NONE) {
- ensure_task_not_complete (comp);
- } else {
- t = mktime (&tmp_tm);
- ensure_task_complete (comp, t);
- }
-}
-
-/* Sets a CalComponentDateTime value */
-static void
-set_datetime (CalendarModel *model, CalComponent *comp, const char *value,
- void (* set_func) (CalComponent *comp, CalComponentDateTime *dt))
-{
- ETimeParseStatus status;
- struct tm tmp_tm;
- time_t t;
-
- status = e_time_parse_date_and_time (value, &tmp_tm);
-
- if (status == E_TIME_PARSE_INVALID) {
- show_date_warning (model);
- } else if (status == E_TIME_PARSE_NONE) {
- (* set_func) (comp, NULL);
- } else {
- CalComponentDateTime dt;
- struct icaltimetype itt;
-
- t = mktime (&tmp_tm);
- itt = icaltime_from_timet (t, FALSE);
- dt.value = &itt;
- dt.tzid = NULL;
-
- (* set_func) (comp, &dt);
- }
-}
-
-/* FIXME: We need to set the "transient_for" property for the dialog, but the
- * model doesn't know anything about the windows.
- */
-static void
-show_geo_warning (void)
-{
- GtkWidget *dialog;
-
- dialog = gnome_message_box_new (_("The geographical position must be entered "
- "in the format: \n\n45.436845,125.862501"),
- GNOME_MESSAGE_BOX_ERROR,
- GNOME_STOCK_BUTTON_OK, NULL);
- gtk_widget_show (dialog);
-}
-
-/* Sets the geographical position value of a component */
-static void
-set_geo (CalComponent *comp, const char *value)
-{
- double latitude, longitude;
- int matched;
- struct icalgeotype geo;
-
- if (string_is_empty (value)) {
- cal_component_set_geo (comp, NULL);
- return;
- }
-
- matched = sscanf (value, "%lg , %lg", &latitude, &longitude);
-
- if (matched != 2) {
- show_geo_warning ();
- return;
- }
-
- geo.lat = latitude;
- geo.lon = longitude;
- cal_component_set_geo (comp, &geo);
-}
-
-/* FIXME: We need to set the "transient_for" property for the dialog, but the
- * model doesn't know anything about the windows.
- */
-static void
-show_percent_warning (void)
-{
- GtkWidget *dialog;
-
- dialog = gnome_message_box_new (_("The percent value must be between 0 and 100, inclusive"),
- GNOME_MESSAGE_BOX_ERROR,
- GNOME_STOCK_BUTTON_OK, NULL);
- gtk_widget_show (dialog);
-}
-
-/* Sets the percent value of a calendar component */
-static void
-set_percent (CalComponent *comp, const char *value)
-{
- int matched, percent;
-
- if (string_is_empty (value)) {
- cal_component_set_percent (comp, NULL);
- ensure_task_not_complete (comp);
- return;
- }
-
- matched = sscanf (value, "%i", &percent);
-
- if (matched != 1 || percent < 0 || percent > 100) {
- show_percent_warning ();
- return;
- }
-
- cal_component_set_percent (comp, &percent);
-
- if (percent == 100)
- ensure_task_complete (comp, -1);
- else
- ensure_task_not_complete (comp);
-}
-
-/* FIXME: We won't need this eventually, since the user won't be allowed to
- * edit the field.
- */
-static void
-show_priority_warning (void)
-{
- GtkWidget *dialog;
-
- dialog = gnome_message_box_new (_("The priority must be 'High', 'Normal', 'Low' or 'Undefined'."),
- GNOME_MESSAGE_BOX_ERROR,
- GNOME_STOCK_BUTTON_OK, NULL);
- gtk_widget_show (dialog);
-}
-
-/* Sets the priority of a calendar component */
-static void
-set_priority (CalComponent *comp, const char *value)
-{
- int priority;
-
- /* An empty string is the same as 'None'. */
- if (!value[0] || !g_strcasecmp (value, _("Undefined")))
- priority = 0;
- else if (!g_strcasecmp (value, _("High")))
- priority = 3;
- else if (!g_strcasecmp (value, _("Normal")))
- priority = 5;
- else if (!g_strcasecmp (value, _("Low")))
- priority = 7;
- else {
- show_priority_warning ();
- return;
- }
-
- cal_component_set_priority (comp, &priority);
-}
-
-/* Sets the summary of a calendar component */
-static void
-set_summary (CalComponent *comp, const char *value)
-{
- CalComponentText text;
-
- if (string_is_empty (value)) {
- cal_component_set_summary (comp, NULL);
- return;
- }
-
- text.value = value;
- text.altrep = NULL; /* FIXME: should we preserve the old ALTREP? */
-
- cal_component_set_summary (comp, &text);
-}
-
-/* FIXME: We won't need this eventually, since the user won't be allowed to
- * edit the field.
- */
-static void
-show_transparency_warning (void)
-{
- GtkWidget *dialog;
-
- dialog = gnome_message_box_new (_("The transparency must be 'Transparent', 'Opaque', or 'None'."),
- GNOME_MESSAGE_BOX_ERROR,
- GNOME_STOCK_BUTTON_OK, NULL);
- gtk_widget_show (dialog);
-}
-
-/* Sets the URI of a calendar component */
-static void
-set_transparency (CalComponent *comp, const char *value)
-{
- CalComponentTransparency transp;
-
- g_print ("In calendar model set_transparency: %s\n", value);
-
- /* An empty string is the same as 'None'. */
- if (!value[0] || !g_strcasecmp (value, _("None")))
- transp = CAL_COMPONENT_TRANSP_NONE;
- else if (!g_strcasecmp (value, _("Transparent")))
- transp = CAL_COMPONENT_TRANSP_TRANSPARENT;
- else if (!g_strcasecmp (value, _("Opaque"))) {
- transp = CAL_COMPONENT_TRANSP_OPAQUE;
- } else {
- show_transparency_warning ();
- return;
- }
-
- g_print (" transp: %i\n", transp);
-
- cal_component_set_transparency (comp, transp);
-}
-
-/* Sets the URI of a calendar component */
-static void
-set_url (CalComponent *comp, const char *value)
-{
- g_print ("In calendar model set_url\n");
-
- if (string_is_empty (value)) {
- cal_component_set_url (comp, NULL);
- return;
- }
-
- cal_component_set_url (comp, value);
-}
-
-/* Called to set the checkbutton field which indicates whether a task is
- complete. */
-static void
-set_complete (CalComponent *comp, const void *value)
-{
- gint state = GPOINTER_TO_INT (value);
-
- if (state) {
- ensure_task_complete (comp, -1);
- } else {
- ensure_task_not_complete (comp);
- }
-}
-
-/* Sets the status of a calendar component. */
-static void
-set_status (CalComponent *comp, const char *value)
-{
- icalproperty_status status;
- int percent;
-
- g_print ("In calendar model set_status: %s\n", value);
-
- /* An empty string is the same as 'None'. */
- if (!value[0] || !g_strcasecmp (value, _("None")))
- status = ICAL_STATUS_NONE;
- else if (!g_strcasecmp (value, _("Not Started")))
- status = ICAL_STATUS_NEEDSACTION;
- else if (!g_strcasecmp (value, _("In Progress")))
- status = ICAL_STATUS_INPROCESS;
- else if (!g_strcasecmp (value, _("Completed")))
- status = ICAL_STATUS_COMPLETED;
- else if (!g_strcasecmp (value, _("Cancelled")))
- status = ICAL_STATUS_CANCELLED;
- else {
- g_warning ("Invalid status: %s\n", value);
- return;
- }
-
- cal_component_set_status (comp, status);
-
- if (status == ICAL_STATUS_NEEDSACTION) {
- percent = 0;
- cal_component_set_percent (comp, &percent);
- cal_component_set_completed (comp, NULL);
- } else if (status == ICAL_STATUS_COMPLETED) {
- ensure_task_complete (comp, -1);
- }
-}
-
-/* set_value_at handler for the calendar table model */
-static void
-calendar_model_set_value_at (ETableModel *etm, int col, int row, const void *value)
-{
- CalendarModel *model;
- CalendarModelPrivate *priv;
- CalComponent *comp;
-
- model = CALENDAR_MODEL (etm);
- priv = model->priv;
-
- g_return_if_fail (col >= 0 && col < CAL_COMPONENT_FIELD_NUM_FIELDS);
- g_return_if_fail (row >= 0 && row < priv->objects->len);
-
- comp = g_array_index (priv->objects, CalComponent *, row);
- g_assert (comp != NULL);
-
-#if 1
- g_print ("In calendar_model_set_value_at: %i\n", col);
-#endif
-
- switch (col) {
- case CAL_COMPONENT_FIELD_CATEGORIES:
- set_categories (comp, value);
- if (calendar_model_collect_categories (model, comp)) {
- gtk_signal_emit (GTK_OBJECT (model),
- calendar_model_signals [CATEGORIES_CHANGED]);
- }
- break;
-
- case CAL_COMPONENT_FIELD_CLASSIFICATION:
- set_classification (comp, value);
- break;
-
- case CAL_COMPONENT_FIELD_COMPLETED:
- set_completed (model, comp, value);
- break;
-
- case CAL_COMPONENT_FIELD_DTEND:
- /* FIXME: Need to reset dtstart if dtend happens before it */
- set_datetime (model, comp, value, cal_component_set_dtend);
- break;
-
- case CAL_COMPONENT_FIELD_DTSTART:
- /* FIXME: Need to reset dtend if dtstart happens after it */
- set_datetime (model, comp, value, cal_component_set_dtstart);
- break;
-
- case CAL_COMPONENT_FIELD_DUE:
- set_datetime (model, comp, value, cal_component_set_due);
- break;
-
- case CAL_COMPONENT_FIELD_GEO:
- set_geo (comp, value);
- break;
-
- case CAL_COMPONENT_FIELD_PERCENT:
- set_percent (comp, value);
- break;
-
- case CAL_COMPONENT_FIELD_PRIORITY:
- set_priority (comp, value);
- break;
-
- case CAL_COMPONENT_FIELD_SUMMARY:
- set_summary (comp, value);
- break;
-
- case CAL_COMPONENT_FIELD_TRANSPARENCY:
- set_transparency (comp, value);
- break;
-
- case CAL_COMPONENT_FIELD_URL:
- set_url (comp, value);
- break;
-
- case CAL_COMPONENT_FIELD_COMPLETE:
- set_complete (comp, value);
- break;
-
- case CAL_COMPONENT_FIELD_STATUS:
- set_status (comp, value);
- break;
-
- default:
- g_message ("calendar_model_set_value_at(): Requested invalid column %d", col);
- break;
- }
-
- if (!cal_client_update_object (priv->client, comp))
- g_message ("calendar_model_set_value_at(): Could not update the object!");
-}
-
-/* is_cell_editable handler for the calendar table model */
-static gboolean
-calendar_model_is_cell_editable (ETableModel *etm, int col, int row)
-{
- CalendarModel *model;
- CalendarModelPrivate *priv;
-
- model = CALENDAR_MODEL (etm);
- priv = model->priv;
-
- g_return_val_if_fail (col >= 0 && col < CAL_COMPONENT_FIELD_NUM_FIELDS, FALSE);
-
- /* FIXME: We can't check this as 'click-to-add' passes row 0. */
- /*g_return_val_if_fail (row >= 0 && row < priv->objects->len, FALSE);*/
-
- switch (col) {
- case CAL_COMPONENT_FIELD_CATEGORIES:
- case CAL_COMPONENT_FIELD_CLASSIFICATION:
- case CAL_COMPONENT_FIELD_COMPLETED:
- case CAL_COMPONENT_FIELD_DTEND:
- case CAL_COMPONENT_FIELD_DTSTART:
- case CAL_COMPONENT_FIELD_DUE:
- case CAL_COMPONENT_FIELD_GEO:
- case CAL_COMPONENT_FIELD_PERCENT:
- case CAL_COMPONENT_FIELD_PRIORITY:
- case CAL_COMPONENT_FIELD_SUMMARY:
- case CAL_COMPONENT_FIELD_TRANSPARENCY:
- case CAL_COMPONENT_FIELD_URL:
- case CAL_COMPONENT_FIELD_COMPLETE:
- case CAL_COMPONENT_FIELD_STATUS:
- return TRUE;
-
- default:
- return FALSE;
- }
-}
-
-/* append_row handler for the calendar model */
-static void
-calendar_model_append_row (ETableModel *etm, ETableModel *source, gint row)
-{
- CalendarModel *model;
- CalendarModelPrivate *priv;
- CalComponent *comp;
-
- model = CALENDAR_MODEL (etm);
- priv = model->priv;
-
- /* FIXME: This should support other types of components, but for now it
- * is only used for the task list.
- */
- comp = cal_component_new ();
- cal_component_set_new_vtype (comp, priv->new_comp_vtype);
-
- set_categories (comp, e_table_model_value_at(source, CAL_COMPONENT_FIELD_CATEGORIES, row));
- set_classification (comp, e_table_model_value_at(source, CAL_COMPONENT_FIELD_CLASSIFICATION, row));
- set_completed (model, comp, e_table_model_value_at(source, CAL_COMPONENT_FIELD_COMPLETED, row));
- /* FIXME: Need to reset dtstart if dtend happens before it */
- set_datetime (model, comp, e_table_model_value_at(source, CAL_COMPONENT_FIELD_DTEND, row), cal_component_set_dtend);
- /* FIXME: Need to reset dtend if dtstart happens after it */
- set_datetime (model, comp, e_table_model_value_at(source, CAL_COMPONENT_FIELD_DTSTART, row), cal_component_set_dtstart);
- set_datetime (model, comp, e_table_model_value_at(source, CAL_COMPONENT_FIELD_DUE, row), cal_component_set_due);
- set_geo (comp, e_table_model_value_at(source, CAL_COMPONENT_FIELD_GEO, row));
- set_percent (comp, e_table_model_value_at(source, CAL_COMPONENT_FIELD_PERCENT, row));
- set_priority (comp, e_table_model_value_at(source, CAL_COMPONENT_FIELD_PRIORITY, row));
- set_summary (comp, e_table_model_value_at(source, CAL_COMPONENT_FIELD_SUMMARY, row));
- set_transparency (comp, e_table_model_value_at(source, CAL_COMPONENT_FIELD_TRANSPARENCY, row));
- set_url (comp, e_table_model_value_at(source, CAL_COMPONENT_FIELD_URL, row));
- set_complete (comp, e_table_model_value_at(source, CAL_COMPONENT_FIELD_COMPLETE, row));
- set_status (comp, e_table_model_value_at(source, CAL_COMPONENT_FIELD_STATUS, row));
-
- if (!cal_client_update_object (priv->client, comp)) {
- /* FIXME: Show error dialog. */
- g_message ("calendar_model_append_row(): Could not add new object!");
- }
-
- gtk_object_unref (GTK_OBJECT (comp));
-}
-
-/* Duplicates a string value */
-static char *
-dup_string (const char *value)
-{
- return g_strdup (value);
-}
-
-/* duplicate_value handler for the calendar table model */
-static void *
-calendar_model_duplicate_value (ETableModel *etm, int col, const void *value)
-{
- g_return_val_if_fail (col >= 0 && col < CAL_COMPONENT_FIELD_NUM_FIELDS, NULL);
-
- /* They are almost all dup_string()s for now, but we'll have real fields
- * later.
- */
-
- switch (col) {
- case CAL_COMPONENT_FIELD_CATEGORIES:
- case CAL_COMPONENT_FIELD_CLASSIFICATION:
- case CAL_COMPONENT_FIELD_COMPLETED:
- case CAL_COMPONENT_FIELD_DTEND:
- case CAL_COMPONENT_FIELD_DTSTART:
- case CAL_COMPONENT_FIELD_DUE:
- case CAL_COMPONENT_FIELD_GEO:
- case CAL_COMPONENT_FIELD_PERCENT:
- case CAL_COMPONENT_FIELD_PRIORITY:
- case CAL_COMPONENT_FIELD_SUMMARY:
- case CAL_COMPONENT_FIELD_TRANSPARENCY:
- case CAL_COMPONENT_FIELD_URL:
- case CAL_COMPONENT_FIELD_STATUS:
- return dup_string (value);
-
- case CAL_COMPONENT_FIELD_HAS_ALARMS:
- case CAL_COMPONENT_FIELD_ICON:
- case CAL_COMPONENT_FIELD_COMPLETE:
- case CAL_COMPONENT_FIELD_RECURRING:
- case CAL_COMPONENT_FIELD_OVERDUE:
- case CAL_COMPONENT_FIELD_COLOR:
- return (void *) value;
-
- default:
- g_message ("calendar_model_duplicate_value(): Requested invalid column %d", col);
- return NULL;
- }
-}
-
-/* free_value handler for the calendar table model */
-static void
-calendar_model_free_value (ETableModel *etm, int col, void *value)
-{
- g_return_if_fail (col >= 0 && col < CAL_COMPONENT_FIELD_NUM_FIELDS);
-
- switch (col) {
- case CAL_COMPONENT_FIELD_CATEGORIES:
- g_free (value);
-
- case CAL_COMPONENT_FIELD_CLASSIFICATION:
- return;
-
- case CAL_COMPONENT_FIELD_COMPLETED:
- case CAL_COMPONENT_FIELD_DTEND:
- case CAL_COMPONENT_FIELD_DTSTART:
- case CAL_COMPONENT_FIELD_DUE:
- case CAL_COMPONENT_FIELD_GEO:
- case CAL_COMPONENT_FIELD_PERCENT:
- case CAL_COMPONENT_FIELD_PRIORITY:
- case CAL_COMPONENT_FIELD_SUMMARY:
- case CAL_COMPONENT_FIELD_STATUS:
- g_free (value);
-
- case CAL_COMPONENT_FIELD_TRANSPARENCY:
- return;
-
- case CAL_COMPONENT_FIELD_URL:
- g_free (value);
-
- case CAL_COMPONENT_FIELD_HAS_ALARMS:
- case CAL_COMPONENT_FIELD_ICON:
- case CAL_COMPONENT_FIELD_COMPLETE:
- case CAL_COMPONENT_FIELD_RECURRING:
- case CAL_COMPONENT_FIELD_OVERDUE:
- case CAL_COMPONENT_FIELD_COLOR:
- return;
-
- default:
- g_message ("calendar_model_free_value(): Requested invalid column %d", col);
- return;
- }
-}
-
-/* Initializes a string value */
-static char *
-init_string (void)
-{
- return g_strdup ("");
-}
-
-/* initialize_value handler for the calendar table model */
-static void *
-calendar_model_initialize_value (ETableModel *etm, int col)
-{
- CalendarModel *model;
-
- g_return_val_if_fail (col >= 0 && col < CAL_COMPONENT_FIELD_NUM_FIELDS, NULL);
-
- model = CALENDAR_MODEL (etm);
-
- switch (col) {
- case CAL_COMPONENT_FIELD_CATEGORIES:
- return g_strdup (model->priv->default_category ? model->priv->default_category : "");
-
- case CAL_COMPONENT_FIELD_CLASSIFICATION:
- case CAL_COMPONENT_FIELD_COMPLETED:
- case CAL_COMPONENT_FIELD_DTEND:
- case CAL_COMPONENT_FIELD_DTSTART:
- case CAL_COMPONENT_FIELD_DUE:
- case CAL_COMPONENT_FIELD_GEO:
- case CAL_COMPONENT_FIELD_PERCENT:
- case CAL_COMPONENT_FIELD_PRIORITY:
- case CAL_COMPONENT_FIELD_SUMMARY:
- case CAL_COMPONENT_FIELD_TRANSPARENCY:
- case CAL_COMPONENT_FIELD_URL:
- case CAL_COMPONENT_FIELD_STATUS:
- return init_string ();
-
- case CAL_COMPONENT_FIELD_HAS_ALARMS:
- case CAL_COMPONENT_FIELD_ICON:
- case CAL_COMPONENT_FIELD_COMPLETE:
- case CAL_COMPONENT_FIELD_RECURRING:
- case CAL_COMPONENT_FIELD_OVERDUE:
- case CAL_COMPONENT_FIELD_COLOR:
- return NULL;
-
- default:
- g_message ("calendar_model_initialize_value(): Requested invalid column %d", col);
- return NULL;
- }
-}
-
-/* value_is_empty handler for the calendar model. This should return TRUE
- unless a significant value has been set. The 'click-to-add' feature
- checks all fields to see if any are not empty and if so it adds a new
- row, so we only want to return FALSE if we have a useful object. */
-static gboolean
-calendar_model_value_is_empty (ETableModel *etm, int col, const void *value)
-{
- g_return_val_if_fail (col >= 0 && col < CAL_COMPONENT_FIELD_NUM_FIELDS, TRUE);
-
- switch (col) {
- case CAL_COMPONENT_FIELD_CATEGORIES:
- case CAL_COMPONENT_FIELD_CLASSIFICATION: /* actually goes here, not by itself */
- case CAL_COMPONENT_FIELD_COMPLETED:
- case CAL_COMPONENT_FIELD_DTEND:
- case CAL_COMPONENT_FIELD_DTSTART:
- case CAL_COMPONENT_FIELD_DUE:
- case CAL_COMPONENT_FIELD_GEO:
- case CAL_COMPONENT_FIELD_PERCENT:
- case CAL_COMPONENT_FIELD_PRIORITY:
- case CAL_COMPONENT_FIELD_SUMMARY:
- case CAL_COMPONENT_FIELD_TRANSPARENCY:
- case CAL_COMPONENT_FIELD_URL:
- case CAL_COMPONENT_FIELD_STATUS:
- return string_is_empty (value);
-
- case CAL_COMPONENT_FIELD_HAS_ALARMS:
- case CAL_COMPONENT_FIELD_ICON:
- case CAL_COMPONENT_FIELD_COMPLETE:
- case CAL_COMPONENT_FIELD_RECURRING:
- case CAL_COMPONENT_FIELD_OVERDUE:
- case CAL_COMPONENT_FIELD_COLOR:
- return TRUE;
-
- default:
- g_message ("calendar_model_value_is_empty(): Requested invalid column %d", col);
- return TRUE;
- }
-}
-
-static char *
-calendar_model_value_to_string (ETableModel *etm, int col, const void *value)
-{
- g_return_val_if_fail (col >= 0 && col < CAL_COMPONENT_FIELD_NUM_FIELDS, NULL);
-
- switch (col) {
- case CAL_COMPONENT_FIELD_CATEGORIES:
- case CAL_COMPONENT_FIELD_CLASSIFICATION:
- case CAL_COMPONENT_FIELD_COMPLETED:
- case CAL_COMPONENT_FIELD_DTEND:
- case CAL_COMPONENT_FIELD_DTSTART:
- case CAL_COMPONENT_FIELD_DUE:
- case CAL_COMPONENT_FIELD_GEO:
- case CAL_COMPONENT_FIELD_PERCENT:
- case CAL_COMPONENT_FIELD_PRIORITY:
- case CAL_COMPONENT_FIELD_SUMMARY:
- case CAL_COMPONENT_FIELD_TRANSPARENCY:
- case CAL_COMPONENT_FIELD_URL:
- case CAL_COMPONENT_FIELD_STATUS:
- return e_utf8_from_locale_string (value);
-
- case CAL_COMPONENT_FIELD_ICON:
- if ((int)value == 0)
- return e_utf8_from_locale_string (_("Normal"));
- else if ((int)value == 1)
- return e_utf8_from_locale_string (_("Recurring"));
- else
- return e_utf8_from_locale_string (_("Assigned"));
-
- case CAL_COMPONENT_FIELD_HAS_ALARMS:
- case CAL_COMPONENT_FIELD_COMPLETE:
- case CAL_COMPONENT_FIELD_RECURRING:
- case CAL_COMPONENT_FIELD_OVERDUE:
- return e_utf8_from_locale_string (value ? _("Yes") : _("No"));
-
- case CAL_COMPONENT_FIELD_COLOR:
- return NULL;
-
- default:
- g_message ("calendar_model_value_as_string(): Requested invalid column %d", col);
- return NULL;
- }
-}
-
-
-
-/**
- * calendar_model_new:
- *
- * Creates a new calendar model. It must be told about the calendar client
- * interface object it will monitor with calendar_model_set_cal_client().
- *
- * Return value: A newly-created calendar model.
- **/
-CalendarModel *
-calendar_model_new (void)
-{
- return CALENDAR_MODEL (gtk_type_new (TYPE_CALENDAR_MODEL));
-}
-
-
-/* Callback used when a calendar is opened into the server */
-static void
-cal_opened_cb (CalClient *client, CalClientOpenStatus status, gpointer data)
-{
- CalendarModel *model;
-
- model = CALENDAR_MODEL (data);
-
- e_table_model_pre_change (E_TABLE_MODEL (model));
-
- if (status == CAL_CLIENT_OPEN_SUCCESS) {
- load_objects (model);
- calendar_model_collect_all_categories (model);
- }
-
- e_table_model_changed (E_TABLE_MODEL (model));
-}
-
-
-/* Removes an object from the model and updates all the indices that follow.
- * Returns the index of the object that was removed, or -1 if no object with
- * such UID was found.
- */
-static int
-remove_object (CalendarModel *model, const char *uid)
-{
- CalendarModelPrivate *priv;
- int *idx;
- CalComponent *orig_comp;
- int i;
- int n;
-
- priv = model->priv;
-
- /* Find the index of the object to be removed */
-
- idx = g_hash_table_lookup (priv->uid_index_hash, uid);
- if (!idx)
- return -1;
-
- orig_comp = g_array_index (priv->objects, CalComponent *, *idx);
- g_assert (orig_comp != NULL);
-
- /* Decrease the indices of all the objects that follow in the array */
-
- for (i = *idx + 1; i < priv->objects->len; i++) {
- CalComponent *comp;
- int *comp_idx;
- const char *comp_uid;
-
- comp = g_array_index (priv->objects, CalComponent *, i);
- g_assert (comp != NULL);
-
- cal_component_get_uid (comp, &comp_uid);
-
- comp_idx = g_hash_table_lookup (priv->uid_index_hash, comp_uid);
- g_assert (comp_idx != NULL);
-
- (*comp_idx)--;
- g_assert (*comp_idx >= 0);
- }
-
- /* Remove this object from the array and hash */
-
- g_hash_table_remove (priv->uid_index_hash, uid);
- g_array_remove_index (priv->objects, *idx);
-
- gtk_object_unref (GTK_OBJECT (orig_comp));
-
- n = *idx;
- g_free (idx);
-
- return n;
-}
-
-/* Returns whether a component's type matches the types we support */
-static gboolean
-matches_type (CalObjType type, CalComponentVType vtype)
-{
- return ((vtype == CAL_COMPONENT_EVENT && (type & CALOBJ_TYPE_EVENT))
- || (vtype == CAL_COMPONENT_TODO && (type & CALOBJ_TYPE_TODO))
- || (vtype == CAL_COMPONENT_JOURNAL && (type & CALOBJ_TYPE_JOURNAL)));
-}
-
-/* Callback used when an object is updated in the server */
-static void
-obj_updated_cb (CalClient *client, const char *uid, gpointer data)
-{
- CalendarModel *model;
- CalendarModelPrivate *priv;
- int orig_idx;
- CalComponent *new_comp;
- CalComponentVType new_comp_vtype;
- const char *new_comp_uid;
- int *new_idx;
- CalClientGetStatus status;
-
- g_print ("In calendar model obj_updated_cb\n");
-
- model = CALENDAR_MODEL (data);
- priv = model->priv;
-
- orig_idx = remove_object (model, uid);
-
- status = cal_client_get_object (priv->client, uid, &new_comp);
-
- switch (status) {
- case CAL_CLIENT_GET_SUCCESS:
- /* Check if we are interested in this type of object */
-
- new_comp_vtype = cal_component_get_vtype (new_comp);
- if (!matches_type (priv->type, new_comp_vtype)) {
- gtk_object_unref (GTK_OBJECT (new_comp));
- break;
- }
-
- /* Insert the object into the model */
-
- cal_component_get_uid (new_comp, &new_comp_uid);
-
- if (orig_idx == -1) {
- /* The object not in the model originally, so we just append it */
-
- g_array_append_val (priv->objects, new_comp);
-
- new_idx = g_new (int, 1);
- *new_idx = priv->objects->len - 1;
-
- g_hash_table_insert (priv->uid_index_hash, (char *) new_comp_uid, new_idx);
- e_table_model_row_inserted (E_TABLE_MODEL (model), *new_idx);
- } else {
- int i;
-
- /* Insert the new version of the object in its old position */
-
- g_array_insert_val (priv->objects, orig_idx, new_comp);
-
- new_idx = g_new (int, 1);
- *new_idx = orig_idx;
- g_hash_table_insert (priv->uid_index_hash, (char *) new_comp_uid, new_idx);
-
- /* Increase the indices of all subsequent objects */
-
- for (i = orig_idx + 1; i < priv->objects->len; i++) {
- CalComponent *comp;
- int *comp_idx;
- const char *comp_uid;
-
- comp = g_array_index (priv->objects, CalComponent *, i);
- g_assert (comp != NULL);
-
- cal_component_get_uid (comp, &comp_uid);
-
- comp_idx = g_hash_table_lookup (priv->uid_index_hash, comp_uid);
- g_assert (comp_idx != NULL);
-
- (*comp_idx)++;
- }
-
- e_table_model_row_changed (E_TABLE_MODEL (model), *new_idx);
- }
-
- /* See if we need to add any categories. Note that old
- categories won't be removed, but I don't think that matters
- too much here. */
- if (calendar_model_collect_categories (model, new_comp)) {
- gtk_signal_emit (GTK_OBJECT (model),
- calendar_model_signals [CATEGORIES_CHANGED]);
- }
-
- break;
-
- case CAL_CLIENT_GET_NOT_FOUND:
- /* Nothing; the object may have been removed from the server. We just
- * notify that the old object was deleted.
- */
- if (orig_idx != -1)
- e_table_model_row_deleted (E_TABLE_MODEL (model), orig_idx);
-
- break;
-
- case CAL_CLIENT_GET_SYNTAX_ERROR:
- g_message ("obj_updated_cb(): Syntax error when getting object `%s'", uid);
-
- /* Same notification as above */
- if (orig_idx != -1)
- e_table_model_row_deleted (E_TABLE_MODEL (model), orig_idx);
-
- break;
-
- default:
- g_assert_not_reached ();
- }
-
- g_print ("Out calendar model obj_updated_cb\n");
-}
-
-/* Callback used when an object is removed in the server */
-static void
-obj_removed_cb (CalClient *client, const char *uid, gpointer data)
-{
- CalendarModel *model;
- int idx;
-
- model = CALENDAR_MODEL (data);
-
- idx = remove_object (model, uid);
-
- if (idx != -1)
- e_table_model_row_deleted (E_TABLE_MODEL (model), idx);
-}
-
-/* Loads the required objects from the calendar client */
-static void
-load_objects (CalendarModel *model)
-{
- CalendarModelPrivate *priv;
- GList *uids;
- GList *l;
-
- priv = model->priv;
-
- g_assert (cal_client_get_load_state (priv->client) == CAL_CLIENT_LOAD_LOADED);
-
- uids = cal_client_get_uids (priv->client, priv->type);
-
- for (l = uids; l; l = l->next) {
- char *uid;
- CalComponent *comp;
- const char *comp_uid;
- CalClientGetStatus status;
- CalComponentVType comp_vtype;
- int *idx;
-
- uid = l->data;
- status = cal_client_get_object (priv->client, uid, &comp);
-
- switch (status) {
- case CAL_CLIENT_GET_SUCCESS:
- break;
-
- case CAL_CLIENT_GET_NOT_FOUND:
- /* Nothing; the object may have been removed from the server */
- continue;
-
- case CAL_CLIENT_GET_SYNTAX_ERROR:
- g_message ("load_objects(): Syntax error when getting object `%s'", uid);
- continue;
-
- default:
- g_assert_not_reached ();
- }
-
- /* Check if we are interested in this type of object */
-
- comp_vtype = cal_component_get_vtype (comp);
- if (!matches_type (priv->type, comp_vtype)) {
- gtk_object_unref (GTK_OBJECT (comp));
- continue;
- }
-
- /* Insert the object into the model */
-
- idx = g_new (int, 1);
-
- g_array_append_val (priv->objects, comp);
- *idx = priv->objects->len - 1;
-
- cal_component_get_uid (comp, &comp_uid);
- g_hash_table_insert (priv->uid_index_hash, (char *) comp_uid, idx);
- }
-
- cal_obj_uid_list_free (uids);
-}
-
-/**
- * calendar_model_get_cal_client:
- * @model: A calendar model.
- *
- * Queries the calendar client interface object that a calendar model is using.
- *
- * Return value: A calendar client interface object.
- **/
-CalClient *
-calendar_model_get_cal_client (CalendarModel *model)
-{
- CalendarModelPrivate *priv;
-
- g_return_val_if_fail (model != NULL, NULL);
- g_return_val_if_fail (IS_CALENDAR_MODEL (model), NULL);
-
- priv = model->priv;
-
- return priv->client;
-}
-
-
-/**
- * calendar_model_set_cal_client:
- * @model: A calendar model.
- * @client: A calendar client interface object.
- * @type: Type of objects to present.
- *
- * Sets the calendar client interface object that a calendar model will monitor.
- * It also sets the types of objects this model will present to an #ETable.
- **/
-void
-calendar_model_set_cal_client (CalendarModel *model, CalClient *client, CalObjType type)
-{
- CalendarModelPrivate *priv;
-
- g_return_if_fail (model != NULL);
- g_return_if_fail (IS_CALENDAR_MODEL (model));
-
- if (client)
- g_return_if_fail (IS_CAL_CLIENT (client));
-
- priv = model->priv;
-
- if (priv->client == client && priv->type == type)
- return;
-
- e_table_model_pre_change (E_TABLE_MODEL(model));
-
- if (client)
- gtk_object_ref (GTK_OBJECT (client));
-
- if (priv->client) {
- gtk_signal_disconnect_by_data (GTK_OBJECT (priv->client), model);
- gtk_object_unref (GTK_OBJECT (priv->client));
- }
-
- free_objects (model);
-
- priv->client = client;
- priv->type = type;
-
- if (priv->client) {
- gtk_signal_connect (GTK_OBJECT (priv->client), "obj_updated",
- GTK_SIGNAL_FUNC (obj_updated_cb), model);
- gtk_signal_connect (GTK_OBJECT (priv->client), "obj_removed",
- GTK_SIGNAL_FUNC (obj_removed_cb), model);
-
- if (cal_client_get_load_state (priv->client) != CAL_CLIENT_LOAD_LOADED)
- gtk_signal_connect (GTK_OBJECT (priv->client), "cal_opened",
- GTK_SIGNAL_FUNC (cal_opened_cb), model);
- else
- load_objects (model);
- }
-
- e_table_model_changed (E_TABLE_MODEL (model));
-}
-
-
-/**
- * calendar_model_set_new_comp_vtype:
- * @model: A calendar model.
- * @vtype: Type of calendar components to create.
- *
- * Sets the type of calendar components that will be created by a calendar table
- * model when the click-to-add functionality of the table is used.
- **/
-void
-calendar_model_set_new_comp_vtype (CalendarModel *model, CalComponentVType vtype)
-{
- CalendarModelPrivate *priv;
-
- g_return_if_fail (model != NULL);
- g_return_if_fail (IS_CALENDAR_MODEL (model));
- g_return_if_fail (vtype != CAL_COMPONENT_NO_TYPE);
-
- priv = model->priv;
- priv->new_comp_vtype = vtype;
-}
-
-/**
- * calendar_model_get_new_comp_vtype:
- * @model: A calendar model.
- *
- * Queries the type of calendar components that are created by a calendar table
- * model when using the click-to-add functionality in a table.
- *
- * Return value: Type of components that are created.
- **/
-CalComponentVType
-calendar_model_get_new_comp_vtype (CalendarModel *model)
-{
- CalendarModelPrivate *priv;
-
- g_return_val_if_fail (model != NULL, CAL_COMPONENT_NO_TYPE);
- g_return_val_if_fail (IS_CALENDAR_MODEL (model), CAL_COMPONENT_NO_TYPE);
-
- priv = model->priv;
- return priv->new_comp_vtype;
-}
-
-
-void
-calendar_model_mark_task_complete (CalendarModel *model,
- gint row)
-{
- CalendarModelPrivate *priv;
- CalComponent *comp;
-
- g_return_if_fail (model != NULL);
- g_return_if_fail (IS_CALENDAR_MODEL (model));
-
- priv = model->priv;
-
- g_return_if_fail (row >= 0 && row < priv->objects->len);
-
- comp = g_array_index (priv->objects, CalComponent *, row);
- g_assert (comp != NULL);
-
- ensure_task_complete (comp, -1);
-
- if (!cal_client_update_object (priv->client, comp))
- g_message ("calendar_model_mark_task_complete(): Could not update the object!");
-}
-
-
-/**
- * calendar_model_get_component:
- * @model: A calendar model.
- * @row: Row number of sought calendar component.
- *
- * Queries a calendar component from a calendar model based on its row number.
- *
- * Return value: The sought calendar component.
- **/
-CalComponent *
-calendar_model_get_component (CalendarModel *model,
- gint row)
-{
- CalendarModelPrivate *priv;
-
- g_return_val_if_fail (model != NULL, NULL);
- g_return_val_if_fail (IS_CALENDAR_MODEL (model), NULL);
-
- priv = model->priv;
-
- g_return_val_if_fail (row >= 0 && row < priv->objects->len, NULL);
-
- return g_array_index (priv->objects, CalComponent *, row);
-}
-
-
-/* This makes sure a task is marked as complete.
- It makes sure the "Date Completed" property is set. If the completed_date
- is not -1, then that is used, otherwise if the "Date Completed" property
- is not already set it is set to the current time.
- It makes sure the percent is set to 100, and that the status is "Completed".
- Note that this doesn't update the component on the client. */
-static void
-ensure_task_complete (CalComponent *comp,
- time_t completed_date)
-{
- struct icaltimetype *old_completed = NULL;
- struct icaltimetype new_completed;
- int *old_percent, new_percent;
- icalproperty_status status;
- gboolean set_completed = TRUE;
-
- /* Date Completed. */
- if (completed_date == -1) {
- cal_component_get_completed (comp, &old_completed);
-
- if (old_completed) {
- cal_component_free_icaltimetype (old_completed);
- set_completed = FALSE;
- } else {
- completed_date = time (NULL);
- }
- }
-
- if (set_completed) {
- new_completed = icaltime_from_timet (completed_date, FALSE);
- cal_component_set_completed (comp, &new_completed);
- }
-
- /* Percent. */
- cal_component_get_percent (comp, &old_percent);
- if (!old_percent || *old_percent != 100) {
- new_percent = 100;
- cal_component_set_percent (comp, &new_percent);
- }
- if (old_percent)
- cal_component_free_percent (old_percent);
-
- /* Status. */
- cal_component_get_status (comp, &status);
- if (status != ICAL_STATUS_COMPLETED) {
- cal_component_set_status (comp, ICAL_STATUS_COMPLETED);
- }
-}
-
-
-/* This makes sure a task is marked as incomplete. It clears the
- "Date Completed" property. If the percent is set to 100 it removes it,
- and if the status is "Completed" it sets it to "Needs Action".
- Note that this doesn't update the component on the client. */
-static void
-ensure_task_not_complete (CalComponent *comp)
-{
- icalproperty_status old_status;
- int *old_percent;
-
- /* Date Completed. */
- cal_component_set_completed (comp, NULL);
-
- /* Percent. */
- cal_component_get_percent (comp, &old_percent);
- if (old_percent && *old_percent == 100)
- cal_component_set_percent (comp, NULL);
- if (old_percent)
- cal_component_free_percent (old_percent);
-
- /* Status. */
- cal_component_get_status (comp, &old_status);
- if (old_status == ICAL_STATUS_COMPLETED)
- cal_component_set_status (comp, ICAL_STATUS_NEEDSACTION);
-}
-
-
-/* Whether we use 24 hour format to display the times. */
-gboolean
-calendar_model_get_use_24_hour_format (CalendarModel *model)
-{
- g_return_val_if_fail (IS_CALENDAR_MODEL (model), TRUE);
-
- return model->priv->use_24_hour_format;
-}
-
-
-void
-calendar_model_set_use_24_hour_format (CalendarModel *model,
- gboolean use_24_hour_format)
-{
- g_return_if_fail (IS_CALENDAR_MODEL (model));
-
- if (model->priv->use_24_hour_format != use_24_hour_format) {
- model->priv->use_24_hour_format = use_24_hour_format;
- /* Get the views to redraw themselves. */
- e_table_model_changed (E_TABLE_MODEL (model));
- }
-}
-
-
-void
-calendar_model_set_default_category (CalendarModel *model,
- gchar *default_category)
-{
- g_return_if_fail (IS_CALENDAR_MODEL (model));
-
- g_free (model->priv->default_category);
- model->priv->default_category = g_strdup (default_category);
-}
-
-
-static void
-calendar_model_collect_all_categories (CalendarModel *model)
-{
- CalendarModelPrivate *priv;
- CalComponent *comp;
- int i;
-
- priv = model->priv;
-
- /* Destroy the current tree and start from scratch. */
- g_tree_traverse (priv->categories, (GTraverseFunc) g_free,
- G_PRE_ORDER, NULL);
- g_tree_destroy (priv->categories);
-
- priv->categories = g_tree_new ((GCompareFunc)strcmp);
-
- for (i = 0; i < priv->objects->len; i++) {
- comp = g_array_index (priv->objects, CalComponent *, i);
- calendar_model_collect_categories (model, comp);
- }
-
- gtk_signal_emit (GTK_OBJECT (model),
- calendar_model_signals [CATEGORIES_CHANGED]);
-}
-
-
-static gboolean
-calendar_model_collect_categories (CalendarModel *model,
- CalComponent *comp)
-{
- CalendarModelPrivate *priv;
- GSList *categories_list, *elem;
- gboolean changed = FALSE;
-
- priv = model->priv;
-
- cal_component_get_categories_list (comp, &categories_list);
-
- for (elem = categories_list; elem; elem = elem->next) {
- if (!g_tree_lookup (priv->categories, elem->data)) {
- /* We store a '1' as the data, just so we can use
- g_tree_lookup() on it. Note that we don't free
- the string since it is now part of the tree. */
- g_tree_insert (priv->categories, elem->data,
- GINT_TO_POINTER (1));
- changed = TRUE;
- } else {
- g_free (elem->data);
- }
- }
-
- g_slist_free (categories_list);
-
- return changed;
-}
-
-
-GTree*
-calendar_model_get_categories (CalendarModel *model)
-{
- g_return_val_if_fail (IS_CALENDAR_MODEL (model), NULL);
-
- return model->priv->categories;
-}
diff --git a/calendar/gui/calendar-model.h b/calendar/gui/calendar-model.h
deleted file mode 100644
index 5ff2f41c38..0000000000
--- a/calendar/gui/calendar-model.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/* Evolution calendar - Data model for ETable
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Authors: Federico Mena-Quintero <federico@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef CALENDAR_MODEL_H
-#define CALENDAR_MODEL_H
-
-#include <libgnome/gnome-defs.h>
-#include <gal/e-table/e-table-model.h>
-#include <cal-client/cal-client.h>
-
-BEGIN_GNOME_DECLS
-
-
-
-#define TYPE_CALENDAR_MODEL (calendar_model_get_type ())
-#define CALENDAR_MODEL(obj) (GTK_CHECK_CAST ((obj), TYPE_CALENDAR_MODEL, CalendarModel))
-#define CALENDAR_MODEL_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), TYPE_CALENDAR_MODEL, \
- CalendarModelClass))
-#define IS_CALENDAR_MODEL(obj) (GTK_CHECK_TYPE ((obj), TYPE_CALENDAR_MODEL))
-#define IS_CALENDAR_MODEL_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), TYPE_CALENDAR_MODEL))
-
-typedef struct _CalendarModel CalendarModel;
-typedef struct _CalendarModelClass CalendarModelClass;
-
-typedef struct _CalendarModelPrivate CalendarModelPrivate;
-
-struct _CalendarModel {
- ETableModel model;
-
- /* Private data */
- CalendarModelPrivate *priv;
-};
-
-struct _CalendarModelClass {
- ETableModelClass parent_class;
-
- void (* categories_changed) (CalendarModel *model);
-};
-
-GtkType calendar_model_get_type (void);
-
-CalendarModel* calendar_model_new (void);
-
-CalClient* calendar_model_get_cal_client (CalendarModel *model);
-void calendar_model_set_cal_client (CalendarModel *model,
- CalClient *client,
- CalObjType type);
-
-void calendar_model_set_new_comp_vtype (CalendarModel *model,
- CalComponentVType vtype);
-CalComponentVType calendar_model_get_new_comp_vtype (CalendarModel *model);
-
-void calendar_model_mark_task_complete (CalendarModel *model,
- gint row);
-
-CalComponent* calendar_model_get_component (CalendarModel *model,
- gint row);
-
-/* Whether we use 24 hour format to display the times. */
-gboolean calendar_model_get_use_24_hour_format (CalendarModel *model);
-void calendar_model_set_use_24_hour_format (CalendarModel *model,
- gboolean use_24_hour_format);
-
-GTree* calendar_model_get_categories (CalendarModel *model);
-
-void calendar_model_set_default_category (CalendarModel *model,
- gchar *default_category);
-
-
-
-
-END_GNOME_DECLS
-
-#endif
diff --git a/calendar/gui/calendar-summary.c b/calendar/gui/calendar-summary.c
deleted file mode 100644
index 89e528716e..0000000000
--- a/calendar/gui/calendar-summary.c
+++ /dev/null
@@ -1,778 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* calendar-summary.c
- *
- * Authors: Iain Holmes <iain@ximian.com>
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <time.h>
-
-#include <bonobo/bonobo-persist-stream.h>
-#include <bonobo/bonobo-property-control.h>
-#include <bonobo/bonobo-stream-client.h>
-#include <liboaf/liboaf.h>
-
-#include <evolution-services/executive-summary-component.h>
-#include <evolution-services/executive-summary-html-view.h>
-#include <gal/widgets/e-unicode.h>
-
-#include <gnome-xml/parser.h>
-#include <gnome-xml/xmlmemory.h>
-
-#include <cal-util/cal-component.h>
-#include <cal-util/timeutil.h>
-#include "alarm-notify/alarm.h"
-#include "calendar-model.h"
-#include "calendar-summary.h"
-
-typedef struct {
- ExecutiveSummaryComponent *component;
- ExecutiveSummaryHtmlView *view;
- BonoboPropertyControl *property_control;
- CalClient *client;
-
- GtkWidget *show_appointments;
- GtkWidget *show_tasks;
-
- gboolean appointments;
- gboolean tasks;
-
- char *title;
- char *icon;
-
- guint32 idle;
-
- gpointer alarm;
-} CalSummary;
-
-enum {
- PROPERTY_TITLE,
- PROPERTY_ICON
-};
-
-extern gchar *evolution_dir;
-
-static int running_views = 0;
-static BonoboGenericFactory *factory;
-#define CALENDAR_SUMMARY_ID "OAFIID:GNOME_Evolution_Calendar_Summary_ComponentFactory"
-
-/* list_sort_merge, and list_sort are copied from GNOME-VFS.
- Author: Sven Oliver <sven.over@ob.kamp.net>
- Modified by Ettore Perazzoli <ettore@comm2000.it> to let the compare
- functions get an additional gpointer parameter.
-
- Included here as using gnome-vfs for 1 20 line function
- seems a bit of overkill.
-*/
-
-typedef gint (* CalSummaryListCompareFunc) (gconstpointer a,
- gconstpointer b,
- gpointer data);
-static GList *
-cal_list_sort_merge (GList *l1,
- GList *l2,
- CalSummaryListCompareFunc compare_func,
- gpointer data)
-{
- GList list, *l, *lprev;
-
- l = &list;
- lprev = NULL;
-
- while (l1 && l2) {
- if (compare_func (l1->data, l2->data, data) < 0) {
- l->next = l1;
- l = l->next;
- l->prev = lprev;
- lprev = l;
- l1 = l1->next;
- } else {
- l->next = l2;
- l = l->next;
- l->prev = lprev;
- lprev = l;
- l2 = l2->next;
- }
- }
-
- l->next = l1 ? l1 : l2;
- l->next->prev = l;
-
- return list.next;
-}
-
-static GList *
-cal_list_sort (GList *list,
- CalSummaryListCompareFunc compare_func,
- gpointer data)
-{
- GList *l1, *l2;
-
- if (!list)
- return NULL;
- if (!list->next)
- return list;
-
- l1 = list;
- l2 = list->next;
-
- while ((l2 = l2->next) != NULL) {
- if ((l2 = l2->next) == NULL)
- break;
- l1 = l1->next;
- }
-
- l2 = l1->next;
- l1->next = NULL;
-
- return cal_list_sort_merge (cal_list_sort (list, compare_func, data),
- cal_list_sort (l2, compare_func, data),
- compare_func, data);
-}
-
-static int
-sort_uids (gconstpointer a,
- gconstpointer b,
- gpointer user_data)
-{
- CalComponent *comp_a, *comp_b;
- CalSummary *summary = user_data;
- CalClientGetStatus status;
- CalComponentDateTime start_a, start_b;
-
- /* a after b then return > 0 */
-
- status = cal_client_get_object (summary->client, a, &comp_a);
- if (status != CAL_CLIENT_GET_SUCCESS)
- return -1;
-
- status = cal_client_get_object (summary->client, b, &comp_b);
- if (status != CAL_CLIENT_GET_SUCCESS)
- return 1;
-
- cal_component_get_dtstart (comp_a, &start_a);
- cal_component_get_dtstart (comp_b, &start_b);
-
- return icaltime_compare (*start_a.value, *start_b.value);
-}
-
-static gboolean
-generate_html_summary (gpointer data)
-{
- CalSummary *summary;
- time_t t, day_begin, day_end;
- struct tm *timeptr;
- GList *uids, *l;
- char *ret_html, *datestr;
- char *tmp, *tmp2;
-
- summary = data;
-
- t = time (NULL);
- day_begin = time_day_begin (t);
- day_end = time_day_end (t);
-
- datestr = g_new (char, 256);
- timeptr = localtime (&t);
- strftime (datestr, 255, _("%A, %e %B %Y"),
- timeptr);
- tmp = g_strdup_printf ("<b>%s</b>", datestr);
- ret_html = e_utf8_from_locale_string (tmp);
- g_free (tmp);
- g_free (datestr);
-
- if (summary->appointments) {
- tmp = ret_html;
- tmp2 = e_utf8_from_locale_string (_("Appointments"));
- ret_html = g_strconcat (tmp, "<p align=\"center\">",
- tmp2, "</p><hr><ul>", NULL);
- g_free (tmp);
- g_free (tmp2);
-
- uids = cal_client_get_objects_in_range (summary->client,
- CALOBJ_TYPE_EVENT, day_begin,
- day_end);
- uids = cal_list_sort (uids, sort_uids, summary);
-
- for (l = uids; l; l = l->next){
- CalComponent *comp;
- CalComponentText text;
- CalClientGetStatus status;
- CalComponentDateTime start, end;
- struct icaltimetype *end_time;
- time_t start_t, end_t;
- struct tm *start_tm, *end_tm;
- char *start_str, *end_str;
- char *uid;
-
- uid = l->data;
- status = cal_client_get_object (summary->client, uid, &comp);
- if (status != CAL_CLIENT_GET_SUCCESS)
- continue;
-
- cal_component_get_summary (comp, &text);
- cal_component_get_dtstart (comp, &start);
- cal_component_get_dtend (comp, &end);
-
- g_print ("text.value: %s\n", text.value);
- end_time = end.value;
-
- start_t = icaltime_as_timet (*start.value);
-
- start_str = g_new (char, 20);
- start_tm = localtime (&start_t);
- strftime (start_str, 19, _("%I:%M%p"), start_tm);
-
- if (end_time) {
- end_str = g_new (char, 20);
- end_t = icaltime_as_timet (*end_time);
- end_tm = localtime (&end_t);
- strftime (end_str, 19, _("%I:%M%p"), end_tm);
- } else {
- end_str = g_strdup ("...");
- }
-
- tmp2 = g_strdup_printf ("<li>%s:%s -> %s</li>", text.value, start_str, end_str);
- g_free (start_str);
- g_free (end_str);
-
- tmp = ret_html;
- ret_html = g_strconcat (ret_html, tmp2, NULL);
- g_free (tmp);
- g_free (tmp2);
- }
-
- cal_obj_uid_list_free (uids);
-
- tmp = ret_html;
- ret_html = g_strconcat (ret_html, "</ul>", NULL);
- g_free (tmp);
- }
-
- if (summary->tasks) {
- tmp = ret_html;
- tmp2 = e_utf8_from_locale_string (_("Tasks"));
- ret_html = g_strconcat (tmp, "<p align=\"center\">",
- tmp2, "</p><hr><ul>", NULL);
- g_free (tmp);
- g_free (tmp2);
-
- /* Generate a list of tasks */
- uids = cal_client_get_uids (summary->client, CALOBJ_TYPE_TODO);
- for (l = uids; l; l = l->next){
- CalComponent *comp;
- CalComponentText text;
- CalClientGetStatus status;
- struct icaltimetype *completed;
- char *uid;
-
- uid = l->data;
- status = cal_client_get_object (summary->client, uid, &comp);
- if (status != CAL_CLIENT_GET_SUCCESS)
- continue;
-
- cal_component_get_summary (comp, &text);
- cal_component_get_completed (comp, &completed);
-
- if (completed == NULL) {
- tmp2 = g_strdup_printf ("<li>%s</li>", text.value);
- } else {
- tmp2 = g_strdup_printf ("<li><strike>%s</strike></li>",
- text.value);
- cal_component_free_icaltimetype (completed);
- }
-
- tmp = ret_html;
- ret_html = g_strconcat (ret_html, tmp2, NULL);
- g_free (tmp);
- g_free (tmp2);
- }
-
- cal_obj_uid_list_free (uids);
-
- tmp = ret_html;
- ret_html = g_strconcat (ret_html, "</ul>", NULL);
- g_free (tmp);
- }
-
- executive_summary_html_view_set_html (summary->view, ret_html);
- g_free (ret_html);
-
- summary->idle = 0;
- return FALSE;
-}
-
-static void
-get_property (BonoboPropertyBag *bag,
- BonoboArg *arg,
- guint arg_id,
- CORBA_Environment *ev,
- gpointer data)
-{
- CalSummary *summary = (CalSummary *) data;
-
- switch (arg_id) {
- case PROPERTY_TITLE:
- g_warning ("Get property: %s", summary->title);
- BONOBO_ARG_SET_STRING (arg, summary->title);
- break;
-
- case PROPERTY_ICON:
- BONOBO_ARG_SET_STRING (arg, summary->icon);
- break;
-
- default:
- break;
- }
-}
-
-static void
-set_property (BonoboPropertyBag *bag,
- const BonoboArg *arg,
- guint arg_id,
- CORBA_Environment *ev,
- gpointer user_data)
-{
- CalSummary *summary = (CalSummary *) user_data;
-
- switch (arg_id) {
- case PROPERTY_TITLE:
- if (summary->title)
- g_free (summary->title);
-
- summary->title = g_strdup (BONOBO_ARG_GET_STRING (arg));
- bonobo_property_bag_notify_listeners (bag, "window_title",
- arg, NULL);
- break;
-
- case PROPERTY_ICON:
- if (summary->icon)
- g_free (summary->icon);
-
- summary->icon = g_strdup (BONOBO_ARG_GET_STRING (arg));
- bonobo_property_bag_notify_listeners (bag, "window_icon",
- arg, NULL);
- break;
-
- default:
- break;
- }
-}
-
-static void
-component_destroyed (GtkObject *object,
- gpointer data)
-{
- CalSummary *summary = (CalSummary *) data;
-
- g_free (summary->title);
- g_free (summary->icon);
- gtk_object_destroy (GTK_OBJECT (summary->client));
-
- g_free (summary);
-
- running_views--;
-
- if (running_views <= 0) {
- bonobo_object_unref (BONOBO_OBJECT (factory));
- }
-}
-
-static void
-obj_updated_cb (CalClient *client,
- const char *uid,
- CalSummary *summary)
-{
- /* FIXME: Maybe cache the uid's in the summary and only call this if
- uid is in this cache??? */
-
- if (summary->idle != 0)
- return;
-
- summary->idle = g_idle_add (generate_html_summary, summary);
-}
-
-static void
-obj_removed_cb (CalClient *client,
- const char *uid,
- CalSummary *summary)
-{
- /* See FIXME: above */
- if (summary->idle != 0)
- return;
-
- summary->idle = g_idle_add (generate_html_summary, summary);
-}
-
-static void
-cal_opened_cb (CalClient *client,
- CalClientOpenStatus status,
- CalSummary *summary)
-{
- switch (status) {
- case CAL_CLIENT_OPEN_SUCCESS:
- if (summary->idle != 0)
- return;
-
- summary->idle = g_idle_add (generate_html_summary, summary);
- break;
-
- case CAL_CLIENT_OPEN_ERROR:
- executive_summary_html_view_set_html (summary->view,
- _("<b>Error loading calendar</b>"));
- break;
-
- case CAL_CLIENT_OPEN_NOT_FOUND:
- /* We did not use only_if_exists when opening the calendar, so
- * this should not happen.
- */
- g_assert_not_reached ();
- break;
-
- case CAL_CLIENT_OPEN_METHOD_NOT_SUPPORTED:
- executive_summary_html_view_set_html (summary->view,
- _("<b>Error loading calendar:<br>Method not supported"));
- break;
-
- default:
- break;
- }
-}
-
-static void
-alarm_fn (gpointer alarm_id,
- time_t trigger,
- gpointer data)
-{
- CalSummary *summary;
- time_t t, day_end;
-
- summary = data;
-
- t = time (NULL);
- day_end = time_day_end (t);
- summary->alarm = alarm_add (day_end, alarm_fn, summary, NULL);
-
- /* Now redraw the summary */
- generate_html_summary (summary);
-}
-
-/* PersistStream callbacks */
-static void
-load_from_stream (BonoboPersistStream *ps,
- Bonobo_Stream stream,
- Bonobo_Persist_ContentType type,
- gpointer data,
- CORBA_Environment *ev)
-{
- CalSummary *summary = (CalSummary *) data;
- char *str;
- xmlChar *xml_str;
- xmlDocPtr doc;
- xmlNodePtr root, children;
-
- if (*type && g_strcasecmp (type, "application/x-evolution-calendar-summary") != 0) {
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_Bonobo_Persist_WrongDataType, NULL);
- return;
- }
-
- bonobo_stream_client_read_string (stream, &str, ev);
- if (ev->_major != CORBA_NO_EXCEPTION || str == NULL) {
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_Bonobo_Persist_WrongDataType, NULL);
- return;
- }
-
- doc = xmlParseDoc ((xmlChar *) str);
-
- if (doc == NULL) {
- g_warning ("Bad data: %s!", str);
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_Bonobo_Persist_WrongDataType, NULL);
- g_free (str);
- return;
- }
-
- g_free (str);
- root = doc->root;
- children = root->childs;
- while (children) {
- if (strcasecmp (children->name, "showappointments") == 0) {
- xml_str = xmlNodeListGetString (doc, children->childs, 1);
- if (strcmp (xml_str, "TRUE") == 0)
- summary->appointments = TRUE;
- else
- summary->appointments = FALSE;
- xmlFree (xml_str);
-
- children = children->next;
- continue;
- }
-
- if (strcasecmp (children->name, "showtasks") == 0) {
- xml_str = xmlNodeListGetString (doc, children->childs, 1);
- if (strcmp (xml_str, "TRUE") == 0)
- summary->tasks = TRUE;
- else
- summary->tasks = FALSE;
- xmlFree (xml_str);
-
- children = children->next;
- continue;
- }
-
- g_print ("Unknown name: %s\n", children->name);
- children = children->next;
- }
- xmlFreeDoc (doc);
-
- summary->idle = g_idle_add (generate_html_summary, summary);
-}
-
-static char *
-summary_to_string (CalSummary *summary)
-{
- xmlChar *out_str;
- int out_len = 0;
- xmlDocPtr doc;
- xmlNsPtr ns;
-
- doc = xmlNewDoc ("1.0");
- ns = xmlNewGlobalNs (doc, "http://www.ximian.com", "calendar-summary");
- doc->root = xmlNewDocNode (doc, ns, "calendar-summary", NULL);
-
- xmlNewChild (doc->root, ns, "showappointments",
- summary->appointments ? "TRUE" : "FALSE");
- xmlNewChild (doc->root, ns, "showtasks", summary->tasks ? "TRUE" : "FALSE");
-
- xmlDocDumpMemory (doc, &out_str, &out_len);
- return out_str;
-}
-
-static void
-save_to_stream (BonoboPersistStream *ps,
- const Bonobo_Stream stream,
- Bonobo_Persist_ContentType type,
- gpointer data,
- CORBA_Environment *ev)
-{
- CalSummary *summary = (CalSummary *) data;
- char *str;
-
- if (*type && g_strcasecmp (type, "application/x-evolution-calendar-summary") != 0) {
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_Bonobo_Persist_WrongDataType, NULL);
- return;
- }
-
- str = summary_to_string (summary);
- if (str)
- bonobo_stream_client_printf (stream, TRUE, ev, str);
- xmlFree (str);
-
- return;
-}
-
-static Bonobo_Persist_ContentTypeList *
-content_types (BonoboPersistStream *ps,
- void *closure,
- CORBA_Environment *ev)
-{
- return bonobo_persist_generate_content_types (1, "application/x-evolution-calendar-summary");
-}
-
-static void
-property_dialog_changed (GtkWidget *widget,
- CalSummary *summary)
-{
- bonobo_property_control_changed (summary->property_control, NULL);
-}
-
-static BonoboControl *
-property_dialog (BonoboPropertyControl *property_control,
- int page_num,
- void *user_data)
-{
- BonoboControl *control;
- CalSummary *summary = (CalSummary *) user_data;
- GtkWidget *container, *vbox;
-
- container = gtk_frame_new (_("Display"));
- gtk_container_set_border_width (GTK_CONTAINER (container), 2);
- vbox = gtk_vbox_new (FALSE, 2);
- gtk_container_add (GTK_CONTAINER (container), vbox);
-
- summary->show_appointments = gtk_check_button_new_with_label (_("Show appointments"));
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (summary->show_appointments),
- summary->appointments);
- gtk_signal_connect (GTK_OBJECT (summary->show_appointments), "toggled",
- GTK_SIGNAL_FUNC (property_dialog_changed), summary);
- gtk_box_pack_start (GTK_BOX (vbox), summary->show_appointments,
- TRUE, TRUE, 0);
-
- summary->show_tasks = gtk_check_button_new_with_label (_("Show tasks"));
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (summary->show_tasks),
- summary->tasks);
- gtk_signal_connect (GTK_OBJECT (summary->show_tasks), "toggled",
- GTK_SIGNAL_FUNC (property_dialog_changed), summary);
- gtk_box_pack_start (GTK_BOX (vbox), summary->show_tasks, TRUE, TRUE, 0);
- gtk_widget_show_all (container);
-
- control = bonobo_control_new (container);
- return control;
-}
-
-static void
-property_action (GtkObject *property_control,
- int page_num,
- Bonobo_PropertyControl_Action action,
- CalSummary *summary)
-{
- switch (action) {
- case Bonobo_PropertyControl_APPLY:
- summary->appointments = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (summary->show_appointments));
- summary->tasks = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (summary->show_tasks));
- summary->idle = g_idle_add (generate_html_summary, summary);
- break;
-
- case Bonobo_PropertyControl_HELP:
- g_print ("HELP\n");
- break;
-
- default:
- break;
- }
-}
-
-BonoboObject *
-create_summary_view (ExecutiveSummaryComponentFactory *_factory,
- void *closure)
-{
- BonoboObject *component, *view;
- BonoboPersistStream *stream;
- BonoboPropertyBag *bag;
- BonoboPropertyControl *property_control;
- BonoboEventSource *event_source;
- CalSummary *summary;
- char *file;
- time_t t, day_end;
-
- file = g_concat_dir_and_file (evolution_dir, "local/Calendar/calendar.ics");
-
- /* Create the component object */
- component = executive_summary_component_new ();
-
- summary = g_new (CalSummary, 1);
- summary->component = EXECUTIVE_SUMMARY_COMPONENT (component);
- summary->icon = g_strdup ("evolution-calendar.png");
- summary->title = e_utf8_from_locale_string (_("Things to do"));
- summary->client = cal_client_new ();
- summary->idle = 0;
- summary->appointments = TRUE;
- summary->tasks = TRUE;
-
- t = time (NULL);
- day_end = time_day_end (t);
- summary->alarm = alarm_add (day_end, alarm_fn, summary, NULL);
-
- /* Load calendar */
- cal_client_open_calendar (summary->client, file, FALSE);
- g_free (file);
-
- gtk_signal_connect (GTK_OBJECT (summary->client), "cal-opened",
- GTK_SIGNAL_FUNC (cal_opened_cb), summary);
- gtk_signal_connect (GTK_OBJECT (summary->client), "obj-updated",
- GTK_SIGNAL_FUNC (obj_updated_cb), summary);
- gtk_signal_connect (GTK_OBJECT (summary->client), "obj-removed",
- GTK_SIGNAL_FUNC (obj_removed_cb), summary);
-
- gtk_signal_connect (GTK_OBJECT (component), "destroy",
- GTK_SIGNAL_FUNC (component_destroyed), summary);
-
- event_source = bonobo_event_source_new ();
-
- /* HTML view */
- view = executive_summary_html_view_new_full (event_source);
- summary->view = EXECUTIVE_SUMMARY_HTML_VIEW (view);
-
- executive_summary_html_view_set_html (EXECUTIVE_SUMMARY_HTML_VIEW (view),
- _("Loading Calendar"));
- bonobo_object_add_interface (component, view);
-
- /* BonoboPropertyBag */
- bag = bonobo_property_bag_new_full (get_property, set_property,
- event_source, summary);
- bonobo_property_bag_add (bag, "window_title", PROPERTY_TITLE,
- BONOBO_ARG_STRING, NULL,
- "The title of this component's window", 0);
- bonobo_property_bag_add (bag, "window_icon", PROPERTY_ICON,
- BONOBO_ARG_STRING, NULL,
- "The icon for this component's window", 0);
- bonobo_object_add_interface (component, BONOBO_OBJECT (bag));
-
- property_control = bonobo_property_control_new_full (property_dialog,
- 1, event_source,
- summary);
- summary->property_control = property_control;
- gtk_signal_connect (GTK_OBJECT (property_control), "action",
- GTK_SIGNAL_FUNC (property_action), summary);
- bonobo_object_add_interface (component, BONOBO_OBJECT (property_control));
-
- stream = bonobo_persist_stream_new (load_from_stream, save_to_stream,
- NULL, content_types, summary);
- bonobo_object_add_interface (component, BONOBO_OBJECT (stream));
-
- running_views++;
-
- return component;
-}
-
-static BonoboObject *
-factory_fn (BonoboGenericFactory *generic_factory,
- void *closure)
-{
- BonoboObject *_factory;
-
- _factory = executive_summary_component_factory_new (create_summary_view,
- NULL);
- return _factory;
-}
-
-BonoboGenericFactory *
-calendar_summary_factory_init (void)
-{
- if (factory != NULL)
- return factory;
-
- factory = bonobo_generic_factory_new (CALENDAR_SUMMARY_ID, factory_fn,
- NULL);
-
- if (factory == NULL) {
- g_warning ("Cannot initialize calendar summary factory");
- return NULL;
- }
-
- return factory;
-}
diff --git a/calendar/gui/calendar-summary.h b/calendar/gui/calendar-summary.h
deleted file mode 100644
index eebed7c5ad..0000000000
--- a/calendar/gui/calendar-summary.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* calendar-summary.c
- *
- * Authors: Iain Holmes <iain@ximian.com>
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef CALENDAR_SUMMARY_H
-#define CALENDAR_SUMMARY_H
-
-#include <bonobo/bonobo-generic-factory.h>
-#include <evolution-services/executive-summary-component.h>
-
-BonoboGenericFactory *calendar_summary_factory_init (void);
-
-BonoboObject *create_summary_view (ExecutiveSummaryComponentFactory *_factory,
- void *closure);
-
-#endif
diff --git a/calendar/gui/comp-util.c b/calendar/gui/comp-util.c
deleted file mode 100644
index f1898e914e..0000000000
--- a/calendar/gui/comp-util.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Evolution calendar - Utilities for manipulating CalComponent objects
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "comp-util.h"
-
-
-
-/**
- * cal_comp_util_add_exdate:
- * @comp: A calendar component object.
- * @itt: Time for the exception.
- *
- * Adds an exception date to the current list of EXDATE properties in a calendar
- * component object.
- **/
-void
-cal_comp_util_add_exdate (CalComponent *comp, struct icaltimetype itt)
-{
- GSList *list;
- CalComponentDateTime *cdt;
-
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- cal_component_get_exdate_list (comp, &list);
-
- cdt = g_new (CalComponentDateTime, 1);
- cdt->value = g_new (struct icaltimetype, 1);
- *cdt->value = itt;
- cdt->tzid = NULL;
-
- list = g_slist_append (list, cdt);
- cal_component_set_exdate_list (comp, list);
- cal_component_free_exdate_list (list);
-}
diff --git a/calendar/gui/comp-util.h b/calendar/gui/comp-util.h
deleted file mode 100644
index 9c70172aee..0000000000
--- a/calendar/gui/comp-util.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Evolution calendar - Utilities for manipulating CalComponent objects
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef COMP_UTIL_H
-#define COMP_UTIL_H
-
-#include <cal-util/cal-component.h>
-
-void cal_comp_util_add_exdate (CalComponent *comp, struct icaltimetype itt);
-
-#endif
diff --git a/calendar/gui/component-factory.c b/calendar/gui/component-factory.c
deleted file mode 100644
index 5135eb26b8..0000000000
--- a/calendar/gui/component-factory.c
+++ /dev/null
@@ -1,175 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* component-factory.c
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli <ettore@ximian.com>
- */
-
-#include <config.h>
-#include "evolution-shell-component.h"
-#include <executive-summary/evolution-services/executive-summary-component.h>
-#include "component-factory.h"
-#include "tasks-control-factory.h"
-#include "control-factory.h"
-#include "calendar-config.h"
-#include "calendar-summary.h"
-#include "tasks-control.h"
-#include "tasks-migrate.h"
-
-
-
-#define COMPONENT_FACTORY_ID "OAFIID:GNOME_Evolution_Calendar_ShellComponentFactory"
-
-static BonoboGenericFactory *factory = NULL;
-static BonoboGenericFactory *summary_factory = NULL;
-char *evolution_dir;
-
-static const EvolutionShellComponentFolderType folder_types[] = {
- { "calendar", "evolution-calendar.png" },
- { "tasks", "evolution-tasks.png" },
- { NULL, NULL }
-};
-
-
-/* EvolutionShellComponent methods and signals. */
-
-static EvolutionShellComponentResult
-create_view (EvolutionShellComponent *shell_component,
- const char *physical_uri,
- const char *type,
- BonoboControl **control_return,
- void *closure)
-{
- BonoboControl *control;
-
- if (!g_strcasecmp (type, "calendar")) {
- control = control_factory_new_control ();
- if (!control)
- return EVOLUTION_SHELL_COMPONENT_CORBAERROR;
- } else if (!g_strcasecmp (type, "tasks")) {
- control = tasks_control_new ();
- if (!control)
- return EVOLUTION_SHELL_COMPONENT_CORBAERROR;
- } else {
- return EVOLUTION_SHELL_COMPONENT_UNSUPPORTEDTYPE;
- }
-
- bonobo_control_set_property (control, "folder_uri", physical_uri, NULL);
-
- *control_return = control;
-
- return EVOLUTION_SHELL_COMPONENT_OK;
-}
-
-static void
-create_folder (EvolutionShellComponent *shell_component,
- const char *physical_uri,
- const char *type,
- const GNOME_Evolution_ShellComponentListener listener,
- void *closure)
-{
- CORBA_Environment ev;
-
- CORBA_exception_init(&ev);
- /* FIXME: I don't think we have to do anything to create a calendar
- or tasks folder - the '.ics' files are created automatically when
- needed. But I'm not sure - Damon. */
- if (!strcmp(type, "calendar") || !strcmp(type, "tasks")) {
- GNOME_Evolution_ShellComponentListener_notifyResult(listener, GNOME_Evolution_ShellComponentListener_OK, &ev);
- } else {
- GNOME_Evolution_ShellComponentListener_notifyResult(listener, GNOME_Evolution_ShellComponentListener_UNSUPPORTED_TYPE, &ev);
- }
- CORBA_exception_free(&ev);
-}
-
-static gint owner_count = 0;
-
-static void
-owner_set_cb (EvolutionShellComponent *shell_component,
- EvolutionShellClient *shell_client,
- const char *evolution_homedir,
- gpointer user_data)
-{
- static gboolean migrated = FALSE;
-
- owner_count ++;
- evolution_dir = g_strdup (evolution_homedir);
-
- calendar_config_init ();
-
- if (!migrated) {
- tasks_migrate ();
- migrated = TRUE;
- }
-}
-
-static void
-owner_unset_cb (EvolutionShellComponent *shell_component,
- gpointer user_data)
-{
- owner_count --;
- if (owner_count <= 0)
- gtk_main_quit();
-}
-
-
-/* The factory function. */
-
-static BonoboObject *
-factory_fn (BonoboGenericFactory *factory,
- void *closure)
-{
- EvolutionShellComponent *shell_component;
-
- shell_component = evolution_shell_component_new (folder_types,
- create_view,
- create_folder,
- NULL, /* remove_folder_fn */
- NULL, /* copy_folder_fn */
- NULL, /* populate_folder_context_menu_fn */
- NULL, /* get_dnd_selection_fn */
- NULL /* closure */);
-
- gtk_signal_connect (GTK_OBJECT (shell_component), "owner_set",
- GTK_SIGNAL_FUNC (owner_set_cb), NULL);
- gtk_signal_connect (GTK_OBJECT (shell_component), "owner_unset",
- GTK_SIGNAL_FUNC (owner_unset_cb), NULL);
-
- return BONOBO_OBJECT (shell_component);
-}
-
-
-
-void
-component_factory_init (void)
-{
- if (factory != NULL && factory != NULL)
- return;
-
- factory = bonobo_generic_factory_new (COMPONENT_FACTORY_ID, factory_fn, NULL);
-
- summary_factory = calendar_summary_factory_init ();
-
- if (factory == NULL)
- g_error ("Cannot initialize Evolution's calendar component.");
-
- if (summary_factory == NULL)
- g_error ("Cannot initialize Evolution's calendar summary component.");
-}
diff --git a/calendar/gui/component-factory.h b/calendar/gui/component-factory.h
deleted file mode 100644
index d2d570e340..0000000000
--- a/calendar/gui/component-factory.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* component-factory.h
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli <ettore@ximian.com>
- */
-
-#ifndef _COMPONENT_FACTORY_H_
-#define _COMPONENT_FACTORY_H_
-
-extern char *evolution_dir;
-
-void component_factory_init (void);
-
-#endif /* _COMPONENT_FACTORY_H_ */
diff --git a/calendar/gui/control-factory.c b/calendar/gui/control-factory.c
deleted file mode 100644
index 8788a19c58..0000000000
--- a/calendar/gui/control-factory.c
+++ /dev/null
@@ -1,213 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* control-factory.c
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli <ettore@ximian.com>
- */
-
-#include <config.h>
-#include <glade/glade.h>
-#include <bonobo/bonobo-control.h>
-#include <bonobo/bonobo-generic-factory.h>
-#include <bonobo/bonobo-persist-file.h>
-#include <glade/glade.h>
-
-#include <liboaf/liboaf.h>
-
-#include <cal-util/timeutil.h>
-#include <gui/gnome-cal.h>
-#include <gui/calendar-commands.h>
-
-#include "control-factory.h"
-
-#define PROPERTY_CALENDAR_URI "folder_uri"
-
-#define PROPERTY_CALENDAR_URI_IDX 1
-
-#define CONTROL_FACTORY_ID "OAFIID:GNOME_Evolution_Calendar_ControlFactory"
-
-
-CORBA_Environment ev;
-CORBA_ORB orb;
-
-
-static void
-control_activate_cb (BonoboControl *control,
- gboolean activate,
- gpointer user_data)
-{
- if (activate)
- calendar_control_activate (control, user_data);
- else
- calendar_control_deactivate (control);
-}
-
-
-static void
-get_prop (BonoboPropertyBag *bag,
- BonoboArg *arg,
- guint arg_id,
- CORBA_Environment *ev,
- gpointer user_data)
-{
- /*GnomeCalendar *gcal = user_data;*/
-
- switch (arg_id) {
-
- case PROPERTY_CALENDAR_URI_IDX:
- /*
- if (fb && fb->uri)
- BONOBO_ARG_SET_STRING (arg, fb->uri);
- else
- BONOBO_ARG_SET_STRING (arg, "");
- */
- break;
-
- default:
- g_warning ("Unhandled arg %d\n", arg_id);
- }
-}
-
-
-static void
-set_prop (BonoboPropertyBag *bag,
- const BonoboArg *arg,
- guint arg_id,
- CORBA_Environment *ev,
- gpointer user_data)
-{
- GnomeCalendar *gcal = user_data;
- char *filename;
-
- switch (arg_id) {
- case PROPERTY_CALENDAR_URI_IDX:
- filename = g_strdup_printf ("%s/calendar.ics",
- BONOBO_ARG_GET_STRING (arg));
- gnome_calendar_open (gcal, filename); /* FIXME: result value -> exception? */
- g_free (filename);
- break;
-
- default:
- g_warning ("Unhandled arg %d\n", arg_id);
- break;
- }
-}
-
-
-static void
-calendar_properties_init (GnomeCalendar *gcal, BonoboControl *control)
-{
- BonoboPropertyBag *pbag;
-
- pbag = bonobo_property_bag_new (get_prop, set_prop, gcal);
-
- bonobo_property_bag_add (pbag,
- PROPERTY_CALENDAR_URI,
- PROPERTY_CALENDAR_URI_IDX,
- BONOBO_ARG_STRING,
- NULL,
- _("The URI that the calendar will display"),
- 0);
-
- bonobo_control_set_properties (control, pbag);
- bonobo_object_unref (BONOBO_OBJECT (pbag));
-}
-
-/* Callback factory function for calendar controls */
-static BonoboObject *
-control_factory_fn (BonoboGenericFactory *Factory, void *data)
-{
- BonoboControl *control;
-
- control = control_factory_new_control ();
-
- if (control)
- return BONOBO_OBJECT (control);
- else
- return NULL;
-}
-
-
-void
-control_factory_init (void)
-{
- static BonoboGenericFactory *factory = NULL;
-
- if (factory != NULL)
- return;
-
- factory = bonobo_generic_factory_new (CONTROL_FACTORY_ID, control_factory_fn, NULL);
-
- if (factory == NULL)
- g_error ("I could not register a Calendar control factory.");
-}
-
-static int
-load_calendar (BonoboPersistFile *pf, const CORBA_char *filename, CORBA_Environment *ev, void *closure)
-{
- GnomeCalendar *gcal = closure;
-
- return gnome_calendar_open (gcal, filename);
-}
-
-static int
-save_calendar (BonoboPersistFile *pf, const CORBA_char *filename,
- CORBA_Environment *ev,
- void *closure)
-{
- /* Do not know how to save stuff yet */
- return -1;
-}
-
-static void
-calendar_persist_init (GnomeCalendar *gcal, BonoboControl *control)
-{
- BonoboPersistFile *f;
-
- f = bonobo_persist_file_new (load_calendar, save_calendar, gcal);
- bonobo_object_add_interface (BONOBO_OBJECT (control), BONOBO_OBJECT (f));
-}
-
-BonoboControl *
-control_factory_new_control (void)
-{
- BonoboControl *control;
- GnomeCalendar *gcal;
-
- gcal = new_calendar ();
- if (!gcal)
- return NULL;
-
- gtk_widget_show (GTK_WIDGET (gcal));
-
- control = bonobo_control_new (GTK_WIDGET (gcal));
- if (!control) {
- g_message ("control_factory_fn(): could not create the control!");
- return NULL;
- }
-
- calendar_properties_init (gcal, control);
- calendar_persist_init (gcal, control);
-
- gtk_signal_connect (GTK_OBJECT (control), "activate",
- GTK_SIGNAL_FUNC (control_activate_cb), gcal);
-
- return control;
-}
diff --git a/calendar/gui/control-factory.h b/calendar/gui/control-factory.h
deleted file mode 100644
index 7170404cda..0000000000
--- a/calendar/gui/control-factory.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* control-factory.c
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli <ettore@ximian.com>
- */
-
-#ifndef _CONTROL_FACTORY_H_
-#define _CONTROL_FACTORY_H_
-
-void control_factory_init (void);
-BonoboControl *control_factory_new_control (void);
-
-#endif /* _CONTROL_FACTORY_H_ */
diff --git a/calendar/gui/dialogs/.cvsignore b/calendar/gui/dialogs/.cvsignore
deleted file mode 100644
index e995588475..0000000000
--- a/calendar/gui/dialogs/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-.deps
-Makefile
-Makefile.in
diff --git a/calendar/gui/dialogs/Makefile.am b/calendar/gui/dialogs/Makefile.am
deleted file mode 100644
index ec4e31379d..0000000000
--- a/calendar/gui/dialogs/Makefile.am
+++ /dev/null
@@ -1,49 +0,0 @@
-gladedir = $(datadir)/evolution/glade
-
-INCLUDES = \
- -DG_LOG_DOMAIN=\"calendar-gui\" \
- -I$(top_srcdir) \
- -I$(top_srcdir)/calendar \
- -I$(top_srcdir)/calendar/cal-client \
- -I$(top_builddir)/calendar/cal-client \
- -I$(top_srcdir)/libical/src/libical \
- -I$(top_builddir)/libical/src/libical \
- -I$(includedir) \
- $(EXTRA_GNOME_CFLAGS) \
- -DEVOLUTION_DATADIR=\""$(datadir)"\" \
- -DEVOLUTION_GLADEDIR=\""$(gladedir)"\" \
- $(BONOBO_VFS_GNOME_CFLAGS) \
- -DGNOMELOCALEDIR=\""$(localedir)"\"
-
-noinst_LIBRARIES = libcal-dialogs.a
-
-libcal_dialogs_a_SOURCES = \
- alarm-notify-dialog.c \
- alarm-notify-dialog.h \
- alarm-page.c \
- alarm-page.h \
- cal-prefs-dialog.c \
- cal-prefs-dialog.h \
- delete-comp.c \
- delete-comp.h \
- editor-page.c \
- editor-page.h \
- event-page.c \
- event-page.h \
- save-comp.c \
- save-comp.h \
- task-editor.c \
- task-editor.h
-
-glade_DATA = \
- alarm-notify.glade \
- alarm-page.glade \
- cal-prefs-dialog.glade \
- event-page.glade \
- recurrence-page.glade \
- task-details-page.glade \
- task-editor-dialog.glade \
- task-page.glade
-
-EXTRA_DIST = \
- $(glade_DATA)
diff --git a/calendar/gui/dialogs/alarm-notify-dialog.c b/calendar/gui/dialogs/alarm-notify-dialog.c
deleted file mode 100644
index 164d043e13..0000000000
--- a/calendar/gui/dialogs/alarm-notify-dialog.c
+++ /dev/null
@@ -1,231 +0,0 @@
-/* Evolution calendar - alarm notification dialog
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkspinbutton.h>
-#include <gtk/gtksignal.h>
-#include <gtk/gtkwindow.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <glade/glade.h>
-#include "alarm-notify-dialog.h"
-
-
-
-/* The useful contents of the alarm notify dialog */
-typedef struct {
- GladeXML *xml;
-
- GtkWidget *dialog;
- GtkWidget *close;
- GtkWidget *snooze;
- GtkWidget *edit;
- GtkWidget *heading;
- GtkWidget *summary;
- GtkWidget *snooze_time;
-
- AlarmNotifyFunc func;
- gpointer func_data;
-} AlarmNotify;
-
-
-
-/* Callback used when the notify dialog is destroyed */
-static void
-dialog_destroy_cb (GtkObject *object, gpointer data)
-{
- AlarmNotify *an;
-
- an = data;
- gtk_object_unref (GTK_OBJECT (an->xml));
- g_free (an);
-}
-
-/* Delete_event handler for the alarm notify dialog */
-static gint
-delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer data)
-{
- AlarmNotify *an;
-
- an = data;
- g_assert (an->func != NULL);
-
- (* an->func) (ALARM_NOTIFY_CLOSE, -1, an->func_data);
-
- gtk_widget_destroy (widget);
- return TRUE;
-}
-
-/* Callback for the close button */
-static void
-close_clicked_cb (GtkWidget *widget, gpointer data)
-{
- AlarmNotify *an;
-
- an = data;
- g_assert (an->func != NULL);
-
- (* an->func) (ALARM_NOTIFY_CLOSE, -1, an->func_data);
-
- gtk_widget_destroy (an->dialog);
-}
-
-/* Callback for the snooze button */
-static void
-snooze_clicked_cb (GtkWidget *widget, gpointer data)
-{
- AlarmNotify *an;
- int snooze_time;
-
- an = data;
- g_assert (an->func != NULL);
-
- snooze_time = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (an->snooze_time));
- (* an->func) (ALARM_NOTIFY_SNOOZE, snooze_time, an->func_data);
-
- gtk_widget_destroy (an->dialog);
-}
-
-/* Callback for the edit button */
-static void
-edit_clicked_cb (GtkWidget *widget, gpointer data)
-{
- AlarmNotify *an;
-
- an = data;
- g_assert (an->func != NULL);
-
- (* an->func) (ALARM_NOTIFY_EDIT, -1, an->func_data);
-
- gtk_widget_destroy (an->dialog);
-}
-
-/**
- * alarm_notify_dialog:
- * @trigger: Trigger time for the alarm.
- * @occur: Occurrence time for the event.
- * @comp: Calendar component object which corresponds to the alarm.
- * @func: Function to be called when a dialog action is invoked.
- * @func_data: Closure data for @func.
- *
- * Runs the alarm notification dialog. The specified @func will be used to
- * notify the client about result of the actions in the dialog.
- *
- * Return value: TRUE on success, FALSE if the dialog could not be created.
- **/
-gboolean
-alarm_notify_dialog (time_t trigger, time_t occur, CalComponent *comp,
- AlarmNotifyFunc func, gpointer func_data)
-{
- AlarmNotify *an;
- char buf[256];
- struct tm tm_trigger;
- struct tm tm_occur;
- CalComponentText summary;
-
- g_return_val_if_fail (trigger != -1, FALSE);
- g_return_val_if_fail (occur != -1, FALSE);
- g_return_val_if_fail (comp != NULL, FALSE);
- g_return_val_if_fail (IS_CAL_COMPONENT (comp), FALSE);
- g_return_val_if_fail (func != NULL, FALSE);
-
- an = g_new0 (AlarmNotify, 1);
-
- an->func = func;
- an->func_data = func_data;
-
- an->xml = glade_xml_new (EVOLUTION_GLADEDIR "/alarm-notify.glade", NULL);
- if (!an->xml) {
- g_message ("alarm_notify_dialog(): Could not load the Glade XML file!");
- g_free (an);
- return FALSE;
- }
-
- an->dialog = glade_xml_get_widget (an->xml, "alarm-notify");
- an->close = glade_xml_get_widget (an->xml, "close");
- an->snooze = glade_xml_get_widget (an->xml, "snooze");
- an->edit = glade_xml_get_widget (an->xml, "edit");
- an->heading = glade_xml_get_widget (an->xml, "heading");
- an->summary = glade_xml_get_widget (an->xml, "summary");
- an->snooze_time = glade_xml_get_widget (an->xml, "snooze-time");
-
- if (!(an->dialog && an->close && an->snooze && an->edit && an->heading && an->summary
- && an->snooze_time)) {
- g_message ("alarm_notify_dialog(): Could not find all widgets in Glade file!");
- gtk_object_unref (GTK_OBJECT (an->xml));
- g_free (an);
- return FALSE;
- }
-
- gtk_object_set_data (GTK_OBJECT (an->dialog), "alarm-notify", an);
- gtk_signal_connect (GTK_OBJECT (an->dialog), "destroy",
- GTK_SIGNAL_FUNC (dialog_destroy_cb), an);
-
- /* Title */
-
- /* FIXME: use am_pm_flag or 24-hour time */
-
- tm_trigger = *localtime (&trigger);
- strftime (buf, sizeof (buf), _("Alarm on %A %b %d %Y %H:%M"), &tm_trigger);
- gtk_window_set_title (GTK_WINDOW (an->dialog), buf);
-
- /* Heading */
-
- tm_occur = *localtime (&occur);
- strftime (buf, sizeof (buf),
- _("Notification about your appointment on %A %b %d %Y %H:%M"),
- &tm_occur);
- gtk_label_set_text (GTK_LABEL (an->heading), buf);
-
- /* Summary */
-
- cal_component_get_summary (comp, &summary);
-
- if (summary.value)
- gtk_label_set_text (GTK_LABEL (an->summary), summary.value);
- else
- gtk_label_set_text (GTK_LABEL (an->summary), _("No summary available."));
-
- /* Connect actions */
-
- gtk_signal_connect (GTK_OBJECT (an->dialog), "delete_event",
- GTK_SIGNAL_FUNC (delete_event_cb),
- an);
-
- gtk_signal_connect (GTK_OBJECT (an->close), "clicked",
- GTK_SIGNAL_FUNC (close_clicked_cb),
- an);
-
- gtk_signal_connect (GTK_OBJECT (an->snooze), "clicked",
- GTK_SIGNAL_FUNC (snooze_clicked_cb),
- an);
-
- gtk_signal_connect (GTK_OBJECT (an->edit), "clicked",
- GTK_SIGNAL_FUNC (edit_clicked_cb),
- an);
-
- /* Run! */
-
- gtk_widget_show (an->dialog);
- return TRUE;
-}
diff --git a/calendar/gui/dialogs/alarm-notify-dialog.h b/calendar/gui/dialogs/alarm-notify-dialog.h
deleted file mode 100644
index f2c938c495..0000000000
--- a/calendar/gui/dialogs/alarm-notify-dialog.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Evolution calendar - alarm notification dialog
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef ALARM_NOTIFY_DIALOG_H
-#define ALARM_NOTIFY_DIALOG_H
-
-#include <time.h>
-#include <glib.h>
-#include <cal-util/cal-component.h>
-
-
-
-typedef enum {
- ALARM_NOTIFY_CLOSE,
- ALARM_NOTIFY_SNOOZE,
- ALARM_NOTIFY_EDIT
-} AlarmNotifyResult;
-
-typedef void (* AlarmNotifyFunc) (AlarmNotifyResult result, int snooze_mins, gpointer data);
-
-gboolean alarm_notify_dialog (time_t trigger, time_t occur, CalComponent *comp,
- AlarmNotifyFunc func, gpointer func_data);
-
-
-
-#endif
diff --git a/calendar/gui/dialogs/alarm-notify.glade b/calendar/gui/dialogs/alarm-notify.glade
deleted file mode 100644
index 41718d0572..0000000000
--- a/calendar/gui/dialogs/alarm-notify.glade
+++ /dev/null
@@ -1,228 +0,0 @@
-<?xml version="1.0"?>
-<GTK-Interface>
-
-<project>
- <name>Evolution Calendar</name>
- <program_name>evolution-calendar</program_name>
- <directory></directory>
- <source_directory>src</source_directory>
- <pixmaps_directory>pixmaps</pixmaps_directory>
- <language>C</language>
- <gnome_support>True</gnome_support>
- <gettext_support>True</gettext_support>
- <use_widget_names>False</use_widget_names>
- <output_main_file>True</output_main_file>
- <output_support_files>True</output_support_files>
- <output_build_files>True</output_build_files>
- <backup_source_files>True</backup_source_files>
- <main_source_file>interface.c</main_source_file>
- <main_header_file>interface.h</main_header_file>
- <handler_source_file>callbacks.c</handler_source_file>
- <handler_header_file>callbacks.h</handler_header_file>
- <support_source_file>support.c</support_source_file>
- <support_header_file>support.h</support_header_file>
-</project>
-
-<widget>
- <class>GtkWindow</class>
- <name>alarm-notify</name>
- <cxx_use_heap>True</cxx_use_heap>
- <title></title>
- <type>GTK_WINDOW_DIALOG</type>
- <position>GTK_WIN_POS_CENTER</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>False</allow_grow>
- <auto_shrink>False</auto_shrink>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox2</name>
- <border_width>4</border_width>
- <cxx_use_heap>True</cxx_use_heap>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox3</name>
- <cxx_use_heap>True</cxx_use_heap>
- <homogeneous>False</homogeneous>
- <spacing>8</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox5</name>
- <cxx_use_heap>True</cxx_use_heap>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>heading</name>
- <cxx_use_heap>True</cxx_use_heap>
- <label></label>
- <justify>GTK_JUSTIFY_LEFT</justify>
- <wrap>True</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>summary</name>
- <cxx_use_heap>True</cxx_use_heap>
- <label></label>
- <justify>GTK_JUSTIFY_LEFT</justify>
- <wrap>True</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox4</name>
- <cxx_use_heap>True</cxx_use_heap>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>close</name>
- <cxx_use_heap>True</cxx_use_heap>
- <can_focus>True</can_focus>
- <label>Close</label>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>snooze</name>
- <cxx_use_heap>True</cxx_use_heap>
- <can_focus>True</can_focus>
- <label>Snooze</label>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>edit</name>
- <cxx_use_heap>True</cxx_use_heap>
- <can_focus>True</can_focus>
- <label>Edit appointment</label>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHSeparator</class>
- <name>hseparator1</name>
- <cxx_use_heap>True</cxx_use_heap>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox4</name>
- <cxx_use_heap>True</cxx_use_heap>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label4</name>
- <cxx_use_heap>True</cxx_use_heap>
- <label>Snooze time (minutes)</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkSpinButton</class>
- <name>snooze-time</name>
- <cxx_use_heap>True</cxx_use_heap>
- <can_focus>True</can_focus>
- <climb_rate>1</climb_rate>
- <digits>0</digits>
- <numeric>False</numeric>
- <update_policy>GTK_UPDATE_ALWAYS</update_policy>
- <snap>False</snap>
- <wrap>False</wrap>
- <value>5</value>
- <lower>1</lower>
- <upper>1440</upper>
- <step>1</step>
- <page>5</page>
- <page_size>5</page_size>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
-</widget>
-
-</GTK-Interface>
diff --git a/calendar/gui/dialogs/alarm-page.c b/calendar/gui/dialogs/alarm-page.c
deleted file mode 100644
index a4e0054c6b..0000000000
--- a/calendar/gui/dialogs/alarm-page.c
+++ /dev/null
@@ -1,778 +0,0 @@
-/* Evolution calendar - Alarm page of the calendar component dialogs
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Federico Mena-Quintero <federico@ximian.com>
- * Miguel de Icaza <miguel@ximian.com>
- * Seth Alves <alves@hungry.com>
- * JP Rosevear <jpr@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gtk/gtksignal.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <glade/glade.h>
-#include <gal/widgets/e-unicode.h>
-#include "cal-util/cal-util.h"
-#include "e-util/e-dialog-widgets.h"
-#include "alarm-page.h"
-
-
-
-/* Private part of the AlarmPage structure */
-struct _AlarmPagePrivate {
- /* Glade XML data */
- GladeXML *xml;
-
- /* Widgets from the Glade file */
-
- GtkWidget *main;
-
- GtkWidget *summary;
- GtkWidget *starting_date;
-
- GtkWidget *list;
- GtkWidget *add;
- GtkWidget *delete;
-
- GtkWidget *action;
- GtkWidget *interval_value;
- GtkWidget *value_units;
- GtkWidget *relative;
- GtkWidget *time;
-};
-
-
-
-static void alarm_page_class_init (AlarmPageClass *class);
-static void alarm_page_init (AlarmPage *apage);
-static void alarm_page_destroy (GtkObject *object);
-
-static GtkWidget *alarm_page_get_widget (EditorPage *page);
-static void alarm_page_fill_widgets (EditorPage *page, CalComponent *comp);
-static void alarm_page_fill_component (EditorPage *page, CalComponent *comp);
-static void alarm_page_set_summary (EditorPage *page, const char *summary);
-static char *alarm_page_get_summary (EditorPage *page);
-static void alarm_page_set_dtstart (EditorPage *page, time_t start);
-
-static EditorPageClass *parent_class = NULL;
-
-
-
-/**
- * alarm_page_get_type:
- *
- * Registers the #AlarmPage class if necessary, and returns the type ID
- * associated to it.
- *
- * Return value: The type ID of the #AlarmPage class.
- **/
-GtkType
-alarm_page_get_type (void)
-{
- static GtkType alarm_page_type;
-
- if (!alarm_page_type) {
- static const GtkTypeInfo alarm_page_info = {
- "AlarmPage",
- sizeof (AlarmPage),
- sizeof (AlarmPageClass),
- (GtkClassInitFunc) alarm_page_class_init,
- (GtkObjectInitFunc) alarm_page_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- alarm_page_type = gtk_type_unique (TYPE_EDITOR_PAGE, &alarm_page_info);
- }
-
- return alarm_page_type;
-}
-
-/* Class initialization function for the alarm page */
-static void
-alarm_page_class_init (AlarmPageClass *class)
-{
- EditorPageClass *editor_page_class;
- GtkObjectClass *object_class;
-
- editor_page_class = (EditorPageClass *) class;
- object_class = (GtkObjectClass *) class;
-
- parent_class = gtk_type_class (TYPE_EDITOR_PAGE);
-
- editor_page_class->get_widget = alarm_page_get_widget;
- editor_page_class->fill_widgets = alarm_page_fill_widgets;
- editor_page_class->fill_component = alarm_page_fill_component;
- editor_page_class->set_summary = alarm_page_set_summary;
- editor_page_class->get_summary = alarm_page_get_summary;
- editor_page_class->set_dtstart = alarm_page_set_dtstart;
-
- object_class->destroy = alarm_page_destroy;
-}
-
-/* Object initialization function for the alarm page */
-static void
-alarm_page_init (AlarmPage *apage)
-{
- AlarmPagePrivate *priv;
-
- priv = g_new0 (AlarmPagePrivate, 1);
- apage->priv = priv;
-
- priv->xml = NULL;
-
- priv->main = NULL;
- priv->summary = NULL;
- priv->starting_date = NULL;
- priv->list = NULL;
- priv->add = NULL;
- priv->delete = NULL;
- priv->action = NULL;
- priv->interval_value = NULL;
- priv->value_units = NULL;
- priv->relative = NULL;
- priv->time = NULL;
-}
-
-/* Frees all the alarm data and empties the list */
-static void
-free_alarms (AlarmPage *apage)
-{
- AlarmPagePrivate *priv;
- GtkCList *clist;
- int i;
-
- priv = apage->priv;
-
- clist = GTK_CLIST (priv->list);
-
- for (i = 0; i < clist->rows; i++) {
- CalComponentAlarm *alarm;
-
- alarm = gtk_clist_get_row_data (clist, i);
- g_assert (alarm != NULL);
- cal_component_alarm_free (alarm);
-
- gtk_clist_set_row_data (clist, i, NULL);
- }
-
- gtk_clist_clear (clist);
-}
-
-/* Destroy handler for the alarm page */
-static void
-alarm_page_destroy (GtkObject *object)
-{
- AlarmPage *apage;
- AlarmPagePrivate *priv;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (IS_ALARM_PAGE (object));
-
- apage = ALARM_PAGE (object);
- priv = apage->priv;
-
- if (priv->xml) {
- gtk_object_unref (GTK_OBJECT (priv->xml));
- priv->xml = NULL;
- }
-
- free_alarms (apage);
-
- g_free (priv);
- apage->priv = NULL;
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-
-
-/* get_widget handler for the alarm page */
-static GtkWidget *
-alarm_page_get_widget (EditorPage *page)
-{
- AlarmPage *apage;
- AlarmPagePrivate *priv;
-
- apage = ALARM_PAGE (page);
- priv = apage->priv;
-
- return priv->main;
-}
-
-/* Fills the widgets with default values */
-static void
-clear_widgets (AlarmPage *apage)
-{
- AlarmPagePrivate *priv;
-
- priv = apage->priv;
-
- /* Summary */
- e_dialog_editable_set (priv->summary, NULL);
-
- /* Start date */
- gtk_label_set_text (GTK_LABEL (priv->starting_date), "");
-
- /* List data */
- free_alarms (apage);
-}
-
-static char *
-get_alarm_duration_string (struct icaldurationtype *duration)
-{
- GString *string = g_string_new (NULL);
- char *ret;
-
- if (duration->days > 1)
- g_string_sprintf (string, _("%d days"), duration->days);
- else if (duration->days == 1)
- g_string_append (string, _("1 day"));
-
- if (duration->weeks > 1)
- g_string_sprintf (string, _("%d weeks"), duration->weeks);
- else if (duration->weeks == 1)
- g_string_append (string, _("1 week"));
-
- if (duration->hours > 1)
- g_string_sprintf (string, _("%d hours"), duration->hours);
- else if (duration->hours == 1)
- g_string_append (string, _("1 hour"));
-
- if (duration->minutes > 1)
- g_string_sprintf (string, _("%d minutes"), duration->minutes);
- else if (duration->minutes == 1)
- g_string_append (string, _("1 minute"));
-
- if (duration->seconds > 1)
- g_string_sprintf (string, _("%d seconds"), duration->seconds);
- else if (duration->seconds == 1)
- g_string_append (string, _("1 second"));
-
- ret = string->str;
- g_string_free (string, FALSE);
-
- return ret;
-}
-
-static char *
-get_alarm_string (CalComponentAlarm *alarm)
-{
- CalAlarmAction action;
- CalAlarmTrigger trigger;
- char string[256];
- char *base;
- char *str;
- char *dur;
-
- string [0] = '\0';
-
- cal_component_alarm_get_action (alarm, &action);
- cal_component_alarm_get_trigger (alarm, &trigger);
-
- switch (action) {
- case CAL_ALARM_AUDIO:
- base = _("Play a sound");
- break;
-
- case CAL_ALARM_DISPLAY:
- base = _("Show a dialog");
- break;
-
- case CAL_ALARM_EMAIL:
- base = _("Send an email");
- break;
-
- case CAL_ALARM_PROCEDURE:
- base = _("Run a program");
- break;
-
- case CAL_ALARM_NONE:
- case CAL_ALARM_UNKNOWN:
- base = _("Unknown");
- break;
- }
-
- /* FIXME: This does not look like it will localize correctly. */
-
- switch (trigger.type) {
- case CAL_ALARM_TRIGGER_RELATIVE_START:
- dur = get_alarm_duration_string (&trigger.u.rel_duration);
-
- if (trigger.u.rel_duration.is_neg)
- str = g_strdup_printf ("%s %s %s", base, dur,
- _(" before start of appointment"));
- else
- str = g_strdup_printf ("%s %s %s", base, dur,
- _(" after start of appointment"));
-
- g_free (dur);
- break;
-
- case CAL_ALARM_TRIGGER_RELATIVE_END:
- dur = get_alarm_duration_string (&trigger.u.rel_duration);
-
- if (trigger.u.rel_duration.is_neg)
- str = g_strdup_printf ("%s %s %s", base, dur,
- _(" before end of appointment"));
- else
- str = g_strdup_printf ("%s %s %s", base, dur,
- _(" after end of appointment"));
-
- g_free (dur);
- break;
- case CAL_ALARM_TRIGGER_NONE:
- case CAL_ALARM_TRIGGER_ABSOLUTE:
- str = g_strdup_printf ("%s %s", base,
- _("Unknown"));
- break;
- }
-
- return str;
-}
-
-/* Appends an alarm to the list */
-static void
-append_reminder (AlarmPage *apage, CalComponentAlarm *alarm)
-{
- AlarmPagePrivate *priv;
- GtkCList *clist;
- char *c[1];
- int i;
-
- priv = apage->priv;
-
- clist = GTK_CLIST (priv->list);
-
- c[0] = get_alarm_string (alarm);
- i = gtk_clist_append (clist, c);
-
- gtk_clist_set_row_data (clist, i, alarm);
- gtk_clist_select_row (clist, i, 0);
- g_free (c[0]);
-
- gtk_widget_set_sensitive (priv->delete, TRUE);
-}
-
-/* fill_widgets handler for the alarm page */
-static void
-alarm_page_fill_widgets (EditorPage *page, CalComponent *comp)
-{
- AlarmPage *apage;
- AlarmPagePrivate *priv;
- CalComponentText text;
- GList *alarms, *l;
- GtkCList *clist;
-
- apage = ALARM_PAGE (page);
- priv = apage->priv;
-
- clear_widgets (apage);
-
- /* Summary */
- cal_component_get_summary (comp, &text);
- e_dialog_editable_set (priv->summary, text.value);
-
- /* List */
- if (!cal_component_has_alarms (comp))
- return;
-
- alarms = cal_component_get_alarm_uids (comp);
-
- clist = GTK_CLIST (priv->list);
- for (l = alarms; l != NULL; l = l->next) {
- CalComponentAlarm *ca, *ca_copy;
- const char *auid;
-
- auid = l->data;
- ca = cal_component_get_alarm (comp, auid);
- g_assert (ca != NULL);
-
- ca_copy = cal_component_alarm_clone (ca);
- cal_component_alarm_free (ca);
-
- append_reminder (apage, ca_copy);
- }
- cal_obj_uid_list_free (alarms);
-}
-
-/* fill_component handler for the alarm page */
-static void
-alarm_page_fill_component (EditorPage *page, CalComponent *comp)
-{
- AlarmPage *apage;
- AlarmPagePrivate *priv;
- GList *list, *l;
- GtkCList *clist;
- int i;
-
- apage = ALARM_PAGE (page);
- priv = apage->priv;
-
- /* Remove all the alarms from the component */
-
- list = cal_component_get_alarm_uids (comp);
- for (l = list; l; l = l->next) {
- const char *auid;
-
- auid = l->data;
- cal_component_remove_alarm (comp, auid);
- }
- cal_obj_uid_list_free (list);
-
- /* Add the new alarms */
-
- clist = GTK_CLIST (priv->list);
- for (i = 0; i < clist->rows; i++) {
- CalComponentAlarm *alarm, *alarm_copy;
-
- alarm = gtk_clist_get_row_data (clist, i);
- g_assert (alarm != NULL);
-
- /* We clone the alarm to maintain the invariant that the alarm
- * structures in the list did *not* come from the component.
- */
-
- alarm_copy = cal_component_alarm_clone (alarm);
- cal_component_add_alarm (comp, alarm);
- cal_component_alarm_free (alarm_copy);
- }
-}
-
-/* set_summary handler for the alarm page */
-static void
-alarm_page_set_summary (EditorPage *page, const char *summary)
-{
- AlarmPage *apage;
- AlarmPagePrivate *priv;
-
- apage = ALARM_PAGE (page);
- priv = apage->priv;
-
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->summary), apage);
- e_utf8_gtk_entry_set_text (GTK_ENTRY (priv->summary), summary);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->summary), apage);
-}
-
-/* get_summary handler for the alarm page */
-static char *
-alarm_page_get_summary (EditorPage *page)
-{
- AlarmPage *apage;
- AlarmPagePrivate *priv;
-
- apage = ALARM_PAGE (page);
- priv = apage->priv;
-
- return e_utf8_gtk_entry_get_text (GTK_ENTRY (priv->summary));
-}
-
-/* set_dtstart handler for the alarm page */
-static void
-alarm_page_set_dtstart (EditorPage *page, time_t start)
-{
- AlarmPage *apage;
- AlarmPagePrivate *priv;
- char str[128];
- struct tm tm;
-
- apage = ALARM_PAGE (page);
- priv = apage->priv;
-
- tm = *localtime (&start);
- strftime (str, sizeof (str), _("%A %b %d %Y %H:%M:%S"), &tm);
-
- gtk_entry_set_text (GTK_ENTRY (priv->starting_date), str);
-}
-
-
-
-/* "relative" types */
-enum {
- BEFORE,
- AFTER
-};
-
-/* Time units */
-enum {
- MINUTES,
- HOURS,
- DAYS
-};
-
-/* Option menu maps */
-static const int action_map[] = {
- CAL_ALARM_DISPLAY,
- CAL_ALARM_AUDIO,
- CAL_ALARM_EMAIL,
- CAL_ALARM_PROCEDURE,
- -1
-};
-
-static const int value_map[] = {
- MINUTES,
- HOURS,
- DAYS,
- -1
-};
-
-static const int relative_map[] = {
- BEFORE,
- AFTER,
- -1
-};
-
-static const int time_map[] = {
- CAL_ALARM_TRIGGER_RELATIVE_START,
- CAL_ALARM_TRIGGER_RELATIVE_END,
- -1
-};
-
-/* Gets the widgets from the XML file and returns if they are all available. */
-static gboolean
-get_widgets (AlarmPage *apage)
-{
- AlarmPagePrivate *priv;
- GtkWidget *toplevel;
-
- priv = apage->priv;
-
-#define GW(name) glade_xml_get_widget (priv->xml, name)
-
- toplevel = GW ("alarm-toplevel");
- priv->main = GW ("alarm-page");
- if (!(toplevel && priv->main))
- return FALSE;
-
- gtk_widget_ref (priv->main);
- gtk_widget_unparent (priv->main);
- gtk_widget_destroy (toplevel);
-
- priv->summary = GW ("summary");
- priv->starting_date = GW ("starting-date");
-
- priv->list = GW ("list");
- priv->add = GW ("add");
- priv->delete = GW ("delete");
-
- priv->action = GW ("action");
- priv->interval_value = GW ("interval-value");
- priv->value_units = GW ("value-units");
- priv->relative = GW ("relative");
- priv->time = GW ("time");
-
-#undef GW
-
- return (priv->summary
- && priv->starting_date
- && priv->list
- && priv->add
- && priv->delete
- && priv->action
- && priv->interval_value
- && priv->value_units
- && priv->relative
- && priv->time);
-}
-
-/* Callback used when the summary changes; we emit the notification signal. */
-static void
-summary_changed_cb (GtkEditable *editable, gpointer data)
-{
- AlarmPage *apage;
-
- apage = ALARM_PAGE (data);
- editor_page_notify_summary_changed (EDITOR_PAGE (apage));
-}
-
-/* This is called when any field is changed; it notifies upstream. */
-static void
-field_changed_cb (GtkWidget *widget, gpointer data)
-{
- AlarmPage *apage;
-
- apage = ALARM_PAGE (data);
- editor_page_notify_changed (EDITOR_PAGE (apage));
-}
-
-/* Callback used for the "add reminder" button */
-static void
-add_clicked_cb (GtkButton *button, gpointer data)
-{
- AlarmPage *apage;
- AlarmPagePrivate *priv;
- CalComponentAlarm *alarm;
- CalAlarmTrigger trigger;
-
- apage = ALARM_PAGE (data);
- priv = apage->priv;
-
- alarm = cal_component_alarm_new ();
-
- memset (&trigger, 0, sizeof (CalAlarmTrigger));
- trigger.type = e_dialog_option_menu_get (priv->time, time_map);
- if (e_dialog_option_menu_get (priv->relative, relative_map) == BEFORE)
- trigger.u.rel_duration.is_neg = 1;
- else
- trigger.u.rel_duration.is_neg = 0;
-
- switch (e_dialog_option_menu_get (priv->value_units, value_map)) {
- case MINUTES:
- trigger.u.rel_duration.minutes = e_dialog_spin_get_int (priv->interval_value);
- break;
-
- case HOURS:
- trigger.u.rel_duration.hours = e_dialog_spin_get_int (priv->interval_value);
- break;
-
- case DAYS:
- trigger.u.rel_duration.days = e_dialog_spin_get_int (priv->interval_value);
- break;
-
- default:
- g_assert_not_reached ();
- }
- cal_component_alarm_set_trigger (alarm, trigger);
-
- cal_component_alarm_set_action (alarm, e_dialog_option_menu_get (priv->action, action_map));
-
- append_reminder (apage, alarm);
-}
-
-/* Callback used for the "delete reminder" button */
-static void
-delete_clicked_cb (GtkButton *button, gpointer data)
-{
- AlarmPage *apage;
- AlarmPagePrivate *priv;
- GtkCList *clist;
- CalComponentAlarm *alarm;
- int sel;
-
- apage = ALARM_PAGE (data);
- priv = apage->priv;
-
- clist = GTK_CLIST (priv->list);
- if (!clist->selection)
- return;
-
- sel = GPOINTER_TO_INT (clist->selection->data);
-
- alarm = gtk_clist_get_row_data (clist, sel);
- g_assert (alarm != NULL);
- cal_component_alarm_free (alarm);
- gtk_clist_set_row_data (clist, sel, NULL);
-
- gtk_clist_remove (clist, sel);
- if (sel >= clist->rows)
- sel--;
-
- if (clist->rows > 0)
- gtk_clist_select_row (clist, sel, 0);
- else
- gtk_widget_set_sensitive (priv->delete, FALSE);
-}
-
-/* Hooks the widget signals */
-static void
-init_widgets (AlarmPage *apage)
-{
- AlarmPagePrivate *priv;
-
- priv = apage->priv;
-
- /* Summary */
- gtk_signal_connect (GTK_OBJECT (priv->summary), "changed",
- GTK_SIGNAL_FUNC (summary_changed_cb), apage);
-
- /* Reminder buttons */
- gtk_signal_connect (GTK_OBJECT (priv->add), "clicked",
- GTK_SIGNAL_FUNC (add_clicked_cb), apage);
- gtk_signal_connect (GTK_OBJECT (priv->delete), "clicked",
- GTK_SIGNAL_FUNC (delete_clicked_cb), apage);
-
- /* Connect the default signal handler to use to make sure we notify
- * upstream of changes to the widget values.
- */
- gtk_signal_connect (GTK_OBJECT (priv->add), "clicked",
- GTK_SIGNAL_FUNC (field_changed_cb), apage);
- gtk_signal_connect (GTK_OBJECT (priv->delete), "clicked",
- GTK_SIGNAL_FUNC (field_changed_cb), apage);
-}
-
-
-
-/**
- * alarm_page_construct:
- * @apage: An alarm page.
- *
- * Constructs an alarm page by loading its Glade data.
- *
- * Return value: The same object as @apage, or NULL if the widgets could not be
- * created.
- **/
-AlarmPage *
-alarm_page_construct (AlarmPage *apage)
-{
- AlarmPagePrivate *priv;
-
- priv = apage->priv;
-
- priv->xml = glade_xml_new (EVOLUTION_GLADEDIR "/alarm-page.glade", NULL);
- if (!priv->xml) {
- g_message ("alarm_page_construct(): Could not load the Glade XML file!");
- return NULL;
- }
-
- if (!get_widgets (apage)) {
- g_message ("alarm_page_construct(): Could not find all widgets in the XML file!");
- return NULL;
- }
-
- init_widgets (apage);
-
- return apage;
-}
-
-/**
- * alarm_page_new:
- *
- * Creates a new alarm page.
- *
- * Return value: A newly-created alarm page, or NULL if the page could not be
- * created.
- **/
-AlarmPage *
-alarm_page_new (void)
-{
- AlarmPage *apage;
-
- apage = gtk_type_new (TYPE_ALARM_PAGE);
- if (!alarm_page_construct (apage)) {
- gtk_object_unref (GTK_OBJECT (apage));
- return NULL;
- }
-
- return apage;
-}
diff --git a/calendar/gui/dialogs/alarm-page.glade b/calendar/gui/dialogs/alarm-page.glade
deleted file mode 100644
index 3a4a8d6765..0000000000
--- a/calendar/gui/dialogs/alarm-page.glade
+++ /dev/null
@@ -1,381 +0,0 @@
-<?xml version="1.0"?>
-<GTK-Interface>
-
-<project>
- <name>alarm-page</name>
- <program_name>alarm-page</program_name>
- <directory></directory>
- <source_directory>.</source_directory>
- <pixmaps_directory>pixmaps</pixmaps_directory>
- <language>C</language>
- <gnome_support>True</gnome_support>
- <gettext_support>True</gettext_support>
- <output_main_file>False</output_main_file>
- <output_support_files>False</output_support_files>
- <output_build_files>False</output_build_files>
-</project>
-
-<widget>
- <class>GtkWindow</class>
- <name>alarm-toplevel</name>
- <title>window1</title>
- <type>GTK_WINDOW_TOPLEVEL</type>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>True</allow_grow>
- <auto_shrink>False</auto_shrink>
-
- <widget>
- <class>GtkVBox</class>
- <name>alarm-page</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame33</name>
- <label>Appointment Basics</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkTable</class>
- <name>table13</name>
- <border_width>4</border_width>
- <rows>2</rows>
- <columns>2</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>2</row_spacing>
- <column_spacing>2</column_spacing>
-
- <widget>
- <class>GtkLabel</class>
- <name>label62</name>
- <label>Su_mmary:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <default_focus_target>reminder-summary</default_focus_target>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>reminder-summary</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>True</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label63</name>
- <label>_Starting date:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>starting date</name>
- <label>assbarn it</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame34</name>
- <label>Reminders</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox53</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox54</name>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkOptionMenu</class>
- <name>reminder-action</name>
- <can_focus>True</can_focus>
- <items>Show a dialog
-Play a sound
-Send an email
-Run a program
-</items>
- <initial_choice>0</initial_choice>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkSpinButton</class>
- <name>reminder-interval-value</name>
- <can_focus>True</can_focus>
- <climb_rate>1</climb_rate>
- <digits>0</digits>
- <numeric>True</numeric>
- <update_policy>GTK_UPDATE_ALWAYS</update_policy>
- <snap>False</snap>
- <wrap>False</wrap>
- <value>1</value>
- <lower>0</lower>
- <upper>100</upper>
- <step>1</step>
- <page>10</page>
- <page_size>10</page_size>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkOptionMenu</class>
- <name>reminder-value-units</name>
- <can_focus>True</can_focus>
- <items>minute(s)
-hour(s)
-day(s)
-</items>
- <initial_choice>0</initial_choice>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkOptionMenu</class>
- <name>reminder-relative</name>
- <can_focus>True</can_focus>
- <items>before
-after
-</items>
- <initial_choice>0</initial_choice>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkOptionMenu</class>
- <name>reminder-time</name>
- <can_focus>True</can_focus>
- <items>start of appointment
-end of appointment
-</items>
- <initial_choice>0</initial_choice>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button9</name>
- <can_focus>True</can_focus>
- <label>Settings...</label>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox55</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow13</name>
- <hscrollbar_policy>GTK_POLICY_NEVER</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkCList</class>
- <name>reminder-list</name>
- <can_focus>True</can_focus>
- <columns>1</columns>
- <column_widths>80</column_widths>
- <selection_mode>GTK_SELECTION_BROWSE</selection_mode>
- <show_titles>False</show_titles>
- <shadow_type>GTK_SHADOW_IN</shadow_type>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>CList:title</child_name>
- <name>label64</name>
- <label>label55</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVButtonBox</class>
- <name>vbuttonbox2</name>
- <layout_style>GTK_BUTTONBOX_START</layout_style>
- <spacing>10</spacing>
- <child_min_width>85</child_min_width>
- <child_min_height>27</child_min_height>
- <child_ipad_x>7</child_ipad_x>
- <child_ipad_y>0</child_ipad_y>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>reminder-add</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <label>Add</label>
- <relief>GTK_RELIEF_NORMAL</relief>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>reminder-delete</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <label>Delete</label>
- <relief>GTK_RELIEF_NORMAL</relief>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
-</widget>
-
-</GTK-Interface>
diff --git a/calendar/gui/dialogs/alarm-page.h b/calendar/gui/dialogs/alarm-page.h
deleted file mode 100644
index 1cb0b301bd..0000000000
--- a/calendar/gui/dialogs/alarm-page.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Evolution calendar - Alarm page of the calendar component dialogs
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Federico Mena-Quintero <federico@ximian.com>
- * Miguel de Icaza <miguel@ximian.com>
- * Seth Alves <alves@hungry.com>
- * JP Rosevear <jpr@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef ALARM_PAGE_H
-#define ALARM_PAGE_H
-
-#include "editor-page.h"
-
-BEGIN_GNOME_DECLS
-
-
-
-#define TYPE_ALARM_PAGE (alarm_page_get_type ())
-#define ALARM_PAGE(obj) (GTK_CHECK_CAST ((obj), TYPE_ALARM_PAGE, AlarmPage))
-#define ALARM_PAGE_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), TYPE_ALARM_PAGE, \
- AlarmPageClass))
-#define IS_ALARM_PAGE(obj) (GTK_CHECK_TYPE ((obj), TYPE_ALARM_PAGE))
-#define IS_ALARM_PAGE_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), TYPE_ALARM_PAGE))
-
-typedef struct _AlarmPagePrivate AlarmPagePrivate;
-
-typedef struct {
- EditorPage page;
-
- /* Private data */
- AlarmPagePrivate *priv;
-} AlarmPage;
-
-typedef struct {
- EditorPageClass parent_class;
-} AlarmPageClass;
-
-GtkType alarm_page_get_type (void);
-
-AlarmPage *alarm_page_construct (AlarmPage *apage);
-
-AlarmPage *alarm_page_new (void);
-
-
-
-END_GNOME_DECLS
-
-#endif
diff --git a/calendar/gui/dialogs/cal-prefs-dialog.c b/calendar/gui/dialogs/cal-prefs-dialog.c
deleted file mode 100644
index 9839318e8e..0000000000
--- a/calendar/gui/dialogs/cal-prefs-dialog.c
+++ /dev/null
@@ -1,456 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 2000, Helix Code, Inc.
- * Copyright 2000, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * CalPrefsDialog - a GtkObject which handles a libglade-loaded dialog
- * to edit the calendar preference settings.
- */
-
-#include <config.h>
-#include <glade/glade.h>
-#include <gal/util/e-util.h>
-#include <e-util/e-dialog-widgets.h>
-#include <widgets/misc/e-dateedit.h>
-#include "cal-prefs-dialog.h"
-#include "../calendar-config.h"
-#include "../calendar-commands.h"
-#include "../e-tasks.h"
-
-
-typedef struct {
- /* Glade XML data */
- GladeXML *xml;
-
- GtkWidget *dialog;
-
- GtkWidget *working_days[7];
- GtkWidget *week_start_day;
- GtkWidget *start_of_day;
- GtkWidget *end_of_day;
- GtkWidget *use_12_hour;
- GtkWidget *use_24_hour;
- GtkWidget *time_divisions;
- GtkWidget *show_end_times;
- GtkWidget *compress_weekend;
- GtkWidget *dnav_show_week_no;
-} CalPrefsDialogPrivate;
-
-static const int week_start_day_map[] = {
- 1, 2, 3, 4, 5, 6, 0, -1
-};
-
-static const int time_division_map[] = {
- 60, 30, 15, 10, 5, -1
-};
-
-static void cal_prefs_dialog_class_init (CalPrefsDialogClass *class);
-static void cal_prefs_dialog_init (CalPrefsDialog *prefs);
-static gboolean get_widgets (CalPrefsDialog *prefs);
-static void cal_prefs_dialog_destroy (GtkObject *object);
-static void cal_prefs_dialog_init_widgets (CalPrefsDialog *prefs);
-static void cal_prefs_dialog_button_clicked (GtkWidget *dialog,
- gint button,
- CalPrefsDialog *prefs);
-static void cal_prefs_dialog_use_24_hour_toggled(GtkWidget *button,
- CalPrefsDialog *prefs);
-static void cal_prefs_dialog_show_config (CalPrefsDialog *prefs);
-static void cal_prefs_dialog_update_config (CalPrefsDialog *prefs);
-
-GtkWidget* cal_prefs_dialog_create_time_edit (void);
-
-static GtkObjectClass *parent_class;
-
-E_MAKE_TYPE (cal_prefs_dialog, "CalPrefsDialog", CalPrefsDialog,
- cal_prefs_dialog_class_init, cal_prefs_dialog_init,
- GTK_TYPE_OBJECT)
-
-
-static void
-cal_prefs_dialog_class_init (CalPrefsDialogClass *class)
-{
- GtkObjectClass *object_class;
-
- object_class = (GtkObjectClass *) class;
-
- parent_class = gtk_type_class (GTK_TYPE_OBJECT);
-
- object_class->destroy = cal_prefs_dialog_destroy;
-}
-
-
-static void
-cal_prefs_dialog_init (CalPrefsDialog *prefs)
-{
- CalPrefsDialogPrivate *priv;
-
- priv = g_new0 (CalPrefsDialogPrivate, 1);
- prefs->priv = priv;
-
-}
-
-
-/**
- * cal_prefs_dialog_new:
- * @Returns: a new #CalPrefsDialog.
- *
- * Creates a new #CalPrefsDialog.
- **/
-CalPrefsDialog *
-cal_prefs_dialog_new (void)
-{
- CalPrefsDialog *prefs;
-
- prefs = CAL_PREFS_DIALOG (gtk_type_new (cal_prefs_dialog_get_type ()));
- return cal_prefs_dialog_construct (prefs);
-}
-
-
-/**
- * cal_prefs_dialog_construct:
- * @prefs: A #CalPrefsDialog.
- *
- * Constructs a task editor by loading its Glade XML file.
- *
- * Return value: The same object as @prefs, or NULL if the widgets could not be
- * created. In the latter case, the task editor will automatically be
- * destroyed.
- **/
-CalPrefsDialog *
-cal_prefs_dialog_construct (CalPrefsDialog *prefs)
-{
- CalPrefsDialogPrivate *priv;
-
- g_return_val_if_fail (IS_CAL_PREFS_DIALOG (prefs), NULL);
-
- priv = prefs->priv;
-
- /* Load the content widgets */
-
- priv->xml = glade_xml_new (EVOLUTION_GLADEDIR "/cal-prefs-dialog.glade", NULL);
- if (!priv->xml) {
- g_message ("cal_prefs_dialog_construct(): Could not load the Glade XML file!");
- goto error;
- }
-
- if (!get_widgets (prefs)) {
- g_message ("cal_prefs_dialog_construct(): Could not find all widgets in the XML file!");
- goto error;
- }
-
- cal_prefs_dialog_init_widgets (prefs);
-
- cal_prefs_dialog_show_config (prefs);
-
- gtk_widget_show (priv->dialog);
-
- return prefs;
-
- error:
-
- gtk_object_unref (GTK_OBJECT (prefs));
- return NULL;
-}
-
-
-/* Gets the widgets from the XML file and returns if they are all available.
- */
-static gboolean
-get_widgets (CalPrefsDialog *prefs)
-{
- CalPrefsDialogPrivate *priv;
-
- priv = prefs->priv;
-
-#define GW(name) glade_xml_get_widget (priv->xml, name)
-
- priv->dialog = GW ("cal-prefs-dialog");
-
- /* The indices must match the mktime() values. */
- priv->working_days[0] = GW ("sun_button");
- priv->working_days[1] = GW ("mon_button");
- priv->working_days[2] = GW ("tue_button");
- priv->working_days[3] = GW ("wed_button");
- priv->working_days[4] = GW ("thu_button");
- priv->working_days[5] = GW ("fri_button");
- priv->working_days[6] = GW ("sat_button");
-
- priv->week_start_day = GW ("first_day_of_week");
- priv->start_of_day = GW ("start_of_day");
- priv->end_of_day = GW ("end_of_day");
- priv->use_12_hour = GW ("use_12_hour");
- priv->use_24_hour = GW ("use_24_hour");
- priv->time_divisions = GW ("time_divisions");
- priv->show_end_times = GW ("show_end_times");
- priv->compress_weekend = GW ("compress_weekend");
- priv->dnav_show_week_no = GW ("dnav_show_week_no");
-
-#undef GW
-
- return (priv->dialog
- && priv->working_days[0]
- && priv->working_days[1]
- && priv->working_days[2]
- && priv->working_days[3]
- && priv->working_days[4]
- && priv->working_days[5]
- && priv->working_days[6]
- && priv->week_start_day
- && priv->start_of_day
- && priv->end_of_day
- && priv->use_12_hour
- && priv->use_24_hour
- && priv->time_divisions
- && priv->show_end_times
- && priv->compress_weekend
- && priv->dnav_show_week_no);
-}
-
-
-static void
-cal_prefs_dialog_destroy (GtkObject *object)
-{
- CalPrefsDialog *prefs;
- CalPrefsDialogPrivate *priv;
-
- g_return_if_fail (IS_CAL_PREFS_DIALOG (object));
-
- prefs = CAL_PREFS_DIALOG (object);
- priv = prefs->priv;
-
-
- g_free (priv);
- prefs->priv = NULL;
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-
-/* 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_time_popup_range (E_DATE_EDIT (dedit), 0, 24);
- e_date_edit_set_show_date (E_DATE_EDIT (dedit), FALSE);
-
- return dedit;
-}
-
-
-void
-cal_prefs_dialog_show (CalPrefsDialog *prefs)
-{
- CalPrefsDialogPrivate *priv;
-
- g_return_if_fail (IS_CAL_PREFS_DIALOG (prefs));
-
- priv = prefs->priv;
-
- /* If the dialog is already show just raise it, otherwise refresh the
- config settings and show it. */
- if (GTK_WIDGET_MAPPED (priv->dialog)) {
- gdk_window_raise (priv->dialog->window);
- } else {
- cal_prefs_dialog_show_config (prefs);
- gtk_widget_show (priv->dialog);
- }
-}
-
-
-/* Connects any necessary signal handlers. */
-static void
-cal_prefs_dialog_init_widgets (CalPrefsDialog *prefs)
-{
- CalPrefsDialogPrivate *priv;
-
- priv = prefs->priv;
-
- gtk_signal_connect (GTK_OBJECT (priv->dialog), "clicked",
- GTK_SIGNAL_FUNC (cal_prefs_dialog_button_clicked),
- prefs);
-
- gtk_signal_connect (GTK_OBJECT (priv->use_24_hour), "toggled",
- GTK_SIGNAL_FUNC (cal_prefs_dialog_use_24_hour_toggled),
- prefs);
-}
-
-
-static void
-cal_prefs_dialog_button_clicked (GtkWidget *dialog,
- gint button,
- CalPrefsDialog *prefs)
-{
- CalPrefsDialogPrivate *priv;
-
- g_return_if_fail (IS_CAL_PREFS_DIALOG (prefs));
-
- priv = prefs->priv;
-
- /* OK & Apply buttons update the config settings. */
- if (button == 0 || button == 1)
- cal_prefs_dialog_update_config (prefs);
-
- /* OK & Close buttons close the dialog. */
- if (button == 0 || button == 2)
- gtk_widget_hide (priv->dialog);
-}
-
-
-static void
-cal_prefs_dialog_use_24_hour_toggled (GtkWidget *button,
- CalPrefsDialog *prefs)
-{
- CalPrefsDialogPrivate *priv;
- gboolean use_24_hour;
-
- priv = prefs->priv;
-
- use_24_hour = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->use_24_hour));
-
- e_date_edit_set_use_24_hour_format (E_DATE_EDIT (priv->start_of_day),
- use_24_hour);
- e_date_edit_set_use_24_hour_format (E_DATE_EDIT (priv->end_of_day),
- use_24_hour);
-}
-
-
-/* Shows the current config settings in the dialog. */
-static void
-cal_prefs_dialog_show_config (CalPrefsDialog *prefs)
-{
- CalPrefsDialogPrivate *priv;
- CalWeekdays working_days;
- gint mask, day, week_start_day, time_divisions;
-
- priv = prefs->priv;
-
- /* Working Days. */
- working_days = calendar_config_get_working_days ();
- mask = 1 << 0;
- for (day = 0; day < 7; day++) {
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->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 (priv->week_start_day, week_start_day,
- week_start_day_map);
-
- /* Start of Day. */
- e_date_edit_set_time_of_day (E_DATE_EDIT (priv->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 (priv->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 ())
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->use_24_hour), TRUE);
- else
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->use_12_hour), TRUE);
-
- /* Time Divisions. */
- time_divisions = calendar_config_get_time_divisions ();
- e_dialog_option_menu_set (priv->time_divisions, time_divisions,
- time_division_map);
-
- /* Show Appointment End Times. */
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->show_end_times),
- calendar_config_get_show_event_end ());
-
- /* Compress Weekend. */
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->compress_weekend), calendar_config_get_compress_weekend ());
-
- /* Date Navigator - Show Week Numbers. */
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->dnav_show_week_no), calendar_config_get_dnav_show_week_no ());
-}
-
-
-/* Updates the config values based on the settings in the dialog. */
-static void
-cal_prefs_dialog_update_config (CalPrefsDialog *prefs)
-{
- CalPrefsDialogPrivate *priv;
- CalWeekdays working_days;
- gint mask, day, week_start_day, time_divisions, hour, minute;
-
- priv = prefs->priv;
-
- /* Working Days. */
- working_days = 0;
- mask = 1 << 0;
- for (day = 0; day < 7; day++) {
- if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->working_days[day])))
- working_days |= mask;
- mask <<= 1;
- }
- calendar_config_set_working_days (working_days);
-
- /* Week Start Day. */
- week_start_day = e_dialog_option_menu_get (priv->week_start_day,
- week_start_day_map);
- calendar_config_set_week_start_day (week_start_day);
-
- /* Start of Day. */
- e_date_edit_get_time_of_day (E_DATE_EDIT (priv->start_of_day),
- &hour, &minute);
- calendar_config_set_day_start_hour (hour);
- calendar_config_set_day_start_minute (minute);
-
- /* End of Day. */
- e_date_edit_get_time_of_day (E_DATE_EDIT (priv->end_of_day),
- &hour, &minute);
- calendar_config_set_day_end_hour (hour);
- calendar_config_set_day_end_minute (minute);
-
- /* 12/24 Hour Format. */
- calendar_config_set_24_hour_format (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->use_24_hour)));
-
- /* Time Divisions. */
- time_divisions = e_dialog_option_menu_get (priv->time_divisions,
- time_division_map);
- calendar_config_set_time_divisions (time_divisions);
-
- /* Show Appointment End Times. */
- calendar_config_set_show_event_end (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->show_end_times)));
-
- /* Compress Weekend. */
- calendar_config_set_compress_weekend (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->compress_weekend)));
-
- /* Date Navigator - Show Week Numbers. */
- calendar_config_set_dnav_show_week_no (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->dnav_show_week_no)));
-
- calendar_config_write ();
- update_all_config_settings ();
- e_tasks_update_all_config_settings ();
-}
diff --git a/calendar/gui/dialogs/cal-prefs-dialog.glade b/calendar/gui/dialogs/cal-prefs-dialog.glade
deleted file mode 100644
index f6eccb163d..0000000000
--- a/calendar/gui/dialogs/cal-prefs-dialog.glade
+++ /dev/null
@@ -1,1241 +0,0 @@
-<?xml version="1.0"?>
-<GTK-Interface>
-
-<project>
- <name>preferences</name>
- <program_name>preferences</program_name>
- <directory></directory>
- <source_directory>src</source_directory>
- <pixmaps_directory>pixmaps</pixmaps_directory>
- <language>C</language>
- <gnome_support>True</gnome_support>
- <gettext_support>True</gettext_support>
-</project>
-
-<widget>
- <class>GnomeDialog</class>
- <name>cal-prefs-dialog</name>
- <title>Calendar Preferences</title>
- <type>GTK_WINDOW_TOPLEVEL</type>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>False</allow_grow>
- <auto_shrink>False</auto_shrink>
- <auto_close>False</auto_close>
- <hide_on_close>True</hide_on_close>
-
- <widget>
- <class>GtkVBox</class>
- <child_name>GnomeDialog:vbox</child_name>
- <name>vbox1</name>
- <homogeneous>False</homogeneous>
- <spacing>8</spacing>
- <child>
- <padding>4</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHButtonBox</class>
- <child_name>GnomeDialog:action_area</child_name>
- <name>hbuttonbox1</name>
- <layout_style>GTK_BUTTONBOX_END</layout_style>
- <spacing>8</spacing>
- <child_min_width>85</child_min_width>
- <child_min_height>27</child_min_height>
- <child_ipad_x>7</child_ipad_x>
- <child_ipad_y>0</child_ipad_y>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- <pack>GTK_PACK_END</pack>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>button1</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button2</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <stock_button>GNOME_STOCK_BUTTON_APPLY</stock_button>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button3</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <stock_button>GNOME_STOCK_BUTTON_CLOSE</stock_button>
- </widget>
- </widget>
-
- <widget>
- <class>GtkNotebook</class>
- <name>notebook1</name>
- <can_focus>True</can_focus>
- <show_tabs>True</show_tabs>
- <show_border>True</show_border>
- <tab_pos>GTK_POS_TOP</tab_pos>
- <scrollable>False</scrollable>
- <tab_hborder>2</tab_hborder>
- <tab_vborder>2</tab_vborder>
- <popup_enable>False</popup_enable>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox8</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>6</spacing>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame9</name>
- <label>Work week</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox9</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>3</spacing>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox8</name>
- <homogeneous>True</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>mon_button</name>
- <can_focus>True</can_focus>
- <label>Mon</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>tue_button</name>
- <can_focus>True</can_focus>
- <label>Tue</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>wed_button</name>
- <can_focus>True</can_focus>
- <label>Wed</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>thu_button</name>
- <can_focus>True</can_focus>
- <label>Thu</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>fri_button</name>
- <can_focus>True</can_focus>
- <label>Fri</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>sat_button</name>
- <can_focus>True</can_focus>
- <label>Sat</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>sun_button</name>
- <can_focus>True</can_focus>
- <label>Sun</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox9</name>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label16</name>
- <label>First day of week:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkOptionMenu</class>
- <name>first_day_of_week</name>
- <can_focus>True</can_focus>
- <items>Monday
-Tuesday
-Wednesday
-Thursday
-Friday
-Saturday
-Sunday
-</items>
- <initial_choice>0</initial_choice>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox11</name>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label17</name>
- <label>Start of day:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>Custom</class>
- <name>start_of_day</name>
- <creation_function>cal_prefs_dialog_create_time_edit</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Tue, 10 Oct 2000 15:12:12 GMT</last_modification_time>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label18</name>
- <label>End of day:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>Custom</class>
- <name>end_of_day</name>
- <creation_function>cal_prefs_dialog_create_time_edit</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Tue, 10 Oct 2000 15:12:21 GMT</last_modification_time>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame10</name>
- <label>Display options</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkTable</class>
- <name>table4</name>
- <border_width>4</border_width>
- <rows>4</rows>
- <columns>3</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>0</row_spacing>
- <column_spacing>4</column_spacing>
-
- <widget>
- <class>GtkLabel</class>
- <name>label19</name>
- <label>Time divisions:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>7.45058e-09</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label20</name>
- <label>Time format:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>show_end_times</name>
- <can_focus>True</can_focus>
- <label>Show appointment end times</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <left_attach>0</left_attach>
- <right_attach>3</right_attach>
- <top_attach>2</top_attach>
- <bottom_attach>3</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>compress_weekend</name>
- <can_focus>True</can_focus>
- <label>Compress weekends</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <left_attach>0</left_attach>
- <right_attach>3</right_attach>
- <top_attach>3</top_attach>
- <bottom_attach>4</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox10</name>
- <homogeneous>True</homogeneous>
- <spacing>4</spacing>
- <child>
- <left_attach>1</left_attach>
- <right_attach>3</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>use_12_hour</name>
- <can_focus>True</can_focus>
- <label>12 hour (am/pm)</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>time_format_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>use_24_hour</name>
- <can_focus>True</can_focus>
- <label>24 hour</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>time_format_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkAlignment</class>
- <name>alignment4</name>
- <xalign>7.45058e-09</xalign>
- <yalign>0.5</yalign>
- <xscale>0</xscale>
- <yscale>1</yscale>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
-
- <widget>
- <class>GtkOptionMenu</class>
- <name>time_divisions</name>
- <can_focus>True</can_focus>
- <items>60 minutes
-30 minutes
-15 minutes
-10 minutes
-05 minutes
-</items>
- <initial_choice>0</initial_choice>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame11</name>
- <label>Date navigator options</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>dnav_show_week_no</name>
- <border_width>4</border_width>
- <can_focus>True</can_focus>
- <label>Show week numbers</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>Notebook:tab</child_name>
- <name>label7</name>
- <label>Calendar</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox3</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox4</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame3</name>
- <label>Show</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox4</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>checkbutton1</name>
- <can_focus>True</can_focus>
- <label>Due Date</label>
- <active>True</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>checkbutton2</name>
- <can_focus>True</can_focus>
- <label>Time Until Due</label>
- <active>True</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>checkbutton3</name>
- <can_focus>True</can_focus>
- <label>Priority</label>
- <active>True</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame4</name>
- <label>Highlight</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox5</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>checkbutton4</name>
- <can_focus>True</can_focus>
- <label>Overdue Items</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>checkbutton5</name>
- <can_focus>True</can_focus>
- <label>Items Due Today</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>checkbutton6</name>
- <can_focus>True</can_focus>
- <label>Items Not Yet Due</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame5</name>
- <label>Colors</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkTable</class>
- <name>table3</name>
- <border_width>4</border_width>
- <rows>3</rows>
- <columns>2</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>4</row_spacing>
- <column_spacing>4</column_spacing>
-
- <widget>
- <class>GnomeColorPicker</class>
- <name>colorpicker1</name>
- <can_focus>True</can_focus>
- <dither>True</dither>
- <use_alpha>False</use_alpha>
- <title>Pick a color</title>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>False</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GnomeColorPicker</class>
- <name>colorpicker2</name>
- <can_focus>True</can_focus>
- <dither>True</dither>
- <use_alpha>False</use_alpha>
- <title>Pick a color</title>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>False</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GnomeColorPicker</class>
- <name>colorpicker3</name>
- <can_focus>True</can_focus>
- <dither>True</dither>
- <use_alpha>False</use_alpha>
- <title>Pick a color</title>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>2</top_attach>
- <bottom_attach>3</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>False</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkAlignment</class>
- <name>alignment1</name>
- <xalign>1</xalign>
- <yalign>0.5</yalign>
- <xscale>1</xscale>
- <yscale>1</yscale>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label8</name>
- <label>Items Not Yet Due:</label>
- <justify>GTK_JUSTIFY_RIGHT</justify>
- <wrap>False</wrap>
- <xalign>1</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
-
- <widget>
- <class>GtkAlignment</class>
- <name>alignment2</name>
- <xalign>1</xalign>
- <yalign>0.5</yalign>
- <xscale>1</xscale>
- <yscale>1</yscale>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label9</name>
- <label>Items Due Today:</label>
- <justify>GTK_JUSTIFY_RIGHT</justify>
- <wrap>True</wrap>
- <xalign>1</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
-
- <widget>
- <class>GtkAlignment</class>
- <name>alignment3</name>
- <xalign>1</xalign>
- <yalign>0.5</yalign>
- <xscale>1</xscale>
- <yscale>1</yscale>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>2</top_attach>
- <bottom_attach>3</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label10</name>
- <label>Overdue Items:</label>
- <justify>GTK_JUSTIFY_RIGHT</justify>
- <wrap>False</wrap>
- <xalign>1</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>Notebook:tab</child_name>
- <name>label11</name>
- <label>TaskPad</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox6</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame6</name>
- <border_width>4</border_width>
- <label>Defaults</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>4</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox5</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>checkbutton7</name>
- <border_width>2</border_width>
- <can_focus>True</can_focus>
- <label>Remind me of all appointments</label>
- <active>True</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkSpinButton</class>
- <name>spinbutton1</name>
- <can_focus>True</can_focus>
- <climb_rate>1</climb_rate>
- <digits>0</digits>
- <numeric>False</numeric>
- <update_policy>GTK_UPDATE_ALWAYS</update_policy>
- <snap>False</snap>
- <wrap>False</wrap>
- <value>1</value>
- <lower>0</lower>
- <upper>100</upper>
- <step>1</step>
- <page>10</page>
- <page_size>10</page_size>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label12</name>
- <label>minutes before they occur.</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>3</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame7</name>
- <border_width>4</border_width>
- <label>Visual Alarms</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>4</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>checkbutton8</name>
- <border_width>4</border_width>
- <can_focus>True</can_focus>
- <label>Beep when alarm windows appear.</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame8</name>
- <border_width>4</border_width>
- <label>Audio Alarms</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>4</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox7</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox6</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>checkbutton9</name>
- <can_focus>True</can_focus>
- <label>Alarms timeout after</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkSpinButton</class>
- <name>spinbutton2</name>
- <can_focus>True</can_focus>
- <climb_rate>1</climb_rate>
- <digits>0</digits>
- <numeric>False</numeric>
- <update_policy>GTK_UPDATE_ALWAYS</update_policy>
- <snap>False</snap>
- <wrap>False</wrap>
- <value>5</value>
- <lower>0</lower>
- <upper>100</upper>
- <step>1</step>
- <page>10</page>
- <page_size>10</page_size>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label13</name>
- <label>seconds.</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox7</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>checkbutton10</name>
- <can_focus>True</can_focus>
- <label>Enable snoozing for</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkSpinButton</class>
- <name>spinbutton3</name>
- <can_focus>True</can_focus>
- <climb_rate>1</climb_rate>
- <digits>0</digits>
- <numeric>False</numeric>
- <update_policy>GTK_UPDATE_ALWAYS</update_policy>
- <snap>False</snap>
- <wrap>False</wrap>
- <value>600</value>
- <lower>0</lower>
- <upper>1000</upper>
- <step>1</step>
- <page>10</page>
- <page_size>10</page_size>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label14</name>
- <label>seconds.</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>Notebook:tab</child_name>
- <name>label15</name>
- <label>Reminders</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
- </widget>
-</widget>
-
-</GTK-Interface>
diff --git a/calendar/gui/dialogs/cal-prefs-dialog.h b/calendar/gui/dialogs/cal-prefs-dialog.h
deleted file mode 100644
index 9d744f806d..0000000000
--- a/calendar/gui/dialogs/cal-prefs-dialog.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 2000, Helix Code, Inc.
- * Copyright 2000, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * CalPrefsDialog - a GtkObject which handles a libglade-loaded dialog
- * to edit the calendar preference settings.
- */
-
-#ifndef _CAL_PREFS_DIALOG_H_
-#define _CAL_PREFS_DIALOG_H_
-
-#include <gtk/gtkobject.h>
-#include <libgnome/gnome-defs.h>
-
-BEGIN_GNOME_DECLS
-
-
-#define CAL_PREFS_DIALOG(obj) GTK_CHECK_CAST (obj, cal_prefs_dialog_get_type (), CalPrefsDialog)
-#define CAL_PREFS_DIALOG_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, cal_prefs_dialog_get_type (), CalPrefsDialogClass)
-#define IS_CAL_PREFS_DIALOG(obj) GTK_CHECK_TYPE (obj, cal_prefs_dialog_get_type ())
-
-
-typedef struct _CalPrefsDialog CalPrefsDialog;
-typedef struct _CalPrefsDialogClass CalPrefsDialogClass;
-
-struct _CalPrefsDialog
-{
- GtkObject object;
-
- /* Private data */
- gpointer priv;
-};
-
-struct _CalPrefsDialogClass
-{
- GtkObjectClass parent_class;
-};
-
-
-GtkType cal_prefs_dialog_get_type (void);
-CalPrefsDialog* cal_prefs_dialog_construct (CalPrefsDialog *prefs);
-CalPrefsDialog* cal_prefs_dialog_new (void);
-
-void cal_prefs_dialog_show (CalPrefsDialog *prefs);
-
-END_GNOME_DECLS
-
-#endif /* _CAL_PREFS_DIALOG_H_ */
diff --git a/calendar/gui/dialogs/delete-comp.c b/calendar/gui/dialogs/delete-comp.c
deleted file mode 100644
index a5ba1162db..0000000000
--- a/calendar/gui/dialogs/delete-comp.c
+++ /dev/null
@@ -1,148 +0,0 @@
-/* Evolution calendar - Delete calendar component dialog
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <glib.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <libgnomeui/gnome-dialog.h>
-#include <libgnomeui/gnome-dialog-util.h>
-#include <libgnomeui/gnome-uidefs.h>
-#include <gal/widgets/e-unicode.h>
-#include "delete-comp.h"
-
-
-
-/**
- * delete_component_dialog:
- * @comp: A calendar component if a single component is to be deleted, or NULL
- * if more that one component is to be deleted.
- * @n_comps: Number of components that are to be deleted.
- * @vtype: Type of the components that are to be deleted. This is ignored
- * if only one component is to be deleted, and the vtype is extracted from
- * the component instead.
- * @widget: A widget to use as a basis for conversion from UTF8 into font
- * encoding.
- *
- * Pops up a dialog box asking the user whether he wants to delete a number
- * of calendar components.
- *
- * Return value: TRUE if the user clicked Yes, FALSE otherwise.
- **/
-gboolean
-delete_component_dialog (CalComponent *comp,
- int n_comps, CalComponentVType vtype,
- GtkWidget *widget)
-{
- char *str;
- GtkWidget *dialog;
-
- if (comp) {
- g_return_val_if_fail (IS_CAL_COMPONENT (comp), FALSE);
- g_return_val_if_fail (n_comps == 1, FALSE);
- } else {
- g_return_val_if_fail (n_comps > 1, FALSE);
- g_return_val_if_fail (vtype != CAL_COMPONENT_NO_TYPE, FALSE);
- }
-
- g_return_val_if_fail (widget != NULL, FALSE);
- g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
-
- if (comp) {
- CalComponentText summary;
- char *tmp;
-
- vtype = cal_component_get_vtype (comp);
- cal_component_get_summary (comp, &summary);
-
- tmp = e_utf8_to_gtk_string (widget, summary.value);
-
- switch (vtype) {
- case CAL_COMPONENT_EVENT:
- if (tmp)
- str = g_strdup_printf (_("Are you sure you want to delete "
- "the appointment `%s'?"), tmp);
- else
- str = g_strdup (_("Are you sure you want to delete this "
- "untitled appointment?"));
- break;
-
- case CAL_COMPONENT_TODO:
- if (tmp)
- str = g_strdup_printf (_("Are you sure you want to delete "
- "the task `%s'?"), tmp);
- else
- str = g_strdup (_("Are you sure you want to delete this "
- "untitled task?"));
- break;
-
- case CAL_COMPONENT_JOURNAL:
- if (tmp)
- str = g_strdup_printf (_("Are you sure you want to delete "
- "the journal entry `%s'?"), tmp);
- else
- str = g_strdup (_("Are you sure want to delete this "
- "untitled journal entry?"));
- break;
-
- default:
- g_message ("delete_component_dialog(): Cannot handle object of type %d",
- vtype);
- g_free (tmp);
- return FALSE;
- }
-
- g_free (tmp);
- } else {
- switch (vtype) {
- case CAL_COMPONENT_EVENT:
- str = g_strdup_printf (_("Are you sure you want to delete "
- "%d appointments?"), n_comps);
- break;
-
- case CAL_COMPONENT_TODO:
- str = g_strdup_printf (_("Are you sure you want to delete "
- "%d tasks?"), n_comps);
- break;
-
- case CAL_COMPONENT_JOURNAL:
- str = g_strdup_printf (_("Are you sure you want to delete "
- "%d journal entries?"), n_comps);
- break;
-
- default:
- g_message ("delete_component_dialog(): Cannot handle objects of type %d",
- vtype);
- return FALSE;
- }
- }
-
- dialog = gnome_question_dialog_modal (str, NULL, NULL);
- g_free (str);
-
- if (gnome_dialog_run (GNOME_DIALOG (dialog)) == GNOME_YES)
- return TRUE;
- else
- return FALSE;
-}
diff --git a/calendar/gui/dialogs/delete-comp.h b/calendar/gui/dialogs/delete-comp.h
deleted file mode 100644
index 3b728a3f7e..0000000000
--- a/calendar/gui/dialogs/delete-comp.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Evolution calendar - Delete calendar component dialog
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef DELETE_COMP_H
-#define DELETE_COMP_H
-
-#include <gtk/gtkwidget.h>
-#include <cal-util/cal-component.h>
-
-gboolean delete_component_dialog (CalComponent *comp,
- int n_comps, CalComponentVType vtype,
- GtkWidget *widget);
-
-#endif
diff --git a/calendar/gui/dialogs/editor-page.c b/calendar/gui/dialogs/editor-page.c
deleted file mode 100644
index b46b247191..0000000000
--- a/calendar/gui/dialogs/editor-page.c
+++ /dev/null
@@ -1,259 +0,0 @@
-/* Evolution calendar - Base class for calendar component editor pages
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Federico Mena-Quintero <federico@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gtk/gtksignal.h>
-#include "editor-page.h"
-
-
-
-static void editor_page_class_init (EditorPageClass *class);
-
-/* Signal IDs */
-
-enum {
- CHANGED,
- SUMMARY_CHANGED,
- LAST_SIGNAL
-};
-
-static guint editor_page_signals[LAST_SIGNAL];
-
-#define CLASS(page) (EDITOR_PAGE_CLASS (GTK_OBJECT (page)->klass))
-
-
-
-/**
- * editor_page_get_type:
- *
- * Registers the #EditorPage class if necessary, and returns the type ID
- * associated to it.
- *
- * Return value: The type ID of the #EditorPage class.
- **/
-GtkType
-editor_page_get_type (void)
-{
- static GtkType editor_page_type = 0;
-
- if (!editor_page_type) {
- static const GtkTypeInfo editor_page_info = {
- "EditorPage",
- sizeof (EditorPage),
- sizeof (EditorPageClass),
- (GtkClassInitFunc) editor_page_class_init,
- (GtkObjectInitFunc) NULL,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- editor_page_type = gtk_type_unique (GTK_TYPE_OBJECT, &editor_page_info);
- }
-
- return editor_page_type;
-}
-
-/* Class initialization function for the abstract editor page */
-static void
-editor_page_class_init (EditorPageClass *class)
-{
- GtkObjectClass *object_class;
-
- object_class = (GtkObjectClass *) class;
-
- editor_page_signals[CHANGED] =
- gtk_signal_new ("changed",
- GTK_RUN_FIRST,
- object_class->type,
- GTK_SIGNAL_OFFSET (EditorPageClass, changed),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- editor_page_signals[SUMMARY_CHANGED] =
- gtk_signal_new ("summary_changed",
- GTK_RUN_FIRST,
- object_class->type,
- GTK_SIGNAL_OFFSET (EditorPageClass, summary_changed),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- gtk_object_class_add_signals (object_class, editor_page_signals, LAST_SIGNAL);
-
- class->changed = NULL;
- class->summary_changed = NULL;
-
- class->get_widget = NULL;
- class->fill_widgets = NULL;
- class->fill_component = NULL;
- class->set_summary = NULL;
- class->get_summary = NULL;
- class->set_dtstart = NULL;
-}
-
-
-
-/**
- * editor_page_get_widget:
- * @page: An editor page.
- *
- * Queries the main widget of an editor page.
- *
- * Return value: The widget that is the page's upper container. It should
- * normally be inserted in a notebook widget.
- **/
-GtkWidget *
-editor_page_get_widget (EditorPage *page)
-{
- g_return_val_if_fail (page != NULL, NULL);
- g_return_val_if_fail (IS_EDITOR_PAGE (page), NULL);
-
- g_assert (CLASS (page)->get_widget != NULL);
- return (* CLASS (page)->get_widget) (page);
-}
-
-/**
- * editor_page_fill_widgets:
- * @page: An editor page.
- * @comp: A calendar component.
- *
- * Fills the widgets of an editor page with the data from a calendar component.
- **/
-void
-editor_page_fill_widgets (EditorPage *page, CalComponent *comp)
-{
- g_return_if_fail (page != NULL);
- g_return_if_fail (IS_EDITOR_PAGE (page));
- g_return_if_fail (comp != NULL);
-
- g_assert (CLASS (page)->fill_widgets != NULL);
- (* CLASS (page)->fill_widgets) (page, comp);
-}
-
-/**
- * editor_page_fill_component:
- * @page: An editor page.
- * @comp: A calendar component.
- *
- * Takes the data from the widgets of an editor page and sets it on a calendar
- * component, replacing the contents of the properties that the editor page
- * knows how to manipulate.
- **/
-void
-editor_page_fill_component (EditorPage *page, CalComponent *comp)
-{
- g_return_if_fail (page != NULL);
- g_return_if_fail (IS_EDITOR_PAGE (page));
- g_return_if_fail (comp != NULL);
-
- g_assert (CLASS (page)->fill_component != NULL);
- (* CLASS (page)->fill_component) (page, comp);
-}
-
-/**
- * editor_page_set_summary:
- * @page: An editor page.
- * @summary: Summary string to set in the page's widgets, which must be encoded
- * in UTF8.
- *
- * Sets the calendar component summary string in an editor page.
- **/
-void
-editor_page_set_summary (EditorPage *page, const char *summary)
-{
- g_return_if_fail (page != NULL);
- g_return_if_fail (IS_EDITOR_PAGE (page));
- g_return_if_fail (summary != NULL);
-
- g_assert (CLASS (page)->set_summary != NULL);
- (* CLASS (page)->set_summary) (page, summary);
-}
-
-/**
- * editor_page_get_summary:
- * @page: An editor page.
- *
- * Queries the current summary string in an editor page.
- *
- * Return value: Summary string in UTF8; must be freed by the caller.
- **/
-char *
-editor_page_get_summary (EditorPage *page)
-{
- g_return_val_if_fail (page != NULL, NULL);
- g_return_val_if_fail (IS_EDITOR_PAGE (page), NULL);
-
- g_assert (CLASS (page)->get_summary != NULL);
- return (* CLASS (page)->get_summary) (page);
-}
-
-/**
- * editor_page_set_dtstart:
- * @page: An editor page.
- * @start: Start date for calendar component.
- *
- * Sets the calendar component DTSTART in an editor page.
- **/
-void
-editor_page_set_dtstart (EditorPage *page, time_t start)
-{
- g_return_if_fail (page != NULL);
- g_return_if_fail (IS_EDITOR_PAGE (page));
- g_return_if_fail (start != -1);
-
- g_assert (CLASS (page)->set_dtstart != NULL);
- (* CLASS (page)->set_dtstart) (page, start);
-}
-
-/**
- * editor_page_notify_changed:
- * @page: An editor page.
- *
- * Makes an editor page emit the "changed" signal. This is meant to be
- * used only by page implementations.
- **/
-void
-editor_page_notify_changed (EditorPage *page)
-{
- g_return_if_fail (page != NULL);
- g_return_if_fail (IS_EDITOR_PAGE (page));
-
- gtk_signal_emit (GTK_OBJECT (page), editor_page_signals[CHANGED]);
-}
-
-/**
- * editor_page_notify_summary_changed:
- * @page: An editor page.
- *
- * Makes an editor page emit the "summary_changed" signal. This is meant to be
- * used only by page implementations.
- **/
-void
-editor_page_notify_summary_changed (EditorPage *page)
-{
- g_return_if_fail (page != NULL);
- g_return_if_fail (IS_EDITOR_PAGE (page));
-
- gtk_signal_emit (GTK_OBJECT (page), editor_page_signals[SUMMARY_CHANGED]);
-}
diff --git a/calendar/gui/dialogs/editor-page.h b/calendar/gui/dialogs/editor-page.h
deleted file mode 100644
index 3f9587c9de..0000000000
--- a/calendar/gui/dialogs/editor-page.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/* Evolution calendar - Base class for calendar component editor pages
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Federico Mena-Quintero <federico@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef EDITOR_PAGE_H
-#define EDITOR_PAGE_H
-
-#include <time.h>
-#include <libgnome/gnome-defs.h>
-#include <gtk/gtkwidget.h>
-#include <cal-util/cal-component.h>
-
-BEGIN_GNOME_DECLS
-
-
-
-#define TYPE_EDITOR_PAGE (editor_page_get_type ())
-#define EDITOR_PAGE(obj) (GTK_CHECK_CAST ((obj), TYPE_EDITOR_PAGE, EditorPage))
-#define EDITOR_PAGE_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), TYPE_EDITOR_PAGE, \
- EditorPageClass))
-#define IS_EDITOR_PAGE(obj) (GTK_CHECK_TYPE ((obj), TYPE_EDITOR_PAGE))
-#define IS_EDITOR_PAGE_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), TYPE_EDITOR_PAGE))
-
-typedef struct {
- GtkObject object;
-} EditorPage;
-
-typedef struct {
- GtkObjectClass parent_class;
-
- /* Notification signals */
-
- void (* changed) (EditorPage *page);
- void (* summary_changed) (EditorPage *page);
- void (* dtstart_changed) (EditorPage *page);
-
- /* Virtual methods */
-
- GtkWidget *(* get_widget) (EditorPage *page);
-
- void (* fill_widgets) (EditorPage *page, CalComponent *comp);
- void (* fill_component) (EditorPage *page, CalComponent *comp);
-
- void (* set_summary) (EditorPage *page, const char *summary);
- char *(* get_summary) (EditorPage *page);
-
- void (* set_dtstart) (EditorPage *page, time_t start);
-} EditorPageClass;
-
-GtkType editor_page_get_type (void);
-
-GtkWidget *editor_page_get_widget (EditorPage *page);
-
-void editor_page_fill_widgets (EditorPage *page, CalComponent *comp);
-void editor_page_fill_component (EditorPage *page, CalComponent *comp);
-
-void editor_page_set_summary (EditorPage *page, const char *summary);
-char *editor_page_get_summary (EditorPage *page);
-
-void editor_page_set_dtstart (EditorPage *page, time_t start);
-
-void editor_page_notify_changed (EditorPage *page);
-void editor_page_notify_summary_changed (EditorPage *page);
-
-
-
-END_GNOME_DECLS
-
-#endif
diff --git a/calendar/gui/dialogs/event-page.c b/calendar/gui/dialogs/event-page.c
deleted file mode 100644
index f67b898dce..0000000000
--- a/calendar/gui/dialogs/event-page.c
+++ /dev/null
@@ -1,908 +0,0 @@
-/* Evolution calendar - Main page of the event editor dialog
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Federico Mena-Quintero <federico@ximian.com>
- * Miguel de Icaza <miguel@ximian.com>
- * Seth Alves <alves@hungry.com>
- * JP Rosevear <jpr@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gtk/gtksignal.h>
-#include <gtk/gtktogglebutton.h>
-#include <glade/glade.h>
-#include <gal/widgets/e-unicode.h>
-#include <gal/widgets/e-categories.h>
-#include "cal-util/timeutil.h"
-#include "e-util/e-dialog-widgets.h"
-#include "widgets/misc/e-dateedit.h"
-#include "../calendar-config.h"
-#include "event-page.h"
-
-
-
-/* Private part of the EventPage structure */
-struct _EventPagePrivate {
- /* Glade XML data */
- GladeXML *xml;
-
- /* Widgets from the Glade file */
-
- GtkWidget *main;
-
- GtkWidget *summary;
-
- GtkWidget *start_time;
- GtkWidget *end_time;
- GtkWidget *all_day_event;
-
- GtkWidget *description;
-
- GtkWidget *classification_public;
- GtkWidget *classification_private;
- GtkWidget *classification_confidential;
-
- GtkWidget *contacts_btn;
- GtkWidget *contacts;
-
- GtkWidget *categories_btn;
- GtkWidget *categories;
-};
-
-
-
-static void event_page_class_init (EventPageClass *class);
-static void event_page_init (EventPage *epage);
-static void event_page_destroy (GtkObject *object);
-
-static GtkWidget *event_page_get_widget (EditorPage *page);
-static void event_page_fill_widgets (EditorPage *page, CalComponent *comp);
-static void event_page_fill_component (EditorPage *page, CalComponent *comp);
-static void event_page_set_summary (EditorPage *page, const char *summary);
-static char *event_page_get_summary (EditorPage *page);
-static void event_page_set_dtstart (EditorPage *page, time_t start);
-
-/* Signal IDs */
-enum {
- DATES_CHANGED,
- LAST_SIGNAL
-};
-
-static guint event_page_signals[LAST_SIGNAL] = { 0 };
-
-static EditorPageClass *parent_class = NULL;
-
-
-
-/**
- * event_page_get_type:
- *
- * Registers the #EventPage class if necessary, and returns the type ID
- * associated to it.
- *
- * Return value: The type ID of the #EventPage class.
- **/
-GtkType
-event_page_get_type (void)
-{
- static GtkType event_page_type;
-
- if (!event_page_type) {
- static const GtkTypeInfo event_page_info = {
- "EventPage",
- sizeof (EventPage),
- sizeof (EventPageClass),
- (GtkClassInitFunc) event_page_class_init,
- (GtkObjectInitFunc) event_page_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- event_page_type = gtk_type_unique (TYPE_EDITOR_PAGE, &event_page_info);
- }
-
- return event_page_type;
-}
-
-/* Class initialization function for the event page */
-static void
-event_page_class_init (EventPageClass *class)
-{
- EditorPageClass *editor_page_class;
- GtkObjectClass *object_class;
-
- editor_page_class = (EditorPageClass *) class;
- object_class = (GtkObjectClass *) class;
-
- parent_class = gtk_type_class (TYPE_EDITOR_PAGE);
-
- event_page_signals[DATES_CHANGED] =
- gtk_signal_new ("dates_changed",
- GTK_RUN_FIRST,
- object_class->type,
- GTK_SIGNAL_OFFSET (EventPageClass, dates_changed),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- gtk_object_class_add_signals (object_class, event_page_signals, LAST_SIGNAL);
-
- class->dates_changed = NULL;
-
- editor_page_class->get_widget = event_page_get_widget;
- editor_page_class->fill_widgets = event_page_fill_widgets;
- editor_page_class->fill_component = event_page_fill_component;
- editor_page_class->set_summary = event_page_set_summary;
- editor_page_class->get_summary = event_page_get_summary;
- editor_page_class->set_dtstart = event_page_set_dtstart;
-
- object_class->destroy = event_page_destroy;
-}
-
-/* Object initialization function for the event page */
-static void
-event_page_init (EventPage *epage)
-{
- EventPagePrivate *priv;
-
- priv = g_new0 (EventPagePrivate, 1);
- epage->priv = priv;
-
- priv->xml = NULL;
-
- priv->main = NULL;
- priv->summary = NULL;
- priv->start_time = NULL;
- priv->end_time = NULL;
- priv->all_day_event = NULL;
- priv->description = NULL;
- priv->classification_public = NULL;
- priv->classification_private = NULL;
- priv->classification_confidential = NULL;
- priv->contacts_btn = NULL;
- priv->contacts = NULL;
- priv->categories_btn = NULL;
- priv->categories = NULL;
-}
-
-/* Destroy handler for the event page */
-static void
-event_page_destroy (GtkObject *object)
-{
- EventPage *epage;
- EventPagePrivate *priv;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (IS_EVENT_PAGE (object));
-
- epage = EVENT_PAGE (object);
- priv = epage->priv;
-
- if (priv->xml) {
- gtk_object_unref (GTK_OBJECT (priv->xml));
- priv->xml = NULL;
- }
-
- g_free (priv);
- epage->priv = NULL;
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-
-
-static const int classification_map[] = {
- CAL_COMPONENT_CLASS_PUBLIC,
- CAL_COMPONENT_CLASS_PRIVATE,
- CAL_COMPONENT_CLASS_CONFIDENTIAL,
- -1
-};
-
-/* get_widget handler for the event page */
-static GtkWidget *
-event_page_get_widget (EditorPage *page)
-{
- EventPage *epage;
- EventPagePrivate *priv;
-
- epage = EVENT_PAGE (page);
- priv = epage->priv;
-
- return priv->main;
-}
-
-/* Checks if the event's time starts and ends at midnight, and sets the "all day
- * event" box accordingly.
- */
-static void
-check_all_day (EventPage *epage)
-{
- EventPagePrivate *priv;
- time_t ev_start, ev_end;
- gboolean all_day = FALSE;
-
- priv = epage->priv;
-
- /* Currently we just return if the date is not set or not valid.
- I'm not entirely sure this is the corrent thing to do. */
- ev_start = e_date_edit_get_time (E_DATE_EDIT (priv->start_time));
- g_assert (ev_start != -1);
-
- ev_end = e_date_edit_get_time (E_DATE_EDIT (priv->end_time));
- g_assert (ev_end != -1);
-
- /* all day event checkbox */
- if (time_day_begin (ev_start) == ev_start && time_day_begin (ev_end) == ev_end)
- all_day = TRUE;
-
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->all_day_event), epage);
- e_dialog_toggle_set (priv->all_day_event, all_day);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->all_day_event), epage);
-
- e_date_edit_set_show_time (E_DATE_EDIT (priv->start_time), !all_day);
- e_date_edit_set_show_time (E_DATE_EDIT (priv->end_time), !all_day);
-}
-
-/* Fills the widgets with default values */
-static void
-clear_widgets (EventPage *epage)
-{
- EventPagePrivate *priv;
- time_t now;
-
- priv = epage->priv;
-
- now = time (NULL);
-
- /* Summary, description */
- e_dialog_editable_set (priv->summary, NULL);
- e_dialog_editable_set (priv->description, NULL);
-
- /* Start and end times */
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->start_time), epage);
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->end_time), epage);
-
- e_date_edit_set_time (E_DATE_EDIT (priv->start_time), now);
- e_date_edit_set_time (E_DATE_EDIT (priv->end_time), now);
-
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->start_time), epage);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->end_time), epage);
-
- check_all_day (epage);
-
- /* Classification */
- e_dialog_radio_set (priv->classification_public,
- CAL_COMPONENT_CLASS_PRIVATE, classification_map);
-
- /* Categories */
- e_dialog_editable_set (priv->categories, NULL);
-}
-
-/* fill_widgets handler for the event page */
-static void
-event_page_fill_widgets (EditorPage *page, CalComponent *comp)
-{
- EventPage *epage;
- EventPagePrivate *priv;
- CalComponentText text;
- CalComponentClassification cl;
- CalComponentDateTime d;
- GSList *l;
- time_t dtstart, dtend;
- const char *categories;
-
- epage = EVENT_PAGE (page);
- priv = epage->priv;
-
- clear_widgets (epage);
-
- /* Summary, description(s) */
-
- cal_component_get_summary (comp, &text);
- e_dialog_editable_set (priv->summary, text.value);
-
- cal_component_get_description_list (comp, &l);
- if (l) {
- text = *(CalComponentText *)l->data;
- e_dialog_editable_set (priv->description, text.value);
- }
- cal_component_free_text_list (l);
-
- /* Start and end times */
-
- /* All-day events are inclusive, i.e. if the end date shown is 2nd Feb
- then the event includes all of the 2nd Feb. We would normally show
- 3rd Feb as the end date, since it really ends at midnight on 3rd,
- so we have to subtract a day so we only show the 2nd. */
- cal_component_get_dtstart (comp, &d);
- dtstart = icaltime_as_timet (*d.value);
- cal_component_free_datetime (&d);
-
- cal_component_get_dtend (comp, &d);
- dtend = icaltime_as_timet (*d.value);
- cal_component_free_datetime (&d);
-
- if (time_day_begin (dtstart) == dtstart && time_day_begin (dtend) == dtend)
- dtend = time_add_day (dtend, -1);
-
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->start_time), epage);
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->end_time), epage);
-
- e_date_edit_set_time (E_DATE_EDIT (priv->start_time), dtstart);
- e_date_edit_set_time (E_DATE_EDIT (priv->end_time), dtend);
-
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->start_time), epage);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->end_time), epage);
-
- check_all_day (epage);
-
- /* Classification */
-
- cal_component_get_classification (comp, &cl);
-
- switch (cl) {
- case CAL_COMPONENT_CLASS_PUBLIC:
- e_dialog_radio_set (priv->classification_public, CAL_COMPONENT_CLASS_PUBLIC,
- classification_map);
- break;
-
- case CAL_COMPONENT_CLASS_PRIVATE:
- e_dialog_radio_set (priv->classification_public, CAL_COMPONENT_CLASS_PRIVATE,
- classification_map);
- break;
-
- case CAL_COMPONENT_CLASS_CONFIDENTIAL:
- e_dialog_radio_set (priv->classification_public, CAL_COMPONENT_CLASS_CONFIDENTIAL,
- classification_map);
- break;
-
- default:
- /* What do do? We can't g_assert_not_reached() since it is a
- * value from an external file.
- */
- }
-
- /* Categories */
-
- cal_component_get_categories (comp, &categories);
- e_dialog_editable_set (priv->categories, categories);
-}
-
-/* fill_component handler for the event page */
-static void
-event_page_fill_component (EditorPage *page, CalComponent *comp)
-{
- EventPage *epage;
- EventPagePrivate *priv;
- CalComponentDateTime date;
- struct icaltimetype icaltime;
- time_t t;
- gboolean all_day_event;
- char *cat, *str;
- CalComponentClassification classif;
-
- epage = EVENT_PAGE (page);
- priv = epage->priv;
-
- /* Summary */
-
- str = e_dialog_editable_get (priv->summary);
- if (!str || strlen (str) == 0)
- cal_component_set_summary (comp, NULL);
- else {
- CalComponentText text;
-
- text.value = str;
- text.altrep = NULL;
-
- cal_component_set_summary (comp, &text);
- }
-
- if (str)
- g_free (str);
-
- /* Description */
-
- str = e_dialog_editable_get (priv->description);
- if (!str || strlen (str) == 0)
- cal_component_set_description_list (comp, NULL);
- else {
- GSList l;
- CalComponentText text;
-
- text.value = str;
- text.altrep = NULL;
- l.data = &text;
- l.next = NULL;
-
- cal_component_set_description_list (comp, &l);
- }
-
- if (str)
- g_free (str);
-
- /* Dates */
-
- date.value = &icaltime;
- date.tzid = NULL;
-
- t = e_date_edit_get_time (E_DATE_EDIT (priv->start_time));
- if (t != -1) {
- *date.value = icaltime_from_timet (t, FALSE);
- cal_component_set_dtstart (comp, &date);
- } else {
- /* FIXME: What do we do here? */
- }
-
- /* If the all_day toggle is set, the end date is inclusive of the
- entire day on which it points to. */
- all_day_event = e_dialog_toggle_get (priv->all_day_event);
- t = e_date_edit_get_time (E_DATE_EDIT (priv->end_time));
- if (t != -1) {
- if (all_day_event)
- t = time_day_end (t);
-
- *date.value = icaltime_from_timet (t, FALSE);
- cal_component_set_dtend (comp, &date);
- } else {
- /* FIXME: What do we do here? */
- }
-
- /* Categories */
-
- cat = e_dialog_editable_get (priv->categories);
- cal_component_set_categories (comp, cat);
-
- if (cat)
- g_free (cat);
-
- /* Classification */
-
- classif = e_dialog_radio_get (priv->classification_public, classification_map);
- cal_component_set_classification (comp, classif);
-}
-
-/* set_summary handler for the event page */
-static void
-event_page_set_summary (EditorPage *page, const char *summary)
-{
- EventPage *epage;
- EventPagePrivate *priv;
-
- epage = EVENT_PAGE (page);
- priv = epage->priv;
-
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->summary), epage);
- e_utf8_gtk_entry_set_text (GTK_ENTRY (priv->summary), summary);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->summary), epage);
-}
-
-/* get_summary handler for the event page */
-static char *
-event_page_get_summary (EditorPage *page)
-{
- EventPage *epage;
- EventPagePrivate *priv;
-
- epage = EVENT_PAGE (page);
- priv = epage->priv;
-
- return e_utf8_gtk_entry_get_text (GTK_ENTRY (priv->summary));
-}
-
-/* set_dtstart handler for the event page. We do nothing since we are *the*
- * only provider of the dtstart value.
- */
-static void
-event_page_set_dtstart (EditorPage *page, time_t start)
-{
- /* nothing */
-}
-
-
-
-/* Gets the widgets from the XML file and returns if they are all available. */
-static gboolean
-get_widgets (EventPage *epage)
-{
- EventPagePrivate *priv;
- GtkWidget *toplevel;
-
- priv = epage->priv;
-
-#define GW(name) glade_xml_get_widget (priv->xml, name)
-
- toplevel = GW ("event-toplevel");
- priv->main = GW ("event-page");
- if (!(toplevel && priv->main))
- return FALSE;
-
- gtk_widget_ref (priv->main);
- gtk_widget_unparent (priv->main);
- gtk_widget_destroy (toplevel);
-
- priv->summary = GW ("summary");
-
- priv->start_time = GW ("start-time");
- priv->end_time = GW ("end-time");
- priv->all_day_event = GW ("all-day-event");
-
- priv->description = GW ("description");
-
- priv->classification_public = GW ("classification-public");
- priv->classification_private = GW ("classification-private");
- priv->classification_confidential = GW ("classification-confidential");
-
- priv->contacts_btn = GW ("contacts-button");
- priv->contacts = GW ("contacts");
-
- priv->categories_btn = GW ("categories-button");
- priv->categories = GW ("categories");
-
-#undef GW
-
- return (priv->summary
- && priv->start_time
- && priv->end_time
- && priv->all_day_event
- && priv->description
- && priv->classification_public
- && priv->classification_private
- && priv->classification_confidential
- && priv->contacts_btn
- && priv->contacts
- && priv->categories_btn
- && priv->categories);
-}
-
-/* Callback used when the summary changes; we emit the notification signal. */
-static void
-summary_changed_cb (GtkEditable *editable, gpointer data)
-{
- EventPage *epage;
-
- epage = EVENT_PAGE (data);
- editor_page_notify_summary_changed (EDITOR_PAGE (epage));
-}
-
-/* Callback used when the start or end date widgets change. We check that the
- * start date < end date and we set the "all day event" button as appropriate.
- */
-static void
-date_changed_cb (EDateEdit *dedit, gpointer data)
-{
- EventPage *epage;
- EventPagePrivate *priv;
- time_t start, end;
- struct tm tm_start, tm_end;
-
- epage = EVENT_PAGE (data);
- priv = epage->priv;
-
- /* Ensure that start < end */
-
- start = e_date_edit_get_time (E_DATE_EDIT (priv->start_time));
- g_assert (start != -1);
- end = e_date_edit_get_time (E_DATE_EDIT (priv->end_time));
- g_assert (end != -1);
-
- if (start >= end) {
- tm_start = *localtime (&start);
- tm_end = *localtime (&end);
-
- if (start == end && tm_start.tm_hour == 0
- && tm_start.tm_min == 0 && tm_start.tm_sec == 0) {
- /* If the start and end times are the same, but both are
- * on day boundaries, then that is OK since it means we
- * have an all-day event lasting 1 day. So we do
- * nothing here.
- */
- } else if (GTK_WIDGET (dedit) == priv->start_time) {
- /* Modify the end time */
-
- tm_end.tm_year = tm_start.tm_year;
- tm_end.tm_mon = tm_start.tm_mon;
- tm_end.tm_mday = tm_start.tm_mday;
- tm_end.tm_hour = tm_start.tm_hour + 1;
- tm_end.tm_min = tm_start.tm_min;
- tm_end.tm_sec = tm_start.tm_sec;
-
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->end_time), epage);
- e_date_edit_set_time (E_DATE_EDIT (priv->end_time), mktime (&tm_end));
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->end_time), epage);
- } else if (GTK_WIDGET (dedit) == priv->end_time) {
- /* Modify the start time */
-
- tm_start.tm_year = tm_end.tm_year;
- tm_start.tm_mon = tm_end.tm_mon;
- tm_start.tm_mday = tm_end.tm_mday;
- tm_start.tm_hour = tm_end.tm_hour - 1;
- tm_start.tm_min = tm_end.tm_min;
- tm_start.tm_sec = tm_end.tm_sec;
-
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->start_time), epage);
- e_date_edit_set_time (E_DATE_EDIT (priv->start_time), mktime (&tm_start));
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->start_time), epage);
- } else
- g_assert_not_reached ();
- }
-
- /* Set the "all day event" button as appropriate */
- check_all_day (epage);
-
- /* Notify upstream */
- gtk_signal_emit (GTK_OBJECT (epage), event_page_signals[DATES_CHANGED]);
-}
-
-/* Callback: all day event button toggled.
- * Note that this should only be called when the user explicitly toggles the
- * button. Be sure to block this handler when the toggle button's state is set
- * within the code.
- */
-static void
-all_day_event_toggled_cb (GtkWidget *toggle, gpointer data)
-{
- EventPage *epage;
- EventPagePrivate *priv;
- struct tm start_tm, end_tm;
- time_t start_t, end_t;
- gboolean all_day;
-
- epage = EVENT_PAGE (data);
- priv = epage->priv;
-
- /* When the all_day toggle is turned on, the start date is rounded down
- * to the start of the day, and end date is rounded down to the start of
- * the day on which the event ends. The event is then taken to be
- * inclusive of the days between the start and end days. Note that if
- * the event end is at midnight, we do not round it down to the previous
- * day, since if we do that and the user repeatedly turns the all_day
- * toggle on and off, the event keeps shrinking. (We'd also need to
- * make sure we didn't adjust the time when the radio button is
- * initially set.)
- *
- * When the all_day_toggle is turned off, we set the event start to the
- * start of the working day, and if the event end is on or before the
- * day of the event start we set it to one hour after the event start.
- */
- all_day = GTK_TOGGLE_BUTTON (toggle)->active;
-
- /*
- * Start time.
- */
- start_t = e_date_edit_get_time (E_DATE_EDIT (priv->start_time));
- g_assert (start_t != -1);
-
- start_tm = *localtime (&start_t);
-
- if (all_day) {
- /* Round down to the start of the day. */
- start_tm.tm_hour = 0;
- start_tm.tm_min = 0;
- start_tm.tm_sec = 0;
- } else {
- /* Set to the start of the working day. */
- start_tm.tm_hour = calendar_config_get_day_start_hour ();
- start_tm.tm_min = calendar_config_get_day_start_minute ();
- start_tm.tm_sec = 0;
- }
-
- /*
- * End time.
- */
- end_t = e_date_edit_get_time (E_DATE_EDIT (priv->end_time));
- g_assert (end_t != -1);
-
- end_tm = *localtime (&end_t);
-
- if (all_day) {
- /* Round down to the start of the day. */
- end_tm.tm_hour = 0;
- end_tm.tm_min = 0;
- end_tm.tm_sec = 0;
- } else {
- /* If the event end is now on or before the event start day,
- * make it end one hour after the start. mktime() will fix any
- * overflows.
- */
- if (end_tm.tm_year < start_tm.tm_year
- || (end_tm.tm_year == start_tm.tm_year
- && end_tm.tm_mon < start_tm.tm_mon)
- || (end_tm.tm_year == start_tm.tm_year
- && end_tm.tm_mon == start_tm.tm_mon
- && end_tm.tm_mday <= start_tm.tm_mday)) {
- end_tm.tm_year = start_tm.tm_year;
- end_tm.tm_mon = start_tm.tm_mon;
- end_tm.tm_mday = start_tm.tm_mday;
- end_tm.tm_hour = start_tm.tm_hour + 1;
- }
- }
-
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->start_time), epage);
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->end_time), epage);
-
- e_date_edit_set_time (E_DATE_EDIT (priv->start_time), mktime (&start_tm));
- e_date_edit_set_time (E_DATE_EDIT (priv->end_time), mktime (&end_tm));
-
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->start_time), epage);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->end_time), epage);
-
- e_date_edit_set_show_time (E_DATE_EDIT (priv->start_time), !all_day);
- e_date_edit_set_show_time (E_DATE_EDIT (priv->end_time), !all_day);
-
- /* Notify upstream */
- gtk_signal_emit (GTK_OBJECT (epage), event_page_signals[DATES_CHANGED]);
-}
-
-/* Callback used when the categories button is clicked; we must bring up the
- * category list dialog.
- */
-static void
-categories_clicked_cb (GtkWidget *button, gpointer data)
-{
- EventPage *epage;
- EventPagePrivate *priv;
- char *categories;
- GnomeDialog *dialog;
- int result;
- GtkWidget *entry;
-
- epage = EVENT_PAGE (data);
- priv = epage->priv;
-
- entry = priv->categories;
- categories = e_utf8_gtk_entry_get_text (GTK_ENTRY (entry));
-
- dialog = GNOME_DIALOG (e_categories_new (categories));
- result = gnome_dialog_run (dialog);
- g_free (categories);
-
- if (result == 0) {
- gtk_object_get (GTK_OBJECT (dialog),
- "categories", &categories,
- NULL);
- e_utf8_gtk_entry_set_text (GTK_ENTRY (entry), categories);
- g_free (categories);
- }
-
- gtk_object_destroy (GTK_OBJECT (dialog));
-}
-
-/* This is called when any field is changed; it notifies upstream. */
-static void
-field_changed_cb (GtkWidget *widget, gpointer data)
-{
- EventPage *epage;
-
- epage = EVENT_PAGE (data);
- editor_page_notify_changed (EDITOR_PAGE (epage));
-}
-
-/* Hooks the widget signals */
-static void
-init_widgets (EventPage *epage)
-{
- EventPagePrivate *priv;
-
- priv = epage->priv;
-
- /* Summary */
- gtk_signal_connect (GTK_OBJECT (priv->summary), "changed",
- GTK_SIGNAL_FUNC (summary_changed_cb), epage);
-
- /* Start and end times */
- gtk_signal_connect (GTK_OBJECT (priv->start_time), "changed",
- GTK_SIGNAL_FUNC (date_changed_cb), epage);
- gtk_signal_connect (GTK_OBJECT (priv->end_time), "changed",
- GTK_SIGNAL_FUNC (date_changed_cb), epage);
-
- gtk_signal_connect (GTK_OBJECT (priv->all_day_event), "toggled",
- GTK_SIGNAL_FUNC (all_day_event_toggled_cb), epage);
-
- /* Categories button */
- gtk_signal_connect (GTK_OBJECT (priv->categories_btn), "clicked",
- GTK_SIGNAL_FUNC (categories_clicked_cb), epage);
-
- /* Connect the default signal handler to use to make sure we notify
- * upstream of changes to the widget values.
- */
-
- gtk_signal_connect (GTK_OBJECT (priv->summary), "changed",
- GTK_SIGNAL_FUNC (field_changed_cb), epage);
- gtk_signal_connect (GTK_OBJECT (priv->start_time), "changed",
- GTK_SIGNAL_FUNC (field_changed_cb), epage);
- gtk_signal_connect (GTK_OBJECT (priv->end_time), "changed",
- GTK_SIGNAL_FUNC (field_changed_cb), epage);
- gtk_signal_connect (GTK_OBJECT (priv->all_day_event), "toggled",
- GTK_SIGNAL_FUNC (field_changed_cb), epage);
- gtk_signal_connect (GTK_OBJECT (priv->description), "changed",
- GTK_SIGNAL_FUNC (field_changed_cb), epage);
- gtk_signal_connect (GTK_OBJECT (priv->classification_public), "toggled",
- GTK_SIGNAL_FUNC (field_changed_cb), epage);
- gtk_signal_connect (GTK_OBJECT (priv->classification_private), "toggled",
- GTK_SIGNAL_FUNC (field_changed_cb), epage);
- gtk_signal_connect (GTK_OBJECT (priv->classification_confidential), "toggled",
- GTK_SIGNAL_FUNC (field_changed_cb), epage);
- gtk_signal_connect (GTK_OBJECT (priv->categories), "changed",
- GTK_SIGNAL_FUNC (field_changed_cb), epage);
-
- /* FIXME: we do not support these fields yet, so we disable them */
-
- gtk_widget_set_sensitive (priv->contacts_btn, FALSE);
- gtk_widget_set_sensitive (priv->contacts, FALSE);
-}
-
-
-
-/**
- * event_page_construct:
- * @epage: An event page.
- *
- * Constructs an event page by loading its Glade data.
- *
- * Return value: The same object as @epage, or NULL if the widgets could not be
- * created.
- **/
-EventPage *
-event_page_construct (EventPage *epage)
-{
- EventPagePrivate *priv;
-
- priv = epage->priv;
-
- priv->xml = glade_xml_new (EVOLUTION_GLADEDIR "/event-page.glade", NULL);
- if (!priv->xml) {
- g_message ("event_page_construct(): Could not load the Glade XML file!");
- return NULL;
- }
-
- if (!get_widgets (epage)) {
- g_message ("event_page_construct(): Could not find all widgets in the XML file!");
- return NULL;
- }
-
- init_widgets (epage);
-
- return epage;
-}
-
-/**
- * event_page_new:
- *
- * Creates a new event page.
- *
- * Return value: A newly-created event page, or NULL if the page could
- * not be created.
- **/
-EventPage *
-event_page_new (void)
-{
- EventPage *epage;
-
- epage = gtk_type_new (TYPE_EVENT_PAGE);
- if (!event_page_construct (epage)) {
- gtk_object_unref (GTK_OBJECT (epage));
- return NULL;
- }
-
- return epage;
-}
diff --git a/calendar/gui/dialogs/event-page.glade b/calendar/gui/dialogs/event-page.glade
deleted file mode 100644
index 76d2d4043e..0000000000
--- a/calendar/gui/dialogs/event-page.glade
+++ /dev/null
@@ -1,429 +0,0 @@
-<?xml version="1.0"?>
-<GTK-Interface>
-
-<project>
- <name>event-page</name>
- <program_name>event-page</program_name>
- <directory></directory>
- <source_directory>.</source_directory>
- <pixmaps_directory>pixmaps</pixmaps_directory>
- <language>C</language>
- <gnome_support>True</gnome_support>
- <gettext_support>True</gettext_support>
- <output_main_file>False</output_main_file>
- <output_support_files>False</output_support_files>
- <output_build_files>False</output_build_files>
-</project>
-
-<widget>
- <class>GtkWindow</class>
- <name>event-toplevel</name>
- <title>window1</title>
- <type>GTK_WINDOW_TOPLEVEL</type>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>True</allow_grow>
- <auto_shrink>False</auto_shrink>
-
- <widget>
- <class>GtkVBox</class>
- <name>event-page</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>6</spacing>
-
- <widget>
- <class>GtkTable</class>
- <name>table11</name>
- <rows>1</rows>
- <columns>2</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>4</row_spacing>
- <column_spacing>4</column_spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label56</name>
- <label>Su_mmary:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>7.45058e-09</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <default_focus_target>general-summary</default_focus_target>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>general-summary</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame31</name>
- <label>Date &amp; Time</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkTable</class>
- <name>table12</name>
- <border_width>4</border_width>
- <rows>2</rows>
- <columns>3</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>4</row_spacing>
- <column_spacing>4</column_spacing>
-
- <widget>
- <class>GtkLabel</class>
- <name>label57</name>
- <label>_Start time:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label58</name>
- <label>_End time:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>all-day-event</name>
- <can_focus>True</can_focus>
- <label>A_ll day event</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <left_attach>2</left_attach>
- <right_attach>3</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>Custom</class>
- <name>start-time</name>
- <creation_function>make_date_edit</creation_function>
- <string1></string1>
- <string2></string2>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Tue, 16 May 2000 19:11:05 GMT</last_modification_time>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>True</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>False</xfill>
- <yfill>True</yfill>
- </child>
- </widget>
-
- <widget>
- <class>Custom</class>
- <name>end-time</name>
- <creation_function>make_date_edit</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Tue, 16 May 2000 19:11:10 GMT</last_modification_time>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>True</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>False</xfill>
- <yfill>True</yfill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow12</name>
- <hscrollbar_policy>GTK_POLICY_NEVER</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkText</class>
- <name>description</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text></text>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame32</name>
- <label>Classification</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox52</name>
- <border_width>2</border_width>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>classification-public</name>
- <can_focus>True</can_focus>
- <label>Pu_blic</label>
- <active>True</active>
- <draw_indicator>True</draw_indicator>
- <group>classification_radio_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>classification-private</name>
- <can_focus>True</can_focus>
- <label>Pri_vate</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>classification_radio_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>classification-confidential</name>
- <can_focus>True</can_focus>
- <label>_Confidential</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>classification_radio_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox53</name>
- <homogeneous>False</homogeneous>
- <spacing>2</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>contacts-button</name>
- <can_focus>True</can_focus>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label59</name>
- <label>_Contacts...</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>4</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>contacts</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>categories-button</name>
- <can_focus>True</can_focus>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label60</name>
- <label>Ca_tegories...</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>4</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>categories</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
- </widget>
- </widget>
- </widget>
-</widget>
-
-</GTK-Interface>
diff --git a/calendar/gui/dialogs/event-page.h b/calendar/gui/dialogs/event-page.h
deleted file mode 100644
index 85281b9800..0000000000
--- a/calendar/gui/dialogs/event-page.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* Evolution calendar - Main page of the event editor dialog
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Federico Mena-Quintero <federico@ximian.com>
- * Miguel de Icaza <miguel@ximian.com>
- * Seth Alves <alves@hungry.com>
- * JP Rosevear <jpr@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef EVENT_PAGE_H
-#define EVENT_PAGE_H
-
-#include "editor-page.h"
-
-BEGIN_GNOME_DECLS
-
-
-
-#define TYPE_EVENT_PAGE (event_page_get_type ())
-#define EVENT_PAGE(obj) (GTK_CHECK_CAST ((obj), TYPE_EVENT_PAGE, EventPage))
-#define EVENT_PAGE_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), TYPE_EVENT_PAGE, \
- EventPageClass))
-#define IS_EVENT_PAGE(obj) (GTK_CHECK_TYPE ((obj), TYPE_EVENT_PAGE))
-#define IS_EVENT_PAGE_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), TYPE_EVENT_PAGE))
-
-typedef struct _EventPagePrivate EventPagePrivate;
-
-typedef struct {
- EditorPage page;
-
- /* Private data */
- EventPagePrivate *priv;
-} EventPage;
-
-typedef struct {
- EditorPageClass parent_class;
-
- /* Notification signals */
-
- void (* dates_changed) (EventPage *epage);
-} EventPageClass;
-
-GtkType event_page_get_type (void);
-
-EventPage *event_page_construct (EventPage *epage);
-
-EventPage *event_page_new (void);
-
-time_t event_page_get_dtstart (EventPage *epage);
-
-
-
-END_GNOME_DECLS
-
-#endif
diff --git a/calendar/gui/dialogs/recurrence-page.c b/calendar/gui/dialogs/recurrence-page.c
deleted file mode 100644
index 0b0eace9cf..0000000000
--- a/calendar/gui/dialogs/recurrence-page.c
+++ /dev/null
@@ -1,900 +0,0 @@
-/* Evolution calendar - Recurrence page of the calendar component dialogs
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Federico Mena-Quintero <federico@ximian.com>
- * Miguel de Icaza <miguel@ximian.com>
- * Seth Alves <alves@hungry.com>
- * JP Rosevear <jpr@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gtk/gtksignal.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <glade/glade.h>
-#include <gal/widgets/e-unicode.h>
-#include "e-util/e-dialog-widgets.h"
-#include "recurrence-page.h"
-
-
-
-/* Private part of the RecurrencePage structure */
-struct _RecurrencePagePrivate {
- /* Glade XML data */
- GladeXML *xml;
-
- /* Widgets from the Glade file */
-
- GtkWidget *main;
-
- GtkWidget *summary;
- GtkWidget *starting_date;
-
- GtkWidget *none;
- GtkWidget *simple;
- GtkWidget *custom;
-
- GtkWidget *params;
- GtkWidget *interval_value;
- GtkWidget *interval_unit;
- GtkWidget *special;
- GtkWidget *ending_menu;
- GtkWidget *ending_special;
- GtkWidget *custom_warning_bin;
-
- /* For weekly recurrences, created by hand */
- GtkWidget *weekday_picker;
- guint8 weekday_day_mask;
- guint8 weekday_blocked_day_mask;
-
- /* For monthly recurrences, created by hand */
- GtkWidget *month_index_spin;
- int month_index;
-
- GtkWidget *month_day_menu;
- enum month_day_options month_day;
-
- /* For ending date, created by hand */
- GtkWidget *ending_date_edit;
- time_t ending_date;
-
- /* For ending count of occurrences, created by hand */
- GtkWidget *ending_count_spin;
- int ending_count;
-
- /* More widgets from the Glade file */
-
- GtkWidget *exception_date;
- GtkWidget *exception_list;
- GtkWidget *exception_add;
- GtkWidget *exception_modify;
- GtkWidget *exception_delete;
-
- GtkWidget *preview_bin;
-
- /* For the recurrence preview, the actual widget */
- GtkWidget *preview_calendar;
-};
-
-
-
-static void recurrence_page_class_init (RecurrencePageClass *class);
-static void recurrence_page_init (RecurrencePage *rpage);
-static void recurrence_page_destroy (RecurrencePage *rpage);
-
-static GtkWidget *recurrence_page_get_widget (EditorPage *page);
-static void recurrence_page_fill_widgets (EditorPage *page, CalComponent *comp);
-static void recurrence_page_fill_component (EditorPage *page, CalComponent *comp);
-static void recurrence_page_set_summary (EditorPage *page, const char *summary);
-static char *recurrence_page_get_summary (EditorPage *page);
-static void recurrence_page_set_dtstart (EditorPage *page, time_t start);
-
-static EditorPageClass *parent_class = NULL;
-
-
-
-/**
- * recurrence_page_get_type:
- *
- * Registers the #RecurrencePage class if necessary, and returns the type ID
- * associated to it.
- *
- * Return value: The type ID of the #RecurrencePage class.
- **/
-GtkType
-recurrence_page_get_type (void)
-{
- static GtkType recurrence_page_type;
-
- if (!recurrence_page_type) {
- static const GtkTypeInfo recurrence_page_info = {
- "RecurrencePage",
- sizeof (RecurrencePage),
- sizeof (RecurrencePageClass),
- (GtkClassInitFunc) recurrence_page_class_init,
- (GtkObjectInitFunc) recurrence_page_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- recurrence_page_type = gtk_type_unique (EDITOR_PAGE_TYPE, &recurrence_page_info);
- }
-
- return recurrence_page_type;
-}
-
-/* Class initialization function for the recurrence page */
-static void
-recurrence_page_class_init (RecurrencePageClass *class)
-{
- EditorPageClass *editor_page_class;
- GtkObjectClass *object_class;
-
- editor_page_class = (EditorPageClass *) class;
- object_class = (GtkObjectClass *) class;
-
- parent_class = gtk_type_class (EDITOR_PAGE_TYPE);
-
- editor_page_class->get_widget = recurrence_page_get_widget;
- editor_page_class->fill_widgets = recurrence_page_fill_widgets;
- editor_page_class->fill_component = recurrence_page_fill_component;
- editor_page_class->set_summary = recurrence_page_set_summary;
- editor_page_class->get_summary = recurrence_page_get_summary;
- editor_page_class->set_dtstart = recurrence_page_set_dtstart;
-
- object_class->destroy = recurrence_page_destroy;
-}
-
-/* Object initialization function for the recurrence page */
-static void
-recurrence_page_init (RecurrencePage *rpage)
-{
- RecurrencePagePrivate *priv;
-
- priv = g_new0 (RecurrencePagePrivate, 1);
- rpage->priv = priv;
-
- priv->xml = NULL;
-
- priv->main = NULL;
- priv->summary = NULL;
- priv->starting_date = NULL;
- priv->none = NULL;
- priv->simple = NULL;
- priv->custom = NULL;
- priv->params = NULL;
- priv->interval_value = NULL;
- priv->interval_unit = NULL;
- priv->special = NULL;
- priv->ending_menu = NULL;
- priv->ending_special = NULL;
- priv->custom_warning_bin = NULL;
- priv->weekday_picker = NULL;
- priv->month_index_spin = NULL;
- priv->month_day_menu = NULL;
- priv->ending_date_edit = NULL;
- priv->ending_count_spin = NULL;
- priv->exception_date = NULL;
- priv->exception_list = NULL;
- priv->exception_add = NULL;
- priv->exception_modify = NULL;
- priv->exception_delete = NULL;
- priv->preview_bin = NULL;
- priv->preview_calendar = NULL;
-}
-
-/* Frees the rows and the row data in the exceptions GtkCList */
-static void
-free_exception_clist_data (RecurrencePage *rpage)
-{
- RecurrencePagePrivate *priv;
- GtkCList *clist;
- int i;
-
- priv = rpage->priv;
-
- clist = GTK_CLIST (priv->exception_list);
-
- for (i = 0; i < clist->rows; i++) {
- gpointer data;
-
- data = gtk_clist_get_row_data (clist, i);
- g_free (data);
- gtk_clist_set_row_data (clist, i, NULL);
- }
-
- gtk_clist_clear (clist);
-}
-
-/* Destroy handler for the recurrence page */
-static void
-recurrence_page_destroy (GtkObject *object)
-{
- RecurrencePage *rpage;
- RecurrencePagePrivate *priv;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (IS_RECURRENCE_PAGE (object));
-
- rpage = RECURRENCE_PAGE (object);
- priv = rpage->priv;
-
- if (priv->xml) {
- gtk_object_unref (GTK_OBJECT (priv->xml));
- priv->xml = NULL;
- }
-
- free_exception_clist_data (rpage);
-
- g_free (priv);
- rpage->priv = NULL;
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-
-
-/* get_widget handler for the recurrence page */
-static GtkWidget *
-recurrence_page_get_widget (EditorPage *page)
-{
- RecurrencePage *rpage;
- RecurrencePagePrivate *priv;
-
- rpage = RECURRENCE_PAGE (page);
- priv = rpage->priv;
-
- return priv->main;
-}
-
-/* Fills the widgets with default values */
-static void
-clear_widgets (RecurrencePage *rpage)
-{
- RecurrencePagePrivate *priv;
-
- priv = rpage->priv;
-
- priv->weekday_day_mask = 0;
-
- priv->month_index = 1;
- priv->month_day = MONTH_DAY_NTH;
-
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->none), rpage);
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->simple), rpage);
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->custom), rpage);
- e_dialog_radio_set (priv->none, RECUR_NONE, type_map);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->none), rpage);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->simple), rpage);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->custom), rpage);
-
- adj = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (priv->interval_value));
- gtk_signal_handler_block_by_data (GTK_OBJECT (adj), rpage);
- e_dialog_spin_set (priv->interval_value, 1);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (adj), rpage);
-
- menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (priv->interval_unit));
- gtk_signal_handler_block_by_data (GTK_OBJECT (menu), rpage);
- e_dialog_option_menu_set (priv->interval_unit, ICAL_DAILY_RECURRENCE, freq_map);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (menu), rpage);
-
- priv->ending_date = time (NULL);
- priv->ending_count = 1;
-
- menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (priv->ending_menu));
- gtk_signal_handler_block_by_data (GTK_OBJECT (menu), rpage);
- e_dialog_option_menu_set (priv->ending_menu, ENDING_FOREVER, ending_types_map);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (menu), rpage);
-
- /* Exceptions list */
- free_exception_clist_data (GTK_CLIST (priv->exception_list));
-}
-
-/* Builds a static string out of an exception date */
-static char *
-get_exception_string (time_t t)
-{
- static char buf[256];
-
- strftime (buf, sizeof (buf), _("%a %b %d %Y"), localtime (&t));
- return buf;
-}
-
-/* Appends an exception date to the list */
-static void
-append_exception (RecurrencePage *rpage, time_t t)
-{
- RecurrencePagePrivate *priv;
- time_t *tt;
- char *c[1];
- int i;
- GtkCList *clist;
-
- priv = rpage->priv;
-
- tt = g_new (time_t, 1);
- *tt = t;
-
- clist = GTK_CLIST (priv->exception_list);
-
- gtk_signal_handler_block_by_data (GTK_OBJECT (clist), rpage);
-
- c[0] = get_exception_string (t);
- i = gtk_clist_append (clist, c);
-
- gtk_clist_set_row_data (clist, i, tt);
-
- gtk_clist_select_row (clist, i, 0);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (clist), rpage);
-
- e_date_edit_set_time (E_DATE_EDIT (priv->exception_date), t);
-
- gtk_widget_set_sensitive (priv->exception_modify, TRUE);
- gtk_widget_set_sensitive (priv->exception_delete, TRUE);
-}
-
-/* Fills in the exception widgets with the data from the calendar component */
-static void
-fill_exception_widgets (RecurrencePage *rpage, CalComponent *comp)
-{
- RecurrencePagePrivate *priv;
- GSList *list, *l;
- gboolean added;
-
- priv = rpage->priv;
-
- cal_component_get_exdate_list (comp, &list);
-
- added = FALSE;
-
- for (l = list; l; l = l->next) {
- CalComponentDateTime *cdt;
- time_t ext;
-
- added = TRUE;
-
- cdt = l->data;
- ext = icaltime_as_timet (*cdt->value);
- append_exception (rpage, ext);
- }
-
- cal_component_free_exdate_list (list);
-
- if (added)
- gtk_clist_select_row (GTK_CLIST (priv->exception_list), 0, 0);
-}
-
-/* Computes a weekday mask for the start day of a calendar component, for use in
- * a WeekdayPicker widget.
- */
-static guint8
-get_start_weekday_mask (CalComponent *comp)
-{
- CalComponentDateTime dt;
- guint8 retval;
-
- cal_component_get_dtstart (comp, &dt);
-
- if (dt.value) {
- time_t t;
- struct tm tm;
-
- t = icaltime_as_timet (*dt.value);
- tm = *localtime (&t);
-
- retval = 0x1 << tm.tm_wday;
- } else
- retval = 0;
-
- cal_component_free_datetime (&dt);
-
- return retval;
-}
-
-/* Sets some sane defaults for the data sources for the recurrence special
- * widgets, even if they will not be used immediately.
- */
-static void
-set_special_defaults (RecurrencePage *rpage)
-{
- RecurrencePagePrivate *priv;
- guint8 mask;
-
- priv = rpage->priv;
-
- mask = get_start_weekday_mask (priv->comp);
-
- priv->weekday_day_mask = mask;
- priv->weekday_blocked_day_mask = mask;
-}
-
-/* Sensitizes the recurrence widgets based on the state of the recurrence type
- * radio group.
- */
-static void
-sensitize_recur_widgets (RecurrencePage *rpage)
-{
- RecurrencePagePrivate *priv;
- enum recur_type type;
- GtkWidget *label;
-
- priv = rpage->priv;
-
- type = e_dialog_radio_get (priv->none, type_map);
-
- if (GTK_BIN (priv->custom_warning_bin)->child)
- gtk_widget_destroy (GTK_BIN (priv->custom_warning_bin)->child);
-
- switch (type) {
- case RECUR_NONE:
- gtk_widget_set_sensitive (priv->params, FALSE);
- gtk_widget_show (priv->params);
- gtk_widget_hide (priv->custom_warning_bin);
- break;
-
- case RECUR_SIMPLE:
- gtk_widget_set_sensitive (priv->params, TRUE);
- gtk_widget_show (priv->params);
- gtk_widget_hide (priv->custom_warning_bin);
- break;
-
- case RECUR_CUSTOM:
- gtk_widget_set_sensitive (priv->params, FALSE);
- gtk_widget_hide (priv->params);
-
- label = gtk_label_new (_("This appointment contains recurrences that Evolution "
- "cannot edit."));
- gtk_container_add (GTK_CONTAINER (priv->custom_warning_bin), label);
- gtk_widget_show_all (priv->custom_warning_bin);
- break;
-
- default:
- g_assert_not_reached ();
- }
-}
-
-/* Re-tags the recurrence preview calendar based on the current information of
- * the widgets in the recurrence page.
- */
-static void
-preview_recur (RecurrencePage *rpage)
-{
- RecurrencePagePrivate *priv;
- CalComponent *comp;
- CalComponentDateTime cdt;
- GSList *l;
-
- priv = rpage->priv;
- g_assert (priv->comp != NULL);
-
- /* Create a scratch component with the start/end and
- * recurrence/excepttion information from the one we are editing.
- */
-
- comp = cal_component_new ();
- cal_component_set_new_vtype (comp, CAL_COMPONENT_EVENT);
-
- cal_component_get_dtstart (priv->comp, &cdt);
- cal_component_set_dtstart (comp, &cdt);
- cal_component_free_datetime (&cdt);
-
- cal_component_get_dtend (priv->comp, &cdt);
- cal_component_set_dtend (comp, &cdt);
- cal_component_free_datetime (&cdt);
-
- cal_component_get_exdate_list (priv->comp, &l);
- cal_component_set_exdate_list (comp, l);
- cal_component_free_exdate_list (l);
-
- cal_component_get_exrule_list (priv->comp, &l);
- cal_component_set_exrule_list (comp, l);
- cal_component_free_recur_list (l);
-
- cal_component_get_rdate_list (priv->comp, &l);
- cal_component_set_rdate_list (comp, l);
- cal_component_free_period_list (l);
-
- cal_component_get_rrule_list (priv->comp, &l);
- cal_component_set_rrule_list (comp, l);
- cal_component_free_recur_list (l);
-
- recur_to_comp_object (rpage, comp);
-
- tag_calendar_by_comp (E_CALENDAR (priv->preview_calendar), comp);
- gtk_object_unref (GTK_OBJECT (comp));
-}
-
-/* fill_widgets handler for the recurrence page. This function is particularly
- * tricky because it has to discriminate between recurrences we support for
- * editing and the ones we don't. We only support at most one recurrence rule;
- * no rdates or exrules (exdates are handled just fine elsewhere).
- */
-static void
-recurrence_page_fill_widgets (EditorPage *page, CalComponent *comp)
-{
- RecurrencePage *rpage;
- RecurrencePagePrivate *priv;
- GSList *rrule_list;
- int len;
- struct icalrecurrencetype *r;
- int n_by_second, n_by_minute, n_by_hour;
- int n_by_day, n_by_month_day, n_by_year_day;
- int n_by_week_no, n_by_month, n_by_set_pos;
- GtkWidget *menu;
- GtkAdjustment *adj;
-
- rpage = RECURRENCE_PAGE (page);
- priv = rpage->priv;
-
- clear_widgets (rpage);
-
- fill_exception_widgets (rpage, comp);
-
- /* Set up defaults for the special widgets */
- set_special_defaults (rpage);
-
- /* No recurrences? */
-
- if (!cal_component_has_rdates (comp)
- && !cal_component_has_rrules (comp)
- && !cal_component_has_exrules (comp)) {
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->none), rpage);
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->simple), rpage);
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->custom), rpage);
- e_dialog_radio_set (priv->none, RECUR_NONE, type_map);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->none), rpage);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->simple), rpage);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->custom), rpage);
-
- gtk_widget_set_sensitive (priv->custom, FALSE);
-
- sensitize_recur_widgets (rpage);
- preview_recur (rpage);
- return;
- }
-
- /* See if it is a custom set we don't support */
-
- cal_component_get_rrule_list (comp, &rrule_list);
- len = g_slist_length (rrule_list);
- if (len > 1
- || cal_component_has_rdates (comp)
- || cal_component_has_exrules (comp))
- goto custom;
-
- /* Down to one rule, so test that one */
-
- g_assert (len == 1);
- r = rrule_list->data;
-
- /* Any funky frequency? */
-
- if (r->freq == ICAL_SECONDLY_RECURRENCE
- || r->freq == ICAL_MINUTELY_RECURRENCE
- || r->freq == ICAL_HOURLY_RECURRENCE)
- goto custom;
-
- /* Any funky shit? */
-
-#define N_HAS_BY(field) (count_by_xxx (field, sizeof (field) / sizeof (field[0])))
-
- n_by_second = N_HAS_BY (r->by_second);
- n_by_minute = N_HAS_BY (r->by_minute);
- n_by_hour = N_HAS_BY (r->by_hour);
- n_by_day = N_HAS_BY (r->by_day);
- n_by_month_day = N_HAS_BY (r->by_month_day);
- n_by_year_day = N_HAS_BY (r->by_year_day);
- n_by_week_no = N_HAS_BY (r->by_week_no);
- n_by_month = N_HAS_BY (r->by_month);
- n_by_set_pos = N_HAS_BY (r->by_set_pos);
-
- if (n_by_second != 0
- || n_by_minute != 0
- || n_by_hour != 0)
- goto custom;
-
- /* Filter the funky shit based on the frequency; if there is nothing
- * weird we can actually set the widgets.
- */
-
- switch (r->freq) {
- case ICAL_DAILY_RECURRENCE:
- if (n_by_day != 0
- || n_by_month_day != 0
- || n_by_year_day != 0
- || n_by_week_no != 0
- || n_by_month != 0
- || n_by_set_pos != 0)
- goto custom;
-
- menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (priv->interval_unit));
- gtk_signal_handler_block_by_data (GTK_OBJECT (menu), rpage);
- e_dialog_option_menu_set (priv->interval_unit, ICAL_DAILY_RECURRENCE, freq_map);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (menu), rpage);
- break;
-
- case ICAL_WEEKLY_RECURRENCE: {
- int i;
- guint8 day_mask;
-
- if (n_by_month_day != 0
- || n_by_year_day != 0
- || n_by_week_no != 0
- || n_by_month != 0
- || n_by_set_pos != 0)
- goto custom;
-
- day_mask = 0;
-
- for (i = 0; i < 8 && r->by_day[i] != ICAL_RECURRENCE_ARRAY_MAX; i++) {
- enum icalrecurrencetype_weekday weekday;
- int pos;
-
- weekday = icalrecurrencetype_day_day_of_week (r->by_day[i]);
- pos = icalrecurrencetype_day_position (r->by_day[i]);
-
- if (pos != 0)
- goto custom;
-
- switch (weekday) {
- case ICAL_SUNDAY_WEEKDAY:
- day_mask |= 1 << 0;
- break;
-
- case ICAL_MONDAY_WEEKDAY:
- day_mask |= 1 << 1;
- break;
-
- case ICAL_TUESDAY_WEEKDAY:
- day_mask |= 1 << 2;
- break;
-
- case ICAL_WEDNESDAY_WEEKDAY:
- day_mask |= 1 << 3;
- break;
-
- case ICAL_THURSDAY_WEEKDAY:
- day_mask |= 1 << 4;
- break;
-
- case ICAL_FRIDAY_WEEKDAY:
- day_mask |= 1 << 5;
- break;
-
- case ICAL_SATURDAY_WEEKDAY:
- day_mask |= 1 << 6;
- break;
-
- default:
- break;
- }
- }
-
- priv->weekday_day_mask = day_mask;
-
- menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (priv->interval_unit));
- gtk_signal_handler_block_by_data (GTK_OBJECT (menu), rpage);
- e_dialog_option_menu_set (priv->interval_unit, ICAL_WEEKLY_RECURRENCE, freq_map);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (menu), rpage);
- break;
- }
-
- case ICAL_MONTHLY_RECURRENCE:
- if (n_by_year_day != 0
- || n_by_week_no != 0
- || n_by_month != 0
- || n_by_set_pos != 0)
- goto custom;
-
- if (n_by_month_day == 1) {
- int nth;
-
- nth = r->by_month_day[0];
- if (nth < 1)
- goto custom;
-
- priv->month_index = nth;
- priv->month_day = MONTH_DAY_NTH;
- } else if (n_by_day == 1) {
- enum icalrecurrencetype_weekday weekday;
- int pos;
- enum month_day_options month_day;
-
- weekday = icalrecurrencetype_day_day_of_week (r->by_day[0]);
- pos = icalrecurrencetype_day_position (r->by_day[0]);
-
- if (pos < 1)
- goto custom;
-
- switch (weekday) {
- case ICAL_MONDAY_WEEKDAY:
- month_day = MONTH_DAY_MON;
- break;
-
- case ICAL_TUESDAY_WEEKDAY:
- month_day = MONTH_DAY_TUE;
- break;
-
- case ICAL_WEDNESDAY_WEEKDAY:
- month_day = MONTH_DAY_WED;
- break;
-
- case ICAL_THURSDAY_WEEKDAY:
- month_day = MONTH_DAY_THU;
- break;
-
- case ICAL_FRIDAY_WEEKDAY:
- month_day = MONTH_DAY_FRI;
- break;
-
- case ICAL_SATURDAY_WEEKDAY:
- month_day = MONTH_DAY_SAT;
- break;
-
- case ICAL_SUNDAY_WEEKDAY:
- month_day = MONTH_DAY_SUN;
- break;
-
- default:
- goto custom;
- }
-
- priv->month_index = pos;
- priv->month_day = month_day;
- } else
- goto custom;
-
- menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (priv->interval_unit));
- gtk_signal_handler_block_by_data (GTK_OBJECT (menu), rpage);
- e_dialog_option_menu_set (priv->interval_unit, ICAL_MONTHLY_RECURRENCE, freq_map);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (menu), rpage);
- break;
-
- case ICAL_YEARLY_RECURRENCE:
- if (n_by_day != 0
- || n_by_month_day != 0
- || n_by_year_day != 0
- || n_by_week_no != 0
- || n_by_month != 0
- || n_by_set_pos != 0)
- goto custom;
-
- menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (priv->interval_unit));
- gtk_signal_handler_block_by_data (GTK_OBJECT (menu), rpage);
- e_dialog_option_menu_set (priv->interval_unit, ICAL_YEARLY_RECURRENCE, freq_map);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (menu), rpage);
- break;
-
- default:
- goto custom;
- }
-
- /* If we got here it means it is a simple recurrence */
-
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->none), rpage);
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->simple), rpage);
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->custom), rpage);
- e_dialog_radio_set (priv->simple, RECUR_SIMPLE, type_map);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->none), rpage);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->simple), rpage);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->custom), rpage);
-
- gtk_widget_set_sensitive (priv->custom, FALSE);
-
- sensitize_recur_widgets (rpage);
- make_recurrence_special (rpage);
-
- adj = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (priv->interval_value));
- gtk_signal_handler_block_by_data (GTK_OBJECT (adj), rpage);
- e_dialog_spin_set (priv->interval_value, r->interval);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (adj), rpage);
-
- fill_ending_date (rpage, r);
-
- goto out;
-
- custom:
-
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->none), rpage);
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->simple), rpage);
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->custom), rpage);
- e_dialog_radio_set (priv->custom, RECUR_CUSTOM, type_map);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->none), rpage);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->simple), rpage);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->custom), rpage);
-
- gtk_widget_set_sensitive (priv->custom, TRUE);
- sensitize_recur_widgets (rpage);
-
- out:
-
- cal_component_free_recur_list (rrule_list);
- preview_recur (rpage);
-}
-
-
-
-/* Gets the widgets from the XML file and returns if they are all available. */
-static gboolean
-get_widgets (RecurrencePage *rpage)
-{
- RecurrencePagePrivate *priv;
- GtkWidget *toplevel;
-
- priv = rpage->priv;
-
-#define GW(name) glade_xml_get_widget (priv->xml, name)
-
- toplevel = GW ("recurrence-toplevel");
- priv->main = GW ("recurrence-page");
- if (!(toplevel && priv->main))
- return NULL;
-
- gtk_widget_ref (priv->main);
- gtk_widget_unparent (priv->main);
- gtk_widget_destroy (toplevel);
-
- priv->summary = GW ("summary");
- priv->starting_date = GW ("starting-date");
-
- priv->none = GW ("none");
- priv->simple = GW ("simple");
- priv->custom = GW ("custom");
- priv->params = GW ("params");
-
- priv->interval_value = GW ("interval-value");
- priv->interval_unit = GW ("interval-unit");
- priv->special = GW ("special");
- priv->ending_menu = GW ("ending-menu");
- priv->ending_special = GW ("ending-special");
- priv->custom_warning_bin = GW ("custom-warning-bin");
-
- priv->exception_date = GW ("exception-date");
- priv->exception_list = GW ("exception-list");
- priv->exception_add = GW ("exception-add");
- priv->exception_modify = GW ("exception-modify");
- priv->exception_delete = GW ("exception-delete");
-
- priv->preview_bin = GW ("preview-bin");
-
-#undef GW
-
- return (priv->summary
- && priv->starting_date
- && priv->none
- && priv->simple
- && priv->custom
- && priv->params
- && priv->interval_value
- && priv->interval_unit
- && priv->special
- && priv->ending_menu
- && priv->ending_special
- && priv->custom_warning_bin
- && priv->exception_date
- && priv->exception_list
- && priv->exception_add
- && priv->exception_modify
- && priv->exception_delete
- && priv->preview_bin);
-}
diff --git a/calendar/gui/dialogs/recurrence-page.glade b/calendar/gui/dialogs/recurrence-page.glade
deleted file mode 100644
index b84a3c288c..0000000000
--- a/calendar/gui/dialogs/recurrence-page.glade
+++ /dev/null
@@ -1,607 +0,0 @@
-<?xml version="1.0"?>
-<GTK-Interface>
-
-<project>
- <name>recurrence-page</name>
- <program_name>recurrence-page</program_name>
- <directory></directory>
- <source_directory>.</source_directory>
- <pixmaps_directory>pixmaps</pixmaps_directory>
- <language>C</language>
- <gnome_support>True</gnome_support>
- <gettext_support>True</gettext_support>
- <output_main_file>False</output_main_file>
- <output_support_files>False</output_support_files>
- <output_build_files>False</output_build_files>
-</project>
-
-<widget>
- <class>GtkWindow</class>
- <name>recurrence-toplevel</name>
- <title>window1</title>
- <type>GTK_WINDOW_TOPLEVEL</type>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>True</allow_grow>
- <auto_shrink>False</auto_shrink>
-
- <widget>
- <class>GtkVBox</class>
- <name>recurrence-page</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame35</name>
- <label>Appointment Basics</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkTable</class>
- <name>table14</name>
- <border_width>4</border_width>
- <rows>2</rows>
- <columns>2</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>2</row_spacing>
- <column_spacing>2</column_spacing>
-
- <widget>
- <class>GtkLabel</class>
- <name>label66</name>
- <label>Su_mmary:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <default_focus_target>recurrence-summary</default_focus_target>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label67</name>
- <label>_Starting date:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>recurrence-summary</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>True</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkAlignment</class>
- <name>alignment40</name>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xscale>0</xscale>
- <yscale>0</yscale>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>Custom</class>
- <name>recurrence-starting-date</name>
- <creation_function>make_date_edit</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Fri, 22 Sep 2000 20:51:38 GMT</last_modification_time>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox55</name>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame36</name>
- <label>Recurrence Rule</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox56</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox56</name>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>recurrence-none</name>
- <can_focus>True</can_focus>
- <label>No recurrence</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>recurrence-radio</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>recurrence-simple</name>
- <can_focus>True</can_focus>
- <label>Simple recurrence</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>recurrence-radio</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>recurrence-custom</name>
- <can_focus>True</can_focus>
- <label>Custom recurrence</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>recurrence-radio</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox57</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>recurrence-params</name>
- <homogeneous>False</homogeneous>
- <spacing>2</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label68</name>
- <label>Every</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkSpinButton</class>
- <name>recurrence-interval-value</name>
- <can_focus>True</can_focus>
- <climb_rate>1</climb_rate>
- <digits>0</digits>
- <numeric>True</numeric>
- <update_policy>GTK_UPDATE_ALWAYS</update_policy>
- <snap>False</snap>
- <wrap>False</wrap>
- <value>1</value>
- <lower>1</lower>
- <upper>10000</upper>
- <step>1</step>
- <page>10</page>
- <page_size>10</page_size>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkOptionMenu</class>
- <name>recurrence-interval-unit</name>
- <can_focus>True</can_focus>
- <items>day(s)
-week(s)
-month(s)
-year(s)
-</items>
- <initial_choice>0</initial_choice>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkAlignment</class>
- <name>recurrence-special</name>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xscale>0</xscale>
- <yscale>0</yscale>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>Placeholder</class>
- </widget>
- </widget>
-
- <widget>
- <class>GtkOptionMenu</class>
- <name>recurrence-ending-menu</name>
- <can_focus>True</can_focus>
- <items>for
-until
-forever
-</items>
- <initial_choice>0</initial_choice>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkAlignment</class>
- <name>recurrence-ending-special</name>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xscale>0</xscale>
- <yscale>0</yscale>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>Placeholder</class>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkAlignment</class>
- <name>recurrence-custom-warning-bin</name>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xscale>1</xscale>
- <yscale>1</yscale>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>Placeholder</class>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox59</name>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame37</name>
- <label>Exceptions</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox60</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox57</name>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>recurrence-exception-add</name>
- <can_focus>True</can_focus>
- <label>Add</label>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>recurrence-exception-modify</name>
- <can_focus>True</can_focus>
- <label>Modify</label>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>recurrence-exception-delete</name>
- <can_focus>True</can_focus>
- <label>Delete</label>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox58</name>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>Custom</class>
- <name>recurrence-exception-date</name>
- <creation_function>make_date_edit</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Tue, 16 May 2000 01:42:29 GMT</last_modification_time>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow14</name>
- <hscrollbar_policy>GTK_POLICY_NEVER</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkCList</class>
- <name>recurrence-exception-list</name>
- <can_focus>True</can_focus>
- <columns>1</columns>
- <column_widths>80</column_widths>
- <selection_mode>GTK_SELECTION_BROWSE</selection_mode>
- <show_titles>False</show_titles>
- <shadow_type>GTK_SHADOW_IN</shadow_type>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>CList:title</child_name>
- <name>label69</name>
- <label>label21</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox59</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label70</name>
- <label>Preview</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkAlignment</class>
- <name>recurrence-preview-bin</name>
- <xalign>0</xalign>
- <yalign>0</yalign>
- <xscale>1</xscale>
- <yscale>1</yscale>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>Placeholder</class>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
-</widget>
-
-</GTK-Interface>
diff --git a/calendar/gui/dialogs/recurrence-page.h b/calendar/gui/dialogs/recurrence-page.h
deleted file mode 100644
index 39123644b4..0000000000
--- a/calendar/gui/dialogs/recurrence-page.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Evolution calendar - Recurrence page of the calendar component dialogs
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Federico Mena-Quintero <federico@ximian.com>
- * Miguel de Icaza <miguel@ximian.com>
- * Seth Alves <alves@hungry.com>
- * JP Rosevear <jpr@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef RECURRENCE_PAGE_H
-#define RECURRENCE_PAGE_H
-
-#include "editor-page.h"
-
-BEGIN_GNOME_DECLS
-
-
-
-#define TYPE_RECURRENCE_PAGE (recurrence_page_get_type ())
-#define RECURRENCE_PAGE(obj) (GTK_CHECK_CAST ((obj), TYPE_RECURRENCE_PAGE, RecurrencePage))
-#define RECURRENCE_PAGE_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), TYPE_RECURRENCE_PAGE, \
- RecurrencePageClass))
-#define IS_RECURRENCE_PAGE(obj) (GTK_CHECK_TYPE ((obj), TYPE_RECURRENCE_PAGE))
-#define IS_RECURRENCE_PAGE_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), TYPE_RECURRENCE_PAGE))
-
-typedef struct _RecurrencePagePrivate RecurrencePagePrivate;
-
-typedef struct {
- EditorPage page;
-
- /* Private data */
- RecurrencePagePrivate *priv;
-} RecurrencePage;
-
-typedef struct {
- EditorPageClass parent_class;
-} RecurrencePageClass;
-
-GtkType recurrence_page_get_type (void);
-
-RecurrencePage *recurrence_page_construct (RecurrencePage *rpage);
-
-RecurrencePage *recurrence_page_new (void);
-
-
-
-END_GNOME_DECLS
-
-#endif
diff --git a/calendar/gui/dialogs/save-comp.c b/calendar/gui/dialogs/save-comp.c
deleted file mode 100644
index c36e98cb5a..0000000000
--- a/calendar/gui/dialogs/save-comp.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Evolution calendar - Delete calendar component dialog
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <glib.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <libgnomeui/gnome-messagebox.h>
-#include <libgnomeui/gnome-stock.h>
-#include <gal/widgets/e-unicode.h>
-#include "save-comp.h"
-
-
-
-/**
- * save_component_dialog:
- * @parent: Window to use as the transient dialog's parent.
- *
- * Pops up a dialog box asking the user whether he wants to save changes for
- * a calendar component.
- *
- * Return value: TRUE if changes shold be saved, FALSE otherwise.
- **/
-gint
-save_component_dialog (GtkWindow *parent)
-{
- GtkWidget *dialog;
-
- dialog = gnome_message_box_new (_("Do you want to save changes?"),
- GNOME_MESSAGE_BOX_QUESTION,
- GNOME_STOCK_BUTTON_YES,
- GNOME_STOCK_BUTTON_NO,
- GNOME_STOCK_BUTTON_CANCEL,
- NULL);
-
- gnome_dialog_set_default (GNOME_DIALOG (dialog), 0);
- gnome_dialog_grab_focus (GNOME_DIALOG (dialog), 0);
- gnome_dialog_set_parent (GNOME_DIALOG (dialog), parent);
-
- return gnome_dialog_run_and_close (GNOME_DIALOG (dialog));
-}
diff --git a/calendar/gui/dialogs/save-comp.h b/calendar/gui/dialogs/save-comp.h
deleted file mode 100644
index 8b1db3c503..0000000000
--- a/calendar/gui/dialogs/save-comp.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Evolution calendar - Delete calendar component dialog
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef SAVE_COMP_H
-#define SAVE_COMP_H
-
-#include <gtk/gtkwindow.h>
-
-gint save_component_dialog (GtkWindow *parent);
-
-#endif
diff --git a/calendar/gui/dialogs/task-details-page.glade b/calendar/gui/dialogs/task-details-page.glade
deleted file mode 100644
index 31e3aba6c4..0000000000
--- a/calendar/gui/dialogs/task-details-page.glade
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0"?>
-<GTK-Interface>
-
-<project>
- <name>task-details-page</name>
- <program_name>task-details-page</program_name>
- <directory></directory>
- <source_directory>src</source_directory>
- <pixmaps_directory>pixmaps</pixmaps_directory>
- <language>C</language>
- <gnome_support>True</gnome_support>
- <gettext_support>True</gettext_support>
-</project>
-
-<widget>
- <class>GtkWindow</class>
- <name>task-details-toplevel</name>
- <title>window1</title>
- <type>GTK_WINDOW_TOPLEVEL</type>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>True</allow_grow>
- <auto_shrink>False</auto_shrink>
-
- <widget>
- <class>GtkTable</class>
- <name>task-details-page</name>
- <border_width>4</border_width>
- <rows>2</rows>
- <columns>2</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>2</row_spacing>
- <column_spacing>4</column_spacing>
-
- <widget>
- <class>GtkLabel</class>
- <name>label12</name>
- <label>Date Completed:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label14</name>
- <label>URL:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>url</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>Custom</class>
- <name>completed-date</name>
- <creation_function>task_editor_create_date_edit</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Sun, 10 Sep 2000 17:34:07 GMT</last_modification_time>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
- </widget>
-</widget>
-
-</GTK-Interface>
diff --git a/calendar/gui/dialogs/task-editor-dialog.glade b/calendar/gui/dialogs/task-editor-dialog.glade
deleted file mode 100644
index ae7ea9681a..0000000000
--- a/calendar/gui/dialogs/task-editor-dialog.glade
+++ /dev/null
@@ -1,695 +0,0 @@
-<?xml version="1.0"?>
-<GTK-Interface>
-
-<project>
- <name>task-editor-dialog</name>
- <program_name>task-editor-dialog</program_name>
- <directory></directory>
- <source_directory>src</source_directory>
- <pixmaps_directory>pixmaps</pixmaps_directory>
- <language>C</language>
- <gnome_support>True</gnome_support>
- <gettext_support>True</gettext_support>
-</project>
-
-<widget>
- <class>GnomePropertyBox</class>
- <name>task-editor-dialog</name>
- <visible>False</visible>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>False</allow_grow>
- <auto_shrink>False</auto_shrink>
-
- <widget>
- <class>GtkNotebook</class>
- <child_name>GnomeDock:contents</child_name>
- <name>notebook1</name>
- <border_width>2</border_width>
- <can_focus>True</can_focus>
- <show_tabs>True</show_tabs>
- <show_border>True</show_border>
- <tab_pos>GTK_POS_TOP</tab_pos>
- <scrollable>False</scrollable>
- <tab_hborder>2</tab_hborder>
- <tab_vborder>2</tab_vborder>
- <popup_enable>False</popup_enable>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox1</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GtkTable</class>
- <name>table3</name>
- <rows>1</rows>
- <columns>2</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>4</row_spacing>
- <column_spacing>4</column_spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label3</name>
- <label>Su_mmary:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <default_focus_target>summary</default_focus_target>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>False</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>summary</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame2</name>
- <label>Date &amp; Time</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox4</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
-
- <widget>
- <class>GtkTable</class>
- <name>table1</name>
- <rows>2</rows>
- <columns>2</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>2</row_spacing>
- <column_spacing>4</column_spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label6</name>
- <label>Sta_rt Date:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label5</name>
- <label>_Due Date:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>Custom</class>
- <name>due-date</name>
- <creation_function>task_editor_create_date_edit</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Sun, 10 Sep 2000 17:32:18 GMT</last_modification_time>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>Custom</class>
- <name>start-date</name>
- <creation_function>task_editor_create_date_edit</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Sun, 10 Sep 2000 17:33:31 GMT</last_modification_time>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow1</name>
- <hscrollbar_policy>GTK_POLICY_NEVER</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkText</class>
- <name>description</name>
- <height>80</height>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text></text>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame23</name>
- <label>Progress</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox3</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GtkLabel</class>
- <name>label7</name>
- <label>_Status:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <default_focus_target>status</default_focus_target>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkOptionMenu</class>
- <name>status</name>
- <can_focus>True</can_focus>
- <items>Not Started
-In Progress
-Completed
-Cancelled
-</items>
- <initial_choice>0</initial_choice>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label8</name>
- <label>_Priority:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <default_focus_target>priority</default_focus_target>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkOptionMenu</class>
- <name>priority</name>
- <can_focus>True</can_focus>
- <items>High
-Normal
-Low
-Undefined
-</items>
- <initial_choice>0</initial_choice>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label9</name>
- <label>% Comp_lete:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <default_focus_target>percent-complete</default_focus_target>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkSpinButton</class>
- <name>percent-complete</name>
- <width>60</width>
- <can_focus>True</can_focus>
- <climb_rate>1</climb_rate>
- <digits>0</digits>
- <numeric>False</numeric>
- <update_policy>GTK_UPDATE_ALWAYS</update_policy>
- <snap>False</snap>
- <wrap>False</wrap>
- <value>0</value>
- <lower>0</lower>
- <upper>100</upper>
- <step>10</step>
- <page>10</page>
- <page_size>10</page_size>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame24</name>
- <label>Classification</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox6</name>
- <border_width>2</border_width>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>classification-public</name>
- <can_focus>True</can_focus>
- <label>Pu_blic</label>
- <active>True</active>
- <draw_indicator>True</draw_indicator>
- <group>classification_radio_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>classification-private</name>
- <can_focus>True</can_focus>
- <label>Pri_vate</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>classification_radio_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>classification-confidential</name>
- <can_focus>True</can_focus>
- <label>_Confidential</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>classification_radio_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox2</name>
- <homogeneous>False</homogeneous>
- <spacing>2</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>contacts-button</name>
- <can_focus>True</can_focus>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label16</name>
- <label>_Contacts...</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>4</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>contacts</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>categories-button</name>
- <can_focus>True</can_focus>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label17</name>
- <label>Ca_tegories...</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>4</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>categories</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>Notebook:tab</child_name>
- <name>label1</name>
- <label>Task</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
-
- <widget>
- <class>GtkTable</class>
- <name>table4</name>
- <border_width>4</border_width>
- <rows>2</rows>
- <columns>2</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>2</row_spacing>
- <column_spacing>4</column_spacing>
-
- <widget>
- <class>GtkLabel</class>
- <name>label12</name>
- <label>Date Completed:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label14</name>
- <label>URL:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>url</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>Custom</class>
- <name>completed-date</name>
- <creation_function>task_editor_create_date_edit</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Sun, 10 Sep 2000 17:34:07 GMT</last_modification_time>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>Notebook:tab</child_name>
- <name>label2</name>
- <label>Details</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
-</widget>
-
-</GTK-Interface>
diff --git a/calendar/gui/dialogs/task-editor.c b/calendar/gui/dialogs/task-editor.c
deleted file mode 100644
index b21de4bd32..0000000000
--- a/calendar/gui/dialogs/task-editor.c
+++ /dev/null
@@ -1,1294 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 2000, Helix Code, Inc.
- * Copyright 2000, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * TaskEditor - a GtkObject which handles a libglade-loaded dialog to edit
- * tasks.
- */
-
-#include <config.h>
-#include <glade/glade.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <gal/util/e-util.h>
-#include <gal/widgets/e-unicode.h>
-#include <gal/widgets/e-categories.h>
-#include <e-util/e-dialog-widgets.h>
-#include <widgets/misc/e-dateedit.h>
-#include <cal-util/timeutil.h>
-#include "delete-comp.h"
-#include "save-comp.h"
-#include "task-editor.h"
-#include "../calendar-config.h"
-#include "../widget-util.h"
-
-
-typedef struct {
- /* Glade XML data */
- GladeXML *xml;
-
- /* Client to use */
- CalClient *client;
-
- /* Calendar component we are editing; this is an internal copy and is
- * not one of the read-only objects from the parent calendar.
- */
- CalComponent *comp;
-
-
- /* This is TRUE while we are setting the widget values. We just return
- from any signal handlers. */
- gboolean ignore_callbacks;
-
- /* Widgets from the Glade file */
-
- GtkWidget *app;
-
- GtkWidget *summary;
-
- GtkWidget *due_date;
- GtkWidget *start_date;
-
- GtkWidget *percent_complete;
-
- GtkWidget *status;
- GtkWidget *priority;
-
- GtkWidget *description;
-
- GtkWidget *classification_public;
- GtkWidget *classification_private;
- GtkWidget *classification_confidential;
-
- GtkWidget *contacts_btn;
- GtkWidget *contacts;
-
- GtkWidget *categories_btn;
- GtkWidget *categories;
-
- GtkWidget *completed_date;
- GtkWidget *url;
-
- /* Call task_editor_set_changed() to set this to TRUE when any field
- in the dialog is changed. When the user closes the dialog we will
- prompt to save changes. */
- gboolean changed;
-} TaskEditorPrivate;
-
-
-/* Note that these two arrays must match. */
-static const int status_map[] = {
- ICAL_STATUS_NEEDSACTION,
- ICAL_STATUS_INPROCESS,
- ICAL_STATUS_COMPLETED,
- ICAL_STATUS_CANCELLED,
- -1
-};
-
-typedef enum {
- PRIORITY_HIGH,
- PRIORITY_NORMAL,
- PRIORITY_LOW,
- PRIORITY_UNDEFINED,
-} TaskEditorPriority;
-
-static const int priority_map[] = {
- PRIORITY_HIGH,
- PRIORITY_NORMAL,
- PRIORITY_LOW,
- PRIORITY_UNDEFINED,
- -1
-};
-
-static const int classification_map[] = {
- CAL_COMPONENT_CLASS_PUBLIC,
- CAL_COMPONENT_CLASS_PRIVATE,
- CAL_COMPONENT_CLASS_CONFIDENTIAL,
- -1
-};
-
-static void task_editor_class_init (TaskEditorClass *class);
-static void task_editor_init (TaskEditor *tedit);
-static void tedit_apply_event_cb (GtkWidget *widget, gint page_num, gpointer data);
-static gint tedit_close_event_cb (GtkWidget *widget, gpointer data);
-static gint tedit_delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer data);
-static void close_dialog (TaskEditor *tedit);
-static gboolean get_widgets (TaskEditor *tedit);
-static void init_widgets (TaskEditor *tedit);
-static void task_editor_destroy (GtkObject *object);
-static char * make_title_from_comp (CalComponent *comp);
-static void set_title_from_comp (TaskEditor *tedit, CalComponent *comp);
-static void clear_widgets (TaskEditor *tedit);
-static void fill_widgets (TaskEditor *tedit);
-
-static void save_todo_object (TaskEditor *tedit);
-static void dialog_to_comp_object (TaskEditor *tedit);
-
-static void obj_updated_cb (CalClient *client, const char *uid, gpointer data);
-static void obj_removed_cb (CalClient *client, const char *uid, gpointer data);
-static void raise_and_focus (GtkWidget *widget);
-
-static TaskEditorPriority priority_value_to_index (int priority_value);
-static int priority_index_to_value (TaskEditorPriority priority);
-
-static void completed_changed (EDateEdit *dedit,
- TaskEditor *tedit);
-static void status_changed (GtkMenu *menu,
- TaskEditor *tedit);
-static void percent_complete_changed (GtkAdjustment *adj,
- TaskEditor *tedit);
-static void field_changed (GtkWidget *widget,
- TaskEditor *tedit);
-static void task_editor_set_changed (TaskEditor *tedit,
- gboolean changed);
-static gboolean prompt_to_save_changes (TaskEditor *tedit);
-static CalComponentClassification classification_get (GtkWidget *widget);
-static void categories_clicked (GtkWidget *button,
- TaskEditor *editor);
-
-/* The function libglade calls to create the EDateEdit widgets in the GUI. */
-GtkWidget * task_editor_create_date_edit (void);
-
-static GtkObjectClass *parent_class;
-
-E_MAKE_TYPE(task_editor, "TaskEditor", TaskEditor,
- task_editor_class_init, task_editor_init, GTK_TYPE_OBJECT)
-
-
-static void
-task_editor_class_init (TaskEditorClass *class)
-{
- GtkObjectClass *object_class;
-
- object_class = (GtkObjectClass *) class;
-
- parent_class = gtk_type_class (GTK_TYPE_OBJECT);
-
- object_class->destroy = task_editor_destroy;
-}
-
-
-static void
-task_editor_init (TaskEditor *tedit)
-{
- TaskEditorPrivate *priv;
-
- priv = g_new0 (TaskEditorPrivate, 1);
- tedit->priv = priv;
-
- priv->ignore_callbacks = FALSE;
-
- task_editor_set_changed (tedit, FALSE);
-}
-
-
-/**
- * task_editor_new:
- * @Returns: a new #TaskEditor.
- *
- * Creates a new #TaskEditor.
- **/
-TaskEditor *
-task_editor_new (void)
-{
- TaskEditor *tedit;
-
- tedit = TASK_EDITOR (gtk_type_new (task_editor_get_type ()));
- return task_editor_construct (tedit);
-}
-
-/**
- * task_editor_construct:
- * @tedit: A #TaskEditor.
- *
- * Constructs a task editor by loading its Glade XML file.
- *
- * Return value: The same object as @tedit, or NULL if the widgets could not be
- * created. In the latter case, the task editor will automatically be
- * destroyed.
- **/
-TaskEditor *
-task_editor_construct (TaskEditor *tedit)
-{
- TaskEditorPrivate *priv;
-
- g_return_val_if_fail (tedit != NULL, NULL);
- g_return_val_if_fail (IS_TASK_EDITOR (tedit), NULL);
-
- priv = tedit->priv;
-
- /* Load the content widgets */
-
- priv->xml = glade_xml_new (EVOLUTION_GLADEDIR "/task-editor-dialog.glade", NULL);
- if (!priv->xml) {
- g_message ("task_editor_construct(): Could not load the Glade XML file!");
- goto error;
- }
-
- if (!get_widgets (tedit)) {
- g_message ("task_editor_construct(): Could not find all widgets in the XML file!");
- goto error;
- }
-
- init_widgets (tedit);
-
- /* Hook to destruction of the dialog */
- gtk_signal_connect (GTK_OBJECT (priv->app), "apply",
- GTK_SIGNAL_FUNC (tedit_apply_event_cb), tedit);
- gtk_signal_connect (GTK_OBJECT (priv->app), "close",
- GTK_SIGNAL_FUNC (tedit_close_event_cb), tedit);
- gtk_signal_connect (GTK_OBJECT (priv->app), "delete_event",
- GTK_SIGNAL_FUNC (tedit_delete_event_cb), tedit);
-
- /* Add focus to the summary entry */
- gtk_widget_grab_focus (GTK_WIDGET (priv->summary));
-
-
- return tedit;
-
- error:
-
- gtk_object_unref (GTK_OBJECT (tedit));
- return NULL;
-}
-
-
-/* Called by libglade to create our custom EDateEdit widgets. */
-GtkWidget *
-task_editor_create_date_edit (void)
-{
- GtkWidget *dedit;
-
- dedit = date_edit_new (TRUE, TRUE);
- e_date_edit_set_allow_no_date_set (E_DATE_EDIT (dedit), TRUE);
-
- return dedit;
-}
-
-/* Callback used when the dialog box is destroyed */
-static void
-tedit_apply_event_cb (GtkWidget *widget, gint page_num, gpointer data)
-{
- TaskEditor *tedit;
-
- g_return_if_fail (IS_TASK_EDITOR (data));
-
- tedit = TASK_EDITOR (data);
-
- if (page_num != -1)
- return;
-
- save_todo_object (tedit);
-}
-
-/* Callback used when the dialog box is destroyed */
-static gint
-tedit_close_event_cb (GtkWidget *widget, gpointer data)
-{
- TaskEditor *tedit;
-
- g_return_val_if_fail (IS_TASK_EDITOR (data), TRUE);
-
- tedit = TASK_EDITOR (data);
-
- if (prompt_to_save_changes (tedit))
- close_dialog (tedit);
-
- return TRUE;
-}
-
-/* Callback used when the dialog box is destroyed */
-static gint
-tedit_delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer data)
-{
- TaskEditor *tedit;
-
- g_return_val_if_fail (IS_TASK_EDITOR (data), TRUE);
-
- tedit = TASK_EDITOR (data);
-
- if (prompt_to_save_changes (tedit))
- close_dialog (tedit);
-
- return TRUE;
-}
-
-
-/* Closes the dialog box and emits the appropriate signals */
-static void
-close_dialog (TaskEditor *tedit)
-{
- TaskEditorPrivate *priv;
-
- priv = tedit->priv;
-
- g_assert (priv->app != NULL);
-
- gtk_object_destroy (GTK_OBJECT (tedit));
-}
-
-
-/* Gets the widgets from the XML file and returns if they are all available.
- * For the widgets whose values can be simply set with e-dialog-utils, it does
- * that as well.
- */
-static gboolean
-get_widgets (TaskEditor *tedit)
-{
- TaskEditorPrivate *priv;
-
- priv = tedit->priv;
-
-#define GW(name) glade_xml_get_widget (priv->xml, name)
-
- priv->app = GW ("task-editor-dialog");
-
- priv->summary = GW ("summary");
-
- priv->due_date = GW ("due-date");
- priv->start_date = GW ("start-date");
-
- priv->percent_complete = GW ("percent-complete");
-
- priv->status = GW ("status");
- priv->priority = GW ("priority");
-
- priv->description = GW ("description");
-
- priv->classification_public = GW ("classification-public");
- priv->classification_private = GW ("classification-private");
- priv->classification_confidential = GW ("classification-confidential");
-
- priv->contacts_btn = GW ("contacts-button");
- priv->contacts = GW ("contacts");
-
- priv->categories_btn = GW ("categories-button");
- priv->categories = GW ("categories");
-
- priv->completed_date = GW ("completed-date");
- priv->url = GW ("url");
-
-#undef GW
-
- return (priv->app
- && priv->summary
- && priv->due_date
- && priv->start_date
- && priv->percent_complete
- && priv->status
- && priv->priority
- && priv->classification_public
- && priv->classification_private
- && priv->classification_confidential
- && priv->description
- && priv->contacts_btn
- && priv->contacts
- && priv->categories_btn
- && priv->categories
- && priv->completed_date
- && priv->url);
-}
-
-
-/* Hooks the widget signals */
-static void
-init_widgets (TaskEditor *tedit)
-{
- TaskEditorPrivate *priv;
-
- priv = tedit->priv;
-
- /* Connect signals. The Status, Percent Complete & Date Completed
- properties are closely related so whenever one changes we may need
- to update the other 2. */
- gtk_signal_connect (GTK_OBJECT (priv->completed_date), "changed",
- GTK_SIGNAL_FUNC (completed_changed), tedit);
-
- gtk_signal_connect (GTK_OBJECT (GTK_OPTION_MENU (priv->status)->menu),
- "deactivate",
- GTK_SIGNAL_FUNC (status_changed), tedit);
-
- gtk_signal_connect (GTK_OBJECT (GTK_SPIN_BUTTON (priv->percent_complete)->adjustment),
- "value_changed",
- GTK_SIGNAL_FUNC (percent_complete_changed), tedit);
-
- /* Classification */
- gtk_signal_connect (GTK_OBJECT (priv->description), "changed",
- GTK_SIGNAL_FUNC (field_changed), tedit);
- gtk_signal_connect (GTK_OBJECT (priv->classification_public),
- "toggled",
- GTK_SIGNAL_FUNC (field_changed), tedit);
- gtk_signal_connect (GTK_OBJECT (priv->classification_private),
- "toggled",
- GTK_SIGNAL_FUNC (field_changed), tedit);
- gtk_signal_connect (GTK_OBJECT (priv->classification_confidential),
- "toggled",
- GTK_SIGNAL_FUNC (field_changed), tedit);
-
- /* Connect the default signal handler to use to make sure the "changed"
- field gets set whenever a field is changed. */
- gtk_signal_connect (GTK_OBJECT (priv->summary), "changed",
- GTK_SIGNAL_FUNC (field_changed), tedit);
- gtk_signal_connect (GTK_OBJECT (priv->due_date), "changed",
- GTK_SIGNAL_FUNC (field_changed), tedit);
- gtk_signal_connect (GTK_OBJECT (priv->start_date), "changed",
- GTK_SIGNAL_FUNC (field_changed), tedit);
- gtk_signal_connect (GTK_OBJECT (GTK_OPTION_MENU (priv->priority)->menu),
- "deactivate",
- GTK_SIGNAL_FUNC (field_changed), tedit);
- gtk_signal_connect (GTK_OBJECT (priv->description), "changed",
- GTK_SIGNAL_FUNC (field_changed), tedit);
- gtk_signal_connect (GTK_OBJECT (priv->contacts), "changed",
- GTK_SIGNAL_FUNC (field_changed), tedit);
- gtk_signal_connect (GTK_OBJECT (priv->categories), "changed",
- GTK_SIGNAL_FUNC (field_changed), tedit);
- gtk_signal_connect (GTK_OBJECT (priv->url), "changed",
- GTK_SIGNAL_FUNC (field_changed), tedit);
-
- /* Button clicks */
- gtk_signal_connect (GTK_OBJECT (priv->categories_btn), "clicked",
- GTK_SIGNAL_FUNC (categories_clicked), tedit);
-
- /* FIXME: we do not support these fields yet, so we disable them */
-
- gtk_widget_set_sensitive (priv->contacts_btn, FALSE);
- gtk_widget_set_sensitive (priv->contacts, FALSE);
-}
-
-static void
-task_editor_destroy (GtkObject *object)
-{
- TaskEditor *tedit;
- TaskEditorPrivate *priv;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (IS_TASK_EDITOR (object));
-
- tedit = TASK_EDITOR (object);
- priv = tedit->priv;
-
- if (priv->app) {
- gtk_widget_destroy (priv->app);
- priv->app = NULL;
- }
-
- if (priv->comp) {
- gtk_object_unref (GTK_OBJECT (priv->comp));
- priv->comp = NULL;
- }
-
- if (priv->client) {
- gtk_signal_disconnect_by_data (GTK_OBJECT (priv->client),
- tedit);
- gtk_object_unref (GTK_OBJECT (priv->client));
- priv->client = NULL;
- }
-
- if (priv->xml) {
- gtk_object_unref (GTK_OBJECT (priv->xml));
- priv->xml = NULL;
- }
-
- g_free (priv);
- tedit->priv = NULL;
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-
-void
-task_editor_set_cal_client (TaskEditor *tedit,
- CalClient *client)
-{
- TaskEditorPrivate *priv;
-
- g_return_if_fail (tedit != NULL);
- g_return_if_fail (IS_TASK_EDITOR (tedit));
-
- priv = tedit->priv;
-
- if (client == priv->client)
- return;
-
- if (client)
- g_return_if_fail (IS_CAL_CLIENT (client));
-
- if (client)
- g_return_if_fail (cal_client_get_load_state (client) == CAL_CLIENT_LOAD_LOADED);
-
- if (client)
- gtk_object_ref (GTK_OBJECT (client));
-
- if (priv->client) {
- gtk_signal_disconnect_by_data (GTK_OBJECT (priv->client),
- tedit);
- gtk_object_unref (GTK_OBJECT (priv->client));
- }
-
- priv->client = client;
-
- if (priv->client) {
- gtk_signal_connect (GTK_OBJECT (priv->client), "obj_updated",
- GTK_SIGNAL_FUNC (obj_updated_cb), tedit);
- gtk_signal_connect (GTK_OBJECT (priv->client), "obj_removed",
- GTK_SIGNAL_FUNC (obj_removed_cb), tedit);
- }
-}
-
-
-/* Callback used when the calendar client tells us that an object changed */
-static void
-obj_updated_cb (CalClient *client, const char *uid, gpointer data)
-{
- /* FIXME: Do something sensible if the component changes under our feet */
-#if 0
- TaskEditor *tedit;
- TaskEditorPrivate *priv;
- CalComponent *comp;
- CalClientGetStatus status;
- const gchar *editing_uid;
-
- tedit = TASK_EDITOR (data);
-
- g_return_if_fail (IS_TASK_EDITOR (tedit));
-
- priv = tedit->priv;
-
- /* If we aren't showing the object which has been updated, return. */
- if (!priv->comp)
- return;
- cal_component_get_uid (priv->comp, &editing_uid);
- if (strcmp (uid, editing_uid))
- return;
-
-
- /* Get the task from the server. */
- status = cal_client_get_object (priv->client, uid, &comp);
-
- switch (status) {
- case CAL_CLIENT_GET_SUCCESS:
- /* Everything is fine */
- break;
-
- case CAL_CLIENT_GET_SYNTAX_ERROR:
- g_message ("obj_updated_cb(): Syntax error when getting object `%s'", uid);
- return;
-
- case CAL_CLIENT_GET_NOT_FOUND:
- /* The object is no longer in the server, so do nothing */
- return;
-
- default:
- g_assert_not_reached ();
- return;
- }
-
- raise_and_focus (priv->app);
-#endif
-}
-
-/* Callback used when the calendar client tells us that an object was removed */
-static void
-obj_removed_cb (CalClient *client, const char *uid, gpointer data)
-{
- /* FIXME: Do something sensible if the component is removed under our
- * feet.
- */
-#if 0
- TaskEditor *tedit;
- TaskEditorPrivate *priv;
- const gchar *editing_uid;
-
- tedit = TASK_EDITOR (data);
-
- g_return_if_fail (tedit != NULL);
- g_return_if_fail (IS_TASK_EDITOR (tedit));
-
- priv = tedit->priv;
-
- /* If we aren't showing the object which has been updated, return. */
- if (!priv->comp)
- return;
- cal_component_get_uid (priv->comp, &editing_uid);
- if (strcmp (uid, editing_uid))
- return;
-
-
- raise_and_focus (priv->app);
-#endif
-}
-
-
-/* Brings attention to a window by raising it and giving it focus */
-static void
-raise_and_focus (GtkWidget *widget)
-{
- g_assert (GTK_WIDGET_REALIZED (widget));
- gdk_window_show (widget->window);
- gtk_widget_grab_focus (widget);
-}
-
-
-/**
- * task_editor_set_todo_object:
- * @tedit: A #TaskEditor.
- * @comp: A todo object.
- *
- * Sets the todo object that a task editor dialog will manipulate.
- **/
-void
-task_editor_set_todo_object (TaskEditor *tedit,
- CalComponent *comp)
-{
- TaskEditorPrivate *priv;
-
- g_return_if_fail (tedit != NULL);
- g_return_if_fail (IS_TASK_EDITOR (tedit));
-
- priv = tedit->priv;
-
- if (priv->comp) {
- gtk_object_unref (GTK_OBJECT (priv->comp));
- priv->comp = NULL;
- }
-
- if (comp)
- priv->comp = cal_component_clone (comp);
-
- set_title_from_comp (tedit, priv->comp);
- fill_widgets (tedit);
-}
-
-void
-task_editor_focus (TaskEditor *tedit)
-{
- TaskEditorPrivate *priv;
-
- g_return_if_fail (tedit != NULL);
- g_return_if_fail (IS_TASK_EDITOR (tedit));
-
- priv = tedit->priv;
- gtk_widget_show_now (priv->app);
- raise_and_focus (priv->app);
-}
-
-#warning this is duplicated function from ../event-editor.c
-/* Creates an appropriate title for the task editor dialog */
-static char *
-make_title_from_comp (CalComponent *comp)
-{
- char *title;
- const char *type_string;
- CalComponentVType type;
- CalComponentText text;
-
- if (!comp)
- return g_strdup (_("Edit Task"));
-
- type = cal_component_get_vtype (comp);
- switch (type) {
- case CAL_COMPONENT_EVENT:
- type_string = _("Appointment - %s");
- break;
- case CAL_COMPONENT_TODO:
- type_string = _("Task - %s");
- break;
- case CAL_COMPONENT_JOURNAL:
- type_string = _("Journal entry - %s");
- break;
- default:
- g_message ("make_title_from_comp(): Cannot handle object of type %d", type);
- return NULL;
- }
-
- cal_component_get_summary (comp, &text);
- if (text.value) {
- char *summary;
- summary = e_utf8_to_locale_string (text.value);
- title = g_strdup_printf (type_string, summary);
- g_free (summary);
- } else
- title = g_strdup_printf (type_string, _("No summary"));
-
- return title;
-}
-
-/* Sets the event editor's window title from a calendar component */
-static void
-set_title_from_comp (TaskEditor *tedit, CalComponent *comp)
-{
- TaskEditorPrivate *priv = tedit->priv;
- char *title;
-
- title = make_title_from_comp (comp);
- gtk_window_set_title (GTK_WINDOW (priv->app), title);
- g_free (title);
-}
-
-/* Fills the widgets with default values */
-static void
-clear_widgets (TaskEditor *tedit)
-{
- TaskEditorPrivate *priv;
-
- priv = tedit->priv;
-
-
-}
-
-/* Fills in the widgets with the proper values */
-static void
-fill_widgets (TaskEditor *tedit)
-{
- TaskEditorPrivate *priv;
- CalComponentText text;
- CalComponentDateTime d;
- CalComponentClassification cl;
- struct icaltimetype *completed;
- GSList *l;
- time_t t;
- int *priority_value, *percent;
- icalproperty_status status;
- TaskEditorPriority priority;
- const char *url;
- const char *categories;
-
- priv = tedit->priv;
-
- task_editor_set_changed (tedit, FALSE);
-
- clear_widgets (tedit);
-
- if (!priv->comp)
- return;
-
- /* We want to ignore any signals emitted while changing fields. */
- priv->ignore_callbacks = TRUE;
-
-
- cal_component_get_summary (priv->comp, &text);
- e_dialog_editable_set (priv->summary, text.value);
-
- cal_component_get_description_list (priv->comp, &l);
- if (l) {
- text = *(CalComponentText *)l->data;
- e_dialog_editable_set (priv->description, text.value);
- } else {
- e_dialog_editable_set (priv->description, NULL);
- }
- cal_component_free_text_list (l);
-
- /* Due Date. */
- cal_component_get_due (priv->comp, &d);
- if (d.value) {
- t = icaltime_as_timet (*d.value);
- } else {
- t = -1;
- }
- e_date_edit_set_time (E_DATE_EDIT (priv->due_date), t);
-
- /* Start Date. */
- cal_component_get_dtstart (priv->comp, &d);
- if (d.value) {
- t = icaltime_as_timet (*d.value);
- } else {
- t = -1;
- }
- e_date_edit_set_time (E_DATE_EDIT (priv->start_date), t);
-
- /* Completed Date. */
- cal_component_get_completed (priv->comp, &completed);
- if (completed) {
- t = icaltime_as_timet (*completed);
- cal_component_free_icaltimetype (completed);
- } else {
- t = -1;
- }
- e_date_edit_set_time (E_DATE_EDIT (priv->completed_date), t);
-
- /* Percent Complete. */
- cal_component_get_percent (priv->comp, &percent);
- if (percent) {
- e_dialog_spin_set (priv->percent_complete, *percent);
- cal_component_free_percent (percent);
- } else {
- /* FIXME: Could check if task is completed and set 100%. */
- e_dialog_spin_set (priv->percent_complete, 0);
- }
-
- /* Status. */
- cal_component_get_status (priv->comp, &status);
- if (status == ICAL_STATUS_NONE) {
- /* Try to user the percent value. */
- if (percent) {
- if (*percent == 0)
- status = ICAL_STATUS_NEEDSACTION;
- else if (*percent == 100)
- status = ICAL_STATUS_COMPLETED;
- else
- status = ICAL_STATUS_INPROCESS;
- } else
- status = ICAL_STATUS_NEEDSACTION;
- }
- e_dialog_option_menu_set (priv->status, status, status_map);
-
- /* Priority. */
- cal_component_get_priority (priv->comp, &priority_value);
- if (priority_value) {
- priority = priority_value_to_index (*priority_value);
- cal_component_free_priority (priority_value);
- } else {
- priority = PRIORITY_UNDEFINED;
- }
- e_dialog_option_menu_set (priv->priority, priority, priority_map);
-
-
- /* Classification. */
- cal_component_get_classification (priv->comp, &cl);
-
- switch (cl) {
- case CAL_COMPONENT_CLASS_PUBLIC:
- e_dialog_radio_set (priv->classification_public, CAL_COMPONENT_CLASS_PUBLIC,
- classification_map);
- case CAL_COMPONENT_CLASS_PRIVATE:
- e_dialog_radio_set (priv->classification_public, CAL_COMPONENT_CLASS_PRIVATE,
- classification_map);
- case CAL_COMPONENT_CLASS_CONFIDENTIAL:
- e_dialog_radio_set (priv->classification_public, CAL_COMPONENT_CLASS_CONFIDENTIAL,
- classification_map);
- default:
- /* What do do? We can't g_assert_not_reached() since it is a
- * value from an external file.
- */
- }
-
- /* Categories */
- cal_component_get_categories (priv->comp, &categories);
- e_dialog_editable_set (priv->categories, categories);
-
- /* URL. */
- cal_component_get_url (priv->comp, &url);
- e_dialog_editable_set (priv->url, url);
-
- priv->ignore_callbacks = FALSE;
-}
-
-
-static void
-save_todo_object (TaskEditor *tedit)
-{
- TaskEditorPrivate *priv;
-
- priv = tedit->priv;
-
- g_return_if_fail (priv->client != NULL);
-
- if (!priv->comp)
- return;
-
- dialog_to_comp_object (tedit);
- set_title_from_comp (tedit, priv->comp);
-
- if (!cal_client_update_object (priv->client, priv->comp))
- g_message ("save_todo_object(): Could not update the object!");
- else
- task_editor_set_changed (tedit, FALSE);
-}
-
-
-/* Get the values of the widgets in the event editor and put them in the iCalObject */
-static void
-dialog_to_comp_object (TaskEditor *tedit)
-{
- TaskEditorPrivate *priv;
- CalComponent *comp;
- CalComponentDateTime date;
- time_t t;
- icalproperty_status status;
- TaskEditorPriority priority;
- int priority_value, percent;
- char *url, *cat;
- char *str;
-
- priv = tedit->priv;
- comp = priv->comp;
-
- /* Summary. */
-
- str = e_dialog_editable_get (priv->summary);
- if (!str || strlen (str) == 0)
- cal_component_set_summary (comp, NULL);
- else {
- CalComponentText text;
-
- text.value = str;
- text.altrep = NULL;
-
- cal_component_set_summary (comp, &text);
- }
-
- if (str)
- g_free (str);
-
- /* Description */
-
- str = e_dialog_editable_get (priv->description);
- if (!str || strlen (str) == 0)
- cal_component_set_description_list (comp, NULL);
- else {
- GSList l;
- CalComponentText text;
-
- text.value = str;
- text.altrep = NULL;
- l.data = &text;
- l.next = NULL;
-
- cal_component_set_description_list (comp, &l);
- }
-
- if (!str)
- g_free (str);
-
- /* Dates */
-
- date.value = g_new (struct icaltimetype, 1);
- date.tzid = NULL;
-
- /* Due Date. */
- t = e_date_edit_get_time (E_DATE_EDIT (priv->due_date));
- if (t != -1) {
- *date.value = icaltime_from_timet (t, FALSE);
- cal_component_set_due (comp, &date);
- } else {
- cal_component_set_due (comp, NULL);
- }
-
- /* Start Date. */
- t = e_date_edit_get_time (E_DATE_EDIT (priv->start_date));
- if (t != -1) {
- *date.value = icaltime_from_timet (t, FALSE);
- cal_component_set_dtstart (comp, &date);
- } else {
- cal_component_set_dtstart (comp, NULL);
- }
-
- /* Completed Date. */
- t = e_date_edit_get_time (E_DATE_EDIT (priv->completed_date));
- if (t != -1) {
- *date.value = icaltime_from_timet (t, FALSE);
- cal_component_set_completed (comp, date.value);
- } else {
- cal_component_set_completed (comp, NULL);
- }
-
- g_free (date.value);
-
- /* Percent Complete. */
- percent = e_dialog_spin_get_int (priv->percent_complete);
- cal_component_set_percent (comp, &percent);
-
- /* Status. */
- status = e_dialog_option_menu_get (priv->status, status_map);
- cal_component_set_status (comp, status);
-
- /* Priority. */
- priority = e_dialog_option_menu_get (priv->priority, priority_map);
- priority_value = priority_index_to_value (priority);
- cal_component_set_priority (comp, &priority_value);
-
- /* Classification. */
- cal_component_set_classification (comp, classification_get (priv->classification_public));
-
- /* Categories */
- cat = e_dialog_editable_get (priv->categories);
- cal_component_set_categories (comp, cat);
-
- if (cat)
- g_free (cat);
-
- /* URL. */
- url = e_dialog_editable_get (priv->url);
- cal_component_set_url (comp, url);
-
- if (url)
- g_free (url);
-
- cal_component_commit_sequence (comp);
-}
-
-static TaskEditorPriority
-priority_value_to_index (int priority_value)
-{
- TaskEditorPriority retval;
-
- if (priority_value == 0)
- retval = PRIORITY_UNDEFINED;
- else if (priority_value <= 4)
- retval = PRIORITY_HIGH;
- else if (priority_value == 5)
- retval = PRIORITY_NORMAL;
- else
- retval = PRIORITY_LOW;
-
- return retval;
-}
-
-
-static int
-priority_index_to_value (TaskEditorPriority priority)
-{
- int retval;
-
- switch (priority) {
- case PRIORITY_UNDEFINED:
- retval = 0;
- break;
- case PRIORITY_HIGH:
- retval = 3;
- break;
- case PRIORITY_NORMAL:
- retval = 5;
- break;
- case PRIORITY_LOW:
- retval = 7;
- break;
- default:
- retval = -1;
- g_assert_not_reached ();
- break;
- }
-
- return retval;
-}
-
-
-static void
-completed_changed (EDateEdit *dedit,
- TaskEditor *tedit)
-{
- TaskEditorPrivate *priv;
- time_t t;
-
- g_return_if_fail (IS_TASK_EDITOR (tedit));
-
- priv = tedit->priv;
-
- if (priv->ignore_callbacks)
- return;
-
- task_editor_set_changed (tedit, TRUE);
-
- priv->ignore_callbacks = TRUE;
- t = e_date_edit_get_time (E_DATE_EDIT (priv->completed_date));
- if (t == -1) {
- /* If the 'Completed Date' is set to 'None', we set the
- status to 'Not Started' and the percent-complete to 0.
- The task may actually be partially-complete, but we leave
- it to the user to set those fields. */
- e_dialog_option_menu_set (priv->status, ICAL_STATUS_NEEDSACTION,
- status_map);
- e_dialog_spin_set (priv->percent_complete, 0);
- } else {
- e_dialog_option_menu_set (priv->status, ICAL_STATUS_COMPLETED,
- status_map);
- e_dialog_spin_set (priv->percent_complete, 100);
- }
- priv->ignore_callbacks = FALSE;
-}
-
-
-static void
-status_changed (GtkMenu *menu,
- TaskEditor *tedit)
-{
- TaskEditorPrivate *priv;
- icalproperty_status status;
-
- g_return_if_fail (IS_TASK_EDITOR (tedit));
-
- priv = tedit->priv;
-
- if (priv->ignore_callbacks)
- return;
-
- task_editor_set_changed (tedit, TRUE);
-
- status = e_dialog_option_menu_get (priv->status, status_map);
- priv->ignore_callbacks = TRUE;
- if (status == ICAL_STATUS_NEEDSACTION) {
- e_dialog_spin_set (priv->percent_complete, 0);
- e_date_edit_set_time (E_DATE_EDIT (priv->completed_date), -1);
- } else if (status == ICAL_STATUS_COMPLETED) {
- e_dialog_spin_set (priv->percent_complete, 100);
- e_date_edit_set_time (E_DATE_EDIT (priv->completed_date),
- time (NULL));
- }
- priv->ignore_callbacks = FALSE;
-}
-
-
-static void
-percent_complete_changed (GtkAdjustment *adj,
- TaskEditor *tedit)
-{
- TaskEditorPrivate *priv;
- gint percent;
- icalproperty_status status;
- time_t date_completed;
-
- g_return_if_fail (IS_TASK_EDITOR (tedit));
-
- priv = tedit->priv;
-
- if (priv->ignore_callbacks)
- return;
-
- task_editor_set_changed (tedit, TRUE);
-
- percent = e_dialog_spin_get_int (priv->percent_complete);
- priv->ignore_callbacks = TRUE;
-
- if (percent == 100) {
- date_completed = time (NULL);
- status = ICAL_STATUS_COMPLETED;
- } else {
- /* FIXME: Set to 'None'. */
- date_completed = time (NULL);
-
- if (percent == 0)
- status = ICAL_STATUS_NEEDSACTION;
- else
- status = ICAL_STATUS_INPROCESS;
- }
-
- e_date_edit_set_time (E_DATE_EDIT (priv->completed_date),
- date_completed);
- e_dialog_option_menu_set (priv->status, status, status_map);
-
- priv->ignore_callbacks = FALSE;
-}
-
-/* Decode the radio button group for classifications */
-static CalComponentClassification
-classification_get (GtkWidget *widget)
-{
- return e_dialog_radio_get (widget, classification_map);
-}
-
-
-/* This is called when all fields except those handled above (status, percent
- complete & completed date) are changed. It just sets the "changed" flag. */
-static void
-field_changed (GtkWidget *widget,
- TaskEditor *tedit)
-{
- TaskEditorPrivate *priv;
-
- g_return_if_fail (IS_TASK_EDITOR (tedit));
-
- priv = tedit->priv;
-
- if (priv->ignore_callbacks)
- return;
-
- task_editor_set_changed (tedit, TRUE);
-}
-
-
-static void
-task_editor_set_changed (TaskEditor *tedit,
- gboolean changed)
-{
- TaskEditorPrivate *priv;
-
- priv = tedit->priv;
-
-#if 0
- g_print ("In task_editor_set_changed: %s\n",
- changed ? "TRUE" : "FALSE");
-#endif
-
- priv->changed = changed;
-
- if (priv->app)
- gnome_property_box_set_state (GNOME_PROPERTY_BOX (priv->app), changed);
-}
-
-
-/* This checks if the "changed" field is set, and if so it prompts to save
- the changes using a "Save/Discard/Cancel" modal dialog. It then saves the
- changes if requested. It returns TRUE if the dialog should now be closed. */
-static gboolean
-prompt_to_save_changes (TaskEditor *tedit)
-{
- TaskEditorPrivate *priv;
-
- priv = tedit->priv;
-
- if (!priv->changed)
- return TRUE;
-
- switch (save_component_dialog (GTK_WINDOW (priv->app))) {
- case 0: /* Save */
- /* FIXME: If an error occurs here, we should popup a dialog
- and then return FALSE. */
- save_todo_object (tedit);
- return TRUE;
- case 1: /* Discard */
- return TRUE;
- case 2: /* Cancel */
- default:
- return FALSE;
- break;
- }
-
-}
-
-static void
-categories_clicked(GtkWidget *button, TaskEditor *tedit)
-{
- char *categories;
- GnomeDialog *dialog;
- int result;
- GtkWidget *entry;
-
- entry = ((TaskEditorPrivate *)tedit->priv)->categories;
- categories = e_utf8_gtk_entry_get_text (GTK_ENTRY (entry));
-
- dialog = GNOME_DIALOG (e_categories_new (categories));
- result = gnome_dialog_run (dialog);
- g_free (categories);
-
- if (result == 0) {
- gtk_object_get (GTK_OBJECT (dialog),
- "categories", &categories,
- NULL);
- e_utf8_gtk_entry_set_text (GTK_ENTRY (entry), categories);
- g_free (categories);
- }
- gtk_object_destroy (GTK_OBJECT (dialog));
-}
diff --git a/calendar/gui/dialogs/task-editor.h b/calendar/gui/dialogs/task-editor.h
deleted file mode 100644
index 7327803a72..0000000000
--- a/calendar/gui/dialogs/task-editor.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 2000, Helix Code, Inc.
- * Copyright 2000, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-#ifndef _TASK_EDITOR_H_
-#define _TASK_EDITOR_H_
-
-#include <gtk/gtkobject.h>
-#include <libgnome/gnome-defs.h>
-#include <bonobo.h>
-#include <cal-client/cal-client.h>
-
-BEGIN_GNOME_DECLS
-
-
-#define TASK_EDITOR(obj) GTK_CHECK_CAST (obj, task_editor_get_type (), TaskEditor)
-#define TASK_EDITOR_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, task_editor_get_type (), TaskEditorClass)
-#define IS_TASK_EDITOR(obj) GTK_CHECK_TYPE (obj, task_editor_get_type ())
-
-
-typedef struct _TaskEditor TaskEditor;
-typedef struct _TaskEditorClass TaskEditorClass;
-
-struct _TaskEditor
-{
- GtkObject object;
-
- /* Private data */
- gpointer priv;
-};
-
-struct _TaskEditorClass
-{
- GtkObjectClass parent_class;
-};
-
-GtkType task_editor_get_type (void);
-TaskEditor* task_editor_construct (TaskEditor *tedit);
-TaskEditor* task_editor_new (void);
-void task_editor_set_cal_client (TaskEditor *tedit,
- CalClient *client);
-void task_editor_set_todo_object (TaskEditor *tedit,
- CalComponent *comp);
-void task_editor_focus (TaskEditor *tedit);
-
-
-
-END_GNOME_DECLS
-
-#endif /* _TASK_EDITOR_H_ */
diff --git a/calendar/gui/dialogs/task-page.glade b/calendar/gui/dialogs/task-page.glade
deleted file mode 100644
index e9f0d4700d..0000000000
--- a/calendar/gui/dialogs/task-page.glade
+++ /dev/null
@@ -1,547 +0,0 @@
-<?xml version="1.0"?>
-<GTK-Interface>
-
-<project>
- <name>task-page</name>
- <program_name>task-page</program_name>
- <directory></directory>
- <source_directory>src</source_directory>
- <pixmaps_directory>pixmaps</pixmaps_directory>
- <language>C</language>
- <gnome_support>True</gnome_support>
- <gettext_support>True</gettext_support>
-</project>
-
-<widget>
- <class>GtkWindow</class>
- <name>task-toplevel</name>
- <title>window1</title>
- <type>GTK_WINDOW_TOPLEVEL</type>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>True</allow_grow>
- <auto_shrink>False</auto_shrink>
-
- <widget>
- <class>GtkVBox</class>
- <name>task-page</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GtkTable</class>
- <name>table3</name>
- <rows>1</rows>
- <columns>2</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>4</row_spacing>
- <column_spacing>4</column_spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label3</name>
- <label>Su_mmary:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <default_focus_target>summary</default_focus_target>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>False</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>summary</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame2</name>
- <label>Date &amp; Time</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox4</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
-
- <widget>
- <class>GtkTable</class>
- <name>table1</name>
- <rows>2</rows>
- <columns>2</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>2</row_spacing>
- <column_spacing>4</column_spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label6</name>
- <label>Sta_rt Date:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label5</name>
- <label>_Due Date:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>Custom</class>
- <name>due-date</name>
- <creation_function>task_editor_create_date_edit</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Sun, 10 Sep 2000 17:32:18 GMT</last_modification_time>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>Custom</class>
- <name>start-date</name>
- <creation_function>task_editor_create_date_edit</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Sun, 10 Sep 2000 17:33:31 GMT</last_modification_time>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow1</name>
- <hscrollbar_policy>GTK_POLICY_NEVER</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkText</class>
- <name>description</name>
- <height>80</height>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text></text>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame23</name>
- <label>Progress</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox3</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GtkLabel</class>
- <name>label7</name>
- <label>_Status:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <default_focus_target>status</default_focus_target>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkOptionMenu</class>
- <name>status</name>
- <can_focus>True</can_focus>
- <items>Not Started
-In Progress
-Completed
-Cancelled
-</items>
- <initial_choice>0</initial_choice>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label8</name>
- <label>_Priority:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <default_focus_target>priority</default_focus_target>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkOptionMenu</class>
- <name>priority</name>
- <can_focus>True</can_focus>
- <items>High
-Normal
-Low
-Undefined
-</items>
- <initial_choice>0</initial_choice>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label9</name>
- <label>% Comp_lete:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <default_focus_target>percent-complete</default_focus_target>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkSpinButton</class>
- <name>percent-complete</name>
- <width>60</width>
- <can_focus>True</can_focus>
- <climb_rate>1</climb_rate>
- <digits>0</digits>
- <numeric>False</numeric>
- <update_policy>GTK_UPDATE_ALWAYS</update_policy>
- <snap>False</snap>
- <wrap>False</wrap>
- <value>0</value>
- <lower>0</lower>
- <upper>100</upper>
- <step>10</step>
- <page>10</page>
- <page_size>10</page_size>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame24</name>
- <label>Classification</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox6</name>
- <border_width>2</border_width>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>classification-public</name>
- <can_focus>True</can_focus>
- <label>Pu_blic</label>
- <active>True</active>
- <draw_indicator>True</draw_indicator>
- <group>classification_radio_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>classification-private</name>
- <can_focus>True</can_focus>
- <label>Pri_vate</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>classification_radio_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>classification-confidential</name>
- <can_focus>True</can_focus>
- <label>_Confidential</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>classification_radio_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox2</name>
- <homogeneous>False</homogeneous>
- <spacing>2</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>contacts-button</name>
- <can_focus>True</can_focus>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label16</name>
- <label>_Contacts...</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>4</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>contacts</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>categories-button</name>
- <can_focus>True</can_focus>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label17</name>
- <label>Ca_tegories...</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>4</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>categories</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
- </widget>
- </widget>
- </widget>
-</widget>
-
-</GTK-Interface>
diff --git a/calendar/gui/e-calendar-table.c b/calendar/gui/e-calendar-table.c
deleted file mode 100644
index 685a56d9f9..0000000000
--- a/calendar/gui/e-calendar-table.c
+++ /dev/null
@@ -1,970 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 2000, Helix Code, Inc.
- * Copyright 2000, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * ECalendarTable - displays the CalComponent objects in a table (an ETable).
- * Used for calendar events and tasks.
- */
-
-#include <config.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <gal/e-table/e-cell-checkbox.h>
-#include <gal/e-table/e-cell-toggle.h>
-#include <gal/e-table/e-cell-text.h>
-#include <gal/e-table/e-cell-combo.h>
-#include <widgets/misc/e-cell-date-edit.h>
-#include "e-calendar-table.h"
-#include "calendar-model.h"
-#include "dialogs/delete-comp.h"
-#include "dialogs/task-editor.h"
-
-/* Pixmaps. */
-#include "art/task.xpm"
-#include "art/task-recurring.xpm"
-#include "art/task-assigned.xpm"
-#include "art/task-assigned-to.xpm"
-
-#include "art/check-filled.xpm"
-
-
-static void e_calendar_table_class_init (ECalendarTableClass *class);
-static void e_calendar_table_init (ECalendarTable *cal_table);
-static void e_calendar_table_destroy (GtkObject *object);
-
-static void e_calendar_table_on_double_click (ETable *table,
- gint row,
- gint col,
- GdkEvent *event,
- ECalendarTable *cal_table);
-static gint e_calendar_table_on_right_click (ETable *table,
- gint row,
- gint col,
- GdkEventButton *event,
- ECalendarTable *cal_table);
-static void e_calendar_table_on_open_task (GtkWidget *menuitem,
- gpointer data);
-static gint e_calendar_table_on_key_press (ETable *table,
- gint row,
- gint col,
- GdkEventKey *event,
- ECalendarTable *cal_table);
-
-static void e_calendar_table_apply_filter (ECalendarTable *cal_table);
-static void e_calendar_table_on_model_changed (ETableModel *model,
- ECalendarTable *cal_table);
-static void e_calendar_table_on_rows_inserted (ETableModel *model,
- int row,
- int count,
- ECalendarTable *cal_table);
-static void e_calendar_table_on_rows_deleted (ETableModel *model,
- int row,
- int count,
- ECalendarTable *cal_table);
-
-
-/* The icons to represent the task. */
-#define E_CALENDAR_MODEL_NUM_ICONS 4
-static char** icon_xpm_data[E_CALENDAR_MODEL_NUM_ICONS] = {
- task_xpm, task_recurring_xpm, task_assigned_xpm, task_assigned_to_xpm
-};
-static GdkPixbuf* icon_pixbufs[E_CALENDAR_MODEL_NUM_ICONS] = { 0 };
-
-static GtkTableClass *parent_class;
-
-
-GtkType
-e_calendar_table_get_type (void)
-{
- static GtkType e_calendar_table_type = 0;
-
- if (!e_calendar_table_type){
- GtkTypeInfo e_calendar_table_info = {
- "ECalendarTable",
- sizeof (ECalendarTable),
- sizeof (ECalendarTableClass),
- (GtkClassInitFunc) e_calendar_table_class_init,
- (GtkObjectInitFunc) e_calendar_table_init,
- NULL, /* reserved 1 */
- NULL, /* reserved 2 */
- (GtkClassInitFunc) NULL
- };
-
- parent_class = gtk_type_class (GTK_TYPE_TABLE);
- e_calendar_table_type = gtk_type_unique (GTK_TYPE_TABLE,
- &e_calendar_table_info);
- }
-
- return e_calendar_table_type;
-}
-
-
-static void
-e_calendar_table_class_init (ECalendarTableClass *class)
-{
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
-
- object_class = (GtkObjectClass *) class;
- widget_class = (GtkWidgetClass *) class;
-
- /* Method override */
- object_class->destroy = e_calendar_table_destroy;
-
-#if 0
- widget_class->realize = e_calendar_table_realize;
- widget_class->unrealize = e_calendar_table_unrealize;
- widget_class->style_set = e_calendar_table_style_set;
- widget_class->size_allocate = e_calendar_table_size_allocate;
- widget_class->focus_in_event = e_calendar_table_focus_in;
- widget_class->focus_out_event = e_calendar_table_focus_out;
- widget_class->key_press_event = e_calendar_table_key_press;
-#endif
-}
-
-#ifdef JUST_FOR_TRANSLATORS
-static char *list [] = {
- N_("Categories"),
- N_("Classification"),
- N_("Completion Date"),
- N_("End Date"),
- N_("Start Date"),
- N_("Due Date"),
- N_("Geographical Position"),
- N_("Percent complete"),
- N_("Priority"),
- N_("Summary"),
- N_("Transparency"),
- N_("URL"),
- N_("Alarms"),
- N_("Click here to add a task")
-};
-#endif
-
-#define E_CALENDAR_TABLE_SPEC \
- "<ETableSpecification click-to-add=\"true\" " \
- " _click-to-add-message=\"Click here to add a task\" " \
- " draw-grid=\"true\">" \
- " <ETableColumn model_col= \"0\" _title=\"Categories\" " \
- " expansion=\"1.0\" minimum_width=\"10\" resizable=\"true\" " \
- " cell=\"calstring\" compare=\"string\"/>" \
- " <ETableColumn model_col= \"1\" _title=\"Classification\" " \
- " expansion=\"1.0\" minimum_width=\"10\" resizable=\"true\" " \
- " cell=\"classification\" compare=\"string\"/>" \
- " <ETableColumn model_col= \"2\" _title=\"Completion Date\" " \
- " expansion=\"2.0\" minimum_width=\"10\" resizable=\"true\" " \
- " cell=\"dateedit\" compare=\"string\"/>" \
- " <ETableColumn model_col= \"3\" _title=\"End Date\" " \
- " expansion=\"2.0\" minimum_width=\"10\" resizable=\"true\" " \
- " cell=\"dateedit\" compare=\"string\"/>" \
- " <ETableColumn model_col= \"4\" _title=\"Start Date\" " \
- " expansion=\"2.0\" minimum_width=\"10\" resizable=\"true\" " \
- " cell=\"dateedit\" compare=\"string\"/>" \
- " <ETableColumn model_col= \"5\" _title=\"Due Date\" " \
- " expansion=\"2.0\" minimum_width=\"10\" resizable=\"true\" " \
- " cell=\"dateedit\" compare=\"string\"/>" \
- " <ETableColumn model_col= \"6\" _title=\"Geographical Position\" " \
- " expansion=\"1.0\" minimum_width=\"10\" resizable=\"true\" " \
- " cell=\"calstring\" compare=\"string\"/>" \
- " <ETableColumn model_col= \"7\" _title=\"% Complete\" " \
- " expansion=\"1.0\" minimum_width=\"10\" resizable=\"true\" " \
- " cell=\"percent\" compare=\"string\"/>" \
- " <ETableColumn model_col= \"8\" _title=\"Priority\" " \
- " expansion=\"1.0\" minimum_width=\"10\" resizable=\"true\" " \
- " cell=\"priority\" compare=\"string\"/>" \
- " <ETableColumn model_col= \"9\" _title=\"Summary\" " \
- " expansion=\"3.0\" minimum_width=\"10\" resizable=\"true\" " \
- " cell=\"calstring\" compare=\"string\"/>" \
- " <ETableColumn model_col=\"10\" _title=\"Transparency\" " \
- " expansion=\"1.0\" minimum_width=\"10\" resizable=\"true\" " \
- " cell=\"transparency\" compare=\"string\"/>" \
- " <ETableColumn model_col=\"11\" _title=\"URL\" " \
- " expansion=\"2.0\" minimum_width=\"10\" resizable=\"true\" " \
- " cell=\"calstring\" compare=\"string\"/>" \
- " <ETableColumn model_col=\"12\" _title=\"Alarms\" " \
- " expansion=\"1.0\" minimum_width=\"10\" resizable=\"true\" " \
- " cell=\"calstring\" compare=\"string\"/>" \
- " <ETableColumn model_col=\"13\" pixbuf=\"icon\" _title=\"Type\" "\
- " expansion=\"1.0\" minimum_width=\"16\" resizable=\"false\" "\
- " cell=\"icon\" compare=\"integer\"/>" \
- " <ETableColumn model_col=\"14\" pixbuf=\"complete\" _title=\"Complete\" " \
- " expansion=\"1.0\" minimum_width=\"16\" resizable=\"false\" "\
- " cell=\"checkbox\" compare=\"integer\"/>" \
- " <ETableColumn model_col=\"18\" _title=\"Status\" " \
- " expansion=\"1.0\" minimum_width=\"10\" resizable=\"true\" " \
- " cell=\"calstatus\" compare=\"string\"/>" \
- " <ETableState>" \
- " <column source=\"13\"/>" \
- " <column source=\"14\"/>" \
- " <column source= \"9\"/>" \
- " <grouping></grouping>" \
- " </ETableState>" \
- "</ETableSpecification>"
-
-static void
-e_calendar_table_init (ECalendarTable *cal_table)
-{
- GtkWidget *table;
- ETable *e_table;
- ECell *cell, *popup_cell;
- ETableExtras *extras;
- gint i;
- GdkPixbuf *pixbuf;
- GdkColormap *colormap;
- gboolean success[E_CALENDAR_TABLE_COLOR_LAST];
- gint nfailed;
- GList *strings;
-
- /* Allocate the colors we need. */
-
- colormap = gtk_widget_get_colormap (GTK_WIDGET (cal_table));
-
- cal_table->colors[E_CALENDAR_TABLE_COLOR_OVERDUE].red = 65535;
- cal_table->colors[E_CALENDAR_TABLE_COLOR_OVERDUE].green = 0;
- cal_table->colors[E_CALENDAR_TABLE_COLOR_OVERDUE].blue = 0;
-
- nfailed = gdk_colormap_alloc_colors (colormap, cal_table->colors,
- E_CALENDAR_TABLE_COLOR_LAST,
- FALSE, TRUE, success);
- if (nfailed)
- g_warning ("Failed to allocate all colors");
-
- /* Create the model */
-
- cal_table->model = calendar_model_new ();
- cal_table->subset_model = e_table_subset_variable_new (E_TABLE_MODEL (cal_table->model));
-
- gtk_signal_connect (GTK_OBJECT (cal_table->model), "model_changed",
- GTK_SIGNAL_FUNC (e_calendar_table_on_model_changed),
- cal_table);
- gtk_signal_connect (GTK_OBJECT (cal_table->model), "model_rows_inserted",
- GTK_SIGNAL_FUNC (e_calendar_table_on_rows_inserted),
- cal_table);
- gtk_signal_connect (GTK_OBJECT (cal_table->model), "model_rows_deleted",
- GTK_SIGNAL_FUNC (e_calendar_table_on_rows_deleted),
- cal_table);
-
- /* Create the header columns */
-
- extras = e_table_extras_new();
-
- /*
- * Normal string fields.
- */
- cell = e_cell_text_new (NULL, GTK_JUSTIFY_LEFT);
- gtk_object_set (GTK_OBJECT (cell),
- "strikeout_column", CAL_COMPONENT_FIELD_COMPLETE,
- "bold_column", CAL_COMPONENT_FIELD_OVERDUE,
- "color_column", CAL_COMPONENT_FIELD_COLOR,
- NULL);
-
- e_table_extras_add_cell (extras, "calstring", cell);
-
-
- /*
- * Date fields.
- */
- cell = e_cell_text_new (NULL, GTK_JUSTIFY_LEFT);
- gtk_object_set (GTK_OBJECT (cell),
- "strikeout_column", CAL_COMPONENT_FIELD_COMPLETE,
- "bold_column", CAL_COMPONENT_FIELD_OVERDUE,
- "color_column", CAL_COMPONENT_FIELD_COLOR,
- NULL);
-
- popup_cell = e_cell_date_edit_new ();
- e_cell_popup_set_child (E_CELL_POPUP (popup_cell), cell);
- gtk_object_unref (GTK_OBJECT (cell));
- e_table_extras_add_cell (extras, "dateedit", popup_cell);
- cal_table->dates_cell = E_CELL_DATE_EDIT (popup_cell);
-
-
- /*
- * Combo fields.
- */
-
- /* Classification field. */
- cell = e_cell_text_new (NULL, GTK_JUSTIFY_LEFT);
- gtk_object_set (GTK_OBJECT (cell),
- "strikeout_column", CAL_COMPONENT_FIELD_COMPLETE,
- "bold_column", CAL_COMPONENT_FIELD_OVERDUE,
- "color_column", CAL_COMPONENT_FIELD_COLOR,
- "editable", FALSE,
- NULL);
-
- popup_cell = e_cell_combo_new ();
- e_cell_popup_set_child (E_CELL_POPUP (popup_cell), cell);
- gtk_object_unref (GTK_OBJECT (cell));
-
- strings = NULL;
- strings = g_list_append (strings, _("None"));
- strings = g_list_append (strings, _("Public"));
- strings = g_list_append (strings, _("Private"));
- strings = g_list_append (strings, _("Confidential"));
- e_cell_combo_set_popdown_strings (E_CELL_COMBO (popup_cell),
- strings);
-
- e_table_extras_add_cell (extras, "classification", popup_cell);
-
- /* Priority field. */
- cell = e_cell_text_new (NULL, GTK_JUSTIFY_LEFT);
- gtk_object_set (GTK_OBJECT (cell),
- "strikeout_column", CAL_COMPONENT_FIELD_COMPLETE,
- "bold_column", CAL_COMPONENT_FIELD_OVERDUE,
- "color_column", CAL_COMPONENT_FIELD_COLOR,
- "editable", FALSE,
- NULL);
-
- popup_cell = e_cell_combo_new ();
- e_cell_popup_set_child (E_CELL_POPUP (popup_cell), cell);
- gtk_object_unref (GTK_OBJECT (cell));
-
- strings = NULL;
- strings = g_list_append (strings, _("High"));
- strings = g_list_append (strings, _("Normal"));
- strings = g_list_append (strings, _("Low"));
- strings = g_list_append (strings, _("Undefined"));
- e_cell_combo_set_popdown_strings (E_CELL_COMBO (popup_cell),
- strings);
-
- e_table_extras_add_cell (extras, "priority", popup_cell);
-
- /* Percent field. */
- cell = e_cell_text_new (NULL, GTK_JUSTIFY_LEFT);
- gtk_object_set (GTK_OBJECT (cell),
- "strikeout_column", CAL_COMPONENT_FIELD_COMPLETE,
- "bold_column", CAL_COMPONENT_FIELD_OVERDUE,
- "color_column", CAL_COMPONENT_FIELD_COLOR,
- NULL);
-
- popup_cell = e_cell_combo_new ();
- e_cell_popup_set_child (E_CELL_POPUP (popup_cell), cell);
- gtk_object_unref (GTK_OBJECT (cell));
-
- strings = NULL;
- strings = g_list_append (strings, _("0%"));
- strings = g_list_append (strings, _("10%"));
- strings = g_list_append (strings, _("20%"));
- strings = g_list_append (strings, _("30%"));
- strings = g_list_append (strings, _("40%"));
- strings = g_list_append (strings, _("50%"));
- strings = g_list_append (strings, _("60%"));
- strings = g_list_append (strings, _("70%"));
- strings = g_list_append (strings, _("80%"));
- strings = g_list_append (strings, _("90%"));
- strings = g_list_append (strings, _("100%"));
- e_cell_combo_set_popdown_strings (E_CELL_COMBO (popup_cell),
- strings);
-
- e_table_extras_add_cell (extras, "percent", popup_cell);
-
- /* Transparency field. */
- cell = e_cell_text_new (NULL, GTK_JUSTIFY_LEFT);
- gtk_object_set (GTK_OBJECT (cell),
- "strikeout_column", CAL_COMPONENT_FIELD_COMPLETE,
- "bold_column", CAL_COMPONENT_FIELD_OVERDUE,
- "color_column", CAL_COMPONENT_FIELD_COLOR,
- "editable", FALSE,
- NULL);
-
- popup_cell = e_cell_combo_new ();
- e_cell_popup_set_child (E_CELL_POPUP (popup_cell), cell);
- gtk_object_unref (GTK_OBJECT (cell));
-
- strings = NULL;
- strings = g_list_append (strings, _("None"));
- strings = g_list_append (strings, _("Opaque"));
- strings = g_list_append (strings, _("Transparent"));
- e_cell_combo_set_popdown_strings (E_CELL_COMBO (popup_cell),
- strings);
-
- e_table_extras_add_cell (extras, "transparency", popup_cell);
-
- /* Status field. */
- cell = e_cell_text_new (NULL, GTK_JUSTIFY_LEFT);
- gtk_object_set (GTK_OBJECT (cell),
- "strikeout_column", CAL_COMPONENT_FIELD_COMPLETE,
- "bold_column", CAL_COMPONENT_FIELD_OVERDUE,
- "color_column", CAL_COMPONENT_FIELD_COLOR,
- "editable", FALSE,
- NULL);
-
- popup_cell = e_cell_combo_new ();
- e_cell_popup_set_child (E_CELL_POPUP (popup_cell), cell);
- gtk_object_unref (GTK_OBJECT (cell));
-
- strings = NULL;
- strings = g_list_append (strings, _("Not Started"));
- strings = g_list_append (strings, _("In Progress"));
- strings = g_list_append (strings, _("Completed"));
- strings = g_list_append (strings, _("Cancelled"));
- e_cell_combo_set_popdown_strings (E_CELL_COMBO (popup_cell),
- strings);
-
- e_table_extras_add_cell (extras, "calstatus", popup_cell);
-
- /* Create pixmaps */
-
- if (!icon_pixbufs[0])
- for (i = 0; i < E_CALENDAR_MODEL_NUM_ICONS; i++) {
- icon_pixbufs[i] = gdk_pixbuf_new_from_xpm_data (
- (const char **) icon_xpm_data[i]);
- }
-
- cell = e_cell_toggle_new (0, E_CALENDAR_MODEL_NUM_ICONS, icon_pixbufs);
- e_table_extras_add_cell(extras, "icon", cell);
- e_table_extras_add_pixbuf(extras, "icon", icon_pixbufs[0]);
-
- pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) check_filled_xpm);
- e_table_extras_add_pixbuf(extras, "complete", pixbuf);
- gdk_pixbuf_unref(pixbuf);
-
- /* Create the table */
-
- table = e_table_scrolled_new (cal_table->subset_model, extras,
- E_CALENDAR_TABLE_SPEC, NULL);
- gtk_object_unref (GTK_OBJECT (extras));
-
- cal_table->etable = table;
- gtk_table_attach (GTK_TABLE (cal_table), table, 0, 1, 0, 1,
- GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
- gtk_widget_show (table);
-
-
- e_table = e_table_scrolled_get_table (E_TABLE_SCROLLED (table));
- gtk_signal_connect (GTK_OBJECT (e_table), "double_click",
- GTK_SIGNAL_FUNC (e_calendar_table_on_double_click),
- cal_table);
- gtk_signal_connect (GTK_OBJECT (e_table), "right_click",
- GTK_SIGNAL_FUNC (e_calendar_table_on_right_click),
- cal_table);
- gtk_signal_connect (GTK_OBJECT (e_table), "key_press",
- GTK_SIGNAL_FUNC (e_calendar_table_on_key_press),
- cal_table);
-}
-
-
-/**
- * e_calendar_table_new:
- * @Returns: a new #ECalendarTable.
- *
- * Creates a new #ECalendarTable.
- **/
-GtkWidget *
-e_calendar_table_new (void)
-{
- GtkWidget *cal_table;
-
- cal_table = GTK_WIDGET (gtk_type_new (e_calendar_table_get_type ()));
-
- return cal_table;
-}
-
-
-/**
- * e_calendar_table_get_model:
- * @cal_table: A calendar table.
- *
- * Queries the calendar data model that a calendar table is using.
- *
- * Return value: A calendar model.
- **/
-CalendarModel *
-e_calendar_table_get_model (ECalendarTable *cal_table)
-{
- g_return_val_if_fail (cal_table != NULL, NULL);
- g_return_val_if_fail (E_IS_CALENDAR_TABLE (cal_table), NULL);
-
- return cal_table->model;
-}
-
-
-static void
-e_calendar_table_destroy (GtkObject *object)
-{
- ECalendarTable *cal_table;
-
- cal_table = E_CALENDAR_TABLE (object);
-
- gtk_object_unref (GTK_OBJECT (cal_table->model));
- cal_table->model = NULL;
-
- gtk_object_unref (GTK_OBJECT (cal_table->subset_model));
- cal_table->subset_model = NULL;
-
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
-}
-
-
-void
-e_calendar_table_set_cal_client (ECalendarTable *cal_table,
- CalClient *client)
-{
- calendar_model_set_cal_client (cal_table->model, client,
- CALOBJ_TYPE_TODO);
-}
-
-/**
- * e_calendar_table_get_table:
- * @cal_table: A calendar table.
- *
- * Queries the #ETable widget that the calendar table is using.
- *
- * Return value: The #ETable widget that the calendar table uses to display its
- * data.
- **/
-ETable *
-e_calendar_table_get_table (ECalendarTable *cal_table)
-{
- g_return_val_if_fail (cal_table != NULL, NULL);
- g_return_val_if_fail (E_IS_CALENDAR_TABLE (cal_table), NULL);
-
- return e_table_scrolled_get_table (E_TABLE_SCROLLED (cal_table->etable));
-}
-
-/* Used from e_table_selected_row_foreach(); puts the selected row number in an
- * int pointed to by the closure data.
- */
-static void
-get_selected_row_cb (int model_row, gpointer data)
-{
- int *row;
-
- row = data;
- *row = model_row;
-}
-
-/* Returns the component that is selected in the table; only works if there is
- * one and only one selected row.
- */
-static CalComponent *
-get_selected_comp (ECalendarTable *cal_table)
-{
- ETable *etable;
- int row;
-
- etable = e_table_scrolled_get_table (E_TABLE_SCROLLED (cal_table->etable));
- g_assert (e_table_selected_count (etable) == 1);
-
- row = -1;
- e_table_selected_row_foreach (etable,
- get_selected_row_cb,
- &row);
- g_assert (row != -1);
-
- return calendar_model_get_component (cal_table->model, row);
-}
-
-struct get_selected_uids_closure {
- ECalendarTable *cal_table;
- GSList *uids;
-};
-
-/* Used from e_table_selected_row_foreach(), builds a list of the selected UIDs */
-static void
-add_uid_cb (int model_row, gpointer data)
-{
- struct get_selected_uids_closure *closure;
- CalComponent *comp;
- const char *uid;
-
- closure = data;
-
- comp = calendar_model_get_component (closure->cal_table->model, model_row);
- cal_component_get_uid (comp, &uid);
-
- closure->uids = g_slist_prepend (closure->uids, (char *) uid);
-}
-
-static GSList *
-get_selected_uids (ECalendarTable *cal_table)
-{
- struct get_selected_uids_closure closure;
- ETable *etable;
-
- closure.cal_table = cal_table;
- closure.uids = NULL;
-
- etable = e_table_scrolled_get_table (E_TABLE_SCROLLED (cal_table->etable));
- e_table_selected_row_foreach (etable, add_uid_cb, &closure);
-
- return closure.uids;
-}
-
-/* Deletes all of the selected components in the table */
-static void
-delete_selected_components (ECalendarTable *cal_table)
-{
- CalClient *client;
- GSList *uids, *l;
-
- uids = get_selected_uids (cal_table);
-
- client = calendar_model_get_cal_client (cal_table->model);
-
- for (l = uids; l; l = l->next) {
- const char *uid;
-
- uid = l->data;
-
- /* We don't check the return value; FALSE can mean the object
- * was not in the server anyways.
- */
- cal_client_remove_object (client, uid);
- }
-
- g_slist_free (uids);
-}
-
-/**
- * e_calendar_table_delete_selected:
- * @cal_table: A calendar table.
- *
- * Deletes the selected components in the table; asks the user first.
- **/
-void
-e_calendar_table_delete_selected (ECalendarTable *cal_table)
-{
- ETable *etable;
- int n_selected;
- CalComponent *comp;
-
- g_return_if_fail (cal_table != NULL);
- g_return_if_fail (E_IS_CALENDAR_TABLE (cal_table));
-
- etable = e_table_scrolled_get_table (E_TABLE_SCROLLED (cal_table->etable));
-
- n_selected = e_table_selected_count (etable);
- g_assert (n_selected > 0);
-
- if (n_selected == 1)
- comp = get_selected_comp (cal_table);
- else
- comp = NULL;
-
- if (delete_component_dialog (comp, n_selected, CAL_COMPONENT_TODO, GTK_WIDGET (cal_table)))
- delete_selected_components (cal_table);
-}
-
-/* Opens a task in the task editor */
-static void
-open_task (ECalendarTable *cal_table, CalComponent *comp)
-{
- TaskEditor *tedit;
-
- tedit = task_editor_new ();
- task_editor_set_cal_client (tedit, calendar_model_get_cal_client (cal_table->model));
- task_editor_set_todo_object (tedit, comp);
- task_editor_focus (tedit);
-}
-
-/* Opens the task in the specified row */
-static void
-open_task_by_row (ECalendarTable *cal_table, int row)
-{
- CalComponent *comp;
-
- comp = calendar_model_get_component (cal_table->model, row);
- open_task (cal_table, comp);
-}
-
-static void
-e_calendar_table_on_double_click (ETable *table,
- gint row,
- gint col,
- GdkEvent *event,
- ECalendarTable *cal_table)
-{
- open_task_by_row (cal_table, row);
-}
-
-/* Used from e_table_selected_row_foreach() */
-static void
-mark_row_complete_cb (int model_row, gpointer data)
-{
- ECalendarTable *cal_table;
-
- cal_table = E_CALENDAR_TABLE (data);
- calendar_model_mark_task_complete (cal_table->model, model_row);
-}
-
-/* Callback used for the "mark tasks as complete" menu item */
-static void
-mark_as_complete_cb (GtkWidget *menuitem, gpointer data)
-{
- ECalendarTable *cal_table;
- ETable *etable;
-
- cal_table = E_CALENDAR_TABLE (data);
-
- etable = e_table_scrolled_get_table (E_TABLE_SCROLLED (cal_table->etable));
- e_table_selected_row_foreach (etable, mark_row_complete_cb, cal_table);
-}
-
-/* Callback for the "delete tasks" menu item */
-static void
-delete_cb (GtkWidget *menuitem, gpointer data)
-{
- ECalendarTable *cal_table;
-
- cal_table = E_CALENDAR_TABLE (data);
- e_calendar_table_delete_selected (cal_table);
-}
-
-static GnomeUIInfo tasks_popup_one[] = {
- GNOMEUIINFO_ITEM_NONE (N_("Edit this task"), NULL, e_calendar_table_on_open_task),
- GNOMEUIINFO_SEPARATOR,
- GNOMEUIINFO_ITEM_NONE (N_("Mark as complete"), NULL, mark_as_complete_cb),
- GNOMEUIINFO_ITEM_NONE (N_("Delete this task"), NULL, delete_cb),
- GNOMEUIINFO_END
-};
-
-static GnomeUIInfo tasks_popup_many[] = {
- GNOMEUIINFO_ITEM_NONE (N_("Mark tasks as complete"), NULL, mark_as_complete_cb),
- GNOMEUIINFO_ITEM_NONE (N_("Delete selected tasks"), NULL, delete_cb),
- GNOMEUIINFO_END
-};
-
-static gint
-e_calendar_table_on_right_click (ETable *table,
- gint row,
- gint col,
- GdkEventButton *event,
- ECalendarTable *cal_table)
-{
- GtkWidget *popup_menu;
- int n_selected;
-
- n_selected = e_table_selected_count (table);
- g_assert (n_selected > 0);
-
- if (n_selected == 1)
- popup_menu = gnome_popup_menu_new (tasks_popup_one);
- else
- popup_menu = gnome_popup_menu_new (tasks_popup_many);
-
- gnome_popup_menu_do_popup_modal (popup_menu, NULL, NULL, event, cal_table);
- gtk_widget_destroy (popup_menu);
-
- return TRUE;
-}
-
-
-static void
-e_calendar_table_on_open_task (GtkWidget *menuitem,
- gpointer data)
-{
- ECalendarTable *cal_table;
- CalComponent *comp;
-
- cal_table = E_CALENDAR_TABLE (data);
-
- comp = get_selected_comp (cal_table);
- open_task (cal_table, comp);
-}
-
-
-static gint
-e_calendar_table_on_key_press (ETable *table,
- gint row,
- gint col,
- GdkEventKey *event,
- ECalendarTable *cal_table)
-{
- if (event->keyval == GDK_Delete) {
- delete_cb (NULL, cal_table);
- return TRUE;
- }
-
- return FALSE;
-}
-
-/* Loads the state of the table (headers shown etc.) from the given file. */
-void
-e_calendar_table_load_state (ECalendarTable *cal_table,
- gchar *filename)
-{
- struct stat st;
-
- g_return_if_fail (E_IS_CALENDAR_TABLE (cal_table));
-
- if (stat (filename, &st) == 0 && st.st_size > 0
- && S_ISREG (st.st_mode)) {
- e_table_load_state (e_table_scrolled_get_table(E_TABLE_SCROLLED (cal_table->etable)), filename);
- }
-}
-
-
-/* Saves the state of the table (headers shown etc.) to the given file. */
-void
-e_calendar_table_save_state (ECalendarTable *cal_table,
- gchar *filename)
-{
- g_return_if_fail (E_IS_CALENDAR_TABLE (cal_table));
-
- e_table_save_state (e_table_scrolled_get_table(E_TABLE_SCROLLED (cal_table->etable)),
- filename);
-}
-
-
-void
-e_calendar_table_set_filter_func (ECalendarTable *cal_table,
- ECalendarTableFilterFunc filter_func,
- gpointer filter_data,
- GDestroyNotify filter_data_destroy)
-{
- g_return_if_fail (E_IS_CALENDAR_TABLE (cal_table));
-
- if (cal_table->filter_func == filter_func
- && cal_table->filter_data == filter_data
- && cal_table->filter_data_destroy == filter_data_destroy)
- return;
-
- if (cal_table->filter_data_destroy)
- (*cal_table->filter_data_destroy) (cal_table->filter_data);
-
- cal_table->filter_func = filter_func;
- cal_table->filter_data = filter_data;
- cal_table->filter_data_destroy = filter_data_destroy;
-
- e_calendar_table_apply_filter (cal_table);
-}
-
-
-static void
-e_calendar_table_apply_filter (ECalendarTable *cal_table)
-{
- ETableSubsetVariable *etssv;
- CalComponent *comp;
- gint rows, row;
-
- etssv = E_TABLE_SUBSET_VARIABLE (cal_table->subset_model);
-
- /* Make sure that any edits get saved first. */
- e_table_model_pre_change (cal_table->subset_model);
-
- /* FIXME: A hack to remove all the existing rows quickly. */
- E_TABLE_SUBSET (cal_table->subset_model)->n_map = 0;
-
- if (cal_table->filter_func == NULL) {
- e_table_subset_variable_add_all (etssv);
- } else {
- rows = e_table_model_row_count (E_TABLE_MODEL (cal_table->model));
- for (row = 0; row < rows; row++) {
- comp = calendar_model_get_component (cal_table->model,
- row);
-
- if ((*cal_table->filter_func) (cal_table, comp,
- cal_table->filter_data))
- e_table_subset_variable_add (etssv, row);
- }
- }
-
- e_table_model_changed (cal_table->subset_model);
-}
-
-
-gboolean
-e_calendar_table_filter_by_category (ECalendarTable *cal_table,
- CalComponent *comp,
- gpointer filter_data)
-{
- GSList *categories_list, *elem;
- gboolean retval = FALSE;
-
- cal_component_get_categories_list (comp, &categories_list);
-
- for (elem = categories_list; elem; elem = elem->next) {
- if (retval == FALSE
- && !strcmp ((char*) elem->data, (char*) filter_data))
- retval = TRUE;
- g_free (elem->data);
- }
-
- g_slist_free (categories_list);
-
- return retval;
-}
-
-
-static void
-e_calendar_table_on_model_changed (ETableModel *model,
- ECalendarTable *cal_table)
-{
- e_calendar_table_apply_filter (cal_table);
-}
-
-
-static void
-e_calendar_table_on_rows_inserted (ETableModel *model,
- int row,
- int count,
- ECalendarTable *cal_table)
-{
- int i;
-
- for (i = 0; i < count; i++) {
- gboolean add_row;
-
- add_row = FALSE;
-
- if (cal_table->filter_func) {
- CalComponent *comp;
-
- comp = calendar_model_get_component (cal_table->model, row + i);
- g_assert (comp != NULL);
-
- add_row = (* cal_table->filter_func) (cal_table, comp,
- cal_table->filter_data);
- } else
- add_row = TRUE;
-
- if (add_row) {
- ETableSubsetVariable *etssv;
-
- etssv = E_TABLE_SUBSET_VARIABLE (cal_table->subset_model);
-
- e_table_subset_variable_increment (etssv, row, 1);
- e_table_subset_variable_add (etssv, row);
- }
- }
-}
-
-
-static void
-e_calendar_table_on_rows_deleted (ETableModel *model,
- int row,
- int count,
- ECalendarTable *cal_table)
-{
- /* We just reapply the filter since we aren't too bothered about
- being efficient. It doesn't happen often. */
- e_calendar_table_apply_filter (cal_table);
-}
-
-const gchar *
-e_calendar_table_get_spec (void)
-{
- return E_CALENDAR_TABLE_SPEC;
-}
diff --git a/calendar/gui/e-calendar-table.h b/calendar/gui/e-calendar-table.h
deleted file mode 100644
index 914a0bcd87..0000000000
--- a/calendar/gui/e-calendar-table.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 2000, Helix Code, Inc.
- * Copyright 2000, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-#ifndef _E_CALENDAR_TABLE_H_
-#define _E_CALENDAR_TABLE_H_
-
-#include <gtk/gtktable.h>
-#include <gal/e-table/e-table-scrolled.h>
-#include <widgets/misc/e-cell-date-edit.h>
-#include "calendar-model.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/*
- * ECalendarTable - displays the iCalendar objects in a table (an ETable).
- * Used for calendar events and tasks.
- */
-
-/* These index our colors array. */
-typedef enum
-{
- E_CALENDAR_TABLE_COLOR_OVERDUE,
-
- E_CALENDAR_TABLE_COLOR_LAST
-} ECalendarTableColors;
-
-
-#define E_CALENDAR_TABLE(obj) GTK_CHECK_CAST (obj, e_calendar_table_get_type (), ECalendarTable)
-#define E_CALENDAR_TABLE_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, e_calendar_table_get_type (), ECalendarTableClass)
-#define E_IS_CALENDAR_TABLE(obj) GTK_CHECK_TYPE (obj, e_calendar_table_get_type ())
-
-
-typedef struct _ECalendarTable ECalendarTable;
-typedef struct _ECalendarTableClass ECalendarTableClass;
-
-
-typedef gboolean (*ECalendarTableFilterFunc) (ECalendarTable *cal_table,
- CalComponent *comp,
- gpointer data);
-
-struct _ECalendarTable
-{
- GtkTable table;
-
- /* This is the underlying model which contains all the tasks/events. */
- CalendarModel *model;
-
- /* This is the model that we use when filtering the tasks/events. */
- ETableModel *subset_model;
-
- GtkWidget *etable;
-
- /* Colors for drawing. */
- GdkColor colors[E_CALENDAR_TABLE_COLOR_LAST];
-
- /* Data for filtering the Tasks. */
- ECalendarTableFilterFunc filter_func;
- gpointer filter_data;
- GDestroyNotify filter_data_destroy;
-
- /* The ECell used to view & edit dates. */
- ECellDateEdit *dates_cell;
-};
-
-struct _ECalendarTableClass
-{
- GtkTableClass parent_class;
-};
-
-
-GtkType e_calendar_table_get_type (void);
-GtkWidget* e_calendar_table_new (void);
-
-CalendarModel *e_calendar_table_get_model (ECalendarTable *cal_table);
-
-void e_calendar_table_set_cal_client (ECalendarTable *cal_table,
- CalClient *client);
-
-ETable *e_calendar_table_get_table (ECalendarTable *cal_table);
-
-void e_calendar_table_delete_selected (ECalendarTable *cal_table);
-
-/* These load and save the state of the table (headers shown etc.) to/from
- the given file. */
-void e_calendar_table_load_state (ECalendarTable *cal_table,
- gchar *filename);
-void e_calendar_table_save_state (ECalendarTable *cal_table,
- gchar *filename);
-
-void e_calendar_table_set_filter_func (ECalendarTable *cal_table,
- ECalendarTableFilterFunc filter_func,
- gpointer filter_data,
- GDestroyNotify filter_data_destroy);
-gboolean e_calendar_table_filter_by_category (ECalendarTable *cal_table,
- CalComponent *comp,
- gpointer filter_data);
-
-const gchar *e_calendar_table_get_spec (void);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_CALENDAR_TABLE_H_ */
diff --git a/calendar/gui/e-day-view-main-item.c b/calendar/gui/e-day-view-main-item.c
deleted file mode 100644
index 3cab1f1a05..0000000000
--- a/calendar/gui/e-day-view-main-item.c
+++ /dev/null
@@ -1,660 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 1999, Helix Code, Inc.
- * Copyright 1999, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * EDayViewMainItem - canvas item which displays most of the appointment
- * data in the main Day/Work Week display.
- */
-
-#include <config.h>
-#include "e-day-view-main-item.h"
-
-static void e_day_view_main_item_class_init (EDayViewMainItemClass *class);
-static void e_day_view_main_item_init (EDayViewMainItem *dvtitem);
-
-static void e_day_view_main_item_set_arg (GtkObject *o, GtkArg *arg,
- guint arg_id);
-static void e_day_view_main_item_update (GnomeCanvasItem *item,
- double *affine,
- ArtSVP *clip_path, int flags);
-static void e_day_view_main_item_draw (GnomeCanvasItem *item,
- GdkDrawable *drawable,
- int x, int y,
- int width, int height);
-static double e_day_view_main_item_point (GnomeCanvasItem *item,
- double x, double y,
- int cx, int cy,
- GnomeCanvasItem **actual_item);
-static gint e_day_view_main_item_event (GnomeCanvasItem *item,
- GdkEvent *event);
-
-static void e_day_view_main_item_draw_long_events_in_vbars (EDayViewMainItem *dvmitem,
- GdkDrawable *drawable,
- int x,
- int y,
- int width,
- int height);
-static void e_day_view_main_item_draw_events_in_vbars (EDayViewMainItem *dvmitem,
- GdkDrawable *drawable,
- int x, int y,
- int width, int height,
- gint day);
-static void e_day_view_main_item_draw_day_events (EDayViewMainItem *dvmitem,
- GdkDrawable *drawable,
- int x, int y,
- int width, int height,
- gint day);
-static void e_day_view_main_item_draw_day_event (EDayViewMainItem *dvmitem,
- GdkDrawable *drawable,
- int x, int y,
- int width, int height,
- gint day, gint event_num);
-
-static GnomeCanvasItemClass *parent_class;
-
-/* The arguments we take */
-enum {
- ARG_0,
- ARG_DAY_VIEW
-};
-
-
-GtkType
-e_day_view_main_item_get_type (void)
-{
- static GtkType e_day_view_main_item_type = 0;
-
- if (!e_day_view_main_item_type) {
- GtkTypeInfo e_day_view_main_item_info = {
- "EDayViewMainItem",
- sizeof (EDayViewMainItem),
- sizeof (EDayViewMainItemClass),
- (GtkClassInitFunc) e_day_view_main_item_class_init,
- (GtkObjectInitFunc) e_day_view_main_item_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- e_day_view_main_item_type = gtk_type_unique (gnome_canvas_item_get_type (), &e_day_view_main_item_info);
- }
-
- return e_day_view_main_item_type;
-}
-
-
-static void
-e_day_view_main_item_class_init (EDayViewMainItemClass *class)
-{
- GtkObjectClass *object_class;
- GnomeCanvasItemClass *item_class;
-
- parent_class = gtk_type_class (gnome_canvas_item_get_type());
-
- object_class = (GtkObjectClass *) class;
- item_class = (GnomeCanvasItemClass *) class;
-
- gtk_object_add_arg_type ("EDayViewMainItem::day_view",
- GTK_TYPE_POINTER, GTK_ARG_WRITABLE,
- ARG_DAY_VIEW);
-
- object_class->set_arg = e_day_view_main_item_set_arg;
-
- /* GnomeCanvasItem method overrides */
- item_class->update = e_day_view_main_item_update;
- item_class->draw = e_day_view_main_item_draw;
- item_class->point = e_day_view_main_item_point;
- item_class->event = e_day_view_main_item_event;
-}
-
-
-static void
-e_day_view_main_item_init (EDayViewMainItem *dvtitem)
-{
- dvtitem->day_view = NULL;
-}
-
-
-static void
-e_day_view_main_item_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- GnomeCanvasItem *item;
- EDayViewMainItem *dvmitem;
-
- item = GNOME_CANVAS_ITEM (o);
- dvmitem = E_DAY_VIEW_MAIN_ITEM (o);
-
- switch (arg_id){
- case ARG_DAY_VIEW:
- dvmitem->day_view = GTK_VALUE_POINTER (*arg);
- break;
- }
-}
-
-
-static void
-e_day_view_main_item_update (GnomeCanvasItem *item,
- double *affine,
- ArtSVP *clip_path,
- int flags)
-{
- if (GNOME_CANVAS_ITEM_CLASS (parent_class)->update)
- (* GNOME_CANVAS_ITEM_CLASS (parent_class)->update) (item, affine, clip_path, flags);
-
- /* The item covers the entire canvas area. */
- item->x1 = 0;
- item->y1 = 0;
- item->x2 = INT_MAX;
- item->y2 = INT_MAX;
-}
-
-
-/*
- * DRAWING ROUTINES - functions to paint the canvas item.
- */
-
-static void
-e_day_view_main_item_draw (GnomeCanvasItem *canvas_item, GdkDrawable *drawable,
- int x, int y, int width, int height)
-{
- EDayViewMainItem *dvmitem;
- EDayView *day_view;
- GtkStyle *style;
- GdkGC *gc;
- GdkFont *font;
- gint row, row_y, grid_x1, grid_x2;
- gint day, grid_y1, grid_y2;
- gint work_day_start_row, work_day_end_row;
- gint work_day_start_y, work_day_end_y;
- gint day_x, day_w, work_day;
- gint start_row, end_row, rect_x, rect_y, rect_width, rect_height;
- struct tm *day_start;
-
-#if 0
- g_print ("In e_day_view_main_item_draw %i,%i %ix%i\n",
- x, y, width, height);
-#endif
- dvmitem = E_DAY_VIEW_MAIN_ITEM (canvas_item);
- day_view = dvmitem->day_view;
- g_return_if_fail (day_view != NULL);
-
- style = GTK_WIDGET (day_view)->style;
- font = style->font;
-
- /* Paint the background colors. */
- gc = day_view->main_gc;
- work_day_start_row = e_day_view_convert_time_to_row (day_view, day_view->work_day_start_hour, day_view->work_day_start_minute);
- work_day_start_y = work_day_start_row * day_view->row_height - y;
- work_day_end_row = e_day_view_convert_time_to_row (day_view, day_view->work_day_end_hour, day_view->work_day_end_minute);
- work_day_end_y = work_day_end_row * day_view->row_height - y;
-
- for (day = 0; day < day_view->days_shown; day++) {
- day_start = localtime (&day_view->day_starts[day]);
-
- work_day = day_view->working_days & (1 << day_start->tm_wday);
-
- day_x = day_view->day_offsets[day] - x;
- day_w = day_view->day_widths[day];
-
- if (work_day) {
- gdk_gc_set_foreground (gc, &day_view->colors[E_DAY_VIEW_COLOR_BG_NOT_WORKING]);
- gdk_draw_rectangle (drawable, gc, TRUE,
- day_x, 0 - y,
- day_w, work_day_start_y - (0 - y));
- gdk_gc_set_foreground (gc, &day_view->colors[E_DAY_VIEW_COLOR_BG_WORKING]);
- gdk_draw_rectangle (drawable, gc, TRUE,
- day_x, work_day_start_y,
- day_w, work_day_end_y - work_day_start_y);
- gdk_gc_set_foreground (gc, &day_view->colors[E_DAY_VIEW_COLOR_BG_NOT_WORKING]);
- gdk_draw_rectangle (drawable, gc, TRUE,
- day_x, work_day_end_y,
- day_w, height - work_day_end_y);
- } else {
- gdk_gc_set_foreground (gc, &day_view->colors[E_DAY_VIEW_COLOR_BG_NOT_WORKING]);
- gdk_draw_rectangle (drawable, gc, TRUE,
- day_x, 0,
- day_w, height);
- }
- }
-
- /* Paint the selection background. */
- if (GTK_WIDGET_HAS_FOCUS (day_view)
- && day_view->selection_start_day != -1
- && !day_view->selection_in_top_canvas) {
- for (day = day_view->selection_start_day;
- day <= day_view->selection_end_day;
- day++) {
- if (day == day_view->selection_start_day
- && day_view->selection_start_row != -1)
- start_row = day_view->selection_start_row;
- else
- start_row = 0;
- if (day == day_view->selection_end_day
- && day_view->selection_end_row != -1)
- end_row = day_view->selection_end_row;
- else
- end_row = day_view->rows - 1;
-
- rect_x = day_view->day_offsets[day] - x;
- rect_width = day_view->day_widths[day];
- rect_y = start_row * day_view->row_height - y;
- rect_height = (end_row - start_row + 1) * day_view->row_height;
-
- gdk_gc_set_foreground (gc, &day_view->colors[E_DAY_VIEW_COLOR_BG_SELECTED]);
- gdk_draw_rectangle (drawable, gc, TRUE,
- rect_x, rect_y,
- rect_width, rect_height);
- }
- }
-
- /* Drawing the horizontal grid lines. */
- grid_x1 = day_view->day_offsets[0] - x;
- grid_x2 = day_view->day_offsets[day_view->days_shown] - x;
-
- gdk_gc_set_foreground (gc, &day_view->colors[E_DAY_VIEW_COLOR_BG_GRID]);
- for (row = 0, row_y = 0 - y;
- row < day_view->rows && row_y < height;
- row++, row_y += day_view->row_height) {
- if (row_y >= 0 && row_y < height)
- gdk_draw_line (drawable, gc,
- grid_x1, row_y, grid_x2, row_y);
- }
-
- /* Draw the vertical bars down the left of each column. */
- grid_y1 = 0;
- grid_y2 = height;
- for (day = 0; day < day_view->days_shown; day++) {
- grid_x1 = day_view->day_offsets[day] - x;
-
- /* Skip if it isn't visible. */
- if (grid_x1 >= width || grid_x1 + E_DAY_VIEW_BAR_WIDTH <= 0)
- continue;
-
- gdk_draw_line (drawable, style->black_gc,
- grid_x1, grid_y1,
- grid_x1, grid_y2);
- gdk_draw_line (drawable, style->black_gc,
- grid_x1 + E_DAY_VIEW_BAR_WIDTH - 1, grid_y1,
- grid_x1 + E_DAY_VIEW_BAR_WIDTH - 1, grid_y2);
- gdk_draw_rectangle (drawable, style->white_gc, TRUE,
- grid_x1 + 1, grid_y1,
- E_DAY_VIEW_BAR_WIDTH - 2, grid_y2 - grid_y1);
-
- /* Fill in the bars when the user is busy. */
- e_day_view_main_item_draw_events_in_vbars (dvmitem, drawable,
- x, y,
- width, height,
- day);
- }
-
- /* Fill in the vertical bars corresponding to the busy times from the
- long events. */
- e_day_view_main_item_draw_long_events_in_vbars (dvmitem, drawable,
- x, y, width, height);
-
- /* Draw the event borders and backgrounds, and the vertical bars
- down the left edges. */
- for (day = 0; day < day_view->days_shown; day++) {
- e_day_view_main_item_draw_day_events (dvmitem, drawable,
- x, y, width, height,
- day);
- }
-}
-
-
-static void
-e_day_view_main_item_draw_events_in_vbars (EDayViewMainItem *dvmitem,
- GdkDrawable *drawable,
- int x, int y,
- int width, int height,
- gint day)
-{
- EDayView *day_view;
- EDayViewEvent *event;
- GdkGC *gc;
- gint grid_x, event_num, bar_y, bar_h;
-
- day_view = dvmitem->day_view;
-
- gc = day_view->main_gc;
- gdk_gc_set_foreground (gc, &day_view->colors[E_DAY_VIEW_COLOR_EVENT_VBAR]);
-
- grid_x = day_view->day_offsets[day] + 1 - x;
-
- /* Draw the busy times corresponding to the events in the day. */
- for (event_num = 0; event_num < day_view->events[day]->len;
- event_num++) {
- event = &g_array_index (day_view->events[day], EDayViewEvent,
- event_num);
-
- /* We can skip the events in the first column since they will
- draw over this anyway. */
- if (event->num_columns > 0 && event->start_row_or_col == 0)
- continue;
-
- bar_y = event->start_minute * day_view->row_height / day_view->mins_per_row;
- bar_h = event->end_minute * day_view->row_height / day_view->mins_per_row - bar_y;
- bar_y -= y;
-
- /* Skip it if it isn't visible. */
- if (bar_y >= height || bar_y + bar_h <= 0)
- continue;
-
- gdk_draw_rectangle (drawable, gc, TRUE,
- grid_x, bar_y,
- E_DAY_VIEW_BAR_WIDTH - 2, bar_h);
- }
-}
-
-
-static void
-e_day_view_main_item_draw_long_events_in_vbars (EDayViewMainItem *dvmitem,
- GdkDrawable *drawable,
- int x, int y,
- int width, int height)
-{
- EDayView *day_view;
- EDayViewEvent *event;
- gint event_num, start_day, end_day, day, bar_y1, bar_y2, grid_x;
- GdkGC *gc;
-
- day_view = dvmitem->day_view;
-
- gc = day_view->main_gc;
- gdk_gc_set_foreground (gc, &day_view->colors[E_DAY_VIEW_COLOR_EVENT_VBAR]);
-
- for (event_num = 0; event_num < day_view->long_events->len;
- event_num++) {
- event = &g_array_index (day_view->long_events, EDayViewEvent,
- event_num);
-
- if (!e_day_view_find_long_event_days (day_view, event,
- &start_day, &end_day))
- continue;
-
- for (day = start_day; day <= end_day; day++) {
- grid_x = day_view->day_offsets[day] + 1 - x;
-
- /* Skip if it isn't visible. */
- if (grid_x >= width
- || grid_x + E_DAY_VIEW_BAR_WIDTH <= 0)
- continue;
-
- if (event->start <= day_view->day_starts[day]) {
- bar_y1 = 0;
- } else {
- bar_y1 = event->start_minute * day_view->row_height / day_view->mins_per_row - y;
- }
-
- if (event->end >= day_view->day_starts[day + 1]) {
- bar_y2 = height;
- } else {
- bar_y2 = event->end_minute * day_view->row_height / day_view->mins_per_row - y;
- }
-
- if (bar_y1 < height && bar_y2 > 0 && bar_y2 > bar_y1) {
- gdk_draw_rectangle (drawable, gc, TRUE,
- grid_x, bar_y1,
- E_DAY_VIEW_BAR_WIDTH - 2,
- bar_y2 - bar_y1);
- }
- }
-
-
- }
-}
-
-
-static void
-e_day_view_main_item_draw_day_events (EDayViewMainItem *dvmitem,
- GdkDrawable *drawable,
- int x, int y, int width, int height,
- gint day)
-{
- EDayView *day_view;
- gint event_num;
-
- day_view = dvmitem->day_view;
-
- for (event_num = 0; event_num < day_view->events[day]->len;
- event_num++) {
- e_day_view_main_item_draw_day_event (dvmitem, drawable,
- x, y, width, height,
- day, event_num);
- }
-}
-
-
-static void
-e_day_view_main_item_draw_day_event (EDayViewMainItem *dvmitem,
- GdkDrawable *drawable,
- int x, int y, int width, int height,
- gint day, gint event_num)
-{
- EDayView *day_view;
- EDayViewEvent *event;
- gint item_x, item_y, item_w, item_h, bar_y1, bar_y2;
- GtkStyle *style;
- GdkGC *gc;
- CalComponent *comp;
- gint num_icons, icon_x, icon_y, icon_x_inc, icon_y_inc;
- gint max_icon_w, max_icon_h;
- gboolean draw_reminder_icon, draw_recurrence_icon;
-
- day_view = dvmitem->day_view;
-
- /* If the event is currently being dragged, don't draw it. It will
- be drawn in the special drag items. */
- if (day_view->drag_event_day == day
- && day_view->drag_event_num == event_num)
- return;
-
- style = GTK_WIDGET (day_view)->style;
-
- gc = day_view->main_gc;
- gdk_gc_set_foreground (gc, &day_view->colors[E_DAY_VIEW_COLOR_EVENT_VBAR]);
-
- /* Get the position of the event. If it is not shown skip it.*/
- if (!e_day_view_get_event_position (day_view, day, event_num,
- &item_x, &item_y,
- &item_w, &item_h))
- return;
-
- item_x -= x;
- item_y -= y;
-
- event = &g_array_index (day_view->events[day], EDayViewEvent,
- event_num);
-
- /* Fill in the white background. Note that for events in the first
- column of the day, we might not want to paint over the vertical bar,
- since that is used for multiple events. But then you can't see
- where the event in the first column finishes. */
-#if 0
- if (event->start_row_or_col == 0)
- gdk_draw_rectangle (drawable, style->white_gc, TRUE,
- item_x + E_DAY_VIEW_BAR_WIDTH, item_y + 1,
- MAX (item_w - E_DAY_VIEW_BAR_WIDTH - 1, 0),
- item_h - 2);
- else
-#endif
- gdk_draw_rectangle (drawable, style->white_gc, TRUE,
- item_x + 1, item_y + 1,
- MAX (item_w - 2, 0), item_h - 2);
-
- /* Draw the right edge of the vertical bar. */
- gdk_draw_line (drawable, style->black_gc,
- item_x + E_DAY_VIEW_BAR_WIDTH - 1,
- item_y + 1,
- item_x + E_DAY_VIEW_BAR_WIDTH - 1,
- item_y + item_h - 2);
-
- /* Draw the vertical colored bar showing when the appointment
- begins & ends. */
- bar_y1 = event->start_minute * day_view->row_height / day_view->mins_per_row - y;
- bar_y2 = event->end_minute * day_view->row_height / day_view->mins_per_row - y;
-
- /* When an item is being resized, we fill the bar up to the new row. */
- if (day_view->resize_drag_pos != E_DAY_VIEW_POS_NONE
- && day_view->resize_event_day == day
- && day_view->resize_event_num == event_num) {
- if (day_view->resize_drag_pos == E_DAY_VIEW_POS_TOP_EDGE)
- bar_y1 = item_y + 1;
- else if (day_view->resize_drag_pos == E_DAY_VIEW_POS_BOTTOM_EDGE)
- bar_y2 = item_y + item_h - 1;
- }
-
- gdk_draw_rectangle (drawable, gc, TRUE,
- item_x + 1, bar_y1,
- E_DAY_VIEW_BAR_WIDTH - 2, bar_y2 - bar_y1);
-
- /* Draw the box around the entire event. Do this after drawing
- the colored bar so we don't have to worry about being 1
- pixel out. */
- gdk_draw_rectangle (drawable, style->black_gc, FALSE,
- item_x, item_y, MAX (item_w - 1, 0), item_h - 1);
-
-#if 0
- /* Draw the horizontal bars above and beneath the event if it
- is currently being edited. */
- if (day_view->editing_event_day == day
- && day_view->editing_event_num == event_num) {
- gdk_draw_rectangle (drawable, gc, TRUE,
- item_x,
- item_y - E_DAY_VIEW_BAR_HEIGHT,
- item_w,
- E_DAY_VIEW_BAR_HEIGHT);
- gdk_draw_rectangle (drawable, gc, TRUE,
- item_x, item_y + item_h,
- item_w, E_DAY_VIEW_BAR_HEIGHT);
- }
-#endif
-
- /* Draw the reminder & recurrence icons, if needed. */
- num_icons = 0;
- draw_reminder_icon = FALSE;
- draw_recurrence_icon = FALSE;
- icon_x = item_x + E_DAY_VIEW_BAR_WIDTH + E_DAY_VIEW_ICON_X_PAD;
- icon_y = item_y + E_DAY_VIEW_EVENT_BORDER_HEIGHT
- + E_DAY_VIEW_ICON_Y_PAD;
- comp = event->comp;
-
- if (cal_component_has_alarms (comp)) {
- draw_reminder_icon = TRUE;
- num_icons++;
- }
-
- if (cal_component_has_recurrences (comp)) {
- draw_recurrence_icon = TRUE;
- num_icons++;
- }
-
- if (num_icons != 0) {
- if (item_h >= (E_DAY_VIEW_ICON_HEIGHT + E_DAY_VIEW_ICON_Y_PAD)
- * num_icons) {
- icon_x_inc = 0;
- icon_y_inc = E_DAY_VIEW_ICON_HEIGHT
- + E_DAY_VIEW_ICON_Y_PAD;
- } else {
- icon_x_inc = E_DAY_VIEW_ICON_WIDTH
- + E_DAY_VIEW_ICON_X_PAD;
- icon_y_inc = 0;
- }
-
- if (draw_reminder_icon) {
- max_icon_w = item_x + item_w - icon_x
- - E_DAY_VIEW_EVENT_BORDER_WIDTH;
- max_icon_h = item_y + item_h - icon_y
- - E_DAY_VIEW_EVENT_BORDER_HEIGHT;
-
- gdk_gc_set_clip_origin (gc, icon_x, icon_y);
- gdk_gc_set_clip_mask (gc, day_view->reminder_mask);
- gdk_draw_pixmap (drawable, gc,
- day_view->reminder_icon,
- 0, 0, icon_x, icon_y,
- MIN (E_DAY_VIEW_ICON_WIDTH,
- max_icon_w),
- MIN (E_DAY_VIEW_ICON_HEIGHT,
- max_icon_h));
- icon_x += icon_x_inc;
- icon_y += icon_y_inc;
- }
-
- if (draw_recurrence_icon) {
- max_icon_w = item_x + item_w - icon_x
- - E_DAY_VIEW_EVENT_BORDER_WIDTH;
- max_icon_h = item_y + item_h - icon_y
- - E_DAY_VIEW_EVENT_BORDER_HEIGHT;
-
- gdk_gc_set_clip_origin (gc, icon_x, icon_y);
- gdk_gc_set_clip_mask (gc, day_view->recurrence_mask);
- gdk_draw_pixmap (drawable, gc,
- day_view->recurrence_icon,
- 0, 0, icon_x, icon_y,
- MIN (E_DAY_VIEW_ICON_WIDTH,
- max_icon_w),
- MIN (E_DAY_VIEW_ICON_HEIGHT,
- max_icon_h));
- }
- gdk_gc_set_clip_mask (gc, NULL);
- }
-}
-
-
-/* This is supposed to return the nearest item to the point and the distance.
- Since we are the only item we just return ourself and 0 for the distance.
- This is needed so that we get button/motion events. */
-static double
-e_day_view_main_item_point (GnomeCanvasItem *item, double x, double y,
- int cx, int cy,
- GnomeCanvasItem **actual_item)
-{
- *actual_item = item;
- return 0.0;
-}
-
-
-static gint
-e_day_view_main_item_event (GnomeCanvasItem *item, GdkEvent *event)
-{
- EDayViewMainItem *dvtitem;
-
- dvtitem = E_DAY_VIEW_MAIN_ITEM (item);
-
- switch (event->type) {
- case GDK_BUTTON_PRESS:
-
- case GDK_BUTTON_RELEASE:
-
- case GDK_MOTION_NOTIFY:
-
- default:
- break;
- }
-
- return FALSE;
-}
-
-
diff --git a/calendar/gui/e-day-view-main-item.h b/calendar/gui/e-day-view-main-item.h
deleted file mode 100644
index cb9e2589d8..0000000000
--- a/calendar/gui/e-day-view-main-item.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 1999, Helix Code, Inc.
- * Copyright 1999, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-#ifndef _E_DAY_VIEW_MAIN_ITEM_H_
-#define _E_DAY_VIEW_MAIN_ITEM_H_
-
-#include "e-day-view.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/*
- * EDayViewMainItem - canvas item which displays most of the appointment
- * data in the main Day/Work Week display.
- */
-
-#define E_DAY_VIEW_MAIN_ITEM(obj) (GTK_CHECK_CAST((obj), \
- e_day_view_main_item_get_type (), EDayViewMainItem))
-#define E_DAY_VIEW_MAIN_ITEM_CLASS(k) (GTK_CHECK_CLASS_CAST ((k),\
- e_day_view_main_item_get_type ()))
-#define E_IS_DAY_VIEW_MAIN_ITEM(o) (GTK_CHECK_TYPE((o), \
- e_day_view_main_item_get_type ()))
-
-typedef struct {
- GnomeCanvasItem canvas_item;
-
- /* The parent EDayView widget. */
- EDayView *day_view;
-} EDayViewMainItem;
-
-typedef struct {
- GnomeCanvasItemClass parent_class;
-
-} EDayViewMainItemClass;
-
-
-GtkType e_day_view_main_item_get_type (void);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_DAY_VIEW_MAIN_ITEM_H_ */
diff --git a/calendar/gui/e-day-view-time-item.c b/calendar/gui/e-day-view-time-item.c
deleted file mode 100644
index 4d005f3b49..0000000000
--- a/calendar/gui/e-day-view-time-item.c
+++ /dev/null
@@ -1,660 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 1999, Helix Code, Inc.
- * Copyright 1999, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * EDayViewTimeItem - canvas item which displays the times down the left of
- * the EDayView.
- */
-
-#include <config.h>
-#include <glib.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <gal/widgets/e-gui-utils.h>
-#include "e-day-view-time-item.h"
-#include "calendar-config.h"
-
-
-/* The spacing between items in the time column. GRID_X_PAD is the space down
- either side of the column, i.e. outside the main horizontal grid lines.
- HOUR_L_PAD & HOUR_R_PAD are the spaces on the left & right side of the
- big hour number (this is inside the horizontal grid lines).
- MIN_X_PAD is the spacing either side of the minute number. The smaller
- horizontal grid lines match with this.
- 60_MIN_X_PAD is the space either side of the HH:MM display used when
- we are displaying 60 mins per row (inside the main grid lines).
- LARGE_HOUR_Y_PAD is the offset of the large hour string from the top of the
- row.
- SMALL_FONT_Y_PAD is the offset of the small time/minute string from the top
- of the row. */
-#define E_DVTMI_TIME_GRID_X_PAD 4
-#define E_DVTMI_HOUR_L_PAD 4
-#define E_DVTMI_HOUR_R_PAD 2
-#define E_DVTMI_MIN_X_PAD 2
-#define E_DVTMI_60_MIN_X_PAD 4
-#define E_DVTMI_LARGE_HOUR_Y_PAD 1
-#define E_DVTMI_SMALL_FONT_Y_PAD 1
-
-static void e_day_view_time_item_class_init (EDayViewTimeItemClass *class);
-static void e_day_view_time_item_init (EDayViewTimeItem *dvtmitem);
-static void e_day_view_time_item_set_arg (GtkObject *o,
- GtkArg *arg,
- guint arg_id);
-
-static void e_day_view_time_item_update (GnomeCanvasItem *item,
- double *affine,
- ArtSVP *clip_path, int flags);
-static void e_day_view_time_item_draw (GnomeCanvasItem *item,
- GdkDrawable *drawable,
- int x, int y,
- int width, int height);
-static double e_day_view_time_item_point (GnomeCanvasItem *item,
- double x, double y,
- int cx, int cy,
- GnomeCanvasItem **actual_item);
-static gint e_day_view_time_item_event (GnomeCanvasItem *item,
- GdkEvent *event);
-static void e_day_view_time_item_increment_time (gint *hour,
- gint *minute,
- gint mins_per_row);
-static void e_day_view_time_item_show_popup_menu (EDayViewTimeItem *dvtmitem,
- GdkEvent *event);
-static void e_day_view_time_item_on_set_divisions (GtkWidget *item,
- EDayViewTimeItem *dvtmitem);
-static void e_day_view_time_item_on_button_press (EDayViewTimeItem *dvtmitem,
- GdkEvent *event);
-static void e_day_view_time_item_on_button_release (EDayViewTimeItem *dvtmitem,
- GdkEvent *event);
-static void e_day_view_time_item_on_motion_notify (EDayViewTimeItem *dvtmitem,
- GdkEvent *event);
-static gint e_day_view_time_item_convert_position_to_row (EDayViewTimeItem *dvtmitem,
- gint y);
-
-
-static GnomeCanvasItemClass *parent_class;
-
-
-/* The arguments we take */
-enum {
- ARG_0,
- ARG_DAY_VIEW
-};
-
-
-GtkType
-e_day_view_time_item_get_type (void)
-{
- static GtkType e_day_view_time_item_type = 0;
-
- if (!e_day_view_time_item_type) {
- GtkTypeInfo e_day_view_time_item_info = {
- "EDayViewTimeItem",
- sizeof (EDayViewTimeItem),
- sizeof (EDayViewTimeItemClass),
- (GtkClassInitFunc) e_day_view_time_item_class_init,
- (GtkObjectInitFunc) e_day_view_time_item_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- e_day_view_time_item_type = gtk_type_unique (gnome_canvas_item_get_type (), &e_day_view_time_item_info);
- }
-
- return e_day_view_time_item_type;
-}
-
-
-static void
-e_day_view_time_item_class_init (EDayViewTimeItemClass *class)
-{
- GtkObjectClass *object_class;
- GnomeCanvasItemClass *item_class;
-
- parent_class = gtk_type_class (gnome_canvas_item_get_type());
-
- object_class = (GtkObjectClass *) class;
- item_class = (GnomeCanvasItemClass *) class;
-
- gtk_object_add_arg_type ("EDayViewTimeItem::day_view",
- GTK_TYPE_POINTER, GTK_ARG_WRITABLE,
- ARG_DAY_VIEW);
-
- object_class->set_arg = e_day_view_time_item_set_arg;
-
- /* GnomeCanvasItem method overrides */
- item_class->update = e_day_view_time_item_update;
- item_class->draw = e_day_view_time_item_draw;
- item_class->point = e_day_view_time_item_point;
- item_class->event = e_day_view_time_item_event;
-}
-
-
-static void
-e_day_view_time_item_init (EDayViewTimeItem *dvtmitem)
-{
- dvtmitem->dragging_selection = FALSE;
-}
-
-
-static void
-e_day_view_time_item_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- GnomeCanvasItem *item;
- EDayViewTimeItem *dvtmitem;
-
- item = GNOME_CANVAS_ITEM (o);
- dvtmitem = E_DAY_VIEW_TIME_ITEM (o);
-
- switch (arg_id){
- case ARG_DAY_VIEW:
- dvtmitem->day_view = GTK_VALUE_POINTER (*arg);
- break;
- }
-}
-
-
-static void
-e_day_view_time_item_update (GnomeCanvasItem *item,
- double *affine,
- ArtSVP *clip_path,
- int flags)
-{
- if (GNOME_CANVAS_ITEM_CLASS (parent_class)->update)
- (* GNOME_CANVAS_ITEM_CLASS (parent_class)->update) (item, affine, clip_path, flags);
-
- /* The item covers the entire canvas area. */
- item->x1 = 0;
- item->y1 = 0;
- item->x2 = INT_MAX;
- item->y2 = INT_MAX;
-}
-
-
-/* Returns the minimum width needed for the column, by adding up all the
- maximum widths of the strings. The string widths are all calculated in
- the style_set handlers of EDayView and EDayViewTimeCanvas. */
-gint
-e_day_view_time_item_get_column_width (EDayViewTimeItem *dvtmitem)
-{
- EDayView *day_view;
- GtkStyle *style;
- GdkFont *small_font, *large_font;
- gint digit, large_digit_width, max_large_digit_width = 0;
- gint max_suffix_width, max_minute_or_suffix_width;
- gint column_width_default, column_width_60_min_rows;
-
- day_view = dvtmitem->day_view;
- g_return_val_if_fail (day_view != NULL, 0);
-
- style = GTK_WIDGET (day_view)->style;
- g_return_val_if_fail (style != NULL, 0);
- small_font = style->font;
- g_return_val_if_fail (small_font != NULL, 0);
- large_font = day_view->large_font;
- g_return_val_if_fail (large_font != NULL, 0);
-
- for (digit = '0'; digit <= '9'; digit++) {
- large_digit_width = gdk_char_width (large_font, digit);
- max_large_digit_width = MAX (max_large_digit_width,
- large_digit_width);
- }
-
- /* Calculate the width of each time column, using the maximum of the
- default format with large hour numbers, and the 60-min divisions
- format which uses small text. */
- max_suffix_width = MAX (day_view->am_string_width,
- day_view->pm_string_width);
-
- max_minute_or_suffix_width = MAX (max_suffix_width,
- day_view->max_minute_width);
-
- column_width_default = max_large_digit_width * 2
- + max_minute_or_suffix_width
- + E_DVTMI_MIN_X_PAD * 2
- + E_DVTMI_HOUR_L_PAD
- + E_DVTMI_HOUR_R_PAD
- + E_DVTMI_TIME_GRID_X_PAD * 2;
-
- column_width_60_min_rows = day_view->max_small_hour_width
- + day_view->colon_width
- + max_minute_or_suffix_width
- + E_DVTMI_60_MIN_X_PAD * 2
- + E_DVTMI_TIME_GRID_X_PAD * 2;
-
- dvtmitem->column_width = MAX (column_width_default,
- column_width_60_min_rows);
-
- return dvtmitem->column_width;
-}
-
-
-/*
- * DRAWING ROUTINES - functions to paint the canvas item.
- */
-
-static void
-e_day_view_time_item_draw (GnomeCanvasItem *canvas_item,
- GdkDrawable *drawable,
- int x,
- int y,
- int width,
- int height)
-{
- EDayView *day_view;
- EDayViewTimeItem *dvtmitem;
- GtkStyle *style;
- GdkFont *small_font, *large_font;
- GdkGC *fg_gc, *dark_gc;
- gchar buffer[64], *suffix;
- gint hour, display_hour, minute, row;
- gint row_y, start_y, large_hour_y_offset, small_font_y_offset;
- gint long_line_x1, long_line_x2, short_line_x1;
- gint large_hour_x2, minute_x2;
- gint hour_width, minute_width, suffix_width;
- gint max_suffix_width, max_minute_or_suffix_width;
-
- dvtmitem = E_DAY_VIEW_TIME_ITEM (canvas_item);
- day_view = dvtmitem->day_view;
- g_return_if_fail (day_view != NULL);
-
- style = GTK_WIDGET (day_view)->style;
- small_font = style->font;
- large_font = day_view->large_font;
- fg_gc = style->fg_gc[GTK_STATE_NORMAL];
- dark_gc = style->dark_gc[GTK_STATE_NORMAL];
-
- /* The start and end of the long horizontal line between hours. */
- long_line_x1 = E_DVTMI_TIME_GRID_X_PAD - x;
- long_line_x2 = dvtmitem->column_width - E_DVTMI_TIME_GRID_X_PAD - x;
-
- if (day_view->mins_per_row == 60) {
- /* The right edge of the complete time string in 60-min
- divisions, e.g. "14:00" or "2 pm". */
- minute_x2 = long_line_x2 - E_DVTMI_60_MIN_X_PAD;
-
- /* These aren't used for 60-minute divisions, but we initialize
- them to keep gcc happy. */
- short_line_x1 = 0;
- large_hour_x2 = 0;
- } else {
- max_suffix_width = MAX (day_view->am_string_width,
- day_view->pm_string_width);
-
- max_minute_or_suffix_width = MAX (max_suffix_width,
- day_view->max_minute_width);
-
- /* The start of the short horizontal line between the periods
- within each hour. */
- short_line_x1 = long_line_x2 - E_DVTMI_MIN_X_PAD * 2
- - max_minute_or_suffix_width;
-
- /* The right edge of the large hour string. */
- large_hour_x2 = short_line_x1 - E_DVTMI_HOUR_R_PAD;
-
- /* The right edge of the minute part of the time. */
- minute_x2 = long_line_x2 - E_DVTMI_MIN_X_PAD;
- }
-
- /* Start with the first hour & minute shown in the EDayView. */
- hour = day_view->first_hour_shown;
- minute = day_view->first_minute_shown;
-
- /* The offset of the large hour string from the top of the row. */
- large_hour_y_offset = large_font->ascent + E_DVTMI_LARGE_HOUR_Y_PAD;
-
- /* The offset of the small time/minute string from top of row. */
- small_font_y_offset = small_font->ascent + E_DVTMI_SMALL_FONT_Y_PAD;
-
- /* Calculate the minimum y position of the first row we need to draw.
- This is normally one row height above the 0 position, but if we
- are using the large font we may have to go back a bit further. */
- start_y = 0 - MAX (day_view->row_height,
- large_hour_y_offset + large_font->descent);
-
- /* Step through each row, drawing the times and the horizontal lines
- between them. */
- for (row = 0, row_y = 0 - y;
- row < day_view->rows && row_y < height;
- row++, row_y += day_view->row_height) {
-
- /* If the row is above the first row we want to draw just
- increment the time and skip to the next row. */
- if (row_y < start_y) {
- e_day_view_time_item_increment_time (&hour, &minute,
- day_view->mins_per_row);
- continue;
- }
-
- /* Calculate the actual hour number to display. For 12-hour
- format we convert 0-23 to 12-11am/12-11pm. */
- e_day_view_convert_time_to_display (day_view, hour,
- &display_hour,
- &suffix, &suffix_width);
-
- if (day_view->mins_per_row == 60) {
- /* 60 minute intervals - draw a long horizontal line
- between hours and display as one long string,
- e.g. "14:00" or "2 pm". */
- gdk_draw_line (drawable, dark_gc,
- long_line_x1, row_y,
- long_line_x2, row_y);
-
- if (day_view->use_24_hour_format) {
- g_snprintf (buffer, sizeof (buffer), "%i:%02i",
- display_hour, minute);
- } else {
- g_snprintf (buffer, sizeof (buffer), "%i %s",
- display_hour, suffix);
- }
- minute_width = gdk_string_width (small_font, buffer);
- gdk_draw_string (drawable, small_font, fg_gc,
- minute_x2 - minute_width,
- row_y + small_font_y_offset,
- buffer);
- } else {
- /* 5/10/15/30 minute intervals. */
-
- if (minute == 0) {
- /* On the hour - draw a long horizontal line
- before the hour and display the hour in the
- large font. */
- gdk_draw_line (drawable, dark_gc,
- long_line_x1, row_y,
- long_line_x2, row_y);
-
- g_snprintf (buffer, sizeof (buffer), "%i",
- display_hour);
- hour_width = gdk_string_width (large_font,
- buffer);
- gdk_draw_string (drawable, large_font, fg_gc,
- large_hour_x2 - hour_width,
- row_y + large_hour_y_offset,
- buffer);
- } else {
- /* Within the hour - draw a short line before
- the time. */
- gdk_draw_line (drawable, dark_gc,
- short_line_x1, row_y,
- long_line_x2, row_y);
- }
-
- /* Normally we display the minute in each
- interval, but when using 30-minute intervals
- we don't display the '30'. */
- if (day_view->mins_per_row != 30 || minute != 30) {
- /* In 12-hour format we display 'am' or 'pm'
- instead of '00'. */
- if (minute == 0
- && !day_view->use_24_hour_format) {
- strcpy (buffer, suffix);
- } else {
- g_snprintf (buffer, sizeof (buffer),
- "%02i", minute);
- }
- minute_width = gdk_string_width (small_font,
- buffer);
- gdk_draw_string (drawable, small_font, fg_gc,
- minute_x2 - minute_width,
- row_y + small_font_y_offset,
- buffer);
- }
- }
-
- e_day_view_time_item_increment_time (&hour, &minute,
- day_view->mins_per_row);
- }
-}
-
-
-/* Increment the time by the 5/10/15/30/60 minute interval.
- Note that mins_per_row is never > 60, so we never have to
- worry about adding more than 60 minutes. */
-static void
-e_day_view_time_item_increment_time (gint *hour,
- gint *minute,
- gint mins_per_row)
-{
- *minute += mins_per_row;
- if (*minute >= 60) {
- *minute -= 60;
- /* Currently we never wrap around to the next day, but
- we may do if we display extra timezones. */
- *hour = (*hour + 1) % 24;
- }
-}
-
-
-static double
-e_day_view_time_item_point (GnomeCanvasItem *item, double x, double y,
- int cx, int cy,
- GnomeCanvasItem **actual_item)
-{
- *actual_item = item;
- return 0.0;
-}
-
-
-static gint
-e_day_view_time_item_event (GnomeCanvasItem *item,
- GdkEvent *event)
-{
- EDayViewTimeItem *dvtmitem;
-
- dvtmitem = E_DAY_VIEW_TIME_ITEM (item);
-
- switch (event->type) {
- case GDK_BUTTON_PRESS:
- if (event->button.button == 1) {
- e_day_view_time_item_on_button_press (dvtmitem, event);
- } else if (event->button.button == 3) {
- e_day_view_time_item_show_popup_menu (dvtmitem, event);
- return TRUE;
- }
- break;
- case GDK_BUTTON_RELEASE:
- if (event->button.button == 1)
- e_day_view_time_item_on_button_release (dvtmitem,
- event);
- break;
-
- case GDK_MOTION_NOTIFY:
- e_day_view_time_item_on_motion_notify (dvtmitem, event);
- break;
-
- default:
- break;
- }
-
- return FALSE;
-}
-
-
-static void
-e_day_view_time_item_show_popup_menu (EDayViewTimeItem *dvtmitem,
- GdkEvent *event)
-{
- static gint divisions[] = { 60, 30, 15, 10, 5 };
- EDayView *day_view;
- gint num_divisions = sizeof (divisions) / sizeof (divisions[0]);
- GtkWidget *menu, *item;
- gchar buffer[256];
- GSList *group = NULL;
- gint current_divisions, i;
-
- day_view = dvtmitem->day_view;
- g_return_if_fail (day_view != NULL);
-
- current_divisions = e_day_view_get_mins_per_row (day_view);
-
- menu = gtk_menu_new ();
-
- /* Make sure the menu is destroyed when it disappears. */
- e_auto_kill_popup_menu_on_hide (GTK_MENU (menu));
-
- for (i = 0; i < num_divisions; i++) {
- g_snprintf (buffer, sizeof (buffer),
- _("%02i minute divisions"), divisions[i]);
- item = gtk_radio_menu_item_new_with_label (group, buffer);
- group = gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (item));
- gtk_widget_show (item);
- gtk_menu_append (GTK_MENU (menu), item);
-
- if (current_divisions == divisions[i])
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), TRUE);
-
- gtk_object_set_data (GTK_OBJECT (item), "divisions",
- GINT_TO_POINTER (divisions[i]));
-
- gtk_signal_connect (GTK_OBJECT (item), "toggled",
- e_day_view_time_item_on_set_divisions,
- dvtmitem);
- }
-
- gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL,
- event->button.button, event->button.time);
-}
-
-
-static void
-e_day_view_time_item_on_set_divisions (GtkWidget *item,
- EDayViewTimeItem *dvtmitem)
-{
- EDayView *day_view;
- gint divisions;
-
- day_view = dvtmitem->day_view;
- g_return_if_fail (day_view != NULL);
-
- if (!GTK_CHECK_MENU_ITEM (item)->active)
- return;
-
- divisions = GPOINTER_TO_INT (gtk_object_get_data (GTK_OBJECT (item),
- "divisions"));
- e_day_view_set_mins_per_row (day_view, divisions);
- calendar_config_set_time_divisions (divisions);
-}
-
-
-static void
-e_day_view_time_item_on_button_press (EDayViewTimeItem *dvtmitem,
- GdkEvent *event)
-{
- EDayView *day_view;
- GnomeCanvas *canvas;
- gint row;
-
- day_view = dvtmitem->day_view;
- g_return_if_fail (day_view != NULL);
-
- canvas = GNOME_CANVAS_ITEM (dvtmitem)->canvas;
-
- row = e_day_view_time_item_convert_position_to_row (dvtmitem,
- event->button.y);
-
- if (row == -1)
- return;
-
- if (!GTK_WIDGET_HAS_FOCUS (day_view))
- gtk_widget_grab_focus (GTK_WIDGET (day_view));
-
- if (gdk_pointer_grab (GTK_LAYOUT (canvas)->bin_window, FALSE,
- GDK_POINTER_MOTION_MASK
- | GDK_BUTTON_RELEASE_MASK,
- FALSE, NULL, event->button.time) == 0) {
- e_day_view_start_selection (day_view, -1, row);
- dvtmitem->dragging_selection = TRUE;
- }
-}
-
-
-static void
-e_day_view_time_item_on_button_release (EDayViewTimeItem *dvtmitem,
- GdkEvent *event)
-{
- EDayView *day_view;
-
- day_view = dvtmitem->day_view;
- g_return_if_fail (day_view != NULL);
-
- if (dvtmitem->dragging_selection) {
- gdk_pointer_ungrab (event->button.time);
- e_day_view_finish_selection (day_view);
- e_day_view_stop_auto_scroll (day_view);
- }
-
- dvtmitem->dragging_selection = FALSE;
-}
-
-
-static void
-e_day_view_time_item_on_motion_notify (EDayViewTimeItem *dvtmitem,
- GdkEvent *event)
-{
- EDayView *day_view;
- GnomeCanvas *canvas;
- gdouble window_y;
- gint y, row;
-
- if (!dvtmitem->dragging_selection)
- return;
-
- day_view = dvtmitem->day_view;
- g_return_if_fail (day_view != NULL);
-
- canvas = GNOME_CANVAS_ITEM (dvtmitem)->canvas;
-
- y = event->motion.y;
- row = e_day_view_time_item_convert_position_to_row (dvtmitem, y);
-
- if (row != -1) {
- gnome_canvas_world_to_window (canvas, 0, event->motion.y,
- NULL, &window_y);
- e_day_view_update_selection (day_view, -1, row);
- e_day_view_check_auto_scroll (day_view, -1, (gint) window_y);
- }
-}
-
-
-/* Returns the row corresponding to the y position, or -1. */
-static gint
-e_day_view_time_item_convert_position_to_row (EDayViewTimeItem *dvtmitem,
- gint y)
-{
- EDayView *day_view;
- gint row;
-
- day_view = dvtmitem->day_view;
- g_return_val_if_fail (day_view != NULL, -1);
-
- if (y < 0)
- return -1;
-
- row = y / day_view->row_height;
- if (row >= day_view->rows)
- return -1;
-
- return row;
-}
diff --git a/calendar/gui/e-day-view-time-item.h b/calendar/gui/e-day-view-time-item.h
deleted file mode 100644
index 972f01e1b5..0000000000
--- a/calendar/gui/e-day-view-time-item.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 1999, Helix Code, Inc.
- * Copyright 1999, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-#ifndef _E_DAY_VIEW_TIME_ITEM_H_
-#define _E_DAY_VIEW_TIME_ITEM_H_
-
-#include "e-day-view.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/*
- * EDayViewTimeItem - canvas item which displays the times down the left of
- * the EDayView.
- */
-
-#define E_DAY_VIEW_TIME_ITEM(obj) (GTK_CHECK_CAST((obj), \
- e_day_view_time_item_get_type (), EDayViewTimeItem))
-#define E_DAY_VIEW_TIME_ITEM_CLASS(k) (GTK_CHECK_CLASS_CAST ((k),\
- e_day_view_time_item_get_type ()))
-#define E_IS_DAY_VIEW_TIME_ITEM(o) (GTK_CHECK_TYPE((o), \
- e_day_view_time_item_get_type ()))
-
-typedef struct {
- GnomeCanvasItem canvas_item;
-
- /* The parent EDayView widget. */
- EDayView *day_view;
-
- /* The width of the time column. */
- gint column_width;
-
- /* TRUE if we are currently dragging the selection times. */
- gboolean dragging_selection;
-} EDayViewTimeItem;
-
-typedef struct {
- GnomeCanvasItemClass parent_class;
-
-} EDayViewTimeItemClass;
-
-
-GtkType e_day_view_time_item_get_type (void);
-
-
-gint e_day_view_time_item_get_column_width (EDayViewTimeItem *dvtmitem);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_DAY_VIEW_TIME_ITEM_H_ */
diff --git a/calendar/gui/e-day-view-top-item.c b/calendar/gui/e-day-view-top-item.c
deleted file mode 100644
index 16bb8be02f..0000000000
--- a/calendar/gui/e-day-view-top-item.c
+++ /dev/null
@@ -1,651 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@helixcode.com>
- *
- * Copyright 1999, Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * EDayViewTopItem - displays the top part of the Day/Work Week calendar view.
- */
-
-#include <config.h>
-#include <glib.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include "e-day-view-top-item.h"
-
-static void e_day_view_top_item_class_init (EDayViewTopItemClass *class);
-static void e_day_view_top_item_init (EDayViewTopItem *dvtitem);
-
-static void e_day_view_top_item_set_arg (GtkObject *o,
- GtkArg *arg,
- guint arg_id);
-static void e_day_view_top_item_update (GnomeCanvasItem *item,
- double *affine,
- ArtSVP *clip_path,
- int flags);
-static void e_day_view_top_item_draw (GnomeCanvasItem *item,
- GdkDrawable *drawable,
- int x,
- int y,
- int width,
- int height);
-static void e_day_view_top_item_draw_long_event (EDayViewTopItem *dvtitem,
- gint event_num,
- GdkDrawable *drawable,
- int x,
- int y,
- int width,
- int height);
-static void e_day_view_top_item_draw_triangle (EDayViewTopItem *dvtitem,
- GdkDrawable *drawable,
- gint x,
- gint y,
- gint w,
- gint h);
-static double e_day_view_top_item_point (GnomeCanvasItem *item,
- double x,
- double y,
- int cx,
- int cy,
- GnomeCanvasItem **actual_item);
-static gint e_day_view_top_item_event (GnomeCanvasItem *item,
- GdkEvent *event);
-
-
-static GnomeCanvasItemClass *parent_class;
-
-/* The arguments we take */
-enum {
- ARG_0,
- ARG_DAY_VIEW
-};
-
-
-GtkType
-e_day_view_top_item_get_type (void)
-{
- static GtkType e_day_view_top_item_type = 0;
-
- if (!e_day_view_top_item_type) {
- GtkTypeInfo e_day_view_top_item_info = {
- "EDayViewTopItem",
- sizeof (EDayViewTopItem),
- sizeof (EDayViewTopItemClass),
- (GtkClassInitFunc) e_day_view_top_item_class_init,
- (GtkObjectInitFunc) e_day_view_top_item_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- e_day_view_top_item_type = gtk_type_unique (gnome_canvas_item_get_type (), &e_day_view_top_item_info);
- }
-
- return e_day_view_top_item_type;
-}
-
-
-static void
-e_day_view_top_item_class_init (EDayViewTopItemClass *class)
-{
- GtkObjectClass *object_class;
- GnomeCanvasItemClass *item_class;
-
- parent_class = gtk_type_class (gnome_canvas_item_get_type());
-
- object_class = (GtkObjectClass *) class;
- item_class = (GnomeCanvasItemClass *) class;
-
- gtk_object_add_arg_type ("EDayViewTopItem::day_view",
- GTK_TYPE_POINTER, GTK_ARG_WRITABLE,
- ARG_DAY_VIEW);
-
- object_class->set_arg = e_day_view_top_item_set_arg;
-
- /* GnomeCanvasItem method overrides */
- item_class->update = e_day_view_top_item_update;
- item_class->draw = e_day_view_top_item_draw;
- item_class->point = e_day_view_top_item_point;
- item_class->event = e_day_view_top_item_event;
-}
-
-
-static void
-e_day_view_top_item_init (EDayViewTopItem *dvtitem)
-{
- dvtitem->day_view = NULL;
-}
-
-
-static void
-e_day_view_top_item_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- GnomeCanvasItem *item;
- EDayViewTopItem *dvtitem;
-
- item = GNOME_CANVAS_ITEM (o);
- dvtitem = E_DAY_VIEW_TOP_ITEM (o);
-
- switch (arg_id){
- case ARG_DAY_VIEW:
- dvtitem->day_view = GTK_VALUE_POINTER (*arg);
- break;
- }
-}
-
-
-static void
-e_day_view_top_item_update (GnomeCanvasItem *item,
- double *affine,
- ArtSVP *clip_path,
- int flags)
-{
- if (GNOME_CANVAS_ITEM_CLASS (parent_class)->update)
- (* GNOME_CANVAS_ITEM_CLASS (parent_class)->update) (item, affine, clip_path, flags);
-
- /* The item covers the entire canvas area. */
- item->x1 = 0;
- item->y1 = 0;
- item->x2 = INT_MAX;
- item->y2 = INT_MAX;
-}
-
-
-/*
- * DRAWING ROUTINES - functions to paint the canvas item.
- */
-
-static void
-e_day_view_top_item_draw (GnomeCanvasItem *canvas_item,
- GdkDrawable *drawable,
- int x,
- int y,
- int width,
- int height)
-{
- EDayViewTopItem *dvtitem;
- EDayView *day_view;
- GtkStyle *style;
- GdkGC *gc, *fg_gc, *bg_gc, *light_gc, *dark_gc;
- gchar buffer[128], *format;
- GdkRectangle clip_rect;
- GdkFont *font;
- gint canvas_width, canvas_height, left_edge, day, date_width, date_x;
- gint item_height, event_num;
- struct tm *day_start;
-
-#if 0
- g_print ("In e_day_view_top_item_draw %i,%i %ix%i\n",
- x, y, width, height);
-#endif
- dvtitem = E_DAY_VIEW_TOP_ITEM (canvas_item);
- day_view = dvtitem->day_view;
- g_return_if_fail (day_view != NULL);
-
- style = GTK_WIDGET (day_view)->style;
- font = style->font;
- gc = day_view->main_gc;
- fg_gc = style->fg_gc[GTK_STATE_NORMAL];
- bg_gc = style->bg_gc[GTK_STATE_NORMAL];
- light_gc = style->light_gc[GTK_STATE_NORMAL];
- dark_gc = style->dark_gc[GTK_STATE_NORMAL];
- canvas_width = GTK_WIDGET (canvas_item->canvas)->allocation.width;
- canvas_height = GTK_WIDGET (canvas_item->canvas)->allocation.height;
- left_edge = 0;
- item_height = day_view->top_row_height - E_DAY_VIEW_TOP_CANVAS_Y_GAP;
-
- /* Draw the shadow around the dates. */
- gdk_draw_line (drawable, light_gc,
- left_edge + 1 - x, 1 - y,
- canvas_width - 2 - x, 1 - y);
- gdk_draw_line (drawable, light_gc,
- left_edge + 1 - x, 2 - y,
- left_edge + 1 - x, item_height - 1 - y);
- gdk_draw_line (drawable, dark_gc,
- left_edge + 2 - x, item_height - 1 - y,
- canvas_width - 1 - x, item_height - 1 - y);
- gdk_draw_line (drawable, dark_gc,
- canvas_width - 1 - x, 1 - y,
- canvas_width - 1 - x, item_height - 1 - y);
-
- /* Draw the background for the dates. */
- gdk_draw_rectangle (drawable, bg_gc, TRUE,
- left_edge + 2 - x, 2 - y,
- canvas_width - left_edge - 3,
- item_height - 3);
-
- /* Clear the main area background. */
- gdk_gc_set_foreground (gc, &day_view->colors[E_DAY_VIEW_COLOR_BG_TOP_CANVAS]);
- gdk_draw_rectangle (drawable, gc, TRUE,
- left_edge - x, item_height - y,
- canvas_width - left_edge,
- canvas_height - item_height);
-
- /* Draw the selection background. */
- if (GTK_WIDGET_HAS_FOCUS (day_view)
- && day_view->selection_start_day != -1) {
- gint start_col, end_col, rect_x, rect_y, rect_w, rect_h;
-
- start_col = day_view->selection_start_day;
- end_col = day_view->selection_end_day;
-
- if (end_col > start_col
- || day_view->selection_start_row == -1
- || day_view->selection_end_row == -1) {
- rect_x = day_view->day_offsets[start_col];
- rect_y = item_height;
- rect_w = day_view->day_offsets[end_col + 1] - rect_x;
- rect_h = canvas_height - 1 - rect_y;
-
- gdk_gc_set_foreground (gc, &day_view->colors[E_DAY_VIEW_COLOR_BG_TOP_CANVAS_SELECTED]);
- gdk_draw_rectangle (drawable, gc, TRUE,
- rect_x - x, rect_y - y,
- rect_w, rect_h);
- }
- }
-
- /* Draw the date. Set a clipping rectangle so we don't draw over the
- next day. */
- for (day = 0; day < day_view->days_shown; day++) {
- day_start = localtime (&day_view->day_starts[day]);
-
- if (day_view->date_format == E_DAY_VIEW_DATE_FULL)
- /* strftime format %A = full weekday name, %d = day of month,
- %B = full month name. Don't use any other specifiers. */
- format = _("%A %d %B");
- else if (day_view->date_format == E_DAY_VIEW_DATE_ABBREVIATED)
- /* strftime format %a = abbreviated weekday name, %d = day of month,
- %b = abbreviated month name. Don't use any other specifiers. */
- format = _("%a %d %b");
- else if (day_view->date_format == E_DAY_VIEW_DATE_NO_WEEKDAY)
- /* strftime format %d = day of month, %b = abbreviated month name.
- Don't use any other specifiers. */
- format = _("%d %b");
- else
- format = "%d";
-
- strftime (buffer, sizeof (buffer), format, day_start);
-
- clip_rect.x = day_view->day_offsets[day] - x;
- clip_rect.y = 2 - y;
- clip_rect.width = day_view->day_widths[day];
- clip_rect.height = item_height - 2;
- gdk_gc_set_clip_rectangle (fg_gc, &clip_rect);
-
- date_width = gdk_string_width (font, buffer);
- date_x = day_view->day_offsets[day] + (day_view->day_widths[day] - date_width) / 2;
- gdk_draw_string (drawable, font, fg_gc,
- date_x - x, 3 + font->ascent - y, buffer);
-
- gdk_gc_set_clip_rectangle (fg_gc, NULL);
-
- /* Draw the lines down the left and right of the date cols. */
- if (day != 0) {
- gdk_draw_line (drawable, light_gc,
- day_view->day_offsets[day] - x,
- 4 - y,
- day_view->day_offsets[day] - x,
- item_height - 4 - y);
-
- gdk_draw_line (drawable, dark_gc,
- day_view->day_offsets[day] - 1 - x,
- 4 - y,
- day_view->day_offsets[day] - 1 - x,
- item_height - 4 - y);
- }
-
- /* Draw the lines between each column. */
- if (day != 0) {
- gdk_gc_set_foreground (gc, &day_view->colors[E_DAY_VIEW_COLOR_BG_TOP_CANVAS_GRID]);
- gdk_draw_line (drawable, gc,
- day_view->day_offsets[day] - x,
- item_height - y,
- day_view->day_offsets[day] - x,
- canvas_height - y);
- }
- }
-
- /* Draw the long events. */
- for (event_num = 0; event_num < day_view->long_events->len;
- event_num++) {
- e_day_view_top_item_draw_long_event (dvtitem, event_num,
- drawable,
- x, y, width, height);
- }
-}
-
-
-/* This draws one event in the top canvas. */
-static void
-e_day_view_top_item_draw_long_event (EDayViewTopItem *dvtitem,
- gint event_num,
- GdkDrawable *drawable,
- int x,
- int y,
- int width,
- int height)
-{
- EDayView *day_view;
- EDayViewEvent *event;
- GtkStyle *style;
- GdkGC *gc, *fg_gc, *bg_gc;
- GdkFont *font;
- gint start_day, end_day;
- gint item_x, item_y, item_w, item_h;
- gint text_x, icon_x, icon_y, icon_x_inc;
- CalComponent *comp;
- gchar buffer[16];
- gint hour, display_hour, minute, offset, time_width, time_x;
- gint min_end_time_x, suffix_width, max_icon_x;
- gchar *suffix;
- gboolean draw_start_triangle, draw_end_triangle;
- GdkRectangle clip_rect;
-
- day_view = dvtitem->day_view;
-
- /* If the event is currently being dragged, don't draw it. It will
- be drawn in the special drag items. */
- if (day_view->drag_event_day == E_DAY_VIEW_LONG_EVENT
- && day_view->drag_event_num == event_num)
- return;
-
- if (!e_day_view_get_long_event_position (day_view, event_num,
- &start_day, &end_day,
- &item_x, &item_y,
- &item_w, &item_h))
- return;
-
- event = &g_array_index (day_view->long_events, EDayViewEvent,
- event_num);
-
- style = GTK_WIDGET (day_view)->style;
- font = style->font;
- gc = day_view->main_gc;
- fg_gc = style->fg_gc[GTK_STATE_NORMAL];
- bg_gc = style->bg_gc[GTK_STATE_NORMAL];
- comp = event->comp;
-
- /* Draw the lines across the top & bottom of the entire event. */
- gdk_gc_set_foreground (gc, &day_view->colors[E_DAY_VIEW_COLOR_LONG_EVENT_BORDER]);
- gdk_draw_line (drawable, gc,
- item_x - x, item_y - y,
- item_x + item_w - 1 - x, item_y - y);
- gdk_draw_line (drawable, gc,
- item_x - x, item_y + item_h - 1 - y,
- item_x + item_w - 1 - x, item_y + item_h - 1 - y);
-
- /* Fill it in. */
- gdk_gc_set_foreground (gc, &day_view->colors[E_DAY_VIEW_COLOR_LONG_EVENT_BACKGROUND]);
- gdk_draw_rectangle (drawable, gc, TRUE,
- item_x - x, item_y + 1 - y,
- item_w, item_h - 2);
-
- /* When resizing we don't draw the triangles.*/
- draw_start_triangle = TRUE;
- draw_end_triangle = TRUE;
- if (day_view->resize_drag_pos != E_DAY_VIEW_POS_NONE
- && day_view->resize_event_day == E_DAY_VIEW_LONG_EVENT
- && day_view->resize_event_num == event_num) {
- if (day_view->resize_drag_pos == E_DAY_VIEW_POS_LEFT_EDGE)
- draw_start_triangle = FALSE;
-
- if (day_view->resize_drag_pos == E_DAY_VIEW_POS_RIGHT_EDGE)
- draw_end_triangle = FALSE;
- }
-
- /* If the event starts before the first day shown, draw a triangle,
- else just draw a vertical line down the left. */
- if (draw_start_triangle
- && event->start < day_view->day_starts[start_day]) {
- e_day_view_top_item_draw_triangle (dvtitem, drawable,
- item_x - x, item_y - y,
- -E_DAY_VIEW_BAR_WIDTH,
- item_h);
- } else {
- gdk_gc_set_foreground (gc, &day_view->colors[E_DAY_VIEW_COLOR_LONG_EVENT_BORDER]);
- gdk_draw_line (drawable, gc,
- item_x - x, item_y - y,
- item_x - x, item_y + item_h - 1 - y);
- }
-
- /* Similar for the event end. */
- if (draw_end_triangle
- && event->end > day_view->day_starts[end_day + 1]) {
- e_day_view_top_item_draw_triangle (dvtitem, drawable,
- item_x + item_w - 1 - x,
- item_y - y,
- E_DAY_VIEW_BAR_WIDTH,
- item_h);
- } else {
- gdk_gc_set_foreground (gc, &day_view->colors[E_DAY_VIEW_COLOR_LONG_EVENT_BORDER]);
- gdk_draw_line (drawable, gc,
- item_x + item_w - 1 - x,
- item_y - y,
- item_x + item_w - 1 - x,
- item_y + item_h - 1 - y);
- }
-
- /* If we are editing the event we don't show the icons or the start
- & end times. */
- if (day_view->editing_event_day == E_DAY_VIEW_LONG_EVENT
- && day_view->editing_event_num == event_num)
- return;
-
- /* Determine the position of the label, so we know where to place the
- icons. Note that since the top canvas never scrolls we don't need
- to take the scroll offset into account. It will always be 0. */
- text_x = event->canvas_item->x1;
-
- /* Draw the start & end times, if necessary. */
- min_end_time_x = item_x + E_DAY_VIEW_LONG_EVENT_X_PAD - x;
-
- time_width = e_day_view_get_time_string_width (day_view);
-
- if (event->start > day_view->day_starts[start_day]) {
- offset = day_view->first_hour_shown * 60
- + day_view->first_minute_shown + event->start_minute;
- hour = offset / 60;
- minute = offset % 60;
- /* Calculate the actual hour number to display. For 12-hour
- format we convert 0-23 to 12-11am/12-11pm. */
- e_day_view_convert_time_to_display (day_view, hour,
- &display_hour,
- &suffix, &suffix_width);
- if (day_view->use_24_hour_format) {
- g_snprintf (buffer, sizeof (buffer), "%i:%02i",
- display_hour, minute);
- } else {
- g_snprintf (buffer, sizeof (buffer), "%i:%02i%s",
- display_hour, minute, suffix);
- }
-
- clip_rect.x = item_x - x;
- clip_rect.y = item_y - y;
- clip_rect.width = item_w - E_DAY_VIEW_LONG_EVENT_BORDER_WIDTH;
- clip_rect.height = item_h;
- gdk_gc_set_clip_rectangle (fg_gc, &clip_rect);
-
- time_x = item_x + E_DAY_VIEW_LONG_EVENT_X_PAD - x;
- if (display_hour < 10)
- time_x += day_view->digit_width;
-
- gdk_draw_string (drawable, font, fg_gc,
- time_x,
- item_y + E_DAY_VIEW_LONG_EVENT_BORDER_HEIGHT
- + E_DAY_VIEW_LONG_EVENT_Y_PAD
- + font->ascent - y,
- buffer);
-
- gdk_gc_set_clip_rectangle (fg_gc, NULL);
-
- min_end_time_x += time_width
- + E_DAY_VIEW_LONG_EVENT_TIME_X_PAD;
- }
-
- max_icon_x = item_x + item_w - E_DAY_VIEW_LONG_EVENT_X_PAD
- - E_DAY_VIEW_ICON_WIDTH;
-
- if (event->end < day_view->day_starts[end_day + 1]) {
- offset = day_view->first_hour_shown * 60
- + day_view->first_minute_shown
- + event->end_minute;
- hour = offset / 60;
- minute = offset % 60;
- time_x = item_x + item_w - E_DAY_VIEW_LONG_EVENT_X_PAD - time_width - E_DAY_VIEW_LONG_EVENT_TIME_X_PAD - x;
-
- if (time_x >= min_end_time_x) {
- /* Calculate the actual hour number to display. */
- e_day_view_convert_time_to_display (day_view, hour,
- &display_hour,
- &suffix,
- &suffix_width);
- if (day_view->use_24_hour_format) {
- g_snprintf (buffer, sizeof (buffer),
- "%i:%02i", display_hour, minute);
- } else {
- g_snprintf (buffer, sizeof (buffer),
- "%i:%02i%s", display_hour, minute,
- suffix);
- }
-
- if (display_hour < 10)
- time_x += day_view->digit_width;
-
- gdk_draw_string (drawable, font, fg_gc,
- time_x,
- item_y + E_DAY_VIEW_LONG_EVENT_Y_PAD
- + font->ascent + 1 - y,
- buffer);
-
- max_icon_x -= time_width + E_DAY_VIEW_LONG_EVENT_TIME_X_PAD;
- }
- }
-
- /* Draw the icons. */
- icon_x_inc = E_DAY_VIEW_ICON_WIDTH + E_DAY_VIEW_ICON_X_PAD;
- icon_x = text_x - icon_x_inc - x;
- icon_y = item_y + E_DAY_VIEW_LONG_EVENT_BORDER_HEIGHT
- + E_DAY_VIEW_ICON_Y_PAD - y;
-
- if (icon_x <= max_icon_x && cal_component_has_recurrences (comp)) {
- gdk_gc_set_clip_origin (gc, icon_x, icon_y);
- gdk_gc_set_clip_mask (gc, day_view->recurrence_mask);
- gdk_draw_pixmap (drawable, gc,
- day_view->recurrence_icon,
- 0, 0, icon_x, icon_y,
- E_DAY_VIEW_ICON_WIDTH,
- E_DAY_VIEW_ICON_HEIGHT);
- icon_x -= icon_x_inc;
- }
-
- if (icon_x <= max_icon_x && cal_component_has_alarms (comp)) {
- gdk_gc_set_clip_origin (gc, icon_x, icon_y);
- gdk_gc_set_clip_mask (gc, day_view->reminder_mask);
- gdk_draw_pixmap (drawable, gc,
- day_view->reminder_icon,
- 0, 0, icon_x, icon_y,
- E_DAY_VIEW_ICON_WIDTH,
- E_DAY_VIEW_ICON_HEIGHT);
- icon_x -= icon_x_inc;
- }
- gdk_gc_set_clip_mask (gc, NULL);
-}
-
-
-/* This draws a little triangle to indicate that an event extends past
- the days visible on screen. */
-static void
-e_day_view_top_item_draw_triangle (EDayViewTopItem *dvtitem,
- GdkDrawable *drawable,
- gint x,
- gint y,
- gint w,
- gint h)
-{
- EDayView *day_view;
- GtkStyle *style;
- GdkGC *gc;
- GdkPoint points[3];
- gint c1, c2;
-
- day_view = dvtitem->day_view;
-
- style = GTK_WIDGET (day_view)->style;
- gc = day_view->main_gc;
-
- points[0].x = x;
- points[0].y = y;
- points[1].x = x + w;
- points[1].y = y + (h / 2) - 1;
- points[2].x = x;
- points[2].y = y + h - 1;
-
- /* If the height is odd we can use the same central point for both
- lines. If it is even we use different end-points. */
- c1 = c2 = y + (h / 2);
- if (h % 2 == 0)
- c1--;
-
- gdk_gc_set_foreground (gc, &day_view->colors[E_DAY_VIEW_COLOR_LONG_EVENT_BACKGROUND]);
- gdk_draw_polygon (drawable, gc, TRUE, points, 3);
-
- gdk_gc_set_foreground (gc, &day_view->colors[E_DAY_VIEW_COLOR_LONG_EVENT_BORDER]);
- gdk_draw_line (drawable, gc, x, y, x + w, c1);
- gdk_draw_line (drawable, gc, x, y + h - 1, x + w, c2);
-}
-
-
-/* This is supposed to return the nearest item the the point and the distance.
- Since we are the only item we just return ourself and 0 for the distance.
- This is needed so that we get button/motion events. */
-static double
-e_day_view_top_item_point (GnomeCanvasItem *item, double x, double y,
- int cx, int cy,
- GnomeCanvasItem **actual_item)
-{
- *actual_item = item;
- return 0.0;
-}
-
-
-static gint
-e_day_view_top_item_event (GnomeCanvasItem *item, GdkEvent *event)
-{
- EDayViewTopItem *dvtitem;
-
- dvtitem = E_DAY_VIEW_TOP_ITEM (item);
-
- switch (event->type) {
- case GDK_BUTTON_PRESS:
-
- case GDK_BUTTON_RELEASE:
-
- case GDK_MOTION_NOTIFY:
-
- default:
- break;
- }
-
- return FALSE;
-}
-
-
diff --git a/calendar/gui/e-day-view-top-item.h b/calendar/gui/e-day-view-top-item.h
deleted file mode 100644
index 53db4eda79..0000000000
--- a/calendar/gui/e-day-view-top-item.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 1999, Helix Code, Inc.
- * Copyright 1999, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-#ifndef _E_DAY_VIEW_TOP_ITEM_H_
-#define _E_DAY_VIEW_TOP_ITEM_H_
-
-#include "e-day-view.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/*
- * EDayViewTopItem - displays the top part of the Day/Work Week calendar view.
- */
-
-#define E_DAY_VIEW_TOP_ITEM(obj) (GTK_CHECK_CAST((obj), \
- e_day_view_top_item_get_type (), EDayViewTopItem))
-#define E_DAY_VIEW_TOP_ITEM_CLASS(k) (GTK_CHECK_CLASS_CAST ((k),\
- e_day_view_top_item_get_type ()))
-#define E_IS_DAY_VIEW_TOP_ITEM(o) (GTK_CHECK_TYPE((o), \
- e_day_view_top_item_get_type ()))
-
-typedef struct {
- GnomeCanvasItem canvas_item;
-
- /* The parent EDayView widget. */
- EDayView *day_view;
-} EDayViewTopItem;
-
-typedef struct {
- GnomeCanvasItemClass parent_class;
-
-} EDayViewTopItemClass;
-
-
-GtkType e_day_view_top_item_get_type (void);
-
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_DAY_VIEW_TOP_ITEM_H_ */
diff --git a/calendar/gui/e-day-view.c b/calendar/gui/e-day-view.c
deleted file mode 100644
index eac99a18aa..0000000000
--- a/calendar/gui/e-day-view.c
+++ /dev/null
@@ -1,6665 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@helixcode.com>
- *
- * Copyright 1999, Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * EDayView - displays the Day & Work-Week views of the calendar.
- */
-
-#include <config.h>
-
-#include "e-day-view.h"
-
-#include <math.h>
-#include <time.h>
-#include <gdk/gdkkeysyms.h>
-#include <gdk/gdkx.h>
-#include <gtk/gtkdnd.h>
-#include <gtk/gtkmain.h>
-#include <gtk/gtksignal.h>
-#include <gtk/gtkvscrollbar.h>
-#include <gtk/gtkwindow.h>
-#include <gal/e-text/e-text.h>
-#include <gal/widgets/e-popup-menu.h>
-#include <gal/widgets/e-canvas-utils.h>
-#include <libgnomeui/gnome-canvas-rect-ellipse.h>
-#include <libgnome/gnome-i18n.h>
-
-#include "cal-util/timeutil.h"
-#include "dialogs/delete-comp.h"
-#include "comp-util.h"
-#include "calendar-commands.h"
-#include "goto.h"
-#include "e-meeting-edit.h"
-#include "e-day-view-time-item.h"
-#include "e-day-view-top-item.h"
-#include "e-day-view-main-item.h"
-
-/* Images */
-#include "art/bell.xpm"
-#include "art/recur.xpm"
-
-/* The minimum amount of space wanted on each side of the date string. */
-#define E_DAY_VIEW_DATE_X_PAD 4
-
-#define E_DAY_VIEW_LARGE_FONT \
- "-adobe-utopia-regular-r-normal-*-*-240-*-*-p-*-iso8859-*"
-#define E_DAY_VIEW_LARGE_FONT_FALLBACK \
- "-adobe-helvetica-bold-r-normal-*-*-240-*-*-p-*-iso8859-*"
-
-/* The offset from the top/bottom of the canvas before auto-scrolling starts.*/
-#define E_DAY_VIEW_AUTO_SCROLL_OFFSET 16
-
-/* The time between each auto-scroll, in milliseconds. */
-#define E_DAY_VIEW_AUTO_SCROLL_TIMEOUT 50
-
-/* The number of timeouts we skip before we start scrolling. */
-#define E_DAY_VIEW_AUTO_SCROLL_DELAY 5
-
-/* The number of pixels the mouse has to be moved with the button down before
- we start a drag. */
-#define E_DAY_VIEW_DRAG_START_OFFSET 4
-
-/* The amount we scroll the main canvas when the Page Up/Down keys are pressed,
- as a fraction of the page size. */
-#define E_DAY_VIEW_PAGE_STEP 0.5
-
-/* The amount we scroll the main canvas when the mouse wheel buttons are
- pressed, as a fraction of the page size. */
-#define E_DAY_VIEW_WHEEL_MOUSE_STEP_SIZE 0.25
-
-
-/* Drag and Drop stuff. */
-enum {
- TARGET_CALENDAR_EVENT
-};
-static GtkTargetEntry target_table[] = {
- { "application/x-e-calendar-event", 0, TARGET_CALENDAR_EVENT }
-};
-static guint n_targets = sizeof(target_table) / sizeof(target_table[0]);
-
-static void e_day_view_class_init (EDayViewClass *class);
-static void e_day_view_init (EDayView *day_view);
-static void e_day_view_destroy (GtkObject *object);
-static void e_day_view_realize (GtkWidget *widget);
-static void e_day_view_unrealize (GtkWidget *widget);
-static void e_day_view_style_set (GtkWidget *widget,
- GtkStyle *previous_style);
-static void e_day_view_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation);
-static gboolean e_day_view_update_scroll_regions (EDayView *day_view);
-static gint e_day_view_focus_in (GtkWidget *widget,
- GdkEventFocus *event);
-static gint e_day_view_focus_out (GtkWidget *widget,
- GdkEventFocus *event);
-static gint e_day_view_key_press (GtkWidget *widget,
- GdkEventKey *event);
-static void e_day_view_cursor_key_up_shifted (EDayView *day_view,
- GdkEventKey *event);
-static void e_day_view_cursor_key_down_shifted (EDayView *day_view,
- GdkEventKey *event);
-static void e_day_view_cursor_key_left_shifted (EDayView *day_view,
- GdkEventKey *event);
-static void e_day_view_cursor_key_right_shifted (EDayView *day_view,
- GdkEventKey *event);
-static void e_day_view_cursor_key_up (EDayView *day_view,
- GdkEventKey *event);
-static void e_day_view_cursor_key_down (EDayView *day_view,
- GdkEventKey *event);
-static void e_day_view_cursor_key_left (EDayView *day_view,
- GdkEventKey *event);
-static void e_day_view_cursor_key_right (EDayView *day_view,
- GdkEventKey *event);
-static void e_day_view_ensure_rows_visible (EDayView *day_view,
- gint start_row,
- gint end_row);
-static void e_day_view_scroll (EDayView *day_view,
- gfloat pages_to_scroll);
-
-static gboolean e_day_view_check_if_new_event_fits (EDayView *day_view);
-
-static void e_day_view_on_canvas_realized (GtkWidget *widget,
- EDayView *day_view);
-
-static gboolean e_day_view_on_top_canvas_button_press (GtkWidget *widget,
- GdkEventButton *event,
- EDayView *day_view);
-static gboolean e_day_view_on_top_canvas_button_release (GtkWidget *widget,
- GdkEventButton *event,
- EDayView *day_view);
-static gboolean e_day_view_on_top_canvas_motion (GtkWidget *widget,
- GdkEventMotion *event,
- EDayView *day_view);
-
-static gboolean e_day_view_on_main_canvas_button_press (GtkWidget *widget,
- GdkEventButton *event,
- EDayView *day_view);
-static gboolean e_day_view_on_main_canvas_button_release (GtkWidget *widget,
- GdkEventButton *event,
- EDayView *day_view);
-
-static gboolean e_day_view_on_time_canvas_button_press (GtkWidget *widget,
- GdkEventButton *event,
- EDayView *day_view);
-
-static void e_day_view_update_calendar_selection_time (EDayView *day_view);
-static gboolean e_day_view_on_main_canvas_motion (GtkWidget *widget,
- GdkEventMotion *event,
- EDayView *day_view);
-static gboolean e_day_view_convert_event_coords (EDayView *day_view,
- GdkEvent *event,
- GdkWindow *window,
- gint *x_return,
- gint *y_return);
-static void e_day_view_update_long_event_resize (EDayView *day_view,
- gint day);
-static void e_day_view_update_resize (EDayView *day_view,
- gint row);
-static void e_day_view_finish_long_event_resize (EDayView *day_view);
-static void e_day_view_finish_resize (EDayView *day_view);
-static void e_day_view_abort_resize (EDayView *day_view,
- guint32 time);
-
-
-static gboolean e_day_view_on_long_event_button_press (EDayView *day_view,
- gint event_num,
- GdkEventButton *event,
- EDayViewPosition pos,
- gint event_x,
- gint event_y);
-static gboolean e_day_view_on_event_button_press (EDayView *day_view,
- gint day,
- gint event_num,
- GdkEventButton *event,
- EDayViewPosition pos,
- gint event_x,
- gint event_y);
-static void e_day_view_on_long_event_click (EDayView *day_view,
- gint event_num,
- GdkEventButton *bevent,
- EDayViewPosition pos,
- gint event_x,
- gint event_y);
-static void e_day_view_on_event_click (EDayView *day_view,
- gint day,
- gint event_num,
- GdkEventButton *event,
- EDayViewPosition pos,
- gint event_x,
- gint event_y);
-static void e_day_view_on_event_double_click (EDayView *day_view,
- gint day,
- gint event_num);
-static void e_day_view_on_event_right_click (EDayView *day_view,
- GdkEventButton *bevent,
- gint day,
- gint event_num);
-
-static void e_day_view_recalc_day_starts (EDayView *day_view,
- time_t start_time);
-static void e_day_view_recalc_num_rows (EDayView *day_view);
-static void e_day_view_recalc_cell_sizes (EDayView *day_view);
-
-static EDayViewPosition e_day_view_convert_position_in_top_canvas (EDayView *day_view,
- gint x,
- gint y,
- gint *day_return,
- gint *event_num_return);
-static EDayViewPosition e_day_view_convert_position_in_main_canvas (EDayView *day_view,
- gint x,
- gint y,
- gint *day_return,
- gint *row_return,
- gint *event_num_return);
-static gboolean e_day_view_find_event_from_item (EDayView *day_view,
- GnomeCanvasItem *item,
- gint *day_return,
- gint *event_num_return);
-static gboolean e_day_view_find_event_from_uid (EDayView *day_view,
- const gchar *uid,
- gint *day_return,
- gint *event_num_return);
-
-typedef gboolean (* EDayViewForeachEventCallback) (EDayView *day_view,
- gint day,
- gint event_num,
- gpointer data);
-
-static void e_day_view_foreach_event (EDayView *day_view,
- EDayViewForeachEventCallback callback,
- gpointer data);
-static void e_day_view_foreach_event_with_uid (EDayView *day_view,
- const gchar *uid,
- EDayViewForeachEventCallback callback,
- gpointer data);
-
-static void e_day_view_free_events (EDayView *day_view);
-static void e_day_view_free_event_array (EDayView *day_view,
- GArray *array);
-static int e_day_view_add_event (CalComponent *comp,
- time_t start,
- time_t end,
- gpointer data);
-static void e_day_view_update_event_label (EDayView *day_view,
- gint day,
- gint event_num);
-static void e_day_view_update_long_event_label (EDayView *day_view,
- gint event_num);
-
-static void e_day_view_layout_long_events (EDayView *day_view);
-static void e_day_view_layout_long_event (EDayView *day_view,
- EDayViewEvent *event,
- guint8 *grid);
-static void e_day_view_reshape_long_events (EDayView *day_view);
-static void e_day_view_reshape_long_event (EDayView *day_view,
- gint event_num);
-static void e_day_view_layout_day_events (EDayView *day_view,
- gint day);
-static void e_day_view_layout_day_event (EDayView *day_view,
- gint day,
- EDayViewEvent *event,
- guint8 *grid,
- guint16 *group_starts);
-static void e_day_view_expand_day_event (EDayView *day_view,
- gint day,
- EDayViewEvent *event,
- guint8 *grid);
-static void e_day_view_recalc_cols_per_row (EDayView *day_view,
- gint day,
- guint16 *group_starts);
-static void e_day_view_reshape_day_events (EDayView *day_view,
- gint day);
-static void e_day_view_reshape_day_event (EDayView *day_view,
- gint day,
- gint event_num);
-static void e_day_view_reshape_main_canvas_resize_bars (EDayView *day_view);
-static void e_day_view_reshape_resize_long_event_rect_item (EDayView *day_view);
-static void e_day_view_reshape_resize_rect_item (EDayView *day_view);
-
-static void e_day_view_ensure_events_sorted (EDayView *day_view);
-static gint e_day_view_event_sort_func (const void *arg1,
- const void *arg2);
-
-static void e_day_view_start_editing_event (EDayView *day_view,
- gint day,
- gint event_num,
- gchar *initial_text);
-static void e_day_view_stop_editing_event (EDayView *day_view);
-static gboolean e_day_view_on_text_item_event (GnomeCanvasItem *item,
- GdkEvent *event,
- EDayView *day_view);
-static void e_day_view_on_editing_started (EDayView *day_view,
- GnomeCanvasItem *item);
-static void e_day_view_on_editing_stopped (EDayView *day_view,
- GnomeCanvasItem *item);
-
-static time_t e_day_view_convert_grid_position_to_time (EDayView *day_view,
- gint col,
- gint row);
-static gboolean e_day_view_convert_time_to_grid_position (EDayView *day_view,
- time_t time,
- gint *col,
- gint *row);
-
-static void e_day_view_start_auto_scroll (EDayView *day_view,
- gboolean scroll_up);
-static gboolean e_day_view_auto_scroll_handler (gpointer data);
-
-static void e_day_view_on_new_appointment (GtkWidget *widget,
- gpointer data);
-static void e_day_view_on_new_event (GtkWidget *widget,
- gpointer data);
-static void e_day_view_on_goto_today (GtkWidget *widget,
- gpointer data);
-static void e_day_view_on_goto_date (GtkWidget *widget,
- gpointer data);
-static void e_day_view_on_edit_appointment (GtkWidget *widget,
- gpointer data);
-static void e_day_view_on_delete_occurrence (GtkWidget *widget,
- gpointer data);
-static void e_day_view_on_delete_appointment (GtkWidget *widget,
- gpointer data);
-static void e_day_view_on_schedule_meet (GtkWidget *widget,
- gpointer data);
-static void e_day_view_on_unrecur_appointment (GtkWidget *widget,
- gpointer data);
-static EDayViewEvent* e_day_view_get_popup_menu_event (EDayView *day_view);
-
-static gint e_day_view_on_top_canvas_drag_motion (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time,
- EDayView *day_view);
-static void e_day_view_update_top_canvas_drag (EDayView *day_view,
- gint day);
-static void e_day_view_reshape_top_canvas_drag_item (EDayView *day_view);
-static gint e_day_view_on_main_canvas_drag_motion (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time,
- EDayView *day_view);
-static void e_day_view_reshape_main_canvas_drag_item (EDayView *day_view);
-static void e_day_view_update_main_canvas_drag (EDayView *day_view,
- gint row,
- gint day);
-static void e_day_view_on_top_canvas_drag_leave (GtkWidget *widget,
- GdkDragContext *context,
- guint time,
- EDayView *day_view);
-static void e_day_view_on_main_canvas_drag_leave (GtkWidget *widget,
- GdkDragContext *context,
- guint time,
- EDayView *day_view);
-static void e_day_view_on_drag_begin (GtkWidget *widget,
- GdkDragContext *context,
- EDayView *day_view);
-static void e_day_view_on_drag_end (GtkWidget *widget,
- GdkDragContext *context,
- EDayView *day_view);
-static void e_day_view_on_drag_data_get (GtkWidget *widget,
- GdkDragContext *context,
- GtkSelectionData *selection_data,
- guint info,
- guint time,
- EDayView *day_view);
-static void e_day_view_on_top_canvas_drag_data_received (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- GtkSelectionData *data,
- guint info,
- guint time,
- EDayView *day_view);
-static void e_day_view_on_main_canvas_drag_data_received (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- GtkSelectionData *data,
- guint info,
- guint time,
- EDayView *day_view);
-
-static gboolean e_day_view_update_event_cb (EDayView *day_view,
- gint day,
- gint event_num,
- gpointer data);
-static gboolean e_day_view_remove_event_cb (EDayView *day_view,
- gint day,
- gint event_num,
- gpointer data);
-static void e_day_view_normalize_selection (EDayView *day_view);
-static gboolean e_day_view_set_show_times_cb (EDayView *day_view,
- gint day,
- gint event_num,
- gpointer data);
-static time_t e_day_view_find_work_week_start (EDayView *day_view,
- time_t start_time);
-static void e_day_view_recalc_work_week (EDayView *day_view);
-static void e_day_view_recalc_work_week_days_shown (EDayView *day_view);
-static gboolean e_day_view_set_event_font_cb (EDayView *day_view,
- gint day,
- gint event_num,
- gpointer data);
-
-
-static GtkTableClass *parent_class;
-
-
-GtkType
-e_day_view_get_type (void)
-{
- static GtkType e_day_view_type = 0;
-
- if (!e_day_view_type){
- GtkTypeInfo e_day_view_info = {
- "EDayView",
- sizeof (EDayView),
- sizeof (EDayViewClass),
- (GtkClassInitFunc) e_day_view_class_init,
- (GtkObjectInitFunc) e_day_view_init,
- NULL, /* reserved 1 */
- NULL, /* reserved 2 */
- (GtkClassInitFunc) NULL
- };
-
- parent_class = gtk_type_class (GTK_TYPE_TABLE);
- e_day_view_type = gtk_type_unique (GTK_TYPE_TABLE,
- &e_day_view_info);
- }
-
- return e_day_view_type;
-}
-
-
-static void
-e_day_view_class_init (EDayViewClass *class)
-{
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
-
- object_class = (GtkObjectClass *) class;
- widget_class = (GtkWidgetClass *) class;
-
- /* Method override */
- object_class->destroy = e_day_view_destroy;
-
- widget_class->realize = e_day_view_realize;
- widget_class->unrealize = e_day_view_unrealize;
- widget_class->style_set = e_day_view_style_set;
- widget_class->size_allocate = e_day_view_size_allocate;
- widget_class->focus_in_event = e_day_view_focus_in;
- widget_class->focus_out_event = e_day_view_focus_out;
- widget_class->key_press_event = e_day_view_key_press;
-}
-
-
-static void
-e_day_view_init (EDayView *day_view)
-{
- gint day;
- GnomeCanvasGroup *canvas_group;
-
- GTK_WIDGET_SET_FLAGS (day_view, GTK_CAN_FOCUS);
-
- day_view->calendar = NULL;
- day_view->client = NULL;
- day_view->sexp = g_strdup ("#t"); /* match all by default */
- day_view->query = NULL;
-
- day_view->long_events = g_array_new (FALSE, FALSE,
- sizeof (EDayViewEvent));
- day_view->long_events_sorted = TRUE;
- day_view->long_events_need_layout = FALSE;
- day_view->long_events_need_reshape = FALSE;
-
- for (day = 0; day < E_DAY_VIEW_MAX_DAYS; day++) {
- day_view->events[day] = g_array_new (FALSE, FALSE,
- sizeof (EDayViewEvent));
- day_view->events_sorted[day] = TRUE;
- day_view->need_layout[day] = FALSE;
- day_view->need_reshape[day] = FALSE;
- }
-
- /* These indicate that the times haven't been set. */
- day_view->lower = 0;
- day_view->upper = 0;
-
- day_view->work_week_view = FALSE;
- day_view->days_shown = 1;
-
- day_view->mins_per_row = 30;
- day_view->date_format = E_DAY_VIEW_DATE_FULL;
- day_view->rows_in_top_display = 0;
-
- /* Note that these don't work yet. It would need a few fixes to the
- way event->start_minute and event->end_minute are used, and there
- may be problems with events that go outside the visible times. */
- day_view->first_hour_shown = 0;
- day_view->first_minute_shown = 0;
- day_view->last_hour_shown = 24;
- day_view->last_minute_shown = 0;
-
- day_view->main_gc = NULL;
- e_day_view_recalc_num_rows (day_view);
-
- day_view->working_days = E_DAY_VIEW_MONDAY | E_DAY_VIEW_TUESDAY
- | E_DAY_VIEW_WEDNESDAY | E_DAY_VIEW_THURSDAY
- | E_DAY_VIEW_FRIDAY;
-
- day_view->work_day_start_hour = 9;
- day_view->work_day_start_minute = 0;
- day_view->work_day_end_hour = 17;
- day_view->work_day_end_minute = 0;
- day_view->show_event_end_times = TRUE;
- day_view->week_start_day = 0;
- day_view->scroll_to_work_day = TRUE;
-
- day_view->editing_event_day = -1;
- day_view->editing_event_num = -1;
-
- day_view->resize_bars_event_day = -1;
- day_view->resize_bars_event_num = -1;
-
- day_view->selection_start_row = -1;
- day_view->selection_start_day = -1;
- day_view->selection_end_row = -1;
- day_view->selection_end_day = -1;
- day_view->selection_is_being_dragged = FALSE;
- day_view->selection_drag_pos = E_DAY_VIEW_DRAG_END;
- day_view->selection_in_top_canvas = FALSE;
-
- day_view->resize_drag_pos = E_DAY_VIEW_POS_NONE;
-
- day_view->pressed_event_day = -1;
-
- day_view->drag_event_day = -1;
- day_view->drag_last_day = -1;
-
- day_view->auto_scroll_timeout_id = 0;
-
- /* Create the large font. */
- day_view->large_font = gdk_font_load (E_DAY_VIEW_LARGE_FONT);
- if (!day_view->large_font)
- day_view->large_font = gdk_font_load (E_DAY_VIEW_LARGE_FONT_FALLBACK);
- if (!day_view->large_font)
- g_warning ("Couldn't load font");
-
- /* String to use in 12-hour time format for times in the morning. */
- day_view->am_string = _("am");
-
- /* String to use in 12-hour time format for times in the afternoon. */
- day_view->pm_string = _("pm");
-
-
- /*
- * Top Canvas
- */
- day_view->top_canvas = e_canvas_new ();
- gtk_table_attach (GTK_TABLE (day_view), day_view->top_canvas,
- 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
- gtk_widget_show (day_view->top_canvas);
- gtk_signal_connect_after (GTK_OBJECT (day_view->top_canvas), "button_press_event",
- GTK_SIGNAL_FUNC (e_day_view_on_top_canvas_button_press),
- day_view);
- gtk_signal_connect_after (GTK_OBJECT (day_view->top_canvas), "button_release_event",
- GTK_SIGNAL_FUNC (e_day_view_on_top_canvas_button_release),
- day_view);
- gtk_signal_connect_after (GTK_OBJECT (day_view->top_canvas), "motion_notify_event",
- GTK_SIGNAL_FUNC (e_day_view_on_top_canvas_motion),
- day_view);
- gtk_signal_connect_after (GTK_OBJECT (day_view->top_canvas),
- "drag_motion",
- GTK_SIGNAL_FUNC (e_day_view_on_top_canvas_drag_motion),
- day_view);
- gtk_signal_connect_after (GTK_OBJECT (day_view->top_canvas),
- "drag_leave",
- GTK_SIGNAL_FUNC (e_day_view_on_top_canvas_drag_leave),
- day_view);
- gtk_signal_connect (GTK_OBJECT (day_view->top_canvas),
- "drag_begin",
- GTK_SIGNAL_FUNC (e_day_view_on_drag_begin),
- day_view);
- gtk_signal_connect (GTK_OBJECT (day_view->top_canvas),
- "drag_end",
- GTK_SIGNAL_FUNC (e_day_view_on_drag_end),
- day_view);
- gtk_signal_connect (GTK_OBJECT (day_view->top_canvas),
- "drag_data_get",
- GTK_SIGNAL_FUNC (e_day_view_on_drag_data_get),
- day_view);
- gtk_signal_connect (GTK_OBJECT (day_view->top_canvas),
- "drag_data_received",
- GTK_SIGNAL_FUNC (e_day_view_on_top_canvas_drag_data_received),
- day_view);
-
- canvas_group = GNOME_CANVAS_GROUP (GNOME_CANVAS (day_view->top_canvas)->root);
-
- day_view->top_canvas_item =
- gnome_canvas_item_new (canvas_group,
- e_day_view_top_item_get_type (),
- "EDayViewTopItem::day_view", day_view,
- NULL);
-
- day_view->resize_long_event_rect_item =
- gnome_canvas_item_new (canvas_group,
- gnome_canvas_rect_get_type(),
- NULL);
- gnome_canvas_item_hide (day_view->resize_long_event_rect_item);
-
- day_view->drag_long_event_rect_item =
- gnome_canvas_item_new (canvas_group,
- gnome_canvas_rect_get_type (),
- "width_pixels", 1,
- NULL);
- gnome_canvas_item_hide (day_view->drag_long_event_rect_item);
-
- day_view->drag_long_event_item =
- gnome_canvas_item_new (canvas_group,
- e_text_get_type (),
- "anchor", GTK_ANCHOR_NW,
- "line_wrap", TRUE,
- "clip", TRUE,
- "max_lines", 1,
- "editable", TRUE,
- "draw_background", FALSE,
- "fill_color_rgba", GNOME_CANVAS_COLOR(0, 0, 0),
- NULL);
- gnome_canvas_item_hide (day_view->drag_long_event_item);
-
- /*
- * Main Canvas
- */
- day_view->main_canvas = e_canvas_new ();
- gtk_table_attach (GTK_TABLE (day_view), day_view->main_canvas,
- 1, 2, 1, 2,
- GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
- gtk_widget_show (day_view->main_canvas);
- gtk_signal_connect (GTK_OBJECT (day_view->main_canvas), "realize",
- GTK_SIGNAL_FUNC (e_day_view_on_canvas_realized),
- day_view);
- gtk_signal_connect_after (GTK_OBJECT (day_view->main_canvas),
- "button_press_event",
- GTK_SIGNAL_FUNC (e_day_view_on_main_canvas_button_press),
- day_view);
- gtk_signal_connect_after (GTK_OBJECT (day_view->main_canvas),
- "button_release_event",
- GTK_SIGNAL_FUNC (e_day_view_on_main_canvas_button_release),
- day_view);
- gtk_signal_connect_after (GTK_OBJECT (day_view->main_canvas),
- "motion_notify_event",
- GTK_SIGNAL_FUNC (e_day_view_on_main_canvas_motion),
- day_view);
- gtk_signal_connect_after (GTK_OBJECT (day_view->main_canvas),
- "drag_motion",
- GTK_SIGNAL_FUNC (e_day_view_on_main_canvas_drag_motion),
- day_view);
- gtk_signal_connect_after (GTK_OBJECT (day_view->main_canvas),
- "drag_leave",
- GTK_SIGNAL_FUNC (e_day_view_on_main_canvas_drag_leave),
- day_view);
- gtk_signal_connect (GTK_OBJECT (day_view->main_canvas),
- "drag_begin",
- GTK_SIGNAL_FUNC (e_day_view_on_drag_begin),
- day_view);
- gtk_signal_connect (GTK_OBJECT (day_view->main_canvas),
- "drag_end",
- GTK_SIGNAL_FUNC (e_day_view_on_drag_end),
- day_view);
- gtk_signal_connect (GTK_OBJECT (day_view->main_canvas),
- "drag_data_get",
- GTK_SIGNAL_FUNC (e_day_view_on_drag_data_get),
- day_view);
- gtk_signal_connect (GTK_OBJECT (day_view->main_canvas),
- "drag_data_received",
- GTK_SIGNAL_FUNC (e_day_view_on_main_canvas_drag_data_received),
- day_view);
-
- canvas_group = GNOME_CANVAS_GROUP (GNOME_CANVAS (day_view->main_canvas)->root);
-
- day_view->main_canvas_item =
- gnome_canvas_item_new (canvas_group,
- e_day_view_main_item_get_type (),
- "EDayViewMainItem::day_view", day_view,
- NULL);
-
- day_view->resize_rect_item =
- gnome_canvas_item_new (canvas_group,
- gnome_canvas_rect_get_type(),
- NULL);
- gnome_canvas_item_hide (day_view->resize_rect_item);
-
- day_view->resize_bar_item =
- gnome_canvas_item_new (canvas_group,
- gnome_canvas_rect_get_type(),
- NULL);
- gnome_canvas_item_hide (day_view->resize_bar_item);
-
- day_view->main_canvas_top_resize_bar_item =
- gnome_canvas_item_new (canvas_group,
- gnome_canvas_rect_get_type (),
- "width_pixels", 1,
- NULL);
- gnome_canvas_item_hide (day_view->main_canvas_top_resize_bar_item);
-
- day_view->main_canvas_bottom_resize_bar_item =
- gnome_canvas_item_new (canvas_group,
- gnome_canvas_rect_get_type (),
- "width_pixels", 1,
- NULL);
- gnome_canvas_item_hide (day_view->main_canvas_bottom_resize_bar_item);
-
-
- day_view->drag_rect_item =
- gnome_canvas_item_new (canvas_group,
- gnome_canvas_rect_get_type (),
- "width_pixels", 1,
- NULL);
- gnome_canvas_item_hide (day_view->drag_rect_item);
-
- day_view->drag_bar_item =
- gnome_canvas_item_new (canvas_group,
- gnome_canvas_rect_get_type (),
- "width_pixels", 1,
- NULL);
- gnome_canvas_item_hide (day_view->drag_bar_item);
-
- day_view->drag_item =
- gnome_canvas_item_new (canvas_group,
- e_text_get_type (),
- "anchor", GTK_ANCHOR_NW,
- "line_wrap", TRUE,
- "clip", TRUE,
- "editable", TRUE,
- "draw_background", FALSE,
- "fill_color_rgba", GNOME_CANVAS_COLOR(0, 0, 0),
- NULL);
- gnome_canvas_item_hide (day_view->drag_item);
-
-
- /*
- * Times Canvas
- */
- day_view->time_canvas = e_canvas_new ();
- gtk_layout_set_vadjustment (GTK_LAYOUT (day_view->time_canvas),
- GTK_LAYOUT (day_view->main_canvas)->vadjustment);
- gtk_table_attach (GTK_TABLE (day_view), day_view->time_canvas,
- 0, 1, 1, 2,
- GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
- gtk_widget_show (day_view->time_canvas);
- gtk_signal_connect_after (GTK_OBJECT (day_view->time_canvas),
- "button_press_event",
- GTK_SIGNAL_FUNC (e_day_view_on_time_canvas_button_press),
- day_view);
-
- canvas_group = GNOME_CANVAS_GROUP (GNOME_CANVAS (day_view->time_canvas)->root);
-
- day_view->time_canvas_item =
- gnome_canvas_item_new (canvas_group,
- e_day_view_time_item_get_type (),
- "EDayViewTimeItem::day_view", day_view,
- NULL);
-
-
- /*
- * Scrollbar.
- */
- day_view->vscrollbar = gtk_vscrollbar_new (GTK_LAYOUT (day_view->main_canvas)->vadjustment);
- gtk_table_attach (GTK_TABLE (day_view), day_view->vscrollbar,
- 2, 3, 1, 2, 0, GTK_EXPAND | GTK_FILL, 0, 0);
- gtk_widget_show (day_view->vscrollbar);
-
-
- /* Create the cursors. */
- day_view->normal_cursor = gdk_cursor_new (GDK_LEFT_PTR);
- day_view->move_cursor = gdk_cursor_new (GDK_FLEUR);
- day_view->resize_width_cursor = gdk_cursor_new (GDK_SB_H_DOUBLE_ARROW);
- day_view->resize_height_cursor = gdk_cursor_new (GDK_SB_V_DOUBLE_ARROW);
- day_view->last_cursor_set_in_top_canvas = NULL;
- day_view->last_cursor_set_in_main_canvas = NULL;
-
- /* Set up the drop sites. */
- gtk_drag_dest_set (day_view->top_canvas,
- GTK_DEST_DEFAULT_ALL,
- target_table, n_targets,
- GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_ASK);
- gtk_drag_dest_set (day_view->main_canvas,
- GTK_DEST_DEFAULT_ALL,
- target_table, n_targets,
- GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_ASK);
-}
-
-
-/* Turn off the background of the canvas windows. This reduces flicker
- considerably when scrolling. (Why isn't it in GnomeCanvas?). */
-static void
-e_day_view_on_canvas_realized (GtkWidget *widget,
- EDayView *day_view)
-{
- gdk_window_set_back_pixmap (GTK_LAYOUT (widget)->bin_window,
- NULL, FALSE);
-}
-
-
-/**
- * e_day_view_new:
- * @Returns: a new #EDayView.
- *
- * Creates a new #EDayView.
- **/
-GtkWidget *
-e_day_view_new (void)
-{
- GtkWidget *day_view;
-
- day_view = GTK_WIDGET (gtk_type_new (e_day_view_get_type ()));
-
- return day_view;
-}
-
-
-static void
-e_day_view_destroy (GtkObject *object)
-{
- EDayView *day_view;
- gint day;
-
- day_view = E_DAY_VIEW (object);
-
- e_day_view_stop_auto_scroll (day_view);
-
- if (day_view->client) {
- gtk_signal_disconnect_by_data (GTK_OBJECT (day_view->client), day_view);
- gtk_object_unref (GTK_OBJECT (day_view->client));
- day_view->client = NULL;
- }
-
- if (day_view->sexp) {
- g_free (day_view->sexp);
- day_view->sexp = NULL;
- }
-
- if (day_view->query) {
- gtk_signal_disconnect_by_data (GTK_OBJECT (day_view->query), day_view);
- gtk_object_unref (GTK_OBJECT (day_view->query));
- day_view->query = NULL;
- }
-
- if (day_view->large_font)
- gdk_font_unref (day_view->large_font);
-
- gdk_cursor_destroy (day_view->normal_cursor);
- gdk_cursor_destroy (day_view->move_cursor);
- gdk_cursor_destroy (day_view->resize_width_cursor);
- gdk_cursor_destroy (day_view->resize_height_cursor);
-
- e_day_view_free_events (day_view);
- g_array_free (day_view->long_events, TRUE);
- for (day = 0; day < E_DAY_VIEW_MAX_DAYS; day++)
- g_array_free (day_view->events[day], TRUE);
-
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
-}
-
-
-static void
-e_day_view_realize (GtkWidget *widget)
-{
- EDayView *day_view;
- GdkColormap *colormap;
- gboolean success[E_DAY_VIEW_COLOR_LAST];
- gint nfailed;
-
- if (GTK_WIDGET_CLASS (parent_class)->realize)
- (*GTK_WIDGET_CLASS (parent_class)->realize)(widget);
-
- day_view = E_DAY_VIEW (widget);
- day_view->main_gc = gdk_gc_new (widget->window);
-
- colormap = gtk_widget_get_colormap (widget);
-
- /* Allocate the colors. */
- day_view->colors[E_DAY_VIEW_COLOR_BG_WORKING].red = 247 * 257;
- day_view->colors[E_DAY_VIEW_COLOR_BG_WORKING].green = 247 * 257;
- day_view->colors[E_DAY_VIEW_COLOR_BG_WORKING].blue = 244 * 257;
-
- day_view->colors[E_DAY_VIEW_COLOR_BG_NOT_WORKING].red = 216 * 257;
- day_view->colors[E_DAY_VIEW_COLOR_BG_NOT_WORKING].green = 216 * 257;
- day_view->colors[E_DAY_VIEW_COLOR_BG_NOT_WORKING].blue = 214 * 257;
-
- day_view->colors[E_DAY_VIEW_COLOR_BG_SELECTED].red = 0 * 257;
- day_view->colors[E_DAY_VIEW_COLOR_BG_SELECTED].green = 0 * 257;
- day_view->colors[E_DAY_VIEW_COLOR_BG_SELECTED].blue = 156 * 257;
-
- day_view->colors[E_DAY_VIEW_COLOR_BG_GRID].red = 148 * 257;
- day_view->colors[E_DAY_VIEW_COLOR_BG_GRID].green = 149 * 257;
- day_view->colors[E_DAY_VIEW_COLOR_BG_GRID].blue = 148 * 257;
-
- day_view->colors[E_DAY_VIEW_COLOR_BG_TOP_CANVAS].red = 148 * 257;
- day_view->colors[E_DAY_VIEW_COLOR_BG_TOP_CANVAS].green = 149 * 257;
- day_view->colors[E_DAY_VIEW_COLOR_BG_TOP_CANVAS].blue = 148 * 257;
-
- day_view->colors[E_DAY_VIEW_COLOR_BG_TOP_CANVAS_SELECTED].red = 65535;
- day_view->colors[E_DAY_VIEW_COLOR_BG_TOP_CANVAS_SELECTED].green = 65535;
- day_view->colors[E_DAY_VIEW_COLOR_BG_TOP_CANVAS_SELECTED].blue = 65535;
-
- day_view->colors[E_DAY_VIEW_COLOR_BG_TOP_CANVAS_GRID].red = 0;
- day_view->colors[E_DAY_VIEW_COLOR_BG_TOP_CANVAS_GRID].green = 0;
- day_view->colors[E_DAY_VIEW_COLOR_BG_TOP_CANVAS_GRID].blue = 0;
-
- day_view->colors[E_DAY_VIEW_COLOR_EVENT_VBAR].red = 0;
- day_view->colors[E_DAY_VIEW_COLOR_EVENT_VBAR].green = 0;
- day_view->colors[E_DAY_VIEW_COLOR_EVENT_VBAR].blue = 65535;
-
- day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND].red = 65535;
- day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND].green = 65535;
- day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND].blue = 65535;
-
- day_view->colors[E_DAY_VIEW_COLOR_EVENT_BORDER].red = 0;
- day_view->colors[E_DAY_VIEW_COLOR_EVENT_BORDER].green = 0;
- day_view->colors[E_DAY_VIEW_COLOR_EVENT_BORDER].blue = 0;
-
- day_view->colors[E_DAY_VIEW_COLOR_LONG_EVENT_BACKGROUND].red = 213 * 257;
- day_view->colors[E_DAY_VIEW_COLOR_LONG_EVENT_BACKGROUND].green = 213 * 257;
- day_view->colors[E_DAY_VIEW_COLOR_LONG_EVENT_BACKGROUND].blue = 213 * 257;
-
- day_view->colors[E_DAY_VIEW_COLOR_LONG_EVENT_BORDER].red = 0;
- day_view->colors[E_DAY_VIEW_COLOR_LONG_EVENT_BORDER].green = 0;
- day_view->colors[E_DAY_VIEW_COLOR_LONG_EVENT_BORDER].blue = 0;
-
- nfailed = gdk_colormap_alloc_colors (colormap, day_view->colors,
- E_DAY_VIEW_COLOR_LAST, FALSE,
- TRUE, success);
- if (nfailed)
- g_warning ("Failed to allocate all colors");
-
-
- /* Create the pixmaps. */
- day_view->reminder_icon = gdk_pixmap_colormap_create_from_xpm_d (NULL, colormap, &day_view->reminder_mask, NULL, bell_xpm);
- day_view->recurrence_icon = gdk_pixmap_colormap_create_from_xpm_d (NULL, colormap, &day_view->recurrence_mask, NULL, recur_xpm);
-
-
-
- /* Set the canvas item colors. */
- gnome_canvas_item_set (day_view->resize_long_event_rect_item,
- "fill_color_gdk", &day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND],
- "outline_color_gdk", &day_view->colors[E_DAY_VIEW_COLOR_EVENT_BORDER],
- NULL);
-
- gnome_canvas_item_set (day_view->drag_long_event_rect_item,
- "fill_color_gdk", &day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND],
- "outline_color_gdk", &day_view->colors[E_DAY_VIEW_COLOR_EVENT_BORDER],
- NULL);
-
-
- gnome_canvas_item_set (day_view->resize_rect_item,
- "fill_color_gdk", &day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND],
- "outline_color_gdk", &day_view->colors[E_DAY_VIEW_COLOR_EVENT_BORDER],
- NULL);
-
- gnome_canvas_item_set (day_view->resize_bar_item,
- "fill_color_gdk", &day_view->colors[E_DAY_VIEW_COLOR_EVENT_VBAR],
- "outline_color_gdk", &day_view->colors[E_DAY_VIEW_COLOR_EVENT_BORDER],
- NULL);
-
- gnome_canvas_item_set (day_view->main_canvas_top_resize_bar_item,
- "fill_color_gdk", &day_view->colors[E_DAY_VIEW_COLOR_EVENT_VBAR],
- "outline_color_gdk", &day_view->colors[E_DAY_VIEW_COLOR_EVENT_BORDER],
- NULL);
-
- gnome_canvas_item_set (day_view->main_canvas_bottom_resize_bar_item,
- "fill_color_gdk", &day_view->colors[E_DAY_VIEW_COLOR_EVENT_VBAR],
- "outline_color_gdk", &day_view->colors[E_DAY_VIEW_COLOR_EVENT_BORDER],
- NULL);
-
-
- gnome_canvas_item_set (day_view->drag_rect_item,
- "fill_color_gdk", &day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND],
- "outline_color_gdk", &day_view->colors[E_DAY_VIEW_COLOR_EVENT_BORDER],
- NULL);
-
- gnome_canvas_item_set (day_view->drag_bar_item,
- "fill_color_gdk", &day_view->colors[E_DAY_VIEW_COLOR_EVENT_VBAR],
- "outline_color_gdk", &day_view->colors[E_DAY_VIEW_COLOR_EVENT_BORDER],
- NULL);
-}
-
-
-static void
-e_day_view_unrealize (GtkWidget *widget)
-{
- EDayView *day_view;
- GdkColormap *colormap;
- gint i;
-
- day_view = E_DAY_VIEW (widget);
-
- gdk_gc_unref (day_view->main_gc);
- day_view->main_gc = NULL;
-
- colormap = gtk_widget_get_colormap (widget);
- for (i = 0; i < E_DAY_VIEW_COLOR_LAST; i++)
- gdk_colors_free (colormap, &day_view->colors[i].pixel, 1, 0);
-
- gdk_pixmap_unref (day_view->reminder_icon);
- day_view->reminder_icon = NULL;
- gdk_pixmap_unref (day_view->recurrence_icon);
- day_view->recurrence_icon = NULL;
-
- if (GTK_WIDGET_CLASS (parent_class)->unrealize)
- (*GTK_WIDGET_CLASS (parent_class)->unrealize)(widget);
-}
-
-
-static void
-e_day_view_style_set (GtkWidget *widget,
- GtkStyle *previous_style)
-{
- EDayView *day_view;
- GdkFont *font;
- gint top_rows, top_canvas_height;
- gint hour, max_large_hour_width;
- gint minute, max_minute_width, i;
- gint month, day, width;
- gint longest_month_width, longest_abbreviated_month_width;
- gint longest_weekday_width, longest_abbreviated_weekday_width;
- struct tm date_tm;
- gchar buffer[128];
- gint times_width;
-
- if (GTK_WIDGET_CLASS (parent_class)->style_set)
- (*GTK_WIDGET_CLASS (parent_class)->style_set)(widget, previous_style);
-
- day_view = E_DAY_VIEW (widget);
- font = widget->style->font;
-
- /* Recalculate the height of each row based on the font size. */
- day_view->row_height = font->ascent + font->descent + E_DAY_VIEW_EVENT_BORDER_HEIGHT + E_DAY_VIEW_EVENT_Y_PAD * 2 + 2 /* FIXME */;
- day_view->row_height = MAX (day_view->row_height, E_DAY_VIEW_ICON_HEIGHT + E_DAY_VIEW_ICON_Y_PAD + 2);
- GTK_LAYOUT (day_view->main_canvas)->vadjustment->step_increment = day_view->row_height;
-
- day_view->top_row_height = font->ascent + font->descent + E_DAY_VIEW_LONG_EVENT_BORDER_HEIGHT * 2 + E_DAY_VIEW_LONG_EVENT_Y_PAD * 2 + E_DAY_VIEW_TOP_CANVAS_Y_GAP;
- day_view->top_row_height = MAX (day_view->top_row_height, E_DAY_VIEW_ICON_HEIGHT + E_DAY_VIEW_ICON_Y_PAD + 2 + E_DAY_VIEW_TOP_CANVAS_Y_GAP);
-
- /* Set the height of the top canvas based on the row height and the
- number of rows needed (min 1 + 1 for the dates + 1 space for DnD).*/
- top_rows = MAX (1, day_view->rows_in_top_display);
- top_canvas_height = (top_rows + 2) * day_view->top_row_height;
- gtk_widget_set_usize (day_view->top_canvas, -1, top_canvas_height);
-
- /* Find the longest full & abbreviated month names. */
- memset (&date_tm, 0, sizeof (date_tm));
- date_tm.tm_year = 100;
- date_tm.tm_mday = 1;
- date_tm.tm_isdst = -1;
-
- longest_month_width = 0;
- longest_abbreviated_month_width = 0;
- for (month = 0; month < 12; month++) {
- date_tm.tm_mon = month;
-
- strftime (buffer, sizeof (buffer), "%B", &date_tm);
- width = gdk_string_width (font, buffer);
- if (width > longest_month_width) {
- longest_month_width = width;
- day_view->longest_month_name = month;
- }
-
- strftime (buffer, sizeof (buffer), "%b", &date_tm);
- width = gdk_string_width (font, buffer);
- if (width > longest_abbreviated_month_width) {
- longest_abbreviated_month_width = width;
- day_view->longest_abbreviated_month_name = month;
- }
- }
-
- /* Find the longest full & abbreviated weekday names. */
- memset (&date_tm, 0, sizeof (date_tm));
- date_tm.tm_year = 100;
- date_tm.tm_mon = 0;
- date_tm.tm_isdst = -1;
-
- longest_weekday_width = 0;
- longest_abbreviated_weekday_width = 0;
- for (day = 0; day < 7; day++) {
- date_tm.tm_mday = 2 + day;
- date_tm.tm_wday = day;
-
- strftime (buffer, sizeof (buffer), "%A", &date_tm);
- width = gdk_string_width (font, buffer);
- if (width > longest_weekday_width) {
- longest_weekday_width = width;
- day_view->longest_weekday_name = day;
- }
-
- strftime (buffer, sizeof (buffer), "%a", &date_tm);
- width = gdk_string_width (font, buffer);
- if (width > longest_abbreviated_weekday_width) {
- longest_abbreviated_weekday_width = width;
- day_view->longest_abbreviated_weekday_name = day;
- }
- }
-
-
- /* Calculate the widths of all the time strings necessary. */
- day_view->max_small_hour_width = 0;
- max_large_hour_width = 0;
- for (hour = 0; hour < 24; hour++) {
- g_snprintf (buffer, sizeof (buffer), "%02i", hour);
- day_view->small_hour_widths[hour] = gdk_string_width (font, buffer);
- day_view->max_small_hour_width = MAX (day_view->max_small_hour_width, day_view->small_hour_widths[hour]);
- }
-
- max_minute_width = 0;
- for (minute = 0, i = 0; minute < 60; minute += 5, i++) {
- gint minute_width;
-
- g_snprintf (buffer, sizeof (buffer), "%02i", minute);
- minute_width = gdk_string_width (font, buffer);
- max_minute_width = MAX (max_minute_width, minute_width);
- }
- day_view->max_minute_width = max_minute_width;
- day_view->colon_width = gdk_string_width (font, ":");
- day_view->digit_width = gdk_string_width (font, "0");
-
- day_view->am_string_width = gdk_string_width (font,
- day_view->am_string);
- day_view->pm_string_width = gdk_string_width (font,
- day_view->pm_string);
-
- /* Calculate the width of the time column. */
- times_width = e_day_view_time_item_get_column_width (E_DAY_VIEW_TIME_ITEM (day_view->time_canvas_item));
- gtk_widget_set_usize (day_view->time_canvas, times_width, -1);
-
- /* Set the font of all the EText items. */
- e_day_view_foreach_event (day_view, e_day_view_set_event_font_cb,
- font);
-
- /* Set the fonts for the text items used when dragging. */
- gnome_canvas_item_set (day_view->drag_long_event_item,
- "font_gdk", GTK_WIDGET (day_view)->style->font,
- NULL);
-
- gnome_canvas_item_set (day_view->drag_item,
- "font_gdk", GTK_WIDGET (day_view)->style->font,
- NULL);
-}
-
-
-static gboolean
-e_day_view_set_event_font_cb (EDayView *day_view,
- gint day,
- gint event_num,
- gpointer data)
-{
- EDayViewEvent *event;
- GdkFont *font = data;
-
- if (day == E_DAY_VIEW_LONG_EVENT)
- event = &g_array_index (day_view->long_events,
- EDayViewEvent, event_num);
- else
- event = &g_array_index (day_view->events[day],
- EDayViewEvent, event_num);
-
- if (event->canvas_item)
- gnome_canvas_item_set (event->canvas_item,
- "font_gdk", font,
- NULL);
-
- return TRUE;
-}
-
-
-/* This recalculates the sizes of each column. */
-static void
-e_day_view_size_allocate (GtkWidget *widget, GtkAllocation *allocation)
-{
- EDayView *day_view;
- gint day, scroll_y;
- gboolean need_reshape;
- gdouble old_x2, old_y2, new_x2, new_y2;
-
-#if 0
- g_print ("In e_day_view_size_allocate\n");
-#endif
- day_view = E_DAY_VIEW (widget);
-
- (*GTK_WIDGET_CLASS (parent_class)->size_allocate) (widget, allocation);
-
- e_day_view_recalc_cell_sizes (day_view);
-
- /* Set the scroll region of the top canvas to its allocated size. */
- gnome_canvas_get_scroll_region (GNOME_CANVAS (day_view->top_canvas),
- NULL, NULL, &old_x2, &old_y2);
- new_x2 = day_view->top_canvas->allocation.width - 1;
- new_y2 = day_view->top_canvas->allocation.height - 1;
- if (old_x2 != new_x2 || old_y2 != new_y2)
- gnome_canvas_set_scroll_region (GNOME_CANVAS (day_view->top_canvas),
- 0, 0, new_x2, new_y2);
-
- need_reshape = e_day_view_update_scroll_regions (day_view);
-
- /* Scroll to the start of the working day, if this is the initial
- allocation. */
- if (day_view->scroll_to_work_day) {
- scroll_y = e_day_view_convert_time_to_position (day_view, day_view->work_day_start_hour, day_view->work_day_start_minute);
- gnome_canvas_scroll_to (GNOME_CANVAS (day_view->main_canvas),
- 0, scroll_y);
- day_view->scroll_to_work_day = FALSE;
- }
-
- /* Flag that we need to reshape the events. Note that changes in height
- don't matter, since the rows are always the same height. */
- if (need_reshape) {
- day_view->long_events_need_reshape = TRUE;
- for (day = 0; day < E_DAY_VIEW_MAX_DAYS; day++)
- day_view->need_reshape[day] = TRUE;
-
- e_day_view_check_layout (day_view);
- }
-}
-
-
-static void
-e_day_view_recalc_cell_sizes (EDayView *day_view)
-{
- /* An array of dates, one for each month in the year 2000. They must
- all be Sundays. */
- static const int days[12] = { 23, 20, 19, 23, 21, 18,
- 23, 20, 17, 22, 19, 24 };
- gfloat width, offset;
- gint day, max_width;
- struct tm date_tm;
- GdkFont *font;
- char buffer[128];
-
- g_return_if_fail (((GtkWidget*)day_view)->style != NULL);
- font = GTK_WIDGET (day_view)->style->font;
-
- /* Calculate the column sizes, using floating point so that pixels
- get divided evenly. Note that we use one more element than the
- number of columns, to make it easy to get the column widths. */
- width = day_view->main_canvas->allocation.width;
- width /= day_view->days_shown;
- offset = 0;
- for (day = 0; day <= day_view->days_shown; day++) {
- day_view->day_offsets[day] = floor (offset + 0.5);
- offset += width;
- }
-
- /* Calculate the days widths based on the offsets. */
- for (day = 0; day < day_view->days_shown; day++) {
- day_view->day_widths[day] = day_view->day_offsets[day + 1] - day_view->day_offsets[day];
- }
-
- /* Determine which date format to use, based on the column widths.
- We want to check the widths using the longest full or abbreviated
- month name and the longest full or abbreviated weekday name, as
- appropriate. */
- max_width = day_view->day_widths[0];
-
- memset (&date_tm, 0, sizeof (date_tm));
- date_tm.tm_year = 100;
-
- /* Try "Thursday 21 January". */
- date_tm.tm_mon = day_view->longest_month_name;
- date_tm.tm_mday = days[date_tm.tm_mon]
- + day_view->longest_weekday_name;
- date_tm.tm_wday = day_view->longest_weekday_name;
- date_tm.tm_isdst = -1;
- /* strftime format %A = full weekday name, %d = day of month,
- %B = full month name. Don't use any other specifiers. */
- strftime (buffer, sizeof (buffer), _("%A %d %B"), &date_tm);
- if (gdk_string_width (font, buffer) < max_width) {
- day_view->date_format = E_DAY_VIEW_DATE_FULL;
- return;
- }
-
- /* Try "Thu 21 Jan". */
- date_tm.tm_mon = day_view->longest_abbreviated_month_name;
- date_tm.tm_mday = days[date_tm.tm_mon]
- + day_view->longest_abbreviated_weekday_name;
- date_tm.tm_wday = day_view->longest_abbreviated_weekday_name;
- date_tm.tm_isdst = -1;
- /* strftime format %a = abbreviated weekday name, %d = day of month,
- %b = abbreviated month name. Don't use any other specifiers. */
- strftime (buffer, sizeof (buffer), _("%a %d %b"), &date_tm);
- if (gdk_string_width (font, buffer) < max_width) {
- day_view->date_format = E_DAY_VIEW_DATE_ABBREVIATED;
- return;
- }
-
- /* Try "23 Jan". */
- date_tm.tm_mon = day_view->longest_abbreviated_month_name;
- date_tm.tm_mday = 23;
- date_tm.tm_wday = 0;
- date_tm.tm_isdst = -1;
- /* strftime format %d = day of month, %b = abbreviated month name.
- Don't use any other specifiers. */
- strftime (buffer, sizeof (buffer), _("%d %b"), &date_tm);
- if (gdk_string_width (font, buffer) < max_width)
- day_view->date_format = E_DAY_VIEW_DATE_NO_WEEKDAY;
- else
- day_view->date_format = E_DAY_VIEW_DATE_SHORT;
-}
-
-
-static gint
-e_day_view_focus_in (GtkWidget *widget, GdkEventFocus *event)
-{
- EDayView *day_view;
-
- g_return_val_if_fail (widget != NULL, FALSE);
- g_return_val_if_fail (E_IS_DAY_VIEW (widget), FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
- day_view = E_DAY_VIEW (widget);
-
- GTK_WIDGET_SET_FLAGS (widget, GTK_HAS_FOCUS);
-
- gtk_widget_queue_draw (day_view->top_canvas);
- gtk_widget_queue_draw (day_view->main_canvas);
-
- return FALSE;
-}
-
-
-static gint
-e_day_view_focus_out (GtkWidget *widget, GdkEventFocus *event)
-{
- EDayView *day_view;
-
- g_return_val_if_fail (widget != NULL, FALSE);
- g_return_val_if_fail (E_IS_DAY_VIEW (widget), FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
- day_view = E_DAY_VIEW (widget);
-
- GTK_WIDGET_UNSET_FLAGS (widget, GTK_HAS_FOCUS);
-
- gtk_widget_queue_draw (day_view->top_canvas);
- gtk_widget_queue_draw (day_view->main_canvas);
-
- return FALSE;
-}
-
-
-void
-e_day_view_set_calendar (EDayView *day_view,
- GnomeCalendar *calendar)
-{
- g_return_if_fail (E_IS_DAY_VIEW (day_view));
-
- day_view->calendar = calendar;
-}
-
-
-/* Callback used when a component is updated in the live query */
-static void
-query_obj_updated_cb (CalQuery *query, const char *uid,
- gboolean query_in_progress, int n_scanned, int total,
- gpointer data)
-{
- EDayView *day_view;
- EDayViewEvent *event;
- CalComponent *comp;
- CalClientGetStatus status;
- gint day, event_num;
-
- day_view = E_DAY_VIEW (data);
-
- /* If our time hasn't been set yet, just return. */
- if (day_view->lower == 0 && day_view->upper == 0)
- return;
-
- /* Get the event from the server. */
- status = cal_client_get_object (day_view->client, uid, &comp);
-
- switch (status) {
- case CAL_CLIENT_GET_SUCCESS:
- /* Everything is fine */
- break;
-
- case CAL_CLIENT_GET_SYNTAX_ERROR:
- g_message ("query_obj_updated_cb(): Syntax error when getting object `%s'", uid);
- return;
-
- case CAL_CLIENT_GET_NOT_FOUND:
- /* The object is no longer in the server, so do nothing */
- return;
-
- default:
- g_assert_not_reached ();
- return;
- }
-
- /* If the event already exists and the dates didn't change, we can
- update the event fairly easily without changing the events arrays
- or computing a new layout. */
- if (e_day_view_find_event_from_uid (day_view, uid, &day, &event_num)) {
- if (day == E_DAY_VIEW_LONG_EVENT)
- event = &g_array_index (day_view->long_events,
- EDayViewEvent, event_num);
- else
- event = &g_array_index (day_view->events[day],
- EDayViewEvent, event_num);
-
- if (!cal_component_has_recurrences (comp)
- && !cal_component_has_recurrences (event->comp)
- && cal_component_event_dates_match (comp, event->comp)) {
-#if 0
- g_print ("updated object's dates unchanged\n");
-#endif
- e_day_view_foreach_event_with_uid (day_view, uid, e_day_view_update_event_cb, comp);
- gtk_object_unref (GTK_OBJECT (comp));
- gtk_widget_queue_draw (day_view->top_canvas);
- gtk_widget_queue_draw (day_view->main_canvas);
- return;
- }
-
- /* The dates have changed, so we need to remove the
- old occurrrences before adding the new ones. */
-#if 0
- g_print ("dates changed - removing occurrences\n");
-#endif
- e_day_view_foreach_event_with_uid (day_view, uid,
- e_day_view_remove_event_cb,
- NULL);
- }
-
- /* Add the occurrences of the event. */
- cal_recur_generate_instances (comp, day_view->lower,
- day_view->upper,
- e_day_view_add_event,
- day_view);
- gtk_object_unref (GTK_OBJECT (comp));
-
- e_day_view_check_layout (day_view);
-
- gtk_widget_queue_draw (day_view->top_canvas);
- gtk_widget_queue_draw (day_view->main_canvas);
-}
-
-/* Callback used when a component is removed from the live query */
-static void
-query_obj_removed_cb (CalQuery *query, const char *uid, gpointer data)
-{
- EDayView *day_view;
-
- day_view = E_DAY_VIEW (data);
-
- e_day_view_foreach_event_with_uid (day_view, uid,
- e_day_view_remove_event_cb, NULL);
-
- e_day_view_check_layout (day_view);
- gtk_widget_queue_draw (day_view->top_canvas);
- gtk_widget_queue_draw (day_view->main_canvas);
-}
-
-/* Callback used when a query ends */
-static void
-query_query_done_cb (CalQuery *query, CalQueryDoneStatus status, const char *error_str, gpointer data)
-{
- EDayView *day_view;
-
- day_view = E_DAY_VIEW (data);
-
- /* FIXME */
-
- if (status != CAL_QUERY_DONE_SUCCESS)
- fprintf (stderr, "query done: %s\n", error_str);
-}
-
-/* Callback used when an evaluation error occurs when running a query */
-static void
-query_eval_error_cb (CalQuery *query, const char *error_str, gpointer data)
-{
- EDayView *day_view;
-
- day_view = E_DAY_VIEW (data);
-
- /* FIXME */
-
- fprintf (stderr, "eval error: %s\n", error_str);
-}
-
-
-/* Builds a complete query sexp for the day view by adding the predicates to
- * filter only for VEVENTS that fit in the day view's time range.
- */
-static char *
-adjust_query_sexp (EDayView *day_view, const char *sexp)
-{
- char *start, *end;
- char *new_sexp;
-
- /* If the dates have not been set yet, we just want an empty query. */
- if (day_view->lower == 0 || day_view->upper == 0)
- return g_strdup ("#f");
-
- start = isodate_from_time_t (day_view->lower);
- end = isodate_from_time_t (day_view->upper);
-
- new_sexp = g_strdup_printf ("(and (= (get-vtype) \"VEVENT\")"
- " (occur-in-time-range? (make-time \"%s\")"
- " (make-time \"%s\"))"
- " %s)",
- start, end,
- sexp);
-
- g_free (start);
- g_free (end);
-
- return new_sexp;
-}
-
-
-/* Restarts a query for the day view */
-static void
-update_query (EDayView *day_view)
-{
- char *real_sexp;
-
- e_day_view_free_events (day_view);
- gtk_widget_queue_draw (day_view->top_canvas);
- gtk_widget_queue_draw (day_view->main_canvas);
-
- if (!(day_view->client
- && cal_client_get_load_state (day_view->client) == CAL_CLIENT_LOAD_LOADED))
- return;
-
- if (day_view->query) {
- gtk_signal_disconnect_by_data (GTK_OBJECT (day_view->query), day_view);
- gtk_object_unref (GTK_OBJECT (day_view->query));
- }
-
- g_assert (day_view->sexp != NULL);
- real_sexp = adjust_query_sexp (day_view, day_view->sexp);
-
- day_view->query = cal_client_get_query (day_view->client, real_sexp);
- g_free (real_sexp);
-
- if (!day_view->query) {
- g_message ("update_query(): Could not create the query");
- return;
- }
-
- gtk_signal_connect (GTK_OBJECT (day_view->query), "obj_updated",
- GTK_SIGNAL_FUNC (query_obj_updated_cb), day_view);
- gtk_signal_connect (GTK_OBJECT (day_view->query), "obj_removed",
- GTK_SIGNAL_FUNC (query_obj_removed_cb), day_view);
- gtk_signal_connect (GTK_OBJECT (day_view->query), "query_done",
- GTK_SIGNAL_FUNC (query_query_done_cb), day_view);
- gtk_signal_connect (GTK_OBJECT (day_view->query), "eval_error",
- GTK_SIGNAL_FUNC (query_eval_error_cb), day_view);
-}
-
-/* Callback used when the calendar client finishes opening */
-static void
-cal_opened_cb (CalClient *client, CalClientOpenStatus status, gpointer data)
-{
- EDayView *day_view;
-
- day_view = E_DAY_VIEW (data);
-
- if (status != CAL_CLIENT_OPEN_SUCCESS)
- return;
-
- update_query (day_view);
-}
-
-/**
- * e_day_view_set_cal_client:
- * @day_view: A day view.
- * @client: A calendar client interface object.
- *
- * Sets the calendar client interface object that a day view will monitor.
- **/
-void
-e_day_view_set_cal_client (EDayView *day_view,
- CalClient *client)
-{
- g_return_if_fail (day_view != NULL);
- g_return_if_fail (E_IS_DAY_VIEW (day_view));
-
- if (client == day_view->client)
- return;
-
- if (client)
- g_return_if_fail (IS_CAL_CLIENT (client));
-
- if (client)
- gtk_object_ref (GTK_OBJECT (client));
-
- if (day_view->client) {
- gtk_signal_disconnect_by_data (GTK_OBJECT (day_view->client), day_view);
- gtk_object_unref (GTK_OBJECT (day_view->client));
- }
-
- day_view->client = client;
-
- if (day_view->client) {
- if (cal_client_get_load_state (day_view->client) == CAL_CLIENT_LOAD_LOADED)
- update_query (day_view);
- else
- gtk_signal_connect (GTK_OBJECT (day_view->client), "cal_opened",
- GTK_SIGNAL_FUNC (cal_opened_cb), day_view);
- }
-}
-
-/**
- * e_day_view_set_query:
- * @day_view: A day view.
- * @sexp: S-expression that defines the query.
- *
- * Sets the query sexp that the day view will use for filtering the displayed
- * events.
- **/
-void
-e_day_view_set_query (EDayView *day_view, const char *sexp)
-{
- g_return_if_fail (day_view != NULL);
- g_return_if_fail (E_IS_DAY_VIEW (day_view));
- g_return_if_fail (sexp != NULL);
-
- if (day_view->sexp)
- g_free (day_view->sexp);
-
- day_view->sexp = g_strdup (sexp);
-
- update_query (day_view);
-}
-
-
-static gboolean
-e_day_view_update_event_cb (EDayView *day_view,
- gint day,
- gint event_num,
- gpointer data)
-{
- EDayViewEvent *event;
- CalComponent *comp;
-
- comp = data;
-#if 0
- g_print ("In e_day_view_update_event_cb day:%i event_num:%i\n",
- day, event_num);
-#endif
- if (day == E_DAY_VIEW_LONG_EVENT) {
- event = &g_array_index (day_view->long_events, EDayViewEvent,
- event_num);
- } else {
- event = &g_array_index (day_view->events[day], EDayViewEvent,
- event_num);
- }
-
- gtk_object_unref (GTK_OBJECT (event->comp));
- event->comp = comp;
- gtk_object_ref (GTK_OBJECT (comp));
-
- if (day == E_DAY_VIEW_LONG_EVENT) {
- e_day_view_update_long_event_label (day_view, event_num);
- e_day_view_reshape_long_event (day_view, event_num);
- } else {
- e_day_view_update_event_label (day_view, day, event_num);
- e_day_view_reshape_day_event (day_view, day, event_num);
- }
- return TRUE;
-}
-
-
-/* This calls a given function for each event instance (in both views).
- If the callback returns FALSE the iteration is stopped.
- Note that it is safe for the callback to remove the event (since we
- step backwards through the arrays). */
-static void
-e_day_view_foreach_event (EDayView *day_view,
- EDayViewForeachEventCallback callback,
- gpointer data)
-{
- EDayViewEvent *event;
- gint day, event_num;
-
- for (day = 0; day < day_view->days_shown; day++) {
- for (event_num = day_view->events[day]->len - 1;
- event_num >= 0;
- event_num--) {
- event = &g_array_index (day_view->events[day],
- EDayViewEvent, event_num);
-
- if (!(*callback) (day_view, day, event_num, data))
- return;
- }
- }
-
- for (event_num = day_view->long_events->len - 1;
- event_num >= 0;
- event_num--) {
- event = &g_array_index (day_view->long_events,
- EDayViewEvent, event_num);
-
- if (!(*callback) (day_view, E_DAY_VIEW_LONG_EVENT, event_num,
- data))
- return;
- }
-}
-
-
-/* This calls a given function for each event instance that matches the given
- uid. If the callback returns FALSE the iteration is stopped.
- Note that it is safe for the callback to remove the event (since we
- step backwards through the arrays). */
-static void
-e_day_view_foreach_event_with_uid (EDayView *day_view,
- const gchar *uid,
- EDayViewForeachEventCallback callback,
- gpointer data)
-{
- EDayViewEvent *event;
- gint day, event_num;
- const char *u;
-
- for (day = 0; day < day_view->days_shown; day++) {
- for (event_num = day_view->events[day]->len - 1;
- event_num >= 0;
- event_num--) {
- event = &g_array_index (day_view->events[day],
- EDayViewEvent, event_num);
-
- cal_component_get_uid (event->comp, &u);
- if (uid && !strcmp (uid, u)) {
- if (!(*callback) (day_view, day, event_num,
- data))
- return;
- }
- }
- }
-
- for (event_num = day_view->long_events->len - 1;
- event_num >= 0;
- event_num--) {
- event = &g_array_index (day_view->long_events,
- EDayViewEvent, event_num);
-
- cal_component_get_uid (event->comp, &u);
- if (u && !strcmp (uid, u)) {
- if (!(*callback) (day_view, E_DAY_VIEW_LONG_EVENT,
- event_num, data))
- return;
- }
- }
-}
-
-
-static gboolean
-e_day_view_remove_event_cb (EDayView *day_view,
- gint day,
- gint event_num,
- gpointer data)
-{
- EDayViewEvent *event;
-
-#if 0
- g_print ("In e_day_view_remove_event_cb day:%i event_num:%i\n",
- day, event_num);
-#endif
-
- if (day == E_DAY_VIEW_LONG_EVENT)
- event = &g_array_index (day_view->long_events,
- EDayViewEvent, event_num);
- else
- event = &g_array_index (day_view->events[day],
- EDayViewEvent, event_num);
-
- /* If we were editing this event, set editing_event_num to -1 so
- on_editing_stopped doesn't try to update the event. */
- if (day_view->editing_event_day == day
- && day_view->editing_event_num == event_num)
- day_view->editing_event_day = -1;
-
- if (event->canvas_item)
- gtk_object_destroy (GTK_OBJECT (event->canvas_item));
- gtk_object_unref (GTK_OBJECT (event->comp));
-
- if (day == E_DAY_VIEW_LONG_EVENT) {
- g_array_remove_index (day_view->long_events, event_num);
- day_view->long_events_need_layout = TRUE;
- } else {
- g_array_remove_index (day_view->events[day], event_num);
- day_view->need_layout[day] = TRUE;
- }
- return TRUE;
-}
-
-
-/* This updates the text shown for an event. If the event start or end do not
- lie on a row boundary, the time is displayed before the summary. */
-static void
-e_day_view_update_event_label (EDayView *day_view,
- gint day,
- gint event_num)
-{
- EDayViewEvent *event;
- char *text, *start_suffix, *end_suffix;
- gboolean free_text = FALSE, editing_event = FALSE;
- gint offset;
- gint start_hour, start_display_hour, start_minute, start_suffix_width;
- gint end_hour, end_display_hour, end_minute, end_suffix_width;
- CalComponentText summary;
-
- event = &g_array_index (day_view->events[day], EDayViewEvent,
- event_num);
-
- /* If the event isn't visible just return. */
- if (!event->canvas_item)
- return;
-
- cal_component_get_summary (event->comp, &summary);
- text = summary.value ? (char*) summary.value : "";
-
- if (day_view->editing_event_day == day
- && day_view->editing_event_num == event_num)
- editing_event = TRUE;
-
- if (!editing_event
- && (event->start_minute % day_view->mins_per_row != 0
- || (day_view->show_event_end_times
- && event->end_minute % day_view->mins_per_row != 0))) {
- offset = day_view->first_hour_shown * 60
- + day_view->first_minute_shown;
- start_minute = offset + event->start_minute;
- end_minute = offset + event->end_minute;
-
- start_hour = start_minute / 60;
- start_minute = start_minute % 60;
-
- end_hour = end_minute / 60;
- end_minute = end_minute % 60;
-
- e_day_view_convert_time_to_display (day_view, start_hour,
- &start_display_hour,
- &start_suffix,
- &start_suffix_width);
- e_day_view_convert_time_to_display (day_view, end_hour,
- &end_display_hour,
- &end_suffix,
- &end_suffix_width);
-
- if (day_view->use_24_hour_format) {
- if (day_view->show_event_end_times) {
- /* 24 hour format with end time. */
- text = g_strdup_printf
- ("%2i:%02i-%2i:%02i %s",
- start_display_hour, start_minute,
- end_display_hour, end_minute,
- text);
- } else {
- /* 24 hour format without end time. */
- text = g_strdup_printf
- ("%2i:%02i %s",
- start_display_hour, start_minute,
- text);
- }
- } else {
- if (day_view->show_event_end_times) {
- /* 12 hour format with end time. */
- text = g_strdup_printf
- ("%2i:%02i%s-%2i:%02i%s %s",
- start_display_hour, start_minute,
- start_suffix,
- end_display_hour, end_minute,
- end_suffix,
- text);
- } else {
- /* 12 hour format without end time. */
- text = g_strdup_printf
- ("%2i:%02i%s %s",
- start_display_hour, start_minute,
- start_suffix,
- text);
- }
- }
-
- free_text = TRUE;
- }
-
- gnome_canvas_item_set (event->canvas_item,
- "text", text,
- NULL);
-
- if (free_text)
- g_free (text);
-}
-
-
-static void
-e_day_view_update_long_event_label (EDayView *day_view,
- gint event_num)
-{
- EDayViewEvent *event;
- CalComponentText summary;
-
- event = &g_array_index (day_view->long_events, EDayViewEvent,
- event_num);
-
- /* If the event isn't visible just return. */
- if (!event->canvas_item)
- return;
-
- cal_component_get_summary (event->comp, &summary);
- gnome_canvas_item_set (event->canvas_item,
- "text", summary.value ? summary.value : "",
- NULL);
-}
-
-
-/* Finds the day and index of the event with the given canvas item.
- If is is a long event, -1 is returned as the day.
- Returns TRUE if the event was found. */
-static gboolean
-e_day_view_find_event_from_item (EDayView *day_view,
- GnomeCanvasItem *item,
- gint *day_return,
- gint *event_num_return)
-{
- EDayViewEvent *event;
- gint day, event_num;
-
- for (day = 0; day < day_view->days_shown; day++) {
- for (event_num = 0; event_num < day_view->events[day]->len;
- event_num++) {
- event = &g_array_index (day_view->events[day],
- EDayViewEvent, event_num);
- if (event->canvas_item == item) {
- *day_return = day;
- *event_num_return = event_num;
- return TRUE;
- }
- }
- }
-
- for (event_num = 0; event_num < day_view->long_events->len;
- event_num++) {
- event = &g_array_index (day_view->long_events,
- EDayViewEvent, event_num);
- if (event->canvas_item == item) {
- *day_return = E_DAY_VIEW_LONG_EVENT;
- *event_num_return = event_num;
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-
-/* Finds the day and index of the event with the given uid.
- If is is a long event, E_DAY_VIEW_LONG_EVENT is returned as the day.
- Returns TRUE if an event with the uid was found.
- Note that for recurring events there may be several EDayViewEvents, one
- for each instance, all with the same iCalObject and uid. So only use this
- function if you know the event doesn't recur or you are just checking to
- see if any events with the uid exist. */
-static gboolean
-e_day_view_find_event_from_uid (EDayView *day_view,
- const gchar *uid,
- gint *day_return,
- gint *event_num_return)
-{
- EDayViewEvent *event;
- gint day, event_num;
- const char *u;
-
- for (day = 0; day < day_view->days_shown; day++) {
- for (event_num = 0; event_num < day_view->events[day]->len;
- event_num++) {
- event = &g_array_index (day_view->events[day],
- EDayViewEvent, event_num);
-
- cal_component_get_uid (event->comp, &u);
- if (u && !strcmp (uid, u)) {
- *day_return = day;
- *event_num_return = event_num;
- return TRUE;
- }
- }
- }
-
- for (event_num = 0; event_num < day_view->long_events->len;
- event_num++) {
- event = &g_array_index (day_view->long_events,
- EDayViewEvent, event_num);
-
- cal_component_get_uid (event->comp, &u);
- if (u && !strcmp (uid, u)) {
- *day_return = E_DAY_VIEW_LONG_EVENT;
- *event_num_return = event_num;
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-
-/* This sets the selected time range. The EDayView will show the day or week
- corresponding to the start time. If the start_time & end_time are not equal
- and are both visible in the view, then the selection is set to those times,
- otherwise it is set to 1 hour from the start of the working day. */
-void
-e_day_view_set_selected_time_range (EDayView *day_view,
- time_t start_time,
- time_t end_time)
-{
- time_t lower;
- gint start_row, start_col, end_row, end_col;
- gboolean need_redraw = FALSE, start_in_grid, end_in_grid;
-
- g_return_if_fail (E_IS_DAY_VIEW (day_view));
-
- /* Calculate the first day that should be shown, based on start_time
- and the days_shown setting. If we are showing 1 day it is just the
- start of the day given by start_time, otherwise it is the previous
- work-week start day. */
- if (!day_view->work_week_view) {
- lower = time_day_begin (start_time);
- } else {
- lower = e_day_view_find_work_week_start (day_view, start_time);
- }
-
- /* See if we need to change the days shown. */
- if (lower != day_view->lower) {
- e_day_view_recalc_day_starts (day_view, lower);
- update_query (day_view);
- }
-
- /* Set the selection. */
- start_in_grid = e_day_view_convert_time_to_grid_position (day_view,
- start_time,
- &start_col,
- &start_row);
- end_in_grid = e_day_view_convert_time_to_grid_position (day_view,
- end_time - 60,
- &end_col,
- &end_row);
-
- /* If either of the times isn't in the grid, or the selection covers
- an entire day, we set the selection to 1 row from the start of the
- working day, in the day corresponding to the start time. */
- if (!start_in_grid || !end_in_grid
- || (start_row == 0 && end_row == day_view->rows - 1)) {
- end_col = start_col;
-
- start_row = e_day_view_convert_time_to_row (day_view, day_view->work_day_start_hour, day_view->work_day_start_minute);
- start_row = CLAMP (start_row, 0, day_view->rows - 1);
- end_row = start_row;
- }
-
- if (start_row != day_view->selection_start_row
- || start_col != day_view->selection_start_day) {
- need_redraw = TRUE;
- day_view->selection_in_top_canvas = FALSE;
- day_view->selection_start_row = start_row;
- day_view->selection_start_day = start_col;
- }
-
- if (end_row != day_view->selection_end_row
- || end_col != day_view->selection_end_day) {
- need_redraw = TRUE;
- day_view->selection_in_top_canvas = FALSE;
- day_view->selection_end_row = end_row;
- day_view->selection_end_day = end_col;
- }
-
- if (need_redraw) {
- gtk_widget_queue_draw (day_view->top_canvas);
- gtk_widget_queue_draw (day_view->main_canvas);
- }
-}
-
-
-/* Finds the start of the working week which includes the given time. */
-static time_t
-e_day_view_find_work_week_start (EDayView *day_view,
- time_t start_time)
-{
- GDate date;
- gint weekday, day, i, offset;
-
- g_date_clear (&date, 1);
- g_date_set_time (&date, start_time);
-
- /* The start of the work-week is the first working day after the
- week start day. */
-
- /* Get the weekday corresponding to start_time, 0 (Sun) to 6 (Sat). */
- weekday = g_date_weekday (&date) % 7;
-
- /* Calculate the first working day of the week, 0 (Sun) to 6 (Sat).
- It will automatically default to the week start day if no days
- are set as working days. */
- day = (day_view->week_start_day + 1) % 7;
- for (i = 0; i < 7; i++) {
- if (day_view->working_days & (1 << day))
- break;
- day = (day + 1) % 7;
- }
-
- /* Calculate how many days we need to go back to the first workday. */
- offset = (weekday + 7 - day) % 7;
-
- g_date_subtract_days (&date, offset);
-
- return time_from_day (g_date_year (&date),
- g_date_month (&date) - 1,
- g_date_day (&date));
-}
-
-
-/* Returns the selected time range. */
-void
-e_day_view_get_selected_time_range (EDayView *day_view,
- time_t *start_time,
- time_t *end_time)
-{
- gint start_col, start_row, end_col, end_row;
- time_t start, end;
-
- start_col = day_view->selection_start_day;
- start_row = day_view->selection_start_row;
- end_col = day_view->selection_end_day;
- end_row = day_view->selection_end_row;
-
- if (start_col == -1) {
- start_col = 0;
- start_row = 0;
- end_col = 0;
- end_row = 0;
- }
-
- /* Check if the selection is only in the top canvas, in which case
- we can simply use the day_starts array. */
- if (day_view->selection_in_top_canvas) {
- start = day_view->day_starts[start_col];
- end = day_view->day_starts[end_col + 1];
- } else {
- /* Convert the start col + row into a time. */
- start = e_day_view_convert_grid_position_to_time (day_view, start_col, start_row);
- end = e_day_view_convert_grid_position_to_time (day_view, end_col, end_row + 1);
- }
-
- if (start_time)
- *start_time = start;
-
- if (end_time)
- *end_time = end;
-}
-
-
-static void
-e_day_view_recalc_day_starts (EDayView *day_view,
- time_t start_time)
-{
- gint day;
-
- day_view->day_starts[0] = start_time;
- for (day = 1; day <= day_view->days_shown; day++) {
- day_view->day_starts[day] = time_add_day (day_view->day_starts[day - 1], 1);
- }
-
- day_view->lower = start_time;
- day_view->upper = day_view->day_starts[day_view->days_shown];
-}
-
-
-/* Whether we are displaying a work-week, in which case the display always
- starts on the first day of the working week. */
-gboolean
-e_day_view_get_work_week_view (EDayView *day_view)
-{
- g_return_val_if_fail (E_IS_DAY_VIEW (day_view), FALSE);
-
- return day_view->work_week_view;
-}
-
-
-void
-e_day_view_set_work_week_view (EDayView *day_view,
- gboolean work_week_view)
-{
- g_return_if_fail (E_IS_DAY_VIEW (day_view));
-
- if (day_view->work_week_view == work_week_view)
- return;
-
- day_view->work_week_view = work_week_view;
-
- if (day_view->work_week_view)
- e_day_view_recalc_work_week (day_view);
-}
-
-
-gint
-e_day_view_get_days_shown (EDayView *day_view)
-{
- g_return_val_if_fail (E_IS_DAY_VIEW (day_view), -1);
-
- return day_view->days_shown;
-}
-
-
-void
-e_day_view_set_days_shown (EDayView *day_view,
- gint days_shown)
-{
- g_return_if_fail (E_IS_DAY_VIEW (day_view));
- g_return_if_fail (days_shown >= 1);
- g_return_if_fail (days_shown <= E_DAY_VIEW_MAX_DAYS);
-
- if (day_view->days_shown == days_shown)
- return;
-
- day_view->days_shown = days_shown;
-
- /* If the date isn't set, just return. */
- if (day_view->lower == 0 && day_view->upper == 0)
- return;
-
- e_day_view_recalc_day_starts (day_view, day_view->lower);
- e_day_view_recalc_cell_sizes (day_view);
-
- update_query (day_view);
-}
-
-
-gint
-e_day_view_get_mins_per_row (EDayView *day_view)
-{
- g_return_val_if_fail (E_IS_DAY_VIEW (day_view), -1);
-
- return day_view->mins_per_row;
-}
-
-
-void
-e_day_view_set_mins_per_row (EDayView *day_view,
- gint mins_per_row)
-{
- gint day;
-
- g_return_if_fail (E_IS_DAY_VIEW (day_view));
-
- if (mins_per_row != 5 && mins_per_row != 10 && mins_per_row != 15
- && mins_per_row != 30 && mins_per_row != 60) {
- g_warning ("Invalid minutes per row setting");
- return;
- }
-
- if (day_view->mins_per_row == mins_per_row)
- return;
-
- day_view->mins_per_row = mins_per_row;
- e_day_view_recalc_num_rows (day_view);
-
- /* If we aren't visible, we'll sort it out later. */
- if (!GTK_WIDGET_VISIBLE (day_view))
- return;
-
- for (day = 0; day < E_DAY_VIEW_MAX_DAYS; day++)
- day_view->need_layout[day] = TRUE;
-
- /* We need to update all the day event labels since the start & end
- times may or may not be on row boundaries any more. */
- e_day_view_foreach_event (day_view,
- e_day_view_set_show_times_cb, NULL);
-
- /* We must layout the events before updating the scroll region, since
- that will result in a redraw which would crash otherwise. */
- e_day_view_check_layout (day_view);
- gtk_widget_queue_draw (day_view->time_canvas);
- gtk_widget_queue_draw (day_view->main_canvas);
-
- e_day_view_update_scroll_regions (day_view);
-}
-
-
-/* This specifies the working days in the week. The value is a bitwise
- combination of day flags. Defaults to Mon-Fri. */
-EDayViewDays
-e_day_view_get_working_days (EDayView *day_view)
-{
- g_return_val_if_fail (E_IS_DAY_VIEW (day_view), 0);
-
- return day_view->working_days;
-}
-
-
-void
-e_day_view_set_working_days (EDayView *day_view,
- EDayViewDays days)
-{
- g_return_if_fail (E_IS_DAY_VIEW (day_view));
-
- if (day_view->working_days == days)
- return;
-
- day_view->working_days = days;
-
- if (day_view->work_week_view)
- e_day_view_recalc_work_week (day_view);
-
- /* We have to do this, as the new working days may have no effect on
- the days shown, but we still want the background color to change. */
- gtk_widget_queue_draw (day_view->main_canvas);
-}
-
-
-static void
-e_day_view_recalc_work_week_days_shown (EDayView *day_view)
-{
- gint first_day, last_day, i, days_shown;
- gboolean has_working_days = FALSE;
-
- /* Find the first working day in the week, 0 (Sun) to 6 (Sat). */
- first_day = (day_view->week_start_day + 1) % 7;
- for (i = 0; i < 7; i++) {
- if (day_view->working_days & (1 << first_day)) {
- has_working_days = TRUE;
- break;
- }
- first_day = (first_day + 1) % 7;
- }
-
- if (has_working_days) {
- /* Now find the last working day of the week, backwards. */
- last_day = day_view->week_start_day % 7;
- for (i = 0; i < 7; i++) {
- if (day_view->working_days & (1 << last_day))
- break;
- last_day = (last_day + 6) % 7;
- }
- /* Now calculate the days we need to show to include all the
- working days in the week. Add 1 to make it inclusive. */
- days_shown = (last_day + 7 - first_day) % 7 + 1;
- } else {
- /* If no working days are set, just use 7. */
- days_shown = 7;
- }
-
- e_day_view_set_days_shown (day_view, days_shown);
-}
-
-
-/* The start and end time of the working day. This only affects the background
- colors. */
-void
-e_day_view_get_working_day (EDayView *day_view,
- gint *start_hour,
- gint *start_minute,
- gint *end_hour,
- gint *end_minute)
-{
- g_return_if_fail (E_IS_DAY_VIEW (day_view));
-
- *start_hour = day_view->work_day_start_hour;
- *start_minute = day_view->work_day_start_minute;
- *end_hour = day_view->work_day_end_hour;
- *end_minute = day_view->work_day_end_minute;
-}
-
-
-void
-e_day_view_set_working_day (EDayView *day_view,
- gint start_hour,
- gint start_minute,
- gint end_hour,
- gint end_minute)
-{
- g_return_if_fail (E_IS_DAY_VIEW (day_view));
-
- day_view->work_day_start_hour = start_hour;
- day_view->work_day_start_minute = start_minute;
- day_view->work_day_end_hour = end_hour;
- day_view->work_day_end_minute = end_minute;
-
- gtk_widget_queue_draw (day_view->main_canvas);
-}
-
-
-/* Whether we use 12-hour of 24-hour format. */
-gboolean
-e_day_view_get_24_hour_format (EDayView *day_view)
-{
- g_return_val_if_fail (E_IS_DAY_VIEW (day_view), FALSE);
-
- return day_view->use_24_hour_format;
-}
-
-
-void
-e_day_view_set_24_hour_format (EDayView *day_view,
- gboolean use_24_hour)
-{
- g_return_if_fail (E_IS_DAY_VIEW (day_view));
-
- if (day_view->use_24_hour_format == use_24_hour)
- return;
-
- day_view->use_24_hour_format = use_24_hour;
-
- /* We need to update all the text in the events since they may contain
- the time in the old format. */
- e_day_view_foreach_event (day_view, e_day_view_set_show_times_cb,
- NULL);
-
- /* FIXME: We need to re-layout the top canvas since the time
- format affects the sizes. */
- gtk_widget_queue_draw (day_view->time_canvas);
- gtk_widget_queue_draw (day_view->top_canvas);
-}
-
-
-/* Whether we display event end times in the main canvas. */
-gboolean
-e_day_view_get_show_event_end_times (EDayView *day_view)
-{
- g_return_val_if_fail (E_IS_DAY_VIEW (day_view), TRUE);
-
- return day_view->show_event_end_times;
-}
-
-
-void
-e_day_view_set_show_event_end_times (EDayView *day_view,
- gboolean show)
-{
- g_return_if_fail (E_IS_DAY_VIEW (day_view));
-
- if (day_view->show_event_end_times != show) {
- day_view->show_event_end_times = show;
- e_day_view_foreach_event (day_view,
- e_day_view_set_show_times_cb, NULL);
- }
-}
-
-
-/* This is a callback used to update all day event labels. */
-static gboolean
-e_day_view_set_show_times_cb (EDayView *day_view,
- gint day,
- gint event_num,
- gpointer data)
-{
- if (day != E_DAY_VIEW_LONG_EVENT) {
- e_day_view_update_event_label (day_view, day, event_num);
- }
-
- return TRUE;
-}
-
-
-/* The first day of the week, 0 (Monday) to 6 (Sunday). */
-gint
-e_day_view_get_week_start_day (EDayView *day_view)
-{
- g_return_val_if_fail (E_IS_DAY_VIEW (day_view), 0);
-
- return day_view->week_start_day;
-}
-
-
-void
-e_day_view_set_week_start_day (EDayView *day_view,
- gint week_start_day)
-{
- g_return_if_fail (E_IS_DAY_VIEW (day_view));
- g_return_if_fail (week_start_day >= 0);
- g_return_if_fail (week_start_day < 7);
-
- if (day_view->week_start_day == week_start_day)
- return;
-
- day_view->week_start_day = week_start_day;
-
- if (day_view->work_week_view)
- e_day_view_recalc_work_week (day_view);
-}
-
-
-static void
-e_day_view_recalc_work_week (EDayView *day_view)
-{
- time_t lower;
-
- /* If we aren't showing the work week, just return. */
- if (!day_view->work_week_view)
- return;
-
- e_day_view_recalc_work_week_days_shown (day_view);
-
- /* If the date isn't set, just return. */
- if (day_view->lower == 0 && day_view->upper == 0)
- return;
-
- lower = e_day_view_find_work_week_start (day_view, day_view->lower);
- if (lower != day_view->lower) {
- /* Reset the selection, as it may disappear. */
- day_view->selection_start_day = -1;
-
- e_day_view_recalc_day_starts (day_view, lower);
- update_query (day_view);
-
- /* This updates the date navigator. */
- e_day_view_update_calendar_selection_time (day_view);
- }
-}
-
-
-static gboolean
-e_day_view_update_scroll_regions (EDayView *day_view)
-{
- gdouble old_x2, old_y2, new_x2, new_y2;
- gboolean need_reshape = FALSE;
-
- /* Set the scroll region of the time canvas to its allocated width,
- but with the height the same as the main canvas. */
- gnome_canvas_get_scroll_region (GNOME_CANVAS (day_view->time_canvas),
- NULL, NULL, &old_x2, &old_y2);
- new_x2 = day_view->time_canvas->allocation.width - 1;
- new_y2 = MAX (day_view->rows * day_view->row_height,
- day_view->main_canvas->allocation.height) - 1;
- if (old_x2 != new_x2 || old_y2 != new_y2)
- gnome_canvas_set_scroll_region (GNOME_CANVAS (day_view->time_canvas),
- 0, 0, new_x2, new_y2);
-
- /* Set the scroll region of the main canvas to its allocated width,
- but with the height depending on the number of rows needed. */
- gnome_canvas_get_scroll_region (GNOME_CANVAS (day_view->main_canvas),
- NULL, NULL, &old_x2, &old_y2);
- new_x2 = day_view->main_canvas->allocation.width - 1;
- if (old_x2 != new_x2 || old_y2 != new_y2) {
- need_reshape = TRUE;
- gnome_canvas_set_scroll_region (GNOME_CANVAS (day_view->main_canvas),
- 0, 0, new_x2, new_y2);
- }
-
- return need_reshape;
-}
-
-
-/* This recalculates the number of rows to display, based on the time range
- shown and the minutes per row. */
-static void
-e_day_view_recalc_num_rows (EDayView *day_view)
-{
- gint hours, minutes, total_minutes;
-
- hours = day_view->last_hour_shown - day_view->first_hour_shown;
- /* This could be negative but it works out OK. */
- minutes = day_view->last_minute_shown - day_view->first_minute_shown;
- total_minutes = hours * 60 + minutes;
- day_view->rows = total_minutes / day_view->mins_per_row;
-}
-
-
-/* Converts an hour and minute to a row in the canvas. Note that if we aren't
- showing all 24 hours of the day, the returned row may be negative or
- greater than day_view->rows. */
-gint
-e_day_view_convert_time_to_row (EDayView *day_view,
- gint hour,
- gint minute)
-{
- gint total_minutes, start_minute, offset;
-
- total_minutes = hour * 60 + minute;
- start_minute = day_view->first_hour_shown * 60
- + day_view->first_minute_shown;
- offset = total_minutes - start_minute;
- if (offset < 0)
- return -1;
- else
- return offset / day_view->mins_per_row;
-}
-
-
-/* Converts an hour and minute to a y coordinate in the canvas. */
-gint
-e_day_view_convert_time_to_position (EDayView *day_view,
- gint hour,
- gint minute)
-{
- gint total_minutes, start_minute, offset;
-
- total_minutes = hour * 60 + minute;
- start_minute = day_view->first_hour_shown * 60
- + day_view->first_minute_shown;
- offset = total_minutes - start_minute;
-
- return offset * day_view->row_height / day_view->mins_per_row;
-}
-
-
-static gboolean
-e_day_view_on_top_canvas_button_press (GtkWidget *widget,
- GdkEventButton *event,
- EDayView *day_view)
-{
- gint event_x, event_y, scroll_x, scroll_y, day, event_num;
- EDayViewPosition pos;
-
- /* Convert the coords to the main canvas window, or return if the
- window is not found. */
- if (!e_day_view_convert_event_coords (day_view, (GdkEvent*) event,
- GTK_LAYOUT (widget)->bin_window,
- &event_x, &event_y))
- return FALSE;
-
- /* The top canvas doesn't scroll, but just in case. */
- gnome_canvas_get_scroll_offsets (GNOME_CANVAS (widget),
- &scroll_x, &scroll_y);
- event_x += scroll_x;
- event_y += scroll_y;
-
- pos = e_day_view_convert_position_in_top_canvas (day_view,
- event_x, event_y,
- &day, &event_num);
-
- if (pos == E_DAY_VIEW_POS_OUTSIDE)
- return FALSE;
-
- if (pos != E_DAY_VIEW_POS_NONE)
- return e_day_view_on_long_event_button_press (day_view,
- event_num,
- event, pos,
- event_x,
- event_y);
-
- e_day_view_stop_editing_event (day_view);
-
- if (event->button == 1) {
- if (!GTK_WIDGET_HAS_FOCUS (day_view))
- gtk_widget_grab_focus (GTK_WIDGET (day_view));
-
- if (gdk_pointer_grab (GTK_LAYOUT (widget)->bin_window, FALSE,
- GDK_POINTER_MOTION_MASK
- | GDK_BUTTON_RELEASE_MASK,
- FALSE, NULL, event->time) == 0) {
- e_day_view_start_selection (day_view, day, -1);
- }
- } else if (event->button == 3) {
- if (!GTK_WIDGET_HAS_FOCUS (day_view))
- gtk_widget_grab_focus (GTK_WIDGET (day_view));
-
- e_day_view_on_event_right_click (day_view, event, -1, -1);
- }
-
- return TRUE;
-}
-
-
-static gboolean
-e_day_view_convert_event_coords (EDayView *day_view,
- GdkEvent *event,
- GdkWindow *window,
- gint *x_return,
- gint *y_return)
-{
- gint event_x, event_y, win_x, win_y;
- GdkWindow *event_window;;
-
- /* Get the event window, x & y from the appropriate event struct. */
- switch (event->type) {
- case GDK_BUTTON_PRESS:
- case GDK_2BUTTON_PRESS:
- case GDK_3BUTTON_PRESS:
- case GDK_BUTTON_RELEASE:
- event_x = event->button.x;
- event_y = event->button.y;
- event_window = event->button.window;
- break;
- case GDK_MOTION_NOTIFY:
- event_x = event->motion.x;
- event_y = event->motion.y;
- event_window = event->motion.window;
- break;
- default:
- /* Shouldn't get here. */
- g_assert_not_reached ();
- return FALSE;
- }
-
- while (event_window && event_window != window
- && event_window != GDK_ROOT_PARENT()) {
- gdk_window_get_position (event_window, &win_x, &win_y);
- event_x += win_x;
- event_y += win_y;
- event_window = gdk_window_get_parent (event_window);
- }
-
- *x_return = event_x;
- *y_return = event_y;
-
- if (event_window != window)
- g_warning ("Couldn't find event window\n");
-
- return (event_window == window) ? TRUE : FALSE;
-}
-
-
-static gboolean
-e_day_view_on_main_canvas_button_press (GtkWidget *widget,
- GdkEventButton *event,
- EDayView *day_view)
-{
- gint event_x, event_y, scroll_x, scroll_y, row, day, event_num;
- EDayViewPosition pos;
-
- /* Handle scroll wheel events */
- if (event->button == 4) {
- /* The wheel has been moved up, so scroll the canvas down. */
- e_day_view_scroll (day_view, E_DAY_VIEW_WHEEL_MOUSE_STEP_SIZE);
- return TRUE;
- }
- if (event->button == 5) {
- /* The wheel has been moved down, so scroll the canvas up. */
- e_day_view_scroll (day_view, -E_DAY_VIEW_WHEEL_MOUSE_STEP_SIZE);
- return TRUE;
- }
-
- /* Convert the coords to the main canvas window, or return if the
- window is not found. */
- if (!e_day_view_convert_event_coords (day_view, (GdkEvent*) event,
- GTK_LAYOUT (widget)->bin_window,
- &event_x, &event_y))
- return FALSE;
-
- gnome_canvas_get_scroll_offsets (GNOME_CANVAS (widget),
- &scroll_x, &scroll_y);
- event_x += scroll_x;
- event_y += scroll_y;
-
- /* Find out where the mouse is. */
- pos = e_day_view_convert_position_in_main_canvas (day_view,
- event_x, event_y,
- &day, &row,
- &event_num);
-
- if (pos == E_DAY_VIEW_POS_OUTSIDE)
- return FALSE;
-
- if (pos != E_DAY_VIEW_POS_NONE)
- return e_day_view_on_event_button_press (day_view, day,
- event_num, event, pos,
- event_x, event_y);
-
- e_day_view_stop_editing_event (day_view);
-
- /* Start the selection drag. */
- if (event->button == 1) {
- if (!GTK_WIDGET_HAS_FOCUS (day_view))
- gtk_widget_grab_focus (GTK_WIDGET (day_view));
-
- if (gdk_pointer_grab (GTK_LAYOUT (widget)->bin_window, FALSE,
- GDK_POINTER_MOTION_MASK
- | GDK_BUTTON_RELEASE_MASK,
- FALSE, NULL, event->time) == 0) {
- e_day_view_start_selection (day_view, day, row);
- }
- } else if (event->button == 3) {
- if (!GTK_WIDGET_HAS_FOCUS (day_view))
- gtk_widget_grab_focus (GTK_WIDGET (day_view));
-
- e_day_view_on_event_right_click (day_view, event, -1, -1);
- }
-
- return TRUE;
-}
-
-
-static gboolean
-e_day_view_on_time_canvas_button_press (GtkWidget *widget,
- GdkEventButton *event,
- EDayView *day_view)
-{
- /* Handle scroll wheel events */
- if (event->button == 4 || event->button == 5) {
- GtkAdjustment *adj = GTK_LAYOUT (day_view->main_canvas)->vadjustment;
- gfloat new_value;
-
- new_value = adj->value + ((event->button == 4) ?
- -adj->page_increment / 2:
- adj->page_increment / 2);
- new_value = CLAMP (new_value, adj->lower, adj->upper - adj->page_size);
- gtk_adjustment_set_value (adj, new_value);
-
- return TRUE;
- }
-
- return FALSE;
-}
-
-
-static gboolean
-e_day_view_on_long_event_button_press (EDayView *day_view,
- gint event_num,
- GdkEventButton *event,
- EDayViewPosition pos,
- gint event_x,
- gint event_y)
-{
- if (event->button == 1) {
- if (event->type == GDK_BUTTON_PRESS) {
- e_day_view_on_long_event_click (day_view, event_num,
- event, pos,
- event_x, event_y);
- return TRUE;
- } else if (event->type == GDK_2BUTTON_PRESS) {
- e_day_view_on_event_double_click (day_view, -1,
- event_num);
- return TRUE;
- }
- } else if (event->button == 3) {
- if (!GTK_WIDGET_HAS_FOCUS (day_view))
- gtk_widget_grab_focus (GTK_WIDGET (day_view));
-
- e_day_view_on_event_right_click (day_view, event,
- E_DAY_VIEW_LONG_EVENT,
- event_num);
- return TRUE;
- }
- return FALSE;
-}
-
-
-static gboolean
-e_day_view_on_event_button_press (EDayView *day_view,
- gint day,
- gint event_num,
- GdkEventButton *event,
- EDayViewPosition pos,
- gint event_x,
- gint event_y)
-{
- if (event->button == 1) {
- if (event->type == GDK_BUTTON_PRESS) {
- e_day_view_on_event_click (day_view, day, event_num,
- event, pos,
- event_x, event_y);
- return TRUE;
- } else if (event->type == GDK_2BUTTON_PRESS) {
- e_day_view_on_event_double_click (day_view, day,
- event_num);
- return TRUE;
- }
- } else if (event->button == 3) {
- if (!GTK_WIDGET_HAS_FOCUS (day_view))
- gtk_widget_grab_focus (GTK_WIDGET (day_view));
-
- e_day_view_on_event_right_click (day_view, event,
- day, event_num);
- return TRUE;
- }
- return FALSE;
-}
-
-
-static void
-e_day_view_on_long_event_click (EDayView *day_view,
- gint event_num,
- GdkEventButton *bevent,
- EDayViewPosition pos,
- gint event_x,
- gint event_y)
-{
- EDayViewEvent *event;
- gint start_day, end_day, day;
- gint item_x, item_y, item_w, item_h;
-
- event = &g_array_index (day_view->long_events, EDayViewEvent,
- event_num);
-
- /* Ignore clicks on the EText while editing. */
- if (pos == E_DAY_VIEW_POS_EVENT
- && E_TEXT (event->canvas_item)->editing)
- return;
-
- if (!(cal_component_has_recurrences (event->comp))
- && (pos == E_DAY_VIEW_POS_LEFT_EDGE
- || pos == E_DAY_VIEW_POS_RIGHT_EDGE)) {
- if (!e_day_view_find_long_event_days (day_view, event,
- &start_day, &end_day))
- return;
-
- /* Grab the keyboard focus, so the event being edited is saved
- and we can use the Escape key to abort the resize. */
- if (!GTK_WIDGET_HAS_FOCUS (day_view))
- gtk_widget_grab_focus (GTK_WIDGET (day_view));
-
- if (gdk_pointer_grab (GTK_LAYOUT (day_view->top_canvas)->bin_window, FALSE,
- GDK_POINTER_MOTION_MASK
- | GDK_BUTTON_RELEASE_MASK,
- FALSE, NULL, bevent->time) == 0) {
-
- day_view->resize_event_day = E_DAY_VIEW_LONG_EVENT;
- day_view->resize_event_num = event_num;
- day_view->resize_drag_pos = pos;
- day_view->resize_start_row = start_day;
- day_view->resize_end_row = end_day;
-
- /* Create the edit rect if necessary. */
- e_day_view_reshape_resize_long_event_rect_item (day_view);
-
- /* Make sure the text item is on top. */
- gnome_canvas_item_raise_to_top (day_view->resize_long_event_rect_item);
-
- /* Raise the event's item, above the rect as well. */
- gnome_canvas_item_raise_to_top (event->canvas_item);
- }
- } else if (e_day_view_get_long_event_position (day_view, event_num,
- &start_day, &end_day,
- &item_x, &item_y,
- &item_w, &item_h)) {
- /* Remember the item clicked and the mouse position,
- so we can start a drag if the mouse moves. */
- day_view->pressed_event_day = E_DAY_VIEW_LONG_EVENT;
- day_view->pressed_event_num = event_num;
-
- day_view->drag_event_x = event_x;
- day_view->drag_event_y = event_y;
-
- e_day_view_convert_position_in_top_canvas (day_view,
- event_x, event_y,
- &day, NULL);
- day_view->drag_event_offset = day - start_day;
- }
-}
-
-
-static void
-e_day_view_on_event_click (EDayView *day_view,
- gint day,
- gint event_num,
- GdkEventButton *bevent,
- EDayViewPosition pos,
- gint event_x,
- gint event_y)
-{
- EDayViewEvent *event;
- gint tmp_day, row, start_row;
-
- event = &g_array_index (day_view->events[day], EDayViewEvent,
- event_num);
-
- /* Ignore clicks on the EText while editing. */
- if (pos == E_DAY_VIEW_POS_EVENT
- && E_TEXT (event->canvas_item)->editing)
- return;
-
- if (!(cal_component_has_recurrences (event->comp))
- && (pos == E_DAY_VIEW_POS_TOP_EDGE
- || pos == E_DAY_VIEW_POS_BOTTOM_EDGE)) {
- /* Grab the keyboard focus, so the event being edited is saved
- and we can use the Escape key to abort the resize. */
- if (!GTK_WIDGET_HAS_FOCUS (day_view))
- gtk_widget_grab_focus (GTK_WIDGET (day_view));
-
- if (gdk_pointer_grab (GTK_LAYOUT (day_view->main_canvas)->bin_window, FALSE,
- GDK_POINTER_MOTION_MASK
- | GDK_BUTTON_RELEASE_MASK,
- FALSE, NULL, bevent->time) == 0) {
-
- day_view->resize_event_day = day;
- day_view->resize_event_num = event_num;
- day_view->resize_drag_pos = pos;
- day_view->resize_start_row = event->start_minute / day_view->mins_per_row;
- day_view->resize_end_row = (event->end_minute - 1) / day_view->mins_per_row;
-
- day_view->resize_bars_event_day = day;
- day_view->resize_bars_event_num = event_num;
-
- /* Create the edit rect if necessary. */
- e_day_view_reshape_resize_rect_item (day_view);
-
- e_day_view_reshape_main_canvas_resize_bars (day_view);
-
- /* Make sure the text item is on top. */
- gnome_canvas_item_raise_to_top (day_view->resize_rect_item);
- gnome_canvas_item_raise_to_top (day_view->resize_bar_item);
-
- /* Raise the event's item, above the rect as well. */
- gnome_canvas_item_raise_to_top (event->canvas_item);
- }
-
- } else {
- /* Remember the item clicked and the mouse position,
- so we can start a drag if the mouse moves. */
- day_view->pressed_event_day = day;
- day_view->pressed_event_num = event_num;
-
- day_view->drag_event_x = event_x;
- day_view->drag_event_y = event_y;
-
- e_day_view_convert_position_in_main_canvas (day_view,
- event_x, event_y,
- &tmp_day, &row,
- NULL);
- start_row = event->start_minute / day_view->mins_per_row;
- day_view->drag_event_offset = row - start_row;
- }
-}
-
-
-static void
-e_day_view_reshape_resize_long_event_rect_item (EDayView *day_view)
-{
- gint day, event_num, start_day, end_day;
- gint item_x, item_y, item_w, item_h;
- gdouble x1, y1, x2, y2;
-
- day = day_view->resize_event_day;
- event_num = day_view->resize_event_num;
-
- /* If we're not resizing an event, or the event is not shown,
- hide the resize bars. */
- if (day_view->resize_drag_pos == E_DAY_VIEW_POS_NONE
- || !e_day_view_get_long_event_position (day_view, event_num,
- &start_day, &end_day,
- &item_x, &item_y,
- &item_w, &item_h)) {
- gnome_canvas_item_hide (day_view->resize_long_event_rect_item);
- return;
- }
-
- x1 = item_x;
- y1 = item_y;
- x2 = item_x + item_w - 1;
- y2 = item_y + item_h - 1;
-
- gnome_canvas_item_set (day_view->resize_long_event_rect_item,
- "x1", x1,
- "y1", y1,
- "x2", x2,
- "y2", y2,
- NULL);
- gnome_canvas_item_show (day_view->resize_long_event_rect_item);
-}
-
-
-static void
-e_day_view_reshape_resize_rect_item (EDayView *day_view)
-{
- gint day, event_num;
- gint item_x, item_y, item_w, item_h;
- gdouble x1, y1, x2, y2;
-
- day = day_view->resize_event_day;
- event_num = day_view->resize_event_num;
-
- /* If we're not resizing an event, or the event is not shown,
- hide the resize bars. */
- if (day_view->resize_drag_pos == E_DAY_VIEW_POS_NONE
- || !e_day_view_get_event_position (day_view, day, event_num,
- &item_x, &item_y,
- &item_w, &item_h)) {
- gnome_canvas_item_hide (day_view->resize_rect_item);
- return;
- }
-
- x1 = item_x;
- y1 = item_y;
- x2 = item_x + item_w - 1;
- y2 = item_y + item_h - 1;
-
- gnome_canvas_item_set (day_view->resize_rect_item,
- "x1", x1 + E_DAY_VIEW_BAR_WIDTH - 1,
- "y1", y1,
- "x2", x2,
- "y2", y2,
- NULL);
- gnome_canvas_item_show (day_view->resize_rect_item);
-
- gnome_canvas_item_set (day_view->resize_bar_item,
- "x1", x1,
- "y1", y1,
- "x2", x1 + E_DAY_VIEW_BAR_WIDTH - 1,
- "y2", y2,
- NULL);
- gnome_canvas_item_show (day_view->resize_bar_item);
-}
-
-
-static void
-e_day_view_on_event_double_click (EDayView *day_view,
- gint day,
- gint event_num)
-{
-}
-
-enum {
- /*
- * This is used to "flag" events that can not be editted
- */
- MASK_EDITABLE = 1,
-
- /*
- * To disable recurring actions to be displayed
- */
- MASK_RECURRING = 2,
-
- /*
- * To disable actions for non-recurring items to be displayed
- */
- MASK_SINGLE = 4,
-
- /*
- * This is used to when an event is currently being edited
- * in another window and we want to disable the event
- * from being edited twice
- */
- MASK_EDITING = 8
-};
-
-static EPopupMenu main_items [] = {
- { N_("New Appointment"), NULL,
- e_day_view_on_new_appointment, NULL, 0 },
- { N_("New All Day Event"), NULL,
- e_day_view_on_new_event, NULL, 0 },
-
- { "", NULL, NULL, NULL, 0 },
-
- { N_("Go to Today"), NULL,
- e_day_view_on_goto_today, NULL, 0 },
- { N_("Go to Date..."), NULL,
- e_day_view_on_goto_date, NULL, 0 },
-
- { NULL, NULL, NULL, NULL, 0 }
-};
-
-static EPopupMenu child_items [] = {
- { N_("Open"), NULL,
- e_day_view_on_edit_appointment, NULL, MASK_EDITABLE | MASK_EDITING },
- { N_("Delete this Appointment"), NULL,
- e_day_view_on_delete_appointment, NULL, MASK_EDITABLE | MASK_SINGLE | MASK_EDITING },
- { N_("Schedule Meeting"), NULL,
- e_day_view_on_schedule_meet, NULL, MASK_EDITING },
-
- { "", NULL, NULL, NULL, MASK_SINGLE},
-
- /*
- * The following are only shown if this is a recurring event
- */
- { "", NULL, NULL, NULL, MASK_SINGLE},
- { N_("Make this Occurrence Movable"), NULL,
- e_day_view_on_unrecur_appointment, NULL, MASK_RECURRING | MASK_EDITING },
- { N_("Delete this Occurrence"), NULL,
- e_day_view_on_delete_occurrence, NULL, MASK_RECURRING | MASK_EDITING },
- { N_("Delete all Occurrences"), NULL,
- e_day_view_on_delete_appointment, NULL, MASK_RECURRING | MASK_EDITING },
-
- { NULL, NULL, NULL, NULL, 0 }
-};
-
-static void
-e_day_view_on_event_right_click (EDayView *day_view,
- GdkEventButton *bevent,
- gint day,
- gint event_num)
-{
- EDayViewEvent *event;
- int have_selection;
- gboolean being_edited;
- EPopupMenu *context_menu;
- int hide_mask = 0;
- int disable_mask = 0;
-
- /*
- * FIXME:
- * This used to be set only if the event wasn't being edited
- * in the event editor, but we can't check that at present.
- * We could possibly set up another method of checking it.
- */
-
- being_edited = FALSE;
-
- have_selection = GTK_WIDGET_HAS_FOCUS (day_view)
- && day_view->selection_start_day != -1;
-
- if (event_num == -1)
- context_menu = main_items;
- else {
- context_menu = child_items;
-
- if (day == E_DAY_VIEW_LONG_EVENT)
- event = &g_array_index (day_view->long_events,
- EDayViewEvent, event_num);
- else
- event = &g_array_index (day_view->events[day],
- EDayViewEvent, event_num);
-
- if (cal_component_has_recurrences (event->comp))
- hide_mask |= MASK_SINGLE;
- else
- hide_mask |= MASK_RECURRING;
- }
-
- if (being_edited)
- disable_mask |= MASK_EDITING;
-
- day_view->popup_event_day = day;
- day_view->popup_event_num = event_num;
-
- e_popup_menu_run (context_menu, (GdkEvent *) bevent, disable_mask, hide_mask, day_view);
-}
-
-static void
-e_day_view_on_new_appointment (GtkWidget *widget, gpointer data)
-{
- EDayView *day_view = E_DAY_VIEW (data);
- time_t dtstart, dtend;
-
- e_day_view_get_selected_time_range (day_view, &dtstart, &dtend);
- gnome_calendar_new_appointment_for (
- day_view->calendar, dtstart, dtend, FALSE);
-}
-
-static void
-e_day_view_on_new_event (GtkWidget *widget, gpointer data)
-{
- EDayView *day_view = E_DAY_VIEW (data);
- time_t dtstart, dtend;
-
- e_day_view_get_selected_time_range (day_view, &dtstart, &dtend);
- gnome_calendar_new_appointment_for (
- day_view->calendar, dtstart, dtend, TRUE);
-}
-
-static void
-e_day_view_on_goto_date (GtkWidget *widget, gpointer data)
-{
- EDayView *day_view = E_DAY_VIEW (data);
-
- goto_dialog (day_view->calendar);
-}
-
-static void
-e_day_view_on_goto_today (GtkWidget *widget, gpointer data)
-{
- EDayView *day_view = E_DAY_VIEW (data);
-
- calendar_goto_today (day_view->calendar);
-}
-
-static void
-e_day_view_on_edit_appointment (GtkWidget *widget, gpointer data)
-{
- EDayView *day_view;
- EDayViewEvent *event;
-
- day_view = E_DAY_VIEW (data);
-
- event = e_day_view_get_popup_menu_event (day_view);
- if (event == NULL)
- return;
-
- if (day_view->calendar)
- gnome_calendar_edit_object (day_view->calendar, event->comp);
- else
- g_warning ("Calendar not set");
-}
-
-
-static void
-e_day_view_on_delete_occurrence (GtkWidget *widget, gpointer data)
-{
- EDayView *day_view;
- EDayViewEvent *event;
- CalComponent *comp;
-
- day_view = E_DAY_VIEW (data);
-
- event = e_day_view_get_popup_menu_event (day_view);
- if (event == NULL)
- return;
-
- /* We must duplicate the CalComponent, or we won't know it has changed
- when we get the "update_event" callback. */
- comp = cal_component_clone (event->comp);
- cal_comp_util_add_exdate (comp, icaltime_from_timet (event->start, FALSE));
-
- if (!cal_client_update_object (day_view->client, comp))
- g_message ("e_day_view_on_delete_occurrence(): Could not update the object!");
-
- gtk_object_unref (GTK_OBJECT (comp));
-}
-
-
-static void
-e_day_view_on_delete_appointment (GtkWidget *widget, gpointer data)
-{
- EDayView *day_view;
- EDayViewEvent *event;
- CalComponentVType vtype;
-
- day_view = E_DAY_VIEW (data);
-
- event = e_day_view_get_popup_menu_event (day_view);
- if (event == NULL)
- return;
-
- if (day_view->editing_event_day >= 0)
- e_day_view_stop_editing_event (day_view);
-
- vtype = cal_component_get_vtype (event->comp);
-
- if (delete_component_dialog (event->comp, 1, vtype, widget)) {
- const char *uid;
-
- cal_component_get_uid (event->comp, &uid);
-
- /* We don't check the return value; FALSE can mean the object
- * was not in the server anyways.
- */
- cal_client_remove_object (day_view->client, uid);
- }
-}
-
-
-static void
-e_day_view_on_schedule_meet (GtkWidget *widget, gpointer data)
-{
- EDayView *day_view;
- EDayViewEvent *event;
- EMeetingEditor *editor;
-
- day_view = E_DAY_VIEW (data);
-
- event = e_day_view_get_popup_menu_event (day_view);
- if (event == NULL)
- return;
-
- editor = e_meeting_editor_new (event->comp, day_view->client);
-
- e_meeting_edit (editor);
- e_meeting_editor_free (editor);
-}
-
-static void
-e_day_view_on_unrecur_appointment (GtkWidget *widget, gpointer data)
-{
- EDayView *day_view;
- EDayViewEvent *event;
- CalComponent *comp, *new_comp;
- CalComponentDateTime date;
- struct icaltimetype itt;
-
- day_view = E_DAY_VIEW (data);
-
- event = e_day_view_get_popup_menu_event (day_view);
- if (event == NULL)
- return;
-
- date.value = &itt;
- date.tzid = NULL;
-
- /* For the recurring object, we add an exception to get rid of the
- instance. */
-
- comp = cal_component_clone (event->comp);
- cal_comp_util_add_exdate (comp, icaltime_from_timet (event->start, FALSE));
-
- /* For the unrecurred instance we duplicate the original object,
- create a new uid for it, get rid of the recurrence rules, and set
- the start & end times to the instances times. */
- new_comp = cal_component_clone (event->comp);
- cal_component_set_uid (new_comp, cal_component_gen_uid ());
- cal_component_set_rdate_list (new_comp, NULL);
- cal_component_set_rrule_list (new_comp, NULL);
- cal_component_set_exdate_list (new_comp, NULL);
- cal_component_set_exrule_list (new_comp, NULL);
-
- date.value = &itt;
- date.tzid = NULL;
-
- *date.value = icaltime_from_timet (event->start, FALSE);
- cal_component_set_dtstart (new_comp, &date);
- *date.value = icaltime_from_timet (event->end, FALSE);
- cal_component_set_dtend (new_comp, &date);
-
- /* Now update both CalComponents. Note that we do this last since at
- * present the updates happen synchronously so our event may disappear.
- */
- if (!cal_client_update_object (day_view->client, comp))
- g_message ("e_day_view_on_unrecur_appointment(): Could not update the object!");
-
- gtk_object_unref (GTK_OBJECT (comp));
-
- if (!cal_client_update_object (day_view->client, new_comp))
- g_message ("e_day_view_on_unrecur_appointment(): Could not update the object!");
-
- gtk_object_unref (GTK_OBJECT (new_comp));
-}
-
-
-static EDayViewEvent*
-e_day_view_get_popup_menu_event (EDayView *day_view)
-{
- if (day_view->popup_event_num == -1)
- return NULL;
-
- if (day_view->popup_event_day == E_DAY_VIEW_LONG_EVENT)
- return &g_array_index (day_view->long_events,
- EDayViewEvent,
- day_view->popup_event_num);
- else
- return &g_array_index (day_view->events[day_view->popup_event_day],
- EDayViewEvent,
- day_view->popup_event_num);
-}
-
-
-static gboolean
-e_day_view_on_top_canvas_button_release (GtkWidget *widget,
- GdkEventButton *event,
- EDayView *day_view)
-{
- if (day_view->selection_is_being_dragged) {
- gdk_pointer_ungrab (event->time);
- e_day_view_finish_selection (day_view);
- } else if (day_view->resize_drag_pos != E_DAY_VIEW_POS_NONE) {
- e_day_view_finish_long_event_resize (day_view);
- gdk_pointer_ungrab (event->time);
- } else if (day_view->pressed_event_day != -1) {
- e_day_view_start_editing_event (day_view,
- day_view->pressed_event_day,
- day_view->pressed_event_num,
- NULL);
- }
-
- day_view->pressed_event_day = -1;
-
- return FALSE;
-}
-
-
-static gboolean
-e_day_view_on_main_canvas_button_release (GtkWidget *widget,
- GdkEventButton *event,
- EDayView *day_view)
-{
- if (day_view->selection_is_being_dragged) {
- gdk_pointer_ungrab (event->time);
- e_day_view_finish_selection (day_view);
- e_day_view_stop_auto_scroll (day_view);
- } else if (day_view->resize_drag_pos != E_DAY_VIEW_POS_NONE) {
- e_day_view_finish_resize (day_view);
- gdk_pointer_ungrab (event->time);
- e_day_view_stop_auto_scroll (day_view);
- } else if (day_view->pressed_event_day != -1) {
- e_day_view_start_editing_event (day_view,
- day_view->pressed_event_day,
- day_view->pressed_event_num,
- NULL);
- }
-
- day_view->pressed_event_day = -1;
-
- return FALSE;
-}
-
-
-static void
-e_day_view_update_calendar_selection_time (EDayView *day_view)
-{
- time_t start, end;
-
- e_day_view_get_selected_time_range (day_view, &start, &end);
-
-#if 0
- g_print ("Start: %s", ctime (&start));
- g_print ("End : %s", ctime (&end));
-#endif
-
- if (day_view->calendar)
- gnome_calendar_set_selected_time_range (day_view->calendar,
- start, end);
-}
-
-
-static gboolean
-e_day_view_on_top_canvas_motion (GtkWidget *widget,
- GdkEventMotion *mevent,
- EDayView *day_view)
-{
- EDayViewEvent *event = NULL;
- EDayViewPosition pos;
- gint event_x, event_y, scroll_x, scroll_y, canvas_x, canvas_y;
- gint day, event_num;
- GdkCursor *cursor;
-
-#if 0
- g_print ("In e_day_view_on_top_canvas_motion\n");
-#endif
-
- /* Convert the coords to the main canvas window, or return if the
- window is not found. */
- if (!e_day_view_convert_event_coords (day_view, (GdkEvent*) mevent,
- GTK_LAYOUT (widget)->bin_window,
- &event_x, &event_y))
- return FALSE;
-
- /* The top canvas doesn't scroll, but just in case. */
- gnome_canvas_get_scroll_offsets (GNOME_CANVAS (widget),
- &scroll_x, &scroll_y);
- canvas_x = event_x + scroll_x;
- canvas_y = event_y + scroll_y;
-
- pos = e_day_view_convert_position_in_top_canvas (day_view,
- canvas_x, canvas_y,
- &day, &event_num);
- if (event_num != -1)
- event = &g_array_index (day_view->long_events, EDayViewEvent,
- event_num);
-
- if (day_view->selection_is_being_dragged) {
- e_day_view_update_selection (day_view, day, -1);
- return TRUE;
- } else if (day_view->resize_drag_pos != E_DAY_VIEW_POS_NONE) {
- if (pos != E_DAY_VIEW_POS_OUTSIDE) {
- e_day_view_update_long_event_resize (day_view, day);
- return TRUE;
- }
- } else if (day_view->pressed_event_day == E_DAY_VIEW_LONG_EVENT) {
- GtkTargetList *target_list;
-
- event = &g_array_index (day_view->long_events, EDayViewEvent,
- day_view->pressed_event_num);
-
- if (!(cal_component_has_recurrences (event->comp))
- && (abs (canvas_x - day_view->drag_event_x)
- > E_DAY_VIEW_DRAG_START_OFFSET
- || abs (canvas_y - day_view->drag_event_y)
- > E_DAY_VIEW_DRAG_START_OFFSET)) {
- day_view->drag_event_day = day_view->pressed_event_day;
- day_view->drag_event_num = day_view->pressed_event_num;
- day_view->pressed_event_day = -1;
-
- /* Hide the horizontal bars. */
- if (day_view->resize_bars_event_day != -1) {
- day_view->resize_bars_event_day = -1;
- day_view->resize_bars_event_num = -1;
- gnome_canvas_item_hide (day_view->main_canvas_top_resize_bar_item);
- gnome_canvas_item_hide (day_view->main_canvas_bottom_resize_bar_item);
- }
-
- target_list = gtk_target_list_new (target_table,
- n_targets);
- gtk_drag_begin (widget, target_list,
- GDK_ACTION_COPY | GDK_ACTION_MOVE,
- 1, (GdkEvent*)mevent);
- gtk_target_list_unref (target_list);
- }
- } else {
- cursor = day_view->normal_cursor;
-
- /* Recurring events can't be resized. */
- if (event && !cal_component_has_recurrences (event->comp)) {
- switch (pos) {
- case E_DAY_VIEW_POS_LEFT_EDGE:
- case E_DAY_VIEW_POS_RIGHT_EDGE:
- cursor = day_view->resize_width_cursor;
- break;
- default:
- break;
- }
- }
-
- /* Only set the cursor if it is different to last one set. */
- if (day_view->last_cursor_set_in_top_canvas != cursor) {
- day_view->last_cursor_set_in_top_canvas = cursor;
- gdk_window_set_cursor (widget->window, cursor);
- }
-
- }
-
- return FALSE;
-}
-
-
-static gboolean
-e_day_view_on_main_canvas_motion (GtkWidget *widget,
- GdkEventMotion *mevent,
- EDayView *day_view)
-{
- EDayViewEvent *event = NULL;
- EDayViewPosition pos;
- gint event_x, event_y, scroll_x, scroll_y, canvas_x, canvas_y;
- gint row, day, event_num;
- GdkCursor *cursor;
-
-#if 0
- g_print ("In e_day_view_on_main_canvas_motion\n");
-#endif
-
- /* Convert the coords to the main canvas window, or return if the
- window is not found. */
- if (!e_day_view_convert_event_coords (day_view, (GdkEvent*) mevent,
- GTK_LAYOUT (widget)->bin_window,
- &event_x, &event_y))
- return FALSE;
-
- gnome_canvas_get_scroll_offsets (GNOME_CANVAS (widget),
- &scroll_x, &scroll_y);
- canvas_x = event_x + scroll_x;
- canvas_y = event_y + scroll_y;
-
- pos = e_day_view_convert_position_in_main_canvas (day_view,
- canvas_x, canvas_y,
- &day, &row,
- &event_num);
- if (event_num != -1)
- event = &g_array_index (day_view->events[day], EDayViewEvent,
- event_num);
-
- if (day_view->selection_is_being_dragged) {
- if (pos != E_DAY_VIEW_POS_OUTSIDE) {
- e_day_view_update_selection (day_view, day, row);
- e_day_view_check_auto_scroll (day_view,
- event_x, event_y);
- return TRUE;
- }
- } else if (day_view->resize_drag_pos != E_DAY_VIEW_POS_NONE) {
- if (pos != E_DAY_VIEW_POS_OUTSIDE) {
- e_day_view_update_resize (day_view, row);
- e_day_view_check_auto_scroll (day_view,
- event_x, event_y);
- return TRUE;
- }
- } else if (day_view->pressed_event_day != -1
- && day_view->pressed_event_day != E_DAY_VIEW_LONG_EVENT) {
- GtkTargetList *target_list;
-
- event = &g_array_index (day_view->events[day_view->pressed_event_day], EDayViewEvent, day_view->pressed_event_num);
-
- if (!cal_component_has_recurrences (event->comp)
- && (abs (canvas_x - day_view->drag_event_x)
- > E_DAY_VIEW_DRAG_START_OFFSET
- || abs (canvas_y - day_view->drag_event_y)
- > E_DAY_VIEW_DRAG_START_OFFSET)) {
- day_view->drag_event_day = day_view->pressed_event_day;
- day_view->drag_event_num = day_view->pressed_event_num;
- day_view->pressed_event_day = -1;
-
- /* Hide the horizontal bars. */
- if (day_view->resize_bars_event_day != -1) {
- day_view->resize_bars_event_day = -1;
- day_view->resize_bars_event_num = -1;
- gnome_canvas_item_hide (day_view->main_canvas_top_resize_bar_item);
- gnome_canvas_item_hide (day_view->main_canvas_bottom_resize_bar_item);
- }
-
- target_list = gtk_target_list_new (target_table,
- n_targets);
- gtk_drag_begin (widget, target_list,
- GDK_ACTION_COPY | GDK_ACTION_MOVE,
- 1, (GdkEvent*)mevent);
- gtk_target_list_unref (target_list);
- }
- } else {
- cursor = day_view->normal_cursor;
-
- /* Recurring events can't be resized. */
- if (event && !cal_component_has_recurrences (event->comp)) {
- switch (pos) {
- case E_DAY_VIEW_POS_LEFT_EDGE:
- cursor = day_view->move_cursor;
- break;
- case E_DAY_VIEW_POS_TOP_EDGE:
- case E_DAY_VIEW_POS_BOTTOM_EDGE:
- cursor = day_view->resize_height_cursor;
- break;
- default:
- break;
- }
- }
-
- /* Only set the cursor if it is different to last one set. */
- if (day_view->last_cursor_set_in_main_canvas != cursor) {
- day_view->last_cursor_set_in_main_canvas = cursor;
- gdk_window_set_cursor (widget->window, cursor);
- }
- }
-
- return FALSE;
-}
-
-
-/* This sets the selection to a single cell. If day is -1 then the current
- start day is reused. If row is -1 then the selection is in the top canvas.
-*/
-void
-e_day_view_start_selection (EDayView *day_view,
- gint day,
- gint row)
-{
- if (day == -1) {
- day = day_view->selection_start_day;
- if (day == -1)
- day = 0;
- }
-
- day_view->selection_start_day = day;
- day_view->selection_end_day = day;
-
- day_view->selection_start_row = row;
- day_view->selection_end_row = row;
-
- day_view->selection_is_being_dragged = TRUE;
- day_view->selection_drag_pos = E_DAY_VIEW_DRAG_END;
- day_view->selection_in_top_canvas = (row == -1) ? TRUE : FALSE;
-
- /* FIXME: Optimise? */
- gtk_widget_queue_draw (day_view->top_canvas);
- gtk_widget_queue_draw (day_view->main_canvas);
-}
-
-
-/* Updates the selection during a drag. If day is -1 the selection day is
- unchanged. */
-void
-e_day_view_update_selection (EDayView *day_view,
- gint day,
- gint row)
-{
- gboolean need_redraw = FALSE;
-
-#if 0
- g_print ("Updating selection %i,%i\n", day, row);
-#endif
-
- day_view->selection_in_top_canvas = (row == -1) ? TRUE : FALSE;
-
- if (day == -1)
- day = (day_view->selection_drag_pos == E_DAY_VIEW_DRAG_START)
- ? day_view->selection_start_day
- : day_view->selection_end_day;
-
- if (day_view->selection_drag_pos == E_DAY_VIEW_DRAG_START) {
- if (row != day_view->selection_start_row
- || day != day_view->selection_start_day) {
- need_redraw = TRUE;
- day_view->selection_start_row = row;
- day_view->selection_start_day = day;
- }
- } else {
- if (row != day_view->selection_end_row
- || day != day_view->selection_end_day) {
- need_redraw = TRUE;
- day_view->selection_end_row = row;
- day_view->selection_end_day = day;
- }
- }
-
- e_day_view_normalize_selection (day_view);
-
- /* FIXME: Optimise? */
- if (need_redraw) {
- gtk_widget_queue_draw (day_view->top_canvas);
- gtk_widget_queue_draw (day_view->main_canvas);
- }
-}
-
-
-static void
-e_day_view_normalize_selection (EDayView *day_view)
-{
- gint tmp_row, tmp_day;
-
- /* Switch the drag position if necessary. */
- if (day_view->selection_start_day > day_view->selection_end_day
- || (day_view->selection_start_day == day_view->selection_end_day
- && day_view->selection_start_row > day_view->selection_end_row)) {
- tmp_row = day_view->selection_start_row;
- tmp_day = day_view->selection_start_day;
- day_view->selection_start_day = day_view->selection_end_day;
- day_view->selection_start_row = day_view->selection_end_row;
- day_view->selection_end_day = tmp_day;
- day_view->selection_end_row = tmp_row;
- if (day_view->selection_drag_pos == E_DAY_VIEW_DRAG_START)
- day_view->selection_drag_pos = E_DAY_VIEW_DRAG_END;
- else
- day_view->selection_drag_pos = E_DAY_VIEW_DRAG_START;
- }
-}
-
-
-void
-e_day_view_finish_selection (EDayView *day_view)
-{
- day_view->selection_is_being_dragged = FALSE;
- e_day_view_update_calendar_selection_time (day_view);
-}
-
-
-static void
-e_day_view_update_long_event_resize (EDayView *day_view,
- gint day)
-{
- EDayViewEvent *event;
- gint event_num;
- gboolean need_reshape = FALSE;
-
-#if 0
- g_print ("Updating resize Day:%i\n", day);
-#endif
-
- event_num = day_view->resize_event_num;
- event = &g_array_index (day_view->long_events, EDayViewEvent,
- event_num);
-
- if (day_view->resize_drag_pos == E_DAY_VIEW_POS_LEFT_EDGE) {
- day = MIN (day, day_view->resize_end_row);
- if (day != day_view->resize_start_row) {
- need_reshape = TRUE;
- day_view->resize_start_row = day;
-
- }
- } else {
- day = MAX (day, day_view->resize_start_row);
- if (day != day_view->resize_end_row) {
- need_reshape = TRUE;
- day_view->resize_end_row = day;
- }
- }
-
- /* FIXME: Optimise? */
- if (need_reshape) {
- e_day_view_reshape_long_event (day_view, event_num);
- e_day_view_reshape_resize_long_event_rect_item (day_view);
- gtk_widget_queue_draw (day_view->top_canvas);
- }
-}
-
-
-static void
-e_day_view_update_resize (EDayView *day_view,
- gint row)
-{
- EDayViewEvent *event;
- gint day, event_num;
- gboolean need_reshape = FALSE;
-
-#if 0
- g_print ("Updating resize Row:%i\n", row);
-#endif
-
- day = day_view->resize_event_day;
- event_num = day_view->resize_event_num;
- event = &g_array_index (day_view->events[day], EDayViewEvent,
- event_num);
-
- if (day_view->resize_drag_pos == E_DAY_VIEW_POS_TOP_EDGE) {
- row = MIN (row, day_view->resize_end_row);
- if (row != day_view->resize_start_row) {
- need_reshape = TRUE;
- day_view->resize_start_row = row;
-
- }
- } else {
- row = MAX (row, day_view->resize_start_row);
- if (row != day_view->resize_end_row) {
- need_reshape = TRUE;
- day_view->resize_end_row = row;
- }
- }
-
- /* FIXME: Optimise? */
- if (need_reshape) {
- e_day_view_reshape_day_event (day_view, day, event_num);
- e_day_view_reshape_resize_rect_item (day_view);
- e_day_view_reshape_main_canvas_resize_bars (day_view);
- gtk_widget_queue_draw (day_view->main_canvas);
- }
-}
-
-
-/* This converts the resize start or end row back to a time and updates the
- event. */
-static void
-e_day_view_finish_long_event_resize (EDayView *day_view)
-{
- EDayViewEvent *event;
- gint event_num;
- CalComponent *comp;
- CalComponentDateTime date;
- struct icaltimetype itt;
- time_t dt;
-
- event_num = day_view->resize_event_num;
- event = &g_array_index (day_view->long_events, EDayViewEvent,
- event_num);
-
- /* We use a temporary copy of the comp since we don't want to
- change the original comp here. Otherwise we would not detect that
- the event's time had changed in the "update_event" callback. */
- comp = cal_component_clone (event->comp);
-
- date.value = &itt;
- date.tzid = NULL;
-
- if (day_view->resize_drag_pos == E_DAY_VIEW_POS_LEFT_EDGE) {
- dt = day_view->day_starts[day_view->resize_start_row];
- *date.value = icaltime_from_timet (dt, FALSE);
- cal_component_set_dtstart (comp, &date);
- } else {
- dt = day_view->day_starts[day_view->resize_end_row + 1];
- *date.value = icaltime_from_timet (dt, FALSE);
- cal_component_set_dtend (comp, &date);
- }
-
- gnome_canvas_item_hide (day_view->resize_long_event_rect_item);
-
- day_view->resize_drag_pos = E_DAY_VIEW_POS_NONE;
-
- if (!cal_client_update_object (day_view->client, comp))
- g_message ("e_day_view_finish_long_event_resize(): Could not update the object!");
-
- gtk_object_unref (GTK_OBJECT (comp));
-}
-
-
-/* This converts the resize start or end row back to a time and updates the
- event. */
-static void
-e_day_view_finish_resize (EDayView *day_view)
-{
- EDayViewEvent *event;
- gint day, event_num;
- CalComponent *comp;
- CalComponentDateTime date;
- struct icaltimetype itt;
- time_t dt;
-
- day = day_view->resize_event_day;
- event_num = day_view->resize_event_num;
- event = &g_array_index (day_view->events[day], EDayViewEvent,
- event_num);
-
- /* We use a temporary shallow copy of the ico since we don't want to
- change the original ico here. Otherwise we would not detect that
- the event's time had changed in the "update_event" callback. */
- comp = cal_component_clone (event->comp);
-
- date.value = &itt;
- date.tzid = NULL;
-
- if (day_view->resize_drag_pos == E_DAY_VIEW_POS_TOP_EDGE) {
- dt = e_day_view_convert_grid_position_to_time (day_view, day, day_view->resize_start_row);
- *date.value = icaltime_from_timet (dt, FALSE);
- cal_component_set_dtstart (comp, &date);
- } else {
- dt = e_day_view_convert_grid_position_to_time (day_view, day, day_view->resize_end_row + 1);
- *date.value = icaltime_from_timet (dt, FALSE);
- cal_component_set_dtend (comp, &date);
- }
-
- gnome_canvas_item_hide (day_view->resize_rect_item);
- gnome_canvas_item_hide (day_view->resize_bar_item);
-
- /* Hide the horizontal bars. */
- day_view->resize_bars_event_day = -1;
- day_view->resize_bars_event_num = -1;
- gnome_canvas_item_hide (day_view->main_canvas_top_resize_bar_item);
- gnome_canvas_item_hide (day_view->main_canvas_bottom_resize_bar_item);
-
- day_view->resize_drag_pos = E_DAY_VIEW_POS_NONE;
-
- if (!cal_client_update_object (day_view->client, comp))
- g_message ("e_day_view_finish_resize(): Could not update the object!");
-
- gtk_object_unref (GTK_OBJECT (comp));
-}
-
-
-static void
-e_day_view_abort_resize (EDayView *day_view,
- guint32 time)
-{
- gint day, event_num;
-
- if (day_view->resize_drag_pos == E_DAY_VIEW_POS_NONE)
- return;
-
- day_view->resize_drag_pos = E_DAY_VIEW_POS_NONE;
- gdk_pointer_ungrab (time);
-
- day = day_view->resize_event_day;
- event_num = day_view->resize_event_num;
-
- if (day == E_DAY_VIEW_LONG_EVENT) {
- e_day_view_reshape_long_event (day_view, event_num);
- gtk_widget_queue_draw (day_view->top_canvas);
-
- day_view->last_cursor_set_in_top_canvas = day_view->normal_cursor;
- gdk_window_set_cursor (day_view->top_canvas->window,
- day_view->normal_cursor);
- gnome_canvas_item_hide (day_view->resize_long_event_rect_item);
- } else {
- e_day_view_reshape_day_event (day_view, day, event_num);
- e_day_view_reshape_main_canvas_resize_bars (day_view);
- gtk_widget_queue_draw (day_view->main_canvas);
-
- day_view->last_cursor_set_in_main_canvas = day_view->normal_cursor;
- gdk_window_set_cursor (day_view->main_canvas->window,
- day_view->normal_cursor);
- gnome_canvas_item_hide (day_view->resize_rect_item);
- gnome_canvas_item_hide (day_view->resize_bar_item);
- }
-}
-
-
-static void
-e_day_view_free_events (EDayView *day_view)
-{
- gint day;
-
- /* Reset all our indices. */
- day_view->editing_event_day = -1;
- day_view->popup_event_day = -1;
- day_view->resize_bars_event_day = -1;
- day_view->resize_event_day = -1;
- day_view->pressed_event_day = -1;
- day_view->drag_event_day = -1;
-
- e_day_view_free_event_array (day_view, day_view->long_events);
-
- for (day = 0; day < E_DAY_VIEW_MAX_DAYS; day++)
- e_day_view_free_event_array (day_view, day_view->events[day]);
-}
-
-
-static void
-e_day_view_free_event_array (EDayView *day_view,
- GArray *array)
-{
- EDayViewEvent *event;
- gint event_num;
-
- for (event_num = 0; event_num < array->len; event_num++) {
- event = &g_array_index (array, EDayViewEvent, event_num);
- if (event->canvas_item)
- gtk_object_destroy (GTK_OBJECT (event->canvas_item));
- gtk_object_unref (GTK_OBJECT (event->comp));
- }
-
- g_array_set_size (array, 0);
-}
-
-
-/* This adds one event to the view, adding it to the appropriate array. */
-static gboolean
-e_day_view_add_event (CalComponent *comp,
- time_t start,
- time_t end,
- gpointer data)
-
-{
- EDayView *day_view;
- EDayViewEvent event;
- gint day, offset;
- struct tm start_tm, end_tm;
-
- day_view = E_DAY_VIEW (data);
-
-#if 0
- g_print ("Day view lower: %s", ctime (&day_view->lower));
- g_print ("Day view upper: %s", ctime (&day_view->upper));
- g_print ("Event start: %s", ctime (&start));
- g_print ("Event end : %s\n", ctime (&end));
-#endif
-
- /* Check that the event times are valid. */
- g_return_val_if_fail (start <= end, TRUE);
- g_return_val_if_fail (start < day_view->upper, TRUE);
- g_return_val_if_fail (end > day_view->lower, TRUE);
-
- start_tm = *(localtime (&start));
- end_tm = *(localtime (&end));
-
- event.comp = comp;
- gtk_object_ref (GTK_OBJECT (comp));
- event.start = start;
- event.end = end;
- event.canvas_item = NULL;
-
- /* Calculate the start & end minute, relative to the top of the
- display. */
- offset = day_view->first_hour_shown * 60
- + day_view->first_minute_shown;
- event.start_minute = start_tm.tm_hour * 60 + start_tm.tm_min - offset;
- event.end_minute = end_tm.tm_hour * 60 + end_tm.tm_min - offset;
-
- event.start_row_or_col = -1;
- event.num_columns = -1;
-
- /* Find out which array to add the event to. */
- for (day = 0; day < day_view->days_shown; day++) {
- if (start >= day_view->day_starts[day]
- && end <= day_view->day_starts[day + 1]) {
-
- /* Special case for when the appointment ends at
- midnight, i.e. the start of the next day. */
- if (end == day_view->day_starts[day + 1]) {
-
- /* If the event last the entire day, then we
- skip it here so it gets added to the top
- canvas. */
- if (start == day_view->day_starts[day])
- break;
-
- event.end_minute = 24 * 60;
- }
-
- g_array_append_val (day_view->events[day], event);
- day_view->events_sorted[day] = FALSE;
- day_view->need_layout[day] = TRUE;
- return TRUE;
- }
- }
-
- /* The event wasn't within one day so it must be a long event,
- i.e. shown in the top canvas. */
- g_array_append_val (day_view->long_events, event);
- day_view->long_events_sorted = FALSE;
- day_view->long_events_need_layout = TRUE;
- return TRUE;
-}
-
-
-/* This lays out the short (less than 1 day) events in the columns.
- Any long events are simply skipped. */
-void
-e_day_view_check_layout (EDayView *day_view)
-{
- gint day;
-
- /* Don't bother if we aren't visible. */
- if (!GTK_WIDGET_VISIBLE (day_view))
- return;
-
- /* Make sure the events are sorted (by start and size). */
- e_day_view_ensure_events_sorted (day_view);
-
- for (day = 0; day < day_view->days_shown; day++) {
- if (day_view->need_layout[day])
- e_day_view_layout_day_events (day_view, day);
-
- if (day_view->need_layout[day]
- || day_view->need_reshape[day]) {
- e_day_view_reshape_day_events (day_view, day);
-
- if (day_view->resize_bars_event_day == day)
- e_day_view_reshape_main_canvas_resize_bars (day_view);
- }
-
- day_view->need_layout[day] = FALSE;
- day_view->need_reshape[day] = FALSE;
- }
-
- if (day_view->long_events_need_layout)
- e_day_view_layout_long_events (day_view);
-
- if (day_view->long_events_need_layout
- || day_view->long_events_need_reshape)
- e_day_view_reshape_long_events (day_view);
-
- day_view->long_events_need_layout = FALSE;
- day_view->long_events_need_reshape = FALSE;
-}
-
-
-static void
-e_day_view_layout_long_events (EDayView *day_view)
-{
- EDayViewEvent *event;
- gint event_num, old_rows_in_top_display, top_canvas_height, top_rows;
- guint8 *grid;
-
- /* This is a temporary 2-d grid which is used to place events.
- Each element is 0 if the position is empty, or 1 if occupied.
- We allocate the maximum size possible here, assuming that each
- event will need its own row. */
- grid = g_new0 (guint8,
- day_view->long_events->len * E_DAY_VIEW_MAX_DAYS);
-
- /* Reset the number of rows in the top display to 0. It will be
- updated as events are layed out below. */
- old_rows_in_top_display = day_view->rows_in_top_display;
- day_view->rows_in_top_display = 0;
-
- /* Iterate over the events, finding which days they cover, and putting
- them in the first free row available. */
- for (event_num = 0; event_num < day_view->long_events->len;
- event_num++) {
- event = &g_array_index (day_view->long_events,
- EDayViewEvent, event_num);
- e_day_view_layout_long_event (day_view, event, grid);
- }
-
- /* Free the grid. */
- g_free (grid);
-
- /* Set the height of the top canvas based on the row height and the
- number of rows needed (min 1 + 1 for the dates + 1 space for DnD).*/
- if (day_view->rows_in_top_display != old_rows_in_top_display) {
- top_rows = MAX (1, day_view->rows_in_top_display);
- top_canvas_height = (top_rows + 2) * day_view->top_row_height;
- gtk_widget_set_usize (day_view->top_canvas, -1,
- top_canvas_height);
- }
-}
-
-
-static void
-e_day_view_layout_long_event (EDayView *day_view,
- EDayViewEvent *event,
- guint8 *grid)
-{
- gint start_day, end_day, free_row, day, row;
-
- event->num_columns = 0;
-
- if (!e_day_view_find_long_event_days (day_view, event,
- &start_day, &end_day))
- return;
-
- /* Try each row until we find a free one. */
- row = 0;
- do {
- free_row = row;
- for (day = start_day; day <= end_day; day++) {
- if (grid[row * E_DAY_VIEW_MAX_DAYS + day]) {
- free_row = -1;
- break;
- }
- }
- row++;
- } while (free_row == -1);
-
- event->start_row_or_col = free_row;
- event->num_columns = 1;
-
- /* Mark the cells as full. */
- for (day = start_day; day <= end_day; day++) {
- grid[free_row * E_DAY_VIEW_MAX_DAYS + day] = 1;
- }
-
- /* Update the number of rows in the top canvas if necessary. */
- day_view->rows_in_top_display = MAX (day_view->rows_in_top_display,
- free_row + 1);
-}
-
-
-static void
-e_day_view_reshape_long_events (EDayView *day_view)
-{
- EDayViewEvent *event;
- gint event_num;
-
- for (event_num = 0; event_num < day_view->long_events->len;
- event_num++) {
- event = &g_array_index (day_view->long_events, EDayViewEvent,
- event_num);
-
- if (event->num_columns == 0) {
- if (event->canvas_item) {
- gtk_object_destroy (GTK_OBJECT (event->canvas_item));
- event->canvas_item = NULL;
- }
- } else {
- e_day_view_reshape_long_event (day_view, event_num);
- }
- }
-}
-
-
-static void
-e_day_view_reshape_long_event (EDayView *day_view,
- gint event_num)
-{
- EDayViewEvent *event;
- GdkFont *font;
- gint start_day, end_day, item_x, item_y, item_w, item_h;
- gint text_x, text_w, num_icons, icons_width, width, time_width;
- CalComponent *comp;
- gint min_text_x, max_text_w, text_width, line_len;
- gchar *text, *end_of_line;
- gboolean show_icons = TRUE, use_max_width = FALSE;
-
- event = &g_array_index (day_view->long_events, EDayViewEvent,
- event_num);
-
- if (!e_day_view_get_long_event_position (day_view, event_num,
- &start_day, &end_day,
- &item_x, &item_y,
- &item_w, &item_h)) {
- if (event->canvas_item) {
- gtk_object_destroy (GTK_OBJECT (event->canvas_item));
- event->canvas_item = NULL;
- }
- return;
- }
-
- /* Take off the border and padding. */
- item_x += E_DAY_VIEW_LONG_EVENT_BORDER_WIDTH + E_DAY_VIEW_LONG_EVENT_X_PAD;
- item_w -= (E_DAY_VIEW_LONG_EVENT_BORDER_WIDTH + E_DAY_VIEW_LONG_EVENT_X_PAD) * 2;
- item_y += E_DAY_VIEW_LONG_EVENT_BORDER_HEIGHT + E_DAY_VIEW_LONG_EVENT_Y_PAD;
- item_h -= (E_DAY_VIEW_LONG_EVENT_BORDER_HEIGHT + E_DAY_VIEW_LONG_EVENT_Y_PAD) * 2;
-
- /* We don't show the icons while resizing, since we'd have to
- draw them on top of the resize rect. Nor when editing. */
- num_icons = 0;
- comp = event->comp;
- font = GTK_WIDGET (day_view)->style->font;
-
- if (day_view->resize_drag_pos != E_DAY_VIEW_POS_NONE
- && day_view->resize_event_day == E_DAY_VIEW_LONG_EVENT
- && day_view->resize_event_num == event_num)
- show_icons = FALSE;
-
- if (day_view->editing_event_day == E_DAY_VIEW_LONG_EVENT
- && day_view->editing_event_num == event_num) {
- show_icons = FALSE;
- use_max_width = TRUE;
- }
-
- if (show_icons) {
- if (cal_component_has_alarms (comp))
- num_icons++;
- if (cal_component_has_recurrences (comp))
- num_icons++;
- }
-
- if (!event->canvas_item) {
- event->canvas_item =
- gnome_canvas_item_new (GNOME_CANVAS_GROUP (GNOME_CANVAS (day_view->top_canvas)->root),
- e_text_get_type (),
- "font_gdk", GTK_WIDGET (day_view)->style->font,
- "anchor", GTK_ANCHOR_NW,
- "clip", TRUE,
- "max_lines", 1,
- "editable", TRUE,
- "use_ellipsis", TRUE,
- "draw_background", FALSE,
- "fill_color_rgba", GNOME_CANVAS_COLOR(0, 0, 0),
- NULL);
- gtk_signal_connect (GTK_OBJECT (event->canvas_item), "event",
- GTK_SIGNAL_FUNC (e_day_view_on_text_item_event),
- day_view);
- e_day_view_update_long_event_label (day_view, event_num);
- }
-
- /* Calculate its position. We first calculate the ideal position which
- is centered with the icons. We then make sure we haven't gone off
- the left edge of the available space. Finally we make sure we don't
- go off the right edge. */
- icons_width = (E_DAY_VIEW_ICON_WIDTH + E_DAY_VIEW_ICON_X_PAD)
- * num_icons;
- time_width = e_day_view_get_time_string_width (day_view);
-
- if (use_max_width) {
- text_x = item_x;
- text_w = item_w;
- } else {
- /* Get the requested size of the label. */
- gtk_object_get (GTK_OBJECT (event->canvas_item),
- "text", &text,
- NULL);
- text_width = 0;
- if (text) {
- end_of_line = strchr (text, '\n');
- if (end_of_line)
- line_len = end_of_line - text;
- else
- line_len = strlen (text);
- text_width = gdk_text_width (font, text, line_len);
- g_free (text);
- }
-
- width = text_width + icons_width;
- text_x = item_x + (item_w - width) / 2;
-
- min_text_x = item_x;
- if (event->start > day_view->day_starts[start_day])
- min_text_x += time_width + E_DAY_VIEW_LONG_EVENT_TIME_X_PAD;
-
- text_x = MAX (text_x, min_text_x);
-
- max_text_w = item_x + item_w - text_x;
- if (event->end < day_view->day_starts[end_day + 1])
- max_text_w -= time_width + E_DAY_VIEW_LONG_EVENT_TIME_X_PAD;
-
- text_w = MIN (width, max_text_w);
-
- /* Now take out the space for the icons. */
- text_x += icons_width;
- text_w -= icons_width;
- }
-
- text_w = MAX (text_w, 0);
- gnome_canvas_item_set (event->canvas_item,
- "clip_width", (gdouble) text_w,
- "clip_height", (gdouble) item_h,
- NULL);
- e_canvas_item_move_absolute(event->canvas_item,
- text_x, item_y);
-}
-
-
-/* Find the start and end days for the event. */
-gboolean
-e_day_view_find_long_event_days (EDayView *day_view,
- EDayViewEvent *event,
- gint *start_day_return,
- gint *end_day_return)
-{
- gint day, start_day, end_day;
-
- start_day = -1;
- end_day = -1;
-
- for (day = 0; day < day_view->days_shown; day++) {
- if (start_day == -1
- && event->start < day_view->day_starts[day + 1])
- start_day = day;
- if (event->end > day_view->day_starts[day])
- end_day = day;
- }
-
- /* Sanity check. */
- if (start_day < 0 || start_day >= day_view->days_shown
- || end_day < 0 || end_day >= day_view->days_shown
- || end_day < start_day) {
- g_warning ("Invalid date range for event");
- return FALSE;
- }
-
- *start_day_return = start_day;
- *end_day_return = end_day;
-
- return TRUE;
-}
-
-
-static void
-e_day_view_layout_day_events (EDayView *day_view,
- gint day)
-{
- EDayViewEvent *event;
- gint row, event_num;
- guint8 *grid;
-
- /* This is a temporary array which keeps track of rows which are
- connected. When an appointment spans multiple rows then the number
- of columns in each of these rows must be the same (i.e. the maximum
- of all of them). Each element in the array corresponds to one row
- and contains the index of the first row in the group of connected
- rows. */
- guint16 group_starts[12 * 24];
-
- /* Reset the cols_per_row array, and initialize the connected rows so
- that all rows are not connected - each row is the start of a new
- group. */
- for (row = 0; row < day_view->rows; row++) {
- day_view->cols_per_row[day][row] = 0;
- group_starts[row] = row;
- }
-
- /* This is a temporary 2-d grid which is used to place events.
- Each element is 0 if the position is empty, or 1 if occupied. */
- grid = g_new0 (guint8, day_view->rows * E_DAY_VIEW_MAX_COLUMNS);
-
-
- /* Iterate over the events, finding which rows they cover, and putting
- them in the first free column available. Increment the number of
- events in each of the rows it covers, and make sure they are all
- in one group. */
- for (event_num = 0; event_num < day_view->events[day]->len;
- event_num++) {
- event = &g_array_index (day_view->events[day], EDayViewEvent,
- event_num);
-
- e_day_view_layout_day_event (day_view, day, event,
- grid, group_starts);
- }
-
- /* Recalculate the number of columns needed in each row. */
- e_day_view_recalc_cols_per_row (day_view, day, group_starts);
-
- /* Iterate over the events again, trying to expand events horizontally
- if there is enough space. */
- for (event_num = 0; event_num < day_view->events[day]->len;
- event_num++) {
- event = &g_array_index (day_view->events[day], EDayViewEvent,
- event_num);
- e_day_view_expand_day_event (day_view, day, event, grid);
- }
-
- /* Free the grid. */
- g_free (grid);
-}
-
-
-/* Finds the first free position to place the event in.
- Increments the number of events in each of the rows it covers, and makes
- sure they are all in one group. */
-static void
-e_day_view_layout_day_event (EDayView *day_view,
- gint day,
- EDayViewEvent *event,
- guint8 *grid,
- guint16 *group_starts)
-{
- gint start_row, end_row, free_col, col, row, group_start;
-
- start_row = event->start_minute / day_view->mins_per_row;
- end_row = (event->end_minute - 1) / day_view->mins_per_row;
-
- event->num_columns = 0;
-
- /* If the event can't currently be seen, just return. */
- if (start_row >= day_view->rows || end_row < 0)
- return;
-
- /* Make sure we don't go outside the visible times. */
- start_row = CLAMP (start_row, 0, day_view->rows - 1);
- end_row = CLAMP (end_row, 0, day_view->rows - 1);
-
- /* Try each column until we find a free one. */
- for (col = 0; col < E_DAY_VIEW_MAX_COLUMNS; col++) {
- free_col = col;
- for (row = start_row; row <= end_row; row++) {
- if (grid[row * E_DAY_VIEW_MAX_COLUMNS + col]) {
- free_col = -1;
- break;
- }
- }
-
- if (free_col != -1)
- break;
- }
-
- /* If we can't find space for the event, just return. */
- if (free_col == -1)
- return;
-
- /* The event is assigned 1 col initially, but may be expanded later. */
- event->start_row_or_col = free_col;
- event->num_columns = 1;
-
- /* Determine the start index of the group. */
- group_start = group_starts[start_row];
-
- /* Increment number of events in each of the rows the event covers.
- We use the cols_per_row array for this. It will be sorted out after
- all the events have been layed out. Also make sure all the rows that
- the event covers are in one group. */
- for (row = start_row; row <= end_row; row++) {
- grid[row * E_DAY_VIEW_MAX_COLUMNS + free_col] = 1;
- day_view->cols_per_row[day][row]++;
- group_starts[row] = group_start;
- }
-
- /* If any following rows should be in the same group, add them. */
- for (row = end_row + 1; row < day_view->rows; row++) {
- if (group_starts[row] > end_row)
- break;
- group_starts[row] = group_start;
- }
-}
-
-
-/* For each group of rows, find the max number of events in all the
- rows, and set the number of cols in each of the rows to that. */
-static void
-e_day_view_recalc_cols_per_row (EDayView *day_view,
- gint day,
- guint16 *group_starts)
-{
- gint start_row = 0, row, next_start_row, max_events;
-
- while (start_row < day_view->rows) {
-
- max_events = 0;
- for (row = start_row; row < day_view->rows && group_starts[row] == start_row; row++)
- max_events = MAX (max_events, day_view->cols_per_row[day][row]);
-
- next_start_row = row;
-
- for (row = start_row; row < next_start_row; row++)
- day_view->cols_per_row[day][row] = max_events;
-
- start_row = next_start_row;
- }
-}
-
-
-/* Expands the event horizontally to fill any free space. */
-static void
-e_day_view_expand_day_event (EDayView *day_view,
- gint day,
- EDayViewEvent *event,
- guint8 *grid)
-{
- gint start_row, end_row, col, row;
- gboolean clashed;
-
- start_row = event->start_minute / day_view->mins_per_row;
- end_row = (event->end_minute - 1) / day_view->mins_per_row;
-
- /* Try each column until we find a free one. */
- clashed = FALSE;
- for (col = event->start_row_or_col + 1; col < day_view->cols_per_row[day][start_row]; col++) {
- for (row = start_row; row <= end_row; row++) {
- if (grid[row * E_DAY_VIEW_MAX_COLUMNS + col]) {
- clashed = TRUE;
- break;
- }
- }
-
- if (clashed)
- break;
-
- event->num_columns++;
- }
-}
-
-
-/* This creates or updates the sizes of the canvas items for one day of the
- main canvas. */
-static void
-e_day_view_reshape_day_events (EDayView *day_view,
- gint day)
-{
- gint event_num;
-
- for (event_num = 0; event_num < day_view->events[day]->len;
- event_num++) {
- e_day_view_reshape_day_event (day_view, day, event_num);
- }
-}
-
-
-static void
-e_day_view_reshape_day_event (EDayView *day_view,
- gint day,
- gint event_num)
-{
- EDayViewEvent *event;
- gint item_x, item_y, item_w, item_h;
- gint num_icons, icons_offset;
- CalComponent *comp;
-
- event = &g_array_index (day_view->events[day], EDayViewEvent,
- event_num);
- comp = event->comp;
-
- if (!e_day_view_get_event_position (day_view, day, event_num,
- &item_x, &item_y,
- &item_w, &item_h)) {
- if (event->canvas_item) {
- gtk_object_destroy (GTK_OBJECT (event->canvas_item));
- event->canvas_item = NULL;
- }
- } else {
- /* Skip the border and padding. */
- item_x += E_DAY_VIEW_BAR_WIDTH + E_DAY_VIEW_EVENT_X_PAD;
- item_w -= E_DAY_VIEW_BAR_WIDTH + E_DAY_VIEW_EVENT_X_PAD * 2;
- item_y += E_DAY_VIEW_EVENT_BORDER_HEIGHT + E_DAY_VIEW_EVENT_Y_PAD;
- item_h -= (E_DAY_VIEW_EVENT_BORDER_HEIGHT + E_DAY_VIEW_EVENT_Y_PAD) * 2;
-
- /* We don't show the icons while resizing, since we'd have to
- draw them on top of the resize rect. */
- num_icons = 0;
- if (day_view->resize_drag_pos == E_DAY_VIEW_POS_NONE
- || day_view->resize_event_day != day
- || day_view->resize_event_num != event_num) {
- if (cal_component_has_alarms (comp))
- num_icons++;
- if (cal_component_has_recurrences (comp))
- num_icons++;
- }
-
- if (num_icons > 0) {
- if (item_h >= (E_DAY_VIEW_ICON_HEIGHT + E_DAY_VIEW_ICON_Y_PAD) * num_icons)
- icons_offset = E_DAY_VIEW_ICON_WIDTH + E_DAY_VIEW_ICON_X_PAD * 2;
- else
- icons_offset = (E_DAY_VIEW_ICON_WIDTH + E_DAY_VIEW_ICON_X_PAD) * num_icons + E_DAY_VIEW_ICON_X_PAD;
- item_x += icons_offset;
- item_w -= icons_offset;
- }
-
- if (!event->canvas_item) {
- event->canvas_item =
- gnome_canvas_item_new (GNOME_CANVAS_GROUP (GNOME_CANVAS (day_view->main_canvas)->root),
- e_text_get_type (),
- "font_gdk", GTK_WIDGET (day_view)->style->font,
- "anchor", GTK_ANCHOR_NW,
- "line_wrap", TRUE,
- "editable", TRUE,
- "clip", TRUE,
- "use_ellipsis", TRUE,
- "draw_background", FALSE,
- "fill_color_rgba", GNOME_CANVAS_COLOR(0, 0, 0),
- NULL);
- gtk_signal_connect (GTK_OBJECT (event->canvas_item),
- "event",
- GTK_SIGNAL_FUNC (e_day_view_on_text_item_event),
- day_view);
- e_day_view_update_event_label (day_view, day,
- event_num);
- }
-
- item_w = MAX (item_w, 0);
- gnome_canvas_item_set (event->canvas_item,
- "clip_width", (gdouble) item_w,
- "clip_height", (gdouble) item_h,
- NULL);
- e_canvas_item_move_absolute(event->canvas_item,
- item_x, item_y);
- }
-}
-
-
-/* This creates or resizes the horizontal bars used to resize events in the
- main canvas. */
-static void
-e_day_view_reshape_main_canvas_resize_bars (EDayView *day_view)
-{
- gint day, event_num;
- gint item_x, item_y, item_w, item_h;
- gdouble x, y, w, h;
-
- day = day_view->resize_bars_event_day;
- event_num = day_view->resize_bars_event_num;
-
- /* If we're not editing an event, or the event is not shown,
- hide the resize bars. */
- if (day != -1 && day == day_view->drag_event_day
- && event_num == day_view->drag_event_num) {
- gtk_object_get (GTK_OBJECT (day_view->drag_rect_item),
- "x1", &x,
- "y1", &y,
- "x2", &w,
- "y2", &h,
- NULL);
- w -= x;
- x++;
- h -= y;
- } else if (day != -1
- && e_day_view_get_event_position (day_view, day, event_num,
- &item_x, &item_y,
- &item_w, &item_h)) {
- x = item_x + E_DAY_VIEW_BAR_WIDTH;
- y = item_y;
- w = item_w - E_DAY_VIEW_BAR_WIDTH;
- h = item_h;
- } else {
- gnome_canvas_item_hide (day_view->main_canvas_top_resize_bar_item);
- gnome_canvas_item_hide (day_view->main_canvas_bottom_resize_bar_item);
- return;
- }
-
- gnome_canvas_item_set (day_view->main_canvas_top_resize_bar_item,
- "x1", x - E_DAY_VIEW_BAR_WIDTH,
- "y1", y - E_DAY_VIEW_BAR_HEIGHT,
- "x2", x + w - 1,
- "y2", y - 1,
- NULL);
- gnome_canvas_item_show (day_view->main_canvas_top_resize_bar_item);
-
- gnome_canvas_item_set (day_view->main_canvas_bottom_resize_bar_item,
- "x1", x - E_DAY_VIEW_BAR_WIDTH,
- "y1", y + h,
- "x2", x + w - 1,
- "y2", y + h + E_DAY_VIEW_BAR_HEIGHT - 1,
- NULL);
- gnome_canvas_item_show (day_view->main_canvas_bottom_resize_bar_item);
-}
-
-
-static void
-e_day_view_ensure_events_sorted (EDayView *day_view)
-{
- gint day;
-
- /* Sort the long events. */
- if (!day_view->long_events_sorted) {
- qsort (day_view->long_events->data,
- day_view->long_events->len,
- sizeof (EDayViewEvent),
- e_day_view_event_sort_func);
- day_view->long_events_sorted = TRUE;
- }
-
- /* Sort the events for each day. */
- for (day = 0; day < day_view->days_shown; day++) {
- if (!day_view->events_sorted[day]) {
- qsort (day_view->events[day]->data,
- day_view->events[day]->len,
- sizeof (EDayViewEvent),
- e_day_view_event_sort_func);
- day_view->events_sorted[day] = TRUE;
- }
- }
-}
-
-
-static gint
-e_day_view_event_sort_func (const void *arg1,
- const void *arg2)
-{
- EDayViewEvent *event1, *event2;
-
- event1 = (EDayViewEvent*) arg1;
- event2 = (EDayViewEvent*) arg2;
-
- if (event1->start < event2->start)
- return -1;
- if (event1->start > event2->start)
- return 1;
-
- if (event1->end > event2->end)
- return -1;
- if (event1->end < event2->end)
- return 1;
-
- return 0;
-}
-
-
-static gint
-e_day_view_key_press (GtkWidget *widget, GdkEventKey *event)
-{
- EDayView *day_view;
- CalComponent *comp;
- gint day, event_num;
- gchar *initial_text;
- guint keyval;
- gboolean stop_emission;
- time_t dtstart, dtend;
- CalComponentDateTime dt;
- struct icaltimetype itt;
- const char *uid;
-
- g_return_val_if_fail (widget != NULL, FALSE);
- g_return_val_if_fail (E_IS_DAY_VIEW (widget), FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
- day_view = E_DAY_VIEW (widget);
- keyval = event->keyval;
-
- /* The Escape key aborts a resize operation. */
- if (day_view->resize_drag_pos != E_DAY_VIEW_POS_NONE) {
- if (keyval == GDK_Escape) {
- e_day_view_abort_resize (day_view, event->time);
- }
- return FALSE;
- }
-
- /* Handle the cursor keys for moving & extending the selection. */
- stop_emission = TRUE;
- if (event->state & GDK_SHIFT_MASK) {
- switch (keyval) {
- case GDK_Up:
- e_day_view_cursor_key_up_shifted (day_view, event);
- break;
- case GDK_Down:
- e_day_view_cursor_key_down_shifted (day_view, event);
- break;
- case GDK_Left:
- e_day_view_cursor_key_left_shifted (day_view, event);
- break;
- case GDK_Right:
- e_day_view_cursor_key_right_shifted (day_view, event);
- break;
- default:
- stop_emission = FALSE;
- break;
- }
- } else {
- switch (keyval) {
- case GDK_Up:
- e_day_view_cursor_key_up (day_view, event);
- break;
- case GDK_Down:
- e_day_view_cursor_key_down (day_view, event);
- break;
- case GDK_Left:
- e_day_view_cursor_key_left (day_view, event);
- break;
- case GDK_Right:
- e_day_view_cursor_key_right (day_view, event);
- break;
- case GDK_Page_Up:
- e_day_view_scroll (day_view, E_DAY_VIEW_PAGE_STEP);
- break;
- case GDK_Page_Down:
- e_day_view_scroll (day_view, -E_DAY_VIEW_PAGE_STEP);
- break;
- default:
- stop_emission = FALSE;
- break;
- }
- }
- if (stop_emission)
- return TRUE;
-
- if (day_view->selection_start_day == -1)
- return FALSE;
-
- /* Check if there is room for a new event to be typed in. If there
- isn't we don't want to add an event as we will then add a new
- event for every key press. */
- if (!e_day_view_check_if_new_event_fits (day_view)) {
- return FALSE;
- }
-
- /* We only want to start an edit with a return key or a simple
- character. */
- if (keyval == GDK_Return) {
- initial_text = NULL;
- } else if ((keyval < 0x20)
- || (keyval > 0xFF)
- || (event->length == 0)
- || (event->state & (GDK_CONTROL_MASK | GDK_MOD1_MASK))) {
- return FALSE;
- } else {
- initial_text = event->string;
- }
-
- /* Add a new event covering the selected range */
-
- comp = cal_component_new ();
- cal_component_set_new_vtype (comp, CAL_COMPONENT_EVENT);
-
- e_day_view_get_selected_time_range (day_view, &dtstart, &dtend);
-
- dt.value = &itt;
- dt.tzid = NULL;
-
- *dt.value = icaltime_from_timet (dtstart, FALSE);
- cal_component_set_dtstart (comp, &dt);
-
- *dt.value = icaltime_from_timet (dtend, FALSE);
- cal_component_set_dtend (comp, &dt);
-
- /* We add the event locally and start editing it. When we get the
- "update_event" callback from the server, we basically ignore it.
- If we were to wait for the "update_event" callback it wouldn't be
- as responsive and we may lose a few keystrokes. */
- e_day_view_add_event (comp, dtstart, dtend, day_view);
- e_day_view_check_layout (day_view);
- gtk_widget_queue_draw (day_view->top_canvas);
- gtk_widget_queue_draw (day_view->main_canvas);
-
- cal_component_get_uid (comp, &uid);
- if (e_day_view_find_event_from_uid (day_view, uid, &day, &event_num)) {
- e_day_view_start_editing_event (day_view, day, event_num,
- initial_text);
- } else {
- g_warning ("Couldn't find event to start editing.\n");
- }
-
- gtk_object_unref (GTK_OBJECT (comp));
-
- return TRUE;
-}
-
-
-static void
-e_day_view_cursor_key_up_shifted (EDayView *day_view, GdkEventKey *event)
-{
- gint *row;
-
- if (day_view->selection_in_top_canvas)
- return;
-
- if (day_view->selection_drag_pos == E_DAY_VIEW_DRAG_START)
- row = &day_view->selection_start_row;
- else
- row = &day_view->selection_end_row;
-
- if (*row == 0)
- return;
-
- *row = *row - 1;
-
- e_day_view_ensure_rows_visible (day_view, *row, *row);
-
- e_day_view_normalize_selection (day_view);
-
- e_day_view_update_calendar_selection_time (day_view);
-
- /* FIXME: Optimise? */
- gtk_widget_queue_draw (day_view->top_canvas);
- gtk_widget_queue_draw (day_view->main_canvas);
-}
-
-
-static void
-e_day_view_cursor_key_down_shifted (EDayView *day_view, GdkEventKey *event)
-{
- gint *row;
-
- if (day_view->selection_in_top_canvas)
- return;
-
- if (day_view->selection_drag_pos == E_DAY_VIEW_DRAG_START)
- row = &day_view->selection_start_row;
- else
- row = &day_view->selection_end_row;
-
- if (*row >= day_view->rows - 1)
- return;
-
- *row = *row + 1;
-
- e_day_view_ensure_rows_visible (day_view, *row, *row);
-
- e_day_view_normalize_selection (day_view);
-
- e_day_view_update_calendar_selection_time (day_view);
-
- /* FIXME: Optimise? */
- gtk_widget_queue_draw (day_view->top_canvas);
- gtk_widget_queue_draw (day_view->main_canvas);
-}
-
-
-static void
-e_day_view_cursor_key_left_shifted (EDayView *day_view, GdkEventKey *event)
-{
- gint *day;
-
- if (day_view->selection_drag_pos == E_DAY_VIEW_DRAG_START)
- day = &day_view->selection_start_day;
- else
- day = &day_view->selection_end_day;
-
- if (*day == 0)
- return;
-
- *day = *day - 1;
-
- e_day_view_normalize_selection (day_view);
-
- e_day_view_update_calendar_selection_time (day_view);
-
- /* FIXME: Optimise? */
- gtk_widget_queue_draw (day_view->top_canvas);
- gtk_widget_queue_draw (day_view->main_canvas);
-}
-
-
-static void
-e_day_view_cursor_key_right_shifted (EDayView *day_view, GdkEventKey *event)
-{
- gint *day;
-
- if (day_view->selection_drag_pos == E_DAY_VIEW_DRAG_START)
- day = &day_view->selection_start_day;
- else
- day = &day_view->selection_end_day;
-
- if (*day >= day_view->days_shown - 1)
- return;
-
- *day = *day + 1;
-
- e_day_view_normalize_selection (day_view);
-
- e_day_view_update_calendar_selection_time (day_view);
-
- /* FIXME: Optimise? */
- gtk_widget_queue_draw (day_view->top_canvas);
- gtk_widget_queue_draw (day_view->main_canvas);
-}
-
-
-static void
-e_day_view_cursor_key_up (EDayView *day_view, GdkEventKey *event)
-{
- if (day_view->selection_start_day == -1) {
- day_view->selection_start_day = 0;
- day_view->selection_start_row = 0;
- }
- day_view->selection_end_day = day_view->selection_start_day;
-
- if (day_view->selection_in_top_canvas) {
- return;
- } else if (day_view->selection_start_row == 0) {
- day_view->selection_in_top_canvas = TRUE;
- day_view->selection_start_row = -1;
- } else {
- day_view->selection_start_row--;
- }
- day_view->selection_end_row = day_view->selection_start_row;
-
- if (!day_view->selection_in_top_canvas)
- e_day_view_ensure_rows_visible (day_view,
- day_view->selection_start_row,
- day_view->selection_end_row);
-
- e_day_view_update_calendar_selection_time (day_view);
-
- /* FIXME: Optimise? */
- gtk_widget_queue_draw (day_view->top_canvas);
- gtk_widget_queue_draw (day_view->main_canvas);
-}
-
-
-static void
-e_day_view_cursor_key_down (EDayView *day_view, GdkEventKey *event)
-{
- if (day_view->selection_start_day == -1) {
- day_view->selection_start_day = 0;
- day_view->selection_start_row = 0;
- }
- day_view->selection_end_day = day_view->selection_start_day;
-
- if (day_view->selection_in_top_canvas) {
- day_view->selection_in_top_canvas = FALSE;
- day_view->selection_start_row = 0;
- } else if (day_view->selection_start_row >= day_view->rows - 1) {
- return;
- } else {
- day_view->selection_start_row++;
- }
- day_view->selection_end_row = day_view->selection_start_row;
-
- if (!day_view->selection_in_top_canvas)
- e_day_view_ensure_rows_visible (day_view,
- day_view->selection_start_row,
- day_view->selection_end_row);
-
- e_day_view_update_calendar_selection_time (day_view);
-
- /* FIXME: Optimise? */
- gtk_widget_queue_draw (day_view->top_canvas);
- gtk_widget_queue_draw (day_view->main_canvas);
-}
-
-
-static void
-e_day_view_cursor_key_left (EDayView *day_view, GdkEventKey *event)
-{
- if (day_view->selection_start_day == 0) {
- if (day_view->calendar)
- gnome_calendar_previous (day_view->calendar);
- } else {
- day_view->selection_start_day--;
- day_view->selection_end_day--;
-
- e_day_view_update_calendar_selection_time (day_view);
-
- /* FIXME: Optimise? */
- gtk_widget_queue_draw (day_view->top_canvas);
- gtk_widget_queue_draw (day_view->main_canvas);
- }
-}
-
-
-static void
-e_day_view_cursor_key_right (EDayView *day_view, GdkEventKey *event)
-{
- if (day_view->selection_end_day == day_view->days_shown - 1) {
- if (day_view->calendar)
- gnome_calendar_next (day_view->calendar);
- } else {
- day_view->selection_start_day++;
- day_view->selection_end_day++;
-
- e_day_view_update_calendar_selection_time (day_view);
-
- /* FIXME: Optimise? */
- gtk_widget_queue_draw (day_view->top_canvas);
- gtk_widget_queue_draw (day_view->main_canvas);
- }
-}
-
-
-/* Scrolls the main canvas up or down. The pages_to_scroll argument
- is multiplied with the adjustment's page size and added to the adjustment's
- value, while ensuring we stay within the bounds. A positive value will
- scroll the canvas down and a negative value will scroll it up. */
-static void
-e_day_view_scroll (EDayView *day_view,
- gfloat pages_to_scroll)
-{
- GtkAdjustment *adj = GTK_LAYOUT (day_view->main_canvas)->vadjustment;
- gfloat new_value;
-
- new_value = adj->value - adj->page_size * pages_to_scroll;
- new_value = CLAMP (new_value, adj->lower, adj->upper - adj->page_size);
- gtk_adjustment_set_value (adj, new_value);
-}
-
-
-static gboolean
-e_day_view_check_if_new_event_fits (EDayView *day_view)
-{
- gint day, start_row, end_row, row;
-
- day = day_view->selection_start_day;
- start_row = day_view->selection_start_row;
- end_row = day_view->selection_end_row;
-
- /* Long events always fit, since we keep adding rows to the top
- canvas. */
- if (day != day_view->selection_end_day)
- return TRUE;
- if (start_row == 0 && end_row == day_view->rows)
- return TRUE;
-
- /* If any of the rows already have E_DAY_VIEW_MAX_COLUMNS columns,
- return FALSE. */
- for (row = start_row; row <= end_row; row++) {
- if (day_view->cols_per_row[day][row] >= E_DAY_VIEW_MAX_COLUMNS)
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-static void
-e_day_view_ensure_rows_visible (EDayView *day_view,
- gint start_row,
- gint end_row)
-{
- GtkAdjustment *adj;
- gfloat value, min_value, max_value;
-
- adj = GTK_LAYOUT (day_view->main_canvas)->vadjustment;
-
- value = adj->value;
-
- min_value = (end_row + 1) * day_view->row_height - adj->page_size;
- if (value < min_value)
- value = min_value;
-
- max_value = start_row * day_view->row_height;
- if (value > max_value)
- value = max_value;
-
- if (value != adj->value) {
- adj->value = value;
- gtk_adjustment_value_changed (adj);
- }
-}
-
-
-static void
-e_day_view_start_editing_event (EDayView *day_view,
- gint day,
- gint event_num,
- gchar *initial_text)
-{
- EDayViewEvent *event;
- ETextEventProcessor *event_processor = NULL;
- ETextEventProcessorCommand command;
-
-#if 0
- g_print ("In e_day_view_start_editing_event\n");
-#endif
-
- /* If we are already editing the event, just return. */
- if (day == day_view->editing_event_day
- && event_num == day_view->editing_event_num)
- return;
-
- if (day == E_DAY_VIEW_LONG_EVENT) {
- event = &g_array_index (day_view->long_events, EDayViewEvent,
- event_num);
- } else {
- event = &g_array_index (day_view->events[day], EDayViewEvent,
- event_num);
- }
-
- /* If the event is not shown, don't try to edit it. */
- if (!event->canvas_item)
- return;
-
- /* We must grab the focus before setting the initial text, since
- grabbing the focus will result in a call to
- e_day_view_on_editing_started(), which will reset the text to get
- rid of the start and end times. */
- e_canvas_item_grab_focus (event->canvas_item, TRUE);
-
- if (initial_text) {
- gnome_canvas_item_set (event->canvas_item,
- "text", initial_text,
- NULL);
- }
-
- /* Try to move the cursor to the end of the text. */
- gtk_object_get (GTK_OBJECT (event->canvas_item),
- "event_processor", &event_processor,
- NULL);
- if (event_processor) {
- command.action = E_TEP_MOVE;
- command.position = E_TEP_END_OF_BUFFER;
- gtk_signal_emit_by_name (GTK_OBJECT (event_processor),
- "command", &command);
- }
-}
-
-
-/* This stops the current edit. If accept is TRUE the event summary is update,
- else the edit is cancelled. */
-static void
-e_day_view_stop_editing_event (EDayView *day_view)
-{
- GtkWidget *toplevel;
-
- /* Check we are editing an event. */
- if (day_view->editing_event_day == -1)
- return;
-
- /* Set focus to the toplevel so the item loses focus. */
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (day_view));
- if (toplevel && GTK_IS_WINDOW (toplevel))
- gtk_window_set_focus (GTK_WINDOW (toplevel), NULL);
-}
-
-
-static gboolean
-e_day_view_on_text_item_event (GnomeCanvasItem *item,
- GdkEvent *event,
- EDayView *day_view)
-{
- switch (event->type) {
- case GDK_KEY_PRESS:
- if (event && event->key.keyval == GDK_Return) {
- /* We set the keyboard focus to the EDayView, so the
- EText item loses it and stops the edit. */
- gtk_widget_grab_focus (GTK_WIDGET (day_view));
-
- /* Stop the signal last or we will also stop any
- other events getting to the EText item. */
- gtk_signal_emit_stop_by_name (GTK_OBJECT (item),
- "event");
- return TRUE;
- }
- break;
- case GDK_BUTTON_PRESS:
- case GDK_BUTTON_RELEASE:
- /* Only let the EText handle the event while editing. */
- if (!E_TEXT (item)->editing)
- gtk_signal_emit_stop_by_name (GTK_OBJECT (item),
- "event");
- break;
- case GDK_FOCUS_CHANGE:
- if (event->focus_change.in)
- e_day_view_on_editing_started (day_view, item);
- else
- e_day_view_on_editing_stopped (day_view, item);
-
- return FALSE;
- default:
- break;
- }
-
- return FALSE;
-}
-
-
-static void
-e_day_view_on_editing_started (EDayView *day_view,
- GnomeCanvasItem *item)
-{
- gint day, event_num;
-
- if (!e_day_view_find_event_from_item (day_view, item,
- &day, &event_num))
- return;
-
-#if 0
- g_print ("In e_day_view_on_editing_started Day:%i Event:%i\n",
- day, event_num);
-#endif
-
- /* FIXME: This is a temporary workaround for a bug which seems to stop
- us getting focus_out signals. It is not a complete fix since if we
- don't get focus_out signals we don't save the appointment text so
- this may be lost. */
- if (day_view->editing_event_day == day
- && day_view->editing_event_num == event_num)
- return;
-
- day_view->editing_event_day = day;
- day_view->editing_event_num = event_num;
-
- if (day == E_DAY_VIEW_LONG_EVENT) {
- e_day_view_reshape_long_event (day_view, event_num);
- } else {
- day_view->resize_bars_event_day = day;
- day_view->resize_bars_event_num = event_num;
- e_day_view_update_event_label (day_view, day, event_num);
- e_day_view_reshape_main_canvas_resize_bars (day_view);
- }
-}
-
-
-static void
-e_day_view_on_editing_stopped (EDayView *day_view,
- GnomeCanvasItem *item)
-{
- gint day, event_num;
- gboolean editing_long_event = FALSE;
- EDayViewEvent *event;
- gchar *text = NULL;
- CalComponentText summary;
-
- /* Note: the item we are passed here isn't reliable, so we just stop
- the edit of whatever item was being edited. We also receive this
- event twice for some reason. */
- day = day_view->editing_event_day;
- event_num = day_view->editing_event_num;
-
-#if 0
- g_print ("In e_day_view_on_editing_stopped Day:%i Event:%i\n",
- day, event_num);
-#endif
-
- /* If no item is being edited, just return. */
- if (day == -1)
- return;
-
- if (day == E_DAY_VIEW_LONG_EVENT) {
- editing_long_event = TRUE;
- event = &g_array_index (day_view->long_events, EDayViewEvent,
- event_num);
- } else {
- event = &g_array_index (day_view->events[day], EDayViewEvent,
- event_num);
-
- /* Hide the horizontal bars. */
- gnome_canvas_item_hide (day_view->main_canvas_top_resize_bar_item);
- gnome_canvas_item_hide (day_view->main_canvas_bottom_resize_bar_item);
- }
-
- /* Reset the edit fields. */
- day_view->editing_event_day = -1;
- day_view->editing_event_num = -1;
-
- day_view->resize_bars_event_day = -1;
- day_view->resize_bars_event_num = -1;
-
- gtk_object_get (GTK_OBJECT (event->canvas_item),
- "text", &text,
- NULL);
-
- /* Only update the summary if necessary. */
- cal_component_get_summary (event->comp, &summary);
- if (text && summary.value && !strcmp (text, summary.value)) {
- g_free (text);
-
- if (day == E_DAY_VIEW_LONG_EVENT)
- e_day_view_reshape_long_event (day_view, event_num);
- return;
- }
-
- if (text) {
- summary.value = text;
- summary.altrep = NULL;
- cal_component_set_summary (event->comp, &summary);
-
- g_free (text);
- } else
- cal_component_set_summary (event->comp, NULL);
-
- if (!cal_client_update_object (day_view->client, event->comp))
- g_message ("e_day_view_on_editing_stopped(): Could not update the object!");
-}
-
-
-/* FIXME: It is possible that we may produce an invalid time due to daylight
- saving times (i.e. when clocks go forward there is a range of time which
- is not valid). I don't know the best way to handle daylight saving time. */
-static time_t
-e_day_view_convert_grid_position_to_time (EDayView *day_view,
- gint col,
- gint row)
-{
- struct tm *tmp_tm;
- time_t val;
- gint minutes;
-
- /* Calulate the number of minutes since the start of the day. */
- minutes = day_view->first_hour_shown * 60
- + day_view->first_minute_shown
- + row * day_view->mins_per_row;
-
- /* A special case for midnight, where we can use the start of the
- next day. */
- if (minutes == 60 * 24)
- return day_view->day_starts[col + 1];
-
- /* We convert the start of the day to a struct tm, then set the
- hour and minute, then convert it back to a time_t. */
- tmp_tm = localtime (&day_view->day_starts[col]);
-
- tmp_tm->tm_hour = minutes / 60;
- tmp_tm->tm_min = minutes % 60;
- tmp_tm->tm_isdst = -1;
-
- val = mktime (tmp_tm);
- return val;
-}
-
-
-static gboolean
-e_day_view_convert_time_to_grid_position (EDayView *day_view,
- time_t time,
- gint *col,
- gint *row)
-{
- struct tm *tmp_tm;
- gint day, minutes;
-
- *col = *row = 0;
-
- if (time < day_view->lower || time >= day_view->upper)
- return FALSE;
-
- /* We can find the column easily using the day_starts array. */
- for (day = 1; day <= day_view->days_shown; day++) {
- if (time < day_view->day_starts[day]) {
- *col = day - 1;
- break;
- }
- }
-
- /* To find the row we need to convert the time to a struct tm,
- calculate the offset in minutes from the top of the display and
- divide it by the mins per row setting. */
- tmp_tm = localtime (&time);
- minutes = tmp_tm->tm_hour * 60 + tmp_tm->tm_min;
- minutes -= day_view->first_hour_shown * 60
- + day_view->first_minute_shown;
-
- *row = minutes / day_view->mins_per_row;
-
- if (*row < 0 || *row >= day_view->rows)
- return FALSE;
-
- return TRUE;
-}
-
-
-/* This starts or stops auto-scrolling when dragging a selection or resizing
- an event. */
-void
-e_day_view_check_auto_scroll (EDayView *day_view,
- gint event_x,
- gint event_y)
-{
- day_view->last_mouse_x = event_x;
- day_view->last_mouse_y = event_y;
-
- if (event_y < E_DAY_VIEW_AUTO_SCROLL_OFFSET)
- e_day_view_start_auto_scroll (day_view, TRUE);
- else if (event_y >= day_view->main_canvas->allocation.height
- - E_DAY_VIEW_AUTO_SCROLL_OFFSET)
- e_day_view_start_auto_scroll (day_view, FALSE);
- else
- e_day_view_stop_auto_scroll (day_view);
-}
-
-
-static void
-e_day_view_start_auto_scroll (EDayView *day_view,
- gboolean scroll_up)
-{
- if (day_view->auto_scroll_timeout_id == 0) {
- day_view->auto_scroll_timeout_id = g_timeout_add (E_DAY_VIEW_AUTO_SCROLL_TIMEOUT, e_day_view_auto_scroll_handler, day_view);
- day_view->auto_scroll_delay = E_DAY_VIEW_AUTO_SCROLL_DELAY;
- }
- day_view->auto_scroll_up = scroll_up;
-}
-
-
-void
-e_day_view_stop_auto_scroll (EDayView *day_view)
-{
- if (day_view->auto_scroll_timeout_id != 0) {
- gtk_timeout_remove (day_view->auto_scroll_timeout_id);
- day_view->auto_scroll_timeout_id = 0;
- }
-}
-
-
-static gboolean
-e_day_view_auto_scroll_handler (gpointer data)
-{
- EDayView *day_view;
- EDayViewPosition pos;
- gint scroll_x, scroll_y, new_scroll_y, canvas_x, canvas_y, row, day;
- GtkAdjustment *adj;
-
- g_return_val_if_fail (E_IS_DAY_VIEW (data), FALSE);
-
- day_view = E_DAY_VIEW (data);
-
- GDK_THREADS_ENTER ();
-
- if (day_view->auto_scroll_delay > 0) {
- day_view->auto_scroll_delay--;
- GDK_THREADS_LEAVE ();
- return TRUE;
- }
-
- gnome_canvas_get_scroll_offsets (GNOME_CANVAS (day_view->main_canvas),
- &scroll_x, &scroll_y);
-
- adj = GTK_LAYOUT (day_view->main_canvas)->vadjustment;
-
- if (day_view->auto_scroll_up)
- new_scroll_y = MAX (scroll_y - adj->step_increment, 0);
- else
- new_scroll_y = MIN (scroll_y + adj->step_increment,
- adj->upper - adj->page_size);
-
- if (new_scroll_y != scroll_y) {
- /* NOTE: This reduces flicker, but only works if we don't use
- canvas items which have X windows. */
- gtk_layout_freeze (GTK_LAYOUT (day_view->main_canvas));
-
- gnome_canvas_scroll_to (GNOME_CANVAS (day_view->main_canvas),
- scroll_x, new_scroll_y);
-
- gtk_layout_thaw (GTK_LAYOUT (day_view->main_canvas));
- }
-
- canvas_x = day_view->last_mouse_x + scroll_x;
- canvas_y = day_view->last_mouse_y + new_scroll_y;
-
- /* The last_mouse_x position is set to -1 when we are selecting using
- the time column. In this case we set canvas_x to 0 and we ignore
- the resulting day. */
- if (day_view->last_mouse_x == -1)
- canvas_x = 0;
-
- /* Update the selection/resize/drag if necessary. */
- pos = e_day_view_convert_position_in_main_canvas (day_view,
- canvas_x, canvas_y,
- &day, &row, NULL);
-
- if (day_view->last_mouse_x == -1)
- day = -1;
-
- if (pos != E_DAY_VIEW_POS_OUTSIDE) {
- if (day_view->selection_is_being_dragged) {
- e_day_view_update_selection (day_view, day, row);
- } else if (day_view->resize_drag_pos != E_DAY_VIEW_POS_NONE) {
- e_day_view_update_resize (day_view, row);
- } else if (day_view->drag_item->object.flags
- & GNOME_CANVAS_ITEM_VISIBLE) {
- e_day_view_update_main_canvas_drag (day_view, row,
- day);
- }
- }
-
- GDK_THREADS_LEAVE ();
- return TRUE;
-}
-
-
-gboolean
-e_day_view_get_event_position (EDayView *day_view,
- gint day,
- gint event_num,
- gint *item_x,
- gint *item_y,
- gint *item_w,
- gint *item_h)
-{
- EDayViewEvent *event;
- gint start_row, end_row, cols_in_row, start_col, num_columns;
-
- event = &g_array_index (day_view->events[day], EDayViewEvent,
- event_num);
-
- /* If the event is flagged as not displayed, return FALSE. */
- if (event->num_columns == 0)
- return FALSE;
-
- start_row = event->start_minute / day_view->mins_per_row;
- end_row = (event->end_minute - 1) / day_view->mins_per_row;
- cols_in_row = day_view->cols_per_row[day][start_row];
- start_col = event->start_row_or_col;
- num_columns = event->num_columns;
-
- if (cols_in_row == 0)
- return FALSE;
-
- /* If the event is being resize, use the resize position. */
- if (day_view->resize_drag_pos != E_DAY_VIEW_POS_NONE
- && day_view->resize_event_day == day
- && day_view->resize_event_num == event_num) {
- if (day_view->resize_drag_pos == E_DAY_VIEW_POS_TOP_EDGE)
- start_row = day_view->resize_start_row;
- else if (day_view->resize_drag_pos == E_DAY_VIEW_POS_BOTTOM_EDGE)
- end_row = day_view->resize_end_row;
- }
-
-
- *item_x = day_view->day_offsets[day]
- + day_view->day_widths[day] * start_col / cols_in_row;
- *item_w = day_view->day_widths[day] * num_columns / cols_in_row
- - E_DAY_VIEW_GAP_WIDTH;
- *item_w = MAX (*item_w, 0);
- *item_y = start_row * day_view->row_height;
-#if 0
- *item_h = (end_row - start_row + 1) * day_view->row_height;
-#else
- /* This makes the event end on the grid line of the next row,
- which maybe looks nicer if you have 2 events on consecutive rows. */
- *item_h = (end_row - start_row + 1) * day_view->row_height + 1;
-#endif
- return TRUE;
-}
-
-
-gboolean
-e_day_view_get_long_event_position (EDayView *day_view,
- gint event_num,
- gint *start_day,
- gint *end_day,
- gint *item_x,
- gint *item_y,
- gint *item_w,
- gint *item_h)
-{
- EDayViewEvent *event;
-
- event = &g_array_index (day_view->long_events, EDayViewEvent,
- event_num);
-
- /* If the event is flagged as not displayed, return FALSE. */
- if (event->num_columns == 0)
- return FALSE;
-
- if (!e_day_view_find_long_event_days (day_view, event,
- start_day, end_day))
- return FALSE;
-
- /* If the event is being resize, use the resize position. */
- if (day_view->resize_drag_pos != E_DAY_VIEW_POS_NONE
- && day_view->resize_event_day == E_DAY_VIEW_LONG_EVENT
- && day_view->resize_event_num == event_num) {
- if (day_view->resize_drag_pos == E_DAY_VIEW_POS_LEFT_EDGE)
- *start_day = day_view->resize_start_row;
- else if (day_view->resize_drag_pos == E_DAY_VIEW_POS_RIGHT_EDGE)
- *end_day = day_view->resize_end_row;
- }
-
- *item_x = day_view->day_offsets[*start_day] + E_DAY_VIEW_BAR_WIDTH;
- *item_w = day_view->day_offsets[*end_day + 1] - *item_x
- - E_DAY_VIEW_GAP_WIDTH;
- *item_w = MAX (*item_w, 0);
- *item_y = (event->start_row_or_col + 1) * day_view->top_row_height;
- *item_h = day_view->top_row_height - E_DAY_VIEW_TOP_CANVAS_Y_GAP;
- return TRUE;
-}
-
-
-/* Converts a position within the entire top canvas to a day & event and
- a place within the event if appropriate. If event_num_return is NULL, it
- simply returns the grid position without trying to find the event. */
-static EDayViewPosition
-e_day_view_convert_position_in_top_canvas (EDayView *day_view,
- gint x,
- gint y,
- gint *day_return,
- gint *event_num_return)
-{
- EDayViewEvent *event;
- gint day, row, col;
- gint event_num, start_day, end_day, item_x, item_y, item_w, item_h;
-
- *day_return = -1;
- if (event_num_return)
- *event_num_return = -1;
-
- if (x < 0 || y < 0)
- return E_DAY_VIEW_POS_OUTSIDE;
-
- row = y / day_view->top_row_height - 1;
-
- day = -1;
- for (col = 1; col <= day_view->days_shown; col++) {
- if (x < day_view->day_offsets[col]) {
- day = col - 1;
- break;
- }
- }
- if (day == -1)
- return E_DAY_VIEW_POS_OUTSIDE;
-
- *day_return = day;
-
- /* If only the grid position is wanted, return. */
- if (event_num_return == NULL)
- return E_DAY_VIEW_POS_NONE;
-
- for (event_num = 0; event_num < day_view->long_events->len;
- event_num++) {
- event = &g_array_index (day_view->long_events, EDayViewEvent,
- event_num);
-
- if (event->start_row_or_col != row)
- continue;
-
- if (!e_day_view_get_long_event_position (day_view, event_num,
- &start_day, &end_day,
- &item_x, &item_y,
- &item_w, &item_h))
- continue;
-
- if (x < item_x)
- continue;
-
- if (x >= item_x + item_w)
- continue;
-
- *event_num_return = event_num;
-
- if (x < item_x + E_DAY_VIEW_LONG_EVENT_BORDER_WIDTH
- + E_DAY_VIEW_LONG_EVENT_X_PAD)
- return E_DAY_VIEW_POS_LEFT_EDGE;
-
- if (x >= item_x + item_w - E_DAY_VIEW_LONG_EVENT_BORDER_WIDTH
- - E_DAY_VIEW_LONG_EVENT_X_PAD)
- return E_DAY_VIEW_POS_RIGHT_EDGE;
-
- return E_DAY_VIEW_POS_EVENT;
- }
-
- return E_DAY_VIEW_POS_NONE;
-}
-
-
-/* Converts a position within the entire main canvas to a day, row, event and
- a place within the event if appropriate. If event_num_return is NULL, it
- simply returns the grid position without trying to find the event. */
-static EDayViewPosition
-e_day_view_convert_position_in_main_canvas (EDayView *day_view,
- gint x,
- gint y,
- gint *day_return,
- gint *row_return,
- gint *event_num_return)
-{
- gint day, row, col, event_num;
- gint item_x, item_y, item_w, item_h;
-
- *day_return = -1;
- *row_return = -1;
- if (event_num_return)
- *event_num_return = -1;
-
- /* Check the position is inside the canvas, and determine the day
- and row. */
- if (x < 0 || y < 0)
- return E_DAY_VIEW_POS_OUTSIDE;
-
- row = y / day_view->row_height;
- if (row >= day_view->rows)
- return E_DAY_VIEW_POS_OUTSIDE;
-
- day = -1;
- for (col = 1; col <= day_view->days_shown; col++) {
- if (x < day_view->day_offsets[col]) {
- day = col - 1;
- break;
- }
- }
- if (day == -1)
- return E_DAY_VIEW_POS_OUTSIDE;
-
- *day_return = day;
- *row_return = row;
-
- /* If only the grid position is wanted, return. */
- if (event_num_return == NULL)
- return E_DAY_VIEW_POS_NONE;
-
- /* Check the selected item first, since the horizontal resizing bars
- may be above other events. */
- if (day_view->resize_bars_event_day == day) {
- if (e_day_view_get_event_position (day_view, day,
- day_view->resize_bars_event_num,
- &item_x, &item_y,
- &item_w, &item_h)) {
- if (x >= item_x && x < item_x + item_w) {
- *event_num_return = day_view->resize_bars_event_num;
- if (y >= item_y - E_DAY_VIEW_BAR_HEIGHT
- && y < item_y + E_DAY_VIEW_EVENT_BORDER_HEIGHT)
- return E_DAY_VIEW_POS_TOP_EDGE;
- if (y >= item_y + item_h - E_DAY_VIEW_EVENT_BORDER_HEIGHT
- && y < item_y + item_h + E_DAY_VIEW_BAR_HEIGHT)
- return E_DAY_VIEW_POS_BOTTOM_EDGE;
- }
- }
- }
-
- /* Try to find the event at the found position. */
- *event_num_return = -1;
- for (event_num = 0; event_num < day_view->events[day]->len;
- event_num++) {
- if (!e_day_view_get_event_position (day_view, day, event_num,
- &item_x, &item_y,
- &item_w, &item_h))
- continue;
-
- if (x < item_x || x >= item_x + item_w
- || y < item_y || y >= item_y + item_h)
- continue;
-
- *event_num_return = event_num;
-
- if (x < item_x + E_DAY_VIEW_BAR_WIDTH)
- return E_DAY_VIEW_POS_LEFT_EDGE;
-
- if (y < item_y + E_DAY_VIEW_EVENT_BORDER_HEIGHT
- + E_DAY_VIEW_EVENT_Y_PAD)
- return E_DAY_VIEW_POS_TOP_EDGE;
-
- if (y >= item_y + item_h - E_DAY_VIEW_EVENT_BORDER_HEIGHT
- - E_DAY_VIEW_EVENT_Y_PAD)
- return E_DAY_VIEW_POS_BOTTOM_EDGE;
-
- return E_DAY_VIEW_POS_EVENT;
- }
-
- return E_DAY_VIEW_POS_NONE;
-}
-
-
-static gint
-e_day_view_on_top_canvas_drag_motion (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time,
- EDayView *day_view)
-{
- gint scroll_x, scroll_y;
-
- gnome_canvas_get_scroll_offsets (GNOME_CANVAS (widget),
- &scroll_x, &scroll_y);
- day_view->drag_event_x = x + scroll_x;
- day_view->drag_event_y = y + scroll_y;
-
- e_day_view_reshape_top_canvas_drag_item (day_view);
-
- return TRUE;
-}
-
-
-static void
-e_day_view_reshape_top_canvas_drag_item (EDayView *day_view)
-{
- EDayViewPosition pos;
- gint x, y, day;
-
- /* Calculate the day & start row of the event being dragged, using
- the current mouse position. */
- x = day_view->drag_event_x;
- y = day_view->drag_event_y;
- pos = e_day_view_convert_position_in_top_canvas (day_view, x, y,
- &day, NULL);
- /* This shouldn't really happen in a drag. */
- if (pos == E_DAY_VIEW_POS_OUTSIDE)
- return;
-
- if (day_view->drag_event_day == E_DAY_VIEW_LONG_EVENT)
- day -= day_view->drag_event_offset;
- day = MAX (day, 0);
-
- e_day_view_update_top_canvas_drag (day_view, day);
-}
-
-
-static void
-e_day_view_update_top_canvas_drag (EDayView *day_view,
- gint day)
-{
- EDayViewEvent *event = NULL;
- gint row, num_days, start_day, end_day;
- gdouble item_x, item_y, item_w, item_h;
- GdkFont *font;
- gchar *text;
-
-
- /* Calculate the event's position. If the event is in the same
- position we started in, we use the same columns. */
- row = day_view->rows_in_top_display + 1;
- num_days = 1;
-
- if (day_view->drag_event_day == E_DAY_VIEW_LONG_EVENT) {
- event = &g_array_index (day_view->long_events, EDayViewEvent,
- day_view->drag_event_num);
- row = event->start_row_or_col + 1;
-
- if (!e_day_view_find_long_event_days (day_view, event,
- &start_day, &end_day))
- return;
-
- num_days = end_day - start_day + 1;
-
- /* Make sure we don't go off the screen. */
- day = MIN (day, day_view->days_shown - num_days);
-
- } else if (day_view->drag_event_day != -1) {
- event = &g_array_index (day_view->events[day_view->drag_event_day],
- EDayViewEvent,
- day_view->drag_event_num);
- }
-
- /* If the position hasn't changed, just return. */
- if (day_view->drag_last_day == day
- && (day_view->drag_long_event_item->object.flags
- & GNOME_CANVAS_ITEM_VISIBLE))
- return;
-
- day_view->drag_last_day = day;
-
-
- item_x = day_view->day_offsets[day] + E_DAY_VIEW_BAR_WIDTH;
- item_w = day_view->day_offsets[day + num_days] - item_x
- - E_DAY_VIEW_GAP_WIDTH;
- item_y = row * day_view->top_row_height;
- item_h = day_view->top_row_height - E_DAY_VIEW_TOP_CANVAS_Y_GAP;
-
-
- /* Set the positions of the event & associated items. */
- gnome_canvas_item_set (day_view->drag_long_event_rect_item,
- "x1", item_x,
- "y1", item_y,
- "x2", item_x + item_w - 1,
- "y2", item_y + item_h - 1,
- NULL);
-
- font = GTK_WIDGET (day_view)->style->font;
- gnome_canvas_item_set (day_view->drag_long_event_item,
- "font_gdk", font,
- "clip_width", item_w - (E_DAY_VIEW_LONG_EVENT_BORDER_WIDTH + E_DAY_VIEW_LONG_EVENT_X_PAD) * 2,
- "clip_height", item_h - (E_DAY_VIEW_LONG_EVENT_BORDER_HEIGHT + E_DAY_VIEW_LONG_EVENT_Y_PAD) * 2,
- NULL);
- e_canvas_item_move_absolute (day_view->drag_long_event_item,
- item_x + E_DAY_VIEW_LONG_EVENT_BORDER_WIDTH + E_DAY_VIEW_LONG_EVENT_X_PAD,
- item_y + E_DAY_VIEW_LONG_EVENT_BORDER_HEIGHT + E_DAY_VIEW_LONG_EVENT_Y_PAD);
-
- if (!(day_view->drag_long_event_rect_item->object.flags & GNOME_CANVAS_ITEM_VISIBLE)) {
- gnome_canvas_item_raise_to_top (day_view->drag_long_event_rect_item);
- gnome_canvas_item_show (day_view->drag_long_event_rect_item);
- }
-
- /* Set the text, if necessary. We don't want to set the text every
- time it moves, so we check if it is currently invisible and only
- set the text then. */
- if (!(day_view->drag_long_event_item->object.flags
- & GNOME_CANVAS_ITEM_VISIBLE)) {
- CalComponentText summary;
-
- cal_component_get_summary (event->comp, &summary);
- if (event) {
- cal_component_get_summary (event->comp, &summary);
- text = g_strdup (summary.value);
- } else {
- text = NULL;
- }
-
- gnome_canvas_item_set (day_view->drag_long_event_item,
- "text", text ? text : "",
- NULL);
- gnome_canvas_item_raise_to_top (day_view->drag_long_event_item);
- gnome_canvas_item_show (day_view->drag_long_event_item);
-
- g_free (text);
- }
-}
-
-
-static gint
-e_day_view_on_main_canvas_drag_motion (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time,
- EDayView *day_view)
-{
- gint scroll_x, scroll_y;
-
- gnome_canvas_get_scroll_offsets (GNOME_CANVAS (widget),
- &scroll_x, &scroll_y);
- day_view->drag_event_x = x + scroll_x;
- day_view->drag_event_y = y + scroll_y;
-
- e_day_view_reshape_main_canvas_drag_item (day_view);
- e_day_view_reshape_main_canvas_resize_bars (day_view);
-
- e_day_view_check_auto_scroll (day_view, x, y);
-
- return TRUE;
-}
-
-
-static void
-e_day_view_reshape_main_canvas_drag_item (EDayView *day_view)
-{
- EDayViewPosition pos;
- gint x, y, day, row;
-
- /* Calculate the day & start row of the event being dragged, using
- the current mouse position. */
- x = day_view->drag_event_x;
- y = day_view->drag_event_y;
- pos = e_day_view_convert_position_in_main_canvas (day_view, x, y,
- &day, &row, NULL);
- /* This shouldn't really happen in a drag. */
- if (pos == E_DAY_VIEW_POS_OUTSIDE)
- return;
-
- if (day_view->drag_event_day != -1
- && day_view->drag_event_day != E_DAY_VIEW_LONG_EVENT)
- row -= day_view->drag_event_offset;
- row = MAX (row, 0);
-
- e_day_view_update_main_canvas_drag (day_view, row, day);
-}
-
-
-static void
-e_day_view_update_main_canvas_drag (EDayView *day_view,
- gint row,
- gint day)
-{
- EDayViewEvent *event = NULL;
- gint cols_in_row, start_col, num_columns, num_rows, start_row, end_row;
- gdouble item_x, item_y, item_w, item_h;
- GdkFont *font;
- gchar *text;
-
- /* If the position hasn't changed, just return. */
- if (day_view->drag_last_day == day
- && day_view->drag_last_row == row
- && (day_view->drag_item->object.flags & GNOME_CANVAS_ITEM_VISIBLE))
- return;
-
- day_view->drag_last_day = day;
- day_view->drag_last_row = row;
-
- /* Calculate the event's position. If the event is in the same
- position we started in, we use the same columns. */
- cols_in_row = 1;
- start_row = 0;
- start_col = 0;
- num_columns = 1;
- num_rows = 1;
-
- if (day_view->drag_event_day == E_DAY_VIEW_LONG_EVENT) {
- event = &g_array_index (day_view->long_events, EDayViewEvent,
- day_view->drag_event_num);
- } else if (day_view->drag_event_day != -1) {
- event = &g_array_index (day_view->events[day_view->drag_event_day],
- EDayViewEvent,
- day_view->drag_event_num);
- start_row = event->start_minute / day_view->mins_per_row;
- end_row = (event->end_minute - 1) / day_view->mins_per_row;
- num_rows = end_row - start_row + 1;
- }
-
- if (day_view->drag_event_day == day && start_row == row) {
- cols_in_row = day_view->cols_per_row[day][row];
- start_col = event->start_row_or_col;
- num_columns = event->num_columns;
- }
-
- item_x = day_view->day_offsets[day]
- + day_view->day_widths[day] * start_col / cols_in_row;
- item_w = day_view->day_widths[day] * num_columns / cols_in_row
- - E_DAY_VIEW_GAP_WIDTH;
- item_y = row * day_view->row_height;
- item_h = num_rows * day_view->row_height;
-
- /* Set the positions of the event & associated items. */
- gnome_canvas_item_set (day_view->drag_rect_item,
- "x1", item_x + E_DAY_VIEW_BAR_WIDTH - 1,
- "y1", item_y,
- "x2", item_x + item_w - 1,
- "y2", item_y + item_h - 1,
- NULL);
-
- gnome_canvas_item_set (day_view->drag_bar_item,
- "x1", item_x,
- "y1", item_y,
- "x2", item_x + E_DAY_VIEW_BAR_WIDTH - 1,
- "y2", item_y + item_h - 1,
- NULL);
-
- font = GTK_WIDGET (day_view)->style->font;
- gnome_canvas_item_set (day_view->drag_item,
- "font_gdk", font,
- "clip_width", item_w - E_DAY_VIEW_BAR_WIDTH - E_DAY_VIEW_EVENT_X_PAD * 2,
- "clip_height", item_h - (E_DAY_VIEW_EVENT_BORDER_HEIGHT + E_DAY_VIEW_EVENT_Y_PAD) * 2,
- NULL);
- e_canvas_item_move_absolute (day_view->drag_item,
- item_x + E_DAY_VIEW_BAR_WIDTH + E_DAY_VIEW_EVENT_X_PAD,
- item_y + E_DAY_VIEW_EVENT_BORDER_HEIGHT + E_DAY_VIEW_EVENT_Y_PAD);
-
- if (!(day_view->drag_bar_item->object.flags & GNOME_CANVAS_ITEM_VISIBLE)) {
- gnome_canvas_item_raise_to_top (day_view->drag_bar_item);
- gnome_canvas_item_show (day_view->drag_bar_item);
- }
-
- if (!(day_view->drag_rect_item->object.flags & GNOME_CANVAS_ITEM_VISIBLE)) {
- gnome_canvas_item_raise_to_top (day_view->drag_rect_item);
- gnome_canvas_item_show (day_view->drag_rect_item);
- }
-
- /* Set the text, if necessary. We don't want to set the text every
- time it moves, so we check if it is currently invisible and only
- set the text then. */
- if (!(day_view->drag_item->object.flags & GNOME_CANVAS_ITEM_VISIBLE)) {
- CalComponentText summary;
-
- if (event) {
- cal_component_get_summary (event->comp, &summary);
- text = g_strdup (summary.value);
- } else {
- text = NULL;
- }
-
- gnome_canvas_item_set (day_view->drag_item,
- "text", text ? text : "",
- NULL);
- gnome_canvas_item_raise_to_top (day_view->drag_item);
- gnome_canvas_item_show (day_view->drag_item);
-
- g_free (text);
- }
-}
-
-
-static void
-e_day_view_on_top_canvas_drag_leave (GtkWidget *widget,
- GdkDragContext *context,
- guint time,
- EDayView *day_view)
-{
- day_view->drag_last_day = -1;
-
- gnome_canvas_item_hide (day_view->drag_long_event_rect_item);
- gnome_canvas_item_hide (day_view->drag_long_event_item);
-}
-
-
-static void
-e_day_view_on_main_canvas_drag_leave (GtkWidget *widget,
- GdkDragContext *context,
- guint time,
- EDayView *day_view)
-{
- day_view->drag_last_day = -1;
-
- e_day_view_stop_auto_scroll (day_view);
-
- gnome_canvas_item_hide (day_view->drag_rect_item);
- gnome_canvas_item_hide (day_view->drag_bar_item);
- gnome_canvas_item_hide (day_view->drag_item);
-
- /* Hide the resize bars if they are being used in the drag. */
- if (day_view->drag_event_day == day_view->resize_bars_event_day
- && day_view->drag_event_num == day_view->resize_bars_event_num) {
- gnome_canvas_item_hide (day_view->main_canvas_top_resize_bar_item);
- gnome_canvas_item_hide (day_view->main_canvas_bottom_resize_bar_item);
- }
-}
-
-
-static void
-e_day_view_on_drag_begin (GtkWidget *widget,
- GdkDragContext *context,
- EDayView *day_view)
-{
- EDayViewEvent *event;
- gint day, event_num;
-
- day = day_view->drag_event_day;
- event_num = day_view->drag_event_num;
-
- /* These should both be set. */
- g_return_if_fail (day != -1);
- g_return_if_fail (event_num != -1);
-
- if (day == E_DAY_VIEW_LONG_EVENT)
- event = &g_array_index (day_view->long_events, EDayViewEvent,
- event_num);
- else
- event = &g_array_index (day_view->events[day], EDayViewEvent,
- event_num);
-
- /* Hide the text item, since it will be shown in the special drag
- items. */
- gnome_canvas_item_hide (event->canvas_item);
-}
-
-
-static void
-e_day_view_on_drag_end (GtkWidget *widget,
- GdkDragContext *context,
- EDayView *day_view)
-{
- EDayViewEvent *event;
- gint day, event_num;
-
- day = day_view->drag_event_day;
- event_num = day_view->drag_event_num;
-
- /* If the calendar has already been updated in drag_data_received()
- we just return. */
- if (day == -1 || event_num == -1)
- return;
-
- if (day == E_DAY_VIEW_LONG_EVENT) {
- event = &g_array_index (day_view->long_events, EDayViewEvent,
- event_num);
- gtk_widget_queue_draw (day_view->top_canvas);
- } else {
- event = &g_array_index (day_view->events[day], EDayViewEvent,
- event_num);
- gtk_widget_queue_draw (day_view->main_canvas);
- }
-
- /* Show the text item again. */
- gnome_canvas_item_show (event->canvas_item);
-
- day_view->drag_event_day = -1;
- day_view->drag_event_num = -1;
-}
-
-
-static void
-e_day_view_on_drag_data_get (GtkWidget *widget,
- GdkDragContext *context,
- GtkSelectionData *selection_data,
- guint info,
- guint time,
- EDayView *day_view)
-{
- EDayViewEvent *event;
- gint day, event_num;
- const char *event_uid;
-
- day = day_view->drag_event_day;
- event_num = day_view->drag_event_num;
-
- /* These should both be set. */
- g_return_if_fail (day != -1);
- g_return_if_fail (event_num != -1);
-
- if (day == E_DAY_VIEW_LONG_EVENT)
- event = &g_array_index (day_view->long_events,
- EDayViewEvent, event_num);
- else
- event = &g_array_index (day_view->events[day],
- EDayViewEvent, event_num);
-
-
- cal_component_get_uid (event->comp, &event_uid);
-
- g_return_if_fail (event_uid != NULL);
-
- if (info == TARGET_CALENDAR_EVENT) {
- gtk_selection_data_set (selection_data, selection_data->target,
- 8, event_uid, strlen (event_uid));
- }
-}
-
-
-static void
-e_day_view_on_top_canvas_drag_data_received (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- GtkSelectionData *data,
- guint info,
- guint time,
- EDayView *day_view)
-{
- EDayViewEvent *event=NULL;
- EDayViewPosition pos;
- gint day, start_day, end_day, num_days;
- gint start_offset, end_offset;
- gchar *event_uid;
- CalComponent *comp;
- CalComponentDateTime date;
- struct icaltimetype itt;
- time_t dt;
-
- if ((data->length >= 0) && (data->format == 8)) {
- pos = e_day_view_convert_position_in_top_canvas (day_view,
- x, y, &day,
- NULL);
- if (pos != E_DAY_VIEW_POS_OUTSIDE) {
- const char *uid;
- num_days = 1;
- start_offset = 0;
- end_offset = -1;
-
- if (day_view->drag_event_day == E_DAY_VIEW_LONG_EVENT) {
- event = &g_array_index (day_view->long_events, EDayViewEvent,
- day_view->drag_event_num);
- day -= day_view->drag_event_offset;
- day = MAX (day, 0);
-
- e_day_view_find_long_event_days (day_view,
- event,
- &start_day,
- &end_day);
- num_days = end_day - start_day + 1;
- /* Make sure we don't go off the screen. */
- day = MIN (day, day_view->days_shown - num_days);
-
- start_offset = event->start_minute;
- end_offset = event->end_minute;
- } else if (day_view->drag_event_day != -1) {
- event = &g_array_index (day_view->events[day_view->drag_event_day],
- EDayViewEvent,
- day_view->drag_event_num);
- }
-
- event_uid = data->data;
-
- cal_component_get_uid (event->comp, &uid);
-
- if (!event_uid || !uid || strcmp (event_uid, uid))
- g_warning ("Unexpected event UID");
-
- /* We use a temporary shallow of the comp since we
- don't want to change the original comp here.
- Otherwise we would not detect that the event's time
- had changed in the "update_event" callback. */
-
- comp = cal_component_clone (event->comp);
-
- date.value = &itt;
- date.tzid = NULL;
-
- dt = day_view->day_starts[day] + start_offset * 60;
- *date.value = icaltime_from_timet (dt, FALSE);
- cal_component_set_dtstart (comp, &date);
- if (end_offset == -1 || end_offset == 0)
- dt = day_view->day_starts[day + num_days];
- else
- dt = day_view->day_starts[day + num_days - 1] + end_offset * 60;
- *date.value = icaltime_from_timet (dt, FALSE);
- cal_component_set_dtend (comp, &date);
-
- gtk_drag_finish (context, TRUE, TRUE, time);
-
- /* Reset this since it will be invalid. */
- day_view->drag_event_day = -1;
-
- /* Show the text item again, just in case it hasn't
- moved. If we don't do this it may not appear. */
- if (event->canvas_item)
- gnome_canvas_item_show (event->canvas_item);
-
- if (!cal_client_update_object (day_view->client, comp))
- g_message ("e_day_view_on_top_canvas_drag_data_received(): Could "
- "not update the object!");
-
- gtk_object_unref (GTK_OBJECT (comp));
-
- return;
- }
- }
-
- gtk_drag_finish (context, FALSE, FALSE, time);
-}
-
-
-static void
-e_day_view_on_main_canvas_drag_data_received (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- GtkSelectionData *data,
- guint info,
- guint time,
- EDayView *day_view)
-{
- EDayViewEvent *event = NULL;
- EDayViewPosition pos;
- gint day, row, start_row, end_row, num_rows, scroll_x, scroll_y;
- gint start_offset, end_offset;
- gchar *event_uid;
- CalComponent *comp;
- CalComponentDateTime date;
- struct icaltimetype itt;
- time_t dt;
-
- gnome_canvas_get_scroll_offsets (GNOME_CANVAS (widget),
- &scroll_x, &scroll_y);
- x += scroll_x;
- y += scroll_y;
-
- if ((data->length >= 0) && (data->format == 8)) {
- pos = e_day_view_convert_position_in_main_canvas (day_view,
- x, y, &day,
- &row, NULL);
- if (pos != E_DAY_VIEW_POS_OUTSIDE) {
- const char *uid;
- num_rows = 1;
- start_offset = 0;
- end_offset = 0;
-
- if (day_view->drag_event_day == E_DAY_VIEW_LONG_EVENT) {
- event = &g_array_index (day_view->long_events, EDayViewEvent,
- day_view->drag_event_num);
- } else if (day_view->drag_event_day != -1) {
- event = &g_array_index (day_view->events[day_view->drag_event_day],
- EDayViewEvent,
- day_view->drag_event_num);
- row -= day_view->drag_event_offset;
-
- /* Calculate time offset from start row. */
- start_row = event->start_minute / day_view->mins_per_row;
- end_row = (event->end_minute - 1) / day_view->mins_per_row;
- num_rows = end_row - start_row + 1;
-
- start_offset = event->start_minute % day_view->mins_per_row;
- end_offset = event->end_minute % day_view->mins_per_row;
- if (end_offset != 0)
- end_offset = day_view->mins_per_row - end_offset;
- }
-
- event_uid = data->data;
-
- cal_component_get_uid (event->comp, &uid);
- if (!event_uid || !uid || strcmp (event_uid, uid))
- g_warning ("Unexpected event UID");
-
- /* We use a temporary shallow copy of comp since we
- don't want to change the original comp here.
- Otherwise we would not detect that the event's time
- had changed in the "update_event" callback. */
- comp = cal_component_clone (event->comp);
-
- date.value = &itt;
- date.tzid = NULL;
-
- dt = e_day_view_convert_grid_position_to_time (day_view, day, row) + start_offset * 60;
- *date.value = icaltime_from_timet (dt, FALSE);
- cal_component_set_dtstart (comp, &date);
- dt = e_day_view_convert_grid_position_to_time (day_view, day, row + num_rows) - end_offset * 60;
- *date.value = icaltime_from_timet (dt, FALSE);
- cal_component_set_dtend (comp, &date);
-
- gtk_drag_finish (context, TRUE, TRUE, time);
-
- /* Reset this since it will be invalid. */
- day_view->drag_event_day = -1;
-
- /* Show the text item again, just in case it hasn't
- moved. If we don't do this it may not appear. */
- if (event->canvas_item)
- gnome_canvas_item_show (event->canvas_item);
-
- if (!cal_client_update_object (day_view->client, comp))
- g_message ("e_day_view_on_main_canvas_drag_data_received(): "
- "Could not update the object!");
-
- gtk_object_unref (GTK_OBJECT (comp));
-
- return;
- }
- }
-
- gtk_drag_finish (context, FALSE, FALSE, time);
-}
-
-
-/* Converts an hour from 0-23 to the preferred time format, and returns the
- suffix to add and the width of it in the normal font. */
-void
-e_day_view_convert_time_to_display (EDayView *day_view,
- gint hour,
- gint *display_hour,
- gchar **suffix,
- gint *suffix_width)
-{
- /* Calculate the actual hour number to display. For 12-hour
- format we convert 0-23 to 12-11am/12-11pm. */
- *display_hour = hour;
- if (day_view->use_24_hour_format) {
- *suffix = "";
- *suffix_width = 0;
- } else {
- if (hour < 12) {
- *suffix = day_view->am_string;
- *suffix_width = day_view->am_string_width;
- } else {
- *display_hour -= 12;
- *suffix = day_view->pm_string;
- *suffix_width = day_view->pm_string_width;
- }
-
- /* 12-hour uses 12:00 rather than 0:00. */
- if (*display_hour == 0)
- *display_hour = 12;
- }
-}
-
-
-gint
-e_day_view_get_time_string_width (EDayView *day_view)
-{
- gint time_width;
-
- time_width = day_view->digit_width * 4 + day_view->colon_width;
-
- if (!day_view->use_24_hour_format)
- time_width += MAX (day_view->am_string_width,
- day_view->pm_string_width);
-
- return time_width;
-}
diff --git a/calendar/gui/e-day-view.h b/calendar/gui/e-day-view.h
deleted file mode 100644
index 18f8187951..0000000000
--- a/calendar/gui/e-day-view.h
+++ /dev/null
@@ -1,615 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 1999, Helix Code, Inc.
- * Copyright 1999, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-#ifndef _E_DAY_VIEW_H_
-#define _E_DAY_VIEW_H_
-
-#include <time.h>
-#include <gtk/gtktable.h>
-#include <libgnomeui/gnome-canvas.h>
-
-#include "gnome-cal.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/*
- * EDayView - displays the Day & Work-Week views of the calendar.
- */
-
-/* The maximum number of days shown. We use the week view for anything more
- than about 9 days. */
-#define E_DAY_VIEW_MAX_DAYS 10
-
-/* This is used as a special code to signify a long event instead of the day
- of a normal event. */
-#define E_DAY_VIEW_LONG_EVENT E_DAY_VIEW_MAX_DAYS
-
-/* The maximum number of columns of appointments within a day. */
-#define E_DAY_VIEW_MAX_COLUMNS 6
-
-/* The width of the gap between appointments. This should be at least
- E_DAY_VIEW_BAR_WIDTH, since in the top canvas we use this space to draw
- the triangle to represent continuing events. */
-#define E_DAY_VIEW_GAP_WIDTH 7
-
-/* The width of the bars down the left of each column and appointment.
- This includes the borders on each side of it. */
-#define E_DAY_VIEW_BAR_WIDTH 7
-
-/* The height of the horizontal bar above & beneath the selected event.
- This includes the borders on the top and bottom. */
-#define E_DAY_VIEW_BAR_HEIGHT 6
-
-/* The size of the reminder & recurrence icons, and padding around them. */
-#define E_DAY_VIEW_ICON_WIDTH 16
-#define E_DAY_VIEW_ICON_HEIGHT 16
-#define E_DAY_VIEW_ICON_X_PAD 0
-#define E_DAY_VIEW_ICON_Y_PAD 0
-
-/* The size of the border around the event. */
-#define E_DAY_VIEW_EVENT_BORDER_WIDTH 1
-#define E_DAY_VIEW_EVENT_BORDER_HEIGHT 1
-
-/* The padding on each side of the event text. */
-#define E_DAY_VIEW_EVENT_X_PAD 2
-#define E_DAY_VIEW_EVENT_Y_PAD 1
-
-/* The padding on each side of the event text for events in the top canvas. */
-#define E_DAY_VIEW_LONG_EVENT_X_PAD 2
-#define E_DAY_VIEW_LONG_EVENT_Y_PAD 2
-
-/* The size of the border around the long events in the top canvas. */
-#define E_DAY_VIEW_LONG_EVENT_BORDER_WIDTH 1
-#define E_DAY_VIEW_LONG_EVENT_BORDER_HEIGHT 1
-
-/* The space between the time and the icon/text in the top canvas. */
-#define E_DAY_VIEW_LONG_EVENT_TIME_X_PAD 2
-
-/* The gap between rows in the top canvas. */
-#define E_DAY_VIEW_TOP_CANVAS_Y_GAP 2
-
-
-/* These are used to get/set the working days in the week. The bit-flags are
- combined together. The bits must be from 0 (Sun) to 6 (Sat) to match the
- day values used by localtime etc. */
-typedef enum
-{
- E_DAY_VIEW_SUNDAY = 1 << 0,
- E_DAY_VIEW_MONDAY = 1 << 1,
- E_DAY_VIEW_TUESDAY = 1 << 2,
- E_DAY_VIEW_WEDNESDAY = 1 << 3,
- E_DAY_VIEW_THURSDAY = 1 << 4,
- E_DAY_VIEW_FRIDAY = 1 << 5,
- E_DAY_VIEW_SATURDAY = 1 << 6
-} EDayViewDays;
-
-
-/* These are used to specify the type of an appointment. They match those
- used in EMeetingTimeSelector. */
-typedef enum
-{
- E_DAY_VIEW_BUSY_TENTATIVE = 0,
- E_DAY_VIEW_BUSY_OUT_OF_OFFICE = 1,
- E_DAY_VIEW_BUSY_BUSY = 2,
-
- E_DAY_VIEW_BUSY_LAST = 3
-} EDayViewBusyType;
-
-/* This is used to specify the format used when displaying the dates.
- The full format is like 'Thursday 12 September'. The abbreviated format is
- like 'Thu 12 Sep'. The no weekday format is like '12 Sep'. The short format
- is like '12'. The actual format used is determined in
- e_day_view_recalc_cell_sizes(), once we know the font being used. */
-typedef enum
-{
- E_DAY_VIEW_DATE_FULL,
- E_DAY_VIEW_DATE_ABBREVIATED,
- E_DAY_VIEW_DATE_NO_WEEKDAY,
- E_DAY_VIEW_DATE_SHORT
-} EDayViewDateFormat;
-
-/* These index our colors array. */
-typedef enum
-{
- E_DAY_VIEW_COLOR_BG_WORKING,
- E_DAY_VIEW_COLOR_BG_NOT_WORKING,
- E_DAY_VIEW_COLOR_BG_SELECTED,
- E_DAY_VIEW_COLOR_BG_GRID,
-
- E_DAY_VIEW_COLOR_BG_TOP_CANVAS,
- E_DAY_VIEW_COLOR_BG_TOP_CANVAS_SELECTED,
- E_DAY_VIEW_COLOR_BG_TOP_CANVAS_GRID,
-
- E_DAY_VIEW_COLOR_EVENT_VBAR,
- E_DAY_VIEW_COLOR_EVENT_BACKGROUND,
- E_DAY_VIEW_COLOR_EVENT_BORDER,
-
- E_DAY_VIEW_COLOR_LONG_EVENT_BACKGROUND,
- E_DAY_VIEW_COLOR_LONG_EVENT_BORDER,
-
- E_DAY_VIEW_COLOR_LAST
-} EDayViewColors;
-
-/* These specify which part of the selection we are dragging, if any. */
-typedef enum
-{
- E_DAY_VIEW_DRAG_START,
- E_DAY_VIEW_DRAG_END
-} EDayViewDragPosition;
-
-/* Specifies the position of the mouse. */
-typedef enum
-{
- E_DAY_VIEW_POS_OUTSIDE,
- E_DAY_VIEW_POS_NONE,
- E_DAY_VIEW_POS_EVENT,
- E_DAY_VIEW_POS_LEFT_EDGE,
- E_DAY_VIEW_POS_RIGHT_EDGE,
- E_DAY_VIEW_POS_TOP_EDGE,
- E_DAY_VIEW_POS_BOTTOM_EDGE
-} EDayViewPosition;
-
-typedef struct _EDayViewEvent EDayViewEvent;
-struct _EDayViewEvent {
- CalComponent *comp;
-
- /* These are the times of this specific occurrence of the event. */
- time_t start;
- time_t end;
-
- /* For events in the main canvas, this contains the start column.
- For long events in the top canvas, this is its row. */
- guint8 start_row_or_col;
-
- /* For events in the main canvas, this is the number of columns that
- it covers. For long events this is set to 1 if the event is shown.
- For both types of events this is set to 0 if the event is not shown,
- i.e. it couldn't fit into the display. Currently long events are
- always shown as we just increase the height of the top canvas. */
- guint8 num_columns;
-
- /* These are minute offsets from the first time shown in the view.
- They range from 0 to 24 * 60. Currently the main canvas always
- starts at 12am and the code to handle starting at other times
- isn't finished. */
- guint16 start_minute;
- guint16 end_minute;
-
- /* This is the EText item containing the event summary. */
- GnomeCanvasItem *canvas_item;
-};
-
-
-#define E_DAY_VIEW(obj) GTK_CHECK_CAST (obj, e_day_view_get_type (), EDayView)
-#define E_DAY_VIEW_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, e_day_view_get_type (), EDayViewClass)
-#define E_IS_DAY_VIEW(obj) GTK_CHECK_TYPE (obj, e_day_view_get_type ())
-
-
-typedef struct _EDayView EDayView;
-typedef struct _EDayViewClass EDayViewClass;
-
-struct _EDayView
-{
- GtkTable table;
-
- /* The top canvas where the dates and long appointments are shown. */
- GtkWidget *top_canvas;
- GnomeCanvasItem *top_canvas_item;
-
- /* The main canvas where the rest of the appointments are shown. */
- GtkWidget *main_canvas;
- GnomeCanvasItem *main_canvas_item;
-
- /* The canvas displaying the times of the day. */
- GtkWidget *time_canvas;
- GnomeCanvasItem *time_canvas_item;
-
- GtkWidget *vscrollbar;
-
- /* The calendar we are associated with. */
- GnomeCalendar *calendar;
-
- /* Calendar client object we are monitoring */
- CalClient *client;
-
- /* S-expression for query and the query object */
- char *sexp;
- CalQuery *query;
-
- /* The start and end of the days shown. */
- time_t lower;
- time_t upper;
-
- /* Whether we are showing the work-week view. */
- gboolean work_week_view;
-
- /* The number of days we are showing. Usually 1 or 5, but can be up
- to E_DAY_VIEW_MAX_DAYS, e.g. when the user selects a range of
- days in the date navigator. */
- gint days_shown;
-
- /* The start of each day & an extra element to hold the last time. */
- time_t day_starts[E_DAY_VIEW_MAX_DAYS + 1];
-
-
- /* An array of EDayViewEvent elements for the top view and each day. */
- GArray *long_events;
- GArray *events[E_DAY_VIEW_MAX_DAYS];
-
- /* These are set to FALSE whenever an event in the corresponding array
- is changed. Any function that needs the events sorted calls
- e_day_view_ensure_events_sorted(). */
- gboolean long_events_sorted;
- gboolean events_sorted[E_DAY_VIEW_MAX_DAYS];
-
- /* This is TRUE if we need to relayout the events before drawing. */
- gboolean long_events_need_layout;
- gboolean need_layout[E_DAY_VIEW_MAX_DAYS];
-
- /* This is TRUE if we need to reshape the canvas items, but a full
- layout is not necessary. */
- gboolean long_events_need_reshape;
- gboolean need_reshape[E_DAY_VIEW_MAX_DAYS];
-
- /* The number of minutes per row. 5, 10, 15, 30 or 60. */
- gint mins_per_row;
-
- /* The number of rows needed, depending on the times shown and the
- minutes per row. */
- gint rows;
-
- /* The height of each row. */
- gint row_height;
-
- /* The number of rows in the top display. */
- gint rows_in_top_display;
-
- /* The height of each row in the top canvas. */
- gint top_row_height;
-
- /* The first and last times shown in the display. The last time isn't
- included in the range. Default is 0:00-24:00 */
- gint first_hour_shown;
- gint first_minute_shown;
- gint last_hour_shown;
- gint last_minute_shown;
-
- /* Bitwise combination of working days. Defaults to Mon-Fri. */
- EDayViewDays working_days;
-
- /* The start and end of the work day, rounded to the nearest row. */
- gint work_day_start_hour;
- gint work_day_start_minute;
- gint work_day_end_hour;
- gint work_day_end_minute;
-
- /* Whether we use 12-hour of 24-hour format. */
- gboolean use_24_hour_format;
-
- /* Whether we use show event end times in the main canvas. */
- gboolean show_event_end_times;
-
- /* The first day of the week, 0 (Monday) to 6 (Sunday). */
- gint week_start_day;
-
- /* This is set to TRUE when the widget is created, so it scrolls to
- the start of the working day when first shown. */
- gboolean scroll_to_work_day;
-
- /* This is the width & offset of each of the day columns in the
- display. */
- gint day_widths[E_DAY_VIEW_MAX_DAYS];
- gint day_offsets[E_DAY_VIEW_MAX_DAYS + 1];
-
- /* An array holding the number of columns in each row, in each day.
- Note that there are a maximum of 12 * 24 rows (when a row is 5 mins)
- but we don't always have that many rows. */
- guint8 cols_per_row[E_DAY_VIEW_MAX_DAYS][12 * 24];
-
- /* Sizes of the various time strings. */
- gint small_hour_widths[24];
- gint max_small_hour_width;
- gint max_minute_width;
- gint colon_width;
- gint digit_width; /* Size of '0' character. */
-
- /* This specifies how we are displaying the dates at the top. */
- EDayViewDateFormat date_format;
-
- /* These are the longest month & weekday names in the current font.
- Months are 0 to 11. Weekdays are 0 (Sun) to 6 (Sat). */
- gint longest_month_name;
- gint longest_abbreviated_month_name;
- gint longest_weekday_name;
- gint longest_abbreviated_weekday_name;
-
- /* The large font used to display the hours. I don't think we need a
- fontset since we only display numbers. */
- GdkFont *large_font;
-
- /* The GC used for painting in different colors. */
- GdkGC *main_gc;
-
- /* The icons. */
- GdkPixmap *reminder_icon;
- GdkBitmap *reminder_mask;
- GdkPixmap *recurrence_icon;
- GdkBitmap *recurrence_mask;
-
- /* Colors for drawing. */
- GdkColor colors[E_DAY_VIEW_COLOR_LAST];
-
- /* The normal & resizing cursors. */
- GdkCursor *normal_cursor;
- GdkCursor *move_cursor;
- GdkCursor *resize_width_cursor;
- GdkCursor *resize_height_cursor;
-
- /* This remembers the last cursor set on the window. */
- GdkCursor *last_cursor_set_in_top_canvas;
- GdkCursor *last_cursor_set_in_main_canvas;
-
- /*
- * Editing, Selection & Dragging data
- */
-
- /* The horizontal bars to resize events in the main canvas. */
- GnomeCanvasItem *main_canvas_top_resize_bar_item;
- GnomeCanvasItem *main_canvas_bottom_resize_bar_item;
-
- /* The event currently being edited. The day is -1 if no event is
- being edited, or E_DAY_VIEW_LONG_EVENT if a long event is edited. */
- gint editing_event_day;
- gint editing_event_num;
-
- /* This is a GnomeCanvasRect which is placed around an item while it
- is being resized, so we can raise it above all other EText items. */
- GnomeCanvasItem *resize_long_event_rect_item;
- GnomeCanvasItem *resize_rect_item;
- GnomeCanvasItem *resize_bar_item;
-
- /* The event for which a popup menu is being displayed, as above. */
- gint popup_event_day;
- gint popup_event_num;
-
- /* The currently selected region. If selection_start_day is -1 there is
- no current selection. If start_row or end_row is -1 then the
- selection is in the top canvas. */
- gint selection_start_day;
- gint selection_end_day;
- gint selection_start_row;
- gint selection_end_row;
-
- /* This is TRUE if the selection is currently being dragged using the
- mouse. */
- gboolean selection_is_being_dragged;
-
- /* This specifies which end of the selection is being dragged. */
- EDayViewDragPosition selection_drag_pos;
-
- /* This is TRUE if the selection is in the top canvas only (i.e. if the
- last motion event was in the top canvas). */
- gboolean selection_in_top_canvas;
-
- /* The last mouse position, relative to the main canvas window.
- Used when auto-scrolling to update the selection. */
- gint last_mouse_x;
- gint last_mouse_y;
-
- /* Auto-scroll info for when selecting an area or dragging an item. */
- gint auto_scroll_timeout_id;
- gint auto_scroll_delay;
- gboolean auto_scroll_up;
-
- /* These are used for the resize bars. */
- gint resize_bars_event_day;
- gint resize_bars_event_num;
-
- /* These are used when resizing events. */
- gint resize_event_day;
- gint resize_event_num;
- EDayViewPosition resize_drag_pos;
- gint resize_start_row;
- gint resize_end_row;
-
- /* This is the event the mouse button was pressed on. If the button
- is released we start editing it, but if the mouse is dragged we set
- this to -1. */
- gint pressed_event_day;
- gint pressed_event_num;
-
- /* These are used when dragging events. If drag_event_day is not -1 we
- know that we are dragging one of the EDayView events around. */
- gint drag_event_day;
- gint drag_event_num;
-
- /* The last mouse position when dragging, in the entire canvas. */
- gint drag_event_x;
- gint drag_event_y;
-
- /* The offset of the mouse from the top of the event, in rows.
- In the top canvas this is the offset from the left, in days. */
- gint drag_event_offset;
-
- /* The last day & row dragged to, so we know when we need to update
- the dragged event's position. */
- gint drag_last_day;
- gint drag_last_row;
-
- /* This is a GnomeCanvasRect which is placed around an item while it
- is being resized, so we can raise it above all other EText items. */
- GnomeCanvasItem *drag_long_event_rect_item;
- GnomeCanvasItem *drag_long_event_item;
- GnomeCanvasItem *drag_rect_item;
- GnomeCanvasItem *drag_bar_item;
- GnomeCanvasItem *drag_item;
-
- /* "am" and "pm" in the current locale, and their widths. */
- gchar *am_string;
- gchar *pm_string;
- gint am_string_width;
- gint pm_string_width;
-};
-
-struct _EDayViewClass
-{
- GtkTableClass parent_class;
-};
-
-
-GtkType e_day_view_get_type (void);
-GtkWidget* e_day_view_new (void);
-
-void e_day_view_set_calendar (EDayView *day_view,
- GnomeCalendar *calendar);
-
-void e_day_view_set_cal_client (EDayView *day_view,
- CalClient *client);
-
-void e_day_view_set_query (EDayView *day_view,
- const char *sexp);
-
-/* This sets the selected time range. The EDayView will show the day or week
- corresponding to the start time. If the start_time & end_time are not equal
- and are both visible in the view, then the selection is set to those times,
- otherwise it is set to 1 hour from the start of the working day. */
-void e_day_view_set_selected_time_range (EDayView *day_view,
- time_t start_time,
- time_t end_time);
-
-/* Returns the selected time range. */
-void e_day_view_get_selected_time_range (EDayView *day_view,
- time_t *start_time,
- time_t *end_time);
-
-/* Whether we are displaying a work-week, in which case the display always
- starts on the first day of the working week. */
-gboolean e_day_view_get_work_week_view (EDayView *day_view);
-void e_day_view_set_work_week_view (EDayView *day_view,
- gboolean work_week_view);
-
-/* The number of days shown in the EDayView, from 1 to 7. This is normally
- either 1 or 5 (for the Work-Week view). */
-gint e_day_view_get_days_shown (EDayView *day_view);
-void e_day_view_set_days_shown (EDayView *day_view,
- gint days_shown);
-
-/* This specifies how many minutes are represented by one row in the display.
- It can be 60, 30, 15, 10 or 5. The default is 30. */
-gint e_day_view_get_mins_per_row (EDayView *day_view);
-void e_day_view_set_mins_per_row (EDayView *day_view,
- gint mins_per_row);
-
-/* This specifies the working days in the week. The value is a bitwise
- combination of day flags. Defaults to Mon-Fri. */
-EDayViewDays e_day_view_get_working_days (EDayView *day_view);
-void e_day_view_set_working_days (EDayView *day_view,
- EDayViewDays days);
-
-/* The start and end time of the working day. This only affects the background
- colors. */
-void e_day_view_get_working_day (EDayView *day_view,
- gint *start_hour,
- gint *start_minute,
- gint *end_hour,
- gint *end_minute);
-void e_day_view_set_working_day (EDayView *day_view,
- gint start_hour,
- gint start_minute,
- gint end_hour,
- gint end_minute);
-
-/* Whether we use 12-hour or 24-hour format. */
-gboolean e_day_view_get_24_hour_format (EDayView *day_view);
-void e_day_view_set_24_hour_format (EDayView *day_view,
- gboolean use_24_hour);
-
-/* Whether we display event end times in the main canvas. */
-gboolean e_day_view_get_show_event_end_times (EDayView *day_view);
-void e_day_view_set_show_event_end_times (EDayView *day_view,
- gboolean show);
-
-/* The first day of the week, 0 (Monday) to 6 (Sunday). */
-gint e_day_view_get_week_start_day (EDayView *day_view);
-void e_day_view_set_week_start_day (EDayView *day_view,
- gint week_start_day);
-
-/*
- * Internal functions called by the associated canvas items.
- */
-void e_day_view_check_layout (EDayView *day_view);
-gint e_day_view_convert_time_to_row (EDayView *day_view,
- gint hour,
- gint minute);
-gint e_day_view_convert_time_to_position (EDayView *day_view,
- gint hour,
- gint minute);
-gboolean e_day_view_get_event_position (EDayView *day_view,
- gint day,
- gint event_num,
- gint *item_x,
- gint *item_y,
- gint *item_w,
- gint *item_h);
-gboolean e_day_view_get_long_event_position (EDayView *day_view,
- gint event_num,
- gint *start_day,
- gint *end_day,
- gint *item_x,
- gint *item_y,
- gint *item_w,
- gint *item_h);
-gboolean e_day_view_find_long_event_days (EDayView *day_view,
- EDayViewEvent *event,
- gint *start_day,
- gint *end_day);
-
-void e_day_view_start_selection (EDayView *day_view,
- gint day,
- gint row);
-void e_day_view_update_selection (EDayView *day_view,
- gint day,
- gint row);
-void e_day_view_finish_selection (EDayView *day_view);
-
-void e_day_view_check_auto_scroll (EDayView *day_view,
- gint event_x,
- gint event_y);
-void e_day_view_stop_auto_scroll (EDayView *day_view);
-
-void e_day_view_convert_time_to_display (EDayView *day_view,
- gint hour,
- gint *display_hour,
- gchar **suffix,
- gint *suffix_width);
-gint e_day_view_get_time_string_width (EDayView *day_view);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_DAY_VIEW_H_ */
diff --git a/calendar/gui/e-itip-control.c b/calendar/gui/e-itip-control.c
deleted file mode 100644
index 473e033709..0000000000
--- a/calendar/gui/e-itip-control.c
+++ /dev/null
@@ -1,1082 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* Evolution calendar - Control for displaying iTIP mail messages
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Jesse Pavel <jpavel@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <time.h>
-#include <glib.h>
-#include <gtk/gtkobject.h>
-#include <gtk/gtkwidget.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <libgnomeui/gnome-dialog.h>
-#include <libgnomeui/gnome-dialog-util.h>
-#include <bonobo/bonobo-generic-factory.h>
-#include <bonobo/bonobo-persist-stream.h>
-#include <bonobo/bonobo-stream-client.h>
-#include <glade/glade.h>
-#include <ical.h>
-#include <Evolution-Composer.h>
-
-#include "e-itip-control.h"
-#include <cal-util/cal-component.h>
-#include <cal-client/cal-client.h>
-#include "itip-utils.h"
-
-#define MAIL_COMPOSER_OAF_IID "OAFIID:GNOME_Evolution_Mail_Composer"
-
-#define DEFAULT_WIDTH 400
-#define DEFAULT_HEIGHT 300
-
-extern gchar *evolution_dir;
-
-typedef struct _EItipControlPrivate EItipControlPrivate;
-
-struct _EItipControlPrivate {
- GladeXML *xml, *xml2;
- GtkWidget *main_frame;
- GtkWidget *organizer_entry, *dtstart_label, *dtend_label;
- GtkWidget *summary_entry, *description_box, *message_text;
- GtkWidget *button_box;
- GtkWidget *address_entry;
- GtkWidget *add_button;
- GtkWidget *loading_window;
- GtkWidget *loading_progress;
-
- icalcomponent *main_comp, *comp;
- CalComponent *cal_comp;
- char *vcalendar;
- gchar *from_address, *my_address, *organizer;
- icalparameter_partstat new_partstat;
-};
-
-enum E_ITIP_BONOBO_ARGS {
- FROM_ADDRESS_ARG_ID,
- MY_ADDRESS_ARG_ID
-};
-
-
-/********
- * find_attendee() searches through the attendee properties of `comp'
- * and returns the one the value of which is the same as `address' if such
- * a property exists. Otherwise, it will return NULL.
- ********/
-static icalproperty *
-find_attendee (icalcomponent *comp, char *address)
-{
- icalproperty *prop;
- const char *attendee, *text;
- icalvalue *value;
-
- for (prop = icalcomponent_get_first_property (comp, ICAL_ATTENDEE_PROPERTY);
- prop != NULL;
- prop = icalcomponent_get_next_property (comp, ICAL_ATTENDEE_PROPERTY))
- {
- value = icalproperty_get_value (prop);
- if (!value)
- continue;
-
- attendee = icalvalue_get_string (value);
-
- /* Here I strip off the "MAILTO:" if it is present. */
- text = strchr (attendee, ':');
- if (text != NULL)
- text++;
- else
- text = attendee;
-
- if (strcmp (text, address) == 0) {
- /* We have found the correct property. */
- break;
- }
- }
-
- return prop;
-}
-
-static void
-itip_control_destroy_cb (GtkObject *object,
- gpointer data)
-{
- EItipControlPrivate *priv = data;
-
- gtk_object_unref (GTK_OBJECT (priv->xml));
- gtk_object_unref (GTK_OBJECT (priv->xml2));
-
- if (priv->main_comp != NULL) {
- if (priv->comp != NULL)
- icalcomponent_remove_component (priv->main_comp, priv->comp);
-
- icalcomponent_free (priv->main_comp);
- }
-
-
- if (priv->cal_comp != NULL) {
- gtk_object_unref (GTK_OBJECT (priv->cal_comp));
- }
-
- if (priv->from_address != NULL)
- g_free (priv->from_address);
-
- if (priv->organizer != NULL)
- g_free (priv->organizer);
-
- if (priv->vcalendar != NULL)
- g_free (priv->vcalendar);
-
- g_free (priv);
-}
-
-
-static void
-cal_opened_cb (CalClient *client, CalClientOpenStatus status, gpointer data)
-{
- EItipControlPrivate *priv = data;
-
- gtk_widget_hide (priv->loading_progress);
-
- if (status == CAL_CLIENT_OPEN_SUCCESS) {
- if (cal_client_update_object (client, priv->cal_comp) == FALSE) {
- GtkWidget *dialog;
-
- dialog = gnome_warning_dialog(_("I couldn't update your calendar file!\n"));
- gnome_dialog_run (GNOME_DIALOG(dialog));
- } else {
- /* We have success. */
- GtkWidget *dialog;
-
- dialog = gnome_ok_dialog(_("Component successfully updated."));
- gnome_dialog_run (GNOME_DIALOG(dialog));
- }
- } else {
- GtkWidget *dialog;
-
- dialog = gnome_ok_dialog(_("There was an error loading the calendar file."));
- gnome_dialog_run (GNOME_DIALOG(dialog));
- }
-
- gtk_object_unref (GTK_OBJECT (client));
- return;
-}
-
-static void
-update_calendar (EItipControlPrivate *priv)
-{
- gchar cal_uri[255];
- CalClient *client;
-
- snprintf (cal_uri, 250, "%s/local/Calendar/calendar.ics", evolution_dir);
-
- client = cal_client_new ();
-
- gtk_signal_connect (GTK_OBJECT (client), "cal_opened",
- GTK_SIGNAL_FUNC (cal_opened_cb), priv);
-
- if (cal_client_open_calendar (client, cal_uri, FALSE) == FALSE) {
- GtkWidget *dialog;
-
- dialog = gnome_warning_dialog(_("I couldn't open your calendar file!\n"));
- gnome_dialog_run (GNOME_DIALOG(dialog));
- gtk_object_unref (GTK_OBJECT (client));
-
- return;
- }
-
- gtk_progress_bar_update (GTK_PROGRESS_BAR (priv->loading_progress), 0.5);
- gtk_widget_show (priv->loading_progress);
-
- return;
-}
-
-static void
-add_button_clicked_cb (GtkWidget *widget, gpointer data)
-{
- EItipControlPrivate *priv = data;
-
- update_calendar (priv);
-
- return;
-}
-
-static void
-change_my_status (icalparameter_partstat status, EItipControlPrivate *priv)
-{
- icalproperty *prop;
-
- prop = find_attendee (priv->comp, priv->my_address);
- if (prop) {
- icalparameter *param;
-
- icalproperty_remove_parameter (prop, ICAL_PARTSTAT_PARAMETER);
- param = icalparameter_new_partstat (status);
- icalproperty_add_parameter (prop, param);
- }
-}
-
-static void
-send_itip_reply (EItipControlPrivate *priv)
-{
- BonoboObjectClient *bonobo_server;
- GNOME_Evolution_Composer composer_server;
- CORBA_Environment ev;
- GNOME_Evolution_Composer_RecipientList *to_list, *cc_list, *bcc_list;
- GNOME_Evolution_Composer_Recipient *recipient;
- CORBA_char *subject;
- CalComponentText caltext;
- CORBA_char *content_type, *filename, *description, *attach_data;
- CORBA_boolean show_inline;
- CORBA_char tempstr[200];
-
- CORBA_exception_init (&ev);
-
- /* First, I obtain an object reference that represents the Composer. */
- bonobo_server = bonobo_object_activate (MAIL_COMPOSER_OAF_IID, 0);
-
- g_return_if_fail (bonobo_server != NULL);
-
- composer_server = bonobo_object_corba_objref (BONOBO_OBJECT (bonobo_server));
-
- /* Now I have to make a CORBA sequence that represents a recipient list with
- one item, for the organizer. */
- to_list = GNOME_Evolution_Composer_RecipientList__alloc ();
- to_list->_maximum = 1;
- to_list->_length = 1;
- to_list->_buffer = CORBA_sequence_GNOME_Evolution_Composer_Recipient_allocbuf (1);
-
- recipient = &(to_list->_buffer[0]);
- recipient->name = CORBA_string_alloc (0); /* FIXME: we may want an actual name here. */
- recipient->name[0] = '\0';
- recipient->address = CORBA_string_alloc (strlen (priv->organizer));
- strcpy (recipient->address, priv->organizer);
-
- cc_list = GNOME_Evolution_Composer_RecipientList__alloc ();
- cc_list->_maximum = cc_list->_length = 0;
- bcc_list = GNOME_Evolution_Composer_RecipientList__alloc ();
- bcc_list->_maximum = bcc_list->_length = 0;
-
- cal_component_get_summary (priv->cal_comp, &caltext);
- subject = CORBA_string_alloc (strlen (caltext.value));
- strcpy (subject, caltext.value);
-
- GNOME_Evolution_Composer_setHeaders (composer_server, to_list, cc_list, bcc_list, subject, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_printerr ("gui/e-meeting-edit.c: I couldn't set the composer headers via CORBA! Aagh.\n");
- CORBA_exception_free (&ev);
- return;
- }
-
- sprintf (tempstr, "text/calendar;METHOD=REPLY");
- content_type = CORBA_string_alloc (strlen (tempstr));
- strcpy (content_type, tempstr);
- filename = CORBA_string_alloc (0);
- filename[0] = '\0';
- sprintf (tempstr, "Calendar attachment");
- description = CORBA_string_alloc (strlen (tempstr));
- strcpy (description, tempstr);
- show_inline = FALSE;
-
- /* I need to create an encapsulating iCalendar component, and stuff our reply event
- into it. */
- {
- icalcomponent *comp;
- icalproperty *prop;
- icalvalue *value;
- gchar *ical_string;
-
- comp = icalcomponent_new (ICAL_VCALENDAR_COMPONENT);
-
- prop = icalproperty_new (ICAL_PRODID_PROPERTY);
- value = icalvalue_new_text ("-//HelixCode/Evolution//EN");
- icalproperty_set_value (prop, value);
- icalcomponent_add_property (comp, prop);
-
- prop = icalproperty_new (ICAL_VERSION_PROPERTY);
- value = icalvalue_new_text ("2.0");
- icalproperty_set_value (prop, value);
- icalcomponent_add_property (comp, prop);
-
- prop = icalproperty_new (ICAL_METHOD_PROPERTY);
- value = icalvalue_new_text ("REPLY");
- icalproperty_set_value (prop, value);
- icalcomponent_add_property (comp, prop);
-
- icalcomponent_remove_component (priv->main_comp, priv->comp);
- icalcomponent_add_component (comp, priv->comp);
-
- ical_string = icalcomponent_as_ical_string (comp);
- attach_data = CORBA_string_alloc (strlen (ical_string));
- strcpy (attach_data, ical_string);
-
- icalcomponent_remove_component (comp, priv->comp);
- icalcomponent_add_component (priv->main_comp, priv->comp);
- icalcomponent_free (comp);
-
- }
-
- GNOME_Evolution_Composer_attachData (composer_server,
- content_type, filename, description,
- show_inline, attach_data,
- &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_printerr ("gui/e-meeting-edit.c: I couldn't attach data to the composer via CORBA! Aagh.\n");
- CORBA_exception_free (&ev);
- return;
- }
-
- GNOME_Evolution_Composer_show (composer_server, &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_printerr ("gui/e-meeting-edit.c: I couldn't show the composer via CORBA! Aagh.\n");
- CORBA_exception_free (&ev);
- return;
- }
-
- CORBA_exception_free (&ev);
-
- /* Here is where we free our graciously-allocated memory. */
- if (CORBA_sequence_get_release (to_list) != FALSE)
- CORBA_free (to_list->_buffer);
-
- CORBA_free (to_list);
- CORBA_free (cc_list);
- CORBA_free (bcc_list);
-
- CORBA_free (subject);
- CORBA_free (content_type);
- CORBA_free (filename);
- CORBA_free (description);
- CORBA_free (attach_data);
-
-}
-
-static void
-accept_button_clicked_cb (GtkWidget *widget, gpointer data)
-{
- EItipControlPrivate *priv = data;
-
- change_my_status (ICAL_PARTSTAT_ACCEPTED, priv);
- send_itip_reply (priv);
- update_calendar (priv);
-
- return;
-}
-
-static void
-tentative_button_clicked_cb (GtkWidget *widget, gpointer data)
-{
- EItipControlPrivate *priv = data;
-
- change_my_status (ICAL_PARTSTAT_TENTATIVE, priv);
- send_itip_reply (priv);
- update_calendar (priv);
-
- return;
-}
-
-static void
-decline_button_clicked_cb (GtkWidget *widget, gpointer data)
-{
- EItipControlPrivate *priv = data;
-
- change_my_status (ICAL_PARTSTAT_DECLINED, priv);
- send_itip_reply (priv);
-
- return;
-}
-
-
-/********
- * load_calendar_store() opens and loads the calendar referred to by cal_uri
- * and sets cal_client as a client for that store. If cal_uri is NULL,
- * we load the default calendar URI. If all goes well, it returns TRUE;
- * otherwise, it returns FALSE.
- ********/
-static gboolean
-load_calendar_store (char *cal_uri, CalClient **cal_client)
-{
- char uri_buf[255];
- char *uri;
-
- if (cal_uri == NULL) {
- snprintf (uri_buf, 250, "%s/local/Calendar/calendar.ics", evolution_dir);
- uri = uri_buf;
- }
- else {
- uri = cal_uri;
- }
-
- *cal_client = cal_client_new ();
- if (cal_client_open_calendar (*cal_client, uri, FALSE) == FALSE) {
- return FALSE;
- }
-
- /* FIXME!!!!!! This is fucking ugly. */
-
- while (!cal_client_get_load_state (*cal_client) != CAL_CLIENT_LOAD_LOADED) {
- gtk_main_iteration_do (FALSE); /* Do a non-blocking iteration. */
- usleep (200000L); /* Pause for 1/5th of a second before checking again.*/
- }
-
- return TRUE;
-}
-
-
-static void
-update_reply_cb (GtkWidget *widget, gpointer data)
-{
- EItipControlPrivate *priv = data;
- CalClient *cal_client;
- CalComponent *cal_comp;
- icalcomponent *comp;
- icalproperty *prop;
- icalparameter *param;
- const char *uid;
-
- if (load_calendar_store (NULL, &cal_client) == FALSE) {
- GtkWidget *dialog;
-
- dialog = gnome_warning_dialog(_("I couldn't load your calendar file!\n"));
- gnome_dialog_run (GNOME_DIALOG(dialog));
- gtk_object_unref (GTK_OBJECT (cal_client));
-
- return;
- }
-
-
- cal_component_get_uid (priv->cal_comp, &uid);
- if (cal_client_get_object (cal_client, uid, &cal_comp) != CAL_CLIENT_GET_SUCCESS) {
- GtkWidget *dialog;
-
- dialog = gnome_warning_dialog(_("I couldn't read your calendar file!\n"));
- gnome_dialog_run (GNOME_DIALOG(dialog));
- gtk_object_unref (GTK_OBJECT (cal_client));
-
- return;
- }
-
- comp = cal_component_get_icalcomponent (cal_comp);
-
- prop = find_attendee (comp, priv->from_address);
- if (!prop) {
- GtkWidget *dialog;
-
- dialog = gnome_warning_dialog(_("This is a reply from someone who was uninvited!"));
- gnome_dialog_run (GNOME_DIALOG(dialog));
- gtk_object_unref (GTK_OBJECT (cal_client));
- gtk_object_unref (GTK_OBJECT (cal_comp));
-
- return;
- }
-
- icalproperty_remove_parameter (prop, ICAL_PARTSTAT_PARAMETER);
- param = icalparameter_new_partstat (priv->new_partstat);
- icalproperty_add_parameter (prop, param);
-
- /* Now we need to update the object in the calendar store. */
- if (!cal_client_update_object (cal_client, cal_comp)) {
- GtkWidget *dialog;
-
- dialog = gnome_warning_dialog(_("I couldn't update your calendar store."));
- gnome_dialog_run (GNOME_DIALOG(dialog));
- gtk_object_unref (GTK_OBJECT (cal_client));
- gtk_object_unref (GTK_OBJECT (cal_comp));
-
- return;
- }
- else {
- /* We have success. */
- GtkWidget *dialog;
-
- dialog = gnome_ok_dialog(_("Component successfully updated."));
- gnome_dialog_run (GNOME_DIALOG(dialog));
- }
-
-
- gtk_object_unref (GTK_OBJECT (cal_client));
- gtk_object_unref (GTK_OBJECT (cal_comp));
-}
-
-static void
-cancel_meeting_cb (GtkWidget *widget, gpointer data)
-{
- EItipControlPrivate *priv = data;
- CalClient *cal_client;
- const char *uid;
-
- if (load_calendar_store (NULL, &cal_client) == FALSE) {
- GtkWidget *dialog;
-
- dialog = gnome_warning_dialog(_("I couldn't load your calendar file!\n"));
- gnome_dialog_run (GNOME_DIALOG(dialog));
- gtk_object_unref (GTK_OBJECT (cal_client));
-
- return;
- }
-
- cal_component_get_uid (priv->cal_comp, &uid);
- if (cal_client_remove_object (cal_client, uid) == FALSE) {
- GtkWidget *dialog;
-
- dialog = gnome_warning_dialog(_("I couldn't delete the calendar component!\n"));
- gnome_dialog_run (GNOME_DIALOG(dialog));
- gtk_object_unref (GTK_OBJECT (cal_client));
-
- return;
- }
- else {
- /* We have success! */
- GtkWidget *dialog;
-
- dialog = gnome_ok_dialog(_("Component successfully deleted."));
- gnome_dialog_run (GNOME_DIALOG(dialog));
- }
-
-}
-
-
-
-/*
- * Bonobo::PersistStream
- *
- * These two functions implement the Bonobo::PersistStream load and
- * save methods which allow data to be loaded into and out of the
- * BonoboObject.
- */
-
-static char *
-stream_read (Bonobo_Stream stream)
-{
- Bonobo_Stream_iobuf *buffer;
- CORBA_Environment ev;
- gchar *data = NULL;
- gint length = 0;
-
- CORBA_exception_init (&ev);
- do {
-#define READ_CHUNK_SIZE 65536
- Bonobo_Stream_read (stream, READ_CHUNK_SIZE,
- &buffer, &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION) {
- CORBA_exception_free (&ev);
- return NULL;
- }
-
- if (buffer->_length <= 0)
- break;
-
- data = g_realloc (data,
- length + buffer->_length);
-
- memcpy (data + length,
- buffer->_buffer, buffer->_length);
-
- length += buffer->_length;
-
- CORBA_free (buffer);
- } while (1);
-
- CORBA_free (buffer);
- CORBA_exception_free (&ev);
-
- if (data == NULL)
- data = g_strdup("");
-
- return data;
-} /* stream_read */
-
-/*
- * This function implements the Bonobo::PersistStream:load method.
- */
-static void
-pstream_load (BonoboPersistStream *ps, const Bonobo_Stream stream,
- Bonobo_Persist_ContentType type, void *data,
- CORBA_Environment *ev)
-{
- EItipControlPrivate *priv = data;
- gint pos, length, length2;
- icalcompiter iter;
- icalcomponent_kind comp_kind;
- char message[256];
-
-
- if (type && g_strcasecmp (type, "text/calendar") != 0 &&
- g_strcasecmp (type, "text/x-calendar") != 0) {
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_Bonobo_Persist_WrongDataType, NULL);
- return;
- }
-
- if ((priv->vcalendar = stream_read (stream)) == NULL) {
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_Bonobo_Persist_FileNotFound, NULL);
- return;
- }
-
- /* Do something with the data, here. */
-
- priv->main_comp = icalparser_parse_string (priv->vcalendar);
- if (priv->main_comp == NULL) {
- g_printerr ("e-itip-control.c: the iCalendar data was invalid!\n");
- return;
- }
-
- iter = icalcomponent_begin_component (priv->main_comp, ICAL_ANY_COMPONENT);
- priv->comp = icalcompiter_deref (&iter);
-
-#if 0
- {
- FILE *fp;
-
- fp = fopen ("evo.debug", "w");
-
- fputs ("The raw vCalendar data:\n\n", fp);
- fputs (priv->vcalendar, fp);
-
- fputs ("The main component:\n\n", fp);
- fputs (icalcomponent_as_ical_string (priv->main_comp), fp);
-
- fputs ("The child component:\n\n", fp);
- fputs (icalcomponent_as_ical_string (priv->comp), fp);
-
- fclose (fp);
- }
-#endif
-
- if (priv->comp == NULL) {
- g_printerr ("e-itip-control.c: I could not extract a proper component from\n"
- " the vCalendar data.\n");
- icalcomponent_free (priv->main_comp);
- return;
- }
-
- comp_kind = icalcomponent_isa (priv->comp);
-
- switch (comp_kind) {
- case ICAL_VEVENT_COMPONENT:
- case ICAL_VTODO_COMPONENT:
- case ICAL_VJOURNAL_COMPONENT:
- priv->cal_comp = cal_component_new ();
- if (cal_component_set_icalcomponent (priv->cal_comp, priv->comp) == FALSE) {
- g_printerr ("e-itip-control.c: I couldn't create a CalComponent from the iTip data.\n");
- gtk_object_unref (GTK_OBJECT (priv->cal_comp));
- }
- break;
- case ICAL_VFREEBUSY_COMPONENT:
- /* Take care of busy time information. */
- return;
- break;
- default:
- /* We don't know what this is, so bail. */
- {
- GtkWidget *dialog;
-
- dialog = gnome_warning_dialog(_("I don't recognize this type of calendar component."));
- gnome_dialog_run (GNOME_DIALOG(dialog));
-
- g_free (priv->vcalendar);
- priv->vcalendar = NULL;
-
- return;
- }
- break;
- } /* End switch. */
-
-
- /* Okay, good then; now I will pick apart the component to get
- all the things I'll show in my control. */
- {
- icalproperty *prop;
- const char *description, *summary;
- const char *new_text;
- const char *organizer;
- struct icaltimetype dtstart, dtend;
- time_t tstart, tend;
-
- prop = icalcomponent_get_first_property (priv->comp, ICAL_ORGANIZER_PROPERTY);
- if (prop) {
- organizer = icalproperty_get_organizer (prop);
-
- /* Here I strip off the "MAILTO:" if it is present. */
- new_text = strchr (organizer, ':');
- if (new_text != NULL)
- new_text++;
- else
- new_text = organizer;
-
- priv->organizer = g_strdup (new_text);
- gtk_entry_set_text (GTK_ENTRY (priv->organizer_entry), new_text);
- }
-
- prop = icalcomponent_get_first_property (priv->comp, ICAL_SUMMARY_PROPERTY);
- if (prop) {
- summary = icalproperty_get_summary (prop);
- gtk_entry_set_text (GTK_ENTRY (priv->summary_entry), summary);
- }
-
- prop = icalcomponent_get_first_property (priv->comp, ICAL_DESCRIPTION_PROPERTY);
- if (prop) {
- description = icalproperty_get_summary (prop);
-
- pos = 0;
- length = strlen (description);
- length2 = strlen (gtk_editable_get_chars
- (GTK_EDITABLE (priv->description_box), 0, -1));
-
- if (length2 > 0)
- gtk_editable_delete_text (GTK_EDITABLE (priv->description_box), 0, length2);
-
- gtk_editable_insert_text (GTK_EDITABLE (priv->description_box),
- description,
- length,
- &pos);
- }
-
- prop = icalcomponent_get_first_property (priv->comp, ICAL_DTSTART_PROPERTY);
- dtstart = icalproperty_get_dtstart (prop);
- prop = icalcomponent_get_first_property (priv->comp, ICAL_DTEND_PROPERTY);
- dtend = icalproperty_get_dtend (prop);
-
- tstart = icaltime_as_timet (dtstart);
- tend = icaltime_as_timet (dtend);
-
- gtk_label_set_text (GTK_LABEL (priv->dtstart_label), ctime (&tstart));
- gtk_label_set_text (GTK_LABEL (priv->dtend_label), ctime (&tend));
-
- /* Clear out any old-assed text that's been lying around in my message box. */
- gtk_editable_delete_text (GTK_EDITABLE (priv->message_text), 0, -1);
-
- prop = icalcomponent_get_first_property (priv->main_comp, ICAL_METHOD_PROPERTY);
- switch (icalproperty_get_method (prop)) {
- case ICAL_METHOD_PUBLISH:
- {
- GtkWidget *button;
-
- snprintf (message, 250, "%s has published calendar information, "
- "which you can add to your own calendar. "
- "No reply is necessary.",
- priv->from_address);
-
- button = gtk_button_new_with_label (_("Add to Calendar"));
- gtk_box_pack_start (GTK_BOX (priv->button_box), button, FALSE, FALSE, 3);
- gtk_widget_show (button);
-
- gtk_signal_connect (GTK_OBJECT (button), "clicked",
- GTK_SIGNAL_FUNC (add_button_clicked_cb), priv);
-
- break;
- }
- case ICAL_METHOD_REQUEST:
- {
- /* I'll check if I have to rsvp. */
- icalproperty *prop;
- icalparameter *param;
- int rsvp = FALSE;
-
- prop = find_attendee (priv->comp, priv->my_address);
- if (prop) {
- param = get_icalparam_by_type (prop, ICAL_RSVP_PARAMETER);
-
- if (param) {
- if (icalparameter_get_rsvp (param))
- rsvp = TRUE;
- }
- }
-
- snprintf (message, 250, "This is a meeting organized by %s, "
- "who indicated that you %s RSVP.",
- (priv->organizer ? priv->organizer : "an unknown person"),
- (rsvp ? "should" : "don't have to") );
-
- if (rsvp) {
- GtkWidget *accept_button, *decline_button, *tentative_button;
-
- accept_button = gtk_button_new_with_label (_(" Accept "));
- decline_button = gtk_button_new_with_label (_(" Decline "));
- tentative_button = gtk_button_new_with_label (_(" Tentative "));
-
- gtk_box_pack_start (GTK_BOX (priv->button_box), decline_button, FALSE, FALSE, 3);
- gtk_box_pack_end (GTK_BOX (priv->button_box), accept_button, FALSE, FALSE, 3);
- gtk_box_pack_end (GTK_BOX (priv->button_box), tentative_button, FALSE, FALSE, 3);
-
- gtk_signal_connect (GTK_OBJECT (accept_button), "clicked",
- GTK_SIGNAL_FUNC (accept_button_clicked_cb), priv);
- gtk_signal_connect (GTK_OBJECT (tentative_button), "clicked",
- GTK_SIGNAL_FUNC (tentative_button_clicked_cb), priv);
- gtk_signal_connect (GTK_OBJECT (decline_button), "clicked",
- GTK_SIGNAL_FUNC (decline_button_clicked_cb), priv);
-
- gtk_widget_show (accept_button);
- gtk_widget_show (tentative_button);
- gtk_widget_show (decline_button);
- }
-
- }
- break;
- case ICAL_METHOD_REPLY:
- {
- icalproperty *prop;
- icalparameter *param;
- gboolean success = FALSE;
-
- prop = find_attendee (priv->comp, priv->from_address);
- if (prop) {
- param = get_icalparam_by_type (prop, ICAL_PARTSTAT_PARAMETER);
- if (param) {
- success = TRUE;
-
- priv->new_partstat = icalparameter_get_partstat (param);
- }
- }
-
- if (!success) {
- snprintf (message, 250, "%s sent a reply to a meeting request, but "
- "the reply is not properly formed.",
- priv->from_address);
- }
- else {
- GtkWidget *button;
-
- button = gtk_button_new_with_label (_("Update Calendar"));
- gtk_box_pack_start (GTK_BOX (priv->button_box), button, FALSE, FALSE, 3);
- gtk_widget_show (button);
-
- gtk_signal_connect (GTK_OBJECT (button), "clicked",
- GTK_SIGNAL_FUNC (update_reply_cb), priv);
-
- snprintf (message, 250, "%s responded to your request, replying with: %s",
- priv->from_address, partstat_values[priv->new_partstat]);
- }
-
- }
- break;
- case ICAL_METHOD_CANCEL:
- {
- if (strcmp (priv->organizer, priv->from_address) != 0) {
- snprintf (message, 250, "%s sent a cancellation request, but is not "
- "the organizer of the meeting.",
- priv->from_address);
- }
- else {
- GtkWidget *button;
-
- button = gtk_button_new_with_label (_("Cancel Meeting"));
- gtk_box_pack_start (GTK_BOX (priv->button_box), button, FALSE, FALSE, 3);
- gtk_widget_show (button);
-
- gtk_signal_connect (GTK_OBJECT (button), "clicked",
- GTK_SIGNAL_FUNC (cancel_meeting_cb), priv);
-
- snprintf (message, 250, "%s sent a cancellation request. You can"
- " delete this event from your calendar, if you wish.",
- priv->organizer);
- }
-
- }
- break;
- default:
- snprintf (message, 250, "I haven't the slightest notion what this calendar "
- "object represents. Sorry.");
- }
-
- {
- int pos = 0;
-
- gtk_editable_insert_text (GTK_EDITABLE (priv->message_text), message,
- strlen (message), &pos);
- }
- }
-
-} /* pstream_load */
-
-/*
- * This function implements the Bonobo::PersistStream:save method.
- */
-static void
-pstream_save (BonoboPersistStream *ps, const Bonobo_Stream stream,
- Bonobo_Persist_ContentType type, void *data,
- CORBA_Environment *ev)
-{
- EItipControlPrivate *priv = data;
- int length;
-
- if (type && g_strcasecmp (type, "text/calendar") != 0 &&
- g_strcasecmp (type, "text/x-calendar") != 0) {
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_Bonobo_Persist_WrongDataType, NULL);
- return;
- }
-
- /* Put something into vcalendar here. */
- length = strlen (priv->vcalendar);
-
- bonobo_stream_client_write (stream, priv->vcalendar, length, ev);
-} /* pstream_save */
-
-static CORBA_long
-pstream_get_max_size (BonoboPersistStream *ps, void *data,
- CORBA_Environment *ev)
-{
- EItipControlPrivate *priv = data;
-
- if (priv->vcalendar)
- return strlen (priv->vcalendar);
- else
- return 0L;
-}
-
-static Bonobo_Persist_ContentTypeList *
-pstream_get_content_types (BonoboPersistStream *ps, void *closure,
- CORBA_Environment *ev)
-{
- return bonobo_persist_generate_content_types (2, "text/calendar", "text/x-calendar");
-}
-
-static void
-get_prop ( BonoboPropertyBag *bag,
- BonoboArg *arg,
- guint arg_id,
- CORBA_Environment *ev,
- gpointer user_data)
-{
- EItipControlPrivate *priv = user_data;
-
- if (arg_id == FROM_ADDRESS_ARG_ID) {
- BONOBO_ARG_SET_STRING (arg, priv->from_address);
- }
- else if (arg_id == MY_ADDRESS_ARG_ID) {
- BONOBO_ARG_SET_STRING (arg, priv->my_address);
- }
-}
-
-static void
-set_prop ( BonoboPropertyBag *bag,
- const BonoboArg *arg,
- guint arg_id,
- CORBA_Environment *ev,
- gpointer user_data)
-{
- EItipControlPrivate *priv = user_data;
-
- if (arg_id == FROM_ADDRESS_ARG_ID) {
- if (priv->from_address)
- g_free (priv->from_address);
-
-
- priv->from_address = g_strdup (BONOBO_ARG_GET_STRING (arg));
-
- /* Let's set the widget here, though I'm not sure if
- it will work. */
- gtk_entry_set_text (GTK_ENTRY (priv->address_entry), priv->from_address);
-
- }
- else if (arg_id == MY_ADDRESS_ARG_ID) {
- if (priv->my_address)
- g_free (priv->my_address);
-
- priv->my_address = g_strdup (BONOBO_ARG_GET_STRING (arg));
- }
-}
-
-
-static BonoboObject *
-e_itip_control_factory (BonoboGenericFactory *Factory, void *closure)
-{
- BonoboControl *control;
- BonoboPropertyBag *prop_bag;
- BonoboPersistStream *stream;
- EItipControlPrivate *priv;
-
- priv = g_new0 (EItipControlPrivate, 1);
-
- priv->xml = glade_xml_new (EVOLUTION_GLADEDIR "/" "e-itip-control.glade", "main_frame");
-
- /* Create the control. */
- priv->main_frame = glade_xml_get_widget (priv->xml, "main_frame");
- priv->organizer_entry = glade_xml_get_widget (priv->xml, "organizer_entry");
- priv->dtstart_label = glade_xml_get_widget (priv->xml, "dtstart_label");
- priv->dtend_label = glade_xml_get_widget (priv->xml, "dtend_label");
- priv->summary_entry = glade_xml_get_widget (priv->xml, "summary_entry");
- priv->description_box = glade_xml_get_widget (priv->xml, "description_box");
- /* priv->add_button = glade_xml_get_widget (priv->xml, "add_button"); */
- priv->button_box = glade_xml_get_widget (priv->xml, "button_box");
- priv->address_entry = glade_xml_get_widget (priv->xml, "address_entry");
- priv->message_text = glade_xml_get_widget (priv->xml, "message_text");
-
- gtk_text_set_word_wrap (GTK_TEXT (priv->message_text), TRUE);
-
- priv->xml2 = glade_xml_new (EVOLUTION_GLADEDIR "/" "e-itip-control.glade", "loading_window");
- priv->loading_progress = glade_xml_get_widget (priv->xml2, "loading_progress");
- priv->loading_window = glade_xml_get_widget (priv->xml2, "loading_window");
-
- gtk_signal_connect (GTK_OBJECT (priv->main_frame), "destroy",
- GTK_SIGNAL_FUNC (itip_control_destroy_cb), priv);
-
- gtk_widget_show (priv->main_frame);
-
- control = bonobo_control_new (priv->main_frame);
-
- /* create a property bag */
- prop_bag = bonobo_property_bag_new ( get_prop, set_prop, priv );
- bonobo_property_bag_add (prop_bag, "from_address", FROM_ADDRESS_ARG_ID, BONOBO_ARG_STRING, NULL,
- "from_address", 0 );
- bonobo_property_bag_add (prop_bag, "my_address", MY_ADDRESS_ARG_ID, BONOBO_ARG_STRING, NULL,
- "my_address", 0 );
-
- bonobo_control_set_properties (control, prop_bag);
- bonobo_object_unref (BONOBO_OBJECT (prop_bag));
-
- bonobo_control_set_automerge (control, TRUE);
-
- stream = bonobo_persist_stream_new (pstream_load, pstream_save,
- pstream_get_max_size,
- pstream_get_content_types,
- priv);
-
- if (stream == NULL) {
- bonobo_object_unref (BONOBO_OBJECT (control));
- return NULL;
- }
-
- bonobo_object_add_interface (BONOBO_OBJECT (control),
- BONOBO_OBJECT (stream));
-
- return BONOBO_OBJECT (control);
-}
-
-void
-e_itip_control_factory_init (void)
-{
- static BonoboGenericFactory *factory = NULL;
-
- if (factory != NULL)
- return;
-
- factory = bonobo_generic_factory_new (
- "OAFIID:GNOME_Evolution_Calendar_iTip_ControlFactory",
- e_itip_control_factory, NULL);
-
- if (factory == NULL)
- g_error ("I could not register an iTip control factory.");
-}
-
diff --git a/calendar/gui/e-itip-control.glade b/calendar/gui/e-itip-control.glade
deleted file mode 100644
index 68e15d6989..0000000000
--- a/calendar/gui/e-itip-control.glade
+++ /dev/null
@@ -1,478 +0,0 @@
-<?xml version="1.0"?>
-<GTK-Interface>
-
-<project>
- <name>e-itip-control</name>
- <program_name>e-itip-control</program_name>
- <directory></directory>
- <source_directory>src</source_directory>
- <pixmaps_directory>pixmaps</pixmaps_directory>
- <language>C</language>
- <gnome_support>True</gnome_support>
- <gettext_support>True</gettext_support>
-</project>
-
-<widget>
- <class>GtkWindow</class>
- <name>window1</name>
- <visible>False</visible>
- <title>window1</title>
- <type>GTK_WINDOW_TOPLEVEL</type>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>True</allow_grow>
- <auto_shrink>False</auto_shrink>
-
- <widget>
- <class>GtkFrame</class>
- <name>main_frame</name>
- <border_width>4</border_width>
- <label>Calendar Message</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow1</name>
- <hscrollbar_policy>GTK_POLICY_NEVER</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_NEVER</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
-
- <widget>
- <class>GtkViewport</class>
- <name>viewport1</name>
- <shadow_type>GTK_SHADOW_NONE</shadow_type>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox1</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
-
- <widget>
- <class>GtkTable</class>
- <name>table1</name>
- <border_width>3</border_width>
- <rows>4</rows>
- <columns>2</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>3</row_spacing>
- <column_spacing>3</column_spacing>
- <child>
- <padding>6</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkEntry</class>
- <name>organizer_entry</name>
- <can_focus>True</can_focus>
- <editable>False</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>summary_entry</name>
- <can_focus>True</can_focus>
- <editable>False</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>2</top_attach>
- <bottom_attach>3</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow2</name>
- <hscrollbar_policy>GTK_POLICY_AUTOMATIC</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>3</top_attach>
- <bottom_attach>4</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkText</class>
- <name>description_box</name>
- <can_focus>True</can_focus>
- <editable>False</editable>
- <text></text>
- </widget>
- </widget>
-
- <widget>
- <class>GtkAlignment</class>
- <name>alignment1</name>
- <xalign>0</xalign>
- <yalign>0</yalign>
- <xscale>1</xscale>
- <yscale>1</yscale>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox1</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
-
- <widget>
- <class>GtkLabel</class>
- <name>dtstart_label</name>
- <label>date-start</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label3</name>
- <label>--to--</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0</yalign>
- <xpad>19</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>dtend_label</name>
- <label>date-end</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label6</name>
- <label>Organizer:</label>
- <justify>GTK_JUSTIFY_LEFT</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label7</name>
- <label>Date:</label>
- <justify>GTK_JUSTIFY_LEFT</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label8</name>
- <label>Summary:</label>
- <justify>GTK_JUSTIFY_LEFT</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>2</top_attach>
- <bottom_attach>3</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label9</name>
- <label>Description:</label>
- <justify>GTK_JUSTIFY_LEFT</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>3</top_attach>
- <bottom_attach>4</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label12</name>
- <label>Server Message:</label>
- <justify>GTK_JUSTIFY_LEFT</justify>
- <wrap>False</wrap>
- <xalign>7.45058e-09</xalign>
- <yalign>0.5</yalign>
- <xpad>3</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow3</name>
- <border_width>3</border_width>
- <width>365</width>
- <hscrollbar_policy>GTK_POLICY_NEVER</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkText</class>
- <name>message_text</name>
- <can_focus>True</can_focus>
- <editable>False</editable>
- <text></text>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>button_box</name>
- <border_width>3</border_width>
- <height>30</height>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>Placeholder</class>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
-</widget>
-
-<widget>
- <class>GtkWindow</class>
- <name>loading_window</name>
- <visible>False</visible>
- <title>Loading Calendar</title>
- <type>GTK_WINDOW_DIALOG</type>
- <position>GTK_WIN_POS_CENTER</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>True</allow_grow>
- <auto_shrink>False</auto_shrink>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame1</name>
- <border_width>4</border_width>
- <label></label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_OUT</shadow_type>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox2</name>
- <border_width>7</border_width>
- <homogeneous>False</homogeneous>
- <spacing>1</spacing>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox2</name>
- <border_width>6</border_width>
- <homogeneous>False</homogeneous>
- <spacing>9</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label10</name>
- <label>Loading calendar...</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkProgressBar</class>
- <name>loading_progress</name>
- <value>0</value>
- <lower>0</lower>
- <upper>100</upper>
- <bar_style>GTK_PROGRESS_CONTINUOUS</bar_style>
- <orientation>GTK_PROGRESS_LEFT_TO_RIGHT</orientation>
- <activity_mode>False</activity_mode>
- <show_text>False</show_text>
- <format>%P %%</format>
- <text_xalign>0.5</text_xalign>
- <text_yalign>0.5</text_yalign>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
- </widget>
-</widget>
-
-</GTK-Interface>
diff --git a/calendar/gui/e-itip-control.h b/calendar/gui/e-itip-control.h
deleted file mode 100644
index 6c2df626ce..0000000000
--- a/calendar/gui/e-itip-control.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Evolution calendar - Control for displaying iTIP mail messages
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Jesse Pavel <jpavel@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef __E_ITIP_CONTROL_H__
-#define __E_ITIP_CONTROL_H__
-
-#include <bonobo/bonobo-control.h>
-
-void e_itip_control_factory_init (void);
-
-#endif /* __E_ITIP_CONTROL_H__ */
diff --git a/calendar/gui/e-meeting-dialog.glade b/calendar/gui/e-meeting-dialog.glade
deleted file mode 100644
index 3ec30d19e9..0000000000
--- a/calendar/gui/e-meeting-dialog.glade
+++ /dev/null
@@ -1,491 +0,0 @@
-<?xml version="1.0"?>
-<GTK-Interface>
-
-<project>
- <name>e-meeting-dialog</name>
- <program_name>e-meeting-dialog</program_name>
- <directory></directory>
- <source_directory>src</source_directory>
- <pixmaps_directory>pixmaps</pixmaps_directory>
- <language>C</language>
- <gnome_support>True</gnome_support>
- <gettext_support>True</gettext_support>
-</project>
-
-<widget>
- <class>GtkWindow</class>
- <name>meeting_window</name>
- <width>486</width>
- <height>330</height>
- <visible>False</visible>
- <title>Meeting Invitations</title>
- <type>GTK_WINDOW_DIALOG</type>
- <position>GTK_WIN_POS_NONE</position>
- <modal>True</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>True</allow_grow>
- <auto_shrink>False</auto_shrink>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox1</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
-
- <widget>
- <class>GtkToolbar</class>
- <name>toolbar1</name>
- <orientation>GTK_ORIENTATION_HORIZONTAL</orientation>
- <type>GTK_TOOLBAR_BOTH</type>
- <space_size>5</space_size>
- <space_style>GTK_TOOLBAR_SPACE_LINE</space_style>
- <relief>GTK_RELIEF_NORMAL</relief>
- <tooltips>True</tooltips>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <child_name>Toolbar:button</child_name>
- <name>publish_button</name>
- <label>Publish
-Event</label>
- <stock_pixmap>GNOME_STOCK_PIXMAP_MAIL_SND</stock_pixmap>
- </widget>
-
- <widget>
- <class>GtkVSeparator</class>
- <name>vseparator1</name>
- <width>13</width>
- <height>58</height>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <child_name>Toolbar:button</child_name>
- <name>request_button</name>
- <label>Request
-Meeting</label>
- <stock_pixmap>GNOME_STOCK_PIXMAP_REFRESH</stock_pixmap>
- </widget>
-
- <widget>
- <class>GtkVSeparator</class>
- <name>vseparator3</name>
- <width>13</width>
- <height>58</height>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <child_name>Toolbar:button</child_name>
- <name>cancel_button</name>
- <label>Cancel
-Meeting</label>
- <stock_pixmap>GNOME_STOCK_PIXMAP_CLOSE</stock_pixmap>
- </widget>
-
- <widget>
- <class>GtkVSeparator</class>
- <name>vseparator2</name>
- <width>12</width>
- <height>58</height>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <child_name>Toolbar:button</child_name>
- <name>schedule_button</name>
- <label>Schedule
-Time</label>
- <stock_pixmap>GNOME_STOCK_PIXMAP_MULTIPLE</stock_pixmap>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox3</name>
- <border_width>3</border_width>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>4</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label3</name>
- <label>Organizer: </label>
- <justify>GTK_JUSTIFY_RIGHT</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>3</xpad>
- <ypad>0</ypad>
- <child>
- <padding>1</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>organizer_entry</name>
- <width>252</width>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox1</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- <pack>GTK_PACK_END</pack>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label1</name>
- <label>Attendees: </label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>4</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkHButtonBox</class>
- <name>hbuttonbox3</name>
- <layout_style>GTK_BUTTONBOX_START</layout_style>
- <spacing>0</spacing>
- <child_min_width>83</child_min_width>
- <child_min_height>29</child_min_height>
- <child_ipad_x>8</child_ipad_x>
- <child_ipad_y>1</child_ipad_y>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>add_button</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <label>Add</label>
- <relief>GTK_RELIEF_NORMAL</relief>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>delete_button</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <label>Delete</label>
- <relief>GTK_RELIEF_NORMAL</relief>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>edit_button</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <label>Edit</label>
- <relief>GTK_RELIEF_NORMAL</relief>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow1</name>
- <hscrollbar_policy>GTK_POLICY_AUTOMATIC</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkCList</class>
- <name>attendee_list</name>
- <can_focus>True</can_focus>
- <columns>4</columns>
- <column_widths>145,141,60,80</column_widths>
- <selection_mode>GTK_SELECTION_SINGLE</selection_mode>
- <show_titles>True</show_titles>
- <shadow_type>GTK_SHADOW_IN</shadow_type>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>CList:title</child_name>
- <name>label8</name>
- <label>Attendee</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>CList:title</child_name>
- <name>label5</name>
- <label>Role</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>CList:title</child_name>
- <name>label6</name>
- <label>RSVP</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>CList:title</child_name>
- <name>label7</name>
- <label>Status</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
- </widget>
- </widget>
-</widget>
-
-<widget>
- <class>GnomeDialog</class>
- <name>edit_dialog</name>
- <width>344</width>
- <height>152</height>
- <visible>False</visible>
- <title>Attendee</title>
- <type>GTK_WINDOW_DIALOG</type>
- <position>GTK_WIN_POS_MOUSE</position>
- <modal>True</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>False</allow_grow>
- <auto_shrink>False</auto_shrink>
- <auto_close>False</auto_close>
- <hide_on_close>False</hide_on_close>
-
- <widget>
- <class>GtkVBox</class>
- <child_name>GnomeDialog:vbox</child_name>
- <name>dialog-vbox1</name>
- <homogeneous>False</homogeneous>
- <spacing>8</spacing>
- <child>
- <padding>4</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHButtonBox</class>
- <child_name>GnomeDialog:action_area</child_name>
- <name>dialog-action_area1</name>
- <layout_style>GTK_BUTTONBOX_SPREAD</layout_style>
- <spacing>8</spacing>
- <child_min_width>85</child_min_width>
- <child_min_height>27</child_min_height>
- <child_ipad_x>7</child_ipad_x>
- <child_ipad_y>0</child_ipad_y>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- <pack>GTK_PACK_END</pack>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>button1</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button3</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox2</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label2</name>
- <label>Attendee address</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>6</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>address_entry</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox4</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label9</name>
- <label>Role</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>5</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkCombo</class>
- <name>role_combo</name>
- <width>160</width>
- <value_in_list>True</value_in_list>
- <ok_if_empty>False</ok_if_empty>
- <case_sensitive>False</case_sensitive>
- <use_arrows>True</use_arrows>
- <use_arrows_always>False</use_arrows_always>
- <items>Chair
-Required Participant
-Optional Participant
-Non-Participant
-
-
-</items>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkEntry</class>
- <child_name>GtkCombo:entry</child_name>
- <name>role_entry</name>
- <can_focus>True</can_focus>
- <editable>False</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text>Chair</text>
- </widget>
- </widget>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>rsvp_check</name>
- <can_focus>True</can_focus>
- <label>RSVP</label>
- <active>True</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
-</widget>
-
-</GTK-Interface>
diff --git a/calendar/gui/e-meeting-edit.c b/calendar/gui/e-meeting-edit.c
deleted file mode 100644
index 4cf0296954..0000000000
--- a/calendar/gui/e-meeting-edit.c
+++ /dev/null
@@ -1,1001 +0,0 @@
-/* Evolution calendar - Meeting editor dialog
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Authors: Jesse Pavel <jpavel@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <gtk/gtkclist.h>
-#include <gtk/gtkentry.h>
-#include <gtk/gtkmain.h>
-#include <gtk/gtktogglebutton.h>
-#include <gtk/gtkwindow.h>
-#include <gdk_imlib.h>
-#include <libgnomeui/gnome-dialog.h>
-#include <libgnomeui/gnome-dialog-util.h>
-#include <bonobo/bonobo-object.h>
-#include <bonobo/bonobo-object-client.h>
-#include <glade/glade.h>
-#include <ical.h>
-#include <widgets/meeting-time-sel/e-meeting-time-sel.h>
-#include <Evolution-Composer.h>
-#include <string.h>
-#include "e-meeting-edit.h"
-#include "itip-utils.h"
-
-#define E_MEETING_GLADE_XML "e-meeting-dialog.glade"
-
-
-typedef struct _EMeetingEditorPrivate EMeetingEditorPrivate;
-
-struct _EMeetingEditorPrivate {
- /* These are the widgets to be used in the GUI. */
- GladeXML *xml;
- GtkWidget *meeting_window;
- GtkWidget *attendee_list;
- GtkWidget *address_entry;
- GtkWidget *edit_dialog;
- GtkWidget *organizer_entry;
- GtkWidget *role_entry;
- GtkWidget *rsvp_check;
- GtkWidget *publish_button, *request_button, *cancel_button,
- *schedule_button;
-
- gint changed_signal_id;
-
- /* Various pieces of information. */
- gint selected_row;
- CalComponent *comp;
- CalClient *client;
- icalcomponent *icalcomp, *vevent;
-
- gint numentries; /* How many attendees are there? */
- gboolean dirty; /* Has anything changed? */
-};
-
-#define NUM_COLUMNS 4 /* The number of columns in our attendee list. */
-
-enum column_names {ADDRESS_COL, ROLE_COL, RSVP_COL, STATUS_COL};
-
-
-static void
-save_organizer (EMeetingEditorPrivate *priv)
-{
- icalproperty *prop;
- icalvalue *value;
- gchar *text;
-
- /* Save the organizer into the iCAL object. */
-
- text = gtk_entry_get_text (GTK_ENTRY (priv->organizer_entry));
- if (strlen (text) > 0) {
- gchar buffer[200];
- g_snprintf (buffer, 190, "MAILTO:%s", text);
-
- prop = icalcomponent_get_first_property (priv->vevent, ICAL_ORGANIZER_PROPERTY);
- if (prop == NULL) {
- /* We need to add an ORGANIZER property. */
- prop = icalproperty_new (ICAL_ORGANIZER_PROPERTY);
- icalcomponent_add_property (priv->vevent, prop);
- }
- value = icalvalue_new_text (buffer);
- icalproperty_set_value (prop, value);
- }
-}
-
-
-
-static gboolean
-window_delete_cb (GtkWidget *widget,
- GdkEvent *event,
- gpointer data)
-{
- EMeetingEditorPrivate *priv;
-
- priv = (EMeetingEditorPrivate *) ((EMeetingEditor *)data)->priv;
-
- save_organizer (priv);
-
- if (priv->dirty == TRUE) {
- /* FIXME: notify the event editor that our data has changed.
- For now, I'll just display a dialog box. */
- {
- if (!cal_client_update_object (priv->client, priv->comp)) {
- GtkWidget *dialog;
-
- dialog = gnome_warning_dialog_parented ("I couldn't automatically save this meeting,\n"
- "so try to save this event manually.",
- GTK_WINDOW (priv->meeting_window));
- gnome_dialog_run (GNOME_DIALOG(dialog));
- }
- }
- }
-
- gtk_entry_set_text (GTK_ENTRY (priv->organizer_entry), "");
-
- return (FALSE);
-}
-
-static void
-window_destroy_cb (GtkWidget *widget,
- gpointer data)
-{
- EMeetingEditorPrivate *priv;
-
- priv = (EMeetingEditorPrivate *) ((EMeetingEditor *)data)->priv;
-
- gtk_main_quit ();
- return;
-}
-
-/* put_property_in_list() synchronizes the display of row `rownum'
- in our attendee list to the values of `prop'. If rownum < 0,
- then put_property_in_list() will append a new row.
- If the property doesn't contain certain parameters that we deem
- necessary, it will add them. */
-static void
-put_property_in_list (icalproperty *prop, gint rownum, gpointer data)
-{
- gchar *row_text[NUM_COLUMNS];
- gchar *text, *new_text;
- icalparameter *param;
- icalvalue *value;
- icalparameter_role role_val;
- icalparameter_partstat part_val;
- gint cntr;
-
- EMeetingEditorPrivate *priv;
-
- priv = (EMeetingEditorPrivate *) ((EMeetingEditor *)data)->priv;
-
- value = icalproperty_get_value (prop);
-
- if (value != NULL) {
- text = strdup (icalvalue_as_ical_string (value));
-
- /* Here I strip off the "MAILTO:" if it is present. */
- new_text = strchr (text, ':');
- if (new_text != NULL)
- new_text++;
- else
- new_text = text;
-
- row_text[ADDRESS_COL] = g_strdup (new_text);
- g_free (text);
- }
-
- param = get_icalparam_by_type (prop, ICAL_ROLE_PARAMETER);
- if (param == NULL) {
- param = icalparameter_new_role (ICAL_ROLE_REQPARTICIPANT);
- icalproperty_add_parameter (prop, param);
- }
-
- role_val = icalparameter_get_role (param);
- if (role_val < ICAL_ROLE_CHAIR || role_val > ICAL_ROLE_NONPARTICIPANT)
- role_val = ICAL_ROLE_REQPARTICIPANT;
- row_text[ROLE_COL] = role_values[role_val - ICAL_ROLE_CHAIR];
-
- param = get_icalparam_by_type (prop, ICAL_RSVP_PARAMETER);
- if (param == NULL) {
- param = icalparameter_new_rsvp (ICAL_RSVP_TRUE);
- icalproperty_add_parameter (prop, param);
- }
-
- if (icalparameter_get_rsvp (param))
- row_text[RSVP_COL] = "Y";
- else
- row_text[RSVP_COL] = "N";
-
- param = get_icalparam_by_type (prop, ICAL_PARTSTAT_PARAMETER);
- if (param == NULL) {
- param = icalparameter_new_partstat (ICAL_PARTSTAT_NEEDSACTION);
- icalproperty_add_parameter (prop, param);
- }
-
- part_val = icalparameter_get_partstat (param);
- if (part_val < ICAL_PARTSTAT_NEEDSACTION || part_val > ICAL_PARTSTAT_INPROCESS)
- part_val = ICAL_PARTSTAT_NEEDSACTION;
- row_text[STATUS_COL] = partstat_values [part_val - ICAL_PARTSTAT_NEEDSACTION];
-
- if (rownum < 0) {
- gtk_clist_append (GTK_CLIST (priv->attendee_list), row_text);
- gtk_clist_set_row_data (GTK_CLIST (priv->attendee_list), priv->numentries, prop);
- priv->numentries++;
- }
- else {
- for (cntr = 0; cntr < NUM_COLUMNS; cntr++) {
- gtk_clist_set_text (GTK_CLIST (priv->attendee_list),
- rownum,
- cntr,
- row_text[cntr]);
- }
- }
-
- g_free (row_text[ADDRESS_COL]);
-}
-
-
-
-/********
- * edit_attendee() performs the GUI manipulation and interaction for
- * editing `prop' and returns TRUE if the user indicated that he wants
- * to save the new property information.
- *
- * Note that it is necessary that the property have parameters of the types
- * RSVP, PARTSTAT, and ROLE already when passed into this function.
- ********/
-static gboolean
-edit_attendee (icalproperty *prop, gpointer data)
-{
- EMeetingEditorPrivate *priv;
- gint button_num;
- gchar *new_text, *text;
- icalparameter *param;
- icalvalue *value;
- gchar buffer[200];
- gint cntr;
- icalparameter_role role_val;
- gboolean retval;
-
- priv = (EMeetingEditorPrivate *) ((EMeetingEditor *)data)->priv;
-
- g_return_val_if_fail (prop != NULL, FALSE);
-
- if (priv->edit_dialog == NULL || priv->address_entry == NULL) {
- priv->edit_dialog = glade_xml_get_widget (priv->xml, "edit_dialog");
- priv->address_entry = glade_xml_get_widget (priv->xml, "address_entry");
-
- gnome_dialog_set_close (GNOME_DIALOG (priv->edit_dialog), TRUE);
- gnome_dialog_editable_enters (GNOME_DIALOG (priv->edit_dialog),
- GTK_EDITABLE (priv->address_entry));
- gnome_dialog_close_hides (GNOME_DIALOG (priv->edit_dialog), TRUE);
- gnome_dialog_set_default (GNOME_DIALOG (priv->edit_dialog), 0);
- }
-
- g_return_val_if_fail (priv->edit_dialog != NULL, FALSE);
- g_return_val_if_fail (priv->address_entry != NULL, FALSE);
-
- gtk_widget_realize (priv->edit_dialog);
-
- value = icalproperty_get_value (prop);
-
- if (value != NULL) {
- text = strdup (icalvalue_as_ical_string (value));
-
- /* Here I strip off the "MAILTO:" if it is present. */
- new_text = strchr (text, ':');
- if (new_text != NULL)
- new_text++;
- else
- new_text = text;
-
- gtk_entry_set_text (GTK_ENTRY (priv->address_entry), new_text);
- g_free (text);
- }
- else {
- gtk_entry_set_text (GTK_ENTRY (priv->address_entry), "");
- }
-
-
- param = get_icalparam_by_type (prop, ICAL_ROLE_PARAMETER);
- role_val = icalparameter_get_role (param);
- if (role_val < ICAL_ROLE_CHAIR || role_val > ICAL_ROLE_NONPARTICIPANT)
- role_val = ICAL_ROLE_REQPARTICIPANT;
-
- text = role_values [role_val - ICAL_ROLE_CHAIR];
- gtk_entry_set_text (GTK_ENTRY (priv->role_entry), text);
-
- param = get_icalparam_by_type (prop, ICAL_RSVP_PARAMETER);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->rsvp_check),
- icalparameter_get_rsvp (param));
-
- gtk_widget_show (priv->edit_dialog);
-
- button_num = gnome_dialog_run (GNOME_DIALOG (priv->edit_dialog));
-
- if (button_num == 0) {
- /* The user pressed the OK button. */
- new_text = gtk_entry_get_text (GTK_ENTRY (priv->address_entry));
-
- g_snprintf (buffer, 190, "MAILTO:%s", new_text);
- value = icalvalue_new_text (buffer);
- icalproperty_set_value (prop, value);
-
- /* Take care of the ROLE. */
- icalproperty_remove_parameter (prop, ICAL_ROLE_PARAMETER);
-
- param = NULL;
- text = gtk_entry_get_text (GTK_ENTRY(priv->role_entry));
-
- for (cntr = 0; cntr < 4; cntr++) {
- if (strncmp (text, role_values[cntr], 3) == 0) {
- param = icalparameter_new_role (ICAL_ROLE_CHAIR + cntr);
- break;
- }
- }
-
- if (param == NULL) {
- g_print ("e-meeting-edit.c: edit_attendee() the ROLE param was null.\n");
- /* Use this as a default case, if none of the others match. */
- param = icalparameter_new_role (ICAL_ROLE_REQPARTICIPANT);
- }
-
- icalproperty_add_parameter (prop, param);
-
- /* Now the RSVP. */
- icalproperty_remove_parameter (prop, ICAL_RSVP_PARAMETER);
-
- if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->rsvp_check)))
- param = icalparameter_new_rsvp (ICAL_RSVP_TRUE);
- else
- param = icalparameter_new_rsvp (ICAL_RSVP_FALSE);
- icalproperty_add_parameter (prop, param);
-
- retval = TRUE;
- }
- else /* The user didn't say OK. */
- retval = FALSE;
-
- return retval;
-}
-
-static void
-schedule_button_clicked_cb (GtkWidget *widget, gpointer data)
-{
- EMeetingEditorPrivate *priv;
-
- EMeetingTimeSelector *mts;
- EMeetingTimeSelectorAttendeeType type;
- GtkWidget *dialog;
- gchar *attendee;
- gint cntr, row;
- icalproperty *prop;
- icalparameter *param;
- gint button_num;
-
- priv = (EMeetingEditorPrivate *) ((EMeetingEditor *)data)->priv;
-
-
- gtk_widget_push_visual (gdk_imlib_get_visual ());
- gtk_widget_push_colormap (gdk_imlib_get_colormap ());
-
- dialog = gnome_dialog_new ("Schedule Meeting", "Set Time", "Cancel", NULL);
-
- gtk_window_set_default_size (GTK_WINDOW (dialog), 600, 400);
- gtk_window_set_policy (GTK_WINDOW (dialog), FALSE, TRUE, FALSE);
-
- mts = (EMeetingTimeSelector *)e_meeting_time_selector_new ();
- gtk_container_add (GTK_CONTAINER (GNOME_DIALOG (dialog)->vbox), GTK_WIDGET (mts));
- gtk_window_add_accel_group (GTK_WINDOW (dialog),
- E_MEETING_TIME_SELECTOR (mts)->accel_group);
- gtk_widget_show (GTK_WIDGET (mts));
-
- gtk_widget_pop_visual ();
- gtk_widget_pop_colormap ();
-
-
- /* Let's stick all the attendees that we have in our clist, into the
- meeting time widget. */
- for (cntr = 0; cntr < priv->numentries; cntr++ ) {
- gtk_clist_get_text (GTK_CLIST (priv->attendee_list), cntr,
- ADDRESS_COL, &attendee);
- row = e_meeting_time_selector_attendee_add (mts, attendee, NULL);
-
- prop = (icalproperty *)gtk_clist_get_row_data (GTK_CLIST (priv->attendee_list), cntr);
- param = get_icalparam_by_type (prop, ICAL_ROLE_PARAMETER);
-
- switch (icalparameter_get_role (param)) {
- case ICAL_ROLE_CHAIR:
- case ICAL_ROLE_REQPARTICIPANT:
- type = E_MEETING_TIME_SELECTOR_REQUIRED_PERSON;
- break;
- default:
- type = E_MEETING_TIME_SELECTOR_OPTIONAL_PERSON;
- }
-
- e_meeting_time_selector_attendee_set_type (mts, row, type);
- }
-
- /* I don't want the meeting widget to be destroyed before I can
- extract information from it; so now the dialog window will just
- be hidden when the user clicks a button or closes it. */
- gnome_dialog_close_hides (GNOME_DIALOG (dialog), TRUE);
-
- gnome_dialog_set_close (GNOME_DIALOG (dialog), TRUE);
-
- button_num = gnome_dialog_run (GNOME_DIALOG (dialog));
-
- if (button_num == 0) {
- /* The user clicked "Set Time". */
- gint start_year, start_month, start_day, start_hour, start_minute,
- end_year, end_month, end_day, end_hour, end_minute;
- CalComponentDateTime cal_dtstart, cal_dtend;
-
-
- e_meeting_time_selector_get_meeting_time (mts,
- &start_year,
- &start_month,
- &start_day,
- &start_hour,
- &start_minute,
- &end_year,
- &end_month,
- &end_day,
- &end_hour,
- &end_minute);
-
- cal_component_get_dtstart (priv->comp, &cal_dtstart);
- cal_component_get_dtend (priv->comp, &cal_dtend);
-
- cal_dtstart.value->second = 0;
- cal_dtstart.value->minute = start_minute;
- cal_dtstart.value->hour = start_hour;
- cal_dtstart.value->day = start_day;
- cal_dtstart.value->month = start_month;
- cal_dtstart.value->year = start_year;
-
- cal_dtend.value->second = 0;
- cal_dtend.value->minute = end_minute;
- cal_dtend.value->hour = end_hour;
- cal_dtend.value->day = end_day;
- cal_dtend.value->month = end_month;
- cal_dtend.value->year = end_year;
-
- cal_component_set_dtstart (priv->comp, &cal_dtstart);
- cal_component_set_dtend (priv->comp, &cal_dtend);
-
- cal_component_free_datetime (&cal_dtstart);
- cal_component_free_datetime (&cal_dtend);
-
- priv->dirty = TRUE;
- }
-
- gtk_widget_destroy (GTK_WIDGET (dialog));
-
- return;
-}
-
-#define GNOME_EVOLUTION_COMPOSER_OAFIID "OAFIID:GNOME_Evolution_Mail_Composer"
-
-static gchar *itip_methods[] = {
- "REQUEST",
- "PUBLISH",
- "CANCEL"
-};
-
-enum itip_method_enum {
- METHOD_REQUEST,
- METHOD_PUBLISH,
- METHOD_CANCEL
-};
-
-typedef enum itip_method_enum itip_method_enum;
-
-static void
-send_calendar_info (itip_method_enum method, EMeetingEditorPrivate *priv)
-{
- BonoboObjectClient *bonobo_server;
- GNOME_Evolution_Composer composer_server;
- CORBA_Environment ev;
- GNOME_Evolution_Composer_RecipientList *to_list, *cc_list, *bcc_list;
- GNOME_Evolution_Composer_Recipient *recipient;
- gchar *cell_text;
- CORBA_char *subject;
- gint cntr;
- gint len;
- CalComponentText caltext;
- CORBA_char *content_type, *filename, *description, *attach_data;
- CORBA_boolean show_inline;
- CORBA_char tempstr[200];
-
-
- CORBA_exception_init (&ev);
-
- /* First, I obtain an object reference that represents the Composer. */
- bonobo_server = bonobo_object_activate (GNOME_EVOLUTION_COMPOSER_OAFIID, 0);
-
- g_return_if_fail (bonobo_server != NULL);
-
- composer_server = bonobo_object_corba_objref (BONOBO_OBJECT (bonobo_server));
-
- /* All right, now I have to convert my list of recipients into one of those
- CORBA sequences. */
- to_list = GNOME_Evolution_Composer_RecipientList__alloc ();
- to_list->_maximum = priv->numentries;
- to_list->_length = priv->numentries;
- to_list->_buffer = CORBA_sequence_GNOME_Evolution_Composer_Recipient_allocbuf (priv->numentries);
-
- for (cntr = 0; cntr < priv->numentries; cntr++) {
- gtk_clist_get_text (GTK_CLIST (priv->attendee_list),
- cntr, ADDRESS_COL,
- &cell_text);
- len = strlen (cell_text);
-
- recipient = &(to_list->_buffer[cntr]);
- recipient->name = CORBA_string_alloc (0); /* FIXME: we may want an actual name here. */
- recipient->name[0] = '\0';
- recipient->address = CORBA_string_alloc (len);
- strcpy (recipient->address, cell_text);
- }
-
- cc_list = GNOME_Evolution_Composer_RecipientList__alloc ();
- cc_list->_maximum = cc_list->_length = 0;
- bcc_list = GNOME_Evolution_Composer_RecipientList__alloc ();
- bcc_list->_maximum = bcc_list->_length = 0;
-
- cal_component_get_summary (priv->comp, &caltext);
- subject = CORBA_string_alloc (strlen (caltext.value));
- strcpy (subject, caltext.value);
-
- GNOME_Evolution_Composer_setHeaders (composer_server, to_list, cc_list, bcc_list, subject, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_printerr ("gui/e-meeting-edit.c: I couldn't set the composer headers via CORBA! Aagh.\n");
- CORBA_exception_free (&ev);
- return;
- }
-
- sprintf (tempstr, "text/calendar;METHOD=%s", itip_methods[method]);
- content_type = CORBA_string_alloc (strlen (tempstr));
- strcpy (content_type, tempstr);
- filename = CORBA_string_alloc (0);
- filename[0] = '\0';
- sprintf (tempstr, "Calendar attachment");
- description = CORBA_string_alloc (strlen (tempstr));
- strcpy (description, tempstr);
- show_inline = FALSE;
-
- /* I need to create an encapsulating iCalendar component, and stuff our vEvent
- into it. */
- {
- icalcomponent *comp;
- icalproperty *prop;
- icalvalue *value;
- gchar *ical_string;
-
- save_organizer (priv);
-
- comp = icalcomponent_new (ICAL_VCALENDAR_COMPONENT);
-
- prop = icalproperty_new (ICAL_PRODID_PROPERTY);
- value = icalvalue_new_text ("-//HelixCode/Evolution//EN");
- icalproperty_set_value (prop, value);
- icalcomponent_add_property (comp, prop);
-
- prop = icalproperty_new (ICAL_VERSION_PROPERTY);
- value = icalvalue_new_text ("2.0");
- icalproperty_set_value (prop, value);
- icalcomponent_add_property (comp, prop);
-
- prop = icalproperty_new (ICAL_METHOD_PROPERTY);
- value = icalvalue_new_text (itip_methods[method]);
- icalproperty_set_value (prop, value);
- icalcomponent_add_property (comp, prop);
-
- icalcomponent_add_component (comp, priv->vevent);
-
- ical_string = icalcomponent_as_ical_string (comp);
- attach_data = CORBA_string_alloc (strlen (ical_string));
- strcpy (attach_data, ical_string);
-
- icalcomponent_remove_component (comp, priv->vevent);
- icalcomponent_free (comp);
- }
-
- GNOME_Evolution_Composer_attachData (composer_server,
- content_type, filename, description,
- show_inline, attach_data,
- &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_printerr ("gui/e-meeting-edit.c: I couldn't attach data to the composer via CORBA! Aagh.\n");
- CORBA_exception_free (&ev);
- return;
- }
-
- GNOME_Evolution_Composer_show (composer_server, &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_printerr ("gui/e-meeting-edit.c: I couldn't show the composer via CORBA! Aagh.\n");
- CORBA_exception_free (&ev);
- return;
- }
-
- CORBA_exception_free (&ev);
-
- /* Let's free shit up. */
-
- /* Beware--depending on whether CORBA_free is recursive, which I
- think is is, we might have memory leaks, in which case the code
- below is necessary. */
-#if 0
- for (cntr = 0; cntr < priv->numentries; cntr++) {
- recipient = &(to_list->_buffer[cntr]);
- CORBA_free (recipient->name);
- CORBA_free (recipient->address);
- recipient->name = recipient->address = NULL;
- }
-#endif
-
- if (CORBA_sequence_get_release (to_list) != FALSE)
- CORBA_free (to_list->_buffer);
-
- CORBA_free (to_list);
- CORBA_free (cc_list);
- CORBA_free (bcc_list);
-
- CORBA_free (subject);
- CORBA_free (content_type);
- CORBA_free (filename);
- CORBA_free (description);
- CORBA_free (attach_data);
-
- /* bonobo_object_unref (BONOBO_OBJECT (bonobo_server)); */
-}
-
-/********
- * This routine is called when the publish button is clicked. Duh.
- * Actually, I'm just testing my commenting macros.
- ********/
-static void
-publish_button_clicked_cb (GtkWidget *widget, gpointer data)
-{
- EMeetingEditorPrivate *priv;
-
-
- priv = (EMeetingEditorPrivate *) ((EMeetingEditor *)data)->priv;
-
- send_calendar_info (METHOD_PUBLISH, priv);
-
-}
-
-static void
-request_button_clicked_cb (GtkWidget *widget, gpointer data)
-{
- EMeetingEditorPrivate *priv;
-
- priv = (EMeetingEditorPrivate *) ((EMeetingEditor *)data)->priv;
-
- send_calendar_info (METHOD_REQUEST, priv);
-
-}
-
-static void
-cancel_button_clicked_cb (GtkWidget *widget, gpointer data)
-{
- EMeetingEditorPrivate *priv;
-
- priv = (EMeetingEditorPrivate *) ((EMeetingEditor *)data)->priv;
-
- send_calendar_info (METHOD_CANCEL, priv);
-}
-
-
-
-static void
-add_button_clicked_cb (GtkWidget *widget, gpointer data)
-{
- EMeetingEditorPrivate *priv;
- icalproperty *prop;
- icalparameter *param;
-
- priv = (EMeetingEditorPrivate *) ((EMeetingEditor *)data)->priv;
-
- prop = icalproperty_new (ICAL_ATTENDEE_PROPERTY);
- param = icalparameter_new_role (ICAL_ROLE_REQPARTICIPANT);
- icalproperty_add_parameter (prop, param);
- param = icalparameter_new_rsvp (ICAL_RSVP_TRUE);
- icalproperty_add_parameter (prop, param);
- param = icalparameter_new_partstat (ICAL_PARTSTAT_NEEDSACTION);
- icalproperty_add_parameter (prop, param);
-
- if (edit_attendee (prop, data) == TRUE) {
- /* Let's add this property to our component and to the CList. */
- icalcomponent_add_property (priv->vevent, prop);
-
- /* The -1 indicates that we should add a new row. */
- put_property_in_list (prop, -1, data);
-
- priv->dirty = TRUE;
- }
- else {
- icalproperty_free (prop);
- }
-}
-
-static void
-delete_button_clicked_cb (GtkWidget *widget, gpointer data)
-{
- EMeetingEditorPrivate *priv;
-
- priv = (EMeetingEditorPrivate *) ((EMeetingEditor *)data)->priv;
-
- if (priv->selected_row < 0) {
- GtkWidget *dialog;
-
- dialog = gnome_warning_dialog_parented ("You must select an entry to delete.",
- GTK_WINDOW (priv->meeting_window));
- gnome_dialog_run (GNOME_DIALOG(dialog));
- }
- else {
- /* Delete the associated property from the iCAL object. */
- icalproperty *prop;
-
- prop = (icalproperty *)gtk_clist_get_row_data (GTK_CLIST (priv->attendee_list),
- priv->selected_row);
- icalcomponent_remove_property (priv->vevent, prop);
- icalproperty_free (prop);
-
- gtk_clist_remove (GTK_CLIST (priv->attendee_list), priv->selected_row);
- priv->selected_row = -1;
- priv->numentries--;
- priv->dirty = TRUE;
- }
-}
-
-static void
-edit_button_clicked_cb (GtkWidget *widget, gpointer data)
-{
- EMeetingEditorPrivate *priv;
-
- priv = (EMeetingEditorPrivate *) ((EMeetingEditor *)data)->priv;
-
-
- if (priv->selected_row < 0) {
- GtkWidget *dialog;
-
- dialog = gnome_warning_dialog_parented ("You must select an entry to edit.",
- GTK_WINDOW (priv->meeting_window));
- gnome_dialog_run (GNOME_DIALOG(dialog));
- return;
- }
- else {
- icalproperty *prop, *new_prop;
- icalparameter *param;
- icalvalue *value;
-
- prop = (icalproperty *)gtk_clist_get_row_data (GTK_CLIST (priv->attendee_list),
- priv->selected_row);
-
- g_assert (prop != NULL);
-
- new_prop = icalproperty_new_clone (prop);
-
- if (edit_attendee (new_prop, data)) {
- /* The user hit Okay. */
- /*We need to synchronize the old property with the newly edited one.*/
- value = icalvalue_new_clone (icalproperty_get_value (new_prop));
- icalproperty_set_value (prop, value);
-
- icalproperty_remove_parameter (prop, ICAL_ROLE_PARAMETER);
- icalproperty_remove_parameter (prop, ICAL_RSVP_PARAMETER);
- icalproperty_remove_parameter (prop, ICAL_PARTSTAT_PARAMETER);
-
- param = icalparameter_new_clone (get_icalparam_by_type (new_prop, ICAL_ROLE_PARAMETER));
- g_assert (param != NULL);
- icalproperty_add_parameter (prop, param);
- param = icalparameter_new_clone (get_icalparam_by_type (new_prop, ICAL_RSVP_PARAMETER));
- g_assert (param != NULL);
- icalproperty_add_parameter (prop, param);
- param = icalparameter_new_clone (get_icalparam_by_type (new_prop, ICAL_PARTSTAT_PARAMETER));
- g_assert (param != NULL);
- icalproperty_add_parameter (prop, param);
-
- put_property_in_list (prop, priv->selected_row, data);
- priv->dirty = TRUE;
-
- }
- icalproperty_free (new_prop);
- }
-}
-
-
-
-static void
-list_row_select_cb (GtkWidget *widget,
- gint row,
- gint column,
- GdkEventButton *event,
- gpointer data)
-{
- EMeetingEditorPrivate *priv;
-
- priv = (EMeetingEditorPrivate *) ((EMeetingEditor *)data)->priv;
-
- priv->selected_row = row;
-}
-
-static void
-organizer_changed_cb (GtkWidget *widget, gpointer data)
-{
- EMeetingEditorPrivate *priv;
-
- priv = (EMeetingEditorPrivate *) ((EMeetingEditor *)data)->priv;
-
- gtk_signal_disconnect (GTK_OBJECT (priv->organizer_entry), priv->changed_signal_id);
-
- priv->dirty = TRUE;
-}
-
-
-/* ------------------------------------------------------------ */
-/* --------------------- Exported Functions ------------------- */
-/* ------------------------------------------------------------ */
-
-EMeetingEditor *
-e_meeting_editor_new (CalComponent *comp, CalClient *client)
-{
- EMeetingEditor *object;
- EMeetingEditorPrivate *priv;
-
- object = (EMeetingEditor *)g_new(EMeetingEditor, 1);
-
- priv = (EMeetingEditorPrivate *) g_new0(EMeetingEditorPrivate, 1);
- priv->selected_row = -1;
- priv->comp = comp;
- priv->client = client;
- priv->icalcomp = cal_component_get_icalcomponent (comp);
-
- object->priv = priv;
-
- return object;
-}
-
-void
-e_meeting_editor_free (EMeetingEditor *editor)
-{
- if (editor == NULL)
- return;
-
- if (editor->priv != NULL)
- g_free (editor->priv);
-
- g_free (editor);
-}
-
-
-
-void
-e_meeting_edit (EMeetingEditor *editor)
-{
- EMeetingEditorPrivate *priv;
- GtkWidget *add_button, *delete_button, *edit_button;
- icalproperty *prop;
- icalvalue *value;
- gchar *text;
-
-
- g_return_if_fail (editor != NULL);
-
- priv = (EMeetingEditorPrivate *)editor->priv;
-
- g_return_if_fail (priv != NULL);
-
-
- priv->xml = glade_xml_new (EVOLUTION_GLADEDIR "/" E_MEETING_GLADE_XML, NULL);
-
- priv->meeting_window = glade_xml_get_widget (priv->xml, "meeting_window");
- priv->attendee_list = glade_xml_get_widget (priv->xml, "attendee_list");
- priv->role_entry = glade_xml_get_widget (priv->xml, "role_entry");
- priv->rsvp_check = glade_xml_get_widget (priv->xml, "rsvp_check");
- priv->schedule_button = glade_xml_get_widget (priv->xml, "schedule_button");
- priv->publish_button = glade_xml_get_widget (priv->xml, "publish_button");
- priv->request_button = glade_xml_get_widget (priv->xml, "request_button");
- priv->cancel_button = glade_xml_get_widget (priv->xml, "cancel_button");
-
- gtk_clist_set_column_justification (GTK_CLIST (priv->attendee_list), ROLE_COL, GTK_JUSTIFY_CENTER);
- gtk_clist_set_column_justification (GTK_CLIST (priv->attendee_list), RSVP_COL, GTK_JUSTIFY_CENTER);
- gtk_clist_set_column_justification (GTK_CLIST (priv->attendee_list), STATUS_COL, GTK_JUSTIFY_CENTER);
-
- gtk_signal_connect (GTK_OBJECT (priv->meeting_window), "delete_event",
- GTK_SIGNAL_FUNC (window_delete_cb), editor);
-
- gtk_signal_connect_after (GTK_OBJECT (priv->meeting_window), "delete_event",
- GTK_SIGNAL_FUNC (window_destroy_cb), editor);
-
- gtk_signal_connect (GTK_OBJECT (priv->meeting_window), "destroy_event",
- GTK_SIGNAL_FUNC (window_destroy_cb), editor);
-
- gtk_signal_connect (GTK_OBJECT (priv->attendee_list), "select_row",
- GTK_SIGNAL_FUNC (list_row_select_cb), editor);
-
- gtk_signal_connect (GTK_OBJECT (priv->schedule_button), "clicked",
- GTK_SIGNAL_FUNC (schedule_button_clicked_cb), editor);
-
- gtk_signal_connect (GTK_OBJECT (priv->publish_button), "clicked",
- GTK_SIGNAL_FUNC (publish_button_clicked_cb), editor);
-
- gtk_signal_connect (GTK_OBJECT (priv->request_button), "clicked",
- GTK_SIGNAL_FUNC (request_button_clicked_cb), editor);
-
- gtk_signal_connect (GTK_OBJECT (priv->cancel_button), "clicked",
- GTK_SIGNAL_FUNC (cancel_button_clicked_cb), editor);
-
- add_button = glade_xml_get_widget (priv->xml, "add_button");
- delete_button = glade_xml_get_widget (priv->xml, "delete_button");
- edit_button = glade_xml_get_widget (priv->xml, "edit_button");
-
- gtk_signal_connect (GTK_OBJECT (add_button), "clicked",
- GTK_SIGNAL_FUNC (add_button_clicked_cb), editor);
-
- gtk_signal_connect (GTK_OBJECT (delete_button), "clicked",
- GTK_SIGNAL_FUNC (delete_button_clicked_cb), editor);
-
- gtk_signal_connect (GTK_OBJECT (edit_button), "clicked",
- GTK_SIGNAL_FUNC (edit_button_clicked_cb), editor);
-
- priv->organizer_entry = glade_xml_get_widget (priv->xml, "organizer_entry");
-
- if (icalcomponent_isa (priv->icalcomp) != ICAL_VEVENT_COMPONENT) {
- icalcompiter iter;
-
- iter = icalcomponent_begin_component (priv->icalcomp, ICAL_VEVENT_COMPONENT);
- priv->vevent = icalcompiter_deref (&iter);
- } else
- priv->vevent = priv->icalcomp;
-
- g_assert (priv->vevent != NULL);
-
- /* Let's extract the organizer, if there is one. */
- prop = icalcomponent_get_first_property (priv->vevent, ICAL_ORGANIZER_PROPERTY);
-
- if (prop != NULL) {
- gchar *buffer;
-
- value = icalproperty_get_value (prop);
- buffer = g_strdup (icalvalue_as_ical_string (value));
- if (buffer != NULL) {
- /* Strip off the MAILTO:, if it is present. */
- text = strchr (buffer, ':');
- if (text == NULL)
- text = buffer;
- else
- text++;
-
- gtk_entry_set_text (GTK_ENTRY (priv->organizer_entry), text);
- g_free (buffer);
- }
-
- }
-
- priv->changed_signal_id = gtk_signal_connect (GTK_OBJECT (priv->organizer_entry), "changed",
- GTK_SIGNAL_FUNC (organizer_changed_cb), editor);
-
-
- /* Let's go through the iCAL object, and create a list entry
- for each ATTENDEE property. */
- for (prop = icalcomponent_get_first_property (priv->vevent, ICAL_ATTENDEE_PROPERTY);
- prop != NULL;
- prop = icalcomponent_get_next_property (priv->vevent, ICAL_ATTENDEE_PROPERTY))
- {
- put_property_in_list (prop, -1, editor);
- }
-
-
- gtk_widget_show (priv->meeting_window);
-
- gtk_main ();
-
- if (priv->meeting_window != NULL)
- gtk_widget_destroy (priv->meeting_window);
-
- if (priv->edit_dialog != NULL)
- gtk_widget_destroy (priv->edit_dialog);
-
- gtk_object_unref (GTK_OBJECT (priv->xml));
-}
diff --git a/calendar/gui/e-meeting-edit.h b/calendar/gui/e-meeting-edit.h
deleted file mode 100644
index e29453ecba..0000000000
--- a/calendar/gui/e-meeting-edit.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Evolution calendar - Meeting editor dialog
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Authors: Jesse Pavel <jpavel@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef __E_MEETING_EDIT_H__
-#define __E_MEETING_EDIT_H__
-
-#include <config.h>
-#include <glade/glade.h>
-#include <cal-util/cal-component.h>
-#include <cal-client/cal-client.h>
-
-typedef struct _EMeetingEditor EMeetingEditor;
-
-struct _EMeetingEditor {
- gpointer priv;
-};
-
-
-EMeetingEditor * e_meeting_editor_new (CalComponent *comp, CalClient *client);
-
-void e_meeting_edit (EMeetingEditor *editor);
-void e_meeting_editor_free (EMeetingEditor *editor);
-
-
-#endif /* __E_MEETING_EDIT_H__ */
-
diff --git a/calendar/gui/e-tasks.c b/calendar/gui/e-tasks.c
deleted file mode 100644
index 1686ac793a..0000000000
--- a/calendar/gui/e-tasks.c
+++ /dev/null
@@ -1,653 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-tasks.c
- *
- * Copyright (C) 2001 Helix Code, Inc.
- * Copyright (C) 2001 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Authors: Federico Mena Quintero <federico@ximian.com>
- * Damon Chaplin <damon@ximian.com>
- */
-
-#include <config.h>
-#include <gal/util/e-util.h>
-#include <gal/e-table/e-table-scrolled.h>
-#include <gal/menus/gal-view-collection.h>
-#include <gal/menus/gal-view-factory-etable.h>
-#include <gal/menus/gal-view-etable.h>
-#include "widgets/menus/gal-view-menus.h"
-#include "dialogs/task-editor.h"
-#include "calendar-config.h"
-#include "e-calendar-table.h"
-#include "calendar-config.h"
-#include "component-factory.h"
-
-#include "e-tasks.h"
-
-/* A list of all of the ETasks widgets in use. We use this to update the
- user preference settings. This will change when we switch to GConf. */
-static GList *all_tasks = NULL;
-
-
-/* Private part of the GnomeCalendar structure */
-struct _ETasksPrivate {
- /* The calendar client object we monitor */
- CalClient *client;
-
- /* The ECalendarTable showing the tasks. */
- GtkWidget *tasks_view;
-
- /* The option menu showing the categories, and the popup menu. */
- GtkWidget *categories_option_menu;
- GtkWidget *categories_menu;
-};
-
-
-static void e_tasks_class_init (ETasksClass *class);
-static void e_tasks_init (ETasks *tasks);
-static void setup_widgets (ETasks *tasks);
-static void e_tasks_destroy (GtkObject *object);
-
-static void cal_opened_cb (CalClient *client, CalClientOpenStatus status, gpointer data);
-static void obj_updated_cb (CalClient *client, const char *uid, gpointer data);
-static void obj_removed_cb (CalClient *client, const char *uid, gpointer data);
-
-static char* e_tasks_get_config_filename (ETasks *tasks);
-
-static void e_tasks_on_filter_selected (GtkMenuShell *menu_shell,
- ETasks *tasks);
-static void e_tasks_on_categories_changed (CalendarModel *model,
- ETasks *tasks);
-static void e_tasks_rebuild_categories_menu (ETasks *tasks);
-static gint e_tasks_add_menu_item (gpointer key,
- gpointer value,
- gpointer data);
-
-/* Signal IDs */
-enum {
- SELECTION_CHANGED,
- LAST_SIGNAL
-};
-
-static GtkTableClass *parent_class;
-static guint e_tasks_signals[LAST_SIGNAL] = { 0 };
-
-
-E_MAKE_TYPE (e_tasks, "ETasks", ETasks,
- e_tasks_class_init, e_tasks_init,
- GTK_TYPE_TABLE)
-
-
-/* Class initialization function for the gnome calendar */
-static void
-e_tasks_class_init (ETasksClass *class)
-{
- GtkObjectClass *object_class;
-
- object_class = (GtkObjectClass *) class;
-
- parent_class = gtk_type_class (GTK_TYPE_TABLE);
-
- e_tasks_signals[SELECTION_CHANGED] =
- gtk_signal_new ("selection_changed",
- GTK_RUN_FIRST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETasksClass, selection_changed),
- gtk_marshal_NONE__INT,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_INT);
-
- gtk_object_class_add_signals (object_class, e_tasks_signals, LAST_SIGNAL);
-
- object_class->destroy = e_tasks_destroy;
-
- class->selection_changed = NULL;
-}
-
-
-/* Object initialization function for the gnome calendar */
-static void
-e_tasks_init (ETasks *tasks)
-{
- ETasksPrivate *priv;
-
- priv = g_new0 (ETasksPrivate, 1);
- tasks->priv = priv;
-
- setup_widgets (tasks);
-}
-
-/* Callback used when the selection changes in the table. */
-static void
-table_selection_change_cb (ETable *etable, gpointer data)
-{
- ETasks *tasks;
- int n_selected;
-
- tasks = E_TASKS (data);
-
- n_selected = e_table_selected_count (etable);
- gtk_signal_emit (GTK_OBJECT (tasks), e_tasks_signals[SELECTION_CHANGED],
- n_selected);
-}
-
-#define E_TASKS_TABLE_DEFAULT_STATE \
- "<?xml version=\"1.0\"?>" \
- "<ETableState>" \
- "<column source=\"13\"/>" \
- "<column source=\"14\"/>" \
- "<column source=\"9\"/>" \
- "<column source=\"5\"/>" \
- "<grouping/>" \
- "</ETableState>"
-
-
-static void
-setup_widgets (ETasks *tasks)
-{
- ETasksPrivate *priv;
- ETable *etable;
- GtkWidget *hbox, *menuitem, *categories_label;
- CalendarModel *model;
-
- priv = tasks->priv;
-
- hbox = gtk_hbox_new (FALSE, 0);
- gtk_widget_show (hbox);
- gtk_table_attach (GTK_TABLE (tasks), hbox, 0, 1, 0, 1,
- GTK_EXPAND | GTK_FILL, 0, 0, 0);
-
- priv->categories_option_menu = gtk_option_menu_new ();
- gtk_widget_show (priv->categories_option_menu);
- gtk_box_pack_end (GTK_BOX (hbox), priv->categories_option_menu,
- FALSE, FALSE, 0);
-
- priv->categories_menu = gtk_menu_new ();
-
- menuitem = gtk_menu_item_new_with_label (_("All"));
- gtk_widget_show (menuitem);
- gtk_menu_append (GTK_MENU (priv->categories_menu), menuitem);
-
- gtk_option_menu_set_menu (GTK_OPTION_MENU (priv->categories_option_menu), priv->categories_menu);
-
- categories_label = gtk_label_new (_("Category:"));
- gtk_widget_show (categories_label);
- gtk_box_pack_end (GTK_BOX (hbox), categories_label, FALSE, FALSE, 4);
-
-
- priv->tasks_view = e_calendar_table_new ();
- model = e_calendar_table_get_model (E_CALENDAR_TABLE (priv->tasks_view));
- calendar_model_set_new_comp_vtype (model, CAL_COMPONENT_TODO);
- etable = e_table_scrolled_get_table (E_TABLE_SCROLLED (E_CALENDAR_TABLE (priv->tasks_view)->etable));
- e_table_set_state (etable, E_TASKS_TABLE_DEFAULT_STATE);
- gtk_table_attach (GTK_TABLE (tasks), priv->tasks_view, 0, 1, 1, 2,
- GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
- gtk_widget_show (priv->tasks_view);
- calendar_config_configure_e_calendar_table (E_CALENDAR_TABLE (priv->tasks_view));
-
- gtk_signal_connect (GTK_OBJECT (E_CALENDAR_TABLE (priv->tasks_view)->model),
- "categories-changed",
- GTK_SIGNAL_FUNC (e_tasks_on_categories_changed), tasks);
-
- gtk_signal_connect (GTK_OBJECT (etable), "selection_change",
- GTK_SIGNAL_FUNC (table_selection_change_cb), tasks);
-}
-
-
-GtkWidget *
-e_tasks_construct (ETasks *tasks)
-{
- ETasksPrivate *priv;
-
- g_return_val_if_fail (tasks != NULL, NULL);
- g_return_val_if_fail (E_IS_TASKS (tasks), NULL);
-
- priv = tasks->priv;
-
- priv->client = cal_client_new ();
- if (!priv->client)
- return NULL;
-
- gtk_signal_connect (GTK_OBJECT (priv->client), "cal_opened",
- GTK_SIGNAL_FUNC (cal_opened_cb), tasks);
- gtk_signal_connect (GTK_OBJECT (priv->client), "obj_updated",
- GTK_SIGNAL_FUNC (obj_updated_cb), tasks);
- gtk_signal_connect (GTK_OBJECT (priv->client), "obj_removed",
- GTK_SIGNAL_FUNC (obj_removed_cb), tasks);
-
-#if 0
- alarm_notify_add_client (priv->client);
-#endif
-
- e_calendar_table_set_cal_client (E_CALENDAR_TABLE (priv->tasks_view),
- priv->client);
-
- return GTK_WIDGET (tasks);
-}
-
-
-GtkWidget *
-e_tasks_new (void)
-{
- ETasks *tasks;
-
- tasks = gtk_type_new (e_tasks_get_type ());
-
- if (!e_tasks_construct (tasks)) {
- g_message ("e_tasks_new(): Could not construct the tasks GUI");
- gtk_object_unref (GTK_OBJECT (tasks));
- return NULL;
- }
-
- all_tasks = g_list_prepend (all_tasks, tasks);
-
- return GTK_WIDGET (tasks);
-}
-
-
-static void
-e_tasks_destroy (GtkObject *object)
-{
- ETasks *tasks;
- ETasksPrivate *priv;
- char *config_filename;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (E_IS_TASKS (object));
-
- tasks = E_TASKS (object);
- priv = tasks->priv;
-
- /* Save the ETable layout. */
- config_filename = e_tasks_get_config_filename (tasks);
- e_calendar_table_save_state (E_CALENDAR_TABLE (priv->tasks_view),
- config_filename);
- g_free (config_filename);
-
- if (priv->client) {
-#if 0
- alarm_notify_remove_client (priv->client);
-#endif
- gtk_object_unref (GTK_OBJECT (priv->client));
- priv->client = NULL;
- }
-
- g_free (priv);
- tasks->priv = NULL;
-
- all_tasks = g_list_remove (all_tasks, tasks);
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-
-gboolean
-e_tasks_open (ETasks *tasks,
- char *file)
-{
- ETasksPrivate *priv;
- char *config_filename;
-
- g_return_val_if_fail (tasks != NULL, FALSE);
- g_return_val_if_fail (E_IS_TASKS (tasks), FALSE);
- g_return_val_if_fail (file != NULL, FALSE);
-
- priv = tasks->priv;
-
- if (!cal_client_open_calendar (priv->client, file, FALSE)) {
- g_message ("e_tasks_open(): Could not issue the request");
- return FALSE;
- }
-
- config_filename = e_tasks_get_config_filename (tasks);
- e_calendar_table_load_state (E_CALENDAR_TABLE (priv->tasks_view),
- config_filename);
- g_free (config_filename);
-
- return TRUE;
-}
-
-
-/* Displays an error to indicate that loading a calendar failed */
-static void
-load_error (ETasks *tasks,
- const char *uri)
-{
- char *msg;
-
- msg = g_strdup_printf (_("Could not load the tasks in `%s'"), uri);
- gnome_error_dialog_parented (msg, GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (tasks))));
- g_free (msg);
-}
-
-/* Displays an error to indicate that the specified URI method is not supported */
-static void
-method_error (ETasks *tasks,
- const char *uri)
-{
- char *msg;
-
- msg = g_strdup_printf (_("The method required to load `%s' is not supported"), uri);
- gnome_error_dialog_parented (msg, GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (tasks))));
- g_free (msg);
-}
-
-/* Callback from the calendar client when a calendar is opened */
-static void
-cal_opened_cb (CalClient *client,
- CalClientOpenStatus status,
- gpointer data)
-{
- ETasks *tasks;
- ETasksPrivate *priv;
-
- tasks = E_TASKS (data);
- priv = tasks->priv;
-
- switch (status) {
- case CAL_CLIENT_OPEN_SUCCESS:
- /* Everything is OK */
- return;
-
- case CAL_CLIENT_OPEN_ERROR:
- load_error (tasks, cal_client_get_uri (client));
- break;
-
- case CAL_CLIENT_OPEN_NOT_FOUND:
- /* bullshit; we did not specify only_if_exists */
- g_assert_not_reached ();
- return;
-
- case CAL_CLIENT_OPEN_METHOD_NOT_SUPPORTED:
- method_error (tasks, cal_client_get_uri (client));
- break;
-
- default:
- g_assert_not_reached ();
- }
-}
-
-
-/* Callback from the calendar client when an object is updated */
-static void
-obj_updated_cb (CalClient *client,
- const char *uid,
- gpointer data)
-{
- ETasks *tasks;
- ETasksPrivate *priv;
-
- tasks = E_TASKS (data);
- priv = tasks->priv;
-
- /* FIXME: Do we need to do anything? */
-}
-
-
-/* Callback from the calendar client when an object is removed */
-static void
-obj_removed_cb (CalClient *client,
- const char *uid,
- gpointer data)
-{
- ETasks *tasks;
- ETasksPrivate *priv;
-
- tasks = E_TASKS (data);
- priv = tasks->priv;
-
- /* FIXME: Do we need to do anything? */
-}
-
-
-static char*
-e_tasks_get_config_filename (ETasks *tasks)
-{
- ETasksPrivate *priv;
- char *url, *filename;
-
- priv = tasks->priv;
-
- url = g_strdup (cal_client_get_uri (priv->client));
-
- /* This turns all funny characters into '_', in the string itself. */
- e_filename_make_safe (url);
-
- filename = g_strdup_printf ("%s/config/et-header-%s", evolution_dir,
- url);
- g_free (url);
-
- return filename;
-}
-
-
-/**
- * e_tasks_get_cal_client:
- * @tasks: An #ETasks.
- *
- * Queries the calendar client interface object that a tasks view is using.
- *
- * Return value: A calendar client interface object.
- **/
-CalClient *
-e_tasks_get_cal_client (ETasks *tasks)
-{
- ETasksPrivate *priv;
-
- g_return_val_if_fail (E_IS_TASKS (tasks), NULL);
-
- priv = tasks->priv;
-
- return priv->client;
-}
-
-
-void
-e_tasks_new_task (ETasks *tasks)
-{
- ETasksPrivate *priv;
- TaskEditor *tedit;
- CalComponent *comp;
-
- g_return_if_fail (E_IS_TASKS (tasks));
-
- priv = tasks->priv;
-
- tedit = task_editor_new ();
- task_editor_set_cal_client (tedit, priv->client);
-
- comp = cal_component_new ();
- cal_component_set_new_vtype (comp, CAL_COMPONENT_TODO);
-
- task_editor_set_todo_object (tedit, comp);
- gtk_object_unref (GTK_OBJECT (comp));
-
- task_editor_focus (tedit);
-}
-
-/**
- * e_tasks_delete_selected:
- * @tasks: A tasks control widget.
- *
- * Deletes the selected tasks in the task list.
- **/
-void
-e_tasks_delete_selected (ETasks *tasks)
-{
- ETasksPrivate *priv;
- ECalendarTable *cal_table;
-
- g_return_if_fail (tasks != NULL);
- g_return_if_fail (E_IS_TASKS (tasks));
-
- priv = tasks->priv;
-
- cal_table = E_CALENDAR_TABLE (priv->tasks_view);
- e_calendar_table_delete_selected (cal_table);
-}
-
-
-static void
-e_tasks_on_filter_selected (GtkMenuShell *menu_shell,
- ETasks *tasks)
-{
- ETasksPrivate *priv;
- ECalendarTable *cal_table;
- CalendarModel *model;
- GtkWidget *label;
- char *category;
-
- g_return_if_fail (E_IS_TASKS (tasks));
-
- priv = tasks->priv;
-
- label = GTK_BIN (priv->categories_option_menu)->child;
- gtk_label_get (GTK_LABEL (label), &category);
-
- cal_table = E_CALENDAR_TABLE (priv->tasks_view);
- model = cal_table->model;
-
- if (!strcmp (category, _("All"))) {
- calendar_model_set_default_category (model, NULL);
- e_calendar_table_set_filter_func (cal_table, NULL, NULL,
- NULL);
- } else {
- calendar_model_set_default_category (model, category);
- e_calendar_table_set_filter_func (cal_table,
- e_calendar_table_filter_by_category,
- g_strdup (category), g_free);
- }
-}
-
-
-static void
-e_tasks_on_categories_changed (CalendarModel *model,
- ETasks *tasks)
-{
- e_tasks_rebuild_categories_menu (tasks);
-}
-
-
-static void
-e_tasks_rebuild_categories_menu (ETasks *tasks)
-{
- ETasksPrivate *priv;
- CalendarModel *model;
- GTree *categories;
- GtkWidget *menuitem;
-
- priv = tasks->priv;
-
- priv->categories_menu = gtk_menu_new ();
-
- menuitem = gtk_menu_item_new_with_label (_("All"));
- gtk_widget_show (menuitem);
- gtk_menu_append (GTK_MENU (priv->categories_menu), menuitem);
-
- model = E_CALENDAR_TABLE (priv->tasks_view)->model;
- categories = calendar_model_get_categories (model);
- g_return_if_fail (categories != NULL);
-
- g_tree_traverse (categories, e_tasks_add_menu_item, G_IN_ORDER,
- priv->categories_menu);
-
- gtk_option_menu_set_menu (GTK_OPTION_MENU (priv->categories_option_menu), priv->categories_menu);
-
- gtk_signal_connect (GTK_OBJECT (priv->categories_menu), "deactivate",
- GTK_SIGNAL_FUNC (e_tasks_on_filter_selected),
- tasks);
-}
-
-
-static gint
-e_tasks_add_menu_item (gpointer key,
- gpointer value,
- gpointer data)
-{
- GtkWidget *menuitem;
-
- menuitem = gtk_menu_item_new_with_label ((char*) key);
- gtk_widget_show (menuitem);
- gtk_menu_append (GTK_MENU (data), menuitem);
-
- return FALSE;
-}
-
-static void
-display_view(GalViewCollection *collection,
- GalView *view,
- gpointer data)
-{
- ETasks *tasks = data;
- if (GAL_IS_VIEW_ETABLE(view)) {
- e_table_set_state_object (e_table_scrolled_get_table (E_TABLE_SCROLLED (E_CALENDAR_TABLE (tasks->priv->tasks_view)->etable)), GAL_VIEW_ETABLE (view)->state);
- }
-}
-
-void
-e_tasks_setup_menus (ETasks *tasks,
- BonoboUIComponent *uic)
-{
- GalViewCollection *collection;
- GalViewMenus *views;
- GalViewFactory *factory;
- ETableSpecification *spec;
- char *dir;
-
- collection = gal_view_collection_new();
-
- dir = gnome_util_prepend_user_home ("/evolution/views/tasks/");
- gal_view_collection_set_storage_directories (collection,
- EVOLUTION_DATADIR "/evolution/views/tasks/",
- dir);
- g_free (dir);
-
- spec = e_table_specification_new ();
- e_table_specification_load_from_string (spec, e_calendar_table_get_spec());
-
- factory = gal_view_factory_etable_new (spec);
- gal_view_collection_add_factory (collection, factory);
- gtk_object_sink (GTK_OBJECT (factory));
-
- gal_view_collection_load (collection);
-
- views = gal_view_menus_new (collection);
- gal_view_menus_apply (views, uic, NULL); /* This function probably needs to sink the views object. */
- gtk_signal_connect (GTK_OBJECT (collection), "display_view",
- display_view, tasks);
- /* gtk_object_sink(GTK_OBJECT(views)); */
-
- gtk_object_sink (GTK_OBJECT (collection));
-}
-
-
-/* This updates all the preference settings for all the ETasks widgets in use.
- */
-void
-e_tasks_update_all_config_settings (void)
-{
- ETasks *tasks;
- ETasksPrivate *priv;
- GList *elem;
-
- for (elem = all_tasks; elem; elem = elem->next) {
- tasks = E_TASKS (elem->data);
- priv = tasks->priv;
- calendar_config_configure_e_calendar_table (E_CALENDAR_TABLE (priv->tasks_view));
- }
-}
diff --git a/calendar/gui/e-tasks.h b/calendar/gui/e-tasks.h
deleted file mode 100644
index ed6fd8199f..0000000000
--- a/calendar/gui/e-tasks.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-tasks.h
- *
- * Copyright (C) 2001 Helix Code, Inc.
- * Copyright (C) 2001 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Authors: Federico Mena Quintero <federico@ximian.com>
- * Damon Chaplin <damon@ximian.com>
- */
-
-#ifndef _E_TASKS_H_
-#define _E_TASKS_H_
-
-#include <gtk/gtktable.h>
-#include <cal-client/cal-client.h>
-
-#define E_TYPE_TASKS (e_tasks_get_type ())
-#define E_TASKS(obj) (GTK_CHECK_CAST ((obj), E_TYPE_TASKS, ETasks))
-#define E_TASKS_CLASS(klass) (GTK_CHECK_CAST_CLASS ((klass), E_TYPE_TASKS, \
- ETasksClass))
-#define E_IS_TASKS(obj) (GTK_CHECK_TYPE ((obj), E_TYPE_TASKS))
-#define E_IS_TASKS_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), E_TYPE_TASKS))
-
-typedef struct _ETasks ETasks;
-typedef struct _ETasksClass ETasksClass;
-typedef struct _ETasksPrivate ETasksPrivate;
-
-struct _ETasks {
- GtkTable table;
-
- /* Private data */
- ETasksPrivate *priv;
-};
-
-struct _ETasksClass {
- GtkTableClass parent_class;
-
- /* Notification signals */
- void (* selection_changed) (ETasks *tasks, int n_selected);
-};
-
-
-GtkType e_tasks_get_type (void);
-GtkWidget *e_tasks_construct (ETasks *tasks);
-
-GtkWidget *e_tasks_new (void);
-
-gboolean e_tasks_open (ETasks *tasks,
- char *file);
-
-CalClient *e_tasks_get_cal_client (ETasks *tasks);
-
-void e_tasks_new_task (ETasks *tasks);
-void e_tasks_delete_selected (ETasks *tasks);
-
-void e_tasks_setup_menus (ETasks *tasks,
- BonoboUIComponent *uic);
-
-
-/* This updates all the preference settings for all the ETasks widgets in use.
- */
-void e_tasks_update_all_config_settings (void);
-
-#endif /* _E_TASKS_H_ */
diff --git a/calendar/gui/e-week-view-event-item.c b/calendar/gui/e-week-view-event-item.c
deleted file mode 100644
index da17673518..0000000000
--- a/calendar/gui/e-week-view-event-item.c
+++ /dev/null
@@ -1,816 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 1999, Helix Code, Inc.
- * Copyright 2001, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * EWeekViewEventItem - displays the background, times and icons for an event
- * in the week/month views. A separate EText canvas item is used to display &
- * edit the text.
- */
-
-#include <config.h>
-
-#include "e-week-view-event-item.h"
-
-#include <gtk/gtksignal.h>
-#include <gal/e-text/e-text.h>
-
-static void e_week_view_event_item_class_init (EWeekViewEventItemClass *class);
-static void e_week_view_event_item_init (EWeekViewEventItem *wveitem);
-
-static void e_week_view_event_item_set_arg (GtkObject *o,
- GtkArg *arg,
- guint arg_id);
-static void e_week_view_event_item_update (GnomeCanvasItem *item,
- double *affine,
- ArtSVP *clip_path,
- int flags);
-static void e_week_view_event_item_draw (GnomeCanvasItem *item,
- GdkDrawable *drawable,
- int x,
- int y,
- int width,
- int height);
-static void e_week_view_draw_time (EWeekView *week_view,
- GdkDrawable *drawable,
- gint time_x,
- gint time_y,
- gint hour,
- gint minute);
-static void e_week_view_event_item_draw_icons (EWeekViewEventItem *wveitem,
- GdkDrawable *drawable,
- gint icon_x,
- gint icon_y,
- gint x2,
- gboolean right_align);
-static void e_week_view_event_item_draw_triangle (EWeekViewEventItem *wveitem,
- GdkDrawable *drawable,
- gint x,
- gint y,
- gint w,
- gint h);
-static double e_week_view_event_item_point (GnomeCanvasItem *item,
- double x,
- double y,
- int cx,
- int cy,
- GnomeCanvasItem **actual_item);
-static gint e_week_view_event_item_event (GnomeCanvasItem *item,
- GdkEvent *event);
-static gboolean e_week_view_event_item_button_press (EWeekViewEventItem *wveitem,
- GdkEvent *event);
-static gboolean e_week_view_event_item_button_release (EWeekViewEventItem *wveitem,
- GdkEvent *event);
-static EWeekViewPosition e_week_view_event_item_get_position (EWeekViewEventItem *wveitem,
- gdouble x,
- gdouble y);
-
-
-static GnomeCanvasItemClass *parent_class;
-
-/* The arguments we take */
-enum {
- ARG_0,
- ARG_EVENT_NUM,
- ARG_SPAN_NUM
-};
-
-
-GtkType
-e_week_view_event_item_get_type (void)
-{
- static GtkType e_week_view_event_item_type = 0;
-
- if (!e_week_view_event_item_type) {
- GtkTypeInfo e_week_view_event_item_info = {
- "EWeekViewEventItem",
- sizeof (EWeekViewEventItem),
- sizeof (EWeekViewEventItemClass),
- (GtkClassInitFunc) e_week_view_event_item_class_init,
- (GtkObjectInitFunc) e_week_view_event_item_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- e_week_view_event_item_type = gtk_type_unique (gnome_canvas_item_get_type (), &e_week_view_event_item_info);
- }
-
- return e_week_view_event_item_type;
-}
-
-
-static void
-e_week_view_event_item_class_init (EWeekViewEventItemClass *class)
-{
- GtkObjectClass *object_class;
- GnomeCanvasItemClass *item_class;
-
- parent_class = gtk_type_class (gnome_canvas_item_get_type());
-
- object_class = (GtkObjectClass *) class;
- item_class = (GnomeCanvasItemClass *) class;
-
- gtk_object_add_arg_type ("EWeekViewEventItem::event_num",
- GTK_TYPE_INT, GTK_ARG_WRITABLE,
- ARG_EVENT_NUM);
- gtk_object_add_arg_type ("EWeekViewEventItem::span_num",
- GTK_TYPE_INT, GTK_ARG_WRITABLE,
- ARG_SPAN_NUM);
-
- object_class->set_arg = e_week_view_event_item_set_arg;
-
- /* GnomeCanvasItem method overrides */
- item_class->update = e_week_view_event_item_update;
- item_class->draw = e_week_view_event_item_draw;
- item_class->point = e_week_view_event_item_point;
- item_class->event = e_week_view_event_item_event;
-}
-
-
-static void
-e_week_view_event_item_init (EWeekViewEventItem *wveitem)
-{
- wveitem->event_num = -1;
- wveitem->span_num = -1;
-}
-
-
-static void
-e_week_view_event_item_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- GnomeCanvasItem *item;
- EWeekViewEventItem *wveitem;
- gboolean needs_update = FALSE;
-
- item = GNOME_CANVAS_ITEM (o);
- wveitem = E_WEEK_VIEW_EVENT_ITEM (o);
-
- switch (arg_id){
- case ARG_EVENT_NUM:
- wveitem->event_num = GTK_VALUE_INT (*arg);
- needs_update = TRUE;
- break;
- case ARG_SPAN_NUM:
- wveitem->span_num = GTK_VALUE_INT (*arg);
- needs_update = TRUE;
- break;
- }
-
- if (needs_update)
- gnome_canvas_item_request_update (item);
-}
-
-
-static void
-e_week_view_event_item_update (GnomeCanvasItem *item,
- double *affine,
- ArtSVP *clip_path,
- int flags)
-{
- EWeekViewEventItem *wveitem;
- EWeekView *week_view;
- gint span_x, span_y, span_w;
-
-#if 0
- g_print ("In e_week_view_event_item_update\n");
-#endif
-
- wveitem = E_WEEK_VIEW_EVENT_ITEM (item);
- week_view = E_WEEK_VIEW (GTK_WIDGET (item->canvas)->parent);
- g_return_if_fail (E_IS_WEEK_VIEW (week_view));
-
- if (GNOME_CANVAS_ITEM_CLASS (parent_class)->update)
- (* GNOME_CANVAS_ITEM_CLASS (parent_class)->update) (item, affine, clip_path, flags);
-
- item->x1 = 0;
- item->y1 = 0;
- item->x2 = 0;
- item->y2 = 0;
-
- if (wveitem->event_num != -1 && wveitem->span_num != -1) {
- if (e_week_view_get_span_position (week_view,
- wveitem->event_num,
- wveitem->span_num,
- &span_x, &span_y,
- &span_w)) {
-#if 0
- g_print (" Event:%i Span:%i %i,%i W:%i\n",
- wveitem->event_num, wveitem->span_num,
- span_x, span_y, span_w);
-#endif
- item->x1 = span_x;
- item->y1 = span_y;
- item->x2 = span_x + span_w - 1;
- item->y2 = span_y + week_view->row_height - 1;
- }
- }
-}
-
-
-/*
- * DRAWING ROUTINES - functions to paint the canvas item.
- */
-
-static void
-e_week_view_event_item_draw (GnomeCanvasItem *canvas_item,
- GdkDrawable *drawable,
- int x,
- int y,
- int width,
- int height)
-{
- EWeekViewEventItem *wveitem;
- EWeekView *week_view;
- EWeekViewEvent *event;
- EWeekViewEventSpan *span;
- GtkStyle *style;
- GdkGC *fg_gc, *gc;
- gint x1, y1, x2, y2, time_x, time_y;
- gint icon_x, icon_y, time_width, min_end_time_x, max_icon_x;
- gint rect_x, rect_w, rect_x2;
- gboolean one_day_event, editing_span = FALSE;
- gint start_hour, start_minute, end_hour, end_minute;
- gboolean draw_start, draw_end;
- gboolean draw_start_triangle = FALSE, draw_end_triangle = FALSE;
- GdkRectangle clip_rect;
-
-#if 0
- g_print ("In e_week_view_event_item_draw %i,%i %ix%i\n",
- x, y, width, height);
-#endif
-
- wveitem = E_WEEK_VIEW_EVENT_ITEM (canvas_item);
- week_view = E_WEEK_VIEW (GTK_WIDGET (canvas_item->canvas)->parent);
- g_return_if_fail (E_IS_WEEK_VIEW (week_view));
-
- if (wveitem->event_num == -1 || wveitem->span_num == -1)
- return;
-
- event = &g_array_index (week_view->events, EWeekViewEvent,
- wveitem->event_num);
- span = &g_array_index (week_view->spans, EWeekViewEventSpan,
- event->spans_index + wveitem->span_num);
-
- style = GTK_WIDGET (week_view)->style;
- fg_gc = style->fg_gc[GTK_STATE_NORMAL];
- gc = week_view->main_gc;
-
- x1 = canvas_item->x1 - x;
- y1 = canvas_item->y1 - y;
- x2 = canvas_item->x2 - x;
- y2 = canvas_item->y2 - y;
-
- if (x1 == x2 || y1 == y2)
- return;
-
- icon_x = 0;
- icon_y = y1 + E_WEEK_VIEW_EVENT_BORDER_HEIGHT + E_WEEK_VIEW_ICON_Y_PAD;
-
- /* Get the start & end times in 24-hour format. */
- start_hour = event->start_minute / 60;
- start_minute = event->start_minute % 60;
- end_hour = event->end_minute / 60;
- end_minute = event->end_minute % 60;
-
- time_y = y1 + E_WEEK_VIEW_EVENT_BORDER_HEIGHT
- + E_WEEK_VIEW_EVENT_TEXT_Y_PAD;
-
- time_width = e_week_view_get_time_string_width (week_view);
-
- one_day_event = e_week_view_is_one_day_event (week_view,
- wveitem->event_num);
- if (one_day_event) {
- time_x = x1 + E_WEEK_VIEW_EVENT_L_PAD;
-
- /* Draw the start and end times, as required. */
- switch (week_view->time_format) {
- case E_WEEK_VIEW_TIME_BOTH_SMALL_MIN:
- case E_WEEK_VIEW_TIME_BOTH:
- draw_start = TRUE;
- draw_end = TRUE;
- break;
-
- case E_WEEK_VIEW_TIME_START_SMALL_MIN:
- case E_WEEK_VIEW_TIME_START:
- draw_start = TRUE;
- draw_end = FALSE;
- break;
-
- case E_WEEK_VIEW_TIME_NONE:
- draw_start = FALSE;
- draw_end = FALSE;
- break;
- default:
- g_assert_not_reached();
- draw_start = FALSE;
- draw_end = FALSE;
- break;
- }
-
- if (draw_start) {
- e_week_view_draw_time (week_view, drawable,
- time_x, time_y,
- start_hour, start_minute);
- time_x += time_width;
- }
-
- if (draw_end) {
- time_x += E_WEEK_VIEW_EVENT_TIME_SPACING;
- e_week_view_draw_time (week_view, drawable,
- time_x, time_y,
- end_hour, end_minute);
- time_x += time_width;
- }
-
- icon_x = time_x;
- if (draw_start)
- icon_x += E_WEEK_VIEW_EVENT_TIME_X_PAD;
-
- /* Draw the icons. */
- e_week_view_event_item_draw_icons (wveitem, drawable,
- icon_x, icon_y,
- x2, FALSE);
-
- } else {
- rect_x = x1 + E_WEEK_VIEW_EVENT_L_PAD;
- rect_w = x2 - x1 - E_WEEK_VIEW_EVENT_L_PAD
- - E_WEEK_VIEW_EVENT_R_PAD + 1;
-
- /* Draw the triangles at the start & end, if needed.
- They also use the first few pixels at the edge of the
- event so we update rect_x & rect_w so we don't draw over
- them. */
- if (event->start < week_view->day_starts[span->start_day]) {
- draw_start_triangle = TRUE;
- rect_x += 2;
- rect_w -= 2;
- }
-
- if (event->end > week_view->day_starts[span->start_day
- + span->num_days]) {
- draw_end_triangle = TRUE;
- rect_w -= 2;
- }
-
- gdk_gc_set_foreground (gc, &week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND]);
- gdk_draw_rectangle (drawable, gc, TRUE,
- rect_x, y1 + 1, rect_w, y2 - y1 - 1);
-
- gdk_gc_set_foreground (gc, &week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BORDER]);
- rect_x2 = rect_x + rect_w - 1;
- gdk_draw_line (drawable, gc, rect_x, y1, rect_x2, y1);
- gdk_draw_line (drawable, gc, rect_x, y2, rect_x2, y2);
-
- if (draw_start_triangle) {
- e_week_view_event_item_draw_triangle (wveitem, drawable, x1 + E_WEEK_VIEW_EVENT_L_PAD + 2, y1, -3, y2 - y1 + 1);
- } else {
- gdk_draw_line (drawable, gc, rect_x, y1, rect_x, y2);
- }
-
- if (draw_end_triangle) {
- e_week_view_event_item_draw_triangle (wveitem, drawable, x2 - E_WEEK_VIEW_EVENT_R_PAD - 2, y1, 3, y2 - y1 + 1);
- } else {
- gdk_draw_line (drawable, gc, rect_x2, y1, rect_x2, y2);
- }
-
- if (span->text_item && E_TEXT (span->text_item)->editing)
- editing_span = TRUE;
-
- /* Draw the start & end times, if they are not on day
- boundaries. The start time would always be shown if it was
- needed, though it may be clipped as the window shrinks.
- The end time is only displayed if there is enough room.
- We calculate the minimum position for the end time, which
- depends on whether the start time is displayed. If the end
- time doesn't fit, then we don't draw it. */
- min_end_time_x = x1 + E_WEEK_VIEW_EVENT_L_PAD
- + E_WEEK_VIEW_EVENT_BORDER_WIDTH
- + E_WEEK_VIEW_EVENT_EDGE_X_PAD;
- if (!editing_span
- && event->start > week_view->day_starts[span->start_day]) {
- time_x = x1 + E_WEEK_VIEW_EVENT_L_PAD
- + E_WEEK_VIEW_EVENT_BORDER_WIDTH
- + E_WEEK_VIEW_EVENT_EDGE_X_PAD;
-
- clip_rect.x = x1;
- clip_rect.y = y1;
- clip_rect.width = x2 - x1 - E_WEEK_VIEW_EVENT_R_PAD
- - E_WEEK_VIEW_EVENT_BORDER_WIDTH + 1;
- clip_rect.height = y2 - y1 + 1;
- gdk_gc_set_clip_rectangle (gc, &clip_rect);
-
- gdk_gc_set_foreground (gc, &week_view->colors[E_WEEK_VIEW_COLOR_EVENT_TEXT]);
-
- e_week_view_draw_time (week_view, drawable,
- time_x, time_y,
- start_hour, start_minute);
-
- gdk_gc_set_clip_rectangle (gc, NULL);
-
- /* We don't want the end time to be drawn over the
- start time, so we increase the minimum position. */
- min_end_time_x += time_width
- + E_WEEK_VIEW_EVENT_TIME_X_PAD;
- }
-
- max_icon_x = x2 + 1 - E_WEEK_VIEW_EVENT_R_PAD
- - E_WEEK_VIEW_EVENT_BORDER_WIDTH
- - E_WEEK_VIEW_EVENT_EDGE_X_PAD;
-
- if (!editing_span
- && event->end < week_view->day_starts[span->start_day
- + span->num_days]) {
- /* Calculate where the end time should be displayed. */
- time_x = x2 + 1 - E_WEEK_VIEW_EVENT_R_PAD
- - E_WEEK_VIEW_EVENT_BORDER_WIDTH
- - E_WEEK_VIEW_EVENT_EDGE_X_PAD
- - time_width;
-
- /* Draw the end time, if the position is greater than
- the minimum calculated above. */
- if (time_x >= min_end_time_x) {
- e_week_view_draw_time (week_view, drawable,
- time_x, time_y,
- end_hour, end_minute);
- max_icon_x -= time_width
- + E_WEEK_VIEW_EVENT_TIME_X_PAD;
- }
- }
-
- /* Draw the icons. */
- if (span->text_item &&
- week_view->editing_event_num != wveitem->event_num
- && week_view->editing_span_num != wveitem->span_num) {
- icon_x = span->text_item->x1 - x;
- e_week_view_event_item_draw_icons (wveitem, drawable,
- icon_x, icon_y,
- max_icon_x, TRUE);
- }
- }
-}
-
-
-static void
-e_week_view_draw_time (EWeekView *week_view,
- GdkDrawable *drawable,
- gint time_x,
- gint time_y,
- gint hour,
- gint minute)
-{
- GtkStyle *style;
- GdkGC *gc;
- GdkFont *font, *small_font;
- gint hour_to_display, suffix_width;
- gint time_y_normal_font, time_y_small_font;
- gchar buffer[128], *suffix;
-
- style = GTK_WIDGET (week_view)->style;
- font = style->font;
- small_font = week_view->small_font;
- gc = week_view->main_gc;
-
-
- time_y_normal_font = time_y_small_font = time_y + font->ascent;
- if (small_font)
- time_y_small_font = time_y + small_font->ascent;
-
- e_week_view_convert_time_to_display (week_view, hour, &hour_to_display,
- &suffix, &suffix_width);
-
- if (week_view->use_small_font && week_view->small_font) {
- g_snprintf (buffer, sizeof (buffer), "%2i:%02i",
- hour_to_display, minute);
-
- /* Draw the hour. */
- if (hour_to_display < 10)
- gdk_draw_text (drawable, font, gc,
- time_x + week_view->digit_width,
- time_y_normal_font, buffer + 1, 1);
- else
- gdk_draw_text (drawable, font, gc,
- time_x, time_y_normal_font, buffer, 2);
-
- time_x += week_view->digit_width * 2;
-
- /* Draw the start minute, in the small font. */
- gdk_draw_text (drawable, week_view->small_font, gc,
- time_x, time_y_small_font, buffer + 3, 2);
-
- time_x += week_view->small_digit_width * 2;
-
- /* Draw the 'am'/'pm' suffix, if 12-hour format. */
- if (!week_view->use_24_hour_format) {
- gdk_draw_string (drawable, font, gc,
- time_x, time_y_normal_font, suffix);
- }
- } else {
- /* Draw the start time in one go. */
- g_snprintf (buffer, sizeof (buffer), "%2i:%02i%s",
- hour_to_display, minute, suffix);
- if (hour_to_display < 10)
- gdk_draw_string (drawable, font, gc,
- time_x + week_view->digit_width,
- time_y_normal_font, buffer + 1);
- else
- gdk_draw_string (drawable, font, gc,
- time_x, time_y_normal_font,
- buffer);
-
- }
-}
-
-
-static void
-e_week_view_event_item_draw_icons (EWeekViewEventItem *wveitem,
- GdkDrawable *drawable,
- gint icon_x,
- gint icon_y,
- gint x2,
- gboolean right_align)
-{
- EWeekView *week_view;
- EWeekViewEvent *event;
- EWeekViewEventSpan *span;
- CalComponent *comp;
- GdkGC *gc;
- gint num_icons = 0, icon_x_inc;
- gboolean draw_reminder_icon = FALSE, draw_recurrence_icon = FALSE;
-
- week_view = E_WEEK_VIEW (GTK_WIDGET (GNOME_CANVAS_ITEM (wveitem)->canvas)->parent);
-
- event = &g_array_index (week_view->events, EWeekViewEvent,
- wveitem->event_num);
- span = &g_array_index (week_view->spans, EWeekViewEventSpan,
- event->spans_index + wveitem->span_num);
- comp = event->comp;
-
- gc = week_view->main_gc;
-
- if (cal_component_has_alarms (comp)) {
- draw_reminder_icon = TRUE;
- num_icons++;
- }
-
- if (cal_component_has_recurrences (comp)) {
- draw_recurrence_icon = TRUE;
- num_icons++;
- }
-
- icon_x_inc = E_WEEK_VIEW_ICON_WIDTH + E_WEEK_VIEW_ICON_X_PAD;
-
- if (right_align)
- icon_x -= icon_x_inc * num_icons;
-
- if (draw_reminder_icon && icon_x + E_WEEK_VIEW_ICON_WIDTH <= x2) {
- gdk_gc_set_clip_origin (gc, icon_x, icon_y);
- gdk_gc_set_clip_mask (gc, week_view->reminder_mask);
- gdk_draw_pixmap (drawable, gc,
- week_view->reminder_icon,
- 0, 0, icon_x, icon_y,
- E_WEEK_VIEW_ICON_WIDTH,
- E_WEEK_VIEW_ICON_HEIGHT);
- icon_x += icon_x_inc;
- }
-
- if (draw_recurrence_icon && icon_x + E_WEEK_VIEW_ICON_WIDTH <= x2) {
- gdk_gc_set_clip_origin (gc, icon_x, icon_y);
- gdk_gc_set_clip_mask (gc, week_view->recurrence_mask);
- gdk_draw_pixmap (drawable, gc,
- week_view->recurrence_icon,
- 0, 0, icon_x, icon_y,
- E_WEEK_VIEW_ICON_WIDTH,
- E_WEEK_VIEW_ICON_HEIGHT);
- icon_x += icon_x_inc;
- }
-
- gdk_gc_set_clip_mask (gc, NULL);
-}
-
-
-/* This draws a little triangle to indicate that an event extends past
- the days visible on screen. */
-static void
-e_week_view_event_item_draw_triangle (EWeekViewEventItem *wveitem,
- GdkDrawable *drawable,
- gint x,
- gint y,
- gint w,
- gint h)
-{
- EWeekView *week_view;
- GdkGC *gc;
- GdkPoint points[3];
- gint c1, c2;
-
- week_view = E_WEEK_VIEW (GTK_WIDGET (GNOME_CANVAS_ITEM (wveitem)->canvas)->parent);
-
- gc = week_view->main_gc;
-
- points[0].x = x;
- points[0].y = y;
- points[1].x = x + w;
- points[1].y = y + (h / 2) - 1;
- points[2].x = x;
- points[2].y = y + h - 1;
-
- gdk_gc_set_foreground (gc, &week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND]);
- gdk_draw_polygon (drawable, gc, TRUE, points, 3);
-
- gdk_gc_set_foreground (gc, &week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BORDER]);
-
- /* If the height is odd we can use the same central point for both
- lines. If it is even we use different end-points. */
- c1 = c2 = y + (h / 2);
- if (h % 2 == 0)
- c1--;
-
- gdk_draw_line (drawable, gc, x, y, x + w, c1);
- gdk_draw_line (drawable, gc, x, y + h - 1, x + w, c2);
-}
-
-
-/* This is supposed to return the nearest item the the point and the distance.
- Since we are the only item we just return ourself and 0 for the distance.
- This is needed so that we get button/motion events. */
-static double
-e_week_view_event_item_point (GnomeCanvasItem *item, double x, double y,
- int cx, int cy,
- GnomeCanvasItem **actual_item)
-{
- *actual_item = item;
- return 0.0;
-}
-
-
-static gint
-e_week_view_event_item_event (GnomeCanvasItem *item, GdkEvent *event)
-{
- EWeekViewEventItem *wveitem;
-
- wveitem = E_WEEK_VIEW_EVENT_ITEM (item);
-
- switch (event->type) {
- case GDK_BUTTON_PRESS:
- return e_week_view_event_item_button_press (wveitem, event);
- case GDK_BUTTON_RELEASE:
- return e_week_view_event_item_button_release (wveitem, event);
- case GDK_MOTION_NOTIFY:
- break;
- default:
- break;
- }
-
- return FALSE;
-}
-
-
-static gboolean
-e_week_view_event_item_button_press (EWeekViewEventItem *wveitem,
- GdkEvent *bevent)
-{
- EWeekView *week_view;
- EWeekViewPosition pos;
- EWeekViewEvent *event;
- EWeekViewEventSpan *span;
- GnomeCanvasItem *item;
-
- item = GNOME_CANVAS_ITEM (wveitem);
-
- week_view = E_WEEK_VIEW (GTK_WIDGET (item->canvas)->parent);
- g_return_val_if_fail (E_IS_WEEK_VIEW (week_view), FALSE);
-
- event = &g_array_index (week_view->events, EWeekViewEvent,
- wveitem->event_num);
- span = &g_array_index (week_view->spans, EWeekViewEventSpan,
- event->spans_index + wveitem->span_num);
-
-#if 0
- g_print ("In e_week_view_event_item_button_press\n");
-#endif
-
- pos = e_week_view_event_item_get_position (wveitem, bevent->button.x,
- bevent->button.y);
- if (pos == E_WEEK_VIEW_POS_NONE)
- return FALSE;
-
- week_view->pressed_event_num = wveitem->event_num;
- week_view->pressed_span_num = wveitem->span_num;
-
- if (bevent->button.button == 1) {
- /* Ignore clicks on the event while editing. */
- if (E_TEXT (span->text_item)->editing)
- return FALSE;
-
- /* Remember the item clicked and the mouse position,
- so we can start a drag if the mouse moves. */
- week_view->drag_event_x = bevent->button.x;
- week_view->drag_event_y = bevent->button.y;
-
- /* FIXME: Remember the day offset from the start of the event.
- */
- } else if (bevent->button.button == 3) {
- if (!GTK_WIDGET_HAS_FOCUS (week_view))
- gtk_widget_grab_focus (GTK_WIDGET (week_view));
- e_week_view_show_popup_menu (week_view,
- (GdkEventButton*) bevent,
- wveitem->event_num);
- gtk_signal_emit_stop_by_name (GTK_OBJECT (item->canvas),
- "button_press_event");
- }
-
- return TRUE;
-}
-
-
-static gboolean
-e_week_view_event_item_button_release (EWeekViewEventItem *wveitem,
- GdkEvent *event)
-{
- EWeekView *week_view;
- GnomeCanvasItem *item;
-
- item = GNOME_CANVAS_ITEM (wveitem);
-
- week_view = E_WEEK_VIEW (GTK_WIDGET (item->canvas)->parent);
- g_return_val_if_fail (E_IS_WEEK_VIEW (week_view), FALSE);
-
-#if 0
- g_print ("In e_week_view_event_item_button_release\n");
-#endif
-
- if (week_view->pressed_event_num != -1
- && week_view->pressed_event_num == wveitem->event_num
- && week_view->pressed_span_num == wveitem->span_num) {
- e_week_view_start_editing_event (week_view,
- wveitem->event_num,
- wveitem->span_num,
- NULL);
- week_view->pressed_event_num = -1;
- return TRUE;
- }
-
- week_view->pressed_event_num = -1;
-
- return FALSE;
-}
-
-
-static EWeekViewPosition
-e_week_view_event_item_get_position (EWeekViewEventItem *wveitem,
- gdouble x,
- gdouble y)
-{
- EWeekView *week_view;
- GnomeCanvasItem *item;
-
- item = GNOME_CANVAS_ITEM (wveitem);
-
- week_view = E_WEEK_VIEW (GTK_WIDGET (item->canvas)->parent);
- g_return_val_if_fail (E_IS_WEEK_VIEW (week_view), E_WEEK_VIEW_POS_NONE);
-
-#if 0
- g_print ("In e_week_view_event_item_get_position item: %g,%g %g,%g point: %g,%g\n", item->x1, item->y1, item->x2, item->y2, x, y);
-#endif
-
- if (x < item->x1 + E_WEEK_VIEW_EVENT_L_PAD
- || x >= item->x2 - E_WEEK_VIEW_EVENT_R_PAD)
- return E_WEEK_VIEW_POS_NONE;
-
- /* Support left/right edge for long events only. */
- if (!e_week_view_is_one_day_event (week_view, wveitem->event_num)) {
- if (x < item->x1 + E_WEEK_VIEW_EVENT_L_PAD
- + E_WEEK_VIEW_EVENT_BORDER_WIDTH
- + E_WEEK_VIEW_EVENT_EDGE_X_PAD)
- return E_WEEK_VIEW_POS_LEFT_EDGE;
-
- if (x >= item->x2 + 1 - E_WEEK_VIEW_EVENT_R_PAD
- - E_WEEK_VIEW_EVENT_BORDER_WIDTH
- - E_WEEK_VIEW_EVENT_EDGE_X_PAD)
- return E_WEEK_VIEW_POS_RIGHT_EDGE;
- }
-
- return E_WEEK_VIEW_POS_EVENT;
-}
diff --git a/calendar/gui/e-week-view-event-item.h b/calendar/gui/e-week-view-event-item.h
deleted file mode 100644
index ff2b9b2c9f..0000000000
--- a/calendar/gui/e-week-view-event-item.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 1999, Helix Code, Inc.
- * Copyright 2001, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-#ifndef _E_WEEK_VIEW_EVENT_ITEM_H_
-#define _E_WEEK_VIEW_EVENT_ITEM_H_
-
-#include "e-week-view.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/*
- * EWeekViewEventItem - displays the background, times and icons for an event
- * in the week/month views. A separate EText canvas item is used to display &
- * edit the text.
- */
-
-#define E_WEEK_VIEW_EVENT_ITEM(obj) (GTK_CHECK_CAST((obj), \
- e_week_view_event_item_get_type (), EWeekViewEventItem))
-#define E_WEEK_VIEW_EVENT_ITEM_CLASS(k) (GTK_CHECK_CLASS_CAST ((k),\
- e_week_view_event_item_get_type ()))
-#define E_IS_WEEK_VIEW_EVENT_ITEM(o) (GTK_CHECK_TYPE((o), \
- e_week_view_event_item_get_type ()))
-
-typedef struct {
- GnomeCanvasItem canvas_item;
-
- /* The event index in the EWeekView events array. */
- gint event_num;
-
- /* The span index within the event. */
- gint span_num;
-} EWeekViewEventItem;
-
-typedef struct {
- GnomeCanvasItemClass parent_class;
-
-} EWeekViewEventItemClass;
-
-
-GtkType e_week_view_event_item_get_type (void);
-
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_WEEK_VIEW_EVENT_ITEM_H_ */
diff --git a/calendar/gui/e-week-view-main-item.c b/calendar/gui/e-week-view-main-item.c
deleted file mode 100644
index 34508e63a3..0000000000
--- a/calendar/gui/e-week-view-main-item.c
+++ /dev/null
@@ -1,389 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@helixcode.com>
- *
- * Copyright 1999, Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * EWeekViewMainItem - displays the background grid and dates for the Week and
- * Month calendar views.
- */
-
-#include <config.h>
-
-#include <glib.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include "e-week-view-main-item.h"
-
-static void e_week_view_main_item_class_init (EWeekViewMainItemClass *class);
-static void e_week_view_main_item_init (EWeekViewMainItem *wvmitem);
-
-static void e_week_view_main_item_set_arg (GtkObject *o,
- GtkArg *arg,
- guint arg_id);
-static void e_week_view_main_item_update (GnomeCanvasItem *item,
- double *affine,
- ArtSVP *clip_path,
- int flags);
-static void e_week_view_main_item_draw (GnomeCanvasItem *item,
- GdkDrawable *drawable,
- int x,
- int y,
- int width,
- int height);
-static void e_week_view_main_item_draw_day (EWeekViewMainItem *wvmitem,
- gint day,
- GDate *date,
- GdkDrawable *drawable,
- gint x,
- gint y,
- gint width,
- gint height);
-static double e_week_view_main_item_point (GnomeCanvasItem *item,
- double x,
- double y,
- int cx,
- int cy,
- GnomeCanvasItem **actual_item);
-
-
-static GnomeCanvasItemClass *parent_class;
-
-/* The arguments we take */
-enum {
- ARG_0,
- ARG_WEEK_VIEW
-};
-
-
-GtkType
-e_week_view_main_item_get_type (void)
-{
- static GtkType e_week_view_main_item_type = 0;
-
- if (!e_week_view_main_item_type) {
- GtkTypeInfo e_week_view_main_item_info = {
- "EWeekViewMainItem",
- sizeof (EWeekViewMainItem),
- sizeof (EWeekViewMainItemClass),
- (GtkClassInitFunc) e_week_view_main_item_class_init,
- (GtkObjectInitFunc) e_week_view_main_item_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- e_week_view_main_item_type = gtk_type_unique (gnome_canvas_item_get_type (), &e_week_view_main_item_info);
- }
-
- return e_week_view_main_item_type;
-}
-
-
-static void
-e_week_view_main_item_class_init (EWeekViewMainItemClass *class)
-{
- GtkObjectClass *object_class;
- GnomeCanvasItemClass *item_class;
-
- parent_class = gtk_type_class (gnome_canvas_item_get_type());
-
- object_class = (GtkObjectClass *) class;
- item_class = (GnomeCanvasItemClass *) class;
-
- gtk_object_add_arg_type ("EWeekViewMainItem::week_view",
- GTK_TYPE_POINTER, GTK_ARG_WRITABLE,
- ARG_WEEK_VIEW);
-
- object_class->set_arg = e_week_view_main_item_set_arg;
-
- /* GnomeCanvasItem method overrides */
- item_class->update = e_week_view_main_item_update;
- item_class->draw = e_week_view_main_item_draw;
- item_class->point = e_week_view_main_item_point;
-}
-
-
-static void
-e_week_view_main_item_init (EWeekViewMainItem *wvmitem)
-{
- wvmitem->week_view = NULL;
-}
-
-
-static void
-e_week_view_main_item_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- GnomeCanvasItem *item;
- EWeekViewMainItem *wvmitem;
-
- item = GNOME_CANVAS_ITEM (o);
- wvmitem = E_WEEK_VIEW_MAIN_ITEM (o);
-
- switch (arg_id){
- case ARG_WEEK_VIEW:
- wvmitem->week_view = GTK_VALUE_POINTER (*arg);
- break;
- }
-}
-
-
-static void
-e_week_view_main_item_update (GnomeCanvasItem *item,
- double *affine,
- ArtSVP *clip_path,
- int flags)
-{
- if (GNOME_CANVAS_ITEM_CLASS (parent_class)->update)
- (* GNOME_CANVAS_ITEM_CLASS (parent_class)->update) (item, affine, clip_path, flags);
-
- /* The item covers the entire canvas area. */
- item->x1 = 0;
- item->y1 = 0;
- item->x2 = INT_MAX;
- item->y2 = INT_MAX;
-}
-
-
-/*
- * DRAWING ROUTINES - functions to paint the canvas item.
- */
-
-static void
-e_week_view_main_item_draw (GnomeCanvasItem *canvas_item,
- GdkDrawable *drawable,
- int x,
- int y,
- int width,
- int height)
-{
- EWeekViewMainItem *wvmitem;
- EWeekView *week_view;
- GDate date;
- gint num_days, day, day_x, day_y, day_w, day_h;
-
-#if 0
- g_print ("In e_week_view_main_item_draw %i,%i %ix%i\n",
- x, y, width, height);
-#endif
-
- wvmitem = E_WEEK_VIEW_MAIN_ITEM (canvas_item);
- week_view = wvmitem->week_view;
- g_return_if_fail (week_view != NULL);
-
- /* Step through each of the days. */
- date = week_view->first_day_shown;
-
- /* If no date has been set, we just use Dec 1999/January 2000. */
- if (!g_date_valid (&date))
- g_date_set_dmy (&date, 27, 12, 1999);
-
- num_days = week_view->multi_week_view ? week_view->weeks_shown * 7 : 7;
- for (day = 0; day < num_days; day++) {
- e_week_view_get_day_position (week_view, day,
- &day_x, &day_y,
- &day_w, &day_h);
- /* Skip any days which are outside the area. */
- if (day_x < x + width && day_x + day_w >= x
- && day_y < y + height && day_y + day_h >= y) {
- e_week_view_main_item_draw_day (wvmitem, day, &date,
- drawable,
- day_x - x, day_y - y,
- day_w, day_h);
- }
- g_date_add_days (&date, 1);
- }
-}
-
-
-static void
-e_week_view_main_item_draw_day (EWeekViewMainItem *wvmitem,
- gint day,
- GDate *date,
- GdkDrawable *drawable,
- gint x,
- gint y,
- gint width,
- gint height)
-{
- EWeekView *week_view;
- GtkStyle *style;
- GdkGC *gc;
- GdkFont *font;
- gint right_edge, bottom_edge, date_width, date_x, line_y;
- gboolean show_day_name, show_month_name, selected;
- gchar buffer[128], *format_string;
- gint month, day_of_month, max_width;
- GdkColor *bg_color;
-
-#if 0
- g_print ("Drawing Day:%i at %i,%i\n", day, x, y);
-#endif
- week_view = wvmitem->week_view;
- style = GTK_WIDGET (week_view)->style;
- font = style->font;
- gc = week_view->main_gc;
-
- g_return_if_fail (gc != NULL);
-
- month = g_date_month (date);
- day_of_month = g_date_day (date);
- line_y = y + E_WEEK_VIEW_DATE_T_PAD + font->ascent
- + font->descent + E_WEEK_VIEW_DATE_LINE_T_PAD;
-
- /* Draw the background of the day. In the month view odd months are
- one color and even months another, so you can easily see when each
- month starts (defaults are white for odd - January, March, ... and
- light gray for even). In the week view the background is always the
- same color, the color used for the odd months in the month view. */
- if (week_view->multi_week_view && (month % 2 == 0))
- bg_color = &week_view->colors[E_WEEK_VIEW_COLOR_EVEN_MONTHS];
- else
- bg_color = &week_view->colors[E_WEEK_VIEW_COLOR_ODD_MONTHS];
-
- gdk_gc_set_foreground (gc, bg_color);
- gdk_draw_rectangle (drawable, gc, TRUE, x, y, width, height);
-
- /* Draw the lines on the right and bottom of the cell. The canvas is
- sized so that the lines on the right & bottom edges will be off the
- edge of the canvas, so we don't have to worry about them. */
- right_edge = x + width - 1;
- bottom_edge = y + height - 1;
-
- gdk_gc_set_foreground (gc, &week_view->colors[E_WEEK_VIEW_COLOR_GRID]);
- gdk_draw_line (drawable, gc,
- right_edge, y, right_edge, bottom_edge);
- gdk_draw_line (drawable, gc,
- x, bottom_edge, right_edge, bottom_edge);
-
- /* If the day is selected, draw the blue background. */
- selected = TRUE;
- if (!GTK_WIDGET_HAS_FOCUS (week_view)
- || week_view->selection_start_day == -1
- || week_view->selection_start_day > day
- || week_view->selection_end_day < day)
- selected = FALSE;
- if (selected) {
- gdk_gc_set_foreground (gc, &week_view->colors[E_WEEK_VIEW_COLOR_SELECTED]);
- if (week_view->multi_week_view) {
- gdk_draw_rectangle (drawable, gc, TRUE,
- x + 2, y + 1,
- width - 5,
- E_WEEK_VIEW_DATE_T_PAD - 1
- + font->ascent + font->descent);
- } else {
- gdk_draw_rectangle (drawable, gc, TRUE,
- x + 2, y + 1,
- width - 5, line_y - y);
- }
- }
-
- /* Display the date in the top of the cell.
- In the week view, display the long format "10 January" in all cells,
- or abbreviate it to "10 Jan" or "10" if that doesn't fit.
- In the month view, only use the long format for the first cell and
- the 1st of each month, otherwise use "10". */
- show_day_name = FALSE;
- show_month_name = FALSE;
- if (!week_view->multi_week_view) {
- show_day_name = TRUE;
- show_month_name = TRUE;
- } else if (day == 0 || day_of_month == 1) {
- show_month_name = TRUE;
- }
-
- /* Now find the longest form of the date that will fit. */
- max_width = width - 4;
- format_string = NULL;
- if (show_day_name) {
- if (week_view->max_day_width + week_view->digit_width * 2
- + week_view->space_width * 2
- + week_view->month_widths[month - 1] < max_width)
- /* strftime format %A = full weekday name, %d = day of
- month, %B = full month name. You can change the
- order but don't change the specifiers or add
- anything. */
- format_string = _("%A %d %B");
- else if (week_view->max_abbr_day_width
- + week_view->digit_width * 2
- + week_view->space_width * 2
- + week_view->abbr_month_widths[month - 1] < max_width)
- /* strftime format %a = abbreviated weekday name,
- %d = day of month, %b = abbreviated month name.
- You can change the order but don't change the
- specifiers or add anything. */
- format_string = _("%a %d %b");
- }
- if (!format_string && show_month_name) {
- if (week_view->digit_width * 2 + week_view->space_width
- + week_view->month_widths[month - 1] < max_width)
- /* strftime format %d = day of month, %B = full
- month name. You can change the order but don't
- change the specifiers or add anything. */
- format_string = _("%d %B");
- else if (week_view->digit_width * 2 + week_view->space_width
- + week_view->abbr_month_widths[month - 1] < max_width)
- /* strftime format %d = day of month, %b = abbreviated
- month name. You can change the order but don't
- change the specifiers or add anything. */
- format_string = _("%d %b");
- }
-
- g_date_strftime (buffer, sizeof (buffer),
- format_string ? format_string : "%d", date);
- date_width = gdk_string_width (font, buffer);
- date_x = x + width - date_width - E_WEEK_VIEW_DATE_R_PAD;
- date_x = MAX (date_x, x + 1);
-
- if (selected)
- gdk_gc_set_foreground (gc, &week_view->colors[E_WEEK_VIEW_COLOR_DATES_SELECTED]);
- else
- gdk_gc_set_foreground (gc, &week_view->colors[E_WEEK_VIEW_COLOR_DATES]);
- gdk_draw_string (drawable, font, gc,
- date_x, y + E_WEEK_VIEW_DATE_T_PAD + font->ascent,
- buffer);
-
- /* Draw the line under the date. */
- if (!week_view->multi_week_view) {
- gdk_gc_set_foreground (gc, &week_view->colors[E_WEEK_VIEW_COLOR_GRID]);
- gdk_draw_line (drawable, gc,
- x + E_WEEK_VIEW_DATE_LINE_L_PAD, line_y,
- right_edge, line_y);
- }
-}
-
-
-
-
-/* This is supposed to return the nearest item the the point and the distance.
- Since we are the only item we just return ourself and 0 for the distance.
- This is needed so that we get button/motion events. */
-static double
-e_week_view_main_item_point (GnomeCanvasItem *item, double x, double y,
- int cx, int cy,
- GnomeCanvasItem **actual_item)
-{
- *actual_item = item;
- return 0.0;
-}
-
-
diff --git a/calendar/gui/e-week-view-main-item.h b/calendar/gui/e-week-view-main-item.h
deleted file mode 100644
index 71ebe423dc..0000000000
--- a/calendar/gui/e-week-view-main-item.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 1999, Helix Code, Inc.
- * Copyright 2001, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-#ifndef _E_WEEK_VIEW_MAIN_ITEM_H_
-#define _E_WEEK_VIEW_MAIN_ITEM_H_
-
-#include "e-week-view.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/*
- * EWeekViewMainItem - displays the background grid and dates for the Week and
- * Month calendar views.
- */
-
-#define E_WEEK_VIEW_MAIN_ITEM(obj) (GTK_CHECK_CAST((obj), \
- e_week_view_main_item_get_type (), EWeekViewMainItem))
-#define E_WEEK_VIEW_MAIN_ITEM_CLASS(k) (GTK_CHECK_CLASS_CAST ((k),\
- e_week_view_main_item_get_type ()))
-#define E_IS_WEEK_VIEW_MAIN_ITEM(o) (GTK_CHECK_TYPE((o), \
- e_week_view_main_item_get_type ()))
-
-typedef struct {
- GnomeCanvasItem canvas_item;
-
- /* The parent EWeekView widget. */
- EWeekView *week_view;
-} EWeekViewMainItem;
-
-typedef struct {
- GnomeCanvasItemClass parent_class;
-
-} EWeekViewMainItemClass;
-
-
-GtkType e_week_view_main_item_get_type (void);
-
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_WEEK_VIEW_MAIN_ITEM_H_ */
diff --git a/calendar/gui/e-week-view-titles-item.c b/calendar/gui/e-week-view-titles-item.c
deleted file mode 100644
index 5a2b9c164a..0000000000
--- a/calendar/gui/e-week-view-titles-item.c
+++ /dev/null
@@ -1,311 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@helixcode.com>
- *
- * Copyright 1999, Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * EWeekViewTitlesItem - displays the 'Monday', 'Tuesday' etc. at the top of
- * the Month calendar view.
- */
-
-#include <config.h>
-#include "e-week-view-titles-item.h"
-
-static void e_week_view_titles_item_class_init (EWeekViewTitlesItemClass *class);
-static void e_week_view_titles_item_init (EWeekViewTitlesItem *wvtitem);
-
-static void e_week_view_titles_item_set_arg (GtkObject *o,
- GtkArg *arg,
- guint arg_id);
-static void e_week_view_titles_item_update (GnomeCanvasItem *item,
- double *affine,
- ArtSVP *clip_path,
- int flags);
-static void e_week_view_titles_item_draw (GnomeCanvasItem *item,
- GdkDrawable *drawable,
- int x,
- int y,
- int width,
- int height);
-static double e_week_view_titles_item_point (GnomeCanvasItem *item,
- double x,
- double y,
- int cx,
- int cy,
- GnomeCanvasItem **actual_item);
-
-
-static GnomeCanvasItemClass *parent_class;
-
-/* The arguments we take */
-enum {
- ARG_0,
- ARG_WEEK_VIEW
-};
-
-
-GtkType
-e_week_view_titles_item_get_type (void)
-{
- static GtkType e_week_view_titles_item_type = 0;
-
- if (!e_week_view_titles_item_type) {
- GtkTypeInfo e_week_view_titles_item_info = {
- "EWeekViewTitlesItem",
- sizeof (EWeekViewTitlesItem),
- sizeof (EWeekViewTitlesItemClass),
- (GtkClassInitFunc) e_week_view_titles_item_class_init,
- (GtkObjectInitFunc) e_week_view_titles_item_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- e_week_view_titles_item_type = gtk_type_unique (gnome_canvas_item_get_type (), &e_week_view_titles_item_info);
- }
-
- return e_week_view_titles_item_type;
-}
-
-
-static void
-e_week_view_titles_item_class_init (EWeekViewTitlesItemClass *class)
-{
- GtkObjectClass *object_class;
- GnomeCanvasItemClass *item_class;
-
- parent_class = gtk_type_class (gnome_canvas_item_get_type());
-
- object_class = (GtkObjectClass *) class;
- item_class = (GnomeCanvasItemClass *) class;
-
- gtk_object_add_arg_type ("EWeekViewTitlesItem::week_view",
- GTK_TYPE_POINTER, GTK_ARG_WRITABLE,
- ARG_WEEK_VIEW);
-
- object_class->set_arg = e_week_view_titles_item_set_arg;
-
- /* GnomeCanvasItem method overrides */
- item_class->update = e_week_view_titles_item_update;
- item_class->draw = e_week_view_titles_item_draw;
- item_class->point = e_week_view_titles_item_point;
-}
-
-
-static void
-e_week_view_titles_item_init (EWeekViewTitlesItem *wvtitem)
-{
- wvtitem->week_view = NULL;
-}
-
-
-static void
-e_week_view_titles_item_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- GnomeCanvasItem *item;
- EWeekViewTitlesItem *wvtitem;
-
- item = GNOME_CANVAS_ITEM (o);
- wvtitem = E_WEEK_VIEW_TITLES_ITEM (o);
-
- switch (arg_id){
- case ARG_WEEK_VIEW:
- wvtitem->week_view = GTK_VALUE_POINTER (*arg);
- break;
- }
-}
-
-
-static void
-e_week_view_titles_item_update (GnomeCanvasItem *item,
- double *affine,
- ArtSVP *clip_path,
- int flags)
-{
- if (GNOME_CANVAS_ITEM_CLASS (parent_class)->update)
- (* GNOME_CANVAS_ITEM_CLASS (parent_class)->update) (item, affine, clip_path, flags);
-
- /* The item covers the entire canvas area. */
- item->x1 = 0;
- item->y1 = 0;
- item->x2 = INT_MAX;
- item->y2 = INT_MAX;
-}
-
-
-/*
- * DRAWING ROUTINES - functions to paint the canvas item.
- */
-
-static void
-e_week_view_titles_item_draw (GnomeCanvasItem *canvas_item,
- GdkDrawable *drawable,
- int x,
- int y,
- int width,
- int height)
-{
- EWeekViewTitlesItem *wvtitem;
- EWeekView *week_view;
- GtkStyle *style;
- GdkGC *fg_gc, *bg_gc, *light_gc, *dark_gc;
- GdkFont *font;
- gint canvas_width, canvas_height, col_width, col, date_width, date_x;
- gchar buffer[128], *date_format;
- GDate date;
- GdkRectangle clip_rect;
- gboolean long_format;
- gint weekday;
-
-#if 0
- g_print ("In e_week_view_titles_item_draw %i,%i %ix%i\n",
- x, y, width, height);
-#endif
-
- wvtitem = E_WEEK_VIEW_TITLES_ITEM (canvas_item);
- week_view = wvtitem->week_view;
- g_return_if_fail (week_view != NULL);
-
- style = GTK_WIDGET (week_view)->style;
- font = style->font;
- fg_gc = style->fg_gc[GTK_STATE_NORMAL];
- bg_gc = style->bg_gc[GTK_STATE_NORMAL];
- light_gc = style->light_gc[GTK_STATE_NORMAL];
- dark_gc = style->dark_gc[GTK_STATE_NORMAL];
- canvas_width = GTK_WIDGET (canvas_item->canvas)->allocation.width;
- canvas_height = GTK_WIDGET (canvas_item->canvas)->allocation.height;
-
- /* Draw the shadow around the dates. */
- gdk_draw_line (drawable, light_gc,
- 1 - x, 1 - y,
- canvas_width - 2 - x, 1 - y);
- gdk_draw_line (drawable, light_gc,
- 1 - x, 2 - y,
- 1 - x, canvas_height - 1 - y);
-
- gdk_draw_rectangle (drawable, dark_gc, FALSE,
- 0 - x, 0 - y,
- canvas_width - 1, canvas_height);
-
- /* Determine the format to use. */
- col_width = canvas_width / week_view->columns;
- if (col_width > week_view->max_day_width + 2) {
- date_format = "%A";
- long_format = TRUE;
- } else {
- date_format = "%a";
- long_format = FALSE;
- }
-
- /* Shift right one pixel to account for the shadow around the main
- canvas. */
- x--;
-
- /* Draw the date. Set a clipping rectangle so we don't draw over the
- next day. */
- g_date_clear (&date, 1);
- /* Note that 20th March 2000 is a Monday. We only care about the
- weekday. */
- weekday = week_view->display_start_day;
- g_date_set_dmy (&date, 20 + weekday, 3, 2000);
- for (col = 0; col < week_view->columns; col++) {
- if (weekday == 5 && week_view->compress_weekend) {
- g_date_strftime (buffer, 128, "%a/", &date);
- g_date_add_days (&date, 1);
- g_date_strftime (buffer + strlen (buffer), 100,
- "%a", &date);
- } else {
- g_date_strftime (buffer, 128, date_format, &date);
- }
-
- clip_rect.x = week_view->col_offsets[col] - x;
- clip_rect.y = 2 - y;
- clip_rect.width = week_view->col_widths[col];
- clip_rect.height = canvas_height - 2;
- gdk_gc_set_clip_rectangle (fg_gc, &clip_rect);
-
- if (weekday == 5 && week_view->compress_weekend)
- date_width = week_view->abbr_day_widths[5]
- + week_view->slash_width
- + week_view->abbr_day_widths[6];
- else if (long_format)
- date_width = week_view->day_widths[weekday];
- else
- date_width = week_view->abbr_day_widths[weekday];
-
- date_x = week_view->col_offsets[col]
- + (week_view->col_widths[col] - date_width) / 2;
- date_x = MAX (date_x, week_view->col_offsets[col]);
- gdk_draw_string (drawable, font, fg_gc,
- date_x - x, 3 + font->ascent - y, buffer);
-
- gdk_gc_set_clip_rectangle (fg_gc, NULL);
-
- /* Draw the lines down the left and right of the date cols. */
- if (col != 0) {
- gdk_draw_line (drawable, light_gc,
- week_view->col_offsets[col] - x,
- 4 - y,
- week_view->col_offsets[col] - x,
- canvas_height - 4 - y);
-
- gdk_draw_line (drawable, dark_gc,
- week_view->col_offsets[col] - 1 - x,
- 4 - y,
- week_view->col_offsets[col] - 1 - x,
- canvas_height - 4 - y);
- }
-
- /* Draw the lines between each column. */
- if (col != 0) {
- gdk_draw_line (drawable, style->black_gc,
- week_view->col_offsets[col] - x,
- canvas_height - y,
- week_view->col_offsets[col] - x,
- canvas_height - y);
- }
-
- if (weekday == 5 && week_view->compress_weekend)
- weekday += 2;
- else
- weekday++;
-
- weekday = weekday % 7;
-
- g_date_add_days (&date, 1);
- }
-}
-
-
-/* This is supposed to return the nearest item the the point and the distance.
- Since we are the only item we just return ourself and 0 for the distance.
- This is needed so that we get button/motion events. */
-static double
-e_week_view_titles_item_point (GnomeCanvasItem *item, double x, double y,
- int cx, int cy,
- GnomeCanvasItem **actual_item)
-{
- *actual_item = item;
- return 0.0;
-}
-
-
diff --git a/calendar/gui/e-week-view-titles-item.h b/calendar/gui/e-week-view-titles-item.h
deleted file mode 100644
index fc4d45107d..0000000000
--- a/calendar/gui/e-week-view-titles-item.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 1999, Helix Code, Inc.
- * Copyright 2001, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-#ifndef _E_WEEK_VIEW_TITLES_ITEM_H_
-#define _E_WEEK_VIEW_TITLES_ITEM_H_
-
-#include "e-week-view.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/*
- * EWeekViewTitlesItem - displays the 'Monday', 'Tuesday' etc. at the top of
- * the Month calendar view.
- */
-
-#define E_WEEK_VIEW_TITLES_ITEM(obj) (GTK_CHECK_CAST((obj), \
- e_week_view_titles_item_get_type (), EWeekViewTitlesItem))
-#define E_WEEK_VIEW_TITLES_ITEM_CLASS(k) (GTK_CHECK_CLASS_CAST ((k),\
- e_week_view_titles_item_get_type ()))
-#define E_IS_WEEK_VIEW_TITLES_ITEM(o) (GTK_CHECK_TYPE((o), \
- e_week_view_titles_item_get_type ()))
-
-typedef struct {
- GnomeCanvasItem canvas_item;
-
- /* The parent EWeekView widget. */
- EWeekView *week_view;
-} EWeekViewTitlesItem;
-
-typedef struct {
- GnomeCanvasItemClass parent_class;
-
-} EWeekViewTitlesItemClass;
-
-
-GtkType e_week_view_titles_item_get_type (void);
-
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_WEEK_VIEW_TITLES_ITEM_H_ */
diff --git a/calendar/gui/e-week-view.c b/calendar/gui/e-week-view.c
deleted file mode 100644
index 447fce8b77..0000000000
--- a/calendar/gui/e-week-view.c
+++ /dev/null
@@ -1,3628 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 1999, Helix Code, Inc.
- * Copyright 2001, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * EWeekView - displays the Week & Month views of the calendar.
- */
-
-#include <config.h>
-
-#include "e-week-view.h"
-
-#include <math.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtksignal.h>
-#include <gtk/gtkvscrollbar.h>
-#include <gtk/gtkwindow.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <gdk-pixbuf/gdk-pixbuf.h>
-#include <gdk-pixbuf/gnome-canvas-pixbuf.h>
-#include <gal/e-text/e-text.h>
-#include <gal/widgets/e-popup-menu.h>
-#include <gal/widgets/e-canvas-utils.h>
-#include "dialogs/delete-comp.h"
-#include "comp-util.h"
-#include "cal-util/timeutil.h"
-#include "calendar-commands.h"
-#include "goto.h"
-#include "e-meeting-edit.h"
-#include "e-week-view-event-item.h"
-#include "e-week-view-main-item.h"
-#include "e-week-view-titles-item.h"
-
-/* Images */
-#include "art/bell.xpm"
-#include "art/recur.xpm"
-#include "art/jump.xpm"
-
-#define E_WEEK_VIEW_SMALL_FONT \
- "-adobe-utopia-regular-r-normal-*-*-100-*-*-p-*-iso8859-*"
-#define E_WEEK_VIEW_SMALL_FONT_FALLBACK \
- "-adobe-helvetica-medium-r-normal-*-*-80-*-*-p-*-iso8859-*"
-
-/* We use a 7-bit field to store row numbers in EWeekViewEventSpan, so the
- maximum number or rows we can allow is 127. It is very unlikely to be
- reached anyway. */
-#define E_WEEK_VIEW_MAX_ROWS_PER_CELL 127
-
-#define E_WEEK_VIEW_JUMP_BUTTON_WIDTH 16
-#define E_WEEK_VIEW_JUMP_BUTTON_HEIGHT 8
-
-#define E_WEEK_VIEW_JUMP_BUTTON_X_PAD 3
-#define E_WEEK_VIEW_JUMP_BUTTON_Y_PAD 3
-
-static void e_week_view_class_init (EWeekViewClass *class);
-static void e_week_view_init (EWeekView *week_view);
-static void e_week_view_destroy (GtkObject *object);
-static void e_week_view_realize (GtkWidget *widget);
-static void e_week_view_unrealize (GtkWidget *widget);
-static void e_week_view_style_set (GtkWidget *widget,
- GtkStyle *previous_style);
-static void e_week_view_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation);
-static void e_week_view_recalc_cell_sizes (EWeekView *week_view);
-static gint e_week_view_focus_in (GtkWidget *widget,
- GdkEventFocus *event);
-static gint e_week_view_focus_out (GtkWidget *widget,
- GdkEventFocus *event);
-static gint e_week_view_expose_event (GtkWidget *widget,
- GdkEventExpose *event);
-static void e_week_view_draw (GtkWidget *widget,
- GdkRectangle *area);
-static void e_week_view_draw_shadow (EWeekView *week_view);
-
-static gboolean e_week_view_on_button_press (GtkWidget *widget,
- GdkEventButton *event,
- EWeekView *week_view);
-static gboolean e_week_view_on_button_release (GtkWidget *widget,
- GdkEventButton *event,
- EWeekView *week_view);
-static gboolean e_week_view_on_motion (GtkWidget *widget,
- GdkEventMotion *event,
- EWeekView *week_view);
-static gint e_week_view_convert_position_to_day (EWeekView *week_view,
- gint x,
- gint y);
-static void e_week_view_update_selection (EWeekView *week_view,
- gint day);
-
-static void e_week_view_free_events (EWeekView *week_view);
-static gboolean e_week_view_add_event (CalComponent *comp,
- time_t start,
- time_t end,
- gpointer data);
-static void e_week_view_check_layout (EWeekView *week_view);
-static void e_week_view_layout_events (EWeekView *week_view);
-static void e_week_view_layout_event (EWeekView *week_view,
- EWeekViewEvent *event,
- guint8 *grid,
- GArray *spans);
-static void e_week_view_ensure_events_sorted (EWeekView *week_view);
-static gint e_week_view_event_sort_func (const void *arg1,
- const void *arg2);
-static void e_week_view_reshape_events (EWeekView *week_view);
-static void e_week_view_reshape_event_span (EWeekView *week_view,
- gint event_num,
- gint span_num);
-static gint e_week_view_find_day (EWeekView *week_view,
- time_t time_to_find,
- gboolean include_midnight_in_prev_day);
-static gint e_week_view_find_span_end (EWeekView *week_view,
- gint day);
-static void e_week_view_recalc_day_starts (EWeekView *week_view,
- time_t lower);
-static void e_week_view_on_adjustment_changed (GtkAdjustment *adjustment,
- EWeekView *week_view);
-static void e_week_view_on_editing_started (EWeekView *week_view,
- GnomeCanvasItem *item);
-static void e_week_view_on_editing_stopped (EWeekView *week_view,
- GnomeCanvasItem *item);
-static gboolean e_week_view_find_event_from_item (EWeekView *week_view,
- GnomeCanvasItem *item,
- gint *event_num,
- gint *span_num);
-static gboolean e_week_view_find_event_from_uid (EWeekView *week_view,
- const gchar *uid,
- gint *event_num_return);
-typedef gboolean (* EWeekViewForeachEventCallback) (EWeekView *week_view,
- gint event_num,
- gpointer data);
-
-static void e_week_view_foreach_event_with_uid (EWeekView *week_view,
- const gchar *uid,
- EWeekViewForeachEventCallback callback,
- gpointer data);
-static gboolean e_week_view_on_text_item_event (GnomeCanvasItem *item,
- GdkEvent *event,
- EWeekView *week_view);
-static gboolean e_week_view_on_jump_button_event (GnomeCanvasItem *item,
- GdkEvent *event,
- EWeekView *week_view);
-static gint e_week_view_key_press (GtkWidget *widget, GdkEventKey *event);
-static void e_week_view_on_new_appointment (GtkWidget *widget,
- gpointer data);
-static void e_week_view_on_new_event (GtkWidget *widget,
- gpointer data);
-static void e_week_view_on_goto_today (GtkWidget *widget,
- gpointer data);
-static void e_week_view_on_goto_date (GtkWidget *widget,
- gpointer data);
-static void e_week_view_on_edit_appointment (GtkWidget *widget,
- gpointer data);
-static void e_week_view_on_delete_occurrence (GtkWidget *widget,
- gpointer data);
-static void e_week_view_on_delete_appointment (GtkWidget *widget,
- gpointer data);
-static void e_week_view_on_schedule_meet (GtkWidget *widget,
- gpointer data);
-static void e_week_view_on_unrecur_appointment (GtkWidget *widget,
- gpointer data);
-
-static gboolean e_week_view_update_event_cb (EWeekView *week_view,
- gint event_num,
- gpointer data);
-static gboolean e_week_view_remove_event_cb (EWeekView *week_view,
- gint event_num,
- gpointer data);
-static gboolean e_week_view_recalc_display_start_day (EWeekView *week_view);
-
-static GtkTableClass *parent_class;
-
-
-GtkType
-e_week_view_get_type (void)
-{
- static GtkType e_week_view_type = 0;
-
- if (!e_week_view_type){
- GtkTypeInfo e_week_view_info = {
- "EWeekView",
- sizeof (EWeekView),
- sizeof (EWeekViewClass),
- (GtkClassInitFunc) e_week_view_class_init,
- (GtkObjectInitFunc) e_week_view_init,
- NULL, /* reserved 1 */
- NULL, /* reserved 2 */
- (GtkClassInitFunc) NULL
- };
-
- parent_class = gtk_type_class (GTK_TYPE_TABLE);
- e_week_view_type = gtk_type_unique (GTK_TYPE_TABLE,
- &e_week_view_info);
- }
-
- return e_week_view_type;
-}
-
-
-static void
-e_week_view_class_init (EWeekViewClass *class)
-{
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
-
- object_class = (GtkObjectClass *) class;
- widget_class = (GtkWidgetClass *) class;
-
- /* Method override */
- object_class->destroy = e_week_view_destroy;
-
- widget_class->realize = e_week_view_realize;
- widget_class->unrealize = e_week_view_unrealize;
- widget_class->style_set = e_week_view_style_set;
- widget_class->size_allocate = e_week_view_size_allocate;
- widget_class->focus_in_event = e_week_view_focus_in;
- widget_class->focus_out_event = e_week_view_focus_out;
- widget_class->key_press_event = e_week_view_key_press;
- widget_class->expose_event = e_week_view_expose_event;
- widget_class->draw = e_week_view_draw;
-}
-
-
-static void
-e_week_view_init (EWeekView *week_view)
-{
- GnomeCanvasGroup *canvas_group;
- GtkObject *adjustment;
- GdkPixbuf *pixbuf;
- gint i;
-
- GTK_WIDGET_SET_FLAGS (week_view, GTK_CAN_FOCUS);
-
- week_view->calendar = NULL;
- week_view->client = NULL;
- week_view->sexp = g_strdup ("#t"); /* match all by default */
- week_view->query = NULL;
-
- week_view->events = g_array_new (FALSE, FALSE,
- sizeof (EWeekViewEvent));
- week_view->events_sorted = TRUE;
- week_view->events_need_layout = FALSE;
- week_view->events_need_reshape = FALSE;
-
- week_view->spans = NULL;
-
- week_view->multi_week_view = FALSE;
- week_view->weeks_shown = 6;
- week_view->rows = 6;
- week_view->columns = 2;
- week_view->compress_weekend = TRUE;
- week_view->show_event_end_times = TRUE;
- week_view->week_start_day = 0; /* Monday. */
- week_view->display_start_day = 0; /* Monday. */
-
- g_date_clear (&week_view->base_date, 1);
- g_date_clear (&week_view->first_day_shown, 1);
-
- week_view->row_height = 10;
- week_view->rows_per_cell = 1;
-
- week_view->selection_start_day = -1;
- week_view->selection_drag_pos = E_WEEK_VIEW_DRAG_NONE;
-
- week_view->pressed_event_num = -1;
- week_view->editing_event_num = -1;
-
- week_view->main_gc = NULL;
-
- /* Create the small font. */
- week_view->use_small_font = TRUE;
- week_view->small_font = gdk_font_load (E_WEEK_VIEW_SMALL_FONT);
- if (!week_view->small_font)
- week_view->small_font = gdk_font_load (E_WEEK_VIEW_SMALL_FONT_FALLBACK);
- if (!week_view->small_font)
- g_warning ("Couldn't load font");
-
- /* String to use in 12-hour time format for times in the morning. */
- week_view->am_string = _("am");
-
- /* String to use in 12-hour time format for times in the afternoon. */
- week_view->pm_string = _("pm");
-
-
- /*
- * Titles Canvas. Note that we don't show it is only shown in the
- * Month view.
- */
- week_view->titles_canvas = e_canvas_new ();
- gtk_table_attach (GTK_TABLE (week_view), week_view->titles_canvas,
- 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
-
- canvas_group = GNOME_CANVAS_GROUP (GNOME_CANVAS (week_view->titles_canvas)->root);
-
- week_view->titles_canvas_item =
- gnome_canvas_item_new (canvas_group,
- e_week_view_titles_item_get_type (),
- "EWeekViewTitlesItem::week_view", week_view,
- NULL);
-
- /*
- * Main Canvas
- */
- week_view->main_canvas = e_canvas_new ();
- gtk_table_attach (GTK_TABLE (week_view), week_view->main_canvas,
- 1, 2, 1, 2,
- GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 1, 1);
- gtk_widget_show (week_view->main_canvas);
-
- canvas_group = GNOME_CANVAS_GROUP (GNOME_CANVAS (week_view->main_canvas)->root);
-
- week_view->main_canvas_item =
- gnome_canvas_item_new (canvas_group,
- e_week_view_main_item_get_type (),
- "EWeekViewMainItem::week_view", week_view,
- NULL);
-
- gtk_signal_connect_after (GTK_OBJECT (week_view->main_canvas),
- "button_press_event",
- GTK_SIGNAL_FUNC (e_week_view_on_button_press),
- week_view);
- gtk_signal_connect_after (GTK_OBJECT (week_view->main_canvas),
- "button_release_event",
- GTK_SIGNAL_FUNC (e_week_view_on_button_release),
- week_view);
- gtk_signal_connect_after (GTK_OBJECT (week_view->main_canvas),
- "motion_notify_event",
- GTK_SIGNAL_FUNC (e_week_view_on_motion),
- week_view);
-
- /* Create the buttons to jump to each days. */
- pixbuf = gdk_pixbuf_new_from_xpm_data ((const char**) jump_xpm);
-
- for (i = 0; i < E_WEEK_VIEW_MAX_WEEKS * 7; i++) {
- week_view->jump_buttons[i] = gnome_canvas_item_new
- (canvas_group,
- gnome_canvas_pixbuf_get_type (),
- "GnomeCanvasPixbuf::pixbuf", pixbuf,
- NULL);
-
- gtk_signal_connect (GTK_OBJECT (week_view->jump_buttons[i]),
- "event",
- GTK_SIGNAL_FUNC (e_week_view_on_jump_button_event),
- week_view);
- }
- gdk_pixbuf_unref (pixbuf);
-
- /*
- * Scrollbar.
- */
- adjustment = gtk_adjustment_new (0, -52, 52, 1, 1, 1);
- gtk_signal_connect (adjustment, "value_changed",
- GTK_SIGNAL_FUNC (e_week_view_on_adjustment_changed),
- week_view);
-
- week_view->vscrollbar = gtk_vscrollbar_new (GTK_ADJUSTMENT (adjustment));
- gtk_table_attach (GTK_TABLE (week_view), week_view->vscrollbar,
- 2, 3, 1, 2, 0, GTK_EXPAND | GTK_FILL, 0, 0);
- gtk_widget_show (week_view->vscrollbar);
-
- /* Create the cursors. */
- week_view->normal_cursor = gdk_cursor_new (GDK_LEFT_PTR);
- week_view->move_cursor = gdk_cursor_new (GDK_FLEUR);
- week_view->resize_width_cursor = gdk_cursor_new (GDK_SB_H_DOUBLE_ARROW);
- week_view->last_cursor_set = NULL;
-}
-
-
-/**
- * e_week_view_new:
- * @Returns: a new #EWeekView.
- *
- * Creates a new #EWeekView.
- **/
-GtkWidget *
-e_week_view_new (void)
-{
- GtkWidget *week_view;
-
- week_view = GTK_WIDGET (gtk_type_new (e_week_view_get_type ()));
-
- return week_view;
-}
-
-
-static void
-e_week_view_destroy (GtkObject *object)
-{
- EWeekView *week_view;
-
- week_view = E_WEEK_VIEW (object);
-
- e_week_view_free_events (week_view);
-
- if (week_view->client) {
- gtk_signal_disconnect_by_data (GTK_OBJECT (week_view->client), week_view);
- gtk_object_unref (GTK_OBJECT (week_view->client));
- week_view->client = NULL;
- }
-
- if (week_view->sexp) {
- g_free (week_view->sexp);
- week_view->sexp = NULL;
- }
-
- if (week_view->query) {
- gtk_signal_disconnect_by_data (GTK_OBJECT (week_view->query), week_view);
- gtk_object_unref (GTK_OBJECT (week_view->query));
- week_view->query = NULL;
- }
-
- if (week_view->small_font)
- gdk_font_unref (week_view->small_font);
-
- gdk_cursor_destroy (week_view->normal_cursor);
- gdk_cursor_destroy (week_view->move_cursor);
- gdk_cursor_destroy (week_view->resize_width_cursor);
-
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
-}
-
-
-static void
-e_week_view_realize (GtkWidget *widget)
-{
- EWeekView *week_view;
- GdkColormap *colormap;
- gboolean success[E_WEEK_VIEW_COLOR_LAST];
- gint nfailed;
-
- if (GTK_WIDGET_CLASS (parent_class)->realize)
- (*GTK_WIDGET_CLASS (parent_class)->realize)(widget);
-
- week_view = E_WEEK_VIEW (widget);
- week_view->main_gc = gdk_gc_new (widget->window);
-
- colormap = gtk_widget_get_colormap (widget);
-
- /* Allocate the colors. */
- week_view->colors[E_WEEK_VIEW_COLOR_EVEN_MONTHS].red = 0xeded;
- week_view->colors[E_WEEK_VIEW_COLOR_EVEN_MONTHS].green = 0xeded;
- week_view->colors[E_WEEK_VIEW_COLOR_EVEN_MONTHS].blue = 0xeded;
-
- week_view->colors[E_WEEK_VIEW_COLOR_ODD_MONTHS].red = 65535;
- week_view->colors[E_WEEK_VIEW_COLOR_ODD_MONTHS].green = 65535;
- week_view->colors[E_WEEK_VIEW_COLOR_ODD_MONTHS].blue = 65535;
-
- week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND].red = 0xd6d6;
- week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND].green = 0xd6d6;
- week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND].blue = 0xd6d6;
-
- week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BORDER].red = 0;
- week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BORDER].green = 0;
- week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BORDER].blue = 0;
-
- week_view->colors[E_WEEK_VIEW_COLOR_EVENT_TEXT].red = 0;
- week_view->colors[E_WEEK_VIEW_COLOR_EVENT_TEXT].green = 0;
- week_view->colors[E_WEEK_VIEW_COLOR_EVENT_TEXT].blue = 0;
-
- week_view->colors[E_WEEK_VIEW_COLOR_GRID].red = 0 * 257;
- week_view->colors[E_WEEK_VIEW_COLOR_GRID].green = 0 * 257;
- week_view->colors[E_WEEK_VIEW_COLOR_GRID].blue = 0 * 257;
-
- week_view->colors[E_WEEK_VIEW_COLOR_SELECTED].red = 0 * 257;
- week_view->colors[E_WEEK_VIEW_COLOR_SELECTED].green = 0 * 257;
- week_view->colors[E_WEEK_VIEW_COLOR_SELECTED].blue = 156 * 257;
-
- week_view->colors[E_WEEK_VIEW_COLOR_DATES].red = 0 * 257;
- week_view->colors[E_WEEK_VIEW_COLOR_DATES].green = 0 * 257;
- week_view->colors[E_WEEK_VIEW_COLOR_DATES].blue = 0 * 257;
-
- week_view->colors[E_WEEK_VIEW_COLOR_DATES_SELECTED].red = 65535;
- week_view->colors[E_WEEK_VIEW_COLOR_DATES_SELECTED].green = 65535;
- week_view->colors[E_WEEK_VIEW_COLOR_DATES_SELECTED].blue = 65535;
-
- nfailed = gdk_colormap_alloc_colors (colormap, week_view->colors,
- E_WEEK_VIEW_COLOR_LAST, FALSE,
- TRUE, success);
- if (nfailed)
- g_warning ("Failed to allocate all colors");
-
-
- /* Create the pixmaps. */
- week_view->reminder_icon = gdk_pixmap_colormap_create_from_xpm_d (NULL, colormap, &week_view->reminder_mask, NULL, bell_xpm);
- week_view->recurrence_icon = gdk_pixmap_colormap_create_from_xpm_d (NULL, colormap, &week_view->recurrence_mask, NULL, recur_xpm);
-}
-
-
-static void
-e_week_view_unrealize (GtkWidget *widget)
-{
- EWeekView *week_view;
- GdkColormap *colormap;
- gint i;
-
- week_view = E_WEEK_VIEW (widget);
-
- gdk_gc_unref (week_view->main_gc);
- week_view->main_gc = NULL;
-
- colormap = gtk_widget_get_colormap (widget);
- for (i = 0; i < E_WEEK_VIEW_COLOR_LAST; i++)
- gdk_colors_free (colormap, &week_view->colors[i].pixel, 1, 0);
-
- gdk_pixmap_unref (week_view->reminder_icon);
- week_view->reminder_icon = NULL;
- gdk_pixmap_unref (week_view->recurrence_icon);
- week_view->recurrence_icon = NULL;
-
- if (GTK_WIDGET_CLASS (parent_class)->unrealize)
- (*GTK_WIDGET_CLASS (parent_class)->unrealize)(widget);
-}
-
-
-static void
-e_week_view_style_set (GtkWidget *widget,
- GtkStyle *previous_style)
-{
- EWeekView *week_view;
- EWeekViewEventSpan *span;
- GdkFont *font;
- gint day, day_width, max_day_width, max_abbr_day_width;
- gint month, month_width, max_month_width, max_abbr_month_width;
- gint span_num;
- GDate date;
- gchar buffer[128];
-
- if (GTK_WIDGET_CLASS (parent_class)->style_set)
- (*GTK_WIDGET_CLASS (parent_class)->style_set)(widget, previous_style);
-
- week_view = E_WEEK_VIEW (widget);
- font = widget->style->font;
-
- /* Recalculate the height of each row based on the font size. */
- week_view->row_height = font->ascent + font->descent + E_WEEK_VIEW_EVENT_BORDER_HEIGHT * 2 + E_WEEK_VIEW_EVENT_TEXT_Y_PAD * 2;
- week_view->row_height = MAX (week_view->row_height, E_WEEK_VIEW_ICON_HEIGHT + E_WEEK_VIEW_ICON_Y_PAD + E_WEEK_VIEW_EVENT_BORDER_HEIGHT * 2);
-
- /* Set the height of the top canvas. */
- gtk_widget_set_usize (week_view->titles_canvas, -1,
- font->ascent + font->descent + 5);
-
- /* Save the sizes of various strings in the font, so we can quickly
- decide which date formats to use. */
- g_date_clear (&date, 1);
- g_date_set_dmy (&date, 27, 3, 2000); /* Must be a Monday. */
-
- max_day_width = 0;
- max_abbr_day_width = 0;
- for (day = 0; day < 7; day++) {
- g_date_strftime (buffer, 128, "%A", &date);
- day_width = gdk_string_width (font, buffer);
- week_view->day_widths[day] = day_width;
- max_day_width = MAX (max_day_width, day_width);
-
- g_date_strftime (buffer, 128, "%a", &date);
- day_width = gdk_string_width (font, buffer);
- week_view->abbr_day_widths[day] = day_width;
- max_abbr_day_width = MAX (max_abbr_day_width, day_width);
-
- g_date_add_days (&date, 1);
- }
-
- max_month_width = 0;
- max_abbr_month_width = 0;
- for (month = 0; month < 12; month++) {
- g_date_set_month (&date, month + 1);
-
- g_date_strftime (buffer, 128, "%B", &date);
- month_width = gdk_string_width (font, buffer);
- week_view->month_widths[month] = month_width;
- max_month_width = MAX (max_month_width, month_width);
-
- g_date_strftime (buffer, 128, "%b", &date);
- month_width = gdk_string_width (font, buffer);
- week_view->abbr_month_widths[month] = month_width;
- max_abbr_month_width = MAX (max_abbr_month_width, month_width);
- }
-
- week_view->space_width = gdk_string_width (font, " ");
- week_view->colon_width = gdk_string_width (font, ":");
- week_view->slash_width = gdk_string_width (font, "/");
- week_view->digit_width = gdk_string_width (font, "5");
- if (week_view->small_font)
- week_view->small_digit_width = gdk_string_width (week_view->small_font, "5");
- week_view->max_day_width = max_day_width;
- week_view->max_abbr_day_width = max_abbr_day_width;
- week_view->max_month_width = max_month_width;
- week_view->max_abbr_month_width = max_abbr_month_width;
-
- week_view->am_string_width = gdk_string_width (font,
- week_view->am_string);
- week_view->pm_string_width = gdk_string_width (font,
- week_view->pm_string);
-
- /* Set the font of all the EText items. */
- if (week_view->spans) {
- for (span_num = 0; span_num < week_view->spans->len;
- span_num++) {
- span = &g_array_index (week_view->spans,
- EWeekViewEventSpan, span_num);
- if (span->text_item)
- gnome_canvas_item_set (span->text_item,
- "font_gdk", font,
- NULL);
- }
- }
-}
-
-
-/* This recalculates the sizes of each column. */
-static void
-e_week_view_size_allocate (GtkWidget *widget, GtkAllocation *allocation)
-{
- EWeekView *week_view;
- gdouble old_x2, old_y2, new_x2, new_y2;
-
- week_view = E_WEEK_VIEW (widget);
-
- (*GTK_WIDGET_CLASS (parent_class)->size_allocate) (widget, allocation);
-
- e_week_view_recalc_cell_sizes (week_view);
-
- /* Set the scroll region of the top canvas to its allocated size. */
- gnome_canvas_get_scroll_region (GNOME_CANVAS (week_view->titles_canvas),
- NULL, NULL, &old_x2, &old_y2);
- new_x2 = week_view->titles_canvas->allocation.width - 1;
- new_y2 = week_view->titles_canvas->allocation.height - 1;
- if (old_x2 != new_x2 || old_y2 != new_y2)
- gnome_canvas_set_scroll_region (GNOME_CANVAS (week_view->titles_canvas),
- 0, 0, new_x2, new_y2);
-
-
- /* Set the scroll region of the main canvas to its allocated width,
- but with the height depending on the number of rows needed. */
- gnome_canvas_get_scroll_region (GNOME_CANVAS (week_view->main_canvas),
- NULL, NULL, &old_x2, &old_y2);
- new_x2 = week_view->main_canvas->allocation.width - 1;
- new_y2 = week_view->main_canvas->allocation.height - 1;
- if (old_x2 != new_x2 || old_y2 != new_y2)
- gnome_canvas_set_scroll_region (GNOME_CANVAS (week_view->main_canvas),
- 0, 0, new_x2, new_y2);
-
- /* Flag that we need to reshape the events. */
- if (old_x2 != new_x2 || old_y2 != new_y2) {
- week_view->events_need_reshape = TRUE;
- e_week_view_check_layout (week_view);
- }
-}
-
-
-static void
-e_week_view_recalc_cell_sizes (EWeekView *week_view)
-{
- gfloat canvas_width, canvas_height, offset;
- gint row, col;
- GtkWidget *widget;
- GdkFont *font;
- gint width, height, time_width;
-
- if (week_view->multi_week_view) {
- week_view->rows = week_view->weeks_shown * 2;
- week_view->columns = week_view->compress_weekend ? 6 : 7;
- } else {
- week_view->rows = 6;
- week_view->columns = 2;
- }
-
- /* Calculate the column sizes, using floating point so that pixels
- get divided evenly. Note that we use one more element than the
- number of columns, to make it easy to get the column widths.
- We also add one to the width so that the right border of the last
- column is off the edge of the displayed area. */
- canvas_width = week_view->main_canvas->allocation.width + 1;
- canvas_width /= week_view->columns;
- offset = 0;
- for (col = 0; col <= week_view->columns; col++) {
- week_view->col_offsets[col] = floor (offset + 0.5);
- offset += canvas_width;
- }
-
- /* Calculate the cell widths based on the offsets. */
- for (col = 0; col < week_view->columns; col++) {
- week_view->col_widths[col] = week_view->col_offsets[col + 1]
- - week_view->col_offsets[col];
- }
-
- /* Now do the same for the row heights. */
- canvas_height = week_view->main_canvas->allocation.height + 1;
- canvas_height /= week_view->rows;
- offset = 0;
- for (row = 0; row <= week_view->rows; row++) {
- week_view->row_offsets[row] = floor (offset + 0.5);
- offset += canvas_height;
- }
-
- /* Calculate the cell heights based on the offsets. */
- for (row = 0; row < week_view->rows; row++) {
- week_view->row_heights[row] = week_view->row_offsets[row + 1]
- - week_view->row_offsets[row];
- }
-
-
- /* If the font hasn't been set yet just return. */
- widget = GTK_WIDGET (week_view);
- if (!widget->style || ! widget->style->font)
- return;
-
- font = widget->style->font;
-
- /* Calculate the number of rows of events in each cell, for the large
- cells and the compressed weekend cells. */
- if (week_view->multi_week_view) {
- week_view->events_y_offset = E_WEEK_VIEW_DATE_T_PAD
- + font->ascent + font->descent
- + E_WEEK_VIEW_DATE_B_PAD;
- } else {
- week_view->events_y_offset = E_WEEK_VIEW_DATE_T_PAD
- + font->ascent + font->descent
- + E_WEEK_VIEW_DATE_LINE_T_PAD + 1
- + E_WEEK_VIEW_DATE_LINE_B_PAD;
- }
-
- height = week_view->row_heights[0];
- week_view->rows_per_cell = (height * 2 - week_view->events_y_offset)
- / (week_view->row_height + E_WEEK_VIEW_EVENT_Y_SPACING);
- week_view->rows_per_cell = MIN (week_view->rows_per_cell,
- E_WEEK_VIEW_MAX_ROWS_PER_CELL);
-
- week_view->rows_per_compressed_cell =
- (height - week_view->events_y_offset)
- / (week_view->row_height + E_WEEK_VIEW_EVENT_Y_SPACING);
- week_view->rows_per_compressed_cell = MIN (week_view->rows_per_compressed_cell,
- E_WEEK_VIEW_MAX_ROWS_PER_CELL);
-
- /* Determine which time format to use, based on the width of the cells.
- We only allow the time to take up about half of the width. */
- width = week_view->col_widths[0];
-
- time_width = e_week_view_get_time_string_width (week_view);
-
- week_view->time_format = E_WEEK_VIEW_TIME_NONE;
- if (week_view->use_small_font && week_view->small_font) {
- if (week_view->show_event_end_times
- && width / 2 > time_width * 2 + E_WEEK_VIEW_EVENT_TIME_SPACING)
- week_view->time_format = E_WEEK_VIEW_TIME_BOTH_SMALL_MIN;
- else if (width / 2 > time_width)
- week_view->time_format = E_WEEK_VIEW_TIME_START_SMALL_MIN;
- } else {
- if (week_view->show_event_end_times
- && width / 2 > time_width * 2 + E_WEEK_VIEW_EVENT_TIME_SPACING)
- week_view->time_format = E_WEEK_VIEW_TIME_BOTH;
- else if (width / 2 > time_width)
- week_view->time_format = E_WEEK_VIEW_TIME_START;
- }
-}
-
-
-static gint
-e_week_view_focus_in (GtkWidget *widget, GdkEventFocus *event)
-{
- EWeekView *week_view;
-
- g_return_val_if_fail (widget != NULL, FALSE);
- g_return_val_if_fail (E_IS_WEEK_VIEW (widget), FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
- week_view = E_WEEK_VIEW (widget);
-
- GTK_WIDGET_SET_FLAGS (widget, GTK_HAS_FOCUS);
-
- gtk_widget_queue_draw (week_view->main_canvas);
-
- return FALSE;
-}
-
-
-static gint
-e_week_view_focus_out (GtkWidget *widget, GdkEventFocus *event)
-{
- EWeekView *week_view;
-
- g_return_val_if_fail (widget != NULL, FALSE);
- g_return_val_if_fail (E_IS_WEEK_VIEW (widget), FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
- week_view = E_WEEK_VIEW (widget);
-
- GTK_WIDGET_UNSET_FLAGS (widget, GTK_HAS_FOCUS);
-
- gtk_widget_queue_draw (week_view->main_canvas);
-
- return FALSE;
-}
-
-
-/* This draws a shadow around the top display and main display. */
-static gint
-e_week_view_expose_event (GtkWidget *widget,
- GdkEventExpose *event)
-{
- EWeekView *week_view;
-
- week_view = E_WEEK_VIEW (widget);
-
- e_week_view_draw_shadow (week_view);
-
- if (GTK_WIDGET_CLASS (parent_class)->expose_event)
- (*GTK_WIDGET_CLASS (parent_class)->expose_event)(widget, event);
-
- return FALSE;
-}
-
-
-static void
-e_week_view_draw (GtkWidget *widget,
- GdkRectangle *area)
-{
- EWeekView *week_view;
-
- week_view = E_WEEK_VIEW (widget);
-
- e_week_view_draw_shadow (week_view);
-
- if (GTK_WIDGET_CLASS (parent_class)->draw)
- (*GTK_WIDGET_CLASS (parent_class)->draw)(widget, area);
-}
-
-
-static void
-e_week_view_draw_shadow (EWeekView *week_view)
-{
- gint x1, y1, x2, y2;
- GtkStyle *style;
- GdkGC *light_gc, *dark_gc;
- GdkWindow *window;
-
- /* Draw the shadow around the graphical displays. */
- x1 = week_view->main_canvas->allocation.x - 1;
- y1 = week_view->main_canvas->allocation.y - 1;
- x2 = x1 + week_view->main_canvas->allocation.width + 2;
- y2 = y1 + week_view->main_canvas->allocation.height + 2;
-
- style = GTK_WIDGET (week_view)->style;
- dark_gc = style->dark_gc[GTK_STATE_NORMAL];
- light_gc = style->light_gc[GTK_STATE_NORMAL];
-
- window = GTK_WIDGET (week_view)->window;
- gdk_draw_line (window, dark_gc, x1, y1, x1, y2);
- gdk_draw_line (window, dark_gc, x1, y1, x2, y1);
- gdk_draw_line (window, light_gc, x2, y1, x2, y2);
- gdk_draw_line (window, light_gc, x1, y2, x2, y2);
-}
-
-
-void
-e_week_view_set_calendar (EWeekView *week_view,
- GnomeCalendar *calendar)
-{
- g_return_if_fail (E_IS_WEEK_VIEW (week_view));
-
- week_view->calendar = calendar;
-}
-
-
-/* Callback used when a component is updated in the live query */
-static void
-query_obj_updated_cb (CalQuery *query, const char *uid,
- gboolean query_in_progress, int n_scanned, int total,
- gpointer data)
-{
- EWeekView *week_view;
- EWeekViewEvent *event;
- gint event_num, num_days;
- CalComponent *comp;
- CalClientGetStatus status;
-
- week_view = E_WEEK_VIEW (data);
-
- /* If we don't have a valid date set yet, just return. */
- if (!g_date_valid (&week_view->first_day_shown))
- return;
-
- /* Get the event from the server. */
- status = cal_client_get_object (week_view->client, uid, &comp);
-
- switch (status) {
- case CAL_CLIENT_GET_SUCCESS:
- /* Everything is fine */
- break;
-
- case CAL_CLIENT_GET_SYNTAX_ERROR:
- g_message ("obj_updated_cb(): Syntax error when getting object `%s'", uid);
- return;
-
- case CAL_CLIENT_GET_NOT_FOUND:
- /* The object is no longer in the server, so do nothing */
- return;
- }
-
- /* If the event already exists and the dates didn't change, we can
- update the event fairly easily without changing the events arrays
- or computing a new layout. */
- if (e_week_view_find_event_from_uid (week_view, uid, &event_num)) {
- event = &g_array_index (week_view->events, EWeekViewEvent,
- event_num);
-
- if (!cal_component_has_recurrences (comp)
- && !cal_component_has_recurrences (event->comp)
- && cal_component_event_dates_match (comp, event->comp)) {
-#if 0
- g_print ("updated object's dates unchanged\n");
-#endif
- e_week_view_foreach_event_with_uid (week_view, uid, e_week_view_update_event_cb, comp);
- gtk_object_unref (GTK_OBJECT (comp));
- gtk_widget_queue_draw (week_view->main_canvas);
- return;
- }
-
- /* The dates have changed, so we need to remove the
- old occurrrences before adding the new ones. */
-#if 0
- g_print ("dates changed - removing occurrences\n");
-#endif
- e_week_view_foreach_event_with_uid (week_view, uid,
- e_week_view_remove_event_cb,
- NULL);
- }
-
- /* Add the occurrences of the event. */
- num_days = week_view->multi_week_view ? week_view->weeks_shown * 7 : 7;
-
- cal_recur_generate_instances (comp,
- week_view->day_starts[0],
- week_view->day_starts[num_days],
- e_week_view_add_event,
- week_view);
-
- gtk_object_unref (GTK_OBJECT (comp));
-
- e_week_view_check_layout (week_view);
-
- gtk_widget_queue_draw (week_view->main_canvas);
-}
-
-/* Callback used when a component is removed from the live query */
-static void
-query_obj_removed_cb (CalClient *client, const char *uid, gpointer data)
-{
- EWeekView *week_view;
-
- week_view = E_WEEK_VIEW (data);
-
- e_week_view_foreach_event_with_uid (week_view, uid,
- e_week_view_remove_event_cb, NULL);
-
- e_week_view_check_layout (week_view);
- gtk_widget_queue_draw (week_view->main_canvas);
-}
-
-/* Callback used when a query ends */
-static void
-query_query_done_cb (CalQuery *query, CalQueryDoneStatus status, const char *error_str, gpointer data)
-{
- EWeekView *week_view;
-
- week_view = E_WEEK_VIEW (data);
-
- /* FIXME */
-
- if (status != CAL_QUERY_DONE_SUCCESS)
- fprintf (stderr, "query done: %s\n", error_str);
-}
-
-/* Callback used when an evaluation error occurs when running a query */
-static void
-query_eval_error_cb (CalQuery *query, const char *error_str, gpointer data)
-{
- EWeekView *week_view;
-
- week_view = E_WEEK_VIEW (data);
-
- /* FIXME */
-
- fprintf (stderr, "eval error: %s\n", error_str);
-}
-
-/* Builds a complete query sexp for the week view by adding the predicates to
- * filter only for VEVENTS that fit in the week view's time range.
- */
-static char *
-adjust_query_sexp (EWeekView *week_view, const char *sexp)
-{
- int num_days;
- char *start, *end;
- char *new_sexp;
-
- /* If the dates have not been set yet, we just want an empty query. */
- if (!g_date_valid (&week_view->first_day_shown))
- return g_strdup ("#f");
-
- num_days = week_view->multi_week_view ? week_view->weeks_shown * 7 : 7;
-
- start = isodate_from_time_t (week_view->day_starts[0]);
- end = isodate_from_time_t (week_view->day_starts[num_days]);
-
- new_sexp = g_strdup_printf ("(and (= (get-vtype) \"VEVENT\")"
- " (occur-in-time-range? (make-time \"%s\")"
- " (make-time \"%s\"))"
- " %s)",
- start, end,
- sexp);
-
- g_free (start);
- g_free (end);
-
- return new_sexp;
-}
-
-/* Restarts a query for the week view */
-static void
-update_query (EWeekView *week_view)
-{
- char *real_sexp;
-
- e_week_view_free_events (week_view);
- gtk_widget_queue_draw (week_view->main_canvas);
-
- if (!(week_view->client
- && cal_client_get_load_state (week_view->client) == CAL_CLIENT_LOAD_LOADED))
- return;
-
- if (week_view->query) {
- gtk_signal_disconnect_by_data (GTK_OBJECT (week_view->query), week_view);
- gtk_object_unref (GTK_OBJECT (week_view->query));
- }
-
- g_assert (week_view->sexp != NULL);
- real_sexp = adjust_query_sexp (week_view, week_view->sexp);
-
- week_view->query = cal_client_get_query (week_view->client, real_sexp);
- g_free (real_sexp);
-
- if (!week_view->query) {
- g_message ("update_query(): Could not create the query");
- return;
- }
-
- gtk_signal_connect (GTK_OBJECT (week_view->query), "obj_updated",
- GTK_SIGNAL_FUNC (query_obj_updated_cb), week_view);
- gtk_signal_connect (GTK_OBJECT (week_view->query), "obj_removed",
- GTK_SIGNAL_FUNC (query_obj_removed_cb), week_view);
- gtk_signal_connect (GTK_OBJECT (week_view->query), "query_done",
- GTK_SIGNAL_FUNC (query_query_done_cb), week_view);
- gtk_signal_connect (GTK_OBJECT (week_view->query), "eval_error",
- GTK_SIGNAL_FUNC (query_eval_error_cb), week_view);
-}
-
-/* Callback used when the calendar client finishes opening */
-static void
-cal_opened_cb (CalClient *client, CalClientOpenStatus status, gpointer data)
-{
- EWeekView *week_view;
-
- week_view = E_WEEK_VIEW (data);
-
- if (status != CAL_CLIENT_OPEN_SUCCESS)
- return;
-
- update_query (week_view);
-}
-
-/**
- * e_week_view_set_cal_client:
- * @week_view: A week view.
- * @client: A calendar client interface object.
- *
- * Sets the calendar client interface object that a week view will monitor.
- **/
-void
-e_week_view_set_cal_client (EWeekView *week_view,
- CalClient *client)
-{
- g_return_if_fail (week_view != NULL);
- g_return_if_fail (E_IS_WEEK_VIEW (week_view));
-
- if (client == week_view->client)
- return;
-
- if (client)
- g_return_if_fail (IS_CAL_CLIENT (client));
-
- if (client)
- gtk_object_ref (GTK_OBJECT (client));
-
- if (week_view->client) {
- gtk_signal_disconnect_by_data (GTK_OBJECT (week_view->client), week_view);
- gtk_object_unref (GTK_OBJECT (week_view->client));
- }
-
- week_view->client = client;
-
- if (week_view->client) {
- if (cal_client_get_load_state (week_view->client) == CAL_CLIENT_LOAD_LOADED)
- update_query (week_view);
- else
- gtk_signal_connect (GTK_OBJECT (week_view->client), "cal_opened",
- GTK_SIGNAL_FUNC (cal_opened_cb), week_view);
- }
-}
-
-/**
- * e_week_view_set_query:
- * @week_view: A week view.
- * @sexp: S-expression that defines the query.
- *
- * Sets the query sexp that the week view will use for filtering the displayed
- * events.
- **/
-void
-e_week_view_set_query (EWeekView *week_view, const char *sexp)
-{
- g_return_if_fail (week_view != NULL);
- g_return_if_fail (E_IS_WEEK_VIEW (week_view));
- g_return_if_fail (sexp != NULL);
-
- if (week_view->sexp)
- g_free (week_view->sexp);
-
- week_view->sexp = g_strdup (sexp);
-
- update_query (week_view);
-}
-
-
-/* This sets the selected time range. The EWeekView will show the corresponding
- month and the days between start_time and end_time will be selected.
- To select a single day, use the same value for start_time & end_time. */
-void
-e_week_view_set_selected_time_range (EWeekView *week_view,
- time_t start_time,
- time_t end_time)
-{
- GDate date, base_date, end_date;
- gint day_offset, weekday, week_start_offset, num_days;
- gboolean update_adjustment_value = FALSE;
-
- g_return_if_fail (E_IS_WEEK_VIEW (week_view));
-
- g_date_clear (&date, 1);
- g_date_set_time (&date, start_time);
-
- if (week_view->multi_week_view) {
- /* Find the number of days since the start of the month. */
- day_offset = g_date_day (&date) - 1;
-
- /* Find the 1st week which starts at or before the start of
- the month. */
- base_date = date;
- g_date_set_day (&base_date, 1);
-
- /* Calculate the weekday of the 1st of the month, 0 = Mon. */
- weekday = g_date_weekday (&base_date) - 1;
-
- /* Convert it to an offset from the start of the display. */
- week_start_offset = (weekday + 7 - week_view->display_start_day) % 7;
-
- /* Add it to the day offset so we go back to the 1st week at
- or before the start of the month. */
- day_offset += week_start_offset;
- } else {
- /* Calculate the weekday of the given date, 0 = Mon. */
- weekday = g_date_weekday (&date) - 1;
-
- /* Convert it to an offset from the start of the display. */
- week_start_offset = (weekday + 7 - week_view->display_start_day) % 7;
-
- /* Set the day_offset to the result, so we move back to the
- start of the week. */
- day_offset = week_start_offset;
- }
-
- /* Calculate the base date, i.e. the first day shown when the
- scrollbar adjustment value is 0. */
- base_date = date;
- g_date_subtract_days (&base_date, day_offset);
-
- /* See if we need to update the base date. */
- if (!g_date_valid (&week_view->base_date)
- || g_date_compare (&week_view->base_date, &base_date)) {
- week_view->base_date = base_date;
- update_adjustment_value = TRUE;
- }
-
- /* See if we need to update the first day shown. */
- if (!g_date_valid (&week_view->first_day_shown)
- || g_date_compare (&week_view->first_day_shown, &base_date)) {
- week_view->first_day_shown = base_date;
- start_time = time_add_day (start_time, -day_offset);
- start_time = time_day_begin (start_time);
- e_week_view_recalc_day_starts (week_view, start_time);
- update_query (week_view);
- }
-
- /* Set the selection to the given days. */
- week_view->selection_start_day = g_date_julian (&date)
- - g_date_julian (&base_date);
- if (end_time == start_time
- || end_time <= time_add_day (start_time, 1))
- week_view->selection_end_day = week_view->selection_start_day;
- else {
- g_date_clear (&end_date, 1);
- g_date_set_time (&end_date, end_time - 60);
- week_view->selection_end_day = g_date_julian (&end_date)
- - g_date_julian (&base_date);
- }
-
- /* Make sure the selection is valid. */
- num_days = week_view->multi_week_view ? week_view->weeks_shown * 7 : 7;
- num_days--;
- week_view->selection_start_day = CLAMP (week_view->selection_start_day,
- 0, num_days);
- week_view->selection_end_day = CLAMP (week_view->selection_end_day,
- week_view->selection_start_day,
- num_days);
-
- /* Reset the adjustment value to 0 if the base address has changed.
- Note that we do this after updating first_day_shown so that our
- signal handler will not try to reload the events. */
- if (update_adjustment_value)
- gtk_adjustment_set_value (GTK_RANGE (week_view->vscrollbar)->adjustment, 0);
-
- gtk_widget_queue_draw (week_view->main_canvas);
-}
-
-
-/* Returns the selected time range. */
-void
-e_week_view_get_selected_time_range (EWeekView *week_view,
- time_t *start_time,
- time_t *end_time)
-{
- gint start_day, end_day;
-
- start_day = week_view->selection_start_day;
- end_day = week_view->selection_end_day;
-
- if (start_day == -1) {
- start_day = 0;
- end_day = 0;
- }
-
- if (start_time)
- *start_time = week_view->day_starts[start_day];
-
- if (end_time)
- *end_time = week_view->day_starts[end_day + 1];
-}
-
-
-/* Note that the returned date may be invalid if no date has been set yet. */
-void
-e_week_view_get_first_day_shown (EWeekView *week_view,
- GDate *date)
-{
- *date = week_view->first_day_shown;
-}
-
-
-/* This sets the first day shown in the view. It will be rounded down to the
- nearest week. */
-void
-e_week_view_set_first_day_shown (EWeekView *week_view,
- GDate *date)
-{
- GDate base_date;
- gint weekday, day_offset, num_days;
- gboolean update_adjustment_value = FALSE;
- guint32 old_selection_start_julian = 0, old_selection_end_julian = 0;
- struct tm start_tm;
- time_t start_time;
-
- g_return_if_fail (E_IS_WEEK_VIEW (week_view));
-
- /* Calculate the old selection range. */
- if (week_view->selection_start_day != -1) {
- old_selection_start_julian =
- g_date_julian (&week_view->base_date)
- + week_view->selection_start_day;
- old_selection_end_julian =
- g_date_julian (&week_view->base_date)
- + week_view->selection_end_day;
- }
-
- /* Calculate the weekday of the given date, 0 = Mon. */
- weekday = g_date_weekday (date) - 1;
-
- /* Convert it to an offset from the start of the display. */
- day_offset = (weekday + 7 - week_view->display_start_day) % 7;
-
- /* Calculate the base date, i.e. the first day shown when the
- scrollbar adjustment value is 0. */
- base_date = *date;
- g_date_subtract_days (&base_date, day_offset);
-
- /* See if we need to update the base date. */
- if (!g_date_valid (&week_view->base_date)
- || g_date_compare (&week_view->base_date, &base_date)) {
- week_view->base_date = base_date;
- update_adjustment_value = TRUE;
- }
-
- /* See if we need to update the first day shown. */
- if (!g_date_valid (&week_view->first_day_shown)
- || g_date_compare (&week_view->first_day_shown, &base_date)) {
- week_view->first_day_shown = base_date;
- g_date_to_struct_tm (&base_date, &start_tm);
- start_time = mktime (&start_tm);
- e_week_view_recalc_day_starts (week_view, start_time);
- update_query (week_view);
- }
-
- /* Try to keep the previous selection, but if it is no longer shown
- just select the first day. */
- if (week_view->selection_start_day != -1) {
- week_view->selection_start_day = old_selection_start_julian
- - g_date_julian (&base_date);
- week_view->selection_end_day = old_selection_end_julian
- - g_date_julian (&base_date);
-
- /* Make sure the selection is valid. */
- num_days = week_view->multi_week_view
- ? week_view->weeks_shown * 7 : 7;
- num_days--;
- week_view->selection_start_day =
- CLAMP (week_view->selection_start_day, 0, num_days);
- week_view->selection_end_day =
- CLAMP (week_view->selection_end_day,
- week_view->selection_start_day,
- num_days);
- }
-
- /* Reset the adjustment value to 0 if the base address has changed.
- Note that we do this after updating first_day_shown so that our
- signal handler will not try to reload the events. */
- if (update_adjustment_value)
- gtk_adjustment_set_value (GTK_RANGE (week_view->vscrollbar)->adjustment, 0);
-
- gtk_widget_queue_draw (week_view->main_canvas);
-}
-
-
-/* Recalculates the time_t corresponding to the start of each day. */
-static void
-e_week_view_recalc_day_starts (EWeekView *week_view,
- time_t lower)
-{
- gint num_days, day;
- time_t tmp_time;
-
- num_days = week_view->multi_week_view ? week_view->weeks_shown * 7 : 7;
-
- tmp_time = lower;
- week_view->day_starts[0] = tmp_time;
- for (day = 1; day <= num_days; day++) {
- tmp_time = time_add_day (tmp_time, 1);
- week_view->day_starts[day] = tmp_time;
- }
-}
-
-
-gboolean
-e_week_view_get_multi_week_view (EWeekView *week_view)
-{
- g_return_val_if_fail (E_IS_WEEK_VIEW (week_view), FALSE);
-
- return week_view->multi_week_view;
-}
-
-
-void
-e_week_view_set_multi_week_view (EWeekView *week_view,
- gboolean multi_week_view)
-{
- GtkAdjustment *adjustment;
- gint page_increment, page_size;
-
- g_return_if_fail (E_IS_WEEK_VIEW (week_view));
-
- if (week_view->multi_week_view == multi_week_view)
- return;
-
- week_view->multi_week_view = multi_week_view;
-
- if (multi_week_view) {
- gtk_widget_show (week_view->titles_canvas);
- page_increment = 4;
- page_size = 5;
- } else {
- gtk_widget_hide (week_view->titles_canvas);
- page_increment = page_size = 1;
- }
-
- adjustment = GTK_RANGE (week_view->vscrollbar)->adjustment;
- adjustment->page_increment = page_increment;
- adjustment->page_size = page_size;
- gtk_adjustment_changed (adjustment);
-
- e_week_view_recalc_cell_sizes (week_view);
-
- if (g_date_valid (&week_view->first_day_shown))
- e_week_view_set_first_day_shown (week_view,
- &week_view->first_day_shown);
-}
-
-
-gint
-e_week_view_get_weeks_shown (EWeekView *week_view)
-{
- g_return_val_if_fail (E_IS_WEEK_VIEW (week_view), 1);
-
- return week_view->weeks_shown;
-}
-
-
-void
-e_week_view_set_weeks_shown (EWeekView *week_view,
- gint weeks_shown)
-{
- GtkAdjustment *adjustment;
- gint page_increment, page_size;
-
- g_return_if_fail (E_IS_WEEK_VIEW (week_view));
-
- weeks_shown = MIN (weeks_shown, E_WEEK_VIEW_MAX_WEEKS);
-
- if (week_view->weeks_shown == weeks_shown)
- return;
-
- week_view->weeks_shown = weeks_shown;
-
- if (week_view->multi_week_view) {
- page_increment = 4;
- page_size = 5;
-
- adjustment = GTK_RANGE (week_view->vscrollbar)->adjustment;
- adjustment->page_increment = page_increment;
- adjustment->page_size = page_size;
- gtk_adjustment_changed (adjustment);
-
- e_week_view_recalc_cell_sizes (week_view);
-
- if (g_date_valid (&week_view->first_day_shown))
- e_week_view_set_first_day_shown (week_view, &week_view->first_day_shown);
-
- update_query (week_view);
- }
-}
-
-
-gboolean
-e_week_view_get_compress_weekend (EWeekView *week_view)
-{
- g_return_val_if_fail (E_IS_WEEK_VIEW (week_view), FALSE);
-
- return week_view->compress_weekend;
-}
-
-
-void
-e_week_view_set_compress_weekend (EWeekView *week_view,
- gboolean compress)
-{
- gboolean need_reload = FALSE;
-
- g_return_if_fail (E_IS_WEEK_VIEW (week_view));
-
- if (week_view->compress_weekend == compress)
- return;
-
- week_view->compress_weekend = compress;
-
- /* The option only affects the month view. */
- if (!week_view->multi_week_view)
- return;
-
- e_week_view_recalc_cell_sizes (week_view);
-
- need_reload = e_week_view_recalc_display_start_day (week_view);
-
- /* If the display_start_day has changed we need to recalculate the
- date range shown and reload all events, otherwise we only need to
- do a reshape. */
- if (need_reload) {
- /* Recalculate the days shown and reload if necessary. */
- if (g_date_valid (&week_view->first_day_shown))
- e_week_view_set_first_day_shown (week_view, &week_view->first_day_shown);
- } else {
- week_view->events_need_reshape = TRUE;
- e_week_view_check_layout (week_view);
- }
-}
-
-
-/* Whether we display event end times. */
-gboolean
-e_week_view_get_show_event_end_times (EWeekView *week_view)
-{
- g_return_val_if_fail (E_IS_WEEK_VIEW (week_view), TRUE);
-
- return week_view->show_event_end_times;
-}
-
-
-void
-e_week_view_set_show_event_end_times (EWeekView *week_view,
- gboolean show)
-{
- g_return_if_fail (E_IS_WEEK_VIEW (week_view));
-
- if (week_view->show_event_end_times != show) {
- week_view->show_event_end_times = show;
- e_week_view_recalc_cell_sizes (week_view);
- week_view->events_need_reshape = TRUE;
- e_week_view_check_layout (week_view);
- }
-}
-
-
-/* The first day of the week, 0 (Monday) to 6 (Sunday). */
-gint
-e_week_view_get_week_start_day (EWeekView *week_view)
-{
- g_return_val_if_fail (E_IS_WEEK_VIEW (week_view), 0);
-
- return week_view->week_start_day;
-}
-
-
-void
-e_week_view_set_week_start_day (EWeekView *week_view,
- gint week_start_day)
-{
- g_return_if_fail (E_IS_WEEK_VIEW (week_view));
- g_return_if_fail (week_start_day >= 0);
- g_return_if_fail (week_start_day < 7);
-
- if (week_view->week_start_day == week_start_day)
- return;
-
- week_view->week_start_day = week_start_day;
-
- e_week_view_recalc_display_start_day (week_view);
-
- /* Recalculate the days shown and reload if necessary. */
- if (g_date_valid (&week_view->first_day_shown))
- e_week_view_set_first_day_shown (week_view,
- &week_view->first_day_shown);
-}
-
-
-/* Whether we use 12-hour or 24-hour format. */
-gboolean
-e_week_view_get_24_hour_format (EWeekView *week_view)
-{
- g_return_val_if_fail (E_IS_WEEK_VIEW (week_view), FALSE);
-
- return week_view->use_24_hour_format;
-}
-
-
-void
-e_week_view_set_24_hour_format (EWeekView *week_view,
- gboolean use_24_hour)
-{
- g_return_if_fail (E_IS_WEEK_VIEW (week_view));
-
- if (week_view->use_24_hour_format == use_24_hour)
- return;
-
- week_view->use_24_hour_format = use_24_hour;
-
- /* We need to re-layout the events since the time format affects the
- sizes. */
- e_week_view_recalc_cell_sizes (week_view);
- week_view->events_need_reshape = TRUE;
- e_week_view_check_layout (week_view);
- gtk_widget_queue_draw (week_view->main_canvas);
-}
-
-
-static gboolean
-e_week_view_recalc_display_start_day (EWeekView *week_view)
-{
- gint display_start_day;
-
- /* The display start day defaults to week_start_day, but we have
- to use Saturday if the weekend is compressed and week_start_day
- is Sunday. */
- display_start_day = week_view->week_start_day;
-
- if (display_start_day == 6
- && (!week_view->multi_week_view || week_view->compress_weekend))
- display_start_day = 5;
-
- if (week_view->display_start_day != display_start_day) {
- week_view->display_start_day = display_start_day;
- return TRUE;
- }
-
- return FALSE;
-}
-
-
-static gboolean
-e_week_view_update_event_cb (EWeekView *week_view,
- gint event_num,
- gpointer data)
-{
- EWeekViewEvent *event;
- EWeekViewEventSpan *span;
- gint span_num;
- gchar *text;
- CalComponent *comp;
-
- comp = data;
-
- event = &g_array_index (week_view->events, EWeekViewEvent, event_num);
-
- gtk_object_unref (GTK_OBJECT (event->comp));
- event->comp = comp;
- gtk_object_ref (GTK_OBJECT (comp));
-
- for (span_num = 0; span_num < event->num_spans; span_num++) {
- span = &g_array_index (week_view->spans, EWeekViewEventSpan,
- event->spans_index + span_num);
-
- if (span->text_item) {
- CalComponentText t;
-
- cal_component_get_summary (event->comp, &t);
- text = (char*) t.value;
- gnome_canvas_item_set (span->text_item,
- "text", text ? text : "",
- NULL);
-
- e_week_view_reshape_event_span (week_view, event_num,
- span_num);
- }
- }
-
- return TRUE;
-}
-
-
-/* This calls a given function for each event instance that matches the given
- uid. Note that it is safe for the callback to remove the event (since we
- step backwards through the arrays). */
-static void
-e_week_view_foreach_event_with_uid (EWeekView *week_view,
- const gchar *uid,
- EWeekViewForeachEventCallback callback,
- gpointer data)
-{
- EWeekViewEvent *event;
- gint event_num;
-
- for (event_num = week_view->events->len - 1;
- event_num >= 0;
- event_num--) {
- const char *u;
-
- event = &g_array_index (week_view->events, EWeekViewEvent,
- event_num);
-
- cal_component_get_uid (event->comp, &u);
- if (u && !strcmp (uid, u)) {
- if (!(*callback) (week_view, event_num, data))
- return;
- }
- }
-}
-
-
-static gboolean
-e_week_view_remove_event_cb (EWeekView *week_view,
- gint event_num,
- gpointer data)
-{
- EWeekViewEvent *event;
- EWeekViewEventSpan *span;
- gint span_num;
-
- event = &g_array_index (week_view->events, EWeekViewEvent, event_num);
-
- /* If we were editing this event, set editing_event_num to -1 so
- on_editing_stopped doesn't try to update the event. */
- if (week_view->editing_event_num == event_num)
- week_view->editing_event_num = -1;
-
- /* We leave the span elements in the array, but set the canvas item
- pointers to NULL. */
- for (span_num = 0; span_num < event->num_spans; span_num++) {
- span = &g_array_index (week_view->spans, EWeekViewEventSpan,
- event->spans_index + span_num);
-
- if (span->text_item) {
- gtk_object_destroy (GTK_OBJECT (span->text_item));
- span->text_item = NULL;
- }
- if (span->background_item) {
- gtk_object_destroy (GTK_OBJECT (span->background_item));
- span->background_item = NULL;
- }
- }
-
- gtk_object_unref (GTK_OBJECT (event->comp));
-
- g_array_remove_index (week_view->events, event_num);
- week_view->events_need_layout = TRUE;
-
- return TRUE;
-}
-
-
-void
-e_week_view_get_day_position (EWeekView *week_view,
- gint day,
- gint *day_x,
- gint *day_y,
- gint *day_w,
- gint *day_h)
-{
- gint week, day_of_week, row, col, weekend_col, box, weekend_box;
-
- *day_x = *day_y = *day_w = *day_h = 0;
- g_return_if_fail (day >= 0);
-
- if (week_view->multi_week_view) {
- g_return_if_fail (day < week_view->weeks_shown * 7);
-
- week = day / 7;
- col = day % 7;
- day_of_week = (week_view->display_start_day + day) % 7;
- if (week_view->compress_weekend && day_of_week >= 5) {
- /* In the compressed view Saturday is above Sunday and
- both have just one row as opposed to 2 for all the
- other days. */
- if (day_of_week == 5) {
- *day_y = week_view->row_offsets[week * 2];
- *day_h = week_view->row_heights[week * 2];
- } else {
- *day_y = week_view->row_offsets[week * 2 + 1];
- *day_h = week_view->row_heights[week * 2 + 1];
- col--;
- }
- /* Both Saturday and Sunday are in the same column. */
- *day_x = week_view->col_offsets[col];
- *day_w = week_view->col_widths[col];
- } else {
- /* If the weekend is compressed and the day is after
- the weekend we have to move back a column. */
- if (week_view->compress_weekend) {
- /* Calculate where the weekend column is.
- Note that 5 is Saturday. */
- weekend_col = (5 + 7 - week_view->display_start_day) % 7;
- if (col > weekend_col)
- col--;
- }
-
- *day_y = week_view->row_offsets[week * 2];
- *day_h = week_view->row_heights[week * 2]
- + week_view->row_heights[week * 2 + 1];
- *day_x = week_view->col_offsets[col];
- *day_w = week_view->col_widths[col];
- }
- } else {
- g_return_if_fail (day < 7);
-
- /* Calculate which box to place the day in, from 0-5.
- Note that in the week view the weekends are always
- compressed and share a box. */
- box = day;
- day_of_week = (week_view->display_start_day + day) % 7;
- weekend_box = (5 + 7 - week_view->display_start_day) % 7;
- if (box > weekend_box)
- box--;
-
- if (box < 3) {
- *day_x = week_view->col_offsets[0];
- *day_w = week_view->col_widths[0];
- } else {
- *day_x = week_view->col_offsets[1];
- *day_w = week_view->col_widths[1];
- }
-
- row = (box % 3) * 2;
- if (day_of_week < 5) {
- *day_y = week_view->row_offsets[row];
- *day_h = week_view->row_heights[row]
- + week_view->row_heights[row + 1];
- } else if (day_of_week == 5) {
- /* Saturday. */
- *day_y = week_view->row_offsets[row];
- *day_h = week_view->row_heights[row];
-
- } else {
- /* Sunday. */
- *day_y = week_view->row_offsets[row + 1];
- *day_h = week_view->row_heights[row + 1];
- }
- }
-}
-
-
-/* Returns the bounding box for a span of an event. Usually this can easily
- be determined by the start & end days and row of the span, which are set in
- e_week_view_layout_event(). Though we need a special case for the weekends
- when they are compressed, since the span may not fit.
- The bounding box includes the entire width of the days in the view (but
- not the vertical line down the right of the last day), though the displayed
- event doesn't normally extend to the edges of the day.
- It returns FALSE if the span isn't visible. */
-gboolean
-e_week_view_get_span_position (EWeekView *week_view,
- gint event_num,
- gint span_num,
- gint *span_x,
- gint *span_y,
- gint *span_w)
-{
- EWeekViewEvent *event;
- EWeekViewEventSpan *span;
- gint end_day_of_week, num_days;
- gint start_x, start_y, start_w, start_h;
- gint end_x, end_y, end_w, end_h;
-
- g_return_val_if_fail (E_IS_WEEK_VIEW (week_view), FALSE);
- g_return_val_if_fail (event_num < week_view->events->len, FALSE);
-
- event = &g_array_index (week_view->events, EWeekViewEvent, event_num);
-
- g_return_val_if_fail (span_num < event->num_spans, FALSE);
-
- span = &g_array_index (week_view->spans, EWeekViewEventSpan,
- event->spans_index + span_num);
-
- if (span->row >= week_view->rows_per_cell)
- return FALSE;
-
- end_day_of_week = (week_view->display_start_day + span->start_day + span->num_days - 1) % 7;
- num_days = span->num_days;
- /* Check if the row will not be visible in compressed cells. */
- if (span->row >= week_view->rows_per_compressed_cell) {
- if (week_view->multi_week_view) {
- if (week_view->compress_weekend) {
- /* If it ends on a Saturday and is 1 day long
- we skip it, else we shorten it. If it ends
- on a Sunday it must be 1 day long and we
- skip it. */
- if (end_day_of_week == 5) { /* Sat */
- if (num_days == 1) {
- return FALSE;
- } else {
- num_days--;
- }
- } else if (end_day_of_week == 6) { /* Sun */
- return FALSE;
- }
- }
- } else {
- /* All spans are 1 day long in the week view, so we
- just skip it. */
- if (end_day_of_week > 4)
- return FALSE;
- }
- }
-
- e_week_view_get_day_position (week_view, span->start_day,
- &start_x, &start_y, &start_w, &start_h);
- *span_y = start_y + week_view->events_y_offset
- + span->row * (week_view->row_height
- + E_WEEK_VIEW_EVENT_Y_SPACING);
- if (num_days == 1) {
- *span_x = start_x;
- *span_w = start_w - 1;
- } else {
- e_week_view_get_day_position (week_view,
- span->start_day + num_days - 1,
- &end_x, &end_y, &end_w, &end_h);
- *span_x = start_x;
- *span_w = end_x + end_w - start_x - 1;
- }
-
- return TRUE;
-}
-
-
-
-static gboolean
-e_week_view_on_button_press (GtkWidget *widget,
- GdkEventButton *event,
- EWeekView *week_view)
-{
- gint x, y, day;
-
-#if 0
- g_print ("In e_week_view_on_button_press\n");
-#endif
-
- /* Handle scroll wheel events */
- if (event->button == 4 || event->button == 5) {
- GtkAdjustment *adj = GTK_RANGE (week_view->vscrollbar)->adjustment;
- gfloat new_value;
-
- new_value = adj->value + ((event->button == 4) ?
- -adj->page_increment:
- adj->page_increment);
- new_value = CLAMP (new_value, adj->lower, adj->upper - adj->page_size);
- gtk_adjustment_set_value (adj, new_value);
-
- return TRUE;
- }
-
- /* If an event is pressed just return. */
- if (week_view->pressed_event_num != -1)
- return FALSE;
-
- /* Convert the mouse position to a week & day. */
- x = event->x;
- y = event->y;
- day = e_week_view_convert_position_to_day (week_view, x, y);
- if (day == -1)
- return FALSE;
-
- /* Start the selection drag. */
- if (event->button == 1) {
- if (!GTK_WIDGET_HAS_FOCUS (week_view))
- gtk_widget_grab_focus (GTK_WIDGET (week_view));
-
- if (gdk_pointer_grab (GTK_LAYOUT (widget)->bin_window, FALSE,
- GDK_POINTER_MOTION_MASK
- | GDK_BUTTON_RELEASE_MASK,
- FALSE, NULL, event->time) == 0) {
- week_view->selection_start_day = day;
- week_view->selection_end_day = day;
- week_view->selection_drag_pos = E_WEEK_VIEW_DRAG_END;
-
- /* FIXME: Optimise? */
- gtk_widget_queue_draw (week_view->main_canvas);
- }
- } else if (event->button == 3) {
- if (!GTK_WIDGET_HAS_FOCUS (week_view))
- gtk_widget_grab_focus (GTK_WIDGET (week_view));
- e_week_view_show_popup_menu (week_view, event, -1);
- }
-
- return FALSE;
-}
-
-
-static gboolean
-e_week_view_on_button_release (GtkWidget *widget,
- GdkEventButton *event,
- EWeekView *week_view)
-{
- time_t start, end;
-
-#if 0
- g_print ("In e_week_view_on_button_release\n");
-#endif
-
- if (week_view->selection_drag_pos != E_WEEK_VIEW_DRAG_NONE) {
- week_view->selection_drag_pos = E_WEEK_VIEW_DRAG_NONE;
- gdk_pointer_ungrab (event->time);
- start = week_view->day_starts[week_view->selection_start_day];
- end = week_view->day_starts[week_view->selection_end_day + 1];
-
- if (week_view->calendar)
- gnome_calendar_set_selected_time_range (week_view->calendar, start, end);
- }
-
- return FALSE;
-}
-
-
-static gboolean
-e_week_view_on_motion (GtkWidget *widget,
- GdkEventMotion *mevent,
- EWeekView *week_view)
-{
- gint x, y, day;
-
-#if 0
- g_print ("In e_week_view_on_motion\n");
-#endif
-
- /* Convert the mouse position to a week & day. */
- x = mevent->x;
- y = mevent->y;
- day = e_week_view_convert_position_to_day (week_view, x, y);
- if (day == -1)
- return FALSE;
-
- if (week_view->selection_drag_pos != E_WEEK_VIEW_DRAG_NONE) {
- e_week_view_update_selection (week_view, day);
- return TRUE;
- }
-
- return FALSE;
-}
-
-
-/* Converts a position in the canvas window to a day offset from the first
- day displayed. Returns -1 if the position is outside the grid. */
-static gint
-e_week_view_convert_position_to_day (EWeekView *week_view,
- gint x,
- gint y)
-{
- gint col, row, grid_x = -1, grid_y = -1, week, day;
- gint weekend_col, box, weekend_box;
-
- /* First we convert it to a grid position. */
- for (col = 0; col <= week_view->columns; col++) {
- if (x < week_view->col_offsets[col]) {
- grid_x = col - 1;
- break;
- }
- }
-
- for (row = 0; row <= week_view->rows; row++) {
- if (y < week_view->row_offsets[row]) {
- grid_y = row - 1;
- break;
- }
- }
-
- /* If the mouse is outside the grid return FALSE. */
- if (grid_x == -1 || grid_y == -1)
- return -1;
-
- /* Now convert the grid position to a week and day. */
- if (week_view->multi_week_view) {
- week = grid_y / 2;
- day = grid_x;
-
- if (week_view->compress_weekend) {
- weekend_col = (5 + 7 - week_view->display_start_day) % 7;
- if (grid_x > weekend_col
- || (grid_x == weekend_col && grid_y % 2 == 1))
- day++;
- }
- } else {
- week = 0;
-
- box = grid_x * 3 + grid_y / 2;
- weekend_box = (5 + 7 - week_view->display_start_day) % 7;
- day = box;
- if (box > weekend_box
- ||( box == weekend_box && grid_y % 2 == 1))
- day++;
- }
-
- return week * 7 + day;
-}
-
-
-static void
-e_week_view_update_selection (EWeekView *week_view,
- gint day)
-{
- gint tmp_day;
- gboolean need_redraw = FALSE;
-
-#if 0
- g_print ("Updating selection %i,%i\n", week, day);
-#endif
-
- if (week_view->selection_drag_pos == E_WEEK_VIEW_DRAG_START) {
- if (day != week_view->selection_start_day) {
- need_redraw = TRUE;
- week_view->selection_start_day = day;
- }
- } else {
- if (day != week_view->selection_end_day) {
- need_redraw = TRUE;
- week_view->selection_end_day = day;
- }
- }
-
- /* Switch the drag position if necessary. */
- if (week_view->selection_start_day > week_view->selection_end_day) {
- tmp_day = week_view->selection_start_day;
- week_view->selection_start_day = week_view->selection_end_day;
- week_view->selection_end_day = tmp_day;
- if (week_view->selection_drag_pos == E_WEEK_VIEW_DRAG_START)
- week_view->selection_drag_pos = E_WEEK_VIEW_DRAG_END;
- else
- week_view->selection_drag_pos = E_WEEK_VIEW_DRAG_START;
- }
-
- /* FIXME: Optimise? */
- if (need_redraw) {
- gtk_widget_queue_draw (week_view->main_canvas);
- }
-}
-
-
-static void
-e_week_view_free_events (EWeekView *week_view)
-{
- EWeekViewEvent *event;
- EWeekViewEventSpan *span;
- gint event_num, span_num, num_days, day;
-
- /* Reset all our indices. */
- week_view->pressed_event_num = -1;
- week_view->pressed_span_num = -1;
- week_view->editing_event_num = -1;
- week_view->editing_span_num = -1;
- week_view->popup_event_num = -1;
-
- for (event_num = 0; event_num < week_view->events->len; event_num++) {
- event = &g_array_index (week_view->events, EWeekViewEvent,
- event_num);
- gtk_object_unref (GTK_OBJECT (event->comp));
- }
-
- g_array_set_size (week_view->events, 0);
-
- /* Destroy all the old canvas items. */
- if (week_view->spans) {
- for (span_num = 0; span_num < week_view->spans->len;
- span_num++) {
- span = &g_array_index (week_view->spans,
- EWeekViewEventSpan, span_num);
- if (span->background_item)
- gtk_object_destroy (GTK_OBJECT (span->background_item));
- if (span->text_item)
- gtk_object_destroy (GTK_OBJECT (span->text_item));
- }
- g_array_free (week_view->spans, TRUE);
- week_view->spans = NULL;
- }
-
- /* Clear the number of rows used per day. */
- num_days = week_view->multi_week_view ? week_view->weeks_shown * 7 : 7;
- for (day = 0; day <= num_days; day++) {
- week_view->rows_per_day[day] = 0;
- }
-}
-
-
-/* This adds one event to the view, adding it to the appropriate array. */
-static gboolean
-e_week_view_add_event (CalComponent *comp,
- time_t start,
- time_t end,
- gpointer data)
-
-{
- EWeekView *week_view;
- EWeekViewEvent event;
- gint num_days;
- struct tm start_tm, end_tm;
-
- week_view = E_WEEK_VIEW (data);
-
- /* Check that the event times are valid. */
- num_days = week_view->multi_week_view ? week_view->weeks_shown * 7 : 7;
-
-#if 0
- g_print ("View start:%li end:%li Event start:%li end:%li\n",
- week_view->day_starts[0], week_view->day_starts[num_days],
- start, end);
-#endif
-
- g_return_val_if_fail (start <= end, TRUE);
- g_return_val_if_fail (start < week_view->day_starts[num_days], TRUE);
- g_return_val_if_fail (end > week_view->day_starts[0], TRUE);
-
- start_tm = *(localtime (&start));
- end_tm = *(localtime (&end));
-
- event.comp = comp;
- gtk_object_ref (GTK_OBJECT (event.comp));
- event.start = start;
- event.end = end;
- event.spans_index = 0;
- event.num_spans = 0;
-
- event.start_minute = start_tm.tm_hour * 60 + start_tm.tm_min;
- event.end_minute = end_tm.tm_hour * 60 + end_tm.tm_min;
- if (event.end_minute == 0 && start != end)
- event.end_minute = 24 * 60;
-
- g_array_append_val (week_view->events, event);
- week_view->events_sorted = FALSE;
- week_view->events_need_layout = TRUE;
-
- return TRUE;
-}
-
-
-/* This lays out the events, or reshapes them, as necessary. */
-static void
-e_week_view_check_layout (EWeekView *week_view)
-{
- /* Don't bother if we aren't visible. */
- if (!GTK_WIDGET_VISIBLE (week_view))
- return;
-
- /* Make sure the events are sorted (by start and size). */
- e_week_view_ensure_events_sorted (week_view);
-
- if (week_view->events_need_layout)
- e_week_view_layout_events (week_view);
-
- if (week_view->events_need_layout || week_view->events_need_reshape)
- e_week_view_reshape_events (week_view);
-
- week_view->events_need_layout = FALSE;
- week_view->events_need_reshape = FALSE;
-}
-
-
-static void
-e_week_view_layout_events (EWeekView *week_view)
-{
- EWeekViewEvent *event;
- EWeekViewEventSpan *span;
- gint num_days, day, event_num, span_num;
- guint8 *grid;
- GArray *spans, *old_spans;
-
- /* This is a temporary 2-d grid which is used to place events.
- Each element is 0 if the position is empty, or 1 if occupied.
- We allocate the maximum size possible here, assuming that each
- event will need its own row. */
- grid = g_new0 (guint8, E_WEEK_VIEW_MAX_ROWS_PER_CELL * 7
- * E_WEEK_VIEW_MAX_WEEKS);
-
- /* We create a new array of spans, which will replace the old one. */
- spans = g_array_new (FALSE, FALSE, sizeof (EWeekViewEventSpan));
-
- /* Clear the number of rows used per day. */
- num_days = week_view->multi_week_view ? week_view->weeks_shown * 7 : 7;
- for (day = 0; day <= num_days; day++) {
- week_view->rows_per_day[day] = 0;
- }
-
- /* Iterate over the events, finding which weeks they cover, and putting
- them in the first free row available. */
- for (event_num = 0; event_num < week_view->events->len; event_num++) {
- event = &g_array_index (week_view->events, EWeekViewEvent,
- event_num);
- e_week_view_layout_event (week_view, event, grid, spans);
- }
-
- /* Free the grid. */
- g_free (grid);
-
- /* Replace the spans array. */
- old_spans = week_view->spans;
- week_view->spans = spans;
-
- /* Destroy the old spans array, destroying any unused canvas items. */
- if (old_spans) {
- for (span_num = 0; span_num < old_spans->len; span_num++) {
- span = &g_array_index (old_spans, EWeekViewEventSpan,
- span_num);
- if (span->background_item)
- gtk_object_destroy (GTK_OBJECT (span->background_item));
- if (span->text_item)
- gtk_object_destroy (GTK_OBJECT (span->text_item));
- }
- g_array_free (old_spans, TRUE);
- }
-}
-
-
-static void
-e_week_view_layout_event (EWeekView *week_view,
- EWeekViewEvent *event,
- guint8 *grid,
- GArray *spans)
-{
- gint start_day, end_day, span_start_day, span_end_day, rows_per_cell;
- gint free_row, row, day, span_num, spans_index, num_spans, max_day;
- EWeekViewEventSpan span, *old_span;
-
- start_day = e_week_view_find_day (week_view, event->start, FALSE);
- end_day = e_week_view_find_day (week_view, event->end, TRUE);
- max_day = week_view->multi_week_view ? week_view->weeks_shown * 7 - 1
- : 7 - 1;
- start_day = CLAMP (start_day, 0, max_day);
- end_day = CLAMP (end_day, 0, max_day);
-
-#if 0
- g_print ("In e_week_view_layout_event Start:%i End: %i\n",
- start_day, end_day);
-#endif
-
- /* Iterate through each of the spans of the event, where each span
- is a sequence of 1 or more days displayed next to each other. */
- span_start_day = start_day;
- rows_per_cell = E_WEEK_VIEW_MAX_ROWS_PER_CELL;
- span_num = 0;
- spans_index = spans->len;
- num_spans = 0;
- while (span_start_day <= end_day) {
- span_end_day = e_week_view_find_span_end (week_view,
- span_start_day);
- span_end_day = MIN (span_end_day, end_day);
-#if 0
- g_print (" Span start:%i end:%i\n", span_start_day,
- span_end_day);
-#endif
- /* Try each row until we find a free one or we fall off the
- bottom of the available rows. */
- row = 0;
- free_row = -1;
- while (free_row == -1 && row < rows_per_cell) {
- free_row = row;
- for (day = span_start_day; day <= span_end_day;
- day++) {
- if (grid[day * rows_per_cell + row]) {
- free_row = -1;
- break;
- }
- }
- row++;
- };
-
- if (free_row != -1) {
- /* Mark the cells as full. */
- for (day = span_start_day; day <= span_end_day;
- day++) {
- grid[day * rows_per_cell + free_row] = 1;
- week_view->rows_per_day[day] = MAX (week_view->rows_per_day[day], free_row + 1);
- }
-#if 0
- g_print (" Span start:%i end:%i row:%i\n",
- span_start_day, span_end_day, free_row);
-#endif
- /* Add the span to the array, and try to reuse any
- canvas items from the old spans. */
- span.start_day = span_start_day;
- span.num_days = span_end_day - span_start_day + 1;
- span.row = free_row;
- span.background_item = NULL;
- span.text_item = NULL;
- if (event->num_spans > span_num) {
- old_span = &g_array_index (week_view->spans, EWeekViewEventSpan, event->spans_index + span_num);
- span.background_item = old_span->background_item;
- span.text_item = old_span->text_item;
- old_span->background_item = NULL;
- old_span->text_item = NULL;
- }
-
- g_array_append_val (spans, span);
- num_spans++;
- }
-
- span_start_day = span_end_day + 1;
- span_num++;
- }
-
- /* Set the event's spans. */
- event->spans_index = spans_index;
- event->num_spans = num_spans;
-}
-
-
-static void
-e_week_view_ensure_events_sorted (EWeekView *week_view)
-{
- if (!week_view->events_sorted) {
- qsort (week_view->events->data,
- week_view->events->len,
- sizeof (EWeekViewEvent),
- e_week_view_event_sort_func);
- week_view->events_sorted = TRUE;
- }
-}
-
-
-static gint
-e_week_view_event_sort_func (const void *arg1,
- const void *arg2)
-{
- EWeekViewEvent *event1, *event2;
-
- event1 = (EWeekViewEvent*) arg1;
- event2 = (EWeekViewEvent*) arg2;
-
- if (event1->start < event2->start)
- return -1;
- if (event1->start > event2->start)
- return 1;
-
- if (event1->end > event2->end)
- return -1;
- if (event1->end < event2->end)
- return 1;
-
- return 0;
-}
-
-
-static void
-e_week_view_reshape_events (EWeekView *week_view)
-{
- EWeekViewEvent *event;
- gint event_num, span_num;
- gint num_days, day, day_x, day_y, day_w, day_h, max_rows;
- gboolean is_weekend;
-
- for (event_num = 0; event_num < week_view->events->len; event_num++) {
- event = &g_array_index (week_view->events, EWeekViewEvent,
- event_num);
- for (span_num = 0; span_num < event->num_spans; span_num++) {
- e_week_view_reshape_event_span (week_view, event_num,
- span_num);
- }
- }
-
- /* Reshape the jump buttons and show/hide them as appropriate. */
- num_days = week_view->multi_week_view ? week_view->weeks_shown * 7 : 7;
- for (day = 0; day < num_days; day++) {
-
- is_weekend = ((week_view->display_start_day + day) % 7 >= 5) ? TRUE : FALSE;
- if (!is_weekend || (week_view->multi_week_view
- && !week_view->compress_weekend))
- max_rows = week_view->rows_per_cell;
- else
- max_rows = week_view->rows_per_compressed_cell;
-
- /* Determine whether the jump button should be shown. */
- if (week_view->rows_per_day[day] <= max_rows) {
- gnome_canvas_item_hide (week_view->jump_buttons[day]);
- } else {
- e_week_view_get_day_position (week_view, day,
- &day_x, &day_y,
- &day_w, &day_h);
-
- gnome_canvas_item_set (week_view->jump_buttons[day],
- "GnomeCanvasPixbuf::x", (gdouble) (day_x + day_w - E_WEEK_VIEW_JUMP_BUTTON_X_PAD - E_WEEK_VIEW_JUMP_BUTTON_WIDTH),
- "GnomeCanvasPixbuf::y", (gdouble) (day_y + day_h - E_WEEK_VIEW_JUMP_BUTTON_Y_PAD - E_WEEK_VIEW_JUMP_BUTTON_HEIGHT),
- NULL);
-
- gnome_canvas_item_show (week_view->jump_buttons[day]);
- gnome_canvas_item_raise_to_top (week_view->jump_buttons[day]);
- }
- }
-
- for (day = num_days; day < E_WEEK_VIEW_MAX_WEEKS * 7; day++) {
- gnome_canvas_item_hide (week_view->jump_buttons[day]);
- }
-}
-
-
-static void
-e_week_view_reshape_event_span (EWeekView *week_view,
- gint event_num,
- gint span_num)
-{
- EWeekViewEvent *event;
- EWeekViewEventSpan *span;
- GdkFont *font;
- gint span_x, span_y, span_w, num_icons, icons_width, time_width;
- gint min_text_x, max_text_w, width;
- gboolean show_icons = TRUE, use_max_width = FALSE;
- gboolean one_day_event;
- CalComponent *comp;
- gdouble text_x, text_y, text_w, text_h;
- gchar *text, *end_of_line;
- gint line_len, text_width;
-
- event = &g_array_index (week_view->events, EWeekViewEvent, event_num);
- span = &g_array_index (week_view->spans, EWeekViewEventSpan,
- event->spans_index + span_num);
- comp = event->comp;
- font = GTK_WIDGET (week_view)->style->font;
-
- one_day_event = e_week_view_is_one_day_event (week_view, event_num);
-
- /* If the span will not be visible destroy the canvas items and
- return. */
- if (!e_week_view_get_span_position (week_view, event_num, span_num,
- &span_x, &span_y, &span_w)) {
- if (span->background_item)
- gtk_object_destroy (GTK_OBJECT (span->background_item));
- if (span->text_item)
- gtk_object_destroy (GTK_OBJECT (span->text_item));
- span->background_item = NULL;
- span->text_item = NULL;
- return;
- }
-
- /* If we are editing a long event we don't show the icons and the EText
- item uses the maximum width available. */
- if (!one_day_event && week_view->editing_event_num == event_num
- && week_view->editing_span_num == span_num) {
- show_icons = FALSE;
- use_max_width = TRUE;
- }
-
- /* Calculate how many icons we need to show. */
- num_icons = 0;
- if (show_icons) {
- if (cal_component_has_alarms (comp))
- num_icons++;
- if (cal_component_has_recurrences (comp))
- num_icons++;
- }
-
- /* Create the background canvas item if necessary. */
- if (!span->background_item) {
- span->background_item =
- gnome_canvas_item_new (GNOME_CANVAS_GROUP (GNOME_CANVAS (week_view->main_canvas)->root),
- e_week_view_event_item_get_type (),
- NULL);
- }
-
- gnome_canvas_item_set (span->background_item,
- "event_num", event_num,
- "span_num", span_num,
- NULL);
-
- /* Create the text item if necessary. */
- if (!span->text_item) {
- CalComponentText text;
-
- cal_component_get_summary (comp, &text);
- span->text_item =
- gnome_canvas_item_new (GNOME_CANVAS_GROUP (GNOME_CANVAS (week_view->main_canvas)->root),
- e_text_get_type (),
- "font_gdk", GTK_WIDGET (week_view)->style->font,
- "anchor", GTK_ANCHOR_NW,
- "clip", TRUE,
-#if 0
- "max_lines", 1,
-#endif
- "editable", TRUE,
- "text", text.value ? text.value : "",
- "use_ellipsis", TRUE,
- "fill_color_rgba", GNOME_CANVAS_COLOR(0, 0, 0),
- NULL);
- gtk_signal_connect (GTK_OBJECT (span->text_item), "event",
- GTK_SIGNAL_FUNC (e_week_view_on_text_item_event),
- week_view);
- }
-
- /* Calculate the position of the text item.
- For events < 1 day it starts after the times & icons and ends at the
- right edge of the span.
- For events >= 1 day we need to determine whether times are shown at
- the start and end of the span, then try to center the text item with
- the icons in the middle, but making sure we don't go over the times.
- */
-
-
- /* Calculate the space necessary to display a time, e.g. "13:00". */
- time_width = e_week_view_get_time_string_width (week_view);
-
- /* Calculate the space needed for the icons. */
- icons_width = (E_WEEK_VIEW_ICON_WIDTH + E_WEEK_VIEW_ICON_X_PAD)
- * num_icons - E_WEEK_VIEW_ICON_X_PAD + E_WEEK_VIEW_ICON_R_PAD;
-
- /* The y position and height are the same for both event types. */
- text_y = span_y + E_WEEK_VIEW_EVENT_BORDER_HEIGHT
- + E_WEEK_VIEW_EVENT_TEXT_Y_PAD;
- text_h = font->ascent + font->descent;
-
- if (one_day_event) {
- /* Note that 1-day events don't have a border. Although we
- still use the border height to position the events
- vertically so they still line up neatly (see above),
- we don't use the border width or edge padding at all. */
- text_x = span_x + E_WEEK_VIEW_EVENT_L_PAD;
-
- switch (week_view->time_format) {
- case E_WEEK_VIEW_TIME_BOTH_SMALL_MIN:
- case E_WEEK_VIEW_TIME_BOTH:
- /* These have 2 time strings with a small space between
- them and some space before the EText item. */
- text_x += time_width * 2
- + E_WEEK_VIEW_EVENT_TIME_SPACING
- + E_WEEK_VIEW_EVENT_TIME_X_PAD;
- break;
- case E_WEEK_VIEW_TIME_START_SMALL_MIN:
- case E_WEEK_VIEW_TIME_START:
- /* These have just 1 time string with some space
- before the EText item. */
- text_x += time_width + E_WEEK_VIEW_EVENT_TIME_X_PAD;
- break;
- case E_WEEK_VIEW_TIME_NONE:
- break;
- }
-
- /* The icons_width includes space on the right of the icons. */
- text_x += icons_width;
-
- /* The width of the EText item extends right to the edge of the
- event, just inside the border. */
- text_w = span_x + span_w - E_WEEK_VIEW_EVENT_R_PAD - text_x;
-
- } else {
- if (use_max_width) {
- /* When we are editing the event we use all the
- available width. */
- text_x = span_x + E_WEEK_VIEW_EVENT_L_PAD
- + E_WEEK_VIEW_EVENT_BORDER_WIDTH
- + E_WEEK_VIEW_EVENT_EDGE_X_PAD;
- text_w = span_x + span_w - E_WEEK_VIEW_EVENT_R_PAD
- - E_WEEK_VIEW_EVENT_BORDER_WIDTH
- - E_WEEK_VIEW_EVENT_EDGE_X_PAD - text_x;
- } else {
- /* Get the width of the text of the event. This is a
- bit of a hack. It would be better if EText could
- tell us this. */
- gtk_object_get (GTK_OBJECT (span->text_item),
- "text", &text,
- NULL);
- text_width = 0;
- if (text) {
- /* It should only have one line of text in it.
- I'm not sure we need this any more. */
- end_of_line = strchr (text, '\n');
- if (end_of_line)
- line_len = end_of_line - text;
- else
- line_len = strlen (text);
- text_width = gdk_text_width (font, text,
- line_len);
- g_free (text);
- }
-
- /* Add on the width of the icons and find the default
- position, which centers the icons + text. */
- width = text_width + icons_width;
- text_x = span_x + (span_w - width) / 2;
-
- /* Now calculate the left-most valid position, and make
- sure we don't go to the left of that. */
- min_text_x = span_x + E_WEEK_VIEW_EVENT_L_PAD
- + E_WEEK_VIEW_EVENT_BORDER_WIDTH
- + E_WEEK_VIEW_EVENT_EDGE_X_PAD;
- /* See if we will want to display the start time, and
- if so take that into account. */
- if (event->start > week_view->day_starts[span->start_day])
- min_text_x += time_width
- + E_WEEK_VIEW_EVENT_TIME_X_PAD;
-
- /* Now make sure we don't go to the left of the minimum
- position. */
- text_x = MAX (text_x, min_text_x);
-
- /* Now calculate the largest valid width, using the
- calculated x position, and make sure we don't
- exceed that. */
- max_text_w = span_x + span_w - E_WEEK_VIEW_EVENT_R_PAD
- - E_WEEK_VIEW_EVENT_BORDER_WIDTH
- - E_WEEK_VIEW_EVENT_EDGE_X_PAD - text_x;
- if (event->end < week_view->day_starts[span->start_day
- + span->num_days])
- max_text_w -= time_width
- + E_WEEK_VIEW_EVENT_TIME_X_PAD;
-
- text_w = MIN (width, max_text_w);
-
- /* Now take out the space for the icons. */
- text_x += icons_width;
- text_w -= icons_width;
- }
- }
-
- /* Make sure we don't try to use a negative width. */
- text_w = MAX (text_w, 0);
-
- gnome_canvas_item_set (span->text_item,
- "clip_width", (gdouble) text_w,
- "clip_height", (gdouble) text_h,
- NULL);
- e_canvas_item_move_absolute (span->text_item, text_x, text_y);
-}
-
-
-/* Finds the day containing the given time.
- If include_midnight_in_prev_day is TRUE then if the time exactly
- matches the start of a day the previous day is returned. This is useful
- when calculating the end day of an event. */
-static gint
-e_week_view_find_day (EWeekView *week_view,
- time_t time_to_find,
- gboolean include_midnight_in_prev_day)
-{
- gint num_days, day;
- time_t *day_starts;
-
- num_days = week_view->multi_week_view ? week_view->weeks_shown * 7 : 7;
- day_starts = week_view->day_starts;
-
- if (time_to_find < day_starts[0])
- return -1;
- if (time_to_find > day_starts[num_days])
- return num_days;
-
- for (day = 1; day <= num_days; day++) {
- if (time_to_find <= day_starts[day]) {
- if (time_to_find == day_starts[day]
- && !include_midnight_in_prev_day)
- return day;
- return day - 1;
- }
- }
-
- g_assert_not_reached ();
- return num_days;
-}
-
-
-/* This returns the last possible day in the same span as the given day.
- A span is all the days which are displayed next to each other from left to
- right. In the week view all spans are only 1 day, since Tuesday is below
- Monday rather than beside it etc. In the month view, if the weekends are not
- compressed then each week is a span, otherwise we have to break a span up
- on Saturday, use a separate span for Sunday, and start again on Monday. */
-static gint
-e_week_view_find_span_end (EWeekView *week_view,
- gint day)
-{
- gint week, col, sat_col, end_col;
-
- if (week_view->multi_week_view) {
- week = day / 7;
- col = day % 7;
-
- /* We default to the last column in the row. */
- end_col = 6;
-
- /* If the weekend is compressed we must end any spans on
- Saturday and Sunday. */
- if (week_view->compress_weekend) {
- sat_col = (5 + 7 - week_view->display_start_day) % 7;
- if (col <= sat_col)
- end_col = sat_col;
- else if (col == sat_col + 1)
- end_col = sat_col + 1;
- }
-
- return week * 7 + end_col;
- } else {
- return day;
- }
-}
-
-
-static void
-e_week_view_on_adjustment_changed (GtkAdjustment *adjustment,
- EWeekView *week_view)
-{
- GDate date;
- gint week_offset;
- struct tm tm;
- time_t lower, start, end;
- guint32 old_first_day_julian, new_first_day_julian;
-
- /* If we don't have a valid date set yet, just return. */
- if (!g_date_valid (&week_view->first_day_shown))
- return;
-
- /* Determine the first date shown. */
- date = week_view->base_date;
- week_offset = floor (adjustment->value + 0.5);
- g_date_add_days (&date, week_offset * 7);
-
- /* Convert the old & new first days shown to julian values. */
- old_first_day_julian = g_date_julian (&week_view->first_day_shown);
- new_first_day_julian = g_date_julian (&date);
-
- /* If we are already showing the date, just return. */
- if (old_first_day_julian == new_first_day_julian)
- return;
-
- /* Set the new first day shown. */
- week_view->first_day_shown = date;
-
- /* Convert it to a time_t. */
- g_date_to_struct_tm (&date, &tm);
- lower = mktime (&tm);
- lower = time_day_begin (lower);
-
- e_week_view_recalc_day_starts (week_view, lower);
- update_query (week_view);
-
- /* Update the selection, if needed. */
- if (week_view->selection_start_day != -1) {
- start = week_view->day_starts[week_view->selection_start_day];
- end = week_view->day_starts[week_view->selection_end_day + 1];
- if (week_view->calendar)
- gnome_calendar_set_selected_time_range (week_view->calendar, start, end);
- }
-
- gtk_widget_queue_draw (week_view->main_canvas);
-}
-
-
-void
-e_week_view_start_editing_event (EWeekView *week_view,
- gint event_num,
- gint span_num,
- gchar *initial_text)
-{
- EWeekViewEvent *event;
- EWeekViewEventSpan *span;
- ETextEventProcessor *event_processor = NULL;
- ETextEventProcessorCommand command;
-
- /* If we are already editing the event, just return. */
- if (event_num == week_view->editing_event_num
- && span_num == week_view->editing_span_num)
- return;
-
- event = &g_array_index (week_view->events, EWeekViewEvent, event_num);
- span = &g_array_index (week_view->spans, EWeekViewEventSpan,
- event->spans_index + span_num);
-
- /* If the event is not shown, don't try to edit it. */
- if (!span->text_item)
- return;
-
- if (initial_text) {
- gnome_canvas_item_set (span->text_item,
- "text", initial_text,
- NULL);
- }
-
- /* FIXME: This implicitly stops any edit of another item, causing it
- to be sent to the server and resulting in a call to obj_updated_cb()
- which may reload all the events and so our span and text item may
- actually be destroyed. So we often get a SEGV. */
- e_canvas_item_grab_focus (span->text_item, TRUE);
-
- /* Try to move the cursor to the end of the text. */
- gtk_object_get (GTK_OBJECT (span->text_item),
- "event_processor", &event_processor,
- NULL);
- if (event_processor) {
- command.action = E_TEP_MOVE;
- command.position = E_TEP_END_OF_BUFFER;
- gtk_signal_emit_by_name (GTK_OBJECT (event_processor),
- "command", &command);
- }
-}
-
-
-/* This stops any current edit. */
-void
-e_week_view_stop_editing_event (EWeekView *week_view)
-{
- GtkWidget *toplevel;
-
- /* Check we are editing an event. */
- if (week_view->editing_event_num == -1)
- return;
-
- /* Set focus to the toplevel so the item loses focus. */
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (week_view));
- if (toplevel && GTK_IS_WINDOW (toplevel))
- gtk_window_set_focus (GTK_WINDOW (toplevel), NULL);
-}
-
-
-static gboolean
-e_week_view_on_text_item_event (GnomeCanvasItem *item,
- GdkEvent *event,
- EWeekView *week_view)
-{
- gint event_num, span_num;
-
-#if 0
- g_print ("In e_week_view_on_text_item_event\n");
-#endif
-
- switch (event->type) {
- case GDK_KEY_PRESS:
- if (event && event->key.keyval == GDK_Return) {
- /* We set the keyboard focus to the EDayView, so the
- EText item loses it and stops the edit. */
- gtk_widget_grab_focus (GTK_WIDGET (week_view));
-
- /* Stop the signal last or we will also stop any
- other events getting to the EText item. */
- gtk_signal_emit_stop_by_name (GTK_OBJECT (item),
- "event");
- return TRUE;
- }
- break;
- case GDK_BUTTON_PRESS:
- if (!e_week_view_find_event_from_item (week_view, item,
- &event_num, &span_num))
- return FALSE;
-
- if (event->button.button == 3) {
- if (!GTK_WIDGET_HAS_FOCUS (week_view))
- gtk_widget_grab_focus (GTK_WIDGET (week_view));
- e_week_view_show_popup_menu (week_view,
- (GdkEventButton*) event,
- event_num);
- gtk_signal_emit_stop_by_name (GTK_OBJECT (item->canvas),
- "button_press_event");
- return TRUE;
- }
-
- week_view->pressed_event_num = event_num;
- week_view->pressed_span_num = span_num;
-
- /* Only let the EText handle the event while editing. */
- if (!E_TEXT (item)->editing) {
- gtk_signal_emit_stop_by_name (GTK_OBJECT (item),
- "event");
-
- if (event) {
- week_view->drag_event_x = event->button.x;
- week_view->drag_event_y = event->button.y;
- } else
- g_warning ("No GdkEvent");
-
- /* FIXME: Remember the day offset from the start of
- the event, for DnD. */
-
- return TRUE;
- }
- break;
- case GDK_BUTTON_RELEASE:
- if (!E_TEXT (item)->editing) {
- /* This shouldn't ever happen. */
- if (!e_week_view_find_event_from_item (week_view,
- item,
- &event_num,
- &span_num))
- return FALSE;
-
- if (week_view->pressed_event_num != -1
- && week_view->pressed_event_num == event_num
- && week_view->pressed_span_num == span_num) {
- e_week_view_start_editing_event (week_view,
- event_num,
- span_num,
- NULL);
- week_view->pressed_event_num = -1;
- }
-
- /* Stop the signal last or we will also stop any
- other events getting to the EText item. */
- gtk_signal_emit_stop_by_name (GTK_OBJECT (item),
- "event");
- return TRUE;
- }
- week_view->pressed_event_num = -1;
- break;
- case GDK_FOCUS_CHANGE:
- if (event->focus_change.in) {
- e_week_view_on_editing_started (week_view, item);
- } else {
- e_week_view_on_editing_stopped (week_view, item);
- }
-
- return FALSE;
- default:
- break;
- }
-
- return FALSE;
-}
-
-
-static void
-e_week_view_on_editing_started (EWeekView *week_view,
- GnomeCanvasItem *item)
-{
- gint event_num, span_num;
-
- if (!e_week_view_find_event_from_item (week_view, item,
- &event_num, &span_num))
- return;
-
-#if 0
- g_print ("In e_week_view_on_editing_started event_num:%i span_num:%i\n", event_num, span_num);
-#endif
-
- week_view->editing_event_num = event_num;
- week_view->editing_span_num = span_num;
-
- /* We need to reshape long events so the whole width is used while
- editing. */
- if (!e_week_view_is_one_day_event (week_view, event_num)) {
- e_week_view_reshape_event_span (week_view, event_num,
- span_num);
- }
-}
-
-
-static void
-e_week_view_on_editing_stopped (EWeekView *week_view,
- GnomeCanvasItem *item)
-{
- gint event_num, span_num;
- EWeekViewEvent *event;
- EWeekViewEventSpan *span;
- gchar *text = NULL;
- CalComponentText summary;
- const char *uid;
-
- /* Note: the item we are passed here isn't reliable, so we just stop
- the edit of whatever item was being edited. We also receive this
- event twice for some reason. */
- event_num = week_view->editing_event_num;
- span_num = week_view->editing_span_num;
-
- /* If no item is being edited, just return. */
- if (event_num == -1)
- return;
-
- event = &g_array_index (week_view->events, EWeekViewEvent, event_num);
- span = &g_array_index (week_view->spans, EWeekViewEventSpan,
- event->spans_index + span_num);
-
- /* Reset the edit fields. */
- week_view->editing_event_num = -1;
-
- /* Check that the event is still valid. */
- cal_component_get_uid (event->comp, &uid);
- if (!uid)
- return;
-
- gtk_object_get (GTK_OBJECT (span->text_item),
- "text", &text,
- NULL);
-
- /* Only update the summary if necessary. */
- cal_component_get_summary (event->comp, &summary);
- if (text && summary.value && !strcmp (text, summary.value)) {
- g_free (text);
- if (!e_week_view_is_one_day_event (week_view, event_num))
- e_week_view_reshape_event_span (week_view, event_num,
- span_num);
- return;
- }
-
- summary.value = text;
- cal_component_set_summary (event->comp, &summary);
- g_free (text);
-
- if (!cal_client_update_object (week_view->client, event->comp))
- g_message ("e_week_view_on_editing_stopped(): Could not update the object!");
-}
-
-
-static gboolean
-e_week_view_find_event_from_item (EWeekView *week_view,
- GnomeCanvasItem *item,
- gint *event_num_return,
- gint *span_num_return)
-{
- EWeekViewEvent *event;
- EWeekViewEventSpan *span;
- gint event_num, span_num, num_events;
-
- num_events = week_view->events->len;
- for (event_num = 0; event_num < num_events; event_num++) {
- event = &g_array_index (week_view->events, EWeekViewEvent,
- event_num);
- for (span_num = 0; span_num < event->num_spans; span_num++) {
- span = &g_array_index (week_view->spans,
- EWeekViewEventSpan,
- event->spans_index + span_num);
- if (span->text_item == item) {
- *event_num_return = event_num;
- *span_num_return = span_num;
- return TRUE;
- }
- }
- }
-
- return FALSE;
-}
-
-
-/* Finds the index of the event with the given uid.
- Returns TRUE if an event with the uid was found.
- Note that for recurring events there may be several EWeekViewEvents, one
- for each instance, all with the same iCalObject and uid. So only use this
- function if you know the event doesn't recur or you are just checking to
- see if any events with the uid exist. */
-static gboolean
-e_week_view_find_event_from_uid (EWeekView *week_view,
- const gchar *uid,
- gint *event_num_return)
-{
- EWeekViewEvent *event;
- gint event_num, num_events;
-
- num_events = week_view->events->len;
- for (event_num = 0; event_num < num_events; event_num++) {
- const char *u;
-
- event = &g_array_index (week_view->events, EWeekViewEvent,
- event_num);
-
- cal_component_get_uid (event->comp, &u);
- if (u && !strcmp (uid, u)) {
- *event_num_return = event_num;
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-
-gboolean
-e_week_view_is_one_day_event (EWeekView *week_view,
- gint event_num)
-{
- EWeekViewEvent *event;
- EWeekViewEventSpan *span;
-
- event = &g_array_index (week_view->events, EWeekViewEvent, event_num);
- if (event->num_spans != 1)
- return FALSE;
-
- span = &g_array_index (week_view->spans, EWeekViewEventSpan,
- event->spans_index);
-
- if (event->start == week_view->day_starts[span->start_day]
- && event->end == week_view->day_starts[span->start_day + 1])
- return FALSE;
-
- if (span->num_days == 1
- && event->start >= week_view->day_starts[span->start_day]
- && event->end <= week_view->day_starts[span->start_day + 1])
- return TRUE;
-
- return FALSE;
-}
-
-
-static gint
-e_week_view_key_press (GtkWidget *widget, GdkEventKey *event)
-{
- EWeekView *week_view;
- CalComponent *comp;
- gint event_num;
- gchar *initial_text;
- CalComponentDateTime date;
- struct icaltimetype itt;
- time_t dtstart, dtend;
- const char *uid;
-
- g_return_val_if_fail (widget != NULL, FALSE);
- g_return_val_if_fail (E_IS_WEEK_VIEW (widget), FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
- week_view = E_WEEK_VIEW (widget);
-
- /* The Escape key aborts a resize operation. */
-#if 0
- if (week_view->resize_drag_pos != E_WEEK_VIEW_POS_NONE) {
- if (event->keyval == GDK_Escape) {
- e_week_view_abort_resize (week_view, event->time);
- }
- return FALSE;
- }
-#endif
-
- if (week_view->selection_start_day == -1)
- return FALSE;
-
- /* We only want to start an edit with a return key or a simple
- character. */
- if (event->keyval == GDK_Return) {
- initial_text = NULL;
- } else if ((event->keyval < 0x20)
- || (event->keyval > 0xFF)
- || (event->length == 0)
- || (event->state & (GDK_CONTROL_MASK | GDK_MOD1_MASK))) {
- return FALSE;
- } else {
- initial_text = event->string;
- }
-
- /* Add a new event covering the selected range. */
- comp = cal_component_new ();
- cal_component_set_new_vtype (comp, CAL_COMPONENT_EVENT);
- dtstart = week_view->day_starts[week_view->selection_start_day];
- dtend = week_view->day_starts[week_view->selection_end_day + 1];
-
- date.value = &itt;
- date.tzid = NULL;
-
- *date.value = icaltime_from_timet (dtstart, FALSE);
- cal_component_set_dtstart (comp, &date);
- *date.value = icaltime_from_timet (dtend, FALSE);
- cal_component_set_dtend (comp, &date);
-
- /* We add the event locally and start editing it. We don't send the
- new event to the server until the edit is finished.
- FIXME: If we get an obj-updated or obj-removed signal while editing
- the event, and we have to do a re-layout, we may lose this new
- event. */
- e_week_view_add_event (comp, dtstart, dtend, week_view);
- e_week_view_check_layout (week_view);
- gtk_widget_queue_draw (week_view->main_canvas);
-
- cal_component_get_uid (comp, &uid);
- if (e_week_view_find_event_from_uid (week_view, uid, &event_num)) {
- e_week_view_start_editing_event (week_view, event_num, 0,
- initial_text);
- } else {
- g_warning ("Couldn't find event to start editing.\n");
- }
-
- gtk_object_unref (GTK_OBJECT (comp));
-
- return TRUE;
-}
-
-enum {
- /*
- * This is used to "flag" events that can not be editted
- */
- MASK_EDITABLE = 1,
-
- /*
- * To disable recurring actions to be displayed
- */
- MASK_RECURRING = 2,
-
- /*
- * To disable actions for non-recurring items to be displayed
- */
- MASK_SINGLE = 4,
-
- /*
- * This is used to when an event is currently being edited
- * in another window and we want to disable the event
- * from being edited twice
- */
- MASK_EDITING = 8
-};
-
-static EPopupMenu main_items [] = {
- { N_("New Appointment..."), NULL,
- e_week_view_on_new_appointment, NULL, 0 },
- { N_("New All Day Event"), NULL,
- e_week_view_on_new_event, NULL, 0 },
-
- { "", NULL, NULL, NULL, 0 },
-
- { N_("Go to Today"), NULL,
- e_week_view_on_goto_today, NULL, 0 },
- { N_("Go to Date..."), NULL,
- e_week_view_on_goto_date, NULL, 0 },
- { NULL, NULL, NULL, NULL, 0 }
-};
-
-static EPopupMenu child_items [] = {
- { N_("Open"), NULL,
- e_week_view_on_edit_appointment, NULL, MASK_EDITABLE | MASK_EDITING },
- { N_("Delete this Appointment"), NULL,
- e_week_view_on_delete_appointment, NULL, MASK_EDITABLE | MASK_SINGLE | MASK_EDITING },
- { N_("Schedule Meeting"), NULL,
- e_week_view_on_schedule_meet, NULL, MASK_EDITING },
- { "", NULL, NULL, NULL, 0},
-
- { N_("New Appointment..."), NULL,
- e_week_view_on_new_appointment, NULL, 0 },
-
- { "", NULL, NULL, NULL, MASK_SINGLE },
-
- /*
- * The following are only shown if this is a recurring event
- */
- { "", NULL, NULL, NULL, MASK_SINGLE},
- { N_("Make this Occurrence Movable"), NULL,
- e_week_view_on_unrecur_appointment, NULL, MASK_RECURRING | MASK_EDITING },
- { N_("Delete this Occurrence"), NULL,
- e_week_view_on_delete_occurrence, NULL, MASK_RECURRING | MASK_EDITING },
- { N_("Delete All Occurrences"), NULL,
- e_week_view_on_delete_appointment, NULL, MASK_RECURRING | MASK_EDITING },
-
- { NULL, NULL, NULL, NULL, 0 }
-};
-
-void
-e_week_view_show_popup_menu (EWeekView *week_view,
- GdkEventButton *bevent,
- gint event_num)
-{
- EWeekViewEvent *event;
- int have_selection;
- gboolean being_edited;
- guint32 disable_mask = 0, hide_mask = 0;
- EPopupMenu *context_menu;
-
- have_selection = GTK_WIDGET_HAS_FOCUS (week_view)
- && week_view->selection_start_day != -1;
-
- /*
- * This used to be set only if the event wasn't being edited
- * in the event editor, but we can't check that at present.
- * We could possibly set up another method of checking it.
- */
- being_edited = FALSE;
-
- if (event_num == -1) {
- context_menu = main_items;
- } else {
- context_menu = child_items;
- event = &g_array_index (week_view->events,
- EWeekViewEvent, event_num);
- if (cal_component_has_recurrences (event->comp))
- hide_mask |= MASK_SINGLE;
- else
- hide_mask |= MASK_RECURRING;
- }
-
- if (being_edited)
- disable_mask |= MASK_EDITING;
- week_view->popup_event_num = event_num;
-
- e_popup_menu_run (context_menu, (GdkEvent *) bevent, disable_mask, hide_mask, week_view);
-}
-
-static void
-e_week_view_on_new_appointment (GtkWidget *widget, gpointer data)
-{
- EWeekView *week_view = E_WEEK_VIEW (data);
- time_t dtstart, dtend;
-
- dtstart = week_view->day_starts[week_view->selection_start_day];
- dtend = week_view->day_starts[week_view->selection_end_day + 1];
- gnome_calendar_new_appointment_for (
- week_view->calendar, dtstart, dtend, FALSE);
-}
-
-static void
-e_week_view_on_new_event (GtkWidget *widget, gpointer data)
-{
- EWeekView *week_view = E_WEEK_VIEW (data);
- time_t dtstart, dtend;
-
- dtstart = week_view->day_starts[week_view->selection_start_day];
- dtend = week_view->day_starts[week_view->selection_end_day + 1];
- gnome_calendar_new_appointment_for (
- week_view->calendar, dtstart, dtend, TRUE);
-}
-
-static void
-e_week_view_on_goto_date (GtkWidget *widget, gpointer data)
-{
- EWeekView *week_view = E_WEEK_VIEW (data);
-
- goto_dialog (week_view->calendar);
-}
-
-static void
-e_week_view_on_goto_today (GtkWidget *widget, gpointer data)
-{
- EWeekView *week_view = E_WEEK_VIEW (data);
-
- calendar_goto_today (week_view->calendar);
-}
-
-static void
-e_week_view_on_edit_appointment (GtkWidget *widget, gpointer data)
-{
- EWeekView *week_view;
- EWeekViewEvent *event;
-
- week_view = E_WEEK_VIEW (data);
-
- if (week_view->popup_event_num == -1)
- return;
-
- event = &g_array_index (week_view->events, EWeekViewEvent,
- week_view->popup_event_num);
-
- if (week_view->calendar)
- gnome_calendar_edit_object (week_view->calendar, event->comp);
- else
- g_warning ("Calendar not set");
-}
-
-
-static void
-e_week_view_on_delete_occurrence (GtkWidget *widget, gpointer data)
-{
- EWeekView *week_view;
- EWeekViewEvent *event;
- CalComponent *comp;
-
- week_view = E_WEEK_VIEW (data);
-
- if (week_view->popup_event_num == -1)
- return;
-
- event = &g_array_index (week_view->events, EWeekViewEvent,
- week_view->popup_event_num);
-
- /* We must duplicate the CalComponent, or we won't know it has changed
- when we get the "update_event" callback. */
-
- comp = cal_component_clone (event->comp);
- cal_comp_util_add_exdate (comp, icaltime_from_timet (event->start, TRUE));
-
- if (!cal_client_update_object (week_view->client, comp))
- g_message ("e_week_view_on_delete_occurrence(): Could not update the object!");
-
- gtk_object_unref (GTK_OBJECT (comp));
-}
-
-
-static void
-e_week_view_on_delete_appointment (GtkWidget *widget, gpointer data)
-{
- EWeekView *week_view;
- EWeekViewEvent *event;
- CalComponentVType vtype;
-
- week_view = E_WEEK_VIEW (data);
-
- if (week_view->popup_event_num == -1)
- return;
-
- event = &g_array_index (week_view->events, EWeekViewEvent,
- week_view->popup_event_num);
-
- vtype = cal_component_get_vtype (event->comp);
-
- if (delete_component_dialog (event->comp, 1, vtype, widget)) {
- const char *uid;
-
- cal_component_get_uid (event->comp, &uid);
-
- /* We don't check the return value; FALSE can mean the object
- * was not in the server anyways.
- */
- cal_client_remove_object (week_view->client, uid);
- }
-}
-
-static void
-e_week_view_on_schedule_meet (GtkWidget *widget, gpointer data)
-{
- EWeekView *week_view;
- EWeekViewEvent *event;
- EMeetingEditor *editor;
-
- week_view = E_WEEK_VIEW (data);
-
- if (week_view->popup_event_num == -1)
- return;
-
- event = &g_array_index (week_view->events, EWeekViewEvent,
- week_view->popup_event_num);
-
- editor = e_meeting_editor_new (event->comp, week_view->client);
-
- e_meeting_edit (editor);
- e_meeting_editor_free (editor);
-}
-
-static void
-e_week_view_on_unrecur_appointment (GtkWidget *widget, gpointer data)
-{
- EWeekView *week_view;
- EWeekViewEvent *event;
- CalComponent *comp, *new_comp;
- CalComponentDateTime date;
- struct icaltimetype itt;
-
- week_view = E_WEEK_VIEW (data);
-
- if (week_view->popup_event_num == -1)
- return;
-
- event = &g_array_index (week_view->events, EWeekViewEvent,
- week_view->popup_event_num);
-
- /* For the recurring object, we add a exception to get rid of the
- instance. */
- comp = cal_component_clone (event->comp);
- cal_comp_util_add_exdate (comp, icaltime_from_timet (event->start, TRUE));
-
- /* For the unrecurred instance we duplicate the original object,
- create a new uid for it, get rid of the recurrence rules, and set
- the start & end times to the instances times. */
- new_comp = cal_component_clone (event->comp);
- cal_component_set_uid (new_comp, cal_component_gen_uid ());
- cal_component_set_rdate_list (new_comp, NULL);
- cal_component_set_rrule_list (new_comp, NULL);
- cal_component_set_exdate_list (new_comp, NULL);
- cal_component_set_exrule_list (new_comp, NULL);
-
- date.value = &itt;
- date.tzid = NULL;
-
- *date.value = icaltime_from_timet (event->start, TRUE);
- cal_component_set_dtstart (new_comp, &date);
- *date.value = icaltime_from_timet (event->end, TRUE);
- cal_component_set_dtend (new_comp, &date);
-
- /* Now update both CalComponents. Note that we do this last since at
- present the updates happen synchronously so our event may disappear.
- */
- if (!cal_client_update_object (week_view->client, comp))
- g_message ("e_week_view_on_unrecur_appointment(): Could not update the object!");
-
- gtk_object_unref (GTK_OBJECT (comp));
-
- if (!cal_client_update_object (week_view->client, new_comp))
- g_message ("e_week_view_on_unrecur_appointment(): Could not update the object!");
-
- gtk_object_unref (GTK_OBJECT (new_comp));
-}
-
-
-static gboolean
-e_week_view_on_jump_button_event (GnomeCanvasItem *item,
- GdkEvent *event,
- EWeekView *week_view)
-{
- gint day;
-
- if (event->type == GDK_BUTTON_PRESS) {
- for (day = 0; day < E_WEEK_VIEW_MAX_WEEKS * 7; day++) {
- if (item == week_view->jump_buttons[day]) {
- if (week_view->calendar)
- gnome_calendar_dayjump
- (week_view->calendar,
- week_view->day_starts[day]);
- else
- g_warning ("Calendar not set");
- return TRUE;
- }
- }
-
- }
-
- return FALSE;
-}
-
-
-/* Converts an hour from 0-23 to the preferred time format, and returns the
- suffix to add and the width of it in the normal font. */
-void
-e_week_view_convert_time_to_display (EWeekView *week_view,
- gint hour,
- gint *display_hour,
- gchar **suffix,
- gint *suffix_width)
-{
- /* Calculate the actual hour number to display. For 12-hour
- format we convert 0-23 to 12-11am/12-11pm. */
- *display_hour = hour;
- if (week_view->use_24_hour_format) {
- *suffix = "";
- *suffix_width = 0;
- } else {
- if (hour < 12) {
- *suffix = week_view->am_string;
- *suffix_width = week_view->am_string_width;
- } else {
- *display_hour -= 12;
- *suffix = week_view->pm_string;
- *suffix_width = week_view->pm_string_width;
- }
-
- /* 12-hour uses 12:00 rather than 0:00. */
- if (*display_hour == 0)
- *display_hour = 12;
- }
-}
-
-
-gint
-e_week_view_get_time_string_width (EWeekView *week_view)
-{
- gint time_width;
-
- if (week_view->use_small_font && week_view->small_font)
- time_width = week_view->digit_width * 2
- + week_view->small_digit_width * 2;
- else
- time_width = week_view->digit_width * 4
- + week_view->colon_width;
-
- if (!week_view->use_24_hour_format)
- time_width += MAX (week_view->am_string_width,
- week_view->pm_string_width);
-
- return time_width;
-}
diff --git a/calendar/gui/e-week-view.h b/calendar/gui/e-week-view.h
deleted file mode 100644
index 6717da9ea3..0000000000
--- a/calendar/gui/e-week-view.h
+++ /dev/null
@@ -1,452 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 1999, Helix Code, Inc.
- * Copyright 2001, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-#ifndef _E_WEEK_VIEW_H_
-#define _E_WEEK_VIEW_H_
-
-#include <gtk/gtktable.h>
-#include <libgnomeui/gnome-canvas.h>
-
-#include "gnome-cal.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/*
- * EWeekView - displays the Week & Month views of the calendar.
- */
-
-/* The maximum number of weeks we show. 5 is usually enough for 1 month,
- but we allow 6 for longer selections. */
-#define E_WEEK_VIEW_MAX_WEEKS 6
-
-/* The size of the reminder & recurrence icons, and padding around them.
- X_PAD is the padding between icons. R_PAD is the padding on the right of
- the last icon, before the event text. */
-#define E_WEEK_VIEW_ICON_WIDTH 16
-#define E_WEEK_VIEW_ICON_HEIGHT 16
-#define E_WEEK_VIEW_ICON_X_PAD 0
-#define E_WEEK_VIEW_ICON_Y_PAD 0
-#define E_WEEK_VIEW_ICON_R_PAD 2
-
-/* The space on the left & right outside of the event. (The triangle to
- indicate the event continues is displayed in this space). */
-#define E_WEEK_VIEW_EVENT_L_PAD 2
-#define E_WEEK_VIEW_EVENT_R_PAD 2
-
-/* The vertical spacing between rows of events. */
-#define E_WEEK_VIEW_EVENT_Y_SPACING 1
-
-/* The size of the border around long events. */
-#define E_WEEK_VIEW_EVENT_BORDER_WIDTH 1
-#define E_WEEK_VIEW_EVENT_BORDER_HEIGHT 1
-
-/* The padding on the top and bottom of the event text. */
-#define E_WEEK_VIEW_EVENT_TEXT_Y_PAD 1
-
-/* The space between the start and end times. */
-#define E_WEEK_VIEW_EVENT_TIME_SPACING 2
-
-/* The space between the time and the event text or icons. */
-#define E_WEEK_VIEW_EVENT_TIME_X_PAD 2
-
-/* The space between the borders of long events and any text of icons. */
-#define E_WEEK_VIEW_EVENT_EDGE_X_PAD 2
-
-/* The padding above and on the right of the date string at the top of each
- cell. */
-#define E_WEEK_VIEW_DATE_T_PAD 2
-#define E_WEEK_VIEW_DATE_R_PAD 4
-
-/* The padding above and below the line under the date string, in the Week
- view, and also the space on the left of it. */
-#define E_WEEK_VIEW_DATE_LINE_T_PAD 1
-#define E_WEEK_VIEW_DATE_LINE_B_PAD 1
-#define E_WEEK_VIEW_DATE_LINE_L_PAD 10
-
-/* The padding below the date string in the Month view. */
-#define E_WEEK_VIEW_DATE_B_PAD 1
-
-/* These index our colors array. */
-typedef enum
-{
- E_WEEK_VIEW_COLOR_EVEN_MONTHS,
- E_WEEK_VIEW_COLOR_ODD_MONTHS,
- E_WEEK_VIEW_COLOR_EVENT_BACKGROUND,
- E_WEEK_VIEW_COLOR_EVENT_BORDER,
- E_WEEK_VIEW_COLOR_EVENT_TEXT,
- E_WEEK_VIEW_COLOR_GRID,
- E_WEEK_VIEW_COLOR_SELECTED,
- E_WEEK_VIEW_COLOR_DATES,
- E_WEEK_VIEW_COLOR_DATES_SELECTED,
-
- E_WEEK_VIEW_COLOR_LAST
-} EWeekViewColors;
-
-/* These specify which part of the selection we are dragging, if any. */
-typedef enum
-{
- E_WEEK_VIEW_DRAG_NONE,
- E_WEEK_VIEW_DRAG_START,
- E_WEEK_VIEW_DRAG_END
-} EWeekViewDragPosition;
-
-/* These specify which times are shown for the 1-day events. We use the small
- font for the minutes if it can be loaded and the option is on. */
-typedef enum
-{
- E_WEEK_VIEW_TIME_NONE,
- E_WEEK_VIEW_TIME_START,
- E_WEEK_VIEW_TIME_BOTH,
- E_WEEK_VIEW_TIME_START_SMALL_MIN,
- E_WEEK_VIEW_TIME_BOTH_SMALL_MIN
-} EWeekViewTimeFormat;
-
-/* Specifies the position of the mouse. */
-typedef enum
-{
- E_WEEK_VIEW_POS_OUTSIDE,
- E_WEEK_VIEW_POS_NONE,
- E_WEEK_VIEW_POS_EVENT,
- E_WEEK_VIEW_POS_LEFT_EDGE,
- E_WEEK_VIEW_POS_RIGHT_EDGE
-} EWeekViewPosition;
-
-
-typedef struct _EWeekViewEventSpan EWeekViewEventSpan;
-struct _EWeekViewEventSpan {
- guint start_day : 6;
- guint num_days : 3;
- guint row : 7;
- GnomeCanvasItem *background_item;
- GnomeCanvasItem *text_item;
-};
-
-typedef struct _EWeekViewEvent EWeekViewEvent;
-struct _EWeekViewEvent {
- CalComponent *comp;
- time_t start;
- time_t end;
- guint16 start_minute; /* Minutes from the start of the day. */
- guint16 end_minute;
- gint spans_index;
- guint num_spans;
-};
-
-
-#define E_WEEK_VIEW(obj) GTK_CHECK_CAST (obj, e_week_view_get_type (), EWeekView)
-#define E_WEEK_VIEW_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, e_week_view_get_type (), EWeekViewClass)
-#define E_IS_WEEK_VIEW(obj) GTK_CHECK_TYPE (obj, e_week_view_get_type ())
-
-
-typedef struct _EWeekView EWeekView;
-typedef struct _EWeekViewClass EWeekViewClass;
-
-struct _EWeekView
-{
- GtkTable table;
-
- /* The top canvas where the dates are shown. */
- GtkWidget *titles_canvas;
- GnomeCanvasItem *titles_canvas_item;
-
- /* The main canvas where the appointments are shown. */
- GtkWidget *main_canvas;
- GnomeCanvasItem *main_canvas_item;
-
- GnomeCanvasItem *jump_buttons[E_WEEK_VIEW_MAX_WEEKS * 7];
-
- GtkWidget *vscrollbar;
-
- /* The calendar we are associated with. */
- GnomeCalendar *calendar;
-
- /* Calendar client object we are monitoring */
- CalClient *client;
-
- /* S-expression for query and the query object */
- char *sexp;
- CalQuery *query;
-
- /* The array of EWeekViewEvent elements. */
- GArray *events;
- gboolean events_sorted;
- gboolean events_need_layout;
- gboolean events_need_reshape;
-
- /* An array of EWeekViewEventSpan elements. Each event has its own
- space within this array, and uses the spans_index and num_spans
- fields of the EWeekViewEvent struct to access it. */
- GArray *spans;
-
- /* The start of each day displayed. */
- time_t day_starts[E_WEEK_VIEW_MAX_WEEKS * 7 + 1];
-
- /* The base date, where the adjustment value is 0. */
- GDate base_date;
-
- /* The first day shown in the view. */
- GDate first_day_shown;
-
- /* If we are displaying multiple weeks in rows. If this is FALSE only
- one week is shown, with a different layout. */
- gboolean multi_week_view;
-
- /* How many weeks we are showing. This is only relevant if
- display_month is TRUE. */
- gint weeks_shown;
-
- /* If Sat & Sun are compressed. Only applicable in month view, since
- they are always compressed into 1 cell in the week view. */
- gboolean compress_weekend;
-
- /* Whether we use show event end times. */
- gboolean show_event_end_times;
-
- /* The first day of the week, 0 (Monday) to 6 (Sunday). */
- gint week_start_day;
-
- /* Whether we use 12-hour of 24-hour format. */
- gboolean use_24_hour_format;
-
- /* The first day of the week we display, 0 (Monday) to 6 (Sunday).
- This will usually be week_start_day, but if the weekend is
- compressed, and week_start_day is Sunday we have to use Saturday. */
- gint display_start_day;
-
- /* The vertical offset of the events from the top of the cells. */
- gint events_y_offset;
-
- /* The height of the events, not including spacing between them. */
- gint row_height;
-
- /* The number of rows of events in each cell. */
- gint rows_per_cell;
- gint rows_per_compressed_cell;
-
- /* The number of rows we have used for each day (i.e. each cell) */
- gint rows_per_day[E_WEEK_VIEW_MAX_WEEKS * 7];
-
- /* If the small font is used for displaying the minutes. */
- gboolean use_small_font;
-
- /* Small font to display the minutes. */
- GdkFont *small_font;
-
- /* The widths of various pieces of text, used to determine which of
- several date formats to display, set in e_week_view_style_set(). */
- gint space_width; /* One space character ' '. */
- gint colon_width; /* Size of ':' in the font. */
- gint slash_width; /* Size of '/' in the font. */
- gint digit_width; /* Size of a '0' digit. */
- gint small_digit_width; /* Size of a small_font '0' digit. */
- gint day_widths[7]; /* Monday first. */
- gint max_day_width;
- gint abbr_day_widths[7];
- gint max_abbr_day_width;
- gint month_widths[12];
- gint max_month_width;
- gint abbr_month_widths[12];
- gint max_abbr_month_width;
-
- /* The size of the main grid of days and of the cells. A row
- corresponds to a compressed day, so normal days usually take
- up 2 rows. Note that the offsets arrays have one more element
- than the widths/heights arrays since they also contain the
- right/bottom edge. */
- gint rows;
- gint columns;
- gint col_widths[7];
- gint col_offsets[8];
- gint row_heights[E_WEEK_VIEW_MAX_WEEKS * 2];
- gint row_offsets[E_WEEK_VIEW_MAX_WEEKS * 2 + 1];
-
- /* This specifies which times we are showing for the events, depending
- on how much room is available. */
- EWeekViewTimeFormat time_format;
-
- /* The GC used for painting in different colors. */
- GdkGC *main_gc;
-
- /* The icons. */
- GdkPixmap *reminder_icon;
- GdkBitmap *reminder_mask;
- GdkPixmap *recurrence_icon;
- GdkBitmap *recurrence_mask;
-
- /* Colors for drawing. */
- GdkColor colors[E_WEEK_VIEW_COLOR_LAST];
-
- /* The normal & resizing cursors. */
- GdkCursor *normal_cursor;
- GdkCursor *move_cursor;
- GdkCursor *resize_width_cursor;
-
- /* This remembers the last cursor set on the window. */
- GdkCursor *last_cursor_set;
-
- /* The currently selected region, in days from the first day shown.
- If selection_start_day is -1 there is no current selection. */
- gint selection_start_day;
- gint selection_end_day;
-
- /* This specifies which end of the selection is being dragged, or is
- E_WEEK_VIEW_DRAG_NONE if the selection isn't being dragged. */
- EWeekViewDragPosition selection_drag_pos;
-
- /* This is the event the mouse button was pressed on. If the button
- is released we start editing it, but if the mouse is dragged we set
- this to -1. */
- gint pressed_event_num;
- gint pressed_span_num;
-
- /* The event span currently being edited. The num is -1 if no event is
- being edited. */
- gint editing_event_num;
- gint editing_span_num;
-
- /* The event that the context menu is for. */
- gint popup_event_num;
-
- /* The last mouse position when dragging, in the entire canvas. */
- gint drag_event_x;
- gint drag_event_y;
-
- /* "am" and "pm" in the current locale, and their widths. */
- gchar *am_string;
- gchar *pm_string;
- gint am_string_width;
- gint pm_string_width;
-};
-
-struct _EWeekViewClass
-{
- GtkTableClass parent_class;
-};
-
-
-GtkType e_week_view_get_type (void);
-GtkWidget* e_week_view_new (void);
-
-void e_week_view_set_calendar (EWeekView *week_view,
- GnomeCalendar *calendar);
-
-/* The first day shown. Note that it will be rounded down to the start of a
- week when set. The returned value will be invalid if no date has been set
- yet. */
-void e_week_view_get_first_day_shown (EWeekView *week_view,
- GDate *date);
-void e_week_view_set_first_day_shown (EWeekView *week_view,
- GDate *date);
-
-void e_week_view_set_cal_client (EWeekView *week_view,
- CalClient *client);
-
-void e_week_view_set_query (EWeekView *week_view,
- const char *sexp);
-
-/* The selected time range. The EWeekView will show the corresponding
- month and the days between start_time and end_time will be selected.
- To select a single day, use the same value for start_time & end_time. */
-void e_week_view_get_selected_time_range (EWeekView *week_view,
- time_t *start_time,
- time_t *end_time);
-void e_week_view_set_selected_time_range (EWeekView *week_view,
- time_t start_time,
- time_t end_time);
-
-
-/* Whether to display 1 week or 1 month (5 weeks). It defaults to 1 week. */
-gboolean e_week_view_get_multi_week_view (EWeekView *week_view);
-void e_week_view_set_multi_week_view (EWeekView *week_view,
- gboolean multi_week_view);
-
-/* The number of weeks shown in the multi-week view. */
-gint e_week_view_get_weeks_shown (EWeekView *week_view);
-void e_week_view_set_weeks_shown (EWeekView *week_view,
- gint weeks_shown);
-
-/* Whether the weekend (Sat/Sun) should be compressed into 1 cell in the Month
- view. In the Week view they are always compressed. */
-gboolean e_week_view_get_compress_weekend (EWeekView *week_view);
-void e_week_view_set_compress_weekend (EWeekView *week_view,
- gboolean compress);
-
-/* Whether we display event end times. */
-gboolean e_week_view_get_show_event_end_times (EWeekView *week_view);
-void e_week_view_set_show_event_end_times (EWeekView *week_view,
- gboolean show);
-
-/* The first day of the week, 0 (Monday) to 6 (Sunday). */
-gint e_week_view_get_week_start_day (EWeekView *week_view);
-void e_week_view_set_week_start_day (EWeekView *week_view,
- gint week_start_day);
-
-/* Whether we use 12-hour or 24-hour format. */
-gboolean e_week_view_get_24_hour_format (EWeekView *week_view);
-void e_week_view_set_24_hour_format (EWeekView *week_view,
- gboolean use_24_hour);
-
-
-
-/*
- * Internal functions called by the associated canvas items.
- */
-void e_week_view_get_day_position (EWeekView *week_view,
- gint day,
- gint *day_x,
- gint *day_y,
- gint *day_w,
- gint *day_h);
-gboolean e_week_view_get_span_position (EWeekView *week_view,
- gint event_num,
- gint span_num,
- gint *span_x,
- gint *span_y,
- gint *span_w);
-gboolean e_week_view_is_one_day_event (EWeekView *week_view,
- gint event_num);
-void e_week_view_start_editing_event (EWeekView *week_view,
- gint event_num,
- gint span_num,
- gchar *initial_text);
-void e_week_view_stop_editing_event (EWeekView *week_view);
-
-void e_week_view_show_popup_menu (EWeekView *week_view,
- GdkEventButton *event,
- gint event_num);
-
-void e_week_view_convert_time_to_display (EWeekView *week_view,
- gint hour,
- gint *display_hour,
- gchar **suffix,
- gint *suffix_width);
-gint e_week_view_get_time_string_width (EWeekView *week_view);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_WEEK_VIEW_H_ */
diff --git a/calendar/gui/event-editor-dialog.glade b/calendar/gui/event-editor-dialog.glade
deleted file mode 100644
index 615bd3eed3..0000000000
--- a/calendar/gui/event-editor-dialog.glade
+++ /dev/null
@@ -1,1408 +0,0 @@
-<?xml version="1.0"?>
-<GTK-Interface>
-
-<project>
- <name>event-editor-dialog</name>
- <program_name>event-editor-dialog</program_name>
- <directory></directory>
- <source_directory>.</source_directory>
- <pixmaps_directory>pixmaps</pixmaps_directory>
- <language>C</language>
- <gnome_support>True</gnome_support>
- <gettext_support>True</gettext_support>
- <output_main_file>False</output_main_file>
- <output_support_files>False</output_support_files>
- <output_build_files>False</output_build_files>
-</project>
-
-<widget>
- <class>GnomePropertyBox</class>
- <name>event-editor-dialog</name>
- <visible>False</visible>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>False</allow_grow>
- <auto_shrink>False</auto_shrink>
-
- <widget>
- <class>GtkNotebook</class>
- <child_name>GnomeDock:contents</child_name>
- <name>notebook1</name>
- <border_width>2</border_width>
- <can_focus>True</can_focus>
- <show_tabs>True</show_tabs>
- <show_border>True</show_border>
- <tab_pos>GTK_POS_TOP</tab_pos>
- <scrollable>False</scrollable>
- <tab_hborder>2</tab_hborder>
- <tab_vborder>2</tab_vborder>
- <popup_enable>False</popup_enable>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox51</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>6</spacing>
-
- <widget>
- <class>GtkTable</class>
- <name>table11</name>
- <rows>1</rows>
- <columns>2</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>4</row_spacing>
- <column_spacing>4</column_spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label56</name>
- <label>Su_mmary:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>7.45058e-09</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <default_focus_target>general-summary</default_focus_target>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>general-summary</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame31</name>
- <label>Date &amp; Time</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkTable</class>
- <name>table12</name>
- <border_width>4</border_width>
- <rows>2</rows>
- <columns>3</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>4</row_spacing>
- <column_spacing>4</column_spacing>
-
- <widget>
- <class>GtkLabel</class>
- <name>label57</name>
- <label>_Start time:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label58</name>
- <label>_End time:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>all-day-event</name>
- <can_focus>True</can_focus>
- <label>A_ll day event</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <left_attach>2</left_attach>
- <right_attach>3</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>Custom</class>
- <name>start-time</name>
- <creation_function>make_date_edit</creation_function>
- <string1></string1>
- <string2></string2>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Tue, 16 May 2000 19:11:05 GMT</last_modification_time>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>True</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>False</xfill>
- <yfill>True</yfill>
- </child>
- </widget>
-
- <widget>
- <class>Custom</class>
- <name>end-time</name>
- <creation_function>make_date_edit</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Tue, 16 May 2000 19:11:10 GMT</last_modification_time>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>True</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>False</xfill>
- <yfill>True</yfill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow12</name>
- <hscrollbar_policy>GTK_POLICY_NEVER</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkText</class>
- <name>description</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text></text>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame32</name>
- <label>Classification</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox52</name>
- <border_width>2</border_width>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>classification-public</name>
- <can_focus>True</can_focus>
- <label>Pu_blic</label>
- <active>True</active>
- <draw_indicator>True</draw_indicator>
- <group>classification_radio_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>classification-private</name>
- <can_focus>True</can_focus>
- <label>Pri_vate</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>classification_radio_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>classification-confidential</name>
- <can_focus>True</can_focus>
- <label>_Confidential</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>classification_radio_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox53</name>
- <homogeneous>False</homogeneous>
- <spacing>2</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>contacts-button</name>
- <can_focus>True</can_focus>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label59</name>
- <label>_Contacts...</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>4</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>contacts</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>categories-button</name>
- <can_focus>True</can_focus>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label60</name>
- <label>Ca_tegories...</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>4</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>categories</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>Notebook:tab</child_name>
- <name>label61</name>
- <label>Appointment</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox52</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame33</name>
- <label>Appointment Basics</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkTable</class>
- <name>table13</name>
- <border_width>4</border_width>
- <rows>2</rows>
- <columns>2</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>2</row_spacing>
- <column_spacing>2</column_spacing>
-
- <widget>
- <class>GtkLabel</class>
- <name>label62</name>
- <label>Su_mmary:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <default_focus_target>reminder-summary</default_focus_target>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label63</name>
- <label>_Starting date:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>reminder-summary</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>True</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkAlignment</class>
- <name>reminder-starting-data</name>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xscale>0</xscale>
- <yscale>0</yscale>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>Custom</class>
- <name>reminder-starting-date</name>
- <creation_function>make_date_edit</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Fri, 22 Sep 2000 20:51:38 GMT</last_modification_time>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame34</name>
- <label>Reminders</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox53</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox54</name>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkOptionMenu</class>
- <name>reminder-action</name>
- <can_focus>True</can_focus>
- <items>Show a dialog
-Play a sound
-Send an email
-Run a program
-</items>
- <initial_choice>0</initial_choice>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkSpinButton</class>
- <name>reminder-interval-value</name>
- <can_focus>True</can_focus>
- <climb_rate>1</climb_rate>
- <digits>0</digits>
- <numeric>True</numeric>
- <update_policy>GTK_UPDATE_ALWAYS</update_policy>
- <snap>False</snap>
- <wrap>False</wrap>
- <value>1</value>
- <lower>0</lower>
- <upper>100</upper>
- <step>1</step>
- <page>10</page>
- <page_size>10</page_size>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkOptionMenu</class>
- <name>reminder-value-units</name>
- <can_focus>True</can_focus>
- <items>minute(s)
-hour(s)
-day(s)
-</items>
- <initial_choice>0</initial_choice>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkOptionMenu</class>
- <name>reminder-relative</name>
- <can_focus>True</can_focus>
- <items>before
-after
-</items>
- <initial_choice>0</initial_choice>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkOptionMenu</class>
- <name>reminder-time</name>
- <can_focus>True</can_focus>
- <items>start of appointment
-end of appointment
-</items>
- <initial_choice>0</initial_choice>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button9</name>
- <can_focus>True</can_focus>
- <label>Settings...</label>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox55</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow13</name>
- <hscrollbar_policy>GTK_POLICY_NEVER</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkCList</class>
- <name>reminder-list</name>
- <can_focus>True</can_focus>
- <columns>1</columns>
- <column_widths>80</column_widths>
- <selection_mode>GTK_SELECTION_BROWSE</selection_mode>
- <show_titles>False</show_titles>
- <shadow_type>GTK_SHADOW_IN</shadow_type>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>CList:title</child_name>
- <name>label64</name>
- <label>label55</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVButtonBox</class>
- <name>vbuttonbox2</name>
- <layout_style>GTK_BUTTONBOX_START</layout_style>
- <spacing>10</spacing>
- <child_min_width>85</child_min_width>
- <child_min_height>27</child_min_height>
- <child_ipad_x>7</child_ipad_x>
- <child_ipad_y>0</child_ipad_y>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>reminder-add</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <label>Add</label>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>reminder-delete</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <label>Delete</label>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>Notebook:tab</child_name>
- <name>label65</name>
- <label>Reminder</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox54</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame35</name>
- <label>Appointment Basics</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkTable</class>
- <name>table14</name>
- <border_width>4</border_width>
- <rows>2</rows>
- <columns>2</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>2</row_spacing>
- <column_spacing>2</column_spacing>
-
- <widget>
- <class>GtkLabel</class>
- <name>label66</name>
- <label>Su_mmary:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <default_focus_target>recurrence-summary</default_focus_target>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label67</name>
- <label>_Starting date:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>recurrence-summary</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>True</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkAlignment</class>
- <name>alignment40</name>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xscale>0</xscale>
- <yscale>0</yscale>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>Custom</class>
- <name>recurrence-starting-date</name>
- <creation_function>make_date_edit</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Fri, 22 Sep 2000 20:51:38 GMT</last_modification_time>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox55</name>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame36</name>
- <label>Recurrence Rule</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox56</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox56</name>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>recurrence-none</name>
- <can_focus>True</can_focus>
- <label>No recurrence</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>recurrence-radio</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>recurrence-simple</name>
- <can_focus>True</can_focus>
- <label>Simple recurrence</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>recurrence-radio</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>recurrence-custom</name>
- <can_focus>True</can_focus>
- <label>Custom recurrence</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>recurrence-radio</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox57</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>recurrence-params</name>
- <homogeneous>False</homogeneous>
- <spacing>2</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label68</name>
- <label>Every</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkSpinButton</class>
- <name>recurrence-interval-value</name>
- <can_focus>True</can_focus>
- <climb_rate>1</climb_rate>
- <digits>0</digits>
- <numeric>True</numeric>
- <update_policy>GTK_UPDATE_ALWAYS</update_policy>
- <snap>False</snap>
- <wrap>False</wrap>
- <value>1</value>
- <lower>1</lower>
- <upper>10000</upper>
- <step>1</step>
- <page>10</page>
- <page_size>10</page_size>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkOptionMenu</class>
- <name>recurrence-interval-unit</name>
- <can_focus>True</can_focus>
- <items>day(s)
-week(s)
-month(s)
-year(s)
-</items>
- <initial_choice>0</initial_choice>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkAlignment</class>
- <name>recurrence-special</name>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xscale>0</xscale>
- <yscale>0</yscale>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>Placeholder</class>
- </widget>
- </widget>
-
- <widget>
- <class>GtkOptionMenu</class>
- <name>recurrence-ending-menu</name>
- <can_focus>True</can_focus>
- <items>for
-until
-forever
-</items>
- <initial_choice>0</initial_choice>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkAlignment</class>
- <name>recurrence-ending-special</name>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xscale>0</xscale>
- <yscale>0</yscale>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>Placeholder</class>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkAlignment</class>
- <name>recurrence-custom-warning-bin</name>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xscale>1</xscale>
- <yscale>1</yscale>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>Placeholder</class>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox59</name>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame37</name>
- <label>Exceptions</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox60</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox57</name>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>recurrence-exception-add</name>
- <can_focus>True</can_focus>
- <label>Add</label>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>recurrence-exception-modify</name>
- <can_focus>True</can_focus>
- <label>Modify</label>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>recurrence-exception-delete</name>
- <can_focus>True</can_focus>
- <label>Delete</label>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox58</name>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>Custom</class>
- <name>recurrence-exception-date</name>
- <creation_function>make_date_edit</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Tue, 16 May 2000 01:42:29 GMT</last_modification_time>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow14</name>
- <hscrollbar_policy>GTK_POLICY_NEVER</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkCList</class>
- <name>recurrence-exception-list</name>
- <can_focus>True</can_focus>
- <columns>1</columns>
- <column_widths>80</column_widths>
- <selection_mode>GTK_SELECTION_BROWSE</selection_mode>
- <show_titles>False</show_titles>
- <shadow_type>GTK_SHADOW_IN</shadow_type>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>CList:title</child_name>
- <name>label69</name>
- <label>label21</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox59</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label70</name>
- <label>Preview</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkAlignment</class>
- <name>recurrence-preview-bin</name>
- <xalign>0</xalign>
- <yalign>0</yalign>
- <xscale>1</xscale>
- <yscale>1</yscale>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>Placeholder</class>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>Notebook:tab</child_name>
- <name>label71</name>
- <label>Recurrence</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
-</widget>
-
-</GTK-Interface>
diff --git a/calendar/gui/event-editor.c b/calendar/gui/event-editor.c
deleted file mode 100644
index c96c94dadd..0000000000
--- a/calendar/gui/event-editor.c
+++ /dev/null
@@ -1,3377 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/* Evolution calendar - Event editor dialog
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Miguel de Icaza <miguel@ximian.com>
- * Federico Mena-Quintero <federico@ximian.com>
- * Seth Alves <alves@hungry.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <string.h>
-#include <glade/glade.h>
-#include <gal/widgets/e-unicode.h>
-#include <gal/widgets/e-categories.h>
-#include <libgnomeui/gnome-propertybox.h>
-#include <libgnome/gnome-i18n.h>
-
-#include "calendar-config.h"
-#include "cal-util/timeutil.h"
-#include "dialogs/delete-comp.h"
-#include "dialogs/save-comp.h"
-#include "e-meeting-edit.h"
-#include "e-util/e-dialog-widgets.h"
-#include "event-editor.h"
-#include "tag-calendar.h"
-#include "weekday-picker.h"
-#include "widgets/misc/e-dateedit.h"
-#include "widget-util.h"
-
-enum {BEFORE, AFTER};
-enum {MINUTES, HOURS, DAYS};
-
-/* Reminder maps */
-static const int reminder_action_map[] = {
- CAL_ALARM_DISPLAY,
- CAL_ALARM_AUDIO,
- CAL_ALARM_EMAIL,
- CAL_ALARM_PROCEDURE,
- -1
-};
-
-static const int reminder_value_map[] = {
- MINUTES,
- HOURS,
- DAYS,
- -1
-};
-
-static const int reminder_relative_map[] = {
- BEFORE,
- AFTER,
- -1
-};
-
-static const int reminder_time_map[] = {
- CAL_ALARM_TRIGGER_RELATIVE_START,
- CAL_ALARM_TRIGGER_RELATIVE_END,
- -1
-};
-
-/* Recurrence maps */
-static const int recur_freq_map[] = {
- ICAL_DAILY_RECURRENCE,
- ICAL_WEEKLY_RECURRENCE,
- ICAL_MONTHLY_RECURRENCE,
- ICAL_YEARLY_RECURRENCE,
- -1
-};
-
-enum month_day_options {
- MONTH_DAY_NTH,
- MONTH_DAY_MON,
- MONTH_DAY_TUE,
- MONTH_DAY_WED,
- MONTH_DAY_THU,
- MONTH_DAY_FRI,
- MONTH_DAY_SAT,
- MONTH_DAY_SUN
-};
-
-static const int month_day_options_map[] = {
- MONTH_DAY_NTH,
- MONTH_DAY_MON,
- MONTH_DAY_TUE,
- MONTH_DAY_WED,
- MONTH_DAY_THU,
- MONTH_DAY_FRI,
- MONTH_DAY_SAT,
- MONTH_DAY_SUN,
- -1
-};
-
-/* Row data for the reminders */
-typedef enum {NEW_ALARM, EXISTING_ALARM} ReminderStatus;
-
-typedef struct {
- ReminderStatus status;
- CalComponentAlarm *alarm;
-} ReminderData;
-
-struct _EventEditorPrivate {
- /* Glade XML data */
- GladeXML *xml;
-
- /* Client to use */
- CalClient *client;
-
- /* Calendar object/uid we are editing; this is an internal copy */
- CalComponent *comp;
-
- /* Widgets from the Glade file */
-
- GtkWidget *app;
-
- GtkWidget *general_summary;
-
- GtkWidget *start_time;
- GtkWidget *end_time;
- GtkWidget *all_day_event;
-
- GtkWidget *description;
-
- GtkWidget *classification_public;
- GtkWidget *classification_private;
- GtkWidget *classification_confidential;
-
- GtkWidget *contacts;
- GtkWidget *contacts_btn;
-
- GtkWidget *categories;
- GtkWidget *categories_btn;
-
- GtkWidget *reminder_summary;
- GtkWidget *reminder_starting_date;
-
- GtkWidget *reminder_list;
- GtkWidget *reminder_add;
- GtkWidget *reminder_delete;
-
- GtkWidget *reminder_action;
- GtkWidget *reminder_interval_value;
- GtkWidget *reminder_value_units;
- GtkWidget *reminder_relative;
- GtkWidget *reminder_time;
-
- GtkWidget *recurrence_summary;
- GtkWidget *recurrence_starting_date;
-
- GtkWidget *recurrence_none;
- GtkWidget *recurrence_simple;
- GtkWidget *recurrence_custom;
-
- GtkWidget *recurrence_params;
- GtkWidget *recurrence_interval_value;
- GtkWidget *recurrence_interval_unit;
- GtkWidget *recurrence_special;
- GtkWidget *recurrence_ending_menu;
- GtkWidget *recurrence_ending_special;
- GtkWidget *recurrence_custom_warning_bin;
-
- /* For weekly recurrences, created by hand */
- GtkWidget *recurrence_weekday_picker;
- guint8 recurrence_weekday_day_mask;
- guint8 recurrence_weekday_blocked_day_mask;
-
- /* For monthly recurrences, created by hand */
- GtkWidget *recurrence_month_index_spin;
- int recurrence_month_index;
-
- GtkWidget *recurrence_month_day_menu;
- enum month_day_options recurrence_month_day;
-
- /* For ending date, created by hand */
- GtkWidget *recurrence_ending_date_edit;
- time_t recurrence_ending_date;
-
- /* For ending count of occurrences, created by hand */
- GtkWidget *recurrence_ending_count_spin;
- int recurrence_ending_count;
-
- /* More widgets from the Glade file */
-
- GtkWidget *recurrence_exception_date;
- GtkWidget *recurrence_exception_list;
- GtkWidget *recurrence_exception_add;
- GtkWidget *recurrence_exception_modify;
- GtkWidget *recurrence_exception_delete;
-
- GtkWidget *recurrence_preview_bin;
-
- /* For the recurrence preview, the actual widget */
- GtkWidget *recurrence_preview_calendar;
-
- /* Call event_editor_set_changed() to set this to TRUE when any field
- in the dialog is changed. When the user closes the dialog we will
- prompt to save changes. */
- gboolean changed;
-};
-
-
-
-static void event_editor_class_init (EventEditorClass *class);
-static void event_editor_init (EventEditor *ee);
-static void event_editor_destroy (GtkObject *object);
-
-static GtkObjectClass *parent_class;
-
-
-static void append_reminder (EventEditor *ee, CalComponentAlarm *alarm, ReminderStatus status);
-static void append_exception (EventEditor *ee, time_t t);
-static void check_all_day (EventEditor *ee);
-static void set_all_day (GtkWidget *toggle, EventEditor *ee);
-static void date_changed_cb (EDateEdit *dedit, gpointer data);
-static void preview_recur (EventEditor *ee);
-static void recur_to_comp_object (EventEditor *ee, CalComponent *comp);
-static void reminder_to_comp_object (EventEditor *ee, CalComponent *comp);
-static void reminder_add_cb (GtkWidget *widget, EventEditor *ee);
-static void reminder_delete_cb (GtkWidget *widget, EventEditor *ee);
-static void recurrence_exception_add_cb (GtkWidget *widget, EventEditor *ee);
-static void recurrence_exception_modify_cb (GtkWidget *widget, EventEditor *ee);
-static void recurrence_exception_delete_cb (GtkWidget *widget, EventEditor *ee);
-static void recurrence_exception_select_row_cb (GtkCList *clist, gint row, gint col, GdkEvent *event,
- gpointer data);
-static void field_changed (GtkWidget *widget,
- EventEditor *ee);
-static void event_editor_set_changed (EventEditor *ee,
- gboolean changed);
-static gboolean prompt_to_save_changes (EventEditor *ee);
-static void categories_clicked (GtkWidget *button, EventEditor *ee);
-
-
-
-/**
- * event_editor_get_type:
- *
- * Registers the #EventEditor class if necessary, and returns the type ID
- * associated to it.
- *
- * Return value: The type ID of the #EventEditor class.
- **/
-GtkType
-event_editor_get_type (void)
-{
- static GtkType event_editor_type = 0;
-
- if (!event_editor_type) {
- static const GtkTypeInfo event_editor_info = {
- "EventEditor",
- sizeof (EventEditor),
- sizeof (EventEditorClass),
- (GtkClassInitFunc) event_editor_class_init,
- (GtkObjectInitFunc) event_editor_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- event_editor_type = gtk_type_unique (GTK_TYPE_OBJECT, &event_editor_info);
- }
-
- return event_editor_type;
-}
-
-/* Class initialization function for the event editor */
-static void
-event_editor_class_init (EventEditorClass *class)
-{
- GtkObjectClass *object_class;
-
- object_class = (GtkObjectClass *) class;
-
- parent_class = gtk_type_class (GTK_TYPE_OBJECT);
-
- object_class->destroy = event_editor_destroy;
-}
-
-/* Object initialization function for the event editor */
-static void
-event_editor_init (EventEditor *ee)
-{
- EventEditorPrivate *priv;
-
- priv = g_new0 (EventEditorPrivate, 1);
- ee->priv = priv;
-
- event_editor_set_changed (ee, FALSE);
-}
-
-/* Frees the rows and the row data in the recurrence exceptions GtkCList */
-static void
-free_exception_clist_data (GtkCList *clist)
-{
- int i;
-
- for (i = 0; i < clist->rows; i++) {
- gpointer data;
-
- data = gtk_clist_get_row_data (clist, i);
- g_free (data);
- gtk_clist_set_row_data (clist, i, NULL);
- }
-
- gtk_clist_clear (clist);
-}
-
-/* Destroy handler for the event editor */
-static void
-event_editor_destroy (GtkObject *object)
-{
- EventEditor *ee;
- EventEditorPrivate *priv;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (IS_EVENT_EDITOR (object));
-
- ee = EVENT_EDITOR (object);
- priv = ee->priv;
-
- free_exception_clist_data (GTK_CLIST (priv->recurrence_exception_list));
-
- if (priv->app) {
- gtk_signal_disconnect_by_data (GTK_OBJECT (priv->app), ee);
- gtk_widget_destroy (priv->app);
- priv->app = NULL;
- }
-
- if (priv->comp) {
- gtk_object_unref (GTK_OBJECT (priv->comp));
- priv->comp = NULL;
- }
-
- if (priv->client) {
- gtk_signal_disconnect_by_data (GTK_OBJECT (priv->client), ee);
- gtk_object_unref (GTK_OBJECT (priv->client));
- priv->client = NULL;
- }
-
- if (priv->xml) {
- gtk_object_unref (GTK_OBJECT (priv->xml));
- priv->xml = NULL;
- }
-
- g_free (priv);
- ee->priv = NULL;
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-/* Creates an appropriate title for the event editor dialog */
-static char *
-make_title_from_comp (CalComponent *comp)
-{
- char *title;
- const char *type_string;
- CalComponentVType type;
- CalComponentText text;
-
- if (!comp)
- return g_strdup (_("Edit Appointment"));
-
- type = cal_component_get_vtype (comp);
- switch (type) {
- case CAL_COMPONENT_EVENT:
- type_string = _("Appointment - %s");
- break;
- case CAL_COMPONENT_TODO:
- type_string = _("Task - %s");
- break;
- case CAL_COMPONENT_JOURNAL:
- type_string = _("Journal entry - %s");
- break;
- default:
- g_message ("make_title_from_comp(): Cannot handle object of type %d", type);
- return NULL;
- }
-
- cal_component_get_summary (comp, &text);
- if (text.value) {
- char *summary;
- summary = e_utf8_to_locale_string (text.value);
- title = g_strdup_printf (type_string, summary);
- g_free (summary);
- } else
- title = g_strdup_printf (type_string, _("No summary"));
-
- return title;
-}
-
-/* Sets the event editor's window title from a calendar component */
-static void
-set_title_from_comp (EventEditor *ee, CalComponent *comp)
-{
- EventEditorPrivate *priv = ee->priv;
- char *title;
-
- title = make_title_from_comp (comp);
- gtk_window_set_title (GTK_WINDOW (priv->app), title);
- g_free (title);
-}
-
-/* Callback used when the recurrence weekday picker changes */
-static void
-recur_weekday_picker_changed_cb (WeekdayPicker *wp, gpointer data)
-{
- EventEditor *ee;
-
- ee = EVENT_EDITOR (data);
- event_editor_set_changed (ee, TRUE);
- preview_recur (ee);
-}
-
-/* Creates the special contents for weekly recurrences */
-static void
-make_recur_weekly_special (EventEditor *ee)
-{
- EventEditorPrivate *priv;
- GtkWidget *hbox;
- GtkWidget *label;
- WeekdayPicker *wp;
-
- priv = ee->priv;
-
- g_assert (GTK_BIN (priv->recurrence_special)->child == NULL);
- g_assert (priv->recurrence_weekday_picker == NULL);
-
- /* Create the widgets */
-
- hbox = gtk_hbox_new (FALSE, 2);
- gtk_container_add (GTK_CONTAINER (priv->recurrence_special), hbox);
-
- label = gtk_label_new (_("on"));
- gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
-
- wp = WEEKDAY_PICKER (weekday_picker_new ());
-
- priv->recurrence_weekday_picker = GTK_WIDGET (wp);
- gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (wp), FALSE, FALSE, 0);
-
- gtk_widget_show_all (hbox);
-
- /* Set the weekdays */
-
- weekday_picker_set_week_start_day (wp, calendar_config_get_week_start_day ());
- weekday_picker_set_days (wp, priv->recurrence_weekday_day_mask);
- weekday_picker_set_blocked_days (wp, priv->recurrence_weekday_blocked_day_mask);
-
- gtk_signal_connect (GTK_OBJECT (wp), "changed",
- GTK_SIGNAL_FUNC (recur_weekday_picker_changed_cb), ee);
-}
-
-/* Creates the option menu for the monthly recurrence days */
-static GtkWidget *
-make_recur_month_menu (void)
-{
- static const char *options[] = {
- N_("day"),
- N_("Monday"),
- N_("Tuesday"),
- N_("Wednesday"),
- N_("Thursday"),
- N_("Friday"),
- N_("Saturday"),
- N_("Sunday")
- };
-
- GtkWidget *menu;
- GtkWidget *omenu;
- int i;
-
- menu = gtk_menu_new ();
-
- for (i = 0; i < sizeof (options) / sizeof (options[0]); i++) {
- GtkWidget *item;
-
- item = gtk_menu_item_new_with_label (_(options[i]));
- gtk_menu_append (GTK_MENU (menu), item);
- gtk_widget_show (item);
- }
-
- omenu = gtk_option_menu_new ();
- gtk_option_menu_set_menu (GTK_OPTION_MENU (omenu), menu);
-
- return omenu;
-}
-
-/* For monthly recurrences, changes the valid range of the recurrence day index
- * spin button; e.g. month days are 1-31 while the valid range for a Sunday is
- * the 1st through 5th of the month.
- */
-static void
-adjust_day_index_spin (EventEditor *ee)
-{
- EventEditorPrivate *priv;
- GtkAdjustment *adj;
- enum month_day_options month_day;
-
- priv = ee->priv;
-
- g_assert (priv->recurrence_month_day_menu != NULL);
- g_assert (GTK_IS_OPTION_MENU (priv->recurrence_month_day_menu));
- g_assert (priv->recurrence_month_index_spin != NULL);
- g_assert (GTK_IS_SPIN_BUTTON (priv->recurrence_month_index_spin));
-
- month_day = e_dialog_option_menu_get (priv->recurrence_month_day_menu, month_day_options_map);
-
- adj = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (priv->recurrence_month_index_spin));
-
- switch (month_day) {
- case MONTH_DAY_NTH:
- adj->upper = 31;
- gtk_adjustment_changed (adj);
- break;
-
- case MONTH_DAY_MON:
- case MONTH_DAY_TUE:
- case MONTH_DAY_WED:
- case MONTH_DAY_THU:
- case MONTH_DAY_FRI:
- case MONTH_DAY_SAT:
- case MONTH_DAY_SUN:
- adj->upper = 5;
- gtk_adjustment_changed (adj);
-
- if (adj->value > 5) {
- adj->value = 5;
- gtk_adjustment_value_changed (adj);
- }
-
- break;
-
- default:
- g_assert_not_reached ();
- }
-}
-
-/* Callback used when the monthly day selection menu changes. We need to change
- * the valid range of the day index spin button; e.g. days are 1-31 while a
- * Sunday is the 1st through 5th.
- */
-static void
-month_day_menu_selection_done_cb (GtkMenuShell *menu_shell, gpointer data)
-{
- EventEditor *ee;
-
- ee = EVENT_EDITOR (data);
- adjust_day_index_spin (ee);
- event_editor_set_changed (ee, TRUE);
- preview_recur (ee);
-}
-
-/* Callback used when the month index value changes. */
-static void
-recur_month_index_value_changed_cb (GtkAdjustment *adj, gpointer data)
-{
- EventEditor *ee;
-
- ee = EVENT_EDITOR (data);
- event_editor_set_changed (ee, TRUE);
- preview_recur (ee);
-}
-
-/* Creates the special contents for monthly recurrences */
-static void
-make_recur_monthly_special (EventEditor *ee)
-{
- EventEditorPrivate *priv;
- GtkWidget *hbox;
- GtkWidget *label;
- GtkAdjustment *adj;
- GtkWidget *menu;
-
- priv = ee->priv;
-
- g_assert (GTK_BIN (priv->recurrence_special)->child == NULL);
- g_assert (priv->recurrence_month_index_spin == NULL);
- g_assert (priv->recurrence_month_day_menu == NULL);
-
- /* Create the widgets */
-
- hbox = gtk_hbox_new (FALSE, 2);
- gtk_container_add (GTK_CONTAINER (priv->recurrence_special), hbox);
-
- label = gtk_label_new (_("on the"));
- gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
-
- adj = GTK_ADJUSTMENT (gtk_adjustment_new (1, 1, 31, 1, 10, 10));
- priv->recurrence_month_index_spin = gtk_spin_button_new (adj, 1, 0);
- gtk_box_pack_start (GTK_BOX (hbox), priv->recurrence_month_index_spin, FALSE, FALSE, 0);
-
- label = gtk_label_new (_("th"));
- gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
-
- priv->recurrence_month_day_menu = make_recur_month_menu ();
- gtk_box_pack_start (GTK_BOX (hbox), priv->recurrence_month_day_menu, FALSE, FALSE, 0);
-
- gtk_widget_show_all (hbox);
-
- /* Set the options */
-
- e_dialog_spin_set (priv->recurrence_month_index_spin, priv->recurrence_month_index);
- e_dialog_option_menu_set (priv->recurrence_month_day_menu,
- priv->recurrence_month_day,
- month_day_options_map);
- adjust_day_index_spin (ee);
-
- gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
- GTK_SIGNAL_FUNC (recur_month_index_value_changed_cb), ee);
-
- menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (priv->recurrence_month_day_menu));
- gtk_signal_connect (GTK_OBJECT (menu), "selection_done",
- GTK_SIGNAL_FUNC (month_day_menu_selection_done_cb), ee);
-}
-
-/* Changes the recurrence-special widget to match the interval units.
- *
- * For daily recurrences: nothing.
- * For weekly recurrences: weekday selector.
- * For monthly recurrences: "on the" <nth> [day, Weekday]
- * For yearly recurrences: nothing.
- */
-static void
-make_recurrence_special (EventEditor *ee)
-{
- EventEditorPrivate *priv;
- icalrecurrencetype_frequency frequency;
-
- priv = ee->priv;
-
- if (GTK_BIN (priv->recurrence_special)->child != NULL) {
- gtk_widget_destroy (GTK_BIN (priv->recurrence_special)->child);
-
- priv->recurrence_weekday_picker = NULL;
- priv->recurrence_month_index_spin = NULL;
- priv->recurrence_month_day_menu = NULL;
- }
-
- frequency = e_dialog_option_menu_get (priv->recurrence_interval_unit, recur_freq_map);
-
- switch (frequency) {
- case ICAL_DAILY_RECURRENCE:
- gtk_widget_hide (priv->recurrence_special);
- break;
-
- case ICAL_WEEKLY_RECURRENCE:
- make_recur_weekly_special (ee);
- gtk_widget_show (priv->recurrence_special);
- break;
-
- case ICAL_MONTHLY_RECURRENCE:
- make_recur_monthly_special (ee);
- gtk_widget_show (priv->recurrence_special);
- break;
-
- case ICAL_YEARLY_RECURRENCE:
- gtk_widget_hide (priv->recurrence_special);
- break;
-
- default:
- g_assert_not_reached ();
- }
-}
-
-/* Callback used when the ending-until date editor changes */
-static void
-recur_ending_until_changed_cb (EDateEdit *de, gpointer data)
-{
- EventEditor *ee;
-
- ee = EVENT_EDITOR (data);
- event_editor_set_changed (ee, TRUE);
- preview_recur (ee);
-}
-
-/* Creates the special contents for "ending until" (end date) recurrences */
-static void
-make_recur_ending_until_special (EventEditor *ee)
-{
- EventEditorPrivate *priv;
- EDateEdit *de;
-
- priv = ee->priv;
-
- g_assert (GTK_BIN (priv->recurrence_ending_special)->child == NULL);
- g_assert (priv->recurrence_ending_date_edit == NULL);
-
- /* Create the widget */
-
- priv->recurrence_ending_date_edit = date_edit_new (TRUE, FALSE);
- de = E_DATE_EDIT (priv->recurrence_ending_date_edit);
-
- gtk_container_add (GTK_CONTAINER (priv->recurrence_ending_special), GTK_WIDGET (de));
- gtk_widget_show_all (GTK_WIDGET (de));
-
- /* Set the value */
-
- e_date_edit_set_time (de, priv->recurrence_ending_date);
-
- gtk_signal_connect (GTK_OBJECT (de), "changed",
- GTK_SIGNAL_FUNC (recur_ending_until_changed_cb), ee);
-}
-
-/* Callback used when the ending-count value changes */
-static void
-recur_ending_count_value_changed_cb (GtkAdjustment *adj, gpointer data)
-{
- EventEditor *ee;
-
- ee = EVENT_EDITOR (data);
- event_editor_set_changed (ee, TRUE);
- preview_recur (ee);
-}
-
-/* Creates the special contents for the occurrence count case */
-static void
-make_recur_ending_count_special (EventEditor *ee)
-{
- EventEditorPrivate *priv;
- GtkWidget *hbox;
- GtkWidget *label;
- GtkAdjustment *adj;
-
- priv = ee->priv;
-
- g_assert (GTK_BIN (priv->recurrence_ending_special)->child == NULL);
- g_assert (priv->recurrence_ending_count_spin == NULL);
-
- /* Create the widgets */
-
- hbox = gtk_hbox_new (FALSE, 2);
- gtk_container_add (GTK_CONTAINER (priv->recurrence_ending_special), hbox);
-
- adj = GTK_ADJUSTMENT (gtk_adjustment_new (1, 1, 10000, 1, 10, 10));
- priv->recurrence_ending_count_spin = gtk_spin_button_new (adj, 1, 0);
- gtk_box_pack_start (GTK_BOX (hbox), priv->recurrence_ending_count_spin, FALSE, FALSE, 0);
-
- label = gtk_label_new (_("occurrences"));
- gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
-
- gtk_widget_show_all (hbox);
-
- /* Set the values */
-
- e_dialog_spin_set (priv->recurrence_ending_count_spin,
- priv->recurrence_ending_count);
-
- gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
- GTK_SIGNAL_FUNC (recur_ending_count_value_changed_cb), ee);
-}
-
-enum ending_type {
- ENDING_FOR,
- ENDING_UNTIL,
- ENDING_FOREVER
-};
-
-static const int ending_types_map[] = {
- ENDING_FOR,
- ENDING_UNTIL,
- ENDING_FOREVER,
- -1
-};
-
-/* Changes the recurrence-ending-special widget to match the ending date option.
- *
- * For: <n> [days, weeks, months, years, occurrences]
- * Until: <date selector>
- * Forever: nothing.
- */
-static void
-make_recurrence_ending_special (EventEditor *ee)
-{
- EventEditorPrivate *priv;
- enum ending_type ending_type;
-
- priv = ee->priv;
-
- if (GTK_BIN (priv->recurrence_ending_special)->child != NULL) {
- gtk_widget_destroy (GTK_BIN (priv->recurrence_ending_special)->child);
-
- priv->recurrence_ending_date_edit = NULL;
- priv->recurrence_ending_count_spin = NULL;
- }
-
- ending_type = e_dialog_option_menu_get (priv->recurrence_ending_menu, ending_types_map);
-
- switch (ending_type) {
- case ENDING_FOR:
- make_recur_ending_count_special (ee);
- gtk_widget_show (priv->recurrence_ending_special);
- break;
-
- case ENDING_UNTIL:
- make_recur_ending_until_special (ee);
- gtk_widget_show (priv->recurrence_ending_special);
- break;
-
- case ENDING_FOREVER:
- gtk_widget_hide (priv->recurrence_ending_special);
- break;
-
- default:
- g_assert_not_reached ();
- }
-}
-
-enum recur_type {
- RECUR_NONE,
- RECUR_SIMPLE,
- RECUR_CUSTOM
-};
-
-static const int recur_type_map[] = {
- RECUR_NONE,
- RECUR_SIMPLE,
- RECUR_CUSTOM,
- -1
-};
-
-/* Sensitizes the recurrence widgets based on the state of the recurrence type
- * radio group.
- */
-static void
-sensitize_recur_widgets (EventEditor *ee)
-{
- EventEditorPrivate *priv;
- enum recur_type type;
- GtkWidget *label;
-
- priv = ee->priv;
-
- type = e_dialog_radio_get (priv->recurrence_none, recur_type_map);
-
- if (GTK_BIN (priv->recurrence_custom_warning_bin)->child)
- gtk_widget_destroy (GTK_BIN (priv->recurrence_custom_warning_bin)->child);
-
- switch (type) {
- case RECUR_NONE:
- gtk_widget_set_sensitive (priv->recurrence_params, FALSE);
- gtk_widget_show (priv->recurrence_params);
- gtk_widget_hide (priv->recurrence_custom_warning_bin);
- break;
-
- case RECUR_SIMPLE:
- gtk_widget_set_sensitive (priv->recurrence_params, TRUE);
- gtk_widget_show (priv->recurrence_params);
- gtk_widget_hide (priv->recurrence_custom_warning_bin);
- break;
-
- case RECUR_CUSTOM:
- gtk_widget_set_sensitive (priv->recurrence_params, FALSE);
- gtk_widget_hide (priv->recurrence_params);
-
- label = gtk_label_new (_("This appointment contains recurrences that Evolution "
- "cannot edit."));
- gtk_container_add (GTK_CONTAINER (priv->recurrence_custom_warning_bin), label);
- gtk_widget_show_all (priv->recurrence_custom_warning_bin);
- break;
-
- default:
- g_assert_not_reached ();
- }
-}
-
-/* Callback used when one of the recurrence type radio buttons is toggled. We
- * enable or the recurrence parameters.
- */
-static void
-recurrence_type_toggled_cb (GtkToggleButton *toggle, gpointer data)
-{
- EventEditor *ee;
-
- ee = EVENT_EDITOR (data);
-
- event_editor_set_changed (ee, TRUE);
-
- if (toggle->active) {
- sensitize_recur_widgets (ee);
- preview_recur (ee);
- }
-}
-
-/* Callback used when the recurrence interval value spin button changes. */
-static void
-recur_interval_value_changed_cb (GtkAdjustment *adj, gpointer data)
-{
- EventEditor *ee;
-
- ee = EVENT_EDITOR (data);
- event_editor_set_changed (ee, TRUE);
- preview_recur (ee);
-}
-
-/* Callback used when the recurrence interval option menu changes. We need to
- * change the contents of the recurrence special widget.
- */
-static void
-recur_interval_selection_done_cb (GtkMenuShell *menu_shell, gpointer data)
-{
- EventEditor *ee;
-
- ee = EVENT_EDITOR (data);
- event_editor_set_changed (ee, TRUE);
- make_recurrence_special (ee);
- preview_recur (ee);
-}
-
-/* Callback used when the recurrence ending option menu changes. We need to
- * change the contents of the ending special widget.
- */
-static void
-recur_ending_selection_done_cb (GtkMenuShell *menu_shell, gpointer data)
-{
- EventEditor *ee;
-
- ee = EVENT_EDITOR (data);
- event_editor_set_changed (ee, TRUE);
- make_recurrence_ending_special (ee);
- preview_recur (ee);
-}
-
-/* Gets the widgets from the XML file and returns if they are all available.
- * For the widgets whose values can be simply set with e-dialog-utils, it does
- * that as well.
- */
-static gboolean
-get_widgets (EventEditor *ee)
-{
- EventEditorPrivate *priv;
-
- priv = ee->priv;
-
-#define GW(name) glade_xml_get_widget (priv->xml, name)
-
- priv->app = GW ("event-editor-dialog");
-
- priv->general_summary = GW ("general-summary");
-
- priv->start_time = GW ("start-time");
- priv->end_time = GW ("end-time");
- priv->all_day_event = GW ("all-day-event");
-
- priv->description = GW ("description");
-
- priv->classification_public = GW ("classification-public");
- priv->classification_private = GW ("classification-private");
- priv->classification_confidential = GW ("classification-confidential");
-
- priv->contacts_btn = GW ("contacts-button");
- priv->contacts = GW ("contacts");
-
- priv->categories_btn = GW ("categories-button");
- priv->categories = GW ("categories");
-
- priv->reminder_summary = GW ("reminder-summary");
- priv->reminder_starting_date = GW ("reminder-starting-date");
-
- priv->reminder_list = GW ("reminder-list");
- priv->reminder_add = GW ("reminder-add");
- priv->reminder_delete = GW ("reminder-delete");
-
- priv->reminder_action = GW ("reminder-action");
- priv->reminder_interval_value = GW ("reminder-interval-value");
- priv->reminder_value_units = GW ("reminder-value-units");
- priv->reminder_relative = GW ("reminder-relative");
- priv->reminder_time = GW ("reminder-time");
-
- priv->recurrence_summary = GW ("recurrence-summary");
- priv->recurrence_starting_date = GW ("recurrence-starting-date");
-
- priv->recurrence_none = GW ("recurrence-none");
- priv->recurrence_simple = GW ("recurrence-simple");
- priv->recurrence_custom = GW ("recurrence-custom");
- priv->recurrence_params = GW ("recurrence-params");
-
- priv->recurrence_interval_value = GW ("recurrence-interval-value");
- priv->recurrence_interval_unit = GW ("recurrence-interval-unit");
- priv->recurrence_special = GW ("recurrence-special");
- priv->recurrence_ending_menu = GW ("recurrence-ending-menu");
- priv->recurrence_ending_special = GW ("recurrence-ending-special");
- priv->recurrence_custom_warning_bin = GW ("recurrence-custom-warning-bin");
-
- priv->recurrence_exception_date = GW ("recurrence-exception-date");
- priv->recurrence_exception_list = GW ("recurrence-exception-list");
- priv->recurrence_exception_add = GW ("recurrence-exception-add");
- priv->recurrence_exception_modify = GW ("recurrence-exception-modify");
- priv->recurrence_exception_delete = GW ("recurrence-exception-delete");
-
- priv->recurrence_preview_bin = GW ("recurrence-preview-bin");
-
-#undef GW
-
- return (priv->app
- && priv->general_summary
- && priv->start_time
- && priv->end_time
- && priv->all_day_event
- && priv->description
- && priv->classification_public
- && priv->classification_private
- && priv->classification_confidential
- && priv->contacts_btn
- && priv->contacts
- && priv->categories_btn
- && priv->categories
- && priv->reminder_summary
- && priv->reminder_starting_date
- && priv->reminder_list
- && priv->reminder_add
- && priv->reminder_delete
- && priv->reminder_action
- && priv->reminder_interval_value
- && priv->reminder_value_units
- && priv->reminder_relative
- && priv->reminder_time
- && priv->recurrence_summary
- && priv->recurrence_starting_date
- && priv->recurrence_none
- && priv->recurrence_simple
- && priv->recurrence_custom
- && priv->recurrence_params
- && priv->recurrence_interval_value
- && priv->recurrence_interval_unit
- && priv->recurrence_special
- && priv->recurrence_ending_menu
- && priv->recurrence_ending_special
- && priv->recurrence_custom_warning_bin
- && priv->recurrence_exception_date
- && priv->recurrence_exception_list
- && priv->recurrence_exception_add
- && priv->recurrence_exception_modify
- && priv->recurrence_exception_delete
- && priv->recurrence_preview_bin);
-}
-
-/* Syncs the contents of two entry widgets, while blocking signals from each
- * other.
- */
-static void
-sync_entries (EventEditor *ee, GtkEditable *source, GtkEditable *dest)
-{
- char *str;
-
- gtk_signal_handler_block_by_data (GTK_OBJECT (dest), ee);
-
- str = gtk_editable_get_chars (source, 0, -1);
- gtk_entry_set_text (GTK_ENTRY (dest), str);
- g_free (str);
-
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (dest), ee);
-}
-
-/* Syncs the contents of two date editor widgets, while blocking signals on the
- * specified data.
- */
-static void
-sync_date_edits (EventEditor *ee, EDateEdit *source, EDateEdit *dest)
-{
- time_t t;
-
- gtk_signal_handler_block_by_data (GTK_OBJECT (dest), ee);
-
- t = e_date_edit_get_time (source);
- e_date_edit_set_time (dest, t);
-
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (dest), ee);
-}
-
-/* Callback used when one of the general or recurrence summary entries change;
- * we sync the other entry to it.
- */
-static void
-summary_changed_cb (GtkEditable *editable, gpointer data)
-{
- EventEditor *ee;
- EventEditorPrivate *priv;
-
- ee = EVENT_EDITOR (data);
- priv = ee->priv;
-
- if (editable != GTK_EDITABLE (priv->general_summary))
- sync_entries (ee, editable, GTK_EDITABLE (priv->general_summary));
- if (editable != GTK_EDITABLE (priv->reminder_summary))
- sync_entries (ee, editable, GTK_EDITABLE (priv->reminder_summary));
- if (editable != GTK_EDITABLE (priv->recurrence_summary))
- sync_entries (ee, editable, GTK_EDITABLE (priv->recurrence_summary));
-}
-
-/* Callback used when one of the general or recurrence starting date widgets
- * change; we sync the other date editor to it.
- */
-static void
-start_date_changed_cb (EDateEdit *de, gpointer data)
-{
- EventEditor *ee;
- EventEditorPrivate *priv;
-
- ee = EVENT_EDITOR (data);
- priv = ee->priv;
-
- if (de != E_DATE_EDIT (priv->start_time))
- sync_date_edits (ee,de, E_DATE_EDIT (priv->start_time));
- if (de != E_DATE_EDIT (priv->reminder_starting_date))
- sync_date_edits (ee, de, E_DATE_EDIT (priv->reminder_starting_date));
- if (de != E_DATE_EDIT (priv->recurrence_starting_date))
- sync_date_edits (ee, de, E_DATE_EDIT (priv->recurrence_starting_date));
-}
-
-/* Callback used when the displayed date range in the recurrence preview
- * calendar changes.
- */
-static void
-recur_preview_date_range_changed_cb (ECalendarItem *item, gpointer data)
-{
- EventEditor *ee;
-
- ee = EVENT_EDITOR (data);
- preview_recur (ee);
-}
-
-/* Hooks the widget signals */
-static void
-init_widgets (EventEditor *ee)
-{
- EventEditorPrivate *priv;
- GtkWidget *menu;
- GtkAdjustment *adj;
- ECalendar *ecal;
-
- priv = ee->priv;
-
- /* Summary in the main, reminder and recurrence pages */
- gtk_signal_connect (GTK_OBJECT (priv->general_summary), "changed",
- GTK_SIGNAL_FUNC (summary_changed_cb), ee);
- gtk_signal_connect (GTK_OBJECT (priv->reminder_summary), "changed",
- GTK_SIGNAL_FUNC (summary_changed_cb), ee);
- gtk_signal_connect (GTK_OBJECT (priv->recurrence_summary), "changed",
- GTK_SIGNAL_FUNC (summary_changed_cb), ee);
-
- /* Categories button */
- gtk_signal_connect (GTK_OBJECT (priv->categories_btn), "clicked",
- GTK_SIGNAL_FUNC (categories_clicked), ee);
-
- /* Start dates in the main and recurrence pages */
-
- gtk_signal_connect (GTK_OBJECT (priv->start_time), "changed",
- GTK_SIGNAL_FUNC (start_date_changed_cb), ee);
- gtk_signal_connect (GTK_OBJECT (priv->reminder_starting_date), "changed",
- GTK_SIGNAL_FUNC (start_date_changed_cb), ee);
- gtk_signal_connect (GTK_OBJECT (priv->recurrence_starting_date), "changed",
- GTK_SIGNAL_FUNC (start_date_changed_cb), ee);
-
- /* Start and end times */
-
- gtk_signal_connect (GTK_OBJECT (priv->start_time), "changed",
- GTK_SIGNAL_FUNC (date_changed_cb), ee);
- gtk_signal_connect (GTK_OBJECT (priv->end_time), "changed",
- GTK_SIGNAL_FUNC (date_changed_cb), ee);
-
- gtk_signal_connect (GTK_OBJECT (priv->all_day_event), "toggled",
- GTK_SIGNAL_FUNC (set_all_day), ee);
-
- /* Reminder buttons */
-
- gtk_signal_connect (GTK_OBJECT (priv->reminder_add), "clicked",
- GTK_SIGNAL_FUNC (reminder_add_cb), ee);
- gtk_signal_connect (GTK_OBJECT (priv->reminder_delete), "clicked",
- GTK_SIGNAL_FUNC (reminder_delete_cb), ee);
-
- /* Recurrence preview */
-
- priv->recurrence_preview_calendar = e_calendar_new ();
- ecal = E_CALENDAR (priv->recurrence_preview_calendar);
- gtk_signal_connect (GTK_OBJECT (ecal->calitem), "date_range_changed",
- GTK_SIGNAL_FUNC (recur_preview_date_range_changed_cb), ee);
- calendar_config_configure_e_calendar (ecal);
- e_calendar_item_set_max_days_sel (ecal->calitem, 0);
- gtk_container_add (GTK_CONTAINER (priv->recurrence_preview_bin),
- priv->recurrence_preview_calendar);
- gtk_widget_show (priv->recurrence_preview_calendar);
-
- /* Recurrence types */
-
- gtk_signal_connect (GTK_OBJECT (priv->recurrence_none), "toggled",
- GTK_SIGNAL_FUNC (recurrence_type_toggled_cb), ee);
- gtk_signal_connect (GTK_OBJECT (priv->recurrence_simple), "toggled",
- GTK_SIGNAL_FUNC (recurrence_type_toggled_cb), ee);
- gtk_signal_connect (GTK_OBJECT (priv->recurrence_custom), "toggled",
- GTK_SIGNAL_FUNC (recurrence_type_toggled_cb), ee);
-
- /* Recurrence interval */
-
- adj = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (priv->recurrence_interval_value));
- gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
- GTK_SIGNAL_FUNC (recur_interval_value_changed_cb), ee);
-
- /* Recurrence units */
-
- menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (priv->recurrence_interval_unit));
- gtk_signal_connect (GTK_OBJECT (menu), "selection_done",
- GTK_SIGNAL_FUNC (recur_interval_selection_done_cb), ee);
-
- /* Recurrence ending */
-
- menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (priv->recurrence_ending_menu));
- gtk_signal_connect (GTK_OBJECT (menu), "selection_done",
- GTK_SIGNAL_FUNC (recur_ending_selection_done_cb), ee);
-
- /* Exception buttons */
-
- gtk_signal_connect (GTK_OBJECT (priv->recurrence_exception_add), "clicked",
- GTK_SIGNAL_FUNC (recurrence_exception_add_cb), ee);
- gtk_signal_connect (GTK_OBJECT (priv->recurrence_exception_modify), "clicked",
- GTK_SIGNAL_FUNC (recurrence_exception_modify_cb), ee);
- gtk_signal_connect (GTK_OBJECT (priv->recurrence_exception_delete), "clicked",
- GTK_SIGNAL_FUNC (recurrence_exception_delete_cb), ee);
-
- /* Selections in the exceptions list */
-
- gtk_signal_connect (GTK_OBJECT (priv->recurrence_exception_list), "select_row",
- GTK_SIGNAL_FUNC (recurrence_exception_select_row_cb), ee);
-
- /*
- * Connect the default signal handler to use to make sure the "changed"
- * field gets set whenever a field is changed.
- */
-
- /* Appointment Page */
- gtk_signal_connect (GTK_OBJECT (priv->general_summary), "changed",
- GTK_SIGNAL_FUNC (field_changed), ee);
- gtk_signal_connect (GTK_OBJECT (priv->description), "changed",
- GTK_SIGNAL_FUNC (field_changed), ee);
- gtk_signal_connect (GTK_OBJECT (priv->classification_public), "toggled",
- GTK_SIGNAL_FUNC (field_changed), ee);
- gtk_signal_connect (GTK_OBJECT (priv->classification_private), "toggled",
- GTK_SIGNAL_FUNC (field_changed), ee);
- gtk_signal_connect (GTK_OBJECT (priv->classification_confidential), "toggled",
- GTK_SIGNAL_FUNC (field_changed), ee);
- gtk_signal_connect (GTK_OBJECT (priv->categories), "changed",
- GTK_SIGNAL_FUNC (field_changed), ee);
-
- /* FIXME: we do not support these fields yet, so we disable them */
-
- gtk_widget_set_sensitive (priv->contacts_btn, FALSE);
- gtk_widget_set_sensitive (priv->contacts, FALSE);
-}
-
-static const int classification_map[] = {
- CAL_COMPONENT_CLASS_PUBLIC,
- CAL_COMPONENT_CLASS_PRIVATE,
- CAL_COMPONENT_CLASS_CONFIDENTIAL,
- -1
-};
-
-static const int month_pos_map[] = { 0, 1, 2, 3, 4, -1 };
-static const int weekday_map[] = { 0, 1, 2, 3, 4, 5, 6, -1 };
-
-/* Fills the widgets with default values */
-static void
-clear_widgets (EventEditor *ee)
-{
- EventEditorPrivate *priv;
- time_t now;
- GtkAdjustment *adj;
- GtkWidget *menu;
-
- priv = ee->priv;
-
- now = time (NULL);
-
- /* Summary, description */
-
- e_dialog_editable_set (priv->general_summary, NULL); /* will also change recur summary */
- e_dialog_editable_set (priv->description, NULL);
-
- /* Start and end times */
-
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->start_time), ee);
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->end_time), ee);
-
- e_date_edit_set_time (E_DATE_EDIT (priv->start_time), now); /* will set recur start too */
- e_date_edit_set_time (E_DATE_EDIT (priv->end_time), now);
-
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->start_time), ee);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->end_time), ee);
-
- check_all_day (ee);
-
- /* Classification */
-
- e_dialog_radio_set (priv->classification_public,
- CAL_COMPONENT_CLASS_PRIVATE, classification_map);
-
- /* Recurrences */
-
- priv->recurrence_weekday_day_mask = 0;
-
- priv->recurrence_month_index = 1;
- priv->recurrence_month_day = MONTH_DAY_NTH;
-
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->recurrence_none), ee);
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->recurrence_simple), ee);
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->recurrence_custom), ee);
- e_dialog_radio_set (priv->recurrence_none, RECUR_NONE, recur_type_map);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->recurrence_none), ee);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->recurrence_simple), ee);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->recurrence_custom), ee);
-
- adj = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (priv->recurrence_interval_value));
- gtk_signal_handler_block_by_data (GTK_OBJECT (adj), ee);
- e_dialog_spin_set (priv->recurrence_interval_value, 1);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (adj), ee);
-
- menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (priv->recurrence_interval_unit));
- gtk_signal_handler_block_by_data (GTK_OBJECT (menu), ee);
- e_dialog_option_menu_set (priv->recurrence_interval_unit, ICAL_DAILY_RECURRENCE,
- recur_freq_map);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (menu), ee);
-
- priv->recurrence_ending_date = time (NULL);
- priv->recurrence_ending_count = 1;
-
- menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (priv->recurrence_ending_menu));
- gtk_signal_handler_block_by_data (GTK_OBJECT (menu), ee);
- e_dialog_option_menu_set (priv->recurrence_ending_menu, ENDING_FOREVER,
- ending_types_map);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (menu), ee);
-
- /* Exceptions list */
-
- free_exception_clist_data (GTK_CLIST (priv->recurrence_exception_list));
-}
-
-/* Fills the recurrence ending date widgets with the values from the calendar
- * component.
- */
-static void
-fill_ending_date (EventEditor *ee, struct icalrecurrencetype *r)
-{
- EventEditorPrivate *priv;
- GtkWidget *menu;
-
- priv = ee->priv;
-
- menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (priv->recurrence_ending_menu));
- gtk_signal_handler_block_by_data (GTK_OBJECT (menu), ee);
-
- if (r->count == 0) {
- if (r->until.year == 0) {
- /* Forever */
-
- e_dialog_option_menu_set (priv->recurrence_ending_menu,
- ENDING_FOREVER,
- ending_types_map);
- } else {
- /* Ending date */
-
- priv->recurrence_ending_date = icaltime_as_timet (r->until);
- e_dialog_option_menu_set (priv->recurrence_ending_menu,
- ENDING_UNTIL,
- ending_types_map);
- }
- } else {
- /* Count of occurrences */
-
- priv->recurrence_ending_count = r->count;
- e_dialog_option_menu_set (priv->recurrence_ending_menu,
- ENDING_FOR,
- ending_types_map);
- }
-
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (menu), ee);
-
- make_recurrence_ending_special (ee);
-}
-
-/* Counts the number of elements in the by_xxx fields of an icalrecurrencetype */
-static int
-count_by_xxx (short *field, int max_elements)
-{
- int i;
-
- for (i = 0; i < max_elements; i++)
- if (field[i] == ICAL_RECURRENCE_ARRAY_MAX)
- break;
-
- return i;
-}
-
-/* Re-tags the recurrence preview calendar based on the current information of
- * the event editor.
- */
-static void
-preview_recur (EventEditor *ee)
-{
- EventEditorPrivate *priv;
- CalComponent *comp;
- CalComponentDateTime cdt;
- GSList *l;
-
- priv = ee->priv;
- g_assert (priv->comp != NULL);
-
- /* Create a scratch component with the start/end and
- * recurrence/excepttion information from the one we are editing.
- */
-
- comp = cal_component_new ();
- cal_component_set_new_vtype (comp, CAL_COMPONENT_EVENT);
-
- cal_component_get_dtstart (priv->comp, &cdt);
- cal_component_set_dtstart (comp, &cdt);
- cal_component_free_datetime (&cdt);
-
- cal_component_get_dtend (priv->comp, &cdt);
- cal_component_set_dtend (comp, &cdt);
- cal_component_free_datetime (&cdt);
-
- cal_component_get_exdate_list (priv->comp, &l);
- cal_component_set_exdate_list (comp, l);
- cal_component_free_exdate_list (l);
-
- cal_component_get_exrule_list (priv->comp, &l);
- cal_component_set_exrule_list (comp, l);
- cal_component_free_recur_list (l);
-
- cal_component_get_rdate_list (priv->comp, &l);
- cal_component_set_rdate_list (comp, l);
- cal_component_free_period_list (l);
-
- cal_component_get_rrule_list (priv->comp, &l);
- cal_component_set_rrule_list (comp, l);
- cal_component_free_recur_list (l);
-
- recur_to_comp_object (ee, comp);
-
- tag_calendar_by_comp (E_CALENDAR (priv->recurrence_preview_calendar), comp);
- gtk_object_unref (GTK_OBJECT (comp));
-}
-
-/* Fills in the exception widgets with the data from the calendar component */
-static void
-fill_exception_widgets (EventEditor *ee)
-{
- EventEditorPrivate *priv;
- GSList *list, *l;
- gboolean added;
-
- priv = ee->priv;
- g_assert (priv->comp != NULL);
-
- /* Exceptions list */
-
- cal_component_get_exdate_list (priv->comp, &list);
-
- added = FALSE;
-
- for (l = list; l; l = l->next) {
- CalComponentDateTime *cdt;
- time_t ext;
-
- added = TRUE;
-
- cdt = l->data;
- ext = icaltime_as_timet (*cdt->value);
- append_exception (ee, ext);
- }
-
- cal_component_free_exdate_list (list);
-
- if (added)
- gtk_clist_select_row (GTK_CLIST (priv->recurrence_exception_list), 0, 0);
-}
-
-/* Computes a weekday mask for the start day of a calendar component, for use in
- * a WeekdayPicker widget.
- */
-static guint8
-get_start_weekday_mask (CalComponent *comp)
-{
- CalComponentDateTime dt;
- guint8 retval;
-
- cal_component_get_dtstart (comp, &dt);
-
- if (dt.value) {
- time_t t;
- struct tm tm;
-
- t = icaltime_as_timet (*dt.value);
- tm = *localtime (&t);
-
- retval = 0x1 << tm.tm_wday;
- } else
- retval = 0;
-
- cal_component_free_datetime (&dt);
-
- return retval;
-}
-
-/* Sets some sane defaults for the data sources for the recurrence special
- * widgets, even if they will not be used immediately.
- */
-static void
-set_recur_special_defaults (EventEditor *ee)
-{
- EventEditorPrivate *priv;
- guint8 mask;
-
- priv = ee->priv;
-
- mask = get_start_weekday_mask (priv->comp);
-
- priv->recurrence_weekday_day_mask = mask;
- priv->recurrence_weekday_blocked_day_mask = mask;
-}
-
-static char *
-get_alarm_duration_string (struct icaldurationtype *duration)
-{
- GString *string = g_string_new (NULL);
- char *ret;
-
- if (duration->days > 1)
- g_string_sprintf (string, _(" %d days"), duration->days);
- else if (duration->days == 1)
- g_string_append (string, _(" 1 day"));
-
- if (duration->weeks > 1)
- g_string_sprintf (string, _(" %d weeks"), duration->weeks);
- else if (duration->weeks == 1)
- g_string_append (string, _(" 1 week"));
-
- if (duration->hours > 1)
- g_string_sprintf (string, _(" %d hours"), duration->hours);
- else if (duration->hours == 1)
- g_string_append (string, _(" 1 hour"));
-
- if (duration->minutes > 1)
- g_string_sprintf (string, _(" %d minutes"), duration->minutes);
- else if (duration->minutes == 1)
- g_string_append (string, _(" 1 minute"));
-
- if (duration->seconds > 1)
- g_string_sprintf (string, _(" %d seconds"), duration->seconds);
- else if (duration->seconds == 1)
- g_string_append (string, _(" 1 second"));
-
- ret = string->str;
- g_string_free (string, FALSE);
-
- return ret;
-}
-
-static char *
-get_alarm_string (CalComponentAlarm *alarm)
-{
- CalAlarmAction action;
- CalAlarmTrigger trigger;
- char string[256];
- char *dur;
-
- string [0] = '\0';
-
- cal_component_alarm_get_action (alarm, &action);
- cal_component_alarm_get_trigger (alarm, &trigger);
-
- switch (action) {
- case CAL_ALARM_AUDIO:
- strcat (string, _("Play a sound"));
- break;
- case CAL_ALARM_DISPLAY:
- strcat (string, _("Show a dialog"));
- break;
- case CAL_ALARM_EMAIL:
- strcat (string, _("Send an email"));
- break;
- case CAL_ALARM_PROCEDURE:
- strcat (string, _("Run a program"));
- break;
- case CAL_ALARM_NONE:
- case CAL_ALARM_UNKNOWN:
- strcat (string, _("Unknown"));
- break;
- }
-
- switch (trigger.type) {
- case CAL_ALARM_TRIGGER_RELATIVE_START:
- dur = get_alarm_duration_string (&trigger.u.rel_duration);
- strcat (string, dur);
- g_free (dur);
-
- if (trigger.u.rel_duration.is_neg)
- strcat (string, _(" before start of appointment"));
- else
- strcat (string, _(" after start of appointment"));
- break;
- case CAL_ALARM_TRIGGER_RELATIVE_END:
- dur = get_alarm_duration_string (&trigger.u.rel_duration);
- strcat (string, dur);
- g_free (dur);
-
- if (trigger.u.rel_duration.is_neg)
- strcat (string, _(" before end of appointment"));
- else
- strcat (string, _(" after end of appointment"));
- break;
- case CAL_ALARM_TRIGGER_NONE:
- case CAL_ALARM_TRIGGER_ABSOLUTE:
- strcat (string, _("Unknown"));
- break;
- }
-
- return g_strdup (string);
-}
-
-static void
-fill_reminder_widgets (EventEditor *ee)
-{
- EventEditorPrivate *priv;
- GList *alarms, *l;
- GtkCList *clist;
-
- int row = 0;
-
- priv = ee->priv;
- g_assert (priv->comp != NULL);
-
- if (!cal_component_has_alarms (priv->comp))
- return;
-
- alarms = cal_component_get_alarm_uids (priv->comp);
-
- clist = GTK_CLIST (priv->reminder_list);
- for (l = alarms; l != NULL; l = l->next, row++) {
- CalComponentAlarm *ca = cal_component_get_alarm (priv->comp, l->data);
-
- /* Add it to the clist */
- append_reminder (ee, ca, EXISTING_ALARM);
- }
- cal_obj_uid_list_free (alarms);
-}
-
-/* Fills in the recurrence widgets with the values from the calendar component.
- * This function is particularly tricky because it has to discriminate between
- * recurrences we support for editing and the ones we don't. We only support at
- * most one recurrence rule; no rdates or exrules (exdates are handled just fine
- * elsewhere).
- */
-static void
-fill_recurrence_widgets (EventEditor *ee)
-{
- EventEditorPrivate *priv;
- GSList *rrule_list;
- int len;
- struct icalrecurrencetype *r;
- int n_by_second, n_by_minute, n_by_hour;
- int n_by_day, n_by_month_day, n_by_year_day;
- int n_by_week_no, n_by_month, n_by_set_pos;
- GtkWidget *menu;
- GtkAdjustment *adj;
-
- priv = ee->priv;
- g_assert (priv->comp != NULL);
-
- fill_exception_widgets (ee);
-
- /* Set up defaults for the special widgets */
-
- set_recur_special_defaults (ee);
-
- /* No recurrences? */
-
- if (!cal_component_has_rdates (priv->comp)
- && !cal_component_has_rrules (priv->comp)
- && !cal_component_has_exrules (priv->comp)) {
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->recurrence_none), ee);
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->recurrence_simple), ee);
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->recurrence_custom), ee);
- e_dialog_radio_set (priv->recurrence_none, RECUR_NONE, recur_type_map);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->recurrence_none), ee);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->recurrence_simple), ee);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->recurrence_custom), ee);
-
- gtk_widget_set_sensitive (priv->recurrence_custom, FALSE);
-
- sensitize_recur_widgets (ee);
- preview_recur (ee);
- return;
- }
-
- /* See if it is a custom set we don't support */
-
- cal_component_get_rrule_list (priv->comp, &rrule_list);
- len = g_slist_length (rrule_list);
- if (len > 1
- || cal_component_has_rdates (priv->comp)
- || cal_component_has_exrules (priv->comp))
- goto custom;
-
- /* Down to one rule, so test that one */
-
- g_assert (len == 1);
- r = rrule_list->data;
-
- /* Any funky frequency? */
-
- if (r->freq == ICAL_SECONDLY_RECURRENCE
- || r->freq == ICAL_MINUTELY_RECURRENCE
- || r->freq == ICAL_HOURLY_RECURRENCE)
- goto custom;
-
- /* Any funky shit? */
-
-#define N_HAS_BY(field) (count_by_xxx (field, sizeof (field) / sizeof (field[0])))
-
- n_by_second = N_HAS_BY (r->by_second);
- n_by_minute = N_HAS_BY (r->by_minute);
- n_by_hour = N_HAS_BY (r->by_hour);
- n_by_day = N_HAS_BY (r->by_day);
- n_by_month_day = N_HAS_BY (r->by_month_day);
- n_by_year_day = N_HAS_BY (r->by_year_day);
- n_by_week_no = N_HAS_BY (r->by_week_no);
- n_by_month = N_HAS_BY (r->by_month);
- n_by_set_pos = N_HAS_BY (r->by_set_pos);
-
- if (n_by_second != 0
- || n_by_minute != 0
- || n_by_hour != 0)
- goto custom;
-
- /* Filter the funky shit based on the frequency; if there is nothing
- * weird we can actually set the widgets.
- */
-
- switch (r->freq) {
- case ICAL_DAILY_RECURRENCE:
- if (n_by_day != 0
- || n_by_month_day != 0
- || n_by_year_day != 0
- || n_by_week_no != 0
- || n_by_month != 0
- || n_by_set_pos != 0)
- goto custom;
-
- menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (priv->recurrence_interval_unit));
- gtk_signal_handler_block_by_data (GTK_OBJECT (menu), ee);
- e_dialog_option_menu_set (priv->recurrence_interval_unit, ICAL_DAILY_RECURRENCE,
- recur_freq_map);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (menu), ee);
- break;
-
- case ICAL_WEEKLY_RECURRENCE: {
- int i;
- guint8 day_mask;
-
- if (n_by_month_day != 0
- || n_by_year_day != 0
- || n_by_week_no != 0
- || n_by_month != 0
- || n_by_set_pos != 0)
- goto custom;
-
- day_mask = 0;
-
- for (i = 0; i < 8 && r->by_day[i] != ICAL_RECURRENCE_ARRAY_MAX; i++) {
- enum icalrecurrencetype_weekday weekday;
- int pos;
-
- weekday = icalrecurrencetype_day_day_of_week (r->by_day[i]);
- pos = icalrecurrencetype_day_position (r->by_day[i]);
-
- if (pos != 0)
- goto custom;
-
- switch (weekday) {
- case ICAL_SUNDAY_WEEKDAY:
- day_mask |= 1 << 0;
- break;
-
- case ICAL_MONDAY_WEEKDAY:
- day_mask |= 1 << 1;
- break;
-
- case ICAL_TUESDAY_WEEKDAY:
- day_mask |= 1 << 2;
- break;
-
- case ICAL_WEDNESDAY_WEEKDAY:
- day_mask |= 1 << 3;
- break;
-
- case ICAL_THURSDAY_WEEKDAY:
- day_mask |= 1 << 4;
- break;
-
- case ICAL_FRIDAY_WEEKDAY:
- day_mask |= 1 << 5;
- break;
-
- case ICAL_SATURDAY_WEEKDAY:
- day_mask |= 1 << 6;
- break;
-
- default:
- break;
- }
- }
-
- priv->recurrence_weekday_day_mask = day_mask;
-
- menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (priv->recurrence_interval_unit));
- gtk_signal_handler_block_by_data (GTK_OBJECT (menu), ee);
- e_dialog_option_menu_set (priv->recurrence_interval_unit, ICAL_WEEKLY_RECURRENCE,
- recur_freq_map);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (menu), ee);
- break;
- }
-
- case ICAL_MONTHLY_RECURRENCE:
- if (n_by_year_day != 0
- || n_by_week_no != 0
- || n_by_month != 0
- || n_by_set_pos != 0)
- goto custom;
-
- if (n_by_month_day == 1) {
- int nth;
-
- nth = r->by_month_day[0];
- if (nth < 1)
- goto custom;
-
- priv->recurrence_month_index = nth;
- priv->recurrence_month_day = MONTH_DAY_NTH;
- } else if (n_by_day == 1) {
- enum icalrecurrencetype_weekday weekday;
- int pos;
- enum month_day_options month_day;
-
- weekday = icalrecurrencetype_day_day_of_week (r->by_day[0]);
- pos = icalrecurrencetype_day_position (r->by_day[0]);
-
- if (pos < 1)
- goto custom;
-
- switch (weekday) {
- case ICAL_MONDAY_WEEKDAY:
- month_day = MONTH_DAY_MON;
- break;
-
- case ICAL_TUESDAY_WEEKDAY:
- month_day = MONTH_DAY_TUE;
- break;
-
- case ICAL_WEDNESDAY_WEEKDAY:
- month_day = MONTH_DAY_WED;
- break;
-
- case ICAL_THURSDAY_WEEKDAY:
- month_day = MONTH_DAY_THU;
- break;
-
- case ICAL_FRIDAY_WEEKDAY:
- month_day = MONTH_DAY_FRI;
- break;
-
- case ICAL_SATURDAY_WEEKDAY:
- month_day = MONTH_DAY_SAT;
- break;
-
- case ICAL_SUNDAY_WEEKDAY:
- month_day = MONTH_DAY_SUN;
- break;
-
- default:
- goto custom;
- }
-
- priv->recurrence_month_index = pos;
- priv->recurrence_month_day = month_day;
- } else
- goto custom;
-
- menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (priv->recurrence_interval_unit));
- gtk_signal_handler_block_by_data (GTK_OBJECT (menu), ee);
- e_dialog_option_menu_set (priv->recurrence_interval_unit, ICAL_MONTHLY_RECURRENCE,
- recur_freq_map);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (menu), ee);
- break;
-
- case ICAL_YEARLY_RECURRENCE:
- if (n_by_day != 0
- || n_by_month_day != 0
- || n_by_year_day != 0
- || n_by_week_no != 0
- || n_by_month != 0
- || n_by_set_pos != 0)
- goto custom;
-
- menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (priv->recurrence_interval_unit));
- gtk_signal_handler_block_by_data (GTK_OBJECT (menu), ee);
- e_dialog_option_menu_set (priv->recurrence_interval_unit, ICAL_YEARLY_RECURRENCE,
- recur_freq_map);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (menu), ee);
- break;
-
- default:
- goto custom;
- }
-
- /* If we got here it means it is a simple recurrence */
-
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->recurrence_none), ee);
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->recurrence_simple), ee);
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->recurrence_custom), ee);
- e_dialog_radio_set (priv->recurrence_simple, RECUR_SIMPLE, recur_type_map);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->recurrence_none), ee);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->recurrence_simple), ee);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->recurrence_custom), ee);
-
- gtk_widget_set_sensitive (priv->recurrence_custom, FALSE);
-
- sensitize_recur_widgets (ee);
- make_recurrence_special (ee);
-
- adj = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (priv->recurrence_interval_value));
- gtk_signal_handler_block_by_data (GTK_OBJECT (adj), ee);
- e_dialog_spin_set (priv->recurrence_interval_value, r->interval);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (adj), ee);
-
- fill_ending_date (ee, r);
-
- goto out;
-
- custom:
-
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->recurrence_none), ee);
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->recurrence_simple), ee);
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->recurrence_custom), ee);
- e_dialog_radio_set (priv->recurrence_custom, RECUR_CUSTOM, recur_type_map);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->recurrence_none), ee);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->recurrence_simple), ee);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->recurrence_custom), ee);
-
- gtk_widget_set_sensitive (priv->recurrence_custom, TRUE);
- sensitize_recur_widgets (ee);
-
- out:
-
- cal_component_free_recur_list (rrule_list);
- preview_recur (ee);
-}
-
-/* Fills in the widgets with the value from the calendar component */
-static void
-fill_widgets (EventEditor *ee)
-{
- EventEditorPrivate *priv;
- CalComponentText text;
- CalComponentClassification cl;
- CalComponentDateTime d;
- GSList *l;
- time_t dtstart, dtend;
- const char *categories;
-
- priv = ee->priv;
-
- clear_widgets (ee);
-
- if (!priv->comp)
- return;
-
- /* Summary, description(s) */
-
- cal_component_get_summary (priv->comp, &text);
- e_dialog_editable_set (priv->general_summary, text.value); /* will also set recur summary */
-
- cal_component_get_description_list (priv->comp, &l);
- if (l) {
- text = *(CalComponentText *)l->data;
- e_dialog_editable_set (priv->description, text.value);
- }
- cal_component_free_text_list (l);
-
- /* Start and end times */
-
- /* All-day events are inclusive, i.e. if the end date shown is 2nd Feb
- then the event includes all of the 2nd Feb. We would normally show
- 3rd Feb as the end date, since it really ends at midnight on 3rd,
- so we have to subtract a day so we only show the 2nd. */
- cal_component_get_dtstart (priv->comp, &d);
- dtstart = icaltime_as_timet (*d.value);
- cal_component_free_datetime (&d);
-
- cal_component_get_dtend (priv->comp, &d);
- dtend = icaltime_as_timet (*d.value);
- cal_component_free_datetime (&d);
-
- if (time_day_begin (dtstart) == dtstart
- && time_day_begin (dtend) == dtend) {
- dtend = time_add_day (dtend, -1);
- }
-
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->start_time), ee);
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->end_time), ee);
-
- e_date_edit_set_time (E_DATE_EDIT (priv->start_time), dtstart);
- e_date_edit_set_time (E_DATE_EDIT (priv->reminder_starting_date), dtstart);
- e_date_edit_set_time (E_DATE_EDIT (priv->recurrence_starting_date), dtstart);
- e_date_edit_set_time (E_DATE_EDIT (priv->end_time), dtend);
-
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->start_time), ee);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->end_time), ee);
-
- check_all_day (ee);
-
- /* Classification */
-
- cal_component_get_classification (priv->comp, &cl);
-
- switch (cl) {
- case CAL_COMPONENT_CLASS_PUBLIC:
- e_dialog_radio_set (priv->classification_public, CAL_COMPONENT_CLASS_PUBLIC,
- classification_map);
- case CAL_COMPONENT_CLASS_PRIVATE:
- e_dialog_radio_set (priv->classification_public, CAL_COMPONENT_CLASS_PRIVATE,
- classification_map);
- case CAL_COMPONENT_CLASS_CONFIDENTIAL:
- e_dialog_radio_set (priv->classification_public, CAL_COMPONENT_CLASS_CONFIDENTIAL,
- classification_map);
- default:
- /* What do do? We can't g_assert_not_reached() since it is a
- * value from an external file.
- */
- }
-
- /* Categories */
- cal_component_get_categories (priv->comp, &categories);
- e_dialog_editable_set (priv->categories, categories);
-
- /* Reminders */
- fill_reminder_widgets (ee);
-
- /* Recurrences */
- fill_recurrence_widgets (ee);
-
- /* Do this last, since the callbacks will set it to TRUE. */
- event_editor_set_changed (ee, FALSE);
-}
-
-
-/**
- * event_editor_update_widgets:
- * @ee: An event editor.
- *
- * Causes an event editor dialog to re-read the values of its calendar component
- * object. This function should be used if the #CalComponent is changed by
- * external means while it is open in the editor.
- **/
-void
-event_editor_update_widgets (EventEditor *ee)
-{
- g_return_if_fail (ee != NULL);
- g_return_if_fail (IS_EVENT_EDITOR (ee));
-
- fill_widgets (ee);
-}
-
-
-
-/* Decode the radio button group for classifications */
-static CalComponentClassification
-classification_get (GtkWidget *widget)
-{
- return e_dialog_radio_get (widget, classification_map);
-}
-
-/* Encondes a position/weekday pair into the proper format for
- * icalrecurrencetype.by_day.
- */
-static short
-nth_weekday (int pos, icalrecurrencetype_weekday weekday)
-{
- g_assert (pos > 0 && pos <= 5);
-
- return (pos << 3) | (int) weekday;
-}
-
-static void
-reminder_to_comp_object (EventEditor *ee, CalComponent *comp)
-{
- EventEditorPrivate *priv;
- GtkCList *reminder_list;
- ReminderData *rdata;
- int i;
-
- priv = ee->priv;
-
- reminder_list = GTK_CLIST (priv->reminder_list);
- for (i = 0; i < reminder_list->rows; i++) {
- rdata = gtk_clist_get_row_data (reminder_list, i);
- if (rdata->status == NEW_ALARM)
- cal_component_add_alarm (priv->comp, rdata->alarm);
- g_free (rdata);
- }
-}
-
-/* Gets the simple recurrence data from the recurrence widgets and stores it in
- * the calendar component object.
- */
-static void
-simple_recur_to_comp_object (EventEditor *ee, CalComponent *comp)
-{
- EventEditorPrivate *priv;
- struct icalrecurrencetype r;
- GSList l;
- enum ending_type ending_type;
-
- priv = ee->priv;
-
- icalrecurrencetype_clear (&r);
-
- /* Frequency, interval, week start */
-
- r.freq = e_dialog_option_menu_get (priv->recurrence_interval_unit, recur_freq_map);
- r.interval = e_dialog_spin_get_int (priv->recurrence_interval_value);
- r.week_start = ICAL_SUNDAY_WEEKDAY + calendar_config_get_week_start_day ();
-
- /* Frequency-specific data */
-
- switch (r.freq) {
- case ICAL_DAILY_RECURRENCE:
- /* Nothing else is required */
- break;
-
- case ICAL_WEEKLY_RECURRENCE: {
- guint8 day_mask;
- int i;
-
- g_assert (GTK_BIN (priv->recurrence_special)->child != NULL);
- g_assert (priv->recurrence_weekday_picker != NULL);
- g_assert (IS_WEEKDAY_PICKER (priv->recurrence_weekday_picker));
-
- day_mask = weekday_picker_get_days (WEEKDAY_PICKER (priv->recurrence_weekday_picker));
-
- i = 0;
-
- if (day_mask & (1 << 0))
- r.by_day[i++] = ICAL_SUNDAY_WEEKDAY;
-
- if (day_mask & (1 << 1))
- r.by_day[i++] = ICAL_MONDAY_WEEKDAY;
-
- if (day_mask & (1 << 2))
- r.by_day[i++] = ICAL_TUESDAY_WEEKDAY;
-
- if (day_mask & (1 << 3))
- r.by_day[i++] = ICAL_WEDNESDAY_WEEKDAY;
-
- if (day_mask & (1 << 4))
- r.by_day[i++] = ICAL_THURSDAY_WEEKDAY;
-
- if (day_mask & (1 << 5))
- r.by_day[i++] = ICAL_FRIDAY_WEEKDAY;
-
- if (day_mask & (1 << 6))
- r.by_day[i++] = ICAL_SATURDAY_WEEKDAY;
-
- break;
- }
-
- case ICAL_MONTHLY_RECURRENCE: {
- int day_index;
- enum month_day_options month_day;
-
- g_assert (GTK_BIN (priv->recurrence_special)->child != NULL);
- g_assert (priv->recurrence_month_index_spin != NULL);
- g_assert (GTK_IS_SPIN_BUTTON (priv->recurrence_month_index_spin));
- g_assert (priv->recurrence_month_day_menu != NULL);
- g_assert (GTK_IS_OPTION_MENU (priv->recurrence_month_day_menu));
-
- day_index = e_dialog_spin_get_int (priv->recurrence_month_index_spin);
- month_day = e_dialog_option_menu_get (priv->recurrence_month_day_menu,
- month_day_options_map);
-
- switch (month_day) {
- case MONTH_DAY_NTH:
- r.by_month_day[0] = day_index;
- break;
-
- case MONTH_DAY_MON:
- r.by_day[0] = nth_weekday (day_index, ICAL_MONDAY_WEEKDAY);
- break;
-
- case MONTH_DAY_TUE:
- r.by_day[0] = nth_weekday (day_index, ICAL_TUESDAY_WEEKDAY);
- break;
-
- case MONTH_DAY_WED:
- r.by_day[0] = nth_weekday (day_index, ICAL_WEDNESDAY_WEEKDAY);
- break;
-
- case MONTH_DAY_THU:
- r.by_day[0] = nth_weekday (day_index, ICAL_THURSDAY_WEEKDAY);
- break;
-
- case MONTH_DAY_FRI:
- r.by_day[0] = nth_weekday (day_index, ICAL_FRIDAY_WEEKDAY);
- break;
-
- case MONTH_DAY_SAT:
- r.by_day[0] = nth_weekday (day_index, ICAL_SATURDAY_WEEKDAY);
- break;
-
- case MONTH_DAY_SUN:
- r.by_day[0] = nth_weekday (day_index, ICAL_SUNDAY_WEEKDAY);
- break;
-
- default:
- g_assert_not_reached ();
- }
-
- break;
- }
-
- case ICAL_YEARLY_RECURRENCE:
- /* Nothing else is required */
- break;
-
- default:
- g_assert_not_reached ();
- }
-
- /* Ending date */
-
- ending_type = e_dialog_option_menu_get (priv->recurrence_ending_menu, ending_types_map);
-
- switch (ending_type) {
- case ENDING_FOR:
- g_assert (priv->recurrence_ending_count_spin != NULL);
- g_assert (GTK_IS_SPIN_BUTTON (priv->recurrence_ending_count_spin));
-
- r.count = e_dialog_spin_get_int (priv->recurrence_ending_count_spin);
- break;
-
- case ENDING_UNTIL:
- g_assert (priv->recurrence_ending_date_edit != NULL);
- g_assert (E_IS_DATE_EDIT (priv->recurrence_ending_date_edit));
-
- r.until = icaltime_from_timet (
- e_date_edit_get_time (E_DATE_EDIT (priv->recurrence_ending_date_edit)),
- TRUE);
- break;
-
- case ENDING_FOREVER:
- /* Nothing to be done */
- break;
-
- default:
- g_assert_not_reached ();
- }
-
- /* Set the recurrence */
-
- l.data = &r;
- l.next = NULL;
-
- cal_component_set_rrule_list (comp, &l);
-}
-
-/* Gets the data from the recurrence widgets and stores it in the calendar
- * component object.
- */
-static void
-recur_to_comp_object (EventEditor *ee, CalComponent *comp)
-{
- EventEditorPrivate *priv;
- enum recur_type recur_type;
- GtkCList *exception_list;
- GSList *list;
- int i;
-
- priv = ee->priv;
-
- recur_type = e_dialog_radio_get (priv->recurrence_none, recur_type_map);
-
- switch (recur_type) {
- case RECUR_NONE:
- cal_component_set_rdate_list (comp, NULL);
- cal_component_set_rrule_list (comp, NULL);
- cal_component_set_exrule_list (comp, NULL);
- break;
-
- case RECUR_SIMPLE:
- cal_component_set_rdate_list (comp, NULL);
- cal_component_set_exrule_list (comp, NULL);
- simple_recur_to_comp_object (ee, comp);
- break;
-
- case RECUR_CUSTOM:
- /* We just keep whatever the component has currently */
- break;
-
- default:
- g_assert_not_reached ();
- }
-
- /* Set exceptions */
-
- list = NULL;
- exception_list = GTK_CLIST (priv->recurrence_exception_list);
- for (i = 0; i < exception_list->rows; i++) {
- CalComponentDateTime *cdt;
- time_t *tim;
-
- cdt = g_new (CalComponentDateTime, 1);
- cdt->value = g_new (struct icaltimetype, 1);
- cdt->tzid = NULL;
-
- tim = gtk_clist_get_row_data (exception_list, i);
- g_assert (tim != NULL);
- *cdt->value = icaltime_from_timet (*tim, FALSE);
-
- list = g_slist_prepend (list, cdt);
- }
-
- cal_component_set_exdate_list (comp, list);
- cal_component_free_exdate_list (list);
-}
-
-/* Gets the data from the widgets and stores it in the calendar component object */
-static void
-dialog_to_comp_object (EventEditor *ee, CalComponent *comp)
-{
- EventEditorPrivate *priv;
- CalComponentDateTime date;
- time_t t;
- gboolean all_day_event;
- char *cat, *str;
-
- priv = ee->priv;
-
- /* Summary */
-
- str = e_dialog_editable_get (priv->general_summary);
- if (!str || strlen (str) == 0)
- cal_component_set_summary (comp, NULL);
- else {
- CalComponentText text;
-
- text.value = str;
- text.altrep = NULL;
-
- cal_component_set_summary (comp, &text);
- }
-
- if (str)
- g_free (str);
-
- /* Description */
-
- str = e_dialog_editable_get (priv->description);
- if (!str || strlen (str) == 0)
- cal_component_set_description_list (comp, NULL);
- else {
- GSList l;
- CalComponentText text;
-
- text.value = str;
- text.altrep = NULL;
- l.data = &text;
- l.next = NULL;
-
- cal_component_set_description_list (comp, &l);
- }
-
- if (str)
- g_free (str);
-
- /* Dates */
-
- date.value = g_new (struct icaltimetype, 1);
- date.tzid = NULL;
-
- t = e_date_edit_get_time (E_DATE_EDIT (priv->start_time));
- if (t != -1) {
- *date.value = icaltime_from_timet (t, FALSE);
- cal_component_set_dtstart (comp, &date);
- } else {
- /* FIXME: What do we do here? */
- }
-
- /* If the all_day toggle is set, the end date is inclusive of the
- entire day on which it points to. */
- all_day_event = e_dialog_toggle_get (priv->all_day_event);
- t = e_date_edit_get_time (E_DATE_EDIT (priv->end_time));
- if (t != -1) {
- if (all_day_event)
- t = time_day_end (t);
-
- *date.value = icaltime_from_timet (t, FALSE);
- cal_component_set_dtend (comp, &date);
- } else {
- /* FIXME: What do we do here? */
- }
- g_free (date.value);
-
- /* Categories */
- cat = e_dialog_editable_get (priv->categories);
- cal_component_set_categories (comp, cat);
-
- if (cat)
- g_free (cat);
-
- cal_component_set_classification (comp, classification_get (priv->classification_public));
-
- /* Reminder information */
- reminder_to_comp_object (ee, comp);
-
- /* Recurrence information */
- recur_to_comp_object (ee, comp);
-
- cal_component_commit_sequence (comp);
-}
-
-/* Fills the calendar component object from the data in the widgets and commits
- * the component to the storage.
- */
-static void
-save_event_object (EventEditor *ee)
-{
- EventEditorPrivate *priv;
-
- priv = ee->priv;
-
- if (!priv->comp)
- return;
-
- dialog_to_comp_object (ee, priv->comp);
- set_title_from_comp (ee, priv->comp);
-
- if (!cal_client_update_object (priv->client, priv->comp))
- g_message ("save_event_object(): Could not update the object!");
- else
- event_editor_set_changed (ee, FALSE);
-}
-
-/* Closes the dialog box and emits the appropriate signals */
-static void
-close_dialog (EventEditor *ee)
-{
- EventEditorPrivate *priv;
-
- priv = ee->priv;
-
- g_assert (priv->app != NULL);
-
- gtk_object_destroy (GTK_OBJECT (ee));
-}
-
-
-
-/* Callback used when the dialog box is "applied" */
-static void
-ee_apply_event_cb (GtkWidget *widget, gint page_num, gpointer data)
-{
- EventEditor *ee;
-
- g_return_if_fail (IS_EVENT_EDITOR (data));
-
- ee = EVENT_EDITOR (data);
-
- if (page_num != -1)
- return;
-
- save_event_object (ee);
-}
-
-/* Callback used when the dialog box is destroyed */
-static gint
-ee_close_event_cb (GtkWidget *widget, gpointer data)
-{
- EventEditor *ee;
-
- g_return_val_if_fail (IS_EVENT_EDITOR (data), TRUE);
-
- ee = EVENT_EDITOR (data);
-
- if (prompt_to_save_changes (ee))
- close_dialog (ee);
-
- return TRUE;
-}
-
-/* Callback used when the dialog box is destroyed */
-static gint
-ee_delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer data)
-{
- EventEditor *ee;
-
- g_return_val_if_fail (IS_EVENT_EDITOR (data), TRUE);
-
- ee = EVENT_EDITOR (data);
-
- if (prompt_to_save_changes (ee))
- close_dialog (ee);
-
- return TRUE;
-}
-
-/**
- * event_editor_construct:
- * @ee: An event editor.
- *
- * Constructs an event editor by loading its Glade data.
- *
- * Return value: The same object as @ee, or NULL if the widgets could not be
- * created. In the latter case, the event editor will automatically be
- * destroyed.
- **/
-EventEditor *
-event_editor_construct (EventEditor *ee)
-{
- EventEditorPrivate *priv;
-
- g_return_val_if_fail (ee != NULL, NULL);
- g_return_val_if_fail (IS_EVENT_EDITOR (ee), NULL);
-
- priv = ee->priv;
-
- /* Load the content widgets */
-
- priv->xml = glade_xml_new (EVOLUTION_GLADEDIR "/event-editor-dialog.glade", NULL);
- if (!priv->xml) {
- g_message ("event_editor_construct(): Could not load the Glade XML file!");
- goto error;
- }
-
- if (!get_widgets (ee)) {
- g_message ("event_editor_construct(): Could not find all widgets in the XML file!");
- goto error;
- }
-
- init_widgets (ee);
-
- /* Hook to destruction of the dialog */
- gtk_signal_connect (GTK_OBJECT (priv->app), "apply",
- GTK_SIGNAL_FUNC (ee_apply_event_cb), ee);
- gtk_signal_connect (GTK_OBJECT (priv->app), "close",
- GTK_SIGNAL_FUNC (ee_close_event_cb), ee);
- gtk_signal_connect (GTK_OBJECT (priv->app), "delete_event",
- GTK_SIGNAL_FUNC (ee_delete_event_cb), ee);
-
- /* Add focus to the summary entry */
- gtk_widget_grab_focus (GTK_WIDGET (priv->general_summary));
-
- return ee;
-
- error:
-
- gtk_object_unref (GTK_OBJECT (ee));
- return NULL;
-}
-
-/**
- * event_editor_new:
- *
- * Creates a new event editor dialog.
- *
- * Return value: A newly-created event editor dialog, or NULL if the event
- * editor could not be created.
- **/
-EventEditor *
-event_editor_new (void)
-{
- EventEditor *ee;
-
- ee = EVENT_EDITOR (gtk_type_new (TYPE_EVENT_EDITOR));
- return event_editor_construct (EVENT_EDITOR (ee));
-}
-
-/* Brings attention to a window by raising it and giving it focus */
-static void
-raise_and_focus (GtkWidget *widget)
-{
- g_assert (GTK_WIDGET_REALIZED (widget));
- gdk_window_show (widget->window);
- gtk_widget_grab_focus (widget);
-}
-
-/* Callback used when the calendar client tells us that an object changed */
-static void
-obj_updated_cb (CalClient *client, const char *uid, gpointer data)
-{
- /* FIXME: Do something sensible if the component changes under our feet */
-#if 0
- EventEditor *ee;
- EventEditorPrivate *priv;
- CalComponent *comp;
- CalClientGetStatus status;
- const gchar *editing_uid;
-
- ee = EVENT_EDITOR (data);
-
- g_return_if_fail (IS_EVENT_EDITOR (ee));
-
- priv = ee->priv;
-
- /* If we aren't showing the object which has been updated, return. */
- if (!priv->comp)
- return;
- cal_component_get_uid (priv->comp, &editing_uid);
- if (strcmp (uid, editing_uid))
- return;
-
-
- /* Get the event from the server. */
- status = cal_client_get_object (priv->client, uid, &comp);
-
- switch (status) {
- case CAL_CLIENT_GET_SUCCESS:
- /* Everything is fine */
- break;
-
- case CAL_CLIENT_GET_SYNTAX_ERROR:
- g_message ("obj_updated_cb(): Syntax error when getting object `%s'", uid);
- return;
-
- case CAL_CLIENT_GET_NOT_FOUND:
- /* The object is no longer in the server, so do nothing */
- return;
-
- default:
- g_assert_not_reached ();
- return;
- }
-
- raise_and_focus (priv->app);
-#endif
-}
-
-/* Callback used when the calendar client tells us that an object was removed */
-static void
-obj_removed_cb (CalClient *client, const char *uid, gpointer data)
-{
- /* FIXME: Do something sensible if the component is removed under our
- * feet.
- */
-#if 0
- EventEditor *ee;
- EventEditorPrivate *priv;
- const gchar *editing_uid;
-
- ee = EVENT_EDITOR (data);
-
- g_return_if_fail (ee != NULL);
- g_return_if_fail (IS_EVENT_EDITOR (ee));
-
- priv = ee->priv;
-
- /* If we aren't showing the object which has been updated, return. */
- if (!priv->comp)
- return;
- cal_component_get_uid (priv->comp, &editing_uid);
- if (strcmp (uid, editing_uid))
- return;
-
-
- raise_and_focus (priv->app);
-#endif
-}
-
-/**
- * event_editor_set_cal_client:
- * @ee: An event editor.
- * @client: Calendar client.
- *
- * Sets the calendar client than an event editor will use for updating its
- * calendar components.
- **/
-void
-event_editor_set_cal_client (EventEditor *ee, CalClient *client)
-{
- EventEditorPrivate *priv;
-
- g_return_if_fail (ee != NULL);
- g_return_if_fail (IS_EVENT_EDITOR (ee));
-
- priv = ee->priv;
-
- if (client == priv->client)
- return;
-
- if (client)
- g_return_if_fail (IS_CAL_CLIENT (client));
-
- if (client)
- g_return_if_fail (cal_client_get_load_state (client) == CAL_CLIENT_LOAD_LOADED);
-
- if (client)
- gtk_object_ref (GTK_OBJECT (client));
-
- if (priv->client) {
- gtk_signal_disconnect_by_data (GTK_OBJECT (priv->client), ee);
- gtk_object_unref (GTK_OBJECT (priv->client));
- }
-
- priv->client = client;
-
- if (priv->client) {
- gtk_signal_connect (GTK_OBJECT (priv->client), "obj_updated",
- GTK_SIGNAL_FUNC (obj_updated_cb), ee);
- gtk_signal_connect (GTK_OBJECT (priv->client), "obj_removed",
- GTK_SIGNAL_FUNC (obj_removed_cb), ee);
- }
-}
-
-/**
- * event_editor_get_cal_client:
- * @ee: An event editor.
- *
- * Queries the calendar client that an event editor is using to update its
- * calendar components.
- *
- * Return value: A calendar client object.
- **/
-CalClient *
-event_editor_get_cal_client (EventEditor *ee)
-{
- EventEditorPrivate *priv;
-
- g_return_val_if_fail (ee != NULL, NULL);
- g_return_val_if_fail (IS_EVENT_EDITOR (ee), NULL);
-
- priv = ee->priv;
- return priv->client;
-}
-
-/**
- * event_editor_set_event_object:
- * @ee: An event editor.
- * @comp: A calendar object.
- *
- * Sets the calendar object that an event editor dialog will manipulate.
- **/
-void
-event_editor_set_event_object (EventEditor *ee, CalComponent *comp)
-{
- EventEditorPrivate *priv;
-
- g_return_if_fail (ee != NULL);
- g_return_if_fail (IS_EVENT_EDITOR (ee));
-
- priv = ee->priv;
-
- if (priv->comp) {
- gtk_object_unref (GTK_OBJECT (priv->comp));
- priv->comp = NULL;
- }
-
- if (comp) {
- priv->comp = cal_component_clone (comp);
- }
-
- set_title_from_comp (ee, priv->comp);
- fill_widgets (ee);
-}
-
-/**
- * event_editor_focus:
- * @ee: An event editor.
- *
- * Makes sure an event editor is shown, on top of other windows, and focused.
- **/
-void
-event_editor_focus (EventEditor *ee)
-{
- EventEditorPrivate *priv;
-
- g_return_if_fail (ee != NULL);
- g_return_if_fail (IS_EVENT_EDITOR (ee));
-
- priv = ee->priv;
- gtk_widget_show_now (priv->app);
- raise_and_focus (priv->app);
-}
-
-/* Checks if the event's time starts and ends at midnight, and sets the
- * "all day event" box accordingly.
- */
-static void
-check_all_day (EventEditor *ee)
-{
- EventEditorPrivate *priv;
- time_t ev_start, ev_end;
- gboolean all_day = FALSE;
-
- priv = ee->priv;
-
- /* Currently we just return if the date is not set or not valid.
- I'm not entirely sure this is the corrent thing to do. */
- ev_start = e_date_edit_get_time (E_DATE_EDIT (priv->start_time));
- g_return_if_fail (ev_start != -1);
-
- ev_end = e_date_edit_get_time (E_DATE_EDIT (priv->end_time));
- g_return_if_fail (ev_end != -1);
-
- /* all day event checkbox */
- if (time_day_begin (ev_start) == ev_start
- && time_day_begin (ev_end) == ev_end)
- all_day = TRUE;
-
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->all_day_event), ee);
-
- e_dialog_toggle_set (priv->all_day_event, all_day);
-
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->all_day_event), ee);
-
- e_date_edit_set_show_time (E_DATE_EDIT (priv->start_time), !all_day);
- e_date_edit_set_show_time (E_DATE_EDIT (priv->end_time), !all_day);
-}
-
-/*
- * Callback: all day event button toggled.
- * Note that this should only be called when the user explicitly toggles the
- * button. Be sure to block this handler when the toggle button's state is set
- * within the code.
- */
-static void
-set_all_day (GtkWidget *toggle, EventEditor *ee)
-{
- EventEditorPrivate *priv;
- struct tm start_tm, end_tm;
- time_t start_t, end_t;
- gboolean all_day;
-
- priv = ee->priv;
-
- event_editor_set_changed (ee, TRUE);
-
- /* When the all_day toggle is turned on, the start date is rounded down
- to the start of the day, and end date is rounded down to the start
- of the day on which the event ends. The event is then taken to be
- inclusive of the days between the start and end days.
- Note that if the event end is at midnight, we do not round it down
- to the previous day, since if we do that and the user repeatedly
- turns the all_day toggle on and off, the event keeps shrinking.
- (We'd also need to make sure we didn't adjust the time when the
- radio button is initially set.)
-
- When the all_day_toggle is turned off, we set the event start to the
- start of the working day, and if the event end is on or before the
- day of the event start we set it to one hour after the event start.
- */
- all_day = GTK_TOGGLE_BUTTON (toggle)->active;
-
- /*
- * Start time.
- */
- start_t = e_date_edit_get_time (E_DATE_EDIT (priv->start_time));
- g_return_if_fail (start_t != -1);
-
- start_tm = *localtime (&start_t);
-
- if (all_day) {
- /* Round down to the start of the day. */
- start_tm.tm_hour = 0;
- start_tm.tm_min = 0;
- start_tm.tm_sec = 0;
- } else {
- /* Set to the start of the working day. */
- start_tm.tm_hour = calendar_config_get_day_start_hour ();
- start_tm.tm_min = calendar_config_get_day_start_minute ();
- start_tm.tm_sec = 0;
- }
-
- /*
- * End time.
- */
- end_t = e_date_edit_get_time (E_DATE_EDIT (priv->end_time));
- g_return_if_fail (end_t != -1);
-
- end_tm = *localtime (&end_t);
-
- if (all_day) {
- /* Round down to the start of the day. */
- end_tm.tm_hour = 0;
- end_tm.tm_min = 0;
- end_tm.tm_sec = 0;
- } else {
- /* If the event end is now on or before the event start day,
- make it end one hour after the start. mktime() will fix any
- overflows. */
- if (end_tm.tm_year < start_tm.tm_year
- || (end_tm.tm_year == start_tm.tm_year
- && end_tm.tm_mon < start_tm.tm_mon)
- || (end_tm.tm_year == start_tm.tm_year
- && end_tm.tm_mon == start_tm.tm_mon
- && end_tm.tm_mday <= start_tm.tm_mday)) {
- end_tm.tm_year = start_tm.tm_year;
- end_tm.tm_mon = start_tm.tm_mon;
- end_tm.tm_mday = start_tm.tm_mday;
- end_tm.tm_hour = start_tm.tm_hour + 1;
- }
- }
-
- /* Block date_changed_cb, or dates_changed() will be called after the
- start time is set (but before the end time is set) and will call
- check_all_day() and mess us up. */
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->start_time), ee);
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->end_time), ee);
-
- /* will set recur start too */
- e_date_edit_set_time (E_DATE_EDIT (priv->start_time), mktime (&start_tm));
-
- e_date_edit_set_time (E_DATE_EDIT (priv->end_time), mktime (&end_tm));
-
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->start_time), ee);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->end_time), ee);
-
- e_date_edit_set_show_time (E_DATE_EDIT (priv->start_time), !all_day);
- e_date_edit_set_show_time (E_DATE_EDIT (priv->end_time), !all_day);
-
- preview_recur (ee);
-}
-
-/* Callback used when the start or end date widgets change. We check that the
- * start date < end date and we set the "all day event" button as appropriate.
- */
-static void
-date_changed_cb (EDateEdit *dedit, gpointer data)
-{
- EventEditor *ee;
- EventEditorPrivate *priv;
- time_t start, end;
- struct tm tm_start, tm_end;
-
- ee = EVENT_EDITOR (data);
- priv = ee->priv;
-
- event_editor_set_changed (ee, TRUE);
-
- /* Ensure that start < end */
-
- start = e_date_edit_get_time (E_DATE_EDIT (priv->start_time));
- g_return_if_fail (start != -1);
- end = e_date_edit_get_time (E_DATE_EDIT (priv->end_time));
- g_return_if_fail (end != -1);
-
- if (start >= end) {
- tm_start = *localtime (&start);
- tm_end = *localtime (&end);
-
- if (start == end && tm_start.tm_hour == 0
- && tm_start.tm_min == 0 && tm_start.tm_sec == 0) {
- /* If the start and end times are the same, but both
- are on day boundaries, then that is OK since it
- means we have an all-day event lasting 1 day.
- So we do nothing here. */
-
- } else if (GTK_WIDGET (dedit) == priv->start_time) {
- /* Modify the end time */
-
- tm_end.tm_year = tm_start.tm_year;
- tm_end.tm_mon = tm_start.tm_mon;
- tm_end.tm_mday = tm_start.tm_mday;
- tm_end.tm_hour = tm_start.tm_hour + 1;
- tm_end.tm_min = tm_start.tm_min;
- tm_end.tm_sec = tm_start.tm_sec;
-
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->end_time), ee);
- e_date_edit_set_time (E_DATE_EDIT (priv->end_time), mktime (&tm_end));
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->end_time), ee);
- } else if (GTK_WIDGET (dedit) == priv->end_time) {
- /* Modify the start time */
-
- tm_start.tm_year = tm_end.tm_year;
- tm_start.tm_mon = tm_end.tm_mon;
- tm_start.tm_mday = tm_end.tm_mday;
- tm_start.tm_hour = tm_end.tm_hour - 1;
- tm_start.tm_min = tm_end.tm_min;
- tm_start.tm_sec = tm_end.tm_sec;
-
- gtk_signal_handler_block_by_data (GTK_OBJECT (priv->start_time), ee);
- e_date_edit_set_time (E_DATE_EDIT (priv->start_time), mktime (&tm_start));
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->start_time), ee);
- } else
- g_assert_not_reached ();
- }
-
- /* Set the "all day event" button as appropriate */
-
- check_all_day (ee);
-
- /* Retag the recurrence preview calendar */
-
- preview_recur (ee);
-}
-
-/* Appends an alarm to the list */
-static void
-append_reminder (EventEditor *ee, CalComponentAlarm *alarm, ReminderStatus status)
-{
- EventEditorPrivate *priv;
- GtkCList *clist;
- ReminderData *rdata;
- char *c[1];
- int i;
-
- priv = ee->priv;
-
- clist = GTK_CLIST (priv->reminder_list);
-
- c[0] = get_alarm_string (alarm);
- i = gtk_clist_append (clist, c);
-
- rdata = g_new (ReminderData, 1);
- rdata->status = status;
- rdata->alarm = alarm;
- gtk_clist_set_row_data (clist, i, rdata);
- gtk_clist_select_row (clist, i, 0);
- g_free (c[0]);
-
- gtk_widget_set_sensitive (priv->reminder_delete, TRUE);
-}
-
-/* Callback for the "add reminder" button */
-static void
-reminder_add_cb (GtkWidget *widget, EventEditor *ee)
-{
- EventEditorPrivate *priv;
- CalComponentAlarm *alarm;
- CalAlarmTrigger trigger;
-
- priv = ee->priv;
-
- event_editor_set_changed (ee, TRUE);
-
- alarm = cal_component_alarm_new ();
-
- memset (&trigger, 0, sizeof (CalAlarmTrigger));
- trigger.type = e_dialog_option_menu_get (priv->reminder_time, reminder_time_map);
- if (e_dialog_option_menu_get (priv->reminder_relative, reminder_relative_map) == BEFORE)
- trigger.u.rel_duration.is_neg = 1;
- else
- trigger.u.rel_duration.is_neg = 0;
-
- switch (e_dialog_option_menu_get (priv->reminder_value_units, reminder_value_map)) {
- case MINUTES:
- trigger.u.rel_duration.minutes = e_dialog_spin_get_int (priv->reminder_interval_value);
- break;
- case HOURS:
- trigger.u.rel_duration.hours = e_dialog_spin_get_int (priv->reminder_interval_value);
- break;
- case DAYS:
- trigger.u.rel_duration.days = e_dialog_spin_get_int (priv->reminder_interval_value);
- break;
- }
- cal_component_alarm_set_trigger (alarm, trigger);
-
- cal_component_alarm_set_action (alarm, e_dialog_option_menu_get (priv->reminder_action, reminder_action_map));
-
- append_reminder (ee, alarm, NEW_ALARM);
-}
-
-/* Callback for the "delete reminder" button */
-static void
-reminder_delete_cb (GtkWidget *widget, EventEditor *ee)
-{
- EventEditorPrivate *priv;
- GtkCList *clist;
- ReminderData *rdata;
- int sel;
-
- priv = ee->priv;
-
- clist = GTK_CLIST (priv->reminder_list);
- if (!clist->selection)
- return;
-
- event_editor_set_changed (ee, TRUE);
-
- sel = GPOINTER_TO_INT (clist->selection->data);
-
- rdata = gtk_clist_get_row_data (clist, sel);
-
- if (rdata->status == EXISTING_ALARM) {
- const char *uid;
-
- uid = cal_component_alarm_get_uid (rdata->alarm);
- cal_component_remove_alarm (priv->comp, uid);
- }
- cal_component_alarm_free (rdata->alarm);
- g_free (rdata);
-
- gtk_clist_remove (clist, sel);
- if (sel >= clist->rows)
- sel--;
-
- if (clist->rows > 0)
- gtk_clist_select_row (clist, sel, 0);
- else
- gtk_widget_set_sensitive (priv->reminder_delete, FALSE);
-}
-
-
-/* Builds a static string out of an exception date */
-static char *
-get_exception_string (time_t t)
-{
- static char buf[256];
-
- strftime (buf, sizeof (buf), _("%a %b %d %Y"), localtime (&t));
- return buf;
-}
-
-/* Appends an exception date to the list */
-static void
-append_exception (EventEditor *ee, time_t t)
-{
- EventEditorPrivate *priv;
- time_t *tt;
- char *c[1];
- int i;
- GtkCList *clist;
-
- priv = ee->priv;
-
- tt = g_new (time_t, 1);
- *tt = t;
-
- clist = GTK_CLIST (priv->recurrence_exception_list);
-
- gtk_signal_handler_block_by_data (GTK_OBJECT (clist), ee);
-
- c[0] = get_exception_string (t);
- i = gtk_clist_append (clist, c);
-
- gtk_clist_set_row_data (clist, i, tt);
-
- gtk_clist_select_row (clist, i, 0);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (clist), ee);
-
- e_date_edit_set_time (E_DATE_EDIT (priv->recurrence_exception_date), t);
-
- gtk_widget_set_sensitive (priv->recurrence_exception_modify, TRUE);
- gtk_widget_set_sensitive (priv->recurrence_exception_delete, TRUE);
-}
-
-
-/* Callback for the "add exception" button */
-static void
-recurrence_exception_add_cb (GtkWidget *widget, EventEditor *ee)
-{
- EventEditorPrivate *priv;
- time_t t;
-
- priv = ee->priv;
-
- event_editor_set_changed (ee, TRUE);
- t = e_date_edit_get_time (E_DATE_EDIT (priv->recurrence_exception_date));
- append_exception (ee, t);
- preview_recur (ee);
-}
-
-/* Callback for the "modify exception" button */
-static void
-recurrence_exception_modify_cb (GtkWidget *widget, EventEditor *ee)
-{
- EventEditorPrivate *priv;
- GtkCList *clist;
- time_t *t;
- int sel;
-
- priv = ee->priv;
-
- clist = GTK_CLIST (priv->recurrence_exception_list);
- if (!clist->selection)
- return;
-
- event_editor_set_changed (ee, TRUE);
-
- sel = GPOINTER_TO_INT (clist->selection->data);
-
- t = gtk_clist_get_row_data (clist, sel);
- *t = e_date_edit_get_time (E_DATE_EDIT (priv->recurrence_exception_date));
-
- gtk_clist_set_text (clist, sel, 0, get_exception_string (*t));
-
- preview_recur (ee);
-}
-
-/* Callback for the "delete exception" button */
-static void
-recurrence_exception_delete_cb (GtkWidget *widget, EventEditor *ee)
-{
- EventEditorPrivate *priv;
- GtkCList *clist;
- int sel;
- time_t *t;
-
- priv = ee->priv;
-
- clist = GTK_CLIST (priv->recurrence_exception_list);
- if (!clist->selection)
- return;
-
- event_editor_set_changed (ee, TRUE);
-
- sel = GPOINTER_TO_INT (clist->selection->data);
-
- t = gtk_clist_get_row_data (clist, sel);
- g_assert (t != NULL);
- g_free (t);
-
- gtk_clist_remove (clist, sel);
- if (sel >= clist->rows)
- sel--;
-
- if (clist->rows > 0)
- gtk_clist_select_row (clist, sel, 0);
- else {
- gtk_widget_set_sensitive (priv->recurrence_exception_modify, FALSE);
- gtk_widget_set_sensitive (priv->recurrence_exception_delete, FALSE);
- }
-
- preview_recur (ee);
-}
-
-/* Callback used when a row is selected in the list of exception dates. We must
- * update the date/time widgets to reflect the exception's value.
- */
-static void
-recurrence_exception_select_row_cb (GtkCList *clist, gint row, gint col, GdkEvent *event,
- gpointer data)
-{
- EventEditor *ee;
- EventEditorPrivate *priv;
- time_t *t;
-
- ee = EVENT_EDITOR (data);
- priv = ee->priv;
-
- t = gtk_clist_get_row_data (clist, row);
- g_assert (t != NULL);
-
- e_date_edit_set_time (E_DATE_EDIT (priv->recurrence_exception_date), *t);
-}
-
-GtkWidget *
-make_date_edit (void)
-{
- return date_edit_new (TRUE, TRUE);
-}
-
-
-GtkWidget *
-make_spin_button (int val, int low, int high)
-{
- GtkAdjustment *adj;
- GtkWidget *spin;
-
- adj = GTK_ADJUSTMENT (gtk_adjustment_new (val, low, high, 1, 10, 10));
- spin = gtk_spin_button_new (adj, 0.5, 0);
- gtk_widget_set_usize (spin, 60, 0);
-
- return spin;
-}
-
-
-/* This is called when most fields are changed (except those which already
- have signal handlers). It just sets the "changed" flag. */
-static void
-field_changed (GtkWidget *widget,
- EventEditor *ee)
-{
- EventEditorPrivate *priv;
-
- g_return_if_fail (IS_EVENT_EDITOR (ee));
-
- priv = ee->priv;
-
- event_editor_set_changed (ee, TRUE);
-}
-
-
-static void
-event_editor_set_changed (EventEditor *ee,
- gboolean changed)
-{
- EventEditorPrivate *priv;
-
- priv = ee->priv;
-
-#if 0
- g_print ("In event_editor_set_changed: %s\n",
- changed ? "TRUE" : "FALSE");
-#endif
-
- priv->changed = changed;
-
- if (priv->app)
- gnome_property_box_set_state (GNOME_PROPERTY_BOX (priv->app), changed);
-}
-
-
-/* This checks if the "changed" field is set, and if so it prompts to save
- the changes using a "Save/Discard/Cancel" modal dialog. It then saves the
- changes if requested. It returns TRUE if the dialog should now be closed. */
-static gboolean
-prompt_to_save_changes (EventEditor *ee)
-{
- EventEditorPrivate *priv;
-
- priv = ee->priv;
-
- if (!priv->changed)
- return TRUE;
-
- switch (save_component_dialog (GTK_WINDOW (priv->app))) {
- case 0: /* Save */
- /* FIXME: If an error occurs here, we should popup a dialog
- and then return FALSE. */
- save_event_object (ee);
- return TRUE;
- case 1: /* Discard */
- return TRUE;
- case 2: /* Cancel */
- default:
- return FALSE;
- break;
- }
-}
-
-static void
-categories_clicked (GtkWidget *button, EventEditor *ee)
-{
- char *categories;
- GnomeDialog *dialog;
- int result;
- GtkWidget *entry;
-
- entry = ee->priv->categories;
- categories = e_utf8_gtk_entry_get_text (GTK_ENTRY (entry));
-
- dialog = GNOME_DIALOG (e_categories_new (categories));
- result = gnome_dialog_run (dialog);
- g_free (categories);
-
- if (result == 0) {
- gtk_object_get (GTK_OBJECT (dialog),
- "categories", &categories,
- NULL);
- e_utf8_gtk_entry_set_text (GTK_ENTRY (entry), categories);
- g_free (categories);
- }
- gtk_object_destroy (GTK_OBJECT (dialog));
-}
diff --git a/calendar/gui/event-editor.h b/calendar/gui/event-editor.h
deleted file mode 100644
index 60be54c784..0000000000
--- a/calendar/gui/event-editor.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Evolution calendar - Event editor dialog
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Miguel de Icaza <miguel@ximian.com>
- * Federico Mena-Quintero <federico@ximian.com>
- * Seth Alves <alves@hungry.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef __EVENT_EDITOR_DIALOG_H__
-#define __EVENT_EDITOR_DIALOG_H__
-
-#include <libgnome/gnome-defs.h>
-#include <gtk/gtkobject.h>
-#include "gnome-cal.h"
-
-
-
-#define TYPE_EVENT_EDITOR (event_editor_get_type ())
-#define EVENT_EDITOR(obj) (GTK_CHECK_CAST ((obj), TYPE_EVENT_EDITOR, EventEditor))
-#define EVENT_EDITOR_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), TYPE_EVENT_EDITOR, \
- EventEditorClass))
-#define IS_EVENT_EDITOR(obj) (GTK_CHECK_TYPE ((obj), TYPE_EVENT_EDITOR))
-#define IS_EVENT_EDITOR_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), TYPE_EVENT_EDITOR))
-
-typedef struct _EventEditor EventEditor;
-typedef struct _EventEditorClass EventEditorClass;
-typedef struct _EventEditorPrivate EventEditorPrivate;
-
-struct _EventEditor {
- GtkObject object;
-
- /* Private data */
- EventEditorPrivate *priv;
-};
-
-struct _EventEditorClass {
- GtkObjectClass parent_class;
-};
-
-
-GtkType event_editor_get_type (void);
-EventEditor *event_editor_construct (EventEditor *ee);
-
-EventEditor *event_editor_new (void);
-
-void event_editor_set_cal_client (EventEditor *ee, CalClient *client);
-CalClient *event_editor_get_cal_client (EventEditor *ee);
-
-void event_editor_set_event_object (EventEditor *ee, CalComponent *comp);
-
-void event_editor_focus (EventEditor *ee);
-
-void event_editor_update_widgets (EventEditor *ee);
-
-
-GtkWidget *make_date_edit (void);
-GtkWidget *make_spin_button (int val, int low, int high);
-
-
-
-#endif /* __EVENT_EDITOR_DIALOG_H__ */
diff --git a/calendar/gui/evolution-calendar-control.c b/calendar/gui/evolution-calendar-control.c
deleted file mode 100644
index 273c68533c..0000000000
--- a/calendar/gui/evolution-calendar-control.c
+++ /dev/null
@@ -1,202 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-#include <config.h>
-#include <gnome.h>
-#include <glade/glade.h>
-#include <bonobo.h>
-#include <bonobo/bonobo-control.h>
-#include <glade/glade.h>
-
-#ifdef USING_OAF
-#include <liboaf/liboaf.h>
-#else
-#include <libgnorba/gnorba.h>
-#endif
-
-#include <cal-util/timeutil.h>
-#include <gui/alarm.h>
-#include <gui/gnome-cal.h>
-#include <gui/calendar-commands.h>
-
-#define PROPERTY_CALENDAR_URI "folder_uri"
-
-#define PROPERTY_CALENDAR_URI_IDX 1
-
-#ifdef USING_OAF
-#define CONTROL_FACTORY_ID "OAFIID:control-factory:calendar:f4f90989-0f50-4af2-ad94-8bbdf331f0bc"
-#else
-#define CONTROL_FACTORY_ID "control-factory:calendar"
-#endif
-
-CORBA_Environment ev;
-CORBA_ORB orb;
-
-
-static void
-control_activate_cb (BonoboControl *control,
- gboolean activate,
- gpointer user_data)
-{
- if (activate)
- calendar_control_activate (control, user_data);
- else
- calendar_control_deactivate (control);
-}
-
-
-
-static void
-init_bonobo (int *argc, char **argv)
-{
-#ifdef USING_OAF
- /* FIXME: VERSION instead of "0.0". */
- gnome_init_with_popt_table ("evolution-calendar", "0.0",
- *argc, argv, oaf_popt_options,
- 0, NULL);
- oaf_init (*argc, argv);
-#else
- gnome_CORBA_init_with_popt_table (
- "evolution-calendar", "0.0",
- argc, argv, NULL, 0, NULL, GNORBA_INIT_SERVER_FUNC, &ev);
-#endif
-
- if (bonobo_init (CORBA_OBJECT_NIL, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL) == FALSE)
- g_error (_("Could not initialize Bonobo"));
-
- glade_gnome_init ();
-}
-
-
-
-static void
-get_prop (BonoboPropertyBag *bag,
- BonoboArg *arg,
- guint arg_id,
- gpointer user_data)
-{
- /*GnomeCalendar *gcal = user_data;*/
-
- switch (arg_id) {
-
- case PROPERTY_CALENDAR_URI_IDX:
- /*
- if (fb && fb->uri)
- BONOBO_ARG_SET_STRING (arg, fb->uri);
- else
- BONOBO_ARG_SET_STRING (arg, "");
- */
- break;
-
- default:
- g_warning ("Unhandled arg %d\n", arg_id);
- }
-}
-
-static void
-set_prop (BonoboPropertyBag *bag,
- const BonoboArg *arg,
- guint arg_id,
- gpointer user_data)
-{
- GnomeCalendar *gcal = user_data;
- char *filename;
-
- switch (arg_id) {
-
- case PROPERTY_CALENDAR_URI_IDX:
- printf ("set_prop: '%s'\n", BONOBO_ARG_GET_STRING (arg));
- filename = g_strdup_printf ("%s/calendar.vcf",
- BONOBO_ARG_GET_STRING (arg));
- calendar_set_uri (gcal, filename);
- g_free (filename);
- break;
-
- default:
- g_warning ("Unhandled arg %d\n", arg_id);
- break;
- }
-}
-
-
-static void
-calendar_properties_init (GnomeCalendar *gcal)
-{
- gcal->properties = bonobo_property_bag_new (get_prop, set_prop, gcal);
-
- bonobo_property_bag_add (gcal->properties,
- PROPERTY_CALENDAR_URI,
- PROPERTY_CALENDAR_URI_IDX,
- BONOBO_ARG_STRING,
- NULL,
- _("The URI that the calendar will display"),
- 0);
-
- bonobo_control_set_property_bag (gcal->control, gcal->properties);
- bonobo_object_unref (BONOBO_OBJECT (pbag));
-}
-
-
-
-static BonoboObject *
-calendar_control_factory (BonoboGenericFactory *Factory, void *closure)
-{
- BonoboControl *control;
-
- /* Create the control. */
- GnomeCalendar *cal = new_calendar (full_name, NULL, NULL, 0);
-
- gtk_widget_show (GTK_WIDGET (cal));
-
- control = bonobo_control_new (GTK_WIDGET (cal));
- cal->control = control;
-
- calendar_properties_init (cal);
-
- gtk_signal_connect (GTK_OBJECT (control), "activate",
- control_activate_cb, cal);
-
- return BONOBO_OBJECT (control);
-}
-
-
-static void
-calendar_control_factory_init (void)
-{
- static BonoboGenericFactory *factory = NULL;
-
- if (factory != NULL)
- return;
-
- puts ("XXXXXX - initializing calendar factory!!!");
-
- factory = bonobo_generic_factory_new (CONTROL_FACTORY_ID, calendar_control_factory, NULL);
-
- if (factory == NULL)
- g_error ("I could not register a Calendar control factory.");
-}
-
-
-int
-main (int argc, char **argv)
-{
- init_bonobo (&argc, argv);
- glade_gnome_init ();
- alarm_init ();
- e_cursors_init ();
-
- init_calendar ();
-
- //g_log_set_always_fatal ((GLogLevelFlags) 0xFFFF);
- g_log_set_always_fatal (G_LOG_LEVEL_ERROR |
- G_LOG_LEVEL_CRITICAL |
- G_LOG_LEVEL_WARNING);
-
- CORBA_exception_init (&ev);
-
- calendar_control_factory_init ();
- component_factory_init ();
-
- bonobo_main ();
-
- return 0;
-}
diff --git a/calendar/gui/gnome-cal.c b/calendar/gui/gnome-cal.c
deleted file mode 100644
index eda8617b0b..0000000000
--- a/calendar/gui/gnome-cal.c
+++ /dev/null
@@ -1,1705 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* Evolution calendar - Main calendar view widget
- *
- * Copyright (C) 1998 The Free Software Foundation
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Miguel de Icaza <miguel@ximian.com>
- * Federico Mena-Quintero <federico@ximian.com>
- * Seth Alves <alves@hungry.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <unistd.h>
-#include <signal.h>
-#include <sys/wait.h>
-#include <fcntl.h>
-#include <glib.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <libgnomeui/gnome-dialog.h>
-#include <libgnomeui/gnome-dialog-util.h>
-#include <gal/e-paned/e-hpaned.h>
-#include <gal/e-paned/e-vpaned.h>
-#include <cal-util/timeutil.h>
-#include "widgets/misc/e-search-bar.h"
-#include "widgets/misc/e-filter-bar.h"
-#include "dialogs/alarm-notify-dialog.h"
-#include "e-calendar-table.h"
-#include "e-day-view.h"
-#include "e-week-view.h"
-#include "event-editor.h"
-#include "gnome-cal.h"
-#include "component-factory.h"
-#include "calendar-commands.h"
-#include "calendar-config.h"
-#include "tag-calendar.h"
-
-
-
-/* These must match the page numbers in the GtkNotebook. */
-typedef enum {
- VIEW_NOT_SET = -1,
- VIEW_DAY = 0,
- VIEW_WORK_WEEK,
- VIEW_WEEK,
- VIEW_MONTH
-} ViewType;
-
-/* Private part of the GnomeCalendar structure */
-struct _GnomeCalendarPrivate {
- /*
- * The Calendar Folder.
- */
-
- /* The calendar client object we monitor */
- CalClient *client;
-
- /*
- * The TaskPad Folder.
- */
-
- /* The calendar client object we monitor */
- CalClient *task_pad_client;
-
- /*
- * Fields for the calendar view
- */
-
- /* Mapping of component UIDs to event editors */
- GHashTable *object_editor_hash;
-
- /* This is the last selection explicitly selected by the user. We try
- to keep it the same when we switch views, but we may have to alter
- it depending on the view (e.g. the week views only select days, so
- any times are lost. */
- time_t selection_start_time;
- time_t selection_end_time;
-
- /* Widgets */
-
- GtkWidget *search_bar;
-
- GtkWidget *hpane;
- GtkWidget *notebook;
- GtkWidget *vpane;
- ECalendar *date_navigator;
- GtkWidget *todo;
-
- GtkWidget *day_view;
- GtkWidget *work_week_view;
- GtkWidget *week_view;
- GtkWidget *month_view;
-
- /* These are the toolbar radio buttons for switching views. */
- GtkWidget *day_button;
- GtkWidget *work_week_button;
- GtkWidget *week_button;
- GtkWidget *month_button;
-
- /* This is the view currently shown. We use it to keep track of the
- positions of the panes. range_selected is TRUE if a range of dates
- was selected in the date navigator to show the view. */
- ViewType current_view_type;
- gboolean range_selected;
-
- /* These are the saved positions of the panes. They are multiples of
- calendar month widths & heights in the date navigator, so that they
- will work OK after theme changes. */
- gfloat hpane_pos;
- gfloat vpane_pos;
- gfloat hpane_pos_month_view;
- gfloat vpane_pos_month_view;
-
- /* The signal handler id for our GtkCalendar "day_selected" handler. */
- guint day_selected_id;
-
- /* Whether we are being destroyed and should not mess with the object
- * editor hash table.
- */
- guint in_destroy : 1;
-};
-
-
-
-static void gnome_calendar_class_init (GnomeCalendarClass *class);
-static void gnome_calendar_init (GnomeCalendar *gcal);
-static void gnome_calendar_destroy (GtkObject *object);
-
-static void gnome_calendar_set_view_internal (GnomeCalendar *gcal,
- char *page_name,
- gboolean range_selected,
- gboolean focus);
-static void gnome_calendar_set_pane_positions (GnomeCalendar *gcal);
-static void gnome_calendar_update_view_times (GnomeCalendar *gcal);
-static void gnome_calendar_update_date_navigator (GnomeCalendar *gcal);
-
-static void gnome_calendar_on_date_navigator_style_set (GtkWidget *widget,
- GtkStyle *previous_style,
- gpointer data);
-static void gnome_calendar_update_paned_quanta (GnomeCalendar *gcal);
-static void gnome_calendar_on_date_navigator_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation,
- gpointer data);
-static void gnome_calendar_on_date_navigator_date_range_changed (ECalendarItem *calitem,
- GnomeCalendar *gcal);
-static void gnome_calendar_on_date_navigator_selection_changed (ECalendarItem *calitem,
- GnomeCalendar *gcal);
-static gboolean gnome_calendar_get_days_shown (GnomeCalendar *gcal,
- GDate *start_date,
- gint *days_shown);
-
-
-static GtkVBoxClass *parent_class;
-
-
-
-
-GtkType
-gnome_calendar_get_type (void)
-{
- static GtkType gnome_calendar_type = 0;
-
- if (!gnome_calendar_type) {
- static const GtkTypeInfo gnome_calendar_info = {
- "GnomeCalendar",
- sizeof (GnomeCalendar),
- sizeof (GnomeCalendarClass),
- (GtkClassInitFunc) gnome_calendar_class_init,
- (GtkObjectInitFunc) gnome_calendar_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- gnome_calendar_type = gtk_type_unique (GTK_TYPE_VBOX, &gnome_calendar_info);
- }
-
- return gnome_calendar_type;
-}
-
-/* Class initialization function for the gnome calendar */
-static void
-gnome_calendar_class_init (GnomeCalendarClass *class)
-{
- GtkObjectClass *object_class;
-
- object_class = (GtkObjectClass *) class;
-
- parent_class = gtk_type_class (GTK_TYPE_VBOX);
-
- object_class->destroy = gnome_calendar_destroy;
-}
-
-static GtkWidget *
-get_current_page (GnomeCalendar *gcal)
-{
- GnomeCalendarPrivate *priv;
-
- priv = gcal->priv;
-
- return GTK_NOTEBOOK (priv->notebook)->cur_page->child;
-}
-
-static ESearchBarItem search_menu_items[] = {
- E_FILTERBAR_RESET,
- { NULL, -1 }
-};
-
-enum {
- SEARCH_ANY_FIELD_CONTAINS,
- SEARCH_SUMMARY_CONTAINS,
- SEARCH_DESCRIPTION_CONTAINS,
- SEARCH_COMMENT_CONTAINS,
- SEARCH_HAS_CATEGORY
-};
-
-static ESearchBarItem search_option_items[] = {
- { N_("Any field contains"), SEARCH_ANY_FIELD_CONTAINS },
- { N_("Summary contains"), SEARCH_SUMMARY_CONTAINS },
- { N_("Description contains"), SEARCH_DESCRIPTION_CONTAINS },
- { N_("Comment contains"), SEARCH_COMMENT_CONTAINS },
- { N_("Has category"), SEARCH_HAS_CATEGORY },
- { NULL, -1 }
-};
-
-/* Sets the query sexp for the current view in the calendar */
-static void
-set_query (GnomeCalendar *gcal, char *sexp)
-{
- GnomeCalendarPrivate *priv;
- GtkWidget *page;
-
- g_assert (sexp != NULL);
-
- priv = gcal->priv;
-
- page = get_current_page (gcal);
-
- if (page == priv->day_view || page == priv->work_week_view)
- e_day_view_set_query (E_DAY_VIEW (page), sexp);
- else if (page == priv->week_view || page == priv->month_view)
- e_week_view_set_query (E_WEEK_VIEW (page), sexp);
- else {
- g_warning ("A penguin bit my hand!");
- g_assert_not_reached ();
- }
-}
-
-/* Sets the query string to be (contains? "field" "text") */
-static void
-set_query_contains (GnomeCalendar *gcal, const char *field, const char *text)
-{
- char *sexp;
-
- sexp = g_strdup_printf ("(contains? \"%s\" \"%s\")", field, text);
- set_query (gcal, sexp);
- g_free (sexp);
-}
-
-/* Callback used when the query string is changed in the search bar */
-static void
-search_bar_query_changed_cb (ESearchBar *search_bar, gpointer data)
-{
- GnomeCalendar *gcal;
- int item;
- char *text;
-
- gcal = GNOME_CALENDAR (data);
-
- item = e_search_bar_get_option_choice (search_bar);
- text = e_search_bar_get_text (search_bar);
-
- if (!text)
- return; /* This is an error in the UTF8 conversion, not an empty string! */
-
- switch (item) {
- case SEARCH_ANY_FIELD_CONTAINS:
- set_query_contains (gcal, "any", text);
- break;
-
- case SEARCH_SUMMARY_CONTAINS:
- set_query_contains (gcal, "summary", text);
- break;
-
- case SEARCH_DESCRIPTION_CONTAINS:
- set_query_contains (gcal, "description", text);
- break;
-
- case SEARCH_COMMENT_CONTAINS:
- set_query_contains (gcal, "comment", text);
- break;
-
- case SEARCH_HAS_CATEGORY: {
- char *sexp;
-
- sexp = g_strdup_printf ("(has-categories? \"%s\")", text);
- set_query (gcal, sexp);
- g_free (sexp);
- break;
- }
-
- default:
- g_assert_not_reached ();
- }
-
- g_free (text);
-}
-
-/* Callback used when a menu item is activated in the search bar */
-static void
-search_bar_menu_activated_cb (ESearchBar *search_bar, int item, gpointer data)
-{
- GnomeCalendar *gcal;
-
- gcal = GNOME_CALENDAR (data);
-
- switch (item) {
- case E_FILTERBAR_RESET_ID:
- set_query (gcal, "#t"); /* match all */
- /* FIXME: should we change the rest of the search bar so that
- * the user sees that he selected "show all" instead of some
- * type/text search combination?
- */
- break;
-
- default:
- g_assert_not_reached ();
- }
-}
-
-static void
-setup_widgets (GnomeCalendar *gcal)
-{
- GnomeCalendarPrivate *priv;
- GtkWidget *w;
- gchar *filename;
- CalendarModel *model;
-
- priv = gcal->priv;
-
- priv->search_bar = e_search_bar_new (search_menu_items, search_option_items);
- gtk_signal_connect (GTK_OBJECT (priv->search_bar), "query_changed",
- GTK_SIGNAL_FUNC (search_bar_query_changed_cb), gcal);
- gtk_signal_connect (GTK_OBJECT (priv->search_bar), "menu_activated",
- GTK_SIGNAL_FUNC (search_bar_menu_activated_cb), gcal);
-
- gtk_widget_show (priv->search_bar);
- gtk_box_pack_start (GTK_BOX (gcal), priv->search_bar, FALSE, FALSE, 0);
-
- /* The main HPaned, with the notebook of calendar views on the left
- and the ECalendar and ToDo list on the right. */
- priv->hpane = e_hpaned_new ();
- gtk_widget_show (priv->hpane);
- gtk_box_pack_start (GTK_BOX (gcal), priv->hpane, TRUE, TRUE, 0);
-
- /* The Notebook containing the 4 calendar views. */
- priv->notebook = gtk_notebook_new ();
- gtk_notebook_set_show_border (GTK_NOTEBOOK (priv->notebook), FALSE);
- gtk_notebook_set_show_tabs (GTK_NOTEBOOK (priv->notebook), FALSE);
- gtk_widget_show (priv->notebook);
- e_paned_pack1 (E_PANED (priv->hpane), priv->notebook, TRUE, TRUE);
-
- /* The VPaned widget, to contain the GtkCalendar & ToDo list. */
- priv->vpane = e_vpaned_new ();
- gtk_widget_show (priv->vpane);
- e_paned_pack2 (E_PANED (priv->hpane), priv->vpane, FALSE, TRUE);
-
- /* The ECalendar. */
- w = e_calendar_new ();
- priv->date_navigator = E_CALENDAR (w);
- e_calendar_item_set_days_start_week_sel (priv->date_navigator->calitem, 9);
- e_calendar_item_set_max_days_sel (priv->date_navigator->calitem, 42);
- gtk_widget_show (w);
-
- e_paned_pack1 (E_PANED (priv->vpane), w, FALSE, TRUE);
- gtk_signal_connect (GTK_OBJECT (priv->date_navigator),
- "style_set",
- GTK_SIGNAL_FUNC (gnome_calendar_on_date_navigator_style_set),
- gcal);
- gtk_signal_connect_after (GTK_OBJECT (priv->date_navigator),
- "size_allocate",
- (GtkSignalFunc) gnome_calendar_on_date_navigator_size_allocate,
- gcal);
- gtk_signal_connect (GTK_OBJECT (priv->date_navigator->calitem),
- "selection_changed",
- (GtkSignalFunc) gnome_calendar_on_date_navigator_selection_changed,
- gcal);
- gtk_signal_connect (GTK_OBJECT (priv->date_navigator->calitem),
- "date_range_changed",
- GTK_SIGNAL_FUNC (gnome_calendar_on_date_navigator_date_range_changed),
- gcal);
-
- /* The ToDo list. */
- priv->todo = e_calendar_table_new ();
- calendar_config_configure_e_calendar_table (E_CALENDAR_TABLE (priv->todo));
- model = e_calendar_table_get_model (E_CALENDAR_TABLE (priv->todo));
- calendar_model_set_new_comp_vtype (model, CAL_COMPONENT_TODO);
- e_paned_pack2 (E_PANED (priv->vpane), priv->todo, TRUE, TRUE);
- gtk_widget_show (priv->todo);
-
- filename = g_strdup_printf ("%s/config/TaskPad", evolution_dir);
- e_calendar_table_load_state (E_CALENDAR_TABLE (priv->todo), filename);
- g_free (filename);
-
- /* The Day View. */
- priv->day_view = e_day_view_new ();
- e_day_view_set_calendar (E_DAY_VIEW (priv->day_view), gcal);
- gtk_widget_show (priv->day_view);
- gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook),
- priv->day_view, gtk_label_new (""));
-
- /* The Work Week View. */
- priv->work_week_view = e_day_view_new ();
- e_day_view_set_work_week_view (E_DAY_VIEW (priv->work_week_view),
- TRUE);
- e_day_view_set_days_shown (E_DAY_VIEW (priv->work_week_view), 5);
- e_day_view_set_calendar (E_DAY_VIEW (priv->work_week_view), gcal);
- gtk_widget_show (priv->work_week_view);
- gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook),
- priv->work_week_view, gtk_label_new (""));
-
- /* The Week View. */
- priv->week_view = e_week_view_new ();
- e_week_view_set_calendar (E_WEEK_VIEW (priv->week_view), gcal);
- gtk_widget_show (priv->week_view);
- gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook),
- priv->week_view, gtk_label_new (""));
-
- /* The Month View. */
- priv->month_view = e_week_view_new ();
- e_week_view_set_calendar (E_WEEK_VIEW (priv->month_view), gcal);
- e_week_view_set_multi_week_view (E_WEEK_VIEW (priv->month_view), TRUE);
- gtk_widget_show (priv->month_view);
- gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook),
- priv->month_view, gtk_label_new (""));
-
- gnome_calendar_update_config_settings (gcal, TRUE);
-}
-
-/* Object initialization function for the gnome calendar */
-static void
-gnome_calendar_init (GnomeCalendar *gcal)
-{
- GnomeCalendarPrivate *priv;
-
- priv = g_new0 (GnomeCalendarPrivate, 1);
- gcal->priv = priv;
-
- priv->object_editor_hash = g_hash_table_new (g_str_hash, g_str_equal);
-
- priv->current_view_type = VIEW_NOT_SET;
- priv->range_selected = FALSE;
-
- setup_widgets (gcal);
-
- priv->selection_start_time = time_day_begin (time (NULL));
- priv->selection_end_time = time_add_day (priv->selection_start_time, 1);
-}
-
-/* Used from g_hash_table_foreach(); frees an UID string */
-static void
-destroy_editor_cb (gpointer key, gpointer value, gpointer data)
-{
- EventEditor *ee;
-
- ee = EVENT_EDITOR (value);
- gtk_object_unref (GTK_OBJECT (ee));
-}
-
-static void
-gnome_calendar_destroy (GtkObject *object)
-{
- GnomeCalendar *gcal;
- GnomeCalendarPrivate *priv;
- gchar *filename;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (GNOME_IS_CALENDAR (object));
-
- gcal = GNOME_CALENDAR (object);
- priv = gcal->priv;
-
- /* Save the TaskPad layout. */
- filename = g_strdup_printf ("%s/config/TaskPad", evolution_dir);
- e_calendar_table_save_state (E_CALENDAR_TABLE (priv->todo), filename);
- g_free (filename);
-
- if (priv->client) {
-#if 0
- alarm_notify_remove_client (priv->client);
-#endif
- gtk_object_unref (GTK_OBJECT (priv->client));
- priv->client = NULL;
- }
-
- if (priv->task_pad_client) {
-#if 0
- alarm_notify_remove_client (priv->task_pad_client);
-#endif
- gtk_object_unref (GTK_OBJECT (priv->task_pad_client));
- priv->task_pad_client = NULL;
- }
-
- priv->in_destroy = TRUE;
- g_hash_table_foreach (priv->object_editor_hash, destroy_editor_cb, NULL);
- g_hash_table_destroy (priv->object_editor_hash);
- priv->object_editor_hash = NULL;
-
- g_free (priv);
- gcal->priv = NULL;
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-char *
-gnome_calendar_get_current_view_name (GnomeCalendar *gcal)
-{
- GnomeCalendarPrivate *priv;
- GtkWidget *page;
-
- g_return_val_if_fail (gcal != NULL, NULL);
- g_return_val_if_fail (GNOME_IS_CALENDAR (gcal), NULL);
-
- priv = gcal->priv;
-
- page = get_current_page (gcal);
-
- if (page == priv->day_view)
- return "dayview";
- else if (page == priv->work_week_view)
- return "workweekview";
- else if (page == priv->week_view)
- return "weekview";
- else if (page == priv->month_view)
- return "monthview";
- else {
- g_assert_not_reached ();
- return NULL;
- }
-}
-
-void
-gnome_calendar_goto (GnomeCalendar *gcal, time_t new_time)
-{
- GnomeCalendarPrivate *priv;
-
- g_return_if_fail (gcal != NULL);
- g_return_if_fail (GNOME_IS_CALENDAR (gcal));
- g_return_if_fail (new_time != -1);
-
- priv = gcal->priv;
-
- priv->selection_start_time = time_day_begin (new_time);
- priv->selection_end_time = time_add_day (priv->selection_start_time, 1);
-
- gnome_calendar_update_view_times (gcal);
- gnome_calendar_update_date_navigator (gcal);
-}
-
-
-static void
-gnome_calendar_update_view_times (GnomeCalendar *gcal)
-{
- GnomeCalendarPrivate *priv;
- GtkWidget *page;
-
- priv = gcal->priv;
-
- page = get_current_page (gcal);
-
- if (page == priv->day_view || page == priv->work_week_view) {
- e_day_view_set_selected_time_range (E_DAY_VIEW (page),
- priv->selection_start_time,
- priv->selection_end_time);
- } else if (page == priv->week_view || page == priv->month_view) {
- e_week_view_set_selected_time_range (E_WEEK_VIEW (page),
- priv->selection_start_time,
- priv->selection_end_time);
- } else {
- g_warning ("My penguin is gone!");
- g_assert_not_reached ();
- }
-}
-
-static void
-gnome_calendar_direction (GnomeCalendar *gcal, int direction)
-{
- GnomeCalendarPrivate *priv;
- GtkWidget *cp;
- time_t start_time, end_time;
-
- priv = gcal->priv;
-
- cp = get_current_page (gcal);
-
- start_time = priv->selection_start_time;
- end_time = priv->selection_end_time;
-
- if (cp == priv->day_view) {
- start_time = time_add_day (start_time, direction);
- end_time = time_add_day (end_time, direction);
- } else if (cp == priv->work_week_view) {
- start_time = time_add_week (start_time, direction);
- end_time = time_add_week (end_time, direction);
- } else if (cp == priv->week_view) {
- start_time = time_add_week (start_time, direction);
- end_time = time_add_week (end_time, direction);
- } else if (cp == priv->month_view) {
- start_time = time_add_month (start_time, direction);
- end_time = time_add_month (end_time, direction);
- } else {
- g_warning ("Weee! Where did the penguin go?");
- g_assert_not_reached ();
- return;
- }
-
- priv->selection_start_time = start_time;
- priv->selection_end_time = end_time;
-
- gnome_calendar_update_view_times (gcal);
- gnome_calendar_update_date_navigator (gcal);
-}
-
-void
-gnome_calendar_next (GnomeCalendar *gcal)
-{
- g_return_if_fail (gcal != NULL);
- g_return_if_fail (GNOME_IS_CALENDAR (gcal));
-
- gnome_calendar_direction (gcal, 1);
-}
-
-void
-gnome_calendar_previous (GnomeCalendar *gcal)
-{
- g_return_if_fail (gcal != NULL);
- g_return_if_fail (GNOME_IS_CALENDAR (gcal));
-
- gnome_calendar_direction (gcal, -1);
-}
-
-void
-gnome_calendar_dayjump (GnomeCalendar *gcal, time_t time)
-{
- GnomeCalendarPrivate *priv;
-
- g_return_if_fail (gcal != NULL);
- g_return_if_fail (GNOME_IS_CALENDAR (gcal));
-
- priv = gcal->priv;
-
- priv->selection_start_time = time_day_begin (time);
- priv->selection_end_time = time_add_day (priv->selection_start_time, 1);
- if (priv->day_button)
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->day_button), TRUE);
- else
- gnome_calendar_set_view (gcal, "dayview", FALSE, TRUE);
-}
-
-void
-gnome_calendar_goto_today (GnomeCalendar *gcal)
-{
- g_return_if_fail (gcal != NULL);
- g_return_if_fail (GNOME_IS_CALENDAR (gcal));
-
- gnome_calendar_goto (gcal, time (NULL));
-
- gtk_widget_grab_focus (get_current_page (gcal));
-}
-
-
-/* This sets which view is currently shown. It also updates the selection time
- of the view so it shows the appropriate days. */
-void
-gnome_calendar_set_view (GnomeCalendar *gcal,
- char *page_name,
- gboolean range_selected,
- gboolean focus)
-{
- g_return_if_fail (gcal != NULL);
- g_return_if_fail (GNOME_IS_CALENDAR (gcal));
- g_return_if_fail (page_name != NULL);
-
- gnome_calendar_set_view_internal (gcal, page_name, range_selected, focus);
- gnome_calendar_update_view_times (gcal);
- gnome_calendar_update_date_navigator (gcal);
-}
-
-
-/* This sets the view without changing the selection or updating the date
- navigator. If a range of dates isn't selected it will also reset the number
- of days/weeks shown to the default (i.e. 1 day for the day view or 5 weeks
- for the month view). */
-static void
-gnome_calendar_set_view_internal (GnomeCalendar *gcal,
- char *page_name,
- gboolean range_selected,
- gboolean focus)
-{
- GnomeCalendarPrivate *priv;
- int view;
- gboolean round_selection;
- GtkWidget *focus_widget;
-
- priv = gcal->priv;
-
- round_selection = FALSE;
-
- if (!strcmp (page_name, "dayview")) {
- view = VIEW_DAY;
- focus_widget = priv->day_view;
-
- if (!range_selected)
- e_day_view_set_days_shown (E_DAY_VIEW (priv->day_view), 1);
- } else if (!strcmp (page_name, "workweekview")) {
- view = VIEW_WORK_WEEK;
- focus_widget = priv->work_week_view;
- } else if (!strcmp (page_name, "weekview")) {
- view = VIEW_WEEK;
- focus_widget = priv->week_view;
- round_selection = TRUE;
- } else if (!strcmp (page_name, "monthview")) {
- view = VIEW_MONTH;
- focus_widget = priv->month_view;
-
- if (!range_selected)
- e_week_view_set_weeks_shown (E_WEEK_VIEW (priv->month_view), 5);
- round_selection = TRUE;
- } else {
- g_warning ("Unknown calendar view: %s", page_name);
- g_assert_not_reached ();
- return;
- }
-
- priv->current_view_type = view;
- priv->range_selected = range_selected;
-
- calendar_config_set_default_view (view);
-
- gtk_notebook_set_page (GTK_NOTEBOOK (priv->notebook), view);
-
- if (focus)
- gtk_widget_grab_focus (focus_widget);
-
- gnome_calendar_set_pane_positions (gcal);
-
- /* For the week & month views we want the selection in the date
- navigator to be rounded to the nearest week when the arrow buttons
- are pressed to move to the previous/next month. */
- gtk_object_set (GTK_OBJECT (priv->date_navigator->calitem),
- "round_selection_when_moving", round_selection,
- NULL);
-}
-
-
-static void
-gnome_calendar_set_pane_positions (GnomeCalendar *gcal)
-{
- GnomeCalendarPrivate *priv;
- gint top_border, bottom_border, left_border, right_border;
- gint col_width, row_height;
- gfloat right_pane_width, top_pane_height;
-
- priv = gcal->priv;
-
- /* Get the size of the calendar month width & height. */
- e_calendar_get_border_size (priv->date_navigator,
- &top_border, &bottom_border,
- &left_border, &right_border);
- gtk_object_get (GTK_OBJECT (priv->date_navigator->calitem),
- "row_height", &row_height,
- "column_width", &col_width,
- NULL);
-
- if (priv->current_view_type == VIEW_MONTH && !priv->range_selected) {
- right_pane_width = priv->hpane_pos_month_view;
- top_pane_height = priv->vpane_pos_month_view;
- } else {
- right_pane_width = priv->hpane_pos;
- top_pane_height = priv->vpane_pos;
- }
-
- /* We add the borders before multiplying due to the way we are using
- the EPaned quantum feature. */
- if (right_pane_width < 0.001)
- right_pane_width = 0.0;
- else
- right_pane_width = (right_pane_width * (col_width + left_border + right_border)
- + 0.5);
- if (top_pane_height < 0.001)
- top_pane_height = 0.0;
- else
- top_pane_height = (top_pane_height * (row_height + top_border + bottom_border)
- + 0.5);
-
- e_paned_set_position (E_PANED (priv->hpane), -1);
- e_paned_set_position (E_PANED (priv->vpane), -1);
-
- /* We add one to each dimension since we can't use 0. */
-
- gtk_widget_set_usize (priv->vpane, right_pane_width + 1, -2);
- gtk_widget_set_usize (GTK_WIDGET (priv->date_navigator), -2, top_pane_height + 1);
-}
-
-/* Loads the initial data into the calendar; this should be called right after
- * the cal_opened signal from the client is invoked.
- */
-static void
-initial_load (GnomeCalendar *gcal)
-{
- GnomeCalendarPrivate *priv;
-
- priv = gcal->priv;
-
- tag_calendar_by_client (priv->date_navigator, priv->client);
-}
-
-/* Displays an error to indicate that opening a calendar failed */
-static void
-open_error (GnomeCalendar *gcal, const char *uri)
-{
- char *msg;
-
- msg = g_strdup_printf (_("Could not open the folder in `%s'"), uri);
- gnome_error_dialog_parented (msg, GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (gcal))));
- g_free (msg);
-}
-
-/* Displays an error to indicate that the specified URI method is not supported */
-static void
-method_error (GnomeCalendar *gcal, const char *uri)
-{
- char *msg;
-
- msg = g_strdup_printf (_("The method required to open `%s' is not supported"), uri);
- gnome_error_dialog_parented (msg, GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (gcal))));
- g_free (msg);
-}
-
-/* Callback from the calendar client when a calendar is loaded */
-static void
-cal_opened_cb (CalClient *client, CalClientOpenStatus status, gpointer data)
-{
- GnomeCalendar *gcal;
- GnomeCalendarPrivate *priv;
-
- gcal = GNOME_CALENDAR (data);
- priv = gcal->priv;
-
- switch (status) {
- case CAL_CLIENT_OPEN_SUCCESS:
- if (client == priv->client)
- initial_load (gcal);
-
- break;
-
- case CAL_CLIENT_OPEN_ERROR:
- open_error (gcal, cal_client_get_uri (client));
- break;
-
- case CAL_CLIENT_OPEN_NOT_FOUND:
- /* bullshit; we did not specify only_if_exists */
- g_assert_not_reached ();
- return;
-
- case CAL_CLIENT_OPEN_METHOD_NOT_SUPPORTED:
- method_error (gcal, cal_client_get_uri (client));
- break;
-
- default:
- g_assert_not_reached ();
- return;
- }
-}
-
-/* Callback from the calendar client when an object is updated */
-static void
-obj_updated_cb (CalClient *client, const char *uid, gpointer data)
-{
- GnomeCalendar *gcal;
- GnomeCalendarPrivate *priv;
-
- gcal = GNOME_CALENDAR (data);
- priv = gcal->priv;
-
- tag_calendar_by_client (priv->date_navigator, priv->client);
-}
-
-/* Callback from the calendar client when an object is removed */
-static void
-obj_removed_cb (CalClient *client, const char *uid, gpointer data)
-{
- GnomeCalendar *gcal;
- GnomeCalendarPrivate *priv;
-
- gcal = GNOME_CALENDAR (data);
- priv = gcal->priv;
-
- tag_calendar_by_client (priv->date_navigator, priv->client);
-}
-
-GtkWidget *
-gnome_calendar_construct (GnomeCalendar *gcal)
-{
- GnomeCalendarPrivate *priv;
- gint view;
- gchar *page;
-
- g_return_val_if_fail (gcal != NULL, NULL);
- g_return_val_if_fail (GNOME_IS_CALENDAR (gcal), NULL);
-
- priv = gcal->priv;
-
- /*
- * Calendar Folder Client.
- */
- priv->client = cal_client_new ();
- if (!priv->client)
- return NULL;
-
- gtk_signal_connect (GTK_OBJECT (priv->client), "cal_opened",
- GTK_SIGNAL_FUNC (cal_opened_cb), gcal);
- gtk_signal_connect (GTK_OBJECT (priv->client), "obj_updated",
- GTK_SIGNAL_FUNC (obj_updated_cb), gcal);
- gtk_signal_connect (GTK_OBJECT (priv->client), "obj_removed",
- GTK_SIGNAL_FUNC (obj_removed_cb), gcal);
-
-#if 0
- alarm_notify_add_client (priv->client);
-#endif
-
- e_day_view_set_cal_client (E_DAY_VIEW (priv->day_view),
- priv->client);
- e_day_view_set_cal_client (E_DAY_VIEW (priv->work_week_view),
- priv->client);
- e_week_view_set_cal_client (E_WEEK_VIEW (priv->week_view),
- priv->client);
- e_week_view_set_cal_client (E_WEEK_VIEW (priv->month_view),
- priv->client);
-
- /*
- * TaskPad Folder Client.
- */
- priv->task_pad_client = cal_client_new ();
- if (!priv->task_pad_client)
- return NULL;
-
- gtk_signal_connect (GTK_OBJECT (priv->task_pad_client), "cal_opened",
- GTK_SIGNAL_FUNC (cal_opened_cb), gcal);
-
-#if 0
- alarm_notify_add_client (priv->task_pad_client);
-#endif
-
- e_calendar_table_set_cal_client (E_CALENDAR_TABLE (priv->todo),
- priv->task_pad_client);
-
-
- /* Get the default view to show. */
- view = calendar_config_get_default_view ();
- switch (view) {
- case 1:
- page = "workweekview";
- break;
- case 2:
- page = "weekview";
- break;
- case 3:
- page = "monthview";
- break;
- default:
- page = "dayview";
- break;
- }
-
- gnome_calendar_set_view (gcal, page, FALSE, FALSE);
-
- return GTK_WIDGET (gcal);
-}
-
-GtkWidget *
-gnome_calendar_new (void)
-{
- GnomeCalendar *gcal;
-
- gcal = gtk_type_new (gnome_calendar_get_type ());
-
- if (!gnome_calendar_construct (gcal)) {
- g_message ("gnome_calendar_new(): Could not construct the calendar GUI");
- gtk_object_unref (GTK_OBJECT (gcal));
- return NULL;
- }
-
- return GTK_WIDGET (gcal);
-}
-
-/**
- * gnome_calendar_get_cal_client:
- * @gcal: A calendar view.
- *
- * Queries the calendar client interface object that a calendar view is using.
- *
- * Return value: A calendar client interface object.
- **/
-CalClient *
-gnome_calendar_get_cal_client (GnomeCalendar *gcal)
-{
- GnomeCalendarPrivate *priv;
-
- g_return_val_if_fail (gcal != NULL, NULL);
- g_return_val_if_fail (GNOME_IS_CALENDAR (gcal), NULL);
-
- priv = gcal->priv;
-
- return priv->client;
-}
-
-gboolean
-gnome_calendar_open (GnomeCalendar *gcal, const char *str_uri)
-{
- GnomeCalendarPrivate *priv;
- char *tasks_uri;
- gboolean success;
-
- g_return_val_if_fail (gcal != NULL, FALSE);
- g_return_val_if_fail (GNOME_IS_CALENDAR (gcal), FALSE);
- g_return_val_if_fail (str_uri != NULL, FALSE);
-
- priv = gcal->priv;
-
- g_return_val_if_fail (
- cal_client_get_load_state (priv->client) == CAL_CLIENT_LOAD_NOT_LOADED,
- FALSE);
-
- g_return_val_if_fail (
- cal_client_get_load_state (priv->task_pad_client) == CAL_CLIENT_LOAD_NOT_LOADED,
- FALSE);
-
- if (!cal_client_open_calendar (priv->client, str_uri, FALSE)) {
- g_message ("gnome_calendar_open(): Could not issue the request");
- return FALSE;
- }
-
- /* Open the appropriate Tasks folder to show in the TaskPad.
- Currently we just show the folder named "Tasks", but it will be
- a per-calendar option in future. */
-
- tasks_uri = g_strdup_printf ("%s/local/Tasks/tasks.ics", evolution_dir);
- success = cal_client_open_calendar (priv->task_pad_client, tasks_uri, FALSE);
- g_free (tasks_uri);
-
- if (!success) {
- g_message ("gnome_calendar_open(): Could not issue the request");
- return FALSE;
- }
-
- return TRUE;
-}
-
-/* Tells the calendar to reload all config settings.
- If initializing is TRUE it sets the pane positions as well. (We don't
- want to reset the pane positions after the user clicks 'Apply' in the
- preferences dialog.) */
-void
-gnome_calendar_update_config_settings (GnomeCalendar *gcal,
- gboolean initializing)
-{
- GnomeCalendarPrivate *priv;
- CalWeekdays working_days;
- gint week_start_day, time_divisions;
- gint start_hour, start_minute, end_hour, end_minute;
- gboolean use_24_hour, show_event_end, compress_weekend;
-
- g_return_if_fail (GNOME_IS_CALENDAR (gcal));
-
- priv = gcal->priv;
-
- working_days = calendar_config_get_working_days ();
- /* CalWeekdays and EDayViewDays use the same bit-masks, so we can
- use the same value. */
- e_day_view_set_working_days (E_DAY_VIEW (priv->day_view),
- (EDayViewDays) working_days);
- e_day_view_set_working_days (E_DAY_VIEW (priv->work_week_view),
- (EDayViewDays) working_days);
-
- /* Note that this is 0 (Sun) to 6 (Sat). */
- week_start_day = calendar_config_get_week_start_day ();
-
- /* Convert it to 0 (Mon) to 6 (Sun), which is what we use. */
- week_start_day = (week_start_day + 6) % 7;
-
- e_day_view_set_week_start_day (E_DAY_VIEW (priv->day_view),
- week_start_day);
- e_day_view_set_week_start_day (E_DAY_VIEW (priv->work_week_view),
- week_start_day);
- e_week_view_set_week_start_day (E_WEEK_VIEW (priv->week_view),
- week_start_day);
- e_week_view_set_week_start_day (E_WEEK_VIEW (priv->month_view),
- week_start_day);
-
- start_hour = calendar_config_get_day_start_hour ();
- start_minute = calendar_config_get_day_start_minute ();
- end_hour = calendar_config_get_day_end_hour ();
- end_minute = calendar_config_get_day_end_minute ();
- e_day_view_set_working_day (E_DAY_VIEW (priv->day_view),
- start_hour, start_minute,
- end_hour, end_minute);
- e_day_view_set_working_day (E_DAY_VIEW (priv->work_week_view),
- start_hour, start_minute,
- end_hour, end_minute);
-
- use_24_hour = calendar_config_get_24_hour_format ();
- e_day_view_set_24_hour_format (E_DAY_VIEW (priv->day_view),
- use_24_hour);
- e_day_view_set_24_hour_format (E_DAY_VIEW (priv->work_week_view),
- use_24_hour);
- e_week_view_set_24_hour_format (E_WEEK_VIEW (priv->week_view),
- use_24_hour);
- e_week_view_set_24_hour_format (E_WEEK_VIEW (priv->month_view),
- use_24_hour);
-
- time_divisions = calendar_config_get_time_divisions ();
- e_day_view_set_mins_per_row (E_DAY_VIEW (priv->day_view),
- time_divisions);
- e_day_view_set_mins_per_row (E_DAY_VIEW (priv->work_week_view),
- time_divisions);
-
- show_event_end = calendar_config_get_show_event_end ();
- e_day_view_set_show_event_end_times (E_DAY_VIEW (priv->day_view),
- show_event_end);
- e_day_view_set_show_event_end_times (E_DAY_VIEW (priv->work_week_view),
- show_event_end);
- e_week_view_set_show_event_end_times (E_WEEK_VIEW (priv->week_view),
- show_event_end);
- e_week_view_set_show_event_end_times (E_WEEK_VIEW (priv->month_view),
- show_event_end);
-
- compress_weekend = calendar_config_get_compress_weekend ();
- e_week_view_set_compress_weekend (E_WEEK_VIEW (priv->month_view),
- compress_weekend);
-
- calendar_config_configure_e_calendar (E_CALENDAR (priv->date_navigator));
-
- calendar_config_configure_e_calendar_table (E_CALENDAR_TABLE (priv->todo));
-
- if (initializing) {
- priv->hpane_pos = calendar_config_get_hpane_pos ();
- priv->vpane_pos = calendar_config_get_vpane_pos ();
- priv->hpane_pos_month_view = calendar_config_get_month_hpane_pos ();
- priv->vpane_pos_month_view = calendar_config_get_month_vpane_pos ();
- } else {
- gnome_calendar_update_paned_quanta (gcal);
- }
-
- /* The range of days shown may have changed, so we update the date
- navigator if needed. */
- gnome_calendar_update_date_navigator (gcal);
-}
-
-
-void
-gnome_calendar_set_selected_time_range (GnomeCalendar *gcal,
- time_t start_time,
- time_t end_time)
-{
- GnomeCalendarPrivate *priv;
-
- priv = gcal->priv;
-
- priv->selection_start_time = start_time;
- priv->selection_end_time = end_time;
-
- gnome_calendar_update_date_navigator (gcal);
-}
-
-/**
- * gnome_calendar_get_selected_time_range:
- * @gcal: A calendar view.
- * @start_time: Return value for the start of the time selection.
- * @end_time: Return value for the end of the time selection.
- *
- * Queries the time selection range on the calendar view.
- **/
-void
-gnome_calendar_get_selected_time_range (GnomeCalendar *gcal,
- time_t *start_time,
- time_t *end_time)
-{
- GnomeCalendarPrivate *priv;
-
- g_return_if_fail (gcal != NULL);
- g_return_if_fail (GNOME_IS_CALENDAR (gcal));
-
- priv = gcal->priv;
-
- if (start_time)
- *start_time = priv->selection_start_time;
-
- if (end_time)
- *end_time = priv->selection_end_time;
-}
-
-
-/* Callback used when an event editor dialog is closed */
-struct editor_closure
-{
- GnomeCalendar *gcal;
- char *uid;
-};
-
-static void
-editor_closed_cb (GtkWidget *widget, gpointer data)
-{
- GnomeCalendar *gcal;
- GnomeCalendarPrivate *priv;
- struct editor_closure *ec;
- gboolean result;
- gpointer orig_key;
- char *orig_uid;
-
- ec = (struct editor_closure *) data;
- gcal = ec->gcal;
- priv = gcal->priv;
-
- result = g_hash_table_lookup_extended (priv->object_editor_hash, ec->uid, &orig_key, NULL);
- g_assert (result != FALSE);
-
- orig_uid = orig_key;
-
- if (!priv->in_destroy)
- g_hash_table_remove (priv->object_editor_hash, orig_uid);
-
- g_free (orig_uid);
-
- g_free (ec);
-}
-
-void
-gnome_calendar_edit_object (GnomeCalendar *gcal, CalComponent *comp)
-{
- GnomeCalendarPrivate *priv;
- EventEditor *ee;
- struct editor_closure *ec;
- const char *uid;
-
- g_return_if_fail (gcal != NULL);
- g_return_if_fail (GNOME_IS_CALENDAR (gcal));
- g_return_if_fail (comp != NULL);
-
- priv = gcal->priv;
-
- cal_component_get_uid (comp, &uid);
-
- ee = g_hash_table_lookup (priv->object_editor_hash, uid);
- if (!ee) {
- ec = g_new0 (struct editor_closure, 1);
-
- ee = event_editor_new ();
- if (!ee) {
- g_message ("gnome_calendar_edit_object(): Could not create the event editor");
- return;
- }
-
- ec->gcal = gcal;
- ec->uid = g_strdup (uid);
-
- g_hash_table_insert (priv->object_editor_hash, ec->uid, ee);
-
- gtk_signal_connect (GTK_OBJECT (ee), "destroy",
- GTK_SIGNAL_FUNC (editor_closed_cb),
- ec);
-
- event_editor_set_cal_client (EVENT_EDITOR (ee), priv->client);
- event_editor_set_event_object (EVENT_EDITOR (ee), comp);
- }
-
- event_editor_focus (ee);
-}
-
-/**
- * gnome_calendar_new_appointment:
- * @gcal: An Evolution calendar.
- * @dtstart: a Unix time_t that marks the beginning of the appointment.
- * @dtend: a Unix time_t that marks the end of the appointment.
- * @all_day: if true, the dtstart and dtend are expanded to cover the entire day.
- *
- * Opens an event editor dialog for a new appointment.
- *
- **/
-void
-gnome_calendar_new_appointment_for (GnomeCalendar *cal,
- time_t dtstart, time_t dtend,
- gboolean all_day)
-{
- struct icaltimetype itt;
- CalComponentDateTime dt;
- CalComponent *comp;
-
- g_return_if_fail (cal != NULL);
- g_return_if_fail (GNOME_IS_CALENDAR (cal));
-
- if (all_day){
- dtstart = time_day_begin (dtstart);
- dtend = time_day_end (dtend);
- }
-
- dt.value = &itt;
- dt.tzid = NULL;
-
- comp = cal_component_new ();
- cal_component_set_new_vtype (comp, CAL_COMPONENT_EVENT);
-
- itt = icaltime_from_timet (dtstart, FALSE);
- cal_component_set_dtstart (comp, &dt);
-
- itt = icaltime_from_timet (dtend, FALSE);
- cal_component_set_dtend (comp, &dt);
-
- cal_component_commit_sequence (comp);
-
- gnome_calendar_edit_object (cal, comp);
- gtk_object_unref (GTK_OBJECT (comp));
-}
-
-/**
- * gnome_calendar_new_appointment:
- * @gcal: An Evolution calendar.
- *
- * Opens an event editor dialog for a new appointment. The appointment's start
- * and end times are set to the currently selected time range in the calendar
- * views.
- **/
-void
-gnome_calendar_new_appointment (GnomeCalendar *gcal)
-{
- time_t dtstart, dtend;
-
- g_return_if_fail (gcal != NULL);
- g_return_if_fail (GNOME_IS_CALENDAR (gcal));
-
- gnome_calendar_get_current_time_range (gcal, &dtstart, &dtend);
- gnome_calendar_new_appointment_for (gcal, dtstart, dtend, FALSE);
-}
-
-/* Returns the selected time range for the current view. Note that this may be
- different from the fields in the GnomeCalendar, since the view may clip
- this or choose a more appropriate time. */
-void
-gnome_calendar_get_current_time_range (GnomeCalendar *gcal,
- time_t *start_time,
- time_t *end_time)
-{
- GnomeCalendarPrivate *priv;
- GtkWidget *page;
-
- priv = gcal->priv;
-
- page = get_current_page (gcal);
-
- if (page == priv->day_view || page == priv->work_week_view)
- e_day_view_get_selected_time_range (E_DAY_VIEW (page), start_time, end_time);
- else if (page == priv->week_view || page == priv->month_view)
- e_week_view_get_selected_time_range (E_WEEK_VIEW (page), start_time, end_time);
- else {
- g_message ("My penguin is gone!");
- g_assert_not_reached ();
- }
-}
-
-
-
-/* This updates the month shown and the days selected in the calendar, if
- necessary. */
-static void
-gnome_calendar_update_date_navigator (GnomeCalendar *gcal)
-{
- GnomeCalendarPrivate *priv;
- GDate start_date, end_date;
- gint days_shown;
-
- priv = gcal->priv;
-
- /* If the ECalendar isn't visible, we just return. */
- if (!GTK_WIDGET_VISIBLE (priv->date_navigator))
- return;
-
- if (gnome_calendar_get_days_shown (gcal, &start_date, &days_shown)) {
- end_date = start_date;
- g_date_add_days (&end_date, days_shown - 1);
-
- e_calendar_item_set_selection (priv->date_navigator->calitem,
- &start_date, &end_date);
- }
-}
-
-
-static gboolean
-gnome_calendar_get_days_shown (GnomeCalendar *gcal,
- GDate *start_date,
- gint *days_shown)
-{
- GnomeCalendarPrivate *priv;
- GtkWidget *page;
-
- priv = gcal->priv;
-
- page = get_current_page (gcal);
-
- if (page == priv->day_view || page == priv->work_week_view) {
- g_date_clear (start_date, 1);
- g_date_set_time (start_date, E_DAY_VIEW (page)->lower);
- *days_shown = e_day_view_get_days_shown (E_DAY_VIEW (page));
- return TRUE;
- } else if (page == priv->week_view || page == priv->month_view) {
- *start_date = E_WEEK_VIEW (page)->first_day_shown;
- if (e_week_view_get_multi_week_view (E_WEEK_VIEW (page)))
- *days_shown = e_week_view_get_weeks_shown (E_WEEK_VIEW (page)) * 7;
- else
- *days_shown = 7;
-
- return TRUE;
- } else {
- g_assert_not_reached ();
- return FALSE;
- }
-}
-
-
-static void
-gnome_calendar_on_date_navigator_selection_changed (ECalendarItem *calitem,
- GnomeCalendar *gcal)
-{
- GnomeCalendarPrivate *priv;
- GDate start_date, end_date, new_start_date, new_end_date;
- gint days_shown, new_days_shown;
- gint start_year, start_month, start_day;
- gint end_year, end_month, end_day;
- gboolean starts_on_week_start_day;
- struct tm tm;
-
- priv = gcal->priv;
-
- starts_on_week_start_day = FALSE;
-
- if (!gnome_calendar_get_days_shown (gcal, &start_date, &days_shown))
- return;
-
- end_date = start_date;
- g_date_add_days (&end_date, days_shown - 1);
-
- e_calendar_item_get_selection (calitem, &new_start_date, &new_end_date);
-
- /* If the selection hasn't changed just return. */
- if (!g_date_compare (&start_date, &new_start_date)
- && !g_date_compare (&end_date, &new_end_date))
- return;
-
- new_days_shown = g_date_julian (&new_end_date) - g_date_julian (&new_start_date) + 1;
-
- /* If a complete week is selected we show the Week view.
- Note that if weekends are compressed and the week start day is set
- to Sunday we don't actually show complete weeks in the Week view,
- so this may need tweaking. */
- if (g_date_weekday (&new_start_date) % 7 == calendar_config_get_week_start_day ())
- starts_on_week_start_day = TRUE;
-
- /* Switch views as appropriate, and change the number of days or weeks
- shown. */
- if (new_days_shown > 9) {
- e_week_view_set_weeks_shown (E_WEEK_VIEW (priv->month_view),
- (new_days_shown + 6) / 7);
- e_week_view_set_first_day_shown (E_WEEK_VIEW (priv->month_view), &new_start_date);
-
- gnome_calendar_set_view_internal (gcal, "monthview", TRUE, FALSE);
- gnome_calendar_update_date_navigator (gcal);
- } else if (new_days_shown == 7 && starts_on_week_start_day) {
- e_week_view_set_first_day_shown (E_WEEK_VIEW (priv->week_view), &new_start_date);
-
- gnome_calendar_set_view_internal (gcal, "weekview", TRUE, FALSE);
- gnome_calendar_update_date_navigator (gcal);
- } else {
- start_year = g_date_year (&new_start_date);
- start_month = g_date_month (&new_start_date) - 1;
- start_day = g_date_day (&new_start_date);
- end_year = g_date_year (&new_end_date);
- end_month = g_date_month (&new_end_date) - 1;
- end_day = g_date_day (&new_end_date);
-
- tm.tm_year = start_year - 1900;
- tm.tm_mon = start_month;
- tm.tm_mday = start_day;
- tm.tm_hour = 0;
- tm.tm_min = 0;
- tm.tm_sec = 0;
- tm.tm_isdst = -1;
- priv->selection_start_time = mktime (&tm);
-
- tm.tm_year = end_year - 1900;
- tm.tm_mon = end_month;
- tm.tm_mday = end_day + 1; /* mktime() will normalize this. */
- tm.tm_hour = 0;
- tm.tm_min = 0;
- tm.tm_sec = 0;
- tm.tm_isdst = -1;
- priv->selection_end_time = mktime (&tm);
-
- e_day_view_set_days_shown (E_DAY_VIEW (priv->day_view), new_days_shown);
- gnome_calendar_set_view (gcal, "dayview", TRUE, FALSE);
- }
-
- gnome_calendar_update_view_buttons (gcal);
- gtk_widget_grab_focus (get_current_page (gcal));
-}
-
-
-static void
-gnome_calendar_on_date_navigator_date_range_changed (ECalendarItem *calitem,
- GnomeCalendar *gcal)
-{
- GnomeCalendarPrivate *priv;
-
- priv = gcal->priv;
-
- tag_calendar_by_client (priv->date_navigator, priv->client);
-}
-
-
-static void
-gnome_calendar_on_date_navigator_style_set (GtkWidget *widget,
- GtkStyle *previous_style,
- gpointer data)
-{
- gnome_calendar_update_paned_quanta (GNOME_CALENDAR (data));
-}
-
-
-static void
-gnome_calendar_update_paned_quanta (GnomeCalendar *gcal)
-{
- GnomeCalendarPrivate *priv;
- gint row_height, col_width;
- gint top_border, bottom_border, left_border, right_border;
-
- priv = gcal->priv;
-
- e_calendar_get_border_size (priv->date_navigator,
- &top_border, &bottom_border,
- &left_border, &right_border);
- gtk_object_get (GTK_OBJECT (priv->date_navigator->calitem),
- "row_height", &row_height,
- "column_width", &col_width,
- NULL);
-
- /* The EPaned quantum feature works better if we add on the calendar
- borders to the quantum size. Otherwise if you shrink the date
- navigator you get left with the border widths/heights which looks
- bad. EPaned should be more flexible really. */
- col_width += left_border + right_border;
- row_height += top_border + bottom_border;
-
- /* We don't have to use the EPaned quantum feature. We could just let
- the calendar expand to fill the allocated space, showing as many
- months as will fit. But for that to work nicely the EPaned should
- resize the widgets as the bar is dragged. Otherwise the user has
- to mess around to get the number of months that they want. */
-#if 1
- gtk_object_set (GTK_OBJECT (priv->hpane),
- "quantum", (guint) col_width,
- NULL);
- gtk_object_set (GTK_OBJECT (priv->vpane),
- "quantum", (guint) row_height,
- NULL);
-#endif
-
- gnome_calendar_set_pane_positions (gcal);
-}
-
-
-static void
-gnome_calendar_on_date_navigator_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation,
- gpointer data)
-{
- GnomeCalendar *gcal;
- GnomeCalendarPrivate *priv;
- gint width, height, row_height, col_width;
- gint top_border, bottom_border, left_border, right_border;
- gfloat hpane_pos, vpane_pos;
-
- gcal = GNOME_CALENDAR (data);
- priv = gcal->priv;
-
- if (priv->current_view_type != VIEW_NOT_SET) {
- e_calendar_get_border_size (priv->date_navigator,
- &top_border, &bottom_border,
- &left_border, &right_border);
- gtk_object_get (GTK_OBJECT (priv->date_navigator->calitem),
- "row_height", &row_height,
- "column_width", &col_width,
- NULL);
-
- /* We subtract one from each dimension since we added 1 in
- gnome_calendar_set_view_internal(). */
- width = allocation->width - 1;
- height = allocation->height - 1;
-
- /* We add the border sizes to work around the EPaned
- quantized feature. */
- col_width += left_border + right_border;
- row_height += top_border + bottom_border;
-
- hpane_pos = (gfloat) width / col_width;
- vpane_pos = (gfloat) height / row_height;
-
- if (priv->current_view_type == VIEW_MONTH
- && !priv->range_selected) {
- priv->hpane_pos_month_view = hpane_pos;
- priv->vpane_pos_month_view = vpane_pos;
- calendar_config_set_month_hpane_pos (hpane_pos);
- calendar_config_set_month_vpane_pos (vpane_pos);
- } else {
- priv->hpane_pos = hpane_pos;
- priv->vpane_pos = vpane_pos;
- calendar_config_set_hpane_pos (hpane_pos);
- calendar_config_set_vpane_pos (vpane_pos);
- }
- }
-}
-
-void
-gnome_calendar_set_view_buttons (GnomeCalendar *gcal,
- GtkWidget *day_button,
- GtkWidget *work_week_button,
- GtkWidget *week_button,
- GtkWidget *month_button)
-{
- GnomeCalendarPrivate *priv;
-
- g_return_if_fail (gcal != NULL);
- g_return_if_fail (GNOME_IS_CALENDAR (gcal));
- g_return_if_fail (day_button != NULL);
- g_return_if_fail (GTK_IS_TOGGLE_BUTTON (day_button));
- g_return_if_fail (work_week_button != NULL);
- g_return_if_fail (GTK_IS_TOGGLE_BUTTON (work_week_button));
- g_return_if_fail (week_button != NULL);
- g_return_if_fail (GTK_IS_TOGGLE_BUTTON (week_button));
- g_return_if_fail (month_button != NULL);
- g_return_if_fail (GTK_IS_TOGGLE_BUTTON (month_button));
-
- priv = gcal->priv;
-
- priv->day_button = day_button;
- priv->work_week_button = work_week_button;
- priv->week_button = week_button;
- priv->month_button = month_button;
-}
-
-/* This makes the appropriate radio button in the toolbar active. It blocks the
- * signals so that we can do a clean setup without affecting the views.
- */
-void
-gnome_calendar_update_view_buttons (GnomeCalendar *gcal)
-{
- GnomeCalendarPrivate *priv;
- GtkWidget *page, *button;
-
- priv = gcal->priv;
-
- page = get_current_page (gcal);
-
- if (page == priv->day_view)
- button = priv->day_button;
- else if (page == priv->work_week_view)
- button = priv->work_week_button;
- else if (page == priv->week_view)
- button = priv->week_button;
- else if (page == priv->month_view)
- button = priv->month_button;
- else {
- g_assert_not_reached ();
- return;
- }
-
- if (button) {
- gtk_signal_handler_block_by_data (GTK_OBJECT (button), gcal);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
- gtk_signal_handler_unblock_by_data (GTK_OBJECT (button), gcal);
- }
-}
diff --git a/calendar/gui/gnome-cal.h b/calendar/gui/gnome-cal.h
deleted file mode 100644
index 0192efabe4..0000000000
--- a/calendar/gui/gnome-cal.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/* Evolution calendar - Main calendar view widget
- *
- * Copyright (C) 1998 The Free Software Foundation
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Miguel de Icaza <miguel@ximian.com>
- * Federico Mena-Quintero <federico@ximian.com>
- * Seth Alves <alves@hungry.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef GNOME_CALENDAR_APP_H
-#define GNOME_CALENDAR_APP_H
-
-#include <time.h>
-#include <libgnome/gnome-defs.h>
-#include <gtk/gtkvbox.h>
-#include <widgets/misc/e-calendar.h>
-#include <cal-client/cal-client.h>
-
-BEGIN_GNOME_DECLS
-
-
-
-#define GNOME_TYPE_CALENDAR (gnome_calendar_get_type ())
-#define GNOME_CALENDAR(obj) (GTK_CHECK_CAST ((obj), GNOME_TYPE_CALENDAR, GnomeCalendar))
-#define GNOME_CALENDAR_CLASS(klass) (GTK_CHECK_CAST_CLASS ((klass), GNOME_TYPE_CALENDAR, \
- GnomeCalendarClass))
-#define GNOME_IS_CALENDAR(obj) (GTK_CHECK_TYPE ((obj), GNOME_TYPE_CALENDAR))
-#define GNOME_IS_CALENDAR_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GNOME_TYPE_CALENDAR))
-
-typedef struct _GnomeCalendar GnomeCalendar;
-typedef struct _GnomeCalendarClass GnomeCalendarClass;
-typedef struct _GnomeCalendarPrivate GnomeCalendarPrivate;
-
-struct _GnomeCalendar {
- GtkVBox vbox;
-
- /* Private data */
- GnomeCalendarPrivate *priv;
-};
-
-struct _GnomeCalendarClass {
- GtkVBoxClass parent_class;
-};
-
-
-GtkType gnome_calendar_get_type (void);
-GtkWidget *gnome_calendar_construct (GnomeCalendar *gcal);
-
-GtkWidget *gnome_calendar_new (void);
-
-CalClient *gnome_calendar_get_cal_client (GnomeCalendar *gcal);
-
-gboolean gnome_calendar_open (GnomeCalendar *gcal, const char *str_uri);
-/*
-int gnome_calendar_create (GnomeCalendar *gcal,
- char *file);
-*/
-void gnome_calendar_next (GnomeCalendar *gcal);
-void gnome_calendar_previous (GnomeCalendar *gcal);
-void gnome_calendar_goto (GnomeCalendar *gcal,
- time_t new_time);
-void gnome_calendar_dayjump (GnomeCalendar *gcal,
- time_t time);
-/* Jumps to the current day */
-void gnome_calendar_goto_today (GnomeCalendar *gcal);
-char *gnome_calendar_get_current_view_name (GnomeCalendar *gcal);
-void gnome_calendar_set_view (GnomeCalendar *gcal,
- char *page_name,
- gboolean reset_range_shown,
- gboolean focus);
-
-void gnome_calendar_set_selected_time_range (GnomeCalendar *gcal,
- time_t start_time,
- time_t end_time);
-void gnome_calendar_get_selected_time_range (GnomeCalendar *gcal,
- time_t *start_time,
- time_t *end_time);
-
-void gnome_calendar_edit_object (GnomeCalendar *gcal,
- CalComponent *comp);
-
-void gnome_calendar_new_appointment (GnomeCalendar *gcal);
-void gnome_calendar_new_appointment_for (GnomeCalendar *cal,
- time_t dtstart, time_t dtend,
- gboolean all_day);
-
-/* Returns the selected time range for the current view. Note that this may be
- different from the fields in the GnomeCalendar, since the view may clip
- this or choose a more appropriate time. */
-void gnome_calendar_get_current_time_range (GnomeCalendar *gcal,
- time_t *start_time,
- time_t *end_time);
-
-/* Tells the calendar to reload all config settings. initializing should be
- TRUE when we are setting the config settings for the first time. */
-void gnome_calendar_update_config_settings (GnomeCalendar *gcal,
- gboolean initializing);
-
-void gnome_calendar_set_view_buttons (GnomeCalendar *gcal,
- GtkWidget *day_button,
- GtkWidget *work_week_button,
- GtkWidget *week_button,
- GtkWidget *month_button);
-
-/* This makes the appropriate radio button in the toolbar active.
- It sets the ignore_view_button_clicks flag so the "clicked" signal handlers
- just return without doing anything. */
-void gnome_calendar_update_view_buttons (GnomeCalendar *gcal);
-
-
-
-END_GNOME_DECLS
-
-#endif
diff --git a/calendar/gui/gnome-cal.html b/calendar/gui/gnome-cal.html
deleted file mode 100644
index 5a7d0a537f..0000000000
--- a/calendar/gui/gnome-cal.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!-- Some simple instructions on how to use the help browser -->
-<BODY>
-<!-- <TITLE>GNOME Calendar Documentation</TITLE> -->
-<H2> GNOME Calendar Documentation </H2>
-<p>
-The GNOME calendar program is the calendaring program of the GNOME
-system. It uses the vCalendar standard for transfering calendar
-information (and is also the on-disk format used).
-
-<p>
-
-<a name="cmdline">
-<h2>Command line options</h2>
-
-Several options are available on the command line, they are:
-<ul>
- <li><tt>--events</tt> Displays the events for the date
- specified (or today, if no date is specified).
-
- <li><tt>--from DATE</tt> Define the beginning of the range for
- the event display, or the startup day on the calenday views.
- By default, the event will span the whole day specified in
- DATE.
-
- <li><tt>--to DATE</tt> Define the range end for the event
- display. If this is not specified, it will default to the end
- of the day specified by the <tt>--from</tt> option.
-
- <li><tt>--file FILE</tt> Set the calendar to the FILE
- specified on the command line.
-
- <li><tt>--todo</tt> Dumps the to-do values to standard output.
-</ul>
-
-<p>
-
-DATE is interpreted as being in the local time- zone, unless a
-specific timezone is specified. Examples of valid date specifications
-include: "1 month ago", "2 hours ago", "400000 seconds ago", "last
-year", "last Monday", "yesterday", "a fortnight ago", "3/31/92
-10:00:07 PST", "January 23, 1987 10:05pm", "22:00 GMT".
-
-</BODY>
-
diff --git a/calendar/gui/gnome-calendar-conduit.png b/calendar/gui/gnome-calendar-conduit.png
deleted file mode 100644
index e867ba90b2..0000000000
--- a/calendar/gui/gnome-calendar-conduit.png
+++ /dev/null
Binary files differ
diff --git a/calendar/gui/goto-dialog.glade b/calendar/gui/goto-dialog.glade
deleted file mode 100644
index 289ad7ab69..0000000000
--- a/calendar/gui/goto-dialog.glade
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml version="1.0"?>
-<GTK-Interface>
-
-<project>
- <name>preferences</name>
- <program_name>preferences</program_name>
- <directory></directory>
- <source_directory>src</source_directory>
- <pixmaps_directory>pixmaps</pixmaps_directory>
- <language>C</language>
- <gnome_support>True</gnome_support>
- <gettext_support>True</gettext_support>
-</project>
-
-<widget>
- <class>GnomeDialog</class>
- <name>goto-dialog</name>
- <visible>False</visible>
- <title>Go To Date</title>
- <type>GTK_WINDOW_TOPLEVEL</type>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>False</allow_grow>
- <auto_shrink>False</auto_shrink>
- <auto_close>False</auto_close>
- <hide_on_close>False</hide_on_close>
-
- <widget>
- <class>GtkVBox</class>
- <child_name>GnomeDialog:vbox</child_name>
- <name>dialog-vbox1</name>
- <homogeneous>False</homogeneous>
- <spacing>8</spacing>
- <child>
- <padding>4</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHButtonBox</class>
- <child_name>GnomeDialog:action_area</child_name>
- <name>dialog-action_area1</name>
- <layout_style>GTK_BUTTONBOX_END</layout_style>
- <spacing>8</spacing>
- <child_min_width>85</child_min_width>
- <child_min_height>27</child_min_height>
- <child_ipad_x>7</child_ipad_x>
- <child_ipad_y>0</child_ipad_y>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- <pack>GTK_PACK_END</pack>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>button4</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <label>Go To Today</label>
- <stock_pixmap>GNOME_STOCK_PIXMAP_JUMP_TO</stock_pixmap>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button5</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox</name>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox12</name>
- <homogeneous>True</homogeneous>
- <spacing>4</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkOptionMenu</class>
- <name>month</name>
- <can_focus>True</can_focus>
- <items>January
-February
-March
-April
-May
-June
-July
-August
-September
-October
-November
-December
-</items>
- <initial_choice>0</initial_choice>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkSpinButton</class>
- <name>year</name>
- <can_focus>True</can_focus>
- <climb_rate>1</climb_rate>
- <digits>0</digits>
- <numeric>True</numeric>
- <update_policy>GTK_UPDATE_IF_VALID</update_policy>
- <snap>False</snap>
- <wrap>False</wrap>
- <value>1969</value>
- <lower>1969</lower>
- <upper>2038</upper>
- <step>1</step>
- <page>5</page>
- <page_size>10</page_size>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>Placeholder</class>
- </widget>
- </widget>
- </widget>
-</widget>
-
-</GTK-Interface>
diff --git a/calendar/gui/goto.c b/calendar/gui/goto.c
deleted file mode 100644
index 448f898638..0000000000
--- a/calendar/gui/goto.c
+++ /dev/null
@@ -1,220 +0,0 @@
-/* Go to date dialog for Evolution
- *
- * Copyright (C) 1998 Red Hat, Inc.
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Federico Mena <federico@ximian.com>
- * JP Rosevear <jpr@ximian.com>
- */
-
-#include <config.h>
-#include <gtk/gtkmenu.h>
-#include <gtk/gtkoptionmenu.h>
-#include <gtk/gtksignal.h>
-#include <gtk/gtkspinbutton.h>
-#include <gtk/gtktogglebutton.h>
-#include <gtk/gtkwindow.h>
-#include <libgnomeui/gnome-dialog.h>
-#include <glade/glade.h>
-#include "calendar-commands.h"
-#include "tag-calendar.h"
-#include "goto.h"
-
-typedef struct
-{
- GladeXML *xml;
- GtkWidget *dialog;
-
- GtkWidget *month;
- GtkWidget *year;
- ECalendar *ecal;
- GtkWidget *vbox;
-
- GnomeCalendar *gcal;
- gint year_val;
- gint month_val;
- gint day_val;
-
-} GoToDialog;
-
-GoToDialog *dlg = NULL;
-
-/* Callback used when the year adjustment is changed */
-static void
-year_changed (GtkAdjustment *adj, gpointer data)
-{
- GoToDialog *dlg = data;
-
- dlg->year_val = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (dlg->year));
- e_calendar_item_set_first_month (dlg->ecal->calitem, dlg->year_val, dlg->month_val);
-}
-
-/* Callback used when a month button is toggled */
-static void
-month_changed (GtkToggleButton *toggle, gpointer data)
-{
- GoToDialog *dlg = data;
- GtkWidget *menu, *active;
-
- menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (dlg->month));
- active = gtk_menu_get_active (GTK_MENU (menu));
- dlg->month_val = g_list_index (GTK_MENU_SHELL (menu)->children, active);
-
- e_calendar_item_set_first_month (dlg->ecal->calitem, dlg->year_val, dlg->month_val);
-}
-
-static void
-ecal_date_range_changed (ECalendarItem *calitem, gpointer user_data)
-{
- GoToDialog *dlg = user_data;
- CalClient *client;
-
- client = gnome_calendar_get_cal_client (dlg->gcal);
- if (client)
- tag_calendar_by_client (dlg->ecal, client);
-}
-
-/* Event handler for day groups in the month item. A button press makes the calendar jump to the
- * selected day and destroys the Go-to dialog box.
- */
-static void
-ecal_event (ECalendarItem *calitem, gpointer user_data)
-{
- GoToDialog *dlg = user_data;
- GDate start_date, end_date;
- struct tm tm;
- time_t et;
-
- e_calendar_item_get_selection (calitem, &start_date, &end_date);
- g_date_to_struct_tm (&start_date, &tm);
- et = mktime (&tm);
-
- gnome_calendar_goto (dlg->gcal, et);
-
- gnome_dialog_close (GNOME_DIALOG (dlg->dialog));
-}
-
-/* Creates the ecalendar */
-static void
-create_ecal (GoToDialog *dlg)
-{
- ECalendarItem *calitem;
-
- dlg->ecal = E_CALENDAR (e_calendar_new ());
- calitem = dlg->ecal->calitem;
-
- e_calendar_item_set_display_popup (calitem, FALSE);
- gtk_widget_show (GTK_WIDGET (dlg->ecal));
- gtk_box_pack_start (GTK_BOX (dlg->vbox), GTK_WIDGET (dlg->ecal), TRUE, TRUE, 0);
-
- e_calendar_item_set_first_month (calitem, dlg->year_val, dlg->month_val);
-
- ecal_date_range_changed (calitem, dlg);
-}
-
-static void
-goto_today (GoToDialog *dlg)
-{
- gnome_calendar_goto_today (dlg->gcal);
-}
-
-/* Gets the widgets from the XML file and returns if they are all available. */
-static gboolean
-get_widgets (GoToDialog *dlg)
-{
-#define GW(name) glade_xml_get_widget (dlg->xml, name)
-
- dlg->dialog = GW ("goto-dialog");
-
- dlg->month = GW ("month");
- dlg->year = GW ("year");
- dlg->vbox = GW ("vbox");
-
-#undef GW
-
- return (dlg->dialog
- && dlg->month
- && dlg->year
- && dlg->vbox);
-}
-
-static void
-goto_dialog_init_widgets (GoToDialog *dlg)
-{
- GtkWidget *menu;
- GtkAdjustment *adj;
- GList *l;
-
- menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (dlg->month));
- for (l = GTK_MENU_SHELL (menu)->children; l != NULL; l = l->next)
- gtk_signal_connect (GTK_OBJECT (menu), "selection_done",
- GTK_SIGNAL_FUNC (month_changed), dlg);
-
- adj = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (dlg->year));
- gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
- (GtkSignalFunc) year_changed, dlg);
-
- gtk_signal_connect (GTK_OBJECT (dlg->ecal->calitem),
- "date_range_changed",
- GTK_SIGNAL_FUNC (ecal_date_range_changed),
- dlg);
- gtk_signal_connect (GTK_OBJECT (dlg->ecal->calitem),
- "selection_changed",
- (GtkSignalFunc) ecal_event,
- dlg);
-}
-
-/* Creates a "goto date" dialog and runs it */
-void
-goto_dialog (GnomeCalendar *gcal)
-{
- GtkWidget *menu;
- time_t start_time;
- struct tm tm;
- int b;
-
- if (dlg) {
- return;
- }
-
- dlg = g_new0 (GoToDialog, 1);
-
- /* Load the content widgets */
- dlg->xml = glade_xml_new (EVOLUTION_GLADEDIR "/goto-dialog.glade", NULL);
- if (!dlg->xml) {
- g_message ("goto_dialog(): Could not load the Glade XML file!");
- return;
- }
-
- if (!get_widgets (dlg)) {
- g_message ("goto_dialog(): Could not find all widgets in the XML file!");
- return;
- }
- dlg->gcal = gcal;
-
- gnome_calendar_get_selected_time_range (dlg->gcal, &start_time, NULL);
- tm = *localtime (&start_time);
- dlg->year_val = tm.tm_year + 1900;
- dlg->month_val = tm.tm_mon;
- dlg->day_val = tm.tm_mday;
-
- menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (dlg->month));
- gtk_option_menu_set_history (GTK_OPTION_MENU (dlg->month), dlg->month_val);
- gtk_spin_button_set_value (GTK_SPIN_BUTTON (dlg->year), dlg->year_val);
-
- create_ecal (dlg);
-
- goto_dialog_init_widgets (dlg);
-
- gnome_dialog_set_parent (GNOME_DIALOG (dlg->dialog),
- GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (gcal))));
-
- b = gnome_dialog_run_and_close (GNOME_DIALOG (dlg->dialog));
- if (b == 0)
- goto_today (dlg);
-
- gtk_object_unref (GTK_OBJECT (dlg->xml));
- g_free (dlg);
- dlg = NULL;
-}
diff --git a/calendar/gui/goto.h b/calendar/gui/goto.h
deleted file mode 100644
index b40c222fc4..0000000000
--- a/calendar/gui/goto.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Evolution calendar - Go To Date dialog
- *
- * Copyright (C) 1998 Red Hat, Inc.
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Federico Mena <federico@ximian.com>
- * JP Rosevear <jpr@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef GOTO_DIALOG_H
-#define GOTO_DIALOG_H
-
-#include "gnome-cal.h"
-
-void goto_dialog (GnomeCalendar *gcal);
-
-#endif
diff --git a/calendar/gui/itip-utils.c b/calendar/gui/itip-utils.c
deleted file mode 100644
index 5bf442dec9..0000000000
--- a/calendar/gui/itip-utils.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * itip-utils.c
- *
- * Authors:
- * Jesse Pavel <jpavel@helixcode.com>
- *
- * Copyright 2000, Helix Code, Inc.
- */
-
-#include "itip-utils.h"
-
-gchar *partstat_values[] = {
- "Needs action",
- "Accepted",
- "Declined",
- "Tentative",
- "Delegated",
- "Completed",
- "In Progress",
- "Unknown"
-};
-
-gchar *role_values[] = {
- "Chair",
- "Required Participant",
- "Optional Participant",
- "Non-Participant"
-};
-
-
-
-/* Note that I have to iterate and check myself because
- ical_property_get_xxx_parameter doesn't take into account the
- kind of parameter for which you wish to search! */
-icalparameter *
-get_icalparam_by_type (icalproperty *prop, icalparameter_kind kind)
-{
- icalparameter *param;
-
- for (param = icalproperty_get_first_parameter (prop, ICAL_ANY_PARAMETER);
- param != NULL && icalparameter_isa (param) != kind;
- param = icalproperty_get_next_parameter (prop, ICAL_ANY_PARAMETER) );
-
- return param;
-}
-
-
diff --git a/calendar/gui/itip-utils.h b/calendar/gui/itip-utils.h
deleted file mode 100644
index a2f825be8b..0000000000
--- a/calendar/gui/itip-utils.h
+++ /dev/null
@@ -1,15 +0,0 @@
-
-#ifndef ITIP_UTILS_HEADER
-#define ITIP_UTILS_HEADER
-
-#include <config.h>
-#include <ical.h>
-#include <string.h>
-#include <glib.h>
-
-extern gchar *partstat_values[];
-extern gchar *role_values[];
-
-icalparameter * get_icalparam_by_type (icalproperty *prop, icalparameter_kind kind);
-
-#endif
diff --git a/calendar/gui/main.c b/calendar/gui/main.c
deleted file mode 100644
index e75819f0f0..0000000000
--- a/calendar/gui/main.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* control-factory.c
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <glib.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <libgnomeui/gnome-init.h>
-#include <glade/glade.h>
-
-#include <liboaf/liboaf.h>
-#include <bonobo/bonobo-main.h>
-
-#include <gal/widgets/e-cursors.h>
-
-#include "alarm-notify/alarm.h"
-#include "calendar-commands.h"
-#include "calendar-config.h"
-#include "component-factory.h"
-#include "control-factory.h"
-#include "e-itip-control.h"
-#include "tasks-control-factory.h"
-
-static void
-init_bonobo (int argc, char **argv)
-{
- if (gnome_init_with_popt_table ("evolution-calendar", VERSION, argc, argv,
- oaf_popt_options, 0, NULL) != 0)
- g_error (_("Could not initialize GNOME"));
-
- oaf_init (argc, argv);
-
- if (bonobo_init (CORBA_OBJECT_NIL, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL) == FALSE)
- g_error (_("Could not initialize Bonobo"));
-}
-
-int
-main (int argc, char **argv)
-{
- bindtextdomain(PACKAGE, EVOLUTION_LOCALEDIR);
- textdomain(PACKAGE);
-
- init_bonobo (argc, argv);
- glade_gnome_init ();
- alarm_init ();
- e_cursors_init ();
-
-#if 0
- //g_log_set_always_fatal ((GLogLevelFlags) 0xFFFF);
- g_log_set_always_fatal (G_LOG_LEVEL_ERROR |
- G_LOG_LEVEL_CRITICAL |
- G_LOG_LEVEL_WARNING);
-#endif
-
- control_factory_init ();
- component_factory_init ();
- e_itip_control_factory_init ();
- tasks_control_factory_init ();
-
- bonobo_main ();
-
- alarm_done ();
- calendar_config_write_on_exit ();
-
- return 0;
-}
diff --git a/calendar/gui/meeting-mockup.glade b/calendar/gui/meeting-mockup.glade
deleted file mode 100644
index 9cf8103037..0000000000
--- a/calendar/gui/meeting-mockup.glade
+++ /dev/null
@@ -1,488 +0,0 @@
-<?xml version="1.0"?>
-<GTK-Interface>
-
-<project>
- <name>meeting-mockup</name>
- <program_name>meeting-mockup</program_name>
- <directory></directory>
- <source_directory>.</source_directory>
- <pixmaps_directory>../../art</pixmaps_directory>
- <language>C</language>
- <gnome_support>True</gnome_support>
- <gettext_support>True</gettext_support>
- <output_main_file>False</output_main_file>
- <output_support_files>False</output_support_files>
- <output_build_files>False</output_build_files>
-</project>
-
-<widget>
- <class>GnomePropertyBox</class>
- <name>meeting-dialog</name>
- <visible>False</visible>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>False</allow_grow>
- <auto_shrink>False</auto_shrink>
-
- <widget>
- <class>GtkNotebook</class>
- <child_name>GnomeDock:contents</child_name>
- <name>notebook1</name>
- <border_width>2</border_width>
- <can_focus>True</can_focus>
- <show_tabs>True</show_tabs>
- <show_border>True</show_border>
- <tab_pos>GTK_POS_TOP</tab_pos>
- <scrollable>False</scrollable>
- <tab_hborder>2</tab_hborder>
- <tab_vborder>2</tab_vborder>
- <popup_enable>False</popup_enable>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox51</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>6</spacing>
-
- <widget>
- <class>GtkTable</class>
- <name>table11</name>
- <rows>1</rows>
- <columns>2</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>4</row_spacing>
- <column_spacing>4</column_spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label56</name>
- <label>Su_mmary:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>7.45058e-09</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <default_focus_target>general-summary</default_focus_target>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>general-summary</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame31</name>
- <label>Date &amp; Time</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkTable</class>
- <name>table12</name>
- <border_width>4</border_width>
- <rows>2</rows>
- <columns>3</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>4</row_spacing>
- <column_spacing>4</column_spacing>
-
- <widget>
- <class>GtkLabel</class>
- <name>label57</name>
- <label>_Start time:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label58</name>
- <label>_End time:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>all-day-event</name>
- <can_focus>True</can_focus>
- <label>A_ll day event</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <left_attach>2</left_attach>
- <right_attach>3</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>Custom</class>
- <name>start-time</name>
- <creation_function>make_date_edit</creation_function>
- <string1></string1>
- <string2></string2>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Tue, 16 May 2000 19:11:05 GMT</last_modification_time>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>True</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>False</xfill>
- <yfill>True</yfill>
- </child>
- </widget>
-
- <widget>
- <class>Custom</class>
- <name>end-time</name>
- <creation_function>make_date_edit</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Tue, 16 May 2000 19:11:10 GMT</last_modification_time>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>True</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>False</xfill>
- <yfill>True</yfill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow12</name>
- <hscrollbar_policy>GTK_POLICY_NEVER</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkText</class>
- <name>description</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text></text>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame32</name>
- <label>Classification</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox52</name>
- <border_width>2</border_width>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>classification-public</name>
- <can_focus>True</can_focus>
- <label>Pu_blic</label>
- <active>True</active>
- <draw_indicator>True</draw_indicator>
- <group>classification_radio_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>classification-private</name>
- <can_focus>True</can_focus>
- <label>Pri_vate</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>classification_radio_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>classification-confidential</name>
- <can_focus>True</can_focus>
- <label>_Confidential</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>classification_radio_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox53</name>
- <homogeneous>False</homogeneous>
- <spacing>2</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>contacts-button</name>
- <can_focus>True</can_focus>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label59</name>
- <label>_Contacts...</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>4</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>contacts</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>categories-button</name>
- <can_focus>True</can_focus>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label60</name>
- <label>Ca_tegories...</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>4</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>categories</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>Notebook:tab</child_name>
- <name>label61</name>
- <label>Meeting</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox52</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
-
- <widget>
- <class>GnomePixmap</class>
- <name>pixmap1</name>
- <filename>meeting_widget.png</filename>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>Notebook:tab</child_name>
- <name>label65</name>
- <label>Attendees</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
-</widget>
-
-</GTK-Interface>
diff --git a/calendar/gui/print.c b/calendar/gui/print.c
deleted file mode 100644
index f89b1dae52..0000000000
--- a/calendar/gui/print.c
+++ /dev/null
@@ -1,1327 +0,0 @@
-/* Evolution calendar - Print support
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- * Federico Mena-Quintero <federico@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <math.h>
-#include <time.h>
-#include <glib.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <libgnome/gnome-paper.h>
-#include <libgnomeui/gnome-dialog.h>
-#include <libgnomeui/gnome-uidefs.h>
-#include <libgnomeprint/gnome-print.h>
-#include <libgnomeprint/gnome-print-copies.h>
-#include <libgnomeprint/gnome-print-master.h>
-#include <libgnomeprint/gnome-print-master-preview.h>
-#include <libgnomeprint/gnome-print-preview.h>
-#include <libgnomeprint/gnome-printer-dialog.h>
-#include <e-util/e-dialog-widgets.h>
-#include <gal/widgets/e-unicode.h>
-#include <cal-util/timeutil.h>
-#include "calendar-commands.h"
-#include "gnome-cal.h"
-#include "print.h"
-
-
-
-/* copied from gnome-month-item.c this should be shared?? */
-
-/* Number of days in a month, for normal and leap years */
-static const int days_in_month[2][12] = {
- { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
- { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
-};
-
-/* The weird month of September 1752, where 3 Sep through 13 Sep were eliminated due to the
- * Gregorian reformation.
- */
-static const int sept_1752[42] = {
- 0, 0, 1, 2, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30,
- 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0
-};
-
-#define REFORMATION_DAY 639787 /* First day of the reformation, counted from 1 Jan 1 */
-#define MISSING_DAYS 11 /* They corrected out 11 days */
-#define THURSDAY 4 /* First day of reformation */
-#define SATURDAY 6 /* Offset value; 1 Jan 1 was a Saturday */
-#define SEPT_1752_START 2 /* Start day within month */
-#define SEPT_1752_END 20 /* End day within month */
-
-/* FIXME: This needs to be able to render using all the options from the new
- * calendar configuration stuff.
- */
-#define WEEK_STARTS_ON_MONDAY FALSE
-
-struct pdinfo
-{
- GList *slots;
-};
-
-struct psinfo
-{
- GList *events;
-};
-
-struct ptinfo
-{
- GList *todos;
-};
-
-struct einfo
-{
- char *text;
- time_t start;
- time_t end;
- int count;
-};
-
-
-/* Returns the number of leap years since year 1 up to (but not including) the specified year */
-static int
-leap_years_up_to (int year)
-{
- return (year / 4 /* trivial leapness */
- - ((year > 1700) ? (year / 100 - 17) : 0) /* minus centuries since 1700 */
- + ((year > 1600) ? ((year - 1600) / 400) : 0)); /* plus centuries since 1700 divisible by 400 */
-}
-
-/* Returns whether the specified year is a leap year */
-static int
-is_leap_year (int year)
-{
- if (year <= 1752)
- return !(year % 4);
- else
- return (!(year % 4) && (year % 100)) || !(year % 400);
-}
-
-/* Returns the 1-based day number within the year of the specified date */
-static int
-day_in_year (int day, int month, int year)
-{
- int is_leap, i;
-
- is_leap = is_leap_year (year);
-
- for (i = 0; i < month; i++)
- day += days_in_month [is_leap][i];
-
- return day;
-}
-
-/* Returns the day of the week (zero-based, zero is Sunday) for the specified date. For the days
- * that were removed on the Gregorian reformation, it returns Thursday.
- */
-static int
-day_in_week (int day, int month, int year)
-{
- int n;
-
- n = (year - 1) * 365 + leap_years_up_to (year - 1) + day_in_year (day, month, year);
-
- if (n < REFORMATION_DAY)
- return (n - 1 + SATURDAY) % 7;
-
- if (n >= (REFORMATION_DAY + MISSING_DAYS))
- return (n - 1 + SATURDAY - MISSING_DAYS) % 7;
-
- return THURSDAY;
-}
-
-/* Fills the 42-element days array with the day numbers for the specified month. Slots outside the
- * bounds of the month are filled with zeros. The starting and ending indexes of the days are
- * returned in the start and end arguments.
- */
-static void
-build_month (int month, int year, int start_on_monday, int *days, int *start, int *end)
-{
- int i;
- int d_month, d_week;
-
- /* Note that months are zero-based, so September is month 8 */
-
- if ((year == 1752) && (month == 8)) {
- memcpy (days, sept_1752, 42 * sizeof (int));
-
- if (start)
- *start = SEPT_1752_START;
-
- if (end)
- *end = SEPT_1752_END;
-
- return;
- }
-
- for (i = 0; i < 42; i++)
- days[i] = 0;
-
- d_month = days_in_month[is_leap_year (year)][month];
- d_week = day_in_week (1, month, year);
-
- if (start_on_monday)
- d_week = (d_week + 6) % 7;
-
- for (i = 0; i < d_month; i++)
- days[d_week + i] = i + 1;
-
- if (start)
- *start = d_week;
-
- if (end)
- *end = d_week + d_month - 1;
-}
-
-
-enum align_box {
- ALIGN_LEFT=1,
- ALIGN_RIGHT,
- ALIGN_CENTRE,
- ALIGN_BORDER= 1<<8
-};
-
-/* width = width of border, -'ve is no border
- fillcolour = shade of fill, -'ve is no fill */
-static void
-print_border(GnomePrintContext *pc, double l, double r, double t, double b, double width, double fillcolour)
-{
- int i;
- gnome_print_gsave (pc);
- if (fillcolour<0.0)
- i=1;
- else
- i=0;
- for (;i<2;i++) {
- gnome_print_moveto(pc, l, t);
- gnome_print_lineto(pc, l, b);
- gnome_print_lineto(pc, r, b);
- gnome_print_lineto(pc, r, t);
- gnome_print_lineto(pc, l, t);
- if (i==0) {
- gnome_print_setrgbcolor(pc, fillcolour, fillcolour, fillcolour);
- gnome_print_fill(pc);
- if (width<0.0)
- i=2;
- } else {
- gnome_print_setrgbcolor(pc, 0, 0, 0);
- gnome_print_setlinewidth(pc, width);
- gnome_print_stroke(pc);
- }
- }
- gnome_print_grestore (pc);
-}
-
-/* outputs 1 line of aligned text in a box */
-static void
-print_text(GnomePrintContext *pc, GnomeFont *font, const char *text, enum align_box align, double l, double r, double t, double b)
-{
- double w, x;
- gnome_print_gsave (pc);
- w = gnome_font_get_width_string(font, text);
- switch (align&3) {
- default:
- case ALIGN_LEFT:
- x = l;
- break;
- case ALIGN_RIGHT:
- x = l+(r-l)-w-2;
- break;
- case ALIGN_CENTRE:
- x = l+((r-l)-w)/2;
- break;
- }
- gnome_print_moveto(pc, x, t - gnome_font_get_size (font));
- gnome_print_setfont(pc, font);
- gnome_print_setrgbcolor (pc, 0,0,0);
- gnome_print_show(pc, text);
- gnome_print_grestore (pc);
-}
-
-/* gets/frees the font for you, as a bold font */
-static void
-print_text_size(GnomePrintContext *pc, double size, const char *text, enum align_box align, double l, double r, double t, double b)
-{
- GnomeFont *font;
-
- font = gnome_font_new_closest ("Times", GNOME_FONT_BOLD, 0, size);
- print_text(pc, font, text, align, l, r, t, b);
- gtk_object_unref (GTK_OBJECT (font));
-}
-
-static void
-titled_box(GnomePrintContext *pc, const char *text, GnomeFont *font, enum align_box align, double *l, double *r, double *t, double *b, double linewidth)
-{
- if (align&ALIGN_BORDER) {
- gnome_print_gsave(pc);
- print_border(pc, *l, *r, *t, *t-gnome_font_get_size(font)-gnome_font_get_size(font)*0.4, linewidth, 0.9);
- print_border(pc, *l, *r, *t-gnome_font_get_size(font)-gnome_font_get_size(font)*0.4, *b, linewidth, -1.0);
- gnome_print_grestore(pc);
- *l+=2;
- *r-=2;
- *b+=2;
- }
- print_text(pc, font, text, align, *l, *r, *t, *b);
- *t-=gnome_font_get_size(font)*1.4;
-}
-
-enum datefmt {
- DATE_MONTH = 1 << 0,
- DATE_DAY = 1 << 1,
- DATE_DAYNAME = 1 << 2,
- DATE_YEAR = 1 << 3
-};
-
-static char *days[] = {
- N_("1st"), N_("2nd"), N_("3rd"), N_("4th"), N_("5th"),
- N_("6th"), N_("7th"), N_("8th"), N_("9th"), N_("10th"),
- N_("11th"), N_("12th"), N_("13th"), N_("14th"), N_("15th"),
- N_("16th"), N_("17th"), N_("18th"), N_("19th"), N_("20th"),
- N_("21st"), N_("22nd"), N_("23rd"), N_("24th"), N_("25th"),
- N_("26th"), N_("27th"), N_("28th"), N_("29th"), N_("30th"),
- N_("31st")
-};
-
-/*
- format the date 'nicely' and consistently for various headers
-*/
-static char *
-format_date(time_t time, int flags, char *buffer, int bufflen)
-{
- char fmt[64];
- struct tm tm;
-
- tm = *localtime(&time);
- fmt[0] = 0;
- if (flags & DATE_DAYNAME) {
- strcat(fmt, "%A");
- }
- if (flags & DATE_DAY) {
- if (flags & DATE_DAYNAME)
- strcat(fmt, " ");
- strcat(fmt, gettext(days[tm.tm_mday-1]));
- }
- if (flags & DATE_MONTH) {
- if (flags & (DATE_DAY|DATE_DAYNAME))
- strcat(fmt, " ");
- strcat(fmt, "%B");
- if ((flags & (DATE_DAY|DATE_YEAR)) == (DATE_DAY|DATE_YEAR))
- strcat(fmt, ",");
- }
- if (flags & DATE_YEAR) {
- if (flags & (DATE_DAY|DATE_DAYNAME|DATE_MONTH))
- strcat(fmt, " ");
- strcat(fmt, "%Y");
- }
- strftime(buffer, bufflen, fmt, &tm);
- return buffer;
-}
-
-
-/*
- print out the month small, embolden any days with events.
-*/
-static void
-print_month_small (GnomePrintContext *pc, GnomeCalendar *gcal,
- time_t month, double left, double right, double top, double bottom,
- int titleflags, time_t greystart, time_t greyend, int bordertitle)
-{
- CalClient *client;
- GnomeFont *font, *font_bold, *font_normal;
- time_t now, next;
- int x, y;
- int days[42];
- int day;
- char buf[100];
- struct tm tm;
- double xpad, ypad, size;
- char *daynames[] = { _("Su"), _("Mo"), _("Tu"), _("We"), _("Th"), _("Fr"), _("Sa") };
-
- client = gnome_calendar_get_cal_client (gcal);
-
- xpad = (right-left)/7;
- ypad = (top-bottom)/8.3;
- if (xpad>ypad)
- size=ypad;
- else
- size=xpad;
-
- size = (xpad+ypad)/3.0;
-
- tm = *localtime (&month);
-
- /* get month days */
- build_month(tm.tm_mon, tm.tm_year+1900, WEEK_STARTS_ON_MONDAY, days, 0, 0);
-
- /* build day-busy bits */
- now = time_month_begin(month);
-
- /* get title */
- format_date(month, titleflags, buf, 100);
- font = gnome_font_new_closest ("Times", GNOME_FONT_BOLD, 1, size*1.2); /* title font */
- if (bordertitle)
- print_border(pc,
- left, left+7*xpad, top, top-gnome_font_get_size(font)*1.3,
- 1.0, 0.9);
- print_text(pc, font, buf, ALIGN_CENTRE,
- left, left+7*xpad, top, top - gnome_font_get_size (font));
- gtk_object_unref (GTK_OBJECT (font));
-
- font_normal = gnome_font_new_closest ("Times", GNOME_FONT_BOOK, 0, size);
- font_bold = gnome_font_new_closest ("Times", GNOME_FONT_BOLD, 0, size);
-
- gnome_print_setrgbcolor (pc, 0,0,0);
- for (x=0;x<7;x++) {
- print_text(pc, font_bold, daynames[(WEEK_STARTS_ON_MONDAY?x+1:x)%7], ALIGN_CENTRE,
- left+x*xpad, left+(x+1)*xpad, bottom+7*ypad, bottom+7*ypad-gnome_font_get_size(font_bold));
- }
-
- for (y=0;y<6;y++) {
- for (x=0;x<7;x++) {
- day = days[y*7+x];
- if (day!=0) {
- GList *uids;
-
- sprintf(buf, "%d", day);
-
- /* this is a slow messy way to do this ... but easy ... */
- uids = cal_client_get_objects_in_range (client,
- CALOBJ_TYPE_EVENT,
- now, time_day_end (now));
- font = uids ? font_bold : font_normal;
- cal_obj_uid_list_free (uids);
-
- next = time_add_day(now, 1);
- if ((now>=greystart && now<greyend)
- || (greystart>=now && greystart<next)) {
- print_border(pc,
- left+x*xpad+xpad*0.1,
- left+(x+1)*xpad+xpad*0.1,
- bottom+(5-y)*ypad+gnome_font_get_size(font)-ypad*0.15,
- bottom+(5-y)*ypad-ypad*0.15,
- -1.0, 0.75);
- }
- print_text(pc, font, buf, ALIGN_RIGHT,
- left+x*xpad, left+(x+1)*xpad, bottom+(5-y)*ypad+gnome_font_get_size(font), bottom+(5-y)*ypad);
- now = next;
- }
- }
- }
- gtk_object_unref (GTK_OBJECT (font_normal));
- gtk_object_unref (GTK_OBJECT (font_bold));
-}
-
-
-
-/* wraps text into the print context, not taking up more than its allowed space */
-static double
-bound_text(GnomePrintContext *pc, GnomeFont *font, const char *text,
- double left, double right, double top, double bottom, double indent)
-{
- double maxwidth = right-left;
- double width;
- const char *p;
- char *wordstart;
- int c;
- char *outbuffer, *o, *outbuffendmarker;
- int outbufflen;
- int dump=0;
- int first=1;
-
- g_return_val_if_fail(text!=NULL, top);
-
- if (top<bottom) {
- /* too much to fit in appointment printout */
- return top;
- }
-
- outbufflen = 1024;
- outbuffer = g_malloc(outbufflen);
- outbuffendmarker = outbuffer+outbufflen-2;
-
- top -= gnome_font_get_size (font);
- gnome_print_setfont (pc, font);
-
- width=0;
- p = text;
- wordstart = outbuffer;
- o = outbuffer;
- while ((c=*p)) {
- if (c=='\n') {
- wordstart=o;
- dump=1;
- } else {
- /* grow output buffer if required */
- if (o>=outbuffendmarker) {
- char *newbuf;
- outbufflen*=2;
- newbuf = g_realloc(outbuffer, outbufflen);
- o = newbuf+(o-outbuffer);
- wordstart = newbuf+(o-outbuffer);
- outbuffer = newbuf;
- outbuffendmarker = outbuffer+outbufflen-2;
- }
- *o++=c;
- if (c==' ')
- wordstart = o;
- width+=gnome_font_get_glyph_width(font, gnome_font_lookup_default (font, c));
- if (width>maxwidth)
- dump=1;
- else
- dump=0;
- }
- if (dump) {
- if (wordstart==outbuffer)
- wordstart=o;
- c=*wordstart;
- *wordstart=0;
- gnome_print_moveto(pc, left, top);
- gnome_print_show(pc, outbuffer);
- *wordstart=c;
- memcpy(outbuffer, wordstart, o-wordstart);
- width = gnome_font_get_width_string_n(font, outbuffer, o-wordstart);
- o=outbuffer+(o-wordstart);
- wordstart = outbuffer;
- top -= gnome_font_get_size (font);
- if (top<bottom) {
- /* too much to fit, drop the rest */
- g_free(outbuffer);
- return top;
- }
- if (first) {
- left += indent;
- maxwidth -= indent;
- first=0;
- }
- }
- p++;
- }
- if (dump==0) {
- *o=0;
- gnome_print_moveto(pc, left, top);
- gnome_print_show(pc, outbuffer);
- top -= gnome_font_get_size (font);
- }
- g_free(outbuffer);
- return top;
-}
-
-/*
- * Print Day Details
- */
-static gboolean
-print_day_details_cb (CalComponent *comp, time_t istart, time_t iend, gpointer data)
-{
- CalComponentText text;
- GList *l, *col = NULL;
- struct pdinfo *pdi = (struct pdinfo *)data;
- struct einfo *ei;
-
- ei = g_new (struct einfo, 1);
-
- cal_component_get_summary (comp, &text);
- ei->text = g_strdup (text.value);
-
- ei->start = istart;
- ei->end = iend;
- ei->count = 0;
-
- for (l = pdi->slots; l; l = l->next) {
- struct einfo *testei;
-
- col = (GList *)l->data;
- testei = (struct einfo *)col->data;
-
- if (ei->start >= testei->end) {
- col = g_list_prepend (col, ei);
- l->data = col;
- return TRUE;
- }
-
- testei->count++;
- ei->count++;
- }
-
- col = NULL;
- col = g_list_prepend (col, ei);
- pdi->slots = g_list_append (pdi->slots, col);
-
- return TRUE;
-}
-
-static void
-print_day_details (GnomePrintContext *pc, GnomeCalendar *gcal, time_t whence,
- double left, double right, double top, double bottom)
-{
- CalClient *client;
- struct pdinfo pdi;
- time_t start, end;
- GList *l;
- int num_slots, i;
- GnomeFont *font_hour, *font_minute, *font_summary;
- double yinc, y, yend, x, xend;
- double width=40, slot_width;
- char buf[20];
-
- client = gnome_calendar_get_cal_client (gcal);
-
- yinc = (top-bottom)/24;
-
- /* fill static detail */
- font_hour = gnome_font_new_closest ("Times", GNOME_FONT_BOLD, 0, yinc/2);
- font_minute = gnome_font_new_closest ("Times", GNOME_FONT_BOLD, 0, yinc/3);
- font_summary = gnome_font_new_closest ("Times", GNOME_FONT_BOOK, 0, yinc/3);
-
- gnome_print_setrgbcolor (pc, 0, 0, 0);
-
- /* internal lines */
- gnome_print_setlinewidth(pc, 0.0);
- gnome_print_moveto(pc, left+width, bottom);
- gnome_print_lineto(pc, left+width, top);
- gnome_print_stroke (pc);
-
- for (i=0;i<24;i++) {
- y = top - yinc*(i+1);
- print_border(pc, left+1, left+width-1, y, y+yinc-1, -1.0, 0.9);
- gnome_print_setrgbcolor (pc, 0, 0, 0);
-
- /* the hour label/minute */
- sprintf(buf, "%d", i);
- print_text(pc, font_hour, buf, ALIGN_RIGHT, left, left+width/2, y+yinc, y);
- switch(i) {
- case 12: sprintf(buf, _("pm")); break;
- case 0: sprintf(buf, _("am")); break;
- default: sprintf(buf, "00"); break;
- }
- print_text(pc, font_minute, buf, ALIGN_LEFT, left+width/2, left+width/2, y+yinc, y);
-
- /* internal lines */
- gnome_print_moveto(pc, left+width, y);
- gnome_print_lineto(pc, right, y);
- gnome_print_stroke (pc);
- gnome_print_moveto(pc, left+width/2, y+yinc/2);
- gnome_print_lineto(pc, right, y+yinc/2);
- gnome_print_stroke (pc);
-
- }
-
- start = time_day_begin(whence);
- end = time_day_end(start);
-
- pdi.slots = NULL;
-
- cal_client_generate_instances (client, CALOBJ_TYPE_EVENT, start, end,
- print_day_details_cb, &pdi);
-
- num_slots = g_list_length (pdi.slots);
- slot_width = (right-left-width)/num_slots;
-
- for (i = num_slots, l = pdi.slots; l; i--, l = l->next) {
- GList *e = (GList *)l->data;
-
- for (; e; e = e->next) {
- struct einfo *ei = (struct einfo *)e->data;
-
- y = top - (top - bottom) * (ei->start - start) / (end - start) - 1;
- yend = top - (top - bottom) * (ei->end - start) / (end - start) + 1;
- x = left + width + slot_width * (num_slots - i);
-
- if (num_slots > 0)
- x++;
-
- if (i == 0)
- xend = x + (num_slots - ei->count) * slot_width - 2;
- else
- xend = x + slot_width - 2;
-
- print_border (pc, x, xend, y, yend, 0.0, 0.9);
-
- bound_text (pc, font_summary, ei->text, x, xend, y, yend, 0);
-
- g_free (ei);
- }
- g_list_free (e);
- }
- g_list_free (pdi.slots);
-
- print_border (pc, left, right, top, bottom, 1.0, -1.0);
-
- gtk_object_unref (GTK_OBJECT (font_hour));
- gtk_object_unref (GTK_OBJECT (font_minute));
- gtk_object_unref (GTK_OBJECT (font_summary));
-}
-
-/*
- * Print Day Summary
- */
-#if 0
-#define TIME_FMT "%X"
-#else
-#define TIME_FMT "%l:%M%p"
-#endif
-
-static gboolean
-print_day_summary_cb (CalComponent *comp, time_t istart, time_t iend, gpointer data)
-{
- CalComponentText text;
- struct psinfo *psi = (struct psinfo *)data;
- struct einfo *ei;
-
- ei = g_new (struct einfo, 1);
-
- cal_component_get_summary (comp, &text);
- ei->text = g_strdup (text.value);
-
- ei->start = istart;
- ei->end = iend;
- ei->count = 0;
-
- psi->events = g_list_append (psi->events, ei);
-
- return TRUE;
-}
-
-static void
-print_day_summary (GnomePrintContext *pc, GnomeCalendar *gcal, time_t whence,
- double left, double right, double top, double bottom,
- double size, int totime, int titleformat)
-{
- CalClient *client;
- struct psinfo psi;
- time_t start, end;
- GList *l;
- GnomeFont *font_summary;
- double y, yend, x, xend, inc, incsmall;
- char buf[100];
- double margin;
- struct tm tm;
-
- client = gnome_calendar_get_cal_client (gcal);
-
- /* fill static detail */
- font_summary = gnome_font_new_closest ("Times", GNOME_FONT_BOOK, 0, size);
-
- gnome_print_setfont (pc, font_summary);
-
- start = time_day_begin(whence);
- end = time_day_end(start);
-
- tm = *localtime(&start);
-
- format_date(start, titleformat, buf, 100);
- titled_box (pc, buf, font_summary, ALIGN_RIGHT | ALIGN_BORDER,
- &left, &right, &top, &bottom, 0.0);
-
- psi.events = NULL;
-
- cal_client_generate_instances (client, CALOBJ_TYPE_EVENT, start, end,
- print_day_summary_cb, &psi);
- inc = size*0.3;
- incsmall = size*0.2;
-
- y = top-inc;
- yend = bottom-incsmall;
-
- /* do a good rough approximation of the 'widest' time */
- tm.tm_year = 2000;
- tm.tm_mon = 12;
- tm.tm_mday = 22;
- tm.tm_sec = 22;
- tm.tm_min = 22;
- tm.tm_hour = 23;
- strftime(buf, 100, TIME_FMT, &tm);
- margin = gnome_font_get_width_string(font_summary, buf);
-
- for (l = psi.events; l; l = l->next) {
- struct einfo *ei = (struct einfo *)l->data;
-
- x = left + incsmall;
- xend = right - inc;
-
- if (y - gnome_font_get_size (font_summary) < bottom)
- break;
-
- tm = *localtime (&ei->start);
- strftime (buf, 100, TIME_FMT, &tm);
- gnome_print_moveto (pc, x + (margin
- - gnome_font_get_width_string (font_summary, buf)),
- y - gnome_font_get_size (font_summary));
- gnome_print_show (pc, buf);
-
- if (totime) {
- tm = *localtime (&ei->end);
- strftime (buf, 100, TIME_FMT, &tm);
- gnome_print_moveto (pc,
- (x + margin + inc
- + (margin
- - gnome_font_get_width_string (font_summary, buf))),
- y - gnome_font_get_size (font_summary));
- gnome_print_show (pc, buf);
-
- y = bound_text (pc, font_summary, ei->text,
- x + margin * 2 + inc * 2, xend,
- y, yend, 0);
- } else {
- /* we also indent back after each time is printed */
- y = bound_text (pc, font_summary, ei->text,
- x + margin + inc, xend,
- y, yend, -margin + inc);
- }
-
- y += gnome_font_get_size (font_summary) - inc;
-
- g_free (ei);
- }
- g_list_free (psi.events);
-
- gtk_object_unref (GTK_OBJECT (font_summary));
-}
-
-static void
-print_week_summary (GnomePrintContext *pc, GnomeCalendar *gcal, time_t whence,
- double left, double right, double top, double bottom)
-{
- double y, l, r, t, b;
- time_t now;
- int i;
-
- l = left;
- r = (right-left)/2+left;
- t = top;
- y = (top-bottom)/3;
- b = top-y;
- now = time_week_begin(whence); /* returns sunday, we need monday */
- now = time_add_day(now, 1);
- for (i = 0; i < 7; i++) {
- print_day_summary (pc, gcal, now, l, r, t, b,
- 10, TRUE, DATE_DAY | DATE_DAYNAME | DATE_MONTH);
- now = time_add_day (now, 1);
- switch (i) {
- case 5:
- y /= 2.0;
- b += y;
- case 0:
- case 1:
- case 3:
- case 4:
- t -= y;
- b -= y;
- break;
- case 2:
- l = r;
- r = right;
- t = top;
- b = t-y;
- break;
- case 6:
- break;
- }
- }
-}
-
-static void
-print_year_summary (GnomePrintContext *pc, GnomeCalendar *gcal, time_t whence,
- double left, double right, double top, double bottom, int morerows)
-{
- double y, x, l, r, t, b;
- time_t now;
- int xx, yy, rows, cols;
-
- l = left;
- t = top;
- if (morerows) {
- rows=4;
- cols=3;
- } else {
- rows=3;
- cols=4;
- }
- y = (top-bottom)/rows;
- x = (right-left)/cols;
- r = l+x;
- b = top-y;
- now = time_year_begin(whence);
- for (yy = 0; yy < rows; yy++) {
- t = top - y * yy;
- b = t - y;
- for (xx = 0; xx < cols; xx++) {
- l = left + x * xx;
- r = l + x;
- print_month_small (pc, gcal, now,
- l + 8, r - 8, t - 8, b + 8, DATE_MONTH, 0, 0, TRUE);
- now = time_add_month (now, 1);
- }
- }
-}
-
-static void
-print_month_summary (GnomePrintContext *pc, GnomeCalendar *gcal, time_t whence,
- double left, double right, double top, double bottom)
-{
- time_t now, today;
- int days[42];
- int day;
- struct tm tm;
- int x, y;
- char buf[100];
- GnomeFont *font_days;
-
- now = time_month_begin(whence);
- tm = *localtime (&now);
-
- /* get month days */
- build_month(tm.tm_mon, tm.tm_year+1900, WEEK_STARTS_ON_MONDAY, days, 0, 0);
-
- /* a little margin */
- top -= 4;
-
- /* do day names ... */
- font_days = gnome_font_new_closest ("Times", GNOME_FONT_BOLD, 0, 10);
- gnome_print_setfont(pc, font_days);
- for (x=0;x<7;x++) {
- today = time_add_day(now, days[6+x]);
- format_date(today, DATE_DAYNAME, buf, 100);
- print_text(pc, font_days, buf, ALIGN_CENTRE,
- (right-left)*x/7+left, (right-left)*(x+1)/7+left,
- top, top-gnome_font_get_size(font_days));
- }
- top -= gnome_font_get_size(font_days)*1.5;
- gtk_object_unref (GTK_OBJECT (font_days));
-
- for (y=0;y<6;y++) {
- for (x=0;x<7;x++) {
- day = days[y*7+x];
- if (day!=0) {
- print_day_summary (pc, gcal, now,
- (right-left)*x/7+left,
- (right-left)*(x+1)/7+left,
- top - (top-bottom)*y/6,
- top - (top-bottom)*(y+1)/6, 6, FALSE,
- day==1?(DATE_DAY|DATE_MONTH):DATE_DAY);
- now = time_add_day(now, 1);
- }
- }
- }
-}
-
-static void
-print_todo_details (GnomePrintContext *pc, GnomeCalendar *gcal, time_t start, time_t end,
- double left, double right, double top, double bottom)
-{
- CalClient *client;
- GList *uids;
- GList *l;
- GnomeFont *font_summary;
- double y, yend, x, xend;
-
- client = gnome_calendar_get_cal_client (gcal);
-
- font_summary = gnome_font_new_closest ("Times", GNOME_FONT_BOOK, 0, 10);
-
- gnome_print_setrgbcolor (pc, 0, 0, 0);
- gnome_print_setlinewidth (pc, 0.0);
-
- titled_box (pc, _("Tasks"), font_summary,
- ALIGN_CENTRE | ALIGN_BORDER, &left, &right, &top, &bottom, 1.0);
-
- y = top - 3;
- yend = bottom - 2;
-
- uids = cal_client_get_uids (client, CALOBJ_TYPE_TODO);
-
- for (l = uids; l; l = l->next) {
- char *uid;
- CalComponent *comp;
- CalClientGetStatus status;
- CalComponentText summary;
-
- uid = l->data;
-
- status = cal_client_get_object (client, uid, &comp);
-
- switch (status) {
- case CAL_CLIENT_GET_SUCCESS:
- break;
-
- case CAL_CLIENT_GET_NOT_FOUND:
- /* Nothing: the object may have been removed from the server */
- continue;
-
- case CAL_CLIENT_GET_SYNTAX_ERROR:
- g_message ("print_todo_details(): Syntax error while getting object `%s'",
- uid);
- continue;
-
- default:
- g_assert_not_reached ();
- }
-
- cal_component_get_summary (comp, &summary);
-
- if (!summary.value)
- continue;
-
- x = left;
- xend = right - 2;
-
- if (y < bottom)
- break;
-
- y = bound_text (pc, font_summary, summary.value, x + 2, xend, y, yend, 0);
- y += gnome_font_get_size (font_summary);
- gnome_print_moveto (pc, x, y - 3);
- gnome_print_lineto (pc, xend, y - 3);
- gnome_print_stroke (pc);
- y -= 3;
- }
-
- cal_obj_uid_list_free (uids);
-
- gtk_object_unref (GTK_OBJECT (font_summary));
-}
-
-#if 0
-
-static GnomePrintContext *
-print_context (int preview, char *paper)
-{
- GtkWidget *toplevel, *canvas, *sw;
- GnomePrinter *printer;
- GnomePrintContext *pc;
-
- if (preview) {
- gtk_widget_push_colormap (gdk_rgb_get_cmap ());
- gtk_widget_push_visual (gdk_rgb_get_visual ());
-
- toplevel = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- gtk_widget_set_usize (toplevel, 700, 700);
- sw = gtk_scrolled_window_new (NULL, NULL);
- canvas = gnome_canvas_new_aa ();
- gtk_container_add (GTK_CONTAINER (toplevel), sw);
- gtk_container_add (GTK_CONTAINER (sw), canvas);
-
- gnome_canvas_set_pixels_per_unit((GnomeCanvas *)canvas, 1);
-
- pc = gnome_print_preview_new ((GnomeCanvas *)canvas, paper);
-
- gtk_widget_show_all (toplevel);
-
- gtk_widget_pop_visual ();
- gtk_widget_pop_colormap ();
- } else {
- printer = gnome_printer_dialog_new_modal ();
-
- if (!printer)
- return NULL;
-
- pc = gnome_print_context_new_with_paper_size (printer, paper);
- }
-
- return pc;
-}
-
-#endif
-
-/* Value for the PrintView enum */
-static const int print_view_map[] = {
- PRINT_VIEW_DAY,
- PRINT_VIEW_WEEK,
- PRINT_VIEW_MONTH,
- PRINT_VIEW_YEAR,
- -1
-};
-
-/* Creates the range selector widget for printing a calendar */
-static GtkWidget *
-range_selector_new (GtkWidget *dialog, time_t at, int *view)
-{
- GtkWidget *box;
- GtkWidget *radio;
- GSList *group;
- char text[1024];
- char str1[512];
- char str2[512];
- struct tm tm;
- time_t week_begin, week_end;
- struct tm week_begin_tm, week_end_tm;
-
- box = gtk_vbox_new (FALSE, GNOME_PAD_SMALL);
-
- tm = *localtime (&at);
-
- /* Day */
-
- strftime (text, sizeof (text), _("Current day (%a %b %d %Y)"), &tm);
- radio = gtk_radio_button_new_with_label (NULL, text);
- group = gtk_radio_button_group (GTK_RADIO_BUTTON (radio));
- gtk_box_pack_start (GTK_BOX (box), radio, FALSE, FALSE, 0);
-
- /* Week */
-
- week_begin = time_week_begin (at);
- week_end = time_add_day (time_week_end (at), -1);
-
- week_begin_tm = *localtime (&week_begin);
- week_end_tm = *localtime (&week_end);
-
- if (week_begin_tm.tm_mon == week_end_tm.tm_mon) {
- strftime (str1, sizeof (str1), _("%a %b %d"), &week_begin_tm);
- strftime (str2, sizeof (str2), _("%a %d %Y"), &week_end_tm);
- } else {
- if (week_begin_tm.tm_year == week_end_tm.tm_year) {
- strftime (str1, sizeof (str1), _("%a %b %d"), &week_begin_tm);
- strftime (str2, sizeof (str2), _("%a %b %d %Y"), &week_end_tm);
- } else {
- strftime (str1, sizeof (str1), _("%a %b %d %Y"), &week_begin_tm);
- strftime (str2, sizeof (str2), _("%a %b %d %Y"), &week_end_tm);
- }
- }
-
- g_snprintf (text, sizeof (text), _("Current week (%s - %s)"), str1, str2);
-
- radio = gtk_radio_button_new_with_label (group, text);
- group = gtk_radio_button_group (GTK_RADIO_BUTTON (radio));
- gtk_box_pack_start (GTK_BOX (box), radio, FALSE, FALSE, 0);
-
- /* Month */
-
- strftime (text, sizeof (text), _("Current month (%b %Y)"), &tm);
- radio = gtk_radio_button_new_with_label (group, text);
- group = gtk_radio_button_group (GTK_RADIO_BUTTON (radio));
- gtk_box_pack_start (GTK_BOX (box), radio, FALSE, FALSE, 0);
-
- /* Year */
-
- strftime (text, sizeof (text), _("Current year (%Y)"), &tm);
- radio = gtk_radio_button_new_with_label (group, text);
- group = gtk_radio_button_group (GTK_RADIO_BUTTON (radio));
- gtk_box_pack_start (GTK_BOX (box), radio, FALSE, FALSE, 0);
-
- /* Select default */
-
- e_dialog_widget_hook_value (dialog, radio, view, (gpointer) print_view_map);
-
- gtk_widget_show_all (box);
- return box;
-}
-
-void
-print_calendar (GnomeCalendar *gcal, gboolean preview, time_t at, PrintView default_view)
-{
- GnomePrinter *printer;
- GnomePrintMaster *gpm;
- GnomePrintContext *pc;
- int copies, collate;
- const GnomePaper *paper_info;
- double l, r, t, b, todo, header;
- char buf[100];
- time_t when;
-
- g_return_if_fail (gcal != NULL);
- g_return_if_fail (GNOME_IS_CALENDAR (gcal));
-
- printer = NULL;
- copies = 1;
- collate = FALSE;
-
- if (!preview) {
- GtkWidget *gpd;
- GtkWidget *range;
- int view;
-
- gpd = gnome_print_dialog_new (_("Print Calendar"),
- GNOME_PRINT_DIALOG_RANGE | GNOME_PRINT_DIALOG_COPIES);
-
- view = (int) default_view;
- range = range_selector_new (gpd, at, &view);
- gnome_print_dialog_construct_range_custom (GNOME_PRINT_DIALOG (gpd), range);
-
- gnome_dialog_set_default (GNOME_DIALOG (gpd), GNOME_PRINT_PRINT);
-
- /* Run dialog */
-
- switch (gnome_dialog_run (GNOME_DIALOG (gpd))) {
- case GNOME_PRINT_PRINT:
- break;
-
- case GNOME_PRINT_PREVIEW:
- preview = TRUE;
- break;
-
- case -1:
- return;
-
- default:
- gnome_dialog_close (GNOME_DIALOG (gpd));
- return;
- }
-
- e_dialog_get_values (gpd);
- default_view = (PrintView) view;
-
- gnome_print_dialog_get_copies (GNOME_PRINT_DIALOG (gpd), &copies, &collate);
- printer = gnome_print_dialog_get_printer (GNOME_PRINT_DIALOG (gpd));
-
- gnome_dialog_close (GNOME_DIALOG (gpd));
- }
-
- /* FIXME: allow configuration of paper size */
-
- gpm = gnome_print_master_new ();
-
- paper_info = gnome_paper_with_name (gnome_paper_name_default ());
- gnome_print_master_set_paper (gpm, paper_info);
-
- if (printer)
- gnome_print_master_set_printer (gpm, printer);
-
- gnome_print_master_set_copies (gpm, copies, collate);
-
- pc = gnome_print_master_get_context (gpm);
-
- l = gnome_paper_lmargin (paper_info);
- r = gnome_paper_pswidth (paper_info) - gnome_paper_rmargin (paper_info);
- t = gnome_paper_psheight (paper_info) - gnome_paper_tmargin (paper_info);
- b = gnome_paper_bmargin (paper_info);
-
- /* depending on the view, do a different output */
- switch (default_view) {
- case PRINT_VIEW_DAY: {
- int i, days = 1;
-
- for (i = 0; i < days; i++) {
- todo = ((r - l) / 5) * 4 + l;
- header = t - 70;
- print_todo_details (pc, gcal, 0, INT_MAX, todo, r, header, b);
- print_day_details (pc, gcal, at, l, todo - 2.0, header, b);
-
- print_border (pc, l, r, t, header + 2.0, 1.0, 0.9);
-
- print_month_small (pc, gcal, at, r - 190, r - 104, t - 4,
- header + 8, DATE_MONTH | DATE_YEAR, at, at, FALSE);
- print_month_small (pc, gcal, time_add_month (at, 1), r - 90, r - 4, t - 4,
- header + 8, DATE_MONTH | DATE_YEAR, 0, 0, FALSE);
-
- format_date (at, DATE_DAY | DATE_MONTH | DATE_YEAR, buf, 100);
- print_text_size (pc, 24, buf, ALIGN_LEFT, l + 3, todo, t - 3, header);
-
- format_date (at, DATE_DAYNAME, buf, 100);
- print_text_size (pc, 18, buf, ALIGN_LEFT, l + 3, todo, t - 27 - 4, header);
- gnome_print_showpage (pc);
- at = time_add_day (at, 1);
- }
- break;
- }
-
- case PRINT_VIEW_WEEK:
- header = t - 70;
- print_week_summary (pc, gcal, at, l, r, header, b);
-
- /* more solid total outline */
- print_border (pc, l, r, header, b, 1.0, -1.0);
-
- /* header border */
- print_border (pc, l, r, t, header + 2.0, 1.0, 0.9);
-
- when = time_week_begin (at);
- when = time_add_day (when, 1);
-
- print_month_small (pc, gcal, at, r - 90, r - 4, t - 4,
- header + 8, DATE_MONTH | DATE_YEAR, when, time_add_week (when, 1),
- FALSE);
- print_month_small (pc, gcal, time_add_month (at, -1), r - 190, r - 104, t - 4,
- header + 8, DATE_MONTH | DATE_YEAR, when, time_add_week (when, 1),
- FALSE);
-
- format_date (when, DATE_DAY | DATE_MONTH | DATE_YEAR, buf, 100);
- print_text_size (pc, 24, buf, ALIGN_LEFT, l + 3, r, t - 4, header);
-
- when = time_add_day (when, 6);
- format_date (when, DATE_DAY | DATE_MONTH | DATE_YEAR, buf, 100);
- print_text_size (pc, 24, buf, ALIGN_LEFT, l + 3, r, t - 24 - 3, header);
- gnome_print_showpage (pc);
- break;
-
- case PRINT_VIEW_MONTH:
- header = t - 70;
- gnome_print_rotate (pc, 90);
- gnome_print_translate (pc, 0, -gnome_paper_pswidth (paper_info));
- /*print_month_summary(pc, cal, at, l, r, header, b);*/
- print_month_summary (pc, gcal, at, b, t, r - 70, l);
-
- print_border (pc, b, t, r, r - 72.0, 1.0, 0.9);
-
- print_month_small (pc, gcal, time_add_month (at, 1),
- t - (t - b) / 7 + 2, t - 8, r - 4, r - 68,
- DATE_MONTH | DATE_YEAR, 0, 0, FALSE);
- print_month_small (pc, gcal, time_add_month (at, -1),
- b + 8, b + (t - b) / 7 - 2, r - 4, r - 68,
- DATE_MONTH | DATE_YEAR, 0, 0, FALSE);
-
- /* centered title */
- format_date (at, DATE_MONTH | DATE_YEAR, buf, 100);
- print_text_size (pc, 24, buf, ALIGN_CENTRE, b + 3, t, r - 3, l);
- gnome_print_showpage (pc);
- break;
-
- case PRINT_VIEW_YEAR:
-#if 0
- /* landscape */
- gnome_print_rotate(pc, 90);
- gnome_print_translate(pc, 0, -gnome_paper_pswidth(paper_info));
- print_year_summary(pc, gcal, at, b, t, r-50, l, FALSE);
-
- /* centered title */
- format_date(at, DATE_YEAR, buf, 100);
- print_text_size(pc, 24, buf, ALIGN_CENTRE, b+3, t, r-3, l);
-#else
- /* portrait */
- print_year_summary(pc, gcal, at, l, r, t-50, b, TRUE);
-
- /* centered title */
- format_date(at, DATE_YEAR, buf, 100);
- print_text_size(pc, 24, buf, ALIGN_CENTRE, l+3, r, t-3, b);
-#endif
- gnome_print_showpage(pc);
- break;
-
- default:
- g_assert_not_reached ();
- }
-
- gnome_print_master_close (gpm);
-
- if (preview) {
- GnomePrintMasterPreview *gpmp;
-
- gpmp = gnome_print_master_preview_new (gpm, _("Print Preview"));
- gtk_widget_show (GTK_WIDGET (gpmp));
- } else
- gnome_print_master_print (gpm);
-
- gtk_object_unref (GTK_OBJECT (gpm));
-}
diff --git a/calendar/gui/print.h b/calendar/gui/print.h
deleted file mode 100644
index e88c4a8e01..0000000000
--- a/calendar/gui/print.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Evolution calendar - Print support
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- * Federico Mena-Quintero <federico@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef PRINT_H
-#define PRINT_H
-
-#include "gnome-cal.h"
-
-
-
-typedef enum {
- PRINT_VIEW_DAY,
- PRINT_VIEW_WEEK,
- PRINT_VIEW_MONTH,
- PRINT_VIEW_YEAR
-} PrintView;
-
-void print_calendar (GnomeCalendar *gcal, gboolean preview, time_t at, PrintView default_view);
-
-
-
-#endif
diff --git a/calendar/gui/tag-calendar.c b/calendar/gui/tag-calendar.c
deleted file mode 100644
index 12cc264f1c..0000000000
--- a/calendar/gui/tag-calendar.c
+++ /dev/null
@@ -1,172 +0,0 @@
-/* Evolution calendar - Utilities for tagging ECalendar widgets
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Authors: Damon Chaplin <damon@helixcode.com>
- * Federico Mena-Quintero <federico@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <cal-util/timeutil.h>
-#include "tag-calendar.h"
-
-
-
-struct calendar_tag_closure {
- ECalendarItem *calitem;
- time_t start_time;
- time_t end_time;
-};
-
-/* Clears all the tags in a calendar and fills a closure structure with the
- * necessary information for iterating over occurrences.
- * Returns FALSE if the calendar has no dates shown.
- */
-static gboolean
-prepare_tag (ECalendar *ecal, struct calendar_tag_closure *c)
-{
- gint start_year, start_month, start_day;
- gint end_year, end_month, end_day;
- struct tm start_tm = { 0 }, end_tm = { 0 };
-
- e_calendar_item_clear_marks (ecal->calitem);
-
- if (!e_calendar_item_get_date_range (ecal->calitem,
- &start_year, &start_month,
- &start_day,
- &end_year, &end_month, &end_day))
- return FALSE;
-
- start_tm.tm_year = start_year - 1900;
- start_tm.tm_mon = start_month;
- start_tm.tm_mday = start_day;
- start_tm.tm_hour = 0;
- start_tm.tm_min = 0;
- start_tm.tm_sec = 0;
- start_tm.tm_isdst = -1;
-
- end_tm.tm_year = end_year - 1900;
- end_tm.tm_mon = end_month;
- end_tm.tm_mday = end_day + 1;
- end_tm.tm_hour = 0;
- end_tm.tm_min = 0;
- end_tm.tm_sec = 0;
- end_tm.tm_isdst = -1;
-
- c->calitem = ecal->calitem;
- c->start_time = mktime (&start_tm);
- c->end_time = mktime (&end_tm);
-
- return TRUE;
-}
-
-/* Marks the specified range in an ECalendar; called from cal_client_generate_instances() */
-static gboolean
-tag_calendar_cb (CalComponent *comp,
- time_t istart,
- time_t iend,
- gpointer data)
-{
- struct calendar_tag_closure *c = data;
- time_t t;
-
- t = time_day_begin (istart);
-
- do {
- struct tm tm;
-
- tm = *localtime (&t);
-
- e_calendar_item_mark_day (c->calitem, tm.tm_year + 1900,
- tm.tm_mon, tm.tm_mday,
- E_CALENDAR_ITEM_MARK_BOLD);
-
- t = time_day_end (t);
- } while (t < iend);
-
- return TRUE;
-}
-
-/**
- * tag_calendar_by_client:
- * @ecal: Calendar widget to tag.
- * @client: A calendar client object.
- *
- * Tags an #ECalendar widget with the events that occur in its current time
- * range. The occurrences are extracted from the specified calendar @client.
- **/
-void
-tag_calendar_by_client (ECalendar *ecal, CalClient *client)
-{
- struct calendar_tag_closure c;
-
- g_return_if_fail (ecal != NULL);
- g_return_if_fail (E_IS_CALENDAR (ecal));
- g_return_if_fail (client != NULL);
- g_return_if_fail (IS_CAL_CLIENT (client));
-
- /* If the ECalendar isn't visible, we just return. */
- if (!GTK_WIDGET_VISIBLE (ecal))
- return;
-
- if (cal_client_get_load_state (client) != CAL_CLIENT_LOAD_LOADED)
- return;
-
- if (!prepare_tag (ecal, &c))
- return;
-
-#if 0
- g_print ("DateNavigator generating instances\n");
-#endif
- cal_client_generate_instances (client, CALOBJ_TYPE_EVENT,
- c.start_time, c.end_time,
- tag_calendar_cb, &c);
-}
-
-/**
- * tag_calendar_by_comp:
- * @ecal: Calendar widget to tag.
- * @comp: A calendar component object.
- *
- * Tags an #ECalendar widget with any occurrences of a specific calendar
- * component that occur within the calendar's current time range.
- **/
-void
-tag_calendar_by_comp (ECalendar *ecal, CalComponent *comp)
-{
- struct calendar_tag_closure c;
-
- g_return_if_fail (ecal != NULL);
- g_return_if_fail (E_IS_CALENDAR (ecal));
- g_return_if_fail (comp != NULL);
- g_return_if_fail (IS_CAL_COMPONENT (comp));
-
- /* If the ECalendar isn't visible, we just return. */
- if (!GTK_WIDGET_VISIBLE (ecal))
- return;
-
- if (!prepare_tag (ecal, &c))
- return;
-
-#if 0
- g_print ("DateNavigator generating instances\n");
-#endif
- cal_recur_generate_instances (comp, c.start_time, c.end_time, tag_calendar_cb, &c);
-}
diff --git a/calendar/gui/tag-calendar.h b/calendar/gui/tag-calendar.h
deleted file mode 100644
index 970035b03c..0000000000
--- a/calendar/gui/tag-calendar.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Evolution calendar - Utilities for tagging ECalendar widgets
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Authors: Damon Chaplin <damon@helixcode.com>
- * Federico Mena-Quintero <federico@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef TAG_CALENDAR_H
-#define TAG_CALENDAR_H
-
-#include <widgets/misc/e-calendar.h>
-#include <cal-client/cal-client.h>
-
-void tag_calendar_by_client (ECalendar *ecal, CalClient *client);
-void tag_calendar_by_comp (ECalendar *ecal, CalComponent *comp);
-
-#endif
diff --git a/calendar/gui/tasks-control-factory.c b/calendar/gui/tasks-control-factory.c
deleted file mode 100644
index 8f884f4f6f..0000000000
--- a/calendar/gui/tasks-control-factory.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* tasks-control-factory.c
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Authors: Ettore Perazzoli
- * Damon Chaplin <damon@helixcode.com>
- */
-
-#include <config.h>
-#include <bonobo/bonobo-control.h>
-#include <bonobo/bonobo-generic-factory.h>
-
-#include <liboaf/liboaf.h>
-
-#include "tasks-control-factory.h"
-#include "tasks-control.h"
-
-
-#define TASKS_CONTROL_FACTORY_ID "OAFIID:GNOME_Evolution_Tasks_ControlFactory"
-
-
-CORBA_Environment ev;
-CORBA_ORB orb;
-
-static BonoboObject *tasks_control_factory_fn (BonoboGenericFactory *Factory,
- void *data);
-
-
-/* Registers the factory with Bonobo. Should be called on startup. */
-void
-tasks_control_factory_init (void)
-{
- static BonoboGenericFactory *factory = NULL;
-
- if (factory != NULL)
- return;
-
- factory = bonobo_generic_factory_new (TASKS_CONTROL_FACTORY_ID,
- tasks_control_factory_fn, NULL);
-
- if (factory == NULL)
- g_error ("I could not register a Tasks control factory.");
-}
-
-
-/* Callback factory function to create a tasks control. */
-static BonoboObject *
-tasks_control_factory_fn (BonoboGenericFactory *Factory,
- void *data)
-{
- BonoboControl *control;
-
- control = tasks_control_new ();
-
- if (control)
- return BONOBO_OBJECT (control);
- else
- return NULL;
-}
-
-
diff --git a/calendar/gui/tasks-control-factory.h b/calendar/gui/tasks-control-factory.h
deleted file mode 100644
index 217ebc68fc..0000000000
--- a/calendar/gui/tasks-control-factory.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* tasks-control-factory.h
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Authors: Federico Mena Quintero <federico@helixcode.com>
- * Damon Chaplin <damon@helixcode.com>
- */
-
-#ifndef _TASKS_CONTROL_FACTORY_H_
-#define _TASKS_CONTROL_FACTORY_H_
-
-void tasks_control_factory_init (void);
-BonoboControl *tasks_control_factory_new_control (void);
-
-#endif /* _TASKS_CONTROL_FACTORY_H_ */
diff --git a/calendar/gui/tasks-control.c b/calendar/gui/tasks-control.c
deleted file mode 100644
index 5269f21cdf..0000000000
--- a/calendar/gui/tasks-control.c
+++ /dev/null
@@ -1,283 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* tasks-control.c
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Authors: Damon Chaplin <damon@helixcode.com>
- * Ettore Perazzoli
- */
-
-#include <config.h>
-#include <gtk/gtksignal.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <libgnome/gnome-util.h>
-#include <bonobo/bonobo-control.h>
-#include <bonobo/bonobo-ui-util.h>
-#include "e-tasks.h"
-#include "tasks-control.h"
-#include "e-util/e-gui-utils.h"
-
-#define TASKS_CONTROL_PROPERTY_URI "folder_uri"
-#define TASKS_CONTROL_PROPERTY_URI_IDX 1
-
-
-static void tasks_control_properties_init (BonoboControl *control,
- ETasks *tasks);
-static void tasks_control_get_property (BonoboPropertyBag *bag,
- BonoboArg *arg,
- guint arg_id,
- CORBA_Environment *ev,
- gpointer user_data);
-static void tasks_control_set_property (BonoboPropertyBag *bag,
- const BonoboArg *arg,
- guint arg_id,
- CORBA_Environment *ev,
- gpointer user_data);
-static void tasks_control_activate_cb (BonoboControl *control,
- gboolean activate,
- gpointer user_data);
-static void tasks_control_activate (BonoboControl *control,
- ETasks *tasks);
-static void tasks_control_deactivate (BonoboControl *control);
-
-static void tasks_control_new_task_cmd (BonoboUIComponent *uic,
- gpointer data,
- const char *path);
-static void tasks_control_delete_cmd (BonoboUIComponent *uic,
- gpointer data,
- const char *path);
-
-
-/* Callback used when the selection in the table changes */
-static void
-selection_changed_cb (ETasks *tasks, int n_selected, gpointer data)
-{
- BonoboControl *control;
- BonoboUIComponent *uic;
- Bonobo_UIContainer ui_container;
-
- control = BONOBO_CONTROL (data);
-
- uic = bonobo_control_get_ui_component (control);
- g_assert (uic != NULL);
-
- ui_container = bonobo_ui_component_get_container (uic);
- if (ui_container == CORBA_OBJECT_NIL)
- return;
-
- bonobo_ui_component_set_prop (uic, "/commands/TasksDelete", "sensitive",
- n_selected == 0 ? "0" : "1",
- NULL);
-}
-
-BonoboControl *
-tasks_control_new (void)
-{
- BonoboControl *control;
- GtkWidget *tasks;
-
- tasks = e_tasks_new ();
- if (!tasks)
- return NULL;
-
- gtk_widget_show (tasks);
-
- control = bonobo_control_new (tasks);
- if (!control) {
- g_message ("control_factory_fn(): could not create the control!");
- return NULL;
- }
-
- tasks_control_properties_init (control, E_TASKS (tasks));
-
- gtk_signal_connect (GTK_OBJECT (control), "activate",
- GTK_SIGNAL_FUNC (tasks_control_activate_cb),
- tasks);
-
- gtk_signal_connect (GTK_OBJECT (tasks), "selection_changed",
- GTK_SIGNAL_FUNC (selection_changed_cb), control);
-
- return control;
-}
-
-
-/* Creates the property bag for our new control. */
-static void
-tasks_control_properties_init (BonoboControl *control,
- ETasks *tasks)
-
-{
- BonoboPropertyBag *pbag;
-
- pbag = bonobo_property_bag_new (tasks_control_get_property,
- tasks_control_set_property, tasks);
-
- bonobo_property_bag_add (pbag,
- TASKS_CONTROL_PROPERTY_URI,
- TASKS_CONTROL_PROPERTY_URI_IDX,
- BONOBO_ARG_STRING,
- NULL,
- _("The URI of the tasks folder to display"),
- 0);
-
- bonobo_control_set_properties (control, pbag);
- bonobo_object_unref (BONOBO_OBJECT (pbag));
-}
-
-
-/* Gets a property of our control. FIXME: Finish. */
-static void
-tasks_control_get_property (BonoboPropertyBag *bag,
- BonoboArg *arg,
- guint arg_id,
- CORBA_Environment *ev,
- gpointer user_data)
-{
- /*GnomeCalendar *gcal = user_data;*/
-
- switch (arg_id) {
-
- case TASKS_CONTROL_PROPERTY_URI_IDX:
- /*
- if (fb && fb->uri)
- BONOBO_ARG_SET_STRING (arg, fb->uri);
- else
- BONOBO_ARG_SET_STRING (arg, "");
- */
- break;
-
- default:
- g_warning ("Unhandled arg %d\n", arg_id);
- }
-}
-
-
-static void
-tasks_control_set_property (BonoboPropertyBag *bag,
- const BonoboArg *arg,
- guint arg_id,
- CORBA_Environment *ev,
- gpointer user_data)
-{
- ETasks *tasks = user_data;
- char *filename;
-
- switch (arg_id) {
-
- case TASKS_CONTROL_PROPERTY_URI_IDX:
- filename = g_strdup_printf ("%s/tasks.ics",
- BONOBO_ARG_GET_STRING (arg));
- e_tasks_open (tasks, filename);
- g_free (filename);
- break;
-
- default:
- g_warning ("Unhandled arg %d\n", arg_id);
- break;
- }
-}
-
-
-static void
-tasks_control_activate_cb (BonoboControl *control,
- gboolean activate,
- gpointer user_data)
-{
- if (activate)
- tasks_control_activate (control, user_data);
- else
- tasks_control_deactivate (control);
-}
-
-
-static BonoboUIVerb verbs [] = {
- BONOBO_UI_VERB ("TasksNewTask", tasks_control_new_task_cmd),
- BONOBO_UI_VERB ("TasksDelete", tasks_control_delete_cmd),
-
- BONOBO_UI_VERB_END
-};
-
-static EPixmap pixmaps [] = {
- E_PIXMAP ("/menu/File/New/NewFirstItem/NewTask", "evolution-tasks-mini.png"),
- E_PIXMAP ("/menu/File/Print/Print", "print.xpm"),
- E_PIXMAP_END
-};
-
-static void
-tasks_control_activate (BonoboControl *control,
- ETasks *tasks)
-{
- Bonobo_UIContainer remote_uih;
- BonoboUIComponent *uic;
-
- uic = bonobo_control_get_ui_component (control);
- g_assert (uic != NULL);
-
- remote_uih = bonobo_control_get_remote_ui_container (control);
- bonobo_ui_component_set_container (uic, remote_uih);
- bonobo_object_release_unref (remote_uih, NULL);
-
- bonobo_ui_component_add_verb_list_with_data (uic, verbs, tasks);
-
- bonobo_ui_component_freeze (uic, NULL);
-
- bonobo_ui_util_set_ui (uic, EVOLUTION_DATADIR,
- "evolution-tasks.xml",
- "evolution-tasks");
-
- e_tasks_setup_menus(tasks, uic);
-
- e_pixmaps_update (uic, pixmaps);
-
- bonobo_ui_component_thaw (uic, NULL);
-}
-
-
-static void
-tasks_control_deactivate (BonoboControl *control)
-{
- BonoboUIComponent *uic = bonobo_control_get_ui_component (control);
- g_assert (uic != NULL);
-
- bonobo_ui_component_rm (uic, "/", NULL);
- bonobo_ui_component_unset_container (uic);
-}
-
-
-static void
-tasks_control_new_task_cmd (BonoboUIComponent *uic,
- gpointer data,
- const char *path)
-{
- ETasks *tasks;
-
- tasks = E_TASKS (data);
- e_tasks_new_task (tasks);
-}
-
-static void
-tasks_control_delete_cmd (BonoboUIComponent *uic,
- gpointer data,
- const char *path)
-{
- ETasks *tasks;
-
- tasks = E_TASKS (data);
- e_tasks_delete_selected (tasks);
-}
diff --git a/calendar/gui/tasks-control.h b/calendar/gui/tasks-control.h
deleted file mode 100644
index d2f0f4e2fb..0000000000
--- a/calendar/gui/tasks-control.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* tasks-control.h
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Authors: Federico Mena Quintero <federico@helixcode.com>
- * Damon Chaplin <damon@helixcode.com>
- */
-
-#ifndef _TASKS_CONTROL_H_
-#define _TASKS_CONTROL_H_
-
-
-BonoboControl *tasks_control_new (void);
-
-
-#endif /* _TASKS_CONTROL_H_ */
diff --git a/calendar/gui/tasks-migrate.c b/calendar/gui/tasks-migrate.c
deleted file mode 100644
index a658479cac..0000000000
--- a/calendar/gui/tasks-migrate.c
+++ /dev/null
@@ -1,308 +0,0 @@
-/* Evolution calendar - Migrate tasks from the calendar folder to the tasks folder
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Federico Mena-Quintero <federico@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gtk/gtkwindow.h>
-#include <gtk/gtksignal.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <libgnomeui/gnome-dialog-util.h>
-#include <cal-client/cal-client.h>
-#include "component-factory.h"
-#include "tasks-migrate.h"
-
-
-
-/* Client for the calendar folder */
-static CalClient *calendar_client = NULL;
-
-/* Client for the tasks folder */
-static CalClient *tasks_client = NULL;
-
-/* Whether we have done the migration yet */
-static gboolean migrated = FALSE;
-
-
-
-/* Performs the actual migration process */
-static void
-migrate (void)
-{
- GList *uids;
- GList *l;
- gboolean success;
- gboolean at_least_one;
-
- g_assert (calendar_client != NULL);
- g_assert (tasks_client != NULL);
- g_assert (cal_client_get_load_state (calendar_client) == CAL_CLIENT_LOAD_LOADED);
- g_assert (cal_client_get_load_state (tasks_client) == CAL_CLIENT_LOAD_LOADED);
-
- uids = cal_client_get_uids (calendar_client, CALOBJ_TYPE_TODO);
-
- success = TRUE;
- at_least_one = FALSE;
-
- for (l = uids; l; l = l->next) {
- const char *uid;
- CalComponent *comp;
- CalClientGetStatus status;
-
- at_least_one = TRUE;
-
- uid = l->data;
- status = cal_client_get_object (calendar_client, uid, &comp);
-
- switch (status) {
- case CAL_CLIENT_GET_SUCCESS:
- if (cal_client_update_object (tasks_client, comp))
- cal_client_remove_object (calendar_client, uid);
- else
- success = FALSE;
-
- gtk_object_unref (GTK_OBJECT (comp));
- break;
-
- case CAL_CLIENT_GET_NOT_FOUND:
- /* This is OK; the object may have disappeared from the server */
- break;
-
- case CAL_CLIENT_GET_SYNTAX_ERROR:
- success = FALSE;
- break;
-
- default:
- g_assert_not_reached ();
- }
- }
-
- cal_obj_uid_list_free (uids);
-
- if (!at_least_one)
- return;
-
- if (success)
- gnome_ok_dialog (_("Evolution has taken the tasks that were in your calendar folder "
- "and automatically migrated them to the new tasks folder."));
- else
- gnome_ok_dialog (_("Evolution has tried to take the tasks that were in your "
- "calendar folder and migrate them to the new tasks folder.\n"
- "Some of the tasks could not be migrated, so "
- "this process may be attempted again in the future."));
-}
-
-/* Displays an error to indicate that a calendar could not be opened */
-static void
-open_error (const char *uri)
-{
- char *msg;
-
- msg = g_strdup_printf (_("Could not open `%s'; no items from the calendar folder "
- "will be migrated to the tasks folder."),
- uri);
- gnome_error_dialog (msg);
- g_free (msg);
-}
-
-/* Displays an error to indicate that a URI method is not supported */
-static void
-method_error (const char *uri)
-{
- char *msg;
-
- msg = g_strdup_printf (_("The method required to load `%s' is not supported; "
- "no items from the calendar folder will be migrated "
- "to the tasks folder."),
- uri);
- gnome_error_dialog (msg);
- g_free (msg);
-}
-
-/* Callback used when the tasks client is finished loading */
-static void
-tasks_opened_cb (CalClient *client, CalClientOpenStatus status, gpointer data)
-{
- g_assert (calendar_client != NULL);
- g_assert (cal_client_get_load_state (calendar_client) == CAL_CLIENT_LOAD_LOADED);
-
- switch (status) {
- case CAL_CLIENT_OPEN_SUCCESS:
- migrate ();
- break;
-
- case CAL_CLIENT_OPEN_ERROR:
- open_error (cal_client_get_uri (client));
- migrated = FALSE;
- break;
-
- case CAL_CLIENT_OPEN_NOT_FOUND:
- /* This can't happen because we did not specify only_if_exists when
- * issuing the open request.
- */
- g_assert_not_reached ();
- break;
-
- case CAL_CLIENT_OPEN_METHOD_NOT_SUPPORTED:
- method_error (cal_client_get_uri (client));
- migrated = FALSE;
- break;
-
- default:
- g_assert_not_reached ();
- }
-
- gtk_object_unref (GTK_OBJECT (calendar_client));
- calendar_client = NULL;
-
- gtk_object_unref (GTK_OBJECT (tasks_client));
- tasks_client = NULL;
-}
-
-/* Initiates the loading process for the tasks client */
-static gboolean
-load_tasks_client (void)
-{
- char *uri;
- gboolean success;
-
- g_assert (calendar_client != NULL);
- g_assert (cal_client_get_load_state (calendar_client) == CAL_CLIENT_LOAD_LOADED);
-
- tasks_client = cal_client_new ();
- if (!tasks_client)
- goto error;
-
- gtk_signal_connect (GTK_OBJECT (tasks_client), "cal_opened",
- GTK_SIGNAL_FUNC (tasks_opened_cb),
- NULL);
-
- uri = g_strdup_printf ("%s/local/Tasks/tasks.ics", evolution_dir);
- success = cal_client_open_calendar (tasks_client, uri, FALSE);
- g_free (uri);
-
- if (success)
- return TRUE;
-
- error:
- g_message ("load_tasks_client(): could not issue open request for the tasks client");
-
- if (tasks_client) {
- gtk_object_unref (GTK_OBJECT (tasks_client));
- tasks_client = NULL;
- }
-
- return FALSE;
-}
-
-/* Callback used when the calendar client finishes loading */
-static void
-calendar_opened_cb (CalClient *client, CalClientOpenStatus status, gpointer data)
-{
- switch (status) {
- case CAL_CLIENT_OPEN_SUCCESS:
- if (!load_tasks_client ()) {
- migrated = FALSE;
- break;
- }
-
- return;
-
- case CAL_CLIENT_OPEN_ERROR:
- open_error (cal_client_get_uri (client));
- migrated = FALSE;
- break;
-
- case CAL_CLIENT_OPEN_NOT_FOUND:
- /* This is OK; the calendar folder did not exist in the first
- * place so there is nothing to migrate.
- */
- break;
-
- case CAL_CLIENT_OPEN_METHOD_NOT_SUPPORTED:
- method_error (cal_client_get_uri (client));
- migrated = FALSE;
- break;
-
- default:
- g_assert_not_reached ();
- }
-
- gtk_object_unref (GTK_OBJECT (calendar_client));
- calendar_client = NULL;
-}
-
-/* Initiates the loading process for the calendar client */
-static gboolean
-load_calendar_client (void)
-{
- char *uri;
- gboolean success;
-
- /* First we load the calendar client; the tasks client will be loaded
- * later only if the former one succeeds.
- */
-
- calendar_client = cal_client_new ();
- if (!calendar_client)
- goto error;
-
- gtk_signal_connect (GTK_OBJECT (calendar_client), "cal_opened",
- GTK_SIGNAL_FUNC (calendar_opened_cb),
- NULL);
-
- uri = g_strdup_printf ("%s/local/Calendar/calendar.ics", evolution_dir);
- success = cal_client_open_calendar (calendar_client, uri, TRUE);
- g_free (uri);
-
- if (success)
- return TRUE;
-
- error:
- g_message ("load_calendar_client(): could not issue open request for the calendar client");
-
- if (calendar_client) {
- gtk_object_unref (GTK_OBJECT (calendar_client));
- calendar_client = NULL;
- }
-
- return FALSE;
-}
-
-/**
- * tasks_migrate:
- *
- * Initiates the asynchronous process that migrates the tasks from the default
- * user calendar folder to the default tasks folder. This is because Evolution
- * used to store tasks in the same folder as the calendar by default, but they
- * are separate folders now.
- **/
-void
-tasks_migrate (void)
-{
- g_assert (!migrated);
- migrated = TRUE;
-
- if (!load_calendar_client ())
- migrated = FALSE;
-}
diff --git a/calendar/gui/tasks-migrate.h b/calendar/gui/tasks-migrate.h
deleted file mode 100644
index 01f124222b..0000000000
--- a/calendar/gui/tasks-migrate.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Evolution calendar - Migrate tasks from the calendar folder to the tasks folder
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Federico Mena-Quintero <federico@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef TASKS_MIGRATE_H
-#define TASKS_MIGRATE_H
-
-
-void tasks_migrate (void);
-
-
-#endif
diff --git a/calendar/gui/test.vcf b/calendar/gui/test.vcf
deleted file mode 100644
index bfe93b3c14..0000000000
--- a/calendar/gui/test.vcf
+++ /dev/null
@@ -1,133 +0,0 @@
-BEGIN:VCALENDAR
-PRODID:-//GNOME//NONSGML GnomeCalendar//EN
-TZ:MST
-VERSION:0.13
-BEGIN:VEVENT
-UID:KOrganizer - 846930886
-SEQUENCE:1
-DTSTART:19980601T150000
-DTEND:19980601T150000
-DCREATED:19980402T023558
-LAST-MODIFIED:19980402T023558
-SUMMARY:Cada dos dias de 06/01 al 07/01
-STATUS:NEEDS ACTION
-CLASS:PUBLIC
-PRIORITY:0
-TRANSP:0
-RELATED-TO:0
-RRULE:D2 19980701T140000
-END:VEVENT
-
-BEGIN:VEVENT
-UID:KOrganizer - 846930886
-SEQUENCE:1
-DTSTART:19980501T140000
-DTEND:19980501T140000
-DCREATED:19980402T023558
-LAST-MODIFIED:19980402T023558
-SUMMARY:5 dias.
-STATUS:NEEDS ACTION
-CLASS:PUBLIC
-PRIORITY:0
-TRANSP:0
-RELATED-TO:0
-RRULE:D1 #5
-END:VEVENT
-
-BEGIN:VEVENT
-UID:KOrganizer - 846930886
-SEQUENCE:1
-DTSTART:19980501T140000
-DTEND:19980501T150000
-DCREATED:19980402T023558
-LAST-MODIFIED:19980429T004635
-SUMMARY:Diariamente de 05/01 al 06/01
-STATUS:NEEDS ACTION
-CLASS:PRIVATE
-PRIORITY:0
-TRANSP:0
-RELATED-TO:0
-RRULE:D1 19980601T000000
-END:VEVENT
-
-BEGIN:VEVENT
-UID:KOrganizer - 1804289383
-SEQUENCE:1
-DTSTART:19980415T010000
-DTEND:19980415T013000
-DCREATED:19980402T023552
-LAST-MODIFIED:19980330T225948
-SUMMARY:Diario durante 5 dias
-STATUS:NEEDS ACTION
-CLASS:PUBLIC
-PRIORITY:0
-TRANSP:0
-RELATED-TO:0
-RRULE:D1 #5
-END:VEVENT
-
-BEGIN:VEVENT
-UID:KOrganizer - 1804289383
-SEQUENCE:1
-DTSTART:19980415T010000
-DTEND:19980415T013000
-DCREATED:19980402T023552
-LAST-MODIFIED:19980330T225948
-SUMMARY:Diario durante 5 dias
-STATUS:NEEDS ACTION
-CLASS:PUBLIC
-PRIORITY:0
-TRANSP:0
-RELATED-TO:0
-RRULE:D1 #5
-END:VEVENT
-
-BEGIN:VTODO
-UID:KOrganizer - 846930886
-SEQUENCE:1
-DTSTART:19980415T140000
-DUE:19691231T180000
-DCREATED:19980402T023558
-LAST-MODIFIED:19980402T023558
-SUMMARY:Normal
-STATUS:NEEDS ACTION
-CLASS:PUBLIC
-PRIORITY:0
-TRANSP:0
-RELATED-TO:0
-END:VTODO
-
-BEGIN:VTODO
-UID:KOrganizer - 1804289383
-SEQUENCE:1
-DTSTART:19980415T120000
-DUE:19691231T180000
-DCREATED:19980402T023552
-LAST-MODIFIED:19980330T225948
-SUMMARY:Semanal -- 4 semanas
-STATUS:NEEDS ACTION
-CLASS:PUBLIC
-PRIORITY:0
-TRANSP:0
-RELATED-TO:0
-RRULE:W1 WE #4
-END:VTODO
-
-BEGIN:VTODO
-UID:KOrganizer - 1804289383
-SEQUENCE:1
-DTSTART:19980415T003000
-DUE:19691231T180000
-DCREATED:19980402T023552
-LAST-MODIFIED:19980330T225948
-SUMMARY:Semana: Mi, Ju, Vi, Dom (10 veces)
-STATUS:NEEDS ACTION
-CLASS:PUBLIC
-PRIORITY:0
-TRANSP:0
-RELATED-TO:0
-RRULE:W1 SU WE TH FR #10
-END:VTODO
-
-END:VCALENDAR
-
diff --git a/calendar/gui/test2.vcf b/calendar/gui/test2.vcf
deleted file mode 100644
index 6446507989..0000000000
--- a/calendar/gui/test2.vcf
+++ /dev/null
@@ -1,133 +0,0 @@
-BEGIN:VCALENDAR
-PRODID:-//GNOME//NONSGML GnomeCalendar//EN
-TZ:MST
-VERSION:0.13
-BEGIN:VEVENT
-UID:KOrganizer - 8469308861
-SEQUENCE:1
-DTSTART:19980601T150000
-DTEND:19980601T150000
-DCREATED:19980402T023558
-LAST-MODIFIED:19980402T023558
-SUMMARY:Cada dos dias de 06/01 al 07/01
-STATUS:NEEDS ACTION
-CLASS:PUBLIC
-PRIORITY:0
-TRANSP:0
-RELATED-TO:0
-RRULE:D2 19980701T140000
-END:VEVENT
-
-BEGIN:VEVENT
-UID:KOrganizer - 8469308862
-SEQUENCE:1
-DTSTART:19980501T140000
-DTEND:19980501T140000
-DCREATED:19980402T023558
-LAST-MODIFIED:19980402T023558
-SUMMARY:5 dias.
-STATUS:NEEDS ACTION
-CLASS:PUBLIC
-PRIORITY:0
-TRANSP:0
-RELATED-TO:0
-RRULE:D1 #5
-END:VEVENT
-
-BEGIN:VEVENT
-UID:KOrganizer - 8469308863
-SEQUENCE:1
-DTSTART:19980501T140000
-DTEND:19980501T150000
-DCREATED:19980402T023558
-LAST-MODIFIED:19980429T004635
-SUMMARY:Diariamente de 05/01 al 06/01
-STATUS:NEEDS ACTION
-CLASS:PRIVATE
-PRIORITY:0
-TRANSP:0
-RELATED-TO:0
-RRULE:D1 19980601T000000
-END:VEVENT
-
-BEGIN:VEVENT
-UID:KOrganizer - 18042893834
-SEQUENCE:1
-DTSTART:19980415T010000
-DTEND:19980415T013000
-DCREATED:19980402T023552
-LAST-MODIFIED:19980330T225948
-SUMMARY:Diario durante 5 dias
-STATUS:NEEDS ACTION
-CLASS:PUBLIC
-PRIORITY:0
-TRANSP:0
-RELATED-TO:0
-RRULE:D1 #5
-END:VEVENT
-
-BEGIN:VEVENT
-UID:KOrganizer - 18042893835
-SEQUENCE:1
-DTSTART:19980415T010000
-DTEND:19980415T013000
-DCREATED:19980402T023552
-LAST-MODIFIED:19980330T225948
-SUMMARY:Diario durante 5 dias
-STATUS:NEEDS ACTION
-CLASS:PUBLIC
-PRIORITY:0
-TRANSP:0
-RELATED-TO:0
-RRULE:D1 #5
-END:VEVENT
-
-BEGIN:VTODO
-UID:KOrganizer - 8469308866
-SEQUENCE:1
-DTSTART:19980415T140000
-DUE:19691231T180000
-DCREATED:19980402T023558
-LAST-MODIFIED:19980402T023558
-SUMMARY:Normal
-STATUS:NEEDS ACTION
-CLASS:PUBLIC
-PRIORITY:0
-TRANSP:0
-RELATED-TO:0
-END:VTODO
-
-BEGIN:VTODO
-UID:KOrganizer - 18042893837
-SEQUENCE:1
-DTSTART:19980415T120000
-DUE:19691231T180000
-DCREATED:19980402T023552
-LAST-MODIFIED:19980330T225948
-SUMMARY:Semanal -- 4 semanas
-STATUS:NEEDS ACTION
-CLASS:PUBLIC
-PRIORITY:0
-TRANSP:0
-RELATED-TO:0
-RRULE:W1 WE #4
-END:VTODO
-
-BEGIN:VTODO
-UID:KOrganizer - 18042893838
-SEQUENCE:1
-DTSTART:19980415T003000
-DUE:19691231T180000
-DCREATED:19980402T023552
-LAST-MODIFIED:19980330T225948
-SUMMARY:Semana: Mi, Ju, Vi, Dom (10 veces)
-STATUS:NEEDS ACTION
-CLASS:PUBLIC
-PRIORITY:0
-TRANSP:0
-RELATED-TO:0
-RRULE:W1 SU WE TH FR #10
-END:VTODO
-
-END:VCALENDAR
-
diff --git a/calendar/gui/topic.dat b/calendar/gui/topic.dat
deleted file mode 100644
index edc7813b26..0000000000
--- a/calendar/gui/topic.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-gnome-cal.html Manual
-gnome-cal.html#cmdline Command line options \ No newline at end of file
diff --git a/calendar/gui/weekday-picker.c b/calendar/gui/weekday-picker.c
deleted file mode 100644
index c34dd3da03..0000000000
--- a/calendar/gui/weekday-picker.c
+++ /dev/null
@@ -1,575 +0,0 @@
-/* Evolution calendar - Week day picker widget
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Author: Federico Mena-Quintero <federico@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include <gtk/gtksignal.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <libgnomeui/gnome-canvas-rect-ellipse.h>
-#include <libgnomeui/gnome-canvas-text.h>
-#include "weekday-picker.h"
-
-
-
-#define PADDING 2
-
-/* Private part of the WeekdayPicker structure */
-struct _WeekdayPickerPrivate {
- /* Selected days; see weekday_picker_set_days() */
- guint8 day_mask;
-
- /* Blocked days; these cannot be modified */
- guint8 blocked_day_mask;
-
- /* Day that defines the start of the week; 0 = Sunday, ..., 6 = Saturday */
- int week_start_day;
-
- /* Metrics */
- int font_ascent, font_descent;
- int max_letter_width;
-
- /* Components */
- GnomeCanvasItem *boxes[7];
- GnomeCanvasItem *labels[7];
-};
-
-
-
-/* Signal IDs */
-enum {
- CHANGED,
- LAST_SIGNAL
-};
-
-static void weekday_picker_class_init (WeekdayPickerClass *class);
-static void weekday_picker_init (WeekdayPicker *wp);
-static void weekday_picker_finalize (GtkObject *object);
-
-static void weekday_picker_realize (GtkWidget *widget);
-static void weekday_picker_size_request (GtkWidget *widget, GtkRequisition *requisition);
-static void weekday_picker_size_allocate (GtkWidget *widget, GtkAllocation *allocation);
-static void weekday_picker_style_set (GtkWidget *widget, GtkStyle *previous_style);
-
-static GnomeCanvasClass *parent_class;
-
-static guint wp_signals[LAST_SIGNAL];
-
-
-
-/**
- * weekday_picker_get_type:
- *
- * Registers the #WeekdayPicker class if necessary, and returns the type ID
- * associated to it.
- *
- * Return value: The type ID of the #WeekdayPicker class.
- **/
-GtkType
-weekday_picker_get_type (void)
-{
- static GtkType weekday_picker_type = 0;
-
- if (!weekday_picker_type) {
- static const GtkTypeInfo weekday_picker_info = {
- "WeekdayPicker",
- sizeof (WeekdayPicker),
- sizeof (WeekdayPickerClass),
- (GtkClassInitFunc) weekday_picker_class_init,
- (GtkObjectInitFunc) weekday_picker_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- weekday_picker_type = gtk_type_unique (GNOME_TYPE_CANVAS, &weekday_picker_info);
- }
-
- return weekday_picker_type;
-}
-
-/* Class initialization function for the weekday picker */
-static void
-weekday_picker_class_init (WeekdayPickerClass *class)
-{
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
-
- object_class = (GtkObjectClass *) class;
- widget_class = (GtkWidgetClass *) class;
-
- parent_class = gtk_type_class (GNOME_TYPE_CANVAS);
-
- wp_signals[CHANGED] =
- gtk_signal_new ("changed",
- GTK_RUN_FIRST,
- object_class->type,
- GTK_SIGNAL_OFFSET (WeekdayPickerClass, changed),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- gtk_object_class_add_signals (object_class, wp_signals, LAST_SIGNAL);
-
- object_class->finalize = weekday_picker_finalize;
-
- widget_class->realize = weekday_picker_realize;
- widget_class->size_request = weekday_picker_size_request;
- widget_class->size_allocate = weekday_picker_size_allocate;
- widget_class->style_set = weekday_picker_style_set;
-
- class->changed = NULL;
-}
-
-/* Event handler for the day items */
-static gint
-day_event_cb (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
-{
- WeekdayPicker *wp;
- WeekdayPickerPrivate *priv;
- int i;
- guint8 day_mask;
-
- wp = WEEKDAY_PICKER (data);
- priv = wp->priv;
-
- if (!(event->type == GDK_BUTTON_PRESS && event->button.button == 1))
- return FALSE;
-
- /* Find which box was clicked */
-
- for (i = 0; i < 7; i++)
- if (priv->boxes[i] == item || priv->labels[i] == item)
- break;
-
- g_assert (i != 7);
-
- /* Turn on that day */
-
- i += priv->week_start_day;
- if (i >= 7)
- i -= 7;
-
- if (priv->blocked_day_mask & (0x1 << i))
- return TRUE;
-
- if (priv->day_mask & (0x1 << i))
- day_mask = priv->day_mask & ~(0x1 << i);
- else
- day_mask = priv->day_mask | (0x1 << i);
-
- weekday_picker_set_days (wp, day_mask);
-
- return TRUE;
-}
-
-
-/* Creates the canvas items for the weekday picker. The items are empty until
- * they are configured elsewhere.
- */
-static void
-create_items (WeekdayPicker *wp)
-{
- WeekdayPickerPrivate *priv;
- GnomeCanvasGroup *parent;
- int i;
-
- priv = wp->priv;
-
- parent = gnome_canvas_root (GNOME_CANVAS (wp));
-
- for (i = 0; i < 7; i++) {
- priv->boxes[i] = gnome_canvas_item_new (parent,
- GNOME_TYPE_CANVAS_RECT,
- NULL);
- gtk_signal_connect (GTK_OBJECT (priv->boxes[i]), "event",
- GTK_SIGNAL_FUNC (day_event_cb),
- wp);
-
- priv->labels[i] = gnome_canvas_item_new (parent,
- GNOME_TYPE_CANVAS_TEXT,
- NULL);
- gtk_signal_connect (GTK_OBJECT (priv->labels[i]), "event",
- GTK_SIGNAL_FUNC (day_event_cb),
- wp);
- }
-}
-
-/* Object initialization function for the weekday picker */
-static void
-weekday_picker_init (WeekdayPicker *wp)
-{
- WeekdayPickerPrivate *priv;
-
- GTK_WIDGET_UNSET_FLAGS (wp, GTK_CAN_FOCUS);
-
- priv = g_new0 (WeekdayPickerPrivate, 1);
-
- wp->priv = priv;
-
- create_items (wp);
-}
-
-/* Finalize handler for the weekday picker */
-static void
-weekday_picker_finalize (GtkObject *object)
-{
- WeekdayPicker *wp;
- WeekdayPickerPrivate *priv;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (IS_WEEKDAY_PICKER (object));
-
- wp = WEEKDAY_PICKER (object);
- priv = wp->priv;
-
- g_free (priv);
- wp->priv = NULL;
-
- if (GTK_OBJECT_CLASS (parent_class)->finalize)
- (* GTK_OBJECT_CLASS (parent_class)->finalize) (object);
-}
-
-static void
-colorize_items (WeekdayPicker *wp)
-{
- WeekdayPickerPrivate *priv;
- GdkColor *outline;
- GdkColor *fill, *sel_fill;
- GdkColor *text_fill, *sel_text_fill;
- int i;
-
- priv = wp->priv;
-
- outline = &GTK_WIDGET (wp)->style->fg[GTK_WIDGET_STATE (wp)];
-
- fill = &GTK_WIDGET (wp)->style->base[GTK_WIDGET_STATE (wp)];
- text_fill = &GTK_WIDGET (wp)->style->fg[GTK_WIDGET_STATE (wp)];
-
- sel_fill = &GTK_WIDGET (wp)->style->bg[GTK_STATE_SELECTED];
- sel_text_fill = &GTK_WIDGET (wp)->style->fg[GTK_STATE_SELECTED];
-
- for (i = 0; i < 7; i++) {
- int day;
- GdkColor *f, *t;
-
- day = i + priv->week_start_day;
- if (day >= 7)
- day -= 7;
-
- if (priv->day_mask & (0x1 << day)) {
- f = sel_fill;
- t = sel_text_fill;
- } else {
- f = fill;
- t = text_fill;
- }
-
- gnome_canvas_item_set (priv->boxes[i],
- "fill_color_gdk", f,
- "outline_color_gdk", outline,
- NULL);
-
- gnome_canvas_item_set (priv->labels[i],
- "fill_color_gdk", t,
- NULL);
- }
-}
-
-/* Configures the items in the weekday picker by setting their attributes. */
-static void
-configure_items (WeekdayPicker *wp)
-{
- WeekdayPickerPrivate *priv;
- int width, height;
- int box_width;
- const char *str;
- int i;
-
- priv = wp->priv;
-
- width = GTK_WIDGET (wp)->allocation.width;
- height = GTK_WIDGET (wp)->allocation.height;
-
- box_width = (width - 1) / 7;
- str = _("SMTWTFS");
-
- for (i = 0; i < 7; i++) {
- char *c;
- int day;
-
- day = i + priv->week_start_day;
- if (day >= 7)
- day -= 7;
-
- gnome_canvas_item_set (priv->boxes[i],
- "x1", (double) (i * box_width),
- "y1", (double) 0,
- "x2", (double) ((i + 1) * box_width),
- "y2", (double) (height - 1),
- "width_pixels", 0,
- NULL);
-
- c = g_strndup (str + day, 1);
- gnome_canvas_item_set (priv->labels[i],
- "text", c,
- "font_gdk", GTK_WIDGET (wp)->style->font,
- "x", (double) (i * box_width) + box_width / 2.0,
- "y", (double) (1 + PADDING),
- "anchor", GTK_ANCHOR_N,
- NULL);
- g_free (c);
- }
-
- colorize_items (wp);
-}
-
-/* Realize handler for the weekday picker */
-static void
-weekday_picker_realize (GtkWidget *widget)
-{
- WeekdayPicker *wp;
-
- wp = WEEKDAY_PICKER (widget);
-
- if (GTK_WIDGET_CLASS (parent_class)->realize)
- (* GTK_WIDGET_CLASS (parent_class)->realize) (widget);
-
- configure_items (wp);
-}
-
-/* Size_request handler for the weekday picker */
-static void
-weekday_picker_size_request (GtkWidget *widget, GtkRequisition *requisition)
-{
- WeekdayPicker *wp;
- WeekdayPickerPrivate *priv;
-
- wp = WEEKDAY_PICKER (widget);
- priv = wp->priv;
-
- requisition->width = (priv->max_letter_width + 2 * PADDING + 1) * 7 + 1;
- requisition->height = (priv->font_ascent + priv->font_descent + 2 * PADDING + 2);
-}
-
-/* Size_allocate handler for the weekday picker */
-static void
-weekday_picker_size_allocate (GtkWidget *widget, GtkAllocation *allocation)
-{
- WeekdayPicker *wp;
-
- wp = WEEKDAY_PICKER (widget);
-
- if (GTK_WIDGET_CLASS (parent_class)->size_allocate)
- (* GTK_WIDGET_CLASS (parent_class)->size_allocate) (widget, allocation);
-
- gnome_canvas_set_scroll_region (GNOME_CANVAS (wp),
- 0, 0, allocation->width, allocation->height);
-
- configure_items (wp);
-}
-
-/* Style_set handler for the weekday picker */
-static void
-weekday_picker_style_set (GtkWidget *widget, GtkStyle *previous_style)
-{
- WeekdayPicker *wp;
- WeekdayPickerPrivate *priv;
- int max_width;
- const char *str;
- int i, len;
-
- wp = WEEKDAY_PICKER (widget);
- priv = wp->priv;
-
- priv->font_ascent = widget->style->font->ascent;
- priv->font_descent = widget->style->font->descent;
-
- max_width = 0;
-
- str = _("SMTWTFS");
- len = strlen (str);
-
- for (i = 0; i < len; i++) {
- int w;
-
- w = gdk_char_measure (widget->style->font, str[i]);
- if (w > max_width)
- max_width = w;
- }
-
- priv->max_letter_width = max_width;
-
- configure_items (wp);
-
- if (GTK_WIDGET_CLASS (parent_class)->style_set)
- (* GTK_WIDGET_CLASS (parent_class)->style_set) (widget, previous_style);
-}
-
-
-
-/**
- * weekday_picker_new:
- * @void:
- *
- * Creates a new weekday picker widget.
- *
- * Return value: A newly-created weekday picker.
- **/
-GtkWidget *
-weekday_picker_new (void)
-{
- return gtk_type_new (TYPE_WEEKDAY_PICKER);
-}
-
-/**
- * weekday_picker_set_days:
- * @wp: A weekday picker.
- * @day_mask: Bitmask with the days to be selected.
- *
- * Sets the days that are selected in a weekday picker. In the @day_mask,
- * Sunday is bit 0, Monday is bit 1, etc.
- **/
-void
-weekday_picker_set_days (WeekdayPicker *wp, guint8 day_mask)
-{
- WeekdayPickerPrivate *priv;
-
- g_return_if_fail (wp != NULL);
- g_return_if_fail (IS_WEEKDAY_PICKER (wp));
-
- priv = wp->priv;
-
- priv->day_mask = day_mask;
- colorize_items (wp);
-
- gtk_signal_emit (GTK_OBJECT (wp), wp_signals[CHANGED]);
-}
-
-/**
- * weekday_picker_get_days:
- * @wp: A weekday picker.
- *
- * Queries the days that are selected in a weekday picker.
- *
- * Return value: Bit mask of selected days. Sunday is bit 0, Monday is bit 1,
- * etc.
- **/
-guint8
-weekday_picker_get_days (WeekdayPicker *wp)
-{
- WeekdayPickerPrivate *priv;
-
- g_return_val_if_fail (wp != NULL, 0);
- g_return_val_if_fail (IS_WEEKDAY_PICKER (wp), 0);
-
- priv = wp->priv;
- return priv->day_mask;
-}
-
-/**
- * weekday_picker_set_blocked_days:
- * @wp: A weekday picker.
- * @blocked_day_mask: Bitmask with the days to be blocked.
- *
- * Sets the days that the weekday picker will prevent from being modified by the
- * user. The @blocked_day_mask is specified in the same way as in
- * weekday_picker_set_days().
- **/
-void
-weekday_picker_set_blocked_days (WeekdayPicker *wp, guint8 blocked_day_mask)
-{
- WeekdayPickerPrivate *priv;
-
- g_return_if_fail (wp != NULL);
- g_return_if_fail (IS_WEEKDAY_PICKER (wp));
-
- priv = wp->priv;
- priv->blocked_day_mask = blocked_day_mask;
-}
-
-/**
- * weekday_picker_get_blocked_days:
- * @wp: A weekday picker.
- *
- * Queries the set of days that the weekday picker prevents from being modified
- * by the user.
- *
- * Return value: Bit mask of blocked days, with the same format as that returned
- * by weekday_picker_get_days().
- **/
-guint
-weekday_picker_get_blocked_days (WeekdayPicker *wp)
-{
- WeekdayPickerPrivate *priv;
-
- g_return_val_if_fail (wp != NULL, 0);
- g_return_val_if_fail (IS_WEEKDAY_PICKER (wp), 0);
-
- priv = wp->priv;
- return priv->blocked_day_mask;
-}
-
-/**
- * weekday_picker_set_week_start_day:
- * @wp: A weekday picker.
- * @week_start_day: Index of the day that defines the start of the week; 0 is
- * Sunday, 1 is Monday, etc.
- *
- * Sets the day that defines the start of the week for a weekday picker.
- **/
-void
-weekday_picker_set_week_start_day (WeekdayPicker *wp, int week_start_day)
-{
- WeekdayPickerPrivate *priv;
-
- g_return_if_fail (wp != NULL);
- g_return_if_fail (IS_WEEKDAY_PICKER (wp));
- g_return_if_fail (week_start_day >= 0 && week_start_day < 7);
-
- priv = wp->priv;
- priv->week_start_day = week_start_day;
-
- configure_items (wp);
-}
-
-/**
- * weekday_picker_get_week_start_day:
- * @wp: A weekday picker.
- *
- * Queries the day that defines the start of the week in a weekday picker.
- *
- * Return value: Index of the day that defines the start of the week. See
- * weekday_picker_set_week_start_day() to see how this is represented.
- **/
-int
-weekday_picker_get_week_start_day (WeekdayPicker *wp)
-{
- WeekdayPickerPrivate *priv;
-
- g_return_val_if_fail (wp != NULL, -1);
- g_return_val_if_fail (IS_WEEKDAY_PICKER (wp), -1);
-
- priv = wp->priv;
- return priv->week_start_day;
-}
diff --git a/calendar/gui/weekday-picker.h b/calendar/gui/weekday-picker.h
deleted file mode 100644
index 00c51b7a62..0000000000
--- a/calendar/gui/weekday-picker.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Evolution calendar - Week day picker widget
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Author: Federico Mena-Quintero <federico@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef WEEKDAY_PICKER_H
-#define WEEKDAY_PICKER_H
-
-#include <libgnome/gnome-defs.h>
-#include <libgnomeui/gnome-canvas.h>
-
-BEGIN_GNOME_DECLS
-
-
-
-#define TYPE_WEEKDAY_PICKER (weekday_picker_get_type ())
-#define WEEKDAY_PICKER(obj) (GTK_CHECK_CAST ((obj), TYPE_WEEKDAY_PICKER, WeekdayPicker))
-#define WEEKDAY_PICKER_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), TYPE_WEEKDAY_PICKER, \
- WeekdayPickerClass))
-#define IS_WEEKDAY_PICKER(obj) (GTK_CHECK_TYPE ((obj), TYPE_WEEKDAY_PICKER))
-#define IS_WEEKDAY_PICKER_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), TYPE_WEEKDAY_PICKER))
-
-typedef struct _WeekdayPicker WeekdayPicker;
-typedef struct _WeekdayPickerClass WeekdayPickerClass;
-typedef struct _WeekdayPickerPrivate WeekdayPickerPrivate;
-
-struct _WeekdayPicker {
- GnomeCanvas canvas;
-
- /* Private data */
- WeekdayPickerPrivate *priv;
-};
-
-struct _WeekdayPickerClass {
- GnomeCanvasClass parent_class;
-
- void (* changed) (WeekdayPicker *wp);
-};
-
-GtkType weekday_picker_get_type (void);
-
-GtkWidget *weekday_picker_new (void);
-
-void weekday_picker_set_days (WeekdayPicker *wp, guint8 day_mask);
-guint8 weekday_picker_get_days (WeekdayPicker *wp);
-
-void weekday_picker_set_blocked_days (WeekdayPicker *wp, guint8 blocked_day_mask);
-guint weekday_picker_get_blocked_days (WeekdayPicker *wp);
-
-void weekday_picker_set_week_start_day (WeekdayPicker *wp, int week_start_day);
-int weekday_picker_get_week_start_day (WeekdayPicker *wp);
-
-
-
-END_GNOME_DECLS
-
-#endif
diff --git a/calendar/gui/widget-util.c b/calendar/gui/widget-util.c
deleted file mode 100644
index d6034ce8b0..0000000000
--- a/calendar/gui/widget-util.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Evolution calendar - Widget utilities
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Author: Federico Mena-Quintero <federico@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <widgets/misc/e-dateedit.h>
-#include "calendar-config.h"
-#include "widget-util.h"
-
-
-
-/**
- * date_edit_new:
- * @show_date: Whether to show a date picker in the widget.
- * @show_time: Whether to show a time picker in the widget.
- *
- * Creates a new #EDateEdit widget, configured using the calendar's preferences.
- *
- * Return value: A newly-created #EDateEdit widget.
- **/
-GtkWidget *
-date_edit_new (gboolean show_date, gboolean show_time)
-{
- EDateEdit *dedit;
-
- dedit = E_DATE_EDIT (e_date_edit_new ());
-
- e_date_edit_set_show_date (dedit, show_date);
- e_date_edit_set_show_time (dedit, show_time);
-
- calendar_config_configure_e_date_edit (dedit);
-
- return GTK_WIDGET (dedit);
-}
diff --git a/calendar/gui/widget-util.h b/calendar/gui/widget-util.h
deleted file mode 100644
index 930e0f9b6e..0000000000
--- a/calendar/gui/widget-util.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Evolution calendar - Widget utilities
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Author: Federico Mena-Quintero <federico@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef WIDGET_UTIL_H
-#define WIDGET_UTIL_H
-
-#include <gtk/gtkwidget.h>
-
-
-GtkWidget *date_edit_new (gboolean show_date, gboolean show_time);
-
-
-#endif
diff --git a/calendar/idl/.cvsignore b/calendar/idl/.cvsignore
deleted file mode 100644
index b840c21800..0000000000
--- a/calendar/idl/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile.in
-Makefile \ No newline at end of file
diff --git a/calendar/idl/Makefile.am b/calendar/idl/Makefile.am
deleted file mode 100644
index ec6b4e45f0..0000000000
--- a/calendar/idl/Makefile.am
+++ /dev/null
@@ -1,7 +0,0 @@
-idldir = $(datadir)/idl
-
-idl_DATA = \
- evolution-calendar.idl
-
-EXTRA_DIST = \
- $(idl_DATA)
diff --git a/calendar/idl/evolution-calendar.idl b/calendar/idl/evolution-calendar.idl
deleted file mode 100644
index e21f77fe2e..0000000000
--- a/calendar/idl/evolution-calendar.idl
+++ /dev/null
@@ -1,260 +0,0 @@
-/* Evolution calendar interface
- *
- * Copyright (C) 2000 Eskil Heyn Olsen
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Authors: Eskil Heyn Olsen <deity@eskil.dk>
- * Federico Mena-Quintero <federico@ximian.com>
- */
-
-#ifndef _EVOLUTION_CALENDAR_IDL_
-#define _EVOLUTION_CALENDAR_IDL_
-
-#include <Bonobo.idl>
-
-module GNOME {
-module Evolution {
-
-module Calendar {
- /* A calendar component (event/todo/journal/etc), represented as an
- * iCalendar string.
- */
- typedef string CalObj;
-
- /* A unique identifier for a calendar component */
- typedef string CalObjUID;
-
- /* Sequence of unique identifiers */
- typedef sequence<CalObjUID> CalObjUIDSeq;
-
- /* A unique identifier for an alarm subcomponent */
- typedef string CalAlarmUID;
-
- /* Flags for getting UID sequences */
- typedef long CalObjType;
- const CalObjType TYPE_EVENT = 1 << 0;
- const CalObjType TYPE_TODO = 1 << 1;
- const CalObjType TYPE_JOURNAL = 1 << 2;
- const CalObjType TYPE_ANY = 0x07;
-
- /* Types of object changes made */
- typedef long CalObjChangeType;
- const CalObjChangeType ADDED = 1 << 0;
- const CalObjChangeType MODIFIED = 1 << 1;
- const CalObjChangeType DELETED = 1 << 2;
-
- /* Types of alarms */
- enum AlarmType {
- MAIL,
- PROGRAM,
- DISPLAY,
- AUDIO
- };
-
- /* Used to store a time_t */
- typedef unsigned long Time_t;
-
- /* An instance of a calendar component that actually occurs. These are
- * "virtual" objects in that they are used to represent instances of
- * recurring events and alarms. "Real" objects just contain the
- * information required to figure out the times at which they recur or
- * trigger.
- */
- struct CalObjInstance {
- CalObjUID uid;
- Time_t start;
- Time_t end;
- };
-
- /* Used to transfer a list of component occurrences */
- typedef sequence<CalObjInstance> CalObjInstanceSeq;
-
- /* An object change */
- struct CalObjChange {
- CalObj calobj;
- CalObjChangeType type;
- };
-
- /* Used to transfer a list of changed components */
- typedef sequence<CalObjChange> CalObjChangeSeq;
-
- /* An alarm trigger instance */
- struct CalAlarmInstance {
- CalAlarmUID auid;
- Time_t trigger;
- Time_t occur;
- };
-
- /* Used to represent a list of alarm triggers for a single component */
- typedef sequence<CalAlarmInstance> CalAlarmInstanceSeq;
-
- /* Alarms for a component */
- struct CalComponentAlarms {
- CalObj calobj;
- CalAlarmInstanceSeq alarms;
- };
-
- /* Used to represent a list of components plus their triggers */
- typedef sequence<CalComponentAlarms> CalComponentAlarmsSeq;
-
- interface Query;
-
- interface Listener;
-
- interface QueryListener;
-
- /* Calendar client interface */
- interface Cal : Bonobo::Unknown {
- exception NotFound {};
- exception InvalidRange {};
- exception InvalidObject {};
- exception CouldNotCreate {};
-
- /* A calendar is identified by its URI */
- readonly attribute string uri;
-
- /* Gets the number of components of the specified types */
- long countObjects (in CalObjType type);
-
- /* Gets a component based on its URI */
- CalObj getObject (in CalObjUID uid)
- raises (NotFound);
-
- /* Gets a list of UIDs based on component type */
- CalObjUIDSeq getUIDs (in CalObjType type);
-
- /* Gets a list of components that changed based on object type */
- CalObjChangeSeq getChanges (in CalObjType type, in string change_id);
-
- /* Gets a list of components that occur or recur in the specified time range */
- CalObjUIDSeq getObjectsInRange (in CalObjType type,
- in Time_t start, in Time_t end)
- raises (InvalidRange);
-
- /* Gets a list of the components that have alarms that trigger
- * in the specified range of time, and the trigger/occurrence
- * structures themselves.
- */
- CalComponentAlarmsSeq getAlarmsInRange (in Time_t start, in Time_t end)
- raises (InvalidRange);
-
- /* Gets the alarms for the specified component that trigger in
- * the specified time range.
- */
- CalComponentAlarms getAlarmsForObject (in CalObjUID uid,
- in Time_t start, in Time_t end)
- raises (NotFound, InvalidRange);
-
-
- /* Updates a component by adding it if it does not exist or by
- * changing an existing one.
- */
- void updateObject (in CalObjUID uid, in CalObj calobj)
- raises (InvalidObject);
-
- /* Removes a component */
- void removeObject (in CalObjUID uid)
- raises (NotFound);
-
- /* Initiates a live query of the calendar. Returns a handle
- * to the live query itself; changes to components that are
- * present in the query are notified to the listener.
- */
- Query getQuery (in string sexp, in QueryListener ql)
- raises (CouldNotCreate);
- };
-
- /* Listener for changes in a calendar */
- interface Listener : Bonobo::Unknown {
- /* Return status when opening a calendar */
- enum OpenStatus {
- SUCCESS, /* All OK */
- ERROR, /* Generic error */
- NOT_FOUND, /* Requested opening in only_if_exists mode
- * when the URI did not exist.
- */
- METHOD_NOT_SUPPORTED /* A method handler is not registered */
- };
-
- /* Called from a CalFactory when a calendar is initially opened.
- * The listener must remember the cal object.
- */
- void notifyCalOpened (in OpenStatus status, in Cal cal);
-
- /* Called from a Calendar when a component is added or changed */
- void notifyObjUpdated (in CalObjUID uid);
-
- /* Called from a Calendar when a component is removed */
- void notifyObjRemoved (in CalObjUID uid);
- };
-
- /* Handle to a live query on a calendar */
- interface Query : Bonobo::Unknown {
- };
-
- /* Listener for changes in a query of a calendar */
- interface QueryListener : Bonobo::Unknown {
- /* Called when a component is added or changed. If
- * query_in_progress is true, then the initial query results are
- * being populated and the other arguments indicate the
- * percentage of completion Otherwise, the percent value is
- * unspecified. */
- void notifyObjUpdated (in CalObjUID uid,
- in boolean query_in_progress,
- in long n_scanned,
- in long total);
-
- /* Called when a component is removed */
- void notifyObjRemoved (in CalObjUID uid);
-
- /* Reported when a query ends */
- enum QueryDoneStatus {
- SUCCESS,
- PARSE_ERROR
- };
-
- /* Called when the query finishes populating itself some time
- * after it is created. Before this is called,
- * notifyObjUpdated() may have been called several times to
- * indicate which objects are actually in the query, unless the
- * status result is a parse error.
- */
- void notifyQueryDone (in QueryDoneStatus status, in string error_str);
-
- /* Called when an evaluation error occurs while performing a query */
- void notifyEvalError (in string error_str);
- };
-
- /* A calendar factory, can load and create calendars */
- interface CalFactory : Bonobo::Unknown {
- exception NilListener {};
-
- /* Open a calendar from an URI */
- void open (in string uri, in boolean only_if_exists, in Listener listener)
- raises (NilListener);
- };
-
- /* Interface to the alarm notification service */
- interface AlarmNotify : Bonobo::Unknown {
- exception InvalidURI {};
- exception BackendContactError {};
- exception NotFound {};
-
- /* Adds a calendar to the alarm notification system */
- void addCalendar (in string uri)
- raises (InvalidURI, BackendContactError);
-
- /* Removes a calendar from the alarm notification system */
- void removeCalendar (in string uri)
- raises (InvalidURI, NotFound);
-
- /* Makes the alarm notification daemon unconditionally exit */
- void die ();
- };
-};
-
-};
-};
-
-#endif
diff --git a/calendar/pcs/.cvsignore b/calendar/pcs/.cvsignore
deleted file mode 100644
index ac51a554db..0000000000
--- a/calendar/pcs/.cvsignore
+++ /dev/null
@@ -1,11 +0,0 @@
-Makefile
-Makefile.in
-.deps
-.libs
-.pure
-*.la
-*.lo
-evolution-calendar-stubs.c
-evolution-calendar-skels.c
-evolution-calendar-common.c
-evolution-calendar.h
diff --git a/calendar/pcs/Makefile.am b/calendar/pcs/Makefile.am
deleted file mode 100644
index 227ca53257..0000000000
--- a/calendar/pcs/Makefile.am
+++ /dev/null
@@ -1,49 +0,0 @@
-INCLUDES = \
- -DG_LOG_DOMAIN=\"wombat-pcs\" \
- -I$(top_srcdir) \
- -I$(top_srcdir)/calendar \
- -I$(top_srcdir)/libical/src/libical \
- -I$(top_builddir)/libical/src/libical \
- $(BONOBO_VFS_GNOME_CFLAGS) \
- $(EXTRA_GNOME_CFLAGS) \
- -DGNOMELOCALEDIR=\""$(localedir)"\"
-
-CORBA_GENERATED = \
- evolution-calendar.h \
- evolution-calendar-common.c \
- evolution-calendar-skels.c \
- evolution-calendar-stubs.c
-
-idls = \
- $(srcdir)/../idl/evolution-calendar.idl
-
-idl_flags = -I $(srcdir) `$(GNOME_CONFIG) --cflags idl` -I $(datadir)/idl
-
-$(CORBA_GENERATED): $(idls)
- $(ORBIT_IDL) $(idl_flags) $(srcdir)/../idl/evolution-calendar.idl
-
-noinst_LIBRARIES = libpcs.a
-
-libpcs_a_SOURCES = \
- $(CORBA_GENERATED) \
- cal.c \
- cal.h \
- cal-backend.c \
- cal-backend.h \
- cal-backend-file.c \
- cal-backend-file.h \
- cal-common.h \
- cal-factory.c \
- cal-factory.h \
- job.c \
- job.h \
- query.c \
- query.h
-
-
-BUILT_SOURCES = $(CORBA_GENERATED)
-CLEANFILES += $(BUILT_SOURCES)
-
-dist-hook:
- cd $(distdir); rm -f $(BUILT_SOURCES)
-
diff --git a/calendar/pcs/cal-backend-db.c b/calendar/pcs/cal-backend-db.c
deleted file mode 100644
index d4773760f8..0000000000
--- a/calendar/pcs/cal-backend-db.c
+++ /dev/null
@@ -1,1503 +0,0 @@
-/* Evolution calendar - iCalendar DB backend
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Author: Rodrigo Moya <rodrigo@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <gtk/gtksignal.h>
-#include "cal-util/cal-recur.h"
-#include "cal-backend-db.h"
-#include <db.h>
-#if DB_VERSION_MAJOR < 3
-# error "You need libdb3 to compile the DB backend"
-#endif
-
-#define ENVIRONMENT_DIRECTORY "%s/evolution/local/Calendar/db.environment"
-
-/* structure to identify an open cursor */
-typedef struct {
- gint ref;
- DBC* dbc;
- DB* parent_db;
-
- /* data in the cursor */
- GList *keys;
- GList *data;
-} CalBackendDBCursor;
-
-/* private part of the CalBackendDB structure */
-struct _CalBackendDBPrivate {
- /* URI where the calendar data is stored */
- GnomeVFSURI *uri;
-
- /* Berkeley DB's library handles */
- DB_ENV *environment;
- DB *objects_db;
- DB *history_db;
-
- /* list of open cursors */
- GList *cursors;
-
- /* list of clients using this backend */
- GList *clients;
-};
-
-static void cal_backend_db_class_init (CalBackendDBClass *klass);
-static void cal_backend_db_init (CalBackendDB *cbdb);
-static void cal_backend_db_destroy (GtkObject *object);
-
-static GnomeVFSURI *cal_backend_db_get_uri (CalBackend *backend);
-static void cal_backend_db_add_cal (CalBackend *backend, Cal *cal);
-static CalBackendOpenStatus cal_backend_db_open (CalBackend *backend,
- GnomeVFSURI *uri,
- gboolean only_if_exists);
-static gboolean cal_backend_db_is_loaded (CalBackend *backend);
-
-static int cal_backend_db_get_n_objects (CalBackend *backend, CalObjType type);
-static char *cal_backend_db_get_object (CalBackend *backend, const char *uid);
-static CalObjType cal_backend_db_get_type_by_uid (CalBackend *backend, const char *uid);
-static GList* cal_backend_db_get_uids (CalBackend *backend, CalObjType type);
-static GList* cal_backend_db_get_objects_in_range (CalBackend *backend,
- CalObjType type,
- time_t start,
- time_t end);
-static GNOME_Evolution_Calendar_CalObjChangeSeq *cal_backend_db_get_changes (
- CalBackend *backend, CalObjType type, const char *change_id);
-
-static GNOME_Evolution_Calendar_CalComponentAlarmsSeq *cal_backend_db_get_alarms_in_range (
- CalBackend *backend, time_t start, time_t end);
-
-static GNOME_Evolution_Calendar_CalComponentAlarms *cal_backend_db_get_alarms_for_object (
- CalBackend *backend, const char *uid, time_t start, time_t end, gboolean *object_found);
-
-static gboolean cal_backend_db_update_object (CalBackend *backend,
- const char *uid,
- const char *calobj);
-static gboolean cal_backend_db_remove_object (CalBackend *backend, const char *uid);
-
-static void close_cursor (CalBackendDB *cbdb, CalBackendDBCursor *cursor);
-static CalBackendDBCursor *open_cursor (CalBackendDB *cbdb, DB *db);
-static CalBackendDBCursor *find_cursor_by_db (CalBackendDB *cbdb, DB *db);
-static DBT *find_record_by_id (CalBackendDBCursor *cursor, const gchar *id);
-
-static DB_TXN *begin_transaction (CalBackendDB *cbdb);
-static void commit_transaction (DB_TXN *tid);
-static void rollback_transaction (DB_TXN *tid);
-
-static CalBackendClass *parent_class;
-
-/**
- * cal_backend_db_get_type:
- * @void:
- *
- * Registers the #CalBackendDB class if necessary and returns the type ID
- * associated to it.
- *
- * Return value: The type ID of the #CalBackendDB class.
- */
-GtkType
-cal_backend_db_get_type (void)
-{
- static GtkType cal_backend_db_type = 0;
-
- if (!cal_backend_db_type) {
- static const GtkTypeInfo cal_backend_db_info = {
- "CalBackendDB",
- sizeof (CalBackendDB),
- sizeof (CalBackendDBClass),
- (GtkClassInitFunc) cal_backend_db_class_init,
- (GtkObjectInitFunc) cal_backend_db_init,
- NULL,
- NULL,
- (GtkClassInitFunc) NULL
- };
-
- cal_backend_db_type = gtk_type_unique(CAL_BACKEND_TYPE, &cal_backend_db_info);
- }
-
- return cal_backend_db_type;
-}
-
-/* class initialization function for the DB backend */
-static void
-cal_backend_db_class_init (CalBackendDBClass *klass)
-{
- GtkObjectClass *object_class;
- CalBackendClass *backend_class;
-
- object_class = (GtkObjectClass *) klass;
- backend_class = (CalBackendClass *) klass;
-
- parent_class = gtk_type_class(CAL_BACKEND_TYPE);
-
- object_class->destroy = cal_backend_db_destroy;
-
- backend_class->get_uri = cal_backend_db_get_uri;
- backend_class->add_cal = cal_backend_db_add_cal;
- backend_class->open = cal_backend_db_open;
- backend_class->is_loaded = cal_backend_db_is_loaded;
- backend_class->get_n_objects = cal_backend_db_get_n_objects;
- backend_class->get_object = cal_backend_db_get_object;
- backend_class->get_type_by_uid = cal_backend_db_get_type_by_uid;
- backend_class->get_uids = cal_backend_db_get_uids;
- backend_class->get_objects_in_range = cal_backend_db_get_objects_in_range;
- backend_class->get_changes = cal_backend_db_get_changes;
- backend_class->get_alarms_in_range = cal_backend_db_get_alarms_in_range;
- backend_class->get_alarms_for_object = cal_backend_db_get_alarms_for_object;
- backend_class->update_object = cal_backend_db_update_object;
- backend_class->remove_object = cal_backend_db_remove_object;
-}
-
-/* object initialization function for the DB backend */
-static void
-cal_backend_db_init (CalBackendDB *cbdb)
-{
- CalBackendDBPrivate *priv;
-
- priv = g_new0(CalBackendDBPrivate, 1);
- cbdb->priv = priv;
-}
-
-/* Destroy handler for the DB backend */
-static void
-cal_backend_db_destroy (GtkObject *object)
-{
- CalBackendDB *cbdb;
- CalBackendDBPrivate *priv;
- GList *node;
-
- g_return_if_fail(object != NULL);
- g_return_if_fail(IS_CAL_BACKEND_DB(object));
-
- cbdb = CAL_BACKEND_DB(object);
- priv = cbdb->priv;
-
- g_assert(cbdb->priv->clients == NULL);
-
- /* clean up */
- if (priv->uri) {
- gnome_vfs_uri_unref(priv->uri);
- priv->uri = NULL;
- }
-
- /* close open cursors */
- while ((node = g_list_first(cbdb->priv->cursors))) {
- close_cursor(cbdb, (CalBackendDBCursor *) node->data);
- }
-
- /* close open databases */
- if (cbdb->priv->objects_db)
- cbdb->priv->objects_db->close(cbdb->priv->objects_db, 0);
- if (cbdb->priv->history_db)
- cbdb->priv->history_db->close(cbdb->priv->history_db, 0);
-
- /* close DB environment */
- if (cbdb->priv->environment)
- cbdb->priv->environment->close(cbdb->priv->environment, 0);
-
- g_free((gpointer) priv);
- cbdb->priv = NULL;
-
- if (GTK_OBJECT_CLASS(parent_class)->destroy)
- (*GTK_OBJECT_CLASS(parent_class)->destroy)(object);
-}
-
-/*
- * Private functions
- */
-
-/* close an open cursor and frees all associated memory */
-static void
-close_cursor (CalBackendDB *cbdb, CalBackendDBCursor *cursor)
-{
- GList *node;
- DBT *dbt;
-
- g_return_if_fail(cursor != NULL);
-
- cursor->ref--;
- if (cursor->ref > 0)
- return;
-
- /* free all keys and data */
- while ((node = g_list_first(cursor->keys))) {
- dbt = (DBT *) node->data;
- cursor->keys = g_list_remove(cursor->keys, (gpointer) dbt);
- g_free((gpointer) dbt);
- }
- while ((node = g_list_first(cursor->data))) {
- dbt = (DBT *) node->data;
- cursor->data = g_list_remove(cursor->data, (gpointer) dbt);
- g_free((gpointer) dbt);
- }
-
- /* finally, close the cursor */
- cursor->dbc->c_close(cursor->dbc);
-
- cbdb->priv->cursors = g_list_remove(cbdb->priv->cursors, (gpointer) cursor);
- g_free((gpointer) cursor);
-}
-
-/* open a cursor for the given database */
-static CalBackendDBCursor *
-open_cursor (CalBackendDB *cbdb, DB *db)
-{
- CalBackendDBCursor *cursor;
- gint ret;
-
- g_return_val_if_fail(IS_CAL_BACKEND_DB(cbdb), NULL);
- g_return_val_if_fail(db != NULL, NULL);
-
- /* search for the cursor in our list of cursors */
- cursor = find_cursor_by_db(cbdb, db);
- if (cursor) {
- cursor->ref++;
- return cursor;
- }
-
- /* create the cursor */
- cursor = g_new0(CalBackendDBCursor, 1);
- cursor->parent_db = db;
- cursor->ref = 1;
-
- ret = db->cursor(db, NULL, &cursor->dbc, 0);
- if (ret == 0) {
- DBT key;
- DBT data;
-
- /* read data */
- memset(&key, 0, sizeof(key));
- memset(&data, 0, sizeof(data));
-
- while ((ret = cursor->dbc->c_get(cursor->dbc, &key, &data, DB_NEXT)) == 0) {
- cursor->keys = g_list_append(cursor->keys, g_memdup(&key, sizeof(key)));
- cursor->data = g_list_append(cursor->data, g_memdup(&data, sizeof(data)));
-
- memset(&key, 0, sizeof(key));
- memset(&data, 0, sizeof(data));
- }
- if (ret == DB_NOTFOUND) {
- cbdb->priv->cursors = g_list_prepend(cbdb->priv->cursors, (gpointer) cursor);
- return cursor;
- }
-
- /* close cursor on error */
- close_cursor(cbdb, cursor);
- }
-
- return NULL;
-}
-
-/* search for a cursor in the given backend */
-static CalBackendDBCursor *
-find_cursor_by_db (CalBackendDB *cbdb, DB *db)
-{
- GList *node;
-
- g_return_val_if_fail(IS_CAL_BACKEND_DB(cbdb), NULL);
- g_return_val_if_fail(cbdb->priv != NULL, NULL);
- g_return_val_if_fail(db != NULL, NULL);
-
- for (node = g_list_first(cbdb->priv->cursors); node != NULL; node = g_list_next(node)) {
- CalBackendDBCursor* cursor = (CalBackendDBCursor *) node->data;
-
- if (cursor && cursor->parent_db == db)
- return cursor;
- }
-
- return NULL; /* not found */
-}
-
-/* finds a record in a cursor by its ID */
-static DBT *
-find_record_by_id (CalBackendDBCursor *cursor, const gchar *id)
-{
- GList *node;
-
- g_return_val_if_fail(cursor != NULL, NULL);
- g_return_val_if_fail(id != NULL, NULL);
-
-
- for (node = g_list_first(cursor->keys); node != NULL; node = g_list_next(node)) {
- DBT *key;
-
- key = (DBT *) node->data;
- if (key && !strcmp(key->data, id)) {
- GList *tmp;
-
- tmp = g_list_nth(cursor->data, g_list_position(cursor->keys, node));
- if (tmp)
- return (DBT *) tmp->data;
- return NULL; /* no data associated with this key */
- }
- }
-
- return NULL; /* not found */
-}
-
-/* start a new transaction */
-static DB_TXN *
-begin_transaction (CalBackendDB *cbdb)
-{
- DB_TXN *tid;
- gint ret;
-
- g_return_val_if_fail(IS_CAL_BACKEND_DB(cbdb), NULL);
- g_return_val_if_fail(cbdb->priv != NULL, NULL);
-
- if ((ret = txn_begin(cbdb->priv->environment, NULL, &tid, 0)) != 0) {
- /* TODO: error logging */
- return NULL;
- }
-
- return tid;
-}
-
-/* finish successfully a transaction */
-static void
-commit_transaction (DB_TXN *tid)
-{
- gint ret;
-
- g_return_if_fail(tid != NULL);
-
- if ((ret = txn_commit(tid, 0)) != 0) {
- /* TODO: error logging? */
- }
-}
-
-/* abort a transaction */
-static void
-rollback_transaction (DB_TXN *tid)
-{
- gint ret;
-
- g_return_if_fail(tid != NULL);
-
- if ((ret = txn_abort(tid)) != 0) {
- /* TODO: error logging? */
- }
-}
-
-/*
- * Calendar backend methods
- */
-
-/* get_uri handler for the DB backend */
-static GnomeVFSURI *
-cal_backend_db_get_uri (CalBackend *backend)
-{
- CalBackendDB *cbdb;
-
- cbdb = CAL_BACKEND_DB(backend);
- g_return_val_if_fail(IS_CAL_BACKEND_DB(cbdb), NULL);
- g_return_val_if_fail(cbdb->priv != NULL, NULL);
-
- return cbdb->priv->uri;
-}
-
-/* callback used when a Cal is destroyed */
-static void
-destroy_cal_cb (GtkObject *object, gpointer data)
-{
- Cal *cal;
- Cal *tmp_cal;
- CalBackendDB *cbdb;
- GList *node;
-
- cal = CAL(object);
- cbdb = CAL_BACKEND_DB(data);
-
- g_return_if_fail(IS_CAL_BACKEND_DB(cbdb));
- g_return_if_fail(cbdb->priv != NULL);
-
- /* find the Cal in the list of clients */
- for (node = cbdb->priv->clients; node != NULL; node = g_list_next(node)) {
- tmp_cal = CAL(node->data);
- if (tmp_cal == cal)
- break;
- }
-
- if (node) {
- /* disconnect this Cal */
- cbdb->priv->clients = g_list_remove_link(cbdb->priv->clients, node);
- g_list_free_1(node);
-
- /* when all clients go away, notify the parent factory about it so that
- * it may decide to kill the backend or not.
- */
- if (!cbdb->priv->clients)
- cal_backend_last_client_gone(CAL_BACKEND(cbdb));
- }
-}
-
-/* add_cal_handler for the DB backend */
-static void
-cal_backend_db_add_cal (CalBackend *backend, Cal *cal)
-{
- CalBackendDB *cbdb;
-
- cbdb = CAL_BACKEND_DB(backend);
- g_return_if_fail(IS_CAL_BACKEND_DB(cbdb));
- g_return_if_fail(cbdb->priv != NULL);
- g_return_if_fail(IS_CAL(cal));
-
- /* we do not keep a reference to the Cal since the calendar user agent
- * owns it
- */
- gtk_signal_connect(GTK_OBJECT(cal),
- "destroy",
- GTK_SIGNAL_FUNC(destroy_cal_cb),
- backend);
-
- cbdb->priv->clients = g_list_prepend(cbdb->priv->clients, (gpointer) cal);
-}
-
-/* database file initialization */
-static gboolean
-open_database_file (CalBackendDB *cbdb, const gchar *str_uri, gboolean only_if_exists)
-{
- gint ret;
- struct stat sb;
- gchar *dir;
-
- g_return_val_if_fail(IS_CAL_BACKEND_DB(cbdb), FALSE);
- g_return_val_if_fail(cbdb->priv != NULL, FALSE);
- g_return_val_if_fail(cbdb->priv->objects_db != NULL, FALSE);
- g_return_val_if_fail(cbdb->priv->history_db != NULL, FALSE);
- g_return_val_if_fail(str_uri != NULL, FALSE);
-
- /* initialize DB environment (for transactions) */
- dir = g_strdup_printf(ENVIRONMENT_DIRECTORY, g_get_home_dir());
- if (stat(dir, &sb) != 0) {
-
- /* if the directory exists, we're done, since DB will fail if it's the
- * wrong one. If it does not exist, create the environment */
- if (mkdir(dir, S_IRWXU) != 0) {
- g_free((gpointer) dir);
- return FALSE;
- }
-
- /* create the environment handle */
- if ((ret = db_env_create(&cbdb->priv->environment, 0)) != 0) {
- g_free((gpointer) dir);
- return FALSE;
- }
-
- cbdb->priv->environment->set_errpfx(cbdb->priv->environment, "cal-backend-db");
-
- /* open the transactional environment */
- if ((ret = cbdb->priv->environment->open(cbdb->priv->environment,
- ENVIRONMENT_DIRECTORY,
- DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG |
- DB_INIT_MPOOL | DB_INIT_TXN |
- DB_RECOVER | DB_THREAD,
- S_IRUSR | S_IWUSR)) != 0) {
- g_free((gpointer) dir);
- return FALSE;
- }
- }
-
- g_free((gpointer) dir);
-
- /* open/create objects database into given file */
- if ((ret = db_create(&cbdb->priv->objects_db, cbdb->priv->environment, 0)) != 0
- || (ret = db_create(&cbdb->priv->history_db, cbdb->priv->environment, 0)) != 0) {
- return FALSE;
- }
-
- if (only_if_exists) {
- ret = cbdb->priv->objects_db->open(cbdb->priv->objects_db,
- str_uri,
- "calendar_objects",
- DB_HASH,
- DB_THREAD,
- 0644);
- }
- else {
- ret = cbdb->priv->objects_db->open(cbdb->priv->objects_db,
- str_uri,
- "calendar_objects",
- DB_HASH,
- DB_CREATE | DB_THREAD,
- 0644);
- }
- if (ret == 0) {
- /* now, open the history database */
- ret = cbdb->priv->history_db->open(cbdb->priv->history_db,
- str_uri,
- "calendar_history",
- DB_BTREE,
- DB_CREATE | DB_THREAD,
- 0644);
- if (ret == 0) return TRUE;
-
- /* close objects database on error */
- cbdb->priv->objects_db->close(cbdb->priv->objects_db, 0);
- }
-
- return FALSE;
-}
-
-/* open handler for the DB backend */
-static CalBackendOpenStatus
-cal_backend_db_open (CalBackend *backend, GnomeVFSURI *uri, gboolean only_if_exists)
-{
- CalBackendDB *cbdb;
- gchar *str_uri;
-
- cbdb = CAL_BACKEND_DB(backend);
- g_return_val_if_fail(IS_CAL_BACKEND_DB(cbdb), CAL_BACKEND_OPEN_ERROR);
- g_return_val_if_fail(cbdb->priv != NULL, CAL_BACKEND_OPEN_ERROR);
- g_return_val_if_fail(uri != NULL, CAL_BACKEND_OPEN_ERROR);
- g_return_val_if_fail(cbdb->priv->objects_db == NULL, CAL_BACKEND_OPEN_ERROR);
-
- /* open the given URI */
- if (!gnome_vfs_uri_is_local(uri))
- return CAL_BACKEND_OPEN_ERROR;
- str_uri = gnome_vfs_uri_to_string(uri,
- (GNOME_VFS_URI_HIDE_USER_NAME
- | GNOME_VFS_URI_HIDE_PASSWORD
- | GNOME_VFS_URI_HIDE_HOST_NAME
- | GNOME_VFS_URI_HIDE_HOST_PORT
- | GNOME_VFS_URI_HIDE_TOPLEVEL_METHOD));
-
- /* open database file */
- if (!open_database_file(cbdb, (const gchar *) str_uri, only_if_exists)) {
- g_free((gpointer) str_uri);
- return CAL_BACKEND_OPEN_ERROR;
- }
-
- gnome_vfs_uri_ref(uri);
- cbdb->priv->uri = uri;
- g_free((gpointer) str_uri);
-
- return CAL_BACKEND_OPEN_SUCCESS;
-}
-
-/* is_loaded handler for the DB backend */
-static gboolean
-cal_backend_db_is_loaded (CalBackend *backend)
-{
- CalBackendDB *cbdb;
-
- cbdb = CAL_BACKEND_DB (backend);
-
- return (cbdb->priv->uri != NULL);
-}
-
-/* get_n_objects handler for the DB backend */
-static int
-cal_backend_db_get_n_objects (CalBackend *backend, CalObjType type)
-{
- CalBackendDB *cbdb;
- CalBackendDBCursor *cursor;
- int total_count = 0;
-
- cbdb = CAL_BACKEND_DB(backend);
- g_return_val_if_fail(IS_CAL_BACKEND_DB(cbdb), -1);
- g_return_val_if_fail(cbdb->priv != NULL, -1);
-
- /* open the cursor */
- cursor = open_cursor(cbdb, cbdb->priv->objects_db);
- if (cursor) {
- GList *node;
-
- /* we traverse all data, to check for each object's type */
- for (node = g_list_first(cursor->data); node != NULL; node = g_list_next(node)) {
- icalcomponent *icalcomp;
- DBT *data = (DBT *) node->data;
-
- icalcomp = icalparser_parse_string((char *) data->data);
- if (icalcomp) {
- switch (icalcomponent_isa(icalcomp)) {
- case ICAL_VEVENT_COMPONENT :
- if (type & CALOBJ_TYPE_EVENT)
- total_count++;
- break;
- case ICAL_VTODO_COMPONENT :
- if (type & CALOBJ_TYPE_TODO)
- total_count++;
- break;
- case ICAL_VJOURNAL_COMPONENT :
- if (type & CALOBJ_TYPE_JOURNAL)
- total_count++;
- break;
- default :
- break;
- }
- icalcomponent_free(icalcomp);
- }
- }
- close_cursor(cbdb, cursor);
- }
-
- return total_count;
-}
-
-/* get_object handler for the DB backend */
-static char *
-cal_backend_db_get_object (CalBackend *backend, const char *uid)
-{
- CalBackendDB *cbdb;
- gint ret;
- DBT key;
- DBT data;
-
- cbdb = CAL_BACKEND_DB(backend);
- g_return_val_if_fail(IS_CAL_BACKEND_DB(cbdb), NULL);
- g_return_val_if_fail(cbdb->priv != NULL, NULL);
- g_return_val_if_fail(cbdb->priv->objects_db != NULL, NULL);
- g_return_val_if_fail(uid != NULL, NULL);
-
- memset(&key, 0, sizeof(key));
- memset(&data, 0, sizeof(data));
- key.data = (void *) uid;
- key.size = strlen(uid); // + 1
-
- /* read record from database */
- if ((ret = cbdb->priv->objects_db->get(cbdb->priv->objects_db,
- NULL,
- &key,
- &data,
- 0)) == 0) {
- gchar *str = g_strdup((gchar *) data.data);
- return str;
- }
-
- return NULL;
-}
-
-/* get_type_by_uid handler for the DB backend */
-static CalObjType
-cal_backend_db_get_type_by_uid (CalBackend *backend, const char *uid)
-{
- CalBackendDB *cbdb;
- DBT key;
- DBT data;
- gint ret;
-
- cbdb = CAL_BACKEND_DB(backend);
- g_return_val_if_fail(IS_CAL_BACKEND_DB(cbdb), CAL_COMPONENT_NO_TYPE);
- g_return_val_if_fail(cbdb->priv != NULL, CAL_COMPONENT_NO_TYPE);
- g_return_val_if_fail(cbdb->priv->objects_db != NULL, CAL_COMPONENT_NO_TYPE);
- g_return_val_if_fail(uid != NULL, CAL_COMPONENT_NO_TYPE);
-
- memset(&key, 0, sizeof(key));
- memset(&data, 0, sizeof(data));
- key.data = (void *) uid;
- key.size = strlen(uid); // + 1
-
- /* read record from database */
- if ((ret = cbdb->priv->objects_db->get(cbdb->priv->objects_db,
- NULL,
- &key,
- &data,
- 0)) == 0) {
- icalcomponent *icalcomp = icalparser_parse_string((char *) data.data);
- if (icalcomp) {
- CalObjType type;
-
- switch (icalcomponent_isa(icalcomp)) {
- case ICAL_VEVENT_COMPONENT :
- type = CALOBJ_TYPE_EVENT;
- break;
- case ICAL_VTODO_COMPONENT :
- type = CALOBJ_TYPE_TODO;
- break;
- case ICAL_VJOURNAL_COMPONENT :
- type = CALOBJ_TYPE_JOURNAL;
- break;
- default :
- type = CAL_COMPONENT_NO_TYPE;
- }
-
- icalcomponent_free(icalcomp);
- return type;
- }
- }
-
- return CAL_COMPONENT_NO_TYPE;
-}
-
-static GList *
-add_uid_if_match (GList *list, CalBackendDBCursor *cursor, GList *data_node, CalObjType type)
-{
- DBT *data;
-
- g_return_val_if_fail(cursor != NULL, list);
- g_return_val_if_fail(data_node != NULL, list);
-
- data = (DBT *) data_node->data;
- if (data) {
- icalcomponent *icalcomp;
- gchar *uid = NULL;
-
- icalcomp = icalparser_parse_string(data->data);
- if (!icalcomp) return list;
-
- switch (icalcomponent_isa(icalcomp)) {
- case ICAL_VEVENT_COMPONENT :
- if (type & CALOBJ_TYPE_EVENT)
- uid = (gchar *) icalcomponent_get_uid(icalcomp);
- break;
- case ICAL_VTODO_COMPONENT :
- if (type & CALOBJ_TYPE_TODO)
- uid = (gchar *) icalcomponent_get_uid(icalcomp);
- break;
- case ICAL_VJOURNAL_COMPONENT :
- if (type & CALOBJ_TYPE_JOURNAL)
- uid = (gchar *) icalcomponent_get_uid(icalcomp);
- break;
- default :
- uid = NULL;
- }
-
- if (uid)
- list = g_list_prepend(list, g_strdup(uid));
- icalcomponent_free(icalcomp);
- }
-
- return list;
-}
-
-/* get_uids handler for the DB backend */
-static GList *
-cal_backend_db_get_uids (CalBackend *backend, CalObjType type)
-{
- CalBackendDB *cbdb;
- GList *list = NULL;
- CalBackendDBCursor *cursor;
-
- cbdb = CAL_BACKEND_DB(backend);
- g_return_val_if_fail(IS_CAL_BACKEND_DB(cbdb), NULL);
- g_return_val_if_fail(cbdb->priv != NULL, NULL);
- g_return_val_if_fail(cbdb->priv->objects_db != NULL, NULL);
-
- /* open cursor */
- cursor = open_cursor(cbdb, cbdb->priv->objects_db);
- if (cursor) {
- GList *node;
-
- /* we traverse all data, to check for each object's type */
- for (node = g_list_first(cursor->data); node != NULL; node = g_list_next(node)) {
- list = add_uid_if_match(list, cursor, node, type);
- }
- close_cursor(cbdb, cursor);
- }
-
- return list;
-}
-
-/* callback used from cal_recur_generate_instances(): adds the component's UID to
- * our hash table
- */
-static gboolean
-add_instance (CalComponent *comp, time_t start, time_t end, gpointer data)
-{
- GHashTable *uid_hash;
- const char *uid;
- const char *old_uid;
-
- uid_hash = data;
-
- cal_component_get_uid(comp, &uid);
-
- old_uid = g_hash_table_lookup(uid_hash, uid);
- if (old_uid)
- return FALSE;
-
- g_hash_table_insert(uid_hash, (char *) uid, NULL);
- return FALSE;
-}
-
-/* creates the list of UIDs in the given range */
-static void
-get_instances_in_range (GHashTable *uid_hash,
- CalBackendDBCursor *cursor,
- CalObjType type,
- time_t start,
- time_t end)
-{
- GList *node;
-
- g_return_if_fail(uid_hash != NULL);
- g_return_if_fail(cursor != NULL);
-
- for (node = g_list_first(cursor->data); node != NULL; node = g_list_next(node)) {
- DBT *data;
- icalcomponent *icalcomp;
-
- data = (DBT *) node->data;
- if (data) {
- icalcomp = icalparser_parse_string((char *) data->data);
- if (icalcomp) {
- CalComponent *comp = cal_component_new();
- cal_component_set_icalcomponent(comp, icalcomp);
-
- switch (icalcomponent_isa(icalcomp)) {
- case ICAL_VEVENT_COMPONENT :
- if (type & CALOBJ_TYPE_EVENT)
- cal_recur_generate_instances(comp,
- start,
- end,
- add_instance,
- uid_hash);
- break;
- case ICAL_VTODO_COMPONENT :
- if (type & CALOBJ_TYPE_TODO)
- cal_recur_generate_instances(comp,
- start,
- end,
- add_instance,
- uid_hash);
- break;
- case ICAL_VJOURNAL_COMPONENT :
- if (type & CALOBJ_TYPE_JOURNAL)
- cal_recur_generate_instances(comp,
- start,
- end,
- add_instance,
- uid_hash);
- break;
- default :
- break;
- }
-
- gtk_object_unref(GTK_OBJECT(comp));
- icalcomponent_free(icalcomp);
- }
- }
- }
-}
-
-/* callback used from g_hash_table_foreach: adds a UID from the hash table to our list */
-static void
-add_uid_to_list (gpointer key, gpointer value, gpointer data)
-{
- GList **list;
- const char *uid;
-
- list = (GList **) data;
-
- uid = (const char *) key;
- *list = g_list_prepend(*list, (gpointer) g_strdup(uid));
-}
-
-/* get_objects_in_range handler for the DB backend */
-static GList *
-cal_backend_db_get_objects_in_range (CalBackend *backend,
- CalObjType type,
- time_t start,
- time_t end)
-{
- CalBackendDB *cbdb;
- GList *list = NULL;
- CalBackendDBCursor *cursor;
-
- cbdb = CAL_BACKEND_DB(backend);
- g_return_val_if_fail(IS_CAL_BACKEND_DB(cbdb), NULL);
- g_return_val_if_fail(cbdb->priv != NULL, NULL);
-
- /* open cursor */
- cursor = open_cursor(cbdb, cbdb->priv->objects_db);
- if (cursor) {
- GHashTable *uid_hash;
-
- /* build the hash table */
- uid_hash = g_hash_table_new(g_str_hash, g_str_equal);
- get_instances_in_range(uid_hash, cursor, type, start, end);
-
- /* build the list to be returned from the hash table */
- g_hash_table_foreach(uid_hash, add_uid_to_list, &list);
- g_hash_table_destroy(uid_hash);
-
- close_cursor(cbdb, cursor);
- }
-
- return list;
-}
-
-/* get_changes handler for the DB backend */
-static GNOME_Evolution_Calendar_CalObjChangeSeq *
-cal_backend_db_get_changes (CalBackend *backend, CalObjType type, const char *change_id)
-{
- CalBackendDB *cbdb;
-
- cbdb = CAL_BACKEND_DB(backend);
- g_return_val_if_fail(IS_CAL_BACKEND_DB(cbdb), NULL);
- g_return_val_if_fail(cbdb->priv != NULL, NULL);
-
- return NULL;
-}
-
-/* computes the range of time in which recurrences should be generated for a
- * component in order to compute alarm trigger times.
- */
-static void
-compute_alarm_range (CalComponent *comp,
- GList *alarm_uids,
- time_t start,
- time_t end,
- time_t *alarm_start,
- time_t *alarm_end)
-{
- GList *l;
-
- *alarm_start = start;
- *alarm_end = end;
-
- for (l = alarm_uids; l; l = l->next) {
- const char *auid;
- CalComponentAlarm *alarm;
- CalAlarmTrigger trigger;
- struct icaldurationtype *dur;
- time_t dur_time;
-
- auid = l->data;
- alarm = cal_component_get_alarm (comp, auid);
- g_assert (alarm != NULL);
-
- cal_component_alarm_get_trigger (alarm, &trigger);
- cal_component_alarm_free (alarm);
-
- switch (trigger.type) {
- case CAL_ALARM_TRIGGER_NONE:
- case CAL_ALARM_TRIGGER_ABSOLUTE:
- continue;
- case CAL_ALARM_TRIGGER_RELATIVE_START:
- case CAL_ALARM_TRIGGER_RELATIVE_END:
- dur = &trigger.u.rel_duration;
- dur_time = icaldurationtype_as_int (*dur);
-
- if (dur->is_neg)
- *alarm_end = MAX (*alarm_end, end + dur_time);
- else
- *alarm_start = MIN (*alarm_start, start - dur_time);
-
- break;
- default:
- g_assert_not_reached ();
- }
- }
-
- g_assert (*alarm_start <= *alarm_end);
-}
-
-/* closure data to generate alarm occurrences */
-struct alarm_occurrence_data {
- /* these are the info we have */
- GList *alarm_uids;
- time_t start;
- time_t end;
-
- /* this is what we compute */
- GSList *triggers;
- int n_triggers;
-};
-
-/* callback used from cal_recur_generate_instances(); generates triggers for all
- * of a component's RELATIVE alarms.
- */
-static gboolean
-add_alarm_occurrences_cb (CalComponent *comp, time_t start, time_t end, gpointer data)
-{
- struct alarm_occurrence_data *aod;
- GList *l;
-
- aod = data;
-
- for (l = aod->alarm_uids; l; l = l->next) {
- const char *auid;
- CalComponentAlarm *alarm;
- CalAlarmTrigger trigger;
- struct icaldurationtype *dur;
- time_t dur_time;
- time_t occur_time, trigger_time;
- CalAlarmInstance *instance;
-
- auid = l->data;
- alarm = cal_component_get_alarm (comp, auid);
- g_assert (alarm != NULL);
-
- cal_component_alarm_get_trigger (alarm, &trigger);
- cal_component_alarm_free (alarm);
-
- if (trigger.type != CAL_ALARM_TRIGGER_RELATIVE_START
- && trigger.type != CAL_ALARM_TRIGGER_RELATIVE_END)
- continue;
-
- dur = &trigger.u.rel_duration;
- dur_time = icaldurationtype_as_int (*dur);
-
- if (trigger.type == CAL_ALARM_TRIGGER_RELATIVE_START)
- occur_time = start;
- else
- occur_time = end;
-
- if (dur->is_neg)
- trigger_time = occur_time - dur_time;
- else
- trigger_time = occur_time + dur_time;
-
- if (trigger_time < aod->start || trigger_time >= aod->end)
- continue;
-
- instance = g_new (CalAlarmInstance, 1);
- instance->auid = auid;
- instance->trigger = trigger_time;
- instance->occur = occur_time;
-
- aod->triggers = g_slist_prepend (aod->triggers, instance);
- aod->n_triggers++;
- }
-
- return TRUE;
-}
-
-/* generates the absolute triggers for a component */
-static void
-generate_absolute_triggers (CalComponent *comp, struct alarm_occurrence_data *aod)
-{
- GList *l;
-
- for (l = aod->alarm_uids; l; l = l->next) {
- const char *auid;
- CalComponentAlarm *alarm;
- CalAlarmTrigger trigger;
- time_t abs_time;
- CalAlarmInstance *instance;
-
- auid = l->data;
- alarm = cal_component_get_alarm (comp, auid);
- g_assert (alarm != NULL);
-
- cal_component_alarm_get_trigger (alarm, &trigger);
- cal_component_alarm_free (alarm);
-
- if (trigger.type != CAL_ALARM_TRIGGER_ABSOLUTE)
- continue;
-
- abs_time = icaltime_as_timet (trigger.u.abs_time);
-
- if (abs_time < aod->start || abs_time >= aod->end)
- continue;
-
- instance = g_new (CalAlarmInstance, 1);
- instance->auid = auid;
- instance->trigger = abs_time;
- instance->occur = abs_time; /* No particular occurrence, so just use the same time */
-
- aod->triggers = g_slist_prepend (aod->triggers, instance);
- aod->n_triggers++;
- }
-}
-
-/* compares two alarm instances; called from g_slist_sort() */
-static gint
-compare_alarm_instance (gconstpointer a, gconstpointer b)
-{
- const CalAlarmInstance *aia, *aib;
-
- aia = a;
- aib = b;
-
- if (aia->trigger < aib->trigger)
- return -1;
- else if (aia->trigger > aib->trigger)
- return 1;
- else
- return 0;
-}
-
-/* generates alarm instances for a calendar component. Returns the instances
- * structure, or NULL if no alarm instances occurred in the specified time
- * range.
- */
-static CalComponentAlarms *
-generate_alarms_for_comp (CalComponent *comp, time_t start, time_t end)
-{
- CalComponentAlarms *alarms = NULL;
- GList *alarm_uids;
- time_t alarm_start, alarm_end;
- struct alarm_occurrence_data aod;
-
- g_return_val_if_fail(IS_CAL_COMPONENT(comp), NULL);
-
- if (!cal_component_has_alarms(comp))
- return NULL;
-
- alarm_uids = cal_component_get_alarm_uids(comp);
- compute_alarm_range(comp, alarm_uids, start, end, &alarm_start, &alarm_end);
-
- aod.alarm_uids = alarm_uids;
- aod.start = start;
- aod.end = end;
- aod.triggers = NULL;
- aod.n_triggers = 0;
- cal_recur_generate_instances(comp, alarm_start, alarm_end, add_alarm_occurrences_cb, &aod);
-
- /* we add the ABSOLUTE triggers separately */
- generate_absolute_triggers(comp, &aod);
-
- if (aod.n_triggers == 0)
- return NULL;
-
- /* create the component alarm instances structure */
- alarms = g_new (CalComponentAlarms, 1);
- alarms->comp = comp;
- gtk_object_ref (GTK_OBJECT (alarms->comp));
- alarms->alarms = g_slist_sort (aod.triggers, compare_alarm_instance);
-
- return alarms;
-}
-
-/* retrieve list of alarms */
-static GSList *
-get_list_of_alarms (CalBackendDBCursor *cursor, time_t start, time_t end)
-{
- GSList *list = NULL;
- GList *node;
-
- g_return_val_if_fail(cursor != NULL, NULL);
-
- for (node = g_list_first(cursor->data); node != NULL; node = g_list_next(node)) {
- icalcomponent *icalcomp;
- icalcomponent_kind kind;
- DBT *data;
-
- data = (DBT *) node->data;
- if (data) {
- icalcomp = icalparser_parse_string((char *) data->data);
- if (icalcomp) {
- /* per RFC 2445, only VEVENTs and VTODOs can have alarms */
- kind = icalcomponent_isa(icalcomp);
- if (kind == ICAL_VEVENT_COMPONENT || kind == ICAL_VTODO_COMPONENT) {
- CalComponent *comp;
- CalComponentAlarms *alarms;
-
- /* create the CalComponent to compute the alarms */
- comp = cal_component_new();
- cal_component_set_icalcomponent(comp, icalcomp);
-
- alarms = generate_alarms_for_comp(comp, start, end);
- if (alarms)
- list = g_slist_prepend(list, (gpointer) alarms);
-
- gtk_object_unref(GTK_OBJECT(comp));
- }
-
- icalcomponent_free(icalcomp);
- }
- }
- }
-
- return list;
-}
-
-/* fills a CORBA sequence of alarm instances */
-static void
-fill_alarm_instances_seq (GNOME_Evolution_Calendar_CalAlarmInstanceSeq *seq, GSList *alarms)
-{
- int n_alarms;
- GSList *l;
- int i;
-
- n_alarms = g_slist_length(alarms);
-
- CORBA_sequence_set_release(seq, TRUE);
- seq->_length = n_alarms;
- seq->_buffer = CORBA_sequence_GNOME_Evolution_Calendar_CalAlarmInstance_allocbuf(n_alarms);
-
- for (l = alarms, i = 0; l != NULL; l = l->next, i++) {
- CalAlarmInstance *instance;
- GNOME_Evolution_Calendar_CalAlarmInstance *corba_instance;
-
- instance = (CalAlarmInstance *) l->data;
- corba_instance = seq->_buffer + i;
-
- corba_instance->auid = CORBA_string_dup(instance->auid);
- corba_instance->trigger = (long) instance->trigger;
- corba_instance->occur = (long) instance->occur;
- }
-}
-
-/* get_alarms_in_range handler for the DB backend */
-static GNOME_Evolution_Calendar_CalComponentAlarmsSeq *
-cal_backend_db_get_alarms_in_range (CalBackend *backend, time_t start, time_t end)
-{
- CalBackendDB *cbdb;
- CalBackendDBCursor *cursor;
- gint number_of_alarms;
- GSList *alarm_list;
- GSList *node;
- gint i;
- GNOME_Evolution_Calendar_CalComponentAlarmsSeq *seq = NULL;
-
- cbdb = CAL_BACKEND_DB(backend);
- g_return_val_if_fail(IS_CAL_BACKEND_DB(cbdb), NULL);
- g_return_val_if_fail(cbdb->priv != NULL, NULL);
- g_return_val_if_fail (start != -1 && end != -1, NULL);
- g_return_val_if_fail (start <= end, NULL);
-
- /* open cursor */
- cursor = open_cursor(cbdb, cbdb->priv->objects_db);
- if (cursor) {
- alarm_list = get_list_of_alarms(cursor, start, end);
- number_of_alarms = g_slist_length(alarm_list);
-
- /* create the CORBA sequence */
- seq = GNOME_Evolution_Calendar_CalComponentAlarmsSeq__alloc();
- CORBA_sequence_set_release(seq, TRUE);
- seq->_length = number_of_alarms;
- seq->_buffer = CORBA_sequence_GNOME_Evolution_Calendar_CalComponentAlarms_allocbuf(
- number_of_alarms);
-
- /* populate CORBA sequence */
- for (node = alarm_list, i = 0; node != NULL; node = node->next, i++) {
- CalComponentAlarms *alarms;
- gchar *comp_str;
-
- alarms = (CalComponentAlarms *) node->data;
-
- comp_str = cal_component_get_as_string (alarms->comp);
- seq->_buffer[i].calobj = CORBA_string_dup(comp_str);
- g_free((gpointer) comp_str);
-
- fill_alarm_instances_seq(&seq->_buffer[i].alarms, alarms->alarms);
-
- cal_component_alarms_free(alarms);
- }
-
- g_slist_free(alarm_list);
- close_cursor(cbdb, cursor);
- }
-
- return seq;
-}
-
-/* get_alarms_for_object handler for the DB backend */
-static GNOME_Evolution_Calendar_CalComponentAlarms *
-cal_backend_db_get_alarms_for_object (CalBackend *backend,
- const char *uid,
- time_t start,
- time_t end,
- gboolean *object_found)
-{
- CalBackendDB *cbdb;
- CalBackendDBCursor *cursor;
- GNOME_Evolution_Calendar_CalComponentAlarms *corba_alarms = NULL;
- DBT *data;
- gchar *comp_str;
- CalComponentAlarms *alarms;
-
- cbdb = CAL_BACKEND_DB(backend);
- g_return_val_if_fail(IS_CAL_BACKEND_DB(cbdb), NULL);
- g_return_val_if_fail(cbdb->priv != NULL, NULL);
- g_return_val_if_fail(uid != NULL, NULL);
- g_return_val_if_fail(start != -1 && end != -1, NULL);
- g_return_val_if_fail(start <= end, NULL);
- g_return_val_if_fail(object_found != NULL, NULL);
-
- *object_found = FALSE;
-
- /* open the cursor */
- cursor = open_cursor(cbdb, cbdb->priv->objects_db);
- if (cursor) {
- data = find_record_by_id(cursor, uid);
- if (data) {
- icalcomponent *icalcomp;
- CalComponent *comp;
-
- *object_found = TRUE;
-
- comp_str = (gchar *) data->data;
-
- icalcomp = icalparser_parse_string(comp_str);
- if (!icalcomp) {
- close_cursor(cbdb, cursor);
- return NULL;
- }
-
- comp = cal_component_new();
- cal_component_set_icalcomponent(comp, icalcomp);
-
- /* create the CORBA alarms */
- corba_alarms = GNOME_Evolution_Calendar_CalComponentAlarms__alloc();
- corba_alarms->calobj = CORBA_string_dup (comp_str);
-
- /* populate the CORBA sequence */
- alarms = generate_alarms_for_comp(comp, start, end);
- if (alarms) {
- fill_alarm_instances_seq(&corba_alarms->alarms, alarms->alarms);
- cal_component_alarms_free(alarms);
- }
- else
- fill_alarm_instances_seq(&corba_alarms->alarms, NULL);
-
- gtk_object_unref(GTK_OBJECT(comp));
- icalcomponent_free(icalcomp);
- }
-
- close_cursor(cbdb, cursor);
- }
-
- return corba_alarms;
-}
-
-/* do notifications to Cal clients */
-static void
-do_notify (CalBackendDB *cbdb, void (*notify_fn)(Cal *, gchar *), const gchar *uid)
-{
- GList *node;
-
- g_return_if_fail(IS_CAL_BACKEND_DB(cbdb));
- g_return_if_fail(cbdb->priv != NULL);
- g_return_if_fail(notify_fn != NULL);
- g_return_if_fail(uid != NULL);
-
- /* FIXME: do notification asynchronously */
- for (node = g_list_first(cbdb->priv->clients); node != NULL; node = g_list_next(node)) {
- Cal *cal;
-
- cal = CAL(node->data);
- (*notify_fn)(cal, (gpointer) uid);
- }
-}
-
-/* adds a record to the history database */
-static gboolean
-add_history (CalBackendDB *cbdb, DB_TXN *tid, const gchar *uid, const gchar *calobj)
-{
- DBT key;
- DBT new_data;
- gint ret;
-
- g_return_val_if_fail(IS_CAL_BACKEND_DB(cbdb), FALSE);
- g_return_val_if_fail(uid != NULL, FALSE);
- g_return_val_if_fail(calobj != NULL, FALSE);
-
- /* fill in DBT structures */
- memset(&key, 0, sizeof(key));
- key.data = (void *) uid;
- key.size = strlen(uid); // + 1
-
- memset(&new_data, 0, sizeof(new_data));
- new_data.data = (void *) calobj;
- new_data.size = strlen(calobj); // + 1
-
- /* add the new record to the database */
- if ((ret = cbdb->priv->history_db->put(cbdb->priv->objects_db,
- tid,
- &key,
- &new_data,
- 0)) != 0) {
- return FALSE;
- }
-
- return TRUE;
-}
-
-/* update_object handler for the DB backend */
-static gboolean
-cal_backend_db_update_object (CalBackend *backend, const char *uid, const char *calobj)
-{
- CalBackendDB *cbdb;
- DB_TXN *tid;
- DBT key;
- DBT new_data;
- gint ret;
-
- cbdb = CAL_BACKEND_DB(backend);
- g_return_val_if_fail(IS_CAL_BACKEND_DB(cbdb), FALSE);
- g_return_val_if_fail(cbdb->priv != NULL, FALSE);
- g_return_val_if_fail(cbdb->priv->objects_db != NULL, FALSE);
- g_return_val_if_fail(uid != NULL, FALSE);
- g_return_val_if_fail(calobj != NULL, FALSE);
-
- /* start transaction */
- tid = begin_transaction(cbdb);
- if (!tid)
- return FALSE;
-
- memset(&key, 0, sizeof(key));
- key.data = (void *) uid;
- key.size = strlen(uid); // + 1
-
- memset(&new_data, 0, sizeof(new_data));
- new_data.data = (void *) calobj;
- new_data.size = strlen(calobj); // + 1
-
- if ((ret = cbdb->priv->objects_db->put(cbdb->priv->objects_db,
- tid,
- &key,
- &new_data,
- 0)) != 0) {
- rollback_transaction(tid);
- return FALSE;
- }
-
- if (!add_history(cbdb, tid, uid, calobj)) {
- rollback_transaction(tid);
- return FALSE;
- }
- commit_transaction(tid);
-
- cal_backend_obj_updated (CAL_BACKEND (cbdb), uid);
- do_notify(cbdb, cal_notify_update, uid);
- return TRUE;
-}
-
-/* remove_object handler for the DB backend */
-static gboolean
-cal_backend_db_remove_object (CalBackend *backend, const char *uid)
-{
- CalBackendDB *cbdb;
- DB_TXN *tid;
- DBT key;
- gint ret;
-
- cbdb = CAL_BACKEND_DB(backend);
- g_return_val_if_fail(IS_CAL_BACKEND_DB(cbdb), FALSE);
- g_return_val_if_fail(cbdb->priv != NULL, FALSE);
- g_return_val_if_fail(uid != NULL, FALSE);
-
- memset(&key, 0, sizeof(key));
- key.data = (void *) uid;
- key.size = strlen(uid); // + 1
-
- /* start transaction */
- tid = begin_transaction(cbdb);
- if (!tid)
- return FALSE;
-
- /* remove record from database */
- if ((ret = cbdb->priv->objects_db->del(cbdb->priv->objects_db, tid, &key, 0)) != 0) {
- rollback_transaction(tid);
- return FALSE;
- }
-
- /* TODO: update history database */
- commit_transaction(tid);
-
- cal_backend_obj_removed (CAL_BACKEND (cbdb), uid);
- do_notify(cbdb, cal_notify_remove, uid);
-
- return TRUE;
-}
diff --git a/calendar/pcs/cal-backend-db.h b/calendar/pcs/cal-backend-db.h
deleted file mode 100644
index c73dbb5a83..0000000000
--- a/calendar/pcs/cal-backend-db.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Evolution calendar - iCalendar DB backend
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Author: Rodrigo Moya <rodrigo@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef CAL_BACKEND_DB_H
-#define CAL_BACKEND_DB_H
-
-#include "cal-backend.h"
-
-BEGIN_GNOME_DECLS
-
-#define CAL_BACKEND_DB_TYPE (cal_backend_db_get_type ())
-#define CAL_BACKEND_DB(obj) (GTK_CHECK_CAST ((obj), CAL_BACKEND_DB_TYPE, \
- CalBackendDB))
-#define CAL_BACKEND_DB_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), CAL_BACKEND_DB_TYPE, \
- CalBackendDBClass))
-#define IS_CAL_BACKEND_DB(obj) (GTK_CHECK_TYPE ((obj), CAL_BACKEND_DB_TYPE))
-#define IS_CAL_BACKEND_DB_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), CAL_BACKEND_DB_TYPE))
-
-typedef struct _CalBackendDB CalBackendDB;
-typedef struct _CalBackendDBClass CalBackendDBClass;
-
-typedef struct _CalBackendDBPrivate CalBackendDBPrivate;
-
-struct _CalBackendDB {
- CalBackend backend;
-
- /* Private data */
- CalBackendDBPrivate *priv;
-};
-
-struct _CalBackendDBClass {
- CalBackendClass parent_class;
-};
-
-GtkType cal_backend_db_get_type (void);
-
-END_GNOME_DECLS
-
-#endif
diff --git a/calendar/pcs/cal-backend-file.c b/calendar/pcs/cal-backend-file.c
deleted file mode 100644
index 1267f44e3f..0000000000
--- a/calendar/pcs/cal-backend-file.c
+++ /dev/null
@@ -1,1623 +0,0 @@
-/* Evolution calendar - iCalendar file backend
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <gtk/gtksignal.h>
-#include "e-util/e-dbhash.h"
-#include "cal-util/cal-recur.h"
-#include "cal-backend-file.h"
-
-
-
-/* Private part of the CalBackendFile structure */
-struct _CalBackendFilePrivate {
- /* URI where the calendar data is stored */
- GnomeVFSURI *uri;
-
- /* List of Cal objects with their listeners */
- GList *clients;
-
- /* Toplevel VCALENDAR component */
- icalcomponent *icalcomp;
-
- /* All the CalComponent objects in the calendar, hashed by UID. The
- * hash key *is* the uid returned by cal_component_get_uid(); it is not
- * copied, so don't free it when you remove an object from the hash
- * table.
- */
- GHashTable *comp_uid_hash;
-
- /* All event, to-do, and journal components in the calendar; they are
- * here just for easy access (i.e. so that you don't have to iterate
- * over the comp_uid_hash). If you need *all* the components in the
- * calendar, iterate over the hash instead.
- */
- GList *events;
- GList *todos;
- GList *journals;
-
- /* Idle handler for saving the calendar when it is dirty */
- guint idle_id;
-};
-
-
-
-static void cal_backend_file_class_init (CalBackendFileClass *class);
-static void cal_backend_file_init (CalBackendFile *cbfile);
-static void cal_backend_file_destroy (GtkObject *object);
-
-static GnomeVFSURI *cal_backend_file_get_uri (CalBackend *backend);
-static void cal_backend_file_add_cal (CalBackend *backend, Cal *cal);
-static CalBackendOpenStatus cal_backend_file_open (CalBackend *backend, GnomeVFSURI *uri,
- gboolean only_if_exists);
-static gboolean cal_backend_file_is_loaded (CalBackend *backend);
-
-static int cal_backend_file_get_n_objects (CalBackend *backend, CalObjType type);
-static char *cal_backend_file_get_object (CalBackend *backend, const char *uid);
-static CalObjType cal_backend_file_get_type_by_uid (CalBackend *backend, const char *uid);
-static GList *cal_backend_file_get_uids (CalBackend *backend, CalObjType type);
-static GList *cal_backend_file_get_objects_in_range (CalBackend *backend, CalObjType type,
- time_t start, time_t end);
-static GNOME_Evolution_Calendar_CalObjChangeSeq *cal_backend_file_get_changes (
- CalBackend *backend, CalObjType type, const char *change_id);
-
-static GNOME_Evolution_Calendar_CalComponentAlarmsSeq *cal_backend_file_get_alarms_in_range (
- CalBackend *backend, time_t start, time_t end);
-
-static GNOME_Evolution_Calendar_CalComponentAlarms *cal_backend_file_get_alarms_for_object (
- CalBackend *backend, const char *uid,
- time_t start, time_t end, gboolean *object_found);
-
-static gboolean cal_backend_file_update_object (CalBackend *backend, const char *uid,
- const char *calobj);
-static gboolean cal_backend_file_remove_object (CalBackend *backend, const char *uid);
-
-static CalBackendClass *parent_class;
-
-
-
-/**
- * cal_backend_file_get_type:
- * @void:
- *
- * Registers the #CalBackendFile class if necessary, and returns the type ID
- * associated to it.
- *
- * Return value: The type ID of the #CalBackendFile class.
- **/
-GtkType
-cal_backend_file_get_type (void)
-{
- static GtkType cal_backend_file_type = 0;
-
- if (!cal_backend_file_type) {
- static const GtkTypeInfo cal_backend_file_info = {
- "CalBackendFile",
- sizeof (CalBackendFile),
- sizeof (CalBackendFileClass),
- (GtkClassInitFunc) cal_backend_file_class_init,
- (GtkObjectInitFunc) cal_backend_file_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- cal_backend_file_type = gtk_type_unique (CAL_BACKEND_TYPE, &cal_backend_file_info);
- }
-
- return cal_backend_file_type;
-}
-
-/* Class initialization function for the file backend */
-static void
-cal_backend_file_class_init (CalBackendFileClass *class)
-{
- GtkObjectClass *object_class;
- CalBackendClass *backend_class;
-
- object_class = (GtkObjectClass *) class;
- backend_class = (CalBackendClass *) class;
-
- parent_class = gtk_type_class (CAL_BACKEND_TYPE);
-
- object_class->destroy = cal_backend_file_destroy;
-
- backend_class->get_uri = cal_backend_file_get_uri;
- backend_class->add_cal = cal_backend_file_add_cal;
- backend_class->open = cal_backend_file_open;
- backend_class->is_loaded = cal_backend_file_is_loaded;
- backend_class->get_n_objects = cal_backend_file_get_n_objects;
- backend_class->get_object = cal_backend_file_get_object;
- backend_class->get_type_by_uid = cal_backend_file_get_type_by_uid;
- backend_class->get_uids = cal_backend_file_get_uids;
- backend_class->get_objects_in_range = cal_backend_file_get_objects_in_range;
- backend_class->get_changes = cal_backend_file_get_changes;
- backend_class->get_alarms_in_range = cal_backend_file_get_alarms_in_range;
- backend_class->get_alarms_for_object = cal_backend_file_get_alarms_for_object;
- backend_class->update_object = cal_backend_file_update_object;
- backend_class->remove_object = cal_backend_file_remove_object;
-}
-
-/* Object initialization function for the file backend */
-static void
-cal_backend_file_init (CalBackendFile *cbfile)
-{
- CalBackendFilePrivate *priv;
-
- priv = g_new0 (CalBackendFilePrivate, 1);
- cbfile->priv = priv;
-
- priv->uri = NULL;
- priv->clients = NULL;
- priv->icalcomp = NULL;
- priv->comp_uid_hash = NULL;
- priv->events = NULL;
- priv->todos = NULL;
- priv->journals = NULL;
-}
-
-/* g_hash_table_foreach() callback to destroy a CalComponent */
-static void
-free_cal_component (gpointer key, gpointer value, gpointer data)
-{
- CalComponent *comp;
-
- comp = CAL_COMPONENT (value);
- gtk_object_unref (GTK_OBJECT (comp));
-}
-
-/* Saves the calendar data */
-static void
-save (CalBackendFile *cbfile)
-{
- CalBackendFilePrivate *priv;
- GnomeVFSHandle *handle = NULL;
- GnomeVFSResult result;
- GnomeVFSFileSize out;
- gchar *tmp;
- char *buf;
-
- priv = cbfile->priv;
- g_assert (priv->uri != NULL);
- g_assert (priv->icalcomp != NULL);
-
- /* Make a backup copy of the file if it exists */
- tmp = gnome_vfs_uri_to_string (priv->uri, GNOME_VFS_URI_HIDE_NONE);
- if (tmp) {
- GnomeVFSURI *backup_uri;
- gchar *backup_uristr;
-
- backup_uristr = g_strconcat (tmp, "~", NULL);
- backup_uri = gnome_vfs_uri_new (backup_uristr);
-
- result = gnome_vfs_move_uri (priv->uri, backup_uri, TRUE);
- gnome_vfs_uri_unref (backup_uri);
-
- g_free (tmp);
- g_free (backup_uristr);
- }
-
- /* Now write the new file out */
- result = gnome_vfs_create_uri (&handle, priv->uri,
- GNOME_VFS_OPEN_WRITE,
- FALSE, 0666);
-
- if (result != GNOME_VFS_OK)
- goto error;
-
- buf = icalcomponent_as_ical_string (priv->icalcomp);
- result = gnome_vfs_write (handle, buf, strlen (buf) * sizeof (char), &out);
-
- if (result != GNOME_VFS_OK)
- goto error;
-
- gnome_vfs_close (handle);
-
- return;
-
- error:
- g_warning ("Error writing calendar file.");
- return;
-}
-
-/* Destroy handler for the file backend */
-static void
-cal_backend_file_destroy (GtkObject *object)
-{
- CalBackendFile *cbfile;
- CalBackendFilePrivate *priv;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (IS_CAL_BACKEND_FILE (object));
-
- cbfile = CAL_BACKEND_FILE (object);
- priv = cbfile->priv;
-
- g_assert (priv->clients == NULL);
-
- /* Save if necessary */
-
- if (priv->idle_id != 0) {
- save (cbfile);
- g_source_remove (priv->idle_id);
- priv->idle_id = 0;
- }
-
- /* Clean up */
-
- if (priv->uri) {
- gnome_vfs_uri_unref (priv->uri);
- priv->uri = NULL;
- }
-
- if (priv->comp_uid_hash) {
- g_hash_table_foreach (priv->comp_uid_hash,
- free_cal_component, NULL);
- g_hash_table_destroy (priv->comp_uid_hash);
- priv->comp_uid_hash = NULL;
- }
-
- g_list_free (priv->events);
- g_list_free (priv->todos);
- g_list_free (priv->journals);
-
- priv->events = NULL;
- priv->todos = NULL;
- priv->journals = NULL;
-
- if (priv->icalcomp) {
- icalcomponent_free (priv->icalcomp);
- priv->icalcomp = NULL;
- }
-
- g_free (priv);
- cbfile->priv = NULL;
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-
-
-/* Looks up a component by its UID on the backend's component hash table */
-static CalComponent *
-lookup_component (CalBackendFile *cbfile, const char *uid)
-{
- CalBackendFilePrivate *priv;
- CalComponent *comp;
-
- priv = cbfile->priv;
-
- comp = g_hash_table_lookup (priv->comp_uid_hash, uid);
-
- return comp;
-}
-
-
-
-/* Calendar backend methods */
-
-/* Get_uri handler for the file backend */
-static GnomeVFSURI *
-cal_backend_file_get_uri (CalBackend *backend)
-{
- CalBackendFile *cbfile;
- CalBackendFilePrivate *priv;
-
- cbfile = CAL_BACKEND_FILE (backend);
- priv = cbfile->priv;
-
- g_return_val_if_fail (priv->icalcomp != NULL, NULL);
- g_assert (priv->uri != NULL);
-
- return priv->uri;
-}
-
-/* Callback used when a Cal is destroyed */
-static void
-cal_destroy_cb (GtkObject *object, gpointer data)
-{
- Cal *cal;
- Cal *lcal;
- CalBackendFile *cbfile;
- CalBackendFilePrivate *priv;
- GList *l;
-
- cal = CAL (object);
-
- cbfile = CAL_BACKEND_FILE (data);
- priv = cbfile->priv;
-
- /* Find the cal in the list of clients */
-
- for (l = priv->clients; l; l = l->next) {
- lcal = CAL (l->data);
-
- if (lcal == cal)
- break;
- }
-
- g_assert (l != NULL);
-
- /* Disconnect */
-
- priv->clients = g_list_remove_link (priv->clients, l);
- g_list_free_1 (l);
-
- /* When all clients go away, notify the parent factory about it so that
- * it may decide whether to kill the backend or not.
- */
- if (!priv->clients)
- cal_backend_last_client_gone (CAL_BACKEND (cbfile));
-}
-
-/* Add_cal handler for the file backend */
-static void
-cal_backend_file_add_cal (CalBackend *backend, Cal *cal)
-{
- CalBackendFile *cbfile;
- CalBackendFilePrivate *priv;
-
- cbfile = CAL_BACKEND_FILE (backend);
- priv = cbfile->priv;
-
- g_return_if_fail (priv->icalcomp != NULL);
- g_return_if_fail (cal != NULL);
- g_return_if_fail (IS_CAL (cal));
-
- /* We do not keep a reference to the Cal since the calendar user agent
- * owns it.
- */
-
- gtk_signal_connect (GTK_OBJECT (cal), "destroy",
- GTK_SIGNAL_FUNC (cal_destroy_cb),
- backend);
-
- priv->clients = g_list_prepend (priv->clients, cal);
-}
-
-/* Idle handler; we save the calendar since it is dirty */
-static gboolean
-save_idle (gpointer data)
-{
- CalBackendFile *cbfile;
- CalBackendFilePrivate *priv;
-
- cbfile = CAL_BACKEND_FILE (data);
- priv = cbfile->priv;
-
- g_assert (priv->icalcomp != NULL);
-
- save (cbfile);
-
- priv->idle_id = 0;
- return FALSE;
-}
-
-/* Marks the file backend as dirty and queues a save operation */
-static void
-mark_dirty (CalBackendFile *cbfile)
-{
- CalBackendFilePrivate *priv;
-
- priv = cbfile->priv;
-
- if (priv->idle_id != 0)
- return;
-
- priv->idle_id = g_idle_add (save_idle, cbfile);
-}
-
-/* Checks if the specified component has a duplicated UID and if so changes it */
-static void
-check_dup_uid (CalBackendFile *cbfile, CalComponent *comp)
-{
- CalBackendFilePrivate *priv;
- CalComponent *old_comp;
- const char *uid;
- char *new_uid;
-
- priv = cbfile->priv;
-
- cal_component_get_uid (comp, &uid);
-
- old_comp = g_hash_table_lookup (priv->comp_uid_hash, uid);
- if (!old_comp)
- return; /* Everything is fine */
-
- g_message ("check_dup_uid(): Got object with duplicated UID `%s', changing it...", uid);
-
- new_uid = cal_component_gen_uid ();
- cal_component_set_uid (comp, new_uid);
- g_free (new_uid);
-
- /* FIXME: I think we need to reset the SEQUENCE property and reset the
- * CREATED/DTSTAMP/LAST-MODIFIED.
- */
-
- mark_dirty (cbfile);
-}
-
-/* Tries to add an icalcomponent to the file backend. We only store the objects
- * of the types we support; all others just remain in the toplevel component so
- * that we don't lose them.
- */
-static void
-add_component (CalBackendFile *cbfile, CalComponent *comp, gboolean add_to_toplevel)
-{
- CalBackendFilePrivate *priv;
- GList **list;
- const char *uid;
-
- priv = cbfile->priv;
-
- switch (cal_component_get_vtype (comp)) {
- case CAL_COMPONENT_EVENT:
- list = &priv->events;
- break;
-
- case CAL_COMPONENT_TODO:
- list = &priv->todos;
- break;
-
- case CAL_COMPONENT_JOURNAL:
- list = &priv->journals;
- break;
-
- default:
- g_assert_not_reached ();
- return;
- }
-
- /* Ensure that the UID is unique; some broken implementations spit
- * components with duplicated UIDs.
- */
- check_dup_uid (cbfile, comp);
- cal_component_get_uid (comp, &uid);
- g_hash_table_insert (priv->comp_uid_hash, (char *)uid, comp);
-
- *list = g_list_prepend (*list, comp);
-
- /* Put the object in the toplevel component if required */
-
- if (add_to_toplevel) {
- icalcomponent *icalcomp;
-
- icalcomp = cal_component_get_icalcomponent (comp);
- g_assert (icalcomp != NULL);
-
- icalcomponent_add_component (priv->icalcomp, icalcomp);
- }
-}
-
-/* Removes a component from the backend's hash and lists. Does not perform
- * notification on the clients. Also removes the component from the toplevel
- * icalcomponent.
- */
-static void
-remove_component (CalBackendFile *cbfile, CalComponent *comp)
-{
- CalBackendFilePrivate *priv;
- icalcomponent *icalcomp;
- const char *uid;
- GList **list, *l;
-
- priv = cbfile->priv;
-
- /* Remove the icalcomp from the toplevel */
-
- icalcomp = cal_component_get_icalcomponent (comp);
- g_assert (icalcomp != NULL);
-
- icalcomponent_remove_component (priv->icalcomp, icalcomp);
-
- /* Remove it from our mapping */
-
- cal_component_get_uid (comp, &uid);
- g_hash_table_remove (priv->comp_uid_hash, uid);
-
- switch (cal_component_get_vtype (comp)) {
- case CAL_COMPONENT_EVENT:
- list = &priv->events;
- break;
-
- case CAL_COMPONENT_TODO:
- list = &priv->todos;
- break;
-
- case CAL_COMPONENT_JOURNAL:
- list = &priv->journals;
- break;
-
- default:
- /* Make the compiler shut up. */
- list = NULL;
- g_assert_not_reached ();
- }
-
- l = g_list_find (*list, comp);
- g_assert (l != NULL);
-
- *list = g_list_remove_link (*list, l);
- g_list_free_1 (l);
-
- gtk_object_unref (GTK_OBJECT (comp));
-}
-
-/* Scans the toplevel VCALENDAR component and stores the objects it finds */
-static void
-scan_vcalendar (CalBackendFile *cbfile)
-{
- CalBackendFilePrivate *priv;
- icalcompiter iter;
-
- priv = cbfile->priv;
- g_assert (priv->icalcomp != NULL);
- g_assert (priv->comp_uid_hash != NULL);
-
- for (iter = icalcomponent_begin_component (priv->icalcomp, ICAL_ANY_COMPONENT);
- icalcompiter_deref (&iter) != NULL;
- icalcompiter_next (&iter)) {
- icalcomponent *icalcomp;
- icalcomponent_kind kind;
- CalComponent *comp;
-
- icalcomp = icalcompiter_deref (&iter);
-
- kind = icalcomponent_isa (icalcomp);
-
- if (!(kind == ICAL_VEVENT_COMPONENT
- || kind == ICAL_VTODO_COMPONENT
- || kind == ICAL_VJOURNAL_COMPONENT))
- continue;
-
- comp = cal_component_new ();
-
- if (!cal_component_set_icalcomponent (comp, icalcomp))
- continue;
-
- add_component (cbfile, comp, FALSE);
- }
-}
-
-/* Callback used from icalparser_parse() */
-static char *
-get_line_fn (char *s, size_t size, void *data)
-{
- FILE *file;
-
- file = data;
- return fgets (s, size, file);
-}
-
-/* Parses an open iCalendar file and returns a toplevel component with the contents */
-static icalcomponent *
-parse_file (FILE *file)
-{
- icalparser *parser;
- icalcomponent *icalcomp;
-
- parser = icalparser_new ();
- icalparser_set_gen_data (parser, file);
-
- icalcomp = icalparser_parse (parser, get_line_fn);
- icalparser_free (parser);
-
- return icalcomp;
-}
-
-/* Parses an open iCalendar file and loads it into the backend */
-static CalBackendOpenStatus
-open_cal (CalBackendFile *cbfile, GnomeVFSURI *uri, FILE *file)
-{
- CalBackendFilePrivate *priv;
- icalcomponent *icalcomp;
-
- priv = cbfile->priv;
-
- icalcomp = parse_file (file);
-
- if (fclose (file) != 0) {
- if (icalcomp)
- icalcomponent_free (icalcomp);
-
- return CAL_BACKEND_OPEN_ERROR;
- }
-
- if (!icalcomp)
- return CAL_BACKEND_OPEN_ERROR;
-
- /* FIXME: should we try to demangle XROOT components and
- * individual components as well?
- */
-
- if (icalcomponent_isa (icalcomp) != ICAL_VCALENDAR_COMPONENT) {
- icalcomponent_free (icalcomp);
- return CAL_BACKEND_OPEN_ERROR;
- }
-
- priv->icalcomp = icalcomp;
-
- priv->comp_uid_hash = g_hash_table_new (g_str_hash, g_str_equal);
- scan_vcalendar (cbfile);
-
- gnome_vfs_uri_ref (uri);
- priv->uri = uri;
-
- return CAL_BACKEND_OPEN_SUCCESS;
-}
-
-static CalBackendOpenStatus
-create_cal (CalBackendFile *cbfile, GnomeVFSURI *uri)
-{
- CalBackendFilePrivate *priv;
- icalproperty *prop;
-
- priv = cbfile->priv;
-
- /* Create the new calendar information */
-
- priv->icalcomp = icalcomponent_new (ICAL_VCALENDAR_COMPONENT);
-
- /* RFC 2445, section 4.7.1 */
- prop = icalproperty_new_calscale ("GREGORIAN");
- icalcomponent_add_property (priv->icalcomp, prop);
-
- /* RFC 2445, section 4.7.3 */
- prop = icalproperty_new_prodid ("-//Ximian//NONSGML Evolution Calendar//EN");
- icalcomponent_add_property (priv->icalcomp, prop);
-
- /* RFC 2445, section 4.7.4. This is the iCalendar spec version, *NOT*
- * the product version! Do not change this!
- */
- prop = icalproperty_new_version ("2.0");
- icalcomponent_add_property (priv->icalcomp, prop);
-
- /* Create our internal data */
-
- priv->comp_uid_hash = g_hash_table_new (g_str_hash, g_str_equal);
-
- gnome_vfs_uri_ref (uri);
- priv->uri = uri;
-
- mark_dirty (cbfile);
-
- return CAL_BACKEND_OPEN_SUCCESS;
-}
-
-/* Open handler for the file backend */
-static CalBackendOpenStatus
-cal_backend_file_open (CalBackend *backend, GnomeVFSURI *uri, gboolean only_if_exists)
-{
- CalBackendFile *cbfile;
- CalBackendFilePrivate *priv;
- char *str_uri;
- FILE *file;
-
- cbfile = CAL_BACKEND_FILE (backend);
- priv = cbfile->priv;
-
- g_return_val_if_fail (priv->icalcomp == NULL, CAL_BACKEND_OPEN_ERROR);
- g_return_val_if_fail (uri != NULL, CAL_BACKEND_OPEN_ERROR);
-
- g_assert (priv->uri == NULL);
- g_assert (priv->comp_uid_hash == NULL);
-
- if (!gnome_vfs_uri_is_local (uri))
- return CAL_BACKEND_OPEN_ERROR;
-
- str_uri = gnome_vfs_uri_to_string (uri,
- (GNOME_VFS_URI_HIDE_USER_NAME
- | GNOME_VFS_URI_HIDE_PASSWORD
- | GNOME_VFS_URI_HIDE_HOST_NAME
- | GNOME_VFS_URI_HIDE_HOST_PORT
- | GNOME_VFS_URI_HIDE_TOPLEVEL_METHOD));
-
- /* Load! */
- file = fopen (str_uri, "r");
- g_free (str_uri);
-
- if (file)
- return open_cal (cbfile, uri, file);
- else {
- if (only_if_exists)
- return CAL_BACKEND_OPEN_NOT_FOUND;
-
- return create_cal (cbfile, uri);
- }
-}
-
-/* is_loaded handler for the file backend */
-static gboolean
-cal_backend_file_is_loaded (CalBackend *backend)
-{
- CalBackendFile *cbfile;
- CalBackendFilePrivate *priv;
-
- cbfile = CAL_BACKEND_FILE (backend);
- priv = cbfile->priv;
-
- return (priv->icalcomp != NULL);
-}
-
-/* Get_n_objects handler for the file backend */
-static int
-cal_backend_file_get_n_objects (CalBackend *backend, CalObjType type)
-{
- CalBackendFile *cbfile;
- CalBackendFilePrivate *priv;
- int n;
-
- cbfile = CAL_BACKEND_FILE (backend);
- priv = cbfile->priv;
-
- g_return_val_if_fail (priv->icalcomp != NULL, -1);
-
- n = 0;
-
- if (type & CALOBJ_TYPE_EVENT)
- n += g_list_length (priv->events);
-
- if (type & CALOBJ_TYPE_TODO)
- n += g_list_length (priv->todos);
-
- if (type & CALOBJ_TYPE_JOURNAL)
- n += g_list_length (priv->journals);
-
- return n;
-}
-
-/* Get_object handler for the file backend */
-static char *
-cal_backend_file_get_object (CalBackend *backend, const char *uid)
-{
- CalBackendFile *cbfile;
- CalBackendFilePrivate *priv;
- CalComponent *comp;
-
- cbfile = CAL_BACKEND_FILE (backend);
- priv = cbfile->priv;
-
- g_return_val_if_fail (uid != NULL, NULL);
-
- g_return_val_if_fail (priv->icalcomp != NULL, NULL);
- g_assert (priv->comp_uid_hash != NULL);
-
- comp = lookup_component (cbfile, uid);
-
- if (!comp)
- return NULL;
-
- return cal_component_get_as_string (comp);
-}
-
-static CalObjType
-cal_backend_file_get_type_by_uid (CalBackend *backend, const char *uid)
-{
- CalBackendFile *cbfile;
- CalBackendFilePrivate *priv;
- CalComponent *comp;
- CalComponentVType type;
-
- cbfile = CAL_BACKEND_FILE (backend);
- priv = cbfile->priv;
-
- comp = lookup_component (cbfile, uid);
- if (!comp)
- return CAL_COMPONENT_NO_TYPE;
-
- type = cal_component_get_vtype (comp);
- switch (type) {
- case CAL_COMPONENT_EVENT:
- return CALOBJ_TYPE_EVENT;
- case CAL_COMPONENT_TODO:
- return CALOBJ_TYPE_TODO;
- case CAL_COMPONENT_JOURNAL:
- return CALOBJ_TYPE_JOURNAL;
- default:
- return CAL_COMPONENT_NO_TYPE;
- }
-}
-
-/* Builds a list of UIDs from a list of CalComponent objects */
-static void
-build_uids_list (GList **list, GList *components)
-{
- GList *l;
-
- for (l = components; l; l = l->next) {
- CalComponent *comp;
- const char *uid;
-
- comp = CAL_COMPONENT (l->data);
- cal_component_get_uid (comp, &uid);
- *list = g_list_prepend (*list, g_strdup (uid));
- }
-}
-
-/* Get_uids handler for the file backend */
-static GList *
-cal_backend_file_get_uids (CalBackend *backend, CalObjType type)
-{
- CalBackendFile *cbfile;
- CalBackendFilePrivate *priv;
- GList *list;
-
- cbfile = CAL_BACKEND_FILE (backend);
- priv = cbfile->priv;
-
- g_return_val_if_fail (priv->icalcomp != NULL, NULL);
-
- list = NULL;
-
- if (type & CALOBJ_TYPE_EVENT)
- build_uids_list (&list, priv->events);
-
- if (type & CALOBJ_TYPE_TODO)
- build_uids_list (&list, priv->todos);
-
- if (type & CALOBJ_TYPE_JOURNAL)
- build_uids_list (&list, priv->journals);
-
- return list;
-}
-
-/* Callback used from cal_recur_generate_instances(); adds the component's UID
- * to our hash table.
- */
-static gboolean
-add_instance (CalComponent *comp, time_t start, time_t end, gpointer data)
-{
- GHashTable *uid_hash;
- const char *uid;
- const char *old_uid;
-
- uid_hash = data;
-
- /* We only care that the component's UID is listed in the hash table;
- * that's why we only allow generation of one instance (i.e. return
- * FALSE every time).
- */
-
- cal_component_get_uid (comp, &uid);
-
- old_uid = g_hash_table_lookup (uid_hash, uid);
- if (old_uid)
- return FALSE;
-
- g_hash_table_insert (uid_hash, (char *) uid, NULL);
- return FALSE;
-}
-
-/* Populates a hash table with the UIDs of the components that occur or recur
- * within a specific time range.
- */
-static void
-get_instances_in_range (GHashTable *uid_hash, GList *components, time_t start, time_t end)
-{
- GList *l;
-
- for (l = components; l; l = l->next) {
- CalComponent *comp;
-
- comp = CAL_COMPONENT (l->data);
- cal_recur_generate_instances (comp, start, end, add_instance, uid_hash);
- }
-}
-
-/* Used from g_hash_table_foreach(), adds a UID from the hash table to our list */
-static void
-add_uid_to_list (gpointer key, gpointer value, gpointer data)
-{
- GList **list;
- const char *uid;
- char *uid_copy;
-
- list = data;
-
- uid = key;
- uid_copy = g_strdup (uid);
-
- *list = g_list_prepend (*list, uid_copy);
-}
-
-/* Get_objects_in_range handler for the file backend */
-static GList *
-cal_backend_file_get_objects_in_range (CalBackend *backend, CalObjType type,
- time_t start, time_t end)
-{
- CalBackendFile *cbfile;
- CalBackendFilePrivate *priv;
- GList *event_list;
- GHashTable *uid_hash;
-
- cbfile = CAL_BACKEND_FILE (backend);
- priv = cbfile->priv;
-
- g_return_val_if_fail (priv->icalcomp != NULL, NULL);
-
- g_return_val_if_fail (start != -1 && end != -1, NULL);
- g_return_val_if_fail (start <= end, NULL);
-
- uid_hash = g_hash_table_new (g_str_hash, g_str_equal);
-
- if (type & CALOBJ_TYPE_EVENT)
- get_instances_in_range (uid_hash, priv->events, start, end);
-
- if (type & CALOBJ_TYPE_TODO)
- get_instances_in_range (uid_hash, priv->todos, start, end);
-
- if (type & CALOBJ_TYPE_JOURNAL)
- get_instances_in_range (uid_hash, priv->journals, start, end);
-
- event_list = NULL;
- g_hash_table_foreach (uid_hash, add_uid_to_list, &event_list);
- g_hash_table_destroy (uid_hash);
-
- return event_list;
-}
-
-
-typedef struct
-{
- CalBackend *backend;
- GList *changes;
- GList *change_ids;
-} CalBackendFileComputeChangesData;
-
-static void
-cal_backend_file_compute_changes_foreach_key (const char *key, gpointer data)
-{
- CalBackendFileComputeChangesData *be_data = data;
- char *calobj = cal_backend_get_object (be_data->backend, key);
-
- if (calobj == NULL) {
- CalComponent *comp;
- GNOME_Evolution_Calendar_CalObjChange *coc;
-
- comp = cal_component_new ();
- cal_component_set_new_vtype (comp, CAL_COMPONENT_TODO);
- cal_component_set_uid (comp, key);
-
- coc = GNOME_Evolution_Calendar_CalObjChange__alloc ();
- coc->calobj = CORBA_string_dup (cal_component_get_as_string (comp));
- coc->type = GNOME_Evolution_Calendar_DELETED;
- be_data->changes = g_list_prepend (be_data->changes, coc);
- be_data->change_ids = g_list_prepend (be_data->change_ids, (gpointer) key);
- }
-}
-
-static GNOME_Evolution_Calendar_CalObjChangeSeq *
-cal_backend_file_compute_changes (CalBackend *backend, CalObjType type, const char *change_id)
-{
- char *filename;
- EDbHash *ehash;
- CalBackendFileComputeChangesData be_data;
- GNOME_Evolution_Calendar_CalObjChangeSeq *seq;
- GList *uids, *changes = NULL, *change_ids = NULL;
- GList *i, *j;
- int n;
-
- /* Find the changed ids - FIX ME, path should not be hard coded */
- if (type == GNOME_Evolution_Calendar_TYPE_TODO)
- filename = g_strdup_printf ("%s/evolution/local/Tasks/%s.db", g_get_home_dir (), change_id);
- else
- filename = g_strdup_printf ("%s/evolution/local/Calendar/%s.db", g_get_home_dir (), change_id);
- ehash = e_dbhash_new (filename);
- g_free (filename);
-
- uids = cal_backend_get_uids (backend, type);
-
- /* Calculate adds and modifies */
- for (i = uids; i != NULL; i = i->next) {
- GNOME_Evolution_Calendar_CalObjChange *coc;
- char *uid = i->data;
- char *calobj = cal_backend_get_object (backend, uid);
-
- g_assert (calobj != NULL);
-
- /* check what type of change has occurred, if any */
- switch (e_dbhash_compare (ehash, uid, calobj)) {
- case E_DBHASH_STATUS_SAME:
- break;
- case E_DBHASH_STATUS_NOT_FOUND:
- coc = GNOME_Evolution_Calendar_CalObjChange__alloc ();
- coc->calobj = CORBA_string_dup (calobj);
- coc->type = GNOME_Evolution_Calendar_ADDED;
- changes = g_list_prepend (changes, coc);
- change_ids = g_list_prepend (change_ids, uid);
- break;
- case E_DBHASH_STATUS_DIFFERENT:
- coc = GNOME_Evolution_Calendar_CalObjChange__alloc ();
- coc->calobj = CORBA_string_dup (calobj);
- coc->type = GNOME_Evolution_Calendar_MODIFIED;
- changes = g_list_prepend (changes, coc);
- change_ids = g_list_prepend (change_ids, uid);
- break;
- }
- }
-
- /* Calculate deletions */
- be_data.backend = backend;
- be_data.changes = changes;
- be_data.change_ids = change_ids;
- e_dbhash_foreach_key (ehash, (EDbHashFunc)cal_backend_file_compute_changes_foreach_key, &be_data);
- changes = be_data.changes;
- change_ids = be_data.change_ids;
-
- /* Build the sequence and update the hash */
- n = g_list_length (changes);
-
- seq = GNOME_Evolution_Calendar_CalObjChangeSeq__alloc ();
- seq->_length = n;
- seq->_buffer = CORBA_sequence_GNOME_Evolution_Calendar_CalObjChange_allocbuf (n);
- CORBA_sequence_set_release (seq, TRUE);
-
- for (i = changes, j = change_ids, n = 0; i != NULL; i = i->next, j = j->next, n++) {
- GNOME_Evolution_Calendar_CalObjChange *coc = i->data;
- GNOME_Evolution_Calendar_CalObjChange *seq_coc;
- char *uid = j->data;
-
- /* sequence building */
- seq_coc = &seq->_buffer[n];
- seq_coc->calobj = CORBA_string_dup (coc->calobj);
- seq_coc->type = coc->type;
-
- /* hash updating */
- if (coc->type == GNOME_Evolution_Calendar_ADDED
- || coc->type == GNOME_Evolution_Calendar_MODIFIED) {
- e_dbhash_add (ehash, uid, coc->calobj);
- } else {
- e_dbhash_remove (ehash, uid);
- }
-
- CORBA_free (coc);
- }
- e_dbhash_write (ehash);
- e_dbhash_destroy (ehash);
-
- cal_obj_uid_list_free (uids);
- g_list_free (change_ids);
- g_list_free (changes);
-
- return seq;
-}
-
-/* Get_changes handler for the file backend */
-static GNOME_Evolution_Calendar_CalObjChangeSeq *
-cal_backend_file_get_changes (CalBackend *backend, CalObjType type, const char *change_id)
-{
- g_return_val_if_fail (backend != NULL, NULL);
- g_return_val_if_fail (IS_CAL_BACKEND (backend), NULL);
-
- return cal_backend_file_compute_changes (backend, type, change_id);
-}
-
-/* Computes the range of time in which recurrences should be generated for a
- * component in order to compute alarm trigger times.
- */
-static void
-compute_alarm_range (CalComponent *comp, GList *alarm_uids, time_t start, time_t end,
- time_t *alarm_start, time_t *alarm_end)
-{
- GList *l;
-
- *alarm_start = start;
- *alarm_end = end;
-
- for (l = alarm_uids; l; l = l->next) {
- const char *auid;
- CalComponentAlarm *alarm;
- CalAlarmTrigger trigger;
- struct icaldurationtype *dur;
- time_t dur_time;
-
- auid = l->data;
- alarm = cal_component_get_alarm (comp, auid);
- g_assert (alarm != NULL);
-
- cal_component_alarm_get_trigger (alarm, &trigger);
- cal_component_alarm_free (alarm);
-
- switch (trigger.type) {
- case CAL_ALARM_TRIGGER_NONE:
- case CAL_ALARM_TRIGGER_ABSOLUTE:
- continue;
-
- case CAL_ALARM_TRIGGER_RELATIVE_START:
- case CAL_ALARM_TRIGGER_RELATIVE_END:
- dur = &trigger.u.rel_duration;
- dur_time = icaldurationtype_as_int (*dur);
-
- if (dur->is_neg)
- *alarm_end = MAX (*alarm_end, end + dur_time);
- else
- *alarm_start = MIN (*alarm_start, start - dur_time);
-
- break;
-
- default:
- g_assert_not_reached ();
- }
- }
-
- g_assert (*alarm_start <= *alarm_end);
-}
-
-/* Closure data to generate alarm occurrences */
-struct alarm_occurrence_data {
- /* These are the info we have */
- GList *alarm_uids;
- time_t start;
- time_t end;
-
- /* This is what we compute */
- GSList *triggers;
- int n_triggers;
-};
-
-/* Callback used from cal_recur_generate_instances(); generates triggers for all
- * of a component's RELATIVE alarms.
- */
-static gboolean
-add_alarm_occurrences_cb (CalComponent *comp, time_t start, time_t end, gpointer data)
-{
- struct alarm_occurrence_data *aod;
- GList *l;
-
- aod = data;
-
- for (l = aod->alarm_uids; l; l = l->next) {
- const char *auid;
- CalComponentAlarm *alarm;
- CalAlarmTrigger trigger;
- struct icaldurationtype *dur;
- time_t dur_time;
- time_t occur_time, trigger_time;
- CalAlarmInstance *instance;
-
- auid = l->data;
- alarm = cal_component_get_alarm (comp, auid);
- g_assert (alarm != NULL);
-
- cal_component_alarm_get_trigger (alarm, &trigger);
- cal_component_alarm_free (alarm);
-
- if (trigger.type != CAL_ALARM_TRIGGER_RELATIVE_START
- && trigger.type != CAL_ALARM_TRIGGER_RELATIVE_END)
- continue;
-
- dur = &trigger.u.rel_duration;
- dur_time = icaldurationtype_as_int (*dur);
-
- if (trigger.type == CAL_ALARM_TRIGGER_RELATIVE_START)
- occur_time = start;
- else
- occur_time = end;
-
- if (dur->is_neg)
- trigger_time = occur_time - dur_time;
- else
- trigger_time = occur_time + dur_time;
-
- if (trigger_time < aod->start || trigger_time >= aod->end)
- continue;
-
- instance = g_new (CalAlarmInstance, 1);
- instance->auid = auid;
- instance->trigger = trigger_time;
- instance->occur = occur_time;
-
- aod->triggers = g_slist_prepend (aod->triggers, instance);
- aod->n_triggers++;
- }
-
- return TRUE;
-}
-
-/* Generates the absolute triggers for a component */
-static void
-generate_absolute_triggers (CalComponent *comp, struct alarm_occurrence_data *aod)
-{
- GList *l;
-
- for (l = aod->alarm_uids; l; l = l->next) {
- const char *auid;
- CalComponentAlarm *alarm;
- CalAlarmTrigger trigger;
- time_t abs_time;
- CalAlarmInstance *instance;
-
- auid = l->data;
- alarm = cal_component_get_alarm (comp, auid);
- g_assert (alarm != NULL);
-
- cal_component_alarm_get_trigger (alarm, &trigger);
- cal_component_alarm_free (alarm);
-
- if (trigger.type != CAL_ALARM_TRIGGER_ABSOLUTE)
- continue;
-
- abs_time = icaltime_as_timet (trigger.u.abs_time);
-
- if (abs_time < aod->start || abs_time >= aod->end)
- continue;
-
- instance = g_new (CalAlarmInstance, 1);
- instance->auid = auid;
- instance->trigger = abs_time;
- instance->occur = abs_time; /* No particular occurrence, so just use the same time */
-
- aod->triggers = g_slist_prepend (aod->triggers, instance);
- aod->n_triggers++;
- }
-}
-
-/* Compares two alarm instances; called from g_slist_sort() */
-static gint
-compare_alarm_instance (gconstpointer a, gconstpointer b)
-{
- const CalAlarmInstance *aia, *aib;
-
- aia = a;
- aib = b;
-
- if (aia->trigger < aib->trigger)
- return -1;
- else if (aia->trigger > aib->trigger)
- return 1;
- else
- return 0;
-}
-
-/* Generates alarm instances for a calendar component. Returns the instances
- * structure, or NULL if no alarm instances occurred in the specified time
- * range.
- */
-static CalComponentAlarms *
-generate_alarms_for_comp (CalComponent *comp, time_t start, time_t end)
-{
- GList *alarm_uids;
- time_t alarm_start, alarm_end;
- struct alarm_occurrence_data aod;
- CalComponentAlarms *alarms;
-
- if (!cal_component_has_alarms (comp))
- return NULL;
-
- alarm_uids = cal_component_get_alarm_uids (comp);
- compute_alarm_range (comp, alarm_uids, start, end, &alarm_start, &alarm_end);
-
- aod.alarm_uids = alarm_uids;
- aod.start = start;
- aod.end = end;
- aod.triggers = NULL;
- aod.n_triggers = 0;
- cal_recur_generate_instances (comp, alarm_start, alarm_end, add_alarm_occurrences_cb, &aod);
-
- /* We add the ABSOLUTE triggers separately */
- generate_absolute_triggers (comp, &aod);
-
- if (aod.n_triggers == 0)
- return NULL;
-
- /* Create the component alarm instances structure */
-
- alarms = g_new (CalComponentAlarms, 1);
- alarms->comp = comp;
- gtk_object_ref (GTK_OBJECT (alarms->comp));
- alarms->alarms = g_slist_sort (aod.triggers, compare_alarm_instance);
-
- return alarms;
-}
-
-/* Iterates through all the components in the comps list and generates alarm
- * instances for them; putting them in the comp_alarms list. Returns the number
- * of elements it added to that list.
- */
-static int
-generate_alarms_for_list (GList *comps, time_t start, time_t end, GSList **comp_alarms)
-{
- GList *l;
- int n;
-
- n = 0;
-
- for (l = comps; l; l = l->next) {
- CalComponent *comp;
- CalComponentAlarms *alarms;
-
- comp = CAL_COMPONENT (l->data);
- alarms = generate_alarms_for_comp (comp, start, end);
-
- if (alarms) {
- *comp_alarms = g_slist_prepend (*comp_alarms, alarms);
- n++;
- }
- }
-
- return n;
-}
-
-/* Fills a CORBA sequence of alarm instances */
-static void
-fill_alarm_instances_seq (GNOME_Evolution_Calendar_CalAlarmInstanceSeq *seq, GSList *alarms)
-{
- int n_alarms;
- GSList *l;
- int i;
-
- n_alarms = g_slist_length (alarms);
-
- CORBA_sequence_set_release (seq, TRUE);
- seq->_length = n_alarms;
- seq->_buffer = CORBA_sequence_GNOME_Evolution_Calendar_CalAlarmInstance_allocbuf (n_alarms);
-
- for (l = alarms, i = 0; l; l = l->next, i++) {
- CalAlarmInstance *instance;
- GNOME_Evolution_Calendar_CalAlarmInstance *corba_instance;
-
- instance = l->data;
- corba_instance = seq->_buffer + i;
-
- corba_instance->auid = CORBA_string_dup (instance->auid);
- corba_instance->trigger = (long) instance->trigger;
- corba_instance->occur = (long) instance->occur;
- }
-}
-
-/* Get_alarms_in_range handler for the file backend */
-static GNOME_Evolution_Calendar_CalComponentAlarmsSeq *
-cal_backend_file_get_alarms_in_range (CalBackend *backend, time_t start, time_t end)
-{
- CalBackendFile *cbfile;
- CalBackendFilePrivate *priv;
- int n_comp_alarms;
- GSList *comp_alarms;
- GSList *l;
- int i;
- GNOME_Evolution_Calendar_CalComponentAlarmsSeq *seq;
-
- cbfile = CAL_BACKEND_FILE (backend);
- priv = cbfile->priv;
-
- g_return_val_if_fail (priv->icalcomp != NULL, NULL);
-
- g_return_val_if_fail (start != -1 && end != -1, NULL);
- g_return_val_if_fail (start <= end, NULL);
-
- /* Per RFC 2445, only VEVENTs and VTODOs can have alarms */
-
- n_comp_alarms = 0;
- comp_alarms = NULL;
-
- n_comp_alarms += generate_alarms_for_list (priv->events, start, end, &comp_alarms);
- n_comp_alarms += generate_alarms_for_list (priv->todos, start, end, &comp_alarms);
-
- seq = GNOME_Evolution_Calendar_CalComponentAlarmsSeq__alloc ();
- CORBA_sequence_set_release (seq, TRUE);
- seq->_length = n_comp_alarms;
- seq->_buffer = CORBA_sequence_GNOME_Evolution_Calendar_CalComponentAlarms_allocbuf (
- n_comp_alarms);
-
- for (l = comp_alarms, i = 0; l; l = l->next, i++) {
- CalComponentAlarms *alarms;
- char *comp_str;
-
- alarms = l->data;
-
- comp_str = cal_component_get_as_string (alarms->comp);
- seq->_buffer[i].calobj = CORBA_string_dup (comp_str);
- g_free (comp_str);
-
- fill_alarm_instances_seq (&seq->_buffer[i].alarms, alarms->alarms);
-
- cal_component_alarms_free (alarms);
- }
-
- g_slist_free (comp_alarms);
-
- return seq;
-}
-
-/* Get_alarms_for_object handler for the file backend */
-static GNOME_Evolution_Calendar_CalComponentAlarms *
-cal_backend_file_get_alarms_for_object (CalBackend *backend, const char *uid,
- time_t start, time_t end, gboolean *object_found)
-{
- CalBackendFile *cbfile;
- CalBackendFilePrivate *priv;
- CalComponent *comp;
- char *comp_str;
- GNOME_Evolution_Calendar_CalComponentAlarms *corba_alarms;
- CalComponentAlarms *alarms;
-
- cbfile = CAL_BACKEND_FILE (backend);
- priv = cbfile->priv;
-
- g_return_val_if_fail (priv->icalcomp != NULL, NULL);
-
- g_return_val_if_fail (uid != NULL, NULL);
- g_return_val_if_fail (start != -1 && end != -1, NULL);
- g_return_val_if_fail (start <= end, NULL);
- g_return_val_if_fail (object_found != NULL, NULL);
-
- comp = lookup_component (cbfile, uid);
- if (!comp) {
- *object_found = FALSE;
- return NULL;
- }
-
- *object_found = TRUE;
-
- comp_str = cal_component_get_as_string (comp);
- corba_alarms = GNOME_Evolution_Calendar_CalComponentAlarms__alloc ();
-
- corba_alarms->calobj = CORBA_string_dup (comp_str);
- g_free (comp_str);
-
- alarms = generate_alarms_for_comp (comp, start, end);
- if (alarms) {
- fill_alarm_instances_seq (&corba_alarms->alarms, alarms->alarms);
- cal_component_alarms_free (alarms);
- } else
- fill_alarm_instances_seq (&corba_alarms->alarms, NULL);
-
- return corba_alarms;
-}
-
-/* Notifies a backend's clients that an object was updated */
-static void
-notify_update (CalBackendFile *cbfile, const char *uid)
-{
- CalBackendFilePrivate *priv;
- GList *l;
-
- priv = cbfile->priv;
-
- cal_backend_obj_updated (CAL_BACKEND (cbfile), uid);
-
- for (l = priv->clients; l; l = l->next) {
- Cal *cal;
-
- cal = CAL (l->data);
- cal_notify_update (cal, uid);
- }
-}
-
-/* Notifies a backend's clients that an object was removed */
-static void
-notify_remove (CalBackendFile *cbfile, const char *uid)
-{
- CalBackendFilePrivate *priv;
- GList *l;
-
- priv = cbfile->priv;
-
- cal_backend_obj_removed (CAL_BACKEND (cbfile), uid);
-
- for (l = priv->clients; l; l = l->next) {
- Cal *cal;
-
- cal = CAL (l->data);
- cal_notify_remove (cal, uid);
- }
-}
-
-/* Update_object handler for the file backend */
-static gboolean
-cal_backend_file_update_object (CalBackend *backend, const char *uid, const char *calobj)
-{
- CalBackendFile *cbfile;
- CalBackendFilePrivate *priv;
- icalcomponent *icalcomp;
- icalcomponent_kind kind;
- CalComponent *old_comp;
- CalComponent *comp;
- const char *comp_uid;
-
- cbfile = CAL_BACKEND_FILE (backend);
- priv = cbfile->priv;
-
- g_return_val_if_fail (priv->icalcomp != NULL, FALSE);
-
- g_return_val_if_fail (uid != NULL, FALSE);
- g_return_val_if_fail (calobj != NULL, FALSE);
-
- /* Pull the component from the string and ensure that it is sane */
-
- icalcomp = icalparser_parse_string ((char *) calobj);
-
- if (!icalcomp)
- return FALSE;
-
- kind = icalcomponent_isa (icalcomp);
-
- if (!(kind == ICAL_VEVENT_COMPONENT
- || kind == ICAL_VTODO_COMPONENT
- || kind == ICAL_VJOURNAL_COMPONENT)) {
- /* We don't support this type of component */
- icalcomponent_free (icalcomp);
- return FALSE;
- }
-
- comp = cal_component_new ();
- if (!cal_component_set_icalcomponent (comp, icalcomp)) {
- gtk_object_unref (GTK_OBJECT (comp));
- icalcomponent_free (icalcomp);
- return FALSE;
- }
-
- /* Check the UID for sanity's sake */
-
- cal_component_get_uid (comp, &comp_uid);
-
- if (strcmp (uid, comp_uid) != 0) {
- gtk_object_unref (GTK_OBJECT (comp));
- return FALSE;
- }
-
- /* Update the component */
-
- old_comp = lookup_component (cbfile, uid);
-
- if (old_comp)
- remove_component (cbfile, old_comp);
-
- add_component (cbfile, comp, TRUE);
-
- mark_dirty (cbfile);
-
- /* FIXME: do the notification asynchronously */
- notify_update (cbfile, comp_uid);
-
- return TRUE;
-}
-
-/* Remove_object handler for the file backend */
-static gboolean
-cal_backend_file_remove_object (CalBackend *backend, const char *uid)
-{
- CalBackendFile *cbfile;
- CalBackendFilePrivate *priv;
- CalComponent *comp;
-
- cbfile = CAL_BACKEND_FILE (backend);
- priv = cbfile->priv;
-
- g_return_val_if_fail (priv->icalcomp != NULL, FALSE);
-
- g_return_val_if_fail (uid != NULL, FALSE);
-
- comp = lookup_component (cbfile, uid);
- if (!comp)
- return FALSE;
-
- remove_component (cbfile, comp);
- mark_dirty (cbfile);
-
- /* FIXME: do the notification asynchronously */
- notify_remove (cbfile, uid);
-
- return TRUE;
-}
-
diff --git a/calendar/pcs/cal-backend-file.h b/calendar/pcs/cal-backend-file.h
deleted file mode 100644
index a85c6d20fd..0000000000
--- a/calendar/pcs/cal-backend-file.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Evolution calendar - iCalendar file backend
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef CAL_BACKEND_FILE_H
-#define CAL_BACKEND_FILE_H
-
-#include <libgnome/gnome-defs.h>
-#include "cal-backend.h"
-
-BEGIN_GNOME_DECLS
-
-
-
-#define CAL_BACKEND_FILE_TYPE (cal_backend_file_get_type ())
-#define CAL_BACKEND_FILE(obj) (GTK_CHECK_CAST ((obj), CAL_BACKEND_FILE_TYPE, \
- CalBackendFile))
-#define CAL_BACKEND_FILE_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), CAL_BACKEND_FILE_TYPE, \
- CalBackendFileClass))
-#define IS_CAL_BACKEND_FILE(obj) (GTK_CHECK_TYPE ((obj), CAL_BACKEND_FILE_TYPE))
-#define IS_CAL_BACKEND_FILE_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), CAL_BACKEND_FILE_TYPE))
-
-typedef struct _CalBackendFile CalBackendFile;
-typedef struct _CalBackendFileClass CalBackendFileClass;
-
-typedef struct _CalBackendFilePrivate CalBackendFilePrivate;
-
-struct _CalBackendFile {
- CalBackend backend;
-
- /* Private data */
- CalBackendFilePrivate *priv;
-};
-
-struct _CalBackendFileClass {
- CalBackendClass parent_class;
-};
-
-GtkType cal_backend_file_get_type (void);
-
-
-
-END_GNOME_DECLS
-
-#endif
diff --git a/calendar/pcs/cal-backend.c b/calendar/pcs/cal-backend.c
deleted file mode 100644
index 350e6468e4..0000000000
--- a/calendar/pcs/cal-backend.c
+++ /dev/null
@@ -1,542 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* Evolution calendar - generic backend class
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Authors: Federico Mena-Quintero <federico@ximian.com>
- * JP Rosevear <jpr@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <gtk/gtkobject.h>
-#include <gtk/gtksignal.h>
-#include <gnome-xml/parser.h>
-#include <gnome-xml/parserInternals.h>
-#include <gnome-xml/xmlmemory.h>
-
-#include "cal-backend.h"
-#include "libversit/vcc.h"
-
-
-
-/* Signal IDs */
-enum {
- LAST_CLIENT_GONE,
- OPENED,
- OBJ_UPDATED,
- OBJ_REMOVED,
- LAST_SIGNAL
-};
-
-static void cal_backend_class_init (CalBackendClass *class);
-
-static guint cal_backend_signals[LAST_SIGNAL];
-
-#define CLASS(backend) (CAL_BACKEND_CLASS (GTK_OBJECT (backend)->klass))
-
-
-
-/**
- * cal_backend_get_type:
- * @void:
- *
- * Registers the #CalBackend class if necessary, and returns the type ID
- * associated to it.
- *
- * Return value: The type ID of the #CalBackend class.
- **/
-GtkType
-cal_backend_get_type (void)
-{
- static GtkType cal_backend_type = 0;
-
- if (!cal_backend_type) {
- static const GtkTypeInfo cal_backend_info = {
- "CalBackend",
- sizeof (CalBackend),
- sizeof (CalBackendClass),
- (GtkClassInitFunc) cal_backend_class_init,
- (GtkObjectInitFunc) NULL,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- cal_backend_type =
- gtk_type_unique (GTK_TYPE_OBJECT, &cal_backend_info);
- }
-
- return cal_backend_type;
-}
-
-/* Class initialization function for the calendar backend */
-static void
-cal_backend_class_init (CalBackendClass *class)
-{
- GtkObjectClass *object_class;
-
- object_class = (GtkObjectClass *) class;
-
- cal_backend_signals[LAST_CLIENT_GONE] =
- gtk_signal_new ("last_client_gone",
- GTK_RUN_FIRST,
- object_class->type,
- GTK_SIGNAL_OFFSET (CalBackendClass, last_client_gone),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
- cal_backend_signals[OPENED] =
- gtk_signal_new ("opened",
- GTK_RUN_FIRST,
- object_class->type,
- GTK_SIGNAL_OFFSET (CalBackendClass, opened),
- gtk_marshal_NONE__ENUM,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_ENUM);
- cal_backend_signals[OBJ_UPDATED] =
- gtk_signal_new ("obj_updated",
- GTK_RUN_FIRST,
- object_class->type,
- GTK_SIGNAL_OFFSET (CalBackendClass, obj_updated),
- gtk_marshal_NONE__STRING,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_STRING);
- cal_backend_signals[OBJ_REMOVED] =
- gtk_signal_new ("obj_removed",
- GTK_RUN_FIRST,
- object_class->type,
- GTK_SIGNAL_OFFSET (CalBackendClass, obj_removed),
- gtk_marshal_NONE__STRING,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_STRING);
-
- gtk_object_class_add_signals (object_class, cal_backend_signals, LAST_SIGNAL);
-
- class->last_client_gone = NULL;
- class->opened = NULL;
- class->obj_updated = NULL;
- class->obj_removed = NULL;
-
- class->get_uri = NULL;
- class->add_cal = NULL;
- class->open = NULL;
- class->get_n_objects = NULL;
- class->get_object = NULL;
- class->get_type_by_uid = NULL;
- class->get_uids = NULL;
- class->get_objects_in_range = NULL;
- class->get_changes = NULL;
- class->get_alarms_in_range = NULL;
- class->get_alarms_for_object = NULL;
- class->update_object = NULL;
- class->remove_object = NULL;
-}
-
-
-
-/**
- * cal_backend_get_uri:
- * @backend: A calendar backend.
- *
- * Queries the URI of a calendar backend, which must already have an open
- * calendar.
- *
- * Return value: The URI where the calendar is stored.
- **/
-GnomeVFSURI *
-cal_backend_get_uri (CalBackend *backend)
-{
- g_return_val_if_fail (backend != NULL, NULL);
- g_return_val_if_fail (IS_CAL_BACKEND (backend), NULL);
-
- g_assert (CLASS (backend)->get_uri != NULL);
- return (* CLASS (backend)->get_uri) (backend);
-}
-
-/**
- * cal_backend_add_cal:
- * @backend: A calendar backend.
- * @cal: A calendar client interface object.
- *
- * Adds a calendar client interface object to a calendar @backend.
- * The calendar backend must already have an open calendar.
- **/
-void
-cal_backend_add_cal (CalBackend *backend, Cal *cal)
-{
- g_return_if_fail (backend != NULL);
- g_return_if_fail (IS_CAL_BACKEND (backend));
-
- g_assert (CLASS (backend)->add_cal != NULL);
- (* CLASS (backend)->add_cal) (backend, cal);
-}
-
-/**
- * cal_backend_open:
- * @backend: A calendar backend.
- * @uri: URI that contains the calendar data.
- * @only_if_exists: Whether the calendar should be opened only if it already
- * exists. If FALSE, a new calendar will be created when the specified @uri
- * does not exist.
- *
- * Opens a calendar backend with data from a calendar stored at the specified
- * URI.
- *
- * Return value: An operation status code.
- **/
-CalBackendOpenStatus
-cal_backend_open (CalBackend *backend, GnomeVFSURI *uri, gboolean only_if_exists)
-{
- CalBackendOpenStatus result;
-
- g_return_val_if_fail (backend != NULL, CAL_BACKEND_OPEN_ERROR);
- g_return_val_if_fail (IS_CAL_BACKEND (backend), CAL_BACKEND_OPEN_ERROR);
- g_return_val_if_fail (uri != NULL, CAL_BACKEND_OPEN_ERROR);
-
- g_assert (CLASS (backend)->open != NULL);
- result = (* CLASS (backend)->open) (backend, uri, only_if_exists);
-
- return result;
-}
-
-/**
- * cal_backend_is_loaded:
- * @backend: A calendar backend.
- *
- * Queries whether a calendar backend has been loaded yet.
- *
- * Return value: TRUE if the backend has been loaded with data, FALSE otherwise.
- **/
-gboolean
-cal_backend_is_loaded (CalBackend *backend)
-{
- gboolean result;
-
- g_return_val_if_fail (backend != NULL, FALSE);
- g_return_val_if_fail (IS_CAL_BACKEND (backend), FALSE);
-
- g_assert (CLASS (backend)->is_loaded != NULL);
- result = (* CLASS (backend)->is_loaded) (backend);
-
- return result;
-}
-
-/**
- * cal_backend_get_n_objects:
- * @backend: A calendar backend.
- * @type: Types of objects that will be included in the count.
- *
- * Queries the number of calendar objects of a particular type.
- *
- * Return value: Number of objects of the specified @type.
- **/
-int
-cal_backend_get_n_objects (CalBackend *backend, CalObjType type)
-{
- g_return_val_if_fail (backend != NULL, -1);
- g_return_val_if_fail (IS_CAL_BACKEND (backend), -1);
-
- g_assert (CLASS (backend)->get_n_objects != NULL);
- return (* CLASS (backend)->get_n_objects) (backend, type);
-}
-
-/**
- * cal_backend_get_object:
- * @backend: A calendar backend.
- * @uid: Unique identifier for a calendar object.
- *
- * Queries a calendar backend for a calendar object based on its unique
- * identifier.
- *
- * Return value: The string representation of a complete calendar wrapping the
- * the sought object, or NULL if no object had the specified UID. A complete
- * calendar is returned because you also need the timezone data.
- **/
-char *
-cal_backend_get_object (CalBackend *backend, const char *uid)
-{
- g_return_val_if_fail (backend != NULL, NULL);
- g_return_val_if_fail (IS_CAL_BACKEND (backend), NULL);
- g_return_val_if_fail (uid != NULL, NULL);
-
- g_assert (CLASS (backend)->get_object != NULL);
- return (* CLASS (backend)->get_object) (backend, uid);
-}
-
-/**
- * cal_backend_get_uids:
- * @backend: A calendar backend.
- * @type: Bitmask with types of objects to return.
- *
- * Builds a list of unique identifiers corresponding to calendar objects whose
- * type matches one of the types specified in the @type flags.
- *
- * Return value: A list of strings that are the sought UIDs. The list should be
- * freed using the cal_obj_uid_list_free() function.
- **/
-GList *
-cal_backend_get_uids (CalBackend *backend, CalObjType type)
-{
- g_return_val_if_fail (backend != NULL, NULL);
- g_return_val_if_fail (IS_CAL_BACKEND (backend), NULL);
-
- g_assert (CLASS (backend)->get_uids != NULL);
- return (* CLASS (backend)->get_uids) (backend, type);
-}
-
-
-/**
- * cal_backend_get_objects_in_range:
- * @backend: A calendar backend.
- * @type: Bitmask with types of objects to return.
- * @start: Start time for query.
- * @end: End time for query.
- *
- * Builds a list of unique identifiers corresponding to calendar objects of the
- * specified type that occur or recur within the specified time range.
- *
- * Return value: A list of UID strings. The list should be freed using the
- * cal_obj_uid_list_free() function.
- **/
-GList *
-cal_backend_get_objects_in_range (CalBackend *backend, CalObjType type,
- time_t start, time_t end)
-{
- g_return_val_if_fail (backend != NULL, NULL);
- g_return_val_if_fail (IS_CAL_BACKEND (backend), NULL);
- g_return_val_if_fail (start != -1 && end != -1, NULL);
- g_return_val_if_fail (start <= end, NULL);
-
- g_assert (CLASS (backend)->get_objects_in_range != NULL);
- return (* CLASS (backend)->get_objects_in_range) (backend, type, start, end);
-}
-
-/**
- * cal_backend_get_changes:
- * @backend: A calendar backend
- * @type: Bitmask with types of objects to return.
- * @change_id: A unique uid for the callers change list
- *
- * Builds a sequence of objects and the type of change that occurred on them since
- * the last time the give change_id was seen
- *
- * Return value: A list of the objects that changed and the type of change
- **/
-GNOME_Evolution_Calendar_CalObjChangeSeq *
-cal_backend_get_changes (CalBackend *backend, CalObjType type, const char *change_id)
-{
- g_return_val_if_fail (backend != NULL, NULL);
- g_return_val_if_fail (IS_CAL_BACKEND (backend), NULL);
- g_return_val_if_fail (change_id != NULL, NULL);
-
- g_assert (CLASS (backend)->get_changes != NULL);
- return (* CLASS (backend)->get_changes) (backend, type, change_id);
-}
-
-/**
- * cal_backend_get_alarms_in_range:
- * @backend: A calendar backend.
- * @start: Start time for query.
- * @end: End time for query.
- * @valid_range: Return value that says whether the range is valid or not.
- *
- * Builds a sorted list of the alarms that trigger in the specified time range.
- *
- * Return value: A sequence of component alarm instances structures, or NULL
- * if @valid_range returns FALSE.
- **/
-GNOME_Evolution_Calendar_CalComponentAlarmsSeq *
-cal_backend_get_alarms_in_range (CalBackend *backend, time_t start, time_t end, gboolean *valid_range)
-{
- g_return_val_if_fail (backend != NULL, NULL);
- g_return_val_if_fail (IS_CAL_BACKEND (backend), NULL);
- g_return_val_if_fail (valid_range != NULL, NULL);
-
- g_assert (CLASS (backend)->get_alarms_in_range != NULL);
-
- if (!(start != -1 && end != -1 && start <= end)) {
- *valid_range = FALSE;
- return NULL;
- } else {
- *valid_range = TRUE;
- return (* CLASS (backend)->get_alarms_in_range) (backend, start, end);
- }
-}
-
-/**
- * cal_backend_get_alarms_for_object:
- * @backend: A calendar backend.
- * @uid: Unique identifier for a calendar object.
- * @start: Start time for query.
- * @end: End time for query.
- * @result: Return value for the result code for the operation.
- *
- * Builds a sorted list of the alarms of the specified event that trigger in a
- * particular time range.
- *
- * Return value: A structure of the component's alarm instances, or NULL if @result
- * returns something other than #CAL_BACKEND_GET_ALARMS_SUCCESS.
- **/
-GNOME_Evolution_Calendar_CalComponentAlarms *
-cal_backend_get_alarms_for_object (CalBackend *backend, const char *uid,
- time_t start, time_t end,
- CalBackendGetAlarmsForObjectResult *result)
-{
- g_return_val_if_fail (backend != NULL, NULL);
- g_return_val_if_fail (IS_CAL_BACKEND (backend), NULL);
- g_return_val_if_fail (uid != NULL, NULL);
- g_return_val_if_fail (result != NULL, NULL);
-
- g_assert (CLASS (backend)->get_alarms_for_object != NULL);
-
- if (!(start != -1 && end != -1 && start <= end)) {
- *result = CAL_BACKEND_GET_ALARMS_INVALID_RANGE;
- return NULL;
- } else {
- gboolean object_found;
- GNOME_Evolution_Calendar_CalComponentAlarms *alarms;
-
- alarms = (* CLASS (backend)->get_alarms_for_object) (backend, uid, start, end,
- &object_found);
-
- if (object_found)
- *result = CAL_BACKEND_GET_ALARMS_SUCCESS;
- else
- *result = CAL_BACKEND_GET_ALARMS_NOT_FOUND;
-
- return alarms;
- }
-}
-
-/**
- * cal_backend_update_object:
- * @backend: A calendar backend.
- * @uid: Unique identifier of the object to update.
- * @calobj: String representation of the new calendar object.
- *
- * Updates an object in a calendar backend. It will replace any existing
- * object that has the same UID as the specified one. The backend will in
- * turn notify all of its clients about the change.
- *
- * Return value: TRUE on success, FALSE on being passed an invalid object or one
- * with an unsupported type.
- **/
-gboolean
-cal_backend_update_object (CalBackend *backend, const char *uid, const char *calobj)
-{
- g_return_val_if_fail (backend != NULL, FALSE);
- g_return_val_if_fail (IS_CAL_BACKEND (backend), FALSE);
- g_return_val_if_fail (uid != NULL, FALSE);
- g_return_val_if_fail (calobj != NULL, FALSE);
-
- g_assert (CLASS (backend)->update_object != NULL);
- return (* CLASS (backend)->update_object) (backend, uid, calobj);
-}
-
-/**
- * cal_backend_remove_object:
- * @backend: A calendar backend.
- * @uid: Unique identifier of the object to remove.
- *
- * Removes an object in a calendar backend. The backend will notify all of its
- * clients about the change.
- *
- * Return value: TRUE on success, FALSE on being passed an UID for an object
- * that does not exist in the backend.
- **/
-gboolean
-cal_backend_remove_object (CalBackend *backend, const char *uid)
-{
- g_return_val_if_fail (backend != NULL, FALSE);
- g_return_val_if_fail (IS_CAL_BACKEND (backend), FALSE);
- g_return_val_if_fail (uid != NULL, FALSE);
-
- g_assert (CLASS (backend)->remove_object != NULL);
- return (* CLASS (backend)->remove_object) (backend, uid);
-}
-
-/**
- * cal_backend_last_client_gone:
- * @backend: A calendar backend.
- *
- * Emits the "last_client_gone" signal of a calendar backend. This function is
- * to be used only by backend implementations.
- **/
-void
-cal_backend_last_client_gone (CalBackend *backend)
-{
- g_return_if_fail (backend != NULL);
- g_return_if_fail (IS_CAL_BACKEND (backend));
-
- gtk_signal_emit (GTK_OBJECT (backend), cal_backend_signals[LAST_CLIENT_GONE]);
-}
-
-/**
- * cal_backend_opened:
- * @backend: A calendar backend.
- * @status: Open status code.
- *
- * Emits the "opened" signal of a calendar backend. This function is to be used
- * only by backend implementations.
- **/
-void
-cal_backend_opened (CalBackend *backend, CalBackendOpenStatus status)
-{
- g_return_if_fail (backend != NULL);
- g_return_if_fail (IS_CAL_BACKEND (backend));
-
- gtk_signal_emit (GTK_OBJECT (backend), cal_backend_signals[OPENED],
- status);
-}
-
-/**
- * cal_backend_obj_updated:
- * @backend: A calendar backend.
- * @uid: Unique identifier of the component that was updated.
- *
- * Emits the "obj_updated" signal of a calendar backend. This function is to be
- * used only by backend implementations.
- **/
-void
-cal_backend_obj_updated (CalBackend *backend, const char *uid)
-{
- g_return_if_fail (backend != NULL);
- g_return_if_fail (IS_CAL_BACKEND (backend));
- g_return_if_fail (uid != NULL);
-
- gtk_signal_emit (GTK_OBJECT (backend), cal_backend_signals[OBJ_UPDATED],
- uid);
-}
-
-/**
- * cal_backend_obj_removed:
- * @backend: A calendar backend.
- * @uid: Unique identifier of the component that was removed.
- *
- * Emits the "obj_removed" signal of a calendar backend. This function is to be
- * used only by backend implementations.
- **/
-void
-cal_backend_obj_removed (CalBackend *backend, const char *uid)
-{
- g_return_if_fail (backend != NULL);
- g_return_if_fail (IS_CAL_BACKEND (backend));
- g_return_if_fail (uid != NULL);
-
- gtk_signal_emit (GTK_OBJECT (backend), cal_backend_signals[OBJ_REMOVED],
- uid);
-}
diff --git a/calendar/pcs/cal-backend.h b/calendar/pcs/cal-backend.h
deleted file mode 100644
index dab06b21e8..0000000000
--- a/calendar/pcs/cal-backend.h
+++ /dev/null
@@ -1,153 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* Evolution calendar - generic backend class
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef CAL_BACKEND_H
-#define CAL_BACKEND_H
-
-#include <libgnome/gnome-defs.h>
-#include <libgnomevfs/gnome-vfs.h>
-#include <cal-util/cal-util.h>
-#include <cal-util/cal-component.h>
-#include "evolution-calendar.h"
-#include "cal-common.h"
-#include "cal.h"
-
-BEGIN_GNOME_DECLS
-
-
-
-#define CAL_BACKEND_TYPE (cal_backend_get_type ())
-#define CAL_BACKEND(obj) (GTK_CHECK_CAST ((obj), CAL_BACKEND_TYPE, CalBackend))
-#define CAL_BACKEND_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), CAL_BACKEND_TYPE, \
- CalBackendClass))
-#define IS_CAL_BACKEND(obj) (GTK_CHECK_TYPE ((obj), CAL_BACKEND_TYPE))
-#define IS_CAL_BACKEND_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), CAL_BACKEND_TYPE))
-
-/* Open status values */
-typedef enum {
- CAL_BACKEND_OPEN_SUCCESS, /* Loading OK */
- CAL_BACKEND_OPEN_ERROR, /* We need better error reporting in libversit */
- CAL_BACKEND_OPEN_NOT_FOUND
-} CalBackendOpenStatus;
-
-/* Result codes for ::get_alarms_in_range() */
-typedef enum {
- CAL_BACKEND_GET_ALARMS_SUCCESS,
- CAL_BACKEND_GET_ALARMS_NOT_FOUND,
- CAL_BACKEND_GET_ALARMS_INVALID_RANGE
-} CalBackendGetAlarmsForObjectResult;
-
-struct _CalBackend {
- GtkObject object;
-};
-
-struct _CalBackendClass {
- GtkObjectClass parent_class;
-
- /* Notification signals */
- void (* last_client_gone) (CalBackend *backend);
-
- void (* opened) (CalBackend *backend, CalBackendOpenStatus status);
- void (* obj_updated) (CalBackend *backend, const char *uid);
- void (* obj_removed) (CalBackend *backend, const char *uid);
-
- /* Virtual methods */
- GnomeVFSURI *(* get_uri) (CalBackend *backend);
- void (* add_cal) (CalBackend *backend, Cal *cal);
-
- CalBackendOpenStatus (* open) (CalBackend *backend, GnomeVFSURI *uri,
- gboolean only_if_exists);
-
- gboolean (* is_loaded) (CalBackend *backend);
-
- /* General object acquirement and information related virtual methods */
- int (* get_n_objects) (CalBackend *backend, CalObjType type);
- char *(* get_object) (CalBackend *backend, const char *uid);
- CalObjType(* get_type_by_uid) (CalBackend *backend, const char *uid);
- GList *(* get_uids) (CalBackend *backend, CalObjType type);
-
- GList *(* get_objects_in_range) (CalBackend *backend, CalObjType type,
- time_t start, time_t end);
-
- /* Change related virtual methods */
- GNOME_Evolution_Calendar_CalObjChangeSeq * (* get_changes) (
- CalBackend *backend, CalObjType type, const char *change_id);
-
- /* Alarm related virtual methods */
- GNOME_Evolution_Calendar_CalComponentAlarmsSeq *(* get_alarms_in_range) (
- CalBackend *backend, time_t start, time_t end);
- GNOME_Evolution_Calendar_CalComponentAlarms *(* get_alarms_for_object) (
- CalBackend *backend, const char *uid,
- time_t start, time_t end, gboolean *object_found);
-
- /* Object manipulation virtual methods */
- gboolean (* update_object) (CalBackend *backend, const char *uid, const char *calobj);
- gboolean (* remove_object) (CalBackend *backend, const char *uid);
-};
-
-GtkType cal_backend_get_type (void);
-
-GnomeVFSURI *cal_backend_get_uri (CalBackend *backend);
-
-void cal_backend_add_cal (CalBackend *backend, Cal *cal);
-
-CalBackendOpenStatus cal_backend_open (CalBackend *backend, GnomeVFSURI *uri,
- gboolean only_if_exists);
-
-gboolean cal_backend_is_loaded (CalBackend *backend);
-
-int cal_backend_get_n_objects (CalBackend *backend, CalObjType type);
-
-char *cal_backend_get_object (CalBackend *backend, const char *uid);
-
-GList *cal_backend_get_uids (CalBackend *backend, CalObjType type);
-
-GList *cal_backend_get_objects_in_range (CalBackend *backend, CalObjType type,
- time_t start, time_t end);
-
-GNOME_Evolution_Calendar_CalObjChangeSeq * cal_backend_get_changes (
- CalBackend *backend, CalObjType type, const char *change_id);
-
-GNOME_Evolution_Calendar_CalComponentAlarmsSeq *cal_backend_get_alarms_in_range (
- CalBackend *backend, time_t start, time_t end, gboolean *valid_range);
-
-GNOME_Evolution_Calendar_CalComponentAlarms *cal_backend_get_alarms_for_object (
- CalBackend *backend, const char *uid,
- time_t start, time_t end,
- CalBackendGetAlarmsForObjectResult *result);
-
-
-gboolean cal_backend_update_object (CalBackend *backend, const char *uid, const char *calobj);
-
-gboolean cal_backend_remove_object (CalBackend *backend, const char *uid);
-
-void cal_backend_last_client_gone (CalBackend *backend);
-void cal_backend_opened (CalBackend *backend, CalBackendOpenStatus status);
-void cal_backend_obj_updated (CalBackend *backend, const char *uid);
-void cal_backend_obj_removed (CalBackend *backend, const char *uid);
-
-
-
-END_GNOME_DECLS
-
-#endif
diff --git a/calendar/pcs/cal-common.h b/calendar/pcs/cal-common.h
deleted file mode 100644
index 3454742ce8..0000000000
--- a/calendar/pcs/cal-common.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Evolution calendar server - common declarations
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef CAL_COMMON_H
-#define CAL_COMMON_H
-
-#include <libgnome/gnome-defs.h>
-
-BEGIN_GNOME_DECLS
-
-
-
-typedef struct _CalBackend CalBackend;
-typedef struct _CalBackendClass CalBackendClass;
-
-typedef struct _Cal Cal;
-typedef struct _CalClass CalClass;
-
-
-
-END_GNOME_DECLS
-
-#endif
diff --git a/calendar/pcs/cal-factory.c b/calendar/pcs/cal-factory.c
deleted file mode 100644
index 2abbd0b6d1..0000000000
--- a/calendar/pcs/cal-factory.c
+++ /dev/null
@@ -1,652 +0,0 @@
-/* Evolution calendar factory
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <ctype.h>
-#include <stdio.h>
-#include <gtk/gtksignal.h>
-#include <liboaf/liboaf.h>
-#include "cal.h"
-#include "cal-backend.h"
-#include "cal-factory.h"
-#include "job.h"
-
-#define PARENT_TYPE BONOBO_X_OBJECT_TYPE
-#define CAL_FACTORY_OAF_ID "OAFIID:GNOME_Evolution_Wombat_CalendarFactory"
-
-static BonoboXObjectClass *parent_class;
-
-/* Private part of the CalFactory structure */
-struct _CalFactoryPrivate {
- /* Hash table from URI method strings to GtkType * for backend class types */
- GHashTable *methods;
-
- /* Hash table from GnomeVFSURI structures to CalBackend objects */
- GHashTable *backends;
-
- /* Whether we have been registered with OAF yet */
- guint registered : 1;
-};
-
-/* Signal IDs */
-enum SIGNALS {
- LAST_CALENDAR_GONE,
- LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL];
-
-/* Frees a method/GtkType * pair from the methods hash table */
-static void
-free_method (gpointer key, gpointer value, gpointer data)
-{
- char *method;
- GtkType *type;
-
- method = key;
- type = value;
-
- g_free (method);
- g_free (type);
-}
-
-/* Frees a uri/backend pair from the backends hash table */
-static void
-free_backend (gpointer key, gpointer value, gpointer data)
-{
- GnomeVFSURI *uri;
- CalBackend *backend;
-
- uri = key;
- backend = value;
-
- gnome_vfs_uri_unref (uri);
- gtk_object_unref (GTK_OBJECT (backend));
-}
-
-/* Opening calendars */
-
-/* Looks up a calendar backend in a factory's hash table of uri->cal */
-static CalBackend *
-lookup_backend (CalFactory *factory, GnomeVFSURI *uri)
-{
- CalFactoryPrivate *priv;
- CalBackend *backend;
-
- priv = factory->priv;
-
- backend = g_hash_table_lookup (priv->backends, uri);
- return backend;
-}
-
-/* Callback used when a backend loses its last connected client */
-static void
-backend_last_client_gone_cb (CalBackend *backend, gpointer data)
-{
- CalFactory *factory;
- CalFactoryPrivate *priv;
- GnomeVFSURI *uri;
- gpointer orig_key;
- gboolean result;
- GnomeVFSURI *orig_uri;
-
- fprintf (stderr, "backend_last_client_gone_cb() called!\n");
-
- factory = CAL_FACTORY (data);
- priv = factory->priv;
-
- /* Remove the backend from the hash table */
-
- uri = cal_backend_get_uri (backend);
- g_assert (uri != NULL);
-
- result = g_hash_table_lookup_extended (priv->backends, uri, &orig_key, NULL);
- g_assert (result != FALSE);
-
- orig_uri = orig_key;
-
- g_hash_table_remove (priv->backends, orig_uri);
- gnome_vfs_uri_unref (orig_uri);
-
- gtk_object_unref (GTK_OBJECT (backend));
-
- /* Notify upstream if there are no more backends */
-
- if (g_hash_table_size (priv->backends) == 0)
- gtk_signal_emit (GTK_OBJECT (factory), signals[LAST_CALENDAR_GONE]);
-}
-
-/* Adds a backend to the calendar factory's hash table */
-static void
-add_backend (CalFactory *factory, GnomeVFSURI *uri, CalBackend *backend)
-{
- CalFactoryPrivate *priv;
-
- priv = factory->priv;
-
- gnome_vfs_uri_ref (uri);
- g_hash_table_insert (priv->backends, uri, backend);
-
- gtk_signal_connect (GTK_OBJECT (backend), "last_client_gone",
- GTK_SIGNAL_FUNC (backend_last_client_gone_cb),
- factory);
-}
-
-/* Tries to launch a backend for the method of the specified URI. If there is
- * no such method registered in the factory, it sends the listener the
- * MethodNotSupported error code.
- */
-static CalBackend *
-launch_backend_for_uri (CalFactory *factory, GnomeVFSURI *uri, GNOME_Evolution_Calendar_Listener listener)
-{
- CalFactoryPrivate *priv;
- char *method;
- GtkType *type;
- CalBackend *backend;
-
- priv = factory->priv;
-
- /* FIXME: add an accessor function to gnome-vfs */
- method = uri->method_string;
-
- type = g_hash_table_lookup (priv->methods, method);
-
- if (!type) {
- CORBA_Environment ev;
-
- CORBA_exception_init (&ev);
- GNOME_Evolution_Calendar_Listener_notifyCalOpened (
- listener,
- GNOME_Evolution_Calendar_Listener_METHOD_NOT_SUPPORTED,
- CORBA_OBJECT_NIL,
- &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("launch_backend_for_uri(): could not notify the listener");
-
- CORBA_exception_free (&ev);
- return NULL;
- }
-
- backend = gtk_type_new (*type);
- if (!backend)
- g_message ("launch_backend_for_uri(): could not launch the backend");
-
- return backend;
-}
-
-/* Opens a calendar backend and puts it in the factory's backend hash table */
-static CalBackend *
-open_backend (CalFactory *factory, GnomeVFSURI *uri, gboolean only_if_exists,
- GNOME_Evolution_Calendar_Listener listener)
-{
- CalFactoryPrivate *priv;
- CalBackend *backend;
- CalBackendOpenStatus status;
- CORBA_Environment ev;
-
- priv = factory->priv;
-
- backend = launch_backend_for_uri (factory, uri, listener);
- if (!backend)
- return NULL;
-
- status = cal_backend_open (backend, uri, only_if_exists);
-
- switch (status) {
- case CAL_BACKEND_OPEN_SUCCESS:
- add_backend (factory, uri, backend);
- return backend;
-
- case CAL_BACKEND_OPEN_ERROR:
- gtk_object_unref (GTK_OBJECT (backend));
-
- CORBA_exception_init (&ev);
- GNOME_Evolution_Calendar_Listener_notifyCalOpened (
- listener,
- GNOME_Evolution_Calendar_Listener_ERROR,
- CORBA_OBJECT_NIL,
- &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("open_backend(): could not notify the listener");
-
- CORBA_exception_free (&ev);
- return NULL;
-
- case CAL_BACKEND_OPEN_NOT_FOUND:
- gtk_object_unref (GTK_OBJECT (backend));
-
- CORBA_exception_init (&ev);
- GNOME_Evolution_Calendar_Listener_notifyCalOpened (
- listener,
- GNOME_Evolution_Calendar_Listener_NOT_FOUND,
- CORBA_OBJECT_NIL,
- &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("open_backend(): could not notify the listener");
-
- CORBA_exception_free (&ev);
- return NULL;
-
- default:
- g_assert_not_reached ();
- return NULL;
- }
-}
-
-/* Adds a listener to a calendar backend by creating a calendar client interface
- * object.
- */
-static void
-add_calendar_client (CalFactory *factory, CalBackend *backend, GNOME_Evolution_Calendar_Listener listener)
-{
- Cal *cal;
- CORBA_Environment ev;
-
- cal = cal_new (backend, listener);
- if (!cal) {
- g_message ("add_calendar_client(): could not create the calendar client interface");
-
- CORBA_exception_init (&ev);
- GNOME_Evolution_Calendar_Listener_notifyCalOpened (
- listener,
- GNOME_Evolution_Calendar_Listener_ERROR,
- CORBA_OBJECT_NIL,
- &ev);
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("add_calendar_client(): could not notify the listener");
-
- CORBA_exception_free (&ev);
- return;
- }
-
- cal_backend_add_cal (backend, cal);
-
- CORBA_exception_init (&ev);
- GNOME_Evolution_Calendar_Listener_notifyCalOpened (
- listener,
- GNOME_Evolution_Calendar_Listener_SUCCESS,
- BONOBO_OBJREF (cal),
- &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_message ("add_calendar_client(): could not notify the listener");
- bonobo_object_unref (BONOBO_OBJECT (cal));
- }
-
- CORBA_exception_free (&ev);
-}
-
-/* Job data */
-typedef struct {
- CalFactory *factory;
- char *uri;
- gboolean only_if_exists;
- GNOME_Evolution_Calendar_Listener listener;
-} OpenJobData;
-
-/* Job handler for the open calendar command */
-static void
-open_fn (gpointer data)
-{
- OpenJobData *jd;
- CalFactory *factory;
- GnomeVFSURI *uri;
- gboolean only_if_exists;
- GNOME_Evolution_Calendar_Listener listener;
- CalBackend *backend;
- CORBA_Environment ev;
-
- jd = data;
- g_assert (jd->uri != NULL);
-
- /* Check the URI */
-
- uri = gnome_vfs_uri_new (jd->uri);
- g_free (jd->uri);
-
- only_if_exists = jd->only_if_exists;
- factory = jd->factory;
- listener = jd->listener;
- g_free (jd);
-
- if (!uri) {
- CORBA_exception_init (&ev);
- GNOME_Evolution_Calendar_Listener_notifyCalOpened (
- listener,
- GNOME_Evolution_Calendar_Listener_ERROR,
- CORBA_OBJECT_NIL,
- &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("open_fn(): Could not notify the listener!");
-
- CORBA_exception_free (&ev);
- goto out;
- }
-
- /* Look up the backend and create it if needed */
-
- backend = lookup_backend (factory, uri);
-
- if (!backend)
- backend = open_backend (factory, uri, only_if_exists, listener);
-
- gnome_vfs_uri_unref (uri);
-
- if (backend)
- add_calendar_client (factory, backend, listener);
-
- out:
-
- CORBA_exception_init (&ev);
- CORBA_Object_release (listener, &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("open_fn(): could not release the listener");
-
- CORBA_exception_free (&ev);
-}
-
-
-
-static void
-impl_CalFactory_open (PortableServer_Servant servant,
- const CORBA_char *uri,
- CORBA_boolean only_if_exists,
- GNOME_Evolution_Calendar_Listener listener,
- CORBA_Environment *ev)
-{
- CalFactory *factory;
- CalFactoryPrivate *priv;
- CORBA_Environment ev2;
- gboolean result;
- OpenJobData *jd;
- GNOME_Evolution_Calendar_Listener listener_copy;
-
- factory = CAL_FACTORY (bonobo_object_from_servant (servant));
- priv = factory->priv;
-
- CORBA_exception_init (&ev2);
- result = CORBA_Object_is_nil (listener, &ev2);
-
- if (ev2._major != CORBA_NO_EXCEPTION || result) {
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_GNOME_Evolution_Calendar_CalFactory_NilListener,
- NULL);
-
- CORBA_exception_free (&ev2);
- return;
- }
- CORBA_exception_free (&ev2);
-
- CORBA_exception_init (&ev2);
- listener_copy = CORBA_Object_duplicate (listener, &ev2);
-
- if (ev2._major != CORBA_NO_EXCEPTION) {
- g_message ("CalFactory_open(): could not duplicate the listener");
- CORBA_exception_free (&ev2);
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_GNOME_Evolution_Calendar_CalFactory_NilListener,
- NULL);
- return;
- }
-
- CORBA_exception_free (&ev2);
-
- jd = g_new (OpenJobData, 1);
- jd->factory = factory;
- jd->uri = g_strdup (uri);
- jd->only_if_exists = only_if_exists;
- jd->listener = listener_copy;
-
- job_add (open_fn, jd);
-}
-
-
-
-/**
- * cal_factory_new:
- * @void:
- *
- * Creates a new #CalFactory object.
- *
- * Return value: A newly-created #CalFactory, or NULL if its corresponding CORBA
- * object could not be created.
- **/
-CalFactory *
-cal_factory_new (void)
-{
- CalFactory *factory;
-
- factory = gtk_type_new (CAL_FACTORY_TYPE);
-
- return factory;
-}
-
-/* Destroy handler for the calendar */
-static void
-cal_factory_destroy (GtkObject *object)
-{
- CalFactory *factory;
- CalFactoryPrivate *priv;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (IS_CAL_FACTORY (object));
-
- factory = CAL_FACTORY (object);
- priv = factory->priv;
-
- g_hash_table_foreach (priv->methods, free_method, NULL);
- g_hash_table_destroy (priv->methods);
- priv->methods = NULL;
-
- /* Should we assert that there are no more backends? */
-
- g_hash_table_foreach (priv->backends, free_backend, NULL);
- g_hash_table_destroy (priv->backends);
- priv->backends = NULL;
-
- if (priv->registered) {
- oaf_active_server_unregister (CAL_FACTORY_OAF_ID, BONOBO_OBJREF (factory));
- priv->registered = FALSE;
- }
-
- g_free (priv);
- factory->priv = NULL;
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-/* Class initialization function for the calendar factory */
-static void
-cal_factory_class_init (CalFactoryClass *klass)
-{
- GtkObjectClass *object_class = (GtkObjectClass *) klass;
- POA_GNOME_Evolution_Calendar_CalFactory__epv *epv = &klass->epv;
-
- parent_class = gtk_type_class (bonobo_object_get_type ());
-
- signals[LAST_CALENDAR_GONE] =
- gtk_signal_new ("last_calendar_gone",
- GTK_RUN_FIRST,
- object_class->type,
- GTK_SIGNAL_OFFSET (CalFactoryClass, last_calendar_gone),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- gtk_object_class_add_signals (object_class, signals, LAST_SIGNAL);
-
- /* Class method overrides */
- object_class->destroy = cal_factory_destroy;
-
- /* Epv methods */
- epv->open = impl_CalFactory_open;
-}
-
-/* Object initialization function for the calendar factory */
-static void
-cal_factory_init (CalFactory *factory)
-{
- CalFactoryPrivate *priv;
-
- priv = g_new0 (CalFactoryPrivate, 1);
- factory->priv = priv;
-
- priv->methods = g_hash_table_new (g_str_hash, g_str_equal);
- priv->backends = g_hash_table_new (gnome_vfs_uri_hash, gnome_vfs_uri_hequal);
- priv->registered = FALSE;
-}
-
-BONOBO_X_TYPE_FUNC_FULL (CalFactory,
- GNOME_Evolution_Calendar_CalFactory,
- PARENT_TYPE,
- cal_factory);
-
-/* Returns the lowercase version of a string */
-static char *
-str_tolower (const char *s)
-{
- char *str;
- unsigned char *p;
-
- str = g_strdup (s);
- for (p = str; *p; p++)
- if (isalpha (*p))
- *p = tolower (*p);
-
- return str;
-}
-
-/**
- * cal_factory_oaf_register:
- * @factory: A calendar factory.
- *
- * Registers a calendar factory with the OAF object activation daemon. This
- * function must be called before any clients can activate the factory.
- *
- * Return value: TRUE on success, FALSE otherwise.
- **/
-gboolean
-cal_factory_oaf_register (CalFactory *factory)
-{
- CalFactoryPrivate *priv;
- OAF_RegistrationResult result;
-
- g_return_val_if_fail (factory != NULL, FALSE);
- g_return_val_if_fail (IS_CAL_FACTORY (factory), FALSE);
-
- priv = factory->priv;
-
- g_return_val_if_fail (!priv->registered, FALSE);
-
- result = oaf_active_server_register (CAL_FACTORY_OAF_ID, BONOBO_OBJREF (factory));
-
- switch (result) {
- case OAF_REG_SUCCESS:
- priv->registered = TRUE;
- return TRUE;
-
- case OAF_REG_NOT_LISTED:
- g_message ("cal_factory_oaf_register(): Cannot register the calendar factory: "
- "not listed");
- break;
-
- case OAF_REG_ALREADY_ACTIVE:
- g_message ("cal_factory_oaf_register(): Cannot register the calendar factory: "
- "already active");
- break;
-
- case OAF_REG_ERROR:
- default:
- g_message ("cal_factory_oaf_register(): Cannot register the calendar factory: "
- "generic error");
- break;
- }
-
- return FALSE;
-}
-
-/**
- * cal_factory_register_method:
- * @factory: A calendar factory.
- * @method: Method for the URI, i.e. "http", "file", etc.
- * @backend_type: Class type of the backend to create for this @method.
- *
- * Registers the type of a #CalBackend subclass that will be used to handle URIs
- * with a particular method. When the factory is asked to open a particular
- * URI, it will look in its list of registered methods and create a backend of
- * the appropriate type.
- **/
-void
-cal_factory_register_method (CalFactory *factory, const char *method, GtkType backend_type)
-{
- CalFactoryPrivate *priv;
- GtkType *type;
- char *method_str;
-
- g_return_if_fail (factory != NULL);
- g_return_if_fail (IS_CAL_FACTORY (factory));
- g_return_if_fail (method != NULL);
- g_return_if_fail (backend_type != 0);
- g_return_if_fail (gtk_type_is_a (backend_type, CAL_BACKEND_TYPE));
-
- priv = factory->priv;
-
- method_str = str_tolower (method);
-
- type = g_hash_table_lookup (priv->methods, method_str);
- if (type) {
- g_message ("cal_factory_register_method(): Method `%s' already registered!",
- method_str);
- g_free (method_str);
- return;
- }
-
- type = g_new (GtkType, 1);
- *type = backend_type;
-
- g_hash_table_insert (priv->methods, method_str, type);
-}
-
-/**
- * cal_factory_get_n_backends:
- * @factory: A calendar factory.
- *
- * Queries the number of running calendar backends in a calendar factory.
- *
- * Return value: Number of running backends.
- **/
-int
-cal_factory_get_n_backends (CalFactory *factory)
-{
- CalFactoryPrivate *priv;
-
- g_return_val_if_fail (factory != NULL, -1);
- g_return_val_if_fail (IS_CAL_FACTORY (factory), -1);
-
- priv = factory->priv;
- return g_hash_table_size (priv->backends);
-}
diff --git a/calendar/pcs/cal-factory.h b/calendar/pcs/cal-factory.h
deleted file mode 100644
index 008fc2c36d..0000000000
--- a/calendar/pcs/cal-factory.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Evolution calendar factory
- *
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef CAL_FACTORY_H
-#define CAL_FACTORY_H
-
-#include <libgnome/gnome-defs.h>
-#include <bonobo/bonobo-xobject.h>
-
-#include "evolution-calendar.h"
-
-BEGIN_GNOME_DECLS
-
-
-
-#define CAL_FACTORY_TYPE (cal_factory_get_type ())
-#define CAL_FACTORY(obj) (GTK_CHECK_CAST ((obj), CAL_FACTORY_TYPE, CalFactory))
-#define CAL_FACTORY_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), CAL_FACTORY_TYPE, \
- CalFactoryClass))
-#define IS_CAL_FACTORY(obj) (GTK_CHECK_TYPE ((obj), CAL_FACTORY_TYPE))
-#define IS_CAL_FACTORY_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), CAL_FACTORY_TYPE))
-
-typedef struct _CalFactory CalFactory;
-typedef struct _CalFactoryClass CalFactoryClass;
-
-typedef struct _CalFactoryPrivate CalFactoryPrivate;
-
-struct _CalFactory {
- BonoboXObject object;
-
- /* Private data */
- CalFactoryPrivate *priv;
-};
-
-struct _CalFactoryClass {
- BonoboXObjectClass parent_class;
-
- POA_GNOME_Evolution_Calendar_CalFactory__epv epv;
-
- /* Notification signals */
- void (* last_calendar_gone) (CalFactory *factory);
-};
-
-GtkType cal_factory_get_type (void);
-CalFactory *cal_factory_new (void);
-
-gboolean cal_factory_oaf_register (CalFactory *factory);
-void cal_factory_register_method (CalFactory *factory,
- const char *method,
- GtkType backend_type);
-int cal_factory_get_n_backends (CalFactory *factory);
-
-END_GNOME_DECLS
-
-#endif
diff --git a/calendar/pcs/cal.c b/calendar/pcs/cal.c
deleted file mode 100644
index 6eb951133b..0000000000
--- a/calendar/pcs/cal.c
+++ /dev/null
@@ -1,587 +0,0 @@
-/* Evolution calendar client interface object
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include "cal.h"
-#include "query.h"
-
-#define PARENT_TYPE BONOBO_X_OBJECT_TYPE
-
-static BonoboXObjectClass *parent_class;
-
-/* Private part of the Cal structure */
-struct _CalPrivate {
- /* Our backend */
- CalBackend *backend;
-
- /* Listener on the client we notify */
- GNOME_Evolution_Calendar_Listener listener;
-};
-
-
-/* Cal::get_uri method */
-static CORBA_char *
-impl_Cal_get_uri (PortableServer_Servant servant,
- CORBA_Environment *ev)
-{
- Cal *cal;
- CalPrivate *priv;
- GnomeVFSURI *uri;
- char *str_uri;
- CORBA_char *str_uri_copy;
-
- cal = CAL (bonobo_object_from_servant (servant));
- priv = cal->priv;
-
- uri = cal_backend_get_uri (priv->backend);
- str_uri = gnome_vfs_uri_to_string (uri, GNOME_VFS_URI_HIDE_NONE);
- str_uri_copy = CORBA_string_dup (str_uri);
- g_free (str_uri);
-
- return str_uri_copy;
-}
-
-/* Converts a calendar object type from its CORBA representation to our own
- * representation.
- */
-static CalObjType
-uncorba_obj_type (GNOME_Evolution_Calendar_CalObjType type)
-{
- return (((type & GNOME_Evolution_Calendar_TYPE_EVENT) ? CALOBJ_TYPE_EVENT : 0)
- | ((type & GNOME_Evolution_Calendar_TYPE_TODO) ? CALOBJ_TYPE_TODO : 0)
- | ((type & GNOME_Evolution_Calendar_TYPE_JOURNAL) ? CALOBJ_TYPE_JOURNAL : 0));
-}
-
-/* Cal::get_n_objects method */
-static CORBA_long
-impl_Cal_get_n_objects (PortableServer_Servant servant,
- GNOME_Evolution_Calendar_CalObjType type,
- CORBA_Environment *ev)
-{
- Cal *cal;
- CalPrivate *priv;
- int t;
- int n;
-
- cal = CAL (bonobo_object_from_servant (servant));
- priv = cal->priv;
-
- t = uncorba_obj_type (type);
- n = cal_backend_get_n_objects (priv->backend, t);
- return n;
-}
-
-/* Cal::get_object method */
-static GNOME_Evolution_Calendar_CalObj
-impl_Cal_get_object (PortableServer_Servant servant,
- const GNOME_Evolution_Calendar_CalObjUID uid,
- CORBA_Environment *ev)
-{
- Cal *cal;
- CalPrivate *priv;
- char *calobj;
-
- cal = CAL (bonobo_object_from_servant (servant));
- priv = cal->priv;
-
- calobj = cal_backend_get_object (priv->backend, uid);
-
- if (calobj) {
- CORBA_char *calobj_copy;
-
- calobj_copy = CORBA_string_dup (calobj);
- g_free (calobj);
- return calobj_copy;
- } else {
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_GNOME_Evolution_Calendar_Cal_NotFound,
- NULL);
- return NULL;
- }
-}
-
-static GNOME_Evolution_Calendar_CalObjUIDSeq *
-build_uid_seq (GList *uids)
-{
- GNOME_Evolution_Calendar_CalObjUIDSeq *seq;
- GList *l;
- int n, i;
-
- n = g_list_length (uids);
-
- seq = GNOME_Evolution_Calendar_CalObjUIDSeq__alloc ();
- CORBA_sequence_set_release (seq, TRUE);
- seq->_length = n;
- seq->_buffer = CORBA_sequence_GNOME_Evolution_Calendar_CalObjUID_allocbuf (n);
-
- /* Fill the sequence */
-
- for (i = 0, l = uids; l; i++, l = l->next) {
- char *uid;
-
- uid = l->data;
- seq->_buffer[i] = CORBA_string_dup (uid);
- }
-
- return seq;
-}
-
-/* Cal::get_uids method */
-static GNOME_Evolution_Calendar_CalObjUIDSeq *
-impl_Cal_get_uids (PortableServer_Servant servant,
- GNOME_Evolution_Calendar_CalObjType type,
- CORBA_Environment *ev)
-{
- Cal *cal;
- CalPrivate *priv;
- GList *uids;
- GNOME_Evolution_Calendar_CalObjUIDSeq *seq;
- int t;
-
- cal = CAL (bonobo_object_from_servant (servant));
- priv = cal->priv;
-
- t = uncorba_obj_type (type);
-
- uids = cal_backend_get_uids (priv->backend, t);
- seq = build_uid_seq (uids);
-
- cal_obj_uid_list_free (uids);
-
- return seq;
-}
-
-/* Cal::get_changes method */
-static GNOME_Evolution_Calendar_CalObjChangeSeq *
-impl_Cal_get_changes (PortableServer_Servant servant,
- GNOME_Evolution_Calendar_CalObjType type,
- const CORBA_char *change_id,
- CORBA_Environment *ev)
-{
- Cal *cal;
- CalPrivate *priv;
- int t;
-
- cal = CAL (bonobo_object_from_servant (servant));
- priv = cal->priv;
-
- t = uncorba_obj_type (type);
-
- return cal_backend_get_changes (priv->backend, t, change_id);
-}
-
-/* Cal::get_objects_in_range method */
-static GNOME_Evolution_Calendar_CalObjUIDSeq *
-impl_Cal_get_objects_in_range (PortableServer_Servant servant,
- GNOME_Evolution_Calendar_CalObjType type,
- GNOME_Evolution_Calendar_Time_t start,
- GNOME_Evolution_Calendar_Time_t end,
- CORBA_Environment *ev)
-{
- Cal *cal;
- CalPrivate *priv;
- int t;
- time_t t_start, t_end;
- GNOME_Evolution_Calendar_CalObjUIDSeq *seq;
- GList *uids;
-
- cal = CAL (bonobo_object_from_servant (servant));
- priv = cal->priv;
-
- t = uncorba_obj_type (type);
- t_start = (time_t) start;
- t_end = (time_t) end;
-
- if (t_start > t_end || t_start == -1 || t_end == -1) {
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_GNOME_Evolution_Calendar_Cal_InvalidRange,
- NULL);
- return NULL;
- }
-
- uids = cal_backend_get_objects_in_range (priv->backend, t, t_start, t_end);
- seq = build_uid_seq (uids);
-
- cal_obj_uid_list_free (uids);
-
- return seq;
-}
-
-/* Cal::get_alarms_in_range method */
-static GNOME_Evolution_Calendar_CalComponentAlarmsSeq *
-impl_Cal_get_alarms_in_range (PortableServer_Servant servant,
- GNOME_Evolution_Calendar_Time_t start,
- GNOME_Evolution_Calendar_Time_t end,
- CORBA_Environment *ev)
-{
- Cal *cal;
- CalPrivate *priv;
- time_t t_start, t_end;
- gboolean valid_range;
- GNOME_Evolution_Calendar_CalComponentAlarmsSeq *seq;
-
- cal = CAL (bonobo_object_from_servant (servant));
- priv = cal->priv;
-
- t_start = (time_t) start;
- t_end = (time_t) end;
-
- seq = cal_backend_get_alarms_in_range (priv->backend, t_start, t_end, &valid_range);
- if (!valid_range) {
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_GNOME_Evolution_Calendar_Cal_InvalidRange,
- NULL);
- return NULL;
- }
-
- return seq;
-}
-
-/* Cal::get_alarms_for_object method */
-static GNOME_Evolution_Calendar_CalComponentAlarms *
-impl_Cal_get_alarms_for_object (PortableServer_Servant servant,
- const GNOME_Evolution_Calendar_CalObjUID uid,
- GNOME_Evolution_Calendar_Time_t start,
- GNOME_Evolution_Calendar_Time_t end,
- CORBA_Environment * ev)
-{
- Cal *cal;
- CalPrivate *priv;
- time_t t_start, t_end;
- GNOME_Evolution_Calendar_CalComponentAlarms *alarms;
- CalBackendGetAlarmsForObjectResult result;
-
- cal = CAL (bonobo_object_from_servant (servant));
- priv = cal->priv;
-
- t_start = (time_t) start;
- t_end = (time_t) end;
-
- alarms = cal_backend_get_alarms_for_object (priv->backend, uid, t_start, t_end, &result);
-
- switch (result) {
- case CAL_BACKEND_GET_ALARMS_SUCCESS:
- return alarms;
-
- case CAL_BACKEND_GET_ALARMS_NOT_FOUND:
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_GNOME_Evolution_Calendar_Cal_NotFound,
- NULL);
- return NULL;
-
- case CAL_BACKEND_GET_ALARMS_INVALID_RANGE:
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_GNOME_Evolution_Calendar_Cal_InvalidRange,
- NULL);
- return NULL;
-
- default:
- g_assert_not_reached ();
- return NULL;
- }
-}
-
-/* Cal::update_object method */
-static void
-impl_Cal_update_object (PortableServer_Servant servant,
- const GNOME_Evolution_Calendar_CalObjUID uid,
- const GNOME_Evolution_Calendar_CalObj calobj,
- CORBA_Environment *ev)
-{
- Cal *cal;
- CalPrivate *priv;
-
- cal = CAL (bonobo_object_from_servant (servant));
- priv = cal->priv;
-
- if (!cal_backend_update_object (priv->backend, uid, calobj))
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_GNOME_Evolution_Calendar_Cal_InvalidObject,
- NULL);
-}
-
-/* Cal::remove_object method */
-static void
-impl_Cal_remove_object (PortableServer_Servant servant,
- const GNOME_Evolution_Calendar_CalObjUID uid,
- CORBA_Environment *ev)
-{
- Cal *cal;
- CalPrivate *priv;
-
- cal = CAL (bonobo_object_from_servant (servant));
- priv = cal->priv;
-
- if (!cal_backend_remove_object (priv->backend, uid))
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_GNOME_Evolution_Calendar_Cal_NotFound,
- NULL);
-}
-
-/* Cal::getQuery implementation */
-static GNOME_Evolution_Calendar_Query
-impl_Cal_get_query (PortableServer_Servant servant,
- const CORBA_char *sexp,
- GNOME_Evolution_Calendar_QueryListener ql,
- CORBA_Environment *ev)
-{
- Cal *cal;
- CalPrivate *priv;
- Query *query;
- CORBA_Environment ev2;
- GNOME_Evolution_Calendar_Query query_copy;
-
- cal = CAL (bonobo_object_from_servant (servant));
- priv = cal->priv;
-
- query = query_new (priv->backend, ql, sexp);
- if (!query) {
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_GNOME_Evolution_Calendar_Cal_CouldNotCreate,
- NULL);
- return CORBA_OBJECT_NIL;
- }
-
- CORBA_exception_init (&ev2);
- query_copy = CORBA_Object_duplicate (BONOBO_OBJREF (query), &ev2);
- if (ev2._major != CORBA_NO_EXCEPTION) {
- CORBA_exception_free (&ev2);
- g_message ("Cal_get_query(): Could not duplicate the query reference");
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_GNOME_Evolution_Calendar_Cal_CouldNotCreate,
- NULL);
- return CORBA_OBJECT_NIL;
- }
-
- CORBA_exception_free (&ev2);
-
- return query_copy;
-}
-
-/**
- * cal_construct:
- * @cal: A calendar client interface.
- * @corba_cal: CORBA object for the calendar.
- * @backend: Calendar backend that this @cal presents an interface to.
- * @listener: Calendar listener for notification.
- *
- * Constructs a calendar client interface object by binding the corresponding
- * CORBA object to it. The calendar interface is bound to the specified
- * @backend, and will notify the @listener about changes to the calendar.
- *
- * Return value: The same object as the @cal argument.
- **/
-Cal *
-cal_construct (Cal *cal,
- CalBackend *backend,
- GNOME_Evolution_Calendar_Listener listener)
-{
- CalPrivate *priv;
- CORBA_Environment ev;
-
- g_return_val_if_fail (cal != NULL, NULL);
- g_return_val_if_fail (IS_CAL (cal), NULL);
- g_return_val_if_fail (backend != NULL, NULL);
- g_return_val_if_fail (IS_CAL_BACKEND (backend), NULL);
-
- priv = cal->priv;
-
- CORBA_exception_init (&ev);
- priv->listener = CORBA_Object_duplicate (listener, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_message ("cal_construct: could not duplicate the listener");
- priv->listener = CORBA_OBJECT_NIL;
- CORBA_exception_free (&ev);
- return NULL;
- }
-
- CORBA_exception_free (&ev);
-
- priv->backend = backend;
-
- return cal;
-}
-
-/**
- * cal_new:
- * @backend: A calendar backend.
- * @listener: A calendar listener.
- *
- * Creates a new calendar client interface object and binds it to the specified
- * @backend and @listener objects.
- *
- * Return value: A newly-created #Cal calendar client interface object, or NULL
- * if its corresponding CORBA object could not be created.
- **/
-Cal *
-cal_new (CalBackend *backend, GNOME_Evolution_Calendar_Listener listener)
-{
- Cal *cal, *retval;
-
- g_return_val_if_fail (backend != NULL, NULL);
- g_return_val_if_fail (IS_CAL_BACKEND (backend), NULL);
-
- cal = CAL (gtk_type_new (CAL_TYPE));
-
- retval = cal_construct (cal, backend, listener);
- if (!retval) {
- g_message ("cal_new(): could not construct the calendar client interface");
- bonobo_object_unref (BONOBO_OBJECT (cal));
- return NULL;
- }
-
- return retval;
-}
-
-/* Destroy handler for the calendar */
-static void
-cal_destroy (GtkObject *object)
-{
- Cal *cal;
- CalPrivate *priv;
- CORBA_Environment ev;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (IS_CAL (object));
-
- cal = CAL (object);
- priv = cal->priv;
-
- priv->backend = NULL;
-
- CORBA_exception_init (&ev);
- CORBA_Object_release (priv->listener, &ev);
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("cal_destroy(): could not release the listener");
-
- CORBA_exception_free (&ev);
-
- g_free (priv);
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-
-
-/* Class initialization function for the calendar */
-static void
-cal_class_init (CalClass *klass)
-{
- GtkObjectClass *object_class = (GtkObjectClass *) klass;
- POA_GNOME_Evolution_Calendar_Cal__epv *epv = &klass->epv;
-
- parent_class = gtk_type_class (BONOBO_OBJECT_TYPE);
-
- /* Class method overrides */
- object_class->destroy = cal_destroy;
-
- /* Epv methods */
- epv->_get_uri = impl_Cal_get_uri;
- epv->countObjects = impl_Cal_get_n_objects;
- epv->getObject = impl_Cal_get_object;
- epv->getUIDs = impl_Cal_get_uids;
- epv->getChanges = impl_Cal_get_changes;
- epv->getObjectsInRange = impl_Cal_get_objects_in_range;
- epv->getAlarmsInRange = impl_Cal_get_alarms_in_range;
- epv->getAlarmsForObject = impl_Cal_get_alarms_for_object;
- epv->updateObject = impl_Cal_update_object;
- epv->removeObject = impl_Cal_remove_object;
- epv->getQuery = impl_Cal_get_query;
-}
-
-
-/* Object initialization function for the calendar */
-static void
-cal_init (Cal *cal)
-{
- CalPrivate *priv;
-
- priv = g_new0 (CalPrivate, 1);
- cal->priv = priv;
-
- priv->listener = CORBA_OBJECT_NIL;
-}
-
-BONOBO_X_TYPE_FUNC_FULL (Cal, GNOME_Evolution_Calendar_Cal, PARENT_TYPE, cal);
-
-/**
- * cal_notify_update:
- * @cal: A calendar client interface.
- * @uid: UID of object that was updated.
- *
- * Notifies a listener attached to a calendar client interface object about an
- * update to a calendar object.
- **/
-void
-cal_notify_update (Cal *cal, const char *uid)
-{
- CalPrivate *priv;
- CORBA_Environment ev;
-
- g_return_if_fail (cal != NULL);
- g_return_if_fail (IS_CAL (cal));
- g_return_if_fail (uid != NULL);
-
- priv = cal->priv;
- g_return_if_fail (priv->listener != CORBA_OBJECT_NIL);
-
- CORBA_exception_init (&ev);
- GNOME_Evolution_Calendar_Listener_notifyObjUpdated (priv->listener, (char *) uid, &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("cal_notify_update(): could not notify the listener "
- "about an updated object");
-
- CORBA_exception_free (&ev);
-}
-
-/**
- * cal_notify_remove:
- * @cal: A calendar client interface.
- * @uid: UID of object that was removed.
- *
- * Notifies a listener attached to a calendar client interface object about a
- * calendar object that was removed.
- **/
-void
-cal_notify_remove (Cal *cal, const char *uid)
-{
- CalPrivate *priv;
- CORBA_Environment ev;
-
- g_return_if_fail (cal != NULL);
- g_return_if_fail (IS_CAL (cal));
- g_return_if_fail (uid != NULL);
-
- priv = cal->priv;
- g_return_if_fail (priv->listener != CORBA_OBJECT_NIL);
-
- CORBA_exception_init (&ev);
- GNOME_Evolution_Calendar_Listener_notifyObjRemoved (priv->listener, (char *) uid, &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("cal_notify_remove(): could not notify the listener "
- "about a removed object");
-
- CORBA_exception_free (&ev);
-}
diff --git a/calendar/pcs/cal.h b/calendar/pcs/cal.h
deleted file mode 100644
index f9880178b5..0000000000
--- a/calendar/pcs/cal.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* Evolution calendar client interface object
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef CAL_H
-#define CAL_H
-
-#include <libgnome/gnome-defs.h>
-#include <bonobo/bonobo-xobject.h>
-#include "calendar/pcs/evolution-calendar.h"
-#include "cal-common.h"
-
-BEGIN_GNOME_DECLS
-
-
-
-#define CAL_TYPE (cal_get_type ())
-#define CAL(obj) (GTK_CHECK_CAST ((obj), CAL_TYPE, Cal))
-#define CAL_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), CAL_TYPE, CalClass))
-#define IS_CAL(obj) (GTK_CHECK_TYPE ((obj), CAL_TYPE))
-#define IS_CAL_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), CAL_TYPE))
-
-typedef struct _CalPrivate CalPrivate;
-
-struct _Cal {
- BonoboXObject object;
-
- /* Private data */
- CalPrivate *priv;
-};
-
-struct _CalClass {
- BonoboXObjectClass parent_class;
-
- POA_GNOME_Evolution_Calendar_Cal__epv epv;
-};
-
-GtkType cal_get_type (void);
-
-Cal *cal_construct (Cal *cal,
- CalBackend *backend,
- GNOME_Evolution_Calendar_Listener listener);
-
-Cal *cal_new (CalBackend *backend, GNOME_Evolution_Calendar_Listener listener);
-
-void cal_notify_update (Cal *cal, const char *uid);
-void cal_notify_remove (Cal *cal, const char *uid);
-
-
-
-END_GNOME_DECLS
-
-#endif
diff --git a/calendar/pcs/job.c b/calendar/pcs/job.c
deleted file mode 100644
index f8223f0bab..0000000000
--- a/calendar/pcs/job.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/* GNOME personal calendar server - job manager
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include "job.h"
-
-
-
-/* The job list */
-
-typedef struct {
- JobFunc func;
- gpointer data;
-} Job;
-
-static GSList *jobs_head;
-static GSList *jobs_tail;
-
-static guint jobs_idle_id;
-
-
-
-/* Runs a job and dequeues it */
-static gboolean
-run_job (gpointer data)
-{
- Job *job;
- GSList *l;
-
- g_assert (jobs_head != NULL);
-
- job = jobs_head->data;
- (* job->func) (job->data);
- g_free (job);
-
- l = jobs_head;
- jobs_head = g_slist_remove_link (jobs_head, jobs_head);
- g_slist_free_1 (l);
-
- if (!jobs_head) {
- jobs_tail = NULL;
- jobs_idle_id = 0;
- return FALSE;
- } else
- return TRUE;
-}
-
-/**
- * job_add:
- * @func: Function to run the job.
- * @data: Data to pass to @function.
- *
- * Adds a job to the queue. The job will automatically be run asynchronously.
- **/
-void
-job_add (JobFunc func, gpointer data)
-{
- Job *job;
-
- g_return_if_fail (func != NULL);
-
- job = g_new (Job, 1);
- job->func = func;
- job->data = data;
-
- if (!jobs_head) {
- g_assert (jobs_tail == NULL);
- g_assert (jobs_idle_id == 0);
-
- jobs_head = g_slist_append (NULL, job);
- jobs_tail = jobs_head;
-
- jobs_idle_id = g_idle_add (run_job, NULL);
- } else {
- g_assert (jobs_tail != NULL);
- g_assert (jobs_idle_id != 0);
-
- jobs_tail = g_slist_append (jobs_tail, job)->next;
- }
-}
diff --git a/calendar/pcs/job.h b/calendar/pcs/job.h
deleted file mode 100644
index f9a0d86923..0000000000
--- a/calendar/pcs/job.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* GNOME personal calendar server - job manager
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef JOB_H
-#define JOB_H
-
-#include <glib.h>
-
-
-
-typedef void (* JobFunc) (gpointer data);
-
-void job_add (JobFunc func, gpointer data);
-
-
-
-#endif
diff --git a/calendar/pcs/query.c b/calendar/pcs/query.c
deleted file mode 100644
index ed391ee667..0000000000
--- a/calendar/pcs/query.c
+++ /dev/null
@@ -1,1215 +0,0 @@
-/* Evolution calendar - Live search query implementation
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include <glib.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <gtk/gtksignal.h>
-#include <gal/widgets/e-unicode.h>
-#include <e-util/e-sexp.h>
-#include <cal-util/cal-recur.h>
-#include <cal-util/timeutil.h>
-#include "query.h"
-
-
-
-/* Private part of the Query structure */
-struct _QueryPrivate {
- /* The backend we are monitoring */
- CalBackend *backend;
-
- /* Listener to which we report changes in the live query */
- GNOME_Evolution_Calendar_QueryListener ql;
-
- /* Sexp that defines the query */
- char *sexp;
- ESExp *esexp;
-
- /* Idle handler ID for asynchronous queries */
- guint idle_id;
-
- /* List of UIDs that we still have to process */
- GList *pending_uids;
- int n_pending;
- int pending_total;
-
- /* Table of the UIDs we know do match the query */
- GHashTable *uids;
-
- /* The next component that will be handled in e_sexp_eval(); put here
- * just because the query object itself is the esexp context.
- */
- CalComponent *next_comp;
-};
-
-
-
-static void query_class_init (QueryClass *class);
-static void query_init (Query *query);
-static void query_destroy (GtkObject *object);
-
-static BonoboXObjectClass *parent_class;
-
-
-
-BONOBO_X_TYPE_FUNC_FULL (Query,
- GNOME_Evolution_Calendar_Query,
- BONOBO_X_OBJECT_TYPE,
- query);
-
-/* Class initialization function for the live search query */
-static void
-query_class_init (QueryClass *class)
-{
- GtkObjectClass *object_class;
-
- object_class = (GtkObjectClass *) class;
-
- parent_class = gtk_type_class (BONOBO_X_OBJECT_TYPE);
-
- object_class->destroy = query_destroy;
-
- /* The Query interface (ha ha! query interface!) has no methods, so we
- * don't need to fiddle with the epv.
- */
-}
-
-/* Object initialization function for the live search query */
-static void
-query_init (Query *query)
-{
- QueryPrivate *priv;
-
- priv = g_new0 (QueryPrivate, 1);
- query->priv = priv;
-
- priv->backend = NULL;
- priv->ql = CORBA_OBJECT_NIL;
- priv->sexp = NULL;
-
- priv->pending_uids = NULL;
- priv->uids = g_hash_table_new (g_str_hash, g_str_equal);
-
- priv->next_comp = NULL;
-}
-
-/* Used from g_hash_table_foreach(); frees a UID */
-static void
-free_uid_cb (gpointer key, gpointer value, gpointer data)
-{
- char *uid;
-
- uid = key;
- g_free (uid);
-}
-
-/* Destroy handler for the live search query */
-static void
-query_destroy (GtkObject *object)
-{
- Query *query;
- QueryPrivate *priv;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (IS_QUERY (object));
-
- query = QUERY (object);
- priv = query->priv;
-
- if (priv->backend) {
- gtk_signal_disconnect_by_data (GTK_OBJECT (priv->backend), query);
- gtk_object_unref (GTK_OBJECT (priv->backend));
- priv->backend = NULL;
- }
-
- if (priv->ql != CORBA_OBJECT_NIL) {
- CORBA_Environment ev;
-
- CORBA_exception_init (&ev);
- bonobo_object_release_unref (priv->ql, &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("query_destroy(): Could not unref the listener\n");
-
- CORBA_exception_free (&ev);
-
- priv->ql = CORBA_OBJECT_NIL;
- }
-
- if (priv->sexp) {
- g_free (priv->sexp);
- priv->sexp = NULL;
- }
-
- if (priv->esexp) {
- e_sexp_unref (priv->esexp);
- priv->esexp = NULL;
- }
-
- if (priv->idle_id) {
- g_source_remove (priv->idle_id);
- priv->idle_id = 0;
- }
-
- if (priv->pending_uids) {
- GList *l;
-
- for (l = priv->pending_uids; l; l = l->next) {
- char *uid;
-
- uid = l->data;
- g_assert (uid != NULL);
- g_free (uid);
- }
-
- g_list_free (priv->pending_uids);
- priv->pending_uids = NULL;
- priv->n_pending = 0;
- }
-
- g_hash_table_foreach (priv->uids, free_uid_cb, NULL);
- g_hash_table_destroy (priv->uids);
- priv->uids = NULL;
-
- g_free (priv);
- query->priv = NULL;
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-
-
-/* E-Sexp functions */
-
-/* (time-now)
- *
- * Returns a time_t of time (NULL).
- */
-static ESExpResult *
-func_time_now (ESExp *esexp, int argc, ESExpResult **argv, void *data)
-{
- ESExpResult *result;
-
- if (argc != 0) {
- e_sexp_fatal_error (esexp, _("time-now expects 0 arguments"));
- return NULL;
- }
-
- result = e_sexp_result_new (esexp, ESEXP_RES_TIME);
- result->value.time = time (NULL);
-
- return result;
-}
-
-/* (make-time ISODATE)
- *
- * ISODATE - string, ISO 8601 date/time representation
- *
- * Constructs a time_t value for the specified date.
- */
-static ESExpResult *
-func_make_time (ESExp *esexp, int argc, ESExpResult **argv, void *data)
-{
- const char *str;
- time_t t;
- ESExpResult *result;
-
- if (argc != 1) {
- e_sexp_fatal_error (esexp, _("make-time expects 1 argument"));
- return NULL;
- }
-
- if (argv[0]->type != ESEXP_RES_STRING) {
- e_sexp_fatal_error (esexp, _("make-time expects argument 1 "
- "to be a string"));
- return NULL;
- }
- str = argv[0]->value.string;
-
- t = time_from_isodate (str);
- if (t == -1) {
- e_sexp_fatal_error (esexp, _("make-time argument 1 must be an "
- "ISO 8601 date/time string"));
- return NULL;
- }
-
- result = e_sexp_result_new (esexp, ESEXP_RES_TIME);
- result->value.time = t;
-
- return result;
-}
-
-/* (time-add-day TIME N)
- *
- * TIME - time_t, base time
- * N - int, number of days to add
- *
- * Adds the specified number of days to a time value.
- */
-static ESExpResult *
-func_time_add_day (ESExp *esexp, int argc, ESExpResult **argv, void *data)
-{
- ESExpResult *result;
- time_t t;
- int n;
-
- if (argc != 2) {
- e_sexp_fatal_error (esexp, _("time-add-day expects 2 arguments"));
- return NULL;
- }
-
- if (argv[0]->type != ESEXP_RES_TIME) {
- e_sexp_fatal_error (esexp, _("time-add-day expects argument 1 "
- "to be a time_t"));
- return NULL;
- }
- t = argv[0]->value.time;
-
- if (argv[1]->type != ESEXP_RES_INT) {
- e_sexp_fatal_error (esexp, _("time-add-day expects argument 2 "
- "to be an integer"));
- return NULL;
- }
- n = argv[1]->value.number;
-
- result = e_sexp_result_new (esexp, ESEXP_RES_TIME);
- result->value.time = time_add_day (t, n);
-
- return result;
-}
-
-/* (time-day-begin TIME)
- *
- * TIME - time_t, base time
- *
- * Returns the start of the day, according to the local time.
- */
-static ESExpResult *
-func_time_day_begin (ESExp *esexp, int argc, ESExpResult **argv, void *data)
-{
- time_t t;
- ESExpResult *result;
-
- if (argc != 1) {
- e_sexp_fatal_error (esexp, _("time-day-begin expects 1 argument"));
- return NULL;
- }
-
- if (argv[0]->type != ESEXP_RES_TIME) {
- e_sexp_fatal_error (esexp, _("time-day-begin expects argument 1 "
- "to be a time_t"));
- return NULL;
- }
- t = argv[0]->value.time;
-
- result = e_sexp_result_new (esexp, ESEXP_RES_TIME);
- result->value.time = time_day_begin (t);
-
- return result;
-}
-
-/* (time-day-end TIME)
- *
- * TIME - time_t, base time
- *
- * Returns the end of the day, according to the local time.
- */
-static ESExpResult *
-func_time_day_end (ESExp *esexp, int argc, ESExpResult **argv, void *data)
-{
- time_t t;
- ESExpResult *result;
-
- if (argc != 1) {
- e_sexp_fatal_error (esexp, _("time-day-end expects 1 argument"));
- return NULL;
- }
-
- if (argv[0]->type != ESEXP_RES_TIME) {
- e_sexp_fatal_error (esexp, _("time-day-end expects argument 1 "
- "to be a time_t"));
- return NULL;
- }
- t = argv[0]->value.time;
-
- result = e_sexp_result_new (esexp, ESEXP_RES_TIME);
- result->value.time = time_day_end (t);
-
- return result;
-}
-
-/* (get-vtype)
- *
- * Returns a string indicating the type of component (VEVENT, VTODO, VJOURNAL,
- * VFREEBUSY, VTIMEZONE, UNKNOWN).
- */
-static ESExpResult *
-func_get_vtype (ESExp *esexp, int argc, ESExpResult **argv, void *data)
-{
- Query *query;
- QueryPrivate *priv;
- CalComponent *comp;
- CalComponentVType vtype;
- char *str;
- ESExpResult *result;
-
- query = QUERY (data);
- priv = query->priv;
-
- g_assert (priv->next_comp != NULL);
- comp = priv->next_comp;
-
- /* Check argument types */
-
- if (argc != 0) {
- e_sexp_fatal_error (esexp, _("get-vtype expects 0 arguments"));
- return NULL;
- }
-
- /* Get the type */
-
- vtype = cal_component_get_vtype (comp);
-
- switch (vtype) {
- case CAL_COMPONENT_EVENT:
- str = g_strdup ("VEVENT");
- break;
-
- case CAL_COMPONENT_TODO:
- str = g_strdup ("VTODO");
- break;
-
- case CAL_COMPONENT_JOURNAL:
- str = g_strdup ("VJOURNAL");
- break;
-
- case CAL_COMPONENT_FREEBUSY:
- str = g_strdup ("VFREEBUSY");
- break;
-
- case CAL_COMPONENT_TIMEZONE:
- str = g_strdup ("VTIMEZONE");
- break;
-
- default:
- str = g_strdup ("UNKNOWN");
- break;
- }
-
- result = e_sexp_result_new (esexp, ESEXP_RES_STRING);
- result->value.string = str;
-
- return result;
-}
-
-/* Sets a boolean value in the data to TRUE; called from
- * cal_recur_generate_instances() to indicate that at least one instance occurs
- * in the sought time range. We always return FALSE because we want the
- * recurrence engine to finish as soon as possible.
- */
-static gboolean
-instance_occur_cb (CalComponent *comp, time_t start, time_t end, gpointer data)
-{
- gboolean *occurs;
-
- occurs = data;
- *occurs = TRUE;
-
- return FALSE;
-}
-
-/* (occur-in-time-range? START END)
- *
- * START - time_t, start of the time range
- * END - time_t, end of the time range
- *
- * Returns a boolean indicating whether the component has any occurrences in the
- * specified time range.
- */
-static ESExpResult *
-func_occur_in_time_range (ESExp *esexp, int argc, ESExpResult **argv, void *data)
-{
- Query *query;
- QueryPrivate *priv;
- CalComponent *comp;
- time_t start, end;
- gboolean occurs;
- ESExpResult *result;
-
- query = QUERY (data);
- priv = query->priv;
-
- g_assert (priv->next_comp != NULL);
- comp = priv->next_comp;
-
- /* Check argument types */
-
- if (argc != 2) {
- e_sexp_fatal_error (esexp, _("occur-in-time-range? expects 2 arguments"));
- return NULL;
- }
-
- if (argv[0]->type != ESEXP_RES_TIME) {
- e_sexp_fatal_error (esexp, _("occur-in-time-range? expects argument 1 "
- "to be a time_t"));
- return NULL;
- }
- start = argv[0]->value.time;
-
- if (argv[1]->type != ESEXP_RES_TIME) {
- e_sexp_fatal_error (esexp, _("occur-in-time-range? expects argument 2 "
- "to be a time_t"));
- return NULL;
- }
- end = argv[1]->value.time;
-
- /* See if there is at least one instance in that range */
-
- occurs = FALSE;
- cal_recur_generate_instances (comp, start, end, instance_occur_cb, &occurs);
-
- result = e_sexp_result_new (esexp, ESEXP_RES_BOOL);
- result->value.bool = occurs;
-
- return result;
-}
-
-/* Returns whether a list of CalComponentText items matches the specified string */
-static gboolean
-matches_text_list (GSList *text_list, const char *str)
-{
- GSList *l;
- gboolean matches;
-
- matches = FALSE;
-
- for (l = text_list; l; l = l->next) {
- CalComponentText *text;
-
- text = l->data;
- g_assert (text->value != NULL);
-
- if (e_utf8_strstrcasedecomp (text->value, str) != NULL) {
- matches = TRUE;
- break;
- }
- }
-
- return matches;
-}
-
-/* Returns whether the comments in a component matches the specified string */
-static gboolean
-matches_comment (CalComponent *comp, const char *str)
-{
- GSList *list;
- gboolean matches;
-
- cal_component_get_comment_list (comp, &list);
- matches = matches_text_list (list, str);
- cal_component_free_text_list (list);
-
- return matches;
-}
-
-/* Returns whether the description in a component matches the specified string */
-static gboolean
-matches_description (CalComponent *comp, const char *str)
-{
- GSList *list;
- gboolean matches;
-
- cal_component_get_description_list (comp, &list);
- matches = matches_text_list (list, str);
- cal_component_free_text_list (list);
-
- return matches;
-}
-
-/* Returns whether the summary in a component matches the specified string */
-static gboolean
-matches_summary (CalComponent *comp, const char *str)
-{
- CalComponentText text;
-
- cal_component_get_summary (comp, &text);
-
- if (!text.value)
- return FALSE;
-
- return e_utf8_strstrcasedecomp (text.value, str) != NULL;
-}
-
-/* Returns whether any text field in a component matches the specified string */
-static gboolean
-matches_any (CalComponent *comp, const char *str)
-{
- /* As an optimization, and to make life easier for the individual
- * predicate functions, see if we are looking for the empty string right
- * away.
- */
- if (strlen (str) == 0)
- return TRUE;
-
- return (matches_comment (comp, str)
- || matches_description (comp, str)
- || matches_summary (comp, str));
-}
-
-/* (contains? FIELD STR)
- *
- * FIELD - string, name of field to match (any, comment, description, summary)
- * STR - string, match string
- *
- * Returns a boolean indicating whether the specified field contains the
- * specified string.
- */
-static ESExpResult *
-func_contains (ESExp *esexp, int argc, ESExpResult **argv, void *data)
-{
- Query *query;
- QueryPrivate *priv;
- CalComponent *comp;
- const char *field;
- const char *str;
- gboolean matches;
- ESExpResult *result;
-
- query = QUERY (data);
- priv = query->priv;
-
- g_assert (priv->next_comp != NULL);
- comp = priv->next_comp;
-
- /* Check argument types */
-
- if (argc != 2) {
- e_sexp_fatal_error (esexp, _("contains? expects 2 arguments"));
- return NULL;
- }
-
- if (argv[0]->type != ESEXP_RES_STRING) {
- e_sexp_fatal_error (esexp, _("contains? expects argument 1 "
- "to be a string"));
- return NULL;
- }
- field = argv[0]->value.string;
-
- if (argv[1]->type != ESEXP_RES_STRING) {
- e_sexp_fatal_error (esexp, _("contains? expects argument 2 "
- "to be a string"));
- return NULL;
- }
- str = argv[1]->value.string;
-
- /* See if it matches */
-
- if (strcmp (field, "any") == 0)
- matches = matches_any (comp, str);
- else if (strcmp (field, "comment") == 0)
- matches = matches_comment (comp, str);
- else if (strcmp (field, "description") == 0)
- matches = matches_description (comp, str);
- else if (strcmp (field, "summary") == 0)
- matches = matches_summary (comp, str);
- else {
- e_sexp_fatal_error (esexp, _("contains? expects argument 1 to "
- "be one of \"any\", \"summary\", \"description\""));
- return NULL;
- }
-
- result = e_sexp_result_new (esexp, ESEXP_RES_BOOL);
- result->value.bool = matches;
-
- return result;
-}
-
-/* (has-categories? STR+)
- *
- * STR - At least one string specifying a category
- *
- * Returns a boolean indicating whether the component has all the specified
- * categories.
- */
-static ESExpResult *
-func_has_categories (ESExp *esexp, int argc, ESExpResult **argv, void *data)
-{
- Query *query;
- QueryPrivate *priv;
- CalComponent *comp;
- int i;
- GSList *categories;
- gboolean matches;
- ESExpResult *result;
-
- query = QUERY (data);
- priv = query->priv;
-
- g_assert (priv->next_comp != NULL);
- comp = priv->next_comp;
-
- /* Check argument types */
-
- if (argc < 1) {
- e_sexp_fatal_error (esexp, _("has-categories? expects at least 1 argument"));
- return NULL;
- }
-
- for (i = 0; i < argc; i++)
- if (argv[i]->type != ESEXP_RES_STRING) {
- e_sexp_fatal_error (esexp, _("has-categories? expects all arguments "
- "to be strings"));
- return NULL;
- }
-
- /* Search categories */
-
- cal_component_get_categories_list (comp, &categories);
- if (!categories) {
- result = e_sexp_result_new (esexp, ESEXP_RES_BOOL);
- result->value.bool = FALSE;
-
- return result;
- }
-
- matches = TRUE;
-
- for (i = 0; i < argc; i++) {
- const char *sought;
- GSList *l;
- gboolean has_category;
-
- sought = argv[i]->value.string;
-
- has_category = FALSE;
-
- for (l = categories; l; l = l->next) {
- const char *category;
-
- category = l->data;
-
- if (strcmp (category, sought) == 0) {
- has_category = TRUE;
- break;
- }
- }
-
- if (!has_category) {
- matches = FALSE;
- break;
- }
- }
-
- cal_component_free_categories_list (categories);
-
- result = e_sexp_result_new (esexp, ESEXP_RES_BOOL);
- result->value.bool = matches;
-
- return result;
-}
-
-
-
-/* Adds a component to our the UIDs hash table and notifies the client */
-static void
-add_component (Query *query, const char *uid, gboolean query_in_progress, int n_scanned, int total)
-{
- QueryPrivate *priv;
- char *old_uid;
- CORBA_Environment ev;
-
- if (query_in_progress)
- g_assert (n_scanned > 0 || n_scanned <= total);
-
- priv = query->priv;
-
- if (g_hash_table_lookup_extended (priv->uids, uid, (gpointer *) &old_uid, NULL)) {
- g_hash_table_remove (priv->uids, old_uid);
- g_free (old_uid);
- }
-
- g_hash_table_insert (priv->uids, g_strdup (uid), NULL);
-
- CORBA_exception_init (&ev);
- GNOME_Evolution_Calendar_QueryListener_notifyObjUpdated (
- priv->ql,
- (char *) uid,
- query_in_progress,
- n_scanned,
- total,
- &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("add_component(): Could not notify the listener of an "
- "updated component");
-
- CORBA_exception_free (&ev);
-}
-
-/* Removes a component from our the UIDs hash table and notifies the client */
-static void
-remove_component (Query *query, const char *uid)
-{
- QueryPrivate *priv;
- char *old_uid;
- CORBA_Environment ev;
-
- priv = query->priv;
-
- if (!g_hash_table_lookup_extended (priv->uids, uid, (gpointer *) &old_uid, NULL))
- return;
-
- /* The component did match the query before but it no longer does, so we
- * have to notify the client.
- */
-
- g_hash_table_remove (priv->uids, old_uid);
- g_free (old_uid);
-
- CORBA_exception_init (&ev);
- GNOME_Evolution_Calendar_QueryListener_notifyObjRemoved (
- priv->ql,
- (char *) uid,
- &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("remove_component(): Could not notify the listener of a "
- "removed component");
-
- CORBA_exception_free (&ev);
-}
-
-/* Removes a component from the list of pending UIDs */
-static void
-remove_from_pending (Query *query, const char *remove_uid)
-{
- QueryPrivate *priv;
- GList *l;
-
- priv = query->priv;
-
- for (l = priv->pending_uids; l; l = l->next) {
- char *uid;
-
- g_assert (priv->n_pending > 0);
-
- uid = l->data;
- if (strcmp (remove_uid, uid))
- continue;
-
- g_free (uid);
-
- priv->pending_uids = g_list_remove_link (priv->pending_uids, l);
- g_list_free_1 (l);
- priv->n_pending--;
-
- g_assert ((priv->pending_uids && priv->n_pending != 0)
- || (!priv->pending_uids && priv->n_pending == 0));
-
- break;
- }
-}
-
-static struct {
- char *name;
- ESExpFunc *func;
-} functions[] = {
- /* Time-related functions */
- { "time-now", func_time_now },
- { "make-time", func_make_time },
- { "time-add-day", func_time_add_day },
- { "time-day-begin", func_time_day_begin },
- { "time-day-end", func_time_day_end },
-
- /* Component-related functions */
- { "get-vtype", func_get_vtype },
- { "occur-in-time-range?", func_occur_in_time_range },
- { "contains?", func_contains },
- { "has-categories?", func_has_categories }
-};
-
-/* Initializes a sexp by interning our own symbols */
-static ESExp *
-create_sexp (Query *query)
-{
- ESExp *esexp;
- int i;
-
- esexp = e_sexp_new ();
-
- for (i = 0; i < (sizeof (functions) / sizeof (functions[0])); i++)
- e_sexp_add_function (esexp, 0, functions[i].name, functions[i].func, query);
-
- return esexp;
-}
-
-/* Evaluates the query sexp on the specified component and notifies the listener
- * as appropriate.
- */
-static void
-match_component (Query *query, const char *uid,
- gboolean query_in_progress, int n_scanned, int total)
-{
- QueryPrivate *priv;
- char *comp_str;
- CalComponent *comp;
- icalcomponent *icalcomp;
- gboolean set_succeeded;
- ESExpResult *result;
-
- priv = query->priv;
-
- comp_str = cal_backend_get_object (priv->backend, uid);
- g_assert (comp_str != NULL);
-
- icalcomp = icalparser_parse_string (comp_str);
- g_assert (icalcomp != NULL);
-
- g_free (comp_str);
-
- comp = cal_component_new ();
- set_succeeded = cal_component_set_icalcomponent (comp, icalcomp);
- g_assert (set_succeeded);
-
- /* Eval the sexp */
-
- g_assert (priv->next_comp == NULL);
-
- priv->next_comp = comp;
- result = e_sexp_eval (priv->esexp);
- gtk_object_unref (GTK_OBJECT (comp));
- priv->next_comp = NULL;
-
- if (!result) {
- const char *error_str;
- CORBA_Environment ev;
-
- error_str = e_sexp_error (priv->esexp);
- g_assert (error_str != NULL);
-
- CORBA_exception_init (&ev);
- GNOME_Evolution_Calendar_QueryListener_notifyEvalError (
- priv->ql,
- error_str,
- &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("match_component(): Could not notify the listener of "
- "an evaluation error");
-
- CORBA_exception_free (&ev);
- return;
- } else if (result->type != ESEXP_RES_BOOL) {
- CORBA_Environment ev;
-
- CORBA_exception_init (&ev);
- GNOME_Evolution_Calendar_QueryListener_notifyEvalError (
- priv->ql,
- _("Evaluation of the search expression did not yield a boolean value"),
- &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("match_component(): Could not notify the listener of "
- "an unexpected result value type when evaluating the "
- "search expression");
-
- CORBA_exception_free (&ev);
- } else {
- /* Success; process the component accordingly */
-
- if (result->value.bool)
- add_component (query, uid, query_in_progress, n_scanned, total);
- else
- remove_component (query, uid);
- }
-
- e_sexp_result_free (priv->esexp, result);
-}
-
-/* Processes a single component that is queued in the list */
-static gboolean
-process_component_cb (gpointer data)
-{
- Query *query;
- QueryPrivate *priv;
- char *uid;
- GList *l;
-
- query = QUERY (data);
- priv = query->priv;
-
- /* No more components? */
-
- if (!priv->pending_uids) {
- g_assert (priv->n_pending == 0);
-
- priv->idle_id = 0;
- return FALSE;
- }
-
- g_assert (priv->n_pending > 0);
-
- /* Fetch the component */
-
- l = priv->pending_uids;
- priv->pending_uids = g_list_remove_link (priv->pending_uids, l);
- priv->n_pending--;
-
- g_assert ((priv->pending_uids && priv->n_pending != 0)
- || (!priv->pending_uids && priv->n_pending == 0));
-
- uid = l->data;
- g_assert (uid != NULL);
-
- g_list_free_1 (l);
-
- bonobo_object_ref (BONOBO_OBJECT (query));
-
- match_component (query, uid,
- TRUE,
- priv->pending_total - priv->n_pending,
- priv->pending_total);
-
- bonobo_object_unref (BONOBO_OBJECT (query));
-
- g_free (uid);
-
- return TRUE;
-}
-
-/* Populates the query with pending UIDs so that they can be processed
- * asynchronously.
- */
-static void
-populate_query (Query *query)
-{
- QueryPrivate *priv;
-
- priv = query->priv;
- g_assert (priv->idle_id == 0);
-
- priv->pending_uids = cal_backend_get_uids (priv->backend, CALOBJ_TYPE_ANY);
- priv->pending_total = g_list_length (priv->pending_uids);
- priv->n_pending = priv->pending_total;
-
- priv->idle_id = g_idle_add (process_component_cb, query);
-}
-
-/* Idle handler for starting a query */
-static gboolean
-start_query_cb (gpointer data)
-{
- Query *query;
- QueryPrivate *priv;
- CORBA_Environment ev;
-
- query = QUERY (data);
- priv = query->priv;
-
- priv->idle_id = 0;
-
- priv->esexp = create_sexp (query);
-
- /* Compile the query string */
-
- g_assert (priv->sexp != NULL);
- e_sexp_input_text (priv->esexp, priv->sexp, strlen (priv->sexp));
-
- if (e_sexp_parse (priv->esexp) == -1) {
- const char *error_str;
-
- error_str = e_sexp_error (priv->esexp);
- g_assert (error_str != NULL);
-
- CORBA_exception_init (&ev);
- GNOME_Evolution_Calendar_QueryListener_notifyQueryDone (
- priv->ql,
- GNOME_Evolution_Calendar_QueryListener_PARSE_ERROR,
- error_str,
- &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION)
- g_message ("start_query_cb(): Could not notify the listener of "
- "a parse error");
-
- CORBA_exception_free (&ev);
- return FALSE;
- }
-
- /* Populate the query with UIDs so that we can process them asynchronously */
-
- populate_query (query);
-
- return FALSE;
-}
-
-/* Callback used when the backend gets loaded; we just queue the query to be
- * started later.
- */
-static void
-backend_opened_cb (CalBackend *backend, CalBackendOpenStatus status, gpointer data)
-{
- Query *query;
- QueryPrivate *priv;
-
- query = QUERY (data);
- priv = query->priv;
-
- if (status == CAL_BACKEND_OPEN_SUCCESS) {
- g_assert (cal_backend_is_loaded (backend));
- g_assert (priv->idle_id == 0);
-
- priv->idle_id = g_idle_add (start_query_cb, query);
- }
-}
-
-/* Callback used when a component changes in the backend */
-static void
-backend_obj_updated_cb (CalBackend *backend, const char *uid, gpointer data)
-{
- Query *query;
-
- query = QUERY (data);
-
- bonobo_object_ref (BONOBO_OBJECT (query));
-
- match_component (query, uid, FALSE, 0, 0);
- remove_from_pending (query, uid);
-
- bonobo_object_unref (BONOBO_OBJECT (query));
-}
-
-/* Callback used when a component is removed from the backend */
-static void
-backend_obj_removed_cb (CalBackend *backend, const char *uid, gpointer data)
-{
- Query *query;
- QueryPrivate *priv;
-
- query = QUERY (data);
- priv = query->priv;
-
- bonobo_object_ref (BONOBO_OBJECT (query));
-
- remove_component (query, uid);
- remove_from_pending (query, uid);
-
- bonobo_object_unref (BONOBO_OBJECT (query));
-}
-
-/**
- * query_construct:
- * @query: A live search query.
- * @backend: Calendar backend that the query object will monitor.
- * @ql: Listener for query results.
- * @sexp: Sexp that defines the query.
- *
- * Constructs a #Query object by binding it to a calendar backend and a query
- * listener. The @query object will start to populate itself asynchronously and
- * call the listener as appropriate.
- *
- * Return value: The same value as @query, or NULL if the query could not
- * be constructed.
- **/
-Query *
-query_construct (Query *query,
- CalBackend *backend,
- GNOME_Evolution_Calendar_QueryListener ql,
- const char *sexp)
-{
- QueryPrivate *priv;
- CORBA_Environment ev;
-
- g_return_val_if_fail (query != NULL, NULL);
- g_return_val_if_fail (IS_QUERY (query), NULL);
- g_return_val_if_fail (backend != NULL, NULL);
- g_return_val_if_fail (IS_CAL_BACKEND (backend), NULL);
- g_return_val_if_fail (ql != CORBA_OBJECT_NIL, NULL);
- g_return_val_if_fail (sexp != NULL, NULL);
-
- priv = query->priv;
-
- CORBA_exception_init (&ev);
- priv->ql = CORBA_Object_duplicate (ql, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_message ("query_construct(): Could not duplicate the listener");
- priv->ql = CORBA_OBJECT_NIL;
- CORBA_exception_free (&ev);
- return NULL;
- }
- CORBA_exception_free (&ev);
-
- priv->backend = backend;
- gtk_object_ref (GTK_OBJECT (priv->backend));
-
- gtk_signal_connect (GTK_OBJECT (priv->backend), "obj_updated",
- GTK_SIGNAL_FUNC (backend_obj_updated_cb),
- query);
- gtk_signal_connect (GTK_OBJECT (priv->backend), "obj_removed",
- GTK_SIGNAL_FUNC (backend_obj_removed_cb),
- query);
-
- priv->sexp = g_strdup (sexp);
-
- /* Queue the query to be started asynchronously */
-
- if (cal_backend_is_loaded (priv->backend)) {
- g_assert (priv->idle_id == 0);
- priv->idle_id = g_idle_add (start_query_cb, query);
- } else
- gtk_signal_connect (GTK_OBJECT (priv->backend), "opened",
- GTK_SIGNAL_FUNC (backend_opened_cb),
- query);
-
- return query;
-}
-
-/**
- * query_new:
- * @backend: Calendar backend that the query object will monitor.
- * @ql: Listener for query results.
- * @sexp: Sexp that defines the query.
- *
- * Creates a new query engine object that monitors a calendar backend.
- *
- * Return value: A newly-created query object, or NULL on failure.
- **/
-Query *
-query_new (CalBackend *backend,
- GNOME_Evolution_Calendar_QueryListener ql,
- const char *sexp)
-{
- Query *query;
-
- query = QUERY (gtk_type_new (QUERY_TYPE));
- if (!query_construct (query, backend, ql, sexp)) {
- bonobo_object_unref (BONOBO_OBJECT (query));
- return NULL;
- }
-
- return query;
-}
diff --git a/calendar/pcs/query.h b/calendar/pcs/query.h
deleted file mode 100644
index bd10351fcb..0000000000
--- a/calendar/pcs/query.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Evolution calendar - Live search query implementation
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef QUERY_H
-#define QUERY_H
-
-#include <libgnome/gnome-defs.h>
-#include <bonobo/bonobo-xobject.h>
-#include "cal-backend.h"
-
-BEGIN_GNOME_DECLS
-
-
-
-#define QUERY_TYPE (query_get_type ())
-#define QUERY(obj) (GTK_CHECK_CAST ((obj), QUERY_TYPE, Query))
-#define QUERY_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), QUERY_TYPE, QueryClass))
-#define IS_QUERY(obj) (GTK_CHECK_TYPE ((obj), QUERY_TYPE))
-#define IS_QUERY_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), QUERY_TYPE))
-
-typedef struct _QueryPrivate QueryPrivate;
-
-typedef struct {
- BonoboXObject xobject;
-
- /* Private data */
- QueryPrivate *priv;
-} Query;
-
-typedef struct {
- BonoboXObjectClass parent_class;
-
- POA_GNOME_Evolution_Calendar_Query__epv epv;
-} QueryClass;
-
-GtkType query_get_type (void);
-
-Query *query_construct (Query *query,
- CalBackend *backend,
- GNOME_Evolution_Calendar_QueryListener ql,
- const char *sexp);
-
-Query *query_new (CalBackend *backend,
- GNOME_Evolution_Calendar_QueryListener ql,
- const char *sexp);
-
-
-
-END_GNOME_DECLS
-
-#endif
diff --git a/camel/.cvsignore b/camel/.cvsignore
deleted file mode 100644
index 3fa8afaa38..0000000000
--- a/camel/.cvsignore
+++ /dev/null
@@ -1,11 +0,0 @@
-.deps
-Makefile
-Makefile.in
-.libs
-.deps
-*.lo
-*.la
-*.bb
-*.bbg
-*.da
-*.gcov
diff --git a/camel/CODING.STYLE b/camel/CODING.STYLE
deleted file mode 100644
index 58e9c68bbe..0000000000
--- a/camel/CODING.STYLE
+++ /dev/null
@@ -1,19 +0,0 @@
-Note to hackers
----------------
-
-When hacking on camel (and on the gnome mailer in general),
-be sure to follow the same coding style as the initial authors.
-Please read the file HACKING in gnumeric and follow the
-general guidelines explained in it.
-
-Please take a look at camel source files and try to exactly
-imitate the coding style. We are perfectly aware that this
-is not the best and unique style, but it is absolutely
-mandatory that Camel is homogeneous. If you find the current
-coding style to have some weaknesses, please contact the
-authors to discuss this matter.
-
-Thanks.
-
- Bertrand.
-
diff --git a/camel/ChangeLog b/camel/ChangeLog
deleted file mode 100644
index 28e511d4b7..0000000000
--- a/camel/ChangeLog
+++ /dev/null
@@ -1,12671 +0,0 @@
-2001-05-21 Jeffrey Stedfast <fejj@ximian.com>
-
- * providers/imap/camel-imap-store.c (get_folder_info_online):
- Store the CamelFolderInfo tree that was returned from
- camel_folder_info_build() in a new variable, 'tree', rather than
- 'fi' since we later use 'fi' when syncing folders. Not only does
- this fix a memory leak, but it also fixes the bug where the user
- would only see the last folder in the folder list and/or it's
- subfolders.
-
-2001-05-16 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-session.c (camel_session_forget_password): The service can
- be NULL here too, thanks to Wayne Davis for pointing this out.
-
- * camel-smime-context.c (camel_smime_context_new): We don't need
- to be passed the certdb path anymore.
-
-2001-05-16 Dan Winship <danw@ximian.com>
-
- * camel-medium.c (camel_medium_get_headers): New function to
- return an array of all headers.
- (camel_medium_free_headers): And free them.
-
- * camel-mime-part.c (get_headers, free_headers): Implement this
- for CamelMimePart. (Works for CamelMimeMessage too.)
-
-2001-05-15 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-smime-context.c (camel_smime_context_finalise): Don't
- close or free (it wasn't allocated) the certdb.
- (camel_smime_context_new): If we get a NULL certdb handle, then
- don't bother trying to create a new certdb handle since NSS_Init*
- should have done that.
-
-2001-05-15 Jeffrey Stedfast <fejj@ximian.com>
-
- * Makefile.am: Don't use EXTRA_GNOME_*, use the new CAMEL_*
- variables so we don't link in tons of extra cruft that we don't
- need.
-
- * tests/smime/pkcs7.c: Added to the test suite - tests the S/MIME
- pkcs7 functions.
-
-2001-05-14 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-smime-context.c: Lots of fixes to get this to compile.
-
- * camel-smime.c (camel_smime_part_verify): Updated to pass in a
- hash argument to camel_smime_verify().
-
- * camel-pgp-mime.c (camel_pgp_mime_part_verify): Update according
- to the changes in the context API.
-
- * camel-pgp-context.c (pgp_verify): Updated to take a
- CamelCipherHash argument.
-
- * camel-cipher-context.c (camel_cipher_verify): Now takes a hash
- argument since the S/MIME code needs this.
-
- * Makefile.am: Add camel-smime-context.[c,h] and camel-smime.[c,h]
- to the build.
-
- * camel-smime.[c,h]: New source files for manipulating S/MIME
- message parts.
-
-2001-05-14 Jon Trowbridge <trow@ximian.com>
-
- * camel-search-private.c (utf8_get): Replicate the semantics of
- the libunicode utf8 functions by returning NULL in the arg
- on invalid utf8.
-
- * camel-pgp-context.c (pgp_verify): Check for valid utf8,
- terminate loop if something looks wrong.
-
- * camel-mime-utils.c (header_encode_phrase_get_words): Properly
- check for invalid utf8.
- (header_encode_string): Properly check for invalid utf8.
-
- * camel-charset-map.c (camel_charset_step): Properly check for
- invalid utf8.
-
-2001-05-14 Jeffrey Stedfast <fejj@ximian.com>
-
- * tests/folder/test9.c:
- * tests/folder/test8.c:
- * tests/folder/test7.c:
- * tests/folder/test6.c:
- * tests/folder/test5.c:
- * tests/folder/test4.c:
- * tests/folder/test3.c:
- * tests/folder/test2.c:
- * tests/folder/test1.c:
- * tests/smime/pgp-mime.c:
- * tests/smime/pgp.c: Subclass CamelSession since we can no longer
- specify the passwd callback any other way and update code
- accordingly.
-
-2001-05-11 Dan Winship <danw@ximian.com>
-
- * camel-mime-utils.c (header_location_decode): Decode
- Content-Location, either correctly or Netscape-generated-brokenly.
-
- * camel-mime-part.c (camel_mime_part_set_content_location,
- camel_mime_part_get_content_location, etc): Deal with
- Content-Location header.
-
-2001-05-11 Jeffrey Stedfast <fejj@ximian.com>
-
- * providers/smtp/camel-smtp-transport.c (smtp_auth): Don't check
- the initial auth response until we get into the while-loop
- otherwise we have problems if the SASL mechanism supported a
- client initiated challenge (like PLAIN and LOGIN do).
-
-2001-05-11 Dan Winship <danw@ximian.com>
-
- * camel-stream-null.c (camel_stream_null_new): Make this return
- CamelStream * (like the other stream new functions) instead of
- CamelStreamNull *
-
-2001-05-10 Chris Toshok <toshok@ximian.com>
-
- * camel-tcp-stream-ssl.c (stream_connect): call SSL_Enable after
- the SSL_ImportFD and before PR_Connect. Otherwise, NSS aborts
- during the connect.
-
-2001-05-10 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-session.c (camel_session_get_password): Don't abort if the
- Service is NULL, this is perfectly valid for cipher contexts.
-
-2001-05-09 Peter Williams <peterw@ximian.com>
-
- * providers/imap/camel-imap-folder.c (imap_move_messages_to): Pass
- appropriate parameters to CF_CLASS and add comment explaining why
- my initial attempt at a solution didn't work.
-
-2001-05-09 Dan Winship <danw@ximian.com>
-
- * camel-disco-store.c (camel_disco_set_status): Set the
- disconnected status.
- (camel_disco_store_can_work_offline): Return whether or not a
- given CamelDiscoStore can work offline or not.
-
- * camel-disco-folder.c (camel_disco_folder_cache_message):
- Explicitly tell a folder to cache a message. (Better than using
- get_message, because for IMAP that doesn't guarantee you'll get
- all the message parts.)
- (camel_disco_folder_prepare_for_offline): Prepare a folder for
- offline use by caching all messages meeting given search criteria
- (and doing anything else the particular folder implementation
- needs).
-
- * camel-session.c (camel_session_set_online,
- camel_session_is_online): A session-wide online/offline toggle.
- (camel_session_init): Set online to TRUE.
-
- * providers/imap/camel-imap-store.c (can_work_offline):
- Implementation of CamelDiscoStore::can_work_offline. (Checks that
- the store has been used online at least once.)
- (imap_get_folder_online, imap_get_folder_offline): Deal with
- request for "inbox" properly. ("Don't you mean... 'INBOX'?").
-
- * providers/imap/camel-imap-folder.c (imap_cache_message):
- Implementation of CamelDiscoFolder::cache_message.
-
- * camel.h: Add camel-disco-store.h and camel-disco-folder.h
-
-2001-05-09 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-mime-part.c (camel_mime_part_set_content_id): Wrap the
- content-id with <>'s.
-
-2001-05-04 Jeffrey Stedfast <fejj@ximian.com>
-
- * providers/smtp/camel-smtp-transport.c (connect_to_server): Add
- support for using OpenSSL.
-
- * camel-remote-store.c (remote_connect): Add support for using the
- OpenSSL implementation.
-
- * camel-tcp-stream-ssl.c (ssl_bad_cert): Hmmmm, don't pass in a
- NULL as the last argument to alert_user - prototype doesn't take
- that argument anymore?
-
- * camel-tcp-stream-openssl.c (camel_tcp_stream_openssl_finalize):
- (ssl_verify): Use a global hash table to try and lookup the
- CamelTcpStreamOpenSSL object given the ssl context since OpenSSL
- doesn't think one needs to pass data around, we should all be
- living in a world of global variables, duh!
-
-2001-05-06 Dan Winship <danw@ximian.com>
-
- * Makefile.am (libcamelinclude_HEADERS): Fix another build
- problem. (Um, anyone else could have done this...)
-
-2001-05-04 Dan Winship <danw@ximian.com>
-
- * providers/imap/camel-imap-store.c (get_folder_online): Fix up
- refcounting on current_folder.
-
- * camel-disco-folder.c, camel-disco-store.h: Remove
- CamelDiscoDiary refs that weren't supposed to escape yet.
-
-2001-05-03 Dan Winship <danw@ximian.com>
-
- * camel-disco-store.c: new abstract class for disconnectable
- remote stores
-
- * camel-disco-folder.c: new abstract class for folders on
- disconnectable stores.
-
- * Makefile.am: Add camel-disco-folder.[ch] and
- camel-disco-store.[ch].
-
- * providers/imap/camel-imap-store.c: Make this a subclass of
- CamelDiscoStore, and fix up the offline interfaces for the changes
- since they were first written (particularly the fact that some
- IMAP stores don't just use subscribed folders).
-
- * providers/imap/camel-imap-folder.c: Make this a subclass of
- CamelDiscoFolder, although most ops still fail in disconnected
- mode.
-
- * camel-store.c (camel_store_get_folder_info): Change gboolean,
- gboolean, gboolean to guint32 in the prototype for this function.
-
- * providers/local/camel-local-store.c (get_folder_info): Update
- for prototype change.
-
-2001-05-02 Dan Winship <danw@ximian.com>
-
- * providers/imap/camel-imap-store.h: Clean this up a bit. Add a
- "tag_prefix" member. Move "useful_lsub" into capabilities.
-
- * providers/imap/camel-imap-store.c (camel_imap_store_init):
- Initialize the tag_prefix, based on a static variable.
-
- * providers/imap/camel-imap-command.c (camel_imap_command): Use
- the store's tag_prefix character rather than "A" at the start of
- the tag. Makes the verbose debug output easier to parse when
- connected to multiple IMAP servers. (Well, unless you're connected
- to more than 26 servers...)
-
- * providers/imap/camel-imap-utils.c (imap_uid_array_to_set): Fix
- this up... it was losing count in some cases and giving a more
- verbose answer than it needed to.
-
- * providers/pop3/camel-pop3-store.c: Rescue the KPOP code from bit
- rot.
-
-2001-05-01 Dan Winship <danw@ximian.com>
-
- * providers/imap/camel-imap-command.c (camel_imap_command): Redo
- command locking. Since command_lock is recursive, we can just get
- a lock here, and release it either on error, or when the caller
- frees the response data. (This simplifies a lot of stuff, and
- fixes some problems with camel_imap_folder_changed being called
- without the command_lock locked because of the 2001-03-22 change.)
-
- (camel_imap_response_free):
- (camel_imap_response_free_without_processing):
- (camel_imap_response_extract):
- (camel_imap_response_extract_continuation): These all take a
- CamelImapStore now as well, to deal with locking.
-
- * providers/imap/camel-imap-private.h: Add
- CAMEL_IMAP_STORE_ASSERT_LOCKED, which defaults to a noop, but can
- be made to call e_mutex_assert_locked.
-
- * providers/imap/camel-imap-folder.c, camel-imap-search.c,
- camel-imap-store.c: Simplify using new locking stuff. Add a few
- CAMEL_IMAP_STORE_ASSERT_LOCKED checks.
-
-2001-05-01 Dan Winship <danw@ximian.com>
-
- Support the IMAP UIDPLUS extension (RFC 2359), which lets you
- resync after disconnected operation more efficiently, but also
- makes it possible to do appends and moves/copies more efficiently
- now.
-
- * providers/imap/camel-imap-folder.c (imap_append_message): If the
- server supports UIDPLUS, grab the APPENDUID response and cache the
- message into the folder's message cache.
- (imap_copy_messages_to): Likewise, for COPYUID, copy any message
- parts we have cached between the source and destination folder
- caches.
- (imap_get_message): If the entire message is already in the cache,
- just return that rather than building it from parts.
- (imap_update_summary): Fetch just the "UID FLAGS RFC822.SIZE" of
- the new messages first, then only fetch the headers for messages
- where we don't already have the headers cached.
-
- * providers/imap/camel-imap-message-cache.c: Add gtk-doc comments.
- (cache_put): Fix refcounting stuff here.
- (camel_imap_message_cache_insert_stream,
- camel_imap_message_cache_insert_wrapper): New.
- (camel_imap_message_cache_get): Fix a bug here so the memory
- caching actually works.
- (camel_imap_message_cache_copy): New routine, used by
- imap_copy_messages_to.
-
- * providers/imap/camel-imap-utils.c (imap_uid_set_to_array):
- Inverse operation of imap_uid_array_to_set. Used to parse COPYUID
- response.
-
-2001-04-30 Dan Winship <danw@ximian.com>
-
- * providers/imap/camel-imap-utils.c (imap_uid_array_to_set):
- New-and-improved version of get_uid_set() from
- camel-imap-folder.c. Looks at the summary as it goes so that if
- you ask for messages 5, 6, 8, and 9, and there is no message 7,
- then you get "5:9" instead of "5:6,8:9"
-
- * providers/imap/camel-imap-folder.c (imap_copy_messages_to): Use
- imap_uid_array_to_set() rather than get_uid_set().
- (get_uid_set): Gone
-
-2001-04-27 Dan Winship <danw@ximian.com>
-
- * camel-session.c: Redo this a lot so that instead of having a
- class full of callbacks, we have a subclassable class. Also,
- replace the increasingly horrifying
- camel_session_query_authenticator with three new routines,
- camel_session_get_password, camel_session_forget_password, and
- camel_session_alert_user.
-
- * camel-pgp-context.c:
- * camel-pkcs7-context.c:
- * camel-smime-context.c:
- * providers/imap/camel-imap-store.c:
- * providers/pop3/camel-pop3-store.c:
- * providers/smtp/camel-smtp-transport.c:
- Use camel_session_get_password / camel_session_forget_password.
-
- * camel-tcp-stream-ssl.c (ssl_bad_cert): Use
- camel_session_alert_user.
-
-2001-04-26 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel.c (camel_init): Automagically call camel_shutdown()
- atexit() ;-)
- (camel_init): Also initialize NSS databases as read/write for
- S/MIME and if NSS fails to init, try initializing with volatile
- databases.
-
- * camel-file-utils.h: #include <sys/types.h> for off_t.
-
-2001-04-26 Dan Winship <danw@ximian.com>
-
- * camel-file-utils.c: New file, with the int, string, time_t, and
- off_t encode/decode routines from camel-folder-summary.c moved
- here and renamed, for the enjoyment of non-CamelFolderSummary
- subclasses.
-
- * Makefile.am (libcamel_la_SOURCES): Add camel-file-utils.c
- (libcamelinclude_HEADERS): and camel-file-utils.h
-
- * camel-folder-summary.c: Remove functions that were moved to
- camel-file-utils.c, update uses of them for the new names.
- (camel_folder_summary_{en,de}code_token are still here.)
-
- * providers/local/camel-mbox-summary.c: Use camel_file_util_*
- names
-
- * providers/imap/camel-imap-summary.c: Use camel_file_util_* names
-
- * providers/imap/camel-imap-store.c (imap_store_setup_online,
- imap_store_setup_offline): Use camel_file_util_* names, which
- makes much more sense since this isn't folder summary stuff.
-
-2001-04-26 Dan Winship <danw@ximian.com>
-
- * Makefile.am (INCLUDES): Remove UNICODE_CFLAGS (and some other
- stuff that's redundant with EXTRA_GNOME_CFLAGS)
- (libcamel_la_LIBADD): Replace UNICODE_LIBS with GAL_LIBS.
-
- * camel-search-private.c:
- * camel-pgp-context.c:
- * camel-mime-utils.c: Use gunicode interfaces rather than
- libunicode.
-
- * camel-charset-map.c: Use gunicode rather than libunicode. (The
- charmap-regen code still depends on libunicode though.)
-
- * camel-mime-filter-charset.h:
- * tests/message/test2.c (convert): Use iconv rather than
- unicode_iconv.
-
- * providers/smtp/Makefile.am (libcamelsmtp_la_LIBADD):
- * providers/pop3/Makefile.am (libcamelpop3_la_LIBADD):
- * providers/local/Makefile.am (libcamellocal_la_LIBADD): Remove
- UNICODE_LIBS.
-
- * camel.c (camel_init): Remove call to unicode_init.
-
- * camel-mime-parser.c: Remove unused unicode.h include.
-
-2001-04-26 Dan Winship <danw@ximian.com>
-
- * camel-service.c (get_host): Use e_gethostbyname_r.
- (camel_service_gethost): Remove unused var.
-
-2001-04-26 Not Zed <NotZed@Ximian.com>
-
- * Applied jacob's patches for e-poolv stuff.
-
-2001-04-23 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel.h: Add camel-vee-folder.h and camel-digest-folder.h
-
- * camel-digest-folder.[c,h]: New class that can be used to browse
- a multipart/digest message as if it were a CamelFolder.
-
-2001-04-22 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-pgp-context.c (pgp_verify): Oops, don't use the return
- value of iconv() as a string length, it only tells us the number
- of non-reversable character conversions. This fixes it so we
- actually see the gpg output in the message viewer.
-
-2001-04-23 Mikael Hallendal <micke@codefactory.se>
-
- * providers/nntp/Makefile.am (INCLUDES):
- Changed GTK_INCLUDEDIR to EXTRA_GNOME_CFLAGS.
-
-2001-04-20 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-smime-context.c (smime_sign): Implemented using the
- secmime.h convenience functions.
- (smime_clearsign): We just error our here, there is no clearsign
- for smime.
- (smime_verify): Copied code over from the pkcs7 verify - same
- state, ugly and unknown :-)
- (smime_encrypt): Implemented using the secmime.h convenience
- functions.
- (smime_decrypt): Same as the code in pkcs7-context.
-
-2001-04-19 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-pkcs7-context.c (pkcs7_sign): Implemented.
- (pkcs7_clearsign): Implemented.
- (get_zero_len_passwd): Convenience function to try a 0-length key
- on the certificate db - if this works then there is no need to
- prompt the user.
- (get_password): Callback to get the password.
- (camel_cipher_hash_to_nss): Convenience function to convert a
- CamelCipherHash to an NSS HASH_HashType.
- (nss_hash_to_sec_oid): Converts a HASH_HashType to a SecOidTag.
- (pkcs7_digest): Digest function for use with pkcs7_sign().
- (sign_encode_cb): Callback to write the signed data to the output
- stream.
- (pkcs7_verify): Hacked on a bit more but am still a bit on the
- confused side. This might work but I wouldn't hold my breath. The
- sign/clearsign should be close if not correct, but this one...god
- only knows.
- (pkcs7_decrypt): Implemented.
- (pkcs7_encrypt): Implemented (mostly, still need to handle when
- 'sign' is TRUE).
-
-2001-04-18 Dan Winship <danw@ximian.com>
-
- * providers/imap/camel-imap-store.c (camel_imap_store_finalize):
- Free base_url and storage_path.
-
- * providers/pop3/camel-pop3-store.c (finalize): Free the
- implementation string.
- (camel_pop3_command): Clarify documentation to mention that
- @ex isn't set (and *@ret is) on CAMEL_POP3_ERR.
- (connect_to_server): Set @ex properly on CAMEL_POP3_ERR.
-
- * providers/pop3/camel-pop3-folder.c (pop3_refresh_info,
- pop3_get_message): Set @ex properly on CAMEL_POP3_ERR.
-
-2001-04-17 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-pkcs7-context.[c,h]: New source files to handle Pkcs7
- encryption, decryption, signing, and verifying. Not yet
- complete. I'm sensing this is going to take a while seeing as how
- NSS is just so well documented.
-
-2001-04-17 Dan Winship <danw@ximian.com>
-
- * camel-filter-driver.c (camel_filter_driver_filter_message): Fix
- a memory leak in the error case.
-
-2001-04-16 Jeffrey Stedfast <fejj@ximian.com>
-
- * providers/local/camel-mbox-summary.c (summary_rebuild): Don't we
- want to tell where we are by using the start of the message? I
- think this should be using camel_mime_parser_tell_start_from()
- instead. Also divide by the size *before* multiplying by 100 so
- that we don't overflow the int which was giving us negative values
- for our progress status (oops).
-
-2001-04-16 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-operation.c: Added a prototype for stamp().
-
- * camel-charset-map.c (camel_charset_locale_name): #include
- string.h so we don't get a warning about strchr being undefined
- and also init charset to NULL.
-
- * camel-pgp-context.c (pgp_verify): Go back to doing the utf8
- conversion by hand so that we don't depend on gal.
-
- * Makefile.am: Remove the EXTRA_GNOME_CFLAGS include.
-
- * camel-store.c (camel_mkdir_hier): Convenience function that it
- seems a number of camel-store implementations used gal for.
-
- * providers/nntp/camel-nntp-store.c (ensure_news_dir_exists): Lets
- not depend on gal for just e_mkdir_hier() - use camel_mkdir_hier()
- instead.
-
- * providers/nntp/camel-imap-store.c: Lets not depend on gal for
- just e_mkdir_hier() - use camel_mkdir_hier() instead.
-
- * camel-session.c (camel_session_get_storage_path): Don't depend
- on e_mkdir_heir() anymore, use the CamelStore version.
-
- * camel-folder-search.h: Removed gal dependency, why was this even
- there in the first place?
-
- * providers/imap/camel-imap-folder.c: Don't need gal/util/e-util.h
- here, so remove it.
-
- * string-utils.c (strstrcase): New function, well more like old
- function brought back to life so we don't have to depend on gal.
-
- * providers/imap/camel-imap-store.c (imap_store_setup_online): Use
- strstrcase rather than e_strstrcase so we don't depend on gal.
- (get_unread_online): Same here.
-
- * providers/smtp/camel-smtp-transport.c (smtp_helo): Use
- strstrcase.
-
-2001-04-15 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-mime-utils.c (header_raw_check_mailing_list): regex
- doesn't set errno and regcomp returns 0 on success and any other
- value for an error (so don't *just* check for -1).
-
-2001-04-14 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-cipher-context.c: Check to make sure the context is a
- valid context in all the user functions.
-
-2001-04-13 Jon Trowbridge <trow@ximian.com>
-
- * providers/imap/camel-imap-store.c (imap_disconnect):
- s/imap_store/store/, fixing a typo that was causing the build to
- fail.
-
- * camel-filter-search.c (get_source): Make the (previously unused)
- get-source command actually do the right thing, properly shrouding
- any passed-in source and falling back to use the source attached
- to the mime message.
-
-2001-04-13 Dan Winship <danw@ximian.com>
-
- * camel-object.c (camel_object_hook_event):
- * camel-uid-cache.c (camel_uid_cache_get_new_uids):
- * camel-url.c (camel_url_new_with_base): Plug leaks.
-
- * camel-remote-store.c (camel_remote_store_init): Don't
- re-initialize the folders hash table.
-
- * providers/imap/camel-imap-store.c (imap_disconnect): Free
- authtypes since they'll be re-read on re-connect.
- (get_folder_info): Free folderinfos that we're discarding from the
- list.
-
-2001-04-12 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-pgp-context.c (camel_pgp_context_get_type): Oops, lets not
- get into a recursive call here ;-)
-
- * tests/smime/pgp.c: Updated to reflect changes to the PGP code.
-
- * tests/smime/pgp-mime.c: Same.
-
-2001-04-12 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-pgp-mime.c: Updated to reflect the few changes made to the
- CamelPgpContext class.
-
- * camel-pgp-context.c: Updated to subclass of CamelCipherContext.
-
- * camel-cipher-context.[c,h]: New base class for
- CamelPgpContext. Also contains the replacement for
- CamelPgpValidity, CamelCipherValidity.
-
-2001-04-12 Dan Winship <danw@ximian.com>
-
- * camel-mime-filter-crlf.c (filter): Fix a pair of array bounds
- reads noted by purify
-
-2001-04-12 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel.h: #include the pgp stuff.
-
-2001-04-12 Dan Winship <danw@ximian.com>
-
- * providers/imap/camel-imap-message-cache.c
- (camel_imap_message_cache_remove):
- * camel-url.c (camel_url_to_string): Plug memory leaks.
-
-2001-04-11 Dan Winship <danw@ximian.com>
-
- * providers/imap/camel-imap-utils.c (imap_parse_string_generic):
- Simplify peterw's imap_is_atom_char fix.
-
-2001-04-11 Jeffrey Stedfast <fejj@ximian.com>
-
- * tests/smime/Makefile.am: Added pgp-mime.c to the tests.
-
- * tests/smime/pgp-mime.c: Test suite for camel-pgp-mime.c functions.
-
- * Makefile.am: Add camel-pgp-mime.[c,h] to the build.
-
- * camel-pgp-mime.c: Made a number of fixes to get it to compile
- and also fixed a few logic errors (mostly forgetting to reset
- streams) so that it worked (thanks to the pgp-mime test program).
-
-2001-04-11 JP Rosevear <jpr@ximian.com>
-
- * providers/imap/Makefile.am: user GNOME_INCLUDEDIR since gnome
- files are included in the top level camel headers and the gtk
- include dir is now versioned and such
-
- * providers/local/Makefile.am: ditto
-
- * providers/pop3/Makefile.am: ditto
-
- * providers/smtp/Makefile.am: ditto
-
- * providers/sendmail/Makefile.am: ditto
-
- * camel-service.c: use five arg version of gethostbyname_r if
- appropriate
- (camel_get_host_byname): check if msg->herr is non-zero instead of
- checking if msg->hp is null since we may not always have msg->hp
-
-2001-04-11 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-sasl-digest-md5.c (digest_response): Use
- camel_charset_locale_name() to get the locale charset rather than
- checking the CHARSET environment variable. This is a much less
- ugly hack. Also: If we fail to be able to convert to UTF8, then
- disavow all knowledge of the charset parameter.
-
- * camel-charset-map.c (camel_charset_locale_name): New function to
- return the locale charset (or NULL if US-ASCII).
-
-2001-04-11 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-pgp-context.c (camel_pgp_verify): Use
- e_utf8_from_locale_string() rather than trying to do it manually
- since Lauris's version works much better.
-
-2001-04-06 Jeffrey Stedfast <fejj@ximian.com>
-
- * Makefile.am: Added camel-pgp-context.[c,h] to the build. Also
- added tests/smime/pgp.c and Makefile.am
-
- * tests/smime/pgp.c: New test suite for PGP functions.
-
- * camel-pgp-context.c: Various fixes to get it to build.
-
-2001-04-07 Peter Williams <peterw@ximian.com>
-
- * providers/imap/camel-imap-utils.c (imap_parse_string_generic): It
- would be a good idea to recognize '\0'. Before, this code was running
- off the ends of strings and intermittently coredumping (if it didn't
- hit an imap_atom_char first) -- whoops!
-
-2001-04-05 Not Zed <NotZed@Ximian.com>
-
- * merge from evolution-0-10-branch to evolution-0-10-merge-0
-
-2001-04-03 Jeffrey Stedfast <fejj@ximian.com>
-
- * Makefile.am: Added tests/ back in
-
- * camel-mime-utils.c (header_decode_text): Ignore whitespace
- between encoded words (there were a few cases where it didn't
- before).
- (header_encode_string): Preserve whitespace between words that are
- to be encoded by encoding them too.
- (header_encode_phrase): Same here but with phrases.
-
-2001-04-03 Dan Winship <danw@ximian.com>
-
- * providers/imap/camel-imap-folder.c (imap_sync): If we don't
- change any flags or expunge, send a NOOP to give the server a
- chance to send EXISTS, etc, messages.
- (imap_get_message): If the server_level < IMAP4rev1, always fetch
- messages all-at-once, since they don't support the [#.MIME]
- syntax.
- (imap_update_summary): When reading message flags, set the
- server_flags field as well, and don't overwrite any flags set by
- camel_folder_summary_info_new_from_message. Might help with some
- of the flag problems...
-
-2001-04-02 Dan Winship <danw@ximian.com>
-
- * camel-service.h: Remove the "quick_login" member, which is
- unnecessary.
-
- * providers/smtp/camel-smtp-transport.c (smtp_auth): Remove the
- references to quick_login and fix this to use the CamelSasl
- interfaces correctly to do the same thing.
- (connect_to_server): Split this out of smtp_connect
- (smtp_connect): Use connect_to_server. When re-EHLO'ing after
- auth, ignore errors.
- (query_auth_types): Use connect_to_server rather than
- smtp_connect, so it doesn't try to authenticate. Add LOGIN
- authtype to the list of authtypes to check for.
-
- * providers/smtp/camel-smtp-provider.c
- (camel_provider_module_init): Add LOGIN authtype to the authtypes
- list explicitly.
-
- * camel-sasl.c (camel_sasl_authtype_list): Don't list LOGIN here:
- it's not a real SASL authtype and is only used for SMTP.
-
- * camel-sasl-plain.c:
- * camel-sasl-login.c:
- * camel-sasl-kerberos4.c:
- * camel-sasl-cram-md5.c:
- * camel-sasl-anonymous.c:
- * providers/pop3/camel-pop3-provider.c: Remove "quick_login"
- argument from authtypes.
-
-2001-04-02 Gediminas Paulauskas <menesis@delfi.lt>
-
- * camel-filter-driver.c: marked missing report status' for translation.
-
-2001-04-02 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-pgp-context.c (camel_pgp_sign): mutex lock & unlock the
- context.
- (camel_pgp_clearsign): Same.
- (camel_pgp_verify): Same.
- (camel_pgp_encrypt): Same.
- (camel_pgp_decrypt): And finally here...
-
- * camel-pgp-context.h: Update the function prototypes to match
- those found in camel-pgp-context.c.
-
- * camel-pgp-context.c: Updated.
-
- * camel-pgp-mime.c (camel_pgp_mime_part_sign): Implemented.
- (camel_pgp_mime_part_verify): Implemented.
- (camel_pgp_mime_part_encrypt): Implemented.
- (camel_pgp_mime_part_decrypt): Implemented.
-
-2001-04-01 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-sasl-login.[c,h]: New files to handle the LOGIN SASL
- mechanism.
-
- * camel-sasl-plain.c: Removed the definition of
- camel_sasl_login_authtype.
-
- * camel-sasl.c (camel_sasl_new): Oops. I thought LOGIN was an
- alias to PLAIN. I was wrong. These two SASL objects have to be
- separate.
-
- * providers/smtp/camel-smtp-transport.c (smtp_auth): Updated to
- check for and use authmech->quick_login when available.
-
-2001-04-01 Jeffrey Stedfast <fejj@ximian.com>
-
- * providers/pop3/camel-pop3-provider.c: Updated the authtypes here
- too.
-
- * camel-sasl-plain.c:
- * camel-sasl-anonymous.c:
- * camel-sasl-digest-md5.c:
- * camel-sasl-cram-md5.c:
- * camel-sasl-kerberos4.c: Updated the authtype values.
-
- * camel-service.h: Added another field to CamelServiceAuthType
- that specifies whether or not the mechanism supports "quick auth"
- which means that the client can send the initial challenge in the
- AUTH request.
-
- * camel-sasl.c (camel_sasl_new): Add support for LOGIN.
- (camel_sasl_authtype_list): Here too.
- (camel_sasl_authtype): And finally here.
-
- * camel-sasl-plain.c: Define camel_sasl_login_authtype.
-
- * providers/smtp/camel-smtp-transport.c (smtp_auth): Only unref
- the SASL object if it exists.
-
-2001-03-30 Dan Winship <danw@ximian.com>
-
- * providers/pop3/camel-pop3-store.c (connect_to_server,
- query_auth_types, pop3_connect): Move things around here to make
- this all work right again (so you don't get prompted for a
- password when checking the supported authtypes.)
-
-2001-03-30 Jon Trowbridge <trow@ximian.com>
-
- * camel-mime-message.c (camel_mime_message_set_source): Shrould
- our source URL before putting it into X-Evolution-Source.
-
-2001-03-29 Jeffrey Stedfast <fejj@ximian.com>
-
- * providers/imap/camel-imap-store.c (get_folder_info): Don't
- blindly append "/INBOX", construct a CamelURL and set the path
- that way.
- (parse_list_response_as_folder_info): Don't blindly append
- "/<foldername>", construct a CamelURL and set the path that way
- instead.
- (get_folders_offline): And again here.
-
-2001-03-30 Not Zed <NotZed@Ximian.com>
-
- * camel-service.c (camel_get_host_byname): Dont overwrite an
- exception if we got one already. Added camel_operation status to
- it, and comment out some debug.
-
-2001-03-29 Not Zed <NotZed@Ximian.com>
-
- * providers/smtp/camel-smtp-transport.c (smtp_connect): Free host
- name info when done ... blah blah.
-
- * camel-sasl-kerberos4.c (krb4_challenge): Free host name info
- after we're done with it.
-
- * camel-sasl-digest-md5.c (digest_md5_challenge): Free host name
- info after we're done with it.
-
- * camel-remote-store.c (remote_connect): Free the host name info
- from get_host after we're finished with it.
-
- * camel-service.c (camel_get_host_byname): New function to
- lookup a name, and still be cancellable.
- (camel_free_host): And a function to free the structure
- returned.
- (camel_service_gethost): Call get_host_byname for this.
-
-2001-03-29 Jon Trowbridge <trow@ximian.com>
-
- * camel-filter-driver.c (camel_filter_driver_filter_message): Save
- the source URL using camel_mime_message_set_source.
-
- * camel-mime-message.c (camel_mime_message_set_source): Renamed
- camel_mime_message_set_identity to this. Sets the X-Evolution-Source
- header.
- (camel_mime_message_get_source): Returns the X-Evolution-Source
- header.
-
-2001-03-29 Kjartan Maraas <kmaraas@gnome.org>
-
- * broken-date-parser.c: #include <stdio.h>, <stdlib.h> and <string.h>
- * broken-date-parser.h: Remove all includes but <glib.h>
- * camel-address.h: Added #include <glib.h>
- * camel-data-wrapper.c: Move system includes to the top.
- * camel-data-wrapper.h: #include <glib.h>
- * camel-exception.c: #ifdef HAVE_CONFIG_H
- * camel-exception.h: Remove #include <glib.h>
- * camel-filter-driver.c: #ifdef HAVE_CONFIG_H and move system
- headers to top. Mark strings in camel_exception_set*() for i18n.
- * camel-filter-driver.h: #include <glib.h>
- * camel-filter-search.c: #ifdef HAVE_CONFIG_H
- * camel-folder-search.c: #include <config.h>
- * camel-folder-search.h: Header shuffling
- * camel-folder-summary.h: Same here
- * camel-folder-thread.c: #ifdef HAVE_CONFIG_H
- * camel-folder.c: Here too.
- * camel-folder.h: #include <glib.h>
- * camel-internet-address.c: Move system headers up
- * camel-lock.c: #ifdef HAVE_CONFIG_H
- * camel-medium.c: Same here
- * camel-mime-filter-bestenc.c: Move system headers up
- * camel-mime-filter-from.c: Same here
- * camel-mime-filter-linewrap.c: And here
- * camel-mime-filter.c: #include <string.h> to fix warnings from new gcc
- * camel-mime-filter.h: System headers moved up
- * camel-mime-message.c: Here too. #ifdef HAVE_CONFIG_H added
- * camel-mime-part-utils.c: #ifdef HAVE_CONFIG_H added
- * camel-mime-part.c: Here too, and shuffle headers
- * camel-mime-utils.c: #ifdef HAVE_CONFIG_H. Remove const from two
- variables to remove warning.
- * camel-mime-utils.h: Shuffle headers
- * camel-movemail.c: #ifdef HAVE_CONFIG_H. Mark string in camel_exception_set
- * camel-multipart.c: #ifdef HAVE_CONFIG_H. Added includes to remove
- warnings from new gcc
- * camel-object.c: #ifdef HAVE_CONFIG_H
- * camel-object.h: Shuffle headers
- * camel-operation.c: #ifdef HAVE_CONFIG_H
- * camel-provider.c: #ifdef HAVE_CONFIG_H. Shuffle headers. Mark a string
- * camel-remote-store.c: #ifdef HAVE_CONFIG_H
- * camel-sasl-anonymous.c: #ifdef HAVE_CONFIG_H. #include <string.h>
- * camel-sasl-cram-md5.c: #ifdef HAVE_CONFIG_H. #include <string.h> and
- <stdio.h> to remove warnings.
- * camel-sasl-digest-md5.c: #ifdef HAVE_CONFIG_H. shuffle headers
- * camel-sasl-digest-md5.h: Shuffle headers.
- * camel-sasl-kerberos4.c: #ifdef HAVE_CONFIG_H. Shuffle headers.
- * camel-sasl-kerberos4.h: Shuffle headers.
- * camel-sasl-plain.c: #ifdef HAVE_CONFIG_H. Shuffle
- * camel-sasl.c: #ifdef HAVE_CONFIG_H. #include <string.h>
- * camel-search-private.c: #include <config.h>
- * camel-seekable-stream.c: #ifdef HAVE_CONFIG_H
- * camel-seekable-stream.h: Shuffle
- * camel-seekable-substream.c: #ifdef HAVE_CONFIG_H
- * camel-service.c: Same
- * camel-service.h: Shuffle
- * camel-session.c: #ifdef HAVE_CONFIG_H
- * camel-store.c: Same
- * camel-stream-buffer.c: Here too
- * camel-stream-buffer.h: Shuffle
- * camel-stream-filter.c: #include <string.h>
- * camel-stream-fs.c: #ifdef HAVE_CONFIG_H
- * camel-stream-fs.h: Shuffle headers
- * camel-stream-mem.c: Same as above
- * camel-stream-mem.h: Here too
- * camel-stream-null.c: #ifdef HAVE_CONFIG_H
- * camel-stream.c: Here too
- * camel-stream.h: Shuffle
- * camel-tcp-stream-openssl.c: #ifdef HAVE_CONFIG_H
- * camel-tcp-stream-raw.c: Same here. and move local includes down
- * camel-tcp-stream-ssl.c: Same as above
- * camel-tcp-stream.c: #ifdef HAVE_CONFIG_H
- * camel-tcp-stream.h: move local include down
- * camel-transport.c: #ifdef HAVE_CONFIG_H
- * camel-transport.h: #include <glib.h>
- * camel-uid-cache.c: #ifdef HAVE_CONFIG_H. Shuffle headers
- * camel-uid-cache.h: Shuffle
- * camel-url.c: #ifdef HAVE_CONFIG_H
- * camel-vee-folder.c: #ifdef HAVE_CONFIG_H. Shuffle headers
- * camel-vee-folder.h: #include <glib.h>
- * camel-vee-store.h: Same here
- * camel.c: #ifdef HAVE_CONFIG_H
- * gstring-util.c: Here too
- * hash-table-utils.c: Remove #include <glib.h>
- * hash-table-utils.h: #include it here instead.
- * string-utils.c: #ifdef HAVE_CONFIG_H
- * providers/cache/camel-cache-map.c: #ifdef HAVE_CONFIG_H, shuffle
- headers and mark strings in camel_exception_set*()
- * providers/cache/camel-cache-provider.c: #ifdef HAVE_CONFIG_H
- * providers/cache/camel-cache-store.c: Same here, and mark a string.
- * providers/imap/camel-imap-command.c: #ifdef HAVE_CONFIG_H
- * providers/imap/camel-imap-command.h: Shuffle header
- * providers/imap/camel-imap-folder.c: #ifdef HAVE_CONFIG_H
- * providers/imap/camel-imap-message-cache.c: #ifdef HAVE_CONFIG_H
- * providers/imap/camel-imap-provider.c: #ifdef HAVE_CONFIG_H and
- #include <string.h>
- * providers/imap/camel-imap-search.c: #ifdef HAVE_CONFIG_H
- * providers/imap/camel-imap-store.c: #ifdef HAVE_CONFIG_H and mark
- a string.
- * providers/imap/camel-imap-summary.c: Shuffle headers
- * providers/imap/camel-imap-wrapper.c: #ifdef HAVE_CONFIG_H. Shuffle
- * providers/local/camel-local-folder.c: #ifdef HAVE_CONFIG_H
- * providers/local/camel-local-provider.c: #ifdef HAVE_CONFIG_H
- * providers/local/camel-local-store.c: Same here
- * providers/local/camel-local-summary.c: Here too, shuffle, mark a string
- * providers/local/camel-maildir-folder.c: #ifdef HAVE_CONFIG_H
- * providers/local/camel-maildir-store.c: Same
- * providers/local/camel-maildir-summary.c: Here too
- * providers/local/camel-mbox-summary.c: And here
- * providers/local/camel-mbox-store.c: And here
- * providers/local/camel-mbox-summary.c: #include <config.h>
- * providers/local/camel-mh-folder.c: #ifdef HAVE_CONFIG_H
- * providers/local/camel-mh-store.c: same
- * providers/local/camel-mh-summary.c: #ifdef HAVE_CONFIG_H, shuffle headers
- and mark a string for translation.
- * providers/nntp/camel-nntp-auth.c: #include <config.h>
- * providers/nntp/camel-nntp-store.c: Remove superfluous arg to
- CAMEL_SERVICE_CLASS to make it compile
- * providers/pop3/camel-pop3-provider.c: #ifdef HAVE_CONFIG_H
- * providers/pop3/camel-pop3-store.c: Same here
- * providers/sendmail/camel-sendmail-provider.c: Here too
- * providers/sendmail/camel-sendmail-transport.c: Here too
- * providers/smtp/camel-smtp-provider.c: Same
- * providers/smtp/camel-smtp-transport.c: #ifdef HAVE_CONFIG_H, mark
- strings for translations.
-
-2001-03-29 Dan Winship <danw@ximian.com>
-
- * camel-url.c (camel_url_to_string): change "gboolean show_passwd"
- to "guint32 flags".
-
- * tests/misc/url.c (main): Update calls to camel_url_to_string
-
- * providers/imap/camel-imap-store.c (construct): Call
- camel_url_to_string with flags to hide password, authtype, and
- params to create the base_url.
- (etc): Update for the fact that the base_url no longer has the "/"
- at the end.
-
- * camel-service.c (construct): Update calls to camel_url_to_string
- (pass CAMEL_URL_HIDE_PASSWORD)
-
-2001-04-03 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-mime-utils.c (header_decode_text): Ignore whitespace
- between encoded words (there were a few cases where it didn't
- before).
- (header_encode_string): Preserve whitespace between words that are
- to be encoded by encoding them too.
- (header_encode_phrase): Same here but with phrases.
-
-2001-04-04 Kjartan Maraas <kmaraas@gnome.org>
-
- * camel-filter-driver.c: Added #include <config.h>. Marked
- a bunch of strings for translation.
- * camel-folder-search.c: Added #include <config.h>.
- * camel-folder-summary.c: Same here.
- * camel-movemail.c: Marked strings for translation.
- * camel-provider.c: Same here.
- * camel-search-private.c: #include <config.h>
- * camel-vee-folder.c: Mark string for translation.
- * providers/local/camel-mbox-summary.c: #include <config.h>
-
-2001-04-03 Dan Winship <danw@ximian.com>
-
- * providers/imap/camel-imap-folder.c (imap_sync): If we don't
- change any flags or expunge, send a NOOP to give the server a
- chance to send EXISTS, etc, messages.
- (imap_get_message): If the server_level < IMAP4rev1, always fetch
- messages all-at-once, since they don't support the [#.MIME]
- syntax.
-
-2001-04-01 Jeffrey Stedfast <fejj@ximian.com>
-
- * providers/imap/camel-imap-store.c (get_folder_info): Don't
- blindly append "/INBOX", construct a CamelURL and set the path
- that way.
- (parse_list_response_as_folder_info): Don't blindly append
- "/<foldername>", construct a CamelURL and set the path that way
- instead.
- (get_folders_offline): And again here.
-
-2001-03-31 Not Zed <NotZed@Ximian.com>
-
- * camel-operation.c (struct _status_stack): change stamp to
- unsigned to avoid overflow.
- (camel_operation_end):
- (camel_operation_progress_count):
- (camel_operation_progress): Double the delay before transient
- events start showing their own progress.
-
-2001-03-30 Not Zed <NotZed@Ximian.com>
-
- * providers/pop3/camel-pop3-folder.c (pop3_get_message): Change
- the pop download into a transient event.
-
- * camel-operation.c (stamp): Get a timestamp that changes 4x a
- second (or rather, arbitrarily more often than 1/second).
- (camel_operation_progress): Use stamp() for time updates.
- (camel_operation_progress_count): "
- (camel_operation_start): Store the status as a struct status_stack
- item.
- (camel_operation_start_transient): New function to start a
- transient event, which is only reported if it runs for too
- long/and is reset afterwards.
- (camel_operation_progress):
- (camel_operation_progress_count): Fix for status_stack changes,
- and account for transient updates.
-
- * camel-filter-driver.c (camel_filter_driver_filter_folder): When
- we remove things (set deleted), always set seen too, to mirror
- interface behaviour when you delete.
- (camel_filter_driver_filter_message): And same here too.
-
-2001-03-30 Dan Winship <danw@ximian.com>
-
- * providers/pop3/camel-pop3-store.c (connect_to_server,
- query_auth_types, pop3_connect): Move things around here to make
- this all work right again (so you don't get prompted for a
- password when checking the supported authtypes.)
-
-2001-03-29 Dan Winship <danw@ximian.com>
-
- * camel-url.c (camel_url_to_string): change "gboolean show_passwd"
- to "guint32 flags".
-
- * tests/misc/url.c (main): Update calls to camel_url_to_string
-
- * providers/imap/camel-imap-store.c (construct): Call
- camel_url_to_string with flags to hide password, authtype, and
- params to create the base_url.
- (etc): Update for the fact that the base_url no longer has the "/"
- at the end.
-
- * camel-service.c (construct): Update calls to camel_url_to_string
- (pass CAMEL_URL_HIDE_PASSWORD)
-
-2001-03-28 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-pgp-context.[c,h]: New class for PGP encrypting,
- decrypting, signing and verifying. Next I'll be moving the
- contents of mail/mail-crypto into Camel. These files will
- basically replace mail/openpgp-utils.[c,h].
-
-2001-03-29 Not Zed <NotZed@Ximian.com>
-
- * camel-folder-search.c (search_body_contains): Optimise the match
- "" case, just match everything in the folder (if we have it).
-
- * camel-vtrash-folder.c (vtrash_move_messages_to): Access the
- folder directly from the message info.
- (vtrash_move_messages_to): I think we also need to call the real
- move_messages_to, and not try and bypass the lock, since we dont
- have the lock for that folder.
-
- * camel-vee-folder.h: Move CamelVeeMessageInfo to public, so
- subclasses can get to it.
-
- * camel-vee-folder.c (camel_vee_folder_add_folder): Dont let you
- add a vfolder to itself.
- (folder_changed):
- (vee_folder_remove_folder):
- (vee_folder_build_folder): Copy changes before triggering changed
- events, so we can do them outside of locks.
- (camel_vee_folder_get_message_folder): Removed function.
- (camel_vee_folder_hash_folder): Made public (renamed from
- hash_folder), simply for subclasses (probably not needed).
- (vee_expunge): Oops, call the class sync, not superclass sync.
- (vee_sync): Remove some accidental debug.
-
-2001-03-27 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-service.c (get_path): Add the port (if user defined) to
- the path to fix bug #1996.
-
- Danw: I'm iffy on the "fix" so I'd like you to comment.
-
-2001-03-27 Jeffrey Stedfast <fejj@ximian.com>
-
- * providers/pop3/camel-pop3-folder.c (pop3_sync): If we aren't
- going to even check the resp/free buffer that gets returned from
- camel_pop3_command, don't even bother using it. Send in NULL
- instead.
- (pop3_get_message): Check to make sure that the `result' string is
- non-NULL. It's possible that some POP servers may return with
- "+OK\r\n<message>..." rather than the expected
- "+OK ### octets\r\n<message>..."
-
-2001-03-27 Not Zed <NotZed@Ximian.com>
-
- * camel-folder-summary.c (camel_folder_summary_finalize): Unref
- the html filter when done.
- (summary_build_content_info): Disable using the html parser to
- help index html mails until it gets sorted out.
-
- * camel-vee-folder.c (folder_changed): Fix a cut n paste bug, we
- want uid_removed not uid_changed deref, fixes bug #1999.
-
-2001-03-27 Dan Winship <danw@ximian.com>
-
- * camel-sasl.c (camel_sasl_authtype_list): add an argument to say
- whether or not you want "PLAIN" in the list (so you don't end up
- with "Password" twice in the config dialog).
-
- * providers/imap/camel-imap-provider.c (camel_provider_module_init):
- * providers/imap/camel-imap-store.c (query_auth_types): We don't
- want PLAIN.
-
- * providers/smtp/camel-smtp-provider.c (camel_provider_module_init):
- * providers/smtp/camel-smtp-transport.c (query_auth_types): But we
- do.
-
-2001-03-27 Dan Winship <danw@ximian.com>
-
- * camel-provider.h: Add an "extra_conf" field to CamelProvider
- with structures and defines and stuff, for providers to specify
- additional configuration options that they want. Also add a
- "supports ssl" flag to the provider flags.
-
- * camel-url.c (camel_url_new_with_base): Fix parsing of params.
- (output_param): And unparsing...
-
- * camel-remote-store.c: add a "default_ssl_port" field.
- (remote_construct): If the URL has the "use_ssl" parameter, set
- the store's use_ssl flag.
- (remote_connect): If using SSL and no port specified, use the
- default_ssl_port rather than the default_port.
-
- * providers/smtp/camel-smtp-provider.c (smtp_provider): add
- CAMEL_PROVIDER_SUPPORTS_SSL and CAMEL_URL_ALLOW_USER. (The config
- gui code knows that the ALLOW_USER and ALLOW_AUTH go together.)
- (ssmtp_provider): gone
-
- * providers/smtp/camel-smtp-transport.c (smtp_construct): Set a
- flag if "use_ssl" param is set.
- (smtp_connect): Check the CamelSmtpTransport use_ssl flag rather
- than checking if this is smtp or ssmtp.
-
- * providers/imap/camel-imap-provider.c (imap_conf_entries): Add a
- bunch of IMAP-specific configuration options, like "check for new
- mail in all folders" (default TRUE), "show only subscribed
- folders" (default TRUE), "ignore server-supplied namespace", and
- "apply filters to INBOX" (not yet implemented).
- (imap_provider): We support SSL and we no longer allow a path in
- the URL. (namespace is handled via extra_conf)
- (simap_provider): Gone
-
- * providers/imap/camel-imap-store.c (camel_imap_store_init): Set
- default_ssl_port, don't set CAMEL_STORE_SUBSCRIPTIONS here
- (construct): remove simap stuff, deal with "use_lsub",
- "namespace", "check_all", and "filter" parameters. Set base_url
- to not include params.
- (imap_store_setup_online): Don't ask for the namespace if it was
- set explicitly. Don't get subscribed folders if !use_lsub.
- (imap_concat): Fix a bug.
- (get_folder_info): Support for not checking all folders.
-
- * providers/imap/camel-imap-folder.c (imap_get_full_name): Rewrite
- to use imap_store->namespace, not service->url->path
-
- * providers/pop3/camel-pop3-provider.c (pop3_conf_entries): "keep
- on server" (currently still implemented by the mailer code, not
- here), "delete after N days" (not yet implemented).
- (pop3_provider): we support SSL
- (spop_provider): gone
-
- * providers/pop3/camel-pop3-store.c (camel_pop3_store_init): Set
- default_ssl_port
- (pop3_connect): Remove spop code
-
-2001-03-26 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-vee-folder.c (vee_folder_construct): Move all of the
- camel_vee_folder_construct() internals here.
- (camel_vee_folder_construct): This function basically becomes a
- wrapper for vee_folder_construct and also checks to make sure that
- the UNMATCHED vfodler is constructed otherwise constructs it.
- (camel_vee_folder_new): Call vee_folder_construct() instead so
- that we don't get into a dead-lock.
-
-2001-03-26 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-store.c (init_trash): Use camel_vtrash_folder_new() to
- create the vtrash folder now.
-
- * camel-vtrash-folder.[c,h]: New subclass of CamelVeeFolder for
- our vTrash folders.
-
- * camel-folder.c (camel_folder_copy_messages_to): Don't watch for
- vtrash folders anymore.
- (camel_folder_move_messages_to): Same.
-
- * camel-vee-folder.c (camel_vee_folder_class_init): Update.
- (vee_move_messages_to): Rewrite to use the new move API.
-
- * camel-filter-driver.c (do_copy): Updated to reflect
- copy_message_to changes. Create a temporary uid array and use
- that.
- (do_move): Same.
- (camel_filter_driver_filter_message): And again, here...
-
- * providers/imap/camel-imap-folder.c (imap_copy_messages_to):
- Update to the new API.
- (imap_move_messages_to): Same.
- (get_uid_set): New function to create a `set' string based on an
- array of UIDs for use with imap_copy_messages_to.
-
- * camel-folder.c (camel_folder_copy_messages_to): Replaces
- camel_folder_copy_message_to
- (camel_folder_move_message_to): Replaces
- camel_folder_move_message_to.
-
-2001-03-27 Not Zed <NotZed@Ximian.com>
-
- * camel-vee-store.c (vee_get_folder): Added folder_created event
- here.
-
- * camel-vee-folder.c (unmatched_finalise): Removed, moved into
- main finalise code.
- (message_changed): Just create a new change entry and promote it
- to a folder_changed thing.
- (vee_sync): Always rebuild folder on sync, even when not expunge.
- (folder_changed): If not autoupdating, make sure we remove any
- removed entries.
- (vee_folder_build_folder):
- (vee_folder_remove_folder): NOP if we're called on
- folder_unmatched.
- (vee_search_by_expression): Only search each folder once. Should
- we also order the result in summary order?
-
-2001-03-20 Not Zed <NotZed@Ximian.com>
-
- * camel-store.c (init_trash): Fix calling for vee_folder_new().
-
- * camel-folder-summary.c (camel_folder_summary_remove_index):
- Optimise slightly, use ptr_array_remove_index rather than have to
- search for the index by using summary_remove.
-
- * camel-vee-folder.h: Removed local member from VeeFolder, since
- it was never used.
-
- * camel-vee-store.c (camel_vee_store_finalise): Setup finalise
- function.
-
- * camel-vee-folder.c (camel_vee_folder_set_expression): New
- function to set the query of an existing vfolder.
- (camel_vee_folder_construct): New function for
- convenience/subclasses.
- (camel_vee_folder_new): Removed exception parameter, no longer
- needed (since we dont search yet).
- (camel_vee_folder_new): Changed to use folder_construct, and no
- longer raise the folder created signal.
- (vee_folder_build_folder): Make it return error on exception, so
- we can work without exceptions.
- (vee_folder_remove_folder): Use remove index rather than
- remove_uid, this is ok since we have the summary locked for our
- own access.
- (camel_vee_folder_add_folder): Only add the folder to the
- unmatched private if it is not a private folder.
- (camel_vee_folder_remove_folder): Only remove the folder from
- unmatched if it is not private.
- (vee_expunge): Just call sync with expunge set.
- (vee_sync): If expunging, also refresh the search.
- (vee_folder_build_folder): We do our own locking now, removed from
- callers, also trigger changed events here too (within locks),
- fixed callers appropriately.
- (vee_folder_remove_folder): Do our own locking, and trigger
- changed events.
- (vee_folder_add_info): Renamed of vee_folder_add, we now take a
- hash of the folder name, rather than use the folders address.
- (hash_folder): Convert a folder name into an 8 character hash.
- (vee_get_message, vee_search_by_expression, vee_set_message_flags,
- vee_set_message_user_flag, vee_move_message_to): Changed the uid
- to be an 8 byte hash + original uid, with no ':' anymore.
-
-2001-03-26 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-mime-utils.c (header_decode_text): When writing the last
- token (if not rfc2047 encoded), don't use g_string_append_len, use
- append_latin1.
-
- * camel-mime-message.c (write_to_stream): Don't spew a warning if
- the message-id wasn't set by the application, not a big deal since
- we create one right here.
-
-2001-03-26 Dan Winship <danw@ximian.com>
-
- * providers/imap/camel-imap-command.c (camel_imap_command): keep a
- reference on the store's current_folder.
-
- * providers/imap/camel-imap-store.c (camel_imap_store_finalize):
- (imap_disconnect): unref the current_folder before clearing it.
-
- * camel-url.c (camel_url_get_param): Add missing accessor.
-
- * camel-session.c (camel_session_get_provider): New. Return
- the provider for a URL.
-
-2001-03-25 Dan Winship <danw@ximian.com>
-
- * camel-url.c (camel_url_new_with_base): New URL parser with full
- RFC1808 relative URL support. Yum.
- (camel_url_new): Wrapper around camel_url_new_with_base now.
-
- * tests/Makefile.am: add misc subdir
-
- * tests/misc/url.c: relative URL test cases from RFC 1808
-
-2001-03-25 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-filter-driver.c (do_copy): Don't use copy_to if the source
- folder doesn't support summary info's.
- (do_move): Same.
- (camel_filter_driver_filter_message): And again here. I think
- this will fix the problem of "colour" tags not staying with the
- message when it's copied to a folder during the filter process.
-
-2001-03-24 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-sasl-digest-md5.c (digest_response): Do charset conversion
- on the username param here if needed.
- (parse_server_challenge): Protect against possibly empty-string
- charset values.
-
-2001-03-23 Jon Trowbridge <trow@ximian.com>
-
- * camel-filter-driver.c (camel_filter_driver_filter_message):
- Don't call camel_mime_message_set_identity. (The call is
- commented out, left over from some earlier experimentation that I
- want to be able to remember later...)
-
- * camel-mime-message.c (camel_mime_message_set_identity): Added.
- A function to set the X-Evolution-Identity header.
-
-2001-03-22 Dan Winship <danw@ximian.com>
-
- * providers/imap/camel-imap-command.c (imap_read_response): Don't
- look at untagged responses other than "* BYE"...
- (camel_imap_response_free): ...do it here instead...
- (camel_imap_response_free_without_processing): ...but not here.
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_selected):
- Remove the "EXISTS" line from the response so
- camel_imap_response_free won't try to process it.
- (camel_imap_folder_selected): If we get an EXISTS response mixed
- in with the FETCH responses, record the new EXISTS value.
- Use camel_imap_response_free_without_processing so that an EXISTS
- response won't cause a loop.
- (imap_rescan): Use camel_imap_response_free_without_processing.
- (imap_update_summary): Use
- camel_imap_response_free_without_processing. If an EXISTS response
- shows up, call imap_update_summary again to get the new messages.
- (imap_protocol_get_summary_specifier): Use BODY.PEEK[0], not
- RFC822.HEADER for prev IMAP4rev1, since the FETCH parser won't
- deal with RFC822.HEADER responses.
-
- * providers/imap/camel-imap-store.c (get_folder_info): Fix an
- uninitialized variable
-
-2001-03-21 Dan Winship <danw@ximian.com>
-
- * camel-provider.h: (CamelProvider) add a "GList *authtypes", so
- you can get the list of authtypes used by a provider without
- needing to have an actual CamelService object handy. (Will be
- needed by the new config druid.)
- (CAMEL_PROVIDER_ALLOWS, CAMEL_PROVIDER_NEEDS): New macros to test
- the URL part stuff, since the way it works is too complicated and
- everyone always does it wrong.
-
- * camel-service.c (camel_service_query_auth_types): Remove the
- @connected arg again: if you don't want to connect, you can just
- get the list of authtypes off the provider.
- (camel_service_free_auth_types): Remove this. All existing
- implementations do authtypes the same way, so just say the caller
- should "g_list_free" the list. (Oh, look, removing this function
- doesn't actually cause the mailer to not build. How 'bout that.)
- (construct, get_path): Use the new URL part macros.
-
- * camel-remote-store.c (remote_query_auth_types): Update
- (remote_free_auth_types): Nuke
- (camel_remote_store_authtype_list): New function for use by
- subclasses.
-
- * providers/imap/camel-imap-provider.c:
- * providers/pop3/camel-pop3-provider.c:
- * providers/smtp/camel-smtp-provider.c: Update CamelProvider
- structures.
- (camel_provider_module_init): Put all the SSL parts together so
- there's only 1 #ifdef. Set up the provider authtypes field using
- the SASL, CamelRemoteStore, and standard authtypes, as
- appropriate. Copy that from the normal provider to the SSL
- provider.
-
- * providers/local/camel-local-provider.c:
- * providers/sendmail/camel-sendmail-provider.c:
- * camel-session.c: Update CamelProvider structures.
-
- * providers/imap/camel-imap-store.c (query_auth_types):
- * providers/pop3/camel-pop3-store.c (query_auth_types): Update
-
- * providers/smtp/camel-smtp-store.c (query_auth_types): Update.
- Remove the no_authtype, because that's what "ALLOW_AUTH" rather
- than "NEED_AUTH" means.
- (free_auth_types): Nuke.
-
-2001-03-21 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-filter-driver.c (camel_filter_driver_filter_message):
- Return -1 on fail.
- (camel_filter_driver_filter_folder): Same.
- (camel_filter_driver_filter_mbox): Same.
- (camel_filter_driver_filter_folder): Return -1 if an exception was
- set as well.
-
-2001-03-19 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-tcp-stream-openssl.c (camel_tcp_stream_openssl_finalize):
- Free the expected host.
- (camel_tcp_stream_openssl_new): Now takes a Service and an
- expected_host. Set them.
-
-2001-03-20 Dan Winship <danw@ximian.com>
-
- * providers/imap/camel-imap-store.c
- (camel_imap_store_check_online): Function to check if the store is
- online and set an exception if not. Currently controlled by an
- environment variable, but eventually there will be both a global
- (session-level) setting and a per-store setting.
- (construct): Set up storage_path and base_url here rather than at
- connect-time.
- (imap_auth_loop): Split out from imap_connect.
- (imap_setup_online): Split out from imap_connect. Do the
- post-authentication connection setup, and cache the results to
- disk.
- (imap_setup_offline): Set up a CamelImapStore with information
- saved from a previous imap_setup_online.
- (imap_connect): If online, do connect_to_server(),
- imap_auth_loop(), and imap_setup_online(). Otherwise, do
- imap_setup_offline().
- (get_folder, get_folder_info): Add offline support.
- (create_folder, subscribe_folder, unsubscribe_folder): Disable
- these when offline (for now).
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_new):
- Remove the sync'ing-with-server stuff... it's done by
- camel_imap_folder_selected now, which only gets called if the
- store is online.
- (camel_imap_folder_selected): add the code removed from
- camel_imap_folder_new. Besides simplifying the folder_new and
- summary_new code, this also means now that we'll DTRT if a
- folder's UIDVALIDITY changes while we're connected. Also, when
- that happens, clear the message cache explicitly.
- (imap_refresh_info, imap_sync): These are no-ops when offline.
- (imap_expunge, imap_append_message, imap_copy_message_to,
- imap_search_by_expression): These don't yet work offline.
- (imap_get_message, camel_imap_folder_fetch_data): Return an error
- when trying to fetch a non-cached body part when we're offline.
-
- * providers/imap/camel-imap-summary.c (camel_imap_summary_new):
- Rewrite to not check the validity here. (We'll do it from
- camel_imap_folder_selected instead.)
-
- * providers/imap/camel-imap-command.c (camel_imap_command): Call
- camel_imap_folder_selected even when the selection is all we're
- doing, to match the changes in camel-imap-folder.c.
-
- * providers/imap/camel-imap-message-cache.c
- (camel_imap_message_cache_clear): New function to clear out a
- message cache.
-
-2001-03-19 Christopher James Lahey <clahey@ximian.com>
-
- * Makefile.am (INCLUDES): Added $(EXTRA_GNOME_CFLAGS)
-
-2001-03-19 Jeffrey Stedfast <fejj@ximian.com>
-
- * providers/pop3/camel-pop3-store.c (pop3_connect): Set the errbuf
- to NULL after freeing it? I don't think this should fix bug #1801
- but I guess it can't hurt.
-
-2001-03-18 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-remote-store.c (remote_recv_line): Protect against a
- possibly NULL exception.
-
- * camel-filter-driver.c (camel_filter_driver_filter_message):
- Document and modify to return a boolean value denoting whether or
- not errors occured during processing.
- (camel_filter_driver_filter_mbox): Same as above and also modified
- to check return codes of filter_message rather than relying only
- on whether or not the exception was set (as it's possible to pass
- in NULL for the exception).
- (camel_filter_driver_filter_folder): Same as above.
-
- * camel-mime-utils.c (header_param_list_format_append): Quote the
- param value if it contains whitespace as well.
-
-2001-03-17 Jeffrey Stedfast <fejj@ximian.com>
-
- * Makefile.am: Don't include system include dir.
-
- * camel.c: Use quotes around the nss.h include so it doesn't try
- to use the systen nss.h file.
-
- * camel-tcp-stream-ssl.c: Same here.
-
-2001-03-17 Not Zed <NotZed@Ximian.com>
-
- * providers/local/camel-maildir-summary.c (maildir_summary_sync):
- Modified patch from Dan Berger <dberger@ix.netcom.com> to re-check
- the maildir directory for new/updated messages at sync time.
-
- * camel-folder.c (camel_folder_ref_message_info): Implemented.
- (ref_message_info): And default implementation.
-
- * camel-folder.h: Added ref_message_info virtual method.
-
-2001-03-16 Not Zed <NotZed@Ximian.com>
-
- * camel-folder-thread.c
- (camel_folder_thread_messages_new_summary): New function to create
- a thread tree from a supplied summary array.
- (camel_folder_thread_messages_destroy): Handle thread trees
- generated by the above function properly.
-
-2001-03-16 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-private.h: Same.
-
- * camel-remote-store.h: Fixed #include to use <>'s instead of ""'s
-
-2001-03-16 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-tcp-stream-ssl.c (ssl_bad_cert): Print info about the
- issuer of the certificate.
-
- * providers/smtp/camel-smtp-transport.c (smtp_connect): Use
- camel_tcp_stream_get_socket().
-
- * camel-tcp-stream-openssl.c (stream_get_socket): Implemented.
-
- * camel-tcp-stream-ssl.c (stream_get_socket): Implemented.
-
- * camel-tcp-stream-raw.c (stream_get_socket): Implemented.
-
- * camel-tcp-stream.c (camel_tcp_stream_get_socket): New function.
-
-2001-03-16 Kjartan Maraas <kmaraas@gnome.org>
-
- * providers/pop3/camel-pop3-folder.c: Added #include <config.h>
-
-2001-03-16 Dan Winship <danw@ximian.com>
-
- * camel-mime-utils.c (header_msgid_generate): Don't use
- getdomainname: it's NIS crap, not DNS.
-
-2001-03-15 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel.c (camel_init): Don't use the hardcoded cert db directory,
- use the one passed in.
-
- * camel-tcp-stream-ssl.c (ssl_get_client_auth): Wrote the default
- implementation. Not that we'll use this though, since this is the
- default implementation provided by NSS anyway. This more or less
- serves as a reference in case we want to change anything.
- (ssl_auth_cert): Same.
- (ssl_bad_cert): Changed the prompt string and free it when we're
- done.
-
-2001-03-15 Dan Winship <danw@ximian.com>
-
- First batch of disconnected IMAP-related stuff. This adds local
- caching of message parts, but NOT any actual disconnected support.
- (But it should speed up IMAP use.)
-
- * providers/imap/camel-imap-message-cache.c: New class for caching
- message data to disk, and removing it when it's no longer
- relevant. Will eventually also support merging message parts
- together to save on files. Or maybe using a db instead of files?
-
- * providers/imap/camel-imap-private.h: Add a cache_lock to
- CamelImapFolderPrivate. This lock must be recursive, so make both
- locks EMutexes rather than GMutex.
-
- * providers/imap/camel-imap-folder.c (parse_fetch_response): "The
- only FETCH response parser you need!" Replaces the various
- almost-correct bits of code formerly scattered throughout this
- file with a single fully-correct function that can handle any
- FETCH response at any time, so we don't get confused by seeing a
- flags update when we were only expecting a message body, etc.
- (camel_imap_folder_fetch_data): FETCH a message body part either
- from the cache or the server
- (camel_imap_folder_changed): Remove expunged messages from the
- message cache.
- (camel_imap_folder_new): Change to take a directory instead of a
- summary file name. Create a CamelImapMessageCache for the folder.
- (imap_finalize): Unref the message cache.
- (camel_imap_folder_selected, imap_rescan, get_content,
- get_message, imap_get_message, imap_update_summary): Redone a
- bunch to use parse_fetch_data, CamelImapMessageCache, etc.
-
- * providers/imap/camel-imap-store.c (get_folder): Pass directory
- name to camel_imap_folder_new, not summary filename. Use
- e_path_to_physical to generate a path with /subfolders/ inserted
- between directory components.
-
- * providers/imap/camel-imap-wrapper.c (camel_imap_wrapper_new):
- Call camel_imap_folder_fetch_data (with cache_only TRUE) and if
- the data is cached, return an online datawrapper rather than an
- offline one.
- (write_to_stream): Use camel_imap_folder_fetch_data (with
- cache_only FALSE) here too
-
- * providers/imap/camel-imap-utils.c (imap_skip_list): Renamed from
- skip_list and made non-static.
-
-2001-03-15 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-tcp-stream-ssl.h: Uninclude prnetdb.h since it's not
- needed here.
-
- * providers/smtp/camel-smtp-transport.c: #include prnetdb.h here
- instead of making camel-tcp-stream-ssl.h include it. Prevents some
- header bloat.
-
- * providers/smtp/Makefile.am: Include the NSPR_CFLAGS and
- NSS_CFLAGS.
-
-2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
-
- * providers/smtp/camel-smtp-transport.c (smtp_connect): Update for
- using CamelTcpStreams and also for using SSL.
-
- * providers/smtp/libcamelsmtp.urls: defined "ssmtp"
-
- * providers/smtp/camel-smtp-provider.c: Defined the Secure SMTP
- provider.
- (camel_provider_module_init): Register the Secure SMTP provider.
-
-2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
-
- * providers/imap/camel-imap-store.c (imap_connect): Check for
- "simap" instead of "imaps".
-
- * providers/pop3/camel-pop3-store.c (pop3_connect): Change the
- port to be 995 for spop.
-
- * providers/pop3/libcamelpop3.urls: Change to "spop".
-
- * providers/imap/libcamelimap.urls: Change "imaps" to "simap" to
- correspond to /etc/services.
-
-2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
-
- * providers/pop3/camel-pop3-store.c (pop3_connect): Check to see
- if we are using "pops" and then set the appropriate SSL settings.
-
- * providers/pop3/libcamelpop3.urls: Add "pops"
-
- * providers/pop3/camel-pop3-provider.c: Defined the pops provider.
- (camel_provider_module_init): Register the pops provider.
-
-2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-tcp-stream-ssl.c (camel_tcp_stream_ssl_new): Ya know what?
- Lets not ref the service because otherwise we'll start having the
- same problems we had back with vtrash. Besides, since the store
- owns the stream, it's not like the store is going anywhere without
- the stream anyway.
- (camel_tcp_stream_ssl_finalize): No need to unref the service.
-
-2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-remote-store.c (remote_connect): Pass the service into the
- SSL stream, not the session.
-
- * camel-tcp-stream-ssl.c (camel_tcp_stream_ssl_init): Set the
- service to NULL.
- (camel_tcp_stream_ssl_finalize): Unref the service.
- (camel_tcp_stream_ssl_new): Takes a CamelService arg now rather
- than a CamelSession arg.
-
-2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel.c (camel_init): So it turns out that NSS_Init *isn't*
- idempotent, so we have to protect against initializing it more
- than once(contrary to what their design specs suggest).
-
- * camel-session.c (camel_session_get_service): Use
- camel_exception_is_set() - Makes no difference but it's more
- consistant with how we normally do it.
-
- * camel-provider.h (CAMEL_URL_ALLOW_SSL): We don't need this.
-
- * providers/imap/camel-imap-provider.c: Define the imaps provider.
- (camel_provider_module_init): Register the imaps provider.
-
- * camel-provider.c (camel_provider_init): Only add the protocol to
- the hash table if it's non empty. Also, g_strdup() the filename
- into the hash table.
-
- * providers/imap/camel-imap-store.c (camel_imap_store_init): Eek!
- So the service's URL isn't set until after this is
- initialized. This means we can't check for SSL here.
- (imap_connect): Set the SSL options here instead.
-
-2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-tcp-stream-ssl.c: Numerous fixes to get it to build
- correctly with NSS enabled.
-
- * camel-remote-store.c (remote_connect): Pass in the session and
- expected host args, oops.
-
- * camel-provider.h (CAMEL_URL_ALLOW_SSL): Defined.
-
- * providers/imap/camel-imap-store.c (camel_imap_store_init): Check
- to see if we are supposed to use SSL and set the options
- accordingly.
- (imap_connect): Return FALSE here instead of NULL.
-
- * providers/imap/camel-imap-provider.c: Add CAMEL_URL_ALLOW_SSL.
-
- * providers/imap/libcamelimap.urls: Add "imaps" which is the
- protocol for Secure IMAP.
-
-2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-tcp-stream-openssl.[c,h]: Added
-
- * Makefile.am: Added camel-tcp-stream-openssl.[c,h] to the build.
-
- * camel-types.h: Added CamelTcpStreamSSL and CamelTcpStreamOpenSSL
-
-2001-03-14 Not Zed <NotZed@Ximian.com>
-
- * camel-mime-filter-charset.c (filter, complete): re-constify
- inbuf, to remove a warning.
-
- * camel-mime-parser.c (folder_scan_step): When we're out of data,
- run the filter_complete. For some reason the logic that was there
- was never being run, always try it now, i think it was to work
- around a buggy filter, rather than fix it the right way.
-
- * camel-folder-summary.c (summary_build_content_info): If indexing
- html parts, use the html filter to convert it to some indexable
- format.
- (summary_build_content_info): Reset the filters before adding them
- back to the stream, if they get re-used in a given instance
- (likely).
-
- * Makefile.am (libcamelinclude_HEADERS): Added
- camel-mime-filter-html.[ch].
- (INCLUDES): Added xml clags
-
-2001-03-05 Not Zed <NotZed@Ximian.com>
-
- * camel-folder-search.c (camel_folder_search_class_init): Setup a
- new function, "uid" which matches uids.
- (search_uid): Implement the "match uid" command.
-
-2001-03-13 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-mime-utils.c: Check for a new type of mailing list header.
-
-2001-03-13 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-tcp-stream-raw.c (stream_read): Made cancellable.
- (stream_write): Same.
- (stream_connect): Removed checks for DIVINE_INTERVENTION as the
- code worked fine.
-
- * camel-tcp-stream-ssl.c (stream_write): get rid of 'w' as it
- wasn't really needed.
- (set_errno): New function to set errno based on the NSPR error
- code.
- (stream_read): If an error occured, call set_errno().
- (stream_write): Same.
-
-2001-03-13 Jeffrey Stedfast <fejj@ximian.com>
-
- * Makefile.am: Added camel-tcp-stream-ssl to the build.
-
- * camel-remote-store.h: Add a use_ssl member to the
- CamelRemoteStore object.
-
-2001-03-13 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-tcp-stream-ssl.c (camel_tcp_stream_ssl_get_type):
- Oops. Make this a subclass of CamelTcpStream, not CamelStream.
-
- * camel-types.h: Add the defs for CamelTcpStream and
- CamelTcpStreamRaw
-
- * Makefile.am: Add camel-tcp-stream and camel-tcp-stream-raw to
- the build.
-
- * camel-remote-store.c (remote_connect): Update to use
- CamelTcpStreams.
-
- * camel-tcp-stream-raw.c (stream_connect): Made cancellable by
- copying the currently used code in camel-remote-store.c.
- (stream_setsockopt): Oops, flags = fcntl (..., GET_FL);
- (camel_tcp_stream_raw_get_type): Oops. Make this a subclass of
- CamelTcpStream, not CamelStream.
-
-2001-03-13 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel.c (camel_init): Since all of the Mozilla libs (including
- NSPR and NSS) correctly handle reinitializations, we might as well
- init both NSPR and NSS in camel_init so we can be sure of that
- these libs have been initialized.
- (camel_shutdown): New function to call the NSS cleanup stuff.
-
-2001-03-13 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-folder.c (camel_folder_copy_message_to): Don't allow the
- user to copy a message to or from the vtrash folder. Set an
- exception if they try.
- (camel_folder_move_message_to): This one is a bit more
- complicated: 1) If the user tried to move a message from the
- vtrash into the original folder, just undelete the message. 2) If
- the user tries to move the message to the vtrash folder, then just
- mark the message as deleted. 3) If the user tries to move the
- message from the vTrash to a folder other than the original, use
- the original folder as the source. As another optimization, I've
- made it so that if the user tries to move a message to the same
- folder, just no-op.
- (move_message_to): Unset the deleted flag before moving (assuming
- it's there).
- (copy_message_to): Same.
-
- * camel-vee-folder.c (camel_vee_folder_get_message_folder): New
- convenience function to get the folder from which the message uid
- is derived from.
-
-2001-03-13 Dan Winship <danw@ximian.com>
-
- * providers/imap/camel-imap-store.c (imap_connect): When trying
- again after a failed password attempt, check if the connection got
- dropped (which Courier will do) and deal accordingly.
-
- * providers/sendmail/camel-sendmail-transport.c (sendmail_send_to,
- sendmail_send): More fixing for exim: It can't deal with "-tif",
- you need to say "-t -i -f".
-
-2001-03-12 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-store.c (init_trash): Rename the folder to "Trash" and
- i18nify it.
-
-2001-03-09 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-tcp-stream-ssl.h: Comment out everything unless HAVE_NSS
- is defined.
-
- * camel-tcp-stream-ssl.c (stream_read): Don't use errno, use
- nspr's error code stuff.
- (stream_write): Same.
-
-2001-03-09 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-session.c (camel_session_query_authenticator): Created a
- new mode (CAMEL_AUTHENTICATOR_ACCEPT) which is a Yes/No prompt to
- the user. This will be needed by the SSL/TLS code to come. Also
- changed the return value to a gpointer rather than a char* to
- allow the returning of TRUE/FALSE values.
-
- * camel.c: Wrap stuff with HAVE_NSS
-
-2001-03-09 Dan Winship <danw@ximian.com>
-
- * providers/sendmail/camel-sendmail-transport.c (sendmail_send,
- sendmail_send_to): Remove the "-U" for now, because it breaks
- exim's "sendmail" wrapper. (And it doesn't actually do all that
- much to sendmail's behavior, and it was working fine before
- anyway.)
-
- * camel-mime-utils.c (header_fold): Fix a bug that could make this
- walk off the end of a string. (The bug has been there since
- December... maybe this will fix some unreproduceable crashes?)
-
-2001-03-08 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-store.c (camel_store_get_folder): Changes so that the
- folder gets added to the vtrash reguardless of whether or not the
- store is holding it's own folder lookup hash.
- (init_trash): Oops, lets try locking the cache before we go and
- add all the cached folders to the vtrash.
-
-2001-03-08 Jeffrey Stedfast <fejj@ximian.com>
- These fixes make it so that the CamelStore does not actually hold
- a ref on it's vTrash folder. The vTrash folder is now created ONLY
- when it is requested. This solves the problem of not being able to
- unref a Store and have it disconnect/finalize like we expect it to.
-
- * camel-store.c (init_trash): When we create the vtrash, add all
- previously opened folders to it and hook on to the finalize event
- so that we can then set the store->vtrash to NULL.
- (get_trash): If a vtrash folder for the store doesn't exist,
- init_trash() and then try.
- (construct): No longer need this.
- (camel_store_class_init): Don't override the construct method.
- (camel_store_finalize): We no longer hold a ref on the vtrash so
- don't unref it.
-
-2001-03-07 Jeffrey Stedfast <fejj@ximian.com>
-
- * providers/pop3/camel-pop3-store.c (init_trash): Implement.
- (get_trash): Implement.
- (camel_pop3_store_class_init): Override the default init_trash and
- get_trash virtual functions. Hopefully this should fix the problem
- of pop3 sotre's not disconnecting after the send&recv code
- finishes downloading mail.
-
- Wonder if I should override the default implementation for the
- mbox, mh, and maildir too?
-
-2001-03-07 Dan Winship <danw@ximian.com>
-
- * camel-remote-store.c (camel_remote_store_connected): Return the
- return value of camel_service_connect rather than returning
- !camel_exception_is_set(), since that will be wrong if ex==NULL...
- Fixes a crash in the IMAP keepalive code, but this same problem
- probably exists in other places too...
- (remote_recv_line): Fix another problem...
-
- * providers/local/camel-mbox-provider.c:
- * providers/vee/.cvsignore:
- * providers/vee/libcamelvee.urls: Remove some unused stuff
-
-2001-03-06 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-sasl-digest-md5.c (compute_response): Redone so as to save
- on memory allocations and speed.
-
-2001-03-05 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-sasl-plain.c (plain_challenge): Don't return NULL if the
- token is non-NULL. This is why:
-
- sending : AUTH PLAIN
- received: 334 ok. go on. <-- this is why
- sending : ZGZPaQpAZ214Lm5ldBBnb29jYXI=
- received: 235 {mp005-rz3} go ahead
-
- * camel-sasl.c (camel_sasl_authtype): Add the PLAIN type here.
- (camel_sasl_authtype_list): And here too.
-
- * camel-sasl-plain.c: Initialize the camel_sasl_plain_authtype.
-
- * camel-sasl-plain.h: extern the camel_sasl_plain_authtype.
-
-2001-03-05 Jeffrey Stedfast <fejj@ximian.com>
-
- * providers/imap/camel-imap-store.c (imap_connect): i18n'd some
- strings in here.
-
- * providers/smtp/camel-smtp-transport.c (smtp_connect): Keep
- trying to authenticate until either we succeed or until the user
- cancels.
-
-2001-03-04 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-mime-utils.c: Wrote a new version of header_fold() that
- takes a 'force' option and uses another new function called
- header_fold_next_space() in place of strchr(inptr, ' ') to get the
- next whitespace char. The idea of header_fold_next_space() is to
- not treat spaces between a set of quotes as a space - this way it
- will be possible to fold (for example) the Content-Type MIME
- header without worrying about breaking up a boundary string.
- Note: This code is #if 0'd out until Zucchi approves of the patch.
- Another Note: We will probably still want to use the "don't fold
- this header" hash lookup for headers like the Message-Id and
- possibly a few others.
-
-2001-03-04 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-internet-address.c
- (camel_internet_address_encode_address): Make sure there is a
- space between the name and the address tokens.
-
- * camel-mime-utils.c (rfc2047_decode_word): encoded string
- segments need to be at least 8 chars (7 doesn't leave room for an
- ecoding value. To be more realistic, even 8 chars isn't enough as
- this assumes there is no charset nor any encoded text. If the
- encoding value is not 'Q' or 'B', then return NULL. This fixes bug
- #1689.
-
-2001-03-03 Not Zed <NotZed@Ximian.com>
-
- * camel-vee-folder.c (vee_folder_remove_folder): New function to
- remove a folder from a vfolder.
- (camel_vee_folder_remove_folder): New public function to remove a
- folder from a vfolder.
-
-2001-03-02 Jeffrey Stedfast <fejj@ximian.com>
-
- * providers/smtp/camel-smtp-provider.c: Doh! Set the
- CAMEL_URL_ALLOW_AUTH flag.
-
- * providers/smtp/camel-smtp-transport.c (get_smtp_error_string):
- Updated with the extended AUTH return codes.
-
-2001-03-02 Jeffrey Stedfast <fejj@ximian.com>
-
- * providers/imap/camel-imap-store.c (try_auth): Don't forget to
- unref the SASL object.
-
- * providers/smtp/camel-smtp-transport.c (query_auth_types):
- Implemented.
- (smtp_auth): Implemented.
- (smtp_helo): Don't bother parsing the authtypes if we already have
- them.
- (smtp_connect): call smtp_auth() here if we found any authtypes.
- (smtp_disconnect): Updated as I now use a hash table for the
- supported authtypes rather than a linked list.
- (esmtp_get_authtypes): modify to use a hash table instead of a
- linked list and also use isspace() rather than == ' '.
-
-2001-03-02 Dan Winship <danw@ximian.com>
-
- * providers/sendmail/camel-sendmail-transport.c (sendmail_send_to,
- sendmail_send): Use "-f" to set the envelope from address so
- bounces go to the right place. Also, pass "-U" since the man page
- says we're supposed to...
-
-2001-03-01 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-sasl.c: #include "camel-sasl-digest-md5.h"
- (camel_sasl_authtype_list): add DIGEST-MD5 stuff here.
- (camel_sasl_authtype): And here too.
- (camel_sasl_new): And here...
-
- * camel-sasl-digest-md5.[c,h]: new SASL class for DIGEST-MD5 (has
- been tested and proven to work).
-
-2001-03-01 Dan Winship <danw@ximian.com>
-
- * camel-sasl.c (camel_sasl_challenge): Take a GByteArray as input
- as well. Comment that you can pass %NULL for @token to get the
- initial auth data for mechanisms that are client-initiated.
- (camel_sasl_challenge_base64): Convenience function for protocols
- that use base64-encoded SASL.
- (camel_sasl_authenticated): Implement this... (it was prototyped
- already)
- (camel_sasl_new): Function to take a service name, a mechanism
- name, and a CamelService, and return a CamelSasl for it.
- (camel_sasl_authtype, camel_sasl_authtype_list): Functions to
- return CamelServiceAuthType information about SASL mechanisms, to
- allow providers to deal with them generically.
-
- * camel-sasl-anonymous.c, camel-sasl-plain.c: Update/simplify for
- CamelSasl changes. Both of these are single-round
- (client-initiated) mechanisms, so they don't need to keep state.
- (camel_sasl_plain_new): Removed; use camel_sasl_new instead.
- (Can't get rid of camel_sasl_anonymous_new though...)
-
- * camel-sasl-cram-md5.c: Update/simplify for CamelSasl changes.
- (camel_sasl_cram_md5_new): Removed; use camel_sasl_new instead.
- (cram_md5_challenge): Use md5_get_digest where possible, and
- various other minor simplifications. CRAM-MD5 only has a single
- round, so there's no need to keep track of state. This code is now
- tested (against Cyrus IMAPd) and known to work.
-
- * camel-sasl-kerberos4.h: Update/simplify for CamelSasl changes.
- Make only a single #ifdef HAVE_KRB4. Remove stuff from priv that
- isn't needed between rounds.
- (camel_sasl_kerberos4_new): Removed; use camel_sasl_new instead
- (krb4_challenge): Fix up the logic I broke in my previous "at
- least make it compile" fixes, update to match other changes, and
- remove IMAP-isms that shouldn't be in the generic code. This still
- isn't tested, because we're stuck behind a NAT right now...
-
- * providers/imap/camel-imap-store.c: Add an "authtypes" hash table
- to CamelImapStore recording the supported authtypes.
- (connect_to_server): Record supported authtypes in the authtypes
- hash rather than the capabilities bitmask, since now the IMAP code
- is no longer responsible for keeping track of which authtypes we
- support.
- (query_auth_types): Use camel_sasl_authtype_list to get the
- SASL-supported authtypes.
- (try_auth): New function to try a SASL auth mechanism. Sort of
- formerly imap_try_kerberos_v4_auth.
- (imap_connect): Get rid of the krb4-specific bits and genericize
- them for any SASL authtype.
-
- * providers/imap/Makefile.am: Remove camel-imap-auth.[ch] (moved
- into camel-imap-store.c since it's now constant size) and the
- KRB4_CFLAGS and KRB4_LDFLAGS references.
-
-2001-03-01 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-sasl-anonymous.c (anon_challenge): Don't base64 encode the
- data, leave that up to the provider to do if it needs to. Also
- save on some memory allocations and stuff.
-
- * camel-sasl-cram-md5.c (cram_md5_challenge): Same here. Also get
- rid of the need for the temp buf as we can just write it to the
- GByteArray.
-
-2001-03-02 Not Zed <NotZed@Ximian.com>
-
- * camel-mime-utils.c (rfc2047_encode_word, rfc2047_decode_word):
- Reconstify variables to match iconv.
-
- * camel-search-private.c (camel_ustrstrcase): Change some
- assertions back into valid returns.
-
-2001-03-01 Dan Winship <danw@ximian.com>
-
- * Makefile.am (libcamel_la_LIBADD, INCLUDES): camel depends on
- krb4 now (where available), for camel-sasl-kerberos4.c
-
- * camel-sasl-kerberos4.[ch]: Make this at least compile. Dunno if
- it works yet.
-
-2001-03-01 Peter Williams <peterw@ximian.com>
-
- * camel-url.c (camel_url_new): Assert url_string != NULL.
-
-2001-02-28 Jeffrey Stedfast <fejj@ximian.com>
-
- * Makefile.am: Added camel-sasl-anonymous.[c,h] to the build.
-
- * camel-sasl-anonymous.[c,h]: new SASL class for ANONYMOUS
-
- * camel-sasl-plain.c (plain_challenge): Oops, have a state for
- setting sasl->authenticated = TRUE;
-
- * camel-sasl-cram-md5.c (cram_md5_challenge): Same here.
-
-2001-02-28 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-mime-utils.c (header_decode_date): A fix for broken
- mailers that send 2-digit years (ie "Wed, 28 Feb 01
- 04:59:41"). Fixes bug #1633.
-
- * camel-filter-driver.c (camel_filter_driver_filter_folder): Check
- to make sure message isn't NULL.
-
-2001-02-28 Dan Winship <danw@ximian.com>
-
- * camel-remote-store.c (remote_recv_line): If we get back 0 bytes
- from camel_stream_buffer_gets, that means the socket got
- disconnected, so set an exception. (Noticed because of a message
- that crashes our IMAP server when you try to look at it. :)
-
-2001-02-28 Jeffrey Stedfast <fejj@ximian.com>
-
- * Makefile.am: Added camel-sasl*.[c,h] to the build.
-
- * camel-sasl.[c,h]: new "abstract" SASL class
-
- * camel-sasl-kerberos4.[c,h]: new SASL class for KERBEROS_V4
-
- * camel-sasl-cram-md5.[c,h]: new SASL class for CRAM-MD5
-
- * camel-sasl-plain.[c,h]: new SASL class for PLAIN
-
- * providers/imap/camel-imap-auth.c: Removed the base64 functions.
-
- * camel-mime-utils.c (base64_encode_simple): Moved here from
- camel-imap-auth.c
- (base64_decode_simple): Same.
-
-2001-02-26 Dan Winship <danw@ximian.com>
-
- * providers/imap/camel-imap-folder.c (imap_sync): Group messages
- into sets with the same flags and use the IMAP message set
- notation rather than doing a separate STORE FLAGS for each one.
- This cuts the network traffic down to just a handful of commands
- per sync rather than one per changed message. Removed the progress
- notification stuff since it's no longer meaningful and should
- hopefully be unnecessary.
- (imap_copy_message_to): move the former sync_message function
- into here, since it's no longer shared with imap_sync.
-
-2001-02-26 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-mime-utils.c: Made thread-safe and moved to above the test
- code.
-
- * camel-mime-message.c (camel_mime_message_init): Set the
- message_id to NULL.
- (camel_mime_message_finalize): Free the message_id.
- (camel_mime_message_set_message_id): New function to set the
- Message-Id.
- (camel_mime_message_get_message_id): New function to get the
- Message-Id.
- (process_header): Decode the message-id.
-
-2001-02-24 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-store.c (construct): init the vTrash folder here instead
- of in store_init.
- (camel_store_class_init): init service_class->construct.
- (camel_store_finalize): We only need to unref the vtrash folder.
- (init_trash): don't create a vstore since we don't need it.
-
-2001-02-23 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-store.c (camel_store_class_init): init get_trash and
- init_trash.
- (camel_store_init): call the virtual init_trash function.
- (camel_store_finalize): unref the vtrash folder/store if present.
- (camel_store_get_folder): Add the new folder to the vtrash
- vfolder.
- (init_trash): default implementation of init_trash.
- (get_trash): default implementation of get_trash.
-
- * camel-vee-store.c (vee_init_trash): No-op.
- (vee_get_trash): return NULL
-
-2001-02-23 Not Zed <NotZed@Ximian.com>
-
- * camel-folder-summary.c (camel_message_info_new_from_header):
- Doh, cut and paste problem, use mlist not cc.
-
- * camel-folder.c (move_message_to):
- (copy_message_to): If the source folder doesn't support a
- summary, dont try and get the message info from it.
-
- * camel-filter-search.c (check_header): Implement a pseudo-header
- "x-camel-mlist" which just looks up in the message info for a
- match.
-
- * camel-folder-search.c (check_header): Add pseudo-header
- "x-camel-mlist" which can be used to match on mailing list.
-
- * providers/imap/camel-imap-folder.c (imap_sync): Add some
- internal progress reporting.
- (imap_rescan): Do some progress reporting.
-
- * camel-mime-part.c (init_header_name_table): Add the message-id
- to the formatted table, so we dont try and wrap it, and break it.
-
-2001-02-22 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-folder.h: Remove the 'FIXME: remove because this isn't
- required...' comment for copy_message_to since we now need and
- cherish its existance in the filter-driver code ;-)
-
- * camel-filter-driver.c (camel_filter_driver_filter_message): Now
- takes a UID and CamelFolder arguments (which can be NULL) to allow
- for possible optimizations when copying messages between folders
- on the same store.
- (camel_filter_driver_filter_mbox): Updated (passes NULL for both
- since this case can't be optimized anyway).
- (camel_filter_driver_filter_folder): Updated to pass in the uid
- and folder of the message.
-
-2001-02-22 Dan Winship <danw@ximian.com>
-
- * providers/imap/camel-imap-summary.h (CAMEL_IMAP_SERVER_FLAGS):
- #define this as the set of all IMAP system flags
-
- * providers/imap/camel-imap-folder.c (sync_message): after syncing
- flags, set server_flags to (flags & CAMEL_IMAP_SERVER_FLAGS)
- rather than just "flags", since any other flags won't have been
- synced. Prevents the CAMEL_MESSAGE_ATTACHMENTS flag from getting
- lost.
-
-2001-02-22 Not Zed <NotZed@Ximian.com>
-
- * providers/vee/*: Removed all files.
-
- * camel-private.h: Move camel-vee-private.h stuff into here.
-
- * camel-session.c: Move the vee_provider here, and initialise it
- always as part of a session. The vfolder provider is always
- available.
-
- * providers/Makefile.am: Remove "vee" from the build list, now
- built as part of the main library.
-
- * Makefile.am (libcamelinclude_HEADERS):
- (libcamel_la_SOURCES): Added camel-vee-store.[ch],
- camel-vee-folder.[ch].
-
- * providers/vee/camel-vee-folder.c (vee_folder_build): Removed,
- not used.
- (camel_vee_folder_new): Removed call to build_folder.
- (vee_get_message): Dont try and free the mi if we didn't get it.
-
- * camel-folder.c (camel_folder_change_info_new): Added a hash
- table of what we have in the lists, plus moved private things into
- private pointer.
- (camel_folder_change_info_add_source): Fixed up private accesses.
- (camel_folder_change_info_add_uid): Changed to use a hashtable to
- see if we already have the uid, etc.
- (camel_folder_change_info_remove_uid): Similar.
- (change_info_remove): Likewise.
- (camel_folder_change_info_clear): Fixes for privatisations.
- (camel_folder_change_info_free): "
-
-2001-02-21 Dan Winship <danw@ximian.com>
-
- * providers/imap/camel-imap-folder.c (fetch_medium): Fixes for
- IMAP4-pre-rev1 from Torsten Schulz.
-
-2001-02-20 Not Zed <NotZed@Ximian.com>
-
- * camel-mime-utils.c (mail_list_magic): Take the ^Header: part out
- of the expression, since we look that up ourselves.
- (header_raw_check_mailing_list): When getting the match, get match
- 1, not match 0, we dont want the full string match.
-
- * camel-folder-summary.c (CAMEL_FOLDER_SUMMARY_VERSION): Bumped
- for summary change.
- (message_info_new): Extract the mlist info from the headers.
- (message_info_load): Load mlist from summary.
- (message_info_save): Save mlist to summary.
- (message_info_free): Save the mlist entry.
- (camel_message_info_new_from_header): Extract mailing list header.
- (camel_message_info_dup_to): Copy the mlist entry.
- (camel_message_info_free): Free mlist.
- (message_info_dump): Dump the mlist.
-
- * camel-folder-summary.h: Add an mlist (mailing list) string to
- the summary.
-
-2001-02-19 Not Zed <NotZed@Ximian.com>
-
- * providers/vee/camel-vee-folder.c (camel_vee_folder_new): Added
- flags argument.
- (message_changed): Add support for the auto-update flag, in which
- case we auto-match the content as it changes.
- (camel_vee_folder_init): Remoive "DYNAMIC" optionality
- (camel_vee_folder_finalise): "
- (vee_expunge): As we expunge folders, re-sync their content by
- rerunning the query.
-
- * providers/vee/camel-vee-store.c (vee_get_folder): Pass flags to
- folder new.
-
-2001-02-18 Not Zed <NotZed@Ximian.com>
-
- * providers/vee/Makefile.am (noinst_HEADERS): Added
- camel-vee-private.h.
-
- * providers/vee/camel-vee-private.h: New file to add locking stuff
- for vee folders.
-
- * providers/vee/camel-vee-folder.c (camel_vee_folder_new): Add
- locking around unmatched setup.
- (camel_vee_folder_init): Setup lock.
- (camel_vee_folder_finalise): Free locks.
- (folder_changed): Add locking.
- (unmatched_finalise): "
- (message_changed): "
- (vee_folder_build): "
-
-2001-02-17 Not Zed <NotZed@Ximian.com>
-
- * providers/vee/camel-vee-folder.c (vee_folder_add): Check uid
- doesn't exist before adding it.
-
-2001-02-16 Not Zed <NotZed@Ximian.com>
-
- * providers/vee/camel-vee-folder.c (camel_vee_folder_new): Create
- a new virtual virtual folder UNMATCHED, to store all messages that
- dont match other vfolders.
- (unmatched_folder_changed): When a vfolder issues a changed event,
- use its info to update the unmatched folder info.
- (unmatched_finalise): When a vfolder is finalised, remove any uids
- it has as if we had a removed event for it.
-
-2001-02-16 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-filter-driver.c (camel_filter_driver_finalise): Thaw the
- defaultfolder.
- (camel_filter_driver_set_default_folder): Thaw the defaultfolder
- we're about to replace, and freeze the new defaultfolder.
-
-2001-02-15 Jeffrey Stedfast <fejj@ximian.com>
-
- * providers/vee/camel-vee-folder.c (camel_vee_folder_new): Emit
- the folder_created signal here.
-
- * providers/local/camel-local-folder.c
- (camel_local_folder_construct): Emit the folder_created signal.
-
- * providers/local/camel-local-store.c (delete_folder): On error,
- free the 'name' string so we don't leak. Also emit the
- folder_deleted signal.
-
- * providers/imap/camel-imap-store.c (subscribe_folder): Emit the
- folder_created signal.
- (unsubscribe_folder): Emit the folder_deleted signal.
-
- * camel-store.c (camel_store_class_init): Added folder_created and
- folder_deleted signal defs.
-
-2001-02-15 Dan Winship <danw@ximian.com>
-
- * camel-folder-thread.c (container_parent_child): Deal with
- out-of-order References headers so they don't cause messages to
- disappear in threaded view.
-
- * providers/imap/camel-imap-folder.c (fetch_medium): IMAP4
- (pre-rev1) doesn't allow BODY.PEEK[], so use RFC822.PEEK instead
- in that case.
-
-2001-02-14 Christopher James Lahey <clahey@ximian.com>
-
- * camel-mime-filter-charset.c (complete, filter),
- camel-mime-utils.c (rfc2047_decode_word, rfc2047_encode_word):
- Changed this code to match the glibc iconv signature.
-
-2001-02-14 Dan Winship <danw@ximian.com>
-
- * camel-store.c (camel_store_create_folder): New method to create
- a folder when you don't know its full name.
-
- * providers/imap/camel-imap-store.c (create_folder): Implement.
- (create_folder): Oops, and fix bug involving namespaces
-
-2001-02-12 Not Zed <NotZed@Ximian.com>
-
- * camel-mime-part.c (init_header_name_table): Add address headers
- to list that we dont fold when writing. The are properly
- formatted as we build them.
- (write_to_stream): DOH, lookup the header name in the formatted
- hash table, not the value, that would never have worked.
-
- * camel-internet-address.c
- (camel_internet_address_encode_address): Changed to take a
- parameter saying how much we've printed so far. We now fold the
- header as we format it. We dont fold addresses, even if they are
- too long, we simply put them on another line by themselves: this
- should make the result more parsable by mailers that can't handle
- split up addresses (which are legal).
- (internet_encode): Fix for changes to above.
-
-2001-02-12 Jeffrey Stedfast <fejj@ximian.com>
-
- * providers/local/camel-local-provider.c: mbox, mh, and maildir
- camel-url's need absolute paths.
-
- * camel-provider.h (CAMEL_URL_PATH_IS_ABSOLUTE): New flaggy flag.
-
-2001-02-08 Dan Winship <danw@ximian.com>
-
- * camel-store.c: Rewrite a bunch. Replace the existing folder
- cache stuff with much simpler code that still handles all the
- existing cases. Now the folder hash table is always created by the
- base class, using hash and compare functions provided by the class
- implementation. (If they are set to NULL, CamelStore won't cache
- folders.) lookup_folder, cache_folder, and uncache_folder are no
- longer class methods, and get_name is gone completely.
-
- (camel_store_get_inbox): Renamed from
- camel_store_get_default_folder, since that wasn't being used, and
- this is what we actually need.
- (camel_store_get_root_folder): Removed, since it's not needed for
- anything given get_folder_info.
-
- * camel-remote-store.c:
- * providers/local/camel-local-store.c:
- * providers/local/camel-mbox-store.c:
- * providers/local/camel-mh-store.c:
- * providers/local/camel-maildir-store.c:
- * providers/nntp/camel-nntp-store.c:
- * providers/pop3/camel-pop3-store.c:
- * providers/vee/camel-vee-store.c: Minor updates for CamelStore
- changes
-
- * providers/imap/camel-imap-store.c (camel_imap_store_class_init):
- Update for CamelStore changes.
- (hash_folder_name, compare_folder_name): treat INBOX
- case-insensitively, otherwise use g_str_hash and g_str_equal.
-
- * camel-service.c (camel_service_construct): Remove
- camel_service_new and create camel_service_construct (as a class
- method) in its place.
-
- * camel-session.c (camel_session_get_service): Use
- camel_object_new and camel_service_construct to replace
- camel_service_new.
-
- * providers/local/camel-local-store.c (construct): Append a '/' to
- the URL path if it doesn't end with one
-
-2001-01-31 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-tcp-stream-ssl.c: Oops, include the camel-tcp-stream-ssl
- header instead of the raw one.
-
-2001-02-07 Not Zed <NotZed@Ximian.com>
-
- * camel-operation.c (camel_operation_start): Changed to push the
- operation into a status stack.
- (camel_operation_progress): Changed to only accept % complete.
- (camel_operation_reset): Free status stack as well.
-
- * providers/pop3/camel-pop3-folder.c (pop3_get_message): Get the
- octect count from the return line, and pass it to
- get_additional_data().
- (pop3_refresh_info): Added status stuff.
-
- * providers/pop3/camel-pop3-store.c
- (camel_pop3_command_get_additional_data): Added a total bytes
- expected argument for progress reporting & fixed callers.
- (camel_pop3_command_get_additional_data): Added progress
- reporting.
-
- * providers/local/camel-mbox-summary.c (mbox_summary_sync_full):
- (mbox_summary_sync_quick):
- (summary_rebuild): Added progress reporting stuff.
-
-2001-02-07 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-search-private.c (CAMEL_SEARCH_COMPARE): Macro for making
- comparisons easy.
- (camel_ustrcasecmp): Use CAMEL_SEARCH_COMPARE and check for
- end-of-string before the utf-8 error check.
- (camel_ustrncasecmp): Same.
- (camel_search_header_match): Strip leading spaces before doing
- anything else. Also use vlen and mlen so as to not need to do 500
- strlen()'s.
- (camel_ustrcasecmp): Don't get_utf8() for the 2 strings in the
- comparison part of the loop because of short-circuit expression
- evaluation. (blame JPR if this is the wrong term!)
- (camel_ustrncasecmp): Same.
-
-2001-02-06 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-search-private.c (utf8_get): Rewrote using unicode_get_utf8().
- (camel_ustrcasecmp): Use unicode_char_t
- (camel_ustrncasecmp): Same.
-
-2001-02-06 Christopher James Lahey <clahey@ximian.com>
-
- * camel-mime-filter-charset.c (complete, filter),
- camel-mime-utils.c (rfc2047_decode_word, rfc2047_encode_word):
- Made these pass char ** as the second parameter to iconv.
-
-2001-02-06 Not Zed <NotZed@Ximian.com>
-
- * camel-session.c: Removed all the camel_cancel stuff.
-
- * camel-stream-fs.c (stream_read): Change to use camel_operation.
- (stream_write): "
-
- * camel-remote-store.c (socket_connect): Change to use
- camel_operation rather than camel_cancel stuff.
- Removed gal include, WTF is that doing there anyway?
-
- * Makefile.am (libcamel_la_SOURCES):
- (libcamelinclude_HEADERS): Added camel-operation.[ch], stuff to
- handle notification and cancellation.
-
- * camel-search-private.c: Removed unwanted header. It was never
- put in for a reason. Stop fixing irrelevant warnings.
-
- (camel_ustrstrcase): Our own strstrcase impl for utf8 strings.
- (camel_ustrcasecmp): Ditto for strcasecmp.
- (camel_ustrncasecmp): And strncasecmp.
- (utf8_get): Simpler interface to utf8 string processing.
- (camel_search_header_match): Use the new things.
-
-2001-02-05 Not Zed <NotZed@Ximian.com>
-
- * camel-folder.c (get_summary): Removed some old variables/a small
- memleak.
- (free_summary): Removed old variables.
-
- * camel-mime-utils.c (header_raw_check_mailing_list): New utility
- function to get the mailing list (if any) that a set of headers
- came from.
-
-2001-02-05 Christopher James Lahey <clahey@helixcode.com>
-
- * camel-stream-fs.c: Added a missing #include.
-
- * camel-search-private.c: Added a missing #include.
-
-2001-02-05 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-remote-store.c (remote_query_auth_types): Oops. Change
- this too.
-
- * providers/smtp/camel-smtp-transport.c (query_auth_types): Updated.
-
- * providers/nntp/camel-nntp-store.c (nntp_store_query_auth_types):
- Updated.
-
- * providers/pop3/camel-pop3-store.c (query_auth_types): Updated.
-
- * providers/imap/camel-imap-store.c (query_auth_types): Updated.
-
- * camel-service.c (camel_service_query_auth_types): Now takes a
- boolean value to specify whether or not to connect when
- constructing a supported authtype list.
-
-2001-02-05 Not Zed <NotZed@Ximian.com>
-
- * camel-stream-filter.c (do_write): Revert jeff's earlier change,
- the change below is the more-correct fix. All his was doing was
- ignoring the return code & looping actually :)
-
- * camel-stream-fs.c (stream_write): Since we are non-blocking on
- the outgoing fd, keep looping if writing out large blocks, so we
- can keep checking for cancel, etc.
-
-2001-02-02 Not Zed <NotZed@Ximian.com>
-
- * camel-folder-thread.c (camel_folder_thread_messages_new): When
- we drop a fake node, dont skip checking the next in the list.
- (camel_folder_thread_messages_new): Add an assertion check just to
- make sure we dont get any pseudo nodes, and spit a warning if we
- do.
-
-2001-02-04 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-stream-filter.c (do_write): Make do_write loop until the
- entire buffer is written.
-
-2001-02-02 Not Zed <NotZed@Ximian.com>
-
- * camel-stream-fs.c: Add missing header for cancel check stuff.
-
- * camel-session.c (camel_cancel_cancel): Fix a wrong cast.
-
- * camel-mime-part.c (init_header_name_table): Setup a new table
- header_formatted_table, that lists headers that we dont want to
- fold (they've already been folded).
- (write_to_stream): Check for already formatted headers, and dont
- try and fold them. This is a fix for bug #1097.
-
-2001-02-01 Not Zed <NotZed@Ximian.com>
-
- * camel-mime-utils.c (header_fold): If we are folding, drop the
- space at the end of the line.
-
-2001-01-30 Not Zed <NotZed@Ximian.com>
-
- * camel-remote-store.c (timeout_cb): Remvoe the stream locking
- here. I think this was leading to a deadlock when a keepalive is
- being sent, in imap.
-
-2001-01-29 Not Zed <NotZed@Ximian.com>
-
- * providers/imap/camel-imap-command.c
- (imap_command_strdup_vprintf): Include the terminating NUL in the
- calculated string length. This hit memcheck.
-
-2001-01-25 Not Zed <NotZed@Ximian.com>
-
- * tests/folder/test3.c: Changed the subject search to handle case
- sensitive when it is mixed case.
-
- * Makefile.am (libcamel_la_SOURCES): Added camel-ssearch-private.c
- (noinst_HEADERS): Added camel-search-private.h
-
- * camel-folder-search.c (check_header): New function to do the
- work of the various header checks.
- (search_header_matches):
- (search_header_starts_with):
- (search_header_ends_with):
- (search_header_contains): Use check_header to do the work.
- (build_match_regex): Removed.
-
- * camel-search-private.c (header_soundex): New
- function to match words to phrases using soundex algorithm.
-
- * camel-filter-search.c (soundexcmp): Removed.
- (check_match): Moved to search-private.h
-
-2001-01-24 Not Zed <NotZed@Ximian.com>
-
- * camel-search-private.c (camel_search_build_match_regex): Added
- extra flags, so the same function can be used for
- start/end/whole/partial matches.
- (camel_search_header_match): Convenience function to check a
- single header against all sorts of different matches.
-
- * providers/imap/camel-imap-search.c (imap_body_contains): Fix for
- e_sexp api changes.
-
- * camel-folder-search.c: Fix for e_sexp api changes.
- (search_header_contains): Free args/quit on unknown header.
- (search_header_matches): "
- (search_header_starts_with): "
- (search_header_ends_with): "
- (match_message): Add an exception argument.
- (search_body_contains): Free args/quit on fatal error.
- (message_body_contains): Removed (moved to
- camel-search-private.c), fixed callers.
-
- * camel-filter-search.c: Fix for e_sexp api changes.
- (build_match_regex, message_body_contains): Moved into
- camel-filter-private.c Fixed callers.
- (check_header): moved guts to camel-search-private, and
- changed to use regex's for everything. Just calls that with the
- right args.
- (check_header): GEts the header, decodes it, and checks for
- failure, and whatnot.
- (check_match): Removed.
- (header_soundex): Changed significantly. Now it soundexes each
- word in the header separately, and compares it to the first
- argument.
-
- * tests/folder/test9.c (main): Fix for api changes.
- (main): Added tests to see that invalid match and action
- rules are properly detected.
-
- * camel-filter-driver.c (camel_filter_driver_filter_mbox): Remove
- the 'finished message' bit.
- (camel_filter_driver_filter_message): Remove an accidentally
- checked in debug.
- (camel_filter_driver_filter_message): Fix for e-sexp api changes.
-
-2001-01-23 Dan Winship <danw@ximian.com>
-
- * providers/imap/camel-imap-wrapper.c: Add a lock around the
- delayed loading, so two threads won't try to do it at the same
- time.
-
-2001-01-22 Dan Winship <danw@ximian.com>
-
- * providers/vee/camel-vee-folder.c (camel_vee_folder_new): Set the
- CamelFolder::name to just the base part of the vfolder name (the
- non-query part)
-
-2001-01-23 Not Zed <NotZed@Ximian.com>
-
- * camel-filter-search.c (camel_filter_search_match): Perform error
- checking on parsing/execution.
-
- * camel-folder-search.c (camel_folder_search_execute_expression):
- Perform error handling on search expression.
- (CamelFolderSearchPrivate): Add a camelexception for error
- returns.
- (camel_folder_search_execute_expression): Setup exception pointer.
- (search_match_all): Quit on error.
-
- * providers/imap/camel-imap-summary.c (message_info_load): Removed
- some debug 'warnings', as they should now be displayed at the
- toplevel loader, and just made the code match similar code
- elsewhere.
-
- * providers/local/camel-mbox-summary.c (message_info_load): Error
- handling.
- (message_info_save): more error handling.
-
- * camel-folder-summary.c (message_info_load): Add error handling
- and sanity checking.
- (camel_folder_summary_load): Add error checks.
- (perform_content_info_load): Error + sanity checks.
- (content_info_load): error + sanity checks.
-
- * camel-filter-driver.c (close_folder): avoid /0 by updating after
- we've done the sync.
- (close_folders): Setup the first progress report to start it off.
- (camel_filter_driver_filter_message): Fix a fixme, check errors in
- e_sexp parsing, etc.
-
-2001-01-22 Christopher James Lahey <clahey@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_selected):
- Initialize the value of the variable exists here.
-
-2001-01-22 Not Zed <NotZed@Ximian.com>
-
- * .cvsignore */*/.cvsignore: Added profiling temp
- files.
-
- * camel-folder-thread.c (camel_folder_thread_messages_new): When
- removing phantom nodes, check for the end node too.
-
- * camel-filter-driver.[ch]: Changed status vars to be
- CAMEL_FILTER_STATUS_ etc.
-
-2001-01-21 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-mime-utils.c (header_param_list_format_append): Make the
- output a little prettier. Okay, so I'm anal...
-
-2001-01-21 Not Zed <NotZed@Ximian.com>
-
- * camel-filter-driver.h: Added an exception to
- CamelFilterGetFolderFunc.
-
- * camel-filter-driver.c (camel_filter_driver_filter_message):
- Remove source parameter, as it is determined elsewhere now.
- (camel_filter_driver_filter_folder): Same here.
- (camel_filter_driver_filter_mbox): And here.
- (do_move): If we cannot open a folder, quit, rather than ignoring
- it.
- (do_copy): Here too.
- (open_folder): Pass an exception into get_folder callback.
- (camel_filter_driver_filter_folder): Report that we're syncing,
- when we are.
- (camel_filter_driver_filter_mbox): And here too.
- (close_folder): And here.
-
-2001-01-19 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-filter-driver.c (camel_filter_driver_filter_message): Set
- the deleted bit *before* copying to the default folder, this way
- if they are importing mail and have a rule to delete it, it
- doesn't get copied to the default folder un-deleted.
-
-2001-01-19 Dan Winship <danw@ximian.com>
-
- * providers/imap/camel-imap-store.c
- (get_subscribed_folders_by_hand): If LISTing a subscribed folder
- doesn't return a LIST response, just ignore that folder. Yay
- RFC2060.
- (subscribe_folder): add a missing UNLOCK
-
-2001-01-19 Kjartan Maraas <kmaraas@gnome.org>
-
- * providers/smtp/camel-smtp-provider.c: Mark strings for translation.
-
-2001-01-19 Not Zed <NotZed@Ximian.com>
-
- * camel-filter-driver.c (report_status): Add a percentage complete
- indicator to the status thing.
- (camel_filter_driver_filter_mbox): Add percentage complete to
- reporting.
- (camel_filter_driver_filter_folder): Same.
-
-2001-01-18 Dan Winship <danw@ximian.com>
-
- * camel-store.c (camel_folder_info_build): More tweaking... skip
- separator characters after the namespace character. (Gets rid of
- the shell folder registration warning some people have had with
- IMAP)
-
- * providers/imap/camel-imap-store.c (imap_connect): I'm sure there
- was some clever reason I was storing the flags of the folder in
- the hash table rather than just "1", but I don't remember what it
- was now. Anyway, since we only ever test NULL/non-NULL, store 1,
- since flags is sometimes 0.
-
- * providers/imap/camel-imap-folder.c (imap_update_summary): Oops.
- Somewhere in one of the reorgs, the code to add new messages to
- the CamelFolderChangeInfo structure got removed. Fix that.
-
-2001-01-17 Jeffrey Stedfast <fejj@ximian.com>
-
- * providers/imap/camel-imap-summary.c (message_info_load): Add
- some g_warnings() to help debug later if I ever get the segfaults
- I was getting earlier. Can't seem to reproduce them after my
- previous "fix".
-
- * camel-folder-summary.c (camel_folder_summary_load): Undid my
- change here, NotZed said it was wrong and that if it gets a NULL
- mi then it should abort and not continue.
-
-2001-01-17 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-folder-summary.c (camel_folder_summary_load): Make sure
- that the message-info is non-null before we go accessing inner
- parts of it and/or adding it to the summary array. I may not have
- handled the error correctly, but it does seem to work
- correctly. If NotZed could double-check this it'd be great.
-
- * providers/smtp/camel-smtp-transport.c (get_smtp_error_string):
- New smtp error-code to string mapping function.
- (smtp_connect): Use the new error->string function for reporting
- useful errors.
- (smtp_helo): Same. Also use a case-insensitive strstr for 8BITMIEM
- as it seems Exchange sends back lowercase for that one single SMTP
- extension. Everything else is uppercase. I'm seeing a lack of love
- for that extension by Microsoft dudes...
- (smtp_mail): Use get_smtp_error_string.
- (smtp_rcpt): Same.
- (smtp_data): Same.
- (smtp_quit): Same.
- (smtp_rset): Same.
-
-2001-01-16 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-folder-summary.c (camel_folder_summary_array): Add an int
- i so this code will compile. Should I be worried about how well
- this code will work? ;-)
-
-2001-01-17 Not Zed <NotZed@Ximian.com>
-
- * camel-folder.c (free_summary): Call
- camel_folder_summary_array_free() to do the work.
- (get_summary): Use camel_folder_summary_array() to get the array
- atomically. These fixes allow folder/test8 to work again, and fix
- a sort of race where the summary size can change while we were
- making a copy of it.
-
- * camel-folder-summary.c (camel_folder_summary_array): Get the
- summary array atomically, so it can't contain empty records.
- (camel_folder_summary_array_free): And free it.
-
- * tests/lib/camel-test.c (die): If we are verbose & in threads,
- then goto sleep so we can debug.
-
- * tests/folder/test8.c (worker): Add a missing pull() for
- comnparing content.
-
- * camel-filter-search.c: Fix the symbol table, so match-all is an
- immediate function, as it should be.
-
- * tests/folder/test9.c (main): New test, tests some filtering
- things.
-
- * tests/message/test3.c (main): Dont use a boundary string with
- spaces in it. Folding can corrupt it. Maybe the folding isn't
- working entirely right, but anyway.
-
- * camel-session.c: Debug out the debug.
-
- * camel-filter-driver.c (camel_filter_driver_filter_folder): Plug
- a messageinfo leak.
-
-2001-01-16 Dan Winship <danw@ximian.com>
-
- Delayed loading of IMAP message parts.
-
- * camel-types.h: typedef CamelMessageInfo and
- CamelMessageContentInfo here
-
- * camel-folder-summary.h: Add a "size" field to
- CamelMessageContentInfo.
-
- * camel-folder-summary.c (camel_folder_summary_content_info_new,
- camel_folder_summary_content_info_free): Renamed and made
- non-static for providers that construct their own content info.
- (content_info_load, content_info_save): load/save size
-
- * camel-data-wrapper.c (camel_data_wrapper_is_offline): New
- function to return if a data wrapper's contents are "offline". (So
- that, for example, we don't make thumbnails of images that haven't
- been loaded off the IMAP server yet.) Defaults to FALSE.
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_selected):
- Fix a bug in re-selecting a folder when messages have been
- expunged from it by another client in the meantime.
- (imap_get_message): Rewrite. If the message is larger than a
- certain size, just create a skeleton message containing
- CamelImapWrappers that will read parts as needed. This way, large
- attachments only need to be downloaded if the user looks at them,
- and multipart/alternative alternatives that aren't used will never
- be downloaded at all.
- (imap_update_summary): Rewrite this a bunch too to make the
- parsing more robust.
-
- * providers/imap/camel-imap-summary.c
- (CAMEL_IMAP_SUMMARY_VERSION): bump.
- (camel_imap_summary_new): Set build_content to TRUE.
- (content_info_load, content_info_save): Only save/load the content
- for messages that have it. (The content info gets created as a
- side effect of imap_get_message.)
-
- * providers/imap/camel-imap-utils.c (imap_parse_body): New routine
- (and helpers) to parse an IMAP 'body' FETCH response and fill in a
- CamelMessageContentInfo from it.
-
- * providers/imap/Makefile.am (libcamelimap_la_SOURCES,
- libcamelimap_la_HEADERS): add camel-imap-wrapper.
-
-2001-01-16 Dan Winship <danw@ximian.com>
-
- * camel-tcp-stream-raw.c (stream_getsockopt, stream_setsockopt):
- * camel-stream-fs.c (stream_read, stream_write):
- * camel-remote-store.c (socket_connect): fcntl(fd, F_GETFL)
- returns the flags as the return value, not via a passed in
- pointer. And F_SETFL looks for an int, not a long, and you have to
- pass it what it's expecting because it's a va_arg parameter. (Yes,
- the man page lies on Linux. But check the UNIX98 spec or the glibc
- source.) Also, fix another bug in socket_connect: if we manage to
- connect right away, unset O_NONBLOCK so it doesn't mess us up
- later.
-
- Fixes a bunch of problems with non-blocking I/O being done in the
- allegedly-blocking case and then returning EWOULDBLOCK.
-
-2001-01-16 Chris Toshok <toshok@ximian.com>
-
- * providers/Makefile.am (NNTP_DIR): set to nntp if ENABLE_NNTP
- (SUBDIRS): use $(NNTP_DIR)
-
-2001-01-16 Jeffrey Stedfast <fejj@ximian.com>
-
- * providers/smtp/camel-smtp-transport.c (smtp_rcpt): Don't check
- errno as it's not being set. Fixes bug #1150.
-
-2001-01-16 Jeffrey Stedfast <fejj@ximian.com>
-
- Ugh, this design is ugly like my butt.
-
- * camel-session.c (camel_session_query_cert_authenticator): New
- function which will be useful when we integrate SSL.
-
- * camel-tcp-stream-ssl.c (ssl_auth_cert): Callback to authenticate
- a certificate.
- (ssl_bad_cert): Callback that gets the reason the certificate is
- bad and then calls camel's cert-authenticator callback to notify
- the user and to allow the user to override the check.
- (stream_connect): Set the URL we expect to connect with and setup
- the auth_cert and bad_cert callbacks.
- (camel_tcp_stream_ssl_new): Now takes a CamelSession and a
- expected_host argument that it will use for certificate
- authentication.
- (camel_tcp_stream_ssl_finalize): Unref the session and free the
- expected_host.
-
-2001-01-16 Not Zed <NotZed@Ximian.com>
-
- * camel-filter-search.c (header_exists): Changed to support
- multiple args (or'd together).
- (header_contains): Cleaned up to match the search code. Why did
- fejj change it? I'll never know.
- (header_matches):
- (header_starts_with):
- (header_ends_with): Big cleanup of fejj's "i'm the cut & paste
- king" code. Also properly handle or'ing of additional args to
- match what the folder-search code should do.
- (check_match): New function which does the annoying matching
- stuff (for header matches).
- (check_header): Similarly, handles or'ing of the matches together.
- (header_contains):
- (header_matches):
- (header_starts_with):
- (header_ends_with): Call check_header to do the actual work.
- (header_soundex): And here too.
- (match_all): Yeah like match-all isn't passed expression results,
- its passed expression terms. Fix this so match-all works like it
- should, by executing the contained expression.
- (message_body_contains): Copied directly from
- camel-folder-search.c, a more robust/faster/simpler body search
- code.
- (mime_part_matches): Removed entirely.
- (handle_multipart): Removed entirely.
- (build_match_regex): Copied from camel-folder-search. Builds a
- set of simple strings into a regex pattern that matches any of
- them (for faster & simpler matching). Expanded to accept regex
- patterns itself, so it can merge them together.
- (body_contains): Use build match/match message to match using a
- built regex.
- (body_regex): Likewise, this time we tell it we're building a
- regex though.
- (header_full_regex): Use build_match_regex to take the drudgery
- out of it, and expand it to handle multiple regex's at once.
- (get_full_header): slightly cleaner (well i dunno, the sprintf
- stuff just got to me).
- (header_regex): Cleaned up to use build_match_Regex too, and to
- properly check types.
- (filter_message_search): Just allocate 'fms' on the stack.
-
- * camel-filter-driver.c (camel_filter_driver_finalise):
- (camel_filter_driver_init):
- (camel_filter_driver_class_init):
- (camel_filter_driver_get_type): Changed from gtk object to camel
- object.
- (camel_filter_driver_add_rule): New function to add a rule to be
- processed in sexp form.
- (camel_filter_driver_init): Init the rules list.
- (camel_filter_driver_finalise): Clear the rules/rules list.
- (camel_filter_driver_filter_message): Scan rules list directly
- rather than creating on the fly.
-
- * Makefile.am (libcamelinclude_HEADERS): Added camel-filter-driver.h
- (libcamel_la_SOURCES): Added camel-filter-driver.c, code taken
- from filter-driver, which can drive, uh, filters based on sexp's.
- (libcamelinclude_HEADERS):
- (libcamel_la_SOURCES): Added camel-filter-search.[ch]
-
- * camel-folder-summary.c (camel_folder_summary_decode_string):
- Chganged len back to be unsigned. And do a simple range check on
- the string value to try and detect corrupted summary files.
-
- * providers/imap/camel-imap-command.c (imap_read_untagged): Handle
- cancelled stream reads with an appropriate exception.
-
- * providers/imap/camel-imap-private.h: Fix the include-once
- macro. Doh, confliced with camel-private.h.
-
- * providers/imap/camel-imap-store.c (imap_store_refresh_folders):
- A copy of camel_remote_store_refresh_folders. We avoid locking
- each folder when we call it though. This should be removed when i
- can work out how to remove the folder lock from this function
- easily.
-
- * camel-stream-fs.c (stream_write): Fix n' argument of select.
- (stream_read): Likewise.
-
- * camel-remote-store.c (socket_connect): Bump the connect timeout
- upto 4 minutes.
- (socket_connect): Oops, fix the 'n' argument of select.
-
- * camel-session.c (camel_cancel_cancel): If we are given no
- cancellation node, then do it for all active ones.
-
-2001-01-15 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-stream-fs.c (stream_close): If the close() is successful,
- set the fd to -1.
-
- * camel-tcp-stream-raw.c: Removed the disconnect() method.
- (stream_close): If the close() is successful, set the sockfd to
- -1.
-
- * camel-tcp-stream-ssl.c: Removed the disconnect() method.
- (stream_close): If the close() is successful, set the sockfd to
- NULL.
-
- * camel-tcp-stream.c (camel_tcp_stream_disconnect): Removed,
- easier to just use the close() method as it did the same thing
- anyway.
-
-2001-01-15 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-tcp-stream-raw.c (stream_getsockopt): Updated to be able
- to get the CAMEL_SOCKOPT_NONBLOCKING socket opt.
- (stream_setsockopt): Updated to be able to set the
- CAMEL_SOCKOPT_NONBLOCKING socket opt.
-
-2001-01-15 Peter Williams <peterw@ximian.com>
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Lock
- around the imap_rescan, which needs it.
-
-2001-01-15 Not Zed <NotZed@Ximian.com>
-
- * camel-remote-store.c (socket_connect): A cancellable connection
- routine.
- (remote_send_string): Return cancelled exception if we were.
- (remote_send_stream): "
- (remote_recv_line): "
-
- * camel-stream-fs.c (stream_read): First cut at cancellation
- stuff. Its looking a bit ugly.
-
-2001-01-15 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-tcp-stream-ssl.c (stream_connect): Uses an SSL socket now
- although there's still a few things missing (like certificate
- handling and such).
-
- * camel.c (camel_ssl_init): A replacement function for
- camel_init() that also initializes SSL.
-
-2001-01-14 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-tcp-stream-ssl.c (stream_getsockopt): Implemented.
- (stream_setsockopt): Implemented.
-
- * camel-tcp-stream-raw.c (stream_getsockopt): Implemented.
- (stream_setsockopt): Implemented.
-
- * camel-tcp-stream.c (camel_tcp_stream_getsockopt): New method.
- (camel_tcp_stream_setsockopt): Another new method. I think you get
- the idea of what these are for so I won't explain them.
-
-2001-01-14 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-tcp-stream-ssl.[c,h]: New CamelTcpStream class that
- implements nspr sockets and eventually will use nss for
- SSL/TLS. Currently doesn't do any SSL/TLS but it should still
- work. It's functionally equivalent to CamelTcpStreamRaw at the
- moment only it uses nspr i/o.
-
- * camel-tcp-stream-raw.[c,h]: New CamelTcpStream class that
- implements native sockets. Should be usable but may have some bugs
- yet.
-
-2001-01-13 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-tcp-stream.[c,h]: New abstract class for TCP streams. The
- next step is to write child classes (CamelTcpStreamBSD and
- CamelTcpStreamSSL). The BSD stream will use normal BSD sockets
- while SSL will use Mozilla's NSPR and NSS libraries to do Secure
- Socket Layers which wille ventually replace CamelStreamSSL which I
- just commit'd. Oh well.
-
-2001-01-13 Jeffrey Stedfast <fejj@ximian.com>
-
- * camel-stream-ssl.[c,h]: New stream for handling SSL/TLS
- connections.
-
-2001-01-12 Not Zed <NotZed@Ximian.com>
-
- * camel-folder-thread.c (camel_folder_thread_messages_new):
- Perform a final pass, removing any pseudo nodes we added earlier.
- Quick patch to test the idea.
- (camel_folder_thread_messages_new): Added casts to rmeove some
- warnings for the analites out there.
-
-2001-01-11 Dan Winship <danw@ximian.com>
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_selected):
- Fix a bug in previous commit: don't check for deleted messages if
- there are no known messages in the folder (because it would end up
- sending "FETCH 0 ...").
- (imap_copy_message_to): Fix this up: sync flags to the server
- before copying so that they end up correct in the remote folder.
- And poke the destination folder after doing the copy so it notices
- the new message right away.
- (imap_move_message_to): Call imap_copy_message_to for most of the
- work rather than duplicating the code (since it's much more
- complicated now).
-
-2001-01-11 Dan Winship <danw@ximian.com>
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_selected):
- New function to check for added/deleted messages when re-selecting
- a folder.
- (imap_refresh_info, imap_rescan, imap_update_summary): Various
- locking tweaks that turn out to be irrelevant since command_lock
- is recursive, but whatever.
-
- * providers/imap/camel-imap-command.c (camel_imap_command): When
- selecting a new folder, call camel_imap_folder_selected on it.
-
- * camel-folder.c (camel_folder_copy_message_to): Fix a locking
- problem. (One branch of an if statement was returning with the
- lock still locked.) Also remove the deprecation comments, to match
- move_message_to.
-
-2001-01-10 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/local/camel-local-provider.c: Changed the descriptions
- for mh, mbox, and maildir to be more "user-friendly".
-
-2001-01-10 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-types.h: New header to prevent
- recursive #include problems
-
- * providers/imap/*.h: Replace some #includes with #include
- "camel-imap-types.h", remove typedefs that were moved to
- camel-imap-types.h
-
- * providers/imap/*.c: Add #includes to make up for #includes
- removed from .h files
-
- * providers/imap/Makefile.am (libcamelimapinclude_HEADERS): Add
- camel-imap-types.h
-
-2001-01-10 Dan Winship <danw@helixcode.com>
-
- * camel-store.c (camel_store_sync): New class function, parallel
- to camel_folder_sync. (The default implementation just calls
- camel_folder_sync on each cached folder.)
-
- * providers/imap/camel-imap-store.c (get_folder_info): Call
- camel_store_sync before doing anything else so that the IMAP
- server and Camel are working from the same data. Don't ask the
- server for the unread message count of the current folder, since
- UW will return often-incorrect cached data, and we can calculate
- it without talking to the server anyway.
-
-2001-01-09 Dan Winship <danw@helixcode.com>
-
- Mostly IMAP changes. Use the NAMESPACE extension (where
- available). Deal with servers that don't return LIST flags in
- response to LSUB (like UW) to get rid of the "not a selectable
- folder" error messages in the UI. Take advantage of the \Marked
- and \Unmarked flags to try to speed up the folder scan by not
- doing STATUS on unmarked folders. Some further tweaks on the shape
- of the resulting folder tree in various situations...
-
- * camel-store.h: Remove the (read) message_count, since nothing
- uses it, and we can speed up IMAP a bit this way.
-
- * camel-store.c (camel_folder_info_build): Redo this a bit to make
- it more useful for IMAP since that's the only thing that uses it.
-
- * camel-remote-store.c (camel_remote_store_connected): Public
- function to check if the store is connected, and try to connect it
- if it's not.
- (remote_send_string, remote_send_stream, remote_recv_line): Use
- that.
-
- * providers/imap/camel-imap-store.c (camel_imap_store_finalize):
- fix up for changes.
- (camel_imap_store_init): Initialize subscribed_folders to NULL
- rather than an empty hash table.
- (imap_connect): Get the list of subscribed folders here. If the
- server doesn't claim that any of them are either Marked or
- Unmarked, then assume that it doesn't do that for LSUB and
- remember that for later. If the server supports the NAMESPACE
- extension and the user didn't specify a namespace, use the
- server-provided one.
- (imap_disconnect): Free the list of subscribed folders, and the
- namespace.
- (get_folder): check camel_remote_store_connected
- (get_folder_info): check camel_remote_store_connected. Add a bunch
- of new cleverness. If we learned that the server doesn't do LSUB
- usefully, do a bunch of LISTs by hand. Then, if we're getting
- unread counts, only do it for folders that weren't listed as
- Unmarked. Also, deal with namespaces that end with the separator
- character, and update for changes to camel_folder_info_build.
- (folder_subscribed): Add a g_return_val_if_fail.
- (subscribe_folder, unsubscribe_folder): check
- camel_remote_store_connected.
-
- * providers/nntp/camel-nntp-store.c (build_folder_info,
- build_folder_info_from_grouplist, nntp_store_get_folder_info):
- Don't fill in message_count since it doesn't exist any more.
-
-2001-01-09 Dan Winship <danw@helixcode.com>
-
- Kill off a long-hated Camel kludge: "empty" URLs and
- query_auth_types_generic.
-
- * camel-url.c: Remove "empty" from CamelURL.
- (camel_url_new): No longer set it.
- (camel_url_to_string): Treat "" as equivalent to NULL for
- authmech. (Unrelated change, but it simplifies some stuff with the
- new config dialog.)
-
- * camel-service.c (camel_service_new): Remove url->empty check: if
- the URL isn't valid, we don't create the service.
- (camel_service_query_auth_types): No longer need to switch between
- generic and connected variants.
-
- * providers/smtp/camel-smtp-transport.c (query_auth_types):
- * providers/pop3/camel-pop3-store.c (query_auth_types):
- * providers/nntp/camel-nntp-store.c (nntp_store_query_auth_types):
- * providers/imap/camel-imap-store.c (query_auth_types):
- * camel-remote-store.c (remote_query_auth_types): Remove generic
- version, rename connected version.
-
-2001-01-06 Not Zed <NotZed@HelixCode.com>
-
- * providers/vee/camel-vee-folder.c (vee_folder_build_folder): Dont
- try and unref a messageinfo that wasn't there, and use the right
- free function too. Modified patch from Iain.
- (vee_move_message_to): New method, call the real folders'
- move_message_to method.
-
-2001-01-04 JP Rosevear <jpr@helixcode.com>
-
- * tests/lib/Makefile.am: fix includes for compilation
-
- * tests/message/Makefile.am: Build test3 again
-
- * tests/message/test2.c: Kill warnings with header includes
-
- * tests/message/test3.c: ditto
-
- * tests/lib/streams.c: ditto
-
- * tests/lib/camel-test.c: ditto
-
- * tests/lib/messages.c: ditto
-
- * tests/lib/folders.c: ditto
-
-2001-01-04 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_rescan): Fix two
- problems in figuring out server-expunged messages.
-
-2001-01-04 Not Zed <NotZed@HelixCode.com>
-
- * camel-folder.c (thaw): If we have a lot of messages changed,
- promote it to a folder changed event.
-
-2000-01-03 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-folder-search.c (search_header_matches): Implemented.
- (search_header_exists): Implemented.
- (search_header_starts_with): Implemented.
- (search_header_ends_with): Implemented.
-
-2001-01-03 Christopher James Lahey <clahey@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_new):
- Initialize the exists variable so that we don't do random things
- if the imap server misbehaves.
-
-2000-12-29 Not Zed <NotZed@HelixCode.com>
-
- * camel-folder.c (camel_folder_move_message_to): REmove warning,
- this isn't really deprecated, sigh.
-
- * camel-mime-utils.c (header_fold): Comment out some debug.
-
-2001-01-02 Christopher James Lahey <clahey@helixcode.com>
-
- * providers/maildir/, providers/mbox/, providers/mh/: Removed
- these directories since they're unused.
-
-2001-01-02 Dan Winship <danw@helixcode.com>
-
- IMAP randomness.
-
- * providers/imap/camel-imap-stream.[ch]: Remove. To be replaced.
-
- * providers/imap/Makefile.am (libcamelimapinclude_HEADERS): Remove
- camel-imap-stream.h
-
- * providers/imap/camel-imap-utils.c (imap_parse_flag_list): Take a
- char ** instead of char *, to return the position at the end of
- parsing like the string parsing functions.
- (imap_parse_string_generic): New function to parse a string,
- nstring, or astring.
- (imap_parse_nstring, imap_parse_astring): Now macros
- (imap_parse_string): Added
-
- * providers/imap/camel-imap-folder.h: Remove the "exists" field
- from CamelImapFolder.
-
- * providers/imap/camel-imap-folder.c: Remove unused include of
- camel-imap-stream.h.
- (camel_imap_folder_init): Remove no-longer-relevant summary
- initialization.
- (camel_imap_folder_new): Update for imap_parse_flag_list change,
- exists removal, and imap_rescan.
- (imap_rescan): New function that does most of the work of the old
- imap_refresh_info, but taking "exists" as an argument instead of
- getting it from the folder. Also calls camel_imap_folder_changed
- to do the summary updating and signalling, rather than duplicating
- that code.
- (imap_refresh_info): Just call imap_rescan (using the size of the
- folder summary as "exists").
- (imap_update_summary): Update for imap_parse_flag_list change
- (camel_imap_folder_changed): Update for "exists" change.
-
-2001-01-02 Dan Winship <danw@helixcode.com>
-
- * camel-mime-utils.c (header_content_type_simple): New function to
- return just foo/bar with no parameters.
-
- * camel-data-wrapper.c (get_mime_type): Use
- header_content_type_simple rather than header_content_type_format.
-
-2000-12-28 Dan Winship <danw@helixcode.com>
-
- * gmime-content-field.[ch]: Remove this. It was only a thin
- wrapper around struct _header_content_type anyway, and didn't
- match the naming scheme of anything else.
-
- * Makefile.am: Remove gmime-content-field.[ch]
-
- * camel.h: Remove gmime-content-field.h
-
- * camel-types.h: Add CamelContentType as a typedef for struct
- _header_content_type (especially for use outside of camel).
-
- * camel-multipart.c:
- * camel-mime-part.c:
- * camel-mime-message.c:
- * camel-folder-summary.c:
- * camel-folder-search.c:
- * camel-data-wrapper.[ch]: Use CamelContentType and
- header_content_type_* functions rather than the GMime stuff.
-
- * camel-mime-part-utils.c:
- * camel-medium.c: Remove unused gmime-content-field.h include.
-
-2000-12-27 Dan Winship <danw@helixcode.com>
-
- * providers/pop3/camel-pop3-store.c (connect_to_server): Fix the
- APOP check to not crash on servers that don't return any
- information on the +OK greeting line.
-
-2000-12-24 Not Zed <NotZed@HelixCode.com>
-
- * providers/imap/camel-imap-search.c (imap_body_contains): Lock
- the command channel while searching.
- (imap_body_contains): If performing a whole uid search, then add
- references to our own summary items, dont look it up in the
- folder. This way they can't vanish unexpectedly.
-
- * providers/imap/camel-imap-folder.h (CamelImapFolder): Added a
- private field.
- (CamelImapFolder): Removed summary again from here.
-
- * providers/imap/camel-imap-private.h: Added lock for imap
- searches.
-
- * Merge from camel-mt-branch.
-
- * providers/imap/camel-imap-folder.c (imap_update_summary): Merge
- fix, use the folder->summary.
- (imap_get_message_flags, imap_set_message_flags,
- imap_get_message_user_flag, imap_set_message_user_flag): Removed
- again.
- (camel_imap_folder_init): Setup private data/lock.
- (imap_finalize): Free private data/search lock.
- (imap_search_free): Lock the search_lock.
- (imap_search_by_expression): Lock the search lock when using the
- search object. Also copy/ref hte summary, rather than getting it
- directly.
- (imap_refresh_info): Free any info lookups. Use folder->summary
- not imap_folder->summary. And lock around commands.
- (camel_imap_folder_changed): Use folder->summary again.
- (camel_imap_folder_changed): Make sure we unref the summary lookup.
-
-2000-12-22 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-store.c (get_folder_info): When
- getting the top-level folder list, include INBOX even if it's not
- subscribed. Don't show subscribed folders outside of the given
- namespace. Do a better job of pruning the namespace from the
- returned folder tree.
-
-2000-12-21 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-search.c: New CamelFolderSearch
- subclass that just reimplements body_contains (using the IMAP
- SEARCH command). All other kinds of searching are done against the
- local summary.
-
- * providers/imap/camel-imap-folder.c (imap_search_by_expression):
- Use a CamelImapSearch to do searching.
-
- * providers/imap/camel-imap-utils.c (imap_translate_sexp, etc): No
- longer needed.
-
- * camel-folder-search.h: Add missing CAMEL_FOLDER_SEARCH_TYPE
- #define
-
-2000-12-21 Dan Winship <danw@helixcode.com>
-
- * camel-stream-buffer.c (camel_stream_buffer_gets): Update the
- doc comment: since it always NUL-terminates the buffer, it reads
- at most @max-1 bytes, not @max.
-
- * camel-remote-store.c (remote_recv_line): Fix the "did
- camel_stream_buffer_gets fill the whole buffer" check. Fixes a bug
- when reading lines longer than 1024 characters (eg, IMAP SEARCH
- responses in very large folders).
-
-2000-12-19 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_refresh_info): Oops.
- Don't do "FETCH 1:0" when the folder is empty.
- (imap_protocol_get_summary_specifier): Request RFC822.SIZE too.
- (imap_update_summary): Parse RFC822.SIZE and add it to the
- summary.
-
-2000-12-18 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-summary.c: Add "guint32 server_flags"
- to CamelImapMessageInfo to keep track of the last known message
- flag state on the server.
- (message_info_save, message_info_load): Save/load the
- server_flags.
-
- * providers/imap/camel-imap-folder.c: Make this use
- CamelFolderChangeInfo and emit folder_changed notifications as it
- gets them rather than only on refresh_info.
- (imap_refresh_info): Notice flags that get cleared on the server
- as well as flags that get set.
- (imap_update_summary): Remove a comment that never actually
- applied to the committed code.
-
-2000-12-15 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-command.c (camel_imap_command): Change
- the semantics of fmt: Now %S (capital S) means an IMAP "string",
- (which can be sent as either a quoted string or a literal). If
- the server supports LITERAL+, these will be sent as extended
- literals (which don't require any special escaping). Otherwise
- they'll be sent as quoted strings (and it now properly deals with
- " or \ in the string).
- (imap_command_strdup_vprintf): Utility routine that does the real
- work for the functionality mentioned above.
-
- * providers/imap/camel-imap-utils.c (imap_quote_string): Turns a
- string into a proper IMAP "quoted string".
-
- * providers/imap/camel-imap-store.c:
- * providers/imap/camel-imap-folder.c: Use %S instead of "%s" where
- appropriate.
-
-2000-12-22 Not Zed <NotZed@HelixCode.com>
-
- * camel-folder-summary.c (GLOBAL_INFO_UNLOCK): Doh, cut and paste
- victim again, call unlock instead of lock!
- (summary_assign_uid): Unlock around trying to get a new uid, if we
- have a clash.
-
-2000-12-21 Not Zed <NotZed@HelixCode.com>
-
- * tests/folder/Makefile.am (TESTS): reenabled the tests here.
-
- * providers/nntp/camel-nntp-newsrc.c (CamelNNTPNewsrc): Add a
- lock. Made completely mt-safe. Sigh, this is all so i can
- support snooping of the set_flags stuff inside camel-nntp-folder,
- since i've removed the global folder lock from all of the other
- folder summary operations.
- (camel_nntp_newsrc_read_for_server): Setup lock.
- (camel_nntp_newsrc_get_highest_article_read): Lock internal access.
- (camel_nntp_newsrc_get_num_articles_read):
- (camel_nntp_newsrc_mark_article_read):
- (camel_nntp_newsrc_mark_range_read):
- (camel_nntp_newsrc_article_is_read):
- (camel_nntp_newsrc_group_is_subscribed):
- (camel_nntp_newsrc_unsubscribe_group):
- (camel_nntp_newsrc_subscribe_group):
- (camel_nntp_newsrc_get_subscribed_group_names):
- (camel_nntp_newsrc_get_all_group_names): "
- (camel_nntp_newsrc_write_to_file): Lock internal accesses.
- (camel_nntp_newsrc_write): Lock around diry stuff.
-
- * providers/local/camel-maildir-summary.c (maildir_summary_check):
- Lock around our internal poking of the summary hashtable/array.
- (maildir_summary_sync): And the same here too.
-
- * camel-folder-summary.c: Moved the summaryprivate data into
- camel-private.h. Only needed for the locks really.
- (camel_folder_summary_init): Setup locks.
- (camel_folder_summary_set_filename): Lock.
- (camel_folder_summary_index): lock
- (camel_folder_summary_uid): Lock
- (camel_folder_summary_next_uid): "
- (camel_folder_summary_set_uid): "
- (camel_folder_summary_load): Lock around whole load. Hrm,
- probably not required.
- (camel_folder_summary_save): Lock around whole save, this is
- reqwuired, unless we ref/copy the whole list first, and i couldn't
- be bothreed.
- (camel_folder_summary_add): lock
- (summary_assign_uid): Lock around internal accesses.
- (camel_folder_summary_info_new_from_parser): Lock around filtr stuff.
- (camel_folder_summary_info_ref): Add locking. Could probably use
- its own lock?
- (camel_folder_summary_touch): Add locking, likewise.
- (camel_folder_summary_clear): Lock. If the preiovus two are
- changed, then so this will need mroe locking.
- (camel_folder_summary_info_free): Lock around refcounting.
- (camel_folder_summary_remove): Locking.
- (camel_folder_summary_remove_uid): Lock ref, unlock, unref. Also
- fixed a bug that would have made this never work, freeing the key,
- which isn't allocated.
- (camel_folder_summary_remove_index): lock, ref, unlock unref also.
- (camel_message_info_ref): Lock using a separate global lock, since
- we have no context here.
- (camel_message_info_free): Here too.
- (content_info_alloc): Use an alocation lock here. avoids races
- with setting up content_info_chunks, etc.
- (camel_folder_summary_info_new): And here too.
- (camel_folder_summary_load): Changed to use a differnet lock for
- loading/saving.
- (camel_folder_summary_init): Doh, i do need a reflock afterall,
- set one up.
- (camel_folder_summary_finalize): Free it.
- (camel_folder_summary_index): Add a reflock.
- (camel_folder_summary_uid): And here too.
- (camel_folder_summary_info_free): Use reflock instead of
- summary_lock.
- (camel_folder_summary_info_ref): Likewise.
- (camel_folder_summary_remove_uid): Add reflocking.
- (camel_folder_summary_remove_index): And here too.
-
- * providers/vee/camel-vee-folder.c (camel_vee_folder_new): Setup a
- summary object.
- (vee_folder_build): Build each item into the real summary object.
- (vee_folder_add, vee_folder_add_uid, vee_folder_add_change): New
- functions to add a single record to the vfolder summary.
- (vee_folder_build_folder): Use a real summary.
- (vee_get_uids): Removed, use default impl.
- (vee_free_message_info): "
- (vee_get_message_info): "
- (vee_get_summary): "
- (vee_get_unread_message_count): "
- (vee_get_message_count): "
- (vee_sync): Make vee-folder-sync sync all subordinate folders.
- Well i dont think this is right, but enough peopl ehave aksed for
- it.
- (vee_expunge): Same for expunge.
- (vee_set_message_flags): Call parent class, then mirror flags to
- subfolder.
- (vee_get_message_user_flag): Removed, we just use the default
- impl, and our flags should always match.
- (vee_set_message_user_flag): Snoop the set and set on subfolder.
- (vee_get_message_flags): Removed, jsut use parent impl, assume our
- copy matches the real ones.
- (get_real_message): Removed. We sort ofneed to keep the
- summaryitem refed while we use it, so this doesn't make as much
- sense as it did once.
- (camel_vee_folder_finalise): Unhook listening events as we unref
- folders.
- (camel_vee_folder_new): Set the summary messageinfo data size
- properly.
- (vfolder_remove_match): Fixed for summary change.
- (folder_changed): ditto. Also stopped changed items from being
- re-searched and possibly removed. Might have to resort to the old
- whole-search idea again.
- (message_changed): Similarly. Might be easier just not to bother
- with a whole search.
-
- * providers/vee/camel-vee-folder.h: Removes summary
- hashtable/array, and use a real summary object. Sigh, more work.
-
- * providers/nntp/camel-nntp-folder.c (nntp_folder_sync): Move
- summary to folder object.
- (nntp_folder_get_message_count): Removed, use default impl.
- (nntp_folder_set_message_flags): Call parent impl to do the work,
- but snoop for newsrc.
- (nntp_folder_get_uids): Removed, use default impl.
- (nntp_folder_get_summary): "
- (nntp_folder_get_message_info): "
- (nntp_folder_free_message_info): "
- (camel_nntp_folder_new): moved summary to folder class
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_init):
- Move summary to folder object.
- (camel_imap_folder_new): "
- (imap_finalize): No longer unref the summary (or infact, do
- anything else either).
- (imap_refresh_info): move summary to folder object.
- (imap_sync): "
- (imap_get_message_count): Removed, use default impl.
- (imap_get_unread_message_count): "
- (imap_get_uids): "
- (imap_get_summary): "
- (imap_free_summary): "
- (imap_get_message_info): "
- (imap_free_message_info): "
- (imap_get_message_flags): "
- (imap_set_message_flags): "
- (imap_get_message_user_flag): ", this changes functionality, but
- only by providing non-permanent flags.
- (imap_set_message_user_flag): "
- (imap_update_summary): move summary to folder object, and use
- camel_folder_summary_info_new_from_header, instead of calling the
- virtual function directly.
-
- * providers/local/camel-maildir-folder.c (maildir_append_message):
- move summary to folder object, again.
- (maildir_get_message): "
-
- * providers/local/camel-mh-folder.c (mh_append_message): move
- summary to folder object.
- (mh_get_message): "
-
- * providers/local/camel-mbox-folder.c (mbox_append_message): Move
- summary to folder object
- (mbox_get_message): "
- (mbox_set_message_user_flag): We need our own copy of this, sigh,
- so we can track if the xev needs a rewrite (probably, its only a
- guide anyway).
- (mbox_set_message_user_tag): Same same with this one.
- (camel_mbox_folder_class_init): Link in these new virtual functions.
-
- * providers/local/camel-local-folder.h (CamelLocalFolder): removed
- summary.
-
- * providers/local/camel-local-folder.c (local_get_message_count):
- (local_get_unread_message_count):
- (local_get_uids):
- (local_get_summary):
- (local_free_summary):
- (local_get_message_info):
- (local_free_message_info):
- (local_get_message_flags):
- (local_set_message_flags):
- (local_get_message_user_flag):
- (local_set_message_user_flag):
- (local_get_message_user_tag):
- (local_set_message_user_tag): Removed, all now use default
- implementation.
- (camel_local_folder_class_init): Removed overrides.
- (local_init): Clear folder->summary.
- (local_finalize): move summary to folder.
- (camel_local_folder_construct): "
- (local_sync): "
-
- * camel-folder.c (free_summary): Provide a real impl.
- (get_summary): "
- (free_uids): "
- (get_uids): "
- (free_message_info): "
- (get_message_info): "
- (set_message_user_tag): "
- (get_message_user_tag): "
- (set_message_user_flag): "
- (get_message_user_flag): " Sigh, the last so far.
- (get_message_flags): Sigh, 1 more afterall.
- (get_unread_message_count): And and this.
- (get_message_count): and this!
- (set_message_flags): Sigh, and this.
- (camel_folder_finalize): Unref the summary if we have it.
- (camel_folder_free_uids): Remove locking.
- (camel_folder_get_message_flags): Remove locks, since the summary
- is now mt-safe.
- (camel_folder_set_message_flags): "
- (camel_folder_get_message_user_flag): "
- (camel_folder_set_message_user_flag): "
- (camel_folder_get_message_user_tag): "
- (camel_folder_set_message_user_tag): "
- (camel_folder_get_message_info): "
- (camel_folder_free_message_info): "
- (camel_folder_get_uids): "
- (camel_folder_free_summary): "
- (camel_folder_get_unread_message_count): "
- (get_unread_message_count): Check we got info, no big deal, but
- the summary might change while we're counting, and upset the count
- slightly.
- (camel_folder_get_message_count): Remove locks.
-
- * camel-folder.h (struct _CamelFolder): Added CamelFolderSummary
- to the base folder object. Sigh, this is going to be a lot of
- work ...
-
- * camel-service.c (camel_service_init, finalise): changed
- connect_lock to be recursive e_mutex.
-
- * camel-remote-store.c (camel_remote_store_init, finalise): Changed
- stream_lock to recursive e_mutex.
-
- * camel-private.h (RemoteStorePrivate, ServicePrivate): Use
- recursive mutexes for connect_lock & stream_lock. Ick. Because
- of the imap code.
-
- * providers/imap/camel-imap-private.h: Change the command_lock to
- be an EMutex.
-
- * providers/imap/camel-imap-store.c (connect_to_server): Removed
- the command_lock stuff. If we are just connected again, it should
- be safe to assume we have exclusive access at this point without
- it (and yes, removes a deadlock).
- (imap_create): Remove a lock that wasn't even supposed to be
- there.
- (camel_imap_store_finalize, init): g_mutex->e_mutex(E_MUTEX_REC).
- Use a recursive mutex since the imap code is multiply recursivly
- calling some functions (sigh, it would be nice to fix this).
-
-2000-12-20 Not Zed <NotZed@HelixCode.com>
-
- * camel-folder.c (folder_changed): Change the locks to inside the
- if. Stops a deadloc,k and we dont need a lock to read a value.
- (message_changed): Likewise.
-
- * camel.c (camel_init): Blah, comment out g_thread_init, leave it
- to the caller, since it can only ever be done once.
-
- * camel-folder-thread.c (camel_folder_thread_messages_new): Ref
- and save the folder in the thread return. Also get the summary
- once, and access that for the messageinfo's. Added bonus that now
- threads should come out in a similar order. We need to do this so
- that the messageinfo's dont get unref'd under us, and using the
- summary directly simplifies memory management.
- (camel_folder_thread_messages_destroy): Free the summary/unref the
- folder.
-
- * camel-folder-thread.h: Add a folder to CamelFolderThread struct.
-
-2000-12-19 Not Zed <NotZed@HelixCode.com>
-
- * providers/imap/camel-imap-utils.c (imap_translate_sexp): Unref
- using e_sexp_unref, since it is no longer an object.
-
- * tests/lib/camel-test.c: Added a global lock, and made it
- thread-aware.
-
- * camel-exception.c: Add a global lock. Not sure its really
- needed here, but it doesn't really hurt.
- (camel_exception_clear): Lock around access.
- (camel_exception_set): Same.
- (camel_exception_setv): "
- (camel_exception_xfer): "
-
- * providers/local/Makefile.am (noinst_HEADERS): Added, for
- camel-local-private.h
-
- * camel-folder.c (camel_folder_search_by_expression): Removed
- locking here, now upto the implementing class to lock.
- (camel_folder_search_free): Removed the folder lock here too, for
- consistency really, and the locking probably wasn't needed.
-
- * providers/local/camel-local-folder.c (local_get_summary):
- Changed to copy/ref the summary items.
- (local_free_summary): Unref the summary items/free the array.
- (local_get_unread_message_count): Free info lookups.
- (local_search_by_expression): Perform more fine-grained locking,
- and dont lock the whole folder while searching, just the search
- object. Dum de dum, it *would* be possible to not even have to
- lock the search, by using our own copy of the search object each
- time. Could be investigated.
- (local_init): Init priaate data/lock.
- (local_finalize): Free private data/lock.
- (local_search_free): Also lock around the search object, because
- it accesses global data inside.
-
- * README.mt: Some info about the mt code development.
-
- * camel-folder-search.c (match_message): Put in a warning, this
- plain deadlocks so far, but i'm going to bed now.
- (camel_folder_search_finalize): Use e_sexp_unref() since its no
- longer an object.
-
- * camel-session.c (camel_session_init): Init private data/lock.
- (camel_session_finalise): Free private data/lock.
- (camel_session_register_provider): Lock hash insert.
- (service_cache_remove): Lock.
- (camel_session_list_providers): "
- (camel_session_get_service): Lock the whole function.
-
- * camel-session.h (struct _CamelSession): Added private data.
-
- * providers/imap/camel-imap-store.c (camel_imap_store_init): Setup
- private data.
- (camel_imap_store_finalize): Free private data.
- (connect_to_server): Lock around command calls. I dont think its
- needed, but it shouldn't hurt either.
- (imap_connect): Lock around command calls. Again, I don think it
- is needed, but wont hurt.
- (imap_disconnect): ditto for this one.
- (imap_create): Lock around command.
- (get_folder): "
- (get_folder_info): "
- (subscribe_folder): "
- (unsubscribe_folder): "
- (imap_keepalive): "
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Lock
- around calling a command.
- (imap_refresh_info): Likewise.
- (imap_sync): "
- (imap_append_message): "
- (imap_copy_message_to): "
- (imap_move_message_to): "
- (imap_get_message): "
- (imap_update_summary): "
- (imap_search_by_expression): ", also minor logic cleanup.
- (imap_get_summary): Copy/ref the summary items.
- (imap_free_summary): And free it now too.
-
- * providers/imap/camel-imap-auth.c (imap_try_kerberos_v4_auth):
- Lock the command stream for the command session.
-
- * providers/imap/camel-imap-private.h: Private (locking info)
- stuff for imap provider.
- (CAMEL_IMAP_STORE_UNLOCK): Fix to call unlock, rather than lock!
-
- * camel-service.c (camel_service_query_auth_types): Lock also for
- the connection here, incase the service needs to connect.
-
- * camel-remote-store.c (camel_remote_store_init): Init private
- data/lock.
- (camel_remote_store_finalise): Readded, free private data/lock.
- (remote_send_stream): Changed to return the number of bytes
- written, like a good little stream function should.
- (camel_remote_store_send_string): Lock for stream access.
- (camel_remote_store_send_stream): Same here.
- (camel_remote_store_recv_line): And here.
- (camel_remote_store_refresh_folders): Lock the store for cache
- access.
- (timeout_cb): Lock for stream access.
-
-2000-12-18 Not Zed <NotZed@HelixCode.com>
-
- * camel-service.c (camel_service_init): Init private data.
- (camel_service_finalise): Free private data.
- (camel_service_connect): Lock around connection access.
- (camel_service_disconnect): "
-
- * camel-service.h (struct _CamelService): Added private field.
-
- * camel-store.c (camel_store_init): Init private data/lock.
- (camel_store_finalize): Free private data/lock.
- (camel_store_get_folder): Lock internal calls.
- (camel_store_delete_folder): "
- (camel_store_rename_folder): "
- (camel_store_get_root_folder): "
- (camel_store_get_default_folder): "
- (camel_store_get_folder_info): "
- (camel_store_folder_subscribed): "
- (camel_store_subscribe_folder): "
- (camel_store_unsubscribe_folder): "
- (lookup_folder): Lock accesses to the folder cache.
- (cache_folder): "
- (uncache_folder): And here too.
-
- * camel-store.h (struct _CamelStore): Added a private field.
-
- * Makefile.am (noinst_HEADERS): Add camel-private.h. There is a
- comment in that header as to why it ins't installed.
-
- * camel-private.h: New header for private data, that subclasses
- can get to.
-
- * tests/lib/camel-test.c (camel_test_init): If we do have threads
- enabled already, dont call g_thread_init().
-
- * tests/lib/folders.c (test_folder_counts): Add free of info.
- (test_folder_message): And here too.
-
- * providers/local/camel-maildir-summary.c (remove_summary): Free
- info.
- (maildir_summary_check): Free info lookups.
-
- * providers/local/camel-mh-summary.c (message_info_new): Removed,
- didn't add value.
- (remove_summary): free info after being used.
- (mh_summary_check): Free info lookups.
- (mh_summary_sync): and here too.
-
- * providers/local/camel-mbox-summary.c (summary_update): Free info
- lookups.
- (mbox_summary_sync_full): Likewise.
- (mbox_summary_sync_quick): And here.
- (mbox_summary_sync): ... and here.
-
- * providers/local/camel-maildir-folder.c (maildir_get_message):
- Free messageinfo lookups.
-
- * providers/local/camel-mh-folder.c (mh_get_message): Free
- messageinfo lookups.
-
- * providers/local/camel-mbox-folder.c (mbox_get_message): Free
- messageinfo lookups.
-
- * providers/local/camel-local-summary.c
- (message_info_new_from_message): Removed, since it wasn't doing
- anything useful.
- (message_info_new_from_parser): Same. And some other dead code.
-
- * providers/local/camel-local-folder.c (local_get_message_info):
- deconstify.
- (local_free_message_info):new func to free info.
- (local_get_uids):
- (local_get_message_flags):
- (local_set_message_flags):
- (local_get_message_user_flag):
- (local_set_message_user_flag):
- (local_get_message_user_tag):
- (local_set_message_user_tag): Free all info lookups.
- (local_expunge): Dont call camel_folder_* functions, to avoid a deadlock.
-
- * providers/nntp/camel-nntp-folder.c
- (nntp_folder_get_message_info): deconstify.
- (nntp_folder_free_message_info): Free summary item.
- (nntp_folder_get_message_flags): Free summary lookup.
- (nntp_folder_set_message_flags): and here.
- (nntp_folder_get_uids): And here.
-
- * providers/imap/camel-imap-auth.c: Make base64_*_simple optional
- with the HAVE_KRB4 flag.
-
- * providers/imap/camel-imap-folder.c (imap_free_message_info):
- Added a free of the message info.
- (imap_refresh_info):
- (imap_sync):
- (imap_refresh_info):
- (imap_get_unread_message_count):
- (imap_get_uids):
- (imap_get_message_flags):
- (imap_set_message_flags): Free any summary lookups.
- (imap_get_message_flags): Get the message info directly from the
- summary, not via the folder interface.
- (imap_move_message_to): Dont call folder functions directly
- (delete_message), as it will deadlock since we already have the
- lock.
-
- * providers/vee/camel-vee-folder.c (vee_free_message_info): Free/unref
- the messageinfo.
- (vee_get_message_info): First ref the internal copy, then return it.
- (folder_changed): Free all got message info's.
- (message_changed): And here.
- (get_real_message): And here.
- (vee_folder_build): and here.
- (vee_folder_build_folder): ... and here.
-
- * camel-folder-summary.c (camel_folder_summary_info_new):
- Initialise the messageinfo refcount to 1.
- (camel_folder_summary_info_free): Down the refcount till we need
- to free.
- (camel_folder_summary_info_ref): New function to up the refcount.
- (camel_message_info_dup_to): Sewt the refcount of the dest to 1.
- (camel_message_info_new): Set refcount to 1.
- (camel_message_info_new_from_header): Dont allocate the mi
- ourselves.
- (camel_message_info_free): Handle refcounting.
- (camel_message_info_ref): New function.
- (camel_folder_summary_index): Ref the messageinfo before returning
- it.
- (camel_folder_summary_uid): Likewise.
- (camel_folder_summary_save): Access the messageinfo array
- directly, rather than through accessors (saves ref/unref).
- (camel_folder_summary_clear): Likewise.
- (camel_folder_summary_remove_index): Likewise.
- (main): Free lookups.
-
- * camel-folder-summary.h (CamelMessageInfo): Added a refcount
- value.
-
- * camel-folder.c (camel_folder_free_message_info): New function to
- 'free' a message info.
- (camel_folder_get_message_info): Deconstify return.
- (camel_folder_lock): New (internal) function to thread-lock the
- folder.
- (camel_folder_unlock): Likewise for unlocking.
- (freeze):
- (thaw): Lock around access to folder->frozen/changed_frozen.
- (folder_changed): Likewise.
- (message_changed): Likewise.
- (camel_folder_init): Init private data, locks and moved frozen
- info.
- (camel_folder_finalize): Free new private data, locks and moved
- frozen info.
- (copy_message_to): Free the messageinfo after we've used it.
- (move_message_to): And here too.
- (camel_folder_sync): Lock around virtual method invocation. Just
- locking around any virtual method that is known to need it. This
- is the first cut at locking.
- (camel_folder_refresh_info): "
- (camel_folder_expunge): "
- (camel_folder_get_message_count): "
- (camel_folder_get_unread_message_count): "
- (camel_folder_append_message): "
- (camel_folder_set_message_flags): "
- (camel_folder_get_message_flags): "
- (camel_folder_get_message_user_flag): "
- (camel_folder_set_message_user_flag): "
- (camel_folder_get_message_user_tag): "
- (camel_folder_set_message_user_tag): "
- (camel_folder_get_message): "
- (camel_folder_get_uids): "
- (camel_folder_free_uids): "
- (camel_folder_get_summary): "
- (camel_folder_search_by_expression): "
- (camel_folder_free_summary): "
- (camel_folder_search_free): "
- (camel_folder_move_message_to): "
- (camel_folder_copy_message_to): "
- (copy_message_to): Dont call any of our own folder functions
- directly, otherwise we will deadlock.
- (move_message_to): Likewise.
-
- * camel-folder.h (CamelFolder): Added free_message_info() function
- & deconstify get_message_info()'s return.
- (CamelFolder): Add a private field (for locks).
- (struct _CamelFolder): Moved changed_changed/frozen into private
- data, since it really is private and now needs locked access.
-
-2000-12-15 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-mime-utils.c (header_fold): When checking to see if we
- need to fold the header, when we come accross a \n, make sure to
- start at p + 1 the next time through the loop or else we get into
- an infinite loop.
-
-2000-12-13 Dan Winship <danw@helixcode.com>
-
- * Namespace cleanup: change a bunch of IS_CAMEL_* macros to
- CAMEL_IS_*
-
-2000-12-13 Chris Toshok <toshok@helixcode.com>
-
- * providers/imap/camel-imap-auth.c: add #include <sys/types.h> for
- freebsd.
-
-2000-12-12 Christopher James Lahey <clahey@helixcode.com>
-
- * camel-folder-summary.c, camel-folder-summary.h: Added #ifndef
- NO_WARNINGS around a #warning. Added (void) to the prototype and
- declaration of camel_message_info_new.
-
- * camel-mime-message.h: Added an include for
- camel-mime-filter-bestenc.h. Added a prototype for
- camel_mime_message_set_best_encoding. Reformatted prototypes to
- line up.
-
- * camel-mime-parser.c: Added #if d(!)0 around the states string
- lookup table since it's only used in debugging output.
-
- * camel-seekable-substream.c (stream_flush): Added a cast.
-
- * providers/imap/camel-imap-auth.c: Added #include <netinet/in.h>.
-
- * providers/imap/camel-imap-folder.c (imap_refresh_info): Made uid
- and flags const to fix warnings here.
-
- * providers/imap/camel-imap-store.c (get_folder_info): Made p
- const to fix warnings here.
-
-2000-12-12 Dan Winship <danw@helixcode.com>
-
- * tests/lib/Makefile.am: Add missing .h file. (From campd.)
-
-2000-12-11 Not Zed <NotZed@HelixCode.com>
-
- * providers/smtp/camel-smtp-transport.c (smtp_data): Remove use of
- linewrap filter. Headers are now wrapped. encode_8bit already
- enforces a 998 octet line limit.
- (smtp_data): Also fixed a memleak, we always have to unref our own
- copy of the filters. We also dont need to remove them manually,
- so dont bother. The type's an int too ...
-
- * camel-internet-address.c (internet_unformat): When scanning past
- quotes, remove them also.
- (camel_internet_address_format_address): If the name contains "'s,
- or ','s then strip and quotes and wrap the whole lot in one set of
- quotes.
-
- * Makefile.am (noinst_HEADERS): We dont want to install
- camel-charset-map-private.h, ever. There are probably other
- similar files ..?
-
- * camel-mime-part.c (write_to_stream): Fold header lines
- appropriately as we're writing them out.
-
- * camel-mime-utils.c (header_fold): Add a new argument, headerlen,
- tells it how long the associated header token is.
- (header_fold): Also,k check to see if we need to fold first, using
- a better algorithm, and also accept already-folded lines, and
- re-process accordingly.
- (rfc2047_decode_word): Add a little buffer space to iconv output
- for shifting overheads?
- (rfc2047_decode_word): finish the iconv with a null call, to flush
- shift state, etc.
- (rfc2047_encode_word): Attempt to break up long words into
- appropriately sized, independent, chunks. See rfc2047, section 2.
- (header_decode_mailbox): Dont add in extra spaces into the output
- if we are decoding adjacent encoded words. We can only guess this
- case, as some broken mailers put encoded words inside quoted
- words.
- (header_encode_phrase): Dont merge words if they are going to end
- up too long. Also change back ot only merge consecutive words of
- the same type. e.g. 'foo. blah fum.' -> "foo." blah "fum." or
- 'iam an. idiot' -> iam "an." idiot
-
- * camel-medium.c (camel_medium_set_header): Hrm, we actually want
- to call set_header, not add_header here, probably explains some
- duplicate X-Evolution headers i was trying to track down. Also
- changed the api to handle a NULL value == remove the header.
-
- * providers/local/camel-maildir-summary.c
- (maildir_summary_decode_x_evolution): Always return error, we dont
- use x-evolution for maildir.
- (maildir_summary_encode_x_evolution): Always return a NULL string,
- likewise.
- (maildir_summary_add): Hook in here, since the _new function
- doesn't have access to any flags from the caller. If we have
- flags, then update the filename again. Not ideal, but should
- work.
-
-2000-12-08 JP Rosevear <jpr@helixcode.com>
-
- * tests/message/Makefile.am: Remove test3 from build until the files
- show up
-
-2000-12-09 Not Zed <NotZed@HelixCode.com>
-
- * camel-mime-message.c (camel_mime_message_set_date): Change the
- sign of the default date offset when none is supplied.
- (camel_mime_message_set_date): Also do dst if its dst (forward 1
- hour). Fixes #928 + some.
-
-2000-12-06 Not Zed <NotZed@HelixCode.com>
-
- * tests/lib/camel-test.h (check): Change line no format so that
- emacs can detect it.
-
-2000-12-06 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_refresh_info): We want
- to bitwise-or the server and cached flags here so that we keep the
- flags that we have set locally and set any additional flags that a
- parallel connection may have set.
-
-2000-12-05 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/smtp/camel-smtp-transport.c (smtp_data): If the data
- wrapper fails to be written to the stream, unref it and the
- filters before returning.
-
-2000-12-05 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_get_message): use
- BODY.PEEK[] rather than RFC822, so the message doesn't get marked
- as \Seen.
- (imap_refresh_info): Fix a really really really dumb bug.
-
-2000-12-05 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_set_message_flags): Fix
- the check for "flags aren't actually changing".
-
- * providers/local/camel-local-folder.c (local_set_message_flags,
- local_set_message_user_flag, local_set_message_user_tag): Don't
- emit message_changed unless the flags actually changed.
-
- * providers/nntp/camel-nntp-folder.c
- (nntp_folder_set_message_flags): Don't emit message_changed unless
- the flags actually changed. Fix the check for marked as seen.
-
-2000-12-05 Not Zed <NotZed@HelixCode.com>
-
- * camel-seekable-substream.c (stream_flush): stream_flush does
- make sense for a substream afterall (if you have a stream_write).
- (stream_write): Implement this.
- (stream_seek): Change the STREAM_END behaviour to be more sane.
- if bounded go from the end of the bound, if unbounded, go from the
- end of the parent stream.
-
- * camel-stream-mem.c (stream_read): Dont return error if reading
- past the end of data, just return 0.
-
- * camel-stream-fs.c (camel_stream_fs_init): Initialise the stream
- to be unbound.
- (stream_seek): Fix the logic when seeking from the end of an
- unbounded stream.
- (camel_stream_fs_new_with_fd): If the fd is invalid (-1), then
- return NULL immediately.
- (stream_seek): Range check a SEEK_END so it fits within
- bound_start.
-
-2000-12-01 Not Zed <NotZed@HelixCode.com>
-
- * tests/lib/folders.c (test_folder_basic): New test to perform
- basic store operations on folders (taken from folders/test1).
- (test_folder_message_ops): Tkane the guts out of folders/test2.
-
-2000-12-04 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/smtp/camel-smtp-transport.c (smtp_connect): i18n-ize
- exception strings.
- (get_name): And here.
- (_send_to): Here too.
- (smtp_helo): And here and there...
- (smtp_mail): And around the square...
- (smtp_rcpt): Saying catch me if you can...
- (smtp_data): And here three.
- (smtp_rset): And here.
- (smtp_quit): And finally here.
-
-2000-12-01 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-folder-search.h: Added system_flag to CamelFolderSearchClass
-
- * camel-folder-summary.c (camel_system_flag_get): Convenience
- function to return whether or not a flag is set using a string as
- the flag name.
- (camel_system_flag): Return the integer value of the flag string.
-
- * camel-folder-search.c (search_system_flag): New ESExp callback
- for allowing vfoldering on CamelMessageInfo flags.
-
-2000-12-01 Dan Winship <danw@helixcode.com>
-
- * camel-service.c (camel_service_disconnect): Don't
- g_return_if_fail if the service is already disconnected. Just
- return.
-
- * providers/pop3/camel-pop3-store.c (pop3_try_authenticate):
- Return FALSE (don't try again) if we get CAMEL_POP3_FAIL.
- (pop3_connect): If we don't succeed, disconnect.
-
-2000-11-30 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c
- (parse_list_response_as_folder_info): Fix a possible bug where
- 'name' could be uninitialized.
-
- * camel-folder-summary.c (camel_message_info_new): New convenience
- function, doesn't do much but it sure makes code cleaner to read.
- (camel_message_info_new_from_header): This one makes my life heaven.
-
-2000-11-30 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-summary.c (camel_imap_summary_new):
- Handle the case where the summary failed to load - clear the
- summary and then set the dirty bit so that it is sure to save
- later. Is this the right fix?
-
-2000-11-30 Dan Winship <danw@helixcode.com>
-
- * camel-exception.c (camel_exception_setv): Remove unused
- variable.
-
-2000-11-30 Not Zed <NotZed@HelixCode.com>
-
- * providers/local/camel-mbox-folder.c (mbox_get_message): Remove
- assertion that content is there, when it no longer can be.
-
- * camel-folder-summary.h: Removed pos/bodypos/endpos from
- camelmeessagecontentinfo.
- (CamelMessageFlags): Added an attachments flag.
-
- * providers/local/camel-local-summary.h: Added load virtual
- function.
-
- * tests/lib/folders.c (test_message_info): Accessors.
- (test_folder_message): "
-
- * camel-folder-thread.c (get_root_subject): Fix accessors.
- (dump_tree_rec): "
-
- * camel-folder-search.c (camel_folder_search_execute_expression):
- Accessors for messageinfo.
- (search_match_all): "
- (search_header_contains): "
- (search_header_contains): "
- (search_body_contains): "
- (camel_folder_search_execute_expression): Use mepool_strdup.
-
- * providers/local/camel-mbox-summary.c (summary_update): Accessors
- for messageinfo.
- (mbox_summary_sync_full): "
-
- * providers/local/camel-mh-summary.c (remove_summary): Accessors
- for messageinfo.
- (mh_summary_check): "
- (mh_summary_sync_message): "
- (mh_summary_sync): "
-
- * providers/local/camel-mh-folder.c (mh_append_message): Use
- accessor for uid.
-
- * providers/local/camel-local-summary.c
- (local_summary_decode_x_evolution): Use accessor to uid.
- (local_summary_encode_x_evolution): Likewise.
- (message_info_new): And here.
- (camel_local_summary_load): Call virtual load function.
- (local_summary_load): Default load function, load summary.
- (camel_local_summary_load): Check file exists before trying to
- load.
- (camel_local_summary_construct): Turn off building content info!
- (CAMEL_LOCAL_SUMMARY_VERSION): Bump, since we dont build content
- info anymore.
- (camel_local_summary_load): After a successful load/check, do a
- save too so we dont have to go through it again randomly.
-
- * providers/nntp/camel-nntp-utils.c (get_XOVER_headers): Use
- accessors for messageinfo.
-
- * providers/nntp/camel-nntp-folder.c (nntp_folder_get_uids): Use
- accessors for uid.
-
- * providers/imap/camel-imap-folder.c (imap_refresh_info): Use
- accessor for uid.
- (imap_sync): Likewise.
- (imap_get_uids): Likewise.
- (imap_update_summary): And here.
-
- * providers/vee/camel-vee-folder.c (vfolder_remove_match): Use
- accessor for uid.
- (vfolder_add_match): Handle estrv stuff.
- (vfolder_change_match): Accessor for uid.
- (get_real_message): "
- (vee_get_uids): "
- (vee_folder_build): " + estrv.
- (vee_folder_build_folder): "
-
- * providers/local/camel-maildir-folder.c (maildir_append_message):
- Use acccessors for uid's.
- (maildir_get_message): Here too.
-
- * providers/local/camel-maildir-summary.c
- (camel_maildir_summary_init): Setup the string count for us.
- (message_info_new): Access the string array directly.
- (message_info_free): No need to free string if using array.
- (camel_maildir_summary_info_to_name): Use accessor to get to uid.
- (remove_summary): And here.
- (maildir_summary_check): Likewise.
- (maildir_summary_sync): And here.
- (maildir_summary_load): Load up a cache of uid->filename mappings
- before loading the actual summary file. This saves us having to
- waste the diskspace storing the filenames in the summary itself,
- and also helps us sync the summary better on load.
- (message_info_load): If we have the load_map setup, and the uid
- exists, then set the filename cache from it, and update the flags
- from the name, incase our summary mismatches it.
-
- * camel-folder-summary.c (camel_folder_summary_init): Setup string
- count for compressed info record. An optional compile mode which
- stores all strings for a given messageinfo into a packed array,
- which should save 36-50 bytes/record.
- (camel_folder_summary_info_new): Init the string array.
- (message_info_new): Set the string array items, as required.
- (message_info_load): And here too.
- (message_info_save): Use accessors to get to strings.
- (message_info_free): Free strings as one.
- (camel_message_info_dup_to): Handle packed array case.
- (camel_folder_summary_add): Use accessors. And pack the strv
- before storing it.
- (summary_assign_uid): New function to assign a unique uid to a
- message, if it doesn't have one.
- (camel_folder_summary_add): Call assign_uid instead of doing it
- ourselves.
- (camel_folder_summary_info_new_from_parser): "
- (camel_folder_summary_info_new_from_message): "
- (camel_folder_summary_encode_string): constify.
- (camel_folder_summary_encode_token): "
- (summary_build_content_info_message): Fix accessors to messageinfo.
- (CAMEL_FOLDER_SUMMARY_VERSION): Bumped, for removal of
- contentinfo->pos data.
- (camel_folder_summary_info_new_from_parser): Calculate the size
- based on the parser position, not the removed contentinfo stuff.
- (camel_folder_summary_info_new_from_message): Remove size stuff.
- (camel_folder_summary_offset_content): Removed, no longer means anything.
- (content_info_new):
- (content_info_load):
- (content_info_save):
- (summary_build_content_info): Remove stuff for contentinfo->pos*.
- (summary_build_content_info): Take a msginfo argument, set
- attachments flag if we find any attachments.
- (summary_build_content_info_message): set attachments flag if we
- find any attachments.
- (camel_folder_summary_info_new_from_parser): Always scan the
- content info, even if we dont save it.
- (camel_folder_summary_info_new_from_message): And here too.
- (summary_build_content_info): Only create the contentinfo stuff if
- we have it turned on, otherwise just parse and discard.
- (summary_build_content_info_message): Likewise.
-
-2000-11-29 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-store.c (camel_store_get_folder): Updated the gtk-doc
- comment.
-
-2000-11-29 Dan Winship <danw@helixcode.com>
-
- * camel-mime-utils.c:
- * camel-mime-filter-charset.c: Use iconv instead of unicode_iconv.
-
- * providers/imap/camel-imap-command.c (imap_read_untagged): Fix
- some off-by-one-ness.
-
- * camel-stream-buffer.c (stream_read): Fix another bug found in
- previously-unused code here.
-
-2000-11-29 Ettore Perazzoli <ettore@helixcode.com>
-
- * tests/lib/Makefile.am (INCLUDES): `$(top_srcdir)' for builddir
- != srcdir compilation.
-
-2000-11-29 Not Zed <NotZed@HelixCode.com>
-
- * tests/message/test2.c (main): Add a missed unref.
-
- * camel-stream-mem.c (camel_stream_mem_set_buffer): We must set
- ourselves as the owner of the byte-array.
- Weird, someone has modified this file (its been reindented), but i
- can't see any changelogs ...
-
- * tests/lib/messages.c (content_finalise): Fix memleak in tester,
- free byte array when our content object is deleted.
-
- * camel-folder-search.c (camel_folder_search_finalize): Yeah
- great, so the sexp is a gtk object, not a camel object. Isn't
- that going to be fun to fix?
-
- * camel-session.c (camel_session_finalise): Free the storage path.
-
- * providers/local/camel-local-store.c (camel_local_store_init): If
- store->folders is setup, free it first, then overwrite. Hmm,
- this seems a bit crappy to me.
-
- * camel-store.c (camel_store_init): Dont setup store->folders if
- its already setup.
-
- * camel-exception.c (camel_exception_setv): Removed a memleak. no
- need to strdup after a strdup_printf!!!
-
- * camel-address.c (camel_address_finalize): Free the address
- ptrarray, once finished.
-
- * providers/local/camel-local-folder.c (local_finalize): Make sure
- we dont leave the folder locked on close.
- (local_finalize): Free summary/search.
-
- * providers/local/camel-mh-summary.c (mh_summary_next_uid_string):
- Small memleak, always free name after using it.
-
- * camel-mime-part.c (set_content_object): Free txt after setting
- the header.
-
- * providers/local/camel-maildir-summary.c (maildir_summary_check):
- Fix a memleak, close the dir after scanning new.
- (message_info_free): Added so we can free the filename cached in
- the messageinfo.
- (camel_maildir_summary_finalise): Free the hostname.
-
- * tests/folder/test[12].c (main): Clear out camel-test before
- starting.
-
- * providers/local/camel-mbox-summary.c (mbox_summary_sync_quick):
- Because encode_x_evolution folds the line (sigh, because
- encode_param does, unlike every other function in
- camel-mime-utils), unfold the encoded result before comparing.
- (mbox_summary_sync_quick): Another small memleak, free xevnew once
- finished with it.
-
- * camel-mime-utils.c (header_decode_quoted_string): Removed a
- redundant check for c=0.
- (header_unfold): New function to un-fold headers.
-
- * providers/local/camel-local-summary.c
- (local_summary_encode_x_evolution): some problems with encoding
- tags, using the wrong output strings.
- (local_summary_encode_x_evolution): We dont need to append a ;
- either, param_list_format_append() will do it for us.
-
-2000-11-28 JP Rosevear <jpr@helixcode.com>
-
- * camel-lock.c: No longer hard code the enabled lock types
-
-2000-11-28 Dan Winship <danw@helixcode.com>
-
- * camel-remote-store.c (remote_recv_line): Don't set exception to
- g_strerror (errno) when nread == 0, because it won't have been
- set.
-
- * providers/pop3/camel-pop3-folder.c (pop3_finalize): Don't try to
- free things if they haven't been set yet.
-
-2000-11-28 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/smtp/camel-smtp-transport.c (smtp_connect): Clear the
- exception if EHLO fails before trying HELO in the cases where the
- SMTP provider doesn't announce its ESMTPness.
-
-2000-11-28 Not Zed <NotZed@HelixCode.com>
-
- * providers/local/camel-maildir-summary.c
- (camel_maildir_summary_init): Set the info size's properly, oops!
-
- * tests/lib/folders.[ch]: Folder testing helpers.
-
- * tests/folder/test2.c: Test basic message ops on folders.
-
- * tests/folder/test1.c (main): Test basic folder ops on (local)
- stores.
-
- * providers/local/camel-local-provider.c
- (camel_provider_module_init): Removed some debug.
-
- * providers/local/camel-maildir-folder.c
- (camel_maildir_folder_class_init): fix parent class.
-
- * providers/local/camel-mh-folder.c (camel_mh_folder_class_init):
- Fix parent class (damn cut & paste).
-
- * providers/local/camel-maildir-store.c (get_folder): Call parent
- impl.
- (camel_maildir_store_class_init): Fix parent class setup.
- (delete_folder): Check the folder exists before trying to delete
- it.
- (delete_folder): Try and make the delete operation atomic/rollback
- failures. e.g. if one directory isn't empty, then create the
- other empty ones back. Also clear the tmp directory fully first.
-
- * providers/local/camel-mbox-store.c (get_folder): Call parent
- impl.
- (camel_mbox_store_class_init): parent class is camel_local_store,
- not camel_folder, oops.
- (delete_folder): Return an error if it doesn't exist, rather than
- covering it up.
-
- * providers/local/camel-mh-store.c (get_folder): Call parent impl.
- (camel_mh_store_class_init): fix parent class setup.
- (delete_folder): Error if it doesn't exist now.
-
- * camel-folder.c (camel_folder_move_message_to):
- (camel_folder_copy_message_to): Added warnings as these functions
- are going to be removed later.
-
- * camel-store.c (camel_store_get_root_folder): Fix for an early
- api change. We want CAMEL_STORE_FOLDER_CREATE, not TRUE, since
- its a flag.
- (camel_store_get_default_folder): And here too.
-
- * providers/local/camel-local-store.c (xrename): Handle renaming
- folders differently to renaming files.
- (get_default_folder_name): local stores dont have a default
- folder, so make it so. Or at least, it doesn't seem to make sense
- to have one.
- (get_root_folder_name): Same for root.
- (get_folder): Added parent implementation, that makes sure the
- service path exists, if we are creating a new folder (but doesn't
- create the folder).
-
-2000-11-27 Not Zed <NotZed@HelixCode.com>
-
- * providers/local/camel-local-store.c (xrename): Fixed races. Use
- link/unlink, rather than rename, to properly detect overwriting
- another file. And allow some files to be missing.
-
-2000-11-28 Radek Doulik <rodo@helixcode.com>
-
- * providers/local/camel-local-summary.c
- (local_summary_decode_x_evolution): add scan = scan->next; to
- avoid infinite loop
-
-2000-11-27 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-command.c (imap_read_untagged): Make
- this gratuitously more complicated. No wait, I mean, fix bugs. Now
- fully handles NULs in the data stream (which "can't happen" but
- do) and also handles responses containing multiple literals. Also
- does less copying than the original code.
-
- * camel-stream-buffer.c (stream_read): Fix a bug that could make
- it lose sync and/or overrun buffers.
-
-2000-11-27 JP Rosevear <jpr@helixcode.com>
-
- * providers/local/.cvsignore: shush
-
-2000-11-27 Not Zed <NotZed@HelixCode.com>
-
- * providers/Makefile.am: Removed mh, mbox, added local, to the default.
-
-2000-11-24 Not Zed <NotZed@HelixCode.com>
-
- * tests/data/getaddr.pl: little util to scan mailboxes for any and
- every address they contain.
-
- * tests/message/test2.c (main): Added a bunch of stuff to test
- decoding/reencoding/etc of internationalised addresses.
-
- * tests/message/lib/address-data.h: Copy of some unicode/other
- testing data. **Beware** of editing this file in emacs, it'll
- probably try and convert all the characters to something
- unusable.
-
- * tests/lib/camel-test.c (camel_test_break): Add a debugger hook
- point.
-
- * camel-mime-utils.c (quoted_encode): Check for space and convert
- to _ separately.
- (header_decode_mailbox): Fixed the 'check comments for realname'
- code, problem was the domain getting code was skipping all
- whitespace/comments before we could get a look-in. This is
- approximate but fairly robust.
- (header_decode_text): Dont use the c-type isspace func here, we
- want a specific whitespace only.
- (header_decode_text): If we have decoded words next to each other,
- do not insert whitespaces between them, which is what rfc2047 requires.
- (header_decode_text): Make c unsigned too.
-
- * tests/README: Added at least some explanation of all this stuff.
-
- * tests/lib/camel-test.h (check_msg): Added a non-gcc version of
- the fail command, we dont get the expression that failed, but no
- matter. Should be (more) portable now.
- (check, check_msg): Put the file/lineno in the default message.
-
- * Makefile.am (SUBDIRS): Add tests.
-
- * camel-mime-filter-basic.c (filter): Well, I'll add the extra
- bytes here too, lathough not strictly needed, might save a
- re-malloc when we get to complete().
-
- * camel-mime-filter-charset.c (filter): Make sure we have room if
- we only convert very short data.
- (complete): and here too.
-
- * tests/Makefile.am: Initial test harness & tests. Requires gcc
- for this.
-
- * camel-internet-address.c (d): Turn off debug.
-
- * camel-charset-map.c (camel_charset_step): Oops, & masks for set
- intersection, not | them. Dunno how this got even close to
- working.
-
-2000-11-23 Not Zed <NotZed@HelixCode.com>
-
- * camel-mime-filter-basic.c (filter): For base64 encoding, the
- output size for 0, 1, or 2 bytes of input can exceed input*2, so
- make sure we account for that as well.
- (complete): And here.
- (complete): Similarly for qp encoding, if we have a trailing
- space, we need some extra bytes (not needed for 'filter()', as any
- such bytes are stored in state/save).
-
- * camel-mime-utils.c (quoted_decode_step): Removed fixme not required.
- (quoted_encode_close): Dont append a trailing afterall. Otherwise
- a pass through the encode/decode will grow the message each time.
-
-2000-11-22 Radek Doulik <rodo@helixcode.com>
-
- * camel-mime-utils.c (header_msgid_generate): check for return
- values
-
-2000-11-21 Dan Winship <danw@helixcode.com>
-
- * camel-lock.c:
- * camel-movemail.c: add #ifdef HAVE_ALLOCA_H
-
-2000-11-21 Not Zed <NotZed@HelixCode.com>
-
- * providers/local/camel-mh-summary.c (mh_summary_sync_message):
- Shite, -1 on error, >=0 on success. So i've just been truncating
- all the messages I touched, good one zed.
- (mh_summary_sync_message): Sigh, and write to the right damn fd as
- well.
- (mh_summary_sync_message): Argh, and we need to compare the length
- of the old xev -1 to the new xev, to check if we can optimise it.
-
- * camel-folder.c (camel_folder_change_info_new): Init the pool.
- (camel_folder_change_info_add_source): Allocate string in the
- pool.
- (camel_folder_change_info_add_source_list):
- (camel_folder_change_info_add_update): No longer free the key, as
- it cannot be yet.
- (change_info_add_uid): Add a new arg, copy, telling it whether to
- copy the uid argument or not, and copy using mempool_strdup.
- (change_info_cat): Tell add_uid to copy the string.
- (camel_folder_change_info_add_update): Call add_uid directly.
- (change_info_remove): Call add_uid directly, with no copy, and
- dont free the key.
- (change_info_free_update): No longer required since we dont malloc
- the keys.
- (camel_folder_change_info_add_uid): Fix for add_uid change.
- (camel_folder_change_info_remove_uid):
- (camel_folder_change_info_change_uid):
- (change_info_clear): No longer needed, just set the size to 0 on
- the array directly.
- (camel_folder_change_info_clear): Empty the arrays directly, and
- flush the mempool too, and also clear uid_source, incase anyone
- was silly enough to call us in the wrong order.
- (camel_folder_change_info_free): Dont bother clearing the array's
- contents, just free the pool and throw away all the indexes.
-
- * camel-folder.h: Added a mempool to CamelFolderChangeInfo to
- store the uid's we get.
-
- * camel-folder-search.c (search_match_all): If we are only
- matching a single info, just use that/do the search.
- (camel_folder_search_match_expression): New function. Matches a
- single message info against an expression.
- (camel_folder_search_init): Init a hash table used to map the
- returned gptrarrays' to mempools.
- (camel_folder_search_execute_expression): Store all of the string
- data in a mempool, slightly faster, less wasted space (usually),.
- (camel_folder_search_free_result): Check for the mempool that
- stores the data for the list, and free that if we have it,
- otherwise assume we need to use g_free() (which should only happen
- if the list is empty at the moment).
- : commented out the debugging prints. Got sick of 'executing
- header search' crap.
-
- * providers/vee/camel-vee-folder.c (camel_vee_folder_init): Init
- changes.
- (camel_vee_folder_finalise): Free changes.
- (vfolder_add_match): Simple helper to add a new matching info
- record.
- (camel_vee_folder_add_folder): Only trigger a changed event if we
- have changes.
- (vfolder_change_match): New function, changes our local vfolder
- info to match the source.
- (vfolder_add_match): Add a new info to the vfolder list.
- (vfolder_remove_match): Remove a no-longer matching info from the
- vfolder summary.
- (message_changed): check if the message still matches, and
- remove/etc as required.
- (camel_vee_folder_finalise, init): init/free search object.
- (vee_folder_build_folder): Build the changes to the folder into
- the changes data, as we go.
- (folder_changed): If the folder gave us an explicit list of
- changes, then process each one separately (unless there's a lot
- added/changed).
-
- * providers/vee/camel-vee-folder.h: Added a changes field to the
- folder.
-
- * Makefile.am (libcamel_la_SOURCES): Added
- camel-folder-thread.[ch].
-
- * camel-folder-thread.c: message-threading algorithm, taken from
- evolutions' mail component, as it is generally more useful than
- just for evolution itself. Changed to use e-memchunks as well to
- speed it up a little and use less mem.
-
-2000-11-20 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-remote-store.c (remote_recv_line): Fixed to return the
- correct bytecount in all cases which is the real fix to
- imap_parse_nstring.
-
- * providers/imap/camel-imap-command.c (imap_read_untagged): Again,
- don't use strlen for the post-data, use 'n'.
-
- * providers/imap/camel-imap-utils.c (imap_parse_nstring): Undo my
- previous temp-fix.
-
-2000-11-20 Not Zed <NotZed@HelixCode.com>
-
- * providers/nntp/camel-nntp-utils.c (get_XOVER_headers): Fixes for
- the summary messageid changes. Hash the messageid and store it.
- (get_XOVER_headers): Use camel_folder_summary_info_new() to create
- the summary item before adding it.
-
- * camel-folder-summary.h (CamelMessageInfo): Changed the
- messgae-id to be an 8 byte md5 hash, and the references list to be
- an array of these.
-
- * providers/local/camel-mh-summary.c (mh_summary_sync_message):
- New function, sync out the message info stuff. Only updates the
- X-Ev header if it can get away with it, otherwise writes out a
- whole new message.
- (mh_summary_sync): Added more functionality. All summary info is
- now written to the X-Ev header, etc, and new messages re-written
- if required during the sync process.
-
- * providers/local/camel-local-folder.c
- (local_set_message_user_flag): Set the XEVCHANGE flag.
- (local_set_message_user_tag): And here too.
-
- * providers/local/camel-local-summary.h: New flag
- CAMEL_MESSAGE_FOLDER_XEVCHANGE to indicate the XEV header has
- probably changed size and needs to be rewritten in whole.
-
- * camel-folder-summary.c (next_uid_string): Want this static, not
- const.
- (message_info_new): Store the references and message-id values as
- 64 bit, binary hashes.
- (message_info_load): fix for message-id/references changes.
- (message_info_save): Likewise.
- (camel_message_info_dup_to): And here.
- (camel_message_info_free): And here too. No longer free
- message_id, and simple free for references array.
- (CAMEL_FOLDER_SUMMARY_VERSION): Bumped file revision.
- (camel_folder_summary_init): Init memchunk allocators to empty.
- (camel_folder_summary_finalize): Free memchunk allocators if
- there.
- (message_info_new): Use the chunk allocator to allocate message
- info's.
- (camel_folder_summary_info_new): New helper to allocate the
- message info, and setup the memchunk if required.
- (content_info_alloc): Likewise for content info's.
- (message_info_load): Use summary_info_new_empty.
- (content_info_new): Use content_info_alloc.
- (content_info_load): "
- (content_info_free): Free the content info as a memchunk.
- (message_info_free): Free everything directly and the base as a
- memchunk, rather than calling camel_message_info_free(), which
- assumes a malloc'd array.
-
- * providers/local/camel-local-summary.c: Include ctype.h, kill a
- warning.
- (local_summary_decode_x_evolution): If we get a NULL message info,
- then dont try and set anything, just check for validity.
- (camel_local_summary_write_headers): New function to write a set
- of headers to an fd.
- (camel_local_summary_check): Added some statistic generation
- stuff for memory profiling.
-
- * providers/local/camel-mbox-summary.c (header_write): Changed to
- use stdoi functions to write out the header to a buffered stream,
- instead of using writev, which is apparently slow (and writing
- each line separately is slow anyway).
- (mbox_summary_sync_full): New implementation. Does things
- differently, doesn't use or require the content info stuff.
- (summary_rebuild): Dont return an error if we start scanning at
- the end of file.
- (mbox_summary_sync_full): If we are not writing out new headers,
- make sure we copy the From line as we go, and update frompos
- appropriately.
- (mbox_summary_sync_full): Always copy the From line from the
- existing one, rather than trying to make one up ourselves.
- (mbox_summary_sync): If we can get by with a quick-sync, then try
- it, if that fails, then try a full sync anyway.
- (mbox_summary_sync_quick): Quick sync. Only update system flags,
- etc.
- (mbox_summary_sync_full): Use the proper local summary encode_xev
- function.
- (header_evolution_decode): Removed, no longer needed.
- (header_evolution_encode): Same.
- (copy_block): No longer needed, removed.
- (header_write): Removed, replaced with
- camel_local_summary_write_headers.
- (mbox_summary_sync_full): Fixed for header_write change.
-
- * camel-mime-parser.c (folder_scan_step): Implement the new
- optional parser state HSCAN_PRE_FROM, that returns the (currently
- unfiltered) input data.
- (folder_scan_drop_step): Do the right thing for the PRE_FROM
- state.
- (camel_mime_parser_scan_from): Update the doco.
- (camel_mime_parser_scan_pre_from): Ok, make this behaviour
- optional, it simplifies a lot of loops that dont otherwise need to
- know about it.
- (folder_scan_step): Made the PRE_FROM state optional.
- (struct _header_scan_state): Made the bool vars 1 bit.
- (folder_pull_part): Free the from_line buffer if it is there.
- (folder_scan_skip_line): Added a new arg, can save the skpped data
- to a byte_array, as we go.
- (folder_scan_step): Fixed calls to skip_line approrpiately. Now
- we save the from line as we parse it.
- (camel_mime_parser_read): New function to read from the mime
- parser buffer directly. Useful if you use the parser to read the
- first/some headers, then need to scan the rest of the data,
- without needing to use a seek(), or allocate your own buffers.
-
- * camel-mime-parser.h (struct _header_state): Added a new parser state,
- pre-from which returns any data found before a from line during
- parsing (all other data can be retrieved by the caller except
- this).
-
-2000-11-17 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-utils.c (imap_parse_nstring): When
- extracting a literal string, capture up until the end of the last
- line - this we we don't lose any data if the byte count is off.
-
- * providers/imap/camel-imap-command.c (imap_read_untagged): Use
- the byte-read count to decrement the number of bytes left to read
- rather than using strlen. Not only does this protect against a DoS
- (embedded NUL chars in the literal string would make strlen
- inaccurate) but it also improves performace a little.
-
- * camel-remote-store.c (remote_recv_line): *Sigh* Return the
- number of bytes read on success rather than 0. Also don't use
- camel_stream_buffer_read_line since we can't get an accurate octet
- count.
-
-2000-11-17 Not Zed <NotZed@HelixCode.com>
-
- * providers/local/camel-local-summary.c (local_summary_add): Clear
- the NOXEV/FLAGGED bits, since we do have an xev header. um m,
- maybe this is right, this assumes a write is following. Maybe
- this should be done in folder::append() instead ...
-
- * camel-stream-buffer.c (camel_stream_buffer_gets): We should
- always terminate the string. No need to check outptr is in range,
- its already been checked.
-
- * providers/local/camel-mbox-summary.c (mbox_summary_sync): When
- we update the summary, do it from mbox_summary->folder_size, not
- the content info endpos (which isn't any good anymore anyway).
-
- * providers/local/camel-mbox-folder.c (mbox_append_message): Set
- the frompos from the current folder size, since summary_add wont
- have initialised it to anything useful.
-
-2000-11-16 Not Zed <NotZed@HelixCode.com>
-
- * providers/local/camel-local-summary.c
- (local_summary_encode_x_evolution): Check the uid string is all
- digits before trying to write a 'standard' x-ev header.
-
- * providers/local/camel-maildir-summary.c
- (camel_maildir_summary_info_to_name): Convert an info into a
- maildir name:info filename.
- (camel_maildir_summary_name_to_info): Convert a name:info filename
- into an info, and tell us if it didn't match it.
- (message_info_new): When creating a new filename, gets its info
- from the flags field. Likewise if creating from an existing file,
- extract the flags.
- (maildir_summary_sync): Remove a small memleak. Also, if our
- flags and that requires a filename change, perform that here.
- (message_info_new): Get the received date from the filename.
- Also, dont overwirte the uid if we have one.
- (maildir_summary_check): Sort the summary in received order before
- completion.
- (maildir_summary_next_uid_string): Test the name for collusions
- before we give it out. Retry, and if that fails, well, I guess we
- collide :(
-
- * providers/local/camel-mbox-folder.c (mbox_lock): Implement mbox
- locking.
- (mbox_unlock): And unlocking.
- (mbox_append_message): Lock the folder for write before doing
- anything.
- (mbox_get_message): Lock the folder for read before doing
- anything.
-
- * providers/local/camel-local-folder.c (camel_local_folder_lock):
- Implement something here. We handle the recursive ability but
- pass the locking to the folder itself.
- (camel_local_folder_unlock): Likewise for unlocking.
- (local_lock): Default - do nothing, return success.
- (local_unlock): Same.
- (local_sync): Changed slightly for locking api changes, and also,
- only lock around the sync process itself.
-
- * camel-lock.c: New file - utility functions for locking using
- different strategies and/or for locking folders safely.
-
- * Makefile.am (libcamel_la_SOURCES): Adde camel-lock.[ch]
-
-2000-11-15 Radek Doulik <rodo@helixcode.com>
-
- * camel-mime-utils.c: mime_guess_type_from_file_name moved back to
- composer as it introduced unwanted VFS dependency
- removed #include <libgnomevfs/gnome-vfs.h>
-
-2000-11-15 Not Zed <NotZed@HelixCode.com>
-
- * providers/Makefile.am: Removed local again, not quite ready.
-
-2000-11-14 Not Zed <NotZed@HelixCode.com>
-
- * camel-folder-summary.c (message_info_new_from_message): Use
- message_info_new to create the summary from headers, instead of
- getting directly from the message.
- (format_recipients): No longer required.
-
- * providers/Makefile.am (SUBDIRS): Added local.
-
-2000-11-11 Not Zed <NotZed@HelixCode.com>
-
- * camel-mime-parser.c (folder_push_part): Make sure 'atleast' is
- at least 1, always. This is possibly a temporary fix for a
- bad failure mode on bad multipart messages.
- (folder_scan_content): Go until inend, not inend+1. Changed the
- continuation and retry logic to be simpler and more robust. If we
- can't find a marker within
- the atleast we need, just set it to 1, and try again, rather than
- just going to the next smaller limit (boundary check checks the
- length anyway).
- (header_append): streamline the empty line case. And strip
- trailing \r's if there are any (\n's already stripped).
- (folder_scan_header): Reordered and cleaned up a lot. Check for
- continuation only once, and compress lwsp then. Assume the header
- buffer already has end of line's stripped, and simplify some things:
- Only check for end of headers once and easier.
- Dont check to remove end of line character
- Dont bother testing inptr-start if we get a boundary match - it is
- always zero.
- (folder_scan_header): Removed the unused part variable, and a few
- pointless assignments.
- (folder_scan_header): Change the end limit to be 1 higher, to make
- sure we get all content.
- (folder_scan_content): And here too.
- (folder_scan_header): Killed a warning.
- (folder_push_part): Removed a bad comment. Actually
- boundarylenfinal can be zero for a new message not in a
- multipart. So we fix that here.
-
-2000-11-09 Not Zed <NotZed@HelixCode.com>
-
- * camel-mime-utils.c (header_decode_param_list): Renamed from
- header_param_list_decode.
- (header_param_list_decode): New external function to decode a
- parameter list.
- (header_param_list_format_append): Made public.
- (header_param_list_format): Another new public helper function for
- formatting just a param list.
-
- * camel-folder-summary.c (next_uid_string): Default implementation
- is the same as before.
- (camel_folder_summary_class_init): And set it up.
-
- * camel-folder-summary.h: Make next_uid_string a virtual function.
-
- * camel-folder.c (camel_folder_change_info_changed): New function
- to return true if the changeset contains any changes.
-
-2000-11-14 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-stream.c (camel_stream_printf): Don't cast an int to a
- ssize_t.
-
-2000-11-10 Dan Winship <danw@helixcode.com>
-
- * providers/mbox/camel-mbox-summary.c
- (camel_mbox_summary_build_from): put a space before a single-digit
- day of the month since it seems some mailers are fantastically
- picky about this. (bugs.gnome.org #27232)
-
-2000-11-10 Radek Doulik <rodo@helixcode.com>
-
- * camel-mime-utils.c (header_msgid_generate): fix ids ending with '.'
-
-2000-11-09 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-auth.c (imap_try_kerberos_v4_auth):
- Fix error handling. (Only send a "*" to bail out of authentication
- if the server hasn't already bailed on us.)
-
-2000-11-08 Radek Doulik <rodo@helixcode.com>
-
- * camel-mime-utils.c (mime_guess_type_from_file_name): new
- function, moved from composer
-
-2000-11-08 Not Zed <NotZed@HelixCode.com>
-
- * camel-mime-message.c (find_best_encoding): Keep track of the
- caller bestenc flags that make sense.
-
- * camel-mime-filter-bestenc.c (filter): Added code to detect when
- we have "^From " lines in the sequence of text.
- (camel_mime_filter_bestenc_get_best_encoding): Added a new flag
- CAMEL_BESTENC_NO_FROM: if set, it will not allow any lines
- matching "^From " to appear in the output - currently forcing
- base64 encoding to achieve this.
-
- * camel-mime-parser.c (folder_scan_step): Call
- camel_mime-filter_complete() once we're done, rather than
- filter_filter().
- (folder_scan_content): Some fixes for state changing; so that when
- we do find another boundary it is properly flagged. Since we
- strip the last \n off all data, we must take that into account
- too. Sigh. Fixes a rather nasty set of bugs where multipart
- messages could start including following messages as parts, etc.
- (struct _header_scan_stack): Added new parameter,
- boundarylenfinal, which holds the length of the final boundary, if
- it is different (e.g. for From lines, whihc aren't)
- (folder_scan_step): Setup teh boundarylenfinal value when creating
- a new boundary.
- (folder_scan_content): Hmm, if we hit the end-of-buffer sentinal,
- reset the scanner back to leave 'atleast' chars in the buffer
- still, dump that content, and retry again. Stops us losing a
- check for a boundary on some data we haven't really looked at yet!
- (folder_scan_content): Use boundarylenfinal to calculate
- 'atleast'.
- (folder_scan_header): And here too.
- (folder_boundary_check): Use the atleast value directly, dont
- truncate it. Use the boundarylen/boundarylenfinal values directly
- too.
- (struct _header_scan_stack): Add an atleast parameter to cache the
- atleast info.
- (folder_push_part): Determine/set 'atleast', every time we add a
- new part.
- (folder_scan_header): Get the cached atleast info from the current
- part.
- (folder_scan_content): And here too.
- (folder_scan_header): Fix a problem where a part starting with
- " text" would be interpreted as a followon header wrongly.
-
- * camel-mime-filter-charset.c (complete): Add some assertions to
- find a bug.
-
-2000-11-07 Ettore Perazzoli <ettore@helixcode.com>
-
- * camel-service.c (get_name): Strdup the "???" string you return,
- so that the expected semantics for `::get_name()' is respected.
-
-2000-11-07 Dan Winship <danw@helixcode.com>
-
- * camel-stream-filter.c (d): Kill debugging, as it causes lots of
- evolution-mail spewage.
-
-2000-11-07 Not Zed <NotZed@HelixCode.com>
-
- * camel-mime-filter-bestenc.c (complete): Implement a complete()
- function, now we need one.
- (filter): Upgraded to match rfrc2045 properly. Checks also for
- length of line and valid CRLF sequences.
- (camel_mime_filter_bestenc_get_best_encoding): Do the work of
- working out what is the best encoding given what we found about
- the stream.
-
- * camel-mime-part.c (camel_mime_part_encoding_to_string): Use a
- lookup table to get the encoding naem, and add the binary type.
- (camel_mime_part_encoding_from_string): Likewise for the reverse.
-
- * camel-mime-part.h: Added the binary encoding type, see rfc2045.
-
- * camel-mime-utils.c (header_param_list_format_append): Dont put a
- space before ;'s in parameter lists, makes them more
- readable/consistent.
-
- * camel-mime-message.c (multipart_has_8bit_parts): Cleaned up the
- old stuff, well removed it.
- (camel_mime_message_set_best_encoding): Added another argument
- that lets you select what you want to set the best of. i.e. for
- smtp transport we only need 7 bit, and dont need to optimise the
- charset (although of course, we should always).
- (find_best_encoding): Implement this feature, if we are not
- getting the best charset, use the one we have.
- (best_encoding): Set the charset on the part appropriately. Sigh,
- the interfaces for this are nonexistant.
- (find_best_encoding): Tell the bestenc filter that lf should be
- treated as crlf for the purposes of determining encodings.
-
-2000-11-06 Not Zed <NotZed@HelixCode.com>
-
- * camel-charset-map.c (camel_charset_init): Init function for an
- iterative charset determinator.
- (camel_charset_step): Iterate another buffer.
- (camel_charset_mask): Removed, since it couldn't have worked.
- (camel_charset_best): Use the iterative interface to do the work.
- (camel_charset_best_name): Get the best name for a charset so far.
-
- * camel-mime-filter-bestenc.c: New class, a stream
- filter that can be used to memory-efficiently determine the best
- encoding and/or charset to use for a given stream of bytes.
-
- * Makefile.am (libcamelinclude_HEADERS): Added stream-null*.
- (libcamel_la_SOURCES): Added bestenc*
-
- * camel-stream-null.c: New class, a null-stream, that always
- succeeds, and never has any contents.
-
- * camel-stream.c: Minor pointless changes. Was going to do
- something else but changed my mind. Added trivial default
- implementations for all callbacks.
-
- * camel-mime-message.h: Cleaned up some old cruft.
-
- * camel-folder-summary.c (camel_folder_summary_format_address):
- address_list_format() no longer encodes, so we dont need to decode
- it.
-
- * camel-address.c (camel_address_unformat): New function, attempts
- to reverse the formatting process on display addresses.
- (camel_address_length): New function to get the number of
- addresses, without having to peek the structure.
-
- * camel-mime-message.c (camel_mime_message_set_from): Fix a typo.
- (camel_mime_message_finalize): Only unref from/reply_to if we have
- it.
- (camel_mime_message_set_recipients): New function - set the
- recipients as a CamelInternetAddress. This function effectively
- deprecates the older recipient setting functions.
- (camel_mime_message_add_recipient): What the hell, i'll bite the
- bullet. Terminate this function. The old api was ambiguious and
- inefficient and didn't work right anyway.
- (camel_mime_message_remove_recipient_address): And this one.
- (camel_mime_message_remove_recipient_name): And this one too.
- (camel_mime_message_set_recipients): If we set an empty header,
- then remove it from the header list. Allow a null receipient
- object to clear a header.
- (camel_mime_message_set_from): Likewise, if setting an empty from
- address.
- (camel_mime_message_encode_8bit_parts): Eeek!!
- camel_stream_mem_new_with_byte_array owns the byte_array we give
- it, so make sure we dont free any of it!
- (camel_mime_message_encode_8bit_parts): Infact, i'll just rewrite
- the whole lot, its a bit of a mess. Should really rename it and
- make it a little more useful too, lets see ...
- (best_encoding): This has a string interface? Oh boy.
- (camel_mime_message_foreach_part): New experimental function to
- iterate over all message parts. Might not remain.
- (camel_mime_message_has_8bit_parts): New implementation using
- foreach_part. Fixed a couple of problems.
- (find_best_encoding): New function, that finds the best encoding
- for a given part (will probably be moved to camel-mime-part), and
- also the best charset to use if it is a text part. Since one
- affects the other it is a two pass process, but uses streams and
- not memory to achieve this.
- (camel_mime_message_set_best_encoding): Uses the function above to
- configure an entire message for the best encoding possible given
- transport constraints.
- (camel_mime_message_encode_8bit_parts): Reimplemented to use the
- function above to perform the work.
-
- * camel-internet-address.c
- (camel_internet_address_format_address): Dont put <> around a lone
- address with no real name.
- (camel_internet_address_encode_address): Similarly.
- (internet_decode): Actually return the count of decoded addresses.
- (internet_unformat): Implement the unformatting routine.
-
-2000-11-05 Not Zed <NotZed@HelixCode.com>
-
- * providers/smtp/camel-smtp-transport.c (_send_to): Changed to get
- the internetaddress directly, rather than having to parse it
- itself.
-
- * camel-address.c (camel_address_format): Added a new function
- which will format address, suitable for display.
- (camel_address_cat): Concatentate 1 camel address onto another.
- It is upto the caller to ensure the addresses are of compatible
- types.
- (camel_address_new_clone): New function to create a new address by
- copying an existing one of the same type.
- (camel_address_copy): New helper function to copy an address.
-
- * camel-mime-message.h (struct _CamelMimeMessage): Removed cached
- copy of date string.
- (struct _CamelMimeMessage): Added date_received info.
-
- * camel-mime-message.c (camel_mime_message_get_date_string):
- Removed. Nothing uses it anyway, and it is redundant.
- (camel_mime_message_finalize): No more date_str.
- (camel_mime_message_init): No more date_str, initialise
- date_received*
- (write_to_stream): Change the check for a date header.
- (process_header): No longer track the date_str.
- (camel_mime_message_get_received_date): Removed. totally invalid
- anyway.
- (camel_mime_message_get_sent_date): Removed. Redundant. The only
- 'date' is the sent date, the received date is just made up.
- (camel_mime_message_get_date): Args changed to be more consistent
- with utility functions.
- (camel_mime_message_get_date): Dont set the date when we're asked
- for it (if its not set by the time its written, it'll be set
- then).
- (camel_mime_message_get_date_received): Actually do 'the right
- thing' here, if we have a received header, use that to determine
- the received date. And return the data in the same format as
- get_date.
- (camel_mime_message_set_from): Changed the api to better match
- what we should be doing. Pass a camelinternetaddress, etc.
- (camel_mime_message_set_reply_to): Cahnged similarly to take an
- internetaddress.
- (camel_mime_message_get_reply_to): Likewise.
- (camel_mime_message_finalize): Unref the from/reply_to objects.
- (format_address): Removed, no longer needed.
- (process_header): Changed to store the from/reply_to as
- internetaddress's.
- (write_to_stream): Set the from header directly to empty, if we
- dont have one. Maybe we should just abort, and/or create one
- based on the current user.
-
- * camel-mime-utils.c (header_address_list_format): Renamed to
- header_address_list_encode, which is what it is actually doing.
- (header_address_list_format_append): Similarly.
- (encoding_map[]): Removed, no longer used.
- (header_address_list_encode_append): Take another arg, do we
- encode the address (for internet), or not (for display - utf8
- only).
- (header_address_list_format): Re-added this function, but now it
- generates a display version only. Surprise surprise, that is all
- anythign needs to generate anyway. Sigh.
-
- * camel-internet-address.c (camel_internet_address_get): Return
- false if we get an invalid index only.
- (camel_internet_address_encode_address): Helper function to encode
- a single address for mailing.
- (internet_encode): Use the above function to format it.
- (camel_internet_address_format_address): Format a single address
- for display.
- (internet_format): Implement the display version.
- (camel_internet_address_class_init): Init the internet_format
- virtual function.
- (internet_cat): Implement virtual function to concatenate
- addresses.
-
- * camel-folder-summary.c
- (camel_folder_summary_info_new_from_header): new function, only
- build the summary info, dont add it.
- (camel_folder_summary_info_new_from_parser): Likewise, for new
- info from parser.
- (camel_folder_summary_add_from_parser): Cahnged to call function
- above to build info.
- (camel_folder_summary_add_from_header): Changed to call function
- above, to build info.
- (camel_folder_summary_info_free): New function to free the summary
- message info.
- (camel_folder_summary_clear): Changed to clal above to free info.
- (camel_folder_summary_remove): Likewise.
- (camel_folder_summary_add): Cleaned up the clashing uid
- re-assignment logic a little bit.
- (camel_folder_summary_decode_uint32): Fixed a typo, 01 != -1.
- (camel_folder_summary_decode_time_t): Return -1 on error.
- (camel_folder_summary_encode_off_t): New function to encode an
- off_t type.
- (camel_folder_summary_decode_off_t): And likewise for the reverse.
- (CAMEL_FOLDER_SUMMARY_VERSION): Bumped the summary version, since
- we're now encoding time/off_t's right.
- (summary_header_save): Use time_t encoder to save the timestamp.
- (summary_header_load): Likewise for decoding the timestamp.
- (content_info_load): Decode off_t types directly, now we can.
- (content_info_save): And likewise for encoding.
- (camel_folder_summary_add_from_message): New function, create a
- summary item from an existing message and add it.
- (camel_folder_summary_info_new_from_message): New function, create
- a summary item from an existing message.
- (summary_build_content_info_message): New function to do the dirty
- work of building the conent info/indexing, from a message source.
- (format_recipients): Format an internetaddress suitable for the
- summary.
- (message_info_new_from_message): Build a new summary item from a
- mime message.
- (content_info_new_from_message): Build a new conent info from a
- mime part.
- (camel_folder_summary_class_init): Init the new class functions.
- (message_info_new_from_message): Fixed for message api change.
-
- Added documentation to the functions.
-
-2000-11-03 Radek Doulik <rodo@helixcode.com>
-
- * camel-mime-utils.c (header_msgid_generate): new function,
- generates simple message/content id
-
-2000-11-04 Not Zed <NotZed@HelixCode.com>
-
- * camel-mime-part-utils.c
- (camel_mime_part_construct_content_from_parser): Set the
- preface/postface from the parser into the multipart object.
-
- * camel-multipart.c (camel_multipart_set_postface): Function to
- set the postface text on a multipart.
- (camel_multipart_set_preface): Similarly for preface text.
-
- * camel-mime-parser.c (folder_scan_content): If we scan until a
- boundary, then we do not include the \n that starts the boundary
- line in the content.
- (struct _header_scan_stack): Added a ByteArray to store the
- multipart pre/post-text as we're scanning.
- (folder_pull_part): Free pre/posttext if they are allocated.
- (folder_scan_step): Build into the pre/posttext arrays as we
- encounter data.
- (camel_mime_parser_preface): REturn the multipart preface text, if
- there is any scanned.
- (camel_mime_parser_postface): Likewise for postface text.
- (byte_array_to_string): helper function for above.
-
- * providers/mbox/camel-mbox-folder.c (mbox_append_message): Change
- the from line to be "\nFrom ..." always, so no need to
- check/append a \n to messages.
- (mbox_append_message): Open the output stream with append mode
- [assuming this is more efficient than seeking to the end]
- And dont prepend \n on the From line if its the first in the
- mbox.
- (mbox_append_message): Pass the offset of the real start of the
- "From " line when we perform the update (which may != 'seek')
-
- * camel-mime-filter-charset.c (complete): Removed the terminating
- NUL 'fix'.
-
- * camel-stream-filter.c (do_read): Added some debug.
- (do_flush): And here.
- (do_write): And here too.
- (do_write): ARGH!!! ARGH! Ok, so the filter stream was writing a
- different number of bytes than the requester was asking it to
- write (because of filtering, of course!). So instead of returning
- the true number of written bytes, we'll return what they asked us
- to write - unless there is an error in which case we return -1.
-
- * camel-mime-utils.c (base64_encode_close): Sigh, forgot to make
- it unsigned. I think this is actually a gcc bug as (48 >> 2)
- somehow ended up negative, when it obviously should not, even if
- the data load was signed.
-
-2000-11-03 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-url.c: Undo my incorrect fix - I misunderstood danw -
- sorry!
-
-2000-11-03 Dan Winship <danw@helixcode.com>
-
- * providers/pop3/camel-pop3-store.c (camel_pop3_store_expunge):
- Unbreak this.
-
-2000-11-03 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-url.c (camel_url_to_string): If show_pass, then base64 the
- password before writing it to the output string.
- (camel_url_new): Assume password has been base64 encoded and
- decode accordingly.
-
-2000-11-03 Dan Winship <danw@helixcode.com>
-
- * camel-provider.h: Add an "url_flags" field to CamelProvider.
- Move the CAMEL_SERVICE_URL_* defines here and remove the SERVICE_
- part of the name.
-
- * camel-service.h: Remove CAMEL_SERVICE_URL_* flags and
- service->url_flags field.
-
- * camel-service.c (check_url, get_path): Get URL flags from
- service->provider, update for changed flag names.
-
- * providers/*/camel-*-provider.c: Add URL flags to provider
- structures.
-
- * providers/*/camel-*-{store,transport}.c, camel-remote-store.c:
- Remove service->url_flags initialization.
-
-2000-11-02 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c (get_folder_info): Quote
- foldernames when sending to the IMAP server because the folder
- name might contain spaces.
-
-2000-11-02 Not Zed <NotZed@HelixCode.com>
-
- * Merged in camel-incremental-branch.
-
-2000-11-01 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-store.c (get_folder_info): Remove old
- subbed folders from hash table after freeing them.
-
- * providers/imap/camel-imap-folder.c (imap_get_full_name): Deal
- correctly with namespace == ""
-
-2000-11-01 Gediminas Paulauskas <menesis@delfi.lt>
-
- * camel-charset-map.c, camel-charset-map-private.h: synced all charsets
- with ones found in libunicode. Just include more "iso/*.h" and rebuild
- ...private.h with this.
-
-2000-10-31 Dan Winship <danw@helixcode.com>
-
- * camel-service.c (service_disconnect): Add a new argument, clean,
- that says whether or not to try to disconnect cleanly.
-
- * camel-remote-store.c (remote_send_string, remote_send_stream,
- remote_recv_line): disconnect uncleanly on failure to prevent
- infinite loops when providers would normally send commands from
- disconnect(). Remove some unneeded CamelException goo.
-
- * providers/smtp/camel-smtp-transport.c (smtp_disconnect):
- * providers/pop3/camel-pop3-store.c (pop3_disconnect):
- * providers/nntp/camel-nntp-store.c (nntp_store_disconnect):
- * providers/imap/camel-imap-store.c (imap_disconnect): Don't send
- QUIT/LOGOUT if !clean.
-
-2000-10-30 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-auth.c: New file with code for IMAP
- authentication mechanisms. (Currently just krb4, and without
- integrity/privacy protection).
-
- * providers/imap/Makefile.am: Add camel-imap-auth.[ch] and krb4
- CFLAGS/LDFLAGS
-
- * providers/imap/camel-imap-store.c (connect_to_server): Split out
- from imap_connect. Just does the basic connect and CAPABILITY
- check. Redo the CAPABILITY code more robustly.
- (query_auth_types_connected): Do this right rather than punting to
- query_auth_types_generic. Check for KERBEROS_V4 if compiled with
- krb4 support.
- (query_auth_types_generic): Mention KERBEROS_V4 if compiled with
- krb4 support.
- (imap_connect): Use connect_to_server().
-
- * camel-mime-utils.c (base64_encode_step, base64_encode_close):
- Take an additional argument, "break_lines", saying whether or not
- to add '\n's to the output.
-
- * camel-multipart.c (set_boundary):
- * camel-mime-filter-basic.c (filter, complete): Update for base64
- api change.
-
-2000-10-30 Peter Williams <peterw@helixcode.com>
-
- * providers/imap/camel-imap-store.c (unsubscribe_folder): Correct
- parameters to g_hash_table_lookup_extended.
-
-2000-10-29 Dan Winship <danw@helixcode.com>
-
- Improved IMAP namespace handling: leave the namespace in the
- folder names rather than constantly prepending it and stripping it
- off. Also some subscription fixes.
-
- * camel-store.c (camel_folder_info_build): Fix for the case where
- @top isn't in @folders.
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Add
- a "short_name" argument rather than figuring it out ourselves.
- (imap_get_full_name): Implementation of CamelFolder::get_full_name
- that strips off namespace so the user doesn't have to see it.
- (imap_append_message, imap_copy_message_to, imap_move_message_to):
- Use folder->full_name rather than calling
- camel_imap_store_get_folder_path.
-
- * providers/imap/camel-imap-utils.c (imap_parse_list_response):
- Update this: make @flags a bitmask and @sep a char rather than a
- string. Make all of the out arguments optional. Handle literals in
- the server response.
-
- * providers/imap/camel-imap-store.c (imap_connect): Do a better
- job of getting the correct dir_sep for the namespace we're using.
- Construct a base_url here that will be used by get_folder_info.
- (camel_imap_store_folder_path): Removed
- (imap_folder_exists): Add an argument to return the short name of
- the folder (parsed out of the LIST response). Update for
- imap_parse_list_response change.
- (get_folder): Update for the various other changes.
- (get_folder_info): Update for the various other changes. Be more
- consistent about the returned layout: put everything underneath
- the "namespace" directory, including INBOX, even if it doesn't
- belong there. Don't destroy the list of subscribed folders until
- we've actually gotten the new list.
- (folder_subscribed, subscribe_folder, unsubscribe_folder): Use
- folder_name directly rather than camel_imap_store_folder_Path.
-
- * providers/imap/camel-imap-command.c (camel_imap_command): Update
- for folder name changes.
-
-2000-10-29 Dan Winship <danw@helixcode.com>
-
- * camel.h: Remove md5-utils.h include since it's not part of Camel
- any more.
-
- * camel-charset-map.c: Kill some warnings.
-
- * providers/nntp/camel-nntp-grouplist.c
- (camel_nntp_get_grouplist_from_file, camel_nntp_grouplist_save):
- Clean up warnings about time_t casts.
-
- * providers/smtp/camel-smtp-transport.c: Remove unused md5-utils.h
- include.
-
- * providers/pop3/camel-pop3-store.c: Undefine the "_" macro
- defined by krb4's des.h when compiling with krb support.
- Fix md5-utils.h include.
-
-2000-10-27 Dan Winship <danw@helixcode.com>
-
- * camel-mime-utils.c (header_param_list_format_append): Only quote
- Content-type parameters when the quoting is mandatory, and deal
- with embedded quotes/backslashes when quoting.
-
-2000-10-27 <jpr@helixcode.com>
-
- * providers/pop3/Makefile.am: Tidy up build
-
- * providers/smtp/Makefile.am: ditto
-
- * Makefile.am: Move md5-utils.[hc] to e-util because the
- addressbook is going to use md5 hashes for pilot syncing.
- Maybe the calendar conduits as well because this is a good idea
- Chris had.
-
-2000-10-26 Kjartan Maraas <kmaraas@gnome.org>
-
- * camel-exceptions-list.def: Add newline to kill warnings.
-
-2000-10-25 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-store.c (get_folder_info): Fix folder
- listing code infinite loop.
-
- * camel-store.h: Add a "parent" field to CamelFolderInfo.
-
- * camel-store.c (camel_folder_info_build): Deal with "parent"
- (camel_store_folder_subscribed, camel_store_subscribe_folder,
- camel_store_unsubscribe_folder): Add g_return_if_fails checking
- that the folder supports subscriptions.
-
- * providers/imap/camel-imap-store.c (folder_subscribed,
- subscribe_folder, unsubscribe_folder): Remove "+ 1"s since the
- mail subscribe UI won't prepend / to the folder names now.
- (get_folder_info): Clear the "parent" field of the folderinfos
- when removing an empty top level.
-
- * providers/nntp/camel-nntp-store.c (nntp_store_folder_subscribed,
- nntp_store_subscribe_folder, nntp_store_unsubscribe_folder):
- Remove "+ 1"s since the mail subscribe UI won't prepend / to the
- folder names now.
-
-2000-10-24 Chris Toshok <toshok@helixcode.com>
-
- * providers/imap/camel-imap-store.h: add subscribed_folders.
-
- * providers/imap/camel-imap-store.c (camel_imap_store_class_init):
- fill in vtable entries for subscription functions.
- (camel_imap_store_finalize): new function, so we can free up our
- subscribed_folders hashtable.
- (camel_imap_store_init): set CAMEL_STORE_SUBSCRIPTIONS in the
- CamelStore flags, and create our subscribed_folders hashtable.
- (camel_imap_store_get_type): camel_imap_store_finalize is our
- finalize function.
- (get_folder_info): if we're looking at subscribed_only, clear out
- the subscribed_folders hashtable, use LSUB instead of LIST, and
- insert folder paths (prepended by their namespace if there is one)
- into subscribed_folders. INBOX subscription support needs work,
- since we always show it, regardless of it's subscribed state.
- (folder_subscribed): new function. just look up the folder_path
- in the hashtable.
- (subscribe_folder): new function. use the imap SUBSCRIBE command,
- and if successful add it to the hashtable.
- (unsubscribe_folder): new function. use the imap UNSUBSCRIBE
- command, and if successful remove it from the hashtable.
-
-2000-10-24 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-store.c (get_folder_info): Fill in the
- message_count and unread_message_count flags (if !fast).
-
-2000-10-23 Dan Winship <danw@helixcode.com>
-
- * camel-object.h: #include gnome-i18n.h (and gnome-defs.h since
- the former depends on it.)
-
- * *: Add lots of _() and N_().
-
-2000-10-23 Chris Toshok <toshok@helixcode.com>
-
- * providers/nntp/Makefile.am (libcamelnntpinclude_HEADERS): add
- camel-nntp-types.h.
-
-2000-10-23 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-command.c (imap_read_untagged): Fix a
- "how could this have been working before" memory overrun bug
- found by Vlad.
-
- * camel-op-queue.[ch], camel-thread-proxy.[ch]: These should have
- gone away a long time ago.
-
-2000-10-20 Chris Toshok <toshok@helixcode.com>
-
- * providers/Makefile.am (SUBDIRS): re-enable the nntp provider.
-
-2000-10-20 Chris Toshok <toshok@helixcode.com>
-
- * providers/nntp/camel-nntp-store.c (build_folder_info): add
- function to build a tree from the nntp group names (using '.' as a
- heirarchy separator.) #ifdefed INFO_AS_TREE only.
- (build_folder_info_from_grouplist): if INFO_AS_TREE is selected,
- call build_folder_info instead of appending a new CamelFolderInfo
- to our list.
- (ensure_news_dir_exists): use e_mkdir_hier instead of failing if a
- parent directory (~/evolution/news generally) isn't there.
-
-2000-10-19 Chris Toshok <toshok@helixcode.com>
-
- * camel-folder-search.c: #include <sys/types.h> before <regex.h>
-
-2000-10-19 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-utils.c (imap_parse_list_response):
- Fix a bug with "INBOX" (or anything else with NIL hierarchy
- separator) as the namespace.
-
- * providers/imap/camel-imap-folder.c (imap_refresh_info): Emit
- message_changed and folder_changed as appropriate.
-
-2000-10-19 Dan Winship <danw@helixcode.com>
-
- * camel-folder.c (camel_folder_refresh_info): Update comment here
- so refresh_info isn't just for reconnects any more. Make the
- default implementation a no-op rather than an error.
-
- * providers/nntp/camel-nntp-folder.c: Move refresh_info impl into
- camel_nntp_folder_new, since it would have leaked memory and not
- done anything useful if it was called later.
-
- * providers/mbox/camel-mbox-folder.c: Remove no-longer-necessary
- refresh_info impl.
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
- Update imap_folder->exists, but don't actually load the new
- messages. This is a temporary workaround to deal with the IMAP
- provider stealing the message list focus at annoying times.
- (imap_copy_message_to, imap_move_message_to): Emit a
- folder_changed by hand, for now.
-
-2000-10-19 Ettore Perazzoli <ettore@helixcode.com>
-
- * providers/imap/Makefile.am (libcamelimapinclude_HEADERS): Add
- `camel-imap-stream.h'.
-
- * Makefile.am (libcamelinclude_HEADERS): Add `camel-charset-map.h'
- and `camel-charset-map-private.h'.
-
-2000-10-18 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-mime-part.c (camel_mime_part_set_description): The correct
- fix this time - the description should be encoded here and not in
- the camel-medium layer.
-
-2000-10-30 Not Zed <NotZed@HelixCode.com>
-
- * camel-folder.c (camel_folder_change_info_add_update): Fixed the
- changeset logic, which was completely wrong.
-
-2000-10-27 Not Zed <NotZed@HelixCode.com>
-
- * camel-mime-utils.c (quoted_encode_step): Removed is_blank() stuff.
- (header_decode_init): When we set the 'space' bit, dont clear all
- the others.
- (quoted_encode): Put back the safemask. Yes we totally need it,
- see rfc 2047 section 5, parts (1) and (3).
- (CHARS_PSPECIAL): Remove '=' and '_' from the list of allowed
- characters (this is an allowed list, not a not-allowed list, like
- the ESPECIAL).
- (camel_mime_special_table): Updated for fixes to definitions.
- (CHARS_ESPECIAL): Added '_' to list of characters that should be
- encoded.
-
-2000-10-26 Not Zed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_update):
- Use the new camel_folder_change_info_* stuff to build the update
- diff, rather than doing it ourselves.
-
- * camel-folder.c (camel_folder_change_info_add_source): Add a
- 'source' list, used to create change lists.
- (camel_folder_change_info_add_source_list): Add a list of uid's,
- convenience function.
- (camel_folder_change_info_add_update): Add a uid to the list of
- uid's in the new updated list.
- (camel_folder_change_info_add_update_list): Add a bunch of uid's
- at once for the same purpose.
- (camel_folder_change_info_build_diff): Take the source list, the
- update list, and find the differences, building on the added or
- removed list as appropriate.
-
-2000-10-20 Not Zed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-summary.c (removed_uids): REnamed from
- add_uid.
- (camel_mbox_summary_update): Oops, fix the reversed logic for
- determining the uid changesets.
-
- * camel-folder.c (message_changed): Oops, we want to change the
- uid, not add it.
-
-2000-10-19 Not Zed <NotZed@HelixCode.com>
-
- * providers/mh/camel-mh-summary.c (camel_mh_summary_sync): Added a
- change list argument, and add expunged uid's to it.
-
- * providers/mh/camel-mh-folder.c (mh_init): Setup the change list.
- (mh_finalize): And free it.
- (mh_sync): Track changes, and send a folder_changed signal as
- appropriate.
- (mh_expunge): Likewise.
- (mh_append_message): Add the new uid to the change list and
- trigger a folder_changed event.
-
- * providers/mbox/camel-mbox-folder.c (camel_mbox_folder_new):
- Setup a mbox list of changes structure.
- (mbox_finalize): And free it.
- (mbox_expunge): Include the change list with the folder_changed
- event, and clear it off.
- (mbox_sync): And the same for when we are just syncing the folder.
- (mbox_append_message): And do the same here, after we've updated
- the folder.
-
- * providers/mbox/camel-mbox-summary.c
- (camel_mbox_summary_build_from): Use gmtime_r to get the time
- thread-safely.
- (camel_mbox_summary_sync): Added a changeinfo argument. Add any
- removed or changed messages to the changelists as appropriate.
- (camel_mbox_summary_update): Added a changeinfo argument.
- Genereate a list of added/removed uid's based on the difference
- before and after rebuilding the summary.
-
- * camel-folder.c (camel_folder_change_info_new):
- (camel_folder_change_info_add_uid):
- (change_info_add_uid):
- (camel_folder_change_info_remove_uid):
- (camel_folder_change_info_change_uid):
- (change_info_clear):
- (camel_folder_change_info_clear):
- (camel_folder_change_info_free):
- (change_info_cat):
- (camel_folder_change_info_cat): Bunch of utility functions for
- working with change info lists.
- (camel_folder_init): Init the change info list.
- (camel_folder_finalize): And free it.
- (thaw): Changed to pass through a list of changes, or to get the
- changed message uids from the camelfolderchangeinfo struct, and
- reset it.
- (folder_changed): Add the changed lists to the frozen change list
- if we are frozen.
- (message_changed): Add the message to the changed list if we are
- in the frozen state.
-
- * camel-folder.h (CamelFolderChangeInfo): New structure to hold
- information for the folder_changed event.
-
-2000-10-18 Ettore Perazzoli <ettore@helixcode.com>
-
- * camel-mime-filter-charset.c (complete): Put a zero at the start
- of the outbuf.
-
-2000-10-18 Not Zed <NotZed@HelixCode.com>
-
- * camel-mime-part.c (add_header): No, we must not encode the
- headers here. These interfaces ARE raw interfaces as they are
- defined in camel_medium. Also removed a bogus/meaningless FIXME.
- (set_header): Likewise here, we must not.
- (process_header): Removed another bogus comment.
-
- * camel-object.c (shared_is_of_type): Comment out the spitting of
- a big warning when we're trying to determine types from code.
-
- * providers/mbox/camel-mbox-summary.c
- (message_info_new_from_parser): Only call ibex funcitons if we
- have an index.
-
- * providers/mh/camel-mh-summary.c (camel_mh_summary_add): Only
- call ibex functions if we have an index.
- (remove_summary): Likewise.
- (camel_mh_summary_check): Likewise.
-
- * providers/nntp/camel-nntp-store.c (nntp_store_get_folder):
- get_folder -> flags argument.
-
- * providers/vee/camel-vee-store.c (vee_get_folder): create->flags.
-
- * providers/pop3/camel-pop3-store.c (get_folder): Changed create
- -> flags.
-
- * providers/imap/camel-imap-store.c (get_folder): Added flags
- argument.
-
- * providers/mh/camel-mh-folder.c (camel_mh_folder_new): Added
- flags argument, and fixed code appropriately.
-
- * providers/mh/camel-mh-store.c (get_folder): Added flags argument.
-
- * camel-folder-search.c (message_body_contains): Perform a regex
- match on the contents of messages. This wont quite work yet as
- message contents are encoded when written to a stream.
- (build_match_regex): Converts a number of strings into a regex
- matching pattern, escaping special chars.
- (match_message): match a single message from a folder, by uid.
- Slow.
- (search_body_contains): Changed to support matching where no index
- is supplied. Matches are performed by retrieving message
- contents, etc.
- () WTF? camel should not be including any widget headers.
-
- * providers/mbox/camel-mbox-folder.c (camel_mbox_folder_new):
- Added flags argument.
- (mbox_refresh_info): Changed into a NOP, the refresh info code
- moved into the new function.
- (camel_mbox_folder_new): If we have an index requested, build one,
- otherwise, remove an old one, or just dont do anything.
-
- * providers/mbox/camel-mbox-store.c (get_folder): Changed create
- to flags, changed code to suit.
-
- * camel-store.c (camel_store_get_folder): Changed create to flags.
- (get_folder_internal): And here.
- (get_folder): And here too.
-
- * camel-store.h (camel_store_get_folder): Change the create
- argument to be a flags argument.
-
-2000-10-17 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_refresh_info): Remove
- cached info at the end of the summary when the folder shrinks
- between sessions. Also remove an untrue comment.
- (camel_imap_folder_new): Move the summary creation to after the
- folder selection again, since it depends on the uidvalidity
- having been set.
-
- * providers/imap/camel-imap-store.c (get_folder): Fix up
- summary_file to not include the namespace twice.
-
-2000-10-17 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-mime-part.c (set_header): Encode the header value.
- (add_header): Same.
-
-2000-10-17 Not Zed <NotZed@HelixCode.com>
-
- * camel-mime-filter.c: Added some malloc check debugging stuff.
-
- * camel-mime-parser.c
- (struct _header_scan_state): Removed top_part, top_start, and
- pending. I can't even remember why they were there, and they're
- not used anymore.
-
- * camel-mime-filter-basic.c (filter): Forgot to up the space here
- too.
-
-2000-10-14 Not Zed <NotZed@HelixCode.com>
-
- * camel-mime-filter-basic.c (complete): Ok, so we hit a fixme, 3x
- just wasn't enough for some sequences.
-
-2000-10-16 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-command.c
- (imap_read_response): Don't imap_next_word(respbuf + 2), instead
- use imap_next_word(respbuf) or else we'll skip over the second
- token.
-
-2000-10-16 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-command.c
- (camel_imap_response_extract): Don't free 'resp' as it doesn't
- point to the beginning of the allocated data, instead free
- response->untagged->pdata[i]. Also, if '*resp' is equal to a space
- character, then set resp = imap_next_word (resp) rather than
- expecting resp++ to work (there's a list broken IMAP daemons that
- like to put extra spaces between tokens).
- (imap_read_response): Don't expect 'respbuf+2' to be where the
- untagged number response to start (see above fix for an
- explanation).
-
-2000-10-16 Chris Toshok <toshok@helixcode.com>
-
- * camel-service.c (get_path): when using the construct (flags &
- CAMEL_SERVICE_URL_NEED_*) make sure to do ((flags &
- CAMEL_SERVICE_URL_NEED_*) == CAMEL_SERVICE_URL_NEED_*)
- (check_url): same.
-
-2000-10-16 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c (imap_disconnect): Only send
- the LOGOUT command if the store is connected.
- (imap_connect): Set the 'connected' state to TRUE when we
- successfully connect.
- (get_folder_info): if (!topfi), 'topfi' was allocated but then
- 'fi' was set. I think Dan meant to set topfi since fi is an
- uninitialized value at this point.
-
- * providers/imap/camel-imap-command.c (imap_read_response): Check
- for the untagged BYE response and set the 'connected' state to
- FALSE if we receive the BYE response. Return NULL if we get a BYE
- response.
-
-2000-10-16 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-store.c (get_folder_info): Deal with
- the possibility of not getting a LIST response back for the top
- level.
-
-2000-10-12 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-summary.c: Simple subclass of
- CamelFolderSummary that also keeps a UIDVALIDITY value (and
- doesn't, for the moment, build content info).
-
- * providers/imap/camel-imap-folder.c:
- (various): Use a CamelImapSummary to store/fetch summary info.
- (camel_imap_folder_new): Take a path to a file to use for the
- summary. Set the folder's permanent_flags correctly according to
- the server response. Read in the summary (checking the
- UIDVALIDITY) and update it if it's out of date.
- (imap_refresh_info): Just fetch UIDs and flags. If the UIDs all
- match, update the flags as needed and be done with it. Otherwise,
- delete messages that have been expunged from the server and fetch
- full summary info for any new messages.
- (imap_sync): Save the summary to disk.
- (imap_update_summary): Renamed from imap_get_summary_internal. Can
- now be told to get summary for only a subset of messages. Use
- camel-mime-utils functions rather than rolling our own header
- parsing.
- (imap_get_message_info_internal): Merged into imap_update_summary.
- (imap_set_message_flags): Don't marked the message FOLDER_FLAGGED
- if we're not actually changing the value of any of the flags.
- (camel_imap_folder_changed): Deal with EXISTS rather than RECENT.
-
- * providers/imap/camel-imap-store.c (imap_connect): Call
- camel_session_get_storage_path and save the value.
- (get_folder): Create a local directory to store summary
- information and pass a summary file name to camel_imap_folder_new.
- Don't call camel_folder_refresh_info from here any more since
- camel_imap_folder_new does it again.
-
- * providers/imap/camel-imap-command.c (camel_imap_command): Add a
- special case to this to make it possible to get the repsonses from
- a SELECT and still have store->current_folder be updated
- correctly.
- (imap_read_response): parse EXISTS rather than RECENT
-
- * camel-session.c (camel_session_get_storage_path): Use
- e_mkdir_hier.
-
- * camel-folder-summary.c (camel_folder_summary_remove_index): New
- function.
-
- * camel-mime-utils.c (header_raw_append_parse): fix this.
- (camel-mime-parser.c doesn't use this code because of the MEMPOOL
- optimization, so nothing was ever actually calling it before.)
-
-2000-10-11 Not Zed <NotZed@HelixCode.com>
-
- * camel-mime-part.h (struct _CamelMimePart): Removed
- temp_message_buffer, and content_input_stream fields which seem to
- have come from nowhere, and are unused.
-
- * camel-mime-utils.c: Added a note about touching this file.
- Nobody is to touch it without asking me first. That goes for you
- too Jeff.
- (header_decode_text): In what way is this broken?
-
-2000-10-10 Not Zed <NotZed@HelixCode.com>
-
- * providers/imap/camel-imap-folder.c (imap_get_summary_internal):
- Fix camel_summary_* function rename
- (imap_get_message_info_internal): Likewise.
-
- * camel-mime-parser.c (camel_mime_parser_finalise): Fixed a spelling mistake.
-
- * camel-folder-summary.c (camel_summary_format_address): Uh, why
- do we encode and then decode here ... sigh. This is not the way
- to fix this.
- (camel_folder_summary_format_address): Renamed to a proper name,
- this was only supposed to be a private function.
- (camel_folder_summary_format_string): Likewise. Oh i see why it
- was made public, code reuse by cut & paste. Joy.
-
-2000-10-11 Chris Toshok <toshok@helixcode.com>
-
- * providers/nntp/camel-nntp-store.c (nntp_store_unsubscribe_folder): remove the leading '/'.
- (nntp_store_subscribe_folder): same.
- (nntp_store_folder_subscribed): same.
-
-2000-10-11 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_move_message_to): Quote
- the mailbox name as it may contain spaces.
- (imap_copy_message_to): Same.
-
-2000-10-10 Chris Toshok <toshok@helixcode.com>
-
- * providers/nntp/camel-nntp-store.c
- (build_folder_info_from_grouplist): fill in message_count and
- unread_message_count properly.
-
- * providers/nntp/camel-nntp-newsrc.h: reformat.
-
- * providers/nntp/camel-nntp-grouplist.c
- (camel_nntp_get_grouplist_from_file): remove spew.
-
- * providers/nntp/camel-nntp-newsrc.c
- (camel_nntp_newsrc_group_get_num_articles_read): new function.
- (camel_nntp_newsrc_group_get_highest_article_read): robustification.
-
-2000-10-10 Joe Shaw <joe@helixcode.com>
-
- * providers/imap/camel-imap-store.c
- (parse_list_response_as_folder_info): Check before dereferencing the
- sep pointer.
-
-2000-10-10 Jacob "Ulysses" Berkman <jacob@helixcode.com>
-
- * camel-*.c: teach camel about "its" vs. "it's"
-
-2000-10-09 Chris Toshok <toshok@helixcode.com>
-
- * providers/nntp/camel-nntp-store.c (finalize): write out the
- newsrc.
- (nntp_store_get_name): if @brief, just return host.
-
- * providers/nntp/camel-nntp-newsrc.c: robustification and bug
- fixes.
-
-2000-10-06 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-folder-summary.c (camel_summary_format_address): Decode
- the resulting string.
-
-2000-10-06 Chris Toshok <toshok@helixcode.com>
-
- * providers/nntp/camel-nntp-grouplist.c: new file.
-
- * providers/nntp/camel-nntp-grouplist.h: new file.
-
- * providers/nntp/camel-nntp-types.h: new file.
-
-2000-10-06 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-mime-utils.c (quoted_encode): Fix so that we don't encode
- every single char in the word. Also, do we need a safemask? I
- don't see why we would.
- (header_encode_string): Don't strip off the last char!!
-
-2000-10-06 Chris Toshok <toshok@helixcode.com>
-
- * providers/nntp/Makefile.am (libcamelnntpinclude_HEADERS): add
- camel-nntp-grouplist.h
- (libcamelnntp_la_SOURCES): add camel-nntp-grouplist.c
-
- * providers/nntp/camel-nntp-provider.c: add our own hash functions
- for nntp urls.
-
- * providers/nntp/camel-nntp-newsrc.c
- (camel_nntp_newsrc_group_is_subscribed): new function.
- (camel_nntp_newsrc_subscribe_group): new function.
- (camel_nntp_newsrc_unsubscribe_group): new function.
-
- * providers/nntp/camel-nntp-newsrc.h: add prototypes for
- _group_is_subscribed, _subscribe_group, and _unsubscribe_group.
-
- * providers/nntp/camel-nntp-store.c
- (build_folder_info_from_grouplist): new function.
- (nntp_store_get_folder_info): add subscribed_only_parameter. if
- it's FALSE, load the grouplist and call
- build_folder_info_from_grouplist.
- (nntp_store_folder_subscribed): implement.
- (nntp_store_subscribe_folder): implement.
- (nntp_store_unsubscribe_folder): implement.
- (camel_nntp_store_init): add CAMEL_STORE_SUBSCRIPTIONS to the
- store's flags.
-
- * providers/mh/camel-mh-store.c (get_folder_info): add
- subscribed_only parameter.
-
- * providers/mbox/camel-mbox-store.c (get_folder_info): add
- subscribed_only parameter.
-
- * providers/imap/camel-imap-store.c (get_folder_info): add
- subscribed_only parameter.
-
- * camel-store.c (camel_store_supports_subscriptions): new function.
- (camel_store_folder_subscribed): new function.
- (camel_store_subscribe_folder): new function.
- (camel_store_unsubscribe_folder): new function.
-
- * camel-store.h: add prototypes and virtual functions for the
- subscribe implementation. also, add a subscribed_only argument to
- camel_store_get_folder_info.
-
-2000-10-05 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-mime-utils.c (header_address_list_format_append): Encode
- the name part of the address and don't quote the name.
- (header_decode_text): Rewrote from scratch, the old code was badly
- broken.
-
-2000-10-05 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-mime-message.c (camel_mime_message_set_reply_to): Use the
- camel_address_encode function again.
- (camel_mime_message_set_from): Same.
-
-2000-10-05 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-mime-utils.c (quoted_encode_step): Modified to not encode
- space chars in the middle of a line.
- (isblank): New macro if we're not on a system with the GNU isblank
- extension.
-
- * camel-mime-message.c (camel_mime_message_set_from): Reversed my
- changes, don't header_encode_phrase - it generates broken headers.
- (camel_mime_message_set_reply_to): Same.
-
-2000-10-04 Chris Toshok <toshok@helixcode.com>
-
- * providers/nntp/camel-nntp-utils.c (camel_nntp_get_headers):
- revert to old method (only use XOVER if OVER is supported.)
-
- * providers/nntp/camel-nntp-store.c
- (camel_nntp_store_get_overview_fmt): handle the case where the
- OVER extension isn't listed but LIST OVERVIEW.FMT works (again,
- INN 2.2). enable the OVER extension in this case.
-
-2000-10-04 Chris Toshok <toshok@helixcode.com>
-
- * providers/nntp/camel-nntp-utils.c (get_XOVER_headers): return a
- gboolean so we can tell if this command worked. we can't key off
- the OVER extension being present because at least one server (INN
- 2.2) doesn't report the OVER extension but implements the XOVER
- command. This could of course just be because I'm a loser for
- thinking they were related in the first place.
- (camel_nntp_get_headers): always try XOVER first, and if it fails
- revert to the slow method.
-
-2000-10-04 Dan Winship <danw@helixcode.com>
-
- * providers/mbox/camel-mbox-store.c (get_folder): Fix a case where
- a variable was free'd and then possibly used in an error message.
-
-2000-10-04 Chris Toshok <toshok@helixcode.com>
-
- * providers/nntp/camel-nntp-provider.c
- (camel_provider_module_init): news: -> nntp:.
-
-2000-10-04 Chris Toshok <toshok@helixcode.com>
-
- * providers/nntp/camel-nntp-store.c (nntp_store_get_folder_info):
- use "nntp:" instead of "news:" since "news:" urls aren't supposed
- to have host/user/port info in them. also, if there's a user
- defined in the url, put it in the urls for our folders.
-
-2000-10-04 Chris Toshok <toshok@helixcode.com>
-
- * providers/nntp/camel-nntp-auth.c (camel_nntp_auth_authenticate):
- borrow some code from the imap provider to query the user for
- their password, and pass the user/passwd to nntp. be extra
- paranoid and zero out the password before freeing it.
-
- * providers/nntp/camel-nntp-store.c (camel_nntp_store_init): add
- ALLOW_USER/ALLOW_PASSWORD/ALLOW_AUTH to the url flags.
- (nntp_store_query_auth_types_generic): return our list of
- auth_types.
- (nntp_store_query_auth_types_connected): broken, return same as in
- query_auth_types_generic.
-
-2000-10-04 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-store.c (imap_connect): IMAP4
- (pre-rev1) doesn't support the 'LIST "" ""' idiom, so don't use
- it. Just assume the dir_sep is '/'. Shrug.
-
-2000-10-04 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-mime-message.c (camel_mime_message_set_reply_to): Use
- header_encode_phrase instead.
- (camel_mime_message_set_from): Same.
-
-2000-10-04 Not Zed <NotZed@HelixCode.com>
-
- * camel-mime-utils.c (header_content_type_is): Handle the case
- where ct != NULL, but type and subtype are, and also match that
- against text/plain.
-
- * camel-folder-summary.c: Bump summary file version.
- (message_info_save): Save the size from the messageinfo.
- (message_info_load): Load the size from the summary file.
- (message_info_load): Fixed up the time_t saving/loading. There
- was a reason the warning was left there ... obviously nobody could
- read the comment "/* warnings, leave them here */", why do i even
- bother.
- (camel_folder_summary_decode_time_t): Decode a time_t value from
- the summary file.
- (camel_folder_summary_encode_time_t): Encode a time_t value to the
- summary file.
-
-2000-10-03 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-command.c (camel_imap_command): Quote
- the mailbox name when sending a SELECT request otherwise mailboxes
- with spaces in their names will cause problems.
-
- * camel-mime-message.c (camel_mime_message_set_reply_to): encode
- before setting.
- (camel_mime_message_set_from): Same.
-
-2000-10-03 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-command.c: New file containing
- camel_imap_command and friends. Major camel_imap_command rewrite
- to remove duplicated code, make the parsing of literals be
- more safe/correct, deal with RECENT/EXPUNGE responses more
- consistently, and make it possible to implement the AUTHENTICATE
- command.
-
- * providers/imap/camel-imap-utils.c (imap_parse_nstring): New
- function, to parse an IMAP "nstring".
-
- * providers/imap/camel-imap-store.c: Move command stuff to
- camel-imap-command.c. Update for camel_imap_command changes.
-
- * providers/imap/camel-imap-folder.c: Update for
- camel_imap_command changes.
- (imap_append_message): CRLF filter the message before sending it.
-
- * providers/imap/Makefile.am: Add camel-imap-command.[ch], remove
- camel-imap-stream.[ch] for now.
-
-2000-10-02 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-mime-message.c (camel_mime_message_has_8bit_parts): New
- convenience function to determine if there are any 8bit mime parts
- in a mime message.
- (camel_mime_message_encode_8bit_parts): New convenience function
- to recursively reencode all 8bit mime parts to either
- quoted-printable or base64 depending on which would be the best
- encoding for that part.
-
- * providers/smtp/camel-smtp-transport.c (smtp_data): If the mime
- message contains 8bit parts and the server doesn't support 8bit
- transfers, reencode those parts before proceding with the send.
- (smtp_mail): If the mime message contains 8bit parts and the
- server supports the 8BITMIME extension to SMTP, notify the server
- that we'll be sending it 8bit mime parts.
- (_send_to): Find out if the message contains 8bit parts.
-
-2000-10-02 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/smtp/camel-smtp-transport.c (_send_to): Use the
- CamelInternetAddress parser.
- (smtp_get_email_addr_from_text): deprecated.
-
-2000-10-02 Dan Winship <danw@helixcode.com>
-
- * camel-provider.h: Remove default_ports.
-
- * camel-remote-store.c (remote_connect): Get default_port from
- CamelRemoteStore rather than CamelProvider.
-
- * providers/{imap,nntp,pop3}/camel-*-store.c: Initialize
- CamelRemoteStore::default_port
-
- * providers/*/camel-*-provider.c: Remove default_ports.
-
-2000-10-02 Dan Winship <danw@helixcode.com>
-
- * camel-folder.[ch]: Remove
- camel_folder_{get,free}_subfolder_info, as we want to be able to
- scan the whole subfolder tree without having to open any folders,
- so this needs to be in CamelStore. Remove can_hold_folders and
- can_hold_messages flags; things that don't hold messages are no
- longer considered CamelFolders.
-
- * camel-folder-summary.[ch]: Remove CamelFolderInfo stuff.
-
- * camel-store.[ch]: Add camel_store_{get,free}_folder_info, as
- well as camel_store_free_folder_info_full and ..._nop for default
- implementations, and camel_folder_info_free and
- camel_folder_info_build as convenience functions. Turn
- CamelFolderInfo into a tree structure and also add an "url"
- member.
-
- * providers/*/camel-*-folder.c: Remove subfolder_info and can_hold
- stuff.
- * providers/*/camel-*-store.c: Add folder_info stuff.
-
- * providers/imap/camel-imap-folder.c (imap_summary_free): Free the
- summary elements with camel_message_info_free, not
- camel_folder_info_free. Oops.
-
- * providers/imap/camel-imap-utils.c: const poison
-
-2000-09-28 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/smtp/camel-smtp-transport.c: Fixed some memory leaks.
- (camel_smtp_transport_init): Initialize supports_8bit to FALSE.
- (smtp_helo): If server supports 8bit, set supports_8bit to TRUE.
-
- * camel-transport.h (struct _CamelTransport): Added variable
- gboolean supports_8bit (we'll need this eventually? - see bugzilla
- bug #53)
-
- * providers/smtp/camel-smtp-transport.c
- (smtp_get_email_addr_from_text): Ugh, no wonder people were
- getting illegal seek warnings *sigh*. I guess I can only blame
- myself for this one though :-(
-
-2000-09-28 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/smtp/camel-smtp-transport.c (_send_to): Don't send the
- recipient data through smtp_get_email_addr_from_text - this is a
- complete waste. In fact, we don't want to have to use that
- function ever.
-
- * camel-internet-address.c, camel-address.c: Added some gtk-doc
- comments.
-
-2000-09-28 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-mime-utils.c (header_encode_string): Make sure to add the
- space char after an encoded word when the encoding is iso-8859-1.
-
-2000-09-28 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_get_message): When
- getting a literal string response, don't include the \r\n after
- the closing } (as in: "... {798}\r\n...")
-
- * providers/imap/camel-imap-stream.c (stream_read): Same.
-
-2000-09-28 Not Zed <NotZed@HelixCode.com>
-
- * camel-mime-utils.c (header_fold): New function to fold headers.
-
-2000-09-27 Not Zed <NotZed@HelixCode.com>
-
- * camel-mime-parser.c (folder_scan_header): If we had an empty
- header, then it must be end of the headers too.
- (folder_scan_init): No we dont need to init the outbuf with a nul
- terminator.
-
- * camel-folder-summary.c (camel_folder_summary_set_uid): New
- function to reset the uid to a higher value.
-
- * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_sync):
- "something failed (yo!)" what sort of crap is this? Fixed all the
- indenting again, what wanker keeps running stuff through indent?
- (message_info_new): Check the uid we loaded off the disk, if it
- existed already, assign a new one. If it didn't then make sure
- the nextuid is higher.
-
- * camel-charset-map.c: New file, used to build a large unicode
- decoding mapping table, and use it to determine what is the
- lowest charset a given word can be encoded with. Uses tables from
- libunicode's source.
-
- * camel-internet-address.c (internet_encode): Use
- header_phrase_encode to properly encode the fullname, as required.
- refixed indenting. Who keeps doing that?
- (camel_internet_address_find_address): Changed fatal return/warnings
- into assertions.
-
- * camel-mime-utils.c (header_raw_append_parse): Check : explicitly
- (removed from is_fieldname() macro).
- (camel_mime_special_table): Changed to short, so we can represent
- more bit types.
- (quoted_encode): Take a mask of the safe chars for this encoding.
- (header_address_decode): Removed a #warning that makes no sense
- anymore.
- (header_decode_date): Fixed the 'broken date' parser code, if it
- ever decoded it it just threw away the result.
- (header_encode_string): Use better charset matching for encoding
- strings as well.
-
-2000-08-31 Not Zed <NotZed@HelixCode.com>
-
- * providers/mh/camel-mh-summary.c (camel_mh_summary_sync): Save
- the index if we do a sync.
- (camel_mh_summary_check): Save the index here too. Probably.
-
-2000-09-27 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-store.c (camel_imap_command_extended):
- Return untagged data in a GPtrArray rather than a string, since it
- saves processing time and is much easier to deal with for several
- commands. Update for camel_imap_folder_changed change.
- (camel_imap_fetch_command): Update for camel_imap_folder_changed
- change.
- (imap_connect, imap_folder_exists): Update for
- camel_imap_command_extended change.
-
- * providers/imap/camel-imap-folder.c
- (imap_get_message_count_internal,
- imap_get_subfolder_info_internal, imap_search_by_expression):
- Update for camel_imap_command_extended change.
-
- (imap_get_summary_internal, imap_get_message_info_internal): Use
- camel_imap_fetch_command here now to get around the
- camel_imap_command_extended change.
-
- (camel_imap_folder_changed): turn expunged into a GArray of ints
- rather than a GPtrArray of strings representing ints.
-
-2000-09-26 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c
- (imap_get_message_count_internal): Quote the folder name as it may
- contain spaces.
- (imap_get_subfolder_info_internal): Same.
-
- * providers/imap/camel-imap-utils.c (imap_parse_list_response): Do
- proper unquoting for folder names.
- (func_get_current_date): Implemented.
-
- * providers/imap/camel-imap-store.c
- (imap_folder_exists): Quote the folder name as it may have spaces.
- (imap_create): Same.
- (check_current_folder): Same.
-
-2000-09-22 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-folder.c
- (imap_get_subfolder_info_internal): The root folder's name is "",
- not the namespace.
- (camel_imap_folder_new): constify folder_name.
-
- * providers/imap/camel-imap-store.c (get_folder): Create the
- folder with folder_name, not folder_path.
- (camel_imap_command_preliminary): Don't free cmdid here.
-
-2000-09-21 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-utils.c (imap_create_flag_list): New
- function to convert Camel flags to an IMAP flag_list.
- (imap_parse_flag_list): Contrariwise.
-
- * providers/imap/camel-imap-store.c (camel_imap_command_*): Make
- the @ret arg actually optional, as (mostly) documented.
- (various): Don't pass "&result" to camel_imap_command_* if we're
- just going to immediately free it. Don't record status if we're
- not going to look at it.
-
- * providers/imap/camel-imap-folder.c: Likewise.
- (imap_summary_free): Use camel_folder_info_free.
- (imap_sync): Use imap_create_flag_list. Clear
- CAMEL_MESSAGE_FOLDER_FLAGGED after syncing so we don't keep
- re-syncing.
- (imap_append_message): Use imap_create_flag_list. Don't leak the
- memstream if the append fails.
- (imap_move_message_to): Use camel_folder_delete_message rather
- than doing it by hand.
- (imap_get_summary_internal, imap_get_message_info_internal): Use
- imap_parse_flag_list and header_raw_clear.
- (camel_imap_folder_changed): Use camel_message_info_free.
-
-2000-09-21 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-store.c (get_folder_name): INBOX is
- case-insensitive.
- (get_root_folder_name): Make the root folder "" rather than "/".
- (get_folder): Update for root folder name change.
- (camel_imap_store_get_toplevel_dir): Removed. (Unused, unneeded.)
- (camel_imap_store_folder_path): New function to turn a Camel
- folder name into the corresponding namespaced IMAP path.
- (imap_folder_exists): Make this take a store and a path rather
- than a folder.
- (imap_create): Likewise
- (get_folder): Update for camel_imap_store_folder_path and other
- changes.
- (check_current_folder): Likewise.
-
- * providers/imap/camel-imap-folder.c: Change a bunch of CamelStore
- variables to CamelImapStore (and add a few more) to prevent excess
- gratuitous casting. Use camel_imap_store_folder_path where
- appropriate.
- (camel_imap_folder_new): Update for root folder name change.
-
-2000-09-19 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/smtp/camel-smtp-transport.c (smtp_data): Use the
- linewrap filter to achieve full RFC0821 compliance.
-
- * camel-mime-filter-linewrap.[c,h]: New mime-filter to word-wrap.
-
-2000-09-19 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-internet-address.c (internet_encode): When encoding the
- internet address, quote the name as the name may have commas or
- any other token which may later confuse our address parser.
-
-2000-09-19 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-folder.c
- (imap_get_subfolder_info_internal): Fix the case where INBOX
- isn't returned in the folder listing.
-
-2000-09-19 Dan Winship <danw@helixcode.com>
-
- * camel-folder.c: (init): Removed
- (camel_folder_init, camel_folder_construct): New object init
- function and public object constructor to replace the old init
- method in a more Gtk-like fashion.
-
- (get_parent_folder, camel_folder_get_parent_folder): Removed. No
- CamelFolder subclass was ever setting the parent_folder member, no
- code has ever needed to look at it, and fixing it would actually
- be pretty hard.
-
- (get_subfolder_info, camel_folder_get_subfolder_info): Renamed
- from ..._names. Deals in CamelFolderInfo now.
- (free_subfolder_info, camel_folder_free_subfolder_info): Likewise.
-
- (get_subfolder, camel_folder_get_subfolder): Removed.
- CamelFolderInfo contains the subfolder's full name, so this is
- unnecessary now, and removing it lets us get rid of the
- CamelFolder separator member, which is needed for the default
- implementation of this function, but not otherwise needed for most
- providers.
-
- Also, lots of code style fixes.
-
- * providers/*: Update CamelFolder subclasses for changes, although
- none of them fill in the message counts in the CamelFolderInfo
- yet.
-
-2000-09-18 Christopher James Lahey <clahey@helixcode.com>
-
- * camel-folder-search.c, camel-folder-search.h,
- camel-remote-store.c, providers/imap/camel-imap-folder.c,
- providers/imap/camel-imap-store.c: Fixed the #include lines to
- deal properly with gal.
-
-2000-09-17 Dan Winship <danw@helixcode.com>
-
- * camel-folder-summary.h: update CamelFolderInfo
- * camel-folder-summary.c (camel_folder_info_free): New function to
- free the contents of a CamelFolderInfo
-
-2000-09-15 Dan Winship <danw@helixcode.com>
-
- * camel.c (camel_init): Set camel_verbose_debug to TRUE if
- CAMEL_VERBOSE_DEBUG is set in the environment.
-
- * camel-remote-store.c (remote_send_line, remote_recv_line): only
- log if camel_verbose_debug is TRUE.
-
-2000-09-14 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c (get_folder): Don't use
- dir_sep as top-level directory, use "/".
-
- * providers/imap/camel-imap-folder.c (imap_expunge): Get rid of
- unused variable.
-
-2000-09-13 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_expunge): Don't look at
- the response of the command. camel_imap_command_extended()
- processes EXPUNGE responses itself, so if we do it here too we
- remove twice as many summary items as we should.
-
-2000-09-13 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c (imap_folder_exists): Rewrote
- to take a third argument (gboolean *selectable) so that we can
- find out if the folder is selectable or not as we look to see if
- it exists. Also, don't use EXAMINE because that will not work on
- non-selectable folders, so use LIST instead.
- (get_folder): Check to see if the folder exists even vefore
- calling imap_create as this will save time. If the folder does
- exist, find out if it's selectable. Moved the call to refresh_info
- here.
-
- * providers/imap/camel-imap-folder.c (imap_get_uids): Check for a
- NULL summary.
- (camel_imap_folder_new): Don't call refresh_info here - call it in
- get_folder() because we don't know if this folder even exists on
- the server yet! And even if it does, we don't know if it can hold
- messages or not yet.
-
-2000-09-12 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-mime-parser.c (folder_scan_step): Make sure *datalength is
- > 0 before calling camel_mime_filter_filter otherwise we will get
- a segfault if the filter calls iconv().
-
-2000-09-08 Christopher James Lahey <clahey@helixcode.com>
-
- * providers/nntp/camel-nntp-auth.c,
- providers/nntp/camel-nntp-auth.h: Fixed a warning.
-
-2000-09-07 Dan Winship <danw@helixcode.com>
-
- * camel-session.c (camel_session_get_storage_path): Make this not
- leak.
-
-2000-09-07 Dan Winship <danw@helixcode.com>
-
- * camel-session.c (camel_session_new): Make this take a path to a
- directory that Camel can use for its own nefarious purposes.
- (camel_session_get_storage_path): New function to return a path
- that a service can use for its own nefarious sub-purposes.
-
- * camel-service.c (camel_service_get_path): New method (and
- useful default implementation) to get a (relative) pathname
- corresponding to the service.
-
-2000-09-06 Dan Winship <danw@helixcode.com>
-
- * providers/pop3/camel-pop3-store.c (connect_to_server): Make KPOP
- work again.
-
-2000-09-06 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-mime-message.c (camel_mime_message_get_received_date):
- Implemented (someone added these to camel-mime-message.h but never
- implemented them!!) - though it may not be right.
- (camel_mime_message_get_sent_date): Same.
-
-2000-09-05 Dan Winship <danw@helixcode.com>
-
- * camel-mime-part.c (camel_mime_part_get_filename): If a MIME part
- has no Content-Disposition, but does have a "name" on the
- Content-Type, return that as the filename.
- (process_header): strstrip the Content-Description
-
-2000-09-05 Chris Toshok <toshok@helixcode.com>
-
- * providers/nntp/camel-nntp-utils.c (get_OVER_headers): care about
- response code.
- (get_HEAD_headers): same.
- (camel_nntp_get_headers): same.
-
- * providers/nntp/camel-nntp-store.h: get rid of
- CAMEL_NNTP_OK/ERR/FAIL.
-
- * providers/nntp/camel-nntp-store.c
- (camel_nntp_store_get_extensions): take CamelException arg and
- pass along to camel_nntp_command.
- (camel_nntp_store_get_overview_fmt): same.
- (nntp_store_connect): convert to using constants in
- camel-nntp-resp-codes.h
- (nntp_store_get_folder): make use of camel_nntp_folder_new.
- (camel_nntp_command_send_recv): new function to deal with auth
- challenge.
- (camel_nntp_command): split out most of this function into
- camel_nntp_command_send_recv. also, return the actual response
- code instead of CAMEL_NNTP_OK/ERR/FAIL.
-
- * providers/nntp/camel-nntp-resp-codes.h: new file.
-
- * providers/nntp/camel-nntp-folder.h: prototype for
- camel_nntp_folder_new.
-
- * providers/nntp/camel-nntp-folder.c (camel_nntp_folder_new): new
- convenience function.
- (nntp_folder_get_message): care more about the actual response
- code.
-
- * providers/nntp/Makefile.am (libcamelnntp_la_SOURCES): add
- camel-nntp-auth.c.
- (libcamelnntpinclude_HEADERS): add camel-nntp-auth.h.
-
- * providers/nntp/camel-nntp-auth.h: new file.
-
- * providers/nntp/camel-nntp-auth.c: new file.
-
-2000-09-05 Peter Williams <peterw@helixcode.com>
-
- * providers/imap/camel-imap-store.c (imap_folder_exists): Don't free the
- result on error; the exception will have the relevant info.
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Check for
- exceptions here.
-
- * providers/imap/camel-imap-store.c (imap_connect): Check the exception
- on the refresh_folders call.
-
- * providers/imap/camel-imap-store.h: Clean up some now-unused fields.
-
- * camel.c (camel_init): Call unicode_init again, now that libunicode
- will not initialize itself twice.
-
-2000-09-02 Lauris Kaplinski <lauris@helixcode.com>
-
- * camel-folder-search (search_header_contains): Use e_utf8_strstrcase
-
-2000-09-01 Christopher James Lahey <clahey@helixcode.com>
-
- * providers/imap/camel-imap-utils.c: Removed some unused
- functions.
-
-2000-09-01 Peter Williams <peterw@helixcode.com>
-
- * providers/nntp/camel-nntp-store.c (camel_nntp_command): Initialize
- the statically-allocated CamelException so that it doesn't contain
- junk data that camel_exception_set() may try to free.
- (camel_nntp_store_get_extensions): Same.
- (camel_nntp_store_get_overview_fmt): Same.
-
- * providers/pop3/camel-pop3-store.c (camel_pop3_command): Typo
- fix (if (*ret) -> if (ret)).
-
- * providers/pop3/camel-pop3-store.c (pop3_connect): Set the
- port # back to what was specified ASAP, so that the hash of
- the URL doesn't change (which causes a failure in
- service_cache_remove that leads to a segfault).
-
- * providers/imap/camel-imap-store.c (imap_connect): Clear the
- exception after a failed LOGIN so that it doesn't pass through
- to the upper level and make mail think that the login failed.
-
- * providers/pop3/camel-pop3-store.c (pop3_connect): As above.
-
-2000-08-31 Peter Williams <peterw@helixcode.com>
-
- * providers/pop3/camel-pop3-store.c (camel_pop3_store_get_type):
- Implement POP3 with the CamelRemoteStore now.
- (connect_to_server): Hack this a bit to get KPOP to work. Obey
- the new connection semantics of the remote store (implicitly).
- (query_auth_types_connected): Clear exceptions after attempts
- to connect; the code at the bottom will catch hard errors.
- Use camel_service_connect.
- (camel_pop3_command): Take a CamelException; now, when an error
- occurs, ret is set to NULL and the exception passes back the
- appropriate information.
- (pop3_get_response): Same as above.
- (pop3_try_authenticate): Give camel_pop3_command its exception
- and handle it properly.
- (pop3_connect): Call the parent classfuncs. Don't disconnect
- on error (done for us).
-
- * providers/pop3/camel-pop3-folder.c: Obey the camel_pop3_command
- semantics.
-
- * camel-remote-store.c (remote_query_auth_types_connected): Don't
- warn; just return NULL.
- (remote_query_auth_types_generic): Same.
- (remote_send_string): Filter out passwords in debugging output.
-
- * providers/pop3/camel-pop3-store.c (camel_pop3_store_init): Also
- set the ALLOW_AUTH flag.
-
- * providers/imap/camel-imap-store.c (camel_imap_store_init): Same.
-
-2000-08-31 Chris Toshok <toshok@helixcode.com>
-
- * providers/nntp/camel-nntp-store.c (camel_nntp_store_class_init):
- remove get_folder_name.
- (nntp_store_get_folder_name): remove.
-
-2000-08-31 Lauris Kaplinski <lauris@helixcode.com>
-
- * camel-mime-part.c (write_to-stream): Use filter only if we have one
-
-2000-08-31 Chris Toshok <toshok@helixcode.com>
-
- * providers/nntp/camel-nntp-utils.c (get_OVER_headers): use
- camel_remote_store_recv_line.
-
- * providers/nntp/camel-nntp-folder.c (nntp_folder_get_message):
- use camel_remote_store_recv_line to build message. also, free our
- buffer so we don't leak like mad.
-
- * providers/nntp/camel-nntp-store.c:
- (camel_nntp_store_get_additional_data) remove.
- (camel_nntp_store_get_extensions): use
- camel_remote_store_recv_line.
- (camel_nntp_store_get_overview_fmt): same. also, don't rely on
- _get_additional_data anymore since it's easier to parse without.
- (camel_nntp_command): use camel_remote_store_send_string and
- camel_remote_store_recv_line.
-
- * providers/nntp/camel-nntp-store.h: CamelRemoteStore is the
- parent class now. remove istream/ostream since CamelRemoteStore
- takes care of that for us. also remove the prototype for
- camel_nntp_store_get_additional_data.
-
- * providers/nntp/camel-nntp-newsrc.c (camel_nntp_newsrc_write):
- make sure to clear dirty bit.
- (camel_nntp_newsrc_read_for_server): don't worry about continually
- trying to open the file - if it fails we just return an
- unpopulated .newsrc file.
-
-2000-08-31 Chris Toshok <toshok@helixcode.com>
-
- * providers/nntp/camel-nntp-newsrc.c
- (camel_nntp_newsrc_read_for_server): make this a bit more robust.
- try to create an empty .newsrc file for the server if we can't
- open it for reading. also, don't allocate everything until we've
- opened the file.
-
- * providers/nntp/camel-nntp-utils.c (get_OVER_headers): make use
- of our overview field indices.
- (camel_nntp_get_headers): only call get_OVER_headers if the
- extension is present. warn if it's not - since get_HEAD_headers
- needs work before it works.
-
- * providers/nntp/camel-nntp-store.c
- (camel_nntp_store_get_extensions): new function - query the server
- for it's extensions.
- (camel_nntp_store_get_overview_fmt): new function - query the
- server for the overview format and build our table of the indices
- we care about. support the "full" suffix on fields.
- (nntp_store_connect): call camel_nntp_store_get_extensions and
- camel_nntp_store_get_overview_fmt.
-
- * providers/nntp/camel-nntp-store.h: add codes for extensions
- found on news.mozilla.org. only one that we care about is OVER.
- also, add CamelNNTPOverField and an enum of the overview fields
- that we care about.
-
-2000-08-31 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-utils.c (imap_translate_sexp):
- Reimplemented. It should now work correctly for most possible
- VFolder rules.
-
-2000-08-31 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c (camel_imap_command_extended):
- Don't save any exceptions caused by camel_imap_folder_changed
- (camel_imap_fetch_command): Same.
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
- Using a new way of calculating the first recent message that seems
- more accurate. Also added code to make sure we don't accidently
- add a duplicate summary.
-
-2000-08-31 Not Zed <NotZed@HelixCode.com>
-
- * camel-mime-part.c (write_to_stream): Use the proper type
- checking function to check for text types.
- (write_to_stream): If we have a charset on a text type that
- isn't us-ascii or utf-8, then we need to reencode it, so add a
- filter to do that too.
- (write_to_stream): Fix some warnings/use the right constructor,
- oops.
- (write_to_stream): Rearrange the logic so it always does charset
- conversion, and not just if we have a qp/base64 block.
-
- * camel-mime-utils.c (append_latin1): New function - even though
- its broken, we'll assume mailers send latin1 headers instead of
- us-ascii. We just have to encode high chars into utf-8.
- (header_decode_text): Call append_latin1 for appending unencoded
- text segments.
- (append_latin1): Do an additional mask for account for c's
- undefined behaviour for sign extension whilst shifting right.
-
-2000-08-30 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c (camel_imap_fetch_command):
- Rewrote to ignore strings that look like server responses until it
- is sure that it has finished reading the literal string response.
-
-2000-08-30 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-remote-store.c (remote_send_string): Don't wrap printed
- strings in quotes, makes things messy
-
- * providers/imap/camel-imap-folder.c (imap_get_message): Updated
- to use the camel_imap_fetch_command
-
- * providers/imap/camel-imap-stream.c (stream_read): Updated to use
- camel_imap_fetch_command
-
- * providers/imap/camel-imap-store.c (camel_imap_command_extended):
- No longer handles FETCH requests so no longer needs to be
- concerned with checking to make sure that server responses are
- valid (they have to be).
- (camel_imap_fetch_command): New convenience function that handles
- all FETCH requests
-
-2000-08-30 Peter Williams <peterw@helixcode.com>
-
- * camel-remote-store.c (remote_connect): Unify with remote_post_connect.
- (remote_disconnect): Unify with remote_pre_disconnect.
- (camel_remote_store_class_init): Don't use the post_connect and
- pre_disconnect classfuncs anymore ; they weren't especially useful.
-
- * providers/imap/camel-imap-store.c (imap_connect): Use this again
- instead of implementing post_connect.
- (imap_disconnect): Analogous to above.
-
- * camel-session.c (camel_session_get_service_connected): New function.
- Like camel_session_get_service() but also connects to the service
- if needed. camel_session_get_{store,transport} (defined in the header)
- used this now, preventing annoying when-to-connect problems.
-
- * camel-service.c (camel_service_new): Revert to the old behavior
- of not connecting until told to do so. Otherwise doing auth
- testing correctly is really hard.
- (camel_service_connect): Fix behavior here (set the connected
- flag).
- (camel_service_disconnect): Unset the connected flag.
-
-2000-08-30 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c: General cleanup / moving
- stuff around to make things easier to follow.
-
-2000-08-30 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-remote-store.c: Prevent exceptions from being overwritten
-
- * providers/imap/camel-imap-folder.c (imap_expunge): Beautified
- (imap_get_subfolder_names_internal): Removed old code as the
- replacement code has now been tested and proven to work
-
-2000-08-29 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-utils.c: Removed old code that will
- never be needed again
-
- * providers/imap/camel-imap-store.c: Removed old code for
- try_connect - will never need this code
- (slurp_response): Update to make sure we aren't falsely detecting
- EXPUNGE flags
-
-2000-08-29 Peter Williams <peterw@helixcode.com>
-
- * camel-service.c (camel_service_connect): Uncomment this.
- (camel_service_disconnect): Same.
-
- * camel-remote-store.[ch]: New files. Abstract remote storages
- (IMAP, POP3, NNTP) and hides the lower-level networky stuff.
-
- * camel-service.c (camel_service_new): Take an extra argument, the
- provider that created us, cause it's useful.
- (camel_service_finalize): Unref our new provider member.
-
- * camel-session.c (camel_session_get_service): Pass the proper number of
- arguments to camel_service_new().
-
- * camel-imap-store.c: Massive update: 1) use the CamelRemoteService to
- make our life Very Easy (TM). 2) Change the semantics of all
- camel_imap_command* functions to take exceptions, centralize tons of
- duplicate code, and use the handy RemoteStore utility functions
-
- * camel-imap-folder.c: Use the new semantics of camel_imap_command*
-
- * camel-imap-stream.c: Same.
-
-2000-08-29 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c (camel_imap_command_extended):
- Updated to check for EXPUNGE notifications
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
- Updated to account for messages which have been expunged (now
- takes a new arg, a GPtrArray of message id's that have been
- expunged)
- (imap_expunge): Updated (we may want to just use the code in
- folder_changed now instead of doing our own summary
- expunging...but that can be fixed later)
- (imap_append_message): Updated.
- (imap_copy_message_to): Updated.
- (imap_move_message_to): Updated.
-
-2000-08-28 Peter Williams <peterw@helixcode.com>
-
- * camel-folder.c (camel_folder_refresh_info): New member function,
- refresh_info, used for rereading folder state after its state has
- somehow become unknown. Tries to preserve last-known status of
- messages.
-
- * providers/mbox/camel-mbox-folder.c (mbox_refresh_info): Implement
- ::refresh_info (split up ::init)
-
- * providers/mbox/camel-mbox-store.c (get_folder): Call ::refresh_info.
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Call
- ::refresh_info once initialized.
- (imap_refresh_info): New member function; reads the summary from
- the server (used to be in camel_imap_folder_new; split out).
-
- * providers/imap/camel-imap-store.c (imap_connect): Set
- CamelService::connected a little early so that
- camel_imap_command won't try to connect while already
- connnecting.
- (camel_imap_command*): Try to connect if not connected already.
-
- * providers/pop3/camel-pop3-folder.c (pop3_refresh_info): Same as above.
-
- * providers/pop3/camel-pop3-folder.c (camel_pop3_folder_new): Same
- as above.
-
- * providers/pop3/camel-pop3-store.c (pop3_connect): Set
- CamelService::connected a little early so that
- camel_pop3_command won't try to connect while already
- connecting
- (connect_to_server): Same.
-
- * providers/nntp/camel-nntp-folder.c (nntp_folder_refresh_info): Same
- as above.
-
-2000-08-28 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_get_message): Fixed the
- hack around quoted string responses - should now handle them
- according to the specifications in the RFC
-
- * providers/imap/camel-imap-stream.c (stream_read): Updated to
- match the code currently used in camel-imap-folder.c
-
-2000-08-28 Ettore Perazzoli <ettore@helixcode.com>
-
- * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_sync):
- Never ever free `tmpname' as it comes from `alloca()'!
-
-2000-08-26 Ettore Perazzoli <ettore@helixcode.com>
-
- * camel-mime-utils.c (header_decode_text): Use `g_free()', not
- `free()', to free `decword'.
-
-2000-08-25 Peter Williams <peterw@helixcode.com>
-
- * camel.c (camel_init): Don't call unicode_init; code in e-util
- will do it, and if unicode_init is called twice, you get an
- infinite loop when looking up nonexistant encodings (patch
- has been submitted to libunicode's maintainer).
-
- * camel-provider.h: Add a new field, default_ports, which
- helps the configuration code guess about how to make CamelURL's
- from providers.
-
- * providers/*/camel-*-provider.c: Specify default ports.
-
-2000-08-25 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c
- (imap_get_subfolder_names_internal): If the url path is "/" and
- the folder path is "/", just LIST "" "*" (this should fix some
- cyrus imapd problems). Also, INBOX is case insensitive so use
- g_strcasecmp
-
-2000-08-24 Lauris Kaplinski <lauris@helixcode.com>
-
- * camel-folder-summary.c (summary_build_content_info):
- Use UTF-8 as default
- * camel-mime-part-utils.c (simple_data_wrapper_construct_from_parser):
- Use UTF-8 as default
- * camel-mime-utils.c (rfc2047_decode_word): Use UTF-8
-
-2000-08-17 Not Zed <NotZed@HelixCode.com>
-
- * providers/mh/camel-mh-folder.c (mh_finalize): And here too.
-
- * providers/mbox/camel-mbox-folder.c (mbox_finalize): Close index
- on exit.
-
-2000-08-23 Dan Winship <danw@helixcode.com>
-
- * camel-mime-utils.c (header_address_list_format_append): put
- commas between addresses.
-
-2000-08-22 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-folder.c
- (imap_protocol_get_summary_specifier): use BODY.PEEK, not BODY, so
- we don't set the message \Seen.
-
-2000-08-22 Christopher James Lahey <clahey@helixcode.com>
-
- * providers/pop3/camel-pop3-store.c: Fixed a small warning.
-
-2000-08-22 Peter Williams <peterw@helixcode.com>
-
- * camel-service.c (camel_service_new): Connect automatically if the
- URL is not empty.
- (finalize): Disconnect automatically if connected.
- (camel_service_query_auth_types): Split into two functions; one to
- be called if we're connected to an actual server (_connected), one
- to be called if we're just gauging the general authtypes supported
- (_generic).
- (is_connected): Remove.
-
- * camel-store.c (camel_store_get_folder): Don't connect explicitly to
- the service.
-
- * providers/nntp/camel-nntp-store.c (query_auth_types_generic): Split
- the query_auth_types function. Hook it up in _new.
- (finalize): Don't try to disconnect here.
-
- * providers/pop3/camel-pop3-store.c (query_auth_types_generic): Same.
- (finalize): Don't try to disconnect here.
-
- * providers/imap/camel-imap-store.c (query_auth_types_generic): Same.
- (finalize): Don't try to disconnect here.
-
- * providers/smtp/camel-smtp-transport.c (query_auth_types_generic): Split
- the query_auth_types (dummy, in this case) function. Hook it up in _new.
- (finalize): Don't try to disconnect here.
-
-2000-08-21 JP Rosevear <jpr@helixcode.com>
-
- * providers/nntp/camel-nntp-folder.c (nntp_folder_get_subfolder_names):
- Make sure newsrc is not null
- (nntp_folder_get_subfolder_names): ditto
-
- * providers/nntp/camel-nntp-newsrc.c
- (camel_nntp_newsrc_get_subscribed_group_names): Programming check
- for newsrc == NULL
- (camel_nntp_newsrc_get_all_group_names): ditto
- (camel_nntp_newsrc_write_to_file): ditto
- (camel_nntp_newsrc_write): ditto
-
-2000-08-21 JP Rosevear <jpr@helixcode.com>
-
- * providers/nntp/camel-nntp-store.c (camel_nntp_command):
- Make sure respbuffer is not null before manipulating it.
- If it is null, return CAMEL_NNTP_FAIL and a decent error
- message.
-
-2000-08-18 Peter Williams <peterw@helixcode.com>
-
- * camel-internet-address.c (internet_encode): If the name is "" we
- weren't outputting anything; output the address at least.
-
-2000-08-16 Peter Williams <peterw@helixcode.com>
-
- * camel-internet-address.c (internet_encode): Fix a leak when
- name = "". It's a single-byte leak, but it's the little things
- that count.
-
- * camel-object.c (camel_type_lock_up): Don't leave the type
- system locked when a bad unlock happens.
-
- * providers/mbox/camel-mbox-store.c (get_folder): Fix a leak.
-
-2000-08-15 Peter Williams <peterw@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_copy_message_to): Typo fix.
-
-2000-08-14 Peter Williams <peterw@helixcode.com>
-
- * camel-folder-search.c (search_get_sent_date): New search function;
- returns the time_t when the message was sent.
- (search_get_receive_date): Same for when it was received.
- (search_get_current_date): Gets the current time for use with the
- above two. Is this in the right place?
-
- * camel-folder-search.h: Add the new functions above to the class.
-
-2000-08-13 Dan Winship <danw@helixcode.com>
-
- * providers/nntp/Makefile.am (libcamelnntpinclude_HEADERS): Add
- camel-nntp-utils.h
-
- * providers/imap/camel-imap-folder.c
- (imap_get_subfolder_names_internal): do a strcasecmp rather than
- just a strcmp when checking if a folder is "INBOX", since it is
- a case-insensitive name.
-
-2000-08-12 Dan Winship <danw@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_get_summary_internal):
- Don't assume the FETCH results will come back in the order they
- were requested.
- (imap_get_subfolder_names_internal): Add "INBOX" to the list as
- g_malloc'ed memory, not a static string.
-
-2000-08-12 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c
- (camel_imap_command_continuation): Now takes a char * parameter
- rather than a stream
- (camel_imap_command_continuation_with_stream): Same function as
- above but takes a stream parameter instead
-
- * providers/imap/camel-imap-folder.c (imap_append_message): Use
- camel_imap_command_continuation_with_stream
-
-2000-08-12 Dan Winship <danw@helixcode.com>
-
- * providers/pop3/camel-pop3-store.c (pop3_try_authenticate): New
- function to do one round of attempted authentication.
- (pop3_connect): Move a bunch of code out into
- pop3_try_authenticate and fix some bugs in the edge cases.
-
-2000-08-12 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c (query_auth_types): No longer
- calls try_connect() to get authtypes
-
-2000-08-11 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c
- (camel_imap_command_continuation): Changed param order a bit and
- fixed some logic
-
- * providers/imap/camel-imap-folder.c (imap_append_message): Use
- the new multi-transactional convenience functions
-
-2000-08-11 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c
- (camel_imap_command_preliminary): New convenience function for
- multi-transactional commands (opening request)
- (camel_imap_command_continuation): New convenience function for
- multi-transactional commands (followup data)
-
-2000-08-11 Christopher James Lahey <clahey@helixcode.com>
-
- * providers/mh/camel-mh-folder.c: Fixed a warning.
-
-2000-08-11 Chris Toshok <toshok@helixcode.com>
-
- * providers/nntp/camel-nntp-folder.c
- (camel_nntp_folder_class_init): remove get_name and get_full_name
- assignments, since the camel-folder.c implementation does what we
- need.
-
-2000-08-11 Chris Toshok <toshok@helixcode.com>
-
- * providers/nntp/camel-nntp-store.c
- (camel_nntp_store_get_toplevel_dir): use g_get_home_dir, since
- evolution_dir isn't available in the providers.
-
-2000-08-11 Peter Williams <peterw@helixcode.com>
-
- * camel-folder.c (thaw): Fix a bug where the message_changed
- signal wasn't being emitted.
-
-2000-08-11 Not Zed <NotZed@HelixCode.com>
-
- * providers/mh/camel-mh-folder.c (mh_set_message_user_tag):
- Implement.
- (mh_get_message_user_tag): Implement.
-
- * providers/mbox/camel-mbox-folder.c (mbox_get_message_user_tag):
- (mbox_set_message_user_tag): Implement.
-
- * camel-folder.c (move_message_to): Yay so lets fix an already
- fixed fix, again.
- (copy_message_to): and here too ... update for api change to append().
- And removed another warning.
- (camel_folder_set_message_user_tag): Routine to set message tags.
- (camel_folder_get_message_user_tag): And accessor.
-
-2000-08-10 Christopher James Lahey <clahey@helixcode.com>
-
- * camel-folder-search.c, camel-folder-summary.c, camel-medium.c,
- camel-mime-filter-charset.c, camel-mime-filter.c,
- camel-mime-filter.h, camel-mime-message.c, camel-mime-parser.c,
- camel-mime-part-utils.c, camel-mime-part.c, camel-mime-utils.c,
- camel-movemail.c, camel-multipart.c, camel-object.c,
- camel-stream-mem.c, providers/mbox/camel-mbox-folder.c,
- providers/mbox/camel-mbox-summary.c,
- providers/mh/camel-mh-folder.c,
- providers/smtp/camel-smtp-transport.c: Fixed some warnings.
-
-2000-08-11 Not Zed <NotZed@HelixCode.com>
-
- * providers/vee/camel-vee-folder.c (vee_folder_build_folder): Free
- the search properly.
- (vee_folder_build): And here too.
-
-2000-08-10 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
- If we go over the max number of messages, don't keep requesting
- new message summaries, just break.
-
-2000-08-11 Not Zed <NotZed@HelixCode.com>
-
- * camel-mime-parser.c (folder_scan_header): A better way to
- compress leading whitespace. The code is probably invalid anyway,
- I dont think it will work across buffer boundaries.
-
- * providers/mbox/camel-mbox-folder.c (mbox_append_message): And
- write out proper format From lines here too.
-
- * providers/mbox/camel-mbox-summary.c
- (camel_mbox_summary_build_from): New function to build a more
- compatible mbox "From " line.
- (camel_mbox_summary_sync): Write From lines in the proper format.
-
-2000-08-10 Not Zed <NotZed@HelixCode.com>
-
- * providers/mh/camel-mh-store.c (get_folder): Remove warnin g.
-
- * providers/mbox/camel-mbox-store.c (xrename): Kill some warnings
- with constification.
-
- * providers/imap/camel-imap-folder.c (imap_append_message): Fixed
- for append api change. Eek this routine seriously wastes memory.
-
- * providers/mh/camel-mh-folder.c (mh_search_free): Impelemnt.
- (mh_append_message): Fix for api change, and include user flags
- and tags in new message.
-
- * providers/vee/camel-vee-folder.c (vee_search_by_expression): Fix
- for search api change.
-
- * camel-folder.c (camel_folder_search_free): New function for
- freeing search results.
- (search_free): Changed my mind, implement a default that actually
- does something. Free as to the old interface.
- (camel_folder_append_message): Changed to accept a
- camelmessageinfo rather than flags, which just doesn't have enough
- info in it.
- (copy_message_to): Change for append_message api change.
- (move_message_to): Likewise.
-
- * providers/mbox/camel-mbox-folder.c (mbox_search_free):
- Implement.
- (mbox_append_message): Fix for api change, and also copy user
- flags/tags across to new summary.
-
- * camel-folder-search.c (search_user_tag): A search expression
- that returns the current use flag by name.
- (camel_folder_search_free_result): New function to free the result
- of a search.
-
- * camel-folder-summary.c: Bump summary version.
- (message_info_new):
- (message_info_load):
- (message_info_save):
- (camel_message_info_dup_to):
- (camel_message_info_free): Added support for arbitrary tag/value
- pairs (CamelTag's).
- (camel_tag_get):
- (camel_tag_set):
- (camel_tag_list_size):
- (camel_tag_list_free): Operations for working with CamelTags.
-
-2000-08-09 Peter Williams <peterw@helixcode.com>
-
- * camel-store.c (camel_store_get_folder): Connect beforehand, if
- necessary.
-
- * providers/imap/camel-imap-store.c (camel_imap_store_init): Default
- the dir_sep to "/" so that certain functions can safely assume that
- dir_sep is valid (at least, nonnull).
-
-2000-08-09 Ettore Perazzoli <ettore@helixcode.com>
-
- * providers/nntp/camel-nntp-folder.c
- (nntp_folder_set_message_flags): Get rid of an unused variable.
-
- * providers/nntp/Makefile.am (INCLUDES): Fix includes so that we
- don't use installed headers anymore. [I copied this over from the
- IMAP provider, that does not seem to have this problem.]
-
-2000-08-09 Not Zed <NotZed@HelixCode.com>
-
- * camel-folder-search.c (camel_folder_search_execute_expression):
- Reorder search result in summary order if we searched with a
- summary.
-
-2000-08-08 Dan Winship <danw@helixcode.com>
-
- * camel-uid-cache.c: New code to keep an on-disk cache of what
- UIDs have been seen in a folder.
-
- * camel-provider.h: Add new flags CAMEL_PROVIDER_IS_SOURCE (mail
- can arrive in it by non-Camel means) and CAMEL_PROVIDER_IS_STORAGE
- (you can work with mail directly without needing to copy it local).
-
- * providers/*/camel-*-provider.c: Add flags as needed: imap and
- mbox are SOURCE and STORAGE. mh and nntp are just STORAGE, pop3 is
- just SOURCE.
-
- * camel-mime-message.c (process_header): Add another subject
- g_strstrip that fejj's earlier commit missed.
-
-2000-08-08 Peter Williams <peterw@helixcode.com>
-
- * camel-provider.h: Remove some GTK stuff that I missed.
-
- * providers/imap/camel-imap-store.c (imap_noop): Turn this
- back on with the new timeout interface in CamelSession.
-
- * camel-session.[ch] (camel_session_register_timeout): New
- interface for Camel to register timeouts. Basically the
- GTK timeout interface is copied. We do this because Camel isn't
- allowed to use GTK anymore.
-
-2000-08-07 Not Zed <NotZed@HelixCode.com>
-
- * providers/mh/camel-mh-folder.c (mh_append_message): Only retry
- another uid if we had a name clash, otherwise fail.
-
-2000-08-07 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c
- (imap_get_subfolder_names_internal): If we are trying to get a
- subfolder listing of the root folder, always make sure INBOX is
- there...
-
- * providers/imap/camel-imap-utils.c (imap_parse_list_response):
- Check for NIL as a directory separator.
-
-2000-08-07 Peter Williams <peterw@helixcode.com>
-
- * providers/nntp/Makefile.am: Reorder the INCLUDES to pull
- in the camel headers from the local source tree before
- the ones in $(includedir). This was causing compile problems
- because the installed, Gtk-based camel-object.h was included
- before the uninstall Camel-based one.
-
-2000-08-07 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-utils.c (imap_translate_sexp): Strip
- all \n's from the expression
-
- * string-utils.c (strip): New convenience function to strip
- occurences of a single char from a string
-
- * camel-mime-message.c (camel_mime_message_set_subject): Do a
- g_strstrip on the subject so we can stop getting those annoying
- leading spaces
-
-2000-08-07 Dan Winship <danw@helixcode.com>
-
- * camel-folder.c (camel_folder_free_deep): Fix this to not require
- NULL-termination of the array.
-
-2000-08-04 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c (imap_connect): If we fail to
- get a dir_sep, then supply the default of "/".
- (get_folder): Undo changes by Peter
-
-2000-08-04 Peter Williams <peterw@helixcode.com>
-
- * providers/imap/camel-imap-store.c (get_folder): Prevent a coredump
- when get_folder()ing from a store with dir_sep = NULL.
-
-2000-08-04 Peter Williams <peterw@helixcode.com>
-
- * camel-store.h: Include camel-object.h. Ettore said this wasn't
- compiling.
-
-2000-08-04 Not Zed <NotZed@HelixCode.com>
-
- * camel-url.c (camel_url_set_protocol):
- (camel_url_set_host):
- (camel_url_set_path):
- (camel_url_set_port): Url editing functions.
-
-2000-08-04 Dan Winship <danw@helixcode.com>
-
- * providers/pop3/camel-pop3-folder.c (pop3_set_message_flags):
- (pop3_sync): Indexes into the flags array are message_number minus
- 1, not just message_number.
-
- * providers/pop3/camel-pop3-store.c: add a debugging macro for
- doing protocol tracing.
-
-2000-08-03 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Only
- call imap_get_summary_internal if the folder can hold messages
-
- * providers/nntp/camel-nntp-provider.c (camel_provider_module_init):
- Initialize the service_cache for the news/nntp providers
-
-2000-08-03 Peter Williams <peterw@helixcode.com>
-
- * providers/nntp/Makefile.am (INCLUDES): Add -I$(top_srcdir) to
- pull in libibex/ibex.h
-
-2000-08-02 Not Zed <NotZed@HelixCode.com>
-
- * providers/mh/camel-mh-summary.c (camel_mh_summary_sync): Expunge
- from the end, so the index isn't messed up when you remove a
- message.
-
- * providers/mh/camel-mh-folder.c (mh_append_message): Fix a bug
- where it would never open an output file/uid.
-
- * providers/mbox/camel-mbox-store.c (rename_folder):
- Implementation for mbox as well.
-
- * camel-store.c (camel_store_rename_folder): New method to rename folders.
- (rename_folder): Default implementation.
-
- * providers/mh/camel-mh-store.c (delete_folder): Implement this.
- (rename_folder): Implement a rename operation.
-
-2000-08-02 Dan Winship <danw@helixcode.com>
-
- * providers/MH: Kill this. It doesn't have any code to do anything
- the new mh provider doesn't do better.
-
- * providers/Makefile.am: Remove reference to MH subdir, and
- promote nntp to fully-supported status, since it does compile and
- all.
-
- * camel-mime-message.c (camel_mime_message_set_subject): Trim
- trailing space from the subject. I've now seen replies from two
- different people that tricked the threading code by (a) not having
- References/In-Reply-To, and (b) adding an extra space to the end
- of the subject line so the subject-based threading fails too. Who
- writes these broken mailers anyway?
-
-2000-08-01 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/smtp/camel-smtp-transport.c (smtp_helo): When forced
- to use the IP, place it in square brackets.
-
- * providers/imap/camel-imap-utils.c (imap_translate_sexp): New and
- improved sexp parser. An honest try at using e-sexp is wrapped in
- a #ifdef at the bottom of the file but is currently not used
-
- * providers/imap/camel-imap-folder.c (imap_search_by_expression):
- We want to do a UID SEARCH so we get UIDs back instead of sequence
- numbers
-
-2000-08-01 Not Zed <NotZed@HelixCode.com>
-
- * providers/mh: New mh provider implementation.
-
- * providers/Makefile.am (SUBDIRS): Added mh provider.
-
-2000-07-31 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_get_message_info_internal):
- Some IMAP servers don't wrap the UID in ()'s so don't depend on that
- (imap_get_summary_internal): Same
-
- * providers/imap/camel-imap-utils.c (free_sexp_node): Oops, forgot to
- free node->function - not good.
-
-2000-07-31 Peter Williams <peterw@helixcode.com>
-
- * providers/vee/camel-vee-folder.c (vee_search_by_expression): Add
- a NULL to the matches pointer array so that g_strfreev knows where
- the end is.
-
-2000-07-31 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-utils.c (imap_translate_sexp): New
- convenience function to translate a Camel sexp into the equivalent
- IMAP sexp.
-
- * providers/imap/camel-imap-store.c: More places now use
- imap_next_word
-
- * providers/imap/camel-imap-folder.c (imap_search_by_expression):
- Implemented initial version (this may or may not work quite right)
-
-2000-07-28 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_expunge): Make sure
- the third word/token (whatever) is "EXPUNGE" and not something
- else like "EXISTS" or "RECENT". When removing the message from
- the summary also make sure to free that data to avoid leakage.
- Also make sure to subtract 1 from the 'id' since IMAP starts
- at 1 and our summary starts at 0 :-)
-
-2000-07-28 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c (camel_imap_status): Cleaned
- up a bit, now uses imap_next_word()
- (camel_imap_command_extended): Now uses imap_next_word(). When
- checking for RECENT, allow the first digit of the recent-count
- be between 0 and 9 inclusive instead of exclusive.
-
- * providers/imap/camel-imap-folder.c (imap_expunge): Optimized.
- No longer will it need to reload the summary as it now instead
- removes the appropriate message summaries from the cache.
- (camel_imap_folder_changed): If recent == 0 then return. If
- recent < 0 then just emit the folder_changed signal, don't reload
- summaries.
-
-2000-07-28 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c
- (imap_get_message_count_internal): Get message count when STATUS
- is not available.
- (imap_init): folder->has_search_capability is required for IMAP so
- should always be set to TRUE (is currently being set to FALSE as
- I've not yet implemented SEARCH support).
- (camel_imap_folder_changed): Seem to have fixed my optimization
- hack
-
-2000-07-28 Jon K Hellan <hellan@acm.org>
-
- * providers/imap/camel-imap-store.h (CamelImapServerLevel): New
- enum.
- (CamelImapStore): Added server_level and has_status_capability
- members.
-
- * providers/imap/camel-imap-store.c (imap_connect): Detect
- IMAP4REV1, IMAP4 and STATUS in capability response.
-
- * providers/imap/camel-imap-folder.c
- (imap_get_message_count_internal): Use STATUS only if server
- supports it. TODO: Get message count when STATUS not supported.
- (imap_get_message, imap_get_summary_internal,
- imap_get_message_info_internal): Handle IMAP4 as well.
- (imap_protocol_get_summary_specifier): New function: Make a data
- item specifier for the header lines we need, appropriate to the
- server level.
-
-2000-07-27 Peter Williams <peterw@helixcode.com>
-
- * camel-mime-utils.c (header_decode_lwsp): More
- checks for end of string.
-
- * providers/imap/camel-imap-store.c:
- (imap_command_extended): Free the elements of our
- array (huge mem leak)
-
- * providers/imap/camel-imap-folder.c:
- (summary_get_internal): Same as above.
-
-
-2000-07-27 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
- Fixed my routine to only fetch new headers, my IDs were off by 1
- on the high end, so when it would fetch the last newly arrived
- message it would fail and end up fetching all of the summaries
- because of the corruption.
-
-2000-07-27 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-url.c (camel_url_to_string): If the path doesn't begin
- with a / and there is a host, prepend a / to the path.
-
-2000-07-27 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/Makefile.am: Added camel-imap-utils.[c,h]
-
- * providers/imap/camel-imap-utils.[c,h]: Utilities for parsing
- server responses for use in both camel-imap-store.c and
- camel-imap-folder.c
-
- * providers/imap/camel-imap-folder.c (imap_get_summary_internal):
- Free all the pointers in the headers array.
- (imap_get_subfolder_names_internal): Updated to use
- imap_parse_list_response
- (imap_parse_subfolder_list): Removed in favor of
- imap_parse_list_response
-
- * providers/imap/camel-imap-store.c (camel_imap_command_extended):
- Free all the pointers in the data array.
- (imap_connect): Updated to use imap_parse_list_response and fixed
- a leak
- (folder_is_selectable): Updated.
-
-2000-07-27 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_get_message_info): Now
- uses a hash table for looking up message info rather than a linear
- search :)
-
-2000-07-27 Peter Williams <peterw@helixcode.com>
-
- * providers/*/Makefile.am: Don't specify SUBDIRS =
- [nothing]. Messes up distcheck.
-
-2000-07-26 Peter Williams <peterw@helixcode.com>
-
- * camel-mime-parser.c (folder_scan_init): Initialize
- outbuf to be "" -- it's not guaranteed to be zeroed.
-
- * camel-mime-utils.c (header_references_decode): Return
- if the header is NULL -> or "" <-. Don't do our stupid
- mailer trick if we point to \0.
- (header_decode_quoted_string): Don't rip past end of
- string!
-
-2000-07-26 Dan Winship <danw@helixcode.com>
-
- * camel-movemail.c (movemail_external): routine to call an
- external movemail program.
- (camel_movemail): Nuke return value, use movemail_external when
- available and useful, and don't delete "dest" on errors, since
- it might have started non-empty.
-
-2000-07-26 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-url.c (camel_url_to_string): Should now always prepend a '/'
- before the path if it doesn't already exist.
-
- * providers/imap/camel-imap-folder.c: Fixed a few compiler warnings
-
-2000-07-25 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_summary_free): Fixed the
- real problem that Peter was running into.
-
-2000-07-25 Dan Winship <danw@helixcode.com>
-
- * camel-mime-message.c (write_to_stream): Don't add a Mime-Version
- header to a message that already has one.
-
- * camel-internet-address.c (internet_encode): Don't put <>s around
- addresses with no name part.
-
-2000-07-25 Peter Williams <peterw@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_expunge): Set
- imap_folder->summary to NULL after calling imap_summary_free,
- so we don't get stuck with a junk summary pointer. Should
- we free it at all?
-
-2000-07-25 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
- Optimized to try and get the new message headers without reloading
- the entire summary from scratch.
- (imap_get_summary_internal): Will now sync() before attempting to
- reload the summary so that flags are set in the reloaded summary
- as well.
-
-2000-07-24 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c (get_folder): Updated to give
- special attention to the root folder.
-
- * providers/imap/camel-imap-folder.c
- (imap_get_subfolder_names_internal): Updated to handle the root
- folder
- (imap_get_message_count_internal): return 0 if folder can't hold
- messages
- (camel_imap_folder_new): Change so that root folder gets special
- attention and always gets can_hold_messages set to FALSE
-
-2000-07-24 Dan Winship <danw@helixcode.com>
-
- * camel-folder.c: Remove exceptions from a number of methods that
- work on what ought to be static data: get_parent_folder,
- get_parent_store, get_message_count, get_unread_message_count,
- get_permanent_flags, get_message_flags, set_message_flags,
- get_message_user_flag, set_message_user_flag, get_uids,
- get_summary, get_subfolder_names. Turn camel_folder_delete_message
- into a macro. (Mostly a pull-up from the camel-async branch.)
-
- * providers/{imap,mbox,nntp,pop3,vee}: Update for CamelFolder
- changes
-
-2000-07-24 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_get_message_info): Updated
- to port easily to the new Camel API
- (imap_init): Don't SELECT INBOX, we don't need to do that
-
-2000-07-24 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_new):
- Initialize the summary and subfolder listing.
- (imap_summary_free): Now takes a GPtrArray arg rather than a
- CamelImapFolder as it increases it's usefullness for free()'ing
- temporary summaries.
- (imap_get_message_count_internal): A new convenience function for
- getting the actual message count on a server to be used by
- imap_get_summary_internal)
- (imap_get_message_count): Since the Camel API is on the move again,
- the future version of this function will not be able to make a
- call to the store, it must only access previously fetched data (thus
- the creation of the _internal function)
- (imap_get_subfolder_names_internal): Again, because the future version
- of imap_get_subfolder_names will not take an exception, we must rename
- this function which will be called by camel_imap_folder_new()
- (imap_get_subfolder_names): We now return the previously collected
- subfolder listing that the _internal function fetched previously
- (imap_get_summary_internal): Again, same idea as the previous _internal
- functions...
- (imap_get_summary): Again... now returns a previously aquired summary
-
- * providers/imap/camel-imap-store.c (imap_noop): This will hopefully
- prevent the imap store from disconnecting.
- (imap_connect): Modified to add a gtk timeout event that will call
- imap_noop() every 10 minutes (we may want to change this time value)
- (imap_disconnect): Modified to remove the NOOP timeout event from the
- store.
- (camel_imap_command_extended): Commented out the code that would try
- and detect if the store was disconnected and then reconnect if it was
- needed.
-
-2000-07-24 Dan Winship <danw@helixcode.com>
-
- * camel-folder.[ch]: Remove camel_folder_get_message_uid, which
- was not used, and not implemented by any provider.
-
- * providers/nntp/camel-nntp-folder.c: Remove get_message_uid
- non-implementation.
-
- * camel-folder-pt-proxy.[ch], camel-arg-collector.c,
- camel-marshal-utils.[ch]: Bye bye bye.
-
- * Makefile.am: remove reference to camel-arg-collector.c
-
-2000-07-23 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c (imap_disconnect): Made it a
- little more forgiving. Also set current_folder to NULL as there is
- no selected folder after a disconnect.
- (stream_is_alive): Detects whether or not a socket is "alive"
- (camel_imap_command_extended): Use stream_is_alive() to aid in the
- detection of a disconnected state.
-
-2000-07-22 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c (get_folder): Clear
- CamelExceptions when appropriate (eg when folder is marked as
- \NoSelect). Still needs some cleanup and perhaps Dan will have a
- better way of doing this as this seems like a messy way of
- handling this.
-
- * providers/imap/camel-imap-folder.c (imap_get_uids): Took out
- some debug statements as they are no longer needed.
-
-2000-07-21 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_get_subfolder_names):
- Updated to not strip out subfolders that are marked as \NoSelect
- because this will be correctly handled in store->get_folder from
- now on.
-
- * providers/imap/camel-imap-store.c (folder_is_selectable): New
- convenience function for use in get_folder().
- (parse_list_response): Now takes a char **flags argument which is
- needed by folder_is_selectable().
- (imap_connect): Updated to reflect changes to
- parse_list_response().
-
-2000-07-21 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-stream.c (stream_read): Updated with
- some of the same fixes I've made to camel-imap-folder.c like
- recalculating message part lengths.
-
- * providers/imap/camel-imap-store.c (camel_imap_command_extended):
- Rewrote the code to check for "* %d RECENT". Still needs to be
- modified, but should no longer cause an infinite loop by detecting
- mis-detecting RECENT messages.
-
-2000-07-20 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_get_summary):
- (imap_get_message_info): Oops. Fix UID parser to allow 0 and 9 to
- be in the range of valid UID chars.
-
-2000-07-20 Peter Williams <peterw@helixcode.com>
-
- * camel-object.c (camel_object_unref): Add a new global mutex
- 'refcount' held when refcounting operations occur.
-
-2000-07-19 Peter Williams <peterw@helixcode.com>
-
- * camel-object.c (camel_type_lock_up): Correct the recursiveness;
- the locklevel is stored as a private, so each thread has its own
- idea of the locklevel. Thus one thread can relock, but a different
- one will think that it's a level 0 and try to lock the type_system
- mutex.
-
-2000-07-19 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c: General cleanup working
- towards getting Actions->Expunge working correctly.
-
- * providers/imap/camel-imap-store.c
- (cammel_imap_command_extended): Added code to look for "* %d
- RECENT" and to emit the folder_changed signal if there are any
- recent messages. Note: this is a hack and needs to be rewritten
- badly.
-
-2000-07-19 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_get_summary): If the
- folder's message count is not the same as the number of summaries,
- free the old summary and create a new summary.
-
-2000-07-18 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c
- (camel_imap_folder_class_init): Added in
- imap_[g,s]et_message_user_flag() methods
- (imap_get_message_info): Rewrote to use the more efficient way of
- downloading summary information and also added a UID comparison so
- that if the UID requested doesn't match the UID received, it
- returns NULL. FIXME: When the mailer gets NULL when it requested
- message info, it seems that it displays a row for that message and
- when you try and select the blank row, it segfaults.
-
- * providers/imap/camel-imap-store.c (get_folder): Oops, this
- should not be checking against "/", it should be checking against
- dir_sep.
-
- * providers/imap/camel-imap-folder.c (imap_parse_subfolder_line):
- Updated to trim out the leading namespace.
- (imap_get_subfolder_names): Let the subfolder parser trim the
- namespace off the folder name.
-
-2000-07-17 Peter Williams <peterw@helixcode.com>
-
- * camel-object.c (camel_type_lock_up): New function; the
- Camel type_system lock is now fakey-recursive, being controlled
- by a semaphore that goes up and down and is protected by another
- lock. Theoretically all we need is the lock on the semaphore,
- but this we catch exceptions "better" (by deadlocking).
- (camel_type_lock_down): Corresponding to above.
- (all functions): s,G_LOCK,camel_type_lock_up, etc.
-
-2000-07-17 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c (imap_disconnect): Send a
- "LOGOUT" command.
-
- * providers/imap/camel-imap-folder.c (imap_get_message): Hacks to
- get IMAP code to work with CommunigatePro and MS Exchange (and any
- other servers that send back a UID at the end of each FETCH inside
- of the main body of the message part).
- (imap_sync): Un-#if 0 the code that sets the flags on the IMAP
- server for messages that have changed. Oops, don't mask with
- DELETED to find out if the message has been answered ;-)
- (imap_expunge): sync before expunging.
-
-2000-07-16 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c: All SELECT calls now pass
- a NULL folder argument to camel_imap_command_extended() since it's
- not needed.
- (imap_connect): Moved service_class->connect() to the point right
- after a connection is established with the server rather than
- waiting until the end of the function.
- (camel_imap_command): Updated the documentation comment
- (camel_imap_command_extended): Before sending a command, first
- check to make sure we are connected; if we aren't, then reconnect.
- Don't strncmp() command with "SELECT" as it's redundant.
-
- * providers/imap/camel-imap-folder.c: All SELECT calls now pass
- a NULL folder argument to camel_imap_command_extended() since it's
- not needed. Also s/camel_imap_command/camel_imap_command_extended as
- I will probably be doing away with camel_imap_command() or at least
- only using it for LOGIN and similar commands where the server won't
- notify us of any recent messages.
-
-2000-07-15 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_new):
- One last fix to get rid of hard-coded "/" directory separators
-
-2000-07-14 Peter Williams <peterw@helixcode.com>
-
- * camel-object.c : Implement 'events', which are suspiciously
- like signals except without all the marshalling baggage, and
- with quasi-thread-safety.
- (camel_object_class_declare_event): New func.
- (camel_object_hook_event): Ditto.
- (camel_object_trigger_event): Ditto.
- (obj_class_init): Declare the "finalize" event.
- (obj_class_finalize): Free the hashtable of events->preps
- (obj_finalize): Free the hashtable of events->hooklists
- (camel_object_unref): Trigger the finalize event (ourselves,
- to prevent massively unpleasant looping things.)
-
-2000-07-14 Peter Williams <peterw@helixcode.com>
-
- * camel-object.c (make_global_classfuncs): Change to return
- a CamelObjectClass. Change parents to a GSList and free it
- when done.
- (camel_object_new): Don't allocate a classfuncs for every object;
- merely give it a reference to the global_classfuncs. Convert
- parents to a GSList and free it when done.
- (camel_object_unref): Don't free the classfuncs. Free the parents
- list, which is changed to a GSList.
-
-2000-07-14 Jeffrey Stedfast <fejj@helixcode.com>
-
- * string-utils.c (string_unquote): New convenience function
- to unquote a string if it's encapsulated by "'s
-
- * providers/imap/camel-imap-folder.c:
- * providers/imap/camel-imap-store.c: Made the necessary changes
- to stop using hard coded directory separators.
-
-2000-07-13 Dan Winship <danw@helixcode.com>
-
- * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_load):
- If the summary is for a smaller mbox, and rebuilding from the
- last-known end position fails, try rebuilding from the beginning.
- Deals with the case where the user edits the mbox and makes it
- bigger, without adding new messages.
-
-2000-07-13 Peter Williams <peterw@helixcode.com>
-
- * camel-object.c: Rewritten to not be based on GtkObject,
- but a tiny threadsafe ripoff thereof. Objects still cannot
- be shared across threads, but ref/unref/destroy/new/etc
- will work. Signals are not implemented because doing it
- robustly would be a major pain in the butt, but class
- functions are. There's a small demonstration that it doesn't
- crash in ./temp-test.c: build it with ./make-test.sh.
- * camel-stream.c, camel-seekable-stream.c, camel-stream-mem.c:
- moved over to CamelObject. Proof of concept: two levels of
- subclass and class functions, all working without coredumps.
- To port to CamelObject:
- - s,GTK_,CAMEL_,g in the cast checks
- - s,gtk_type_new,camel_object_new,g
- - s,GtkType,CamelType,g
- - Change get_type function over to camel_type_declare
- - instead of hooking to finalize function, it goes into the
- type declaration.
- - remove signals.
- - instead of GTK_OBJECT(so)->klass, CAMEL_OBJECT_GET_CLASS(so)
- - s,gtk_type_class,camel_type_get_global_classfuncs,g
- - don't chain finalize handlers; it will be done for you
-
-2000-07-13 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c:
- * providers/imap/camel-imap-store.c: If a SELECT fails, set
- imap_store->current_folder to NULL so a SELECT is forced before
- any message/folder operations are requested. Also, because some
- users don't use a namespace, make sure that if the url->path is
- "/" we don't use it when creating the folder_path.
- (camel_imap_command[_extended]): Since we allow the passing of
- a NULL folder which we can use to bypass a forced SELECT, no need
- to check for the individual commands that don't require a folder
- to be selected.
-
-2000-07-13 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c:
- * providers/imap/camel-imap-store.c: Updated to use CAMEL_IMAP_OK,
- CAMEL_IMAP_NO, CAMEL_IMAP_BAD, and CAMEL_IMAP_FAIL rather than the
- ones copied from the POP3 provider.
-
-2000-07-13 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_get_summary): Oops.
- If the number of messages in the folder is 0, don't fetch
- summaries 1 thru 0, just return an empty summary.
- (imap_copy_message_to): Fixed to use message UID and also send
- the source folder as an arg to camel_imap_command rather than NULL.
- (imap_move_message_to): Same.
- (imap_init): If SELECT is successful, we need to set the current
- folder to the one selected, this was causing problems with move/copy
-
-2000-07-13 Dan Winship <danw@helixcode.com>
-
- * camel-service.h: define a set of CAMEL_SERVICE_URL_ALLOW_* flags
- parallel to the _NEED_* flags, and make the _NEED_* flags imply
- the _ALLOW_* ones.
-
- * providers/imap/camel-imap-store.c (camel_imap_store_init): imap
- urls ALLOW_PATH
-
-2000-07-13 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_get_summary): New
- and improved approach to fetching an entire folder summary
- that should be much much faster than the old way as it gets
- the entire folder summary in 1 shot rather than requesting
- message by message. As with the last update, this version
- also only fetches the minimum number of header fields.
- (imap_get_summary): Oops, forgot to free the temp
- GPtrArray *headers
-
-2000-07-13 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_get_summary): Don't
- fetch the entire RFC822 header, just fetch the fields we want.
- (imap_get_message_info): Same.
-
-2000-07-13 Not Zed <NotZed@HelixCode.com>
-
- * camel-mime-filter-basic.c (camel_mime_filter_basic_new_type):
- Reset filter on setup.
- (reset): When resetting qp encoding, set the state to -1, instead
- of 0.
-
- * camel-mime-utils.c (quoted_encode_step): Actually count the
- characters output sofar (it never counted any). Bunch of other
- fixes.
- (quoted_encode_close): Also flush out final character, if there's
- one.
-
-2000-07-12 Jeffrey Stedfast <fejj@helixcode.com>
-
- Chris forgot to add #include <e-util/e-util.h> to the source files
-
- * providers/imap/camel-imap-store.c (imap_connect): Fixed Peter's
- fix, we don't want to send a string to a %d.
-
-2000-07-12 Christopher James Lahey <clahey@helixcode.com>
-
- * camel-folder-search.c, providers/imap/camel-imap-store.c:
- Changed from strstrcase to e_strstrcase.
-
- * string-utils.c, string-utils.h: Removed strstrcase (in favor of
- e_strstrcase in e-util/e-util.c.)
-
-2000-07-12 Chris Toshok <toshok@helixcode.com>
-
- * providers/nntp/camel-nntp-folder.c
- (nntp_folder_set_message_flags): get the article num out of our
- uid and mark it read in the newsrc.
- (nntp_folder_get_message): get the message id out of the uid to
- fetch the article.
-
- * providers/nntp/camel-nntp-utils.c (get_XOVER_headers): the uid
- is now <article-num>,<messageid>
- (get_HEAD_headers): same.
-
- * camel-mime-parser.c (folder_scan_step): go to HSCAN_MESSAGE
- state when ct->subtype is "news" as well as "rfc822". this makes
- attachments of type "message/news" display properly.
-
-2000-07-12 Dan Winship <danw@helixcode.com>
-
- * camel-folder.c (camel_folder_free_deep,
- camel_folder_free_shallow, camel_folder_free_nop): Useful default
- implementations for free_{uids,subfolder_names,summary}.
- (free_subfolder_names, free_uids): Make these g_warning-ing
- default implementations.
-
- * providers/*/camel-*-folder.c: Use the new functions where
- appropriate, remove duplicated code.
-
-2000-07-12 Peter Williams <peterw@helixcode.com>
-
- * providers/imap/camel-imap-store.c (query_auth_types): Check for
- NULL parameters when setting the exception so as to not crash on
- Solaris (can't handle a %s passed NULL).
- (imap_connect): Same.
-
-2000-07-12 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/mbox/camel-mbox-folder.c (mbox_delete_message): Use
- mbox_set_message_flags () instead of setting the flags by hand. This
- fixes the problem of the "message_changed" signal not being emitted
- at the correct time.
-
- * providers/imap/camel-imap-folder.c: "folder_changed" signals should
- pass a third argument (which is ignored).
-
- * camel-folder.c: Undo gtk signal emits done in set_flags and
- expunge.
- (move_message_to):
- (copy_message_to): Create info as a const CamelMessageInfo
-
-2000-07-12 Chris Toshok <toshok@helixcode.com>
-
- * providers/nntp/Makefile.am: don't add test-newsrc to the build
- since it needs libcamel (which isn't built at the time test-newsrc
- needs linking.)
-
- * providers/nntp/camel-nntp-utils.c (get_HEAD_headers): fill in
- MessageInfo->message_id.
- (get_XOVER_headers): same.
-
- * providers/nntp/camel-nntp-folder.c (nntp_folder_init): move
- summary loading here.
- (nntp_folder_sync): summary/newsrc changes should be stored here.
- put a comment to that effect.
- (nntp_folder_set_message_flags): don't save the newsrc here.
- (nntp_folder_get_uids): use g_ptr_array_index instead of the
- cast/addition.
- (nntp_folder_get_summary): no need to check if we should generate
- the summary here. already done.
- (nntp_folder_get_message_info): implement.
-
- * providers/nntp/camel-nntp-store.c
- (camel_nntp_store_get_toplevel_dir): use evolution_dir instead of
- computing it ourselves.
- (nntp_store_disconnect): call camel_nntp_newsrc_write.
- (ensure_news_dir_exists): new function to create the news/<news
- server> subdir.
- (camel_nntp_store_class_init): hook up connect/disconnect and
- finalize.
- (nntp_store_connect): if ensure_news_dir_exists fails throw an
- exception.
-
-2000-07-12 Peter Williams <peterw@helixcode.com>
-
- * camel-folder.c (camel_folder_set_message_flags): Emit a message_changed
- signal once the flags are set on the message.
- (camel_folder_set_user_flag): Ditto.
- (camel_folder_expunge): Emit a folder_changed if no exception.
-
-2000-07-12 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-stream.c: Use size_t and ssize_t for read/write methods
-
- * providers/imap/camel-imap-folder.c (imap_set_message_flags):
- Updated to emit the message_changed signal.
- (imap_delete_message): Updated to use imap_set_message_flags ().
- (imap_move_message_to): Updated to use imap_set_message_flags ()
- and to emit the folder_changed signal on the destination folder.
- (imap_copy_message_to): Updated to emit the folder_changed signal
- on the destination folder.
- (imap_append_message): Updated to emit the folder_changed signal
- on the destination folder.
-
-2000-07-11 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-folder.c (camel_folder_append_message): Now takes a
- flags argument to specify the flags to be set on the message
- since we might not necessarily want the flags to be wiped clean.
- (move_message_to):
- (copy_message_to): Updated to send a flags argument to
- append_message (); currently sends the original message's flags.
-
- * providers/mbox/camel-mbox-folder.c (mbox_append_message):
- * providers/imap/camel-imap-folder.c (imap_append_message):
- Updated.
-
-2000-07-11 Dan Winship <danw@helixcode.com>
-
- * camel-folder.c: Remove exceptions from a number of methods
- that work on what ought to be static data: get_parent_folder,
- get_parent_store, get_message_count, get_unread_message_count,
- get_permanent_flags, get_message_flags, set_message_flags,
- get_message_user_flag, set_message_user_flag, get_message_uid,
- get_uids, get_summary, get_subfolder_names. Turn
- camel_folder_delete_message into a macro.
-
- * providers/{mbox,pop3,vee}: Update for CamelFolder changes
-
- * providers/Makefile.am: Disable imap and nntp for now
-
-2000-07-11 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_search_by_expression):
- This shouldn't return NULL, it should return g_ptr_array_new ()
- so the mailer gets what it expects.
-
-2000-07-10 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-folder-summary.c (camel_folder_summary_decode_string):
- Oops, an unsigned integer can never be < 0
-
-2000-07-10 Dan Winship <danw@helixcode.com>
-
- * providers/vee/camel-vee-folder.c (vee_search_by_expression):
- Initialize a variable to make this not crash again. And fix a bug
- so it actually does something.
-
-2000-07-10 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-folder-summary.c: Cleaned up a bunch of compile warnings
-
-2000-07-10 Dan Winship <danw@helixcode.com>
-
- * providers/vee: kill more debugging messages
-
-2000-07-10 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/mbox/camel-mbox-folder.c (mbox_get_unread_message_count):
- * providers/vee/camel-vee-folder.c (vee_get_unread_message_count):
- * providers/imap/camel-imap-folder.c (imap_get_unread_message_count):
- Implemented.
-
- * camel-folder.c (camel_folder_get_unread_message_count): New
- convenience function to allow the mailer to query the number
- of unread messages in a folder (for displaying message stats
- in a folder tree?).
-
-2000-07-09 Dan Winship <danw@helixcode.com>
-
- * camel-mime-utils.c (header_references_dup): New function to copy
- a header_references structure.
-
- * camel-folder-summary.c (camel_message_info_dup_to): New function
- to (deep) copy the data from one CamelMessageInfo into another.
- (camel_message_info_free): And free the data.
-
- * providers/vee/camel-vee-folder.c (vee_sync): Implement. (empty).
- (vee_search_by_expression): belatedly update for
- camel_folder_search change.
- (vee_folder_build): belatedly update for camel_folder_search
- change. Use camel_message_info_dup_to and camel_message_info_free
- (in particular, so that we get message_id and references info so
- vfolders can be threaded).
- (vee_folder_build_folder): Ditto.
-
-2000-07-08 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/nntp/camel-nntp-folder.c:
- * providers/nntp/camel-nntp-utils.c:
- * providers/nntp/camel-nntp-store.c: Update to reflect past changes
- in the Camel API. Use gtk macro casts wherever possible and use glib's
- memory functions instead of standard c's (since they are not
- compatable)
-
- * providers/smtp/camel-smtp-transport.c:
- * providers/imap/camel-imap-store.c: Wrap debug print statements
- in a macro
-
- * providers/imap/camel-imap-stream.c (stream_read): Make sure
- that we get up to and including the last \n of the mime part.
-
- * providers/imap/camel-imap-folder.c (imap_get_message): Make sure
- that we get up to and including the last \n of the mime part.
- Wrap debug print statements in a macro.
-
- * providers/imap/camel-imap-stream.c (stream_read): Only cache
- the important data (aka the mime part requested and no extra
- server response stuff)
-
-2000-07-07 Dan Winship <danw@helixcode.com>
-
- * camel-mime-utils.c (header_references_decode): Work around
- In-Reply-To's with unquoted punctuation. So many broken mailers.
-
- * camel-folder.c (camel_folder_search_by_expression): Make this
- return a GPtrArray rather than a GList.
-
- * camel-folder-search.c (camel_folder_search_execute_expression):
- * providers/imap/camel-imap-folder.c (imap_search_by_expression):
- * providers/mbox/camel-mbox-folder.c (mbox_search_by_expression):
- * providers/nntp/camel-nntp-folder.c (nntp_search_by_expression):
- Update to return a GPtrArray rather than a GList.
-
-2000-07-07 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/smtp/camel-smtp-transport.c (esmtp_get_authtypes):
- Fixed the parser to actually work
-
-2000-07-06 Dan Winship <danw@helixcode.com>
-
- * camel-mime-utils.c (header_references_decode): Make this deal
- with the full RFC822 References/In-Reply-To format rather than
- just the more-nicely-behaved RFC1036 version. (Needed to parse
- In-Reply-To headers with extra junk in them.)
-
-2000-07-06 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_get_summary): Parse for
- more header information to allow message threading in IMAP.
- (imap_get_message_info): Same.
-
- * camel-folder-summary.c: Renamed summary_format_* to
- camel_summary_format_* and moved them into public scope.
-
- * providers/smtp/camel-smtp-transport.c (smtp_connect): Oops. Don't
- pass port # as a string in the error code (if it fails to connect).
-
- * providers/imap/camel-imap-folder.c (imap_append_message): Changed
- over to camel_imap_command_extended as that was the source of the
- problems - apparently appending replies with more than just 1 line.
-
-2000-07-05 Dan Winship <danw@helixcode.com>
-
- * camel-folder-search.c (search_header_contains): make header
- matching case-insensitive
-
- * camel-folder-summary.c:
- * camel-session.c:
- * providers/mbox/camel-mbox-folder.c:
- * providers/mbox/camel-mbox-summary.c: Remove some non-error case
- debugging-type messages.
-
-2000-07-05 Ettore Perazzoli <ettore@helixcode.com>
-
- * providers/mbox/camel-mbox-summary.c (d): Define to empty so that
- we get rid of a ton of debugging messages.
-
-2000-07-05 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-mime-utils.h: Added prototype for uudecode_step
-
- * camel-mime-utils.c (uudecode_step): Cleaned up some junk that
- should have been cleaned up when debugging printf's were taken out.
-
-2000-07-05 Ettore Perazzoli <ettore@helixcode.com>
-
- * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_sync):
- Update the X-Evolution: header even if the in-memory UID and the
- saved UID are not the same. Otherwise mboxes with clashing UIDs
- can never be fixed.
-
- * camel-folder-summary.c
- (camel_folder_summary_add_from_parser): Add the message to the
- summary before doing any ibex stuff. In fact, this might also
- have the side effect of reassigning the UID so it needs to be done
- before we start using the UID.
-
- * providers/mbox/camel-mbox-folder.c (mbox_append_message): Add
- debugging message to keep track of the UIDs we add.
-
-2000-07-05 Dan Winship <danw@helixcode.com>
-
- * camel-folder-summary.c: Add "Cc" to summary and bump summary
- version number.
-
- * camel-folder-search.c (search_header_contains): make "Cc" a
- searchable header.
-
-2000-07-03 Ettore Perazzoli <ettore@helixcode.com>
-
- * camel-folder-summary.c (camel_folder_summary_next_uid_string):
- New.
- (camel_folder_summary_add): Use
- `camel_folder_summary_next_uid_string()' instead of recomputing
- the UID manually here.
- (camel_folder_summary_add_from_parser): Likewise.
-
-2000-07-03 Ettore Perazzoli <ettore@helixcode.com>
-
- * camel-folder-summary.c (camel_folder_summary_set_uid): Removed.
-
-2000-07-03 Dan Winship <danw@helixcode.com>
-
- * camel-folder-summary.c (message_info_new): Parse In-Reply-To
- with header_references_decode, not header_msgid_decode.
-
- * camel-mime-message.c (camel_mime_message_class_init): message
- headers are case-insensitive.
-
- * providers/pop3/camel-pop3-store.c (camel_pop3_command): Fix a
- bug in error-setting code.
- (pop3_connect): Don't re-prompt for password in the KPOP case.
- (pop3_get_response): New function, split out from
- camel_pop3_command.
- (connect_to_server): Use pop3_get_response to parse the greeting
- message, and error out appropriately if it's -ERR.
-
-2000-07-02 Dan Winship <danw@helixcode.com>
-
- * camel-folder.c (camel_folder_freeze, camel_folder_thaw): New
- functions to freeze and thaw a folder (to prevent message/folder
- changed signals in the middle of a long series of operations).
- (camel_folder_class_init): Change signals to GTK_RUN_FIRST.
- (message_changed, folder_changed): Add default implementations
- that stop the emission and record info for later if the folder is
- frozen.
-
- * providers/mbox/camel-mbox-folder.c (mbox_sync): leftover fixes
- from the close->sync change: don't destroy the ibex, summary, and
- search when syncing.
- (append_message): emit "folder_changed" on a successful append.
-
-2000-07-02 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-mime-utils.c (uudecode_step): A rather complex uudecoder
- written in the spirit of Zucchi-ness, is it up to par? Only the
- Z-man can tell us :-)
-
-2000-07-01 Dan Winship <danw@helixcode.com>
-
- * camel-service.c (camel_service_get_name): New method, to return
- an end-user-friendly name corresponding to a service. (eg, "POP
- service for danw on trna.helixcode.com").
-
- * providers/imap/camel-imap-store.c,
- providers/mbox/camel-mbox-store.c,
- providers/nntp/camel-nntp-store.c,
- providers/pop3/camel-pop3-store.c,
- providers/sendmail/camel-sendmail-transport.c,
- providers/smtp/camel-smtp-transport.c: Implement.
-
- * providers/imap/Makefile.am: remove unneeded
- libcamelimap_la_LDADD.
-
- * providers/pop3/camel-pop3-store.c (connect_to_server): fix the
- CAPA-parsing code to not get into an infinite loop.
-
-2000-07-01 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_get_message): Fixed
- the bug that would sometimes leave part of the server response
- tacked on to the end of the message.
-
- * camel-folder.c: Renamed _by_uid methods. Since we no longer
- have get-by-number methods, no need to have the _by_uid
- extensions.
- (get_message_by_uid): Renamed to get_message
- (delete_message_by_uid): Renamed to delete_message
- (summary_get_by_uid): Renamed to get_message_info
-
- * providers/mbox/camel-mbox-folder.c:
- * providers/pop3/camel-pop3-folder.c:
- * providers/imap/camel-imap-folder.c:
- * providers/vee/camel-vee-folder.c: Updated to reflect
- camel-folder changes.
-
-2000-06-30 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-folder.c (camel_folder_copy_message_to): New function, to
- copy a message from one folder to another. The default
- implementation just uses append_message, but providers can
- implement more efficient versions for use when both folders are on
- the same store.
-
- * broken-date-parser.[c,h]: Utilities for parsing broken
- date strings.
-
- * providers/imap/camel-imap-folder.c (imap_move_message_to):
- (imap_copy_message_to): Implemented.
-
- * camel-mime-utils.c (header_decode_date): Wrote some code to try
- and un-mangle broken date formats and then parse that new string
- instead.
-
-2000-06-30 Dan Winship <danw@helixcode.com>
-
- * camel-folder.c (camel_folder_move_message_to): New function, to
- move a message from one folder to another. The default
- implementation just uses append_message and delete_message, but
- providers can implement more efficient versions for use when both
- folders are on the same store.
-
-2000-06-29 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_expunge): Should now
- print a meaningful error message when it doesn't succeed
-
-2000-06-28 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c (imap_connect): Changed to
- keep prompting user for a valid password until it either
- authenticates or until Canceled by the user.
- (camel_imap_command_extended): Improved speed (replaced the
- g_strjoinv call with a faster implementation)
-
- * providers/pop3/camel-pop3-store.c
- (camel_pop3_command_get_additional_data): Fixed.
- (pop3_connect): Changed to keep prompting the user for a
- password until it either works or until Canceled by the user.
-
- * providers/mbox/camel-mbox-summary.c: General cleanup
- (camel_mbox_summary_sync): Fixed a memory leak and added
- CamelException handling.
-
- * providers/mbox/camel-mbox-store.c (delete_folder): Fixed a
- memory leak
-
- * providers/mbox/camel-mbox-folder.c (mbox_append_message):
- Default 'off_t seek' to -1 so as to make sure it's initialized
- before it's used in the case of a bad stat() call.
- (mbox_sync): Updated
- (mbox_expunge): Updated
-
-2000-06-27 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c (imap_connect): Move the
- CAPABILITY command here so we don't have to keep checking
- each time we open a folder.
- (camel_imap_command_extended): If we are doing an EXAMINE,
- don't bother doing a SELECT first.
-
- * providers/imap/camel-imap-folder.c (imap_init): Update so
- folder->has_search_capability depends on the parent IMAP store
- (since this is really dependant on the IMAP implementation and
- not the folder)
-
-2000-06-27 Christopher James Lahey <clahey@helixcode.com>
-
- * providers/smtp/camel-smtp-transport.c: Don't close the filter
- stream when done with it (this causes the source stream to close);
- Instead, just flush it when done.
-
-2000-06-27 Michael Zucchi <zucchi@zedzone.mmc.com.au>
-
- * camel-folder-search.c (search_header_contains): Make header
- search 'to' match 'to', and not 'from', small typo, fixes #317.
-
-2000-06-26 Christopher James Lahey <clahey@helixcode.com>
-
- * providers/mbox/camel-mbox-summary.c: Added debugging
- information.
-
-2000-06-23 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c:
- * providers/imap/camel-imap-folder.c: Improved folder parsing.
- Not specifying a namespace should no longer list the entire
- filesystem.
-
-2000-06-22 Chris Toshok <toshok@helixcode.com>
-
- * providers/nntp/.cvsignore: ignore test-newsrc
-
- * providers/nntp/camel-nntp-store.c,
- providers/nntp/camel-nntp-store.h,
- providers/nntp/camel-nntp-folder.c,
- providers/nntp/camel-nntp-folder.h,
- providers/nntp/camel-nntp-utils.c: Bring the nntp provider up to a
- state where it builds and is usable with the current camel. there
- are still warts (semi-broken .newsrc file handling, and a lack of
- a subscribe ui -- in fact no way to add a new server, really), but
- it'll display news messages.
-
- * providers/nntp/Makefile.am (libcamelnntp_la_SOURCES): add
- camel-nntp-newsrc.c
- (libcamelnntpinclude_HEADERS): add camel-nntp-newsrc.h
- also, add test-newsrc stuff.
-
- * providers/nntp/test-newsrc.c: new file that tests the newsrc
- stuff by parsing and regurgitating a .newsrc file for a particular
- server.
-
- * providers/nntp/camel-nntp-newsrc.c,
- providers/nntp/camel-nntp-newsrc.h: new files, initial support for .newsrc files.
-
-2000-06-22 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_get_message_count):
- Oops. Now appends the namespace to the folder before querying
- for the number of messages.
-
- * providers/imap/camel-imap-store.c (imap_folder_exists): New
- convenience function for use by imap_create().
- (get_folder): If folder is specified as "/", we really want
- "INBOX".
-
- * providers/sendmail/camel-sendmail-provider.c:
- * providers/vee/camel-vee-provider.c:
- * providers/smtp/camel-smtp-provider.c:
- * providers/mbox/camel-mbox-provider.c:
- * providers/pop3/camel-pop3-provider.c:
- * providers/imap/camel-imap-provider.c: Updated
-
- * camel-session.c: Moved service_cache hash table into the
- providers.
- (service_cache_remove): Updated.
- (camel_session_get_service): Updated.
-
- * camel-url.c (camel_url_hash): Took out the hashing of
- url->passwd. We don't want this anymore.
-
- * providers/imap/camel-imap-folder.c (imap_init): Took out
- references to 'namespace'
- (camel_imap_folder_init): Same
-
- * providers/imap/camel-imap-folder.h: No more namespace. We are
- instead going to use url->path as the namespace.
-
-2000-06-21 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c (imap_create): Modified to
- use the "namespace" (url->path) if it exists.
-
- * providers/imap/camel-imap-folder.c (imap_delete_message_by_uid):
- Now just sets the deleted flag on the summary rather than speaking
- directly to the IMAP server. This is both faster and cleaner.
-
-2000-06-21 Dan Winship <danw@helixcode.com>
-
- * providers/pop3/camel-pop3-store.c (query_auth_types): Fix dumb
- bug.
-
-2000-06-21 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_get_message_by_uid):
- We are getting mail in IMAP now!! whoo-hoo!. Stripped out the
- filtering so messages may have some dot-stuffing, but the
- filtering can always be added back in later when we know it
- works and isn't the problem.
-
-2000-06-21 Peter Williams <peterw@curious-george.helixcode.com>
-
- * providers/mbox/camel-mbox-folder.c (mbox_init): Use the basename
- of the mailbox so we don't get pathnames like ~/evolution/inbox///movemail.ibex
-
-2000-06-21 Dan Winship <danw@helixcode.com>
-
- * camel-folder-summary.c (message_info_new): Set date_received
- based on the first (most recent) "Received" header.
-
-2000-06-20 Dan Winship <danw@helixcode.com>
-
- * camel-mime-part.c (write_to_stream): flush the filter stream
- before unreffing it, so it will camel_mime_filter_complete.
-
- * camel-stream-filter.c (camel_stream_filter_class_init): Fix a
- braino so camel_stream_flush works here.
-
- * camel-stream-mem.c (stream_seek): Fix a bug that resulted in
- large attachments being silently dropped.
-
- * providers/pop3/camel-pop3-store.c
- (camel_pop3_command_get_additional_data): Don't use g_strjoinv
- here, since it is O(n^2) on the length of the output string, and
- we can do O(n).
-
- * camel-mime-part-utils.c
- (simple_data_wrapper_construct_from_parser): add a CRLF decoder
- after the QP/B64 decoder if it's text.
-
-2000-06-20 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_get_summary): Only
- fetch the summary if the folder summary doesn't already exist.
- When the summary *does* exist, start fetching from 1, not 0.
- (imap_free_summary): Don't do anything here.
- (imap_finalize): Free the summary here instead of in
- imap_free_summary().
- (imap_set_message_flags): Implemented
- (imap_sync): Added code to set flags on messages that have had
- their flags changed (however I #if'd it out until we are more
- confidant in the IMAP code :)
- (imap_summary_get_by_uid): Now parese flags correctly.
- (imap_get_summary): Now parese flags correctly. Also correctly
- parses the UID correctly.
-
- * camel-url.c (check_equal): No need to check s1 if s2 is NULL
- (camel_url_equal): Don't check the passwd component of the url.
-
-2000-06-20 Dan Winship <danw@helixcode.com>
-
- * camel-folder-summary.c (camel_folder_summary_add): mark the
- message info with CAMEL_MESSAGE_FOLDER_FLAGGED if we change the
- uid, so the folder will know that it's dirty.
-
-2000-06-20 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c (camel_imap_command_extended):
- Now returns the last line of data that the server sends back as
- well. This is needed for commands like SELECT (like Peter pointed
- out).
- (camel_imap_command): No longer checks for SELECT (no need)
-
- * providers/imap/camel-imap-folder.c: Added namespace stuff
- which we will need later on...
- (imap_parse_subfolder_line): Convenience function for use in
- get_subfolder_names()
- (imap_get_subfolder_names): Updated. Also changed it to use LIST
- instead of LSUB (temporary change).
-
-2000-06-19 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_init): Set
- summary equal to NULL.
- (imap_get_summary): Store the summary in the ImapFolder
- (imap_summary_get_by_uid): If we have a summary cache in the
- ImapFolder, first check to see if that message info is in the
- cached summary first, if not fetch it directly from the IMAP
- server and append it to the summary cache.
- (imap_get_message_flags): Don't free the message info that we get
- back from summary_get_by_uid as we don't want to be corrupting our
- cached summary.
-
-2000-06-19 Peter Williams <peterw@curious-george.helixcode.com>
-
- * providers/imap/camel-imap-store.c (camel_imap_command{,_extended}): When
- SELECT'ing a folder for an IMAP command, use _extended to grab the entire
- response (before we just used camel_imap_command and missed the OK codes)
-
-2000-06-18 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_summary_get_by_uid):
- Now gets the message flags as it should.
- (imap_get_summary): Same as imap_summary_get_by_uid
- (imap_get_permanent_flags): Return the permanent flags stored
- on the folder.
- (imap_get_message_flags): Return message flags associated with
- given uid. Note: we may want to somehow cache summary info so
- that we don't have to keep querying the IMAP provider in
- imap_summary_get_by_uid().
-
-2000-06-17 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_free_summary): We were
- leaking memory - but not anymore!
- (imap_get_summary): We now get the UIDs and the beginnings of the
- code to get the message flags as well.
-
-2000-06-17 Dan Winship <danw@helixcode.com>
-
- * camel-mime-parser.c (folder_scan_header): Don't copy newlines
- into the parsed header text, and turn any number of tabs and
- spaces after a newline into a single space.
-
-2000-06-17 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_init): Should now
- correctly do CAPABILITY.
-
-2000-06-17 Dan Winship <danw@helixcode.com>
-
- * providers/mbox/camel-mbox-summary.c: Add some debugging printfs
- when rebulding summary to help figure out why people's summaries
- are always being rebuilt.
-
-2000-06-17 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_search_by_expression):
- Began to implement, need to get information on how to
- deconstruct @expression into an IMAP search expression and
- parse the results.
- (imap_init): Now queries the IMAP provider for CAPABILITY to
- determine if SEARCH is implemented or not.
-
- * providers/imap/imap.c: Removed - no longer a need to have
- this as an example for anyone interesting to help mecode IMAP
- support.
-
-2000-06-16 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_sync): Added code
- to expunge if called for (still need to finish coding this).
- (imap_get_uids): Implemented.
- (imap_get_summary): Found a way to get the date
- (imap_summary_get_by_uid): Same.
- (imap_free_summary): Implemented.
-
- * string-utils.c (strstrcase): Fixed a compile warning
-
- * providers/imap/camel-imap-summary.c: Removed - we don't
- need a CamelImapSummary structure.
-
-2000-06-16 Dan Winship <danw@helixcode.com>
-
- Move flag handling from CamelMimeMessage to CamelFolder. This
- simplifies several flag-handling pieces of code in the mailer, and
- lets you change a message's flags without having to fetch the
- message body. It also means that fully-constructed
- CamelMimeMessages are now essentially constant, which will help
- simplify locking issues later since it means two threads
- interested in the same message can just work with separate copies
- of it.
-
- * camel-mime-message.h (struct _CamelMimeMessage): Removed flags
- and user_flags (moved to summary). Removed expunged and
- message_number which were unused. Removed message_uid and folder
- which are no longer needed in the new scheme.
- (struct CamelMimeMessageClass): Removed message_changed signal and
- get/set_message_number methods.
-
- * camel-mime-message.c: Updates for CamelMimeMessage changes.
- (camel_mime_message_get/set_flags,
- camel_mime_message_get/set_user_flag): Replaced with methods in
- CamelFolder.
- (camel_flag_get, camel_flag_set, camel_flag_list_size,
- camel_flag_list_free): Moved verbatim to camel-folder-summary.c
-
- * camel-folder.c (camel_folder_get/set_message_flags,
- camel_folder_get/set_message_user_flag): New methods (and
- corresponding useless default implementations)
- (camel_folder_class_init): add a message_changed signal
-
- * camel-folder-summary.c (camel_flag_get, camel_flag_set,
- camel_flag_list_size, camel_flag_list_free): Moved here from
- camel-mime-message.c
-
- * providers/mbox/camel-mbox-folder.c (message_changed): Removed.
- (mbox_get_message_flags, mbox_set_message_flags,
- mbox_get_message_user_flag, mbox_set_message_user_flag): Tweak
- summary bits as appropriate. (Functionality moved here from
- message_changed.)
- (mbox_get_message_by_uid): Update for CamelMimeMessage changes
- (less stuff to initialize).
-
- * providers/imap/camel-imap-folder.c (message_changed): Remove
- this. It was just copied from the mbox provider and doesn't deal
- with the real IMAP flag stuff anyway. (So there's currently no
- flag support in the IMAP provider.)
- (imap_get_message_by_uid): Update for CamelMimeMessage changes.
-
- * providers/vee/camel-vee-folder.c: (message_changed): Remove old
- one. Add a new one to listen for message_changed on each folder
- and re-emit message_changed signals that correspond to messages in
- the vfolder.
- (vee_get/set_message_flags, vee_get/set_message_user_flag): Proxy
- flag setting to the underlying real messages.
- (vee_append_message): Removed for now; there's no way to translate
- this into the new CamelMimeMessage/CamelFolder scheme, but (a)
- there's also no code which would ever call it and (b) we're
- probably going want a better interface than append_message for
- message drag and drop to work anyway. To be revisited.
-
-2000-06-16 Dan Winship <danw@helixcode.com>
-
- * camel-mime-utils.c (rfc2047_decode_word):
- * camel-mime-part-utils.c (simple_data_wrapper_construct_from_parser):
- * camel-folder-summary.c (summary_build_content_info):
- KLUDGE! Since neither ETable nor GtkHTML supports UTF-8 yet,
- output ISO-8859-1 instead, so Ettore can read his Italian mail. :)
- This will be reverted later.
-
-2000-06-15 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_get_summary): Started to
- implement - may want to use ENVELOPE instead of BODY.PEEK[HEADER]
- (imap_summary_get_by_uid): Started to code, I've got to find a way to
- get the date in time_t format and also get the flags
-
- * string-utils.c (strstrcase): Added this convenience function - I
- know about strcasestr() but it's not portable.
-
-2000-06-15 Dan Winship <danw@helixcode.com>
-
- * camel-service.c: Remove camel_service_connect_with_url. (URLs
- must be specified when the service is requested from the session,
- so that there can only ever be one service for any URL.)
-
- * camel-folder.c: (camel_folder_open, camel_folder_is_open,
- camel_folder_get_mode): Kill. Folders are now always open, and
- handle "closing" sorts of operations at sync or finalize time.
- (camel_folder_sync): renamed from camel_folder_close. Syncs state
- to the store but doesn't necessarily close/disconnect.
-
- * providers/*/camel-*-folder.c: Merge "open" methods into "init"
- methods. Rename close to sync and update appropriately.
-
- * providers/imap/camel-imap-store.c: Remove camel_imap_store_open
- and camel_imap_store_close, which should not have been copied from
- the POP provider (where the exist to work around limitations of
- the POP protocol).
-
- * providers/mbox/camel-mbox-summary.c: fix a bug. (don't expunge
- deleted messages if called with expunge == FALSE)
-
- * providers/pop3/camel-pop3-store.c (connect_to_server): Check
- server for various interesting extensions.
-
- * providers/pop3/camel-pop3-folder.c (get_uids): If the server
- supports UIDL, use real UIDs rather than fake ones.
- (etc): Map uids back to numbers appropriately
-
- * providers/mbox/camel-mbox-folder.c (mbox_append_message): Fix to
- previous change: make sure the "seek" variable ends up with the
- value it should.
-
- * providers/mbox/camel-mbox-summary.c (summary_rebuild): Update
- summary mtime as well as size.
-
-2000-06-14 Dan Winship <danw@helixcode.com>
-
- * providers/mbox/camel-mbox-folder.c (mbox_append_message): if the
- mbox doesn't end with a '\n', write one before appending the new
- message.
-
-2000-06-14 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-mime-filter-crlf.c (filter): Updated the encoder to allocate
- more memory (since we are also now adding dots). Also updated the
- decoder as we have found that it sometimes passes the end of the
- buffer.
-
- * providers/pop3/camel-pop3-folder.c (get_message_by_uid): Took out the
- filter code (we already filter in
- camel_pop3_command_get_additional_data)
-
- * camel-folder.c (init): Updated: a separator is now a char* rather
- than a single char because IMAP can have a string for a directory
- separator. Also, since IMAP does not begin with a directory separator,
- there is a new argument (path_begins_with_sep) which decides if a
- directory should begin with a directory separator.
-
- * providers/imap/camel-imap-store.c (imap_create): Since, on connect,
- Camel tries to create INBOX (which already exists on every IMAP
- provider) we can return TRUE when the folder name is "INBOX".
-
- * providers/vee/camel-vee-folder.c (vee_init): Updated.
-
- * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Updated.
-
- * providers/mbox/camel-mbox-store.c (get_folder): Updated.
-
- * providers/mbox/camel-mbox-folder.c (mbox_init): Updated.
-
- * providers/pop3/camel-pop3-folder.c (camel_pop3_folder_new): Updated.
-
-2000-06-14 Dan Winship <danw@helixcode.com>
-
- * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_sync):
- Renamed from camel_mbox_summary_expunge. Takes a gboolean saying
- whether to expunge or just sync the mbox file. Change some
- g_errors to g_warning so we don't abort. Make the quick
- X-Evolution updating code lseek around correctly. Update the
- mbox mtime in the summary file even in the quick case.
-
- * providers/mbox/camel-mbox-summary.h: make
- CAMEL_MESSAGE_FOLDER_NOXEV not conflict with
- CAMEL_MESSAGE_FOLDER_FLAGGED defined in camel-mime-message.h
-
- * providers/mbox/camel-mbox-folder.c (mbox_close): call
- camel_mbox_summary_sync to save flag state if not expunging.
- (mbox_expunge): Update for camel_mbox_summary_expunge rename.
-
-2000-06-13 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c (camel_imap_store_open):
- (camel_imap_store_close): Added.
- (camel_imap_command_extended): Fixed a segfault and updated
- to use camel_imap_status()
- (camel_imap_command): Updated to use camel_imap_status()
- (camel_imap_status): New convenience function for parsing
- the return status of an IMAP command
-
-2000-06-12 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c (imap_get_message_by_uid):
- Works like the POP fetch code, should work temporarily until
- we get around to coding it the way it "Should Be".
-
- * providers/pop3/camel-pop3-folder.c (get_message_by_uid): Now uses
- the camel-mime-filter-crlf decoder when retrieving messages.
-
- * camel-mime-filter-smtp.c: Deprecated.
-
- * providers/smtp/camel-smtp-transport.c (smtp_data): Updated to use
- camel-mime-filter-crlf with my 'dot' extension in place of
- camel-mime-filter-smtp
-
- * camel-mime-part.c (write_to_stream): Updated to reflect changes
- made to camel-mime-filter-crlf.c
-
- * camel-mime-filter-crlf.c (filter): Modified to be able to
- encode/decode dots ("\n.\n"<->"\n..\n"). Also fixed the decoder
- so that it should no longer get caught in an infinite loop.
-
-2000-06-12 Dan Winship <danw@helixcode.com>
-
- * providers/*/Makefile.am: don't pass a second (incorrect) -rpath
- in addition to the (correct) one automatically provided by
- automake.
-
- * camel-mime-filter-crlf.c: New filter to do CRLF<->LF conversion.
- (Currently only tested in the LF->CRLF direction.)
-
- * camel-mime-part.c (write_to_stream): if content-type is text,
- and it's QP or B64 encoded, pass through the CRLF filter before
- the other filter to satisfy the "canonical encoding" rules in the
- MIME spec.
-
-2000-06-09 Dan Winship <danw@helixcode.com>
-
- * camel-session.c (camel_session_query_authenticator): Add another
- argument, "mode", which can be CAMEL_AUTHENTICATOR_ASK or
- CAMEL_AUTHENTICATOR_TELL, so callers can get the app to un-cache
- bad info.
-
- * providers/pop3/camel-pop3-store.c (pop3_connect): uncache the
- password if it doesn't work.
-
-2000-06-09 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-stream.c (stream_read): Updated to reflect
- changes made in camel-imap-store.c
-
- * providers/imap/camel-imap-store.c (imap_create): No longer checks to
- make sure a folder doesn't already exists (as this is no longer needed)
- (camel_imap_command): Now takes a CamelFolder argument so it can detect
- whether or not it needs to SELECT a folder or not
- (camel_imap_command_extended): Same.
-
- * providers/smtp/camel-smtp-transport.c (smtp_connect): Will now always
- send EHLO first, if that fails it will fall back on HELO.
- (esmtp_get_authtypes): Should now correctly parse authtypes.
-
-2000-06-07 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-summary.c: Now builds (not that it's worth
- much yet).
-
- * providers/imap/camel-imap-folder.c (imap_get_uids): Now uses the
- correct cast to a CamelImapMessageInfo structure (should get rid of
- compile warnings).
-
- * providers/imap/Makefile.am: Added rules to build
- camel-imap-stream
-
- * providers/imap/camel-imap-store.c (get_folder): Update.
- Moved imap_create here.
-
- * providers/imap/camel-imap-folder.c (delete_messages): Remove.
- (imap_create): Removed.
- (imap_delete): Removed.
- (imap_exists): Removed.
-
- * providers/imap/camel-imap-stream.h: Added typedef's for the stream
-
- * providers/imap/camel-imap-stream.c: Modified to build cleanly
-
-2000-06-07 Not Zed <NotZed@HelixCode.com>
-
- * camel-mime-utils.c (header_msgid_decode_internal): Properly
- dereference warning/debug messages.
- (header_references_decode): Check we actually have msgid stuff
- before trying to decode it ...
-
-2000-06-06 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-imap-stream.[c,h]: Removed
-
- * providers/imap/camel-imap-stream.[c,h]: Relocated to this
- location
-
- * providers/imap/camel-imap-summary.c: Added
-
-2000-06-06 Dan Winship <danw@helixcode.com>
-
- * camel-folder.c: Remove exists, create, delete. A CamelFolder
- now always references an existing folder. Remove delete_messages
- too since it wasn't being used. Add a "create" flag to
- get_subfolder saying whether or not to create the subfolder if it
- doesn't yet exist.
-
- * camel-store.c (camel_store_get_folder): Add a "create" flag to
- say whether or not to create the folder if it doesn't yet exist.
- (camel_store_delete_folder): New method, moved from CamelFolder.
- (cache_folder, uncache_folder): Fix up a bit.
- (get_folder_name): Explain what this is for.
-
- * providers/mbox/camel-mbox-folder.c:
- * providers/mbox/camel-mbox-store.c: Update. Remove support for
- hierarchical folders to simplify this for now, since we're not
- using it, and it's not completely clear how they should work in an
- ELocalStorage world. Needs to be revisited.
-
- * providers/pop3/camel-pop3-folder.c (delete_messages): Remove.
- * providers/pop3/camel-pop3-store.c (get_folder): Update.
-
- * providers/vee/camel-vee-folder.c (exists): Remove.
- * providers/vee/camel-vee-store.c (vee_get_folder): Update.
-
-2000-06-06 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-*.[c,h]: Started on getting
- imap to build cleanly (tho some work has not been completed
- so it still won't build until camel-imap-summary is finished
- along with a few methods in camel-imap-folder)
-
- * camel-stream.[c,h]: Changed the read and write method prototypes
- to return an ssize_t type rather than an int and also changed
- the 'number of bytes' to read or write to a size_t type
-
- * camel-stream-fs.c: same as above
-
- * camel-stream-mem.c: again, same as above
-
- * camel-stream-buffer.c: same
-
- * camel-imap-stream.[c,h]: Added this new stream, cache's previously
- read data so each successive call will instead read from the cache
-
-2000-06-05 Dan Winship <danw@helixcode.com>
-
- * camel-mime-part.c (camel_mime_part_set_disposition): fix
- typo/braino (set "Content-Disposition", not "Content-Description")
- (camel_mime_part_set_filename): const poison
-
-2000-06-02 Not Zed <NotZed@HelixCode.com>
-
- * camel-mime-utils.c (base64_encode_step): Ick, damn signs! Fix a
- bug with sign extended bytes.
-
- * camel-mime-filter-smtp.c (filter): Changed layout/logic slightly
- (to match From filter)
-
-2000-06-02 Jeffrey Stedfast <fejj@helixcode.com>
-
- * camel-mime-filter-smtp.c (filter): Fixed the filter so that it
- wouldn't insert garbage under certain conditions.
-
-2000-06-02 Christopher James Lahey <clahey@helixcode.com>
-
- * camel-session.c: Don't ref the services in the cache.
-
-2000-06-02 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/smtp/camel-smtp-transport.c: Rearanged where debug
- fprintf statements we placed so that any data the server sends
- back is printed out before an exception is set and the function
- returns.
-
-2000-06-02 Not Zed <NotZed@HelixCode.com>
-
- * camel-mime-utils.c (header_decode_date): If we get a funny
- result, just throw it out. Basically a fix for the one true
- broken TradeClient.
-
-2000-06-01 Not Zed <NotZed@HelixCode.com>
-
- * camel-folder-summary.c (message_info_free): Free
- references/messsage id.
- (message_info_save): Save them.
- (message_info_load): Load them.
- (message_info_new): And get them from the new message.
- (CAMEL_FOLDER_SUMMARY_VERSION): Bumped for new changes.
-
- * camel-folder-summary.h: Added references and messageid to
- summary.
-
-2000-06-02 Christopher James Lahey <clahey@helixcode.com>
-
- * camel-session.c: Ref and unref objects in the service cache
- properly.
-
- * camel-store.c: Ref the folder when returning it using
- lookup_folder. Used the folder's full name for the key for the
- folder cache since that's used to uncache it.
-
-2000-06-02 Dan Winship <danw@helixcode.com>
-
- Fun with purify.
-
- * providers/pop3/camel-pop3-store.c (pop3_connect): free msg on
- success as well as failure.
- (camel_pop3_command_get_additional_data): free buf after reading
- the last line (".").
-
- * providers/pop3/camel-pop3-folder.c (get_message_by_uid): free
- body data after creating the memstream from it (which will copy
- the data).
-
- * providers/mbox/camel-mbox-folder.c (mbox_finalize): free summary
- and index paths.
-
- * camel-data-wrapper.c (finalize): unref the stream, if it exists.
-
-2000-06-01 Not Zed <NotZed@HelixCode.com>
-
- * camel-mime-part.c (construct_from_parser): For a message part,
- set the default content-type to message/rfc822. Maybe needs to be
- done for multiparts too?
-
-2000-05-31 Not Zed <NotZed@HelixCode.com>
-
- * camel-mime-message.c (construct_from_parser): Typo in assersion.
-
- * camel-mime-parser.c (folder_scan_step): Use a default type of
- message/rfc822 for multipart/digest. Bug Z192.
- (folder_scan_drop_step): Remove warning.
-
-2000-05-30 Not Zed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-folder.c (mbox_append_message): Init
- filter_from to NULL, for exception case.
- (mbox_get_message_by_uid): Cast off_t to long int for diagnostics.
-
- * camel-url.c (camel_url_hash): Hash funciton for using camel
- url's as hash keys.
- (camel_url_equal): equal function for same.
-
- * camel-session.c (camel_session_finalise): Free cached services.
- (camel_session_init): Init service cache.
- (service_cache_remove): destroy callback to remove a service from
- the cache.
-
- * camel-store.c (get_folder_internal): Remove the extra ref of the
- folder. That seems the right behaviour ...?
- (camel_store_get_type): Doh, actually call store init, so the
- cache works.
- (cache_folder): strdup the folder name! no wonder it never found
- it again.
-
-2000-05-30 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-folder.c: Implemented a few more
- methods like imap_append and 1 or 2 others
-
-2000-05-29 Not Zed <NotZed@HelixCode.com>
-
- * camel-store.c (camel_store_init): Move it to here. If this
- level is going to maintain it, it should set it up. Lets see what
- caching folders breaks :(
-
- * providers/pop3/camel-pop3-store.c (camel_pop3_store_init): Dont
- init folder cache here.
-
- * providers/mbox/camel-mbox-summary.c
- (camel_mbox_summary_expunge): Make sure we copy messages which are
- still intact to the new folder.
- (camel_mbox_summary_expunge): Update the frompos as well when
- moving the content.
- (camel_mbox_summary_expunge): Remove some debug, and dont offset
- frompos?
-
- * providers/vee/camel-vee-folder.c (vee_folder_build): Check the
- searched folder is open before trying to search it.
- (message_changed): Track changes to the source message in the
- summary.
- (folder_changed): Track folder changes, re-query the folder that
- changed, and cascade the changed event as well.
- (camel_vee_folder_finalise): Free subfolder and subfolder summary.
-
-2000-05-29 Dan Winship <danw@helixcode.com>
-
- * camel-service.c (camel_service_new): Fix up some glib
- precondition stuff. Try to set the URL in camel_service_new before
- checking whether or not it's "empty" so that you can successfully
- set "sendmail:" as a URL.
-
-2000-05-28 Dan Winship <danw@helixcode.com>
-
- * camel-provider.h: Add a domain field to CamelProvider, to say
- what kind of data it provides.
-
- * providers/imap/camel-imap-provider.c:
- * providers/mbox/camel-mbox-provider.c:
- * providers/pop3/camel-pop3-provider.c:
- * providers/sendmail/camel-sendmail-provider.c:
- * providers/smtp/camel-smtp-provider.c: Set domain to "mail".
-
- * providers/nntp/camel-nntp-provider.c: Set domain to "news".
-
- * providers/vee/camel-vee-provider.c: Set domain to "vfolder". (So
- it doesn't end up being listed as a potential mail source in the
- mail config wizard.)
-
- * providers/pop3/camel-pop3-store.c: Split apart password and APOP
- auth, since some servers seem to do both, but don't really.
- (connect_to_server): Renamed from try_connect. Now actually does
- the connection up to the point of checking the greeting for APOP
- support.
- (query_auth_types): Return APOP, if appropriate. Call
- pop3_disconnect after connect_to_server since we don't really want
- to be connected.
- (pop3_connect): Use connect_to_server rather than duplicating
- code. Fix a one-byte buffer overrun in the APOP code.
- (pop3_disconnect): Make this able to clean up after a partial
- connect.
- (connect_to_server): Remove port number from error message since
- it's not terribly useful and we were getting it from the wrong
- place anyway.
-
- * camel-mime-utils.c (header_address_list_format_append): Use
- `foo@bar' rather than `"" <foo@bar>' for email addresses with no
- name component.
-
-2000-05-27 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c: Removed
- camel_imap_command_get_additional_data() as it was
- completely useless, replaced with
- camel_imap_command_extended() which may eventually replace
- camel_imap_command() as well.
-
- * providers/imap/camel-imap-store.h: Modified to reflect
- changes made to camel-imap-store.c
-
- * providers/imap/camel-imap-folder.c: Wrote the first of many
- methods: camel_imap_init(), imap_open(), imap_expunge(),
- imap_get_message_count(), and imap_get_subfolder_names()
-
-2000-05-26 Dan Winship <danw@helixcode.com>
-
- * camel-multipart.c (camel_multipart_init): Don't set a default
- boundary. Require the caller to do that.
- (set_boundary): if boundary is NULL, generate a "random" boundary.
-
- * camel-mime-part-utils.c
- (camel_mime_part_construct_content_from_parser): Add a call to
- camel_multipart_set_boundary after creating a new multipart.
-
-2000-05-25 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap/camel-imap-store.c (try_connect): Removed
- Exception code - Pop doesn't seem to set exceptions
-
- * providers/imap/camel-imap-folder.c: Initial code, mostly
- just a template for future code
-
- * providers/imap/imap.[c,h]: Source code from my personal
- mailer - for reference only!
-
-2000-05-25 NotZed <NotZed@HelixCode.com>
-
- * camel-mime-part-utils.c
- (camel_mime_part_construct_content_from_parser): Replace simple
- data wrapper here too, oops.
-
- * Makefile.am (libcamel_la_SOURCES): Removed
- camel-simple-data-wrapper again. Less code to maintain == better
- code.
-
- * camel-data-wrapper.c (construct_from_stream): Fixes for bug
- where text attachments dont work. Made data-wrapper concrete for
- the second time.
-
-2000-05-23 NotZed <NotZed@HelixCode.com>
-
- * providers/vee/camel-vee-folder.c (vee_folder_build_folder):
- Update the vfolder details for a single folder.
-
-2000-05-25 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/smtp/camel-smtp-transport.c (_send_to): Took out code
- that had been there to reconnect to the server if it was not
- already connected - Mailer code was fixed so that this should not
- be needed.
-
- * providers/imap/camel-imap-store.[c,h]: Initial code.
-
-2000-05-24 Dan Winship <danw@helixcode.com>
-
- * camel.h: Re-add camel-simple-data-wrapper.h, which was removed
- for some reason.
-
-2000-05-24 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/smtp/camel-smtp-transport.[c,h]: Moved global
- variables into struct CamelSmtpTransport to make SMTP
- thread-safe
-
- * providers/imap/camel-imap-*.h: Stolen from Mbox. Rough structure
- for Imap.
-
-2000-05-23 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/imap: Added some initial code to the camel tree
- for IMAPv4
-
- * providers/imap/.cvsignore: Added to repository
-
- * providers/smtp/camel-smtp-transport.c: Added debug fprintf's
- so that testers can provide more information. Tested with simple
- messages and a reply to the hello@helixcode.com default message
- but should really be tested more.
- (smtp_data): Fixed to use data_wrapper_write_to_stream.
-
- * camel-mime-filter-smtp.c (filter): Modified to escape all lines
- beginning with a '.' and to place a \r before each \n if one did
- not previously exist. Removed code to escape "From " as it was
- found to not be needed for SMTP.
-
-2000-05-22 Jeffrey Stedfast <fejj@helixcode.com>
-
- * providers/smtp/camel-smtp-transport.c (smtp_data): Fixed the
- filtered stream. Fixes for stream changes, updated to use
- camel-mime-filter-smtp.
-
- * Makefile.am: Added camel-mime-filter-smtp.c
-
- * camel-mime-filter-smtp.[c,h]: Added to camel tree
- Smtp filter used to change \n into \r\n, escape lone dots,
- and escape "From "'s.
-
-2000-05-19 NotZed <NotZed@HelixCode.com>
-
- * camel-simple-data-wrapper.c (construct_from_stream): If we
- already have been constructed, unref our content.
- (write_to_stream): Check we've been constructued, and change for
- stream api changes.
-
- * camel-mime-parser.c: Removed exception stuff.
-
- * md5-utils.c (md5_get_digest_from_stream): repaired.
-
- * camel-mime-message.c: Remove exception from write_to_stream, and
- fix, and fix formatting.
-
- * providers/sendmail/camel-sendmail-transport.c (_send_internal):
- Fix for stream changes.
-
- * providers/pop3/camel-pop3-store.c (camel_pop3_command): Fixes
- for stream changes.
-
- * providers/mbox/camel-mbox-folder.c, and elsewhere, fix all
- stream api changes.
- (mbox_append_message): Use stream_close() now its back.
- (mbox_append_message): unref the from filter.
-
- * camel-stream-mem.c: And here.
-
- * camel-stream-fs.[ch]: Here too.
-
- * camel-stream-filter.c: Likewise. This is getting tedious.
-
- * camel-stream-buffer.c (stream_write): Fix a few little problems.
- (stream_close): Reimplement.
- (camel_stream_buffer_read_line): Slightly more efficient version,
- that also only allocates the right amount of memory for strings.
-
- * camel-seekable-substream.c: Likewise.
-
- * camel-seekable-stream.[ch]: Remove exceptions, fix formatting,
- changes for stream (re)fixes. set_bounds returns an error.
-
- * camel-stream.[ch]: Remove exceptions. Make flush and reset return
- an error code, repair all the screwed up formatting, and put back
- close.
-
- * camel-mime-part-utils.c
- (camel_mime_part_construct_content_from_parser): And here.
-
- * camel-mime-part.c (camel_mime_part_set_content): And this too.
- (write_to_stream): Fixed for stream changes.
-
- * camel.h: Fixed.
-
- * providers/vee/camel-vee-folder.c (vee_search_by_expression):
- Implement. Performs an intersection of the two searches.
- (camel_vee_folder_finalise): Unref search folders.
- (vee_append_message): Implement append.
-
-2000-05-18 Dan Winship <danw@helixcode.com>
-
- * camel-folder.c: remove message_number_capability and require uid
- capatibility.
- (camel_folder_list_subfolders, camel_folder_get_uid_list,
- camel_folder_get_subfolder_info, camel_folder_get_message_info):
- removed
- (camel_folder_get_subfolder_names,
- camel_folder_free_subfolder_names): new subfolder interfaces.
- (camel_folder_get_uids, camel_folder_free_uids): new uid
- interfaces
- (camel_folder_get_summary, camel_folder_free_summary): new summary
- interfaces
-
- * providers/mbox/camel-mbox-folder.c,
- * providers/nntp/camel-nntp-folder.c:
- * providers/vee/camel-vee-folder.c: Update for changes
-
- * providers/pop3/camel-pop3-folder.c: Implement get_uids, update
- for other changes.
-
-2000-05-18 NotZed <NotZed@HelixCode.com>
-
- * providers/vee/camel-vee-folder.c: Guess!
-
- * camel-folder-search.c (search_user_flag): Implement user_flag
- search term.
-
- * camel-folder-search.h: Added user_flag search capability
- (user-flag "blah")
-
- * providers/mbox/camel-mbox-folder.c (mbox_init): Set USER flag in
- permanent flags for the folder.
-
-2000-05-17 Dan Winship <danw@helixcode.com>
-
- * camel-folder.c: Remove unused async open/close and
- copy_message_to functions.
- Rename functions without initial _. Fix glib preconditions and
- gtk-doc comments.
-
-2000-05-17 Dan Winship <danw@helixcode.com>
-
- * camel-data-wrapper.c: remove get/set_output_stream operations.
- They're redundant with write_to_stream, and CamelMimePart and
- CamelMimeMessage only implement the latter, meaning that trying to
- get_output_stream on a CamelMimeMessage that was built from pieces
- rather than being parsed from a stream doesn't work. Anything that
- uses get_output_stream can be rewritten to use write_to_stream, so
- we'll standardize on that.
- (camel_data_wrapper_new): remove this: CamelDataWrapper is
- supposed to be an abstract class.
- (write_to_stream): remove default implementation. (Moved to
- CamelSimpleDataWrapper)
-
- * camel-simple-data-wrapper.c: resurrect, although it's not really
- the same thing it was before. A simple data wrapper, which is
- backed by a CamelStream.
-
- * camel-mime-part-utils.c
- (simple_data_wrapper_construct_from_parser): Use
- construct_from_stream rather than set_output_stream.
- (camel_mime_part_construct_content_from_parser): Change
- camel_data_wrapper_new to camel_simple_data_wrapper_new.
-
- * camel-mime-part.c (camel_mime_part_set_content): Change
- camel_data_wrapper_new to camel_simple_data_wrapper_new.
-
-
-2000-05-17 Darin Adler <darin@eazel.com>
-
- * camel-folder-summary.c: (message_info_load):
- Quick fix to get it to compile. I hope I don't get into trouble.
-
-2000-05-17 Dan Winship <danw@helixcode.com>
-
- * camel.h: Don't include the no-longer-distributed
- possibly-to-be-removed headers.
-
- * providers/smtp/camel-smtp-transport.c
- (smtp_get_email_addr_from_text): fix an off-by-one error in
- address parsing
- (smtp_data): use camel_data_wrapper_get_output_stream rather than
- data_wrapper->output_stream
-
-2000-05-17 NotZed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-folder.c (message_changed): Snoop
- changes to user flags on the message into the summary as well.
-
- * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_init):
- Changed version init to include the parent class version info
- (i.e. add it not overwrite it).
-
- * camel-folder-summary.c (message_info_new): Initialise user_flags
- to empty.
- (message_info_load): And load user flags.
- (message_info_save): And save user flags.
- (message_info_free): And free them.
- (CAMEL_FOLDER_SUMMARY_VERSION): Bumped file revision.
-
- * camel-folder-summary.h: Added user-flags to summary.
-
- * camel-mime-message.c (camel_mime_message_set_user_flag): Dont
- use a hashtable for user flags.
- (camel_mime_message_get_user_flag): And changed here too.
- (camel_flag_get): New interface to get a flag from a flag
- list. Flag lists are easier to work with than hash tables, and
- save memory too.
- (camel_flag_set): And set.
- (camel_flag_list_free): And free.
- (free_key_only): Discard.
- (finalize): Remove the flag list.
-
-2000-05-17 Jeffrey Stedfast <fejj@stampede.org>
-
- * providers/smtp/camel-smtp-transport.c: (smtp_helo): Error
- checking on gethostbyaddr() eliminating a possible segfault.
-
-2000-05-16 NotZed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-folder.c (mbox_delete_message_by_uid):
- Implement.
-
-2000-05-12 NotZed <NotZed@HelixCode.com>
-
- * camel-movemail.c (camel_movemail): Open the destination with
- O_APPEND, so we dont blow away a partially transferred mbox.
- (camel_movemail): Loop if we get errno=INTR, and not fail.
-
-2000-05-11 NotZed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-summary.c (summary_rebuild): Update
- the summarised file size, if everything went ok.
- (camel_mbox_summary_expunge): Clear header flags after updating.
-
-2000-05-16 Chris Toshok <toshok@helixcode.com>
-
- * providers/nntp/camel-nntp-folder.c:
- * providers/nntp/camel-nntp-folder.h:
- * providers/nntp/camel-nntp-provider.c:
- * providers/nntp/camel-nntp-store.c:
- * providers/nntp/camel-nntp-utils.c:
- * providers/nntp/camel-nntp-utils.h:
- get things working with new camel summary stuff.
-
- * providers/nntp/camel-nntp-summary.c:
- * providers/nntp/camel-nntp-summary.h:
- removed files since camel-folder-summary does all we need.
-
-2000-05-15 Jeffrey Stedfast <fejj@stampede.org>
-
- * providers/smtp/camel-smtp-transport.c: Added some preliminary
- AUTH support.
-
-2000-05-15 Dan Winship <danw@helixcode.com>
-
- * camel-folder.h: Remove camel_folder_get_summary, which no longer
- exists.
-
-2000-05-11 Dan Winship <danw@helixcode.com>
-
- * Makefile.am: remove some cruft that we're not currently using.
-
- * camel-stream-mem.c (camel_stream_mem_new_with_buffer): Change
- to match prototype (size_t vs unsigned int) so it works on 64-bit
- machines. Noted by msw.
-
-2000-05-11 NotZed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-folder.c (message_changed): Indicate
- the summary changed also.
-
-2000-05-11 Jeffrey Stedfast <fejj@stampede.org>
-
- * providers/smtp/camel-smtp-transport.c: (smtp_helo):
- Updated to more closely comply with RFC 821 standards
-
-2000-05-11 NotZed <NotZed@HelixCode.com>
-
- * camel-mime-part.c (write_to_stream): Unref the filter after
- adding it to the filtering stream.
-
- * providers/mbox/camel-mbox-summary.c
- (camel_mbox_summary_finalise): Free the folder path.
- (camel_mbox_summary_update): Also save summary when done.
- (camel_mbox_summary_expunge): Unindex items when deleting them.
- (camel_mbox_summary_expunge): Save the index as well as the
- summary.
-
- * camel-folder-summary.c (camel_folder_summary_finalise): Free the
- summary path.
- (camel_folder_summary_touch): New function, indicate the summary
- info changed.
- (camel_folder_summary_remove): Dirty here.
-
- * camel-internet-address.c (internet_decode): Free multiple entry
- addresses properly.
-
- * camel-mime-utils.c (header_decode_mailbox): Plugged another
- memleak, free text after converting it.
- (header_decode_addrspec): More leaks plugged.
-
- * camel-mime-message.c (finalize): Free message_uid.
- (finalize): Free the recipients hashtable.
-
-2000-05-11 <notzed@helixcode.com>
-
- * camel-folder-summary.c (camel_folder_summary_finalise): Free
- summary items and charset filters.
-
-2000-05-10 <notzed@helixcode.com>
-
- * camel-folder-summary.c (camel_folder_summary_finalise): Don't
- free stuff in p, after we've free'd p.
-
- * providers/mbox/camel-mbox-folder.c (mbox_append_message): Unref
- the stream we created for appending.
-
-2000-05-10 Jeffrey Stedfast <fejj@stampede.org>
-
- * providers/smtp/camel-smtp-transport.c: (camel_smtp_transport_class_init):
- Added initialization for service_class
-
-2000-05-10 Dan Winship <danw@helixcode.com>
-
- * camel-multipart.c (write_to_stream): fix a stupid typo. Thank
- you, C.
-
- * camel-mime-part.c (write_to_stream): don't ref the stream before
- wrapper a filter around it, since nothing will ever unref it.
-
-2000-05-10 Christopher James Lahey <clahey@helixcode.com>
-
- * Makefile.am: Added camel-types.h, camel-folder-pt-proxy.h, and
- camel-thread-proxy.h.
-
-2000-05-09 Dan Winship <danw@helixcode.com>
-
- * providers/sendmail/camel-sendmail-transport.c (_send_internal):
- Bleah. Can't fsync a pipe. As a quick kludge, just don't
- stream_flush it. The right fix will require bringing back
- stream_close though.
-
-2000-05-09 Jeffrey Stedfast <fejj@stampede.org>
- * camel-internet-address.[c,h]: Undid my changes (moved
- struct _address back into came-internet-address.c)
- * providers/smtp/camel-smtp-transport.c: (_send): changed
- from using it's own address manipulation (using struct _address)
- to using camel_internet_address_get(). Also some format changes
- to keep consistant with the rest of Camel
-
-2000-05-09 Jeffrey Stedfast <fejj@stampede.org>
-
- * camel-internet-address.[c,h]: Moved struct _address from
- camel-internet-address.c to camel-internet-address.h
- (hopefully this doesn't break anything...)
- * providers/smtp/camel-smtp-transport.c: (_send): now
- populates the recipient list with To, Cc, and Bcc addresses.
- Should now be able to use this module.
-
-2000-05-09 Dan Winship <danw@helixcode.com>
-
- * providers/mbox/camel-mbox-folder.c (mbox_get_message_by_uid):
- one more refcounting fix I missed before.
-
-2000-05-08 Jeffrey Stedfast <fejj@stampede.org>
-
- * providers/smtp/camel-smtp-transport.c: no longer frees memory it
- shouldn't, updated to reflect camel-stream changes involving
- CamelException (perhaps it should use a different CamelException
- variable than is passed to the camel smtp module?)
-
-2000-05-08 Dan Winship <danw@helixcode.com>
-
- * camel-stream.c (camel_stream_read, camel_stream_write,
- camel_stream_flush, camel_stream_reset, camel_stream_printf,
- camel_stream_write_to_stream): Use CamelException to signal
- failure.
- (camel_stream_write_strings): Remove. camel_stream_printf is more
- useful in most of the places that used this.
- (camel_stream_write_string): Change from macro to function to
- prevent problems with double-evaluation.
-
- * camel-seekable-stream.c (camel_seekable_stream_seek,
- camel_seekable_stream_set_bounds): Use CamelException.
- (reset): Update.
-
- * camel-seekable-substream.c, camel-stream-buffer.c,
- camel-stream-filter.c, camel-stream-fs.c, camel-stream-mem.c:
- Update.
-
- * camel-stream-fs.c: Remove the virtual init functions and move
- the code into the creator functions. Add CamelExceptions to
- creation functions that could fail.
-
- * camel-data-wrapper.c (camel_data_wrapper_write_to_stream): Use
- CamelException.
- * camel-mime-message.c, camel-mime-part.c, camel-multipart.c
- (write_to_stream): Update.
-
- * camel-mime-parser.c: add an exception to the mime parser private
- data and pass that to stream functions as needed.
-
- * gmime-content-field.c, md5-utils.c: Update (badly) for stream
- changes.
-
- * camel-exception.h (camel_exception_is_set): convenience macro.
-
- * providers/Makefile.am: disable SMTP for now
-
- * providers/mbox/camel-mbox-folder.c (mbox_append_message): Pass
- CamelException to the functions that now need it. Check the
- exception after calling camel_stream_flush, and fail if it fails.
- (mbox_get_message_by_uid): More updates.
-
- * providers/pop/camel-pop3-folder.c,
- providers/pop/camel-pop3-store.c,
- providers/sendmail/camel-sendmail/transport.c: Update.
-
-
-2000-05-08 NotZed <NotZed@HelixCode.com>
-
- * camel-mime-message.c (process_header): Format From and Reply-To
- to at least a decoded string. Should probably store them as an
- camelinternetaddress.
-
- * Merged NEW_SUMMARY branch back to trunk, and resolved conflicts.
-
- * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_update):
- Return status.
- (camel_mbox_summary_expunge): Force an update of the summary
- before we do anything.
- (camel_mbox_summary_expunge): Build new xev line in xevnew, and
- free that, and consify xev.
- (camel_mbox_summary_load): If we are rebuilding from scratch, make
- sure we clear the summary content.
-
- * camel-stream-filter.c (do_close): We NEED a stream close.
-
-2000-05-07 Dan Winship <danw@helixcode.com>
-
- Make camel not leak like a sieve.
-
- * camel-object.c: New subclass of GtkObject which is now the base
- of the Camel object hierarchy. Currently the only difference
- between CamelObject and GtkObject is that CamelObjects don't start
- out floating.
-
- * *.h: Move a bunch of typedefs to camel-types.h. Standardize on
- using <camel/foo.h> in header files rather than <foo.h>, "foo.h",
- or "camel/foo.h". Remove some unneeded includes.
-
- * camel-address.c, camel-data-wrapper.c, camel-folder-search.c,
- camel-folder-summary.c, camel-folder.c, camel-mime-filter.c,
- camel-mime-parser.c, camel-service.c, camel-session.c,
- camel-stream.c: These are now subclasses of CamelObject.
-
- * camel-data-wrapper.c (set_output_stream):
- * camel-medium.c (set_content_object):
- * camel-seekable-substream.c
- (init_with_seekable_stream_and_bounds):
- * providers/mbox/camel-mbox-folder.c (mbox_get_message_by_uid):
- remove gtk_object_sink calls.
-
- * camel-stream-buffer.c (init_vbuf):
- * camel-stream-filter.c (camel_stream_filter_new_with_stream):
- ref the original stream.
-
- * camel-folder-summary.c (camel_folder_summary_finalise): unref
- the filters when finalizing.
-
- * camel-mime-part-utils.c
- (simple_data_wrapper_construct_from_parser,
- camel_mime_part_construct_content_from_parser):
- * camel-mime-part.c (camel_mime_part_set_content): Unref objects
- that are created only to be handed off to other objects. If
- they're going to be needed later, they will have been additionally
- ref'ed by the object that needs them.
-
- * providers/pop3/camel-pop3-folder.c (get_message_by_number):
- unref the message stream after creating the data from it.
-
- * camel-stream.c, camel-stream-buffer.c, camel-stream-filter.c,
- camel-stream-fs.c, camel-stream-mem.c: Remove camel_stream_close,
- since its semantics are dubious (what happens when you close a
- stream other people still have references on?).
-
- * providers/nntp/camel-nntp-store.c:
- * providers/smtp/camel-smtp-transport.c:
- * providers/pop3/camel-pop3-store.c:
- replace camel_stream_close calls with gtk_object_unref.
-
- * providers/mbox/camel-mbox-folder.c:
- * providers/nntp/camel-nntp-folder.c:
- * providers/sendmail/camel-sendmail-transport.c:
- replace camel_stream_close with camel_stream_flush +
- gtk_object_unref
-
-2000-05-06 Dan Winship <danw@helixcode.com>
-
- * providers/pop3/camel-pop3-store.c (query_auth_types): A machine
- which serves neither POP nor KPOP is not a POP server.
-
- * providers/smtp/camel-smtp-provider.c: Note in the description
- that this provider is not yet tested.
-
-2000-05-08 <notzed@helixcode.com>
-
- * camel-mime-part.c (write_to_stream): Free the filter stream when
- done.
-
- * camel-mime-parser.c (folder_seek): Make sure we add the \n
- terminal when we seek as well (frob!).
-
- * camel-mime-utils.c (header_decode_addrspec): Plug minor memleak.
-
- * camel-mime-part.c (finalize): Free header tables once finished.
-
- * camel-folder-summary.c (camel_folder_summary_remove): Dont try
- to access info after its free'd.
-
-2000-05-07 NotZed <NotZed@HelixCode.com>
-
- * camel-mime-part.c (write_to_stream): Apply encoding to content
- part, when writing to a stream *sigh*.
-
- * camel-stream-filter.c (do_write): implement write for the
- filtering stream. Writes shouldn't be mixed with reads.
- (do_flush): Implemented flush. Again write/flush shouldn't be
- mixed with reads. Only flushes if the last op was write.
- (do_close): Force flush on close.
-
- * camel-mime-filter.c (filter_run): Oops, make sure we include the
- backlen in the total length before passing onto the filter.
-
- * camel-mime-filter-from.c: New filter, munges 'From ' lines into
- '>From ', for mbox.
-
- * camel-mime-parser.c (camel_mime_parser_header_remove): New
- function to remove the parser's raw header, rather than
- manipulating the header directly (wich doesn't work with
- mempools).
-
- * camel-mime-utils.c (header_address_list_clear): Fixed some
- broken(tm) logic, which would leak entries on multivalued lists.
-
- * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_load):
- Use ibex_save() to save the ibex. Makes a big difference to
- startup times for very large mailboxes.
- (camel_mbox_summary_expunge): Dum de dum, reimplemented. Designed
- to be much more robust, and to stop immediately if anything awry
- happens.
- (copy_block): Utility function to copy n bytes from one fd to
- another.
- (header_write): Utility function to write out raw headers to an
- fd.
- (camel_mbox_summary_update): Incremental summary updater.
-
- * providers/mbox/camel-mbox-folder.c (mbox_get_message_by_uid):
- Dont unref the stream, because of the broken(tm) ref model of gtk
- widget that for some odd reason is being perpetuated in camel.
- (mbox_expunge): Reenable expunge again.
- (mbox_append_message): Removed the optimised mbox append. If its
- an issue, it can go back later. Cleaned up a lot, checks error
- returns, and automagically translates 'From ' into '>From' as
- necessary.
-
-2000-05-07 <notzed@helixcode.com>
-
- * camel-mime-filter.c (filter_run): Oops, forgot to add the
- backlen to the pre-buffer (*poof*).
-
-2000-05-07 NotZed <NotZed@HelixCode.com>
-
- * camel-mime-message.c (construct_from_parser): Allow
- HSCAN_FROM_END to terminate the processing of a message.
-
- * camel-folder-summary.c (perform_content_info_load): Ick, dont
- try and append a node onto its own list.
- (camel_folder_summary_clear): Actually clear the indexes after
- we've removed the messages.
- (camel_folder_summary_clear): Set dirty if it changes.
- (camel_folder_summary_load): Clear dirty.
- (camel_folder_summary_save): Only save if dirty.
-
- * providers/mbox/camel-mbox-summary.c (summary_header_load): Oops,
- remember to call that parent class first ...
- (summary_header_save): Here too.
- (camel_mbox_summary_load): Do more checking to verify the index
- contents as well as teh summary contents, against the mbox
- contents.
- (camel_mbox_summary_load): Removed some fo that checking, it needs
- more code to work reliably.
-
-2000-05-07 <notzed@helixcode.com>
-
- * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_load):
- Set the size and mtime of the mbox we indexed once done.
-
- * camel-folder-summary.c (camel_folder_summary_set_index): Dont
- write the index if it changes - let the claler fix it (uh, kind of
- impacts performance).
- (camel_folder_summary_load): close in.
-
- * camel-folder-summary.c (summary_format_string): Check header
- exists before trying to strip its leading spaces.
-
-2000-05-06 NotZed <NotZed@HelixCode.com>
-
- * camel-folder.h: Removed summary info from here, and include
- camel-folder-summary.h as well.
-
- * camel-mime-parser.c (camel_mime_parser_step): Allow it to accept
- a NULL databuffer.
-
- * providers/mbox/camel-mbox-summary.c: Totally new file, now
- subclasses camel-folder-summary.
-
- * camel-folder-summary.c (message_info_load): Load the uid as a
- string.
- (message_info_save): And save too.
- (camel_folder_summary_clear): New function, clears the contents of
- the summary.
-
- * providers/mbox/camel-mbox-folder.c: Fixes for summary changes.
- (mbox_get_message_by_uid): Completely redone. Now cross-checks
- the summary information to make sure we get a real message.
- (mbox_append_message): Disabled the copy version of append for
- now.
- (mbox_expunge): Temporarily disabled the expunge function, until
- it is put back in camel-mbox-summary.c
-
-2000-05-05 NotZed <NotZed@HelixCode.com>
-
- * camel-folder-summary.c: And same here ...
- (camel_folder_summary_encode_fixed_int32): Ugh, fwrite doesn't
- return -1 on error ..
- (camel_folder_summary_decode_fixed_int32): Neither deos fread.
- (camel_folder_summary_encode_token): Fix here too.
- (summary_build_content_info): Use start-headers to get the pos of
- the message, not parser_tell(), which might not be what we
- expected because of parser_unstep().
- (camel_folder_summary_encode_token): Use bserch() to tokenise the
- values, rather than a linear search.
-
- * camel-mime-utils.c: Defined out some memory profiling stuff I
- left there by mistake.
- (header_decode_mailbox): Dont try to append the word part of a
- local address if we ran out of words.
-
- * camel-mime-parser.c (folder_scan_content): Apply the fix from
- the header scanner to here too.
- (folder_scan_header): Only check for end of header if we have
- space for it (didn't end the read with a newline)
- (folder_scan_header): inptr is the only real thing we need
- registerised for performance. Try to help the compiler be smart
- about it ..
- (folder_scan_header): Simplified the save header case a tad.
-
- Commented out some memory profiling stuff.
-
-2000-05-05 <notzed@helixcode.com>
-
- * camel-mime-utils.c (header_decode_mailbox): Plug a memory leak.
- (header_decode_text): Fixed memory leaks with g_string_append().
- (header_encode_string): And here too, and a few other places. The
- glib api is so awful ...
- (header_content_type_decode): More memory leaks.
-
-2000-05-05 <notzed@helixcode.com>
-
- * camel-mime-parser.c (folder_scan_init_with_fd): Make sure we
- init the end of buffer sentinal!
- (folder_scan_init_with_stream): And here too ...
-
-2000-05-04 NotZed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-folder.c (summary_get_message_info):
- Maxcount is minimum of the max and the requested count, not the
- maximum :)
-
- * camel-mime-parser.c (folder_scan_content): Properly set midline,
- so we dont falsely catch offset boundary markers (i.e. From inside
- content).
- (folder_read): Set a sentinal on the end of the read data (\n) so
- we dont have to check the buffer boundary in the inner loop.
- (mempool_*): New experimental memory management routines, speed
- up simple structure parsing by about 25% ... not compiled in by
- default. Something similar may be needed for camel-mime-utils to
- address performance issues with g_malloc and friends.
-
- * camel-mime-utils.c: Added a macro w(x) used to wrap all warnings
- about mime/rfc violations, so they can be turned off.
-
- * camel-folder-summary.c (summary_build_content_info): Step after
- the end of a message ...
- Turn into a stand-alone program for testing and profiling.
-
-2000-05-04 Dan Winship <danw@helixcode.com>
-
- * providers/pop3/camel-pop3-store.c (pop3_connect): Don't fall
- back to plaintext passwords if APOP fails, since it should also
- fail.
-
-2000-05-04 Dan Winship <danw@helixcode.com>
-
- * camel-session.c (camel_session_list_providers): New function to
- replace camel_provider_scan. Returns a list of either (a) all
- currently-loaded providers, or (b) all available providers.
-
- * camel-url.[ch]: Add an "empty" flag to CamelURL (indicating that
- it contains only a protocol).
-
- * camel-service.c (camel_service_query_auth_types): Make this take
- a CamelException (since it may have to try to connect to the
- server, and it might not able to.)
-
- * providers/pop3/camel-pop3-store.c: add KPOP (Kerberized POP)
- support. This is mostly so I have two kinds of authmech to play
- with instead of just one. (But it does actually work.)
-
- * providers/smtp/camel-smtp-transport.c (query_auth_types): update
- for prototype change, but disable the functionality, since it
- doesn't really support any auth types yet.
- (camel_smtp_transport_get_type): add an object init function to
- set the service url_flags.
-
-2000-05-04 NotZed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-summary.c: Yes, and anotherone.
-
- * camel-mime-utils.c: And another one.
-
- * camel-mime-part.c: And another one.
-
- * camel-mime-part-utils.c: And another one.
-
- * camel-folder-search.c: And another one.
-
- * camel-mime-parser.c: Reverted a change wihtout a ChangeLog entry.
-
-2000-05-04 NotZed <NotZed@HelixCode.com>
-
- * camel-folder-summary.[hc]: Yes, CamelFolderSummary is back ...
- ... re-usable class to summarise and index any stream or message
- and to manage/load/save the created summaries.
-
- * camel-folder.c: Include string.h to kill a warning.
-
-2000-05-03 Jason Leach <leach@wam.umd.edu>
-
- * Makefile.am (INCLUDES): add $(UNICODE_CFLAGS) to the INCLUDES,
- people who installed libunicde in non-standard include paths need
- this.
-
-2000-05-03 NotZed <NotZed@HelixCode.com>
-
- * camel-folder.h: Added pos/bodypos/endpos to the basic message
- content info object. Size to be removed? Moved the
- messageconentinfo and messageinfo back to camel-folder-summary.h.
-
- * camel-mime-filter-index.c (camel_mime_filter_index_set_ibex):
- New function to (re)set the index to use on a filter.
-
- * camel-mime-parser.c (camel_mime_parser_scan_from): Whole bunch
- of inline docs.
- (camel_mime_parser_drop_step): New function to drop a state from
- the parser. Needs more testing.
-
- * camel-mime-utils.c (rfc2047_decode_word): If the iconv handle is
- -1, then dont try and convert (crashes unicode_iconv?).
- (rfc2047_decode_word): Use alloca for variables instead of
- g_malloc - by the rfc they should always be short.
- (rfc2047_decode_word): If we can't do the charset conversion, undo
- the quoted-printable/base64 at least? Should probably convert
- unknown characters to the utf-8 unknown character.
-
-2000-05-02 Larry Ewing <lewing@helixcode.com>
-
- * camel-mime-utils.c (header_decode_date): fix typo when
- dereferencing saveoffset.
-
-2000-05-02 NotZed <NotZed@HelixCode.com>
-
- * camel-folder-search.c: Added some header doco.
-
- * camel.h: REmove gmime-utils.h from here.
-
- * providers/mbox/camel-mbox-search.[ch]: Removed. Functionally
- redundant.
-
- * providers/mbox/camel-mbox-folder.c (mbox_search_by_expression):
- Use the new CamelFolderSearch class to do the actual searching,
- just setup the search here.
-
- * camel-folder-search.[ch]: A helper class that providers may
- subclass to provide their own search functionality, or they can
- simply use as is, it supports body searches if an ibex is
- supplied, and header searches if a summary is supplied.
-
-2000-05-02 Matt Loper <matt@helixcode.com>
-
- * Makefile.am: set G_LOG_DOMAIN.
- * providers/MH/Makefile.am: same.
- * providers/maildir/Makefile.am: same.
- * providers/mbox/Makefile.am: same.
- * providers/nntp/Makefile.am: same.
- * providers/pop3/Makefile.am: same.
- * providers/sendmail/Makefile.am: same.
- * providers/smtp/Makefile.am: same.
-
-2000-05-02 NotZed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-search.c
- (camel_mbox_folder_search_by_expression): Dont store/remove
- current search from the search list.
-
- * providers/mbox/camel-mbox-folder.h: Removed searches list,
- searches are all sync now.
-
- * gmime-utils.[ch]: What the hell, remove it. This will break the
- nntp provider. The mime parser can be used instead though.
- Removed from all code including it (but none were using it).
-
- * gmime-utils.c (_store_header_pair_from_string): Removed bizarre
- string_dichotomy version of this. This code is somewhat redundant
- now, and is headed for death anyway.
-
- * gstring-util.c (g_string_dichotomy): Same with this one.
- (g_string_clone): Removed a memory leak, g_string_new() allocates
- its own memory.
- (g_string_append_g_string): Allow to append an empty gstring onto
- another gstring, dont abort()!
-
- * string-utils.c (string_dichotomy): Removed this incredibly weird
- function.
-
- * camel-folder.c (_create): Replaced the rather obtuse use of
- "string_dichotomy" function with a simple strrchr(). Still not
- sure it'll work.
-
- * camel-folder-summary.c: cvs removed a long-removed file.
-
- * camel-mime-parser.c (folder_scan_header): Fix the previous
- overflow problem properly (can happen in 2 places).
- (header_append): A new macro to include the code changed above, so
- it only appears in one place.
- (folder_scan_step): Change the content type to text/plain if the
- multipart is broken. Doesn't actually change the header though.
- (header_append): Also move the header-start tracking stuff here.
- Could be a static function to save code.
-
-2000-05-02 <notzed@helixcode.com>
-
- * camel-mime-part-utils.c
- (simple_data_wrapper_construct_from_parser): Dont use autofill on
- these fucking long function anmes!!!!!!
-
-2000-05-02 NotZed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-summary.c
- (camel_mbox_summary_expunge): Fix the offset for the summary when
- an item is expunged to take account of the From line.
-
-2000-05-01 NotZed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-folder.h (CamelMboxFolder): Removed
- search_id.
-
- * providers/mbox/camel-mbox-search.c
- (camel_mbox_folder_search_cancel): Remove.d
- (camel_mbox_folder_search_complete): Removed.
- (camel_mbox_folder_search_by_expression): Changed back to sync
- api.
- (struct _searchcontext): Removed cancelled flag.
- (find_context): Removed.
- (func_header_contains): Debug out some search stuff.
-
- * providers/mbox/camel-mbox-search.h
- (camel_mbox_folder_search_by_expression): Moved back to sync api.
-
- * providers/mbox/camel-mbox-summary.c
- (camel_mbox_summary_set_flags_by_uid): New function to update the
- flags in the summary.
- (camel_mbox_summary_expunge): Expunge messages from a folder.
- (offset_content): Re-align offsets of summary when messages
- added/removed to an existing summary.
- (camel_mbox_summary_remove_uid): Remove a message summary entry by
- uid.
- (index_folder): Restore flags from X-Evolution header, if they are set.
- (index_folder): Make sure we index using a decimal uid, since
- thats what everything else indexes off (oops).
- Upped SUMMARY_VERSION as a result.
- (camel_mbox_summary_expunge): Oops, my wrong, use the string uid
- to unindex on.
-
- * providers/mbox/camel-mbox-folder.c (_get_message_by_uid):
- Connect to the message_changed signal.
- (_init): Set permanent flags to something reasonable. No user
- flags yet ...
- (message_changed): If the flags of the message change, update the
- flags in the summary.
- (mbox_expunge): Implement the expunge.
- (camel_mbox_folder_class_init): Renamed all leading _'s to mbox_'s
- (mbox_expunge): Emit a folder_changed signal on expunge (uh, even
- if it didn't ...)
-
- * camel-folder.c (_finalize): Uh, dont free permanent_flags
- anymore (this wouldn't failed anyway, it was a GList !!!)
- (camel_folder_search_complete): Removed.
- (camel_folder_search_cancel): Removed.
- (camel_folder_expunge): Changed to only allow expunge on an open
- folder. It doesn't make sense for mbox, otherwise (?)
- (camel_folder_class_init): Added a folder_changed signal.
-
- * camel-folder.h (struct _CamelFolder): Change permanent_flags to
- a bitfield.
- (list_permanent_flags): Renamed to get_permanent_flags, and
- returns a bitfield.
- (camel_folder_expunge): Changed expunge to a void type. The
- messages would no longer be useful after they have been removed
- ...
- (CamelFolderClass): New function summary_get_by_uid() to get a single
- summary.
- (*search*): Moved back to synchronous search api ... *sigh*
-
- * camel-folder.h: Removed CamelSearchFunc.
-
- * camel-mime-message.c (set_flag): Removed.
- (camel_mime_message_set_flag): Removed.
- (get_flag): Removed.
- (camel_mime_message_get_flag): Removed.
- (add_flag_to_list): Removed.
- (get_flag_list): Removed.
- (camel_mime_message_get_flag_list): Removed.
- (camel_mime_message_get_flags): New interface to get system flags.
- (camel_mime_message_set_flags): " to set ".
- (camel_mime_message_get_user_flag): To get a user flag.
- (camel_mime_message_set_user_flag): To set a user flag.
- (finalize): Hmm, the old one free'd the key and data, not good
- when the data is a boolean ...
-
-2000-04-30 Dan Winship <danw@helixcode.com>
-
- * camel-provider.h: Tweak the definition of CamelProvider. Among
- other things, a provider may now be both a store and a transport.
-
- * camel-provider.c: Remove a lot of code we had no intention of
- using. This now only contains two functions: camel_provider_init
- to read the installed .urls files, and camel_provider_load to
- load and register a new provider.
-
- * camel-session.c: Remove more unused code and simplify some of
- the remaining code. The list of available provider modules is now
- stored in the session, and it handles calling camel_provider_load
- to load them as needed. Provider registration is now done by
- calling back from the module init routine, which allows a single
- module to register providers for multiple URL types.
-
- * providers/*: Update provider structures and init routines for
- the new stuff. Add a .urls file to each provider specifying what
- urls it handles, and install that with the library.
-
- * providers/nntp/camel-nntp-provider.c: Add hints towards
- supporting both news: and nntp: URLs, and using nntp as both a
- store and a transport.
-
-2000-04-29 Dan Winship <danw@helixcode.com>
-
- * camel-internet-address.c (camel_internet_address_get): const
- poison
-
- * camel-mime-part-utils.c
- (simple_data_wrapper_construct_from_parser):
- camel_mime_parser_tell() returns an offset from where it started
- parsing, not necessarily from the start of data. Since we're
- parsing a bounded seekable_stream, we need to add the stream's
- starting bound to camel_mime_parser_tell's return value to
- create the substream in the right place.
-
- * camel-seekable-substream.c
- (camel_seekable_substream_new_with_seekable_stream_and_bounds):
- say CAMEL_STREAM_UNBOUND rather than -1 in doc.
-
- * camel-seekable-stream.c (camel_seekable_stream_seek): Add more
- info to docs.
-
-2000-04-28 Dan Winship <danw@helixcode.com>
-
- * camel-mime-parser.c (folder_scan_header): fix a bug that would
- cause corruption with very long headers.
-
-2000-04-27 Ettore Perazzoli <ettore@helixcode.com>
-
- * providers/pop3/Makefile.am (INCLUDES): Add `-I$(srcdir)/../../..'
- to pick the Camel includes.
- * providers/sendmail/Makefile.am (INCLUDES): Likewise.
-
- * camel.h: Don't #include <camel/data-wrapper-repository.h> anymore.
-
-2000-04-27 NotZed <NotZed@HelixCode.com>
-
- * camel-mime-utils.c (check_header): Dont try and check a NULL
- header.
-
- * camel-recipient.[ch]: Dead. Its not pining.
-
- * camel-mime-message.h: Dont include recipients.h anymore.
-
- * camel-mime-message.c (camel_mime_message_add_recipient): Accept
- name/address separately, and store in an CamelInternetAddress.
- (add_recipient): Removed.
- (remove_recipient): Removed.
- (remove_recipient_address): Renamed from remove_receipient, works
- via address.
- (camel_mime_message_remove_recipient_name): New function to remove
- by name.
- (get_recipients): Removed.
- (camel_mime_message_get_recipients): Return a camel-internet-address.
- (write_to_stream): No longer write receipients directly.
- (write_recipients_to_stream): Removed.
- (write_one_recipient_to_stream): Removed.
- (camel_mime_message_init): Setup recipients hashtable, rather than
- usign the recipients stuff.
- (set_recipient_list_from_string): Killed, a violent and lengthy
- death.
- (process_header): Simplified recipient handling code a lot.
- (received_date_str, sent_date_str, reply_to_str, subject_str,
- from_str): Removed some oddly-defined global statics.
- (camel_mime_message_class_init): Dont initialise above variables
- anymore.
- (init_header_name_table): Removed, use a table to init this, and
- do it in class init (2 lines of code ...).
-
- * camel-news-address.c: Class to represent news addresses -
- currently empty, and not built.
-
- * camel-internet-address.h: Class to represent internet (email)
- addresses.
-
- * camel-address.h: Abstract class to represent (lists of)
- addresses.
-
-2000-04-27 Dan Winship <danw@helixcode.com>
-
- * camel-mime-part.c (write_to_stream): Revert previous change. I
- was confused.
-
- * camel-url.[ch] (camel_url_encode, camel_url_decode): expose
- these routines.
-
-2000-04-26 Dan Winship <danw@helixcode.com>
-
- * camel-mime-part.c (write_to_stream): Only write a newline
- between the headers and the content object if the content object
- is not a CamelMedium. (If the content is a medium, it may have its
- own headers, which then need to go before the blank line.)
-
- * camel-mime-body-part.[ch]: Remove. We weren't using the fields
- that made this different from camel-mime-part, so it basically
- just forced us to do lots of gratuitous typecasting.
-
- * camel-multipart.[ch]: Use CamelMimePart. Remove the multipart
- parent stuff, since we weren't using that either.
-
- * etc: update for CamelMimeBodyPart -> CamelMimePart
-
-2000-04-26 Dan Winship <danw@helixcode.com>
-
- * camel-medium.c (set_content_object): sink the content object
- after referencing it.
-
- * camel-mime-part.c: fix various little things in the handling
- of CamelMedium methods. Change camel_mime_part_set_text to the
- more generic camel_mime_part_set_content.
-
- * camel.h: sync to current reality
-
- * camel-folder-utils.[ch]: removed
-
- * camel-mime-utils.c (header_format_date): fix format specifier
- for time zone. Fix typo in month names array.
-
-2000-04-26 NotZed <NotZed@HelixCode.com>
-
- * camel-seekable-substream.c (stream_seek): Changed to have
- absolute seek semantics, not relative to the bounds.
-
- * camel-seekable-stream.c (reset): When we reset, seek to the
- start of the bound, if there is one.
- (stream_tell): Make tell virtual.
-
- * camel-stream-filter.c (do_available): Removed.
-
- * camel-stream-buffer.c: Remove leading _'s from static functions.
- (stream_read): Renamed from read(). Fancy that conflicting! (my
- boo!) Others too.
-
- * providers/pop3/camel-pop3-folder.c (get_message_by_number):
- Changed to stream_mem interface.
-
- * providers/mbox/camel-mbox-folder.c (_get_message_by_uid): Fixed
- for streamfs interface changes, and implement a failure case.
- (_append_message): Changed for fs stream interface change.
-
- * camel-multipart.c (print_part): Iterate rahter than callback. I
- hate glists's interface (hence, move this to write_to_stream).
- (write_to_stream): Return an error (yuck, this is a royal PITA to
- do with the stream write interface).
-
- * camel-mime-message.c: Removed leading _ from static names.
-
- * camel-mime-part.h: construct_from_parser() now returns an error
- code.
-
- * camel-mime-part-utils.c
- (camel_mime_part_construct_content_from_parser): Changed to use a
- camel-data-wrapper instead of a camel-simple-data-wrapper (no
- change needed elsewhere?).
- (simple_data_wrapper_construct_from_parser): Fixes for stream-mem
- interface changes.
-
- * camel-simple-data-wrapper.[ch],
- camel-simple-data-wrapper-stream.[ch],
- camel-stream-data-wrapper.[ch], removed. Fixed including of these
- files.
-
- * camel-mime-part.c (camel_mime_part_set_text): Remove the use of
- the camel-simple-data-wrapper-stream, just use a mem stream.
- (write_to_stream): Renamed from my_*
- (construct_from_stream): Return an error on error.
-
- * camel-stream-mem.c (camel_stream_mem_new*): Remove mode
- parameter.
-
- * camel-stream-mem.h (enum CamelStreamMemMode): Removed. It
- wasn't used at all.
-
- * camel-data-wrapper.h: Add camel_data_wrapper_new() to create
- these.
- (write_to_stream, construct_from_stream): Return an error
- indicator for success. Fixed all methods to match (ICK).
-
- * Makefile.am (libcamel_la_SOURCES): Remove
- camel-simple-data-wrapper.c, camel-simple-data-wrapper-stream.c,
- camel-stream-data-wrapper.c. Obsoleted by code re-use!
-
- * camel-data-wrapper.c (construct_from_stream): Change the default
- implementation to just set the output stream == construction
- stream. Well, this lets me get rid of both simple-data-wrapper
- and stream-data-wrapper (unused anyway), and
- simple-data-wrapper-stream in one hit. CamelDataWrapper is now
- also a concrete class.
- (write_to_stream): Use camel_stream_write_to_stream() to
- calculate/return values (and save code).
- Include <errno.h> for obvious reasons.
-
- * camel-stream.c (eos): Provide a default implementation of .eos().
- (camel_stream_write_to_stream): Make it return an error code on
- error.
- (camel_stream_printf): Changed to return the number of bytes
- written/error.
- (camel_stream_available): Removed.
-
- * camel-stream-fs.h (enum CamelStreamFsMode): Removed. Changed to
- use unix modes and so forth (wasn't used for anything but new file
- creation and didn't work well either).
-
- * camel-stream-fs.c: Removed leading _'s for names. And removed
- some virtual method 'documentation'.
- (destroy): Dont try and close a closed/error fd. Only report
- error if close returns -1. Moved all the code to finalise(), and
- killed this function.
- (init_with_fd): Properly setup the seek offset, if it is a
- valid and seekable file descriptor.
- (init_with_fd_and_bounds): Use off_t for bounds, set bounds on the
- seekable stream.
- (init_with_name): Return error codes.
- (init_with_name_and_bounds): Ditto.
- (camel_stream_fs_new_with_name): REturn NULL object if it failed.
- (camel_stream_fs_new_with_name_and_bounds): Return NULL object on
- failure. Changed with_name* api's to take unix open style args
- and flags.
- (read): The bounded stream bounds checking seemed off, simplified
- code a bit.
- (write): Implement bounds checking for writing, the comment was
- wrong, it could make sense to bound writing. Cleaned up a little.
- (available): Gone.
- (eos): Removed. Use CamelStream's implementation now.
- (close): Reset the fd to -1, provide a warning for bad usage.
- (seek): Cleaned up. Changed the behaviour a little, the returned
- offset is the absolute position in the file, even in bounded
- streams.
- (seek): Seek from end mirrors lseek() behaviour (reverse seeking).
-
-2000-04-25 NotZed <NotZed@HelixCode.com>
-
- * camel-stream-fs.h (struct _CamelStreamFs): Moved bounds and eof
- indicator to other parent classes.
-
- * camel-stream.c (camel_stream_printf): New utility
- function. Obvious use.
-
- * camel-stream-mem.c: Removed leading _'s from static func's.
- (camel_stream_mem_new_with_byte_array): Fixed for api changes, set
- the owner for the byte array to us.
- : Removed A bunch of gtk doc stuff for static (implementation) functions.
- (available): Removed.
- (write): Fixed the write implementation so that seek() works on a
- seekable memory stream, as expected. Seeking past the end of the
- buffer has unix semantics (filling with 0).
- (available): Removed.
- (write): Implement seekable stream bounded stream.
- (read): Implement seekable stream bounded stream.
- (close): Dont free the stream_mem if we're not the owner.
- (seek): Allow to seek beyond the end of memory area,
- implement bounds checking.
- (seek): Set errno on bad policy.
-
- * camel-stream-mem.h (struct _CamelStreamMem): Changed position to off_t.
- (new_with_buffer): Changed len to be a size_t.
- (set_buffer, set_byte_array): New interface functions.
- (struct _CamelStreamMem): Removed position, it is stored in the
- superclass.
-
- * camel-stream.h: Removed some of the seemingly random
- whitespace. Removed the available method (its not
- impelemented/useful enough).
-
- * camel-seekable-substream.c
- (init_with_seekable_stream_and_bounds): Remove the data_available
- stuff, it hasn't been properly implemented/finished, and may never
- work (unfortunately *sigh).
- (reemit_parent_signal): Removed part of the above change.
- (set_bounds): Removed (moved to seekable-stream).
- : Fixed up some of the generally unreadable indenting (sorry,
- wrapping at 80 characters with
- camels_really_long_function_names()
- just_doesnt_work_very_well_does_it().
- (available): Removed.
- (stream_seek): Fixup for object changes. Make sure we return -1
- if the parent stream can't seek.
-
- * camel-seekable-stream.c (ccamel_seekable_stream_set_bounds): New
- function to bound any seekable stream.
- : Removed _'s.
- (camel_seekable_stream_class_init): Implement an init function, to
- setup the stream bounds to unbound.
-
- * camel-seekable-stream.h (CamelSeekableStreamClass): New virtual
- method set_bounds for seekable streams.
- (CAMEL_STREAM_UNBOUND): New define for no bound.
-
- * camel-seekable-substream.h (struct _CamelSeekableSubstream):
- Removed sup_bound and inf_bound, moved to CamelSeekableStream (and
- renamed, and changed to off_t's).
- (new_with_seekable_stream_and_bounds): Use off_t as the bounds.
- (CamelSeekableSubstreamClass): Uh, why was the intialiser virtual?
- Removed.
-
- * camel-seekable-stream.[ch] (CamelSeekableStreamClass): Changed seek
- to accept an off_t as the offset.
- (struct _CamelSeekableStream): Renamed cur_pos to position and
- changed it to an off_t type.
- (enum CamelStreamSeekPolicy): Set to match the SEEK_* constants
- from lseek().
- (get_current_position): Renamed to tell().
-
- * camel-stream-buffer.h: Commented out set_vbuf - never implemented.
-
-2000-04-25 Dan Winship <danw@helixcode.com>
-
- * camel-stream-buffer.c (_eos): only return TRUE if the parent is
- at eos AND the buffer has been exhausted
-
- * camel-mime-message.c: fix some incorrect macro usage that
- resulted in bogus casts
-
-2000-04-24 Dan Winship <danw@helixcode.com>
-
- * camel-mime-part-utils.c
- (simple_data_wrapper_construct_from_parser): fix a cut-and-pasto.
-
- * providers/mbox/camel-mbox-folder.c (_get_message_by_uid): ref
- (and sink) the message stream if we're going to unref it later.
- Otherwise it could get destroyed while there are still substreams
- attached to it. This needs a cleaner solution.
-
- * camel.h: remove data-wrapper-repository.h include(s)
-
-2000-04-24 NotZed <NotZed@HelixCode.com>
-
- * camel-mime-message.c (construct_from_parser): Allow MESSAGE_END
- _or_ EOF as valid termination conditions.
-
- * providers/mbox/camel-mbox-summary.c (message_struct_new): Decode
- and then re-encode the addresses, so they are consistently
- formatted.
-
- * camel-mime-utils.c (header_decode_mailbox): Store the address in
- a _header_address. And try to get a comment-stored name if there
- is one.
- (header_decode_address): Actually return an address.
- (header_to_decode): Renamed to header_address_decode()
- (header_mailbox_decode): New function to get a single mailbox.
- (header_mime_decode): Return the major/minor value, as
- appropriate.
- (header_address_new, and friends): Whole bunch of utility
- functions for working with the address thingies.
- (header_decode_domain): Free the string header, and dont expand
- '.' into ' . '.
-
- * camel.c (camel_init): No longer call
- data_wrapper_repository_init.
-
- * camel-medium.c (write_to_stream): Moved (back) to
- camel-mime-part.
- (add_header):
- (set_header):
- (remove_header):
- (get_header): Make all these abstract, and spit warnings if
- called. I guess it could manage the list, but well, it doesn't.
-
- * camel-medium.h (struct _CamelMedium): Dont store headers here,
- the implementor is the only one who knows their format.
- (CamelMediumClass): Changed header values to be void *'s. They
- need not be strings?
-
- * camel-simple-data-wrapper.c (construct_from_stream): And we're
- back. Set the output stream.
- (construct_from_parser): Moved to camel-mime-part-utils.
-
- * camel-mime-part-utils.c
- (camel_mime_part_construct_content_from_parser): Create the
- contents of multipart and simple messages.
- (camel_mime_part_construct_content_from_parser): Oops, this was
- totally screwed up, try creating the right cotnent on the right
- object.
-
- * camel-multipart.c (construct_from_parser): Moved to
- camel-mime-part-utils.
- (separate_part): Removed.
-
- * camel-mime-part.c (construct_from_stream): Back again! This now
- switches over to using a mime parser for any mime parts, only.
- (my_write_to_stream): Write our headers and so forth here.
- (add_header): Add header directly, parent class is abstract.
- (remove_header): Ditto.
- (set_header): Ditto.
-
- * camel-data-wrapper.c (camel_data_wrapper_construct_from_stream):
- Remade abstract.
- (camel_data_wrapper_construct_from_parser): Moved to
- camel_mime_part.
-
- * camel-data-wrapper.h: Put back construct_from_stream.
-
- * camel-mime-part.h: Put construct_from_parser in here, the
- data-wrapper shouldn't know about mime. Ok, so now to undo half
- of the last hours changes ... duh.
-
-2000-04-23 Dan Winship <danw@helixcode.com>
-
- * camel-mime-utils.c (header_to_decode, header_mime_decode): fix
- some obvious minor bugs noted by -Wall.
-
-2000-04-23 NotZed <NotZed@HelixCode.com>
-
- * providers/pop3/camel-pop3-folder.c (get_message_by_number): Use
- construct_from_stream instead of set_input_stream().
-
- * camel-simple-data-wrapper-stream.c
- (camel_simple_data_wrapper_stream_construct): REmoved the destroy
- callback code.
- (wrapper_destroy_cb): Removed.
-
- * camel-simple-data-wrapper.h: Add prototype for _construct()
- method.
-
- * camel.c: Include unicode.h to kill a warning.
-
- * camel-data-wrapper.h (CameldataWrapperClass): Removed
- construct_from_stream virtual method.
- Removed get/set input stream.
-
- * data-wrapper-repository.[ch]: Removed&from build. Obsoleted?
- The justification as is follows: It is mixing storage
- protocol/format with message architecture. It really just doesn't
- serve any purpose, as each medium implementor will have to have its
- own type->handler mapping, and the only current implementor,
- mimepart has a very simple structure and no need for this.
-
- * camel-medium.c (write_to_stream): Moved here from most of the
- stuff in camel-mime-part. Well, the MEDIUM is the one that knows
- what the headers are, and the content is, let it write it out.
-
- * camel-mime-part-utils.c (camel_mime_part_construct_content):
- Copied from camel-mime-part.c, removed handling of message
- followon state (moved to camel-mime-message).
- (camel_mime_part_construct_content_from_parser): Renamed from
- construct_content.
- (camel_mime_part_construct_headers_from_stream):
- (camel_mime_part_construct_content_from_stream):
- (camel_mime_part_store_stream_in_buffer): Removed. Replaced by
- the new construct from parser stuff.
-
- * camel-mime-message.c (construct_from_parser): Do
- construct_from_parser for mime-message.
- (_write_to_stream): Set the mime-version header for medium to
- write out, rather than writing it out ourselves.
-
- * camel-data-wrapper.c (set_mime_type_field): Ref the
- content_field when we get it?
- (construct_from_stream): Removed.
- (camel_data_wrapper_construct_from_stream): Changed to a helper
- function, creates a mime_parser, and constructs from that.
- (set_input_stream): Removed.
- (camel_data_wrapper_set_input_stream): Removed.
- (get_input_stream): Removed.
- (camel_data_wrapper_get_input_stream): Removed.
-
- * camel-mime-parser.c (camel_mime_parser_unstep): New function.
- Cause a subsequent call to mime_parser_step() to return the same
- state over again.
-
- * providers/mbox/camel-mbox-folder.c (_get_message_by_uid):
- Initial test code using the mime parser to construct the message.
- (_get_message_by_uid): Use construct_from_stream() instead of
- creating our own parser.
-
- * camel-mime-part.c (construct_from_parser): part constructor.
- (camel_mime_part_construct_content): Basically a simpler
- replacement for the datawrapper repository.
- (camel_mime_part_init): Set the default type to text/plain.
- (camel_mime_part_construct_content): Removed to
- camel-mime-part-utils.c
- (my_get_output_stream): Removed. The streeam is in the
- data-wrapper.
- (my_get_content_object): Removed. The content object is stored in
- the medium. If none is there, the object wasn't created properly.
- (my_write_content_to_stream): Removed. The content object is the
- one that knows how to write itself out!!!!!!!!
- (my_write_to_stream): Remove the base header writing stuff - has
- been moved to camel-medium, where it belongs. This can just be
- used to check for mandatory headers.
- (my_construct_from_stream): Removed.
- (my_set_input_stream): What the hell, i'll remove this too.
- Nobody seems to understand how it differs from create from stream,
- and they both seem to serve the same purpose ...
-
- * camel-simple-data-wrapper.c (construct_from_parser): Initial
- implementation of a content constructor.
- (construct_from_stream): Removed! Job taken over by
- construct_from_parser.
-
- * camel-multipart.c (construct_from_parser): Multipart
- construction routine.
- (camel_multipart_init): Set the default multipart type to
- multipart/mixed. Duh, no subtype is not allowed anyway.
- (set_input_stream): REmoved. Replaced by construct_from_parser.
-
-2000-04-22 Dan Winship <danw@helixcode.com>
-
- * camel-multipart.[ch]: clean, document, etc.
- (camel_multipart_init): pick a prettier default boundary. Still
- need to deal with the larger problem
-
-2000-04-22 NotZed <NotZed@HelixCode.com>
-
- * camel-mime-message.h (struct _CamelMimeMessage): Removed
- send_date, and received_date, and replaced it with a time_t
- 'date' (this is what the header is called), and date_offset to
- store the GMT offset of the date.
-
- * camel-mime-message.c (camel_mime_message_set_from): Update raw
- header as we go.
- (_set_from): Removed.
- (_get_from): Removed.
- (camel_mime_message_get_from): Moved implementation here.
- (camel_mime_message_get_subject): Move implementation here.
- (_get_subject): Nuked.
- (camel_mime_message_set_subject): Handle utf-8 input, and also
- update raw header when changed.
- (_set_subject): Removed.
- (_set_received_date): Removed.
- (camel_mime_message_set_received_date): Removed.
- (_get_received_date): Removed.
- (camel_mime_message_get_received_date): Removed.
- (_get_sent_date): Removed.
- (camel_mime_message_get_sent_date): Removed.
- (camel_mime_message_get_date): New function to get the date as a
- time_t/offset.
- (camel_mime_message_set_date): Set the date as a time_t/offset.
- (camel_mime_message_get_date_string): Get the date as a string.
- (camel_mime_message_init): Initialise the current date as
- 'CMAEL_MESSAGE_DATE_CURRENT'.
- (_set_reply_to): Removed.
- (camel_mime_message_set_reply_to): Moved implementation here.
- This is still broken, reply-to can have multiple addresses.
- (_get_reply_to): Removed.
- (_set_field): Removed, no longer used anywhere.
- (_get_field): Also removed.
- (_init_header_name_table): Add the Date header.
- (process_header): Also handle snooping of Date header here.
-
- * camel-stream-filter.c (finalise): Unref the source stream on
- finalise, and also call the parent class (oops).
-
- * camel-mime-parser.c (camel_mime_parser_state): New function to
- get the current parser state.
- (camel_mime_parser_stream): Allow you to get the stream back from
- the mime_parser.
- (camel_mime_parser_fd): Alternative to allow you to get the fd
- back from the mime_parser.
- (folder_scan_init_with_stream): Properly ref/unref the stream.
- (folder_scan_close): Properly unref the stream/close the fd on
- exit.
- (folder_scan_init_with_fd): Close the old fd if there is one.
-
- * camel-data-wrapper.c (camel_data_wrapper_construct_from_parser):
- New method, construct a data wrapper from an initialised parser.
- (construct_from_parser): Empty implementation.
-
- * providers/mbox/camel-mbox-summary.c (message_struct_new):
- Convert subject line to unicode, before storing in the summary.
- (strdup_trim): Removed, no longer needed.
-
- * providers/mbox/camel-mbox-folder.c (_get_message_by_uid): Ref
- the folder after setting it in the new message.
-
- * camel-mime-part.c (my_set_content_object): Have the headers
- follow the content-type change here too.
- (my_write_to_stream): Dont write content-type here, automatically
- stored in the headers ...
- (my_write_to_stream): Use header_disposition_format() to format
- the content-disposition header.
- (my_write_to_stream): Removed old code, all headers are now stored
- in the camel-medium level, always. Need to do the same with
- camel-mime-message i suppose ...
- (my_write_to_stream): Write the content using the parent class,
- not some weird function.
- (camel_mime_part_class_init): Dont override get_output_stream.
- (camel_mime_part_encoding_from_string): Bleh, make it
- case-insensitive.
-
- * camel-mime-utils.c (header_content_type_is): Handle empty types.
- (header_encode_string): Start of an implementation of the rfc2047
- encoder. It does iso-8859-1, and us-ascii, and utf-8 (others get
- tricky *sigh*)
- (rfc2047_encode_word): Convert a single word/string into rfc2047
- encoding.
- (quoted_encode): Different quoted-printable encoding for rfc2047
- encoding of headers.
-
- * gmime-content-field.c (gmime_content_field_write_to_stream): Use
- header_content_type_format() to format it.
-
-2000-04-21 NotZed <NotZed@HelixCode.com>
-
- * camel-mime-utils.h: Add prototype for header_param_list_free.
-
- * camel-recipient.c: New function to remove all the types of a
- recipient list. I think this whole object needs a major review.
-
- * camel-mime-message.c (camel_mime_message_class_init): Removed
- parse_header_pair override, override add_header instead.
- (_parse_header_pair): Renamed to add_header.
- (remove_header): Add this method, to make sure we keep upto date
- with removed headers too.
- (_set_field): If given a NULL value, clear it out.
- (_set_recipient_list_from_string): Constify.
- (set_header): Override set_header from camel_medium.
- (process_header): Local function to handle set/add/remove of each
- header we know about.
-
- * camel-mime-part.c (camel_mime_part_class_init): Removed
- parse_header_pair setup.
- (my_parse_header_pair): Moved into add_header(), removed.
- (my_set_disposition): Allow a NULL disposition to clear it.
- (my_set_content_id): Allow NULL content id to clear it.
- (remove_header): Track removed headers.
- (my_set_description): Allow NULL description to clear it.
- (my_set_content_MD5): Make sure we copy the md5 value, and allow a
- NULL value to reset it.
- (my_set_filename): Copy the filename.
- (my_set_header_lines): Removed. Nothing uses it, it doesn't
- actually serve any purpose.
- (camel_mime_part_set_header_lines): Ditto.
- (my_get_header_lines): Ditto.
- (camel_mime_part_get_header_lines): Ditto.
- (camel_mime_part_class_init): Remove *_header_lines setup.
- (camel_mime_part_init): Remove header_lines init.
- (my_finalize): Remove header_lines finalise.
- (my_write_to_stream): Write the headers here. This is just WRONG,
- camel_medium should be doing this.
- (my_get_output_stream): Kill a warning.
- (camel_mime_part_encoding_to_string): Ditto.
- (camel_mime_part_set_description): Unvirtualiase, use add_header()
- to do the processing.
- (my_set_description): Removed.
- (set_disposition): Renamed from my_set_disposition.
- (camel_mime_part_get_description): Get the descriptionf rom the
- get_header method.
- (my_get_description): Removed.
- (my_set_filename): Removed.
- (camel_mime_part_get_filename): Get the parameter from the
- disposition.
- (camel_mime_part_encoding_from_string): Handle NULL string.
- (camel_mime_part_init): Remove reference to filename.
- (my_finalize): Dont free filename.
-
- * camel-mime-part.h (CamelMimePartClass): Removed
- parse_header_pair() method, it doesn't add anything that
- add_header() can't be used for.
- (CamelMimePartClass): Remove *_header_lines methods.
- (struct _CamelMimePart): Remove header_lines list.
- (struct _CamelMimePart): Removed filename attribute.
-
- * camel-medium.c (camel_medium_init): Init headers to null, not a
- hashtable.
- (add_header): Append the headers as a list.
- (remove_header): Remove headers as a list.
- (get_header): Likewise for lookup.
- (free_header): Removed, no longer needed.
- (finalize): Free headers using header_raw_clear().
- (camel_medium_set_header): New function, to reset and override all
- values of a header with a new value.
-
- * camel-medium.h (struct _CamelMedium): Changed to use a
- header_raw struct rather than a hash table, to store headers
- (many headers can occur multiple times).
-
- * camel-mime-utils.c (header_raw_find_next): New function, allows
- you to find multi-valued header fields.
- (header_disposition_format): New function to format/create
- content-disposition header string.
- (header_param_list_format_append): Function to format parameter
- lists into a GString.
- (header_content_type_format): Function to format content-type into
- a usable format.
- (header_set_param): allow NULL value to remove the parameter.
- (decode_token): Renamed from header_decode_token.
- (header_decode_token): New interface for external use.
- (quoted_decode): Made static to kill annoying warnings.
- (g_strdup_len): Killed, replaced with calls to g_strndup().
- (rfc2047_decode_word): Made static to kill warnings.
- (decode_coded_string): Terminated.
- (g_string_append_len): Made static to kill warnings.
- (header_decode_text): Made static to kill warnings.
- (header_decode_text): Constify.
- (rfc2047_decode_word): Constify.
- (header_param): Constify.
- (header_content_type_new): Copy the type/subtype strings.
- (header_param_list_decode): Made static.
- (header_param_list_format_append): Made static.
- (quoted_decode): Constify.
- (g_string_append_len): Constify.
- (header_token_decode): New function to decode a single token.
-
- * providers/mbox/camel-mbox-summary.c (header_write): Append a
- trailing \n when writing headers.
- (strdup_trim): Killed a warning.
- (camel_mbox_summary_set_uid): Make sure the next uid is at least 1
- higher than any existing one.
- (header_evolution_decode): Use header_token_decode to get the
- token.
-
- * camel-mime-parser.c (folder_scan_header): Strip the trailing \n
- of the end of all header lines.
-
-2000-04-20 NotZed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-utils.[ch]: Removed.
-
- * providers/mbox/camel-mbox-parser.[ch]: Removed. Removed
- references to it.
-
-2000-04-20 Dan Winship <danw@helixcode.com>
-
- * camel-mime-utils.c (rfc2047_decode_word): use libunicode iconv
- functions rather than libc ones (since libc might not have them).
- (header_decode_date): add autoconfiscation on timezone code
-
- * camel.c (camel_init): call unicode_init ()
-
-2000-04-20 NotZed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-summary.c (message_struct_new): Trim
- leading/trailing spaces off the raw headers.
-
- * MERGE NEW_PARSER branch into HEAD, fixed conflicts.
-
- * gmime-content-field.c (_print_parameter): Duh, removed again
- (@@#$@ cvs merge).
-
- * camel-mime-utils.c (header_content_type_is): Constify.
- (header_content_type_unref): Killed a couple warnings.
-
- * camel-folder.c (_init): Removed more log crap.
-
- * providers/Makefile.am (SUBDIRS): Removed nntp, pending fixes for
- summary changes.
-
- * providers/mbox/camel-mbox-folder.c (_get_message_by_number):
- Fixed for new summary interface. Added a warning for using this
- broken api.
- (_get_message_by_uid): Fixed for message new with session
- vanishing.
-
-2000-04-19 Dan Winship <danw@helixcode.com>
-
- * camel-simple-data-wrapper-stream.c
- (camel_simple_data_wrapper_stream_get_type): This is a subtype of
- CamelSeekableStream, not CamelStream.
-
- * camel-seekable-substream.c: clean up a lot.
- (eos): When testing for end-of-stream, reset the parent position
- before testing if it is at end-of-stream, since either (a) it may
- have been seek'ed to eos by someone else, or (b) we may have been
- seek'ed away from eos and it hasn't been synced yet.
-
- * camel-medium.[ch] (camel_medium_add_header): const poison.
- (Belatedly goes with my change of 2000-02-23.)
- (camel_medium_init): Use g_strcase_{hash,equal} on the header
- array.
-
-2000-04-18 Dan Winship <danw@helixcode.com>
-
- * camel-mime-part.c (my_set_input_stream):
- * camel-data-wrapper.c (set_input_stream, set_output_stream): do
- better reference counting of streams so they actually go away
- when they should.
-
- * camel-log.[ch], *: Nuke camel log stuff. Replace calls to
- CAMEL_LOG_WARNING with calls to g_warning.
-
- * camel-data-wrapper.[ch]:
- * camel-simple-data-wrapper.[ch]:
- * camel-medium.[ch]: Clean, polish, document. Most of the gtk-doc
- comments added to camel-data-wrapper.c note serious problems that
- need to be fixed.
-
-2000-04-17 Dan Winship <danw@helixcode.com>
-
- * camel-mime-message.[ch]: Remove the "session" field from
- CamelMimeMessage. Nothing uses it, about half of the existing
- calls to camel_mime_message_new_with_session pass NULL, and
- there's no obvious reason for it to be there.
-
- * providers/MH/camel-mh-folder.c:
- * providers/maildir/camel-maildir-folder.c:
- * providers/mbox/camel-mbox-folder.c:
- * providers/mbox/camel-mbox-utils.c:
- * providers/nntp/camel-nntp-folder.c:
- * providers/pop3/camel-pop3-folder.c: Use camel_mime_message_new
- instead of camel_mime_message_new_with_session.
-
- * camel-session.c (get_store_for_protocol_with_url): Set the
- exception if no provider is found.
-
- * camel-url.c: Add code to encode and decode %-escapes in URLs,
- and do some additional correctness-checking on URL syntax. From
- Tiago Antào with modifications by me.
-
-2000-04-14 Chris Toshok <toshok@helixcode.com>
-
- * providers/Makefile.am (SUBDIRS): add nntp
-
-2000-04-14 Christopher James Lahey <clahey@helixcode.com>
-
- * providers/mbox/camel-mbox-folder.c: Fix switch statement.
-
-2000-04-14 Chris Toshok <toshok@helixcode.com>
-
- * providers/nntp/camel-nntp-folder.c (_exists): always return TRUE
- for now. we need to check the server response to make sure the
- group exists.
- (_get_message_by_uid): make sure to account for the \n we add to
- the string after every line.
-
- * providers/nntp/camel-nntp-utils.c (get_XOVER_headers): function
- to get the headers using the XOVER command.
- (get_HEAD_headers): function to get the headers using the HEAD
- command on each message. slooooooow.
- (camel_nntp_get_headers): make this function use either XOVER or HEAD
- versions depending on whether or not the server extension is present.
-
-2000-04-14 Dan Winship <danw@helixcode.com>
-
- * camel-formatter.[ch]: This didn't belong in Camel. Move to mail/
-
- * Makefile.am, camel-types.h: remove references to
- camel-formatter.
-
-2000-04-12 Matt Loper <matt@helixcode.com>
-
- * camel-folder-pt-proxy.c (_folder_open_cb): Print warning message
- for broken function.
- (_folder_close_cb): Same.
-
-2000-04-12 Miguel de Icaza <miguel@gnu.org>
-
- * Makefile.am (pthread_SRC): Use correct names for the pthread
- source variables.
-
-2000-04-10 Dan Winship <danw@helixcode.com>
-
- * providers/pop3/camel-pop3-store.c (pop3_connect): fix various
- bugs in APOP code (still untested) and some of the error cases.
-
- * camel-provider.h: Clarify what provider.protocol, provider.name,
- and provider.description should be.
-
- * providers/mbox/camel-mbox-provider.c:
- * providers/pop3/camel-pop3-provider.c:
- * providers/sendmail/camel-sendmail-provider.c:
- * providers/smtp/camel-smtp-provider.c: update protocols, names,
- and descriptions
-
- * providers/mbox/camel-mbox-folder.c (_get_message_by_number):
- implement get_message_by_number for the mail fetch code.
-
-2000-04-09 Jeffrey Stedfast <fejj@stampede.org>
-
- * providers/smtp/camel-smtp-transport.c: reformatted to fit
- the standard indent format used by helix code
-
-2000-04-09 Dan Winship <danw@helixcode.com>
-
- * camel-movemail.c: New file with new function to dot-lock an mbox
- file and copy it to a safe private directory.
-
-2000-04-08 Christopher James Lahey <clahey@helixcode.com>
-
- * providers/smtp/.cvsignore: Added a .cvsignore file.
-
-2000-04-08 Dan Winship <danw@helixcode.com>
-
- * providers/sendmail/camel-sendmail-transport.c (_send_internal):
- actually record the pid returned by fork(). Noticed by clahey.
-
- * providers/smtp/camel-smtp-transport.c: #include <sys/param.h>
- for MAXHOSTNAMELEN. (This is a stopgap: some of the uses of
- MAXHOSTNAMELEN are wrong anyway...)
-
-2000-04-07 Jeffrey Stedfast <fejj@stampede.org>
-
- * providers/smtp/camel-smtp-transport.c: fixes to numerous bugs;
- should now build fine.
- * providers/Makefile.am: Readded smtp now that smtp builds without
- error.
-
-2000-04-20 NotZed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-summary.c
- (camel_mbox_summary_next_uid): Public function to get the next
- uid, makes sure its saved to disk too.
-
- * camel-mime-part.c (my_finalize): Fix disposition crap with a
- real disposition.
- (my_set_disposition): Likewise.
- (my_get_disposition): And here.
- (my_write_to_stream): And here, needs more cleanup.
-
- * providers/mbox/camel-mbox-folder.c (_append_message): Assign a
- new uid at this point.
-
- * gmime-content-field.c (gmime_content_field_write_to_stream):
- Make something up if we have an invalid/missing content type
- (i.e. text/plain).
-
-2000-04-19 NotZed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-folder.c (_delete): Fixed completely
- broken switch() syntax, only compiled because errno is a macro on
- some systems.
- (_list_subfolders): Likewise.
-
-2000-04-18 NotZed <NotZed@HelixCode.com>
-
- * camel-mime-parser.c (folder_scan_init): init stream to null.
-
- * providers/mbox/camel-mbox-summary.c
- (CAMEL_MBOX_SUMMARY_VERSION): Moved to .c file, incremented.
- (index_folder): Changed to have index passed via the summary.
- (decode_string): Do a sanity check on the string size, so we dont
- visit g_malloc()'s friendly abort().
-
- * camel-folder-pt-proxy.c (camel_folder_pt_proxy_class_init):
- Removed reference to set_name.
- (_set_name): Removed.
-
- * providers/mbox/camel-mbox-utils.c
- (parsed_information_to_mbox_summary): Removed. Most of this file
- is about to be binned.
-
- * providers/mbox/camel-mbox-search.c (func_header_contains): Fixes
- for changes to summary interface.
- (struct _searchcontext): Remove pointer to message info, get it
- straight from the mboxsummary.
- (camel_mbox_folder_search_by_expression): New summary interface.
- (camel_mbox_folder_search_by_expression): Uh, the summary is not
- an object anymore (well not yet).
-
- * providers/mbox/camel-mbox-folder.c
- (camel_mbox_folder_class_init): Removed set_name init.
- (_set_name): Removed.
- (_open): Call new summary interface.
- (_close): Use new summary interface.
- (_create): Removed a summary object leak.
- (_get_message_count): New summary interface.
- (_get_uid_list): Use new summary interface. FIXME: this is leaky.
- (_get_message_by_uid): Use the new summary interface, some
- cleanup.
- (_append_message): Totally changed, basically just appends the
- message directly, ignores the summary (for now), the summary will
- fix itself up if it needs to.
- (_check_get_or_maybe_generate_summary_file): Bye bye old code.
- (summary_get_message_info): Implement get_message_info again, for
- folder.
-
- * camel-folder.c (camel_folder_class_init): Removed set_name
- setup.
- (_set_name): Moved contents into _init.
- (_init): Perform the old functions of set_name here.
-
- * camel-folder.h: Removed the set_name internal interface.
-
-2000-04-14 NotZed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-summary.[ch]: Completely replaced with
- new code.
-
- * Makefile.am (libcamel_la_SOURCES): Removed
- camel-folder-summary.[ch].
-
- * camel-folder.h (struct _CamelFolder): Removed summary.
- (struct _CamelFolder): Changed flags to be 1 bit bitfields.
-
- * camel-folder-summary.[ch]: Class removed entirely.
-
- * camel-folder.c (camel_folder_get_summary): Removed.
- (camel_folder_summary_get_message_info): Moved from
- camel-folder-summary.c
- (camel_folder_summary_get_subfolder_info): Moved from
- camel-folder-summary.c
-
- * camel-mime-parser.c (folder_scan_step): Store the start of
- headers and start of from in the scan state.
- (camel_mime_parser_tell_start_headers): Query the start of the
- headers.
- (camel_mime_parser_tell_start_from): Query the cached start of
- from marker.
-
-2000-04-13 NotZed <NotZed@HelixCode.com>
-
- * gmime-content-field.c (gmime_content_field_free): Removed this
- function. If its too dangerous to use, it shouldn't be here.
- (gmime_content_field_ref): Also ref the embedded content-type.
- (gmime_content_field_unref): Ditto to unref it.
-
- * camel-mime-utils.h: Add a refcount for content-type header.
-
- * camel-mime-utils.c (header_content_type_unref): Implement unref
- for content-type.
- (header_content_type_ref): Implement ref for header content type.
-
-2000-04-12 NotZed <NotZed@HelixCode.com>
-
- * gmime-content-field.h: Changed to use a _header_content_type.
- Added type/subtype back for compatability with clients.
-
- * gmime-content-field.c: Basically a total rewrite, and now just a
- thin wrapper ontop of header_content_type.
- (_free_parameter): Got rid of it.
- (gmime_content_field_new): Use header_content_type_* functions.
- (gmime_content_field_set_parameter): Likewise.
- (_print_parameter): Blow away.
- (gmime_content_field_write_to_stream): Get details from the
- content_type field. Should check if it needs to escape chars in
- the paramter value.
- (gmime_content_field_get_mime_type): Likewise.
- (___debug_print_parameter): Get rid of this rather annoyingly
- named function.
- (gmime_content_field_get_parameter): Simplified function.
- (gmime_content_field_construct_from_string): Fixed this to use a
- real parser.
- (gmime_content_field_is_type): New function to test if a type matches.
- (gmime_content_field_construct_from_string): Track type/subtype
- from subordinate content_type header struct.
-
- * gmime-rfc2047.[ch]: Removed. Unused.
-
- * camel-stream-b64.[ch]: Blown away more duplicated code.
-
- * Makefile.am: Removed camel-stream-b64.[ch], and
- gmime-base64.[ch].
-
- * camel-mime-part.c (my_get_content_object): Replaced
- camel-stream-b64 with camel-stream-filter/camel-mime-filter-basic.
- (my_write_content_to_stream): Replaced camel-stream-b64 with the
- camel-stream-filter with an encoder.
- (my_get_content_object): Also implement quoted-printable decoding.
- (my_write_content_to_stream): Also implement quoted-printable
- encoding.
- (my_get_output_stream): Took out stream-b64 code (nothing's being
- executed yet anyway).
-
- * gmime-base64.[ch]: Blown away. Not used, dont need it.
-
- * camel-mime-utils.h: Added offset for this header. Records where
- it is in the source.
-
- * camel-mime-utils.c (header_raw_append_parse): Add offset
- parameter, to store where the header is stored in the stream.
- (header_raw_append): Added offset param.
- (header_raw_find): Return offset, if a pointer supplied for it.
- (header_raw_replace): Add offset param.
- (header_content_type_new): New function, to create an empty
- content type.
- (header_content_type_set_param): Set a parameter in the
- content-type.
- (header_set_param): Generic header parameter setting function.
- (header_decode_string): Handle NULL input.
-
- * camel-mime-parser.c (camel_mime_parser_headers_raw): New
- function to get access to all the raw headers.
- (folder_scan_header): Keep track of the header start position, and
- store it when saving the header.
-
-2000-04-11 NotZed <NotZed@HelixCode.com>
-
- * camel-mime-utils.c: Moved a bunch of printf's to debug.
-
- * camel-mime-parser.c: Moved a bunch of printf's to debug.
- (folder_scan_header): Detect end of each header line using the
- last scanned char, and not the last scanned position.
-
- * camel-mime-filter-index.[ch]: Indexing filter. Indexes unicode
- sequences into ibex files.
-
-2000-04-09 NotZed <NotZed@HelixCode.com>
-
- * camel-mime-part.c: Dont include gmime-base64.h
-
- * camel-mime-filter-charset.c (complete): Implement the completion
- function.
-
- * camel-mime-parser.c (folder_scan_step): If we get to the end of
- the body data, check any filters for outstanding completion data.
- (camel_mime_parser_scan_from): Set whether we scan for "From "
- headers or not.
-
- * camel-stream-filter.c (do_read): If we get to end of stream on
- the source, then call the filtering completion function to see if
- we have any more data to return.
-
- * camel-mime-filter-basic.c (filter): Implement quoted printable
- encoding and decoding filters.
- (complete): And the complete function as well.
-
- * camel-mime-utils.c (base64_encode_close): Also take an input
- buffer, allow closing of filters.
- (quoted_encode_step): First cut, simple quoted-printable encoder.
- Doesn't handle trailing spaces/tabs on end of line properly yet.
- (quoted_encode_close): Complete a quoted-encoding.
- (is_qpsafe): New type check, for quoted-printable safe characters
- (that do not need encoding). Thats all bits used in the type
- table! Rebuilt the types table.
- (header_content_type_is): Checks a content type against at
- type/subtype match.
- (header_content_type_param): Handle NULL content type pointer.
-
-2000-04-08 NotZed <NotZed@HelixCode.com>
-
- * camel-mime-filter-basic.c (filter): Implement the base64
- encoder. Problem is, there is no way to know when to close it.
- Close/Reset will have to provide the same args as filter, so it can
- flush remaining data *sigh*
-
- * camel-mime-utils.c (base64_encode_step): A rather complex base64
- encoder, fast?
- (base64_step_close): Companion function to finish off the base64
- sequence.
-
- * camel-mime-part.c (my_write_content_to_stream): Changed to use
- camel_stream_write_to_stream().
-
- * camel-stream.[ch] (camel_stream_write_to_stream): From
- camel_stream_b64_write_to_stream(). Fixed some infinite loop
- bugs with error conditions.
-
- * camel-stream-b64.[ch] (camel_stream_b64_write_to_stream): Removed.
- This has nothing to do with stream-b64, so i've moved it to
- CamelStream.
-
- * camel-mime-utils.h: Add a comment about refcounting
- header_content_type struct.
-
- * Makefile.am: Added camel-stream-filter*.[ch].
-
- * camel-stream-filter.[ch]: Class to implement a generic
- (multipass) filter ontop of a stream. Only implements a read-only
- stream.
-
- * camel-mime-parser.c (camel_mime_parser_filter_add): Ref the
- filter we just added.
-
- * Makefile.am: Added camel-mime-filter*.[ch].
-
- * camel-mime-filter-charset.[ch]: A filter to preform character set
- conversion (uses unicode_iconv).
-
- * camel-mime-filter-save.[ch]: A simple filter which will save all
- data directly to a file or file descriptor.
-
- * camel-mime-filter-basic.[ch]: Implements the basic mime filters,
- base64 and quoted-printable decoding (encoding not implemented yet).
-
- * camel-mime-filter.[ch]: A filtering class, which can filter streams
- of data without having to copy them. Simpler than stream classes,
- and can be plugged into a single stream class (when i write it).
-
-2000-04-07 Dan Winship <danw@helixcode.com>
-
- * providers/pop3/camel-pop3-store.c (pop3_connect): Clarify error
- messages.
- (finalize): fix a bug in camel_exception usage
- (pop3_connect): Remember the password after asking for it the
- first time.
-
-2000-04-07 NotZed <NotZed@HelixCode.com>
-
- * Makefile.am: Added camel-mime-parser/camel-mime-utils.
-
- * camel-mime-parser.c: Fast mime parser.
-
- * camel-mime-utils.c: Mime utility functions, and email header
- parsers.
-
-2000-04-07 NotZed <NotZed@HelixCode.com>
-
- * providers/Makefile.am: Removed smtp for now, its a long way from
- building.
- * providers/smtp/Makefile.in: Removed file that shouldn't have been
- checked in.
-
-2000-04-06 Matt Loper <matt@helixcode.com>
-
- * camel-folder-pt-proxy.c (_get_full_name): Remove exception param
- from get_full_name() called, since get_full_name() was changed to
- not have an exception in the last param (see dan's notes below).
- (_get_name): same.
-
-2000-04-06 Dan Winship <danw@helixcode.com>
-
- * camel-store.[ch]: Reorganize the folder-fetching methods and
- implement a folder cache so that multiple requests for the same
- folder will yield the same CamelFolder object (as long as it
- remains active). Includes some code to remove no-longer-active
- folders from the cache, but it doesn't get used since nothing is
- ever unref'ed in Camel right now...
-
- * providers/mbox/camel-mbox-store.c:
- * providers/pop3/camel-pop3-store.c: update for CamelStore
- changes.
-
- * camel-folder.[ch]: Remove the (unused) CamelException argument
- from camel_folder_get_name and camel_folder_get_full_name.
- (camel_folder_set_name): make this go away since changing a
- folder's name after it has been created could result in it
- conflicting with a separately-issued folder.
-
-2000-04-05 Dan Winship <danw@helixcode.com>
-
- * g_url_new really wanted to take a CamelException. So, rename
- Gurl to CamelURL, g_url_* to camel_url_* (with camel_url_new
- taking an exception), and url-util.[ch] to camel-url.[ch]. Also
- force url->port to be numeric and remove camel_service_getport. (I
- was confused before: the URL RFC says the port must be numeric, so
- we don't want to do getportbyname.)
-
-2000-04-01 Dan Winship <danw@helixcode.com>
-
- * providers/mbox/camel-mbox-folder.c
- (_check_get_or_maybe_generate_summary_file): Compare
- mbox_file_size and mbox_modtime to the results of stat()ing the
- mbox file, not the summary file. Duh.
- (_close): Update the summary's mbox_file_size and mbox_modtime
- before writing it to disk.
-
- * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_save,
- camel_mbox_summary_load): Wow. I must have been tired when I wrote
- this code. First, the comparison bug above. Second, it was using
- ntohs and htons instead of ntohl and htonl. Third, I was reading
- the status flag byte in two different places and thus getting out
- of sync. Fourth, it was writing out field_length bytes of each
- header field after having converted field_length to network byte
- order, resulting in lots of random crap being appended, and the
- summary files being huge. (Fortunately, since the size/modtime
- comparison was biffed, the garbage summary read from disk was
- always immediately discarded.)
-
- * providers/mbox/camel-mbox-parser.c (camel_mbox_parse_file): fix
- an off-by-one error that caused the last-used UID to be reused if
- the summary file was regenerated. (That one wasn't my fault. :-)
-
-2000-03-31 Dan Winship <danw@helixcode.com>
-
- * camel-stream-mem.c: implement unimplemented methods
-
- * gmime-content-field.c
- (gmime_content_field_construct_from_string):
- * data-wrapper-repository.c
- (data_wrapper_repository_get_data_wrapper_type):
- * camel-simple-data-wrapper.c (my_write_to_stream):
- * camel-mime-part.c (my_set_input_stream):
- remove debugging printf()s that no longer seem useful.
-
-2000-03-31 Matt Loper <matt@helixcode.com>
-
- * camel-formatter.c (text_to_html): Added "convert_newlines_to_br"
- boolean param, to give the option of not converting '\n's to <br>
- tags. This way, when we stick stuff in a <pre> tag, newlines stay
- newlines.
-
-2000-03-30 Matt Loper <matt@helixcode.com>
-
- * camel-formatter.c (handle_text_plain): Use <pre> tag to force
- the use of monospaced fonts.
-
-2000-03-30 Dan Winship <danw@helixcode.com>
-
- * camel-service.c (camel_service_getport): Add a htons in the
- default_number case, and document the fact that the function
- returns the port in network byte order.
-
- * providers/pop3/camel-pop3-store.c (pop3_connect): Revert
- Miguel's change. The port number bug was actually somewhere
- else, and the IP address copying code was fine already.
-
-2000-03-29 Miguel de Icaza <miguel@gnu.org>
-
- * providers/pop3/camel-pop3-store.c (pop3_connect): Add htons
- (port), and only copy 4 bytes for the IP address to prevent a DNS
- attack.
-
-2000-03-28 Dan Winship <danw@helixcode.com>
-
- * camel-seekable-substream.c
- (camel_seekable_substream_new_with_seekable_stream_and_bounds):
- make this return a CamelStream rather than a
- CamelSeekableSubstream, because that's the way Gtk objects tend to
- work.
-
- * camel-service.c (camel_service_gethost,
- camel_service_getport): convenience functions to canonicalize
- the host and port values of a service's URL.
- * providers/pop3/camel-pop3-store.c: use them
-
- * providers/mbox/camel-mbox-folder.c
- (_check_get_or_maybe_generate_summary_file): Make this work when
- the inbox file doesn't yet exist.
-
-2000-03-27 Dan Winship <danw@helixcode.com>
-
- * providers/mbox/camel-mbox-folder.c (_append_message): uncomment
- the call to unlink the temp file: there's no way to tell
- camel_stream_fs to truncate a file, so reusing the same file was
- resulting in junk at the ends of messages.
-
- * camel-folder.[ch]: add delete_message_by_{number,uid}.
-
- * providers/pop3/camel-pop3-folder.[ch]: implement
- delete_message_by_uid. Add a close method to do expunging
- of deleted messages if requested.
-
- * providers/pop3/camel-pop3-store.[ch]: support for
- CamelPop3Folder::close. (You have to close the connection
- in order to expunge the folder, thus the store may be
- connected in the CamelService::is_connected sense when it
- is not actually connected to the server.) Also some bugfixes.
-
-2000-03-27 NotZed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-folder.c (_append_message): Unref the
- output_stream when done, close doesn't do it.
- (_append_message): Clear all uid's from the appending messages, so
- they are reassigned proper unique id's.
-
- * gmime-utils.c (get_header_array_from_stream): Actually free the
- header, it is copied elsewhere.
-
-2000-03-26 NotZed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-utils.c (camel_mbox_write_xev): Added
- folder parameter to function. Fixed callers.
- (index_message): Index a message as it is assigned a unique id.
-
- * camel-mime-part.c (my_set_content_id): Make sure we malloc and
- copy the content_id, otherwise *poof*
-
-2000-03-25 NotZed <NotZed@HelixCode.com>
-
- * camel-medium.c (_finalize): Another leak, unref the content if
- finished with it.
-
- * camel-recipient.c (camel_recipient_table_free): Plug another
- memory leak - actually free the recipient table.
-
- * camel-mime-message.c (_finalize): Plugged a memory leak with the
- flags table.
-
- * gmime-utils.c (_store_header_pair_from_string): A simpler, more
- debuggable and functionally identical header extraction function.
-
-2000-03-24 NotZed <NotZed@HelixCode.com>
-
- * gmime-content-field.c (gmime_content_field_set_parameter):
- Remove the hash table entry before freeing its key and data.
-
-2000-03-27 Dan Winship <danw@helixcode.com>
-
- * providers/Makefile.am (SUBDIRS): Add pop3.
-
- * providers/pop3/camel-pop3-store.c: keep separate input and
- output streams so the output doesn't end up being buffered.
-
- * providers/pop3/camel-pop3-folder.c (get_message_by_number):
- finish implementing this.
-
-2000-03-27 Michael Meeks <michael@helixcode.com>
-
- * camel-mime-part.c (my_set_disposition): fix so less broken.
- (my_finalize): remove dodgy disposition free.
-
- * camel-data-wrapper.c (my_set_mime_type_field): unref instead of
- free on mime_type.
-
-2000-03-27 Dan Winship <danw@helixcode.com>
-
- * camel-service.c (camel_service_free_auth_types): new routine to
- free the data allocated by camel_service_query_auth_types.
-
- * providers/pop3/camel-pop3-store.c (free_auth_types): implement
-
- * camel-stream-mem.c (camel_stream_mem_new_with_buffer): rename
- camel_stream_mem_new_with_buffer to ..._with_byte_array and add a
- new ..._with_buffer that takes a char * rather than a GByteArray.
-
- * Remove CamelStreamBufferedFs, since CamelStreamBuffer makes it
- redundant.
-
-2000-03-25 Dan Winship <danw@helixcode.com>
-
- * camel-folder-summary.[ch]: change the CamelFolderSummary
- interfaces to allow partial summary queries (for dealing
- with very large folders). Remove the "extended_fields" from
- CamelFolderInfo and CamelMessageInfo: this is better dealt
- with by subtyping.
-
- * providers/mbox/camel-mbox-summary.[ch]: Make CamelMboxSummary a
- subclass of CamelFolderSummary. Update interfaces for that. Remove
- the internal/external summary distinction. Remove the (unused) md5
- checksum in the folder summary. Change the summary file format
- (primarily to make it no longer byte-order dependent) and add a
- version number to it so it will be easier to change in the future.
-
- * providers/mbox/camel-mbox-folder.[ch]
- * providers/mbox/camel-mbox-search.c
- * providers/mbox/camel-mbox-utils.c: update for summary changes
-
- * camel-exception-list.def: add
- CAMEL_EXCEPTION_FOLDER_SUMMARY_INVALID
-
-2000-03-23 NotZed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-provider.c: Added flag to provider
- initialisation, to match changed structure.
-
-2000-03-22 NotZed <NotZed@HelixCode.com>
-
- * camel-folder.[ch]: Added async search api.
-
- * providers/mbox/camel-mbox-search.c
- (camel_mbox_folder_search_by_expression): Changed to use an
- asynchronous interface.
- (camel_mbox_folder_search_cancel): Cancel function for async
- interface.
-
-2000-03-23 Dan Winship <danw@helixcode.com>
-
- * camel-stream-buffer.c (camel_stream_buffer_read_line): Function
- to read one line of any size from a stream and return it in
- allocated memory.
-
-2000-03-22 Dan Winship <danw@helixcode.com>
-
- * camel-service.c (camel_service_query_auth_types): New function
- to query a service for the authentication protocols it supports.
- * providers/pop3/camel-pop3-store.c (query_auth_types): implement
-
- * camel-provider.c (camel_provider_scan): New function to
- scan the provider dir and return a list of all providers.
-
- * providers/pop3/camel-pop3-folder.c: fill this in partially
- * providers/pop3/camel-pop3-store.c: make camel_pop3_command
- return the text after "+OK"/"-ERR" and add a separate
- camel_pop3_get_additional_data to get the message body or
- whatever. Also make them take a CamelPop3Store rather than
- a CamelStreamBuffer.
-
-2000-03-22 Matt Loper <matt@helixcode.com>
-
- * camel-formatter.c (debug): Disabled some useless debug
- messaging.
-
-2000-03-21 Dan Winship <danw@helixcode.com>
-
- * providers/pop3: some initial bits of the POP3 provider, to
- make Matt happy. Incomplete, untested, etc.
-
-2000-03-21 bertrand <bertrand@helixcode.com>
-
- * providers/mbox/camel-mbox-summary.c
- (camel_mbox_summary_append_internal_to_external): copy the size field
-
- * providers/mbox/camel-mbox-folder.c (_get_message_by_uid): initialize
- message_info to NULL
-
- * camel-folder-summary.h: added the size field.
-
- * providers/mbox/camel-mbox-summary.h:
- added the received_date field.
-
- * providers/mbox/camel-mbox-summary.c:
- documented all functions.
-
- * camel-folder-summary.h: name change and
- new fields.
-
- * providers/mbox/camel-mbox-search.c: update to
- conform to name change in the summary fields.
-
-2000-03-10 bertrand <bertrand@helixcode.com>
-
- * camel-service.h: cosmetic changes.
-
-2000-03-09 Dan Winship <danw@helixcode.com>
-
- * s/HelixCode/Helix Code, Inc./ in the copyrights
-
-2000-03-07 bertrand <bertrand@helixcode.com>
-
- * camel-formatter.c (handle_mime_part):
- plug mem leaks due to bad documentation
- of camel_content_field_get_mime_type
- (print_camel_body_part): idem
- (handle_multipart_alternative): idem
-
- * gmime-content-field.c (gmime_content_field_get_mime_type):
- documentation fix.
-
-
- * camel-mime-part.c (my_finalize): unref the
- content_input_stream if any.
-
-2000-03-06 bertrand <bertrand@helixcode.com>
-
- * camel-stream-fs.c (_seek): fix a bogus calculation
- in the return position.
-
-2000-03-05 bertrand <bertrand@helixcode.com>
-
- * camel-session.h: cosmetic fixes.
-
- * camel-stream-fs.c (_read):
- (_seek): fixed the current position so that it refers
- to the current position in the stream, not in its parent.
-
-2000-03-04 NotZed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-search.c
- (camel_mbox_folder_search_by_expression): Ref the summary
- after we have got it.
-
-2000-03-04 bertrand <bertrand@helixcode.com>
-
- * camel-mime-part.c (my_write_content_to_stream):
- stream the raw content instead of nothing if the encoding
- is not supported.
-
- * camel-stream-fs.c (_seek): handle eos more
- properly.
-
- * camel-formatter.c (get_bonobo_tag_for_object):
- bonobo-goad-id is the good key to look for.
- (get_bonobo_tag_for_object): close the <object> tag.
- (get_bonobo_tag_for_object): the correct syntax for the
- to set a parameter inside an <object> tag is :
- <object classid="..."> <param name="uid" value="..."> <param ...>
- </object>
-
-2000-03-03 bertrand <bertrand@helixcode.com>
-
- * providers/mbox/camel-mbox-folder.c (_get_message_by_uid):
- use set_input_stream instead of construct_from_stream
- to feed the message object.
-
- * camel-data-wrapper.c (my_write_to_stream): reset output stream.
- (my_set_input_stream): unref the previous input stream.
- use the set_output_stream for default behaviour.
- (my_set_output_stream): unref previous output stream.
-
- * camel-mime-part.c (my_write_content_to_stream): reset content
- object output stream.
-
-2000-03-03 NotZed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-utils.c (camel_mbox_write_xev): Make
- sure we open with create with a creation mask.
-
-2000-03-01 NotZed <NotZed@HelixCode.com>
-
- * camel-mime-part-utils.c
- (camel_mime_part_construct_content_from_stream): DO NOT assert on
- content type, we have fallback code 4 lines below it ... *sigh*
-
-2000-02-29 NotZed <NotZed@HelixCode.com>
-
- * Makefile.am (libcamelinclude_HEADERS): Added camel-stream-buffer
- to build.
-
- * camel-stream-buffer.[ch]: Generic buffer which can be applied to
- any stream.
-
-2000-03-03 bertrand <bertrand@helixcode.com>
-
- * camel-formatter.c (handle_image): in the case
- of images, put the content object output stream
- in the url. This allows the message browser
- to show inline images.
-
- * camel-stream-b64.c (my_read_encode): fixed state
- 0 keep value.
-
-2000-03-02 bertrand <bertrand@helixcode.com>
-
- * camel-stream-b64.c (my_read_encode): don't forget to
- set the state to 0 after 3.
- (my_read_encode): don't forget to encode, even in state 3.
-
- * camel-simple-data-wrapper.c: static functions are prefixed
- with my_ instead of _
- * camel-multipart.c: static functions are prefixed
- with my_ instead of _
- (my_write_to_stream): commented.
- (my_write_to_stream): warning in case the boudary is set
- but is a zero length string.
-
- * camel-mime-part.c (camel_mime_part_encoding_from_string):
- remove debug trace.
-
- * camel-mime-part.c: Replaced all static functions
- with name begining with _ by the same name begining
- with "my_" to prevent the possible conflicts
- with system symbols Dan warned us about.
-
- * camel-stream-b64.c (camel_stream_b64_write_to_stream):
- use CamelStreamB64 type for the input stream.
-
- * camel-mime-part.c (_get_content_object): remove
- debugging trace
- (_write_content_to_stream): implement the b64
- encoding the new way (that is using camel_stream_b64)
-
- * camel-data-wrapper.c (my_write_to_stream):
- fix implementation so that it writes properly
- to the output stream even.
-
- * camel-stream-b64.c (camel_stream_b64_write_to_stream):
- fix implementation.
-
-2000-02-29 bertrand <bertrand@helixcode.com>
-
- * camel-stream-b64.c (camel_stream_b64_write_to_stream): new
- utility function.
-
- * camel-data-wrapper.c (_write_to_stream): default
- implementation.
-
- * gmime-utils.c (_store_header_pair_from_string):
- revert strange changes.
-
- * camel-stream-b64.c (my_read_decode): set eos to true when we
- have read the whole input stream.
- (my_reset): set eos to FALSE.
-
-2000-02-28 NotZed <NotZed@HelixCode.com>
-
- * camel-mime-part.c (_parse_header_pair): Dont free this either.
-
- * camel-medium.c (_remove_header): Ugh, dont free the header
- before we actually remove it.
- (_add_header): Ugh, dont free hashtable entries which may be
- duplicated (hash_insert _will_ reference that memory).
-
- * string-utils.c (string_trim): Trimming a 0-length string is not
- an error.
-
- * camel-mime-message.c (_parse_header_pair): Fixed very broken
- memory handling of header_name/value.
-
- * providers/mbox/camel-mbox-utils.c (camel_mbox_write_xev):
- Initialise end_of_last_message always.
- (camel_mbox_copy_file_chunk): Stop trying to read if we run out of
- data, rather than looping forever.
- (camel_mbox_write_xev): Use an open flag when opening with create.
-
- * camel-folder.c (camel_folder_search_by_expression): No, its not
- a fatal error to search on a non-searchable folder, you just dont
- get any matches.
- (_open): Dont open an opened folder (i dont see why this is really
- a bug, but what the hell ...)
-
- * providers/mbox/camel-mbox-folder.c (_init): Set search cap on.
- (_open): Call parent class to perform open. Remove folder-open
- check to parent instead.
- (_create): open takes a creation mask, dont use umask to try and
- set the open mode.
- (_delete): Dont bother checking folder==NULL, its already been
- checked on the external interface (changed to an assertion, this
- would have to be a camel bug).
- (_delete_messages): Likewise.
- (_create): Ditto.
- (_init): Dont go and clear all the paths and shit that the parent
- open just setup for us.
- (_delete_messages): Get rid of more umask stuff.
- (_append_message): Make sure we pass file mode to open with create.
- (_append_message): Cleaned up some indenting to make it readable.
-
- * camel-stream-b64.c (my_read_encode): Fixed a typo.
-
- * providers/mbox/camel-mbox-search.c: Changed to use e-sexp,
- rather than filter-sexp.
-
-2000-02-28 bertrand <bertrand@helixcode.com>
-
- * camel-stream-b64.c (my_read_encode): encoding
- filter.
-
-2000-02-23 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel-stream-b64.c: changed the __static
- suffix into a my_ prefix.
- (camel_stream_b64_set_mode): reset the persistent
- status.
- (my_read_decode): remove superfluous %
-
- * providers/mbox/camel-mbox-utils.c (camel_mbox_copy_file_chunk):
- fix exception description message.
-
-2000-02-24 Dan Winship <danw@helixcode.com>
-
- * camel-session.c: Add camel_session_get_transport_for_protocol.
-
- * camel-transport.h:
- * camel-transport.c: Add an abstract CamelTransport class.
-
- * providers/sendmail/*: A CamelTransport that uses sendmail
- to deliver mail.
-
-2000-02-24 Dan Winship <danw@helixcode.com>
-
- * camel-folder.c: use CamelExceptions for run-time errors, not
- incorrect code. Don't bother validating that an object exists from
- inside one of its methods, since you couldn't have gotten there if
- it didn't. Fix some code style bugs.
-
- (_init): Rename init_with_store to init and add parent_folder,
- separator, and name arguments.
- (_set_name): Get separator from self, not parent_store now.
-
- * camel-store.h:
- * camel-store.c: Remove get/set_separator.
-
- * providers/mbox/: Update for above.
-
-2000-02-23 Dan Winship <danw@helixcode.com>
-
- * camel-medium.c (_finalize): Free the data in the headers hash
- table.
- (_add_header): g_strdup the header name and value when adding it.
-
- * camel-mime-part-utils.c
- (camel_mime_part_construct_headers_from_stream): Free the header
- data after calling camel_medium_add_header, since it will have
- g_strdup()ed it itself.
-
-2000-02-22 NotZed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-search.c: Dont compile by default.
-
- * providers/mbox/Makefile.am: Fuck off the filter code.
-
-2000-02-22 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel-stream-b64.c (read_decode__static):
- don't read the char if we reached the length
- of the output buffer. Hours lost on this
- %$!@# bug : 3.5
-
- * camel-folder.c (camel_folder_get_subfolder):
- (camel_folder_create):
- (camel_folder_delete):
- (camel_folder_delete_messages):
- (camel_folder_list_subfolders):
- (camel_folder_expunge):
- (camel_folder_get_message_by_number):
- (camel_folder_get_message_count):
- (camel_folder_append_message):
- (camel_folder_copy_message_to):
- (camel_folder_get_summary):
- (camel_folder_get_message_uid):
- (camel_folder_get_message_by_uid):
- (camel_folder_get_uid_list):
- Check folder state (open/close) and raise an
- exception if it is not ok.
-
- * providers/mbox/camel-mbox-folder.c (_create):
- create the file and the path with two different
- names.
-
- * camel-folder.c (_create): handle the case
- when the folder name starts with '/'
-
- * camel-exception.c (camel_exception_new): use
- (void) instead of () in decl.
-
- * camel-exception.h: cosmetic fixes.
-
- * camel-exception.c (camel_exception_init): new routine.
- Fix a bug in mail/message-list.c
-
-
- * camel-folder.h: cosmetic changes.
-
- * camel-stream-b64.c (reset__static): added a
- reset method. Thanks message-browser to find
- so much bugs :)
-
- * providers/mbox/Makefile.am (libcamelmbox_la_LIBADD): readd
- Unicode libs.
-
-2000-02-21 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel-formatter.c (lookup_unique_id):
- awful hack to test get_output_stream.
- * camel-stream-b64.[ch] :
- b64 encoding/decoding is now implemented as
- a stream.
-
-
-2000-02-21 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel-seekable-substream.c (_reemit_parent_signal):
- emit "data_available" when parent stream emits it.
-
-
-2000-02-21 NotZed <NotZed@HelixCode.com>
-
- * providers/mbox/Makefile.am: Uh, fixed LIBADD again. What was
- there was never ever going to work, wasn't it tested?
-
-
-2000-02-21 Dan Winship <danw@helixcode.com>
-
- * camel-session.h: (struct _CamelSession): Add authenticator.
-
- * camel-session.c (camel_session_new): Add authenticator.
- (camel_session_query_authenticator): New function to query the
- session authenticator for password, etc, information.
-
-2000-02-21 Dan Winship <danw@helixcode.com>
-
- * camel-session.c: add CamelExceptions to several functions. Use
- camel_session_new to initialize the session and URL fields of
- created CamelStores as appropriate.
-
- * camel-store.h:
- * camel-store.c
- * camel-service.h:
- * camel-service.c: Move the session and url (and associated
- functions) from CamelStore to CamelService. Add url_flags to
- CamelService so subclasses can specify which URL components
- are mandatory for them. Add camel_session_new for
- camel_session_get_store* to use.
-
- * providers/mbox/camel-mbox-folder.c:
- * providers/mbox/camel-mbox-store.c:
- * providers/mbox/camel-mbox-store.h: Update for above changes.
-
- * camel-exception-list.def: Once camel is being used for real,
- exceptions won't be renumberable. So renumber them now to make
- more room to add exceptions to the various categories later, and
- add a big warning message.
-
-2000-02-20 Dan Winship <danw@helixcode.com>
-
- * providers/mbox/Makefile.am: add libibex back to
- libcamelmbox_la_LIBADD
-
-2000-02-18 NotZed <NotZed@HelixCode.com>
-
- * providers/mbox/camel-mbox-search.h
- (camel_mbox_folder_search_by_expression): Added exception to call,
- and fixed caller.
-
- * providers/mbox/camel-mbox-search.c
- (camel_mbox_folder_search_by_expression): Major changes, to use
- the sexp evaluator from filter/filter-sexp.c to implement the
- searching.
- (func_body_contains): Changed to support multiple strings in 1
- command (results or'd together)
-
- * url-util.c (g_url_new): Fixed a typo (colon == 0 isn't right),
- and made it so full url's are absolute pathed (Dan, this is how it
- has to work!). Also, always include a path part, even if it is an
- empty string.
-
-2000-02-18 Dan Winship <danw@helixcode.com>
-
- * camel/camel-types.h: New header with the typedefs for all camel
- classes. Now the class headers can just include this and the
- header for the parent type. This makes it possible for
- CamelService to include a CamelSession without creating an
- #include loop.
-
- * camel/*:
- * composer/e-msg-composer-attachment-bar.h:
- * mail/folder-browser.c:
- * mail/message-list.c: frob #includes to match the new reality
-
-2000-02-17 Dan Winship <danw@helixcode.com>
-
- * camel/camel-service.h:
- * camel/camel-service.c: Make camel-service us a Gurl internally.
- Remove the login/password interfaces and instead provide
- camel_service_connect_with_url. Add CamelExceptions
-
-2000-02-17 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-formatter.c (handle_text_plain):
- (handle_text_html): use camel_stream_reset instead
- of seek. The formatter should be able to work
- with all streams, not only seekable streams.
- In the case where some provider implementation
- would not be able to provide a reset method
- to their stream, implementors would have
- to find a workaround.
-
- * camel/camel-session.c (camel_session_new): use
- (void) instean of () in function decl.
-
- * camel/camel-folder.c: ifdef async operation
- related code.
-
- * camel/camel-seekable-stream.c (_seek): added a warning.
- (_reset): default implementation of reset for seekable
- stream.
-
- * camel/camel-mime-message.h: set_received_date declaration fix.
- cosmetic changes.
-
- * camel/providers/mbox/camel-mbox-provider.c (camel_provider_module_init):
- use (void) instead of ().
-
- * camel/camel-stream.c (camel_stream_reset):
- new method for CamelStream.
-
-2000-02-17 Dan Winship <danw@helixcode.com>
-
- * camel/url-util.c (g_url_to_string): New function to convert
- a Gurl back into a char *.
-
-2000-02-17 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-formatter.c (handle_text_plain):
- revamped so that it uses the output stream
- of the data wrapper
- (handle_text_html): ditto.
-
-
- * camel/camel-simple-data-wrapper.h:
- * camel/camel-simple-data-wrapper.c (camel_simple_data_wrapper_new):
- use (void) instead of ().
- (_get_output_stream): simple implementation.
-
-2000-02-16 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-data-wrapper.c (_set_input_stream): ref input stream
- (_set_output_stream): ref output stream
- (_finalize): unref input and output streams
-
- * camel/camel-seekable-substream.c (_set_bounds): don't
- seek the begining of the substream.
- (_eos): fix eos condition testing.
- (_finalize): unref parent stream
- (_init_with_seekable_stream_and_bounds): ref parent stream
-
- * camel/gstring-util.c (g_string_equal_for_hash):
- (g_string_equal_for_glist): return type is int.
-
- * camel/camel.h:
- * camel/camel.c (camel_init): use (void)
- instead of ().
-
-2000-02-16 NotZed <NotZed@HelixCode.com>
-
- * providers/mbox/Makefile.am (libcamelmbox_la_LIBADD): Added
- libfilter to link line (temporarily?). Required for
- filter-sexp.
-
-2000-02-15 bertrand <bertrand@helixcode.com>
-
- * camel/camel-multipart.c (_localize_part):
- this routine replaces the _read_part routine
- and does not store the part in a buffer.
- (_set_input_stream): use the set_input_stream
- instead of the construct_from_stream.
- each bodypart is given an input stream.
-
- * camel/camel-mime-part-utils.c:
- include the data-wrapper-repository header.
- (camel_mime_part_construct_content_from_stream):
- use the set_input_stream instead of the
- construct_from_stream method.
-
- * camel/camel-seekable-substream.c (_set_bounds):
- cur position is set to 0 not to inf_bound.
-
-2000-02-15 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-mime-part.c: include gmime-base64.h
- various compilation and runtime fixes.
- (_set_input_stream): store the input substream
- for the content object.
-
- * camel/camel-data-wrapper.h: declare the
- set/get function on input/output stream.
-
- * camel/camel-mime-part.c (_get_content_object):
- don't use a temporary mem stream.
-
- * camel/camel-seekable-substream.c (_seek):
- (_eos):
- (_read): the substream can be unlimited in length
-
- * camel/camel-data-wrapper.c (camel_data_wrapper_class_init):
- set the get/set_input/output_stream methods.
-
- * camel/camel-multipart.c (_construct_from_stream):
- camel_stream_seek -> camel_seekable_stream_seek
-
-2000-02-14 Miguel de Icaza <miguel@gnu.org>
-
- * camel/providers/mbox/Makefile.am (libcamelmbox_la_LIBADD): Add
- the unicode libraries as well.
-
- * camel/camel-provider.c (camel_provider_register_as_module): Add
- error reporting here. Desire to use Solaris increases. Hair loss
- in the last two hours: 5,400.
-
- * camel/providers/mbox/camel-mbox-provider.c
- (camel_mbox_get_provider): Renamed function.
-
- * camel/camel.h: All include files use camel/ now here.
-
- * camel/providers/mbox/Makefile.am: Drop all the dynamism from
- Camel, and make this a standard library.
-
-2000-02-14 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/gmime-utils.c (get_header_array_from_stream): use the
- eos stream method.
- (gmime_read_line_from_stream): ditto.
-
- * camel/camel-stream-fs.h (struct ): add the eof field
- cosmetics changes.
-
- * camel/camel-stream-fs.c (camel_stream_fs_init): set eof.
- (_read): set eof on end of file.
- (_eos): implemented.
-
- * camel/gmime-utils.c (get_header_array_from_stream):
- make a blocking version of the header parser.
- When the fs stream uses gnome-vfs, this should
- be changed.
- (gmime_read_line_from_stream): ditto.
-
-2000-02-11 bertrand <Bertrand.Guiheneuf@aful.org>
-
- * camel/camel-stream-fs.c:
- everywhere, when using the cur_pos field, do it
- on the CamelSeekableStream object.
- (_seek): small fix.
-
- * camel/camel-seekable-stream.c (camel_seekable_stream_seek):
- s/camel_stream_seek/camel_seekable_stream_seek/g
-
- * camel/camel-seekable-stream.h:
- (struct ): added a field to store the
- current position.
-
- * camel/camel-seekable-stream.c (camel_seekable_stream_get_current_position):
- New function. Allows to get the current position
- of a seekable stream.
-
-
-2000-02-13 NotZed <notzed@zedzone.helixcode.com>
-
- * providers/mbox/camel-mbox-search.c: New file, implements the
- search api for mbox folders.
-
- * providers/mbox/Makefile.am: Link with ibex.
-
- * camel-folder.c (camel_folder_has_search_capability): Api
- additions.
- (camel_folder_search_by_expression): Ditto.
-
-2000-02-12 NotZed <notzed@zedzone.helixcode.com>
-
- * providers/mbox/camel-mbox-folder.c (_set_name): Setup index
- filename as well.
- (_init_with_store): Init index filename. Hmm, none of these
- names ever seem to get free'd (FIXME?)
-
- * providers/mbox/camel-mbox-folder.h: Add index file name.
-
-2000-02-12 NotZed <notzed@helixcode.com>
-
- * camel-folder.h: Add folder search functions.
-
- ** Created ChangeLog just for camel **
- - refer to ../ChangeLog for changes prior to this date.
diff --git a/camel/Makefile.am b/camel/Makefile.am
deleted file mode 100644
index ad0688f8cb..0000000000
--- a/camel/Makefile.am
+++ /dev/null
@@ -1,212 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-SUBDIRS = providers tests
-
-libcamelincludedir = $(includedir)/camel
-providerdir = $(libdir)/evolution/camel-providers/$(VERSION)
-
-lib_LTLIBRARIES = libcamel.la
-
-INCLUDES = -I.. -I$(srcdir)/.. \
- -I$(top_srcdir)/intl \
- -I$(top_srcdir)/e-util \
- $(CAMEL_CFLAGS) \
- $(KRB4_CFLAGS) \
- $(NSPR_CFLAGS) \
- $(NSS_CFLAGS) \
- $(OPENSSL_CFLAGS) \
- -DCAMEL_PROVIDERDIR=\""$(providerdir)"\" \
- -DG_LOG_DOMAIN=\"camel\"
-
-libcamel_la_SOURCES = \
- broken-date-parser.c \
- camel-address.c \
- camel-cipher-context.c \
- camel-data-wrapper.c \
- camel-digest-folder.c \
- camel-disco-folder.c \
- camel-disco-store.c \
- camel-exception.c \
- camel-file-utils.c \
- camel-filter-driver.c \
- camel-filter-search.c \
- camel-folder-search.c \
- camel-folder-summary.c \
- camel-folder-thread.c \
- camel-folder.c \
- camel-internet-address.c \
- camel-lock.c \
- camel-medium.c \
- camel-mime-filter-bestenc.c \
- camel-mime-filter-basic.c \
- camel-mime-filter-charset.c \
- camel-mime-filter-crlf.c \
- camel-mime-filter-from.c \
- camel-mime-filter-html.c \
- camel-mime-filter-index.c \
- camel-mime-filter-linewrap.c \
- camel-mime-filter-save.c \
- camel-mime-filter.c \
- camel-mime-message.c \
- camel-mime-parser.c \
- camel-mime-part-utils.c \
- camel-mime-part.c \
- camel-mime-utils.c \
- camel-movemail.c \
- camel-multipart.c \
- camel-object.c \
- camel-operation.c \
- camel-pgp-context.c \
- camel-pgp-mime.c \
- camel-smime-context.c \
- camel-smime.c \
- camel-provider.c \
- camel-remote-store.c \
- camel-sasl.c \
- camel-sasl-anonymous.c \
- camel-sasl-cram-md5.c \
- camel-sasl-digest-md5.c \
- camel-sasl-kerberos4.c \
- camel-sasl-login.c \
- camel-sasl-plain.c \
- camel-search-private.c \
- camel-seekable-stream.c \
- camel-seekable-substream.c \
- camel-service.c \
- camel-session.c \
- camel-store.c \
- camel-stream-buffer.c \
- camel-stream-filter.c \
- camel-stream-fs.c \
- camel-stream-mem.c \
- camel-stream-null.c \
- camel-stream.c \
- camel-tcp-stream-raw.c \
- camel-tcp-stream-ssl.c \
- camel-tcp-stream-openssl.c \
- camel-tcp-stream.c \
- camel-transport.c \
- camel-uid-cache.c \
- camel-url.c \
- camel-vee-folder.c \
- camel-vee-store.c \
- camel-vtrash-folder.c \
- camel-charset-map.c \
- camel.c \
- gstring-util.c \
- hash-table-utils.c \
- string-utils.c
-
-libcamelinclude_HEADERS = \
- broken-date-parser.h \
- camel-address.h \
- camel-charset-map.h \
- camel-cipher-context.h \
- camel-data-wrapper.h \
- camel-digest-folder.h \
- camel-disco-folder.h \
- camel-disco-store.h \
- camel-exception-list.def \
- camel-exception.h \
- camel-file-utils.h \
- camel-filter-driver.h \
- camel-filter-search.h \
- camel-folder-search.h \
- camel-folder-summary.h \
- camel-folder-thread.h \
- camel-folder.h \
- camel-internet-address.h \
- camel-lock.h \
- camel-medium.h \
- camel-mime-filter-bestenc.h \
- camel-mime-filter-basic.h \
- camel-mime-filter-charset.h \
- camel-mime-filter-crlf.h \
- camel-mime-filter-from.h \
- camel-mime-filter-html.h \
- camel-mime-filter-index.h \
- camel-mime-filter-linewrap.h \
- camel-mime-filter-save.h \
- camel-mime-filter.h \
- camel-mime-message.h \
- camel-mime-parser.h \
- camel-mime-part-utils.h \
- camel-mime-part.h \
- camel-mime-utils.h \
- camel-movemail.h \
- camel-multipart.h \
- camel-object.h \
- camel-operation.h \
- camel-pgp-context.h \
- camel-pgp-mime.h \
- camel-smime-context.h \
- camel-smime.h \
- camel-provider.h \
- camel-remote-store.h \
- camel-sasl.h \
- camel-sasl-anonymous.h \
- camel-sasl-cram-md5.h \
- camel-sasl-digest-md5.h \
- camel-sasl-kerberos4.h \
- camel-sasl-login.h \
- camel-sasl-plain.h \
- camel-seekable-stream.h \
- camel-seekable-substream.h \
- camel-service.h \
- camel-session.h \
- camel-store.h \
- camel-stream-buffer.h \
- camel-stream-filter.h \
- camel-stream-fs.h \
- camel-stream-mem.h \
- camel-stream-null.h \
- camel-stream.h \
- camel-tcp-stream-raw.h \
- camel-tcp-stream-ssl.h \
- camel-tcp-stream-openssl.h \
- camel-tcp-stream.h \
- camel-transport.h \
- camel-types.h \
- camel-uid-cache.h \
- camel-url.h \
- camel-vee-folder.h \
- camel-vee-store.h \
- camel-vtrash-folder.h \
- camel.h \
- gstring-util.h \
- hash-table-utils.h \
- string-utils.h
-
-libcamel_la_LDFLAGS = -version-info 0:0:0 -rpath $(libdir)
-
-libcamel_la_LIBADD = $(top_builddir)/e-util/libeutil.la \
- $(CAMEL_LIBS) \
- $(KRB4_LDFLAGS) \
- $(NSPR_LDFLAGS) \
- $(NSS_LDFLAGS) \
- $(OPENSSL_LDFLAGS)
-
-
-noinst_HEADERS = \
- camel-charset-map-private.h \
- camel-private.h \
- camel-search-private.h
-
-EXTRA_DIST = \
- README
-
-#noinst_PROGRAMS = \
-# camel-mime-filter-from
-#
-#camel_mime_filter_from_SOURCES = \
-# camel-mime-filter-from.c
-#
-#camel_mime_filter_from_LDADD = \
-# ../camel/libcamel.la \
-# ../e-util/libeutil.la \
-# ../libibex/libibex.la \
-# $(GNOME_LIBDIR) \
-# $(GNOMEUI_LIBS) \
-# $(INTLLIBS) \
-# $(PTHREAD_LIB) \
-# $(EXTRA_GNOME_LIBS)
diff --git a/camel/README b/camel/README
deleted file mode 100644
index f020174d5e..0000000000
--- a/camel/README
+++ /dev/null
@@ -1,57 +0,0 @@
-
- CAMEL
-
-
- A generic Messaging Library
-
-
- ----
-
-
-Introduction:
--------------
-
-Camel will be a generic messaging library. It will evntually support
-the standard messaging system for receiving and sending messages.
-It aims at being the backend for the future gnome-mailer system.
-
-The name "camel" stands for ... nothing. Open area of development there.
-You know, that "bazaar" thing. Maybe could we organize a big contest on
-gnome-list to find the best explanation :)
-
-Camel draws heavily from JavaMail and the IMAP4rev1 RFC. People
-wanting to hack on a provider should read the JavaMail API
-specification, but CMC and MAPI are of interest too.
-
-Please, before starting anything, wait for me to finish the abstract
-classes. Some parts are not definitive yet.
-
-
-Organization:
--------------
-
-The library is roughly a set of abstract classes, some kind of generic
-"interfaces" (idl interfaces, not java interfaces ).
-
-Particular implementations are called providers.
-
-Here are the basic objects:
-
-* CamelService : an abstract class representing an access to a server.
-Handles the connection and authentication to any server.
-
-* CamelStore (CamelService): A hierarchy of folders on a server.
-
-* CamelFolder : An object containing messages. A folder is always
-associated with a store.
-
-* CamelMessage : An object contained in folders. Is defined by a set
-of attributes and a content. (Attributes include: the date it was
-received, the sender address, .....)
-
-* CamelTransport (CamelService): A way to send messages.
-
-....
-...
-
-
diff --git a/camel/README.COPYRIGHT b/camel/README.COPYRIGHT
deleted file mode 100644
index 91774e7339..0000000000
--- a/camel/README.COPYRIGHT
+++ /dev/null
@@ -1,47 +0,0 @@
-Important note for Camel hackers:
----------------------------------
-
-Camel has been a lot of work, and has been conceived to be general
-enough to be used outside the gnome-mailer. It is possible in the
-future that it is used in softwares with licenses incompatible with the
-LGPL. For this reason, the copyright has to be owned by a unique
-person. Be sure, however, that Camel will always be available under
-the LGPL. Significant authors will always be consulted before any
-special use of Camel. Moreover, in special situations, they may be
-given the authorization to use Camel with a license different than the
-LGPL.
-
-Thus, when adding code in Camel, always add the following lines at the
-begining of the file:
-
-/*
- *
- * Copyright 199x, 200x Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-You may also want to add your name to the author name list after this
-header.
-
-Please contact me (Bertrand.Guiheneuf@aful.org) if you want to discuss
-this copyright issue.
-
-Happy hacking,
-
-Bertrand.
-
-
diff --git a/camel/README.HACKING b/camel/README.HACKING
deleted file mode 100644
index a4742ee7b8..0000000000
--- a/camel/README.HACKING
+++ /dev/null
@@ -1,14 +0,0 @@
-You want to hack on Camel ?
-
-Thanks. Camel aims at being the best messaging
-library for Linux and your help is welcome.
-Please be sure to read the following files before
-commiting any change or sending any patch:
-
-CODING.STYLE
-README.COPYRIGHT
-
-
-Thanks.
-
- Bertrand <Bertrand.Guiheneuf@aful.org> \ No newline at end of file
diff --git a/camel/README.mt b/camel/README.mt
deleted file mode 100644
index aeece1b0bb..0000000000
--- a/camel/README.mt
+++ /dev/null
@@ -1,171 +0,0 @@
-
-This version of camel is working towards being multi-thread safe
-(MT-SAFE). At least, for the important api's.
-
-This code has now been merged into the main head, but this file
-will remain here as a log of how it was done, incase any issues
-arise. The ChangeLog of course has a much more detailed list
-of changes.
-
-Intended method
-===============
-
-I intend working on it in several stages:
-
-1. Making the api multi-threadable. Basically removing some const-returns,
-and copying some data where it wasn't before. The api should
-still continue to work if not being used in a multithreaded
-application. There is not a significant amount of work here since
-this was more or less the intention all along.
-
-Some functions where references to objects are returned may have to be
-changed slightly, so that refcounts are incremented before return.
-This doesn't affect much though.
-
-camel_folder::get_message_info done
-camel_folder_summary::uid done
-camel_folder_summary::index done
-camel_folder::get_summary
- Needs to ref each summary item it points to. done
-camel_folder::free_summary
- Needs to unref each summary item it points to. done
-camel_folder_get_message_tag
- needs to copy the tag return
-camel_maildir_summary filename string
- should not be able to modify the string
- array contents after it has been added to
- the summary.
-camel_folder done
- Make every camel-folder use a camel-folder-summary.
- This just reduces some of the code duplication,
- since everything but vee-folder does this already.
-
-2. Adding high level locks for proof of concept. The locks will
-be stored in private or global data, so the api should remain the same for
-non-threaded applications.
-
-A per-folder lock which governs access to the folder
- summary, the folder file or
- communications socket, etc. done
-Locking for exceptions. done
-Per store locks for internal stuff. done
-Per-service locks for various internal lists and
- caches done
-
-3. Further fine-grained locking where it can be done/is worthwhile.
-
-A per-index lock for libibex done
-Locking for the search object half done
-Internal lock for the folder_summary itself
- So that searching can be detatched from other
- folder operations, etc. done
-Possibly a lock for access to parts of a mime-part
- or message
-
-4. A method to cancel operations.
-
-Individual outstanding operations must be cancellable, and not just
-'all current operations'. This will probably not use pthread_cancel
-type of cancelling.
-
-This will however, probably use a method for starting a new thread,
-through camel, that can then be cancelled, and/or some method of
-registering that a thread can be cancelled. Blocking states within
-camel, within that thread, will then act as checkpoints for if the
-operation, and if it is cancelled, the operation will abort
-(i.e. fail, with an appropriate exception code).
-
-Operation cancelling should also function when the application is not
-multi-threaded. Not sure of the api for this yet, probably a callback
-system. Hopefully the api for both scenarios can be made the same.
-
-Other thoughts
-==============
-
-Basically much of the code in camel that does the actual work does NOT
-need to be thread safe to make it safely usable in an mt context.
-
-camel-folder, camel-summary, camel-imap-search, and the camel-service
-classes (at least) are the important ones to be made multithreaded.
-
-For other things, they are either resources that are created
-one-off (for example, camel-mime-message, and its associated
-parts, like camel-internet-address), or multithreadedness
-doesn't make a lot of sense - e.g. camel-stream, or camel-mime-parser.
-
-So basically the approach is a low-risk one. Adding the minimum
-number of locks to start with, and providing further fine-grained
-locks as required. The locks should not need to be particularly
-fine-grained in order to get reasonable results.
-
-Log of changes
-==============
-
-Changed CamelFolder:get_message_info() to return a ref'd copy, requiring
-all get_message_info()'s to have a matching free_message_info().
-
-Moved the CamelFolder frozen changelog data to a private structure.
-
-Added a mutex for CamelFolder frozen changelog stuff (it was just easy
-to do, although it isn't needed yet).
-
-Added a single mutex around all other CamelFolder functions that need
-it, this is just the first cut at mt'edness.
-
-Fixed all camel-folder implementations that call any other
-camel-folder functions to call via virtual methods, to bypass the locks.
-
-Added camel-store private data.
-
-Added a single mutex lock for camel-store's folder functions.
-
-Added camel-service private data.
-
-Added a single mutex lock for camel-service's connect stuff.
-
-Added a mutex for remote-store stream io stuff.
-
-Added a mutex for imap, so it can bracket a compound command
-exclusively. Pop doesn't need this since you can only have a single
-folder per store, and the folder interface is already forced
-single-threaded.
-
-Added mutex for camel-session, most operations.
-
-Running the tests finds at least 1 deadlock so far. Need to
-work on that.
-
-Fixed get_summary to ref/unref its items.
-
-Removed the global folder lock from the toplevel
-camel_folder_search(), each implementation must now handle locking.
-
-Fixed the local-folder implementation of searching. imap-folder
-searching should already be mt-safe through the command lock.
-
-Fixed imap summary to ref/unref too.
-
-Built some test cases, and expanded the test framework library to
-handle multiple threads. It works!
-
-Next, added a recursive mutex class, so that locking inside imap had
-any chance of working. Got imap working.
-
-Moved the camel folder summary into the base folder class, and fixed
-everything to use it that way.
-
-Made the vfolder use a real camel-folder-summary rather than a
-hashtable + array that it was using, and probably fixed some problems
-which caused evolution-mail not to always catch flag updates. Oh, and
-made it sync/expunge all its subfolders when sync/expungeing.
-
-Made the camel-folder summary completely mt-safe.
-
-Removed all of the locks on the folder functions dealing directly with
-the summary, so now for example all summary lookups will not be
-interupted by long operations.
-
-Made the nntp newsrc thing mt-safe, because of some unfortunate
-sideeffect of it being called from the summary interaction code in
-nntp-folder.
-
diff --git a/camel/broken-date-parser.c b/camel/broken-date-parser.c
deleted file mode 100644
index 4e168efb64..0000000000
--- a/camel/broken-date-parser.c
+++ /dev/null
@@ -1,318 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@helixcode.com>
- *
- * Copyright 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "broken-date-parser.h"
-
-/* prototypes for functions dealing with broken date formats */
-static GList *datetok (const gchar *date);
-static gint get_days_in_month (gint mon, gint year);
-static gint get_weekday (gchar *str);
-static gint get_month (gchar *str);
-
-static char *tz_months [] = {
- "Jan", "Feb", "Mar", "Apr", "May", "Jun",
- "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
-};
-
-/*****************************************************************************
- * The following functions are here in the case of badly broken date formats *
- * *
- * -- fejj@helixcode.com *
- *****************************************************************************/
-
-typedef struct {
- gchar dow[6]; /* day of week (should only need 4 chars) */
- gint day;
- gint mon; /* 1->12 or 0 if invalid */
- gint year;
- gint hour;
- gint min;
- gint sec;
- gchar zone[6]; /* time zone */
-} date_t;
-
-static
-GList *datetok (const gchar *date)
-{
- GList *tokens = NULL;
- gchar *token, *start, *end;
-
- start = (gchar *) date;
- while (*start) {
- /* find the end of this token */
- for (end = start; *end && *end != ' '; end++);
-
- token = g_strndup (start, (end - start));
-
- if (token && *token)
- tokens = g_list_append (tokens, token);
- else
- g_free (token);
-
- if (*end)
- start = end + 1;
- else
- break;
- }
-
- return tokens;
-}
-
-static gint
-get_days_in_month (gint mon, gint year)
-{
- switch (mon) {
- case 1: case 3: case 5: case 7: case 8: case 10: case 12:
- return 31;
- case 4: case 6: case 9: case 11:
- return 30;
- case 2:
- if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
- return 29;
- return 28;
- default:
- return 30;
- }
-}
-
-static gint
-get_weekday (gchar *str)
-{
- g_return_val_if_fail ((str != NULL), 0);
-
- if (strncmp (str, "Mon", 3) == 0) {
- return 1;
- } else if (strncmp (str, "Tue", 3) == 0) {
- return 2;
- } else if (strncmp (str, "Wed", 3) == 0) {
- return 3;
- } else if (strncmp (str, "Thu", 3) == 0) {
- return 4;
- } else if (strncmp (str, "Fri", 3) == 0) {
- return 5;
- } else if (strncmp (str, "Sat", 3) == 0) {
- return 6;
- } else if (strncmp (str, "Sun", 3) == 0) {
- return 7;
- }
-
- return 0; /* unknown week day */
-}
-
-static gint
-get_month (gchar *str)
-{
- g_return_val_if_fail (str != NULL, 0);
-
- if (strncmp (str, "Jan", 3) == 0) {
- return 1;
- } else if (strncmp (str, "Feb", 3) == 0) {
- return 2;
- } else if (strncmp (str, "Mar", 3) == 0) {
- return 3;
- } else if (strncmp (str, "Apr", 3) == 0) {
- return 4;
- } else if (strncmp (str, "May", 3) == 0) {
- return 5;
- } else if (strncmp (str, "Jun", 3) == 0) {
- return 6;
- } else if (strncmp (str, "Jul", 3) == 0) {
- return 7;
- } else if (strncmp (str, "Aug", 3) == 0) {
- return 8;
- } else if (strncmp (str, "Sep", 3) == 0) {
- return 9;
- } else if (strncmp (str, "Oct", 3) == 0) {
- return 10;
- } else if (strncmp (str, "Nov", 3) == 0) {
- return 11;
- } else if (strncmp (str, "Dec", 3) == 0) {
- return 12;
- }
-
- return 0; /* unknown month */
-}
-
-gchar *
-parse_broken_date (const gchar *datestr)
-{
- GList *tokens;
- date_t date;
- gchar *token, *ptr, *newdatestr;
- guint len, i, retval;
- gdouble tz = 0.0;
-
- memset ((void*)&date, 0, sizeof (date_t));
- g_return_val_if_fail (datestr != NULL, NULL);
-
- tokens = datetok (datestr);
- len = g_list_length (tokens);
- for (i = 0; i < len; i++) {
- token = g_list_nth_data (tokens, i);
-
- if ((retval = get_weekday (token))) {
- strncpy (date.dow, datestr, 4);
- } else if ((retval = get_month (token))) {
- date.mon = retval;
- } else if (strlen (token) <= 2) {
- /* this could be a 1 or 2 digit day of the month */
- for (retval = 1, ptr = token; *ptr; ptr++)
- if (*ptr < '0' || *ptr > '9')
- retval = 0;
-
- if (retval && atoi (token) <= 31 && !date.day) /* probably should find a better way */
- date.day = atoi (token);
- else /* fubar'd client using a 2-digit year */
- date.year = atoi (token) < 69 ? 2000 + atoi (token) : 1900 + atoi (token);
- } else if (strlen (token) == 4) {
- /* this could be the year... */
- for (retval = 1, ptr = token; *ptr; ptr++)
- if (*ptr < '0' || *ptr > '9')
- retval = 0;
-
- if (retval)
- date.year = atoi (token);
- } else if (strchr (token, ':')) {
- /* this must be the time: hh:mm:ss */
- sscanf (token, "%d:%d:%d", &date.hour, &date.min, &date.sec);
- } else if (*token == '-' || *token == '+') {
- tz = atoi (token) / 100.0;
- }
- }
-
- g_list_free (tokens);
-
- /* adjust times based on time zones */
-
- if (tz != 0) {
- /* check for time-zone shift */
- if (tz > 0) {
- /* correct for positive hours off of UCT */
- date.hour -= (tz / 100);
- tz = (gint)tz % 100;
-
- if (tz > 0) /* correct for positive minutes off of UCT */
- date.min -= (gint)(((gdouble) tz / 100.0) * 60.0);
- } else {
- if (tz < 0) {
- /* correct for negative hours off of UCT */
- tz = -tz;
- date.hour += (tz / 100);
- tz = -((gint)tz % 100);
-
- if (tz < 0)
- date.min -= (gint)(((gdouble) tz / 100.0) * 60.0);
- }
- }
-
- /* adjust seconds to proper range */
- if (date.sec > 59) {
- date.min += (date.sec / 60);
- date.sec = (date.sec % 60);
- }
-
- /* adjust minutes to proper range */
- if (date.min > 59) {
- date.hour += (date.min / 60);
- date.min = (date.min % 60);
- } else {
- if (date.min < 0) {
- date.min = -date.min;
- date.hour -= (date.min / 60) - 1;
- date.min = 60 - (date.min % 60);
- }
- }
-
- /* adjust hours to the proper randge */
- if (date.hour > 23) {
- date.day += (date.hour / 24);
- date.hour -= (date.hour % 24);
- } else {
- if (date.hour < 0) {
- date.hour = -date.hour;
- date.day -= (date.hour / 24) - 1;
- date.hour = 24 - (date.hour % 60);
- }
- }
-
- /* adjust days to the proper range */
- while (date.day > get_days_in_month (date.mon, date.year)) {
- date.day -= get_days_in_month (date.mon, date.year);
- date.mon++;
- if (date.mon > 12) {
- date.year += (date.mon / 12);
- date.mon = (date.mon % 12);
- if (date.mon == 0) {
- /* month sanity check */
- date.mon = 12;
- date.year -= 1;
- }
- }
- }
-
- while (date.day < 1) {
- date.day += get_days_in_month (date.mon, date.year);
- date.mon--;
- if (date.mon < 1) {
- date.mon = -date.mon;
- date.year -= (date.mon / 12) - 1;
- date.mon = 12 - (date.mon % 12);
- }
- }
-
- /* adjust months to the proper range */
- if (date.mon > 12) {
- date.year += (date.mon / 12);
- date.mon = (date.mon % 12);
- if (date.mon == 0) {
- /* month sanity check */
- date.mon = 12;
- date.year -= 1;
- }
- } else {
- if (date.mon < 1) {
- date.mon = -date.mon;
- date.year -= (date.mon / 12) - 1;
- date.mon = 12 - (date.mon % 12);
- }
- }
- }
-
- /* now lets print this date into a string with the correct format */
- newdatestr = g_strdup_printf ("%s, %d %s %d %s%d:%s%d:%s%d -0000",
- date.dow, date.day, tz_months[date.mon-1],
- date.year,
- date.hour > 10 ? "" : "0", date.hour,
- date.min > 10 ? "" : "0", date.min,
- date.sec > 10 ? "" : "0", date.sec);
-
- return newdatestr;
-}
-
-/*****************************************************************************
- * This ends the code for the broken date parser... *
- * *
- * -- fejj@helixcode.com *
- *****************************************************************************/
diff --git a/camel/broken-date-parser.h b/camel/broken-date-parser.h
deleted file mode 100644
index 57607a7bdf..0000000000
--- a/camel/broken-date-parser.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@helixcode.com>
- *
- * Copyright 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#include <glib.h>
-
-/* prototypes for functions dealing with broken date formats */
-
-gchar *parse_broken_date (const gchar *datestr);
-
-
-
-
-
diff --git a/camel/camel-address.c b/camel/camel-address.c
deleted file mode 100644
index a1c0990dec..0000000000
--- a/camel/camel-address.c
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "camel-address.h"
-
-
-static void camel_address_class_init (CamelAddressClass *klass);
-static void camel_address_init (CamelAddress *obj);
-static void camel_address_finalize (CamelObject *obj);
-
-static CamelObjectClass *camel_address_parent;
-
-static void
-camel_address_class_init (CamelAddressClass *klass)
-{
- camel_address_parent = camel_type_get_global_classfuncs (camel_object_get_type ());
-}
-
-static void
-camel_address_init (CamelAddress *obj)
-{
- obj->addresses = g_ptr_array_new();
-}
-
-static void
-camel_address_finalize (CamelObject *obj)
-{
- camel_address_remove((CamelAddress *)obj, -1);
- g_ptr_array_free(((CamelAddress *)obj)->addresses, TRUE);
-}
-
-CamelType
-camel_address_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_object_get_type (), "CamelAddress",
- sizeof (CamelAddress),
- sizeof (CamelAddressClass),
- (CamelObjectClassInitFunc) camel_address_class_init,
- NULL,
- (CamelObjectInitFunc) camel_address_init,
- (CamelObjectFinalizeFunc) camel_address_finalize);
- }
-
- return type;
-}
-
-/**
- * camel_address_new:
- *
- * Create a new CamelAddress object.
- *
- * Return value: A new CamelAddress widget.
- **/
-CamelAddress *
-camel_address_new (void)
-{
- CamelAddress *new = CAMEL_ADDRESS(camel_object_new(camel_address_get_type()));
- return new;
-}
-
-/**
- * camel_address_new_clone:
- * @in:
- *
- * Clone an existing address type.
- *
- * Return value:
- **/
-CamelAddress *
-camel_address_new_clone(const CamelAddress *in)
-{
- CamelAddress *new = CAMEL_ADDRESS(camel_object_new(CAMEL_OBJECT_GET_TYPE(in)));
-
- camel_address_cat(new, in);
- return new;
-}
-
-/**
- * camel_address_length:
- * @a:
- *
- * Return the number of addresses stored in the address @a.
- *
- * Return value:
- **/
-int
-camel_address_length(CamelAddress *a)
-{
- return a->addresses->len;
-}
-
-/**
- * camel_address_decode:
- * @a: An address.
- * @raw: Raw address description.
- *
- * Construct a new address from a raw address field.
- *
- * Return value: Returns the number of addresses found,
- * or -1 if the addresses could not be parsed fully.
- **/
-int
-camel_address_decode (CamelAddress *a, const char *raw)
-{
- g_return_val_if_fail(CAMEL_IS_ADDRESS(a), -1);
-
- return CAMEL_ADDRESS_CLASS (CAMEL_OBJECT_GET_CLASS (a))->decode(a, raw);
-}
-
-/**
- * camel_address_encode:
- * @a:
- *
- * Encode an address in a format suitable for a raw header.
- *
- * Return value: The encoded address.
- **/
-char *
-camel_address_encode (CamelAddress *a)
-{
- g_return_val_if_fail(CAMEL_IS_ADDRESS(a), NULL);
-
- return CAMEL_ADDRESS_CLASS (CAMEL_OBJECT_GET_CLASS (a))->encode(a);
-}
-
-/**
- * camel_address_unformat:
- * @a:
- * @raw:
- *
- * Attempt to convert a previously formatted and/or edited
- * address back into internal form.
- *
- * Return value: -1 if it could not be parsed, or the number
- * of valid addresses found.
- **/
-int
-camel_address_unformat(CamelAddress *a, const char *raw)
-{
- g_return_val_if_fail(CAMEL_IS_ADDRESS(a), -1);
-
- return CAMEL_ADDRESS_CLASS (CAMEL_OBJECT_GET_CLASS (a))->unformat(a, raw);
-}
-
-/**
- * camel_address_format:
- * @a:
- *
- * Format an address in a format suitable for display.
- *
- * Return value: The formatted address.
- **/
-char *
-camel_address_format (CamelAddress *a)
-{
- if (a == NULL)
- return NULL;
-
- g_return_val_if_fail(CAMEL_IS_ADDRESS(a), NULL);
-
- return CAMEL_ADDRESS_CLASS (CAMEL_OBJECT_GET_CLASS (a))->format(a);
-}
-
-/**
- * camel_address_cat:
- * @dest:
- * @source:
- *
- * Concatenate one address onto another. The addresses must
- * be of the same type.
- *
- * Return value:
- **/
-int
-camel_address_cat (CamelAddress *dest, const CamelAddress *source)
-{
- g_return_val_if_fail(CAMEL_IS_ADDRESS(dest), -1);
- g_return_val_if_fail(CAMEL_IS_ADDRESS(source), -1);
-
- return CAMEL_ADDRESS_CLASS(CAMEL_OBJECT_GET_CLASS(dest))->cat(dest, source);
-}
-
-/**
- * camel_address_copy:
- * @dest:
- * @source:
- *
- * Copy an address contents.
- *
- * Return value:
- **/
-int
-camel_address_copy (CamelAddress *dest, const CamelAddress *source)
-{
- g_return_val_if_fail(CAMEL_IS_ADDRESS(dest), -1);
- g_return_val_if_fail(CAMEL_IS_ADDRESS(source), -1);
-
- camel_address_remove(dest, -1);
- return camel_address_cat(dest, source);
-}
-
-/**
- * camel_address_remove:
- * @a:
- * @index: The address to remove, use -1 to remove all address.
- *
- * Remove an address by index, or all addresses.
- **/
-void
-camel_address_remove (CamelAddress *a, int index)
-{
- g_return_if_fail(CAMEL_IS_ADDRESS(a));
-
- if (index == -1) {
- for (index=a->addresses->len; index>-1; index--)
- CAMEL_ADDRESS_CLASS (CAMEL_OBJECT_GET_CLASS (a))->remove(a, index);
- } else {
- CAMEL_ADDRESS_CLASS (CAMEL_OBJECT_GET_CLASS (a))->remove(a, index);
- }
-}
diff --git a/camel/camel-address.h b/camel/camel-address.h
deleted file mode 100644
index 5115ee652b..0000000000
--- a/camel/camel-address.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef _CAMEL_ADDRESS_H
-#define _CAMEL_ADDRESS_H
-
-#include <glib.h>
-#include <camel/camel-object.h>
-
-#define CAMEL_ADDRESS(obj) CAMEL_CHECK_CAST (obj, camel_address_get_type (), CamelAddress)
-#define CAMEL_ADDRESS_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_address_get_type (), CamelAddressClass)
-#define CAMEL_IS_ADDRESS(obj) CAMEL_CHECK_TYPE (obj, camel_address_get_type ())
-
-typedef struct _CamelAddressClass CamelAddressClass;
-
-struct _CamelAddress {
- CamelObject parent;
-
- GPtrArray *addresses;
-
- struct _CamelAddressPrivate *priv;
-};
-
-struct _CamelAddressClass {
- CamelObjectClass parent_class;
-
- int (*decode) (CamelAddress *, const char *raw);
- char *(*encode) (CamelAddress *);
-
- int (*unformat) (CamelAddress *, const char *raw);
- char *(*format) (CamelAddress *);
-
- int (*cat) (CamelAddress *, const CamelAddress *);
-
- void (*remove) (CamelAddress *, int index);
-};
-
-guint camel_address_get_type (void);
-CamelAddress *camel_address_new (void);
-CamelAddress *camel_address_new_clone (const CamelAddress *);
-int camel_address_length (CamelAddress *);
-
-int camel_address_decode (CamelAddress *, const char *);
-char *camel_address_encode (CamelAddress *);
-int camel_address_unformat (CamelAddress *, const char *);
-char *camel_address_format (CamelAddress *);
-
-int camel_address_cat (CamelAddress *, const CamelAddress *);
-int camel_address_copy (CamelAddress *, const CamelAddress *);
-
-void camel_address_remove (CamelAddress *, int index);
-
-#endif /* ! _CAMEL_ADDRESS_H */
diff --git a/camel/camel-charset-map-private.h b/camel/camel-charset-map-private.h
deleted file mode 100644
index 18b603148a..0000000000
--- a/camel/camel-charset-map-private.h
+++ /dev/null
@@ -1,4345 +0,0 @@
-/* This file is automatically generated: DO NOT EDIT */
-
-static unsigned char m000[256] = {
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xd0, 0xd0, 0xf2, 0xf7, 0xf2, 0xf0, 0xff,
- 0xf7, 0xf0, 0xb0, 0xf0, 0xe0, 0xff, 0xf2, 0x94,
- 0xf7, 0xf0, 0xf2, 0xf2, 0xd7, 0xd2, 0xd0, 0xf2,
- 0xd7, 0xd0, 0x90, 0xe0, 0xd0, 0xf2, 0xd2, 0xc0,
- 0xd2, 0xc7, 0xc7, 0xc6, 0xc7, 0xc4, 0xc4, 0xc3,
- 0xc2, 0xc7, 0xc2, 0xc7, 0xc2, 0xc7, 0xc7, 0xc2,
- 0x42, 0xc2, 0xe2, 0xc3, 0xc7, 0xc4, 0xc7, 0xc7,
- 0xc4, 0xc2, 0xc7, 0xd6, 0xd7, 0x51, 0x50, 0x97,
- 0x82, 0x87, 0x87, 0x86, 0x87, 0x84, 0x84, 0x83,
- 0x82, 0x87, 0x82, 0x87, 0x82, 0x87, 0x87, 0x82,
- 0x02, 0x82, 0x82, 0x93, 0x97, 0x94, 0x97, 0xd7,
- 0x94, 0x92, 0x97, 0xd6, 0xd7, 0x51, 0x50, 0xf0,
-};
-
-static unsigned char m001[256] = {
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x0f, 0x2f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
- 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x2f, 0x0f, 0x2f,
- 0x2f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
- 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x2f, 0x0f, 0x0f,
- 0xff, 0x28, 0x6a, 0x6e, 0x72, 0x28, 0x72, 0x7f,
- 0x70, 0xfe, 0x28, 0x7a, 0x7a, 0x7f, 0x7e, 0x68,
- 0xfb, 0x7a, 0xea, 0x6a, 0x70, 0x7a, 0x7e, 0xfb,
- 0x70, 0x6a, 0x28, 0x7a, 0x62, 0x62, 0x62, 0x28,
- 0x2c, 0x3d, 0x3d, 0x2d, 0x7f, 0x6f, 0x6f, 0x3c,
- 0x2c, 0x7f, 0x2c, 0x3d, 0x2c, 0x3d, 0x3d, 0x2d,
- 0x29, 0x2c, 0x2c, 0x7f, 0x3d, 0x6f, 0x7f, 0x7a,
- 0x6f, 0x2c, 0x3d, 0x2d, 0x7f, 0x3d, 0x29, 0x7f,
- 0x2c, 0x3d, 0x3d, 0x2d, 0x7f, 0x6f, 0x6f, 0x3c,
- 0x2c, 0x7f, 0x2c, 0x3d, 0x2c, 0x3d, 0x3d, 0x2d,
- 0x29, 0x2c, 0x2c, 0x7f, 0x3d, 0x6f, 0x7f, 0xfa,
- 0x6f, 0x2c, 0x3d, 0x2d, 0x7f, 0x3d, 0x29, 0x2c,
-};
-
-static unsigned char m002[256] = {
- 0x1f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
- 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
- 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
- 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
- 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
- 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
- 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
- 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
- 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
- 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
- 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
- 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
- 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
- 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
- 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
- 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x3f, 0x3f,
- 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e,
- 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e,
- 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e,
- 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e,
- 0x1f, 0x18, 0x58, 0x58, 0x18, 0x58, 0x18, 0x7c,
- 0x78, 0x19, 0x18, 0x1c, 0x58, 0x18, 0x18, 0x18,
- 0x79, 0x78, 0x19, 0x18, 0x78, 0x18, 0x78, 0x19,
- 0x18, 0x18, 0x18, 0x1c, 0x18, 0x18, 0x18, 0x18,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x02, 0x02, 0x1a, 0x1a, 0x18,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x79,
- 0x18, 0x18, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a,
-};
-
-static unsigned char m010[256] = {
- 0x04, 0x04, 0x01, 0x01, 0x05, 0x05, 0x01, 0x01,
- 0x02, 0x02, 0x02, 0x02, 0x05, 0x05, 0x01, 0x01,
- 0x05, 0x05, 0x04, 0x04, 0x00, 0x00, 0x04, 0x04,
- 0x05, 0x05, 0x01, 0x01, 0x02, 0x02, 0x82, 0x82,
- 0x02, 0x02, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02,
- 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x04, 0x04,
- 0x82, 0x82, 0x00, 0x00, 0x02, 0x02, 0x04, 0x04,
- 0x04, 0x01, 0x01, 0x04, 0x04, 0x01, 0x01, 0x00,
- 0x00, 0x01, 0x01, 0x01, 0x01, 0x04, 0x04, 0x01,
- 0x01, 0x00, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00,
- 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x04, 0x04,
- 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x83, 0x83,
- 0x05, 0x05, 0x01, 0x01, 0x01, 0x01, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01,
- 0x01, 0x01, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x01, 0x01, 0x03, 0x03, 0x05, 0x05, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m011[256] = {
- 0x43, 0x43, 0x10, 0x10, 0x53, 0x53, 0x52, 0x52,
- 0x00, 0x00, 0x04, 0x04, 0x53, 0x53, 0x10, 0x10,
- 0x11, 0x11, 0x43, 0x43, 0x00, 0x00, 0x43, 0x43,
- 0x53, 0x53, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00,
- 0x04, 0x04, 0x43, 0x43, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x01, 0x43, 0x43, 0x00, 0x00, 0x43, 0x43,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x43,
- 0x01, 0x10, 0x10, 0x43, 0x43, 0x10, 0x10, 0x00,
- 0x00, 0x52, 0x52, 0x52, 0x52, 0x43, 0x43, 0x10,
- 0x10, 0x00, 0x01, 0x01, 0x43, 0x43, 0x00, 0x00,
- 0x10, 0x10, 0x28, 0x28, 0x10, 0x10, 0x42, 0x42,
- 0x10, 0x10, 0x52, 0x52, 0x00, 0x00, 0x10, 0x10,
- 0x7b, 0x7b, 0x10, 0x10, 0x10, 0x10, 0x01, 0x01,
- 0x01, 0x01, 0x43, 0x43, 0x00, 0x00, 0x10, 0x10,
- 0x10, 0x10, 0x43, 0x43, 0x04, 0x04, 0x04, 0x04,
- 0x2c, 0x52, 0x52, 0x52, 0x52, 0x7b, 0x7b, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m020[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x03, 0x07, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m021[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x50,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x10, 0x50, 0x00, 0x50, 0x20, 0x10, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m022[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m030[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x00,
- 0x20, 0x20, 0x20, 0x00, 0x20, 0x00, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m032[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m040[256] = {
- 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x08, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
- 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x08, 0x08,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m041[256] = {
- 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m042[256] = {
- 0x00, 0x61, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61,
- 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61,
- 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61,
- 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61,
- 0x61, 0x61, 0x61, 0x61, 0x61, 0x60, 0x61, 0x61,
- 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61,
- 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61,
- 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61,
- 0x00, 0x61, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m050[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
- 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
- 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
- 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m052[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00,
- 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x00,
- 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m060[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10,
- 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
- 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
- 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
- 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
- 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
- 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m0e2[256] = {
- 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m102[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m1e1[256] = {
- 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m200[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x40,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m201[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x70, 0x71, 0x00, 0x00, 0x00,
- 0x70, 0x72, 0x70, 0x00, 0x72, 0x72, 0x72, 0x00,
- 0x70, 0x70, 0xf0, 0x00, 0x00, 0x00, 0x70, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m202[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x64, 0x00, 0x00, 0x00, 0x04, 0x60, 0x40, 0x00,
- 0x78, 0x78, 0x00, 0x00, 0x60, 0x60, 0x18, 0x18,
- 0x60, 0x60, 0x01, 0x00, 0x00, 0x60, 0x64, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m210[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m211[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m212[256] = {
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m221[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m222[256] = {
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x61, 0x00, 0x00, 0x60, 0x60, 0x20,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x01, 0x01, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m231[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m232[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m242[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m251[256] = {
- 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
- 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
- 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
- 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
- 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m252[256] = {
- 0x61, 0x60, 0x61, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x60,
- 0x61, 0x00, 0x00, 0x60, 0x61, 0x00, 0x00, 0x60,
- 0x61, 0x00, 0x00, 0x60, 0x61, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x61, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x61, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x61, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x61, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
- 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
- 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x61, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m262[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m302[256] = {
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0x00, 0x20,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00,
-};
-
-static unsigned char m322[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m332[256] = {
- 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
- 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x20,
- 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00,
- 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x00,
- 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m4e2[256] = {
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x20, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x20, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x20, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m4f2[256] = {
- 0x20, 0x60, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x20, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x20, 0x60,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x20, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x20, 0x00, 0x20, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x20, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x20, 0x60, 0x00, 0x00, 0x20, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x20,
-};
-
-static unsigned char m502[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x20, 0x60,
- 0x00, 0x60, 0x20, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x20, 0x00, 0x20, 0x60, 0x00, 0x00, 0x20, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x20, 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x20, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x20, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m512[256] = {
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x20, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x20, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x20, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00,
-};
-
-static unsigned char m522[256] = {
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x20, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x20, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x20,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x20, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x20, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
-};
-
-static unsigned char m532[256] = {
- 0x20, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x20,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x20, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x60, 0x20, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x20, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x20, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m542[256] = {
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x20, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x20, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x20,
-};
-
-static unsigned char m552[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x20, 0x60,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
-};
-
-static unsigned char m562[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
-};
-
-static unsigned char m572[256] = {
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x20, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x20,
- 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m582[256] = {
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x20, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00,
-};
-
-static unsigned char m592[256] = {
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x20, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x20, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x20, 0x00, 0x20, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x20, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x20, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x20, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
-};
-
-static unsigned char m5a2[256] = {
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m5b2[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x20, 0x60,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x20, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x20, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x20, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
-};
-
-static unsigned char m5c2[256] = {
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x20, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x20, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00,
-};
-
-static unsigned char m5d2[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x20,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x20, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x20, 0x20, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x20, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00,
-};
-
-static unsigned char m5e2[256] = {
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x60,
-};
-
-static unsigned char m5f2[256] = {
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x20, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x20, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x20,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x20,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x20, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60,
-};
-
-static unsigned char m602[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x20, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x20, 0x00, 0x00,
- 0x00, 0x60, 0x20, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x20, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x20, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m612[256] = {
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x20, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x20, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x20,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x20, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60,
-};
-
-static unsigned char m622[256] = {
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x60, 0x20, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
-};
-
-static unsigned char m632[256] = {
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x20, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m642[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x20, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x20, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00,
-};
-
-static unsigned char m652[256] = {
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x20, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m662[256] = {
- 0x20, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x20, 0x60, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x20, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x20, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x20, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x20, 0x60,
- 0x00, 0x20, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x20, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x20,
- 0x00, 0x20, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x20, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x20, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x20, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x20, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x20,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x20, 0x20, 0x60, 0x60, 0x60, 0x60,
-};
-
-static unsigned char m672[256] = {
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x20, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x20, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
- 0x20, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
-};
-
-static unsigned char m682[256] = {
- 0x00, 0x20, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x20, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x20, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x20, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x20,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m692[256] = {
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x20, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x20, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60,
-};
-
-static unsigned char m6a2[256] = {
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x20, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x20, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m6b2[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x20, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m6c2[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x20,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x20, 0x60, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x20,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x20, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x20, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m6d2[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x20,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x20,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x20, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x20,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x20, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x20, 0x60, 0x60, 0x60, 0x20, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m6e2[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x20,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x20, 0x60, 0x00, 0x20, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x20, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x20,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
-};
-
-static unsigned char m6f2[256] = {
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x20, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
-};
-
-static unsigned char m702[256] = {
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x20, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x20, 0x60, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
-};
-
-static unsigned char m712[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x20, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x20, 0x60,
-};
-
-static unsigned char m722[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x20, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
-};
-
-static unsigned char m732[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x20, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x20,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x20, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
-};
-
-static unsigned char m742[256] = {
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x20,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x20, 0x00,
- 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x20, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x20, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x20,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m752[256] = {
- 0x00, 0x20, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x20,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x20,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x60,
-};
-
-static unsigned char m762[256] = {
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x20, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x20, 0x20, 0x00, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
-};
-
-static unsigned char m772[256] = {
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m782[256] = {
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x20, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
-};
-
-static unsigned char m792[256] = {
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m7a2[256] = {
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x20, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x60, 0x60, 0x20,
- 0x00, 0x00, 0x60, 0x20, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
-};
-
-static unsigned char m7b2[256] = {
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x60, 0x20, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m7c2[256] = {
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
-};
-
-static unsigned char m7d2[256] = {
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x20, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x20, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x20, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x20,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x20, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m7e2[256] = {
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x20, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x20, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m7f2[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x20,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x20, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m802[256] = {
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
-};
-
-static unsigned char m812[256] = {
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00,
-};
-
-static unsigned char m822[256] = {
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m832[256] = {
- 0x00, 0x20, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x20,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x20,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x20, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
-};
-
-static unsigned char m842[256] = {
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x20, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
-};
-
-static unsigned char m852[256] = {
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x20, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
-};
-
-static unsigned char m862[256] = {
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
-};
-
-static unsigned char m872[256] = {
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
-};
-
-static unsigned char m882[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x20,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x20, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00,
-};
-
-static unsigned char m892[256] = {
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x20, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m8a2[256] = {
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x20, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x20,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x20,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x20, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x20,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x20, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
-};
-
-static unsigned char m8b2[256] = {
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x20,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m8c2[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00,
-};
-
-static unsigned char m8d2[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x20, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x20, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
-};
-
-static unsigned char m8e2[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x20,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00,
-};
-
-static unsigned char m8f2[256] = {
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
-};
-
-static unsigned char m902[256] = {
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x20,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
-};
-
-static unsigned char m912[256] = {
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x20, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x20,
- 0x60, 0x00, 0x20, 0x60, 0x60, 0x60, 0x20, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x20, 0x20, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
-};
-
-static unsigned char m922[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x20, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x20, 0x20, 0x00, 0x20, 0x00, 0x00, 0x60,
- 0x20, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x20, 0x00,
- 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x20, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x20,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
- 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x20, 0x00, 0x60, 0x20, 0x00, 0x20, 0x00, 0x20,
- 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x20, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x20,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x20, 0x60, 0x20, 0x60, 0x00, 0x00, 0x20,
-};
-
-static unsigned char m932[256] = {
- 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x20, 0x20, 0x00,
- 0x60, 0x20, 0x60, 0x60, 0x00, 0x20, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x20, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x20,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x20, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x20, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x20, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m942[256] = {
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x20, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x20, 0x00, 0x00,
- 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m952[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x20, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m962[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x20, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x20,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m972[256] = {
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x20, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x20, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20,
- 0x00, 0x20, 0x60, 0x00, 0x00, 0x20, 0x60, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
-};
-
-static unsigned char m982[256] = {
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x20,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00,
-};
-
-static unsigned char m992[256] = {
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x20,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
-};
-
-static unsigned char m9a2[256] = {
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x20, 0x00, 0x00, 0x20, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m9b2[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x20, 0x00, 0x60, 0x20, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x20,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m9c2[256] = {
- 0x20, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60,
- 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char m9d2[256] = {
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x20, 0x60, 0x00, 0x00, 0x60,
- 0x20, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
-};
-
-static unsigned char m9e2[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x20, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00,
- 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x20, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60,
- 0x00, 0x60, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00,
-};
-
-static unsigned char m9f2[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char mf02[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char mf92[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char mfa2[256] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-static unsigned char mff2[256] = {
- 0x00, 0x60, 0x20, 0x60, 0x60, 0x60, 0x60, 0x20,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x20, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x20, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x20, 0x00,
- 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x20, 0x20, 0x20, 0x60, 0x20, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-struct {
- unsigned char *bits0;
- unsigned char *bits1;
- unsigned char *bits2;
-} camel_charmap[256] = {
- { m000, m001, m002, }, { m010, m011, 0, }, { m020, m021, m022, }, { m030, 0, m032, }, { m040, m041, m042, }, { m050, 0, m052, }, { m060, 0, 0, }, { 0, 0, 0, },
- { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, m0e2, }, { 0, 0, 0, },
- { 0, 0, m102, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, },
- { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, m1e1, 0, }, { 0, 0, 0, },
- { m200, m201, m202, }, { m210, m211, m212, }, { 0, m221, m222, }, { 0, m231, m232, }, { 0, 0, m242, }, { 0, m251, m252, }, { 0, 0, m262, }, { 0, 0, 0, },
- { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, },
- { 0, 0, m302, }, { 0, 0, 0, }, { 0, 0, m322, }, { 0, 0, m332, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, },
- { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, },
- { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, },
- { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, m4e2, }, { 0, 0, m4f2, },
- { 0, 0, m502, }, { 0, 0, m512, }, { 0, 0, m522, }, { 0, 0, m532, }, { 0, 0, m542, }, { 0, 0, m552, }, { 0, 0, m562, }, { 0, 0, m572, },
- { 0, 0, m582, }, { 0, 0, m592, }, { 0, 0, m5a2, }, { 0, 0, m5b2, }, { 0, 0, m5c2, }, { 0, 0, m5d2, }, { 0, 0, m5e2, }, { 0, 0, m5f2, },
- { 0, 0, m602, }, { 0, 0, m612, }, { 0, 0, m622, }, { 0, 0, m632, }, { 0, 0, m642, }, { 0, 0, m652, }, { 0, 0, m662, }, { 0, 0, m672, },
- { 0, 0, m682, }, { 0, 0, m692, }, { 0, 0, m6a2, }, { 0, 0, m6b2, }, { 0, 0, m6c2, }, { 0, 0, m6d2, }, { 0, 0, m6e2, }, { 0, 0, m6f2, },
- { 0, 0, m702, }, { 0, 0, m712, }, { 0, 0, m722, }, { 0, 0, m732, }, { 0, 0, m742, }, { 0, 0, m752, }, { 0, 0, m762, }, { 0, 0, m772, },
- { 0, 0, m782, }, { 0, 0, m792, }, { 0, 0, m7a2, }, { 0, 0, m7b2, }, { 0, 0, m7c2, }, { 0, 0, m7d2, }, { 0, 0, m7e2, }, { 0, 0, m7f2, },
- { 0, 0, m802, }, { 0, 0, m812, }, { 0, 0, m822, }, { 0, 0, m832, }, { 0, 0, m842, }, { 0, 0, m852, }, { 0, 0, m862, }, { 0, 0, m872, },
- { 0, 0, m882, }, { 0, 0, m892, }, { 0, 0, m8a2, }, { 0, 0, m8b2, }, { 0, 0, m8c2, }, { 0, 0, m8d2, }, { 0, 0, m8e2, }, { 0, 0, m8f2, },
- { 0, 0, m902, }, { 0, 0, m912, }, { 0, 0, m922, }, { 0, 0, m932, }, { 0, 0, m942, }, { 0, 0, m952, }, { 0, 0, m962, }, { 0, 0, m972, },
- { 0, 0, m982, }, { 0, 0, m992, }, { 0, 0, m9a2, }, { 0, 0, m9b2, }, { 0, 0, m9c2, }, { 0, 0, m9d2, }, { 0, 0, m9e2, }, { 0, 0, m9f2, },
- { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, },
- { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, },
- { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, },
- { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, },
- { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, },
- { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, },
- { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, },
- { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, },
- { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, },
- { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, },
- { 0, 0, mf02, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, },
- { 0, 0, 0, }, { 0, 0, mf92, }, { 0, 0, mfa2, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, 0, }, { 0, 0, mff2, },
-};
-
-struct {
- const char *name;
- unsigned int bit;
-} camel_charinfo[] = {
- { "iso-8859-2", 0x0001 },
- { "iso-8859-3", 0x0002 },
- { "iso-8859-4", 0x0004 },
- { "iso-8859-5", 0x0008 },
- { "iso-8859-6", 0x0010 },
- { "iso-8859-7", 0x0020 },
- { "iso-8859-8", 0x0040 },
- { "iso-8859-9", 0x0080 },
- { "iso-8859-10", 0x0100 },
- { "iso-8859-13", 0x0200 },
- { "iso-8859-14", 0x0400 },
- { "iso-8859-15", 0x0800 },
- { "windows-1250", 0x1000 },
- { "windows-1252", 0x2000 },
- { "windows-1257", 0x4000 },
- { "koi8-r", 0x8000 },
- { "koi8-u", 0x10000 },
- { "tis620.2533-1", 0x20000 },
- { "armscii-8", 0x40000 },
- { "georgian-academy", 0x80000 },
- { "georgian-ps", 0x100000 },
- { "CP932", 0x200000 },
- { "Shift-JIS", 0x400000 },
-};
-
-#define charset_mask(x) \
- (camel_charmap[(x)>>8].bits0?camel_charmap[(x)>>8].bits0[(x)&0xff]<<0:0) \
- | (camel_charmap[(x)>>8].bits1?camel_charmap[(x)>>8].bits1[(x)&0xff]<<8:0) \
- | (camel_charmap[(x)>>8].bits2?camel_charmap[(x)>>8].bits2[(x)&0xff]<<16:0)
-
diff --git a/camel/camel-charset-map.c b/camel/camel-charset-map.c
deleted file mode 100644
index f33c8082dd..0000000000
--- a/camel/camel-charset-map.c
+++ /dev/null
@@ -1,325 +0,0 @@
-
-#include <stdio.h>
-
-/*
- if you want to build the charset map, add the root directory of
- libunicode to the include path and define BUILD_MAP,
- then run it as
- ./a.out > camel-charset-map-private.h
-
- The tables genereated work like this:
-
- An indirect array for each page of unicode character
- Each array element has an indirect pointer to one of the bytes of
- the generated bitmask.
-*/
-
-#ifdef BUILD_MAP
-#include "iso/iso8859-2.h"
-#include "iso/iso8859-3.h"
-#include "iso/iso8859-4.h"
-#include "iso/iso8859-5.h"
-#include "iso/iso8859-6.h"
-#include "iso/iso8859-7.h"
-#include "iso/iso8859-8.h"
-#include "iso/iso8859-9.h"
-#include "iso/iso8859-10.h"
-#include "iso/iso8859-13.h"
-#include "iso/iso8859-14.h"
-#include "iso/iso8859-15.h"
-#include "iso/windows-1250.h"
-#include "iso/windows-1252.h"
-#include "iso/windows-1257.h"
-#include "iso/koi8-r.h"
-#include "iso/koi8-u.h"
-#include "iso/tis620.2533-1.h"
-#include "iso/armscii-8.h"
-#include "iso/georgian-academy.h"
-#include "iso/georgian-ps.h"
-#include "msft/cp932.h"
-#include "jis/shiftjis.h"
-
-static struct {
- unsigned short *table;
- char *name;
- int type; /* type of table */
- unsigned int bit; /* assigned bit */
-} tables[] = {
- { iso8859_2_table, "iso-8859-2", 0, 0} ,
- { iso8859_3_table, "iso-8859-3", 0, 0} ,
- { iso8859_4_table, "iso-8859-4", 0, 0},
- { iso8859_5_table, "iso-8859-5", 0, 0},
-/* apparently -6 has special digits? */
- { iso8859_6_table, "iso-8859-6", 0, 0},
- { iso8859_7_table, "iso-8859-7", 0, 0},
- { iso8859_8_table, "iso-8859-8", 0, 0},
- { iso8859_9_table, "iso-8859-9", 0, 0},
- { iso8859_10_table, "iso-8859-10", 0, 0},
- { iso8859_13_table, "iso-8859-13", 0, 0},
- { iso8859_14_table, "iso-8859-14", 0, 0},
- { iso8859_15_table, "iso-8859-15", 0, 0},
- { windows_1250_table, "windows-1250", 0, 0},
- { windows_1252_table, "windows-1252", 0, 0},
- { windows_1257_table, "windows-1257", 0, 0},
- { koi8_r_table, "koi8-r", 0, 0},
- { koi8_u_table, "koi8-u", 0, 0},
- { tis_620_table, "tis620.2533-1", 0, 0},
- { armscii_8_table, "armscii-8", 0, 0},
- { georgian_academy_table, "georgian-academy", 0, 0},
- { georgian_ps_table, "georgian-ps", 0, 0},
- { cp932_table, "CP932", 1, 0},
- { sjis_table, "Shift-JIS", 1, 0},
- { 0, 0}
-};
-
-unsigned int encoding_map[256 * 256];
-
-static void
-add_bigmap(unsigned short **table, int bit)
-{
- int i;
- int j;
-
- for (i=0;i<256;i++) {
- unsigned short *tab = table[i];
- if (tab) {
- for (j=0;j<256;j++) {
- if (tab[j])
- encoding_map[tab[j]] |= bit;
- }
- }
- }
-}
-
-void main(void)
-{
- int i, j;
- unsigned short *tab;
- int max, min;
- int bit = 0x01;
- int k;
- int bytes;
-
-#if 0
- /* iso-latin-1 (not needed-detected in code) */
- for (i=0;i<256;i++) {
- encoding_map[i] |= bit;
- }
- bit <<= 1;
-#endif
-
- /* dont count the terminator */
- bytes = ((sizeof(tables)/sizeof(tables[0]))+7-1)/8;
-
- /* the other latin charsets */
- for (j=0;tables[j].table;j++) {
- switch (tables[j].type) {
- case 0: /* table from 128-256 */
- tab = tables[j].table;
- for (i=0;i<128;i++) {
- /* 0-127 is the common */
- encoding_map[i] |= bit;
- encoding_map[tab[i]] |= bit;
- }
- break;
- case 1: /* sparse table */
- add_bigmap(tables[j].table, bit);
- break;
- }
- tables[j].bit = bit;
- bit <<= 1;
- }
-
- printf("/* This file is automatically generated: DO NOT EDIT */\n\n");
-
- for (i=0;i<256;i++) {
- /* first, do we need this block? */
- for (k=0;k<bytes;k++) {
- for (j=0;j<256;j++) {
- if ((encoding_map[i*256 + j] & (0xff << (k*8))) != 0)
- break;
- }
- if (j < 256) {
- /* yes, dump it */
- printf("static unsigned char m%02x%x[256] = {\n\t", i, k);
- for (j=0;j<256;j++) {
- printf("0x%02x, ", (encoding_map[i*256+j] >> (k*8)) & 0xff );
- if (((j+1)&7) == 0 && j<255)
- printf("\n\t");
- }
- printf("\n};\n\n");
- }
- }
- }
-
- printf("struct {\n");
- for (k=0;k<bytes;k++) {
- printf("\tunsigned char *bits%d;\n", k);
- }
- printf("} camel_charmap[256] = {\n\t");
- for (i=0;i<256;i++) {
- /* first, do we need this block? */
- printf("{ ");
- for (k=0;k<bytes;k++) {
- for (j=0;j<256;j++) {
- if ((encoding_map[i*256 + j] & (0xff << (k*8))) != 0)
- break;
- }
- if (j < 256) {
- printf("m%02x%x, ", i, k);
- } else {
- printf("0, ");
- }
- }
- printf("}, ");
- if (((i+1)&7) == 0 && i<255)
- printf("\n\t");
- }
- printf("\n};\n\n");
-
- printf("struct {\n\tconst char *name;\n\tunsigned int bit;\n} camel_charinfo[] = {\n");
- for (j=0;tables[j].table;j++) {
- printf("\t{ \"%s\", 0x%04x },\n", tables[j].name, tables[j].bit);
- }
- printf("};\n\n");
-
- printf("#define charset_mask(x) \\\n");
- for (k=0;k<bytes;k++) {
- if (k!=0)
- printf("\t| ");
- else
- printf("\t");
- printf("(camel_charmap[(x)>>8].bits%d?camel_charmap[(x)>>8].bits%d[(x)&0xff]<<%d:0)", k, k, k*8);
- if (k<bytes-1)
- printf("\t\\\n");
- }
- printf("\n\n");
-
-}
-
-#else
-
-#include "camel-charset-map.h"
-#include "camel-charset-map-private.h"
-#include <gal/unicode/gunicode.h>
-#include <locale.h>
-#include <string.h>
-#include <glib.h>
-
-void camel_charset_init(CamelCharset *c)
-{
- c->mask = ~0;
- c->level = 0;
-}
-
-void
-camel_charset_step(CamelCharset *c, const char *in, int len)
-{
- register unsigned int mask;
- register int level;
- const char *inptr = in, *inend = in+len;
-
- mask = c->mask;
- level = c->level;
-
- /* check what charset a given string will fit in */
- while (inptr < inend) {
- gunichar c;
- const char *newinptr;
- newinptr = g_utf8_next_char(inptr);
- c = g_utf8_get_char(inptr);
- if (newinptr == NULL || !g_unichar_validate (c)) {
- inptr++;
- continue;
- }
-
- inptr = newinptr;
- if (c<=0xffff) {
- mask &= charset_mask(c);
-
- if (c>=128 && c<256)
- level = MAX(level, 1);
- else if (c>=256)
- level = MAX(level, 2);
- } else {
- mask = 0;
- level = MAX(level, 2);
- }
- }
-
- c->mask = mask;
- c->level = level;
-}
-
-/* gets the best charset from the mask of chars in it */
-static const char *
-camel_charset_best_mask(unsigned int mask)
-{
- int i;
-
- for (i=0;i<sizeof(camel_charinfo)/sizeof(camel_charinfo[0]);i++) {
- if (camel_charinfo[i].bit & mask)
- return camel_charinfo[i].name;
- }
- return "UTF-8";
-}
-
-const char *camel_charset_best_name(CamelCharset *charset)
-{
- if (charset->level == 1)
- return "ISO-8859-1";
- else if (charset->level == 2)
- return camel_charset_best_mask(charset->mask);
- else
- return NULL;
-
-}
-
-/* finds the minimum charset for this string NULL means US-ASCII */
-const char *
-camel_charset_best(const char *in, int len)
-{
- CamelCharset charset;
-
- camel_charset_init(&charset);
- camel_charset_step(&charset, in, len);
- return camel_charset_best_name(&charset);
-}
-
-char *
-camel_charset_locale_name (void)
-{
- char *locale, *charset = NULL;
-
- locale = setlocale (LC_ALL, NULL);
-
- if (!locale || !strcmp (locale, "C") || !strcmp (locale, "POSIX")) {
- /* The locale "C" or "POSIX" is a portable locale; its
- * LC_CTYPE part corresponds to the 7-bit ASCII character
- * set.
- */
-
- return NULL;
- } else {
- /* A locale name is typically of the form language[_terri-
- * tory][.codeset][@modifier], where language is an ISO 639
- * language code, territory is an ISO 3166 country code, and
- * codeset is a character set or encoding identifier like
- * ISO-8859-1 or UTF-8.
- */
- char *p;
- int len;
-
- p = strchr (locale, '@');
- len = p ? (p - locale) : strlen (locale);
- if ((p = strchr (locale, '.'))) {
- charset = g_strndup (p + 1, len - (p - locale) + 1);
- g_strdown (charset);
- }
- }
-
- return charset;
-}
-
-#endif /* !BUILD_MAP */
-
diff --git a/camel/camel-charset-map.h b/camel/camel-charset-map.h
deleted file mode 100644
index db76281c6f..0000000000
--- a/camel/camel-charset-map.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef _CAMEL_CHARSET_MAP_H
-#define _CAMEL_CHARSET_MAP_H
-
-typedef struct _CamelCharset CamelCharset;
-
-struct _CamelCharset {
- unsigned int mask;
- int level;
-};
-
-void camel_charset_init(CamelCharset *);
-void camel_charset_step(CamelCharset *, const char *in, int len);
-const char *camel_charset_best_name(CamelCharset *);
-
-/* helper function */
-const char *camel_charset_best(const char *in, int len);
-
-char *camel_charset_locale_name (void);
-
-#endif /* ! _CAMEL_CHARSET_MAP_H */
diff --git a/camel/camel-cipher-context.c b/camel/camel-cipher-context.c
deleted file mode 100644
index 68ead9d01b..0000000000
--- a/camel/camel-cipher-context.c
+++ /dev/null
@@ -1,450 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "camel-cipher-context.h"
-
-#include <glib.h>
-
-#include <iconv.h>
-
-#ifdef ENABLE_THREADS
-#include <pthread.h>
-#define CIPHER_LOCK(ctx) g_mutex_lock (((CamelCipherContext *) ctx)->priv->lock)
-#define CIPHER_UNLOCK(ctx) g_mutex_unlock (((CamelCipherContext *) ctx)->priv->lock);
-#else
-#define CIPHER_LOCK(ctx)
-#define CIPHER_UNLOCK(ctx)
-#endif
-
-#define d(x)
-
-#define CCC_CLASS(o) CAMEL_CIPHER_CONTEXT_CLASS(CAMEL_OBJECT_GET_CLASS(o))
-
-struct _CamelCipherContextPrivate {
-#ifdef ENABLE_THREADS
- GMutex *lock;
-#endif
-};
-
-static int cipher_sign (CamelCipherContext *ctx, const char *userid, CamelCipherHash hash,
- CamelStream *istream, CamelStream *ostream, CamelException *ex);
-static int cipher_clearsign (CamelCipherContext *context, const char *userid,
- CamelCipherHash hash, CamelStream *istream,
- CamelStream *ostream, CamelException *ex);
-static CamelCipherValidity *cipher_verify (CamelCipherContext *context, CamelCipherHash hash,
- CamelStream *istream, CamelStream *sigstream,
- CamelException *ex);
-static int cipher_encrypt (CamelCipherContext *context, gboolean sign, const char *userid,
- GPtrArray *recipients, CamelStream *istream,
- CamelStream *ostream, CamelException *ex);
-static int cipher_decrypt (CamelCipherContext *context, CamelStream *istream,
- CamelStream *ostream, CamelException *ex);
-
-static CamelObjectClass *parent_class;
-
-static void
-camel_cipher_context_init (CamelCipherContext *context)
-{
- context->priv = g_new0 (struct _CamelCipherContextPrivate, 1);
-#ifdef ENABLE_THREADS
- context->priv->lock = g_mutex_new ();
-#endif
-}
-
-static void
-camel_cipher_context_finalise (CamelObject *o)
-{
- CamelCipherContext *context = (CamelCipherContext *)o;
-
- camel_object_unref (CAMEL_OBJECT (context->session));
-
-#ifdef ENABLE_THREADS
- g_mutex_free (context->priv->lock);
-#endif
-
- g_free (context->priv);
-}
-
-static void
-camel_cipher_context_class_init (CamelCipherContextClass *camel_cipher_context_class)
-{
- parent_class = camel_type_get_global_classfuncs (camel_object_get_type ());
-
- camel_cipher_context_class->sign = cipher_sign;
- camel_cipher_context_class->clearsign = cipher_clearsign;
- camel_cipher_context_class->verify = cipher_verify;
- camel_cipher_context_class->encrypt = cipher_encrypt;
- camel_cipher_context_class->decrypt = cipher_decrypt;
-}
-
-CamelType
-camel_cipher_context_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_object_get_type (),
- "CamelCipherContext",
- sizeof (CamelCipherContext),
- sizeof (CamelCipherContextClass),
- (CamelObjectClassInitFunc) camel_cipher_context_class_init,
- NULL,
- (CamelObjectInitFunc) camel_cipher_context_init,
- (CamelObjectFinalizeFunc) camel_cipher_context_finalise);
- }
-
- return type;
-}
-
-
-/**
- * camel_cipher_context_new:
- * @session: CamelSession
- *
- * This creates a new CamelCipherContext object which is used to sign,
- * verify, encrypt and decrypt streams.
- *
- * Return value: the new CamelCipherContext
- **/
-CamelCipherContext *
-camel_cipher_context_new (CamelSession *session)
-{
- CamelCipherContext *context;
-
- g_return_val_if_fail (session != NULL, NULL);
-
- context = CAMEL_CIPHER_CONTEXT (camel_object_new (CAMEL_CIPHER_CONTEXT_TYPE));
-
- camel_object_ref (CAMEL_OBJECT (session));
- context->session = session;
-
- return context;
-}
-
-
-/**
- * camel_cipher_context_construct:
- * @context: CamelCipherContext
- * @session: CamelSession
- *
- * Constucts the CamelCipherContext
- **/
-void
-camel_cipher_context_construct (CamelCipherContext *context, CamelSession *session)
-{
- g_return_if_fail (CAMEL_IS_CIPHER_CONTEXT (context));
- g_return_if_fail (CAMEL_IS_SESSION (session));
-
- camel_object_ref (CAMEL_OBJECT (session));
- context->session = session;
-}
-
-
-static int
-cipher_sign (CamelCipherContext *ctx, const char *userid, CamelCipherHash hash,
- CamelStream *istream, CamelStream *ostream, CamelException *ex)
-{
- camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Signing is not supported by this cipher"));
- return -1;
-}
-
-/**
- * camel_cipher_sign:
- * @context: Cipher Context
- * @userid: private key to use to sign the stream
- * @hash: preferred Message-Integrity-Check hash algorithm
- * @istream: input stream
- * @ostream: output stream
- * @ex: exception
- *
- * Signs the input stream and writes the resulting signature to the output stream.
- *
- * Return value: 0 for success or -1 for failure.
- **/
-int
-camel_cipher_sign (CamelCipherContext *context, const char *userid, CamelCipherHash hash,
- CamelStream *istream, CamelStream *ostream, CamelException *ex)
-{
- int retval;
-
- g_return_val_if_fail (CAMEL_IS_CIPHER_CONTEXT (context), -1);
-
- CIPHER_LOCK(context);
-
- retval = CCC_CLASS (context)->sign (context, userid, hash, istream, ostream, ex);
-
- CIPHER_UNLOCK(context);
-
- return retval;
-}
-
-
-static int
-cipher_clearsign (CamelCipherContext *context, const char *userid, CamelCipherHash hash,
- CamelStream *istream, CamelStream *ostream, CamelException *ex)
-{
- camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Clearsigning is not supported by this cipher"));
- return -1;
-}
-
-/**
- * camel_cipher_clearsign:
- * @context: Cipher Context
- * @userid: key id or email address of the private key to sign with
- * @hash: preferred Message-Integrity-Check hash algorithm
- * @istream: input stream
- * @ostream: output stream
- * @ex: exception
- *
- * Clearsigns the input stream and writes the resulting clearsign to the output stream.
- *
- * Return value: 0 for success or -1 for failure.
- **/
-int
-camel_cipher_clearsign (CamelCipherContext *context, const char *userid, CamelCipherHash hash,
- CamelStream *istream, CamelStream *ostream, CamelException *ex)
-{
- int retval;
-
- g_return_val_if_fail (CAMEL_IS_CIPHER_CONTEXT (context), -1);
-
- CIPHER_LOCK(context);
-
- retval = CCC_CLASS (context)->clearsign (context, userid, hash, istream, ostream, ex);
-
- CIPHER_UNLOCK(context);
-
- return retval;
-}
-
-
-static CamelCipherValidity *
-cipher_verify (CamelCipherContext *context, CamelCipherHash hash, CamelStream *istream,
- CamelStream *sigstream, CamelException *ex)
-{
- camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Verifying is not supported by this cipher"));
- return NULL;
-}
-
-/**
- * camel_cipher_verify:
- * @context: Cipher Context
- * @istream: input stream
- * @sigstream: optional detached-signature stream
- * @ex: exception
- *
- * Verifies the signature. If @istream is a clearsigned stream,
- * you should pass %NULL as the sigstream parameter. Otherwise
- * @sigstream is assumed to be the signature stream and is used to
- * verify the integirity of the @istream.
- *
- * Return value: a CamelCipherValidity structure containing information
- * about the integrity of the input stream or %NULL on failure to
- * execute at all.
- **/
-CamelCipherValidity *
-camel_cipher_verify (CamelCipherContext *context, CamelCipherHash hash, CamelStream *istream,
- CamelStream *sigstream, CamelException *ex)
-{
- CamelCipherValidity *valid;
-
- g_return_val_if_fail (CAMEL_IS_CIPHER_CONTEXT (context), NULL);
-
- CIPHER_LOCK(context);
-
- valid = CCC_CLASS (context)->verify (context, hash, istream, sigstream, ex);
-
- CIPHER_UNLOCK(context);
-
- return valid;
-}
-
-
-static int
-cipher_encrypt (CamelCipherContext *context, gboolean sign, const char *userid, GPtrArray *recipients,
- CamelStream *istream, CamelStream *ostream, CamelException *ex)
-{
- camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Encryption is not supported by this cipher"));
- return -1;
-}
-
-/**
- * camel_cipher_encrypt:
- * @context: Cipher Context
- * @sign: sign as well as encrypt
- * @userid: key id (or email address) to use when signing (assuming @sign is %TRUE)
- * @recipients: an array of recipient key ids and/or email addresses
- * @istream: cleartext input stream
- * @ostream: ciphertext output stream
- * @ex: exception
- *
- * Encrypts (and optionally signs) the cleartext input stream and
- * writes the resulting ciphertext to the output stream.
- *
- * Return value: 0 for success or -1 for failure.
- **/
-int
-camel_cipher_encrypt (CamelCipherContext *context, gboolean sign, const char *userid, GPtrArray *recipients,
- CamelStream *istream, CamelStream *ostream, CamelException *ex)
-{
- int retval;
-
- g_return_val_if_fail (CAMEL_IS_CIPHER_CONTEXT (context), -1);
-
- CIPHER_LOCK(context);
-
- retval = CCC_CLASS (context)->encrypt (context, sign, userid, recipients, istream, ostream, ex);
-
- CIPHER_UNLOCK(context);
-
- return retval;
-}
-
-
-static int
-cipher_decrypt (CamelCipherContext *context, CamelStream *istream,
- CamelStream *ostream, CamelException *ex)
-{
- camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Decryption is not supported by this cipher"));
- return -1;
-}
-
-/**
- * camel_cipher_decrypt:
- * @context: Cipher Context
- * @ciphertext: ciphertext stream (ie input stream)
- * @cleartext: cleartext stream (ie output stream)
- * @ex: exception
- *
- * Decrypts the ciphertext input stream and writes the resulting
- * cleartext to the output stream.
- *
- * Return value: 0 for success or -1 for failure.
- **/
-int
-camel_cipher_decrypt (CamelCipherContext *context, CamelStream *istream,
- CamelStream *ostream, CamelException *ex)
-{
- int retval;
-
- g_return_val_if_fail (CAMEL_IS_CIPHER_CONTEXT (context), -1);
-
- CIPHER_LOCK(context);
-
- retval = CCC_CLASS (context)->decrypt (context, istream, ostream, ex);
-
- CIPHER_UNLOCK(context);
-
- return retval;
-}
-
-
-/* Cipher Validity stuff */
-struct _CamelCipherValidity {
- gboolean valid;
- gchar *description;
-};
-
-CamelCipherValidity *
-camel_cipher_validity_new (void)
-{
- CamelCipherValidity *validity;
-
- validity = g_new (CamelCipherValidity, 1);
- validity->valid = FALSE;
- validity->description = NULL;
-
- return validity;
-}
-
-void
-camel_cipher_validity_init (CamelCipherValidity *validity)
-{
- g_assert (validity != NULL);
-
- validity->valid = FALSE;
- validity->description = NULL;
-}
-
-gboolean
-camel_cipher_validity_get_valid (CamelCipherValidity *validity)
-{
- if (validity == NULL)
- return FALSE;
-
- return validity->valid;
-}
-
-void
-camel_cipher_validity_set_valid (CamelCipherValidity *validity, gboolean valid)
-{
- g_assert (validity != NULL);
-
- validity->valid = valid;
-}
-
-gchar *
-camel_cipher_validity_get_description (CamelCipherValidity *validity)
-{
- if (validity == NULL)
- return NULL;
-
- return validity->description;
-}
-
-void
-camel_cipher_validity_set_description (CamelCipherValidity *validity, const gchar *description)
-{
- g_assert (validity != NULL);
-
- g_free (validity->description);
- validity->description = g_strdup (description);
-}
-
-void
-camel_cipher_validity_clear (CamelCipherValidity *validity)
-{
- g_assert (validity != NULL);
-
- validity->valid = FALSE;
- g_free (validity->description);
- validity->description = NULL;
-}
-
-void
-camel_cipher_validity_free (CamelCipherValidity *validity)
-{
- if (validity == NULL)
- return;
-
- g_free (validity->description);
- g_free (validity);
-}
diff --git a/camel/camel-cipher-context.h b/camel/camel-cipher-context.h
deleted file mode 100644
index 06846e5840..0000000000
--- a/camel/camel-cipher-context.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef CAMEL_CIPHER_CONTEXT_H
-#define CAMEL_CIPHER_CONTEXT_H
-
-#include <camel/camel-session.h>
-#include <camel/camel-stream.h>
-#include <camel/camel-exception.h>
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-#define CAMEL_CIPHER_CONTEXT_TYPE (camel_cipher_context_get_type ())
-#define CAMEL_CIPHER_CONTEXT(obj) (CAMEL_CHECK_CAST((obj), CAMEL_CIPHER_CONTEXT_TYPE, CamelCipherContext))
-#define CAMEL_CIPHER_CONTEXT_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_CIPHER_CONTEXT_TYPE, CamelCipherContextClass))
-#define CAMEL_IS_CIPHER_CONTEXT(o) (CAMEL_CHECK_TYPE((o), CAMEL_CIPHER_CONTEXT_TYPE))
-
-typedef struct _CamelCipherValidity CamelCipherValidity;
-
-typedef enum {
- CAMEL_CIPHER_HASH_DEFAULT,
- CAMEL_CIPHER_HASH_MD2,
- CAMEL_CIPHER_HASH_MD5,
- CAMEL_CIPHER_HASH_SHA1
-} CamelCipherHash;
-
-typedef struct _CamelCipherContext {
- CamelObject parent_object;
-
- struct _CamelCipherContextPrivate *priv;
-
- CamelSession *session;
-
-} CamelCipherContext;
-
-typedef struct _CamelCipherContextClass {
- CamelObjectClass parent_class;
-
- int (*sign) (CamelCipherContext *ctx, const char *userid, CamelCipherHash hash,
- CamelStream *istream, CamelStream *ostream, CamelException *ex);
-
- int (*clearsign) (CamelCipherContext *context, const char *userid, CamelCipherHash hash,
- CamelStream *istream, CamelStream *ostream, CamelException *ex);
-
- CamelCipherValidity * (*verify) (CamelCipherContext *context, CamelCipherHash hash,
- CamelStream *istream, CamelStream *sigstream,
- CamelException *ex);
-
- int (*encrypt) (CamelCipherContext *context, gboolean sign, const char *userid,
- GPtrArray *recipients, CamelStream *istream, CamelStream *ostream,
- CamelException *ex);
-
- int (*decrypt) (CamelCipherContext *context, CamelStream *istream, CamelStream *ostream,
- CamelException *ex);
-
-} CamelCipherContextClass;
-
-CamelType camel_cipher_context_get_type (void);
-
-CamelCipherContext *camel_cipher_context_new (CamelSession *session);
-
-void camel_cipher_context_construct (CamelCipherContext *context, CamelSession *session);
-
-/* cipher routines */
-int camel_cipher_sign (CamelCipherContext *context, const char *userid, CamelCipherHash hash,
- CamelStream *istream, CamelStream *ostream, CamelException *ex);
-
-int camel_cipher_clearsign (CamelCipherContext *context, const char *userid, CamelCipherHash hash,
- CamelStream *istream, CamelStream *ostream, CamelException *ex);
-
-CamelCipherValidity *camel_cipher_verify (CamelCipherContext *context, CamelCipherHash hash,
- CamelStream *istream, CamelStream *sigstream,
- CamelException *ex);
-
-int camel_cipher_encrypt (CamelCipherContext *context, gboolean sign, const char *userid,
- GPtrArray *recipients, CamelStream *istream, CamelStream *ostream,
- CamelException *ex);
-
-int camel_cipher_decrypt (CamelCipherContext *context, CamelStream *istream, CamelStream *ostream,
- CamelException *ex);
-
-/* CamelCipherValidity utility functions */
-CamelCipherValidity *camel_cipher_validity_new (void);
-
-void camel_cipher_validity_init (CamelCipherValidity *validity);
-
-gboolean camel_cipher_validity_get_valid (CamelCipherValidity *validity);
-
-void camel_cipher_validity_set_valid (CamelCipherValidity *validity, gboolean valid);
-
-char *camel_cipher_validity_get_description (CamelCipherValidity *validity);
-
-void camel_cipher_validity_set_description (CamelCipherValidity *validity, const char *description);
-
-void camel_cipher_validity_clear (CamelCipherValidity *validity);
-
-void camel_cipher_validity_free (CamelCipherValidity *validity);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_CIPHER_CONTEXT_H */
diff --git a/camel/camel-data-wrapper.c b/camel/camel-data-wrapper.c
deleted file mode 100644
index e2d7f10281..0000000000
--- a/camel/camel-data-wrapper.c
+++ /dev/null
@@ -1,294 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; -*- */
-/* camel-data-wrapper.c : Abstract class for a data_wrapper */
-
-/*
- *
- * Authors: Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <errno.h>
-
-#include "camel-data-wrapper.h"
-#include "camel-mime-utils.h"
-#include "camel-stream.h"
-#include "camel-exception.h"
-
-#define d(x)
-
-static CamelObjectClass *parent_class = NULL;
-
-/* Returns the class for a CamelDataWrapper */
-#define CDW_CLASS(so) CAMEL_DATA_WRAPPER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-
-static int construct_from_stream(CamelDataWrapper *, CamelStream *);
-static int write_to_stream (CamelDataWrapper *data_wrapper, CamelStream *stream);
-static void set_mime_type (CamelDataWrapper *data_wrapper, const gchar *mime_type);
-static gchar *get_mime_type (CamelDataWrapper *data_wrapper);
-static CamelContentType *get_mime_type_field (CamelDataWrapper *data_wrapper);
-static void set_mime_type_field (CamelDataWrapper *data_wrapper, CamelContentType *mime_type);
-
-static void
-camel_data_wrapper_class_init (CamelDataWrapperClass *camel_data_wrapper_class)
-{
- parent_class = camel_type_get_global_classfuncs (camel_object_get_type ());
-
- /* virtual method definition */
- camel_data_wrapper_class->write_to_stream = write_to_stream;
- camel_data_wrapper_class->set_mime_type = set_mime_type;
- camel_data_wrapper_class->get_mime_type = get_mime_type;
- camel_data_wrapper_class->get_mime_type_field = get_mime_type_field;
- camel_data_wrapper_class->set_mime_type_field = set_mime_type_field;
-
- camel_data_wrapper_class->construct_from_stream = construct_from_stream;
-}
-
-static void
-camel_data_wrapper_init (gpointer object, gpointer klass)
-{
- CamelDataWrapper *camel_data_wrapper = CAMEL_DATA_WRAPPER (object);
-
- camel_data_wrapper->mime_type = header_content_type_new ("application", "octet-stream");
- camel_data_wrapper->offline = FALSE;
-}
-
-static void
-camel_data_wrapper_finalize (CamelObject *object)
-{
- CamelDataWrapper *camel_data_wrapper = CAMEL_DATA_WRAPPER (object);
-
- if (camel_data_wrapper->mime_type)
- header_content_type_unref (camel_data_wrapper->mime_type);
-
- if (camel_data_wrapper->stream)
- camel_object_unref (CAMEL_OBJECT (camel_data_wrapper->stream));
-}
-
-CamelType
-camel_data_wrapper_get_type (void)
-{
- static CamelType camel_data_wrapper_type = CAMEL_INVALID_TYPE;
-
- if (camel_data_wrapper_type == CAMEL_INVALID_TYPE) {
- camel_data_wrapper_type = camel_type_register (CAMEL_OBJECT_TYPE, "CamelDataWrapper",
- sizeof (CamelDataWrapper),
- sizeof (CamelDataWrapperClass),
- (CamelObjectClassInitFunc) camel_data_wrapper_class_init,
- NULL,
- (CamelObjectInitFunc) camel_data_wrapper_init,
- (CamelObjectFinalizeFunc) camel_data_wrapper_finalize);
- }
-
- return camel_data_wrapper_type;
-}
-
-static int
-write_to_stream (CamelDataWrapper *data_wrapper, CamelStream *stream)
-{
- if (data_wrapper->stream == NULL) {
- return -1;
- }
-
- if (camel_stream_reset (data_wrapper->stream) == -1)
- return -1;
-
- return camel_stream_write_to_stream (data_wrapper->stream, stream);
-}
-
-CamelDataWrapper *
-camel_data_wrapper_new(void)
-{
- return (CamelDataWrapper *)camel_object_new(camel_data_wrapper_get_type());
-}
-
-/**
- * camel_data_wrapper_write_to_stream:
- * @data_wrapper: a data wrapper
- * @stream: stream for data to be written to
- * @ex: a CamelException
- *
- * Writes the data content to @stream in a machine-independent format
- * appropriate for the data. It should be possible to construct an
- * equivalent data wrapper object later by passing this stream to
- * camel_data_construct_from_stream().
- *
- * Return value: the number of bytes written, or -1 if an error occurs.
- **/
-int
-camel_data_wrapper_write_to_stream (CamelDataWrapper *data_wrapper,
- CamelStream *stream)
-{
- g_return_val_if_fail (CAMEL_IS_DATA_WRAPPER (data_wrapper), -1);
- g_return_val_if_fail (CAMEL_IS_STREAM (stream), -1);
-
- return CDW_CLASS (data_wrapper)->write_to_stream (data_wrapper, stream);
-}
-
-static int
-construct_from_stream (CamelDataWrapper *data_wrapper, CamelStream *stream)
-{
- if (data_wrapper->stream)
- camel_object_unref((CamelObject *)data_wrapper->stream);
-
- data_wrapper->stream = stream;
- camel_object_ref (CAMEL_OBJECT (stream));
- return 0;
-}
-
-/**
- * camel_data_wrapper_construct_from_stream:
- * @data_wrapper: a data wrapper
- * @stream: A stream that can be read from.
- *
- * Constructs the content of the data wrapper from the
- * supplied @stream.
- *
- * Return value: -1 on error.
- **/
-int
-camel_data_wrapper_construct_from_stream (CamelDataWrapper *data_wrapper,
- CamelStream *stream)
-{
- g_return_val_if_fail (CAMEL_IS_DATA_WRAPPER (data_wrapper), -1);
- g_return_val_if_fail (CAMEL_IS_STREAM (stream), -1);
-
- return CDW_CLASS (data_wrapper)->construct_from_stream (data_wrapper, stream);
-}
-
-
-static void
-set_mime_type (CamelDataWrapper *data_wrapper, const gchar *mime_type)
-{
- if (data_wrapper->mime_type)
- header_content_type_unref (data_wrapper->mime_type);
- data_wrapper->mime_type = header_content_type_decode (mime_type);
-}
-
-/**
- * camel_data_wrapper_set_mime_type:
- * @data_wrapper: a data wrapper
- * @mime_type: the text representation of a MIME type
- *
- * This sets the data wrapper's MIME type.
- * It might fail, but you won't know. It will allow you to set
- * Content-Type parameters on the data wrapper, which are meaningless.
- * You should not be allowed to change the MIME type of a data wrapper
- * that contains data, or at least, if you do, it should invalidate the
- * data.
- **/
-void
-camel_data_wrapper_set_mime_type (CamelDataWrapper *data_wrapper,
- const gchar *mime_type)
-{
- g_return_if_fail (CAMEL_IS_DATA_WRAPPER (data_wrapper));
- g_return_if_fail (mime_type != NULL);
-
- CDW_CLASS (data_wrapper)->set_mime_type (data_wrapper, mime_type);
-}
-
-static gchar *
-get_mime_type (CamelDataWrapper *data_wrapper)
-{
- return header_content_type_simple (data_wrapper->mime_type);
-}
-
-/**
- * camel_data_wrapper_get_mime_type:
- * @data_wrapper: a data wrapper
- *
- * Return value: the text form of the data wrapper's MIME type,
- * which the caller must free.
- **/
-gchar *
-camel_data_wrapper_get_mime_type (CamelDataWrapper *data_wrapper)
-{
- g_return_val_if_fail (CAMEL_IS_DATA_WRAPPER (data_wrapper), NULL);
-
- return CDW_CLASS (data_wrapper)->get_mime_type (data_wrapper);
-}
-
-
-static CamelContentType *
-get_mime_type_field (CamelDataWrapper *data_wrapper)
-{
- return data_wrapper->mime_type;
-}
-
-/**
- * camel_data_wrapper_get_mime_type_field:
- * @data_wrapper: a data wrapper
- *
- * Return value: the parsed form of the data wrapper's MIME type
- **/
-CamelContentType *
-camel_data_wrapper_get_mime_type_field (CamelDataWrapper *data_wrapper)
-{
- g_return_val_if_fail (CAMEL_IS_DATA_WRAPPER (data_wrapper), NULL);
-
- return CDW_CLASS (data_wrapper)->get_mime_type_field (data_wrapper);
-}
-
-/**
- * camel_data_wrapper_set_mime_type_field:
- * @data_wrapper: a data wrapper
- * @mime_type: the parsed representation of a MIME type
- *
- * This sets the data wrapper's MIME type. It suffers from the same
- * flaws as camel_data_wrapper_set_mime_type.
- **/
-static void
-set_mime_type_field (CamelDataWrapper *data_wrapper,
- CamelContentType *mime_type)
-{
- g_return_if_fail (CAMEL_IS_DATA_WRAPPER (data_wrapper));
- g_return_if_fail (mime_type != NULL);
-
- if (data_wrapper->mime_type)
- header_content_type_unref (data_wrapper->mime_type);
- data_wrapper->mime_type = mime_type;
- if (mime_type)
- header_content_type_ref (data_wrapper->mime_type);
-}
-
-void
-camel_data_wrapper_set_mime_type_field (CamelDataWrapper *data_wrapper,
- CamelContentType *mime_type)
-{
- CDW_CLASS (data_wrapper)->set_mime_type_field (data_wrapper, mime_type);
-}
-
-
-/**
- * camel_data_wrapper_is_offline:
- * @data_wrapper: a data wrapper
- *
- * Return value: whether @data_wrapper is "offline" (data stored
- * remotely) or not. Some optional code paths may choose to not
- * operate on offline data.
- **/
-gboolean
-camel_data_wrapper_is_offline (CamelDataWrapper *data_wrapper)
-{
- return data_wrapper->offline;
-}
diff --git a/camel/camel-data-wrapper.h b/camel/camel-data-wrapper.h
deleted file mode 100644
index 1b3361f26d..0000000000
--- a/camel/camel-data-wrapper.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-data-wrapper.h : Abstract class for a data wrapper */
-
-/*
- *
- * Author :
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_DATA_WRAPPER_H
-#define CAMEL_DATA_WRAPPER_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <glib.h>
-#include <camel/camel-object.h>
-
-#define CAMEL_DATA_WRAPPER_TYPE (camel_data_wrapper_get_type ())
-#define CAMEL_DATA_WRAPPER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_DATA_WRAPPER_TYPE, CamelDataWrapper))
-#define CAMEL_DATA_WRAPPER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_DATA_WRAPPER_TYPE, CamelDataWrapperClass))
-#define CAMEL_IS_DATA_WRAPPER(o) (CAMEL_CHECK_TYPE((o), CAMEL_DATA_WRAPPER_TYPE))
-
-struct _CamelDataWrapper
-{
- CamelObject parent_object;
-
- CamelContentType *mime_type;
- CamelStream *stream;
- gboolean offline;
-};
-
-typedef struct {
- CamelObjectClass parent_class;
-
- /* Virtual methods */
- void (*set_mime_type) (CamelDataWrapper *data_wrapper,
- const gchar * mime_type);
- gchar * (*get_mime_type) (CamelDataWrapper *data_wrapper);
- CamelContentType * (*get_mime_type_field) (CamelDataWrapper *data_wrapper);
- void (*set_mime_type_field) (CamelDataWrapper *data_wrapper,
- CamelContentType *mime_type_field);
-
- int (*write_to_stream) (CamelDataWrapper *data_wrapper,
- CamelStream *stream);
-
- int (*construct_from_stream) (CamelDataWrapper *data_wrapper,
- CamelStream *);
-} CamelDataWrapperClass;
-
-/* Standard Camel function */
-CamelType camel_data_wrapper_get_type (void);
-
-/* public methods */
-CamelDataWrapper * camel_data_wrapper_new(void);
-int camel_data_wrapper_write_to_stream (CamelDataWrapper *data_wrapper,
- CamelStream *stream);
-void camel_data_wrapper_set_mime_type (CamelDataWrapper *data_wrapper,
- const gchar *mime_type);
-gchar * camel_data_wrapper_get_mime_type (CamelDataWrapper *data_wrapper);
-CamelContentType * camel_data_wrapper_get_mime_type_field (CamelDataWrapper *data_wrapper);
-void camel_data_wrapper_set_mime_type_field (CamelDataWrapper *data_wrapper,
- CamelContentType *mime_type);
-
-int camel_data_wrapper_construct_from_stream (CamelDataWrapper *data_wrapper, CamelStream *stream);
-
-gboolean camel_data_wrapper_is_offline (CamelDataWrapper *data_wrapper);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_DATA_WRAPPER_H */
diff --git a/camel/camel-digest-folder.c b/camel/camel-digest-folder.c
deleted file mode 100644
index 42d238ade4..0000000000
--- a/camel/camel-digest-folder.c
+++ /dev/null
@@ -1,305 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "camel-digest-folder.h"
-
-#include "camel-exception.h"
-#include "camel-multipart.h"
-#include "camel-mime-message.h"
-#include "camel-folder-summary.h"
-
-#define d(x)
-
-#define _PRIVATE(o) (((CamelDigestFolder *)(o))->priv)
-
-struct _CamelDigestFolderPrivate {
- CamelMimeMessage *message;
- GHashTable *info_hash;
- GPtrArray *summary;
- GPtrArray *uids;
-};
-
-static CamelFolderClass *parent_class = NULL;
-
-static void digest_refresh_info (CamelFolder *folder, CamelException *ex);
-static void digest_sync (CamelFolder *folder, gboolean expunge, CamelException *ex);
-static const char *digest_get_full_name (CamelFolder *folder);
-static void digest_expunge (CamelFolder *folder, CamelException *ex);
-
-static GPtrArray *digest_get_uids (CamelFolder *folder);
-static void digest_free_uids (CamelFolder *folder, GPtrArray *uids);
-static CamelMessageInfo *digest_get_message_info (CamelFolder *folder, const char *uid);
-
-/* message manipulation */
-static CamelMimeMessage *digest_get_message (CamelFolder *folder, const gchar *uid,
- CamelException *ex);
-static void digest_append_message (CamelFolder *folder, CamelMimeMessage *message,
- const CamelMessageInfo *info, CamelException *ex);
-static void digest_copy_messages_to (CamelFolder *source, GPtrArray *uids,
- CamelFolder *destination, CamelException *ex);
-static void digest_move_messages_to (CamelFolder *source, GPtrArray *uids,
- CamelFolder *destination, CamelException *ex);
-
-
-static void
-camel_digest_folder_class_init (CamelDigestFolderClass *camel_digest_folder_class)
-{
- CamelFolderClass *camel_folder_class = CAMEL_FOLDER_CLASS (camel_digest_folder_class);
-
- parent_class = CAMEL_FOLDER_CLASS (camel_type_get_global_classfuncs (camel_folder_get_type ()));
-
- /* virtual method definition */
-
- /* virtual method overload */
- camel_folder_class->refresh_info = digest_refresh_info;
- camel_folder_class->sync = digest_sync;
- camel_folder_class->expunge = digest_expunge;
- camel_folder_class->get_full_name = digest_get_full_name;
-
- camel_folder_class->get_uids = digest_get_uids;
- camel_folder_class->free_uids = digest_free_uids;
- camel_folder_class->get_message_info = digest_get_message_info;
-
- camel_folder_class->get_message = digest_get_message;
- camel_folder_class->append_message = digest_append_message;
- camel_folder_class->copy_messages_to = digest_copy_messages_to;
- camel_folder_class->move_messages_to = digest_move_messages_to;
-}
-
-static void
-camel_digest_folder_init (gpointer object, gpointer klass)
-{
- CamelDigestFolder *digest_folder = CAMEL_DIGEST_FOLDER (object);
- CamelFolder *folder = CAMEL_FOLDER (object);
-
- folder->has_summary_capability = TRUE;
- folder->has_search_capability = FALSE;
-
- digest_folder->priv = g_new0 (struct _CamelDigestFolderPrivate, 1);
- digest_folder->priv->info_hash = g_hash_table_new (g_str_hash, g_str_equal);
-}
-
-static void
-digest_finalize (CamelObject *object)
-{
- CamelDigestFolder *digest_folder = CAMEL_DIGEST_FOLDER (object);
- GPtrArray *summary;
-
- camel_object_unref (CAMEL_OBJECT (digest_folder->priv->message));
-
- g_hash_table_destroy (digest_folder->priv->info_hash);
-
- summary = digest_folder->priv->summary;
- if (summary) {
- int i;
-
- for (i = 0; i < summary->len; i++)
- camel_message_info_free (summary->pdata[i]);
-
- g_ptr_array_free (summary, TRUE);
- }
-
- if (digest_folder->priv->uids)
- g_ptr_array_free (digest_folder->priv->uids, TRUE);
-
- g_free (digest_folder->priv);
-}
-
-CamelType
-camel_digest_folder_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (CAMEL_FOLDER_TYPE,
- "CamelDigestFolder",
- sizeof (CamelDigestFolder),
- sizeof (CamelDigestFolderClass),
- (CamelObjectClassInitFunc) camel_digest_folder_class_init,
- NULL,
- (CamelObjectInitFunc) camel_digest_folder_init,
- (CamelObjectFinalizeFunc) digest_finalize);
- }
-
- return type;
-}
-
-CamelFolder *
-camel_digest_folder_new (CamelMimeMessage *message)
-{
- CamelDigestFolder *digest_folder;
- CamelDataWrapper *wrapper;
- CamelFolder *folder;
-
- wrapper = camel_medium_get_content_object (CAMEL_MEDIUM (message));
- if (!wrapper || !CAMEL_IS_MULTIPART (wrapper))
- return NULL;
-
- if (!header_content_type_is (CAMEL_MIME_PART (message)->content_type, "multipart", "digest")) {
- int i, parts;
-
- /* Make sure we have a multipart of message/rfc822 attachments... */
- parts = camel_multipart_get_number (CAMEL_MULTIPART (wrapper));
- for (i = 0; i < parts; i++) {
- CamelMimePart *part = camel_multipart_get_part (CAMEL_MULTIPART (wrapper), i);
-
- if (!header_content_type_is (part->content_type, "message", "rfc822"))
- return NULL;
- }
- }
-
- folder = CAMEL_FOLDER (camel_object_new (camel_digest_folder_get_type ()));
- digest_folder = CAMEL_DIGEST_FOLDER (folder);
-
- camel_folder_construct (folder, NULL, "folder_name", "short_name");
-
- camel_object_ref (CAMEL_OBJECT (message));
- digest_folder->priv->message = message;
-
- return folder;
-}
-
-static void
-digest_refresh_info (CamelFolder *folder, CamelException *ex)
-{
-
-}
-
-static void
-digest_sync (CamelFolder *folder, gboolean expunge, CamelException *ex)
-{
-
-}
-
-static void
-digest_expunge (CamelFolder *folder, CamelException *ex)
-{
-
-}
-
-static GPtrArray *
-digest_get_uids (CamelFolder *folder)
-{
- CamelDigestFolder *digest_folder = CAMEL_DIGEST_FOLDER (folder);
- CamelDataWrapper *wrapper;
- GHashTable *info_hash;
- GPtrArray *summary;
- GPtrArray *uids;
- int parts, i;
-
- if (digest_folder->priv->uids)
- return digest_folder->priv->uids;
-
- uids = g_ptr_array_new ();
- summary = g_ptr_array_new ();
- info_hash = digest_folder->priv->info_hash;
-
- wrapper = camel_medium_get_content_object (CAMEL_MEDIUM (digest_folder->priv->message));
- parts = camel_multipart_get_number (CAMEL_MULTIPART (wrapper));
- for (i = 0; i < parts; i++) {
- CamelMimeMessage *message;
- CamelMessageInfo *info;
- CamelMimePart *part;
- char *uid;
-
- uid = g_strdup_printf ("%d", i + 1);
-
- part = camel_multipart_get_part (CAMEL_MULTIPART (wrapper), i);
- message = CAMEL_MIME_MESSAGE (part);
-
- info = camel_message_info_new_from_header (CAMEL_MIME_PART (message)->headers);
- camel_message_info_set_uid (info, uid);
-
- g_ptr_array_add (uids, uid);
- g_ptr_array_add (summary, info);
- g_hash_table_insert (info_hash, uid, info);
- }
-
- digest_folder->priv->uids = uids;
- digest_folder->priv->summary = summary;
-
- return uids;
-}
-
-static void
-digest_free_uids (CamelFolder *folder, GPtrArray *uids)
-{
- /* no-op */
-}
-
-static CamelMessageInfo *
-digest_get_message_info (CamelFolder *folder, const char *uid)
-{
- CamelDigestFolder *digest = CAMEL_DIGEST_FOLDER (folder);
-
- return g_hash_table_lookup (digest->priv->info_hash, uid);
-}
-
-static const char *
-digest_get_full_name (CamelFolder *folder)
-{
- return folder->full_name;
-}
-
-static void
-digest_append_message (CamelFolder *folder, CamelMimeMessage *message,
- const CamelMessageInfo *info, CamelException *ex)
-{
- /* no-op */
-}
-
-static void
-digest_copy_messages_to (CamelFolder *source, GPtrArray *uids,
- CamelFolder *destination, CamelException *ex)
-{
- /* no-op */
-}
-
-static void
-digest_move_messages_to (CamelFolder *source, GPtrArray *uids,
- CamelFolder *destination, CamelException *ex)
-{
- /* no-op */
-}
-
-static CamelMimeMessage *
-digest_get_message (CamelFolder *folder, const char *uid, CamelException *ex)
-{
- CamelDigestFolder *digest = CAMEL_DIGEST_FOLDER (folder);
- CamelDataWrapper *wrapper;
- CamelMimeMessage *message;
- CamelMimePart *part;
- int id;
-
- id = atoi (uid) - 1;
-
- wrapper = camel_medium_get_content_object (CAMEL_MEDIUM (digest->priv->message));
- part = camel_multipart_get_part (CAMEL_MULTIPART (wrapper), id);
- message = CAMEL_MIME_MESSAGE (part);
- camel_object_ref (CAMEL_OBJECT (message));
-
- return message;
-}
diff --git a/camel/camel-digest-folder.h b/camel/camel-digest-folder.h
deleted file mode 100644
index 792182a653..0000000000
--- a/camel/camel-digest-folder.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef _CAMEL_DIGEST_FOLDER_H
-#define _CAMEL_DIGEST_FOLDER_H
-
-#include <glib.h>
-#include <camel/camel-folder.h>
-#include <camel/camel-mime-message.h>
-
-#define CAMEL_DIGEST_FOLDER(obj) CAMEL_CHECK_CAST (obj, camel_digest_folder_get_type (), CamelDigestFolder)
-#define CAMEL_DIGEST_FOLDER_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_digest_folder_get_type (), CamelDigestFolderClass)
-#define CAMEL_IS_DIGEST_FOLDER(obj) CAMEL_CHECK_TYPE (obj, camel_digest_folder_get_type ())
-
-typedef struct _CamelDigestFolder CamelDigestFolder;
-typedef struct _CamelDigestFolderClass CamelDigestFolderClass;
-
-struct _CamelDigestFolder {
- CamelFolder parent;
-
- struct _CamelDigestFolderPrivate *priv;
-};
-
-struct _CamelDigestFolderClass {
- CamelFolderClass parent_class;
-
-};
-
-CamelType camel_digest_folder_get_type (void);
-
-CamelFolder *camel_digest_folder_new (CamelMimeMessage *message);
-
-#endif /* ! _CAMEL_DIGEST_FOLDER_H */
diff --git a/camel/camel-disco-folder.c b/camel/camel-disco-folder.c
deleted file mode 100644
index b090bd6517..0000000000
--- a/camel/camel-disco-folder.c
+++ /dev/null
@@ -1,335 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-disco-folder.c: abstract class for a disconnectable folder */
-
-/*
- * Authors: Dan Winship <danw@ximian.com>
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "camel-disco-folder.h"
-#include "camel-disco-store.h"
-#include "camel-exception.h"
-
-#define CF_CLASS(o) (CAMEL_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS (o)))
-#define CDF_CLASS(o) (CAMEL_DISCO_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS (o)))
-
-static CamelFolderClass *parent_class = NULL;
-
-static void disco_refresh_info (CamelFolder *folder, CamelException *ex);
-static void disco_sync (CamelFolder *folder, gboolean expunge, CamelException *ex);
-static void disco_expunge (CamelFolder *folder, CamelException *ex);
-
-static void disco_append_message (CamelFolder *folder, CamelMimeMessage *message,
- const CamelMessageInfo *info, CamelException *ex);
-static void disco_copy_messages_to (CamelFolder *source, GPtrArray *uids,
- CamelFolder *destination, CamelException *ex);
-static void disco_move_messages_to (CamelFolder *source, GPtrArray *uids,
- CamelFolder *destination, CamelException *ex);
-
-static void disco_cache_message (CamelDiscoFolder *disco_folder,
- const char *uid, CamelException *ex);
-static void disco_prepare_for_offline (CamelDiscoFolder *disco_folder,
- const char *expression,
- CamelException *ex);
-
-static void
-camel_disco_folder_class_init (CamelDiscoFolderClass *camel_disco_folder_class)
-{
- CamelFolderClass *camel_folder_class = CAMEL_FOLDER_CLASS (camel_disco_folder_class);
-
- parent_class = CAMEL_FOLDER_CLASS (camel_type_get_global_classfuncs (camel_folder_get_type ()));
-
- /* virtual method definition */
- camel_disco_folder_class->cache_message = disco_cache_message;
- camel_disco_folder_class->prepare_for_offline = disco_prepare_for_offline;
-
- /* virtual method overload */
- camel_folder_class->refresh_info = disco_refresh_info;
- camel_folder_class->sync = disco_sync;
- camel_folder_class->expunge = disco_expunge;
-
- camel_folder_class->append_message = disco_append_message;
- camel_folder_class->copy_messages_to = disco_copy_messages_to;
- camel_folder_class->move_messages_to = disco_move_messages_to;
-}
-
-CamelType
-camel_disco_folder_get_type (void)
-{
- static CamelType camel_disco_folder_type = CAMEL_INVALID_TYPE;
-
- if (camel_disco_folder_type == CAMEL_INVALID_TYPE) {
- camel_disco_folder_type = camel_type_register (
- CAMEL_FOLDER_TYPE, "CamelDiscoFolder",
- sizeof (CamelDiscoFolder),
- sizeof (CamelDiscoFolderClass),
- (CamelObjectClassInitFunc) camel_disco_folder_class_init,
- NULL, NULL, NULL);
- }
-
- return camel_disco_folder_type;
-}
-
-
-static void
-disco_refresh_info (CamelFolder *folder, CamelException *ex)
-{
- if (camel_disco_store_status (CAMEL_DISCO_STORE (folder->parent_store)) != CAMEL_DISCO_STORE_ONLINE)
- return;
- CDF_CLASS (folder)->refresh_info_online (folder, ex);
-}
-
-static void
-disco_sync (CamelFolder *folder, gboolean expunge, CamelException *ex)
-{
- if (expunge) {
- disco_expunge (folder, ex);
- if (camel_exception_is_set (ex))
- return;
- }
-
- switch (camel_disco_store_status (CAMEL_DISCO_STORE (folder->parent_store))) {
- case CAMEL_DISCO_STORE_ONLINE:
- CDF_CLASS (folder)->sync_online (folder, ex);
- break;
-
- case CAMEL_DISCO_STORE_OFFLINE:
- CDF_CLASS (folder)->sync_offline (folder, ex);
- break;
- }
-}
-
-static void
-disco_expunge_uids (CamelFolder *folder, GPtrArray *uids, CamelException *ex)
-{
- CamelDiscoStore *disco = CAMEL_DISCO_STORE (folder->parent_store);
-
- if (uids->len == 0)
- return;
-
- switch (camel_disco_store_status (disco)) {
- case CAMEL_DISCO_STORE_ONLINE:
- CDF_CLASS (folder)->expunge_uids_online (folder, uids, ex);
- break;
-
- case CAMEL_DISCO_STORE_OFFLINE:
- CDF_CLASS (folder)->expunge_uids_offline (folder, uids, ex);
-#ifdef NOTYET
- if (!camel_exception_is_set (ex)) {
- camel_disco_diary_log (disco->diary,
- CAMEL_DISCO_DIARY_FOLDER_EXPUNGE,
- folder, uids);
- }
-#endif
- break;
- }
-}
-
-static void
-disco_expunge (CamelFolder *folder, CamelException *ex)
-{
- GPtrArray *uids;
- int i, count;
- CamelMessageInfo *info;
-
- uids = g_ptr_array_new ();
- count = camel_folder_summary_count (folder->summary);
- for (i = 0; i < count; i++) {
- info = camel_folder_summary_index (folder->summary, i);
- if (info->flags & CAMEL_MESSAGE_DELETED)
- g_ptr_array_add (uids, g_strdup (camel_message_info_uid (info)));
- camel_folder_summary_info_free (folder->summary, info);
- }
-
- disco_expunge_uids (folder, uids, ex);
-
- for (i = 0; i < uids->len; i++)
- g_free (uids->pdata[i]);
- g_ptr_array_free (uids, TRUE);
-}
-
-static void
-disco_append_message (CamelFolder *folder, CamelMimeMessage *message,
- const CamelMessageInfo *info, CamelException *ex)
-{
- CamelDiscoStore *disco = CAMEL_DISCO_STORE (folder->parent_store);
- char *uid;
-
- switch (camel_disco_store_status (disco)) {
- case CAMEL_DISCO_STORE_ONLINE:
- uid = CDF_CLASS (folder)->append_online (folder, message, info, ex);
- break;
-
- case CAMEL_DISCO_STORE_OFFLINE:
- uid = CDF_CLASS (folder)->append_offline (folder, message, info, ex);
-#ifdef NOTYET
- if (uid) {
- camel_disco_diary_log (disco->diary,
- CAMEL_DISCO_DIARY_FOLDER_APPEND,
- folder, uid);
- }
-#endif
- break;
- }
- g_free (uid);
-}
-
-static void
-disco_copy_messages_to (CamelFolder *source, GPtrArray *uids,
- CamelFolder *destination, CamelException *ex)
-{
- CamelDiscoStore *disco = CAMEL_DISCO_STORE (source->parent_store);
-
- switch (camel_disco_store_status (disco)) {
- case CAMEL_DISCO_STORE_ONLINE:
- CDF_CLASS (source)->copy_online (source, uids, destination, ex);
- break;
-
- case CAMEL_DISCO_STORE_OFFLINE:
- CDF_CLASS (source)->copy_offline (source, uids, destination, ex);
-#ifdef NOTYET
- if (!camel_exception_is_set (ex)) {
- camel_disco_diary_log (disco->diary,
- CAMEL_DISCO_DIARY_FOLDER_COPY,
- source, destination, uids);
- }
-#endif
- break;
- }
-}
-
-static void
-disco_move_messages_to (CamelFolder *source, GPtrArray *uids,
- CamelFolder *destination, CamelException *ex)
-{
- CamelDiscoStore *disco = CAMEL_DISCO_STORE (source->parent_store);
-
- switch (camel_disco_store_status (disco)) {
- case CAMEL_DISCO_STORE_ONLINE:
- CDF_CLASS (source)->move_online (source, uids, destination, ex);
- break;
-
- case CAMEL_DISCO_STORE_OFFLINE:
- CDF_CLASS (source)->move_offline (source, uids, destination, ex);
-#ifdef NOTYET
- if (!camel_exception_is_set (ex)) {
- camel_disco_diary_log (disco->diary,
- CAMEL_DISCO_DIARY_FOLDER_MOVE,
- source, destination, uids);
- }
-#endif
- break;
- }
-}
-
-
-/**
- * camel_disco_folder_expunge_uids:
- * @folder: a (disconnectable) folder
- * @uids: array of UIDs to expunge
- * @ex: a CamelException
- *
- * This expunges the messages in @uids from @folder. It should take
- * whatever steps are needed to avoid expunging any other messages,
- * although in some cases it may not be possible to avoid expunging
- * messages that are marked deleted by another client at the same time
- * as the expunge_uids call is running.
- **/
-void
-camel_disco_folder_expunge_uids (CamelFolder *folder, GPtrArray *uids,
- CamelException *ex)
-{
- disco_expunge_uids (folder, uids, ex);
-}
-
-
-static void
-disco_cache_message (CamelDiscoFolder *disco_folder, const char *uid,
- CamelException *ex)
-{
- g_warning ("CamelDiscoFolder::cache_message not implemented for `%s'",
- camel_type_to_name (CAMEL_OBJECT_GET_TYPE (disco_folder)));
-}
-
-/**
- * camel_disco_folder_cache_message:
- * @disco_folder: the folder
- * @uid: the UID of the message to cache
- * @ex: a CamelException
- *
- * Requests that @disco_folder cache message @uid to disk.
- **/
-void
-camel_disco_folder_cache_message (CamelDiscoFolder *disco_folder,
- const char *uid, CamelException *ex)
-{
- CDF_CLASS (disco_folder)->cache_message (disco_folder, uid, ex);
-}
-
-
-static void
-disco_prepare_for_offline (CamelDiscoFolder *disco_folder,
- const char *expression,
- CamelException *ex)
-{
- CamelFolder *folder = CAMEL_FOLDER (disco_folder);
- GPtrArray *uids;
- int i;
-
- if (expression)
- uids = camel_folder_search_by_expression (folder, expression, ex);
- else
- uids = camel_folder_get_uids (folder);
- if (!uids)
- return;
- for (i = 0; i < uids->len; i++) {
- camel_disco_folder_cache_message (disco_folder, uids->pdata[i], ex);
- if (camel_exception_is_set (ex))
- break;
- }
- if (expression)
- camel_folder_search_free (folder, uids);
- else
- camel_folder_free_uids (folder, uids);
-}
-
-/**
- * camel_disco_folder_prepare_for_offline:
- * @disco_folder: the folder
- * @expression: an expression describing messages to synchronize, or %NULL
- * if all messages should be sync'ed.
- * @ex: a CamelException
- *
- * This prepares @disco_folder for offline operation, by downloading
- * the bodies of all messages described by @expression (using the
- * same syntax as camel_folder_search_by_expression() ).
- **/
-void
-camel_disco_folder_prepare_for_offline (CamelDiscoFolder *disco_folder,
- const char *expression,
- CamelException *ex)
-{
- g_return_if_fail (CAMEL_IS_DISCO_FOLDER (disco_folder));
-
- CDF_CLASS (disco_folder)->prepare_for_offline (disco_folder, expression, ex);
-}
diff --git a/camel/camel-disco-folder.h b/camel/camel-disco-folder.h
deleted file mode 100644
index cdca5a3b52..0000000000
--- a/camel/camel-disco-folder.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * camel-disco-folder.h: Abstract class for a disconnectable folder
- *
- * Authors: Dan Winship <danw@ximian.com>
- *
- * Copyright 2001 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_DISCO_FOLDER_H
-#define CAMEL_DISCO_FOLDER_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include "camel-folder.h"
-
-#define CAMEL_DISCO_FOLDER_TYPE (camel_disco_folder_get_type ())
-#define CAMEL_DISCO_FOLDER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_DISCO_FOLDER_TYPE, CamelDiscoFolder))
-#define CAMEL_DISCO_FOLDER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_DISCO_FOLDER_TYPE, CamelDiscoFolderClass))
-#define CAMEL_IS_DISCO_FOLDER(o) (CAMEL_CHECK_TYPE((o), CAMEL_DISCO_FOLDER_TYPE))
-
-struct _CamelDiscoFolder {
- CamelFolder parent_object;
-
-};
-
-typedef struct {
- CamelFolderClass parent_class;
-
- void (*refresh_info_online) (CamelFolder *folder, CamelException *ex);
-
- void (*sync_online) (CamelFolder *folder, CamelException *ex);
- void (*sync_offline) (CamelFolder *folder, CamelException *ex);
-
- void (*expunge_uids_online) (CamelFolder *folder, GPtrArray *uids,
- CamelException *ex);
- void (*expunge_uids_offline) (CamelFolder *folder, GPtrArray *uids,
- CamelException *ex);
-
- char * (*append_online) (CamelFolder *folder,
- CamelMimeMessage *message,
- const CamelMessageInfo *info,
- CamelException *ex);
- char * (*append_offline) (CamelFolder *folder,
- CamelMimeMessage *message,
- const CamelMessageInfo *info,
- CamelException *ex);
-
- void (*copy_online) (CamelFolder *source, GPtrArray *uids,
- CamelFolder *destination, CamelException *ex);
- void (*copy_offline) (CamelFolder *source, GPtrArray *uids,
- CamelFolder *destination, CamelException *ex);
-
- void (*move_online) (CamelFolder *source, GPtrArray *uids,
- CamelFolder *destination, CamelException *ex);
- void (*move_offline) (CamelFolder *source, GPtrArray *uids,
- CamelFolder *destination, CamelException *ex);
-
- void (*cache_message) (CamelDiscoFolder *disco_folder,
- const char *uid, CamelException *ex);
- void (*prepare_for_offline) (CamelDiscoFolder *disco_folder,
- const char *expression,
- CamelException *ex);
-
- void (*update_uid) (CamelFolder *folder, const char *old_uid,
- const char *new_uid);
-} CamelDiscoFolderClass;
-
-
-/* public methods */
-void camel_disco_folder_expunge_uids (CamelFolder *folder, GPtrArray *uids,
- CamelException *ex);
-
-void camel_disco_folder_cache_message (CamelDiscoFolder *disco_folder,
- const char *uid,
- CamelException *ex);
-void camel_disco_folder_prepare_for_offline (CamelDiscoFolder *disco_folder,
- const char *expression,
- CamelException *ex);
-
-/* Standard Camel function */
-CamelType camel_disco_folder_get_type (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_DISCO_FOLDER_H */
diff --git a/camel/camel-disco-store.c b/camel/camel-disco-store.c
deleted file mode 100644
index ae51b54f0f..0000000000
--- a/camel/camel-disco-store.c
+++ /dev/null
@@ -1,277 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-disco-store.c: abstract class for a disconnectable remote store */
-
-/*
- * Authors: Dan Winship <danw@ximian.com>
- *
- * Copyright 2001 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "camel-disco-store.h"
-#include "camel-exception.h"
-
-#define CDS_CLASS(o) (CAMEL_DISCO_STORE_CLASS (CAMEL_OBJECT_GET_CLASS (o)))
-
-static CamelRemoteStoreClass *remote_store_class = NULL;
-
-static gboolean disco_connect (CamelService *service, CamelException *ex);
-static gboolean disco_disconnect (CamelService *service, gboolean clean, CamelException *ex);
-static CamelFolder *disco_get_folder (CamelStore *store, const char *name,
- guint32 flags, CamelException *ex);
-static CamelFolderInfo *disco_get_folder_info (CamelStore *store,
- const char *top, guint32 flags,
- CamelException *ex);
-static void set_status (CamelDiscoStore *disco_store,
- CamelDiscoStoreStatus status,
- CamelException *ex);
-static gboolean can_work_offline (CamelDiscoStore *disco_store);
-
-static void
-camel_disco_store_class_init (CamelDiscoStoreClass *camel_disco_store_class)
-{
- CamelServiceClass *camel_service_class =
- CAMEL_SERVICE_CLASS (camel_disco_store_class);
- CamelStoreClass *camel_store_class =
- CAMEL_STORE_CLASS (camel_disco_store_class);
-
- remote_store_class = CAMEL_REMOTE_STORE_CLASS (camel_type_get_global_classfuncs (camel_remote_store_get_type ()));
-
- /* virtual method definition */
- camel_disco_store_class->set_status = set_status;
- camel_disco_store_class->can_work_offline = can_work_offline;
-
- /* virtual method overload */
- camel_service_class->connect = disco_connect;
- camel_service_class->disconnect = disco_disconnect;
-
- camel_store_class->get_folder = disco_get_folder;
- camel_store_class->get_folder_info = disco_get_folder_info;
-}
-
-static void
-camel_disco_store_init (CamelDiscoStore *store)
-{
- /* Hack */
- if (getenv ("CAMEL_OFFLINE"))
- store->status = CAMEL_DISCO_STORE_OFFLINE;
- else
- store->status = CAMEL_DISCO_STORE_ONLINE;
-}
-
-CamelType
-camel_disco_store_get_type (void)
-{
- static CamelType camel_disco_store_type = CAMEL_INVALID_TYPE;
-
- if (camel_disco_store_type == CAMEL_INVALID_TYPE) {
- camel_disco_store_type = camel_type_register (
- CAMEL_REMOTE_STORE_TYPE, "CamelDiscoStore",
- sizeof (CamelDiscoStore),
- sizeof (CamelDiscoStoreClass),
- (CamelObjectClassInitFunc) camel_disco_store_class_init,
- NULL,
- (CamelObjectInitFunc) camel_disco_store_init,
- NULL);
- }
-
- return camel_disco_store_type;
-}
-
-static gboolean
-disco_connect (CamelService *service, CamelException *ex)
-{
- CamelDiscoStore *store = CAMEL_DISCO_STORE (service);
-
- if (!CAMEL_SERVICE_CLASS (remote_store_class)->connect (service, ex))
- return FALSE;
-
- switch (camel_disco_store_status (store)) {
- case CAMEL_DISCO_STORE_ONLINE:
- return CDS_CLASS (service)->connect_online (service, ex);
-
- case CAMEL_DISCO_STORE_OFFLINE:
- return CDS_CLASS (service)->connect_offline (service, ex);
- }
-
- /* Not reached */
- return TRUE;
-}
-
-static gboolean
-disco_disconnect (CamelService *service, gboolean clean, CamelException *ex)
-{
- CamelDiscoStore *store = CAMEL_DISCO_STORE (service);
-
- switch (camel_disco_store_status (store)) {
- case CAMEL_DISCO_STORE_ONLINE:
- if (!CDS_CLASS (service)->disconnect_online (service, clean, ex))
- return FALSE;
- break;
-
- case CAMEL_DISCO_STORE_OFFLINE:
- if (!CDS_CLASS (service)->disconnect_offline (service, clean, ex))
- return FALSE;
- break;
- }
-
- return CAMEL_SERVICE_CLASS (remote_store_class)->disconnect (service, clean, ex);
-}
-
-static CamelFolder *
-disco_get_folder (CamelStore *store, const char *name,
- guint32 flags, CamelException *ex)
-{
- CamelDiscoStore *disco_store = CAMEL_DISCO_STORE (store);
-
- switch (camel_disco_store_status (disco_store)) {
- case CAMEL_DISCO_STORE_ONLINE:
- return CDS_CLASS (store)->get_folder_online (store, name, flags, ex);
-
- case CAMEL_DISCO_STORE_OFFLINE:
- return CDS_CLASS (store)->get_folder_offline (store, name, flags, ex);
- }
-
- /* Not reached */
- return NULL;
-}
-
-static CamelFolderInfo *
-disco_get_folder_info (CamelStore *store, const char *top,
- guint32 flags, CamelException *ex)
-{
- CamelDiscoStore *disco_store = CAMEL_DISCO_STORE (store);
-
- switch (camel_disco_store_status (disco_store)) {
- case CAMEL_DISCO_STORE_ONLINE:
- return CDS_CLASS (store)->get_folder_info_online (store, top, flags, ex);
-
- case CAMEL_DISCO_STORE_OFFLINE:
- /* Can't edit subscriptions while offline */
- if ((store->flags & CAMEL_STORE_SUBSCRIPTIONS) &&
- !(flags & CAMEL_STORE_FOLDER_INFO_SUBSCRIBED)) {
- camel_disco_store_check_online (disco_store, ex);
- return NULL;
- }
-
- return CDS_CLASS (store)->get_folder_info_offline (store, top, flags, ex);
- }
-
- /* Not reached */
- return NULL;
-}
-
-
-/**
- * camel_disco_store_status:
- * @store: a disconnectable store
- *
- * Return value: the current online/offline status of @store.
- **/
-CamelDiscoStoreStatus
-camel_disco_store_status (CamelDiscoStore *store)
-{
- g_return_val_if_fail (CAMEL_IS_DISCO_STORE (store), CAMEL_DISCO_STORE_ONLINE);
-
- return store->status;
-}
-
-
-static void
-set_status (CamelDiscoStore *disco_store, CamelDiscoStoreStatus status,
- CamelException *ex)
-{
- if (disco_store->status == status)
- return;
-
- camel_store_sync (CAMEL_STORE (disco_store), ex);
- if (camel_exception_is_set (ex))
- return;
- if (!camel_service_disconnect (CAMEL_SERVICE (disco_store), TRUE, ex))
- return;
-
- disco_store->status = status;
- camel_service_connect (CAMEL_SERVICE (disco_store), ex);
-}
-
-/**
- * camel_disco_store_set_status:
- * @store: a disconnectable store
- * @status: the new status
- * @ex: a CamelException
- *
- * Sets @store to @status. If an error occurrs and the status cannot
- * be set to @status, @ex will be set.
- **/
-void
-camel_disco_store_set_status (CamelDiscoStore *store,
- CamelDiscoStoreStatus status,
- CamelException *ex)
-{
- CDS_CLASS (store)->set_status (store, status, ex);
-}
-
-
-static gboolean
-can_work_offline (CamelDiscoStore *disco_store)
-{
- g_warning ("CamelDiscoStore::can_work_offline not implemented for `%s'",
- camel_type_to_name (CAMEL_OBJECT_GET_TYPE (disco_store)));
- return FALSE;
-}
-
-/**
- * camel_disco_store_can_work_offline:
- * @store: a disconnectable store
- *
- * Return value: whether or not @store can be used offline. (Will be
- * %FALSE if the store is not caching data to local disk, for example.)
- **/
-gboolean
-camel_disco_store_can_work_offline (CamelDiscoStore *store)
-{
- return CDS_CLASS (store)->can_work_offline (store);
-}
-
-
-/**
- * camel_disco_store_check_online:
- * @store: a disconnectable store
- * @ex: a CamelException
- *
- * This checks that @store is online, and sets @ex if it is not. This
- * can be used as a simple way to set a generic error message in @ex
- * for operations that won't work offline.
- *
- * Return value: whether or not @store is online.
- **/
-gboolean
-camel_disco_store_check_online (CamelDiscoStore *store, CamelException *ex)
-{
- if (camel_disco_store_status (store) != CAMEL_DISCO_STORE_ONLINE) {
- camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("You must be working online to "
- "complete this operation"));
- return FALSE;
- }
-
- return TRUE;
-}
diff --git a/camel/camel-disco-store.h b/camel/camel-disco-store.h
deleted file mode 100644
index cb40cf4590..0000000000
--- a/camel/camel-disco-store.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-disco-store.h: abstruct class for a disconnectable store */
-
-/*
- * Authors: Dan Winship <danw@ximian.com>
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_DISCO_STORE_H
-#define CAMEL_DISCO_STORE_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include "camel-remote-store.h"
-
-#define CAMEL_DISCO_STORE_TYPE (camel_disco_store_get_type ())
-#define CAMEL_DISCO_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_DISCO_STORE_TYPE, CamelDiscoStore))
-#define CAMEL_DISCO_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_DISCO_STORE_TYPE, CamelDiscoStoreClass))
-#define CAMEL_IS_DISCO_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_DISCO_STORE_TYPE))
-
-typedef enum {
- CAMEL_DISCO_STORE_ONLINE,
- CAMEL_DISCO_STORE_OFFLINE,
-#ifdef NOTYET
- CAMEL_DISCO_STORE_RESYNCING
-#endif
-} CamelDiscoStoreStatus;
-
-struct _CamelDiscoStore {
- CamelRemoteStore parent_object;
-
- CamelDiscoStoreStatus status;
-};
-
-
-typedef struct {
- CamelRemoteStoreClass parent_class;
-
- void (*set_status) (CamelDiscoStore *,
- CamelDiscoStoreStatus,
- CamelException *);
- gboolean (*can_work_offline) (CamelDiscoStore *);
-
- gboolean (*connect_online) (CamelService *,
- CamelException *);
- gboolean (*connect_offline) (CamelService *,
- CamelException *);
-
- gboolean (*disconnect_online) (CamelService *, gboolean,
- CamelException *);
- gboolean (*disconnect_offline) (CamelService *, gboolean,
- CamelException *);
-
- CamelFolder * (*get_folder_online) (CamelStore *store,
- const char *name,
- guint32 flags,
- CamelException *ex);
- CamelFolder * (*get_folder_offline) (CamelStore *store,
- const char *name,
- guint32 flags,
- CamelException *ex);
-
- CamelFolderInfo * (*get_folder_info_online) (CamelStore *store,
- const char *top,
- guint32 flags,
- CamelException *ex);
- CamelFolderInfo * (*get_folder_info_offline) (CamelStore *store,
- const char *top,
- guint32 flags,
- CamelException *ex);
-
-} CamelDiscoStoreClass;
-
-
-/* Standard Camel function */
-CamelType camel_disco_store_get_type (void);
-
-/* Public methods */
-CamelDiscoStoreStatus camel_disco_store_status (CamelDiscoStore *);
-void camel_disco_store_set_status (CamelDiscoStore *,
- CamelDiscoStoreStatus,
- CamelException *);
-gboolean camel_disco_store_can_work_offline (CamelDiscoStore *);
-
-/* Convenience functions */
-gboolean camel_disco_store_check_online (CamelDiscoStore *store, CamelException *ex);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_DISCO_STORE_H */
diff --git a/camel/camel-exception-list.def b/camel/camel-exception-list.def
deleted file mode 100644
index 8fe1e268cf..0000000000
--- a/camel/camel-exception-list.def
+++ /dev/null
@@ -1,37 +0,0 @@
-/* WARNING: Exceptions MUST NOT be renumbered: they need to be
- * consistent across libraries compiled at different times.
- * Categories should be widely separated, old unused exceptions can
- * never be deleted, and new exceptions can be added only to the
- * ends of categories.
- */
-
-CAMEL_EXCEPTION_NONE = 0,
-
-/* Generic exceptions */
-CAMEL_EXCEPTION_INVALID_PARAM,
-CAMEL_EXCEPTION_SYSTEM,
-CAMEL_EXCEPTION_USER_CANCEL,
-
-/* CamelFolderException */
-CAMEL_EXCEPTION_FOLDER_NULL = 100,
-CAMEL_EXCEPTION_FOLDER_INVALID,
-CAMEL_EXCEPTION_FOLDER_INVALID_STATE,
-CAMEL_EXCEPTION_FOLDER_NON_EMPTY,
-CAMEL_EXCEPTION_FOLDER_NON_UID,
-CAMEL_EXCEPTION_FOLDER_INSUFFICIENT_PERMISSION,
-CAMEL_EXCEPTION_FOLDER_INVALID_PATH,
-CAMEL_EXCEPTION_FOLDER_INVALID_UID,
-CAMEL_EXCEPTION_FOLDER_SUMMARY_INVALID,
-
-/* CamelStoreException */
-CAMEL_EXCEPTION_STORE_NULL = 200,
-CAMEL_EXCEPTION_STORE_INVALID,
-CAMEL_EXCEPTION_STORE_NO_FOLDER,
-
-/* CamelServiceException */
-CAMEL_EXCEPTION_SERVICE_NULL = 300,
-CAMEL_EXCEPTION_SERVICE_INVALID,
-CAMEL_EXCEPTION_SERVICE_URL_INVALID,
-CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
-CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
-CAMEL_EXCEPTION_SERVICE_NOT_CONNECTED
diff --git a/camel/camel-exception.c b/camel/camel-exception.c
deleted file mode 100644
index 42ef0df339..0000000000
--- a/camel/camel-exception.c
+++ /dev/null
@@ -1,281 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-execpetion.c : exception utils */
-
-/*
- *
- * Author :
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <glib.h>
-#include "camel-exception.h"
-
-/* i dont know why gthread_mutex stuff even exists, this is easier */
-
-/* also, i'm not convinced mutexes are needed here. But it
- doesn't really hurt either */
-#ifdef ENABLE_THREADS
-#include <pthread.h>
-
-static pthread_mutex_t exception_mutex = PTHREAD_MUTEX_INITIALIZER;
-
-#define CAMEL_EXCEPTION_LOCK(e) (pthread_mutex_lock(&exception_mutex))
-#define CAMEL_EXCEPTION_UNLOCK(e) (pthread_mutex_unlock(&exception_mutex))
-#else
-#define CAMEL_EXCEPTION_LOCK(e)
-#define CAMEL_EXCEPTION_UNLOCK(e)
-#endif
-
-/**
- * camel_exception_new: allocate a new exception object.
- *
- * Create and returns a new exception object.
- *
- *
- * Return value: The newly allocated exception object.
- **/
-CamelException *
-camel_exception_new (void)
-{
- CamelException *ex;
-
- ex = g_new (CamelException, 1);
- ex->desc = NULL;
-
- /* set the Exception Id to NULL */
- ex->id = CAMEL_EXCEPTION_NONE;
-
- return ex;
-}
-
-/**
- * camel_exception_init: init a (statically allocated) exception.
- *
- * Init an exception. This routine is mainly
- * useful when using a statically allocated
- * exception.
- *
- *
- **/
-void
-camel_exception_init (CamelException *ex)
-{
- ex->desc = NULL;
-
- /* set the Exception Id to NULL */
- ex->id = CAMEL_EXCEPTION_NONE;
-}
-
-
-/**
- * camel_exception_clear: Clear an exception
- * @exception: the exception object
- *
- * Clear an exception, that is, set the
- * exception ID to CAMEL_EXCEPTION_NONE and
- * free the description text.
- * If the exception is NULL, this funtion just
- * returns.
- **/
-void
-camel_exception_clear (CamelException *exception)
-{
- if (!exception)
- return;
-
- CAMEL_EXCEPTION_LOCK(exception);
-
- if (exception->desc)
- g_free (exception->desc);
- exception->desc = NULL;
- exception->id = CAMEL_EXCEPTION_NONE;
-
- CAMEL_EXCEPTION_UNLOCK(exception);
-}
-
-/**
- * camel_exception_free: Free an exception
- * @exception: The exception object to free
- *
- * Free an exception object. If the exception
- * is NULL, nothing is done, the routine simply
- * returns.
- **/
-void
-camel_exception_free (CamelException *exception)
-{
- if (!exception)
- return;
-
- if (exception->desc)
- g_free (exception->desc);
- g_free (exception);
-}
-
-/**
- * camel_exception_set: set an exception
- * @ex: exception object
- * @id: exception id
- * @desc: textual description of the exception
- *
- * Set the value of an exception. The exception id is
- * a unique number representing the exception. The
- * textual description is a small text explaining
- * what happened and provoked the exception.
- *
- * When @ex is NULL, nothing is done, this routine
- * simply returns.
- *
- **/
-void
-camel_exception_set (CamelException *ex,
- ExceptionId id,
- const char *desc)
-{
- if (!ex)
- return;
-
- CAMEL_EXCEPTION_LOCK(exception);
-
- ex->id = id;
-
- if (ex->desc)
- g_free(ex->desc);
- ex->desc = g_strdup(desc);
-
- CAMEL_EXCEPTION_UNLOCK(exception);
-}
-
-/**
- * camel_exception_setv: set an exception
- * @ex: exception object
- * @id: exception id
- * @format: format of the description string. The format string is
- * used as in printf().
- *
- * Set the value of an exception. The exception id is
- * a unique number representing the exception. The
- * textual description is a small text explaining
- * what happened and provoked the exception.
- * In this version, the string is created from the format
- * string and the variable argument list.
- *
- * It is safe to say:
- * camel_exception_setv (ex, ..., camel_exception_get_description (ex), ...);
- *
- * When @ex is NULL, nothing is done, this routine
- * simply returns.
- *
- **/
-void
-camel_exception_setv (CamelException *ex,
- ExceptionId id,
- const char *format,
- ...)
-{
- va_list args;
-
- if (!ex)
- return;
-
- CAMEL_EXCEPTION_LOCK(exception);
-
- if (ex->desc)
- g_free (ex->desc);
-
- va_start(args, format);
- ex->desc = g_strdup_vprintf (format, args);
- va_end (args);
-
- ex->id = id;
-
- CAMEL_EXCEPTION_UNLOCK(exception);
-}
-
-/**
- * camel_exception_xfer: transfer an exception
- * @ex_dst: Destination exception object
- * @ex_src: Source exception object
- *
- * Transfer the content of an exception from
- * an exception object to another.
- * The destination exception receives the id and
- * the description text of the source exception.
- **/
-void
-camel_exception_xfer (CamelException *ex_dst,
- CamelException *ex_src)
-{
- CAMEL_EXCEPTION_LOCK(exception);
-
- if (ex_dst->desc)
- g_free (ex_dst->desc);
-
- ex_dst->id = ex_src->id;
- ex_dst->desc = ex_src->desc;
-
- ex_src->desc = NULL;
- ex_src->id = CAMEL_EXCEPTION_NONE;
-
- CAMEL_EXCEPTION_UNLOCK(exception);
-}
-
-/**
- * camel_exception_get_id: get the exception id
- * @ex: The exception object
- *
- * Return the id of an exception.
- * If @ex is NULL, return CAMEL_EXCEPTION_NONE;
- *
- * Return value: Exception ID.
- **/
-ExceptionId
-camel_exception_get_id (CamelException *ex)
-{
- if (ex)
- return ex->id;
- else
- return CAMEL_EXCEPTION_NONE;
-}
-
-/**
- * camel_exception_get_description: get the description of an exception.
- * @ex: The exception object
- *
- * Return the exception description text.
- * If @ex is NULL, return NULL;
- *
- *
- * Return value: Exception description text.
- **/
-const gchar *
-camel_exception_get_description (CamelException *ex)
-{
- char *ret = NULL;
-
- if (ex)
- ret = ex->desc;
-
- return ret;
-}
diff --git a/camel/camel-exception.h b/camel/camel-exception.h
deleted file mode 100644
index 2bd1bec90c..0000000000
--- a/camel/camel-exception.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-execpetion.h : exception utils */
-
-/*
- *
- * Author :
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-
-#ifndef CAMEL_EXCEPTION_H
-#define CAMEL_EXCEPTION_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <camel/camel-types.h>
-
-typedef enum {
-#include "camel-exception-list.def"
-
-} ExceptionId;
-
-
-struct _CamelException {
- /* do not access the fields directly */
- ExceptionId id;
- char *desc;
-
-};
-
-
-
-/* creation and destruction functions */
-CamelException * camel_exception_new (void);
-void camel_exception_free (CamelException *exception);
-void camel_exception_init (CamelException *ex);
-
-
-/* exception content manipulation */
-void camel_exception_clear (CamelException *exception);
-void camel_exception_set (CamelException *ex,
- ExceptionId id,
- const char *desc);
-void camel_exception_setv (CamelException *ex,
- ExceptionId id,
- const char *format,
- ...);
-
-
-/* exception content transfer */
-void camel_exception_xfer (CamelException *ex_dst,
- CamelException *ex_src);
-
-
-/* exception content retrieval */
-ExceptionId camel_exception_get_id (CamelException *ex);
-const char * camel_exception_get_description (CamelException *ex);
-
-#define camel_exception_is_set(ex) (camel_exception_get_id (ex) != CAMEL_EXCEPTION_NONE)
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_EXCEPTION_H */
-
diff --git a/camel/camel-file-utils.c b/camel/camel-file-utils.c
deleted file mode 100644
index 1b0fe65dbb..0000000000
--- a/camel/camel-file-utils.c
+++ /dev/null
@@ -1,283 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Authors:
- * Michael Zucchi <notzed@ximian.com>
- * Dan Winship <danw@ximian.com>
- *
- * Copyright (C) 2000, 2001 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#include "camel-file-utils.h"
-
-#include <netinet/in.h>
-
-/**
- * camel_file_util_encode_uint32:
- * @out: file to output to
- * @value: value to output
- *
- * Utility function to save an uint32 to a file.
- *
- * Return value: 0 on success, -1 on error.
- **/
-int
-camel_file_util_encode_uint32 (FILE *out, guint32 value)
-{
- int i;
-
- for (i = 28; i > 0; i -= 7) {
- if (value >= (1 << i)) {
- unsigned int c = (value >> i) & 0x7f;
- if (fputc (c, out) == -1)
- return -1;
- }
- }
- return fputc (value | 0x80, out);
-}
-
-/**
- * camel_file_util_decode_uint32:
- * @in: file to read from
- * @dest: pointer to a variable to store the value in
- *
- * Retrieve an encoded uint32 from a file.
- *
- * Return value: 0 on success, -1 on error. @*dest will contain the
- * decoded value.
- **/
-int
-camel_file_util_decode_uint32 (FILE *in, guint32 *dest)
-{
- guint32 value = 0;
- int v;
-
- /* until we get the last byte, keep decoding 7 bits at a time */
- while ( ((v = fgetc (in)) & 0x80) == 0 && v!=EOF) {
- value |= v;
- value <<= 7;
- }
- if (v == EOF) {
- *dest = value >> 7;
- return -1;
- }
- *dest = value | (v & 0x7f);
-
- return 0;
-}
-
-/**
- * camel_file_util_encode_fixed_int32:
- * @out: file to output to
- * @value: value to output
- *
- * Encode a gint32, performing no compression, but converting
- * to network order.
- *
- * Return value: 0 on success, -1 on error.
- **/
-int
-camel_file_util_encode_fixed_int32 (FILE *out, gint32 value)
-{
- guint32 save;
-
- save = htonl (value);
- if (fwrite (&save, sizeof (save), 1, out) != 1)
- return -1;
- return 0;
-}
-
-/**
- * camel_file_util_decode_fixed_int32:
- * @in: file to read from
- * @dest: pointer to a variable to store the value in
- *
- * Retrieve a gint32.
- *
- * Return value: 0 on success, -1 on error.
- **/
-int
-camel_file_util_decode_fixed_int32 (FILE *in, gint32 *dest)
-{
- guint32 save;
-
- if (fread (&save, sizeof (save), 1, in) == 1) {
- *dest = ntohl (save);
- return 0;
- } else {
- return -1;
- }
-}
-
-/**
- * camel_file_util_encode_time_t:
- * @out: file to output to
- * @value: value to output
- *
- * Encode a time_t value to the file.
- *
- * Return value: 0 on success, -1 on error.
- **/
-int
-camel_file_util_encode_time_t(FILE *out, time_t value)
-{
- int i;
-
- for (i = sizeof (time_t) - 1; i >= 0; i--) {
- if (fputc((value >> (i * 8)) & 0xff, out) == -1)
- return -1;
- }
- return 0;
-}
-
-/**
- * camel_file_util_decode_time_t:
- * @in: file to read from
- * @dest: pointer to a variable to store the value in
- *
- * Decode a time_t value.
- *
- * Return value: 0 on success, -1 on error.
- **/
-int
-camel_file_util_decode_time_t (FILE *in, time_t *dest)
-{
- time_t save = 0;
- int v, i = sizeof (time_t) - 1;
-
- while (i >= 0 && (v = fgetc (in)) != EOF) {
- save |= ((time_t)v) << (i * 8);
- i--;
- }
- *dest = save;
- if (v == EOF)
- return -1;
- return 0;
-}
-
-/**
- * camel_file_util_encode_off_t:
- * @out: file to output to
- * @value: value to output
- *
- * Encode an off_t type.
- *
- * Return value: 0 on success, -1 on error.
- **/
-int
-camel_file_util_encode_off_t (FILE *out, off_t value)
-{
- int i;
-
- for (i = sizeof (off_t) - 1; i >= 0; i--) {
- if (fputc ((value >> (i * 8)) & 0xff, out) == -1)
- return -1;
- }
- return 0;
-}
-
-/**
- * camel_file_util_decode_off_t:
- * @in: file to read from
- * @dest: pointer to a variable to put the value in
- *
- * Decode an off_t type.
- *
- * Return value: 0 on success, -1 on failure.
- **/
-int
-camel_file_util_decode_off_t (FILE *in, off_t *dest)
-{
- off_t save = 0;
- int v, i = sizeof(off_t) - 1;
-
- while (i >= 0 && (v = fgetc (in)) != EOF) {
- save |= ((off_t)v) << (i * 8);
- i--;
- }
- *dest = save;
- if (v == EOF)
- return -1;
- return 0;
-}
-
-/**
- * camel_file_util_encode_string:
- * @out: file to output to
- * @str: value to output
- *
- * Encode a normal string and save it in the output file.
- *
- * Return value: 0 on success, -1 on error.
- **/
-int
-camel_file_util_encode_string (FILE *out, const char *str)
-{
- register int len;
-
- if (str == NULL)
- return camel_file_util_encode_uint32 (out, 0);
-
- len = strlen (str);
- if (camel_file_util_encode_uint32 (out, len+1) == -1)
- return -1;
- if (fwrite (str, len, 1, out) == 1)
- return 0;
- return -1;
-}
-
-/**
- * camel_file_util_decode_string:
- * @in: file to read from
- * @str: pointer to a variable to store the value in
- *
- * Decode a normal string from the input file.
- *
- * Return value: 0 on success, -1 on error.
- **/
-int
-camel_file_util_decode_string (FILE *in, char **str)
-{
- guint32 len;
- register char *ret;
-
- if (camel_file_util_decode_uint32 (in, &len) == -1) {
- *str = NULL;
- return -1;
- }
-
- len--;
- if (len > 65536) {
- *str = NULL;
- return -1;
- }
-
- ret = g_malloc (len+1);
- if (fread (ret, len, 1, in) != 1) {
- g_free (ret);
- *str = NULL;
- return -1;
- }
-
- ret[len] = 0;
- *str = ret;
- return 0;
-}
-
-
diff --git a/camel/camel-file-utils.h b/camel/camel-file-utils.h
deleted file mode 100644
index 4138b8b7df..0000000000
--- a/camel/camel-file-utils.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Authors:
- * Michael Zucchi <notzed@ximian.com>
- * Dan Winship <danw@ximian.com>
- *
- * Copyright (C) 2000, 2001 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_FILE_UTILS_H
-#define CAMEL_FILE_UTILS_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <glib.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <time.h>
-
-int camel_file_util_encode_fixed_int32 (FILE *out, gint32);
-int camel_file_util_decode_fixed_int32 (FILE *in, gint32 *);
-int camel_file_util_encode_uint32 (FILE *out, guint32);
-int camel_file_util_decode_uint32 (FILE *in, guint32 *);
-int camel_file_util_encode_time_t (FILE *out, time_t);
-int camel_file_util_decode_time_t (FILE *in, time_t *);
-int camel_file_util_encode_off_t (FILE *out, off_t);
-int camel_file_util_decode_off_t (FILE *in, off_t *);
-int camel_file_util_encode_string (FILE *out, const char *);
-int camel_file_util_decode_string (FILE *in, char **);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_FILE_UTILS_H */
diff --git a/camel/camel-filter-driver.c b/camel/camel-filter-driver.c
deleted file mode 100644
index 464ccc1539..0000000000
--- a/camel/camel-filter-driver.c
+++ /dev/null
@@ -1,913 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2000 Helix Code Inc.
- * Copyright (C) 2001 Ximian Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- * Jeffrey Stedfast <fejj@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include <time.h>
-
-#include <glib.h>
-
-#include "camel-filter-driver.h"
-#include "camel-filter-search.h"
-
-#include "camel-exception.h"
-#include "camel-service.h"
-#include "camel-mime-message.h"
-
-#include "e-util/e-sexp.h"
-#include "e-util/e-memory.h"
-#include "e-util/e-msgport.h" /* for edlist */
-
-#define d(x)
-
-/* type of status for a log report */
-enum filter_log_t {
- FILTER_LOG_NONE,
- FILTER_LOG_START, /* start of new log entry */
- FILTER_LOG_ACTION, /* an action performed */
- FILTER_LOG_END, /* end of log */
-};
-
-/* list of rule nodes */
-struct _filter_rule {
- struct _filter_rule *next;
- struct _filter_rule *prev;
-
- char *match;
- char *action;
- char *name;
-};
-
-struct _CamelFilterDriverPrivate {
- GHashTable *globals; /* global variables */
-
- CamelFolder *defaultfolder; /* defualt folder */
-
- CamelFilterStatusFunc *statusfunc; /* status callback */
- void *statusdata; /* status callback data */
-
- /* for callback */
- CamelFilterGetFolderFunc get_folder;
- void *data;
-
- /* run-time data */
- GHashTable *folders; /* folders that message has been copied to */
- int closed; /* close count */
- GHashTable *forwards; /* addresses that have been forwarded the message */
-
- gboolean terminated; /* message processing was terminated */
- gboolean deleted; /* message was marked for deletion */
- gboolean copied; /* message was copied to some folder or another */
-
- CamelMimeMessage *message; /* input message */
- CamelMessageInfo *info; /* message summary info */
- const char *uid; /* message uid */
- CamelFolder *source; /* message source folder */
-
- FILE *logfile; /* log file */
-
- EDList rules; /* list of _filter_rule structs */
-
- CamelException *ex;
-
- /* evaluator */
- ESExp *eval;
-};
-
-#define _PRIVATE(o) (((CamelFilterDriver *)(o))->priv)
-
-static void camel_filter_driver_class_init (CamelFilterDriverClass *klass);
-static void camel_filter_driver_init (CamelFilterDriver *obj);
-static void camel_filter_driver_finalise (CamelObject *obj);
-
-static void camel_filter_driver_log (CamelFilterDriver *driver, enum filter_log_t status, const char *desc, ...);
-
-static CamelFolder *open_folder (CamelFilterDriver *d, const char *folder_url);
-static int close_folders (CamelFilterDriver *d);
-
-static ESExpResult *do_delete (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFilterDriver *);
-static ESExpResult *mark_forward (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFilterDriver *);
-static ESExpResult *do_copy (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFilterDriver *);
-static ESExpResult *do_move (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFilterDriver *);
-static ESExpResult *do_stop (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFilterDriver *);
-static ESExpResult *do_colour (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFilterDriver *);
-static ESExpResult *do_score (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFilterDriver *);
-static ESExpResult *do_flag (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFilterDriver *);
-
-/* these are our filter actions - each must have a callback */
-static struct {
- char *name;
- ESExpFunc *func;
- int type; /* set to 1 if a function can perform shortcut evaluation, or
- doesn't execute everything, 0 otherwise */
-} symbols[] = {
- { "delete", (ESExpFunc *) do_delete, 0 },
- { "forward-to", (ESExpFunc *) mark_forward, 0 },
- { "copy-to", (ESExpFunc *) do_copy, 0 },
- { "move-to", (ESExpFunc *) do_move, 0 },
- { "stop", (ESExpFunc *) do_stop, 0 },
- { "set-colour", (ESExpFunc *) do_colour, 0 },
- { "set-score", (ESExpFunc *) do_score, 0 },
- { "set-system-flag", (ESExpFunc *) do_flag, 0 }
-};
-
-static CamelObjectClass *camel_filter_driver_parent;
-
-guint
-camel_filter_driver_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(CAMEL_OBJECT_TYPE, "CamelFilterDriver",
- sizeof(CamelFilterDriver),
- sizeof(CamelFilterDriverClass),
- (CamelObjectClassInitFunc)camel_filter_driver_class_init,
- NULL,
- (CamelObjectInitFunc)camel_filter_driver_init,
- (CamelObjectFinalizeFunc)camel_filter_driver_finalise);
- }
-
- return type;
-}
-
-static void
-camel_filter_driver_class_init (CamelFilterDriverClass *klass)
-{
- /*CamelObjectClass *object_class = (CamelObjectClass *) klass;*/
-
- camel_filter_driver_parent = camel_type_get_global_classfuncs(camel_object_get_type());
-}
-
-static void
-camel_filter_driver_init (CamelFilterDriver *obj)
-{
- struct _CamelFilterDriverPrivate *p;
- int i;
-
- p = _PRIVATE (obj) = g_malloc0 (sizeof (*p));
-
- e_dlist_init(&p->rules);
-
- p->eval = e_sexp_new ();
- /* Load in builtin symbols */
- for (i = 0; i < sizeof (symbols) / sizeof (symbols[0]); i++) {
- if (symbols[i].type == 1) {
- e_sexp_add_ifunction (p->eval, 0, symbols[i].name, (ESExpIFunc *)symbols[i].func, obj);
- } else {
- e_sexp_add_function (p->eval, 0, symbols[i].name, symbols[i].func, obj);
- }
- }
-
- p->globals = g_hash_table_new (g_str_hash, g_str_equal);
-
- p->folders = g_hash_table_new (g_str_hash, g_str_equal);
-}
-
-static void
-free_hash_strings (void *key, void *value, void *data)
-{
- g_free (key);
- g_free (value);
-}
-
-static void
-camel_filter_driver_finalise (CamelObject *obj)
-{
- CamelFilterDriver *driver = (CamelFilterDriver *) obj;
- struct _CamelFilterDriverPrivate *p = _PRIVATE (driver);
- struct _filter_rule *node;
-
- /* close all folders that were opened for appending */
- close_folders (driver);
- g_hash_table_destroy (p->folders);
-
- g_hash_table_foreach (p->globals, free_hash_strings, driver);
- g_hash_table_destroy (p->globals);
-
- e_sexp_unref(p->eval);
-
- if (p->defaultfolder) {
- camel_folder_thaw (p->defaultfolder);
- camel_object_unref (CAMEL_OBJECT (p->defaultfolder));
- }
-
- while ((node = (struct _filter_rule *)e_dlist_remhead(&p->rules))) {
- g_free(node->match);
- g_free(node->action);
- g_free(node->name);
- g_free(node);
- }
-
- g_free (p);
-}
-
-/**
- * camel_filter_driver_new:
- * @system: path to system rules
- * @user: path to user rules
- * @get_folder: function to call to fetch folders
- *
- * Create a new CamelFilterDriver object.
- *
- * Return value: A new CamelFilterDriver widget.
- **/
-CamelFilterDriver *
-camel_filter_driver_new (CamelFilterGetFolderFunc get_folder, void *data)
-{
- CamelFilterDriver *new;
- struct _CamelFilterDriverPrivate *p;
-
- new = CAMEL_FILTER_DRIVER (camel_object_new(camel_filter_driver_get_type ()));
- p = _PRIVATE (new);
-
- p->get_folder = get_folder;
- p->data = data;
-
- return new;
-}
-
-void
-camel_filter_driver_set_logfile (CamelFilterDriver *d, FILE *logfile)
-{
- struct _CamelFilterDriverPrivate *p = _PRIVATE (d);
-
- p->logfile = logfile;
-}
-
-void
-camel_filter_driver_set_status_func (CamelFilterDriver *d, CamelFilterStatusFunc *func, void *data)
-{
- struct _CamelFilterDriverPrivate *p = _PRIVATE (d);
-
- p->statusfunc = func;
- p->statusdata = data;
-}
-
-void
-camel_filter_driver_set_default_folder (CamelFilterDriver *d, CamelFolder *def)
-{
- struct _CamelFilterDriverPrivate *p = _PRIVATE (d);
-
- if (p->defaultfolder) {
- camel_folder_thaw (p->defaultfolder);
- camel_object_unref (CAMEL_OBJECT (p->defaultfolder));
- }
-
- p->defaultfolder = def;
-
- if (p->defaultfolder) {
- camel_folder_freeze (p->defaultfolder);
- camel_object_ref (CAMEL_OBJECT (p->defaultfolder));
- }
-}
-
-void
-camel_filter_driver_add_rule(CamelFilterDriver *d, const char *name, const char *match, const char *action)
-{
- struct _CamelFilterDriverPrivate *p = _PRIVATE (d);
- struct _filter_rule *node;
-
- node = g_malloc(sizeof(*node));
- node->match = g_strdup(match);
- node->action = g_strdup(action);
- node->name = g_strdup(name);
- e_dlist_addtail(&p->rules, (EDListNode *)node);
-}
-
-static void
-report_status (CamelFilterDriver *driver, enum camel_filter_status_t status, int pc, const char *desc, ...)
-{
- /* call user-defined status report function */
- struct _CamelFilterDriverPrivate *p = _PRIVATE (driver);
- va_list ap;
- char *str;
-
- if (p->statusfunc) {
- va_start (ap, desc);
- str = g_strdup_vprintf (desc, ap);
- p->statusfunc (driver, status, pc, str, p->statusdata);
- g_free (str);
- }
-}
-
-
-#if 0
-void
-camel_filter_driver_set_global (CamelFilterDriver *d, const char *name, const char *value)
-{
- struct _CamelFilterDriverPrivate *p = _PRIVATE (d);
- char *oldkey, *oldvalue;
-
- if (g_hash_table_lookup_extended (p->globals, name, (void *)&oldkey, (void *)&oldvalue)) {
- g_free (oldvalue);
- g_hash_table_insert (p->globals, oldkey, g_strdup (value));
- } else {
- g_hash_table_insert (p->globals, g_strdup (name), g_strdup (value));
- }
-}
-#endif
-
-static ESExpResult *
-do_delete (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFilterDriver *driver)
-{
- struct _CamelFilterDriverPrivate *p = _PRIVATE (driver);
-
- d(fprintf (stderr, "doing delete\n"));
- p->deleted = TRUE;
- camel_filter_driver_log (driver, FILTER_LOG_ACTION, "Delete");
-
- return NULL;
-}
-
-static ESExpResult *
-mark_forward (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFilterDriver *driver)
-{
- /*struct _CamelFilterDriverPrivate *p = _PRIVATE (driver);*/
-
- d(fprintf (stderr, "marking message for forwarding\n"));
- /* FIXME: do stuff here */
- camel_filter_driver_log (driver, FILTER_LOG_ACTION, "Forward");
-
- return NULL;
-}
-
-static ESExpResult *
-do_copy (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFilterDriver *driver)
-{
- struct _CamelFilterDriverPrivate *p = _PRIVATE (driver);
- int i;
-
- d(fprintf (stderr, "copying message...\n"));
-
- for (i = 0; i < argc; i++) {
- if (argv[i]->type == ESEXP_RES_STRING) {
- /* open folders we intent to copy to */
- char *folder = argv[i]->value.string;
- char *service_url;
- CamelFolder *outbox;
-
- outbox = open_folder (driver, folder);
- if (!outbox)
- break;
-
- p->copied = TRUE;
- if (p->uid && p->source && camel_folder_has_summary_capability (p->source)) {
- GPtrArray *uids;
-
- uids = g_ptr_array_new ();
- g_ptr_array_add (uids, (char *) p->uid);
- camel_folder_copy_messages_to (p->source, uids, outbox, p->ex);
- g_ptr_array_free (uids, TRUE);
- } else
- camel_folder_append_message (outbox, p->message, p->info, p->ex);
-
- service_url = camel_service_get_url (CAMEL_SERVICE (camel_folder_get_parent_store (outbox)));
- camel_filter_driver_log (driver, FILTER_LOG_ACTION, "Copy to folder %s",
- service_url);
- g_free (service_url);
- }
- }
-
- return NULL;
-}
-
-static ESExpResult *
-do_move (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFilterDriver *driver)
-{
- struct _CamelFilterDriverPrivate *p = _PRIVATE (driver);
- int i;
-
- d(fprintf (stderr, "moving message...\n"));
-
- for (i = 0; i < argc; i++) {
- if (argv[i]->type == ESEXP_RES_STRING) {
- /* open folders we intent to move to */
- char *folder = argv[i]->value.string;
- char *service_url;
- CamelFolder *outbox;
-
- outbox = open_folder (driver, folder);
- if (!outbox)
- break;
-
- p->copied = TRUE;
- p->deleted = TRUE; /* a 'move' is a copy & delete */
-
- if (p->uid && p->source && camel_folder_has_summary_capability (p->source)) {
- GPtrArray *uids;
-
- uids = g_ptr_array_new ();
- g_ptr_array_add (uids, (char *) p->uid);
- camel_folder_copy_messages_to (p->source, uids, outbox, p->ex);
- g_ptr_array_free (uids, TRUE);
- } else
- camel_folder_append_message (outbox, p->message, p->info, p->ex);
-
- service_url = camel_service_get_url (CAMEL_SERVICE (camel_folder_get_parent_store (outbox)));
- camel_filter_driver_log (driver, FILTER_LOG_ACTION, "Move to folder %s",
- service_url);
- g_free (service_url);
- }
- }
-
- return NULL;
-}
-
-static ESExpResult *
-do_stop (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFilterDriver *driver)
-{
- struct _CamelFilterDriverPrivate *p = _PRIVATE (driver);
-
- camel_filter_driver_log (driver, FILTER_LOG_ACTION, "Stopped processing");
- d(fprintf (stderr, "terminating message processing\n"));
- p->terminated = TRUE;
-
- return NULL;
-}
-
-static ESExpResult *
-do_colour (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFilterDriver *driver)
-{
- struct _CamelFilterDriverPrivate *p = _PRIVATE (driver);
-
- d(fprintf (stderr, "setting colour tag\n"));
- if (argc > 0 && argv[0]->type == ESEXP_RES_STRING) {
- camel_tag_set (&p->info->user_tags, "colour", argv[0]->value.string);
- camel_filter_driver_log (driver, FILTER_LOG_ACTION, "Set colour to %s", argv[0]->value.string);
- }
-
- return NULL;
-}
-
-static ESExpResult *
-do_score (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFilterDriver *driver)
-{
- struct _CamelFilterDriverPrivate *p = _PRIVATE (driver);
-
- d(fprintf (stderr, "setting score tag\n"));
- if (argc > 0 && argv[0]->type == ESEXP_RES_INT) {
- char *value;
-
- value = g_strdup_printf ("%d", argv[0]->value.number);
- camel_tag_set (&p->info->user_tags, "score", value);
- camel_filter_driver_log (driver, FILTER_LOG_ACTION, "Set score to %d", argv[0]->value.number);
- g_free (value);
- }
-
- return NULL;
-}
-
-static ESExpResult *
-do_flag (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFilterDriver *driver)
-{
- struct _CamelFilterDriverPrivate *p = _PRIVATE (driver);
-
- d(fprintf (stderr, "setting flag\n"));
- if (argc == 1 && argv[0]->type == ESEXP_RES_STRING) {
- p->info->flags |= camel_system_flag (argv[0]->value.string) | CAMEL_MESSAGE_FOLDER_FLAGGED;
- camel_filter_driver_log (driver, FILTER_LOG_ACTION, "Set %s flag", argv[0]->value.string);
- }
-
- return NULL;
-}
-
-static CamelFolder *
-open_folder (CamelFilterDriver *driver, const char *folder_url)
-{
- struct _CamelFilterDriverPrivate *p = _PRIVATE (driver);
- CamelFolder *camelfolder;
-
- /* we have a lookup table of currently open folders */
- camelfolder = g_hash_table_lookup (p->folders, folder_url);
- if (camelfolder)
- return camelfolder;
-
- camelfolder = p->get_folder (driver, folder_url, p->data, p->ex);
-
- if (camelfolder) {
- g_hash_table_insert (p->folders, g_strdup (folder_url), camelfolder);
- camel_folder_freeze (camelfolder);
- }
-
- return camelfolder;
-}
-
-static void
-close_folder (void *key, void *value, void *data)
-{
- CamelFolder *folder = value;
- CamelFilterDriver *driver = data;
- struct _CamelFilterDriverPrivate *p = _PRIVATE (driver);
-
- p->closed++;
-
- g_free (key);
- camel_folder_sync (folder, FALSE, p->ex);
- camel_folder_thaw (folder);
- camel_object_unref (CAMEL_OBJECT (folder));
-
- report_status(driver, CAMEL_FILTER_STATUS_PROGRESS, g_hash_table_size(p->folders)* 100 / p->closed, _("Syncing folders"));
-}
-
-/* flush/close all folders */
-static int
-close_folders (CamelFilterDriver *driver)
-{
- struct _CamelFilterDriverPrivate *p = _PRIVATE (driver);
-
- report_status(driver, CAMEL_FILTER_STATUS_PROGRESS, 0, _("Syncing folders"));
-
- p->closed = 0;
- g_hash_table_foreach (p->folders, close_folder, driver);
- g_hash_table_destroy (p->folders);
- p->folders = g_hash_table_new (g_str_hash, g_str_equal);
-
- /* FIXME: status from driver */
- return 0;
-}
-
-#if 0
-static void
-free_key (gpointer key, gpointer value, gpointer user_data)
-{
- g_free (key);
-}
-#endif
-
-
-static void
-camel_filter_driver_log (CamelFilterDriver *driver, enum filter_log_t status, const char *desc, ...)
-{
- struct _CamelFilterDriverPrivate *p = _PRIVATE (driver);
-
- if (p->logfile) {
- char *str = NULL;
-
- if (desc) {
- va_list ap;
-
- va_start (ap, desc);
- str = g_strdup_vprintf (desc, ap);
- }
-
- switch (status) {
- case FILTER_LOG_START: {
- /* write log header */
- const char *subject = NULL;
- char *fromstr;
- const CamelInternetAddress *from;
- char date[50];
- time_t t;
-
- /* FIXME: does this need locking? Probably */
-
- from = camel_mime_message_get_from (p->message);
- fromstr = camel_address_format((CamelAddress *)from);
- subject = camel_mime_message_get_subject (p->message);
-
- time (&t);
- strftime (date, 49, "%a, %d %b %Y %H:%M:%S", localtime (&t));
- fprintf (p->logfile, "Applied filter \"%s\" to message from %s - \"%s\" at %s\n",
- str, fromstr ? fromstr : "unknown", subject ? subject : "", date);
- g_free(fromstr);
- break;
- }
- case FILTER_LOG_ACTION:
- fprintf (p->logfile, "Action: %s\n", str);
- break;
- case FILTER_LOG_END:
- fprintf (p->logfile, "\n");
- break;
- default:
- /* nothing else is loggable */
- break;
- }
-
- g_free (str);
- }
-}
-
-
-/**
- * camel_filter_driver_filter_mbox:
- * @driver: CamelFilterDriver
- * @mbox: mbox filename to be filtered
- * @ex: exception
- *
- * Filters an mbox file based on rules defined in the FilterDriver
- * object. Is more efficient as it doesn't need to open the folder
- * through Camel directly.
- *
- * Returns -1 if errors were encountered during filtering,
- * otherwise returns 0.
- *
- **/
-int
-camel_filter_driver_filter_mbox (CamelFilterDriver *driver, const char *mbox, CamelException *ex)
-{
- struct _CamelFilterDriverPrivate *p = _PRIVATE (driver);
- CamelMimeParser *mp = NULL;
- char *source_url = NULL;
- int fd = -1;
- int i = 0;
- struct stat st;
- int status;
-
- fd = open (mbox, O_RDONLY);
- if (fd == -1) {
- camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM, _("Unable to open spool folder"));
- goto fail;
- }
- /* to get the filesize */
- fstat (fd, &st);
-
- mp = camel_mime_parser_new ();
- camel_mime_parser_scan_from (mp, TRUE);
- if (camel_mime_parser_init_with_fd (mp, fd) == -1) {
- camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM, _("Unable to process spool folder"));
- goto fail;
- }
- fd = -1;
-
- source_url = g_strdup_printf ("file://%s", mbox);
-
- while (camel_mime_parser_step (mp, 0, 0) == HSCAN_FROM) {
- CamelMimeMessage *msg;
- int pc = 0;
-
- if (st.st_size > 0)
- pc = (int)(100.0 * ((double)camel_mime_parser_tell (mp) / (double)st.st_size));
-
- report_status (driver, CAMEL_FILTER_STATUS_START, pc, _("Getting message %d (%d%%)"), i, pc);
-
- msg = camel_mime_message_new ();
- if (camel_mime_part_construct_from_parser (CAMEL_MIME_PART (msg), mp) == -1) {
- report_status (driver, CAMEL_FILTER_STATUS_END, 100, _("Failed message %d"), i);
- camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM, _("Cannot open message"));
- camel_object_unref (CAMEL_OBJECT (msg));
- goto fail;
- }
-
- status = camel_filter_driver_filter_message (driver, msg, NULL, NULL, NULL, source_url, ex);
- camel_object_unref (CAMEL_OBJECT (msg));
- if (camel_exception_is_set (ex) || status == -1) {
- report_status (driver, CAMEL_FILTER_STATUS_END, 100, _("Failed message %d"), i);
- goto fail;
- }
-
- i++;
-
- /* skip over the FROM_END state */
- camel_mime_parser_step (mp, 0, 0);
- }
-
- if (p->defaultfolder) {
- report_status(driver, CAMEL_FILTER_STATUS_PROGRESS, 100, _("Syncing folder"));
- camel_folder_sync(p->defaultfolder, FALSE, ex);
- }
-
- report_status (driver, CAMEL_FILTER_STATUS_END, 100, _("Complete"));
-
- return 0;
-
-fail:
- g_free (source_url);
- if (fd != -1)
- close (fd);
- if (mp)
- camel_object_unref (CAMEL_OBJECT (mp));
-
- return -1;
-}
-
-
-/**
- * camel_filter_driver_filter_folder:
- * @driver: CamelFilterDriver
- * @folder: CamelFolder to be filtered
- * @uids: message uids to be filtered or NULL (as a shortcut to filter all messages)
- * @remove: TRUE to mark filtered messages as deleted
- * @ex: exception
- *
- * Filters a folder based on rules defined in the FilterDriver
- * object.
- *
- * Returns -1 if errors were encountered during filtering,
- * otherwise returns 0.
- *
- **/
-int
-camel_filter_driver_filter_folder (CamelFilterDriver *driver, CamelFolder *folder,
- GPtrArray *uids, gboolean remove, CamelException *ex)
-{
- struct _CamelFilterDriverPrivate *p = _PRIVATE (driver);
- int i;
- int freeuids = FALSE;
- CamelMimeMessage *message;
- CamelMessageInfo *info;
- char *source_url, *service_url;
- int status = 0;
-
- service_url = camel_service_get_url (CAMEL_SERVICE (camel_folder_get_parent_store (folder)));
- source_url = g_strdup_printf ("%s%s", service_url, camel_folder_get_full_name (folder));
- g_free (service_url);
-
- if (uids == NULL) {
- uids = camel_folder_get_uids (folder);
- freeuids = TRUE;
- }
-
- for (i = 0; i < uids->len; i++) {
- int pc = (100 * i)/uids->len;
-
- report_status (driver, CAMEL_FILTER_STATUS_START, pc, _("Getting message %d of %d"), i+1,
- uids->len);
-
- message = camel_folder_get_message (folder, uids->pdata[i], ex);
- if (!message || camel_exception_is_set (ex)) {
- report_status (driver, CAMEL_FILTER_STATUS_END, 100, _("Failed at message %d of %d"),
- i+1, uids->len);
- status = -1;
- break;
- }
-
- if (camel_folder_has_summary_capability (folder))
- info = camel_folder_get_message_info (folder, uids->pdata[i]);
- else
- info = NULL;
-
- status = camel_filter_driver_filter_message (driver, message, info, uids->pdata[i],
- folder, source_url, ex);
-
- if (camel_folder_has_summary_capability (folder))
- camel_folder_free_message_info (folder, info);
-
- if (camel_exception_is_set (ex) || status == -1) {
- report_status (driver, CAMEL_FILTER_STATUS_END, 100, _("Failed at message %d of %d"),
- i+1, uids->len);
- status = -1;
- break;
- }
-
- if (remove)
- camel_folder_set_message_flags (folder, uids->pdata[i],
- CAMEL_MESSAGE_DELETED|CAMEL_MESSAGE_SEEN, CAMEL_MESSAGE_DELETED|CAMEL_MESSAGE_SEEN);
-
- camel_object_unref (CAMEL_OBJECT (message));
- }
-
- if (freeuids)
- camel_folder_free_uids (folder, uids);
-
- if (p->defaultfolder) {
- report_status(driver, CAMEL_FILTER_STATUS_PROGRESS, 100, _("Syncing folder"));
- camel_folder_sync (p->defaultfolder, FALSE, ex);
- }
-
- if (i == uids->len)
- report_status (driver, CAMEL_FILTER_STATUS_END, 100, _("Complete"));
-
- g_free (source_url);
-
- return status;
-}
-
-
-/**
- * camel_filter_driver_filter_message:
- * @driver: CamelFilterDriver
- * @message: message to filter
- * @info: message info or NULL
- * @uid: message uid or NULL
- * @source: source folder or NULL
- * @source_url: url of source folder or NULL
- * @ex: exception
- *
- * Filters a message based on rules defined in the FilterDriver
- * object. If the source folder (@source) and the uid (@uid) are
- * provided, the filter will operate on the CamelFolder (which in
- * certain cases is more efficient than using the default
- * camel_folder_append_message() function).
- *
- * Returns -1 if errors were encountered during filtering,
- * otherwise returns 0.
- *
- **/
-int
-camel_filter_driver_filter_message (CamelFilterDriver *driver, CamelMimeMessage *message,
- CamelMessageInfo *info, const char *uid,
- CamelFolder *source, const char *source_url,
- CamelException *ex)
-{
- struct _CamelFilterDriverPrivate *p = _PRIVATE (driver);
- ESExpResult *r;
- struct _filter_rule *node;
- gboolean freeinfo = FALSE;
- gboolean filtered = FALSE;
-
- if (info == NULL) {
- struct _header_raw *h = CAMEL_MIME_PART (message)->headers;
-
- info = camel_message_info_new_from_header (h);
- freeinfo = TRUE;
- } else {
- if (info->flags & CAMEL_MESSAGE_DELETED)
- return 0;
- }
-
- p->ex = ex;
- p->terminated = FALSE;
- p->deleted = FALSE;
- p->copied = FALSE;
- p->message = message;
- p->info = info;
- p->uid = uid;
- p->source = source;
-
- if (camel_mime_message_get_source (message) == NULL)
- camel_mime_message_set_source (message, source_url);
-
- node = (struct _filter_rule *)p->rules.head;
- while (node->next) {
- d(fprintf (stderr, "applying rule %s\n action %s\n", node->match, node->action));
-
- if (camel_filter_search_match(p->message, p->info, source_url, node->match, p->ex)) {
- filtered = TRUE;
- camel_filter_driver_log (driver, FILTER_LOG_START, node->name);
-
- /* perform necessary filtering actions */
- e_sexp_input_text (p->eval, node->action, strlen (node->action));
- if (e_sexp_parse (p->eval) == -1) {
- camel_exception_setv(ex, 1, _("Error parsing filter: %s: %s"), e_sexp_error(p->eval), node->action);
- goto error;
- }
- r = e_sexp_eval (p->eval);
- if (r == NULL) {
- camel_exception_setv(ex, 1, _("Error executing filter: %s: %s"), e_sexp_error(p->eval), node->action);
- goto error;
- }
- e_sexp_result_free (p->eval, r);
- if (p->terminated)
- break;
- }
- node = node->next;
- }
-
- /* *Now* we can set the DELETED flag... */
- if (p->deleted)
- info->flags = info->flags | CAMEL_MESSAGE_DELETED | CAMEL_MESSAGE_FOLDER_FLAGGED | CAMEL_MESSAGE_SEEN;
-
- /* Logic: if !Moved and there exists a default folder... */
- if (!(p->copied && p->deleted) && p->defaultfolder) {
- /* copy it to the default inbox */
- filtered = TRUE;
- camel_filter_driver_log (driver, FILTER_LOG_ACTION, "Copy to default folder");
- if (p->uid && p->source && camel_folder_has_summary_capability (p->source)) {
- GPtrArray *uids;
-
- uids = g_ptr_array_new ();
- g_ptr_array_add (uids, (char *) p->uid);
- camel_folder_copy_messages_to (p->source, uids, p->defaultfolder, p->ex);
- g_ptr_array_free (uids, TRUE);
- } else
- camel_folder_append_message (p->defaultfolder, p->message, p->info, p->ex);
- }
-
- if (freeinfo)
- camel_message_info_free (info);
- return 0;
-
-error:
- if (filtered)
- camel_filter_driver_log (driver, FILTER_LOG_END, NULL);
-
- if (freeinfo)
- camel_message_info_free (info);
-
- return -1;
-}
diff --git a/camel/camel-filter-driver.h b/camel/camel-filter-driver.h
deleted file mode 100644
index 94cc54820b..0000000000
--- a/camel/camel-filter-driver.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- * Jeffrey Stedfast <fejj@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef _CAMEL_FILTER_DRIVER_H
-#define _CAMEL_FILTER_DRIVER_H
-
-#include <glib.h>
-#include <camel/camel-object.h>
-#include <camel/camel-session.h>
-#include <camel/camel-folder.h>
-
-#define CAMEL_FILTER_DRIVER_TYPE (camel_filter_driver_get_type())
-#define CAMEL_FILTER_DRIVER(obj) CAMEL_CHECK_CAST (obj, camel_filter_driver_get_type (), CamelFilterDriver)
-#define CAMEL_FILTER_DRIVER_CLASS(klass) CAMEL__CHECK_CLASS_CAST (klass, camel_filter_driver_get_type (), CamelFilterDriverClass)
-#define CAMEL_IS_FILTER_DRIVER(obj) CAMEL_CHECK_TYPE (obj, camel_filter_driver_get_type ())
-
-typedef struct _CamelFilterDriver CamelFilterDriver;
-typedef struct _CamelFilterDriverClass CamelFilterDriverClass;
-
-struct _CamelFilterDriver {
- CamelObject parent;
-
- struct _CamelFilterDriverPrivate *priv;
-};
-
-struct _CamelFilterDriverClass {
- CamelObjectClass parent_class;
-};
-
-/* FIXME: this maybe should change... */
-/* type of status for a status report */
-enum camel_filter_status_t {
- CAMEL_FILTER_STATUS_NONE,
- CAMEL_FILTER_STATUS_START, /* start of new message processed */
- CAMEL_FILTER_STATUS_ACTION, /* an action performed */
- CAMEL_FILTER_STATUS_PROGRESS, /* (an) extra update(s), if its taking longer to process */
- CAMEL_FILTER_STATUS_END, /* end of message */
-};
-
-typedef CamelFolder * (*CamelFilterGetFolderFunc) (CamelFilterDriver *, const char *uri, void *data, CamelException *ex);
-/* report status */
-typedef void (CamelFilterStatusFunc)(CamelFilterDriver *driver, enum camel_filter_status_t status, int pc, const char *desc, void *data);
-
-guint camel_filter_driver_get_type (void);
-CamelFilterDriver *camel_filter_driver_new (CamelFilterGetFolderFunc fetcher, void *data);
-
-/* modifiers */
-void camel_filter_driver_set_logfile (CamelFilterDriver *d, FILE *logfile);
-void camel_filter_driver_set_status_func (CamelFilterDriver *d, CamelFilterStatusFunc *func,
- void *data);
-void camel_filter_driver_set_default_folder (CamelFilterDriver *d, CamelFolder *def);
-void camel_filter_driver_add_rule (CamelFilterDriver *d, const char *name, const char *match,
- const char *action);
-
-/*void camel_filter_driver_set_global(CamelFilterDriver *, const char *name, const char *value);*/
-
-int camel_filter_driver_filter_message (CamelFilterDriver *driver, CamelMimeMessage *message,
- CamelMessageInfo *info, const char *uri,
- CamelFolder *source, const char *source_url,
- CamelException *ex);
-int camel_filter_driver_filter_mbox (CamelFilterDriver *driver, const char *mbox,
- CamelException *ex);
-int camel_filter_driver_filter_folder (CamelFilterDriver *driver, CamelFolder *folder,
- GPtrArray *uids, gboolean remove, CamelException *ex);
-
-#if 0
-/* generate the search query/action string for a filter option */
-void camel_filter_driver_expand_option (CamelFilterDriver *d, GString *s, GString *action, struct filter_option *op);
-
-/* get info about rules (options) */
-int camel_filter_driver_rule_count (CamelFilterDriver *d);
-struct filter_option *camel_filter_driver_rule_get (CamelFilterDriver *d, int n);
-#endif
-
-#endif /* ! _CAMEL_FILTER_DRIVER_H */
diff --git a/camel/camel-filter-search.c b/camel/camel-filter-search.c
deleted file mode 100644
index 78f4ee7b4c..0000000000
--- a/camel/camel-filter-search.c
+++ /dev/null
@@ -1,465 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@helixcode.com>
- * Michael Zucchi <NotZed@Ximian.com>
- *
- * Copyright 2000 Helix Code, Inc. (www.helixcode.com)
- * Copyright 2001 Ximian Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-/* (from glibc headers:
- POSIX says that <sys/types.h> must be included (by the caller) before <regex.h>. */
-
-#include <sys/types.h>
-#include <regex.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "e-util/e-sexp.h"
-#include "e-util/e-url.h"
-
-#include "camel-mime-message.h"
-#include "camel-filter-search.h"
-#include "camel-exception.h"
-#include "camel-multipart.h"
-#include "camel-stream-mem.h"
-#include "camel-search-private.h"
-
-#define d(x)
-
-typedef struct {
- CamelMimeMessage *message;
- CamelMessageInfo *info;
- const char *source;
- CamelException *ex;
-} FilterMessageSearch;
-
-/* ESExp callbacks */
-static ESExpResult *header_contains (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms);
-static ESExpResult *header_matches (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms);
-static ESExpResult *header_starts_with (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms);
-static ESExpResult *header_ends_with (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms);
-static ESExpResult *header_exists (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms);
-static ESExpResult *header_soundex (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms);
-static ESExpResult *header_regex (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms);
-static ESExpResult *header_full_regex (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms);
-static ESExpResult *match_all (struct _ESExp *f, int argc, struct _ESExpTerm **argv, FilterMessageSearch *fms);
-static ESExpResult *body_contains (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms);
-static ESExpResult *body_regex (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms);
-static ESExpResult *user_flag (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms);
-static ESExpResult *user_tag (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms);
-static ESExpResult *system_flag (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms);
-static ESExpResult *get_sent_date (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms);
-static ESExpResult *get_received_date (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms);
-static ESExpResult *get_current_date (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms);
-static ESExpResult *get_score (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms);
-static ESExpResult *get_source (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms);
-
-/* builtin functions */
-static struct {
- char *name;
- ESExpFunc *func;
- int type; /* set to 1 if a function can perform shortcut evaluation, or
- doesn't execute everything, 0 otherwise */
-} symbols[] = {
- { "match-all", (ESExpFunc *) match_all, 1 },
- { "body-contains", (ESExpFunc *) body_contains, 0 },
- { "body-regex", (ESExpFunc *) body_regex, 0 },
- { "header-contains", (ESExpFunc *) header_contains, 0 },
- { "header-matches", (ESExpFunc *) header_matches, 0 },
- { "header-starts-with", (ESExpFunc *) header_starts_with, 0 },
- { "header-ends-with", (ESExpFunc *) header_ends_with, 0 },
- { "header-exists", (ESExpFunc *) header_exists, 0 },
- { "header-soundex", (ESExpFunc *) header_soundex, 0 },
- { "header-regex", (ESExpFunc *) header_regex, 0 },
- { "header-full-regex", (ESExpFunc *) header_full_regex, 0 },
- { "user-tag", (ESExpFunc *) user_tag, 0 },
- { "user-flag", (ESExpFunc *) user_flag, 0 },
- { "system-flag", (ESExpFunc *) system_flag, 0 },
- { "get-sent-date", (ESExpFunc *) get_sent_date, 0 },
- { "get-received-date", (ESExpFunc *) get_received_date, 0 },
- { "get-current-date", (ESExpFunc *) get_current_date, 0 },
- { "get-score", (ESExpFunc *) get_score, 0 },
- { "get-source", (ESExpFunc *) get_source, 0 },
-};
-
-static ESExpResult *
-check_header(struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms, camel_search_match_t how)
-{
- gboolean matched = FALSE;
- ESExpResult *r;
- int i;
-
- if (argc > 1 && argv[0]->type == ESEXP_RES_STRING) {
- char *name = argv[0]->value.string;
- const char *header;
-
- if (strcasecmp(name, "x-camel-mlist") == 0)
- header = camel_message_info_mlist(fms->info);
- else
- header = camel_medium_get_header (CAMEL_MEDIUM (fms->message), argv[0]->value.string);
-
- if (header) {
- for (i=1;i<argc && !matched;i++) {
- if (argv[i]->type == ESEXP_RES_STRING
- && camel_search_header_match(header, argv[i]->value.string, how)) {
- matched = TRUE;
- break;
- }
- }
- }
- }
-
- r = e_sexp_result_new(f, ESEXP_RES_BOOL);
- r->value.bool = matched;
-
- return r;
-}
-
-static ESExpResult *
-header_contains (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms)
-{
- return check_header(f, argc, argv, fms, CAMEL_SEARCH_MATCH_CONTAINS);
-}
-
-
-static ESExpResult *
-header_matches (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms)
-{
- return check_header(f, argc, argv, fms, CAMEL_SEARCH_MATCH_EXACT);
-}
-
-static ESExpResult *
-header_starts_with (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms)
-{
- return check_header(f, argc, argv, fms, CAMEL_SEARCH_MATCH_STARTS);
-}
-
-static ESExpResult *
-header_ends_with (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms)
-{
- return check_header(f, argc, argv, fms, CAMEL_SEARCH_MATCH_ENDS);
-}
-
-static ESExpResult *
-header_soundex (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms)
-{
- return check_header(f, argc, argv, fms, CAMEL_SEARCH_MATCH_SOUNDEX);
-}
-
-static ESExpResult *
-header_exists (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms)
-{
- gboolean matched = FALSE;
- ESExpResult *r;
- int i;
-
- for (i=0;i<argc && !matched;i++) {
- if (argv[i]->type == ESEXP_RES_STRING)
- matched = camel_medium_get_header (CAMEL_MEDIUM (fms->message), argv[i]->value.string) != NULL;
- }
-
- r = e_sexp_result_new(f, ESEXP_RES_BOOL);
- r->value.bool = matched;
-
- return r;
-}
-
-static ESExpResult *
-header_regex (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms)
-{
- ESExpResult *r = e_sexp_result_new(f, ESEXP_RES_BOOL);
- regex_t pattern;
- const char *contents;
-
- if (argc>1
- && argv[0]->type == ESEXP_RES_STRING
- && (contents = camel_medium_get_header (CAMEL_MEDIUM (fms->message), argv[0]->value.string))
- && camel_search_build_match_regex(&pattern, CAMEL_SEARCH_MATCH_REGEX|CAMEL_SEARCH_MATCH_ICASE, argc-1, argv+1, fms->ex) == 0) {
- r->value.bool = regexec(&pattern, contents, 0, NULL, 0) == 0;
- regfree(&pattern);
- } else
- r->value.bool = FALSE;
-
- return r;
-}
-
-static gchar *
-get_full_header (CamelMimeMessage *message)
-{
- CamelMimePart *mp = CAMEL_MIME_PART (message);
- GString *str = g_string_new ("");
- char *ret;
- struct _header_raw *h;
-
- for (h = mp->headers; h; h = h->next) {
- if (h->value != NULL) {
- g_string_append(str, h->name);
- if (isspace(h->value[0]))
- g_string_append(str, ":");
- else
- g_string_append(str, ": ");
- g_string_append(str, h->value);
- }
- }
-
- ret = str->str;
- g_string_free (str, FALSE);
-
- return ret;
-}
-
-static ESExpResult *
-header_full_regex (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms)
-{
- ESExpResult *r = e_sexp_result_new(f, ESEXP_RES_BOOL);
- regex_t pattern;
- char *contents;
-
- if (camel_search_build_match_regex(&pattern, CAMEL_SEARCH_MATCH_REGEX|CAMEL_SEARCH_MATCH_ICASE, argc-1, argv+1, fms->ex) == 0) {
- contents = get_full_header (fms->message);
- r->value.bool = regexec(&pattern, contents, 0, NULL, 0) == 0;
- g_free(contents);
- regfree(&pattern);
- } else
- r->value.bool = FALSE;
-
- return r;
-}
-
-static ESExpResult *
-match_all (struct _ESExp *f, int argc, struct _ESExpTerm **argv, FilterMessageSearch *fms)
-{
- /* match-all: when dealing with single messages is a no-op */
- ESExpResult *r;
-
- if (argc > 0)
- return e_sexp_term_eval(f, argv[0]);
-
- r = e_sexp_result_new(f, ESEXP_RES_BOOL);
- r->value.bool = FALSE;
-
- return r;
-}
-
-static ESExpResult *
-body_contains (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms)
-{
- ESExpResult *r = e_sexp_result_new(f, ESEXP_RES_BOOL);
- regex_t pattern;
-
- if (camel_search_build_match_regex(&pattern, CAMEL_SEARCH_MATCH_ICASE, argc, argv, fms->ex) == 0) {
- r->value.bool = camel_search_message_body_contains((CamelDataWrapper *)fms->message, &pattern);
- regfree(&pattern);
- } else
- r->value.bool = FALSE;
-
- return r;
-}
-
-static ESExpResult *
-body_regex (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms)
-{
- ESExpResult *r = e_sexp_result_new(f, ESEXP_RES_BOOL);
- regex_t pattern;
-
- if (camel_search_build_match_regex(&pattern, CAMEL_SEARCH_MATCH_ICASE|CAMEL_SEARCH_MATCH_REGEX, argc, argv, fms->ex) == 0) {
- r->value.bool = camel_search_message_body_contains((CamelDataWrapper *)fms->message, &pattern);
- regfree(&pattern);
- } else
- r->value.bool = FALSE;
-
- return r;
-}
-
-static ESExpResult *
-user_flag (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms)
-{
- ESExpResult *r;
- gboolean truth = FALSE;
- int i;
-
- /* performs an OR of all words */
- for (i = 0; i < argc && !truth; i++) {
- if (argv[i]->type == ESEXP_RES_STRING
- && camel_flag_get (&fms->info->user_flags, argv[i]->value.string)) {
- truth = TRUE;
- break;
- }
- }
-
- r = e_sexp_result_new(f, ESEXP_RES_BOOL);
- r->value.bool = truth;
-
- return r;
-}
-
-static ESExpResult *
-system_flag (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms)
-{
- ESExpResult *r;
- gboolean truth = FALSE;
-
- if (argc == 1)
- truth = camel_system_flag_get (fms->info->flags, argv[0]->value.string);
-
- r = e_sexp_result_new(f, ESEXP_RES_BOOL);
- r->value.bool = truth;
-
- return r;
-}
-
-static ESExpResult *
-user_tag (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms)
-{
- ESExpResult *r;
- const char *tag;
-
- tag = camel_tag_get (&fms->info->user_tags, argv[0]->value.string);
-
- r = e_sexp_result_new(f, ESEXP_RES_STRING);
- r->value.string = g_strdup (tag ? tag : "");
-
- return r;
-}
-
-static ESExpResult *
-get_sent_date (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms)
-{
- ESExpResult *r;
-
- r = e_sexp_result_new(f, ESEXP_RES_INT);
- r->value.number = camel_mime_message_get_date(fms->message, NULL);
-
- return r;
-}
-
-static ESExpResult *
-get_received_date (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms)
-{
- ESExpResult *r;
-
- r = e_sexp_result_new(f, ESEXP_RES_INT);
- r->value.number = camel_mime_message_get_date_received(fms->message, NULL);
-
- return r;
-}
-
-static ESExpResult *
-get_current_date (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms)
-{
- ESExpResult *r;
-
- r = e_sexp_result_new(f, ESEXP_RES_INT);
- r->value.number = time (NULL);
-
- return r;
-}
-
-static ESExpResult *
-get_score (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms)
-{
- ESExpResult *r;
- const char *tag;
-
- tag = camel_tag_get (&fms->info->user_tags, "score");
-
- r = e_sexp_result_new(f, ESEXP_RES_INT);
- if (tag)
- r->value.number = atoi (tag);
- else
- r->value.number = 0;
-
- return r;
-}
-
-static ESExpResult *
-get_source (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMessageSearch *fms)
-{
- ESExpResult *r;
-
- r = e_sexp_result_new(f, ESEXP_RES_STRING);
- if (fms->source) {
- r->value.string = e_url_shroud (fms->source);
- } else {
- r->value.string = camel_mime_message_get_source (fms->message);
- }
-
- g_message ("got source: [%s]", r->value.string);
-
- return r;
-}
-
-gboolean
-camel_filter_search_match(CamelMimeMessage *message, CamelMessageInfo *info,
- const char *source, const char *expression, CamelException *ex)
-{
- FilterMessageSearch fms;
- ESExp *sexp;
- ESExpResult *result;
- gboolean retval;
- int i;
-
- fms.message = message;
- fms.info = info;
- fms.source = source;
- fms.ex = ex;
-
- sexp = e_sexp_new ();
-
- for (i = 0; i < sizeof (symbols) / sizeof (symbols[0]); i++) {
- if (symbols[i].type == 1)
- e_sexp_add_ifunction (sexp, 0, symbols[i].name, (ESExpIFunc *)symbols[i].func, &fms);
- else
- e_sexp_add_function (sexp, 0, symbols[i].name, symbols[i].func, &fms);
- }
-
- e_sexp_input_text (sexp, expression, strlen (expression));
- if (e_sexp_parse (sexp) == -1) {
- if (!camel_exception_is_set(ex))
- camel_exception_setv(ex, 1, _("Error executing filter search: %s: %s"), e_sexp_error(sexp), expression);
- goto error;
- }
- result = e_sexp_eval (sexp);
- if (result == NULL) {
- if (!camel_exception_is_set(ex))
- camel_exception_setv(ex, 1, _("Error executing filter search: %s: %s"), e_sexp_error(sexp), expression);
- goto error;
- }
-
- if (result->type == ESEXP_RES_BOOL)
- retval = result->value.bool;
- else
- retval = FALSE;
-
- e_sexp_result_free (sexp, result);
- e_sexp_unref(sexp);
-
- return retval;
-
-error:
- e_sexp_unref(sexp);
- return FALSE;
-}
-
-
-
diff --git a/camel/camel-filter-search.h b/camel/camel-filter-search.h
deleted file mode 100644
index 0dba92eb2d..0000000000
--- a/camel/camel-filter-search.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@helixcode.com>
- * Michael Zucchi <NotZed@Ximian.com>
- *
- * Copyright 2000 Helix Code, Inc. (www.helixcode.com)
- * Copyright 2001 Ximian Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef CAMEL_FILTER_SEARCH_H
-#define CAMEL_FILTER_SEARCH_H
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-#include <glib.h>
-#include <camel/camel-mime-message.h>
-#include <camel/camel-folder-summary.h>
-
-gboolean camel_filter_search_match(CamelMimeMessage *message, CamelMessageInfo *info,
- const char *source, const char *expression, CamelException *ex);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* ! CAMEL_FILTER_SEARCH_H */
diff --git a/camel/camel-folder-search.c b/camel/camel-folder-search.c
deleted file mode 100644
index 18f49868ac..0000000000
--- a/camel/camel-folder-search.c
+++ /dev/null
@@ -1,905 +0,0 @@
-/*
- * Copyright (C) 2000,2001 Ximian Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/* This is a helper class for folders to implement the search function.
- It implements enough to do basic searches on folders that can provide
- an in-memory summary and a body index. */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <sys/types.h>
-#include <regex.h>
-
-#include <glib.h>
-
-#include "camel-folder-search.h"
-#include "string-utils.h"
-
-#include "camel-exception.h"
-#include "camel-medium.h"
-#include "camel-multipart.h"
-#include "camel-mime-message.h"
-#include "camel-stream-mem.h"
-#include "e-util/e-memory.h"
-#include "camel-search-private.h"
-
-#define d(x)
-#define r(x)
-
-struct _CamelFolderSearchPrivate {
- GHashTable *mempool_hash;
- CamelException *ex;
-};
-
-#define _PRIVATE(o) (((CamelFolderSearch *)(o))->priv)
-
-static ESExpResult *search_header_contains(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *search);
-static ESExpResult *search_header_matches(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *search);
-static ESExpResult *search_header_starts_with(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *search);
-static ESExpResult *search_header_ends_with(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *search);
-static ESExpResult *search_header_exists(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *search);
-static ESExpResult *search_match_all(struct _ESExp *f, int argc, struct _ESExpTerm **argv, CamelFolderSearch *search);
-static ESExpResult *search_body_contains(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *search);
-static ESExpResult *search_user_flag(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s);
-static ESExpResult *search_user_tag(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s);
-static ESExpResult *search_system_flag(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s);
-static ESExpResult *search_get_sent_date(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s);
-static ESExpResult *search_get_received_date(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s);
-static ESExpResult *search_get_current_date(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s);
-static ESExpResult *search_uid(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s);
-
-static ESExpResult *search_dummy(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *search);
-
-static void camel_folder_search_class_init (CamelFolderSearchClass *klass);
-static void camel_folder_search_init (CamelFolderSearch *obj);
-static void camel_folder_search_finalize (CamelObject *obj);
-
-static CamelObjectClass *camel_folder_search_parent;
-
-static void
-camel_folder_search_class_init (CamelFolderSearchClass *klass)
-{
- camel_folder_search_parent = camel_type_get_global_classfuncs (camel_object_get_type ());
-
- klass->match_all = search_match_all;
- klass->body_contains = search_body_contains;
- klass->header_contains = search_header_contains;
- klass->header_matches = search_header_matches;
- klass->header_starts_with = search_header_starts_with;
- klass->header_ends_with = search_header_ends_with;
- klass->header_exists = search_header_exists;
- klass->user_tag = search_user_tag;
- klass->user_flag = search_user_flag;
- klass->system_flag = search_system_flag;
- klass->get_sent_date = search_get_sent_date;
- klass->get_received_date = search_get_received_date;
- klass->get_current_date = search_get_current_date;
- klass->uid = search_uid;
-}
-
-static void
-camel_folder_search_init (CamelFolderSearch *obj)
-{
- struct _CamelFolderSearchPrivate *p;
-
- p = _PRIVATE(obj) = g_malloc0(sizeof(*p));
-
- obj->sexp = e_sexp_new();
-
- /* use a hash of mempools to associate the returned uid lists with
- the backing mempool. yes pretty weird, but i didn't want to change
- the api just yet */
-
- p->mempool_hash = g_hash_table_new(0, 0);
-}
-
-static void
-free_mempool(void *key, void *value, void *data)
-{
- GPtrArray *uids = key;
- EMemPool *pool = value;
-
- g_warning("Search closed with outstanding result unfreed: %p", uids);
-
- g_ptr_array_free(uids, TRUE);
- e_mempool_destroy(pool);
-}
-
-static void
-camel_folder_search_finalize (CamelObject *obj)
-{
- CamelFolderSearch *search = (CamelFolderSearch *)obj;
- struct _CamelFolderSearchPrivate *p = _PRIVATE(obj);
-
- if (search->sexp)
- e_sexp_unref(search->sexp);
-
- g_free(search->last_search);
- g_hash_table_foreach(p->mempool_hash, free_mempool, obj);
- g_hash_table_destroy(p->mempool_hash);
- g_free(p);
-}
-
-CamelType
-camel_folder_search_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_object_get_type (), "CamelFolderSearch",
- sizeof (CamelFolderSearch),
- sizeof (CamelFolderSearchClass),
- (CamelObjectClassInitFunc) camel_folder_search_class_init,
- NULL,
- (CamelObjectInitFunc) camel_folder_search_init,
- (CamelObjectFinalizeFunc) camel_folder_search_finalize);
- }
-
- return type;
-}
-
-#ifdef offsetof
-#define CAMEL_STRUCT_OFFSET(type, field) ((gint) offsetof (type, field))
-#else
-#define CAMEL_STRUCT_OFFSET(type, field) ((gint) ((gchar*) &((type *) 0)->field))
-#endif
-
-struct {
- char *name;
- int offset;
- int flags; /* 0x02 = immediate, 0x01 = always enter */
-} builtins[] = {
- /* these have default implementations in e-sexp */
- { "and", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, and), 2 },
- { "or", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, or), 2 },
- { "not", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, not), 2 },
- { "<", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, lt), 2 },
- { ">", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, gt), 2 },
- { "=", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, eq), 2 },
-
- /* these we have to use our own default if there is none */
- /* they should all be defined in the language? so it poarses, or should they not?? */
- { "match-all", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, match_all), 3 },
- { "body-contains", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, body_contains), 1 },
- { "header-contains", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, header_contains), 1 },
- { "header-matches", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, header_matches), 1 },
- { "header-starts-with", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, header_starts_with), 1 },
- { "header-ends-with", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, header_ends_with), 1 },
- { "header-exists", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, header_exists), 1 },
- { "user-tag", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, user_tag), 1 },
- { "user-flag", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, user_flag), 1 },
- { "system-flag", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, system_flag), 1 },
- { "get-sent-date", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, get_sent_date), 1 },
- { "get-received-date", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, get_received_date), 1 },
- { "get-current-date", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, get_current_date), 1 },
- { "uid", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, uid), 1 },
-};
-
-void
-camel_folder_search_construct (CamelFolderSearch *search)
-{
- int i;
- CamelFolderSearchClass *klass = (CamelFolderSearchClass *)CAMEL_OBJECT_GET_CLASS(search);
-
- for (i=0;i<sizeof(builtins)/sizeof(builtins[0]);i++) {
- void *func;
- /* c is sure messy sometimes */
- func = *((void **)(((char *)klass)+builtins[i].offset));
- if (func == NULL && builtins[i].flags&1) {
- g_warning("Search class doesn't implement '%s' method: %s", builtins[i].name, camel_type_to_name(CAMEL_OBJECT_GET_CLASS(search)->s.type));
- func = (void *)search_dummy;
- }
- if (func != NULL) {
- if (builtins[i].flags&2) {
- e_sexp_add_ifunction(search->sexp, 0, builtins[i].name, (ESExpIFunc *)func, search);
- } else {
- e_sexp_add_function(search->sexp, 0, builtins[i].name, (ESExpFunc *)func, search);
- }
- }
- }
-}
-
-/**
- * camel_folder_search_new:
- *
- * Create a new CamelFolderSearch object.
- *
- * A CamelFolderSearch is a subclassable, extensible s-exp
- * evaluator which enforces a particular set of s-expressions.
- * Particular methods may be overriden by an implementation to
- * implement a search for any sort of backend.
- *
- * Return value: A new CamelFolderSearch widget.
- **/
-CamelFolderSearch *
-camel_folder_search_new (void)
-{
- CamelFolderSearch *new = CAMEL_FOLDER_SEARCH ( camel_object_new (camel_folder_search_get_type ()));
-
- camel_folder_search_construct(new);
- return new;
-}
-
-/**
- * camel_folder_search_set_folder:
- * @search:
- * @folder: A folder.
- *
- * Set the folder attribute of the search. This is currently unused, but
- * could be used to perform a slow-search when indexes and so forth are not
- * available. Or for use by subclasses.
- **/
-void
-camel_folder_search_set_folder(CamelFolderSearch *search, CamelFolder *folder)
-{
- search->folder = folder;
-}
-
-/**
- * camel_folder_search_set_summary:
- * @search:
- * @summary: An array of CamelMessageInfo pointers.
- *
- * Set the array of summary objects representing the span of the search.
- *
- * If this is not set, then a subclass must provide the functions
- * for searching headers and for the match-all operator.
- **/
-void
-camel_folder_search_set_summary(CamelFolderSearch *search, GPtrArray *summary)
-{
- search->summary = summary;
-}
-
-/**
- * camel_folder_search_set_body_index:
- * @search:
- * @index:
- *
- * Set the index (ibex) representing the contents of all messages
- * in this folder. If this is not set, then the folder implementation
- * should sub-class the CamelFolderSearch and provide its own
- * body-contains function.
- **/
-void
-camel_folder_search_set_body_index(CamelFolderSearch *search, ibex *index)
-{
- search->body_index = index;
-}
-
-/**
- * camel_folder_search_execute_expression:
- * @search:
- * @expr:
- * @ex:
- *
- * Execute the search expression @expr, returning an array of
- * all matches as a GPtrArray of uid's of matching messages.
- *
- * Note that any settings such as set_body_index(), set_folder(),
- * and so on are reset to #NULL once the search has completed.
- *
- * TODO: The interface should probably return summary items instead
- * (since they are much more useful to any client).
- *
- * Return value: A GPtrArray of strings of all matching messages.
- * This must only be freed by camel_folder_search_free_result.
- **/
-GPtrArray *
-camel_folder_search_execute_expression(CamelFolderSearch *search, const char *expr, CamelException *ex)
-{
- ESExpResult *r;
- GPtrArray *matches;
- int i;
- GHashTable *results;
- EMemPool *pool;
- struct _CamelFolderSearchPrivate *p = _PRIVATE(search);
-
- p->ex = ex;
-
- /* only re-parse if the search has changed */
- if (search->last_search == NULL
- || strcmp(search->last_search, expr)) {
- e_sexp_input_text(search->sexp, expr, strlen(expr));
- if (e_sexp_parse(search->sexp) == -1) {
- camel_exception_setv(ex, 1, _("Cannot parse search expression: %s:\n%s"), e_sexp_error(search->sexp), expr);
- return NULL;
- }
-
- g_free(search->last_search);
- search->last_search = g_strdup(expr);
- }
- r = e_sexp_eval(search->sexp);
- if (r == NULL) {
- if (!camel_exception_is_set(ex))
- camel_exception_setv(ex, 1, _("Error executing search expression: %s:\n%s"), e_sexp_error(search->sexp), expr);
- return NULL;
- }
-
- matches = g_ptr_array_new();
-
- /* now create a folder summary to return?? */
- if (r
- && r->type == ESEXP_RES_ARRAY_PTR) {
- d(printf("got result ...\n"));
- /* we use a mempool to store the strings, packed in tight as possible, and freed together */
- /* because the strings are often short (like <8 bytes long), we would be wasting appx 50%
- of memory just storing the size tag that malloc assigns us and alignment padding, so this
- gets around that (and is faster to allocate and free as a bonus) */
- pool = e_mempool_new(512, 256, E_MEMPOOL_ALIGN_BYTE);
- if (search->summary) {
- /* reorder result in summary order */
- results = g_hash_table_new(g_str_hash, g_str_equal);
- for (i=0;i<r->value.ptrarray->len;i++) {
- d(printf("adding match: %s\n", (char *)g_ptr_array_index(r->value.ptrarray, i)));
- g_hash_table_insert(results, g_ptr_array_index(r->value.ptrarray, i), (void *)1);
- }
- for (i=0;i<search->summary->len;i++) {
- CamelMessageInfo *info = g_ptr_array_index(search->summary, i);
- char *uid = (char *)camel_message_info_uid(info);
- if (g_hash_table_lookup(results, uid)) {
- g_ptr_array_add(matches, e_mempool_strdup(pool, uid));
- }
- }
- g_hash_table_destroy(results);
- } else {
- for (i=0;i<r->value.ptrarray->len;i++) {
- d(printf("adding match: %s\n", (char *)g_ptr_array_index(r->value.ptrarray, i)));
- g_ptr_array_add(matches, e_mempool_strdup(pool, g_ptr_array_index(r->value.ptrarray, i)));
- }
- }
- e_sexp_result_free(search->sexp, r);
- /* instead of putting the mempool_hash in the structure, we keep the api clean by
- putting a reference to it in a hashtable. Lets us do some debugging and catch
- unfree'd results as well. */
- g_hash_table_insert(p->mempool_hash, matches, pool);
- } else {
- printf("no result!\n");
- }
-
- search->folder = NULL;
- search->summary = NULL;
- search->current = NULL;
- search->body_index = NULL;
-
- return matches;
-}
-
-/**
- * camel_folder_search_match_expression:
- * @search:
- * @expr:
- * @info:
- * @ex:
- *
- * Returns #TRUE if the expression matches the specific message info @info.
- * Note that the folder and index may need to be set for body searches to
- * operate as well.
- *
- * Return value:
- **/
-gboolean
-camel_folder_search_match_expression(CamelFolderSearch *search, const char *expr, const CamelMessageInfo *info, CamelException *ex)
-{
- GPtrArray *uids;
- int ret = FALSE;
-
- search->match1 = (CamelMessageInfo *)info;
-
- uids = camel_folder_search_execute_expression(search, expr, ex);
- if (uids) {
- if (uids->len == 1)
- ret = TRUE;
- camel_folder_search_free_result(search, uids);
- }
- search->match1 = NULL;
-
- return ret;
-}
-
-void camel_folder_search_free_result(CamelFolderSearch *search, GPtrArray *result)
-{
- int i;
- struct _CamelFolderSearchPrivate *p = _PRIVATE(search);
- EMemPool *pool;
-
- pool = g_hash_table_lookup(p->mempool_hash, result);
- if (pool) {
- e_mempool_destroy(pool);
- g_hash_table_remove(p->mempool_hash, result);
- } else {
- for (i=0;i<result->len;i++)
- g_free(g_ptr_array_index(result, i));
- }
- g_ptr_array_free(result, TRUE);
-}
-
-
-
-
-/* dummy function, returns false always, or an empty match array */
-static ESExpResult *
-search_dummy(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *search)
-{
- ESExpResult *r;
-
- if (search->current == NULL) {
- r = e_sexp_result_new(f, ESEXP_RES_BOOL);
- r->value.bool = FALSE;
- } else {
- r = e_sexp_result_new(f, ESEXP_RES_ARRAY_PTR);
- r->value.ptrarray = g_ptr_array_new();
- }
-
- return r;
-}
-
-static ESExpResult *
-search_match_all(struct _ESExp *f, int argc, struct _ESExpTerm **argv, CamelFolderSearch *search)
-{
- int i;
- ESExpResult *r, *r1;
-
- if (argc>1) {
- g_warning("match-all only takes a single argument, other arguments ignored");
- }
- r = e_sexp_result_new(f, ESEXP_RES_ARRAY_PTR);
- r->value.ptrarray = g_ptr_array_new();
-
- /* we are only matching a single message? */
- if (search->match1) {
- search->current = search->match1;
-
- d(printf("matching against 1 message: %s\n", camel_message_info_subject(search->current)));
-
- if (argc>0) {
- r1 = e_sexp_term_eval(f, argv[0]);
- if (r1->type == ESEXP_RES_BOOL) {
- if (r1->value.bool)
- g_ptr_array_add(r->value.ptrarray, (char *)camel_message_info_uid(search->current));
- } else {
- g_warning("invalid syntax, matches require a single bool result");
- e_sexp_fatal_error(f, _("(match-all) requires a single bool result"));
- }
- e_sexp_result_free(f, r1);
- } else {
- g_ptr_array_add(r->value.ptrarray, (char *)camel_message_info_uid(search->current));
- }
- search->current = NULL;
-
- return r;
- }
-
- if (search->summary == NULL) {
- /* TODO: make it work - e.g. use the folder and so forth for a slower search */
- g_warning("No summary supplied, match-all doesn't work with no summary");
- g_assert(0);
- return r;
- }
-
- /* TODO: Could make this a bit faster in the uncommon case (of match-everything) */
- for (i=0;i<search->summary->len;i++) {
- search->current = g_ptr_array_index(search->summary, i);
- if (argc>0) {
- r1 = e_sexp_term_eval(f, argv[0]);
- if (r1->type == ESEXP_RES_BOOL) {
- if (r1->value.bool)
- g_ptr_array_add(r->value.ptrarray, (char *)camel_message_info_uid(search->current));
- } else {
- g_warning("invalid syntax, matches require a single bool result");
- e_sexp_fatal_error(f, _("(match-all) requires a single bool result"));
- }
- e_sexp_result_free(f, r1);
- } else {
- g_ptr_array_add(r->value.ptrarray, (char *)camel_message_info_uid(search->current));
- }
- }
- search->current = NULL;
-
- return r;
-}
-
-static ESExpResult *
-check_header(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *search, camel_search_match_t how)
-{
- ESExpResult *r;
- int truth = FALSE;
-
- r(printf("executing check-header %d\n", how));
-
- /* are we inside a match-all? */
- if (search->current && argc>1
- && argv[0]->type == ESEXP_RES_STRING) {
- char *headername;
- const char *header = NULL;
- char strbuf[32];
- int i;
-
- /* only a subset of headers are supported .. */
- headername = argv[0]->value.string;
- if (!strcasecmp(headername, "subject")) {
- header = camel_message_info_subject(search->current);
- } else if (!strcasecmp(headername, "date")) {
- /* FIXME: not a very useful form of the date */
- sprintf(strbuf, "%d", (int)search->current->date_sent);
- header = strbuf;
- } else if (!strcasecmp(headername, "from")) {
- header = camel_message_info_from(search->current);
- } else if (!strcasecmp(headername, "to")) {
- header = camel_message_info_to(search->current);
- } else if (!strcasecmp(headername, "cc")) {
- header = camel_message_info_cc(search->current);
- } else if (!strcasecmp(headername, "x-camel-mlist")) {
- header = camel_message_info_mlist(search->current);
- } else {
- e_sexp_resultv_free(f, argc, argv);
- e_sexp_fatal_error(f, _("Performing query on unknown header: %s"), headername);
- }
-
- if (header) {
- /* performs an OR of all words */
- for (i=1;i<argc && !truth;i++) {
- if (argv[i]->type == ESEXP_RES_STRING
- && camel_search_header_match(header, argv[i]->value.string, how)) {
- truth = TRUE;
- }
- }
- }
- }
- /* TODO: else, find all matches */
-
- r = e_sexp_result_new(f, ESEXP_RES_BOOL);
- r->value.bool = truth;
-
- return r;
-}
-
-static ESExpResult *
-search_header_contains(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *search)
-{
- return check_header(f, argc, argv, search, CAMEL_SEARCH_MATCH_CONTAINS);
-}
-
-static ESExpResult *
-search_header_matches(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *search)
-{
- return check_header(f, argc, argv, search, CAMEL_SEARCH_MATCH_EXACT);
-}
-
-static ESExpResult *
-search_header_starts_with (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *search)
-{
- return check_header(f, argc, argv, search, CAMEL_SEARCH_MATCH_STARTS);
-}
-
-static ESExpResult *
-search_header_ends_with (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *search)
-{
- return check_header(f, argc, argv, search, CAMEL_SEARCH_MATCH_ENDS);
-}
-
-static ESExpResult *
-search_header_exists (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *search)
-{
- ESExpResult *r;
-
- r(printf ("executing header-exists\n"));
-
- if (search->current) {
- r = e_sexp_result_new(f, ESEXP_RES_BOOL);
- if (argc == 1 && argv[0]->type == ESEXP_RES_STRING)
- r->value.bool = camel_medium_get_header(CAMEL_MEDIUM(search->current), argv[0]->value.string) != NULL;
-
- } else {
- r = e_sexp_result_new(f, ESEXP_RES_ARRAY_PTR);
- r->value.ptrarray = g_ptr_array_new();
- }
-
- return r;
-}
-
-/* this is just to OR results together */
-struct _glib_sux_donkeys {
- int count;
- GPtrArray *uids;
-};
-
-/* or, store all unique values */
-static void
-g_lib_sux_htor(char *key, int value, struct _glib_sux_donkeys *fuckup)
-{
- g_ptr_array_add(fuckup->uids, key);
-}
-
-static int
-match_message(CamelFolder *folder, const char *uid, regex_t *pattern, CamelException *ex)
-{
- CamelMimeMessage *msg;
- int truth = FALSE;
-
- msg = camel_folder_get_message(folder, uid, ex);
- if (!camel_exception_is_set(ex) && msg!=NULL) {
- truth = camel_search_message_body_contains((CamelDataWrapper *)msg, pattern);
- camel_object_unref((CamelObject *)msg);
- }
- return truth;
-}
-
-static ESExpResult *
-search_body_contains(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *search)
-{
- ESExpResult *r;
- int i, j;
- regex_t pattern;
-
- if (search->current) {
- int truth = FALSE;
-
- if (argc == 1 && argv[0]->value.string[0] == 0 && search->folder) {
- truth = TRUE;
- } else if (search->body_index) {
- for (i=0;i<argc && !truth;i++) {
- if (argv[i]->type == ESEXP_RES_STRING) {
- truth = ibex_find_name(search->body_index, (char *)camel_message_info_uid(search->current),
- argv[i]->value.string);
- } else {
- e_sexp_resultv_free(f, argc, argv);
- e_sexp_fatal_error(f, _("Invalid type in body-contains, expecting string"));
- }
- }
- } else if (search->folder) {
- /* we do a 'slow' direct search */
- if (camel_search_build_match_regex(&pattern, CAMEL_SEARCH_MATCH_REGEX|CAMEL_SEARCH_MATCH_ICASE, argc, argv, search->priv->ex) == 0) {
- truth = match_message(search->folder, camel_message_info_uid(search->current), &pattern, search->priv->ex);
- regfree(&pattern);
- }
- } else {
- g_warning("Cannot perform indexed body query with no index or folder set");
- }
- r = e_sexp_result_new(f, ESEXP_RES_BOOL);
- r->value.bool = truth;
- } else {
- r = e_sexp_result_new(f, ESEXP_RES_ARRAY_PTR);
-
- if (argc == 1 && argv[0]->value.string[0] == 0 && search->folder) {
- /* optimise the match "" case - match everything */
- r->value.ptrarray = g_ptr_array_new();
- for (i=0;i<search->summary->len;i++) {
- CamelMessageInfo *info = g_ptr_array_index(search->summary, i);
- g_ptr_array_add(r->value.ptrarray, (char *)camel_message_info_uid(info));
- }
- } else if (search->body_index) {
- if (argc==1) {
- /* common case */
- r->value.ptrarray = ibex_find(search->body_index, argv[0]->value.string);
- } else {
- GHashTable *ht = g_hash_table_new(g_str_hash, g_str_equal);
- GPtrArray *pa;
- struct _glib_sux_donkeys lambdafoo;
-
- /* this sux, perform an or operation on the result(s) of each word */
- for (i=0;i<argc;i++) {
- if (argv[i]->type == ESEXP_RES_STRING) {
- pa = ibex_find(search->body_index, argv[i]->value.string);
- for (j=0;j<pa->len;j++) {
- g_hash_table_insert(ht, g_ptr_array_index(pa, j), (void *)1);
- }
- g_ptr_array_free(pa, FALSE);
- } else {
- e_sexp_result_free(f, r);
- e_sexp_resultv_free(f, argc, argv);
- e_sexp_fatal_error(f, _("Invalid type in body-contains, expecting string"));
- }
- }
- lambdafoo.uids = g_ptr_array_new();
- g_hash_table_foreach(ht, (GHFunc)g_lib_sux_htor, &lambdafoo);
- r->value.ptrarray = lambdafoo.uids;
- g_hash_table_destroy(ht);
- }
- } else if (search->folder) {
- /* do a slow search */
- r->value.ptrarray = g_ptr_array_new();
- if (camel_search_build_match_regex(&pattern, CAMEL_SEARCH_MATCH_REGEX|CAMEL_SEARCH_MATCH_ICASE, argc, argv, search->priv->ex) == 0) {
- if (search->summary) {
- for (i=0;i<search->summary->len;i++) {
- CamelMessageInfo *info = g_ptr_array_index(search->summary, i);
-
- if (match_message(search->folder, camel_message_info_uid(info), &pattern, search->priv->ex))
- g_ptr_array_add(r->value.ptrarray, (char *)camel_message_info_uid(info));
- }
- } /* else? we could always get the summary from the folder, but then
- we need to free it later somehow */
- regfree(&pattern);
- }
- } else {
- g_warning("Cannot perform indexed body query with no index or folder set");
- r->value.ptrarray = g_ptr_array_new();
- }
- }
-
- return r;
-}
-
-static ESExpResult *
-search_user_flag(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *search)
-{
- ESExpResult *r;
- int i;
-
- r(printf("executing user-flag\n"));
-
- /* are we inside a match-all? */
- if (search->current) {
- int truth = FALSE;
- /* performs an OR of all words */
- for (i=0;i<argc && !truth;i++) {
- if (argv[i]->type == ESEXP_RES_STRING
- && camel_flag_get(&search->current->user_flags, argv[i]->value.string)) {
- truth = TRUE;
- break;
- }
- }
- r = e_sexp_result_new(f, ESEXP_RES_BOOL);
- r->value.bool = truth;
- } else {
- r = e_sexp_result_new(f, ESEXP_RES_ARRAY_PTR);
- r->value.ptrarray = g_ptr_array_new();
- }
-
- return r;
-}
-
-static ESExpResult *
-search_system_flag (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *search)
-{
- ESExpResult *r;
-
- r(printf ("executing system-flag\n"));
-
- if (search->current) {
- gboolean truth = FALSE;
-
- if (argc == 1)
- truth = camel_system_flag_get (search->current->flags, argv[0]->value.string);
-
- r = e_sexp_result_new(f, ESEXP_RES_BOOL);
- r->value.bool = truth;
- } else {
- r = e_sexp_result_new(f, ESEXP_RES_ARRAY_PTR);
- r->value.ptrarray = g_ptr_array_new ();
- }
-
- return r;
-}
-
-static ESExpResult *search_user_tag(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *search)
-{
- ESExpResult *r;
-
- r(printf("executing user-tag\n"));
-
- /* are we inside a match-all? */
- if (search->current) {
- const char *value = NULL;
- if (argc == 1) {
- value = camel_tag_get(&search->current->user_tags, argv[0]->value.string);
- }
- r = e_sexp_result_new(f, ESEXP_RES_STRING);
- r->value.string = g_strdup(value?value:"");
- } else {
- r = e_sexp_result_new(f, ESEXP_RES_ARRAY_PTR);
- r->value.ptrarray = g_ptr_array_new();
- }
-
- return r;
-}
-
-static ESExpResult *
-search_get_sent_date(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s)
-{
- ESExpResult *r;
-
- r(printf("executing get-sent-date\n"));
-
- /* are we inside a match-all? */
- if (s->current) {
- r = e_sexp_result_new(f, ESEXP_RES_INT);
-
- r->value.number = s->current->date_sent;
- } else {
- r = e_sexp_result_new(f, ESEXP_RES_ARRAY_PTR);
- r->value.ptrarray = g_ptr_array_new ();
- }
-
- return r;
-}
-
-static ESExpResult *
-search_get_received_date(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s)
-{
- ESExpResult *r;
-
- r(printf("executing get-received-date\n"));
-
- /* are we inside a match-all? */
- if (s->current) {
- r = e_sexp_result_new(f, ESEXP_RES_INT);
-
- r->value.number = s->current->date_received;
- } else {
- r = e_sexp_result_new(f, ESEXP_RES_ARRAY_PTR);
- r->value.ptrarray = g_ptr_array_new ();
- }
-
- return r;
-}
-
-static ESExpResult *
-search_get_current_date(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s)
-{
- ESExpResult *r;
-
- r(printf("executing get-current-date\n"));
-
- r = e_sexp_result_new(f, ESEXP_RES_INT);
- r->value.number = time (NULL);
- return r;
-}
-
-static ESExpResult *
-search_uid(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *search)
-{
- ESExpResult *r;
- int i;
-
- r(printf("executing uid\n"));
-
- /* are we inside a match-all? */
- if (search->current) {
- int truth = FALSE;
- const char *uid = camel_message_info_uid(search->current);
-
- /* performs an OR of all words */
- for (i=0;i<argc && !truth;i++) {
- if (argv[i]->type == ESEXP_RES_STRING
- && !strcmp(uid, argv[i]->value.string)) {
- truth = TRUE;
- break;
- }
- }
- r = e_sexp_result_new(f, ESEXP_RES_BOOL);
- r->value.bool = truth;
- } else {
- r = e_sexp_result_new(f, ESEXP_RES_ARRAY_PTR);
- r->value.ptrarray = g_ptr_array_new();
- for (i=0;i<argc;i++) {
- if (argv[i]->type == ESEXP_RES_STRING)
- g_ptr_array_add(r->value.ptrarray, argv[i]->value.string);
- }
- }
-
- return r;
-}
diff --git a/camel/camel-folder-search.h b/camel/camel-folder-search.h
deleted file mode 100644
index 47f139ce0d..0000000000
--- a/camel/camel-folder-search.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef _CAMEL_FOLDER_SEARCH_H
-#define _CAMEL_FOLDER_SEARCH_H
-
-#include <e-util/e-sexp.h>
-#include <libibex/ibex.h>
-#include <camel/camel-folder.h>
-#include <camel/camel-object.h>
-
-#define CAMEL_FOLDER_SEARCH_TYPE (camel_folder_search_get_type ())
-#define CAMEL_FOLDER_SEARCH(obj) CAMEL_CHECK_CAST (obj, camel_folder_search_get_type (), CamelFolderSearch)
-#define CAMEL_FOLDER_SEARCH_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_folder_search_get_type (), CamelFolderSearchClass)
-#define CAMEL_IS_FOLDER_SEARCH(obj) CAMEL_CHECK_TYPE (obj, camel_folder_search_get_type ())
-
-typedef struct _CamelFolderSearchClass CamelFolderSearchClass;
-
-struct _CamelFolderSearch {
- CamelObject parent;
-
- struct _CamelFolderSearchPrivate *priv;
-
- ESExp *sexp; /* s-exp evaluator */
- char *last_search; /* last searched expression */
-
- /* these are only valid during the search, and are reset afterwards */
- CamelFolder *folder; /* folder for current search */
- GPtrArray *summary; /* summary array for current search */
- CamelMessageInfo *current; /* current message info, when searching one by one */
- CamelMessageInfo *match1; /* message info, when searching a single message only */
- CamelMimeMessage *current_message; /* cache of current message, if required */
- ibex *body_index;
-};
-
-struct _CamelFolderSearchClass {
- CamelObjectClass parent_class;
-
- /* general bool/comparison options, usually these wont need to be set, unless it is compiling into another language */
- ESExpResult * (*and)(struct _ESExp *f, int argc, struct _ESExpTerm **argv, CamelFolderSearch *s);
- ESExpResult * (*or)(struct _ESExp *f, int argc, struct _ESExpTerm **argv, CamelFolderSearch *s);
- ESExpResult * (*not)(struct _ESExp *f, int argc, struct _ESExpTerm **argv, CamelFolderSearch *s);
- ESExpResult * (*lt)(struct _ESExp *f, int argc, struct _ESExpTerm **argv, CamelFolderSearch *s);
- ESExpResult * (*gt)(struct _ESExp *f, int argc, struct _ESExpTerm **argv, CamelFolderSearch *s);
- ESExpResult * (*eq)(struct _ESExp *f, int argc, struct _ESExpTerm **argv, CamelFolderSearch *s);
-
- /* search options */
- /* (match-all [boolean expression]) Apply match to all messages */
- ESExpResult * (*match_all)(struct _ESExp *f, int argc, struct _ESExpTerm **argv, CamelFolderSearch *s);
-
- /* (body-contains "string1" "string2" ...) Returns a list of matches, or true if in single-message mode */
- ESExpResult * (*body_contains)(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s);
-
- /* (header-contains "headername" "string1" ...) List of matches, or true if in single-message mode */
- ESExpResult * (*header_contains)(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s);
-
- /* (header-matches "headername" "string") */
- ESExpResult * (*header_matches)(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s);
-
- /* (header-starts-with "headername" "string") */
- ESExpResult * (*header_starts_with)(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s);
-
- /* (header-ends-with "headername" "string") */
- ESExpResult * (*header_ends_with)(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s);
-
- /* (header-exists "headername") */
- ESExpResult * (*header_exists)(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s);
-
- /* (user-flag "flagname" "flagname" ...) If one of user-flag set */
- ESExpResult * (*user_flag)(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s);
-
- /* (user-tag "flagname") Returns the value of a user tag. Can only be used in match-all */
- ESExpResult * (*user_tag)(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s);
-
- /* (system-flag "flagname") Returns the value of a system flag. Can only be used in match-all */
- ESExpResult * (*system_flag)(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s);
-
- /* (get-sent-date) Retrieve the date that the message was sent on as a time_t */
- ESExpResult * (*get_sent_date)(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s);
-
- /* (get-received-date) Retrieve the date that the message was received on as a time_t */
- ESExpResult * (*get_received_date)(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s);
-
- /* (get-current-date) Retrieve 'now' as a time_t */
- ESExpResult * (*get_current_date)(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s);
-
- /* (uid "uid" ...) True if the uid is in the list */
- ESExpResult * (*uid)(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s);
-};
-
-guint camel_folder_search_get_type (void);
-CamelFolderSearch *camel_folder_search_new (void);
-void camel_folder_search_construct (CamelFolderSearch *search);
-
-void camel_folder_search_set_folder(CamelFolderSearch *search, CamelFolder *folder);
-void camel_folder_search_set_summary(CamelFolderSearch *search, GPtrArray *summary);
-void camel_folder_search_set_body_index(CamelFolderSearch *search, ibex *index);
-GPtrArray *camel_folder_search_execute_expression(CamelFolderSearch *search, const char *expr, CamelException *ex);
-gboolean camel_folder_search_match_expression(CamelFolderSearch *search, const char *expr,
- const CamelMessageInfo *info, CamelException *ex);
-void camel_folder_search_free_result(CamelFolderSearch *search, GPtrArray *);
-
-#endif /* ! _CAMEL_FOLDER_SEARCH_H */
diff --git a/camel/camel-folder-summary.c b/camel/camel-folder-summary.c
deleted file mode 100644
index e9b60cebc2..0000000000
--- a/camel/camel-folder-summary.c
+++ /dev/null
@@ -1,2606 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <unistd.h>
-#include <ctype.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-
-#include "camel-folder-summary.h"
-
-#include <camel/camel-file-utils.h>
-#include <camel/camel-mime-filter.h>
-#include <camel/camel-mime-filter-index.h>
-#include <camel/camel-mime-filter-charset.h>
-#include <camel/camel-mime-filter-save.h>
-#include <camel/camel-mime-filter-basic.h>
-#include <camel/camel-mime-filter-html.h>
-#include <camel/camel-mime-message.h>
-#include <camel/camel-multipart.h>
-#include <camel/camel-stream-mem.h>
-
-#include "hash-table-utils.h"
-#include "e-util/md5-utils.h"
-#include "e-util/e-memory.h"
-
-#include "camel-private.h"
-
-#ifdef ENABLE_THREADS
-#include <pthread.h>
-
-static pthread_mutex_t info_lock = PTHREAD_MUTEX_INITIALIZER;
-
-/* this lock is ONLY for the standalone messageinfo stuff */
-#define GLOBAL_INFO_LOCK(i) pthread_mutex_lock(&info_lock)
-#define GLOBAL_INFO_UNLOCK(i) pthread_mutex_unlock(&info_lock)
-#else
-#define GLOBAL_INFO_LOCK(i)
-#define GLOBAL_INFO_UNLOCK(i)
-#endif
-
-/* this should probably be conditional on it existing */
-#define USE_BSEARCH
-
-#define d(x)
-#define io(x) /* io debug */
-
-#if 0
-extern int strdup_count, malloc_count, free_count;
-#endif
-
-#define CAMEL_FOLDER_SUMMARY_VERSION (12)
-
-#define _PRIVATE(o) (((CamelFolderSummary *)(o))->priv)
-
-/* trivial lists, just because ... */
-struct _node {
- struct _node *next;
-};
-
-static struct _node *my_list_append(struct _node **list, struct _node *n);
-static int my_list_size(struct _node **list);
-
-static int summary_header_load(CamelFolderSummary *, FILE *);
-static int summary_header_save(CamelFolderSummary *, FILE *);
-
-static CamelMessageInfo * message_info_new(CamelFolderSummary *, struct _header_raw *);
-static CamelMessageInfo * message_info_new_from_parser(CamelFolderSummary *, CamelMimeParser *);
-static CamelMessageInfo * message_info_new_from_message(CamelFolderSummary *s, CamelMimeMessage *msg);
-static CamelMessageInfo * message_info_load(CamelFolderSummary *, FILE *);
-static int message_info_save(CamelFolderSummary *, FILE *, CamelMessageInfo *);
-static void message_info_free(CamelFolderSummary *, CamelMessageInfo *);
-
-static CamelMessageContentInfo * content_info_new(CamelFolderSummary *, struct _header_raw *);
-static CamelMessageContentInfo * content_info_new_from_parser(CamelFolderSummary *, CamelMimeParser *);
-static CamelMessageContentInfo * content_info_new_from_message(CamelFolderSummary *s, CamelMimePart *mp);
-static CamelMessageContentInfo * content_info_load(CamelFolderSummary *, FILE *);
-static int content_info_save(CamelFolderSummary *, FILE *, CamelMessageContentInfo *);
-static void content_info_free(CamelFolderSummary *, CamelMessageContentInfo *);
-
-static char *next_uid_string(CamelFolderSummary *s);
-
-static CamelMessageContentInfo * summary_build_content_info(CamelFolderSummary *s, CamelMessageInfo *msginfo, CamelMimeParser *mp);
-static CamelMessageContentInfo * summary_build_content_info_message(CamelFolderSummary *s, CamelMessageInfo *msginfo, CamelMimePart *object);
-
-static void camel_folder_summary_class_init (CamelFolderSummaryClass *klass);
-static void camel_folder_summary_init (CamelFolderSummary *obj);
-static void camel_folder_summary_finalize (CamelObject *obj);
-
-static CamelObjectClass *camel_folder_summary_parent;
-
-static void
-camel_folder_summary_class_init (CamelFolderSummaryClass *klass)
-{
- camel_folder_summary_parent = camel_type_get_global_classfuncs (camel_object_get_type ());
-
- klass->summary_header_load = summary_header_load;
- klass->summary_header_save = summary_header_save;
-
- klass->message_info_new = message_info_new;
- klass->message_info_new_from_parser = message_info_new_from_parser;
- klass->message_info_new_from_message = message_info_new_from_message;
- klass->message_info_load = message_info_load;
- klass->message_info_save = message_info_save;
- klass->message_info_free = message_info_free;
-
- klass->content_info_new = content_info_new;
- klass->content_info_new_from_parser = content_info_new_from_parser;
- klass->content_info_new_from_message = content_info_new_from_message;
- klass->content_info_load = content_info_load;
- klass->content_info_save = content_info_save;
- klass->content_info_free = content_info_free;
-
- klass->next_uid_string = next_uid_string;
-}
-
-static void
-camel_folder_summary_init (CamelFolderSummary *s)
-{
- struct _CamelFolderSummaryPrivate *p;
-
- p = _PRIVATE(s) = g_malloc0(sizeof(*p));
-
- p->filter_charset = g_hash_table_new(g_strcase_hash, g_strcase_equal);
-
- s->message_info_size = sizeof(CamelMessageInfo);
- s->content_info_size = sizeof(CamelMessageContentInfo);
-
- s->message_info_chunks = NULL;
- s->content_info_chunks = NULL;
-
-#if defined (DOESTRV) || defined (DOEPOOLV)
- s->message_info_strings = CAMEL_MESSAGE_INFO_LAST;
-#endif
-
- s->version = CAMEL_FOLDER_SUMMARY_VERSION;
- s->flags = 0;
- s->time = 0;
- s->nextuid = 1;
-
- s->messages = g_ptr_array_new();
- s->messages_uid = g_hash_table_new(g_str_hash, g_str_equal);
-
-#ifdef ENABLE_THREADS
- p->summary_lock = g_mutex_new();
- p->io_lock = g_mutex_new();
- p->filter_lock = g_mutex_new();
- p->alloc_lock = g_mutex_new();
- p->ref_lock = g_mutex_new();
-#endif
-}
-
-static void free_o_name(void *key, void *value, void *data)
-{
- camel_object_unref((CamelObject *)value);
- g_free(key);
-}
-
-static void
-camel_folder_summary_finalize (CamelObject *obj)
-{
- struct _CamelFolderSummaryPrivate *p;
- CamelFolderSummary *s = (CamelFolderSummary *)obj;
-
- p = _PRIVATE(obj);
-
- camel_folder_summary_clear(s);
- g_ptr_array_free(s->messages, TRUE);
- g_hash_table_destroy(s->messages_uid);
-
- g_hash_table_foreach(p->filter_charset, free_o_name, 0);
- g_hash_table_destroy(p->filter_charset);
-
- g_free(s->summary_path);
-
- if (s->message_info_chunks)
- e_memchunk_destroy(s->message_info_chunks);
- if (s->content_info_chunks)
- e_memchunk_destroy(s->content_info_chunks);
-
- if (p->filter_index)
- camel_object_unref((CamelObject *)p->filter_index);
- if (p->filter_64)
- camel_object_unref((CamelObject *)p->filter_64);
- if (p->filter_qp)
- camel_object_unref((CamelObject *)p->filter_qp);
- if (p->filter_save)
- camel_object_unref((CamelObject *)p->filter_save);
- if (p->filter_html)
- camel_object_unref((CamelObject *)p->filter_html);
-
-#ifdef ENABLE_THREADS
- g_mutex_free(p->summary_lock);
- g_mutex_free(p->io_lock);
- g_mutex_free(p->filter_lock);
- g_mutex_free(p->alloc_lock);
- g_mutex_free(p->ref_lock);
-#endif
-
- g_free(p);
-}
-
-CamelType
-camel_folder_summary_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_object_get_type (), "CamelFolderSummary",
- sizeof (CamelFolderSummary),
- sizeof (CamelFolderSummaryClass),
- (CamelObjectClassInitFunc) camel_folder_summary_class_init,
- NULL,
- (CamelObjectInitFunc) camel_folder_summary_init,
- (CamelObjectFinalizeFunc) camel_folder_summary_finalize);
- }
-
- return type;
-}
-
-/**
- * camel_folder_summary_new:
- *
- * Create a new CamelFolderSummary object.
- *
- * Return value: A new CamelFolderSummary widget.
- **/
-CamelFolderSummary *
-camel_folder_summary_new (void)
-{
- CamelFolderSummary *new = CAMEL_FOLDER_SUMMARY ( camel_object_new (camel_folder_summary_get_type ())); return new;
-}
-
-
-/**
- * camel_folder_summary_set_filename:
- * @s:
- * @name:
- *
- * Set the filename where the summary will be loaded to/saved from.
- **/
-void camel_folder_summary_set_filename(CamelFolderSummary *s, const char *name)
-{
- CAMEL_SUMMARY_LOCK(s, summary_lock);
-
- g_free(s->summary_path);
- s->summary_path = g_strdup(name);
-
- CAMEL_SUMMARY_UNLOCK(s, summary_lock);
-}
-
-/**
- * camel_folder_summary_set_index:
- * @s:
- * @index:
- *
- * Set the index used to index body content. If the index is NULL, or
- * not set (the default), no indexing of body content will take place.
- *
- * Unlike earlier behaviour, build_content need not be set to perform indexing.
- **/
-void camel_folder_summary_set_index(CamelFolderSummary *s, ibex *index)
-{
- struct _CamelFolderSummaryPrivate *p = _PRIVATE(s);
-
- p->index = index;
-}
-
-/**
- * camel_folder_summary_set_build_content:
- * @s:
- * @state:
- *
- * Set a flag to tell the summary to build the content info summary
- * (CamelMessageInfo.content). The default is not to build content info
- * summaries.
- **/
-void camel_folder_summary_set_build_content(CamelFolderSummary *s, gboolean state)
-{
- s->build_content = state;
-}
-
-/**
- * camel_folder_summary_count:
- * @s:
- *
- * Get the number of summary items stored in this summary.
- *
- * Return value: The number of items int he summary.
- **/
-int
-camel_folder_summary_count(CamelFolderSummary *s)
-{
- return s->messages->len;
-}
-
-/**
- * camel_folder_summary_index:
- * @s:
- * @i:
- *
- * Retrieve a summary item by index number.
- *
- * A referenced to the summary item is returned, which may be
- * ref'd or free'd as appropriate.
- *
- * Return value: The summary item, or NULL if the index @i is out
- * of range.
- * It must be freed using camel_folder_summary_info_free().
- **/
-CamelMessageInfo *
-camel_folder_summary_index(CamelFolderSummary *s, int i)
-{
- CamelMessageInfo *info = NULL;
-
- CAMEL_SUMMARY_LOCK(s, ref_lock);
- CAMEL_SUMMARY_LOCK(s, summary_lock);
-
- if (i<s->messages->len)
- info = g_ptr_array_index(s->messages, i);
-
- CAMEL_SUMMARY_UNLOCK(s, summary_lock);
-
- if (info)
- info->refcount++;
-
- CAMEL_SUMMARY_UNLOCK(s, ref_lock);
-
- return info;
-}
-
-/**
- * camel_folder_summary_index:
- * @s:
- * @i:
- *
- * Obtain a copy of the summary array. This is done atomically,
- * so cannot contain empty entries.
- *
- * It must be freed using camel_folder_summary_array_free().
- **/
-GPtrArray *
-camel_folder_summary_array(CamelFolderSummary *s)
-{
- CamelMessageInfo *info;
- GPtrArray *res = g_ptr_array_new();
- int i;
-
- CAMEL_SUMMARY_LOCK(s, ref_lock);
- CAMEL_SUMMARY_LOCK(s, summary_lock);
-
- g_ptr_array_set_size(res, s->messages->len);
- for (i=0;i<s->messages->len;i++) {
- info = res->pdata[i] = g_ptr_array_index(s->messages, i);
- info->refcount++;
- }
-
- CAMEL_SUMMARY_UNLOCK(s, summary_lock);
- CAMEL_SUMMARY_UNLOCK(s, ref_lock);
-
- return res;
-}
-
-/**
- * camel_folder_summary_array_free:
- * @s:
- * @array:
- *
- * Free the folder summary array.
- **/
-void
-camel_folder_summary_array_free(CamelFolderSummary *s, GPtrArray *array)
-{
- int i;
-
- for (i=0;i<array->len;i++)
- camel_folder_summary_info_free(s, array->pdata[i]);
-
- g_ptr_array_free(array, TRUE);
-}
-
-/**
- * camel_folder_summary_uid:
- * @s:
- * @uid:
- *
- * Retrieve a summary item by uid.
- *
- * A referenced to the summary item is returned, which may be
- * ref'd or free'd as appropriate.
- *
- * Return value: The summary item, or NULL if the uid @uid
- * is not available.
- * It must be freed using camel_folder_summary_info_free().
- **/
-CamelMessageInfo *
-camel_folder_summary_uid(CamelFolderSummary *s, const char *uid)
-{
- CamelMessageInfo *info;
-
- CAMEL_SUMMARY_LOCK(s, ref_lock);
- CAMEL_SUMMARY_LOCK(s, summary_lock);
-
- info = g_hash_table_lookup(s->messages_uid, uid);
-
- CAMEL_SUMMARY_UNLOCK(s, summary_lock);
-
- if (info)
- info->refcount++;
-
- CAMEL_SUMMARY_UNLOCK(s, ref_lock);
-
- return info;
-}
-
-/**
- * camel_folder_summary_next_uid:
- * @s:
- *
- * Generate a new unique uid value as an integer. This
- * may be used to create a unique sequence of numbers.
- *
- * Return value: The next unique uid value.
- **/
-guint32 camel_folder_summary_next_uid(CamelFolderSummary *s)
-{
- guint32 uid;
-
-
- CAMEL_SUMMARY_LOCK(s, summary_lock);
-
- uid = s->nextuid++;
-
- CAMEL_SUMMARY_UNLOCK(s, summary_lock);
-
- /* FIXME: sync this to disk */
-/* summary_header_save(s);*/
- return uid;
-}
-
-/**
- * camel_folder_summary_set_uid:
- * @s:
- * @uid: The next minimum uid to assign. To avoid clashing
- * uid's, set this to the uid of a given messages + 1.
- *
- * Set the next minimum uid available. This can be used to
- * ensure new uid's do not clash with existing uid's.
- **/
-void camel_folder_summary_set_uid(CamelFolderSummary *s, guint32 uid)
-{
- /* TODO: sync to disk? */
- CAMEL_SUMMARY_LOCK(s, summary_lock);
-
- s->nextuid = MAX(s->nextuid, uid);
-
- CAMEL_SUMMARY_UNLOCK(s, summary_lock);
-}
-
-/**
- * camel_folder_summary_next_uid_string:
- * @s:
- *
- * Retrieve the next uid, but as a formatted string.
- *
- * Return value: The next uid as an unsigned integer string.
- * This string must be freed by the caller.
- **/
-char *
-camel_folder_summary_next_uid_string(CamelFolderSummary *s)
-{
- return ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->next_uid_string(s);
-}
-
-/* loads the content descriptions, recursively */
-static CamelMessageContentInfo *
-perform_content_info_load(CamelFolderSummary *s, FILE *in)
-{
- int i;
- guint32 count;
- CamelMessageContentInfo *ci, *part;
-
- ci = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->content_info_load(s, in);
- if (ci == NULL)
- return NULL;
-
- if (camel_file_util_decode_uint32(in, &count) == -1 || count > 500) {
- camel_folder_summary_content_info_free(s, ci);
- return NULL;
- }
-
- for (i=0;i<count;i++) {
- part = perform_content_info_load(s, in);
- if (part) {
- my_list_append((struct _node **)&ci->childs, (struct _node *)part);
- part->parent = ci;
- } else {
- g_warning("Summary file format messed up?");
- camel_folder_summary_content_info_free(s, ci);
- return NULL;
- }
- }
- return ci;
-}
-
-int
-camel_folder_summary_load(CamelFolderSummary *s)
-{
- FILE *in;
- int i;
- CamelMessageInfo *mi;
-
- g_assert(s->summary_path);
-
- in = fopen(s->summary_path, "r");
- if (in == NULL)
- return -1;
-
- CAMEL_SUMMARY_LOCK(s, io_lock);
- if ( ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->summary_header_load(s, in) == -1)
- goto error;
-
- /* now read in each message ... */
- for (i=0;i<s->saved_count;i++) {
- mi = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->message_info_load(s, in);
-
- if (mi == NULL)
- goto error;
-
- if (s->build_content) {
- mi->content = perform_content_info_load(s, in);
- if (mi->content == NULL) {
- camel_folder_summary_info_free(s, mi);
- goto error;
- }
- }
-
- camel_folder_summary_add(s, mi);
- }
-
- CAMEL_SUMMARY_UNLOCK(s, io_lock);
-
- if (fclose(in) == -1)
- return -1;
-
- s->flags &= ~CAMEL_SUMMARY_DIRTY;
-
- return 0;
-
-error:
- g_warning("Cannot load summary file: %s", strerror(ferror(in)));
- CAMEL_SUMMARY_UNLOCK(s, io_lock);
- fclose(in);
- s->flags |= ~CAMEL_SUMMARY_DIRTY;
-
- return -1;
-}
-
-/* saves the content descriptions, recursively */
-static int
-perform_content_info_save(CamelFolderSummary *s, FILE *out, CamelMessageContentInfo *ci)
-{
- CamelMessageContentInfo *part;
-
- ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->content_info_save(s, out, ci);
- camel_file_util_encode_uint32(out, my_list_size((struct _node **)&ci->childs));
- part = ci->childs;
- while (part) {
- perform_content_info_save(s, out, part);
- part = part->next;
- }
- return 0;
-}
-
-/**
- * camel_folder_summary_save:
- * @s:
- *
- * Writes the summary to disk. The summary is only written if changes
- * have occured.
- *
- * Return value: Returns -1 on error.
- **/
-int
-camel_folder_summary_save(CamelFolderSummary *s)
-{
- FILE *out;
- int fd;
- int i;
- guint32 count;
- CamelMessageInfo *mi;
-
- g_assert(s->summary_path);
-
- if ((s->flags & CAMEL_SUMMARY_DIRTY) == 0)
- return 0;
-
- fd = open(s->summary_path, O_RDWR|O_CREAT, 0600);
- if (fd == -1)
- return -1;
- out = fdopen(fd, "w");
- if ( out == NULL ) {
- close(fd);
- return -1;
- }
-
- io(printf("saving header\n"));
-
- CAMEL_SUMMARY_LOCK(s, io_lock);
-
- if ( ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->summary_header_save(s, out) == -1) {
- fclose(out);
- CAMEL_SUMMARY_UNLOCK(s, io_lock);
- return -1;
- }
-
- /* now write out each message ... */
- /* FIXME: check returns */
-
- count = s->messages->len;
- for (i=0;i<count;i++) {
- mi = s->messages->pdata[i];
- ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->message_info_save(s, out, mi);
-
- if (s->build_content) {
- perform_content_info_save(s, out, mi->content);
- }
- }
-
- CAMEL_SUMMARY_UNLOCK(s, io_lock);
-
- if (fclose(out) == -1)
- return -1;
-
- s->flags &= ~CAMEL_SUMMARY_DIRTY;
- return 0;
-}
-
-static void
-summary_assign_uid(CamelFolderSummary *s, CamelMessageInfo *info)
-{
- const char *uid;
-
- uid = camel_message_info_uid(info);
- if (uid == NULL || uid[0] == 0) {
- camel_message_info_set_uid(info, camel_folder_summary_next_uid_string(s));
- uid = camel_message_info_uid(info);
- }
-
- CAMEL_SUMMARY_LOCK(s, summary_lock);
-
- while (g_hash_table_lookup(s->messages_uid, uid)) {
- g_warning("Trying to insert message with clashing uid (%s). new uid re-assigned", camel_message_info_uid(info));
- CAMEL_SUMMARY_UNLOCK(s, summary_lock);
- camel_message_info_set_uid(info, camel_folder_summary_next_uid_string(s));
- uid = camel_message_info_uid(info);
- info->flags |= CAMEL_MESSAGE_FOLDER_FLAGGED;
- CAMEL_SUMMARY_LOCK(s, summary_lock);
- }
-
- CAMEL_SUMMARY_UNLOCK(s, summary_lock);
-}
-
-/**
- * camel_folder_summary_add:
- * @s:
- * @info:
- *
- * Adds a new @info record to the summary. If @info->uid is NULL, then a new
- * uid is automatically re-assigned by calling :next_uid_string().
- *
- * The @info record should have been generated by calling one of the
- * info_new_*() functions, as it will be free'd based on the summary
- * class. And MUST NOT be allocated directly using malloc.
- **/
-void camel_folder_summary_add(CamelFolderSummary *s, CamelMessageInfo *info)
-{
- if (info == NULL)
- return;
-
- summary_assign_uid(s, info);
-
- CAMEL_SUMMARY_LOCK(s, summary_lock);
-
-/* unnecessary for pooled vectors */
-#ifdef DOESTRV
- /* this is vitally important, and also if this is ever modified, then
- the hash table needs to be resynced */
- info->strings = e_strv_pack(info->strings);
-#endif
-
- g_ptr_array_add(s->messages, info);
- g_hash_table_insert(s->messages_uid, (char *)camel_message_info_uid(info), info);
- s->flags |= CAMEL_SUMMARY_DIRTY;
-
- CAMEL_SUMMARY_UNLOCK(s, summary_lock);
-}
-
-/**
- * camel_folder_summary_add_from_header:
- * @s:
- * @h:
- *
- * Build a new info record based on a set of headers, and add it to the
- * summary.
- *
- * Note that this function should not be used if build_content_info has
- * been specified for this summary.
- *
- * Return value: The newly added record.
- **/
-CamelMessageInfo *camel_folder_summary_add_from_header(CamelFolderSummary *s, struct _header_raw *h)
-{
- CamelMessageInfo *info = camel_folder_summary_info_new_from_header(s, h);
-
- camel_folder_summary_add(s, info);
-
- return info;
-}
-
-/**
- * camel_folder_summary_add_from_parser:
- * @s:
- * @mp:
- *
- * Build a new info record based on the current position of a CamelMimeParser.
- *
- * The parser should be positioned before the start of the message to summarise.
- * This function may be used if build_contnet_info or an index has been
- * specified for the summary.
- *
- * Return value: The newly added record.
- **/
-CamelMessageInfo *camel_folder_summary_add_from_parser(CamelFolderSummary *s, CamelMimeParser *mp)
-{
- CamelMessageInfo *info = camel_folder_summary_info_new_from_parser(s, mp);
-
- camel_folder_summary_add(s, info);
-
- return info;
-}
-
-/**
- * camel_folder_summary_add_from_message:
- * @s:
- * @msg:
- *
- * Add a summary item from an existing message.
- *
- * Return value:
- **/
-CamelMessageInfo *camel_folder_summary_add_from_message(CamelFolderSummary *s, CamelMimeMessage *msg)
-{
- CamelMessageInfo *info = camel_folder_summary_info_new_from_message(s, msg);
-
- camel_folder_summary_add(s, info);
-
- return info;
-}
-
-/**
- * camel_folder_summary_info_new_from_header:
- * @s:
- * @h:
- *
- * Create a new info record from a header.
- *
- * Return value: Guess? This info record MUST be freed using
- * camel_folder_summary_info_free(), camel_message_info_free() will not work.
- **/
-CamelMessageInfo *camel_folder_summary_info_new_from_header(CamelFolderSummary *s, struct _header_raw *h)
-{
- return ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s))) -> message_info_new(s, h);
-}
-
-/**
- * camel_folder_summary_info_new_from_parser:
- * @s:
- * @mp:
- *
- * Create a new info record from a parser. If the parser cannot
- * determine a uid, then a new one is automatically assigned.
- *
- * If indexing is enabled, then the content will be indexed based
- * on this new uid. In this case, the message info MUST be
- * added using :add().
- *
- * Once complete, the parser will be positioned at the end of
- * the message.
- *
- * Return value: Guess? This info record MUST be freed using
- * camel_folder_summary_info_free(), camel_message_info_free() will not work.
- **/
-CamelMessageInfo *camel_folder_summary_info_new_from_parser(CamelFolderSummary *s, CamelMimeParser *mp)
-{
- CamelMessageInfo *info = NULL;
- char *buffer;
- int len;
- struct _CamelFolderSummaryPrivate *p = _PRIVATE(s);
- off_t start;
-
- /* should this check the parser is in the right state, or assume it is?? */
-
- start = camel_mime_parser_tell(mp);
- if (camel_mime_parser_step(mp, &buffer, &len) != HSCAN_EOF) {
- info = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->message_info_new_from_parser(s, mp);
-
- camel_mime_parser_unstep(mp);
-
- /* assign a unique uid, this is slightly 'wrong' as we do not really
- * know if we are going to store this in the summary, but no matter */
- summary_assign_uid(s, info);
-
- CAMEL_SUMMARY_LOCK(s, filter_lock);
-
- if (p->index) {
- if (p->filter_index == NULL)
- p->filter_index = camel_mime_filter_index_new_ibex(p->index);
- camel_mime_filter_index_set_name(p->filter_index, (char *)camel_message_info_uid(info));
- ibex_unindex(p->index, (char *)camel_message_info_uid(info));
- }
-
- /* always scan the content info, even if we dont save it */
- info->content = summary_build_content_info(s, info, mp);
-
- CAMEL_SUMMARY_UNLOCK(s, filter_lock);
-
- info->size = camel_mime_parser_tell(mp) - start;
- }
- return info;
-}
-
-/**
- * camel_folder_summary_info_new_from_message:
- * @:
- * @:
- *
- * Create a summary item from a message.
- *
- * Return value:
- **/
-CamelMessageInfo *camel_folder_summary_info_new_from_message(CamelFolderSummary *s, CamelMimeMessage *msg)
-{
- CamelMessageInfo *info;
- struct _CamelFolderSummaryPrivate *p = _PRIVATE(s);
-
- info = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->message_info_new_from_message(s, msg);
-
- /* assign a unique uid, this is slightly 'wrong' as we do not really
- * know if we are going to store this in the summary, but no matter */
- summary_assign_uid(s, info);
-
- if (p->index)
- ibex_unindex(p->index, (char *)camel_message_info_uid(info));
-
- info->content = summary_build_content_info_message(s, info, (CamelMimePart *)msg);
- /* FIXME: calculate the size as part of build_content_info_message */
- /* info->size = ... */
-
- return info;
-}
-
-/**
- * camel_folder_summary_content_info_free:
- * @s:
- * @ci:
- *
- * Free the content info @ci, and all associated memory.
- **/
-void
-camel_folder_summary_content_info_free(CamelFolderSummary *s, CamelMessageContentInfo *ci)
-{
- CamelMessageContentInfo *pw, *pn;
-
- pw = ci->childs;
- ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->content_info_free(s, ci);
- while (pw) {
- pn = pw->next;
- camel_folder_summary_content_info_free(s, pw);
- pw = pn;
- }
-}
-
-/**
- * camel_folder_summary_info_free:
- * @s:
- * @mi:
- *
- * Unref and potentially free the message info @mi, and all associated memory.
- **/
-void camel_folder_summary_info_free(CamelFolderSummary *s, CamelMessageInfo *mi)
-{
- CamelMessageContentInfo *ci;
-
- g_assert(mi);
- g_assert(s);
-
- CAMEL_SUMMARY_LOCK(s, ref_lock);
-
- g_assert(mi->refcount >= 1);
-
- mi->refcount--;
- if (mi->refcount > 0) {
- CAMEL_SUMMARY_UNLOCK(s, ref_lock);
- return;
- }
-
- CAMEL_SUMMARY_UNLOCK(s, ref_lock);
-
- ci = mi->content;
-
- ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->message_info_free(s, mi);
- if (s->build_content && ci) {
- camel_folder_summary_content_info_free(s, ci);
- }
-}
-
-/**
- * camel_folder_summary_info_ref:
- * @s:
- * @mi:
- *
- * Add an extra reference to @mi.
- **/
-void camel_folder_summary_info_ref(CamelFolderSummary *s, CamelMessageInfo *mi)
-{
- g_assert(mi);
- g_assert(s);
-
- CAMEL_SUMMARY_LOCK(s, ref_lock);
- g_assert(mi->refcount >= 1);
- mi->refcount++;
- CAMEL_SUMMARY_UNLOCK(s, ref_lock);
-}
-
-/**
- * camel_folder_summary_touch:
- * @s:
- *
- * Mark the summary as changed, so that a save will save it.
- **/
-void
-camel_folder_summary_touch(CamelFolderSummary *s)
-{
- CAMEL_SUMMARY_LOCK(s, summary_lock);
- s->flags |= CAMEL_SUMMARY_DIRTY;
- CAMEL_SUMMARY_UNLOCK(s, summary_lock);
-}
-
-/**
- * camel_folder_summary_clear:
- * @s:
- *
- * Empty the summary contents.
- **/
-void
-camel_folder_summary_clear(CamelFolderSummary *s)
-{
- int i;
-
- CAMEL_SUMMARY_LOCK(s, summary_lock);
- if (camel_folder_summary_count(s) == 0) {
- CAMEL_SUMMARY_UNLOCK(s, summary_lock);
- return;
- }
-
- for (i=0;i<s->messages->len;i++)
- camel_folder_summary_info_free(s, s->messages->pdata[i]);
-
- g_ptr_array_set_size(s->messages, 0);
- g_hash_table_destroy(s->messages_uid);
- s->messages_uid = g_hash_table_new(g_str_hash, g_str_equal);
- s->flags |= CAMEL_SUMMARY_DIRTY;
- CAMEL_SUMMARY_UNLOCK(s, summary_lock);
-}
-
-/**
- * camel_folder_summary_remove:
- * @s:
- * @info:
- *
- * Remove a specific @info record from the summary.
- **/
-void camel_folder_summary_remove(CamelFolderSummary *s, CamelMessageInfo *info)
-{
- CAMEL_SUMMARY_LOCK(s, summary_lock);
- g_hash_table_remove(s->messages_uid, camel_message_info_uid(info));
- g_ptr_array_remove(s->messages, info);
- s->flags |= CAMEL_SUMMARY_DIRTY;
- CAMEL_SUMMARY_UNLOCK(s, summary_lock);
-
- camel_folder_summary_info_free(s, info);
-}
-
-/**
- * camel_folder_summary_remove_uid:
- * @s:
- * @uid:
- *
- * Remove a specific info record from the summary, by @uid.
- **/
-void camel_folder_summary_remove_uid(CamelFolderSummary *s, const char *uid)
-{
- CamelMessageInfo *oldinfo;
- char *olduid;
-
- CAMEL_SUMMARY_LOCK(s, ref_lock);
- CAMEL_SUMMARY_LOCK(s, summary_lock);
- if (g_hash_table_lookup_extended(s->messages_uid, uid, (void *)&olduid, (void *)&oldinfo)) {
- /* make sure it doesn't vanish while we're removing it */
- oldinfo->refcount++;
- CAMEL_SUMMARY_UNLOCK(s, summary_lock);
- CAMEL_SUMMARY_UNLOCK(s, ref_lock);
- camel_folder_summary_remove(s, oldinfo);
- camel_folder_summary_info_free(s, oldinfo);
- } else {
- CAMEL_SUMMARY_UNLOCK(s, summary_lock);
- CAMEL_SUMMARY_UNLOCK(s, ref_lock);
- }
-}
-
-/**
- * camel_folder_summary_remove_index:
- * @s:
- * @index:
- *
- * Remove a specific info record from the summary, by index.
- **/
-void camel_folder_summary_remove_index(CamelFolderSummary *s, int index)
-{
- CAMEL_SUMMARY_LOCK(s, summary_lock);
- if (index < s->messages->len) {
- CamelMessageInfo *info = s->messages->pdata[index];
-
- g_hash_table_remove(s->messages_uid, camel_message_info_uid(info));
- g_ptr_array_remove_index(s->messages, index);
- s->flags |= CAMEL_SUMMARY_DIRTY;
-
- CAMEL_SUMMARY_UNLOCK(s, summary_lock);
- camel_folder_summary_info_free(s, info);
- } else {
- CAMEL_SUMMARY_UNLOCK(s, summary_lock);
- }
-}
-
-/* should be sorted, for binary search */
-/* This is a tokenisation mechanism for strings written to the
- summary - to save space.
- This list can have at most 31 words. */
-static char * tokens[] = {
- "7bit",
- "8bit",
- "alternative",
- "application",
- "base64",
- "boundary",
- "charset",
- "filename",
- "html",
- "image",
- "iso-8859-1",
- "iso-8859-8",
- "message",
- "mixed",
- "multipart",
- "name",
- "octet-stream",
- "parallel",
- "plain",
- "postscript",
- "quoted-printable",
- "related",
- "rfc822",
- "text",
- "us-ascii", /* 25 words */
-};
-
-#define tokens_len (sizeof(tokens)/sizeof(tokens[0]))
-
-/* baiscally ...
- 0 = null
- 1-tokens_len == tokens[id-1]
- >=32 string, length = n-32
-*/
-
-#ifdef USE_BSEARCH
-static int
-token_search_cmp(char *key, char **index)
-{
- d(printf("comparing '%s' to '%s'\n", key, *index));
- return strcmp(key, *index);
-}
-#endif
-
-/**
- * camel_folder_summary_encode_token:
- * @out:
- * @str:
- *
- * Encode a string value, but use tokenisation and compression
- * to reduce the size taken for common mailer words. This
- * can still be used to encode normal strings as well.
- *
- * Return value: -1 on error.
- **/
-int
-camel_folder_summary_encode_token(FILE *out, const char *str)
-{
- io(printf("Encoding token: '%s'\n", str));
-
- if (str == NULL) {
- return camel_file_util_encode_uint32(out, 0);
- } else {
- int len = strlen(str);
- int i, token=-1;
-
- if (len <= 16) {
- char lower[32];
- char **match;
-
- for (i=0;i<len;i++)
- lower[i] = tolower(str[i]);
- lower[i] = 0;
-#ifdef USE_BSEARCH
- match = bsearch(lower, tokens, tokens_len, sizeof(char *), (int (*)(const void *, const void *))token_search_cmp);
- if (match)
- token = match-tokens;
-#else
- for (i=0;i<tokens_len;i++) {
- if (!strcmp(tokens[i], lower)) {
- token = i;
- break;
- }
- }
-#endif
- }
- if (token != -1) {
- return camel_file_util_encode_uint32(out, token+1);
- } else {
- if (camel_file_util_encode_uint32(out, len+32) == -1)
- return -1;
- if (fwrite(str, len, 1, out) != 1)
- return -1;
- }
- }
- return 0;
-}
-
-/**
- * camel_folder_summary_decode_token:
- * @in:
- * @str:
- *
- * Decode a token value.
- *
- * Return value: -1 on error.
- **/
-int
-camel_folder_summary_decode_token(FILE *in, char **str)
-{
- char *ret;
- guint32 len;
-
- io(printf("Decode token ...\n"));
-
- if (camel_file_util_decode_uint32(in, &len) == -1) {
- g_warning("Could not decode token from file");
- *str = NULL;
- return -1;
- }
-
- if (len<32) {
- if (len <= 0) {
- ret = NULL;
- } else if (len<= tokens_len) {
- ret = g_strdup(tokens[len-1]);
- } else {
- g_warning("Invalid token encountered: %d", len);
- *str = NULL;
- return -1;
- }
- } else if (len > 10240) {
- g_warning("Got broken string header length: %d bytes", len);
- *str = NULL;
- return -1;
- } else {
- len -= 32;
- ret = g_malloc(len+1);
- if (fread(ret, len, 1, in) != 1) {
- g_free(ret);
- *str = NULL;
- return -1;
- }
- ret[len]=0;
- }
-
- io(printf("Token = '%s'\n", ret));
-
- *str = ret;
- return 0;
-}
-
-static struct _node *
-my_list_append(struct _node **list, struct _node *n)
-{
- struct _node *ln = (struct _node *)list;
- while (ln->next)
- ln = ln->next;
- n->next = 0;
- ln->next = n;
- return n;
-}
-
-static int
-my_list_size(struct _node **list)
-{
- int len = 0;
- struct _node *ln = (struct _node *)list;
- while (ln->next) {
- ln = ln->next;
- len++;
- }
- return len;
-}
-
-static int
-summary_header_load(CamelFolderSummary *s, FILE *in)
-{
- gint32 version, flags, nextuid, count;
- time_t time;
-
- fseek(in, 0, SEEK_SET);
-
- io(printf("Loading header\n"));
-
- if (camel_file_util_decode_fixed_int32(in, &version) == -1
- || camel_file_util_decode_fixed_int32(in, &flags) == -1
- || camel_file_util_decode_fixed_int32(in, &nextuid) == -1
- || camel_file_util_decode_time_t(in, &time) == -1
- || camel_file_util_decode_fixed_int32(in, &count) == -1) {
- return -1;
- }
-
- s->nextuid = nextuid;
- s->flags = flags;
- s->time = time;
- s->saved_count = count;
- if (s->version != version) {
- g_warning("Summary header version mismatch");
- return -1;
- }
- return 0;
-}
-
-static int
-summary_header_save(CamelFolderSummary *s, FILE *out)
-{
- fseek(out, 0, SEEK_SET);
-
- io(printf("Savining header\n"));
-
- camel_file_util_encode_fixed_int32(out, s->version);
- camel_file_util_encode_fixed_int32(out, s->flags);
- camel_file_util_encode_fixed_int32(out, s->nextuid);
- camel_file_util_encode_time_t(out, s->time);
- return camel_file_util_encode_fixed_int32(out, camel_folder_summary_count(s));
-}
-
-/* are these even useful for anything??? */
-static CamelMessageInfo * message_info_new_from_parser(CamelFolderSummary *s, CamelMimeParser *mp)
-{
- CamelMessageInfo *mi = NULL;
- int state;
-
- state = camel_mime_parser_state(mp);
- switch (state) {
- case HSCAN_HEADER:
- case HSCAN_MESSAGE:
- case HSCAN_MULTIPART:
- mi = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->message_info_new(s, camel_mime_parser_headers_raw(mp));
- break;
- default:
- g_error("Invalid parser state");
- }
-
- return mi;
-}
-
-static CamelMessageContentInfo * content_info_new_from_parser(CamelFolderSummary *s, CamelMimeParser *mp)
-{
- CamelMessageContentInfo *ci = NULL;
-
- switch (camel_mime_parser_state(mp)) {
- case HSCAN_HEADER:
- case HSCAN_MESSAGE:
- case HSCAN_MULTIPART:
- ci = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->content_info_new(s, camel_mime_parser_headers_raw(mp));
- if (ci) {
- ci->type = camel_mime_parser_content_type(mp);
- header_content_type_ref(ci->type);
- }
- break;
- default:
- g_error("Invalid parser state");
- }
-
- return ci;
-}
-
-static CamelMessageInfo * message_info_new_from_message(CamelFolderSummary *s, CamelMimeMessage *msg)
-{
- CamelMessageInfo *mi;
-
- mi = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->message_info_new(s, ((CamelMimePart *)msg)->headers);
-
- return mi;
-}
-
-static CamelMessageContentInfo * content_info_new_from_message(CamelFolderSummary *s, CamelMimePart *mp)
-{
- CamelMessageContentInfo *ci;
-
- ci = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->content_info_new(s, mp->headers);
-
- return ci;
-}
-
-#ifndef NO_WARNINGS
-#warning "These should be made private again, easy to fix (used in filter-driver)"
-#endif
-char *
-camel_folder_summary_format_address(struct _header_raw *h, const char *name)
-{
- struct _header_address *addr;
- const char *text;
- char *ret;
-
- text = header_raw_find (&h, name, NULL);
- addr = header_address_decode (text);
- if (addr) {
- ret = header_address_list_format (addr);
- header_address_list_clear (&addr);
- } else {
- ret = g_strdup (text);
- }
-
- return ret;
-}
-
-char *
-camel_folder_summary_format_string(struct _header_raw *h, const char *name)
-{
- const char *text;
-
- text = header_raw_find(&h, name, NULL);
- if (text) {
- while (isspace(*text))
- text++;
- return header_decode_string(text);
- } else {
- return NULL;
- }
-}
-
-/**
- * camel_folder_summary_info_new:
- * @s:
- *
- * Allocate a new camel message info, suitable for adding
- * to this summary.
- *
- * Return value:
- **/
-CamelMessageInfo *
-camel_folder_summary_info_new(CamelFolderSummary *s)
-{
- CamelMessageInfo *mi;
-
- CAMEL_SUMMARY_LOCK(s, alloc_lock);
- if (s->message_info_chunks == NULL)
- s->message_info_chunks = e_memchunk_new(32, s->message_info_size);
- mi = e_memchunk_alloc(s->message_info_chunks);
- CAMEL_SUMMARY_UNLOCK(s, alloc_lock);
-
- memset(mi, 0, s->message_info_size);
-#ifdef DOEPOOLV
- mi->strings = e_poolv_new (s->message_info_strings);
-#endif
-#ifdef DOESTRV
- mi->strings = e_strv_new(s->message_info_strings);
-#endif
- mi->refcount = 1;
- return mi;
-}
-
-/**
- * camel_folder_summary_content_info_new:
- * @s:
- *
- * Allocate a new camel message content info, suitable for adding
- * to this summary.
- *
- * Return value:
- **/
-CamelMessageContentInfo *
-camel_folder_summary_content_info_new(CamelFolderSummary *s)
-{
- CamelMessageContentInfo *ci;
-
- CAMEL_SUMMARY_LOCK(s, alloc_lock);
- if (s->content_info_chunks == NULL)
- s->content_info_chunks = e_memchunk_new(32, s->content_info_size);
- ci = e_memchunk_alloc(s->content_info_chunks);
- CAMEL_SUMMARY_UNLOCK(s, alloc_lock);
-
- memset(ci, 0, s->content_info_size);
- return ci;
-}
-
-static CamelMessageInfo *
-message_info_new(CamelFolderSummary *s, struct _header_raw *h)
-{
- CamelMessageInfo *mi;
- const char *received;
- guchar digest[16];
- struct _header_references *refs, *scan;
- char *msgid;
- int count;
- char *subject, *from, *to, *cc, *mlist;
-
- mi = camel_folder_summary_info_new(s);
-
- subject = camel_folder_summary_format_string(h, "subject");
- from = camel_folder_summary_format_address(h, "from");
- to = camel_folder_summary_format_address(h, "to");
- cc = camel_folder_summary_format_address(h, "cc");
- mlist = header_raw_check_mailing_list(&h);
-
-#ifdef DOEPOOLV
- e_poolv_set(mi->strings, CAMEL_MESSAGE_INFO_SUBJECT, subject, TRUE);
- e_poolv_set(mi->strings, CAMEL_MESSAGE_INFO_FROM, from, TRUE);
- e_poolv_set(mi->strings, CAMEL_MESSAGE_INFO_TO, to, TRUE);
- e_poolv_set(mi->strings, CAMEL_MESSAGE_INFO_CC, cc, TRUE);
- e_poolv_set(mi->strings, CAMEL_MESSAGE_INFO_MLIST, mlist, TRUE);
-#elif defined (DOESTRV)
- e_strv_set_ref_free(mi->strings, CAMEL_MESSAGE_INFO_SUBJECT, subject);
- e_strv_set_ref_free(mi->strings, CAMEL_MESSAGE_INFO_FROM, from);
- e_strv_set_ref_free(mi->strings, CAMEL_MESSAGE_INFO_TO, to);
- e_strv_set_ref_free(mi->strings, CAMEL_MESSAGE_INFO_CC, cc);
- e_strv_set_ref_free(mi->strings, CAMEL_MESSAGE_INFO_MLIST, mlist);
-#else
- mi->subject = subject;
- mi->from = from;
- mi->to = to;
- mi->cc = cc;
- mi->mlist = mlist;
-#endif
-
- mi->user_flags = NULL;
- mi->user_tags = NULL;
- mi->date_sent = header_decode_date(header_raw_find(&h, "date", NULL), NULL);
- received = header_raw_find(&h, "received", NULL);
- if (received)
- received = strrchr(received, ';');
- if (received)
- mi->date_received = header_decode_date(received + 1, NULL);
- else
- mi->date_received = 0;
-
- msgid = header_msgid_decode(header_raw_find(&h, "message-id", NULL));
- if (msgid) {
- md5_get_digest(msgid, strlen(msgid), digest);
- memcpy(mi->message_id.id.hash, digest, sizeof(mi->message_id.id.hash));
- g_free(msgid);
- }
- /* if we have a references, use that, otherwise, see if we have an in-reply-to
- header, with parsable content, otherwise *shrug* */
- if ((refs = header_references_decode(header_raw_find(&h, "references", NULL))) != NULL
- || (refs = header_references_decode(header_raw_find(&h, "in-reply-to", NULL))) != NULL) {
- count = header_references_list_size(&refs);
- mi->references = g_malloc(sizeof(*mi->references) + ((count-1) * sizeof(mi->references->references[0])));
- count = 0;
- scan = refs;
- while (scan) {
- /* FIXME: the id might be NULL because of a small bug in camel-mime-utils */
- if (scan->id) {
- md5_get_digest(scan->id, strlen(scan->id), digest);
- memcpy(mi->references->references[count].id.hash, digest, sizeof(mi->message_id.id.hash));
- count++;
- }
- scan = scan->next;
- }
- mi->references->size = count;
- header_references_list_clear(&refs);
- }
-
- return mi;
-}
-
-
-static CamelMessageInfo *
-message_info_load(CamelFolderSummary *s, FILE *in)
-{
- CamelMessageInfo *mi;
- guint count;
- int i;
- char *subject, *from, *to, *cc, *mlist, *uid;;
-
- mi = camel_folder_summary_info_new(s);
-
- io(printf("Loading message info\n"));
-
- camel_file_util_decode_string(in, &uid);
- camel_file_util_decode_uint32(in, &mi->flags);
- camel_file_util_decode_uint32(in, &mi->size);
- camel_file_util_decode_time_t(in, &mi->date_sent);
- camel_file_util_decode_time_t(in, &mi->date_received);
- camel_file_util_decode_string(in, &subject);
- camel_file_util_decode_string(in, &from);
- camel_file_util_decode_string(in, &to);
- camel_file_util_decode_string(in, &cc);
- camel_file_util_decode_string(in, &mlist);
-
-#ifdef DOEPOOLV
- e_poolv_set(mi->strings, CAMEL_MESSAGE_INFO_UID, uid, TRUE);
- e_poolv_set(mi->strings, CAMEL_MESSAGE_INFO_SUBJECT, subject, TRUE);
- e_poolv_set(mi->strings, CAMEL_MESSAGE_INFO_FROM, from, TRUE);
- e_poolv_set(mi->strings, CAMEL_MESSAGE_INFO_TO, to, TRUE);
- e_poolv_set(mi->strings, CAMEL_MESSAGE_INFO_CC, cc, TRUE);
- e_poolv_set(mi->strings, CAMEL_MESSAGE_INFO_MLIST, mlist, TRUE);
-#elif defined (DOESTRV)
- e_strv_set_ref_free(mi->strings, CAMEL_MESSAGE_INFO_UID, uid);
- e_strv_set_ref_free(mi->strings, CAMEL_MESSAGE_INFO_SUBJECT, subject);
- e_strv_set_ref_free(mi->strings, CAMEL_MESSAGE_INFO_FROM, from);
- e_strv_set_ref_free(mi->strings, CAMEL_MESSAGE_INFO_TO, to);
- e_strv_set_ref_free(mi->strings, CAMEL_MESSAGE_INFO_CC, cc);
- e_strv_set_ref_free(mi->strings, CAMEL_MESSAGE_INFO_MLIST, mlist);
-#else
- mi->uid = uid;
- mi->subject = subject;
- mi->from = from;
- mi->to = to;
- mi->cc = cc;
- mi->mlist = mlist;
-#endif
-
- mi->content = NULL;
-
- camel_file_util_decode_fixed_int32(in, &mi->message_id.id.part.hi);
- camel_file_util_decode_fixed_int32(in, &mi->message_id.id.part.lo);
-
- if (camel_file_util_decode_uint32(in, &count) == -1 || count > 500)
- goto error;
-
- if (count > 0) {
- mi->references = g_malloc(sizeof(*mi->references) + ((count-1) * sizeof(mi->references->references[0])));
- mi->references->size = count;
- for (i=0;i<count;i++) {
- camel_file_util_decode_fixed_int32(in, &mi->references->references[i].id.part.hi);
- camel_file_util_decode_fixed_int32(in, &mi->references->references[i].id.part.lo);
- }
- }
-
- if (camel_file_util_decode_uint32(in, &count) == -1 || count > 500)
- goto error;
-
- for (i=0;i<count;i++) {
- char *name;
- camel_file_util_decode_string(in, &name);
- camel_flag_set(&mi->user_flags, name, TRUE);
- g_free(name);
- }
-
- if (camel_file_util_decode_uint32(in, &count) == -1 || count > 500)
- goto error;
-
- for (i=0;i<count;i++) {
- char *name, *value;
- camel_file_util_decode_string(in, &name);
- camel_file_util_decode_string(in, &value);
- camel_tag_set(&mi->user_tags, name, value);
- g_free(name);
- g_free(value);
- }
-
- if (!ferror(in))
- return mi;
-
-error:
- camel_folder_summary_info_free(s, mi);
-
- return NULL;
-}
-
-static int
-message_info_save(CamelFolderSummary *s, FILE *out, CamelMessageInfo *mi)
-{
- guint32 count;
- CamelFlag *flag;
- CamelTag *tag;
- int i;
-
- io(printf("Saving message info\n"));
-
- camel_file_util_encode_string(out, camel_message_info_uid(mi));
- camel_file_util_encode_uint32(out, mi->flags);
- camel_file_util_encode_uint32(out, mi->size);
- camel_file_util_encode_time_t(out, mi->date_sent);
- camel_file_util_encode_time_t(out, mi->date_received);
- camel_file_util_encode_string(out, camel_message_info_subject(mi));
- camel_file_util_encode_string(out, camel_message_info_from(mi));
- camel_file_util_encode_string(out, camel_message_info_to(mi));
- camel_file_util_encode_string(out, camel_message_info_cc(mi));
- camel_file_util_encode_string(out, camel_message_info_mlist(mi));
-
- camel_file_util_encode_fixed_int32(out, mi->message_id.id.part.hi);
- camel_file_util_encode_fixed_int32(out, mi->message_id.id.part.lo);
-
- if (mi->references) {
- camel_file_util_encode_uint32(out, mi->references->size);
- for (i=0;i<mi->references->size;i++) {
- camel_file_util_encode_fixed_int32(out, mi->references->references[i].id.part.hi);
- camel_file_util_encode_fixed_int32(out, mi->references->references[i].id.part.lo);
- }
- } else {
- camel_file_util_encode_uint32(out, 0);
- }
-
- count = camel_flag_list_size(&mi->user_flags);
- camel_file_util_encode_uint32(out, count);
- flag = mi->user_flags;
- while (flag) {
- camel_file_util_encode_string(out, flag->name);
- flag = flag->next;
- }
-
- count = camel_tag_list_size(&mi->user_tags);
- camel_file_util_encode_uint32(out, count);
- tag = mi->user_tags;
- while (tag) {
- camel_file_util_encode_string(out, tag->name);
- camel_file_util_encode_string(out, tag->value);
- tag = tag->next;
- }
-
- return ferror(out);
-}
-
-static void
-message_info_free(CamelFolderSummary *s, CamelMessageInfo *mi)
-{
-#ifdef DOEPOOLV
- e_poolv_destroy(mi->strings);
-#elif defined (DOESTRV)
- e_strv_destroy(mi->strings);
-#else
- g_free(mi->uid);
- g_free(mi->subject);
- g_free(mi->from);
- g_free(mi->to);
- g_free(mi->cc);
- g_free(mi->mlist);
-#endif
- g_free(mi->references);
- camel_flag_list_free(&mi->user_flags);
- camel_tag_list_free(&mi->user_tags);
- e_memchunk_free(s->message_info_chunks, mi);
-}
-
-static CamelMessageContentInfo *
-content_info_new(CamelFolderSummary *s, struct _header_raw *h)
-{
- CamelMessageContentInfo *ci;
-
- ci = camel_folder_summary_content_info_new(s);
-
- ci->id = header_msgid_decode(header_raw_find(&h, "content-id", NULL));
- ci->description = header_decode_string(header_raw_find(&h, "content-description", NULL));
- ci->encoding = header_content_encoding_decode(header_raw_find(&h, "content-transfer-encoding", NULL));
-
- return ci;
-}
-
-static CamelMessageContentInfo *
-content_info_load(CamelFolderSummary *s, FILE *in)
-{
- CamelMessageContentInfo *ci;
- char *type, *subtype;
- guint32 count, i;
- struct _header_content_type *ct;
-
- io(printf("Loading content info\n"));
-
- ci = camel_folder_summary_content_info_new(s);
-
- camel_folder_summary_decode_token(in, &type);
- camel_folder_summary_decode_token(in, &subtype);
- ct = header_content_type_new(type, subtype);
- g_free(type); /* can this be removed? */
- g_free(subtype);
- if (camel_file_util_decode_uint32(in, &count) == -1 || count > 500)
- goto error;
-
- for (i=0;i<count;i++) {
- char *name, *value;
- camel_folder_summary_decode_token(in, &name);
- camel_folder_summary_decode_token(in, &value);
- header_content_type_set_param(ct, name, value);
- /* TODO: do this so we dont have to double alloc/free */
- g_free(name);
- g_free(value);
- }
- ci->type = ct;
-
- camel_folder_summary_decode_token(in, &ci->id);
- camel_folder_summary_decode_token(in, &ci->description);
- camel_folder_summary_decode_token(in, &ci->encoding);
-
- camel_file_util_decode_uint32(in, &ci->size);
-
- ci->childs = NULL;
-
- if (!ferror(in))
- return ci;
-
-error:
- camel_folder_summary_content_info_free(s, ci);
- return NULL;
-}
-
-static int
-content_info_save(CamelFolderSummary *s, FILE *out, CamelMessageContentInfo *ci)
-{
- struct _header_content_type *ct;
- struct _header_param *hp;
-
- io(printf("Saving content info\n"));
-
- ct = ci->type;
- if (ct) {
- camel_folder_summary_encode_token(out, ct->type);
- camel_folder_summary_encode_token(out, ct->subtype);
- camel_file_util_encode_uint32(out, my_list_size((struct _node **)&ct->params));
- hp = ct->params;
- while (hp) {
- camel_folder_summary_encode_token(out, hp->name);
- camel_folder_summary_encode_token(out, hp->value);
- hp = hp->next;
- }
- } else {
- camel_folder_summary_encode_token(out, NULL);
- camel_folder_summary_encode_token(out, NULL);
- camel_file_util_encode_uint32(out, 0);
- }
- camel_folder_summary_encode_token(out, ci->id);
- camel_folder_summary_encode_token(out, ci->description);
- camel_folder_summary_encode_token(out, ci->encoding);
- return camel_file_util_encode_uint32(out, ci->size);
-}
-
-static void
-content_info_free(CamelFolderSummary *s, CamelMessageContentInfo *ci)
-{
- header_content_type_unref(ci->type);
- g_free(ci->id);
- g_free(ci->description);
- g_free(ci->encoding);
- e_memchunk_free(s->content_info_chunks, ci);
-}
-
-static char *
-next_uid_string(CamelFolderSummary *s)
-{
- return g_strdup_printf("%u", camel_folder_summary_next_uid(s));
-}
-
-/*
- OK
- Now this is where all the "smarts" happen, where the content info is built,
- and any indexing and what not is performed
-*/
-
-/* must have filter_lock before calling this function */
-static CamelMessageContentInfo *
-summary_build_content_info(CamelFolderSummary *s, CamelMessageInfo *msginfo, CamelMimeParser *mp)
-{
- int state, len;
- char *buffer;
- CamelMessageContentInfo *info = NULL;
- struct _header_content_type *ct;
- int body;
- int enc_id = -1, chr_id = -1, html_id = -1, idx_id = -1;
- struct _CamelFolderSummaryPrivate *p = _PRIVATE(s);
- CamelMimeFilterCharset *mfc;
- CamelMessageContentInfo *part;
-
- d(printf("building content info\n"));
-
- /* start of this part */
- state = camel_mime_parser_step(mp, &buffer, &len);
- body = camel_mime_parser_tell(mp);
-
- if (s->build_content)
- info = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->content_info_new_from_parser(s, mp);
-
- switch(state) {
- case HSCAN_HEADER:
- /* check content type for indexing, then read body */
- ct = camel_mime_parser_content_type(mp);
- /* update attachments flag as we go */
- if (!header_content_type_is(ct, "text", "*"))
- msginfo->flags |= CAMEL_MESSAGE_ATTACHMENTS;
-
- if (p->index && header_content_type_is(ct, "text", "*")) {
- char *encoding;
- const char *charset;
-
- d(printf("generating index:\n"));
-
- encoding = header_content_encoding_decode(camel_mime_parser_header(mp, "content-transfer-encoding", NULL));
- if (encoding) {
- if (!strcasecmp(encoding, "base64")) {
- d(printf(" decoding base64\n"));
- if (p->filter_64 == NULL)
- p->filter_64 = camel_mime_filter_basic_new_type(CAMEL_MIME_FILTER_BASIC_BASE64_DEC);
- else
- camel_mime_filter_reset((CamelMimeFilter *)p->filter_64);
- enc_id = camel_mime_parser_filter_add(mp, (CamelMimeFilter *)p->filter_64);
- } else if (!strcasecmp(encoding, "quoted-printable")) {
- d(printf(" decoding quoted-printable\n"));
- if (p->filter_qp == NULL)
- p->filter_qp = camel_mime_filter_basic_new_type(CAMEL_MIME_FILTER_BASIC_QP_DEC);
- else
- camel_mime_filter_reset((CamelMimeFilter *)p->filter_qp);
- enc_id = camel_mime_parser_filter_add(mp, (CamelMimeFilter *)p->filter_qp);
- } else {
- d(printf(" ignoring encoding %s\n", encoding));
- }
- g_free(encoding);
- }
-
- charset = header_content_type_param(ct, "charset");
- if (charset!=NULL
- && !(strcasecmp(charset, "us-ascii")==0
- || strcasecmp(charset, "utf-8")==0)) {
- d(printf(" Adding conversion filter from %s to UTF-8\n", charset));
- mfc = g_hash_table_lookup(p->filter_charset, charset);
- if (mfc == NULL) {
- mfc = camel_mime_filter_charset_new_convert(charset, "UTF-8");
- if (mfc)
- g_hash_table_insert(p->filter_charset, g_strdup(charset), mfc);
- } else {
- camel_mime_filter_reset((CamelMimeFilter *)mfc);
- }
- if (mfc) {
- chr_id = camel_mime_parser_filter_add(mp, (CamelMimeFilter *)mfc);
- } else {
- g_warning("Cannot convert '%s' to 'UTF-8', message index may be corrupt", charset);
- }
- }
-
-#if 0
- /* this is disabled for now */
- /* also, should this go before/instead of the charset decoding? xml interfaces are utf8 already? */
- if (header_content_type_is(ct, "text", "html")) {
- if (p->filter_html == NULL)
- p->filter_html = camel_mime_filter_html_new();
- else
- camel_mime_filter_reset((CamelMimeFilter *)p->filter_html);
- html_id = camel_mime_parser_filter_add(mp, (CamelMimeFilter *)p->filter_html);
- }
-#endif
-
- /* and this filter actually does the indexing */
- idx_id = camel_mime_parser_filter_add(mp, (CamelMimeFilter *)p->filter_index);
- }
- /* and scan/index everything */
- while (camel_mime_parser_step(mp, &buffer, &len) != HSCAN_BODY_END)
- ;
- /* and remove the filters */
- camel_mime_parser_filter_remove(mp, enc_id);
- camel_mime_parser_filter_remove(mp, chr_id);
- camel_mime_parser_filter_remove(mp, html_id);
- camel_mime_parser_filter_remove(mp, idx_id);
- break;
- case HSCAN_MULTIPART:
- d(printf("Summarising multipart\n"));
- /* update attachments flag as we go */
- ct = camel_mime_parser_content_type(mp);
- if (header_content_type_is(ct, "multipart", "mixed"))
- msginfo->flags |= CAMEL_MESSAGE_ATTACHMENTS;
-
- while (camel_mime_parser_step(mp, &buffer, &len) != HSCAN_MULTIPART_END) {
- camel_mime_parser_unstep(mp);
- part = summary_build_content_info(s, msginfo, mp);
- if (part) {
- part->parent = info;
- my_list_append((struct _node **)&info->childs, (struct _node *)part);
- }
- }
- break;
- case HSCAN_MESSAGE:
- d(printf("Summarising message\n"));
- /* update attachments flag as we go */
- msginfo->flags |= CAMEL_MESSAGE_ATTACHMENTS;
-
- part = summary_build_content_info(s, msginfo, mp);
- if (part) {
- part->parent = info;
- my_list_append((struct _node **)&info->childs, (struct _node *)part);
- }
- state = camel_mime_parser_step(mp, &buffer, &len);
- if (state != HSCAN_MESSAGE_END) {
- g_error("Bad parser state: Expecing MESSAGE_END or MESSAGE_EOF, got: %d", state);
- camel_mime_parser_unstep(mp);
- }
- break;
- }
-
- d(printf("finished building content info\n"));
-
- return info;
-}
-
-/* build the content-info, from a message */
-/* this needs no lock, as we copy all data, and ibex is threadsafe */
-static CamelMessageContentInfo *
-summary_build_content_info_message(CamelFolderSummary *s, CamelMessageInfo *msginfo, CamelMimePart *object)
-{
- CamelDataWrapper *containee;
- int parts, i;
- struct _CamelFolderSummaryPrivate *p = _PRIVATE(s);
- CamelMessageContentInfo *info = NULL, *child;
-
- if (s->build_content)
- info = ((CamelFolderSummaryClass *)(CAMEL_OBJECT_GET_CLASS(s)))->content_info_new_from_message(s, object);
-
- containee = camel_medium_get_content_object(CAMEL_MEDIUM(object));
-
- if (containee == NULL)
- return info;
-
- /* TODO: I find it odd that get_part and get_content_object do not
- add a reference, probably need fixing for multithreading */
-
- /* check for attachments */
- if (header_content_type_is(CAMEL_DATA_WRAPPER(containee)->mime_type, "multipart", "*")) {
- if (header_content_type_is(CAMEL_DATA_WRAPPER(containee)->mime_type, "multipart", "mixed"))
- msginfo->flags |= CAMEL_MESSAGE_ATTACHMENTS;
- } else if (!header_content_type_is(CAMEL_DATA_WRAPPER(containee)->mime_type, "text", "*"))
- msginfo->flags |= CAMEL_MESSAGE_ATTACHMENTS;
-
- /* using the object types is more accurate than using the mime/types */
- if (CAMEL_IS_MULTIPART(containee)) {
- parts = camel_multipart_get_number(CAMEL_MULTIPART(containee));
- for (i=0;i<parts;i++) {
- CamelMimePart *part = camel_multipart_get_part(CAMEL_MULTIPART(containee), i);
- g_assert(part);
- child = summary_build_content_info_message(s, msginfo, part);
- if (child) {
- child->parent = info;
- my_list_append((struct _node **)&info->childs, (struct _node *)child);
- }
- }
- } else if (CAMEL_IS_MIME_MESSAGE(containee)) {
- /* for messages we only look at its contents */
- child = summary_build_content_info_message(s, msginfo, (CamelMimePart *)containee);
- if (child) {
- child->parent = info;
- my_list_append((struct _node **)&info->childs, (struct _node *)child);
- }
- } else if (p->index
- && header_content_type_is(CAMEL_DATA_WRAPPER(containee)->mime_type, "text", "*")) {
- /* index all text parts if we're indexing */
- CamelStreamMem *mem = (CamelStreamMem *)camel_stream_mem_new();
-
- camel_data_wrapper_write_to_stream(containee, (CamelStream *)mem);
- ibex_index_buffer(p->index, (char *)camel_message_info_uid(msginfo), mem->buffer->data, mem->buffer->len, NULL);
- camel_object_unref((CamelObject *)mem);
- }
-
- return info;
-}
-
-/**
- * camel_flag_get:
- * @list:
- * @name:
- *
- * Find the state of the flag @name in @list.
- *
- * Return value: The state of the flag (TRUE or FALSE).
- **/
-gboolean
-camel_flag_get(CamelFlag **list, const char *name)
-{
- CamelFlag *flag;
- flag = *list;
- while (flag) {
- if (!strcmp(flag->name, name))
- return TRUE;
- flag = flag->next;
- }
- return FALSE;
-}
-
-/**
- * camel_flag_set:
- * @list:
- * @name:
- * @value:
- *
- * Set the state of a flag @name in the list @list to @value.
- *
- * Return value: Whether or not it changed.
- **/
-gboolean
-camel_flag_set(CamelFlag **list, const char *name, gboolean value)
-{
- CamelFlag *flag, *tmp;
-
- /* this 'trick' works because flag->next is the first element */
- flag = (CamelFlag *)list;
- while (flag->next) {
- tmp = flag->next;
- if (!strcmp(flag->next->name, name)) {
- if (!value) {
- flag->next = tmp->next;
- g_free(tmp);
- }
- return !value;
- }
- flag = tmp;
- }
-
- if (value) {
- tmp = g_malloc(sizeof(*tmp) + strlen(name));
- strcpy(tmp->name, name);
- tmp->next = 0;
- flag->next = tmp;
- }
- return value;
-}
-
-/**
- * camel_flag_list_size:
- * @list:
- *
- * Get the length of the flag list.
- *
- * Return value: The number of TRUE flags in the list.
- **/
-int
-camel_flag_list_size(CamelFlag **list)
-{
- int count=0;
- CamelFlag *flag;
-
- flag = *list;
- while (flag) {
- count++;
- flag = flag->next;
- }
- return count;
-}
-
-/**
- * camel_flag_list_free:
- * @list:
- *
- * Free the memory associated with the flag list @list.
- **/
-void
-camel_flag_list_free(CamelFlag **list)
-{
- CamelFlag *flag, *tmp;
- flag = *list;
- while (flag) {
- tmp = flag->next;
- g_free(flag);
- flag = tmp;
- }
- *list = NULL;
-}
-
-const char
-*camel_tag_get(CamelTag **list, const char *name)
-{
- CamelTag *tag;
-
- tag = *list;
- while (tag) {
- if (!strcmp(tag->name, name))
- return (const char *)tag->value;
- tag = tag->next;
- }
- return NULL;
-}
-
-/**
- * camel_tag_set:
- * @list:
- * @name:
- * @value:
- *
- * Set the tag @name in the tag list @list to @value.
- *
- * Return value: whether or not it changed
- **/
-gboolean
-camel_tag_set(CamelTag **list, const char *name, const char *value)
-{
- CamelTag *tag, *tmp;
-
- /* this 'trick' works because tag->next is the first element */
- tag = (CamelTag *)list;
- while (tag->next) {
- tmp = tag->next;
- if (!strcmp(tmp->name, name)) {
- if (value == NULL) { /* clear it? */
- tag->next = tmp->next;
- g_free(tmp->value);
- g_free(tmp);
- return TRUE;
- } else if (strcmp(tmp->value, value)) { /* has it changed? */
- g_free(tmp->value);
- tmp->value = g_strdup(value);
- return TRUE;
- }
- return FALSE;
- }
- tag = tmp;
- }
-
- if (value) {
- tmp = g_malloc(sizeof(*tmp)+strlen(name));
- strcpy(tmp->name, name);
- tmp->value = g_strdup(value);
- tmp->next = 0;
- tag->next = tmp;
- return TRUE;
- }
- return FALSE;
-}
-
-/**
- * camel_tag_list_size:
- * @list:
- *
- * Get the number of tags present in the tag list @list.
- *
- * Return value: The number of tags.
- **/
-int camel_tag_list_size(CamelTag **list)
-{
- int count=0;
- CamelTag *tag;
-
- tag = *list;
- while (tag) {
- count++;
- tag = tag->next;
- }
- return count;
-}
-
-/**
- * camel_tag_list_free:
- * @list:
- *
- * Free the tag list @list.
- **/
-void camel_tag_list_free(CamelTag **list)
-{
- CamelTag *tag, *tmp;
- tag = *list;
- while (tag) {
- tmp = tag->next;
- g_free(tag->value);
- g_free(tag);
- tag = tmp;
- }
- *list = NULL;
-}
-
-struct flag_names_t {
- char *name;
- guint32 value;
-} flag_names[] = {
- { "answered", CAMEL_MESSAGE_ANSWERED },
- { "deleted", CAMEL_MESSAGE_DELETED },
- { "draft", CAMEL_MESSAGE_DELETED },
- { "flagged", CAMEL_MESSAGE_FLAGGED },
- { "seen", CAMEL_MESSAGE_SEEN },
- { "attachments", CAMEL_MESSAGE_ATTACHMENTS },
- { NULL, 0 }
-};
-
-/**
- * camel_system_flag:
- * @name:
- *
- * Returns the integer value of the flag string.
- **/
-guint32
-camel_system_flag (const char *name)
-{
- struct flag_names_t *flag;
-
- g_return_val_if_fail (name != NULL, 0);
-
- for (flag = flag_names; *flag->name; flag++)
- if (!g_strcasecmp (name, flag->name))
- return flag->value;
-
- return 0;
-}
-
-/**
- * camel_system_flag_get:
- * @flags:
- * @name:
- *
- * Find the state of the flag @name in @flags.
- *
- * Return value: The state of the flag (TRUE or FALSE).
- **/
-gboolean
-camel_system_flag_get (guint32 flags, const char *name)
-{
- g_return_val_if_fail (name != NULL, FALSE);
-
- return flags & camel_system_flag (name);
-}
-
-
-/**
- * camel_message_info_new:
- *
- * Returns a new CamelMessageInfo structure.
- **/
-CamelMessageInfo *
-camel_message_info_new (void)
-{
- CamelMessageInfo *info;
-
- info = g_malloc0(sizeof(*info));
-#ifdef DOEPOOLV
- info->strings = e_poolv_new(CAMEL_MESSAGE_INFO_LAST);
-#endif
-#ifdef DOESTRV
- info->strings = e_strv_new (CAMEL_MESSAGE_INFO_LAST);
-#endif
- info->refcount = 1;
-
- return info;
-}
-
-/**
- * camel_message_info_ref:
- * @info:
- *
- * Reference an info.
- *
- * NOTE: This interface is not MT-SAFE, like the others.
- **/
-void camel_message_info_ref(CamelMessageInfo *info)
-{
- GLOBAL_INFO_LOCK(info);
- info->refcount++;
- GLOBAL_INFO_UNLOCK(info);
-}
-
-/**
- * camel_message_info_new_from_header:
- * @header: raw header
- *
- * Returns a new CamelMessageInfo structure populated by the header.
- **/
-CamelMessageInfo *
-camel_message_info_new_from_header (struct _header_raw *header)
-{
- CamelMessageInfo *info;
- char *subject, *from, *to, *cc, *mlist;
-
- subject = camel_folder_summary_format_string(header, "subject");
- from = camel_folder_summary_format_address(header, "from");
- to = camel_folder_summary_format_address(header, "to");
- cc = camel_folder_summary_format_address(header, "cc");
- mlist = header_raw_check_mailing_list(&header);
-
- info = camel_message_info_new();
-
- camel_message_info_set_subject(info, subject);
- camel_message_info_set_from(info, from);
- camel_message_info_set_to(info, to);
- camel_message_info_set_cc(info, cc);
- camel_message_info_set_mlist(info, mlist);
-
- return info;
-}
-
-/**
- * camel_message_info_dup_to:
- * @from: source message info
- * @to: destination message info
- *
- * Duplicates the contents of one CamelMessageInfo structure into another.
- * (The destination is assumed to be empty: its contents are not freed.)
- * The slightly odd interface is to allow this to be used to initialize
- * "subclasses" of CamelMessageInfo.
- **/
-void
-camel_message_info_dup_to(const CamelMessageInfo *from, CamelMessageInfo *to)
-{
- CamelFlag *flag;
- CamelTag *tag;
-
- /* Copy numbers */
- to->flags = from->flags;
- to->size = from->size;
- to->date_sent = from->date_sent;
- to->date_received = from->date_received;
- to->refcount = 1;
-
- /* Copy strings */
-#ifdef DOEPOOLV
- e_poolv_cpy (to->strings, from->strings);
-#elif defined (DOESTRV)
- /* to->strings = e_strv_new(CAMEL_MESSAGE_INFO_LAST); */
- e_strv_set(to->strings, CAMEL_MESSAGE_INFO_SUBJECT, camel_message_info_subject(from));
- e_strv_set(to->strings, CAMEL_MESSAGE_INFO_FROM, camel_message_info_from(from));
- e_strv_set(to->strings, CAMEL_MESSAGE_INFO_TO, camel_message_info_to(from));
- e_strv_set(to->strings, CAMEL_MESSAGE_INFO_CC, camel_message_info_cc(from));
- e_strv_set(to->strings, CAMEL_MESSAGE_INFO_UID, camel_message_info_uid(from));
- e_strv_set(to->strings, CAMEL_MESSAGE_INFO_UID, camel_message_info_mlist(from));
-#else
- to->subject = g_strdup(from->subject);
- to->from = g_strdup(from->from);
- to->to = g_strdup(from->to);
- to->cc = g_strdup(from->cc);
- to->uid = g_strdup(from->uid);
- to->mlist = g_strdup(from->mlist);
-#endif
- memcpy(&to->message_id, &from->message_id, sizeof(from->message_id));
-
- /* Copy structures */
- if (from->references) {
- int len = sizeof(*from->references) + ((from->references->size-1) * sizeof(from->references->references[0]));
-
- to->references = g_malloc(len);
- memcpy(to->references, from->references, len);
- } else {
- to->references = NULL;
- }
-
- flag = from->user_flags;
- while (flag) {
- camel_flag_set(&to->user_flags, flag->name, TRUE);
- flag = flag->next;
- }
-
- tag = from->user_tags;
- while (tag) {
- camel_tag_set(&to->user_tags, tag->name, tag->value);
- tag = tag->next;
- }
-
- /* No, this is impossible without knowing the class of summary we came from */
- /* FIXME some day */
- to->content = NULL;
-}
-
-/**
- * camel_message_info_free:
- * @mi: the message info
- *
- * Unref's and potentially frees a CamelMessageInfo and its contents.
- *
- * Can only be used to free CamelMessageInfo's created with
- * camel_message_info_dup_to.
- *
- * NOTE: This interface is not MT-SAFE, like the others.
- *
- **/
-void
-camel_message_info_free(CamelMessageInfo *mi)
-{
- g_return_if_fail(mi != NULL);
-
- GLOBAL_INFO_LOCK(info);
- mi->refcount--;
- if (mi->refcount > 0) {
- GLOBAL_INFO_UNLOCK(info);
- return;
- }
- GLOBAL_INFO_UNLOCK(info);
-
-#ifdef DOEPOOLV
- e_poolv_destroy(mi->strings);
-#elif defined (DOESTRV)
- e_strv_destroy(mi->strings);
-#else
- g_free(mi->uid);
- g_free(mi->subject);
- g_free(mi->from);
- g_free(mi->to);
- g_free(mi->cc);
- g_free(mi->mlist);
-#endif
- g_free(mi->references);
- camel_flag_list_free(&mi->user_flags);
- camel_tag_list_free(&mi->user_tags);
- /* FIXME: content info? */
- g_free(mi);
-}
-
-#if defined (DOEPOOLV) || defined (DOESTRV)
-const char *camel_message_info_string(const CamelMessageInfo *mi, int type)
-{
- if (mi->strings == NULL)
- return "";
-#ifdef DOEPOOLV
- return e_poolv_get(mi->strings, type);
-#else
- return e_strv_get(mi->strings, type);
-#endif
-}
-
-void camel_message_info_set_string(CamelMessageInfo *mi, int type, char *str)
-{
- g_assert(mi->strings != NULL);
-#ifdef DOEPOOLV
- e_poolv_set(mi->strings, type, str, TRUE);
-#else
- mi->strings = e_strv_set_ref_free(mi->strings, type, str);
-#endif
-}
-#endif
-
-#if 0
-static void
-content_info_dump(CamelMessageContentInfo *ci, int depth)
-{
- char *p;
-
- p = alloca(depth*4+1);
- memset(p, ' ', depth*4);
- p[depth*4] = 0;
-
- if (ci == NULL) {
- printf("%s<empty>\n", p);
- return;
- }
-
- printf("%scontent-type: %s/%s\n", p, ci->type->type, ci->type->subtype);
- printf("%scontent-transfer-encoding: %s\n", p, ci->encoding);
- printf("%scontent-description: %s\n", p, ci->description);
- printf("%ssize: %lu\n", p, (unsigned long)ci->size);
- ci = ci->childs;
- while (ci) {
- content_info_dump(ci, depth+1);
- ci = ci->next;
- }
-}
-
-void
-message_info_dump(CamelMessageInfo *mi)
-{
- if (mi == NULL) {
- printf("No message?\n");
- return;
- }
-
- printf("Subject: %s\n", camel_message_info_subject(mi));
- printf("To: %s\n", camel_message_info_to(mi));
- printf("Cc: %s\n", camel_message_info_cc(mi));
- printf("mailing list: %s\n", camel_message_info_mlist(mi));
- printf("From: %s\n", camel_message_info_from(mi));
- printf("UID: %s\n", camel_message_info_uid(mi));
- printf("Flags: %04x\n", mi->flags & 0xffff);
- content_info_dump(mi->content, 0);
-}
-
-int main(int argc, char **argv)
-{
- CamelMimeParser *mp;
- int fd;
- CamelFolderSummary *s;
- char *buffer;
- int len;
- int i;
- ibex *index;
-
- /*g_tk_init(&argc, &argv);*/
-
-#if 0
- {
- int i;
- char *s;
- char buf[1024];
-
- for (i=0;i<434712;i++) {
- memcpy(buf, " ", 50);
- buf[50] = 0;
-#if 0
- s = g_strdup(buf);
- g_free(s);
-#endif
- }
- return 0;
- }
-#endif
-
- if (argc < 2 ) {
- printf("usage: %s mbox\n", argv[0]);
- return 1;
- }
-
- fd = open(argv[1], O_RDONLY);
-
- index = ibex_open("index.ibex", O_CREAT|O_RDWR, 0600);
-
- mp = camel_mime_parser_new();
- camel_mime_parser_scan_from(mp, TRUE);
-/* camel_mime_parser_set_header_regex(mp, "^(content-[^:]*|subject|from|to|date):");*/
- camel_mime_parser_init_with_fd(mp, fd);
-
- s = camel_folder_summary_new();
- camel_folder_summary_set_build_content(s, TRUE);
-/* camel_folder_summary_set_index(s, index);*/
-
- while (camel_mime_parser_step(mp, &buffer, &len) == HSCAN_FROM) {
- /*printf("Parsing message ...\n");*/
- camel_folder_summary_add_from_parser(s, mp);
- if (camel_mime_parser_step(mp, &buffer, &len) != HSCAN_FROM_END) {
- g_warning("Uknown state encountered, excpecting %d, got %d\n", HSCAN_FROM_END, camel_mime_parser_state(mp));
- break;
- }
- }
-
- printf("Printing summary\n");
- for (i=0;i<camel_folder_summary_count(s);i++) {
- CamelMessageInfo *info = camel_folder_summary_index(s, i);
- message_info_dump(info);
- camel_folder_summary_info_free(info);
- }
-
- printf("Saivng summary\n");
- camel_folder_summary_set_filename(s, "index.summary");
- camel_folder_summary_save(s);
-
- {
- CamelFolderSummary *n;
-
- printf("\nLoading summary\n");
- n = camel_folder_summary_new();
- camel_folder_summary_set_build_content(n, TRUE);
- camel_folder_summary_set_filename(n, "index.summary");
- camel_folder_summary_load(n);
-
- printf("Printing summary\n");
- for (i=0;i<camel_folder_summary_count(n);i++) {
- CamelMessageInfo *info = camel_folder_summary_index(s, i);
- message_info_dump(info);
- camel_folder_summary_info_free(info);
- }
- camel_object_unref(n);
- }
-
-
- camel_object_unref(mp);
- camel_object_unref(s);
-
- printf("summarised %d messages\n", camel_folder_summary_count(s));
-#if 0
- printf("g_strdup count = %d\n", strdup_count);
- printf("g_malloc count = %d\n", malloc_count);
- printf("g_free count = %d\n", free_count);
-#endif
- return 0;
-}
-
-#endif
diff --git a/camel/camel-folder-summary.h b/camel/camel-folder-summary.h
deleted file mode 100644
index 6c59915194..0000000000
--- a/camel/camel-folder-summary.h
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef _CAMEL_FOLDER_SUMMARY_H
-#define _CAMEL_FOLDER_SUMMARY_H
-
-#include <stdio.h>
-#include <time.h>
-#include <camel/camel-mime-parser.h>
-#include <camel/camel-object.h>
-#include <libibex/ibex.h>
-
-#define CAMEL_FOLDER_SUMMARY(obj) CAMEL_CHECK_CAST (obj, camel_folder_summary_get_type (), CamelFolderSummary)
-#define CAMEL_FOLDER_SUMMARY_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_folder_summary_get_type (), CamelFolderSummaryClass)
-#define CAMEL_IS_FOLDER_SUMMARY(obj) CAMEL_CHECK_TYPE (obj, camel_folder_summary_get_type ())
-
-/*typedef struct _CamelFolderSummary CamelFolderSummary;*/
-typedef struct _CamelFolderSummaryClass CamelFolderSummaryClass;
-
-/* A tree of message content info structures
- describe the content structure of the message (if it has any) */
-struct _CamelMessageContentInfo {
- struct _CamelMessageContentInfo *next;
-
- struct _CamelMessageContentInfo *childs;
- struct _CamelMessageContentInfo *parent;
-
- struct _header_content_type *type;
- char *id;
- char *description;
- char *encoding;
- guint32 size;
-};
-
-/* system flag bits */
-enum _CamelMessageFlags {
- CAMEL_MESSAGE_ANSWERED = 1<<0,
- CAMEL_MESSAGE_DELETED = 1<<1,
- CAMEL_MESSAGE_DRAFT = 1<<2,
- CAMEL_MESSAGE_FLAGGED = 1<<3,
- CAMEL_MESSAGE_SEEN = 1<<4,
- CAMEL_MESSAGE_ATTACHMENTS = 1<<5,
-
- /* following flags are for the folder, and are not really permanent flags */
- CAMEL_MESSAGE_FOLDER_FLAGGED = 1<<16, /* for use by the folder implementation */
- CAMEL_MESSAGE_USER = 1<<31 /* supports user flags */
-};
-
-typedef struct _CamelFlag {
- struct _CamelFlag *next;
- char name[1]; /* name allocated as part of the structure */
-} CamelFlag;
-
-typedef struct _CamelTag {
- struct _CamelTag *next;
- char *value;
- char name[1]; /* name allocated as part of the structure */
-} CamelTag;
-
-/* a summary messageid is a 64 bit identifier (partial md5 hash) */
-typedef struct _CamelSummaryMessageID {
- union {
- guint64 id;
- unsigned char hash[8];
- struct {
- guint32 hi;
- guint32 lo;
- } part;
- } id;
-} CamelSummaryMessageID;
-
-/* summary references is a fixed size array of references */
-typedef struct _CamelSummaryReferences {
- int size;
- CamelSummaryMessageID references[1];
-} CamelSummaryReferences;
-
-/* #define DOESTRV */
-#define DOEPOOLV
-
-#if defined (DOEPOOLV) || defined (DOESTRV)
-#include "../e-util/e-memory.h"
-
-/* string array indices */
-enum {
- CAMEL_MESSAGE_INFO_UID,
- CAMEL_MESSAGE_INFO_SUBJECT,
- CAMEL_MESSAGE_INFO_FROM,
- CAMEL_MESSAGE_INFO_TO,
- CAMEL_MESSAGE_INFO_CC,
- CAMEL_MESSAGE_INFO_MLIST,
- CAMEL_MESSAGE_INFO_LAST,
-};
-#endif
-
-/* information about a given object */
-struct _CamelMessageInfo {
- /* public fields */
-#ifdef DOEPOOLV
- EPoolv *strings;
-#elif defined (DOESTRV)
- struct _EStrv *strings; /* all strings packed into a single compact array */
-#else
- char *subject;
- char *from;
- char *to;
- char *cc;
- char *mlist;
-
- char *uid;
-#endif /* DOEPOOLV */
- guint32 flags;
- guint32 size;
- guint32 refcount;
-
- time_t date_sent;
- time_t date_received;
-
- CamelSummaryMessageID message_id;/* for this message */
- CamelSummaryReferences *references;/* from parent to root */
-
- struct _CamelFlag *user_flags;
- struct _CamelTag *user_tags;
-
- /* tree of content description - NULL if it is not available */
- CamelMessageContentInfo *content;
-};
-
-enum _CamelFolderSummaryFlags {
- CAMEL_SUMMARY_DIRTY = 1<<0,
-};
-
-struct _CamelFolderSummary {
- CamelObject parent;
-
- struct _CamelFolderSummaryPrivate *priv;
-
- /* header info */
- guint32 version; /* version of file required, should be set by implementors */
- guint32 flags; /* flags */
- guint32 nextuid; /* next uid? */
- guint32 saved_count; /* how many were saved/loaded */
- time_t time; /* timestamp for this summary (for implementors to use) */
-
- /* sizes of memory objects */
- guint32 message_info_size;
- guint32 content_info_size;
-
-#if defined (DOEPOOLV) || defined (DOESTRV)
- guint32 message_info_strings;
-#endif
- /* memory allocators (setup automatically) */
- struct _EMemChunk *message_info_chunks;
- struct _EMemChunk *content_info_chunks;
-
- char *summary_path;
- gboolean build_content; /* do we try and parse/index the content, or not? */
-
- GPtrArray *messages; /* CamelMessageInfo's */
- GHashTable *messages_uid; /* CamelMessageInfo's by uid */
-};
-
-struct _CamelFolderSummaryClass {
- CamelObjectClass parent_class;
-
- /* load/save the global info */
- int (*summary_header_load)(CamelFolderSummary *, FILE *);
- int (*summary_header_save)(CamelFolderSummary *, FILE *);
-
- /* create/save/load an individual message info */
- CamelMessageInfo * (*message_info_new)(CamelFolderSummary *, struct _header_raw *);
- CamelMessageInfo * (*message_info_new_from_parser)(CamelFolderSummary *, CamelMimeParser *);
- CamelMessageInfo * (*message_info_new_from_message)(CamelFolderSummary *, CamelMimeMessage *);
- CamelMessageInfo * (*message_info_load)(CamelFolderSummary *, FILE *);
- int (*message_info_save)(CamelFolderSummary *, FILE *, CamelMessageInfo *);
- void (*message_info_free)(CamelFolderSummary *, CamelMessageInfo *);
-
- /* save/load individual content info's */
- CamelMessageContentInfo * (*content_info_new)(CamelFolderSummary *, struct _header_raw *);
- CamelMessageContentInfo * (*content_info_new_from_parser)(CamelFolderSummary *, CamelMimeParser *);
- CamelMessageContentInfo * (*content_info_new_from_message)(CamelFolderSummary *, CamelMimePart *);
- CamelMessageContentInfo * (*content_info_load)(CamelFolderSummary *, FILE *);
- int (*content_info_save)(CamelFolderSummary *, FILE *, CamelMessageContentInfo *);
- void (*content_info_free)(CamelFolderSummary *, CamelMessageContentInfo *);
-
- /* get the next uid */
- char *(*next_uid_string)(CamelFolderSummary *);
-};
-
-guint camel_folder_summary_get_type (void);
-CamelFolderSummary *camel_folder_summary_new (void);
-
-void camel_folder_summary_set_filename(CamelFolderSummary *, const char *);
-void camel_folder_summary_set_index(CamelFolderSummary *, ibex *);
-void camel_folder_summary_set_build_content(CamelFolderSummary *, gboolean state);
-
-guint32 camel_folder_summary_next_uid (CamelFolderSummary *s);
-char *camel_folder_summary_next_uid_string (CamelFolderSummary *s);
-void camel_folder_summary_set_uid (CamelFolderSummary *s, guint32 uid);
-
-/* load/save the summary in its entirety */
-int camel_folder_summary_load(CamelFolderSummary *);
-int camel_folder_summary_save(CamelFolderSummary *);
-
-/* set the dirty bit on the summary */
-void camel_folder_summary_touch(CamelFolderSummary *s);
-
-/* add a new raw summary item */
-void camel_folder_summary_add(CamelFolderSummary *, CamelMessageInfo *info);
-
-/* build/add raw summary items */
-CamelMessageInfo *camel_folder_summary_add_from_header(CamelFolderSummary *, struct _header_raw *);
-CamelMessageInfo *camel_folder_summary_add_from_parser(CamelFolderSummary *, CamelMimeParser *);
-CamelMessageInfo *camel_folder_summary_add_from_message(CamelFolderSummary *, CamelMimeMessage *);
-
-/* Just build raw summary items */
-CamelMessageInfo *camel_folder_summary_info_new(CamelFolderSummary *s);
-CamelMessageInfo *camel_folder_summary_info_new_from_header(CamelFolderSummary *, struct _header_raw *);
-CamelMessageInfo *camel_folder_summary_info_new_from_parser(CamelFolderSummary *, CamelMimeParser *);
-CamelMessageInfo *camel_folder_summary_info_new_from_message(CamelFolderSummary *, CamelMimeMessage *);
-
-void camel_folder_summary_info_ref(CamelFolderSummary *, CamelMessageInfo *);
-void camel_folder_summary_info_free(CamelFolderSummary *, CamelMessageInfo *);
-
-CamelMessageContentInfo *camel_folder_summary_content_info_new(CamelFolderSummary *s);
-void camel_folder_summary_content_info_free(CamelFolderSummary *s, CamelMessageContentInfo *ci);
-
-/* removes a summary item, doesn't fix content offsets */
-void camel_folder_summary_remove(CamelFolderSummary *s, CamelMessageInfo *info);
-void camel_folder_summary_remove_uid(CamelFolderSummary *s, const char *uid);
-void camel_folder_summary_remove_index(CamelFolderSummary *s, int);
-/* remove all items */
-void camel_folder_summary_clear(CamelFolderSummary *s);
-
-/* lookup functions */
-int camel_folder_summary_count(CamelFolderSummary *);
-CamelMessageInfo *camel_folder_summary_index(CamelFolderSummary *, int);
-CamelMessageInfo *camel_folder_summary_uid(CamelFolderSummary *, const char *uid);
-GPtrArray *camel_folder_summary_array(CamelFolderSummary *s);
-void camel_folder_summary_array_free(CamelFolderSummary *s, GPtrArray *array);
-
-/* summary formatting utils */
-char *camel_folder_summary_format_address(struct _header_raw *h, const char *name);
-char *camel_folder_summary_format_string(struct _header_raw *h, const char *name);
-
-/* basically like strings, but certain keywords can be compressed and de-cased */
-int camel_folder_summary_encode_token(FILE *, const char *);
-int camel_folder_summary_decode_token(FILE *, char **);
-
-/* message flag operations */
-gboolean camel_flag_get(CamelFlag **list, const char *name);
-gboolean camel_flag_set(CamelFlag **list, const char *name, gboolean state);
-int camel_flag_list_size(CamelFlag **list);
-void camel_flag_list_free(CamelFlag **list);
-
-guint32 camel_system_flag (const char *name);
-gboolean camel_system_flag_get (guint32 flags, const char *name);
-
-/* message tag operations */
-const char *camel_tag_get(CamelTag **list, const char *name);
-gboolean camel_tag_set(CamelTag **list, const char *name, const char *value);
-int camel_tag_list_size(CamelTag **list);
-void camel_tag_list_free(CamelTag **list);
-
-/* message info utils for working with pseudo-messageinfo structures
- NOTE: These cannot be added to a real summary object, but suffice for all
- other external interfaces that use message info's */
-CamelMessageInfo *camel_message_info_new(void);
-void camel_message_info_ref(CamelMessageInfo *info);
-CamelMessageInfo *camel_message_info_new_from_header(struct _header_raw *header);
-void camel_message_info_dup_to(const CamelMessageInfo *from, CamelMessageInfo *to);
-void camel_message_info_free(CamelMessageInfo *mi);
-
-/* accessors */
-#if defined (DOEPOOLV) || defined (DOESTRV)
-const char *camel_message_info_string(const CamelMessageInfo *mi, int type);
-#define camel_message_info_subject(x) camel_message_info_string((const CamelMessageInfo *)(x), CAMEL_MESSAGE_INFO_SUBJECT)
-#define camel_message_info_from(x) camel_message_info_string((const CamelMessageInfo *)(x), CAMEL_MESSAGE_INFO_FROM)
-#define camel_message_info_to(x) camel_message_info_string((const CamelMessageInfo *)(x), CAMEL_MESSAGE_INFO_TO)
-#define camel_message_info_cc(x) camel_message_info_string((const CamelMessageInfo *)(x), CAMEL_MESSAGE_INFO_CC)
-#define camel_message_info_uid(x) camel_message_info_string((const CamelMessageInfo *)(x), CAMEL_MESSAGE_INFO_UID)
-#define camel_message_info_mlist(x) camel_message_info_string((const CamelMessageInfo *)(x), CAMEL_MESSAGE_INFO_MLIST)
-
-void camel_message_info_set_string(CamelMessageInfo *mi, int type, char *str);
-#define camel_message_info_set_subject(x, s) camel_message_info_set_string(x, CAMEL_MESSAGE_INFO_SUBJECT, s)
-#define camel_message_info_set_from(x, s) camel_message_info_set_string(x, CAMEL_MESSAGE_INFO_FROM, s)
-#define camel_message_info_set_to(x, s) camel_message_info_set_string(x, CAMEL_MESSAGE_INFO_TO, s)
-#define camel_message_info_set_cc(x, s) camel_message_info_set_string(x, CAMEL_MESSAGE_INFO_CC, s)
-#define camel_message_info_set_uid(x, s) camel_message_info_set_string(x, CAMEL_MESSAGE_INFO_UID, s)
-#define camel_message_info_set_mlist(x, s) camel_message_info_set_string(x, CAMEL_MESSAGE_INFO_MLIST, s)
-
-#else
-
-#define camel_message_info_subject(x) (((CamelMessageInfo *)(x))->subject?((CamelMessageInfo *)(x))->subject:"")
-#define camel_message_info_from(x) (((CamelMessageInfo *)(x))->from?((CamelMessageInfo *)(x))->from:"")
-#define camel_message_info_to(x) (((CamelMessageInfo *)(x))->to?((CamelMessageInfo *)(x))->to:"")
-#define camel_message_info_cc(x) (((CamelMessageInfo *)(x))->cc?((CamelMessageInfo *)(x))->cc:"")
-#define camel_message_info_uid(x) (((CamelMessageInfo *)(x))->uid?((CamelMessageInfo *)(x))->uid:"")
-#define camel_message_info_mlist(x) (((CamelMessageInfo *)(x))->mlist?((CamelMessageInfo *)(x))->mlist:"")
-
-#define camel_message_info_set_subject(x, s) (g_free(((CamelMessageInfo *)(x))->subject),((CamelMessageInfo *)(x))->subject = (s))
-#define camel_message_info_set_from(x, s) (g_free(((CamelMessageInfo *)(x))->from),((CamelMessageInfo *)(x))->from = (s))
-#define camel_message_info_set_to(x, s) (g_free(((CamelMessageInfo *)(x))->to),((CamelMessageInfo *)(x))->to = (s))
-#define camel_message_info_set_cc(x, s) (g_free(((CamelMessageInfo *)(x))->cc),((CamelMessageInfo *)(x))->cc = (s))
-#define camel_message_info_set_uid(x, s) (g_free(((CamelMessageInfo *)(x))->uid),((CamelMessageInfo *)(x))->uid = (s))
-#define camel_message_info_set_mlist(x, s) (g_free(((CamelMessageInfo *)(x))->mlist),((CamelMessageInfo *)(x))->mlist = (s))
-#endif
-
-#endif /* ! _CAMEL_FOLDER_SUMMARY_H */
diff --git a/camel/camel-folder-thread.c b/camel/camel-folder-thread.c
deleted file mode 100644
index 5187901016..0000000000
--- a/camel/camel-folder-thread.c
+++ /dev/null
@@ -1,784 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/* TODO: This could probably be made a camel object, but it isn't really required */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <sys/types.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <ctype.h>
-#include <glib.h>
-
-#include "camel-folder-thread.h"
-#include "e-util/e-memory.h"
-
-#define d(x)
-
-#define TIMEIT
-
-#ifdef TIMEIT
-#include <sys/time.h>
-#include <unistd.h>
-#endif
-
-static void
-container_add_child(CamelFolderThreadNode *node, CamelFolderThreadNode *child)
-{
- d(printf("\nAdding child %p to parent %p \n", child, node));
- child->next = node->child;
- node->child = child;
- child->parent = node;
-}
-
-static void
-container_parent_child(CamelFolderThreadNode *parent, CamelFolderThreadNode *child)
-{
- CamelFolderThreadNode *c, *node;
-
- /* are we already the right parent? */
- if (child->parent == parent)
- return;
-
- /* would this create a loop? */
- node = parent->parent;
- while (node) {
- if (node == child)
- return;
- node = node->parent;
- }
-
- /* are we unparented? */
- if (child->parent == NULL) {
- container_add_child(parent, child);
- return;
- }
-
- /* else remove child from its existing parent, and reparent */
- node = child->parent;
- c = (CamelFolderThreadNode *)&node->child;
- d(printf("scanning children:\n"));
- while (c->next) {
- d(printf(" %p\n", c));
- if (c->next==child) {
- d(printf("found node %p\n", child));
- c->next = c->next->next;
- child->parent = NULL;
- container_add_child(parent, child);
- return;
- }
- c = c->next;
- }
-
- printf("DAMN, we shouldn't be here!\n");
-}
-
-static void
-prune_empty(CamelFolderThread *thread, CamelFolderThreadNode **cp)
-{
- CamelFolderThreadNode *child, *next, *c, *lastc;
-
- /* yes, this is intentional */
- lastc = (CamelFolderThreadNode *)cp;
- while (lastc->next) {
- c = lastc->next;
-
- d(printf("checking message %p %p (%08x%08x)\n", c,
- c->message, c->message?c->message->message_id.id.part.hi:0,
- c->message?c->message->message_id.id.part.lo:0));
- if (c->message == NULL) {
- if (c->child == NULL) {
- d(printf("removing empty node\n"));
- lastc->next = c->next;
- e_memchunk_free(thread->node_chunks, c);
- continue;
- }
- if (c->parent || c->child->next==0) {
- d(printf("promoting child\n"));
- lastc->next = c->next; /* remove us */
- child = c->child;
- while (child) {
- next = child->next;
-
- child->parent = c->parent;
- child->next = lastc->next;
- lastc->next = child;
-
- child = next;
- }
- continue;
- }
- }
- prune_empty(thread, &c->child);
- lastc = c;
- }
-}
-
-static void
-hashloop(void *key, void *value, void *data)
-{
- CamelFolderThreadNode *c = value;
- CamelFolderThreadNode *tail = data;
-
- if (c->parent == NULL) {
- c->next = tail->next;
- tail->next = c;
- }
-}
-
-static char *
-get_root_subject(CamelFolderThreadNode *c, int *re)
-{
- char *s, *p;
- CamelFolderThreadNode *scan;
-
- s = NULL;
- *re = FALSE;
- if (c->message)
- s = (char *)camel_message_info_subject(c->message);
- else {
- /* one of the children will always have a message */
- scan = c->child;
- while (scan) {
- if (scan->message) {
- s = (char *)camel_message_info_subject(scan->message);
- break;
- }
- scan = scan->next;
- }
- }
- if (s != NULL) {
- while (*s) {
- while (isspace(*s))
- s++;
- if (s[0] == 0)
- break;
- if ((s[0] == 'r' || s[0]=='R')
- && (s[1] == 'e' || s[1]=='E')) {
- p = s+2;
- while (isdigit(*p) || (ispunct(*p) && (*p != ':')))
- p++;
- if (*p==':') {
- *re = TRUE;
- s = p+1;
- } else
- break;
- } else
- break;
- }
- if (*s)
- return s;
- }
- return NULL;
-}
-
-/* this can be pretty slow, but not used often */
-/* clast cannot be null */
-static void
-remove_node(CamelFolderThreadNode **list, CamelFolderThreadNode *node, CamelFolderThreadNode **clast)
-{
- CamelFolderThreadNode *c;
-
- /* this is intentional, even if it looks funny */
- /* if we have a parent, then we should remove it from the parent list,
- otherwise we remove it from the root list */
- if (node->parent) {
- c = (CamelFolderThreadNode *)&node->parent->child;
- } else {
- c = (CamelFolderThreadNode *)list;
- }
- while (c->next) {
- if (c->next == node) {
- if (*clast == c->next)
- *clast = c;
- c->next = c->next->next;
- return;
- }
- c = c->next;
- }
-
- printf("ERROR: removing node %p failed\n", node);
-}
-
-static void
-group_root_set(CamelFolderThread *thread, CamelFolderThreadNode **cp)
-{
- GHashTable *subject_table = g_hash_table_new(g_str_hash, g_str_equal);
- CamelFolderThreadNode *c, *clast, *scan, *container;
-
- /* gather subject lines */
- d(printf("gathering subject lines\n"));
- clast = (CamelFolderThreadNode *)cp;
- c = clast->next;
- while (c) {
- c->root_subject = get_root_subject(c, &c->re);
- if (c->root_subject) {
- container = g_hash_table_lookup(subject_table, c->root_subject);
- if (container == NULL
- || (container->message == NULL && c->message)
- || (container->re == TRUE && !c->re)) {
- g_hash_table_insert(subject_table, c->root_subject, c);
- }
- }
- c = c->next;
- }
-
- /* merge common subjects? */
- clast = (CamelFolderThreadNode *)cp;
- while (clast->next) {
- c = clast->next;
- d(printf("checking %p %s\n", c, c->root_subject));
- if (c->root_subject
- && (container = g_hash_table_lookup(subject_table, c->root_subject))
- && (container != c)) {
- d(printf(" matching %p %s\n", container, container->root_subject));
- if (c->message == NULL && container->message == NULL) {
- d(printf("merge containers children\n"));
- /* steal the children from c onto container, and unlink c */
- scan = (CamelFolderThreadNode *)&container->child;
- while (scan->next)
- scan = scan->next;
- scan->next = c->child;
- clast->next = c->next;
- e_memchunk_free(thread->node_chunks, c);
- continue;
- } if (c->message == NULL && container->message != NULL) {
- d(printf("container is non-empty parent\n"));
- remove_node(cp, container, &clast);
- container_add_child(c, container);
- } else if (c->message != NULL && container->message == NULL) {
- d(printf("container is empty child\n"));
- clast->next = c->next;
- container_add_child(container, c);
- continue;
- } else if (c->re && !container->re) {
- d(printf("container is re\n"));
- clast->next = c->next;
- container_add_child(container, c);
- continue;
- } else if (!c->re && container->re) {
- d(printf("container is not re\n"));
- remove_node(cp, container, &clast);
- container_add_child(c, container);
- } else if (c->re && container->re) {
- d(printf("subjects are common %p and %p\n", c, container));
-
- /* build a phantom node */
- remove_node(cp, container, &clast);
- remove_node(cp, c, &clast);
-
- scan = e_memchunk_alloc0(thread->node_chunks);
-
- scan->root_subject = c->root_subject;
- scan->re = c->re && container->re;
- scan->next = c->next;
- clast->next = scan;
- container_add_child(scan, c);
- container_add_child(scan, container);
- clast = scan;
- g_hash_table_insert(subject_table, scan->root_subject, scan);
- continue;
- }
- }
- clast = c;
- }
- g_hash_table_destroy(subject_table);
-}
-
-struct _tree_info {
- GHashTable *visited;
-};
-
-static int
-dump_tree_rec(struct _tree_info *info, CamelFolderThreadNode *c, int depth)
-{
- char *p;
- int count=0;
-
- p = alloca(depth*2+1);
- memset(p, ' ', depth*2);
- p[depth*2] = 0;
-
- while (c) {
- if (g_hash_table_lookup(info->visited, c)) {
- printf("WARNING: NODE REVISITED: %p\n", c);
- } else {
- g_hash_table_insert(info->visited, c, c);
- }
- if (c->message) {
- printf("%s %p Subject: %s <%.8s>\n", p, c, camel_message_info_subject(c->message), c->message->message_id.id.hash);
- count += 1;
- } else {
- printf("%s %p <empty>\n", p, c);
- }
- if (c->child)
- count += dump_tree_rec(info, c->child, depth+1);
- c = c->next;
- }
- return count;
-}
-
-int
-camel_folder_threaded_messages_dump(CamelFolderThreadNode *c)
-{
- int count;
- struct _tree_info info;
-
- info.visited = g_hash_table_new(g_direct_hash, g_direct_equal);
- count = dump_tree_rec(&info, c, 0);
- g_hash_table_destroy(info.visited);
- return count;
-}
-
-static int
-sort_node(const void *a, const void *b)
-{
- const CamelFolderThreadNode *a1 = ((CamelFolderThreadNode **)a)[0];
- const CamelFolderThreadNode *b1 = ((CamelFolderThreadNode **)b)[0];
-
- /* if we have no message, it must be a dummy node, which
- also means it must have a child, just use that as the
- sort data (close enough?) */
- if (a1->message == NULL)
- a1 = a1->child;
- if (b1->message == NULL)
- b1 = b1->child;
- if (a1->order == b1->order)
- return 0;
- if (a1->order < b1->order)
- return -1;
- else
- return 1;
-}
-
-static void
-sort_thread(CamelFolderThreadNode **cp)
-{
- CamelFolderThreadNode *c, *head, **carray;
- int size=0;
-
- c = *cp;
- while (c) {
- /* sort the children while we're at it */
- if (c->child)
- sort_thread(&c->child);
- size++;
- c = c->next;
- }
- if (size<2)
- return;
- carray = alloca(size*sizeof(CamelFolderThreadNode *));
- c = *cp;
- size=0;
- while (c) {
- carray[size] = c;
- c = c->next;
- size++;
- }
- qsort(carray, size, sizeof(CamelFolderThreadNode *), sort_node);
- size--;
- head = carray[size];
- head->next = NULL;
- size--;
- do {
- c = carray[size];
- c->next = head;
- head = c;
- size--;
- } while (size>=0);
- *cp = head;
-}
-
-static guint id_hash(void *key)
-{
- CamelSummaryMessageID *id = (CamelSummaryMessageID *)key;
-
- return id->id.part.lo;
-}
-
-static gint id_equal(void *a, void *b)
-{
- return ((CamelSummaryMessageID *)a)->id.id == ((CamelSummaryMessageID *)b)->id.id;
-}
-
-/**
- * camel_folder_thread_messages_new:
- * @folder:
- * @uids: The subset of uid's to thread. If NULL. then thread all
- * uid's in @folder.
- *
- * Thread a (subset) of the messages in a folder. And sort the result
- * in summary order.
- *
- * This function is probably to be removed soon.
- *
- * Return value: A CamelFolderThread contianing a tree of CamelFolderThreadNode's
- * which represent the threaded structure of the messages.
- **/
-CamelFolderThread *
-camel_folder_thread_messages_new(CamelFolder *folder, GPtrArray *uids)
-{
- GHashTable *id_table, *no_id_table;
- int i;
- CamelFolderThreadNode *c, *child, *head;
- CamelFolderThread *thread;
- GHashTable *wanted = NULL;
- GPtrArray *summary;
-
-#ifdef TIMEIT
- struct timeval start, end;
- unsigned long diff;
-
- gettimeofday(&start, NULL);
-#endif
-
- thread = g_malloc(sizeof(*thread));
- thread->tree = NULL;
- thread->node_chunks = e_memchunk_new(32, sizeof(CamelFolderThreadNode));
- thread->folder = folder;
- camel_object_ref((CamelObject *)folder);
-
- /* wanted is the list of what we want, we put it in a hash for quick lookup */
- if (uids) {
- wanted = g_hash_table_new(g_str_hash, g_str_equal);
- for (i=0;i<uids->len;i++)
- g_hash_table_insert(wanted, uids->pdata[i], uids->pdata[i]);
- }
-
- thread->summary = summary = camel_folder_get_summary(folder);
-
- id_table = g_hash_table_new((GHashFunc)id_hash, (GCompareFunc)id_equal);
- no_id_table = g_hash_table_new(NULL, NULL);
- for (i=0;i<summary->len;i++) {
- CamelMessageInfo *mi = summary->pdata[i];
- const char *uid = camel_message_info_uid(mi);
-
- if (wanted && g_hash_table_lookup(wanted, uid) == 0)
- continue;
-
- if (mi->message_id.id.id) {
- c = g_hash_table_lookup(id_table, &mi->message_id);
- /* check for duplicate messages */
- if (c) {
- /* if duplicate, just make out it is a no-id message, but try and insert it
- into the right spot in the tree */
- d(printf("doing: (duplicate message id)\n"));
- c = e_memchunk_alloc0(thread->node_chunks);
- g_hash_table_insert(no_id_table, (void *)mi, c);
- } else {
- d(printf("doing : %08x%08x (%s)\n", mi->message_id.id.part.hi, mi->message_id.id.part.lo, camel_message_info_subject(mi)));
- c = e_memchunk_alloc0(thread->node_chunks);
- g_hash_table_insert(id_table, (void *)&mi->message_id, c);
- }
- } else {
- d(printf("doing : (no message id)\n"));
- c = e_memchunk_alloc0(thread->node_chunks);
- g_hash_table_insert(no_id_table, (void *)mi, c);
- }
-
- c->message = mi;
- c->order = i;
- child = c;
- if (mi->references) {
- int j;
-
- d(printf("references:\n"));
- for (j=0;j<mi->references->size;j++) {
- /* should never be empty, but just incase */
- if (mi->references->references[j].id.id == 0)
- continue;
-
- c = g_hash_table_lookup(id_table, &mi->references->references[j]);
- if (c == NULL) {
- d(printf("not found\n"));
- c = e_memchunk_alloc0(thread->node_chunks);
- g_hash_table_insert(id_table, &mi->references->references[j], c);
- }
- if (c!=child)
- container_parent_child(c, child);
- child = c;
- }
- }
- }
-
- d(printf("\n\n"));
- /* build a list of root messages (no parent) */
- head = NULL;
- g_hash_table_foreach(id_table, hashloop, &head);
- g_hash_table_foreach(no_id_table, hashloop, &head);
-
- g_hash_table_destroy(id_table);
- g_hash_table_destroy(no_id_table);
-
- /* remove empty parent nodes */
- prune_empty(thread, &head);
-
- /* find any siblings which missed out */
- group_root_set(thread, &head);
-
-#if 0
- printf("finished\n");
- i = camel_folder_thread_messages_dump(head);
- printf("%d count, %d items in tree\n", uids->len, i);
-#endif
-
- sort_thread(&head);
-
- /* remove any phantom nodes, this could possibly be put in group_root_set()? */
- c = (CamelFolderThreadNode *)&head;
- while (c && c->next) {
- CamelFolderThreadNode *scan, *newtop;
-
- child = c->next;
- if (child->message == NULL) {
- newtop = child->child;
- /* unlink pseudo node */
- c->next = newtop;
-
- /* link its siblings onto the end of its children */
- scan = (CamelFolderThreadNode *)&newtop->child;
- while (scan->next)
- scan = scan->next;
- scan->next = newtop->next;
- /* and link the now 'real' node into the list */
- newtop->next = child->next;
- c = newtop;
- e_memchunk_free(thread->node_chunks, child);
- } else {
- c = child;
- }
- }
-
- /* this is only debug assertion stuff */
- c = (CamelFolderThreadNode *)&head;
- while (c->next) {
- c = c->next;
- if (c->message == NULL)
- g_warning("threading missed removing a pseudo node: %s\n", c->root_subject);
- }
-
- thread->tree = head;
-
-#ifdef TIMEIT
- gettimeofday(&end, NULL);
- diff = end.tv_sec * 1000 + end.tv_usec/1000;
- diff -= start.tv_sec * 1000 + start.tv_usec/1000;
- printf("Message threading %d messages took %ld.%03ld seconds\n",
- uids->len, diff / 1000, diff % 1000);
-#endif
-
- return thread;
-}
-
-/**
- * camel_folder_thread_messages_new_summary:
- * @summary: Array of CamelMessageInfo's to thread.
- *
- * Thread a list of MessageInfo's. The summary must remain valid for the
- * life of the CamelFolderThread created by this function, and it is upto the
- * caller to ensure this.
- *
- * Return value: A CamelFolderThread contianing a tree of CamelFolderThreadNode's
- * which represent the threaded structure of the messages.
- **/
-CamelFolderThread *
-camel_folder_thread_messages_new_summary(GPtrArray *summary)
-{
- GHashTable *id_table, *no_id_table;
- int i;
- CamelFolderThreadNode *c, *child, *head;
- CamelFolderThread *thread;
-
-#ifdef TIMEIT
- struct timeval start, end;
- unsigned long diff;
-
- gettimeofday(&start, NULL);
-#endif
-
- thread = g_malloc(sizeof(*thread));
- thread->tree = NULL;
- thread->node_chunks = e_memchunk_new(32, sizeof(CamelFolderThreadNode));
- thread->folder = NULL;
- thread->summary = NULL;
-
- id_table = g_hash_table_new((GHashFunc)id_hash, (GCompareFunc)id_equal);
- no_id_table = g_hash_table_new(NULL, NULL);
- for (i=0;i<summary->len;i++) {
- CamelMessageInfo *mi = summary->pdata[i];
-
- if (mi->message_id.id.id) {
- c = g_hash_table_lookup(id_table, &mi->message_id);
- /* check for duplicate messages */
- if (c) {
- /* if duplicate, just make out it is a no-id message, but try and insert it
- into the right spot in the tree */
- d(printf("doing: (duplicate message id)\n"));
- c = e_memchunk_alloc0(thread->node_chunks);
- g_hash_table_insert(no_id_table, (void *)mi, c);
- } else {
- d(printf("doing : %08x%08x (%s)\n", mi->message_id.id.part.hi, mi->message_id.id.part.lo, camel_message_info_subject(mi)));
- c = e_memchunk_alloc0(thread->node_chunks);
- g_hash_table_insert(id_table, (void *)&mi->message_id, c);
- }
- } else {
- d(printf("doing : (no message id)\n"));
- c = e_memchunk_alloc0(thread->node_chunks);
- g_hash_table_insert(no_id_table, (void *)mi, c);
- }
-
- c->message = mi;
- c->order = i;
- child = c;
- if (mi->references) {
- int j;
-
- d(printf("references:\n"));
- for (j=0;j<mi->references->size;j++) {
- /* should never be empty, but just incase */
- if (mi->references->references[j].id.id == 0)
- continue;
-
- c = g_hash_table_lookup(id_table, &mi->references->references[j]);
- if (c == NULL) {
- d(printf("not found\n"));
- c = e_memchunk_alloc0(thread->node_chunks);
- g_hash_table_insert(id_table, &mi->references->references[j], c);
- }
- if (c!=child)
- container_parent_child(c, child);
- child = c;
- }
- }
- }
-
- d(printf("\n\n"));
- /* build a list of root messages (no parent) */
- head = NULL;
- g_hash_table_foreach(id_table, hashloop, &head);
- g_hash_table_foreach(no_id_table, hashloop, &head);
-
- g_hash_table_destroy(id_table);
- g_hash_table_destroy(no_id_table);
-
- /* remove empty parent nodes */
- prune_empty(thread, &head);
-
- /* find any siblings which missed out */
- group_root_set(thread, &head);
-
-#if 0
- printf("finished\n");
- i = camel_folder_thread_messages_dump(head);
- printf("%d count, %d items in tree\n", uids->len, i);
-#endif
-
- sort_thread(&head);
-
- /* remove any phantom nodes, this could possibly be put in group_root_set()? */
- c = (CamelFolderThreadNode *)&head;
- while (c && c->next) {
- CamelFolderThreadNode *scan, *newtop;
-
- child = c->next;
- if (child->message == NULL) {
- newtop = child->child;
- /* unlink pseudo node */
- c->next = newtop;
-
- /* link its siblings onto the end of its children */
- scan = (CamelFolderThreadNode *)&newtop->child;
- while (scan->next)
- scan = scan->next;
- scan->next = newtop->next;
- /* and link the now 'real' node into the list */
- newtop->next = child->next;
- c = newtop;
- e_memchunk_free(thread->node_chunks, child);
- } else {
- c = child;
- }
- }
-
- /* this is only debug assertion stuff */
- c = (CamelFolderThreadNode *)&head;
- while (c->next) {
- c = c->next;
- if (c->message == NULL)
- g_warning("threading missed removing a pseudo node: %s\n", c->root_subject);
- }
-
- thread->tree = head;
-
-#ifdef TIMEIT
- gettimeofday(&end, NULL);
- diff = end.tv_sec * 1000 + end.tv_usec/1000;
- diff -= start.tv_sec * 1000 + start.tv_usec/1000;
- printf("Message threading %d messages took %ld.%03ld seconds\n",
- summary->len, diff / 1000, diff % 1000);
-#endif
-
- return thread;
-}
-
-/**
- * camel_folder_thread_messages_destroy:
- * @thread:
- *
- * Free all memory associated with the thread descriptor @thread.
- **/
-void
-camel_folder_thread_messages_destroy(CamelFolderThread *thread)
-{
- if (thread->folder) {
- camel_folder_free_summary(thread->folder, thread->summary);
- camel_object_unref((CamelObject *)thread->folder);
- }
- e_memchunk_destroy(thread->node_chunks);
- g_free(thread);
-}
-
-#if 0
-/* intended for incremental update. Not implemented yet as, well, its probbaly
- not worth it (memory overhead vs speed, may as well just rethread the whole
- lot?)
-
- But it might be implemented at a later date.
-*/
-void
-camel_folder_thread_messages_add(CamelFolderThread *thread, CamelFolder *folder, GPtrArray *uids)
-{
-
-}
-
-void
-thread_messages_remove(CamelFolderThread *thread, CamelFolder *folder, GPtrArray *uids)
-{
-
-}
-#endif
diff --git a/camel/camel-folder-thread.h b/camel/camel-folder-thread.h
deleted file mode 100644
index d75fc35c54..0000000000
--- a/camel/camel-folder-thread.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef _CAMEL_FOLDER_THREAD_H
-#define _CAMEL_FOLDER_THREAD_H
-
-#include <camel/camel-folder-summary.h>
-#include <camel/camel-folder.h>
-
-typedef struct _CamelFolderThreadNode {
- struct _CamelFolderThreadNode *next,
- *parent,
- *child;
- const CamelMessageInfo *message;
- char *root_subject; /* cached root equivalent subject */
- int re; /* re version of subject? */
- int order;
-} CamelFolderThreadNode;
-
-typedef struct CamelFolderThread {
- struct _CamelFolderThreadNode *tree;
- struct _EMemChunk *node_chunks;
- CamelFolder *folder;
- GPtrArray *summary;
-} CamelFolderThread;
-
-CamelFolderThread *camel_folder_thread_messages_new(CamelFolder *folder, GPtrArray *uids);
-
-/* new improved interface (believe it or not!) */
-CamelFolderThread *camel_folder_thread_messages_new_summary(GPtrArray *summary);
-/*
-void camel_folder_thread_messages_add(CamelFolderThread *threads, CamelFolder *folder, GPtrArray *uids);
-void camel_folder_thread_messages_remove(CamelFolderThread *threads, CamelFolder *folder, GPtrArray *uids);
-*/
-void camel_folder_thread_messages_destroy(CamelFolderThread *threads);
-
-/* debugging function only */
-int camel_folder_threaded_messages_dump(CamelFolderThreadNode *c);
-
-#endif /* !_CAMEL_FOLDER_THREAD_H */
diff --git a/camel/camel-folder.c b/camel/camel-folder.c
deleted file mode 100644
index 671fe75142..0000000000
--- a/camel/camel-folder.c
+++ /dev/null
@@ -1,1742 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-folder.c: Abstract class for an email folder */
-
-/*
- * Author:
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include <camel/camel-folder.h>
-#include <camel/camel-exception.h>
-#include "camel-store.h"
-#include "camel-mime-message.h"
-#include "string-utils.h"
-#include "e-util/e-memory.h"
-
-#include "camel-private.h"
-
-#define d(x)
-
-static CamelObjectClass *parent_class = NULL;
-
-/* Returns the class for a CamelFolder */
-#define CF_CLASS(so) CAMEL_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-static void camel_folder_finalize (CamelObject *object);
-
-static void refresh_info (CamelFolder *folder, CamelException *ex);
-
-static void folder_sync (CamelFolder *folder, gboolean expunge,
- CamelException *ex);
-
-static const gchar *get_name (CamelFolder *folder);
-static const gchar *get_full_name (CamelFolder *folder);
-static CamelStore *get_parent_store (CamelFolder *folder);
-
-static guint32 get_permanent_flags (CamelFolder *folder);
-static guint32 get_message_flags (CamelFolder *folder, const char *uid);
-static void set_message_flags (CamelFolder *folder, const char *uid,
- guint32 flags, guint32 set);
-static gboolean get_message_user_flag (CamelFolder *folder, const char *uid, const char *name);
-static void set_message_user_flag (CamelFolder *folder, const char *uid,
- const char *name, gboolean value);
-static const char *get_message_user_tag(CamelFolder *folder, const char *uid, const char *name);
-static void set_message_user_tag(CamelFolder *folder, const char *uid, const char *name, const char *value);
-
-static gint get_message_count (CamelFolder *folder);
-static gint get_unread_message_count (CamelFolder *folder);
-
-static void expunge (CamelFolder *folder,
- CamelException *ex);
-
-
-static void append_message (CamelFolder *folder, CamelMimeMessage *message,
- const CamelMessageInfo *info, CamelException *ex);
-
-
-static GPtrArray *get_uids (CamelFolder *folder);
-static void free_uids (CamelFolder *folder,
- GPtrArray *array);
-static GPtrArray *get_summary (CamelFolder *folder);
-static void free_summary (CamelFolder *folder,
- GPtrArray *array);
-
-static CamelMimeMessage *get_message (CamelFolder *folder,
- const gchar *uid,
- CamelException *ex);
-
-static CamelMessageInfo *get_message_info (CamelFolder *folder, const char *uid);
-static void free_message_info (CamelFolder *folder, CamelMessageInfo *info);
-static void ref_message_info (CamelFolder *folder, CamelMessageInfo *info);
-
-static GPtrArray *search_by_expression (CamelFolder *folder,
- const char *exp,
- CamelException *ex);
-static void search_free (CamelFolder * folder,
- GPtrArray * result);
-
-static void copy_messages_to (CamelFolder *source,
- GPtrArray *uids,
- CamelFolder *dest,
- CamelException *ex);
-
-static void move_messages_to (CamelFolder *source,
- GPtrArray *uids,
- CamelFolder *dest,
- CamelException *ex);
-
-static void freeze (CamelFolder *folder);
-static void thaw (CamelFolder *folder);
-
-static gboolean folder_changed (CamelObject *object,
- gpointer event_data);
-static gboolean message_changed (CamelObject *object,
- /*const char *uid*/gpointer event_data);
-
-static void
-camel_folder_class_init (CamelFolderClass *camel_folder_class)
-{
- CamelObjectClass *camel_object_class =
- CAMEL_OBJECT_CLASS (camel_folder_class);
-
- parent_class = camel_type_get_global_classfuncs (camel_object_get_type ());
-
- /* virtual method definition */
- camel_folder_class->sync = folder_sync;
- camel_folder_class->refresh_info = refresh_info;
- camel_folder_class->get_name = get_name;
- camel_folder_class->get_full_name = get_full_name;
- camel_folder_class->get_parent_store = get_parent_store;
- camel_folder_class->expunge = expunge;
- camel_folder_class->get_message_count = get_message_count;
- camel_folder_class->get_unread_message_count = get_unread_message_count;
- camel_folder_class->append_message = append_message;
- camel_folder_class->get_permanent_flags = get_permanent_flags;
- camel_folder_class->get_message_flags = get_message_flags;
- camel_folder_class->set_message_flags = set_message_flags;
- camel_folder_class->get_message_user_flag = get_message_user_flag;
- camel_folder_class->set_message_user_flag = set_message_user_flag;
- camel_folder_class->get_message_user_tag = get_message_user_tag;
- camel_folder_class->set_message_user_tag = set_message_user_tag;
- camel_folder_class->get_message = get_message;
- camel_folder_class->get_uids = get_uids;
- camel_folder_class->free_uids = free_uids;
- camel_folder_class->get_summary = get_summary;
- camel_folder_class->free_summary = free_summary;
- camel_folder_class->search_by_expression = search_by_expression;
- camel_folder_class->search_free = search_free;
- camel_folder_class->get_message_info = get_message_info;
- camel_folder_class->ref_message_info = ref_message_info;
- camel_folder_class->free_message_info = free_message_info;
- camel_folder_class->copy_messages_to = copy_messages_to;
- camel_folder_class->move_messages_to = move_messages_to;
- camel_folder_class->freeze = freeze;
- camel_folder_class->thaw = thaw;
-
- /* virtual method overload */
- camel_object_class_declare_event (camel_object_class,
- "folder_changed", folder_changed);
- camel_object_class_declare_event (camel_object_class,
- "message_changed", message_changed);
-}
-
-static void
-camel_folder_init (gpointer object, gpointer klass)
-{
- CamelFolder *folder = object;
-
- folder->priv = g_malloc0(sizeof(*folder->priv));
- folder->priv->frozen = 0;
- folder->priv->changed_frozen = camel_folder_change_info_new();
-#ifdef ENABLE_THREADS
- folder->priv->lock = g_mutex_new();
- folder->priv->change_lock = g_mutex_new();
-#endif
-}
-
-static void
-camel_folder_finalize (CamelObject *object)
-{
- CamelFolder *camel_folder = CAMEL_FOLDER (object);
-
- g_free (camel_folder->name);
- g_free (camel_folder->full_name);
-
- if (camel_folder->parent_store)
- camel_object_unref (CAMEL_OBJECT (camel_folder->parent_store));
-
- if (camel_folder->summary)
- camel_object_unref((CamelObject *)camel_folder->summary);
-
- camel_folder_change_info_free(camel_folder->priv->changed_frozen);
-#ifdef ENABLE_THREADS
- g_mutex_free(camel_folder->priv->lock);
- g_mutex_free(camel_folder->priv->change_lock);
-#endif
- g_free(camel_folder->priv);
-}
-
-CamelType
-camel_folder_get_type (void)
-{
- static CamelType camel_folder_type = CAMEL_INVALID_TYPE;
-
- if (camel_folder_type == CAMEL_INVALID_TYPE) {
- camel_folder_type = camel_type_register (CAMEL_OBJECT_TYPE, "CamelFolder",
- sizeof (CamelFolder),
- sizeof (CamelFolderClass),
- (CamelObjectClassInitFunc) camel_folder_class_init,
- NULL,
- (CamelObjectInitFunc) camel_folder_init,
- (CamelObjectFinalizeFunc) camel_folder_finalize );
- }
-
- return camel_folder_type;
-}
-
-
-/**
- * camel_folder_construct:
- * @folder: folder object to construct
- * @parent_store: parent store object of the folder
- * @full_name: full name of the folder
- * @name: short name of the folder
- *
- * Initalizes the folder by setting the parent store and name.
- **/
-void
-camel_folder_construct (CamelFolder *folder, CamelStore *parent_store,
- const char *full_name, const char *name)
-{
- g_return_if_fail (CAMEL_IS_FOLDER (folder));
- g_return_if_fail (CAMEL_IS_STORE (parent_store));
- g_return_if_fail (folder->parent_store == NULL);
- g_return_if_fail (folder->name == NULL);
-
- folder->parent_store = parent_store;
- if (parent_store)
- camel_object_ref (CAMEL_OBJECT (parent_store));
-
- folder->name = g_strdup (name);
- folder->full_name = g_strdup (full_name);
-}
-
-
-static void
-folder_sync (CamelFolder *folder, gboolean expunge, CamelException *ex)
-{
- g_warning ("CamelFolder::sync not implemented for `%s'",
- camel_type_to_name (CAMEL_OBJECT_GET_TYPE (folder)));
-}
-
-/**
- * camel_folder_sync:
- * @folder: The folder object
- * @expunge: whether or not to expunge deleted messages
- * @ex: exception object
- *
- * Sync changes made to a folder to its backing store, possibly expunging
- * deleted messages as well.
- **/
-void
-camel_folder_sync (CamelFolder *folder, gboolean expunge, CamelException *ex)
-{
- g_return_if_fail (CAMEL_IS_FOLDER (folder));
-
- CAMEL_FOLDER_LOCK(folder, lock);
-
- CF_CLASS (folder)->sync (folder, expunge, ex);
-
- CAMEL_FOLDER_UNLOCK(folder, lock);
-}
-
-
-static void
-refresh_info (CamelFolder *folder, CamelException *ex)
-{
- /* No op */
-}
-
-/**
- * camel_folder_refresh_info:
- * @folder: The folder object
- * @ex: exception object
- *
- * Updates a folder's summary to be in sync with its backing store.
- **/
-void
-camel_folder_refresh_info (CamelFolder *folder, CamelException *ex)
-{
- g_return_if_fail (CAMEL_IS_FOLDER (folder));
-
- CAMEL_FOLDER_LOCK(folder, lock);
-
- CF_CLASS (folder)->refresh_info (folder, ex);
-
- CAMEL_FOLDER_UNLOCK(folder, lock);
-}
-
-
-static const char *
-get_name (CamelFolder *folder)
-{
- return folder->name;
-}
-
-/**
- * camel_folder_get_name:
- * @folder: a folder
- *
- * Get the (short) name of the folder. The fully qualified name
- * can be obtained with the get_full_name method.
- *
- * Return value: name of the folder
- **/
-const char *
-camel_folder_get_name (CamelFolder * folder)
-{
- g_return_val_if_fail (CAMEL_IS_FOLDER (folder), NULL);
-
- return CF_CLASS (folder)->get_name (folder);
-}
-
-
-static const char *
-get_full_name (CamelFolder *folder)
-{
- return folder->full_name;
-}
-
-/**
- * camel_folder_get_full_name:
- * @folder: a folder
- *
- * Get the (full) name of the folder.
- *
- * Return value: full name of the folder
- **/
-const char *
-camel_folder_get_full_name (CamelFolder *folder)
-{
- g_return_val_if_fail (CAMEL_IS_FOLDER (folder), NULL);
-
- return CF_CLASS (folder)->get_full_name (folder);
-}
-
-
-static CamelStore *
-get_parent_store (CamelFolder * folder)
-{
- return folder->parent_store;
-}
-
-/**
- * camel_folder_get_parent_store:
- * @folder: folder to get the parent of
- *
- * Return value: the parent store of the folder.
- **/
-CamelStore *
-camel_folder_get_parent_store (CamelFolder *folder)
-{
- g_return_val_if_fail (CAMEL_IS_FOLDER (folder), NULL);
-
- return CF_CLASS (folder)->get_parent_store (folder);
-}
-
-
-static void
-expunge (CamelFolder *folder, CamelException *ex)
-{
- g_warning ("CamelFolder::expunge not implemented for `%s'",
- camel_type_to_name (CAMEL_OBJECT_GET_TYPE (folder)));
-}
-
-
-/**
- * camel_folder_expunge:
- * @folder: the folder
- * @ex: a CamelException
- *
- * Delete messages which have been marked as "DELETED"
- **/
-void
-camel_folder_expunge (CamelFolder *folder, CamelException *ex)
-{
- g_return_if_fail (CAMEL_IS_FOLDER (folder));
-
- CAMEL_FOLDER_LOCK(folder, lock);
-
- CF_CLASS (folder)->expunge (folder, ex);
-
- CAMEL_FOLDER_UNLOCK(folder, lock);
-}
-
-static int
-get_message_count (CamelFolder *folder)
-{
- g_return_val_if_fail(folder->summary != NULL, -1);
-
- return camel_folder_summary_count(folder->summary);
-}
-
-/**
- * camel_folder_get_message_count:
- * @folder: A CamelFolder object
- *
- * Return value: the number of messages in the folder, or -1 if unknown.
- **/
-int
-camel_folder_get_message_count (CamelFolder *folder)
-{
- int ret;
-
- g_return_val_if_fail (CAMEL_IS_FOLDER (folder), -1);
-
- ret = CF_CLASS (folder)->get_message_count (folder);
-
- return ret;
-}
-
-static int
-get_unread_message_count(CamelFolder *folder)
-{
- int i, count, unread=0;
-
- g_return_val_if_fail(folder->summary != NULL, -1);
-
- count = camel_folder_summary_count(folder->summary);
- for (i=0; i<count; i++) {
- CamelMessageInfo *info = camel_folder_summary_index(folder->summary, i);
-
- if (info && !(info->flags & CAMEL_MESSAGE_SEEN))
- unread++;
-
- camel_folder_summary_info_free(folder->summary, info);
- }
-
- return unread;
-}
-
-/**
- * camel_folder_unread_get_message_count:
- * @folder: A CamelFolder object
- *
- * Return value: the number of unread messages in the folder, or -1 if unknown.
- **/
-int
-camel_folder_get_unread_message_count (CamelFolder *folder)
-{
- int ret;
-
- g_return_val_if_fail (CAMEL_IS_FOLDER (folder), -1);
-
- ret = CF_CLASS (folder)->get_unread_message_count (folder);
-
- return ret;
-}
-
-static void
-append_message (CamelFolder *folder, CamelMimeMessage *message,
- const CamelMessageInfo *info, CamelException *ex)
-{
- g_warning ("CamelFolder::append_message not implemented for `%s'",
- camel_type_to_name (CAMEL_OBJECT_GET_TYPE (folder)));
- return;
-
-}
-
-/**
- * camel_folder_append_message: add a message to a folder
- * @folder: folder object to add the message to
- * @message: message object
- * @info: message info with additional flags/etc to set on
- * new message, or %NULL
- * @ex: exception object
- *
- * Add a message to a folder. Only the flag and tag data from @info
- * is used. If @info is %NULL, no flags or tags will be set.
- **/
-void
-camel_folder_append_message (CamelFolder *folder, CamelMimeMessage *message,
- const CamelMessageInfo *info, CamelException *ex)
-{
- g_return_if_fail (CAMEL_IS_FOLDER (folder));
-
- CAMEL_FOLDER_LOCK(folder, lock);
-
- CF_CLASS (folder)->append_message (folder, message, info, ex);
-
- CAMEL_FOLDER_UNLOCK(folder, lock);
-}
-
-
-static guint32
-get_permanent_flags (CamelFolder *folder)
-{
- return folder->permanent_flags;
-}
-
-/**
- * camel_folder_get_permanent_flags:
- * @folder: a CamelFolder
- *
- * Return value: the set of CamelMessageFlags that can be permanently
- * stored on a message between sessions. If it includes %CAMEL_FLAG_USER,
- * then user-defined flags will be remembered.
- **/
-guint32
-camel_folder_get_permanent_flags (CamelFolder *folder)
-{
- g_return_val_if_fail (CAMEL_IS_FOLDER (folder), 0);
-
- return CF_CLASS (folder)->get_permanent_flags (folder);
-}
-
-static guint32
-get_message_flags(CamelFolder *folder, const char *uid)
-{
- CamelMessageInfo *info;
- guint32 flags;
-
- g_return_val_if_fail(folder->summary != NULL, 0);
-
- info = camel_folder_summary_uid(folder->summary, uid);
- g_return_val_if_fail(info != NULL, 0);
-
- flags = info->flags;
- camel_folder_summary_info_free(folder->summary, info);
-
- return flags;
-}
-
-/**
- * camel_folder_get_message_flags:
- * @folder: a CamelFolder
- * @uid: the UID of a message in @folder
- *
- * Return value: the CamelMessageFlags that are set on the indicated
- * message.
- **/
-guint32
-camel_folder_get_message_flags (CamelFolder *folder, const char *uid)
-{
- guint32 ret;
-
- g_return_val_if_fail (CAMEL_IS_FOLDER (folder), 0);
-
- ret = CF_CLASS (folder)->get_message_flags (folder, uid);
-
- return ret;
-}
-
-static void
-set_message_flags(CamelFolder *folder, const char *uid, guint32 flags, guint32 set)
-{
- CamelMessageInfo *info;
- guint32 new;
-
- g_return_if_fail(folder->summary != NULL);
-
- info = camel_folder_summary_uid(folder->summary, uid);
- g_return_if_fail(info != NULL);
-
- new = (info->flags & ~flags) | (set & flags);
- if (new == info->flags) {
- camel_folder_summary_info_free(folder->summary, info);
- return;
- }
-
- info->flags = new | CAMEL_MESSAGE_FOLDER_FLAGGED;
- camel_folder_summary_touch(folder->summary);
- camel_folder_summary_info_free(folder->summary, info);
-
- camel_object_trigger_event(CAMEL_OBJECT(folder), "message_changed", (char *) uid);
-}
-
-/**
- * camel_folder_set_message_flags:
- * @folder: a CamelFolder
- * @uid: the UID of a message in @folder
- * @flags: a set of CamelMessageFlag values to set
- * @set: the mask of values in @flags to use.
- *
- * Sets those flags specified by @set to the values specified by @flags
- * on the indicated message. (This may or may not persist after the
- * folder or store is closed. See camel_folder_get_permanent_flags().)
- **/
-void
-camel_folder_set_message_flags (CamelFolder *folder, const char *uid,
- guint32 flags, guint32 set)
-{
- g_return_if_fail (CAMEL_IS_FOLDER (folder));
-
- CF_CLASS (folder)->set_message_flags (folder, uid, flags, set);
-}
-
-
-static gboolean
-get_message_user_flag(CamelFolder *folder, const char *uid, const char *name)
-{
- CamelMessageInfo *info;
- gboolean ret;
-
- g_return_val_if_fail(folder->summary != NULL, FALSE);
-
- info = camel_folder_summary_uid(folder->summary, uid);
- g_return_val_if_fail(info != NULL, FALSE);
-
- ret = camel_flag_get(&info->user_flags, name);
- camel_folder_summary_info_free(folder->summary, info);
-
- return ret;
-}
-
-/**
- * camel_folder_get_message_user_flag:
- * @folder: a CamelFolder
- * @uid: the UID of a message in @folder
- * @name: the name of a user flag
- *
- * Return value: whether or not the given user flag is set on the message.
- **/
-gboolean
-camel_folder_get_message_user_flag (CamelFolder *folder, const char *uid,
- const char *name)
-{
- gboolean ret;
-
- g_return_val_if_fail (CAMEL_IS_FOLDER (folder), 0);
-
- ret = CF_CLASS (folder)->get_message_user_flag (folder, uid, name);
-
- return ret;
-}
-
-static void
-set_message_user_flag(CamelFolder *folder, const char *uid, const char *name, gboolean value)
-{
- CamelMessageInfo *info;
-
- g_return_if_fail(folder->summary != NULL);
-
- info = camel_folder_summary_uid(folder->summary, uid);
- g_return_if_fail(info != NULL);
-
- if (camel_flag_set(&info->user_flags, name, value)) {
- info->flags |= CAMEL_MESSAGE_FOLDER_FLAGGED;
- camel_folder_summary_touch(folder->summary);
- camel_object_trigger_event(CAMEL_OBJECT(folder), "message_changed", (char *) uid);
- }
- camel_folder_summary_info_free(folder->summary, info);
-}
-
-/**
- * camel_folder_set_message_user_flag:
- * @folder: a CamelFolder
- * @uid: the UID of a message in @folder
- * @name: the name of the user flag to set
- * @value: the value to set it to
- *
- * Sets the user flag specified by @name to the value specified by @value
- * on the indicated message. (This may or may not persist after the
- * folder or store is closed. See camel_folder_get_permanent_flags().)
- **/
-void
-camel_folder_set_message_user_flag (CamelFolder *folder, const char *uid,
- const char *name, gboolean value)
-{
- g_return_if_fail (CAMEL_IS_FOLDER (folder));
-
- CF_CLASS (folder)->set_message_user_flag (folder, uid, name, value);
-}
-
-static const char *
-get_message_user_tag(CamelFolder *folder, const char *uid, const char *name)
-{
- CamelMessageInfo *info;
- const char *ret;
-
- g_return_val_if_fail(folder->summary != NULL, NULL);
-
- info = camel_folder_summary_uid(folder->summary, uid);
- g_return_val_if_fail(info != NULL, FALSE);
-
-#warning "Need to duplicate tag string"
-
- ret = camel_tag_get(&info->user_tags, name);
- camel_folder_summary_info_free(folder->summary, info);
-
- return ret;
-}
-
-/**
- * camel_folder_get_message_user_tag:
- * @folder: a CamelFolder
- * @uid: the UID of a message in @folder
- * @name: the name of a user tag
- *
- * Return value: Returns the value of the user tag.
- **/
-const char *
-camel_folder_get_message_user_tag (CamelFolder *folder, const char *uid, const char *name)
-{
- const char *ret;
-
- g_return_val_if_fail (CAMEL_IS_FOLDER (folder), 0);
-
-#warning "get_message_user_tag() needs to copy the tag contents"
- ret = CF_CLASS (folder)->get_message_user_tag (folder, uid, name);
-
- return ret;
-}
-
-static void
-set_message_user_tag(CamelFolder *folder, const char *uid, const char *name, const char *value)
-{
- CamelMessageInfo *info;
-
- g_return_if_fail(folder->summary != NULL);
-
- info = camel_folder_summary_uid(folder->summary, uid);
- g_return_if_fail(info != NULL);
-
- if (camel_tag_set(&info->user_tags, name, value)) {
- info->flags |= CAMEL_MESSAGE_FOLDER_FLAGGED;
- camel_folder_summary_touch(folder->summary);
- camel_object_trigger_event(CAMEL_OBJECT(folder), "message_changed", (char *) uid);
- }
- camel_folder_summary_info_free(folder->summary, info);
-}
-
-/**
- * camel_folder_set_message_user_tag:
- * @folder: a CamelFolder
- * @uid: the UID of a message in @folder
- * @name: the name of the user tag to set
- * @value: the value to set it to
- *
- * Sets the user tag specified by @name to the value specified by @value
- * on the indicated message. (This may or may not persist after the
- * folder or store is closed. See camel_folder_get_permanent_flags().)
- **/
-void
-camel_folder_set_message_user_tag (CamelFolder *folder, const char *uid, const char *name, const char *value)
-{
- g_return_if_fail (CAMEL_IS_FOLDER (folder));
-
- CF_CLASS (folder)->set_message_user_tag (folder, uid, name, value);
-}
-
-static CamelMessageInfo *
-get_message_info (CamelFolder *folder, const char *uid)
-{
- g_return_val_if_fail(folder->summary != NULL, NULL);
-
- return camel_folder_summary_uid(folder->summary, uid);
-}
-
-/**
- * camel_folder_get_message_info:
- * @folder: a CamelFolder
- * @uid: the uid of a message
- *
- * Retrieve the CamelMessageInfo for the specified @uid. This return
- * must be freed using free_message_info().
- *
- * Return value: the summary information for the indicated message, or NULL
- * if the uid does not exist.
- **/
-CamelMessageInfo *
-camel_folder_get_message_info (CamelFolder *folder, const char *uid)
-{
- CamelMessageInfo *ret;
-
- g_return_val_if_fail (CAMEL_IS_FOLDER (folder), NULL);
- g_return_val_if_fail (uid != NULL, NULL);
-
- ret = CF_CLASS (folder)->get_message_info (folder, uid);
-
- return ret;
-}
-
-static void
-free_message_info (CamelFolder *folder, CamelMessageInfo *info)
-{
- g_return_if_fail(folder->summary != NULL);
-
- camel_folder_summary_info_free(folder->summary, info);
-}
-
-/**
- * camel_folder_free_message_info:
- * @folder:
- * @info:
- *
- * Free (unref) a CamelMessageInfo, previously obtained with get_message_info().
- **/
-void
-camel_folder_free_message_info(CamelFolder *folder, CamelMessageInfo *info)
-{
- g_return_if_fail(CAMEL_IS_FOLDER (folder));
- g_return_if_fail(info != NULL);
-
- CF_CLASS (folder)->free_message_info(folder, info);
-}
-
-static void
-ref_message_info (CamelFolder *folder, CamelMessageInfo *info)
-{
- g_return_if_fail(folder->summary != NULL);
-
- camel_folder_summary_info_ref(folder->summary, info);
-}
-
-/**
- * camel_folder_ref_message_info:
- * @folder:
- * @info:
- *
- * Ref a CamelMessageInfo, previously obtained with get_message_info().
- **/
-void
-camel_folder_ref_message_info(CamelFolder *folder, CamelMessageInfo *info)
-{
- g_return_if_fail(CAMEL_IS_FOLDER (folder));
- g_return_if_fail(info != NULL);
-
- CF_CLASS (folder)->ref_message_info(folder, info);
-}
-
-/* TODO: is this function required anyway? */
-gboolean
-camel_folder_has_summary_capability (CamelFolder *folder)
-{
- g_return_val_if_fail (CAMEL_IS_FOLDER (folder), FALSE);
-
- return folder->has_summary_capability;
-}
-
-
-/* UIDs stuff */
-
-static CamelMimeMessage *
-get_message (CamelFolder *folder, const gchar *uid, CamelException *ex)
-{
- g_warning ("CamelFolder::get_message not implemented for `%s'",
- camel_type_to_name (CAMEL_OBJECT_GET_TYPE (folder)));
- return NULL;
-}
-
-/**
- * camel_folder_get_message:
- * @folder: the folder object
- * @uid: the UID
- * @ex: a CamelException
- *
- * Get a message from its UID in the folder. Messages are cached
- * within a folder, that is, asking twice for the same UID returns the
- * same message object. (FIXME: is this true?)
- *
- * Return value: Message corresponding to the UID
- **/
-CamelMimeMessage *
-camel_folder_get_message (CamelFolder *folder, const gchar *uid, CamelException *ex)
-{
- CamelMimeMessage *ret;
-
- g_return_val_if_fail (CAMEL_IS_FOLDER (folder), NULL);
-
- CAMEL_FOLDER_LOCK(folder, lock);
-
- ret = CF_CLASS (folder)->get_message (folder, uid, ex);
-
- CAMEL_FOLDER_UNLOCK(folder, lock);
-
- return ret;
-}
-
-static GPtrArray *
-get_uids(CamelFolder *folder)
-{
- GPtrArray *array;
- int i, count;
-
- array = g_ptr_array_new();
-
- g_return_val_if_fail(folder->summary != NULL, array);
-
- count = camel_folder_summary_count(folder->summary);
- g_ptr_array_set_size(array, count);
- for (i=0; i<count; i++) {
- CamelMessageInfo *info = camel_folder_summary_index(folder->summary, i);
-
- if (info) {
- array->pdata[i] = g_strdup(camel_message_info_uid(info));
- camel_folder_summary_info_free(folder->summary, info);
- } else {
- array->pdata[i] = g_strdup("xx unknown uid xx");
- }
- }
-
- return array;
-}
-
-/**
- * camel_folder_get_uids:
- * @folder: folder object
- *
- * Get the list of UIDs available in a folder. This routine is useful
- * for finding what messages are available when the folder does not
- * support summaries. The returned array shoudl not be modified, and
- * must be freed by passing it to camel_folder_free_uids().
- *
- * Return value: GPtrArray of UIDs corresponding to the messages
- * available in the folder.
- **/
-GPtrArray *
-camel_folder_get_uids (CamelFolder *folder)
-{
- GPtrArray *ret;
-
- g_return_val_if_fail (CAMEL_IS_FOLDER (folder), NULL);
-
- ret = CF_CLASS (folder)->get_uids (folder);
-
- return ret;
-}
-
-static void
-free_uids (CamelFolder *folder, GPtrArray *array)
-{
- int i;
-
- for (i=0; i<array->len; i++)
- g_free(array->pdata[i]);
- g_ptr_array_free(array, TRUE);
-}
-
-/**
- * camel_folder_free_uids:
- * @folder: folder object
- * @array: the array of uids to free
- *
- * Frees the array of UIDs returned by camel_folder_get_uids().
- **/
-void
-camel_folder_free_uids (CamelFolder *folder, GPtrArray *array)
-{
- g_return_if_fail (CAMEL_IS_FOLDER (folder));
-
- CF_CLASS (folder)->free_uids (folder, array);
-}
-
-static GPtrArray *
-get_summary(CamelFolder *folder)
-{
- g_assert(folder->summary != NULL);
-
- return camel_folder_summary_array(folder->summary);
-}
-
-/**
- * camel_folder_get_summary:
- * @folder: a folder object
- *
- * This returns the summary information for the folder. This array
- * should not be modified, and must be freed with
- * camel_folder_free_summary().
- *
- * Return value: an array of CamelMessageInfo
- **/
-GPtrArray *
-camel_folder_get_summary (CamelFolder *folder)
-{
- GPtrArray *ret;
-
- g_return_val_if_fail (CAMEL_IS_FOLDER (folder), NULL);
-
- ret = CF_CLASS (folder)->get_summary (folder);
-
- return ret;
-}
-
-static void
-free_summary(CamelFolder *folder, GPtrArray *summary)
-{
- g_assert(folder->summary != NULL);
-
- camel_folder_summary_array_free(folder->summary, summary);
-}
-
-/**
- * camel_folder_free_summary:
- * @folder: folder object
- * @array: the summary array to free
- *
- * Frees the summary array returned by camel_folder_get_summary().
- **/
-void camel_folder_free_summary(CamelFolder * folder, GPtrArray * array)
-{
- g_return_if_fail(CAMEL_IS_FOLDER(folder));
-
- CF_CLASS(folder)->free_summary(folder, array);
-}
-
-/**
- * camel_folder_has_search_capability:
- * @folder: Folder object
- *
- * Checks if a folder supports searching.
- *
- * Return value: %TRUE if the folder supports searching
- **/
-gboolean
-camel_folder_has_search_capability (CamelFolder *folder)
-{
- g_return_val_if_fail (CAMEL_IS_FOLDER (folder), FALSE);
-
- return folder->has_search_capability;
-}
-
-static GPtrArray *
-search_by_expression (CamelFolder *folder, const char *expression,
- CamelException *ex)
-{
- g_warning ("CamelFolder::search_by_expression not implemented for "
- "`%s'", camel_type_to_name (CAMEL_OBJECT_GET_TYPE (folder)));
- return NULL;
-}
-
-/**
- * camel_folder_search_by_expression:
- * @folder: Folder object
- * @expression: a search expression
- * @ex: a CamelException
- *
- * Searches the folder for messages matching the given search expression.
- *
- * Return value: a list of uids of matching messages. The caller must
- * free the list and each of the elements when it is done.
- **/
-GPtrArray *
-camel_folder_search_by_expression (CamelFolder *folder, const char *expression,
- CamelException *ex)
-{
- GPtrArray *ret;
-
- g_return_val_if_fail (CAMEL_IS_FOLDER (folder), NULL);
- g_return_val_if_fail (folder->has_search_capability, NULL);
-
- /* NOTE: that it is upto the callee to lock */
-
- ret = CF_CLASS (folder)->search_by_expression (folder, expression, ex);
-
- return ret;
-}
-
-static void
-search_free (CamelFolder *folder, GPtrArray *result)
-{
- int i;
-
- for (i = 0; i < result->len; i++)
- g_free (g_ptr_array_index (result, i));
- g_ptr_array_free (result, TRUE);
-}
-
-/**
- * camel_folder_search_free:
- * @folder:
- * @result:
- *
- * Free the result of a search.
- **/
-void
-camel_folder_search_free (CamelFolder *folder, GPtrArray *result)
-{
- g_return_if_fail (CAMEL_IS_FOLDER (folder));
- g_return_if_fail (folder->has_search_capability);
-
- /* NOTE: upto the callee to lock */
- CF_CLASS (folder)->search_free (folder, result);
-}
-
-
-static void
-copy_message_to (CamelFolder *source, const char *uid, CamelFolder *dest, CamelException *ex)
-{
- CamelMimeMessage *msg;
- CamelMessageInfo *info = NULL;
-
- /* Default implementation. */
-
- /* we alredy have the lock, dont deadlock */
- msg = CF_CLASS (source)->get_message (source, uid, ex);
- if (!msg)
- return;
-
- if (source->has_summary_capability)
- info = CF_CLASS (source)->get_message_info (source, uid);
- else
- info = camel_message_info_new_from_header (((CamelMimePart *)msg)->headers);
-
- /* we don't want to retain the deleted flag */
- if (info && info->flags & CAMEL_MESSAGE_DELETED)
- info->flags = info->flags & ~CAMEL_MESSAGE_DELETED;
-
- camel_folder_append_message (dest, msg, info, ex);
- camel_object_unref (CAMEL_OBJECT (msg));
- if (info) {
- if (source->has_summary_capability)
- CF_CLASS (source)->free_message_info (source, info);
- else
- camel_message_info_free (info);
- }
-}
-
-static void
-copy_messages_to (CamelFolder *source, GPtrArray *uids, CamelFolder *dest, CamelException *ex)
-{
- int i;
-
- for (i = 0; i < uids->len && !camel_exception_is_set (ex); i++)
- copy_message_to (source, uids->pdata[i], dest, ex);
-}
-
-/**
- * camel_folder_copy_messages_to:
- * @source: source folder
- * @uids: message UIDs in @source
- * @dest: destination folder
- * @ex: a CamelException
- *
- * This copies messages from one folder to another. If the @source and
- * @dest folders have the same parent_store, this may be more efficient
- * than a camel_folder_append_message().
- **/
-void
-camel_folder_copy_messages_to (CamelFolder *source, GPtrArray *uids,
- CamelFolder *dest, CamelException *ex)
-{
- g_return_if_fail (CAMEL_IS_FOLDER (source));
- g_return_if_fail (CAMEL_IS_FOLDER (dest));
- g_return_if_fail (uids != NULL);
-
- CAMEL_FOLDER_LOCK(source, lock);
-
- if (source->parent_store == dest->parent_store)
- CF_CLASS (source)->copy_messages_to (source, uids, dest, ex);
- else
- copy_messages_to (source, uids, dest, ex);
-
- CAMEL_FOLDER_UNLOCK(source, lock);
-}
-
-
-static void
-move_message_to (CamelFolder *source, const char *uid,
- CamelFolder *dest, CamelException *ex)
-{
- CamelMimeMessage *msg;
- CamelMessageInfo *info = NULL;
-
- /* Default implementation. */
-
- msg = CF_CLASS (source)->get_message (source, uid, ex);
- if (!msg)
- return;
-
- if (source->has_summary_capability)
- info = CF_CLASS (source)->get_message_info (source, uid);
- else
- info = camel_message_info_new_from_header (((CamelMimePart *)msg)->headers);
-
- /* we don't want to retain the deleted flag */
- if (info && info->flags & CAMEL_MESSAGE_DELETED)
- info->flags = info->flags & ~CAMEL_MESSAGE_DELETED;
-
- camel_folder_append_message (dest, msg, info, ex);
- camel_object_unref (CAMEL_OBJECT (msg));
- if (!camel_exception_is_set (ex))
- CF_CLASS (source)->set_message_flags (source, uid, CAMEL_MESSAGE_DELETED,
- CAMEL_MESSAGE_DELETED);
-
- if (info) {
- if (source->has_summary_capability)
- CF_CLASS (source)->free_message_info (source, info);
- else
- camel_message_info_free (info);
- }
-}
-
-static void
-move_messages_to (CamelFolder *source, GPtrArray *uids, CamelFolder *dest, CamelException *ex)
-{
- int i;
-
- for (i = 0; i < uids->len && !camel_exception_is_set (ex); i++)
- move_message_to (source, uids->pdata[i], dest, ex);
-}
-
-/**
- * camel_folder_move_messages_to:
- * @source: source folder
- * @uids: message UIDs in @source
- * @dest: destination folder
- * @ex: a CamelException
- *
- * This moves a message from one folder to another. If the @source and
- * @dest folders have the same parent_store, this may be more efficient
- * than a camel_folder_append_message() followed by
- * camel_folder_delete_message().
- **/
-void
-camel_folder_move_messages_to (CamelFolder *source, GPtrArray *uids,
- CamelFolder *dest, CamelException *ex)
-{
- g_return_if_fail (CAMEL_IS_FOLDER (source));
- g_return_if_fail (CAMEL_IS_FOLDER (dest));
- g_return_if_fail (uids != NULL);
-
- if (source == dest) {
- /* source and destination folders are the same, nothing to do. */
- return;
- }
-
- CAMEL_FOLDER_LOCK(source, lock);
-
- if (source->parent_store == dest->parent_store)
- CF_CLASS (source)->move_messages_to (source, uids, dest, ex);
- else
- move_messages_to (source, uids, dest, ex);
-
- CAMEL_FOLDER_UNLOCK(source, lock);
-}
-
-static void
-freeze (CamelFolder *folder)
-{
- CAMEL_FOLDER_LOCK(folder, change_lock);
-
- folder->priv->frozen++;
-
- d(printf ("freeze(%p) = %d\n", folder, folder->priv->frozen));
- CAMEL_FOLDER_UNLOCK(folder, change_lock);
-}
-
-/**
- * camel_folder_freeze:
- * @folder: a folder
- *
- * Freezes the folder so that a series of operation can be performed
- * without "message_changed" and "folder_changed" signals being emitted.
- * When the folder is later thawed with camel_folder_thaw(), the
- * suppressed signals will be emitted.
- **/
-void
-camel_folder_freeze (CamelFolder * folder)
-{
- g_return_if_fail (CAMEL_IS_FOLDER (folder));
-
- CF_CLASS (folder)->freeze (folder);
-}
-
-static void
-thaw (CamelFolder * folder)
-{
- int i;
- CamelFolderChangeInfo *info;
-
- CAMEL_FOLDER_LOCK(folder, change_lock);
-
- folder->priv->frozen--;
-
- d(printf ("thaw(%p) = %d\n", folder, folder->priv->frozen));
-
- if (folder->priv->frozen == 0) {
- /* If we have more or less messages, do a folder changed, otherwise just
- do a message changed for each one.
- TODO: message_changed is now probably irrelevant and not required */
- info = folder->priv->changed_frozen;
- if (info->uid_added->len > 0 || info->uid_removed->len > 0 || info->uid_changed->len > 10) {
- camel_object_trigger_event(CAMEL_OBJECT(folder), "folder_changed", info);
- } else if (info->uid_changed->len > 0) {
- for (i=0;i<info->uid_changed->len;i++) {
- camel_object_trigger_event(CAMEL_OBJECT(folder), "message_changed", info->uid_changed->pdata[i]);
- }
- }
- camel_folder_change_info_clear(info);
- }
-
- CAMEL_FOLDER_UNLOCK(folder, change_lock);
-}
-
-/**
- * camel_folder_thaw:
- * @folder: a folder
- *
- * Thaws the folder and emits any pending folder_changed or
- * message_changed signals.
- **/
-void
-camel_folder_thaw (CamelFolder *folder)
-{
- g_return_if_fail (CAMEL_IS_FOLDER (folder));
- g_return_if_fail (folder->priv->frozen != 0);
-
- CF_CLASS (folder)->thaw (folder);
-}
-
-
-/* Event hooks that block emission when frozen */
-static gboolean
-folder_changed (CamelObject *obj, gpointer event_data)
-{
- CamelFolder *folder = CAMEL_FOLDER (obj);
- CamelFolderChangeInfo *changed = event_data;
- gboolean ret = TRUE;
-
- d(printf ("folder_changed(%p, %p), frozen=%d\n", obj, event_data, folder->priv->frozen));
-
- if (folder->priv->frozen) {
- CAMEL_FOLDER_LOCK(folder, change_lock);
-
- if (changed != NULL)
- camel_folder_change_info_cat(folder->priv->changed_frozen, changed);
- else
- g_warning("Class %s is passing NULL to folder_changed event",
- camel_type_to_name (CAMEL_OBJECT_GET_TYPE (folder)));
- ret = FALSE;
-
- CAMEL_FOLDER_UNLOCK(folder, change_lock);
- }
-
- return ret;
-}
-
-static gboolean
-message_changed (CamelObject *obj, /*const char *uid*/gpointer event_data)
-{
- CamelFolder *folder = CAMEL_FOLDER (obj);
- gboolean ret = TRUE;
-
- d(printf ("message_changed(%p, %p), frozen=%d\n", folder, event_data, folder->priv->frozen));
-
- if (folder->priv->frozen) {
- CAMEL_FOLDER_LOCK(folder, change_lock);
-
- camel_folder_change_info_change_uid(folder->priv->changed_frozen, (char *)event_data);
- ret = FALSE;
-
- CAMEL_FOLDER_UNLOCK(folder, change_lock);
- }
-
- return ret;
-}
-
-
-/**
- * camel_folder_free_nop:
- * @folder: a folder
- * @array: an array of uids or CamelMessageInfo
- *
- * "Frees" the provided array by doing nothing. Used by CamelFolder
- * subclasses as an implementation for free_uids, or free_summary when
- * the returned array is "static" information and should not be freed.
- **/
-void
-camel_folder_free_nop (CamelFolder *folder, GPtrArray *array)
-{
- ;
-}
-
-/**
- * camel_folder_free_shallow:
- * @folder: a folder
- * @array: an array of uids or CamelMessageInfo
- *
- * Frees the provided array but not its contents. Used by CamelFolder
- * subclasses as an implementation for free_uids or free_summary when
- * the returned array needs to be freed but its contents come from
- * "static" information.
- **/
-void
-camel_folder_free_shallow (CamelFolder *folder, GPtrArray *array)
-{
- g_ptr_array_free (array, TRUE);
-}
-
-/**
- * camel_folder_free_deep:
- * @folder: a folder
- * @array: an array of uids
- *
- * Frees the provided array and its contents. Used by CamelFolder
- * subclasses as an implementation for free_uids when the provided
- * information was created explicitly by the corresponding get_ call.
- **/
-void
-camel_folder_free_deep (CamelFolder *folder, GPtrArray *array)
-{
- int i;
-
- for (i = 0; i < array->len; i++)
- g_free (array->pdata[i]);
- g_ptr_array_free (array, TRUE);
-}
-
-struct _CamelFolderChangeInfoPrivate {
- GHashTable *uid_stored; /* what we have stored, which array they're in */
- GHashTable *uid_source; /* used to create unique lists */
- struct _EMemPool *uid_pool; /* pool used to store copies of uid strings */
-};
-
-/**
- * camel_folder_change_info_new:
- * @void:
- *
- * Create a new folder change info structure.
- *
- * Change info structures are not MT-SAFE and must be
- * locked for exclusive access externally.
- *
- * Return value:
- **/
-CamelFolderChangeInfo *
-camel_folder_change_info_new(void)
-{
- CamelFolderChangeInfo *info;
-
- info = g_malloc(sizeof(*info));
- info->uid_added = g_ptr_array_new();
- info->uid_removed = g_ptr_array_new();
- info->uid_changed = g_ptr_array_new();
- info->priv = g_malloc0(sizeof(*info->priv));
- info->priv->uid_stored = g_hash_table_new(g_str_hash, g_str_equal);
- info->priv->uid_source = NULL;
- info->priv->uid_pool = e_mempool_new(512, 256, E_MEMPOOL_ALIGN_BYTE);
-
- return info;
-}
-
-/**
- * camel_folder_change_info_add_source:
- * @info:
- * @uid:
- *
- * Add a source uid for generating a changeset.
- **/
-void
-camel_folder_change_info_add_source(CamelFolderChangeInfo *info, const char *uid)
-{
- struct _CamelFolderChangeInfoPrivate *p = info->priv;
-
- if (p->uid_source == NULL)
- p->uid_source = g_hash_table_new(g_str_hash, g_str_equal);
-
- if (g_hash_table_lookup(p->uid_source, uid) == NULL)
- g_hash_table_insert(p->uid_source, e_mempool_strdup(p->uid_pool, uid), (void *)1);
-}
-
-/**
- * camel_folder_change_info_add_source_list:
- * @info:
- * @list:
- *
- * Add a list of source uid's for generating a changeset.
- **/
-void
-camel_folder_change_info_add_source_list(CamelFolderChangeInfo *info, const GPtrArray *list)
-{
- int i;
- struct _CamelFolderChangeInfoPrivate *p = info->priv;
-
- if (p->uid_source == NULL)
- p->uid_source = g_hash_table_new(g_str_hash, g_str_equal);
-
- for (i=0;i<list->len;i++) {
- char *uid = list->pdata[i];
-
- if (g_hash_table_lookup(p->uid_source, uid) == NULL)
- g_hash_table_insert(p->uid_source, e_mempool_strdup(p->uid_pool, uid), (void *)1);
- }
-}
-
-/**
- * camel_folder_change_info_add_update:
- * @info:
- * @uid:
- *
- * Add a uid from the updated list, used to generate a changeset diff.
- **/
-void
-camel_folder_change_info_add_update(CamelFolderChangeInfo *info, const char *uid)
-{
- char *key;
- int value;
- struct _CamelFolderChangeInfoPrivate *p = info->priv;
-
- if (p->uid_source == NULL) {
- camel_folder_change_info_add_uid(info, uid);
- return;
- }
-
- if (g_hash_table_lookup_extended(p->uid_source, uid, (void **)&key, (void **)&value)) {
- g_hash_table_remove(p->uid_source, key);
- } else {
- camel_folder_change_info_add_uid(info, uid);
- }
-}
-
-/**
- * camel_folder_change_info_add_update_list:
- * @info:
- * @list:
- *
- * Add a list of uid's from the updated list.
- **/
-void
-camel_folder_change_info_add_update_list(CamelFolderChangeInfo *info, const GPtrArray *list)
-{
- int i;
-
- for (i=0;i<list->len;i++)
- camel_folder_change_info_add_update(info, list->pdata[i]);
-}
-
-static void
-change_info_remove(char *key, void *value, CamelFolderChangeInfo *info)
-{
- struct _CamelFolderChangeInfoPrivate *p = info->priv;
- GPtrArray *olduids;
- char *olduid;
-
- if (g_hash_table_lookup_extended(p->uid_stored, key, (void **)&olduid, (void **)&olduids)) {
- /* if it was added/changed them removed, then remove it */
- if (olduids != info->uid_removed) {
- g_ptr_array_remove_fast(olduids, olduid);
- g_ptr_array_add(info->uid_removed, olduid);
- g_hash_table_insert(p->uid_stored, olduid, info->uid_removed);
- }
- return;
- }
-
-
- /* we dont need to copy this, as they've already been copied into our pool */
- g_ptr_array_add(info->uid_removed, key);
- g_hash_table_insert(p->uid_stored, key, info->uid_removed);
-}
-
-/**
- * camel_folder_change_info_build_diff:
- * @info:
- *
- * Compare the source uid set to the updated uid set and generate the differences
- * into the added and removed lists.
- **/
-void
-camel_folder_change_info_build_diff(CamelFolderChangeInfo *info)
-{
- struct _CamelFolderChangeInfoPrivate *p = info->priv;
-
- if (p->uid_source) {
- g_hash_table_foreach(p->uid_source, (GHFunc)change_info_remove, info);
- g_hash_table_destroy(p->uid_source);
- p->uid_source = NULL;
- }
-}
-
-static void
-change_info_cat(CamelFolderChangeInfo *info, GPtrArray *source, void (*add)(CamelFolderChangeInfo *info, const char *uid))
-{
- int i;
-
- for (i=0;i<source->len;i++)
- add(info, source->pdata[i]);
-}
-
-/**
- * camel_folder_change_info_cat:
- * @info:
- * @source:
- *
- * Concatenate one change info onto antoher. Can be used to copy
- * them too.
- **/
-void
-camel_folder_change_info_cat(CamelFolderChangeInfo *info, CamelFolderChangeInfo *source)
-{
- change_info_cat(info, source->uid_added, camel_folder_change_info_add_uid);
- change_info_cat(info, source->uid_removed, camel_folder_change_info_remove_uid);
- change_info_cat(info, source->uid_changed, camel_folder_change_info_change_uid);
-}
-
-/**
- * camel_folder_change_info_add_uid:
- * @info:
- * @uid:
- *
- * Add a new uid to the changeinfo.
- **/
-void
-camel_folder_change_info_add_uid(CamelFolderChangeInfo *info, const char *uid)
-{
- struct _CamelFolderChangeInfoPrivate *p = info->priv;
- GPtrArray *olduids;
- char *olduid;
-
- if (g_hash_table_lookup_extended(p->uid_stored, uid, (void **)&olduid, (void **)&olduids)) {
- /* if it was removed then added, promote it to a changed */
- /* if it was changed then added, leave as changed */
- if (olduids == info->uid_removed) {
- g_ptr_array_remove_fast(olduids, olduid);
- g_ptr_array_add(info->uid_changed, olduid);
- g_hash_table_insert(p->uid_stored, olduid, info->uid_changed);
- }
- return;
- }
-
- olduid = e_mempool_strdup(p->uid_pool, uid);
- g_ptr_array_add(info->uid_added, olduid);
- g_hash_table_insert(p->uid_stored, olduid, info->uid_added);
-}
-
-/**
- * camel_folder_change_info_remove_uid:
- * @info:
- * @uid:
- *
- * Add a uid to the removed uid list.
- **/
-void
-camel_folder_change_info_remove_uid(CamelFolderChangeInfo *info, const char *uid)
-{
- struct _CamelFolderChangeInfoPrivate *p = info->priv;
- GPtrArray *olduids;
- char *olduid;
-
- if (g_hash_table_lookup_extended(p->uid_stored, uid, (void **)&olduid, (void **)&olduids)) {
- /* if it was added/changed them removed, then remove it */
- if (olduids != info->uid_removed) {
- g_ptr_array_remove_fast(olduids, olduid);
- g_ptr_array_add(info->uid_removed, olduid);
- g_hash_table_insert(p->uid_stored, olduid, info->uid_removed);
- }
- return;
- }
-
- olduid = e_mempool_strdup(p->uid_pool, uid);
- g_ptr_array_add(info->uid_removed, olduid);
- g_hash_table_insert(p->uid_stored, olduid, info->uid_removed);
-}
-
-/**
- * camel_folder_change_info_change_uid:
- * @info:
- * @uid:
- *
- * Add a uid to the changed uid list.
- **/
-void
-camel_folder_change_info_change_uid(CamelFolderChangeInfo *info, const char *uid)
-{
- struct _CamelFolderChangeInfoPrivate *p = info->priv;
- GPtrArray *olduids;
- char *olduid;
-
- if (g_hash_table_lookup_extended(p->uid_stored, uid, (void **)&olduid, (void **)&olduids)) {
- /* if we have it already, leave it as that */
- return;
- }
-
- olduid = e_mempool_strdup(p->uid_pool, uid);
- g_ptr_array_add(info->uid_changed, olduid);
- g_hash_table_insert(p->uid_stored, olduid, info->uid_changed);
-}
-
-/**
- * camel_folder_change_info_changed:
- * @info:
- *
- * Return true if the changeset contains any changes.
- *
- * Return Value:
- **/
-gboolean
-camel_folder_change_info_changed(CamelFolderChangeInfo *info)
-{
- return (info->uid_added->len || info->uid_removed->len || info->uid_changed->len);
-}
-
-/**
- * camel_folder_change_info_clear:
- * @info:
- *
- * Empty out the change info; called after changes have been processed.
- **/
-void
-camel_folder_change_info_clear(CamelFolderChangeInfo *info)
-{
- struct _CamelFolderChangeInfoPrivate *p = info->priv;
-
- g_ptr_array_set_size(info->uid_added, 0);
- g_ptr_array_set_size(info->uid_removed, 0);
- g_ptr_array_set_size(info->uid_changed, 0);
- if (p->uid_source) {
- g_hash_table_destroy(p->uid_source);
- p->uid_source = NULL;
- }
- g_hash_table_destroy(p->uid_stored);
- p->uid_stored = g_hash_table_new(g_str_hash, g_str_equal);
- e_mempool_flush(p->uid_pool, TRUE);
-}
-
-/**
- * camel_folder_change_info_free:
- * @info:
- *
- * Free memory associated with the folder change info lists.
- **/
-void
-camel_folder_change_info_free(CamelFolderChangeInfo *info)
-{
- struct _CamelFolderChangeInfoPrivate *p = info->priv;
-
- if (p->uid_source)
- g_hash_table_destroy(p->uid_source);
-
- g_hash_table_destroy(p->uid_stored);
- e_mempool_destroy(p->uid_pool);
- g_free(p);
-
- g_ptr_array_free(info->uid_added, TRUE);
- g_ptr_array_free(info->uid_removed, TRUE);
- g_ptr_array_free(info->uid_changed, TRUE);
- g_free(info);
-}
-
-
-
diff --git a/camel/camel-folder.h b/camel/camel-folder.h
deleted file mode 100644
index 1baf0206e1..0000000000
--- a/camel/camel-folder.h
+++ /dev/null
@@ -1,308 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * camel-folder.h: Abstract class for an email folder
- *
- * Authors: Bertrand Guiheneuf <bertrand@helixcode.com>
- * Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_FOLDER_H
-#define CAMEL_FOLDER_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <glib.h>
-#include <camel/camel-object.h>
-#include <camel/camel-folder-summary.h>
-
-#define CAMEL_FOLDER_TYPE (camel_folder_get_type ())
-#define CAMEL_FOLDER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_FOLDER_TYPE, CamelFolder))
-#define CAMEL_FOLDER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_FOLDER_TYPE, CamelFolderClass))
-#define CAMEL_IS_FOLDER(o) (CAMEL_CHECK_TYPE((o), CAMEL_FOLDER_TYPE))
-
-typedef struct _CamelFolderChangeInfo CamelFolderChangeInfo;
-
-struct _CamelFolderChangeInfo {
- GPtrArray *uid_added;
- GPtrArray *uid_removed;
- GPtrArray *uid_changed;
-
- struct _CamelFolderChangeInfoPrivate *priv;
-};
-
-struct _CamelFolder
-{
- CamelObject parent_object;
-
- struct _CamelFolderPrivate *priv;
-
- char *name;
- char *full_name;
- CamelStore *parent_store;
- CamelFolderSummary *summary;
-
- guint32 permanent_flags;
- gboolean has_summary_capability:1;
- gboolean has_search_capability:1;
-
-};
-
-typedef struct {
- CamelObjectClass parent_class;
-
- /* Virtual methods */
- void (*refresh_info) (CamelFolder *folder, CamelException *ex);
-
- void (*sync) (CamelFolder *folder, gboolean expunge,
- CamelException *ex);
-
- const char * (*get_name) (CamelFolder *folder);
- const char * (*get_full_name) (CamelFolder *folder);
-
- CamelStore * (*get_parent_store) (CamelFolder *folder);
-
- void (*expunge) (CamelFolder *folder,
- CamelException *ex);
-
- int (*get_message_count) (CamelFolder *folder);
-
- int (*get_unread_message_count) (CamelFolder *folder);
-
- void (*append_message) (CamelFolder *folder,
- CamelMimeMessage *message,
- const CamelMessageInfo *info,
- CamelException *ex);
-
- guint32 (*get_permanent_flags) (CamelFolder *folder);
- guint32 (*get_message_flags) (CamelFolder *folder,
- const char *uid);
- void (*set_message_flags) (CamelFolder *folder,
- const char *uid,
- guint32 flags, guint32 set);
-
- gboolean (*get_message_user_flag) (CamelFolder *folder,
- const char *uid,
- const char *name);
- void (*set_message_user_flag) (CamelFolder *folder,
- const char *uid,
- const char *name,
- gboolean value);
-
- const char * (*get_message_user_tag) (CamelFolder *folder,
- const char *uid,
- const char *name);
- void (*set_message_user_tag) (CamelFolder *folder,
- const char *uid,
- const char *name,
- const char *value);
-
- CamelMimeMessage * (*get_message) (CamelFolder *folder,
- const char *uid,
- CamelException *ex);
-
- GPtrArray * (*get_uids) (CamelFolder *folder);
- void (*free_uids) (CamelFolder *folder,
- GPtrArray *array);
-
- GPtrArray * (*get_summary) (CamelFolder *folder);
- void (*free_summary) (CamelFolder *folder,
- GPtrArray *summary);
-
- gboolean (*has_search_capability) (CamelFolder *folder);
-
- GPtrArray * (*search_by_expression) (CamelFolder *folder,
- const char *expression,
- CamelException *ex);
-
- void (*search_free) (CamelFolder *folder, GPtrArray *result);
-
- CamelMessageInfo * (*get_message_info) (CamelFolder *, const char *uid);
- void (*ref_message_info) (CamelFolder *, CamelMessageInfo *);
- void (*free_message_info) (CamelFolder *, CamelMessageInfo *);
-
- void (*copy_messages_to) (CamelFolder *source,
- GPtrArray *uids,
- CamelFolder *destination,
- CamelException *ex);
-
- void (*move_messages_to) (CamelFolder *source,
- GPtrArray *uids,
- CamelFolder *destination,
- CamelException *ex);
-
- void (*freeze) (CamelFolder *folder);
- void (*thaw) (CamelFolder *folder);
-} CamelFolderClass;
-
-/* Standard Camel function */
-CamelType camel_folder_get_type (void);
-
-
-/* public methods */
-void camel_folder_construct (CamelFolder *folder,
- CamelStore *parent_store,
- const char *full_name,
- const char *name);
-
-void camel_folder_refresh_info (CamelFolder * folder,
- CamelException * ex);
-void camel_folder_sync (CamelFolder *folder,
- gboolean expunge,
- CamelException *ex);
-
-CamelStore * camel_folder_get_parent_store (CamelFolder *folder);
-
-
-/* delete operations */
-void camel_folder_expunge (CamelFolder *folder,
- CamelException *ex);
-
-
-/* folder name operations */
-const char * camel_folder_get_name (CamelFolder *folder);
-const char * camel_folder_get_full_name (CamelFolder *folder);
-
-
-/* various properties accessors */
-guint32 camel_folder_get_permanent_flags (CamelFolder *folder);
-
-guint32 camel_folder_get_message_flags (CamelFolder *folder,
- const char *uid);
-
-void camel_folder_set_message_flags (CamelFolder *folder,
- const char *uid,
- guint32 flags,
- guint32 set);
-
-gboolean camel_folder_get_message_user_flag (CamelFolder *folder,
- const char *uid,
- const char *name);
-
-void camel_folder_set_message_user_flag (CamelFolder *folder,
- const char *uid,
- const char *name,
- gboolean value);
-const char * camel_folder_get_message_user_tag (CamelFolder *folder,
- const char *uid,
- const char *name);
-
-void camel_folder_set_message_user_tag (CamelFolder *folder,
- const char *uid,
- const char *name,
- const char *value);
-
-
-
-/* message manipulation */
-void camel_folder_append_message (CamelFolder *folder,
- CamelMimeMessage *message,
- const CamelMessageInfo *info,
- CamelException *ex);
-
-
-/* summary related operations */
-gboolean camel_folder_has_summary_capability (CamelFolder *folder);
-
-
-int camel_folder_get_message_count (CamelFolder *folder);
-
-int camel_folder_get_unread_message_count (CamelFolder *folder);
-
-GPtrArray * camel_folder_get_summary (CamelFolder *folder);
-void camel_folder_free_summary (CamelFolder *folder,
- GPtrArray *array);
-
-/* uid based access operations */
-CamelMimeMessage * camel_folder_get_message (CamelFolder *folder,
- const char *uid,
- CamelException *ex);
-#define camel_folder_delete_message(folder, uid) \
- camel_folder_set_message_flags (folder, uid, CAMEL_MESSAGE_DELETED, CAMEL_MESSAGE_DELETED)
-
-GPtrArray * camel_folder_get_uids (CamelFolder *folder);
-void camel_folder_free_uids (CamelFolder *folder,
- GPtrArray *array);
-
-/* search api */
-gboolean camel_folder_has_search_capability (CamelFolder *folder);
-GPtrArray * camel_folder_search_by_expression (CamelFolder *folder,
- const char *expression,
- CamelException *ex);
-void camel_folder_search_free (CamelFolder *folder, GPtrArray *);
-
-/* summary info */
-CamelMessageInfo *camel_folder_get_message_info (CamelFolder *folder, const char *uid);
-void camel_folder_free_message_info (CamelFolder *folder, CamelMessageInfo *info);
-void camel_folder_ref_message_info (CamelFolder *folder, CamelMessageInfo *info);
-
-void camel_folder_copy_messages_to (CamelFolder *source,
- GPtrArray *uids,
- CamelFolder *dest,
- CamelException *ex);
-
-void camel_folder_move_messages_to (CamelFolder *source,
- GPtrArray *uids,
- CamelFolder *dest,
- CamelException *ex);
-
-/* stop/restart getting events */
-void camel_folder_freeze (CamelFolder *folder);
-void camel_folder_thaw (CamelFolder *folder);
-
-#if 0
-/* lock/unlock at the thread level, NOTE: only used internally */
-void camel_folder_lock (CamelFolder *folder);
-void camel_folder_unlock (CamelFolder *folder);
-#endif
-
-/* For use by subclasses (for free_{uids,summary,subfolder_names}) */
-void camel_folder_free_nop (CamelFolder *folder, GPtrArray *array);
-void camel_folder_free_shallow (CamelFolder *folder, GPtrArray *array);
-void camel_folder_free_deep (CamelFolder *folder, GPtrArray *array);
-
-/* update functions for change info */
-CamelFolderChangeInfo * camel_folder_change_info_new (void);
-void camel_folder_change_info_clear (CamelFolderChangeInfo *info);
-void camel_folder_change_info_free (CamelFolderChangeInfo *info);
-gboolean camel_folder_change_info_changed (CamelFolderChangeInfo *info);
-
-/* for building diff's automatically */
-void camel_folder_change_info_add_source (CamelFolderChangeInfo *info, const char *uid);
-void camel_folder_change_info_add_source_list(CamelFolderChangeInfo *info, const GPtrArray *list);
-void camel_folder_change_info_add_update (CamelFolderChangeInfo *info, const char *uid);
-void camel_folder_change_info_add_update_list(CamelFolderChangeInfo *info, const GPtrArray *list);
-void camel_folder_change_info_build_diff (CamelFolderChangeInfo *info);
-
-/* for manipulating diff's directly */
-void camel_folder_change_info_cat (CamelFolderChangeInfo *info, CamelFolderChangeInfo *s);
-void camel_folder_change_info_add_uid (CamelFolderChangeInfo *info, const char *uid);
-void camel_folder_change_info_remove_uid (CamelFolderChangeInfo *info, const char *uid);
-void camel_folder_change_info_change_uid (CamelFolderChangeInfo *info, const char *uid);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_FOLDER_H */
-
diff --git a/camel/camel-internet-address.c b/camel/camel-internet-address.c
deleted file mode 100644
index 902178c303..0000000000
--- a/camel/camel-internet-address.c
+++ /dev/null
@@ -1,509 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <stdio.h>
-#include <string.h>
-
-#include "camel-mime-utils.h"
-#include "camel-internet-address.h"
-
-#define d(x)
-
-static int internet_decode (CamelAddress *, const char *raw);
-static char * internet_encode (CamelAddress *);
-static int internet_unformat (CamelAddress *, const char *raw);
-static char * internet_format (CamelAddress *);
-static int internet_cat (CamelAddress *dest, const CamelAddress *source);
-static void internet_remove (CamelAddress *, int index);
-
-static void camel_internet_address_class_init (CamelInternetAddressClass *klass);
-static void camel_internet_address_init (CamelInternetAddress *obj);
-
-static CamelAddressClass *camel_internet_address_parent;
-
-struct _address {
- char *name;
- char *address;
-};
-
-static void
-camel_internet_address_class_init(CamelInternetAddressClass *klass)
-{
- CamelAddressClass *address = (CamelAddressClass *) klass;
-
- camel_internet_address_parent = CAMEL_ADDRESS_CLASS(camel_type_get_global_classfuncs(camel_address_get_type()));
-
- address->decode = internet_decode;
- address->encode = internet_encode;
- address->unformat = internet_unformat;
- address->format = internet_format;
- address->remove = internet_remove;
- address->cat = internet_cat;
-}
-
-static void
-camel_internet_address_init(CamelInternetAddress *obj)
-{
-}
-
-CamelType
-camel_internet_address_get_type(void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_address_get_type(), "CamelInternetAddress",
- sizeof (CamelInternetAddress),
- sizeof (CamelInternetAddressClass),
- (CamelObjectClassInitFunc) camel_internet_address_class_init,
- NULL,
- (CamelObjectInitFunc) camel_internet_address_init,
- NULL);
- }
-
- return type;
-}
-
-static int
-internet_decode (CamelAddress *a, const char *raw)
-{
- struct _header_address *ha, *n;
- int count = a->addresses->len;
-
- /* Should probably use its own decoder or something */
- ha = header_address_decode(raw);
- if (ha) {
- n = ha;
- while (n) {
- if (n->type == HEADER_ADDRESS_NAME) {
- camel_internet_address_add((CamelInternetAddress *)a, n->name, n->v.addr);
- } else if (n->type == HEADER_ADDRESS_GROUP) {
- struct _header_address *g = n->v.members;
- while (g) {
- if (g->type == HEADER_ADDRESS_NAME)
- camel_internet_address_add((CamelInternetAddress *)a, g->name, g->v.addr);
- /* otherwise, it's an error, infact */
- g = g->next;
- }
- }
- n = n->next;
- }
- header_address_list_clear(&ha);
- }
-
- return a->addresses->len - count;
-}
-
-static char *
-internet_encode (CamelAddress *a)
-{
- int i;
- GString *out;
- char *ret;
- int len = 6; /* "From: ", assume longer of the address headers */
-
- if (a->addresses->len == 0)
- return NULL;
-
- out = g_string_new("");
-
- for (i = 0;i < a->addresses->len; i++) {
- struct _address *addr = g_ptr_array_index(a->addresses, i);
- char *enc;
-
- if (i != 0)
- g_string_append(out, ", ");
-
- enc = camel_internet_address_encode_address(&len, addr->name, addr->address);
- g_string_sprintfa(out, "%s", enc);
- g_free(enc);
- }
-
- ret = out->str;
- g_string_free(out, FALSE);
-
- return ret;
-}
-
-static int
-internet_unformat(CamelAddress *a, const char *raw)
-{
- char *buffer, *p, *name, *addr;
- int c;
- int count = a->addresses->len;
-
- if (raw == NULL)
- return 0;
-
- d(printf("unformatting address: %s\n", raw));
-
- /* we copy, so we can modify as we go */
- buffer = g_strdup(raw);
-
- /* this can be simpler than decode, since there are much fewer rules */
- p = buffer;
- name = NULL;
- addr = p;
- do {
- c = (unsigned char)*p++;
- switch (c) {
- /* removes quotes, they should only be around the total name anyway */
- case '"':
- p[-1] = ' ';
- while (*p)
- if (*p == '"') {
- *p++ = ' ';
- break;
- } else {
- p++;
- }
- break;
- case '<':
- if (name == NULL)
- name = addr;
- addr = p;
- addr[-1] = 0;
- while (*p && *p != '>')
- p++;
- if (*p == 0)
- break;
- p++;
- /* falls through */
- case ',':
- p[-1] = 0;
- /* falls through */
- case 0:
- if (name)
- name = g_strstrip(name);
- addr = g_strstrip(addr);
- if (addr[0]) {
- d(printf("found address: '%s' <%s>\n", name, addr));
- camel_internet_address_add((CamelInternetAddress *)a, name, addr);
- }
- name = NULL;
- addr = p;
- break;
- }
- } while (c);
-
- g_free(buffer);
-
- return a->addresses->len - count;
-}
-
-static char *
-internet_format (CamelAddress *a)
-{
- int i;
- GString *out;
- char *ret;
-
- if (a->addresses->len == 0)
- return NULL;
-
- out = g_string_new("");
-
- for (i = 0;i < a->addresses->len; i++) {
- struct _address *addr = g_ptr_array_index(a->addresses, i);
- char *enc;
-
- if (i != 0)
- g_string_append(out, ", ");
-
- enc = camel_internet_address_format_address(addr->name, addr->address);
- g_string_sprintfa(out, "%s", enc);
- g_free(enc);
- }
-
- ret = out->str;
- g_string_free(out, FALSE);
-
- return ret;
-}
-
-static int internet_cat (CamelAddress *dest, const CamelAddress *source)
-{
- int i;
-
- g_assert(CAMEL_IS_INTERNET_ADDRESS(source));
-
- for (i=0;i<source->addresses->len;i++) {
- struct _address *addr = g_ptr_array_index(source->addresses, i);
- camel_internet_address_add((CamelInternetAddress *)dest, addr->name, addr->address);
- }
-
- return i;
-}
-
-static void
-internet_remove (CamelAddress *a, int index)
-{
- struct _address *addr;
-
- if (index < 0 || index >= a->addresses->len)
- return;
-
- addr = g_ptr_array_index(a->addresses, index);
- g_free(addr->name);
- g_free(addr->address);
- g_free(addr);
- g_ptr_array_remove_index(a->addresses, index);
-}
-
-/**
- * camel_internet_address_new:
- *
- * Create a new CamelInternetAddress object.
- *
- * Return value: A new CamelInternetAddress object.
- **/
-CamelInternetAddress *
-camel_internet_address_new (void)
-{
- CamelInternetAddress *new = CAMEL_INTERNET_ADDRESS(camel_object_new(camel_internet_address_get_type()));
- return new;
-}
-
-/**
- * camel_internet_address_add:
- * @a: internet address object
- * @name:
- * @address:
- *
- * Add a new internet address to the address object.
- *
- * Return value: Index of added entry.
- **/
-int
-camel_internet_address_add (CamelInternetAddress *a, const char *name, const char *address)
-{
- struct _address *new;
- int index;
-
- g_assert(CAMEL_IS_INTERNET_ADDRESS(a));
-
- new = g_malloc(sizeof(*new));
- new->name = g_strdup(name);
- new->address = g_strdup(address);
- index = ((CamelAddress *)a)->addresses->len;
- g_ptr_array_add(((CamelAddress *)a)->addresses, new);
-
- return index;
-}
-
-/**
- * camel_internet_address_get:
- * @a: internet address object
- * @index: address's array index
- * @namep: Holder for the returned name, or NULL, if not required.
- * @addressp: Holder for the returned address, or NULL, if not required.
- *
- * Get the address at @index.
- *
- * Return value: TRUE if such an address exists, or FALSE otherwise.
- **/
-gboolean
-camel_internet_address_get (const CamelInternetAddress *a, int index, const char **namep, const char **addressp)
-{
- struct _address *addr;
-
- g_assert(CAMEL_IS_INTERNET_ADDRESS(a));
-
- if (index < 0 || index >= ((CamelAddress *)a)->addresses->len)
- return FALSE;
-
- addr = g_ptr_array_index( ((CamelAddress *)a)->addresses, index);
- if (namep)
- *namep = addr->name;
- if (addressp)
- *addressp = addr->address;
- return TRUE;
-}
-
-/**
- * camel_internet_address_find_name:
- * @a:
- * @name:
- * @addressp: Holder for address part, or NULL, if not required.
- *
- * Find address by real name.
- *
- * Return value: The index of the address matching the name, or -1
- * if no match was found.
- **/
-int
-camel_internet_address_find_name(CamelInternetAddress *a, const char *name, const char **addressp)
-{
- struct _address *addr;
- int i, len;
-
- g_assert(CAMEL_IS_INTERNET_ADDRESS(a));
-
- len = ((CamelAddress *)a)->addresses->len;
- for (i=0;i<len;i++) {
- addr = g_ptr_array_index( ((CamelAddress *)a)->addresses, i );
- if (!strcmp(addr->name, name)) {
- if (addressp)
- *addressp = addr->address;
- return i;
- }
- }
- return -1;
-}
-
-/**
- * camel_internet_address_find_address:
- * @a:
- * @address:
- * @namep: Return for the matching name, or NULL, if not required.
- *
- * Find an address by address.
- *
- * Return value: The index of the address, or -1 if not found.
- **/
-int
-camel_internet_address_find_address(CamelInternetAddress *a, const char *address, const char **namep)
-{
- struct _address *addr;
- int i, len;
-
- g_assert(CAMEL_IS_INTERNET_ADDRESS(a));
-
- len = ((CamelAddress *)a)->addresses->len;
- for (i=0;i<len;i++) {
- addr = g_ptr_array_index( ((CamelAddress *)a)->addresses, i );
- if (!strcmp(addr->address, address)) {
- if (namep)
- *namep = addr->name;
- return i;
- }
- }
- return -1;
-}
-
-/**
- * camel_internet_address_encode_address:
- * @len: The encoded length so far, of this line
- * @name:
- * @addr:
- *
- * Encode a single address ready for internet usage. Header folding
- * as per rfc 822 is also performed, based on the length in len.
- *
- * Return value: The encoded address.
- **/
-char *
-camel_internet_address_encode_address(int *inlen, const char *real, const char *addr)
-{
- char *name = header_encode_phrase(real);
- char *ret = NULL, *addra = NULL;
- int len = *inlen;
- GString *out = g_string_new("");
-
- g_assert(addr);
-
- if (name && name[0]) {
- if (strlen(name) + len > CAMEL_FOLD_SIZE) {
- char *folded = header_fold(name, len);
- char *last;
- g_string_append(out, folded);
- g_free(folded);
- last = strrchr(out->str, '\n');
- if (last)
- len = last-(out->str+out->len);
- else
- len = out->len;
- } else {
- g_string_append(out, name);
- len += strlen(name);
- }
- addr = addra = g_strdup_printf(" <%s>", addr);
- }
-
- /* NOTE: Strictly speaking, we could and should split the
- * internal address up if we need to, on atom or specials
- * boundaries - however, to aid interoperability with mailers
- * that will probably not handle this case, we will just move
- * the whole address to its own line */
- if (strlen(addr) + len > CAMEL_FOLD_SIZE) {
- g_string_append(out, "\n\t");
- g_string_append(out, addr);
- len = strlen(addr)+1;
- } else {
- g_string_append(out, addr);
- len += strlen(addr);
- }
-
- *inlen = len;
-#if 0
- if (name && name[0])
- ret = g_strdup_printf("%s <%s>", name, addr);
- else
- ret = g_strdup_printf("%s", addr);
-#endif
- g_free(name);
- g_free(addra);
-
- ret = out->str;
- g_string_free(out, FALSE);
-
- return ret;
-}
-
-/**
- * camel_internet_address_format_address:
- * @name: A name, quotes may be stripped from it.
- * @addr: Assumes a valid rfc822 email address.
- *
- * Function to format a single address, suitable for display.
- *
- * Return value:
- **/
-char *
-camel_internet_address_format_address(const char *name, const char *addr)
-{
- char *ret = NULL;
-
- g_assert(addr);
-
- if (name && name[0]) {
- const char *p = name;
- char *o, c;
-
- while ((c = *p++)) {
- if (c == '\"' || c == ',') {
- o = ret = g_malloc(strlen(name)+3+strlen(addr)+3 + 1);
- p = name;
- *o++ = '\"';
- while ((c = *p++))
- if (c != '\"')
- *o++ = c;
- *o++ = '\"';
- sprintf(o, " <%s>", addr);
- d(printf("encoded '%s' => '%s'\n", name, ret));
- return ret;
- }
- }
- ret = g_strdup_printf("%s <%s>", name, addr);
- } else
- ret = g_strdup(addr);
-
- return ret;
-}
diff --git a/camel/camel-internet-address.h b/camel/camel-internet-address.h
deleted file mode 100644
index 7afd74fad9..0000000000
--- a/camel/camel-internet-address.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef _CAMEL_INTERNET_ADDRESS_H
-#define _CAMEL_INTERNET_ADDRESS_H
-
-#include <camel/camel-address.h>
-
-#define CAMEL_INTERNET_ADDRESS(obj) CAMEL_CHECK_CAST (obj, camel_internet_address_get_type (), CamelInternetAddress)
-#define CAMEL_INTERNET_ADDRESS_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_internet_address_get_type (), CamelInternetAddressClass)
-#define CAMEL_IS_INTERNET_ADDRESS(obj) CAMEL_CHECK_TYPE (obj, camel_internet_address_get_type ())
-
-typedef struct _CamelInternetAddressClass CamelInternetAddressClass;
-
-struct _CamelInternetAddress {
- CamelAddress parent;
-
- struct _CamelInternetAddressPrivate *priv;
-};
-
-struct _CamelInternetAddressClass {
- CamelAddressClass parent_class;
-};
-
-guint camel_internet_address_get_type (void);
-CamelInternetAddress *camel_internet_address_new (void);
-
-int camel_internet_address_add (CamelInternetAddress *, const char *, const char *);
-gboolean camel_internet_address_get (const CamelInternetAddress *, int, const char **, const char **);
-
-int camel_internet_address_find_name(CamelInternetAddress *, const char *, const char **);
-int camel_internet_address_find_address(CamelInternetAddress *, const char *, const char **);
-
-/* utility functions, for network/display formatting */
-char * camel_internet_address_encode_address(int *len, const char *name, const char *addr);
-char * camel_internet_address_format_address(const char *real, const char *addr);
-
-#endif /* ! _CAMEL_INTERNET_ADDRESS_H */
diff --git a/camel/camel-lock.c b/camel/camel-lock.c
deleted file mode 100644
index c14accdd0e..0000000000
--- a/camel/camel-lock.c
+++ /dev/null
@@ -1,407 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Author: Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright (C) 1999 Helix Code (http://www.helixcode.com/).
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <sys/stat.h>
-#include <unistd.h>
-#include <errno.h>
-#ifdef HAVE_ALLOCA_H
-#include <alloca.h>
-#endif
-#include <time.h>
-
-#ifdef USE_DOT
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#endif
-
-#ifdef USE_FCNTL
-#include <unistd.h>
-#include <fcntl.h>
-#endif
-
-#ifdef USE_FLOCK
-#include <sys/file.h>
-#endif
-
-#include "camel-lock.h"
-
-/* dunno where this fucking thing is got from */
-#define _(x) (x)
-
-#define d(x) /*(printf("%s(%d): ", __FILE__, __LINE__),(x))*/
-
-/**
- * camel_lock_dot:
- * @path:
- * @ex:
- *
- * Create an exclusive lock using .lock semantics.
- * All locks are equivalent to write locks (exclusive).
- *
- * Return value: -1 on error, sets @ex appropriately.
- **/
-int
-camel_lock_dot(const char *path, CamelException *ex)
-{
-#ifdef USE_DOT
- char *locktmp, *lock;
- int retry = 0;
- int fdtmp;
- struct stat st;
-
- /* TODO: Is there a reliable way to refresh the lock, if we're still busy with it?
- Does it matter? We will normally also use fcntl too ... */
-
- /* use alloca, save cleaning up afterwards */
- lock = alloca(strlen(path) + strlen(".lock") + 1);
- sprintf(lock, "%s.lock", path);
- locktmp = alloca(strlen(path) + strlen("XXXXXX") + 1);
-
-#ifndef HAVE_MKSTEMP
- sprintf(locktmp, "%sXXXXXX", path);
- if (mktemp(locktmp) == NULL) {
- /* well, this is really only a programatic error */
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM, _("Could not create lock file for %s: %s"), path, strerror(errno));
- return -1;
- }
-#endif
-
- while (retry < CAMEL_LOCK_DOT_RETRY) {
-
- d(printf("trying to lock '%s', attempt %d\n", lock, retry));
-
- if (retry > 0)
- sleep(CAMEL_LOCK_DOT_DELAY);
-
-#ifdef HAVE_MKSTEMP
- sprintf(locktmp, "%sXXXXXX", path);
- fdtmp = mkstemp(locktmp);
-#else
- fdtmp = open(locktmp, O_RDWR|O_CREAT|O_EXCL, 0600);
-#endif
- if (fdtmp == -1) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM, _("Could not create lock file for %s: %s"), path, strerror(errno));
- return -1;
- }
- close(fdtmp);
-
- /* apparently return code from link can be unreliable for nfs (see link(2)), so we ignore it */
- link(locktmp, lock);
-
- /* but we check stat instead (again, see link(2)) */
- if (stat(locktmp, &st) == -1) {
- d(printf("Out lock file %s vanished!?\n", locktmp));
-
- /* well that was unexpected, try cleanup/retry */
- unlink(locktmp);
- unlink(lock);
- } else {
- d(printf("tmp lock created, link count is %d\n", st.st_nlink));
-
- unlink(locktmp);
-
- /* if we had 2 links, we have created the .lock, return ok, otherwise we need to keep trying */
- if (st.st_nlink == 2)
- return 0;
- }
-
- /* check for stale lock, kill it */
- if (stat(lock, &st) == 0) {
- time_t now = time(0);
- (printf("There is an existing lock %ld seconds old\n", now-st.st_ctime));
- if (st.st_ctime < now - CAMEL_LOCK_DOT_STALE) {
- d(printf("Removing it now\n"));
- unlink(lock);
- }
- }
-
- retry++;
- }
-
- d(printf("failed to get lock after %d retries\n", retry));
-
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM, _("Timed out trying to get lock file on %s. Try again later."), path);
- return -1;
-#else /* ! USE_DOT */
- return 0;
-#endif
-}
-
-/**
- * camel_unlock_dot:
- * @path:
- *
- * Attempt to unlock a .lock lock.
- **/
-void
-camel_unlock_dot(const char *path)
-{
-#ifdef USE_DOT
- char *lock;
-
- lock = alloca(strlen(path) + strlen(".lock") + 1);
- sprintf(lock, "%s.lock", path);
- d(printf("unlocking %s\n", lock));
- (void)unlink(lock);
-#endif
-}
-
-/**
- * camel_lock_fcntl:
- * @fd:
- * @type:
- * @ex:
- *
- * Create a lock using fcntl(2).
- *
- * @type is CAMEL_LOCK_WRITE or CAMEL_LOCK_READ,
- * to create exclusive or shared read locks
- *
- * Return value: -1 on error.
- **/
-int
-camel_lock_fcntl(int fd, CamelLockType type, CamelException *ex)
-{
-#ifdef USE_FCNTL
- struct flock lock;
-
- d(printf("fcntl locking %d\n", fd));
-
- memset(&lock, 0, sizeof(lock));
- lock.l_type = type==CAMEL_LOCK_READ?F_RDLCK:F_WRLCK;
- if (fcntl(fd, F_SETLK, &lock) == -1) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM, _("Failed to get lock using fcntl(2): %s"), strerror(errno));
- return -1;
- }
-#endif
- return 0;
-}
-
-/**
- * camel_unlock_fcntl:
- * @fd:
- *
- * Unlock an fcntl lock.
- **/
-void
-camel_unlock_fcntl(int fd)
-{
-#ifdef USE_FCNTL
- struct flock lock;
-
- d(printf("fcntl unlocking %d\n", fd));
-
- memset(&lock, 0, sizeof(lock));
- lock.l_type = F_UNLCK;
- fcntl(fd, F_SETLK, &lock);
-#endif
-}
-
-/**
- * camel_lock_flock:
- * @fd:
- * @type:
- * @ex:
- *
- * Create a lock using flock(2).
- *
- * @type is CAMEL_LOCK_WRITE or CAMEL_LOCK_READ,
- * to create exclusive or shared read locks
- *
- * Return value: -1 on error.
- **/
-int
-camel_lock_flock(int fd, CamelLockType type, CamelException *ex)
-{
-#ifdef USE_FLOCK
- int op;
-
- d(printf("flock locking %d\n", fd));
-
- if (type == CAMEL_LOCK_READ)
- op = LOCK_SH|LOCK_NB;
- else
- op = LOCK_EX|LOCK_NB;
-
- if (flock(fd, op) == -1) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM, _("Failed to get lock using flock(2): %s"), strerror(errno));
- return -1;
- }
-#endif
- return 0;
-}
-
-/**
- * camel_unlock_flock:
- * @fd:
- *
- * Unlock an flock lock.
- **/
-void
-camel_unlock_flock(int fd)
-{
-#ifdef USE_FLOCK
- d(printf("flock unlocking %d\n", fd));
-
- (void)flock(fd, LOCK_UN);
-#endif
-}
-
-/**
- * camel_lock_folder:
- * @path: Path to the file to lock (used for .locking only).
- * @fd: Open file descriptor of the right type to lock.
- * @type: Type of lock, CAMEL_LOCK_READ or CAMEL_LOCK_WRITE.
- * @ex:
- *
- * Attempt to lock a folder, multiple attempts will be made using all
- * locking strategies available.
- *
- * Return value: -1 on error, @ex will describe the locking system that failed.
- **/
-int
-camel_lock_folder(const char *path, int fd, CamelLockType type, CamelException *ex)
-{
- int retry = 0;
-
- while (retry < CAMEL_LOCK_RETRY) {
- if (retry > 0)
- sleep(CAMEL_LOCK_DELAY);
-
- camel_exception_clear(ex);
-
- if (camel_lock_fcntl(fd, type, ex) == 0) {
- if (camel_lock_flock(fd, type, ex) == 0) {
- if (camel_lock_dot(path, ex) == 0)
- return 0;
- camel_unlock_flock(fd);
- }
- camel_unlock_fcntl(fd);
- }
- retry++;
- }
-
- return -1;
-}
-
-/**
- * camel_unlock_folder:
- * @path: Filename of folder.
- * @fd: Open descrptor on which locks were placed.
- *
- * Free a lock on a folder.
- **/
-void
-camel_unlock_folder(const char *path, int fd)
-{
- camel_unlock_dot(path);
- camel_unlock_flock(fd);
- camel_unlock_fcntl(fd);
-}
-
-#if 0
-int main(int argc, char **argv)
-{
- CamelException *ex;
- int fd1, fd2;
-
- ex = camel_exception_new();
-
-#if 0
- if (camel_lock_dot("mylock", ex) == 0) {
- if (camel_lock_dot("mylock", ex) == 0) {
- printf("Got lock twice?\n");
- } else {
- printf("failed to get lock 2: %s\n", camel_exception_get_description(ex));
- }
- camel_unlock_dot("mylock");
- } else {
- printf("failed to get lock 1: %s\n", camel_exception_get_description(ex));
- }
-
- camel_exception_clear(ex);
-#endif
-
- fd1 = open("mylock", O_RDWR);
- fd2 = open("mylock", O_RDWR);
-
- if (camel_lock_fcntl(fd1, CAMEL_LOCK_WRITE, ex) == 0) {
- printf("got fcntl write lock once\n");
- sleep(5);
- if (camel_lock_fcntl(fd2, CAMEL_LOCK_WRITE, ex) == 0) {
- printf("got fcntl write lock twice!\n");
- } else {
- printf("failed to get write lock: %s\n", camel_exception_get_description(ex));
- }
-
- camel_exception_clear(ex);
-
- if (camel_lock_fcntl(fd2, CAMEL_LOCK_READ, ex) == 0) {
- printf("got fcntl read lock as well?\n");
- camel_unlock_fcntl(fd2);
- } else {
- printf("failed to get read lock: %s\n", camel_exception_get_description(ex));
- }
-
- camel_exception_clear(ex);
- camel_unlock_fcntl(fd1);
- } else {
- printf("failed to get write lock at all: %s\n", camel_exception_get_description(ex));
- }
-
- if (camel_lock_fcntl(fd1, CAMEL_LOCK_READ, ex) == 0) {
- printf("got fcntl read lock once\n");
- sleep(5);
- if (camel_lock_fcntl(fd2, CAMEL_LOCK_WRITE, ex) == 0) {
- printf("got fcntl write lock too?!\n");
- } else {
- printf("failed to get write lock: %s\n", camel_exception_get_description(ex));
- }
-
- camel_exception_clear(ex);
-
- if (camel_lock_fcntl(fd2, CAMEL_LOCK_READ, ex) == 0) {
- printf("got fcntl read lock twice\n");
- camel_unlock_fcntl(fd2);
- } else {
- printf("failed to get read lock: %s\n", camel_exception_get_description(ex));
- }
-
- camel_exception_clear(ex);
- camel_unlock_fcntl(fd1);
- }
-
- close(fd1);
- close(fd2);
-
- return 0;
-}
-#endif
diff --git a/camel/camel-lock.h b/camel/camel-lock.h
deleted file mode 100644
index 37da6ea135..0000000000
--- a/camel/camel-lock.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Author: Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright (C) 1999 Helix Code (http://www.helixcode.com/).
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef _CAMEL_LOCK_H
-#define _CAMEL_LOCK_H
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <camel/camel-exception.h>
-
-/* for .lock locking, retry, delay and stale counts */
-#define CAMEL_LOCK_DOT_RETRY (5) /* number of times to retry lock */
-#define CAMEL_LOCK_DOT_DELAY (2) /* delay between locking retries */
-#define CAMEL_LOCK_DOT_STALE (60) /* seconds before a lock becomes stale */
-
-/* for locking folders, retry/interretry delay */
-#define CAMEL_LOCK_RETRY (5) /* number of times to retry lock */
-#define CAMEL_LOCK_DELAY (2) /* delay between locking retries */
-
-typedef enum {
- CAMEL_LOCK_READ,
- CAMEL_LOCK_WRITE,
-} CamelLockType;
-
-/* specific locking strategies */
-int camel_lock_dot(const char *path, CamelException *ex);
-int camel_lock_fcntl(int fd, CamelLockType type, CamelException *ex);
-int camel_lock_flock(int fd, CamelLockType type, CamelException *ex);
-
-void camel_unlock_dot(const char *path);
-void camel_unlock_fcntl(int fd);
-void camel_unlock_flock(int fd);
-
-/* lock a folder in a standard way */
-int camel_lock_folder(const char *path, int fd, CamelLockType type, CamelException *ex);
-void camel_unlock_folder(const char *path, int fd);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* !_CAMEL_LOCK_H */
diff --git a/camel/camel-medium.c b/camel/camel-medium.c
deleted file mode 100644
index 5baa35e7dc..0000000000
--- a/camel/camel-medium.c
+++ /dev/null
@@ -1,327 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/* camelMedium.c : Abstract class for a medium
- *
- * Authors: Bertrand Guiheneuf <bertrand@helixcode.com>
- * Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <ctype.h>
-#include "camel-medium.h"
-#include "string-utils.h"
-#include "hash-table-utils.h"
-
-#define d(x)
-
-static CamelDataWrapperClass *parent_class = NULL;
-
-/* Returns the class for a CamelMedium */
-#define CM_CLASS(so) CAMEL_MEDIUM_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-static void add_header (CamelMedium *medium, const gchar *header_name,
- const void *header_value);
-static void set_header (CamelMedium *medium, const gchar *header_name, const void *header_value);
-static void remove_header (CamelMedium *medium, const gchar *header_name);
-static const void *get_header (CamelMedium *medium, const gchar *header_name);
-
-static GArray *get_headers (CamelMedium *medium);
-static void free_headers (CamelMedium *medium, GArray *headers);
-
-static CamelDataWrapper *get_content_object (CamelMedium *medium);
-static void set_content_object (CamelMedium *medium,
- CamelDataWrapper *content);
-
-static void
-camel_medium_class_init (CamelMediumClass *camel_medium_class)
-{
- /*
- * CamelDataWrapperClass *camel_data_wrapper_class =
- * CAMEL_DATA_WRAPPER_CLASS (camel_medium_class);
- */
-
- parent_class = CAMEL_DATA_WRAPPER_CLASS (camel_type_get_global_classfuncs (camel_data_wrapper_get_type ()));
-
- /* virtual method definition */
- camel_medium_class->add_header = add_header;
- camel_medium_class->set_header = set_header;
- camel_medium_class->remove_header = remove_header;
- camel_medium_class->get_header = get_header;
-
- camel_medium_class->get_headers = get_headers;
- camel_medium_class->free_headers = free_headers;
-
- camel_medium_class->set_content_object = set_content_object;
- camel_medium_class->get_content_object = get_content_object;
-}
-
-static void
-camel_medium_init (gpointer object, gpointer klass)
-{
- CamelMedium *camel_medium = CAMEL_MEDIUM (object);
-
- camel_medium->content = NULL;
-}
-
-static void
-camel_medium_finalize (CamelObject *object)
-{
- CamelMedium *medium = CAMEL_MEDIUM (object);
-
- if (medium->content)
- camel_object_unref (CAMEL_OBJECT (medium->content));
-}
-
-
-CamelType
-camel_medium_get_type (void)
-{
- static CamelType camel_medium_type = CAMEL_INVALID_TYPE;
-
- if (camel_medium_type == CAMEL_INVALID_TYPE) {
- camel_medium_type = camel_type_register (CAMEL_DATA_WRAPPER_TYPE, "medium",
- sizeof (CamelMedium),
- sizeof (CamelMediumClass),
- (CamelObjectClassInitFunc) camel_medium_class_init,
- NULL,
- (CamelObjectInitFunc) camel_medium_init,
- (CamelObjectFinalizeFunc) camel_medium_finalize);
- }
-
- return camel_medium_type;
-}
-
-static void
-add_header (CamelMedium *medium, const gchar *header_name,
- const void *header_value)
-{
- g_warning("No %s::add_header implemented, adding %s", camel_type_to_name(CAMEL_OBJECT_GET_TYPE(medium)), header_name);
-}
-
-/**
- * camel_medium_add_header:
- * @medium: a CamelMedium
- * @header_name: name of the header
- * @header_value: value of the header
- *
- * Adds a header to a medium.
- *
- * FIXME: Where does it add it? We need to be able to prepend and
- * append headers, and also be able to insert them relative to other
- * headers. No we dont, order isn't important! Z
- **/
-void
-camel_medium_add_header (CamelMedium *medium, const gchar *header_name, const void *header_value)
-{
- g_return_if_fail (CAMEL_IS_MEDIUM (medium));
- g_return_if_fail (header_name != NULL);
- g_return_if_fail (header_value != NULL);
-
- CM_CLASS (medium)->add_header(medium, header_name, header_value);
-}
-
-static void
-set_header (CamelMedium *medium, const char *header_name, const void *header_value)
-{
- g_warning("No %s::set_header implemented, setting %s", camel_type_to_name(CAMEL_OBJECT_GET_TYPE(medium)), header_name);
-}
-
-/**
- * camel_medium_set_header:
- * @medium: a CamelMedium
- * @header_name: name of the header
- * @header_value: value of the header
- *
- * Sets the value of a header. Any other occurances of the header
- * will be removed. Setting a %NULL header can be used to remove
- * the header also.
- **/
-void
-camel_medium_set_header (CamelMedium *medium, const char *header_name, const void *header_value)
-{
- g_return_if_fail (CAMEL_IS_MEDIUM (medium));
- g_return_if_fail (header_name != NULL);
-
- if (header_value == NULL)
- CM_CLASS(medium)->remove_header(medium, header_name);
- else
- CM_CLASS(medium)->set_header(medium, header_name, header_value);
-}
-
-static void
-remove_header(CamelMedium *medium, const char *header_name)
-{
- g_warning("No %s::remove_header implemented, removing %s", camel_type_to_name(CAMEL_OBJECT_GET_TYPE(medium)), header_name);
-}
-
-/**
- * camel_medium_remove_header:
- * @medium: a medium
- * @header_name: the name of the header
- *
- * Removes the named header from the medium. All occurances of the
- * header are removed.
- **/
-void
-camel_medium_remove_header(CamelMedium *medium, const char *header_name)
-{
- g_return_if_fail (CAMEL_IS_MEDIUM (medium));
- g_return_if_fail (header_name != NULL);
-
- CM_CLASS(medium)->remove_header(medium, header_name);
-}
-
-
-static const void *
-get_header(CamelMedium *medium, const char *header_name)
-{
- g_warning("No %s::get_header implemented, getting %s", camel_type_to_name(CAMEL_OBJECT_GET_TYPE(medium)), header_name);
- return NULL;
-}
-
-/**
- * camel_medium_get_header:
- * @medium: a medium
- * @header_name: the name of the header
- *
- * Returns the value of the named header in the medium, or %NULL if
- * it is unset. The caller should not modify or free the data.
- *
- * FIXME: What if the header occurs more than once?
- *
- * Return value: the value of the named header, or %NULL
- **/
-const void *
-camel_medium_get_header(CamelMedium *medium, const char *header_name)
-{
- g_return_val_if_fail (CAMEL_IS_MEDIUM (medium), NULL);
- g_return_val_if_fail (header_name != NULL, NULL);
-
-#ifndef NO_WARNINGS
-#warning No way to get multi-valued headers?
-#endif
-
- return CM_CLASS (medium)->get_header (medium, header_name);
-}
-
-
-static GArray *
-get_headers(CamelMedium *medium)
-{
- g_warning("No %s::get_headers implemented", camel_type_to_name(CAMEL_OBJECT_GET_TYPE(medium)));
- return NULL;
-}
-
-/**
- * camel_medium_get_headers:
- * @medium: a medium
- *
- * Returns an array of all header name/value pairs (as
- * CamelMediumHeader structures). The values will be decoded
- * to UTF-8 for any headers that are recognized by Camel. The
- * caller should not modify the returned data.
- *
- * Return value: the array of headers, which must be freed with
- * camel_medium_free_headers().
- **/
-GArray *
-camel_medium_get_headers(CamelMedium *medium)
-{
- g_return_val_if_fail (CAMEL_IS_MEDIUM (medium), NULL);
-
- return CM_CLASS (medium)->get_headers (medium);
-}
-
-static void
-free_headers (CamelMedium *medium, GArray *headers)
-{
- g_warning("No %s::free_headers implemented", camel_type_to_name(CAMEL_OBJECT_GET_TYPE(medium)));
-}
-
-/**
- * camel_medium_free_headers:
- * @medium: a medium
- * @headers: an array of headers returned from camel_medium_get_headers()
- *
- * Frees @headers
- **/
-void
-camel_medium_free_headers (CamelMedium *medium, GArray *headers)
-{
- g_return_if_fail (CAMEL_IS_MEDIUM (medium));
- g_return_if_fail (headers != NULL);
-
- CM_CLASS (medium)->free_headers (medium, headers);
-}
-
-
-static CamelDataWrapper *
-get_content_object(CamelMedium *medium)
-{
- return medium->content;
-}
-
-/**
- * camel_medium_get_content_object:
- * @medium: a medium
- *
- * Returns a data wrapper that represents the content of the medium,
- * without its headers.
- *
- * Return value: the medium's content object.
- **/
-CamelDataWrapper *
-camel_medium_get_content_object (CamelMedium *medium)
-{
- g_return_val_if_fail (CAMEL_IS_MEDIUM (medium), NULL);
-
- return CM_CLASS (medium)->get_content_object (medium);
-}
-
-
-static void
-set_content_object (CamelMedium *medium, CamelDataWrapper *content)
-{
- if (medium->content)
- camel_object_unref (CAMEL_OBJECT (medium->content));
- camel_object_ref (CAMEL_OBJECT (content));
- medium->content = content;
-}
-
-/**
- * camel_medium_set_content_object:
- * @medium: a medium
- * @content: a data wrapper representing the medium's content
- *
- * Sets the content of @medium to be @content.
- **/
-void
-camel_medium_set_content_object (CamelMedium *medium,
- CamelDataWrapper *content)
-{
- g_return_if_fail (CAMEL_IS_MEDIUM (medium));
- g_return_if_fail (CAMEL_IS_DATA_WRAPPER (content));
-
- CM_CLASS (medium)->set_content_object (medium, content);
-}
diff --git a/camel/camel-medium.h b/camel/camel-medium.h
deleted file mode 100644
index 40ee17675d..0000000000
--- a/camel/camel-medium.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-medium.h : class for a medium object */
-
-/*
- *
- * Authors: Bertrand Guiheneuf <bertrand@helixcode.com>
- * Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_MEDIUM_H
-#define CAMEL_MEDIUM_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <camel/camel-data-wrapper.h>
-
-#define CAMEL_MEDIUM_TYPE (camel_medium_get_type ())
-#define CAMEL_MEDIUM(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MEDIUM_TYPE, CamelMedium))
-#define CAMEL_MEDIUM_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MEDIUM_TYPE, CamelMediumClass))
-#define CAMEL_IS_MEDIUM(o) (CAMEL_CHECK_TYPE((o), CAMEL_MEDIUM_TYPE))
-
-
-typedef struct {
- const char *name;
- const char *value;
-} CamelMediumHeader;
-
-struct _CamelMedium
-{
- CamelDataWrapper parent_object;
-
- /* The content of the medium, as opposed to our parent
- * CamelDataWrapper, which wraps both the headers and the
- * content.
- */
- CamelDataWrapper *content;
-
-};
-
-typedef struct {
- CamelDataWrapperClass parent_class;
-
- /* Virtual methods */
- void (*add_header) (CamelMedium *medium, const gchar *header_name, const void *header_value);
- void (*set_header) (CamelMedium *medium, const gchar *header_name, const void *header_value);
- void (*remove_header) (CamelMedium *medium, const gchar *header_name);
- const void * (*get_header) (CamelMedium *medium, const gchar *header_name);
-
- GArray * (*get_headers) (CamelMedium *medium);
- void (*free_headers) (CamelMedium *medium, GArray *headers);
-
- CamelDataWrapper * (*get_content_object) (CamelMedium *medium);
- void (*set_content_object) (CamelMedium *medium, CamelDataWrapper *content);
-
-} CamelMediumClass;
-
-/* Standard Camel function */
-CamelType camel_medium_get_type (void);
-
-/* Header get/set interface */
-void camel_medium_add_header (CamelMedium *medium, const gchar *header_name, const void *header_value);
-void camel_medium_set_header (CamelMedium *medium, const gchar *header_name, const void *header_value);
-void camel_medium_remove_header (CamelMedium *medium, const gchar *header_name);
-const void *camel_medium_get_header (CamelMedium *medium, const gchar *header_name);
-
-GArray *camel_medium_get_headers (CamelMedium *medium);
-void camel_medium_free_headers (CamelMedium *medium, GArray *headers);
-
-/* accessor methods */
-CamelDataWrapper *camel_medium_get_content_object (CamelMedium *medium);
-void camel_medium_set_content_object (CamelMedium *medium,
- CamelDataWrapper *content);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_MEDIUM_H */
-
diff --git a/camel/camel-mime-filter-basic.c b/camel/camel-mime-filter-basic.c
deleted file mode 100644
index 17e667c5ae..0000000000
--- a/camel/camel-mime-filter-basic.c
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "camel-mime-filter-basic.h"
-
-#include "camel-mime-utils.h"
-
-static void reset(CamelMimeFilter *mf);
-static void complete(CamelMimeFilter *mf, char *in, size_t len,
- size_t prespace, char **out,
- size_t *outlen, size_t *outprespace);
-static void filter(CamelMimeFilter *mf, char *in, size_t len,
- size_t prespace, char **out,
- size_t *outlen, size_t *outprespace);
-
-static void camel_mime_filter_basic_class_init (CamelMimeFilterBasicClass *klass);
-static void camel_mime_filter_basic_init (CamelMimeFilterBasic *obj);
-
-static CamelMimeFilterClass *camel_mime_filter_basic_parent;
-
-static void
-camel_mime_filter_basic_class_init (CamelMimeFilterBasicClass *klass)
-{
- CamelMimeFilterClass *filter_class = (CamelMimeFilterClass *) klass;
-
- camel_mime_filter_basic_parent = CAMEL_MIME_FILTER_CLASS(camel_type_get_global_classfuncs (camel_mime_filter_get_type ()));
-
- filter_class->reset = reset;
- filter_class->filter = filter;
- filter_class->complete = complete;
-}
-
-static void
-camel_mime_filter_basic_init (CamelMimeFilterBasic *obj)
-{
- obj->state = 0;
- obj->save = 0;
-}
-
-
-CamelType
-camel_mime_filter_basic_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type (), "CamelMimeFilterBasic",
- sizeof (CamelMimeFilterBasic),
- sizeof (CamelMimeFilterBasicClass),
- (CamelObjectClassInitFunc) camel_mime_filter_basic_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_basic_init,
- NULL);
- }
-
- return type;
-}
-
-/* should this 'flush' outstanding state/data bytes? */
-static void
-reset(CamelMimeFilter *mf)
-{
- CamelMimeFilterBasic *f = (CamelMimeFilterBasic *)mf;
-
- switch(f->type) {
- case CAMEL_MIME_FILTER_BASIC_QP_ENC:
- f->state = -1;
- break;
- default:
- f->state = 0;
- }
- f->save = 0;
-}
-
-static void
-complete(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, size_t *outlen, size_t *outprespace)
-{
- CamelMimeFilterBasic *f = (CamelMimeFilterBasic *)mf;
- int newlen;
-
- switch(f->type) {
- case CAMEL_MIME_FILTER_BASIC_BASE64_ENC:
- /* wont go to more than 2x size (overly conservative) */
- camel_mime_filter_set_size(mf, len*2+6, FALSE);
- newlen = base64_encode_close(in, len, TRUE, mf->outbuf, &f->state, &f->save);
- g_assert(newlen <= len*2+6);
- break;
- case CAMEL_MIME_FILTER_BASIC_QP_ENC:
- /* *4 is definetly more than needed ... */
- camel_mime_filter_set_size(mf, len*4+4, FALSE);
- newlen = quoted_encode_close(in, len, mf->outbuf, &f->state, &f->save);
- g_assert(newlen <= len*4+4);
- break;
- case CAMEL_MIME_FILTER_BASIC_BASE64_DEC:
- /* output can't possibly exceed the input size */
- camel_mime_filter_set_size(mf, len, FALSE);
- newlen = base64_decode_step(in, len, mf->outbuf, &f->state, &f->save);
- g_assert(newlen <= len);
- break;
- case CAMEL_MIME_FILTER_BASIC_QP_DEC:
- /* output can't possibly exceed the input size */
- camel_mime_filter_set_size(mf, len, FALSE);
- newlen = quoted_decode_step(in, len, mf->outbuf, &f->state, &f->save);
- g_assert(newlen <= len);
- break;
- default:
- g_warning("unknown type %d in CamelMimeFilterBasic", f->type);
- goto donothing;
- }
-
- *out = mf->outbuf;
- *outlen = newlen;
- *outprespace = mf->outpre;
-
- return;
-donothing:
- *out = in;
- *outlen = len;
- *outprespace = prespace;
-}
-
-/* here we do all of the basic mime filtering */
-static void
-filter(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, size_t *outlen, size_t *outprespace)
-{
- CamelMimeFilterBasic *f = (CamelMimeFilterBasic *)mf;
- int newlen;
-
- switch(f->type) {
- case CAMEL_MIME_FILTER_BASIC_BASE64_ENC:
- /* wont go to more than 2x size (overly conservative) */
- camel_mime_filter_set_size(mf, len*2+6, FALSE);
- newlen = base64_encode_step(in, len, TRUE, mf->outbuf, &f->state, &f->save);
- g_assert(newlen <= len*2+6);
- break;
- case CAMEL_MIME_FILTER_BASIC_QP_ENC:
- /* *4 is overly conservative, but will do */
- camel_mime_filter_set_size(mf, len*4+4, FALSE);
- newlen = quoted_encode_step(in, len, mf->outbuf, &f->state, &f->save);
- g_assert(newlen <= len*4+4);
- break;
- case CAMEL_MIME_FILTER_BASIC_BASE64_DEC:
- /* output can't possibly exceed the input size */
- camel_mime_filter_set_size(mf, len, FALSE);
- newlen = base64_decode_step(in, len, mf->outbuf, &f->state, &f->save);
- g_assert(newlen <= len);
- break;
- case CAMEL_MIME_FILTER_BASIC_QP_DEC:
- /* output can't possibly exceed the input size */
- camel_mime_filter_set_size(mf, len, FALSE);
- newlen = quoted_decode_step(in, len, mf->outbuf, &f->state, &f->save);
- g_assert(newlen <= len);
- break;
- default:
- g_warning("unknown type %d in CamelMimeFilterBasic", f->type);
- goto donothing;
- }
-
- *out = mf->outbuf;
- *outlen = newlen;
- *outprespace = mf->outpre;
-
- return;
-donothing:
- *out = in;
- *outlen = len;
- *outprespace = prespace;
-}
-
-/**
- * camel_mime_filter_basic_new:
- *
- * Create a new CamelMimeFilterBasic object.
- *
- * Return value: A new CamelMimeFilterBasic widget.
- **/
-CamelMimeFilterBasic *
-camel_mime_filter_basic_new (void)
-{
- CamelMimeFilterBasic *new = CAMEL_MIME_FILTER_BASIC ( camel_object_new (camel_mime_filter_basic_get_type ()));
- return new;
-}
-
-CamelMimeFilterBasic *
-camel_mime_filter_basic_new_type(CamelMimeFilterBasicType type)
-{
- CamelMimeFilterBasic *new;
-
- switch (type) {
- case CAMEL_MIME_FILTER_BASIC_BASE64_ENC:
- case CAMEL_MIME_FILTER_BASIC_QP_ENC:
- case CAMEL_MIME_FILTER_BASIC_BASE64_DEC:
- case CAMEL_MIME_FILTER_BASIC_QP_DEC:
- new = camel_mime_filter_basic_new();
- new->type = type;
- break;
- default:
- g_warning("Invalid type of CamelMimeFilterBasic requested: %d", type);
- new = NULL;
- break;
- }
- camel_mime_filter_reset((CamelMimeFilter *)new);
- return new;
-}
-
diff --git a/camel/camel-mime-filter-basic.h b/camel/camel-mime-filter-basic.h
deleted file mode 100644
index f11b7da479..0000000000
--- a/camel/camel-mime-filter-basic.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef _CAMEL_MIME_FILTER_BASIC_H
-#define _CAMEL_MIME_FILTER_BASIC_H
-
-#include <camel/camel-mime-filter.h>
-
-#define CAMEL_MIME_FILTER_BASIC(obj) CAMEL_CHECK_CAST (obj, camel_mime_filter_basic_get_type (), CamelMimeFilterBasic)
-#define CAMEL_MIME_FILTER_BASIC_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mime_filter_basic_get_type (), CamelMimeFilterBasicClass)
-#define CAMEL_IS_MIME_FILTER_BASIC(obj) CAMEL_CHECK_TYPE (obj, camel_mime_filter_basic_get_type ())
-
-typedef struct _CamelMimeFilterBasicClass CamelMimeFilterBasicClass;
-
-typedef enum {
- CAMEL_MIME_FILTER_BASIC_BASE64_ENC = 1,
- CAMEL_MIME_FILTER_BASIC_BASE64_DEC,
- CAMEL_MIME_FILTER_BASIC_QP_ENC,
- CAMEL_MIME_FILTER_BASIC_QP_DEC,
-} CamelMimeFilterBasicType;
-
-struct _CamelMimeFilterBasic {
- CamelMimeFilter parent;
-
- struct _CamelMimeFilterBasicPrivate *priv;
-
- CamelMimeFilterBasicType type;
-
- int state;
- int save;
-};
-
-struct _CamelMimeFilterBasicClass {
- CamelMimeFilterClass parent_class;
-};
-
-guint camel_mime_filter_basic_get_type (void);
-CamelMimeFilterBasic *camel_mime_filter_basic_new (void);
-CamelMimeFilterBasic *camel_mime_filter_basic_new_type (CamelMimeFilterBasicType type);
-
-#endif /* ! _CAMEL_MIME_FILTER_BASIC_H */
diff --git a/camel/camel-mime-filter-bestenc.c b/camel/camel-mime-filter-bestenc.c
deleted file mode 100644
index 0c42c5c399..0000000000
--- a/camel/camel-mime-filter-bestenc.c
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <string.h>
-
-#include "camel-mime-filter-bestenc.h"
-
-static void camel_mime_filter_bestenc_class_init (CamelMimeFilterBestencClass *klass);
-static void camel_mime_filter_bestenc_init (CamelMimeFilter *obj);
-
-static CamelMimeFilterClass *camel_mime_filter_bestenc_parent;
-
-CamelType
-camel_mime_filter_bestenc_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type (), "CamelMimeFilterBestenc",
- sizeof (CamelMimeFilterBestenc),
- sizeof (CamelMimeFilterBestencClass),
- (CamelObjectClassInitFunc) camel_mime_filter_bestenc_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_bestenc_init,
- NULL);
- }
-
- return type;
-}
-
-static void
-reset(CamelMimeFilter *mf)
-{
- CamelMimeFilterBestenc *f = (CamelMimeFilterBestenc *)mf;
-
- f->count0 = 0;
- f->count8 = 0;
- f->countline = 0;
- f->total = 0;
- f->lastc = ~0;
- f->crlfnoorder = FALSE;
- f->fromcount = 0;
- f->hadfrom = FALSE;
- f->startofline = TRUE;
-
- camel_charset_init(&f->charset);
-}
-
-static void
-filter(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, size_t *outlen, size_t *outprespace)
-{
- CamelMimeFilterBestenc *f = (CamelMimeFilterBestenc *)mf;
- register unsigned char *p, *pend;
-
- if (len == 0)
- goto donothing;
-
- if (f->flags & CAMEL_BESTENC_GET_ENCODING) {
- register unsigned int /* hopefully reg's are assinged in the order they appear? */
- c,
- lastc=f->lastc,
- countline=f->countline,
- count0=f->count0,
- count8 = f->count8;
-
- /* Check ^From lines first call, or have the start of a new line waiting? */
- if ((f->flags & CAMEL_BESTENC_NO_FROM) && !f->hadfrom
- && (f->fromcount > 0 || f->startofline)) {
- if (f->fromcount + len >=5) {
- memcpy(&f->fromsave[f->fromcount], in, 5-f->fromcount);
- f->hadfrom = strncmp(f->fromsave, "From ", 5) == 0;
- f->fromcount = 0;
- } else {
- memcpy(&f->fromsave[f->fromcount], in, len);
- f->fromcount += len;
- }
- }
-
- f->startofline = FALSE;
-
- /* See rfc2045 section 2 for definitions of 7bit/8bit/binary */
- p = in;
- pend = p + len;
- while (p<pend) {
- c = *p++;
- /* check for 8 bit characters */
- if (c & 0x80)
- count8++;
-
- /* check for nul's */
- if (c == 0)
- count0++;
-
- /* check for wild '\r's in a unix format stream */
- if (c == '\r' && (f->flags & CAMEL_BESTENC_LF_IS_CRLF)) {
- f->crlfnoorder = TRUE;
- }
-
- /* check for end of line */
- if (c == '\n') {
- /* check for wild '\n's in canonical format stream */
- if (lastc == '\r' || (f->flags & CAMEL_BESTENC_LF_IS_CRLF)) {
- if (countline > f->maxline)
- f->maxline = countline;
- countline = 0;
-
- /* Check for "^From " lines */
- if ((f->flags & CAMEL_BESTENC_NO_FROM) && !f->hadfrom) {
- if (pend-p >= 5) {
- f->hadfrom = strncmp(p, "From ", 5) == 0;
- } else if (pend-p == 0) {
- f->startofline = TRUE;
- } else {
- f->fromcount = pend-p;
- memcpy(f->fromsave, p, pend-p);
- }
- }
- } else {
- f->crlfnoorder = TRUE;
- }
- } else {
- countline++;
- }
- lastc = c;
- }
- f->count8 = count8;
- f->count0 = count0;
- f->countline = countline;
- f->lastc = lastc;
- }
-
- f->total += len;
-
- if (f->flags & CAMEL_BESTENC_GET_CHARSET)
- camel_charset_step(&f->charset, in, len);
-
-donothing:
- *out = in;
- *outlen = len;
- *outprespace = prespace;
-}
-
-static void
-complete(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, size_t *outlen, size_t *outprespace)
-{
- CamelMimeFilterBestenc *f = (CamelMimeFilterBestenc *)mf;
-
- filter(mf, in, len, prespace, out, outlen, outprespace);
-
- if (f->countline > f->maxline)
- f->maxline = f->countline;
- f->countline = 0;
-}
-
-static void
-camel_mime_filter_bestenc_class_init (CamelMimeFilterBestencClass *klass)
-{
- CamelMimeFilterClass *filter_class = (CamelMimeFilterClass *) klass;
-
- camel_mime_filter_bestenc_parent = (CamelMimeFilterClass *)(camel_type_get_global_classfuncs (camel_mime_filter_get_type ()));
-
- filter_class->reset = reset;
- filter_class->filter = filter;
- filter_class->complete = complete;
-}
-
-static void
-camel_mime_filter_bestenc_init (CamelMimeFilter *f)
-{
- reset(f);
-}
-
-/**
- * camel_mime_filter_bestenc_new:
- * @flags: A bitmask of data required.
- *
- * Create a new CamelMimeFilterBestenc object.
- *
- * Return value:
- **/
-CamelMimeFilterBestenc *
-camel_mime_filter_bestenc_new (unsigned int flags)
-{
- CamelMimeFilterBestenc *new = (CamelMimeFilterBestenc *)camel_object_new(camel_mime_filter_bestenc_get_type());
- new->flags = flags;
- return new;
-}
-
-/**
- * camel_mime_filter_bestenc_get_best_encoding:
- * @f:
- * @required: maximum level of output encoding allowed.
- *
- * Return the best encoding, given specific constraints, that can be used to
- * encode a stream of bytes.
- *
- * Return value:
- **/
-CamelMimePartEncodingType
-camel_mime_filter_bestenc_get_best_encoding(CamelMimeFilterBestenc *f, CamelBestencEncoding required)
-{
- CamelMimePartEncodingType bestenc;
-
-#if 0
- printf("count0 = %d, count8 = %d, total = %d\n", f->count0, f->count8, f->total);
- printf("maxline = %d, crlfnoorder = %s\n", f->maxline, f->crlfnoorder?"TRUE":"FALSE");
- printf(" %d%% require encoding?\n", (f->count0+f->count8)*100 / f->total);
-#endif
-
- /* if we're not allowed to have From lines and we had one, use an encoding
- that will never let it show. Unfortunately only base64 can at present,
- although qp could be modified to allow it too */
- if ((f->flags & CAMEL_BESTENC_NO_FROM) && f->hadfrom)
- return CAMEL_MIME_PART_ENCODING_BASE64;
-
- /* if we need to encode, see how we do it */
- if (required == CAMEL_BESTENC_BINARY)
- bestenc = CAMEL_MIME_PART_ENCODING_BINARY;
- else if (f->count8 + f->count0 >= (f->total*17/100))
- bestenc = CAMEL_MIME_PART_ENCODING_BASE64;
- else
- bestenc = CAMEL_MIME_PART_ENCODING_QUOTEDPRINTABLE;
-
- /* if we have nocrlf order, or long lines, we need to encode always */
- if (f->crlfnoorder || f->maxline >= 998)
- return bestenc;
-
- /* if we have no 8 bit chars or nul's, we can just use 7 bit */
- if (f->count8 + f->count0 == 0)
- return CAMEL_MIME_PART_ENCODING_7BIT;
-
- /* otherwise, we see if we can use 8 bit, or not */
- switch(required) {
- case CAMEL_BESTENC_7BIT:
- return bestenc;
- case CAMEL_BESTENC_8BIT:
- case CAMEL_BESTENC_BINARY:
- if (f->count0 == 0)
- return CAMEL_MIME_PART_ENCODING_8BIT;
- else
- return bestenc;
- }
-
- return CAMEL_MIME_PART_ENCODING_DEFAULT;
-}
-
-/**
- * camel_mime_filter_bestenc_get_best_charset:
- * @f:
- *
- * Gets the best charset that can be used to contain this content.
- *
- * Return value:
- **/
-const char *
-camel_mime_filter_bestenc_get_best_charset(CamelMimeFilterBestenc *f)
-{
- return camel_charset_best_name(&f->charset);
-}
-
-/**
- * camel_mime_filter_bestenc_set_flags:
- * @f:
- * @flags:
- *
- * Set the flags for subsequent operations.
- **/
-void
-camel_mime_filter_bestenc_set_flags(CamelMimeFilterBestenc *f, unsigned int flags)
-{
- f->flags = flags;
-}
diff --git a/camel/camel-mime-filter-bestenc.h b/camel/camel-mime-filter-bestenc.h
deleted file mode 100644
index de8caec191..0000000000
--- a/camel/camel-mime-filter-bestenc.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef _CAMEL_MIME_FILTER_BESTENC_H
-#define _CAMEL_MIME_FILTER_BESTENC_H
-
-#include <camel/camel-mime-filter.h>
-#include <camel/camel-mime-part.h>
-#include <camel/camel-charset-map.h>
-
-#define CAMEL_MIME_FILTER_BESTENC(obj) CAMEL_CHECK_CAST (obj, camel_mime_filter_bestenc_get_type (), CamelMimeFilterBestenc)
-#define CAMEL_MIME_FILTER_BESTENC_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mime_filter_bestenc_get_type (), CamelMimeFilterBestencClass)
-#define CAMEL_IS_MIME_FILTER_BESTENC(obj) CAMEL_CHECK_TYPE (obj, camel_mime_filter_bestenc_get_type ())
-
-typedef struct _CamelMimeFilterBestencClass CamelMimeFilterBestencClass;
-
-enum _CamelBestencRequired {
- CAMEL_BESTENC_GET_ENCODING = 1<<0,
- CAMEL_BESTENC_GET_CHARSET = 1<<1,
-
- /* do we treat 'lf' as if it were crlf? */
- CAMEL_BESTENC_LF_IS_CRLF = 1<<8,
- /* do we not allow "From " to appear at the start of a line in any part? */
- CAMEL_BESTENC_NO_FROM = 1<<9,
-};
-typedef enum _CamelBestencRequired CamelBestencRequired;
-
-enum _CamelBestencEncoding {
- CAMEL_BESTENC_7BIT,
- CAMEL_BESTENC_8BIT,
- CAMEL_BESTENC_BINARY,
-};
-typedef enum _CamelBestencEncoding CamelBestencEncoding;
-
-struct _CamelMimeFilterBestenc {
- CamelMimeFilter parent;
-
- unsigned int flags; /* our creation flags, see above */
-
- unsigned int count0; /* count of NUL characters */
- unsigned int count8; /* count of 8 bit characters */
- unsigned int total; /* total characters read */
-
- unsigned int lastc; /* the last character read */
- int crlfnoorder; /* if crlf's occured where they shouldn't have */
-
- int startofline; /* are we at the start of a new line? */
-
- int fromcount;
- char fromsave[6]; /* save a few characters if we found an \nF near the end of the buffer */
- int hadfrom; /* did we encounter a "\nFrom " in the data? */
-
- unsigned int countline; /* current count of characters on a given line */
- unsigned int maxline; /* max length of any line */
-
- CamelCharset charset; /* used to determine the best charset to use */
-};
-
-struct _CamelMimeFilterBestencClass {
- CamelMimeFilterClass parent_class;
-};
-
-guint camel_mime_filter_bestenc_get_type (void);
-CamelMimeFilterBestenc *camel_mime_filter_bestenc_new (unsigned int flags);
-
-
-CamelMimePartEncodingType camel_mime_filter_bestenc_get_best_encoding(CamelMimeFilterBestenc *f, CamelBestencEncoding required);
-const char * camel_mime_filter_bestenc_get_best_charset(CamelMimeFilterBestenc *f);
-void camel_mime_filter_bestenc_set_flags(CamelMimeFilterBestenc *f, unsigned int flags);
-
-#endif /* ! _CAMEL_MIME_FILTER_BESTENC_H */
diff --git a/camel/camel-mime-filter-charset.c b/camel/camel-mime-filter-charset.c
deleted file mode 100644
index 6c1f668713..0000000000
--- a/camel/camel-mime-filter-charset.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-
-#include <iconv.h>
-
-#include <string.h>
-#include <errno.h>
-
-#include "camel-mime-filter-charset.h"
-
-#define d(x)
-
-static void camel_mime_filter_charset_class_init (CamelMimeFilterCharsetClass *klass);
-static void camel_mime_filter_charset_init (CamelMimeFilterCharset *obj);
-static void camel_mime_filter_charset_finalize (CamelObject *o);
-
-static CamelMimeFilterClass *camel_mime_filter_charset_parent;
-
-CamelType
-camel_mime_filter_charset_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type (), "CamelMimeFilterCharset",
- sizeof (CamelMimeFilterCharset),
- sizeof (CamelMimeFilterCharsetClass),
- (CamelObjectClassInitFunc) camel_mime_filter_charset_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_charset_init,
- (CamelObjectFinalizeFunc) camel_mime_filter_charset_finalize);
- }
-
- return type;
-}
-
-static void
-camel_mime_filter_charset_finalize(CamelObject *o)
-{
- CamelMimeFilterCharset *f = (CamelMimeFilterCharset *)o;
-
- g_free(f->from);
- g_free(f->to);
- if (f->ic != (iconv_t)-1) {
- iconv_close(f->ic);
- f->ic = (iconv_t) -1;
- }
-}
-
-static void
-reset(CamelMimeFilter *mf)
-{
- CamelMimeFilterCharset *f = (CamelMimeFilterCharset *)mf;
- char buf[16];
- char *buffer;
- int outlen = 16;
-
- /* what happens with the output bytes if this resets the state? */
- if (f->ic != (iconv_t) -1) {
- buffer = buf;
- iconv(f->ic, NULL, 0, &buffer, &outlen);
- }
-}
-
-static void
-complete(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, size_t *outlenptr, size_t *outprespace)
-{
- CamelMimeFilterCharset *f = (CamelMimeFilterCharset *)mf;
- int converted;
- const char *inbuf;
- char *outbuf;
- int inlen, outlen;
-
- if (f->ic == (iconv_t) -1) {
- goto donothing;
- }
-
- /* FIXME: there's probably a safer way to size this ...? */
- /* We could always resize if we run out of room in outbuf (but it'd be nice not
- to have to) */
- camel_mime_filter_set_size(mf, len*5+16, FALSE);
- inbuf = in;
- inlen = len;
- outbuf = mf->outbuf;
- outlen = mf->outsize;
-
- /* temporary fix to find another bug somewhere */
- d(memset(outbuf, 0, outlen));
-
- if (inlen>0) {
- converted = iconv(f->ic, &inbuf, &inlen, &outbuf, &outlen);
- if (converted == -1) {
- if (errno != EINVAL) {
- g_warning("error occured converting: %s", strerror(errno));
- goto donothing;
- }
- }
-
- if (inlen>0) {
- g_warning("Output lost in character conversion, invalid sequence encountered?");
- }
- }
-
- /* this 'resets' the output stream, returning back to the initial
- shift state for multishift charactersets */
- converted = iconv(f->ic, NULL, 0, &outbuf, &outlen);
- if (converted == -1) {
- g_warning("Conversion failed to complete: %s", strerror(errno));
- }
-
- /* debugging assertion - check for NUL's in output */
- d({
- int i;
-
- for (i=0;i<(mf->outsize - outlen);i++) {
- g_assert(mf->outbuf[i]);
- }
- });
-
- *out = mf->outbuf;
- *outlenptr = mf->outsize - outlen;
- *outprespace = mf->outpre;
- return;
-
-donothing:
- *out = in;
- *outlenptr = len;
- *outprespace = prespace;
-}
-
-static void
-filter(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, size_t *outlenptr, size_t *outprespace)
-{
- CamelMimeFilterCharset *f = (CamelMimeFilterCharset *)mf;
- int converted;
- const char *inbuf;
- char *outbuf;
- int inlen, outlen;
-
- if (f->ic == (iconv_t) -1) {
- goto donothing;
- }
-
- /* FIXME: there's probably a safer way to size this ...? */
- camel_mime_filter_set_size(mf, len*5+16, FALSE);
- inbuf = in;
- inlen = len;
- outbuf = mf->outbuf;
- outlen = mf->outsize;
- converted = iconv(f->ic, &inbuf, &inlen, &outbuf, &outlen);
- if (converted == -1) {
- if (errno != EINVAL) {
- g_warning("error occured converting: %s", strerror(errno));
- goto donothing;
- }
- }
-
- /*
- NOTE: This assumes EINVAL only occurs because we ran out of
- bytes for a multibyte sequence, if not, we're in trouble.
- */
-
- if (inlen>0) {
- camel_mime_filter_backup(mf, inbuf, inlen);
- }
-
- *out = mf->outbuf;
- *outlenptr = mf->outsize - outlen;
- *outprespace = mf->outpre;
- return;
-
-donothing:
- *out = in;
- *outlenptr = len;
- *outprespace = prespace;
-}
-
-static void
-camel_mime_filter_charset_class_init (CamelMimeFilterCharsetClass *klass)
-{
- CamelMimeFilterClass *filter_class = (CamelMimeFilterClass *) klass;
-
- camel_mime_filter_charset_parent = CAMEL_MIME_FILTER_CLASS (camel_type_get_global_classfuncs (camel_mime_filter_get_type ()));
-
- filter_class->reset = reset;
- filter_class->filter = filter;
- filter_class->complete = complete;
-}
-
-static void
-camel_mime_filter_charset_init (CamelMimeFilterCharset *obj)
-{
- obj->ic = (iconv_t)-1;
-}
-
-/**
- * camel_mime_filter_charset_new:
- *
- * Create a new CamelMimeFilterCharset object.
- *
- * Return value: A new CamelMimeFilterCharset widget.
- **/
-CamelMimeFilterCharset *
-camel_mime_filter_charset_new (void)
-{
- CamelMimeFilterCharset *new = CAMEL_MIME_FILTER_CHARSET ( camel_object_new (camel_mime_filter_charset_get_type ()));
- return new;
-}
-
-CamelMimeFilterCharset *
-camel_mime_filter_charset_new_convert(const char *from_charset, const char *to_charset)
-{
- CamelMimeFilterCharset *new = CAMEL_MIME_FILTER_CHARSET ( camel_object_new (camel_mime_filter_charset_get_type ()));
-
- new->ic = iconv_open(to_charset, from_charset);
- if (new->ic == (iconv_t) -1) {
- g_warning("Cannot create charset conversion from %s to %s: %s", from_charset, to_charset, strerror(errno));
- camel_object_unref((CamelObject *)new);
- new = NULL;
- } else {
- new->from = g_strdup(from_charset);
- new->to = g_strdup(to_charset);
- }
- return new;
-}
diff --git a/camel/camel-mime-filter-charset.h b/camel/camel-mime-filter-charset.h
deleted file mode 100644
index f9c78e8896..0000000000
--- a/camel/camel-mime-filter-charset.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef _CAMEL_MIME_FILTER_CHARSET_H
-#define _CAMEL_MIME_FILTER_CHARSET_H
-
-#include <camel/camel-mime-filter.h>
-#include <iconv.h>
-
-#define CAMEL_MIME_FILTER_CHARSET(obj) CAMEL_CHECK_CAST (obj, camel_mime_filter_charset_get_type (), CamelMimeFilterCharset)
-#define CAMEL_MIME_FILTER_CHARSET_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mime_filter_charset_get_type (), CamelMimeFilterCharsetClass)
-#define CAMEL_IS_MIME_FILTER_CHARSET(obj) CAMEL_CHECK_TYPE (obj, camel_mime_filter_charset_get_type ())
-
-typedef struct _CamelMimeFilterCharsetClass CamelMimeFilterCharsetClass;
-
-struct _CamelMimeFilterCharset {
- CamelMimeFilter parent;
-
- struct _CamelMimeFilterCharsetPrivate *priv;
-
- iconv_t ic;
- char *from;
- char *to;
-};
-
-struct _CamelMimeFilterCharsetClass {
- CamelMimeFilterClass parent_class;
-};
-
-guint camel_mime_filter_charset_get_type (void);
-CamelMimeFilterCharset *camel_mime_filter_charset_new (void);
-
-CamelMimeFilterCharset *camel_mime_filter_charset_new_convert (const char *from_charset, const char *to_charset);
-
-#endif /* ! _CAMEL_MIME_FILTER_CHARSET_H */
diff --git a/camel/camel-mime-filter-crlf.c b/camel/camel-mime-filter-crlf.c
deleted file mode 100644
index b6ae095810..0000000000
--- a/camel/camel-mime-filter-crlf.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Authors: Dan Winship <danw@helixcode.com>
- * Jeffrey Stedfast <fejj@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "camel-mime-filter-crlf.h"
-
-static void filter (CamelMimeFilter *f, char *in, size_t len, size_t prespace,
- char **out, size_t *outlen, size_t *outprespace);
-static void complete (CamelMimeFilter *f, char *in, size_t len,
- size_t prespace, char **out, size_t *outlen,
- size_t *outprespace);
-static void reset (CamelMimeFilter *f);
-
-
-static void
-camel_mime_filter_crlf_class_init (CamelMimeFilterCRLFClass *klass)
-{
- CamelMimeFilterClass *mime_filter_class =
- (CamelMimeFilterClass *) klass;
-
- mime_filter_class->filter = filter;
- mime_filter_class->complete = complete;
- mime_filter_class->reset = reset;
-}
-
-CamelType
-camel_mime_filter_crlf_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type(), "CamelMimeFilterCRLF",
- sizeof (CamelMimeFilterCRLF),
- sizeof (CamelMimeFilterCRLFClass),
- (CamelObjectClassInitFunc) camel_mime_filter_crlf_class_init,
- NULL,
- NULL,
- NULL);
- }
-
- return type;
-}
-
-static void
-filter (CamelMimeFilter *f, char *in, size_t len, size_t prespace,
- char **out, size_t *outlen, size_t *outprespace)
-{
- CamelMimeFilterCRLF *crlf = (CamelMimeFilterCRLF *)f;
- gboolean do_dots;
- char *p, *q;
-
- do_dots = crlf->mode == CAMEL_MIME_FILTER_CRLF_MODE_CRLF_DOTS;
-
- if (crlf->direction == CAMEL_MIME_FILTER_CRLF_ENCODE) {
- camel_mime_filter_set_size (f, 3 * len, FALSE);
-
- p = in;
- q = f->outbuf;
- while (p < in + len) {
- if (*p == '\n')
- *q++ = '\r';
- else
- if (do_dots && *p == '.' && (p == in || *(p - 1) == '\n'))
- *q++ = '.';
- *q++ = *p++;
- }
- } else {
- camel_mime_filter_set_size (f, len, FALSE);
-
- p = in;
- q = f->outbuf;
- while (p < in + len) {
- if (*p == '\r') {
- crlf->saw_cr = TRUE;
- } else {
- if (crlf->saw_cr) {
- if (*p != '\n')
- *q++ = '\r';
- crlf->saw_cr = FALSE;
- }
- *q++ = *p;
- }
-
- if (do_dots) {
- if (*p == '.' && (p == in || *(p - 1) == '\n')) {
- crlf->saw_dot = TRUE;
- } else {
- if (crlf->saw_dot) {
- if (*p == '.')
- p++;
- crlf->saw_dot = FALSE;
- }
- *q++ = *p;
- }
- }
-
- p++;
- }
- }
-
- *out = f->outbuf;
- *outlen = q - f->outbuf;
- *outprespace = f->outpre;
-}
-
-static void
-complete (CamelMimeFilter *f, char *in, size_t len, size_t prespace,
- char **out, size_t *outlen, size_t *outprespace)
-{
- if (len)
- filter (f, in, len, prespace, out, outlen, outprespace);
-}
-
-static void
-reset (CamelMimeFilter *f)
-{
- CamelMimeFilterCRLF *crlf = (CamelMimeFilterCRLF *)f;
-
- crlf->saw_cr = FALSE;
-}
-
-CamelMimeFilter *
-camel_mime_filter_crlf_new (CamelMimeFilterCRLFDirection direction, CamelMimeFilterCRLFMode mode)
-{
- CamelMimeFilterCRLF *crlf = CAMEL_MIME_FILTER_CRLF(camel_object_new (CAMEL_MIME_FILTER_CRLF_TYPE));
-
- crlf->direction = direction;
- crlf->mode = mode;
- crlf->saw_cr = FALSE;
-
- return (CamelMimeFilter *)crlf;
-}
diff --git a/camel/camel-mime-filter-crlf.h b/camel/camel-mime-filter-crlf.h
deleted file mode 100644
index 6ba109d154..0000000000
--- a/camel/camel-mime-filter-crlf.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Dan Winship <danw@helixcode.com>
- * Jeffrey Stedfast <fejj@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef _CAMEL_MIME_FILTER_CRLF_H
-#define _CAMEL_MIME_FILTER_CRLF_H
-
-#include <camel/camel-mime-filter.h>
-
-#define CAMEL_MIME_FILTER_CRLF_TYPE (camel_mime_filter_crlf_get_type ())
-#define CAMEL_MIME_FILTER_CRLF(obj) CAMEL_CHECK_CAST (obj, CAMEL_MIME_FILTER_CRLF_TYPE, CamelMimeFilterCRLF)
-#define CAMEL_MIME_FILTER_CRLF_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, CAMEL_MIME_FILTER_CRLF_TYPE, CamelMimeFilterCRLFClass)
-#define CAMEL_IS_MIME_FILTER_CRLF(obj) CAMEL_CHECK_TYPE (obj, CAMEL_MIME_FILTER_CRLF_TYPE)
-
-typedef struct _CamelMimeFilterCRLFClass CamelMimeFilterCRLFClass;
-
-typedef enum {
- CAMEL_MIME_FILTER_CRLF_ENCODE,
- CAMEL_MIME_FILTER_CRLF_DECODE
-} CamelMimeFilterCRLFDirection;
-
-typedef enum {
- CAMEL_MIME_FILTER_CRLF_MODE_CRLF_DOTS,
- CAMEL_MIME_FILTER_CRLF_MODE_CRLF_ONLY,
-} CamelMimeFilterCRLFMode;
-
-struct _CamelMimeFilterCRLF {
- CamelMimeFilter parent;
-
- CamelMimeFilterCRLFDirection direction;
- CamelMimeFilterCRLFMode mode;
- gboolean saw_cr;
- gboolean saw_dot;
-};
-
-struct _CamelMimeFilterCRLFClass {
- CamelMimeFilterClass parent_class;
-};
-
-CamelType camel_mime_filter_crlf_get_type (void);
-
-CamelMimeFilter *camel_mime_filter_crlf_new (CamelMimeFilterCRLFDirection direction, CamelMimeFilterCRLFMode mode);
-
-#endif /* ! _CAMEL_MIME_FILTER_CRLF_H */
diff --git a/camel/camel-mime-filter-from.c b/camel/camel-mime-filter-from.c
deleted file mode 100644
index 2678294f03..0000000000
--- a/camel/camel-mime-filter-from.c
+++ /dev/null
@@ -1,221 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#include <string.h>
-#include "camel-mime-filter-from.h"
-
-#define d(x)
-
-struct _CamelMimeFilterFromPrivate {
-};
-
-#define _PRIVATE(o) (((CamelMimeFilterFrom *)(o))->priv)
-
-static void camel_mime_filter_from_class_init (CamelMimeFilterFromClass *klass);
-static void camel_mime_filter_from_init (CamelMimeFilterFrom *obj);
-
-static CamelMimeFilterClass *camel_mime_filter_from_parent;
-
-CamelType
-camel_mime_filter_from_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type (), "CamelMimeFilterFrom",
- sizeof (CamelMimeFilterFrom),
- sizeof (CamelMimeFilterFromClass),
- (CamelObjectClassInitFunc) camel_mime_filter_from_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_from_init,
- NULL);
- }
-
- return type;
-}
-
-struct fromnode {
- struct fromnode *next;
- char *pointer;
-};
-
-static void
-complete(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, size_t *outlen, size_t *outprespace)
-{
- *out = in;
- *outlen = len;
- *outprespace = prespace;
-}
-
-/* Yes, it is complicated ... */
-static void
-filter(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, size_t *outlen, size_t *outprespace)
-{
- CamelMimeFilterFrom *f = (CamelMimeFilterFrom *)mf;
- register char *inptr, *inend;
- int left;
- int midline = f->midline;
- int fromcount = 0;
- struct fromnode *head = NULL, *tail = (struct fromnode *)&head, *node;
- char *outptr;
-
- inptr = in;
- inend = inptr+len;
-
- d(printf("Filtering '%.*s'\n", len, in));
-
- /* first, see if we need to escape any from's */
- while (inptr<inend) {
- register int c = -1;
-
- if (midline)
- while (inptr < inend && (c = *inptr++) != '\n')
- ;
-
- if (c == '\n' || !midline) {
- left = inend-inptr;
- if (left > 0) {
- midline = TRUE;
- if (left < 5) {
- if (inptr[0] == 'F') {
- camel_mime_filter_backup(mf, inptr, left);
- midline = FALSE;
- inend = inptr;
- break;
- }
- } else {
- if (!strncmp(inptr, "From ", 5)) {
- fromcount++;
- /* yes, we do alloc them on the stack ... at most we're going to get
- len / 7 of them anyway */
- node = alloca(sizeof(*node));
- node->pointer = inptr;
- node->next = NULL;
- tail->next = node;
- tail = node;
- inptr += 5;
- }
- }
- } else {
- /* \n is at end of line, check next buffer */
- midline = FALSE;
- }
- }
- }
-
- f->midline = midline;
-
- if (fromcount > 0) {
- camel_mime_filter_set_size(mf, len + fromcount, FALSE);
- node = head;
- inptr = in;
- outptr = mf->outbuf;
- while (node) {
- memcpy(outptr, inptr, node->pointer - inptr);
- outptr += node->pointer - inptr;
- *outptr++ = '>';
- inptr = node->pointer;
- node = node->next;
- }
- memcpy(outptr, inptr, inend - inptr);
- outptr += inend - inptr;
- *out = mf->outbuf;
- *outlen = outptr - mf->outbuf;
- *outprespace = mf->outbuf - mf->outreal;
-
- d(printf("Filtered '%.*s'\n", *outlen, *out));
- } else {
- *out = in;
- *outlen = inend - in;
- *outprespace = prespace;
-
- d(printf("Filtered '%.*s'\n", *outlen, *out));
- }
-}
-
-static void
-camel_mime_filter_from_class_init (CamelMimeFilterFromClass *klass)
-{
- CamelMimeFilterClass *filter_class = (CamelMimeFilterClass *) klass;
-
- camel_mime_filter_from_parent = CAMEL_MIME_FILTER_CLASS (camel_type_get_global_classfuncs (camel_mime_filter_get_type ()));
-
- filter_class->filter = filter;
- filter_class->complete = complete;
-}
-
-static void
-camel_mime_filter_from_init (CamelMimeFilterFrom *obj)
-{
- struct _CamelMimeFilterFromPrivate *p;
-
- p = _PRIVATE(obj) = g_malloc0(sizeof(*p));
- obj->midline = FALSE;
-}
-
-/**
- * camel_mime_filter_from_new:
- *
- * Create a new CamelMimeFilterFrom object.
- *
- * Return value: A new CamelMimeFilterFrom widget.
- **/
-CamelMimeFilterFrom *
-camel_mime_filter_from_new (void)
-{
- CamelMimeFilterFrom *new = CAMEL_MIME_FILTER_FROM ( camel_object_new (camel_mime_filter_from_get_type ()));
- return new;
-}
-
-#if 0
-
-#include <stdio.h>
-
-int main(int argc, char **argv)
-{
- CamelMimeFilterFrom *f;
- char *buffer;
- int len, prespace;
-
- g_tk_init(&argc, &argv);
-
-
- f = camel_mime_filter_from_new();
-
- buffer = "This is a test\nFrom Someone\nTo someone. From Someone else, From\n From blah\nFromblah\nBye! \nFrom ";
- len = strlen(buffer);
- prespace = 0;
-
- printf("input = '%.*s'\n", len, buffer);
- camel_mime_filter_filter(f, buffer, len, prespace, &buffer, &len, &prespace);
- printf("output = '%.*s'\n", len, buffer);
- buffer = "";
- len = 0;
- prespace = 0;
- camel_mime_filter_complete(f, buffer, len, prespace, &buffer, &len, &prespace);
- printf("complete = '%.*s'\n", len, buffer);
-
-
- return 0;
-}
-
-#endif
diff --git a/camel/camel-mime-filter-from.h b/camel/camel-mime-filter-from.h
deleted file mode 100644
index 730f92f5e4..0000000000
--- a/camel/camel-mime-filter-from.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef _CAMEL_MIME_FILTER_FROM_H
-#define _CAMEL_MIME_FILTER_FROM_H
-
-#include <camel/camel-mime-filter.h>
-
-#define CAMEL_MIME_FILTER_FROM(obj) CAMEL_CHECK_CAST (obj, camel_mime_filter_from_get_type (), CamelMimeFilterFrom)
-#define CAMEL_MIME_FILTER_FROM_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mime_filter_from_get_type (), CamelMimeFilterFromClass)
-#define CAMEL_IS_MIME_FILTER_FROM(obj) CAMEL_CHECK_TYPE (obj, camel_mime_filter_from_get_type ())
-
-typedef struct _CamelMimeFilterFrom CamelMimeFilterFrom;
-typedef struct _CamelMimeFilterFromClass CamelMimeFilterFromClass;
-
-struct _CamelMimeFilterFrom {
- CamelMimeFilter parent;
-
- struct _CamelMimeFilterFromPrivate *priv;
-
- int midline; /* are we between lines? */
-};
-
-struct _CamelMimeFilterFromClass {
- CamelMimeFilterClass parent_class;
-};
-
-guint camel_mime_filter_from_get_type (void);
-CamelMimeFilterFrom *camel_mime_filter_from_new (void);
-
-#endif /* ! _CAMEL_MIME_FILTER_FROM_H */
diff --git a/camel/camel-mime-filter-html.c b/camel/camel-mime-filter-html.c
deleted file mode 100644
index 06d0ef252b..0000000000
--- a/camel/camel-mime-filter-html.c
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- * Copyright (C) 2001 Ximian Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "camel-mime-filter-html.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <stdarg.h>
-
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdlib.h>
-
-#include "xmlmemory.h"
-#include "HTMLparser.h"
-#include "HTMLtree.h"
-
-#define d(x)
-
-static void camel_mime_filter_html_class_init (CamelMimeFilterHTMLClass *klass);
-static void camel_mime_filter_html_init (CamelObject *o);
-static void camel_mime_filter_html_finalize (CamelObject *o);
-
-static CamelMimeFilterClass *camel_mime_filter_html_parent;
-
-struct _CamelMimeFilterHTMLPrivate {
- htmlParserCtxtPtr ctxt;
-};
-
-/* ********************************************************************** */
-
-/* HTML parser */
-
-#define ARRAY_LEN(x) (sizeof(x)/sizeof((x)[0]))
-
-static struct {
- char *element;
- char *remap;
-} map_start[] = {
- { "p", "\n\n" },
- { "br", "\n" },
- { "h1", "\n" }, { "h2", "\n" }, { "h3", "\n" }, { "h4", "\n" }, { "h5", "\n" }, { "h6", "\n" },
-};
-
-
-static struct {
- char *element;
- char *remap;
-} map_end[] = {
- { "h1", "\n" }, { "h2", "\n" }, { "h3", "\n" }, { "h4", "\n" }, { "h5", "\n" }, { "h6", "\n" },
-};
-
-static void
-characters(void *ctx, const xmlChar *ch, int len)
-{
- CamelMimeFilter *mf = ctx;
-
- memcpy(mf->outptr, ch, len);
- mf->outptr+= len;
-}
-
-#if 0
-/* we probably dont want to index comments */
-static void
-comment(void *ctx, const xmlChar *value)
-{
- CamelMimeFilter *mf = ctx;
-
- mf->outptr += sprintf(mf->outptr, " %s \n", value);
-}
-#endif
-
-/* we map element starts to stuff sometimes, so we can properly break up
- words and lines.
- This is very dumb, and needs to be smarter: e.g.
- <b>F</b>\nooBar should -> "FooBar"
-*/
-static void
-startElement(void *ctx, const xmlChar *name, const xmlChar **atts)
-{
- int i;
- CamelMimeFilter *mf = ctx;
-
- /* we grab all "content" from "meta" tags, and dump it in the output,
- it might be useful for searching with. This should probably be pickier */
- if (!strcasecmp(name, "meta")) {
- if (atts) {
- for (i=0;atts[i];i+=2) {
- if (!strcmp(atts[i], "content"))
- mf->outptr += sprintf(mf->outptr, " %s \n", atts[i+1]);
- }
- }
- return;
- }
-
- /* FIXME: use a hashtable */
- for (i=0;i<ARRAY_LEN(map_start);i++) {
- if (!strcasecmp(map_start[i].element, name)) {
- characters(ctx, map_start[i].remap, strlen(map_start[i].remap));
- break;
- }
- }
-}
-
-static void
-endElement(void *ctx, const xmlChar *name)
-{
- int i;
-
- /* FIXME: use a hashtable */
- for (i=0;i<ARRAY_LEN(map_end);i++) {
- if (!strcasecmp(map_end[i].element, name)) {
- characters(ctx, map_end[i].remap, strlen(map_end[i].remap));
- break;
- }
- }
-}
-
-/* dum de dum, well we can print out some crap for now */
-static void
-warning(void *ctx, const char *msg, ...)
-{
- va_list args;
-
- va_start(args, msg);
- fprintf(stdout, "SAX.warning: ");
- vfprintf(stdout, msg, args);
- va_end(args);
-}
-
-static void
-error(void *ctx, const char *msg, ...)
-{
- va_list args;
-
- va_start(args, msg);
- fprintf(stdout, "SAX.error: ");
- vfprintf(stdout, msg, args);
- va_end(args);
-}
-
-static void
-fatalError(void *ctx, const char *msg, ...)
-{
- va_list args;
-
- va_start(args, msg);
- fprintf(stdout, "SAX.fatalError: ");
- vfprintf(stdout, msg, args);
- va_end(args);
-}
-
-static xmlSAXHandler indexSAXHandler = {
- NULL, /* internalSubset */
- NULL, /*isStandalone,*/
- NULL, /*hasInternalSubset,*/
- NULL, /*hasExternalSubset,*/
- NULL, /*resolveEntity,*/
- NULL, /*getEntity,*/
- NULL, /*entityDecl,*/
- NULL, /*notationDecl,*/
- NULL, /*attributeDecl,*/
- NULL, /*elementDecl,*/
- NULL, /*unparsedEntityDecl,*/
- NULL, /*setDocumentLocator,*/
- NULL, /*startDocument,*/
- NULL, /*endDocument,*/
- startElement,
- endElement,
- NULL, /*reference,*/
- characters,
- NULL, /*ignorableWhitespace,*/
- NULL, /*processingInstruction,*/
- NULL, /*comment,*/
- warning,
- error,
- fatalError,
- NULL, /*getParameterEntity,*/
-};
-
-
-/* ********************************************************************** */
-
-
-CamelType
-camel_mime_filter_html_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type (), "CamelMimeFilterHTML",
- sizeof (CamelMimeFilterHTML),
- sizeof (CamelMimeFilterHTMLClass),
- (CamelObjectClassInitFunc) camel_mime_filter_html_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_html_init,
- (CamelObjectFinalizeFunc) camel_mime_filter_html_finalize);
- }
-
- return type;
-}
-
-static void
-camel_mime_filter_html_finalize(CamelObject *o)
-{
- CamelMimeFilterHTML *f = (CamelMimeFilterHTML *)o;
-
- if (f->priv->ctxt)
- htmlFreeParserCtxt(f->priv->ctxt);
-}
-
-static void
-camel_mime_filter_html_init (CamelObject *o)
-{
- CamelMimeFilterHTML *f = (CamelMimeFilterHTML *)o;
-
- f->priv = g_malloc0(sizeof(*f->priv));
-}
-
-static void
-complete(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, size_t *outlenptr, size_t *outprespace)
-{
- CamelMimeFilterHTML *f = (CamelMimeFilterHTML *)mf;
-
- camel_mime_filter_set_size(mf, len*2+256, FALSE);
- mf->outptr = mf->outbuf;
-
- d(printf("converting html end:\n%.*s\n", (int)len, in));
-
- if (f->priv->ctxt == NULL) {
- f->priv->ctxt = htmlCreatePushParserCtxt(&indexSAXHandler, f, in, len, "", 0);
- len = 0;
- }
-
- htmlParseChunk(f->priv->ctxt, in, len, 1);
-
- *out = mf->outbuf;
- *outlenptr = mf->outptr - mf->outbuf;
- *outprespace = mf->outbuf - mf->outreal;
-
- d(printf("converted html end:\n%.*s\n", (int)*outlenptr, *out));
-}
-
-static void
-filter(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, size_t *outlenptr, size_t *outprespace)
-{
- CamelMimeFilterHTML *f = (CamelMimeFilterHTML *)mf;
-
- camel_mime_filter_set_size(mf, len*2+16, FALSE);
- mf->outptr = mf->outbuf;
-
- d(printf("converting html:\n%.*s\n", (int)len, in));
-
- if (f->priv->ctxt == NULL)
- f->priv->ctxt = htmlCreatePushParserCtxt(&indexSAXHandler, f, in, len, "", 0);
- else
- htmlParseChunk(f->priv->ctxt, in, len, 0);
-
- *out = mf->outbuf;
- *outlenptr = mf->outptr - mf->outbuf;
- *outprespace = mf->outbuf - mf->outreal;
-
- d(printf("converted html:\n%.*s\n", (int)*outlenptr, *out));
-}
-
-static void
-reset(CamelMimeFilter *mf)
-{
- CamelMimeFilterHTML *f = (CamelMimeFilterHTML *)mf;
-
- if (f->priv->ctxt != NULL) {
- htmlFreeParserCtxt(f->priv->ctxt);
- f->priv->ctxt = NULL;
- }
-}
-
-static void
-camel_mime_filter_html_class_init (CamelMimeFilterHTMLClass *klass)
-{
- CamelMimeFilterClass *filter_class = (CamelMimeFilterClass *) klass;
-
- camel_mime_filter_html_parent = CAMEL_MIME_FILTER_CLASS (camel_type_get_global_classfuncs (camel_mime_filter_get_type ()));
-
- filter_class->reset = reset;
- filter_class->filter = filter;
- filter_class->complete = complete;
-}
-
-/**
- * camel_mime_filter_html_new:
- *
- * Create a new CamelMimeFilterHTML object.
- *
- * Return value: A new CamelMimeFilterHTML widget.
- **/
-CamelMimeFilterHTML *
-camel_mime_filter_html_new (void)
-{
- CamelMimeFilterHTML *new = CAMEL_MIME_FILTER_HTML ( camel_object_new (camel_mime_filter_html_get_type ()));
- return new;
-}
-
diff --git a/camel/camel-mime-filter-html.h b/camel/camel-mime-filter-html.h
deleted file mode 100644
index 3bac437f63..0000000000
--- a/camel/camel-mime-filter-html.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2001 Ximian Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef _CAMEL_MIME_FILTER_HTML_H
-#define _CAMEL_MIME_FILTER_HTML_H
-
-#include <camel/camel-mime-filter.h>
-
-#define CAMEL_MIME_FILTER_HTML(obj) CAMEL_CHECK_CAST (obj, camel_mime_filter_html_get_type (), CamelMimeFilterHTML)
-#define CAMEL_MIME_FILTER_HTML_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mime_filter_html_get_type (), CamelMimeFilterHTMLClass)
-#define CAMEL_IS_MIME_FILTER_HTML(obj) CAMEL_CHECK_TYPE (obj, camel_mime_filter_html_get_type ())
-
-typedef struct _CamelMimeFilterHTMLClass CamelMimeFilterHTMLClass;
-typedef struct _CamelMimeFilterHTML CamelMimeFilterHTML;
-
-struct _CamelMimeFilterHTML {
- CamelMimeFilter parent;
-
- struct _CamelMimeFilterHTMLPrivate *priv;
-};
-
-struct _CamelMimeFilterHTMLClass {
- CamelMimeFilterClass parent_class;
-};
-
-guint camel_mime_filter_html_get_type (void);
-CamelMimeFilterHTML *camel_mime_filter_html_new (void);
-
-#endif /* ! _CAMEL_MIME_FILTER_HTML_H */
diff --git a/camel/camel-mime-filter-index.c b/camel/camel-mime-filter-index.c
deleted file mode 100644
index 46e0f3f5e8..0000000000
--- a/camel/camel-mime-filter-index.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "camel-mime-filter-index.h"
-
-
-static void camel_mime_filter_index_class_init (CamelMimeFilterIndexClass *klass);
-static void camel_mime_filter_index_finalize (CamelObject *o);
-
-static CamelMimeFilterClass *camel_mime_filter_index_parent;
-
-CamelType
-camel_mime_filter_index_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type (), "CamelMimeFilterIndex",
- sizeof (CamelMimeFilterIndex),
- sizeof (CamelMimeFilterIndexClass),
- (CamelObjectClassInitFunc) camel_mime_filter_index_class_init,
- NULL,
- NULL,
- (CamelObjectFinalizeFunc) camel_mime_filter_index_finalize);
- }
-
- return type;
-}
-
-static void
-camel_mime_filter_index_finalize(CamelObject *o)
-{
- CamelMimeFilterIndex *f = (CamelMimeFilterIndex *)o;
-
- g_free(f->name);
- f->index = NULL; /* ibex's need refcounting? */
-}
-
-static void
-complete(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, size_t *outlenptr, size_t *outprespace)
-{
- CamelMimeFilterIndex *f = (CamelMimeFilterIndex *)mf;
-
- if (f->index == NULL || f->name==NULL) {
- goto donothing;
- }
-
- ibex_index_buffer(f->index, f->name, in, len, NULL);
-
-donothing:
- *out = in;
- *outlenptr = len;
- *outprespace = prespace;
-}
-
-static void
-filter(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, size_t *outlenptr, size_t *outprespace)
-{
- CamelMimeFilterIndex *f = (CamelMimeFilterIndex *)mf;
- int inleft = 0;
-
- if (f->index == NULL || f->name==NULL) {
- goto donothing;
- }
-
- ibex_index_buffer(f->index, f->name, in, len, &inleft);
-
- if (inleft>0) {
- camel_mime_filter_backup(mf, in+(len-inleft), inleft);
- }
-
- *out = in;
- *outlenptr = len-inleft;
- *outprespace = prespace;
- return;
-
-donothing:
- *out = in;
- *outlenptr = len;
- *outprespace = prespace;
-}
-
-static void
-camel_mime_filter_index_class_init (CamelMimeFilterIndexClass *klass)
-{
- CamelMimeFilterClass *filter_class = (CamelMimeFilterClass *) klass;
-
- camel_mime_filter_index_parent = CAMEL_MIME_FILTER_CLASS (camel_type_get_global_classfuncs (camel_mime_filter_get_type ()));
-
- /*filter_class->reset = reset;*/
- filter_class->filter = filter;
- filter_class->complete = complete;
-}
-
-/**
- * camel_mime_filter_index_new:
- *
- * Create a new CamelMimeFilterIndex object.
- *
- * Return value: A new CamelMimeFilterIndex widget.
- **/
-CamelMimeFilterIndex *
-camel_mime_filter_index_new (void)
-{
- CamelMimeFilterIndex *new = CAMEL_MIME_FILTER_INDEX ( camel_object_new (camel_mime_filter_index_get_type ()));
- return new;
-}
-
-CamelMimeFilterIndex *camel_mime_filter_index_new_ibex (ibex *index)
-{
- CamelMimeFilterIndex *new = camel_mime_filter_index_new();
-
- if (new) {
- new->index = index;
- new->name = g_strdup("");
- }
- return new;
-}
-
-/* Set the match name for any indexed words */
-void camel_mime_filter_index_set_name (CamelMimeFilterIndex *mf, char *name)
-{
- g_free(mf->name);
- mf->name = g_strdup(name);
-}
-
-void camel_mime_filter_index_set_ibex (CamelMimeFilterIndex *mf, ibex *index)
-{
- if (mf->index) {
- char *out;
- size_t outlen, outspace;
-
- camel_mime_filter_complete((CamelMimeFilter *)mf, "", 0, 0, &out, &outlen, &outspace);
- }
- mf->index = index;
-}
-
-
-
diff --git a/camel/camel-mime-filter-index.h b/camel/camel-mime-filter-index.h
deleted file mode 100644
index e7733bd4ca..0000000000
--- a/camel/camel-mime-filter-index.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef _CAMEL_MIME_FILTER_INDEX_H
-#define _CAMEL_MIME_FILTER_INDEX_H
-
-#include <camel/camel-mime-filter.h>
-#include <libibex/ibex.h>
-
-#define CAMEL_MIME_FILTER_INDEX(obj) CAMEL_CHECK_CAST (obj, camel_mime_filter_index_get_type (), CamelMimeFilterIndex)
-#define CAMEL_MIME_FILTER_INDEX_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mime_filter_index_get_type (), CamelMimeFilterIndexClass)
-#define CAMEL_IS_MIME_FILTER_INDEX(obj) CAMEL_CHECK_TYPE (obj, camel_mime_filter_index_get_type ())
-
-typedef struct _CamelMimeFilterIndexClass CamelMimeFilterIndexClass;
-
-struct _CamelMimeFilterIndex {
- CamelMimeFilter parent;
-
- struct _CamelMimeFilterIndexPrivate *priv;
-
- ibex *index;
- char *name;
-};
-
-struct _CamelMimeFilterIndexClass {
- CamelMimeFilterClass parent_class;
-};
-
-guint camel_mime_filter_index_get_type (void);
-CamelMimeFilterIndex *camel_mime_filter_index_new (void);
-
-CamelMimeFilterIndex *camel_mime_filter_index_new_ibex (ibex *);
-
-/* Set the match name for any indexed words */
-void camel_mime_filter_index_set_name (CamelMimeFilterIndex *, char *);
-void camel_mime_filter_index_set_ibex (CamelMimeFilterIndex *mf, ibex *index);
-
-#endif /* ! _CAMEL_MIME_FILTER_INDEX_H */
diff --git a/camel/camel-mime-filter-linewrap.c b/camel/camel-mime-filter-linewrap.c
deleted file mode 100644
index ea06566688..0000000000
--- a/camel/camel-mime-filter-linewrap.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Authors: Jeffrey Stedfast <fejj@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <ctype.h>
-#include "camel-mime-filter-linewrap.h"
-
-static void filter (CamelMimeFilter *f, char *in, size_t len, size_t prespace,
- char **out, size_t *outlen, size_t *outprespace);
-static void complete (CamelMimeFilter *f, char *in, size_t len,
- size_t prespace, char **out, size_t *outlen,
- size_t *outprespace);
-static void reset (CamelMimeFilter *f);
-
-
-static void
-camel_mime_filter_linewrap_class_init (CamelMimeFilterLinewrapClass *klass)
-{
- CamelMimeFilterClass *mime_filter_class =
- (CamelMimeFilterClass *) klass;
-
- mime_filter_class->filter = filter;
- mime_filter_class->complete = complete;
- mime_filter_class->reset = reset;
-}
-
-CamelType
-camel_mime_filter_linewrap_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type(), "CamelMimeFilterLinewrap",
- sizeof (CamelMimeFilterLinewrap),
- sizeof (CamelMimeFilterLinewrapClass),
- (CamelObjectClassInitFunc) camel_mime_filter_linewrap_class_init,
- NULL,
- NULL,
- NULL);
- }
-
- return type;
-}
-
-static void
-filter (CamelMimeFilter *f, char *in, size_t len, size_t prespace,
- char **out, size_t *outlen, size_t *outprespace)
-{
- CamelMimeFilterLinewrap *linewrap = (CamelMimeFilterLinewrap *)f;
- char *inend, *last, *p, *q;
- int nchars = linewrap->nchars;
-
- /* we'll be adding chars here so we need a bigger buffer */
- camel_mime_filter_set_size (f, 3 * len, FALSE);
-
- p = in;
- q = f->outbuf;
- inend = in + len;
-
- while (p < inend) {
- if (*p == '\n') {
- last = q;
- *q++ = *p++;
- nchars = 0;
- } else if (isspace (*p)) {
- last = q;
-
- if (nchars >= linewrap->wrap_len) {
- *q++ = '\n';
- p++;
- nchars = 0;
- } else {
- *q++ = *p++;
- }
- } else {
- *q++ = *p++;
- nchars++;
- }
-
- /* line is getting way too long, we must force a wrap here */
- if (nchars >= (linewrap->max_len - 1) && *p != '\n') {
- *q++ = '\n';
- *q++ = linewrap->indent;
- nchars = 0;
- }
- }
-
- linewrap->nchars = nchars;
-
- *out = f->outbuf;
- *outlen = q - f->outbuf;
- *outprespace = f->outpre;
-}
-
-static void
-complete (CamelMimeFilter *f, char *in, size_t len, size_t prespace,
- char **out, size_t *outlen, size_t *outprespace)
-{
- if (len)
- filter (f, in, len, prespace, out, outlen, outprespace);
-}
-
-static void
-reset (CamelMimeFilter *f)
-{
- CamelMimeFilterLinewrap *linewrap = (CamelMimeFilterLinewrap *)f;
-
- linewrap->nchars = 0;
-}
-
-CamelMimeFilter *
-camel_mime_filter_linewrap_new (guint preferred_len, guint max_len, char indent_char)
-{
- CamelMimeFilterLinewrap *linewrap =
- CAMEL_MIME_FILTER_LINEWRAP (camel_object_new (CAMEL_MIME_FILTER_LINEWRAP_TYPE));
-
- linewrap->indent = indent_char;
- linewrap->wrap_len = preferred_len;
- linewrap->max_len = max_len;
- linewrap->nchars = 0;
-
- return (CamelMimeFilter *) linewrap;
-}
diff --git a/camel/camel-mime-filter-linewrap.h b/camel/camel-mime-filter-linewrap.h
deleted file mode 100644
index 189b80d014..0000000000
--- a/camel/camel-mime-filter-linewrap.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Jeffrey Stedfast <fejj@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef _CAMEL_MIME_FILTER_LINEWRAP_H
-#define _CAMEL_MIME_FILTER_LINEWRAP_H
-
-#include <camel/camel-mime-filter.h>
-
-#define CAMEL_MIME_FILTER_LINEWRAP_TYPE (camel_mime_filter_linewrap_get_type ())
-#define CAMEL_MIME_FILTER_LINEWRAP(obj) CAMEL_CHECK_CAST (obj, CAMEL_MIME_FILTER_LINEWRAP_TYPE, CamelMimeFilterLinewrap)
-#define CAMEL_MIME_FILTER_LINEWRAP_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, CAMEL_MIME_FILTER_LINEWRAP_TYPE, CamelMimeFilterLinewrapClass)
-#define CAMEL_IS_MIME_FILTER_LINEWRAP(obj) CAMEL_CHECK_TYPE (obj, CAMEL_MIME_FILTER_LINEWRAP_TYPE)
-
-typedef struct _CamelMimeFilterLinewrapClass CamelMimeFilterLinewrapClass;
-
-struct _CamelMimeFilterLinewrap {
- CamelMimeFilter parent;
-
- guint wrap_len;
- guint max_len;
- char indent;
- int nchars;
-};
-
-struct _CamelMimeFilterLinewrapClass {
- CamelMimeFilterClass parent_class;
-};
-
-CamelType camel_mime_filter_linewrap_get_type (void);
-
-CamelMimeFilter *camel_mime_filter_linewrap_new (guint preferred_len, guint max_len, char indent_char);
-
-#endif /* ! _CAMEL_MIME_FILTER_LINEWRAP_H */
diff --git a/camel/camel-mime-filter-save.c b/camel/camel-mime-filter-save.c
deleted file mode 100644
index e1761994ed..0000000000
--- a/camel/camel-mime-filter-save.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <sys/types.h>
-#include <unistd.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-
-#include <string.h>
-#include <errno.h>
-
-#include "camel-mime-filter-save.h"
-
-static void camel_mime_filter_save_class_init (CamelMimeFilterSaveClass *klass);
-static void camel_mime_filter_save_init (CamelMimeFilterSave *obj);
-static void camel_mime_filter_save_finalize (CamelObject *o);
-
-static CamelMimeFilterClass *camel_mime_filter_save_parent;
-
-CamelType
-camel_mime_filter_save_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_mime_filter_get_type (), "CamelMimeFilterSave",
- sizeof (CamelMimeFilterSave),
- sizeof (CamelMimeFilterSaveClass),
- (CamelObjectClassInitFunc) camel_mime_filter_save_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_save_init,
- (CamelObjectFinalizeFunc) camel_mime_filter_save_finalize);
- }
-
- return type;
-}
-
-static void
-camel_mime_filter_save_finalize(CamelObject *o)
-{
- CamelMimeFilterSave *f = (CamelMimeFilterSave *)o;
-
- g_free(f->filename);
- if (f->fd != -1) {
- /* FIXME: what do we do with failed writes???? */
- close(f->fd);
- }
-}
-
-static void
-reset(CamelMimeFilter *mf)
-{
- CamelMimeFilterSave *f = (CamelMimeFilterSave *)mf;
-
- /* i dunno, how do you 'reset' a file? reopen it? do i care? */
- if (f->fd != -1){
- lseek(f->fd, 0, SEEK_SET);
- }
-}
-
-/* all this code just to support this little trivial filter! */
-static void
-filter(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, size_t *outlen, size_t *outprespace)
-{
- CamelMimeFilterSave *f = (CamelMimeFilterSave *)mf;
-
- if (f->fd != -1) {
- /* FIXME: check return */
- int outlen = write(f->fd, in, len);
- if (outlen != len) {
- g_warning("could not write to '%s': %s", f->filename?f->filename:"<descriptor>", strerror(errno));
- }
- }
- *out = in;
- *outlen = len;
- *outprespace = prespace;
-}
-
-static void
-camel_mime_filter_save_class_init (CamelMimeFilterSaveClass *klass)
-{
- CamelMimeFilterClass *filter_class = (CamelMimeFilterClass *) klass;
-
- camel_mime_filter_save_parent = CAMEL_MIME_FILTER_CLASS (camel_type_get_global_classfuncs (camel_mime_filter_get_type ()));
-
- filter_class->reset = reset;
- filter_class->filter = filter;
-}
-
-static void
-camel_mime_filter_save_init (CamelMimeFilterSave *f)
-{
- f->fd = -1;
-}
-
-/**
- * camel_mime_filter_save_new:
- *
- * Create a new CamelMimeFilterSave object.
- *
- * Return value: A new CamelMimeFilterSave widget.
- **/
-CamelMimeFilterSave *
-camel_mime_filter_save_new (void)
-{
- CamelMimeFilterSave *new = CAMEL_MIME_FILTER_SAVE ( camel_object_new (camel_mime_filter_save_get_type ()));
- return new;
-}
-
-CamelMimeFilterSave *
-camel_mime_filter_save_new_name (const char *name, int flags, int mode)
-{
- CamelMimeFilterSave *new = NULL;
-
- new = camel_mime_filter_save_new();
- if (new) {
- new->fd = open(name, flags, mode);
- if (new->fd != -1) {
- new->filename = g_strdup(name);
- } else {
- camel_object_unref((CamelObject *)new);
- new = NULL;
- }
- }
- return new;
-}
-
diff --git a/camel/camel-mime-filter-save.h b/camel/camel-mime-filter-save.h
deleted file mode 100644
index 1cc05aed14..0000000000
--- a/camel/camel-mime-filter-save.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef _CAMEL_MIME_FILTER_SAVE_H
-#define _CAMEL_MIME_FILTER_SAVE_H
-
-#include <camel/camel-mime-filter.h>
-
-#define CAMEL_MIME_FILTER_SAVE(obj) CAMEL_CHECK_CAST (obj, camel_mime_filter_save_get_type (), CamelMimeFilterSave)
-#define CAMEL_MIME_FILTER_SAVE_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mime_filter_save_get_type (), CamelMimeFilterSaveClass)
-#define CAMEL_IS_MIME_FILTER_SAVE(obj) CAMEL_CHECK_TYPE (obj, camel_mime_filter_save_get_type ())
-
-typedef struct _CamelMimeFilterSaveClass CamelMimeFilterSaveClass;
-
-struct _CamelMimeFilterSave {
- CamelMimeFilter parent;
-
- struct _CamelMimeFilterSavePrivate *priv;
-
- char *filename;
- int fd;
-};
-
-struct _CamelMimeFilterSaveClass {
- CamelMimeFilterClass parent_class;
-};
-
-guint camel_mime_filter_save_get_type (void);
-CamelMimeFilterSave *camel_mime_filter_save_new (void);
-
-CamelMimeFilterSave *camel_mime_filter_save_new_name (const char *name, int flags, int mode);
-
-#endif /* ! _CAMEL_MIME_FILTER_SAVE_H */
diff --git a/camel/camel-mime-filter.c b/camel/camel-mime-filter.c
deleted file mode 100644
index aac01bb79c..0000000000
--- a/camel/camel-mime-filter.c
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <string.h>
-#include "camel-mime-filter.h"
-
-/*#define MALLOC_CHECK */ /* for some malloc checking, requires mcheck enabled */
-
-/* only suitable for glibc */
-#ifdef MALLOC_CHECK
-#include <mcheck.h>
-#endif
-
-struct _CamelMimeFilterPrivate {
- char *inbuf;
- size_t inlen;
-};
-
-#define PRE_HEAD (64)
-#define BACK_HEAD (64)
-#define _PRIVATE(o) (((CamelMimeFilter *)(o))->priv)
-#define FCLASS(o) ((CamelMimeFilterClass *)(CAMEL_OBJECT_GET_CLASS(o)))
-
-static CamelObjectClass *camel_mime_filter_parent;
-
-static void complete (CamelMimeFilter *mf, char *in, size_t len,
- size_t prespace, char **out, size_t *outlen,
- size_t *outprespace);
-
-static void
-camel_mime_filter_class_init (CamelMimeFilterClass *klass)
-{
- camel_mime_filter_parent = camel_type_get_global_classfuncs (camel_object_get_type ());
-
- klass->complete = complete;
-}
-
-static void
-camel_mime_filter_init (CamelMimeFilter *obj)
-{
- obj->outreal = NULL;
- obj->outbuf = NULL;
- obj->outsize = 0;
-
- obj->backbuf = NULL;
- obj->backsize = 0;
- obj->backlen = 0;
-
- _PRIVATE(obj) = g_malloc0(sizeof(*obj->priv));
-}
-
-static void
-camel_mime_filter_finalize(CamelObject *o)
-{
- CamelMimeFilter *f = (CamelMimeFilter *)o;
- struct _CamelMimeFilterPrivate *p = _PRIVATE(f);
-
- g_free(f->outreal);
- g_free(f->backbuf);
- g_free(p->inbuf);
- g_free(p);
-}
-
-CamelType
-camel_mime_filter_get_type (void)
-{
- static CamelType camel_mime_filter_type = CAMEL_INVALID_TYPE;
-
- if (camel_mime_filter_type == CAMEL_INVALID_TYPE) {
- camel_mime_filter_type = camel_type_register (CAMEL_OBJECT_TYPE, "CamelMimeFilter",
- sizeof (CamelMimeFilter),
- sizeof (CamelMimeFilterClass),
- (CamelObjectClassInitFunc) camel_mime_filter_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_filter_init,
- (CamelObjectFinalizeFunc) camel_mime_filter_finalize);
- }
-
- return camel_mime_filter_type;
-}
-
-static void
-complete(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, size_t *outlen, size_t *outprespace)
-{
- /* default - do nothing */
-}
-
-/**
- * camel_mime_filter_new:
- *
- * Create a new CamelMimeFilter object.
- *
- * Return value: A new CamelMimeFilter widget.
- **/
-CamelMimeFilter *
-camel_mime_filter_new (void)
-{
- CamelMimeFilter *new = CAMEL_MIME_FILTER ( camel_object_new (camel_mime_filter_get_type ()));
- return new;
-}
-
-#ifdef MALLOC_CHECK
-static void
-checkmem(void *p)
-{
- if (p) {
- int status = mprobe(p);
-
- switch (status) {
- case MCHECK_HEAD:
- printf("Memory underrun at %p\n", p);
- abort();
- case MCHECK_TAIL:
- printf("Memory overrun at %p\n", p);
- abort();
- case MCHECK_FREE:
- printf("Double free %p\n", p);
- abort();
- }
- }
-}
-#endif
-
-static void filter_run(CamelMimeFilter *f,
- char *in, size_t len, size_t prespace,
- char **out, size_t *outlen, size_t *outprespace,
- void (*filterfunc)(CamelMimeFilter *f,
- char *in, size_t len, size_t prespace,
- char **out, size_t *outlen, size_t *outprespace))
-{
- struct _CamelMimeFilterPrivate *p;
-
-#ifdef MALLOC_CHECK
- checkmem(f->outreal);
- checkmem(f->backbuf);
-#endif
- /*
- here we take a performance hit, if the input buffer doesn't
- have the pre-space required. We make a buffer that does ...
- */
- if (prespace < f->backlen) {
- int newlen = len+prespace+f->backlen;
- p = _PRIVATE(f);
- if (p->inlen < newlen) {
- /* NOTE: g_realloc copies data, we dont need that (slower) */
- g_free(p->inbuf);
- p->inbuf = g_malloc(newlen+PRE_HEAD);
- p->inlen = newlen+PRE_HEAD;
- }
- /* copy to end of structure */
- memcpy(p->inbuf+p->inlen - len, in, len);
- in = p->inbuf+p->inlen - len;
- prespace = p->inlen - len;
- }
-
-#ifdef MALLOC_CHECK
- checkmem(f->outreal);
- checkmem(f->backbuf);
-#endif
-
- /* preload any backed up data */
- if (f->backlen > 0) {
- memcpy(in-f->backlen, f->backbuf, f->backlen);
- in -= f->backlen;
- len += f->backlen;
- prespace -= f->backlen;
- f->backlen = 0;
- }
-
- filterfunc(f, in, len, prespace, out, outlen, outprespace);
-
-#ifdef MALLOC_CHECK
- checkmem(f->outreal);
- checkmem(f->backbuf);
-#endif
-
-}
-
-void camel_mime_filter_filter(CamelMimeFilter *f,
- char *in, size_t len, size_t prespace,
- char **out, size_t *outlen, size_t *outprespace)
-{
- if (FCLASS(f)->filter)
- filter_run(f, in, len, prespace, out, outlen, outprespace, FCLASS(f)->filter);
- else
- g_error("Filter function unplmenented in class");
-}
-
-void camel_mime_filter_complete(CamelMimeFilter *f,
- char *in, size_t len, size_t prespace,
- char **out, size_t *outlen, size_t *outprespace)
-{
- if (FCLASS(f)->complete)
- filter_run(f, in, len, prespace, out, outlen, outprespace, FCLASS(f)->complete);
-}
-
-void camel_mime_filter_reset(CamelMimeFilter *f)
-{
- if (FCLASS(f)->reset) {
- FCLASS(f)->reset(f);
- }
-
- /* could free some buffers, if they are really big? */
- f->backlen = 0;
-}
-
-/* sets number of bytes backed up on the input, new calls replace previous ones */
-void camel_mime_filter_backup(CamelMimeFilter *f, const char *data, size_t length)
-{
- if (f->backsize < length) {
- /* g_realloc copies data, unnecessary overhead */
- g_free(f->backbuf);
- f->backbuf = g_malloc(length+BACK_HEAD);
- f->backsize = length+BACK_HEAD;
- }
- f->backlen = length;
- memcpy(f->backbuf, data, length);
-}
-
-/* ensure this much size available for filter output (if required) */
-void camel_mime_filter_set_size(CamelMimeFilter *f, size_t size, int keep)
-{
- if (f->outsize < size) {
- int offset = f->outptr - f->outreal;
- if (keep) {
- f->outreal = g_realloc(f->outreal, size + PRE_HEAD*4);
- } else {
- g_free(f->outreal);
- f->outreal = g_malloc(size + PRE_HEAD*4);
- }
- f->outptr = f->outreal + offset;
- f->outbuf = f->outreal + PRE_HEAD*4;
- f->outsize = size;
- /* this could be offset from the end of the structure, but
- this should be good enough */
- f->outpre = PRE_HEAD*4;
- }
-}
-
diff --git a/camel/camel-mime-filter.h b/camel/camel-mime-filter.h
deleted file mode 100644
index dd30b0449c..0000000000
--- a/camel/camel-mime-filter.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/* Abstract class for non-copying filters */
-
-#ifndef _CAMEL_MIME_FILTER_H
-#define _CAMEL_MIME_FILTER_H
-
-#include <sys/types.h>
-#include <camel/camel-object.h>
-
-#define CAMEL_MIME_FILTER_TYPE (camel_mime_filter_get_type ())
-#define CAMEL_MIME_FILTER(obj) CAMEL_CHECK_CAST (obj, camel_mime_filter_get_type (), CamelMimeFilter)
-#define CAMEL_MIME_FILTER_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mime_filter_get_type (), CamelMimeFilterClass)
-#define CAMEL_IS_MIME_FILTER(obj) CAMEL_CHECK_TYPE (obj, camel_mime_filter_get_type ())
-
-typedef struct _CamelMimeFilterClass CamelMimeFilterClass;
-
-struct _CamelMimeFilter {
- CamelObject parent;
-
- struct _CamelMimeFilterPrivate *priv;
-
- char *outreal; /* real malloc'd buffer */
- char *outbuf; /* first 'writable' position allowed (outreal + outpre) */
- char *outptr;
- int outsize;
- int outpre; /* prespace of this buffer */
-
- char *backbuf;
- int backsize;
- int backlen; /* significant data there */
-};
-
-struct _CamelMimeFilterClass {
- CamelObjectClass parent_class;
-
- /* virtual functions */
- void (*filter)(CamelMimeFilter *f,
- char *in, size_t len, size_t prespace,
- char **out, size_t *outlen, size_t *outprespace);
- void (*complete)(CamelMimeFilter *f,
- char *in, size_t len, size_t prespace,
- char **out, size_t *outlen, size_t *outprespace);
- void (*reset)(CamelMimeFilter *f);
-};
-
-CamelType camel_mime_filter_get_type (void);
-CamelMimeFilter *camel_mime_filter_new (void);
-
-void camel_mime_filter_filter(CamelMimeFilter *f,
- char *in, size_t len, size_t prespace,
- char **out, size_t *outlen, size_t *outprespace);
-
-void camel_mime_filter_complete(CamelMimeFilter *f,
- char *in, size_t len, size_t prespace,
- char **out, size_t *outlen, size_t *outprespace);
-
-void camel_mime_filter_reset(CamelMimeFilter *f);
-
-/* sets/returns number of bytes backed up on the input */
-void camel_mime_filter_backup(CamelMimeFilter *f, const char *data, size_t length);
-
-/* ensure this much size available for filter output */
-void camel_mime_filter_set_size(CamelMimeFilter *f, size_t size, int keep);
-
-#endif /* ! _CAMEL_MIME_FILTER_H */
diff --git a/camel/camel-mime-message.c b/camel/camel-mime-message.c
deleted file mode 100644
index 1977c3419b..0000000000
--- a/camel/camel-mime-message.c
+++ /dev/null
@@ -1,827 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; fill-column: 160 -*- */
-/* camel-mime-message.c : class for a mime_message */
-
-/*
- * Authors: Bertrand Guiheneuf <bertrand@helixcode.com>
- * Michael Zucchi <notzed@helixcode.com>
- * Jeffrey Stedfast <fejj@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <ctype.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "e-util/e-url.h"
-
-#include "camel-mime-message.h"
-#include "camel-multipart.h"
-#include "camel-stream-mem.h"
-#include "string-utils.h"
-#include "hash-table-utils.h"
-
-#include "camel-stream-filter.h"
-#include "camel-stream-null.h"
-#include "camel-mime-filter-charset.h"
-#include "camel-mime-filter-bestenc.h"
-
-#define d(x)
-
-/* these 2 below should be kept in sync */
-typedef enum {
- HEADER_UNKNOWN,
- HEADER_FROM,
- HEADER_REPLY_TO,
- HEADER_SUBJECT,
- HEADER_TO,
- HEADER_CC,
- HEADER_BCC,
- HEADER_DATE,
- HEADER_MESSAGE_ID
-} CamelHeaderType;
-
-static char *header_names[] = {
- /* dont include HEADER_UNKNOWN string */
- "From", "Reply-To", "Subject", "To", "Cc", "Bcc", "Date", "Message-Id", NULL
-};
-
-static GHashTable *header_name_table;
-
-static CamelMimePartClass *parent_class=NULL;
-
-static char *recipient_names[] = {
- "To", "Cc", "Bcc", NULL
-};
-
-static int write_to_stream (CamelDataWrapper *data_wrapper, CamelStream *stream);
-static void add_header (CamelMedium *medium, const char *header_name, const void *header_value);
-static void set_header (CamelMedium *medium, const char *header_name, const void *header_value);
-static void remove_header (CamelMedium *medium, const char *header_name);
-static int construct_from_parser (CamelMimePart *, CamelMimeParser *);
-static void unref_recipient (gpointer key, gpointer value, gpointer user_data);
-
-/* Returns the class for a CamelMimeMessage */
-#define CMM_CLASS(so) CAMEL_MIME_MESSAGE_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-#define CDW_CLASS(so) CAMEL_DATA_WRAPPER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-#define CMD_CLASS(so) CAMEL_MEDIUM_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-static void
-camel_mime_message_class_init (CamelMimeMessageClass *camel_mime_message_class)
-{
- CamelDataWrapperClass *camel_data_wrapper_class = CAMEL_DATA_WRAPPER_CLASS (camel_mime_message_class);
- CamelMimePartClass *camel_mime_part_class = CAMEL_MIME_PART_CLASS (camel_mime_message_class);
- CamelMediumClass *camel_medium_class = CAMEL_MEDIUM_CLASS (camel_mime_message_class);
- int i;
-
- parent_class = CAMEL_MIME_PART_CLASS(camel_type_get_global_classfuncs (camel_mime_part_get_type ()));
-
- header_name_table = g_hash_table_new (g_strcase_hash, g_strcase_equal);
- for (i=0;header_names[i];i++)
- g_hash_table_insert (header_name_table, header_names[i], (gpointer)i+1);
-
- /* virtual method overload */
- camel_data_wrapper_class->write_to_stream = write_to_stream;
-
- camel_medium_class->add_header = add_header;
- camel_medium_class->set_header = set_header;
- camel_medium_class->remove_header = remove_header;
-
- camel_mime_part_class->construct_from_parser = construct_from_parser;
-}
-
-
-static void
-camel_mime_message_init (gpointer object, gpointer klass)
-{
- CamelMimeMessage *mime_message = (CamelMimeMessage *)object;
- int i;
-
- camel_data_wrapper_set_mime_type (CAMEL_DATA_WRAPPER (object), "message/rfc822");
-
- mime_message->recipients = g_hash_table_new(g_strcase_hash, g_strcase_equal);
- for (i=0;recipient_names[i];i++) {
- g_hash_table_insert(mime_message->recipients, recipient_names[i], camel_internet_address_new());
- }
-
- mime_message->subject = NULL;
- mime_message->reply_to = NULL;
- mime_message->from = NULL;
- mime_message->date = CAMEL_MESSAGE_DATE_CURRENT;
- mime_message->date_offset = 0;
- mime_message->date_received = CAMEL_MESSAGE_DATE_CURRENT;
- mime_message->date_received_offset = 0;
- mime_message->message_id = NULL;
-}
-
-static void
-camel_mime_message_finalize (CamelObject *object)
-{
- CamelMimeMessage *message = CAMEL_MIME_MESSAGE (object);
-
- g_free(message->subject);
-
- g_free(message->message_id);
-
- if (message->reply_to)
- camel_object_unref((CamelObject *)message->reply_to);
-
- if (message->from)
- camel_object_unref((CamelObject *)message->from);
-
- g_hash_table_foreach(message->recipients, unref_recipient, NULL);
- g_hash_table_destroy(message->recipients);
-}
-
-
-CamelType
-camel_mime_message_get_type (void)
-{
- static CamelType camel_mime_message_type = CAMEL_INVALID_TYPE;
-
- if (camel_mime_message_type == CAMEL_INVALID_TYPE) {
- camel_mime_message_type = camel_type_register (camel_mime_part_get_type(), "CamelMimeMessage",
- sizeof (CamelMimeMessage),
- sizeof (CamelMimeMessageClass),
- (CamelObjectClassInitFunc) camel_mime_message_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_message_init,
- (CamelObjectFinalizeFunc) camel_mime_message_finalize);
- }
-
- return camel_mime_message_type;
-}
-
-static void unref_recipient (gpointer key, gpointer value, gpointer user_data)
-{
- camel_object_unref (CAMEL_OBJECT (value));
-}
-
-CamelMimeMessage *
-camel_mime_message_new (void)
-{
- CamelMimeMessage *mime_message;
- mime_message = CAMEL_MIME_MESSAGE(camel_object_new (CAMEL_MIME_MESSAGE_TYPE));
-
- return mime_message;
-}
-
-/* **** Date: */
-
-void
-camel_mime_message_set_date(CamelMimeMessage *message, time_t date, int offset)
-{
- char *datestr;
-
- g_assert(message);
- if (date == CAMEL_MESSAGE_DATE_CURRENT) {
- struct tm *local;
- int tz;
-
- date = time(0);
- local = localtime(&date);
-#if defined(HAVE_TIMEZONE)
- tz = timezone;
-#elif defined(HAVE_TM_GMTOFF)
- tz = local->tm_gmtoff;
-#endif
- offset = -(((tz/60/60) * 100) + (tz/60 % 60));
- if (local->tm_isdst>0)
- offset += 100;
- }
- message->date = date;
- message->date_offset = offset;
-
- datestr = header_format_date(date, offset);
- CAMEL_MEDIUM_CLASS(parent_class)->set_header((CamelMedium *)message, "Date", datestr);
- g_free(datestr);
-}
-
-time_t
-camel_mime_message_get_date(CamelMimeMessage *msg, int *offset)
-{
- if (offset)
- *offset = msg->date_offset;
-
- return msg->date;
-}
-
-time_t
-camel_mime_message_get_date_received(CamelMimeMessage *msg, int *offset)
-{
- if (msg->date_received == CAMEL_MESSAGE_DATE_CURRENT) {
- const char *received;
-
- received = camel_medium_get_header((CamelMedium *)msg, "received");
- if (received)
- received = strrchr(received, ';');
- if (received)
- msg->date_received = header_decode_date(received + 1, &msg->date_received_offset);
- }
-
- if (offset)
- *offset = msg->date_received_offset;
-
- return msg->date_received;
-}
-
-/* **** Message-Id: */
-
-void
-camel_mime_message_set_message_id (CamelMimeMessage *mime_message, const char *message_id)
-{
- char *id;
-
- g_assert (mime_message);
-
- g_free (mime_message->message_id);
-
- if (message_id) {
- id = g_strstrip (g_strdup (message_id));
- } else {
- id = header_msgid_generate ();
- }
-
- mime_message->message_id = id;
- id = g_strdup_printf ("<%s>", mime_message->message_id);
- CAMEL_MEDIUM_CLASS (parent_class)->set_header (CAMEL_MEDIUM (mime_message), "Message-Id", id);
- g_free (id);
-}
-
-const char *
-camel_mime_message_get_message_id (CamelMimeMessage *mime_message)
-{
- g_assert (mime_message);
-
- return mime_message->message_id;
-}
-
-/* **** Reply-To: */
-
-void
-camel_mime_message_set_reply_to (CamelMimeMessage *msg, const CamelInternetAddress *reply_to)
-{
- char *addr;
-
- g_assert(msg);
-
- if (msg->reply_to) {
- camel_object_unref((CamelObject *)msg->reply_to);
- msg->reply_to = NULL;
- }
-
- if (reply_to == NULL) {
- CAMEL_MEDIUM_CLASS(parent_class)->remove_header(CAMEL_MEDIUM(msg), "Reply-To");
- return;
- }
-
- msg->reply_to = (CamelInternetAddress *)camel_address_new_clone((CamelAddress *)reply_to);
- addr = camel_address_encode((CamelAddress *)msg->reply_to);
- CAMEL_MEDIUM_CLASS(parent_class)->set_header(CAMEL_MEDIUM(msg), "Reply-To", addr);
- g_free(addr);
-}
-
-const CamelInternetAddress *
-camel_mime_message_get_reply_to(CamelMimeMessage *mime_message)
-{
- g_assert (mime_message);
-
- /* TODO: ref for threading? */
-
- return mime_message->reply_to;
-}
-
-/* **** Subject: */
-
-void
-camel_mime_message_set_subject(CamelMimeMessage *mime_message, const char *subject)
-{
- char *text;
-
- g_assert(mime_message);
-
- g_free(mime_message->subject);
- mime_message->subject = g_strstrip (g_strdup (subject));
- text = header_encode_string((unsigned char *)mime_message->subject);
- CAMEL_MEDIUM_CLASS(parent_class)->set_header(CAMEL_MEDIUM (mime_message), "Subject", text);
- g_free (text);
-}
-
-const char *
-camel_mime_message_get_subject(CamelMimeMessage *mime_message)
-{
- g_assert(mime_message);
-
- return mime_message->subject;
-}
-
-/* *** From: */
-
-/* Thought: Since get_from/set_from are so rarely called, it is probably not useful
- to cache the from (and reply_to) addresses as InternetAddresses internally, we
- could just get it from the headers and reprocess every time. */
-void
-camel_mime_message_set_from(CamelMimeMessage *msg, const CamelInternetAddress *from)
-{
- char *addr;
-
- g_assert(msg);
-
- if (msg->from) {
- camel_object_unref((CamelObject *)msg->from);
- msg->from = NULL;
- }
-
- if (from == NULL || camel_address_length((CamelAddress *)from) == 0) {
- CAMEL_MEDIUM_CLASS(parent_class)->remove_header(CAMEL_MEDIUM(msg), "From");
- return;
- }
-
- msg->from = (CamelInternetAddress *)camel_address_new_clone((CamelAddress *)from);
- addr = camel_address_encode((CamelAddress *)msg->from);
- CAMEL_MEDIUM_CLASS (parent_class)->set_header(CAMEL_MEDIUM(msg), "From", addr);
- g_free(addr);
-}
-
-const CamelInternetAddress *
-camel_mime_message_get_from(CamelMimeMessage *mime_message)
-{
- g_assert (mime_message);
-
- /* TODO: we should really ref this for multi-threading to work */
-
- return mime_message->from;
-}
-
-/* **** To: Cc: Bcc: */
-
-void
-camel_mime_message_set_recipients(CamelMimeMessage *mime_message, const char *type, const CamelInternetAddress *r)
-{
- char *text;
- CamelInternetAddress *addr;
-
- g_assert(mime_message);
-
- addr = g_hash_table_lookup(mime_message->recipients, type);
- if (addr == NULL) {
- g_warning("trying to set a non-valid receipient type: %s", type);
- return;
- }
-
- if (r == NULL || camel_address_length((CamelAddress *)r) == 0) {
- camel_address_remove((CamelAddress *)addr, -1);
- CAMEL_MEDIUM_CLASS(parent_class)->remove_header(CAMEL_MEDIUM(mime_message), type);
- return;
- }
-
- /* note this does copy, and not append (cat) */
- camel_address_copy((CamelAddress *)addr, (const CamelAddress *)r);
-
- /* and sync our headers */
- text = camel_address_encode(CAMEL_ADDRESS(addr));
- CAMEL_MEDIUM_CLASS(parent_class)->set_header(CAMEL_MEDIUM(mime_message), type, text);
- g_free(text);
-}
-
-void
-camel_mime_message_set_source(CamelMimeMessage *mime_message, const char *src)
-{
- char *shrouded_src;
- g_assert (mime_message);
-
- shrouded_src = e_url_shroud (src);
- camel_medium_add_header (CAMEL_MEDIUM (mime_message), "X-Evolution-Source", shrouded_src);
- g_free (shrouded_src);
-}
-
-const char *
-camel_mime_message_get_source(CamelMimeMessage *mime_message)
-{
- const char *src;
- g_assert(mime_message);
- src = camel_medium_get_header (CAMEL_MEDIUM (mime_message), "X-Evolution-Source");
- if (src) {
- while (*src && isspace ((gint) *src))
- ++src;
- }
- return src;
-}
-
-const CamelInternetAddress *
-camel_mime_message_get_recipients(CamelMimeMessage *mime_message, const char *type)
-{
- g_assert(mime_message);
-
- return g_hash_table_lookup(mime_message->recipients, type);
-}
-
-/* mime_message */
-static int
-construct_from_parser(CamelMimePart *dw, CamelMimeParser *mp)
-{
- char *buf;
- int len;
- int state;
- int ret;
-
- d(printf("constructing mime-message\n"));
-
- d(printf("mime_message::construct_from_parser()\n"));
-
- /* let the mime-part construct the guts ... */
- ret = ((CamelMimePartClass *)parent_class)->construct_from_parser(dw, mp);
-
- if (ret == -1)
- return -1;
-
- /* ... then clean up the follow-on state */
- state = camel_mime_parser_step(mp, &buf, &len);
- switch (state) {
- case HSCAN_EOF: case HSCAN_FROM_END: /* these doesn't belong to us */
- camel_mime_parser_unstep(mp);
- case HSCAN_MESSAGE_END:
- break;
- default:
- g_error("Bad parser state: Expecing MESSAGE_END or EOF or EOM, got: %d", camel_mime_parser_state(mp));
- camel_mime_parser_unstep(mp);
- return -1;
- }
-
- d(printf("mime_message::construct_from_parser() leaving\n"));
-#ifndef NO_WARNINGS
-#warning "return a real error code"
-#endif
- return 0;
-}
-
-static int
-write_to_stream (CamelDataWrapper *data_wrapper, CamelStream *stream)
-{
- CamelMimeMessage *mm = CAMEL_MIME_MESSAGE (data_wrapper);
-
- /* force mandatory headers ... */
- if (mm->from == NULL) {
- /* FIXME: should we just abort? Should we make one up? */
- g_warning("No from set for message");
- camel_medium_set_header((CamelMedium *)mm, "From", "");
- }
- if (!camel_medium_get_header((CamelMedium *)mm, "Date"))
- camel_mime_message_set_date(mm, CAMEL_MESSAGE_DATE_CURRENT, 0);
-
- if (mm->subject == NULL)
- camel_mime_message_set_subject(mm, "No Subject");
-
- if (mm->message_id == NULL)
- camel_mime_message_set_message_id (mm, NULL);
-
- /* FIXME: "To" header needs to be set explicitly as well ... */
-
- if (!camel_medium_get_header ((CamelMedium *)mm, "Mime-Version"))
- camel_medium_set_header((CamelMedium *)mm, "Mime-Version", "1.0");
-
- return CAMEL_DATA_WRAPPER_CLASS (parent_class)->write_to_stream (data_wrapper, stream);
-}
-
-/* FIXME: check format of fields. */
-static gboolean
-process_header (CamelMedium *medium, const char *header_name, const char *header_value)
-{
- CamelHeaderType header_type;
- CamelMimeMessage *message = CAMEL_MIME_MESSAGE (medium);
- CamelInternetAddress *addr;
-
- header_type = (CamelHeaderType)g_hash_table_lookup(header_name_table, header_name);
- switch (header_type) {
- case HEADER_FROM:
- if (message->from)
- camel_object_unref((CamelObject *)message->from);
- message->from = camel_internet_address_new();
- camel_address_decode((CamelAddress *)message->from, header_value);
- break;
- case HEADER_REPLY_TO:
- if (message->reply_to)
- camel_object_unref((CamelObject *)message->reply_to);
- message->reply_to = camel_internet_address_new();
- camel_address_decode((CamelAddress *)message->reply_to, header_value);
- break;
- case HEADER_SUBJECT:
- g_free(message->subject);
- message->subject = g_strstrip(header_decode_string(header_value));
- break;
- case HEADER_TO:
- case HEADER_CC:
- case HEADER_BCC:
- addr = g_hash_table_lookup (message->recipients, header_name);
- if (header_value)
- camel_address_decode(CAMEL_ADDRESS (addr), header_value);
- else
- camel_address_remove(CAMEL_ADDRESS (addr), -1);
- break;
- case HEADER_DATE:
- if (header_value) {
- message->date = header_decode_date(header_value, &message->date_offset);
- } else {
- message->date = CAMEL_MESSAGE_DATE_CURRENT;
- message->date_offset = 0;
- }
- break;
- case HEADER_MESSAGE_ID:
- g_free (message->message_id);
- if (header_value)
- message->message_id = header_msgid_decode (header_value);
- else
- message->message_id = NULL;
- break;
- default:
- return FALSE;
- }
- return TRUE;
-}
-
-static void
-set_header(CamelMedium *medium, const char *header_name, const void *header_value)
-{
- process_header(medium, header_name, header_value);
- parent_class->parent_class.set_header (medium, header_name, header_value);
-}
-
-static void
-add_header(CamelMedium *medium, const char *header_name, const void *header_value)
-{
- /* if we process it, then it must be forced unique as well ... */
- if (process_header(medium, header_name, header_value))
- parent_class->parent_class.set_header (medium, header_name, header_value);
- else
- parent_class->parent_class.add_header (medium, header_name, header_value);
-}
-
-static void
-remove_header(CamelMedium *medium, const char *header_name)
-{
- process_header(medium, header_name, NULL);
- parent_class->parent_class.remove_header (medium, header_name);
-}
-
-typedef gboolean (*CamelPartFunc)(CamelMimeMessage *, CamelMimePart *, void *data);
-
-static gboolean
-message_foreach_part_rec(CamelMimeMessage *msg, CamelMimePart *part, CamelPartFunc callback, void *data)
-{
- CamelDataWrapper *containee;
- int parts, i;
- int go = TRUE;
-
- if (callback(msg, part, data) == FALSE)
- return FALSE;
-
- containee = camel_medium_get_content_object(CAMEL_MEDIUM(part));
-
- if (containee == NULL)
- return go;
-
- /* using the object types is more accurate than using the mime/types */
- if (CAMEL_IS_MULTIPART(containee)) {
- parts = camel_multipart_get_number(CAMEL_MULTIPART(containee));
- for (i=0;go && i<parts;i++) {
- CamelMimePart *part = camel_multipart_get_part(CAMEL_MULTIPART(containee), i);
-
- go = message_foreach_part_rec(msg, part, callback, data);
- }
- } else if (CAMEL_IS_MIME_MESSAGE(containee)) {
- go = message_foreach_part_rec(msg, (CamelMimePart *)containee, callback, data);
- }
-
- return go;
-}
-
-/* dont make this public yet, it might need some more thinking ... */
-/* MPZ */
-static void
-camel_mime_message_foreach_part(CamelMimeMessage *msg, CamelPartFunc callback, void *data)
-{
- message_foreach_part_rec(msg, (CamelMimePart *)msg, callback, data);
-}
-
-static gboolean
-check_8bit(CamelMimeMessage *msg, CamelMimePart *part, void *data)
-{
- int *has8bit = data;
-
- /* check this part, and stop as soon as we are done */
- *has8bit = camel_mime_part_get_encoding(part) == CAMEL_MIME_PART_ENCODING_8BIT;
- return !(*has8bit);
-}
-
-gboolean
-camel_mime_message_has_8bit_parts(CamelMimeMessage *msg)
-{
- int has8bit = FALSE;
-
- camel_mime_message_foreach_part(msg, check_8bit, &has8bit);
-
- return has8bit;
-}
-
-/* finds the best charset and transfer encoding for a given part */
-static CamelMimePartEncodingType
-find_best_encoding(CamelMimePart *part, CamelBestencRequired required, CamelBestencEncoding enctype, char **charsetp)
-{
- const char *charsetin = NULL;
- char *charset = NULL;
- CamelStream *null;
- CamelStreamFilter *filter;
- CamelMimeFilterCharset *charenc = NULL;
- CamelMimeFilterBestenc *bestenc;
- int idb, idc = -1;
- gboolean istext;
- unsigned int flags, callerflags;
- CamelMimePartEncodingType encoding;
- CamelDataWrapper *content;
-
- /* we use all these weird stream things so we can do it with streams, and
- not have to read the whole lot into memory - although i have a feeling
- it would make things a fair bit simpler to do so ... */
-
- d(printf("starting to check part\n"));
-
- content = camel_medium_get_content_object((CamelMedium *)part);
- if (content == NULL) {
- /* charset might not be right here, but it'll get the right stuff
- if it is ever set */
- *charsetp = NULL;
- return CAMEL_MIME_PART_ENCODING_DEFAULT;
- }
-
- istext = header_content_type_is(part->content_type, "text", "*");
- if (istext) {
- flags = CAMEL_BESTENC_GET_CHARSET|CAMEL_BESTENC_GET_ENCODING;
- } else {
- flags = CAMEL_BESTENC_GET_ENCODING;
- }
-
- /* when building the message, any encoded parts are translated already */
- flags |= CAMEL_BESTENC_LF_IS_CRLF;
- /* and get any flags the caller passed in */
- callerflags = (required & CAMEL_BESTENC_NO_FROM);
- flags |= callerflags;
-
- /* first a null stream, so any filtering is thrown away; we only want the sideeffects */
- null = (CamelStream *)camel_stream_null_new();
- filter = camel_stream_filter_new_with_stream(null);
-
- /* if we're not looking for the best charset, then use the one we have */
- if (istext && (required & CAMEL_BESTENC_GET_CHARSET) == 0
- && (charsetin = header_content_type_param(part->content_type, "charset"))) {
- /* if libunicode doesn't support it, we dont really have utf8 anyway, so
- we dont need a converter */
- charenc = camel_mime_filter_charset_new_convert("UTF-8", charsetin);
- if (charenc != NULL)
- idc = camel_stream_filter_add(filter, (CamelMimeFilter *)charenc);
- charsetin = NULL;
- }
-
- bestenc = camel_mime_filter_bestenc_new(flags);
- idb = camel_stream_filter_add(filter, (CamelMimeFilter *)bestenc);
- d(printf("writing to checking stream\n"));
- camel_data_wrapper_write_to_stream(content, (CamelStream *)filter);
- camel_stream_filter_remove(filter, idb);
- if (idc != -1) {
- camel_stream_filter_remove(filter, idc);
- camel_object_unref((CamelObject *)charenc);
- charenc = NULL;
- }
-
- if (istext)
- charsetin = camel_mime_filter_bestenc_get_best_charset(bestenc);
-
- d(printf("charsetin = %s\n", charsetin));
-
- /* if we have US-ASCII, or we're not doing text, we dont need to bother with the rest */
- if (charsetin != NULL && (required & CAMEL_BESTENC_GET_CHARSET) != 0) {
- charset = g_strdup(charsetin);
-
- d(printf("have charset, trying conversion/etc\n"));
-
- /* now the 'bestenc' can has told us what the best encoding is, we can use that to create
- a charset conversion filter as well, and then re-add the bestenc to filter the
- result to find the best encoding to use as well */
-
- charenc = camel_mime_filter_charset_new_convert("UTF-8", charset);
-
- /* eek, libunicode doesn't undertand this charset anyway, then the 'utf8' we
- thought we had is really the native format, in which case, we just treat
- it as binary data (and take the result we have so far) */
-
- if (charenc != NULL) {
-
- /* otherwise, try another pass, converting to the real charset */
-
- camel_mime_filter_reset((CamelMimeFilter *)bestenc);
- camel_mime_filter_bestenc_set_flags(bestenc, CAMEL_BESTENC_GET_ENCODING|CAMEL_BESTENC_LF_IS_CRLF|callerflags);
-
- camel_stream_filter_add(filter, (CamelMimeFilter *)charenc);
- camel_stream_filter_add(filter, (CamelMimeFilter *)bestenc);
-
- /* and write it to the new stream */
- camel_data_wrapper_write_to_stream(content, (CamelStream *)filter);
-
- camel_object_unref((CamelObject *)charenc);
- }
- }
-
- encoding = camel_mime_filter_bestenc_get_best_encoding(bestenc, enctype);
-
- camel_object_unref((CamelObject *)filter);
- camel_object_unref((CamelObject *)bestenc);
- camel_object_unref((CamelObject *)null);
-
- d(printf("done, best encoding = %d\n", encoding));
-
- if (charsetp)
- *charsetp = charset;
- else
- g_free(charset);
-
- return encoding;
-}
-
-struct _enc_data {
- CamelBestencRequired required;
- CamelBestencEncoding enctype;
-};
-
-static gboolean
-best_encoding(CamelMimeMessage *msg, CamelMimePart *part, void *datap)
-{
- struct _enc_data *data = datap;
- char *charset;
- CamelMimePartEncodingType encoding;
-
- /* we only care about actual content objects */
- if (!CAMEL_IS_MULTIPART(part) && !CAMEL_IS_MIME_MESSAGE(part)) {
-
- encoding = find_best_encoding(part, data->required, data->enctype, &charset);
- /* we always set the encoding, if we got this far. GET_CHARSET implies
- also GET_ENCODING */
- camel_mime_part_set_encoding(part, encoding);
-
- if ((data->required & CAMEL_BESTENC_GET_CHARSET) != 0) {
- if (header_content_type_is(part->content_type, "text", "*")) {
- char *newct;
-
- /* FIXME: ick, the part content_type interface needs fixing bigtime */
- header_content_type_set_param(part->content_type, "charset", charset?charset:"us-ascii");
- newct = header_content_type_format(part->content_type);
- if (newct) {
- d(printf("Setting content-type to %s\n", newct));
-
- camel_mime_part_set_content_type(part, newct);
- g_free(newct);
- }
- }
- }
- }
-
- return TRUE;
-}
-
-void
-camel_mime_message_set_best_encoding(CamelMimeMessage *msg, CamelBestencRequired required, CamelBestencEncoding enctype)
-{
- struct _enc_data data;
-
- if ((required & (CAMEL_BESTENC_GET_ENCODING|CAMEL_BESTENC_GET_CHARSET)) == 0)
- return;
-
- data.required = required;
- data.enctype = enctype;
-
- camel_mime_message_foreach_part(msg, best_encoding, &data);
-}
-
-void
-camel_mime_message_encode_8bit_parts (CamelMimeMessage *mime_message)
-{
- camel_mime_message_set_best_encoding(mime_message, CAMEL_BESTENC_GET_ENCODING, CAMEL_BESTENC_7BIT);
-}
-
diff --git a/camel/camel-mime-message.h b/camel/camel-mime-message.h
deleted file mode 100644
index 47c390a5a5..0000000000
--- a/camel/camel-mime-message.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; fill-column: 160 -*- */
-/* camelMimeMessage.h : class for a mime message
- *
- * Authors: Bertrand Guiheneuf <bertrand@helixcode.com>
- * Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_MIME_MESSAGE_H
-#define CAMEL_MIME_MESSAGE_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <camel/camel-mime-part.h>
-#include <camel/camel-mime-utils.h>
-#include <camel/camel-internet-address.h>
-#include <camel/camel-mime-filter-bestenc.h>
-
-#define CAMEL_RECIPIENT_TYPE_TO "To"
-#define CAMEL_RECIPIENT_TYPE_CC "Cc"
-#define CAMEL_RECIPIENT_TYPE_BCC "Bcc"
-
-
-#define CAMEL_MIME_MESSAGE_TYPE (camel_mime_message_get_type ())
-#define CAMEL_MIME_MESSAGE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MIME_MESSAGE_TYPE, CamelMimeMessage))
-#define CAMEL_MIME_MESSAGE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MIME_MESSAGE_TYPE, CamelMimeMessageClass))
-#define CAMEL_IS_MIME_MESSAGE(o) (CAMEL_CHECK_TYPE((o), CAMEL_MIME_MESSAGE_TYPE))
-
-
-/* specify local time */
-#define CAMEL_MESSAGE_DATE_CURRENT (~0)
-
-struct _CamelMimeMessage
-{
- CamelMimePart parent_object;
-
- /* header fields */
- time_t date;
- int date_offset; /* GMT offset */
-
- /* cached internal copy */
- time_t date_received;
- int date_received_offset; /* GMT offset */
-
- char *subject;
-
- char *message_id;
-
- CamelInternetAddress *reply_to;
- CamelInternetAddress *from;
-
- GHashTable *recipients; /* hash table of CamelInternetAddress's */
-};
-
-typedef struct {
- CamelMimePartClass parent_class;
-
- /* Virtual methods */
-
-} CamelMimeMessageClass;
-
-
-
-/* Standard Camel function */
-CamelType camel_mime_message_get_type (void);
-
-
-/* public methods */
-CamelMimeMessage *camel_mime_message_new (void);
-void camel_mime_message_set_date (CamelMimeMessage *mime_message,
- time_t date,
- int offset);
-time_t camel_mime_message_get_date (CamelMimeMessage *mime_message,
- int *offset);
-time_t camel_mime_message_get_date_received (CamelMimeMessage *mime_message,
- int *offset);
-void camel_mime_message_set_message_id (CamelMimeMessage *mime_message,
- const char *message_id);
-const char *camel_mime_message_get_message_id (CamelMimeMessage *mime_message);
-void camel_mime_message_set_reply_to (CamelMimeMessage *mime_message,
- const CamelInternetAddress *reply_to);
-const CamelInternetAddress *camel_mime_message_get_reply_to (CamelMimeMessage *mime_message);
-
-void camel_mime_message_set_subject (CamelMimeMessage *mime_message,
- const char *subject);
-const char *camel_mime_message_get_subject (CamelMimeMessage *mime_message);
-void camel_mime_message_set_from (CamelMimeMessage *mime_message,
- const CamelInternetAddress *from);
-const CamelInternetAddress *camel_mime_message_get_from (CamelMimeMessage *mime_message);
-
-const CamelInternetAddress *camel_mime_message_get_recipients (CamelMimeMessage *mime_message,
- const char *type);
-void camel_mime_message_set_recipients (CamelMimeMessage *mime_message,
- const char *type,
- const CamelInternetAddress *r);
-
-void camel_mime_message_set_source (CamelMimeMessage *mime_message,
- const char *identity);
-const char *camel_mime_message_get_source (CamelMimeMessage *mime_message);
-
-
-/* utility functions */
-gboolean camel_mime_message_has_8bit_parts (CamelMimeMessage *mime_message);
-void camel_mime_message_set_best_encoding (CamelMimeMessage *msg,
- CamelBestencRequired required,
- CamelBestencEncoding enctype);
-void camel_mime_message_encode_8bit_parts (CamelMimeMessage *mime_message);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_MIME_MESSAGE_H */
diff --git a/camel/camel-mime-parser.c b/camel/camel-mime-parser.c
deleted file mode 100644
index 77c39ddde9..0000000000
--- a/camel/camel-mime-parser.c
+++ /dev/null
@@ -1,1953 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/* What should hopefully be a fast mail parser */
-
-/* Do not change this code without asking me (Michael Zucchi) first
-
- There is almost always a reason something was done a certain way.
- */
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-
-#include <string.h>
-
-#include <stdio.h>
-#include <errno.h>
-
-#include <regex.h>
-#include <ctype.h>
-
-#include <glib.h>
-#include "camel-mime-parser.h"
-#include "camel-mime-utils.h"
-#include "camel-mime-filter.h"
-#include "camel-stream.h"
-#include "camel-seekable-stream.h"
-
-#define r(x)
-#define h(x)
-#define c(x)
-#define d(x)
-
-/*#define PURIFY*/
-
-#define MEMPOOL
-
-#define STRUCT_ALIGN 4
-
-#ifdef PURIFY
-int inend_id = -1,
- inbuffer_id = -1;
-#endif
-
-#if 0
-extern int strdup_count;
-extern int malloc_count;
-extern int free_count;
-
-#define g_strdup(x) (strdup_count++, g_strdup(x))
-#define g_malloc(x) (malloc_count++, g_malloc(x))
-#define g_free(x) (free_count++, g_free(x))
-#endif
-
-#ifdef MEMPOOL
-typedef struct _MemPoolNode {
- struct _MemPoolNode *next;
-
- int free;
- char data[1];
-} MemPoolNode;
-
-typedef struct _MemPoolThresholdNode {
- struct _MemPoolThresholdNode *next;
- char data[1];
-} MemPoolThresholdNode;
-
-typedef struct _MemPool {
- int blocksize;
- int threshold;
- struct _MemPoolNode *blocks;
- struct _MemPoolThresholdNode *threshold_blocks;
-} MemPool;
-
-MemPool *mempool_new(int blocksize, int threshold);
-void *mempool_alloc(MemPool *pool, int size);
-void mempool_flush(MemPool *pool, int freeall);
-void mempool_free(MemPool *pool);
-
-MemPool *mempool_new(int blocksize, int threshold)
-{
- MemPool *pool;
-
- pool = g_malloc(sizeof(*pool));
- if (threshold >= blocksize)
- threshold = blocksize * 2 / 3;
- pool->blocksize = blocksize;
- pool->threshold = threshold;
- pool->blocks = NULL;
- pool->threshold_blocks = NULL;
- return pool;
-}
-
-void *mempool_alloc(MemPool *pool, int size)
-{
- size = (size + STRUCT_ALIGN) & (~(STRUCT_ALIGN-1));
- if (size>=pool->threshold) {
- MemPoolThresholdNode *n;
-
- n = g_malloc(sizeof(*n) - sizeof(char) + size);
- n->next = pool->threshold_blocks;
- pool->threshold_blocks = n;
- return &n->data[0];
- } else {
- MemPoolNode *n;
-
- n = pool->blocks;
- while (n) {
- if (n->free >= size) {
- n->free -= size;
- return &n->data[n->free];
- }
- n = n->next;
- }
-
- n = g_malloc(sizeof(*n) - sizeof(char) + pool->blocksize);
- n->next = pool->blocks;
- pool->blocks = n;
- n->free = pool->blocksize - size;
- return &n->data[n->free];
- }
-}
-
-void mempool_flush(MemPool *pool, int freeall)
-{
- MemPoolThresholdNode *tn, *tw;
- MemPoolNode *pw, *pn;
-
- tw = pool->threshold_blocks;
- while (tw) {
- tn = tw->next;
- g_free(tw);
- tw = tn;
- }
- pool->threshold_blocks = NULL;
-
- if (freeall) {
- pw = pool->blocks;
- while (pw) {
- pn = pw->next;
- g_free(pw);
- pw = pn;
- }
- pool->blocks = NULL;
- } else {
- pw = pool->blocks;
- while (pw) {
- pw->free = pool->blocksize;
- pw = pw->next;
- }
- }
-}
-
-void mempool_free(MemPool *pool)
-{
- if (pool) {
- mempool_flush(pool, 1);
- g_free(pool);
- }
-}
-
-#endif
-
-
-
-
-
-
-
-
-
-
-
-
-#define SCAN_BUF 4096 /* size of read buffer */
-#define SCAN_HEAD 128 /* headroom guaranteed to be before each read buffer */
-
-/* a little hacky, but i couldn't be bothered renaming everything */
-#define _header_scan_state _CamelMimeParserPrivate
-#define _PRIVATE(o) (((CamelMimeParser *)(o))->priv)
-
-struct _header_scan_state {
-
- /* global state */
-
- enum _header_state state;
-
- /* for building headers during scanning */
- char *outbuf;
- char *outptr;
- char *outend;
-
- int fd; /* input for a fd input */
- CamelStream *stream; /* or for a stream */
-
- /* for scanning input buffers */
- char *realbuf; /* the real buffer, SCAN_HEAD*2 + SCAN_BUF bytes */
- char *inbuf; /* points to a subset of the allocated memory, the underflow */
- char *inptr; /* (upto SCAN_HEAD) is for use by filters so they dont copy all data */
- char *inend;
-
- int atleast;
-
- int seek; /* current offset to start of buffer */
- int unstep; /* how many states to 'unstep' (repeat the current state) */
-
- unsigned int midline:1; /* are we mid-line interrupted? */
- unsigned int scan_from:1; /* do we care about From lines? */
- unsigned int scan_pre_from:1; /* do we return pre-from data? */
-
- int start_of_from; /* where from started */
- int start_of_headers; /* where headers started from the last scan */
-
- int header_start; /* start of last header, or -1 */
-
- /* filters to apply to all content before output */
- int filterid; /* id of next filter */
- struct _header_scan_filter *filters;
-
- /* per message/part info */
- struct _header_scan_stack *parts;
-
-};
-
-struct _header_scan_stack {
- struct _header_scan_stack *parent;
-
- enum _header_state savestate; /* state at invocation of this part */
-
-#ifdef MEMPOOL
- MemPool *pool; /* memory pool to keep track of headers/etc at this level */
-#endif
- struct _header_raw *headers; /* headers for this part */
-
- struct _header_content_type *content_type;
-
- /* I dont use GString's casue you can't efficiently append a buffer to them */
- GByteArray *pretext; /* for multipart types, save the pre-boundary data here */
- GByteArray *posttext; /* for multipart types, save the post-boundary data here */
- int prestage; /* used to determine if it is a pre-boundary or post-boundary data segment */
-
- GByteArray *from_line; /* the from line */
-
- char *boundary; /* for multipart/ * boundaries, including leading -- and trailing -- for the final part */
- int boundarylen; /* actual length of boundary, including leading -- if there is one */
- int boundarylenfinal; /* length of boundary, including trailing -- if there is one */
- int atleast; /* the biggest boundary from here to the parent */
-};
-
-struct _header_scan_filter {
- struct _header_scan_filter *next;
- int id;
- CamelMimeFilter *filter;
-};
-
-static void folder_scan_step(struct _header_scan_state *s, char **databuffer, int *datalength);
-static void folder_scan_drop_step(struct _header_scan_state *s);
-static int folder_scan_init_with_fd(struct _header_scan_state *s, int fd);
-static int folder_scan_init_with_stream(struct _header_scan_state *s, CamelStream *stream);
-static struct _header_scan_state *folder_scan_init(void);
-static void folder_scan_close(struct _header_scan_state *s);
-static struct _header_scan_stack *folder_scan_content(struct _header_scan_state *s, int *lastone, char **data, int *length);
-static struct _header_scan_stack *folder_scan_header(struct _header_scan_state *s, int *lastone);
-static int folder_scan_skip_line(struct _header_scan_state *s, GByteArray *save);
-static off_t folder_seek(struct _header_scan_state *s, off_t offset, int whence);
-static off_t folder_tell(struct _header_scan_state *s);
-static int folder_read(struct _header_scan_state *s);
-#ifdef MEMPOOL
-static void header_append_mempool(struct _header_scan_state *s, struct _header_scan_stack *h, char *header, int offset);
-#endif
-
-static void camel_mime_parser_class_init (CamelMimeParserClass *klass);
-static void camel_mime_parser_init (CamelMimeParser *obj);
-
-#if d(!)0
-static char *states[] = {
- "HSCAN_INITIAL",
- "HSCAN_PRE_FROM", /* pre-from data */
- "HSCAN_FROM", /* got 'From' line */
- "HSCAN_HEADER", /* toplevel header */
- "HSCAN_BODY", /* scanning body of message */
- "HSCAN_MULTIPART", /* got multipart header */
- "HSCAN_MESSAGE", /* rfc822/news message */
-
- "HSCAN_PART", /* part of a multipart */
-
- "HSCAN_EOF", /* end of file */
- "HSCAN_PRE_FROM_END",
- "HSCAN_FROM_END",
- "HSCAN_HEAER_END",
- "HSCAN_BODY_END",
- "HSCAN_MULTIPART_END",
- "HSCAN_MESSAGE_END",
-};
-#endif
-
-static CamelObjectClass *camel_mime_parser_parent;
-
-static void
-camel_mime_parser_class_init (CamelMimeParserClass *klass)
-{
- camel_mime_parser_parent = camel_type_get_global_classfuncs (camel_object_get_type ());
-}
-
-static void
-camel_mime_parser_init (CamelMimeParser *obj)
-{
- struct _header_scan_state *s;
-
- s = folder_scan_init();
- _PRIVATE(obj) = s;
-}
-
-static void
-camel_mime_parser_finalise(CamelObject *o)
-{
- struct _header_scan_state *s = _PRIVATE(o);
-#ifdef PURIFY
- purify_watch_remove_all();
-#endif
- folder_scan_close(s);
-}
-
-CamelType
-camel_mime_parser_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_object_get_type (), "CamelMimeParser",
- sizeof (CamelMimeParser),
- sizeof (CamelMimeParserClass),
- (CamelObjectClassInitFunc) camel_mime_parser_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_parser_init,
- (CamelObjectFinalizeFunc) camel_mime_parser_finalise);
- }
-
- return type;
-}
-
-/**
- * camel_mime_parser_new:
- *
- * Create a new CamelMimeParser object.
- *
- * Return value: A new CamelMimeParser widget.
- **/
-CamelMimeParser *
-camel_mime_parser_new (void)
-{
- CamelMimeParser *new = CAMEL_MIME_PARSER ( camel_object_new (camel_mime_parser_get_type ()));
- return new;
-}
-
-
-/**
- * camel_mime_parser_filter_add:
- * @m:
- * @mf:
- *
- * Add a filter that will be applied to any body content before it is passed
- * to the caller. Filters may be pipelined to perform multi-pass operations
- * on the content, and are applied in the order they were added.
- *
- * Note that filters are only applied to the body content of messages, and once
- * a filter has been set, all content returned by a filter_step() with a state
- * of HSCAN_BODY will have passed through the filter.
- *
- * Return value: An id that may be passed to filter_remove() to remove
- * the filter, or -1 if the operation failed.
- **/
-int
-camel_mime_parser_filter_add(CamelMimeParser *m, CamelMimeFilter *mf)
-{
- struct _header_scan_state *s = _PRIVATE(m);
- struct _header_scan_filter *f, *new;
-
- new = g_malloc(sizeof(*new));
- new->filter = mf;
- new->id = s->filterid++;
- if (s->filterid == -1)
- s->filterid++;
- new->next = 0;
- camel_object_ref((CamelObject *)mf);
-
- /* yes, this is correct, since 'next' is the first element of the struct */
- f = (struct _header_scan_filter *)&s->filters;
- while (f->next)
- f = f->next;
- f->next = new;
- return new->id;
-}
-
-/**
- * camel_mime_parser_filter_remove:
- * @m:
- * @id:
- *
- * Remove a processing filter from the pipeline. There is no
- * restriction on the order the filters can be removed.
- **/
-void
-camel_mime_parser_filter_remove(CamelMimeParser *m, int id)
-{
- struct _header_scan_state *s = _PRIVATE(m);
- struct _header_scan_filter *f, *old;
-
- f = (struct _header_scan_filter *)&s->filters;
- while (f && f->next) {
- old = f->next;
- if (old->id == id) {
- camel_object_unref((CamelObject *)old->filter);
- f->next = old->next;
- g_free(old);
- /* there should only be a single matching id, but
- scan the whole lot anyway */
- }
- f = f->next;
- }
-}
-
-/**
- * camel_mime_parser_header:
- * @m:
- * @name: Name of header.
- * @offset: Pointer that can receive the offset of the header in
- * the stream from the start of parsing.
- *
- * Lookup a header by name.
- *
- * Return value: The header value, or NULL if the header is not
- * defined.
- **/
-const char *
-camel_mime_parser_header(CamelMimeParser *m, const char *name, int *offset)
-{
- struct _header_scan_state *s = _PRIVATE(m);
-
- if (s->parts &&
- s->parts->headers) {
- return header_raw_find(&s->parts->headers, name, offset);
- }
- return NULL;
-}
-
-/**
- * camel_mime_parser_headers_raw:
- * @m:
- *
- * Get the list of the raw headers which are defined for the
- * current state of the parser. These headers are valid
- * until the next call to parser_step(), or parser_drop_step().
- *
- * Return value: The raw headers, or NULL if there are no headers
- * defined for the current part or state. These are READ ONLY.
- **/
-struct _header_raw *
-camel_mime_parser_headers_raw(CamelMimeParser *m)
-{
- struct _header_scan_state *s = _PRIVATE(m);
-
- if (s->parts)
- return s->parts->headers;
- return NULL;
-}
-
-static const char *
-byte_array_to_string(GByteArray *array)
-{
- if (array == NULL)
- return NULL;
-
- if (array->len == 0 || array->data[array->len-1] != '\0')
- g_byte_array_append(array, "", 1);
-
- return array->data;
-}
-
-/**
- * camel_mime_parser_preface:
- * @m:
- *
- * Retrieve the preface text for the current multipart.
- * Can only be used when the state is HSCAN_MULTIPART_END.
- *
- * Return value: The preface text, or NULL if there wasn't any.
- **/
-const char *
-camel_mime_parser_preface(CamelMimeParser *m)
-{
- struct _header_scan_state *s = _PRIVATE(m);
-
- if (s->parts)
- return byte_array_to_string(s->parts->pretext);
-
- return NULL;
-}
-
-/**
- * camel_mime_parser_postface:
- * @m:
- *
- * Retrieve the postface text for the current multipart.
- * Only returns valid data when the current state if
- * HSCAN_MULTIPART_END.
- *
- * Return value: The postface text, or NULL if there wasn't any.
- **/
-const char *
-camel_mime_parser_postface(CamelMimeParser *m)
-{
- struct _header_scan_state *s = _PRIVATE(m);
-
- if (s->parts)
- return byte_array_to_string(s->parts->posttext);
-
- return NULL;
-}
-
-/**
- * camel_mime_parser_from_line:
- * @m:
- *
- * Get the last scanned "From " line, from a recently scanned from.
- * This should only be called in the HSCAN_FROM state. The
- * from line will include the closing \n found (if there was one).
- *
- * The return value will remain valid while in the HSCAN_FROM
- * state, or any deeper state.
- *
- * Return value: The From line, or NULL if called out of context.
- **/
-const char *
-camel_mime_parser_from_line(CamelMimeParser *m)
-{
- struct _header_scan_state *s = _PRIVATE(m);
-
- if (s->parts)
- return byte_array_to_string(s->parts->from_line);
-
- return NULL;
-}
-
-/**
- * camel_mime_parser_init_with_fd:
- * @m:
- * @fd: A valid file descriptor.
- *
- * Initialise the scanner with an fd. The scanner's offsets
- * will be relative to the current file position of the file
- * descriptor. As a result, seekable descritors should
- * be seeked using the parser seek functions.
- *
- * An initial buffer will be read from the file descriptor
- * immediately, although no parsing will occur.
- *
- * Return value: Returns -1 on error.
- **/
-int
-camel_mime_parser_init_with_fd(CamelMimeParser *m, int fd)
-{
- struct _header_scan_state *s = _PRIVATE(m);
-
- return folder_scan_init_with_fd(s, fd);
-}
-
-/**
- * camel_mime_parser_init_with_stream:
- * @m:
- * @stream:
- *
- * Initialise the scanner with a source stream. The scanner's
- * offsets will be relative to the current file position of
- * the stream. As a result, seekable streams should only
- * be seeked using the parser seek function.
- *
- * An initial buffer will be read from the stream
- * immediately, although no parsing will occur.
- *
- * Return value: -1 on error.
- **/
-int
-camel_mime_parser_init_with_stream(CamelMimeParser *m, CamelStream *stream)
-{
- struct _header_scan_state *s = _PRIVATE(m);
-
- return folder_scan_init_with_stream(s, stream);
-}
-
-/**
- * camel_mime_parser_scan_from:
- * @m:
- * @scan_from: #TRUE if the scanner should scan From lines.
- *
- * Tell the scanner if it should scan "^From " lines or not.
- *
- * If the scanner is scanning from lines, two additional
- * states HSCAN_FROM and HSCAN_FROM_END will be returned
- * to the caller during parsing.
- *
- * This may also be preceeded by an optional
- * HSCAN_PRE_FROM state which contains the scanned data
- * found before the From line is encountered. See also
- * scan_pre_from().
- **/
-void
-camel_mime_parser_scan_from(CamelMimeParser *m, int scan_from)
-{
- struct _header_scan_state *s = _PRIVATE(m);
- s->scan_from = scan_from;
-}
-
-/**
- * camel_mime_parser_scan_pre_from:
- * @:
- * @scan_pre_from: #TRUE if we want to get pre-from data.
- *
- * Tell the scanner whether we want to know abou the pre-from
- * data during a scan. If we do, then we may get an additional
- * state HSCAN_PRE_FROM which returns the specified data.
- **/
-void
-camel_mime_parser_scan_pre_from(CamelMimeParser *m, int scan_pre_from)
-{
- struct _header_scan_state *s = _PRIVATE(m);
- s->scan_pre_from = scan_pre_from;
-}
-
-/**
- * camel_mime_parser_content_type:
- * @m:
- *
- * Get the content type defined in the current part.
- *
- * Return value: A content_type structure, or NULL if there
- * is no content-type defined for this part of state of the
- * parser.
- **/
-struct _header_content_type *
-camel_mime_parser_content_type(CamelMimeParser *m)
-{
- struct _header_scan_state *s = _PRIVATE(m);
-
- /* FIXME: should this search up until it's found the 'right'
- content-type? can it? */
- if (s->parts)
- return s->parts->content_type;
- return NULL;
-}
-
-/**
- * camel_mime_parser_unstep:
- * @m:
- *
- * Cause the last step operation to repeat itself. If this is
- * called repeated times, then the same step will be repeated
- * that many times.
- *
- * Note that it is not possible to scan back using this function,
- * only to have a way of peeking the next state.
- **/
-void camel_mime_parser_unstep(CamelMimeParser *m)
-{
- struct _header_scan_state *s = _PRIVATE(m);
-
- s->unstep++;
-}
-
-/**
- * camel_mime_parser_drop_step:
- * @m:
- *
- * Drop the last step call. This should only be used
- * in conjunction with seeking of the stream as the
- * stream may be in an undefined state relative to the
- * state of the parser.
- *
- * Use this call with care.
- **/
-void camel_mime_parser_drop_step(CamelMimeParser *m)
-{
- struct _header_scan_state *s = _PRIVATE(m);
-
- s->unstep = 0;
- folder_scan_drop_step(s);
-}
-
-/**
- * camel_mime_parser_step:
- * @m:
- * @databuffer: Pointer to accept a pointer to the data
- * associated with this step (if any). May be #NULL,
- * in which case datalength is also ingored.
- * @datalength: Pointer to accept a pointer to the data
- * length associated with this step (if any).
- *
- * Parse the next part of the MIME message. If _unstep()
- * has been called, then continue to return the same state
- * for that many calls.
- *
- * If the step is HSCAN_BODY then the databuffer and datalength
- * pointers will be setup to point to the internal data buffer
- * of the scanner and may be processed as required. Any
- * filters will have already been applied to this data.
- *
- * Refer to the state diagram elsewhere for a full listing of
- * the states an application is gauranteed to get from the
- * scanner.
- *
- * Return value: The current new state of the parser
- * is returned.
- **/
-enum _header_state
-camel_mime_parser_step(CamelMimeParser *m, char **databuffer, int *datalength)
-{
- struct _header_scan_state *s = _PRIVATE(m);
-
- d(printf("OLD STATE: '%s' :\n", states[s->state]));
-
- if (s->unstep <= 0) {
- char *dummy;
- int dummylength;
-
- if (databuffer == NULL) {
- databuffer = &dummy;
- datalength = &dummylength;
- }
-
- folder_scan_step(s, databuffer, datalength);
- } else
- s->unstep--;
-
- d(printf("NEW STATE: '%s' :\n", states[s->state]));
-
- return s->state;
-}
-
-/**
- * camel_mime_parser_read:
- * @m:
- * @databuffer:
- * @len:
- *
- * Read at most @len bytes from the internal mime parser buffer.
- *
- * Returns the address of the internal buffer in @databuffer,
- * and the length of useful data.
- *
- * @len may be specified as INT_MAX, in which case you will
- * get the full remainder of the buffer at each call.
- *
- * Note that no parsing of the data read through this function
- * occurs, so no state changes occur, but the seek position
- * is updated appropriately.
- *
- * Return value: The number of bytes available, or -1 on error.
- **/
-int
-camel_mime_parser_read(CamelMimeParser *m, const char **databuffer, int len)
-{
- struct _header_scan_state *s = _PRIVATE(m);
- int there;
-
- if (len == 0)
- return 0;
-
- d(printf("parser::read() reading %d bytes\n", len));
-
- there = MIN(s->inend - s->inptr, len);
- d(printf("parser::read() there = %d bytes\n", there));
- if (there > 0) {
- *databuffer = s->inptr;
- s->inptr += there;
- return there;
- }
-
- if (folder_read(s) == -1)
- return -1;
-
- there = MIN(s->inend - s->inptr, len);
- d(printf("parser::read() had to re-read, now there = %d bytes\n", there));
-
- *databuffer = s->inptr;
- s->inptr += there;
-
- return there;
-}
-
-/**
- * camel_mime_parser_tell:
- * @m:
- *
- * Return the current scanning offset. The meaning of this
- * value will depend on the current state of the parser.
- *
- * An incomplete listing of the states:
- *
- * HSCAN_INITIAL, The start of the current message.
- * HSCAN_HEADER, HSCAN_MESSAGE, HSCAN_MULTIPART, the character
- * position immediately after the end of the header.
- * HSCAN_BODY, Position within the message of the start
- * of the current data block.
- * HSCAN_*_END, The position of the character starting
- * the next section of the scan (the last position + 1 of
- * the respective current state).
- *
- * Return value: See above.
- **/
-off_t camel_mime_parser_tell(CamelMimeParser *m)
-{
- struct _header_scan_state *s = _PRIVATE(m);
-
- return folder_tell(s);
-}
-
-/**
- * camel_mime_parser_tell_start_headers:
- * @m:
- *
- * Find out the position within the file of where the
- * headers started, this is cached by the parser
- * at the time.
- *
- * Return value: The header start position, or -1 if
- * no headers were scanned in the current state.
- **/
-off_t camel_mime_parser_tell_start_headers(CamelMimeParser *m)
-{
- struct _header_scan_state *s = _PRIVATE(m);
-
- return s->start_of_headers;
-}
-
-/**
- * camel_mime_parser_tell_start_from:
- * @m:
- *
- * If the parser is scanning From lines, then this returns
- * the position of the start of the From line.
- *
- * Return value: The start of the from line, or -1 if there
- * was no From line, or From lines are not being scanned.
- **/
-off_t camel_mime_parser_tell_start_from(CamelMimeParser *m)
-{
- struct _header_scan_state *s = _PRIVATE(m);
-
- return s->start_of_from;
-}
-
-/**
- * camel_mime_parser_seek:
- * @m:
- * @off: Number of bytes to offset the seek by.
- * @whence: SEEK_SET, SEEK_CUR, SEEK_END
- *
- * Reset the source position to a known value.
- *
- * Note that if the source stream/descriptor was not
- * positioned at 0 to begin with, and an absolute seek
- * is specified (whence != SEEK_CUR), then the seek
- * position may not match the desired seek position.
- *
- * Return value: The new seek offset, or -1 on
- * an error (for example, trying to seek on a non-seekable
- * stream or file descriptor).
- **/
-off_t camel_mime_parser_seek(CamelMimeParser *m, off_t off, int whence)
-{
- struct _header_scan_state *s = _PRIVATE(m);
- return folder_seek(s, off, whence);
-}
-
-/**
- * camel_mime_parser_state:
- * @m:
- *
- * Get the current parser state.
- *
- * Return value: The current parser state.
- **/
-enum _header_state camel_mime_parser_state(CamelMimeParser *m)
-{
- struct _header_scan_state *s = _PRIVATE(m);
- return s->state;
-}
-
-/**
- * camel_mime_parser_stream:
- * @m:
- *
- * Get the stream, if any, the parser has been initialised
- * with. May be used to setup sub-streams, but should not
- * be read from directly (without saving and restoring
- * the seek position in between).
- *
- * Return value: The stream from _init_with_stream(), or NULL
- * if the parser is reading from a file descriptor or is
- * uninitialised.
- **/
-CamelStream *camel_mime_parser_stream(CamelMimeParser *m)
-{
- struct _header_scan_state *s = _PRIVATE(m);
- return s->stream;
-}
-
-/**
- * camel_mime_parser_fd:
- * @m:
- *
- * Return the file descriptor, if any, the parser has been
- * initialised with.
- *
- * Should not be read from unless the parser it to terminate,
- * or the seek offset can be reset before the next parse
- * step.
- *
- * Return value: The file descriptor or -1 if the parser
- * is reading from a stream or has not been initialised.
- **/
-int camel_mime_parser_fd(CamelMimeParser *m)
-{
- struct _header_scan_state *s = _PRIVATE(m);
- return s->fd;
-}
-
-/* ********************************************************************** */
-/* Implementation */
-/* ********************************************************************** */
-
-/* read the next bit of data, ensure there is enough room 'atleast' bytes */
-static int
-folder_read(struct _header_scan_state *s)
-{
- int len;
- int inoffset;
-
- if (s->inptr<s->inend-s->atleast)
- return s->inend-s->inptr;
-#ifdef PURIFY
- purify_watch_remove(inend_id);
- purify_watch_remove(inbuffer_id);
-#endif
- /* check for any remaning bytes (under the atleast limit( */
- inoffset = s->inend - s->inptr;
- if (inoffset>0) {
- memcpy(s->inbuf, s->inptr, inoffset);
- }
- if (s->stream) {
- len = camel_stream_read(s->stream, s->inbuf+inoffset, SCAN_BUF-inoffset);
- } else {
- len = read(s->fd, s->inbuf+inoffset, SCAN_BUF-inoffset);
- }
- r(printf("read %d bytes, offset = %d\n", len, inoffset));
- if (len>=0) {
- /* add on the last read block */
- s->seek += s->inptr - s->inbuf;
- s->inptr = s->inbuf;
- s->inend = s->inbuf+len+inoffset;
- r(printf("content = %d '%.*s'\n",s->inend - s->inptr, s->inend - s->inptr, s->inptr));
- }
-
- g_assert(s->inptr<=s->inend);
-#ifdef PURIFY
- inend_id = purify_watch(&s->inend);
- inbuffer_id = purify_watch_n(s->inend+1, SCAN_HEAD-1, "rw");
-#endif
- r(printf("content = %d '%.*s'\n", s->inend - s->inptr, s->inend - s->inptr, s->inptr));
- /* set a sentinal, for the inner loops to check against */
- s->inend[0] = '\n';
- return s->inend-s->inptr;
-}
-
-/* return the current absolute position of the data pointer */
-static off_t
-folder_tell(struct _header_scan_state *s)
-{
- return s->seek + (s->inptr - s->inbuf);
-}
-
-/*
- need some way to prime the parser state, so this actually works for
- other than top-level messages
-*/
-static off_t
-folder_seek(struct _header_scan_state *s, off_t offset, int whence)
-{
- off_t newoffset;
- int len;
-
- if (s->stream) {
- if (CAMEL_IS_SEEKABLE_STREAM(s->stream)) {
- /* NOTE: assumes whence seekable stream == whence libc, which is probably
- the case (or bloody well should've been) */
- newoffset = camel_seekable_stream_seek((CamelSeekableStream *)s->stream, offset, whence);
- } else {
- newoffset = -1;
- errno = EINVAL;
- }
- } else {
- newoffset = lseek(s->fd, offset, whence);
- }
-#ifdef PURIFY
- purify_watch_remove(inend_id);
- purify_watch_remove(inbuffer_id);
-#endif
- if (newoffset != -1) {
- s->seek = newoffset;
- s->inptr = s->inbuf;
- s->inend = s->inbuf;
- if (s->stream)
- len = camel_stream_read(s->stream, s->inbuf, SCAN_BUF);
- else
- len = read(s->fd, s->inbuf, SCAN_BUF);
- if (len>=0) {
- s->inend = s->inbuf+len;
- s->inend[0] = '\n';
- } else
- newoffset = -1;
- }
-#ifdef PURIFY
- inend_id = purify_watch(&s->inend);
- inbuffer_id = purify_watch_n(s->inend+1, SCAN_HEAD-1, "rw");
-#endif
- return newoffset;
-}
-
-static void
-folder_push_part(struct _header_scan_state *s, struct _header_scan_stack *h)
-{
- if (s->parts && s->parts->atleast > h->boundarylenfinal)
- h->atleast = s->parts->atleast;
- else
- h->atleast = MAX(h->boundarylenfinal, 1);
-
- h->parent = s->parts;
- s->parts = h;
-}
-
-static void
-folder_pull_part(struct _header_scan_state *s)
-{
- struct _header_scan_stack *h;
-
- h = s->parts;
- if (h) {
- s->parts = h->parent;
- g_free(h->boundary);
-#ifdef MEMPOOL
- mempool_free(h->pool);
-#else
- header_raw_clear(&h->headers);
-#endif
- header_content_type_unref(h->content_type);
- if (h->pretext)
- g_byte_array_free(h->pretext, TRUE);
- if (h->posttext)
- g_byte_array_free(h->posttext, TRUE);
- if (h->from_line)
- g_byte_array_free(h->from_line, TRUE);
- g_free(h);
- } else {
- g_warning("Header stack underflow!\n");
- }
-}
-
-static int
-folder_scan_skip_line(struct _header_scan_state *s, GByteArray *save)
-{
- int atleast = s->atleast;
- register char *inptr, *inend, c;
- int len;
-
- s->atleast = 1;
-
- while ( (len = folder_read(s)) > 0 && len > s->atleast) { /* ensure we have at least enough room here */
- inptr = s->inptr;
- inend = s->inend-1;
-
- c = -1;
- while (inptr<inend
- && (c = *inptr++)!='\n')
- ;
-
- if (save)
- g_byte_array_append(save, s->inptr, inptr-s->inptr);
-
- s->inptr = inptr;
-
- if (c=='\n') {
- s->atleast = atleast;
- return 0;
- }
- }
-
- s->atleast = atleast;
-
- return -1; /* not found */
-}
-
-/* TODO: Is there any way to make this run faster? It gets called a lot ... */
-static struct _header_scan_stack *
-folder_boundary_check(struct _header_scan_state *s, const char *boundary, int *lastone)
-{
- struct _header_scan_stack *part;
- int len = s->atleast; /* make sure we dont access past the buffer */
-
- h(printf("checking boundary marker upto %d bytes\n", len));
- part = s->parts;
- while (part) {
- h(printf(" boundary: %s\n", part->boundary));
- h(printf(" against: '%.*s'\n", s->atleast, boundary));
- if (part->boundary
- && part->boundarylen <= len
- && memcmp(boundary, part->boundary, part->boundarylen)==0) {
- h(printf("matched boundary: %s\n", part->boundary));
- /* again, make sure we're in range */
- if (part->boundarylenfinal <= len) {
- int extra = part->boundarylenfinal - part->boundarylen;
-
- /* check the extra stuff on an final boundary, normally -- for mime parts */
- if (extra>0) {
- *lastone = memcmp(&boundary[part->boundarylen],
- &part->boundary[part->boundarylen],
- extra) == 0;
- } else {
- *lastone = TRUE;
- }
- h(printf("checking lastone = %s\n", *lastone?"TRUE":"FALSE"));
- } else {
- h(printf("not enough room to check last one?\n"));
- *lastone = FALSE;
- }
- /*printf("ok, we found it! : %s \n", (*lastone)?"Last one":"More to come?");*/
- return part;
- }
- part = part->parent;
- }
- return NULL;
-}
-
-#ifdef MEMPOOL
-static void
-header_append_mempool(struct _header_scan_state *s, struct _header_scan_stack *h, char *header, int offset)
-{
- struct _header_raw *l, *n;
- char *content;
-
- content = strchr(header, ':');
- if (content) {
- register int len;
- n = mempool_alloc(h->pool, sizeof(*n));
- n->next = NULL;
-
- len = content-header;
- n->name = mempool_alloc(h->pool, len+1);
- memcpy(n->name, header, len);
- n->name[len] = 0;
-
- content++;
-
- len = s->outptr - content;
- n->value = mempool_alloc(h->pool, len+1);
- memcpy(n->value, content, len);
- n->value[len] = 0;
-
- n->offset = offset;
-
- l = (struct _header_raw *)&h->headers;
- while (l->next) {
- l = l->next;
- }
- l->next = n;
- }
-
-}
-
-#define header_raw_append_parse(a, b, c) (header_append_mempool(s, h, b, c))
-
-#endif
-
-/* Copy the string start->inptr into the header buffer (s->outbuf),
- grow if necessary
- remove trailing \r chars (\n's assumed already removed)
- and track the start offset of the header */
-/* Basically an optimised version of g_byte_array_append() */
-#define header_append(s, start, inptr) \
-{ \
- register int headerlen = inptr-start; \
- \
- if (headerlen > 0) { \
- if (headerlen >= (s->outend - s->outptr)) { \
- register char *outnew; \
- register int len = ((s->outend - s->outbuf)+headerlen)*2+1; \
- outnew = g_realloc(s->outbuf, len); \
- s->outptr = s->outptr - s->outbuf + outnew; \
- s->outbuf = outnew; \
- s->outend = outnew + len; \
- } \
- if (start[headerlen-1] == '\r') \
- headerlen--; \
- memcpy(s->outptr, start, headerlen); \
- s->outptr += headerlen; \
- } \
- if (s->header_start == -1) \
- s->header_start = (start-s->inbuf) + s->seek; \
-}
-
-static struct _header_scan_stack *
-folder_scan_header(struct _header_scan_state *s, int *lastone)
-{
- int atleast = s->atleast, newatleast;
- char *start = NULL;
- int len;
- struct _header_scan_stack *h;
- char *inend;
- register char *inptr;
-
- h(printf("scanning first bit\n"));
-
- h = g_malloc0(sizeof(*h));
-#ifdef MEMPOOL
- h->pool = mempool_new(8192, 4096);
-#endif
-
- if (s->parts)
- newatleast = s->parts->atleast;
- else
- newatleast = 1;
- *lastone = FALSE;
-
- do {
- s->atleast = newatleast;
-
- h(printf("atleast = %d\n", s->atleast));
-
- while ((len = folder_read(s))>0 && len >= s->atleast) { /* ensure we have at least enough room here */
- inptr = s->inptr;
- inend = s->inend-s->atleast+1;
-
- while (inptr<inend) {
- if (!s->midline) {
- if (folder_boundary_check(s, inptr, lastone)) {
- if ((s->outptr>s->outbuf))
- goto header_truncated; /* may not actually be truncated */
-
- goto header_done;
- }
- }
-
- start = inptr;
-
- /* goto next line/sentinal */
- while ((*inptr++)!='\n')
- ;
-
- g_assert(inptr<=s->inend+1);
-
- /* check for sentinal or real end of line */
- if (inptr > inend) {
- h(printf("not at end of line yet, going further\n"));
- /* didn't find end of line within our allowed area */
- inptr = inend;
- s->midline = TRUE;
- header_append(s, start, inptr);
- } else {
- h(printf("got line part: '%.*s'\n", inptr-1-start, start));
- /* got a line, strip and add it, process it */
- s->midline = FALSE;
- header_append(s, start, inptr-1);
-
- /* check for end of headers */
- if (s->outbuf == s->outptr)
- goto header_done;
-
- /* check for continuation/compress headers, we have atleast 1 char here to work with */
- if (inptr[0] == ' ' || inptr[0] == '\t') {
- h(printf("continuation\n"));
- /* TODO: this wont catch multiple space continuation across a read boundary, but
- that is assumed rare, and not fatal anyway */
- do
- inptr++;
- while (*inptr == ' ' || *inptr == '\t');
- inptr--;
- *inptr = ' ';
- } else {
- /* otherwise, complete header, add it */
- s->outptr[0] = 0;
-
- h(printf("header '%.20s' at %d\n", s->outbuf, s->header_start));
-
- header_raw_append_parse(&h->headers, s->outbuf, s->header_start);
- s->outptr = s->outbuf;
- s->header_start = -1;
- }
- }
- }
- s->inptr = inptr;
- }
- h(printf("end of file? read %d bytes\n", len));
- newatleast = 1;
- } while (s->atleast > 1);
-
- if ((s->outptr > s->outbuf) || s->inend > s->inptr) {
- start = s->inptr;
- inptr = s->inend;
- if (inptr > start) {
- if (inptr[-1] == '\n')
- inptr--;
- }
- goto header_truncated;
- }
-
- s->atleast = atleast;
-
- return h;
-
-header_truncated:
- header_append(s, start, inptr);
-
- s->outptr[0] = 0;
- if (s->outbuf == s->outptr)
- goto header_done;
-
- header_raw_append_parse(&h->headers, s->outbuf, s->header_start);
-
- s->outptr = s->outbuf;
-header_done:
- s->inptr = inptr;
- s->atleast = atleast;
- s->header_start = -1;
- return h;
-}
-
-static struct _header_scan_stack *
-folder_scan_content(struct _header_scan_state *s, int *lastone, char **data, int *length)
-{
- int atleast = s->atleast, newatleast;
- register char *inptr;
- char *inend;
- char *start;
- int len;
- struct _header_scan_stack *part;
- int onboundary = FALSE;
-
- c(printf("scanning content\n"));
-
- part = s->parts;
- if (part)
- newatleast = part->atleast;
- else
- newatleast = 1;
- *lastone = FALSE;
-
- c(printf("atleast = %d\n", s->atleast));
-
- do {
- s->atleast = newatleast;
-
- while ((len = folder_read(s))>0 && len >= s->atleast) { /* ensure we have at least enough room here */
- inptr = s->inptr;
- inend = s->inend-s->atleast+1;
- start = inptr;
-
- c(printf("inptr = %p, inend = %p\n", inptr, inend));
-
- while (inptr<inend) {
- if (!s->midline
- && (part = folder_boundary_check(s, inptr, lastone))) {
- onboundary = TRUE;
-
- /* since we truncate the boundary data, we need at least 1 char here spare,
- to remain in the same state */
- if ( (inptr-start) > 1)
- goto content;
-
- /* otherwise, jump to the state of the boundary we actually found */
- goto normal_exit;
- }
-
- /* goto the next line */
- while ((*inptr++)!='\n')
- ;
-
- /* check the sentinal, if we went past the atleast limit, and reset it to there */
- if (inptr > inend) {
- s->midline = TRUE;
- inptr = inend;
- } else {
- s->midline = FALSE;
- }
- }
-
- c(printf("ran out of input, dumping what i have (%d) bytes midline = %s\n",
- inptr-start, s->midline?"TRUE":"FALSE"));
- goto content;
- }
- newatleast = 1;
- } while (s->atleast > 1);
-
- c(printf("length read = %d\n", len));
-
- if (s->inend > s->inptr) {
- start = s->inptr;
- inptr = s->inend;
- goto content;
- }
-
- *length = 0;
- s->atleast = atleast;
- return NULL;
-
-content:
- part = s->parts;
-normal_exit:
- s->atleast = atleast;
- s->inptr = inptr;
-
- *data = start;
- /* if we hit a boundary, we should not include the closing \n */
- if (onboundary && (inptr-start)>0)
- *length = inptr-start-1;
- else
- *length = inptr-start;
-
- /*printf("got %scontent: '%.*s'\n", s->midline?"partial ":"", inptr-start, start);*/
-
- return part;
-}
-
-
-static void
-folder_scan_close(struct _header_scan_state *s)
-{
- g_free(s->realbuf);
- g_free(s->outbuf);
- while (s->parts)
- folder_pull_part(s);
- if (s->fd != -1)
- close(s->fd);
- if (s->stream) {
- camel_object_unref((CamelObject *)s->stream);
- }
- g_free(s);
-}
-
-
-static struct _header_scan_state *
-folder_scan_init(void)
-{
- struct _header_scan_state *s;
-
- s = g_malloc(sizeof(*s));
-
- s->fd = -1;
- s->stream = NULL;
-
- s->outbuf = g_malloc(1024);
- s->outptr = s->outbuf;
- s->outend = s->outbuf+1024;
-
- s->realbuf = g_malloc(SCAN_BUF + SCAN_HEAD*2);
- s->inbuf = s->realbuf + SCAN_HEAD;
- s->inptr = s->inbuf;
- s->inend = s->inbuf;
- s->atleast = 0;
-
- s->seek = 0; /* current character position in file of the last read block */
- s->unstep = 0;
-
- s->header_start = -1;
-
- s->start_of_from = -1;
- s->start_of_headers = -1;
-
- s->midline = FALSE;
- s->scan_from = FALSE;
- s->scan_pre_from = FALSE;
-
- s->filters = NULL;
- s->filterid = 1;
-
- s->parts = NULL;
-
- s->state = HSCAN_INITIAL;
- return s;
-}
-
-static int
-folder_scan_init_with_fd(struct _header_scan_state *s, int fd)
-{
- int len;
-
- len = read(fd, s->inbuf, SCAN_BUF);
- if (len>=0) {
- s->inend = s->inbuf+len;
- s->inptr = s->inbuf;
- s->inend[0] = '\n';
- if (s->fd != -1)
- close(s->fd);
- s->fd = fd;
- if (s->stream) {
- camel_object_unref((CamelObject *)s->stream);
- s->stream = NULL;
- }
- return 0;
- } else {
- return -1;
- }
-}
-
-static int
-folder_scan_init_with_stream(struct _header_scan_state *s, CamelStream *stream)
-{
- int len;
-
- len = camel_stream_read(stream, s->inbuf, SCAN_BUF);
- if (len >= 0) {
- s->inend = s->inbuf+len;
- s->inptr = s->inbuf;
- s->inend[0] = '\n';
- if (s->stream)
- camel_object_unref((CamelObject *)s->stream);
- s->stream = stream;
- camel_object_ref((CamelObject *)stream);
- if (s->fd != -1) {
- close(s->fd);
- s->fd = -1;
- }
- return 0;
- } else {
- return -1;
- }
-}
-
-#define USE_FROM
-
-static void
-folder_scan_step(struct _header_scan_state *s, char **databuffer, int *datalength)
-{
- struct _header_scan_stack *h, *hb;
- const char *content;
- const char *bound;
- int type;
- int state;
- struct _header_content_type *ct = NULL;
- struct _header_scan_filter *f;
- size_t presize;
-
-/* printf("\nSCAN PASS: state = %d '%s'\n", s->state, states[s->state]);*/
-
-tail_recurse:
- d({
- printf("\nSCAN STACK:\n");
- printf(" '%s' :\n", states[s->state]);
- hb = s->parts;
- while (hb) {
- printf(" '%s' : %s ", states[hb->savestate], hb->boundary);
- if (hb->content_type) {
- printf("(%s/%s)", hb->content_type->type, hb->content_type->subtype);
- } else {
- printf("(default)");
- }
- printf("\n");
- hb = hb->parent;
- }
- printf("\n");
- });
-
- switch (s->state) {
-
-#ifdef USE_FROM
- case HSCAN_INITIAL:
- if (s->scan_from) {
- h = g_malloc0(sizeof(*h));
- h->boundary = g_strdup("From ");
- h->boundarylen = strlen(h->boundary);
- h->boundarylenfinal = h->boundarylen;
- h->from_line = g_byte_array_new();
- folder_push_part(s, h);
- s->state = HSCAN_PRE_FROM;
- } else {
- s->start_of_from = -1;
- goto scan_header;
- }
-
- case HSCAN_PRE_FROM:
-
- h = s->parts;
- do {
- hb = folder_scan_content(s, &state, databuffer, datalength);
- if (s->scan_pre_from && *datalength > 0) {
- d(printf("got pre-from content %d bytes\n", *datalength));
- return;
- }
- } while (hb==h && *datalength>0);
-
- if (*datalength==0 && hb==h) {
- d(printf("found 'From '\n"));
- s->start_of_from = folder_tell(s);
- folder_scan_skip_line(s, h->from_line);
- h->savestate = HSCAN_INITIAL;
- s->state = HSCAN_FROM;
- } else {
- folder_pull_part(s);
- s->state = HSCAN_EOF;
- }
- return;
-#else
- case HSCAN_INITIAL:
- case HSCAN_PRE_FROM:
-#endif /* !USE_FROM */
-
- scan_header:
- case HSCAN_FROM:
- s->start_of_headers = folder_tell(s);
- h = folder_scan_header(s, &state);
-#ifdef USE_FROM
- if (s->scan_from)
- h->savestate = HSCAN_FROM_END;
- else
-#endif
- h->savestate = HSCAN_EOF;
-
- /* FIXME: should this check for MIME-Version: 1.0 as well? */
-
- type = HSCAN_HEADER;
- if ( (content = header_raw_find(&h->headers, "Content-Type", NULL))
- && (ct = header_content_type_decode(content))) {
- if (!strcasecmp(ct->type, "multipart")) {
- bound = header_content_type_param(ct, "boundary");
- if (bound) {
- d(printf("multipart, boundary = %s\n", bound));
- h->boundarylen = strlen(bound)+2;
- h->boundarylenfinal = h->boundarylen+2;
- h->boundary = g_malloc(h->boundarylen+3);
- sprintf(h->boundary, "--%s--", bound);
- type = HSCAN_MULTIPART;
- } else {
- header_content_type_unref(ct);
- ct = header_content_type_decode("text/plain");
-/* We can't quite do this, as it will mess up all the offsets ... */
-/* header_raw_replace(&h->headers, "Content-Type", "text/plain", offset);*/
- g_warning("Multipart with no boundary, treating as text/plain");
- }
- } else if (!strcasecmp(ct->type, "message")) {
- if (!strcasecmp(ct->subtype, "rfc822")
- || !strcasecmp(ct->subtype, "news")
- /*|| !strcasecmp(ct->subtype, "partial")*/) {
- type = HSCAN_MESSAGE;
- }
- }
- } else {
- /* make the default type for multipart/digest be message/rfc822 */
- if ((s->parts
- && header_content_type_is(s->parts->content_type, "multipart", "digest"))) {
- ct = header_content_type_decode("message/rfc822");
- type = HSCAN_MESSAGE;
- d(printf("parent was multipart/digest, autoupgrading to message/rfc822?\n"));
- /* maybe we should do this too?
- header_raw_append_parse(&h->headers, "Content-Type: message/rfc822", -1);*/
- }
- }
- h->content_type = ct;
- folder_push_part(s, h);
- s->state = type;
- return;
-
- case HSCAN_HEADER:
- s->state = HSCAN_BODY;
-
- case HSCAN_BODY:
- h = s->parts;
- *datalength = 0;
- presize = SCAN_HEAD;
- f = s->filters;
-
- do {
- hb = folder_scan_content (s, &state, databuffer, datalength);
-
- d(printf ("\n\nOriginal content: '"));
- d(fwrite(*databuffer, sizeof(char), *datalength, stdout));
- d(printf("'\n"));
-
- if (*datalength > 0) {
- while (f) {
- camel_mime_filter_filter(f->filter, *databuffer, *datalength, presize,
- databuffer, datalength, &presize);
- d(printf ("Filtered content (%s): '",
- camel_type_to_name(((CamelObject *)f->filter)->s.type)));
- d(fwrite(*databuffer, sizeof(char), *datalength, stdout));
- d(printf("'\n"));
- f = f->next;
- }
- return;
- }
- } while (hb == h && *datalength > 0);
-
- /* check for any filter completion data */
- while (f) {
- camel_mime_filter_complete(f->filter, *databuffer, *datalength, presize,
- databuffer, datalength, &presize);
- f = f->next;
- }
-
- if (*datalength > 0)
- return;
-
- s->state = HSCAN_BODY_END;
- break;
-
- case HSCAN_MULTIPART:
- h = s->parts;
- do {
- do {
- hb = folder_scan_content(s, &state, databuffer, datalength);
- if (*datalength>0) {
- /* instead of a new state, we'll just store it locally and provide
- an accessor function */
- d(printf("Multipart %s Content %p: '%.*s'\n",
- h->prestage>0?"post":"pre", h, *datalength, *databuffer));
- if (h->prestage > 0) {
- if (h->posttext == NULL)
- h->posttext = g_byte_array_new();
- g_byte_array_append(h->posttext, *databuffer, *datalength);
- } else {
- if (h->pretext == NULL)
- h->pretext = g_byte_array_new();
- g_byte_array_append(h->pretext, *databuffer, *datalength);
- }
- }
- } while (hb==h && *datalength>0);
- h->prestage++;
- if (*datalength==0 && hb==h) {
- d(printf("got boundary: %s\n", hb->boundary));
- folder_scan_skip_line(s, NULL);
- if (!state) {
- s->state = HSCAN_FROM;
- folder_scan_step(s, databuffer, datalength);
- s->parts->savestate = HSCAN_MULTIPART; /* set return state for the new head part */
- return;
- }
- } else {
- break;
- }
- } while (1);
-
- s->state = HSCAN_MULTIPART_END;
- break;
-
- case HSCAN_MESSAGE:
- s->state = HSCAN_FROM;
- folder_scan_step(s, databuffer, datalength);
- s->parts->savestate = HSCAN_MESSAGE_END;
- break;
-
- case HSCAN_FROM_END:
- case HSCAN_BODY_END:
- case HSCAN_MULTIPART_END:
- case HSCAN_MESSAGE_END:
- s->state = s->parts->savestate;
- folder_pull_part(s);
- if (s->state & HSCAN_END)
- return;
- goto tail_recurse;
-
- case HSCAN_EOF:
- return;
-
- default:
- g_warning("Invalid state in camel-mime-parser: %d", s->state);
- break;
- }
-
- return;
-}
-
-/* drops the current state back one */
-static void
-folder_scan_drop_step(struct _header_scan_state *s)
-{
- switch (s->state) {
- case HSCAN_INITIAL:
- case HSCAN_EOF:
- return;
-
- case HSCAN_FROM:
- case HSCAN_PRE_FROM:
- s->state = HSCAN_INITIAL;
- folder_pull_part(s);
- return;
-
- case HSCAN_MESSAGE:
- case HSCAN_HEADER:
- case HSCAN_MULTIPART:
-
- case HSCAN_FROM_END:
- case HSCAN_BODY_END:
- case HSCAN_MULTIPART_END:
- case HSCAN_MESSAGE_END:
-
- s->state = s->parts->savestate;
- folder_pull_part(s);
- if (s->state & HSCAN_END) {
- s->state &= ~HSCAN_END;
- }
- return;
- default:
- /* FIXME: not sure if this is entirely right */
- }
-}
-
-#ifdef STANDALONE
-int main(int argc, char **argv)
-{
- int fd;
- struct _header_scan_state *s;
- char *data;
- int len;
- int state;
- char *name = "/tmp/evmail/Inbox";
- struct _header_scan_stack *h;
- int i;
- int attach = 0;
-
- if (argc==2)
- name = argv[1];
-
- printf("opening: %s", name);
-
- for (i=1;i<argc;i++) {
- const char *encoding = NULL, *charset = NULL;
- char *attachname;
-
- name = argv[i];
- printf("opening: %s", name);
-
- fd = open(name, O_RDONLY);
- if (fd==-1) {
- perror("Cannot open mailbox");
- exit(1);
- }
- s = folder_scan_init();
- folder_scan_init_with_fd(s, fd);
- s->scan_from = FALSE;
-#if 0
- h = g_malloc0(sizeof(*h));
- h->savestate = HSCAN_EOF;
- folder_push_part(s, h);
-#endif
- while (s->state != HSCAN_EOF) {
- folder_scan_step(s, &data, &len);
- printf("\n -- PARSER STEP RETURN -- %d '%s'\n\n", s->state, states[s->state]);
- switch (s->state) {
- case HSCAN_HEADER:
- if (s->parts->content_type
- && (charset = header_content_type_param(s->parts->content_type, "charset"))) {
- if (strcasecmp(charset, "us-ascii")) {
-#if 0
- folder_push_filter_charset(s, "UTF-8", charset);
-#endif
- } else {
- charset = NULL;
- }
- } else {
- charset = NULL;
- }
-
- encoding = header_raw_find(&s->parts->headers, "Content-transfer-encoding", 0);
- printf("encoding = '%s'\n", encoding);
- if (encoding && !strncasecmp(encoding, " base64", 7)) {
- printf("adding base64 filter\n");
- attachname = g_strdup_printf("attach.%d.%d", i, attach++);
-#if 0
- folder_push_filter_save(s, attachname);
-#endif
- g_free(attachname);
-#if 0
- folder_push_filter_mime(s, 0);
-#endif
- }
- if (encoding && !strncasecmp(encoding, " quoted-printable", 17)) {
- printf("adding quoted-printable filter\n");
- attachname = g_strdup_printf("attach.%d.%d", i, attach++);
-#if 0
- folder_push_filter_save(s, attachname);
-#endif
- g_free(attachname);
-#if 0
- folder_push_filter_mime(s, 1);
-#endif
- }
-
- break;
- case HSCAN_BODY:
- printf("got body %d '%.*s'\n", len, len, data);
- break;
- case HSCAN_BODY_END:
- printf("end body %d '%.*s'\n", len, len, data);
- if (encoding && !strncasecmp(encoding, " base64", 7)) {
- printf("removing filters\n");
-#if 0
- folder_filter_pull(s);
- folder_filter_pull(s);
-#endif
- }
- if (encoding && !strncasecmp(encoding, " quoted-printable", 17)) {
- printf("removing filters\n");
-#if 0
- folder_filter_pull(s);
- folder_filter_pull(s);
-#endif
- }
- if (charset) {
-#if 0
- folder_filter_pull(s);
-#endif
- charset = NULL;
- }
- encoding = NULL;
- break;
- default:
- break;
- }
- }
- folder_scan_close(s);
- close(fd);
- }
- return 0;
-}
-
-#endif /* STANDALONE */
-
diff --git a/camel/camel-mime-parser.h b/camel/camel-mime-parser.h
deleted file mode 100644
index cef51696df..0000000000
--- a/camel/camel-mime-parser.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef _CAMEL_MIME_PARSER_H
-#define _CAMEL_MIME_PARSER_H
-
-#include <camel/camel-object.h>
-
-#include <camel/camel-mime-utils.h>
-#include <camel/camel-mime-filter.h>
-#include <camel/camel-stream.h>
-
-#define CAMEL_MIME_PARSER(obj) CAMEL_CHECK_CAST (obj, camel_mime_parser_get_type (), CamelMimeParser)
-#define CAMEL_MIME_PARSER_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mime_parser_get_type (), CamelMimeParserClass)
-#define CAMEL_IS_MIME_PARSER(obj) CAMEL_CHECK_TYPE (obj, camel_mime_parser_get_type ())
-
-typedef struct _CamelMimeParserClass CamelMimeParserClass;
-
-/* NOTE: if you add more states, you may need to bump the
- start of the END tags to 16 or 32, etc - so they are
- the same as the matching start tag, with a bit difference */
-enum _header_state {
- HSCAN_INITIAL,
- HSCAN_PRE_FROM, /* data before a 'From' line */
- HSCAN_FROM, /* got 'From' line */
- HSCAN_HEADER, /* toplevel header */
- HSCAN_BODY, /* scanning body of message */
- HSCAN_MULTIPART, /* got multipart header */
- HSCAN_MESSAGE, /* rfc822 message */
-
- HSCAN_PART, /* part of a multipart */
-
- HSCAN_END = 8, /* bit mask for 'end' flags */
-
- HSCAN_EOF = 8, /* end of file */
- HSCAN_PRE_FROM_END, /* pre from end */
- HSCAN_FROM_END, /* end of whole from bracket */
- HSCAN_HEADER_END, /* dummy value */
- HSCAN_BODY_END, /* end of message */
- HSCAN_MULTIPART_END, /* end of multipart */
- HSCAN_MESSAGE_END, /* end of message */
-
-};
-
-struct _CamelMimeParser {
- CamelObject parent;
-
- struct _CamelMimeParserPrivate *priv;
-};
-
-struct _CamelMimeParserClass {
- CamelObjectClass parent_class;
-
- void (*message)(CamelMimeParser *, void *headers);
- void (*part)(CamelMimeParser *);
- void (*content)(CamelMimeParser *);
-};
-
-guint camel_mime_parser_get_type (void);
-CamelMimeParser *camel_mime_parser_new (void);
-
-/* using an fd will be a little faster, but not much (over a simple stream) */
-int camel_mime_parser_init_with_fd(CamelMimeParser *, int fd);
-int camel_mime_parser_init_with_stream(CamelMimeParser *m, CamelStream *stream);
-
-/* get the stream or fd back of the parser */
-CamelStream *camel_mime_parser_stream(CamelMimeParser *m);
-int camel_mime_parser_fd(CamelMimeParser *m);
-
-/* scan 'From' separators? */
-void camel_mime_parser_scan_from(CamelMimeParser *, int);
-/* Do we want to know about the pre-from data? */
-void camel_mime_parser_scan_pre_from(CamelMimeParser *, int);
-
-/* what headers to save, MUST include ^Content-Type: */
-int camel_mime_parser_set_header_regex(CamelMimeParser *m, char *matchstr);
-
-/* normal interface */
-enum _header_state camel_mime_parser_step(CamelMimeParser *, char **, int *);
-void camel_mime_parser_unstep(CamelMimeParser *);
-void camel_mime_parser_drop_step(CamelMimeParser *m);
-enum _header_state camel_mime_parser_state(CamelMimeParser *);
-
-/* read through the parser */
-int camel_mime_parser_read(CamelMimeParser *m, const char **databuffer, int len);
-
-/* get content type for the current part/header */
-struct _header_content_type *camel_mime_parser_content_type(CamelMimeParser *);
-
-/* get/change raw header by name */
-const char *camel_mime_parser_header(CamelMimeParser *, const char *, int *offset);
-
-/* get all raw headers. READ ONLY! */
-struct _header_raw *camel_mime_parser_headers_raw(CamelMimeParser *);
-
-/* get multipart pre/postface */
-const char *camel_mime_parser_preface(CamelMimeParser *m);
-const char *camel_mime_parser_postface(CamelMimeParser *m);
-
-/* return the from line content */
-const char *camel_mime_parser_from_line(CamelMimeParser *m);
-
-/* add a processing filter for body contents */
-int camel_mime_parser_filter_add(CamelMimeParser *, CamelMimeFilter *);
-void camel_mime_parser_filter_remove(CamelMimeParser *, int);
-
-/* these should be used with caution, because the state will not
- track the seeked position */
-/* FIXME: something to bootstrap the state? */
-off_t camel_mime_parser_tell(CamelMimeParser *);
-off_t camel_mime_parser_seek(CamelMimeParser *, off_t, int);
-
-off_t camel_mime_parser_tell_start_headers(CamelMimeParser *);
-off_t camel_mime_parser_tell_start_from(CamelMimeParser *);
-
-#endif /* ! _CAMEL_MIME_PARSER_H */
diff --git a/camel/camel-mime-part-utils.c b/camel/camel-mime-part-utils.c
deleted file mode 100644
index ad9c54f663..0000000000
--- a/camel/camel-mime-part-utils.c
+++ /dev/null
@@ -1,247 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; fill-column: 160 -*- */
-/* camel-mime-part-utils : Utility for mime parsing and so on
- *
- * Authors: Bertrand Guiheneuf <bertrand@helixcode.com>
- * Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include "string-utils.h"
-#include "camel-mime-part-utils.h"
-#include "camel-mime-message.h"
-#include "camel-multipart.h"
-#include "camel-seekable-substream.h"
-#include "camel-stream-filter.h"
-#include "camel-stream-mem.h"
-#include "camel-mime-filter-basic.h"
-#include "camel-mime-filter-charset.h"
-#include "camel-mime-filter-crlf.h"
-
-#define d(x) /*(printf("%s(%d): ", __FILE__, __LINE__),(x))*/
-
-/* simple data wrapper */
-static void
-simple_data_wrapper_construct_from_parser(CamelDataWrapper *dw, CamelMimeParser *mp)
-{
- GByteArray *buffer;
- char *buf;
- int len;
- off_t start = 0, end;
- CamelMimeFilter *fdec = NULL, *fcrlf = NULL, *fch = NULL;
- struct _header_content_type *ct;
- int decid=-1, crlfid=-1, chrid=-1;
- CamelStream *source;
- CamelSeekableStream *seekable_source = NULL;
- char *encoding;
-
- d(printf("constructing data-wrapper\n"));
-
- /* Ok, try and be smart. If we're storing a small message (typical) convert it,
- and store it in memory as we parse it ... if not, throw away the conversion
- and scan till the end ... */
-
- /* if we can't seek, dont have a stream/etc, then we must cache it */
- source = camel_mime_parser_stream(mp);
- if (source) {
- camel_object_ref((CamelObject *)source);
- if (CAMEL_IS_SEEKABLE_STREAM (source)) {
- seekable_source = CAMEL_SEEKABLE_STREAM (source);
- }
- }
-
- /* first, work out conversion, if any, required, we dont care about what we dont know about */
- encoding = header_content_encoding_decode(camel_mime_parser_header(mp, "content-transfer-encoding", NULL));
- if (encoding) {
- if (!strcasecmp(encoding, "base64")) {
- d(printf("Adding base64 decoder ...\n"));
- fdec = (CamelMimeFilter *)camel_mime_filter_basic_new_type(CAMEL_MIME_FILTER_BASIC_BASE64_DEC);
- decid = camel_mime_parser_filter_add(mp, fdec);
- } else if (!strcasecmp(encoding, "quoted-printable")) {
- d(printf("Adding quoted-printable decoder ...\n"));
- fdec = (CamelMimeFilter *)camel_mime_filter_basic_new_type(CAMEL_MIME_FILTER_BASIC_QP_DEC);
- decid = camel_mime_parser_filter_add(mp, fdec);
- }
- g_free(encoding);
- }
-
- /* If we're doing text, we also need to do CRLF->LF and may have to convert it to UTF8 as well. */
- ct = camel_mime_parser_content_type(mp);
- if (header_content_type_is(ct, "text", "*")) {
- const char *charset = header_content_type_param(ct, "charset");
-
- if (fdec) {
- d(printf("Adding CRLF conversion filter\n"));
- fcrlf = (CamelMimeFilter *)camel_mime_filter_crlf_new(CAMEL_MIME_FILTER_CRLF_DECODE,
- CAMEL_MIME_FILTER_CRLF_MODE_CRLF_ONLY);
- crlfid = camel_mime_parser_filter_add(mp, fcrlf);
- }
-
- if (charset!=NULL
- && !(strcasecmp(charset, "us-ascii")==0
- || strcasecmp(charset, "utf-8")==0)) {
- d(printf("Adding conversion filter from %s to UTF-8\n", charset));
- fch = (CamelMimeFilter *)camel_mime_filter_charset_new_convert(charset, "UTF-8");
- if (fch) {
- chrid = camel_mime_parser_filter_add(mp, (CamelMimeFilter *)fch);
- } else {
- g_warning("Cannot convert '%s' to 'UTF-8', message display may be corrupt", charset);
- }
- }
-
- }
-
- buffer = g_byte_array_new();
-
- if (seekable_source /* !cache */) {
- start = camel_mime_parser_tell(mp) + seekable_source->bound_start;
- }
- while ( camel_mime_parser_step(mp, &buf, &len) != HSCAN_BODY_END ) {
- d(printf("appending o/p data: %d: %.*s\n", len, len, buf));
- if (buffer) {
- if (buffer->len > 20480 && seekable_source) {
- /* is this a 'big' message? Yes? We dont want to convert it all then.*/
- camel_mime_parser_filter_remove(mp, decid);
- camel_mime_parser_filter_remove(mp, chrid);
- decid = -1;
- chrid = -1;
- g_byte_array_free(buffer, TRUE);
- buffer = NULL;
- } else {
- g_byte_array_append(buffer, buf, len);
- }
- }
- }
-
- if (buffer) {
- CamelStream *mem;
-
- d(printf("Small message part, kept in memory!\n"));
-
- mem = camel_stream_mem_new_with_byte_array(buffer);
- camel_data_wrapper_construct_from_stream (dw, mem);
- camel_object_unref ((CamelObject *)mem);
- } else {
- CamelStream *sub;
- CamelStreamFilter *filter;
-
- d(printf("Big message part, left on disk ...\n"));
-
- end = camel_mime_parser_tell(mp) + seekable_source->bound_start;
- sub = camel_seekable_substream_new_with_seekable_stream_and_bounds (seekable_source, start, end);
- if (fdec || fch) {
- filter = camel_stream_filter_new_with_stream(sub);
- if (fdec) {
- camel_mime_filter_reset(fdec);
- camel_stream_filter_add(filter, fdec);
- }
- if (fcrlf) {
- camel_mime_filter_reset(fcrlf);
- camel_stream_filter_add(filter, fcrlf);
- }
- if (fch) {
- camel_mime_filter_reset(fch);
- camel_stream_filter_add(filter, fch);
- }
- camel_data_wrapper_construct_from_stream (dw, (CamelStream *)filter);
- camel_object_unref ((CamelObject *)filter);
- } else {
- camel_data_wrapper_construct_from_stream (dw, sub);
- }
- camel_object_unref ((CamelObject *)sub);
- }
-
- camel_mime_parser_filter_remove(mp, decid);
- camel_mime_parser_filter_remove(mp, crlfid);
- camel_mime_parser_filter_remove(mp, chrid);
-
- if (fdec)
- camel_object_unref((CamelObject *)fdec);
- if (fcrlf)
- camel_object_unref((CamelObject *)fcrlf);
- if (fch)
- camel_object_unref((CamelObject *)fch);
- if (source)
- camel_object_unref((CamelObject *)source);
-
-}
-
-/* This replaces the data wrapper repository ... and/or could be replaced by it? */
-void
-camel_mime_part_construct_content_from_parser(CamelMimePart *dw, CamelMimeParser *mp)
-{
- CamelDataWrapper *content = NULL;
- char *buf;
- int len;
-
- switch (camel_mime_parser_state(mp)) {
- case HSCAN_HEADER:
- d(printf("Creating body part\n"));
- content = camel_data_wrapper_new();
- simple_data_wrapper_construct_from_parser(content, mp);
- break;
- case HSCAN_MESSAGE:
- d(printf("Creating message part\n"));
- content = (CamelDataWrapper *)camel_mime_message_new();
- camel_mime_part_construct_from_parser((CamelMimePart *)content, mp);
- break;
- case HSCAN_MULTIPART: {
- CamelDataWrapper *bodypart;
-
-#ifndef NO_WARNINGS
-#warning This should use a camel-mime-multipart
-#endif
- d(printf("Creating multi-part\n"));
- content = (CamelDataWrapper *)camel_multipart_new();
-
- /* FIXME: use the real boundary? */
- camel_multipart_set_boundary((CamelMultipart *)content, NULL);
- while (camel_mime_parser_step(mp, &buf, &len) != HSCAN_MULTIPART_END) {
- camel_mime_parser_unstep(mp);
- bodypart = (CamelDataWrapper *)camel_mime_part_new();
- camel_mime_part_construct_from_parser((CamelMimePart *)bodypart, mp);
- camel_multipart_add_part((CamelMultipart *)content, (CamelMimePart *)bodypart);
- camel_object_unref ((CamelObject *)bodypart);
- }
-
- /* these are only return valid data in the MULTIPART_END state */
- camel_multipart_set_preface((CamelMultipart *)content, camel_mime_parser_preface(mp));
- camel_multipart_set_postface((CamelMultipart *)content, camel_mime_parser_postface(mp));
-
- d(printf("Created multi-part\n"));
- break; }
- default:
- g_warning("Invalid state encountered???: %d", camel_mime_parser_state(mp));
- }
- if (content) {
-#ifndef NO_WARNINGS
-#warning there just has got to be a better way ... to transfer the mime-type to the datawrapper
-#endif
- /* would you believe you have to set this BEFORE you set the content object??? oh my god !!!! */
- camel_data_wrapper_set_mime_type_field (content,
- camel_mime_part_get_content_type ((CamelMimePart *)dw));
- camel_medium_set_content_object((CamelMedium *)dw, content);
- camel_object_unref ((CamelObject *)content);
- }
-}
-
diff --git a/camel/camel-mime-part-utils.h b/camel/camel-mime-part-utils.h
deleted file mode 100644
index 1e1c3655aa..0000000000
--- a/camel/camel-mime-part-utils.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-mime-part-utils : Utility for mime parsing and so on */
-
-
-/*
- *
- * Author :
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_MIME_PART_UTILS_H
-#define CAMEL_MIME_PART_UTILS_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <camel/camel-mime-part.h>
-
-void camel_mime_part_construct_content_from_parser(CamelMimePart *, CamelMimeParser *mp);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_MIME_PART_UTILS_H */
-
diff --git a/camel/camel-mime-part.c b/camel/camel-mime-part.c
deleted file mode 100644
index bc06f8147f..0000000000
--- a/camel/camel-mime-part.c
+++ /dev/null
@@ -1,811 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; fill-column: 160 -*- */
-/* camelMimePart.c : Abstract class for a mime_part */
-
-/*
- * Authors: Bertrand Guiheneuf <bertrand@helixcode.com>
- * Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include <stdio.h>
-#include <ctype.h>
-#include "hash-table-utils.h"
-#include "camel-mime-parser.h"
-#include "camel-stream-mem.h"
-#include "camel-stream-filter.h"
-#include "camel-mime-filter-basic.h"
-#include "camel-mime-filter-crlf.h"
-#include "camel-mime-filter-charset.h"
-#include "camel-mime-part.h"
-#include "camel-mime-part-utils.h"
-#include "camel-exception.h"
-#include "string-utils.h"
-
-#define d(x) /*(printf("%s(%d): ", __FILE__, __LINE__),(x))*/
-
-typedef enum {
- HEADER_UNKNOWN,
- HEADER_DESCRIPTION,
- HEADER_DISPOSITION,
- HEADER_CONTENT_ID,
- HEADER_ENCODING,
- HEADER_CONTENT_MD5,
- HEADER_CONTENT_LOCATION,
- HEADER_CONTENT_LANGUAGES,
- HEADER_CONTENT_TYPE
-} CamelHeaderType;
-
-
-static GHashTable *header_name_table;
-static GHashTable *header_formatted_table;
-
-static CamelMediumClass *parent_class=NULL;
-
-/* Returns the class for a CamelMimePart */
-#define CMP_CLASS(so) CAMEL_MIME_PART_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-#define CDW_CLASS(so) CAMEL_DATA_WRAPPER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-#define CMD_CLASS(so) CAMEL_MEDIUM_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-/* from CamelDataWrapper */
-static int write_to_stream (CamelDataWrapper *data_wrapper, CamelStream *stream);
-static int construct_from_stream (CamelDataWrapper *dw, CamelStream *s);
-
-/* from CamelMedia */
-static void add_header (CamelMedium *medium, const char *header_name, const void *header_value);
-static void set_header (CamelMedium *medium, const char *header_name, const void *header_value);
-static void remove_header (CamelMedium *medium, const char *header_name);
-static const void *get_header (CamelMedium *medium, const char *header_name);
-static GArray *get_headers (CamelMedium *medium);
-static void free_headers (CamelMedium *medium, GArray *headers);
-
-static void set_content_object (CamelMedium *medium, CamelDataWrapper *content);
-
-/* from camel mime parser */
-static int construct_from_parser (CamelMimePart *, CamelMimeParser *);
-
-/* forward references */
-static void set_disposition (CamelMimePart *mime_part, const gchar *disposition);
-
-
-/* loads in a hash table the set of header names we */
-/* recognize and associate them with a unique enum */
-/* identifier (see CamelHeaderType above) */
-static void
-init_header_name_table()
-{
- header_name_table = g_hash_table_new (g_strcase_hash, g_strcase_equal);
- g_hash_table_insert (header_name_table, "Content-Description", (gpointer)HEADER_DESCRIPTION);
- g_hash_table_insert (header_name_table, "Content-Disposition", (gpointer)HEADER_DISPOSITION);
- g_hash_table_insert (header_name_table, "Content-id", (gpointer)HEADER_CONTENT_ID);
- g_hash_table_insert (header_name_table, "Content-Transfer-Encoding", (gpointer)HEADER_ENCODING);
- g_hash_table_insert (header_name_table, "Content-MD5", (gpointer)HEADER_CONTENT_MD5);
- g_hash_table_insert (header_name_table, "Content-Location", (gpointer)HEADER_CONTENT_LOCATION);
- g_hash_table_insert (header_name_table, "Content-Type", (gpointer)HEADER_CONTENT_TYPE);
-
- header_formatted_table = g_hash_table_new(g_strcase_hash, g_strcase_equal);
- g_hash_table_insert(header_formatted_table, "Content-Type", (void *)1);
- g_hash_table_insert(header_formatted_table, "Content-Disposition", (void *)1);
- g_hash_table_insert(header_formatted_table, "To", (void *)1);
- g_hash_table_insert(header_formatted_table, "From", (void *)1);
- g_hash_table_insert(header_formatted_table, "Cc", (void *)1);
- g_hash_table_insert(header_formatted_table, "Bcc", (void *)1);
- g_hash_table_insert(header_formatted_table, "Message-ID", (void *)1);
-}
-
-static void
-camel_mime_part_class_init (CamelMimePartClass *camel_mime_part_class)
-{
- CamelMediumClass *camel_medium_class = CAMEL_MEDIUM_CLASS (camel_mime_part_class);
- CamelDataWrapperClass *camel_data_wrapper_class = CAMEL_DATA_WRAPPER_CLASS (camel_mime_part_class);
-
- parent_class = CAMEL_MEDIUM_CLASS (camel_type_get_global_classfuncs (camel_medium_get_type ()));
- init_header_name_table();
-
- camel_mime_part_class->construct_from_parser = construct_from_parser;
-
- /* virtual method overload */
- camel_medium_class->add_header = add_header;
- camel_medium_class->set_header = set_header;
- camel_medium_class->get_header = get_header;
- camel_medium_class->remove_header = remove_header;
- camel_medium_class->get_headers = get_headers;
- camel_medium_class->free_headers = free_headers;
- camel_medium_class->set_content_object = set_content_object;
-
- camel_data_wrapper_class->write_to_stream = write_to_stream;
- camel_data_wrapper_class->construct_from_stream= construct_from_stream;
-}
-
-static void
-camel_mime_part_init (gpointer object, gpointer klass)
-{
- CamelMimePart *camel_mime_part = CAMEL_MIME_PART (object);
-
- camel_mime_part->content_type = header_content_type_new ("text", "plain");
- camel_mime_part->description = NULL;
- camel_mime_part->disposition = NULL;
- camel_mime_part->content_id = NULL;
- camel_mime_part->content_MD5 = NULL;
- camel_mime_part->content_location = NULL;
- camel_mime_part->content_languages = NULL;
- camel_mime_part->encoding = CAMEL_MIME_PART_ENCODING_DEFAULT;
-}
-
-
-static void
-camel_mime_part_finalize (CamelObject *object)
-{
- CamelMimePart *mime_part = CAMEL_MIME_PART (object);
-
- g_free (mime_part->description);
- g_free (mime_part->content_id);
- g_free (mime_part->content_MD5);
- g_free (mime_part->content_location);
- string_list_free (mime_part->content_languages);
- header_disposition_unref(mime_part->disposition);
-
- if (mime_part->content_type)
- header_content_type_unref (mime_part->content_type);
-
- header_raw_clear(&mime_part->headers);
-}
-
-
-
-CamelType
-camel_mime_part_get_type (void)
-{
- static CamelType camel_mime_part_type = CAMEL_INVALID_TYPE;
-
- if (camel_mime_part_type == CAMEL_INVALID_TYPE) {
- camel_mime_part_type = camel_type_register (CAMEL_MEDIUM_TYPE, "CamelMimePart",
- sizeof (CamelMimePart),
- sizeof (CamelMimePartClass),
- (CamelObjectClassInitFunc) camel_mime_part_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mime_part_init,
- (CamelObjectFinalizeFunc) camel_mime_part_finalize);
- }
-
- return camel_mime_part_type;
-}
-
-
-/* **** */
-
-static gboolean
-process_header(CamelMedium *medium, const char *header_name, const char *header_value)
-{
- CamelMimePart *mime_part = CAMEL_MIME_PART (medium);
- CamelHeaderType header_type;
- char *text;
-
- /* Try to parse the header pair. If it corresponds to something */
- /* known, the job is done in the parsing routine. If not, */
- /* we simply add the header in a raw fashion */
-
- header_type = (CamelHeaderType) g_hash_table_lookup (header_name_table, header_name);
- switch (header_type) {
- case HEADER_DESCRIPTION: /* raw header->utf8 conversion */
- text = header_decode_string(header_value);
- g_free(mime_part->description);
- mime_part->description = g_strstrip (text);
- break;
- case HEADER_DISPOSITION:
- set_disposition(mime_part, header_value);
- break;
- case HEADER_CONTENT_ID:
- text = header_msgid_decode(header_value);
- g_free(mime_part->content_id);
- mime_part->content_id = text;
- break;
- case HEADER_ENCODING:
- text = header_token_decode(header_value);
- mime_part->encoding = camel_mime_part_encoding_from_string (text);
- g_free(text);
- break;
- case HEADER_CONTENT_MD5:
- g_free(mime_part->content_MD5);
- mime_part->content_MD5 = g_strdup(header_value);
- break;
- case HEADER_CONTENT_LOCATION:
- g_free(mime_part->content_location);
- mime_part->content_location = header_location_decode(header_value);
- break;
- case HEADER_CONTENT_TYPE:
- if (mime_part->content_type)
- header_content_type_unref (mime_part->content_type);
- mime_part->content_type = header_content_type_decode (header_value);
- break;
- default:
- return FALSE;
- }
- return TRUE;
-}
-
-static void
-set_header (CamelMedium *medium, const char *header_name, const void *header_value)
-{
- CamelMimePart *part = CAMEL_MIME_PART (medium);
-
- process_header(medium, header_name, header_value);
- header_raw_replace(&part->headers, header_name, header_value, -1);
-}
-
-static void
-add_header (CamelMedium *medium, const char *header_name, const void *header_value)
-{
- CamelMimePart *part = CAMEL_MIME_PART (medium);
-
- /* Try to parse the header pair. If it corresponds to something */
- /* known, the job is done in the parsing routine. If not, */
- /* we simply add the header in a raw fashion */
-
- /* If it was one of the headers we handled, it must be unique, set it instead of add */
- if (process_header(medium, header_name, header_value))
- header_raw_replace(&part->headers, header_name, header_value, -1);
- else
- header_raw_append(&part->headers, header_name, header_value, -1);
-}
-
-static void
-remove_header (CamelMedium *medium, const char *header_name)
-{
- CamelMimePart *part = (CamelMimePart *)medium;
-
- process_header(medium, header_name, NULL);
- header_raw_remove(&part->headers, header_name);
-}
-
-static const void *
-get_header (CamelMedium *medium, const char *header_name)
-{
- CamelMimePart *part = (CamelMimePart *)medium;
-
- return header_raw_find(&part->headers, header_name, NULL);
-}
-
-static GArray *
-get_headers (CamelMedium *medium)
-{
- CamelMimePart *part = (CamelMimePart *)medium;
- GArray *headers;
- CamelMediumHeader header;
- struct _header_raw *h;
-
- headers = g_array_new (FALSE, FALSE, sizeof (CamelMediumHeader));
- for (h = part->headers; h; h = h->next) {
- header.name = h->name;
- header.value = header_decode_string (h->value);
- g_array_append_val (headers, header);
- }
-
- return headers;
-}
-
-static void
-free_headers (CamelMedium *medium, GArray *gheaders)
-{
- CamelMediumHeader *headers = (CamelMediumHeader *)gheaders->data;
- int i;
-
- for (i = 0; i < gheaders->len; i++)
- g_free ((gpointer)headers[i].value);
- g_array_free (gheaders, TRUE);
-}
-
-/* **** Content-Description */
-void
-camel_mime_part_set_description (CamelMimePart *mime_part, const gchar *description)
-{
- char *text = header_encode_string (description);
-
- camel_medium_set_header (CAMEL_MEDIUM (mime_part),
- "Content-Description", text);
- g_free (text);
-}
-
-const gchar *
-camel_mime_part_get_description (CamelMimePart *mime_part)
-{
- return mime_part->description;
-}
-
-/* **** Content-Disposition */
-
-static void
-set_disposition (CamelMimePart *mime_part, const gchar *disposition)
-{
- header_disposition_unref(mime_part->disposition);
- if (disposition)
- mime_part->disposition = header_disposition_decode(disposition);
- else
- mime_part->disposition = NULL;
-}
-
-
-void
-camel_mime_part_set_disposition (CamelMimePart *mime_part, const gchar *disposition)
-{
- char *text;
-
- /* we poke in a new disposition (so we dont lose 'filename', etc) */
- if (mime_part->disposition == NULL) {
- set_disposition(mime_part, disposition);
- }
- if (mime_part->disposition != NULL) {
- g_free(mime_part->disposition->disposition);
- mime_part->disposition->disposition = g_strdup(disposition);
- }
- text = header_disposition_format(mime_part->disposition);
-
- camel_medium_set_header (CAMEL_MEDIUM (mime_part),
- "Content-Disposition", text);
-
- g_free(text);
-}
-
-const gchar *
-camel_mime_part_get_disposition (CamelMimePart *mime_part)
-{
- if (mime_part->disposition)
- return (mime_part->disposition)->disposition;
- else
- return NULL;
-}
-
-
-/* **** Content-Disposition: filename="xxx" */
-
-void
-camel_mime_part_set_filename (CamelMimePart *mime_part, const gchar *filename)
-{
- char *str;
- if (mime_part->disposition == NULL)
- mime_part->disposition = header_disposition_decode("attachment");
-
- header_set_param(&mime_part->disposition->params, "filename", filename);
- str = header_disposition_format(mime_part->disposition);
-
- camel_medium_set_header (CAMEL_MEDIUM (mime_part),
- "Content-Disposition", str);
- g_free(str);
-}
-
-const gchar *
-camel_mime_part_get_filename (CamelMimePart *mime_part)
-{
- if (mime_part->disposition) {
- const gchar *name = header_param (mime_part->disposition->params, "filename");
- if (name)
- return name;
- }
-
- return header_content_type_param (mime_part->content_type, "name");
-}
-
-
-/* **** Content-ID: */
-
-void
-camel_mime_part_set_content_id (CamelMimePart *mime_part, const char *contentid)
-{
- char *cid, *id;
-
- if (contentid)
- id = g_strstrip (g_strdup (contentid));
- else
- id = header_msgid_generate ();
-
- cid = g_strdup_printf ("<%s>", id);
- g_free (id);
- camel_medium_set_header (CAMEL_MEDIUM (mime_part), "Content-ID", cid);
- g_free (cid);
-}
-
-const gchar *
-camel_mime_part_get_content_id (CamelMimePart *mime_part)
-{
- return mime_part->content_id;
-}
-
-/* **** Content-MD5: */
-
-void
-camel_mime_part_set_content_MD5 (CamelMimePart *mime_part, const char *md5)
-{
- camel_medium_set_header (CAMEL_MEDIUM (mime_part), "Content-MD5", md5);
-}
-
-const gchar *
-camel_mime_part_get_content_MD5 (CamelMimePart *mime_part)
-{
- return mime_part->content_MD5;
-}
-
-/* **** Content-MD5: */
-
-void
-camel_mime_part_set_content_location (CamelMimePart *mime_part, const char *location)
-{
- camel_medium_set_header (CAMEL_MEDIUM (mime_part), "Content-Location", location);
-}
-
-const gchar *
-camel_mime_part_get_content_location (CamelMimePart *mime_part)
-{
- return mime_part->content_location;
-}
-
-/* **** Content-Transfer-Encoding: */
-
-void
-camel_mime_part_set_encoding (CamelMimePart *mime_part,
- CamelMimePartEncodingType encoding)
-{
- const char *text;
-
- text = camel_mime_part_encoding_to_string (encoding);
- camel_medium_set_header (CAMEL_MEDIUM (mime_part),
- "Content-Transfer-Encoding", text);
-}
-
-const CamelMimePartEncodingType
-camel_mime_part_get_encoding (CamelMimePart *mime_part)
-{
- return mime_part->encoding;
-}
-
-/* FIXME: do something with this stuff ... */
-
-void
-camel_mime_part_set_content_languages (CamelMimePart *mime_part, GList *content_languages)
-{
- if (mime_part->content_languages) string_list_free (mime_part->content_languages);
- mime_part->content_languages = content_languages;
-
- /* FIXME: translate to a header and set it */
-}
-
-const GList *
-camel_mime_part_get_content_languages (CamelMimePart *mime_part)
-{
- return mime_part->content_languages;
-}
-
-
-/* **** */
-
-/* **** Content-Type: */
-
-void
-camel_mime_part_set_content_type (CamelMimePart *mime_part, gchar *content_type)
-{
- camel_medium_set_header (CAMEL_MEDIUM (mime_part),
- "Content-Type", content_type);
-}
-
-CamelContentType *
-camel_mime_part_get_content_type (CamelMimePart *mime_part)
-{
- return mime_part->content_type;
-}
-
-/*********/
-
-
-
-static void
-set_content_object (CamelMedium *medium, CamelDataWrapper *content)
-{
- CamelMimePart *mime_part = CAMEL_MIME_PART (medium);
- CamelContentType *object_content_type;
-
- parent_class->set_content_object (medium, content);
-
- object_content_type = camel_data_wrapper_get_mime_type_field (content);
- if (mime_part->content_type != object_content_type) {
- char *txt;
-
- txt = header_content_type_format (object_content_type);
- camel_medium_set_header (CAMEL_MEDIUM (mime_part), "Content-Type", txt);
- g_free(txt);
- }
-}
-
-/**********************************************************************/
-
-static int
-write_to_stream(CamelDataWrapper *data_wrapper, CamelStream *stream)
-{
- CamelMimePart *mp = CAMEL_MIME_PART(data_wrapper);
- CamelMedium *medium = CAMEL_MEDIUM(data_wrapper);
- CamelDataWrapper *content;
- int total = 0;
- int count;
-
- d(printf("mime_part::write_to_stream\n"));
-
- /* FIXME: something needs to be done about this ... */
- /* FIXME: need to count these bytes too */
-#ifndef NO_WARNINGS
-#warning content-languages should be stored as a header
-#endif
-
- if (mp->headers) {
- struct _header_raw *h = mp->headers;
- char *val;
-
- /* fold/write the headers. But dont fold headers that are already formatted
- (e.g. ones with parameter-lists, that we know about, and have created) */
- while (h) {
- val = h->value;
- if (val == NULL) {
- g_warning("h->value is NULL here for %s", h->name);
- count = 0;
- } else if (g_hash_table_lookup(header_formatted_table, h->name) == NULL) {
- val = header_fold(val, strlen(h->name));
- count = camel_stream_printf(stream, "%s%s%s\n", h->name, isspace(val[0]) ? ":" : ": ", val);
- g_free(val);
- } else {
- count = camel_stream_printf(stream, "%s%s%s\n", h->name, isspace(val[0]) ? ":" : ": ", val);
- }
- if (count == -1)
- return -1;
- total += count;
- h = h->next;
- }
- }
-
- count = camel_stream_write(stream, "\n", 1);
- if (count == -1)
- return -1;
- total += count;
-
- content = camel_medium_get_content_object(medium);
- if (content) {
- /* I dont really like this here, but i dont know where else it might go ... */
-#define CAN_THIS_GO_ELSEWHERE
-#ifdef CAN_THIS_GO_ELSEWHERE
- CamelMimeFilter *filter = NULL;
- CamelStreamFilter *filter_stream = NULL;
- CamelMimeFilter *charenc = NULL;
- const char *charset;
-
- switch(mp->encoding) {
- case CAMEL_MIME_PART_ENCODING_BASE64:
- filter = (CamelMimeFilter *)camel_mime_filter_basic_new_type(CAMEL_MIME_FILTER_BASIC_BASE64_ENC);
- break;
- case CAMEL_MIME_PART_ENCODING_QUOTEDPRINTABLE:
- filter = (CamelMimeFilter *)camel_mime_filter_basic_new_type(CAMEL_MIME_FILTER_BASIC_QP_ENC);
- break;
- default:
- break;
- }
-
- if (header_content_type_is(mp->content_type, "text", "*")) {
- charset = header_content_type_param(mp->content_type, "charset");
- if (!(charset == NULL || !strcasecmp(charset, "us-ascii") || !strcasecmp(charset, "utf-8"))) {
- charenc = (CamelMimeFilter *)camel_mime_filter_charset_new_convert("utf-8", charset);
- }
- }
-
- if (filter || charenc) {
- filter_stream = camel_stream_filter_new_with_stream(stream);
-
- /* if we have a character encoder, add that always */
- if (charenc) {
- camel_stream_filter_add(filter_stream, charenc);
- camel_object_unref((CamelObject *)charenc);
- }
-
- /* we only re-do crlf on encoded blocks */
- if (filter && header_content_type_is(mp->content_type, "text", "*")) {
- CamelMimeFilter *crlf = camel_mime_filter_crlf_new(CAMEL_MIME_FILTER_CRLF_ENCODE,
- CAMEL_MIME_FILTER_CRLF_MODE_CRLF_ONLY);
-
- camel_stream_filter_add(filter_stream, crlf);
- camel_object_unref((CamelObject *)crlf);
-
- }
-
- if (filter) {
- camel_stream_filter_add(filter_stream, filter);
- camel_object_unref((CamelObject *)filter);
- }
-
- stream = (CamelStream *)filter_stream;
- }
-
-#endif
- count = camel_data_wrapper_write_to_stream(content, stream);
- if (filter_stream) {
- camel_stream_flush((CamelStream *)filter_stream);
- camel_object_unref((CamelObject *)filter_stream);
- }
- if (count == -1)
- return -1;
- total += count;
- } else {
- g_warning("No content for medium, nothing to write");
- }
- return total;
-}
-
-/* mime_part */
-static int
-construct_from_parser(CamelMimePart *dw, CamelMimeParser *mp)
-{
- struct _header_raw *headers;
- char *buf;
- int len;
-
- d(printf("mime_part::construct_from_parser()\n"));
-
- switch (camel_mime_parser_step(mp, &buf, &len)) {
- case HSCAN_MESSAGE:
- /* set the default type of a message always */
- if (dw->content_type)
- header_content_type_unref (dw->content_type);
- dw->content_type = header_content_type_decode ("message/rfc822");
- case HSCAN_HEADER:
- case HSCAN_MULTIPART:
- /* we have the headers, build them into 'us' */
- headers = camel_mime_parser_headers_raw(mp);
- while (headers) {
- camel_medium_add_header((CamelMedium *)dw, headers->name, headers->value);
- headers = headers->next;
- }
- camel_mime_part_construct_content_from_parser(dw, mp);
- break;
- default:
- g_warning("Invalid state encountered???: %d", camel_mime_parser_state(mp));
- }
-
- d(printf("mime_part::construct_from_parser() leaving\n"));
-#ifndef NO_WARNINGS
-#warning "Need to work out how to detect a (fatally) bad parse in the parser"
-#endif
- return 0;
-}
-
-/**
- * camel_mime_part_construct_from_parser:
- * @mime_part:
- * @mp:
- *
- *
- *
- * Return value:
- **/
-int
-camel_mime_part_construct_from_parser(CamelMimePart *mime_part, CamelMimeParser *mp)
-{
- return CMP_CLASS (mime_part)->construct_from_parser (mime_part, mp);
-}
-
-static int
-construct_from_stream(CamelDataWrapper *dw, CamelStream *s)
-{
- CamelMimeParser *mp;
- int ret;
-
- d(printf("mime_part::construct_from_stream()\n"));
-
- mp = camel_mime_parser_new();
- if (camel_mime_parser_init_with_stream(mp, s) == -1) {
- g_warning("Cannot create parser for stream");
- ret = -1;
- } else {
- ret = camel_mime_part_construct_from_parser((CamelMimePart *)dw, mp);
- }
- camel_object_unref((CamelObject *)mp);
- return ret;
-}
-
-/* this must be kept in sync with the header */
-static const char *encodings[] = {
- "",
- "7bit",
- "8bit",
- "base64",
- "quoted-printable",
- "binary"
-};
-
-const char *
-camel_mime_part_encoding_to_string (CamelMimePartEncodingType encoding)
-{
- if (encoding >= sizeof(encodings)/sizeof(encodings[0]))
- encoding = 0;
-
- return encodings[encoding];
-}
-
-/* FIXME I am not sure this is the correct way to do this. */
-CamelMimePartEncodingType
-camel_mime_part_encoding_from_string (const gchar *string)
-{
- int i;
-
- if (string != NULL) {
- for (i=0;i<sizeof(encodings)/sizeof(encodings[0]);i++)
- if (!strcasecmp(string, encodings[i]))
- return i;
- }
-
- return CAMEL_MIME_PART_ENCODING_DEFAULT;
-}
-
-
-/******************************/
-/** Misc utility functions **/
-
-/**
- * camel_mime_part_new:
- *
- * Return value: a new CamelMimePart
- **/
-CamelMimePart *
-camel_mime_part_new (void)
-{
- return (CamelMimePart *)camel_object_new (CAMEL_MIME_PART_TYPE);
-}
-
-/**
- * camel_mime_part_set_content:
- * @camel_mime_part: Mime part
- * @data: data to put into the part
- * @length: length of @data
- * @type: Content-Type of the data
- *
- * Utility function used to set the content of a mime part object to
- * be the provided data. If @length is 0, this routine can be used as
- * a way to remove old content (in which case @data and @type are
- * ignored and may be %NULL).
- **/
-void
-camel_mime_part_set_content (CamelMimePart *camel_mime_part,
- const char *data, int length,
- const char *type) /* why on earth is the type last? */
-{
- CamelMedium *medium = CAMEL_MEDIUM (camel_mime_part);
-
- if (length) {
- CamelDataWrapper *dw;
- CamelStream *stream;
-
- dw = camel_data_wrapper_new ();
- camel_data_wrapper_set_mime_type (dw, type);
- stream = camel_stream_mem_new_with_buffer (data, length);
- camel_data_wrapper_construct_from_stream (dw, stream);
- camel_object_unref (CAMEL_OBJECT (stream));
- camel_medium_set_content_object (medium, dw);
- camel_object_unref (CAMEL_OBJECT (dw));
- } else {
- if (medium->content)
- camel_object_unref (CAMEL_OBJECT (medium->content));
- medium->content = NULL;
- }
-}
diff --git a/camel/camel-mime-part.h b/camel/camel-mime-part.h
deleted file mode 100644
index 4d844af3fd..0000000000
--- a/camel/camel-mime-part.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; fill-column: 160 -*- */
-/* camel-mime-part.h : class for a mime part */
-
-/*
- *
- * Authors: Bertrand Guiheneuf <bertrand@helixcode.com>
- * Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_MIME_PART_H
-#define CAMEL_MIME_PART_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <camel/camel-medium.h>
-#include <camel/camel-mime-utils.h>
-#include <camel/camel-mime-parser.h>
-
-#define CAMEL_MIME_PART_TYPE (camel_mime_part_get_type ())
-#define CAMEL_MIME_PART(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MIME_PART_TYPE, CamelMimePart))
-#define CAMEL_MIME_PART_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MIME_PART_TYPE, CamelMimePartClass))
-#define CAMEL_IS_MIME_PART(o) (CAMEL_CHECK_TYPE((o), CAMEL_MIME_PART_TYPE))
-
-/* note, if you change this, make sure you change the 'encodings' array in camel-mime-part.c */
-enum _CamelMimePartEncodingType {
- CAMEL_MIME_PART_ENCODING_DEFAULT,
- CAMEL_MIME_PART_ENCODING_7BIT,
- CAMEL_MIME_PART_ENCODING_8BIT,
- CAMEL_MIME_PART_ENCODING_BASE64,
- CAMEL_MIME_PART_ENCODING_QUOTEDPRINTABLE,
- CAMEL_MIME_PART_ENCODING_BINARY,
- CAMEL_MIME_PART_NUM_ENCODINGS
-};
-typedef enum _CamelMimePartEncodingType CamelMimePartEncodingType;
-
-
-/* Do not change these values directly, you would regret it one day */
-struct _CamelMimePart
-{
- CamelMedium parent_object;
-
- /* All fields here are -** PRIVATE **- */
- gchar *description;
- CamelMimeDisposition *disposition;
- gchar *content_id;
- gchar *content_MD5;
- gchar *content_location;
- GList *content_languages;
- CamelMimePartEncodingType encoding;
-
- CamelContentType *content_type;
-
- struct _header_raw *headers; /* mime headers */
-};
-
-typedef struct _CamelMimePartClass {
- CamelMediumClass parent_class;
-
- /* Virtual methods */
- int (*construct_from_parser) (CamelMimePart *, CamelMimeParser *);
-} CamelMimePartClass;
-
-/* Standard Camel function */
-CamelType camel_mime_part_get_type (void);
-
-/* public methods */
-CamelMimePart * camel_mime_part_new (void);
-
-void camel_mime_part_set_description (CamelMimePart *mime_part, const gchar *description);
-const gchar *camel_mime_part_get_description (CamelMimePart *mime_part);
-
-void camel_mime_part_set_disposition (CamelMimePart *mime_part, const gchar *disposition);
-const gchar *camel_mime_part_get_disposition (CamelMimePart *mime_part);
-
-void camel_mime_part_set_filename (CamelMimePart *mime_part, const gchar *filename);
-const gchar *camel_mime_part_get_filename (CamelMimePart *mime_part);
-
-void camel_mime_part_set_content_id (CamelMimePart *mime_part, const char *contentid);
-const gchar *camel_mime_part_get_content_id (CamelMimePart *mime_part);
-
-void camel_mime_part_set_content_MD5 (CamelMimePart *mime_part, const char *);
-const gchar *camel_mime_part_get_content_MD5 (CamelMimePart *mime_part);
-
-void camel_mime_part_set_content_location (CamelMimePart *mime_part, const char *);
-const gchar *camel_mime_part_get_content_location (CamelMimePart *mime_part);
-
-void camel_mime_part_set_encoding (CamelMimePart *mime_part, CamelMimePartEncodingType type);
-CamelMimePartEncodingType camel_mime_part_get_encoding (CamelMimePart *mime_part);
-
-void camel_mime_part_set_content_languages (CamelMimePart *mime_part, GList *content_languages);
-const GList *camel_mime_part_get_content_languages (CamelMimePart *mime_part);
-
-/* FIXME: what about content-type parameters? what about major/minor parts? */
-void camel_mime_part_set_content_type (CamelMimePart *mime_part, gchar *content_type);
-CamelContentType *camel_mime_part_get_content_type (CamelMimePart *mime_part);
-
-const gchar * camel_mime_part_encoding_to_string (CamelMimePartEncodingType encoding);
-CamelMimePartEncodingType camel_mime_part_encoding_from_string (const gchar *string);
-
-/* construction */
-int camel_mime_part_construct_from_parser (CamelMimePart *, CamelMimeParser *);
-
-/* utility functions */
-void camel_mime_part_set_content (CamelMimePart *camel_mime_part,
- const char *content, int length, const char *type);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_MIME_PART_H */
-
diff --git a/camel/camel-mime-utils.c b/camel/camel-mime-utils.c
deleted file mode 100644
index 3d915be1f7..0000000000
--- a/camel/camel-mime-utils.c
+++ /dev/null
@@ -1,3650 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- * Jeffrey Stedfast <fejj@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/* dont touch this file without my permission - Michael */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/param.h> /* for MAXHOSTNAMELEN */
-#include <fcntl.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#ifndef MAXHOSTNAMELEN
-#define MAXHOSTNAMELEN 1024
-#endif
-
-#include <iconv.h>
-
-#include <time.h>
-
-#include <ctype.h>
-#include <errno.h>
-#include <regex.h>
-
-#include <glib.h>
-#include <gal/unicode/gunicode.h>
-
-#include "camel-mime-utils.h"
-#include "camel-charset-map.h"
-
-#ifdef ENABLE_THREADS
-#include <pthread.h>
-#endif
-
-#ifndef CLEAN_DATE
-#include "broken-date-parser.h"
-#endif
-
-#if 0
-int strdup_count = 0;
-int malloc_count = 0;
-int free_count = 0;
-
-#define g_strdup(x) (strdup_count++, g_strdup(x))
-#define g_malloc(x) (malloc_count++, g_malloc(x))
-#define g_free(x) (free_count++, g_free(x))
-#endif
-
-/* for all warnings ... */
-#define w(x) x
-
-#define d(x)
-#define d2(x)
-
-#define CAMEL_UUDECODE_CHAR(c) (((c) - ' ') & 077)
-
-static char *base64_alphabet =
-"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-
-static unsigned char tohex[16] = {
- '0', '1', '2', '3', '4', '5', '6', '7',
- '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
-};
-
-static unsigned short camel_mime_special_table[256] = {
- 5, 5, 5, 5, 5, 5, 5, 5, 5,231, 7, 5, 5, 39, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 242,448, 76,192,192,192,192,192, 76, 76,448,448, 76,448, 72,324,
- 448,448,448,448,448,448,448,448,448,448, 76, 76, 76, 4, 76, 68,
- 76,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,
- 448,448,448,448,448,448,448,448,448,448,448,108,236,108,192, 64,
- 192,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,
- 448,448,448,448,448,448,448,448,448,448,448,192,192,192,192, 5,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-};
-
-static unsigned char camel_mime_base64_rank[256] = {
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- 255,255,255,255,255,255,255,255,255,255,255, 62,255,255,255, 63,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,255,255,255, 0,255,255,
- 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,255,255,255,255,255,
- 255, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,255,255,255,255,255,
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-};
-
-/*
- if any of these change, then the tables above should be regenerated
- by compiling this with -DBUILD_TABLE, and running.
-
- gcc -DCLEAN_DATE -o buildtable -I.. `gnome-config --cflags --libs gal` -DBUILD_TABLE camel-mime-utils.c camel-charset-map.c
- ./buildtable
-
-*/
-enum {
- IS_CTRL = 1<<0,
- IS_LWSP = 1<<1,
- IS_TSPECIAL = 1<<2,
- IS_SPECIAL = 1<<3,
- IS_SPACE = 1<<4,
- IS_DSPECIAL = 1<<5,
- IS_QPSAFE = 1<<6,
- IS_ESAFE = 1<<7, /* encoded word safe */
- IS_PSAFE = 1<<8, /* encoded word in phrase safe */
-};
-
-#define is_ctrl(x) ((camel_mime_special_table[(unsigned char)(x)] & IS_CTRL) != 0)
-#define is_lwsp(x) ((camel_mime_special_table[(unsigned char)(x)] & IS_LWSP) != 0)
-#define is_tspecial(x) ((camel_mime_special_table[(unsigned char)(x)] & IS_TSPECIAL) != 0)
-#define is_type(x, t) ((camel_mime_special_table[(unsigned char)(x)] & (t)) != 0)
-#define is_ttoken(x) ((camel_mime_special_table[(unsigned char)(x)] & (IS_TSPECIAL|IS_LWSP|IS_CTRL)) == 0)
-#define is_atom(x) ((camel_mime_special_table[(unsigned char)(x)] & (IS_SPECIAL|IS_SPACE|IS_CTRL)) == 0)
-#define is_dtext(x) ((camel_mime_special_table[(unsigned char)(x)] & IS_DSPECIAL) == 0)
-#define is_fieldname(x) ((camel_mime_special_table[(unsigned char)(x)] & (IS_CTRL|IS_SPACE)) == 0)
-#define is_qpsafe(x) ((camel_mime_special_table[(unsigned char)(x)] & IS_QPSAFE) != 0)
-#define is_especial(x) ((camel_mime_special_table[(unsigned char)(x)] & IS_ESPECIAL) != 0)
-#define is_psafe(x) ((camel_mime_special_table[(unsigned char)(x)] & IS_PSAFE) != 0)
-
-/* only needs to be run to rebuild the tables above */
-#ifdef BUILD_TABLE
-
-#define CHARS_LWSP " \t\n\r"
-#define CHARS_TSPECIAL "()<>@,;:\\\"/[]?="
-#define CHARS_SPECIAL "()<>@,;:\\\".[]"
-#define CHARS_CSPECIAL "()\\\r" /* not in comments */
-#define CHARS_DSPECIAL "[]\\\r \t" /* not in domains */
-#define CHARS_ESPECIAL "()<>@,;:\"/[]?.=_" /* list of characters that must be encoded.
- encoded word in text specials: rfc 2047 5(1)*/
-#define CHARS_PSPECIAL "!*+-/" /* list of additional characters that can be left unencoded.
- encoded word in phrase specials: rfc 2047 5(3) */
-
-static void
-header_remove_bits(unsigned short bit, unsigned char *vals)
-{
- int i;
-
- for (i=0;vals[i];i++)
- camel_mime_special_table[vals[i]] &= ~ bit;
-}
-
-static void
-header_init_bits(unsigned short bit, unsigned short bitcopy, int remove, unsigned char *vals)
-{
- int i;
- int len = strlen(vals);
-
- if (!remove) {
- for (i=0;i<len;i++) {
- camel_mime_special_table[vals[i]] |= bit;
- }
- if (bitcopy) {
- for (i=0;i<256;i++) {
- if (camel_mime_special_table[i] & bitcopy)
- camel_mime_special_table[i] |= bit;
- }
- }
- } else {
- for (i=0;i<256;i++)
- camel_mime_special_table[i] |= bit;
- for (i=0;i<len;i++) {
- camel_mime_special_table[vals[i]] &= ~bit;
- }
- if (bitcopy) {
- for (i=0;i<256;i++) {
- if (camel_mime_special_table[i] & bitcopy)
- camel_mime_special_table[i] &= ~bit;
- }
- }
- }
-}
-
-static void
-header_decode_init(void)
-{
- int i;
-
- for (i=0;i<256;i++) {
- camel_mime_special_table[i] = 0;
- if (i<32)
- camel_mime_special_table[i] |= IS_CTRL;
- if ((i>=33 && i<=60) || (i>=62 && i<=126) || i==32 || i==9)
- camel_mime_special_table[i] |= (IS_QPSAFE|IS_ESAFE);
- if ((i>='0' && i<='9') || (i>='a' && i<='z') || (i>='A' && i<= 'Z'))
- camel_mime_special_table[i] |= IS_PSAFE;
- }
- camel_mime_special_table[127] |= IS_CTRL;
- camel_mime_special_table[' '] |= IS_SPACE;
- header_init_bits(IS_LWSP, 0, 0, CHARS_LWSP);
- header_init_bits(IS_TSPECIAL, IS_CTRL, 0, CHARS_TSPECIAL);
- header_init_bits(IS_SPECIAL, 0, 0, CHARS_SPECIAL);
- header_init_bits(IS_DSPECIAL, 0, FALSE, CHARS_DSPECIAL);
- header_remove_bits(IS_ESAFE, CHARS_ESPECIAL);
- header_init_bits(IS_PSAFE, 0, 0, CHARS_PSPECIAL);
-}
-
-void
-base64_init(void)
-{
- int i;
-
- memset(camel_mime_base64_rank, 0xff, sizeof(camel_mime_base64_rank));
- for (i=0;i<64;i++) {
- camel_mime_base64_rank[(unsigned int)base64_alphabet[i]] = i;
- }
- camel_mime_base64_rank['='] = 0;
-}
-
-int main(int argc, char **argv)
-{
- int i;
- void run_test(void);
-
- header_decode_init();
- base64_init();
-
- printf("static unsigned short camel_mime_special_table[256] = {\n\t");
- for (i=0;i<256;i++) {
- printf("%3d,", camel_mime_special_table[i]);
- if ((i&15) == 15) {
- printf("\n");
- if (i!=255) {
- printf("\t");
- }
- }
- }
- printf("};\n");
-
- printf("static unsigned char camel_mime_base64_rank[256] = {\n\t");
- for (i=0;i<256;i++) {
- printf("%3d,", camel_mime_base64_rank[i]);
- if ((i&15) == 15) {
- printf("\n");
- if (i!=255) {
- printf("\t");
- }
- }
- }
- printf("};\n");
-
- run_test();
-
- return 0;
-}
-
-#endif
-
-
-/* call this when finished encoding everything, to
- flush off the last little bit */
-int
-base64_encode_close(unsigned char *in, int inlen, gboolean break_lines, unsigned char *out, int *state, int *save)
-{
- int c1, c2;
- unsigned char *outptr = out;
-
- if (inlen>0)
- outptr += base64_encode_step(in, inlen, break_lines, outptr, state, save);
-
- c1 = ((unsigned char *)save)[1];
- c2 = ((unsigned char *)save)[2];
-
- d(printf("mode = %d\nc1 = %c\nc2 = %c\n",
- (int)((char *)save)[0],
- (int)((char *)save)[1],
- (int)((char *)save)[2]));
-
- switch (((char *)save)[0]) {
- case 2:
- outptr[2] = base64_alphabet[ ( (c2 &0x0f) << 2 ) ];
- g_assert(outptr[2] != 0);
- goto skip;
- case 1:
- outptr[2] = '=';
- skip:
- outptr[0] = base64_alphabet[ c1 >> 2 ];
- outptr[1] = base64_alphabet[ c2 >> 4 | ( (c1&0x3) << 4 )];
- outptr[3] = '=';
- outptr += 4;
- break;
- }
- if (break_lines)
- *outptr++ = '\n';
-
- *save = 0;
- *state = 0;
-
- return outptr-out;
-}
-
-/*
- performs an 'encode step', only encodes blocks of 3 characters to the
- output at a time, saves left-over state in state and save (initialise to
- 0 on first invocation).
-*/
-int
-base64_encode_step(unsigned char *in, int len, gboolean break_lines, unsigned char *out, int *state, int *save)
-{
- register unsigned char *inptr, *outptr;
-
- if (len<=0)
- return 0;
-
- inptr = in;
- outptr = out;
-
- d(printf("we have %d chars, and %d saved chars\n", len, ((char *)save)[0]));
-
- if (len + ((char *)save)[0] > 2) {
- unsigned char *inend = in+len-2;
- register int c1, c2, c3;
- register int already;
-
- already = *state;
-
- switch (((char *)save)[0]) {
- case 1: c1 = ((unsigned char *)save)[1]; goto skip1;
- case 2: c1 = ((unsigned char *)save)[1];
- c2 = ((unsigned char *)save)[2]; goto skip2;
- }
-
- /* yes, we jump into the loop, no i'm not going to change it, it's beautiful! */
- while (inptr < inend) {
- c1 = *inptr++;
- skip1:
- c2 = *inptr++;
- skip2:
- c3 = *inptr++;
- *outptr++ = base64_alphabet[ c1 >> 2 ];
- *outptr++ = base64_alphabet[ c2 >> 4 | ( (c1&0x3) << 4 ) ];
- *outptr++ = base64_alphabet[ ( (c2 &0x0f) << 2 ) | (c3 >> 6) ];
- *outptr++ = base64_alphabet[ c3 & 0x3f ];
- /* this is a bit ugly ... */
- if (break_lines && (++already)>=19) {
- *outptr++='\n';
- already = 0;
- }
- }
-
- ((char *)save)[0] = 0;
- len = 2-(inptr-inend);
- *state = already;
- }
-
- d(printf("state = %d, len = %d\n",
- (int)((char *)save)[0],
- len));
-
- if (len>0) {
- register char *saveout;
-
- /* points to the slot for the next char to save */
- saveout = & (((char *)save)[1]) + ((char *)save)[0];
-
- /* len can only be 0 1 or 2 */
- switch(len) {
- case 2: *saveout++ = *inptr++;
- case 1: *saveout++ = *inptr++;
- }
- ((char *)save)[0]+=len;
- }
-
- d(printf("mode = %d\nc1 = %c\nc2 = %c\n",
- (int)((char *)save)[0],
- (int)((char *)save)[1],
- (int)((char *)save)[2]));
-
- return outptr-out;
-}
-
-
-/**
- * base64_decode_step: decode a chunk of base64 encoded data
- * @in: input stream
- * @len: max length of data to decode
- * @out: output stream
- * @state: holds the number of bits that are stored in @save
- * @save: leftover bits that have not yet been decoded
- *
- * Decodes a chunk of base64 encoded data
- **/
-int
-base64_decode_step(unsigned char *in, int len, unsigned char *out, int *state, unsigned int *save)
-{
- register unsigned char *inptr, *outptr;
- unsigned char *inend, c;
- register unsigned int v;
- int i;
-
- inend = in+len;
- outptr = out;
-
- /* convert 4 base64 bytes to 3 normal bytes */
- v=*save;
- i=*state;
- inptr = in;
- while (inptr<inend) {
- c = camel_mime_base64_rank[*inptr++];
- if (c != 0xff) {
- v = (v<<6) | c;
- i++;
- if (i==4) {
- *outptr++ = v>>16;
- *outptr++ = v>>8;
- *outptr++ = v;
- i=0;
- }
- }
- }
-
- *save = v;
- *state = i;
-
- /* quick scan back for '=' on the end somewhere */
- /* fortunately we can drop 1 output char for each trailing = (upto 2) */
- i=2;
- while (inptr>in && i) {
- inptr--;
- if (camel_mime_base64_rank[*inptr] != 0xff) {
- if (*inptr == '=')
- outptr--;
- i--;
- }
- }
-
- /* if i!= 0 then there is a truncation error! */
- return outptr-out;
-}
-
-char *
-base64_encode_simple (const char *data, int len)
-{
- unsigned char *out;
- int state = 0, outlen;
- unsigned int save = 0;
-
- out = g_malloc (len * 4 / 3 + 5);
- outlen = base64_encode_close ((unsigned char *)data, len, FALSE,
- out, &state, &save);
- out[outlen] = '\0';
- return (char *)out;
-}
-
-int
-base64_decode_simple (char *data, int len)
-{
- int state = 0;
- unsigned int save = 0;
-
- return base64_decode_step ((unsigned char *)data, len,
- (unsigned char *)data, &state, &save);
-}
-
-
-/**
- * uudecode_step: uudecode a chunk of data
- * @in: input stream
- * @len: max length of data to decode ( normally strlen(in) ??)
- * @out: output stream
- * @state: holds the number of bits that are stored in @save
- * @save: leftover bits that have not yet been decoded
- * @uulen: holds the value of the length-char which is used to calculate
- * how many more chars need to be decoded for that 'line'
- *
- * uudecodes a chunk of data. Assumes the "begin <mode> <file name>" line
- * has been stripped off.
- **/
-int
-uudecode_step (unsigned char *in, int len, unsigned char *out, int *state, guint32 *save, char *uulen)
-{
- register unsigned char *inptr, *outptr;
- unsigned char *inend, ch;
- register guint32 saved;
- gboolean last_was_eoln;
- int i;
-
- if (*uulen <= 0)
- last_was_eoln = TRUE;
- else
- last_was_eoln = FALSE;
-
- inend = in + len;
- outptr = out;
- saved = *save;
- i = *state;
- inptr = in;
- while (inptr < inend && *inptr) {
- if (*inptr == '\n' || last_was_eoln) {
- if (last_was_eoln) {
- *uulen = CAMEL_UUDECODE_CHAR (*inptr);
- last_was_eoln = FALSE;
- } else {
- last_was_eoln = TRUE;
- }
-
- inptr++;
- continue;
- }
-
- ch = *inptr++;
-
- if (*uulen > 0) {
- /* save the byte */
- saved = (saved << 8) | ch;
- i++;
- if (i == 4) {
- /* convert 4 uuencoded bytes to 3 normal bytes */
- unsigned char b0, b1, b2, b3;
-
- b0 = saved >> 24;
- b1 = saved >> 16 & 0xff;
- b2 = saved >> 8 & 0xff;
- b3 = saved & 0xff;
-
- if (*uulen >= 3) {
- *outptr++ = CAMEL_UUDECODE_CHAR (b0) << 2 | CAMEL_UUDECODE_CHAR (b1) >> 4;
- *outptr++ = CAMEL_UUDECODE_CHAR (b1) << 4 | CAMEL_UUDECODE_CHAR (b2) >> 2;
- *outptr++ = CAMEL_UUDECODE_CHAR (b2) << 6 | CAMEL_UUDECODE_CHAR (b3);
- } else {
- if (*uulen >= 1) {
- *outptr++ = CAMEL_UUDECODE_CHAR (b0) << 2 | CAMEL_UUDECODE_CHAR (b1) >> 4;
- }
- if (*uulen >= 2) {
- *outptr++ = CAMEL_UUDECODE_CHAR (b1) << 4 | CAMEL_UUDECODE_CHAR (b2) >> 2;
- }
- }
-
- i = 0;
- saved = 0;
- *uulen -= 3;
- }
- } else {
- break;
- }
- }
-
- *save = saved;
- *state = i;
-
- return outptr - out;
-}
-
-/* complete qp encoding */
-int
-quoted_encode_close(unsigned char *in, int len, unsigned char *out, int *state, int *save)
-{
- register unsigned char *outptr = out;
- int last;
-
- if (len>0)
- outptr += quoted_encode_step(in, len, outptr, state, save);
-
- last = *state;
- if (last != -1) {
- /* space/tab must be encoded if it's the last character on
- the line */
- if (is_qpsafe(last) && last!=' ' && last!=9) {
- *outptr++ = last;
- } else {
- *outptr++ = '=';
- *outptr++ = tohex[(last>>4) & 0xf];
- *outptr++ = tohex[last & 0xf];
- }
- }
-
- *save = 0;
- *state = -1;
-
- return outptr-out;
-}
-
-/* perform qp encoding, initialise state to -1 and save to 0 on first invocation */
-int
-quoted_encode_step (unsigned char *in, int len, unsigned char *out, int *statep, int *save)
-{
- register guchar *inptr, *outptr, *inend;
- guchar c;
- register int sofar = *save; /* keeps track of how many chars on a line */
- register int last = *statep; /* keeps track if last char to end was a space cr etc */
-
- inptr = in;
- inend = in + len;
- outptr = out;
- while (inptr < inend) {
- c = *inptr++;
- if (c == '\r') {
- if (last != -1) {
- *outptr++ = '=';
- *outptr++ = tohex[(last >> 4) & 0xf];
- *outptr++ = tohex[last & 0xf];
- sofar += 3;
- }
- last = c;
- } else if (c == '\n') {
- if (last != -1 && last != '\r') {
- *outptr++ = '=';
- *outptr++ = tohex[(last >> 4) & 0xf];
- *outptr++ = tohex[last & 0xf];
- }
- *outptr++ = '\n';
- sofar = 0;
- last = -1;
- } else {
- if (last != -1) {
- if (is_qpsafe(last)) {
- *outptr++ = last;
- sofar++;
- } else {
- *outptr++ = '=';
- *outptr++ = tohex[(last >> 4) & 0xf];
- *outptr++ = tohex[last & 0xf];
- sofar += 3;
- }
- }
-
- if (is_qpsafe(c)) {
- if (sofar > 74) {
- *outptr++ = '=';
- *outptr++ = '\n';
- sofar = 0;
- }
-
- /* delay output of space char */
- if (c==' ' || c=='\t') {
- last = c;
- } else {
- *outptr++ = c;
- sofar++;
- last = -1;
- }
- } else {
- if (sofar > 72) {
- *outptr++ = '=';
- *outptr++ = '\n';
- sofar = 3;
- } else
- sofar += 3;
-
- *outptr++ = '=';
- *outptr++ = tohex[(c >> 4) & 0xf];
- *outptr++ = tohex[c & 0xf];
- last = -1;
- }
- }
- }
- *save = sofar;
- *statep = last;
-
- return (outptr - out);
-}
-
-/*
- FIXME: this does not strip trailing spaces from lines (as it should, rfc 2045, section 6.7)
- Should it also canonicalise the end of line to CR LF??
-
- Note: Trailing rubbish (at the end of input), like = or =x or =\r will be lost.
-*/
-
-int
-quoted_decode_step(unsigned char *in, int len, unsigned char *out, int *savestate, int *saveme)
-{
- register unsigned char *inptr, *outptr;
- unsigned char *inend, c;
- int state, save;
-
- inend = in+len;
- outptr = out;
-
- d(printf("quoted-printable, decoding text '%.*s'\n", len, in));
-
- state = *savestate;
- save = *saveme;
- inptr = in;
- while (inptr<inend) {
- switch (state) {
- case 0:
- while (inptr<inend) {
- c = *inptr++;
- if (c=='=') {
- state = 1;
- break;
- }
-#ifdef CANONICALISE_EOL
- /*else if (c=='\r') {
- state = 3;
- } else if (c=='\n') {
- *outptr++ = '\r';
- *outptr++ = c;
- } */
-#endif
- else {
- *outptr++ = c;
- }
- }
- break;
- case 1:
- c = *inptr++;
- if (c=='\n') {
- /* soft break ... unix end of line */
- state = 0;
- } else {
- save = c;
- state = 2;
- }
- break;
- case 2:
- c = *inptr++;
- if (isxdigit(c) && isxdigit(save)) {
- c = toupper(c);
- save = toupper(save);
- *outptr++ = (((save>='A'?save-'A'+10:save-'0')&0x0f) << 4)
- | ((c>='A'?c-'A'+10:c-'0')&0x0f);
- } else if (c=='\n' && save == '\r') {
- /* soft break ... canonical end of line */
- } else {
- /* just output the data */
- *outptr++ = '=';
- *outptr++ = save;
- *outptr++ = c;
- }
- state = 0;
- break;
-#ifdef CANONICALISE_EOL
- case 3:
- /* convert \r -> to \r\n, leaves \r\n alone */
- c = *inptr++;
- if (c=='\n') {
- *outptr++ = '\r';
- *outptr++ = c;
- } else {
- *outptr++ = '\r';
- *outptr++ = '\n';
- *outptr++ = c;
- }
- state = 0;
- break;
-#endif
- }
- }
-
- *savestate = state;
- *saveme = save;
-
- return outptr-out;
-}
-
-/*
- this is for the "Q" encoding of international words,
- which is slightly different than plain quoted-printable (mainly by allowing 0x20 <> _)
-*/
-static int
-quoted_decode(const unsigned char *in, int len, unsigned char *out)
-{
- register const unsigned char *inptr;
- register unsigned char *outptr;
- unsigned const char *inend;
- unsigned char c, c1;
- int ret = 0;
-
- inend = in+len;
- outptr = out;
-
- d(printf("decoding text '%.*s'\n", len, in));
-
- inptr = in;
- while (inptr<inend) {
- c = *inptr++;
- if (c=='=') {
- /* silently ignore truncated data? */
- if (inend-in>=2) {
- c = toupper(*inptr++);
- c1 = toupper(*inptr++);
- *outptr++ = (((c>='A'?c-'A'+10:c-'0')&0x0f) << 4)
- | ((c1>='A'?c1-'A'+10:c1-'0')&0x0f);
- } else {
- ret = -1;
- break;
- }
- } else if (c=='_') {
- *outptr++ = 0x20;
- } else if (c==' ' || c==0x09) {
- /* FIXME: this is an error! ignore for now ... */
- ret = -1;
- break;
- } else {
- *outptr++ = c;
- }
- }
- if (ret==0) {
- return outptr-out;
- }
- return -1;
-}
-
-/* rfc2047 version of quoted-printable */
-/* safemask is the mask to apply to the camel_mime_special_table to determine what
- characters can safely be included without encoding */
-static int
-quoted_encode(const unsigned char *in, int len, unsigned char *out, unsigned short safemask)
-{
- register const unsigned char *inptr, *inend;
- unsigned char *outptr;
- unsigned char c;
-
- inptr = in;
- inend = in + len;
- outptr = out;
- while (inptr < inend) {
- c = *inptr++;
- if (c==' ') {
- *outptr++ = '_';
- } else if (camel_mime_special_table[c] & safemask) {
- *outptr++ = c;
- } else {
- *outptr++ = '=';
- *outptr++ = tohex[(c >> 4) & 0xf];
- *outptr++ = tohex[c & 0xf];
- }
- }
-
- d(printf("encoding '%.*s' = '%.*s'\n", len, in, outptr-out, out));
-
- return (outptr - out);
-}
-
-
-static void
-header_decode_lwsp(const char **in)
-{
- const char *inptr = *in;
- char c;
-
- d2(printf("is ws: '%s'\n", *in));
-
- while (is_lwsp(*inptr) || (*inptr =='(' && *inptr != '\0')) {
- while (is_lwsp(*inptr) && inptr != '\0') {
- d2(printf("(%c)", *inptr));
- inptr++;
- }
- d2(printf("\n"));
-
- /* check for comments */
- if (*inptr == '(') {
- int depth = 1;
- inptr++;
- while (depth && (c=*inptr) && *inptr != '\0') {
- if (c=='\\' && inptr[1]) {
- inptr++;
- } else if (c=='(') {
- depth++;
- } else if (c==')') {
- depth--;
- }
- inptr++;
- }
- }
- }
- *in = inptr;
-}
-
-/* decode rfc 2047 encoded string segment */
-static char *
-rfc2047_decode_word(const char *in, int len)
-{
- const char *inptr = in+2;
- const char *inend = in+len-2;
- char *inbuf;
- char *encname;
- int tmplen;
- int ret;
- char *decword = NULL;
- char *decoded = NULL;
- char *outbase = NULL;
- char *outbuf;
- int inlen, outlen;
- iconv_t ic;
-
- d(printf("rfc2047: decoding '%.*s'\n", len, in));
-
- /* quick check to see if this could possibly be a real encoded word */
- if (len < 8 || !(in[0] == '=' && in[1] == '?' && in[len-1] == '=' && in[len-2] == '?')) {
- d(printf("invalid\n"));
- return NULL;
- }
-
- /* skip past the charset to the encoding type */
- inptr = memchr (inptr, '?', inend-inptr);
- if (inptr != NULL && inptr < inend + 2 && inptr[2] == '?') {
- d(printf("found ?, encoding is '%c'\n", inptr[0]));
- inptr++;
- tmplen = inend-inptr-2;
- decword = alloca(tmplen); /* this will always be more-than-enough room */
- switch(toupper(inptr[0])) {
- case 'Q':
- inlen = quoted_decode(inptr+2, tmplen, decword);
- break;
- case 'B': {
- int state=0;
- unsigned int save=0;
- inlen = base64_decode_step((char *)inptr+2, tmplen, decword, &state, &save);
- /* if state != 0 then error? */
- break;
- }
- default:
- /* uhhh, unknown encoding type - probably an invalid encoded word string */
- return NULL;
- }
- d(printf("The encoded length = %d\n", inlen));
- if (inlen>0) {
- /* yuck, all this snot is to setup iconv! */
- tmplen = inptr-in-3;
- encname = alloca(tmplen+1);
- encname[tmplen]=0;
- memcpy(encname, in+2, tmplen);
-
- inbuf = decword;
-
- outlen = inlen*6+16;
- outbase = alloca(outlen);
- outbuf = outbase;
-
- /* TODO: Should this cache iconv converters? */
- ic = iconv_open("UTF-8", encname);
- if (ic != (iconv_t)-1) {
- ret = iconv(ic, &inbuf, &inlen, &outbuf, &outlen);
- if (ret>=0) {
- iconv(ic, NULL, 0, &outbuf, &outlen);
- *outbuf = 0;
- decoded = g_strdup(outbase);
- }
- iconv_close(ic);
- } else {
- w(g_warning("Cannot decode charset, header display may be corrupt: %s: %s",
- encname, strerror(errno)));
- /* TODO: Should this do this, or just leave the encoded strings? */
- decword[inlen] = 0;
- decoded = g_strdup(decword);
- }
- }
- }
-
- d(printf("decoded '%s'\n", decoded));
-
- return decoded;
-}
-
-/* grrr, glib should have this ! */
-static GString *
-g_string_append_len(GString *st, const char *s, int l)
-{
- char *tmp;
-
- tmp = alloca(l+1);
- tmp[l]=0;
- memcpy(tmp, s, l);
- return g_string_append(st, tmp);
-}
-
-/* ok, a lot of mailers are BROKEN, and send iso-latin1 encoded
- headers, when they should just be sticking to US-ASCII
- according to the rfc's. Anyway, since the conversion to utf-8
- is trivial, just do it here without iconv */
-static GString *
-append_latin1(GString *out, const char *in, int len)
-{
- unsigned int c;
-
- while (len) {
- c = (unsigned int)*in++;
- len--;
- if (c & 0x80) {
- out = g_string_append_c(out, 0xc0 | ((c>>6) & 0x3)); /* 110000xx */
- out = g_string_append_c(out, 0x80 | (c&0x3f)); /* 10xxxxxx */
- } else {
- out = g_string_append_c(out, c);
- }
- }
- return out;
-}
-
-/* decodes a simple text, rfc822 */
-static char *
-header_decode_text (const char *in, int inlen)
-{
- GString *out;
- char *inptr, *inend, *start, *word_start;
- char *decoded;
- gboolean wasdword = FALSE;
- gboolean wasspace = FALSE;
-
- out = g_string_new ("");
- start = inptr = (char *) in;
- inend = inptr + inlen;
-
- word_start = NULL;
- while (inptr && inptr < inend) {
- unsigned char c = *inptr++;
-
- if (is_lwsp (c) && !wasspace) {
- char *word, *dword;
-
- if (word_start)
- word = word_start;
- else
- word = start;
-
- dword = rfc2047_decode_word (word, inptr - word - 1);
-
- if (dword) {
- if (!wasdword && word_start)
- g_string_append_len (out, start, word_start - start);
-
- g_string_append (out, dword);
- g_free (dword);
- wasdword = TRUE;
- } else {
- out = append_latin1 (out, start, inptr - start - 1);
- wasdword = FALSE;
- }
-
- start = inptr - 1;
- word_start = NULL;
- wasspace = TRUE;
- } else if (!is_lwsp (c)) {
- wasspace = FALSE;
- if (!word_start)
- word_start = inptr - 1;
- }
- }
-
- if (inptr - start) {
- char *word, *dword;
-
- if (word_start)
- word = word_start;
- else
- word = start;
-
- dword = rfc2047_decode_word (word, inptr - word);
-
- if (dword) {
- if (!wasdword && word_start)
- g_string_append_len (out, start, word_start - start);
-
- g_string_append (out, dword);
- g_free (dword);
- } else {
- out = append_latin1 (out, start, inptr - start);
- }
- }
-
- decoded = out->str;
- g_string_free (out, FALSE);
-
- return decoded;
-}
-
-#if 0 /* This is broken */
-
-/* so in what way is it broken? */
-
-/* decodes a simple text, rfc822 */
-static char *
-header_decode_text(const char *in, int inlen)
-{
- GString *out;
- const char *inptr = in;
- const char *inend = in+inlen;
- char *encstart, *encend;
- char *decword;
-
- out = g_string_new("");
- while ( (encstart = strstr(inptr, "=?"))
- && (encend = strstr(encstart+2, "?=")) ) {
-
- decword = rfc2047_decode_word(encstart, encend-encstart+2);
- if (decword) {
- out = g_string_append_len(out, inptr, encstart-inptr);
- out = g_string_append_len(out, decword, strlen(decword));
- g_free (decword);
- } else {
- out = append_latin1(out, inptr, encend-inptr+2);
- }
- inptr = encend+2;
- }
- out = append_latin1(out, inptr, inend-inptr);
-
- encstart = out->str;
- g_string_free(out, FALSE);
-
- return encstart;
-}
-#endif
-
-char *
-header_decode_string(const char *in)
-{
- if (in == NULL)
- return NULL;
- return header_decode_text(in, strlen(in));
-}
-
-/* how long a sequence of pre-encoded words should be less than, to attempt to
- fit into a properly folded word. Only a guide. */
-#define CAMEL_FOLD_PREENCODED (24)
-
-/* FIXME: needs a way to cache iconv opens for different charsets? */
-static void
-rfc2047_encode_word(GString *outstring, const char *in, int len, const char *type, unsigned short safemask)
-{
- iconv_t ic = (iconv_t *)-1;
- char *buffer, *out, *ascii;
- size_t inlen, outlen, enclen, bufflen;
- char *inptr, *p;
- int first = 1;
-
- d(printf("Converting [%d] '%.*s' to %s\n", len, len, in, type));
-
- /* convert utf8->encoding */
- bufflen = len*6+16;
- buffer = alloca(bufflen);
- inlen = len;
- inptr = (char *) in;
-
- ascii = alloca(bufflen);
-
- if (strcasecmp(type, "UTF-8") != 0)
- ic = iconv_open(type, "UTF-8");
-
- while (inlen) {
- int convlen, i, proclen;
-
- /* break up words into smaller bits, what we really want is encoded + overhead < 75,
- but we'll just guess what that means in terms of input chars, and assume its good enough */
-
- out = buffer;
- outlen = bufflen;
-
- if (ic == (iconv_t) -1) {
- /* native encoding case, the easy one (?) */
- /* we work out how much we can convert, and still be in length */
- /* proclen will be the result of input characters that we can convert, to the nearest
- (approximated) valid utf8 char */
- convlen = 0;
- proclen = 0;
- p = inptr;
- i = 0;
- while (p < (in+len) && convlen < (75 - strlen("=?utf-8?q??="))) {
- unsigned char c = *p++;
-
- if (c >= 0xc0)
- proclen = i;
- i++;
- if (c < 0x80)
- proclen = i;
- if (camel_mime_special_table[c] & safemask)
- convlen += 1;
- else
- convlen += 3;
- }
- /* well, we probably have broken utf8, just copy it anyway what the heck */
- if (proclen == 0) {
- w(g_warning("Appear to have truncated utf8 sequence"));
- proclen = inlen;
- }
- memcpy(out, inptr, proclen);
- inptr += proclen;
- inlen -= proclen;
- out += proclen;
- } else {
- /* well we could do similar, but we can't (without undue effort), we'll just break it up into
- hopefully-small-enough chunks, and leave it at that */
- convlen = MIN(inlen, CAMEL_FOLD_PREENCODED);
- p = inptr;
- if (iconv(ic, &inptr, &convlen, &out, &outlen) == -1) {
- w(g_warning("Conversion problem: conversion truncated: %s", strerror(errno)));
- /* blah, we include it anyway, better than infinite loop ... */
- inptr = p + convlen;
- } else {
- /* make sure we flush out any shift state */
- iconv(ic, NULL, 0, &out, &outlen);
- }
- inlen -= (inptr - p);
- }
-
- enclen = out-buffer;
-
- /* create token */
- out = ascii;
- if (first)
- first = 0;
- else
- *out++ = ' ';
- out += sprintf(out, "=?%s?Q?", type);
- out += quoted_encode(buffer, enclen, out, safemask);
- sprintf(out, "?=");
-
- d(printf("converted part = %s\n", ascii));
-
- g_string_append(outstring, ascii);
- }
-
- if (ic == (iconv_t) -1) {
- iconv_close(ic);
- }
-}
-
-
-/* TODO: Should this worry about quotes?? */
-char *
-header_encode_string (const unsigned char *in)
-{
- const unsigned char *inptr = in, *start, *word;
- gboolean last_was_encoded = FALSE;
- gboolean last_was_space = FALSE;
- int encoding;
- GString *out;
- char *outstr;
-
- g_return_val_if_fail (g_utf8_validate (in, -1, NULL), NULL);
-
- if (in == NULL)
- return NULL;
-
- /* do a quick us-ascii check (the common case?) */
- while (*inptr) {
- if (*inptr > 127)
- break;
- inptr++;
- }
- if (*inptr == '\0')
- return g_strdup (in);
-
- /* This gets each word out of the input, and checks to see what charset
- can be used to encode it. */
- /* TODO: Work out when to merge subsequent words, or across word-parts */
- out = g_string_new ("");
- inptr = in;
- encoding = 0;
- word = NULL;
- start = inptr;
- while (inptr && *inptr) {
- gunichar c;
- const char *newinptr;
-
- newinptr = g_utf8_next_char (inptr);
- c = g_utf8_get_char (inptr);
- if (newinptr == NULL || !g_unichar_validate (c)) {
- w(g_warning ("Invalid UTF-8 sequence encountered (pos %d, char '%c'): %s",
- (inptr-in), inptr[0], in));
- inptr++;
- continue;
- }
-
-
- if (g_unichar_isspace (c) && !last_was_space) {
- /* we've reached the end of a 'word' */
- if (word && !(last_was_encoded && encoding)) {
- g_string_append_len (out, start, word - start);
- start = word;
- }
-
- switch (encoding) {
- case 0:
- out = g_string_append_len (out, word, inptr - start);
- last_was_encoded = FALSE;
- break;
- case 1:
- if (last_was_encoded)
- g_string_append_c (out, ' ');
-
- rfc2047_encode_word (out, start, inptr - start, "ISO-8859-1", IS_ESAFE);
- last_was_encoded = TRUE;
- break;
- case 2:
- if (last_was_encoded)
- g_string_append_c (out, ' ');
-
- rfc2047_encode_word (out, start, inptr - start,
- camel_charset_best (start, inptr - start), IS_ESAFE);
- last_was_encoded = TRUE;
- break;
- }
-
- last_was_space = TRUE;
- start = inptr;
- word = NULL;
- encoding = 0;
- } else if (c > 127 && c < 256) {
- encoding = MAX (encoding, 1);
- last_was_space = FALSE;
- } else if (c >= 256) {
- encoding = MAX (encoding, 2);
- last_was_space = FALSE;
- } else if (!g_unichar_isspace (c)) {
- last_was_space = FALSE;
- }
-
- if (!g_unichar_isspace (c) && !word)
- word = inptr;
-
- inptr = newinptr;
- }
-
- if (inptr - start) {
- if (word && !(last_was_encoded && encoding)) {
- g_string_append_len (out, start, word - start);
- start = word;
- }
-
- switch (encoding) {
- case 0:
- out = g_string_append_len (out, start, inptr - start);
- break;
- case 1:
- if (last_was_encoded)
- g_string_append_c (out, ' ');
-
- rfc2047_encode_word (out, start, inptr - start, "ISO-8859-1", IS_ESAFE);
- break;
- case 2:
- if (last_was_encoded)
- g_string_append_c (out, ' ');
-
- rfc2047_encode_word (out, start, inptr - start,
- camel_charset_best (start, inptr - start - 1), IS_ESAFE);
- break;
- }
- }
-
- outstr = out->str;
- g_string_free (out, FALSE);
-
- return outstr;
-}
-
-/* apply quoted-string rules to a string */
-static void
-quote_word(GString *out, gboolean do_quotes, const char *start, int len)
-{
- int i, c;
-
- /* TODO: What about folding on long lines? */
- if (do_quotes)
- g_string_append_c(out, '"');
- for (i=0;i<len;i++) {
- c = *start++;
- if (c == '\"' || c=='\\' || c=='\r')
- g_string_append_c(out, '\\');
- g_string_append_c(out, c);
- }
- if (do_quotes)
- g_string_append_c(out, '"');
-}
-
-/* incrementing possibility for the word type */
-enum _phrase_word_t {
- WORD_ATOM,
- WORD_QSTRING,
- WORD_2047
-};
-
-struct _phrase_word {
- const unsigned char *start, *end;
- enum _phrase_word_t type;
- int encoding;
-};
-
-/* split the input into words
- with info about each word
- merge common word types
- clean up
-*/
-
-static GList *
-header_encode_phrase_get_words (const unsigned char *in)
-{
- const unsigned char *inptr = in, *start, *last;
- struct _phrase_word *word;
- enum _phrase_word_t type;
- int encoding, count = 0;
- GList *words = NULL;
-
- /* break the input into words */
- type = WORD_ATOM;
- last = inptr;
- start = inptr;
- encoding = 0;
- while (inptr && *inptr) {
- gunichar c;
- const char *newinptr;
-
- newinptr = g_utf8_next_char (inptr);
- c = g_utf8_get_char (inptr);
-
- if (!g_unichar_validate (c)) {
- w(g_warning ("Invalid UTF-8 sequence encountered (pos %d, char '%c'): %s",
- (inptr - in), inptr[0], in));
- inptr++;
- continue;
- }
-
-
- inptr = newinptr;
- if (g_unichar_isspace (c)) {
- if (count > 0) {
- word = g_new0 (struct _phrase_word, 1);
- word->start = start;
- word->end = last;
- word->type = type;
- word->encoding = encoding;
- words = g_list_append (words, word);
- count = 0;
- }
-
- start = inptr;
- type = WORD_ATOM;
- encoding = 0;
- } else {
- count++;
- if (c < 128) {
- if (!is_atom (c))
- type = MAX (type, WORD_QSTRING);
- } else if (c > 127 && c < 256) {
- type = WORD_2047;
- encoding = MAX (encoding, 1);
- } else if (c >= 256) {
- type = WORD_2047;
- encoding = MAX (encoding, 2);
- }
- }
-
- last = inptr;
- }
-
- if (count > 0) {
- word = g_new0 (struct _phrase_word, 1);
- word->start = start;
- word->end = last;
- word->type = type;
- word->encoding = encoding;
- words = g_list_append (words, word);
- }
-
- return words;
-}
-
-static void
-header_encode_phrase_merge_words (GList **wordsp)
-{
- GList *wordl, *nextl, *words = *wordsp;
- struct _phrase_word *word, *next;
-
- /* scan the list, checking for words of similar types that can be merged */
- wordl = words;
- while (wordl) {
- word = wordl->data;
- /* leave atoms as atoms (unless they're surrounded by quoted words??) */
- if (word->type != WORD_ATOM) {
- nextl = g_list_next (wordl);
- while (nextl) {
- next = nextl->data;
- /* merge nodes of the same type AND we are not creating too long a string */
- if (word->type == next->type) {
- if (next->end - word->start < CAMEL_FOLD_PREENCODED) {
- word->end = next->end;
- words = g_list_remove_link (words, nextl);
- g_free (next);
- nextl = g_list_next (wordl);
- } else {
- /* if it is going to be too long, make sure we include the
- separating whitespace */
- word->end = next->start;
- break;
- }
- } else {
- break;
- }
- }
- }
- wordl = g_list_next (wordl);
- }
-
- *wordsp = words;
-}
-
-/* encodes a phrase sequence (different quoting/encoding rules to strings) */
-char *
-header_encode_phrase (const unsigned char *in)
-{
- struct _phrase_word *word = NULL, *last_word = NULL;
- GList *words, *wordl;
- GString *out;
- char *outstr;
-
- if (in == NULL)
- return NULL;
-
- words = header_encode_phrase_get_words (in);
- if (!words)
- return NULL;
-
- header_encode_phrase_merge_words (&words);
-
- out = g_string_new ("");
-
- /* output words now with spaces between them */
- wordl = words;
- while (wordl) {
- const char *start;
- int len;
-
- word = wordl->data;
-
- /* append correct number of spaces between words */
- if (last_word && !(last_word->type == WORD_2047 && word->type == WORD_2047)) {
- /* one or both of the words are not encoded so we write the spaces out untouched */
- len = word->start - last_word->end;
- out = g_string_append_len (out, last_word->end, len);
- }
-
- switch (word->type) {
- case WORD_ATOM:
- out = g_string_append_len (out, word->start, word->end - word->start);
- break;
- case WORD_QSTRING:
- quote_word (out, TRUE, word->start, word->end - word->start);
- break;
- case WORD_2047:
- if (last_word && last_word->type == WORD_2047) {
- /* include the whitespace chars between these 2 words in the
- resulting rfc2047 encoded word. */
- len = word->end - last_word->end;
- start = last_word->end;
-
- /* encoded words need to be separated by linear whitespace */
- g_string_append_c (out, ' ');
- } else {
- len = word->end - word->start;
- start = word->start;
- }
-
- if (word->encoding == 1)
- rfc2047_encode_word (out, start, len, "ISO-8859-1", IS_PSAFE);
- else
- rfc2047_encode_word (out, start, len,
- camel_charset_best (start, len), IS_PSAFE);
- break;
- }
-
- g_free (last_word);
- wordl = g_list_next (wordl);
-
- last_word = word;
- }
-
- /* and we no longer need the list */
- g_free (word);
- g_list_free (words);
-
- outstr = out->str;
- g_string_free (out, FALSE);
-
- return outstr;
-}
-
-
-/* these are all internal parser functions */
-
-static char *
-decode_token(const char **in)
-{
- const char *inptr = *in;
- const char *start;
-
- header_decode_lwsp(&inptr);
- start = inptr;
- while (is_ttoken(*inptr))
- inptr++;
- if (inptr>start) {
- *in = inptr;
- return g_strndup(start, inptr-start);
- } else {
- return NULL;
- }
-}
-
-char *
-header_token_decode(const char *in)
-{
- if (in == NULL)
- return NULL;
-
- return decode_token(&in);
-}
-
-/*
- <"> * ( <any char except <"> \, cr / \ <any char> ) <">
-*/
-static char *
-header_decode_quoted_string(const char **in)
-{
- const char *inptr = *in;
- char *out = NULL, *outptr;
- int outlen;
- int c;
-
- header_decode_lwsp(&inptr);
- if (*inptr == '"') {
- const char *intmp;
- int skip = 0;
-
- /* first, calc length */
- inptr++;
- intmp = inptr;
- while ( (c = *intmp++) && c!= '"') {
- if (c=='\\' && *intmp) {
- intmp++;
- skip++;
- }
- }
- outlen = intmp-inptr-skip;
- out = outptr = g_malloc(outlen+1);
- while ( (c = *inptr++) && c!= '"') {
- if (c=='\\' && *inptr) {
- c = *inptr++;
- }
- *outptr++ = c;
- }
- *outptr = 0;
- }
- *in = inptr;
- return out;
-}
-
-static char *
-header_decode_atom(const char **in)
-{
- const char *inptr = *in, *start;
-
- header_decode_lwsp(&inptr);
- start = inptr;
- while (is_atom(*inptr))
- inptr++;
- *in = inptr;
- if (inptr > start)
- return g_strndup(start, inptr-start);
- else
- return NULL;
-}
-
-static char *
-header_decode_word(const char **in)
-{
- const char *inptr = *in;
-
- header_decode_lwsp(&inptr);
- if (*inptr == '"') {
- *in = inptr;
- return header_decode_quoted_string(in);
- } else {
- *in = inptr;
- return header_decode_atom(in);
- }
-}
-
-static char *
-header_decode_value(const char **in)
-{
- const char *inptr = *in;
-
- header_decode_lwsp(&inptr);
- if (*inptr == '"') {
- d(printf("decoding quoted string\n"));
- return header_decode_quoted_string(in);
- } else if (is_ttoken(*inptr)) {
- d(printf("decoding token\n"));
- /* this may not have the right specials for all params? */
- return decode_token(in);
- }
- return NULL;
-}
-
-/* shoudl this return -1 for no int? */
-static int
-header_decode_int(const char **in)
-{
- const char *inptr = *in;
- int c, v=0;
-
- header_decode_lwsp(&inptr);
- while ( (c=*inptr++ & 0xff)
- && isdigit(c) ) {
- v = v*10+(c-'0');
- }
- *in = inptr-1;
- return v;
-}
-
-static int
-header_decode_param(const char **in, char **paramp, char **valuep)
-{
- const char *inptr = *in;
- char *param, *value=NULL;
-
- param = decode_token(&inptr);
- header_decode_lwsp(&inptr);
- if (*inptr == '=') {
- inptr++;
- value = header_decode_value(&inptr);
- }
-
- if (param && value) {
- *paramp = param;
- *valuep = value;
- *in = inptr;
- return 0;
- } else {
- g_free(param);
- g_free(value);
- return 1;
- }
-}
-
-char *
-header_param(struct _header_param *p, const char *name)
-{
- while (p && strcasecmp(p->name, name) != 0)
- p = p->next;
- if (p)
- return p->value;
- return NULL;
-}
-
-struct _header_param *
-header_set_param(struct _header_param **l, const char *name, const char *value)
-{
- struct _header_param *p = (struct _header_param *)l, *pn;
-
- while (p->next) {
- pn = p->next;
- if (!strcasecmp(pn->name, name)) {
- g_free(pn->value);
- if (value) {
- pn->value = g_strdup(value);
- return pn;
- } else {
- p->next = pn->next;
- g_free(pn);
- return NULL;
- }
- }
- p = pn;
- }
-
- if (value == NULL)
- return NULL;
-
- pn = g_malloc(sizeof(*pn));
- pn->next = 0;
- pn->name = g_strdup(name);
- pn->value = g_strdup(value);
- p->next = pn;
-
- return pn;
-}
-
-const char *
-header_content_type_param(struct _header_content_type *t, const char *name)
-{
- if (t==NULL)
- return NULL;
- return header_param(t->params, name);
-}
-
-void header_content_type_set_param(struct _header_content_type *t, const char *name, const char *value)
-{
- header_set_param(&t->params, name, value);
-}
-
-/**
- * header_content_type_is:
- * @ct: A content type specifier, or #NULL.
- * @type: A type to check against.
- * @subtype: A subtype to check against, or "*" to match any subtype.
- *
- * Returns #TRUE if the content type @ct is of type @type/@subtype.
- * The subtype of "*" will match any subtype. If @ct is #NULL, then
- * it will match the type "text/plain".
- *
- * Return value: #TRUE or #FALSE depending on the matching of the type.
- **/
-int
-header_content_type_is(struct _header_content_type *ct, const char *type, const char *subtype)
-{
- /* no type == text/plain or text/"*" */
- if (ct==NULL || (ct->type == NULL && ct->subtype == NULL)) {
- return (!strcasecmp(type, "text")
- && (!strcasecmp(subtype, "plain")
- || !strcasecmp(subtype, "*")));
- }
-
- return (ct->type != NULL
- && (!strcasecmp(ct->type, type)
- && ((ct->subtype != NULL
- && !strcasecmp(ct->subtype, subtype))
- || !strcasecmp("*", subtype))));
-}
-
-void
-header_param_list_free(struct _header_param *p)
-{
- struct _header_param *n;
-
- while (p) {
- n = p->next;
- g_free(p->name);
- g_free(p->value);
- g_free(p);
- p = n;
- }
-}
-
-struct _header_content_type *
-header_content_type_new(const char *type, const char *subtype)
-{
- struct _header_content_type *t = g_malloc(sizeof(*t));
-
- t->type = g_strdup(type);
- t->subtype = g_strdup(subtype);
- t->params = NULL;
- t->refcount = 1;
- return t;
-}
-
-void
-header_content_type_ref(struct _header_content_type *ct)
-{
- if (ct)
- ct->refcount++;
-}
-
-
-void
-header_content_type_unref(struct _header_content_type *ct)
-{
- if (ct) {
- if (ct->refcount <= 1) {
- header_param_list_free(ct->params);
- g_free(ct->type);
- g_free(ct->subtype);
- g_free(ct);
- } else {
- ct->refcount--;
- }
- }
-}
-
-/* for decoding email addresses, canonically */
-static char *
-header_decode_domain(const char **in)
-{
- const char *inptr = *in, *start;
- int go = TRUE;
- char *ret;
- GString *domain = g_string_new("");
-
- /* domain ref | domain literal */
- header_decode_lwsp(&inptr);
- while (go) {
- if (*inptr == '[') { /* domain literal */
- domain = g_string_append(domain, "[ ");
- inptr++;
- header_decode_lwsp(&inptr);
- start = inptr;
- while (is_dtext(*inptr)) {
- domain = g_string_append_c(domain, *inptr);
- inptr++;
- }
- if (*inptr == ']') {
- domain = g_string_append(domain, " ]");
- inptr++;
- } else {
- w(g_warning("closing ']' not found in domain: %s", *in));
- }
- } else {
- char *a = header_decode_atom(&inptr);
- if (a) {
- domain = g_string_append(domain, a);
- g_free(a);
- } else {
- w(g_warning("missing atom from domain-ref"));
- break;
- }
- }
- header_decode_lwsp(&inptr);
- if (*inptr == '.') { /* next sub-domain? */
- domain = g_string_append_c(domain, '.');
- inptr++;
- header_decode_lwsp(&inptr);
- } else
- go = FALSE;
- }
-
- *in = inptr;
-
- ret = domain->str;
- g_string_free(domain, FALSE);
- return ret;
-}
-
-static char *
-header_decode_addrspec(const char **in)
-{
- const char *inptr = *in;
- char *word;
- GString *addr = g_string_new("");
-
- header_decode_lwsp(&inptr);
-
- /* addr-spec */
- word = header_decode_word(&inptr);
- if (word) {
- addr = g_string_append(addr, word);
- header_decode_lwsp(&inptr);
- g_free(word);
- while (*inptr == '.' && word) {
- inptr++;
- addr = g_string_append_c(addr, '.');
- word = header_decode_word(&inptr);
- if (word) {
- addr = g_string_append(addr, word);
- header_decode_lwsp(&inptr);
- g_free(word);
- } else {
- w(g_warning("Invalid address spec: %s", *in));
- }
- }
- if (*inptr == '@') {
- inptr++;
- addr = g_string_append_c(addr, '@');
- word = header_decode_domain(&inptr);
- if (word) {
- addr = g_string_append(addr, word);
- g_free(word);
- } else {
- w(g_warning("Invalid address, missing domain: %s", *in));
- }
- } else {
- w(g_warning("Invalid addr-spec, missing @: %s", *in));
- }
- } else {
- w(g_warning("invalid addr-spec, no local part"));
- }
-
- /* FIXME: return null on error? */
-
- *in = inptr;
- word = addr->str;
- g_string_free(addr, FALSE);
- return word;
-}
-
-/*
- address:
- word *('.' word) @ domain |
- *(word) '<' [ *('@' domain ) ':' ] word *( '.' word) @ domain |
-
- 1*word ':' [ word ... etc (mailbox, as above) ] ';'
- */
-
-/* mailbox:
- word *( '.' word ) '@' domain
- *(word) '<' [ *('@' domain ) ':' ] word *( '.' word) @ domain
- */
-
-static struct _header_address *
-header_decode_mailbox(const char **in)
-{
- const char *inptr = *in;
- char *pre;
- int closeme = FALSE;
- GString *addr;
- GString *name = NULL;
- struct _header_address *address = NULL;
- const char *comment = NULL;
-
- addr = g_string_new("");
-
- /* for each address */
- pre = header_decode_word(&inptr);
- header_decode_lwsp(&inptr);
- if (!(*inptr == '.' || *inptr == '@' || *inptr==',' || *inptr=='\0')) {
- /* ',' and '\0' required incase it is a simple address, no @ domain part (buggy writer) */
- name = g_string_new("");
- while (pre) {
- char *text, *last;
-
- /* perform internationalised decoding, and append */
- text = header_decode_string(pre);
- name = g_string_append(name, text);
- last = pre;
- g_free(text);
-
- pre = header_decode_word(&inptr);
- if (pre) {
- int l = strlen(last);
- int p = strlen(pre);
- /* dont append ' ' between sucsessive encoded words */
- if ((l>6 && last[l-2] == '?' && last[l-1] == '=')
- && (p>6 && pre[0] == '=' && pre[1] == '?')) {
- /* dont append ' ' */
- } else {
- name = g_string_append_c(name, ' ');
- }
- }
- g_free(last);
- }
- header_decode_lwsp(&inptr);
- if (*inptr == '<') {
- closeme = TRUE;
- inptr++;
- header_decode_lwsp(&inptr);
- if (*inptr == '@') {
- while (*inptr == '@') {
- inptr++;
- header_decode_domain(&inptr);
- header_decode_lwsp(&inptr);
- if (*inptr == ',') {
- inptr++;
- header_decode_lwsp(&inptr);
- }
- }
- if (*inptr == ':') {
- inptr++;
- } else {
- w(g_warning("broken route-address, missing ':': %s", *in));
- }
- }
- pre = header_decode_word(&inptr);
- header_decode_lwsp(&inptr);
- } else {
- w(g_warning("broken address? %s", *in));
- }
- }
-
- if (pre) {
- addr = g_string_append(addr, pre);
- } else {
- w(g_warning("No local-part for email address: %s", *in));
- }
-
- /* should be at word '.' localpart */
- while (*inptr == '.' && pre) {
- inptr++;
- g_free(pre);
- pre = header_decode_word(&inptr);
- if (pre) {
- addr = g_string_append_c(addr, '.');
- addr = g_string_append(addr, pre);
- }
- comment = inptr;
- header_decode_lwsp(&inptr);
- }
- g_free(pre);
-
- /* now at '@' domain part */
- if (*inptr == '@') {
- char *dom;
-
- inptr++;
- addr = g_string_append_c(addr, '@');
- comment = inptr;
- dom = header_decode_domain(&inptr);
- addr = g_string_append(addr, dom);
- g_free(dom);
- } else {
- w(g_warning("invalid address, no '@' domain part at %c: %s", *inptr, *in));
- }
-
- if (closeme) {
- header_decode_lwsp(&inptr);
- if (*inptr == '>') {
- inptr++;
- } else {
- w(g_warning("invalid route address, no closing '>': %s", *in));
- }
- } else if (name == NULL && comment != NULL && inptr>comment) { /* check for comment after address */
- char *text, *tmp;
- const char *comstart, *comend;
-
- /* this is a bit messy, we go from the last known position, because
- decode_domain/etc skip over any comments on the way */
- /* FIXME: This wont detect comments inside the domain itself,
- but nobody seems to use that feature anyway ... */
-
- d(printf("checking for comment from '%s'\n", comment));
-
- comstart = strchr(comment, '(');
- if (comstart) {
- comstart++;
- header_decode_lwsp(&inptr);
- comend = inptr-1;
- while (comend > comstart && comend[0] != ')')
- comend--;
-
- if (comend > comstart) {
- d(printf(" looking at subset '%.*s'\n", comend-comstart, comstart));
- tmp = g_strndup(comstart, comend-comstart);
- text = header_decode_string(tmp);
- name = g_string_new(text);
- g_free(tmp);
- g_free(text);
- }
- }
- }
-
- *in = inptr;
-
- if (addr->len > 0) {
- address = header_address_new_name(name?name->str:"", addr->str);
- }
-
- g_string_free(addr, TRUE);
- if (name)
- g_string_free(name, TRUE);
-
- d(printf("got mailbox: %s\n", addr->str));
- return address;
-}
-
-static struct _header_address *
-header_decode_address(const char **in)
-{
- const char *inptr = *in;
- char *pre;
- GString *group = g_string_new("");
- struct _header_address *addr = NULL, *member;
-
- /* pre-scan, trying to work out format, discard results */
- header_decode_lwsp(&inptr);
- while ( (pre = header_decode_word(&inptr)) ) {
- group = g_string_append(group, pre);
- group = g_string_append(group, " ");
- g_free(pre);
- }
- header_decode_lwsp(&inptr);
- if (*inptr == ':') {
- d(printf("group detected: %s\n", group->str));
- addr = header_address_new_group(group->str);
- /* that was a group spec, scan mailbox's */
- inptr++;
- /* FIXME: check rfc 2047 encodings of words, here or above in the loop */
- header_decode_lwsp(&inptr);
- if (*inptr != ';') {
- int go = TRUE;
- do {
- member = header_decode_mailbox(&inptr);
- if (member)
- header_address_add_member(addr, member);
- header_decode_lwsp(&inptr);
- if (*inptr == ',')
- inptr++;
- else
- go = FALSE;
- } while (go);
- if (*inptr == ';') {
- inptr++;
- } else {
- w(g_warning("Invalid group spec, missing closing ';': %s", *in));
- }
- } else {
- inptr++;
- }
- *in = inptr;
- } else {
- addr = header_decode_mailbox(in);
- }
-
- g_string_free(group, TRUE);
-
- return addr;
-}
-
-static char *
-header_msgid_decode_internal(const char **in)
-{
- const char *inptr = *in;
- char *msgid = NULL;
-
- d(printf("decoding Message-ID: '%s'\n", *in));
-
- header_decode_lwsp(&inptr);
- if (*inptr == '<') {
- inptr++;
- header_decode_lwsp(&inptr);
- msgid = header_decode_addrspec(&inptr);
- if (msgid) {
- header_decode_lwsp(&inptr);
- if (*inptr == '>') {
- inptr++;
- } else {
- w(g_warning("Missing closing '>' on message id: %s", *in));
- }
- } else {
- w(g_warning("Cannot find message id in: %s", *in));
- }
- } else {
- w(g_warning("missing opening '<' on message id: %s", *in));
- }
- *in = inptr;
-
- return msgid;
-}
-
-char *
-header_msgid_decode(const char *in)
-{
- if (in == NULL)
- return NULL;
-
- return header_msgid_decode_internal(&in);
-}
-
-void
-header_references_list_append_asis(struct _header_references **list, char *ref)
-{
- struct _header_references *w = (struct _header_references *)list, *n;
- while (w->next)
- w = w->next;
- n = g_malloc(sizeof(*n));
- n->id = ref;
- n->next = 0;
- w->next = n;
-}
-
-int
-header_references_list_size(struct _header_references **list)
-{
- int count = 0;
- struct _header_references *w = *list;
- while (w) {
- count++;
- w = w->next;
- }
- return count;
-}
-
-void
-header_references_list_clear(struct _header_references **list)
-{
- struct _header_references *w = *list, *n;
- while (w) {
- n = w->next;
- g_free(w->id);
- g_free(w);
- w = n;
- }
- *list = NULL;
-}
-
-/* generate a list of references, from most recent up */
-struct _header_references *
-header_references_decode(const char *in)
-{
- const char *inptr = in;
- struct _header_references *head = NULL, *node;
- char *id, *word;
-
- if (in == NULL || in[0] == '\0')
- return NULL;
-
- while (*inptr) {
- header_decode_lwsp(&inptr);
- if (*inptr == '<') {
- id = header_msgid_decode_internal(&inptr);
- if (id) {
- node = g_malloc(sizeof(*node));
- node->next = head;
- head = node;
- node->id = id;
- }
- } else {
- word = header_decode_word(&inptr);
- if (word)
- g_free (word);
- else if (*inptr != '\0')
- inptr++; /* Stupid mailer tricks */
- }
- }
-
- return head;
-}
-
-struct _header_references *
-header_references_dup(const struct _header_references *list)
-{
- struct _header_references *new = NULL, *tmp;
-
- while (list) {
- tmp = g_new(struct _header_references, 1);
- tmp->next = new;
- tmp->id = g_strdup(list->id);
- new = tmp;
- list = list->next;
- }
- return new;
-}
-
-struct _header_address *
-header_mailbox_decode(const char *in)
-{
- if (in == NULL)
- return NULL;
-
- return header_decode_mailbox(&in);
-}
-
-struct _header_address *
-header_address_decode(const char *in)
-{
- const char *inptr = in, *last;
- struct _header_address *list = NULL, *addr;
-
- d(printf("decoding To: '%s'\n", in));
-
- if (in == NULL)
- return NULL;
-
- do {
- last = inptr;
- addr = header_decode_address(&inptr);
- if (addr)
- header_address_list_append(&list, addr);
- header_decode_lwsp(&inptr);
- if (*inptr == ',')
- inptr++;
- else
- break;
- } while (inptr != last);
-
- if (*inptr) {
- w(g_warning("Invalid input detected at %c (%d): %s\n or at: %s", *inptr, inptr-in, in, inptr));
- }
-
- if (inptr == last) {
- w(g_warning("detected invalid input loop at : %s", last));
- }
-
- return list;
-}
-
-void
-header_mime_decode(const char *in, int *maj, int *min)
-{
- const char *inptr = in;
- int major=-1, minor=-1;
-
- d(printf("decoding MIME-Version: '%s'\n", in));
-
- if (in != NULL) {
- header_decode_lwsp(&inptr);
- if (isdigit(*inptr)) {
- major = header_decode_int(&inptr);
- header_decode_lwsp(&inptr);
- if (*inptr == '.') {
- inptr++;
- header_decode_lwsp(&inptr);
- if (isdigit(*inptr))
- minor = header_decode_int(&inptr);
- }
- }
- }
-
- if (maj)
- *maj = major;
- if (min)
- *min = minor;
-
- d(printf("major = %d, minor = %d\n", major, minor));
-}
-
-static struct _header_param *
-header_decode_param_list(const char **in)
-{
- const char *inptr = *in;
- struct _header_param *head = NULL, *tail = NULL;
-
- header_decode_lwsp(&inptr);
- while (*inptr == ';') {
- char *param, *value;
- struct _header_param *p;
-
- inptr++;
- /* invalid format? */
- if (header_decode_param(&inptr, &param, &value) != 0)
- break;
-
- p = g_malloc(sizeof(*p));
- p->name = param;
- p->value = value;
- p->next = NULL;
- if (head == NULL)
- head = p;
- if (tail)
- tail->next = p;
- tail = p;
- header_decode_lwsp(&inptr);
- }
- *in = inptr;
- return head;
-}
-
-struct _header_param *
-header_param_list_decode(const char *in)
-{
- if (in == NULL)
- return NULL;
-
- return header_decode_param_list(&in);
-}
-
-void
-header_param_list_format_append(GString *out, struct _header_param *p)
-{
- int len = out->len;
- char *ch;
-
- while (p) {
- int here = out->len;
- if (len+strlen(p->name)+strlen(p->value)>60) {
- out = g_string_append(out, ";\n\t");
- len = 0;
- } else
- out = g_string_append (out, "; ");
-
- g_string_sprintfa(out, "%s=", p->name);
-
- for (ch = p->value; *ch; ch++) {
- if (is_tspecial (*ch) || is_lwsp (*ch))
- break;
- }
- if (!*ch)
- g_string_append(out, p->value);
- else
- quote_word(out, TRUE, p->value, strlen(p->value));
-
- len += (out->len - here);
- p = p->next;
- }
-}
-
-char *
-header_param_list_format(struct _header_param *p)
-{
- GString *out = g_string_new("");
- char *ret;
-
- header_param_list_format_append(out, p);
- ret = out->str;
- g_string_free(out, FALSE);
- return ret;
-}
-
-struct _header_content_type *
-header_content_type_decode(const char *in)
-{
- const char *inptr = in;
- char *type, *subtype = NULL;
- struct _header_content_type *t = NULL;
-
- if (in==NULL)
- return NULL;
-
- type = decode_token(&inptr);
- header_decode_lwsp(&inptr);
- if (type) {
- if (*inptr == '/') {
- inptr++;
- subtype = decode_token(&inptr);
- }
- if (subtype == NULL && (!strcasecmp(type, "text"))) {
- w(g_warning("text type with no subtype, resorting to text/plain: %s", in));
- subtype = g_strdup("plain");
- }
- if (subtype == NULL) {
- w(g_warning("MIME type with no subtype: %s", in));
- }
-
- t = header_content_type_new(type, subtype);
- t->params = header_decode_param_list(&inptr);
- g_free(type);
- g_free(subtype);
- } else {
- g_free(type);
- d(printf("cannot find MIME type in header (2) '%s'", in));
- }
- return t;
-}
-
-void
-header_content_type_dump(struct _header_content_type *ct)
-{
- struct _header_param *p;
-
- printf("Content-Type: ");
- if (ct==NULL) {
- printf("<NULL>\n");
- return;
- }
- printf("%s / %s", ct->type, ct->subtype);
- p = ct->params;
- if (p) {
- while (p) {
- printf(";\n\t%s=\"%s\"", p->name, p->value);
- p = p->next;
- }
- }
- printf("\n");
-}
-
-char *
-header_content_type_format(struct _header_content_type *ct)
-{
- GString *out;
- char *ret;
-
- if (ct==NULL)
- return NULL;
-
- out = g_string_new("");
- if (ct->type == NULL) {
- g_string_sprintfa(out, "text/plain");
- w(g_warning("Content-Type with no main type"));
- } else if (ct->subtype == NULL) {
- w(g_warning("Content-Type with no sub type: %s", ct->type));
- if (!strcasecmp(ct->type, "multipart"))
- g_string_sprintfa(out, "%s/mixed", ct->type);
- else
- g_string_sprintfa(out, "%s", ct->type);
- } else {
- g_string_sprintfa(out, "%s/%s", ct->type, ct->subtype);
- }
- header_param_list_format_append(out, ct->params);
-
- ret = out->str;
- g_string_free(out, FALSE);
- return ret;
-}
-
-char *
-header_content_type_simple(struct _header_content_type *ct)
-{
- return g_strdup_printf("%s/%s", ct->type, ct->subtype);
-}
-
-char *
-header_content_encoding_decode(const char *in)
-{
- if (in)
- return decode_token(&in);
- return NULL;
-}
-
-CamelMimeDisposition *header_disposition_decode(const char *in)
-{
- CamelMimeDisposition *d = NULL;
- const char *inptr = in;
-
- if (in == NULL)
- return NULL;
-
- d = g_malloc(sizeof(*d));
- d->refcount = 1;
- d->disposition = decode_token(&inptr);
- if (d->disposition == NULL)
- w(g_warning("Empty disposition type"));
- d->params = header_decode_param_list(&inptr);
- return d;
-}
-
-void header_disposition_ref(CamelMimeDisposition *d)
-{
- if (d)
- d->refcount++;
-}
-void header_disposition_unref(CamelMimeDisposition *d)
-{
- if (d) {
- if (d->refcount<=1) {
- header_param_list_free(d->params);
- g_free(d->disposition);
- g_free(d);
- } else {
- d->refcount--;
- }
- }
-}
-
-char *header_disposition_format(CamelMimeDisposition *d)
-{
- GString *out;
- char *ret;
-
- if (d==NULL)
- return NULL;
-
- out = g_string_new("");
- if (d->disposition)
- out = g_string_append(out, d->disposition);
- else
- out = g_string_append(out, "attachment");
- header_param_list_format_append(out, d->params);
-
- ret = out->str;
- g_string_free(out, FALSE);
- return ret;
-}
-
-/* hrm, is there a library for this shit? */
-static struct {
- char *name;
- int offset;
-} tz_offsets [] = {
- { "UT", 0 },
- { "GMT", 0 },
- { "EST", -500 }, /* these are all US timezones. bloody yanks */
- { "EDT", -400 },
- { "CST", -600 },
- { "CDT", -500 },
- { "MST", -700 },
- { "MDT", -600 },
- { "PST", -800 },
- { "PDT", -700 },
- { "Z", 0 },
- { "A", -100 },
- { "M", -1200 },
- { "N", 100 },
- { "Y", 1200 },
-};
-
-static char *tz_months [] = {
- "Jan", "Feb", "Mar", "Apr", "May", "Jun",
- "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
-};
-
-char *
-header_format_date(time_t time, int offset)
-{
- struct tm tm;
-
- d(printf("offset = %d\n", offset));
-
- d(printf("converting date %s", ctime(&time)));
-
- time += ((offset / 100) * (60*60)) + (offset % 100)*60;
-
- d(printf("converting date %s", ctime(&time)));
-
- memcpy(&tm, gmtime(&time), sizeof(tm));
-
- return g_strdup_printf("%02d %s %04d %02d:%02d:%02d %+05d",
- tm.tm_mday, tz_months[tm.tm_mon],
- tm.tm_year + 1900,
- tm.tm_hour, tm.tm_min, tm.tm_sec,
- offset);
-}
-
-/* convert a date to time_t representation */
-/* this is an awful mess oh well */
-time_t
-header_decode_date(const char *in, int *saveoffset)
-{
- const char *inptr = in;
- char *monthname;
- int year, offset = 0;
- struct tm tm;
- int i;
- time_t t;
-
- if (in == NULL) {
- if (saveoffset)
- *saveoffset = 0;
- return 0;
- }
-
- d(printf ("\ndecoding date '%s'\n", inptr));
-
- memset (&tm, 0, sizeof(tm));
-
- header_decode_lwsp (&inptr);
- if (!isdigit (*inptr)) {
- char *day = decode_token (&inptr);
- /* we dont really care about the day, it's only for display */
- if (day) {
- d(printf ("got day: %s\n", day));
- g_free (day);
- header_decode_lwsp (&inptr);
- if (*inptr == ',') {
- inptr++;
- } else {
-#ifndef CLEAN_DATE
- char *newdate;
-
- w(g_warning("day not followed by ',' it's probably a broken mail client, so we'll ignore its date entirely"));
- w(printf ("Giving it one last chance...\n"));
- newdate = parse_broken_date (in);
- if (newdate) {
- w(printf ("Got: %s\n", newdate));
- t = header_decode_date (newdate, saveoffset);
- g_free (newdate);
- return t;
- }
-#endif
- if (saveoffset)
- *saveoffset = 0;
- return 0;
- }
- }
- }
- tm.tm_mday = header_decode_int(&inptr);
- monthname = decode_token(&inptr);
- if (monthname) {
- for (i=0;i<sizeof(tz_months)/sizeof(tz_months[0]);i++) {
- if (!strcasecmp(tz_months[i], monthname)) {
- tm.tm_mon = i;
- break;
- }
- }
- g_free(monthname);
- }
- year = header_decode_int(&inptr);
- if (year < 69 || (year >= 100 && year < 1900)) {
- tm.tm_year = 100 + year;
- } else if (year < 100) {
- tm.tm_year = year;
- } else {
- tm.tm_year = year - 1900;
- }
- /* get the time ... yurck */
- tm.tm_hour = header_decode_int(&inptr);
- header_decode_lwsp(&inptr);
- if (*inptr == ':')
- inptr++;
- tm.tm_min = header_decode_int(&inptr);
- header_decode_lwsp(&inptr);
- if (*inptr == ':')
- inptr++;
- tm.tm_sec = header_decode_int(&inptr);
- header_decode_lwsp(&inptr);
- if (*inptr == '+'
- || *inptr == '-') {
- offset = (*inptr++)=='-'?-1:1;
- offset = offset * header_decode_int(&inptr);
- d(printf("abs signed offset = %d\n", offset));
- } else if (isdigit(*inptr)) {
- offset = header_decode_int(&inptr);
- d(printf("abs offset = %d\n", offset));
- } else {
- char *tz = decode_token(&inptr);
-
- if (tz) {
- for (i=0;i<sizeof(tz_offsets)/sizeof(tz_offsets[0]);i++) {
- if (!strcasecmp(tz_offsets[i].name, tz)) {
- offset = tz_offsets[i].offset;
- break;
- }
- }
- g_free(tz);
- }
- /* some broken mailers seem to put in things like GMT+1030 instead of just +1030 */
- header_decode_lwsp(&inptr);
- if (*inptr == '+' || *inptr == '-') {
- int sign = (*inptr++)=='-'?-1:1;
- offset = offset + (header_decode_int(&inptr)*sign);
- }
- d(printf("named offset = %d\n", offset));
- }
-
- t = mktime(&tm);
-#if defined(HAVE_TIMEZONE)
- t -= timezone;
-#elif defined(HAVE_TM_GMTOFF)
- t += tm.tm_gmtoff;
-#else
-#error Neither HAVE_TIMEZONE nor HAVE_TM_GMTOFF defined. Rerun autoheader, autoconf, etc.
-#endif
-
- /* t is now GMT of the time we want, but not offset by the timezone ... */
-
- d(printf(" gmt normalized? = %s\n", ctime(&t)));
-
- /* this should convert the time to the GMT equiv time */
- t -= ( (offset/100) * 60*60) + (offset % 100)*60;
-
- d(printf(" gmt normalized for timezone? = %s\n", ctime(&t)));
-
- d({
- char *tmp;
- tmp = header_format_date(t, offset);
- printf(" encoded again: %s\n", tmp);
- g_free(tmp);
- });
-
- if (saveoffset)
- *saveoffset = offset;
-
- return t;
-}
-
-char *
-header_location_decode(const char *in)
-{
- const char *p;
-
- /* Sigh. RFC2557 says:
- * content-location = "Content-Location:" [CFWS] URI [CFWS]
- * where URI is restricted to the syntax for URLs as
- * defined in Uniform Resource Locators [URL] until
- * IETF specifies other kinds of URIs.
- *
- * But Netscape puts quotes around the URI when sending web
- * pages.
- */
-
- header_decode_lwsp(&in);
- if (*in == '"')
- return header_decode_quoted_string(&in);
- else {
- for (p = in; *p && !is_lwsp(*p); p++)
- ;
- return g_strndup(in, p - in);
- }
-}
-
-
-/* extra rfc checks */
-#define CHECKS
-
-#ifdef CHECKS
-static void
-check_header(struct _header_raw *h)
-{
- unsigned char *p;
-
- p = h->value;
- while (p && *p) {
- if (!isascii(*p)) {
- w(g_warning("Appending header violates rfc: %s: %s", h->name, h->value));
- return;
- }
- p++;
- }
-}
-#endif
-
-void
-header_raw_append_parse(struct _header_raw **list, const char *header, int offset)
-{
- register const char *in;
- int fieldlen;
- char *name;
-
- in = header;
- while (is_fieldname(*in) || *in==':')
- in++;
- fieldlen = in-header-1;
- while (is_lwsp(*in))
- in++;
- if (fieldlen == 0 || header[fieldlen] != ':') {
- printf("Invalid header line: '%s'\n", header);
- return;
- }
- name = alloca(fieldlen+1);
- memcpy(name, header, fieldlen);
- name[fieldlen] = 0;
-
- header_raw_append(list, name, in, offset);
-}
-
-void
-header_raw_append(struct _header_raw **list, const char *name, const char *value, int offset)
-{
- struct _header_raw *l, *n;
-
- d(printf("Header: %s: %s\n", name, value));
-
- n = g_malloc(sizeof(*n));
- n->next = NULL;
- n->name = g_strdup(name);
- n->value = g_strdup(value);
- n->offset = offset;
-#ifdef CHECKS
- check_header(n);
-#endif
- l = (struct _header_raw *)list;
- while (l->next) {
- l = l->next;
- }
- l->next = n;
-
- /* debug */
-#if 0
- if (!strcasecmp(name, "To")) {
- printf("- Decoding To\n");
- header_to_decode(value);
- } else if (!strcasecmp(name, "Content-type")) {
- printf("- Decoding content-type\n");
- header_content_type_dump(header_content_type_decode(value));
- } else if (!strcasecmp(name, "MIME-Version")) {
- printf("- Decoding mime version\n");
- header_mime_decode(value);
- }
-#endif
-}
-
-static struct _header_raw *
-header_raw_find_node(struct _header_raw **list, const char *name)
-{
- struct _header_raw *l;
-
- l = *list;
- while (l) {
- if (!strcasecmp(l->name, name))
- break;
- l = l->next;
- }
- return l;
-}
-
-const char *
-header_raw_find(struct _header_raw **list, const char *name, int *offset)
-{
- struct _header_raw *l;
-
- l = header_raw_find_node(list, name);
- if (l) {
- if (offset)
- *offset = l->offset;
- return l->value;
- } else
- return NULL;
-}
-
-const char *
-header_raw_find_next(struct _header_raw **list, const char *name, int *offset, const char *last)
-{
- struct _header_raw *l;
-
- if (last == NULL || name == NULL)
- return NULL;
-
- l = *list;
- while (l && l->value != last)
- l = l->next;
- return header_raw_find(&l, name, offset);
-}
-
-static void
-header_raw_free(struct _header_raw *l)
-{
- g_free(l->name);
- g_free(l->value);
- g_free(l);
-}
-
-void
-header_raw_remove(struct _header_raw **list, const char *name)
-{
- struct _header_raw *l, *p;
-
- /* the next pointer is at the head of the structure, so this is safe */
- p = (struct _header_raw *)list;
- l = *list;
- while (l) {
- if (!strcasecmp(l->name, name)) {
- p->next = l->next;
- header_raw_free(l);
- l = p->next;
- } else {
- p = l;
- l = l->next;
- }
- }
-}
-
-void
-header_raw_replace(struct _header_raw **list, const char *name, const char *value, int offset)
-{
- header_raw_remove(list, name);
- header_raw_append(list, name, value, offset);
-}
-
-void
-header_raw_clear(struct _header_raw **list)
-{
- struct _header_raw *l, *n;
- l = *list;
- while (l) {
- n = l->next;
- header_raw_free(l);
- l = n;
- }
- *list = NULL;
-}
-
-char *
-header_msgid_generate (void)
-{
- char host[MAXHOSTNAMELEN];
-#ifdef ENABLE_THREADS
- static pthread_mutex_t count_lock = PTHREAD_MUTEX_INITIALIZER;
-#define COUNT_LOCK() pthread_mutex_lock (&count_lock)
-#define COUNT_UNLOCK() pthread_mutex_unlock (&count_lock)
-#else
-#define COUNT_LOCK()
-#define COUNT_UNLOCK()
-#endif /* ENABLE_THREADS */
- static gint count = 0;
- gint hrv;
- char *ret;
-
- hrv = gethostname (host, sizeof (host));
-
- COUNT_LOCK ();
- ret = g_strdup_printf ("%d.%d.%d.camel@%s", (gint) time (NULL), getpid (), count++,
- (hrv == 0 && host && *host) ? host : "unknown.host");
- COUNT_UNLOCK ();
-
- return ret;
-}
-
-
-static struct {
- char *name;
- char *pattern;
-} mail_list_magic[] = {
- { "Sender", " *owner-([^@]+)" },
- { "Return-Path", " *owner-([^@]+)" },
- { "X-BeenThere", " *([^@]+)" },
- { "Delivered-To", " *mailing list ([^@]+)" },
- { "X-Mailing-List", " *([^@]+)" },
- { "X-Loop", " *([^@]+)" },
- { "List-Id", " *([^<]+)" },
-};
-
-char *
-header_raw_check_mailing_list(struct _header_raw **list)
-{
- const char *v;
- regex_t pattern;
- regmatch_t match[2];
- int i, errcode;
-
- for (i = 0; i < sizeof (mail_list_magic) / sizeof (mail_list_magic[0]); i++) {
- if ((errcode = regcomp (&pattern, mail_list_magic[i].pattern, REG_EXTENDED|REG_ICASE)) != 0) {
- char *errstr;
- size_t len;
-
- len = regerror (errcode, &pattern, NULL, 0);
- errstr = g_malloc0 (len + 1);
- regerror (errcode, &pattern, errstr, len);
-
- g_warning ("Internal error, compiling regex failed: %s: %s",
- mail_list_magic[i].pattern, errstr);
- g_free (errstr);
-
- continue;
- }
-
- v = header_raw_find(list, mail_list_magic[i].name, NULL);
- if (v != NULL && regexec(&pattern, v, 2, match, 0) == 0 && match[1].rm_so != -1) {
- regfree(&pattern);
- return g_strndup(v+match[1].rm_so, match[1].rm_eo-match[1].rm_so);
- }
- regfree(&pattern);
- }
-
- return NULL;
-}
-
-/* ok, here's the address stuff, what a mess ... */
-struct _header_address *header_address_new(void)
-{
- struct _header_address *h;
- h = g_malloc0(sizeof(*h));
- h->type = HEADER_ADDRESS_NONE;
- h->refcount = 1;
- return h;
-}
-
-struct _header_address *header_address_new_name(const char *name, const char *addr)
-{
- struct _header_address *h;
-
- h = header_address_new();
- h->type = HEADER_ADDRESS_NAME;
- h->name = g_strdup(name);
- h->v.addr = g_strdup(addr);
- return h;
-}
-
-struct _header_address *header_address_new_group(const char *name)
-{
- struct _header_address *h;
-
- h = header_address_new();
- h->type = HEADER_ADDRESS_GROUP;
- h->name = g_strdup(name);
- return h;
-}
-
-void header_address_ref(struct _header_address *h)
-{
- if (h)
- h->refcount++;
-}
-
-void header_address_unref(struct _header_address *h)
-{
- if (h) {
- if (h->refcount <= 1) {
- if (h->type == HEADER_ADDRESS_GROUP) {
- header_address_list_clear(&h->v.members);
- } else if (h->type == HEADER_ADDRESS_NAME) {
- g_free(h->v.addr);
- }
- g_free(h->name);
- g_free(h);
- } else {
- h->refcount--;
- }
- }
-}
-
-void header_address_set_name(struct _header_address *h, const char *name)
-{
- if (h) {
- g_free(h->name);
- h->name = g_strdup(name);
- }
-}
-
-void header_address_set_addr(struct _header_address *h, const char *addr)
-{
- if (h) {
- if (h->type == HEADER_ADDRESS_NAME
- || h->type == HEADER_ADDRESS_NONE) {
- h->type = HEADER_ADDRESS_NAME;
- g_free(h->v.addr);
- h->v.addr = g_strdup(addr);
- } else {
- g_warning("Trying to set the address on a group");
- }
- }
-}
-
-void header_address_set_members(struct _header_address *h, struct _header_address *group)
-{
- if (h) {
- if (h->type == HEADER_ADDRESS_GROUP
- || h->type == HEADER_ADDRESS_NONE) {
- h->type = HEADER_ADDRESS_GROUP;
- header_address_list_clear(&h->v.members);
- /* should this ref them? */
- h->v.members = group;
- } else {
- g_warning("Trying to set the members on a name, not group");
- }
- }
-}
-
-void header_address_add_member(struct _header_address *h, struct _header_address *member)
-{
- if (h) {
- if (h->type == HEADER_ADDRESS_GROUP
- || h->type == HEADER_ADDRESS_NONE) {
- h->type = HEADER_ADDRESS_GROUP;
- header_address_list_append(&h->v.members, member);
- }
- }
-}
-
-void header_address_list_append_list(struct _header_address **l, struct _header_address **h)
-{
- if (l) {
- struct _header_address *n = (struct _header_address *)l;
-
- while (n->next)
- n = n->next;
- n->next = *h;
- }
-}
-
-
-void header_address_list_append(struct _header_address **l, struct _header_address *h)
-{
- if (h) {
- header_address_list_append_list(l, &h);
- h->next = NULL;
- }
-}
-
-void header_address_list_clear(struct _header_address **l)
-{
- struct _header_address *a, *n;
- a = *l;
- while (a) {
- n = a->next;
- header_address_unref(a);
- a = n;
- }
- *l = NULL;
-}
-
-/* if encode is true, then the result is suitable for mailing, otherwise
- the result is suitable for display only (and may not even be re-parsable) */
-static void
-header_address_list_encode_append(GString *out, int encode, struct _header_address *a)
-{
- char *text;
-
- while (a) {
- switch (a->type) {
- case HEADER_ADDRESS_NAME:
- if (encode)
- text = header_encode_phrase (a->name);
- else
- text = a->name;
- if (text && *text)
- g_string_sprintfa(out, "%s <%s>", text, a->v.addr);
- else
- g_string_append(out, a->v.addr);
- if (encode)
- g_free(text);
- break;
- case HEADER_ADDRESS_GROUP:
- if (encode)
- text = header_encode_phrase(a->name);
- else
- text = a->name;
- g_string_sprintfa(out, "%s: ", text);
- header_address_list_encode_append(out, encode, a->v.members);
- g_string_sprintfa(out, ";");
- if (encode)
- g_free(text);
- break;
- default:
- g_warning("Invalid address type");
- break;
- }
- a = a->next;
- if (a)
- g_string_append(out, ", ");
- }
-}
-
-char *
-header_address_list_encode(struct _header_address *a)
-{
- GString *out;
- char *ret;
-
- if (a == NULL)
- return NULL;
-
- out = g_string_new("");
-
- header_address_list_encode_append(out, TRUE, a);
- ret = out->str;
- g_string_free(out, FALSE);
- return ret;
-}
-
-char *
-header_address_list_format(struct _header_address *a)
-{
- GString *out;
- char *ret;
-
- if (a == NULL)
- return NULL;
-
- out = g_string_new("");
-
- header_address_list_encode_append(out, FALSE, a);
- ret = out->str;
- g_string_free(out, FALSE);
- return ret;
-}
-
-#if 0
-static const char *
-header_fold_next_space (const char *in)
-{
- register const char *inptr = in;
- gboolean escaped = FALSE;
-
- if (is_lwsp (*inptr))
- return inptr;
-
- do {
- if (*inptr == '\\') {
- escaped = TRUE;
- } else if (*inptr == '"' && !escaped) {
- /* find the end of this quoted section */
- for (inptr++; *inptr; inptr++) {
- if (*inptr == '"' && *(inptr-1) != '\\')
- break;
- }
- } else {
- escaped = FALSE;
- }
-
- inptr++;
- } while (*inptr && !is_lwsp (*inptr));
-
- if (*inptr)
- return inptr;
- else
- return NULL;
-}
-
-/* I wonder if this might be better for folding headers? */
-char *
-header_fold (const char *in, int headerlen, gboolean force)
-{
- const char *inptr = in, *space, *p, *n;
- gboolean needunfold = FALSE;
- int len, outlen, i;
- GString *out;
- char *ret;
-
- if (in == NULL)
- return NULL;
-
- /* first, check to see if we even need to fold */
- len = headerlen + 2;
- p = in;
- while (*p) {
- n = strchr (p, '\n');
- if (n == NULL)
- n = p + strlen (p);
- else
- needunfold = TRUE;
-
- len += n - p;
-
- if (len >= CAMEL_FOLD_SIZE)
- break;
- len = 0;
- p = n + 1;
- }
-
- if (len < CAMEL_FOLD_SIZE)
- return g_strdup (in);
-
- /* we need to fold, so first unfold (if we need to), then process */
- if (needunfold)
- inptr = in = header_unfold (in);
-
- out = g_string_new ("");
- outlen = headerlen + 2;
- while (*inptr) {
- if (force)
- space = strchr (inptr, ' ');
- else
- space = header_fold_next_space (inptr);
-
- if (space) {
- len = space - inptr + 1;
- } else {
- len = strlen (inptr);
- }
-
- d(printf ("next word '%.*s'\n", len, inptr));
-
- if (outlen + len > CAMEL_FOLD_SIZE) {
- d(printf("outlen = %d wordlen = %d\n", outlen, len));
- /* strip trailing space */
- if (out->len > 0 && out->str[out->len-1] == ' ')
- g_string_truncate (out, out->len-1);
- g_string_append (out, "\n\t");
- outlen = 1;
-
- if (force) {
- /* check for very long words, just cut them up */
- while (outlen + len > CAMEL_FOLD_SIZE) {
- for (i = 0; i < CAMEL_FOLD_SIZE - outlen; i++)
- g_string_append_c (out, inptr[i]);
- inptr += CAMEL_FOLD_SIZE - outlen;
- len -= CAMEL_FOLD_SIZE - outlen;
- g_string_append (out, "\n\t");
- outlen = 1;
- }
- }
- }
-
- outlen += len;
-
- for (i = 0; i < len; i++)
- g_string_append_c (out, inptr[i]);
-
- inptr += len;
- }
-
- ret = out->str;
- g_string_free (out, FALSE);
-
- if (needunfold)
- g_free ((char *)in);
-
- return ret;
-}
-#endif
-
-
-/* simple header folding */
-/* will work even if the header is already folded */
-char *
-header_fold(const char *in, int headerlen)
-{
- int len, outlen, i;
- const char *inptr = in, *space, *p, *n;
- GString *out;
- char *ret;
- int needunfold = FALSE;
-
- if (in == NULL)
- return NULL;
-
- /* first, check to see if we even need to fold */
- len = headerlen + 2;
- p = in;
- while (*p) {
- n = strchr(p, '\n');
- if (n == NULL) {
- len += strlen (p);
- break;
- }
-
- needunfold = TRUE;
- len += n-p;
-
- if (len >= CAMEL_FOLD_SIZE)
- break;
- len = 0;
- p = n + 1;
- }
- if (len < CAMEL_FOLD_SIZE)
- return g_strdup(in);
-
- /* we need to fold, so first unfold (if we need to), then process */
- if (needunfold)
- inptr = in = header_unfold(in);
-
- out = g_string_new("");
- outlen = headerlen+2;
- while (*inptr) {
- space = strchr(inptr, ' ');
- if (space) {
- len = space-inptr+1;
- } else {
- len = strlen(inptr);
- }
- d(printf("next word '%.*s'\n", len, inptr));
- if (outlen + len > CAMEL_FOLD_SIZE) {
- d(printf("outlen = %d wordlen = %d\n", outlen, len));
- /* strip trailing space */
- if (out->len > 0 && out->str[out->len-1] == ' ')
- g_string_truncate(out, out->len-1);
- g_string_append(out, "\n\t");
- outlen = 1;
- /* check for very long words, just cut them up */
- while (outlen+len > CAMEL_FOLD_SIZE) {
- for (i=0;i<CAMEL_FOLD_SIZE-outlen;i++)
- g_string_append_c(out, inptr[i]);
- inptr += CAMEL_FOLD_SIZE-outlen;
- len -= CAMEL_FOLD_SIZE-outlen;
- g_string_append(out, "\n\t");
- outlen = 1;
- }
- }
- outlen += len;
- for (i=0;i<len;i++) {
- g_string_append_c(out, inptr[i]);
- }
- inptr += len;
- }
- ret = out->str;
- g_string_free(out, FALSE);
-
- if (needunfold)
- g_free((char *)in);
-
- return ret;
-}
-
-char *
-header_unfold(const char *in)
-{
- char *out = g_malloc(strlen(in)+1);
- const char *inptr = in;
- char c, *o = out;
-
- o = out;
- while ((c = *inptr++)) {
- if (c == '\n') {
- if (is_lwsp(*inptr)) {
- do {
- inptr++;
- } while (is_lwsp(*inptr));
- *o++ = ' ';
- } else {
- *o++ = c;
- }
- } else {
- *o++ = c;
- }
- }
- *o = 0;
-
- return out;
-}
-
-#ifdef BUILD_TABLE
-
-/* for debugging tests */
-/* should also have some regression tests somewhere */
-
-void test_phrase(const char *in)
-{
- printf("'%s' -> '%s'\n", in, header_encode_phrase(in));
-}
-
-void test_fold(const char *in)
-{
- printf("'%s'\n ->\n '%s'\n", in, header_fold(in));
-}
-
-void run_test(void)
-{
- char *to = "gnome hacker dudes: license-discuss@opensource.org,
- \"Richard M. Stallman\" <rms@gnu.org>,
- Barry Chester <barry_che@antdiv.gov.au>,
- Michael Zucchi <zucchi.michael(this (is a nested) comment)@zedzone.mmc.com.au>,
- Miguel de Icaza <miguel@gnome.org>;,
- zucchi@zedzone.mmc.com.au, \"Foo bar\" <zed@zedzone>,
- <frob@frobzone>";
-
-#if 0
- header_to_decode(to);
-
- header_mime_decode("1.0", 0, 0);
- header_mime_decode("1.3 (produced by metasend V1.0)", 0, 0);
- header_mime_decode("(produced by metasend V1.0) 5.2", 0, 0);
- header_mime_decode("7(produced by metasend 1.0) . (produced by helix/send/1.0) 9 . 5", 0, 0);
- header_mime_decode("3.", 0, 0);
- header_mime_decode(".", 0, 0);
- header_mime_decode(".5", 0, 0);
- header_mime_decode("c.d", 0, 0);
- header_mime_decode("", 0, 0);
-
- header_msgid_decode(" <\"L3x2i1.0.Nm5.Xd-Wu\"@lists.redhat.com>");
- header_msgid_decode("<200001180446.PAA02065@beaker.htb.com.au>");
-#endif
-
- test_fold("Header: This is a long header that should be folded properly at the right place, or so i hope. I should probably set the fold value to something lower for testing");
- test_fold("Header: nowletstryfoldingsomethingthatistoolongtofold,iwonderwhatitshoulddointsteadtofoldit?hmm,iguessicanjusttruncateitatsomepointortrytorefoldthepreviousstuff(yuck)tofit");
- test_phrase("Michael Zucchi (NotZed)");
- test_phrase("Zucchi, ( \\ NotZed \\ ) Michael");
- {
- int ic;
- char *outbuf, *inbuf, buffer[256];
- int inlen, outlen;
-
- outlen = 256;
- inbuf = "Dra¾en Kaèar";
- inlen = strlen(inbuf);
- outbuf = buffer;
- ic = iconv_open("UTF-8", "ISO-8859-1");
- iconv(ic, &inbuf, &inlen, &outbuf, &outlen);
- test_phrase(buffer);
-
- outlen = 256;
- inbuf = "This is an encoded phrase Tomasz K³oczko";
- inlen = strlen(inbuf);
- outbuf = buffer;
- ic = iconv_open("UTF-8", "ISO-8859-2");
- iconv(ic, &inbuf, &inlen, &outbuf, &outlen);
- test_phrase(buffer);
-
- }
-
- {
- char *str = "Blah blah\n\t = ? =? ?= This is a TEST For quoted-printable-encoding-encoding-of
- long lines, and lines that end in spaces
- and line sthat end in tabs
- And lines that just end.";
-
- char encoded[256];
- int state=-1,save=0;
- int len;
-
- len = quoted_encode_step(str, strlen(str), encoded, &state, &save);
- len += quoted_encode_close("", 0, encoded+len, &state, &save);
- printf("encoded = '%.*s'\n", len, encoded);
- }
-}
-
-#endif /* BUILD_TABLE */
diff --git a/camel/camel-mime-utils.h b/camel/camel-mime-utils.h
deleted file mode 100644
index 2739e5e0f9..0000000000
--- a/camel/camel-mime-utils.h
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- * Jeffrey Stedfast <fejj@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef _CAMEL_MIME_UTILS_H
-#define _CAMEL_MIME_UTILS_H
-
-#include <time.h>
-#include <glib.h>
-
-/* maximum size of a line from header_fold() */
-#define CAMEL_FOLD_SIZE (77)
-
-/* a list of references for this message */
-struct _header_references {
- struct _header_references *next;
- char *id;
-};
-
-struct _header_param {
- struct _header_param *next;
- char *name;
- char *value;
-};
-
-/* describes a content-type */
-struct _header_content_type {
- char *type;
- char *subtype;
- struct _header_param *params;
- unsigned int refcount;
-};
-
-/* a raw rfc822 header */
-/* the value MUST be US-ASCII */
-struct _header_raw {
- struct _header_raw *next;
- char *name;
- char *value;
- int offset; /* in file, if known */
-};
-
-typedef struct _CamelMimeDisposition {
- char *disposition;
- struct _header_param *params;
- unsigned int refcount;
-} CamelMimeDisposition;
-
-enum _header_address_type {
- HEADER_ADDRESS_NONE, /* uninitialised */
- HEADER_ADDRESS_NAME,
- HEADER_ADDRESS_GROUP
-};
-
-struct _header_address {
- struct _header_address *next;
- enum _header_address_type type;
- char *name;
- union {
- char *addr;
- struct _header_address *members;
- } v;
- unsigned int refcount;
-};
-
-/* Address lists */
-struct _header_address *header_address_new(void);
-struct _header_address *header_address_new_name(const char *name, const char *addr);
-struct _header_address *header_address_new_group(const char *name);
-void header_address_ref(struct _header_address *);
-void header_address_unref(struct _header_address *);
-void header_address_set_name(struct _header_address *, const char *name);
-void header_address_set_addr(struct _header_address *, const char *addr);
-void header_address_set_members(struct _header_address *, struct _header_address *group);
-void header_address_add_member(struct _header_address *, struct _header_address *member);
-void header_address_list_append_list(struct _header_address **l, struct _header_address **h);
-void header_address_list_append(struct _header_address **, struct _header_address *);
-void header_address_list_clear(struct _header_address **);
-
-struct _header_address *header_address_decode(const char *in);
-struct _header_address *header_mailbox_decode(const char *in);
-/* for mailing */
-char *header_address_list_encode(struct _header_address *a);
-/* for display */
-char *header_address_list_format(struct _header_address *a);
-
-/* structured header prameters */
-struct _header_param *header_param_list_decode(const char *in);
-char *header_param(struct _header_param *p, const char *name);
-struct _header_param *header_set_param(struct _header_param **l, const char *name, const char *value);
-void header_param_list_format_append(GString *out, struct _header_param *p);
-char *header_param_list_format(struct _header_param *p);
-void header_param_list_free(struct _header_param *p);
-
-/* Content-Type header */
-struct _header_content_type *header_content_type_new(const char *type, const char *subtype);
-struct _header_content_type *header_content_type_decode(const char *in);
-void header_content_type_unref(struct _header_content_type *ct);
-void header_content_type_ref(struct _header_content_type *ct);
-const char *header_content_type_param(struct _header_content_type *t, const char *name);
-void header_content_type_set_param(struct _header_content_type *t, const char *name, const char *value);
-int header_content_type_is(struct _header_content_type *ct, const char *type, const char *subtype);
-char *header_content_type_format(struct _header_content_type *ct);
-char *header_content_type_simple(struct _header_content_type *ct);
-
-/* DEBUGGING function */
-void header_content_type_dump(struct _header_content_type *ct);
-
-/* Content-Disposition header */
-CamelMimeDisposition *header_disposition_decode(const char *in);
-void header_disposition_ref(CamelMimeDisposition *);
-void header_disposition_unref(CamelMimeDisposition *);
-char *header_disposition_format(CamelMimeDisposition *d);
-
-/* decode the contents of a content-encoding header */
-char *header_content_encoding_decode(const char *in);
-
-/* raw headers */
-void header_raw_append(struct _header_raw **list, const char *name, const char *value, int offset);
-void header_raw_append_parse(struct _header_raw **list, const char *header, int offset);
-const char *header_raw_find(struct _header_raw **list, const char *name, int *ofset);
-const char *header_raw_find_next(struct _header_raw **list, const char *name, int *ofset, const char *last);
-void header_raw_replace(struct _header_raw **list, const char *name, const char *value, int offset);
-void header_raw_remove(struct _header_raw **list, const char *name);
-void header_raw_fold(struct _header_raw **list);
-void header_raw_clear(struct _header_raw **list);
-
-char *header_raw_check_mailing_list(struct _header_raw **list);
-
-/* fold a header */
-char *header_fold(const char *in, int headerlen);
-char *header_unfold(const char *in);
-
-/* decode a header which is a simple token */
-char *header_token_decode(const char *in);
-
-/* decode/encode a string type, like a subject line */
-char *header_decode_string(const char *in);
-char *header_encode_string(const unsigned char *in);
-
-/* encode a phrase, like the real name of an address */
-char *header_encode_phrase(const unsigned char *in);
-
-/* decode an email date field into a GMT time, + optional offset */
-time_t header_decode_date(const char *in, int *saveoffset);
-char *header_format_date(time_t time, int offset);
-
-/* decode a message id */
-char *header_msgid_decode(const char *in);
-
-/* generate msg id */
-char *header_msgid_generate (void);
-
-/* decode a References header */
-struct _header_references *header_references_decode(const char *in);
-void header_references_list_clear(struct _header_references **list);
-void header_references_list_append_asis(struct _header_references **list, char *ref);
-int header_references_list_size(struct _header_references **list);
-struct _header_references *header_references_dup(const struct _header_references *list);
-
-/* decode content-location */
-char *header_location_decode(const char *in);
-
-/* decode the mime-type header */
-void header_mime_decode(const char *in, int *maj, int *min);
-
-/* do incremental base64/quoted-printable (de/en)coding */
-int base64_decode_step(unsigned char *in, int len, unsigned char *out, int *state, unsigned int *save);
-
-int base64_encode_step(unsigned char *in, int len, gboolean break_lines, unsigned char *out, int *state, int *save);
-int base64_encode_close(unsigned char *in, int inlen, gboolean break_lines, unsigned char *out, int *state, int *save);
-
-int uudecode_step (unsigned char *in, int len, unsigned char *out, int *state, guint32 *save, char *uulen);
-
-int quoted_decode_step(unsigned char *in, int len, unsigned char *out, int *savestate, int *saveme);
-
-int quoted_encode_step(unsigned char *in, int len, unsigned char *out, int *state, int *save);
-int quoted_encode_close(unsigned char *in, int len, unsigned char *out, int *state, int *save);
-
-char *base64_encode_simple (const char *data, int len);
-int base64_decode_simple (char *data, int len);
-
-#endif /* ! _CAMEL_MIME_UTILS_H */
diff --git a/camel/camel-movemail.c b/camel/camel-movemail.c
deleted file mode 100644
index 4e1d67563d..0000000000
--- a/camel/camel-movemail.c
+++ /dev/null
@@ -1,598 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-movemail.c: mbox copying function */
-
-/*
- * Author:
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <sys/stat.h>
-#include <sys/uio.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <time.h>
-#include <unistd.h>
-#include <string.h>
-#include <signal.h>
-#ifdef HAVE_ALLOCA_H
-#include <alloca.h>
-#endif
-
-#include "camel-movemail.h"
-#include "camel-exception.h"
-
-#include "camel-mime-parser.h"
-#include "camel-mime-filter.h"
-#include "camel-mime-filter-from.h"
-
-#define d(x)
-
-#ifdef MOVEMAIL_PATH
-#include <sys/wait.h>
-
-static void movemail_external (const char *source, const char *dest,
- CamelException *ex);
-#endif
-
-/* these could probably be exposed as a utility? (but only mbox needs it) */
-#if 0
-static int camel_movemail_copy_filter(int fromfd, int tofd, off_t start, size_t bytes, CamelMimeFilter *filter);
-static int camel_movemail_copy(int fromfd, int tofd, off_t start, size_t bytes);
-#endif
-
-/**
- * camel_movemail: Copy an mbox file from a shared spool directory to a
- * new folder in a Camel store
- * @source: source file
- * @dest: destination file
- * @ex: a CamelException
- *
- * This copies an mbox file from a shared directory with multiple
- * readers and writers into a private (presumably Camel-controlled)
- * directory. Dot locking is used on the source file (but not the
- * destination).
- **/
-void
-camel_movemail (const char *source, const char *dest, CamelException *ex)
-{
- gboolean locked;
- int sfd, dfd, tmpfd;
- char *locktmpfile, *lockfile;
- struct stat st;
- time_t now, timeout;
- int nread, nwrote;
- char buf[BUFSIZ];
-
- camel_exception_clear (ex);
-
- /* Stat and then open the spool file. If it doesn't exist or
- * is empty, the user has no mail. (There's technically a race
- * condition here in that an MDA might have just now locked it
- * to deliver a message, but we don't care. In that case,
- * assuming it's unlocked is equivalent to pretending we were
- * called a fraction earlier.)
- */
- if (stat (source, &st) == -1) {
- if (errno != ENOENT) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not check mail file "
- "%s: %s"), source,
- g_strerror (errno));
- }
- return;
- }
- if (st.st_size == 0)
- return;
-
- /* Create the unique lock file. */
- locktmpfile = g_strdup_printf ("%s.lock.XXXXXX", source);
-#ifdef HAVE_MKSTEMP
- tmpfd = mkstemp (locktmpfile);
-#else
- if (mktemp (locktmpfile)) {
- tmpfd = open (locktmpfile, O_RDWR | O_CREAT | O_EXCL,
- S_IRUSR | S_IWUSR);
- } else
- tmpfd = -1;
-#endif
- if (tmpfd == -1) {
- g_free (locktmpfile);
-#ifdef MOVEMAIL_PATH
- if (errno == EACCES) {
- /* movemail_external will fail if the dest file
- * already exists, so if it does, return now,
- * let the fetch code process the mail that's
- * already there, and then the user can try again.
- */
- if (stat (dest, &st) == 0)
- return;
-
- movemail_external (source, dest, ex);
- return;
- }
-#endif
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not create lock file "
- "for %s: %s"), source,
- g_strerror (errno));
- return;
- }
- close (tmpfd);
-
- sfd = open (source, O_RDWR);
- if (sfd == -1) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not open mail file %s: %s"),
- source, g_strerror (errno));
- unlink (locktmpfile);
- g_free (locktmpfile);
- return;
- }
-
- dfd = open (dest, O_WRONLY | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR);
- if (dfd == -1) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not open temporary mail "
- "file %s: %s"), dest,
- g_strerror (errno));
- close (sfd);
- unlink (locktmpfile);
- g_free (locktmpfile);
- return;
- }
-
- lockfile = g_strdup_printf ("%s.lock", source);
- locked = FALSE;
- time (&timeout);
- timeout += 30;
-
- /* Loop trying to lock the file for 30 seconds. */
- while (time (&now) < timeout) {
- /* Try to make the lock. */
- if (symlink (locktmpfile, lockfile) == 0) {
- locked = TRUE;
- break;
- }
-
- /* If we fail for a reason other than that someone
- * else has the lock, then abort.
- */
- if (errno != EEXIST) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not create lock "
- "file for %s: %s"), source,
- g_strerror (errno));
- break;
- }
-
- /* Check the modtime on the lock file. */
- if (stat (lockfile, &st) == -1) {
- /* If the lockfile disappeared, try again. */
- if (errno == ENOENT)
- continue;
-
- /* Some other error. Abort. */
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not test lock "
- "file for %s: %s"), source,
- g_strerror (errno));
- break;
- }
-
- /* If the lock file is stale, remove it and try again. */
- if (st.st_mtime < now - 60) {
- unlink (lockfile);
- continue;
- }
-
- /* Otherwise, sleep and try again. */
- sleep (5);
- }
-
- if (!locked) {
- /* Something has gone awry. */
- if (now >= timeout) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Timed out trying to get "
- "lock file on %s. Try again "
- "later."), source);
- }
- g_free (lockfile);
- unlink (locktmpfile);
- g_free (locktmpfile);
- close (sfd);
- close (dfd);
- return;
- }
-
- /* OK. We have the file locked now. */
-
- /* FIXME: Set a timer to keep the file locked. */
-
- while (1) {
- int written = 0;
-
- nread = read (sfd, buf, sizeof (buf));
- if (nread == 0)
- break;
- else if (nread == -1) {
- if (errno == EINTR)
- continue;
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Error reading mail file: %s"),
- g_strerror (errno));
- break;
- }
-
- while (nread) {
- nwrote = write (dfd, buf + written, nread);
- if (nwrote == -1) {
- if (errno == EINTR)
- continue; /* continues inner loop */
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Error writing "
- "mail temp file: %s"),
- g_strerror (errno));
- break;
- }
- written += nwrote;
- nread -= nwrote;
- }
- }
-
- /* If no errors occurred copying the data, and we successfully
- * close the destination file, then truncate the source file.
- */
- if (!camel_exception_is_set (ex)) {
- if (close (dfd) == 0)
- ftruncate (sfd, 0);
- else {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Failed to store mail in "
- "temp file %s: %s"), dest,
- g_strerror (errno));
- }
- } else
- close (dfd);
- close (sfd);
-
- /* Clean up lock files. */
- unlink (lockfile);
- g_free (lockfile);
- unlink (locktmpfile);
- g_free (locktmpfile);
-}
-
-#ifdef MOVEMAIL_PATH
-static void
-movemail_external (const char *source, const char *dest, CamelException *ex)
-{
- sigset_t mask, omask;
- pid_t pid;
- int fd[2], len = 0, nread, status;
- char buf[BUFSIZ], *output = NULL;
-
- /* Block SIGCHLD so the app can't mess us up. */
- sigemptyset (&mask);
- sigaddset (&mask, SIGCHLD);
- sigprocmask (SIG_BLOCK, &mask, &omask);
-
- if (pipe (fd) == -1) {
- sigprocmask (SIG_SETMASK, &omask, NULL);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not create pipe: %s"),
- g_strerror (errno));
- return;
- }
-
- pid = fork ();
- switch (pid) {
- case -1:
- close (fd[0]);
- close (fd[1]);
- sigprocmask (SIG_SETMASK, &omask, NULL);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not fork: %s"),
- g_strerror (errno));
- return;
-
- case 0:
- /* Child */
- close (fd[0]);
- close (STDIN_FILENO);
- dup2 (fd[1], STDOUT_FILENO);
- dup2 (fd[1], STDERR_FILENO);
-
- execl (MOVEMAIL_PATH, MOVEMAIL_PATH, source, dest, NULL);
- _exit (255);
- break;
-
- default:
- break;
- }
-
- /* Parent */
- close (fd[1]);
-
- /* Read movemail's output. */
- while ((nread = read (fd[0], buf, sizeof (buf))) > 0) {
- output = g_realloc (output, len + nread + 1);
- memcpy (output + len, buf, nread);
- len += nread;
- output[len] = '\0';
- }
- close (fd[0]);
-
- /* Now get the exit status. */
- while (waitpid (pid, &status, 0) == -1 && errno == EINTR)
- ;
- sigprocmask (SIG_SETMASK, &omask, NULL);
-
- if (!WIFEXITED (status) || WEXITSTATUS (status) != 0) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Movemail program failed: %s"),
- output ? output : _("(Unknown error)"));
- }
- g_free (output);
-}
-#endif
-
-
-#if 0
-static int
-camel_movemail_copy(int fromfd, int tofd, off_t start, size_t bytes)
-{
- char buffer[4096];
- int written = 0;
-
- d(printf("writing %d bytes ... ", bytes));
-
- if (lseek(fromfd, start, SEEK_SET) != start)
- return -1;
-
- while (bytes>0) {
- int toread, towrite;
-
- toread = bytes;
- if (bytes>4096)
- toread = 4096;
- else
- toread = bytes;
- do {
- towrite = read(fromfd, buffer, toread);
- } while (towrite == -1 && errno == EINTR);
-
- if (towrite == -1)
- return -1;
-
- /* check for 'end of file' */
- if (towrite == 0) {
- d(printf("end of file?\n"));
- break;
- }
-
- do {
- toread = write(tofd, buffer, towrite);
- } while (toread == -1 && errno == EINTR);
-
- if (toread == -1)
- return -1;
-
- written += toread;
- bytes -= toread;
- }
-
- d(printf("written %d bytes\n", written));
-
- return written;
-}
-#endif
-
-#define PRE_SIZE (32)
-
-#if 0
-static int
-camel_movemail_copy_filter(int fromfd, int tofd, off_t start, size_t bytes, CamelMimeFilter *filter)
-{
- char buffer[4096+PRE_SIZE];
- int written = 0;
- char *filterbuffer;
- int filterlen, filterpre;
-
- d(printf("writing %d bytes ... ", bytes));
-
- camel_mime_filter_reset(filter);
-
- if (lseek(fromfd, start, SEEK_SET) != start)
- return -1;
-
- while (bytes>0) {
- int toread, towrite;
-
- toread = bytes;
- if (bytes>4096)
- toread = 4096;
- else
- toread = bytes;
- do {
- towrite = read(fromfd, buffer+PRE_SIZE, toread);
- } while (towrite == -1 && errno == EINTR);
-
- if (towrite == -1)
- return -1;
-
- /* check for 'end of file' */
- if (towrite == 0) {
- d(printf("end of file?\n"));
- camel_mime_filter_complete(filter, buffer+PRE_SIZE, towrite, PRE_SIZE,
- &filterbuffer, &filterlen, &filterpre);
- towrite = filterlen;
- if (towrite == 0)
- break;
- } else {
- camel_mime_filter_filter(filter, buffer+PRE_SIZE, towrite, PRE_SIZE,
- &filterbuffer, &filterlen, &filterpre);
- towrite = filterlen;
- }
-
- do {
- toread = write(tofd, filterbuffer, towrite);
- } while (toread == -1 && errno == EINTR);
-
- if (toread == -1)
- return -1;
-
- written += toread;
- bytes -= toread;
- }
-
- d(printf("written %d bytes\n", written));
-
- return written;
-}
-
-/* write the headers back out again, but not he Content-Length header, because we dont
- want to maintain it! */
-static int
-solaris_header_write(int fd, struct _header_raw *header)
-{
- struct iovec iv[4];
- int outlen = 0, len;
-
- iv[1].iov_base = ":";
- iv[1].iov_len = 1;
- iv[3].iov_base = "\n";
- iv[3].iov_len = 1;
-
- while (header) {
- if (strcasecmp(header->name, "Content-Length")) {
- iv[0].iov_base = header->name;
- iv[0].iov_len = strlen(header->name);
- iv[2].iov_base = header->value;
- iv[2].iov_len = strlen(header->value);
-
- do {
- len = writev(fd, iv, 4);
- } while (len == -1 && errno == EINTR);
-
- if (len == -1)
- return -1;
- outlen += len;
- }
- header = header->next;
- }
-
- do {
- len = write(fd, "\n", 1);
- } while (len == -1 && errno == EINTR);
-
- if (len == -1)
- return -1;
-
- outlen += 1;
-
- d(printf("Wrote %d bytes of headers\n", outlen));
-
- return outlen;
-}
-
-/* Well, since Solaris is a tad broken wrt its 'mbox' folder format,
- we must convert it to a real mbox format. Thankfully this is
- mostly pretty easy */
-static int
-camel_movemail_solaris (int sfd, int dfd, CamelException *ex)
-{
- CamelMimeParser *mp;
- char *buffer;
- int len;
- CamelMimeFilterFrom *ffrom;
- int ret = 1;
-
- mp = camel_mime_parser_new();
- camel_mime_parser_scan_from(mp, TRUE);
- camel_mime_parser_init_with_fd(mp, sfd);
-
- ffrom = camel_mime_filter_from_new();
-
- while (camel_mime_parser_step(mp, &buffer, &len) == HSCAN_FROM) {
- if (camel_mime_parser_step(mp, &buffer, &len) != HSCAN_FROM_END) {
- const char *cl;
- int length;
- int start, body;
- off_t newpos;
-
- ret = 0;
-
- start = camel_mime_parser_tell_start_from(mp);
- body = camel_mime_parser_tell(mp);
-
- /* write out headers, but NOT content-length header */
- solaris_header_write(dfd, camel_mime_parser_headers_raw(mp));
-
- cl = camel_mime_parser_header(mp, "content-length", NULL);
- if (cl == NULL) {
- g_warning("Required Content-Length header is missing from solaris mail box @ %d", (int)camel_mime_parser_tell(mp));
- camel_mime_parser_drop_step(mp);
- camel_mime_parser_drop_step(mp);
- camel_mime_parser_step(mp, &buffer, &len);
- camel_mime_parser_unstep(mp);
- length = camel_mime_parser_tell_start_from(mp) - body;
- newpos = -1;
- } else {
- length = atoi(cl);
- camel_mime_parser_drop_step(mp);
- camel_mime_parser_drop_step(mp);
- newpos = length+body;
- }
- /* copy body->length converting From lines */
- if (camel_movemail_copy_filter(sfd, dfd, body, length, (CamelMimeFilter *)ffrom) == -1)
- goto fail;
- if (newpos != -1)
- camel_mime_parser_seek(mp, newpos, SEEK_SET);
- } else {
- g_error("Inalid parser state: %d", camel_mime_parser_state(mp));
- }
- }
-
- camel_object_unref((CamelObject *)mp);
- camel_object_unref((CamelObject *)ffrom);
-
- return ret;
-
-fail:
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Error copying "
- "mail temp file: %s"),
- g_strerror (errno));
-
-
- camel_object_unref((CamelObject *)mp);
- camel_object_unref((CamelObject *)ffrom);
-
- return -1;
-}
-#endif
-
diff --git a/camel/camel-movemail.h b/camel/camel-movemail.h
deleted file mode 100644
index 8b73435a43..0000000000
--- a/camel/camel-movemail.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-movemail.h: mbox copy function */
-
-/*
- * Author:
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_MOVEMAIL_H
-#define CAMEL_MOVEMAIL_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <camel/camel-exception.h>
-
-void camel_movemail (const char *source, const char *dest, CamelException *ex);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_MOVEMAIL_H */
diff --git a/camel/camel-multipart.c b/camel/camel-multipart.c
deleted file mode 100644
index 79a0c24208..0000000000
--- a/camel/camel-multipart.c
+++ /dev/null
@@ -1,522 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-multipart.c : Abstract class for a multipart */
-
-#ifndef NO_WARNINGS
-#warning This should be a mostly abstract class, but it is not!
-#endif
-
-/*
- *
- * Author :
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h> /* strlen() */
-#include <unistd.h> /* for getpid */
-#include <time.h> /* for time */
-
-#include "camel-stream-mem.h"
-#include "camel-multipart.h"
-#include "camel-mime-part.h"
-#include "camel-exception.h"
-#include "md5-utils.h"
-
-#define d(x)
-
-static void add_part (CamelMultipart *multipart,
- CamelMimePart *part);
-static void add_part_at (CamelMultipart *multipart,
- CamelMimePart *part,
- guint index);
-static void remove_part (CamelMultipart *multipart,
- CamelMimePart *part);
-static CamelMimePart * remove_part_at (CamelMultipart *multipart,
- guint index);
-static CamelMimePart * get_part (CamelMultipart *multipart,
- guint index);
-static guint get_number (CamelMultipart *multipart);
-static void set_boundary (CamelMultipart *multipart,
- gchar *boundary);
-static const gchar * get_boundary (CamelMultipart *multipart);
-static int write_to_stream (CamelDataWrapper *data_wrapper,
- CamelStream *stream);
-static void unref_part (gpointer data, gpointer user_data);
-
-static CamelDataWrapperClass *parent_class = NULL;
-
-
-
-/* Returns the class for a CamelMultipart */
-#define CMP_CLASS(so) CAMEL_MULTIPART_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-/* Returns the class for a CamelDataWrapper */
-#define CDW_CLASS(so) CAMEL_DATA_WRAPPER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-
-static void
-camel_multipart_class_init (CamelMultipartClass *camel_multipart_class)
-{
- CamelDataWrapperClass *camel_data_wrapper_class =
- CAMEL_DATA_WRAPPER_CLASS (camel_multipart_class);
-
- parent_class = CAMEL_DATA_WRAPPER_CLASS (camel_type_get_global_classfuncs (camel_data_wrapper_get_type ()));
-
- /* virtual method definition */
- camel_multipart_class->add_part = add_part;
- camel_multipart_class->add_part_at = add_part_at;
- camel_multipart_class->remove_part = remove_part;
- camel_multipart_class->remove_part_at = remove_part_at;
- camel_multipart_class->get_part = get_part;
- camel_multipart_class->get_number = get_number;
- camel_multipart_class->set_boundary = set_boundary;
- camel_multipart_class->get_boundary = get_boundary;
-
- /* virtual method overload */
- camel_data_wrapper_class->write_to_stream = write_to_stream;
-}
-
-static void
-camel_multipart_init (gpointer object, gpointer klass)
-{
- CamelMultipart *multipart = CAMEL_MULTIPART (object);
-
- camel_data_wrapper_set_mime_type (CAMEL_DATA_WRAPPER (multipart),
- "multipart/mixed");
- multipart->preface = NULL;
- multipart->postface = NULL;
-}
-
-static void
-camel_multipart_finalize (CamelObject *object)
-{
- CamelMultipart *multipart = CAMEL_MULTIPART (object);
-
- g_list_foreach (multipart->parts, unref_part, NULL);
-
- if (multipart->boundary)
- g_free (multipart->boundary);
- if (multipart->preface)
- g_free (multipart->preface);
- if (multipart->postface)
- g_free (multipart->postface);
-}
-
-
-CamelType
-camel_multipart_get_type (void)
-{
- static CamelType camel_multipart_type = CAMEL_INVALID_TYPE;
-
- if (camel_multipart_type == CAMEL_INVALID_TYPE) {
- camel_multipart_type = camel_type_register (camel_data_wrapper_get_type (), "CamelMultipart",
- sizeof (CamelMultipart),
- sizeof (CamelMultipartClass),
- (CamelObjectClassInitFunc) camel_multipart_class_init,
- NULL,
- (CamelObjectInitFunc) camel_multipart_init,
- (CamelObjectFinalizeFunc) camel_multipart_finalize);
- }
-
- return camel_multipart_type;
-}
-
-static void
-unref_part (gpointer data, gpointer user_data)
-{
- CamelObject *part = CAMEL_OBJECT (data);
-
- camel_object_unref (part);
-}
-
-/**
- * camel_multipart_new:
- *
- * Create a new CamelMultipart object.
- *
- * Return value: a new CamelMultipart
- **/
-CamelMultipart *
-camel_multipart_new (void)
-{
- CamelMultipart *multipart;
-
- multipart = (CamelMultipart *)camel_object_new (CAMEL_MULTIPART_TYPE);
- multipart->preface = NULL;
- multipart->postface = NULL;
-
- return multipart;
-}
-
-
-static void
-add_part (CamelMultipart *multipart, CamelMimePart *part)
-{
- multipart->parts = g_list_append (multipart->parts, part);
- camel_object_ref (CAMEL_OBJECT (part));
-}
-
-/**
- * camel_multipart_add_part:
- * @multipart: a CamelMultipart
- * @part: the part to add
- *
- * Appends the part to the multipart object.
- **/
-void
-camel_multipart_add_part (CamelMultipart *multipart, CamelMimePart *part)
-{
- g_return_if_fail (CAMEL_IS_MULTIPART (multipart));
- g_return_if_fail (CAMEL_IS_MIME_PART (part));
-
- CMP_CLASS (multipart)->add_part (multipart, part);
-}
-
-
-static void
-add_part_at (CamelMultipart *multipart, CamelMimePart *part, guint index)
-{
- multipart->parts = g_list_insert (multipart->parts, part, index);
- camel_object_ref (CAMEL_OBJECT (part));
-}
-
-/**
- * camel_multipart_add_part_at:
- * @multipart: a CamelMultipart
- * @part: the part to add
- * @index: index to add the multipart at
- *
- * Adds the part to the multipart object after the @index'th
- * element. If @index is greater than the number of parts, it is
- * equivalent to camel_multipart_add_part().
- **/
-void
-camel_multipart_add_part_at (CamelMultipart *multipart,
- CamelMimePart *part, guint index)
-{
- g_return_if_fail (CAMEL_IS_MULTIPART (multipart));
- g_return_if_fail (CAMEL_IS_MIME_PART (part));
-
- CMP_CLASS (multipart)->add_part_at (multipart, part, index);
-}
-
-
-static void
-remove_part (CamelMultipart *multipart, CamelMimePart *part)
-{
- if (!multipart->parts)
- return;
- multipart->parts = g_list_remove (multipart->parts, part);
- camel_object_unref (CAMEL_OBJECT (part));
-}
-
-/**
- * camel_multipart_remove_part:
- * @multipart: a CamelMultipart
- * @part: the part to remove
- *
- * Removes @part from @multipart.
- **/
-void
-camel_multipart_remove_part (CamelMultipart *multipart,
- CamelMimePart *part)
-{
- g_return_if_fail (CAMEL_IS_MULTIPART (multipart));
- g_return_if_fail (CAMEL_IS_MIME_PART (part));
-
- CMP_CLASS (multipart)->remove_part (multipart, part);
-}
-
-
-static CamelMimePart *
-remove_part_at (CamelMultipart *multipart, guint index)
-{
- GList *parts_list;
- GList *part_to_remove;
- CamelMimePart *removed_part;
-
- if (!(multipart->parts))
- return NULL;
-
- parts_list = multipart->parts;
- part_to_remove = g_list_nth (parts_list, index);
- if (!part_to_remove) {
- g_warning ("CamelMultipart::remove_part_at: "
- "part to remove is NULL\n");
- return NULL;
- }
- removed_part = CAMEL_MIME_PART (part_to_remove->data);
-
- multipart->parts = g_list_remove_link (parts_list, part_to_remove);
- if (part_to_remove->data)
- camel_object_unref (CAMEL_OBJECT (part_to_remove->data));
- g_list_free_1 (part_to_remove);
-
- return removed_part;
-}
-
-/**
- * camel_multipart_remove_part_at:
- * @multipart: a CamelMultipart
- * @index: a zero-based index indicating the part to remove
- *
- * Remove the indicated part from the multipart object.
- *
- * Return value: the removed part. Note that it is camel_object_unref()ed
- * before being returned, which may cause it to be destroyed.
- **/
-CamelMimePart *
-camel_multipart_remove_part_at (CamelMultipart *multipart, guint index)
-{
- g_return_val_if_fail (CAMEL_IS_MULTIPART (multipart), NULL);
-
- return CMP_CLASS (multipart)->remove_part_at (multipart, index);
-}
-
-
-static CamelMimePart *
-get_part (CamelMultipart *multipart, guint index)
-{
- GList *part;
-
- if (!(multipart->parts))
- return NULL;
-
- part = g_list_nth (multipart->parts, index);
- if (part)
- return CAMEL_MIME_PART (part->data);
- else
- return NULL;
-}
-
-/**
- * camel_multipart_get_part:
- * @multipart: a CamelMultipart
- * @index: a zero-based index indicating the part to get
- *
- * Return value: the indicated subpart, or %NULL
- **/
-CamelMimePart *
-camel_multipart_get_part (CamelMultipart *multipart, guint index)
-{
- g_return_val_if_fail (CAMEL_IS_MULTIPART (multipart), NULL);
-
- return CMP_CLASS (multipart)->get_part (multipart, index);
-}
-
-
-static guint
-get_number (CamelMultipart *multipart)
-{
- return g_list_length (multipart->parts);
-}
-
-/**
- * camel_multipart_get_number:
- * @multipart: a CamelMultipart
- *
- * Return value: the number of subparts in @multipart
- **/
-guint
-camel_multipart_get_number (CamelMultipart *multipart)
-{
- g_return_val_if_fail (CAMEL_IS_MULTIPART (multipart), 0);
-
- return CMP_CLASS (multipart)->get_number (multipart);
-}
-
-
-static void
-set_boundary (CamelMultipart *multipart, gchar *boundary)
-{
- CamelDataWrapper *cdw = CAMEL_DATA_WRAPPER (multipart);
- char *bgen, digest[16], bbuf[27], *p;
- int state, save;
-
- g_return_if_fail (cdw->mime_type != NULL);
-
- if (!boundary) {
- /* Generate a fairly random boundary string. */
- bgen = g_strdup_printf ("%p:%lu:%lu", multipart,
- (unsigned long) getpid(),
- (unsigned long) time(0));
- md5_get_digest (bgen, strlen (bgen), digest);
- g_free (bgen);
- strcpy (bbuf, "=-");
- p = bbuf + 2;
- state = save = 0;
- p += base64_encode_step (digest, 16, FALSE, p, &state, &save);
- *p = '\0';
-
- boundary = bbuf;
- }
-
- header_content_type_set_param (cdw->mime_type, "boundary", boundary);
-}
-
-/**
- * camel_multipart_set_boundary:
- * @multipart: a CamelMultipart
- * @boundary: the message boundary, or %NULL
- *
- * Sets the message boundary for @multipart to @boundary. This should
- * be a string which does not occur anywhere in any of @multipart's
- * subparts. If @boundary is %NULL, a randomly-generated boundary will
- * be used.
- **/
-void
-camel_multipart_set_boundary (CamelMultipart *multipart, gchar *boundary)
-{
- g_return_if_fail (CAMEL_IS_MULTIPART (multipart));
-
- CMP_CLASS (multipart)->set_boundary (multipart, boundary);
-}
-
-
-static const gchar *
-get_boundary (CamelMultipart *multipart)
-{
- CamelDataWrapper *cdw = CAMEL_DATA_WRAPPER (multipart);
-
- g_return_val_if_fail (cdw->mime_type != NULL, NULL);
- return header_content_type_param (cdw->mime_type, "boundary");
-}
-
-/**
- * camel_multipart_get_boundary:
- * @multipart: a CamelMultipart
- *
- * Return value: @multipart's message boundary
- **/
-const gchar *
-camel_multipart_get_boundary (CamelMultipart *multipart)
-{
- return CMP_CLASS (multipart)->get_boundary (multipart);
-}
-
-/* this is MIME specific, doesn't belong here really */
-static int
-write_to_stream (CamelDataWrapper *data_wrapper, CamelStream *stream)
-{
- CamelMultipart *multipart = CAMEL_MULTIPART (data_wrapper);
- const gchar *boundary;
- int total = 0;
- int count;
- GList *node;
-
- /* get the bundary text */
- boundary = camel_multipart_get_boundary (multipart);
-
- /* we cannot write a multipart without a boundary string */
- g_return_val_if_fail (boundary && *boundary, -1);
-
- /*
- * write the preface text (usually something like
- * "This is a mime message, if you see this, then
- * your mail client probably doesn't support ...."
- */
- if (multipart->preface) {
- count = camel_stream_write_string (stream, multipart->preface);
- if (count == -1)
- return -1;
- total += count;
- }
-
- /*
- * Now, write all the parts, separated by the boundary
- * delimiter
- */
- node = multipart->parts;
- while (node) {
- count = camel_stream_printf (stream, "\n--%s\n", boundary);
- if (count == -1)
- return -1;
- total += count;
-
- count = camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (node->data), stream);
- if (count == -1)
- return -1;
- total += count;
- node = node->next;
- }
-
- /* write the terminating boudary delimiter */
- count = camel_stream_printf (stream, "\n--%s--\n", boundary);
- if (count == -1)
- return -1;
- total += count;
-
- /* and finally the postface */
- if (multipart->postface) {
- count = camel_stream_write_string (stream, multipart->postface);
- if (count == -1)
- return -1;
- total += count;
- }
-
- return total;
-}
-
-/**
- * camel_multipart_set_preface:
- * @multipart:
- * @preface:
- *
- * Set the preface text for this multipart. Will be written out infront
- * of the multipart. This text should only include US-ASCII strings, and
- * be relatively short, and will be ignored by any MIME mail client.
- **/
-void
-camel_multipart_set_preface(CamelMultipart *multipart, const char *preface)
-{
- if (multipart->preface != preface) {
- g_free(multipart->preface);
- if (preface)
- multipart->preface = g_strdup(preface);
- else
- multipart->preface = NULL;
- }
-}
-
-/**
- * camel_multipart_set_postface:
- * @multipart:
- * @postface:
- *
- * Set the postfix text for this multipart. Will be written out after
- * the last boundary of the multipart, and ignored by any MIME mail
- * client.
- *
- * Generally postface texts should not be sent with multipart messages.
- **/
-void
-camel_multipart_set_postface(CamelMultipart *multipart, const char *postface)
-{
- if (multipart->postface != postface) {
- g_free(multipart->postface);
- if (postface)
- multipart->postface = g_strdup(postface);
- else
- multipart->postface = NULL;
- }
-}
diff --git a/camel/camel-multipart.h b/camel/camel-multipart.h
deleted file mode 100644
index 3058b8f2e0..0000000000
--- a/camel/camel-multipart.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-multipart.h : class for a multipart */
-
-/*
- *
- * Author :
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_MULTIPART_H
-#define CAMEL_MULTIPART_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <camel/camel-data-wrapper.h>
-
-#define CAMEL_MULTIPART_TYPE (camel_multipart_get_type ())
-#define CAMEL_MULTIPART(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MULTIPART_TYPE, CamelMultipart))
-#define CAMEL_MULTIPART_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MULTIPART_TYPE, CamelMultipartClass))
-#define CAMEL_IS_MULTIPART(o) (CAMEL_CHECK_TYPE((o), CAMEL_MULTIPART_TYPE))
-
-
-struct _CamelMultipart
-{
- CamelDataWrapper parent_object;
-
- CamelMimePart *parent;
- GList *parts;
- gchar *boundary;
- gchar *preface;
- gchar *postface;
-
-};
-
-
-
-typedef struct {
- CamelDataWrapperClass parent_class;
-
- /* Virtual methods */
- void (*add_part) (CamelMultipart *multipart, CamelMimePart *part);
- void (*add_part_at) (CamelMultipart *multipart, CamelMimePart *part, guint index);
- void (*remove_part) (CamelMultipart *multipart, CamelMimePart *part);
- CamelMimePart * (*remove_part_at) (CamelMultipart *multipart, guint index);
- CamelMimePart * (*get_part) (CamelMultipart *multipart, guint index);
- guint (*get_number) (CamelMultipart *multipart);
- void (*set_boundary) (CamelMultipart *multipart, gchar *boundary);
- const gchar * (*get_boundary) (CamelMultipart *multipart);
-
-} CamelMultipartClass;
-
-
-/* Standard Camel function */
-CamelType camel_multipart_get_type (void);
-
-
-/* public methods */
-CamelMultipart * camel_multipart_new (void);
-void camel_multipart_add_part (CamelMultipart *multipart,
- CamelMimePart *part);
-void camel_multipart_add_part_at (CamelMultipart *multipart,
- CamelMimePart *part,
- guint index);
-void camel_multipart_remove_part (CamelMultipart *multipart,
- CamelMimePart *part);
-CamelMimePart * camel_multipart_remove_part_at (CamelMultipart *multipart,
- guint index);
-CamelMimePart * camel_multipart_get_part (CamelMultipart *multipart,
- guint index);
-guint camel_multipart_get_number (CamelMultipart *multipart);
-void camel_multipart_set_boundary (CamelMultipart *multipart,
- gchar *boundary);
-const gchar * camel_multipart_get_boundary (CamelMultipart *multipart);
-
-void camel_multipart_set_preface (CamelMultipart *multipart, const char *preface);
-void camel_multipart_set_postface (CamelMultipart *multipart, const char *postface);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_MULTIPART_H */
-
diff --git a/camel/camel-news-address.c b/camel/camel-news-address.c
deleted file mode 100644
index ebd35b80c7..0000000000
--- a/camel/camel-news-address.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "camel-news-address.h"
-
-
-static void camel_news_address_class_init (CamelNewsAddressClass *klass);
-
-static CamelAddressClass *camel_news_address_parent;
-
-static void
-camel_news_address_class_init (CamelNewsAddressClass *klass)
-{
- camel_news_address_parent = CAMEL_ADDRESS_CLASS (camel_type_get_global_classfuncs (camel_address_get_type ()));
-}
-
-
-CamelType
-camel_news_address_get_type (void)
-{
- static guint type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_address_get_type (), "CamelNewsAddress",
- sizeof (CamelNewsAddress),
- sizeof (CamelNewsAddressClass),
- (CamelObjectClassInitFunc) camel_news_address_class_init,
- NULL,
- NULL,
- NULL);
- }
-
- return type;
-}
-
-/**
- * camel_news_address_new:
- *
- * Create a new CamelNewsAddress object.
- *
- * Return value: A new CamelNewsAddress widget.
- **/
-CamelNewsAddress *
-camel_news_address_new (void)
-{
- CamelNewsAddress *new = CAMEL_NEWS_ADDRESS ( camel_object_new (camel_news_address_get_type ()));
- return new;
-}
diff --git a/camel/camel-news-address.h b/camel/camel-news-address.h
deleted file mode 100644
index b1c7856675..0000000000
--- a/camel/camel-news-address.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef _CAMEL_NEWS_ADDRESS_H
-#define _CAMEL_NEWS_ADDRESS_H
-
-#include <camel/camel-address.h>
-
-#define CAMEL_NEWS_ADDRESS(obj) CAMEL_CHECK_CAST (obj, camel_news_address_get_type (), CamelNewsAddress)
-#define CAMEL_NEWS_ADDRESS_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_news_address_get_type (), CamelNewsAddressClass)
-#define CAMEL_IS_NEWS_ADDRESS(obj) CAMEL_CHECK_TYPE (obj, camel_news_address_get_type ())
-
-typedef struct _CamelNewsAddressClass CamelNewsAddressClass;
-
-struct _CamelNewsAddress {
- CamelAddress parent;
-
- struct _CamelNewsAddressPrivate *priv;
-};
-
-struct _CamelNewsAddressClass {
- CamelAddressClass parent_class;
-};
-
-guint camel_news_address_get_type (void);
-CamelNewsAddress *camel_news_address_new (void);
-
-#endif /* ! _CAMEL_NEWS_ADDRESS_H */
diff --git a/camel/camel-object.c b/camel/camel-object.c
deleted file mode 100644
index 7f53a68bfe..0000000000
--- a/camel/camel-object.c
+++ /dev/null
@@ -1,986 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-object.c: Base class for Camel */
-
-/*
- * Author:
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include "camel-object.h"
-
-/* I just mashed the keyboard for these... */
-#define CAMEL_OBJECT_MAGIC_VALUE 0x77A344EF
-#define CAMEL_OBJECT_CLASS_MAGIC_VALUE 0xEE26A990
-#define CAMEL_OBJECT_FINALIZED_VALUE 0x84AC3656
-#define CAMEL_OBJECT_CLASS_FINALIZED_VALUE 0x7621ABCD
-
-#define DEFAULT_PREALLOCS 8
-
-#define BAST_CASTARD 1 /* Define to return NULL when casts fail */
-
-#define NULL_PREP_VALUE ((gpointer)make_global_classfuncs) /* See camel_object_class_declare_event */
-
-/* ** Quickie type system ************************************************* */
-
-typedef struct _CamelTypeInfo
-{
- CamelType self;
- CamelType parent;
- const gchar *name;
-
- size_t instance_size;
- GMemChunk *instance_chunk;
- CamelObjectInitFunc instance_init;
- CamelObjectFinalizeFunc instance_finalize;
- GList *free_instances;
-
- size_t classfuncs_size;
- CamelObjectClassInitFunc class_init;
- CamelObjectClassFinalizeFunc class_finalize;
- CamelObjectClass *global_classfuncs;
-}
-CamelTypeInfo;
-
-typedef struct _CamelHookPair
-{
- CamelObjectEventHookFunc func;
- gpointer user_data;
-}
-CamelHookPair;
-
-/* ************************************************************************ */
-
-static void camel_type_lock_up (void);
-static void camel_type_lock_down (void);
-
-static void obj_init (CamelObject * obj);
-static void obj_finalize (CamelObject * obj);
-static void obj_class_init (CamelObjectClass * class);
-static void obj_class_finalize (CamelObjectClass * class);
-
-static gboolean shared_is_of_type (CamelObjectShared * sh, CamelType ctype,
- gboolean is_obj);
-static void make_global_classfuncs (CamelTypeInfo * type_info);
-
-/* ************************************************************************ */
-
-G_LOCK_DEFINE_STATIC (type_system);
-G_LOCK_DEFINE_STATIC (type_system_level);
-static GPrivate *type_system_locklevel = NULL;
-
-G_LOCK_DEFINE_STATIC (refcount);
-
-static gboolean type_system_initialized = FALSE;
-static GHashTable *ctype_to_typeinfo = NULL;
-static const CamelType camel_object_type = 1;
-static CamelType cur_max_type = CAMEL_INVALID_TYPE;
-
-/* ************************************************************************ */
-
-#define LOCK_VAL (GPOINTER_TO_INT (g_private_get (type_system_locklevel)))
-#define LOCK_SET( val ) g_private_set (type_system_locklevel, GINT_TO_POINTER (val))
-
-static void
-camel_type_lock_up (void)
-{
- G_LOCK (type_system_level);
-
- if (type_system_locklevel == NULL)
- type_system_locklevel = g_private_new (GINT_TO_POINTER (0));
-
- if (LOCK_VAL == 0) {
- G_UNLOCK (type_system_level);
- G_LOCK (type_system);
- G_LOCK (type_system_level);
- }
-
- LOCK_SET (LOCK_VAL + 1);
-
- G_UNLOCK (type_system_level);
-}
-
-static void
-camel_type_lock_down (void)
-{
- G_LOCK (type_system_level);
-
- if (type_system_locklevel == NULL) {
- g_warning
- ("camel_type_lock_down: lock down before a lock up?");
- type_system_locklevel = g_private_new (GINT_TO_POINTER (0));
- G_UNLOCK (type_system_level);
- return;
- }
-
- LOCK_SET (LOCK_VAL - 1);
-
- if (LOCK_VAL == 0)
- G_UNLOCK (type_system);
-
- G_UNLOCK (type_system_level);
-}
-
-void
-camel_type_init (void)
-{
- CamelTypeInfo *obj_info;
-
- camel_type_lock_up ();
-
- if (type_system_initialized) {
- g_warning
- ("camel_type_init: type system already initialized.");
- camel_type_lock_down ();
- return;
- }
-
- type_system_initialized = TRUE;
- ctype_to_typeinfo = g_hash_table_new (g_direct_hash, g_direct_equal);
-
- obj_info = g_new (CamelTypeInfo, 1);
- obj_info->self = camel_object_type;
- obj_info->parent = CAMEL_INVALID_TYPE;
- obj_info->name = "CamelObject";
-
- obj_info->instance_size = sizeof (CamelObject);
- obj_info->instance_chunk =
- g_mem_chunk_create (CamelObject, DEFAULT_PREALLOCS,
- G_ALLOC_ONLY);
- obj_info->instance_init = obj_init;
- obj_info->instance_finalize = obj_finalize;
- obj_info->free_instances = NULL;
-
- obj_info->classfuncs_size = sizeof (CamelObjectClass);
- obj_info->class_init = obj_class_init;
- obj_info->class_finalize = obj_class_finalize;
-
- g_hash_table_insert (ctype_to_typeinfo,
- GINT_TO_POINTER (CAMEL_INVALID_TYPE), NULL);
- g_hash_table_insert (ctype_to_typeinfo,
- GINT_TO_POINTER (camel_object_type), obj_info);
-
- /* Sigh. Ugly */
- make_global_classfuncs (obj_info);
-
- cur_max_type = camel_object_type;
-
- camel_type_lock_down ();
-}
-
-CamelType
-camel_type_register (CamelType parent, const gchar * name,
- size_t instance_size, size_t classfuncs_size,
- CamelObjectClassInitFunc class_init,
- CamelObjectClassFinalizeFunc class_finalize,
- CamelObjectInitFunc instance_init,
- CamelObjectFinalizeFunc instance_finalize)
-{
- CamelTypeInfo *parent_info;
- CamelTypeInfo *obj_info;
- gchar *chunkname;
-
- g_return_val_if_fail (parent != CAMEL_INVALID_TYPE,
- CAMEL_INVALID_TYPE);
- g_return_val_if_fail (name, CAMEL_INVALID_TYPE);
- g_return_val_if_fail (instance_size, CAMEL_INVALID_TYPE);
- g_return_val_if_fail (classfuncs_size, CAMEL_INVALID_TYPE);
-
- camel_type_lock_up ();
-
- if (type_system_initialized == FALSE) {
- G_UNLOCK (type_system);
- camel_type_init ();
- G_LOCK (type_system);
- }
-
- parent_info =
- g_hash_table_lookup (ctype_to_typeinfo,
- GINT_TO_POINTER (parent));
-
- if (parent_info == NULL) {
- g_warning
- ("camel_type_register: no such parent type %d of class `%s'",
- parent, name);
- camel_type_lock_down ();
- return CAMEL_INVALID_TYPE;
- }
-
- if (parent_info->instance_size > instance_size) {
- g_warning
- ("camel_type_register: instance of class `%s' would be smaller than parent `%s'",
- name, parent_info->name);
- camel_type_lock_down ();
- return CAMEL_INVALID_TYPE;
- }
-
- if (parent_info->classfuncs_size > classfuncs_size) {
- g_warning
- ("camel_type_register: classfuncs of class `%s' would be smaller than parent `%s'",
- name, parent_info->name);
- camel_type_lock_down ();
- return CAMEL_INVALID_TYPE;
- }
-
- cur_max_type++;
-
- obj_info = g_new (CamelTypeInfo, 1);
- obj_info->self = cur_max_type;
- obj_info->parent = parent;
- obj_info->name = name;
-
- obj_info->instance_size = instance_size;
- chunkname =
- g_strdup_printf ("chunk for instances of Camel type `%s'",
- name);
- obj_info->instance_chunk =
- g_mem_chunk_new (chunkname, instance_size,
- instance_size * DEFAULT_PREALLOCS,
- G_ALLOC_ONLY);
- g_free (chunkname);
- obj_info->instance_init = instance_init;
- obj_info->instance_finalize = instance_finalize;
- obj_info->free_instances = NULL;
-
- obj_info->classfuncs_size = classfuncs_size;
- obj_info->class_init = class_init;
- obj_info->class_finalize = class_finalize;
-
- g_hash_table_insert (ctype_to_typeinfo,
- GINT_TO_POINTER (obj_info->self), obj_info);
-
- /* Sigh. Ugly. */
- make_global_classfuncs (obj_info);
-
- camel_type_lock_down ();
- return obj_info->self;
-}
-
-CamelObjectClass *
-camel_type_get_global_classfuncs (CamelType type)
-{
- CamelTypeInfo *type_info;
-
- g_return_val_if_fail (type != CAMEL_INVALID_TYPE, NULL);
-
- camel_type_lock_up ();
- type_info =
- g_hash_table_lookup (ctype_to_typeinfo,
- GINT_TO_POINTER (type));
- camel_type_lock_down ();
-
- g_return_val_if_fail (type_info != NULL, NULL);
-
- return type_info->global_classfuncs;
-}
-
-const gchar *
-camel_type_to_name (CamelType type)
-{
- CamelTypeInfo *type_info;
-
- g_return_val_if_fail (type != CAMEL_INVALID_TYPE,
- "(the invalid type)");
-
- camel_type_lock_up ();
- type_info =
- g_hash_table_lookup (ctype_to_typeinfo,
- GINT_TO_POINTER (type));
- camel_type_lock_down ();
-
- g_return_val_if_fail (type_info != NULL,
- "(a bad type parameter was specified)");
-
- return type_info->name;
-}
-
-/* ** The CamelObject ***************************************************** */
-
-static void
-obj_init (CamelObject * obj)
-{
- obj->s.magic = CAMEL_OBJECT_MAGIC_VALUE;
- obj->ref_count = 1;
- obj->event_to_hooklist = NULL;
- obj->in_event = 0;
-}
-
-static void
-obj_finalize (CamelObject * obj)
-{
- g_return_if_fail (obj->s.magic == CAMEL_OBJECT_MAGIC_VALUE);
- g_return_if_fail (obj->ref_count == 0);
- g_return_if_fail (obj->in_event == 0);
-
- obj->s.magic = CAMEL_OBJECT_FINALIZED_VALUE;
-
- if (obj->event_to_hooklist) {
-#if 0
- g_hash_table_foreach (obj->event_to_hooklist, (GHFunc) g_free,
- NULL);
-#endif
- g_hash_table_destroy (obj->event_to_hooklist);
- obj->event_to_hooklist = NULL;
- }
-}
-
-static void
-obj_class_init (CamelObjectClass * class)
-{
- class->s.magic = CAMEL_OBJECT_CLASS_MAGIC_VALUE;
-
- camel_object_class_declare_event (class, "finalize", NULL);
-}
-
-static void
-obj_class_finalize (CamelObjectClass * class)
-{
- g_return_if_fail (class->s.magic == CAMEL_OBJECT_CLASS_MAGIC_VALUE);
-
- class->s.magic = CAMEL_OBJECT_CLASS_FINALIZED_VALUE;
-
- if (class->event_to_preplist) {
- g_hash_table_foreach (class->event_to_preplist,
- (GHFunc) g_free, NULL);
- g_hash_table_destroy (class->event_to_preplist);
- class->event_to_preplist = NULL;
- }
-}
-
-CamelType
-camel_object_get_type (void)
-{
- if (type_system_initialized == FALSE)
- camel_type_init ();
-
- return camel_object_type;
-}
-
-CamelObject *
-camel_object_new (CamelType type)
-{
- CamelTypeInfo *type_info;
- GSList *parents = NULL;
- GSList *head = NULL;
- CamelObject *instance;
-
- g_return_val_if_fail (type != CAMEL_INVALID_TYPE, NULL);
-
- /* Look up the type */
-
- camel_type_lock_up ();
-
- type_info =
- g_hash_table_lookup (ctype_to_typeinfo,
- GINT_TO_POINTER (type));
-
- if (type_info == NULL) {
- g_warning
- ("camel_object_new: trying to create object of invalid type %d",
- type);
- camel_type_lock_down ();
- return NULL;
- }
-
- /* Grab an instance out of the freed ones if possible, alloc otherwise */
-
- if (type_info->free_instances) {
- GList *first;
-
- first = g_list_first (type_info->free_instances);
- instance = first->data;
- type_info->free_instances =
- g_list_remove_link (type_info->free_instances, first);
- g_list_free_1 (first);
- } else {
- instance = g_mem_chunk_alloc0 (type_info->instance_chunk);
- }
-
- /* Init the instance and classfuncs a bit */
-
- instance->s.type = type;
- instance->classfuncs = type_info->global_classfuncs;
-
- /* Loop through the parents in simplest -> most complex order, initing the class and instance.
-
- * When parent = CAMEL_INVALID_TYPE and we're at the end of the line, _lookup returns NULL
- * because we inserted it as corresponding to CAMEL_INVALID_TYPE. Clever, eh?
- */
-
- while (type_info) {
- parents = g_slist_prepend (parents, type_info);
- type_info =
- g_hash_table_lookup (ctype_to_typeinfo,
- GINT_TO_POINTER (type_info->
- parent));
- }
-
- head = parents;
-
- for (; parents && parents->data; parents = parents->next) {
- CamelTypeInfo *thisinfo;
-
- thisinfo = parents->data;
- if (thisinfo->instance_init)
- (thisinfo->instance_init) (instance);
- }
-
- g_slist_free (head);
-
- camel_type_lock_down ();
- return instance;
-}
-
-void
-camel_object_ref (CamelObject * obj)
-{
- g_return_if_fail (CAMEL_IS_OBJECT (obj));
-
- G_LOCK (refcount);
- obj->ref_count++;
- G_UNLOCK (refcount);
-}
-
-void
-camel_object_unref (CamelObject * obj)
-{
- CamelTypeInfo *type_info;
- CamelTypeInfo *iter;
- GSList *parents = NULL;
- GSList *head = NULL;
-
- g_return_if_fail (CAMEL_IS_OBJECT (obj));
-
- G_LOCK (refcount);
- obj->ref_count--;
-
- if (obj->ref_count > 0) {
- G_UNLOCK (refcount);
- return;
- }
-
- G_UNLOCK (refcount);
-
- /* Oh no! We want to emit a "finalized" event, but that function refs the object
- * because it's not supposed to get finalized in an event, but it is being finalized
- * right now, and AAUGH AAUGH AUGH AUGH!
- *
- * So we don't call camel_object_trigger_event. We do it ourselves. We even know
- * that CamelObject doesn't provide a prep for the finalized event, so we plunge
- * right in and call our hooks.
- *
- * And there was much rejoicing.
- */
-
-#define hooklist parents /*cough */
-
- if (obj->event_to_hooklist) {
- CamelHookPair *pair;
-
- hooklist =
- g_hash_table_lookup (obj->event_to_hooklist,
- "finalize");
-
- while (hooklist && hooklist->data) {
- pair = hooklist->data;
- (pair->func) (obj, NULL, pair->user_data);
- hooklist = hooklist->next;
- }
- }
-
- hooklist = NULL; /* Don't mess with this line */
-
-#undef hooklist
-
- /* Destroy it! hahaha! */
-
- camel_type_lock_up ();
-
- type_info =
- g_hash_table_lookup (ctype_to_typeinfo,
- GINT_TO_POINTER (obj->s.type));
-
- if (type_info == NULL) {
- g_warning
- ("camel_object_unref: seemingly valid object has a bad type %d",
- obj->s.type);
- camel_type_lock_down ();
- return;
- }
-
- /* Loop through the parents in most complex -> simplest order, finalizing the class
- * and instance.
- *
- * When parent = CAMEL_INVALID_TYPE and we're at the end of the line, _lookup returns NULL
- * because we inserted it as corresponding to CAMEL_INVALID_TYPE. Clever, eh?
- *
- * Use iter to preserve type_info for free_{instance,classfunc}s
- */
-
- iter = type_info;
-
- while (iter) {
- parents = g_slist_prepend (parents, iter);
- iter =
- g_hash_table_lookup (ctype_to_typeinfo,
- GINT_TO_POINTER (iter->parent));
- }
-
- parents = g_slist_reverse (parents);
- head = parents;
-
- for (; parents && parents->data; parents = parents->next) {
- CamelTypeInfo *thisinfo;
-
- thisinfo = parents->data;
- if (thisinfo->instance_finalize)
- (thisinfo->instance_finalize) (obj);
- }
-
- g_slist_free (head);
-
- /* A little bit of cleaning up.
-
- * Don't erase the type, so we can peek at it if a finalized object
- * is check_cast'ed somewhere.
- */
-
- memset (obj, 0, type_info->instance_size);
- obj->s.type = type_info->self;
- obj->s.magic = CAMEL_OBJECT_FINALIZED_VALUE;
-
- /* Tuck away the pointer for use in a new object */
-
- type_info->free_instances =
- g_list_prepend (type_info->free_instances, obj);
-
- camel_type_lock_down ();
-}
-
-gboolean
-camel_object_is_of_type (CamelObject * obj, CamelType ctype)
-{
- return shared_is_of_type ((CamelObjectShared *) obj, ctype, TRUE);
-}
-
-gboolean
-camel_object_class_is_of_type (CamelObjectClass * class, CamelType ctype)
-{
- return shared_is_of_type ((CamelObjectShared *) class, ctype, FALSE);
-}
-
-#ifdef BAST_CASTARD
-#define ERRVAL NULL
-#else
-#define ERRVAL obj
-#endif
-
-CamelObject *
-camel_object_check_cast (CamelObject * obj, CamelType ctype)
-{
- if (shared_is_of_type ((CamelObjectShared *) obj, ctype, TRUE))
- return obj;
- return ERRVAL;
-}
-
-CamelObjectClass *
-camel_object_class_check_cast (CamelObjectClass * class, CamelType ctype)
-{
- if (shared_is_of_type ((CamelObjectShared *) class, ctype, FALSE))
- return class;
- return ERRVAL;
-}
-
-#undef ERRVAL
-
-gchar *
-camel_object_describe (CamelObject * obj)
-{
- if (obj == NULL)
- return g_strdup ("a NULL pointer");
-
- if (obj->s.magic == CAMEL_OBJECT_MAGIC_VALUE) {
- return g_strdup_printf ("an instance of `%s' at %p",
- camel_type_to_name (obj->s.type),
- obj);
- } else if (obj->s.magic == CAMEL_OBJECT_FINALIZED_VALUE) {
- return g_strdup_printf ("a finalized instance of `%s' at %p",
- camel_type_to_name (obj->s.type),
- obj);
- } else if (obj->s.magic == CAMEL_OBJECT_CLASS_MAGIC_VALUE) {
- return g_strdup_printf ("the classfuncs of `%s' at %p",
- camel_type_to_name (obj->s.type),
- obj);
- } else if (obj->s.magic == CAMEL_OBJECT_CLASS_FINALIZED_VALUE) {
- return
- g_strdup_printf
- ("the finalized classfuncs of `%s' at %p",
- camel_type_to_name (obj->s.type), obj);
- }
-
- return g_strdup ("not a CamelObject");
-}
-
-/* This is likely to be called in the class_init callback,
- * and the type will likely be somewhat uninitialized.
- * Is this a problem? We'll see....
- */
-void
-camel_object_class_declare_event (CamelObjectClass * class,
- const gchar * name,
- CamelObjectEventPrepFunc prep)
-{
- g_return_if_fail (CAMEL_IS_OBJECT_CLASS (class));
- g_return_if_fail (name);
-
- if (class->event_to_preplist == NULL)
- class->event_to_preplist =
- g_hash_table_new (g_str_hash, g_str_equal);
- else if (g_hash_table_lookup (class->event_to_preplist, name) != NULL) {
- g_warning
- ("camel_object_class_declare_event: event `%s' already declared for `%s'",
- name, camel_type_to_name (class->s.type));
- return;
- }
-
- /* AIEEEEEEEEEEEEEEEEEEEEEE
-
- * I feel so naughty. Since it's valid to declare an event and not
- * provide a hook, it should be valid to insert a NULL value into
- * the table. However, then our lookup in trigger_event would be
- * ambiguous, not telling us whether the event is undefined or whether
- * it merely has no hook.
- *
- * So we create an 'NULL prep' value that != NULL... specifically, it
- * equals the address of one of our static functions , because that
- * can't possibly be your hook.
- *
- * Just don't forget to check for the 'evil value' and it'll work,
- * I promise.
- */
-
- if (prep == NULL)
- prep = NULL_PREP_VALUE;
-
- g_hash_table_insert (class->event_to_preplist, g_strdup (name), prep);
-}
-
-void
-camel_object_hook_event (CamelObject * obj, const gchar * name,
- CamelObjectEventHookFunc hook, gpointer user_data)
-{
- GSList *hooklist;
- CamelHookPair *pair;
- gpointer old_name, old_hooklist;
-
- g_return_if_fail (CAMEL_IS_OBJECT (obj));
- g_return_if_fail (name);
- g_return_if_fail (hook);
-
- if (obj->event_to_hooklist == NULL)
- obj->event_to_hooklist =
- g_hash_table_new (g_str_hash, g_str_equal);
-
- pair = g_new (CamelHookPair, 1);
- pair->func = hook;
- pair->user_data = user_data;
-
- if (g_hash_table_lookup_extended (obj->event_to_hooklist, name,
- &old_name, &old_hooklist)) {
- hooklist = g_slist_prepend (old_hooklist, pair);
- g_hash_table_insert (obj->event_to_hooklist, old_name,
- hooklist);
- } else {
- hooklist = g_slist_prepend (NULL, pair);
- g_hash_table_insert (obj->event_to_hooklist, g_strdup (name),
- hooklist);
- }
-}
-
-void
-camel_object_unhook_event (CamelObject * obj, const gchar * name,
- CamelObjectEventHookFunc hook, gpointer user_data)
-{
- GSList *hooklist;
- GSList *head;
-
- g_return_if_fail (CAMEL_IS_OBJECT (obj));
- g_return_if_fail (name);
- g_return_if_fail (hook);
-
- if (obj->event_to_hooklist == NULL) {
- g_warning
- ("camel_object_unhook_event: trying to unhook `%s' from an instance "
- "of `%s' with no hooks attached", name,
- camel_type_to_name (obj->s.type));
- return;
- }
-
- hooklist = g_hash_table_lookup (obj->event_to_hooklist, name);
-
- if (hooklist == NULL) {
- g_warning
- ("camel_object_unhook_event: trying to unhook `%s' from an instance "
- "of `%s' with no hooks attached to that event.",
- name, camel_type_to_name (obj->s.type));
- return;
- }
-
- head = hooklist;
-
- while (hooklist) {
- CamelHookPair *pair = (CamelHookPair *) hooklist->data;
-
- if (pair->func == hook && pair->user_data == user_data) {
- g_free (hooklist->data);
- head = g_slist_remove_link (head, hooklist);
- g_slist_free_1 (hooklist);
- g_hash_table_insert (obj->event_to_hooklist, (char *) name,
- head);
- return;
- }
-
- hooklist = hooklist->next;
- }
-
- g_warning
- ("camel_object_unhook_event: cannot find hook/data pair %p/%p in an "
- "instance of `%s' attached to `%s'", hook, user_data,
- camel_type_to_name (obj->s.type), name);
-}
-
-void
-camel_object_trigger_event (CamelObject * obj, const gchar * name,
- gpointer event_data)
-{
- GSList *hooklist;
- CamelHookPair *pair;
- CamelObjectEventPrepFunc prep;
-
- g_return_if_fail (CAMEL_IS_OBJECT (obj));
- g_return_if_fail (name);
-
- if (obj->in_event) {
- g_warning
- ("camel_object_trigger_event: trying to trigger `%s' in class "
- "`%s' while already triggering another event", name,
- camel_type_to_name (obj->s.type));
- return;
- }
-
- if (obj->classfuncs->event_to_preplist == NULL) {
- g_warning
- ("camel_object_trigger_event: trying to trigger `%s' in class "
- "`%s' with no defined events.", name,
- camel_type_to_name (obj->s.type));
- return;
- }
-
- prep = g_hash_table_lookup (obj->classfuncs->event_to_preplist, name);
-
- if (prep == NULL) {
- g_warning
- ("camel_object_trigger_event: trying to trigger undefined "
- "event `%s' in class `%s'.", name,
- camel_type_to_name (obj->s.type));
- return;
- }
-
- /* Ref so that it can't get destroyed in the event, which would
- * be Bad. And it's a valid ref anyway...
- */
-
- camel_object_ref (obj);
- obj->in_event = 1;
-
- if ((prep != NULL_PREP_VALUE && !prep (obj, event_data))
- || obj->event_to_hooklist == NULL) {
- obj->in_event = 0;
- camel_object_unref (obj);
- return;
- }
-
- hooklist = g_hash_table_lookup (obj->event_to_hooklist, name);
-
- while (hooklist && hooklist->data) {
- pair = hooklist->data;
- (pair->func) (obj, event_data, pair->user_data);
- hooklist = hooklist->next;
- }
-
- obj->in_event = 0;
- camel_object_unref (obj);
-}
-
-/* ** Static helpers ****************************************************** */
-
-static gboolean
-shared_is_of_type (CamelObjectShared * sh, CamelType ctype, gboolean is_obj)
-{
- CamelTypeInfo *type_info;
- gchar *targtype;
-
- if (is_obj)
- targtype = "instance";
- else
- targtype = "classdata";
-
- if (ctype == CAMEL_INVALID_TYPE) {
- g_warning
- ("shared_is_of_type: trying to cast to CAMEL_INVALID_TYPE");
- return FALSE;
- }
-
- if (sh == NULL) {
- g_warning
- ("shared_is_of_type: trying to cast NULL to %s of `%s'",
- targtype, camel_type_to_name (ctype));
- return FALSE;
- }
-
- if (sh->magic == CAMEL_OBJECT_FINALIZED_VALUE) {
- g_warning
- ("shared_is_of_type: trying to cast finalized instance "
- "of `%s' into %s of `%s'",
- camel_type_to_name (sh->type), targtype,
- camel_type_to_name (ctype));
- return FALSE;
- }
-
- if (sh->magic == CAMEL_OBJECT_CLASS_FINALIZED_VALUE) {
- g_warning
- ("shared_is_of_type: trying to cast finalized classdata "
- "of `%s' into %s of `%s'",
- camel_type_to_name (sh->type), targtype,
- camel_type_to_name (ctype));
- return FALSE;
- }
-
- if (is_obj) {
- if (sh->magic == CAMEL_OBJECT_CLASS_MAGIC_VALUE) {
- g_warning
- ("shared_is_of_type: trying to cast classdata "
- "of `%s' into instance of `%s'",
- camel_type_to_name (sh->type),
- camel_type_to_name (ctype));
- return FALSE;
- }
-
- if (sh->magic != CAMEL_OBJECT_MAGIC_VALUE) {
- g_warning
- ("shared_is_of_type: trying to cast junk data "
- "into instance of `%s'",
- camel_type_to_name (ctype));
- return FALSE;
- }
- } else {
- if (sh->magic == CAMEL_OBJECT_MAGIC_VALUE) {
- g_warning
- ("shared_is_of_type: trying to cast instance "
- "of `%s' into classdata of `%s'",
- camel_type_to_name (sh->type),
- camel_type_to_name (ctype));
- return FALSE;
- }
-
- if (sh->magic != CAMEL_OBJECT_CLASS_MAGIC_VALUE) {
- g_warning
- ("shared_is_of_type: trying to cast junk data "
- "into classdata of `%s'",
- camel_type_to_name (ctype));
- return FALSE;
- }
- }
-
- camel_type_lock_up ();
-
- type_info =
- g_hash_table_lookup (ctype_to_typeinfo,
- GINT_TO_POINTER (sh->type));
-
- if (type_info == NULL) {
- g_warning ("shared_is_of_type: seemingly valid %s has "
- "bad type %d.", targtype, sh->type);
- camel_type_lock_down ();
- return FALSE;
- }
-
- while (type_info) {
- if (type_info->self == ctype) {
- camel_type_lock_down ();
- return TRUE;
- }
-
- type_info =
- g_hash_table_lookup (ctype_to_typeinfo,
- GINT_TO_POINTER (type_info->
- parent));
- }
-
- /* this isn't an error, e.g. CAMEL_IS_FOLDER(folder), its upto the
- caller to handle the false case */
- /*g_warning
- ("shared_is_of_type: %s of `%s' (@%p) is not also %s of `%s'",
- targtype, camel_type_to_name (sh->type), sh, targtype,
- camel_type_to_name (ctype));*/
-
- camel_type_lock_down ();
- return FALSE;
-}
-
-static void
-make_global_classfuncs (CamelTypeInfo * type_info)
-{
- CamelObjectClass *funcs;
- GSList *parents;
- GSList *head;
-
- g_assert (type_info);
-
- funcs = g_malloc0 (type_info->classfuncs_size);
- funcs->s.type = type_info->self;
-
- type_info->global_classfuncs = funcs;
-
- parents = NULL;
- while (type_info) {
- parents = g_slist_prepend (parents, type_info);
- type_info =
- g_hash_table_lookup (ctype_to_typeinfo,
- GINT_TO_POINTER (type_info->
- parent));
- }
-
- head = parents;
-
- for (; parents && parents->data; parents = parents->next) {
- CamelTypeInfo *thisinfo;
-
- thisinfo = parents->data;
- if (thisinfo->class_init)
- (thisinfo->class_init) (funcs);
- }
-
- g_slist_free (head);
-}
diff --git a/camel/camel-object.h b/camel/camel-object.h
deleted file mode 100644
index ad76b0add9..0000000000
--- a/camel/camel-object.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-object.h: Base class for Camel */
-
-/*
- * Author:
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_OBJECT_H
-#define CAMEL_OBJECT_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus } */
-
-#include <stdlib.h> /* size_t */
-#include <glib.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <camel/camel-types.h>
-
-#ifdef G_DISABLE_CHECKS
-#define CAMEL_CHECK_CAST( obj, ctype, ptype ) ((ptype *) obj)
-#define CAMEL_CHECK_CLASS_CAST( class, ctype, ptype ) ((ptype *) class)
-#define CAMEL_CHECK_TYPE( obj, ctype ) (TRUE)
-#define CAMEL_CHECK_CLASS_TYPE( class, ctype ) (TRUE)
-#else
-#define CAMEL_CHECK_CAST( obj, ctype, ptype ) ((ptype *) camel_object_check_cast( (CamelObject *)(obj), (CamelType)(ctype) ))
-#define CAMEL_CHECK_CLASS_CAST( class, ctype, ptype ) ((ptype *) camel_object_class_check_cast( (CamelObjectClass *)(class), (CamelType)(ctype) ))
-#define CAMEL_CHECK_TYPE( obj, ctype ) (camel_object_is_of_type( (CamelObject *)(obj), (CamelType)(ctype) ))
-#define CAMEL_CHECK_CLASS_TYPE( class, ctype ) (camel_object_class_is_of_type( (CamelObjectClass *)(class), (CamelType)(ctype) ))
-#endif
-
-#define CAMEL_INVALID_TYPE ((CamelType)0)
-
-#define CAMEL_OBJECT_TYPE (camel_object_get_type ())
-
-#define CAMEL_OBJECT(obj) (CAMEL_CHECK_CAST((obj), CAMEL_OBJECT_TYPE, CamelObject))
-#define CAMEL_OBJECT_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_OBJECT_TYPE, CamelObjectClass))
-#define CAMEL_IS_OBJECT(o) (CAMEL_CHECK_TYPE((o), CAMEL_OBJECT_TYPE))
-#define CAMEL_IS_OBJECT_CLASS(k) (CAMEL_CHECK_CLASS_TYPE((k), CAMEL_OBJECT_TYPE))
-
-#define CAMEL_OBJECT_GET_CLASS(o) ((CamelObjectClass *)(CAMEL_OBJECT(o))->classfuncs)
-#define CAMEL_OBJECT_GET_TYPE(o) ((CamelType)(CAMEL_OBJECT(o))->s.type)
-
-typedef guint32 CamelType;
-
-typedef struct _CamelObjectShared
-{
- guint32 magic;
- CamelType type;
-}
-CamelObjectShared;
-
-typedef struct _CamelObjectClass
-{
- CamelObjectShared s;
-
- GHashTable *event_to_preplist;
-}
-CamelObjectClass;
-
-typedef struct _CamelObject
-{
- CamelObjectShared s;
- guint32 ref_count:31;
- guint32 in_event:1;
- CamelObjectClass *classfuncs;
- GHashTable *event_to_hooklist;
-}
-CamelObject;
-
-typedef void (*CamelObjectClassInitFunc) (CamelObjectClass *);
-typedef void (*CamelObjectClassFinalizeFunc) (CamelObjectClass *);
-typedef void (*CamelObjectInitFunc) (CamelObject *);
-typedef void (*CamelObjectFinalizeFunc) (CamelObject *);
-
-typedef gboolean (*CamelObjectEventPrepFunc) (CamelObject *,
- gpointer);
-typedef void (*CamelObjectEventHookFunc) (CamelObject *, gpointer,
- gpointer);
-
-/* The type system .... it's pretty simple..... */
-
-void camel_type_init (void);
-CamelType camel_type_register (CamelType parent, const gchar * name,
- size_t instance_size,
- size_t classfuncs_size,
- CamelObjectClassInitFunc class_init,
- CamelObjectClassFinalizeFunc
- class_finalize,
- CamelObjectInitFunc instance_init,
- CamelObjectFinalizeFunc
- instance_finalize);
-CamelObjectClass *camel_type_get_global_classfuncs (CamelType type);
-const gchar *camel_type_to_name (CamelType type);
-
-CamelType camel_object_get_type (void);
-CamelObject *camel_object_new (CamelType type);
-void camel_object_ref (CamelObject * obj);
-void camel_object_unref (CamelObject * obj);
-CamelObject *camel_object_check_cast (CamelObject * obj,
- CamelType ctype);
-CamelObjectClass *camel_object_class_check_cast (CamelObjectClass *
- class,
- CamelType ctype);
-gboolean camel_object_is_of_type (CamelObject * obj, CamelType ctype);
-gboolean camel_object_class_is_of_type (CamelObjectClass * class,
- CamelType ctype);
-gchar *camel_object_describe (CamelObject * obj);
-void camel_object_class_declare_event (CamelObjectClass * class,
- const gchar * name,
- CamelObjectEventPrepFunc prep);
-void camel_object_hook_event (CamelObject * obj, const gchar * name,
- CamelObjectEventHookFunc hook,
- gpointer user_data);
-void camel_object_unhook_event (CamelObject * obj, const gchar * name,
- CamelObjectEventHookFunc hook,
- gpointer user_data);
-void camel_object_trigger_event (CamelObject * obj,
- const gchar * name,
- gpointer event_data);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_OBJECT_H */
diff --git a/camel/camel-operation.c b/camel/camel-operation.c
deleted file mode 100644
index 0b5678d29a..0000000000
--- a/camel/camel-operation.c
+++ /dev/null
@@ -1,665 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#ifdef ENABLE_THREADS
-#include <pthread.h>
-#endif
-
-#include <sys/time.h>
-#include <unistd.h>
-
-#include <glib.h>
-#include "camel-operation.h"
-#include "e-util/e-msgport.h"
-
-#define d(x)
-
-/* ********************************************************************** */
-
-struct _status_stack {
- guint32 flags;
- char *msg;
- int pc; /* last pc reported */
- unsigned int stamp; /* last stamp reported */
-};
-
-struct _CamelOperation {
- pthread_t id; /* id of running thread */
- guint32 flags; /* cancelled ? */
- int blocked; /* cancellation blocked depth */
- int refcount;
-
- CamelOperationStatusFunc status;
- void *status_data;
- unsigned int status_update;
-
- /* stack of status messages (struct _status_stack *) */
- GSList *status_stack;
- struct _status_stack *lastreport;
-
-#ifdef ENABLE_THREADS
- EMsgPort *cancel_port;
- int cancel_fd;
- pthread_mutex_t lock;
-#endif
-};
-
-#define CAMEL_OPERATION_CANCELLED (1<<0)
-#define CAMEL_OPERATION_TRANSIENT (1<<1)
-
-#ifdef ENABLE_THREADS
-#define CAMEL_OPERATION_LOCK(cc) pthread_mutex_lock(&cc->lock)
-#define CAMEL_OPERATION_UNLOCK(cc) pthread_mutex_unlock(&cc->lock)
-#define CAMEL_ACTIVE_LOCK() pthread_mutex_lock(&operation_active_lock)
-#define CAMEL_ACTIVE_UNLOCK() pthread_mutex_unlock(&operation_active_lock)
-static pthread_mutex_t operation_active_lock = PTHREAD_MUTEX_INITIALIZER;
-#else
-#define CAMEL_OPERATION_LOCK(cc)
-#define CAMEL_OPERATION_UNLOCK(cc)
-#define CAMEL_ACTIVE_LOCK()
-#define CAMEL_ACTIVE_UNLOCK()
-#endif
-
-static unsigned int stamp (void);
-
-static GHashTable *operation_active;
-
-typedef struct _CamelOperationMsg {
- EMsg msg;
-} CamelOperationMsg ;
-
-/**
- * camel_operation_new:
- * @status: Callback for receiving status messages.
- * @status_data: User data.
- *
- * Create a new camel operation handle. Camel operation handles can
- * be used in a multithreaded application (or a single operation
- * handle can be used in a non threaded appliation) to cancel running
- * operations and to obtain notification messages of the internal
- * status of messages.
- *
- * Return value: A new operation handle.
- **/
-CamelOperation *camel_operation_new(CamelOperationStatusFunc status, void *status_data)
-{
- CamelOperation *cc;
-
- cc = g_malloc0(sizeof(*cc));
-
- cc->flags = 0;
- cc->blocked = 0;
- cc->refcount = 1;
- cc->status = status;
- cc->status_data = status_data;
-#ifdef ENABLE_THREADS
- cc->id = ~0;
- cc->cancel_port = e_msgport_new();
- cc->cancel_fd = e_msgport_fd(cc->cancel_port);
- pthread_mutex_init(&cc->lock, NULL);
-#endif
-
- return cc;
-}
-
-/**
- * camel_operation_reset:
- * @cc:
- *
- * Resets an operation cancel state and message.
- **/
-void camel_operation_reset(CamelOperation *cc)
-{
- GSList *n;
-
-#ifdef ENABLE_THREADS
- CamelOperationMsg *msg;
-
- while ((msg = (CamelOperationMsg *)e_msgport_get(cc->cancel_port)))
- g_free(msg);
-#endif
-
- n = cc->status_stack;
- while (n) {
- g_free(n->data);
- n = n->next;
- }
- g_slist_free(cc->status_stack);
- cc->status_stack = NULL;
-
- cc->flags = 0;
- cc->blocked = 0;
-}
-
-/**
- * camel_operation_ref:
- * @cc:
- *
- * Add a reference to the CamelOperation @cc.
- **/
-void camel_operation_ref(CamelOperation *cc)
-{
- CAMEL_OPERATION_LOCK(cc);
- cc->refcount++;
- CAMEL_OPERATION_UNLOCK(cc);
-}
-
-/**
- * camel_operation_unref:
- * @cc:
- *
- * Unref and potentially free @cc.
- **/
-void camel_operation_unref(CamelOperation *cc)
-{
- GSList *n;
-#ifdef ENABLE_THREADS
- CamelOperationMsg *msg;
-
- if (cc->refcount == 1) {
- while ((msg = (CamelOperationMsg *)e_msgport_get(cc->cancel_port)))
- g_free(msg);
-
- e_msgport_destroy(cc->cancel_port);
-#endif
- n = cc->status_stack;
- while (n) {
- g_warning("Camel operation status stack non empty: %s", (char *)n->data);
- g_free(n->data);
- n = n->next;
- }
- g_slist_free(cc->status_stack);
-
- g_free(cc);
- } else {
- CAMEL_OPERATION_LOCK(cc);
- cc->refcount--;
- CAMEL_OPERATION_UNLOCK(cc);
- }
-}
-
-/**
- * camel_operation_cancel_block:
- * @cc:
- *
- * Block cancellation for this operation. If @cc is NULL, then the
- * current thread is blocked.
- **/
-void camel_operation_cancel_block(CamelOperation *cc)
-{
- CAMEL_ACTIVE_LOCK();
- if (operation_active == NULL)
- operation_active = g_hash_table_new(NULL, NULL);
-
- if (cc == NULL)
- cc = g_hash_table_lookup(operation_active, (void *)pthread_self());
- CAMEL_ACTIVE_UNLOCK();
-
- if (cc) {
- CAMEL_OPERATION_LOCK(cc);
- cc->blocked++;
- CAMEL_OPERATION_UNLOCK(cc);
- }
-}
-
-/**
- * camel_operation_cancel_unblock:
- * @cc:
- *
- * Unblock cancellation, when the unblock count reaches the block
- * count, then this operation can be cancelled. If @cc is NULL, then
- * the current thread is unblocked.
- **/
-void camel_operation_cancel_unblock(CamelOperation *cc)
-{
- CAMEL_ACTIVE_LOCK();
- if (operation_active == NULL)
- operation_active = g_hash_table_new(NULL, NULL);
-
- if (cc == NULL)
- cc = g_hash_table_lookup(operation_active, (void *)pthread_self());
- CAMEL_ACTIVE_UNLOCK();
-
- if (cc) {
- CAMEL_OPERATION_LOCK(cc);
- cc->blocked--;
- CAMEL_OPERATION_UNLOCK(cc);
- }
-}
-
-static void
-cancel_thread(void *key, CamelOperation *cc, void *data)
-{
- if (cc)
- camel_operation_cancel(cc);
-}
-
-/**
- * camel_operation_cancel:
- * @cc:
- *
- * Cancel a given operation. If @cc is NULL then all outstanding
- * operations are cancelled.
- **/
-void camel_operation_cancel(CamelOperation *cc)
-{
- CamelOperationMsg *msg;
-
- if (cc == NULL) {
- if (operation_active) {
- CAMEL_ACTIVE_LOCK();
- g_hash_table_foreach(operation_active, (GHFunc)cancel_thread, NULL);
- CAMEL_ACTIVE_UNLOCK();
- }
- } else if ((cc->flags & CAMEL_OPERATION_CANCELLED) == 0) {
- d(printf("cancelling thread %d\n", cc->id));
-
- CAMEL_OPERATION_LOCK(cc);
- msg = g_malloc0(sizeof(*msg));
- e_msgport_put(cc->cancel_port, (EMsg *)msg);
- cc->flags |= CAMEL_OPERATION_CANCELLED;
- CAMEL_OPERATION_UNLOCK(cc);
- }
-}
-
-/**
- * camel_operation_register:
- * @cc:
- *
- * Register a thread or the main thread for cancellation through @cc.
- * If @cc is NULL, then a new cancellation is created for this thread,
- * but may only be cancelled from the same thread.
- *
- * All calls to operation_register() should be matched with calls to
- * operation_unregister(), or resources will be lost.
- **/
-void camel_operation_register(CamelOperation *cc)
-{
- pthread_t id = pthread_self();
-
- CAMEL_ACTIVE_LOCK();
-
- if (operation_active == NULL)
- operation_active = g_hash_table_new(NULL, NULL);
-
- if (cc == NULL) {
- cc = g_hash_table_lookup(operation_active, (void *)id);
- if (cc == NULL) {
- cc = camel_operation_new(NULL, NULL);
- }
- }
-
- cc->id = id;
- g_hash_table_insert(operation_active, (void *)id, cc);
-
- d(printf("registering thread %ld for cancellation\n", id));
-
- CAMEL_ACTIVE_UNLOCK();
-
- camel_operation_ref(cc);
-}
-
-/**
- * camel_operation_unregister:
- * @cc:
- *
- * Unregister a given operation from being cancelled. If @cc is NULL,
- * then the current thread is used.
- **/
-void camel_operation_unregister(CamelOperation *cc)
-{
- CAMEL_ACTIVE_LOCK();
-
- if (operation_active == NULL)
- operation_active = g_hash_table_new(NULL, NULL);
-
- if (cc == NULL) {
- cc = g_hash_table_lookup(operation_active, (void *)pthread_self());
- if (cc == NULL) {
- g_warning("Trying to unregister a thread that was never registered for cancellation");
- }
- }
-
- if (cc)
- g_hash_table_remove(operation_active, (void *)cc->id);
-
- CAMEL_ACTIVE_UNLOCK();
-
- d({if (cc) printf("unregistering thread %d for cancellation\n", cc->id);});
-
- if (cc)
- camel_operation_unref(cc);
-}
-
-/**
- * camel_operation_cancel_check:
- * @cc:
- *
- * Check if cancellation has been applied to @cc. If @cc is NULL,
- * then the CamelOperation registered for the current thread is used.
- *
- * Return value: TRUE if the operation has been cancelled.
- **/
-gboolean camel_operation_cancel_check(CamelOperation *cc)
-{
- CamelOperationMsg *msg;
-
- d(printf("checking for cancel in thread %d\n", pthread_self()));
-
- if (cc == NULL) {
- if (operation_active) {
- CAMEL_ACTIVE_LOCK();
- cc = g_hash_table_lookup(operation_active, (void *)pthread_self());
- CAMEL_ACTIVE_UNLOCK();
- }
- if (cc == NULL)
- return FALSE;
- }
-
- if (cc->blocked > 0) {
- d(printf("ahah! cancellation is blocked\n"));
- return FALSE;
- }
-
- if (cc->flags & CAMEL_OPERATION_CANCELLED) {
- d(printf("previously cancelled\n"));
- return TRUE;
- }
-
- msg = (CamelOperationMsg *)e_msgport_get(cc->cancel_port);
- if (msg) {
- d(printf("Got cancellation message\n"));
- CAMEL_OPERATION_LOCK(cc);
- cc->flags |= CAMEL_OPERATION_CANCELLED;
- CAMEL_OPERATION_UNLOCK(cc);
- return TRUE;
- }
- return FALSE;
-}
-
-/**
- * camel_operation_cancel_fd:
- * @cc:
- *
- * Retrieve a file descriptor that can be waited on (select, or poll)
- * for read, to asynchronously detect cancellation.
- *
- * Return value: The fd, or -1 if cancellation is not available
- * (blocked, or has not been registered for this thread).
- **/
-int camel_operation_cancel_fd(CamelOperation *cc)
-{
- if (cc == NULL) {
- if (operation_active) {
- CAMEL_ACTIVE_LOCK();
- cc = g_hash_table_lookup(operation_active, (void *)pthread_self());
- CAMEL_ACTIVE_UNLOCK();
- }
- if (cc == NULL)
- return -1;
- }
- if (cc->blocked)
- return -1;
-
- return cc->cancel_fd;
-}
-
-/**
- * camel_operation_start:
- * @cc:
- * @what:
- * @:
- *
- * Report the start of an operation. All start operations should have
- * similar end operations.
- **/
-void camel_operation_start(CamelOperation *cc, char *what, ...)
-{
- va_list ap;
- char *msg;
- struct _status_stack *s;
-
- if (operation_active == NULL)
- return;
-
- if (cc == NULL) {
- CAMEL_ACTIVE_LOCK();
- cc = g_hash_table_lookup(operation_active, (void *)pthread_self());
- CAMEL_ACTIVE_UNLOCK();
- if (cc == NULL)
- return;
- }
-
- if (cc->status == NULL)
- return;
-
- va_start(ap, what);
- msg = g_strdup_vprintf(what, ap);
- va_end(ap);
- cc->status(cc, msg, CAMEL_OPERATION_START, cc->status_data);
- cc->status_update = 0;
- s = g_malloc0(sizeof(*s));
- s->msg = msg;
- s->flags = 0;
- cc->lastreport = s;
- cc->status_stack = g_slist_prepend(cc->status_stack, s);
- d(printf("start '%s'\n", msg, pc));
-}
-
-/**
- * camel_operation_start_transient:
- * @cc:
- * @what:
- * @:
- *
- * Start a transient event. We only update this to the display if it
- * takes very long to process, and if we do, we then go back to the
- * previous state when finished.
- **/
-void camel_operation_start_transient(CamelOperation *cc, char *what, ...)
-{
- va_list ap;
- char *msg;
- struct _status_stack *s;
-
- if (operation_active == NULL)
- return;
-
- if (cc == NULL) {
- CAMEL_ACTIVE_LOCK();
- cc = g_hash_table_lookup(operation_active, (void *)pthread_self());
- CAMEL_ACTIVE_UNLOCK();
- if (cc == NULL)
- return;
- }
-
- if (cc->status == NULL)
- return;
-
- va_start(ap, what);
- msg = g_strdup_vprintf(what, ap);
- va_end(ap);
- /* we dont report it yet */
- /*cc->status(cc, msg, CAMEL_OPERATION_START, cc->status_data);*/
- cc->status_update = 0;
- s = g_malloc0(sizeof(*s));
- s->msg = msg;
- s->flags = CAMEL_OPERATION_TRANSIENT;
- s->stamp = stamp();
- cc->status_stack = g_slist_prepend(cc->status_stack, s);
- d(printf("start '%s'\n", msg, pc));
-}
-
-static unsigned int stamp(void)
-{
- struct timeval tv;
-
- gettimeofday(&tv, NULL);
- /* update 4 times/second */
- return (tv.tv_sec * 4) + tv.tv_usec / (1000000/4);
-}
-
-/**
- * camel_operation_progress:
- * @cc: Operation to report to.
- * @pc: Percent complete, 0 to 100.
- *
- * Report progress on the current operation. If @cc is NULL, then the
- * currently registered operation is used. @pc reports the current
- * percentage of completion, which should be in the range of 0 to 100.
- *
- * If the total percentage is not know, then use
- * camel_operation_progress_count().
- **/
-void camel_operation_progress(CamelOperation *cc, int pc)
-{
- unsigned int now;
- struct _status_stack *s;
-
- if (operation_active == NULL)
- return;
-
- if (cc == NULL) {
- CAMEL_ACTIVE_LOCK();
- cc = g_hash_table_lookup(operation_active, (void *)pthread_self());
- CAMEL_ACTIVE_UNLOCK();
- if (cc == NULL)
- return;
- }
-
- if (cc->status == NULL)
- return;
-
- if (cc->status_stack == NULL)
- return;
-
- s = cc->status_stack->data;
- s->pc = pc;
-
- now = stamp();
- if (cc->status_update != now) {
- if (s->flags & CAMEL_OPERATION_TRANSIENT) {
- if (s->stamp/16 < now/16) {
- s->stamp = now;
- cc->status(cc, s->msg, pc, cc->status_data);
- cc->status_update = now;
- cc->lastreport = s;
- }
- } else {
- cc->status(cc, s->msg, pc, cc->status_data);
- d(printf("progress '%s' %d %%\n", s->msg, pc));
- s->stamp = cc->status_update = now;
- cc->lastreport = s;
- }
- }
-}
-
-void camel_operation_progress_count(CamelOperation *cc, int sofar)
-{
- unsigned int now;
- struct _status_stack *s;
-
- if (operation_active == NULL)
- return;
-
- if (cc == NULL) {
- CAMEL_ACTIVE_LOCK();
- cc = g_hash_table_lookup(operation_active, (void *)pthread_self());
- CAMEL_ACTIVE_UNLOCK();
- if (cc == NULL)
- return;
- }
-
- if (cc->status == NULL)
- return;
-
- if (cc->status_stack == NULL)
- return;
-
- /* FIXME: generate some meaningful pc value */
- s = cc->status_stack->data;
- s->pc = sofar;
- now = stamp();
- if (cc->status_update != now) {
- if (s->flags & CAMEL_OPERATION_TRANSIENT) {
- if (s->stamp/16 < now/16) {
- s->stamp = now;
- cc->status(cc, s->msg, sofar, cc->status_data);
- cc->status_update = now;
- cc->lastreport = s;
- }
- } else {
- cc->status(cc, s->msg, sofar, cc->status_data);
- d(printf("progress '%s' %d done\n", msg, sofar));
- s->stamp = cc->status_update = now;
- cc->lastreport = s;
- }
- }
-}
-
-/**
- * camel_operation_end:
- * @cc:
- * @what: Format string.
- * @:
- *
- * Report the end of an operation. If @cc is NULL, then the currently
- * registered operation is notified.
- **/
-void camel_operation_end(CamelOperation *cc)
-{
- struct _status_stack *s, *p;
- unsigned int now;
-
- if (operation_active == NULL)
- return;
-
- if (cc == NULL) {
- CAMEL_ACTIVE_LOCK();
- cc = g_hash_table_lookup(operation_active, (void *)pthread_self());
- CAMEL_ACTIVE_UNLOCK();
- if (cc == NULL)
- return;
- }
-
- if (cc->status == NULL)
- return;
-
- if (cc->status_stack == NULL)
- return;
-
- /* so what we do here is this. If the operation that just
- * ended was transient, see if we have any other transient
- * messages that haven't been updated yet above us, otherwise,
- * re-update as a non-transient at the last reported pc */
- now = stamp();
- s = cc->status_stack->data;
- if (s->flags & CAMEL_OPERATION_TRANSIENT) {
- if (cc->lastreport == s) {
- GSList *l = cc->status_stack->next;
- while (l) {
- p = l->data;
- if (p->flags & CAMEL_OPERATION_TRANSIENT) {
- if (p->stamp/16 < now/16) {
- cc->status(cc, p->msg, p->pc, cc->status_data);
- cc->lastreport = p;
- break;
- }
- } else {
- cc->status(cc, p->msg, p->pc, cc->status_data);
- cc->lastreport = p;
- break;
- }
- l = l->next;
- }
- }
- } else {
- cc->status(cc, s->msg, CAMEL_OPERATION_END, cc->status_data);
- cc->lastreport = s;
- }
- g_free(s->msg);
- g_free(s);
- cc->status_stack = g_slist_remove_link(cc->status_stack, cc->status_stack);
-}
diff --git a/camel/camel-operation.h b/camel/camel-operation.h
deleted file mode 100644
index 8bf5cfa2dc..0000000000
--- a/camel/camel-operation.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Authors: Michael Zucchi <NotZed@Ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (http://www.ximian.com/)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_OPERATION_H
-#define CAMEL_OPERATION_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-/* cancellation helper stuff, not yet finalised */
-
-typedef struct _CamelOperation CamelOperation;
-
-typedef void (*CamelOperationStatusFunc)(struct _CamelOperation *op, const char *what, int pc, void *data);
-
-enum _camel_operation_status_t {
- CAMEL_OPERATION_START = -1,
- CAMEL_OPERATION_END = -2,
-};
-
-/* main thread functions */
-CamelOperation *camel_operation_new(CamelOperationStatusFunc status, void *status_data);
-void camel_operation_ref(CamelOperation *cc);
-void camel_operation_unref(CamelOperation *cc);
-void camel_operation_reset(CamelOperation *cc);
-void camel_operation_cancel(CamelOperation *cc);
-/* subthread functions */
-void camel_operation_register(CamelOperation *cc);
-void camel_operation_unregister(CamelOperation *cc);
-/* called internally by camel, for the current thread */
-void camel_operation_cancel_block(CamelOperation *cc);
-void camel_operation_cancel_unblock(CamelOperation *cc);
-int camel_operation_cancel_check(CamelOperation *cc);
-int camel_operation_cancel_fd(CamelOperation *cc);
-
-void camel_operation_start(CamelOperation *cc, char *what, ...);
-void camel_operation_start_transient(CamelOperation *cc, char *what, ...);
-void camel_operation_progress(CamelOperation *cc, int pc);
-void camel_operation_progress_count(CamelOperation *cc, int sofar);
-void camel_operation_end(CamelOperation *cc);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_OPERATION_H */
diff --git a/camel/camel-pgp-context.c b/camel/camel-pgp-context.c
deleted file mode 100644
index a3945a22fe..0000000000
--- a/camel/camel-pgp-context.c
+++ /dev/null
@@ -1,1359 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "camel-pgp-context.h"
-
-#include "camel-stream-fs.h"
-#include "camel-stream-mem.h"
-
-#include "camel-charset-map.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <dirent.h>
-
-#include <signal.h>
-#include <sys/ioctl.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <termios.h>
-#include <unistd.h>
-#include <signal.h>
-
-#include <iconv.h>
-#include <gal/unicode/gunicode.h>
-
-#define d(x)
-
-struct _CamelPgpContextPrivate {
- CamelPgpType type;
- char *path;
-};
-
-static int pgp_sign (CamelCipherContext *ctx, const char *userid, CamelCipherHash hash,
- CamelStream *istream, CamelStream *ostream, CamelException *ex);
-static int pgp_clearsign (CamelCipherContext *context, const char *userid,
- CamelCipherHash hash, CamelStream *istream,
- CamelStream *ostream, CamelException *ex);
-static CamelCipherValidity *pgp_verify (CamelCipherContext *context, CamelCipherHash hash,
- CamelStream *istream, CamelStream *sigstream,
- CamelException *ex);
-static int pgp_encrypt (CamelCipherContext *context, gboolean sign, const char *userid,
- GPtrArray *recipients, CamelStream *istream, CamelStream *ostream,
- CamelException *ex);
-static int pgp_decrypt (CamelCipherContext *context, CamelStream *istream,
- CamelStream *ostream, CamelException *ex);
-
-static CamelCipherContextClass *parent_class;
-
-static void
-camel_pgp_context_init (CamelPgpContext *context)
-{
- context->priv = g_new0 (struct _CamelPgpContextPrivate, 1);
-}
-
-static void
-camel_pgp_context_finalise (CamelObject *o)
-{
- CamelPgpContext *context = (CamelPgpContext *)o;
-
- g_free (context->priv->path);
-
- g_free (context->priv);
-}
-
-static void
-camel_pgp_context_class_init (CamelPgpContextClass *camel_pgp_context_class)
-{
- CamelCipherContextClass *camel_cipher_context_class =
- CAMEL_CIPHER_CONTEXT_CLASS (camel_pgp_context_class);
-
- parent_class = CAMEL_CIPHER_CONTEXT_CLASS (camel_type_get_global_classfuncs (camel_cipher_context_get_type ()));
-
- camel_cipher_context_class->sign = pgp_sign;
- camel_cipher_context_class->clearsign = pgp_clearsign;
- camel_cipher_context_class->verify = pgp_verify;
- camel_cipher_context_class->encrypt = pgp_encrypt;
- camel_cipher_context_class->decrypt = pgp_decrypt;
-}
-
-CamelType
-camel_pgp_context_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_cipher_context_get_type (),
- "CamelPgpContext",
- sizeof (CamelPgpContext),
- sizeof (CamelPgpContextClass),
- (CamelObjectClassInitFunc) camel_pgp_context_class_init,
- NULL,
- (CamelObjectInitFunc) camel_pgp_context_init,
- (CamelObjectFinalizeFunc) camel_pgp_context_finalise);
- }
-
- return type;
-}
-
-
-/**
- * camel_pgp_context_new:
- * @session: CamelSession
- * @type: One of CAMEL_PGP_TYPE_PGP2, PGP5, GPG, or PGP6
- * @path: path to PGP binary
- *
- * This creates a new CamelPgpContext object which is used to sign,
- * verify, encrypt and decrypt streams.
- *
- * Return value: the new CamelPgpContext
- **/
-CamelPgpContext *
-camel_pgp_context_new (CamelSession *session, CamelPgpType type, const char *path)
-{
- CamelPgpContext *context;
-
- g_return_val_if_fail (session != NULL, NULL);
-
- if (type == CAMEL_PGP_TYPE_NONE || !path || !*path)
- return NULL;
-
- context = CAMEL_PGP_CONTEXT (camel_object_new (CAMEL_PGP_CONTEXT_TYPE));
-
- camel_cipher_context_construct (CAMEL_CIPHER_CONTEXT (context), session);
-
- context->priv->type = type;
- context->priv->path = g_strdup (path);
-
- return context;
-}
-
-
-
-static const gchar *
-pgp_get_type_as_string (CamelPgpType type)
-{
- switch (type) {
- case CAMEL_PGP_TYPE_PGP2:
- return "PGP2.x";
- case CAMEL_PGP_TYPE_PGP5:
- return "PGP5";
- case CAMEL_PGP_TYPE_PGP6:
- return "PGP6";
- case CAMEL_PGP_TYPE_GPG:
- return "GnuPG";
- default:
- g_assert_not_reached ();
- return NULL;
- }
-}
-
-static gchar *
-pgp_get_passphrase (CamelSession *session, CamelPgpType pgp_type, char *userid)
-{
- gchar *passphrase, *prompt;
- const char *type;
-
- type = pgp_get_type_as_string (pgp_type);
-
- if (userid)
- prompt = g_strdup_printf (_("Please enter your %s passphrase for %s"),
- type, userid);
- else
- prompt = g_strdup_printf (_("Please enter your %s passphrase"),
- type);
-
- /* Use the userid as a key if possible, else be generic and use the type */
- passphrase = camel_session_get_password (session, prompt, TRUE,
- NULL, userid ? userid : type,
- NULL);
- g_free (prompt);
-
- return passphrase;
-}
-
-static void
-pgp_forget_passphrase (CamelSession *session, CamelPgpType pgp_type, char *userid)
-{
- const char *type = NULL;
-
- if (!userid)
- type = pgp_get_type_as_string (pgp_type);
-
- camel_session_forget_password (session, NULL, userid ? userid : type, NULL);
-}
-
-static int
-cleanup_child (pid_t child)
-{
- int status;
- pid_t wait_result;
- sigset_t mask, omask;
-
- /* PGP5 closes fds before exiting, meaning this might be called
- * too early. So wait a bit for the result.
- */
- sigemptyset (&mask);
- sigaddset (&mask, SIGALRM);
- sigprocmask (SIG_BLOCK, &mask, &omask);
- alarm (1);
- wait_result = waitpid (child, &status, 0);
- alarm (0);
- sigprocmask (SIG_SETMASK, &omask, NULL);
-
- if (wait_result == -1 && errno == EINTR) {
- /* The child is hanging: send a friendly reminder. */
- kill (child, SIGTERM);
- sleep (1);
- wait_result = waitpid (child, &status, WNOHANG);
- if (wait_result == 0) {
- /* Still hanging; use brute force. */
- kill (child, SIGKILL);
- sleep (1);
- wait_result = waitpid (child, &status, WNOHANG);
- }
- }
-
- if (wait_result != -1 && WIFEXITED (status))
- return WEXITSTATUS (status);
- else
- return -1;
-}
-
-static void
-cleanup_before_exec (int fd)
-{
- int maxfd, i;
-
- maxfd = sysconf (_SC_OPEN_MAX);
- if (maxfd < 0)
- return;
-
- /* Loop over all fds. */
- for (i = 0; i < maxfd; i++) {
- if ((STDIN_FILENO != i) &&
- (STDOUT_FILENO != i) &&
- (STDERR_FILENO != i) &&
- (fd != i))
- close (i);
- }
-}
-
-static int
-crypto_exec_with_passwd (const char *path, char *argv[], const char *input, int inlen,
- int passwd_fds[], const char *passphrase,
- char **output, int *outlen, char **diagnostics)
-{
- fd_set fdset, write_fdset;
- int ip_fds[2], op_fds[2], diag_fds[2];
- int select_result, read_len, write_len;
- size_t tmp_len;
- pid_t child;
- char *buf, *diag_buf;
- const char *passwd_next, *input_next;
- size_t size, alloc_size, diag_size, diag_alloc_size;
- gboolean eof_seen, diag_eof_seen, passwd_eof_seen, input_eof_seen;
- size_t passwd_remaining, passwd_incr, input_remaining, input_incr;
- struct timeval timeout;
-
-
- if ((pipe (ip_fds) < 0 ) ||
- (pipe (op_fds) < 0 ) ||
- (pipe (diag_fds) < 0 )) {
- *diagnostics = g_strdup_printf ("Couldn't create pipe to %s: "
- "%s", path,
- g_strerror (errno));
- return 0;
- }
-
- if (!(child = fork ())) {
- /* In child */
-
- if ((dup2 (ip_fds[0], STDIN_FILENO) < 0 ) ||
- (dup2 (op_fds[1], STDOUT_FILENO) < 0 ) ||
- (dup2 (diag_fds[1], STDERR_FILENO) < 0 )) {
- _exit (255);
- }
-
- /* Dissociate from evolution-mail's controlling
- * terminal so that pgp/gpg won't be able to read from
- * it: PGP 2 will fall back to asking for the password
- * on /dev/tty if the passed-in password is incorrect.
- * This will make that fail rather than hanging.
- */
- setsid ();
-
- /* Close excess fds */
- cleanup_before_exec (passwd_fds[0]);
-
- execvp (path, argv);
- fprintf (stderr, "Could not execute %s: %s\n", argv[0],
- g_strerror (errno));
- _exit (255);
- } else if (child < 0) {
- *diagnostics = g_strdup_printf ("Cannot fork %s: %s",
- argv[0], g_strerror (errno));
- return 0;
- }
-
- /* Parent */
- close (ip_fds[0]);
- close (op_fds[1]);
- close (diag_fds[1]);
- close (passwd_fds[0]);
-
- timeout.tv_sec = 10; /* timeout in seconds */
- timeout.tv_usec = 0;
-
- size = diag_size = 0;
- alloc_size = 4096;
- diag_alloc_size = 1024;
- eof_seen = diag_eof_seen = FALSE;
-
- buf = g_malloc (alloc_size);
- diag_buf = g_malloc (diag_alloc_size);
-
- passwd_next = passphrase;
- passwd_remaining = passphrase ? strlen (passphrase) : 0;
- passwd_incr = fpathconf (passwd_fds[1], _PC_PIPE_BUF);
- /* Use a reasonable default value on error. */
- if (passwd_incr <= 0)
- passwd_incr = 1024;
- passwd_eof_seen = FALSE;
-
- input_next = input;
- input_remaining = inlen;
- input_incr = fpathconf (ip_fds[1], _PC_PIPE_BUF);
- if (input_incr <= 0)
- input_incr = 1024;
- input_eof_seen = FALSE;
-
- while (!(eof_seen && diag_eof_seen)) {
- FD_ZERO (&fdset);
- if (!eof_seen)
- FD_SET (op_fds[0], &fdset);
- if (!diag_eof_seen)
- FD_SET (diag_fds[0], &fdset);
-
- FD_ZERO (&write_fdset);
- if (!passwd_eof_seen)
- FD_SET (passwd_fds[1], &write_fdset);
- if (!input_eof_seen)
- FD_SET (ip_fds[1], &write_fdset);
-
- select_result = select (FD_SETSIZE, &fdset, &write_fdset,
- NULL, &timeout);
- if (select_result < 0) {
- if (errno == EINTR)
- continue;
- break;
- }
- if (select_result == 0) {
- /* timeout */
- break;
- }
-
- if (FD_ISSET (op_fds[0], &fdset)) {
- /* More output is available. */
-
- if (size + 4096 > alloc_size) {
- alloc_size += 4096;
- buf = g_realloc (buf , alloc_size);
- }
- read_len = read (op_fds[0], &buf[size],
- alloc_size - size - 1);
- if (read_len < 0) {
- if (errno == EINTR)
- continue;
- break;
- }
- if (read_len == 0)
- eof_seen = TRUE;
- size += read_len;
- }
-
- if (FD_ISSET(diag_fds[0], &fdset) ) {
- /* More stderr is available. */
-
- if (diag_size + 1024 > diag_alloc_size) {
- diag_alloc_size += 1024;
- diag_buf = g_realloc (diag_buf,
- diag_alloc_size);
- }
-
- read_len = read (diag_fds[0], &diag_buf[diag_size],
- diag_alloc_size - diag_size - 1);
- if (read_len < 0) {
- if (errno == EINTR)
- continue;
- break;
- }
- if (read_len == 0)
- diag_eof_seen = TRUE;
- diag_size += read_len;
- }
-
- if (FD_ISSET(passwd_fds[1], &write_fdset)) {
- /* Ready for more password input. */
-
- tmp_len = passwd_incr;
- if (tmp_len > passwd_remaining)
- tmp_len = passwd_remaining;
- write_len = write (passwd_fds[1], passwd_next,
- tmp_len);
- if (write_len < 0) {
- if (errno == EINTR)
- continue;
- break;
- }
- passwd_next += write_len;
- passwd_remaining -= write_len;
- if (passwd_remaining == 0) {
- close (passwd_fds[1]);
- passwd_eof_seen = TRUE;
- }
- }
-
- if (FD_ISSET(ip_fds[1], &write_fdset)) {
- /* Ready for more ciphertext input. */
-
- tmp_len = input_incr;
- if (tmp_len > input_remaining)
- tmp_len = input_remaining;
- write_len = write (ip_fds[1], input_next, tmp_len);
- if (write_len < 0) {
- if (errno == EINTR)
- continue;
- break;
- }
- input_next += write_len;
- input_remaining -= write_len;
- if (input_remaining == 0 ) {
- close (ip_fds[1]);
- input_eof_seen = TRUE;
- }
- }
- }
-
- buf[size] = 0;
- diag_buf[diag_size] = 0;
- close (op_fds[0]);
- close (diag_fds[0]);
-
- *output = buf;
- if (outlen)
- *outlen = size;
- *diagnostics = diag_buf;
-
- return cleanup_child (child);
-}
-
-
-/*----------------------------------------------------------------------*
- * Public crypto functions
- *----------------------------------------------------------------------*/
-
-static int
-pgp_sign (CamelCipherContext *ctx, const char *userid, CamelCipherHash hash,
- CamelStream *istream, CamelStream *ostream, CamelException *ex)
-{
- CamelPgpContext *context = CAMEL_PGP_CONTEXT (ctx);
- GByteArray *plaintext;
- CamelStream *stream;
- char *argv[20];
- char *ciphertext = NULL;
- char *diagnostics = NULL;
- char *passphrase = NULL;
- char *hash_str = NULL;
- int passwd_fds[2];
- char passwd_fd[32];
- int retval, i;
-
- /* get the plaintext in a form we can use */
- plaintext = g_byte_array_new ();
- stream = camel_stream_mem_new ();
- camel_stream_mem_set_byte_array (CAMEL_STREAM_MEM (stream), plaintext);
- camel_stream_write_to_stream (istream, stream);
- camel_object_unref (CAMEL_OBJECT (stream));
-
- if (!plaintext->len) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("No plaintext to sign."));
- goto exception;
- }
-
- passphrase = pgp_get_passphrase (ctx->session, context->priv->type, (char *) userid);
- if (!passphrase) {
- camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM,
- _("No password provided."));
- goto exception;
- }
-
- if (pipe (passwd_fds) < 0) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Couldn't create pipe to GPG/PGP: %s"),
- g_strerror (errno));
- goto exception;
- }
-
- switch (hash) {
- case CAMEL_CIPHER_HASH_DEFAULT:
- hash_str = NULL;
- break;
- case CAMEL_CIPHER_HASH_MD5:
- hash_str = "MD5";
- break;
- case CAMEL_CIPHER_HASH_SHA1:
- hash_str = "SHA1";
- break;
- default:
- g_assert_not_reached ();
- break;
- }
-
- i = 0;
- switch (context->priv->type) {
- case CAMEL_PGP_TYPE_GPG:
- argv[i++] = "gpg";
-
- argv[i++] = "--sign";
- argv[i++] = "-b";
- if (hash_str) {
- argv[i++] = "--digest-algo";
- argv[i++] = hash_str;
- }
-
- if (userid) {
- argv[i++] = "-u";
- argv[i++] = (char *) userid;
- }
-
- argv[i++] = "--verbose";
- argv[i++] = "--yes";
- argv[i++] = "--batch";
-
- argv[i++] = "--armor";
-
- argv[i++] = "--output";
- argv[i++] = "-"; /* output to stdout */
-
- argv[i++] = "--passphrase-fd";
- sprintf (passwd_fd, "%d", passwd_fds[0]);
- argv[i++] = passwd_fd;
- break;
- case CAMEL_PGP_TYPE_PGP5:
- /* FIXME: respect hash */
- argv[i++] = "pgps";
-
- if (userid) {
- argv[i++] = "-u";
- argv[i++] = (char *) userid;
- }
-
- argv[i++] = "-b";
- argv[i++] = "-f";
- argv[i++] = "-z";
- argv[i++] = "-a";
- argv[i++] = "-o";
- argv[i++] = "-"; /* output to stdout */
-
- sprintf (passwd_fd, "PGPPASSFD=%d", passwd_fds[0]);
- putenv (passwd_fd);
- break;
- case CAMEL_PGP_TYPE_PGP2:
- case CAMEL_PGP_TYPE_PGP6:
- /* FIXME: respect hash */
- argv[i++] = "pgp";
-
- if (userid) {
- argv[i++] = "-u";
- argv[i++] = (char *) userid;
- }
-
- argv[i++] = "-f";
- argv[i++] = "-a";
- argv[i++] = "-o";
- argv[i++] = "-";
-
- argv[i++] = "-sb"; /* create a detached signature */
- sprintf (passwd_fd, "PGPPASSFD=%d", passwd_fds[0]);
- putenv (passwd_fd);
- break;
- default:
- g_assert_not_reached ();
- break;
- }
-
- argv[i++] = NULL;
-
- retval = crypto_exec_with_passwd (context->priv->path, argv,
- plaintext->data, plaintext->len,
- passwd_fds, passphrase,
- &ciphertext, NULL,
- &diagnostics);
-
- g_byte_array_free (plaintext, TRUE);
- g_free (passphrase);
-
- if (retval != 0 || !*ciphertext) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- "%s", diagnostics);
- g_free (diagnostics);
- g_free (ciphertext);
- pgp_forget_passphrase (ctx->session, context->priv->type, (char *) userid);
-
- return -1;
- }
-
- g_free (diagnostics);
-
- camel_stream_write (ostream, ciphertext, strlen (ciphertext));
- g_free (ciphertext);
-
- return 0;
-
- exception:
-
- g_byte_array_free (plaintext, TRUE);
-
- if (passphrase) {
- pgp_forget_passphrase (ctx->session, context->priv->type, (char *) userid);
- g_free (passphrase);
- }
-
- return -1;
-}
-
-
-static int
-pgp_clearsign (CamelCipherContext *ctx, const char *userid, CamelCipherHash hash,
- CamelStream *istream, CamelStream *ostream, CamelException *ex)
-{
- CamelPgpContext *context = CAMEL_PGP_CONTEXT (ctx);
- GByteArray *plaintext;
- CamelStream *stream;
- char *argv[15];
- char *ciphertext = NULL;
- char *diagnostics = NULL;
- char *passphrase = NULL;
- char *hash_str = NULL;
- int passwd_fds[2];
- char passwd_fd[32];
- int retval, i;
-
- /* get the plaintext in a form we can use */
- plaintext = g_byte_array_new ();
- stream = camel_stream_mem_new ();
- camel_stream_mem_set_byte_array (CAMEL_STREAM_MEM (stream), plaintext);
- camel_stream_write_to_stream (istream, stream);
- camel_object_unref (CAMEL_OBJECT (stream));
-
- if (!plaintext->len) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("No plaintext to clearsign."));
- goto exception;
- }
-
- passphrase = pgp_get_passphrase (ctx->session, context->priv->type, (char *) userid);
- if (!passphrase) {
- camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM,
- _("No password provided."));
- goto exception;
- }
-
- if (pipe (passwd_fds) < 0) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Couldn't create pipe to GPG/PGP: %s"),
- g_strerror (errno));
- goto exception;
- }
-
- switch (hash) {
- case CAMEL_CIPHER_HASH_DEFAULT:
- hash_str = NULL;
- break;
- case CAMEL_CIPHER_HASH_MD5:
- hash_str = "MD5";
- break;
- case CAMEL_CIPHER_HASH_SHA1:
- hash_str = "SHA1";
- break;
- default:
- g_assert_not_reached ();
- break;
- }
-
- i = 0;
- switch (context->priv->type) {
- case CAMEL_PGP_TYPE_GPG:
- argv[i++] = "gpg";
-
- argv[i++] = "--clearsign";
-
- if (hash_str) {
- argv[i++] = "--digest-algo";
- argv[i++] = hash_str;
- }
-
- if (userid) {
- argv[i++] = "-u";
- argv[i++] = (char *) userid;
- }
-
- argv[i++] = "--verbose";
- argv[i++] = "--yes";
- argv[i++] = "--batch";
-
- argv[i++] = "--armor";
-
- argv[i++] = "--output";
- argv[i++] = "-"; /* output to stdout */
-
- argv[i++] = "--passphrase-fd";
- sprintf (passwd_fd, "%d", passwd_fds[0]);
- argv[i++] = passwd_fd;
- break;
- case CAMEL_PGP_TYPE_PGP5:
- /* FIXME: modify to respect hash */
- argv[i++] = "pgps";
-
- if (userid) {
- argv[i++] = "-u";
- argv[i++] = (char *) userid;
- }
-
- argv[i++] = "-f";
- argv[i++] = "-z";
- argv[i++] = "-a";
- argv[i++] = "-o";
- argv[i++] = "-"; /* output to stdout */
-
- sprintf (passwd_fd, "PGPPASSFD=%d", passwd_fds[0]);
- putenv (passwd_fd);
- break;
- case CAMEL_PGP_TYPE_PGP2:
- case CAMEL_PGP_TYPE_PGP6:
- /* FIXME: modify to respect hash */
- argv[i++] = "pgp";
-
- if (userid) {
- argv[i++] = "-u";
- argv[i++] = (char *) userid;
- }
-
- argv[i++] = "-f";
- argv[i++] = "-a";
- argv[i++] = "-o";
- argv[i++] = "-";
-
- argv[i++] = "-st";
- sprintf (passwd_fd, "PGPPASSFD=%d", passwd_fds[0]);
- putenv (passwd_fd);
- break;
- default:
- g_assert_not_reached ();
- break;
- }
-
- argv[i++] = NULL;
-
- retval = crypto_exec_with_passwd (context->priv->path, argv,
- plaintext->data, plaintext->len,
- passwd_fds, passphrase,
- &ciphertext, NULL,
- &diagnostics);
-
- g_byte_array_free (plaintext, TRUE);
- g_free (passphrase);
-
- if (retval != 0 || !*ciphertext) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- "%s", diagnostics);
- g_free (diagnostics);
- g_free (ciphertext);
- pgp_forget_passphrase (ctx->session, context->priv->type, (char *) userid);
- }
-
- g_free (diagnostics);
-
- camel_stream_write (ostream, ciphertext, strlen (ciphertext));
- g_free (ciphertext);
-
- return 0;
-
- exception:
-
- g_byte_array_free (plaintext, TRUE);
-
- if (passphrase) {
- pgp_forget_passphrase (ctx->session, context->priv->type, (char *) userid);
- g_free (passphrase);
- }
-
- return -1;
-}
-
-
-static char *
-swrite (CamelStream *istream)
-{
- CamelStream *ostream;
- char *template;
- int fd;
-
- template = g_strdup ("/tmp/evolution-pgp.XXXXXX");
- fd = mkstemp (template);
- if (fd == -1) {
- g_free (template);
- return NULL;
- }
-
- ostream = camel_stream_fs_new_with_fd (fd);
- camel_stream_write_to_stream (istream, ostream);
- camel_object_unref (CAMEL_OBJECT (ostream));
-
- return template;
-}
-
-
-static CamelCipherValidity *
-pgp_verify (CamelCipherContext *ctx, CamelCipherHash hash, CamelStream *istream,
- CamelStream *sigstream, CamelException *ex)
-{
- CamelPgpContext *context = CAMEL_PGP_CONTEXT (ctx);
- CamelCipherValidity *valid = NULL;
- GByteArray *plaintext;
- CamelStream *stream;
- char *argv[20];
- char *cleartext = NULL;
- char *diagnostics = NULL;
- int passwd_fds[2];
- char *sigfile = NULL;
- int retval, i, clearlen;
-
- /* get the plaintext in a form we can use */
- plaintext = g_byte_array_new ();
- stream = camel_stream_mem_new ();
- camel_stream_mem_set_byte_array (CAMEL_STREAM_MEM (stream), plaintext);
- camel_stream_write_to_stream (istream, stream);
- camel_object_unref (CAMEL_OBJECT (stream));
-
- if (!plaintext->len) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("No plaintext to verify."));
- goto exception;
- }
-
- if (pipe (passwd_fds) < 0) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Couldn't create pipe to GPG/PGP: %s"),
- g_strerror (errno));
- goto exception;
- }
-
- if (sigstream != NULL) {
- /* We are going to verify a detached signature so save
- the signature to a temp file. */
- sigfile = swrite (sigstream);
- if (!sigfile) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Couldn't create temp file: %s"),
- g_strerror (errno));
- goto exception;
- }
- }
-
- i = 0;
- switch (context->priv->type) {
- case CAMEL_PGP_TYPE_GPG:
- argv[i++] = "gpg";
-
- argv[i++] = "--verify";
-
- argv[i++] = "--no-tty";
- /*argv[i++] = "--verbose";*/
- /*argv[i++] = "--yes";*/
- /*argv[i++] = "--batch";*/
-
- if (sigstream != NULL)
- argv[i++] = sigfile;
-
- argv[i++] = "-";
- break;
- case CAMEL_PGP_TYPE_PGP5:
- argv[i++] = "pgpv";
-
- argv[i++] = "-z";
-
- if (sigstream != NULL)
- argv[i++] = sigfile;
-
- argv[i++] = "-f";
-
- break;
- case CAMEL_PGP_TYPE_PGP2:
- case CAMEL_PGP_TYPE_PGP6:
- argv[i++] = "pgp";
-
- if (sigstream != NULL)
- argv[i++] = sigfile;
-
- argv[i++] = "-f";
-
- break;
- default:
- g_assert_not_reached ();
- break;
- }
-
- argv[i++] = NULL;
-
- clearlen = 0;
- retval = crypto_exec_with_passwd (context->priv->path, argv,
- plaintext->data, plaintext->len,
- passwd_fds, NULL,
- &cleartext, &clearlen,
- &diagnostics);
-
- g_byte_array_free (plaintext, TRUE);
-
- /* cleanup */
- if (sigfile) {
- unlink (sigfile);
- g_free (sigfile);
- }
-
- valid = camel_cipher_validity_new ();
-
- if (retval != 0) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- "%s", diagnostics);
-
- camel_cipher_validity_set_valid (valid, FALSE);
- } else {
- camel_cipher_validity_set_valid (valid, TRUE);
- }
-
- if (diagnostics) {
- char *locale, *desc, *outbuf;
- size_t inlen, outlen;
- iconv_t cd;
-
- inlen = strlen (diagnostics);
- outlen = inlen * 4;
-
- desc = outbuf = g_new (unsigned char, outlen + 1);
-
- locale = camel_charset_locale_name ();
- if (!locale)
- locale = g_strdup ("iso-8859-1");
-
- cd = iconv_open ("UTF-8", locale);
- g_free (locale);
- if (cd != (iconv_t) -1) {
- const char *inbuf;
-
- inbuf = diagnostics;
- iconv (cd, &inbuf, &inlen, &outbuf, &outlen);
- iconv_close (cd);
-
- *outbuf = '\0';
- } else {
- const char *inptr, *inend;
-
- inptr = diagnostics;
- inend = inptr + inlen;
-
- while (inptr && inptr < inend && g_unichar_validate (g_utf8_get_char (inptr))) {
- *outbuf++ = g_utf8_get_char (inptr) & 0xff;
- inptr = g_utf8_next_char (inptr);
- }
-
- *outbuf = '\0';
- }
-
- camel_cipher_validity_set_description (valid, desc);
- g_free (desc);
- }
-
- g_free (diagnostics);
- g_free (cleartext);
-
- return valid;
-
- exception:
-
- g_byte_array_free (plaintext, TRUE);
-
- return NULL;
-}
-
-
-static int
-pgp_encrypt (CamelCipherContext *ctx, gboolean sign, const char *userid, GPtrArray *recipients,
- CamelStream *istream, CamelStream *ostream, CamelException *ex)
-{
- CamelPgpContext *context = CAMEL_PGP_CONTEXT (ctx);
- GPtrArray *recipient_list = NULL;
- GByteArray *plaintext;
- CamelStream *stream;
- GPtrArray *argv;
- int retval, r;
- char *ciphertext = NULL;
- char *diagnostics = NULL;
- int passwd_fds[2];
- char passwd_fd[32];
- char *passphrase = NULL;
-
- /* get the plaintext in a form we can use */
- plaintext = g_byte_array_new ();
- stream = camel_stream_mem_new ();
- camel_stream_mem_set_byte_array (CAMEL_STREAM_MEM (stream), plaintext);
- camel_stream_write_to_stream (istream, stream);
- camel_object_unref (CAMEL_OBJECT (stream));
-
- if (!plaintext->len) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("No plaintext to encrypt."));
- goto exception;
- }
-
- if (sign) {
- /* we only need a passphrase if we intend on signing */
- passphrase = pgp_get_passphrase (ctx->session, context->priv->type,
- (char *) userid);
- if (!passphrase) {
- camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM,
- _("No password provided."));
- goto exception;
- }
- }
-
- if (pipe (passwd_fds) < 0) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Couldn't create pipe to GPG/PGP: %s"),
- g_strerror (errno));
-
- goto exception;
- }
-
- /* check to make sure we have recipients */
- if (recipients->len == 0) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("No recipients specified"));
-
- goto exception;
- }
-
- argv = g_ptr_array_new ();
- recipient_list = g_ptr_array_new ();
-
- switch (context->priv->type) {
- case CAMEL_PGP_TYPE_GPG:
- for (r = 0; r < recipients->len; r++) {
- char *buf, *recipient;
-
- recipient = recipients->pdata[r];
- buf = g_strdup_printf ("-r %s", recipient);
- g_ptr_array_add (recipient_list, buf);
- }
-
- g_ptr_array_add (argv, "gpg");
-
- g_ptr_array_add (argv, "--verbose");
- g_ptr_array_add (argv, "--yes");
- g_ptr_array_add (argv, "--batch");
-
- g_ptr_array_add (argv, "--armor");
-
- for (r = 0; r < recipient_list->len; r++)
- g_ptr_array_add (argv, recipient_list->pdata[r]);
-
- g_ptr_array_add (argv, "--output");
- g_ptr_array_add (argv, "-"); /* output to stdout */
-
- g_ptr_array_add (argv, "--encrypt");
-
- if (sign) {
- g_ptr_array_add (argv, "--sign");
-
- g_ptr_array_add (argv, "-u");
- g_ptr_array_add (argv, (char *) userid);
-
- g_ptr_array_add (argv, "--passphrase-fd");
- sprintf (passwd_fd, "%d", passwd_fds[0]);
- g_ptr_array_add (argv, passwd_fd);
- }
- break;
- case CAMEL_PGP_TYPE_PGP5:
- for (r = 0; r < recipients->len; r++) {
- char *buf, *recipient;
-
- recipient = recipients->pdata[r];
- buf = g_strdup_printf ("-r %s", recipient);
- g_ptr_array_add (recipient_list, buf);
- }
-
- g_ptr_array_add (argv, "pgpe");
-
- for (r = 0; r < recipient_list->len; r++)
- g_ptr_array_add (argv, recipient_list->pdata[r]);
-
- g_ptr_array_add (argv, "-f");
- g_ptr_array_add (argv, "-z");
- g_ptr_array_add (argv, "-a");
- g_ptr_array_add (argv, "-o");
- g_ptr_array_add (argv, "-"); /* output to stdout */
-
- if (sign) {
- g_ptr_array_add (argv, "-s");
-
- g_ptr_array_add (argv, "-u");
- g_ptr_array_add (argv, (gchar *) userid);
-
- sprintf (passwd_fd, "PGPPASSFD=%d", passwd_fds[0]);
- putenv (passwd_fd);
- }
- break;
- case CAMEL_PGP_TYPE_PGP2:
- case CAMEL_PGP_TYPE_PGP6:
- for (r = 0; r < recipients->len; r++) {
- char *buf, *recipient;
-
- recipient = recipients->pdata[r];
- buf = g_strdup (recipient);
- g_ptr_array_add (recipient_list, buf);
- }
-
- g_ptr_array_add (argv, "pgp");
- g_ptr_array_add (argv, "-f");
- g_ptr_array_add (argv, "-e");
- g_ptr_array_add (argv, "-a");
- g_ptr_array_add (argv, "-o");
- g_ptr_array_add (argv, "-");
-
- for (r = 0; r < recipient_list->len; r++)
- g_ptr_array_add (argv, recipient_list->pdata[r]);
-
- if (sign) {
- g_ptr_array_add (argv, "-s");
-
- g_ptr_array_add (argv, "-u");
- g_ptr_array_add (argv, (gchar *) userid);
-
- sprintf (passwd_fd, "PGPPASSFD=%d", passwd_fds[0]);
- putenv (passwd_fd);
- }
- break;
- default:
- g_assert_not_reached ();
- break;
- }
-
- g_ptr_array_add (argv, NULL);
-
- retval = crypto_exec_with_passwd (context->priv->path,
- (char **) argv->pdata,
- plaintext->data, plaintext->len,
- passwd_fds, passphrase,
- &ciphertext, NULL,
- &diagnostics);
-
- g_byte_array_free (plaintext, TRUE);
-
- /* free the temp recipient list */
- if (recipient_list) {
- for (r = 0; r < recipient_list->len; r++)
- g_free (recipient_list->pdata[r]);
- g_ptr_array_free (recipient_list, TRUE);
- }
-
- g_free (passphrase);
- g_ptr_array_free (argv, TRUE);
-
- if (retval != 0 || !*ciphertext) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- "%s", diagnostics);
- g_free (diagnostics);
- g_free (ciphertext);
- if (sign)
- pgp_forget_passphrase (ctx->session, context->priv->type,
- (char *) userid);
-
- return -1;
- }
-
- g_free (diagnostics);
-
- camel_stream_write (ostream, ciphertext, strlen (ciphertext));
- g_free (ciphertext);
-
- return 0;
-
- exception:
-
- g_byte_array_free (plaintext, TRUE);
-
- if (sign) {
- g_free (passphrase);
- pgp_forget_passphrase (ctx->session, context->priv->type, (char *) userid);
- }
-
- return -1;
-}
-
-
-static int
-pgp_decrypt (CamelCipherContext *ctx, CamelStream *istream,
- CamelStream *ostream, CamelException *ex)
-{
- CamelPgpContext *context = CAMEL_PGP_CONTEXT (ctx);
- GByteArray *ciphertext;
- CamelStream *stream;
- char *argv[15];
- char *plaintext = NULL;
- int plainlen;
- char *diagnostics = NULL;
- char *passphrase = NULL;
- int passwd_fds[2];
- char passwd_fd[32];
- int retval, i;
-
- /* get the ciphertext in a form we can use */
- ciphertext = g_byte_array_new ();
- stream = camel_stream_mem_new ();
- camel_stream_mem_set_byte_array (CAMEL_STREAM_MEM (stream), ciphertext);
- camel_stream_write_to_stream (istream, stream);
- camel_object_unref (CAMEL_OBJECT (stream));
-
- if (!ciphertext->len) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("No ciphertext to decrypt."));
-
- goto exception;
- }
-
- passphrase = pgp_get_passphrase (ctx->session, context->priv->type, NULL);
- if (!passphrase) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("No password provided."));
-
- goto exception;
- }
-
- if (pipe (passwd_fds) < 0) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Couldn't create pipe to GPG/PGP: %s"),
- g_strerror (errno));
-
- goto exception;
- }
-
- i = 0;
- switch (context->priv->type) {
- case CAMEL_PGP_TYPE_GPG:
- argv[i++] = "gpg";
- argv[i++] = "--verbose";
- argv[i++] = "--yes";
- argv[i++] = "--batch";
-
- argv[i++] = "--output";
- argv[i++] = "-"; /* output to stdout */
-
- argv[i++] = "--decrypt";
-
- argv[i++] = "--passphrase-fd";
- sprintf (passwd_fd, "%d", passwd_fds[0]);
- argv[i++] = passwd_fd;
- break;
- case CAMEL_PGP_TYPE_PGP5:
- argv[i++] = "pgpv";
- argv[i++] = "-f";
- argv[i++] = "+batchmode=1";
-
- sprintf (passwd_fd, "PGPPASSFD=%d", passwd_fds[0]);
- putenv (passwd_fd);
- break;
- case CAMEL_PGP_TYPE_PGP2:
- case CAMEL_PGP_TYPE_PGP6:
- argv[i++] = "pgp";
- argv[i++] = "-f";
-
- sprintf (passwd_fd, "PGPPASSFD=%d", passwd_fds[0]);
- putenv (passwd_fd);
- break;
- default:
- g_assert_not_reached ();
- break;
- }
-
- argv[i++] = NULL;
-
- retval = crypto_exec_with_passwd (context->priv->path, argv,
- ciphertext->data, ciphertext->len,
- passwd_fds, passphrase,
- &plaintext, &plainlen,
- &diagnostics);
-
- g_byte_array_free (ciphertext, TRUE);
- g_free (passphrase);
-
- if (retval != 0 || !*plaintext) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- "%s", diagnostics);
- g_free (plaintext);
- g_free (diagnostics);
-
- pgp_forget_passphrase (ctx->session, context->priv->type, NULL);
-
- return -1;
- }
-
- g_free (diagnostics);
-
- camel_stream_write (ostream, plaintext, plainlen);
- g_free (plaintext);
-
- return 0;
-
- exception:
-
- g_byte_array_free (ciphertext, TRUE);
-
- if (passphrase) {
- pgp_forget_passphrase (ctx->session, context->priv->type, NULL);
- g_free (passphrase);
- }
-
- return -1;
-}
diff --git a/camel/camel-pgp-context.h b/camel/camel-pgp-context.h
deleted file mode 100644
index 77a825737f..0000000000
--- a/camel/camel-pgp-context.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef CAMEL_PGP_CONTEXT_H
-#define CAMEL_PGP_CONTEXT_H
-
-#include <camel/camel-session.h>
-#include <camel/camel-stream.h>
-#include <camel/camel-exception.h>
-#include <camel/camel-cipher-context.h>
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-#define CAMEL_PGP_CONTEXT_TYPE (camel_pgp_context_get_type ())
-#define CAMEL_PGP_CONTEXT(obj) (CAMEL_CHECK_CAST((obj), CAMEL_PGP_CONTEXT_TYPE, CamelPgpContext))
-#define CAMEL_PGP_CONTEXT_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_PGP_CONTEXT_TYPE, CamelPgpContextClass))
-#define CAMEL_IS_PGP_CONTEXT(o) (CAMEL_CHECK_TYPE((o), CAMEL_PGP_CONTEXT_TYPE))
-
-typedef enum {
- CAMEL_PGP_TYPE_NONE,
- CAMEL_PGP_TYPE_PGP2,
- CAMEL_PGP_TYPE_PGP5,
- CAMEL_PGP_TYPE_PGP6,
- CAMEL_PGP_TYPE_GPG
-} CamelPgpType;
-
-typedef struct _CamelPgpContext {
- CamelCipherContext parent_object;
-
- struct _CamelPgpContextPrivate *priv;
-
-} CamelPgpContext;
-
-typedef struct _CamelPgpContextClass {
- CamelCipherContextClass parent_class;
-
-} CamelPgpContextClass;
-
-CamelType camel_pgp_context_get_type (void);
-
-CamelPgpContext *camel_pgp_context_new (CamelSession *session, CamelPgpType type, const char *path);
-
-/* PGP routines */
-#define camel_pgp_sign(c, u, h, i, o, e) camel_cipher_sign (CAMEL_CIPHER_CONTEXT (c), u, h, i, o, e)
-
-#define camel_pgp_clearsign(c, u, h, i, o, e) camel_cipher_clearsign (CAMEL_CIPHER_CONTEXT (c), u, h, i, o, e)
-
-#define camel_pgp_verify(c, i, s, e) camel_cipher_verify (CAMEL_CIPHER_CONTEXT (c), CAMEL_CIPHER_HASH_DEFAULT, i, s, e)
-
-#define camel_pgp_encrypt(c, s, u, r, i, o, e) camel_cipher_encrypt (CAMEL_CIPHER_CONTEXT (c), s, u, r, i, o, e)
-
-#define camel_pgp_decrypt(c, i, o, e) camel_cipher_decrypt (CAMEL_CIPHER_CONTEXT (c), i, o, e)
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_PGP_CONTEXT_H */
diff --git a/camel/camel-pgp-mime.c b/camel/camel-pgp-mime.c
deleted file mode 100644
index ba91804579..0000000000
--- a/camel/camel-pgp-mime.c
+++ /dev/null
@@ -1,514 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "camel-pgp-mime.h"
-#include "camel-mime-filter-from.h"
-#include "camel-mime-filter-crlf.h"
-#include "camel-stream-filter.h"
-#include "camel-stream-mem.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#define d(x) x
-
-/** rfc2015 stuff (aka PGP/MIME) *******************************/
-
-gboolean
-camel_pgp_mime_is_rfc2015_signed (CamelMimePart *mime_part)
-{
- CamelDataWrapper *wrapper;
- CamelMultipart *mp;
- CamelMimePart *part;
- CamelContentType *type;
- const gchar *param, *micalg;
- int nparts;
-
- /* check that we have a multipart/signed */
- type = camel_mime_part_get_content_type (mime_part);
- if (!header_content_type_is (type, "multipart", "signed"))
- return FALSE;
-
- /* check that we have a protocol param with the value: "application/pgp-signed" */
- param = header_content_type_param (type, "protocol");
- if (!param || g_strcasecmp (param, "application/pgp-signature"))
- return FALSE;
-
- /* check that we have a micalg parameter */
- micalg = header_content_type_param (type, "micalg");
- if (!micalg)
- return FALSE;
-
- /* check that we have exactly 2 subparts */
- wrapper = camel_medium_get_content_object (CAMEL_MEDIUM (mime_part));
- mp = CAMEL_MULTIPART (wrapper);
- nparts = camel_multipart_get_number (mp);
- if (nparts != 2)
- return FALSE;
-
- /* The first part may be of any type except for
- * application/pgp-signature - check it. */
- part = camel_multipart_get_part (mp, 0);
- type = camel_mime_part_get_content_type (part);
- if (header_content_type_is (type, "application", "pgp-signature"))
- return FALSE;
-
- /* The second part should be application/pgp-signature. */
- part = camel_multipart_get_part (mp, 1);
- type = camel_mime_part_get_content_type (part);
- if (!header_content_type_is (type, "application", "pgp-signature"))
- return FALSE;
-
- return TRUE;
-}
-
-gboolean
-camel_pgp_mime_is_rfc2015_encrypted (CamelMimePart *mime_part)
-{
- CamelDataWrapper *wrapper;
- CamelMultipart *mp;
- CamelMimePart *part;
- CamelContentType *type;
- const gchar *param;
- int nparts;
-
- /* check that we have a multipart/encrypted */
- type = camel_mime_part_get_content_type (mime_part);
- if (!header_content_type_is (type, "multipart", "encrypted"))
- return FALSE;
-
- /* check that we have a protocol param with the value: "application/pgp-encrypted" */
- param = header_content_type_param (type, "protocol");
- if (!param || g_strcasecmp (param, "application/pgp-encrypted"))
- return FALSE;
-
- /* check that we have at least 2 subparts */
- wrapper = camel_medium_get_content_object (CAMEL_MEDIUM (mime_part));
- mp = CAMEL_MULTIPART (wrapper);
- nparts = camel_multipart_get_number (mp);
- if (nparts < 2)
- return FALSE;
-
- /* The first part should be application/pgp-encrypted */
- part = camel_multipart_get_part (mp, 0);
- type = camel_mime_part_get_content_type (part);
- if (!header_content_type_is (type, "application", "pgp-encrypted"))
- return FALSE;
-
- /* The second part should be application/octet-stream - this
- is the one we care most about */
- part = camel_multipart_get_part (mp, 1);
- type = camel_mime_part_get_content_type (part);
- if (!header_content_type_is (type, "application", "octet-stream"))
- return FALSE;
-
- return TRUE;
-}
-
-
-static void
-pgp_mime_part_sign_restore_part (CamelMimePart *mime_part, GSList *encodings)
-{
- CamelDataWrapper *wrapper;
-
- wrapper = camel_medium_get_content_object (CAMEL_MEDIUM (mime_part));
- if (!wrapper)
- return;
-
- if (CAMEL_IS_MULTIPART (wrapper)) {
- int parts, i;
-
- parts = camel_multipart_get_number (CAMEL_MULTIPART (wrapper));
- for (i = 0; i < parts; i++) {
- CamelMimePart *part = camel_multipart_get_part (CAMEL_MULTIPART (wrapper), i);
-
- pgp_mime_part_sign_restore_part (part, encodings);
- encodings = encodings->next;
- }
- } else {
- CamelMimePartEncodingType encoding;
-
- encoding = GPOINTER_TO_INT (encodings->data);
-
- camel_mime_part_set_encoding (mime_part, encoding);
- }
-}
-
-static void
-pgp_mime_part_sign_prepare_part (CamelMimePart *mime_part, GSList **encodings)
-{
- CamelDataWrapper *wrapper;
- int parts, i;
-
- wrapper = camel_medium_get_content_object (CAMEL_MEDIUM (mime_part));
- if (!wrapper)
- return;
-
- if (CAMEL_IS_MULTIPART (wrapper)) {
- parts = camel_multipart_get_number (CAMEL_MULTIPART (wrapper));
- for (i = 0; i < parts; i++) {
- CamelMimePart *part = camel_multipart_get_part (CAMEL_MULTIPART (wrapper), i);
-
- pgp_mime_part_sign_prepare_part (part, encodings);
- }
- } else {
- CamelMimePartEncodingType encoding;
-
- encoding = camel_mime_part_get_encoding (mime_part);
-
- /* FIXME: find the best encoding for this part and use that instead?? */
- /* the encoding should really be QP or Base64 */
- if (encoding != CAMEL_MIME_PART_ENCODING_BASE64)
- camel_mime_part_set_encoding (mime_part, CAMEL_MIME_PART_ENCODING_QUOTEDPRINTABLE);
-
- *encodings = g_slist_append (*encodings, GINT_TO_POINTER (encoding));
- }
-}
-
-
-/**
- * camel_pgp_mime_part_sign:
- * @context: PGP Context
- * @mime_part: a MIME part that will be replaced by a pgp signed part
- * @userid: userid to sign with
- * @hash: one of CAMEL_PGP_HASH_TYPE_MD5 or CAMEL_PGP_HASH_TYPE_SHA1
- * @ex: exception which will be set if there are any errors.
- *
- * Constructs a PGP/MIME multipart in compliance with rfc2015 and
- * replaces @part with the generated multipart/signed. On failure,
- * @ex will be set and #part will remain untouched.
- **/
-void
-camel_pgp_mime_part_sign (CamelPgpContext *context, CamelMimePart **mime_part, const char *userid,
- CamelCipherHash hash, CamelException *ex)
-{
- CamelMimePart *part, *signed_part;
- CamelMultipart *multipart;
- CamelContentType *mime_type;
- CamelStreamFilter *filtered_stream;
- CamelMimeFilter *crlf_filter, *from_filter;
- CamelStream *stream, *sigstream;
- gchar *hash_type = NULL;
- GSList *encodings = NULL;
-
- g_return_if_fail (*mime_part != NULL);
- g_return_if_fail (CAMEL_IS_MIME_PART (*mime_part));
- g_return_if_fail (userid != NULL);
-
- part = *mime_part;
-
- /* Prepare all the parts for signing... */
- pgp_mime_part_sign_prepare_part (part, &encodings);
-
- /* get the cleartext */
- stream = camel_stream_mem_new ();
- crlf_filter = camel_mime_filter_crlf_new (CAMEL_MIME_FILTER_CRLF_ENCODE,
- CAMEL_MIME_FILTER_CRLF_MODE_CRLF_ONLY);
- from_filter = CAMEL_MIME_FILTER (camel_mime_filter_from_new ());
- filtered_stream = camel_stream_filter_new_with_stream (stream);
- camel_stream_filter_add (filtered_stream, CAMEL_MIME_FILTER (crlf_filter));
- camel_object_unref (CAMEL_OBJECT (crlf_filter));
- camel_stream_filter_add (filtered_stream, CAMEL_MIME_FILTER (from_filter));
- camel_object_unref (CAMEL_OBJECT (from_filter));
- camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (part), CAMEL_STREAM (filtered_stream));
- camel_object_unref (CAMEL_OBJECT (filtered_stream));
-
- /* reset the stream */
- camel_stream_reset (stream);
-
- /* construct the signature stream */
- sigstream = camel_stream_mem_new ();
-
- switch (hash) {
- case CAMEL_CIPHER_HASH_MD5:
- hash_type = "pgp-md5";
- break;
- case CAMEL_CIPHER_HASH_SHA1:
- hash_type = "pgp-sha1";
- break;
- default:
- /* set a reasonable default */
- hash = CAMEL_CIPHER_HASH_SHA1;
- hash_type = "pgp-sha1";
- break;
- }
-
- /* get the signature */
- if (camel_pgp_sign (context, userid, hash, stream, sigstream, ex) == -1) {
- camel_object_unref (CAMEL_OBJECT (stream));
- camel_object_unref (CAMEL_OBJECT (sigstream));
-
- /* restore the original encoding */
- pgp_mime_part_sign_restore_part (part, encodings);
- g_slist_free (encodings);
- return;
- }
-
- camel_object_unref (CAMEL_OBJECT (stream));
- camel_stream_reset (sigstream);
-
- /* we don't need these anymore... */
- g_slist_free (encodings);
-
- /* construct the pgp-signature mime part */
- signed_part = camel_mime_part_new ();
- camel_mime_part_set_content (signed_part, CAMEL_STREAM_MEM (sigstream)->buffer->data,
- CAMEL_STREAM_MEM (sigstream)->buffer->len,
- "application/pgp-signature");
- camel_object_unref (CAMEL_OBJECT (sigstream));
-
- /* construct the container multipart/signed */
- multipart = camel_multipart_new ();
-
- mime_type = header_content_type_new ("multipart", "signed");
- header_content_type_set_param (mime_type, "micalg", hash_type);
- header_content_type_set_param (mime_type, "protocol", "application/pgp-signature");
- camel_data_wrapper_set_mime_type_field (CAMEL_DATA_WRAPPER (multipart), mime_type);
- header_content_type_unref (mime_type);
-
- camel_multipart_set_boundary (multipart, NULL);
-
- /* add the parts to the multipart */
- camel_multipart_add_part (multipart, part);
- camel_object_unref (CAMEL_OBJECT (part));
- camel_multipart_add_part (multipart, signed_part);
- camel_object_unref (CAMEL_OBJECT (signed_part));
-
- /* replace the input part with the output part */
- *mime_part = camel_mime_part_new ();
- camel_medium_set_content_object (CAMEL_MEDIUM (*mime_part),
- CAMEL_DATA_WRAPPER (multipart));
- camel_object_unref (CAMEL_OBJECT (multipart));
-}
-
-
-/**
- * camel_pgp_mime_part_verify:
- * @context: PGP Context
- * @mime_part: a multipart/signed MIME Part
- * @ex: exception
- *
- * Returns a CamelCipherValidity on success or NULL on fail.
- **/
-CamelCipherValidity *
-camel_pgp_mime_part_verify (CamelPgpContext *context, CamelMimePart *mime_part, CamelException *ex)
-{
- CamelDataWrapper *wrapper;
- CamelMultipart *multipart;
- CamelMimePart *part, *sigpart;
- CamelStreamFilter *filtered_stream;
- CamelMimeFilter *crlf_filter, *from_filter;
- CamelStream *stream, *sigstream;
- CamelCipherValidity *valid;
-
- g_return_val_if_fail (mime_part != NULL, NULL);
- g_return_val_if_fail (CAMEL_IS_MIME_PART (mime_part), NULL);
-
- if (!camel_pgp_mime_is_rfc2015_signed (mime_part))
- return NULL;
-
- wrapper = camel_medium_get_content_object (CAMEL_MEDIUM (mime_part));
- multipart = CAMEL_MULTIPART (wrapper);
-
- /* get the plain part */
- part = camel_multipart_get_part (multipart, 0);
- stream = camel_stream_mem_new ();
- crlf_filter = camel_mime_filter_crlf_new (CAMEL_MIME_FILTER_CRLF_ENCODE,
- CAMEL_MIME_FILTER_CRLF_MODE_CRLF_ONLY);
- from_filter = CAMEL_MIME_FILTER (camel_mime_filter_from_new ());
- filtered_stream = camel_stream_filter_new_with_stream (stream);
- camel_stream_filter_add (filtered_stream, CAMEL_MIME_FILTER (crlf_filter));
- camel_object_unref (CAMEL_OBJECT (crlf_filter));
- camel_stream_filter_add (filtered_stream, CAMEL_MIME_FILTER (from_filter));
- camel_object_unref (CAMEL_OBJECT (from_filter));
- camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (part), CAMEL_STREAM (filtered_stream));
- camel_object_unref (CAMEL_OBJECT (filtered_stream));
- camel_stream_reset (stream);
-
- /* get the signed part */
- sigpart = camel_multipart_get_part (multipart, 1);
- sigstream = camel_stream_mem_new ();
- camel_data_wrapper_write_to_stream (camel_medium_get_content_object (CAMEL_MEDIUM (sigpart)),
- sigstream);
- camel_stream_reset (sigstream);
-
- /* verify */
- valid = camel_pgp_verify (context, stream, sigstream, ex);
-
- camel_object_unref (CAMEL_OBJECT (sigstream));
- camel_object_unref (CAMEL_OBJECT (stream));
-
- return valid;
-}
-
-
-/**
- * camel_pgp_mime_part_encrypt:
- * @context: PGP Context
- * @mime_part: a MIME part that will be replaced by a pgp encrypted part
- * @recipients: list of recipient PGP Key IDs
- * @ex: exception which will be set if there are any errors.
- *
- * Constructs a PGP/MIME multipart in compliance with rfc2015 and
- * replaces #mime_part with the generated multipart/signed. On failure,
- * #ex will be set and #part will remain untouched.
- **/
-void
-camel_pgp_mime_part_encrypt (CamelPgpContext *context, CamelMimePart **mime_part,
- GPtrArray *recipients, CamelException *ex)
-{
- CamelMultipart *multipart;
- CamelMimePart *part, *version_part, *encrypted_part;
- CamelContentType *mime_type;
- CamelStreamFilter *filtered_stream;
- CamelMimeFilter *crlf_filter;
- CamelStream *stream, *ciphertext;
-
- g_return_if_fail (*mime_part != NULL);
- g_return_if_fail (CAMEL_IS_MIME_PART (*mime_part));
- g_return_if_fail (recipients != NULL);
-
- part = *mime_part;
-
- /* get the contents */
- stream = camel_stream_mem_new ();
- crlf_filter = camel_mime_filter_crlf_new (CAMEL_MIME_FILTER_CRLF_ENCODE,
- CAMEL_MIME_FILTER_CRLF_MODE_CRLF_ONLY);
- filtered_stream = camel_stream_filter_new_with_stream (stream);
- camel_stream_filter_add (filtered_stream, CAMEL_MIME_FILTER (crlf_filter));
- camel_object_unref (CAMEL_OBJECT (crlf_filter));
- camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (part), CAMEL_STREAM (filtered_stream));
- camel_object_unref (CAMEL_OBJECT (filtered_stream));
- camel_stream_reset (stream);
-
- /* pgp encrypt */
- ciphertext = camel_stream_mem_new ();
- if (camel_pgp_encrypt (context, FALSE, NULL, recipients, stream, ciphertext, ex) == -1) {
- camel_object_unref (CAMEL_OBJECT (stream));
- camel_object_unref (CAMEL_OBJECT (ciphertext));
- return;
- }
-
- camel_object_unref (CAMEL_OBJECT (stream));
- camel_stream_reset (ciphertext);
-
- /* construct the version part */
- version_part = camel_mime_part_new ();
- camel_mime_part_set_encoding (version_part, CAMEL_MIME_PART_ENCODING_7BIT);
- camel_mime_part_set_content (version_part, "Version: 1", strlen ("Version: 1"),
- "application/pgp-encrypted");
-
- /* construct the pgp-encrypted mime part */
- encrypted_part = camel_mime_part_new ();
- camel_mime_part_set_content (encrypted_part, CAMEL_STREAM_MEM (ciphertext)->buffer->data,
- CAMEL_STREAM_MEM (ciphertext)->buffer->len,
- "application/octet-stream");
- camel_object_unref (CAMEL_OBJECT (ciphertext));
- camel_mime_part_set_encoding (encrypted_part, CAMEL_MIME_PART_ENCODING_7BIT);
-
- /* construct the container multipart/encrypted */
- multipart = camel_multipart_new ();
-
- mime_type = header_content_type_new ("multipart", "encrypted");
- header_content_type_set_param (mime_type, "protocol", "application/pgp-encrypted");
- camel_data_wrapper_set_mime_type_field (CAMEL_DATA_WRAPPER (multipart), mime_type);
- header_content_type_unref (mime_type);
-
- camel_multipart_set_boundary (multipart, NULL);
-
- /* add the parts to the multipart */
- camel_multipart_add_part (multipart, version_part);
- camel_object_unref (CAMEL_OBJECT (version_part));
- camel_multipart_add_part (multipart, encrypted_part);
- camel_object_unref (CAMEL_OBJECT (encrypted_part));
-
- /* replace the input part with the output part */
- camel_object_unref (CAMEL_OBJECT (*mime_part));
- *mime_part = camel_mime_part_new ();
- camel_medium_set_content_object (CAMEL_MEDIUM (*mime_part),
- CAMEL_DATA_WRAPPER (multipart));
- camel_object_unref (CAMEL_OBJECT (multipart));
-}
-
-
-/**
- * camel_pgp_mime_part_decrypt:
- * @context: PGP Context
- * @mime_part: a multipart/encrypted MIME Part
- * @ex: exception
- *
- * Returns the decrypted MIME Part on success or NULL on fail.
- **/
-CamelMimePart *
-camel_pgp_mime_part_decrypt (CamelPgpContext *context, CamelMimePart *mime_part, CamelException *ex)
-{
- CamelDataWrapper *wrapper;
- CamelMultipart *multipart;
- CamelMimePart *encrypted_part, *part;
- CamelContentType *mime_type;
- CamelStream *stream, *ciphertext;
-
- g_return_val_if_fail (mime_part != NULL, NULL);
- g_return_val_if_fail (CAMEL_IS_MIME_PART (mime_part), NULL);
-
- /* make sure the mime part is a multipart/encrypted */
- if (!camel_pgp_mime_is_rfc2015_encrypted (mime_part))
- return NULL;
-
- wrapper = camel_medium_get_content_object (CAMEL_MEDIUM (mime_part));
- multipart = CAMEL_MULTIPART (wrapper);
-
- /* get the encrypted part (second part) */
- encrypted_part = camel_multipart_get_part (multipart, 1 /* second part starting at 0 */);
- mime_type = camel_mime_part_get_content_type (encrypted_part);
- if (!header_content_type_is (mime_type, "application", "octet-stream"))
- return NULL;
-
- /* get the ciphertext */
- ciphertext = camel_stream_mem_new ();
- camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (encrypted_part), ciphertext);
- camel_stream_reset (ciphertext);
-
- /* get the cleartext */
- stream = camel_stream_mem_new ();
- if (camel_pgp_decrypt (context, ciphertext, stream, ex) == -1) {
- camel_object_unref (CAMEL_OBJECT (ciphertext));
- camel_object_unref (CAMEL_OBJECT (stream));
- return NULL;
- }
-
- camel_object_unref (CAMEL_OBJECT (ciphertext));
- camel_stream_reset (stream);
-
- /* construct the new decrypted mime part from the stream */
- part = camel_mime_part_new ();
- camel_data_wrapper_construct_from_stream (CAMEL_DATA_WRAPPER (part), stream);
- camel_object_unref (CAMEL_OBJECT (stream));
-
- return part;
-}
diff --git a/camel/camel-pgp-mime.h b/camel/camel-pgp-mime.h
deleted file mode 100644
index e9c15e3489..0000000000
--- a/camel/camel-pgp-mime.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximain, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-
-#ifndef CAMEL_PGP_MIME_H
-#define CAMEL_PGP_MIME_H
-
-#include <glib.h>
-#include <camel/camel-multipart.h>
-#include <camel/camel-mime-part.h>
-#include <camel/camel-pgp-context.h>
-#include <camel/camel-exception.h>
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-gboolean camel_pgp_mime_is_rfc2015_signed (CamelMimePart *part);
-gboolean camel_pgp_mime_is_rfc2015_encrypted (CamelMimePart *part);
-
-void camel_pgp_mime_part_sign (CamelPgpContext *context,
- CamelMimePart **mime_part,
- const char *userid,
- CamelCipherHash hash,
- CamelException *ex);
-
-CamelCipherValidity *camel_pgp_mime_part_verify (CamelPgpContext *context,
- CamelMimePart *mime_part,
- CamelException *ex);
-
-void camel_pgp_mime_part_encrypt (CamelPgpContext *context,
- CamelMimePart **mime_part,
- GPtrArray *recipients,
- CamelException *ex);
-
-CamelMimePart *camel_pgp_mime_part_decrypt (CamelPgpContext *context,
- CamelMimePart *mime_part,
- CamelException *ex);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* ! CAMEL_PGP_MIME_H */
diff --git a/camel/camel-pkcs7-context.c b/camel/camel-pkcs7-context.c
deleted file mode 100644
index 185ae09ccc..0000000000
--- a/camel/camel-pkcs7-context.c
+++ /dev/null
@@ -1,691 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "camel-pkcs7-context.h"
-
-#include "camel-stream-fs.h"
-#include "camel-stream-mem.h"
-
-#include <nss.h>
-#include <cert.h>
-#include <secpkcs7.h>
-
-#include <gtk/gtk.h> /* for _() macro */
-
-#define d(x)
-
-struct _CamelPkcs7ContextPrivate {
- CERTCertDBHandle *certdb;
-};
-
-
-static int pkcs7_sign (CamelCipherContext *ctx, const char *userid, CamelCipherHash hash,
- CamelStream *istream, CamelStream *ostream, CamelException *ex);
-static int pkcs7_clearsign (CamelCipherContext *context, const char *userid,
- CamelCipherHash hash, CamelStream *istream,
- CamelStream *ostream, CamelException *ex);
-static CamelCipherValidity *pkcs7_verify (CamelCipherContext *context, CamelStream *istream,
- CamelStream *sigstream, CamelException *ex);
-static int pkcs7_encrypt (CamelCipherContext *context, gboolean sign, const char *userid,
- GPtrArray *recipients, CamelStream *istream, CamelStream *ostream,
- CamelException *ex);
-static int pkcs7_decrypt (CamelCipherContext *context, CamelStream *istream,
- CamelStream *ostream, CamelException *ex);
-
-
-static CamelCipherContextClass *parent_class;
-
-static void
-camel_pkcs7_context_init (CamelPkcs7Context *context)
-{
- context->priv = g_new0 (struct _CamelPkcs7ContextPrivate, 1);
-}
-
-static void
-camel_pkcs7_context_finalise (CamelObject *o)
-{
- CamelPkcs7Context *context = (CamelPkcs7Context *)o;
-
- CERT_ClosePermCertDB (context->priv->certdb);
- g_free (context->priv->certdb);
-
- g_free (context->priv);
-}
-
-static void
-camel_pkcs7_context_class_init (CamelPkcs7ContextClass *camel_pkcs7_context_class)
-{
- CamelCipherContextClass *camel_cipher_context_class =
- CAMEL_CIPHER_CONTEXT_CLASS (camel_pkcs7_context_class);
-
- parent_class = CAMEL_CIPHER_CONTEXT_CLASS (camel_type_get_global_classfuncs (camel_cipher_context_get_type ()));
-
- camel_cipher_context_class->sign = pkcs7_sign;
- camel_cipher_context_class->clearsign = pkcs7_clearsign;
- camel_cipher_context_class->verify = pkcs7_verify;
- camel_cipher_context_class->encrypt = pkcs7_encrypt;
- camel_cipher_context_class->decrypt = pkcs7_decrypt;
-}
-
-CamelType
-camel_pkcs7_context_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_cipher_context_get_type (),
- "CamelPkcs7Context",
- sizeof (CamelPkcs7Context),
- sizeof (CamelPkcs7ContextClass),
- (CamelObjectClassInitFunc) camel_pkcs7_context_class_init,
- NULL,
- (CamelObjectInitFunc) camel_pkcs7_context_init,
- (CamelObjectFinalizeFunc) camel_pkcs7_context_finalise);
- }
-
- return type;
-}
-
-
-/**
- * camel_pkcs7_context_new:
- * @session: CamelSession
- * @certdb: certificate db
- *
- * This creates a new CamelPkcs7Context object which is used to sign,
- * verify, encrypt and decrypt streams.
- *
- * Return value: the new CamelPkcs7Context
- **/
-CamelPkcs7Context *
-camel_pkcs7_context_new (CamelSession *session, const char *certdb)
-{
- CamelPkcs7Context *context;
- CERTCertDBHandle *handle;
-
- g_return_val_if_fail (session != NULL, NULL);
-
- context = CAMEL_PKCS7_CONTEXT (camel_object_new (CAMEL_PKCS7_CONTEXT_TYPE));
-
- camel_cipher_construct (CAMEL_CIPHER_CONTEXT (context), session);
-
- handle = g_new0 (CERTCertDBHandle, 1);
- if (certdb) {
- if (!CERT_OpenCertDBFilename (handle, certdb, FALSE)) {
- g_free (handle);
- return NULL;
- }
- } else {
- if (!CERT_OpenVolatileCertDB (handle)) {
- g_free (handle);
- return NULL;
- }
- }
-
- context->priv->certdb = handle;
-
- return context;
-}
-
-/*----------------------------------------------------------------------*
- * Public crypto functions
- *----------------------------------------------------------------------*/
-
-struct _GetPasswdData {
- CamelSession *session;
- CamelException *ex;
- const char *userid;
-};
-
-static SECItem *
-get_zero_len_passwd (SECKEYKeyDBHandle *handle)
-{
- SECItem *pwitem;
- SECStatus rv;
-
- /* hash the empty string as a password */
- pwitem = SECKEY_DeriveKeyDBPassword (handle, "");
- if (pwitem == NULL)
- return NULL;
-
- /* check to see if this is the right password */
- rv = SECKEY_CheckKeyDBPassword (handle, pwitem);
- if (rv == SECFailure)
- return NULL;
-
- return pwitem;
-}
-
-static SECItem *
-get_password (void *arg, SECKEYKeyDBHandle *handle)
-{
- CamelSession *session = ((struct _GetPasswdData *) arg)->session;
- CamelException *ex = ((struct _GetPasswdData *) arg)->ex;
- const char *userid = ((struct _GetPasswdData *) arg)->userid;
- char *prompt, *passwd = NULL;
- SECItem *pwitem;
- SECStatus rv;
-
- /* Check to see if zero length password or not */
- pwitem = get_zero_len_passwd (handle);
- if (pwitem)
- return pwitem;
-
- prompt = g_strdup_printf (_("Please enter your password for %s"), userid);
- passwd = camel_session_get_password (session, prompt, TRUE,
- NULL, userid, NULL);
- g_free (prompt);
-
- /* hash the password */
- pwitem = SECKEY_DeriveKeyDBPassword (handle, passwd ? passwd : "");
-
- /* clear out the password strings */
- if (passwd) {
- memset (passwd, 0, strlen (passwd));
- g_free (passwd);
- }
-
- if (pwitem == NULL) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Error hashing password."));
-
- return NULL;
- }
-
- /* confirm the password */
- rv = SECKEY_CheckKeyDBPassword (handle, pwitem);
- if (rv) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Invalid password."));
-
- SECITEM_ZfreeItem (pwitem, PR_TRUE);
-
- return NULL;
- }
-
- return pwitem;
-}
-
-static HASH_HashType
-camel_cipher_hash_to_nss (CamelCipherHash hash)
-{
- switch (hash) {
- case CAMEL_CIPHER_HASH_DEFAULT:
- return HASH_AlgSHA1;
- case CAMEL_CIPHER_HASH_MD2:
- return HASH_AlgMD2;
- case CAMEL_CIPHER_HASH_MD5:
- return HASH_AlgMD5;
- case CAMEL_CIPHER_HASH_SHA1:
- return HASH_AlgSHA1;
- }
-
- return HASH_AlgNULL;
-}
-
-static SECOidTag
-nss_hash_to_sec_oid (HASH_HashType hash)
-{
- switch (hash) {
- case HASH_AlgMD2:
- return SEC_OID_MD2;
- case HASH_AlgMD5:
- return SEC_OID_MD5;
- case Hash_AlgSHA1:
- return SEC_OID_SHA1;
- default:
- g_assert_not_reached ();
- return 0;
- }
-}
-
-static int
-pkcs7_digest (SECItem *data, char *digestdata, unsigned int *len, unsigned int maxlen, HASH_HashType hash)
-{
- SECHashObject *hashObj;
- void *hashcx;
-
- hashObj = &SECHashObjects[hash];
-
- hashcx = (* hashObj->create)();
- if (hashcx == NULL)
- return -1;
-
- (* hashObj->begin)(hashcx);
- (* hashObj->update)(hashcx, data->data, data->len);
- (* hashObj->end)(hashcx, (unsigned char *)digestdata, len, maxlen);
- (* hashObj->destroy)(hashcx, PR_TRUE);
-
- return 0;
-}
-
-static void
-sec_output_cb (void *arg, const char *buf, unsigned long len)
-{
- CamelStream *stream;
-
- stream = CAMEL_STREAM (arg);
- camel_stream_write (stream, buf, len);
-}
-
-static int
-pkcs7_sign (CamelCipherContext *ctx, const char *userid, CamelCipherHash hash,
- CamelStream *istream, CamelStream *ostream, CamelException *ex)
-{
- CamelPkcs7Context *context = CAMEL_PKCS7_CONTEXT (ctx);
- struct _GetPasswdData *data;
- SEC_PKCS7ContentInfo *cinfo;
- SECItem data2sign, digest;
- HASH_HashType hash_type;
- CERTCertificate *cert;
- guchar digestdata[32];
- CamelStream *stream;
- GByteArray *buf;
- guint len;
-
- g_return_val_if_fail (userid != NULL, -1);
- g_return_val_if_fail (istream != NULL, -1);
- g_return_val_if_fail (ostream != NULL, -1);
-
- stream = camel_stream_mem_new ();
- camel_stream_write_to_stream (istream, stream);
- buf = CAMEL_STREAM_MEM (stream)->buffer;
- data2sign.data = buf->data;
- data2sign.len = buf->len;
-
- hash_type = camel_cipher_hash_to_nss (hash);
- pkcs7_digest (&data2sign, digestdata, &len, 32, hash_type);
- digest.data = (unsigned char *)digestdata;
- digest.len = len;
-
- camel_object_unref (CAMEL_OBJECT (stream));
-
- cert = CERT_FindCertByNickname (context->priv->certdb, userid);
- if (!cert) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not sign: certificate not found for \"%s\"."),
- userid);
- return -1;
- }
-
- cinfo = SEC_PKCS7CreateSignedData (cert, certUsageEmailSigner, NULL,
- nss_hash_to_sec_oid (hash_type),
- &digest, NULL, NULL);
-
- SEC_PKCS7IncludeCertChain (cinfo, NULL);
-
- data = g_new (struct _GetPasswdData, 1);
- data->session = ctx->session;
- data->userid = userid;
- data->ex = ex;
-
- SEC_PKCS7Encode (cinfo, sec_output_cb, ostream, NULL, get_password, data);
-
- g_free (data);
-
- SEC_PKCS7DestroyContentInfo (cinfo);
-
- return 0;
-}
-
-
-static int
-pkcs7_clearsign (CamelCipherContext *ctx, const char *userid, CamelCipherHash hash,
- CamelStream *istream, CamelStream *ostream, CamelException *ex)
-{
- CamelPkcs7Context *context = CAMEL_PKCS7_CONTEXT (ctx);
- struct _GetPasswdData *data;
- SEC_PKCS7ContentInfo *cinfo;
- HASH_HashType hash_type;
- CERTCertificate *cert;
- CamelStream *stream;
- SECItem data2sign;
- GByteArray *buf;
-
- g_return_val_if_fail (userid != NULL, -1);
- g_return_val_if_fail (istream != NULL, -1);
- g_return_val_if_fail (ostream != NULL, -1);
-
- hash_type = camel_cipher_hash_to_nss (hash);
-
- cert = CERT_FindCertByNickname (context->priv->certdb, userid);
- if (!cert) {
- camel_object_unref (CAMEL_OBJECT (stream));
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not clearsign: certificate not found for \"%s\"."),
- userid);
- return -1;
- }
-
- cinfo = SEC_PKCS7CreateSignedData (cert, certUsageEmailSigner, NULL,
- nss_hash_to_sec_oid (hash_type),
- NULL, NULL, NULL);
-
- stream = camel_stream_mem_new ();
- camel_stream_write_to_stream (istream, stream);
- buf = CAMEL_STREAM_MEM (stream)->buffer;
- data2sign.data = buf->data;
- data2sign.len = buf->len;
- SEC_PKCS7SetContent (cinfo, (char *)data2sign.data, data2sign.len);
- camel_object_unref (CAMEL_OBJECT (stream));
-
- SEC_PKCS7IncludeCertChain (cinfo, NULL);
-
- data = g_new (struct _GetPasswdData, 1);
- data->session = ctx->session;
- data->userid = userid;
- data->ex = ex;
-
- SEC_PKCS7Encode (cinfo, sec_output_cb, ostream, NULL, get_password, data);
-
- g_free (data);
-
- SEC_PKCS7DestroyContentInfo (cinfo);
-
- return 0;
-}
-
-#if 0
-/* this is just meant as a reference so I can see what the valid enums are */
-typedef enum {
- certUsageSSLClient,
- certUsageSSLServer,
- certUsageSSLServerWithStepUp,
- certUsageSSLCA,
- certUsageEmailSigner,
- certUsageEmailRecipient,
- certUsageObjectSigner,
- certUsageUserCertImport,
- certUsageVerifyCA,
- certUsageProtectedObjectSigner,
- certUsageStatusResponder,
- certUsageAnyCA
-} SECCertUsage;
-#endif
-
-#if 0
-static HASH_HashType
-AlgorithmToHashType (SECAlgorithmID *digestAlgorithms)
-{
- SECOidTag tag;
-
- tag = SECOID_GetAlgorithmTag (digestAlgorithms);
-
- switch (tag) {
- case SEC_OID_MD2:
- return HASH_AlgMD2;
- case SEC_OID_MD5:
- return HASH_AlgMD5;
- case SEC_OID_SHA1:
- return HASH_AlgSHA1;
- default:
- g_assert_not_reached ();
- return HASH_AlgNULL;
- }
-}
-#endif
-
-/* FIXME: god knows if this code works, NSS "docs" are so not helpful at all */
-static CamelCipherValidity *
-pkcs7_verify (CamelCipherContext *ctx, CamelCipherHash hash, CamelStream *istream,
- CamelStream *sigstream, CamelException *ex)
-{
- CamelPkcs7Context *context = CAMEL_PKCS7_CONTEXT (ctx);
- CamelCipherValidity *valid = NULL;
- SEC_PKCS7ContentInfo *cinfo;
- SECCertUsage usage;
- GByteArray *plaintext;
- CamelStream *stream;
-
- /* create our ContentInfo object */
- stream = camel_stream_mem_new ();
- camel_stream_write_to_stream (istream, stream);
- plaintext = CAMEL_STREAM_MEM (stream)->buffer;
- cinfo = SEC_PKCS7CreateData ();
- SEC_PKCS7SetContent (cinfo, plaintext->data, plaintext->len);
- camel_object_unref (CAMEL_OBJECT (stream));
-
- usage = certUsageEmailSigner; /* just a guess. or maybe certUsageVerifyCA?? */
-
- valid = camel_cipher_validity_new ();
-
- if (sigstream) {
- HASH_HashType digest_type;
- GByteArray *signature;
- SECItem digest;
-
- /* create our digest object */
- stream = camel_stream_mem_new ();
- camel_stream_write_to_stream (sigstream, stream);
- signature = CAMEL_STREAM_MEM (stream)->buffer;
- digest.data = signature->data;
- digest.len = signature->len;
-
- switch (hash) {
- default:
- case CAMEL_CIPHER_HASH_DEFAULT:
- digest_type = HASH_AlgNULL;
- break;
- case CAMEL_CIPHER_HASH_MD2:
- digest_type = HASH_AlgMD2;
- break;
- case CAMEL_CIPHER_HASH_MD5:
- digest_type = HASH_AlgMD5;
- break;
- case CAMEL_CIPHER_HASH_SHA1:
- digest_type = HASH_AlgSHA1;
- break;
- }
-
- valid->valid = SEC_PKCS7VerifyDetachedSignature (cinfo, usage, &digest, digest_type, PR_FALSE);
- camel_object_unref (CAMEL_OBJECT (stream));
- } else {
- valid->valid = SEC_PKCS7VerifySignature (cinfo, usage, PR_FALSE);
- }
-
- SEC_PKCS7DestroyContentInfo (cinfo);
-
- /* FIXME: set a meaningful description...in UTF8 */
- camel_cipher_validity_set_description (valid, "");
-
- return valid;
-}
-
-/* FIXME: we need to respect the 'sign' argument... */
-static int
-pkcs7_encrypt (CamelCipherContext *ctx, gboolean sign, const char *userid, GPtrArray *recipients,
- CamelStream *istream, CamelStream *ostream, CamelException *ex)
-{
- CamelPkcs7Context *context = CAMEL_PKCS7_CONTEXT (ctx);
- const char *invalid_userkey = NULL;
- SEC_PKCS7ContentInfo *cinfo = NULL;
- CERTCertificate *cert, *usercert;
- SEC_PKCS7EncoderContext *ecx;
- struct _GetPasswdData *data;
- CamelStream *stream = NULL;
- SECItem secdata;
- GByteArray *buf;
- int i = 0;
-
- g_return_val_if_fail (userid != NULL, -1);
- g_return_val_if_fail (recipients != NULL, -1);
- g_return_val_if_fail (recipients->len != 0, -1);
- g_return_val_if_fail (istream != NULL, -1);
- g_return_val_if_fail (ostream != NULL, -1);
-
-#if 0
- /* this isn't needed until we respect the 'sign' argument... */
- usercert = CERT_FindCertByNickname (context->priv->certdb, userid);
- if (!usercert) {
- invalid_userkey = userid;
- goto exception;
- }
-#endif
-
- cert = CERT_FindCertByNickname (context->priv->certdb, recipients->pdata[i]);
- if (!cert) {
- invalid_userkey = recipients->pdata[i];
- goto exception;
- }
-
- data = g_new (struct _GetPasswdData, 1);
- data->session = session;
- data->userid = userid;
- data->ex = ex;
-
- /* FIXME: extend CamelCipherContext to allow selecting an encryption algorithm?? */
- cinfo = SEC_PKCS7CreateEncryptedData (SEC_OID_DES_EDE3_CBC, 0,
- get_password, data);
-
- g_free (data);
-
- if (!cinfo) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not encrypt: failed to create enveloped data."));
- goto exception;
- }
-
- for (i++; i < recipients->len; i++) {
- SECStatus retval;
-
- cert = CERT_FindCertByNickname (context->priv->certdb, recipients->pdata[i]);
- if (!cert) {
- invalid_userkey = recipients->pdata[i];
- goto exception;
- }
-
- retval = SEC_PKCS7AddRecipient (cinfo, cert, certUsageEmailRecipient, NULL);
- if (retval != SECSuccess) {
- invalid_userkey = recipients->pdata[i];
- goto exception;
- }
- }
-
- ecx = SEC_PKCS7EncoderStart (cinfo, sec_output_cb, ostream, NULL);
- if (ecx == NULL) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not encrypt: failed to create encryption context."));
- goto exception;
- }
-
- stream = camel_stream_mem_new ();
- camel_stream_write_to_stream (istream, stream);
- buf = CAMEL_STREAM_MEM (stream)->buffer;
- if (SEC_PKCS7EncoderUpdate (ecx, buf->data, buf->len) != SECSuccess)
- goto exception;
-
- camel_object_unref (CAMEL_OBJECT (stream));
- stream = NULL;
-
- if (SEC_PKCS7EncoderFinish (ecx, NULL, NULL) != SECSuccess)
- goto exception;
-
- SEC_PKCS7DestroyContentInfo (cinfo);
-
- return 0;
-
- exception:
-
- if (stream)
- camel_object_unref (CAMEL_OBJECT (stream));
-
- if (cinfo)
- SEC_PKCS7DestroyContentInfo (cinfo);
-
- if (invalid_userkey) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not encrypt data: invalid user key: \"%s\"."),
- invalid_userkey);
- }
-
- if (!camel_exception_is_set (ex)) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not encrypt: encoding failed."));
- }
-
- return -1;
-}
-
-static PRBool
-decryption_allowed (SECAlgorithmID *algid, PK11SymKey *key)
-{
- return PR_TRUE;
-}
-
-static int
-pkcs7_decrypt (CamelCipherContext *ctx, CamelStream *istream,
- CamelStream *ostream, CamelException *ex)
-{
- CamelPkcs7Context *context = CAMEL_PKCS7_CONTEXT (ctx);
- struct _GetPasswdData *data;
- SEC_PKCS7DecoderContext *dcx;
- SEC_PKCS7ContentInfo *cinfo;
- CamelStream *stream = NULL;
- SECItem secdata;
- GByteArray *buf;
-
- g_return_val_if_fail (istream != NULL, -1);
- g_return_val_if_fail (ostream != NULL, -1);
-
- stream = camel_stream_mem_new ();
- camel_stream_write_to_stream (istream, stream);
- buf = CAMEL_STREAM_MEM (stream)->buffer;
- secdata.data = buf->data;
- secdata.len = buf->len;
-
- data = g_new (struct _GetPasswdData, 1);
- data->session = ctx->session;
- data->userid = NULL;
- data->ex = ex;
-
- dcx = SEC_PKCS7DecoderStart (sec_output_cb, ostream, get_password, data,
- NULL, NULL, decryption_allowed);
- if (dcx == NULL)
- goto exception;
-
- SEC_PKCS7DecoderUpdate (dcx, secdata.data, secdata.len);
- cinfo = SEC_PKCS7DecoderFinish (dcx);
-
- camel_object_unref (CAMEL_OBJECT (stream));
- g_free (data);
-
- if (cinfo == NULL) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Failed to decrypt: Unknown"));
- return -1;
- }
-
- SEC_PKCS7DestroyContentInfo (cinfo);
-
- return 0;
-
- exception:
-
- if (stream)
- camel_object_unref (CAMEL_OBJECT (stream));
-
- return -1;
-}
diff --git a/camel/camel-pkcs7-context.h b/camel/camel-pkcs7-context.h
deleted file mode 100644
index 200ba527a0..0000000000
--- a/camel/camel-pkcs7-context.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef CAMEL_PKCS7_CONTEXT_H
-#define CAMEL_PKCS7_CONTEXT_H
-
-#include <camel/camel-session.h>
-#include <camel/camel-stream.h>
-#include <camel/camel-exception.h>
-#include <camel/camel-cipher-context.h>
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-#define CAMEL_PKCS7_CONTEXT_TYPE (camel_pkcs7_context_get_type ())
-#define CAMEL_PKCS7_CONTEXT(obj) (CAMEL_CHECK_CAST((obj), CAMEL_PKCS7_CONTEXT_TYPE, CamelPkcs7Context))
-#define CAMEL_PKCS7_CONTEXT_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_PKCS7_CONTEXT_TYPE, CamelPkcs7ContextClass))
-#define CAMEL_IS_PKCS7_CONTEXT(o) (CAMEL_CHECK_TYPE((o), CAMEL_PKCS7_CONTEXT_TYPE))
-
-typedef struct _CamelPkcs7Context {
- CamelCipherContext parent_object;
-
- struct _CamelPkcs7ContextPrivate *priv;
-
-} CamelPkcs7Context;
-
-typedef struct _CamelPkcs7ContextClass {
- CamelCipherContextClass parent_class;
-
-} CamelPkcs7ContextClass;
-
-
-CamelType camel_pkcs7_context_get_type (void);
-
-CamelPkcs7Context *camel_pkcs7_context_new (CamelSession *session, const char *certdb_path);
-
-/* PKCS7 routines */
-#define camel_pkcs7_sign(c, u, h, i, o, e) camel_cipher_sign (CAMEL_CIPHER_CONTEXT (c), u, h, i, o, e)
-
-#define camel_pkcs7_clearsign(c, u, h, i, o, e) camel_cipher_clearsign (CAMEL_CIPHER_CONTEXT (c), u, h, i, o, e)
-
-#define camel_pkcs7_verify(c, i, s, e) camel_cipher_verify (CAMEL_CIPHER_CONTEXT (c), i, s, e)
-
-#define camel_pkcs7_encrypt(c, s, u, r, i, o, e) camel_cipher_encrypt (CAMEL_CIPHER_CONTEXT (c), s, u, r, i, o, e)
-
-#define camel_pkcs7_decrypt(c, i, o, e) camel_cipher_decrypt (CAMEL_CIPHER_CONTEXT (c), i, o, e)
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_PKCS7_CONTEXT_H */
diff --git a/camel/camel-private.h b/camel/camel-private.h
deleted file mode 100644
index 0a84d99a55..0000000000
--- a/camel/camel-private.h
+++ /dev/null
@@ -1,181 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- * camel-private.h: Private info for class implementers.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_PRIVATE_H
-#define CAMEL_PRIVATE_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-/* need a way to configure and save this data, if this header is to
- be installed. For now, dont install it */
-
-#include "config.h"
-
-#ifdef ENABLE_THREADS
-#include <pthread.h>
-#include <e-util/e-msgport.h>
-#endif
-
-struct _CamelFolderPrivate {
-#ifdef ENABLE_THREADS
- GMutex *lock;
- GMutex *change_lock;
-#endif
-
- /* must require the 'change_lock' to access this */
- int frozen;
- struct _CamelFolderChangeInfo *changed_frozen; /* queues changed events */
-};
-
-#ifdef ENABLE_THREADS
-#define CAMEL_FOLDER_LOCK(f, l) (g_mutex_lock(((CamelFolder *)f)->priv->l))
-#define CAMEL_FOLDER_UNLOCK(f, l) (g_mutex_unlock(((CamelFolder *)f)->priv->l))
-#else
-#define CAMEL_FOLDER_LOCK(f, l)
-#define CAMEL_FOLDER_UNLOCK(f, l)
-#endif
-
-struct _CamelStorePrivate {
-#ifdef ENABLE_THREADS
- GMutex *folder_lock; /* for locking folder operations */
- GMutex *cache_lock; /* for locking access to the cache */
-#endif
-};
-
-#ifdef ENABLE_THREADS
-#define CAMEL_STORE_LOCK(f, l) (g_mutex_lock(((CamelStore *)f)->priv->l))
-#define CAMEL_STORE_UNLOCK(f, l) (g_mutex_unlock(((CamelStore *)f)->priv->l))
-#else
-#define CAMEL_STORE_LOCK(f, l)
-#define CAMEL_STORE_UNLOCK(f, l)
-#endif
-
-struct _CamelServicePrivate {
-#ifdef ENABLE_THREADS
- EMutex *connect_lock; /* for locking connection operations */
-#endif
-};
-
-#ifdef ENABLE_THREADS
-#define CAMEL_SERVICE_LOCK(f, l) (e_mutex_lock(((CamelService *)f)->priv->l))
-#define CAMEL_SERVICE_UNLOCK(f, l) (e_mutex_unlock(((CamelService *)f)->priv->l))
-#else
-#define CAMEL_SERVICE_LOCK(f, l)
-#define CAMEL_SERVICE_UNLOCK(f, l)
-#endif
-
-struct _CamelSessionPrivate {
-#ifdef ENABLE_THREADS
- GMutex *lock; /* for locking everything basically */
-#endif
-};
-
-#ifdef ENABLE_THREADS
-#define CAMEL_SESSION_LOCK(f, l) (g_mutex_lock(((CamelSession *)f)->priv->l))
-#define CAMEL_SESSION_UNLOCK(f, l) (g_mutex_unlock(((CamelSession *)f)->priv->l))
-#else
-#define CAMEL_SESSION_LOCK(f, l)
-#define CAMEL_SESSION_UNLOCK(f, l)
-#endif
-
-
-struct _CamelRemoteStorePrivate {
-#ifdef ENABLE_THREADS
- EMutex *stream_lock; /* for locking stream operations */
-#endif
-};
-
-#ifdef ENABLE_THREADS
-#define CAMEL_REMOTE_STORE_LOCK(f, l) (e_mutex_lock(((CamelRemoteStore *)f)->priv->l))
-#define CAMEL_REMOTE_STORE_UNLOCK(f, l) (e_mutex_unlock(((CamelRemoteStore *)f)->priv->l))
-#else
-#define CAMEL_REMOTE_STORE_LOCK(f, l)
-#define CAMEL_REMOTE_STORE_UNLOCK(f, l)
-#endif
-
-/* most of this stuff really is private, but the lock can be used by subordinate classes */
-struct _CamelFolderSummaryPrivate {
- GHashTable *filter_charset; /* CamelMimeFilterCharset's indexed by source charset */
-
- struct _CamelMimeFilterIndex *filter_index;
- struct _CamelMimeFilterBasic *filter_64;
- struct _CamelMimeFilterBasic *filter_qp;
- struct _CamelMimeFilterSave *filter_save;
- struct _CamelMimeFilterHTML *filter_html;
-
- struct ibex *index;
-
-#ifdef ENABLE_THREADS
- GMutex *summary_lock; /* for the summary hashtable/array */
- GMutex *io_lock; /* load/save lock, for access to saved_count, etc */
- GMutex *filter_lock; /* for accessing any of the filtering/indexing stuff, since we share them */
- GMutex *alloc_lock; /* for setting up and using allocators */
- GMutex *ref_lock; /* for reffing/unreffing messageinfo's ALWAYS obtain before summary_lock */
-#endif
-};
-
-#ifdef ENABLE_THREADS
-#define CAMEL_SUMMARY_LOCK(f, l) (g_mutex_lock(((CamelFolderSummary *)f)->priv->l))
-#define CAMEL_SUMMARY_UNLOCK(f, l) (g_mutex_unlock(((CamelFolderSummary *)f)->priv->l))
-#else
-#define CAMEL_SUMMARY_LOCK(f, l)
-#define CAMEL_SUMMARY_UNLOCK(f, l)
-#endif
-
-struct _CamelVeeStorePrivate {
-};
-
-#ifdef ENABLE_THREADS
-#define CAMEL_VEE_STORE_LOCK(f, l) (e_mutex_lock(((CamelVeeStore *)f)->priv->l))
-#define CAMEL_VEE_STORE_UNLOCK(f, l) (e_mutex_unlock(((CamelVeeStore *)f)->priv->l))
-#else
-#define CAMEL_VEE_STORE_LOCK(f, l)
-#define CAMEL_VEE_STORE_UNLOCK(f, l)
-#endif
-
-struct _CamelVeeFolderPrivate {
- GList *folders; /* lock using subfolder_lock before changing/accessing */
-
-#ifdef ENABLE_THREADS
- GMutex *summary_lock; /* for locking vfolder summary */
- GMutex *subfolder_lock; /* for locking the subfolder list */
-#endif
-};
-
-#ifdef ENABLE_THREADS
-#define CAMEL_VEE_FOLDER_LOCK(f, l) (g_mutex_lock(((CamelVeeFolder *)f)->priv->l))
-#define CAMEL_VEE_FOLDER_UNLOCK(f, l) (g_mutex_unlock(((CamelVeeFolder *)f)->priv->l))
-#else
-#define CAMEL_VEE_FOLDER_LOCK(f, l)
-#define CAMEL_VEE_FOLDER_UNLOCK(f, l)
-#endif
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_H */
-
diff --git a/camel/camel-provider.c b/camel/camel-provider.c
deleted file mode 100644
index ba1dfd5b48..0000000000
--- a/camel/camel-provider.c
+++ /dev/null
@@ -1,155 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-provider.c: provider framework */
-
-/*
- *
- * Authors:
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- * Dan Winship <danw@helixcode.com>
- * Jeffrey Stedfast <fejj@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-/* FIXME: Shouldn't we add a version number to providers ? */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <dirent.h>
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-
-#include <gmodule.h>
-
-#include "camel-provider.h"
-#include "camel-exception.h"
-#include "hash-table-utils.h"
-
-/**
- * camel_provider_init:
- *
- * Initialize the Camel provider system by reading in the .urls
- * files in the provider directory and creating a hash table mapping
- * URLs to module names.
- *
- * A .urls file has the same initial prefix as the shared library it
- * correspond to, and consists of a series of lines containing the URL
- * protocols that that library handles.
- *
- * Return value: a hash table mapping URLs to module names
- **/
-GHashTable *
-camel_provider_init (void)
-{
- GHashTable *providers;
- DIR *dir;
- struct dirent *d;
- char *p, *name, buf[80];
-
- providers = g_hash_table_new (g_strcase_hash, g_strcase_equal);
-
- dir = opendir (CAMEL_PROVIDERDIR);
- if (!dir) {
- g_error ("Could not open camel provider directory: %s",
- g_strerror (errno));
- return NULL;
- }
-
- while ((d = readdir (dir))) {
- FILE *fp;
-
- p = strchr (d->d_name, '.');
- if (!p || strcmp (p, ".urls") != 0)
- continue;
-
- name = g_strdup_printf ("%s/%s", CAMEL_PROVIDERDIR, d->d_name);
- fp = fopen (name, "r");
- if (!fp) {
- g_warning ("Could not read provider info file %s: %s",
- name, g_strerror (errno));
- g_free (name);
- continue;
- }
-
- p = strrchr (name, '.');
- strcpy (p, ".so");
- while ((fgets (buf, sizeof (buf), fp))) {
- buf[sizeof (buf) - 1] = '\0';
- p = strchr (buf, '\n');
- if (p)
- *p = '\0';
-
- if (*buf)
- g_hash_table_insert (providers, g_strdup (buf), g_strdup (name));
- }
-
- g_free (name);
- fclose (fp);
- }
-
- closedir (dir);
- return providers;
-}
-
-/**
- * camel_provider_load:
- * @session: the current session
- * @path: the path to a shared library
- * @ex: a CamelException
- *
- * Loads the provider at @path, and calls its initialization function,
- * passing @session as an argument. The provider should then register
- * itself with @session.
- **/
-void
-camel_provider_load (CamelSession *session, const char *path, CamelException *ex)
-{
- GModule *module;
- CamelProvider *(*camel_provider_module_init) ();
-
- if (!g_module_supported ()) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not load %s: Module loading "
- "not supported on this system."),
- path);
- return;
- }
-
- module = g_module_open (path, 0);
- if (!module) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not load %s: %s"),
- path, g_module_error ());
- return;
- }
-
- if (!g_module_symbol (module, "camel_provider_module_init",
- (gpointer *)&camel_provider_module_init)) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not load %s: No initialization "
- "code in module."), path);
- g_module_close (module);
- return;
- }
-
- camel_provider_module_init (session);
-}
diff --git a/camel/camel-provider.h b/camel/camel-provider.h
deleted file mode 100644
index e8bad9618d..0000000000
--- a/camel/camel-provider.h
+++ /dev/null
@@ -1,161 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-provider.h : provider definition */
-
-/*
- *
- * Authors:
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- * Jeffrey Stedfast <fejj@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_PROVIDER_H
-#define CAMEL_PROVIDER_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <camel/camel-types.h>
-#include <camel/camel-object.h>
-
-#define CAMEL_PROVIDER(obj) ((CamelProvider *)(obj))
-
-typedef enum {
- CAMEL_PROVIDER_STORE,
- CAMEL_PROVIDER_TRANSPORT,
- CAMEL_NUM_PROVIDER_TYPES
-} CamelProviderType;
-
-extern char *camel_provider_type_name[CAMEL_NUM_PROVIDER_TYPES];
-
-/* _IS_SOURCE means the user can get mail from there.
- * _IS_STORAGE means the user can read mail from there.
- */
-#define CAMEL_PROVIDER_IS_REMOTE (1 << 0)
-#define CAMEL_PROVIDER_IS_SOURCE (1 << 1)
-#define CAMEL_PROVIDER_IS_STORAGE (1 << 2)
-#define CAMEL_PROVIDER_SUPPORTS_SSL (1 << 3)
-
-
-/* Flags for url_flags. "ALLOW" means the config dialog will let
- * the user configure it. "NEED" implies "ALLOW" but means the user
- * must configure it. Service code can assume that any url part
- * for which it has set the NEED flag will be set when the service
- * is created.
- */
-#define CAMEL_URL_PART_USER (1 << 0)
-#define CAMEL_URL_PART_AUTH (1 << 1)
-#define CAMEL_URL_PART_PASSWORD (1 << 2)
-#define CAMEL_URL_PART_HOST (1 << 3)
-#define CAMEL_URL_PART_PORT (1 << 4)
-#define CAMEL_URL_PART_PATH (1 << 5)
-
-#define CAMEL_URL_PART_NEED 6
-
-/* Use these macros to test a provider's url_flags */
-#define CAMEL_PROVIDER_ALLOWS(prov, flags) (prov->url_flags & (flags | (flags << CAMEL_URL_PART_NEED)))
-#define CAMEL_PROVIDER_NEEDS(prov, flags) (prov->url_flags & (flags << CAMEL_URL_PART_NEED))
-
-/* Providers use these macros to actually define their url_flags */
-#define CAMEL_URL_ALLOW_USER (CAMEL_URL_PART_USER)
-#define CAMEL_URL_ALLOW_AUTH (CAMEL_URL_PART_AUTH)
-#define CAMEL_URL_ALLOW_PASSWORD (CAMEL_URL_PART_PASSWORD)
-#define CAMEL_URL_ALLOW_HOST (CAMEL_URL_PART_HOST)
-#define CAMEL_URL_ALLOW_PORT (CAMEL_URL_PART_PORT)
-#define CAMEL_URL_ALLOW_PATH (CAMEL_URL_PART_PATH)
-
-#define CAMEL_URL_NEED_USER (CAMEL_URL_PART_USER << CAMEL_URL_PART_NEED)
-#define CAMEL_URL_NEED_AUTH (CAMEL_URL_PART_AUTH << CAMEL_URL_PART_NEED)
-#define CAMEL_URL_NEED_PASSWORD (CAMEL_URL_PART_PASSWORD << CAMEL_URL_PART_NEED)
-#define CAMEL_URL_NEED_HOST (CAMEL_URL_PART_HOST << CAMEL_URL_PART_NEED)
-#define CAMEL_URL_NEED_PORT (CAMEL_URL_PART_PORT << CAMEL_URL_PART_NEED)
-#define CAMEL_URL_NEED_PATH (CAMEL_URL_PART_PATH << CAMEL_URL_PART_NEED)
-
-#define CAMEL_URL_PATH_IS_ABSOLUTE (1 << 12)
-
-
-/* Generic extra config stuff */
-typedef enum {
- CAMEL_PROVIDER_CONF_END,
- CAMEL_PROVIDER_CONF_SECTION_START,
- CAMEL_PROVIDER_CONF_SECTION_END,
- CAMEL_PROVIDER_CONF_CHECKBOX,
- CAMEL_PROVIDER_CONF_CHECKSPIN,
- CAMEL_PROVIDER_CONF_ENTRY,
-} CamelProviderConfType;
-
-typedef struct {
- CamelProviderConfType type;
- char *name, *depname;
- char *text, *value;
-} CamelProviderConfEntry;
-
-
-
-typedef struct {
- /* Provider name used in CamelURLs. */
- char *protocol;
-
- /* Provider name as used by people. (May be the same as protocol) */
- char *name;
-
- /* Description of the provider. A novice user should be able
- * to read this description, and the information provided by
- * an ISP, IS department, etc, and determine whether or not
- * this provider is relevant to him, and if so, which
- * information goes with it.
- */
- char *description;
-
- /* The category of message that this provider works with.
- * (evolution-mail will only list a provider in the store/transport
- * config dialogs if its domain is "mail".)
- */
- char *domain;
-
- /* Flags describing the provider, flags describing its URLs */
- int flags, url_flags;
-
- /* Extra configuration information */
- CamelProviderConfEntry *extra_conf;
-
- CamelType object_types [CAMEL_NUM_PROVIDER_TYPES];
-
- /* GList of CamelServiceAuthTypes the provider supports */
- GList *authtypes;
-
- GHashTable *service_cache;
-
-} CamelProvider;
-
-GHashTable *camel_provider_init (void);
-void camel_provider_load (CamelSession *session, const char *path, CamelException *ex);
-
-/* This is defined by each module, not by camel-provider.c. */
-void camel_provider_module_init (CamelSession *session);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_PROVIDER_H */
diff --git a/camel/camel-remote-store.c b/camel/camel-remote-store.c
deleted file mode 100644
index 767a0fbe51..0000000000
--- a/camel/camel-remote-store.c
+++ /dev/null
@@ -1,574 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-remote-store.c : class for an remote store */
-
-/*
- * Authors: Peter Williams <peterw@helixcode.com>
- * based on camel-imap-provider.c
- *
- * Copyright 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <errno.h>
-
-#include "camel-remote-store.h"
-#include "camel-folder.h"
-#include "camel-exception.h"
-#include "camel-session.h"
-#include "camel-stream.h"
-#include "camel-stream-buffer.h"
-#include "camel-tcp-stream.h"
-#include "camel-tcp-stream-raw.h"
-
-#ifdef HAVE_NSS
-#include "camel-tcp-stream-ssl.h"
-#endif
-
-#ifdef HAVE_OPENSSL
-#include "camel-tcp-stream-openssl.h"
-#endif
-
-#include "camel-url.h"
-#include "string-utils.h"
-
-#include "camel-private.h"
-#include "camel-operation.h"
-
-#define d(x) x
-#if d(!)0
-extern gboolean camel_verbose_debug;
-#endif
-
-#define CSRVC(obj) (CAMEL_SERVICE_CLASS (CAMEL_OBJECT_GET_CLASS (obj)))
-#define CSTRC(obj) (CAMEL_STORE_CLASS (CAMEL_OBJECT_GET_CLASS (obj)))
-#define CRSC(obj) (CAMEL_REMOTE_STORE_CLASS (CAMEL_OBJECT_GET_CLASS (obj)))
-
-static CamelStoreClass *store_class = NULL;
-
-static void remote_construct (CamelService *service, CamelSession *session,
- CamelProvider *provider, CamelURL *url,
- CamelException *ex);
-static gboolean remote_connect (CamelService *service, CamelException *ex);
-static gboolean remote_disconnect (CamelService *service, gboolean clean, CamelException *ex);
-static GList *remote_query_auth_types(CamelService *service, CamelException *ex);
-static char *remote_get_name (CamelService *service, gboolean brief);
-static gint remote_send_string (CamelRemoteStore *store, CamelException *ex,
- char *fmt, va_list ap);
-static gint remote_send_stream (CamelRemoteStore *store, CamelStream *stream,
- CamelException *ex);
-static gint remote_recv_line (CamelRemoteStore *store, char **dest,
- CamelException *ex);
-
-static void
-camel_remote_store_class_init (CamelRemoteStoreClass *camel_remote_store_class)
-{
- /* virtual method overload */
- CamelServiceClass *camel_service_class =
- CAMEL_SERVICE_CLASS (camel_remote_store_class);
-
- store_class = CAMEL_STORE_CLASS (camel_type_get_global_classfuncs (camel_store_get_type ()));
-
- /* virtual method overload */
- camel_service_class->construct = remote_construct;
- camel_service_class->connect = remote_connect;
- camel_service_class->disconnect = remote_disconnect;
- camel_service_class->query_auth_types = remote_query_auth_types;
- camel_service_class->get_name = remote_get_name;
-
- camel_remote_store_class->send_string = remote_send_string;
- camel_remote_store_class->send_stream = remote_send_stream;
- camel_remote_store_class->recv_line = remote_recv_line;
- camel_remote_store_class->keepalive = NULL;
-}
-
-static void
-camel_remote_store_init (CamelObject *object)
-{
- CamelRemoteStore *remote_store = CAMEL_REMOTE_STORE (object);
-
- remote_store->istream = NULL;
- remote_store->ostream = NULL;
- remote_store->timeout_id = 0;
-
- remote_store->priv = g_malloc0(sizeof(*remote_store->priv));
-#ifdef ENABLE_THREADS
- remote_store->priv->stream_lock = e_mutex_new(E_MUTEX_REC);
-#endif
-}
-
-static void
-camel_remote_store_finalise(CamelObject *object)
-{
- CamelRemoteStore *remote_store = CAMEL_REMOTE_STORE (object);
-
-#ifdef ENABLE_THREADS
- e_mutex_destroy(remote_store->priv->stream_lock);
-#endif
- g_free(remote_store->priv);
-}
-
-
-CamelType
-camel_remote_store_get_type (void)
-{
- static CamelType camel_remote_store_type = CAMEL_INVALID_TYPE;
-
- if (camel_remote_store_type == CAMEL_INVALID_TYPE) {
- camel_remote_store_type =
- camel_type_register (CAMEL_STORE_TYPE, "CamelRemoteStore",
- sizeof (CamelRemoteStore),
- sizeof (CamelRemoteStoreClass),
- (CamelObjectClassInitFunc) camel_remote_store_class_init,
- NULL,
- (CamelObjectInitFunc) camel_remote_store_init,
- (CamelObjectFinalizeFunc) camel_remote_store_finalise);
- }
-
- return camel_remote_store_type;
-}
-
-static void
-remote_construct (CamelService *service, CamelSession *session,
- CamelProvider *provider, CamelURL *url,
- CamelException *ex)
-{
- CamelRemoteStore *remote_store = CAMEL_REMOTE_STORE (service);
-
- CAMEL_SERVICE_CLASS (store_class)->construct (service, session, provider, url, ex);
-
- if (camel_url_get_param (url, "use_ssl"))
- remote_store->use_ssl = TRUE;
-}
-
-
-/* Auth stuff... for now, nothing, but might eventually add SSH tunneling
- */
-
-static GList *
-remote_query_auth_types (CamelService *service, CamelException *ex)
-{
- return NULL;
-}
-
-GList *
-camel_remote_store_authtype_list (void)
-{
- return NULL;
-}
-
-
-static char *
-remote_get_name (CamelService *service, gboolean brief)
-{
- if (brief)
- return g_strdup_printf (_("%s server %s"),
- service->provider->name,
- service->url->host);
- else {
- return g_strdup_printf (_("%s service for %s on %s"),
- service->provider->name,
- service->url->user,
- service->url->host);
- }
-}
-
-static gboolean
-timeout_cb (gpointer data)
-{
- CamelRemoteStore *store = CAMEL_REMOTE_STORE(data);
-
- CRSC (data)->keepalive(store);
-
- return TRUE;
-}
-
-static gboolean
-remote_connect (CamelService *service, CamelException *ex)
-{
- CamelRemoteStore *store = CAMEL_REMOTE_STORE (service);
- CamelStream *tcp_stream;
- struct hostent *h;
- gint ret, port;
-
- h = camel_service_gethost (service, ex);
- if (!h)
- return FALSE;
-
- if (service->url->port)
- port = service->url->port;
- else if (store->use_ssl)
- port = store->default_ssl_port;
- else
- port = store->default_port;
-
-#if defined(HAVE_NSS) || defined(HAVE_OPENSSL)
- if (store->use_ssl) {
-#ifdef HAVE_NSS
- /* this is the preferred SSL implementation */
- tcp_stream = camel_tcp_stream_ssl_new (service, service->url->host);
-#else
- /* use openssl... */
- tcp_stream = camel_tcp_stream_openssl_new (service, service->url->host);
-#endif /* HAVE_NSS */
- } else {
- tcp_stream = camel_tcp_stream_raw_new ();
- }
-#else
- tcp_stream = camel_tcp_stream_raw_new ();
-#endif /* HAVE_NSS || HAVE_OPENSSL */
-
- ret = camel_tcp_stream_connect (CAMEL_TCP_STREAM (tcp_stream), h, port);
- camel_free_host(h);
- if (ret == -1) {
- if (errno == EINTR)
- camel_exception_set (ex, CAMEL_EXCEPTION_USER_CANCEL,
- _("Connection cancelled"));
- else
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("Could not connect to %s (port %d): %s"),
- service->url->host ? service->url->host : _("(unknown host)"),
- port, g_strerror (errno));
- return FALSE;
- }
-
- /* parent class connect initialization */
- if (CAMEL_SERVICE_CLASS (store_class)->connect (service, ex) == FALSE)
- return FALSE;
-
- store->ostream = tcp_stream;
- store->istream = camel_stream_buffer_new (tcp_stream, CAMEL_STREAM_BUFFER_READ);
-
- /* Okay, good enough for us */
- CAMEL_SERVICE (store)->connected = TRUE;
-
- /* Add a timeout so that we can hopefully prevent getting disconnected */
- /* (Only if the implementation supports it) */
- if (CRSC (store)->keepalive) {
- CamelSession *session = camel_service_get_session (CAMEL_SERVICE (store));
-
- store->timeout_id = camel_session_register_timeout (session, 10 * 60 * 1000,
- timeout_cb,
- store);
- }
-
- return TRUE;
-}
-
-static gboolean
-remote_disconnect (CamelService *service, gboolean clean, CamelException *ex)
-{
- CamelRemoteStore *store = CAMEL_REMOTE_STORE (service);
-
- if (store->timeout_id) {
- camel_session_remove_timeout (camel_service_get_session (CAMEL_SERVICE (store)),
- store->timeout_id);
- store->timeout_id = 0;
- }
-
- if (!CAMEL_SERVICE_CLASS (store_class)->disconnect (service, clean, ex))
- return FALSE;
-
- if (store->istream) {
- camel_object_unref (CAMEL_OBJECT (store->istream));
- store->istream = NULL;
- }
-
- if (store->ostream) {
- camel_object_unref (CAMEL_OBJECT (store->ostream));
- store->ostream = NULL;
- }
-
- return TRUE;
-}
-
-static gint
-remote_send_string (CamelRemoteStore *store, CamelException *ex, char *fmt, va_list ap)
-{
- gchar *cmdbuf;
-
- /* Check for connectedness. Failed (or cancelled) operations will
- * close the connection. */
- if (!camel_remote_store_connected (store, ex))
- return -1;
-
- /* create the command */
- cmdbuf = g_strdup_vprintf (fmt, ap);
-
-#if d(!)0
- if (camel_verbose_debug) {
- if (strncmp (cmdbuf, "PASS ", 5) == 0)
- fprintf (stderr, "sending : PASS xxxx\n");
- else if (strstr (cmdbuf, "LOGIN \""))
- fprintf (stderr, "sending : ---- LOGIN \"xxxx\" \"xxxx\"\n");
- else
- fprintf (stderr, "sending : %s", cmdbuf);
- }
-#endif
-
- if (camel_stream_printf (store->ostream, "%s", cmdbuf) == -1) {
- if (errno == EINTR)
- camel_exception_set(ex, CAMEL_EXCEPTION_USER_CANCEL, _("Operation cancelled"));
- else
- camel_exception_set(ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE, strerror(errno));
- g_free (cmdbuf);
-
- camel_service_disconnect (CAMEL_SERVICE (store), FALSE, NULL);
- return -1;
- }
- g_free (cmdbuf);
-
- return 0;
-}
-
-/* FIXME: All of these functions need an api overhaul, they're not like
- any other functions, anywhere in the world ... */
-
-/**
- * camel_remote_store_send_string: Writes a string to the server
- * @store: a CamelRemoteStore
- * @ex: a CamelException
- * @fmt: the printf-style format to use for creating the string to send
- * @...: the arguments to the printf string @fmt
- * Return value: 0 on success, nonzero on error
- *
- * Formats the string and sends it to the server.
- **/
-
-gint
-camel_remote_store_send_string (CamelRemoteStore *store, CamelException *ex,
- char *fmt, ...)
-{
- va_list ap;
- gint ret;
-
- g_return_val_if_fail (CAMEL_IS_REMOTE_STORE (store), -1);
- g_return_val_if_fail (fmt, -1);
-
- va_start (ap, fmt);
- CAMEL_REMOTE_STORE_LOCK(store, stream_lock);
- ret = CRSC (store)->send_string (store, ex, fmt, ap);
- CAMEL_REMOTE_STORE_UNLOCK(store, stream_lock);
- va_end (ap);
-
- return ret;
-}
-
-static gint
-remote_send_stream (CamelRemoteStore *store, CamelStream *stream, CamelException *ex)
-{
- int ret;
-
- /* Check for connectedness. Failed (or cancelled) operations will
- * close the connection. */
-
- if (!camel_remote_store_connected (store, ex))
- return -1;
-
- d(fprintf (stderr, "(sending stream)\n"));
-
- ret = camel_stream_write_to_stream (stream, store->ostream);
- if (ret == -1) {
- if (errno == EINTR)
- camel_exception_set(ex, CAMEL_EXCEPTION_USER_CANCEL, _("Operation cancelled"));
- else
- camel_exception_set(ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE, strerror(errno));
-
- camel_service_disconnect (CAMEL_SERVICE (store), FALSE, NULL);
- }
-
- return ret;
-}
-
-/**
- * camel_remote_store_send_stream: Writes a CamelStream to the server
- * @store: a CamelRemoteStore
- * @stream: the stream to write
- * @ex: a CamelException
- * Return value: 0 on success, nonzero on error
- *
- * Sends the stream to the server.
- **/
-
-gint
-camel_remote_store_send_stream (CamelRemoteStore *store, CamelStream *stream, CamelException *ex)
-{
- int ret;
-
- g_return_val_if_fail (CAMEL_IS_REMOTE_STORE (store), -1);
- g_return_val_if_fail (CAMEL_IS_STREAM (stream), -1);
-
- CAMEL_REMOTE_STORE_LOCK(store, stream_lock);
-
- ret = CRSC (store)->send_stream (store, stream, ex);
-
- CAMEL_REMOTE_STORE_UNLOCK(store, stream_lock);
-
- return ret;
-}
-
-static int
-remote_recv_line (CamelRemoteStore *store, char **dest, CamelException *ex)
-{
- CamelStreamBuffer *stream;
- GByteArray *bytes;
- gchar buf[1024], *ret;
- gboolean exception = FALSE;
- gint nread;
-
- *dest = NULL;
-
- /* Check for connectedness. Failed (or cancelled) operations will
- * close the connection. We can't expect a read to have any
- * meaning if we reconnect, so always set an exception.
- */
-
- if (!camel_remote_store_connected (store, ex)) {
- camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_NOT_CONNECTED,
- g_strerror (errno));
- return -1;
- }
- stream = CAMEL_STREAM_BUFFER (store->istream);
-
- bytes = g_byte_array_new ();
-
- do {
- nread = camel_stream_buffer_gets (stream, buf, sizeof (buf));
- if (nread > 0)
- g_byte_array_append (bytes, buf, nread);
- } while (nread == sizeof (buf) - 1);
-
- if (nread == -1) {
- exception = TRUE;
- if (errno == EINTR)
- camel_exception_set(ex, CAMEL_EXCEPTION_USER_CANCEL, _("Operation cancelled"));
- else
- camel_exception_set(ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE, strerror(errno));
- } else if (bytes->len == 0) {
- exception = TRUE;
- camel_exception_set(ex, CAMEL_EXCEPTION_SERVICE_NOT_CONNECTED,
- _("Server unexpectedly disconnected"));
- }
- if (camel_exception_is_set (ex) || exception) {
- g_byte_array_free(bytes, TRUE);
- camel_service_disconnect (CAMEL_SERVICE (store), FALSE, NULL);
- return -1;
- }
-
- g_byte_array_append (bytes, "", 1);
- ret = bytes->data;
- nread = bytes->len - 1;
- g_byte_array_free (bytes, FALSE);
-
- /* strip off the CRLF sequence */
- while (nread > 0 && ret[nread] != '\r')
- ret[nread--] = '\0';
- ret[nread] = '\0';
-
- *dest = ret;
-
-#if d(!)0
- if (camel_verbose_debug)
- fprintf (stderr, "received: %s\n", *dest);
-#endif
-
- return nread;
-}
-
-/**
- * camel_remote_store_recv_line: Reads a line from the server
- * @store: a CamelRemoteStore
- * @dest: a pointer that will be set to the location of a buffer
- * holding the server's response
- * @ex: a CamelException
- * Return value: -1 on error, otherwise the length read.
- *
- * Reads a line from the server (terminated by \n or \r\n).
- **/
-
-gint
-camel_remote_store_recv_line (CamelRemoteStore *store, char **dest,
- CamelException *ex)
-{
- int ret;
-
- g_return_val_if_fail (CAMEL_IS_REMOTE_STORE (store), -1);
- g_return_val_if_fail (dest, -1);
-
- CAMEL_REMOTE_STORE_LOCK(store, stream_lock);
-
- ret = CRSC (store)->recv_line (store, dest, ex);
-
- CAMEL_REMOTE_STORE_UNLOCK(store, stream_lock);
-
- return ret;
-}
-
-static void
-refresh_folder_info (gpointer key, gpointer value, gpointer data)
-{
- CamelFolder *folder = CAMEL_FOLDER (value);
-
- camel_folder_refresh_info (folder, (CamelException *) data);
-}
-
-/**
- * camel_remote_store_refresh_folders: Refresh the folders that I
- * contain
- * @store: a CamelRemoteStore
- * @ex: a CamelException
- *
- * Refreshes the folders listed in the folders hashtable.
- **/
-void
-camel_remote_store_refresh_folders (CamelRemoteStore *store, CamelException *ex)
-{
- CAMEL_STORE_LOCK(store, cache_lock);
-
- g_hash_table_foreach (CAMEL_STORE (store)->folders, refresh_folder_info, ex);
-
- CAMEL_STORE_UNLOCK(store, cache_lock);
-}
-
-/**
- * camel_remote_store_connected:
- * @store: a CamelRemoteStore
- * @ex: a CamelException
- *
- * Ensure that the remote store is connected.
- *
- * Return value: Whether or not it is connected
- **/
-gboolean
-camel_remote_store_connected (CamelRemoteStore *store, CamelException *ex)
-{
- if (store->istream == NULL)
- return camel_service_connect (CAMEL_SERVICE (store), ex);
- return TRUE;
-}
diff --git a/camel/camel-remote-store.h b/camel/camel-remote-store.h
deleted file mode 100644
index ab22c0e86b..0000000000
--- a/camel/camel-remote-store.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-remote-store.h : class for a remote store */
-
-/*
- * Authors: Peter Williams <peterw@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_REMOTE_STORE_H
-#define CAMEL_REMOTE_STORE_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <camel/camel-store.h>
-
-#define CAMEL_REMOTE_STORE_TYPE (camel_remote_store_get_type ())
-#define CAMEL_REMOTE_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_REMOTE_STORE_TYPE, CamelRemoteStore))
-#define CAMEL_REMOTE_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_REMOTE_STORE_TYPE, CamelRemoteStoreClass))
-#define CAMEL_IS_REMOTE_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_REMOTE_STORE_TYPE))
-
-typedef struct {
- CamelStore parent_object;
- struct _CamelRemoteStorePrivate *priv;
-
- CamelStream *istream, *ostream;
- guint timeout_id, default_port, default_ssl_port;
- gboolean use_ssl;
-} CamelRemoteStore;
-
-
-typedef struct {
- CamelStoreClass parent_class;
-
- gint (*send_string) (CamelRemoteStore *store, CamelException *ex,
- char *fmt, va_list ap);
- gint (*send_stream) (CamelRemoteStore *store, CamelStream *stream,
- CamelException *ex);
- gint (*recv_line) (CamelRemoteStore *store, char **dest,
- CamelException *ex);
- void (*keepalive) (CamelRemoteStore *store);
-} CamelRemoteStoreClass;
-
-
-/* Standard Camel function */
-CamelType camel_remote_store_get_type (void);
-
-/* FIXME: All of these i/o functions need an api overhaul, they're not like
- any other functions, anywhere in the world ... */
-
-/* Extra public functions */
-GList *camel_remote_store_authtype_list (void);
-
-gint camel_remote_store_send_string (CamelRemoteStore *store, CamelException *ex,
- char *fmt, ...);
-gint camel_remote_store_send_stream (CamelRemoteStore *store, CamelStream *stream,
- CamelException *ex);
-gint camel_remote_store_recv_line (CamelRemoteStore *store, char **dest,
- CamelException *ex);
-void camel_remote_store_refresh_folders (CamelRemoteStore *store,
- CamelException *ex);
-gboolean camel_remote_store_connected (CamelRemoteStore *store, CamelException *ex);
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_REMOTE_STORE_H */
diff --git a/camel/camel-sasl-anonymous.c b/camel/camel-sasl-anonymous.c
deleted file mode 100644
index 5b97fb4edf..0000000000
--- a/camel/camel-sasl-anonymous.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include "camel-sasl-anonymous.h"
-#include "camel-internet-address.h"
-#include <string.h>
-
-CamelServiceAuthType camel_sasl_anonymous_authtype = {
- N_("Anonymous"),
-
- N_("This option will connect to the server using an anonymous login."),
-
- "ANONYMOUS",
- FALSE
-};
-
-static CamelSaslClass *parent_class = NULL;
-
-/* Returns the class for a CamelSaslAnonymous */
-#define CSA_CLASS(so) CAMEL_SASL_ANONYMOUS_CLASS (CAMEL_OBJECT_GET_CLASS (so))
-
-static GByteArray *anon_challenge (CamelSasl *sasl, GByteArray *token, CamelException *ex);
-
-static void
-camel_sasl_anonymous_class_init (CamelSaslAnonymousClass *camel_sasl_anonymous_class)
-{
- CamelSaslClass *camel_sasl_class = CAMEL_SASL_CLASS (camel_sasl_anonymous_class);
-
- parent_class = CAMEL_SASL_CLASS (camel_type_get_global_classfuncs (camel_sasl_get_type ()));
-
- /* virtual method overload */
- camel_sasl_class->challenge = anon_challenge;
-}
-
-static void
-camel_sasl_anonymous_finalize (CamelObject *object)
-{
- CamelSaslAnonymous *sasl = CAMEL_SASL_ANONYMOUS (object);
-
- g_free (sasl->trace_info);
-}
-
-
-CamelType
-camel_sasl_anonymous_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_sasl_get_type (),
- "CamelSaslAnonymous",
- sizeof (CamelSaslAnonymous),
- sizeof (CamelSaslAnonymousClass),
- (CamelObjectClassInitFunc) camel_sasl_anonymous_class_init,
- NULL,
- NULL,
- (CamelObjectFinalizeFunc) camel_sasl_anonymous_finalize);
- }
-
- return type;
-}
-
-CamelSasl *
-camel_sasl_anonymous_new (CamelSaslAnonTraceType type, const char *trace_info)
-{
- CamelSaslAnonymous *sasl_anon;
-
- if (!trace_info && type != CAMEL_SASL_ANON_TRACE_EMPTY) return NULL;
-
- sasl_anon = CAMEL_SASL_ANONYMOUS (camel_object_new (camel_sasl_anonymous_get_type ()));
- sasl_anon->trace_info = g_strdup (trace_info);
- sasl_anon->type = type;
-
- return CAMEL_SASL (sasl_anon);
-}
-
-static GByteArray *
-anon_challenge (CamelSasl *sasl, GByteArray *token, CamelException *ex)
-{
- CamelSaslAnonymous *sasl_anon = CAMEL_SASL_ANONYMOUS (sasl);
- CamelInternetAddress *cia;
- GByteArray *ret = NULL;
-
- if (token) {
- camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("Authentication failed."));
- return NULL;
- }
-
- switch (sasl_anon->type) {
- case CAMEL_SASL_ANON_TRACE_EMAIL:
- cia = camel_internet_address_new ();
- if (camel_internet_address_add (cia, NULL, sasl_anon->trace_info) != 1) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("Invalid email address trace information:\n%s"),
- sasl_anon->trace_info);
- camel_object_unref (CAMEL_OBJECT (cia));
- return NULL;
- }
- camel_object_unref (CAMEL_OBJECT (cia));
- ret = g_byte_array_new ();
- g_byte_array_append (ret, sasl_anon->trace_info, strlen (sasl_anon->trace_info));
- break;
- case CAMEL_SASL_ANON_TRACE_OPAQUE:
- if (strchr (sasl_anon->trace_info, '@')) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("Invalid opaque trace information:\n%s"),
- sasl_anon->trace_info);
- return NULL;
- }
- ret = g_byte_array_new ();
- g_byte_array_append (ret, sasl_anon->trace_info, strlen (sasl_anon->trace_info));
- break;
- case CAMEL_SASL_ANON_TRACE_EMPTY:
- ret = g_byte_array_new ();
- break;
- default:
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("Invalid trace information:\n%s"),
- sasl_anon->trace_info);
- return NULL;
- }
-
- sasl->authenticated = TRUE;
- return ret;
-}
diff --git a/camel/camel-sasl-anonymous.h b/camel/camel-sasl-anonymous.h
deleted file mode 100644
index 267f338f87..0000000000
--- a/camel/camel-sasl-anonymous.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef CAMEL_SASL_ANONYMOUS_H
-#define CAMEL_SASL_ANONYMOUS_H
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <camel/camel-sasl.h>
-
-#define CAMEL_SASL_ANONYMOUS_TYPE (camel_sasl_anonymous_get_type ())
-#define CAMEL_SASL_ANONYMOUS(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SASL_ANONYMOUS_TYPE, CamelSaslAnonymous))
-#define CAMEL_SASL_ANONYMOUS_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SASL_ANONYMOUS_TYPE, CamelSaslAnonymousClass))
-#define CAMEL_IS_SASL_ANONYMOUS(o) (CAMEL_CHECK_TYPE((o), CAMEL_SASL_ANONYMOUS_TYPE))
-
-typedef enum {
- CAMEL_SASL_ANON_TRACE_EMAIL,
- CAMEL_SASL_ANON_TRACE_OPAQUE,
- CAMEL_SASL_ANON_TRACE_EMPTY
-} CamelSaslAnonTraceType;
-
-typedef struct _CamelSaslAnonymous {
- CamelSasl parent_object;
-
- char *trace_info;
- CamelSaslAnonTraceType type;
-} CamelSaslAnonymous;
-
-
-typedef struct _CamelSaslAnonymousClass {
- CamelSaslClass parent_class;
-
-} CamelSaslAnonymousClass;
-
-
-/* Standard Camel function */
-CamelType camel_sasl_anonymous_get_type (void);
-
-/* public methods */
-CamelSasl *camel_sasl_anonymous_new (CamelSaslAnonTraceType type, const char *trace_info);
-
-extern CamelServiceAuthType camel_sasl_anonymous_authtype;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_SASL_ANONYMOUS_H */
diff --git a/camel/camel-sasl-cram-md5.c b/camel/camel-sasl-cram-md5.c
deleted file mode 100644
index 3d3bae36e1..0000000000
--- a/camel/camel-sasl-cram-md5.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <string.h>
-#include "camel-sasl-cram-md5.h"
-#include "camel-mime-utils.h"
-#include "camel-service.h"
-#include <e-util/md5-utils.h>
-
-CamelServiceAuthType camel_sasl_cram_md5_authtype = {
- N_("CRAM-MD5"),
-
- N_("This option will connect to the server using a "
- "secure CRAM-MD5 password, if the server supports it."),
-
- "CRAM-MD5",
- TRUE
-};
-
-static CamelSaslClass *parent_class = NULL;
-
-/* Returns the class for a CamelSaslCramMd5 */
-#define CSCM_CLASS(so) CAMEL_SASL_CRAM_MD5_CLASS (CAMEL_OBJECT_GET_CLASS (so))
-
-static GByteArray *cram_md5_challenge (CamelSasl *sasl, GByteArray *token, CamelException *ex);
-
-static void
-camel_sasl_cram_md5_class_init (CamelSaslCramMd5Class *camel_sasl_cram_md5_class)
-{
- CamelSaslClass *camel_sasl_class = CAMEL_SASL_CLASS (camel_sasl_cram_md5_class);
-
- parent_class = CAMEL_SASL_CLASS (camel_type_get_global_classfuncs (camel_sasl_get_type ()));
-
- /* virtual method overload */
- camel_sasl_class->challenge = cram_md5_challenge;
-}
-
-CamelType
-camel_sasl_cram_md5_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_sasl_get_type (),
- "CamelSaslCramMd5",
- sizeof (CamelSaslCramMd5),
- sizeof (CamelSaslCramMd5Class),
- (CamelObjectClassInitFunc) camel_sasl_cram_md5_class_init,
- NULL,
- NULL,
- NULL);
- }
-
- return type;
-}
-
-/* CRAM-MD5 algorithm:
- * MD5 ((passwd XOR opad), MD5 ((passwd XOR ipad), timestamp))
- */
-
-static GByteArray *
-cram_md5_challenge (CamelSasl *sasl, GByteArray *token, CamelException *ex)
-{
- char *passwd;
- guchar digest[16], md5asc[33], *s, *p;
- GByteArray *ret = NULL;
- guchar ipad[64];
- guchar opad[64];
- MD5Context ctx;
- int i, pw_len;
-
- /* Need to wait for the server */
- if (!token)
- return NULL;
-
- g_return_val_if_fail (sasl->service->url->passwd != NULL, NULL);
-
- memset (ipad, 0, sizeof (ipad));
- memset (opad, 0, sizeof (opad));
-
- passwd = sasl->service->url->passwd;
- pw_len = strlen (passwd);
- if (pw_len <= 64) {
- memcpy (ipad, passwd, pw_len);
- memcpy (opad, passwd, pw_len);
- } else {
- md5_get_digest (passwd, pw_len, ipad);
- memcpy (opad, ipad, 16);
- }
-
- for (i = 0; i < 64; i++) {
- ipad[i] ^= 0x36;
- opad[i] ^= 0x5c;
- }
-
- md5_init (&ctx);
- md5_update (&ctx, ipad, 64);
- md5_update (&ctx, token->data, token->len);
- md5_final (&ctx, digest);
-
- md5_init (&ctx);
- md5_update (&ctx, opad, 64);
- md5_update (&ctx, digest, 16);
- md5_final (&ctx, digest);
-
- /* lowercase hexify that bad-boy... */
- for (s = digest, p = md5asc; p < md5asc + 32; s++, p += 2)
- sprintf (p, "%.2x", *s);
-
- ret = g_byte_array_new ();
- g_byte_array_append (ret, sasl->service->url->user, strlen (sasl->service->url->user));
- g_byte_array_append (ret, " ", 1);
- g_byte_array_append (ret, md5asc, 32);
-
- sasl->authenticated = TRUE;
-
- return ret;
-}
diff --git a/camel/camel-sasl-cram-md5.h b/camel/camel-sasl-cram-md5.h
deleted file mode 100644
index 801dc4a4bb..0000000000
--- a/camel/camel-sasl-cram-md5.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef CAMEL_SASL_CRAM_MD5_H
-#define CAMEL_SASL_CRAM_MD5_H
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <camel/camel-sasl.h>
-
-#define CAMEL_SASL_CRAM_MD5_TYPE (camel_sasl_cram_md5_get_type ())
-#define CAMEL_SASL_CRAM_MD5(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SASL_CRAM_MD5_TYPE, CamelSaslCramMd5))
-#define CAMEL_SASL_CRAM_MD5_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SASL_CRAM_MD5_TYPE, CamelSaslCramMd5Class))
-#define CAMEL_IS_SASL_CRAM_MD5(o) (CAMEL_CHECK_TYPE((o), CAMEL_SASL_CRAM_MD5_TYPE))
-
-typedef struct _CamelSaslCramMd5 {
- CamelSasl parent_object;
-
-} CamelSaslCramMd5;
-
-
-typedef struct _CamelSaslCramMd5Class {
- CamelSaslClass parent_class;
-
-} CamelSaslCramMd5Class;
-
-
-/* Standard Camel function */
-CamelType camel_sasl_cram_md5_get_type (void);
-
-extern CamelServiceAuthType camel_sasl_cram_md5_authtype;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_SASL_CRAM_MD5_H */
diff --git a/camel/camel-sasl-digest-md5.c b/camel/camel-sasl-digest-md5.c
deleted file mode 100644
index 51b2026abc..0000000000
--- a/camel/camel-sasl-digest-md5.c
+++ /dev/null
@@ -1,895 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <unistd.h>
-#include <iconv.h>
-#include "camel-sasl-digest-md5.h"
-#include "camel-mime-utils.h"
-#include "camel-charset-map.h"
-#include <e-util/md5-utils.h>
-
-
-#define d(x)
-
-#define PARANOID(x) x
-
-CamelServiceAuthType camel_sasl_digest_md5_authtype = {
- N_("DIGEST-MD5"),
-
- N_("This option will connect to the server using a "
- "secure DIGEST-MD5 password, if the server supports it."),
-
- "DIGEST-MD5",
- TRUE
-};
-
-static CamelSaslClass *parent_class = NULL;
-
-/* Returns the class for a CamelSaslDigestMd5 */
-#define CSCM_CLASS(so) CAMEL_SASL_DIGEST_MD5_CLASS (CAMEL_OBJECT_GET_CLASS (so))
-
-static GByteArray *digest_md5_challenge (CamelSasl *sasl, GByteArray *token, CamelException *ex);
-
-enum {
- STATE_AUTH,
- STATE_FINAL
-};
-
-typedef struct {
- char *name;
- guint type;
-} DataType;
-
-enum {
- DIGEST_REALM,
- DIGEST_NONCE,
- DIGEST_QOP,
- DIGEST_STALE,
- DIGEST_MAXBUF,
- DIGEST_CHARSET,
- DIGEST_ALGORITHM,
- DIGEST_CIPHER,
- DIGEST_UNKNOWN
-};
-
-static DataType digest_args[] = {
- { "realm", DIGEST_REALM },
- { "nonce", DIGEST_NONCE },
- { "qop", DIGEST_QOP },
- { "stale", DIGEST_STALE },
- { "maxbuf", DIGEST_MAXBUF },
- { "charset", DIGEST_CHARSET },
- { "algorithm", DIGEST_ALGORITHM },
- { "cipher", DIGEST_CIPHER },
- { NULL, DIGEST_UNKNOWN }
-};
-
-#define QOP_AUTH (1<<0)
-#define QOP_AUTH_INT (1<<1)
-#define QOP_AUTH_CONF (1<<2)
-#define QOP_INVALID (1<<3)
-
-static DataType qop_types[] = {
- { "auth", QOP_AUTH },
- { "auth-int", QOP_AUTH_INT },
- { "auth-conf", QOP_AUTH_CONF },
- { NULL, QOP_INVALID }
-};
-
-#define CIPHER_DES (1<<0)
-#define CIPHER_3DES (1<<1)
-#define CIPHER_RC4 (1<<2)
-#define CIPHER_RC4_40 (1<<3)
-#define CIPHER_RC4_56 (1<<4)
-#define CIPHER_INVALID (1<<5)
-
-static DataType cipher_types[] = {
- { "des", CIPHER_DES },
- { "3des", CIPHER_3DES },
- { "rc4", CIPHER_RC4 },
- { "rc4-40", CIPHER_RC4_40 },
- { "rc4-56", CIPHER_RC4_56 },
- { NULL, CIPHER_INVALID }
-};
-
-struct _param {
- char *name;
- char *value;
-};
-
-struct _DigestChallenge {
- GPtrArray *realms;
- char *nonce;
- guint qop;
- gboolean stale;
- gint32 maxbuf;
- char *charset;
- char *algorithm;
- guint cipher;
- GList *params;
-};
-
-struct _DigestURI {
- char *type;
- char *host;
- char *name;
-};
-
-struct _DigestResponse {
- char *username;
- char *realm;
- char *nonce;
- char *cnonce;
- char nc[9];
- guint qop;
- struct _DigestURI *uri;
- char resp[33];
- guint32 maxbuf;
- char *charset;
- guint cipher;
- char *authzid;
- char *param;
-};
-
-struct _CamelSaslDigestMd5Private {
- struct _DigestChallenge *challenge;
- struct _DigestResponse *response;
- int state;
-};
-
-static void
-camel_sasl_digest_md5_class_init (CamelSaslDigestMd5Class *camel_sasl_digest_md5_class)
-{
- CamelSaslClass *camel_sasl_class = CAMEL_SASL_CLASS (camel_sasl_digest_md5_class);
-
- parent_class = CAMEL_SASL_CLASS (camel_type_get_global_classfuncs (camel_sasl_get_type ()));
-
- /* virtual method overload */
- camel_sasl_class->challenge = digest_md5_challenge;
-}
-
-static void
-camel_sasl_digest_md5_init (gpointer object, gpointer klass)
-{
- CamelSaslDigestMd5 *sasl_digest = CAMEL_SASL_DIGEST_MD5 (object);
-
- sasl_digest->priv = g_new0 (struct _CamelSaslDigestMd5Private, 1);
-}
-
-static void
-camel_sasl_digest_md5_finalize (CamelObject *object)
-{
- CamelSaslDigestMd5 *sasl = CAMEL_SASL_DIGEST_MD5 (object);
- struct _DigestChallenge *c = sasl->priv->challenge;
- struct _DigestResponse *r = sasl->priv->response;
- GList *p;
- int i;
-
- for (i = 0; i < c->realms->len; i++)
- g_free (c->realms->pdata[i]);
- g_ptr_array_free (c->realms, TRUE);
- g_free (c->nonce);
- g_free (c->charset);
- g_free (c->algorithm);
- for (p = c->params; p; p = p->next) {
- struct _param *param = p->data;
-
- g_free (param->name);
- g_free (param->value);
- g_free (param);
- }
- g_list_free (c->params);
- g_free (c);
-
- g_free (r->username);
- g_free (r->realm);
- g_free (r->nonce);
- g_free (r->cnonce);
- if (r->uri) {
- g_free (r->uri->type);
- g_free (r->uri->host);
- g_free (r->uri->name);
- }
- g_free (r->charset);
- g_free (r->authzid);
- g_free (r->param);
- g_free (r);
-
- g_free (sasl->priv);
-}
-
-
-CamelType
-camel_sasl_digest_md5_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_sasl_get_type (),
- "CamelSaslDigestMd5",
- sizeof (CamelSaslDigestMd5),
- sizeof (CamelSaslDigestMd5Class),
- (CamelObjectClassInitFunc) camel_sasl_digest_md5_class_init,
- NULL,
- (CamelObjectInitFunc) camel_sasl_digest_md5_init,
- (CamelObjectFinalizeFunc) camel_sasl_digest_md5_finalize);
- }
-
- return type;
-}
-
-static void
-decode_lwsp (const char **in)
-{
- const char *inptr = *in;
-
- while (isspace (*inptr))
- inptr++;
-
- *in = inptr;
-}
-
-static char *
-decode_quoted_string (const char **in)
-{
- const char *inptr = *in;
- char *out = NULL, *outptr;
- int outlen;
- int c;
-
- decode_lwsp (&inptr);
- if (*inptr == '"') {
- const char *intmp;
- int skip = 0;
-
- /* first, calc length */
- inptr++;
- intmp = inptr;
- while ((c = *intmp++) && c != '"') {
- if (c == '\\' && *intmp) {
- intmp++;
- skip++;
- }
- }
-
- outlen = intmp - inptr - skip;
- out = outptr = g_malloc (outlen + 1);
-
- while ((c = *inptr++) && c != '"') {
- if (c == '\\' && *inptr) {
- c = *inptr++;
- }
- *outptr++ = c;
- }
- *outptr = '\0';
- }
-
- *in = inptr;
-
- return out;
-}
-
-static char *
-decode_token (const char **in)
-{
- const char *inptr = *in;
- const char *start;
-
- decode_lwsp (&inptr);
- start = inptr;
-
- while (*inptr && *inptr != '=' && *inptr != ',')
- inptr++;
-
- if (inptr > start) {
- *in = inptr;
- return g_strndup (start, inptr - start);
- } else {
- return NULL;
- }
-}
-
-static char *
-decode_value (const char **in)
-{
- const char *inptr = *in;
-
- decode_lwsp (&inptr);
- if (*inptr == '"') {
- d(printf ("decoding quoted string token\n"));
- return decode_quoted_string (in);
- } else {
- d(printf ("decoding string token\n"));
- return decode_token (in);
- }
-}
-
-static GList *
-parse_param_list (const char *tokens)
-{
- GList *params = NULL;
- struct _param *param;
- const char *ptr;
-
- for (ptr = tokens; ptr && *ptr; ) {
- param = g_new0 (struct _param, 1);
- param->name = decode_token (&ptr);
- if (*ptr == '=') {
- ptr++;
- param->value = decode_value (&ptr);
- }
-
- params = g_list_prepend (params, param);
-
- if (*ptr == ',')
- ptr++;
- }
-
- return params;
-}
-
-static guint
-decode_data_type (DataType *dtype, const char *name)
-{
- int i;
-
- for (i = 0; dtype[i].name; i++) {
- if (!g_strcasecmp (dtype[i].name, name))
- break;
- }
-
- return dtype[i].type;
-}
-
-#define get_digest_arg(name) decode_data_type (digest_args, name)
-#define decode_qop(name) decode_data_type (qop_types, name)
-#define decode_cipher(name) decode_data_type (cipher_types, name)
-
-static const char *
-type_to_string (DataType *dtype, guint type)
-{
- int i;
-
- for (i = 0; dtype[i].name; i++) {
- if (dtype[i].type == type)
- break;
- }
-
- return dtype[i].name;
-}
-
-#define qop_to_string(type) type_to_string (qop_types, type)
-#define cipher_to_string(type) type_to_string (cipher_types, type)
-
-static void
-digest_abort (gboolean *have_type, gboolean *abort)
-{
- if (*have_type)
- *abort = TRUE;
- *have_type = TRUE;
-}
-
-static struct _DigestChallenge *
-parse_server_challenge (const char *tokens, gboolean *abort)
-{
- struct _DigestChallenge *challenge = NULL;
- GList *params, *p;
- const char *ptr;
-#ifdef PARANOID
- gboolean got_algorithm = FALSE;
- gboolean got_stale = FALSE;
- gboolean got_maxbuf = FALSE;
- gboolean got_charset = FALSE;
-#endif /* PARANOID */
-
- params = parse_param_list (tokens);
- if (!params) {
- *abort = TRUE;
- return NULL;
- }
-
- *abort = FALSE;
-
- challenge = g_new0 (struct _DigestChallenge, 1);
- challenge->realms = g_ptr_array_new ();
- challenge->maxbuf = 65536;
-
- for (p = params; p; p = p->next) {
- struct _param *param = p->data;
- int type;
-
- type = get_digest_arg (param->name);
- switch (type) {
- case DIGEST_REALM:
- for (ptr = param->value; ptr && *ptr; ) {
- char *token;
-
- token = decode_token (&ptr);
- if (token)
- g_ptr_array_add (challenge->realms, token);
-
- if (*ptr == ',')
- ptr++;
- }
- g_free (param->value);
- g_free (param->name);
- g_free (param);
- break;
- case DIGEST_NONCE:
- g_free (challenge->nonce);
- challenge->nonce = param->value;
- g_free (param->name);
- g_free (param);
- break;
- case DIGEST_QOP:
- for (ptr = param->value; ptr && *ptr; ) {
- char *token;
-
- token = decode_token (&ptr);
- if (token)
- challenge->qop |= decode_qop (token);
-
- if (*ptr == ',')
- ptr++;
- }
-
- if (challenge->qop & QOP_INVALID)
- challenge->qop = QOP_INVALID;
- g_free (param->value);
- g_free (param->name);
- g_free (param);
- break;
- case DIGEST_STALE:
- PARANOID (digest_abort (&got_stale, abort));
- if (!g_strcasecmp (param->value, "true"))
- challenge->stale = TRUE;
- else
- challenge->stale = FALSE;
- g_free (param->value);
- g_free (param->name);
- g_free (param);
- break;
- case DIGEST_MAXBUF:
- PARANOID (digest_abort (&got_maxbuf, abort));
- challenge->maxbuf = atoi (param->value);
- g_free (param->value);
- g_free (param->name);
- g_free (param);
- break;
- case DIGEST_CHARSET:
- PARANOID (digest_abort (&got_charset, abort));
- g_free (challenge->charset);
- if (param->value && *param->value)
- challenge->charset = param->value;
- else
- challenge->charset = NULL;
- g_free (param->name);
- g_free (param);
- break;
- case DIGEST_ALGORITHM:
- PARANOID (digest_abort (&got_algorithm, abort));
- g_free (challenge->algorithm);
- challenge->algorithm = param->value;
- g_free (param->name);
- g_free (param);
- break;
- case DIGEST_CIPHER:
- for (ptr = param->value; ptr && *ptr; ) {
- char *token;
-
- token = decode_token (&ptr);
- if (token)
- challenge->cipher |= decode_cipher (token);
-
- if (*ptr == ',')
- ptr++;
- }
- if (challenge->cipher & CIPHER_INVALID)
- challenge->cipher = CIPHER_INVALID;
- g_free (param->value);
- g_free (param->name);
- g_free (param);
- break;
- default:
- challenge->params = g_list_prepend (challenge->params, param);
- break;
- }
- }
-
- g_list_free (params);
-
- return challenge;
-}
-
-static void
-digest_hex (guchar *digest, guchar hex[33])
-{
- guchar *s, *p;
-
- /* lowercase hexify that bad-boy... */
- for (s = digest, p = hex; p < hex + 32; s++, p += 2)
- sprintf (p, "%.2x", *s);
-}
-
-static char *
-digest_uri_to_string (struct _DigestURI *uri)
-{
- if (uri->name)
- return g_strdup_printf ("%s/%s/%s", uri->type, uri->host, uri->name);
- else
- return g_strdup_printf ("%s/%s", uri->type, uri->host);
-}
-
-static void
-compute_response (struct _DigestResponse *resp, const char *passwd, gboolean client, guchar out[33])
-{
- guchar hex_a1[33], hex_a2[33];
- guchar digest[16];
- MD5Context ctx;
- char *buf;
-
- /* compute A1 */
- md5_init (&ctx);
- md5_update (&ctx, resp->username, strlen (resp->username));
- md5_update (&ctx, ":", 1);
- md5_update (&ctx, resp->realm, strlen (resp->realm));
- md5_update (&ctx, ":", 1);
- md5_update (&ctx, passwd, strlen (passwd));
- md5_final (&ctx, digest);
-
- md5_init (&ctx);
- md5_update (&ctx, digest, 16);
- md5_update (&ctx, ":", 1);
- md5_update (&ctx, resp->nonce, strlen (resp->nonce));
- md5_update (&ctx, ":", 1);
- md5_update (&ctx, resp->cnonce, strlen (resp->cnonce));
- if (resp->authzid) {
- md5_update (&ctx, ":", 1);
- md5_update (&ctx, resp->authzid, strlen (resp->authzid));
- }
-
- /* hexify A1 */
- md5_final (&ctx, digest);
- digest_hex (digest, hex_a1);
-
- /* compute A2 */
- md5_init (&ctx);
- if (client) {
- /* we are calculating the client response */
- md5_update (&ctx, "AUTHENTICATE:", strlen ("AUTHENTICATE:"));
- } else {
- /* we are calculating the server rspauth */
- md5_update (&ctx, ":", 1);
- }
-
- buf = digest_uri_to_string (resp->uri);
- md5_update (&ctx, buf, strlen (buf));
- g_free (buf);
-
- if (resp->qop == QOP_AUTH_INT || resp->qop == QOP_AUTH_CONF)
- md5_update (&ctx, ":00000000000000000000000000000000", 33);
-
- /* now hexify A2 */
- md5_final (&ctx, digest);
- digest_hex (digest, hex_a2);
-
- /* compute KD */
- md5_init (&ctx);
- md5_update (&ctx, hex_a1, 32);
- md5_update (&ctx, ":", 1);
- md5_update (&ctx, resp->nonce, strlen (resp->nonce));
- md5_update (&ctx, ":", 1);
- md5_update (&ctx, resp->nc, 8);
- md5_update (&ctx, ":", 1);
- md5_update (&ctx, resp->cnonce, strlen (resp->cnonce));
- md5_update (&ctx, ":", 1);
- md5_update (&ctx, qop_to_string (resp->qop), strlen (qop_to_string (resp->qop)));
- md5_update (&ctx, ":", 1);
- md5_update (&ctx, hex_a2, 32);
- md5_final (&ctx, digest);
-
- digest_hex (digest, out);
-}
-
-static struct _DigestResponse *
-generate_response (struct _DigestChallenge *challenge, struct hostent *host,
- const char *protocol, const char *user, const char *passwd)
-{
- struct _DigestResponse *resp;
- struct _DigestURI *uri;
- char *bgen, digest[16];
-
- resp = g_new0 (struct _DigestResponse, 1);
- resp->username = g_strdup (user);
- /* FIXME: we should use the preferred realm */
- if (challenge->realms && challenge->realms->len > 0)
- resp->realm = g_strdup (challenge->realms->pdata[0]);
- else
- resp->realm = g_strdup ("");
-
- resp->nonce = g_strdup (challenge->nonce);
-
- /* generate the cnonce */
- bgen = g_strdup_printf ("%p:%lu:%lu", resp,
- (unsigned long) getpid (),
- (unsigned long) time (0));
- md5_get_digest (bgen, strlen (bgen), digest);
- g_free (bgen);
- /* take our recommended 64 bits of entropy */
- resp->cnonce = base64_encode_simple (digest, 8);
-
- /* we don't support re-auth so the nonce count is always 1 */
- strcpy (resp->nc, "00000001");
-
- /* choose the QOP */
- /* FIXME: choose - probably choose "auth" ??? */
- resp->qop = QOP_AUTH;
-
- /* create the URI */
- uri = g_new0 (struct _DigestURI, 1);
- uri->type = g_strdup (protocol);
- uri->host = g_strdup (host->h_name);
- uri->name = NULL;
- resp->uri = uri;
-
- /* charsets... yay */
- if (challenge->charset) {
- /* I believe that this is only ever allowed to be
- * UTF-8. We strdup the charset specified by the
- * challenge anyway, just in case it's not UTF-8.
- */
- resp->charset = g_strdup (challenge->charset);
- }
-
- resp->cipher = CIPHER_INVALID;
- if (resp->qop == QOP_AUTH_CONF) {
- /* FIXME: choose a cipher? */
- resp->cipher = CIPHER_INVALID;
- }
-
- /* we don't really care about this... */
- resp->authzid = NULL;
-
- compute_response (resp, passwd, TRUE, resp->resp);
-
- return resp;
-}
-
-static GByteArray *
-digest_response (struct _DigestResponse *resp)
-{
- GByteArray *buffer;
- const char *str;
- char *buf;
-
- buffer = g_byte_array_new ();
- g_byte_array_append (buffer, "username=\"", 10);
- if (resp->charset) {
- /* Encode the username using the requested charset */
- char *charset, *username, *outbuf;
- size_t len, outlen;
- const char *buf;
- iconv_t cd;
-
- charset = camel_charset_locale_name ();
- if (!charset)
- charset = g_strdup ("iso-8859-1");
-
- cd = iconv_open (resp->charset, charset);
- g_free (charset);
-
- len = strlen (resp->username);
- outlen = 2 * len; /* plenty of space */
-
- outbuf = username = g_malloc0 (outlen + 1);
- buf = resp->username;
- if (cd == (iconv_t) -1 || iconv (cd, &buf, &len, &outbuf, &outlen) == -1) {
- /* We can't convert to UTF-8 - pretend we never got a charset param? */
- g_free (resp->charset);
- resp->charset = NULL;
-
- /* Set the username to the non-UTF-8 version */
- g_free (username);
- username = g_strdup (resp->username);
- }
-
- if (cd != (iconv_t) -1)
- iconv_close (cd);
-
- g_byte_array_append (buffer, username, strlen (username));
- g_free (username);
- } else {
- g_byte_array_append (buffer, resp->username, strlen (resp->username));
- }
-
- g_byte_array_append (buffer, "\",realm=\"", 9);
- g_byte_array_append (buffer, resp->realm, strlen (resp->realm));
-
- g_byte_array_append (buffer, "\",nonce=\"", 9);
- g_byte_array_append (buffer, resp->nonce, strlen (resp->nonce));
-
- g_byte_array_append (buffer, "\",cnonce=\"", 10);
- g_byte_array_append (buffer, resp->cnonce, strlen (resp->cnonce));
-
- g_byte_array_append (buffer, "\",nc=", 5);
- g_byte_array_append (buffer, resp->nc, 8);
-
- g_byte_array_append (buffer, ",qop=\"", 6);
- str = qop_to_string (resp->qop);
- g_byte_array_append (buffer, str, strlen (str));
-
- g_byte_array_append (buffer, "\",digest-uri=\"", 14);
- buf = digest_uri_to_string (resp->uri);
- g_byte_array_append (buffer, buf, strlen (buf));
- g_free (buf);
-
- g_byte_array_append (buffer, "\",response=\"", 12);
- g_byte_array_append (buffer, resp->resp, 32);
- g_byte_array_append (buffer, "\"", 1);
-
- if (resp->maxbuf > 0) {
- g_byte_array_append (buffer, ",maxbuf=", 8);
- buf = g_strdup_printf ("%d", resp->maxbuf);
- g_byte_array_append (buffer, buf, strlen (buf));
- g_free (buf);
- }
-
- if (resp->charset) {
- g_byte_array_append (buffer, ",charset=\"", 10);
- g_byte_array_append (buffer, resp->charset, strlen (resp->charset));
- g_byte_array_append (buffer, "\"", 1);
- }
-
- if (resp->cipher != CIPHER_INVALID) {
- str = cipher_to_string (resp->cipher);
- if (str) {
- g_byte_array_append (buffer, ",cipher=\"", 9);
- g_byte_array_append (buffer, str, strlen (str));
- g_byte_array_append (buffer, "\"", 1);
- }
- }
-
- if (resp->authzid) {
- g_byte_array_append (buffer, ",authzid=\"", 10);
- g_byte_array_append (buffer, resp->authzid, strlen (resp->authzid));
- g_byte_array_append (buffer, "\"", 1);
- }
-
- return buffer;
-}
-
-static GByteArray *
-digest_md5_challenge (CamelSasl *sasl, GByteArray *token, CamelException *ex)
-{
- CamelSaslDigestMd5 *sasl_digest = CAMEL_SASL_DIGEST_MD5 (sasl);
- struct _CamelSaslDigestMd5Private *priv = sasl_digest->priv;
- struct _param *rspauth;
- GByteArray *ret = NULL;
- gboolean abort = FALSE;
- struct hostent *h;
- const char *ptr;
- guchar out[33];
- char *tokens;
-
- /* Need to wait for the server */
- if (!token)
- return NULL;
-
- g_return_val_if_fail (sasl->service->url->passwd != NULL, NULL);
-
- switch (priv->state) {
- case STATE_AUTH:
- if (token->len > 2048) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("Server challenge too long (>2048 octets)\n"));
- return NULL;
- }
-
- tokens = g_strndup (token->data, token->len);
- priv->challenge = parse_server_challenge (tokens, &abort);
- g_free (tokens);
- if (!priv->challenge || abort) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("Server challenge invalid\n"));
- return NULL;
- }
-
- if (priv->challenge->qop == QOP_INVALID) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("Server challenge contained invalid "
- "\"Quality of Protection\" token\n"));
- return NULL;
- }
-
- h = camel_service_gethost (sasl->service, ex);
- priv->response = generate_response (priv->challenge, h, sasl->service_name,
- sasl->service->url->user,
- sasl->service->url->passwd);
- camel_free_host(h);
- ret = digest_response (priv->response);
-
- break;
- case STATE_FINAL:
- if (token->len)
- tokens = g_strndup (token->data, token->len);
- else
- tokens = NULL;
-
- if (!tokens || !*tokens) {
- g_free (tokens);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("Server response did not contain authorization data\n"));
- return NULL;
- }
-
- rspauth = g_new0 (struct _param, 1);
-
- ptr = tokens;
- rspauth->name = decode_token (&ptr);
- if (*ptr == '=') {
- ptr++;
- rspauth->value = decode_value (&ptr);
- }
- g_free (tokens);
-
- if (!rspauth->value) {
- g_free (rspauth->name);
- g_free (rspauth);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("Server response contained incomplete authorization data\n"));
- return NULL;
- }
-
- compute_response (priv->response, sasl->service->url->passwd, FALSE, out);
- if (memcmp (out, rspauth->value, 32) != 0) {
- g_free (rspauth->name);
- g_free (rspauth->value);
- g_free (rspauth);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("Server response does not match\n"));
- sasl->authenticated = TRUE;
-
- return NULL;
- }
-
- g_free (rspauth->name);
- g_free (rspauth->value);
- g_free (rspauth);
-
- ret = g_byte_array_new ();
-
- sasl->authenticated = TRUE;
- default:
- break;
- }
-
- priv->state++;
-
- return ret;
-}
diff --git a/camel/camel-sasl-digest-md5.h b/camel/camel-sasl-digest-md5.h
deleted file mode 100644
index b4ce831936..0000000000
--- a/camel/camel-sasl-digest-md5.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef CAMEL_SASL_DIGEST_MD5_H
-#define CAMEL_SASL_DIGEST_MD5_H
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <sys/types.h>
-#include <netdb.h>
-#include <camel/camel-sasl.h>
-
-#define CAMEL_SASL_DIGEST_MD5_TYPE (camel_sasl_digest_md5_get_type ())
-#define CAMEL_SASL_DIGEST_MD5(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SASL_DIGEST_MD5_TYPE, CamelSaslDigestMd5))
-#define CAMEL_SASL_DIGEST_MD5_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SASL_DIGEST_MD5_TYPE, CamelSaslDigestMd5Class))
-#define CAMEL_IS_SASL_DIGEST_MD5(o) (CAMEL_CHECK_TYPE((o), CAMEL_SASL_DIGEST_MD5_TYPE))
-
-typedef struct _CamelSaslDigestMd5 {
- CamelSasl parent_object;
- struct _CamelSaslDigestMd5Private *priv;
-
-} CamelSaslDigestMd5;
-
-
-typedef struct _CamelSaslDigestMd5Class {
- CamelSaslClass parent_class;
-
-} CamelSaslDigestMd5Class;
-
-
-/* Standard Camel function */
-CamelType camel_sasl_digest_md5_get_type (void);
-
-extern CamelServiceAuthType camel_sasl_digest_md5_authtype;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_SASL_DIGEST_MD5_H */
diff --git a/camel/camel-sasl-kerberos4.c b/camel/camel-sasl-kerberos4.c
deleted file mode 100644
index 1698ffe870..0000000000
--- a/camel/camel-sasl-kerberos4.c
+++ /dev/null
@@ -1,223 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef HAVE_KRB4
-
-#include <krb.h>
-/* MIT krb4 des.h #defines _. Sigh. We don't need it. #undef it here
- * so we get the gettexty _ definition later.
- */
-#undef _
-
-#include <string.h>
-#include "camel-sasl-kerberos4.h"
-#include "camel-service.h"
-
-CamelServiceAuthType camel_sasl_kerberos4_authtype = {
- N_("Kerberos 4"),
-
- N_("This option will connect to the server using "
- "Kerberos 4 authentication."),
-
- "KERBEROS_V4",
- FALSE
-};
-
-#define KERBEROS_V4_PROTECTION_NONE 1
-#define KERBEROS_V4_PROTECTION_INTEGRITY 2
-#define KERBEROS_V4_PROTECTION_PRIVACY 4
-
-static CamelSaslClass *parent_class = NULL;
-
-/* Returns the class for a CamelSaslKerberos4 */
-#define CSK4_CLASS(so) CAMEL_SASL_KERBEROS4_CLASS (CAMEL_OBJECT_GET_CLASS (so))
-
-static GByteArray *krb4_challenge (CamelSasl *sasl, GByteArray *token, CamelException *ex);
-
-struct _CamelSaslKerberos4Private {
- int state;
-
- guint32 nonce_n;
- guint32 nonce_h;
-
- des_cblock session;
- des_key_schedule schedule;
-};
-
-static void
-camel_sasl_kerberos4_class_init (CamelSaslKerberos4Class *camel_sasl_kerberos4_class)
-{
- CamelSaslClass *camel_sasl_class = CAMEL_SASL_CLASS (camel_sasl_kerberos4_class);
-
- parent_class = CAMEL_SASL_CLASS (camel_type_get_global_classfuncs (camel_sasl_get_type ()));
-
- /* virtual method overload */
- camel_sasl_class->challenge = krb4_challenge;
-}
-
-static void
-camel_sasl_kerberos4_init (gpointer object, gpointer klass)
-{
- CamelSaslKerberos4 *sasl_krb4 = CAMEL_SASL_KERBEROS4 (object);
-
- sasl_krb4->priv = g_new0 (struct _CamelSaslKerberos4Private, 1);
-}
-
-static void
-camel_sasl_kerberos4_finalize (CamelObject *object)
-{
- CamelSaslKerberos4 *sasl = CAMEL_SASL_KERBEROS4 (object);
-
- if (sasl->priv) {
- memset (sasl->priv, 0, sizeof (sasl->priv));
- g_free (sasl->priv);
- }
-}
-
-
-CamelType
-camel_sasl_kerberos4_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_sasl_get_type (),
- "CamelSaslKerberos4",
- sizeof (CamelSaslKerberos4),
- sizeof (CamelSaslKerberos4Class),
- (CamelObjectClassInitFunc) camel_sasl_kerberos4_class_init,
- NULL,
- (CamelObjectInitFunc) camel_sasl_kerberos4_init,
- (CamelObjectFinalizeFunc) camel_sasl_kerberos4_finalize);
- }
-
- return type;
-}
-
-static GByteArray *
-krb4_challenge (CamelSasl *sasl, GByteArray *token, CamelException *ex)
-{
- struct _CamelSaslKerberos4Private *priv = CAMEL_SASL_KERBEROS4 (sasl)->priv;
- GByteArray *ret = NULL;
- char *inst, *realm, *username;
- struct hostent *h;
- int status, len;
- KTEXT_ST authenticator;
- CREDENTIALS credentials;
- guint32 plus1;
-
- /* Need to wait for the server */
- if (!token)
- return NULL;
-
- switch (priv->state) {
- case 0:
- if (token->len != 4)
- goto lose;
-
- memcpy (&priv->nonce_n, token->data, 4);
- priv->nonce_h = ntohl (priv->nonce_n);
-
- /* Our response is an authenticator including that number. */
- h = camel_service_gethost (sasl->service, ex);
- inst = g_strndup (h->h_name, strcspn (h->h_name, "."));
- g_strdown (inst);
- realm = g_strdup (krb_realmofhost (h->h_name));
- camel_free_host(h);
- status = krb_mk_req (&authenticator, sasl->service_name, inst, realm, priv->nonce_h);
- if (status == KSUCCESS) {
- status = krb_get_cred (sasl->service_name, inst, realm, &credentials);
- memcpy (priv->session, credentials.session, sizeof (priv->session));
- memset (&credentials, 0, sizeof (credentials));
- }
- g_free (inst);
- g_free (realm);
-
- if (status != KSUCCESS) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("Could not get Kerberos ticket:\n%s"),
- krb_err_txt[status]);
- goto lose;
- }
- des_key_sched (&priv->session, priv->schedule);
-
- ret = g_byte_array_new ();
- g_byte_array_append (ret, (const guint8 *)authenticator.dat, authenticator.length);
- break;
-
- case 1:
- if (token->len != 8)
- goto lose;
-
- /* This one is encrypted. */
- des_ecb_encrypt ((des_cblock *)token->data, (des_cblock *)token->data, priv->schedule, 0);
-
- /* Check that the returned value is the original nonce plus one. */
- memcpy (&plus1, token->data, 4);
- if (ntohl (plus1) != priv->nonce_h + 1)
- goto lose;
-
- /* "the fifth octet contain[s] a bit-mask specifying the
- * protection mechanisms supported by the server"
- */
- if (!(token->data[4] & KERBEROS_V4_PROTECTION_NONE)) {
- g_warning ("Server does not support `no protection' :-(");
- goto lose;
- }
-
- username = sasl->service->url->user;
- len = strlen (username) + 9;
- len += 8 - len % 8;
- ret = g_byte_array_new ();
- g_byte_array_set_size (ret, len);
- memset (ret->data, 0, len);
- memcpy (ret->data, &priv->nonce_n, 4);
- ret->data[4] = KERBEROS_V4_PROTECTION_NONE;
- ret->data[5] = ret->data[6] = ret->data[7] = 0;
- strcpy (ret->data + 8, username);
-
- des_pcbc_encrypt ((void *)ret->data, (void *)ret->data, len,
- priv->schedule, &priv->session, 1);
- memset (&priv->session, 0, sizeof (priv->session));
-
- sasl->authenticated = TRUE;
- break;
- }
-
- priv->state++;
- return ret;
-
- lose:
- memset (&priv->session, 0, sizeof (priv->session));
-
- if (!camel_exception_is_set (ex)) {
- camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("Bad authentication response from server."));
- }
- return NULL;
-}
-
-#endif /* HAVE_KRB4 */
diff --git a/camel/camel-sasl-kerberos4.h b/camel/camel-sasl-kerberos4.h
deleted file mode 100644
index d4bef9a876..0000000000
--- a/camel/camel-sasl-kerberos4.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef CAMEL_SASL_KERBEROS4_H
-#define CAMEL_SASL_KERBEROS4_H
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <sys/types.h>
-#include <netdb.h>
-#include <camel/camel-sasl.h>
-
-#define CAMEL_SASL_KERBEROS4_TYPE (camel_sasl_kerberos4_get_type ())
-#define CAMEL_SASL_KERBEROS4(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SASL_KERBEROS4_TYPE, CamelSaslKerberos4))
-#define CAMEL_SASL_KERBEROS4_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SASL_KERBEROS4_TYPE, CamelSaslKerberos4Class))
-#define CAMEL_IS_SASL_KERBEROS4(o) (CAMEL_CHECK_TYPE((o), CAMEL_SASL_KERBEROS4_TYPE))
-
-typedef struct _CamelSaslKerberos4 {
- CamelSasl parent_object;
- struct _CamelSaslKerberos4Private *priv;
-
-} CamelSaslKerberos4;
-
-
-typedef struct _CamelSaslKerberos4Class {
- CamelSaslClass parent_class;
-
-} CamelSaslKerberos4Class;
-
-
-/* Standard Camel function */
-CamelType camel_sasl_kerberos4_get_type (void);
-
-extern CamelServiceAuthType camel_sasl_kerberos4_authtype;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_SASL_KERBEROS4_H */
diff --git a/camel/camel-sasl-login.c b/camel/camel-sasl-login.c
deleted file mode 100644
index 833578bc1d..0000000000
--- a/camel/camel-sasl-login.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include "camel-sasl-login.h"
-#include "camel-service.h"
-
-CamelServiceAuthType camel_sasl_login_authtype = {
- N_("NT Login"),
-
- N_("This option will connect to the server using a "
- "simple password."),
-
- "LOGIN",
- TRUE
-};
-
-enum {
- LOGIN_USER,
- LOGIN_PASSWD
-};
-
-static CamelSaslClass *parent_class = NULL;
-
-/* Returns the class for a CamelSaslLogin */
-#define CSP_CLASS(so) CAMEL_SASL_LOGIN_CLASS (CAMEL_OBJECT_GET_CLASS (so))
-
-static GByteArray *login_challenge (CamelSasl *sasl, GByteArray *token, CamelException *ex);
-
-struct _CamelSaslLoginPrivate {
- int state;
-};
-
-static void
-camel_sasl_login_class_init (CamelSaslLoginClass *camel_sasl_login_class)
-{
- CamelSaslClass *camel_sasl_class = CAMEL_SASL_CLASS (camel_sasl_login_class);
-
- parent_class = CAMEL_SASL_CLASS (camel_type_get_global_classfuncs (camel_sasl_get_type ()));
-
- /* virtual method overload */
- camel_sasl_class->challenge = login_challenge;
-}
-
-static void
-camel_sasl_login_init (gpointer object, gpointer klass)
-{
- CamelSaslLogin *sasl_login = CAMEL_SASL_LOGIN (object);
-
- sasl_login->priv = g_new0 (struct _CamelSaslLoginPrivate, 1);
-}
-
-static void
-camel_sasl_login_finalize (CamelObject *object)
-{
- CamelSaslLogin *sasl = CAMEL_SASL_LOGIN (object);
-
- g_free (sasl->priv);
-}
-
-
-CamelType
-camel_sasl_login_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_sasl_get_type (),
- "CamelSaslLogin",
- sizeof (CamelSaslLogin),
- sizeof (CamelSaslLoginClass),
- (CamelObjectClassInitFunc) camel_sasl_login_class_init,
- NULL,
- (CamelObjectInitFunc) camel_sasl_login_init,
- (CamelObjectFinalizeFunc) camel_sasl_login_finalize);
- }
-
- return type;
-}
-
-static GByteArray *
-login_challenge (CamelSasl *sasl, GByteArray *token, CamelException *ex)
-{
- struct _CamelSaslLoginPrivate *priv = CAMEL_SASL_LOGIN (sasl)->priv;
- GByteArray *buf = NULL;
- CamelURL *url = sasl->service->url;
-
- g_return_val_if_fail (url->passwd != NULL, NULL);
-
- switch (priv->state) {
- case LOGIN_USER:
- buf = g_byte_array_new ();
- g_byte_array_append (buf, url->user, strlen (url->user));
- break;
- case LOGIN_PASSWD:
- buf = g_byte_array_new ();
- g_byte_array_append (buf, url->passwd, strlen (url->passwd));
-
- sasl->authenticated = TRUE;
- break;
- default:
- if (!camel_exception_is_set (ex)) {
- camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("Unknown authentication state."));
- }
- }
-
- priv->state++;
-
- return buf;
-}
diff --git a/camel/camel-sasl-login.h b/camel/camel-sasl-login.h
deleted file mode 100644
index 7dacaf82e4..0000000000
--- a/camel/camel-sasl-login.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef CAMEL_SASL_LOGIN_H
-#define CAMEL_SASL_LOGIN_H
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <camel/camel-sasl.h>
-
-#define CAMEL_SASL_LOGIN_TYPE (camel_sasl_login_get_type ())
-#define CAMEL_SASL_LOGIN(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SASL_LOGIN_TYPE, CamelSaslLogin))
-#define CAMEL_SASL_LOGIN_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SASL_LOGIN_TYPE, CamelSaslLoginClass))
-#define CAMEL_IS_SASL_LOGIN(o) (CAMEL_CHECK_TYPE((o), CAMEL_SASL_LOGIN_TYPE))
-
-typedef struct _CamelSaslLogin {
- CamelSasl parent_object;
-
- struct _CamelSaslLoginPrivate *priv;
-
-} CamelSaslLogin;
-
-
-typedef struct _CamelSaslLoginClass {
- CamelSaslClass parent_class;
-
-} CamelSaslLoginClass;
-
-
-/* Standard Camel function */
-CamelType camel_sasl_login_get_type (void);
-
-extern CamelServiceAuthType camel_sasl_login_authtype;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_SASL_LOGIN_H */
diff --git a/camel/camel-sasl-plain.c b/camel/camel-sasl-plain.c
deleted file mode 100644
index aea5199b68..0000000000
--- a/camel/camel-sasl-plain.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include "camel-sasl-plain.h"
-#include "camel-service.h"
-
-CamelServiceAuthType camel_sasl_plain_authtype = {
- N_("Password"),
-
- N_("This option will connect to the server using a "
- "simple password."),
-
- "PLAIN",
- TRUE
-};
-
-static CamelSaslClass *parent_class = NULL;
-
-/* Returns the class for a CamelSaslPlain */
-#define CSP_CLASS(so) CAMEL_SASL_PLAIN_CLASS (CAMEL_OBJECT_GET_CLASS (so))
-
-static GByteArray *plain_challenge (CamelSasl *sasl, GByteArray *token, CamelException *ex);
-
-static void
-camel_sasl_plain_class_init (CamelSaslPlainClass *camel_sasl_plain_class)
-{
- CamelSaslClass *camel_sasl_class = CAMEL_SASL_CLASS (camel_sasl_plain_class);
-
- parent_class = CAMEL_SASL_CLASS (camel_type_get_global_classfuncs (camel_sasl_get_type ()));
-
- /* virtual method overload */
- camel_sasl_class->challenge = plain_challenge;
-}
-
-CamelType
-camel_sasl_plain_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_sasl_get_type (),
- "CamelSaslPlain",
- sizeof (CamelSaslPlain),
- sizeof (CamelSaslPlainClass),
- (CamelObjectClassInitFunc) camel_sasl_plain_class_init,
- NULL,
- NULL,
- NULL);
- }
-
- return type;
-}
-
-static GByteArray *
-plain_challenge (CamelSasl *sasl, GByteArray *token, CamelException *ex)
-{
- GByteArray *buf = NULL;
- CamelURL *url = sasl->service->url;
-
-#if 0
- if (token) {
- camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("Authentication failed."));
- return NULL;
- }
-#endif
-
- g_return_val_if_fail (url->passwd != NULL, NULL);
-
- /* FIXME: make sure these are "UTF8-SAFE" */
- buf = g_byte_array_new ();
- g_byte_array_append (buf, "", 1);
- g_byte_array_append (buf, url->user, strlen (url->user));
- g_byte_array_append (buf, "", 1);
- g_byte_array_append (buf, url->passwd, strlen (url->passwd));
-
- sasl->authenticated = TRUE;
-
- return buf;
-}
diff --git a/camel/camel-sasl-plain.h b/camel/camel-sasl-plain.h
deleted file mode 100644
index 1e93ae5c7a..0000000000
--- a/camel/camel-sasl-plain.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef CAMEL_SASL_PLAIN_H
-#define CAMEL_SASL_PLAIN_H
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <camel/camel-sasl.h>
-
-#define CAMEL_SASL_PLAIN_TYPE (camel_sasl_plain_get_type ())
-#define CAMEL_SASL_PLAIN(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SASL_PLAIN_TYPE, CamelSaslPlain))
-#define CAMEL_SASL_PLAIN_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SASL_PLAIN_TYPE, CamelSaslPlainClass))
-#define CAMEL_IS_SASL_PLAIN(o) (CAMEL_CHECK_TYPE((o), CAMEL_SASL_PLAIN_TYPE))
-
-typedef struct _CamelSaslPlain {
- CamelSasl parent_object;
-
-} CamelSaslPlain;
-
-
-typedef struct _CamelSaslPlainClass {
- CamelSaslClass parent_class;
-
-} CamelSaslPlainClass;
-
-
-/* Standard Camel function */
-CamelType camel_sasl_plain_get_type (void);
-
-extern CamelServiceAuthType camel_sasl_plain_authtype;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_SASL_PLAIN_H */
diff --git a/camel/camel-sasl.c b/camel/camel-sasl.c
deleted file mode 100644
index 4d27b37b75..0000000000
--- a/camel/camel-sasl.c
+++ /dev/null
@@ -1,256 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include "camel-sasl.h"
-#include "camel-mime-utils.h"
-#include "camel-service.h"
-
-#include "camel-sasl-cram-md5.h"
-#include "camel-sasl-digest-md5.h"
-#include "camel-sasl-kerberos4.h"
-#include "camel-sasl-login.h"
-#include "camel-sasl-plain.h"
-
-static CamelObjectClass *parent_class = NULL;
-
-/* Returns the class for a CamelSasl */
-#define CS_CLASS(so) CAMEL_SASL_CLASS (CAMEL_OBJECT_GET_CLASS (so))
-
-static GByteArray *sasl_challenge (CamelSasl *sasl, GByteArray *token, CamelException *ex);
-
-static void
-camel_sasl_class_init (CamelSaslClass *camel_sasl_class)
-{
- parent_class = camel_type_get_global_classfuncs (CAMEL_OBJECT_TYPE);
-
- /* virtual method definition */
- camel_sasl_class->challenge = sasl_challenge;
-}
-
-static void
-camel_sasl_finalize (CamelSasl *sasl)
-{
- g_free (sasl->service_name);
- camel_object_unref (CAMEL_OBJECT (sasl->service));
-}
-
-CamelType
-camel_sasl_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (CAMEL_OBJECT_TYPE,
- "CamelSasl",
- sizeof (CamelSasl),
- sizeof (CamelSaslClass),
- (CamelObjectClassInitFunc) camel_sasl_class_init,
- NULL,
- NULL,
- (CamelObjectFinalizeFunc) camel_sasl_finalize);
- }
-
- return type;
-}
-
-
-static GByteArray *
-sasl_challenge (CamelSasl *sasl, GByteArray *token, CamelException *ex)
-{
- g_warning ("sasl_challenge: Using default implementation!");
- return NULL;
-}
-
-/**
- * camel_sasl_challenge:
- * @sasl: a SASL object
- * @token: a token, or %NULL
- * @ex: exception
- *
- * If @token is %NULL, generate the initial SASL message to send to
- * the server. (This will be %NULL if the client doesn't initiate the
- * exchange.) Otherwise, @token is a challenge from the server, and
- * the return value is the response.
- *
- * Return value: The SASL response or %NULL. If an error occurred, @ex
- * will also be set.
- **/
-GByteArray *
-camel_sasl_challenge (CamelSasl *sasl, GByteArray *token, CamelException *ex)
-{
- g_return_val_if_fail (CAMEL_IS_SASL (sasl), NULL);
-
- return CS_CLASS (sasl)->challenge (sasl, token, ex);
-}
-
-/**
- * camel_sasl_challenge_base64:
- * @sasl: a SASL object
- * @token: a base64-encoded token
- * @ex: exception
- *
- * As with camel_sasl_challenge(), but the challenge @token and the
- * response are both base64-encoded.
- *
- * Return value: As with camel_sasl_challenge(), but base64-encoded.
- **/
-char *
-camel_sasl_challenge_base64 (CamelSasl *sasl, const char *token, CamelException *ex)
-{
- GByteArray *token_binary, *ret_binary;
- char *ret;
- int len;
-
- g_return_val_if_fail (CAMEL_IS_SASL (sasl), NULL);
-
- if (token) {
- token_binary = g_byte_array_new ();
- len = strlen (token);
- g_byte_array_append (token_binary, token, len);
- token_binary->len = base64_decode_simple (token_binary->data, len);
- } else
- token_binary = NULL;
-
- ret_binary = camel_sasl_challenge (sasl, token_binary, ex);
- if (token_binary)
- g_byte_array_free (token_binary, TRUE);
- if (!ret_binary)
- return NULL;
-
- ret = base64_encode_simple (ret_binary->data, ret_binary->len);
- g_byte_array_free (ret_binary, TRUE);
-
- return ret;
-}
-
-/**
- * camel_sasl_authenticated:
- * @sasl: a SASL object
- *
- * Return value: whether or not @sasl has successfully authenticated
- * the user. This will be %TRUE after it returns the last needed response.
- * The caller must still pass that information on to the server and verify
- * that it has accepted it.
- **/
-gboolean
-camel_sasl_authenticated (CamelSasl *sasl)
-{
- return sasl->authenticated;
-}
-
-
-/**
- * camel_sasl_new:
- * @service_name: the SASL service name
- * @mechanism: the SASL mechanism
- * @service: the CamelService that will be using this SASL
- *
- * Return value: a new CamelSasl for the given @service_name,
- * @mechanism, and @service, or %NULL if the mechanism is not
- * supported.
- **/
-CamelSasl *
-camel_sasl_new (const char *service_name, const char *mechanism, CamelService *service)
-{
- CamelSasl *sasl;
-
- g_return_val_if_fail (service_name != NULL, NULL);
- g_return_val_if_fail (mechanism != NULL, NULL);
- g_return_val_if_fail (CAMEL_IS_SERVICE (service), NULL);
-
- /* We don't do ANONYMOUS here, because it's a little bit weird. */
-
- if (!strcmp (mechanism, "CRAM-MD5"))
- sasl = (CamelSasl *)camel_object_new (CAMEL_SASL_CRAM_MD5_TYPE);
- else if (!strcmp (mechanism, "DIGEST-MD5"))
- sasl = (CamelSasl *)camel_object_new (CAMEL_SASL_DIGEST_MD5_TYPE);
-#ifdef HAVE_KRB4
- else if (!strcmp (mechanism, "KERBEROS_V4"))
- sasl = (CamelSasl *)camel_object_new (CAMEL_SASL_KERBEROS4_TYPE);
-#endif
- else if (!strcmp (mechanism, "PLAIN"))
- sasl = (CamelSasl *)camel_object_new (CAMEL_SASL_PLAIN_TYPE);
- else if (!strcmp (mechanism, "LOGIN"))
- sasl = (CamelSasl *)camel_object_new (CAMEL_SASL_LOGIN_TYPE);
- else
- return NULL;
-
- sasl->service_name = g_strdup (service_name);
- sasl->service = service;
- camel_object_ref (CAMEL_OBJECT (service));
-
- return sasl;
-}
-
-/**
- * camel_sasl_authtype_list:
- * @include_plain: whether or not to include the PLAIN mechanism
- *
- * Return value: a GList of SASL-supported authtypes. The caller must
- * free the list, but not the contents.
- **/
-GList *
-camel_sasl_authtype_list (gboolean include_plain)
-{
- GList *types = NULL;
-
- types = g_list_prepend (types, &camel_sasl_cram_md5_authtype);
- types = g_list_prepend (types, &camel_sasl_digest_md5_authtype);
-#ifdef HAVE_KRB4
- types = g_list_prepend (types, &camel_sasl_kerberos4_authtype);
-#endif
- if (include_plain)
- types = g_list_prepend (types, &camel_sasl_plain_authtype);
-
- return types;
-}
-
-/**
- * camel_sasl_authtype:
- * @mechanism: the SASL mechanism to get an authtype for
- *
- * Return value: a CamelServiceAuthType for the given mechanism, if
- * it is supported.
- **/
-CamelServiceAuthType *
-camel_sasl_authtype (const char *mechanism)
-{
- if (!strcmp (mechanism, "CRAM-MD5"))
- return &camel_sasl_cram_md5_authtype;
- else if (!strcmp (mechanism, "DIGEST-MD5"))
- return &camel_sasl_digest_md5_authtype;
-#ifdef HAVE_KRB4
- else if (!strcmp (mechanism, "KERBEROS_V4"))
- return &camel_sasl_kerberos4_authtype;
-#endif
- else if (!strcmp (mechanism, "PLAIN"))
- return &camel_sasl_plain_authtype;
- else if (!strcmp (mechanism, "LOGIN"))
- return &camel_sasl_login_authtype;
- else
- return NULL;
-}
diff --git a/camel/camel-sasl.h b/camel/camel-sasl.h
deleted file mode 100644
index 55f2fb9e7c..0000000000
--- a/camel/camel-sasl.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef CAMEL_SASL_H
-#define CAMEL_SASL_H
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <glib.h>
-#include <camel/camel-object.h>
-#include <camel/camel-exception.h>
-#include <camel/camel-service.h>
-
-#define CAMEL_SASL_TYPE (camel_sasl_get_type ())
-#define CAMEL_SASL(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SASL_TYPE, CamelSasl))
-#define CAMEL_SASL_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SASL_TYPE, CamelSaslClass))
-#define CAMEL_IS_SASL(o) (CAMEL_CHECK_TYPE((o), CAMEL_SASL_TYPE))
-
-typedef struct _CamelSasl {
- CamelObject parent_object;
-
- char *service_name;
- CamelService *service;
- gboolean authenticated;
-} CamelSasl;
-
-
-typedef struct _CamelSaslClass {
- CamelObjectClass parent_class;
-
- GByteArray * (*challenge) (CamelSasl *sasl, GByteArray *token, CamelException *ex);
-
-} CamelSaslClass;
-
-
-/* Standard Camel function */
-CamelType camel_sasl_get_type (void);
-
-/* public methods */
-GByteArray *camel_sasl_challenge (CamelSasl *sasl, GByteArray *token, CamelException *ex);
-char *camel_sasl_challenge_base64 (CamelSasl *sasl, const char *token, CamelException *ex);
-
-gboolean camel_sasl_authenticated (CamelSasl *sasl);
-
-/* utility functions */
-CamelSasl *camel_sasl_new (const char *service_name, const char *mechanism, CamelService *service);
-
-GList *camel_sasl_authtype_list (gboolean include_plain);
-CamelServiceAuthType *camel_sasl_authtype (const char *mechanism);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_SASL_H */
diff --git a/camel/camel-search-private.c b/camel/camel-search-private.c
deleted file mode 100644
index 65f6c17ff9..0000000000
--- a/camel/camel-search-private.c
+++ /dev/null
@@ -1,433 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@helixcode.com>
- * Michael Zucchi <NotZed@Ximian.com>
- *
- * Copyright 2000 Helix Code, Inc. (www.helixcode.com)
- * Copyright 2001 Ximian Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-/* (from glibc headers:
- POSIX says that <sys/types.h> must be included (by the caller) before <regex.h>. */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <sys/types.h>
-#include <regex.h>
-#include <string.h>
-#include <ctype.h>
-#include <stdio.h>
-
-#include "camel-exception.h"
-#include "camel-mime-message.h"
-#include "camel-multipart.h"
-#include "camel-stream-mem.h"
-#include "e-util/e-sexp.h"
-
-#include "camel-search-private.h"
-
-#include <gal/unicode/gunicode.h>
-
-#define d(x)
-
-/* builds the regex into pattern */
-/* taken from camel-folder-search, with added isregex & exception parameter */
-/* Basically, we build a new regex, either based on subset regex's, or substrings,
- that can be executed once over the whoel body, to match anything suitable.
- This is more efficient than multiple searches, and probably most (naive) strstr
- implementations, over long content.
-
- A small issue is that case-insenstivity wont work entirely correct for utf8 strings. */
-int
-camel_search_build_match_regex (regex_t *pattern, camel_search_flags_t type, int argc,
- struct _ESExpResult **argv, CamelException *ex)
-{
- GString *match = g_string_new("");
- int c, i, count=0, err;
- char *word;
- int flags;
-
- /* build a regex pattern we can use to match the words, we OR them together */
- if (argc>1)
- g_string_append_c(match, '(');
- for (i=0;i<argc;i++) {
- if (argv[i]->type == ESEXP_RES_STRING) {
- if (count > 0)
- g_string_append_c(match, '|');
-
- word = argv[i]->value.string;
- if (type & CAMEL_SEARCH_MATCH_REGEX) {
- /* no need to escape because this should already be a valid regex */
- g_string_append(match, word);
- } else {
- /* escape any special chars (not sure if this list is complete) */
- if (type & CAMEL_SEARCH_MATCH_START)
- g_string_append_c(match, '^');
- while ((c = *word++)) {
- if (strchr("*\\.()[]^$+", c) != NULL) {
- g_string_append_c(match, '\\');
- }
- g_string_append_c(match, c);
- }
- if (type & CAMEL_SEARCH_MATCH_END)
- g_string_append_c(match, '^');
- }
- count++;
- } else {
- g_warning("Invalid type passed to body-contains match function");
- }
- }
- if (argc>1)
- g_string_append_c(match, ')');
- flags = REG_EXTENDED|REG_NOSUB;
- if (type & CAMEL_SEARCH_MATCH_ICASE)
- flags |= REG_ICASE;
- err = regcomp(pattern, match->str, flags);
- if (err != 0) {
- /* regerror gets called twice to get the full error string
- length to do proper posix error reporting */
- int len = regerror(err, pattern, 0, 0);
- char *buffer = g_malloc0(len + 1);
-
- regerror(err, pattern, buffer, len);
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Regular expression compilation failed: %s: %s"),
- match->str, buffer);
-
- regfree(pattern);
- }
- d(printf("Built regex: '%s'\n", match->str));
- g_string_free(match, TRUE);
- return err;
-}
-
-static unsigned char soundex_table[256] = {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 49, 50, 51, 0, 49, 50, 0, 0, 50, 50, 52, 53, 53, 0,
- 49, 50, 54, 50, 51, 0, 49, 0, 50, 0, 50, 0, 0, 0, 0, 0,
- 0, 0, 49, 50, 51, 0, 49, 50, 0, 0, 50, 50, 52, 53, 53, 0,
- 49, 50, 54, 50, 51, 0, 49, 0, 50, 0, 50, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-};
-
-static void
-soundexify (const gchar *sound, gchar code[5])
-{
- guchar *c, last = '\0';
- gint n;
-
- for (c = (guchar *) sound; *c && !isalpha (*c); c++);
- code[0] = toupper (*c);
- memset (code + 1, '0', 3);
- for (n = 1; *c && n < 5; c++) {
- guchar ch = soundex_table[*c];
-
- if (ch && ch != last) {
- code[n++] = ch;
- last = ch;
- }
- }
- code[4] = '\0';
-}
-
-static gboolean
-header_soundex(const char *header, const char *match)
-{
- char mcode[5], hcode[5];
- const char *p;
- char c;
- GString *word;
- int truth = FALSE;
-
- soundexify(match, mcode);
-
- /* split the header into words, and soundexify and compare each one */
- /* FIXME: Should this convert to utf8, and split based on that, and what not?
- soundex only makes sense for us-ascii though ... */
-
- word = g_string_new("");
- p = header;
- do {
- c = *p++;
- if (c == 0 || isspace(c)) {
- if (word->len > 0) {
- soundexify(word->str, hcode);
- if (strcmp(hcode, mcode) == 0)
- truth = TRUE;
- }
- g_string_truncate(word, 0);
- } else if (isalpha(c))
- g_string_append_c(word, c);
- } while (c && !truth);
- g_string_free(word, TRUE);
-
- return truth;
-}
-
-static gunichar
-utf8_get (const char **inp)
-{
- const unsigned char *p = *inp;
- gunichar c;
-
- g_return_val_if_fail (p != NULL, 0);
-
- c = g_utf8_get_char (p);
- *inp = g_unichar_validate (c) ? g_utf8_next_char (p) : NULL;
-
- return c;
-}
-
-static const char *
-camel_ustrstrcase (const char *haystack, const char *needle)
-{
- gunichar *nuni, *puni;
- gunichar u;
- const char *p;
-
- g_return_val_if_fail (haystack != NULL, NULL);
- g_return_val_if_fail (needle != NULL, NULL);
-
- if (strlen(needle) == 0)
- return haystack;
- if (strlen(haystack) == 0)
- return NULL;
-
- puni = nuni = alloca (sizeof (gunichar) * strlen (needle));
-
- p = needle;
- while ((u = utf8_get (&p)))
- *puni++ = g_unichar_tolower (u);
-
- /* NULL means there was illegal utf-8 sequence */
- if (!p)
- return NULL;
-
- p = haystack;
- while ((u = utf8_get (&p))) {
- gunichar c;
-
- c = g_unichar_tolower (u);
- /* We have valid stripped char */
- if (c == nuni[0]) {
- const gchar *q = p;
- gint npos = 1;
-
- while (nuni + npos < puni) {
- u = utf8_get (&q);
- if (!q || !u)
- return NULL;
-
- c = g_unichar_tolower (u);
- if (c != nuni[npos])
- break;
-
- npos++;
- }
-
- if (nuni + npos == puni)
- return p;
- }
- }
-
- return NULL;
-}
-
-#define CAMEL_SEARCH_COMPARE(x, y, z) G_STMT_START { \
- if ((x) == (z)) { \
- if ((y) == (z)) \
- return 0; \
- else \
- return -1; \
- } else if ((y) == (z)) \
- return 1; \
-} G_STMT_END
-
-static int
-camel_ustrcasecmp (const char *s1, const char *s2)
-{
- gunichar u1, u2 = 0;
-
- CAMEL_SEARCH_COMPARE (s1, s2, NULL);
-
- u1 = utf8_get (&s1);
- u2 = utf8_get (&s2);
- while (u1 && u2) {
- u1 = g_unichar_tolower (u1);
- u2 = g_unichar_tolower (u2);
- if (u1 < u2)
- return -1;
- else if (u1 > u2)
- return 1;
-
- u1 = utf8_get (&s1);
- u2 = utf8_get (&s2);
- }
-
- /* end of one of the strings ? */
- CAMEL_SEARCH_COMPARE (u1, u2, 0);
-
- /* if we have invalid utf8 sequence ? */
- CAMEL_SEARCH_COMPARE (s1, s2, NULL);
-
- return 0;
-}
-
-static int
-camel_ustrncasecmp (const char *s1, const char *s2, size_t len)
-{
- gunichar u1, u2 = 0;
-
- CAMEL_SEARCH_COMPARE (s1, s2, NULL);
-
- u1 = utf8_get (&s1);
- u2 = utf8_get (&s2);
- while (len > 0 && u1 && u2) {
- u1 = g_unichar_tolower (u1);
- u2 = g_unichar_tolower (u2);
- if (u1 < u2)
- return -1;
- else if (u1 > u2)
- return 1;
-
- len--;
- u1 = utf8_get (&s1);
- u2 = utf8_get (&s2);
- }
-
- if (len == 0)
- return 0;
-
- /* end of one of the strings ? */
- CAMEL_SEARCH_COMPARE (u1, u2, 0);
-
- /* if we have invalid utf8 sequence ? */
- CAMEL_SEARCH_COMPARE (s1, s2, NULL);
-
- return 0;
-}
-
-
-/* searhces for match inside value, if match is mixed case, hten use case-sensitive,
- else insensitive */
-gboolean
-camel_search_header_match (const char *value, const char *match, camel_search_match_t how)
-{
- const char *p;
- int vlen, mlen;
-
- while (*value && isspace (*value))
- value++;
-
- if (how == CAMEL_SEARCH_MATCH_SOUNDEX)
- return header_soundex (value, match);
-
- vlen = strlen (value);
- mlen = strlen (match);
- if (vlen < mlen)
- return FALSE;
-
- /* from dan the man, if we have mixed case, perform a case-sensitive match,
- otherwise not */
- p = match;
- while (*p) {
- if (isupper(*p)) {
- switch(how) {
- case CAMEL_SEARCH_MATCH_EXACT:
- return strcmp(value, match) == 0;
- case CAMEL_SEARCH_MATCH_CONTAINS:
- return strstr(value, match) != NULL;
- case CAMEL_SEARCH_MATCH_STARTS:
- return strncmp (value, match, mlen) == 0;
- case CAMEL_SEARCH_MATCH_ENDS:
- return strcmp (value + vlen - mlen, match) == 0;
- default:
- break;
- }
- return FALSE;
- }
- p++;
- }
- switch(how) {
- case CAMEL_SEARCH_MATCH_EXACT:
- return camel_ustrcasecmp(value, match) == 0;
- case CAMEL_SEARCH_MATCH_CONTAINS:
- return camel_ustrstrcase(value, match) != NULL;
- case CAMEL_SEARCH_MATCH_STARTS:
- return camel_ustrncasecmp (value, match, mlen) == 0;
- case CAMEL_SEARCH_MATCH_ENDS:
- return camel_ustrcasecmp (value + vlen - mlen, match) == 0;
- default:
- break;
- }
-
- return FALSE;
-}
-
-/* performs a 'slow' content-based match */
-/* there is also an identical copy of this in camel-filter-search.c */
-gboolean
-camel_search_message_body_contains(CamelDataWrapper *object, regex_t *pattern)
-{
- CamelDataWrapper *containee;
- int truth = FALSE;
- int parts, i;
-
- containee = camel_medium_get_content_object(CAMEL_MEDIUM(object));
-
- if (containee == NULL)
- return FALSE;
-
- /* TODO: I find it odd that get_part and get_content_object do not
- add a reference, probably need fixing for multithreading */
-
- /* using the object types is more accurate than using the mime/types */
- if (CAMEL_IS_MULTIPART(containee)) {
- parts = camel_multipart_get_number(CAMEL_MULTIPART(containee));
- for (i=0;i<parts && truth==FALSE;i++) {
- CamelDataWrapper *part = (CamelDataWrapper *)camel_multipart_get_part(CAMEL_MULTIPART(containee), i);
- if (part)
- truth = camel_search_message_body_contains(part, pattern);
- }
- } else if (CAMEL_IS_MIME_MESSAGE(containee)) {
- /* for messages we only look at its contents */
- truth = camel_search_message_body_contains((CamelDataWrapper *)containee, pattern);
- } else if (header_content_type_is(CAMEL_DATA_WRAPPER(containee)->mime_type, "text", "*")) {
- /* for all other text parts, we look inside, otherwise we dont care */
- CamelStreamMem *mem = (CamelStreamMem *)camel_stream_mem_new();
-
- camel_data_wrapper_write_to_stream(containee, (CamelStream *)mem);
- camel_stream_write((CamelStream *)mem, "", 1);
- truth = regexec(pattern, mem->buffer->data, 0, NULL, 0) == 0;
- camel_object_unref((CamelObject *)mem);
- }
- return truth;
-}
-
diff --git a/camel/camel-search-private.h b/camel/camel-search-private.h
deleted file mode 100644
index aff881f32f..0000000000
--- a/camel/camel-search-private.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2001 Ximian Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef _CAMEL_SEARCH_PRIVATE_H
-#define _CAMEL_SEARCH_PRIVATE_H
-
-typedef enum {
- CAMEL_SEARCH_MATCH_START = 1<<0,
- CAMEL_SEARCH_MATCH_END = 1<<1,
- CAMEL_SEARCH_MATCH_REGEX = 1<<2, /* disables the first 2 */
- CAMEL_SEARCH_MATCH_ICASE = 1<<3,
-} camel_search_flags_t;
-
-typedef enum {
- CAMEL_SEARCH_MATCH_EXACT,
- CAMEL_SEARCH_MATCH_CONTAINS,
- CAMEL_SEARCH_MATCH_STARTS,
- CAMEL_SEARCH_MATCH_ENDS,
- CAMEL_SEARCH_MATCH_SOUNDEX,
-} camel_search_match_t;
-
-/* builds a regex that represents a string search */
-int camel_search_build_match_regex(regex_t *pattern, camel_search_flags_t type, int argc, struct _ESExpResult **argv, CamelException *ex);
-gboolean camel_search_message_body_contains(CamelDataWrapper *object, regex_t *pattern);
-
-gboolean camel_search_header_match(const char *value, const char *match, camel_search_match_t how);
-gboolean camel_search_header_soundex(const char *header, const char *match);
-
-#endif /* ! _CAMEL_SEARCH_PRIVATE_H */
diff --git a/camel/camel-seekable-stream.c b/camel/camel-seekable-stream.c
deleted file mode 100644
index 45a6a6edf4..0000000000
--- a/camel/camel-seekable-stream.c
+++ /dev/null
@@ -1,203 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author:
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "camel-seekable-stream.h"
-
-static CamelStreamClass *parent_class = NULL;
-
-/* Returns the class for a CamelSeekableStream */
-#define CSS_CLASS(so) CAMEL_SEEKABLE_STREAM_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-static off_t seek (CamelSeekableStream *stream, off_t offset,
- CamelStreamSeekPolicy policy);
-static off_t stream_tell (CamelSeekableStream *stream);
-static int reset (CamelStream *stream);
-static int set_bounds (CamelSeekableStream *stream, off_t start, off_t end);
-
-static void
-camel_seekable_stream_class_init (CamelSeekableStreamClass *camel_seekable_stream_class)
-{
- CamelStreamClass *camel_stream_class =
- CAMEL_STREAM_CLASS (camel_seekable_stream_class);
-
- parent_class = CAMEL_STREAM_CLASS( camel_type_get_global_classfuncs( CAMEL_STREAM_TYPE ) );
-
- /* seekable stream methods */
- camel_seekable_stream_class->seek = seek;
- camel_seekable_stream_class->tell = stream_tell;
- camel_seekable_stream_class->set_bounds = set_bounds;
-
- /* camel stream methods overload */
- camel_stream_class->reset = reset;
-}
-
-static void
-camel_seekable_stream_init (void *o)
-{
- CamelSeekableStream *stream = (CamelSeekableStream *)o;
-
- stream->bound_start = 0;
- stream->bound_end = CAMEL_STREAM_UNBOUND;
-}
-
-CamelType
-camel_seekable_stream_get_type (void)
-{
- static CamelType camel_seekable_stream_type = CAMEL_INVALID_TYPE;
-
- if (camel_seekable_stream_type == CAMEL_INVALID_TYPE) {
- camel_seekable_stream_type = camel_type_register( CAMEL_STREAM_TYPE,
- "CamelSeekableStream",
- sizeof( CamelSeekableStream ),
- sizeof( CamelSeekableStreamClass ),
- (CamelObjectClassInitFunc) camel_seekable_stream_class_init,
- NULL,
- (CamelObjectInitFunc) camel_seekable_stream_init,
- NULL );
- }
-
- return camel_seekable_stream_type;
-}
-
-
-static off_t
-seek (CamelSeekableStream *stream, off_t offset,
- CamelStreamSeekPolicy policy)
-{
- g_warning ("CamelSeekableStream::seek called on default "
- "implementation\n");
- return -1;
-}
-
-/**
- * camel_stream_seek:
- * @stream: a CamelStream object.
- * @offset: offset value
- * @policy: what to do with the offset
- *
- * Seek to the specified position in @stream.
- *
- * If @policy is CAMEL_STREAM_SET, seeks to @offset.
- *
- * If @policy is CAMEL_STREAM_CUR, seeks to the current position plus
- * @offset.
- *
- * If @policy is CAMEL_STREAM_END, seeks to the end of the stream plus
- * @offset.
- *
- * Regardless of @policy, the stream's final position will be clamped
- * to the range specified by its lower and upper bounds, and the
- * stream's eos state will be updated.
- *
- * Return value: new position, -1 if operation failed.
- **/
-off_t
-camel_seekable_stream_seek (CamelSeekableStream *stream, off_t offset,
- CamelStreamSeekPolicy policy)
-{
- g_return_val_if_fail (CAMEL_IS_SEEKABLE_STREAM (stream), -1);
-
- return CSS_CLASS (stream)->seek (stream, offset, policy);
-}
-
-
-static off_t
-stream_tell (CamelSeekableStream *stream)
-{
- return stream->position;
-}
-
-/**
- * camel_seekable_stream_tell:
- * @stream: seekable stream object
- *
- * Get the current position of a seekable stream.
- *
- * Return value: the position.
- **/
-off_t
-camel_seekable_stream_tell (CamelSeekableStream *stream)
-{
- g_return_val_if_fail (CAMEL_IS_SEEKABLE_STREAM (stream), -1);
-
- return CSS_CLASS (stream)->tell (stream);
-}
-
-static int
-set_bounds (CamelSeekableStream *stream, off_t start, off_t end)
-{
- /* store the bounds */
- stream->bound_start = start;
- stream->bound_end = end;
-
- if (start > stream->position)
- return camel_seekable_stream_seek (stream, start, CAMEL_STREAM_SET);
-
- return 0;
-}
-
-/**
- * camel_seekable_stream_set_bounds:
- * @stream: a seekable stream
- * @start: the first valid position
- * @end: the first invalid position, or CAMEL_STREAM_UNBOUND
- *
- * Set the range of valid data this stream is allowed to cover. If
- * there is to be no @end value, then @end should be set to
- * #CAMEL_STREAM_UNBOUND.
- *
- * Return value: -1 on error.
- **/
-int
-camel_seekable_stream_set_bounds (CamelSeekableStream *stream,
- off_t start, off_t end)
-{
- g_return_val_if_fail (CAMEL_IS_SEEKABLE_STREAM (stream), -1);
- g_return_val_if_fail (end == CAMEL_STREAM_UNBOUND || end >= start, -1);
-
- return CSS_CLASS (stream)->set_bounds (stream, start, end);
-}
-
-/* a default implementation of reset for seekable streams */
-static int
-reset (CamelStream *stream)
-{
- CamelSeekableStream *seekable_stream;
-
- seekable_stream = CAMEL_SEEKABLE_STREAM (stream);
-
- return camel_seekable_stream_seek (seekable_stream,
- seekable_stream->bound_start,
- CAMEL_STREAM_SET);
-}
-
-
-
-
-
-
diff --git a/camel/camel-seekable-stream.h b/camel/camel-seekable-stream.h
deleted file mode 100644
index 3c0eb24a5c..0000000000
--- a/camel/camel-seekable-stream.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-stream-fs.h :stream based on unix filesystem */
-
-/*
- * Author:
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_SEEKABLE_STREAM_H
-#define CAMEL_SEEKABLE_STREAM_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <sys/types.h>
-#include <unistd.h>
-#include <camel/camel-stream.h>
-
-#define CAMEL_SEEKABLE_STREAM_TYPE (camel_seekable_stream_get_type ())
-#define CAMEL_SEEKABLE_STREAM(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SEEKABLE_STREAM_TYPE, CamelSeekableStream))
-#define CAMEL_SEEKABLE_STREAM_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SEEKABLE_STREAM_TYPE, CamelSeekableStreamClass))
-#define CAMEL_IS_SEEKABLE_STREAM(o) (CAMEL_CHECK_TYPE((o), CAMEL_SEEKABLE_STREAM_TYPE))
-
-
-typedef enum
-{
- CAMEL_STREAM_SET = SEEK_SET,
- CAMEL_STREAM_CUR = SEEK_CUR,
- CAMEL_STREAM_END = SEEK_END
-} CamelStreamSeekPolicy;
-
-#define CAMEL_STREAM_UNBOUND (~0)
-
-struct _CamelSeekableStream
-{
- CamelStream parent_object;
-
- off_t position; /* current postion in the stream */
- off_t bound_start; /* first valid position */
- off_t bound_end; /* first invalid position */
-};
-
-typedef struct {
- CamelStreamClass parent_class;
-
- /* Virtual methods */
- off_t (*seek) (CamelSeekableStream *stream, off_t offset,
- CamelStreamSeekPolicy policy);
- off_t (*tell) (CamelSeekableStream *stream);
- int (*set_bounds) (CamelSeekableStream *stream,
- off_t start, off_t end);
-} CamelSeekableStreamClass;
-
-/* Standard Camel function */
-CamelType camel_seekable_stream_get_type (void);
-
-/* public methods */
-off_t camel_seekable_stream_seek (CamelSeekableStream *stream, off_t offset,
- CamelStreamSeekPolicy policy);
-off_t camel_seekable_stream_tell (CamelSeekableStream *stream);
-int camel_seekable_stream_set_bounds (CamelSeekableStream *, off_t start, off_t end);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_SEEKABLE_STREAM_H */
diff --git a/camel/camel-seekable-substream.c b/camel/camel-seekable-substream.c
deleted file mode 100644
index d2990b6b80..0000000000
--- a/camel/camel-seekable-substream.c
+++ /dev/null
@@ -1,304 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-stream-fs.c : file system based stream
- *
- * Authors: Bertrand Guiheneuf <bertrand@helixcode.com>
- * Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "camel-seekable-substream.h"
-
-static CamelSeekableStreamClass *parent_class = NULL;
-
-/* Returns the class for a CamelSeekableSubStream */
-#define CSS_CLASS(so) CAMEL_SEEKABLE_SUBSTREAM_CLASS (CAMEL_OBJECT(so)->klass)
-
-static int stream_read (CamelStream *stream, char *buffer, unsigned int n);
-static int stream_write (CamelStream *stream, const char *buffer, unsigned int n);
-static int stream_flush (CamelStream *stream);
-static int stream_close (CamelStream *stream);
-static gboolean eos (CamelStream *stream);
-static off_t stream_seek (CamelSeekableStream *stream, off_t offset,
- CamelStreamSeekPolicy policy);
-
-static void
-camel_seekable_substream_class_init (CamelSeekableSubstreamClass *camel_seekable_substream_class)
-{
- CamelSeekableStreamClass *camel_seekable_stream_class =
- CAMEL_SEEKABLE_STREAM_CLASS (camel_seekable_substream_class);
- CamelStreamClass *camel_stream_class =
- CAMEL_STREAM_CLASS (camel_seekable_substream_class);
-
- parent_class = CAMEL_SEEKABLE_STREAM_CLASS (camel_type_get_global_classfuncs (camel_seekable_stream_get_type ()));
-
- /* virtual method definition */
-
- /* virtual method overload */
- camel_stream_class->read = stream_read;
- camel_stream_class->write = stream_write;
- camel_stream_class->flush = stream_flush;
- camel_stream_class->close = stream_close;
- camel_stream_class->eos = eos;
-
- camel_seekable_stream_class->seek = stream_seek;
-
-}
-
-static void
-camel_seekable_substream_finalize (CamelObject *object)
-{
- CamelSeekableSubstream *seekable_substream =
- CAMEL_SEEKABLE_SUBSTREAM (object);
-
- if (seekable_substream->parent_stream)
- camel_object_unref (CAMEL_OBJECT (seekable_substream->parent_stream));
-}
-
-
-CamelType
-camel_seekable_substream_get_type (void)
-{
- static CamelType camel_seekable_substream_type = CAMEL_INVALID_TYPE;
-
- if (camel_seekable_substream_type == CAMEL_INVALID_TYPE) {
- camel_seekable_substream_type = camel_type_register (camel_seekable_stream_get_type (), "CamelSeekableSubstream",
- sizeof (CamelSeekableSubstream),
- sizeof (CamelSeekableSubstreamClass),
- (CamelObjectClassInitFunc) camel_seekable_substream_class_init,
- NULL,
- NULL,
- (CamelObjectFinalizeFunc) camel_seekable_substream_finalize);
- }
-
- return camel_seekable_substream_type;
-}
-
-/**
- * camel_seekable_substream_new_with_seekable_stream_and_bounds:
- * @parent_stream: a seekable parent stream
- * @inf_bound: a lower bound
- * @sup_bound: an upper bound
- *
- * Creates a new CamelSeekableSubstream that references the portion
- * of @parent_stream from @inf_bound to @sup_bound. (If @sup_bound is
- * #CAMEL_STREAM_UNBOUND, it references to the end of stream, even if
- * the stream grows.)
- *
- * While the substream is open, the caller cannot assume anything about
- * the current position of @parent_stream. After the substream has been
- * closed, @parent_stream will stabilize again.
- *
- * Return value: the substream
- **/
-CamelStream *
-camel_seekable_substream_new_with_seekable_stream_and_bounds (CamelSeekableStream *parent_stream,
- off_t start, off_t end)
-{
- CamelSeekableSubstream *seekable_substream;
-
- g_return_val_if_fail (CAMEL_IS_SEEKABLE_STREAM (parent_stream), NULL);
-
- /* Create the seekable substream. */
- seekable_substream = CAMEL_SEEKABLE_SUBSTREAM (camel_object_new (camel_seekable_substream_get_type ()));
-
- /* Initialize it. */
- seekable_substream->parent_stream = parent_stream;
- camel_object_ref (CAMEL_OBJECT (parent_stream));
-
- /* Set the bound of the substream. We can ignore any possible error
- * here, because if we fail to seek now, it will try again later.
- */
- camel_seekable_stream_set_bounds ((CamelSeekableStream *)seekable_substream, start, end);
-
- return CAMEL_STREAM (seekable_substream);
-}
-
-static gboolean
-parent_reset (CamelSeekableSubstream *seekable_substream, CamelSeekableStream *parent)
-{
- CamelSeekableStream *seekable_stream = CAMEL_SEEKABLE_STREAM (seekable_substream);
-
- if (camel_seekable_stream_tell (parent) == seekable_stream->position)
- return TRUE;
-
- return camel_seekable_stream_seek (parent, seekable_stream->position, CAMEL_STREAM_SET) == seekable_stream->position;
-}
-
-static int
-stream_read (CamelStream *stream, char *buffer, unsigned int n)
-{
- CamelSeekableStream *parent;
- CamelSeekableStream *seekable_stream = CAMEL_SEEKABLE_STREAM (stream);
- CamelSeekableSubstream *seekable_substream = CAMEL_SEEKABLE_SUBSTREAM (stream);
- int v;
-
- if (n == 0)
- return 0;
-
- parent = seekable_substream->parent_stream;
-
- /* Go to our position in the parent stream. */
- if (!parent_reset (seekable_substream, parent)) {
- stream->eos = TRUE;
- return 0;
- }
-
- /* Compute how many bytes should be read. */
- if (seekable_stream->bound_end != CAMEL_STREAM_UNBOUND)
- n = MIN (seekable_stream->bound_end - seekable_stream->position, n);
-
- if (n == 0) {
- stream->eos = TRUE;
- return 0;
- }
-
- v = camel_stream_read (CAMEL_STREAM (parent), buffer, n);
-
- /* ignore <0 - it's an error, let the caller deal */
- if (v > 0)
- seekable_stream->position += v;
-
- return v;
-}
-
-static int
-stream_write (CamelStream *stream, const char *buffer, unsigned int n)
-{
- CamelSeekableStream *parent;
- CamelSeekableStream *seekable_stream = CAMEL_SEEKABLE_STREAM(stream);
- CamelSeekableSubstream *seekable_substream = CAMEL_SEEKABLE_SUBSTREAM(stream);
- int v;
-
- if (n == 0)
- return 0;
-
- parent = seekable_substream->parent_stream;
-
- /* Go to our position in the parent stream. */
- if (!parent_reset (seekable_substream, parent)) {
- stream->eos = TRUE;
- return 0;
- }
-
- /* Compute how many bytes should be written. */
- if (seekable_stream->bound_end != CAMEL_STREAM_UNBOUND)
- n = MIN (seekable_stream->bound_end - seekable_stream->position, n);
-
- if (n == 0) {
- stream->eos = TRUE;
- return 0;
- }
-
- v = camel_stream_write((CamelStream *)parent, buffer, n);
-
- /* ignore <0 - it's an error, let the caller deal */
- if (v > 0)
- seekable_stream->position += v;
-
- return v;
-
-}
-
-static int
-stream_flush (CamelStream *stream)
-{
- CamelSeekableSubstream *sus = (CamelSeekableSubstream *)stream;
-
- return camel_stream_flush(CAMEL_STREAM(sus->parent_stream));
-}
-
-static int
-stream_close (CamelStream *stream)
-{
- /* we dont really want to close the substream ... */
- return 0;
-}
-
-static gboolean
-eos (CamelStream *stream)
-{
- CamelSeekableSubstream *seekable_substream = CAMEL_SEEKABLE_SUBSTREAM(stream);
- CamelSeekableStream *seekable_stream = CAMEL_SEEKABLE_STREAM(stream);
- CamelSeekableStream *parent;
- gboolean eos;
-
- if (stream->eos)
- eos = TRUE;
- else {
- parent = seekable_substream->parent_stream;
- if (!parent_reset (seekable_substream, parent))
- return TRUE;
-
- eos = camel_stream_eos (CAMEL_STREAM (parent));
- if (!eos && (seekable_stream->bound_end != CAMEL_STREAM_UNBOUND)) {
- eos = seekable_stream->position >= seekable_stream->bound_end;
- }
- }
-
- return eos;
-}
-
-static off_t
-stream_seek (CamelSeekableStream *seekable_stream, off_t offset,
- CamelStreamSeekPolicy policy)
-{
- CamelSeekableSubstream *seekable_substream = CAMEL_SEEKABLE_SUBSTREAM(seekable_stream);
- CamelStream *stream = CAMEL_STREAM(seekable_stream);
- off_t real_offset = 0;
-
- stream->eos = FALSE;
-
- switch (policy) {
- case CAMEL_STREAM_SET:
- real_offset = offset;
- break;
-
- case CAMEL_STREAM_CUR:
- real_offset = seekable_stream->position + offset;
- break;
-
- case CAMEL_STREAM_END:
- if (seekable_stream->bound_end == CAMEL_STREAM_UNBOUND) {
- real_offset = camel_seekable_stream_seek(seekable_substream->parent_stream,
- offset,
- CAMEL_STREAM_END);
- if (real_offset != -1) {
- if (real_offset<seekable_stream->bound_start)
- real_offset = seekable_stream->bound_start;
- seekable_stream->position = real_offset;
- }
- return real_offset;
- }
- real_offset = seekable_stream->bound_end + offset;
- break;
- }
-
- if (seekable_stream->bound_end != CAMEL_STREAM_UNBOUND)
- real_offset = MIN (real_offset, seekable_stream->bound_end);
-
- if (real_offset<seekable_stream->bound_start)
- real_offset = seekable_stream->bound_start;
-
- seekable_stream->position = real_offset;
- return real_offset;
-}
diff --git a/camel/camel-seekable-substream.h b/camel/camel-seekable-substream.h
deleted file mode 100644
index 6ac5588a42..0000000000
--- a/camel/camel-seekable-substream.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-seekable-substream.h: stream that piggybacks on another stream */
-
-/*
- * Author:
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_SEEKABLE_SUBSTREAM_H
-#define CAMEL_SEEKABLE_SUBSTREAM_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <camel/camel-seekable-stream.h>
-
-#define CAMEL_SEEKABLE_SUBSTREAM_TYPE (camel_seekable_substream_get_type ())
-#define CAMEL_SEEKABLE_SUBSTREAM(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SEEKABLE_SUBSTREAM_TYPE, CamelSeekableSubstream))
-#define CAMEL_SEEKABLE_SUBSTREAM_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SEEKABLE_SUBSTREAM_TYPE, CamelSeekableSubstreamClass))
-#define CAMEL_IS_SEEKABLE_SUBSTREAM(o) (CAMEL_CHECK_TYPE((o), CAMEL_SEEKABLE_SUBSTREAM_TYPE))
-
-struct _CamelSeekableSubstream
-{
- CamelSeekableStream parent_object;
-
- /* --**-- Private fields --**-- */
- CamelSeekableStream *parent_stream;
-};
-
-typedef struct {
- CamelSeekableStreamClass parent_class;
-
-} CamelSeekableSubstreamClass;
-
-/* Standard Camel function */
-CamelType camel_seekable_substream_get_type (void);
-
-/* public methods */
-
-/* obtain a new seekable substream */
-CamelStream *
-camel_seekable_substream_new_with_seekable_stream_and_bounds (CamelSeekableStream *parent_stream,
- off_t start, off_t end);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_SEEKABLE_SUBSTREAM_H */
diff --git a/camel/camel-service.c b/camel/camel-service.c
deleted file mode 100644
index 7c31bde274..0000000000
--- a/camel/camel-service.c
+++ /dev/null
@@ -1,624 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-service.c : Abstract class for an email service */
-
-/*
- *
- * Author :
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-#ifdef ENABLE_THREADS
-#include <pthread.h>
-#include "e-util/e-msgport.h"
-#endif
-
-#include "e-util/e-host-utils.h"
-
-#include "camel-service.h"
-#include "camel-session.h"
-#include "camel-exception.h"
-#include "camel-operation.h"
-#include "camel-private.h"
-
-#define d(x)
-
-static CamelObjectClass *parent_class = NULL;
-
-/* Returns the class for a CamelService */
-#define CSERV_CLASS(so) CAMEL_SERVICE_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-static void construct (CamelService *service, CamelSession *session,
- CamelProvider *provider, CamelURL *url,
- CamelException *ex);
-static gboolean service_connect(CamelService *service, CamelException *ex);
-static gboolean service_disconnect(CamelService *service, gboolean clean,
- CamelException *ex);
-/*static gboolean is_connected (CamelService *service);*/
-static GList * query_auth_types (CamelService *service, CamelException *ex);
-static char * get_name (CamelService *service, gboolean brief);
-static char * get_path (CamelService *service);
-
-
-static void
-camel_service_class_init (CamelServiceClass *camel_service_class)
-{
- parent_class = camel_type_get_global_classfuncs (CAMEL_OBJECT_TYPE);
-
- /* virtual method definition */
- camel_service_class->construct = construct;
- camel_service_class->connect = service_connect;
- camel_service_class->disconnect = service_disconnect;
- camel_service_class->query_auth_types = query_auth_types;
- camel_service_class->get_name = get_name;
- camel_service_class->get_path = get_path;
-}
-
-static void
-camel_service_init (void *o, void *k)
-{
- CamelService *service = o;
-
- service->priv = g_malloc0(sizeof(*service->priv));
-#ifdef ENABLE_THREADS
- service->priv->connect_lock = e_mutex_new(E_MUTEX_REC);
-#endif
-}
-
-static void
-camel_service_finalize (CamelObject *object)
-{
- CamelService *camel_service = CAMEL_SERVICE (object);
-
- if (camel_service->connected) {
- CamelException ex;
-
- /*g_warning ("camel_service_finalize: finalizing while still connected!");*/
- camel_exception_init (&ex);
- CSERV_CLASS (camel_service)->disconnect (camel_service, FALSE, &ex);
- if (camel_exception_is_set (&ex)) {
- g_warning ("camel_service_finalize: silent disconnect failure: %s",
- camel_exception_get_description(&ex));
- }
- camel_exception_clear (&ex);
- }
-
- if (camel_service->url)
- camel_url_free (camel_service->url);
- if (camel_service->session)
- camel_object_unref (CAMEL_OBJECT (camel_service->session));
-
-#ifdef ENABLE_THREADS
- e_mutex_destroy(camel_service->priv->connect_lock);
-#endif
- g_free(camel_service->priv);
-}
-
-
-
-CamelType
-camel_service_get_type (void)
-{
- static CamelType camel_service_type = CAMEL_INVALID_TYPE;
-
- if (camel_service_type == CAMEL_INVALID_TYPE) {
- camel_service_type =
- camel_type_register (CAMEL_OBJECT_TYPE, "CamelService",
- sizeof (CamelService),
- sizeof (CamelServiceClass),
- (CamelObjectClassInitFunc) camel_service_class_init,
- NULL,
- (CamelObjectInitFunc) camel_service_init,
- camel_service_finalize );
- }
-
- return camel_service_type;
-}
-
-
-static void
-construct (CamelService *service, CamelSession *session,
- CamelProvider *provider, CamelURL *url, CamelException *ex)
-{
- char *url_string;
-
- if (CAMEL_PROVIDER_NEEDS (provider, CAMEL_URL_PART_USER) &&
- (url->user == NULL || url->user[0] == '\0')) {
- url_string = camel_url_to_string (url, CAMEL_URL_HIDE_PASSWORD);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_URL_INVALID,
- _("URL '%s' needs a username component"),
- url_string);
- g_free (url_string);
- return;
- } else if (CAMEL_PROVIDER_NEEDS (provider, CAMEL_URL_PART_HOST) &&
- (url->host == NULL || url->host[0] == '\0')) {
- url_string = camel_url_to_string (url, CAMEL_URL_HIDE_PASSWORD);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_URL_INVALID,
- _("URL '%s' needs a host component"),
- url_string);
- g_free (url_string);
- return;
- } else if (CAMEL_PROVIDER_NEEDS (provider, CAMEL_URL_PART_PATH) &&
- (url->path == NULL || url->path[0] == '\0')) {
- url_string = camel_url_to_string (url, CAMEL_URL_HIDE_PASSWORD);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_URL_INVALID,
- _("URL '%s' needs a path component"),
- url_string);
- g_free (url_string);
- return;
- }
-
- service->provider = provider;
- service->url = url;
- service->session = session;
- camel_object_ref (CAMEL_OBJECT (session));
-
- service->connected = FALSE;
-}
-
-/**
- * camel_service_construct:
- * @service: the CamelService
- * @session: the session for the service
- * @provider: the service's provider
- * @url: the default URL for the service (may be NULL)
- * @ex: a CamelException
- *
- * Constructs a CamelService initialized with the given parameters.
- **/
-void
-camel_service_construct (CamelService *service, CamelSession *session,
- CamelProvider *provider, CamelURL *url,
- CamelException *ex)
-{
- g_return_if_fail (CAMEL_IS_SERVICE (service));
- g_return_if_fail (CAMEL_IS_SESSION (session));
-
- CSERV_CLASS (service)->construct (service, session, provider, url, ex);
-}
-
-
-static gboolean
-service_connect (CamelService *service, CamelException *ex)
-{
- /* Things like the CamelMboxStore can validly
- * not define a connect function.
- */
- return TRUE;
-}
-
-/**
- * camel_service_connect:
- * @service: CamelService object
- * @ex: a CamelException
- *
- * Connect to the service using the parameters it was initialized
- * with.
- *
- * Return value: whether or not the connection succeeded
- **/
-
-gboolean
-camel_service_connect (CamelService *service, CamelException *ex)
-{
- gboolean ret = FALSE;
-
- g_return_val_if_fail (CAMEL_IS_SERVICE (service), FALSE);
- g_return_val_if_fail (service->session != NULL, FALSE);
- g_return_val_if_fail (service->url != NULL, FALSE);
-
- CAMEL_SERVICE_LOCK(service, connect_lock);
-
- if (service->connected) {
- /* But we're still connected, so no exception
- * and return true.
- */
- g_warning ("camel_service_connect: trying to connect to an already connected service");
- ret = TRUE;
- } else if (CSERV_CLASS (service)->connect (service, ex)) {
- service->connected = TRUE;
- ret = TRUE;
- }
-
- CAMEL_SERVICE_UNLOCK(service, connect_lock);
-
- return ret;
-}
-
-static gboolean
-service_disconnect (CamelService *service, gboolean clean, CamelException *ex)
-{
- /*service->connect_level--;*/
-
- /* We let people get away with not having a disconnect
- * function -- CamelMboxStore, for example.
- */
-
- return TRUE;
-}
-
-/**
- * camel_service_disconnect:
- * @service: CamelService object
- * @clean: whether or not to try to disconnect cleanly.
- * @ex: a CamelException
- *
- * Disconnect from the service. If @clean is %FALSE, it should not
- * try to do any synchronizing or other cleanup of the connection.
- *
- * Return value: whether or not the disconnection succeeded without
- * errors. (Consult @ex if %FALSE.)
- **/
-gboolean
-camel_service_disconnect (CamelService *service, gboolean clean,
- CamelException *ex)
-{
- gboolean res = TRUE;
-
- CAMEL_SERVICE_LOCK(service, connect_lock);
-
- if (service->connected) {
- res = CSERV_CLASS (service)->disconnect (service, clean, ex);
- service->connected = FALSE;
- }
-
- CAMEL_SERVICE_UNLOCK(service, connect_lock);
-
- return res;
-}
-
-/**
- * camel_service_get_url:
- * @service: a service
- *
- * Returns the URL representing a service. The returned URL must be
- * freed when it is no longer needed. For security reasons, this
- * routine does not return the password.
- *
- * Return value: the url name
- **/
-char *
-camel_service_get_url (CamelService *service)
-{
- return camel_url_to_string(service->url, FALSE);
-}
-
-
-static char *
-get_name (CamelService *service, gboolean brief)
-{
- g_warning ("CamelService::get_name not implemented for `%s'",
- camel_type_to_name (CAMEL_OBJECT_GET_TYPE (service)));
- return g_strdup ("???");
-}
-
-/**
- * camel_service_get_name:
- * @service: the service
- * @brief: whether or not to use a briefer form
- *
- * This gets the name of the service in a "friendly" (suitable for
- * humans) form. If @brief is %TRUE, this should be a brief description
- * such as for use in the folder tree. If @brief is %FALSE, it should
- * be a more complete and mostly unambiguous description.
- *
- * Return value: the description, which the caller must free.
- **/
-char *
-camel_service_get_name (CamelService *service, gboolean brief)
-{
- g_return_val_if_fail (CAMEL_IS_SERVICE (service), NULL);
- g_return_val_if_fail (service->url, NULL);
-
- return CSERV_CLASS (service)->get_name (service, brief);
-}
-
-
-static char *
-get_path (CamelService *service)
-{
- GString *gpath;
- char *path;
- CamelURL *url = service->url;
- CamelProvider *prov = service->provider;
-
- /* A sort of ad-hoc default implementation that works for our
- * current set of services.
- */
-
- gpath = g_string_new (service->provider->protocol);
- if (CAMEL_PROVIDER_ALLOWS (prov, CAMEL_URL_PART_USER)) {
- if (CAMEL_PROVIDER_ALLOWS (prov, CAMEL_URL_PART_HOST)) {
- g_string_sprintfa (gpath, "/%s@%s",
- url->user ? url->user : "",
- url->host ? url->host : "");
-
- if (url->port)
- g_string_sprintfa (gpath, ":%d", url->port);
- } else {
- g_string_sprintfa (gpath, "/%s%s",
- url->user ? url->user : "",
- CAMEL_PROVIDER_NEEDS (prov, CAMEL_URL_PART_USER) ? "" : "@");
- }
- } else if (CAMEL_PROVIDER_ALLOWS (prov, CAMEL_URL_PART_HOST)) {
- g_string_sprintfa (gpath, "/%s%s",
- CAMEL_PROVIDER_NEEDS (prov, CAMEL_URL_PART_HOST) ? "" : "@",
- url->host ? url->host : "");
-
- if (url->port)
- g_string_sprintfa (gpath, ":%d", url->port);
- }
- if (CAMEL_PROVIDER_NEEDS (prov, CAMEL_URL_PART_PATH)) {
- g_string_sprintfa (gpath, "%s%s",
- *url->path == '/' ? "" : "/",
- url->path);
- }
-
- path = gpath->str;
- g_string_free (gpath, FALSE);
- return path;
-}
-
-/**
- * camel_service_get_path:
- * @service: the service
- *
- * This gets a valid UNIX relative path describing the service, which
- * is guaranteed to be different from the path returned for any
- * different service. This path MUST start with the name of the
- * provider, followed by a "/", but after that, it is up to the
- * provider.
- *
- * Return value: the path, which the caller must free.
- **/
-char *
-camel_service_get_path (CamelService *service)
-{
- g_return_val_if_fail (CAMEL_IS_SERVICE (service), NULL);
- g_return_val_if_fail (service->url, NULL);
-
- return CSERV_CLASS (service)->get_path (service);
-}
-
-
-/**
- * camel_service_get_session:
- * @service: a service
- *
- * Returns the CamelSession associated with the service.
- *
- * Return value: the session
- **/
-CamelSession *
-camel_service_get_session (CamelService *service)
-{
- return service->session;
-}
-
-/**
- * camel_service_get_provider:
- * @service: a service
- *
- * Returns the CamelProvider associated with the service.
- *
- * Return value: the provider
- **/
-CamelProvider *
-camel_service_get_provider (CamelService *service)
-{
- return service->provider;
-}
-
-static GList *
-query_auth_types (CamelService *service, CamelException *ex)
-{
- return NULL;
-}
-
-/**
- * camel_service_query_auth_types:
- * @service: a CamelService
- * @ex: a CamelException
- *
- * This is used by the mail source wizard to get the list of
- * authentication types supported by the protocol, and information
- * about them.
- *
- * Return value: a list of CamelServiceAuthType records. The caller
- * must free the list with g_list_free() when it is done with it.
- **/
-GList *
-camel_service_query_auth_types (CamelService *service, CamelException *ex)
-{
- GList *ret;
-
- /* note that we get the connect lock here, which means the callee
- must not call the connect functions itself */
- CAMEL_SERVICE_LOCK(service, connect_lock);
- ret = CSERV_CLASS (service)->query_auth_types (service, ex);
- CAMEL_SERVICE_UNLOCK(service, connect_lock);
-
- return ret;
-}
-
-/* URL utility routines */
-
-/**
- * camel_service_gethost:
- * @service: a CamelService
- * @ex: a CamelException
- *
- * This is a convenience function to do a gethostbyname on the host
- * for the service's URL.
- *
- * Return value: a (statically-allocated) hostent.
- **/
-struct hostent *
-camel_service_gethost (CamelService *service, CamelException *ex)
-{
- char *hostname;
-
- if (service->url->host)
- hostname = service->url->host;
- else
- hostname = "localhost";
-
- return camel_get_host_byname(hostname, ex);
-}
-
-#ifdef offsetof
-#define STRUCT_OFFSET(type, field) ((gint) offsetof (type, field))
-#else
-#define STRUCT_OFFSET(type, field) ((gint) ((gchar*) &((type *) 0)->field))
-#endif
-
-struct _lookup_msg {
-#ifdef ENABLE_THREADS
- EMsg msg;
-#endif
- const char *name;
- int result;
- int herr;
- struct hostent hostbuf;
- int hostbuflen;
- char *hostbufmem;
-};
-
-static void *
-get_host(void *data)
-{
- struct _lookup_msg *info = data;
-
- while ((info->result = e_gethostbyname_r(info->name, &info->hostbuf, info->hostbufmem, info->hostbuflen, &info->herr)) == ERANGE) {
- d(printf("gethostbyname fialed?\n"));
-#ifdef ENABLE_THREADS
- pthread_testcancel();
-#endif
- info->hostbuflen *= 2;
- info->hostbufmem = g_realloc(info->hostbufmem, info->hostbuflen);
- }
-
- d(printf("gethostbyname ok?\n"));
-
-#ifdef ENABLE_THREADS
- e_msgport_reply((EMsg *)info);
-#endif
- return NULL;
-}
-
-struct hostent *camel_get_host_byname(const char *name, CamelException *ex)
-{
-#ifdef ENABLE_THREADS
- int fdmax, fd, cancel_fd;
-#endif
- struct _lookup_msg *msg;
-
- g_return_val_if_fail(name != NULL, NULL);
-
- if (camel_operation_cancel_check(NULL)) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_USER_CANCEL, _("Cancelled"));
- return NULL;
- }
-
- camel_operation_start(NULL, _("Resolving: %s"), name);
-
- msg = g_malloc0(sizeof(*msg));
- msg->hostbuflen = 1024;
- msg->hostbufmem = g_malloc(msg->hostbuflen);
- msg->name = name;
-
-#ifdef ENABLE_THREADS
- cancel_fd = camel_operation_cancel_fd(NULL);
- if (cancel_fd == -1) {
-#endif
- get_host(msg);
-#ifdef ENABLE_THREADS
- } else {
- EMsgPort *reply_port;
- pthread_t id;
- fd_set rdset;
-
- reply_port = msg->msg.reply_port = e_msgport_new();
- fd = e_msgport_fd(msg->msg.reply_port);
- if (pthread_create(&id, NULL, get_host, msg) == 0) {
- FD_ZERO(&rdset);
- FD_SET(cancel_fd, &rdset);
- FD_SET(fd, &rdset);
- fdmax = MAX(fd, cancel_fd) + 1;
- d(printf("waiting for name return/cancellation in main process\n"));
- if (select(fdmax, &rdset, NULL, 0, NULL) == -1) {
- camel_exception_setv(ex, 1, _("Failure in name lookup: %s"), strerror(errno));
- d(printf("Cancelling lookup thread\n"));
- pthread_cancel(id);
- } else if (FD_ISSET(cancel_fd, &rdset)) {
- d(printf("Cancelling lookup thread\n"));
- camel_exception_setv(ex, CAMEL_EXCEPTION_USER_CANCEL, _("Cancelled"));
- pthread_cancel(id);
- } else {
- struct _lookup_msg *reply = (struct _lookup_msg *)e_msgport_get(reply_port);
-
- g_assert(reply == msg);
- }
- d(printf("waiting for child to exit\n"));
- pthread_join(id, NULL);
- d(printf("child done\n"));
- }
- e_msgport_destroy(reply_port);
- }
-#endif
-
- camel_operation_end(NULL);
-
- if (msg->herr) {
- if (!camel_exception_is_set(ex)) {
- if (msg->herr == HOST_NOT_FOUND || msg->herr == NO_DATA)
- camel_exception_setv(ex, 1, _("Host lookup failed: %s: host not found"), name);
- else
- camel_exception_setv(ex, 1, _("Host lookup failed: %s: unknown reason"), name);
- }
- g_free(msg->hostbufmem);
- g_free(msg);
- return NULL;
- } else {
- return &msg->hostbuf;
- }
-}
-
-void camel_free_host(struct hostent *h)
-{
- struct _lookup_msg *msg;
-
- g_return_if_fail(h != NULL);
-
- /* yeah this looks ugly but it is safe. we passed out a reference to inside our structure, this maps it
- to the base structure, so we can free everything right without having to keep track of it separately */
- msg = (struct _lookup_msg *)(((char *)h) - STRUCT_OFFSET(struct _lookup_msg, hostbuf));
-
- g_free(msg->hostbufmem);
- g_free(msg);
-}
diff --git a/camel/camel-service.h b/camel/camel-service.h
deleted file mode 100644
index 64574123d5..0000000000
--- a/camel/camel-service.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-service.h : Abstract class for an email service */
-
-/*
- *
- * Author :
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_SERVICE_H
-#define CAMEL_SERVICE_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <netdb.h>
-#include <camel/camel-object.h>
-#include <camel/camel-url.h>
-#include <camel/camel-provider.h>
-
-#define CAMEL_SERVICE_TYPE (camel_service_get_type ())
-#define CAMEL_SERVICE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SERVICE_TYPE, CamelService))
-#define CAMEL_SERVICE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SERVICE_TYPE, CamelServiceClass))
-#define CAMEL_IS_SERVICE(o) (CAMEL_CHECK_TYPE((o), CAMEL_SERVICE_TYPE))
-
-
-struct _CamelService {
- CamelObject parent_object;
- struct _CamelServicePrivate *priv;
-
- CamelSession *session;
- CamelProvider *provider;
- gboolean connected;
- CamelURL *url;
-};
-
-
-typedef struct {
- CamelObjectClass parent_class;
-
- void (*construct) (CamelService *service,
- CamelSession *session,
- CamelProvider *provider,
- CamelURL *url,
- CamelException *ex);
-
- gboolean (*connect) (CamelService *service,
- CamelException *ex);
- gboolean (*disconnect) (CamelService *service,
- gboolean clean,
- CamelException *ex);
-
- GList * (*query_auth_types) (CamelService *service,
- CamelException *ex);
-
- char * (*get_name) (CamelService *service,
- gboolean brief);
- char * (*get_path) (CamelService *service);
-
-} CamelServiceClass;
-
-
-/* query_auth_types returns a GList of these */
-typedef struct {
- char *name; /* user-friendly name */
- char *description;
- char *authproto;
-
- gboolean need_password; /* needs a password to authenticate */
-} CamelServiceAuthType;
-
-
-/* public methods */
-void camel_service_construct (CamelService *service,
- CamelSession *session,
- CamelProvider *provider,
- CamelURL *url,
- CamelException *ex);
-gboolean camel_service_connect (CamelService *service,
- CamelException *ex);
-gboolean camel_service_disconnect (CamelService *service,
- gboolean clean,
- CamelException *ex);
-char * camel_service_get_url (CamelService *service);
-char * camel_service_get_name (CamelService *service,
- gboolean brief);
-char * camel_service_get_path (CamelService *service);
-CamelSession * camel_service_get_session (CamelService *service);
-CamelProvider * camel_service_get_provider (CamelService *service);
-GList * camel_service_query_auth_types (CamelService *service,
- CamelException *ex);
-
-/* convenience functions */
-struct hostent * camel_service_gethost (CamelService *service,
- CamelException *ex);
-
-/* cancellable dns lookup */
-struct hostent * camel_get_host_byname (const char *name, CamelException *ex);
-void camel_free_host (struct hostent *h);
-
-/* Standard Camel function */
-CamelType camel_service_get_type (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_SERVICE_H */
-
diff --git a/camel/camel-session.c b/camel/camel-session.c
deleted file mode 100644
index 7dc3c268f3..0000000000
--- a/camel/camel-session.c
+++ /dev/null
@@ -1,667 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-session.c : Abstract class for an email session */
-
-/*
- * Authors:
- * Dan Winship <danw@ximian.com>
- * Jeffrey Stedfast <fejj@ximian.com>
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999 - 2001 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include "camel-session.h"
-#include "camel-store.h"
-#include "camel-transport.h"
-#include "camel-exception.h"
-#include "string-utils.h"
-#include "camel-url.h"
-#include "hash-table-utils.h"
-#include "camel-vee-store.h"
-
-#include "camel-private.h"
-
-#define CS_CLASS(so) CAMEL_SESSION_CLASS (CAMEL_OBJECT_GET_CLASS (so))
-
-static void register_provider (CamelSession *session, CamelProvider *provider);
-static GList *list_providers (CamelSession *session, gboolean load);
-static CamelProvider *get_provider (CamelSession *session,
- const char *url_string,
- CamelException *ex);
-
-static CamelService *get_service (CamelSession *session,
- const char *url_string,
- CamelProviderType type,
- CamelException *ex);
-static char *get_storage_path (CamelSession *session,
- CamelService *service,
- CamelException *ex);
-
-
-/* The vfolder provider is always avilable */
-static CamelProvider vee_provider = {
- "vfolder",
- N_("Virtual folder email provider"),
-
- N_("For reading mail as a query of another set of folders"),
-
- "vfolder",
-
- 0, /* flags */
-
- 0, /* url_flags */
-
- /* ... */
-};
-
-static void
-camel_session_init (CamelSession *session)
-{
- session->online = TRUE;
- session->modules = camel_provider_init ();
- session->providers = g_hash_table_new (g_strcase_hash, g_strcase_equal);
- session->priv = g_malloc0(sizeof(*session->priv));
-#ifdef ENABLE_THREADS
- session->priv->lock = g_mutex_new();
-#endif
-}
-
-static gboolean
-camel_session_destroy_provider (gpointer key, gpointer value, gpointer user_data)
-{
- CamelProvider *prov = (CamelProvider *)value;
-
- g_hash_table_destroy (prov->service_cache);
-
- return TRUE;
-}
-
-static void
-camel_session_finalise (CamelObject *o)
-{
- CamelSession *session = (CamelSession *)o;
-
- g_free(session->storage_path);
- g_hash_table_foreach_remove (session->providers,
- camel_session_destroy_provider, NULL);
- g_hash_table_destroy (session->providers);
-
-#ifdef ENABLE_THREADS
- g_mutex_free(session->priv->lock);
-#endif
-
- g_free(session->priv);
-}
-
-static void
-camel_session_class_init (CamelSessionClass *camel_session_class)
-{
- /* virtual method definition */
- camel_session_class->register_provider = register_provider;
- camel_session_class->list_providers = list_providers;
- camel_session_class->get_provider = get_provider;
- camel_session_class->get_service = get_service;
- camel_session_class->get_storage_path = get_storage_path;
-
- vee_provider.object_types[CAMEL_PROVIDER_STORE] = camel_vee_store_get_type ();
- vee_provider.service_cache = g_hash_table_new (camel_url_hash, camel_url_equal);
-}
-
-CamelType
-camel_session_get_type (void)
-{
- static CamelType camel_session_type = CAMEL_INVALID_TYPE;
-
- if (camel_session_type == CAMEL_INVALID_TYPE) {
- camel_session_type = camel_type_register (
- camel_object_get_type (), "CamelSession",
- sizeof (CamelSession),
- sizeof (CamelSessionClass),
- (CamelObjectClassInitFunc) camel_session_class_init,
- NULL,
- (CamelObjectInitFunc) camel_session_init,
- (CamelObjectFinalizeFunc) camel_session_finalise);
- }
-
- return camel_session_type;
-}
-
-/**
- * camel_session_construct:
- * @session: a session object to construct
- * @storage_path: path to a directory the session can use for
- * persistent storage. (This directory must already exist.)
- *
- * Constructs @session.
- **/
-void
-camel_session_construct (CamelSession *session, const char *storage_path)
-{
- session->storage_path = g_strdup (storage_path);
- camel_session_register_provider(session, &vee_provider);
-}
-
-
-static void
-register_provider (CamelSession *session, CamelProvider *provider)
-{
- g_hash_table_insert (session->providers, provider->protocol, provider);
-}
-
-/**
- * camel_session_register_provider:
- * @session: a session object
- * @protocol: the protocol the provider provides for
- * @provider: provider object
- *
- * Registers a protocol to provider mapping for the session.
- *
- * Assumes the session lock has already been obtained,
- * which is the case for automatically loaded provider modules.
- **/
-void
-camel_session_register_provider (CamelSession *session,
- CamelProvider *provider)
-{
- g_return_if_fail (CAMEL_IS_SESSION (session));
- g_return_if_fail (provider != NULL);
-
- CS_CLASS (session)->register_provider (session, provider);
-}
-
-
-static void
-ensure_loaded (gpointer key, gpointer value, gpointer user_data)
-{
- CamelSession *session = user_data;
- char *name = key;
- char *path = value;
-
- if (!g_hash_table_lookup (session->providers, name)) {
- CamelException ex;
-
- camel_exception_init (&ex);
- camel_provider_load (session, path, &ex);
- camel_exception_clear (&ex);
- }
-}
-
-static gint
-provider_compare (gconstpointer a, gconstpointer b)
-{
- const CamelProvider *cpa = (const CamelProvider *)a;
- const CamelProvider *cpb = (const CamelProvider *)b;
-
- return strcmp (cpa->name, cpb->name);
-}
-
-static void
-add_to_list (gpointer key, gpointer value, gpointer user_data)
-{
- GList **list = user_data;
- CamelProvider *prov = value;
-
- *list = g_list_insert_sorted (*list, prov, provider_compare);
-}
-
-static GList *
-list_providers (CamelSession *session, gboolean load)
-{
- GList *list = NULL;
-
- if (load)
- g_hash_table_foreach (session->modules, ensure_loaded, session);
-
- g_hash_table_foreach (session->providers, add_to_list, &list);
- return list;
-}
-
-/**
- * camel_session_list_providers:
- * @session: the session
- * @load: whether or not to load in providers that are not already loaded
- *
- * This returns a list of available providers in this session. If @load
- * is %TRUE, it will first load in all available providers that haven't
- * yet been loaded.
- *
- * Return value: a GList of providers, which the caller must free.
- **/
-GList *
-camel_session_list_providers (CamelSession *session, gboolean load)
-{
- GList *list;
-
- g_return_val_if_fail (CAMEL_IS_SESSION (session), NULL);
-
- CAMEL_SESSION_LOCK (session, lock);
- list = CS_CLASS (session)->list_providers (session, load);
- CAMEL_SESSION_UNLOCK (session, lock);
-
- return list;
-}
-
-
-static CamelProvider *
-get_provider (CamelSession *session, const char *url_string, CamelException *ex)
-{
- CamelProvider *provider;
- char *protocol;
-
- protocol = g_strndup (url_string, strcspn (url_string, ":"));
-
- provider = g_hash_table_lookup (session->providers, protocol);
- if (!provider) {
- /* See if there's one we can load. */
- char *path;
-
- path = g_hash_table_lookup (session->modules, protocol);
- if (path) {
- camel_provider_load (session, path, ex);
- if (camel_exception_is_set (ex)) {
- g_free (protocol);
- return NULL;
- }
- }
- provider = g_hash_table_lookup (session->providers, protocol);
- }
-
- if (!provider) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_URL_INVALID,
- _("No provider available for protocol `%s'"),
- protocol);
- }
- g_free (protocol);
-
- return provider;
-}
-
-/**
- * camel_session_get_provider:
- * @session: the session
- * @url_string: the URL for the service whose provider you want
- * @ex: a CamelException
- *
- * This returns the CamelProvider that would be used to handle
- * @url_string, loading it in from disk if necessary.
- *
- * Return value: the provider, or %NULL, in which case @ex will be set.
- **/
-CamelProvider *
-camel_session_get_provider (CamelSession *session, const char *url_string,
- CamelException *ex)
-{
- CamelProvider *provider;
-
- CAMEL_SESSION_LOCK (session, lock);
- provider = CS_CLASS (session)->get_provider (session, url_string, ex);
- CAMEL_SESSION_UNLOCK (session, lock);
-
- return provider;
-}
-
-
-static void
-service_cache_remove (CamelService *service, gpointer event_data, gpointer user_data)
-{
- CamelProvider *provider;
- CamelSession *session = CAMEL_SESSION (user_data);
-
- g_return_if_fail (CAMEL_IS_SESSION (session));
- g_return_if_fail (service != NULL);
- g_return_if_fail (service->url != NULL);
-
- CAMEL_SESSION_LOCK(session, lock);
-
- provider = g_hash_table_lookup (session->providers, service->url->protocol);
- g_hash_table_remove (provider->service_cache, service->url);
-
- CAMEL_SESSION_UNLOCK(session, lock);
-}
-
-
-static CamelService *
-get_service (CamelSession *session, const char *url_string,
- CamelProviderType type, CamelException *ex)
-{
- CamelURL *url;
- CamelProvider *provider;
- CamelService *service;
-
- url = camel_url_new (url_string, ex);
- if (!url)
- return NULL;
-
- /* We need to look up the provider so we can then lookup
- the service in the provider's cache */
- provider = CS_CLASS (session)->get_provider (session, url->protocol, ex);
- if (provider && !provider->object_types[type]) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_URL_INVALID,
- _("No provider available for protocol `%s'"),
- url->protocol);
- provider = NULL;
- }
- if (!provider) {
- camel_url_free (url);
- return NULL;
- }
-
- /* Now look up the service in the provider's cache */
- service = g_hash_table_lookup (provider->service_cache, url);
- if (service != NULL) {
- camel_url_free (url);
- camel_object_ref (CAMEL_OBJECT (service));
- return service;
- }
-
- service = (CamelService *)camel_object_new (provider->object_types[type]);
- camel_service_construct (service, session, provider, url, ex);
- if (camel_exception_is_set (ex)) {
- camel_object_unref (CAMEL_OBJECT (service));
- service = NULL;
- } else {
- g_hash_table_insert (provider->service_cache, url, service);
- camel_object_hook_event (CAMEL_OBJECT (service), "finalize", (CamelObjectEventHookFunc) service_cache_remove, session);
- }
-
- return service;
-}
-
-/**
- * camel_session_get_service:
- * @session: the CamelSession
- * @url_string: a Camel URL describing the service to get
- * @type: the provider type (%CAMEL_PROVIDER_STORE or
- * %CAMEL_PROVIDER_TRANSPORT) to get, since some URLs may be able
- * to specify either type.
- * @ex: a CamelException
- *
- * This resolves a CamelURL into a CamelService, including loading the
- * provider library for that service if it has not already been loaded.
- *
- * Services are cached, and asking for "the same" @url_string multiple
- * times will return the same CamelService (with its reference count
- * incremented by one each time). What constitutes "the same" URL
- * depends in part on the provider.
- *
- * Return value: the requested CamelService, or %NULL
- **/
-CamelService *
-camel_session_get_service (CamelSession *session, const char *url_string,
- CamelProviderType type, CamelException *ex)
-{
- CamelService *service;
-
- g_return_val_if_fail (CAMEL_IS_SESSION (session), NULL);
- g_return_val_if_fail (url_string != NULL, NULL);
-
- CAMEL_SESSION_LOCK (session, lock);
- service = CS_CLASS (session)->get_service (session, url_string, type, ex);
- CAMEL_SESSION_UNLOCK (session, lock);
-
- return service;
-}
-
-/**
- * camel_session_get_service_connected:
- * @session: the CamelSession
- * @url_string: a Camel URL describing the service to get
- * @type: the provider type
- * @ex: a CamelException
- *
- * This works like camel_session_get_service(), but also ensures that
- * the returned service will have been successfully connected (via
- * camel_service_connect().)
- *
- * Return value: the requested CamelService, or %NULL
- **/
-CamelService *
-camel_session_get_service_connected (CamelSession *session,
- const char *url_string,
- CamelProviderType type,
- CamelException *ex)
-{
- CamelService *svc;
-
- svc = camel_session_get_service (session, url_string, type, ex);
- if (svc == NULL)
- return NULL;
-
- if (svc->connected == FALSE) {
- if (camel_service_connect (svc, ex) == FALSE) {
- camel_object_unref (CAMEL_OBJECT (svc));
- return NULL;
- }
- }
-
- return svc;
-}
-
-
-static char *
-get_storage_path (CamelSession *session, CamelService *service, CamelException *ex)
-{
- char *path, *p;
-
- p = camel_service_get_path (service);
- path = g_strdup_printf ("%s/%s", session->storage_path, p);
- g_free (p);
-
- if (access (path, F_OK) == 0)
- return path;
-
- if (camel_mkdir_hier (path, S_IRWXU) == -1) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not create directory %s:\n%s"),
- path, g_strerror (errno));
- g_free (path);
- return NULL;
- }
-
- return path;
-}
-
-/**
- * camel_session_get_storage_path:
- * @session: session object
- * @service: a CamelService
- * @ex: a CamelException
- *
- * This returns the path to a directory which the service can use for
- * its own purposes. Data stored there will remain between Evolution
- * sessions. No code outside of that service should ever touch the
- * files in this directory. If the directory does not exist, it will
- * be created.
- *
- * Return value: the path (which the caller must free), or %NULL if
- * an error occurs.
- **/
-char *
-camel_session_get_storage_path (CamelSession *session, CamelService *service,
- CamelException *ex)
-{
- g_return_val_if_fail (CAMEL_IS_SESSION (session), NULL);
- g_return_val_if_fail (CAMEL_IS_SERVICE (service), NULL);
-
- return CS_CLASS (session)->get_storage_path (session, service, ex);
-}
-
-
-/**
- * camel_session_get_password:
- * @session: session object
- * @prompt: prompt to provide to user
- * @secret: whether or not the data is secret (eg, a password, as opposed
- * to a smartcard response)
- * @service: the service this query is being made by
- * @item: an identifier, unique within this service, for the information
- * @ex: a CamelException
- *
- * This function is used by a CamelService to ask the application and
- * the user for a password or other authentication data.
- *
- * @service and @item together uniquely identify the piece of data the
- * caller is concerned with.
- *
- * @prompt is a question to ask the user (if the application doesn't
- * already have the answer cached). If @secret is set, the user's
- * input will not be echoed back. The authenticator should set @ex
- * to %CAMEL_EXCEPTION_USER_CANCEL if the user did not provide the
- * information. The caller must g_free() the information returned when
- * it is done with it.
- *
- * Return value: the authentication information or %NULL.
- **/
-char *
-camel_session_get_password (CamelSession *session, const char *prompt,
- gboolean secret, CamelService *service,
- const char *item, CamelException *ex)
-{
- g_return_val_if_fail (CAMEL_IS_SESSION (session), NULL);
- g_return_val_if_fail (prompt != NULL, NULL);
- g_return_val_if_fail (item != NULL, NULL);
-
- return CS_CLASS (session)->get_password (session, prompt, secret, service, item, ex);
-}
-
-/**
- * camel_session_forget_password:
- * @session: session object
- * @service: the service rejecting the password
- * @item: an identifier, unique within this service, for the information
- * @ex: a CamelException
- *
- * This function is used by a CamelService to tell the application
- * that the authentication information it provided via
- * camel_session_get_password was rejected by the service. If the
- * application was caching this information, it should stop,
- * and if the service asks for it again, it should ask the user.
- *
- * @service and @item identify the rejected authentication information,
- * as with camel_session_get_password.
- **/
-void
-camel_session_forget_password (CamelSession *session, CamelService *service,
- const char *item, CamelException *ex)
-{
- g_return_if_fail (CAMEL_IS_SESSION (session));
- g_return_if_fail (item != NULL);
-
- CS_CLASS (session)->forget_password (session, service, item, ex);
-}
-
-/**
- * camel_session_alert_user:
- * @session: session object
- * @type: the type of alert (info, warning, or error)
- * @prompt: the message for the user
- * @cancel: whether or not to provide a "Cancel" option in addition to
- * an "OK" option.
- *
- * Presents the given @prompt to the user, in the style indicated by
- * @type. If @cancel is %TRUE, the user will be able to accept or
- * cancel. Otherwise, the message is purely informational.
- *
- * Return value: %TRUE if the user accepts, %FALSE if they cancel.
- */
-gboolean
-camel_session_alert_user (CamelSession *session, CamelSessionAlertType type,
- const char *prompt, gboolean cancel)
-{
- g_return_val_if_fail (CAMEL_IS_SESSION (session), FALSE);
- g_return_val_if_fail (prompt != NULL, FALSE);
-
- return CS_CLASS (session)->alert_user (session, type, prompt, cancel);
-}
-
-/**
- * camel_session_register_timeout:
- * @session: the CamelSession
- * @interval: the number of milliseconds interval between calls
- * @callback: the function to call
- * @user_data: extra data to be passed to the callback
- *
- * Registers the given timeout. @callback will be called every
- * @interval milliseconds with one argument, @user_data, until it
- * returns %FALSE.
- *
- * Return value: On success, a non-zero handle that can be used with
- * camel_session_remove_timeout(). On failure, 0.
- **/
-guint
-camel_session_register_timeout (CamelSession *session,
- guint32 interval,
- CamelTimeoutCallback callback,
- gpointer user_data)
-{
- g_return_val_if_fail (CAMEL_IS_SESSION (session), 0);
-
- return CS_CLASS (session)->register_timeout (session, interval, callback, user_data);
-}
-
-/**
- * camel_session_remove_timeout:
- * @session: the CamelSession
- * @handle: a value returned from camel_session_register_timeout()
- *
- * Removes the indicated timeout.
- *
- * Return value: %TRUE on success, %FALSE on failure.
- **/
-gboolean
-camel_session_remove_timeout (CamelSession *session, guint handle)
-{
- g_return_val_if_fail (CAMEL_IS_SESSION (session), FALSE);
-
- return CS_CLASS (session)->remove_timeout (session, handle);
-}
-
-
-/**
- * camel_session_is_online:
- * @session: the session.
- *
- * Return value: whether or not @session is online.
- **/
-gboolean
-camel_session_is_online (CamelSession *session)
-{
- return session->online;
-}
-
-/**
- * camel_session_set_online:
- * @session: the session
- * @online: whether or not the session should be online
- *
- * Sets the online status of @session to @online.
- **/
-void
-camel_session_set_online (CamelSession *session, gboolean online)
-{
- session->online = online;
-}
diff --git a/camel/camel-session.h b/camel/camel-session.h
deleted file mode 100644
index ba4a06490c..0000000000
--- a/camel/camel-session.h
+++ /dev/null
@@ -1,175 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-session.h : Abstract class for an email session */
-
-/*
- *
- * Author :
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_SESSION_H
-#define CAMEL_SESSION_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <camel/camel-object.h>
-#include <camel/camel-provider.h>
-
-#define CAMEL_SESSION_TYPE (camel_session_get_type ())
-#define CAMEL_SESSION(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SESSION_TYPE, CamelSession))
-#define CAMEL_SESSION_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SESSION_TYPE, CamelSessionClass))
-#define CAMEL_IS_SESSION(o) (CAMEL_CHECK_TYPE((o), CAMEL_SESSION_TYPE))
-
-
-typedef gboolean (*CamelTimeoutCallback) (gpointer data);
-typedef enum {
- CAMEL_SESSION_ALERT_INFO,
- CAMEL_SESSION_ALERT_WARNING,
- CAMEL_SESSION_ALERT_ERROR
-} CamelSessionAlertType;
-
-struct _CamelSession
-{
- CamelObject parent_object;
- struct _CamelSessionPrivate *priv;
-
- char *storage_path;
- GHashTable *providers, *modules;
- gboolean online;
-};
-
-typedef struct {
- CamelObjectClass parent_class;
-
- void (*register_provider) (CamelSession *session,
- CamelProvider *provider);
- GList * (*list_providers) (CamelSession *session,
- gboolean load);
- CamelProvider * (*get_provider) (CamelSession *session,
- const char *url_string,
- CamelException *ex);
-
- CamelService * (*get_service) (CamelSession *session,
- const char *url_string,
- CamelProviderType type,
- CamelException *ex);
- char * (*get_storage_path) (CamelSession *session,
- CamelService *service,
- CamelException *ex);
-
- char * (*get_password) (CamelSession *session,
- const char *prompt,
- gboolean secret,
- CamelService *service,
- const char *item,
- CamelException *ex);
- void (*forget_password) (CamelSession *session,
- CamelService *service,
- const char *item,
- CamelException *ex);
- gboolean (*alert_user) (CamelSession *session,
- CamelSessionAlertType type,
- const char *prompt,
- gboolean cancel);
-
- guint (*register_timeout) (CamelSession *session,
- guint32 interval,
- CamelTimeoutCallback callback,
- gpointer user_data);
- gboolean (*remove_timeout) (CamelSession *session,
- guint handle);
-
-} CamelSessionClass;
-
-
-/* public methods */
-
-/* Standard Camel function */
-CamelType camel_session_get_type (void);
-
-
-void camel_session_construct (CamelSession *session,
- const char *storage_path);
-
-void camel_session_register_provider (CamelSession *session,
- CamelProvider *provider);
-GList * camel_session_list_providers (CamelSession *session,
- gboolean load);
-
-CamelProvider * camel_session_get_provider (CamelSession *session,
- const char *url_string,
- CamelException *ex);
-
-CamelService * camel_session_get_service (CamelSession *session,
- const char *url_string,
- CamelProviderType type,
- CamelException *ex);
-CamelService * camel_session_get_service_connected (CamelSession *session,
- const char *url_string,
- CamelProviderType type,
- CamelException *ex);
-
-#define camel_session_get_store(session, url_string, ex) \
- ((CamelStore *) camel_session_get_service_connected (session, url_string, CAMEL_PROVIDER_STORE, ex))
-#define camel_session_get_transport(session, url_string, ex) \
- ((CamelTransport *) camel_session_get_service_connected (session, url_string, CAMEL_PROVIDER_TRANSPORT, ex))
-
-char * camel_session_get_storage_path (CamelSession *session,
- CamelService *service,
- CamelException *ex);
-
-char * camel_session_get_password (CamelSession *session,
- const char *prompt,
- gboolean secret,
- CamelService *service,
- const char *item,
- CamelException *ex);
-void camel_session_forget_password (CamelSession *session,
- CamelService *service,
- const char *item,
- CamelException *ex);
-gboolean camel_session_alert_user (CamelSession *session,
- CamelSessionAlertType type,
- const char *prompt,
- gboolean cancel);
-
-guint camel_session_register_timeout (CamelSession *session,
- guint32 interval,
- CamelTimeoutCallback callback,
- gpointer user_data);
-
-gboolean camel_session_remove_timeout (CamelSession *session,
- guint handle);
-
-
-gboolean camel_session_is_online (CamelSession *session);
-void camel_session_set_online (CamelSession *session,
- gboolean online);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_SESSION_H */
diff --git a/camel/camel-smime-context.c b/camel/camel-smime-context.c
deleted file mode 100644
index a11d933b9c..0000000000
--- a/camel/camel-smime-context.c
+++ /dev/null
@@ -1,642 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef HAVE_NSS
-#include "camel-smime-context.h"
-
-#include "camel-stream-fs.h"
-#include "camel-stream-mem.h"
-
-#include "nss.h"
-#include <cert.h>
-#include <certt.h>
-#include <certdb.h>
-#include <keylow.h>
-#include <secpkcs7.h>
-#include <secmime.h>
-#include <smime.h>
-
-#include <gtk/gtk.h> /* for _() macro */
-
-#define d(x)
-
-struct _CamelSMimeContextPrivate {
- CERTCertDBHandle *certdb;
-};
-
-
-static int smime_sign (CamelCipherContext *ctx, const char *userid, CamelCipherHash hash,
- CamelStream *istream, CamelStream *ostream, CamelException *ex);
-static int smime_clearsign (CamelCipherContext *context, const char *userid,
- CamelCipherHash hash, CamelStream *istream,
- CamelStream *ostream, CamelException *ex);
-static CamelCipherValidity *smime_verify (CamelCipherContext *context, CamelCipherHash hash,
- CamelStream *istream, CamelStream *sigstream,
- CamelException *ex);
-static int smime_encrypt (CamelCipherContext *context, gboolean sign, const char *userid,
- GPtrArray *recipients, CamelStream *istream, CamelStream *ostream,
- CamelException *ex);
-static int smime_decrypt (CamelCipherContext *context, CamelStream *istream,
- CamelStream *ostream, CamelException *ex);
-
-
-static CamelCipherContextClass *parent_class;
-
-static void
-camel_smime_context_init (CamelSMimeContext *context)
-{
- context->priv = g_new0 (struct _CamelSMimeContextPrivate, 1);
-}
-
-static void
-camel_smime_context_finalise (CamelObject *o)
-{
- CamelSMimeContext *context = (CamelSMimeContext *)o;
-
- g_free (context->priv);
-}
-
-static void
-camel_smime_context_class_init (CamelSMimeContextClass *camel_smime_context_class)
-{
- CamelCipherContextClass *camel_cipher_context_class =
- CAMEL_CIPHER_CONTEXT_CLASS (camel_smime_context_class);
-
- parent_class = CAMEL_CIPHER_CONTEXT_CLASS (camel_type_get_global_classfuncs (camel_cipher_context_get_type ()));
-
- camel_cipher_context_class->sign = smime_sign;
- camel_cipher_context_class->clearsign = smime_clearsign;
- camel_cipher_context_class->verify = smime_verify;
- camel_cipher_context_class->encrypt = smime_encrypt;
- camel_cipher_context_class->decrypt = smime_decrypt;
-}
-
-CamelType
-camel_smime_context_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_cipher_context_get_type (),
- "CamelSMimeContext",
- sizeof (CamelSMimeContext),
- sizeof (CamelSMimeContextClass),
- (CamelObjectClassInitFunc) camel_smime_context_class_init,
- NULL,
- (CamelObjectInitFunc) camel_smime_context_init,
- (CamelObjectFinalizeFunc) camel_smime_context_finalise);
- }
-
- return type;
-}
-
-
-/**
- * camel_smime_context_new:
- * @session: CamelSession
- *
- * This creates a new CamelSMimeContext object which is used to sign,
- * verify, encrypt and decrypt streams.
- *
- * Return value: the new CamelSMimeContext
- **/
-CamelSMimeContext *
-camel_smime_context_new (CamelSession *session)
-{
- CamelSMimeContext *context;
- CERTCertDBHandle *handle;
-
- g_return_val_if_fail (session != NULL, NULL);
- g_return_val_if_fail (CAMEL_IS_SESSION (session), NULL);
-
- context = CAMEL_SMIME_CONTEXT (camel_object_new (CAMEL_SMIME_CONTEXT_TYPE));
-
- camel_cipher_context_construct (CAMEL_CIPHER_CONTEXT (context), session);
-
- handle = CERT_CertGetDefaultCertDBHandle ();
- if (!handle) {
- camel_object_unref (CAMEL_OBJECT (context));
- return NULL;
- }
-
- context->priv->certdb = handle;
-
- return context;
-}
-
-/*----------------------------------------------------------------------*
- * Public crypto functions
- *----------------------------------------------------------------------*/
-
-struct _GetPasswdData {
- CamelSession *session;
- CamelException *ex;
- const char *userid;
-};
-
-static SECItem *
-get_zero_len_passwd (SECKEYKeyDBHandle *handle)
-{
- SECItem *pwitem;
- SECStatus rv;
-
- /* hash the empty string as a password */
- pwitem = SECKEY_DeriveKeyDBPassword (handle, "");
- if (pwitem == NULL)
- return NULL;
-
- /* check to see if this is the right password */
- rv = SECKEY_CheckKeyDBPassword (handle, pwitem);
- if (rv == SECFailure)
- return NULL;
-
- return pwitem;
-}
-
-static SECItem *
-get_password (void *arg, SECKEYKeyDBHandle *handle)
-{
- CamelSession *session = ((struct _GetPasswdData *) arg)->session;
- CamelException *ex = ((struct _GetPasswdData *) arg)->ex;
- const char *userid = ((struct _GetPasswdData *) arg)->userid;
- char *prompt, *passwd = NULL;
- SECItem *pwitem;
- SECStatus rv;
-
- /* Check to see if zero length password or not */
- pwitem = get_zero_len_passwd (handle);
- if (pwitem)
- return pwitem;
-
- prompt = g_strdup_printf (_("Please enter your password for %s"), userid);
- passwd = camel_session_get_password (session, prompt, TRUE,
- NULL, userid, NULL);
- g_free (prompt);
-
- /* hash the password */
- pwitem = SECKEY_DeriveKeyDBPassword (handle, passwd ? passwd : "");
-
- /* clear out the password strings */
- if (passwd) {
- memset (passwd, 0, strlen (passwd));
- g_free (passwd);
- }
-
- if (pwitem == NULL) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Error hashing password."));
-
- return NULL;
- }
-
- /* confirm the password */
- rv = SECKEY_CheckKeyDBPassword (handle, pwitem);
- if (rv) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Invalid password."));
-
- SECITEM_ZfreeItem (pwitem, PR_TRUE);
-
- return NULL;
- }
-
- return pwitem;
-}
-
-static HASH_HashType
-camel_cipher_hash_to_nss (CamelCipherHash hash)
-{
- switch (hash) {
- case CAMEL_CIPHER_HASH_DEFAULT:
- return HASH_AlgSHA1;
- case CAMEL_CIPHER_HASH_MD2:
- return HASH_AlgMD2;
- case CAMEL_CIPHER_HASH_MD5:
- return HASH_AlgMD5;
- case CAMEL_CIPHER_HASH_SHA1:
- return HASH_AlgSHA1;
- }
-
- return HASH_AlgNULL;
-}
-
-static SECOidTag
-nss_hash_to_sec_oid (HASH_HashType hash)
-{
- switch (hash) {
- case HASH_AlgMD2:
- return SEC_OID_MD2;
- case HASH_AlgMD5:
- return SEC_OID_MD5;
- case HASH_AlgSHA1:
- return SEC_OID_SHA1;
- default:
- g_assert_not_reached ();
- return 0;
- }
-}
-
-static int
-smime_digest (SECItem *data, char *digestdata, unsigned int *len, unsigned int maxlen, HASH_HashType hash)
-{
- const SECHashObject *hashObj;
- void *hashcx;
-
- hashObj = &SECHashObjects[hash];
-
- hashcx = (* hashObj->create)();
- if (hashcx == NULL)
- return -1;
-
- (* hashObj->begin)(hashcx);
- (* hashObj->update)(hashcx, data->data, data->len);
- (* hashObj->end)(hashcx, (unsigned char *)digestdata, len, maxlen);
- (* hashObj->destroy)(hashcx, PR_TRUE);
-
- return 0;
-}
-
-static void
-smime_output_cb (void *arg, const char *buf, unsigned long len)
-{
- CamelStream *stream;
-
- stream = CAMEL_STREAM (arg);
- camel_stream_write (stream, buf, len);
-}
-
-static int
-smime_sign (CamelCipherContext *ctx, const char *userid, CamelCipherHash hash,
- CamelStream *istream, CamelStream *ostream, CamelException *ex)
-{
- CamelSMimeContext *context = CAMEL_SMIME_CONTEXT (ctx);
- SEC_PKCS7EncoderContext *ecx = NULL;
- struct _GetPasswdData *data = NULL;
- SEC_PKCS7ContentInfo *cinfo = NULL;
- SECItem data2sign, digest;
- HASH_HashType hash_type;
- CERTCertificate *cert;
- guchar digestdata[32];
- CamelStream *stream;
- GByteArray *buf;
- guint len;
-
- g_return_val_if_fail (userid != NULL, -1);
- g_return_val_if_fail (istream != NULL, -1);
- g_return_val_if_fail (ostream != NULL, -1);
-
- stream = camel_stream_mem_new ();
- camel_stream_write_to_stream (istream, stream);
- buf = CAMEL_STREAM_MEM (stream)->buffer;
- data2sign.data = buf->data;
- data2sign.len = buf->len;
-
- hash_type = camel_cipher_hash_to_nss (hash);
- smime_digest (&data2sign, digestdata, &len, 32, hash_type);
- digest.data = (unsigned char *)digestdata;
- digest.len = len;
-
- camel_object_unref (CAMEL_OBJECT (stream));
-
- cert = CERT_FindCertByNickname (context->priv->certdb, (char *) userid);
- if (!cert) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not sign: certificate not found for \"%s\"."),
- userid);
- return -1;
- }
-
- data = g_new (struct _GetPasswdData, 1);
- data->session = ctx->session;
- data->userid = userid;
- data->ex = ex;
-
- cinfo = SECMIME_CreateSigned (cert, cert, context->priv->certdb,
- nss_hash_to_sec_oid (hash_type),
- &digest, get_password, data);
-
- if (cinfo == NULL) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not sign: failed to create content info."));
- goto exception;
- }
-
- ecx = SEC_PKCS7EncoderStart (cinfo, smime_output_cb, ostream, NULL);
- if (ecx == NULL) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not sign: failed to create signing context."));
- goto exception;
- }
-
- if (SEC_PKCS7EncoderFinish (ecx, NULL, NULL) != SECSuccess) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not sign: failed to create signature."));
- goto exception;
- }
-
- g_free (data);
-
- SEC_PKCS7DestroyContentInfo (cinfo);
-
- return 0;
-
- exception:
-
- if (cinfo)
- SEC_PKCS7DestroyContentInfo (cinfo);
-
- if (data)
- g_free (data);
-
- return -1;
-}
-
-
-static int
-smime_clearsign (CamelCipherContext *ctx, const char *userid, CamelCipherHash hash,
- CamelStream *istream, CamelStream *ostream, CamelException *ex)
-{
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("'clearsign' is not supported by S/MIME."));
- return -1;
-}
-
-#if 0
-/* this is just meant as a reference so I can see what the valid enums are */
-typedef enum {
- certUsageSSLClient,
- certUsageSSLServer,
- certUsageSSLServerWithStepUp,
- certUsageSSLCA,
- certUsageEmailSigner,
- certUsageEmailRecipient,
- certUsageObjectSigner,
- certUsageUserCertImport,
- certUsageVerifyCA,
- certUsageProtectedObjectSigner,
- certUsageStatusResponder,
- certUsageAnyCA
-} SECCertUsage;
-#endif
-
-/* FIXME: god knows if this code works, NSS "docs" are so not helpful at all */
-static CamelCipherValidity *
-smime_verify (CamelCipherContext *ctx, CamelCipherHash hash, CamelStream *istream,
- CamelStream *sigstream, CamelException *ex)
-{
- CamelSMimeContext *context = CAMEL_SMIME_CONTEXT (ctx);
- CamelCipherValidity *valid = NULL;
- SEC_PKCS7ContentInfo *cinfo;
- SECCertUsage usage;
- GByteArray *plaintext;
- CamelStream *stream;
- gboolean isvalid;
-
- /* create our ContentInfo object */
- stream = camel_stream_mem_new ();
- camel_stream_write_to_stream (istream, stream);
- plaintext = CAMEL_STREAM_MEM (stream)->buffer;
- cinfo = SEC_PKCS7CreateData ();
- SEC_PKCS7SetContent (cinfo, plaintext->data, plaintext->len);
- camel_object_unref (CAMEL_OBJECT (stream));
-
- usage = certUsageEmailSigner; /* just a guess. or maybe certUsageVerifyCA?? */
-
- valid = camel_cipher_validity_new ();
-
- if (sigstream) {
- HASH_HashType digest_type;
- GByteArray *signature;
- SECItem digest;
-
- /* create our digest object */
- stream = camel_stream_mem_new ();
- camel_stream_write_to_stream (sigstream, stream);
- signature = CAMEL_STREAM_MEM (stream)->buffer;
- digest.data = signature->data;
- digest.len = signature->len;
-
- switch (hash) {
- default:
- case CAMEL_CIPHER_HASH_DEFAULT:
- digest_type = HASH_AlgNULL;
- break;
- case CAMEL_CIPHER_HASH_MD2:
- digest_type = HASH_AlgMD2;
- break;
- case CAMEL_CIPHER_HASH_MD5:
- digest_type = HASH_AlgMD5;
- break;
- case CAMEL_CIPHER_HASH_SHA1:
- digest_type = HASH_AlgSHA1;
- break;
- }
-
- isvalid = SEC_PKCS7VerifyDetachedSignature (cinfo, usage, &digest,
- digest_type, PR_FALSE);
- camel_object_unref (CAMEL_OBJECT (stream));
- } else {
- isvalid = SEC_PKCS7VerifySignature (cinfo, usage, PR_FALSE);
- }
-
- camel_cipher_validity_set_valid (valid, isvalid);
-
- SEC_PKCS7DestroyContentInfo (cinfo);
-
- /* FIXME: set a meaningful description...in UTF8 */
- camel_cipher_validity_set_description (valid, "");
-
- return valid;
-}
-
-static int
-smime_encrypt (CamelCipherContext *ctx, gboolean sign, const char *userid, GPtrArray *recipients,
- CamelStream *istream, CamelStream *ostream, CamelException *ex)
-{
- CamelSMimeContext *context = CAMEL_SMIME_CONTEXT (ctx);
- const char *invalid_userkey = NULL;
- SEC_PKCS7ContentInfo *cinfo = NULL;
- GPtrArray *certificates = NULL;
- SEC_PKCS7EncoderContext *ecx;
- struct _GetPasswdData *data;
- CamelStream *stream = NULL;
- CERTCertificate *scert;
- GByteArray *buf;
- int i = 0;
-
- g_return_val_if_fail (userid != NULL, -1);
- g_return_val_if_fail (recipients != NULL, -1);
- g_return_val_if_fail (recipients->len != 0, -1);
- g_return_val_if_fail (istream != NULL, -1);
- g_return_val_if_fail (ostream != NULL, -1);
-
- scert = CERT_FindCertByNickname (context->priv->certdb, (char *) userid);
- if (!scert) {
- invalid_userkey = recipients->pdata[i];
- goto exception;
- }
-
- certificates = g_ptr_array_new ();
- for (i = 0; i < recipients->len; i++) {
- CERTCertificate *cert;
-
- cert = CERT_FindCertByNickname (context->priv->certdb, recipients->pdata[i]);
- if (!cert) {
- invalid_userkey = recipients->pdata[i];
- goto exception;
- }
-
- g_ptr_array_add (certificates, cert);
- }
- g_ptr_array_add (certificates, NULL);
-
- data = g_new (struct _GetPasswdData, 1);
- data->session = ctx->session;
- data->userid = userid;
- data->ex = ex;
-
- cinfo = SECMIME_CreateEncrypted (scert, (CERTCertificate **) certificates->pdata,
- context->priv->certdb, get_password, data);
-
- g_free (data);
-
- if (!cinfo) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not encrypt: failed to create enveloped data."));
- goto exception;
- }
-
- ecx = SEC_PKCS7EncoderStart (cinfo, smime_output_cb, ostream, NULL);
- if (ecx == NULL) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not encrypt: failed to create encryption context."));
- goto exception;
- }
-
- stream = camel_stream_mem_new ();
- camel_stream_write_to_stream (istream, stream);
- buf = CAMEL_STREAM_MEM (stream)->buffer;
- if (SEC_PKCS7EncoderUpdate (ecx, buf->data, buf->len) != SECSuccess)
- goto exception;
-
- camel_object_unref (CAMEL_OBJECT (stream));
- stream = NULL;
-
- if (SEC_PKCS7EncoderFinish (ecx, NULL, NULL) != SECSuccess)
- goto exception;
-
- g_ptr_array_free (certificates, TRUE);
-
- SEC_PKCS7DestroyContentInfo (cinfo);
-
- return 0;
-
- exception:
-
- if (certificates)
- g_ptr_array_free (certificates, TRUE);
-
- if (stream)
- camel_object_unref (CAMEL_OBJECT (stream));
-
- if (cinfo)
- SEC_PKCS7DestroyContentInfo (cinfo);
-
- if (invalid_userkey) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not encrypt data: invalid user key: \"%s\"."),
- invalid_userkey);
- }
-
- if (!camel_exception_is_set (ex)) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not encrypt: encoding failed."));
- }
-
- return -1;
-}
-
-static PRBool
-decryption_allowed (SECAlgorithmID *algid, PK11SymKey *key)
-{
- return PR_TRUE;
-}
-
-static int
-smime_decrypt (CamelCipherContext *ctx, CamelStream *istream,
- CamelStream *ostream, CamelException *ex)
-{
- struct _GetPasswdData *data;
- SEC_PKCS7DecoderContext *dcx;
- SEC_PKCS7ContentInfo *cinfo;
- CamelStream *stream = NULL;
- SECItem secdata;
- GByteArray *buf;
-
- g_return_val_if_fail (istream != NULL, -1);
- g_return_val_if_fail (ostream != NULL, -1);
-
- stream = camel_stream_mem_new ();
- camel_stream_write_to_stream (istream, stream);
- buf = CAMEL_STREAM_MEM (stream)->buffer;
- secdata.data = buf->data;
- secdata.len = buf->len;
-
- data = g_new (struct _GetPasswdData, 1);
- data->session = ctx->session;
- data->userid = NULL;
- data->ex = ex;
-
- dcx = SEC_PKCS7DecoderStart (smime_output_cb, ostream, get_password, data,
- NULL, NULL, decryption_allowed);
- if (dcx == NULL)
- goto exception;
-
- SEC_PKCS7DecoderUpdate (dcx, secdata.data, secdata.len);
- cinfo = SEC_PKCS7DecoderFinish (dcx);
-
- camel_object_unref (CAMEL_OBJECT (stream));
- g_free (data);
-
- if (cinfo == NULL) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Failed to decrypt: Unknown"));
- return -1;
- }
-
- SEC_PKCS7DestroyContentInfo (cinfo);
-
- return 0;
-
- exception:
-
- if (stream)
- camel_object_unref (CAMEL_OBJECT (stream));
-
- return -1;
-}
-
-#endif /* HAVE_NSS */
diff --git a/camel/camel-smime-context.h b/camel/camel-smime-context.h
deleted file mode 100644
index 0ced7b9c1b..0000000000
--- a/camel/camel-smime-context.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef CAMEL_SMIME_CONTEXT_H
-#define CAMEL_SMIME_CONTEXT_H
-
-#include <camel/camel-session.h>
-#include <camel/camel-stream.h>
-#include <camel/camel-exception.h>
-#include <camel/camel-cipher-context.h>
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-#define CAMEL_SMIME_CONTEXT_TYPE (camel_smime_context_get_type ())
-#define CAMEL_SMIME_CONTEXT(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SMIME_CONTEXT_TYPE, CamelSMimeContext))
-#define CAMEL_SMIME_CONTEXT_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SMIME_CONTEXT_TYPE, CamelSMimeContextClass))
-#define CAMEL_IS_SMIME_CONTEXT(o) (CAMEL_CHECK_TYPE((o), CAMEL_SMIME_CONTEXT_TYPE))
-
-typedef struct _CamelSMimeContext {
- CamelCipherContext parent_object;
-
- struct _CamelSMimeContextPrivate *priv;
-
-} CamelSMimeContext;
-
-typedef struct _CamelSMimeContextClass {
- CamelCipherContextClass parent_class;
-
-} CamelSMimeContextClass;
-
-
-CamelType camel_smime_context_get_type (void);
-
-CamelSMimeContext *camel_smime_context_new (CamelSession *session);
-
-/* SMIME routines */
-#define camel_smime_sign(c, u, h, i, o, e) camel_cipher_sign (CAMEL_CIPHER_CONTEXT (c), u, h, i, o, e)
-
-#define camel_smime_clearsign(c, u, h, i, o, e) camel_cipher_clearsign (CAMEL_CIPHER_CONTEXT (c), u, h, i, o, e)
-
-#define camel_smime_verify(c, h, i, s, e) camel_cipher_verify (CAMEL_CIPHER_CONTEXT (c), h, i, s, e)
-
-#define camel_smime_encrypt(c, s, u, r, i, o, e) camel_cipher_encrypt (CAMEL_CIPHER_CONTEXT (c), s, u, r, i, o, e)
-
-#define camel_smime_decrypt(c, i, o, e) camel_cipher_decrypt (CAMEL_CIPHER_CONTEXT (c), i, o, e)
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_SMIME_CONTEXT_H */
diff --git a/camel/camel-smime.c b/camel/camel-smime.c
deleted file mode 100644
index 587fcb6057..0000000000
--- a/camel/camel-smime.c
+++ /dev/null
@@ -1,504 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "camel-smime.h"
-#include "camel-mime-filter-from.h"
-#include "camel-mime-filter-crlf.h"
-#include "camel-stream-filter.h"
-#include "camel-stream-mem.h"
-#include "camel-multipart.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#define d(x) x
-
-/** rfc2633 stuff (aka S/MIME v3) ********************************/
-
-gboolean
-camel_smime_is_smime_v3_signed (CamelMimePart *mime_part)
-{
- CamelDataWrapper *wrapper;
- CamelMultipart *mp;
- CamelMimePart *part;
- CamelContentType *type;
- const gchar *param, *micalg;
- int nparts;
-
- /* check that we have a multipart/signed */
- type = camel_mime_part_get_content_type (mime_part);
- if (!header_content_type_is (type, "multipart", "signed"))
- return FALSE;
-
- /* check that we have a protocol param with the value: "application/pkcs7-signature" */
- param = header_content_type_param (type, "protocol");
- if (!param || g_strcasecmp (param, "application/pkcs7-signature"))
- return FALSE;
-
- /* check that we have a micalg parameter */
- micalg = header_content_type_param (type, "micalg");
- if (!micalg)
- return FALSE;
-
- /* check that we have exactly 2 subparts */
- wrapper = camel_medium_get_content_object (CAMEL_MEDIUM (mime_part));
- mp = CAMEL_MULTIPART (wrapper);
- nparts = camel_multipart_get_number (mp);
- if (nparts != 2)
- return FALSE;
-
- /* The first part may be of any type except for
- * application/pkcs7-signature - check it. */
- part = camel_multipart_get_part (mp, 0);
- type = camel_mime_part_get_content_type (part);
- if (header_content_type_is (type, "application", "pkcs7-signature"))
- return FALSE;
-
- /* The second part should be application/pkcs7-signature. */
- part = camel_multipart_get_part (mp, 1);
- type = camel_mime_part_get_content_type (part);
- if (!header_content_type_is (type, "application", "pkcs7-signature"))
- return FALSE;
-
- return TRUE;
-}
-
-gboolean
-camel_smime_is_smime_v3_encrypted (CamelMimePart *mime_part)
-{
- char *types[] = { "p7m", "p7c", "p7s", NULL };
- const gchar *param, *filename;
- CamelContentType *type;
- int i;
-
- /* check that we have a application/pkcs7-mime part */
- type = camel_mime_part_get_content_type (mime_part);
- if (header_content_type_is (type, "application", "pkcs7-mime")) {
- /* check to make sure it's an encrypted pkcs7-mime part? */
- return TRUE;
- }
-
- if (header_content_type_is (type, "application", "octent-stream")) {
- /* check to see if we have a paremeter called "smime-type" */
- param = header_content_type_param (type, "smime-type");
- if (param)
- return TRUE;
-
- /* check to see if there is a name param and if it has a smime extension */
- param = header_content_type_param (type, "smime-type");
- if (param && *param && strlen (param) > 4) {
- for (i = 0; types[i]; i++)
- if (!g_strcasecmp (param + strlen (param)-4, types[i]))
- return TRUE;
- }
-
- /* check to see if there is a name param and if it has a smime extension */
- filename = camel_mime_part_get_filename (mime_part);
- if (filename && *filename && strlen (filename) > 4) {
- for (i = 0; types[i]; i++)
- if (!g_strcasecmp (filename + strlen (filename)-4, types[i]))
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-
-static void
-smime_part_sign_restore_part (CamelMimePart *mime_part, GSList *encodings)
-{
- CamelDataWrapper *wrapper;
-
- wrapper = camel_medium_get_content_object (CAMEL_MEDIUM (mime_part));
- if (!wrapper)
- return;
-
- if (CAMEL_IS_MULTIPART (wrapper)) {
- int parts, i;
-
- parts = camel_multipart_get_number (CAMEL_MULTIPART (wrapper));
- for (i = 0; i < parts; i++) {
- CamelMimePart *part = camel_multipart_get_part (CAMEL_MULTIPART (wrapper), i);
-
- smime_part_sign_restore_part (part, encodings);
- encodings = encodings->next;
- }
- } else {
- CamelMimePartEncodingType encoding;
-
- encoding = GPOINTER_TO_INT (encodings->data);
-
- camel_mime_part_set_encoding (mime_part, encoding);
- }
-}
-
-static void
-smime_part_sign_prepare_part (CamelMimePart *mime_part, GSList **encodings)
-{
- CamelDataWrapper *wrapper;
- int parts, i;
-
- wrapper = camel_medium_get_content_object (CAMEL_MEDIUM (mime_part));
- if (!wrapper)
- return;
-
- if (CAMEL_IS_MULTIPART (wrapper)) {
- parts = camel_multipart_get_number (CAMEL_MULTIPART (wrapper));
- for (i = 0; i < parts; i++) {
- CamelMimePart *part = camel_multipart_get_part (CAMEL_MULTIPART (wrapper), i);
-
- smime_part_sign_prepare_part (part, encodings);
- }
- } else {
- CamelMimePartEncodingType encoding;
-
- encoding = camel_mime_part_get_encoding (mime_part);
-
- /* FIXME: find the best encoding for this part and use that instead?? */
- /* the encoding should really be QP or Base64 */
- if (encoding != CAMEL_MIME_PART_ENCODING_BASE64)
- camel_mime_part_set_encoding (mime_part, CAMEL_MIME_PART_ENCODING_QUOTEDPRINTABLE);
-
- *encodings = g_slist_append (*encodings, GINT_TO_POINTER (encoding));
- }
-}
-
-
-/**
- * camel_smime_part_sign:
- * @context: S/MIME Context
- * @mime_part: a MIME part that will be replaced by an S/MIME signed part
- * @userid: userid to sign with
- * @hash: one of CAMEL_CIPHER_HASH_TYPE_MD5 or CAMEL_CIPHER_HASH_TYPE_SHA1
- * @ex: exception which will be set if there are any errors.
- *
- * Constructs a S/MIME multipart in compliance with rfc2015/rfc2633 and
- * replaces @part with the generated multipart/signed. On failure,
- * @ex will be set and #part will remain untouched.
- **/
-void
-camel_smime_part_sign (CamelSMimeContext *context, CamelMimePart **mime_part, const char *userid,
- CamelCipherHash hash, CamelException *ex)
-{
- CamelMimePart *part, *signed_part;
- CamelMultipart *multipart;
- CamelContentType *mime_type;
- CamelStreamFilter *filtered_stream;
- CamelMimeFilter *crlf_filter, *from_filter;
- CamelStream *stream, *sigstream;
- gchar *hash_type = NULL;
- GSList *encodings = NULL;
-
- g_return_if_fail (*mime_part != NULL);
- g_return_if_fail (CAMEL_IS_MIME_PART (*mime_part));
- g_return_if_fail (userid != NULL);
-
- part = *mime_part;
-
- /* Prepare all the parts for signing... */
- smime_part_sign_prepare_part (part, &encodings);
-
- /* get the cleartext */
- stream = camel_stream_mem_new ();
- crlf_filter = camel_mime_filter_crlf_new (CAMEL_MIME_FILTER_CRLF_ENCODE,
- CAMEL_MIME_FILTER_CRLF_MODE_CRLF_ONLY);
- from_filter = CAMEL_MIME_FILTER (camel_mime_filter_from_new ());
- filtered_stream = camel_stream_filter_new_with_stream (stream);
- camel_stream_filter_add (filtered_stream, CAMEL_MIME_FILTER (crlf_filter));
- camel_object_unref (CAMEL_OBJECT (crlf_filter));
- camel_stream_filter_add (filtered_stream, CAMEL_MIME_FILTER (from_filter));
- camel_object_unref (CAMEL_OBJECT (from_filter));
- camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (part), CAMEL_STREAM (filtered_stream));
- camel_object_unref (CAMEL_OBJECT (filtered_stream));
-
- /* reset the stream */
- camel_stream_reset (stream);
-
- /* construct the signature stream */
- sigstream = camel_stream_mem_new ();
-
- switch (hash) {
- case CAMEL_CIPHER_HASH_MD5:
- hash_type = "md5";
- break;
- case CAMEL_CIPHER_HASH_SHA1:
- hash_type = "sha1";
- break;
- default:
- /* set a reasonable default */
- hash = CAMEL_CIPHER_HASH_SHA1;
- hash_type = "sha1";
- break;
- }
-
- /* get the signature */
- if (camel_smime_sign (context, userid, hash, stream, sigstream, ex) == -1) {
- camel_object_unref (CAMEL_OBJECT (stream));
- camel_object_unref (CAMEL_OBJECT (sigstream));
-
- /* restore the original encoding */
- smime_part_sign_restore_part (part, encodings);
- g_slist_free (encodings);
- return;
- }
-
- camel_object_unref (CAMEL_OBJECT (stream));
- camel_stream_reset (sigstream);
-
- /* we don't need these anymore... */
- g_slist_free (encodings);
-
- /* construct the pkcs7-signature mime part */
- signed_part = camel_mime_part_new ();
- camel_mime_part_set_content (signed_part, CAMEL_STREAM_MEM (sigstream)->buffer->data,
- CAMEL_STREAM_MEM (sigstream)->buffer->len,
- "application/pkcs7-signature");
- camel_object_unref (CAMEL_OBJECT (sigstream));
- camel_mime_part_set_encoding (signed_part, CAMEL_MIME_PART_ENCODING_BASE64);
- camel_mime_part_set_filename (signed_part, "smime.p7s");
-
- /* construct the container multipart/signed */
- multipart = camel_multipart_new ();
-
- mime_type = header_content_type_new ("multipart", "signed");
- header_content_type_set_param (mime_type, "micalg", hash_type);
- header_content_type_set_param (mime_type, "protocol", "application/pkcs7-signature");
- camel_data_wrapper_set_mime_type_field (CAMEL_DATA_WRAPPER (multipart), mime_type);
- header_content_type_unref (mime_type);
-
- camel_multipart_set_boundary (multipart, NULL);
-
- /* add the parts to the multipart */
- camel_multipart_add_part (multipart, part);
- camel_object_unref (CAMEL_OBJECT (part));
- camel_multipart_add_part (multipart, signed_part);
- camel_object_unref (CAMEL_OBJECT (signed_part));
-
- /* replace the input part with the output part */
- *mime_part = camel_mime_part_new ();
- camel_medium_set_content_object (CAMEL_MEDIUM (*mime_part),
- CAMEL_DATA_WRAPPER (multipart));
- camel_object_unref (CAMEL_OBJECT (multipart));
-}
-
-struct {
- char *name;
- CamelCipherHash hash;
-} known_hash_types[] = {
- { "md5", CAMEL_CIPHER_HASH_MD5 },
- { "rsa-md5", CAMEL_CIPHER_HASH_MD5 },
- { "sha1", CAMEL_CIPHER_HASH_SHA1 },
- { "rsa-sha1", CAMEL_CIPHER_HASH_SHA1 },
- { NULL, CAMEL_CIPHER_HASH_DEFAULT }
-};
-
-static CamelCipherHash
-get_hash_type (const char *string)
-{
- int i;
-
- for (i = 0; known_hash_types[i].name; i++)
- if (!g_strcasecmp (known_hash_types[i].name, string))
- return known_hash_types[i].hash;
-
- return CAMEL_CIPHER_HASH_DEFAULT;
-}
-
-/**
- * camel_smime_part_verify:
- * @context: S/MIME Context
- * @mime_part: a multipart/signed MIME Part
- * @ex: exception
- *
- * Returns a CamelCipherValidity on success or NULL on fail.
- **/
-CamelCipherValidity *
-camel_smime_part_verify (CamelSMimeContext *context, CamelMimePart *mime_part, CamelException *ex)
-{
- CamelDataWrapper *wrapper;
- CamelMultipart *multipart;
- CamelMimePart *part, *sigpart;
- CamelStreamFilter *filtered_stream;
- CamelMimeFilter *crlf_filter, *from_filter;
- CamelStream *stream, *sigstream;
- CamelContentType *type;
- CamelCipherValidity *valid;
- CamelCipherHash hash;
- const char *hash_str;
-
- g_return_val_if_fail (mime_part != NULL, NULL);
- g_return_val_if_fail (CAMEL_IS_MIME_PART (mime_part), NULL);
-
- if (!camel_smime_is_smime_v3_signed (mime_part))
- return NULL;
-
- wrapper = camel_medium_get_content_object (CAMEL_MEDIUM (mime_part));
- multipart = CAMEL_MULTIPART (wrapper);
-
- /* get the plain part */
- part = camel_multipart_get_part (multipart, 0);
- stream = camel_stream_mem_new ();
- crlf_filter = camel_mime_filter_crlf_new (CAMEL_MIME_FILTER_CRLF_ENCODE,
- CAMEL_MIME_FILTER_CRLF_MODE_CRLF_ONLY);
- from_filter = CAMEL_MIME_FILTER (camel_mime_filter_from_new ());
- filtered_stream = camel_stream_filter_new_with_stream (stream);
- camel_stream_filter_add (filtered_stream, CAMEL_MIME_FILTER (crlf_filter));
- camel_object_unref (CAMEL_OBJECT (crlf_filter));
- camel_stream_filter_add (filtered_stream, CAMEL_MIME_FILTER (from_filter));
- camel_object_unref (CAMEL_OBJECT (from_filter));
- camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (part), CAMEL_STREAM (filtered_stream));
- camel_object_unref (CAMEL_OBJECT (filtered_stream));
- camel_stream_reset (stream);
-
- /* get the signed part */
- sigpart = camel_multipart_get_part (multipart, 1);
- sigstream = camel_stream_mem_new ();
- camel_data_wrapper_write_to_stream (camel_medium_get_content_object (CAMEL_MEDIUM (sigpart)),
- sigstream);
- camel_stream_reset (sigstream);
-
- /* verify */
- type = camel_mime_part_get_content_type (sigpart);
- hash_str = header_content_type_param (type, "micalg");
- hash = get_hash_type (hash_str);
- valid = camel_smime_verify (context, hash, stream, sigstream, ex);
-
- camel_object_unref (CAMEL_OBJECT (sigstream));
- camel_object_unref (CAMEL_OBJECT (stream));
-
- return valid;
-}
-
-
-/**
- * camel_smime_part_encrypt:
- * @context: S/MIME Context
- * @mime_part: a MIME part that will be replaced by a pgp encrypted part
- * @recipients: list of recipient PGP Key IDs
- * @ex: exception which will be set if there are any errors.
- *
- * Constructs a PGP/MIME multipart in compliance with rfc2015 and
- * replaces #mime_part with the generated multipart/signed. On failure,
- * #ex will be set and #part will remain untouched.
- **/
-void
-camel_smime_part_encrypt (CamelSMimeContext *context, CamelMimePart **mime_part,
- GPtrArray *recipients, CamelException *ex)
-{
- CamelMimePart *part, *encrypted_part;
- CamelStreamFilter *filtered_stream;
- CamelMimeFilter *crlf_filter;
- CamelStream *stream, *ciphertext;
-
- g_return_if_fail (*mime_part != NULL);
- g_return_if_fail (CAMEL_IS_MIME_PART (*mime_part));
- g_return_if_fail (recipients != NULL);
-
- part = *mime_part;
-
- /* get the contents */
- stream = camel_stream_mem_new ();
- crlf_filter = camel_mime_filter_crlf_new (CAMEL_MIME_FILTER_CRLF_ENCODE,
- CAMEL_MIME_FILTER_CRLF_MODE_CRLF_ONLY);
- filtered_stream = camel_stream_filter_new_with_stream (stream);
- camel_stream_filter_add (filtered_stream, CAMEL_MIME_FILTER (crlf_filter));
- camel_object_unref (CAMEL_OBJECT (crlf_filter));
- camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (part), CAMEL_STREAM (filtered_stream));
- camel_object_unref (CAMEL_OBJECT (filtered_stream));
- camel_stream_reset (stream);
-
- /* smime encrypt */
- ciphertext = camel_stream_mem_new ();
- if (camel_smime_encrypt (context, FALSE, NULL, recipients, stream, ciphertext, ex) == -1) {
- camel_object_unref (CAMEL_OBJECT (stream));
- camel_object_unref (CAMEL_OBJECT (ciphertext));
- return;
- }
-
- camel_object_unref (CAMEL_OBJECT (stream));
- camel_stream_reset (ciphertext);
-
- /* construct the encrypted mime part */
- encrypted_part = camel_mime_part_new ();
- camel_mime_part_set_content (encrypted_part, CAMEL_STREAM_MEM (ciphertext)->buffer->data,
- CAMEL_STREAM_MEM (ciphertext)->buffer->len,
- "application/pkcs7-mime; smime-type=enveloped-data");
- camel_mime_part_set_encoding (encrypted_part, CAMEL_MIME_PART_ENCODING_BASE64);
- camel_object_unref (CAMEL_OBJECT (ciphertext));
-
- /* replace the input part with the output part */
- camel_object_unref (CAMEL_OBJECT (*mime_part));
- *mime_part = encrypted_part;
-}
-
-
-/**
- * camel_smime_part_decrypt:
- * @context: S/MIME Context
- * @mime_part: a S/MIME encrypted MIME Part
- * @ex: exception
- *
- * Returns the decrypted MIME Part on success or NULL on fail.
- **/
-CamelMimePart *
-camel_smime_part_decrypt (CamelSMimeContext *context, CamelMimePart *mime_part, CamelException *ex)
-{
- CamelMimePart *part;
- CamelStream *stream, *ciphertext;
-
- g_return_val_if_fail (mime_part != NULL, NULL);
- g_return_val_if_fail (CAMEL_IS_MIME_PART (mime_part), NULL);
-
- /* make sure the mime part is a S/MIME encrypted */
- if (!camel_smime_is_smime_v3_encrypted (mime_part))
- return NULL;
-
- /* get the ciphertext */
- ciphertext = camel_stream_mem_new ();
- camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (mime_part), ciphertext);
- camel_stream_reset (ciphertext);
-
- /* get the cleartext */
- stream = camel_stream_mem_new ();
- if (camel_smime_decrypt (context, ciphertext, stream, ex) == -1) {
- camel_object_unref (CAMEL_OBJECT (ciphertext));
- camel_object_unref (CAMEL_OBJECT (stream));
- return NULL;
- }
-
- camel_object_unref (CAMEL_OBJECT (ciphertext));
- camel_stream_reset (stream);
-
- /* construct the new decrypted mime part from the stream */
- part = camel_mime_part_new ();
- camel_data_wrapper_construct_from_stream (CAMEL_DATA_WRAPPER (part), stream);
- camel_object_unref (CAMEL_OBJECT (stream));
-
- return part;
-}
diff --git a/camel/camel-smime.h b/camel/camel-smime.h
deleted file mode 100644
index 67cb027588..0000000000
--- a/camel/camel-smime.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximain, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-
-#ifndef CAMEL_SMIME_H
-#define CAMEL_SMIME_H
-
-#include <glib.h>
-#include <camel/camel-mime-part.h>
-#include <camel/camel-smime-context.h>
-#include <camel/camel-exception.h>
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-gboolean camel_smime_is_smime_v3_signed (CamelMimePart *part);
-gboolean camel_smime_is_smime_v3_encrypted (CamelMimePart *part);
-
-void camel_smime_part_sign (CamelSMimeContext *context,
- CamelMimePart **mime_part,
- const char *userid,
- CamelCipherHash hash,
- CamelException *ex);
-
-CamelCipherValidity *camel_smime_part_verify (CamelSMimeContext *context,
- CamelMimePart *mime_part,
- CamelException *ex);
-
-void camel_smime_part_encrypt (CamelSMimeContext *context,
- CamelMimePart **mime_part,
- GPtrArray *recipients,
- CamelException *ex);
-
-CamelMimePart *camel_smime_part_decrypt (CamelSMimeContext *context,
- CamelMimePart *mime_part,
- CamelException *ex);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* ! CAMEL_SMIME_H */
diff --git a/camel/camel-store.c b/camel/camel-store.c
deleted file mode 100644
index 3418bd9a56..0000000000
--- a/camel/camel-store.c
+++ /dev/null
@@ -1,801 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-store.c : Abstract class for an email store */
-
-/*
- * Authors:
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-
-#include "camel-session.h"
-#include "camel-store.h"
-#include "camel-folder.h"
-#include "camel-vtrash-folder.h"
-#include "camel-exception.h"
-#include "camel-private.h"
-
-static CamelServiceClass *parent_class = NULL;
-
-/* Returns the class for a CamelStore */
-#define CS_CLASS(so) CAMEL_STORE_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-static CamelFolder *get_folder (CamelStore *store, const char *folder_name,
- guint32 flags, CamelException *ex);
-static CamelFolder *get_inbox (CamelStore *store, CamelException *ex);
-
-static void init_trash (CamelStore *store);
-static CamelFolder *get_trash (CamelStore *store, CamelException *ex);
-
-static CamelFolderInfo *create_folder (CamelStore *store,
- const char *parent_name,
- const char *folder_name,
- CamelException *ex);
-static void delete_folder (CamelStore *store, const char *folder_name,
- CamelException *ex);
-static void rename_folder (CamelStore *store, const char *old_name,
- const char *new_name, CamelException *ex);
-
-static void store_sync (CamelStore *store, CamelException *ex);
-static CamelFolderInfo *get_folder_info (CamelStore *store, const char *top,
- guint32 flags, CamelException *ex);
-static void free_folder_info (CamelStore *store, CamelFolderInfo *tree);
-
-static gboolean folder_subscribed (CamelStore *store, const char *folder_name);
-static void subscribe_folder (CamelStore *store, const char *folder_name, CamelException *ex);
-static void unsubscribe_folder (CamelStore *store, const char *folder_name, CamelException *ex);
-
-static void
-camel_store_class_init (CamelStoreClass *camel_store_class)
-{
- CamelObjectClass *camel_object_class =
- CAMEL_OBJECT_CLASS (camel_store_class);
-
- parent_class = CAMEL_SERVICE_CLASS (camel_type_get_global_classfuncs (camel_service_get_type ()));
-
- /* virtual method definition */
- camel_store_class->hash_folder_name = g_str_hash;
- camel_store_class->compare_folder_name = g_str_equal;
- camel_store_class->get_folder = get_folder;
- camel_store_class->get_inbox = get_inbox;
- camel_store_class->init_trash = init_trash;
- camel_store_class->get_trash = get_trash;
- camel_store_class->create_folder = create_folder;
- camel_store_class->delete_folder = delete_folder;
- camel_store_class->rename_folder = rename_folder;
- camel_store_class->sync = store_sync;
- camel_store_class->get_folder_info = get_folder_info;
- camel_store_class->free_folder_info = free_folder_info;
- camel_store_class->folder_subscribed = folder_subscribed;
- camel_store_class->subscribe_folder = subscribe_folder;
- camel_store_class->unsubscribe_folder = unsubscribe_folder;
-
- /* virtual method overload */
- camel_object_class_declare_event (camel_object_class,
- "folder_created", NULL);
- camel_object_class_declare_event (camel_object_class,
- "folder_deleted", NULL);
-}
-
-static void
-camel_store_init (void *o)
-{
- CamelStore *store = o;
- CamelStoreClass *store_class = (CamelStoreClass *)CAMEL_OBJECT_GET_CLASS (o);
-
- if (store_class->hash_folder_name) {
- store->folders = g_hash_table_new (store_class->hash_folder_name,
- store_class->compare_folder_name);
- } else
- store->folders = NULL;
-
- store->flags = 0;
-
- store->priv = g_malloc0 (sizeof (*store->priv));
-#ifdef ENABLE_THREADS
- store->priv->folder_lock = g_mutex_new();
- store->priv->cache_lock = g_mutex_new();
-#endif
-}
-
-static void
-camel_store_finalize (CamelObject *object)
-{
- CamelStore *store = CAMEL_STORE (object);
-
- if (store->folders) {
- if (g_hash_table_size (store->folders) != 0) {
- g_warning ("Folder cache for store %p contains "
- "%d folders at destruction.", store,
- g_hash_table_size (store->folders));
- }
- g_hash_table_destroy (store->folders);
- }
-
-#ifdef ENABLE_THREADS
- g_mutex_free (store->priv->folder_lock);
- g_mutex_free (store->priv->cache_lock);
-#endif
- g_free (store->priv);
-}
-
-
-CamelType
-camel_store_get_type (void)
-{
- static CamelType camel_store_type = CAMEL_INVALID_TYPE;
-
- if (camel_store_type == CAMEL_INVALID_TYPE) {
- camel_store_type = camel_type_register (CAMEL_SERVICE_TYPE, "CamelStore",
- sizeof (CamelStore),
- sizeof (CamelStoreClass),
- (CamelObjectClassInitFunc) camel_store_class_init,
- NULL,
- (CamelObjectInitFunc) camel_store_init,
- (CamelObjectFinalizeFunc) camel_store_finalize );
- }
-
- return camel_store_type;
-}
-
-
-static gboolean
-folder_matches (gpointer key, gpointer value, gpointer user_data)
-{
- if (value == user_data) {
- g_free (key);
- return TRUE;
- } else
- return FALSE;
-}
-
-static void
-folder_finalize (CamelObject *folder, gpointer event_data, gpointer user_data)
-{
- CamelStore *store = CAMEL_STORE (user_data);
-
- if (store->folders) {
- CAMEL_STORE_LOCK(store, cache_lock);
- g_hash_table_foreach_remove (store->folders, folder_matches, folder);
- CAMEL_STORE_UNLOCK(store, cache_lock);
- }
-}
-
-static CamelFolder *
-get_folder (CamelStore *store, const char *folder_name, guint32 flags, CamelException *ex)
-{
- g_warning ("CamelStore::get_folder not implemented for `%s'",
- camel_type_to_name(CAMEL_OBJECT_GET_TYPE(store)));
- return NULL;
-}
-
-/**
- * camel_store_get_folder: Return the folder corresponding to a path.
- * @store: a CamelStore
- * @folder_name: name of the folder to get
- * @flags: folder flags (create, save body index, etc)
- * @ex: a CamelException
- *
- * Return value: the folder corresponding to the path @folder_name.
- **/
-CamelFolder *
-camel_store_get_folder (CamelStore *store, const char *folder_name, guint32 flags, CamelException *ex)
-{
- CamelFolder *folder = NULL;
-
- CAMEL_STORE_LOCK(store, folder_lock);
-
- if (store->folders) {
- /* Try cache first. */
- CAMEL_STORE_LOCK(store, cache_lock);
- folder = g_hash_table_lookup (store->folders, folder_name);
- if (folder)
- camel_object_ref (CAMEL_OBJECT (folder));
- CAMEL_STORE_UNLOCK(store, cache_lock);
- }
-
- if (!folder) {
- folder = CS_CLASS (store)->get_folder (store, folder_name, flags, ex);
- if (folder) {
- /* Add the folder to the vTrash folder if this store implements it */
- if (store->vtrash)
- camel_vee_folder_add_folder (CAMEL_VEE_FOLDER (store->vtrash), folder);
-
- if (store->folders) {
- CAMEL_STORE_LOCK(store, cache_lock);
-
- g_hash_table_insert (store->folders, g_strdup (folder_name), folder);
-
- camel_object_hook_event (CAMEL_OBJECT (folder), "finalize", folder_finalize, store);
- CAMEL_STORE_UNLOCK(store, cache_lock);
- }
- }
- }
-
- CAMEL_STORE_UNLOCK(store, folder_lock);
- return folder;
-}
-
-
-static CamelFolderInfo *
-create_folder (CamelStore *store, const char *parent_name,
- const char *folder_name, CamelException *ex)
-{
- g_warning ("CamelStore::create_folder not implemented for `%s'",
- camel_type_to_name (CAMEL_OBJECT_GET_TYPE (store)));
- return NULL;
-}
-
-/**
- * camel_store_create_folder:
- * @store: a CamelStore
- * @parent_name: name of the new folder's parent, or %NULL
- * @folder_name: name of the folder to create
- * @ex: a CamelException
- *
- * Creates a new folder as a child of an existing folder.
- * @parent_name can be %NULL to create a new top-level folder.
- *
- * Return value: info about the created folder, which the caller must
- * free with camel_store_free_folder_info().
- **/
-CamelFolderInfo *
-camel_store_create_folder (CamelStore *store, const char *parent_name,
- const char *folder_name, CamelException *ex)
-{
- CamelFolderInfo *fi;
-
- CAMEL_STORE_LOCK(store, folder_lock);
- fi = CS_CLASS (store)->create_folder (store, parent_name, folder_name, ex);
- CAMEL_STORE_UNLOCK(store, folder_lock);
-
- return fi;
-}
-
-
-static void
-delete_folder (CamelStore *store, const char *folder_name, CamelException *ex)
-{
- g_warning ("CamelStore::delete_folder not implemented for `%s'",
- camel_type_to_name (CAMEL_OBJECT_GET_TYPE (store)));
-}
-
-/**
- * camel_store_delete_folder: Delete the folder corresponding to a path.
- * @store: a CamelStore
- * @folder_name: name of the folder to delete
- * @ex: a CamelException
- *
- * Deletes the named folder. The folder must be empty.
- **/
-void
-camel_store_delete_folder (CamelStore *store, const char *folder_name, CamelException *ex)
-{
- CAMEL_STORE_LOCK(store, folder_lock);
- CS_CLASS (store)->delete_folder (store, folder_name, ex);
- CAMEL_STORE_UNLOCK(store, folder_lock);
-}
-
-
-static void
-rename_folder (CamelStore *store, const char *old_name,
- const char *new_name, CamelException *ex)
-{
- g_warning ("CamelStore::rename_folder not implemented for `%s'",
- camel_type_to_name (CAMEL_OBJECT_GET_TYPE (store)));
-}
-
-/**
- * camel_store_rename_folder:
- * @store: a CamelStore
- * @old_name: the current name of the folder
- * @new_name: the new name of the folder
- * @ex: a CamelException
- *
- * Rename a named folder to a new name.
- **/
-void
-camel_store_rename_folder (CamelStore *store, const char *old_name, const char *new_name, CamelException *ex)
-{
- CAMEL_STORE_LOCK(store, folder_lock);
- CS_CLASS (store)->rename_folder (store, old_name, new_name, ex);
- CAMEL_STORE_UNLOCK(store, folder_lock);
-}
-
-
-static CamelFolder *
-get_inbox (CamelStore *store, CamelException *ex)
-{
- /* Default: assume the inbox's name is "inbox"
- * and open with default flags.
- */
- return CS_CLASS (store)->get_folder (store, "inbox", 0, ex);
-}
-
-/**
- * camel_store_get_inbox:
- * @store: a CamelStore
- * @ex: a CamelException
- *
- * Return value: the folder in the store into which new mail is
- * delivered, or %NULL if no such folder exists.
- **/
-CamelFolder *
-camel_store_get_inbox (CamelStore *store, CamelException *ex)
-{
- CamelFolder *folder;
-
- CAMEL_STORE_LOCK(store, folder_lock);
- folder = CS_CLASS (store)->get_inbox (store, ex);
- CAMEL_STORE_UNLOCK(store, folder_lock);
-
- return folder;
-}
-
-
-static void
-trash_add_folder (gpointer key, gpointer value, gpointer data)
-{
- CamelFolder *folder = CAMEL_FOLDER (value);
- CamelStore *store = CAMEL_STORE (data);
-
- camel_vee_folder_add_folder (CAMEL_VEE_FOLDER (store->vtrash), folder);
-}
-
-static void
-trash_finalize (CamelObject *trash, gpointer event_data, gpointer user_data)
-{
- CamelStore *store = CAMEL_STORE (user_data);
-
- store->vtrash = NULL;
-}
-
-static void
-init_trash (CamelStore *store)
-{
- store->vtrash = camel_vtrash_folder_new (store, _("Trash"));
-
- if (store->vtrash) {
- /* attach to the finalise event of the vtrash */
- camel_object_hook_event (CAMEL_OBJECT (store->vtrash), "finalize",
- trash_finalize, store);
-
- /* add all the pre-opened folders to the vtrash */
- if (store->folders) {
- CAMEL_STORE_LOCK(store, cache_lock);
- g_hash_table_foreach (store->folders, trash_add_folder, store);
- CAMEL_STORE_UNLOCK(store, cache_lock);
- }
- }
-}
-
-
-static CamelFolder *
-get_trash (CamelStore *store, CamelException *ex)
-{
- if (store->vtrash) {
- camel_object_ref (CAMEL_OBJECT (store->vtrash));
- return store->vtrash;
- } else {
- CS_CLASS (store)->init_trash (store);
- if (store->vtrash) {
- /* We don't ref here because we don't want the
- store to own a ref on the trash folder */
- /*camel_object_ref (CAMEL_OBJECT (store->vtrash));*/
- return store->vtrash;
- } else {
- g_warning ("This store does not support vTrash.");
- return NULL;
- }
- }
-}
-
-/**
- * camel_store_get_trash:
- * @store: a CamelStore
- * @ex: a CamelException
- *
- * Return value: the folder in the store into which trash is
- * delivered, or %NULL if no such folder exists.
- **/
-CamelFolder *
-camel_store_get_trash (CamelStore *store, CamelException *ex)
-{
- CamelFolder *folder;
-
- CAMEL_STORE_LOCK(store, folder_lock);
- folder = CS_CLASS (store)->get_trash (store, ex);
- CAMEL_STORE_UNLOCK(store, folder_lock);
-
- return folder;
-}
-
-
-static void
-sync_folder (gpointer key, gpointer folder, gpointer ex)
-{
- if (!camel_exception_is_set (ex))
- camel_folder_sync (folder, FALSE, ex);
-}
-
-static void
-store_sync (CamelStore *store, CamelException *ex)
-{
- if (store->folders) {
- CAMEL_STORE_LOCK(store, cache_lock);
- g_hash_table_foreach (store->folders, sync_folder, ex);
- CAMEL_STORE_UNLOCK(store, cache_lock);
- }
-}
-
-/**
- * camel_store_sync:
- * @store: a CamelStore
- * @ex: a CamelException
- *
- * Syncs any changes that have been made to the store object and its
- * folders with the real store.
- **/
-void
-camel_store_sync (CamelStore *store, CamelException *ex)
-{
- g_return_if_fail (CAMEL_IS_STORE (store));
-
- CS_CLASS (store)->sync (store, ex);
-}
-
-
-static CamelFolderInfo *
-get_folder_info (CamelStore *store, const char *top,
- guint32 flags, CamelException *ex)
-{
- g_warning ("CamelStore::get_folder_info not implemented for `%s'",
- camel_type_to_name (CAMEL_OBJECT_GET_TYPE (store)));
- return NULL;
-}
-
-/**
- * camel_store_get_folder_info:
- * @store: a CamelStore
- * @top: the name of the folder to start from
- * @flags: various CAMEL_STORE_FOLDER_INFO_* flags to control behavior
- * @ex: a CamelException
- *
- * This fetches information about the folder structure of @store,
- * starting with @top, and returns a tree of CamelFolderInfo
- * structures. If @flags includes %CAMEL_STORE_FOLDER_INFO_SUBSCRIBED,
- * only subscribed folders will be listed. (This flag can only be used
- * for stores that support subscriptions.) If @flags includes
- * %CAMEL_STORE_FOLDER_INFO_RECURSIVE, the returned tree will include
- * all levels of hierarchy below @top. If not, it will only include
- * the immediate subfolders of @top. If @flags includes
- * %CAMEL_STORE_FOLDER_INFO_FAST, the unread_message_count fields of
- * some or all of the structures may be set to -1, if the store cannot
- * determine that information quickly.
- *
- * Return value: a CamelFolderInfo tree, which must be freed with
- * camel_store_free_folder_info.
- **/
-CamelFolderInfo *
-camel_store_get_folder_info (CamelStore *store, const char *top,
- guint32 flags, CamelException *ex)
-{
- CamelFolderInfo *ret;
-
- g_return_val_if_fail (CAMEL_IS_STORE (store), NULL);
- g_return_val_if_fail ((store->flags & CAMEL_STORE_SUBSCRIPTIONS) ||
- !(flags & CAMEL_STORE_FOLDER_INFO_SUBSCRIBED),
- NULL);
-
- CAMEL_STORE_LOCK(store, folder_lock);
- ret = CS_CLASS (store)->get_folder_info (store, top, flags, ex);
- CAMEL_STORE_UNLOCK(store, folder_lock);
-
- return ret;
-}
-
-
-static void
-free_folder_info (CamelStore *store, CamelFolderInfo *fi)
-{
- g_warning ("CamelStore::free_folder_info not implemented for `%s'",
- camel_type_to_name (CAMEL_OBJECT_GET_TYPE (store)));
-}
-
-/**
- * camel_store_free_folder_info:
- * @store: a CamelStore
- * @tree: the tree returned by camel_store_get_folder_info()
- *
- * Frees the data returned by camel_store_get_folder_info().
- **/
-void
-camel_store_free_folder_info (CamelStore *store, CamelFolderInfo *fi)
-{
- g_return_if_fail (CAMEL_IS_STORE (store));
-
- CS_CLASS (store)->free_folder_info (store, fi);
-}
-
-/**
- * camel_store_free_folder_info_full:
- * @store: a CamelStore
- * @tree: the tree returned by camel_store_get_folder_info()
- *
- * An implementation for CamelStore::free_folder_info. Frees all
- * of the data.
- **/
-void
-camel_store_free_folder_info_full (CamelStore *store, CamelFolderInfo *fi)
-{
- camel_folder_info_free (fi);
-}
-
-/**
- * camel_store_free_folder_info_nop:
- * @store: a CamelStore
- * @tree: the tree returned by camel_store_get_folder_info()
- *
- * An implementation for CamelStore::free_folder_info. Does nothing.
- **/
-void
-camel_store_free_folder_info_nop (CamelStore *store, CamelFolderInfo *fi)
-{
- ;
-}
-
-
-/**
- * camel_folder_info_free:
- * @fi: the CamelFolderInfo
- *
- * Frees @fi.
- **/
-void
-camel_folder_info_free (CamelFolderInfo *fi)
-{
- if (fi) {
- camel_folder_info_free (fi->sibling);
- camel_folder_info_free (fi->child);
- g_free (fi->name);
- g_free (fi->full_name);
- g_free (fi->url);
- g_free (fi);
- }
-}
-
-
-/**
- * camel_folder_info_build:
- * @folders: an array of CamelFolderInfo
- * @namespace: an ignorable prefix on the folder names
- * @separator: the hieararchy separator character
- * @short_names: %TRUE if the (short) name of a folder is the part after
- * the last @separator in the full name. %FALSE if it is the full name.
- *
- * This takes an array of folders and attaches them together according
- * to the hierarchy described by their full_names and @separator. If
- * @namespace is non-%NULL, then it will be ignored as a full_name
- * prefix, for purposes of comparison. If necessary,
- * camel_folder_info_build will create additional CamelFolderInfo with
- * %NULL urls to fill in gaps in the tree. The value of @short_names
- * is used in constructing the names of these intermediate folders.
- *
- * Return value: the top level of the tree of linked folder info.
- **/
-CamelFolderInfo *
-camel_folder_info_build (GPtrArray *folders, const char *namespace,
- char separator, gboolean short_names)
-{
- CamelFolderInfo *fi, *pfi, *top = NULL;
- GHashTable *hash;
- char *name, *p, *pname;
- int i, nlen;
-
- if (!namespace)
- namespace = "";
- nlen = strlen (namespace);
-
- /* Hash the folders. */
- hash = g_hash_table_new (g_str_hash, g_str_equal);
- for (i = 0; i < folders->len; i++) {
- fi = folders->pdata[i];
- if (!strncmp (namespace, fi->full_name, nlen))
- name = fi->full_name + nlen;
- else
- name = fi->full_name;
- if (*name == separator)
- name++;
- g_hash_table_insert (hash, name, fi);
- }
-
- /* Now find parents. */
- for (i = 0; i < folders->len; i++) {
- fi = folders->pdata[i];
- if (!strncmp (namespace, fi->full_name, nlen))
- name = fi->full_name + nlen;
- else
- name = fi->full_name;
- if (*name == separator)
- name++;
- p = strrchr (name, separator);
- if (p) {
- pname = g_strndup (name, p - name);
- pfi = g_hash_table_lookup (hash, pname);
- if (pfi) {
- g_free (pname);
- } else {
- pfi = g_new0 (CamelFolderInfo, 1);
- pfi->full_name = pname;
- if (short_names) {
- pfi->name = strrchr (pname, separator);
- if (pfi->name)
- pfi->name = g_strdup (pfi->name + 1);
- else
- pfi->name = g_strdup (pname);
- } else
- pfi->name = g_strdup (pname);
- g_hash_table_insert (hash, pname, pfi);
- g_ptr_array_add (folders, pfi);
- }
- fi->sibling = pfi->child;
- fi->parent = pfi;
- pfi->child = fi;
- } else if (!top)
- top = fi;
- }
- g_hash_table_destroy (hash);
-
- /* Link together the top-level folders */
- for (i = 0; i < folders->len; i++) {
- fi = folders->pdata[i];
- if (fi->parent || fi == top)
- continue;
- if (top)
- fi->sibling = top;
- top = fi;
- }
-
- return top;
-}
-
-gboolean
-camel_store_supports_subscriptions (CamelStore *store)
-{
- return (store->flags & CAMEL_STORE_SUBSCRIPTIONS);
-}
-
-
-static gboolean
-folder_subscribed (CamelStore *store, const char *folder_name)
-{
- g_warning ("CamelStore::folder_subscribed not implemented for `%s'",
- camel_type_to_name (CAMEL_OBJECT_GET_TYPE (store)));
- return FALSE;
-}
-
-/**
- * camel_store_folder_subscribed: Tell whether or not a folder has been subscribed to.
- * @store: a CamelStore
- * @folder_name: the folder on which we're querying subscribed status.
- * Return value: TRUE if folder is subscribed, FALSE if not.
- **/
-gboolean
-camel_store_folder_subscribed (CamelStore *store,
- const char *folder_name)
-{
- gboolean ret;
-
- g_return_val_if_fail (CAMEL_IS_STORE (store), FALSE);
- g_return_val_if_fail (store->flags & CAMEL_STORE_SUBSCRIPTIONS, FALSE);
-
- CAMEL_STORE_LOCK(store, folder_lock);
-
- ret = CS_CLASS (store)->folder_subscribed (store, folder_name);
-
- CAMEL_STORE_UNLOCK(store, folder_lock);
-
- return ret;
-}
-
-static void
-subscribe_folder (CamelStore *store, const char *folder_name, CamelException *ex)
-{
- g_warning ("CamelStore::subscribe_folder not implemented for `%s'",
- camel_type_to_name (CAMEL_OBJECT_GET_TYPE (store)));
-}
-
-/**
- * camel_store_subscribe_folder: marks a folder as subscribed.
- * @store: a CamelStore
- * @folder_name: the folder to subscribe to.
- **/
-void
-camel_store_subscribe_folder (CamelStore *store,
- const char *folder_name,
- CamelException *ex)
-{
- g_return_if_fail (CAMEL_IS_STORE (store));
- g_return_if_fail (store->flags & CAMEL_STORE_SUBSCRIPTIONS);
-
- CAMEL_STORE_LOCK(store, folder_lock);
-
- CS_CLASS (store)->subscribe_folder (store, folder_name, ex);
-
- CAMEL_STORE_UNLOCK(store, folder_lock);
-}
-
-static void
-unsubscribe_folder (CamelStore *store, const char *folder_name, CamelException *ex)
-{
- g_warning ("CamelStore::unsubscribe_folder not implemented for `%s'",
- camel_type_to_name (CAMEL_OBJECT_GET_TYPE (store)));
-}
-
-
-/**
- * camel_store_unsubscribe_folder: marks a folder as unsubscribed.
- * @store: a CamelStore
- * @folder_name: the folder to unsubscribe from.
- **/
-void
-camel_store_unsubscribe_folder (CamelStore *store,
- const char *folder_name,
- CamelException *ex)
-{
- g_return_if_fail (CAMEL_IS_STORE (store));
- g_return_if_fail (store->flags & CAMEL_STORE_SUBSCRIPTIONS);
-
- CAMEL_STORE_LOCK(store, folder_lock);
-
- CS_CLASS (store)->unsubscribe_folder (store, folder_name, ex);
-
- CAMEL_STORE_UNLOCK(store, folder_lock);
-}
-
-
-int
-camel_mkdir_hier (const char *path, mode_t mode)
-{
- char *copy, *p;
-
- p = copy = g_strdup (path);
- do {
- p = strchr (p + 1, '/');
- if (p)
- *p = '\0';
- if (access (copy, F_OK) == -1) {
- if (mkdir (copy, mode) == -1) {
- g_free (copy);
- return -1;
- }
- }
- if (p)
- *p = '/';
- } while (p);
-
- g_free (copy);
- return 0;
-}
diff --git a/camel/camel-store.h b/camel/camel-store.h
deleted file mode 100644
index d81f08e914..0000000000
--- a/camel/camel-store.h
+++ /dev/null
@@ -1,194 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-store.h : Abstract class for an email store */
-
-/*
- *
- * Authors: Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_STORE_H
-#define CAMEL_STORE_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <camel/camel-object.h>
-#include <camel/camel-service.h>
-
-
-typedef struct _CamelFolderInfo {
- struct _CamelFolderInfo *parent, *sibling, *child;
- char *url, *full_name, *name;
- int unread_message_count;
-} CamelFolderInfo;
-
-
-#define CAMEL_STORE_TYPE (camel_store_get_type ())
-#define CAMEL_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_STORE_TYPE, CamelStore))
-#define CAMEL_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_STORE_TYPE, CamelStoreClass))
-#define CAMEL_IS_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_STORE_TYPE))
-
-
-/* Flags for store flags */
-#define CAMEL_STORE_SUBSCRIPTIONS (1 << 0)
-
-struct _CamelStore
-{
- CamelService parent_object;
- struct _CamelStorePrivate *priv;
-
- CamelFolder *vtrash;
-
- /* should have cache_lock when accessing this (priv->cache_lock) */
- GHashTable *folders;
-
- int flags;
-};
-
-
-/* open mode for folder */
-#define CAMEL_STORE_FOLDER_CREATE (1<<0)
-#define CAMEL_STORE_FOLDER_BODY_INDEX (1<<1)
-#define CAMEL_STORE_FOLDER_PRIVATE (1<<2) /* a private folder, that shouldn't show up in unmatched/folder info's, etc */
-
-#define CAMEL_STORE_FOLDER_INFO_FAST (1 << 0)
-#define CAMEL_STORE_FOLDER_INFO_RECURSIVE (1 << 1)
-#define CAMEL_STORE_FOLDER_INFO_SUBSCRIBED (1 << 2)
-
-typedef struct {
- CamelServiceClass parent_class;
-
- GHashFunc hash_folder_name;
- GCompareFunc compare_folder_name;
-
- CamelFolder * (*get_folder) (CamelStore *store,
- const char *folder_name,
- guint32 flags,
- CamelException *ex);
- CamelFolder * (*get_inbox) (CamelStore *store,
- CamelException *ex);
-
- void (*init_trash) (CamelStore *store);
- CamelFolder * (*get_trash) (CamelStore *store,
- CamelException *ex);
-
- CamelFolderInfo *(*create_folder) (CamelStore *store,
- const char *parent_name,
- const char *folder_name,
- CamelException *ex);
- void (*delete_folder) (CamelStore *store,
- const char *folder_name,
- CamelException *ex);
- void (*rename_folder) (CamelStore *store,
- const char *old_name,
- const char *new_name,
- CamelException *ex);
-
- void (*sync) (CamelStore *store,
- CamelException *ex);
-
- CamelFolderInfo *(*get_folder_info) (CamelStore *store,
- const char *top,
- guint32 flags,
- CamelException *ex);
- void (*free_folder_info) (CamelStore *store,
- CamelFolderInfo *fi);
-
- gboolean (*folder_subscribed) (CamelStore *store,
- const char *folder_name);
- void (*subscribe_folder) (CamelStore *store,
- const char *folder_name,
- CamelException *ex);
- void (*unsubscribe_folder) (CamelStore *store,
- const char *folder_name,
- CamelException *ex);
-} CamelStoreClass;
-
-
-/* Standard Camel function */
-CamelType camel_store_get_type (void);
-
-/* public methods */
-CamelFolder * camel_store_get_folder (CamelStore *store,
- const char *folder_name,
- guint32 flags,
- CamelException *ex);
-CamelFolder * camel_store_get_inbox (CamelStore *store,
- CamelException *ex);
-CamelFolder * camel_store_get_trash (CamelStore *store,
- CamelException *ex);
-
-CamelFolderInfo *camel_store_create_folder (CamelStore *store,
- const char *parent_name,
- const char *folder_name,
- CamelException *ex);
-void camel_store_delete_folder (CamelStore *store,
- const char *folder_name,
- CamelException *ex);
-void camel_store_rename_folder (CamelStore *store,
- const char *old_name,
- const char *new_name,
- CamelException *ex);
-
-void camel_store_sync (CamelStore *store,
- CamelException *ex);
-
-CamelFolderInfo *camel_store_get_folder_info (CamelStore *store,
- const char *top,
- guint32 flags,
- CamelException *ex);
-void camel_store_free_folder_info (CamelStore *store,
- CamelFolderInfo *fi);
-
-void camel_store_free_folder_info_full (CamelStore *store,
- CamelFolderInfo *fi);
-void camel_store_free_folder_info_nop (CamelStore *store,
- CamelFolderInfo *fi);
-
-void camel_folder_info_free (CamelFolderInfo *fi);
-CamelFolderInfo *camel_folder_info_build (GPtrArray *folders,
- const char *namespace,
- char separator,
- gboolean short_names);
-
-gboolean camel_store_supports_subscriptions (CamelStore *store);
-
-gboolean camel_store_folder_subscribed (CamelStore *store,
- const char *folder_name);
-void camel_store_subscribe_folder (CamelStore *store,
- const char *folder_name,
- CamelException *ex);
-void camel_store_unsubscribe_folder (CamelStore *store,
- const char *folder_name,
- CamelException *ex);
-
-
-/* utility needed by some stores */
-int camel_mkdir_hier (const char *path, mode_t mode);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_STORE_H */
diff --git a/camel/camel-stream-buffer.c b/camel/camel-stream-buffer.c
deleted file mode 100644
index f0857d49e4..0000000000
--- a/camel/camel-stream-buffer.c
+++ /dev/null
@@ -1,456 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; fill-column: 160 -*- */
-
-/* camel-stream-buffer.c : Buffer any other other stream
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <errno.h>
-#include "camel-stream-buffer.h"
-
-static CamelStreamClass *parent_class = NULL;
-
-enum {
- BUF_USER = 1<<0, /* user-supplied buffer, do not free */
-};
-
-#define BUF_SIZE 1024
-
-static ssize_t stream_read (CamelStream *stream, char *buffer, size_t n);
-static ssize_t stream_write (CamelStream *stream, const char *buffer, size_t n);
-static int stream_flush (CamelStream *stream);
-static int stream_close (CamelStream *stream);
-static gboolean stream_eos (CamelStream *stream);
-
-static void init_vbuf(CamelStreamBuffer *sbf, CamelStream *s, CamelStreamBufferMode mode, char *buf, guint32 size);
-static void init(CamelStreamBuffer *sbuf, CamelStream *s, CamelStreamBufferMode mode);
-
-static void
-camel_stream_buffer_class_init (CamelStreamBufferClass *camel_stream_buffer_class)
-{
- CamelStreamClass *camel_stream_class = CAMEL_STREAM_CLASS (camel_stream_buffer_class);
-
- parent_class = CAMEL_STREAM_CLASS (camel_type_get_global_classfuncs (camel_stream_get_type ()));
-
- /* virtual method definition */
- camel_stream_buffer_class->init = init;
- camel_stream_buffer_class->init_vbuf = init_vbuf;
-
- /* virtual method overload */
- camel_stream_class->read = stream_read;
- camel_stream_class->write = stream_write;
- camel_stream_class->flush = stream_flush;
- camel_stream_class->close = stream_close;
- camel_stream_class->eos = stream_eos;
-}
-
-static void
-camel_stream_buffer_init (gpointer object, gpointer klass)
-{
- CamelStreamBuffer *sbf = CAMEL_STREAM_BUFFER (object);
-
- sbf->flags = 0;
- sbf->size = BUF_SIZE;
- sbf->buf = g_malloc(BUF_SIZE);
- sbf->ptr = sbf->buf;
- sbf->end = sbf->buf;
- sbf->mode = CAMEL_STREAM_BUFFER_READ | CAMEL_STREAM_BUFFER_BUFFER;
- sbf->stream = 0;
- sbf->linesize = 80;
- sbf->linebuf = g_malloc(sbf->linesize);
-}
-
-static void
-camel_stream_buffer_finalize (CamelObject *object)
-{
- CamelStreamBuffer *sbf = CAMEL_STREAM_BUFFER (object);
-
- if (!(sbf->flags & BUF_USER)) {
- g_free(sbf->buf);
- }
- if (sbf->stream)
- camel_object_unref(CAMEL_OBJECT(sbf->stream));
-
- g_free(sbf->linebuf);
-}
-
-
-CamelType
-camel_stream_buffer_get_type (void)
-{
- static CamelType camel_stream_buffer_type = CAMEL_INVALID_TYPE;
-
- if (camel_stream_buffer_type == CAMEL_INVALID_TYPE) {
- camel_stream_buffer_type = camel_type_register (camel_stream_get_type (), "CamelStreamBuffer",
- sizeof (CamelStreamBuffer),
- sizeof (CamelStreamBufferClass),
- (CamelObjectClassInitFunc) camel_stream_buffer_class_init,
- NULL,
- (CamelObjectInitFunc) camel_stream_buffer_init,
- (CamelObjectFinalizeFunc) camel_stream_buffer_finalize);
- }
-
- return camel_stream_buffer_type;
-}
-
-
-static void
-set_vbuf(CamelStreamBuffer *sbf, char *buf, CamelStreamBufferMode mode, int size)
-{
- if (sbf->buf && !(sbf->flags & BUF_USER)) {
- g_free(sbf->buf);
- }
- if (buf) {
- sbf->buf = buf;
- sbf->flags |= BUF_USER;
- } else {
- sbf->buf = g_malloc(size);
- sbf->flags &= ~BUF_USER;
- }
- sbf->size = size;
- sbf->mode = mode;
-}
-
-static void
-init_vbuf(CamelStreamBuffer *sbf, CamelStream *s, CamelStreamBufferMode mode, char *buf, guint32 size)
-{
- set_vbuf(sbf, buf, mode, size);
- if (sbf->stream)
- camel_object_unref(CAMEL_OBJECT(sbf->stream));
- sbf->stream = s;
- camel_object_ref(CAMEL_OBJECT(sbf->stream));
-}
-
-static void
-init(CamelStreamBuffer *sbuf, CamelStream *s, CamelStreamBufferMode mode)
-{
- init_vbuf(sbuf, s, mode, NULL, BUF_SIZE);
-}
-
-
-/**
- * camel_stream_buffer_new:
- * @stream: Existing stream to buffer.
- * @mode: Operational mode of buffered stream.
- *
- * Create a new buffered stream of another stream. A default
- * buffer size (1024 bytes), automatically managed will be used
- * for buffering.
- *
- * See camel_stream_buffer_new_with_vbuf() for details on the
- * @mode parameter.
- *
- * Return value: A newly created buffered stream.
- **/
-CamelStream *
-camel_stream_buffer_new (CamelStream *stream, CamelStreamBufferMode mode)
-{
- CamelStreamBuffer *sbf;
- sbf = CAMEL_STREAM_BUFFER (camel_object_new (camel_stream_buffer_get_type ()));
- CAMEL_STREAM_BUFFER_CLASS (CAMEL_OBJECT_GET_CLASS(sbf))->init (sbf, stream, mode);
-
- return CAMEL_STREAM (sbf);
-}
-
-/**
- * camel_stream_buffer_new_with_vbuf:
- * @stream: An existing stream to buffer.
- * @mode: Mode to buffer in.
- * @buf: Memory to use for buffering.
- * @size: Size of buffer to use.
- *
- * Create a new stream which buffers another stream, @stream.
- *
- * The following values are available for @mode:
- *
- * CAMEL_STREAM_BUFFER_BUFFER, Buffer the input/output in blocks.
- * CAMEL_STREAM_BUFFER_NEWLINE, Buffer on newlines (for output).
- * CAMEL_STREAM_BUFFER_NONE, Perform no buffering.
- *
- * Note that currently this is ignored and CAMEL_STREAM_BUFFER_BUFFER
- * is always used.
- *
- * In addition, one of the following mode options should be or'd
- * together with the buffering mode:
- *
- * CAMEL_STREAM_BUFFER_WRITE, Buffer in write mode.
- * CAMEL_STREAM_BUFFER_READ, Buffer in read mode.
- *
- * Buffering can only be done in one direction for any
- * buffer instance.
- *
- * If @buf is non-NULL, then use the memory pointed to
- * (for upto @size bytes) as the buffer for all buffering
- * operations. It is upto the application to free this buffer.
- * If @buf is NULL, then allocate and manage @size bytes
- * for all buffering.
- *
- * Return value: A new stream with buffering applied.
- **/
-CamelStream *camel_stream_buffer_new_with_vbuf (CamelStream *stream, CamelStreamBufferMode mode, char *buf, guint32 size)
-{
- CamelStreamBuffer *sbf;
- sbf = CAMEL_STREAM_BUFFER (camel_object_new (camel_stream_buffer_get_type ()));
- CAMEL_STREAM_BUFFER_CLASS (CAMEL_OBJECT_GET_CLASS(sbf))->init_vbuf (sbf, stream, mode, buf, size);
-
- return CAMEL_STREAM (sbf);
-}
-
-static ssize_t
-stream_read (CamelStream *stream, char *buffer, size_t n)
-{
- CamelStreamBuffer *sbf = CAMEL_STREAM_BUFFER (stream);
- ssize_t bytes_read = 1;
- ssize_t bytes_left;
- char *bptr = buffer;
-
- g_return_val_if_fail( (sbf->mode & CAMEL_STREAM_BUFFER_MODE) == CAMEL_STREAM_BUFFER_READ, 0);
-
- while (n && bytes_read > 0) {
- bytes_left = sbf->end - sbf->ptr;
- if (bytes_left < n) {
- if (bytes_left > 0) {
- memcpy(bptr, sbf->ptr, bytes_left);
- n -= bytes_left;
- bptr += bytes_left;
- sbf->ptr += bytes_left;
- }
- /* if we are reading a lot, then read directly to the destination buffer */
- if (n >= sbf->size/3) {
- bytes_read = camel_stream_read(sbf->stream, bptr, n);
- if (bytes_read>0) {
- n -= bytes_read;
- bptr += bytes_read;
- }
- } else {
- bytes_read = camel_stream_read(sbf->stream, sbf->buf, sbf->size);
- if (bytes_read>0) {
- size_t bytes_used = bytes_read > n ? n : bytes_read;
- sbf->ptr = sbf->buf;
- sbf->end = sbf->buf+bytes_read;
- memcpy(bptr, sbf->ptr, bytes_used);
- sbf->ptr += bytes_used;
- bptr += bytes_used;
- n -= bytes_used;
- }
- }
- } else {
- memcpy(bptr, sbf->ptr, n);
- sbf->ptr += n;
- bptr += n;
- n = 0;
- }
- }
-
- return (ssize_t)(bptr - buffer);
-}
-
-static ssize_t
-stream_write (CamelStream *stream, const char *buffer, size_t n)
-{
- CamelStreamBuffer *sbf = CAMEL_STREAM_BUFFER (stream);
- const char *bptr = buffer;
- ssize_t bytes_written = 1;
- ssize_t bytes_left;
- ssize_t total = n;
-
- g_return_val_if_fail( (sbf->mode & CAMEL_STREAM_BUFFER_MODE) == CAMEL_STREAM_BUFFER_WRITE, 0);
-
- while (n && bytes_written > 0) {
- bytes_left = sbf->size - (sbf->ptr-sbf->buf);
- if (bytes_left<n) {
- memcpy(sbf->ptr, bptr, bytes_left);
- n -= bytes_left;
- bptr += bytes_left;
- bytes_written = camel_stream_write(sbf->stream, sbf->buf, sbf->size);
- sbf->ptr = sbf->buf;
- /* if we are writing a lot, write directly to the stream */
- if (n >= sbf->size/3) {
- bytes_written = camel_stream_write(sbf->stream, bptr, n);
- if (bytes_written >0) {
- bytes_written = n;
- n -= bytes_written;
- bptr += bytes_written;
- }
- } else {
- memcpy(sbf->ptr, bptr, n);
- sbf->ptr += n;
- bptr += n;
- n = 0;
- }
- } else {
- memcpy(sbf->ptr, bptr, n);
- sbf->ptr += n;
- bptr += n;
- n = 0;
- }
- }
- if (bytes_written == -1)
- return -1;
-
- return total;
-}
-
-static int
-stream_flush (CamelStream *stream)
-{
- CamelStreamBuffer *sbf = CAMEL_STREAM_BUFFER (stream);
-
- if ((sbf->mode & CAMEL_STREAM_BUFFER_MODE) == CAMEL_STREAM_BUFFER_WRITE) {
- int len = sbf->ptr-sbf->buf;
- int written = camel_stream_write(sbf->stream, sbf->buf, len);
- if (written > 0)
- sbf->ptr += written;
- if (written != len)
- return -1;
- } else {
- /* nothing to do for read mode 'flush' */
- }
-
- return camel_stream_flush(sbf->stream);
-}
-
-static int
-stream_close (CamelStream *stream)
-{
- CamelStreamBuffer *sbf = CAMEL_STREAM_BUFFER (stream);
-
- if (stream_flush(stream) == -1)
- return -1;
- return camel_stream_close(sbf->stream);
-}
-
-static gboolean
-stream_eos (CamelStream *stream)
-{
- CamelStreamBuffer *sbf = CAMEL_STREAM_BUFFER (stream);
-
- return camel_stream_eos(sbf->stream) && sbf->ptr == sbf->end;
-}
-
-/**
- * camel_stream_buffer_gets:
- * @sbf: A CamelStreamBuffer.
- * @buf: Memory to write the string to.
- * @max: Maxmimum number of characters to store.
- *
- * Read a line of characters up to the next newline character or
- * @max-1 characters.
- *
- * If the newline character is encountered, then it will be
- * included in the buffer @buf. The buffer will be #NUL terminated.
- *
- * Return value: The number of characters read, or 0 for end of file,
- * and -1 on error.
- **/
-int camel_stream_buffer_gets(CamelStreamBuffer *sbf, char *buf, unsigned int max)
-{
- register char *outptr, *inptr, *inend, c, *outend;
- int bytes_read;
-
- outptr = buf;
- inptr = sbf->ptr;
- inend = sbf->end;
- outend = buf+max-1; /* room for NUL */
-
- do {
- while (inptr<inend && outptr<outend) {
- c = *inptr++;
- *outptr++ = c;
- if (c == '\n') {
- *outptr = 0;
- sbf->ptr = inptr;
- return outptr-buf;
- }
- }
- if (outptr == outend)
- break;
-
- bytes_read = camel_stream_read(sbf->stream, sbf->buf, sbf->size);
- if (bytes_read == -1)
- return -1;
- inptr = sbf->ptr = sbf->buf;
- inend = sbf->end = sbf->buf + bytes_read;
- } while (bytes_read>0);
-
- sbf->ptr = inptr;
- *outptr = 0;
-
- return (int)(outptr - buf);
-}
-
-/**
- * camel_stream_buffer_read_line: read a complete line from the stream
- * @sbf: A CamelStreamBuffer
- *
- * This function reads a complete newline-terminated line from the stream
- * and returns it in allocated memory. The trailing newline (and carriage
- * return if any) are not included in the returned string.
- *
- * Return value: the line read, which the caller must free when done with,
- * or NULL on eof. If an error occurs, @ex will be set.
- **/
-char *
-camel_stream_buffer_read_line (CamelStreamBuffer *sbf)
-{
- unsigned char *p;
- int nread;
-
- p = sbf->linebuf;
-
- while (1) {
- nread = camel_stream_buffer_gets (sbf, p, sbf->linesize - (p - sbf->linebuf));
- if (nread <=0) {
- if (p > sbf->linebuf)
- break;
- return NULL;
- }
-
- p += nread;
- if (p[-1] == '\n')
- break;
-
- nread = p - sbf->linebuf;
- sbf->linesize *= 2;
- sbf->linebuf = g_realloc (sbf->linebuf, sbf->linesize);
- p = sbf->linebuf + nread;
- }
-
- p--;
- if (p[-1] == '\r')
- p--;
- p[0] = 0;
-
- return g_strdup(sbf->linebuf);
-}
-
-
-
-
-
-
diff --git a/camel/camel-stream-buffer.h b/camel/camel-stream-buffer.h
deleted file mode 100644
index 81ab1a072e..0000000000
--- a/camel/camel-stream-buffer.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-stream-buffer.h :stream which buffers another stream */
-
-/*
- *
- * Author :
- * Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright 2000 Helix Code Inc. (http://www.helixcode.com) .
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_STREAM_BUFFER_H
-#define CAMEL_STREAM_BUFFER_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <stdio.h>
-#include <camel/camel-seekable-stream.h>
-
-#define CAMEL_STREAM_BUFFER_TYPE (camel_stream_buffer_get_type ())
-#define CAMEL_STREAM_BUFFER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_STREAM_BUFFER_TYPE, CamelStreamBuffer))
-#define CAMEL_STREAM_BUFFER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_STREAM_BUFFER_TYPE, CamelStreamBufferClass))
-#define CAMEL_IS_STREAM_BUFFER(o) (CAMEL_CHECK_TYPE((o), CAMEL_STREAM_BUFFER_TYPE))
-
-typedef enum
-{
- CAMEL_STREAM_BUFFER_BUFFER = 0,
- CAMEL_STREAM_BUFFER_NEWLINE,
- CAMEL_STREAM_BUFFER_NONE,
- CAMEL_STREAM_BUFFER_READ = 0x00,
- CAMEL_STREAM_BUFFER_WRITE = 0x80,
- CAMEL_STREAM_BUFFER_MODE = 0x80
-} CamelStreamBufferMode;
-
-struct _CamelStreamBuffer
-{
- CamelStream parent_object;
-
- /* these are all of course, private */
- CamelStream *stream;
-
- unsigned char *buf, *ptr, *end;
- int size;
-
- unsigned char *linebuf; /* for reading lines at a time */
- int linesize;
-
- CamelStreamBufferMode mode;
- unsigned int flags; /* internal flags */
-};
-
-
-typedef struct {
- CamelStreamClass parent_class;
-
- /* Virtual methods */
- void (*init) (CamelStreamBuffer *stream_buffer, CamelStream *stream,
- CamelStreamBufferMode mode);
- void (*init_vbuf) (CamelStreamBuffer *stream_buffer,
- CamelStream *stream, CamelStreamBufferMode mode,
- char *buf, guint32 size);
-
-} CamelStreamBufferClass;
-
-
-/* Standard Camel function */
-CamelType camel_stream_buffer_get_type (void);
-
-
-/* public methods */
-CamelStream *camel_stream_buffer_new (CamelStream *s,
- CamelStreamBufferMode mode);
-CamelStream *camel_stream_buffer_new_with_vbuf (CamelStream *s,
- CamelStreamBufferMode mode,
- char *buf, guint32 size);
-
-/* unimplemented
- CamelStream *camel_stream_buffer_set_vbuf (CamelStreamBuffer *b, CamelStreamBufferMode mode, char *buf, guint32 size); */
-
-/* read a line of characters */
-int camel_stream_buffer_gets (CamelStreamBuffer *b, char *buf, unsigned int max);
-
-char *camel_stream_buffer_read_line (CamelStreamBuffer *sbf);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_STREAM_BUFFER_H */
diff --git a/camel/camel-stream-filter.c b/camel/camel-stream-filter.c
deleted file mode 100644
index 3956f24346..0000000000
--- a/camel/camel-stream-filter.c
+++ /dev/null
@@ -1,382 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; fill-column: 160 -*- */
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <string.h>
-#include "camel-stream-filter.h"
-
-#define d(x)
-/*#include <stdio.h>*/
-
-struct _filter {
- struct _filter *next;
- int id;
- CamelMimeFilter *filter;
-};
-
-struct _CamelStreamFilterPrivate {
- struct _filter *filters;
- int filterid; /* next filter id */
-
- char *realbuffer; /* buffer - READ_PAD */
- char *buffer; /* READ_SIZE bytes */
-
- char *filtered; /* the filtered data */
- size_t filteredlen;
-
- int last_was_read; /* was the last op read or write? */
-};
-
-#define READ_PAD (64) /* bytes padded before buffer */
-#define READ_SIZE (4096)
-
-#define _PRIVATE(o) (((CamelStreamFilter *)(o))->priv)
-
-static void camel_stream_filter_class_init (CamelStreamFilterClass *klass);
-static void camel_stream_filter_init (CamelStreamFilter *obj);
-
-static ssize_t do_read (CamelStream *stream, char *buffer, size_t n);
-static ssize_t do_write (CamelStream *stream, const char *buffer, size_t n);
-static int do_flush (CamelStream *stream);
-static int do_close (CamelStream *stream);
-static gboolean do_eos (CamelStream *stream);
-static int do_reset (CamelStream *stream);
-
-static CamelStreamClass *camel_stream_filter_parent;
-
-static void
-camel_stream_filter_class_init (CamelStreamFilterClass *klass)
-{
- CamelStreamClass *camel_stream_class = (CamelStreamClass *) klass;
-
- camel_stream_filter_parent = CAMEL_STREAM_CLASS (camel_type_get_global_classfuncs (camel_stream_get_type ()));
-
- camel_stream_class->read = do_read;
- camel_stream_class->write = do_write;
- camel_stream_class->flush = do_flush;
- camel_stream_class->close = do_close;
- camel_stream_class->eos = do_eos;
- camel_stream_class->reset = do_reset;
-
-}
-
-static void
-camel_stream_filter_init (CamelStreamFilter *obj)
-{
- struct _CamelStreamFilterPrivate *p;
-
- _PRIVATE(obj) = p = g_malloc0(sizeof(*p));
- p->realbuffer = g_malloc(READ_SIZE + READ_PAD);
- p->buffer = p->realbuffer + READ_PAD;
- p->last_was_read = TRUE;
-}
-
-static void
-camel_stream_filter_finalize(CamelObject *o)
-{
- CamelStreamFilter *filter = (CamelStreamFilter *)o;
- struct _CamelStreamFilterPrivate *p = _PRIVATE(filter);
- struct _filter *fn, *f;
-
- f = p->filters;
- while (f) {
- fn = f->next;
- camel_object_unref((CamelObject *)f->filter);
- g_free(f);
- f = fn;
- }
- g_free(p->realbuffer);
- g_free(p);
- camel_object_unref((CamelObject *)filter->source);
-}
-
-CamelType
-camel_stream_filter_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (CAMEL_STREAM_TYPE, "CamelStreamFilter",
- sizeof (CamelStreamFilter),
- sizeof (CamelStreamFilterClass),
- (CamelObjectClassInitFunc) camel_stream_filter_class_init,
- NULL,
- (CamelObjectInitFunc) camel_stream_filter_init,
- (CamelObjectFinalizeFunc) camel_stream_filter_finalize);
- }
-
- return type;
-}
-
-/**
- * camel_stream_filter_new:
- *
- * Create a new CamelStreamFilter object.
- *
- * Return value: A new CamelStreamFilter object.
- **/
-CamelStreamFilter *
-camel_stream_filter_new_with_stream(CamelStream *stream)
-{
- CamelStreamFilter *new = CAMEL_STREAM_FILTER ( camel_object_new (camel_stream_filter_get_type ()));
-
- new->source = stream;
- camel_object_ref ((CamelObject *)stream);
-
- return new;
-}
-
-/**
- * camel_stream_filter_add:
- * @filter: Initialised CamelStreamFilter.
- * @mf: Filter to perform processing on stream.
- *
- * Add a new CamelMimeFilter to execute during the processing of this
- * stream. Each filter added is processed after the previous one.
- *
- * Note that a filter should only be added to a single stream
- * at a time, otherwise unpredictable results may occur.
- *
- * Return value: A filter id for this CamelStreamFilter.
- **/
-int
-camel_stream_filter_add(CamelStreamFilter *filter, CamelMimeFilter *mf)
-{
- struct _CamelStreamFilterPrivate *p = _PRIVATE(filter);
- struct _filter *fn, *f;
-
- fn = g_malloc(sizeof(*fn));
- fn->id = p->filterid++;
- fn->filter = mf;
- camel_object_ref((CamelObject *)mf);
-
- /* sure, we could use a GList, but we wouldn't save much */
- f = (struct _filter *)&p->filters;
- while (f->next)
- f = f->next;
- f->next = fn;
- fn->next = NULL;
- return fn->id;
-}
-
-/**
- * camel_stream_filter_remove:
- * @filter: Initialised CamelStreamFilter.
- * @id: Filter id, as returned from camel_stream_filter_add().
- *
- * Remove a processing filter from the stream, by id.
- **/
-void
-camel_stream_filter_remove(CamelStreamFilter *filter, int id)
-{
- struct _CamelStreamFilterPrivate *p = _PRIVATE(filter);
- struct _filter *fn, *f;
-
- f = (struct _filter *)&p->filters;
- while (f && f->next) {
- fn = f->next;
- if (fn->id == id) {
- f->next = fn->next;
- camel_object_unref((CamelObject *)fn->filter);
- g_free(fn);
- }
- f = f->next;
- }
-}
-
-static ssize_t
-do_read (CamelStream *stream, char *buffer, size_t n)
-{
- CamelStreamFilter *filter = (CamelStreamFilter *)stream;
- struct _CamelStreamFilterPrivate *p = _PRIVATE(filter);
- ssize_t size;
- struct _filter *f;
-
- p->last_was_read = TRUE;
-
- if (p->filteredlen<=0) {
- int presize = READ_SIZE;
-
- size = camel_stream_read(filter->source, p->buffer, READ_SIZE);
- if (size <= 0) {
- /* this is somewhat untested */
- if (camel_stream_eos(filter->source)) {
- f = p->filters;
- p->filtered = p->buffer;
- p->filteredlen = 0;
- while (f) {
- camel_mime_filter_complete(f->filter, p->filtered, p->filteredlen,
- presize, &p->filtered, &p->filteredlen, &presize);
- f = f->next;
- }
- size = p->filteredlen;
- }
- if (size <= 0)
- return size;
- } else {
- f = p->filters;
- p->filtered = p->buffer;
- p->filteredlen = size;
-
- d(printf ("\n\nOriginal content: '"));
- d(fwrite(p->filtered, sizeof(char), p->filteredlen, stdout));
- d(printf("'\n"));
-
- while (f) {
- camel_mime_filter_filter(f->filter, p->filtered, p->filteredlen, presize,
- &p->filtered, &p->filteredlen, &presize);
-
- d(printf ("Filtered content (%s): '",
- camel_type_to_name(((CamelObject *)f->filter)->s.type)));
- d(fwrite(p->filtered, sizeof(char), p->filteredlen, stdout));
- d(printf("'\n"));
-
- f = f->next;
- }
- }
- }
-
- size = MIN(n, p->filteredlen);
- memcpy(buffer, p->filtered, size);
- p->filteredlen -= size;
- p->filtered += size;
-
- return size;
-}
-
-/* Note: Since the caller expects to write out as much as they asked us to
- write (for 'success'), we return what they asked us to write (for 'success')
- rather than the true number of written bytes */
-static ssize_t
-do_write (CamelStream *stream, const char *buf, size_t n)
-{
- CamelStreamFilter *filter = (CamelStreamFilter *)stream;
- struct _CamelStreamFilterPrivate *p = _PRIVATE(filter);
- struct _filter *f;
- int presize;
- char *buffer = (char *)buf;
- size_t len = n;
-
- p->last_was_read = FALSE;
-
- d(printf ("\n\nWriting: Original content: '"));
- d(fwrite(buffer, sizeof(char), len, stdout));
- d(printf("'\n"));
-
- f = p->filters;
- presize = 0;
- while (f) {
- camel_mime_filter_filter(f->filter, buffer, len, presize, &buffer, &len, &presize);
-
- d(printf ("Filtered content (%s): '",
- camel_type_to_name(((CamelObject *)f->filter)->s.type)));
- d(fwrite(buffer, sizeof(char), len, stdout));
- d(printf("'\n"));
-
- f = f->next;
- }
-
- if (camel_stream_write(filter->source, buffer, len) != len)
- return -1;
-
- return n;
-}
-
-static int
-do_flush (CamelStream *stream)
-{
- CamelStreamFilter *filter = (CamelStreamFilter *)stream;
- struct _CamelStreamFilterPrivate *p = _PRIVATE(filter);
- struct _filter *f;
- char *buffer;
- int len, presize;
-
- if (p->last_was_read) {
- g_warning("Flushing a filter stream without writing to it");
- return 0;
- }
-
- buffer = "";
- len = 0;
- presize = 0;
- f = p->filters;
-
- d(printf ("\n\nFlushing: Original content: '"));
- d(fwrite(buffer, sizeof(char), len, stdout));
- d(printf("'\n"));
-
- while (f) {
- camel_mime_filter_complete(f->filter, buffer, len, presize, &buffer, &len, &presize);
-
- d(printf ("Filtered content (%s): '",
- camel_type_to_name(((CamelObject *)f->filter)->s.type)));
- d(fwrite(buffer, sizeof(char), len, stdout));
- d(printf("'\n"));
-
- f = f->next;
- }
- if (len > 0 && camel_stream_write(filter->source, buffer, len) == -1)
- return -1;
- return camel_stream_flush(filter->source);
-}
-
-static int
-do_close (CamelStream *stream)
-{
- CamelStreamFilter *filter = (CamelStreamFilter *)stream;
- struct _CamelStreamFilterPrivate *p = _PRIVATE(filter);
-
- if (!p->last_was_read) {
- do_flush(stream);
- }
- return camel_stream_close(filter->source);
-}
-
-static gboolean
-do_eos (CamelStream *stream)
-{
- CamelStreamFilter *filter = (CamelStreamFilter *)stream;
- struct _CamelStreamFilterPrivate *p = _PRIVATE(filter);
-
- if (p->filteredlen > 0)
- return FALSE;
-
- return camel_stream_eos(filter->source);
-}
-
-static int
-do_reset (CamelStream *stream)
-{
- CamelStreamFilter *filter = (CamelStreamFilter *)stream;
- struct _CamelStreamFilterPrivate *p = _PRIVATE(filter);
- struct _filter *f;
-
- p->filteredlen = 0;
-
- /* and reset filters */
- f = p->filters;
- while (f) {
- camel_mime_filter_reset(f->filter);
- f = f->next;
- }
-
- return camel_stream_reset(filter->source);
-}
-
diff --git a/camel/camel-stream-filter.h b/camel/camel-stream-filter.h
deleted file mode 100644
index b3906eef31..0000000000
--- a/camel/camel-stream-filter.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef _CAMEL_STREAM_FILTER_H
-#define _CAMEL_STREAM_FILTER_H
-
-#include <camel/camel-stream.h>
-#include <camel/camel-mime-filter.h>
-
-#define CAMEL_STREAM_FILTER(obj) CAMEL_CHECK_CAST (obj, camel_stream_filter_get_type (), CamelStreamFilter)
-#define CAMEL_STREAM_FILTER_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_stream_filter_get_type (), CamelStreamFilterClass)
-#define CAMEL_IS_STREAM_FILTER(obj) CAMEL_CHECK_TYPE (obj, camel_stream_filter_get_type ())
-
-typedef struct _CamelStreamFilterClass CamelStreamFilterClass;
-
-struct _CamelStreamFilter {
- CamelStream parent;
-
- CamelStream *source;
-
- struct _CamelStreamFilterPrivate *priv;
-};
-
-struct _CamelStreamFilterClass {
- CamelStreamClass parent_class;
-};
-
-guint camel_stream_filter_get_type (void);
-
-CamelStreamFilter *camel_stream_filter_new_with_stream (CamelStream *stream);
-
-int camel_stream_filter_add (CamelStreamFilter *filter, CamelMimeFilter *);
-void camel_stream_filter_remove (CamelStreamFilter *filter, int id);
-
-#endif /* ! _CAMEL_STREAM_FILTER_H */
diff --git a/camel/camel-stream-fs.c b/camel/camel-stream-fs.c
deleted file mode 100644
index 7ecafd88ff..0000000000
--- a/camel/camel-stream-fs.c
+++ /dev/null
@@ -1,374 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; fill-column: 160 -*- */
-/* camel-stream-fs.c : file system based stream */
-
-/*
- * Authors: Bertrand Guiheneuf <bertrand@helixcode.com>
- * Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <string.h>
-
-#include "camel-operation.h"
-#include "camel-stream-fs.h"
-#include "camel-session.h"
-
-static CamelSeekableStreamClass *parent_class = NULL;
-
-/* Returns the class for a CamelStreamFS */
-#define CSFS_CLASS(so) CAMEL_STREAM_FS_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-static ssize_t stream_read (CamelStream *stream, char *buffer, size_t n);
-static ssize_t stream_write (CamelStream *stream, const char *buffer, size_t n);
-static int stream_flush (CamelStream *stream);
-static int stream_close (CamelStream *stream);
-static off_t stream_seek (CamelSeekableStream *stream, off_t offset,
- CamelStreamSeekPolicy policy);
-
-static void
-camel_stream_fs_class_init (CamelStreamFsClass *camel_stream_fs_class)
-{
- CamelSeekableStreamClass *camel_seekable_stream_class =
- CAMEL_SEEKABLE_STREAM_CLASS (camel_stream_fs_class);
- CamelStreamClass *camel_stream_class =
- CAMEL_STREAM_CLASS (camel_stream_fs_class);
-
- parent_class = CAMEL_SEEKABLE_STREAM_CLASS (camel_type_get_global_classfuncs (camel_seekable_stream_get_type ()));
-
- /* virtual method overload */
- camel_stream_class->read = stream_read;
- camel_stream_class->write = stream_write;
- camel_stream_class->flush = stream_flush;
- camel_stream_class->close = stream_close;
-
- camel_seekable_stream_class->seek = stream_seek;
-}
-
-static void
-camel_stream_fs_init (gpointer object, gpointer klass)
-{
- CamelStreamFs *stream = CAMEL_STREAM_FS (object);
-
- stream->fd = -1;
- ((CamelSeekableStream *)stream)->bound_end = CAMEL_STREAM_UNBOUND;
-}
-
-static void
-camel_stream_fs_finalize (CamelObject *object)
-{
- CamelStreamFs *stream_fs = CAMEL_STREAM_FS (object);
-
- if (stream_fs->fd != -1)
- close (stream_fs->fd);
-}
-
-
-CamelType
-camel_stream_fs_get_type (void)
-{
- static CamelType camel_stream_fs_type = CAMEL_INVALID_TYPE;
-
- if (camel_stream_fs_type == CAMEL_INVALID_TYPE) {
- camel_stream_fs_type = camel_type_register (camel_seekable_stream_get_type (), "CamelStreamFs",
- sizeof (CamelStreamFs),
- sizeof (CamelStreamFsClass),
- (CamelObjectClassInitFunc) camel_stream_fs_class_init,
- NULL,
- (CamelObjectInitFunc) camel_stream_fs_init,
- (CamelObjectFinalizeFunc) camel_stream_fs_finalize);
- }
-
- return camel_stream_fs_type;
-}
-
-/**
- * camel_stream_fs_new_with_fd:
- * @fd: a file descriptor
- *
- * Returns a stream associated with the given file descriptor.
- * When the stream is destroyed, the file descriptor will be closed.
- *
- * Return value: the stream
- **/
-CamelStream *
-camel_stream_fs_new_with_fd (int fd)
-{
- CamelStreamFs *stream_fs;
- off_t offset;
-
- if (fd == -1)
- return NULL;
-
- stream_fs = CAMEL_STREAM_FS (camel_object_new (camel_stream_fs_get_type ()));
- stream_fs->fd = fd;
- offset = lseek (fd, 0, SEEK_CUR);
- if (offset == -1)
- offset = 0;
- CAMEL_SEEKABLE_STREAM (stream_fs)->position = offset;
-
- return CAMEL_STREAM (stream_fs);
-}
-
-/**
- * camel_stream_fs_new_with_fd_and_bounds:
- * @fd: a file descriptor
- * @start: the first valid position in the file
- * @end: the first invalid position in the file, or CAMEL_STREAM_UNBOUND
- *
- * Returns a stream associated with the given file descriptor and bounds.
- * When the stream is destroyed, the file descriptor will be closed.
- *
- * Return value: the stream
- **/
-CamelStream *
-camel_stream_fs_new_with_fd_and_bounds (int fd, off_t start, off_t end)
-{
- CamelStream *stream;
-
- stream = camel_stream_fs_new_with_fd (fd);
- camel_seekable_stream_set_bounds (CAMEL_SEEKABLE_STREAM (stream), start, end);
-
- return stream;
-}
-
-/**
- * camel_stream_fs_new_with_name:
- * @name: a local filename
- * @flags: flags as in open(2)
- * @mode: a file mode
- *
- * Creates a new CamelStream corresponding to the named file, flags,
- * and mode.
- *
- * Return value: the stream, or #NULL on error.
- **/
-CamelStream *
-camel_stream_fs_new_with_name (const char *name, int flags, mode_t mode)
-{
- int fd;
-
- fd = open (name, flags, mode);
- if (fd == -1) {
- return NULL;
- }
-
- return camel_stream_fs_new_with_fd (fd);
-}
-
-/**
- * camel_stream_fs_new_with_name_and_bounds:
- * @name: a local filename
- * @flags: flags as in open(2)
- * @mode: a file mode
- * @start: the first valid position in the file
- * @end: the first invalid position in the file, or CAMEL_STREAM_UNBOUND
- *
- * Creates a new CamelStream corresponding to the given arguments.
- *
- * Return value: the stream, or NULL on error.
- **/
-CamelStream *
-camel_stream_fs_new_with_name_and_bounds (const char *name, int flags,
- mode_t mode, off_t start, off_t end)
-{
- CamelStream *stream;
-
- stream = camel_stream_fs_new_with_name (name, flags, mode);
- if (stream == NULL)
- return NULL;
-
- camel_seekable_stream_set_bounds (CAMEL_SEEKABLE_STREAM (stream),
- start, end);
-
- return stream;
-}
-
-
-static ssize_t
-stream_read (CamelStream *stream, char *buffer, size_t n)
-{
- CamelStreamFs *stream_fs = CAMEL_STREAM_FS (stream);
- CamelSeekableStream *seekable = CAMEL_SEEKABLE_STREAM (stream);
- ssize_t nread;
- int cancel_fd;
-
- if (camel_operation_cancel_check(NULL)) {
- errno = EINTR;
- return -1;
- }
-
- if (seekable->bound_end != CAMEL_STREAM_UNBOUND)
- n = MIN (seekable->bound_end - seekable->position, n);
-
- cancel_fd = camel_operation_cancel_fd(NULL);
- if (cancel_fd == -1) {
- do {
- nread = read (stream_fs->fd, buffer, n);
- } while (nread == -1 && errno == EINTR);
- } else {
- fd_set rdset;
- int flags, fdmax;
-
- flags = fcntl(stream_fs->fd, F_GETFL);
- fcntl(stream_fs->fd, F_SETFL, flags | O_NONBLOCK);
- FD_ZERO(&rdset);
- FD_SET(stream_fs->fd, &rdset);
- FD_SET(cancel_fd, &rdset);
- fdmax = MAX(stream_fs->fd, cancel_fd)+1;
- select(fdmax, &rdset, 0, 0, NULL);
- if (FD_ISSET(cancel_fd, &rdset)) {
- fcntl(stream_fs->fd, F_SETFL, flags);
- errno = EINTR;
- return -1;
- }
- nread = read(stream_fs->fd, buffer, n);
- fcntl(stream_fs->fd, F_SETFL, flags);
- }
-
- if (nread > 0)
- seekable->position += nread;
- else if (nread == 0)
- stream->eos = TRUE;
-
- return nread;
-}
-
-static ssize_t
-stream_write (CamelStream *stream, const char *buffer, size_t n)
-{
- CamelStreamFs *stream_fs = CAMEL_STREAM_FS (stream);
- CamelSeekableStream *seekable = CAMEL_SEEKABLE_STREAM (stream);
- ssize_t v, written = 0;
- int cancel_fd;
-
- if (camel_operation_cancel_check(NULL)) {
- errno = EINTR;
- return -1;
- }
-
- if (seekable->bound_end != CAMEL_STREAM_UNBOUND)
- n = MIN (seekable->bound_end - seekable->position, n);
-
- cancel_fd = camel_operation_cancel_fd(NULL);
- if (cancel_fd == -1) {
- do {
- v = write (stream_fs->fd, buffer+written, n-written);
- if (v > 0)
- written += v;
- } while (v == -1 && errno == EINTR);
- } else {
- fd_set rdset, wrset;
- int flags, fdmax;
-
- flags = fcntl(stream_fs->fd, F_GETFL);
- fcntl(stream_fs->fd, F_SETFL, flags | O_NONBLOCK);
- fdmax = MAX(stream_fs->fd, cancel_fd)+1;
- do {
- FD_ZERO(&rdset);
- FD_ZERO(&wrset);
- FD_SET(stream_fs->fd, &wrset);
- FD_SET(cancel_fd, &rdset);
- select(fdmax, &rdset, &wrset, 0, NULL);
- if (FD_ISSET(cancel_fd, &rdset)) {
- fcntl(stream_fs->fd, F_SETFL, flags);
- errno = EINTR;
- return -1;
- }
- v = write(stream_fs->fd, buffer+written, n-written);
- if (v>0)
- written += v;
- } while (v != -1 && written < n);
- fcntl(stream_fs->fd, F_SETFL, flags);
- }
-
- if (written > 0)
- seekable->position += written;
- else if (v == -1)
- return -1;
-
- return written;
-}
-
-static int
-stream_flush (CamelStream *stream)
-{
- return fsync(((CamelStreamFs *)stream)->fd);
-}
-
-static int
-stream_close (CamelStream *stream)
-{
- if (close (((CamelStreamFs *)stream)->fd) == -1)
- return -1;
-
- ((CamelStreamFs *)stream)->fd = -1;
- return 0;
-}
-
-static off_t
-stream_seek (CamelSeekableStream *stream, off_t offset, CamelStreamSeekPolicy policy)
-{
- CamelStreamFs *stream_fs = CAMEL_STREAM_FS (stream);
- off_t real = 0;
-
- switch (policy) {
- case CAMEL_STREAM_SET:
- real = offset;
- break;
- case CAMEL_STREAM_CUR:
- real = stream->position + offset;
- break;
- case CAMEL_STREAM_END:
- if (stream->bound_end == CAMEL_STREAM_UNBOUND) {
- real = lseek(stream_fs->fd, offset, SEEK_END);
- if (real != -1) {
- if (real<stream->bound_start)
- real = stream->bound_start;
- stream->position = real;
- }
- return real;
- }
- real = stream->bound_end + offset;
- break;
- }
-
- if (stream->bound_end != CAMEL_STREAM_UNBOUND)
- real = MIN (real, stream->bound_end);
- real = MAX (real, stream->bound_start);
-
- real = lseek(stream_fs->fd, real, SEEK_SET);
- if (real == -1)
- return -1;
-
- if (real != stream->position && ((CamelStream *)stream)->eos)
- ((CamelStream *)stream)->eos = FALSE;
-
- stream->position = real;
-
- return real;
-}
diff --git a/camel/camel-stream-fs.h b/camel/camel-stream-fs.h
deleted file mode 100644
index 4393b0e3eb..0000000000
--- a/camel/camel-stream-fs.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-stream-fs.h :stream based on unix filesystem */
-
-/*
- * Author:
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_STREAM_FS_H
-#define CAMEL_STREAM_FS_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-/* for open flags */
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-
-#include <camel/camel-seekable-stream.h>
-
-#define CAMEL_STREAM_FS_TYPE (camel_stream_fs_get_type ())
-#define CAMEL_STREAM_FS(obj) (CAMEL_CHECK_CAST((obj), CAMEL_STREAM_FS_TYPE, CamelStreamFs))
-#define CAMEL_STREAM_FS_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_STREAM_FS_TYPE, CamelStreamFsClass))
-#define CAMEL_IS_STREAM_FS(o) (CAMEL_CHECK_TYPE((o), CAMEL_STREAM_FS_TYPE))
-
-struct _CamelStreamFs
-{
- CamelSeekableStream parent_object;
-
- int fd; /* file descriptor on the underlying file */
-};
-
-typedef struct {
- CamelSeekableStreamClass parent_class;
-
-} CamelStreamFsClass;
-
-/* Standard Camel function */
-CamelType camel_stream_fs_get_type (void);
-
-/* public methods */
-CamelStream * camel_stream_fs_new_with_name (const char *name, int flags, mode_t mode);
-CamelStream * camel_stream_fs_new_with_name_and_bounds (const char *name, int flags, mode_t mode,
- off_t start, off_t end);
-
-CamelStream * camel_stream_fs_new_with_fd (int fd);
-CamelStream * camel_stream_fs_new_with_fd_and_bounds (int fd, off_t start, off_t end);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_STREAM_FS_H */
diff --git a/camel/camel-stream-mem.c b/camel/camel-stream-mem.c
deleted file mode 100644
index afaeca9b0e..0000000000
--- a/camel/camel-stream-mem.c
+++ /dev/null
@@ -1,251 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-stream-mem.c: memory buffer based stream */
-
-/*
- * Authors: Bertrand Guiheneuf <bertrand@helixcode.com>
- * Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <errno.h>
-
-#include "camel-stream-mem.h"
-
-static CamelSeekableStreamClass *parent_class = NULL;
-
-/* Returns the class for a CamelStreamMem */
-#define CSM_CLASS(so) CAMEL_STREAM_MEM_CLASS(CAMEL_OBJECT_GET_CLASS(so))
-
-static ssize_t stream_read (CamelStream *stream, char *buffer, size_t n);
-static ssize_t stream_write (CamelStream *stream, const char *buffer, size_t n);
-static gboolean stream_eos (CamelStream *stream);
-static off_t stream_seek (CamelSeekableStream *stream, off_t offset,
- CamelStreamSeekPolicy policy);
-
-static void camel_stream_mem_finalize (CamelObject *object);
-
-static void
-camel_stream_mem_class_init (CamelStreamMemClass *camel_stream_mem_class)
-{
- CamelSeekableStreamClass *camel_seekable_stream_class =
- CAMEL_SEEKABLE_STREAM_CLASS (camel_stream_mem_class);
- CamelStreamClass *camel_stream_class =
- CAMEL_STREAM_CLASS (camel_stream_mem_class);
-
- parent_class = CAMEL_SEEKABLE_STREAM_CLASS( camel_type_get_global_classfuncs( CAMEL_SEEKABLE_STREAM_TYPE ) );
-
- /* virtual method overload */
- camel_stream_class->read = stream_read;
- camel_stream_class->write = stream_write;
- camel_stream_class->eos = stream_eos;
-
- camel_seekable_stream_class->seek = stream_seek;
-}
-
-static void
-camel_stream_mem_init (CamelObject *object)
-{
- CamelStreamMem *stream_mem = CAMEL_STREAM_MEM (object);
-
- stream_mem->owner = FALSE;
- stream_mem->buffer = 0;
-}
-
-CamelType
-camel_stream_mem_get_type (void)
-{
- static CamelType camel_stream_mem_type = CAMEL_INVALID_TYPE;
-
- if (camel_stream_mem_type == CAMEL_INVALID_TYPE) {
- camel_stream_mem_type = camel_type_register( CAMEL_SEEKABLE_STREAM_TYPE,
- "CamelStreamMem",
- sizeof( CamelStreamMem ),
- sizeof( CamelStreamMemClass ),
- (CamelObjectClassInitFunc) camel_stream_mem_class_init,
- NULL,
- (CamelObjectInitFunc) camel_stream_mem_init,
- (CamelObjectFinalizeFunc) camel_stream_mem_finalize );
- }
-
- return camel_stream_mem_type;
-}
-
-
-CamelStream *
-camel_stream_mem_new (void)
-{
- return camel_stream_mem_new_with_byte_array (g_byte_array_new ());
-}
-
-CamelStream *
-camel_stream_mem_new_with_buffer (const char *buffer, size_t len)
-{
- GByteArray *ba;
-
- ba = g_byte_array_new ();
- g_byte_array_append (ba, (const guint8 *)buffer, len);
- return camel_stream_mem_new_with_byte_array (ba);
-}
-
-CamelStream *
-camel_stream_mem_new_with_byte_array (GByteArray *byte_array)
-{
- CamelStreamMem *stream_mem;
-
- stream_mem = CAMEL_STREAM_MEM( camel_object_new (CAMEL_STREAM_MEM_TYPE) );
- stream_mem->buffer = byte_array;
- stream_mem->owner = TRUE;
-
- return CAMEL_STREAM (stream_mem);
-}
-
-/* note: with these functions the caller is the 'owner' of the buffer */
-void camel_stream_mem_set_byte_array (CamelStreamMem *s, GByteArray *buffer)
-{
- if (s->buffer && s->owner)
- g_byte_array_free(s->buffer, TRUE);
- s->owner = FALSE;
- s->buffer = buffer;
-}
-
-void camel_stream_mem_set_buffer (CamelStreamMem *s, const char *buffer, size_t len)
-{
- GByteArray *ba;
-
- ba = g_byte_array_new ();
- g_byte_array_append(ba, (const guint8 *)buffer, len);
- camel_stream_mem_set_byte_array(s, ba);
- s->owner = TRUE;
-}
-
-static void
-camel_stream_mem_finalize (CamelObject *object)
-{
- CamelStreamMem *stream_mem = CAMEL_STREAM_MEM (object);
-
- if (stream_mem->buffer && stream_mem->owner)
- g_byte_array_free (stream_mem->buffer, TRUE);
-
- /* Will be called automagically in the Camel Type System!
- * Wheeee!
- * G_TK_OBJECT_CLASS (parent_class)->finalize (object);
- */
-}
-
-static ssize_t
-stream_read (CamelStream *stream, char *buffer, size_t n)
-{
- CamelStreamMem *camel_stream_mem = CAMEL_STREAM_MEM (stream);
- CamelSeekableStream *seekable = CAMEL_SEEKABLE_STREAM (stream);
- ssize_t nread;
-
- if (seekable->bound_end != CAMEL_STREAM_UNBOUND)
- n = MIN(seekable->bound_end - seekable->position, n);
-
- nread = MIN (n, camel_stream_mem->buffer->len - seekable->position);
- if (nread > 0) {
- memcpy (buffer, camel_stream_mem->buffer->data + seekable->position, nread);
- seekable->position += nread;
- } else
- nread = 0;
-
- return nread;
-}
-
-static ssize_t
-stream_write (CamelStream *stream, const char *buffer, size_t n)
-{
- CamelStreamMem *stream_mem = CAMEL_STREAM_MEM (stream);
- CamelSeekableStream *seekable = CAMEL_SEEKABLE_STREAM (stream);
- ssize_t nwrite = n;
-
- if (seekable->bound_end != CAMEL_STREAM_UNBOUND)
- nwrite = MIN(seekable->bound_end - seekable->position, n);
-
-#ifndef NO_WARNINGS
-#warning "g_byte_arrays use g_malloc and so are totally unsuitable for this object"
-#endif
- if (seekable->position == stream_mem->buffer->len) {
- g_byte_array_append(stream_mem->buffer, (const guint8 *)buffer, nwrite);
- } else {
- g_byte_array_set_size(stream_mem->buffer, nwrite + stream_mem->buffer->len);
- memcpy(stream_mem->buffer->data + seekable->position, buffer, nwrite);
- }
- seekable->position += nwrite;
-
- return nwrite;
-}
-
-static gboolean
-stream_eos (CamelStream *stream)
-{
- CamelStreamMem *stream_mem = CAMEL_STREAM_MEM (stream);
- CamelSeekableStream *seekable_stream = CAMEL_SEEKABLE_STREAM (stream);
-
- return stream_mem->buffer->len <= seekable_stream->position;
-}
-
-static off_t
-stream_seek (CamelSeekableStream *stream, off_t offset,
- CamelStreamSeekPolicy policy)
-{
- off_t position;
- CamelStreamMem *stream_mem = CAMEL_STREAM_MEM (stream);
-
- switch (policy) {
- case CAMEL_STREAM_SET:
- position = offset;
- break;
- case CAMEL_STREAM_CUR:
- position = stream->position + offset;
- break;
- case CAMEL_STREAM_END:
- position = (stream_mem->buffer)->len + offset;
- break;
- default:
- position = offset;
- break;
- }
-
- if (stream->bound_end != CAMEL_STREAM_UNBOUND)
- position = MIN (position, stream->bound_end);
- if (stream->bound_start != CAMEL_STREAM_UNBOUND)
- position = MAX (position, 0);
- else
- position = MAX (position, stream->bound_start);
-
- if (position > stream_mem->buffer->len) {
- int oldlen = stream_mem->buffer->len;
- g_byte_array_set_size (stream_mem->buffer, position);
- memset (stream_mem->buffer->data + oldlen, 0,
- position - oldlen);
- }
-
- stream->position = position;
-
- return position;
-}
diff --git a/camel/camel-stream-mem.h b/camel/camel-stream-mem.h
deleted file mode 100644
index 5ac13750f4..0000000000
--- a/camel/camel-stream-mem.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-stream-mem.h: stream based on memory buffer */
-
-/*
- * Authors: Bertrand Guiheneuf <bertrand@helixcode.com>
- * Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_STREAM_MEM_H
-#define CAMEL_STREAM_MEM_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <sys/types.h>
-#include <camel/camel-seekable-stream.h>
-
-#define CAMEL_STREAM_MEM_TYPE (camel_stream_mem_get_type ())
-#define CAMEL_STREAM_MEM(obj) (CAMEL_CHECK_CAST((obj), CAMEL_STREAM_MEM_TYPE, CamelStreamMem))
-#define CAMEL_STREAM_MEM_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_STREAM_MEM_TYPE, CamelStreamMemClass))
-#define CAMEL_IS_STREAM_MEM(o) (CAMEL_CHECK_TYPE((o), CAMEL_STREAM_MEM_TYPE))
-
-typedef struct _CamelStreamMemClass CamelStreamMemClass;
-
-struct _CamelStreamMem {
- CamelSeekableStream parent_object;
-
- gboolean owner; /* do we own the buffer? */
- GByteArray *buffer;
-};
-
-struct _CamelStreamMemClass {
- CamelSeekableStreamClass parent_class;
-
- /* Virtual methods */
-};
-
-/* Standard Camel function */
-CamelType camel_stream_mem_get_type (void);
-
-/* public methods */
-CamelStream *camel_stream_mem_new(void);
-CamelStream *camel_stream_mem_new_with_byte_array(GByteArray *buffer);
-CamelStream *camel_stream_mem_new_with_buffer(const char *buffer, size_t len);
-
-/* these are really only here for implementing classes */
-void camel_stream_mem_set_byte_array(CamelStreamMem *, GByteArray *buffer);
-void camel_stream_mem_set_buffer(CamelStreamMem *, const char *buffer, size_t len);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_STREAM_MEM_H */
diff --git a/camel/camel-stream-null.c b/camel/camel-stream-null.c
deleted file mode 100644
index 293dd36736..0000000000
--- a/camel/camel-stream-null.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; fill-column: 160 -*- */
-/* camel-stream.c : abstract class for a stream */
-
-/*
- * Author:
- * Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "camel-stream-null.h"
-
-static CamelObjectClass *parent_class = NULL;
-
-/* Returns the class for a CamelStream */
-#define CS_CLASS(so) CAMEL_STREAM_NULL_CLASS(CAMEL_OBJECT_GET_CLASS(so))
-
-/* dummy implementations, for a NULL stream */
-static ssize_t stream_read (CamelStream *stream, char *buffer, size_t n) { return 0; }
-static ssize_t stream_write (CamelStream *stream, const char *buffer, size_t n) { return n; }
-static int stream_close (CamelStream *stream) { return 0; }
-static int stream_flush (CamelStream *stream) { return 0; }
-static gboolean stream_eos (CamelStream *stream) { return TRUE; }
-static int stream_reset (CamelStream *stream) { return 0; }
-
-static void
-camel_stream_null_class_init (CamelStreamClass *camel_stream_null_class)
-{
- CamelStreamClass *camel_stream_class = (CamelStreamClass *)camel_stream_null_class;
-
- parent_class = camel_type_get_global_classfuncs( CAMEL_OBJECT_TYPE );
-
- /* virtual method definition */
- camel_stream_class->read = stream_read;
- camel_stream_class->write = stream_write;
- camel_stream_class->close = stream_close;
- camel_stream_class->flush = stream_flush;
- camel_stream_class->eos = stream_eos;
- camel_stream_class->reset = stream_reset;
-}
-
-CamelType
-camel_stream_null_get_type (void)
-{
- static CamelType camel_stream_null_type = CAMEL_INVALID_TYPE;
-
- if (camel_stream_null_type == CAMEL_INVALID_TYPE) {
- camel_stream_null_type = camel_type_register( camel_stream_get_type(),
- "CamelStreamNull",
- sizeof( CamelStreamNull ),
- sizeof( CamelStreamNullClass ),
- (CamelObjectClassInitFunc) camel_stream_null_class_init,
- NULL,
- NULL,
- NULL );
- }
-
- return camel_stream_null_type;
-}
-
-/**
- * camel_stream_null_new:
- *
- * Returns a NULL stream. A null stream is always at eof, and
- * always returns success for all reads and writes.
- *
- * Return value: the stream
- **/
-CamelStream *
-camel_stream_null_new(void)
-{
- return (CamelStream *)camel_object_new(camel_stream_null_get_type ());
-}
diff --git a/camel/camel-stream-null.h b/camel/camel-stream-null.h
deleted file mode 100644
index e12effdcad..0000000000
--- a/camel/camel-stream-null.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef _CAMEL_STREAM_NULL_H
-#define _CAMEL_STREAM_NULL_H
-
-#include <camel/camel-stream.h>
-
-#define CAMEL_STREAM_NULL(obj) CAMEL_CHECK_CAST (obj, camel_stream_null_get_type (), CamelStreamNull)
-#define CAMEL_STREAM_NULL_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_stream_null_get_type (), CamelStreamNullClass)
-#define CAMEL_IS_STREAM_NULL(obj) CAMEL_CHECK_TYPE (obj, camel_stream_null_get_type ())
-
-typedef struct _CamelStreamNullClass CamelStreamNullClass;
-
-struct _CamelStreamNull {
- CamelStream parent;
-};
-
-struct _CamelStreamNullClass {
- CamelStreamClass parent_class;
-};
-
-guint camel_stream_null_get_type (void);
-
-CamelStream *camel_stream_null_new (void);
-
-#endif /* ! _CAMEL_STREAM_NULL_H */
diff --git a/camel/camel-stream.c b/camel/camel-stream.c
deleted file mode 100644
index a883905e8d..0000000000
--- a/camel/camel-stream.c
+++ /dev/null
@@ -1,275 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; fill-column: 160 -*- */
-/* camel-stream.c : abstract class for a stream */
-
-/*
- * Author:
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include "camel-stream.h"
-
-static CamelObjectClass *parent_class = NULL;
-
-/* Returns the class for a CamelStream */
-#define CS_CLASS(so) CAMEL_STREAM_CLASS(CAMEL_OBJECT_GET_CLASS(so))
-
-/* default implementations, do very little */
-static ssize_t stream_read (CamelStream *stream, char *buffer, size_t n) { return 0; }
-static ssize_t stream_write (CamelStream *stream, const char *buffer, size_t n) { return n; }
-static int stream_close (CamelStream *stream) { return 0; }
-static int stream_flush (CamelStream *stream) { return 0; }
-static gboolean stream_eos (CamelStream *stream) { return stream->eos; }
-static int stream_reset (CamelStream *stream) { return 0; }
-
-static void
-camel_stream_class_init (CamelStreamClass *camel_stream_class)
-{
- parent_class = camel_type_get_global_classfuncs( CAMEL_OBJECT_TYPE );
-
- /* virtual method definition */
- camel_stream_class->read = stream_read;
- camel_stream_class->write = stream_write;
- camel_stream_class->close = stream_close;
- camel_stream_class->flush = stream_flush;
- camel_stream_class->eos = stream_eos;
- camel_stream_class->reset = stream_reset;
-}
-
-CamelType
-camel_stream_get_type (void)
-{
- static CamelType camel_stream_type = CAMEL_INVALID_TYPE;
-
- if (camel_stream_type == CAMEL_INVALID_TYPE) {
- camel_stream_type = camel_type_register( CAMEL_OBJECT_TYPE,
- "CamelStream",
- sizeof( CamelStream ),
- sizeof( CamelStreamClass ),
- (CamelObjectClassInitFunc) camel_stream_class_init,
- NULL,
- NULL,
- NULL );
- }
-
- return camel_stream_type;
-}
-
-/**
- * camel_stream_read:
- * @stream: a CamelStream.
- * @buffer: buffer where bytes pulled from the stream are stored.
- * @n: max number of bytes to read.
- *
- * Read at most @n bytes from the @stream object and stores them
- * in the buffer pointed at by @buffer.
- *
- * Return value: number of bytes actually read, or -1 on error and
- * set errno.
- **/
-ssize_t
-camel_stream_read (CamelStream *stream, char *buffer, size_t n)
-{
- g_return_val_if_fail (CAMEL_IS_STREAM (stream), -1);
- g_return_val_if_fail (n == 0 || buffer, -1);
-
- return CS_CLASS (stream)->read (stream, buffer, n);
-}
-
-/**
- * camel_stream_write:
- * @stream: a CamelStream object.
- * @buffer: buffer to write.
- * @n: number of bytes to write
- *
- * Write @n bytes from the buffer pointed at by @buffer into @stream.
- *
- * Return value: the number of bytes actually written to the stream,
- * or -1 on error.
- **/
-ssize_t
-camel_stream_write (CamelStream *stream, const char *buffer, size_t n)
-{
- g_return_val_if_fail (CAMEL_IS_STREAM (stream), -1);
- g_return_val_if_fail (n == 0 || buffer, -1);
-
- return CS_CLASS (stream)->write (stream, buffer, n);
-}
-
-/**
- * camel_stream_flush:
- * @stream: a CamelStream object
- *
- * Flushes the contents of the stream to its backing store. Only meaningful
- * on writable streams.
- *
- * Return value: -1 on error.
- **/
-int
-camel_stream_flush (CamelStream *stream)
-{
- g_return_val_if_fail (CAMEL_IS_STREAM (stream), -1);
-
- return CS_CLASS (stream)->flush (stream);
-}
-
-/**
- * camel_stream_close:
- * @stream:
- *
- * Close a stream.
- *
- * Return value: -1 on error.
- **/
-int
-camel_stream_close (CamelStream *stream)
-{
- g_return_val_if_fail (CAMEL_IS_STREAM (stream), -1);
-
- return CS_CLASS (stream)->close (stream);
-}
-
-/**
- * camel_stream_eos:
- * @stream: a CamelStream object
- *
- * Test if there are bytes left to read on the @stream object.
- *
- * Return value: %TRUE if all the contents on the stream has been read, or
- * %FALSE if information is still available.
- **/
-gboolean
-camel_stream_eos (CamelStream *stream)
-{
- g_return_val_if_fail (CAMEL_IS_STREAM (stream), TRUE);
-
- return CS_CLASS (stream)->eos (stream);
-}
-
-/**
- * camel_stream_reset: reset a stream
- * @stream: the stream object
- *
- * Reset a stream. That is, put it in a state where it can be read
- * from the beginning again. Not all streams in Camel are seekable,
- * but they must all be resettable.
- *
- * Return value: -1 on error.
- **/
-int
-camel_stream_reset (CamelStream *stream)
-{
- g_return_val_if_fail (CAMEL_IS_STREAM (stream), -1);
-
- return CS_CLASS (stream)->reset (stream);
-}
-
-/***************** Utility functions ********************/
-
-/**
- * camel_stream_write_string:
- * @stream: a stream object
- * @string: a string
- *
- * Writes the string to the stream.
- *
- * Return value: the number of characters output, -1 on error.
- **/
-ssize_t
-camel_stream_write_string (CamelStream *stream, const char *string)
-{
- return camel_stream_write (stream, string, strlen (string));
-}
-
-/**
- * camel_stream_printf:
- * @stream: a stream object
- * @fmt: a printf-style format string
- *
- * This printfs the given data to @stream.
- *
- * Return value: the number of characters output, -1 on error.
- **/
-ssize_t
-camel_stream_printf (CamelStream *stream, const char *fmt, ... )
-{
- va_list args;
- char *string;
- ssize_t ret;
-
- g_return_val_if_fail (CAMEL_IS_STREAM (stream), -1);
-
- va_start (args, fmt);
- string = g_strdup_vprintf (fmt, args);
- va_end (args);
-
- if (!string)
- return -1;
-
- ret = camel_stream_write (stream, string, strlen (string));
- g_free (string);
- return ret;
-}
-
-/**
- * camel_stream_write_to_stream:
- * @stream: Source CamelStream.
- * @output_stream: Destination CamelStream.
- *
- * Write all of a stream (until eos) into another stream, in a blocking
- * fashion.
- *
- * Return value: Returns -1 on error, or the number of bytes succesfully
- * copied across streams.
- **/
-ssize_t
-camel_stream_write_to_stream (CamelStream *stream, CamelStream *output_stream)
-{
- char tmp_buf[4096];
- ssize_t total = 0;
- ssize_t nb_read;
- ssize_t nb_written;
-
- g_return_val_if_fail (CAMEL_IS_STREAM (stream), -1);
- g_return_val_if_fail (CAMEL_IS_STREAM (output_stream), -1);
-
- while (!camel_stream_eos (stream)) {
- nb_read = camel_stream_read (stream, tmp_buf, sizeof (tmp_buf));
- if (nb_read < 0)
- return -1;
- else if (nb_read > 0) {
- nb_written = 0;
-
- while (nb_written < nb_read) {
- ssize_t len = camel_stream_write (output_stream, tmp_buf + nb_written,
- nb_read - nb_written);
- if (len < 0)
- return -1;
- nb_written += len;
- }
- total += nb_written;
- }
- }
- return total;
-}
diff --git a/camel/camel-stream.h b/camel/camel-stream.h
deleted file mode 100644
index 6a2517b0bb..0000000000
--- a/camel/camel-stream.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; fill-column: 160 -*- */
-/* camel-stream.h : class for an abstract stream */
-
-/*
- * Author:
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_STREAM_H
-#define CAMEL_STREAM_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <stdarg.h>
-#include <unistd.h>
-#include <camel/camel-object.h>
-
-#define CAMEL_STREAM_TYPE (camel_stream_get_type ())
-#define CAMEL_STREAM(obj) (CAMEL_CHECK_CAST((obj), CAMEL_STREAM_TYPE, CamelStream))
-#define CAMEL_STREAM_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_STREAM_TYPE, CamelStreamClass))
-#define CAMEL_IS_STREAM(o) (CAMEL_CHECK_TYPE((o), CAMEL_STREAM_TYPE))
-
-struct _CamelStream
-{
- CamelObject parent_object;
-
- gboolean eos;
-};
-
-typedef struct {
- CamelObjectClass parent_class;
-
- /* Virtual methods */
-
- ssize_t (*read) (CamelStream *stream, char *buffer, size_t n);
- ssize_t (*write) (CamelStream *stream, const char *buffer, size_t n);
- int (*close) (CamelStream *stream);
- int (*flush) (CamelStream *stream);
- gboolean (*eos) (CamelStream *stream);
- int (*reset) (CamelStream *stream);
-
-} CamelStreamClass;
-
-/* Standard Camel function */
-CamelType camel_stream_get_type (void);
-
-/* public methods */
-ssize_t camel_stream_read (CamelStream *stream, char *buffer, size_t n);
-ssize_t camel_stream_write (CamelStream *stream, const char *buffer, size_t n);
-int camel_stream_flush (CamelStream *stream);
-int camel_stream_close (CamelStream *stream);
-gboolean camel_stream_eos (CamelStream *stream);
-int camel_stream_reset (CamelStream *stream);
-
-/* utility macros and funcs */
-ssize_t camel_stream_write_string (CamelStream *stream, const char *string);
-ssize_t camel_stream_printf (CamelStream *stream, const char *fmt, ... ) G_GNUC_PRINTF (2, 3);
-ssize_t camel_stream_vprintf (CamelStream *stream, const char *fmt, va_list ap);
-
-/* Write a whole stream to another stream, until eof or error on
- * either stream.
- */
-ssize_t camel_stream_write_to_stream (CamelStream *stream, CamelStream *output_stream);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_STREAM_H */
diff --git a/camel/camel-tcp-stream-openssl.c b/camel/camel-tcp-stream-openssl.c
deleted file mode 100644
index 214269a433..0000000000
--- a/camel/camel-tcp-stream-openssl.c
+++ /dev/null
@@ -1,602 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef HAVE_OPENSSL
-
-#include "camel-tcp-stream-openssl.h"
-
-#include <openssl/ssl.h>
-#include <openssl/x509.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <string.h>
-#include "camel-session.h"
-#include "camel-service.h"
-#include "camel-operation.h"
-#ifdef ENABLE_THREADS
-#include <pthread.h>
-#endif
-
-static CamelTcpStreamClass *parent_class = NULL;
-
-static GHashTable *openssl_table = NULL;
-#ifdef ENABLE_THREADS
-static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
-#define OPENSSL_TABLE_LOCK() pthread_mutex_lock (&lock)
-#define OPENSSL_TABLE_UNLOCK() pthread_mutex_unlock (&lock)
-#else
-#define OPENSSL_TABLE_LOCK
-#define OPENSSL_TABLE_UNLOCK
-#endif
-
-/* Returns the class for a CamelTcpStreamOpenSSL */
-#define CTSR_CLASS(so) CAMEL_TCP_STREAM_OPENSSL_CLASS (CAMEL_OBJECT_GET_CLASS (so))
-
-static ssize_t stream_read (CamelStream *stream, char *buffer, size_t n);
-static ssize_t stream_write (CamelStream *stream, const char *buffer, size_t n);
-static int stream_flush (CamelStream *stream);
-static int stream_close (CamelStream *stream);
-
-static int stream_connect (CamelTcpStream *stream, struct hostent *host, int port);
-static int stream_getsockopt (CamelTcpStream *stream, CamelSockOptData *data);
-static int stream_setsockopt (CamelTcpStream *stream, const CamelSockOptData *data);
-static gpointer stream_get_socket (CamelTcpStream *stream);
-
-struct _CamelTcpStreamOpenSSLPrivate {
- int sockfd;
- SSL *ssl;
-
- CamelService *service;
- char *expected_host;
-};
-
-static void
-camel_tcp_stream_openssl_class_init (CamelTcpStreamOpenSSLClass *camel_tcp_stream_openssl_class)
-{
- CamelTcpStreamClass *camel_tcp_stream_class =
- CAMEL_TCP_STREAM_CLASS (camel_tcp_stream_openssl_class);
- CamelStreamClass *camel_stream_class =
- CAMEL_STREAM_CLASS (camel_tcp_stream_openssl_class);
-
- parent_class = CAMEL_TCP_STREAM_CLASS (camel_type_get_global_classfuncs (camel_tcp_stream_get_type ()));
-
- /* virtual method overload */
- camel_stream_class->read = stream_read;
- camel_stream_class->write = stream_write;
- camel_stream_class->flush = stream_flush;
- camel_stream_class->close = stream_close;
-
- camel_tcp_stream_class->connect = stream_connect;
- camel_tcp_stream_class->getsockopt = stream_getsockopt;
- camel_tcp_stream_class->setsockopt = stream_setsockopt;
- camel_tcp_stream_class->get_socket = stream_get_socket;
-}
-
-static void
-camel_tcp_stream_openssl_init (gpointer object, gpointer klass)
-{
- CamelTcpStreamOpenSSL *stream = CAMEL_TCP_STREAM_OPENSSL (object);
-
- stream->priv = g_new0 (struct _CamelTcpStreamOpenSSLPrivate, 1);
- stream->priv->sockfd = -1;
-}
-
-static void
-camel_tcp_stream_openssl_finalize (CamelObject *object)
-{
- CamelTcpStreamOpenSSL *stream = CAMEL_TCP_STREAM_OPENSSL (object);
-
- if (stream->priv->ssl) {
- SSL_shutdown (stream->priv->ssl);
-
- if (stream->priv->ssl->ctx) {
- OPENSSL_TABLE_LOCK ();
- g_hash_table_remove (openssl_table, stream->priv->ssl->ctx);
- if (g_hash_table_size (openssl_table) == 0) {
- g_hash_table_destroy (openssl_table);
- openssl_table = NULL;
- }
- OPENSSL_TABLE_UNLOCK ();
- SSL_CTX_free (stream->priv->ssl->ctx);
- }
-
- SSL_free (stream->priv->ssl);
- }
-
- if (stream->priv->sockfd != -1)
- close (stream->priv->sockfd);
-
- g_free (stream->priv->expected_host);
-
- g_free (stream->priv);
-}
-
-
-CamelType
-camel_tcp_stream_openssl_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_tcp_stream_get_type (),
- "CamelTcpStreamOpenSSL",
- sizeof (CamelTcpStreamOpenSSL),
- sizeof (CamelTcpStreamOpenSSLClass),
- (CamelObjectClassInitFunc) camel_tcp_stream_openssl_class_init,
- NULL,
- (CamelObjectInitFunc) camel_tcp_stream_openssl_init,
- (CamelObjectFinalizeFunc) camel_tcp_stream_openssl_finalize);
- }
-
- return type;
-}
-
-
-/**
- * camel_tcp_stream_openssl_new:
- * @service: camel service
- * @expected_host: host that the stream is expecting to connect with.
- *
- * Since the SSL certificate authenticator may need to prompt the
- * user, a CamelService is needed. @expected_host is needed as a
- * protection against an MITM attack.
- *
- * Return value: a tcp stream
- **/
-CamelStream *
-camel_tcp_stream_openssl_new (CamelService *service, const char *expected_host)
-{
- CamelTcpStreamOpenSSL *stream;
-
- stream = CAMEL_TCP_STREAM_OPENSSL (camel_object_new (camel_tcp_stream_openssl_get_type ()));
-
- stream->priv->service = service;
- stream->priv->expected_host = g_strdup (expected_host);
-
- return CAMEL_STREAM (stream);
-}
-
-static ssize_t
-stream_read (CamelStream *stream, char *buffer, size_t n)
-{
- CamelTcpStreamOpenSSL *tcp_stream_openssl = CAMEL_TCP_STREAM_OPENSSL (stream);
- ssize_t nread;
- int cancel_fd;
-
- if (camel_operation_cancel_check (NULL)) {
- errno = EINTR;
- return -1;
- }
-
- cancel_fd = camel_operation_cancel_fd (NULL);
- if (cancel_fd == -1) {
- do {
- nread = SSL_read (tcp_stream_openssl->priv->ssl, buffer, n);
- } while (nread == -1 && errno == EINTR);
- } else {
- int flags, fdmax;
- fd_set rdset;
-
- flags = fcntl (tcp_stream_openssl->priv->sockfd, F_GETFL);
- fcntl (tcp_stream_openssl->priv->sockfd, F_SETFL, flags | O_NONBLOCK);
-
- FD_ZERO (&rdset);
- FD_SET (tcp_stream_openssl->priv->sockfd, &rdset);
- FD_SET (cancel_fd, &rdset);
- fdmax = MAX (tcp_stream_openssl->priv->sockfd, cancel_fd) + 1;
-
- select (fdmax, &rdset, 0, 0, NULL);
- if (FD_ISSET (cancel_fd, &rdset)) {
- fcntl (tcp_stream_openssl->priv->sockfd, F_SETFL, flags);
- errno = EINTR;
- return -1;
- }
-
- nread = SSL_read (tcp_stream_openssl->priv->ssl, buffer, n);
- fcntl (tcp_stream_openssl->priv->sockfd, F_SETFL, flags);
- }
-
- return nread;
-}
-
-static ssize_t
-stream_write (CamelStream *stream, const char *buffer, size_t n)
-{
- CamelTcpStreamOpenSSL *tcp_stream_openssl = CAMEL_TCP_STREAM_OPENSSL (stream);
- ssize_t w, written = 0;
- int cancel_fd;
-
- if (camel_operation_cancel_check (NULL)) {
- errno = EINTR;
- return -1;
- }
-
- cancel_fd = camel_operation_cancel_fd (NULL);
- if (cancel_fd == -1) {
- do {
- written = SSL_write (tcp_stream_openssl->priv->ssl, buffer, n);
- } while (written == -1 && errno == EINTR);
- } else {
- fd_set rdset, wrset;
- int flags, fdmax;
-
- flags = fcntl (tcp_stream_openssl->priv->sockfd, F_GETFL);
- fcntl (tcp_stream_openssl->priv->sockfd, F_SETFL, flags | O_NONBLOCK);
-
- fdmax = MAX (tcp_stream_openssl->priv->sockfd, cancel_fd) + 1;
- do {
- FD_ZERO (&rdset);
- FD_ZERO (&wrset);
- FD_SET (tcp_stream_openssl->priv->sockfd, &wrset);
- FD_SET (cancel_fd, &rdset);
-
- select (fdmax, &rdset, &wrset, 0, NULL);
- if (FD_ISSET (cancel_fd, &rdset)) {
- fcntl (tcp_stream_openssl->priv->sockfd, F_SETFL, flags);
- errno = EINTR;
- return -1;
- }
-
- w = SSL_write (tcp_stream_openssl->priv->ssl, buffer + written, n - written);
- if (w > 0)
- written += w;
- } while (w != -1 && written < n);
-
- fcntl (tcp_stream_openssl->priv->sockfd, F_SETFL, flags);
- }
-
- return written;
-}
-
-static int
-stream_flush (CamelStream *stream)
-{
- return fsync (((CamelTcpStreamOpenSSL *)stream)->priv->sockfd);
-}
-
-
-static void
-close_ssl_connection (SSL *ssl)
-{
- if (ssl) {
- SSL_shutdown (ssl);
-
- if (ssl->ctx)
- SSL_CTX_free (ssl->ctx);
-
- SSL_free (ssl);
- }
-}
-
-static int
-stream_close (CamelStream *stream)
-{
- close_ssl_connection (((CamelTcpStreamOpenSSL *)stream)->priv->ssl);
- ((CamelTcpStreamOpenSSL *)stream)->priv->ssl = NULL;
-
- if (close (((CamelTcpStreamOpenSSL *)stream)->priv->sockfd) == -1)
- return -1;
-
- ((CamelTcpStreamOpenSSL *)stream)->priv->sockfd = -1;
- return 0;
-}
-
-/* this is a 'cancellable' connect, cancellable from camel_operation_cancel etc */
-/* returns -1 & errno == EINTR if the connection was cancelled */
-static int
-socket_connect (struct hostent *h, int port)
-{
- struct sockaddr_in sin;
- int fd;
- int ret;
- socklen_t len;
- struct timeval tv;
- int cancel_fd;
-
- /* see if we're cancelled yet */
- if (camel_operation_cancel_check (NULL)) {
- errno = EINTR;
- return -1;
- }
-
- /* setup connect, we do it using a nonblocking socket so we can poll it */
- sin.sin_port = htons (port);
- sin.sin_family = h->h_addrtype;
- memcpy (&sin.sin_addr, h->h_addr, sizeof (sin.sin_addr));
-
- fd = socket (h->h_addrtype, SOCK_STREAM, 0);
-
- cancel_fd = camel_operation_cancel_fd (NULL);
- if (cancel_fd == -1) {
- ret = connect (fd, (struct sockaddr *)&sin, sizeof (sin));
- if (ret == -1) {
- close (fd);
- return -1;
- }
-
- return fd;
- } else {
- fd_set rdset, wrset;
- int flags, fdmax;
-
- flags = fcntl (fd, F_GETFL);
- fcntl (fd, F_SETFL, flags | O_NONBLOCK);
-
- ret = connect (fd, (struct sockaddr *)&sin, sizeof (sin));
- if (ret == 0) {
- fcntl (fd, F_SETFL, flags);
- return fd;
- }
-
- if (errno != EINPROGRESS) {
- close (fd);
- return -1;
- }
-
- FD_ZERO (&rdset);
- FD_ZERO (&wrset);
- FD_SET (fd, &wrset);
- FD_SET (cancel_fd, &rdset);
- fdmax = MAX (fd, cancel_fd) + 1;
- tv.tv_usec = 0;
- tv.tv_sec = 60 * 4;
-
- if (select (fdmax, &rdset, &wrset, 0, &tv) == 0) {
- close (fd);
- errno = ETIMEDOUT;
- return -1;
- }
-
- if (cancel_fd != -1 && FD_ISSET (cancel_fd, &rdset)) {
- close (fd);
- errno = EINTR;
- return -1;
- } else {
- len = sizeof (int);
-
- if (getsockopt (fd, SOL_SOCKET, SO_ERROR, &ret, &len) == -1) {
- close (fd);
- return -1;
- }
-
- if (ret != 0) {
- close (fd);
- errno = ret;
- return -1;
- }
- }
-
- fcntl (fd, F_SETFL, flags);
- }
-
- return fd;
-}
-
-static int
-ssl_verify (int ok, X509_STORE_CTX *ctx)
-{
- CamelTcpStreamOpenSSL *stream;
- X509 *cert;
- int err;
-
- OPENSSL_TABLE_LOCK ();
- stream = CAMEL_TCP_STREAM_OPENSSL (g_hash_table_lookup (openssl_table, ctx));
- OPENSSL_TABLE_UNLOCK ();
-
- cert = X509_STORE_CTX_get_current_cert (ctx);
- err = X509_STORE_CTX_get_error (ctx);
-
- if (!ok && stream) {
- CamelService *service = stream->priv->service;
- char *prompt, *cert_str;
- char buf[257];
-
-#define GET_STRING(name) X509_NAME_oneline(name, buf, 256)
-
- cert_str = g_strdup_printf (_("Issuer: %s\n"
- "Subject: %s"),
- GET_STRING (X509_get_issuer_name (cert)),
- GET_STRING (X509_get_subject_name (cert)));
-
- prompt = g_strdup_printf (_("Bad certificate from %s:\n\n%s\n\n"
- "Do you wish to accept anyway?"),
- service->url->host, cert_str);
-
- ok = camel_session_alert_user (service->session, CAMEL_SESSION_ALERT_WARNING, prompt, TRUE);
- g_free (prompt);
- }
-
- return ok;
-}
-
-static SSL *
-open_ssl_connection (CamelService *service, int sockfd)
-{
- SSL_CTX *ssl_ctx = NULL;
- SSL *ssl = NULL;
- int n;
-
- /* SSLv23_client_method will negotiate with SSL v2, v3, or TLS v1 */
- ssl_ctx = SSL_CTX_new (SSLv23_client_method ());
- g_return_val_if_fail (ssl_ctx != NULL, NULL);
-
- SSL_CTX_set_verify (ssl_ctx, SSL_VERIFY_PEER, &ssl_verify);
- ssl = SSL_new (ssl_ctx);
- SSL_set_fd (ssl, sockfd);
-
- n = SSL_connect (ssl);
- if (n != 1) {
- SSL_shutdown (ssl);
-
- if (ssl->ctx)
- SSL_CTX_free (ssl->ctx);
-
- SSL_free (ssl);
- ssl = NULL;
- }
-
- return ssl;
-}
-
-static int
-stream_connect (CamelTcpStream *stream, struct hostent *host, int port)
-{
- CamelTcpStreamOpenSSL *openssl = CAMEL_TCP_STREAM_OPENSSL (stream);
- SSL *ssl;
- int fd;
-
- g_return_val_if_fail (host != NULL, -1);
-
- fd = socket_connect (host, port);
- if (fd == -1)
- return -1;
-
- ssl = open_ssl_connection (openssl->priv->service, fd);
- if (!ssl)
- return -1;
-
- openssl->priv->sockfd = fd;
- openssl->priv->ssl = ssl;
-
- OPENSSL_TABLE_LOCK ();
- if (!openssl_table)
- openssl_table = g_hash_table_new (g_direct_hash, g_direct_equal);
-
- g_hash_table_insert (openssl_table, ssl->ctx, openssl);
- OPENSSL_TABLE_UNLOCK ();
-
- return 0;
-}
-
-
-static int
-get_sockopt_level (const CamelSockOptData *data)
-{
- switch (data->option) {
- case CAMEL_SOCKOPT_MAXSEGMENT:
- case CAMEL_SOCKOPT_NODELAY:
- return IPPROTO_TCP;
- default:
- return SOL_SOCKET;
- }
-}
-
-static int
-get_sockopt_optname (const CamelSockOptData *data)
-{
- switch (data->option) {
- case CAMEL_SOCKOPT_MAXSEGMENT:
- return TCP_MAXSEG;
- case CAMEL_SOCKOPT_NODELAY:
- return TCP_NODELAY;
- case CAMEL_SOCKOPT_BROADCAST:
- return SO_BROADCAST;
- case CAMEL_SOCKOPT_KEEPALIVE:
- return SO_KEEPALIVE;
- case CAMEL_SOCKOPT_LINGER:
- return SO_LINGER;
- case CAMEL_SOCKOPT_RECVBUFFERSIZE:
- return SO_RCVBUF;
- case CAMEL_SOCKOPT_SENDBUFFERSIZE:
- return SO_SNDBUF;
- case CAMEL_SOCKOPT_REUSEADDR:
- return SO_REUSEADDR;
- case CAMEL_SOCKOPT_IPTYPEOFSERVICE:
- return SO_TYPE;
- default:
- return -1;
- }
-}
-
-static int
-stream_getsockopt (CamelTcpStream *stream, CamelSockOptData *data)
-{
- int optname, optlen;
-
- if ((optname = get_sockopt_optname (data)) == -1)
- return -1;
-
- if (data->option == CAMEL_SOCKOPT_NONBLOCKING) {
- int flags;
-
- flags = fcntl (((CamelTcpStreamOpenSSL *)stream)->priv->sockfd, F_GETFL);
- if (flags == -1)
- return -1;
-
- data->value.non_blocking = flags & O_NONBLOCK;
-
- return 0;
- }
-
- return getsockopt (((CamelTcpStreamOpenSSL *)stream)->priv->sockfd,
- get_sockopt_level (data),
- optname,
- (void *) &data->value,
- &optlen);
-}
-
-static int
-stream_setsockopt (CamelTcpStream *stream, const CamelSockOptData *data)
-{
- int optname;
-
- if ((optname = get_sockopt_optname (data)) == -1)
- return -1;
-
- if (data->option == CAMEL_SOCKOPT_NONBLOCKING) {
- int flags, set;
-
- flags = fcntl (((CamelTcpStreamOpenSSL *)stream)->priv->sockfd, F_GETFL);
- if (flags == -1)
- return -1;
-
- set = data->value.non_blocking ? 1 : 0;
- flags = (flags & ~O_NONBLOCK) | (set & O_NONBLOCK);
-
- if (fcntl (((CamelTcpStreamOpenSSL *)stream)->priv->sockfd, F_SETFL, flags) == -1)
- return -1;
-
- return 0;
- }
-
- return setsockopt (((CamelTcpStreamOpenSSL *)stream)->priv->sockfd,
- get_sockopt_level (data),
- optname,
- (void *) &data->value,
- sizeof (data->value));
-}
-
-static gpointer
-stream_get_socket (CamelTcpStream *stream)
-{
- return GINT_TO_POINTER (CAMEL_TCP_STREAM_OPENSSL (stream)->priv->sockfd);
-}
-
-#endif /* HAVE_OPENSSL */
diff --git a/camel/camel-tcp-stream-openssl.h b/camel/camel-tcp-stream-openssl.h
deleted file mode 100644
index 6eab9465a4..0000000000
--- a/camel/camel-tcp-stream-openssl.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-
-#ifndef CAMEL_TCP_STREAM_OPENSSL_H
-#define CAMEL_TCP_STREAM_OPENSSL_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-#include <camel/camel-tcp-stream.h>
-
-#define CAMEL_TCP_STREAM_OPENSSL_TYPE (camel_tcp_stream_openssl_get_type ())
-#define CAMEL_TCP_STREAM_OPENSSL(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TCP_STREAM_OPENSSL_TYPE, CamelTcpStreamOpenSSL))
-#define CAMEL_TCP_STREAM_OPENSSL_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TCP_STREAM_OPENSSL_TYPE, CamelTcpStreamOpenSSLClass))
-#define CAMEL_IS_TCP_STREAM_OPENSSL(o) (CAMEL_CHECK_TYPE((o), CAMEL_TCP_STREAM_OPENSSL_TYPE))
-
-struct _CamelTcpStreamOpenSSL
-{
- CamelTcpStream parent_object;
-
- struct _CamelTcpStreamOpenSSLPrivate *priv;
-};
-
-typedef struct {
- CamelTcpStreamClass parent_class;
-
- /* virtual functions */
-
-} CamelTcpStreamOpenSSLClass;
-
-/* Standard Camel function */
-CamelType camel_tcp_stream_openssl_get_type (void);
-
-/* public methods */
-CamelStream *camel_tcp_stream_openssl_new (CamelService *service, const char *expected_host);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_TCP_STREAM_OPENSSL_H */
diff --git a/camel/camel-tcp-stream-raw.c b/camel/camel-tcp-stream-raw.c
deleted file mode 100644
index 8e74f7c433..0000000000
--- a/camel/camel-tcp-stream-raw.c
+++ /dev/null
@@ -1,445 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <string.h>
-#include "camel-tcp-stream-raw.h"
-#include "camel-operation.h"
-
-static CamelTcpStreamClass *parent_class = NULL;
-
-/* Returns the class for a CamelTcpStreamRaw */
-#define CTSR_CLASS(so) CAMEL_TCP_STREAM_RAW_CLASS (CAMEL_OBJECT_GET_CLASS (so))
-
-static ssize_t stream_read (CamelStream *stream, char *buffer, size_t n);
-static ssize_t stream_write (CamelStream *stream, const char *buffer, size_t n);
-static int stream_flush (CamelStream *stream);
-static int stream_close (CamelStream *stream);
-
-static int stream_connect (CamelTcpStream *stream, struct hostent *host, int port);
-static int stream_getsockopt (CamelTcpStream *stream, CamelSockOptData *data);
-static int stream_setsockopt (CamelTcpStream *stream, const CamelSockOptData *data);
-static gpointer stream_get_socket (CamelTcpStream *stream);
-
-static void
-camel_tcp_stream_raw_class_init (CamelTcpStreamRawClass *camel_tcp_stream_raw_class)
-{
- CamelTcpStreamClass *camel_tcp_stream_class =
- CAMEL_TCP_STREAM_CLASS (camel_tcp_stream_raw_class);
- CamelStreamClass *camel_stream_class =
- CAMEL_STREAM_CLASS (camel_tcp_stream_raw_class);
-
- parent_class = CAMEL_TCP_STREAM_CLASS (camel_type_get_global_classfuncs (camel_tcp_stream_get_type ()));
-
- /* virtual method overload */
- camel_stream_class->read = stream_read;
- camel_stream_class->write = stream_write;
- camel_stream_class->flush = stream_flush;
- camel_stream_class->close = stream_close;
-
- camel_tcp_stream_class->connect = stream_connect;
- camel_tcp_stream_class->getsockopt = stream_getsockopt;
- camel_tcp_stream_class->setsockopt = stream_setsockopt;
- camel_tcp_stream_class->get_socket = stream_get_socket;
-}
-
-static void
-camel_tcp_stream_raw_init (gpointer object, gpointer klass)
-{
- CamelTcpStreamRaw *stream = CAMEL_TCP_STREAM_RAW (object);
-
- stream->sockfd = -1;
-}
-
-static void
-camel_tcp_stream_raw_finalize (CamelObject *object)
-{
- CamelTcpStreamRaw *stream = CAMEL_TCP_STREAM_RAW (object);
-
- if (stream->sockfd != -1)
- close (stream->sockfd);
-}
-
-
-CamelType
-camel_tcp_stream_raw_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_tcp_stream_get_type (),
- "CamelTcpStreamRaw",
- sizeof (CamelTcpStreamRaw),
- sizeof (CamelTcpStreamRawClass),
- (CamelObjectClassInitFunc) camel_tcp_stream_raw_class_init,
- NULL,
- (CamelObjectInitFunc) camel_tcp_stream_raw_init,
- (CamelObjectFinalizeFunc) camel_tcp_stream_raw_finalize);
- }
-
- return type;
-}
-
-
-/**
- * camel_tcp_stream_raw_new:
- *
- * Return value: a tcp stream
- **/
-CamelStream *
-camel_tcp_stream_raw_new ()
-{
- CamelTcpStreamRaw *stream;
-
- stream = CAMEL_TCP_STREAM_RAW (camel_object_new (camel_tcp_stream_raw_get_type ()));
-
- return CAMEL_STREAM (stream);
-}
-
-static ssize_t
-stream_read (CamelStream *stream, char *buffer, size_t n)
-{
- CamelTcpStreamRaw *tcp_stream_raw = CAMEL_TCP_STREAM_RAW (stream);
- ssize_t nread;
- int cancel_fd;
-
- if (camel_operation_cancel_check (NULL)) {
- errno = EINTR;
- return -1;
- }
-
- cancel_fd = camel_operation_cancel_fd (NULL);
- if (cancel_fd == -1) {
- do {
- nread = read (tcp_stream_raw->sockfd, buffer, n);
- } while (nread == -1 && errno == EINTR);
- } else {
- int flags, fdmax;
- fd_set rdset;
-
- flags = fcntl (tcp_stream_raw->sockfd, F_GETFL);
- fcntl (tcp_stream_raw->sockfd, F_SETFL, flags | O_NONBLOCK);
-
- FD_ZERO (&rdset);
- FD_SET (tcp_stream_raw->sockfd, &rdset);
- FD_SET (cancel_fd, &rdset);
- fdmax = MAX (tcp_stream_raw->sockfd, cancel_fd) + 1;
-
- select (fdmax, &rdset, 0, 0, NULL);
- if (FD_ISSET (cancel_fd, &rdset)) {
- fcntl (tcp_stream_raw->sockfd, F_SETFL, flags);
- errno = EINTR;
- return -1;
- }
-
- nread = read (tcp_stream_raw->sockfd, buffer, n);
- fcntl (tcp_stream_raw->sockfd, F_SETFL, flags);
- }
-
- return nread;
-}
-
-static ssize_t
-stream_write (CamelStream *stream, const char *buffer, size_t n)
-{
- CamelTcpStreamRaw *tcp_stream_raw = CAMEL_TCP_STREAM_RAW (stream);
- ssize_t w, written = 0;
- int cancel_fd;
-
- if (camel_operation_cancel_check (NULL)) {
- errno = EINTR;
- return -1;
- }
-
- cancel_fd = camel_operation_cancel_fd (NULL);
- if (cancel_fd == -1) {
- do {
- written = write (tcp_stream_raw->sockfd, buffer, n);
- } while (written == -1 && errno == EINTR);
- } else {
- fd_set rdset, wrset;
- int flags, fdmax;
-
- flags = fcntl (tcp_stream_raw->sockfd, F_GETFL);
- fcntl (tcp_stream_raw->sockfd, F_SETFL, flags | O_NONBLOCK);
-
- fdmax = MAX (tcp_stream_raw->sockfd, cancel_fd) + 1;
- do {
- FD_ZERO (&rdset);
- FD_ZERO (&wrset);
- FD_SET (tcp_stream_raw->sockfd, &wrset);
- FD_SET (cancel_fd, &rdset);
-
- select (fdmax, &rdset, &wrset, 0, NULL);
- if (FD_ISSET (cancel_fd, &rdset)) {
- fcntl (tcp_stream_raw->sockfd, F_SETFL, flags);
- errno = EINTR;
- return -1;
- }
-
- w = write (tcp_stream_raw->sockfd, buffer + written, n - written);
- if (w > 0)
- written += w;
- } while (w != -1 && written < n);
-
- fcntl (tcp_stream_raw->sockfd, F_SETFL, flags);
- }
-
- return written;
-}
-
-static int
-stream_flush (CamelStream *stream)
-{
- return fsync (((CamelTcpStreamRaw *)stream)->sockfd);
-}
-
-static int
-stream_close (CamelStream *stream)
-{
- if (close (((CamelTcpStreamRaw *)stream)->sockfd) == -1)
- return -1;
-
- ((CamelTcpStreamRaw *)stream)->sockfd = -1;
- return 0;
-}
-
-/* this is a 'cancellable' connect, cancellable from camel_operation_cancel etc */
-/* returns -1 & errno == EINTR if the connection was cancelled */
-static int
-socket_connect (struct hostent *h, int port)
-{
- struct sockaddr_in sin;
- int fd;
- int ret;
- socklen_t len;
- struct timeval tv;
- int cancel_fd;
-
- /* see if we're cancelled yet */
- if (camel_operation_cancel_check (NULL)) {
- errno = EINTR;
- return -1;
- }
-
- /* setup connect, we do it using a nonblocking socket so we can poll it */
- sin.sin_port = htons (port);
- sin.sin_family = h->h_addrtype;
- memcpy (&sin.sin_addr, h->h_addr, sizeof (sin.sin_addr));
-
- fd = socket (h->h_addrtype, SOCK_STREAM, 0);
-
- cancel_fd = camel_operation_cancel_fd (NULL);
- if (cancel_fd == -1) {
- ret = connect (fd, (struct sockaddr *)&sin, sizeof (sin));
- if (ret == -1) {
- close (fd);
- return -1;
- }
-
- return fd;
- } else {
- fd_set rdset, wrset;
- int flags, fdmax;
-
- flags = fcntl (fd, F_GETFL);
- fcntl (fd, F_SETFL, flags | O_NONBLOCK);
-
- ret = connect (fd, (struct sockaddr *)&sin, sizeof (sin));
- if (ret == 0) {
- fcntl (fd, F_SETFL, flags);
- return fd;
- }
-
- if (errno != EINPROGRESS) {
- close (fd);
- return -1;
- }
-
- FD_ZERO (&rdset);
- FD_ZERO (&wrset);
- FD_SET (fd, &wrset);
- FD_SET (cancel_fd, &rdset);
- fdmax = MAX (fd, cancel_fd) + 1;
- tv.tv_usec = 0;
- tv.tv_sec = 60 * 4;
-
- if (select (fdmax, &rdset, &wrset, 0, &tv) == 0) {
- close (fd);
- errno = ETIMEDOUT;
- return -1;
- }
-
- if (cancel_fd != -1 && FD_ISSET (cancel_fd, &rdset)) {
- close (fd);
- errno = EINTR;
- return -1;
- } else {
- len = sizeof (int);
-
- if (getsockopt (fd, SOL_SOCKET, SO_ERROR, &ret, &len) == -1) {
- close (fd);
- return -1;
- }
-
- if (ret != 0) {
- close (fd);
- errno = ret;
- return -1;
- }
- }
-
- fcntl (fd, F_SETFL, flags);
- }
-
- return fd;
-}
-
-static int
-stream_connect (CamelTcpStream *stream, struct hostent *host, int port)
-{
- CamelTcpStreamRaw *raw = CAMEL_TCP_STREAM_RAW (stream);
- int fd;
-
- g_return_val_if_fail (host != NULL, -1);
-
- fd = socket_connect (host, port);
- if (fd == -1)
- return -1;
-
- raw->sockfd = fd;
-
- return 0;
-}
-
-
-static int
-get_sockopt_level (const CamelSockOptData *data)
-{
- switch (data->option) {
- case CAMEL_SOCKOPT_MAXSEGMENT:
- case CAMEL_SOCKOPT_NODELAY:
- return IPPROTO_TCP;
- default:
- return SOL_SOCKET;
- }
-}
-
-static int
-get_sockopt_optname (const CamelSockOptData *data)
-{
- switch (data->option) {
- case CAMEL_SOCKOPT_MAXSEGMENT:
- return TCP_MAXSEG;
- case CAMEL_SOCKOPT_NODELAY:
- return TCP_NODELAY;
- case CAMEL_SOCKOPT_BROADCAST:
- return SO_BROADCAST;
- case CAMEL_SOCKOPT_KEEPALIVE:
- return SO_KEEPALIVE;
- case CAMEL_SOCKOPT_LINGER:
- return SO_LINGER;
- case CAMEL_SOCKOPT_RECVBUFFERSIZE:
- return SO_RCVBUF;
- case CAMEL_SOCKOPT_SENDBUFFERSIZE:
- return SO_SNDBUF;
- case CAMEL_SOCKOPT_REUSEADDR:
- return SO_REUSEADDR;
- case CAMEL_SOCKOPT_IPTYPEOFSERVICE:
- return SO_TYPE;
- default:
- return -1;
- }
-}
-
-static int
-stream_getsockopt (CamelTcpStream *stream, CamelSockOptData *data)
-{
- int optname, optlen;
-
- if ((optname = get_sockopt_optname (data)) == -1)
- return -1;
-
- if (data->option == CAMEL_SOCKOPT_NONBLOCKING) {
- int flags;
-
- flags = fcntl (((CamelTcpStreamRaw *)stream)->sockfd, F_GETFL);
- if (flags == -1)
- return -1;
-
- data->value.non_blocking = flags & O_NONBLOCK;
-
- return 0;
- }
-
- return getsockopt (((CamelTcpStreamRaw *)stream)->sockfd,
- get_sockopt_level (data),
- optname,
- (void *) &data->value,
- &optlen);
-}
-
-static int
-stream_setsockopt (CamelTcpStream *stream, const CamelSockOptData *data)
-{
- int optname;
-
- if ((optname = get_sockopt_optname (data)) == -1)
- return -1;
-
- if (data->option == CAMEL_SOCKOPT_NONBLOCKING) {
- int flags, set;
-
- flags = fcntl (((CamelTcpStreamRaw *)stream)->sockfd, F_GETFL);
- if (flags == -1)
- return -1;
-
- set = data->value.non_blocking ? 1 : 0;
- flags = (flags & ~O_NONBLOCK) | (set & O_NONBLOCK);
-
- if (fcntl (((CamelTcpStreamRaw *)stream)->sockfd, F_SETFL, flags) == -1)
- return -1;
-
- return 0;
- }
-
- return setsockopt (((CamelTcpStreamRaw *)stream)->sockfd,
- get_sockopt_level (data),
- optname,
- (void *) &data->value,
- sizeof (data->value));
-}
-
-static gpointer
-stream_get_socket (CamelTcpStream *stream)
-{
- return GINT_TO_POINTER (CAMEL_TCP_STREAM_RAW (stream)->sockfd);
-}
diff --git a/camel/camel-tcp-stream-raw.h b/camel/camel-tcp-stream-raw.h
deleted file mode 100644
index 41304efde7..0000000000
--- a/camel/camel-tcp-stream-raw.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-
-#ifndef CAMEL_TCP_STREAM_RAW_H
-#define CAMEL_TCP_STREAM_RAW_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-#include <camel/camel-tcp-stream.h>
-
-#define CAMEL_TCP_STREAM_RAW_TYPE (camel_tcp_stream_raw_get_type ())
-#define CAMEL_TCP_STREAM_RAW(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TCP_STREAM_RAW_TYPE, CamelTcpStreamRaw))
-#define CAMEL_TCP_STREAM_RAW_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TCP_STREAM_RAW_TYPE, CamelTcpStreamRawClass))
-#define CAMEL_IS_TCP_STREAM_RAW(o) (CAMEL_CHECK_TYPE((o), CAMEL_TCP_STREAM_RAW_TYPE))
-
-struct _CamelTcpStreamRaw
-{
- CamelTcpStream parent_object;
-
- int sockfd;
-};
-
-typedef struct {
- CamelTcpStreamClass parent_class;
-
- /* virtual functions */
-
-} CamelTcpStreamRawClass;
-
-/* Standard Camel function */
-CamelType camel_tcp_stream_raw_get_type (void);
-
-/* public methods */
-CamelStream *camel_tcp_stream_raw_new (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_TCP_STREAM_RAW_H */
diff --git a/camel/camel-tcp-stream-ssl.c b/camel/camel-tcp-stream-ssl.c
deleted file mode 100644
index cc41aaaa88..0000000000
--- a/camel/camel-tcp-stream-ssl.c
+++ /dev/null
@@ -1,453 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef HAVE_NSS
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <string.h>
-
-#include <nspr.h>
-#include <prio.h>
-#include <prerror.h>
-#include <prerr.h>
-#include "nss.h" /* Don't use <> here or it will include the system nss.h instead */
-#include <ssl.h>
-
-#include "camel-tcp-stream-ssl.h"
-#include "camel-session.h"
-
-static CamelTcpStreamClass *parent_class = NULL;
-
-/* Returns the class for a CamelTcpStreamSSL */
-#define CTSS_CLASS(so) CAMEL_TCP_STREAM_SSL_CLASS (CAMEL_OBJECT_GET_CLASS (so))
-
-static ssize_t stream_read (CamelStream *stream, char *buffer, size_t n);
-static ssize_t stream_write (CamelStream *stream, const char *buffer, size_t n);
-static int stream_flush (CamelStream *stream);
-static int stream_close (CamelStream *stream);
-
-static int stream_connect (CamelTcpStream *stream, struct hostent *host, int port);
-static int stream_getsockopt (CamelTcpStream *stream, CamelSockOptData *data);
-static int stream_setsockopt (CamelTcpStream *stream, const CamelSockOptData *data);
-static gpointer stream_get_socket (CamelTcpStream *stream);
-
-struct _CamelTcpStreamSSLPrivate {
- PRFileDesc *sockfd;
-
- CamelService *service;
- char *expected_host;
-};
-
-static void
-camel_tcp_stream_ssl_class_init (CamelTcpStreamSSLClass *camel_tcp_stream_ssl_class)
-{
- CamelTcpStreamClass *camel_tcp_stream_class =
- CAMEL_TCP_STREAM_CLASS (camel_tcp_stream_ssl_class);
- CamelStreamClass *camel_stream_class =
- CAMEL_STREAM_CLASS (camel_tcp_stream_ssl_class);
-
- parent_class = CAMEL_TCP_STREAM_CLASS (camel_type_get_global_classfuncs (camel_tcp_stream_get_type ()));
-
- /* virtual method overload */
- camel_stream_class->read = stream_read;
- camel_stream_class->write = stream_write;
- camel_stream_class->flush = stream_flush;
- camel_stream_class->close = stream_close;
-
- camel_tcp_stream_class->connect = stream_connect;
- camel_tcp_stream_class->getsockopt = stream_getsockopt;
- camel_tcp_stream_class->setsockopt = stream_setsockopt;
- camel_tcp_stream_class->get_socket = stream_get_socket;
-}
-
-static void
-camel_tcp_stream_ssl_init (gpointer object, gpointer klass)
-{
- CamelTcpStreamSSL *stream = CAMEL_TCP_STREAM_SSL (object);
-
- stream->priv = g_new0 (struct _CamelTcpStreamSSLPrivate, 1);
-}
-
-static void
-camel_tcp_stream_ssl_finalize (CamelObject *object)
-{
- CamelTcpStreamSSL *stream = CAMEL_TCP_STREAM_SSL (object);
-
- if (stream->priv->sockfd != NULL)
- PR_Close (stream->priv->sockfd);
-
- g_free (stream->priv->expected_host);
-
- g_free (stream->priv);
-}
-
-
-CamelType
-camel_tcp_stream_ssl_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_tcp_stream_get_type (),
- "CamelTcpStreamSSL",
- sizeof (CamelTcpStreamSSL),
- sizeof (CamelTcpStreamSSLClass),
- (CamelObjectClassInitFunc) camel_tcp_stream_ssl_class_init,
- NULL,
- (CamelObjectInitFunc) camel_tcp_stream_ssl_init,
- (CamelObjectFinalizeFunc) camel_tcp_stream_ssl_finalize);
- }
-
- return type;
-}
-
-/**
- * camel_tcp_stream_ssl_new:
- * @service: camel service
- * @expected_host: host that the stream is expected to connect with.
- *
- * Since the SSL certificate authenticator may need to prompt the
- * user, a CamelService is needed. @expected_host is needed as a
- * protection against an MITM attack.
- *
- * Return value: a tcp stream
- **/
-CamelStream *
-camel_tcp_stream_ssl_new (CamelService *service, const char *expected_host)
-{
- CamelTcpStreamSSL *stream;
-
- stream = CAMEL_TCP_STREAM_SSL (camel_object_new (camel_tcp_stream_ssl_get_type ()));
-
- stream->priv->service = service;
- stream->priv->expected_host = g_strdup (expected_host);
-
- return CAMEL_STREAM (stream);
-}
-
-static void
-set_errno (int code)
-{
- /* FIXME: this should handle more. */
- switch (code) {
- case PR_IO_TIMEOUT_ERROR:
- errno = EAGAIN;
- break;
- case PR_IO_ERROR:
- errno = EIO;
- break;
- default:
- /* what to set by default?? */
- errno = EINTR;
- }
-}
-
-static ssize_t
-stream_read (CamelStream *stream, char *buffer, size_t n)
-{
- CamelTcpStreamSSL *tcp_stream_ssl = CAMEL_TCP_STREAM_SSL (stream);
- ssize_t nread;
-
- do {
- nread = PR_Read (tcp_stream_ssl->priv->sockfd, buffer, n);
- } while (nread == -1 && PR_GetError () == PR_PENDING_INTERRUPT_ERROR);
-
- if (nread == -1)
- set_errno (PR_GetError ());
-
- return nread;
-}
-
-static ssize_t
-stream_write (CamelStream *stream, const char *buffer, size_t n)
-{
- CamelTcpStreamSSL *tcp_stream_ssl = CAMEL_TCP_STREAM_SSL (stream);
- ssize_t written = 0;
-
- do {
- written = PR_Write (tcp_stream_ssl->priv->sockfd, buffer, n);
- } while (written == -1 && PR_GetError () == PR_PENDING_INTERRUPT_ERROR);
-
- if (written == -1)
- set_errno (PR_GetError ());
-
- return written;
-}
-
-static int
-stream_flush (CamelStream *stream)
-{
- return PR_Sync (((CamelTcpStreamSSL *)stream)->priv->sockfd);
-}
-
-static int
-stream_close (CamelStream *stream)
-{
- if (PR_Close (((CamelTcpStreamSSL *)stream)->priv->sockfd) == PR_FAILURE)
- return -1;
-
- ((CamelTcpStreamSSL *)stream)->priv->sockfd = NULL;
-
- return 0;
-}
-
-#if 0
-/* Since this is default implementation, let NSS handle it. */
-static SECStatus
-ssl_get_client_auth (void *data, PRFileDesc *sockfd,
- struct CERTDistNamesStr *caNames,
- struct CERTCertificateStr **pRetCert,
- struct SECKEYPrivateKeyStr **pRetKey)
-{
- SECStatus status = SECFailure;
- SECKEYPrivateKey *privkey;
- CERTCertificate *cert;
- void *proto_win;
-
- proto_win = SSL_RevealPinArg (sockfd);
-
- if ((char *)data) {
- cert = PK11_FindCertFromNickname ((char *)data, proto_win);
- if (cert) {
- privKey = PK11_FindKeyByAnyCert (cert, proto_win);
- if (privkey) {
- status = SECSuccess;
- } else {
- CERT_DestroyCertificate (cert);
- }
- }
- } else {
- /* no nickname given, automatically find the right cert */
- CERTCertNicknames *names;
- int i;
-
- names = CERT_GetCertNicknames (CERT_GetDefaultCertDB (),
- SEC_CERT_NICKNAMES_USER,
- proto_win);
-
- if (names != NULL) {
- for (i = 0; i < names->numnicknames; i++) {
-
- cert = PK11_FindCertFromNickname (names->nicknames[i],
- proto_win);
- if (!cert)
- continue;
-
- /* Only check unexpired certs */
- if (CERT_CheckCertValidTimes (cert, PR_Now (), PR_FALSE) != secCertTimeValid) {
- CERT_DestroyCertificate (cert);
- continue;
- }
-
- status = NSS_CmpCertChainWCANames (cert, caNames);
- if (status == SECSuccess) {
- privkey = PK11_FindKeyByAnyCert (cert, proto_win);
- if (privkey)
- break;
-
- status = SECFailure;
- break;
- }
-
- CERT_FreeNicknames (names);
- }
- }
- }
-
- if (status == SECSuccess) {
- *pRetCert = cert;
- *pRetKey = privkey;
- }
-
- return status;
-}
-#endif
-
-#if 0
-/* Since this is the default NSS implementation, no need for us to use this. */
-static SECStatus
-ssl_auth_cert (void *data, PRFileDesc *sockfd, PRBool checksig, PRBool is_server)
-{
- CERTCertificate *cert;
- SECStatus status;
- void *pinarg;
- char *host;
-
- cert = SSL_PeerCertificate (sockfd);
- pinarg = SSL_RevealPinArg (sockfd);
- status = CERT_VerifyCertNow ((CERTCertDBHandle *)data, cert,
- checksig, certUsageSSLClient, pinarg);
-
- if (status != SECSuccess)
- return SECFailure;
-
- /* Certificate is OK. Since this is the client side of an SSL
- * connection, we need to verify that the name field in the cert
- * matches the desired hostname. This is our defense against
- * man-in-the-middle attacks.
- */
-
- /* SSL_RevealURL returns a hostname, not a URL. */
- host = SSL_RevealURL (sockfd);
-
- if (host && *host) {
- status = CERT_VerifyCertName (cert, host);
- } else {
- PR_SetError (SSL_ERROR_BAD_CERT_DOMAIN, 0);
- status = SECFailure;
- }
-
- if (host)
- PR_Free (hostName);
-
- return secStatus;
-}
-#endif
-
-static SECStatus
-ssl_bad_cert (void *data, PRFileDesc *sockfd)
-{
- CERTCertificate *cert;
- CamelService *service;
- char *prompt, *cert_str;
- gboolean accept;
-
- g_return_val_if_fail (data != NULL, SECFailure);
- g_return_val_if_fail (CAMEL_IS_SERVICE (data), SECFailure);
-
- service = CAMEL_SERVICE (data);
-
- cert = SSL_PeerCertificate (sockfd);
-
- cert_str = g_strdup_printf (_("EMail: %s\n"
- "Common Name: %s\n"
- "Organization Unit: %s\n"
- "Organization: %s\n"
- "Locality: %s\n"
- "State: %s\n"
- "Country: %s"),
- cert->emailAddr ? cert->emailAddr : "",
- CERT_GetCommonName (&cert->issuer) ? CERT_GetCommonName (&cert->issuer) : "",
- CERT_GetOrgUnitName (&cert->issuer) ? CERT_GetOrgUnitName (&cert->issuer) : "",
- CERT_GetOrgName (&cert->issuer) ? CERT_GetOrgName (&cert->issuer) : "",
- CERT_GetLocalityName (&cert->issuer) ? CERT_GetLocalityName (&cert->issuer) : "",
- CERT_GetStateName (&cert->issuer) ? CERT_GetStateName (&cert->issuer) : "",
- CERT_GetCountryName (&cert->issuer) ? CERT_GetCountryName (&cert->issuer) : "");
-
- /* construct our user prompt */
- prompt = g_strdup_printf (_("Bad certificate from %s:\n\n%s\n\nDo you wish to accept anyway?"),
- service->url->host, cert_str);
- g_free (cert_str);
-
- /* query the user to find out if we want to accept this certificate */
- accept = camel_session_alert_user (service->session, CAMEL_SESSION_ALERT_WARNING, prompt, TRUE);
- g_free (prompt);
-
- if (accept)
- return SECSuccess;
-
- return SECFailure;
-}
-
-static int
-stream_connect (CamelTcpStream *stream, struct hostent *host, int port)
-{
- CamelTcpStreamSSL *ssl = CAMEL_TCP_STREAM_SSL (stream);
- PRIntervalTime timeout = PR_INTERVAL_MIN;
- PRNetAddr netaddr;
- PRFileDesc *fd, *ssl_fd;
-
- g_return_val_if_fail (host != NULL, -1);
-
- memset ((void *) &netaddr, 0, sizeof (PRNetAddr));
- memcpy (&netaddr.inet.ip, host->h_addr, sizeof (netaddr.inet.ip));
-
- if (PR_InitializeNetAddr (PR_IpAddrNull, port, &netaddr) == PR_FAILURE)
- return -1;
-
- fd = PR_OpenTCPSocket (host->h_addrtype);
- ssl_fd = SSL_ImportFD (NULL, fd);
-
- SSL_OptionSet (ssl_fd, SSL_SECURITY, PR_TRUE);
- SSL_SetURL (ssl_fd, ssl->priv->expected_host);
-
- if (ssl_fd == NULL || PR_Connect (ssl_fd, &netaddr, timeout) == PR_FAILURE) {
- if (ssl_fd != NULL)
- PR_Close (ssl_fd);
-
- return -1;
- }
-
- /*SSL_GetClientAuthDataHook (sslSocket, ssl_get_client_auth, (void *)certNickname);*/
- /*SSL_AuthCertificateHook (ssl_fd, ssl_auth_cert, (void *) CERT_GetDefaultCertDB ());*/
- SSL_BadCertHook (ssl_fd, ssl_bad_cert, ssl->priv->service);
-
- ssl->priv->sockfd = ssl_fd;
-
- return 0;
-}
-
-
-static int
-stream_getsockopt (CamelTcpStream *stream, CamelSockOptData *data)
-{
- PRSocketOptionData sodata;
-
- memset ((void *) &sodata, 0, sizeof (sodata));
- memcpy ((void *) &sodata, (void *) data, sizeof (CamelSockOptData));
-
- if (PR_GetSocketOption (((CamelTcpStreamSSL *)stream)->priv->sockfd, &sodata) == PR_FAILURE)
- return -1;
-
- memcpy ((void *) data, (void *) &sodata, sizeof (CamelSockOptData));
-
- return 0;
-}
-
-static int
-stream_setsockopt (CamelTcpStream *stream, const CamelSockOptData *data)
-{
- PRSocketOptionData sodata;
-
- memset ((void *) &sodata, 0, sizeof (sodata));
- memcpy ((void *) &sodata, (void *) data, sizeof (CamelSockOptData));
-
- if (PR_SetSocketOption (((CamelTcpStreamSSL *)stream)->priv->sockfd, &sodata) == PR_FAILURE)
- return -1;
-
- return 0;
-}
-
-static gpointer
-stream_get_socket (CamelTcpStream *stream)
-{
- return (gpointer) CAMEL_TCP_STREAM_SSL (stream)->priv->sockfd;
-}
-
-#endif /* HAVE_NSS */
diff --git a/camel/camel-tcp-stream-ssl.h b/camel/camel-tcp-stream-ssl.h
deleted file mode 100644
index af68fe9644..0000000000
--- a/camel/camel-tcp-stream-ssl.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-
-#ifndef CAMEL_TCP_STREAM_SSL_H
-#define CAMEL_TCP_STREAM_SSL_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-#include <camel/camel-tcp-stream.h>
-#include <camel/camel-service.h>
-
-#define CAMEL_TCP_STREAM_SSL_TYPE (camel_tcp_stream_ssl_get_type ())
-#define CAMEL_TCP_STREAM_SSL(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TCP_STREAM_SSL_TYPE, CamelTcpStreamSSL))
-#define CAMEL_TCP_STREAM_SSL_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TCP_STREAM_SSL_TYPE, CamelTcpStreamSSLClass))
-#define CAMEL_IS_TCP_STREAM_SSL(o) (CAMEL_CHECK_TYPE((o), CAMEL_TCP_STREAM_SSL_TYPE))
-
-struct _CamelTcpStreamSSL {
- CamelTcpStream parent_object;
-
- struct _CamelTcpStreamSSLPrivate *priv;
-};
-
-typedef struct {
- CamelTcpStreamClass parent_class;
-
- /* virtual functions */
-
-} CamelTcpStreamSSLClass;
-
-/* Standard Camel function */
-CamelType camel_tcp_stream_ssl_get_type (void);
-
-/* public methods */
-CamelStream *camel_tcp_stream_ssl_new (CamelService *service, const char *expected_host);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_TCP_STREAM_SSL_H */
diff --git a/camel/camel-tcp-stream.c b/camel/camel-tcp-stream.c
deleted file mode 100644
index c00ca7e39d..0000000000
--- a/camel/camel-tcp-stream.c
+++ /dev/null
@@ -1,180 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "camel-tcp-stream.h"
-
-static CamelStreamClass *parent_class = NULL;
-
-/* Returns the class for a CamelTcpStream */
-#define CTS_CLASS(so) CAMEL_TCP_STREAM_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-static int tcp_connect (CamelTcpStream *stream, struct hostent *host, int port);
-static int tcp_getsockopt (CamelTcpStream *stream, CamelSockOptData *data);
-static int tcp_setsockopt (CamelTcpStream *stream, const CamelSockOptData *data);
-static gpointer tcp_get_socket (CamelTcpStream *stream);
-
-static void
-camel_tcp_stream_class_init (CamelTcpStreamClass *camel_tcp_stream_class)
-{
- CamelStreamClass *camel_stream_class =
- CAMEL_STREAM_CLASS (camel_tcp_stream_class);
-
- parent_class = CAMEL_STREAM_CLASS (camel_type_get_global_classfuncs (CAMEL_STREAM_TYPE));
-
- /* tcp stream methods */
- camel_tcp_stream_class->connect = tcp_connect;
- camel_tcp_stream_class->getsockopt = tcp_getsockopt;
- camel_tcp_stream_class->setsockopt = tcp_setsockopt;
- camel_tcp_stream_class->get_socket = tcp_get_socket;
-}
-
-static void
-camel_tcp_stream_init (void *o)
-{
- ;
-}
-
-CamelType
-camel_tcp_stream_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (CAMEL_STREAM_TYPE,
- "CamelTcpStream",
- sizeof (CamelTcpStream),
- sizeof (CamelTcpStreamClass),
- (CamelObjectClassInitFunc) camel_tcp_stream_class_init,
- NULL,
- (CamelObjectInitFunc) camel_tcp_stream_init,
- NULL);
- }
-
- return type;
-}
-
-
-static int
-tcp_connect (CamelTcpStream *stream, struct hostent *host, int port)
-{
- g_warning ("CamelTcpStream::connect called on default implementation\n");
- return -1;
-}
-
-/**
- * camel_tcp_stream_connect:
- * @stream: a CamelTcpStream object.
- * @host: a hostent value
- * @port: port
- *
- * Create a socket and connect based upon the data provided.
- *
- * Return value: zero on success or -1 on fail.
- **/
-int
-camel_tcp_stream_connect (CamelTcpStream *stream, struct hostent *host, int port)
-{
- g_return_val_if_fail (CAMEL_IS_TCP_STREAM (stream), -1);
-
- return CTS_CLASS (stream)->connect (stream, host, port);
-}
-
-
-static int
-tcp_getsockopt (CamelTcpStream *stream, CamelSockOptData *data)
-{
- g_warning ("CamelTcpStream::getsockopt called on default implementation\n");
- return -1;
-}
-
-
-/**
- * camel_tcp_stream_getsockopt:
- * @stream: tcp stream object
- * @data: socket option data
- *
- * Get the socket options set on the stream and populate #data.
- *
- * Return value: zero on success or -1 on fail.
- **/
-int
-camel_tcp_stream_getsockopt (CamelTcpStream *stream, CamelSockOptData *data)
-{
- g_return_val_if_fail (CAMEL_IS_TCP_STREAM (stream), -1);
-
- return CTS_CLASS (stream)->getsockopt (stream, data);
-}
-
-
-static int
-tcp_setsockopt (CamelTcpStream *stream, const CamelSockOptData *data)
-{
- g_warning ("CamelTcpStream::setsockopt called on default implementation\n");
- return -1;
-}
-
-
-/**
- * camel_tcp_stream_setsockopt:
- * @stream: tcp stream object
- * @data: socket option data
- *
- * Set the socket options contained in #data on the stream.
- *
- * Return value: zero on success or -1 on fail.
- **/
-int
-camel_tcp_stream_setsockopt (CamelTcpStream *stream, const CamelSockOptData *data)
-{
- g_return_val_if_fail (CAMEL_IS_TCP_STREAM (stream), -1);
-
- return CTS_CLASS (stream)->setsockopt (stream, data);
-}
-
-
-static gpointer
-tcp_get_socket (CamelTcpStream *stream)
-{
- g_warning ("CamelTcpStream::get_socket called on default implementation\n");
- return NULL;
-}
-
-
-/**
- * camel_tcp_stream_get_socket:
- * @stream: tcp stream object
- *
- * Get the stream's socket.
- *
- * Return value: the stream's socket on success or NULL on failure.
- **/
-gpointer
-camel_tcp_stream_get_socket (CamelTcpStream *stream)
-{
- g_return_val_if_fail (CAMEL_IS_TCP_STREAM (stream), NULL);
-
- return CTS_CLASS (stream)->get_socket (stream);
-}
diff --git a/camel/camel-tcp-stream.h b/camel/camel-tcp-stream.h
deleted file mode 100644
index 8d2d4130ed..0000000000
--- a/camel/camel-tcp-stream.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-
-#ifndef CAMEL_TCP_STREAM_H
-#define CAMEL_TCP_STREAM_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netinet/tcp.h>
-#include <netdb.h>
-#include <unistd.h>
-
-#include <camel/camel-stream.h>
-
-#define CAMEL_TCP_STREAM_TYPE (camel_tcp_stream_get_type ())
-#define CAMEL_TCP_STREAM(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TCP_STREAM_TYPE, CamelTcpStream))
-#define CAMEL_TCP_STREAM_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TCP_STREAM_TYPE, CamelTcpStreamClass))
-#define CAMEL_IS_TCP_STREAM(o) (CAMEL_CHECK_TYPE((o), CAMEL_TCP_STREAM_TYPE))
-
-typedef enum {
- CAMEL_SOCKOPT_NONBLOCKING, /* nonblocking io */
- CAMEL_SOCKOPT_LINGER, /* linger on close if data present */
- CAMEL_SOCKOPT_REUSEADDR, /* allow local address reuse */
- CAMEL_SOCKOPT_KEEPALIVE, /* keep connections alive */
- CAMEL_SOCKOPT_RECVBUFFERSIZE, /* receive buffer size */
- CAMEL_SOCKOPT_SENDBUFFERSIZE, /* send buffer size */
-
- CAMEL_SOCKOPT_IPTIMETOLIVE, /* time to live */
- CAMEL_SOCKOPT_IPTYPEOFSERVICE, /* type of service and precedence */
-
- CAMEL_SOCKOPT_ADDMEMBER, /* add an IP group membership */
- CAMEL_SOCKOPT_DROPMEMBER, /* drop an IP group membership */
- CAMEL_SOCKOPT_MCASTINTERFACE, /* multicast interface address */
- CAMEL_SOCKOPT_MCASTTIMETOLIVE, /* multicast timetolive */
- CAMEL_SOCKOPT_MCASTLOOPBACK, /* multicast loopback */
-
- CAMEL_SOCKOPT_NODELAY, /* don't delay send to coalesce packets */
- CAMEL_SOCKOPT_MAXSEGMENT, /* maximum segment size */
- CAMEL_SOCKOPT_BROADCAST, /* enable broadcast */
- CAMEL_SOCKOPT_LAST
-} CamelSockOpt;
-
-typedef struct linger CamelLinger;
-
-typedef struct _CamelSockOptData {
- CamelSockOpt option;
- union {
- guint ip_ttl; /* IP time to live */
- guint mcast_ttl; /* IP multicast time to live */
- guint tos; /* IP type of service and precedence */
- gboolean non_blocking; /* Non-blocking (network) I/O */
- gboolean reuse_addr; /* Allow local address reuse */
- gboolean keep_alive; /* Keep connections alive */
- gboolean mcast_loopback; /* IP multicast loopback */
- gboolean no_delay; /* Don't delay send to coalesce packets */
- gboolean broadcast; /* Enable broadcast */
- size_t max_segment; /* Maximum segment size */
- size_t recv_buffer_size; /* Receive buffer size */
- size_t send_buffer_size; /* Send buffer size */
- CamelLinger linger; /* Time to linger on close if data present */
- } value;
-} CamelSockOptData;
-
-struct _CamelTcpStream
-{
- CamelStream parent_object;
-
-};
-
-typedef struct {
- CamelStreamClass parent_class;
-
- /* Virtual methods */
- int (*connect) (CamelTcpStream *stream, struct hostent *host, int port);
- int (*getsockopt) (CamelTcpStream *stream, CamelSockOptData *data);
- int (*setsockopt) (CamelTcpStream *stream, const CamelSockOptData *data);
-
- gpointer (*get_socket) (CamelTcpStream *stream);
-} CamelTcpStreamClass;
-
-/* Standard Camel function */
-CamelType camel_tcp_stream_get_type (void);
-
-/* public methods */
-int camel_tcp_stream_connect (CamelTcpStream *stream, struct hostent *host, int port);
-int camel_tcp_stream_getsockopt (CamelTcpStream *stream, CamelSockOptData *data);
-int camel_tcp_stream_setsockopt (CamelTcpStream *stream, const CamelSockOptData *data);
-
-gpointer camel_tcp_stream_get_socket (CamelTcpStream *stream);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_TCP_STREAM_H */
diff --git a/camel/camel-transport.c b/camel/camel-transport.c
deleted file mode 100644
index 5219ac4288..0000000000
--- a/camel/camel-transport.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-transport.c : Abstract class for an email transport */
-
-/*
- *
- * Author :
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "camel-transport.h"
-#include "camel-exception.h"
-
-/* Returns the class for a CamelTransport */
-#define CT_CLASS(so) CAMEL_TRANSPORT_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-CamelType
-camel_transport_get_type (void)
-{
- static CamelType camel_transport_type = CAMEL_INVALID_TYPE;
-
- if (camel_transport_type == CAMEL_INVALID_TYPE) {
- camel_transport_type = camel_type_register (CAMEL_SERVICE_TYPE, "CamelTransport",
- sizeof (CamelTransport),
- sizeof (CamelTransportClass),
- NULL,
- NULL,
- NULL,
- NULL);
- }
-
- return camel_transport_type;
-}
-
-
-/**
- * camel_transport_can_send: Determine if a message is send-able on a transport
- * @transport: the transport
- * @message: the message
- *
- * Determines if a CamelMedium is of an appropriate subclass to send
- * via the given @transport. (Mail transports are not able to send
- * netnews articles, and vice versa.)
- *
- * Return value: TRUE or FALSE
- **/
-gboolean
-camel_transport_can_send (CamelTransport *transport, CamelMedium *message)
-{
- return CT_CLASS (transport)->can_send (transport, message);
-}
-
-/**
- * camel_transport_send: Send a message via a transport
- * @transport: the transport
- * @message: the message
- * @ex: a CamelException
- *
- * Sends the message to the recipients indicated in the message.
- *
- * Return value: success or failure.
- **/
-gboolean
-camel_transport_send (CamelTransport *transport, CamelMedium *message,
- CamelException *ex)
-{
- return CT_CLASS (transport)->send (transport, message, ex);
-}
-
-/**
- * camel_transport_send_to: Send a message non-standard recipients
- * @transport: the transport
- * @message: the message
- * @recipients: the recipients
- * @ex: a CamelException
- *
- * Sends the message to the given recipients, rather than to the
- * recipients indicated in the message.
- *
- * Return value: success or failure.
- **/
-gboolean
-camel_transport_send_to (CamelTransport *transport, CamelMedium *message,
- GList *recipients, CamelException *ex)
-{
- return CT_CLASS (transport)->send_to (transport, message,
- recipients, ex);
-}
diff --git a/camel/camel-transport.h b/camel/camel-transport.h
deleted file mode 100644
index aeab3ba489..0000000000
--- a/camel/camel-transport.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-transport.h : Abstract class for an email transport */
-
-/*
- *
- * Author :
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_TRANSPORT_H
-#define CAMEL_TRANSPORT_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <glib.h>
-#include <camel/camel-service.h>
-
-#define CAMEL_TRANSPORT_TYPE (camel_transport_get_type ())
-#define CAMEL_TRANSPORT(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TRANSPORT_TYPE, CamelTransport))
-#define CAMEL_TRANSPORT_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TRANSPORT_TYPE, CamelTransportClass))
-#define CAMEL_IS_TRANSPORT(o) (CAMEL_CHECK_TYPE((o), CAMEL_TRANSPORT_TYPE))
-
-
-struct _CamelTransport
-{
- CamelService parent_object;
-
- gboolean supports_8bit;
-};
-
-
-
-typedef struct {
- CamelServiceClass parent_class;
-
- gboolean (*can_send) (CamelTransport *transport, CamelMedium *message);
- gboolean (*send) (CamelTransport *transport, CamelMedium *message,
- CamelException *ex);
- gboolean (*send_to) (CamelTransport *transport,
- CamelMedium *message, GList *recipients,
- CamelException *ex);
-} CamelTransportClass;
-
-
-/* public methods */
-gboolean camel_transport_can_send (CamelTransport *transport,
- CamelMedium *message);
-
-gboolean camel_transport_send (CamelTransport *transport,
- CamelMedium *message,
- CamelException *ex);
-
-/* FIXME: This should use a camel-address */
-gboolean camel_transport_send_to (CamelTransport *transport,
- CamelMedium *message,
- GList *recipients,
- CamelException *ex);
-
-/* Standard Camel function */
-CamelType camel_transport_get_type (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_TRANSPORT_H */
diff --git a/camel/camel-types.h b/camel/camel-types.h
deleted file mode 100644
index dbcce56550..0000000000
--- a/camel/camel-types.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Copyright 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_TYPES_H
-#define CAMEL_TYPES_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-typedef struct _CamelAddress CamelAddress;
-typedef struct _header_content_type CamelContentType;
-typedef struct _CamelDiscoFolder CamelDiscoFolder;
-typedef struct _CamelDiscoStore CamelDiscoStore;
-typedef struct _CamelDataWrapper CamelDataWrapper;
-typedef struct _CamelException CamelException;
-typedef struct _CamelFolder CamelFolder;
-typedef struct _CamelFolderSearch CamelFolderSearch;
-typedef struct _CamelFolderSummary CamelFolderSummary;
-typedef struct _CamelInternetAddress CamelInternetAddress;
-typedef struct _CamelMedium CamelMedium;
-typedef struct _CamelMessageContentInfo CamelMessageContentInfo;
-typedef struct _CamelMessageInfo CamelMessageInfo;
-typedef struct _CamelMimeFilter CamelMimeFilter;
-typedef struct _CamelMimeFilterBasic CamelMimeFilterBasic;
-typedef struct _CamelMimeFilterBestenc CamelMimeFilterBestenc;
-typedef struct _CamelMimeFilterCharset CamelMimeFilterCharset;
-typedef struct _CamelMimeFilterIndex CamelMimeFilterIndex;
-typedef struct _CamelMimeFilterLinewrap CamelMimeFilterLinewrap;
-typedef struct _CamelMimeFilterSave CamelMimeFilterSave;
-typedef struct _CamelMimeFilterCRLF CamelMimeFilterCRLF;
-typedef struct _CamelMimeMessage CamelMimeMessage;
-typedef struct _CamelMimeParser CamelMimeParser;
-typedef struct _CamelMimePart CamelMimePart;
-typedef struct _CamelMultipart CamelMultipart;
-typedef struct _CamelNewsAddress CamelNewsAddress;
-typedef struct _CamelSeekableStream CamelSeekableStream;
-typedef struct _CamelSeekableSubstream CamelSeekableSubstream;
-typedef struct _CamelService CamelService;
-typedef struct _CamelSession CamelSession;
-typedef struct _CamelSimpleDataWrapper CamelSimpleDataWrapper;
-typedef struct _CamelStore CamelStore;
-typedef struct _CamelStream CamelStream;
-typedef struct _CamelStreamNull CamelStreamNull;
-typedef struct _CamelStreamBuffer CamelStreamBuffer;
-typedef struct _CamelStreamDataWrapper CamelStreamDataWrapper;
-typedef struct _CamelStreamFilter CamelStreamFilter;
-typedef struct _CamelStreamFs CamelStreamFs;
-typedef struct _CamelStreamMem CamelStreamMem;
-typedef struct _CamelTcpStream CamelTcpStream;
-typedef struct _CamelTcpStreamRaw CamelTcpStreamRaw;
-typedef struct _CamelTcpStreamSSL CamelTcpStreamSSL;
-typedef struct _CamelTcpStreamOpenSSL CamelTcpStreamOpenSSL;
-typedef struct _CamelTransport CamelTransport;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_TYPES_H */
diff --git a/camel/camel-uid-cache.c b/camel/camel-uid-cache.c
deleted file mode 100644
index fcea86f608..0000000000
--- a/camel/camel-uid-cache.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-uid-cache.c: UID caching code. */
-
-/*
- * Authors:
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <errno.h>
-#include <fcntl.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-#include "camel-uid-cache.h"
-
-static void free_uid (gpointer key, gpointer value, gpointer data);
-static void maybe_write_uid (gpointer key, gpointer value, gpointer data);
-
-/**
- * camel_uid_cache_new:
- * @filename: path to load the cache from
- *
- * Creates a new UID cache, initialized from @filename. If @filename
- * doesn't already exist, the UID cache will be empty. Otherwise, if
- * it does exist but can't be read, the function will return %NULL.
- *
- * Return value: a new UID cache, or %NULL
- **/
-CamelUIDCache *
-camel_uid_cache_new (const char *filename)
-{
- CamelUIDCache *cache;
- struct stat st;
- char *buf, **uids;
- int fd, i;
-
- fd = open (filename, O_RDWR | O_CREAT, 0700);
- if (fd == -1)
- return NULL;
-
- if (fstat (fd, &st) != 0) {
- close (fd);
- return NULL;
- }
- buf = g_malloc (st.st_size + 1);
-
- if (read (fd, buf, st.st_size) == -1) {
- close (fd);
- g_free (buf);
- return NULL;
- }
- buf[st.st_size] = '\0';
-
- cache = g_new (CamelUIDCache, 1);
- cache->fd = fd;
- cache->level = 1;
- cache->uids = g_hash_table_new (g_str_hash, g_str_equal);
-
- uids = g_strsplit (buf, "\n", 0);
- g_free (buf);
- for (i = 0; uids[i]; i++) {
- g_hash_table_insert (cache->uids, uids[i],
- GINT_TO_POINTER (cache->level));
- }
- g_free (uids);
-
- return cache;
-}
-
-/**
- * camel_uid_cache_save:
- * @cache: a CamelUIDCache
- *
- * Attempts to save @cache back to disk.
- *
- * Return value: success or failure
- **/
-gboolean
-camel_uid_cache_save (CamelUIDCache *cache)
-{
- if (lseek (cache->fd, 0, SEEK_SET) != 0)
- return FALSE;
- g_hash_table_foreach (cache->uids, maybe_write_uid, cache);
- return ftruncate (cache->fd, lseek (cache->fd, 0, SEEK_CUR)) == 0;
-}
-
-static void
-maybe_write_uid (gpointer key, gpointer value, gpointer data)
-{
- CamelUIDCache *cache = data;
-
- if (GPOINTER_TO_INT (value) == cache->level) {
- write (cache->fd, key, strlen (key));
- write (cache->fd, "\n", 1);
- }
-}
-
-/**
- * camel_uid_cache_destroy:
- * @cache: a CamelUIDCache
- *
- * Destroys @cache and frees its data.
- **/
-void
-camel_uid_cache_destroy (CamelUIDCache *cache)
-{
- g_hash_table_foreach (cache->uids, free_uid, NULL);
- g_hash_table_destroy (cache->uids);
- close (cache->fd);
- g_free (cache);
-}
-
-static void
-free_uid (gpointer key, gpointer value, gpointer data)
-{
- g_free (key);
-}
-
-/**
- * camel_uid_cache_get_new_uids:
- * @cache: a CamelUIDCache
- * @uids: an array of UIDs
- *
- * Returns an array of UIDs from @uids that are not in @cache, and
- * removes UIDs from @cache that aren't in @uids.
- *
- * Return value: an array of new UIDs, which must be freed with
- * camel_uid_cache_free_uids().
- **/
-GPtrArray *
-camel_uid_cache_get_new_uids (CamelUIDCache *cache, GPtrArray *uids)
-{
- GPtrArray *new_uids;
- gpointer old_uid, old_level;
- char *uid;
- int i;
-
- new_uids = g_ptr_array_new ();
- cache->level++;
-
- for (i = 0; i < uids->len; i++) {
- uid = uids->pdata[i];
- if (g_hash_table_lookup_extended (cache->uids, uid,
- &old_uid, &old_level)) {
- g_hash_table_remove (cache->uids, uid);
- g_free (old_uid);
- } else
- g_ptr_array_add (new_uids, g_strdup (uid));
- g_hash_table_insert (cache->uids, g_strdup (uid),
- GINT_TO_POINTER (cache->level));
- }
-
- return new_uids;
-}
-
-/**
- * camel_uid_cache_free_uids:
- * @uids: an array returned from camel_uid_cache_get_new_uids()
- *
- * Frees the array of UIDs.
- **/
-void
-camel_uid_cache_free_uids (GPtrArray *uids)
-{
- int i;
-
- for (i = 0; i < uids->len; i++)
- g_free (uids->pdata[i]);
- g_ptr_array_free (uids, TRUE);
-}
diff --git a/camel/camel-uid-cache.h b/camel/camel-uid-cache.h
deleted file mode 100644
index 57a75ab16a..0000000000
--- a/camel/camel-uid-cache.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-uid-cache.h: UID caching code. */
-
-/*
- * Authors:
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_UID_CACHE_H
-#define CAMEL_UID_CACHE_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-#include <stdio.h>
-#include <glib.h>
-
-typedef struct {
- int fd, level;
- GHashTable *uids;
-} CamelUIDCache;
-
-CamelUIDCache *camel_uid_cache_new (const char *filename);
-gboolean camel_uid_cache_save (CamelUIDCache *cache);
-void camel_uid_cache_destroy (CamelUIDCache *cache);
-
-GPtrArray *camel_uid_cache_get_new_uids (CamelUIDCache *cache,
- GPtrArray *uids);
-void camel_uid_cache_free_uids (GPtrArray *uids);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* CAMEL_UID_CACHE_H */
diff --git a/camel/camel-url.c b/camel/camel-url.c
deleted file mode 100644
index aa4c0e2c4f..0000000000
--- a/camel/camel-url.c
+++ /dev/null
@@ -1,553 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-url.c : utility functions to parse URLs */
-
-/*
- * Authors:
- * Dan Winship <danw@ximian.com>
- * Tiago Antào <tiagoantao@bigfoot.com>
- * Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 1999-2001 Ximian, Inc. (http://www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "camel-url.h"
-#include "camel-exception.h"
-#include "camel-mime-utils.h"
-#include "camel-object.h"
-
-static void copy_param (GQuark key_id, gpointer data, gpointer user_data);
-static void output_param (GQuark key_id, gpointer data, gpointer user_data);
-
-/**
- * camel_url_new_with_base:
- * @base: a base URL
- * @url_string: the URL
- *
- * Parses @url_string relative to @base.
- *
- * Return value: a parsed CamelURL.
- **/
-CamelURL *
-camel_url_new_with_base (CamelURL *base, const char *url_string)
-{
- CamelURL *url;
- const char *end, *hash, *colon, *semi, *at, *slash, *question;
- const char *p;
-
- url = g_new0 (CamelURL, 1);
-
- /* See RFC1808 for details. IF YOU CHANGE ANYTHING IN THIS
- * FUNCTION, RUN tests/misc/url AFTERWARDS.
- */
-
- /* Find fragment. */
- end = hash = strchr (url_string, '#');
- if (hash && hash[1]) {
- url->fragment = g_strdup (hash + 1);
- camel_url_decode (url->fragment);
- } else
- end = url_string + strlen (url_string);
-
- /* Find protocol: initial [a-z+.-]* substring until ":" */
- p = url_string;
- while (p < end && (isalnum ((unsigned char)*p) ||
- *p == '.' || *p == '+' || *p == '-'))
- p++;
-
- if (p > url_string && *p == ':') {
- url->protocol = g_strndup (url_string, p - url_string);
- g_strdown (url->protocol);
- url_string = p + 1;
- }
-
- if (!*url_string && !base)
- return url;
-
- /* Check for authority */
- if (strncmp (url_string, "//", 2) == 0) {
- url_string += 2;
-
- slash = url_string + strcspn (url_string, "/#");
- at = strchr (url_string, '@');
- if (at && at < slash) {
- colon = strchr (url_string, ':');
- if (colon && colon < at) {
- url->passwd = g_strndup (colon + 1,
- at - colon - 1);
- camel_url_decode (url->passwd);
- } else {
- url->passwd = NULL;
- colon = at;
- }
-
- semi = strchr(url_string, ';');
- if (semi && semi < colon &&
- !strncasecmp (semi, ";auth=", 6)) {
- url->authmech = g_strndup (semi + 6,
- colon - semi - 6);
- camel_url_decode (url->authmech);
- } else {
- url->authmech = NULL;
- semi = colon;
- }
-
- url->user = g_strndup (url_string, semi - url_string);
- camel_url_decode (url->user);
- url_string = at + 1;
- } else
- url->user = url->passwd = url->authmech = NULL;
-
- /* Find host and port. */
- colon = strchr (url_string, ':');
- if (colon && colon < slash) {
- url->host = g_strndup (url_string, colon - url_string);
- url->port = strtoul (colon + 1, NULL, 10);
- } else {
- url->host = g_strndup (url_string, slash - url_string);
- camel_url_decode (url->host);
- url->port = 0;
- }
-
- url_string = slash;
- }
-
- /* Find query */
- question = memchr (url_string, '?', end - url_string);
- if (question) {
- if (question[1]) {
- url->query = g_strndup (question + 1,
- end - (question + 1));
- camel_url_decode (url->query);
- }
- end = question;
- }
-
- /* Find parameters */
- semi = memchr (url_string, ';', end - url_string);
- if (semi) {
- if (semi[1]) {
- const char *cur, *p, *eq;
- char *name, *value;
-
- for (cur = semi + 1; cur < end; cur = p + 1) {
- p = memchr (cur, ';', end - cur);
- if (!p)
- p = end;
- eq = memchr (cur, '=', p - cur);
- if (eq) {
- name = g_strndup (cur, eq - cur);
- value = g_strndup (eq + 1, p - (eq + 1));
- camel_url_decode (value);
- } else {
- name = g_strndup (cur, p - cur);
- value = g_strdup ("");
- }
- camel_url_decode (name);
- g_datalist_set_data_full (&url->params, name,
- value, g_free);
- g_free (name);
- }
- }
- end = semi;
- }
-
- if (end != url_string) {
- url->path = g_strndup (url_string, end - url_string);
- camel_url_decode (url->path);
- }
-
- /* Apply base URL. Again, this is spelled out in RFC 1808. */
- if (base && !url->protocol && url->host)
- url->protocol = g_strdup (base->protocol);
- else if (base && !url->protocol) {
- if (!url->user && !url->authmech && !url->passwd &&
- !url->host && !url->port && !url->path &&
- !url->params && !url->query && !url->fragment)
- url->fragment = g_strdup (base->fragment);
-
- url->protocol = g_strdup (base->protocol);
- url->user = g_strdup (base->user);
- url->authmech = g_strdup (base->authmech);
- url->passwd = g_strdup (base->passwd);
- url->host = g_strdup (base->host);
- url->port = base->port;
-
- if (!url->path) {
- url->path = g_strdup (base->path);
- if (!url->params) {
- g_datalist_foreach (&base->params, copy_param,
- &url->params);
- if (!url->query)
- url->query = g_strdup (base->query);
- }
- } else if (*url->path != '/') {
- char *newpath, *last, *p, *q;
-
- last = strrchr (base->path, '/');
- if (last) {
- newpath = g_strdup_printf ("%.*s/%s",
- last - base->path,
- base->path,
- url->path);
- } else
- newpath = g_strdup_printf ("/%s", url->path);
-
- /* Remove "./" where "." is a complete segment. */
- for (p = newpath + 1; *p; ) {
- if (*(p - 1) == '/' &&
- *p == '.' && *(p + 1) == '/')
- memmove (p, p + 2, strlen (p + 2) + 1);
- else
- p++;
- }
- /* Remove "." at end. */
- if (p > newpath + 2 &&
- *(p - 1) == '.' && *(p - 2) == '/')
- *(p - 1) = '\0';
- /* Remove "<segment>/../" where <segment> != ".." */
- for (p = newpath + 1; *p; ) {
- if (!strncmp (p, "../", 3)) {
- p += 3;
- continue;
- }
- q = strchr (p + 1, '/');
- if (!q)
- break;
- if (strncmp (q, "/../", 4) != 0) {
- p = q + 1;
- continue;
- }
- memmove (p, q + 4, strlen (q + 4) + 1);
- p = newpath + 1;
- }
- /* Remove "<segment>/.." at end */
- q = strrchr (newpath, '/');
- if (q && !strcmp (q, "/..")) {
- p = q - 1;
- while (p > newpath && *p != '/')
- p--;
- if (strncmp (p, "/../", 4) != 0)
- *(p + 1) = 0;
- }
- g_free (url->path);
- url->path = newpath;
- }
- }
-
- return url;
-}
-
-static void
-copy_param (GQuark key_id, gpointer data, gpointer user_data)
-{
- GData **copy = user_data;
-
- g_datalist_id_set_data_full (copy, key_id, g_strdup (data), g_free);
-}
-
-/**
- * camel_url_new:
- * @url_string: a URL
- * @ex: a CamelException
- *
- * Parses an absolute URL.
- *
- * Return value: a CamelURL, or %NULL.
- **/
-CamelURL *
-camel_url_new (const char *url_string, CamelException *ex)
-{
- CamelURL *url = camel_url_new_with_base (NULL, url_string);
-
- if (!url->protocol) {
- camel_url_free (url);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_URL_INVALID,
- _("Could not parse URL `%s'"),
- url_string);
- return NULL;
- }
- return url;
-}
-
-/**
- * camel_url_to_string:
- * @url: a CamelURL
- * @flags: additional translation options.
- *
- * Return value: a string representing @url, which the caller must free.
- **/
-char *
-camel_url_to_string (CamelURL *url, guint32 flags)
-{
- GString *str;
- char *enc, *return_result;
-
- /* IF YOU CHANGE ANYTHING IN THIS FUNCTION, RUN
- * tests/misc/url AFTERWARD.
- */
-
- str = g_string_sized_new (20);
-
- if (url->protocol)
- g_string_sprintfa (str, "%s:", url->protocol);
- if (url->host) {
- g_string_append (str, "//");
- if (url->user) {
- enc = camel_url_encode (url->user, TRUE, ":;@/");
- g_string_append (str, enc);
- g_free (enc);
- }
- if (url->authmech && *url->authmech) {
- enc = camel_url_encode (url->authmech, TRUE, ":@/");
- g_string_sprintfa (str, ";auth=%s", enc);
- g_free (enc);
- }
- if (url->passwd && !(flags & CAMEL_URL_HIDE_PASSWORD)) {
- enc = camel_url_encode (url->passwd, TRUE, "@/");
- g_string_sprintfa (str, ":%s", enc);
- g_free (enc);
- }
- if (url->host) {
- enc = camel_url_encode (url->host, TRUE, ":/");
- g_string_sprintfa (str, "%s%s", url->user ? "@" : "", enc);
- g_free (enc);
- }
- if (url->port)
- g_string_sprintfa (str, ":%d", url->port);
- if (!url->path && (url->params || url->query || url->fragment))
- g_string_append_c (str, '/');
- }
-
- if (url->path) {
- enc = camel_url_encode (url->path, FALSE, ";?#");
- g_string_sprintfa (str, "%s", enc);
- g_free (enc);
- }
- if (url->params && !(flags & CAMEL_URL_HIDE_PARAMS))
- g_datalist_foreach (&url->params, output_param, str);
- if (url->query) {
- enc = camel_url_encode (url->query, FALSE, "#");
- g_string_sprintfa (str, "?%s", enc);
- g_free (enc);
- }
- if (url->fragment) {
- enc = camel_url_encode (url->fragment, FALSE, NULL);
- g_string_sprintfa (str, "#%s", enc);
- g_free (enc);
- }
-
- return_result = str->str;
- g_string_free (str, FALSE);
- return return_result;
-}
-
-static void
-output_param (GQuark key_id, gpointer data, gpointer user_data)
-{
- GString *str = user_data;
- char *enc;
-
- enc = camel_url_encode (g_quark_to_string (key_id), FALSE, "?#");
- g_string_sprintfa (str, ";%s", enc);
- g_free (enc);
- if (*(char *)data) {
- enc = camel_url_encode (data, FALSE, "?#");
- g_string_sprintfa (str, "=%s", enc);
- g_free (enc);
- }
-}
-
-/**
- * camel_url_free:
- * @url: a CamelURL
- *
- * Frees @url
- **/
-void
-camel_url_free (CamelURL *url)
-{
- g_return_if_fail (url);
-
- g_free (url->protocol);
- g_free (url->user);
- g_free (url->authmech);
- g_free (url->passwd);
- g_free (url->host);
- g_free (url->path);
- g_datalist_clear (&url->params);
- g_free (url->query);
- g_free (url->fragment);
-
- g_free (url);
-}
-
-
-#define DEFINE_CAMEL_URL_SET(part) \
-void \
-camel_url_set_##part (CamelURL *url, const char *part) \
-{ \
- g_free (url->part); \
- url->part = g_strdup (part); \
-}
-
-DEFINE_CAMEL_URL_SET (protocol)
-DEFINE_CAMEL_URL_SET (user)
-DEFINE_CAMEL_URL_SET (authmech)
-DEFINE_CAMEL_URL_SET (passwd)
-DEFINE_CAMEL_URL_SET (host)
-DEFINE_CAMEL_URL_SET (path)
-DEFINE_CAMEL_URL_SET (query)
-DEFINE_CAMEL_URL_SET (fragment)
-
-void
-camel_url_set_port (CamelURL *url, int port)
-{
- url->port = port;
-}
-
-void
-camel_url_set_param (CamelURL *url, const char *name, const char *value)
-{
- g_datalist_set_data (&url->params, name, value ? g_strdup (value) : NULL);
-}
-
-const char *
-camel_url_get_param (CamelURL *url, const char *name)
-{
- return g_datalist_get_data (&url->params, name);
-}
-
-
-/**
- * camel_url_encode:
- * @part: a URL part
- * @escape_unsafe: whether or not to %-escape "unsafe" characters.
- * ("%#<>{}|\^~[]`)
- * @escape_extra: additional characters to escape.
- *
- * This %-encodes the given URL part and returns the escaped version
- * in allocated memory, which the caller must free when it is done.
- **/
-char *
-camel_url_encode (char *part, gboolean escape_unsafe, char *escape_extra)
-{
- char *work, *p;
-
- /* worst case scenario = 3 times the initial */
- p = work = g_malloc (3 * strlen (part) + 1);
-
- while (*part) {
- if (((guchar) *part >= 127) || ((guchar) *part <= ' ') ||
- (escape_unsafe && strchr ("\"%#<>{}|\\^~[]`", *part)) ||
- (escape_extra && strchr (escape_extra, *part))) {
- sprintf (p, "%%%.02hX", (guchar) *part++);
- p += 3;
- } else
- *p++ = *part++;
- }
- *p = '\0';
-
- return work;
-}
-
-#define HEXVAL(c) (isdigit (c) ? (c) - '0' : tolower (c) - 'a' + 10)
-
-/**
- * camel_url_decode:
- * @part: a URL part
- *
- * %-decodes the passed-in URL *in place*. The decoded version is
- * never longer than the encoded version, so there does not need to
- * be any additional space at the end of the string.
- */
-void
-camel_url_decode (char *part)
-{
- guchar *s, *d;
-
- s = d = (guchar *)part;
- while (*s) {
- if (*s == '%') {
- if (isxdigit (s[1]) && isxdigit (s[2])) {
- *d++ = HEXVAL (s[1]) * 16 + HEXVAL (s[2]);
- s += 3;
- } else
- *d++ = *s++;
- } else
- *d++ = *s++;
- }
- *d = '\0';
-}
-
-guint
-camel_url_hash (const void *v)
-{
- const CamelURL *u = v;
- guint hash = 0;
-
-#define ADD_HASH(s) if (s) hash ^= g_str_hash (s);
-
- ADD_HASH (u->protocol);
- ADD_HASH (u->user);
- ADD_HASH (u->authmech);
- ADD_HASH (u->host);
- ADD_HASH (u->path);
- ADD_HASH (u->query);
- hash ^= u->port;
-
- return hash;
-}
-
-static int
-check_equal (char *s1, char *s2)
-{
- if (s1 == NULL) {
- if (s2 == NULL)
- return TRUE;
- else
- return FALSE;
- }
-
- if (s2 == NULL)
- return FALSE;
-
- return strcmp (s1, s2) == 0;
-}
-
-int
-camel_url_equal(const void *v, const void *v2)
-{
- const CamelURL *u1 = v, *u2 = v2;
-
- return check_equal(u1->protocol, u2->protocol)
- && check_equal(u1->user, u2->user)
- && check_equal(u1->authmech, u2->authmech)
- && check_equal(u1->host, u2->host)
- && check_equal(u1->path, u2->path)
- && check_equal(u1->query, u2->query)
- && u1->port == u2->port;
-}
diff --git a/camel/camel-url.h b/camel/camel-url.h
deleted file mode 100644
index 9465da06a1..0000000000
--- a/camel/camel-url.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-url.h : utility functions to parse URLs */
-
-/*
- * Authors:
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_URL_H
-#define CAMEL_URL_H 1
-
-#include <glib.h>
-#include <camel/camel-types.h>
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-typedef struct {
- char *protocol;
- char *user;
- char *authmech;
- char *passwd;
- char *host;
- int port;
- char *path;
- GData *params;
- char *query;
- char *fragment;
-} CamelURL;
-
-#define CAMEL_URL_HIDE_PASSWORD (1 << 0)
-#define CAMEL_URL_HIDE_PARAMS (1 << 1)
-#define CAMEL_URL_HIDE_AUTH (1 << 2)
-
-CamelURL *camel_url_new_with_base (CamelURL *base, const char *url_string);
-CamelURL *camel_url_new (const char *url_string, CamelException *ex);
-char *camel_url_to_string (CamelURL *url, guint32 flags);
-void camel_url_free (CamelURL *url);
-
-char *camel_url_encode (char *part, gboolean escape_unsafe, char *escape_extra);
-void camel_url_decode (char *part);
-
-/* for editing url's */
-void camel_url_set_protocol (CamelURL *url, const char *protocol);
-void camel_url_set_user (CamelURL *url, const char *user);
-void camel_url_set_authmech (CamelURL *url, const char *authmech);
-void camel_url_set_passwd (CamelURL *url, const char *passwd);
-void camel_url_set_host (CamelURL *url, const char *host);
-void camel_url_set_port (CamelURL *url, int port);
-void camel_url_set_path (CamelURL *url, const char *path);
-void camel_url_set_param (CamelURL *url, const char *name, const char *value);
-void camel_url_set_query (CamelURL *url, const char *query);
-void camel_url_set_fragment (CamelURL *url, const char *fragment);
-
-const char *camel_url_get_param (CamelURL *url, const char *name);
-
-/* for putting url's into hash tables */
-guint camel_url_hash (const void *v);
-int camel_url_equal(const void *v, const void *v2);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* URL_UTIL_H */
diff --git a/camel/camel-vee-folder.c b/camel/camel-vee-folder.c
deleted file mode 100644
index 7fdef39272..0000000000
--- a/camel/camel-vee-folder.c
+++ /dev/null
@@ -1,1055 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- * Jeffrey Stedfast <fejj@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-
-#include "camel-exception.h"
-#include "camel-vee-folder.h"
-#include "camel-store.h"
-#include "camel-folder-summary.h"
-#include "camel-mime-message.h"
-#include "camel-folder-search.h"
-
-#include "camel-vee-store.h" /* for open flags */
-#include "camel-private.h"
-
-#include "e-util/md5-utils.h"
-
-#if defined (DOEPOOLV) || defined (DOESTRV)
-#include "e-util/e-memory.h"
-#endif
-
-#define d(x)
-
-#define _PRIVATE(o) (((CamelVeeFolder *)(o))->priv)
-
-static void vee_sync (CamelFolder *folder, gboolean expunge, CamelException *ex);
-static void vee_expunge (CamelFolder *folder, CamelException *ex);
-
-static CamelMimeMessage *vee_get_message (CamelFolder *folder, const gchar *uid, CamelException *ex);
-static void vee_move_messages_to(CamelFolder *source, GPtrArray *uids, CamelFolder *dest, CamelException *ex);
-
-static GPtrArray *vee_search_by_expression(CamelFolder *folder, const char *expression, CamelException *ex);
-
-static void vee_set_message_flags (CamelFolder *folder, const char *uid, guint32 flags, guint32 set);
-static void vee_set_message_user_flag (CamelFolder *folder, const char *uid, const char *name, gboolean value);
-
-static void camel_vee_folder_class_init (CamelVeeFolderClass *klass);
-static void camel_vee_folder_init (CamelVeeFolder *obj);
-static void camel_vee_folder_finalise (CamelObject *obj);
-
-static int vee_folder_build_folder(CamelVeeFolder *vf, CamelFolder *source, CamelException *ex);
-static void vee_folder_remove_folder(CamelVeeFolder *vf, CamelFolder *source);
-
-static void message_changed(CamelFolder *f, const char *uid, CamelVeeFolder *vf);
-static void folder_changed(CamelFolder *sub, CamelFolderChangeInfo *changes, CamelVeeFolder *vf);
-
-static CamelFolderClass *camel_vee_folder_parent;
-
-/* a vfolder for unmatched messages */
-/* use folder_unmatched->summary_lock for access to unmatched_uids or appropriate internals, for consistency */
-static CamelVeeFolder *folder_unmatched;
-static GHashTable *unmatched_uids; /* a refcount of uid's that are matched by any rules */
-#ifdef ENABLE_THREADS
-#include <pthread.h>
-static pthread_mutex_t unmatched_lock = PTHREAD_MUTEX_INITIALIZER;
-/* only used to initialise folder_unmatched */
-#define UNMATCHED_LOCK() pthread_mutex_lock(&unmatched_lock)
-#define UNMATCHED_UNLOCK() pthread_mutex_unlock(&unmatched_lock)
-#else
-#define UNMATCHED_LOCK()
-#define UNMATCHED_UNLOCK()
-#endif
-
-CamelType
-camel_vee_folder_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_folder_get_type (), "CamelVeeFolder",
- sizeof (CamelVeeFolder),
- sizeof (CamelVeeFolderClass),
- (CamelObjectClassInitFunc) camel_vee_folder_class_init,
- NULL,
- (CamelObjectInitFunc) camel_vee_folder_init,
- (CamelObjectFinalizeFunc) camel_vee_folder_finalise);
- }
-
- return type;
-}
-
-static void
-camel_vee_folder_class_init (CamelVeeFolderClass *klass)
-{
- CamelFolderClass *folder_class = (CamelFolderClass *) klass;
-
- camel_vee_folder_parent = CAMEL_FOLDER_CLASS(camel_type_get_global_classfuncs (camel_folder_get_type ()));
-
- folder_class->sync = vee_sync;
- folder_class->expunge = vee_expunge;
-
- folder_class->get_message = vee_get_message;
- folder_class->move_messages_to = vee_move_messages_to;
-
- folder_class->search_by_expression = vee_search_by_expression;
-
- folder_class->set_message_flags = vee_set_message_flags;
- folder_class->set_message_user_flag = vee_set_message_user_flag;
-}
-
-static void
-camel_vee_folder_init (CamelVeeFolder *obj)
-{
- struct _CamelVeeFolderPrivate *p;
- CamelFolder *folder = (CamelFolder *)obj;
-
- p = _PRIVATE(obj) = g_malloc0(sizeof(*p));
-
- folder->has_summary_capability = TRUE;
- folder->has_search_capability = TRUE;
-
- /* FIXME: what to do about user flags if the subfolder doesn't support them? */
- folder->permanent_flags = CAMEL_MESSAGE_ANSWERED |
- CAMEL_MESSAGE_DELETED |
- CAMEL_MESSAGE_DRAFT |
- CAMEL_MESSAGE_FLAGGED |
- CAMEL_MESSAGE_SEEN;
-
- obj->changes = camel_folder_change_info_new();
- obj->search = camel_folder_search_new();
-
-#ifdef ENABLE_THREADS
- p->summary_lock = g_mutex_new();
- p->subfolder_lock = g_mutex_new();
-#endif
-
-}
-
-static void
-camel_vee_folder_finalise (CamelObject *obj)
-{
- CamelVeeFolder *vf = (CamelVeeFolder *)obj;
- struct _CamelVeeFolderPrivate *p = _PRIVATE(vf);
- GList *node;
-
- /* FIXME: check leaks */
- node = p->folders;
- while (node) {
- CamelFolder *f = node->data;
- if (vf != folder_unmatched) {
- camel_object_unhook_event((CamelObject *)f, "folder_changed", (CamelObjectEventHookFunc) folder_changed, vf);
- camel_object_unhook_event((CamelObject *)f, "message_changed", (CamelObjectEventHookFunc) message_changed, vf);
- /* this updates the vfolder */
- if ((vf->flags & CAMEL_STORE_FOLDER_PRIVATE) == 0)
- camel_vee_folder_remove_folder(vf, f);
- }
- camel_object_unref((CamelObject *)f);
- node = g_list_next(node);
- }
-
- g_free(vf->expression);
- g_free(vf->vname);
-
- camel_folder_change_info_free(vf->changes);
- camel_object_unref((CamelObject *)vf->search);
- camel_object_unref((CamelObject *)((CamelFolder *)vf)->summary);
-
-#ifdef ENABLE_THREADS
- g_mutex_free(p->summary_lock);
- g_mutex_free(p->subfolder_lock);
-#endif
- g_free(p);
-}
-
-static void
-vee_folder_construct (CamelVeeFolder *vf, CamelStore *parent_store, const char *name, guint32 flags)
-{
- CamelFolder *folder = (CamelFolder *)vf;
- char *tmp;
-
- vf->flags = flags;
-
- tmp = strchr(name, '?');
- if (tmp) {
- vf->vname = g_strndup(name, tmp-name);
- vf->expression = g_strdup(tmp+1);
- } else {
- vf->vname = g_strdup(name);
- }
-
- tmp = strrchr(vf->vname, '/');
- if (tmp)
- tmp++;
- else
- tmp = vf->vname;
- camel_folder_construct(folder, parent_store, vf->vname, tmp);
-
- /* should CamelVeeMessageInfo be subclassable ..? */
- folder->summary = camel_folder_summary_new();
- folder->summary->message_info_size = sizeof(CamelVeeMessageInfo);
-}
-
-void
-camel_vee_folder_construct(CamelVeeFolder *vf, CamelStore *parent_store, const char *name, guint32 flags)
-{
- UNMATCHED_LOCK();
-
- /* setup unmatched folder if we haven't yet */
- if (folder_unmatched == NULL) {
- unmatched_uids = g_hash_table_new (g_str_hash, g_str_equal);
- folder_unmatched = (CamelVeeFolder *)camel_object_new (camel_vee_folder_get_type ());
- printf("created foldeer unmatched %p\n", folder_unmatched);
-
- vee_folder_construct (folder_unmatched, parent_store, "UNMATCHED", CAMEL_STORE_FOLDER_PRIVATE);
- }
-
- UNMATCHED_UNLOCK();
-
- vee_folder_construct (vf, parent_store, name, flags);
-}
-
-/**
- * camel_vee_folder_new:
- * @parent_store: the parent CamelVeeStore
- * @name: the vfolder name
- * @ex: a CamelException
- *
- * Create a new CamelVeeFolder object.
- *
- * Return value: A new CamelVeeFolder widget.
- **/
-CamelFolder *
-camel_vee_folder_new(CamelStore *parent_store, const char *name, guint32 flags)
-{
- CamelVeeFolder *vf;
- char *path, *query;
-
- UNMATCHED_LOCK();
-
- /* setup unmatched folder if we haven't yet */
- if (folder_unmatched == NULL) {
- unmatched_uids = g_hash_table_new(g_str_hash, g_str_equal);
- folder_unmatched = vf = (CamelVeeFolder *)camel_object_new(camel_vee_folder_get_type());
- printf("created foldeer unmatched %p\n", folder_unmatched);
- vee_folder_construct (vf, parent_store, "UNMATCHED", CAMEL_STORE_FOLDER_PRIVATE);
- }
-
- UNMATCHED_UNLOCK();
-
- path = alloca(strlen(name)+1);
- strcpy(path, name);
- query = strchr(path, '?');
- if (query)
- *query++ = 0;
-
- if (strcmp(path, "UNMATCHED") == 0) {
- camel_object_ref((CamelObject *)folder_unmatched);
- printf("returning unmatched %p, count = %d\n", folder_unmatched, camel_folder_get_message_count((CamelFolder *)folder_unmatched));
- return (CamelFolder *)folder_unmatched;
- }
-
- vf = (CamelVeeFolder *)camel_object_new(camel_vee_folder_get_type());
- vee_folder_construct(vf, parent_store, name, flags);
-
- printf("returning folder %s %p, count = %d\n", name, vf, camel_folder_get_message_count((CamelFolder *)vf));
-
- return (CamelFolder *)vf;
-}
-
-void
-camel_vee_folder_set_expression(CamelVeeFolder *vf, const char *query)
-{
- struct _CamelVeeFolderPrivate *p = _PRIVATE(vf);
- GList *node;
-
- CAMEL_VEE_FOLDER_LOCK(vf, subfolder_lock);
-
- node = p->folders;
- while (node) {
- CamelFolder *f = node->data;
-
- if (vee_folder_build_folder(vf, f, NULL) == -1)
- break;
-
- node = node->next;
- }
-
- CAMEL_VEE_FOLDER_UNLOCK(vf, subfolder_lock);
-}
-
-/**
- * camel_vee_folder_add_folder:
- * @vf: Virtual Folder object
- * @sub: source CamelFolder to add to @vf
- *
- * Adds @sub as a source folder to @vf.
- **/
-void
-camel_vee_folder_add_folder(CamelVeeFolder *vf, CamelFolder *sub)
-{
- struct _CamelVeeFolderPrivate *p = _PRIVATE(vf), *up = _PRIVATE(folder_unmatched);
-
- if (vf == (CamelVeeFolder *)sub) {
- g_warning("Adding a virtual folder to itself as source, ignored");
- return;
- }
-
- CAMEL_VEE_FOLDER_LOCK(vf, subfolder_lock);
-
- /* for normal vfolders we want only unique ones, for unmatched we want them all recorded */
- if (g_list_find(p->folders, sub) == NULL) {
- camel_object_ref((CamelObject *)sub);
- p->folders = g_list_append(p->folders, sub);
- }
- if ((vf->flags & CAMEL_STORE_FOLDER_PRIVATE) == 0) {
- camel_object_ref((CamelObject *)sub);
- up->folders = g_list_append(up->folders, sub);
- }
-
- CAMEL_VEE_FOLDER_UNLOCK(vf, subfolder_lock);
-
- d(printf("camel_vee_folder_add_folde(%p, %p)\n", vf, sub));
-
- camel_object_hook_event((CamelObject *)sub, "folder_changed", (CamelObjectEventHookFunc)folder_changed, vf);
- camel_object_hook_event((CamelObject *)sub, "message_changed", (CamelObjectEventHookFunc)message_changed, vf);
-
- vee_folder_build_folder(vf, sub, NULL);
-}
-
-/**
- * camel_vee_folder_remove_folder:
- * @vf: Virtual Folder object
- * @sub: source CamelFolder to remove from @vf
- *
- * Removed the source folder, @sub, from the virtual folder, @vf.
- **/
-void
-camel_vee_folder_remove_folder(CamelVeeFolder *vf, CamelFolder *sub)
-{
- struct _CamelVeeFolderPrivate *p = _PRIVATE(vf), *up = _PRIVATE(folder_unmatched);
-
- CAMEL_VEE_FOLDER_LOCK(vf, subfolder_lock);
- if (g_list_find(p->folders, sub) == NULL) {
- CAMEL_VEE_FOLDER_UNLOCK(vf, subfolder_lock);
- return;
- }
-
- p->folders = g_list_remove(p->folders, sub);
- if ((vf->flags & CAMEL_STORE_FOLDER_PRIVATE) == 0 && g_list_find(p->folders, sub) != NULL) {
- up->folders = g_list_remove(up->folders, sub);
- camel_object_unref((CamelObject *)sub);
- }
-
- CAMEL_VEE_FOLDER_UNLOCK(vf, subfolder_lock);
-
- vee_folder_remove_folder(vf, sub);
-
- camel_object_unref((CamelObject *)sub);
-}
-
-/**
- * camel_vee_folder_hash_folder:
- * @folder:
- * @:
- *
- * Create a hash string representing the folder name, which should be
- * unique, and remain static for a given folder.
- **/
-void
-camel_vee_folder_hash_folder(CamelFolder *folder, char buffer[8])
-{
- MD5Context ctx;
- unsigned char digest[16];
- unsigned int state = 0, save = 0;
- char *tmp;
- int i;
-
- md5_init(&ctx);
- tmp = camel_service_get_url((CamelService *)folder->parent_store);
- md5_update(&ctx, tmp, strlen(tmp));
- g_free(tmp);
- md5_update(&ctx, folder->full_name, strlen(folder->full_name));
- md5_final(&ctx, digest);
- base64_encode_close(digest, 6, FALSE, buffer, &state, &save);
-
- for (i=0;i<8;i++) {
- if (buffer[i] == '+')
- buffer[i] = '.';
- if (buffer[i] == '/')
- buffer[i] = '_';
- }
-}
-
-static void
-vee_sync(CamelFolder *folder, gboolean expunge, CamelException *ex)
-{
- CamelVeeFolder *vf = (CamelVeeFolder *)folder;
- struct _CamelVeeFolderPrivate *p = _PRIVATE(vf);
- GList *node;
-
- CAMEL_VEE_FOLDER_LOCK(vf, subfolder_lock);
-
- node = p->folders;
- while (node) {
- CamelFolder *f = node->data;
-
- camel_folder_sync(f, expunge, ex);
- if (camel_exception_is_set(ex))
- break;
-
- if (vee_folder_build_folder(vf, f, ex) == -1)
- break;
-
- node = node->next;
- }
-
- CAMEL_VEE_FOLDER_UNLOCK(vf, subfolder_lock);
-}
-
-static void
-vee_expunge (CamelFolder *folder, CamelException *ex)
-{
- ((CamelFolderClass *)((CamelObject *)folder)->classfuncs)->sync(folder, TRUE, ex);
-}
-
-static CamelMimeMessage *
-vee_get_message(CamelFolder *folder, const char *uid, CamelException *ex)
-{
- CamelVeeMessageInfo *mi;
- CamelMimeMessage *msg = NULL;
-
- mi = (CamelVeeMessageInfo *)camel_folder_summary_uid(folder->summary, uid);
- if (mi) {
- msg = camel_folder_get_message(mi->folder, camel_message_info_uid(mi)+8, ex);
- camel_folder_summary_info_free(folder->summary, (CamelMessageInfo *)mi);
- } else {
- camel_exception_setv(ex, CAMEL_EXCEPTION_FOLDER_INVALID_UID,
- _("No such message %s in %s"), uid,
- folder->name);
- }
-
- return msg;
-}
-
-static GPtrArray *
-vee_search_by_expression(CamelFolder *folder, const char *expression, CamelException *ex)
-{
- GList *node;
- GPtrArray *matches, *result = g_ptr_array_new ();
- char *expr;
- CamelVeeFolder *vf = (CamelVeeFolder *)folder;
- struct _CamelVeeFolderPrivate *p = _PRIVATE(vf);
- GHashTable *searched = g_hash_table_new(NULL, NULL);
-
- CAMEL_VEE_FOLDER_LOCK(vf, subfolder_lock);
-
- expr = g_strdup_printf("(and %s %s)", vf->expression, expression);
- node = p->folders;
- while (node) {
- CamelFolder *f = node->data;
- int i;
- char hash[8];
-
- /* make sure we only search each folder once - for unmatched folder to work right */
- if (g_hash_table_lookup(searched, f) == NULL) {
- camel_vee_folder_hash_folder(f, hash);
- matches = camel_folder_search_by_expression(f, expression, ex);
- for (i = 0; i < matches->len; i++) {
- char *uid = matches->pdata[i];
- g_ptr_array_add(result, g_strdup_printf("%.8s%s", hash, uid));
- }
- camel_folder_search_free(f, matches);
- g_hash_table_insert(searched, f, f);
- }
- node = g_list_next(node);
- }
-
- g_free(expr);
- CAMEL_VEE_FOLDER_UNLOCK(vf, subfolder_lock);
-
- g_hash_table_destroy(searched);
-
- return result;
-}
-
-static void
-vee_set_message_flags(CamelFolder *folder, const char *uid, guint32 flags, guint32 set)
-{
- CamelVeeMessageInfo *mi;
-
- mi = (CamelVeeMessageInfo *)camel_folder_summary_uid(folder->summary, uid);
- if (mi) {
- ((CamelFolderClass *)camel_vee_folder_parent)->set_message_flags(folder, uid, flags, set);
- camel_folder_set_message_flags(mi->folder, camel_message_info_uid(mi) + 8, flags, set);
- camel_folder_summary_info_free(folder->summary, (CamelMessageInfo *)mi);
- }
-}
-
-static void
-vee_set_message_user_flag(CamelFolder *folder, const char *uid, const char *name, gboolean value)
-{
- CamelVeeMessageInfo *mi;
-
- mi = (CamelVeeMessageInfo *)camel_folder_summary_uid(folder->summary, uid);
- if (mi) {
- ((CamelFolderClass *)camel_vee_folder_parent)->set_message_user_flag(folder, uid, name, value);
- camel_folder_set_message_user_flag(mi->folder, camel_message_info_uid(mi) + 8, name, value);
- camel_folder_summary_info_free(folder->summary, (CamelMessageInfo *)mi);
- }
-}
-
-static void
-vee_move_messages_to (CamelFolder *folder, GPtrArray *uids, CamelFolder *dest, CamelException *ex)
-{
- CamelVeeMessageInfo *mi;
- int i;
-
- for (i = 0; i < uids->len && !camel_exception_is_set (ex); i++) {
- mi = (CamelVeeMessageInfo *) camel_folder_summary_uid (folder->summary, uids->pdata[i]);
- if (mi) {
- /* noop if it we're moving from the same vfolder (uh, which should't happen but who knows) */
- if (folder != mi->folder) {
- GPtrArray *uids;
-
- uids = g_ptr_array_new ();
- g_ptr_array_add (uids, (char *) (camel_message_info_uid (mi) + 8));
- camel_folder_move_messages_to (mi->folder, uids, dest, ex);
- g_ptr_array_free (uids, TRUE);
- }
- camel_folder_summary_info_free (folder->summary, (CamelMessageInfo *)mi);
- } else {
- camel_exception_setv (ex, CAMEL_EXCEPTION_FOLDER_INVALID_UID,
- _("No such message: %s"), uids->pdata[i]);
- }
- }
-}
-
-/* ********************************************************************** *
- utility functions */
-
-/* must be called with summary_lock held */
-static CamelVeeMessageInfo *
-vee_folder_add_info(CamelVeeFolder *vf, CamelFolder *f, CamelMessageInfo *info, const char hash[8])
-{
- CamelVeeMessageInfo *mi;
- char *uid;
- CamelFolder *folder = (CamelFolder *)vf;
- CamelMessageInfo *dinfo;
-
- uid = g_strdup_printf("%.8s%s", hash, camel_message_info_uid(info));
- dinfo = camel_folder_summary_uid(folder->summary, uid);
- if (dinfo) {
- (printf("w:clash, we already have '%s' in summary\n", uid));
- g_free(uid);
- camel_folder_summary_info_free(folder->summary, dinfo);
- return NULL;
- }
-
- d(printf("adding uid %s to %s\n", uid, vf->vname));
-
- mi = (CamelVeeMessageInfo *)camel_folder_summary_info_new(folder->summary);
- camel_message_info_dup_to(info, (CamelMessageInfo *)mi);
-#ifdef DOEPOOLV
- mi->info.strings = e_poolv_set(mi->info.strings, CAMEL_MESSAGE_INFO_UID, uid, TRUE);
-#elif defined (DOESTRV)
- mi->info.strings = e_strv_set_ref_free(mi->info.strings, CAMEL_MESSAGE_INFO_UID, uid);
- mi->info.strings = e_strv_pack(mi->info.strings);
-#else
- g_free(mi->info.uid);
- mi->info.uid = uid;
-#endif
- mi->folder = f;
- camel_folder_summary_add(folder->summary, (CamelMessageInfo *)mi);
-
- return mi;
-}
-
-/* must be called with summary_lock held */
-static CamelVeeMessageInfo *
-vee_folder_add_uid(CamelVeeFolder *vf, CamelFolder *f, const char *inuid, const char hash[8])
-{
- CamelMessageInfo *info;
- CamelVeeMessageInfo *mi = NULL;
-
- info = camel_folder_get_message_info(f, inuid);
- if (info) {
- mi = vee_folder_add_info(vf, f, info, hash);
- camel_folder_free_message_info(f, info);
- }
- return mi;
-}
-
-static void
-vee_folder_remove_folder(CamelVeeFolder *vf, CamelFolder *source)
-{
- int i, count, n, still;
- char *oldkey;
- CamelFolder *folder = (CamelFolder *)vf;
- char hash[8];
- struct _CamelVeeFolderPrivate *p = _PRIVATE(vf);
- CamelFolderChangeInfo *vf_changes = NULL, *unmatched_changes = NULL;
-
- if (vf == folder_unmatched)
- return;
-
- /* check if this folder is still to be part of unmatched */
- if ((vf->flags & CAMEL_STORE_FOLDER_PRIVATE) == 0) {
- CAMEL_VEE_FOLDER_LOCK(folder_unmatched, subfolder_lock);
- still = g_list_find(p->folders, source) != NULL;
- CAMEL_VEE_FOLDER_UNLOCK(folder_unmatched, subfolder_lock);
- camel_vee_folder_hash_folder(source, hash);
- } else {
- still = FALSE;
- }
-
- CAMEL_VEE_FOLDER_LOCK(vf, summary_lock);
- CAMEL_VEE_FOLDER_LOCK(folder_unmatched, summary_lock);
-
- count = camel_folder_summary_count(folder->summary);
- for (i=0;i<count;i++) {
- CamelVeeMessageInfo *mi = (CamelVeeMessageInfo *)camel_folder_summary_index(folder->summary, i);
- if (mi) {
- if (mi->folder == source) {
- const char *uid = camel_message_info_uid(mi);
-
- camel_folder_change_info_remove_uid(vf->changes, uid);
- camel_folder_summary_remove_index(folder->summary, i);
- i--;
- if ((vf->flags & CAMEL_STORE_FOLDER_PRIVATE) == 0) {
- if (still) {
- if (g_hash_table_lookup_extended(unmatched_uids, uid, (void **)&oldkey, (void **)&n)) {
- if (n == 1) {
- g_hash_table_remove(unmatched_uids, oldkey);
- if (vee_folder_add_uid(folder_unmatched, source, oldkey+8, hash))
- camel_folder_change_info_add_uid(folder_unmatched->changes, oldkey);
- g_free(oldkey);
- } else {
- g_hash_table_insert(unmatched_uids, oldkey, (void *)(n-1));
- }
- }
- } else {
- if (g_hash_table_lookup_extended(unmatched_uids, camel_message_info_uid(mi), (void **)&oldkey, (void **)&n)) {
- g_hash_table_remove(unmatched_uids, oldkey);
- g_free(oldkey);
- }
- camel_folder_summary_remove_uid(((CamelFolder *)folder_unmatched)->summary, uid);
- }
- }
- }
- camel_folder_summary_info_free(folder->summary, (CamelMessageInfo *)mi);
- }
- }
-
- if (camel_folder_change_info_changed(folder_unmatched->changes)) {
- unmatched_changes = folder_unmatched->changes;
- folder_unmatched->changes = camel_folder_change_info_new();
- }
-
- if (camel_folder_change_info_changed(vf->changes)) {
- vf_changes = vf->changes;
- vf->changes = camel_folder_change_info_new();
- }
-
- CAMEL_VEE_FOLDER_UNLOCK(folder_unmatched, summary_lock);
- CAMEL_VEE_FOLDER_UNLOCK(vf, summary_lock);
-
- if (unmatched_changes) {
- camel_object_trigger_event((CamelObject *)folder_unmatched, "folder_changed", unmatched_changes);
- camel_folder_change_info_free(unmatched_changes);
- }
-
- if (vf_changes) {
- camel_object_trigger_event((CamelObject *)vf, "folder_changed", vf_changes);
- camel_folder_change_info_free(vf_changes);
- }
-}
-
-struct _update_data {
- CamelFolder *source;
- CamelVeeFolder *vf;
- char hash[8];
-};
-
-static void
-unmatched_check_uid(char *uidin, void *value, struct _update_data *u)
-{
- char *uid;
- int n;
-
- uid = alloca(strlen(uidin)+9);
- sprintf(uid, "%.8s%s", u->hash, uidin);
- n = (int)g_hash_table_lookup(unmatched_uids, uid);
- if (n == 0) {
- if (vee_folder_add_uid(folder_unmatched, u->source, uidin, u->hash))
- camel_folder_change_info_add_uid(folder_unmatched->changes, uid);
- } else {
- CamelVeeMessageInfo *mi = (CamelVeeMessageInfo *)camel_folder_summary_uid(((CamelFolder *)folder_unmatched)->summary, uid);
- if (mi) {
- camel_folder_summary_remove(((CamelFolder *)folder_unmatched)->summary, (CamelMessageInfo *)mi);
- camel_folder_change_info_remove_uid(folder_unmatched->changes, uid);
- camel_folder_summary_info_free(((CamelFolder *)folder_unmatched)->summary, (CamelMessageInfo *)mi);
- }
- }
-}
-
-static void
-folder_added_uid(char *uidin, void *value, struct _update_data *u)
-{
- CamelVeeMessageInfo *mi;
- char *oldkey;
- int n;
-
- if ( (mi = vee_folder_add_uid(u->vf, u->source, uidin, u->hash)) ) {
- camel_folder_change_info_add_uid(u->vf->changes, camel_message_info_uid(mi));
-
- if (g_hash_table_lookup_extended(unmatched_uids, camel_message_info_uid(mi), (void **)&oldkey, (void **)&n)) {
- g_hash_table_insert(unmatched_uids, oldkey, (void *)(n+1));
- } else {
- g_hash_table_insert(unmatched_uids, g_strdup(camel_message_info_uid(mi)), (void *)1);
- }
- }
-}
-
-/* build query contents for a single folder */
-static int
-vee_folder_build_folder(CamelVeeFolder *vf, CamelFolder *source, CamelException *ex)
-{
- GPtrArray *match, *all;
- GHashTable *allhash, *matchhash;
- CamelFolder *f = source;
- CamelFolder *folder = (CamelFolder *)vf;
- int i, n, count;
- struct _update_data u;
- CamelFolderChangeInfo *vf_changes = NULL, *unmatched_changes = NULL;
-
- if (vf == folder_unmatched)
- return 0;
-
- match = camel_folder_search_by_expression(f, vf->expression, ex);
- if (match == NULL)
- return -1;
-
- u.source = source;
- u.vf = vf;
- camel_vee_folder_hash_folder(source, u.hash);
-
- CAMEL_VEE_FOLDER_LOCK(vf, summary_lock);
-
- /* we build 2 hash tables, one for all uid's not matched, the other for all matched uid's,
- we just ref the real memory */
- matchhash = g_hash_table_new(g_str_hash, g_str_equal);
- for (i=0;i<match->len;i++)
- g_hash_table_insert(matchhash, match->pdata[i], (void *)1);
-
- allhash = g_hash_table_new(g_str_hash, g_str_equal);
- all = camel_folder_get_uids(f);
- for (i=0;i<all->len;i++)
- if (g_hash_table_lookup(matchhash, all->pdata[i]) == NULL)
- g_hash_table_insert(allhash, all->pdata[i], (void *)1);
-
- CAMEL_VEE_FOLDER_LOCK(folder_unmatched, summary_lock);
-
- /* scan, looking for "old" uid's to be removed */
- count = camel_folder_summary_count(folder->summary);
- for (i=0;i<count;i++) {
- CamelVeeMessageInfo *mi = (CamelVeeMessageInfo *)camel_folder_summary_index(folder->summary, i);
-
- if (mi) {
- if (mi->folder == source) {
- char *uid = (char *)camel_message_info_uid(mi), *oldkey;
-
- if (g_hash_table_lookup(matchhash, uid+8) == NULL) {
- camel_folder_summary_remove_index(folder->summary, i);
- camel_folder_change_info_remove_uid(vf->changes, camel_message_info_uid(mi));
- i--;
- if (g_hash_table_lookup_extended(unmatched_uids, uid, (void **)&oldkey, (void **)&n)) {
- if (n == 1) {
- g_hash_table_remove(unmatched_uids, oldkey);
- g_free(oldkey);
- } else {
- g_hash_table_insert(unmatched_uids, oldkey, (void *)(n-1));
- }
- }
- } else {
- g_hash_table_remove(matchhash, uid+8);
- }
- }
- camel_folder_summary_info_free(folder->summary, (CamelMessageInfo *)mi);
- }
- }
-
- /* now matchhash contains any new uid's, add them, etc */
- g_hash_table_foreach(matchhash, (GHFunc)folder_added_uid, &u);
-
- /* scan unmatched, remove any that have vanished, etc */
- count = camel_folder_summary_count(((CamelFolder *)folder_unmatched)->summary);
- for (i=0;i<count;i++) {
- CamelVeeMessageInfo *mi = (CamelVeeMessageInfo *)camel_folder_summary_index(((CamelFolder *)folder_unmatched)->summary, i);
-
- if (mi) {
- if (mi->folder == source) {
- char *uid = (char *)camel_message_info_uid(mi);
-
- if (g_hash_table_lookup(allhash, uid+8) == NULL) {
- /* no longer exists at all, just remove it entirely */
- camel_folder_summary_remove_index(((CamelFolder *)folder_unmatched)->summary, i);
- camel_folder_change_info_remove_uid(folder_unmatched->changes, camel_message_info_uid(mi));
- i--;
- } else {
- g_hash_table_remove(allhash, uid+8);
- }
- }
- camel_folder_summary_info_free(((CamelFolder *)folder_unmatched)->summary, (CamelMessageInfo *)mi);
- }
- }
-
- /* now allhash contains all potentially new uid's for the unmatched folder, process */
- g_hash_table_foreach(allhash, (GHFunc)unmatched_check_uid, &u);
-
- /* copy any changes so we can raise them outside the lock */
- if (camel_folder_change_info_changed(folder_unmatched->changes)) {
- unmatched_changes = folder_unmatched->changes;
- folder_unmatched->changes = camel_folder_change_info_new();
- }
-
- if (camel_folder_change_info_changed(vf->changes)) {
- vf_changes = vf->changes;
- vf->changes = camel_folder_change_info_new();
- }
-
- CAMEL_VEE_FOLDER_UNLOCK(folder_unmatched, summary_lock);
- CAMEL_VEE_FOLDER_UNLOCK(vf, summary_lock);
-
- g_hash_table_destroy(matchhash);
- g_hash_table_destroy(allhash);
- camel_folder_search_free(f, match);
- camel_folder_free_uids(f, all);
-
- if (unmatched_changes) {
- camel_object_trigger_event((CamelObject *)folder_unmatched, "folder_changed", unmatched_changes);
- camel_folder_change_info_free(unmatched_changes);
- }
-
- if (vf_changes) {
- camel_object_trigger_event((CamelObject *)vf, "folder_changed", vf_changes);
- camel_folder_change_info_free(vf_changes);
- }
-
- return 0;
-}
-
-/*
-
- (match-folder "folder1" "folder2")
-
- */
-
-
-/* must be called with summary_lock held */
-static void
-vee_folder_change_match(CamelVeeFolder *vf, CamelVeeMessageInfo *vinfo, const CamelMessageInfo *info)
-{
- CamelFlag *flag;
- CamelTag *tag;
-
- d(printf("changing match %s\n", camel_message_info_uid(vinfo)));
-
- vinfo->info.flags = info->flags;
- camel_flag_list_free(&vinfo->info.user_flags);
- flag = info->user_flags;
- while (flag) {
- camel_flag_set(&vinfo->info.user_flags, flag->name, TRUE);
- flag = flag->next;
- }
- camel_tag_list_free(&vinfo->info.user_tags);
- tag = info->user_tags;
- while (tag) {
- camel_tag_set(&vinfo->info.user_tags, tag->name, tag->value);
- tag = tag->next;
- }
- camel_folder_change_info_change_uid(vf->changes, camel_message_info_uid(vinfo));
-}
-
-static void
-folder_changed(CamelFolder *sub, CamelFolderChangeInfo *changes, CamelVeeFolder *vf)
-{
- CamelFolder *folder = (CamelFolder *)vf;
- char *vuid, hash[8];
- CamelVeeMessageInfo *vinfo;
- int i;
- CamelMessageInfo *info;
- char *oldkey;
- int n;
- CamelFolderChangeInfo *vf_changes = NULL, *unmatched_changes = NULL;
-
- camel_vee_folder_hash_folder(sub, hash);
-
- /* if not auto-updating, only propagate changed/removed events, not added items */
- if ((vf->flags & CAMEL_STORE_VEE_FOLDER_AUTO) == 0) {
- CAMEL_VEE_FOLDER_LOCK(vf, summary_lock);
- CAMEL_VEE_FOLDER_LOCK(folder_unmatched, summary_lock);
-
- for (i=0;i<changes->uid_changed->len;i++) {
- info = camel_folder_get_message_info(sub, changes->uid_changed->pdata[i]);
- vuid = g_strdup_printf("%.8s%s", hash, (char *)changes->uid_changed->pdata[i]);
- vinfo = (CamelVeeMessageInfo *)camel_folder_summary_uid(folder->summary, vuid);
- if (vinfo && info)
- vee_folder_change_match(vf, vinfo, info);
- g_free(vuid);
- if (info)
- camel_folder_free_message_info(sub, info);
- if (vinfo)
- camel_folder_summary_info_free(folder->summary, (CamelMessageInfo *)vinfo);
- }
-
- for (i=0;i<changes->uid_removed->len;i++) {
- vuid = g_strdup_printf("%.8s%s", hash, (char *)changes->uid_removed->pdata[i]);
- vinfo = (CamelVeeMessageInfo *)camel_folder_summary_uid(folder->summary, vuid);
- if (vinfo) {
- camel_folder_change_info_remove_uid(vf->changes, vuid);
- camel_folder_summary_remove(folder->summary, (CamelMessageInfo *)vinfo);
- camel_folder_summary_info_free(folder->summary, (CamelMessageInfo *)vinfo);
-
- if ((vf->flags & CAMEL_STORE_FOLDER_PRIVATE) == 0) {
- if (g_hash_table_lookup_extended(unmatched_uids, vuid, (void **)&oldkey, (void **)&n)) {
- g_hash_table_remove(unmatched_uids, oldkey);
- g_free(oldkey);
- }
- camel_folder_summary_remove_uid(((CamelFolder *)folder_unmatched)->summary, vuid);
- }
-
- }
- g_free(vuid);
- }
-
- if (camel_folder_change_info_changed(folder_unmatched->changes)) {
- unmatched_changes = folder_unmatched->changes;
- folder_unmatched->changes = camel_folder_change_info_new();
- }
-
- if (camel_folder_change_info_changed(vf->changes)) {
- vf_changes = vf->changes;
- vf->changes = camel_folder_change_info_new();
- }
-
- CAMEL_VEE_FOLDER_UNLOCK(folder_unmatched, summary_lock);
- CAMEL_VEE_FOLDER_UNLOCK(vf, summary_lock);
-
- if (unmatched_changes) {
- camel_object_trigger_event((CamelObject *)folder_unmatched, "folder_changed", unmatched_changes);
- camel_folder_change_info_free(unmatched_changes);
- }
-
- if (vf_changes) {
- camel_object_trigger_event((CamelObject *)vf, "folder_changed", vf_changes);
- camel_folder_change_info_free(vf_changes);
- }
-
- return;
- }
-
- /* if we are autoupdating, then do the magic */
- /* FIXME: This should be optimised to be incremental, but its just too much work right now to validate it */
- vee_folder_build_folder(vf, sub, NULL);
-
-#if 0
- /* assume its faster to search a long list in whole, than by part */
- if (changes && (changes->uid_added->len + changes->uid_changed->len) < 500) {
- gboolean match;
-
- /* FIXME: We dont search body contents with this search, so, it isn't as
- useful as it might be.
- We shold probably just perform a whole search if we need to, i.e. there
- are added items. Changed items we are unlikely to want to remove immediately
- anyway, although I guess it might be useful.
- Removed items can always just be removed.
- */
-
- /* see if added ones now match us */
- for (i=0;i<changes->uid_added->len;i++) {
- info = camel_folder_get_message_info(sub, changes->uid_added->pdata[i]);
- if (info) {
- camel_folder_search_set_folder(vf->search, sub);
- match = camel_folder_search_match_expression(vf->search, vf->expression, info, NULL);
- if (match)
- vinfo = vee_folder_add_change(vf, sub, info);
- camel_folder_free_message_info(sub, info);
- }
- }
-
- /* check if changed ones still match */
- for (i=0;i<changes->uid_changed->len;i++) {
- info = camel_folder_get_message_info(sub, changes->uid_changed->pdata[i]);
- vuid = g_strdup_printf("%p:%s", sub, (char *)changes->uid_changed->pdata[i]);
- vinfo = (CamelVeeMessageInfo *)camel_folder_summary_uid(folder->summary, vuid);
- if (info) {
- camel_folder_search_set_folder(vf->search, sub);
- match = camel_folder_search_match_expression(vf->search, vf->expression, info, NULL);
- if (vinfo) {
- if (!match)
- vfolder_remove_match(vf, vinfo);
- else
- vfolder_change_match(vf, vinfo, info);
- } else if (match)
- vee_folder_add_change(vf, sub, info);
- camel_folder_free_message_info(sub, info);
- } else if (vinfo)
- vfolder_remove_match(vf, vinfo);
-
- if (vinfo)
- camel_folder_summary_info_free(folder->summary, (CamelMessageInfo *)vinfo);
-
- g_free(vuid);
- }
-
- /* mirror removes directly, if they used to match */
- for (i=0;i<changes->uid_removed->len;i++) {
- vuid = g_strdup_printf("%p:%s", sub, (char *)changes->uid_removed->pdata[i]);
- vinfo = (CamelVeeMessageInfo *)camel_folder_summary_uid(folder->summary, vuid);
- if (vinfo) {
- vfolder_remove_match(vf, vinfo);
- camel_folder_summary_info_free(folder->summary, (CamelMessageInfo *)vinfo);
- }
- g_free(vuid);
- }
- } else {
- vee_folder_build_folder(vf, sub, NULL);
- }
-#endif
-}
-
-/* track flag changes in the summary, we just promote it to a folder_changed event */
-static void
-message_changed(CamelFolder *f, const char *uid, CamelVeeFolder *vf)
-{
- CamelFolderChangeInfo *changes;
-
- changes = camel_folder_change_info_new();
- camel_folder_change_info_change_uid(changes, uid);
- folder_changed(f, changes, vf);
- camel_folder_change_info_free(changes);
-}
diff --git a/camel/camel-vee-folder.h b/camel/camel-vee-folder.h
deleted file mode 100644
index 650a53ec14..0000000000
--- a/camel/camel-vee-folder.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef _CAMEL_VEE_FOLDER_H
-#define _CAMEL_VEE_FOLDER_H
-
-#include <glib.h>
-#include <camel/camel-folder.h>
-
-#define CAMEL_VEE_FOLDER(obj) CAMEL_CHECK_CAST (obj, camel_vee_folder_get_type (), CamelVeeFolder)
-#define CAMEL_VEE_FOLDER_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_vee_folder_get_type (), CamelVeeFolderClass)
-#define CAMEL_IS_VEE_FOLDER(obj) CAMEL_CHECK_TYPE (obj, camel_vee_folder_get_type ())
-
-typedef struct _CamelVeeFolder CamelVeeFolder;
-typedef struct _CamelVeeFolderClass CamelVeeFolderClass;
-
-/* our message info includes the parent folder */
-typedef struct _CamelVeeMessageInfo {
- CamelMessageInfo info;
- CamelFolder *folder;
-} CamelVeeMessageInfo;
-
-struct _CamelVeeFolder {
- CamelFolder parent;
-
- struct _CamelVeeFolderPrivate *priv;
-
- char *expression; /* query expression */
- char *vname; /* local name */
-
- guint32 flags; /* folder open flags */
-
- CamelFolderChangeInfo *changes;
- CamelFolderSearch *search;
-};
-
-struct _CamelVeeFolderClass {
- CamelFolderClass parent_class;
-};
-
-guint camel_vee_folder_get_type (void);
-CamelFolder *camel_vee_folder_new (CamelStore *parent_store, const char *name, guint32 flags);
-void camel_vee_folder_construct (CamelVeeFolder *vf, CamelStore *parent_store, const char *name, guint32 flags);
-
-void camel_vee_folder_add_folder (CamelVeeFolder *vf, CamelFolder *sub);
-void camel_vee_folder_remove_folder (CamelVeeFolder *vf, CamelFolder *sub);
-void camel_vee_folder_set_expression (CamelVeeFolder *vf, const char *expr);
-
-void camel_vee_folder_hash_folder (CamelFolder *folder, char buffer[8]);
-
-#endif /* ! _CAMEL_VEE_FOLDER_H */
diff --git a/camel/camel-vee-store.c b/camel/camel-vee-store.c
deleted file mode 100644
index 5a9d79d8b2..0000000000
--- a/camel/camel-vee-store.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#include "camel-vee-store.h"
-#include "camel-vee-folder.h"
-
-#include <string.h>
-
-static CamelFolder *vee_get_folder (CamelStore *store, const char *folder_name, guint32 flags, CamelException *ex);
-static void vee_init_trash (CamelStore *store);
-static CamelFolder *vee_get_trash (CamelStore *store, CamelException *ex);
-
-struct _CamelVeeStorePrivate {
- CamelFolderInfo *folder_info;
-};
-
-#define _PRIVATE(o) (((CamelVeeStore *)(o))->priv)
-
-static void camel_vee_store_class_init (CamelVeeStoreClass *klass);
-static void camel_vee_store_init (CamelVeeStore *obj);
-static void camel_vee_store_finalise (CamelObject *obj);
-
-static CamelStoreClass *camel_vee_store_parent;
-
-CamelType
-camel_vee_store_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_store_get_type (), "CamelVeeStore",
- sizeof (CamelVeeStore),
- sizeof (CamelVeeStoreClass),
- (CamelObjectClassInitFunc) camel_vee_store_class_init,
- NULL,
- (CamelObjectInitFunc) camel_vee_store_init,
- (CamelObjectFinalizeFunc) camel_vee_store_finalise);
- }
-
- return type;
-}
-
-static void
-camel_vee_store_class_init (CamelVeeStoreClass *klass)
-{
- CamelStoreClass *store_class = (CamelStoreClass *) klass;
-
- camel_vee_store_parent = CAMEL_STORE_CLASS(camel_type_get_global_classfuncs (camel_store_get_type ()));
-
- /* virtual method overload */
- store_class->get_folder = vee_get_folder;
- store_class->init_trash = vee_init_trash;
- store_class->get_trash = vee_get_trash;
-}
-
-static void
-camel_vee_store_init (CamelVeeStore *obj)
-{
- struct _CamelVeeStorePrivate *p;
-
- p = _PRIVATE(obj) = g_malloc0(sizeof(*p));
-}
-
-static void
-camel_vee_store_finalise (CamelObject *obj)
-{
- CamelVeeStore *vs = (CamelVeeStore *)obj;
-
- g_free(vs->priv);
-}
-
-/**
- * camel_vee_store_new:
- *
- * Create a new CamelVeeStore object.
- *
- * Return value: A new CamelVeeStore widget.
- **/
-CamelVeeStore *
-camel_vee_store_new (void)
-{
- CamelVeeStore *new = CAMEL_VEE_STORE(camel_object_new(camel_vee_store_get_type ()));
- return new;
-}
-
-static CamelFolder *
-vee_get_folder (CamelStore *store, const char *folder_name, guint32 flags, CamelException *ex)
-{
- CamelFolderInfo *fi;
- CamelVeeFolder *vf;
- char *name;
-
- vf = (CamelVeeFolder *)camel_vee_folder_new(store, folder_name, flags);
- if ((vf->flags & CAMEL_STORE_FOLDER_PRIVATE) == 0) {
- fi = g_malloc0(sizeof(*fi));
- fi->full_name = g_strdup(vf->vname);
- name = strrchr(vf->vname, '/');
- if (name == NULL)
- name = vf->vname;
- fi->name = g_strdup(name);
- fi->url = g_strdup_printf("vfolder:%s", vf->vname);
- fi->unread_message_count = -1;
-
- camel_object_trigger_event(CAMEL_OBJECT(store), "folder_created", fi);
- camel_folder_info_free(fi);
- }
-
- return (CamelFolder *)vf;
-}
-
-static void
-vee_init_trash (CamelStore *store)
-{
- /* no-op */
- ;
-}
-
-static CamelFolder *
-vee_get_trash (CamelStore *store, CamelException *ex)
-{
- return NULL;
-}
diff --git a/camel/camel-vee-store.h b/camel/camel-vee-store.h
deleted file mode 100644
index c6249a05dc..0000000000
--- a/camel/camel-vee-store.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef _CAMEL_VEE_STORE_H
-#define _CAMEL_VEE_STORE_H
-
-#include <glib.h>
-#include <camel/camel-store.h>
-
-#define CAMEL_VEE_STORE(obj) CAMEL_CHECK_CAST (obj, camel_vee_store_get_type (), CamelVeeStore)
-#define CAMEL_VEE_STORE_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_vee_store_get_type (), CamelVeeStoreClass)
-#define CAMEL_IS_VEE_STORE(obj) CAMEL_CHECK_TYPE (obj, camel_vee_store_get_type ())
-
-typedef struct _CamelVeeStore CamelVeeStore;
-typedef struct _CamelVeeStoreClass CamelVeeStoreClass;
-
-/* open mode for folder, vee folder auto-update */
-#define CAMEL_STORE_VEE_FOLDER_AUTO (1<<16)
-
-struct _CamelVeeStore {
- CamelStore parent;
-
- struct _CamelVeeStorePrivate *priv;
-};
-
-struct _CamelVeeStoreClass {
- CamelStoreClass parent_class;
-};
-
-guint camel_vee_store_get_type (void);
-CamelVeeStore *camel_vee_store_new (void);
-
-#endif /* ! _CAMEL_VEE_STORE_H */
diff --git a/camel/camel-vtrash-folder.c b/camel/camel-vtrash-folder.c
deleted file mode 100644
index ed8e9f0765..0000000000
--- a/camel/camel-vtrash-folder.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#include <config.h>
-
-#include "camel-exception.h"
-#include "camel-vtrash-folder.h"
-#include "camel-store.h"
-#include "camel-vee-store.h"
-#include "camel-mime-message.h"
-
-#include <string.h>
-
-static CamelVeeFolderClass *camel_vtrash_folder_parent;
-
-static void vtrash_append_message (CamelFolder *folder, CamelMimeMessage *message,
- const CamelMessageInfo *info, CamelException *ex);
-static void vtrash_copy_messages_to (CamelFolder *folder, GPtrArray *uids, CamelFolder *dest, CamelException *ex);
-static void vtrash_move_messages_to (CamelFolder *folder, GPtrArray *uids, CamelFolder *dest, CamelException *ex);
-
-static void
-camel_vtrash_folder_class_init (CamelVTrashFolderClass *klass)
-{
- CamelFolderClass *folder_class = (CamelFolderClass *) klass;
-
- camel_vtrash_folder_parent =
- CAMEL_VEE_FOLDER_CLASS (camel_type_get_global_classfuncs (camel_folder_get_type ()));
-
- folder_class->append_message = vtrash_append_message;
- folder_class->copy_messages_to = vtrash_copy_messages_to;
- folder_class->move_messages_to = vtrash_move_messages_to;
-}
-
-CamelType
-camel_vtrash_folder_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (camel_vee_folder_get_type (),
- "CamelVTrashFolder",
- sizeof (CamelVTrashFolder),
- sizeof (CamelVTrashFolderClass),
- (CamelObjectClassInitFunc) camel_vtrash_folder_class_init,
- NULL,
- NULL,
- NULL);
- }
-
- return type;
-}
-
-/**
- * camel_vee_folder_new:
- * @parent_store: the parent CamelVeeStore
- * @name: the vfolder name
- * @ex: a CamelException
- *
- * Create a new CamelVeeFolder object.
- *
- * Return value: A new CamelVeeFolder widget.
- **/
-CamelFolder *
-camel_vtrash_folder_new (CamelStore *parent_store, const char *name)
-{
- CamelFolder *vtrash;
- char *vtrash_name;
- guint32 flags;
-
- vtrash = (CamelFolder *)camel_object_new (camel_vtrash_folder_get_type ());
- vtrash_name = g_strdup_printf ("%s?(match-all (system-flag \"Deleted\"))", name);
- flags = CAMEL_STORE_FOLDER_PRIVATE | CAMEL_STORE_FOLDER_CREATE | CAMEL_STORE_VEE_FOLDER_AUTO;
-
- camel_vee_folder_construct (CAMEL_VEE_FOLDER (vtrash), parent_store, vtrash_name, flags);
-
- return vtrash;
-}
-
-static void
-vtrash_append_message (CamelFolder *folder, CamelMimeMessage *message, const CamelMessageInfo *info, CamelException *ex)
-{
- /* no-op */
-}
-
-static void
-vtrash_copy_messages_to (CamelFolder *source, GPtrArray *uids, CamelFolder *dest, CamelException *ex)
-{
- /* don't allow the user to copy to or from the vtrash folder */
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("You cannot copy messages from this trash folder."));
-}
-
-static void
-vtrash_move_messages_to (CamelFolder *source, GPtrArray *uids, CamelFolder *dest, CamelException *ex)
-{
- CamelVeeMessageInfo *mi;
- int i;
-
- for (i = 0; i < uids->len; i++) {
- mi = (CamelVeeMessageInfo *)camel_folder_get_message_info(source, uids->pdata[i]);
- if (mi == NULL) {
- g_warning("Cannot find uid %s in source folder during move_to", (char *)uids->pdata[i]);
- continue;
- }
-
- if (dest == mi->folder) {
- /* Just undelete the original message */
- CAMEL_FOLDER_CLASS (dest)->set_message_flags (dest, uids->pdata[i], CAMEL_MESSAGE_DELETED, 0);
- } else {
- /* This means that the user is trying to move the message
- from the vTrash to a folder other than the original. */
- GPtrArray *tuids;
-
- tuids = g_ptr_array_new ();
- g_ptr_array_add (tuids, uids->pdata[i]);
- /*CAMEL_FOLDER_CLASS (mi->folder)->move_messages_to (mi->folder, tuids, dest, ex);*/
- camel_folder_move_messages_to(mi->folder, tuids, dest, ex);
- g_ptr_array_free (tuids, TRUE);
- }
-
- camel_folder_free_message_info(source, (CamelMessageInfo *)mi);
- }
-}
diff --git a/camel/camel-vtrash-folder.h b/camel/camel-vtrash-folder.h
deleted file mode 100644
index 7f5dd1b79e..0000000000
--- a/camel/camel-vtrash-folder.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-
-#ifndef _CAMEL_VTRASH_FOLDER_H
-#define _CAMEL_VTRASH_FOLDER_H
-
-#include <camel/camel-folder.h>
-#include <camel/camel-vee-folder.h>
-
-#define CAMEL_VTRASH_FOLDER(obj) CAMEL_CHECK_CAST (obj, camel_vtrash_folder_get_type (), CamelVTrashFolder)
-#define CAMEL_VTRASH_FOLDER_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_vtrash_folder_get_type (), CamelVTrashFolderClass)
-#define CAMEL_IS_VTRASH_FOLDER(obj) CAMEL_CHECK_TYPE (obj, camel_vtrash_folder_get_type ())
-
-typedef struct _CamelVTrashFolder CamelVTrashFolder;
-typedef struct _CamelVTrashFolderClass CamelVTrashFolderClass;
-
-struct _CamelVTrashFolder {
- CamelVeeFolder parent;
-
-};
-
-struct _CamelVTrashFolderClass {
- CamelVeeFolderClass parent_class;
-
-};
-
-CamelType camel_vtrash_folder_get_type (void);
-
-CamelFolder *camel_vtrash_folder_new (CamelStore *parent_store, const char *name);
-
-#endif /* ! _CAMEL_VTRASH_FOLDER_H */
diff --git a/camel/camel.c b/camel/camel.c
deleted file mode 100644
index 6ae93081d6..0000000000
--- a/camel/camel.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- *
- * Author :
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef HAVE_NSS
-#include <nspr.h>
-#include <prthread.h>
-#include "nss.h" /* Don't use <> here or it will include the system nss.h instead */
-#include <ssl.h>
-#endif /* HAVE_NSS */
-
-#include "camel.h"
-
-gboolean camel_verbose_debug = FALSE;
-
-static void
-camel_shutdown (void)
-{
-#ifdef HAVE_NSS
- NSS_Shutdown ();
-
- PR_Cleanup ();
-#endif /* HAVE_NSS */
-}
-
-gint
-camel_init (const char *configdir, gboolean nss_init)
-{
-#ifdef ENABLE_THREADS
-#ifdef G_THREADS_ENABLED
- /*g_thread_init (NULL);*/
-#else /* G_THREADS_ENABLED */
- g_warning ("Threads are not supported by your version of glib");
-#endif /* G_THREADS_ENABLED */
-#endif /* ENABLE_THREADS */
-
- if (getenv ("CAMEL_VERBOSE_DEBUG"))
- camel_verbose_debug = TRUE;
-
-#ifdef HAVE_NSS
- if (nss_init) {
- PR_Init (PR_SYSTEM_THREAD, PR_PRIORITY_NORMAL, 10);
-
- if (NSS_InitReadWrite (configdir) == SECFailure) {
- /* fall back on using volatile dbs? */
- if (NSS_NoDB_Init (configdir) == SECFailure) {
- g_warning ("Failed to initialize NSS");
- return -1;
- }
- }
-
- NSS_SetDomesticPolicy ();
-
- g_atexit (camel_shutdown);
- }
-
- SSL_OptionSetDefault (SSL_ENABLE_SSL2, PR_TRUE);
- SSL_OptionSetDefault (SSL_ENABLE_SSL3, PR_TRUE);
- SSL_OptionSetDefault (SSL_ENABLE_TLS, PR_TRUE);
- SSL_OptionSetDefault (SSL_V2_COMPATIBLE_HELLO, PR_TRUE /* maybe? */);
-#endif /* HAVE_NSS */
-
- return 0;
-}
diff --git a/camel/camel.h b/camel/camel.h
deleted file mode 100644
index e8708a70c9..0000000000
--- a/camel/camel.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- *
- * Author :
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_H
-#define CAMEL_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <camel/camel-data-wrapper.h>
-#include <camel/camel-exception.h>
-#include <camel/camel-folder.h>
-#include <camel/camel-digest-folder.h>
-#include <camel/camel-disco-folder.h>
-#include <camel/camel-disco-store.h>
-#include <camel/camel-vee-folder.h>
-#include <camel/camel-medium.h>
-#include <camel/camel-mime-filter-basic.h>
-#include <camel/camel-mime-filter-charset.h>
-#include <camel/camel-mime-filter-index.h>
-#include <camel/camel-mime-filter-save.h>
-#include <camel/camel-mime-filter-crlf.h>
-#include <camel/camel-mime-filter.h>
-#include <camel/camel-mime-message.h>
-#include <camel/camel-mime-parser.h>
-#include <camel/camel-mime-part-utils.h>
-#include <camel/camel-mime-part.h>
-#include <camel/camel-mime-utils.h>
-#include <camel/camel-movemail.h>
-#include <camel/camel-multipart.h>
-#include <camel/camel-pgp-context.h>
-#include <camel/camel-pgp-mime.h>
-#include <camel/camel-provider.h>
-#include <camel/camel-seekable-stream.h>
-#include <camel/camel-seekable-substream.h>
-#include <camel/camel-service.h>
-#include <camel/camel-session.h>
-#include <camel/camel-store.h>
-#include <camel/camel-stream-buffer.h>
-#include <camel/camel-stream-filter.h>
-#include <camel/camel-stream-fs.h>
-#include <camel/camel-stream-mem.h>
-#include <camel/camel-stream.h>
-#include <camel/camel-tcp-stream-raw.h>
-#include <camel/camel-tcp-stream-ssl.h>
-#include <camel/camel-tcp-stream.h>
-#include <camel/camel-transport.h>
-#include <camel/camel-uid-cache.h>
-#include <camel/camel-url.h>
-#include <camel/gstring-util.h>
-#include <camel/hash-table-utils.h>
-#include <camel/string-utils.h>
-
-gint camel_init (const char *certdb_dir, gboolean nss_init);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_H */
diff --git a/camel/devel-docs/camel_data_wrapper.dia b/camel/devel-docs/camel_data_wrapper.dia
deleted file mode 100644
index 301563d1ee..0000000000
--- a/camel/devel-docs/camel_data_wrapper.dia
+++ /dev/null
Binary files differ
diff --git a/camel/devel-docs/camel_parser_states.dia b/camel/devel-docs/camel_parser_states.dia
deleted file mode 100644
index 556a5b1c49..0000000000
--- a/camel/devel-docs/camel_parser_states.dia
+++ /dev/null
Binary files differ
diff --git a/camel/devel-docs/camel_stream.dia b/camel/devel-docs/camel_stream.dia
deleted file mode 100644
index d91d1bb153..0000000000
--- a/camel/devel-docs/camel_stream.dia
+++ /dev/null
Binary files differ
diff --git a/camel/gstring-util.c b/camel/gstring-util.c
deleted file mode 100644
index 82dde51236..0000000000
--- a/camel/gstring-util.c
+++ /dev/null
@@ -1,217 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* gstring-util : utilities for gstring object */
-
-/*
- *
- * Author :
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include "gstring-util.h"
-
-/**
- * g_string_equals : test if two string are equal
- *
- * @string1 : first string
- * @string2 : second string
- *
- * @Return Value : true if the strings equal, false otherwise
- **/
-gboolean
-g_string_equals (GString *string1, GString *string2)
-{
- g_assert (string1);
- g_assert (string2);
- return !strcmp (string1->str, string2->str);
-}
-
-
-
-
-/**
- * g_string_clone : clone a GString
- *
- * @string : the string to clone
- *
- * @Return Value : the clone ...
- **/
-GString *
-g_string_clone (GString *string)
-{
- return g_string_new (string->str);
-}
-
-/**
- * g_string_append_g_string : append a GString to another GString
- *
- * @dest_string : string which will be appended
- * @other_string : string to append
- *
- **/
-void
-g_string_append_g_string(GString *dest_string, GString *other_string)
-{
- g_assert(other_string);
- g_assert(dest_string);
-
- if (other_string->len)
- g_string_append(dest_string, other_string->str);
-}
-
-/**
- * g_string_equal_for_hash: test equality of two GStrings for hash tables
- * @v: string 1
- * @v2: string 2
- *
- *
- *
- * Return value:
- **/
-gint
-g_string_equal_for_hash (gconstpointer v, gconstpointer v2)
-{
- return strcmp ( ((const GString*)v)->str, ((const GString*)v2)->str) == 0;
-}
-
-gint
-g_string_equal_for_glist (gconstpointer v, gconstpointer v2)
-{
- return !strcmp ( ((const GString*)v)->str, ((const GString*)v2)->str) == 0;
-}
-
-
-/**
- * g_string_hash: computes a hash value for a Gstring
- * @v: Gstring object
- *
- *
- *
- * Return value:
- **/
-guint
-g_string_hash (gconstpointer v)
-{
- return g_str_hash(((const GString*)v)->str);
-}
-
-
-
-
-/* utility func : frees a GString element in a GList */
-static void
-__g_string_list_free_string (gpointer data, gpointer user_data)
-{
- GString *string = (GString *)data;
- g_string_free(string, TRUE);
-}
-
-
-void
-g_string_list_free (GList *string_list)
-{
- g_list_foreach(string_list, __g_string_list_free_string, NULL);
- g_list_free(string_list);
-}
-
-
-
-
-
-
-GList *
-g_string_split (GString *string, char sep, gchar *trim_chars, GStringTrimOption trim_options)
-{
- GList *result = NULL;
- gint first, last, pos;
- gchar *str;
- gchar *new_str;
- GString *new_gstring;
-
- g_assert (string);
- str = string->str;
- if (!str) return NULL;
-
- first = 0;
- last = strlen(str) - 1;
-
- /* strip leading and trailing separators */
- while ( (first<=last) && (str[first]==sep) )
- first++;
- while ( (first<=last) && (str[last]==sep) )
- last--;
-
-
- while (first<=last) {
- pos = first;
- /* find next separator */
- while ((pos<=last) && (str[pos]!=sep)) pos++;
- if (first != pos) {
- new_str = g_strndup (str+first, pos-first);
- new_gstring = g_string_new (new_str);
- g_free (new_str);
- /* could do trimming in line to speed up this code */
- if (trim_chars) g_string_trim (new_gstring, trim_chars, trim_options);
- result = g_list_append (result, new_gstring);
- }
- first = pos + 1;
- }
-
- return result;
-}
-
-
-void
-g_string_trim (GString *string, gchar *chars, GStringTrimOption options)
-{
- gint first_ok;
- gint last_ok;
- guint length;
- gchar *str;
-
- if ((!string) || (!string->str))
- return;
- str = string->str;
- length = strlen (str);
- if (!length)
- return;
-
- first_ok = 0;
- last_ok = length - 1;
-
- if (options & GSTRING_TRIM_STRIP_LEADING)
- while ( (first_ok <= last_ok) && (strchr (chars, str[first_ok])) )
- first_ok++;
-
- if (options & GSTRING_TRIM_STRIP_TRAILING)
- while ( (first_ok <= last_ok) && (strchr (chars, str[last_ok])) )
- last_ok++;
-
- if (first_ok > 0)
- g_string_erase (string, 0, first_ok);
-
- if (last_ok < length-1)
- g_string_truncate (string, last_ok - first_ok +1);
-
-}
diff --git a/camel/gstring-util.h b/camel/gstring-util.h
deleted file mode 100644
index 487bbc8a3b..0000000000
--- a/camel/gstring-util.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* gstring-util : utilities for gstring object */
-
-/*
- *
- * Author :
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-
-#ifndef GSTRING_UTIL_H
-#define GSTRING_UTIL_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <glib.h>
-
-typedef enum {
- GSTRING_TRIM_NONE = 0,
- GSTRING_TRIM_STRIP_TRAILING = 1,
- GSTRING_TRIM_STRIP_LEADING = 2
-} GStringTrimOption;
-
-
-gboolean g_string_equals (GString *string1, GString *string2);
-GString *g_string_clone (GString *string);
-void g_string_append_g_string (GString *dest_string,
- GString *other_string);
-
-gboolean g_string_equal_for_hash (gconstpointer v, gconstpointer v2);
-gboolean g_string_equal_for_glist (gconstpointer v, gconstpointer v2);
-guint g_string_hash (gconstpointer v);
-void g_string_list_free (GList *string_list);
-
-GList *g_string_split (GString *string, char sep,
- gchar *trim_chars, GStringTrimOption trim_options);
-void g_string_trim (GString *string, gchar *chars,
- GStringTrimOption options);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* GSTRING_UTIL_H */
diff --git a/camel/hash-table-utils.c b/camel/hash-table-utils.c
deleted file mode 100644
index ca4323d638..0000000000
--- a/camel/hash-table-utils.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* generic utilities for hash tables */
-
-/*
- *
- * Author :
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#include <ctype.h>
-#include "hash-table-utils.h"
-
-
-/*
- * free a (key/value) hash table pair.
- * to be called in a g_hash_table_foreach()
- * before g_hash_table_destroy().
- */
-void
-g_hash_table_generic_free (gpointer key, gpointer value, gpointer user_data)
-{
- g_free (key);
- g_free (value);
-}
-
-
-
-/***/
-/* use these two funcs for case insensitive hash table */
-
-gint
-g_strcase_equal (gconstpointer a, gconstpointer b)
-{
- return (g_strcasecmp ((gchar *)a, (gchar *)b) == 0);
-}
-
-
-/* modified g_str_hash from glib/gstring.c
- because it would have been too slow to
- us g_strdown() on the string */
-/* a char* hash function from ASU */
-guint
-g_strcase_hash (gconstpointer v)
-{
- const char *s = (char*)v;
- const char *p;
- guint h=0, g;
-
- for(p = s; *p != '\0'; p += 1) {
- h = ( h << 4 ) + toupper(*p);
- if ( ( g = h & 0xf0000000 ) ) {
- h = h ^ (g >> 24);
- h = h ^ g;
- }
- }
-
- return h /* % M */;
-}
-
-
-
-/***/
diff --git a/camel/hash-table-utils.h b/camel/hash-table-utils.h
deleted file mode 100644
index 79c4cef72d..0000000000
--- a/camel/hash-table-utils.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* generic utilities for hash tables */
-
-/*
- *
- * Author :
- * Bertrand Guiheneuf <bertrand@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef HASH_TABLE_UTILS_H
-#define HASH_TABLE_UTILS_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <glib.h>
-
-void g_hash_table_generic_free (gpointer key, gpointer value, gpointer user_data);
-
-gint g_strcase_equal (gconstpointer a, gconstpointer b);
-guint g_strcase_hash (gconstpointer v);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* HASH_TABLE_UTILS_H */
diff --git a/camel/providers/.cvsignore b/camel/providers/.cvsignore
deleted file mode 100644
index 3dda72986f..0000000000
--- a/camel/providers/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile.in
-Makefile
diff --git a/camel/providers/Makefile.am b/camel/providers/Makefile.am
deleted file mode 100644
index 5fd7c83e50..0000000000
--- a/camel/providers/Makefile.am
+++ /dev/null
@@ -1,11 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-if ENABLE_NNTP
-NNTP_DIR=nntp
-endif
-
-# SUBDIRS = mbox pop3 sendmail smtp vee
-SUBDIRS = pop3 sendmail smtp imap $(NNTP_DIR) local
-
-# these ones are deprecated, and will no longer be maintained
-# mbox mh maildir vee \ No newline at end of file
diff --git a/camel/providers/cache/.cvsignore b/camel/providers/cache/.cvsignore
deleted file mode 100644
index 3fa8afaa38..0000000000
--- a/camel/providers/cache/.cvsignore
+++ /dev/null
@@ -1,11 +0,0 @@
-.deps
-Makefile
-Makefile.in
-.libs
-.deps
-*.lo
-*.la
-*.bb
-*.bbg
-*.da
-*.gcov
diff --git a/camel/providers/cache/Makefile.am b/camel/providers/cache/Makefile.am
deleted file mode 100644
index 7f9f6a9df5..0000000000
--- a/camel/providers/cache/Makefile.am
+++ /dev/null
@@ -1,35 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-SUBDIRS =
-
-libcamelcacheincludedir = $(includedir)/camel
-
-providerdir = $(pkglibdir)/camel-providers/$(VERSION)
-
-provider_LTLIBRARIES = libcamelcache.la
-provider_DATA = libcamelcache.urls
-
-INCLUDES = \
- -I.. \
- -I$(srcdir)/.. \
- -I$(srcdir)/../../.. \
- -I$(includedir) \
- -I$(top_srcdir)/intl \
- $(GTK_INCLUDEDIR) \
- -I$(top_srcdir)/camel \
- -DG_LOG_DOMAIN=\"camel-cache-provider\"
-
-libcamelcache_la_SOURCES = \
- camel-cache-folder.c \
- camel-cache-provider.c \
- camel-cache-store.c \
- camel-cache-map.c
-
-libcamelcacheinclude_HEADERS = \
- camel-cache-folder.h \
- camel-cache-store.h
-
-
-libcamelcache_la_LDFLAGS = -version-info 0:0:0
-
-EXTRA_DIST = libcamelcache.urls
diff --git a/camel/providers/cache/camel-cache-folder.c b/camel/providers/cache/camel-cache-folder.c
deleted file mode 100644
index c4379f8135..0000000000
--- a/camel/providers/cache/camel-cache-folder.c
+++ /dev/null
@@ -1,810 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-cache-folder.c : class for a cache folder */
-
-/*
- * Authors:
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-/*
- * Notes on the cache provider:
- *
- * We require that the remote folder have persistent UIDs, and nothing
- * else. We require that the local store folder have persistent UIDs
- * and summary capability.
- *
- * If the remote folder does not have summary capability, we will need
- * to sync any new messages over to the local folder when the folder
- * is opened or when it changes. If the remote folder does have
- * summary capability, we can be more relaxed about doing this.
- *
- * If the remote folder has search capability, we will use it, at
- * least when the folder isn't synced. Otherwise if the local folder
- * has search capability, we will use that (but it will require
- * syncing the remote folder locally to use). Otherwise the cache
- * folder won't have search capability.
- *
- * CamelCacheFolder UIDs are remote UIDs, because we need to be able
- * to return a complete list of them at get_uids time, and the
- * messages might not all be present in the local folder, and we can't
- * predict what UIDs will be assigned to them when they are cached
- * there. We keep hash tables mapping remote to local UIDs and vice
- * versa, and a map file to cache this information between sessions.
- * The maps must always be 100% accurate.
- *
- * The messages in the local folder may not be in the same order as
- * the messages in the remote folder.
- *
- *
- * Many operations on the local folder are done with a NULL
- * CamelException, because having them fail only results in efficiency
- * problems, not actual permanent failures. (Eg, get_message will
- * try to append the message to the local folder, but doesn't check
- * for failure, because it already has the message to pass back to the
- * user.)
- */
-
-#include "camel-cache-folder.h"
-#include "camel-cache-store.h"
-#include <camel/camel-exception.h>
-#include <camel/camel-medium.h>
-
-#define CF_CLASS(so) CAMEL_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-static CamelFolderClass *folder_class = NULL;
-
-static void init (CamelFolder *folder, CamelStore *parent_store,
- CamelFolder *parent_folder, const gchar *name,
- gchar *separator, gboolean path_begins_with_sep,
- CamelException *ex);
-
-static void refresh_info (CamelFolder *folder, CamelException *ex);
-
-static void cache_sync (CamelFolder *folder, gboolean expunge,
- CamelException *ex);
-
-static void expunge (CamelFolder *folder, CamelException *ex);
-
-static gint get_message_count (CamelFolder *folder);
-
-static void append_message (CamelFolder *folder, CamelMimeMessage *message,
- const CamelMessageInfo *info, CamelException *ex);
-
-static guint32 get_message_flags (CamelFolder *folder, const char *uid);
-static void set_message_flags (CamelFolder *folder, const char *uid,
- guint32 flags, guint32 set);
-static gboolean get_message_user_flag (CamelFolder *folder, const char *uid,
- const char *name);
-static void set_message_user_flag (CamelFolder *folder, const char *uid,
- const char *name, gboolean value);
-static const char *get_message_user_tag (CamelFolder *folder, const char *uid,
- const char *name);
-static void set_message_user_tag (CamelFolder *folder, const char *uid,
- const char *name, const char *value);
-
-static CamelMimeMessage *get_message (CamelFolder *folder,
- const gchar *uid,
- CamelException *ex);
-
-static GPtrArray *get_uids (CamelFolder *folder);
-static GPtrArray *get_summary (CamelFolder *folder);
-static GPtrArray *get_subfolder_names (CamelFolder *folder);
-static void free_subfolder_names (CamelFolder *folder, GPtrArray *subfolders);
-
-static GPtrArray *search_by_expression (CamelFolder *folder,
- const char *expression,
- CamelException *ex);
-
-static const CamelMessageInfo *get_message_info (CamelFolder *folder,
- const char *uid);
-
-static void copy_message_to (CamelFolder *source, const char *uid,
- CamelFolder *destination, CamelException *ex);
-
-static void move_message_to (CamelFolder *source, const char *uid,
- CamelFolder *destination, CamelException *ex);
-
-static void finalize (CamelObject *object);
-
-static void
-camel_cache_folder_class_init (CamelCacheFolderClass *camel_cache_folder_class)
-{
- CamelFolderClass *camel_folder_class =
- CAMEL_FOLDER_CLASS (camel_cache_folder_class);
-
- folder_class = CAMEL_FOLDER_CLASS (camel_type_get_global_classfuncs (camel_folder_get_type ()));
-
- /* virtual method overload */
- camel_folder_class->init = init;
- camel_folder_class->refresh_info = refresh_info;
- camel_folder_class->sync = cache_sync;
- camel_folder_class->expunge = expunge;
- camel_folder_class->get_message_count = get_message_count;
- camel_folder_class->append_message = append_message;
- camel_folder_class->get_message_flags = get_message_flags;
- camel_folder_class->set_message_flags = set_message_flags;
- camel_folder_class->get_message_user_flag = get_message_user_flag;
- camel_folder_class->set_message_user_flag = set_message_user_flag;
- camel_folder_class->get_message_user_tag = get_message_user_tag;
- camel_folder_class->set_message_user_tag = set_message_user_tag;
- camel_folder_class->get_message = get_message;
- camel_folder_class->get_uids = get_uids;
- camel_folder_class->free_uids = camel_folder_free_nop;
- camel_folder_class->get_summary = get_summary;
- camel_folder_class->free_summary = camel_folder_free_nop;
- camel_folder_class->get_subfolder_names = get_subfolder_names;
- camel_folder_class->free_subfolder_names = free_subfolder_names;
- camel_folder_class->search_by_expression = search_by_expression;
- camel_folder_class->get_message_info = get_message_info;
- camel_folder_class->copy_message_to = copy_message_to;
- camel_folder_class->move_message_to = move_message_to;
-}
-
-CamelType
-camel_cache_folder_get_type (void)
-{
- static CamelType camel_cache_folder_type = CAMEL_INVALID_TYPE;
-
- if (camel_cache_folder_type == CAMEL_INVALID_TYPE) {
- camel_cache_folder_type = camel_type_register (
- CAMEL_FOLDER_TYPE, "CamelCacheFolder",
- sizeof (CamelCacheFolder),
- sizeof (CamelCacheFolderClass),
- (CamelObjectClassInitFunc) camel_cache_folder_class_init,
- NULL,
- NULL,
- (CamelObjectFinalizeFunc) finalize);
- }
-
- return camel_cache_folder_type;
-}
-
-
-static void
-cache_free_summary (CamelCacheFolder *cache_folder)
-{
- if (cache_folder->remote_summary) {
- camel_folder_free_summary (cache_folder->remote,
- cache_folder->summary);
- } else {
- int i;
-
- for (i = 0; i < cache_folder->summary->len; i++) {
- camel_message_info_free (
- cache_folder->summary->pdata[i]);
- }
- g_ptr_array_free (cache_folder->summary, TRUE);
- g_hash_table_destroy (cache_folder->summary_uids);
- }
-}
-
-static void
-finalize (CamelObject *object)
-{
- CamelCacheFolder *cache_folder = CAMEL_CACHE_FOLDER (object);
-
- if (cache_folder->uids) {
- camel_folder_free_uids (cache_folder->remote,
- cache_folder->uids);
- }
- if (cache_folder->summary)
- cache_free_summary (cache_folder);
-
- if (cache_folder->uidmap)
- camel_cache_map_destroy (cache_folder->uidmap);
-
- camel_object_unref (CAMEL_OBJECT (cache_folder->local));
- camel_object_unref (CAMEL_OBJECT (cache_folder->remote));
-
- g_free (cache_folder->mapfile);
-}
-
-
-static void
-update (CamelCacheFolder *cache_folder, CamelException *ex)
-{
- if (cache_folder->uids) {
- camel_folder_free_uids (cache_folder->remote,
- cache_folder->uids);
- }
- cache_folder->uids = camel_folder_get_uids (cache_folder->remote);
-
- if (cache_folder->summary)
- cache_free_summary (cache_folder);
-
- if (cache_folder->remote_summary) {
- cache_folder->summary =
- camel_folder_get_summary (cache_folder->remote);
- } else {
- CamelMessageInfo *mi;
- GPtrArray *lsummary;
- const char *ruid;
- int i;
-
- if (!cache_folder->is_synced) {
- camel_cache_folder_sync (cache_folder, ex);
- if (camel_exception_is_set (ex))
- return;
- }
-
- cache_folder->summary = g_ptr_array_new ();
- cache_folder->summary_uids = g_hash_table_new (g_str_hash,
- g_str_equal);
-
- lsummary = camel_folder_get_summary (cache_folder->local);
-
- /* For each local message, duplicate its info, replace
- * the uid with the remote one, and add it to the
- * uid->info cache.
- */
- for (i = 0; i < lsummary->len; i++) {
- mi = lsummary->pdata[i];
- ruid = camel_cache_map_get_remote (cache_folder->uidmap, mi->uid);
- if (!ruid) {
- /* Stale message. Delete it from cache. */
- camel_folder_delete_message (
- cache_folder->local, mi->uid);
- continue;
- }
-
- mi = g_new (CamelMessageInfo, 1);
- camel_message_info_dup_to (lsummary->pdata[i], mi);
- g_free (mi->uid);
- mi->uid = g_strdup (ruid);
- g_hash_table_insert (cache_folder->summary_uids,
- mi->uid, mi);
- }
- camel_folder_free_summary (cache_folder->local, lsummary);
-
- /* Now build the summary array in remote UID order. */
- for (i = 0; i < cache_folder->uids->len; i++) {
- mi = g_hash_table_lookup (cache_folder->summary_uids,
- cache_folder->uids->pdata[i]);
- g_ptr_array_add (cache_folder->summary, mi);
- }
- }
-
-}
-
-static void
-init (CamelFolder *folder, CamelStore *parent_store,
- CamelFolder *parent_folder, const gchar *name, gchar *separator,
- gboolean path_begins_with_sep, CamelException *ex)
-{
- CamelCacheFolder *cache_folder = (CamelCacheFolder *)folder;
- char *path;
-
- CF_CLASS (folder)->init (folder, parent_store, parent_folder,
- name, separator, path_begins_with_sep, ex);
- if (camel_exception_is_set (ex))
- return;
-
- folder->permanent_flags =
- camel_folder_get_permanent_flags (cache_folder->local);
- folder->can_hold_folders = cache_folder->remote->can_hold_folders;
- folder->can_hold_messages = cache_folder->remote->can_hold_messages;
- folder->has_summary_capability = TRUE;
- folder->has_search_capability =
- camel_folder_has_search_capability (cache_folder->local) ||
- camel_folder_has_search_capability (cache_folder->remote);
-
- cache_folder->remote_summary =
- camel_folder_has_summary_capability (cache_folder->remote);
-
- /* Load UIDs, summary, etc. */
- path = CAMEL_SERVICE (cache_folder->local->parent_store)->url->path;
- cache_folder->mapfile = g_strdup_printf ("%s/%s.map", path, name);
- cache_folder->uidmap = camel_cache_map_new ();
- camel_cache_map_read (cache_folder->uidmap, cache_folder->mapfile, ex);
- if (camel_exception_is_set (ex))
- return;
- update (cache_folder, ex);
-
- return;
-}
-
-/* If the remote folder changes, cache the new messages if necessary,
- * update the summary, and propagate the signal.
- */
-static void
-remote_folder_changed (CamelObject *remote_folder, gpointer type,
- gpointer user_data)
-{
- CamelCacheFolder *cache_folder = user_data;
-
- update (cache_folder, NULL);
- camel_object_trigger_event (CAMEL_OBJECT (cache_folder),
- "folder_changed", type);
-}
-
-/* If the local folder changes, it's because we just cached a message
- * or expunged messages. Look for new messages and update the UID maps.
- */
-static void
-local_folder_changed (CamelObject *local, gpointer type, gpointer data)
-{
- CamelFolder *local_folder = CAMEL_FOLDER (local);
- CamelCacheFolder *cache_folder = data;
- CamelMimeMessage *msg;
- GPtrArray *new_luids;
- char *luid;
- const char *ruid;
- int i;
-
- /* Get the updated list of local UIDs. For any that we didn't
- * already know about, figure out the corresponding remote
- * UID.
- */
- new_luids = camel_folder_get_uids (local_folder);
- for (i = 0; i < new_luids->len; i++) {
- luid = new_luids->pdata[i];
- if (!camel_cache_map_get_remote (cache_folder->uidmap, luid)) {
- msg = camel_folder_get_message (local_folder,
- luid, NULL);
- if (!msg)
- continue; /* Hrmph. */
- ruid = camel_medium_get_header (CAMEL_MEDIUM (msg),
- "X-Evolution-Remote-UID");
- if (!ruid) {
- /* How'd that get here? */
- camel_folder_delete_message (local_folder,
- luid);
- continue;
- }
-
- camel_cache_map_update (cache_folder->uidmap,
- luid, ruid);
- }
- }
- camel_folder_free_uids (local_folder, new_luids);
-
- /* FIXME: the uidmaps contain bad data now. */
-}
-
-/* DONE */
-static void
-refresh_info (CamelFolder *folder, CamelException *ex)
-{
- CamelCacheFolder *cache_folder = (CamelCacheFolder *)folder;
-
- camel_folder_refresh_info (cache_folder->remote, ex);
-}
-
-/* DONE */
-static void
-cache_sync (CamelFolder *folder, gboolean expunge, CamelException *ex)
-{
- CamelCacheFolder *cache_folder = (CamelCacheFolder *)folder;
-
- camel_folder_sync (cache_folder->remote, expunge, ex);
- if (!camel_exception_is_set (ex)) {
- camel_folder_sync (cache_folder->local, expunge, NULL);
- camel_cache_map_write (cache_folder->uidmap,
- cache_folder->mapfile, ex);
- }
-}
-
-/* DONE */
-static void
-expunge (CamelFolder *folder, CamelException *ex)
-{
- CamelCacheFolder *cache_folder = (CamelCacheFolder *)folder;
-
- camel_folder_expunge (cache_folder->remote, ex);
- if (!camel_exception_is_set (ex))
- camel_folder_expunge (cache_folder->local, NULL);
-}
-
-/* DONE */
-static gint
-get_message_count (CamelFolder *folder)
-{
- CamelCacheFolder *cache_folder = (CamelCacheFolder *)folder;
-
- return cache_folder->summary->len;
-}
-
-/* DONE */
-static void
-append_message (CamelFolder *folder, CamelMimeMessage *message,
- const CamelMessageInfo *info, CamelException *ex)
-{
- CamelCacheFolder *cache_folder = (CamelCacheFolder *)folder;
-
- /* We'd like to cache this locally as well, but we have no
- * 100% reliable way to determine the UID assigned to the
- * remote message, so we can't.
- */
- camel_folder_append_message (cache_folder->remote, message, info, ex);
-}
-
-/* DONE */
-static guint32
-get_message_flags (CamelFolder *folder, const char *uid)
-{
- const CamelMessageInfo *mi;
-
- mi = get_message_info (folder, uid);
- g_return_val_if_fail (mi != NULL, 0);
- return mi->flags;
-}
-
-/* DONE */
-static void
-set_message_flags (CamelFolder *folder, const char *uid,
- guint32 flags, guint32 set)
-{
- CamelCacheFolder *cache_folder = (CamelCacheFolder *)folder;
- const char *luid;
-
- luid = camel_cache_map_get_local (cache_folder->uidmap, uid);
- if (luid) {
- camel_folder_set_message_flags (cache_folder->local, luid,
- flags, set);
- }
- camel_folder_set_message_flags (cache_folder->remote, uid, flags, set);
-}
-
-/* DONE */
-static gboolean
-get_message_user_flag (CamelFolder *folder, const char *uid, const char *name)
-{
- const CamelMessageInfo *mi;
-
- mi = get_message_info (folder, uid);
- g_return_val_if_fail (mi != NULL, 0);
- return camel_flag_get ((CamelFlag **)&mi->user_flags, name);
-}
-
-/* DONE */
-static void
-set_message_user_flag (CamelFolder *folder, const char *uid,
- const char *name, gboolean value)
-{
- CamelCacheFolder *cache_folder = (CamelCacheFolder *)folder;
- const char *luid;
-
- luid = camel_cache_map_get_local (cache_folder->uidmap, uid);
- if (luid) {
- camel_folder_set_message_user_flag (cache_folder->local, luid,
- name, value);
- }
- camel_folder_set_message_user_flag (cache_folder->remote, uid,
- name, value);
-}
-
-
-/* DONE */
-static const char *
-get_message_user_tag (CamelFolder *folder, const char *uid, const char *name)
-{
- const CamelMessageInfo *mi;
-
- mi = get_message_info (folder, uid);
- g_return_val_if_fail (mi != NULL, NULL);
- return camel_tag_get ((CamelTag **)&mi->user_tags, name);
-}
-
-/* DONE */
-static void
-set_message_user_tag (CamelFolder *folder, const char *uid,
- const char *name, const char *value)
-{
- CamelCacheFolder *cache_folder = (CamelCacheFolder *)folder;
- const char *luid;
-
- luid = camel_cache_map_get_local (cache_folder->uidmap, uid);
- if (luid) {
- camel_folder_set_message_user_tag (cache_folder->local, luid,
- name, value);
- }
- camel_folder_set_message_user_tag (cache_folder->remote, uid,
- name, value);
-}
-
-
-/* DONE */
-static CamelMimeMessage *
-get_message (CamelFolder *folder, const gchar *uid, CamelException *ex)
-{
- CamelCacheFolder *cache_folder = (CamelCacheFolder *)folder;
- CamelMimeMessage *msg;
- const CamelMessageInfo *info;
- const char *luid;
-
- /* Check if we have it cached first. */
- luid = camel_cache_map_get_local (cache_folder->uidmap, uid);
- if (luid) {
- msg = camel_folder_get_message (cache_folder->local,
- luid, NULL);
- if (msg)
- return msg;
-
- /* Hm... Oh well. Update the map and try for real. */
- camel_cache_map_remove (cache_folder->uidmap, NULL, uid);
- }
-
- /* OK. It's not cached. Get the remote message. */
- msg = camel_folder_get_message (cache_folder->remote, uid, ex);
- if (!msg)
- return NULL;
- info = camel_folder_get_message_info (cache_folder->remote, uid);
-
- /* Add a header giving the remote UID and append it to the
- * local folder. (This should eventually invoke
- * local_folder_changed(), which will take care of updating
- * the uidmaps.)
- */
- camel_medium_add_header (CAMEL_MEDIUM (msg), "X-Evolution-Remote-UID",
- uid);
- camel_folder_append_message (cache_folder->local, msg, info, NULL);
-
- return msg;
-}
-
-/* DONE */
-static GPtrArray *
-get_uids (CamelFolder *folder)
-{
- CamelCacheFolder *cache_folder = (CamelCacheFolder *)folder;
-
- return cache_folder->uids;
-}
-
-/* DONE */
-static GPtrArray *
-get_summary (CamelFolder *folder)
-{
- CamelCacheFolder *cache_folder = (CamelCacheFolder *)folder;
-
- return cache_folder->summary;
-}
-
-/* DONE */
-static GPtrArray *
-get_subfolder_names (CamelFolder *folder)
-{
- CamelCacheFolder *cache_folder = (CamelCacheFolder *)folder;
-
- return camel_folder_get_subfolder_names (cache_folder->remote);
-}
-
-/* DONE */
-static void
-free_subfolder_names (CamelFolder *folder, GPtrArray *subfolders)
-{
- CamelCacheFolder *cache_folder = (CamelCacheFolder *)folder;
-
- camel_folder_free_subfolder_names (cache_folder->remote, subfolders);
-}
-
-/* DONE */
-static GPtrArray *
-search_by_expression (CamelFolder *folder, const char *expression,
- CamelException *ex)
-{
- CamelCacheFolder *cache_folder = (CamelCacheFolder *)folder;
-
- /* Search on the remote folder if we're not synced. */
- if (!cache_folder->is_synced &&
- camel_folder_has_search_capability (cache_folder->remote)) {
- return camel_folder_search_by_expression (cache_folder->remote,
- expression, ex);
- } else {
- GPtrArray *matches;
- const char *ruid;
- int i;
-
- if (!cache_folder->is_synced)
- camel_cache_folder_sync (cache_folder, ex);
- if (camel_exception_is_set (ex))
- return NULL;
- matches = search_by_expression (cache_folder->local,
- expression, ex);
- if (camel_exception_is_set (ex))
- return NULL;
-
- /* Convert local uids to remote. */
- for (i = 0; i < matches->len; i++) {
- ruid = camel_cache_map_get_remote (cache_folder->uidmap,
- matches->pdata[i]);
- g_free (matches->pdata[i]);
- matches->pdata[i] = g_strdup (ruid);
- }
-
- return matches;
- }
-}
-
-/* DONE */
-static const CamelMessageInfo *
-get_message_info (CamelFolder *folder, const char *uid)
-{
- CamelCacheFolder *cache_folder = (CamelCacheFolder *)folder;
-
- if (cache_folder->remote_summary) {
- return camel_folder_get_message_info (cache_folder->remote,
- uid);
- } else
- return g_hash_table_lookup (cache_folder->summary_uids, uid);
-}
-
-/* DONE */
-static void
-copy_message_to (CamelFolder *source, const char *uid,
- CamelFolder *destination, CamelException *ex)
-{
- CamelCacheFolder *source_cache_folder = (CamelCacheFolder *)source;
- CamelCacheFolder *dest_cache_folder = (CamelCacheFolder *)destination;
-
- /* If we are here, we know that the folders have the same parent
- * store, which implies their remote and local folders have the
- * same parent store as well.
- */
-
- if (CF_CLASS (source_cache_folder->remote)->copy_message_to !=
- folder_class->copy_message_to) {
- /* The remote store has a non-default copy method, so
- * use it to avoid unnecessary network traffic.
- */
- CF_CLASS (source_cache_folder->remote)->copy_message_to (
- source_cache_folder->remote, uid,
- dest_cache_folder->remote, ex);
- } else {
- /* The remote store uses the default copy method,
- * meaning if we proxy the copy_message_to over to it,
- * it will suck the message over the network. We may
- * already have a local copy, and if we don't, we want
- * to, and if we're going to have the message in
- * memory, then we should get it into the destination
- * cache too. So do this by hand.
- */
- CamelMimeMessage *msg;
- const CamelMessageInfo *info;
-
- msg = get_message (source, uid, ex);
- if (camel_exception_is_set (ex))
- return;
- info = camel_folder_get_message_info (source, uid);
-
- camel_medium_remove_header (CAMEL_MEDIUM (msg),
- "X-Evolution-Remote-UID");
- append_message (destination, msg, info, ex);
- }
-}
-
-/* DONE */
-static void
-move_message_to (CamelFolder *source, const char *uid,
- CamelFolder *destination, CamelException *ex)
-{
- CamelCacheFolder *source_cache_folder = (CamelCacheFolder *)source;
- CamelCacheFolder *dest_cache_folder = (CamelCacheFolder *)destination;
-
- /* See comments in copy_message_to. */
-
- if (CF_CLASS (source_cache_folder)->move_message_to !=
- folder_class->move_message_to) {
- CF_CLASS (source_cache_folder)->move_message_to (
- source_cache_folder->remote, uid,
- dest_cache_folder->remote, ex);
- } else {
- CamelMimeMessage *msg;
- const CamelMessageInfo *info;
-
- msg = get_message (source, uid, ex);
- if (camel_exception_is_set (ex))
- return;
- info = camel_folder_get_message_info (source, uid);
-
- camel_medium_remove_header (CAMEL_MEDIUM (msg),
- "X-Evolution-Remote-UID");
- append_message (destination, msg, info, ex);
- if (!camel_exception_is_set (ex))
- camel_folder_delete_message (source, uid);
- }
-}
-
-
-CamelFolder *
-camel_cache_folder_new (CamelStore *store, CamelFolder *parent,
- CamelFolder *remote, CamelFolder *local,
- CamelException *ex)
-{
- CamelCacheFolder *cache_folder;
- CamelFolder *folder;
-
- cache_folder = CAMEL_CACHE_FOLDER (camel_object_new (CAMEL_CACHE_FOLDER_TYPE));
- folder = (CamelFolder *)cache_folder;
-
- cache_folder->local = local;
- camel_object_ref (CAMEL_OBJECT (local));
- camel_object_hook_event (CAMEL_OBJECT (local), "folder_changed",
- local_folder_changed, cache_folder);
-
- cache_folder->remote = remote;
- camel_object_ref (CAMEL_OBJECT (remote));
- camel_object_hook_event (CAMEL_OBJECT (remote), "folder_changed",
- remote_folder_changed, cache_folder);
-
- /* XXX */
-
- return folder;
-}
-
-void
-camel_cache_folder_sync (CamelCacheFolder *cache_folder, CamelException *ex)
-{
- CamelMimeMessage *msg;
- const char *ruid, *luid;
- int lsize, i;
- const CamelMessageInfo *info;
-
- lsize = camel_folder_get_message_count (cache_folder->local);
-
- camel_folder_freeze (cache_folder->local);
- for (i = 0; i < cache_folder->uids->len; i++) {
- ruid = cache_folder->uids->pdata[i];
- luid = camel_cache_map_get_local (cache_folder->uidmap, ruid);
-
- /* Don't re-copy messages we already have. */
- if (luid &&
- camel_folder_get_message_info (cache_folder->local, luid))
- continue;
-
- msg = camel_folder_get_message (cache_folder->remote,
- ruid, ex);
- if (camel_exception_is_set (ex))
- return;
- info = camel_folder_get_message_info (cache_folder->remote,
- ruid);
-
- camel_medium_add_header (CAMEL_MEDIUM (msg),
- "X-Evolution-Remote-UID", ruid);
- camel_folder_append_message (cache_folder->local, msg,
- info, ex);
- if (camel_exception_is_set (ex))
- return;
- }
- camel_folder_thaw (cache_folder->local);
-}
-
-static void
-get_mappings (CamelCacheFolder *cache_folder, int first, CamelException *ex)
-{
- GPtrArray *uids;
- CamelMimeMessage *msg;
- const char *ruid;
- int i;
-
- uids = camel_folder_get_uids (cache_folder->local);
- for (i = first; i < uids->len; i++) {
- msg = camel_folder_get_message (cache_folder->local,
- uids->pdata[i], ex);
- if (!msg)
- break;
- ruid = camel_medium_get_header (CAMEL_MEDIUM (msg),
- "X-Evolution-Remote-UID");
-
- camel_cache_map_add (cache_folder->uidmap,
- uids->pdata[i], ruid);
- }
- camel_folder_free_uids (cache_folder->local, uids);
-}
diff --git a/camel/providers/cache/camel-cache-folder.h b/camel/providers/cache/camel-cache-folder.h
deleted file mode 100644
index 2495f133b3..0000000000
--- a/camel/providers/cache/camel-cache-folder.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-cache-folder.h: Class for a cache folder */
-
-/*
- * Author:
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_CACHE_FOLDER_H
-#define CAMEL_CACHE_FOLDER_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <camel/camel-folder.h>
-#include "camel-cache-map.h"
-
-#define CAMEL_CACHE_FOLDER_TYPE (camel_cache_folder_get_type ())
-#define CAMEL_CACHE_FOLDER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_CACHE_FOLDER_TYPE, CamelCacheFolder))
-#define CAMEL_CACHE_FOLDER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_CACHE_FOLDER_TYPE, CamelCacheFolderClass))
-#define CAMEL_IS_CACHE_FOLDER(o) (CAMEL_CHECK_TYPE((o), CAMEL_CACHE_FOLDER_TYPE))
-
-
-typedef struct {
- CamelFolder parent_object;
-
- /* Remote and local folders */
- CamelFolder *remote, *local;
-
- /* Remote UIDs, in order, summary, and uid->info map if
- * summary is from local info.
- */
- GPtrArray *uids, *summary;
- GHashTable *summary_uids;
-
- /* UID map */
- CamelCacheMap *uidmap;
- char *mapfile;
-
- /* Is the summary remote? Is the folder known to be synced? */
- gboolean remote_summary, is_synced;
-
-} CamelCacheFolder;
-
-
-
-typedef struct {
- CamelFolderClass parent_class;
-
- /* Virtual methods */
-
-} CamelCacheFolderClass;
-
-
-CamelFolder *camel_cache_folder_new (CamelStore *store, CamelFolder *parent,
- CamelFolder *remote, CamelFolder *local,
- CamelException *ex);
-
-void camel_cache_folder_sync (CamelCacheFolder *cache_folder,
- CamelException *ex);
-
-/* Standard Camel function */
-CamelType camel_cache_folder_get_type (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_CACHE_FOLDER_H */
diff --git a/camel/providers/cache/camel-cache-map.c b/camel/providers/cache/camel-cache-map.c
deleted file mode 100644
index a826dfe157..0000000000
--- a/camel/providers/cache/camel-cache-map.c
+++ /dev/null
@@ -1,259 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-cache-map.c : functions for a local<->remote uid map */
-
-/*
- * Authors:
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <errno.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-#include "camel-cache-map.h"
-#include <camel/camel-exception.h>
-
-/**
- * camel_cache_map_new:
- *
- * Return value: a new CamelCacheMap
- **/
-CamelCacheMap *
-camel_cache_map_new (void)
-{
- CamelCacheMap *map = g_new (CamelCacheMap, 1);
-
- map->l2r = g_hash_table_new (g_str_hash, g_str_equal);
- map->r2l = g_hash_table_new (g_str_hash, g_str_equal);
-
- return map;
-}
-
-static void
-free_mapping (gpointer key, gpointer value, gpointer data)
-{
- g_free (key);
- g_free (data);
-}
-
-/**
- * camel_cache_map_destroy:
- * @map: a CamelCacheMap
- *
- * Frees @map and all of the data stored in it.
- **/
-void
-camel_cache_map_destroy (CamelCacheMap *map)
-{
- g_hash_table_foreach (map->l2r, free_mapping, NULL);
- g_hash_table_destroy (map->l2r);
- g_hash_table_destroy (map->r2l);
- g_free (map);
-}
-
-/**
- * camel_cache_map_add:
- * @map: a CamelCacheMap
- * @luid: the local uid
- * @ruid: the remote uid
- *
- * Adds a mapping between @luid and @ruid. If either already exists
- * in the map, this may leak memory and result in incorrect map entries.
- * Use camel_cache_map_update() in that case instead.
- **/
-void
-camel_cache_map_add (CamelCacheMap *map, const char *luid, const char *ruid)
-{
- char *map_luid = g_strdup (luid);
- char *map_ruid = g_strdup (ruid);
-
- g_hash_table_insert (map->l2r, map_luid, map_ruid);
- g_hash_table_insert (map->r2l, map_ruid, map_luid);
-}
-
-/**
- * camel_cache_map_remove:
- * @map: a CamelCacheMap
- * @luid: the local uid
- * @ruid: the remote uid
- *
- * Removes the mapping between @luid and @ruid. Either (but not both)
- * of the uids can be %NULL if they are not both known.
- **/
-void
-camel_cache_map_remove (CamelCacheMap *map, const char *luid, const char *ruid)
-{
- gpointer map_luid, map_ruid;
-
- if ((luid && g_hash_table_lookup_extended (map->l2r, luid,
- &map_luid, &map_ruid)) ||
- (ruid && g_hash_table_lookup_extended (map->r2l, ruid,
- &map_luid, &map_ruid))) {
- g_hash_table_remove (map->l2r, map_luid);
- g_hash_table_remove (map->r2l, map_ruid);
- g_free (map_luid);
- g_free (map_ruid);
- }
-}
-
-/**
- * camel_cache_map_update:
- * @map: a CamelCacheMap
- * @luid: the local uid
- * @ruid: the remote uid
- *
- * Updates the mappings to associate @luid with @ruid, clearing any
- * previous mappings for both of them.
- **/
-void
-camel_cache_map_update (CamelCacheMap *map, const char *luid, const char *ruid)
-{
- camel_cache_map_remove (map, luid, ruid);
- camel_cache_map_add (map, luid, ruid);
-}
-
-/**
- * camel_cache_map_get_local
- * @map: a CamelCacheMap
- * @ruid: the remote uid
- *
- * Return value: the corresponding local uid, or %NULL
- **/
-const char *
-camel_cache_map_get_local (CamelCacheMap *map, const char *ruid)
-{
- return g_hash_table_lookup (map->r2l, ruid);
-}
-
-/**
- * camel_cache_map_get_remote
- * @map: a CamelCacheMap
- * @luid: the local uid
- *
- * Return value: the corresponding remote uid, or %NULL
- **/
-const char *
-camel_cache_map_get_remote (CamelCacheMap *map, const char *luid)
-{
- return g_hash_table_lookup (map->l2r, luid);
-}
-
-
-
-static void
-write_mapping (gpointer key, gpointer value, gpointer user_data)
-{
- int fd = *(int *)user_data;
-
- /* FIXME: We assume the local UID has no ':'s in it. */
- write (fd, key, strlen (key));
- write (fd, ":", 1);
- write (fd, value, strlen (value));
- write (fd, "\n", 1);
-}
-
-/**
- * camel_cache_map_write:
- * @map: a CamelCacheMap
- * @file: the filename to write the map to
- * @ex: a CamelException
- *
- * Writes @map out to @file, setting @ex if something goes wrong.
- **/
-void
-camel_cache_map_write (CamelCacheMap *map, const char *file,
- CamelException *ex)
-{
- int fd;
- char *tmpfile;
-
- tmpfile = g_strdup_printf ("%s~", file);
- fd = open (tmpfile, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR);
- if (fd == -1) {
- g_free (tmpfile);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not create cache map file: %s"),
- g_strerror (errno));
- return;
- }
-
- g_hash_table_foreach (map->l2r, write_mapping, &fd);
-
- if (close (fd) == -1 ||
- rename (tmpfile, file) == -1) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not save cache map file: %s"),
- g_strerror (errno));
- unlink (tmpfile);
- }
- g_free (tmpfile);
-}
-
-/**
- * camel_cache_map_read:
- * @map: a CamelCacheMap
- * @file: the filename to read the map from
- * @ex: a CamelException
- *
- * Reads @map from @file, setting @ex if something goes wrong. @map
- * should be a freshly-created CamelCacheMap.
- **/
-void
-camel_cache_map_read (CamelCacheMap *map, const char *file, CamelException *ex)
-{
- FILE *f;
- char buf[1024], *p, *q;
-
- /* FIXME: lazy implementation. We could make this work with
- * lines longer than 1024 chars. :)
- */
-
- f = fopen (file, "r");
- if (!f) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not open cache map file: %s"),
- g_strerror (errno));
- return;
- }
-
- while (fgets (buf, sizeof (buf), f)) {
- p = strchr (buf, ':');
- if (p)
- q = strchr (buf, '\n');
- if (!p || !q) {
- camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Bad cache file."));
- return;
- }
- *p++ = *q = '\0';
-
- /* Local uid at buf, remote at p. */
- camel_cache_map_add (map, buf, p);
- }
-
- fclose (f);
-}
diff --git a/camel/providers/cache/camel-cache-map.h b/camel/providers/cache/camel-cache-map.h
deleted file mode 100644
index a15c9afe1a..0000000000
--- a/camel/providers/cache/camel-cache-map.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-cache-map.h: functions for dealing with UID maps */
-
-/*
- * Author:
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_CACHE_MAP_H
-#define CAMEL_CACHE_MAP_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <glib.h>
-#include <camel/camel-types.h>
-
-typedef struct {
- GHashTable *l2r, *r2l;
-} CamelCacheMap;
-
-CamelCacheMap *camel_cache_map_new (void);
-void camel_cache_map_destroy (CamelCacheMap *map);
-
-void camel_cache_map_add (CamelCacheMap *map, const char *luid,
- const char *ruid);
-void camel_cache_map_remove (CamelCacheMap *map, const char *luid,
- const char *ruid);
-void camel_cache_map_update (CamelCacheMap *map, const char *luid,
- const char *ruid);
-
-const char *camel_cache_map_get_local (CamelCacheMap *map, const char *ruid);
-const char *camel_cache_map_get_remote (CamelCacheMap *map, const char *luid);
-
-void camel_cache_map_write (CamelCacheMap *map, const char *file,
- CamelException *ex);
-void camel_cache_map_read (CamelCacheMap *map, const char *file,
- CamelException *ex);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_CACHE_MAP_H */
diff --git a/camel/providers/cache/camel-cache-provider.c b/camel/providers/cache/camel-cache-provider.c
deleted file mode 100644
index ac2f329d7c..0000000000
--- a/camel/providers/cache/camel-cache-provider.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-cache-provider.c: cache provider registration code */
-
-/*
- * Authors :
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "camel-cache-store.h"
-#include "camel-provider.h"
-#include "camel-session.h"
-
-static CamelProvider cache_provider = {
- "cache",
- "Cache",
-
- "For caching remote mail into a local store.",
-
- "cache",
-
- 0,
-
- { 0, 0 }
-};
-
-void
-camel_provider_module_init (CamelSession *session)
-{
- cache_provider.object_types[CAMEL_PROVIDER_STORE] =
- camel_cache_store_get_type();
-
- camel_session_register_provider (session, &cache_provider);
-}
diff --git a/camel/providers/cache/camel-cache-store.c b/camel/providers/cache/camel-cache-store.c
deleted file mode 100644
index ae076e47d2..0000000000
--- a/camel/providers/cache/camel-cache-store.c
+++ /dev/null
@@ -1,299 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-cache-store.c : class for a cache store */
-
-/*
- * Authors:
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <errno.h>
-
-#include "camel-cache-store.h"
-#include "camel-cache-folder.h"
-#include "camel-stream-buffer.h"
-#include "camel-stream-fs.h"
-#include "camel-session.h"
-#include "camel-exception.h"
-#include "camel-url.h"
-#include "md5-utils.h"
-
-static CamelServiceClass *service_class = NULL;
-#define CS_CLASS(so) CAMEL_STORE_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-static void finalize (CamelObject *object);
-
-static gboolean cache_connect (CamelService *service, CamelException *ex);
-static gboolean cache_disconnect (CamelService *service, CamelException *ex);
-static char *get_path (CamelService *service);
-static char *get_name (CamelService *service, gboolean brief);
-
-static CamelFolder *get_folder (CamelStore *store, const char *folder_name,
- gboolean create, CamelException *ex);
-static void delete_folder (CamelStore *store, const char *folder_name,
- CamelException *ex);
-static void rename_folder (CamelStore *store, const char *old_name,
- const char *new_name, CamelException *ex);
-static char *get_folder_name (CamelStore *store, const char *folder_name,
- CamelException *ex);
-static char *get_root_folder_name (CamelStore *store, CamelException *ex);
-static char *get_default_folder_name (CamelStore *store, CamelException *ex);
-
-
-static void
-camel_cache_store_class_init (CamelCacheStoreClass *camel_cache_store_class)
-{
- CamelServiceClass *camel_service_class =
- CAMEL_SERVICE_CLASS (camel_cache_store_class);
- CamelStoreClass *camel_store_class =
- CAMEL_STORE_CLASS (camel_cache_store_class);
-
- service_class = CAMEL_SERVICE_CLASS (camel_type_get_global_classfuncs (camel_service_get_type ()));
-
- /* virtual method overload */
- camel_service_class->connect = cache_connect;
- camel_service_class->disconnect = cache_disconnect;
- camel_service_class->get_path = get_path;
- camel_service_class->get_name = get_name;
-
- camel_store_class->get_folder = get_folder;
- camel_store_class->delete_folder = delete_folder;
- camel_store_class->rename_folder = rename_folder;
- camel_store_class->get_folder_name = get_folder_name;
- camel_store_class->get_root_folder_name = get_root_folder_name;
- camel_store_class->get_default_folder_name = get_default_folder_name;
-}
-
-
-CamelType
-camel_cache_store_get_type (void)
-{
- static CamelType camel_cache_store_type = CAMEL_INVALID_TYPE;
-
- if (camel_cache_store_type == CAMEL_INVALID_TYPE) {
- camel_cache_store_type = camel_type_register (
- CAMEL_STORE_TYPE, "CamelCacheStore",
- sizeof (CamelCacheStore),
- sizeof (CamelCacheStoreClass),
- (CamelObjectClassInitFunc) camel_cache_store_class_init,
- NULL,
- NULL,
- (CamelObjectFinalizeFunc) finalize);
- }
-
- return camel_cache_store_type;
-}
-
-static void
-finalize (CamelObject *object)
-{
- CamelCacheStore *cache_store = CAMEL_CACHE_STORE (object);
-
- camel_object_unref (CAMEL_OBJECT (cache_store->local));
- camel_object_unref (CAMEL_OBJECT (cache_store->remote));
- g_free (cache_store->local_base);
-}
-
-
-static gboolean
-cache_connect (CamelService *service, CamelException *ex)
-{
- CamelCacheStore *cache_store = CAMEL_CACHE_STORE (service);
-
- return camel_service_connect (CAMEL_SERVICE (cache_store->remote), ex) &&
- camel_service_connect (CAMEL_SERVICE (cache_store->local), ex);
-}
-
-static gboolean
-cache_disconnect (CamelService *service, CamelException *ex)
-{
- CamelCacheStore *cache_store = CAMEL_CACHE_STORE (service);
-
- return camel_service_disconnect (CAMEL_SERVICE (cache_store->local), ex) &&
- camel_service_disconnect (CAMEL_SERVICE (cache_store->remote), ex);
-}
-
-static char *
-get_path (CamelService *service)
-{
- CamelCacheStore *cache_store = CAMEL_CACHE_STORE (service);
- char *path, *subpath;
-
- subpath = camel_service_get_path (CAMEL_SERVICE (cache_store->remote));
- path = g_strdup_printf ("cache/%s", subpath);
- g_free (subpath);
- return path;
-}
-
-static char *
-get_name (CamelService *service, gboolean brief)
-{
- CamelCacheStore *cache_store = CAMEL_CACHE_STORE (service);
-
- return camel_service_get_name (CAMEL_SERVICE (cache_store->remote),
- brief);
-}
-
-static CamelFolder *
-get_folder (CamelStore *store, const char *folder_name,
- gboolean create, CamelException *ex)
-{
- CamelCacheStore *cache_store = CAMEL_CACHE_STORE (store);
- CamelFolder *parent, *rf, *lf;
-
- rf = camel_store_get_folder (cache_store->remote, folder_name,
- create, ex);
- if (!rf)
- return NULL;
-
- lf = camel_store_get_folder (cache_store->local, folder_name,
- TRUE, ex);
- if (!lf) {
- camel_object_unref (CAMEL_OBJECT (rf));
- camel_exception_setv (ex, camel_exception_get_id (ex),
- _("Could not create cache folder:\n%s"),
- camel_exception_get_description (ex));
- return NULL;
- }
-
- return camel_cache_folder_new (store, parent, rf, lf, ex);
-}
-
-/* XXX these two need to be better about failure recovery. */
-static void
-delete_folder (CamelStore *store, const char *folder_name,
- CamelException *ex)
-{
- CamelCacheStore *cache_store = CAMEL_CACHE_STORE (store);
-
- camel_store_delete_folder (cache_store->remote, folder_name, ex);
- if (camel_exception_is_set (ex))
- return;
- camel_store_delete_folder (cache_store->local, folder_name, NULL);
-}
-
-static void
-rename_folder (CamelStore *store, const char *old_name,
- const char *new_name, CamelException *ex)
-{
- CamelCacheStore *cache_store = CAMEL_CACHE_STORE (store);
-
- camel_store_rename_folder (cache_store->remote, old_name,
- new_name, ex);
- if (camel_exception_is_set (ex))
- return;
- camel_store_rename_folder (cache_store->local, old_name,
- new_name, NULL);
-}
-
-static char *
-get_folder_name (CamelStore *store, const char *folder_name,
- CamelException *ex)
-{
- CamelCacheStore *cache_store = CAMEL_CACHE_STORE (store);
-
- return CS_CLASS (cache_store->remote)->get_folder_name (
- cache_store->remote, folder_name, ex);
-}
-
-static char *
-get_root_folder_name (CamelStore *store, CamelException *ex)
-{
- CamelCacheStore *cache_store = CAMEL_CACHE_STORE (store);
-
- return CS_CLASS (cache_store->remote)->get_root_folder_name (
- cache_store->remote, ex);
-}
-
-static char *
-get_default_folder_name (CamelStore *store, CamelException *ex)
-{
- CamelCacheStore *cache_store = CAMEL_CACHE_STORE (store);
-
- return CS_CLASS (cache_store->remote)->get_default_folder_name (
- cache_store->remote, ex);
-}
-
-
-/**
- * camel_cache_store_new:
- * @remote: a remote store
- * @ex: a CamelException
- *
- * Return value: a CamelCacheStore for the given remote store.
- **/
-CamelStore *
-camel_cache_store_new (CamelStore *remote, CamelException *ex)
-{
- CamelCacheStore *cache_store;
- CamelService *remote_service = (CamelService *)remote;
- CamelSession *session;
- char *url_string;
- CamelURL *url;
-
- session = camel_service_get_session (remote_service);
-
- url_string = camel_service_get_url (remote_service);
- url = camel_url_new (url_string, ex);
- g_free (url_string);
-
- if (!url)
- return NULL;
-
- cache_store = (CamelCacheStore *)
- camel_service_new (CAMEL_CACHE_STORE_TYPE, session,
- camel_service_get_provider (remote_service),
- url, ex);
- if (camel_exception_is_set (ex)) {
- camel_url_free (url);
- return NULL;
- }
-
- cache_store->remote = remote;
- camel_object_ref (CAMEL_OBJECT (remote));
-
- cache_store->local_base = camel_session_get_storage_path (
- session, (CamelService *)cache_store, ex);
- if (camel_exception_is_set (ex)) {
- camel_object_unref (CAMEL_OBJECT (cache_store));
- return NULL;
- }
-
- url_string = g_strdup_printf ("mbox:%s", cache_store->local_base);
- cache_store->local = camel_session_get_store (session, url_string, ex);
- g_free (url_string);
- if (camel_exception_is_set (ex)) {
- camel_object_unref (CAMEL_OBJECT (cache_store));
- return NULL;
- }
-
- return (CamelStore *)cache_store;
-}
diff --git a/camel/providers/cache/camel-cache-store.h b/camel/providers/cache/camel-cache-store.h
deleted file mode 100644
index 97fae62a51..0000000000
--- a/camel/providers/cache/camel-cache-store.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-cache-store.h: class for a cache store */
-
-/*
- * Authors:
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_CACHE_STORE_H
-#define CAMEL_CACHE_STORE_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <camel/camel-store.h>
-
-#define CAMEL_CACHE_STORE_TYPE (camel_cache_store_get_type ())
-#define CAMEL_CACHE_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_CACHE_STORE_TYPE, CamelCacheStore))
-#define CAMEL_CACHE_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_CACHE_STORE_TYPE, CamelCacheStoreClass))
-#define CAMEL_IS_CACHE_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_CACHE_STORE_TYPE))
-
-typedef struct {
- CamelStore parent_object;
-
- char *local_base;
- CamelStore *remote, *local;
-
-} CamelCacheStore;
-
-
-typedef struct {
- CamelStoreClass parent_class;
-
-} CamelCacheStoreClass;
-
-
-/* support functions */
-CamelStore *camel_cache_store_new (CamelStore *remote, CamelException *ex);
-
-/* Standard Camel function */
-CamelType camel_cache_store_get_type (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_CACHE_STORE_H */
-
-
diff --git a/camel/providers/cache/libcamelcache.urls b/camel/providers/cache/libcamelcache.urls
deleted file mode 100644
index 06cf65390f..0000000000
--- a/camel/providers/cache/libcamelcache.urls
+++ /dev/null
@@ -1 +0,0 @@
-cache
diff --git a/camel/providers/imap/.cvsignore b/camel/providers/imap/.cvsignore
deleted file mode 100644
index 3fa8afaa38..0000000000
--- a/camel/providers/imap/.cvsignore
+++ /dev/null
@@ -1,11 +0,0 @@
-.deps
-Makefile
-Makefile.in
-.libs
-.deps
-*.lo
-*.la
-*.bb
-*.bbg
-*.da
-*.gcov
diff --git a/camel/providers/imap/Makefile.am b/camel/providers/imap/Makefile.am
deleted file mode 100644
index 545c404174..0000000000
--- a/camel/providers/imap/Makefile.am
+++ /dev/null
@@ -1,50 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-libcamelimapincludedir = $(includedir)/camel
-
-
-providerdir = $(pkglibdir)/camel-providers/$(VERSION)
-
-provider_LTLIBRARIES = libcamelimap.la
-provider_DATA = libcamelimap.urls
-
-INCLUDES = -I.. \
- -I$(srcdir)/.. \
- -I$(top_srcdir)/camel \
- -I$(top_srcdir)/intl \
- -I$(top_srcdir)/libibex \
- -I$(top_srcdir)/e-util \
- -I$(top_srcdir) \
- -I$(includedir) \
- $(GNOME_INCLUDEDIR) \
- $(GTK_INCLUDEDIR) \
- -DG_LOG_DOMAIN=\"camel-imap-provider\"
-
-libcamelimap_la_SOURCES = \
- camel-imap-command.c \
- camel-imap-folder.c \
- camel-imap-message-cache.c \
- camel-imap-provider.c \
- camel-imap-search.c \
- camel-imap-store.c \
- camel-imap-summary.c \
- camel-imap-utils.c \
- camel-imap-wrapper.c
-
-libcamelimapinclude_HEADERS = \
- camel-imap-command.h \
- camel-imap-folder.h \
- camel-imap-message-cache.h \
- camel-imap-search.h \
- camel-imap-store.h \
- camel-imap-summary.h \
- camel-imap-types.h \
- camel-imap-utils.h \
- camel-imap-wrapper.h
-
-libcamelimap_la_LDFLAGS = -version-info 0:0:0
-
-noinst_HEADERS = \
- camel-imap-private.h
-
-EXTRA_DIST = libcamelimap.urls
diff --git a/camel/providers/imap/camel-imap-command.c b/camel/providers/imap/camel-imap-command.c
deleted file mode 100644
index 4102d47cc5..0000000000
--- a/camel/providers/imap/camel-imap-command.c
+++ /dev/null
@@ -1,633 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-imap-command.c: IMAP command sending/parsing routines */
-
-/*
- * Authors:
- * Dan Winship <danw@ximian.com>
- * Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright 2000, 2001 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdarg.h>
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-
-#include "camel-imap-command.h"
-#include "camel-imap-utils.h"
-#include "camel-imap-folder.h"
-#include "camel-imap-store.h"
-#include "camel-imap-private.h"
-#include <camel/camel-exception.h>
-
-static char *imap_read_untagged (CamelImapStore *store, char *line,
- CamelException *ex);
-static CamelImapResponse *imap_read_response (CamelImapStore *store,
- CamelException *ex);
-static char *imap_command_strdup_vprintf (CamelImapStore *store,
- const char *fmt, va_list ap);
-
-/**
- * camel_imap_command: Send a command to a IMAP server and get a response
- * @store: the IMAP store
- * @folder: The folder to perform the operation in (or %NULL if not
- * relevant).
- * @ex: a CamelException
- * @fmt: an sort of printf-style format string, followed by arguments
- *
- * This function makes sure that @folder (if non-%NULL) is the
- * currently-selected folder on @store and then sends the IMAP command
- * specified by @fmt and the following arguments. It then reads the
- * server's response(s) and parses the final result.
- *
- * As a special case, if @fmt is %NULL, it will just select @folder
- * and return the response from doing so.
- *
- * @fmt can include the following %-escapes ONLY:
- * %s, %d, %%: as with printf
- * %S: an IMAP "string" (quoted string or literal)
- *
- * %S strings will be passed as literals if the server supports LITERAL+
- * and quoted strings otherwise. (%S does not support strings that
- * contain newlines.)
- *
- * On success, the store's command_lock will be locked. It will be freed
- * when you call camel_imap_response_free. (The lock is recursive, so
- * callers can grab and release it themselves if they need to run
- * multiple commands atomically.)
- *
- * Return value: %NULL if an error occurred (in which case @ex will
- * be set). Otherwise, a CamelImapResponse describing the server's
- * response, which the caller must free with camel_imap_response_free().
- **/
-CamelImapResponse *
-camel_imap_command (CamelImapStore *store, CamelFolder *folder,
- CamelException *ex, const char *fmt, ...)
-{
- gchar *cmdbuf;
- va_list ap;
-
- CAMEL_IMAP_STORE_LOCK (store, command_lock);
-
- /* Check for current folder */
- if (folder && (!fmt || folder != store->current_folder)) {
- CamelImapResponse *response;
-
- if (store->current_folder) {
- camel_object_unref (CAMEL_OBJECT (store->current_folder));
- store->current_folder = NULL;
- }
- response = camel_imap_command (store, NULL, ex, "SELECT %S",
- folder->full_name);
- if (!response) {
- CAMEL_IMAP_STORE_UNLOCK (store, command_lock);
- return NULL;
- }
- store->current_folder = folder;
- camel_object_ref (CAMEL_OBJECT (folder));
-
- camel_imap_folder_selected (folder, response, ex);
- if (!fmt) {
- /* This undoes the level of locking we did,
- * but not the level of locking associated with
- * "response".
- */
- CAMEL_IMAP_STORE_UNLOCK (store, command_lock);
- return response;
- }
-
- /* Contrariwise, this undoes "response"s lock,
- * but not our own.
- */
- camel_imap_response_free (store, response);
- }
-
- /* Send the command */
- va_start (ap, fmt);
- cmdbuf = imap_command_strdup_vprintf (store, fmt, ap);
- va_end (ap);
-
- camel_remote_store_send_string (CAMEL_REMOTE_STORE (store), ex,
- "%c%.5d %s\r\n", store->tag_prefix,
- store->command++, cmdbuf);
- g_free (cmdbuf);
- if (camel_exception_is_set (ex)) {
- CAMEL_IMAP_STORE_UNLOCK (store, command_lock);
- return NULL;
- }
-
- /* Read the response. */
- return imap_read_response (store, ex);
-}
-
-/**
- * camel_imap_command_continuation: Send more command data to the IMAP server
- * @store: the IMAP store
- * @ex: a CamelException
- * @cmdbuf: buffer containing the response/request data
- *
- * This method is for sending continuing responses to the IMAP server
- * after camel_imap_command returns a CAMEL_IMAP_PLUS response.
- *
- * This function assumes you have an exclusive lock on the remote stream.
- *
- * Return value: as for camel_imap_command(). On failure, the store's
- * command_lock will be released.
- **/
-CamelImapResponse *
-camel_imap_command_continuation (CamelImapStore *store, CamelException *ex,
- const char *cmdbuf)
-{
- if (camel_remote_store_send_string (CAMEL_REMOTE_STORE (store), ex,
- "%s\r\n", cmdbuf) < 0) {
- CAMEL_IMAP_STORE_UNLOCK (store, command_lock);
- return NULL;
- }
-
- return imap_read_response (store, ex);
-}
-
-/* Read the response to an IMAP command. */
-static CamelImapResponse *
-imap_read_response (CamelImapStore *store, CamelException *ex)
-{
- CamelImapResponse *response;
- char *respbuf, *retcode;
-
- /* Read first line */
- if (camel_remote_store_recv_line (CAMEL_REMOTE_STORE (store),
- &respbuf, ex) < 0) {
- CAMEL_IMAP_STORE_UNLOCK (store, command_lock);
- return NULL;
- }
-
- response = g_new0 (CamelImapResponse, 1);
- response->folder = store->current_folder;
- if (response->folder)
- camel_object_ref (CAMEL_OBJECT (response->folder));
- response->untagged = g_ptr_array_new ();
-
- /* Check for untagged data */
- while (!strncmp (respbuf, "* ", 2)) {
- /* Read the rest of the response if it is multi-line. */
- respbuf = imap_read_untagged (store, respbuf, ex);
- if (camel_exception_is_set (ex))
- break;
-
- if (!g_strncasecmp (respbuf, "* BYE", 5)) {
- /* Connection was lost, no more data to fetch */
- store->connected = FALSE;
- g_free (respbuf);
- respbuf = NULL;
- break;
- }
-
- g_ptr_array_add (response->untagged, respbuf);
- if (camel_remote_store_recv_line (
- CAMEL_REMOTE_STORE (store), &respbuf, ex) < 0)
- break;
- }
-
- if (!respbuf || camel_exception_is_set (ex)) {
- camel_imap_response_free (store, response);
- return NULL;
- }
-
- response->status = respbuf;
-
- /* Check for OK or continuation response. */
- if (!strncmp (respbuf, "+ ", 2))
- return response;
- retcode = imap_next_word (respbuf);
- if (!strncmp (retcode, "OK", 2))
- return response;
-
- /* We should never get BAD, or anything else but +, OK, or NO
- * for that matter.
- */
- if (strncmp (retcode, "NO", 2) != 0) {
- g_warning ("Unexpected response from IMAP server: %s",
- respbuf);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("Unexpected response from IMAP "
- "server: %s"), respbuf);
- camel_imap_response_free (store, response);
- return NULL;
- }
-
- retcode = imap_next_word (retcode);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("IMAP command failed: %s"),
- retcode ? retcode : _("Unknown error"));
- camel_imap_response_free (store, response);
- return NULL;
-}
-
-/* Given a line that is the start of an untagged response, read and
- * return the complete response, which may include an arbitrary number
- * of literals.
- */
-static char *
-imap_read_untagged (CamelImapStore *store, char *line, CamelException *ex)
-{
- int fulllen, length, ldigits, nread, i;
- GPtrArray *data;
- GString *str;
- char *end, *p, *s, *d;
-
- p = strrchr (line, '{');
- if (!p)
- return line;
-
- data = g_ptr_array_new ();
- fulllen = 0;
-
- while (1) {
- str = g_string_new (line);
- g_free (line);
- fulllen += str->len;
- g_ptr_array_add (data, str);
-
- p = strrchr (str->str, '{');
- if (!p)
- break;
-
- length = strtoul (p + 1, &end, 10);
- if (*end != '}' || *(end + 1) || end == p + 1)
- break;
- ldigits = end - (p + 1);
-
- /* Read the literal */
- str = g_string_sized_new (length + 2);
- str->str[0] = '\n';
- nread = camel_stream_read (CAMEL_REMOTE_STORE (store)->istream,
- str->str + 1, length);
- if (nread == -1) {
- if (errno == EINTR)
- camel_exception_set(ex, CAMEL_EXCEPTION_USER_CANCEL, _("Operation cancelled"));
- else
- camel_exception_set(ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE, strerror(errno));
- camel_service_disconnect (CAMEL_SERVICE (store), FALSE, NULL);
- goto lose;
- }
- if (nread < length) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("Server response ended too soon."));
- camel_service_disconnect (CAMEL_SERVICE (store),
- FALSE, NULL);
- goto lose;
- }
- str->str[length + 1] = '\0';
-
- /* Fix up the literal, turning CRLFs into LF. Also, if
- * we find any embedded NULs, strip them. This is
- * dubious, but:
- * - The IMAP grammar says you can't have NULs here
- * anyway, so this will not affect our behavior
- * against any completely correct server.
- * - WU-imapd 12.264 (at least) will cheerily pass
- * NULs along if they are embedded in the message
- * - The only cause of embedded NULs we've seen is an
- * Evolution base64-encoder bug that sometimes
- * inserts a NUL into the last line when it
- * shouldn't.
- */
-
- s = d = str->str + 1;
- end = str->str + 1 + length;
- while (s < end) {
- while (s < end && *s == '\0') {
- s++;
- length--;
- }
- if (*s == '\r' && *(s + 1) == '\n') {
- s++;
- length--;
- }
- *d++ = *s++;
- }
- *d = '\0';
- str->len = length + 1;
-
- /* p points to the "{" in the line that starts the
- * literal. The length of the CR-less response must be
- * less than or equal to the length of the response
- * with CRs, therefore overwriting the old value with
- * the new value cannot cause an overrun. However, we
- * don't want it to be shorter either, because then the
- * GString's length would be off...
- */
- sprintf (p, "{%0*d}", ldigits, length);
-
- fulllen += str->len;
- g_ptr_array_add (data, str);
-
- /* Read the next line. */
- if (camel_remote_store_recv_line (CAMEL_REMOTE_STORE (store),
- &line, ex) < 0)
- goto lose;
- }
-
- /* Now reassemble the data. */
- p = line = g_malloc (fulllen + 1);
- for (i = 0; i < data->len; i++) {
- str = data->pdata[i];
- memcpy (p, str->str, str->len);
- p += str->len;
- g_string_free (str, TRUE);
- }
- *p = '\0';
- g_ptr_array_free (data, TRUE);
- return line;
-
- lose:
- for (i = 0; i < data->len; i++)
- g_string_free (data->pdata[i], TRUE);
- g_ptr_array_free (data, TRUE);
- return NULL;
-}
-
-
-/**
- * camel_imap_response_free:
- * @store: the CamelImapStore the response is from
- * @response: a CamelImapResponse
- *
- * Frees all of the data in @response and processes any untagged
- * EXPUNGE and EXISTS responses in it. Releases @store's command_lock.
- **/
-void
-camel_imap_response_free (CamelImapStore *store, CamelImapResponse *response)
-{
- int i, number, exists = 0;
- GArray *expunged = NULL;
- char *resp, *p;
-
- if (!response)
- return;
-
- for (i = 0; i < response->untagged->len; i++) {
- resp = response->untagged->pdata[i];
-
- if (response->folder) {
- /* Check if it's something we need to handle. */
- number = strtoul (resp + 2, &p, 10);
- if (!g_strcasecmp (p, " EXISTS")) {
- exists = number;
- } else if (!g_strcasecmp (p, " EXPUNGE")) {
- if (!expunged) {
- expunged = g_array_new (FALSE, FALSE,
- sizeof (int));
- }
- g_array_append_val (expunged, number);
- }
- }
- g_free (resp);
- }
-
- g_ptr_array_free (response->untagged, TRUE);
- g_free (response->status);
-
- if (response->folder) {
- if (exists > 0 || expunged) {
- /* Update the summary */
- camel_imap_folder_changed (response->folder,
- exists, expunged, NULL);
- if (expunged)
- g_array_free (expunged, TRUE);
- }
-
- camel_object_unref (CAMEL_OBJECT (response->folder));
- }
-
- g_free (response);
- CAMEL_IMAP_STORE_UNLOCK (store, command_lock);
-}
-
-/**
- * camel_imap_response_free_without_processing:
- * @store: the CamelImapStore the response is from.
- * @response: a CamelImapResponse:
- *
- * Frees all of the data in @response without processing any untagged
- * responses. Releases @store's command lock.
- **/
-void
-camel_imap_response_free_without_processing (CamelImapStore *store,
- CamelImapResponse *response)
-{
- if (response->folder) {
- camel_object_unref (CAMEL_OBJECT (response->folder));
- response->folder = NULL;
- }
- camel_imap_response_free (store, response);
-}
-
-/**
- * camel_imap_response_extract:
- * @store: the store the response came from
- * @response: the response data returned from camel_imap_command
- * @type: the response type to extract
- * @ex: a CamelException
- *
- * This checks that @response contains a single untagged response of
- * type @type and returns just that response data. If @response
- * doesn't contain the right information, the function will set @ex
- * and return %NULL. Either way, @response will be freed and the
- * store's command_lock released.
- *
- * Return value: the desired response string, which the caller must free.
- **/
-char *
-camel_imap_response_extract (CamelImapStore *store,
- CamelImapResponse *response,
- const char *type,
- CamelException *ex)
-{
- int len = strlen (type), i;
- char *resp;
-
- for (i = 0; i < response->untagged->len; i++) {
- resp = response->untagged->pdata[i];
- /* Skip "* ", and initial sequence number, if present */
- strtoul (resp + 2, &resp, 10);
- if (*resp == ' ')
- resp = imap_next_word (resp);
-
- if (!g_strncasecmp (resp, type, len))
- break;
- }
-
- if (i < response->untagged->len) {
- resp = response->untagged->pdata[i];
- g_ptr_array_remove_index (response->untagged, i);
- } else {
- resp = NULL;
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("IMAP server response did not contain "
- "%s information"), type);
- }
-
- camel_imap_response_free (store, response);
- return resp;
-}
-
-/**
- * camel_imap_response_extract_continuation:
- * @store: the store the response came from
- * @response: the response data returned from camel_imap_command
- * @ex: a CamelException
- *
- * This checks that @response contains a continuation response, and
- * returns just that data. If @response doesn't contain a continuation
- * response, the function will set @ex, release @store's command_lock,
- * and return %NULL. Either way, @response will be freed.
- *
- * Return value: the desired response string, which the caller must free.
- **/
-char *
-camel_imap_response_extract_continuation (CamelImapStore *store,
- CamelImapResponse *response,
- CamelException *ex)
-{
- char *status;
-
- if (response->status && !strncmp (response->status, "+ ", 2)) {
- status = response->status;
- response->status = NULL;
- CAMEL_IMAP_STORE_LOCK (store, command_lock);
- camel_imap_response_free (store, response);
- return status;
- }
-
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("Unexpected OK response from IMAP server: %s"),
- response->status);
- camel_imap_response_free (store, response);
- return NULL;
-}
-
-
-static char *
-imap_command_strdup_vprintf (CamelImapStore *store, const char *fmt,
- va_list ap)
-{
- GPtrArray *args;
- const char *p, *start;
- char *out, *op, *string;
- int num, len, i;
-
- args = g_ptr_array_new ();
-
- /* Determine the length of the data */
- len = strlen (fmt);
- p = start = fmt;
- while (*p) {
- p = strchr (start, '%');
- if (!p)
- break;
-
- switch (*++p) {
- case 'd':
- num = va_arg (ap, int);
- g_ptr_array_add (args, GINT_TO_POINTER (num));
- start = p + 1;
- len += 10;
- break;
-
- case 's':
- string = va_arg (ap, char *);
- g_ptr_array_add (args, string);
- start = p + 1;
- len += strlen (string);
- break;
-
- case 'S':
- string = va_arg (ap, char *);
- g_ptr_array_add (args, string);
- if (store->capabilities & IMAP_CAPABILITY_LITERALPLUS)
- len += strlen (string) + 15;
- else
- len += strlen (string) * 2;
- start = p + 1;
- break;
-
- case '%':
- start = p;
- break;
-
- default:
- g_warning ("camel-imap-command is not printf. I don't "
- "know what '%%%c' means.", *p);
- start = *p ? p + 1 : p;
- break;
- }
- }
-
- /* Now write out the string */
- op = out = g_malloc (len + 1);
- p = start = fmt;
- i = 0;
- while (*p) {
- p = strchr (start, '%');
- if (!p) {
- strcpy (op, start);
- break;
- } else {
- strncpy (op, start, p - start);
- op += p - start;
- }
-
- switch (*++p) {
- case 'd':
- num = GPOINTER_TO_INT (args->pdata[i++]);
- op += sprintf (op, "%d", num);
- break;
-
- case 's':
- string = args->pdata[i++];
- op += sprintf (op, "%s", string);
- break;
-
- case 'S':
- string = args->pdata[i++];
- if (store->capabilities & IMAP_CAPABILITY_LITERALPLUS) {
- op += sprintf (op, "{%d+}\r\n%s",
- strlen (string), string);
- } else {
- char *quoted = imap_quote_string (string);
- op += sprintf (op, "%s", quoted);
- g_free (quoted);
- }
- break;
-
- default:
- *op++ = '%';
- *op++ = *p;
- }
-
- start = *p ? p + 1 : p;
- }
-
- return out;
-}
diff --git a/camel/providers/imap/camel-imap-command.h b/camel/providers/imap/camel-imap-command.h
deleted file mode 100644
index ba9ca7010a..0000000000
--- a/camel/providers/imap/camel-imap-command.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-imap-command.h: IMAP command sending/parsing routines */
-
-/*
- * Authors:
- * Dan Winship <danw@ximian.com>
- * Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright (C) 2000, 2001 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_IMAP_COMMAND_H
-#define CAMEL_IMAP_COMMAND_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <glib.h>
-#include "camel-imap-types.h"
-
-struct _CamelImapResponse {
- CamelFolder *folder;
- GPtrArray *untagged;
- char *status;
-};
-
-CamelImapResponse *camel_imap_command (CamelImapStore *store,
- CamelFolder *folder,
- CamelException *ex,
- const char *fmt, ...);
-CamelImapResponse *camel_imap_command_continuation (CamelImapStore *store,
- CamelException *ex,
- const char *cmdbuf);
-
-void camel_imap_response_free (CamelImapStore *store,
- CamelImapResponse *response);
-void camel_imap_response_free_without_processing(CamelImapStore *store,
- CamelImapResponse *response);
-char *camel_imap_response_extract (CamelImapStore *store,
- CamelImapResponse *response,
- const char *type,
- CamelException *ex);
-char *camel_imap_response_extract_continuation (CamelImapStore *store,
- CamelImapResponse *response,
- CamelException *ex);
-
-#endif /* CAMEL_IMAP_COMMAND_H */
diff --git a/camel/providers/imap/camel-imap-folder.c b/camel/providers/imap/camel-imap-folder.c
deleted file mode 100644
index 26410a7abf..0000000000
--- a/camel/providers/imap/camel-imap-folder.c
+++ /dev/null
@@ -1,1428 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-imap-folder.c: class for an imap folder */
-
-/*
- * Authors:
- * Dan Winship <danw@ximian.com>
- * Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright (C) 2000, 2001 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <dirent.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <fcntl.h>
-#include <ctype.h>
-
-#include "camel-imap-folder.h"
-#include "camel-imap-command.h"
-#include "camel-imap-message-cache.h"
-#include "camel-imap-search.h"
-#include "camel-imap-store.h"
-#include "camel-imap-summary.h"
-#include "camel-imap-utils.h"
-#include "camel-imap-wrapper.h"
-#include "string-utils.h"
-#include "camel-session.h"
-#include "camel-stream.h"
-#include "camel-stream-mem.h"
-#include "camel-stream-buffer.h"
-#include "camel-data-wrapper.h"
-#include "camel-mime-message.h"
-#include "camel-stream-filter.h"
-#include "camel-mime-filter-from.h"
-#include "camel-mime-filter-crlf.h"
-#include "camel-exception.h"
-#include "camel-mime-utils.h"
-#include "camel-imap-private.h"
-#include "camel-multipart.h"
-#include "camel-operation.h"
-
-#define CF_CLASS(o) (CAMEL_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(o)))
-static CamelDiscoFolderClass *disco_folder_class = NULL;
-
-static void imap_finalize (CamelObject *object);
-static void imap_rescan (CamelFolder *folder, int exists, CamelException *ex);
-static void imap_refresh_info (CamelFolder *folder, CamelException *ex);
-static void imap_sync_online (CamelFolder *folder, CamelException *ex);
-static void imap_sync_offline (CamelFolder *folder, CamelException *ex);
-static const char *imap_get_full_name (CamelFolder *folder);
-static void imap_expunge_uids_online (CamelFolder *folder, GPtrArray *uids, CamelException *ex);
-static void imap_expunge_uids_offline (CamelFolder *folder, GPtrArray *uids, CamelException *ex);
-static void imap_cache_message (CamelDiscoFolder *disco_folder, const char *uid, CamelException *ex);
-
-/* message manipulation */
-static CamelMimeMessage *imap_get_message (CamelFolder *folder, const gchar *uid,
- CamelException *ex);
-static char *imap_append_online (CamelFolder *folder, CamelMimeMessage *message,
- const CamelMessageInfo *info, CamelException *ex);
-static char *imap_append_offline (CamelFolder *folder, CamelMimeMessage *message,
- const CamelMessageInfo *info, CamelException *ex);
-static void imap_copy_online (CamelFolder *source, GPtrArray *uids,
- CamelFolder *destination, CamelException *ex);
-static void imap_copy_offline (CamelFolder *source, GPtrArray *uids,
- CamelFolder *destination, CamelException *ex);
-static void imap_move_messages_to (CamelFolder *source, GPtrArray *uids,
- CamelFolder *destination, CamelException *ex);
-
-/* searching */
-static GPtrArray *imap_search_by_expression (CamelFolder *folder, const char *expression, CamelException *ex);
-static void imap_search_free (CamelFolder *folder, GPtrArray *uids);
-
-GData *parse_fetch_response (CamelImapFolder *imap_folder, char *msg_att);
-
-static void
-camel_imap_folder_class_init (CamelImapFolderClass *camel_imap_folder_class)
-{
- CamelFolderClass *camel_folder_class = CAMEL_FOLDER_CLASS (camel_imap_folder_class);
- CamelDiscoFolderClass *camel_disco_folder_class = CAMEL_DISCO_FOLDER_CLASS (camel_imap_folder_class);
-
- disco_folder_class = CAMEL_DISCO_FOLDER_CLASS (camel_type_get_global_classfuncs (camel_disco_folder_get_type ()));
-
- /* virtual method overload */
- camel_folder_class->get_full_name = imap_get_full_name;
- camel_folder_class->get_message = imap_get_message;
- camel_folder_class->move_messages_to = imap_move_messages_to;
- camel_folder_class->search_by_expression = imap_search_by_expression;
- camel_folder_class->search_free = imap_search_free;
-
- camel_disco_folder_class->refresh_info_online = imap_refresh_info;
- camel_disco_folder_class->sync_online = imap_sync_online;
- camel_disco_folder_class->sync_offline = imap_sync_offline;
- camel_disco_folder_class->expunge_uids_online = imap_expunge_uids_online;
- camel_disco_folder_class->expunge_uids_offline = imap_expunge_uids_offline;
- camel_disco_folder_class->append_online = imap_append_online;
- camel_disco_folder_class->append_offline = imap_append_offline;
- camel_disco_folder_class->copy_online = imap_copy_online;
- camel_disco_folder_class->copy_offline = imap_copy_offline;
- camel_disco_folder_class->cache_message = imap_cache_message;
-}
-
-static void
-camel_imap_folder_init (gpointer object, gpointer klass)
-{
- CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (object);
- CamelFolder *folder = CAMEL_FOLDER (object);
-
- folder->has_summary_capability = TRUE;
- folder->has_search_capability = TRUE;
-
- imap_folder->priv = g_malloc0(sizeof(*imap_folder->priv));
-#ifdef ENABLE_THREADS
- imap_folder->priv->search_lock = e_mutex_new(E_MUTEX_SIMPLE);
- imap_folder->priv->cache_lock = e_mutex_new(E_MUTEX_REC);
-#endif
-}
-
-CamelType
-camel_imap_folder_get_type (void)
-{
- static CamelType camel_imap_folder_type = CAMEL_INVALID_TYPE;
-
- if (camel_imap_folder_type == CAMEL_INVALID_TYPE) {
- camel_imap_folder_type =
- camel_type_register (CAMEL_DISCO_FOLDER_TYPE, "CamelImapFolder",
- sizeof (CamelImapFolder),
- sizeof (CamelImapFolderClass),
- (CamelObjectClassInitFunc) camel_imap_folder_class_init,
- NULL,
- (CamelObjectInitFunc) camel_imap_folder_init,
- (CamelObjectFinalizeFunc) imap_finalize);
- }
-
- return camel_imap_folder_type;
-}
-
-CamelFolder *
-camel_imap_folder_new (CamelStore *parent, const char *folder_name,
- const char *folder_dir, CamelException *ex)
-{
- CamelImapStore *imap_store = CAMEL_IMAP_STORE (parent);
- CamelFolder *folder;
- CamelImapFolder *imap_folder;
- const char *short_name;
- char *summary_file;
-
- if (camel_mkdir_hier (folder_dir, S_IRWXU) != 0) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not create directory %s: %s"),
- folder_dir, g_strerror (errno));
- return NULL;
- }
-
- folder = CAMEL_FOLDER (camel_object_new (camel_imap_folder_get_type ()));
- short_name = strrchr (folder_name, imap_store->dir_sep);
- if (short_name)
- short_name++;
- else
- short_name = folder_name;
- camel_folder_construct (folder, parent, folder_name, short_name);
-
- summary_file = g_strdup_printf ("%s/summary", folder_dir);
- folder->summary = camel_imap_summary_new (summary_file);
- g_free (summary_file);
- if (!folder->summary) {
- camel_object_unref (CAMEL_OBJECT (folder));
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not load summary for %s"),
- folder_name);
- return NULL;
- }
-
- imap_folder = CAMEL_IMAP_FOLDER (folder);
- imap_folder->cache = camel_imap_message_cache_new (folder_dir, folder->summary, ex);
- if (!imap_folder->cache) {
- camel_object_unref (CAMEL_OBJECT (folder));
- return NULL;
- }
-
- return folder;
-}
-
-/* Called with the store's command_lock locked */
-void
-camel_imap_folder_selected (CamelFolder *folder, CamelImapResponse *response,
- CamelException *ex)
-{
- CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
- CamelImapSummary *imap_summary = CAMEL_IMAP_SUMMARY (folder->summary);
- unsigned long exists = 0, validity = 0, val, uid;
- CamelMessageInfo *info;
- GData *fetch_data;
- int i, count;
- char *resp;
-
- CAMEL_IMAP_STORE_ASSERT_LOCKED (folder->parent_store, command_lock);
-
- count = camel_folder_summary_count (folder->summary);
-
- for (i = 0; i < response->untagged->len; i++) {
- resp = response->untagged->pdata[i] + 2;
- if (!g_strncasecmp (resp, "FLAGS ", 6) &&
- !folder->permanent_flags) {
- resp += 6;
- folder->permanent_flags = imap_parse_flag_list (&resp);
- } else if (!g_strncasecmp (resp, "OK [PERMANENTFLAGS ", 19)) {
- resp += 19;
- folder->permanent_flags = imap_parse_flag_list (&resp);
- } else if (!g_strncasecmp (resp, "OK [UIDVALIDITY ", 16)) {
- validity = strtoul (resp + 16, NULL, 10);
- } else if (isdigit ((unsigned char)*resp)) {
- unsigned long num = strtoul (resp, &resp, 10);
-
- if (!g_strncasecmp (resp, " EXISTS", 7)) {
- exists = num;
- /* Remove from the response so nothing
- * else tries to interpret it.
- */
- g_free (response->untagged->pdata[i]);
- g_ptr_array_remove_index (response->untagged, i--);
- }
- }
- }
-
- if (!imap_summary->validity)
- imap_summary->validity = validity;
- else if (validity != imap_summary->validity) {
- imap_summary->validity = validity;
- camel_folder_summary_clear (folder->summary);
- camel_imap_message_cache_clear (imap_folder->cache);
- camel_imap_folder_changed (folder, exists, NULL, ex);
- return;
- }
-
- /* If we've lost messages, we have to rescan everything */
- if (exists < count) {
- imap_rescan (folder, exists, ex);
- return;
- }
-
- if (count != 0) {
- CamelImapStore *store = CAMEL_IMAP_STORE (folder->parent_store);
-
- /* Similarly, if the UID of the highest message we
- * know about has changed, then that indicates that
- * messages have been both added and removed, so we
- * have to rescan to find the removed ones. (We pass
- * NULL for the folder since we know that this folder
- * is selected, and we don't want camel_imap_command
- * to worry about it.)
- */
- response = camel_imap_command (store, NULL, ex, "FETCH %d UID", count);
- if (!response)
- return;
- uid = 0;
- for (i = 0; i < response->untagged->len; i++) {
- resp = response->untagged->pdata[i];
- val = strtoul (resp + 2, &resp, 10);
- if (val == 0)
- continue;
- if (!g_strcasecmp (resp, " EXISTS")) {
- /* Another one?? */
- exists = val;
- continue;
- }
- if (uid != 0 || val != count || g_strncasecmp (resp, " FETCH (", 8) != 0)
- continue;
-
- fetch_data = parse_fetch_response (imap_folder, resp + 7);
- uid = strtoul (g_datalist_get_data (&fetch_data, "UID"), NULL, 10);
- g_datalist_clear (&fetch_data);
- }
- camel_imap_response_free_without_processing (store, response);
-
- info = camel_folder_summary_index (folder->summary, count - 1);
- val = strtoul (camel_message_info_uid (info), NULL, 10);
- camel_folder_summary_info_free (folder->summary, info);
- if (uid == 0 || uid != val) {
- imap_rescan (folder, exists, ex);
- return;
- }
- }
-
- /* OK. So now we know that no messages have been expunged. Whew.
- * Now see if messages have been added.
- */
- if (exists > count)
- camel_imap_folder_changed (folder, exists, NULL, ex);
-
- /* And we're done. */
-}
-
-static void
-imap_finalize (CamelObject *object)
-{
- CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (object);
-
- if (imap_folder->search)
- camel_object_unref (CAMEL_OBJECT (imap_folder->search));
- if (imap_folder->cache)
- camel_object_unref (CAMEL_OBJECT (imap_folder->cache));
-
-#ifdef ENABLE_THREADS
- e_mutex_destroy(imap_folder->priv->search_lock);
- e_mutex_destroy(imap_folder->priv->cache_lock);
-#endif
- g_free(imap_folder->priv);
-}
-
-static void
-imap_refresh_info (CamelFolder *folder, CamelException *ex)
-{
- if (camel_disco_store_status (CAMEL_DISCO_STORE (folder->parent_store)) == CAMEL_DISCO_STORE_OFFLINE)
- return;
-
- CAMEL_IMAP_STORE_LOCK (folder->parent_store, command_lock);
- imap_rescan (folder, camel_folder_summary_count (folder->summary), ex);
- CAMEL_IMAP_STORE_UNLOCK (folder->parent_store, command_lock);
-}
-
-/* Called with the store's command_lock locked */
-static void
-imap_rescan (CamelFolder *folder, int exists, CamelException *ex)
-{
- CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
- CamelImapStore *store = CAMEL_IMAP_STORE (folder->parent_store);
- CamelImapResponse *response;
- struct {
- char *uid;
- guint32 flags;
- } *new = NULL;
- char *resp;
- int i, j, seq, summary_len;
- CamelMessageInfo *info;
- CamelImapMessageInfo *iinfo;
- GArray *removed;
- GData *fetch_data;
-
- CAMEL_IMAP_STORE_ASSERT_LOCKED (store, command_lock);
-
- camel_operation_start(NULL, _("Scanning IMAP folder"));
-
- /* Get UIDs and flags of all messages. */
- if (exists > 0) {
- response = camel_imap_command (store, folder, ex,
- "FETCH 1:%d (UID FLAGS)",
- exists);
- if (!response)
- return;
-
- new = g_malloc0 (exists * sizeof (*new));
- for (i = 0; i < response->untagged->len; i++) {
- resp = response->untagged->pdata[i];
-
- seq = strtoul (resp + 2, &resp, 10);
- if (g_strncasecmp (resp, " FETCH (", 8) != 0)
- continue;
-
- fetch_data = parse_fetch_response (imap_folder, resp + 7);
- new[seq - 1].uid = g_strdup (g_datalist_get_data (&fetch_data, "UID"));
- new[seq - 1].flags = GPOINTER_TO_UINT (g_datalist_get_data (&fetch_data, "FLAGS"));
- g_datalist_clear (&fetch_data);
- g_ptr_array_remove_index_fast (response->untagged, i--);
- }
- camel_imap_response_free_without_processing (store, response);
- }
-
- /* If we find a UID in the summary that doesn't correspond to
- * the UID in the folder, that it means the message was
- * deleted on the server, so we remove it from the summary.
- */
- removed = g_array_new (FALSE, FALSE, sizeof (int));
- summary_len = camel_folder_summary_count (folder->summary);
- for (i = 0; i < summary_len && i < exists; i++) {
- int pc = (i*100)/MIN(summary_len, exists);
-
- camel_operation_progress(NULL, pc);
-
- /* Shouldn't happen, but... */
- if (!new[i].uid)
- continue;
-
- info = camel_folder_summary_index (folder->summary, i);
- iinfo = (CamelImapMessageInfo *)info;
-
- if (strcmp (camel_message_info_uid (info), new[i].uid) != 0) {
- seq = i + 1;
- g_array_append_val (removed, seq);
- i--;
- summary_len--;
- continue;
- }
-
- /* Update summary flags */
- if (new[i].flags != iinfo->server_flags) {
- guint32 server_set, server_cleared;
-
- server_set = new[i].flags & ~iinfo->server_flags;
- server_cleared = iinfo->server_flags & ~new[i].flags;
-
- info->flags = (info->flags | server_set) & ~server_cleared;
- iinfo->server_flags = new[i].flags;
-
- camel_object_trigger_event (CAMEL_OBJECT (folder),
- "message_changed",
- g_strdup (new[i].uid));
- }
-
- camel_folder_summary_info_free(folder->summary, info);
-
- g_free (new[i].uid);
- }
-
- /* Remove any leftover cached summary messages. */
- for (j = i + 1; j < summary_len; j++) {
- seq = j - removed->len;
- g_array_append_val (removed, seq);
- }
-
- /* Free remaining memory. */
- while (i < exists)
- g_free (new[i++].uid);
- g_free (new);
-
- /* And finally update the summary. */
- camel_imap_folder_changed (folder, exists, removed, ex);
- g_array_free (removed, TRUE);
-
- camel_operation_end(NULL);
-}
-
-/* Find all messages in @folder with flags matching @flags and @mask.
- * If no messages match, returns %NULL. Otherwise, returns an array of
- * CamelMessageInfo and sets *@set to a message set corresponding the
- * UIDs of the matched messages. The caller must free the infos, the
- * array, and the set string.
- */
-static GPtrArray *
-get_matching (CamelFolder *folder, guint32 flags, guint32 mask, char **set)
-{
- GPtrArray *matches;
- CamelMessageInfo *info;
- int i, max, range;
- GString *gset;
-
- matches = g_ptr_array_new ();
- gset = g_string_new ("");
- max = camel_folder_summary_count (folder->summary);
- range = -1;
- for (i = 0; i < max; i++) {
- info = camel_folder_summary_index (folder->summary, i);
- if (!info)
- continue;
- if ((info->flags & mask) != flags) {
- camel_folder_summary_info_free (folder->summary, info);
- if (range != -1) {
- if (range != i - 1) {
- info = matches->pdata[matches->len - 1];
- g_string_sprintfa (gset, ":%s", camel_message_info_uid (info));
- }
- range = -1;
- }
- continue;
- }
-
- g_ptr_array_add (matches, info);
- if (range != -1)
- continue;
- range = i;
- if (gset->len)
- g_string_append_c (gset, ',');
- g_string_sprintfa (gset, "%s", camel_message_info_uid (info));
- }
- if (range != -1 && range != max - 1) {
- info = matches->pdata[matches->len - 1];
- g_string_sprintfa (gset, ":%s", camel_message_info_uid (info));
- }
-
- if (matches->len) {
- *set = gset->str;
- g_string_free (gset, FALSE);
- return matches;
- } else {
- g_string_free (gset, TRUE);
- g_ptr_array_free (matches, TRUE);
- return NULL;
- }
-}
-
-static void
-imap_sync_offline (CamelFolder *folder, CamelException *ex)
-{
- camel_folder_summary_save (folder->summary);
-}
-
-static void
-imap_sync_online (CamelFolder *folder, CamelException *ex)
-{
- CamelImapStore *store = CAMEL_IMAP_STORE (folder->parent_store);
- CamelImapResponse *response = NULL;
- CamelMessageInfo *info;
- GPtrArray *matches;
- char *set, *flaglist;
- int i, j, max;
-
- CAMEL_IMAP_STORE_LOCK (store, command_lock);
-
- /* Find a message with changed flags, find all of the other
- * messages like it, sync them as a group, mark them as
- * updated, and continue.
- */
- max = camel_folder_summary_count (folder->summary);
- for (i = 0; i < max; i++) {
- info = camel_folder_summary_index (folder->summary, i);
- if (!info)
- continue;
- if (!(info->flags & CAMEL_MESSAGE_FOLDER_FLAGGED)) {
- camel_folder_summary_info_free (folder->summary, info);
- continue;
- }
-
- flaglist = imap_create_flag_list (info->flags);
- matches = get_matching (folder, info->flags & (CAMEL_IMAP_SERVER_FLAGS | CAMEL_MESSAGE_FOLDER_FLAGGED),
- CAMEL_IMAP_SERVER_FLAGS | CAMEL_MESSAGE_FOLDER_FLAGGED, &set);
- camel_folder_summary_info_free (folder->summary, info);
-
- response = camel_imap_command (store, folder, ex,
- "UID STORE %s FLAGS.SILENT %s",
- set, flaglist);
- g_free (set);
- g_free (flaglist);
- if (response)
- camel_imap_response_free (store, response);
- if (!camel_exception_is_set (ex)) {
- for (j = 0; j < matches->len; j++) {
- info = matches->pdata[j];
- info->flags &= ~CAMEL_MESSAGE_FOLDER_FLAGGED;
- ((CamelImapMessageInfo*)info)->server_flags =
- info->flags & CAMEL_IMAP_SERVER_FLAGS;
- }
- camel_folder_summary_touch (folder->summary);
- }
- for (j = 0; j < matches->len; j++) {
- info = matches->pdata[j];
- camel_folder_summary_info_free (folder->summary, info);
- }
- g_ptr_array_free (matches, TRUE);
-
- if (camel_exception_is_set (ex)) {
- CAMEL_IMAP_STORE_UNLOCK (store, command_lock);
- return;
- }
- }
-
- if (!response) {
- /* We didn't sync anything... Do a noop so the server
- * gets a chance to tell us any news it has.
- */
- response = camel_imap_command (store, folder, ex, "NOOP");
- camel_imap_response_free (store, response);
- }
-
- /* Save the summary */
- imap_sync_offline (folder, ex);
-
- CAMEL_IMAP_STORE_UNLOCK (store, command_lock);
-}
-
-static void
-imap_expunge_uids_offline (CamelFolder *folder, GPtrArray *uids, CamelException *ex)
-{
- /* Fail */
- camel_disco_store_check_online (CAMEL_DISCO_STORE (folder->parent_store), ex);
-}
-
-static void
-imap_expunge_uids_online (CamelFolder *folder, GPtrArray *uids, CamelException *ex)
-{
- CamelImapStore *store = CAMEL_IMAP_STORE (folder->parent_store);
- CamelImapResponse *response;
- char *set;
-
- set = imap_uid_array_to_set (folder->summary, uids);
- CAMEL_IMAP_STORE_LOCK (store, command_lock);
- response = camel_imap_command (store, folder, ex,
- "UID STORE %s +FLAGS.SILENT \\Deleted",
- set);
- if (response)
- camel_imap_response_free (store, response);
- if (camel_exception_is_set (ex)) {
- CAMEL_IMAP_STORE_UNLOCK (store, command_lock);
- g_free (set);
- return;
- }
-
- if (store->capabilities & IMAP_CAPABILITY_UIDPLUS) {
- response = camel_imap_command (store, folder, ex,
- "UID EXPUNGE %s", set);
- } else
- response = camel_imap_command (store, folder, ex, "EXPUNGE");
- if (response)
- camel_imap_response_free (store, response);
- CAMEL_IMAP_STORE_UNLOCK (store, command_lock);
-}
-
-static const char *
-imap_get_full_name (CamelFolder *folder)
-{
- CamelImapStore *store = CAMEL_IMAP_STORE (folder->parent_store);
- char *name;
- int len;
-
- name = folder->full_name;
- if (store->namespace && *store->namespace) {
- len = strlen (store->namespace);
- if (!strncmp (store->namespace, folder->full_name, len) &&
- strlen (folder->full_name) > len)
- name += len;
- if (*name == store->dir_sep)
- name++;
- }
- return name;
-}
-
-static char *
-imap_append_offline (CamelFolder *folder, CamelMimeMessage *message,
- const CamelMessageInfo *info, CamelException *ex)
-{
- /* Fail */
- camel_disco_store_check_online (CAMEL_DISCO_STORE (folder->parent_store), ex);
- return NULL;
-}
-
-static char *
-imap_append_online (CamelFolder *folder, CamelMimeMessage *message,
- const CamelMessageInfo *info, CamelException *ex)
-{
- CamelImapStore *store = CAMEL_IMAP_STORE (folder->parent_store);
- CamelImapResponse *response;
- CamelStream *memstream;
- CamelMimeFilter *crlf_filter;
- CamelStreamFilter *streamfilter;
- GByteArray *ba;
- char *flagstr, *result, *uid = NULL;
-
- /* create flag string param */
- if (info && info->flags)
- flagstr = imap_create_flag_list (info->flags);
- else
- flagstr = NULL;
-
- /* FIXME: We could avoid this if we knew how big the message was. */
- memstream = camel_stream_mem_new ();
- ba = g_byte_array_new ();
- camel_stream_mem_set_byte_array (CAMEL_STREAM_MEM (memstream), ba);
-
- streamfilter = camel_stream_filter_new_with_stream (memstream);
- crlf_filter = camel_mime_filter_crlf_new (
- CAMEL_MIME_FILTER_CRLF_ENCODE,
- CAMEL_MIME_FILTER_CRLF_MODE_CRLF_ONLY);
- camel_stream_filter_add (streamfilter, crlf_filter);
- camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (message),
- CAMEL_STREAM (streamfilter));
- camel_object_unref (CAMEL_OBJECT (streamfilter));
- camel_object_unref (CAMEL_OBJECT (crlf_filter));
- camel_object_unref (CAMEL_OBJECT (memstream));
-
- response = camel_imap_command (store, NULL, ex, "APPEND %S%s%s {%d}",
- folder->full_name, flagstr ? " " : "",
- flagstr ? flagstr : "", ba->len);
- g_free (flagstr);
-
- if (!response) {
- g_byte_array_free (ba, TRUE);
- return NULL;
- }
- result = camel_imap_response_extract_continuation (store, response, ex);
- if (!result) {
- g_byte_array_free (ba, TRUE);
- return NULL;
- }
- g_free (result);
-
- /* send the rest of our data - the mime message */
- g_byte_array_append (ba, "\0", 3);
- response = camel_imap_command_continuation (store, ex, ba->data);
- g_byte_array_free (ba, TRUE);
- if (!response)
- return NULL;
-
- if (store->capabilities & IMAP_CAPABILITY_UIDPLUS) {
- uid = strstrcase (response->status, "[APPENDUID ");
- if (uid)
- uid = strchr (uid + 11, ' ');
- if (uid)
- uid = g_strndup (uid + 1, strcspn (uid + 1, "]"));
- if (uid) {
- /* Make sure it's a number */
- if (strtoul (uid, &result, 10) != 0 && !*result) {
- /* OK. Cache the data. */
- camel_imap_message_cache_insert_wrapper (
- CAMEL_IMAP_FOLDER (folder)->cache,
- uid, "", CAMEL_DATA_WRAPPER (message));
- } else {
- g_free (uid);
- uid = NULL;
- }
- }
- }
-
- camel_imap_response_free (store, response);
- return uid;
-}
-
-static void
-imap_copy_offline (CamelFolder *source, GPtrArray *uids,
- CamelFolder *destination, CamelException *ex)
-{
- /* Fail */
- camel_disco_store_check_online (CAMEL_DISCO_STORE (source->parent_store), ex);
-}
-
-static void
-handle_copyuid (CamelImapResponse *response, CamelFolder *source,
- CamelFolder *destination)
-{
- CamelImapMessageCache *scache = CAMEL_IMAP_FOLDER (source)->cache;
- CamelImapMessageCache *dcache = CAMEL_IMAP_FOLDER (destination)->cache;
- char *validity, *srcset, *destset;
- GPtrArray *src, *dest;
- int i;
-
- validity = strstrcase (response->status, "[COPYUID ");
- if (!validity)
- return;
- validity += 9;
- if (strtoul (validity, NULL, 10) !=
- CAMEL_IMAP_SUMMARY (destination->summary)->validity)
- return;
-
- srcset = strchr (validity, ' ');
- if (!srcset++)
- goto lose;
- destset = strchr (srcset, ' ');
- if (!destset++)
- goto lose;
-
- src = imap_uid_set_to_array (source->summary, srcset);
- dest = imap_uid_set_to_array (destination->summary, destset);
-
- if (src && dest && src->len == dest->len) {
- /* We don't have to worry about deadlocking on the
- * cache locks here, because we've got the store's
- * command lock too, so no one else could be here.
- */
- CAMEL_IMAP_FOLDER_LOCK (source, cache_lock);
- CAMEL_IMAP_FOLDER_LOCK (destination, cache_lock);
- for (i = 0; i < src->len; i++) {
- camel_imap_message_cache_copy (scache, src->pdata[i],
- dcache, dest->pdata[i]);
- }
- CAMEL_IMAP_FOLDER_UNLOCK (source, cache_lock);
- CAMEL_IMAP_FOLDER_UNLOCK (destination, cache_lock);
-
- imap_uid_array_free (src);
- imap_uid_array_free (dest);
- return;
- }
-
- imap_uid_array_free (src);
- imap_uid_array_free (dest);
- lose:
- g_warning ("Bad COPYUID response from server");
-}
-
-static void
-imap_copy_online (CamelFolder *source, GPtrArray *uids,
- CamelFolder *destination, CamelException *ex)
-{
- CamelImapStore *store = CAMEL_IMAP_STORE (source->parent_store);
- CamelImapResponse *response;
- char *set;
-
- /* Sync message flags if needed. */
- imap_sync_online (source, ex);
- if (camel_exception_is_set (ex))
- return;
-
- /* Now copy the messages */
- set = imap_uid_array_to_set (source->summary, uids);
- response = camel_imap_command (store, source, ex, "UID COPY %s %S",
- set, destination->full_name);
- if (response && (store->capabilities & IMAP_CAPABILITY_UIDPLUS))
- handle_copyuid (response, source, destination);
-
- camel_imap_response_free (store, response);
- g_free (set);
-
- if (camel_exception_is_set (ex))
- return;
-
- /* Force the destination folder to notice its new messages. */
- response = camel_imap_command (store, destination, NULL, "NOOP");
- camel_imap_response_free (store, response);
-}
-
-static void
-imap_move_messages_to (CamelFolder *source, GPtrArray *uids,
- CamelFolder *destination, CamelException *ex)
-{
- int i;
-
- /* do it this way (as opposed to camel_folder_copy_messages_to)
- * to avoid locking issues */
- CF_CLASS (source)->copy_messages_to (source, uids, destination, ex);
- if (camel_exception_is_set (ex))
- return;
-
- for (i = 0; i < uids->len; i++)
- camel_folder_delete_message (source, uids->pdata[i]);
-}
-
-static GPtrArray *
-imap_search_by_expression (CamelFolder *folder, const char *expression, CamelException *ex)
-{
- CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
- GPtrArray *matches, *summary;
-
- if (!camel_disco_store_check_online (CAMEL_DISCO_STORE (folder->parent_store), ex))
- return NULL;
-
- /* we could get around this by creating a new search object each time,
- but i doubt its worth it since any long operation would lock the
- command channel too */
- CAMEL_IMAP_FOLDER_LOCK(folder, search_lock);
-
- if (!imap_folder->search)
- imap_folder->search = camel_imap_search_new ();
-
- camel_folder_search_set_folder (imap_folder->search, folder);
- summary = camel_folder_get_summary(folder);
- camel_folder_search_set_summary(imap_folder->search, summary);
- matches = camel_folder_search_execute_expression (imap_folder->search, expression, ex);
-
- CAMEL_IMAP_FOLDER_UNLOCK(folder, search_lock);
-
- camel_folder_free_summary(folder, summary);
-
- return matches;
-}
-
-static void
-imap_search_free (CamelFolder *folder, GPtrArray *uids)
-{
- CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
-
- g_return_if_fail (imap_folder->search);
-
- CAMEL_IMAP_FOLDER_LOCK(folder, search_lock);
-
- camel_folder_search_free_result (imap_folder->search, uids);
-
- CAMEL_IMAP_FOLDER_UNLOCK(folder, search_lock);
-}
-
-static CamelMimeMessage *get_message (CamelImapFolder *imap_folder,
- const char *uid,
- const char *part_specifier,
- CamelMessageContentInfo *ci,
- CamelException *ex);
-
-/* Fetch the contents of the MIME part indicated by @ci, which is part
- * of message @uid in @folder.
- */
-static CamelDataWrapper *
-get_content (CamelImapFolder *imap_folder, const char *uid,
- const char *part_spec, CamelMimePart *part,
- CamelMessageContentInfo *ci, CamelException *ex)
-{
- CamelDataWrapper *content;
- CamelStream *stream;
- char *child_spec;
-
- /* There are three cases: multipart, message/rfc822, and "other" */
-
- if (header_content_type_is (ci->type, "multipart", "*")) {
- CamelMultipart *body_mp;
- int speclen, num;
-
- body_mp = camel_multipart_new ();
- camel_data_wrapper_set_mime_type_field (
- CAMEL_DATA_WRAPPER (body_mp), ci->type);
- camel_multipart_set_boundary (body_mp, NULL);
-
- speclen = strlen (part_spec);
- child_spec = g_malloc (speclen + 15);
- memcpy (child_spec, part_spec, speclen);
- if (speclen > 0)
- child_spec[speclen++] = '.';
-
- ci = ci->childs;
- num = 1;
- while (ci) {
- sprintf (child_spec + speclen, "%d.MIME", num++);
- stream = camel_imap_folder_fetch_data (imap_folder, uid, child_spec, FALSE, ex);
- if (stream) {
- part = camel_mime_part_new ();
- camel_data_wrapper_construct_from_stream (CAMEL_DATA_WRAPPER (part), stream);
- camel_object_unref (CAMEL_OBJECT (stream));
- *(strchr (child_spec + speclen, '.')) = '\0';
- content = get_content (imap_folder, uid, child_spec, part, ci, ex);
- }
- if (!stream || !content) {
- g_free (child_spec);
- camel_object_unref (CAMEL_OBJECT (body_mp));
- return NULL;
- }
-
- camel_medium_set_content_object (CAMEL_MEDIUM (part), content);
- camel_object_unref (CAMEL_OBJECT (content));
- camel_multipart_add_part (body_mp, part);
- camel_object_unref (CAMEL_OBJECT (part));
-
- ci = ci->next;
- }
- g_free (child_spec);
-
- return (CamelDataWrapper *)body_mp;
- } else if (header_content_type_is (ci->type, "message", "rfc822")) {
- return (CamelDataWrapper *)
- get_message (imap_folder, uid, part_spec, ci->childs, ex);
- } else {
- if (!ci->parent || header_content_type_is (ci->parent->type, "message", "rfc822"))
- child_spec = g_strdup_printf ("%s%s1", part_spec, *part_spec ? "." : "");
- else
- child_spec = g_strdup (part_spec);
-
- content = camel_imap_wrapper_new (imap_folder, ci->type, uid, child_spec, part);
- g_free (child_spec);
- return content;
- }
-}
-
-static CamelMimeMessage *
-get_message (CamelImapFolder *imap_folder, const char *uid,
- const char *part_spec, CamelMessageContentInfo *ci,
- CamelException *ex)
-{
- CamelImapStore *store = CAMEL_IMAP_STORE (CAMEL_FOLDER (imap_folder)->parent_store);
- CamelDataWrapper *content;
- CamelMimeMessage *msg;
- CamelStream *stream;
- char *section_text;
-
- section_text = g_strdup_printf ("%s%s%s", part_spec, *part_spec ? "." : "",
- store->server_level >= IMAP_LEVEL_IMAP4REV1 ? "HEADER" : "0");
- stream = camel_imap_folder_fetch_data (imap_folder, uid, section_text, FALSE, ex);
- g_free (section_text);
- if (!stream)
- return NULL;
-
- msg = camel_mime_message_new ();
- camel_data_wrapper_construct_from_stream (CAMEL_DATA_WRAPPER (msg), stream);
- camel_object_unref (CAMEL_OBJECT (stream));
-
- content = get_content (imap_folder, uid, part_spec, CAMEL_MIME_PART (msg), ci, ex);
- if (!content) {
- camel_object_unref (CAMEL_OBJECT (msg));
- return NULL;
- }
-
- camel_medium_set_content_object (CAMEL_MEDIUM (msg), content);
- camel_object_unref (CAMEL_OBJECT (content));
-
- return msg;
-}
-
-/* FIXME: I pulled this number out of my butt. */
-#define IMAP_SMALL_BODY_SIZE 5120
-
-static CamelMimeMessage *
-imap_get_message (CamelFolder *folder, const char *uid, CamelException *ex)
-{
- CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
- CamelImapStore *store = CAMEL_IMAP_STORE (folder->parent_store);
- CamelMessageInfo *mi;
- CamelMimeMessage *msg;
- CamelStream *stream = NULL;
-
- mi = camel_folder_summary_uid (folder->summary, uid);
- g_return_val_if_fail (mi != NULL, NULL);
-
- /* If the message is small, or the server doesn't support
- * IMAP4rev1, or we already have the whole thing cached,
- * fetch it in one piece.
- */
- if (mi->size < IMAP_SMALL_BODY_SIZE ||
- store->server_level < IMAP_LEVEL_IMAP4REV1 ||
- (stream = camel_imap_folder_fetch_data (imap_folder, uid, "", TRUE, NULL))) {
- camel_folder_summary_info_free (folder->summary, mi);
- if (!stream)
- stream = camel_imap_folder_fetch_data (imap_folder, uid, "", FALSE, ex);
- if (!stream)
- return NULL;
- msg = camel_mime_message_new ();
- camel_data_wrapper_construct_from_stream (CAMEL_DATA_WRAPPER (msg), stream);
- camel_object_unref (CAMEL_OBJECT (stream));
- return msg;
- }
-
- /* For larger messages, fetch the structure and build a message
- * with offline parts. (We check mi->content->type rather than
- * mi->content because camel_folder_summary_info_new always creates
- * an empty content struct.)
- */
- if (!mi->content->type) {
- CamelImapResponse *response;
- GData *fetch_data;
- char *body, *found_uid;
- int i;
-
- if (camel_disco_store_status (CAMEL_DISCO_STORE (store)) == CAMEL_DISCO_STORE_OFFLINE) {
- camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("This message is not currently available"));
- return NULL;
- }
-
- response = camel_imap_command (store, folder, ex,
- "UID FETCH %s BODY", uid);
- if (!response) {
- camel_folder_summary_info_free (folder->summary, mi);
- return NULL;
- }
-
- for (i = 0, body = NULL; i < response->untagged->len; i++) {
- fetch_data = parse_fetch_response (imap_folder, response->untagged->pdata[i]);
- found_uid = g_datalist_get_data (&fetch_data, "UID");
- body = g_datalist_get_data (&fetch_data, "BODY");
- if (found_uid && body && !strcmp (found_uid, uid))
- break;
- g_datalist_clear (&fetch_data);
- body = NULL;
- }
-
- if (body)
- imap_parse_body (&body, folder, mi->content);
- g_datalist_clear (&fetch_data);
- camel_imap_response_free (store, response);
-
- if (!mi->content->type) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("Could not find message body in FETCH response."));
- camel_folder_summary_info_free (folder->summary, mi);
- return NULL;
- }
- }
-
- msg = get_message (imap_folder, uid, "", mi->content, ex);
- camel_folder_summary_info_free (folder->summary, mi);
-
- return msg;
-}
-
-static void
-imap_cache_message (CamelDiscoFolder *disco_folder, const char *uid,
- CamelException *ex)
-{
- CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (disco_folder);
- CamelStream *stream;
-
- stream = camel_imap_folder_fetch_data (imap_folder, uid, "", FALSE, ex);
- if (stream)
- camel_object_unref (CAMEL_OBJECT (stream));
-}
-
-static void
-imap_update_summary (CamelFolder *folder,
- CamelFolderChangeInfo *changes,
- CamelException *ex)
-{
- CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
- CamelImapStore *store = CAMEL_IMAP_STORE (folder->parent_store);
- CamelImapResponse *response;
- GPtrArray *lines, *messages;
- char *p, *uid;
- int i, seq, first, exists = 0;
- CamelMimeMessage *msg;
- CamelMessageInfo *mi;
- GData *fetch_data;
- CamelStream *stream;
-
- CAMEL_IMAP_STORE_ASSERT_LOCKED (store, command_lock);
-
- first = camel_folder_summary_count (folder->summary) + 1;
-
- response = camel_imap_command (store, folder, ex, "FETCH %d:* (UID FLAGS RFC822.SIZE)", first);
- if (!response)
- return;
-
- /* Walk through the responses, looking for UIDs, and make sure
- * we have those headers cached.
- */
- messages = g_ptr_array_new ();
- lines = response->untagged;
- for (i = 0; i < lines->len; i++) {
- p = lines->pdata[i];
- if (*p++ != '*' || *p++ != ' ') {
- g_ptr_array_remove_index_fast (lines, i--);
- continue;
- }
- seq = strtoul (p, &p, 10);
- if (!g_strcasecmp (p, " EXISTS")) {
- exists = seq;
- g_ptr_array_remove_index_fast (lines, i--);
- continue;
- }
- if (!seq || seq < first || g_strncasecmp (p, " FETCH (", 8) != 0) {
- g_ptr_array_remove_index_fast (lines, i--);
- continue;
- }
-
- if (seq - first >= messages->len)
- g_ptr_array_set_size (messages, seq - first + 1);
-
- fetch_data = parse_fetch_response (imap_folder, p + 7);
- uid = g_datalist_get_data (&fetch_data, "UID");
- if (uid) {
- stream = camel_imap_folder_fetch_data (
- imap_folder, uid,
- store->server_level >= IMAP_LEVEL_IMAP4REV1 ?
- "HEADER" : "0", FALSE, ex);
- if (!stream) {
- camel_imap_response_free_without_processing (store, response);
- /* XXX messages */
- return;
- }
-
- msg = camel_mime_message_new ();
- camel_data_wrapper_construct_from_stream (CAMEL_DATA_WRAPPER (msg), stream);
- camel_object_unref (CAMEL_OBJECT (stream));
- mi = camel_folder_summary_info_new_from_message (folder->summary, msg);
- camel_object_unref (CAMEL_OBJECT (msg));
-
- messages->pdata[seq - first] = mi;
- }
- g_datalist_clear (&fetch_data);
- }
-
- /* Now go back through and create summary items */
- lines = response->untagged;
- for (i = 0; i < lines->len; i++) {
- p = lines->pdata[i];
- seq = strtoul (p + 2, &p, 10);
- p = strchr (p, '(');
-
- mi = messages->pdata[seq - first];
- if (!mi) /* ? */
- continue;
- fetch_data = parse_fetch_response (imap_folder, p);
-
- if (g_datalist_get_data (&fetch_data, "UID"))
- camel_message_info_set_uid (mi, g_strdup (g_datalist_get_data (&fetch_data, "UID")));
- if (g_datalist_get_data (&fetch_data, "FLAGS")) {
- guint32 flags = GPOINTER_TO_INT (g_datalist_get_data (&fetch_data, "FLAGS"));
-
- ((CamelImapMessageInfo *)mi)->server_flags = flags;
- /* "or" them in with the existing flags that may
- * have been set by summary_info_new_from_message.
- */
- mi->flags |= flags;
- }
- if (g_datalist_get_data (&fetch_data, "RFC822.SIZE"))
- mi->size = GPOINTER_TO_INT (g_datalist_get_data (&fetch_data, "RFC822.SIZE"));
-
- g_datalist_clear (&fetch_data);
- }
- camel_imap_response_free_without_processing (store, response);
-
- for (i = 0; i < messages->len; i++) {
- mi = messages->pdata[i];
- if (!mi) {
- g_warning ("No information for message %d", i + first);
- continue;
- }
- camel_folder_summary_add (folder->summary, mi);
- camel_folder_change_info_add_uid (changes, camel_message_info_uid (mi));
- }
- g_ptr_array_free (messages, TRUE);
-
- /* Did more mail arrive while we were doing this? */
- if (exists && exists > camel_folder_summary_count (folder->summary))
- imap_update_summary (folder, changes, ex);
-}
-
-/* Called with the store's command_lock locked */
-void
-camel_imap_folder_changed (CamelFolder *folder, int exists,
- GArray *expunged, CamelException *ex)
-{
- CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
- CamelFolderChangeInfo *changes;
- CamelMessageInfo *info;
- int len;
-
- CAMEL_IMAP_STORE_ASSERT_LOCKED (folder->parent_store, command_lock);
-
- changes = camel_folder_change_info_new ();
- if (expunged) {
- int i, id;
-
- for (i = 0; i < expunged->len; i++) {
- id = g_array_index (expunged, int, i);
- info = camel_folder_summary_index (folder->summary, id - 1);
- camel_folder_change_info_remove_uid (changes, camel_message_info_uid (info));
- /* It's safe to not lock around this. */
- camel_imap_message_cache_remove (imap_folder->cache, camel_message_info_uid (info));
- camel_folder_summary_remove (folder->summary, info);
- camel_folder_summary_info_free(folder->summary, info);
- }
- }
-
- len = camel_folder_summary_count (folder->summary);
- if (exists > len)
- imap_update_summary (folder, changes, ex);
-
- if (camel_folder_change_info_changed (changes)) {
- camel_object_trigger_event (CAMEL_OBJECT (folder),
- "folder_changed", changes);
- }
- camel_folder_change_info_free (changes);
-
- camel_folder_summary_save (folder->summary);
-}
-
-
-CamelStream *
-camel_imap_folder_fetch_data (CamelImapFolder *imap_folder, const char *uid,
- const char *section_text, gboolean cache_only,
- CamelException *ex)
-{
- CamelFolder *folder = CAMEL_FOLDER (imap_folder);
- CamelImapStore *store = CAMEL_IMAP_STORE (folder->parent_store);
- CamelImapResponse *response;
- CamelStream *stream;
- GData *fetch_data;
- char *found_uid;
- int i;
-
- CAMEL_IMAP_FOLDER_LOCK (imap_folder, cache_lock);
- stream = camel_imap_message_cache_get (imap_folder->cache, uid, section_text);
- if (stream || cache_only) {
- CAMEL_IMAP_FOLDER_UNLOCK (imap_folder, cache_lock);
- return stream;
- }
-
- if (camel_disco_store_status (CAMEL_DISCO_STORE (store)) == CAMEL_DISCO_STORE_OFFLINE) {
- camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("This message is not currently available"));
- CAMEL_IMAP_FOLDER_UNLOCK (imap_folder, cache_lock);
- return NULL;
- }
-
- if (store->server_level < IMAP_LEVEL_IMAP4REV1 && !*section_text) {
- response = camel_imap_command (store, folder, ex,
- "UID FETCH %s RFC822.PEEK",
- uid);
- } else {
- response = camel_imap_command (store, folder, ex,
- "UID FETCH %s BODY.PEEK[%s]",
- uid, section_text);
- }
- if (!response) {
- CAMEL_IMAP_FOLDER_UNLOCK (imap_folder, cache_lock);
- return NULL;
- }
-
- for (i = 0; i < response->untagged->len; i++) {
- fetch_data = parse_fetch_response (imap_folder, response->untagged->pdata[i]);
- found_uid = g_datalist_get_data (&fetch_data, "UID");
- stream = g_datalist_get_data (&fetch_data, "BODY_PART_STREAM");
- if (found_uid && stream && !strcmp (uid, found_uid))
- break;
-
- g_datalist_clear (&fetch_data);
- stream = NULL;
- }
- camel_imap_response_free (store, response);
- CAMEL_IMAP_FOLDER_UNLOCK (imap_folder, cache_lock);
- if (!stream) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("Could not find message body in FETCH "
- "response."));
- } else {
- camel_object_ref (CAMEL_OBJECT (stream));
- g_datalist_clear (&fetch_data);
- }
-
- return stream;
-}
-
-GData *
-parse_fetch_response (CamelImapFolder *imap_folder, char *response)
-{
- GData *data = NULL;
- char *start, *part_spec = NULL, *body = NULL, *uid = NULL;
- int body_len = 0;
-
- if (*response != '(') {
- long seq;
-
- if (*response != '*' || *(response + 1) != ' ')
- return NULL;
- seq = strtol (response + 2, &response, 10);
- if (seq == 0)
- return NULL;
- if (g_strncasecmp (response, " FETCH (", 8) != 0)
- return NULL;
- response += 7;
- }
-
- do {
- /* Skip the initial '(' or the ' ' between elements */
- response++;
-
- if (!g_strncasecmp (response, "FLAGS ", 6)) {
- guint32 flags;
-
- response += 6;
- /* FIXME user flags */
- flags = imap_parse_flag_list (&response);
-
- g_datalist_set_data (&data, "FLAGS", GUINT_TO_POINTER (flags));
- } else if (!g_strncasecmp (response, "RFC822.SIZE ", 12)) {
- unsigned long size;
-
- response += 12;
- size = strtoul (response, &response, 10);
- g_datalist_set_data (&data, "RFC822.SIZE", GUINT_TO_POINTER (size));
- } else if (!g_strncasecmp (response, "BODY[", 5) ||
- !g_strncasecmp (response, "RFC822 ", 7)) {
- char *p;
-
- if (*response == 'B') {
- response += 5;
- p = strchr (response, ']');
- if (!p || *(p + 1) != ' ')
- break;
- part_spec = g_strndup (response, p - response);
- response = p + 2;
- } else {
- part_spec = g_strdup ("");
- response += 7;
- }
-
- body = imap_parse_nstring (&response, &body_len);
- if (!response) {
- g_free (part_spec);
- break;
- }
-
- if (!body)
- body = g_strdup ("");
- g_datalist_set_data_full (&data, "BODY_PART_SPEC", part_spec, g_free);
- g_datalist_set_data_full (&data, "BODY_PART_DATA", body, g_free);
- g_datalist_set_data (&data, "BODY_PART_LEN", GINT_TO_POINTER (body_len));
- } else if (!g_strncasecmp (response, "BODY ", 5) ||
- !g_strncasecmp (response, "BODYSTRUCTURE ", 14)) {
- response = strchr (response, ' ') + 1;
- start = response;
- imap_skip_list (&response);
- g_datalist_set_data_full (&data, "BODY", g_strndup (start, response - start), g_free);
- } else if (!g_strncasecmp (response, "UID ", 4)) {
- int len;
-
- len = strcspn (response + 4, " )");
- uid = g_strndup (response + 4, len);
- g_datalist_set_data_full (&data, "UID", uid, g_free);
- response += 4 + len;
- } else {
- g_warning ("Unexpected FETCH response from server: "
- "(%s", response);
- break;
- }
- } while (response && *response != ')');
-
- if (!response || *response != ')') {
- g_datalist_clear (&data);
- return NULL;
- }
-
- if (uid && body) {
- CamelStream *stream;
-
- CAMEL_IMAP_FOLDER_LOCK (imap_folder, cache_lock);
- stream = camel_imap_message_cache_insert (imap_folder->cache,
- uid, part_spec,
- body, body_len);
- CAMEL_IMAP_FOLDER_UNLOCK (imap_folder, cache_lock);
- g_datalist_set_data_full (&data, "BODY_PART_STREAM", stream,
- (GDestroyNotify)camel_object_unref);
- }
-
- return data;
-}
-
diff --git a/camel/providers/imap/camel-imap-folder.h b/camel/providers/imap/camel-imap-folder.h
deleted file mode 100644
index 96b33c0400..0000000000
--- a/camel/providers/imap/camel-imap-folder.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-imap-folder.h: class for an imap folder */
-
-/*
- * Authors:
- * Dan Winship <danw@ximian.com>
- * Jeffrey Stedfast <fejj@ximian.com>
- *
- * Copyright (C) 2000, 2001 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_IMAP_FOLDER_H
-#define CAMEL_IMAP_FOLDER_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include "camel-imap-types.h"
-#include "camel-disco-folder.h"
-#include <camel/camel-folder-search.h>
-
-#define CAMEL_IMAP_FOLDER_TYPE (camel_imap_folder_get_type ())
-#define CAMEL_IMAP_FOLDER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_IMAP_FOLDER_TYPE, CamelImapFolder))
-#define CAMEL_IMAP_FOLDER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_IMAP_FOLDER_TYPE, CamelImapFolderClass))
-#define CAMEL_IS_IMAP_FOLDER(o) (CAMEL_CHECK_TYPE((o), CAMEL_IMAP_FOLDER_TYPE))
-
-struct _CamelImapFolder {
- CamelDiscoFolder parent_object;
-
- struct _CamelImapFolderPrivate *priv;
-
- CamelFolderSearch *search;
- CamelImapMessageCache *cache;
-};
-
-
-typedef struct {
- CamelDiscoFolderClass parent_class;
-
- /* Virtual methods */
-
-} CamelImapFolderClass;
-
-
-/* public methods */
-CamelFolder *camel_imap_folder_new (CamelStore *parent,
- const char *folder_name,
- const char *folder_dir,
- CamelException *ex);
-
-void camel_imap_folder_selected (CamelFolder *folder,
- CamelImapResponse *response,
- CamelException *ex);
-
-void camel_imap_folder_changed (CamelFolder *folder, int exists,
- GArray *expunged, CamelException *ex);
-
-CamelStream *camel_imap_folder_fetch_data (CamelImapFolder *imap_folder,
- const char *uid,
- const char *section_text,
- gboolean cache_only,
- CamelException *ex);
-
-/* Standard Camel function */
-CamelType camel_imap_folder_get_type (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_IMAP_FOLDER_H */
diff --git a/camel/providers/imap/camel-imap-message-cache.c b/camel/providers/imap/camel-imap-message-cache.c
deleted file mode 100644
index 45f8d6db51..0000000000
--- a/camel/providers/imap/camel-imap-message-cache.c
+++ /dev/null
@@ -1,465 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-imap-message-cache.c: Class for an IMAP message cache */
-
-/*
- * Author:
- * Dan Winship <danw@ximian.com>
- *
- * Copyright (C) 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <ctype.h>
-#include <dirent.h>
-#include <errno.h>
-#include <string.h>
-
-#include "camel-imap-message-cache.h"
-#include "camel-data-wrapper.h"
-#include "camel-exception.h"
-#include "camel-stream-fs.h"
-
-static void finalize (CamelImapMessageCache *cache);
-static void stream_finalize (CamelObject *stream, gpointer event_data, gpointer user_data);
-
-
-CamelType
-camel_imap_message_cache_get_type (void)
-{
- static CamelType camel_imap_message_cache_type = CAMEL_INVALID_TYPE;
-
- if (camel_imap_message_cache_type == CAMEL_INVALID_TYPE) {
- camel_imap_message_cache_type = camel_type_register (
- CAMEL_OBJECT_TYPE, "CamelImapMessageCache",
- sizeof (CamelImapMessageCache),
- sizeof (CamelImapMessageCacheClass),
- NULL,
- NULL,
- NULL,
- (CamelObjectFinalizeFunc) finalize);
- }
-
- return camel_imap_message_cache_type;
-}
-
-static void
-free_part (gpointer key, gpointer value, gpointer data)
-{
- if (value) {
- if (strchr (key, '.')) {
- camel_object_unhook_event (value, "finalize",
- stream_finalize, data);
- camel_object_unref (value);
- } else
- g_ptr_array_free (value, TRUE);
- }
- g_free (key);
-}
-
-static void
-finalize (CamelImapMessageCache *cache)
-{
- if (cache->path)
- g_free (cache->path);
- if (cache->parts) {
- g_hash_table_foreach (cache->parts, free_part, cache);
- g_hash_table_destroy (cache->parts);
- }
- if (cache->cached)
- g_hash_table_destroy (cache->cached);
-}
-
-static void
-cache_put (CamelImapMessageCache *cache, const char *uid, const char *key,
- CamelStream *stream)
-{
- char *hash_key;
- GPtrArray *subparts;
- gpointer okey, ostream;
-
- subparts = g_hash_table_lookup (cache->parts, uid);
- if (!subparts) {
- subparts = g_ptr_array_new ();
- g_hash_table_insert (cache->parts, g_strdup (uid), subparts);
- }
-
- if (g_hash_table_lookup_extended (cache->parts, key, &okey, &ostream)) {
- if (ostream) {
- camel_object_unhook_event (ostream, "finalize",
- stream_finalize, cache);
- g_hash_table_remove (cache->cached, ostream);
- camel_object_unref (ostream);
- }
- hash_key = okey;
- } else {
- hash_key = g_strdup (key);
- g_ptr_array_add (subparts, hash_key);
- }
-
- g_hash_table_insert (cache->parts, hash_key, stream);
- g_hash_table_insert (cache->cached, stream, hash_key);
-
- if (stream) {
- camel_object_hook_event (CAMEL_OBJECT (stream), "finalize",
- stream_finalize, cache);
- }
-}
-
-/**
- * camel_imap_message_cache_new:
- * @path: directory to use for storage
- * @summary: CamelFolderSummary for the folder we are caching
- * @ex: a CamelException
- *
- * Return value: a new CamelImapMessageCache object using @path for
- * storage. If cache files already exist in @path, then any that do not
- * correspond to messages in @summary will be deleted.
- **/
-CamelImapMessageCache *
-camel_imap_message_cache_new (const char *path, CamelFolderSummary *summary,
- CamelException *ex)
-{
- CamelImapMessageCache *cache;
- DIR *dir;
- struct dirent *d;
- char *uid, *p;
- GPtrArray *deletes;
- CamelMessageInfo *info;
-
- dir = opendir (path);
- if (!dir) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not open cache directory: %s"),
- g_strerror (errno));
- return NULL;
- }
-
- cache = (CamelImapMessageCache *)camel_object_new (CAMEL_IMAP_MESSAGE_CACHE_TYPE);
- cache->path = g_strdup (path);
-
- cache->parts = g_hash_table_new (g_str_hash, g_str_equal);
- cache->cached = g_hash_table_new (NULL, NULL);
- deletes = g_ptr_array_new ();
- while ((d = readdir (dir))) {
- if (!isdigit (d->d_name[0]))
- continue;
-
- p = strchr (d->d_name, '.');
- if (p)
- uid = g_strndup (d->d_name, p - d->d_name);
- else
- uid = g_strdup (d->d_name);
-
- info = camel_folder_summary_uid (summary, uid);
- if (info) {
- camel_folder_summary_info_free (summary, info);
- cache_put (cache, uid, d->d_name, NULL);
- } else
- g_ptr_array_add (deletes, g_strdup_printf ("%s/%s", cache->path, d->d_name));
- g_free (uid);
- }
- closedir (dir);
-
- while (deletes->len) {
- unlink (deletes->pdata[0]);
- g_free (deletes->pdata[0]);
- g_ptr_array_remove_index_fast (deletes, 0);
- }
- g_ptr_array_free (deletes, TRUE);
-
- if (camel_exception_is_set (ex)) {
- camel_object_unref (CAMEL_OBJECT (cache));
- return NULL;
- }
-
- return cache;
-}
-
-
-static void
-stream_finalize (CamelObject *stream, gpointer event_data, gpointer user_data)
-{
- CamelImapMessageCache *cache = user_data;
- char *key;
-
- key = g_hash_table_lookup (cache->cached, stream);
- if (!key)
- return;
- g_hash_table_remove (cache->cached, stream);
- g_hash_table_insert (cache->parts, key, NULL);
-}
-
-
-static CamelStream *
-insert_setup (CamelImapMessageCache *cache, const char *uid,
- const char *part_spec, char **path, char **key)
-{
- CamelStream *stream;
- int fd;
-
- *path = g_strdup_printf ("%s/%s.%s", cache->path, uid, part_spec);
- *key = strrchr (*path, '/') + 1;
- stream = g_hash_table_lookup (cache->parts, *key);
- if (stream)
- camel_object_unref (CAMEL_OBJECT (stream));
-
- fd = open (*path, O_RDWR | O_CREAT | O_TRUNC, 0600);
- if (fd == -1) {
- g_free (*path);
- return NULL;
- }
-
- return camel_stream_fs_new_with_fd (fd);
-}
-
-static CamelStream *
-insert_abort (char *path, CamelStream *stream)
-{
- unlink (path);
- g_free (path);
- camel_object_unref (CAMEL_OBJECT (stream));
- return NULL;
-}
-
-static CamelStream *
-insert_finish (CamelImapMessageCache *cache, const char *uid,
- char *path, char *key, CamelStream *stream)
-{
- camel_stream_reset (stream);
- cache_put (cache, uid, key, stream);
- printf ("caching %s\n", path);
- g_free (path);
-
- return stream;
-}
-
-/**
- * camel_imap_message_cache_insert:
- * @cache: the cache
- * @uid: UID of the message data to cache
- * @part_spec: the IMAP part_spec of the data
- * @data: the data
- * @len: length of @data
- *
- * Caches the provided data into @cache.
- *
- * Return value: a CamelStream containing the cached data, which the
- * caller must unref.
- **/
-CamelStream *
-camel_imap_message_cache_insert (CamelImapMessageCache *cache, const char *uid,
- const char *part_spec, const char *data,
- int len)
-{
- char *path, *key;
- CamelStream *stream;
-
- stream = insert_setup (cache, uid, part_spec, &path, &key);
- if (!stream)
- return NULL;
- if (camel_stream_write (stream, data, len) == -1)
- return insert_abort (path, stream);
- return insert_finish (cache, uid, path, key, stream);
-}
-
-/**
- * camel_imap_message_cache_insert_stream:
- * @cache: the cache
- * @uid: UID of the message data to cache
- * @part_spec: the IMAP part_spec of the data
- * @data_stream: the stream to cache
- *
- * Caches the provided data into @cache.
- **/
-void
-camel_imap_message_cache_insert_stream (CamelImapMessageCache *cache,
- const char *uid, const char *part_spec,
- CamelStream *data_stream)
-{
- char *path, *key;
- CamelStream *stream;
-
- stream = insert_setup (cache, uid, part_spec, &path, &key);
- if (!stream)
- return;
- if (camel_stream_write_to_stream (data_stream, stream) == -1)
- insert_abort (path, stream);
- else {
- insert_finish (cache, uid, path, key, stream);
- camel_object_unref (CAMEL_OBJECT (stream));
- }
-}
-
-/**
- * camel_imap_message_cache_insert_wrapper:
- * @cache: the cache
- * @uid: UID of the message data to cache
- * @part_spec: the IMAP part_spec of the data
- * @wrapper: the wrapper to cache
- *
- * Caches the provided data into @cache.
- **/
-void
-camel_imap_message_cache_insert_wrapper (CamelImapMessageCache *cache,
- const char *uid, const char *part_spec,
- CamelDataWrapper *wrapper)
-{
- char *path, *key;
- CamelStream *stream;
-
- stream = insert_setup (cache, uid, part_spec, &path, &key);
- if (!stream)
- return;
- if (camel_data_wrapper_write_to_stream (wrapper, stream) == -1)
- insert_abort (path, stream);
- else {
- insert_finish (cache, uid, path, key, stream);
- camel_object_unref (CAMEL_OBJECT (stream));
- }
-}
-
-
-/**
- * camel_imap_message_cache_get:
- * @cache: the cache
- * @uid: the UID of the data to get
- * @part_spec: the part_spec of the data to get
- *
- * Return value: a CamelStream containing the cached data (which the
- * caller must unref), or %NULL if that data is not cached.
- **/
-CamelStream *
-camel_imap_message_cache_get (CamelImapMessageCache *cache, const char *uid,
- const char *part_spec)
-{
- CamelStream *stream;
- char *path, *key;
-
- path = g_strdup_printf ("%s/%s.%s", cache->path, uid, part_spec);
- key = strrchr (path, '/') + 1;
- stream = g_hash_table_lookup (cache->parts, key);
- if (stream) {
- camel_object_ref (CAMEL_OBJECT (stream));
- return stream;
- }
-
- stream = camel_stream_fs_new_with_name (path, O_RDONLY, 0);
- if (stream) {
- printf ("got %s\n", path);
- cache_put (cache, uid, key, stream);
- }
- g_free (path);
-
- return stream;
-}
-
-/**
- * camel_imap_message_cache_remove:
- * @cache: the cache
- * @uid: UID of the data to remove
- *
- * Removes all data associated with @uid from @cache.
- **/
-void
-camel_imap_message_cache_remove (CamelImapMessageCache *cache, const char *uid)
-{
- GPtrArray *subparts;
- char *key, *path;
- CamelObject *stream;
- int i;
-
- subparts = g_hash_table_lookup (cache->parts, uid);
- if (!subparts)
- return;
- for (i = 0; i < subparts->len; i++) {
- key = subparts->pdata[i];
- path = g_strdup_printf ("%s/%s", cache->path, key);
- unlink (path);
- g_free (path);
- stream = g_hash_table_lookup (cache->parts, key);
- if (stream) {
- camel_object_unhook_event (stream, "finalize",
- stream_finalize, cache);
- camel_object_unref (stream);
- g_hash_table_remove (cache->cached, stream);
- }
- g_hash_table_remove (cache->parts, key);
- g_free (key);
- }
- g_hash_table_remove (cache->parts, uid);
- g_ptr_array_free (subparts, TRUE);
-}
-
-static gboolean
-clear_part (gpointer key, gpointer value, gpointer data)
-{
- if (!strchr (key, '.'))
- camel_imap_message_cache_remove (data, key);
- return TRUE;
-}
-
-/**
- * camel_imap_message_cache_clear:
- * @cache: the cache
- *
- * Removes all cached data from @cache.
- **/
-void
-camel_imap_message_cache_clear (CamelImapMessageCache *cache)
-{
- g_hash_table_foreach_remove (cache->parts, clear_part, cache);
-}
-
-
-/**
- * camel_imap_message_cache_copy:
- * @source: the source message cache
- * @source_uid: UID of a message in @source
- * @dest: the destination message cache
- * @dest_uid: UID of the message in @dest
- *
- * Copies all cached parts from @source_uid in @source to @dest_uid in
- * @destination.
- **/
-void
-camel_imap_message_cache_copy (CamelImapMessageCache *source,
- const char *source_uid,
- CamelImapMessageCache *dest,
- const char *dest_uid)
-{
- GPtrArray *subparts;
- CamelStream *stream;
- char *part;
- int i;
-
- subparts = g_hash_table_lookup (source->parts, source_uid);
- if (!subparts || !subparts->len)
- return;
-
- for (i = 0; i < subparts->len; i++) {
- part = strchr (subparts->pdata[i], '.');
- if (!part++)
- continue;
- stream = camel_imap_message_cache_get (source, source_uid, part);
- camel_imap_message_cache_insert_stream (dest, dest_uid, part, stream);
- camel_object_unref (CAMEL_OBJECT (stream));
- }
-}
diff --git a/camel/providers/imap/camel-imap-message-cache.h b/camel/providers/imap/camel-imap-message-cache.h
deleted file mode 100644
index c9af369a56..0000000000
--- a/camel/providers/imap/camel-imap-message-cache.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-imap-message-cache.h: Class for an IMAP message cache */
-
-/*
- * Author:
- * Dan Winship <danw@ximian.com>
- *
- * Copyright (C) 2001 Ximian, Inc. (www.ximian.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_IMAP_MESSAGE_CACHE_H
-#define CAMEL_IMAP_MESSAGE_CACHE_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include "camel-imap-types.h"
-#include "camel-folder.h"
-#include <camel/camel-folder-search.h>
-
-#define CAMEL_IMAP_MESSAGE_CACHE_TYPE (camel_imap_message_cache_get_type ())
-#define CAMEL_IMAP_MESSAGE_CACHE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_IMAP_MESSAGE_CACHE_TYPE, CamelImapFolder))
-#define CAMEL_IMAP_MESSAGE_CACHE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_IMAP_MESSAGE_CACHE_TYPE, CamelImapFolderClass))
-#define CAMEL_IS_IMAP_MESSAGE_CACHE(o) (CAMEL_CHECK_TYPE((o), CAMEL_IMAP_MESSAGE_CACHE_TYPE))
-
-struct _CamelImapMessageCache {
- CamelObject parent_object;
-
- char *path;
- GHashTable *parts, *cached;
-};
-
-
-typedef struct {
- CamelFolderClass parent_class;
-
- /* Virtual methods */
-
-} CamelImapMessageCacheClass;
-
-
-/* public methods */
-CamelImapMessageCache *camel_imap_message_cache_new (const char *path,
- CamelFolderSummary *summ,
- CamelException *ex);
-
-CamelStream *camel_imap_message_cache_insert (CamelImapMessageCache *cache,
- const char *uid,
- const char *part_spec,
- const char *data,
- int len);
-void camel_imap_message_cache_insert_stream (CamelImapMessageCache *cache,
- const char *uid,
- const char *part_spec,
- CamelStream *data_stream);
-void camel_imap_message_cache_insert_wrapper (CamelImapMessageCache *cache,
- const char *uid,
- const char *part_spec,
- CamelDataWrapper *wrapper);
-
-CamelStream *camel_imap_message_cache_get (CamelImapMessageCache *cache,
- const char *uid,
- const char *part_spec);
-void camel_imap_message_cache_remove (CamelImapMessageCache *cache,
- const char *uid);
-
-void camel_imap_message_cache_clear (CamelImapMessageCache *cache);
-
-void camel_imap_message_cache_copy (CamelImapMessageCache *source,
- const char *source_uid,
- CamelImapMessageCache *dest,
- const char *dest_uid);
-
-/* Standard Camel function */
-CamelType camel_imap_message_cache_get_type (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_IMAP_MESSAGE_CACHE_H */
diff --git a/camel/providers/imap/camel-imap-private.h b/camel/providers/imap/camel-imap-private.h
deleted file mode 100644
index 6004840f88..0000000000
--- a/camel/providers/imap/camel-imap-private.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- * camel-imap-private.h: Private info for imap.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_IMAP_PRIVATE_H
-#define CAMEL_IMAP_PRIVATE_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-/* need a way to configure and save this data, if this header is to
- be installed. For now, dont install it */
-
-#include "config.h"
-
-#ifdef ENABLE_THREADS
-#include "e-util/e-msgport.h"
-#endif
-
-struct _CamelImapStorePrivate {
-#ifdef ENABLE_THREADS
- EMutex *command_lock; /* for locking the command stream for a complete operation */
-#endif
-};
-
-#ifdef ENABLE_THREADS
-#define CAMEL_IMAP_STORE_LOCK(f, l) (e_mutex_lock(((CamelImapStore *)f)->priv->l))
-#define CAMEL_IMAP_STORE_UNLOCK(f, l) (e_mutex_unlock(((CamelImapStore *)f)->priv->l))
-# if 0
-# define CAMEL_IMAP_STORE_ASSERT_LOCKED(f, l) (e_mutex_assert_locked(((CamelImapStore *)f)->priv->l))
-# else
-# define CAMEL_IMAP_STORE_ASSERT_LOCKED(f, l)
-# endif
-#else
-#define CAMEL_IMAP_STORE_LOCK(f, l)
-#define CAMEL_IMAP_STORE_UNLOCK(f, l)
-#define CAMEL_IMAP_STORE_ASSERT_LOCKED(f, l)
-#endif
-
-struct _CamelImapFolderPrivate {
-#ifdef ENABLE_THREADS
- EMutex *search_lock; /* for locking the search object */
- EMutex *cache_lock; /* for locking the cache object */
-#endif
-};
-
-#ifdef ENABLE_THREADS
-#define CAMEL_IMAP_FOLDER_LOCK(f, l) (e_mutex_lock(((CamelImapFolder *)f)->priv->l))
-#define CAMEL_IMAP_FOLDER_UNLOCK(f, l) (e_mutex_unlock(((CamelImapFolder *)f)->priv->l))
-#else
-#define CAMEL_IMAP_FOLDER_LOCK(f, l)
-#define CAMEL_IMAP_FOLDER_UNLOCK(f, l)
-#endif
-
-struct _CamelImapWrapperPrivate {
-#ifdef ENABLE_THREADS
- GMutex *lock;
-#endif
-};
-
-#ifdef ENABLE_THREADS
-#define CAMEL_IMAP_WRAPPER_LOCK(f, l) (g_mutex_lock(((CamelImapWrapper *)f)->priv->l))
-#define CAMEL_IMAP_WRAPPER_UNLOCK(f, l) (g_mutex_unlock(((CamelImapWrapper *)f)->priv->l))
-#else
-#define CAMEL_IMAP_WRAPPER_LOCK(f, l)
-#define CAMEL_IMAP_WRAPPER_UNLOCK(f, l)
-#endif
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_IMAP_PRIVATE_H */
-
diff --git a/camel/providers/imap/camel-imap-provider.c b/camel/providers/imap/camel-imap-provider.c
deleted file mode 100644
index 19e72dba5a..0000000000
--- a/camel/providers/imap/camel-imap-provider.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-imap-provider.c: imap provider registration code */
-
-/*
- * Authors: Jeffrey Stedfast <fejj@helixcode.com>
- *
- * Copyright 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include "camel-imap-store.h"
-#include "camel-provider.h"
-#include "camel-session.h"
-#include "camel-url.h"
-#include "camel-sasl.h"
-
-static void add_hash (guint *hash, char *s);
-static guint imap_url_hash (gconstpointer key);
-static gint check_equal (char *s1, char *s2);
-static gint imap_url_equal (gconstpointer a, gconstpointer b);
-
-CamelProviderConfEntry imap_conf_entries[] = {
- { CAMEL_PROVIDER_CONF_SECTION_START, "mailcheck", NULL,
- N_("Checking for new mail") },
- { CAMEL_PROVIDER_CONF_CHECKBOX, "check_all", NULL,
- N_("Check for new messages in all folders"), "1" },
- { CAMEL_PROVIDER_CONF_SECTION_END },
- { CAMEL_PROVIDER_CONF_SECTION_START, "folders", NULL,
- N_("Folders") },
- { CAMEL_PROVIDER_CONF_CHECKBOX, "use_lsub", NULL,
- N_("Show only subscribed folders"), "1" },
- { CAMEL_PROVIDER_CONF_CHECKBOX, "override_namespace", NULL,
- N_("Override server-supplied folder namespace"), "0" },
- { CAMEL_PROVIDER_CONF_ENTRY, "namespace", "override_namespace",
- N_("Namespace") },
- { CAMEL_PROVIDER_CONF_SECTION_END },
- { CAMEL_PROVIDER_CONF_CHECKBOX, "filter", "UNIMPLEMENTED",
- N_("Apply filters to new messages in INBOX on this server"), "0" },
- { CAMEL_PROVIDER_CONF_END }
-};
-
-static CamelProvider imap_provider = {
- "imap",
- N_("IMAPv4"),
-
- N_("For reading and storing mail on IMAP servers."),
-
- "mail",
-
- CAMEL_PROVIDER_IS_REMOTE | CAMEL_PROVIDER_IS_SOURCE |
- CAMEL_PROVIDER_IS_STORAGE | CAMEL_PROVIDER_SUPPORTS_SSL,
-
- CAMEL_URL_NEED_USER | CAMEL_URL_NEED_HOST | CAMEL_URL_ALLOW_AUTH,
-
- imap_conf_entries,
-
- /* ... */
-};
-
-CamelServiceAuthType camel_imap_password_authtype = {
- N_("Password"),
-
- N_("This option will connect to the IMAP server using a "
- "plaintext password."),
-
- "",
- TRUE
-};
-
-void
-camel_provider_module_init (CamelSession *session)
-{
- imap_provider.object_types[CAMEL_PROVIDER_STORE] =
- camel_imap_store_get_type ();
- imap_provider.service_cache = g_hash_table_new (imap_url_hash, imap_url_equal);
- imap_provider.authtypes = g_list_concat (camel_remote_store_authtype_list (),
- camel_sasl_authtype_list (FALSE));
- imap_provider.authtypes = g_list_prepend (imap_provider.authtypes,
- &camel_imap_password_authtype);
-
- camel_session_register_provider (session, &imap_provider);
-}
-
-static void
-add_hash (guint *hash, char *s)
-{
- if (s)
- *hash ^= g_str_hash(s);
-}
-
-static guint
-imap_url_hash (gconstpointer key)
-{
- const CamelURL *u = (CamelURL *)key;
- guint hash = 0;
-
- add_hash (&hash, u->user);
- add_hash (&hash, u->authmech);
- add_hash (&hash, u->host);
- hash ^= u->port;
-
- return hash;
-}
-
-static gint
-check_equal (char *s1, char *s2)
-{
- if (s1 == NULL) {
- if (s2 == NULL)
- return TRUE;
- else
- return FALSE;
- }
-
- if (s2 == NULL)
- return FALSE;
-
- return strcmp (s1, s2) == 0;
-}
-
-static gint
-imap_url_equal (gconstpointer a, gconstpointer b)
-{
- const CamelURL *u1 = a, *u2 = b;
-
- return check_equal (u1->user, u2->user)
- && check_equal (u1->authmech, u2->authmech)
- && check_equal (u1->host, u2->host)
- && u1->port == u2->port;
-}
diff --git a/camel/providers/imap/camel-imap-search.c b/camel/providers/imap/camel-imap-search.c
deleted file mode 100644
index be8ed85eca..0000000000
--- a/camel/providers/imap/camel-imap-search.c
+++ /dev/null
@@ -1,148 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-imap-search.c: IMAP folder search */
-
-/*
- * Authors:
- * Dan Winship <danw@ximian.com>
- *
- * Copyright 2000, 2001 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-
-#include "camel-imap-command.h"
-#include "camel-imap-folder.h"
-#include "camel-imap-store.h"
-#include "camel-imap-search.h"
-#include "camel-imap-private.h"
-
-static ESExpResult *
-imap_body_contains (struct _ESExp *f, int argc, struct _ESExpResult **argv,
- CamelFolderSearch *s);
-
-static void
-camel_imap_search_class_init (CamelImapSearchClass *camel_imap_search_class)
-{
- /* virtual method overload */
- CamelFolderSearchClass *camel_folder_search_class =
- CAMEL_FOLDER_SEARCH_CLASS (camel_imap_search_class);
-
- /* virtual method overload */
- camel_folder_search_class->body_contains = imap_body_contains;
-}
-
-CamelType
-camel_imap_search_get_type (void)
-{
- static CamelType camel_imap_search_type = CAMEL_INVALID_TYPE;
-
- if (camel_imap_search_type == CAMEL_INVALID_TYPE) {
- camel_imap_search_type = camel_type_register (
- CAMEL_FOLDER_SEARCH_TYPE, "CamelImapSearch",
- sizeof (CamelImapSearch),
- sizeof (CamelImapSearchClass),
- (CamelObjectClassInitFunc) camel_imap_search_class_init,
- NULL, NULL, NULL);
- }
-
- return camel_imap_search_type;
-}
-
-static ESExpResult *
-imap_body_contains (struct _ESExp *f, int argc, struct _ESExpResult **argv,
- CamelFolderSearch *s)
-{
- CamelImapStore *store = CAMEL_IMAP_STORE (s->folder->parent_store);
- char *value = argv[0]->value.string;
- CamelImapResponse *response;
- char *result, *p, *lasts = NULL, *real_uid;
- const char *uid = "";
- ESExpResult *r;
- CamelMessageInfo *info;
- GHashTable *uid_hash = NULL;
-
- if (s->current) {
- uid = camel_message_info_uid (s->current);
- r = e_sexp_result_new(f, ESEXP_RES_BOOL);
- r->value.bool = FALSE;
- response = camel_imap_command (store, s->folder, NULL,
- "UID SEARCH UID %s BODY \"%s\"",
- uid, value);
- } else {
- r = e_sexp_result_new(f, ESEXP_RES_ARRAY_PTR);
- r->value.ptrarray = g_ptr_array_new ();
- response = camel_imap_command (store, s->folder, NULL,
- "UID SEARCH BODY \"%s\"",
- value);
- }
-
- if (!response)
- return r;
- result = camel_imap_response_extract (store, response, "SEARCH", NULL);
- if (!result)
- return r;
-
- p = result + sizeof ("* SEARCH");
- for (p = strtok_r (p, " ", &lasts); p; p = strtok_r (NULL, " ", &lasts)) {
- if (s->current) {
- if (!strcmp (uid, p)) {
- r->value.bool = TRUE;
- break;
- }
- } else {
- /* if we need to setup a hash of summary items, this way we get
- access to the summary memory which is locked for the duration of
- the search, and wont vanish on us */
- if (uid_hash == NULL) {
- int i;
-
- uid_hash = g_hash_table_new(g_str_hash, g_str_equal);
- for (i=0;i<s->summary->len;i++) {
- info = s->summary->pdata[i];
- g_hash_table_insert(uid_hash, (char *)camel_message_info_uid(info), info);
- }
- }
- if (g_hash_table_lookup_extended(uid_hash, p, (void *)&real_uid, (void *)&info))
- g_ptr_array_add (r->value.ptrarray, real_uid);
- }
- }
-
- /* we could probably cache this globally, but its probably not worth it */
- if (uid_hash)
- g_hash_table_destroy(uid_hash);
-
- return r;
-}
-
-/**
- * camel_imap_search_new:
- *
- * Return value: A new CamelImapSearch widget.
- **/
-CamelFolderSearch *
-camel_imap_search_new (void)
-{
- CamelFolderSearch *new = CAMEL_FOLDER_SEARCH (camel_object_new (camel_imap_search_get_type ()));
-
- camel_folder_search_construct (new);
- return new;
-}
diff --git a/camel/providers/imap/camel-imap-search.h b/camel/providers/imap/camel-imap-search.h
deleted file mode 100644
index 97fd6cd6c4..0000000000
--- a/camel/providers/imap/camel-imap-search.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-imap-search.h: IMAP folder search */
-
-/*
- * Authors:
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef _CAMEL_IMAP_SEARCH_H
-#define _CAMEL_IMAP_SEARCH_H
-
-#include <camel/camel-folder-search.h>
-
-#define CAMEL_IMAP_SEARCH_TYPE (camel_imap_search_get_type ())
-#define CAMEL_IMAP_SEARCH(obj) CAMEL_CHECK_CAST (obj, camel_imap_search_get_type (), CamelImapSearch)
-#define CAMEL_IMAP_SEARCH_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_imap_search_get_type (), CamelImapSearchClass)
-#define CAMEL_IS_IMAP_SEARCH(obj) CAMEL_CHECK_TYPE (obj, camel_imap_search_get_type ())
-
-typedef struct _CamelImapSearchClass CamelImapSearchClass;
-
-struct _CamelImapSearch {
- CamelFolderSearch parent;
-
-};
-
-struct _CamelImapSearchClass {
- CamelFolderSearchClass parent_class;
-
-};
-
-guint camel_imap_search_get_type (void);
-CamelFolderSearch *camel_imap_search_new (void);
-
-#endif /* ! _CAMEL_IMAP_SEARCH_H */
diff --git a/camel/providers/imap/camel-imap-store.c b/camel/providers/imap/camel-imap-store.c
deleted file mode 100644
index 5138cda658..0000000000
--- a/camel/providers/imap/camel-imap-store.c
+++ /dev/null
@@ -1,1351 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-imap-store.c : class for an imap store */
-
-/*
- * Authors:
- * Dan Winship <danw@ximian.com>
- * Jeffrey Stedfast <fejj@danw.com>
- *
- * Copyright 2000, 2001 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <errno.h>
-
-#include "e-util/e-path.h"
-
-#include "camel-imap-store.h"
-#include "camel-imap-folder.h"
-#include "camel-imap-utils.h"
-#include "camel-imap-command.h"
-#include "camel-file-utils.h"
-#include "camel-folder.h"
-#include "camel-exception.h"
-#include "camel-session.h"
-#include "camel-stream.h"
-#include "camel-stream-buffer.h"
-#include "camel-stream-fs.h"
-#include "camel-url.h"
-#include "camel-sasl.h"
-#include "string-utils.h"
-
-#include "camel-imap-private.h"
-#include "camel-private.h"
-
-/* Specified in RFC 2060 */
-#define IMAP_PORT 143
-
-static CamelDiscoStoreClass *disco_store_class = NULL;
-static char imap_tag_prefix = 'A';
-
-static void construct (CamelService *service, CamelSession *session,
- CamelProvider *provider, CamelURL *url,
- CamelException *ex);
-static gboolean can_work_offline (CamelDiscoStore *disco_store);
-static gboolean imap_connect_online (CamelService *service, CamelException *ex);
-static gboolean imap_connect_offline (CamelService *service, CamelException *ex);
-static gboolean imap_disconnect_online (CamelService *service, gboolean clean, CamelException *ex);
-static gboolean imap_disconnect_offline (CamelService *service, gboolean clean, CamelException *ex);
-static GList *query_auth_types (CamelService *service, CamelException *ex);
-static guint hash_folder_name (gconstpointer key);
-static gint compare_folder_name (gconstpointer a, gconstpointer b);
-static CamelFolder *get_folder_online (CamelStore *store, const char *folder_name, guint32 flags, CamelException *ex);
-static CamelFolder *get_folder_offline (CamelStore *store, const char *folder_name, guint32 flags, CamelException *ex);
-static CamelFolderInfo *create_folder (CamelStore *store, const char *parent_name, const char *folder_name, CamelException *ex);
-static CamelFolderInfo *get_folder_info_online (CamelStore *store,
- const char *top,
- guint32 flags,
- CamelException *ex);
-static CamelFolderInfo *get_folder_info_offline (CamelStore *store,
- const char *top,
- guint32 flags,
- CamelException *ex);
-static gboolean folder_subscribed (CamelStore *store, const char *folder_name);
-static void subscribe_folder (CamelStore *store, const char *folder_name,
- CamelException *ex);
-static void unsubscribe_folder (CamelStore *store, const char *folder_name,
- CamelException *ex);
-static void imap_keepalive (CamelRemoteStore *store);
-
-
-static void
-camel_imap_store_class_init (CamelImapStoreClass *camel_imap_store_class)
-{
- CamelServiceClass *camel_service_class =
- CAMEL_SERVICE_CLASS (camel_imap_store_class);
- CamelStoreClass *camel_store_class =
- CAMEL_STORE_CLASS (camel_imap_store_class);
- CamelRemoteStoreClass *camel_remote_store_class =
- CAMEL_REMOTE_STORE_CLASS (camel_imap_store_class);
- CamelDiscoStoreClass *camel_disco_store_class =
- CAMEL_DISCO_STORE_CLASS (camel_imap_store_class);
-
- disco_store_class = CAMEL_DISCO_STORE_CLASS (camel_type_get_global_classfuncs (camel_disco_store_get_type ()));
-
- /* virtual method overload */
- camel_service_class->construct = construct;
- camel_service_class->query_auth_types = query_auth_types;
-
- camel_store_class->hash_folder_name = hash_folder_name;
- camel_store_class->compare_folder_name = compare_folder_name;
- camel_store_class->create_folder = create_folder;
- camel_store_class->free_folder_info = camel_store_free_folder_info_full;
- camel_store_class->folder_subscribed = folder_subscribed;
- camel_store_class->subscribe_folder = subscribe_folder;
- camel_store_class->unsubscribe_folder = unsubscribe_folder;
-
- camel_remote_store_class->keepalive = imap_keepalive;
-
- camel_disco_store_class->can_work_offline = can_work_offline;
- camel_disco_store_class->connect_online = imap_connect_online;
- camel_disco_store_class->connect_offline = imap_connect_offline;
- camel_disco_store_class->disconnect_online = imap_disconnect_online;
- camel_disco_store_class->disconnect_offline = imap_disconnect_offline;
- camel_disco_store_class->get_folder_online = get_folder_online;
- camel_disco_store_class->get_folder_offline = get_folder_offline;
- camel_disco_store_class->get_folder_info_online = get_folder_info_online;
- camel_disco_store_class->get_folder_info_offline = get_folder_info_offline;
-}
-
-static gboolean
-free_key (gpointer key, gpointer value, gpointer user_data)
-{
- g_free (key);
- return TRUE;
-}
-
-static void
-camel_imap_store_finalize (CamelObject *object)
-{
- CamelImapStore *imap_store = CAMEL_IMAP_STORE (object);
-
- /* This frees current_folder, folders, authtypes, and namespace. */
- imap_disconnect_offline (CAMEL_SERVICE (object), FALSE, NULL);
-
- if (imap_store->base_url)
- g_free (imap_store->base_url);
- if (imap_store->storage_path)
- g_free (imap_store->storage_path);
-
-#ifdef ENABLE_THREADS
- e_mutex_destroy(imap_store->priv->command_lock);
-#endif
- g_free(imap_store->priv);
-}
-
-static void
-camel_imap_store_init (gpointer object, gpointer klass)
-{
- CamelRemoteStore *remote_store = CAMEL_REMOTE_STORE (object);
- CamelImapStore *imap_store = CAMEL_IMAP_STORE (object);
-
- remote_store->default_port = 143;
- remote_store->default_ssl_port = 993;
-
- imap_store->dir_sep = '\0';
- imap_store->current_folder = NULL;
- imap_store->connected = FALSE;
- imap_store->subscribed_folders = NULL;
-
- imap_store->tag_prefix = imap_tag_prefix++;
- if (imap_tag_prefix > 'Z')
- imap_tag_prefix = 'A';
-
- imap_store->priv = g_malloc0 (sizeof (*imap_store->priv));
-#ifdef ENABLE_THREADS
- imap_store->priv->command_lock = e_mutex_new(E_MUTEX_REC);
-#endif
-}
-
-CamelType
-camel_imap_store_get_type (void)
-{
- static CamelType camel_imap_store_type = CAMEL_INVALID_TYPE;
-
- if (camel_imap_store_type == CAMEL_INVALID_TYPE) {
- camel_imap_store_type =
- camel_type_register (CAMEL_DISCO_STORE_TYPE, "CamelImapStore",
- sizeof (CamelImapStore),
- sizeof (CamelImapStoreClass),
- (CamelObjectClassInitFunc) camel_imap_store_class_init,
- NULL,
- (CamelObjectInitFunc) camel_imap_store_init,
- (CamelObjectFinalizeFunc) camel_imap_store_finalize);
- }
-
- return camel_imap_store_type;
-}
-
-static void
-construct (CamelService *service, CamelSession *session,
- CamelProvider *provider, CamelURL *url,
- CamelException *ex)
-{
- CamelImapStore *imap_store = CAMEL_IMAP_STORE (service);
- CamelStore *store = CAMEL_STORE (service);
-
- CAMEL_SERVICE_CLASS (disco_store_class)->construct (service, session, provider, url, ex);
- if (camel_exception_is_set (ex))
- return;
-
- imap_store->storage_path = camel_session_get_storage_path (session, service, ex);
- if (camel_exception_is_set (ex))
- return;
-
- /* FIXME */
- imap_store->base_url = camel_url_to_string (service->url, (CAMEL_URL_HIDE_PASSWORD |
- CAMEL_URL_HIDE_PARAMS |
- CAMEL_URL_HIDE_AUTH));
-
- imap_store->parameters = 0;
- if (camel_url_get_param (url, "use_lsub"))
- store->flags |= CAMEL_STORE_SUBSCRIPTIONS;
- if (camel_url_get_param (url, "namespace")) {
- imap_store->parameters |= IMAP_PARAM_OVERRIDE_NAMESPACE;
- imap_store->namespace = g_strdup (camel_url_get_param (url, "namespace"));
- }
- if (camel_url_get_param (url, "check_all"))
- imap_store->parameters |= IMAP_PARAM_CHECK_ALL;
- if (camel_url_get_param (url, "filter"))
- imap_store->parameters |= IMAP_PARAM_FILTER_INBOX;
-}
-
-static void
-imap_set_server_level (CamelImapStore *store)
-{
- if (store->capabilities & IMAP_CAPABILITY_IMAP4REV1) {
- store->server_level = IMAP_LEVEL_IMAP4REV1;
- store->capabilities |= IMAP_CAPABILITY_STATUS;
- } else if (store->capabilities & IMAP_CAPABILITY_IMAP4)
- store->server_level = IMAP_LEVEL_IMAP4;
- else
- store->server_level = IMAP_LEVEL_UNKNOWN;
-}
-
-static struct {
- const char *name;
- guint32 flag;
-} capabilities[] = {
- { "IMAP4", IMAP_CAPABILITY_IMAP4 },
- { "IMAP4REV1", IMAP_CAPABILITY_IMAP4REV1 },
- { "STATUS", IMAP_CAPABILITY_STATUS },
- { "NAMESPACE", IMAP_CAPABILITY_NAMESPACE },
- { "UIDPLUS", IMAP_CAPABILITY_UIDPLUS },
- { "LITERAL+", IMAP_CAPABILITY_LITERALPLUS },
- { NULL, 0 }
-};
-
-/* we have remote-store:connect_lock by now */
-static gboolean
-connect_to_server (CamelService *service, CamelException *ex)
-{
- CamelImapStore *store = CAMEL_IMAP_STORE (service);
- CamelImapResponse *response;
- char *result, *buf, *capa, *lasts;
- int i;
-
- CAMEL_IMAP_STORE_ASSERT_LOCKED (store, command_lock);
-
- store->command = 0;
-
- /* Read the greeting, if any. FIXME: deal with PREAUTH */
- if (camel_remote_store_recv_line (CAMEL_REMOTE_STORE (service),
- &buf, ex) < 0) {
- return FALSE;
- }
- g_free (buf);
- store->connected = TRUE;
-
- /* Find out the IMAP capabilities */
- store->capabilities = 0;
- store->authtypes = g_hash_table_new (g_str_hash, g_str_equal);
- response = camel_imap_command (store, NULL, ex, "CAPABILITY");
- if (!response)
- return FALSE;
- result = camel_imap_response_extract (store, response, "CAPABILITY ", ex);
- if (!result)
- return FALSE;
-
- /* Skip over "* CAPABILITY ". */
- capa = result + 13;
- for (capa = strtok_r (capa, " ", &lasts); capa;
- capa = strtok_r (NULL, " ", &lasts)) {
- if (!strncmp (capa, "AUTH=", 5)) {
- g_hash_table_insert (store->authtypes,
- g_strdup (capa + 5),
- GINT_TO_POINTER (1));
- continue;
- }
- for (i = 0; capabilities[i].name; i++) {
- if (g_strcasecmp (capa, capabilities[i].name) == 0) {
- store->capabilities |= capabilities[i].flag;
- break;
- }
- }
- }
- g_free (result);
-
- imap_set_server_level (store);
-
- return TRUE;
-}
-
-extern CamelServiceAuthType camel_imap_password_authtype;
-
-static GList *
-query_auth_types (CamelService *service, CamelException *ex)
-{
- CamelImapStore *store = CAMEL_IMAP_STORE (service);
- CamelServiceAuthType *authtype;
- GList *types, *sasl_types, *t, *next;
- gboolean connected;
-
- CAMEL_IMAP_STORE_LOCK (store, command_lock);
- connected = connect_to_server (service, ex);
- CAMEL_IMAP_STORE_UNLOCK (store, command_lock);
- if (!connected)
- return NULL;
-
- types = CAMEL_SERVICE_CLASS (disco_store_class)->query_auth_types (service, ex);
- if (camel_exception_is_set (ex))
- return types;
-
- sasl_types = camel_sasl_authtype_list (FALSE);
- for (t = sasl_types; t; t = next) {
- authtype = t->data;
- next = t->next;
-
- if (!g_hash_table_lookup (store->authtypes, authtype->authproto)) {
- sasl_types = g_list_remove_link (sasl_types, t);
- g_list_free_1 (t);
- }
- }
- types = g_list_concat (types, sasl_types);
-
- return g_list_prepend (types, &camel_imap_password_authtype);
-}
-
-/* call refresh folder directly, bypassing the folder lock */
-static void
-refresh_folder_info (gpointer key, gpointer value, gpointer data)
-{
- CamelFolder *folder = CAMEL_FOLDER (value);
-
- CAMEL_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(folder))->refresh_info(folder, data);
-}
-
-/* This is a little 'hack' to avoid the deadlock conditions that would otherwise
- ensue when calling camel_folder_refresh_info from inside a lock */
-/* NB: on second thougts this is probably not entirely safe, but it'll do for now */
-/* the alternative is to:
- make the camel folder->lock recursive (which should probably be done)
- or remove it from camel_folder_refresh_info, and use another locking mechanism */
-static void
-imap_store_refresh_folders (CamelRemoteStore *store, CamelException *ex)
-{
- CAMEL_STORE_LOCK(store, cache_lock);
-
- g_hash_table_foreach (CAMEL_STORE (store)->folders, refresh_folder_info, ex);
-
- CAMEL_STORE_UNLOCK(store, cache_lock);
-}
-
-static gboolean
-try_auth (CamelImapStore *store, const char *mech, CamelException *ex)
-{
- CamelSasl *sasl;
- CamelImapResponse *response;
- char *resp;
- char *sasl_resp;
-
- CAMEL_IMAP_STORE_ASSERT_LOCKED (store, command_lock);
-
- sasl = camel_sasl_new ("imap", mech, CAMEL_SERVICE (store));
-
- sasl_resp = camel_sasl_challenge_base64 (sasl, NULL, ex);
-
- response = camel_imap_command (store, NULL, ex, "AUTHENTICATE %s%s%s",
- mech, sasl_resp ? " " : "",
- sasl_resp ? sasl_resp : "");
- if (!response)
- goto lose;
-
- while (!camel_sasl_authenticated (sasl)) {
- resp = camel_imap_response_extract_continuation (store, response, ex);
- if (!resp)
- goto lose;
-
- sasl_resp = camel_sasl_challenge_base64 (sasl, resp + 2, ex);
- g_free (resp);
- if (camel_exception_is_set (ex))
- goto break_and_lose;
-
- response = camel_imap_command_continuation (store, ex, sasl_resp);
- g_free (sasl_resp);
- if (!response)
- goto lose;
- }
-
- resp = camel_imap_response_extract_continuation (store, response, NULL);
- if (resp) {
- /* Oops. SASL claims we're done, but the IMAP server
- * doesn't think so...
- */
- g_free (resp);
- goto lose;
- }
-
- camel_object_unref (CAMEL_OBJECT (sasl));
-
- return TRUE;
-
- break_and_lose:
- /* Get the server out of "waiting for continuation data" mode. */
- response = camel_imap_command_continuation (store, NULL, "*");
- if (response)
- camel_imap_response_free (store, response);
-
- lose:
- if (!camel_exception_is_set (ex)) {
- camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("Bad authentication response from server."));
- }
-
- camel_object_unref (CAMEL_OBJECT (sasl));
-
- return FALSE;
-}
-
-static gboolean
-imap_auth_loop (CamelService *service, CamelException *ex)
-{
- CamelImapStore *store = CAMEL_IMAP_STORE (service);
- CamelSession *session = camel_service_get_session (service);
- CamelServiceAuthType *authtype = NULL;
- CamelImapResponse *response;
- char *errbuf = NULL;
- gboolean authenticated = FALSE;
-
- CAMEL_IMAP_STORE_ASSERT_LOCKED (store, command_lock);
-
- if (service->url->authmech) {
- if (!g_hash_table_lookup (store->authtypes, service->url->authmech)) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("IMAP server %s does not support requested "
- "authentication type %s"),
- service->url->host,
- service->url->authmech);
- return FALSE;
- }
-
- authtype = camel_sasl_authtype (service->url->authmech);
- if (!authtype) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("No support for authentication type %s"),
- service->url->authmech);
- return FALSE;
- }
-
- if (!authtype->need_password) {
- authenticated = try_auth (store, authtype->authproto, ex);
- if (!authenticated)
- return FALSE;
- }
- }
-
- while (!authenticated) {
- if (errbuf) {
- /* We need to un-cache the password before prompting again */
- camel_session_forget_password (
- session, service, "password", ex);
- g_free (service->url->passwd);
- service->url->passwd = NULL;
- }
-
- if (!service->url->passwd) {
- char *prompt;
-
- prompt = g_strdup_printf (_("%sPlease enter the IMAP "
- "password for %s@%s"),
- errbuf ? errbuf : "",
- service->url->user,
- service->url->host);
- service->url->passwd =
- camel_session_get_password (
- session, prompt, TRUE,
- service, "password", ex);
- g_free (prompt);
- g_free (errbuf);
- errbuf = NULL;
-
- if (!service->url->passwd) {
- camel_exception_set (ex, CAMEL_EXCEPTION_USER_CANCEL,
- _("You didn't enter a password."));
- return FALSE;
- }
- }
-
- if (!store->connected) {
- /* Some servers (eg, courier) will disconnect on
- * a bad password. So reconnect here.
- */
- if (!connect_to_server (service, ex))
- return FALSE;
- }
-
- if (authtype)
- authenticated = try_auth (store, authtype->authproto, ex);
- else {
- response = camel_imap_command (store, NULL, ex,
- "LOGIN %S %S",
- service->url->user,
- service->url->passwd);
- if (response) {
- camel_imap_response_free (store, response);
- authenticated = TRUE;
- }
- }
- if (!authenticated) {
- errbuf = g_strdup_printf (_("Unable to authenticate "
- "to IMAP server.\n%s\n\n"),
- camel_exception_get_description (ex));
- camel_exception_clear (ex);
- }
- }
-
- return TRUE;
-}
-
-#define IMAP_STOREINFO_VERSION 1
-
-static gboolean
-can_work_offline (CamelDiscoStore *disco_store)
-{
- CamelImapStore *store = CAMEL_IMAP_STORE (disco_store);
- char *path;
- gboolean can;
-
- path = g_strdup_printf ("%s/storeinfo", store->storage_path);
- can = access (path, F_OK) == 0;
- g_free (path);
- return can;
-}
-
-static gboolean
-imap_connect_online (CamelService *service, CamelException *ex)
-{
- CamelImapStore *store = CAMEL_IMAP_STORE (service);
- CamelImapResponse *response;
- int i, flags, len;
- char *result, *name, *path;
- FILE *storeinfo;
-
-
- CAMEL_IMAP_STORE_LOCK (store, command_lock);
- if (!connect_to_server (service, ex) ||
- !imap_auth_loop (service, ex)) {
- CAMEL_IMAP_STORE_UNLOCK (store, command_lock);
- camel_service_disconnect (service, TRUE, NULL);
- return FALSE;
- }
-
- path = g_strdup_printf ("%s/storeinfo", store->storage_path);
- storeinfo = fopen (path, "w");
- if (!storeinfo)
- g_warning ("Could not open storeinfo %s", path);
- g_free (path);
-
- /* Write header and capabilities */
- camel_file_util_encode_uint32 (storeinfo, IMAP_STOREINFO_VERSION);
- camel_file_util_encode_uint32 (storeinfo, store->capabilities);
-
- /* Get namespace and hierarchy separator */
- if ((store->capabilities & IMAP_CAPABILITY_NAMESPACE) &&
- !(store->parameters & IMAP_PARAM_OVERRIDE_NAMESPACE)) {
- response = camel_imap_command (store, NULL, ex, "NAMESPACE");
- if (!response)
- goto done;
-
- result = camel_imap_response_extract (store, response, "NAMESPACE", ex);
- if (!result)
- goto done;
-
- name = strstrcase (result, "NAMESPACE ((");
- if (name) {
- char *sep;
-
- name += 12;
- store->namespace = imap_parse_string (&name, &len);
- if (name && *name++ == ' ') {
- sep = imap_parse_string (&name, &len);
- if (sep) {
- store->dir_sep = *sep;
- g_free (sep);
- }
- }
- }
- g_free (result);
- }
- if (!store->namespace)
- store->namespace = g_strdup ("");
-
- if (!store->dir_sep) {
- if (store->server_level >= IMAP_LEVEL_IMAP4REV1) {
- /* This idiom means "tell me the hierarchy separator
- * for the given path, even if that path doesn't exist.
- */
- response = camel_imap_command (store, NULL, ex,
- "LIST %S \"\"",
- store->namespace);
- } else {
- /* Plain IMAP4 doesn't have that idiom, so we fall back
- * to "tell me about this folder", which will fail if
- * the folder doesn't exist (eg, if namespace is "").
- */
- response = camel_imap_command (store, NULL, ex,
- "LIST \"\" %S",
- store->namespace);
- }
- if (!response)
- goto done;
-
- result = camel_imap_response_extract (store, response, "LIST", NULL);
- if (result) {
- imap_parse_list_response (result, NULL, &store->dir_sep, NULL);
- g_free (result);
- }
- if (!store->dir_sep)
- store->dir_sep = '/'; /* Guess */
- }
-
- /* Write namespace/separator out */
- camel_file_util_encode_string (storeinfo, store->namespace);
- camel_file_util_encode_uint32 (storeinfo, store->dir_sep);
-
- if (CAMEL_STORE (store)->flags & CAMEL_STORE_SUBSCRIPTIONS) {
- /* Get subscribed folders */
- response = camel_imap_command (store, NULL, ex, "LSUB \"\" \"*\"");
- if (!response)
- goto done;
- store->subscribed_folders = g_hash_table_new (g_str_hash, g_str_equal);
- for (i = 0; i < response->untagged->len; i++) {
- result = response->untagged->pdata[i];
- if (!imap_parse_list_response (result, &flags, NULL, &name))
- continue;
- if (flags & (IMAP_LIST_FLAG_MARKED | IMAP_LIST_FLAG_UNMARKED))
- store->capabilities |= IMAP_CAPABILITY_useful_lsub;
- if (flags & IMAP_LIST_FLAG_NOSELECT) {
- g_free (name);
- continue;
- }
- g_hash_table_insert (store->subscribed_folders, name,
- GINT_TO_POINTER (1));
- camel_file_util_encode_string (storeinfo, result);
- }
- camel_imap_response_free (store, response);
- }
-
- done:
- fclose (storeinfo);
- CAMEL_IMAP_STORE_UNLOCK (store, command_lock);
-
- if (camel_exception_is_set (ex))
- camel_service_disconnect (service, TRUE, NULL);
- else
- imap_store_refresh_folders (CAMEL_REMOTE_STORE (store), ex);
- return !camel_exception_is_set (ex);
-}
-
-static gboolean
-imap_connect_offline (CamelService *service, CamelException *ex)
-{
- CamelImapStore *store = CAMEL_IMAP_STORE (service);
- char *buf, *name, *path;
- FILE *storeinfo;
- guint32 tmp;
-
- path = g_strdup_printf ("%s/storeinfo", store->storage_path);
- storeinfo = fopen (path, "r");
- g_free (path);
- tmp = 0;
- if (storeinfo)
- camel_file_util_decode_uint32 (storeinfo, &tmp);
- if (tmp != IMAP_STOREINFO_VERSION) {
- if (storeinfo)
- fclose (storeinfo);
-
- /* We know we're offline, so this will have to set ex
- * and return FALSE.
- */
- return camel_disco_store_check_online (CAMEL_DISCO_STORE (store), ex);
- }
-
- camel_file_util_decode_uint32 (storeinfo, &store->capabilities);
- imap_set_server_level (store);
- camel_file_util_decode_string (storeinfo, &store->namespace);
- camel_file_util_decode_uint32 (storeinfo, &tmp);
- store->dir_sep = tmp;
-
- /* Get subscribed folders */
- store->subscribed_folders = g_hash_table_new (g_str_hash, g_str_equal);
- while (camel_file_util_decode_string (storeinfo, &buf) == 0) {
- if (!imap_parse_list_response (buf, NULL, NULL, &name)) {
- g_free (buf);
- continue;
- }
- g_hash_table_insert (store->subscribed_folders, name,
- GINT_TO_POINTER (1));
- g_free (buf);
- }
-
- fclose (storeinfo);
- imap_store_refresh_folders (CAMEL_REMOTE_STORE (store), ex);
-
- store->connected = !camel_exception_is_set (ex);
- return store->connected;
-}
-
-static gboolean
-imap_disconnect_offline (CamelService *service, gboolean clean, CamelException *ex)
-{
- CamelImapStore *store = CAMEL_IMAP_STORE (service);
-
- store->connected = FALSE;
- if (store->current_folder) {
- camel_object_unref (CAMEL_OBJECT (store->current_folder));
- store->current_folder = NULL;
- }
-
- if (store->subscribed_folders) {
- g_hash_table_foreach_remove (store->subscribed_folders,
- free_key, NULL);
- g_hash_table_destroy (store->subscribed_folders);
- store->subscribed_folders = NULL;
- }
-
- if (store->authtypes) {
- g_hash_table_foreach_remove (store->authtypes,
- free_key, NULL);
- g_hash_table_destroy (store->authtypes);
- store->authtypes = NULL;
- }
-
- if (store->namespace && !(store->parameters & IMAP_PARAM_OVERRIDE_NAMESPACE)) {
- g_free (store->namespace);
- store->namespace = NULL;
- }
-
- return TRUE;
-}
-
-static gboolean
-imap_disconnect_online (CamelService *service, gboolean clean, CamelException *ex)
-{
- CamelImapStore *store = CAMEL_IMAP_STORE (service);
- CamelImapResponse *response;
-
- if (store->connected && clean) {
- response = camel_imap_command (store, NULL, ex, "LOGOUT");
- camel_imap_response_free (store, response);
- }
- imap_disconnect_offline (service, clean, ex);
-
- return TRUE;
-}
-
-static guint
-hash_folder_name (gconstpointer key)
-{
- if (g_strcasecmp (key, "INBOX") == 0)
- return g_str_hash ("INBOX");
- else
- return g_str_hash (key);
-}
-
-static gint
-compare_folder_name (gconstpointer a, gconstpointer b)
-{
- gconstpointer aname = a, bname = b;
-
- if (g_strcasecmp (a, "INBOX") == 0)
- aname = "INBOX";
- if (g_strcasecmp (b, "INBOX") == 0)
- bname = "INBOX";
- return g_str_equal (aname, bname);
-}
-
-static CamelFolder *
-no_such_folder (const char *name, CamelException *ex)
-{
- camel_exception_setv (ex, CAMEL_EXCEPTION_STORE_NO_FOLDER,
- _("No such folder %s"), name);
- return NULL;
-}
-
-static CamelFolder *
-get_folder_online (CamelStore *store, const char *folder_name,
- guint32 flags, CamelException *ex)
-{
- CamelImapStore *imap_store = CAMEL_IMAP_STORE (store);
- CamelImapResponse *response;
- CamelFolder *new_folder;
- char *folder_dir;
-
- if (!camel_remote_store_connected (CAMEL_REMOTE_STORE (store), ex))
- return NULL;
-
- if (!g_strcasecmp (folder_name, "INBOX"))
- folder_name = "INBOX";
-
- /* Lock around the whole lot to check/create atomically */
- CAMEL_IMAP_STORE_LOCK (imap_store, command_lock);
- if (imap_store->current_folder) {
- camel_object_unref (CAMEL_OBJECT (imap_store->current_folder));
- imap_store->current_folder = NULL;
- }
- response = camel_imap_command (imap_store, NULL, NULL,
- "SELECT %S", folder_name);
- if (!response) {
- if (!flags & CAMEL_STORE_FOLDER_CREATE)
- return no_such_folder (folder_name, ex);
-
- response = camel_imap_command (imap_store, NULL, ex,
- "CREATE %S", folder_name);
- if (response) {
- camel_imap_response_free (imap_store, response);
-
- response = camel_imap_command (imap_store, NULL, NULL,
- "SELECT %S", folder_name);
- }
- if (!response) {
- CAMEL_IMAP_STORE_UNLOCK (imap_store, command_lock);
- return NULL;
- }
- }
-
- folder_dir = e_path_to_physical (imap_store->storage_path, folder_name);
- new_folder = camel_imap_folder_new (store, folder_name, folder_dir, ex);
- g_free (folder_dir);
- if (new_folder) {
- imap_store->current_folder = new_folder;
- camel_imap_folder_selected (new_folder, response, ex);
- if (camel_exception_is_set (ex)) {
- camel_object_unref (CAMEL_OBJECT (new_folder));
- new_folder = imap_store->current_folder = NULL;
- } else
- camel_object_ref (CAMEL_OBJECT (imap_store->current_folder));
- }
- camel_imap_response_free_without_processing (imap_store, response);
-
- CAMEL_IMAP_STORE_UNLOCK (imap_store, command_lock);
-
- return new_folder;
-}
-
-static CamelFolder *
-get_folder_offline (CamelStore *store, const char *folder_name,
- guint32 flags, CamelException *ex)
-{
- CamelImapStore *imap_store = CAMEL_IMAP_STORE (store);
- CamelFolder *new_folder;
- char *folder_dir;
-
- if (!imap_store->connected &&
- !camel_service_connect (CAMEL_SERVICE (store), ex))
- return NULL;
-
- if (!g_strcasecmp (folder_name, "INBOX"))
- folder_name = "INBOX";
-
- folder_dir = e_path_to_physical (imap_store->storage_path, folder_name);
- if (access (folder_dir, F_OK) != 0)
- return no_such_folder (folder_name, ex);
-
- new_folder = camel_imap_folder_new (store, folder_name, folder_dir, ex);
- g_free (folder_dir);
-
- return new_folder;
-}
-
-static char *
-imap_concat (CamelImapStore *imap_store, const char *prefix, const char *suffix)
-{
- int len;
-
- len = strlen (prefix);
- if (len == 0 || prefix[len - 1] == imap_store->dir_sep)
- return g_strdup_printf ("%s%s", prefix, suffix);
- else
- return g_strdup_printf ("%s%c%s", prefix, imap_store->dir_sep, suffix);
-}
-
-static CamelFolderInfo *
-create_folder (CamelStore *store, const char *parent_name,
- const char *folder_name, CamelException *ex)
-{
- CamelImapStore *imap_store = CAMEL_IMAP_STORE (store);
- CamelImapResponse *response;
- CamelFolderInfo *fi;
- char *full_name;
-
- if (!camel_disco_store_check_online (CAMEL_DISCO_STORE (store), ex))
- return NULL;
- if (!parent_name)
- parent_name = imap_store->namespace;
- full_name = imap_concat (imap_store, parent_name, folder_name);
-
- response = camel_imap_command (imap_store, NULL, ex, "CREATE %S",
- full_name);
- if (response) {
- camel_imap_response_free (imap_store, response);
- fi = get_folder_info_online (store, full_name, 0, ex);
- } else
- fi = NULL;
-
- g_free (full_name);
- return fi;
-}
-
-static CamelFolderInfo *
-parse_list_response_as_folder_info (CamelImapStore *imap_store,
- const char *response)
-{
- CamelFolderInfo *fi;
- int flags;
- char sep, *dir, *name = NULL;
-
- if (!imap_parse_list_response (response, &flags, &sep, &dir))
- return NULL;
-
- if (sep) {
- name = strrchr (dir, sep);
- if (name && !*++name) {
- g_free (dir);
- return NULL;
- }
- }
-
- fi = g_new0 (CamelFolderInfo, 1);
- fi->full_name = dir;
- if (sep && name)
- fi->name = g_strdup (name);
- else
- fi->name = g_strdup (dir);
- if (!(flags & IMAP_LIST_FLAG_NOSELECT)) {
- CamelURL *url;
-
- url = camel_url_new (imap_store->base_url, NULL);
- g_free (url->path);
- url->path = g_strdup_printf ("/%s", dir);
- fi->url = camel_url_to_string (url, 0);
- camel_url_free (url);
- }
- if (!(flags & IMAP_LIST_FLAG_UNMARKED))
- fi->unread_message_count = -1;
-
- return fi;
-}
-
-static void
-copy_folder_name (gpointer name, gpointer key, gpointer array)
-{
- g_ptr_array_add (array, name);
-}
-
-static void
-get_subscribed_folders_by_hand (CamelImapStore *imap_store, const char *top,
- GPtrArray *folders, CamelException *ex)
-{
- GPtrArray *names;
- CamelImapResponse *response;
- CamelFolderInfo *fi;
- char *result;
- int i, toplen = strlen (top);
-
- names = g_ptr_array_new ();
- g_hash_table_foreach (imap_store->subscribed_folders,
- copy_folder_name, names);
-
- for (i = 0; i < names->len; i++) {
- response = camel_imap_command (imap_store, NULL, ex,
- "LIST \"\" %S",
- names->pdata[i]);
- if (!response) {
- g_ptr_array_free (names, TRUE);
- return;
- }
- result = camel_imap_response_extract (imap_store, response, "LIST", NULL);
- if (!result) {
- g_hash_table_remove (imap_store->subscribed_folders,
- names->pdata[i]);
- g_free (names->pdata[i]);
- g_ptr_array_remove_index_fast (names, i--);
- continue;
- }
-
- fi = parse_list_response_as_folder_info (imap_store, result);
- if (!fi)
- continue;
-
- if (strncmp (top, fi->full_name, toplen) != 0) {
- camel_folder_info_free (fi);
- continue;
- }
-
- g_ptr_array_add (folders, fi);
- }
- g_ptr_array_free (names, TRUE);
-}
-
-static void
-get_folders_online (CamelImapStore *imap_store, const char *pattern,
- GPtrArray *folders, gboolean lsub, CamelException *ex)
-{
- CamelImapResponse *response;
- CamelFolderInfo *fi;
- char *list;
- int i;
-
- response = camel_imap_command (imap_store, NULL, ex,
- "%s \"\" %S", lsub ? "LSUB" : "LIST",
- pattern);
- if (!response)
- return;
-
- for (i = 0; i < response->untagged->len; i++) {
- list = response->untagged->pdata[i];
- fi = parse_list_response_as_folder_info (imap_store, list);
- if (fi)
- g_ptr_array_add (folders, fi);
- }
- camel_imap_response_free (imap_store, response);
-}
-
-static CamelFolderInfo *
-get_folder_info_online (CamelStore *store, const char *top,
- guint32 flags, CamelException *ex)
-{
- CamelImapStore *imap_store = CAMEL_IMAP_STORE (store);
- CamelImapResponse *response;
- gboolean need_inbox = FALSE;
- GPtrArray *folders;
- const char *name;
- char *pattern, *status, *p;
- CamelFolderInfo *fi, *tree;
- int i;
-
- if (!camel_remote_store_connected (CAMEL_REMOTE_STORE (store), ex))
- return NULL;
-
- name = top;
- if (!name) {
- need_inbox = TRUE;
- name = imap_store->namespace;
- }
-
- folders = g_ptr_array_new ();
-
- /* Get top-level */
- get_folders_online (imap_store, name, folders, FALSE, ex);
- if (camel_exception_is_set (ex))
- goto lose;
- if (folders->len) {
- fi = folders->pdata[0];
- if (!fi->url) {
- camel_folder_info_free (fi);
- g_ptr_array_remove_index (folders, 0);
- }
- }
-
- /* If we want to look at only subscribed folders AND check if
- * any of them have new mail, AND the server doesn't return
- * Marked/UnMarked with LSUB, then use
- * get_subscribed_folders_by_hand. In all other cases, use a
- * single LIST or LSUB command.
- */
- if ((flags & CAMEL_STORE_FOLDER_INFO_SUBSCRIBED) &&
- !(imap_store->capabilities & IMAP_CAPABILITY_useful_lsub) &&
- (imap_store->parameters & IMAP_PARAM_CHECK_ALL)) {
- get_subscribed_folders_by_hand (imap_store, name, folders, ex);
- } else {
- pattern = imap_concat (imap_store, name, (flags & CAMEL_STORE_FOLDER_INFO_RECURSIVE) ? "*" : "%");
- get_folders_online (imap_store, pattern, folders, (flags & CAMEL_STORE_FOLDER_INFO_SUBSCRIBED), ex);
- g_free (pattern);
- }
- if (camel_exception_is_set (ex)) {
- lose:
- for (i = 0; i < folders->len; i++)
- camel_folder_info_free (folders->pdata[i]);
- g_ptr_array_free (folders, TRUE);
- return NULL;
- }
-
- /* Add INBOX, if necessary */
- if (need_inbox) {
- for (i = 0; i < folders->len; i++) {
- fi = folders->pdata[i];
- if (!g_strcasecmp (fi->full_name, "INBOX")) {
- need_inbox = FALSE;
- break;
- }
- }
-
- if (need_inbox) {
- CamelURL *url;
- char *uri;
-
- url = camel_url_new (imap_store->base_url, NULL);
- g_free (url->path);
- url->path = g_strdup ("/INBOX");
- uri = camel_url_to_string (url, 0);
- camel_url_free (url);
-
- fi = g_new0 (CamelFolderInfo, 1);
- fi->full_name = g_strdup ("INBOX");
- fi->name = g_strdup ("INBOX");
- fi->url = uri;
- fi->unread_message_count = -1;
-
- g_ptr_array_add (folders, fi);
- }
- }
-
- /* Assemble. */
- tree = camel_folder_info_build (folders, name, imap_store->dir_sep, TRUE);
- if (flags & CAMEL_STORE_FOLDER_INFO_FAST) {
- g_ptr_array_free (folders, TRUE);
- return tree;
- }
-
- /* Get unread counts. Sync flag changes to the server first so
- * it has the same ideas about read/unread as we do.
- */
- camel_store_sync (store, NULL);
- for (i = 0; i < folders->len; i++) {
- fi = folders->pdata[i];
-
- /* Don't check if it doesn't contain messages or if it
- * was \UnMarked.
- */
- if (!fi->url || fi->unread_message_count != -1)
- continue;
- /* Don't check if it's not INBOX and we're only
- * checking INBOX.
- */
- if ((!(imap_store->parameters & IMAP_PARAM_CHECK_ALL))
- && (g_strcasecmp (fi->name, "INBOX") != 0))
- continue;
-
- /* UW will give cached data for the currently selected
- * folder. Grr. Well, I guess this also potentially
- * saves us one IMAP command.
- */
- if (imap_store->current_folder &&
- !strcmp (imap_store->current_folder->full_name, fi->full_name)) {
- fi->unread_message_count = camel_folder_get_unread_message_count (imap_store->current_folder);
- continue;
- }
-
- response = camel_imap_command (imap_store, NULL, NULL,
- "STATUS %S (UNSEEN)",
- fi->full_name);
- if (!response)
- continue;
- status = camel_imap_response_extract (imap_store, response,
- "STATUS", NULL);
- if (!status)
- continue;
-
- p = strstrcase (status, "UNSEEN");
- if (p)
- fi->unread_message_count = strtoul (p + 6, NULL, 10);
- g_free (status);
- }
-
- g_ptr_array_free (folders, TRUE);
- return tree;
-}
-
-static gboolean
-get_one_folder_offline (const char *physical_path, const char *path, gpointer data)
-{
- GPtrArray *folders = data;
- CamelImapStore *imap_store = folders->pdata[0];
- CamelFolderInfo *fi;
-
- if (*path++ != '/')
- return TRUE;
-
- fi = g_new0 (CamelFolderInfo, 1);
- fi->full_name = g_strdup (path);
- fi->name = strrchr (fi->full_name, imap_store->dir_sep);
- if (fi->name)
- fi->name = g_strdup (fi->name + 1);
- else
- fi->name = g_strdup (fi->full_name);
-
- fi->url = g_strdup_printf ("%s/%s", imap_store->base_url, path);
-
- /* FIXME: check summary */
- fi->unread_message_count = -1;
-
- g_ptr_array_add (folders, fi);
- return TRUE;
-}
-
-static CamelFolderInfo *
-get_folder_info_offline (CamelStore *store, const char *top,
- guint32 flags, CamelException *ex)
-{
- CamelImapStore *imap_store = CAMEL_IMAP_STORE (store);
- CamelFolderInfo *fi;
- GPtrArray *folders;
-
- if (!imap_store->connected &&
- !camel_service_connect (CAMEL_SERVICE (store), ex))
- return NULL;
-
- if ((store->flags & CAMEL_STORE_SUBSCRIPTIONS) &&
- !(flags & CAMEL_STORE_FOLDER_INFO_SUBSCRIBED)) {
- camel_disco_store_check_online (CAMEL_DISCO_STORE (store), ex);
- return NULL;
- }
-
- /* FIXME: obey other flags */
-
- folders = g_ptr_array_new ();
-
- /* A kludge to avoid having to pass a struct to the callback */
- g_ptr_array_add (folders, imap_store);
- if (!e_path_find_folders (imap_store->storage_path, get_one_folder_offline, folders)) {
- camel_disco_store_check_online (CAMEL_DISCO_STORE (imap_store), ex);
- fi = NULL;
- } else {
- g_ptr_array_remove_index_fast (folders, 0);
- fi = camel_folder_info_build (folders, imap_store->namespace,
- imap_store->dir_sep, TRUE);
- }
-
- g_ptr_array_free (folders, TRUE);
- return fi;
-}
-
-static gboolean
-folder_subscribed (CamelStore *store, const char *folder_name)
-{
- CamelImapStore *imap_store = CAMEL_IMAP_STORE (store);
-
- g_return_val_if_fail (imap_store->subscribed_folders != NULL, FALSE);
-
- return g_hash_table_lookup (imap_store->subscribed_folders,
- folder_name) != NULL;
-}
-
-static void
-subscribe_folder (CamelStore *store, const char *folder_name,
- CamelException *ex)
-{
- CamelImapStore *imap_store = CAMEL_IMAP_STORE (store);
- CamelImapResponse *response;
- CamelFolderInfo *fi;
- char *name;
-
- if (!camel_disco_store_check_online (CAMEL_DISCO_STORE (store), ex))
- return;
- if (!camel_remote_store_connected (CAMEL_REMOTE_STORE (store), ex))
- return;
-
- response = camel_imap_command (imap_store, NULL, ex,
- "SUBSCRIBE %S", folder_name);
- if (!response)
- return;
- camel_imap_response_free (imap_store, response);
-
- g_hash_table_insert (imap_store->subscribed_folders,
- g_strdup (folder_name), GUINT_TO_POINTER (1));
-
- name = strrchr (folder_name, imap_store->dir_sep);
- if (name)
- name++;
-
- fi = g_new0 (CamelFolderInfo, 1);
- fi->full_name = g_strdup (folder_name);
- fi->name = g_strdup (name);
- fi->url = g_strdup_printf ("%s/%s", imap_store->base_url, folder_name);
- fi->unread_message_count = -1;
-
- camel_object_trigger_event (CAMEL_OBJECT (store), "folder_created", fi);
- camel_folder_info_free (fi);
-}
-
-static void
-unsubscribe_folder (CamelStore *store, const char *folder_name,
- CamelException *ex)
-{
- CamelImapStore *imap_store = CAMEL_IMAP_STORE (store);
- CamelImapResponse *response;
- gpointer key, value;
- CamelFolderInfo *fi;
- char *name;
-
- if (!camel_disco_store_check_online (CAMEL_DISCO_STORE (store), ex))
- return;
- if (!camel_remote_store_connected (CAMEL_REMOTE_STORE (store), ex))
- return;
-
- response = camel_imap_command (imap_store, NULL, ex,
- "UNSUBSCRIBE %S", folder_name);
- if (!response)
- return;
- camel_imap_response_free (imap_store, response);
-
- g_hash_table_lookup_extended (imap_store->subscribed_folders,
- folder_name, &key, &value);
- g_hash_table_remove (imap_store->subscribed_folders, folder_name);
- g_free (key);
-
- name = strrchr (folder_name, imap_store->dir_sep);
- if (name)
- name++;
-
- fi = g_new0 (CamelFolderInfo, 1);
- fi->full_name = g_strdup (folder_name);
- fi->name = g_strdup (name);
- fi->url = g_strdup_printf ("%s/%s", imap_store->base_url, folder_name);
- fi->unread_message_count = -1;
-
- camel_object_trigger_event (CAMEL_OBJECT (store), "folder_deleted", fi);
- camel_folder_info_free (fi);
-}
-
-static void
-imap_keepalive (CamelRemoteStore *store)
-{
- CamelImapStore *imap_store = CAMEL_IMAP_STORE (store);
- CamelImapResponse *response;
-
- response = camel_imap_command (imap_store, NULL, NULL, "NOOP");
- camel_imap_response_free (imap_store, response);
-}
diff --git a/camel/providers/imap/camel-imap-store.h b/camel/providers/imap/camel-imap-store.h
deleted file mode 100644
index 8c0453cb53..0000000000
--- a/camel/providers/imap/camel-imap-store.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-imap-store.h : class for an imap store */
-
-/*
- * Authors: Jeffrey Stedfast <fejj@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_IMAP_STORE_H
-#define CAMEL_IMAP_STORE_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include "camel-imap-types.h"
-#include "camel-disco-store.h"
-
-#define CAMEL_IMAP_STORE_TYPE (camel_imap_store_get_type ())
-#define CAMEL_IMAP_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_IMAP_STORE_TYPE, CamelImapStore))
-#define CAMEL_IMAP_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_IMAP_STORE_TYPE, CamelImapStoreClass))
-#define CAMEL_IS_IMAP_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_IMAP_STORE_TYPE))
-
-typedef enum {
- IMAP_LEVEL_UNKNOWN,
- IMAP_LEVEL_IMAP4,
- IMAP_LEVEL_IMAP4REV1
-} CamelImapServerLevel;
-
-#define IMAP_CAPABILITY_IMAP4 (1 << 0)
-#define IMAP_CAPABILITY_IMAP4REV1 (1 << 1)
-#define IMAP_CAPABILITY_STATUS (1 << 2)
-#define IMAP_CAPABILITY_NAMESPACE (1 << 3)
-#define IMAP_CAPABILITY_UIDPLUS (1 << 4)
-#define IMAP_CAPABILITY_LITERALPLUS (1 << 5)
-#define IMAP_CAPABILITY_useful_lsub (1 << 6)
-
-#define IMAP_PARAM_OVERRIDE_NAMESPACE (1 << 0)
-#define IMAP_PARAM_CHECK_ALL (1 << 1)
-#define IMAP_PARAM_FILTER_INBOX (1 << 2)
-
-struct _CamelImapStore {
- CamelDiscoStore parent_object;
- struct _CamelImapStorePrivate *priv;
-
- /* Information about the command channel / connection status */
- gboolean connected;
- char tag_prefix;
- guint32 command;
- CamelFolder *current_folder;
-
- /* Information about the server */
- CamelImapServerLevel server_level;
- guint32 capabilities, parameters;
- char *namespace, dir_sep, *base_url, *storage_path;
- GHashTable *authtypes, *subscribed_folders;
-};
-
-
-typedef struct {
- CamelDiscoStoreClass parent_class;
-
-} CamelImapStoreClass;
-
-
-/* Standard Camel function */
-CamelType camel_imap_store_get_type (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_IMAP_STORE_H */
diff --git a/camel/providers/imap/camel-imap-summary.c b/camel/providers/imap/camel-imap-summary.c
deleted file mode 100644
index cd7444559e..0000000000
--- a/camel/providers/imap/camel-imap-summary.c
+++ /dev/null
@@ -1,199 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors:
- * Michael Zucchi <notzed@helixcode.com>
- * Dan Winship <danw@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#include <sys/stat.h>
-#include <sys/uio.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "camel-imap-summary.h"
-#include "camel-file-utils.h"
-
-#define CAMEL_IMAP_SUMMARY_VERSION (0x300)
-
-static int summary_header_load (CamelFolderSummary *, FILE *);
-static int summary_header_save (CamelFolderSummary *, FILE *);
-
-static CamelMessageInfo *message_info_load (CamelFolderSummary *s, FILE *in);
-static int message_info_save (CamelFolderSummary *s, FILE *out,
- CamelMessageInfo *info);
-static CamelMessageContentInfo *content_info_load (CamelFolderSummary *s, FILE *in);
-static int content_info_save (CamelFolderSummary *s, FILE *out,
- CamelMessageContentInfo *info);
-
-static void camel_imap_summary_class_init (CamelImapSummaryClass *klass);
-static void camel_imap_summary_init (CamelImapSummary *obj);
-
-static CamelFolderSummaryClass *camel_imap_summary_parent;
-
-CamelType
-camel_imap_summary_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(
- camel_folder_summary_get_type(), "CamelImapSummary",
- sizeof (CamelImapSummary),
- sizeof (CamelImapSummaryClass),
- (CamelObjectClassInitFunc) camel_imap_summary_class_init,
- NULL,
- (CamelObjectInitFunc) camel_imap_summary_init,
- NULL);
- }
-
- return type;
-}
-
-static void
-camel_imap_summary_class_init (CamelImapSummaryClass *klass)
-{
- CamelFolderSummaryClass *cfs_class = (CamelFolderSummaryClass *) klass;
-
- camel_imap_summary_parent = CAMEL_FOLDER_SUMMARY_CLASS (camel_type_get_global_classfuncs (camel_folder_summary_get_type()));
-
- cfs_class->summary_header_load = summary_header_load;
- cfs_class->summary_header_save = summary_header_save;
- cfs_class->message_info_load = message_info_load;
- cfs_class->message_info_save = message_info_save;
- cfs_class->content_info_load = content_info_load;
- cfs_class->content_info_save = content_info_save;
-}
-
-static void
-camel_imap_summary_init (CamelImapSummary *obj)
-{
- CamelFolderSummary *s = (CamelFolderSummary *)obj;
-
- /* subclasses need to set the right instance data sizes */
- s->message_info_size = sizeof(CamelImapMessageInfo);
- s->content_info_size = sizeof(CamelImapMessageContentInfo);
-
- /* and a unique file version */
- s->version += CAMEL_IMAP_SUMMARY_VERSION;
-}
-
-/**
- * camel_imap_summary_new:
- * @filename: the file to store the summary in.
- *
- * This will create a new CamelImapSummary object and read in the
- * summary data from disk, if it exists.
- *
- * Return value: A new CamelImapSummary object.
- **/
-CamelFolderSummary *
-camel_imap_summary_new (const char *filename)
-{
- CamelFolderSummary *summary = CAMEL_FOLDER_SUMMARY (
- camel_object_new (camel_imap_summary_get_type ()));
-
- camel_folder_summary_set_build_content (summary, TRUE);
- camel_folder_summary_set_filename (summary, filename);
-
- if (camel_folder_summary_load (summary) == -1) {
- camel_folder_summary_clear (summary);
- camel_folder_summary_touch (summary);
- }
-
- return summary;
-}
-
-
-static int
-summary_header_load (CamelFolderSummary *s, FILE *in)
-{
- CamelImapSummary *ims = CAMEL_IMAP_SUMMARY (s);
-
- if (camel_imap_summary_parent->summary_header_load (s, in) == -1)
- return -1;
-
- return camel_file_util_decode_uint32 (in, &ims->validity);
-}
-
-static int
-summary_header_save (CamelFolderSummary *s, FILE *out)
-{
- CamelImapSummary *ims = CAMEL_IMAP_SUMMARY(s);
-
- if (camel_imap_summary_parent->summary_header_save (s, out) == -1)
- return -1;
-
- return camel_file_util_encode_uint32 (out, ims->validity);
-}
-
-
-static CamelMessageInfo *
-message_info_load (CamelFolderSummary *s, FILE *in)
-{
- CamelMessageInfo *info;
- CamelImapMessageInfo *iinfo;
-
- info = camel_imap_summary_parent->message_info_load (s, in);
- if (info) {
- iinfo = (CamelImapMessageInfo *)info;
-
- if (camel_file_util_decode_uint32 (in, &iinfo->server_flags) == -1)
- goto error;
- }
-
- return info;
-error:
- camel_folder_summary_info_free (s, info);
- return NULL;
-}
-
-static int
-message_info_save (CamelFolderSummary *s, FILE *out, CamelMessageInfo *info)
-{
- CamelImapMessageInfo *iinfo = (CamelImapMessageInfo *)info;
-
- if (camel_imap_summary_parent->message_info_save (s, out, info) == -1)
- return -1;
-
- return camel_file_util_encode_uint32 (out, iinfo->server_flags);
-}
-
-
-static CamelMessageContentInfo *
-content_info_load (CamelFolderSummary *s, FILE *in)
-{
- if (fgetc (in))
- return camel_imap_summary_parent->content_info_load (s, in);
- else
- return camel_folder_summary_content_info_new (s);
-}
-
-static int
-content_info_save (CamelFolderSummary *s, FILE *out,
- CamelMessageContentInfo *info)
-{
- if (info->type) {
- fputc (1, out);
- return camel_imap_summary_parent->content_info_save (s, out, info);
- } else
- return fputc (0, out);
-}
diff --git a/camel/providers/imap/camel-imap-summary.h b/camel/providers/imap/camel-imap-summary.h
deleted file mode 100644
index e3e51c5b7d..0000000000
--- a/camel/providers/imap/camel-imap-summary.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors:
- * Michael Zucchi <notzed@helixcode.com>
- * Dan Winship <danw@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef _CAMEL_IMAP_SUMMARY_H
-#define _CAMEL_IMAP_SUMMARY_H
-
-#include "camel-imap-types.h"
-#include <camel/camel-folder-summary.h>
-#include <camel/camel-exception.h>
-
-#define CAMEL_IMAP_SUMMARY(obj) CAMEL_CHECK_CAST (obj, camel_imap_summary_get_type (), CamelImapSummary)
-#define CAMEL_IMAP_SUMMARY_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_imap_summary_get_type (), CamelImapSummaryClass)
-#define CAMEL_IS_IMAP_SUMMARY(obj) CAMEL_CHECK_TYPE (obj, camel_imap_summary_get_type ())
-
-#define CAMEL_IMAP_SERVER_FLAGS (CAMEL_MESSAGE_ANSWERED | \
- CAMEL_MESSAGE_DELETED | \
- CAMEL_MESSAGE_DRAFT | \
- CAMEL_MESSAGE_FLAGGED | \
- CAMEL_MESSAGE_SEEN)
-
-typedef struct _CamelImapSummaryClass CamelImapSummaryClass;
-
-typedef struct _CamelImapMessageContentInfo {
- CamelMessageContentInfo info;
-
-} CamelImapMessageContentInfo;
-
-typedef struct _CamelImapMessageInfo {
- CamelMessageInfo info;
-
- guint32 server_flags;
-} CamelImapMessageInfo;
-
-struct _CamelImapSummary {
- CamelFolderSummary parent;
-
- guint32 validity;
-};
-
-struct _CamelImapSummaryClass {
- CamelFolderSummaryClass parent_class;
-
-};
-
-guint camel_imap_summary_get_type (void);
-CamelFolderSummary *camel_imap_summary_new (const char *filename);
-
-#endif /* ! _CAMEL_IMAP_SUMMARY_H */
-
diff --git a/camel/providers/imap/camel-imap-types.h b/camel/providers/imap/camel-imap-types.h
deleted file mode 100644
index e5d2d18dc1..0000000000
--- a/camel/providers/imap/camel-imap-types.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-imap-types.h: IMAP types */
-
-/*
- * Copyright (C) 2001 Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_IMAP_TYPES_H
-#define CAMEL_IMAP_TYPES_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include "camel-types.h"
-
-typedef struct _CamelImapFolder CamelImapFolder;
-typedef struct _CamelImapMessageCache CamelImapMessageCache;
-typedef struct _CamelImapResponse CamelImapResponse;
-typedef struct _CamelImapSearch CamelImapSearch;
-typedef struct _CamelImapStore CamelImapStore;
-typedef struct _CamelImapSummary CamelImapSummary;
-
-#endif /* CAMEL_IMAP_TYPES_H */
diff --git a/camel/providers/imap/camel-imap-utils.c b/camel/providers/imap/camel-imap-utils.c
deleted file mode 100644
index 0d61373b6e..0000000000
--- a/camel/providers/imap/camel-imap-utils.c
+++ /dev/null
@@ -1,725 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@helixcode.com>
- *
- * Copyright 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#include <ctype.h>
-#include <stdio.h>
-#include <string.h>
-#include <time.h>
-
-#include "camel-imap-utils.h"
-#include "camel-imap-summary.h"
-#include "camel-folder.h"
-
-#define d(x) x
-
-char *
-imap_next_word (const char *buf)
-{
- char *word;
-
- /* skip over current word */
- for (word = (char *)buf; *word && *word != ' '; word++);
-
- /* skip over white space */
- for ( ; *word && *word == ' '; word++);
-
- return word;
-}
-
-/**
- * imap_parse_list_response:
- * @buf: the LIST or LSUB response
- * @flags: a pointer to a variable to store the flags in, or %NULL
- * @sep: a pointer to a variable to store the hierarchy separator in, or %NULL
- * @folder: a pointer to a variable to store the folder name in, or %NULL
- *
- * Parses a LIST or LSUB response and returns the desired parts of it.
- * If @folder is non-%NULL, its value must be freed by the caller.
- *
- * Return value: whether or not the response was successfully parsed.
- **/
-gboolean
-imap_parse_list_response (const char *buf, int *flags, char *sep, char **folder)
-{
- char *word;
- int len;
-
- if (*buf != '*')
- return FALSE;
-
- word = imap_next_word (buf);
- if (g_strncasecmp (word, "LIST", 4) && g_strncasecmp (word, "LSUB", 4))
- return FALSE;
-
- /* get the flags */
- word = imap_next_word (word);
- if (*word != '(')
- return FALSE;
-
- if (flags)
- *flags = 0;
-
- word++;
- while (*word != ')') {
- len = strcspn (word, " )");
- if (flags) {
- if (!g_strncasecmp (word, "\\Noinferiors", len))
- *flags |= IMAP_LIST_FLAG_NOINFERIORS;
- else if (!g_strncasecmp (word, "\\Noselect", len))
- *flags |= IMAP_LIST_FLAG_NOSELECT;
- else if (!g_strncasecmp (word, "\\Marked", len))
- *flags |= IMAP_LIST_FLAG_MARKED;
- else if (!g_strncasecmp (word, "\\Unmarked", len))
- *flags |= IMAP_LIST_FLAG_UNMARKED;
- }
-
- word += len;
- while (*word == ' ')
- word++;
- }
-
- /* get the directory separator */
- word = imap_next_word (word);
- if (!strncmp (word, "NIL", 3)) {
- if (sep)
- *sep = '\0';
- } else if (*word++ == '"') {
- if (*word == '\\')
- word++;
- if (sep)
- *sep = *word;
- word++;
- if (*word++ != '"')
- return FALSE;
- } else
- return FALSE;
-
- if (folder) {
- /* get the folder name */
- word = imap_next_word (word);
- *folder = imap_parse_astring (&word, &len);
- return *folder != NULL;
- }
-
- return TRUE;
-}
-
-char *
-imap_create_flag_list (guint32 flags)
-{
- GString *gstr;
- char *flag_list;
-
- gstr = g_string_new ("(");
-
- if (flags & CAMEL_MESSAGE_ANSWERED)
- g_string_append (gstr, "\\Answered ");
- if (flags & CAMEL_MESSAGE_DELETED)
- g_string_append (gstr, "\\Deleted ");
- if (flags & CAMEL_MESSAGE_DRAFT)
- g_string_append (gstr, "\\Draft ");
- if (flags & CAMEL_MESSAGE_FLAGGED)
- g_string_append (gstr, "\\Flagged ");
- if (flags & CAMEL_MESSAGE_SEEN)
- g_string_append (gstr, "\\Seen ");
-
- if (gstr->str[gstr->len - 1] == ' ')
- gstr->str[gstr->len - 1] = ')';
- else
- g_string_append_c (gstr, ')');
-
- flag_list = gstr->str;
- g_string_free (gstr, FALSE);
- return flag_list;
-}
-
-guint32
-imap_parse_flag_list (char **flag_list_p)
-{
- char *flag_list = *flag_list_p;
- guint32 flags = 0;
- int len;
-
- if (*flag_list++ != '(') {
- *flag_list_p = NULL;
- return 0;
- }
-
- while (*flag_list && *flag_list != ')') {
- len = strcspn (flag_list, " )");
- if (!g_strncasecmp (flag_list, "\\Answered", len))
- flags |= CAMEL_MESSAGE_ANSWERED;
- else if (!g_strncasecmp (flag_list, "\\Deleted", len))
- flags |= CAMEL_MESSAGE_DELETED;
- else if (!g_strncasecmp (flag_list, "\\Draft", len))
- flags |= CAMEL_MESSAGE_DRAFT;
- else if (!g_strncasecmp (flag_list, "\\Flagged", len))
- flags |= CAMEL_MESSAGE_FLAGGED;
- else if (!g_strncasecmp (flag_list, "\\Seen", len))
- flags |= CAMEL_MESSAGE_SEEN;
-
- flag_list += len;
- if (*flag_list == ' ')
- flag_list++;
- }
-
- if (*flag_list++ != ')') {
- *flag_list_p = NULL;
- return 0;
- }
-
- *flag_list_p = flag_list;
- return flags;
-}
-
-static char imap_atom_specials[128] = {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
-};
-#define imap_is_atom_char(ch) (isprint (ch) && !imap_atom_specials[ch])
-
-/**
- * imap_parse_string_generic:
- * @str_p: a pointer to a string
- * @len: a pointer to an int to return the length in
- * @type: type of string (#IMAP_STRING, #IMAP_ASTRING, or #IMAP_NSTRING)
- * to parse.
- *
- * This parses an IMAP "string" (quoted string or literal), "nstring"
- * (NIL or string), or "astring" (atom or string) starting at *@str_p.
- * On success, *@str_p will point to the first character after the end
- * of the string, and *@len will contain the length of the returned
- * string. On failure, *@str_p will be set to %NULL.
- *
- * This assumes that the string is in the form returned by
- * camel_imap_command(): that line breaks are indicated by LF rather
- * than CRLF.
- *
- * Return value: the parsed string, or %NULL if a NIL or no string
- * was parsed. (In the former case, *@str_p will be %NULL; in the
- * latter, it will point to the character after the NIL.)
- **/
-char *
-imap_parse_string_generic (char **str_p, int *len, int type)
-{
- char *str = *str_p;
- char *out;
-
- if (!str)
- return NULL;
- else if (*str == '"') {
- char *p;
- int size;
-
- str++;
- size = strcspn (str, "\"") + 1;
- p = out = g_malloc (size);
-
- while (*str && *str != '"') {
- if (*str == '\\')
- str++;
- *p++ = *str++;
- if (p - out == size) {
- out = g_realloc (out, size * 2);
- p = out + size;
- size *= 2;
- }
- }
- if (*str != '"') {
- *str_p = NULL;
- g_free (out);
- return NULL;
- }
- *p = '\0';
- *str_p = str + 1;
- *len = strlen (out);
- return out;
- } else if (*str == '{') {
- *len = strtoul (str + 1, (char **)&str, 10);
- if (*str++ != '}' || *str++ != '\n' || strlen (str) < *len) {
- *str_p = NULL;
- return NULL;
- }
-
- out = g_strndup (str, *len);
- *str_p = str + *len;
- return out;
- } else if (type == IMAP_NSTRING && !g_strncasecmp (str, "nil", 3)) {
- *str_p += 3;
- *len = 0;
- return NULL;
- } else if (type == IMAP_ASTRING &&
- imap_is_atom_char ((unsigned char)*str)) {
- while (imap_is_atom_char ((unsigned char)*str))
- str++;
-
- *len = str - *str_p;
- str = g_strndup (*str_p, *len);
- *str_p += *len;
- return str;
- } else {
- *str_p = NULL;
- return NULL;
- }
-}
-
-static inline void
-skip_char (char **str_p, char ch)
-{
- if (*str_p && **str_p == ch)
- *str_p = *str_p + 1;
- else
- *str_p = NULL;
-}
-
-/* Skip atom, string, or number */
-static void
-skip_asn (char **str_p)
-{
- char *str = *str_p;
-
- if (!str)
- return;
- else if (*str == '"') {
- while (*++str && *str != '"') {
- if (*str == '\\') {
- str++;
- if (!*str)
- break;
- }
- }
- if (*str == '"')
- *str_p = str + 1;
- else
- *str_p = NULL;
- } else if (*str == '{') {
- unsigned long len;
-
- len = strtoul (str + 1, &str, 10);
- if (*str != '}' || *(str + 1) != '\n' ||
- strlen (str + 2) < len) {
- *str_p = NULL;
- return;
- }
- *str_p = str + 2 + len;
- } else {
- /* We assume the string is well-formed and don't
- * bother making sure it's a valid atom.
- */
- while (*str && *str != ')' && *str != ' ')
- str++;
- *str_p = str;
- }
-}
-
-void
-imap_skip_list (char **str_p)
-{
- skip_char (str_p, '(');
- while (*str_p && **str_p != ')') {
- if (**str_p == '(')
- imap_skip_list (str_p);
- else
- skip_asn (str_p);
- if (*str_p && **str_p == ' ')
- skip_char (str_p, ' ');
- }
- skip_char (str_p, ')');
-}
-
-static void
-parse_params (char **parms_p, CamelContentType *type)
-{
- char *parms = *parms_p, *name, *value;
- int len;
-
- if (!g_strncasecmp (parms, "nil", 3)) {
- *parms_p += 3;
- return;
- }
-
- if (*parms++ != '(') {
- *parms_p = NULL;
- return;
- }
-
- while (parms && *parms != ')') {
- name = imap_parse_nstring (&parms, &len);
- skip_char (&parms, ' ');
- value = imap_parse_nstring (&parms, &len);
-
- if (name && value)
- header_content_type_set_param (type, name, value);
- g_free (name);
- g_free (value);
-
- if (parms && *parms == ' ')
- parms++;
- }
-
- if (!parms || *parms++ != ')') {
- *parms_p = NULL;
- return;
- }
- *parms_p = parms;
-}
-
-/**
- * imap_parse_body:
- * @body_p: pointer to the start of an IMAP "body"
- * @folder: an imap folder
- * @ci: a CamelMessageContentInfo to fill in
- *
- * This filles in @ci with data from *@body_p. On success *@body_p
- * will point to the character after the body. On failure, it will be
- * set to %NULL and @ci will be unchanged.
- **/
-void
-imap_parse_body (char **body_p, CamelFolder *folder,
- CamelMessageContentInfo *ci)
-{
- char *body = *body_p;
- CamelMessageContentInfo *child;
- CamelContentType *type;
- int len;
-
- if (*body++ != '(') {
- *body_p = NULL;
- return;
- }
-
- if (*body == '(') {
- /* multipart */
- GPtrArray *children;
- char *subtype;
- int i;
-
- /* Parse the child body parts */
- children = g_ptr_array_new ();
- i = 0;
- while (body && *body == '(') {
- child = camel_folder_summary_content_info_new (folder->summary);
- g_ptr_array_add (children, child);
- imap_parse_body (&body, folder, child);
- if (!body)
- break;
- child->parent = ci;
- }
- skip_char (&body, ' ');
-
- /* Parse the multipart subtype */
- subtype = imap_parse_string (&body, &len);
-
- /* If there is a parse error, abort. */
- if (!body) {
- for (i = 0; i < children->len; i++) {
- child = children->pdata[i];
- camel_folder_summary_content_info_free (folder->summary, child);
- }
- g_ptr_array_free (children, TRUE);
- *body_p = NULL;
- return;
- }
-
- g_strdown (subtype);
- ci->type = header_content_type_new ("multipart", subtype);
- g_free (subtype);
-
- /* Chain the children. */
- ci->childs = children->pdata[0];
- ci->size = 0;
- for (i = 0; i < children->len - 1; i++) {
- child = children->pdata[i];
- child->next = children->pdata[i + 1];
- ci->size += child->size;
- }
- g_ptr_array_free (children, TRUE);
- } else {
- /* single part */
- char *main_type, *subtype;
- char *id, *description, *encoding;
- guint32 size;
-
- main_type = imap_parse_string (&body, &len);
- skip_char (&body, ' ');
- subtype = imap_parse_string (&body, &len);
- skip_char (&body, ' ');
- if (!body) {
- g_free (main_type);
- g_free (subtype);
- *body_p = NULL;
- return;
- }
- g_strdown (main_type);
- g_strdown (subtype);
- type = header_content_type_new (main_type, subtype);
- g_free (main_type);
- g_free (subtype);
- parse_params (&body, type);
- skip_char (&body, ' ');
-
- id = imap_parse_nstring (&body, &len);
- skip_char (&body, ' ');
- description = imap_parse_nstring (&body, &len);
- skip_char (&body, ' ');
- encoding = imap_parse_string (&body, &len);
- skip_char (&body, ' ');
- if (body)
- size = strtoul (body, &body, 10);
-
- child = NULL;
- if (header_content_type_is (type, "message", "rfc822")) {
- skip_char (&body, ' ');
- imap_skip_list (&body); /* envelope */
- skip_char (&body, ' ');
- child = camel_folder_summary_content_info_new (folder->summary);
- imap_parse_body (&body, folder, child);
- if (!body)
- camel_folder_summary_content_info_free (folder->summary, child);
- skip_char (&body, ' ');
- if (body)
- strtoul (body, &body, 10);
- } else if (header_content_type_is (type, "text", "*")) {
- if (body)
- strtoul (body, &body, 10);
- }
-
- if (body) {
- ci->type = type;
- ci->id = id;
- ci->description = description;
- ci->encoding = encoding;
- ci->size = size;
- ci->childs = child;
- } else {
- header_content_type_unref (type);
- g_free (id);
- g_free (description);
- g_free (encoding);
- }
- }
-
- if (!body || *body++ != ')') {
- *body_p = NULL;
- return;
- }
-
- *body_p = body;
-}
-
-/**
- * imap_quote_string:
- * @str: the string to quote, which must not contain CR or LF
- *
- * Return value: an IMAP "quoted" corresponding to the string, which
- * the caller must free.
- **/
-char *
-imap_quote_string (const char *str)
-{
- const char *p;
- char *quoted, *q;
- int len;
-
- len = strlen (str);
- p = str;
- while ((p = strpbrk (p, "\"\\"))) {
- len++;
- p++;
- }
-
- quoted = q = g_malloc (len + 3);
- *q++ = '"';
- while ((p = strpbrk (str, "\"\\"))) {
- memcpy (q, str, p - str);
- q += p - str;
- *q++ = '\\';
- *q++ = *p++;
- str = p;
- }
- sprintf (q, "%s\"", str);
-
- return quoted;
-}
-
-
-static inline unsigned long
-get_summary_uid_numeric (CamelFolderSummary *summary, int index)
-{
- CamelMessageInfo *info;
- unsigned long uid;
-
- info = camel_folder_summary_index (summary, index);
- uid = strtoul (camel_message_info_uid (info), NULL, 10);
- camel_folder_summary_info_free (summary, info);
- return uid;
-}
-
-/**
- * imap_uid_array_to_set:
- * @summary: summary for the folder the UIDs come from
- * @uids: a (sorted) array of UIDs
- *
- * Return value: an IMAP "set" covering the listed UIDs, which the
- * caller must free with g_free().
- **/
-char *
-imap_uid_array_to_set (CamelFolderSummary *summary, GPtrArray *uids)
-{
- int ui, si, scount;
- unsigned long last_uid, next_summary_uid, this_uid;
- gboolean range = FALSE;
- GString *gset;
- char *set;
-
- gset = g_string_new (uids->pdata[0]);
- last_uid = strtoul (uids->pdata[0], NULL, 10);
- next_summary_uid = 0;
- scount = camel_folder_summary_count (summary);
-
- for (ui = 1, si = 0; ui < uids->len; ui++) {
- /* Find the next UID in the summary after the one we
- * just wrote out.
- */
- for (; last_uid >= next_summary_uid && si < scount; si++)
- next_summary_uid = get_summary_uid_numeric (summary, si);
- if (last_uid >= next_summary_uid)
- next_summary_uid = (unsigned long) -1;
-
- /* Now get the next UID from @uids */
- this_uid = strtoul (uids->pdata[ui], NULL, 10);
- if (this_uid == next_summary_uid)
- range = TRUE;
- else {
- if (range) {
- g_string_sprintfa (gset, ":%lu", last_uid);
- range = FALSE;
- }
- g_string_sprintfa (gset, ",%lu", this_uid);
- }
-
- last_uid = this_uid;
- }
-
- if (range)
- g_string_sprintfa (gset, ":%lu", last_uid);
-
- set = gset->str;
- g_string_free (gset, FALSE);
-
- return set;
-}
-
-/**
- * imap_uid_set_to_array:
- * @summary: summary for the folder the UIDs come from
- * @uids: a pointer to the start of an IMAP "set" of UIDs
- *
- * Fills an array with the UIDs corresponding to @uids and @summary.
- * There can be text after the uid set in @uids, which will be
- * ignored.
- *
- * If @uids specifies a range of UIDs that extends outside the range
- * of @summary, the function will assume that all of the "missing" UIDs
- * do exist.
- *
- * Return value: the array of uids, which the caller must free with
- * imap_uid_array_free(). (Or %NULL if the uid set can't be parsed.)
- **/
-GPtrArray *
-imap_uid_set_to_array (CamelFolderSummary *summary, const char *uids)
-{
- GPtrArray *arr;
- char *p, *q;
- unsigned long uid, suid;
- int si, scount;
-
- arr = g_ptr_array_new ();
- scount = camel_folder_summary_count (summary);
-
- p = (char *)uids;
- si = 0;
- do {
- uid = strtoul (p, &q, 10);
- if (p == q)
- goto lose;
- g_ptr_array_add (arr, g_strndup (p, q - p));
-
- if (*q == ':') {
- /* Find the summary entry for the UID after the one
- * we just saw.
- */
- while (++si < scount) {
- suid = get_summary_uid_numeric (summary, si);
- if (suid > uid)
- break;
- }
- if (si >= scount)
- suid = uid + 1;
-
- uid = strtoul (q + 1, &p, 10);
- if (p == q + 1)
- goto lose;
-
- /* Add each summary UID until we find one
- * larger than the end of the range
- */
- while (suid <= uid) {
- g_ptr_array_add (arr, g_strdup_printf ("%lu", suid));
- if (++si < scount)
- suid = get_summary_uid_numeric (summary, si);
- else
- suid++;
- }
- } else
- p = q;
- } while (*p++ == ',');
-
- return arr;
-
- lose:
- g_warning ("Invalid uid set %s", uids);
- imap_uid_array_free (arr);
- return NULL;
-}
-
-/**
- * imap_uid_array_free:
- * @arr: an array returned from imap_uid_set_to_array()
- *
- * Frees @arr
- **/
-void
-imap_uid_array_free (GPtrArray *arr)
-{
- int i;
-
- for (i = 0; i < arr->len; i++)
- g_free (arr->pdata[i]);
- g_ptr_array_free (arr, TRUE);
-}
diff --git a/camel/providers/imap/camel-imap-utils.h b/camel/providers/imap/camel-imap-utils.h
deleted file mode 100644
index 583505a95c..0000000000
--- a/camel/providers/imap/camel-imap-utils.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Jeffrey Stedfast <fejj@helixcode.com>
- *
- * Copyright 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef CAMEL_IMAP_UTILS_H
-#define CAMEL_IMAP_UTILS_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include "camel-folder-summary.h"
-
-char *imap_next_word (const char *buf);
-
-#define IMAP_LIST_FLAG_NOINFERIORS (1 << 0)
-#define IMAP_LIST_FLAG_NOSELECT (1 << 1)
-#define IMAP_LIST_FLAG_MARKED (1 << 2)
-#define IMAP_LIST_FLAG_UNMARKED (1 << 3)
-gboolean imap_parse_list_response (const char *buf, int *flags, char *sep, char **folder);
-
-char *imap_create_flag_list (guint32 flags);
-guint32 imap_parse_flag_list (char **flag_list);
-
-enum { IMAP_STRING, IMAP_NSTRING, IMAP_ASTRING };
-char *imap_parse_string_generic (char **str_p, int *len, int type);
-#define imap_parse_string(str_p, len_p) \
- imap_parse_string_generic (str_p, len_p, IMAP_STRING)
-#define imap_parse_nstring(str_p, len_p) \
- imap_parse_string_generic (str_p, len_p, IMAP_NSTRING)
-#define imap_parse_astring(str_p, len_p) \
- imap_parse_string_generic (str_p, len_p, IMAP_ASTRING)
-
-void imap_parse_body (char **body_p, CamelFolder *folder,
- CamelMessageContentInfo *ci);
-
-char *imap_quote_string (const char *str);
-
-void imap_skip_list (char **str_p);
-
-char * imap_uid_array_to_set (CamelFolderSummary *summary, GPtrArray *uids);
-GPtrArray *imap_uid_set_to_array (CamelFolderSummary *summary, const char *uids);
-void imap_uid_array_free (GPtrArray *arr);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_IMAP_UTILS_H */
diff --git a/camel/providers/imap/camel-imap-wrapper.c b/camel/providers/imap/camel-imap-wrapper.c
deleted file mode 100644
index 20ad0c730a..0000000000
--- a/camel/providers/imap/camel-imap-wrapper.c
+++ /dev/null
@@ -1,220 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; -*- */
-/* camel-imap-wrapper.c: data wrapper for offline IMAP data */
-
-/*
- * Author: Dan Winship <danw@helixcode.com>
- *
- * Copyright 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <errno.h>
-#include <string.h>
-
-#include "camel-imap-folder.h"
-#include "camel-imap-wrapper.h"
-#include "camel-imap-private.h"
-#include "camel-exception.h"
-#include "camel-stream-filter.h"
-#include "camel-mime-filter-basic.h"
-#include "camel-mime-filter-crlf.h"
-#include "camel-mime-filter-charset.h"
-#include "camel-mime-part.h"
-
-static CamelDataWrapperClass *parent_class = NULL;
-
-/* Returns the class for a CamelDataWrapper */
-#define CDW_CLASS(so) CAMEL_DATA_WRAPPER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-static int write_to_stream (CamelDataWrapper *imap_wrapper, CamelStream *stream);
-
-static void
-camel_imap_wrapper_class_init (CamelImapWrapperClass *camel_imap_wrapper_class)
-{
- CamelDataWrapperClass *camel_data_wrapper_class =
- CAMEL_DATA_WRAPPER_CLASS (camel_imap_wrapper_class);
-
- parent_class = CAMEL_DATA_WRAPPER_CLASS (camel_type_get_global_classfuncs (camel_data_wrapper_get_type ()));
-
- /* virtual method override */
- camel_data_wrapper_class->write_to_stream = write_to_stream;
-}
-
-static void
-camel_imap_wrapper_finalize (CamelObject *object)
-{
- CamelImapWrapper *imap_wrapper = CAMEL_IMAP_WRAPPER (object);
-
- if (imap_wrapper->folder)
- camel_object_unref (CAMEL_OBJECT (imap_wrapper->folder));
- if (imap_wrapper->uid)
- g_free (imap_wrapper->uid);
- if (imap_wrapper->part)
- g_free (imap_wrapper->part_spec);
-
-#ifdef ENABLE_THREADS
- g_mutex_free (imap_wrapper->priv->lock);
-#endif
- g_free (imap_wrapper->priv);
-}
-
-static void
-camel_imap_wrapper_init (gpointer object, gpointer klass)
-{
- CamelImapWrapper *imap_wrapper = CAMEL_IMAP_WRAPPER (object);
-
- imap_wrapper->priv = g_new0 (struct _CamelImapWrapperPrivate, 1);
-#ifdef ENABLE_THREADS
- imap_wrapper->priv->lock = g_mutex_new ();
-#endif
-}
-
-CamelType
-camel_imap_wrapper_get_type (void)
-{
- static CamelType camel_imap_wrapper_type = CAMEL_INVALID_TYPE;
-
- if (camel_imap_wrapper_type == CAMEL_INVALID_TYPE) {
- camel_imap_wrapper_type = camel_type_register (
- CAMEL_DATA_WRAPPER_TYPE, "CamelImapWrapper",
- sizeof (CamelImapWrapper),
- sizeof (CamelImapWrapperClass),
- (CamelObjectClassInitFunc) camel_imap_wrapper_class_init,
- NULL,
- (CamelObjectInitFunc) camel_imap_wrapper_init,
- (CamelObjectFinalizeFunc) camel_imap_wrapper_finalize);
- }
-
- return camel_imap_wrapper_type;
-}
-
-
-static void
-imap_wrapper_hydrate (CamelImapWrapper *imap_wrapper, CamelStream *stream)
-{
- CamelDataWrapper *data_wrapper = CAMEL_DATA_WRAPPER (imap_wrapper);
- CamelStreamFilter *filterstream;
- CamelMimeFilter *filter;
- CamelContentType *ct;
-
- filterstream = camel_stream_filter_new_with_stream (stream);
-
- if (camel_mime_part_get_encoding (imap_wrapper->part) ==
- CAMEL_MIME_PART_ENCODING_BASE64) {
- filter = (CamelMimeFilter *)camel_mime_filter_basic_new_type (CAMEL_MIME_FILTER_BASIC_BASE64_DEC);
- camel_stream_filter_add (filterstream, filter);
- } else if (camel_mime_part_get_encoding (imap_wrapper->part) ==
- CAMEL_MIME_PART_ENCODING_QUOTEDPRINTABLE) {
- filter = (CamelMimeFilter *)camel_mime_filter_basic_new_type (CAMEL_MIME_FILTER_BASIC_QP_DEC);
- camel_stream_filter_add (filterstream, filter);
- } else
- filter = NULL;
-
- ct = camel_mime_part_get_content_type (imap_wrapper->part);
- if (header_content_type_is (ct, "text", "*")) {
- const char *charset;
-
- /* If we just did B64/QP, need to also do CRLF->LF */
- if (filter) {
- filter = camel_mime_filter_crlf_new (CAMEL_MIME_FILTER_CRLF_DECODE,
- CAMEL_MIME_FILTER_CRLF_MODE_CRLF_ONLY);
- camel_stream_filter_add (filterstream, filter);
- }
-
- charset = header_content_type_param (ct, "charset");
- if (charset && !(strcasecmp (charset, "us-ascii") == 0
- || strcasecmp (charset, "utf-8") == 0)) {
- filter = (CamelMimeFilter *)camel_mime_filter_charset_new_convert (charset, "UTF-8");
- if (filter)
- camel_stream_filter_add (filterstream, filter);
- }
- }
-
- data_wrapper->stream = CAMEL_STREAM (filterstream);
- data_wrapper->offline = FALSE;
-
- camel_object_unref (CAMEL_OBJECT (imap_wrapper->folder));
- imap_wrapper->folder = NULL;
- g_free (imap_wrapper->uid);
- imap_wrapper->uid = NULL;
- g_free (imap_wrapper->part_spec);
- imap_wrapper->part = NULL;
-}
-
-
-static int
-write_to_stream (CamelDataWrapper *data_wrapper, CamelStream *stream)
-{
- CamelImapWrapper *imap_wrapper = CAMEL_IMAP_WRAPPER (data_wrapper);
-
- CAMEL_IMAP_WRAPPER_LOCK (imap_wrapper, lock);
- if (data_wrapper->offline) {
- CamelStream *datastream;
-
- datastream = camel_imap_folder_fetch_data (
- imap_wrapper->folder, imap_wrapper->uid,
- imap_wrapper->part_spec, FALSE, NULL);
- if (!datastream) {
- CAMEL_IMAP_WRAPPER_UNLOCK (imap_wrapper, lock);
- errno = ENETUNREACH;
- return -1;
- }
-
- imap_wrapper_hydrate (imap_wrapper, datastream);
- camel_object_unref (CAMEL_OBJECT (datastream));
- }
- CAMEL_IMAP_WRAPPER_UNLOCK (imap_wrapper, lock);
-
- return parent_class->write_to_stream (data_wrapper, stream);
-}
-
-
-CamelDataWrapper *
-camel_imap_wrapper_new (CamelImapFolder *imap_folder, CamelContentType *type,
- const char *uid, const char *part_spec,
- CamelMimePart *part)
-{
- CamelImapWrapper *imap_wrapper;
- CamelStream *stream;
-
- imap_wrapper = (CamelImapWrapper *)camel_object_new(camel_imap_wrapper_get_type());
-
- camel_data_wrapper_set_mime_type_field (CAMEL_DATA_WRAPPER (imap_wrapper), type);
- ((CamelDataWrapper *)imap_wrapper)->offline = TRUE;
-
- imap_wrapper->folder = imap_folder;
- camel_object_ref (CAMEL_OBJECT (imap_folder));
- imap_wrapper->uid = g_strdup (uid);
- imap_wrapper->part_spec = g_strdup (part_spec);
-
- /* Don't ref this, it's our parent. */
- imap_wrapper->part = part;
-
- /* Try the cache. */
- stream = camel_imap_folder_fetch_data (imap_folder, uid, part_spec,
- TRUE, NULL);
- if (stream) {
- imap_wrapper_hydrate (imap_wrapper, stream);
- camel_object_unref (CAMEL_OBJECT (stream));
- }
-
- return (CamelDataWrapper *)imap_wrapper;
-}
diff --git a/camel/providers/imap/camel-imap-wrapper.h b/camel/providers/imap/camel-imap-wrapper.h
deleted file mode 100644
index 38bfd62fe2..0000000000
--- a/camel/providers/imap/camel-imap-wrapper.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-imap-wrapper.h: data wrapper for offline IMAP data */
-
-/*
- * Copyright 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_IMAP_WRAPPER_H
-#define CAMEL_IMAP_WRAPPER_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <camel/camel-data-wrapper.h>
-#include "camel-imap-types.h"
-
-#define CAMEL_IMAP_WRAPPER_TYPE (camel_imap_wrapper_get_type ())
-#define CAMEL_IMAP_WRAPPER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_IMAP_WRAPPER_TYPE, CamelImapWrapper))
-#define CAMEL_IMAP_WRAPPER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_IMAP_WRAPPER_TYPE, CamelImapWrapperClass))
-#define CAMEL_IS_IMAP_WRAPPER(o) (CAMEL_CHECK_TYPE((o), CAMEL_IMAP_WRAPPER_TYPE))
-
-typedef struct
-{
- CamelDataWrapper parent_object;
-
- struct _CamelImapWrapperPrivate *priv;
-
- CamelImapFolder *folder;
- char *uid, *part_spec;
- CamelMimePart *part;
-} CamelImapWrapper;
-
-typedef struct {
- CamelDataWrapperClass parent_class;
-
-} CamelImapWrapperClass;
-
-/* Standard Camel function */
-CamelType camel_imap_wrapper_get_type (void);
-
-/* Constructor */
-CamelDataWrapper *camel_imap_wrapper_new (CamelImapFolder *imap_folder,
- CamelContentType *type,
- const char *uid,
- const char *part_spec,
- CamelMimePart *part);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_DATA_WRAPPER_H */
diff --git a/camel/providers/imap/libcamelimap.urls b/camel/providers/imap/libcamelimap.urls
deleted file mode 100644
index c301c0ffac..0000000000
--- a/camel/providers/imap/libcamelimap.urls
+++ /dev/null
@@ -1 +0,0 @@
-imap
diff --git a/camel/providers/local/.cvsignore b/camel/providers/local/.cvsignore
deleted file mode 100644
index 3fa8afaa38..0000000000
--- a/camel/providers/local/.cvsignore
+++ /dev/null
@@ -1,11 +0,0 @@
-.deps
-Makefile
-Makefile.in
-.libs
-.deps
-*.lo
-*.la
-*.bb
-*.bbg
-*.da
-*.gcov
diff --git a/camel/providers/local/Makefile.am b/camel/providers/local/Makefile.am
deleted file mode 100644
index 9c6b353186..0000000000
--- a/camel/providers/local/Makefile.am
+++ /dev/null
@@ -1,58 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-libcamellocalincludedir = $(includedir)/camel
-
-providerdir = $(pkglibdir)/camel-providers/$(VERSION)
-
-provider_LTLIBRARIES = libcamellocal.la
-provider_DATA = libcamellocal.urls
-
-INCLUDES = -I.. \
- -I$(srcdir)/.. \
- -I$(top_srcdir)/camel \
- -I$(top_srcdir)/intl \
- -I$(top_srcdir)/libibex \
- -I$(top_srcdir)/e-util \
- -I$(top_srcdir) \
- -I$(includedir) \
- $(GNOME_INCLUDEDIR) \
- $(GTK_INCLUDEDIR) \
- -DG_LOG_DOMAIN=\"camel-local-provider\"
-
-libcamellocal_la_SOURCES = \
- camel-local-folder.c \
- camel-local-store.c \
- camel-local-summary.c \
- camel-local-provider.c \
- camel-mh-folder.c \
- camel-mh-store.c \
- camel-mh-summary.c \
- camel-mbox-folder.c \
- camel-mbox-store.c \
- camel-mbox-summary.c \
- camel-maildir-folder.c \
- camel-maildir-store.c \
- camel-maildir-summary.c
-
-libcamellocalinclude_HEADERS = \
- camel-local-folder.h \
- camel-local-store.h \
- camel-local-summary.h \
- camel-mh-folder.h \
- camel-mh-store.h \
- camel-mh-summary.h \
- camel-mbox-folder.h \
- camel-mbox-store.h \
- camel-mbox-summary.h \
- camel-maildir-folder.h \
- camel-maildir-store.h \
- camel-maildir-summary.h
-
-noinst_HEADERS = \
- camel-local-private.h
-
-libcamellocal_la_LDFLAGS = -version-info 0:0:0
-
-libcamellocal_la_LIBADD = $(top_builddir)/e-util/libeutil.la $(top_builddir)/libibex/libibex.la
-
-EXTRA_DIST = libcamellocal.urls
diff --git a/camel/providers/local/camel-local-folder.c b/camel/providers/local/camel-local-folder.c
deleted file mode 100644
index 205606fc90..0000000000
--- a/camel/providers/local/camel-local-folder.c
+++ /dev/null
@@ -1,351 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; fill-column: 160 -*-
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright (C) 1999, 2000 Helix Code Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <dirent.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <fcntl.h>
-
-#include "camel-local-folder.h"
-#include "camel-local-store.h"
-#include "string-utils.h"
-#include "camel-stream-fs.h"
-#include "camel-local-summary.h"
-#include "camel-data-wrapper.h"
-#include "camel-mime-message.h"
-#include "camel-stream-filter.h"
-#include "camel-mime-filter-from.h"
-#include "camel-exception.h"
-
-#include "camel-local-private.h"
-
-#define d(x) /*(printf("%s(%d): ", __FILE__, __LINE__),(x))*/
-
-static CamelFolderClass *parent_class = NULL;
-
-/* Returns the class for a CamelLocalFolder */
-#define CLOCALF_CLASS(so) CAMEL_LOCAL_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-#define CF_CLASS(so) CAMEL_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-#define CLOCALS_CLASS(so) CAMEL_STORE_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-static int local_lock(CamelLocalFolder *lf, CamelLockType type, CamelException *ex);
-static void local_unlock(CamelLocalFolder *lf);
-
-static void local_sync(CamelFolder *folder, gboolean expunge, CamelException *ex);
-static void local_expunge(CamelFolder *folder, CamelException *ex);
-
-static GPtrArray *local_search_by_expression(CamelFolder *folder, const char *expression, CamelException *ex);
-static void local_search_free(CamelFolder *folder, GPtrArray * result);
-
-static void local_finalize(CamelObject * object);
-
-static void
-camel_local_folder_class_init(CamelLocalFolderClass * camel_local_folder_class)
-{
- CamelFolderClass *camel_folder_class = CAMEL_FOLDER_CLASS(camel_local_folder_class);
-
- parent_class = CAMEL_FOLDER_CLASS(camel_type_get_global_classfuncs(camel_folder_get_type()));
-
- /* virtual method definition */
-
- /* virtual method overload */
- camel_folder_class->sync = local_sync;
- camel_folder_class->expunge = local_expunge;
-
- camel_folder_class->search_by_expression = local_search_by_expression;
- camel_folder_class->search_free = local_search_free;
-
- camel_local_folder_class->lock = local_lock;
- camel_local_folder_class->unlock = local_unlock;
-}
-
-static void
-local_init(gpointer object, gpointer klass)
-{
- CamelFolder *folder = object;
- CamelLocalFolder *local_folder = object;
-
- folder->has_summary_capability = TRUE;
- folder->has_search_capability = TRUE;
-
- folder->permanent_flags = CAMEL_MESSAGE_ANSWERED |
- CAMEL_MESSAGE_DELETED | CAMEL_MESSAGE_DRAFT |
- CAMEL_MESSAGE_FLAGGED | CAMEL_MESSAGE_SEEN | CAMEL_MESSAGE_USER;
-
- folder->summary = NULL;
- local_folder->search = NULL;
-
- local_folder->priv = g_malloc0(sizeof(*local_folder->priv));
-#ifdef ENABLE_THREADS
- local_folder->priv->search_lock = g_mutex_new();
-#endif
-}
-
-static void
-local_finalize(CamelObject * object)
-{
- CamelLocalFolder *local_folder = CAMEL_LOCAL_FOLDER(object);
- CamelFolder *folder = (CamelFolder *)object;
-
- if (folder->summary) {
- camel_local_summary_sync((CamelLocalSummary *)folder->summary, FALSE, local_folder->changes, NULL);
- camel_object_unref((CamelObject *)folder->summary);
- folder->summary = NULL;
- }
-
- if (local_folder->search) {
- camel_object_unref((CamelObject *)local_folder->search);
- }
-
- /* must free index after summary, since it isn't refcounted */
- if (local_folder->index)
- ibex_close(local_folder->index);
-
- while (local_folder->locked> 0)
- camel_local_folder_unlock(local_folder);
-
- g_free(local_folder->base_path);
- g_free(local_folder->folder_path);
- g_free(local_folder->summary_path);
- g_free(local_folder->index_path);
-
- camel_folder_change_info_free(local_folder->changes);
-
-#ifdef ENABLE_THREADS
- g_mutex_free(local_folder->priv->search_lock);
-#endif
- g_free(local_folder->priv);
-}
-
-CamelType camel_local_folder_get_type(void)
-{
- static CamelType camel_local_folder_type = CAMEL_INVALID_TYPE;
-
- if (camel_local_folder_type == CAMEL_INVALID_TYPE) {
- camel_local_folder_type = camel_type_register(CAMEL_FOLDER_TYPE, "CamelLocalFolder",
- sizeof(CamelLocalFolder),
- sizeof(CamelLocalFolderClass),
- (CamelObjectClassInitFunc) camel_local_folder_class_init,
- NULL,
- (CamelObjectInitFunc) local_init,
- (CamelObjectFinalizeFunc) local_finalize);
- }
-
- return camel_local_folder_type;
-}
-
-CamelLocalFolder *
-camel_local_folder_construct(CamelLocalFolder *lf, CamelStore *parent_store, const char *full_name, guint32 flags, CamelException *ex)
-{
- CamelFolderInfo *fi;
- CamelFolder *folder;
- const char *root_dir_path, *name;
- struct stat st;
- int forceindex;
-
- folder = (CamelFolder *)lf;
-
- name = strrchr(full_name, '/');
- if (name)
- name++;
- else
- name = full_name;
-
- camel_folder_construct(folder, parent_store, full_name, name);
-
- root_dir_path = camel_local_store_get_toplevel_dir(CAMEL_LOCAL_STORE(folder->parent_store));
-
- lf->base_path = g_strdup(root_dir_path);
- lf->folder_path = g_strdup_printf("%s/%s", root_dir_path, full_name);
- lf->summary_path = g_strdup_printf("%s/%s.ev-summary", root_dir_path, full_name);
- lf->index_path = g_strdup_printf("%s/%s.ibex", root_dir_path, full_name);
-
- lf->changes = camel_folder_change_info_new();
-
- /* if we have no index file, force it */
- forceindex = stat(lf->index_path, &st) == -1;
- if (flags & CAMEL_STORE_FOLDER_BODY_INDEX) {
-
- lf->index = ibex_open(lf->index_path, O_CREAT | O_RDWR, 0600);
- if (lf->index == NULL) {
- /* yes, this isn't fatal at all */
- g_warning("Could not open/create index file: %s: indexing not performed", strerror(errno));
- forceindex = FALSE;
- /* record that we dont have an index afterall */
- flags &= ~CAMEL_STORE_FOLDER_BODY_INDEX;
- }
- } else {
- /* if we do have an index file, remove it */
- if (forceindex == FALSE) {
- unlink(lf->index_path);
- }
- forceindex = FALSE;
- }
-
- lf->flags = flags;
-
- folder->summary = (CamelFolderSummary *)CLOCALF_CLASS(lf)->create_summary(lf->summary_path, lf->folder_path, lf->index);
- if (camel_local_summary_load((CamelLocalSummary *)folder->summary, forceindex, ex) == -1) {
- camel_object_unref (CAMEL_OBJECT (folder));
- return NULL;
- }
-
- fi = g_new0 (CamelFolderInfo, 1);
- fi->full_name = g_strdup (full_name);
- fi->name = g_strdup (name);
- fi->url = g_strdup (lf->folder_path);
- fi->unread_message_count = -1;
-
- camel_object_trigger_event (CAMEL_OBJECT (parent_store),
- "folder_deleted", fi);
-
- camel_folder_info_free (fi);
-
- return lf;
-}
-
-/* lock the folder, may be called repeatedly (with matching unlock calls),
- with type the same or less than the first call */
-int camel_local_folder_lock(CamelLocalFolder *lf, CamelLockType type, CamelException *ex)
-{
- if (lf->locked > 0) {
- /* lets be anal here - its important the code knows what its doing */
- g_assert(lf->locktype == type || lf->locktype == CAMEL_LOCK_WRITE);
- } else {
- if (CLOCALF_CLASS(lf)->lock(lf, type, ex) == -1)
- return -1;
- lf->locktype = type;
- }
-
- lf->locked++;
-
- return 0;
-}
-
-/* unlock folder */
-int camel_local_folder_unlock(CamelLocalFolder *lf)
-{
- g_assert(lf->locked>0);
- lf->locked--;
- if (lf->locked == 0)
- CLOCALF_CLASS(lf)->unlock(lf);
-
- return 0;
-}
-
-static int
-local_lock(CamelLocalFolder *lf, CamelLockType type, CamelException *ex)
-{
- return 0;
-}
-
-static void
-local_unlock(CamelLocalFolder *lf)
-{
- /* nothing */
-}
-
-static void
-local_sync(CamelFolder *folder, gboolean expunge, CamelException *ex)
-{
- CamelLocalFolder *lf = CAMEL_LOCAL_FOLDER(folder);
-
- d(printf("local sync, expunge=%s\n", expunge?"true":"false"));
-
- if (camel_local_folder_lock(lf, CAMEL_LOCK_WRITE, ex) == -1)
- return;
-
- /* if sync fails, we'll pass it up on exit through ex */
- camel_local_summary_sync((CamelLocalSummary *)folder->summary, expunge, lf->changes, ex);
- camel_local_folder_unlock(lf);
-
- if (camel_folder_change_info_changed(lf->changes)) {
- camel_object_trigger_event(CAMEL_OBJECT(folder), "folder_changed", lf->changes);
- camel_folder_change_info_clear(lf->changes);
- }
-
- /* force save of metadata */
- if (lf->index)
- ibex_save(lf->index);
- if (folder->summary)
- camel_folder_summary_save(folder->summary);
-}
-
-static void
-local_expunge(CamelFolder *folder, CamelException *ex)
-{
- d(printf("expunge\n"));
-
- /* Just do a sync with expunge, serves the same purpose */
- /* call the callback directly, to avoid locking problems */
- CAMEL_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(folder))->sync(folder, TRUE, ex);
-}
-
-static GPtrArray *
-local_search_by_expression(CamelFolder *folder, const char *expression, CamelException *ex)
-{
- CamelLocalFolder *local_folder = CAMEL_LOCAL_FOLDER(folder);
- GPtrArray *summary, *matches;
-
- /* NOTE: could get away without the search lock by creating a new
- search object each time */
-
- CAMEL_LOCAL_FOLDER_LOCK(folder, search_lock);
-
- if (local_folder->search == NULL)
- local_folder->search = camel_folder_search_new();
-
- camel_folder_search_set_folder(local_folder->search, folder);
- camel_folder_search_set_body_index(local_folder->search, local_folder->index);
- summary = camel_folder_get_summary(folder);
- camel_folder_search_set_summary(local_folder->search, summary);
-
- matches = camel_folder_search_execute_expression(local_folder->search, expression, ex);
-
- CAMEL_LOCAL_FOLDER_UNLOCK(folder, search_lock);
-
- camel_folder_free_summary(folder, summary);
-
- return matches;
-}
-
-static void
-local_search_free(CamelFolder *folder, GPtrArray * result)
-{
- CamelLocalFolder *local_folder = CAMEL_LOCAL_FOLDER(folder);
-
- /* we need to lock this free because of the way search_free_result works */
- /* FIXME: put the lock inside search_free_result */
- CAMEL_LOCAL_FOLDER_LOCK(folder, search_lock);
-
- camel_folder_search_free_result(local_folder->search, result);
-
- CAMEL_LOCAL_FOLDER_UNLOCK(folder, search_lock);
-}
diff --git a/camel/providers/local/camel-local-folder.h b/camel/providers/local/camel-local-folder.h
deleted file mode 100644
index 7c975c8f7a..0000000000
--- a/camel/providers/local/camel-local-folder.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Author: Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright (C) 1999 Helix Code (http://www.helixcode.com/).
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_LOCAL_FOLDER_H
-#define CAMEL_LOCAL_FOLDER_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <camel/camel-folder.h>
-#include <camel/camel-folder-search.h>
-#include <libibex/ibex.h>
-#include "camel-local-summary.h"
-#include "camel-lock.h"
-
-/* #include "camel-store.h" */
-
-#define CAMEL_LOCAL_FOLDER_TYPE (camel_local_folder_get_type ())
-#define CAMEL_LOCAL_FOLDER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_LOCAL_FOLDER_TYPE, CamelLocalFolder))
-#define CAMEL_LOCAL_FOLDER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_LOCAL_FOLDER_TYPE, CamelLocalFolderClass))
-#define CAMEL_IS_LOCAL_FOLDER(o) (CAMEL_CHECK_TYPE((o), CAMEL_LOCAL_FOLDER_TYPE))
-
-typedef struct {
- CamelFolder parent_object;
- struct _CamelLocalFolderPrivate *priv;
-
- guint32 flags; /* open mode flags */
-
- int locked; /* lock counter */
- CamelLockType locktype; /* what type of lock we have */
-
- char *base_path; /* base path of the local folder */
- char *folder_path; /* the path to the folder itself */
- char *summary_path; /* where the summary lives */
- char *index_path; /* where the index file lives */
-
- ibex *index; /* index for this folder */
- CamelFolderSearch *search; /* used to run searches, we just use the real thing (tm) */
- CamelFolderChangeInfo *changes; /* used to store changes to the folder during processing */
-} CamelLocalFolder;
-
-typedef struct {
- CamelFolderClass parent_class;
-
- /* Virtual methods */
-
- /* summary factory, only used at init */
- CamelLocalSummary *(*create_summary)(const char *path, const char *folder, ibex *index);
-
- /* Lock the folder for my operations */
- int (*lock)(CamelLocalFolder *, CamelLockType type, CamelException *ex);
-
- /* Unlock the folder for my operations */
- void (*unlock)(CamelLocalFolder *);
-} CamelLocalFolderClass;
-
-
-/* public methods */
-/* flags are taken from CAMEL_STORE_FOLDER_* flags */
-CamelLocalFolder *camel_local_folder_construct(CamelLocalFolder *lf, CamelStore *parent_store,
- const char *full_name, guint32 flags, CamelException *ex);
-
-/* Standard Camel function */
-CamelType camel_local_folder_get_type(void);
-
-/* Lock the folder for internal use. May be called repeatedly */
-/* UNIMPLEMENTED */
-int camel_local_folder_lock(CamelLocalFolder *lf, CamelLockType type, CamelException *ex);
-int camel_local_folder_unlock(CamelLocalFolder *lf);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_LOCAL_FOLDER_H */
diff --git a/camel/providers/local/camel-local-private.h b/camel/providers/local/camel-local-private.h
deleted file mode 100644
index 1d1a89ea27..0000000000
--- a/camel/providers/local/camel-local-private.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- * camel-local-private.h: Private info for local provider.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_PRIVATE_H
-#define CAMEL_PRIVATE_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-/* need a way to configure and save this data, if this header is to
- be installed. For now, dont install it */
-
-#include "config.h"
-
-#ifdef ENABLE_THREADS
-#include <pthread.h>
-#endif
-
-struct _CamelLocalFolderPrivate {
-#ifdef ENABLE_THREADS
- GMutex *search_lock; /* for locking the search object */
-#endif
-};
-
-#ifdef ENABLE_THREADS
-#define CAMEL_LOCAL_FOLDER_LOCK(f, l) (g_mutex_lock(((CamelLocalFolder *)f)->priv->l))
-#define CAMEL_LOCAL_FOLDER_UNLOCK(f, l) (g_mutex_unlock(((CamelLocalFolder *)f)->priv->l))
-#else
-#define CAMEL_LOCAL_FOLDER_LOCK(f, l)
-#define CAMEL_LOCAL_FOLDER_UNLOCK(f, l)
-#endif
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_H */
-
diff --git a/camel/providers/local/camel-local-provider.c b/camel/providers/local/camel-local-provider.c
deleted file mode 100644
index a63ff84eb0..0000000000
--- a/camel/providers/local/camel-local-provider.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright (C) 2000 HelixCode (www.helixcode.com).
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-
-#include "camel-provider.h"
-#include "camel-session.h"
-#include "camel-url.h"
-
-#include "camel-mh-store.h"
-#include "camel-mbox-store.h"
-#include "camel-maildir-store.h"
-
-static CamelProvider mh_provider = {
- "mh",
- N_("MH-format mail directories"),
- N_("For storing local mail in MH-like mail directories"),
- "mail",
- CAMEL_PROVIDER_IS_STORAGE,
- CAMEL_URL_NEED_PATH | CAMEL_URL_PATH_IS_ABSOLUTE,
- /* ... */
-};
-
-static CamelProvider mbox_provider = {
- "mbox",
- N_("Standard Unix mailbox file"),
- N_("For storing local mail in standard mbox format"),
- "mail",
- CAMEL_PROVIDER_IS_SOURCE | CAMEL_PROVIDER_IS_STORAGE,
- CAMEL_URL_NEED_PATH | CAMEL_URL_PATH_IS_ABSOLUTE,
- /* ... */
-};
-
-static CamelProvider maildir_provider = {
- "maildir",
- N_("Qmail maildir-format mail files"),
- N_("For storing local mail in qmail maildir directories"),
- "mail",
- CAMEL_PROVIDER_IS_SOURCE | CAMEL_PROVIDER_IS_STORAGE,
- CAMEL_URL_NEED_PATH | CAMEL_URL_PATH_IS_ABSOLUTE,
- /* ... */
-};
-
-void camel_provider_module_init(CamelSession * session)
-{
- mh_provider.object_types[CAMEL_PROVIDER_STORE] = camel_mh_store_get_type();
- mh_provider.service_cache = g_hash_table_new(camel_url_hash, camel_url_equal);
- camel_session_register_provider(session, &mh_provider);
-
- mbox_provider.object_types[CAMEL_PROVIDER_STORE] = camel_mbox_store_get_type();
- mbox_provider.service_cache = g_hash_table_new(camel_url_hash, camel_url_equal);
- camel_session_register_provider(session, &mbox_provider);
-
- maildir_provider.object_types[CAMEL_PROVIDER_STORE] = camel_maildir_store_get_type();
- maildir_provider.service_cache = g_hash_table_new(camel_url_hash, camel_url_equal);
- camel_session_register_provider(session, &maildir_provider);
-}
diff --git a/camel/providers/local/camel-local-store.c b/camel/providers/local/camel-local-store.c
deleted file mode 100644
index 4b948ab96a..0000000000
--- a/camel/providers/local/camel-local-store.c
+++ /dev/null
@@ -1,308 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <sys/stat.h>
-#include <errno.h>
-#include <string.h>
-#include <unistd.h>
-#include <stdio.h>
-
-#include "camel-local-store.h"
-#include "camel-exception.h"
-#include "camel-url.h"
-
-#define d(x)
-
-/* Returns the class for a CamelLocalStore */
-#define CLOCALS_CLASS(so) CAMEL_LOCAL_STORE_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-#define CF_CLASS(so) CAMEL_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-static void construct (CamelService *service, CamelSession *session, CamelProvider *provider, CamelURL *url, CamelException *ex);
-static CamelFolder *get_folder(CamelStore * store, const char *folder_name, guint32 flags, CamelException * ex);
-static char *get_name(CamelService *service, gboolean brief);
-static CamelFolder *get_inbox (CamelStore *store, CamelException *ex);
-static void rename_folder(CamelStore *store, const char *old_name, const char *new_name, CamelException *ex);
-static CamelFolderInfo *get_folder_info (CamelStore *store, const char *top,
- guint32 flags, CamelException *ex);
-static void delete_folder(CamelStore *store, const char *folder_name, CamelException *ex);
-static void rename_folder(CamelStore *store, const char *old, const char *new, CamelException *ex);
-
-static CamelStoreClass *parent_class = NULL;
-
-static void
-camel_local_store_class_init (CamelLocalStoreClass *camel_local_store_class)
-{
- CamelStoreClass *camel_store_class = CAMEL_STORE_CLASS (camel_local_store_class);
- CamelServiceClass *camel_service_class = CAMEL_SERVICE_CLASS (camel_local_store_class);
-
- parent_class = CAMEL_STORE_CLASS (camel_type_get_global_classfuncs (camel_store_get_type ()));
-
- /* virtual method overload */
- camel_service_class->construct = construct;
- camel_service_class->get_name = get_name;
- camel_store_class->get_folder = get_folder;
- camel_store_class->get_inbox = get_inbox;
- camel_store_class->get_folder_info = get_folder_info;
- camel_store_class->free_folder_info = camel_store_free_folder_info_full;
-
- camel_store_class->delete_folder = delete_folder;
- camel_store_class->rename_folder = rename_folder;
-}
-
-CamelType
-camel_local_store_get_type (void)
-{
- static CamelType camel_local_store_type = CAMEL_INVALID_TYPE;
-
- if (camel_local_store_type == CAMEL_INVALID_TYPE) {
- camel_local_store_type = camel_type_register (CAMEL_STORE_TYPE, "CamelLocalStore",
- sizeof (CamelLocalStore),
- sizeof (CamelLocalStoreClass),
- (CamelObjectClassInitFunc) camel_local_store_class_init,
- NULL,
- NULL,
- NULL);
- }
-
- return camel_local_store_type;
-}
-
-static void
-construct (CamelService *service, CamelSession *session, CamelProvider *provider, CamelURL *url, CamelException *ex)
-{
- int len;
-
- CAMEL_SERVICE_CLASS (parent_class)->construct (service, session, provider, url, ex);
- if (camel_exception_is_set (ex))
- return;
-
- len = strlen (service->url->path);
- if (service->url->path[len - 1] != '/') {
- service->url->path = g_realloc (service->url->path, len + 2);
- strcpy (service->url->path + len, "/");
- }
-}
-
-const char *
-camel_local_store_get_toplevel_dir (CamelLocalStore *store)
-{
- CamelURL *url = CAMEL_SERVICE (store)->url;
-
- g_assert (url != NULL);
- return url->path;
-}
-
-static CamelFolder *
-get_folder(CamelStore * store, const char *folder_name, guint32 flags, CamelException * ex)
-{
- struct stat st;
- char *path = ((CamelService *)store)->url->path;
- char *sub, *slash;
-
- if (path[0] != '/') {
- camel_exception_setv(ex, CAMEL_EXCEPTION_STORE_NO_FOLDER,
- _("Store root %s is not an absolute path"), path);
- return NULL;
- }
-
- if (stat(path, &st) == 0) {
- if (!S_ISDIR(st.st_mode)) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_STORE_NO_FOLDER,
- _("Store root %s is not a regular directory"), path);
- }
- return NULL;
- }
-
- if (errno != ENOENT
- || (flags & CAMEL_STORE_FOLDER_CREATE) == 0) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_STORE_NO_FOLDER,
- _("Cannot get folder: %s: %s"), path, strerror(errno));
- return NULL;
- }
-
- /* need to create the dir heirarchy */
- sub = alloca(strlen(path)+1);
- strcpy(sub, path);
- slash = sub;
- do {
- slash = strchr(slash+1, '/');
- if (slash)
- *slash = 0;
- if (stat(sub, &st) == -1) {
- if (errno != ENOENT
- || mkdir(sub, 0700) == -1) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_STORE_NO_FOLDER,
- _("Cannot get folder: %s: %s"), path, strerror(errno));
- return NULL;
- }
- }
- if (slash)
- *slash = '/';
- } while (slash);
-
- return NULL;
-}
-
-static CamelFolder *
-get_inbox(CamelStore *store, CamelException *ex)
-{
- camel_exception_set(ex, CAMEL_EXCEPTION_STORE_NO_FOLDER,
- _("Local stores do not have an inbox"));
- return NULL;
-}
-
-static char *
-get_name (CamelService *service, gboolean brief)
-{
- if (brief)
- return g_strdup (service->url->path);
- else
- return g_strdup_printf (_("Local mail file %s"), service->url->path);
-}
-
-static CamelFolderInfo *
-get_folder_info (CamelStore *store, const char *top,
- guint32 flags, CamelException *ex)
-{
- /* FIXME: This is broken, but it corresponds to what was
- * there before.
- */
- return NULL;
-}
-
-static int xrename(const char *oldp, const char *newp, const char *prefix, const char *suffix, int missingok, CamelException *ex)
-{
- struct stat st;
- char *old = g_strconcat(prefix, oldp, suffix, 0);
- char *new = g_strconcat(prefix, newp, suffix, 0);
- int ret = -1;
- int err = 0;
-
- d(printf("renaming %s%s to %s%s\n", oldp, suffix, newp, suffix));
-
- if (stat(old, &st) == -1) {
- if (missingok && errno == ENOENT) {
- ret = 0;
- } else {
- err = errno;
- ret = -1;
- }
- } else if (S_ISDIR(st.st_mode)) { /* use rename for dirs */
- if (rename(old, new) == 0
- || stat(new, &st) == 0) {
- ret = 0;
- } else {
- err = errno;
- ret = -1;
- }
- } else if (link(old, new) == 0 /* and link for files */
- || (stat(new, &st) == 0 && st.st_nlink == 2)) {
- if (unlink(old) == 0) {
- ret = 0;
- } else {
- err = errno;
- unlink(new);
- ret = -1;
- }
- } else {
- err = errno;
- ret = -1;
- }
-
- if (ret == -1) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not rename folder %s to %s: %s"),
- old, new, strerror(err));
- }
-
- g_free(old);
- g_free(new);
- return ret;
-}
-
-/* default implementation, rename all */
-static void
-rename_folder(CamelStore *store, const char *old, const char *new, CamelException *ex)
-{
- char *path = CAMEL_SERVICE (store)->url->path;
-
- /* try to rollback failures, has obvious races */
- if (xrename(old, new, path, ".ibex", TRUE, ex)) {
- return;
- }
- if (xrename(old, new, path, ".ev-summary", TRUE, ex)) {
- xrename(new, old, path, ".ibex", TRUE, ex);
- return;
- }
- if (xrename(old, new, path, "", FALSE, ex)) {
- xrename(new, old, path, ".ev-summary", TRUE, ex);
- xrename(new, old, path, ".ibex", TRUE, ex);
- }
-}
-
-/* default implementation, only delete metadata */
-static void
-delete_folder(CamelStore *store, const char *folder_name, CamelException *ex)
-{
- CamelFolderInfo *fi;
- char *name;
- char *str;
-
- /* remove metadata only */
- name = g_strdup_printf("%s%s", CAMEL_SERVICE(store)->url->path, folder_name);
- str = g_strdup_printf("%s.ev-summary", name);
- if (unlink(str) == -1 && errno != ENOENT) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not delete folder summary file `%s': %s"),
- str, strerror(errno));
- g_free(str);
- g_free (name);
- return;
- }
- g_free(str);
- str = g_strdup_printf("%s.ibex", name);
- if (unlink(str) == -1 && errno != ENOENT) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not delete folder index file `%s': %s"),
- str, strerror(errno));
- g_free(str);
- g_free (name);
- return;
- }
- g_free(str);
- g_free(name);
-
- fi = g_new0 (CamelFolderInfo, 1);
- fi->full_name = g_strdup (folder_name);
- fi->name = g_strdup (g_basename (folder_name));
- fi->url = g_strdup_printf ("%s%s", CAMEL_SERVICE(store)->url->path, folder_name);
- fi->unread_message_count = -1;
-
- camel_object_trigger_event (CAMEL_OBJECT (store),
- "folder_deleted", fi);
-
- camel_folder_info_free (fi);
-}
diff --git a/camel/providers/local/camel-local-store.h b/camel/providers/local/camel-local-store.h
deleted file mode 100644
index 9335b73eaa..0000000000
--- a/camel/providers/local/camel-local-store.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-mbox-store.h : class for an mbox store */
-
-/*
- *
- * Copyright (C) 2000 Helix Code, Inc. <bertrand@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_LOCAL_STORE_H
-#define CAMEL_LOCAL_STORE_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include "camel-store.h"
-
-#define CAMEL_LOCAL_STORE_TYPE (camel_local_store_get_type ())
-#define CAMEL_LOCAL_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_LOCAL_STORE_TYPE, CamelLocalStore))
-#define CAMEL_LOCAL_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_LOCAL_STORE_TYPE, CamelLocalStoreClass))
-#define CAMEL_IS_LOCAL_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_LOCAL_STORE_TYPE))
-
-
-typedef struct {
- CamelStore parent_object;
-
-} CamelLocalStore;
-
-
-
-typedef struct {
- CamelStoreClass parent_class;
-
-} CamelLocalStoreClass;
-
-
-/* public methods */
-
-/* Standard Camel function */
-CamelType camel_local_store_get_type (void);
-
-const gchar *camel_local_store_get_toplevel_dir (CamelLocalStore *store);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_LOCAL_STORE_H */
-
-
diff --git a/camel/providers/local/camel-local-summary.c b/camel/providers/local/camel-local-summary.c
deleted file mode 100644
index 8f785afe15..0000000000
--- a/camel/providers/local/camel-local-summary.c
+++ /dev/null
@@ -1,560 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; fill-column: 160 -*- */
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <ctype.h>
-#include <sys/stat.h>
-#include <sys/uio.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "camel-local-summary.h"
-#include <camel/camel-mime-message.h>
-
-#define io(x)
-#define d(x) /*(printf("%s(%d): ", __FILE__, __LINE__),(x))*/
-
-#define CAMEL_LOCAL_SUMMARY_VERSION (0x200)
-
-struct _CamelLocalSummaryPrivate {
-};
-
-#define _PRIVATE(o) (((CamelLocalSummary *)(o))->priv)
-
-static CamelMessageInfo * message_info_new (CamelFolderSummary *, struct _header_raw *);
-
-static int local_summary_decode_x_evolution(CamelLocalSummary *cls, const char *xev, CamelMessageInfo *mi);
-static char *local_summary_encode_x_evolution(CamelLocalSummary *cls, const CamelMessageInfo *mi);
-
-static int local_summary_load(CamelLocalSummary *cls, int forceindex, CamelException *ex);
-static int local_summary_check(CamelLocalSummary *cls, CamelFolderChangeInfo *changeinfo, CamelException *ex);
-static int local_summary_sync(CamelLocalSummary *cls, gboolean expunge, CamelFolderChangeInfo *changeinfo, CamelException *ex);
-static CamelMessageInfo *local_summary_add(CamelLocalSummary *cls, CamelMimeMessage *msg, const CamelMessageInfo *info, CamelFolderChangeInfo *, CamelException *ex);
-
-static void camel_local_summary_class_init (CamelLocalSummaryClass *klass);
-static void camel_local_summary_init (CamelLocalSummary *obj);
-static void camel_local_summary_finalise (CamelObject *obj);
-static CamelFolderSummaryClass *camel_local_summary_parent;
-
-CamelType
-camel_local_summary_get_type(void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_folder_summary_get_type(), "CamelLocalSummary",
- sizeof (CamelLocalSummary),
- sizeof (CamelLocalSummaryClass),
- (CamelObjectClassInitFunc) camel_local_summary_class_init,
- NULL,
- (CamelObjectInitFunc) camel_local_summary_init,
- (CamelObjectFinalizeFunc) camel_local_summary_finalise);
- }
-
- return type;
-}
-
-static void
-camel_local_summary_class_init(CamelLocalSummaryClass *klass)
-{
- CamelFolderSummaryClass *sklass = (CamelFolderSummaryClass *) klass;
-
- camel_local_summary_parent = CAMEL_FOLDER_SUMMARY_CLASS(camel_type_get_global_classfuncs(camel_folder_summary_get_type()));
-
- sklass->message_info_new = message_info_new;
-
- klass->load = local_summary_load;
- klass->check = local_summary_check;
- klass->sync = local_summary_sync;
- klass->add = local_summary_add;
-
- klass->encode_x_evolution = local_summary_encode_x_evolution;
- klass->decode_x_evolution = local_summary_decode_x_evolution;
-}
-
-static void
-camel_local_summary_init(CamelLocalSummary *obj)
-{
- struct _CamelLocalSummaryPrivate *p;
- struct _CamelFolderSummary *s = (CamelFolderSummary *)obj;
-
- p = _PRIVATE(obj) = g_malloc0(sizeof(*p));
-
- /* subclasses need to set the right instance data sizes */
- s->message_info_size = sizeof(CamelMessageInfo);
- s->content_info_size = sizeof(CamelMessageContentInfo);
-
- /* and a unique file version */
- s->version += CAMEL_LOCAL_SUMMARY_VERSION;
-}
-
-static void
-camel_local_summary_finalise(CamelObject *obj)
-{
- CamelLocalSummary *mbs = CAMEL_LOCAL_SUMMARY(obj);
-
- g_free(mbs->folder_path);
-}
-
-void
-camel_local_summary_construct(CamelLocalSummary *new, const char *filename, const char *local_name, ibex *index)
-{
- camel_folder_summary_set_build_content(CAMEL_FOLDER_SUMMARY(new), FALSE);
- camel_folder_summary_set_filename(CAMEL_FOLDER_SUMMARY(new), filename);
- new->folder_path = g_strdup(local_name);
- new->index = index;
-}
-
-static int
-local_summary_load(CamelLocalSummary *cls, int forceindex, CamelException *ex)
-{
- return camel_folder_summary_load((CamelFolderSummary *)cls);
-}
-
-/* load/check the summary */
-int
-camel_local_summary_load(CamelLocalSummary *cls, int forceindex, CamelException *ex)
-{
- struct stat st;
- CamelFolderSummary *s = (CamelFolderSummary *)cls;
-
- d(printf("Loading summary ...\n"));
-
- if (forceindex
- || stat(s->summary_path, &st) == -1
- || ((CamelLocalSummaryClass *)(CAMEL_OBJECT_GET_CLASS(cls)))->load(cls, forceindex, ex) == -1) {
- camel_folder_summary_clear((CamelFolderSummary *)cls);
- }
-
- if (camel_local_summary_check(cls, NULL, ex) == 0) {
- if (camel_folder_summary_save(s) == -1)
- g_warning("Could not save summary for %s: %s", cls->folder_path, strerror(errno));
- if (cls->index && ibex_save(cls->index) == -1)
- g_warning("Could not sync index for %s: %s", cls->folder_path, strerror(errno));
-
- return 0;
- }
- return -1;
-}
-
-char *
-camel_local_summary_encode_x_evolution(CamelLocalSummary *cls, const CamelMessageInfo *info)
-{
- return ((CamelLocalSummaryClass *)(CAMEL_OBJECT_GET_CLASS(cls)))->encode_x_evolution(cls, info);
-}
-
-int
-camel_local_summary_decode_x_evolution(CamelLocalSummary *cls, const char *xev, CamelMessageInfo *info)
-{
- return ((CamelLocalSummaryClass *)(CAMEL_OBJECT_GET_CLASS(cls)))->decode_x_evolution(cls, xev, info);
-}
-
-/*#define DOSTATS*/
-#ifdef DOSTATS
-struct _stat_info {
- int mitotal;
- int micount;
- int citotal;
- int cicount;
- int msgid;
- int msgcount;
-};
-
-static void
-do_stat_ci(CamelLocalSummary *cls, struct _stat_info *info, CamelMessageContentInfo *ci)
-{
- info->cicount++;
- info->citotal += ((CamelFolderSummary *)cls)->content_info_size /*+ 4 memchunks are 1/4 byte overhead per mi */;
- if (ci->id)
- info->citotal += strlen(ci->id) + 4;
- if (ci->description)
- info->citotal += strlen(ci->description) + 4;
- if (ci->encoding)
- info->citotal += strlen(ci->encoding) + 4;
- if (ci->type) {
- struct _header_content_type *ct = ci->type;
- struct _header_param *param;
-
- info->citotal += sizeof(*ct) + 4;
- if (ct->type)
- info->citotal += strlen(ct->type) + 4;
- if (ct->subtype)
- info->citotal += strlen(ct->subtype) + 4;
- param = ct->params;
- while (param) {
- info->citotal += sizeof(*param) + 4;
- if (param->name)
- info->citotal += strlen(param->name)+4;
- if (param->value)
- info->citotal += strlen(param->value)+4;
- param = param->next;
- }
- }
- ci = ci->childs;
- while (ci) {
- do_stat_ci(cls, info, ci);
- ci = ci->next;
- }
-}
-
-static void
-do_stat_mi(CamelLocalSummary *cls, struct _stat_info *info, CamelMessageInfo *mi)
-{
- info->micount++;
- info->mitotal += ((CamelFolderSummary *)cls)->content_info_size /*+ 4*/;
-
- if (mi->subject)
- info->mitotal += strlen(mi->subject) + 4;
- if (mi->to)
- info->mitotal += strlen(mi->to) + 4;
- if (mi->from)
- info->mitotal += strlen(mi->from) + 4;
- if (mi->cc)
- info->mitotal += strlen(mi->cc) + 4;
- if (mi->uid)
- info->mitotal += strlen(mi->uid) + 4;
-
- if (mi->references) {
- info->mitotal += (mi->references->size-1) * sizeof(CamelSummaryMessageID) + sizeof(CamelSummaryReferences) + 4;
- info->msgid += (mi->references->size) * sizeof(CamelSummaryMessageID);
- info->msgcount += mi->references->size;
- }
-
- /* dont have any user flags yet */
-
- if (mi->content) {
- do_stat_ci(cls, info, mi->content);
- }
-}
-
-#endif
-
-int
-camel_local_summary_check(CamelLocalSummary *cls, CamelFolderChangeInfo *changeinfo, CamelException *ex)
-{
- int ret;
-
- ret = ((CamelLocalSummaryClass *)(CAMEL_OBJECT_GET_CLASS(cls)))->check(cls, changeinfo, ex);
-
-#ifdef DOSTATS
- if (ret != -1) {
- int i;
- CamelFolderSummary *s = (CamelFolderSummary *)cls;
- struct _stat_info stats = { 0 };
-
- for (i=0;i<camel_folder_summary_count(s);i++) {
- CamelMessageInfo *info = camel_folder_summary_index(s, i);
- do_stat_mi(cls, &stats, info);
- camel_folder_summary_info_free(s, info);
- }
-
- printf("\nMemory used by summary:\n\n");
- printf("Total of %d messages\n", camel_folder_summary_count(s));
- printf("Total: %d bytes (ave %f)\n", stats.citotal + stats.mitotal,
- (double)(stats.citotal+stats.mitotal)/(double)camel_folder_summary_count(s));
- printf("Message Info: %d (ave %f)\n", stats.mitotal, (double)stats.mitotal/(double)stats.micount);
- printf("Content Info; %d (ave %f) count %d\n", stats.citotal, (double)stats.citotal/(double)stats.cicount, stats.cicount);
- printf("message id's: %d (ave %f) count %d\n", stats.msgid, (double)stats.msgid/(double)stats.msgcount, stats.msgcount);
- }
-#endif
- return ret;
-}
-
-int
-camel_local_summary_sync(CamelLocalSummary *cls, gboolean expunge, CamelFolderChangeInfo *changeinfo, CamelException *ex)
-{
- return ((CamelLocalSummaryClass *)(CAMEL_OBJECT_GET_CLASS(cls)))->sync(cls, expunge, changeinfo, ex);
-}
-
-CamelMessageInfo *
-camel_local_summary_add(CamelLocalSummary *cls, CamelMimeMessage *msg, const CamelMessageInfo *info, CamelFolderChangeInfo *ci, CamelException *ex)
-{
- return ((CamelLocalSummaryClass *)(CAMEL_OBJECT_GET_CLASS(cls)))->add(cls, msg, info, ci, ex);
-}
-
-/**
- * camel_local_summary_write_headers:
- * @fd:
- * @header:
- * @xevline:
- *
- * Write a bunch of headers to the file @fd. IF xevline is non NULL, then
- * an X-Evolution header line is created at the end of all of the headers.
- * The headers written are termianted with a blank line.
- *
- * Return value: -1 on error, otherwise the number of bytes written.
- **/
-int
-camel_local_summary_write_headers(int fd, struct _header_raw *header, char *xevline)
-{
- int outlen = 0, len;
- int newfd;
- FILE *out;
-
- /* dum de dum, maybe the whole sync function should just use stdio for output */
- newfd = dup(fd);
- if (newfd == -1)
- return -1;
-
- out = fdopen(newfd, "w");
- if (out == NULL) {
- close(newfd);
- errno = EINVAL;
- return -1;
- }
-
- while (header) {
- if (strcmp(header->name, "X-Evolution")) {
- len = fprintf(out, "%s:%s\n", header->name, header->value);
- if (len == -1) {
- fclose(out);
- return -1;
- }
- outlen += len;
- }
- header = header->next;
- }
-
- if (xevline) {
- len = fprintf(out, "X-Evolution: %s\n\n", xevline);
- if (len == -1) {
- fclose(out);
- return -1;
- }
- outlen += len;
- }
-
- if (fclose(out) == -1)
- return -1;
-
- return outlen;
-}
-
-static int
-local_summary_check(CamelLocalSummary *cls, CamelFolderChangeInfo *changeinfo, CamelException *ex)
-{
- /* FIXME: sync index here ? */
- return 0;
-}
-
-static int
-local_summary_sync(CamelLocalSummary *cls, gboolean expunge, CamelFolderChangeInfo *changeinfo, CamelException *ex)
-{
- return 0;
-}
-
-static CamelMessageInfo *
-local_summary_add(CamelLocalSummary *cls, CamelMimeMessage *msg, const CamelMessageInfo *info, CamelFolderChangeInfo *ci, CamelException *ex)
-{
- CamelMessageInfo *mi;
- char *xev;
-
- d(printf("Adding message to summary\n"));
-
- mi = camel_folder_summary_add_from_message((CamelFolderSummary *)cls, msg);
- if (mi) {
- d(printf("Added, uid = %s\n", mi->uid));
- if (info) {
- CamelTag *tag = info->user_tags;
- CamelFlag *flag = info->user_flags;
-
- while (flag) {
- camel_flag_set(&mi->user_flags, flag->name, TRUE);
- flag = flag->next;
- }
-
- while (tag) {
- camel_tag_set(&mi->user_tags, tag->name, tag->value);
- tag = tag->next;
- }
-
- mi->flags = mi->flags | (info->flags & 0xffff);
- }
- mi->flags &= ~(CAMEL_MESSAGE_FOLDER_NOXEV|CAMEL_MESSAGE_FOLDER_FLAGGED);
- xev = camel_local_summary_encode_x_evolution(cls, mi);
- camel_medium_set_header((CamelMedium *)msg, "X-Evolution", xev);
- g_free(xev);
- camel_folder_change_info_add_uid(ci, camel_message_info_uid(mi));
- } else {
- d(printf("Failed!\n"));
- camel_exception_set(ex, 1, _("Unable to add message to summary: unknown reason"));
- }
- return mi;
-}
-
-static char *
-local_summary_encode_x_evolution(CamelLocalSummary *cls, const CamelMessageInfo *mi)
-{
- GString *out = g_string_new("");
- struct _header_param *params = NULL;
- GString *val = g_string_new("");
- CamelFlag *flag = mi->user_flags;
- CamelTag *tag = mi->user_tags;
- char *ret;
- const char *p, *uidstr;
- guint32 uid;
-
- /* FIXME: work out what to do with uid's that aren't stored here? */
- /* FIXME: perhaps make that a mbox folder only issue?? */
- p = uidstr = camel_message_info_uid(mi);
- while (*p && isdigit(*p))
- p++;
- if (*p == 0 && sscanf(uidstr, "%u", &uid) == 1) {
- g_string_sprintf(out, "%08x-%04x", uid, mi->flags & 0xffff);
- } else {
- g_string_sprintf(out, "%s-%04x", uidstr, mi->flags & 0xffff);
- }
-
- if (flag || tag) {
- val = g_string_new("");
-
- if (flag) {
- while (flag) {
- g_string_append(val, flag->name);
- if (flag->next)
- g_string_append_c(val, ',');
- flag = flag->next;
- }
- header_set_param(&params, "flags", val->str);
- g_string_truncate(val, 0);
- }
- if (tag) {
- while (tag) {
- g_string_append(val, tag->name);
- g_string_append_c(val, '=');
- g_string_append(val, tag->value);
- if (tag->next)
- g_string_append_c(val, ',');
- tag = tag->next;
- }
- header_set_param(&params, "tags", val->str);
- }
- g_string_free(val, TRUE);
- header_param_list_format_append(out, params);
- header_param_list_free(params);
- }
- ret = out->str;
- g_string_free(out, FALSE);
- return ret;
-}
-
-static int
-local_summary_decode_x_evolution(CamelLocalSummary *cls, const char *xev, CamelMessageInfo *mi)
-{
- struct _header_param *params, *scan;
- guint32 uid, flags;
- char *header;
- int i;
-
- /* check for uid/flags */
- header = header_token_decode(xev);
- if (header && strlen(header) == strlen("00000000-0000")
- && sscanf(header, "%08x-%04x", &uid, &flags) == 2) {
- char uidstr[20];
- if (mi) {
- sprintf(uidstr, "%u", uid);
- camel_message_info_set_uid(mi, g_strdup(uidstr));
- mi->flags = flags;
- }
- } else {
- g_free(header);
- return -1;
- }
- g_free(header);
-
- if (mi == NULL)
- return 0;
-
- /* check for additional data */
- header = strchr(xev, ';');
- if (header) {
- params = header_param_list_decode(header+1);
- scan = params;
- while (scan) {
- if (!strcasecmp(scan->name, "flags")) {
- char **flagv = g_strsplit(scan->value, ",", 1000);
-
- for (i=0;flagv[i];i++) {
- camel_flag_set(&mi->user_flags, flagv[i], TRUE);
- }
- g_strfreev(flagv);
- } else if (!strcasecmp(scan->name, "tags")) {
- char **tagv = g_strsplit(scan->value, ",", 10000);
- char *val;
-
- for (i=0;tagv[i];i++) {
- val = strchr(tagv[i], '=');
- if (val) {
- *val++ = 0;
- camel_tag_set(&mi->user_tags, tagv[i], val);
- val[-1]='=';
- }
- }
- g_strfreev(tagv);
- }
- scan = scan->next;
- }
- header_param_list_free(params);
- }
- return 0;
-}
-
-static CamelMessageInfo *
-message_info_new(CamelFolderSummary *s, struct _header_raw *h)
-{
- CamelMessageInfo *mi;
- CamelLocalSummary *cls = (CamelLocalSummary *)s;
-
- mi = ((CamelFolderSummaryClass *)camel_local_summary_parent)->message_info_new(s, h);
- if (mi) {
- const char *xev;
- int doindex = FALSE;
-
- xev = header_raw_find(&h, "X-Evolution", NULL);
- if (xev==NULL || camel_local_summary_decode_x_evolution(cls, xev, mi) == -1) {
- /* to indicate it has no xev header */
- mi->flags |= CAMEL_MESSAGE_FOLDER_FLAGGED | CAMEL_MESSAGE_FOLDER_NOXEV;
- camel_message_info_set_uid(mi, camel_folder_summary_next_uid_string(s));
-
- /* shortcut, no need to look it up in the index library */
- doindex = TRUE;
- }
-
- if (cls->index
- && (doindex
- || cls->index_force
- || !ibex_contains_name(cls->index, (char *)camel_message_info_uid(mi)))) {
- d(printf("Am indexing message %s\n", camel_message_info_uid(mi)));
- camel_folder_summary_set_index(s, cls->index);
- } else {
- d(printf("Not indexing message %s\n", camel_message_info_uid(mi)));
- camel_folder_summary_set_index(s, NULL);
- }
- }
-
- return mi;
-}
diff --git a/camel/providers/local/camel-local-summary.h b/camel/providers/local/camel-local-summary.h
deleted file mode 100644
index 332175b451..0000000000
--- a/camel/providers/local/camel-local-summary.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef _CAMEL_LOCAL_SUMMARY_H
-#define _CAMEL_LOCAL_SUMMARY_H
-
-#include <camel/camel-folder-summary.h>
-#include <camel/camel-folder.h>
-#include <camel/camel-exception.h>
-#include <libibex/ibex.h>
-
-#define CAMEL_LOCAL_SUMMARY(obj) CAMEL_CHECK_CAST (obj, camel_local_summary_get_type (), CamelLocalSummary)
-#define CAMEL_LOCAL_SUMMARY_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_local_summary_get_type (), CamelLocalSummaryClass)
-#define CAMEL_IS_LOCAL_SUMMARY(obj) CAMEL_CHECK_TYPE (obj, camel_local_summary_get_type ())
-
-typedef struct _CamelLocalSummary CamelLocalSummary;
-typedef struct _CamelLocalSummaryClass CamelLocalSummaryClass;
-
-/* extra summary flags */
-enum {
- CAMEL_MESSAGE_FOLDER_NOXEV = 1<<17,
- CAMEL_MESSAGE_FOLDER_XEVCHANGE = 1<<18,
-};
-
-struct _CamelLocalSummary {
- CamelFolderSummary parent;
-
- struct _CamelLocalSummaryPrivate *priv;
-
- char *folder_path; /* name of matching folder */
-
- ibex *index;
- int index_force; /* do we force index during creation? */
-};
-
-struct _CamelLocalSummaryClass {
- CamelFolderSummaryClass parent_class;
-
- int (*load)(CamelLocalSummary *cls, int forceindex, CamelException *ex);
- int (*check)(CamelLocalSummary *cls, CamelFolderChangeInfo *changeinfo, CamelException *ex);
- int (*sync)(CamelLocalSummary *cls, gboolean expunge, CamelFolderChangeInfo *changeinfo, CamelException *ex);
- CamelMessageInfo *(*add)(CamelLocalSummary *cls, CamelMimeMessage *msg, const CamelMessageInfo *info, CamelFolderChangeInfo *, CamelException *ex);
-
- char *(*encode_x_evolution)(CamelLocalSummary *cls, const CamelMessageInfo *info);
- int (*decode_x_evolution)(CamelLocalSummary *cls, const char *xev, CamelMessageInfo *info);
-};
-
-guint camel_local_summary_get_type (void);
-void camel_local_summary_construct (CamelLocalSummary *new, const char *filename, const char *local_name, ibex *index);
-
-/* load/check the summary */
-int camel_local_summary_load(CamelLocalSummary *cls, int forceindex, CamelException *ex);
-/* check for new/removed messages */
-int camel_local_summary_check(CamelLocalSummary *cls, CamelFolderChangeInfo *, CamelException *ex);
-/* perform a folder sync or expunge, if needed */
-int camel_local_summary_sync(CamelLocalSummary *cls, gboolean expunge, CamelFolderChangeInfo *, CamelException *ex);
-/* add a new message to the summary */
-CamelMessageInfo *camel_local_summary_add(CamelLocalSummary *cls, CamelMimeMessage *msg, const CamelMessageInfo *info, CamelFolderChangeInfo *, CamelException *ex);
-
-/* generate an X-Evolution header line */
-char *camel_local_summary_encode_x_evolution(CamelLocalSummary *cls, const CamelMessageInfo *info);
-int camel_local_summary_decode_x_evolution(CamelLocalSummary *cls, const char *xev, CamelMessageInfo *info);
-
-/* utility functions - write headers to a file with optional X-Evolution header */
-int camel_local_summary_write_headers(int fd, struct _header_raw *header, char *xevline);
-
-#endif /* ! _CAMEL_LOCAL_SUMMARY_H */
-
diff --git a/camel/providers/local/camel-maildir-folder.c b/camel/providers/local/camel-maildir-folder.c
deleted file mode 100644
index 198e4ebc00..0000000000
--- a/camel/providers/local/camel-maildir-folder.c
+++ /dev/null
@@ -1,229 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; fill-column: 160 -*-
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright (C) 1999, 2000 Helix Code Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <dirent.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <fcntl.h>
-
-#include "camel-maildir-folder.h"
-#include "camel-maildir-store.h"
-#include "string-utils.h"
-#include "camel-stream-fs.h"
-#include "camel-maildir-summary.h"
-#include "camel-data-wrapper.h"
-#include "camel-mime-message.h"
-#include "camel-exception.h"
-
-#define d(x) /*(printf("%s(%d): ", __FILE__, __LINE__),(x))*/
-
-static CamelLocalFolderClass *parent_class = NULL;
-
-/* Returns the class for a CamelMaildirFolder */
-#define CMAILDIRF_CLASS(so) CAMEL_MAILDIR_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-#define CF_CLASS(so) CAMEL_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-#define CMAILDIRS_CLASS(so) CAMEL_STORE_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-static CamelLocalSummary *maildir_create_summary(const char *path, const char *folder, ibex *index);
-
-static void maildir_append_message(CamelFolder * folder, CamelMimeMessage * message, const CamelMessageInfo *info, CamelException * ex);
-static CamelMimeMessage *maildir_get_message(CamelFolder * folder, const gchar * uid, CamelException * ex);
-
-static void maildir_finalize(CamelObject * object);
-
-static void camel_maildir_folder_class_init(CamelObjectClass * camel_maildir_folder_class)
-{
- CamelFolderClass *camel_folder_class = CAMEL_FOLDER_CLASS(camel_maildir_folder_class);
- CamelLocalFolderClass *lclass = (CamelLocalFolderClass *)camel_maildir_folder_class;
-
- parent_class = CAMEL_LOCAL_FOLDER_CLASS (camel_type_get_global_classfuncs(camel_local_folder_get_type()));
-
- /* virtual method definition */
-
- /* virtual method overload */
- camel_folder_class->append_message = maildir_append_message;
- camel_folder_class->get_message = maildir_get_message;
-
- lclass->create_summary = maildir_create_summary;
-}
-
-static void maildir_init(gpointer object, gpointer klass)
-{
- /*CamelFolder *folder = object;
- CamelMaildirFolder *maildir_folder = object;*/
-}
-
-static void maildir_finalize(CamelObject * object)
-{
- /*CamelMaildirFolder *maildir_folder = CAMEL_MAILDIR_FOLDER(object);*/
-}
-
-CamelType camel_maildir_folder_get_type(void)
-{
- static CamelType camel_maildir_folder_type = CAMEL_INVALID_TYPE;
-
- if (camel_maildir_folder_type == CAMEL_INVALID_TYPE) {
- camel_maildir_folder_type = camel_type_register(CAMEL_LOCAL_FOLDER_TYPE, "CamelMaildirFolder",
- sizeof(CamelMaildirFolder),
- sizeof(CamelMaildirFolderClass),
- (CamelObjectClassInitFunc) camel_maildir_folder_class_init,
- NULL,
- (CamelObjectInitFunc) maildir_init,
- (CamelObjectFinalizeFunc) maildir_finalize);
- }
-
- return camel_maildir_folder_type;
-}
-
-CamelFolder *
-camel_maildir_folder_new(CamelStore *parent_store, const char *full_name, guint32 flags, CamelException *ex)
-{
- CamelFolder *folder;
-
- d(printf("Creating maildir folder: %s\n", full_name));
-
- folder = (CamelFolder *)camel_object_new(CAMEL_MAILDIR_FOLDER_TYPE);
- folder = (CamelFolder *)camel_local_folder_construct((CamelLocalFolder *)folder,
- parent_store, full_name, flags, ex);
-
- return folder;
-}
-
-static CamelLocalSummary *maildir_create_summary(const char *path, const char *folder, ibex *index)
-{
- return (CamelLocalSummary *)camel_maildir_summary_new(path, folder, index);
-}
-
-static void maildir_append_message(CamelFolder * folder, CamelMimeMessage * message, const CamelMessageInfo *info, CamelException * ex)
-{
- CamelMaildirFolder *maildir_folder = (CamelMaildirFolder *)folder;
- CamelLocalFolder *lf = (CamelLocalFolder *)folder;
- CamelStream *output_stream;
- CamelMessageInfo *mi;
- CamelMaildirMessageInfo *mdi;
- char *name, *dest;
-
- d(printf("Appending message\n"));
-
- /* add it to the summary/assign the uid, etc */
- mi = camel_local_summary_add((CamelLocalSummary *)folder->summary, message, info, lf->changes, ex);
- if (camel_exception_is_set(ex)) {
- return;
- }
-
- mdi = (CamelMaildirMessageInfo *)mi;
-
- d(printf("Appending message: uid is %s filename is %s\n", camel_message_info_uid(mi), mdi->filename));
-
- /* write it out to tmp, use the uid we got from the summary */
- name = g_strdup_printf("%s/tmp/%s", lf->folder_path, camel_message_info_uid(mi));
- output_stream = camel_stream_fs_new_with_name(name, O_WRONLY|O_CREAT, 0600);
- if (output_stream == NULL) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Cannot append message to maildir folder: %s: %s"), name, g_strerror(errno));
- g_free(name);
- return;
- }
-
- if (camel_data_wrapper_write_to_stream((CamelDataWrapper *)message, output_stream) == -1
- || camel_stream_close(output_stream) == -1) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Cannot append message to maildir folder: %s: %s"), name, g_strerror(errno));
- camel_object_unref((CamelObject *)output_stream);
- unlink(name);
- g_free(name);
- return;
- }
-
- /* now move from tmp to cur (bypass new, does it matter?) */
- dest = g_strdup_printf("%s/cur/%s", lf->folder_path, camel_maildir_info_filename(mdi));
- if (rename(name, dest) == 1) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Cannot append message to maildir folder: %s: %s"), name, g_strerror(errno));
- camel_object_unref((CamelObject *)output_stream);
- unlink(name);
- g_free(name);
- g_free(dest);
- return;
- }
-
- g_free(dest);
- g_free(name);
-
- camel_object_trigger_event((CamelObject *)folder, "folder_changed", ((CamelLocalFolder *)maildir_folder)->changes);
- camel_folder_change_info_clear(((CamelLocalFolder *)maildir_folder)->changes);
-}
-
-static CamelMimeMessage *maildir_get_message(CamelFolder * folder, const gchar * uid, CamelException * ex)
-{
- CamelLocalFolder *lf = (CamelLocalFolder *)folder;
- CamelStream *message_stream = NULL;
- CamelMimeMessage *message = NULL;
- CamelMessageInfo *info;
- char *name;
- CamelMaildirMessageInfo *mdi;
-
- d(printf("getting message: %s\n", uid));
-
- /* get the message summary info */
- if ((info = camel_folder_summary_uid(folder->summary, uid)) == NULL) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_FOLDER_INVALID_UID, _("Cannot get message: %s\n %s"), uid, _("No such message"));
- return NULL;
- }
-
- mdi = (CamelMaildirMessageInfo *)info;
-
- /* what do we do if the message flags (and :info data) changes? filename mismatch - need to recheck I guess */
- name = g_strdup_printf("%s/cur/%s", lf->folder_path, camel_maildir_info_filename(mdi));
-
- camel_folder_summary_info_free(folder->summary, info);
-
- if ((message_stream = camel_stream_fs_new_with_name(name, O_RDONLY, 0)) == NULL) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_FOLDER_INVALID_UID, _("Cannot get message: %s\n %s"),
- name, g_strerror(errno));
- g_free(name);
- return NULL;
- }
-
- message = camel_mime_message_new();
- if (camel_data_wrapper_construct_from_stream((CamelDataWrapper *)message, message_stream) == -1) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_FOLDER_INVALID_UID, _("Cannot get message: %s\n %s"),
- name, _("Invalid message contents"));
- g_free(name);
- camel_object_unref((CamelObject *)message_stream);
- camel_object_unref((CamelObject *)message);
- return NULL;
-
- }
- camel_object_unref((CamelObject *)message_stream);
- g_free(name);
-
- return message;
-}
diff --git a/camel/providers/local/camel-maildir-folder.h b/camel/providers/local/camel-maildir-folder.h
deleted file mode 100644
index 5076e2f73c..0000000000
--- a/camel/providers/local/camel-maildir-folder.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Authors:
- * Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright (C) 1999 Helix Code Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_MAILDIR_FOLDER_H
-#define CAMEL_MAILDIR_FOLDER_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus } */
-#include "camel-local-folder.h"
-
-#define CAMEL_MAILDIR_FOLDER_TYPE (camel_maildir_folder_get_type ())
-#define CAMEL_MAILDIR_FOLDER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MAILDIR_FOLDER_TYPE, CamelMaildirFolder))
-#define CAMEL_MAILDIR_FOLDER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MAILDIR_FOLDER_TYPE, CamelMaildirFolderClass))
-#define CAMEL_IS_MAILDIR_FOLDER(o) (CAMEL_CHECK_TYPE((o), CAMEL_MAILDIR_FOLDER_TYPE))
-
-typedef struct {
- CamelLocalFolder parent_object;
-
-} CamelMaildirFolder;
-
-typedef struct {
- CamelLocalFolderClass parent_class;
-
- /* Virtual methods */
-
-} CamelMaildirFolderClass;
-
-/* public methods */
-CamelFolder *camel_maildir_folder_new(CamelStore *parent_store, const char *full_name, guint32 flags, CamelException *ex);
-
-/* Standard Camel function */
-CamelType camel_maildir_folder_get_type(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif /* CAMEL_MAILDIR_FOLDER_H */
diff --git a/camel/providers/local/camel-maildir-store.c b/camel/providers/local/camel-maildir-store.c
deleted file mode 100644
index 8fa4454485..0000000000
--- a/camel/providers/local/camel-maildir-store.c
+++ /dev/null
@@ -1,200 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <sys/stat.h>
-#include <errno.h>
-#include <string.h>
-#include <unistd.h>
-
-#include <dirent.h>
-
-#include "camel-maildir-store.h"
-#include "camel-maildir-folder.h"
-#include "camel-exception.h"
-#include "camel-url.h"
-
-static CamelLocalStoreClass *parent_class = NULL;
-
-/* Returns the class for a CamelMaildirStore */
-#define CMAILDIRS_CLASS(so) CAMEL_MAILDIR_STORE_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-#define CF_CLASS(so) CAMEL_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-#define CMAILDIRF_CLASS(so) CAMEL_MAILDIR_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-static CamelFolder *get_folder(CamelStore * store, const char *folder_name, guint32 flags, CamelException * ex);
-static void delete_folder(CamelStore * store, const char *folder_name, CamelException * ex);
-
-static void camel_maildir_store_class_init(CamelObjectClass * camel_maildir_store_class)
-{
- CamelStoreClass *camel_store_class = CAMEL_STORE_CLASS(camel_maildir_store_class);
- /*CamelServiceClass *camel_service_class = CAMEL_SERVICE_CLASS(camel_maildir_store_class);*/
-
- parent_class = (CamelLocalStoreClass *)camel_type_get_global_classfuncs(camel_local_store_get_type());
-
- /* virtual method overload, use defaults for most */
- camel_store_class->get_folder = get_folder;
- camel_store_class->delete_folder = delete_folder;
-}
-
-CamelType camel_maildir_store_get_type(void)
-{
- static CamelType camel_maildir_store_type = CAMEL_INVALID_TYPE;
-
- if (camel_maildir_store_type == CAMEL_INVALID_TYPE) {
- camel_maildir_store_type = camel_type_register(CAMEL_LOCAL_STORE_TYPE, "CamelMaildirStore",
- sizeof(CamelMaildirStore),
- sizeof(CamelMaildirStoreClass),
- (CamelObjectClassInitFunc) camel_maildir_store_class_init,
- NULL,
- NULL,
- NULL);
- }
-
- return camel_maildir_store_type;
-}
-
-static CamelFolder *get_folder(CamelStore * store, const char *folder_name, guint32 flags, CamelException * ex)
-{
- char *name, *tmp, *cur, *new;
- struct stat st;
- CamelFolder *folder = NULL;
-
- (void) ((CamelStoreClass *)parent_class)->get_folder(store, folder_name, flags, ex);
- if (camel_exception_is_set(ex))
- return NULL;
-
- name = g_strdup_printf("%s%s", CAMEL_SERVICE(store)->url->path, folder_name);
- tmp = g_strdup_printf("%s/tmp", name);
- cur = g_strdup_printf("%s/cur", name);
- new = g_strdup_printf("%s/new", name);
-
- if (stat(name, &st) == -1) {
- if (errno != ENOENT) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not open folder `%s':\n%s"),
- folder_name, strerror(errno));
- } else if ((flags & CAMEL_STORE_FOLDER_CREATE) == 0) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_STORE_NO_FOLDER,
- _("Folder `%s' does not exist."), folder_name);
- } else {
- if (mkdir(name, 0700) != 0
- || mkdir(tmp, 0700) != 0
- || mkdir(cur, 0700) != 0
- || mkdir(new, 0700) != 0) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not create folder `%s':\n%s"),
- folder_name, strerror(errno));
- rmdir(tmp);
- rmdir(cur);
- rmdir(new);
- rmdir(name);
- } else {
- folder = camel_maildir_folder_new(store, folder_name, flags, ex);
- }
- }
- } else if (!S_ISDIR(st.st_mode)
- || stat(tmp, &st) != 0 || !S_ISDIR(st.st_mode)
- || stat(cur, &st) != 0 || !S_ISDIR(st.st_mode)
- || stat(new, &st) != 0 || !S_ISDIR(st.st_mode)) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_STORE_NO_FOLDER,
- _("`%s' is not a maildir directory."), name);
- } else {
- folder = camel_maildir_folder_new(store, folder_name, flags, ex);
- }
-
- g_free(name);
- g_free(tmp);
- g_free(cur);
- g_free(new);
-
- return folder;
-}
-
-static void delete_folder(CamelStore * store, const char *folder_name, CamelException * ex)
-{
- char *name, *tmp, *cur, *new;
- struct stat st;
-
- name = g_strdup_printf("%s%s", CAMEL_SERVICE(store)->url->path, folder_name);
-
- tmp = g_strdup_printf("%s/tmp", name);
- cur = g_strdup_printf("%s/cur", name);
- new = g_strdup_printf("%s/new", name);
-
- if (stat(name, &st) == -1 || !S_ISDIR(st.st_mode)
- || stat(tmp, &st) == -1 || !S_ISDIR(st.st_mode)
- || stat(cur, &st) == -1 || !S_ISDIR(st.st_mode)
- || stat(new, &st) == -1 || !S_ISDIR(st.st_mode)) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not delete folder `%s': %s"),
- folder_name, errno?strerror(errno):_("not a maildir directory"));
- } else {
- int err = 0;
-
- /* remove subdirs first - will fail if not empty */
- if (rmdir(cur) == -1 || rmdir(new) == -1) {
- err = errno;
- } else {
- DIR *dir;
- struct dirent *d;
-
- /* for tmp (only), its contents is irrelevant */
- dir = opendir(tmp);
- if (dir) {
- while ( (d=readdir(dir)) ) {
- char *name = d->d_name, *file;
-
- if (!strcmp(name, ".") || !strcmp(name, ".."))
- continue;
- file = g_strdup_printf("%s/%s", tmp, name);
- unlink(file);
- g_free(file);
- }
- closedir(dir);
- }
- if (rmdir(tmp) == -1 || rmdir(name) == -1)
- err = errno;
- }
-
- if (err != 0) {
- /* easier just to mkdir all (and let them fail), than remember what we got to */
- mkdir(name, 0700);
- mkdir(cur, 0700);
- mkdir(new, 0700);
- mkdir(tmp, 0700);
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not delete folder `%s': %s"),
- folder_name, strerror(err));
- } else {
- /* and remove metadata */
- ((CamelStoreClass *)parent_class)->delete_folder(store, folder_name, ex);
- }
- }
-
- g_free(name);
- g_free(tmp);
- g_free(cur);
- g_free(new);
-}
diff --git a/camel/providers/local/camel-maildir-store.h b/camel/providers/local/camel-maildir-store.h
deleted file mode 100644
index 27b6a6e590..0000000000
--- a/camel/providers/local/camel-maildir-store.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_MAILDIR_STORE_H
-#define CAMEL_MAILDIR_STORE_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus } */
-
-#include "camel-local-store.h"
-
-#define CAMEL_MAILDIR_STORE_TYPE (camel_maildir_store_get_type ())
-#define CAMEL_MAILDIR_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MAILDIR_STORE_TYPE, CamelMaildirStore))
-#define CAMEL_MAILDIR_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MAILDIR_STORE_TYPE, CamelMaildirStoreClass))
-#define CAMEL_IS_MAILDIR_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_MAILDIR_STORE_TYPE))
-
-typedef struct {
- CamelLocalStore parent_object;
-
-} CamelMaildirStore;
-
-typedef struct {
- CamelLocalStoreClass parent_class;
-
-} CamelMaildirStoreClass;
-
-/* public methods */
-
-/* Standard Camel function */
-CamelType camel_maildir_store_get_type(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif /* CAMEL_MAILDIR_STORE_H */
diff --git a/camel/providers/local/camel-maildir-summary.c b/camel/providers/local/camel-maildir-summary.c
deleted file mode 100644
index 5d65b02a5e..0000000000
--- a/camel/providers/local/camel-maildir-summary.c
+++ /dev/null
@@ -1,766 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Not Zed <notzed@lostzed.mmc.com.au>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <sys/stat.h>
-#include <sys/uio.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <sys/types.h>
-#include <dirent.h>
-
-#include <ctype.h>
-
-#include "camel-maildir-summary.h"
-#include <camel/camel-mime-message.h>
-
-#include "camel-private.h"
-#include "e-util/e-memory.h"
-
-#define d(x) /*(printf("%s(%d): ", __FILE__, __LINE__),(x))*/
-
-#define CAMEL_MAILDIR_SUMMARY_VERSION (0x2000)
-
-static CamelMessageInfo *message_info_load(CamelFolderSummary *s, FILE *in);
-static CamelMessageInfo *message_info_new(CamelFolderSummary *, struct _header_raw *);
-static void message_info_free(CamelFolderSummary *, CamelMessageInfo *mi);
-
-static int maildir_summary_load(CamelLocalSummary *cls, int forceindex, CamelException *ex);
-static int maildir_summary_check(CamelLocalSummary *cls, CamelFolderChangeInfo *changeinfo, CamelException *ex);
-static int maildir_summary_sync(CamelLocalSummary *cls, gboolean expunge, CamelFolderChangeInfo *changeinfo, CamelException *ex);
-static CamelMessageInfo *maildir_summary_add(CamelLocalSummary *cls, CamelMimeMessage *msg, const CamelMessageInfo *info, CamelFolderChangeInfo *, CamelException *ex);
-
-static char *maildir_summary_next_uid_string(CamelFolderSummary *s);
-static int maildir_summary_decode_x_evolution(CamelLocalSummary *cls, const char *xev, CamelMessageInfo *mi);
-static char *maildir_summary_encode_x_evolution(CamelLocalSummary *cls, const CamelMessageInfo *mi);
-
-static void camel_maildir_summary_class_init (CamelMaildirSummaryClass *class);
-static void camel_maildir_summary_init (CamelMaildirSummary *gspaper);
-static void camel_maildir_summary_finalise (CamelObject *obj);
-
-#define _PRIVATE(x) (((CamelMaildirSummary *)(x))->priv)
-
-struct _CamelMaildirSummaryPrivate {
- char *current_file;
- char *hostname;
-
- GHashTable *load_map;
-};
-
-static CamelLocalSummaryClass *parent_class;
-
-CamelType
-camel_maildir_summary_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_local_summary_get_type (), "CamelMaildirSummary",
- sizeof(CamelMaildirSummary),
- sizeof(CamelMaildirSummaryClass),
- (CamelObjectClassInitFunc)camel_maildir_summary_class_init,
- NULL,
- (CamelObjectInitFunc)camel_maildir_summary_init,
- (CamelObjectFinalizeFunc)camel_maildir_summary_finalise);
- }
-
- return type;
-}
-
-static void
-camel_maildir_summary_class_init (CamelMaildirSummaryClass *class)
-{
- CamelFolderSummaryClass *sklass = (CamelFolderSummaryClass *) class;
- CamelLocalSummaryClass *lklass = (CamelLocalSummaryClass *)class;
-
- parent_class = (CamelLocalSummaryClass *)camel_type_get_global_classfuncs(camel_local_summary_get_type ());
-
- /* override methods */
- sklass->message_info_load = message_info_load;
- sklass->message_info_new = message_info_new;
- sklass->message_info_free = message_info_free;
- sklass->next_uid_string = maildir_summary_next_uid_string;
-
- lklass->load = maildir_summary_load;
- lklass->check = maildir_summary_check;
- lklass->sync = maildir_summary_sync;
- lklass->add = maildir_summary_add;
- lklass->encode_x_evolution = maildir_summary_encode_x_evolution;
- lklass->decode_x_evolution = maildir_summary_decode_x_evolution;
-}
-
-static void
-camel_maildir_summary_init (CamelMaildirSummary *o)
-{
- struct _CamelFolderSummary *s = (CamelFolderSummary *) o;
- char hostname[256];
-
- o->priv = g_malloc0(sizeof(*o->priv));
- /* set unique file version */
- s->version += CAMEL_MAILDIR_SUMMARY_VERSION;
-
- s->message_info_size = sizeof(CamelMaildirMessageInfo);
- s->content_info_size = sizeof(CamelMaildirMessageContentInfo);
-
-#if defined (DOEPOOLV) || defined (DOESTRV)
- s->message_info_strings = CAMEL_MAILDIR_INFO_LAST;
-#endif
-
- if (gethostname(hostname, 256) == 0) {
- o->priv->hostname = g_strdup(hostname);
- } else {
- o->priv->hostname = g_strdup("localhost");
- }
-}
-
-static void
-camel_maildir_summary_finalise(CamelObject *obj)
-{
- CamelMaildirSummary *o = (CamelMaildirSummary *)obj;
-
- g_free(o->priv->hostname);
- g_free(o->priv);
-}
-
-/**
- * camel_maildir_summary_new:
- *
- * Create a new CamelMaildirSummary object.
- *
- * Return value: A new #CamelMaildirSummary object.
- **/
-CamelMaildirSummary *camel_maildir_summary_new (const char *filename, const char *maildirdir, ibex *index)
-{
- CamelMaildirSummary *o = (CamelMaildirSummary *)camel_object_new(camel_maildir_summary_get_type ());
-
- camel_local_summary_construct((CamelLocalSummary *)o, filename, maildirdir, index);
- return o;
-}
-
-/* the 'standard' maildir flags. should be defined in sorted order. */
-static struct {
- char flag;
- guint32 flagbit;
-} flagbits[] = {
- { 'F', CAMEL_MESSAGE_FLAGGED },
- { 'R', CAMEL_MESSAGE_ANSWERED },
- { 'S', CAMEL_MESSAGE_SEEN },
- { 'T', CAMEL_MESSAGE_DELETED },
-};
-
-/* convert the uid + flags into a unique:info maildir format */
-char *camel_maildir_summary_info_to_name(const CamelMessageInfo *info)
-{
- char *p, *buf;
- int i;
- const char *uid;
-
- uid = camel_message_info_uid(info);
- buf = alloca(strlen(uid) + strlen(":2,") + (sizeof(flagbits)/sizeof(flagbits[0])) + 1);
- p = buf + sprintf(buf, "%s:2,", uid);
- for (i=0;i<sizeof(flagbits)/sizeof(flagbits[0]);i++) {
- if (info->flags & flagbits[i].flagbit)
- *p++ = flagbits[i].flag;
- }
- *p = 0;
-
- return g_strdup(buf);
-}
-
-/* returns 0 if the info matches (or there was none), otherwise we changed it */
-int camel_maildir_summary_name_to_info(CamelMessageInfo *info, const char *name)
-{
- char *p, c;
- guint32 set = 0; /* what we set */
- /*guint32 all = 0;*/ /* all flags */
- int i;
-
- p = strstr(name, ":2,");
- if (p) {
- p+=3;
- while ((c = *p++)) {
- /* we could assume that the flags are in order, but its just as easy not to require */
- for (i=0;i<sizeof(flagbits)/sizeof(flagbits[0]);i++) {
- if (flagbits[i].flag == c && (info->flags & flagbits[i].flagbit) == 0) {
- set |= flagbits[i].flagbit;
- }
- /*all |= flagbits[i].flagbit;*/
- }
- }
-
- /* changed? */
- /*if ((info->flags & all) != set) {*/
- if ((info->flags & set) != set) {
- /* ok, they did change, only add the new flags ('merge flags'?) */
- /*info->flags &= all; if we wanted to set only the new flags, which we probably dont */
- info->flags |= set;
- return 1;
- }
- }
-
- return 0;
-}
-
-/* for maildir, x-evolution isn't used, so dont try and get anything out of it */
-static int maildir_summary_decode_x_evolution(CamelLocalSummary *cls, const char *xev, CamelMessageInfo *mi)
-{
- return -1;
-}
-
-static char *maildir_summary_encode_x_evolution(CamelLocalSummary *cls, const CamelMessageInfo *mi)
-{
- return NULL;
-}
-
-/* FIXME:
- both 'new' and 'add' will try and set the filename, this is not ideal ...
-*/
-static CamelMessageInfo *maildir_summary_add(CamelLocalSummary *cls, CamelMimeMessage *msg, const CamelMessageInfo *info, CamelFolderChangeInfo *changes, CamelException *ex)
-{
- CamelMessageInfo *mi;
-
- mi = ((CamelLocalSummaryClass *) parent_class)->add(cls, msg, info, changes, ex);
- if (mi) {
- if (info) {
- camel_maildir_info_set_filename(mi, camel_maildir_summary_info_to_name(mi));
- d(printf("Setting filename to %s\n", camel_maildir_info_filename(mi)));
- }
- }
-
- return mi;
-}
-
-static CamelMessageInfo *message_info_new(CamelFolderSummary * s, struct _header_raw *h)
-{
- CamelMessageInfo *mi;
- CamelMaildirSummary *mds = (CamelMaildirSummary *)s;
- CamelMaildirMessageInfo *mdi;
- const char *uid;
-
- mi = ((CamelFolderSummaryClass *) parent_class)->message_info_new(s, h);
- /* assign the uid and new filename */
- if (mi) {
- mdi = (CamelMaildirMessageInfo *)mi;
-
- uid = camel_message_info_uid(mi);
- if (uid==NULL || uid[0] == 0)
- camel_message_info_set_uid(mi, camel_folder_summary_next_uid_string(s));
-
- /* with maildir we know the real received date, from the filename */
- mi->date_received = strtoul(camel_message_info_uid(mi), NULL, 10);
-
- if (mds->priv->current_file) {
-#if 0
- char *p1, *p2, *p3;
- unsigned long uid;
-#endif
- /* if setting from a file, grab the flags from it */
- camel_maildir_info_set_filename(mi, g_strdup(mds->priv->current_file));
- camel_maildir_summary_name_to_info(mi, mds->priv->current_file);
-
-#if 0
- /* Actually, I dont think all this effort is worth it at all ... */
-
- /* also, see if we can extract the next-id from tne name, and safe-if-fy ourselves against collisions */
- /* we check for something.something_number.something */
- p1 = strchr(mdi->filename, '.');
- if (p1) {
- p2 = strchr(p1+1, '.');
- p3 = strchr(p1+1, '_');
- if (p2 && p3 && p3<p2) {
- uid = strtoul(p3+1, &p1, 10);
- if (p1 == p2 && uid>0)
- camel_folder_summary_set_uid(s, uid);
- }
- }
-#endif
- } else {
- /* if creating a file, set its name from the flags we have */
- camel_maildir_info_set_filename(mdi, camel_maildir_summary_info_to_name(mi));
- d(printf("Setting filename to %s\n", camel_maildir_info_filename(mi)));
- }
- }
-
- return mi;
-}
-
-
-static void message_info_free(CamelFolderSummary *s, CamelMessageInfo *mi)
-{
-#if !defined (DOEPOOLV) && !defined (DOESTRV)
- CamelMaildirMessageInfo *mdi = (CamelMaildirMessageInfo *)mi;
-
- g_free(mdi->filename);
-#endif
- ((CamelFolderSummaryClass *) parent_class)->message_info_free(s, mi);
-}
-
-
-static char *maildir_summary_next_uid_string(CamelFolderSummary *s)
-{
- CamelMaildirSummary *mds = (CamelMaildirSummary *)s;
-
- d(printf("next uid string called?\n"));
-
- /* if we have a current file, then use that to get the uid */
- if (mds->priv->current_file) {
- char *cln;
-
- cln = strchr(mds->priv->current_file, ':');
- if (cln)
- return g_strndup(mds->priv->current_file, cln-mds->priv->current_file);
- else
- return g_strdup(mds->priv->current_file);
- } else {
- /* the first would probably work, but just to be safe, check for collisions */
-#if 0
- return g_strdup_printf("%ld.%d_%u.%s", time(0), getpid(), camel_folder_summary_next_uid(s), mds->priv->hostname);
-#else
- CamelLocalSummary *cls = (CamelLocalSummary *)s;
- char *name = NULL, *uid = NULL;
- struct stat st;
- int retry = 0;
- guint32 nextuid = camel_folder_summary_next_uid(s);
-
- /* we use time.pid_count.hostname */
- do {
- if (retry > 0) {
- g_free(name);
- g_free(uid);
- sleep(2);
- }
- uid = g_strdup_printf("%ld.%d_%u.%s", time(0), getpid(), nextuid, mds->priv->hostname);
- name = g_strdup_printf("%s/tmp/%s", cls->folder_path, uid);
- retry++;
- } while (stat(name, &st) == 0 && retry<3);
-
- /* I dont know what we're supposed to do if it fails to find a unique name?? */
-
- g_free(name);
- return uid;
-#endif
- }
-}
-
-static CamelMessageInfo *
-message_info_load(CamelFolderSummary *s, FILE *in)
-{
- CamelMessageInfo *mi;
- CamelMaildirSummary *mds = (CamelMaildirSummary *)s;
-
- mi = ((CamelFolderSummaryClass *) parent_class)->message_info_load(s, in);
- if (mi) {
- char *name;
-
- if (mds->priv->load_map
- && (name = g_hash_table_lookup(mds->priv->load_map, camel_message_info_uid(mi)))) {
- d(printf("Setting filename of %s to %s\n", camel_message_info_uid(mi), name));
- camel_maildir_info_set_filename(mi, g_strdup(name));
- camel_maildir_summary_name_to_info(mi, name);
- }
- }
-
- return mi;
-}
-
-static int maildir_summary_load(CamelLocalSummary *cls, int forceindex, CamelException *ex)
-{
- char *cur;
- DIR *dir;
- struct dirent *d;
- CamelMaildirSummary *mds = (CamelMaildirSummary *)cls;
- char *uid;
- EMemPool *pool;
- int ret;
-
- cur = g_strdup_printf("%s/cur", cls->folder_path);
-
- d(printf("pre-loading uid <> filename map\n"));
-
- dir = opendir(cur);
- if (dir == NULL) {
- camel_exception_setv(ex, 1, _("Cannot open maildir directory path: %s: %s"), cls->folder_path, strerror(errno));
- g_free(cur);
- return -1;
- }
-
- mds->priv->load_map = g_hash_table_new(g_str_hash, g_str_equal);
- pool = e_mempool_new(1024, 512, E_MEMPOOL_ALIGN_BYTE);
-
- while ( (d = readdir(dir)) ) {
- if (d->d_name[0] == '.')
- continue;
-
- /* map the filename -> uid */
- uid = strchr(d->d_name, ':');
- if (uid) {
- int len = uid-d->d_name;
- uid = e_mempool_alloc(pool, len+1);
- memcpy(uid, d->d_name, len);
- uid[len] = 0;
- g_hash_table_insert(mds->priv->load_map, uid, e_mempool_strdup(pool, d->d_name));
- } else {
- uid = e_mempool_strdup(pool, d->d_name);
- g_hash_table_insert(mds->priv->load_map, uid, uid);
- }
- }
- closedir(dir);
- g_free(cur);
-
- ret = ((CamelLocalSummaryClass *) parent_class)->load(cls, forceindex, ex);
-
- g_hash_table_destroy(mds->priv->load_map);
- mds->priv->load_map = NULL;
- e_mempool_destroy(pool);
-
- return ret;
-}
-
-static int camel_maildir_summary_add(CamelLocalSummary *cls, const char *name, int forceindex)
-{
- CamelMaildirSummary *maildirs = (CamelMaildirSummary *)cls;
- char *filename = g_strdup_printf("%s/cur/%s", cls->folder_path, name);
- int fd;
- CamelMimeParser *mp;
-
- d(printf("summarising: %s\n", name));
-
- fd = open(filename, O_RDONLY);
- if (fd == -1) {
- g_warning("Cannot summarise/index: %s: %s", filename, strerror(errno));
- g_free(filename);
- return -1;
- }
- mp = camel_mime_parser_new();
- camel_mime_parser_scan_from(mp, FALSE);
- camel_mime_parser_init_with_fd(mp, fd);
- if (cls->index && (forceindex || !ibex_contains_name(cls->index, (char *)name))) {
- d(printf("forcing indexing of message content\n"));
- camel_folder_summary_set_index((CamelFolderSummary *)maildirs, cls->index);
- } else {
- camel_folder_summary_set_index((CamelFolderSummary *)maildirs, NULL);
- }
- maildirs->priv->current_file = (char *)name;
- camel_folder_summary_add_from_parser((CamelFolderSummary *)maildirs, mp);
- camel_object_unref((CamelObject *)mp);
- maildirs->priv->current_file = NULL;
- camel_folder_summary_set_index((CamelFolderSummary *)maildirs, NULL);
- g_free(filename);
- return 0;
-}
-
-static void
-remove_summary(char *key, CamelMessageInfo *info, CamelLocalSummary *cls)
-{
- d(printf("removing message %s from summary\n", key));
- if (cls->index)
- ibex_unindex(cls->index, (char *)camel_message_info_uid(info));
- camel_folder_summary_remove((CamelFolderSummary *)cls, info);
- camel_folder_summary_info_free((CamelFolderSummary *)cls, info);
-}
-
-static int
-sort_receive_cmp(const void *ap, const void *bp)
-{
- const CamelMessageInfo
- *a = *((CamelMessageInfo **)ap),
- *b = *((CamelMessageInfo **)bp);
-
- if (a->date_received < b->date_received)
- return -1;
- else if (a->date_received > b->date_received)
- return 1;
-
- return 0;
-}
-
-static int
-maildir_summary_check(CamelLocalSummary *cls, CamelFolderChangeInfo *changes, CamelException *ex)
-{
- DIR *dir;
- struct dirent *d;
- char *p;
- CamelMessageInfo *info;
- CamelMaildirMessageInfo *mdi;
- CamelFolderSummary *s = (CamelFolderSummary *)cls;
- GHashTable *left;
- int i, count;
- int forceindex;
- char *new, *cur;
- char *uid;
-
- new = g_strdup_printf("%s/new", cls->folder_path);
- cur = g_strdup_printf("%s/cur", cls->folder_path);
-
- /* FIXME: Handle changeinfo */
-
- d(printf("checking summary ...\n"));
-
- /* scan the directory, check for mail files not in the index, or index entries that
- no longer exist */
- dir = opendir(cur);
- if (dir == NULL) {
- camel_exception_setv(ex, 1, _("Cannot open maildir directory path: %s: %s"), cls->folder_path, strerror(errno));
- g_free(cur);
- g_free(new);
- return -1;
- }
-
- /* keeps track of all uid's that have not been processed */
- left = g_hash_table_new(g_str_hash, g_str_equal);
- count = camel_folder_summary_count((CamelFolderSummary *)cls);
- forceindex = count == 0;
- for (i=0;i<count;i++) {
- info = camel_folder_summary_index((CamelFolderSummary *)cls, i);
- if (info) {
- g_hash_table_insert(left, (char *)camel_message_info_uid(info), info);
- }
- }
-
- while ( (d = readdir(dir)) ) {
- /* FIXME: also run stat to check for regular file */
- p = d->d_name;
- if (p[0] == '.')
- continue;
-
- /* map the filename -> uid */
- uid = strchr(d->d_name, ':');
- if (uid)
- uid = g_strndup(d->d_name, uid-d->d_name);
- else
- uid = g_strdup(d->d_name);
-
- info = camel_folder_summary_uid((CamelFolderSummary *)cls, uid);
- if (info == NULL || (cls->index && (!ibex_contains_name(cls->index, uid)))) {
- /* need to add this file to the summary */
- if (info != NULL) {
- CamelMessageInfo *old = g_hash_table_lookup(left, camel_message_info_uid(info));
- if (old) {
- g_hash_table_remove(left, uid);
- camel_folder_summary_info_free((CamelFolderSummary *)cls, old);
- }
- camel_folder_summary_remove((CamelFolderSummary *)cls, info);
- camel_folder_summary_info_free((CamelFolderSummary *)cls, info);
- }
- camel_maildir_summary_add(cls, d->d_name, forceindex);
- } else {
- const char *filename;
- CamelMessageInfo *old;
-
- old = g_hash_table_lookup(left, camel_message_info_uid(info));
- if (old) {
- camel_folder_summary_info_free((CamelFolderSummary *)cls, old);
- g_hash_table_remove(left, camel_message_info_uid(info));
- }
-
- mdi = (CamelMaildirMessageInfo *)info;
- filename = camel_maildir_info_filename(mdi);
- /* TODO: only store the extension in the mdi->filename struct, not the whole lot */
- if (filename == NULL || strcmp(filename, d->d_name) != 0) {
-#if defined (DOEPOOLV) || defined (DOESTRV)
-#warning "cannot modify the estrv after its been setup, for mt-safe code"
- d(printf("filename changed: %s to %s\n", filename, d->d_name));
-
- /* need to update the summary hash string reference since it might (will) change */
- CAMEL_SUMMARY_LOCK(s, summary_lock);
- g_hash_table_remove(s->messages_uid, uid);
-#ifdef DOEPOOLV
- info->strings = e_poolv_set(info->strings, CAMEL_MAILDIR_INFO_FILENAME, d->d_name, FALSE);
-#else
- info->strings = e_strv_set_ref(info->strings, CAMEL_MAILDIR_INFO_FILENAME, d->d_name);
- /* we need to re-pack as well */
- info->strings = e_strv_pack(info->strings);
-#endif /* DOEPOOLV */
- g_hash_table_insert(s->messages_uid, (char *)camel_message_info_uid(info), info);
- CAMEL_SUMMARY_UNLOCK(s, summary_lock);
-#else /* defined (DOEPOOLV) || defined (DOESTRV) */
- g_free(mdi->filename);
- mdi->filename = g_strdup(d->d_name);
-#endif
- }
- camel_folder_summary_info_free((CamelFolderSummary *)cls, info);
- }
- g_free(uid);
- }
- closedir(dir);
- g_hash_table_foreach(left, (GHFunc)remove_summary, cls);
- g_hash_table_destroy(left);
-
- /* now, scan new for new messages, and copy them to cur, and so forth */
- dir = opendir(new);
- if (dir != NULL) {
- while ( (d = readdir(dir)) ) {
- char *name, *newname, *destname, *destfilename;
- char *src, *dest;
-
- name = d->d_name;
- if (name[0] == '.')
- continue;
-
- /* already in summary? shouldn't happen, but just incase ... */
- if ((info = camel_folder_summary_uid((CamelFolderSummary *)cls, name))) {
- camel_folder_summary_info_free((CamelFolderSummary *)cls, info);
- newname = destname = camel_folder_summary_next_uid_string(s);
- } else {
- newname = NULL;
- destname = name;
- }
-
- /* copy this to the destination folder, use 'standard' semantics for maildir info field */
- src = g_strdup_printf("%s/%s", new, name);
- destfilename = g_strdup_printf("%s:2,", destname);
- dest = g_strdup_printf("%s/%s", cur, destfilename);
-
- /* FIXME: This should probably use link/unlink */
-
- if (rename(src, dest) == 0) {
- camel_maildir_summary_add(cls, destfilename, forceindex);
- if (changes)
- camel_folder_change_info_add_uid(changes, destname);
- } else {
- /* else? we should probably care about failures, but wont */
- g_warning("Failed to move new maildir message %s to cur %s", src, dest);
- }
-
- /* c strings are painful to work with ... */
- g_free(destfilename);
- g_free(newname);
- g_free(src);
- g_free(dest);
- }
- }
- closedir(dir);
-
- g_free(new);
- g_free(cur);
-
- /* sort the summary based on receive time, since the directory order is not useful */
- CAMEL_SUMMARY_LOCK(s, summary_lock);
- qsort(s->messages->pdata, s->messages->len, sizeof(CamelMessageInfo *), sort_receive_cmp);
- CAMEL_SUMMARY_UNLOCK(s, summary_lock);
-
- /* FIXME: move this up a class? */
-
- /* force a save of the index, just to make sure */
- /* note this could be expensive so possibly shouldn't be here
- as such */
- if (cls->index) {
- ibex_save(cls->index);
- }
-
- return 0;
-}
-
-/* sync the summary with the ondisk files. */
-static int
-maildir_summary_sync(CamelLocalSummary *cls, gboolean expunge, CamelFolderChangeInfo *changes, CamelException *ex)
-{
- int count, i;
- CamelMessageInfo *info;
- CamelMaildirMessageInfo *mdi;
-#if defined (DOEPOOLV) || defined (DOESTRV)
- CamelFolderSummary *s = (CamelFolderSummary *)cls;
-#endif
- char *name;
- struct stat st;
-
- d(printf("summary_sync(expunge=%s)\n", expunge?"true":"false"));
-
- if (camel_local_summary_check(cls, changes, ex) == -1)
- return -1;
-
- if (cls->index) {
- ibex_save(cls->index);
- }
-
- count = camel_folder_summary_count((CamelFolderSummary *)cls);
- for (i=count-1;i>=0;i--) {
- info = camel_folder_summary_index((CamelFolderSummary *)cls, i);
- mdi = (CamelMaildirMessageInfo *)info;
- if (info && (info->flags & CAMEL_MESSAGE_DELETED) && expunge) {
- name = g_strdup_printf("%s/cur/%s", cls->folder_path, camel_maildir_info_filename(mdi));
- d(printf("deleting %s\n", name));
- if (unlink(name) == 0 || errno==ENOENT) {
-
- /* FIXME: put this in folder_summary::remove()? */
- if (cls->index)
- ibex_unindex(cls->index, (char *)camel_message_info_uid(info));
-
- camel_folder_change_info_remove_uid(changes, camel_message_info_uid(info));
- camel_folder_summary_remove((CamelFolderSummary *)cls, info);
- }
- g_free(name);
- } else if (info && (info->flags & CAMEL_MESSAGE_FOLDER_FLAGGED)) {
- char *newname = camel_maildir_summary_info_to_name(info);
- char *dest;
-
- /* do we care about additional metainfo stored inside the message? */
- /* probably should all go in the filename? */
-
- /* have our flags/ i.e. name changed? */
- if (strcmp(newname, camel_maildir_info_filename(mdi))) {
- name = g_strdup_printf("%s/cur/%s", cls->folder_path, camel_maildir_info_filename(mdi));
- dest = g_strdup_printf("%s/cur/%s", cls->folder_path, newname);
- rename(name, dest);
- if (stat(dest, &st) == -1) {
- /* we'll assume it didn't work, but dont change anything else */
- g_free(newname);
- } else {
- /* TODO: If this is made mt-safe, then this code could be a problem, since
- the estrv is being modified.
- Sigh, this may mean the maildir name has to be cached another way */
-#if defined (DOEPOOLV) || defined (DOESTRV)
-#warning "cannot modify the estrv after its been setup, for mt-safe code"
- CAMEL_SUMMARY_LOCK(s, summary_lock);
- /* need to update the summary hash ref */
- g_hash_table_remove(s->messages_uid, camel_message_info_uid(info));
-#ifdef DOEPOOLV
- info->strings = e_poolv_set(info->strings, CAMEL_MAILDIR_INFO_FILENAME, newname, TRUE);
-#else
- info->strings = e_strv_set_ref_free(info->strings, CAMEL_MAILDIR_INFO_FILENAME, newname);
- info->strings = e_strv_pack(info->strings);
-#endif /* DOEPOOLV */
- g_hash_table_insert(s->messages_uid, (char *)camel_message_info_uid(info), info);
- CAMEL_SUMMARY_UNLOCK(s, summary_lock);
-#else /* defined (DOEPOOLV) || defined (DOESTRV) */
- g_free(mdi->filename);
- mdi->filename = newname;
-#endif
- }
- g_free(name);
- g_free(dest);
- } else {
- g_free(newname);
- }
-
- /* strip FOLDER_MESSAGE_FLAGED, etc */
- info->flags &= 0xffff;
- }
- camel_folder_summary_info_free((CamelFolderSummary *)cls, info);
- }
- return 0;
-}
-
diff --git a/camel/providers/local/camel-maildir-summary.h b/camel/providers/local/camel-maildir-summary.h
deleted file mode 100644
index a42692671c..0000000000
--- a/camel/providers/local/camel-maildir-summary.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Not Zed <notzed@lostzed.mmc.com.au>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef _CAMEL_MAILDIR_SUMMARY_H
-#define _CAMEL_MAILDIR_SUMMARY_H
-
-#include "camel-local-summary.h"
-#include <camel/camel-folder.h>
-#include <camel/camel-exception.h>
-#include <libibex/ibex.h>
-
-#define CAMEL_MAILDIR_SUMMARY(obj) CAMEL_CHECK_CAST (obj, camel_maildir_summary_get_type (), CamelMaildirSummary)
-#define CAMEL_MAILDIR_SUMMARY_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_maildir_summary_get_type (), CamelMaildirSummaryClass)
-#define CAMEL_IS_MAILDIR_SUMMARY(obj) CAMEL_CHECK_TYPE (obj, camel_maildir_summary_get_type ())
-
-typedef struct _CamelMaildirSummary CamelMaildirSummary;
-typedef struct _CamelMaildirSummaryClass CamelMaildirSummaryClass;
-
-typedef struct _CamelMaildirMessageContentInfo {
- CamelMessageContentInfo info;
-} CamelMaildirMessageContentInfo;
-
-#if defined (DOEPOOLV) || defined (DOESTRV)
-enum {
- CAMEL_MAILDIR_INFO_FILENAME = CAMEL_MESSAGE_INFO_LAST,
- CAMEL_MAILDIR_INFO_LAST,
-};
-#endif
-
-typedef struct _CamelMaildirMessageInfo {
- CamelMessageInfo info;
-
-#if !defined (DOEPOOLV) && !defined (DOESTRV)
- char *filename; /* maildir has this annoying status shit on the end of the filename, use this to get the real message id */
-#endif
-} CamelMaildirMessageInfo;
-
-struct _CamelMaildirSummary {
- CamelLocalSummary parent;
- struct _CamelMaildirSummaryPrivate *priv;
-};
-
-struct _CamelMaildirSummaryClass {
- CamelLocalSummaryClass parent_class;
-
- /* virtual methods */
-
- /* signals */
-};
-
-CamelType camel_maildir_summary_get_type (void);
-CamelMaildirSummary *camel_maildir_summary_new (const char *filename, const char *maildirdir, ibex *index);
-
-/* convert some info->flags to/from the messageinfo */
-char *camel_maildir_summary_info_to_name(const CamelMessageInfo *info);
-int camel_maildir_summary_name_to_info(CamelMessageInfo *info, const char *name);
-
-#if defined (DOEPOOLV) || defined (DOESTRV)
-#define camel_maildir_info_filename(x) camel_message_info_string((const CamelMessageInfo *)(x), CAMEL_MAILDIR_INFO_FILENAME)
-#define camel_maildir_info_set_filename(x, s) camel_message_info_set_string((CamelMessageInfo *)(x), CAMEL_MAILDIR_INFO_FILENAME, s)
-#else
-#define camel_maildir_info_filename(x) (((CamelMaildirMessageInfo *)x)->filename)
-#define camel_maildir_info_set_filename(x, s) (g_free(((CamelMaildirMessageInfo *)x)->filename),((CamelMaildirMessageInfo *)x)->filename = s)
-#endif
-
-#endif /* ! _CAMEL_MAILDIR_SUMMARY_H */
-
diff --git a/camel/providers/local/camel-mbox-folder.c b/camel/providers/local/camel-mbox-folder.c
deleted file mode 100644
index 9db90fb40c..0000000000
--- a/camel/providers/local/camel-mbox-folder.c
+++ /dev/null
@@ -1,436 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; fill-column: 160 -*-
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright (C) 1999, 2000 Helix Code Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <dirent.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <fcntl.h>
-
-#include "camel-mbox-folder.h"
-#include "camel-mbox-store.h"
-#include "string-utils.h"
-#include "camel-stream-fs.h"
-#include "camel-mbox-summary.h"
-#include "camel-data-wrapper.h"
-#include "camel-mime-message.h"
-#include "camel-stream-filter.h"
-#include "camel-mime-filter-from.h"
-#include "camel-exception.h"
-
-#define d(x) /*(printf("%s(%d): ", __FILE__, __LINE__),(x))*/
-
-static CamelLocalFolderClass *parent_class = NULL;
-
-/* Returns the class for a CamelMboxFolder */
-#define CMBOXF_CLASS(so) CAMEL_MBOX_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-#define CF_CLASS(so) CAMEL_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-#define CMBOXS_CLASS(so) CAMEL_STORE_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-static int mbox_lock(CamelLocalFolder *lf, CamelLockType type, CamelException *ex);
-static void mbox_unlock(CamelLocalFolder *lf);
-
-static void mbox_set_message_user_flag(CamelFolder *folder, const char *uid, const char *name, gboolean value);
-static void mbox_set_message_user_tag(CamelFolder *folder, const char *uid, const char *name, const char *value);
-
-static void mbox_append_message(CamelFolder *folder, CamelMimeMessage * message, const CamelMessageInfo * info, CamelException *ex);
-static CamelMimeMessage *mbox_get_message(CamelFolder *folder, const gchar * uid, CamelException *ex);
-static CamelLocalSummary *mbox_create_summary(const char *path, const char *folder, ibex *index);
-
-static void mbox_finalise(CamelObject * object);
-
-static void
-camel_mbox_folder_class_init(CamelMboxFolderClass * camel_mbox_folder_class)
-{
- CamelFolderClass *camel_folder_class = CAMEL_FOLDER_CLASS(camel_mbox_folder_class);
- CamelLocalFolderClass *lclass = (CamelLocalFolderClass *)camel_mbox_folder_class;
-
- parent_class = (CamelLocalFolderClass *)camel_type_get_global_classfuncs(camel_local_folder_get_type());
-
- /* virtual method definition */
-
- /* virtual method overload */
- camel_folder_class->append_message = mbox_append_message;
- camel_folder_class->get_message = mbox_get_message;
-
- camel_folder_class->set_message_user_flag = mbox_set_message_user_flag;
- camel_folder_class->set_message_user_tag = mbox_set_message_user_tag;
-
- lclass->create_summary = mbox_create_summary;
- lclass->lock = mbox_lock;
- lclass->unlock = mbox_unlock;
-}
-
-static void
-mbox_init(gpointer object, gpointer klass)
-{
- /*CamelFolder *folder = object;*/
- CamelMboxFolder *mbox_folder = object;
-
- mbox_folder->lockfd = -1;
-}
-
-static void
-mbox_finalise(CamelObject * object)
-{
- CamelMboxFolder *mbox_folder = (CamelMboxFolder *)object;
-
- g_assert(mbox_folder->lockfd == -1);
-}
-
-CamelType camel_mbox_folder_get_type(void)
-{
- static CamelType camel_mbox_folder_type = CAMEL_INVALID_TYPE;
-
- if (camel_mbox_folder_type == CAMEL_INVALID_TYPE) {
- camel_mbox_folder_type = camel_type_register(CAMEL_LOCAL_FOLDER_TYPE, "CamelMboxFolder",
- sizeof(CamelMboxFolder),
- sizeof(CamelMboxFolderClass),
- (CamelObjectClassInitFunc) camel_mbox_folder_class_init,
- NULL,
- (CamelObjectInitFunc) mbox_init,
- (CamelObjectFinalizeFunc) mbox_finalise);
- }
-
- return camel_mbox_folder_type;
-}
-
-CamelFolder *
-camel_mbox_folder_new(CamelStore *parent_store, const char *full_name, guint32 flags, CamelException *ex)
-{
- CamelFolder *folder;
-
- d(printf("Creating mbox folder: %s in %s\n", full_name, camel_local_store_get_toplevel_dir((CamelLocalStore *)parent_store)));
-
- folder = (CamelFolder *)camel_object_new(CAMEL_MBOX_FOLDER_TYPE);
- folder = (CamelFolder *)camel_local_folder_construct((CamelLocalFolder *)folder,
- parent_store, full_name, flags, ex);
-
- return folder;
-}
-
-static CamelLocalSummary *mbox_create_summary(const char *path, const char *folder, ibex *index)
-{
- return (CamelLocalSummary *)camel_mbox_summary_new(path, folder, index);
-}
-
-static int mbox_lock(CamelLocalFolder *lf, CamelLockType type, CamelException *ex)
-{
- CamelMboxFolder *mf = (CamelMboxFolder *)lf;
-
- /* make sure we have matching unlocks for locks, camel-local-folder class should enforce this */
- g_assert(mf->lockfd == -1);
-
- mf->lockfd = open(lf->folder_path, O_RDWR, 0);
- if (mf->lockfd == -1) {
- camel_exception_setv(ex, 1, _("Cannot create folder lock on %s: %s"), lf->folder_path, strerror(errno));
- return -1;
- }
-
- return camel_lock_folder(lf->folder_path, mf->lockfd, type, ex);
-}
-
-static void mbox_unlock(CamelLocalFolder *lf)
-{
- CamelMboxFolder *mf = (CamelMboxFolder *)lf;
-
- g_assert(mf->lockfd != -1);
- camel_unlock_folder(lf->folder_path, mf->lockfd);
- close(mf->lockfd);
- mf->lockfd = -1;
-}
-
-static void
-mbox_append_message(CamelFolder *folder, CamelMimeMessage * message, const CamelMessageInfo * info, CamelException *ex)
-{
- CamelLocalFolder *lf = (CamelLocalFolder *)folder;
- CamelStream *output_stream = NULL, *filter_stream = NULL;
- CamelMimeFilter *filter_from = NULL;
- CamelMboxSummary *mbs = (CamelMboxSummary *)folder->summary;
- CamelMessageInfo *mi;
- char *fromline = NULL;
- int fd;
- struct stat st;
-#if 0
- char *xev;
-#endif
- /* If we can't lock, dont do anything */
- if (camel_local_folder_lock(lf, CAMEL_LOCK_WRITE, ex) == -1)
- return;
-
- d(printf("Appending message\n"));
-
- /* first, check the summary is correct (updates folder_size too) */
- camel_local_summary_check((CamelLocalSummary *)folder->summary, lf->changes, ex);
- if (camel_exception_is_set(ex))
- goto fail;
-
- /* add it to the summary/assign the uid, etc */
- mi = camel_local_summary_add((CamelLocalSummary *)folder->summary, message, info, lf->changes, ex);
- if (camel_exception_is_set(ex))
- goto fail;
-
- d(printf("Appending message: uid is %s\n", camel_message_info_uid(mi)));
-
- output_stream = camel_stream_fs_new_with_name(lf->folder_path, O_WRONLY|O_APPEND, 0600);
- if (output_stream == NULL) {
- camel_exception_setv(ex, 1, _("Cannot open mailbox: %s: %s\n"), lf->folder_path, strerror(errno));
- goto fail;
- }
-
- /* and we need to set the frompos/XEV explicitly */
- ((CamelMboxMessageInfo *)mi)->frompos = mbs->folder_size?mbs->folder_size+1:0;
-#if 0
- xev = camel_local_summary_encode_x_evolution((CamelLocalSummary *)folder->summary, mi);
- if (xev) {
- /* the x-ev header should match the 'current' flags, no problem, so store as much */
- camel_medium_set_header((CamelMedium *)message, "X-Evolution", xev);
- mi->flags &= ~ CAMEL_MESSAGE_FOLDER_NOXEV|CAMEL_MESSAGE_FOLDER_FLAGGED;
- g_free(xev);
- }
-#endif
-
- /* we must write this to the non-filtered stream ... prepend a \n if not at the start of the file */
- fromline = camel_mbox_summary_build_from(((CamelMimePart *)message)->headers);
- if (camel_stream_printf(output_stream, mbs->folder_size==0?"%s":"\n%s", fromline) == -1)
- goto fail_write;
-
- /* and write the content to the filtering stream, that translated '\nFrom' into '\n>From' */
- filter_stream = (CamelStream *) camel_stream_filter_new_with_stream(output_stream);
- filter_from = (CamelMimeFilter *) camel_mime_filter_from_new();
- camel_stream_filter_add((CamelStreamFilter *) filter_stream, filter_from);
- if (camel_data_wrapper_write_to_stream((CamelDataWrapper *)message, filter_stream) == -1)
- goto fail_write;
-
- if (camel_stream_close(filter_stream) == -1)
- goto fail_write;
-
- /* unlock as soon as we can */
- camel_local_folder_unlock(lf);
-
- /* filter stream ref's the output stream itself, so we need to unref it too */
- camel_object_unref((CamelObject *)filter_from);
- camel_object_unref((CamelObject *)filter_stream);
- camel_object_unref((CamelObject *)output_stream);
- g_free(fromline);
-
- /* now we 'fudge' the summary to tell it its uptodate, because its idea of uptodate has just changed */
- /* the stat really shouldn't fail, we just wrote to it */
- if (stat(lf->folder_path, &st) == 0) {
- mbs->folder_size = st.st_size;
- ((CamelFolderSummary *)mbs)->time = st.st_mtime;
- }
-
- if (camel_folder_change_info_changed(lf->changes)) {
- camel_object_trigger_event((CamelObject *)folder, "folder_changed", lf->changes);
- camel_folder_change_info_clear(lf->changes);
- }
-
- return;
-
-fail_write:
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Cannot append message to mbox file: %s: %s"), lf->folder_path, strerror(errno));
-
- if (filter_stream)
- camel_object_unref(CAMEL_OBJECT(filter_stream));
-
- if (output_stream)
- camel_object_unref(CAMEL_OBJECT(output_stream));
-
- if (filter_from)
- camel_object_unref(CAMEL_OBJECT(filter_from));
-
- g_free(fromline);
-
- /* reset the file to original size */
- fd = open(lf->folder_path, O_WRONLY, 0600);
-
- if (fd != -1) {
- ftruncate(fd, mbs->folder_size);
- close(fd);
- }
-
- /* and tell the summary its uptodate */
- if (stat(lf->folder_path, &st) == 0) {
- mbs->folder_size = st.st_size;
- ((CamelFolderSummary *)mbs)->time = st.st_mtime;
- }
-
-fail:
- /* make sure we unlock the folder - before we start triggering events into appland */
- camel_local_folder_unlock(lf);
-
- /* cascade the changes through, anyway, if there are any outstanding */
- if (camel_folder_change_info_changed(lf->changes)) {
- camel_object_trigger_event((CamelObject *)folder, "folder_changed", lf->changes);
- camel_folder_change_info_clear(lf->changes);
- }
-}
-
-static CamelMimeMessage *
-mbox_get_message(CamelFolder *folder, const gchar * uid, CamelException *ex)
-{
- CamelLocalFolder *lf = (CamelLocalFolder *)folder;
- CamelMimeMessage *message;
- CamelMboxMessageInfo *info;
- CamelMimeParser *parser;
- int fd;
- int retried = FALSE;
-
- d(printf("Getting message %s\n", uid));
-
- /* lock the folder first, burn if we can't */
- if (camel_local_folder_lock(lf, CAMEL_LOCK_READ, ex) == -1)
- return NULL;
-
-retry:
- /* get the message summary info */
- info = (CamelMboxMessageInfo *) camel_folder_summary_uid(folder->summary, uid);
-
- if (info == NULL) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_FOLDER_INVALID_UID,
- _("Cannot get message: %s\n %s"), uid, _("No such message"));
- camel_local_folder_unlock(lf);
- return NULL;
- }
-
- /* no frompos, its an error in the library (and we can't do anything with it */
- g_assert(info->frompos != -1);
-
- /* we use an fd instead of a normal stream here - the reason is subtle, camel_mime_part will cache
- the whole message in memory if the stream is non-seekable (which it is when built from a parser
- with no stream). This means we dont have to lock the mbox for the life of the message, but only
- while it is being created. */
-
- fd = open(lf->folder_path, O_RDONLY);
- if (fd == -1) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_FOLDER_INVALID_UID,
- _("Cannot get message: %s from folder %s\n %s"), uid, lf->folder_path,
- strerror(errno));
- camel_local_folder_unlock(lf);
- camel_folder_summary_info_free(folder->summary, (CamelMessageInfo *)info);
- return NULL;
- }
-
- /* we use a parser to verify the message is correct, and in the correct position */
- parser = camel_mime_parser_new();
- camel_mime_parser_init_with_fd(parser, fd);
- camel_mime_parser_scan_from(parser, TRUE);
-
- camel_mime_parser_seek(parser, info->frompos, SEEK_SET);
- if (camel_mime_parser_step(parser, NULL, NULL) != HSCAN_FROM
- || camel_mime_parser_tell_start_from(parser) != info->frompos) {
-
- g_warning("Summary doesn't match the folder contents! eek!\n"
- " expecting offset %ld got %ld, state = %d", (long int)info->frompos,
- (long int)camel_mime_parser_tell_start_from(parser),
- camel_mime_parser_state(parser));
-
- camel_object_unref((CamelObject *)parser);
- camel_folder_summary_info_free(folder->summary, (CamelMessageInfo *)info);
-
- if (!retried) {
- retried = TRUE;
- camel_local_summary_check((CamelLocalSummary *)folder->summary, lf->changes, ex);
- if (!camel_exception_is_set(ex))
- goto retry;
- }
-
- camel_exception_setv(ex, CAMEL_EXCEPTION_FOLDER_INVALID_UID,
- _("Cannot get message: %s from folder %s\n %s"), uid, lf->folder_path,
- _("The folder appears to be irrecoverably corrupted."));
-
- camel_local_folder_unlock(lf);
- return NULL;
- }
-
- camel_folder_summary_info_free(folder->summary, (CamelMessageInfo *)info);
-
- message = camel_mime_message_new();
- if (camel_mime_part_construct_from_parser((CamelMimePart *)message, parser) == -1) {
- g_warning("Construction failed");
- camel_exception_setv(ex, CAMEL_EXCEPTION_FOLDER_INVALID_UID,
- _("Cannot get message: %s from folder %s\n %s"), uid, lf->folder_path,
- _("Message construction failed: Corrupt mailbox?"));
- camel_object_unref((CamelObject *)parser);
- camel_object_unref((CamelObject *)message);
- camel_local_folder_unlock(lf);
- return NULL;
- }
-
- /* and unlock now we're finished with it */
- camel_local_folder_unlock(lf);
-
- camel_object_unref((CamelObject *)parser);
-
- /* use the opportunity to notify of changes (particularly if we had a rebuild) */
- if (camel_folder_change_info_changed(lf->changes)) {
- camel_object_trigger_event((CamelObject *)folder, "folder_changed", lf->changes);
- camel_folder_change_info_clear(lf->changes);
- }
-
- return message;
-}
-
-static void
-mbox_set_message_user_flag(CamelFolder *folder, const char *uid, const char *name, gboolean value)
-{
- CamelMessageInfo *info;
-
- g_return_if_fail(folder->summary != NULL);
-
- info = camel_folder_summary_uid(folder->summary, uid);
- g_return_if_fail(info != NULL);
-
- if (camel_flag_set(&info->user_flags, name, value)) {
- info->flags |= CAMEL_MESSAGE_FOLDER_FLAGGED|CAMEL_MESSAGE_FOLDER_XEVCHANGE;
- camel_folder_summary_touch(folder->summary);
- camel_object_trigger_event(CAMEL_OBJECT(folder), "message_changed", (char *) uid);
- }
- camel_folder_summary_info_free(folder->summary, info);
-}
-
-static void
-mbox_set_message_user_tag(CamelFolder *folder, const char *uid, const char *name, const char *value)
-{
- CamelMessageInfo *info;
-
- g_return_if_fail(folder->summary != NULL);
-
- info = camel_folder_summary_uid(folder->summary, uid);
- g_return_if_fail(info != NULL);
-
- if (camel_tag_set(&info->user_tags, name, value)) {
- info->flags |= CAMEL_MESSAGE_FOLDER_FLAGGED|CAMEL_MESSAGE_FOLDER_XEVCHANGE;
- camel_folder_summary_touch(folder->summary);
- camel_object_trigger_event(CAMEL_OBJECT(folder), "message_changed", (char *) uid);
- }
- camel_folder_summary_info_free(folder->summary, info);
-}
diff --git a/camel/providers/local/camel-mbox-folder.h b/camel/providers/local/camel-mbox-folder.h
deleted file mode 100644
index 688135ff76..0000000000
--- a/camel/providers/local/camel-mbox-folder.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright (C) 1999 Helix Code .
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_MBOX_FOLDER_H
-#define CAMEL_MBOX_FOLDER_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include "camel-local-folder.h"
-#include "camel-mbox-summary.h"
-
-#define CAMEL_MBOX_FOLDER_TYPE (camel_mbox_folder_get_type ())
-#define CAMEL_MBOX_FOLDER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MBOX_FOLDER_TYPE, CamelMboxFolder))
-#define CAMEL_MBOX_FOLDER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MBOX_FOLDER_TYPE, CamelMboxFolderClass))
-#define CAMEL_IS_MBOX_FOLDER(o) (CAMEL_CHECK_TYPE((o), CAMEL_MBOX_FOLDER_TYPE))
-
-typedef struct {
- CamelLocalFolder parent_object;
-
- int lockfd; /* for when we have a lock on the folder */
-} CamelMboxFolder;
-
-typedef struct {
- CamelLocalFolderClass parent_class;
-
- /* Virtual methods */
-
-} CamelMboxFolderClass;
-
-/* public methods */
-/* flags are taken from CAMEL_STORE_FOLDER_* flags */
-CamelFolder *camel_mbox_folder_new(CamelStore *parent_store, const char *full_name, guint32 flags, CamelException *ex);
-
-/* Standard Camel function */
-CamelType camel_mbox_folder_get_type(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_MBOX_FOLDER_H */
diff --git a/camel/providers/local/camel-mbox-store.c b/camel/providers/local/camel-mbox-store.c
deleted file mode 100644
index 712c7fde37..0000000000
--- a/camel/providers/local/camel-mbox-store.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <sys/stat.h>
-#include <errno.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "camel-mbox-store.h"
-#include "camel-mbox-folder.h"
-#include "camel-exception.h"
-#include "camel-url.h"
-
-static CamelLocalStoreClass *parent_class = NULL;
-
-/* Returns the class for a CamelMboxStore */
-#define CMBOXS_CLASS(so) CAMEL_MBOX_STORE_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-#define CF_CLASS(so) CAMEL_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-#define CMBOXF_CLASS(so) CAMEL_MBOX_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-static CamelFolder *get_folder(CamelStore *store, const char *folder_name, guint32 flags, CamelException *ex);
-static void delete_folder(CamelStore *store, const char *folder_name, CamelException *ex);
-
-static void
-camel_mbox_store_class_init (CamelMboxStoreClass *camel_mbox_store_class)
-{
- CamelStoreClass *camel_store_class = CAMEL_STORE_CLASS (camel_mbox_store_class);
-
- parent_class = (CamelLocalStoreClass *)camel_type_get_global_classfuncs(camel_local_store_get_type());
-
- /* virtual method overload */
- camel_store_class->get_folder = get_folder;
- camel_store_class->delete_folder = delete_folder;
-}
-
-CamelType
-camel_mbox_store_get_type (void)
-{
- static CamelType camel_mbox_store_type = CAMEL_INVALID_TYPE;
-
- if (camel_mbox_store_type == CAMEL_INVALID_TYPE) {
- camel_mbox_store_type = camel_type_register (CAMEL_LOCAL_STORE_TYPE, "CamelMboxStore",
- sizeof (CamelMboxStore),
- sizeof (CamelMboxStoreClass),
- (CamelObjectClassInitFunc) camel_mbox_store_class_init,
- NULL,
- NULL,
- NULL);
- }
-
- return camel_mbox_store_type;
-}
-
-static CamelFolder *
-get_folder(CamelStore *store, const char *folder_name, guint32 flags, CamelException *ex)
-{
- char *name;
- struct stat st;
-
- (void) ((CamelStoreClass *)parent_class)->get_folder(store, folder_name, flags, ex);
- if (camel_exception_is_set(ex))
- return NULL;
-
- name = g_strdup_printf("%s%s", CAMEL_SERVICE(store)->url->path, folder_name);
-
- if (stat(name, &st) == -1) {
- int fd;
-
- if (errno != ENOENT) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not open file `%s':\n%s"),
- name, g_strerror(errno));
- g_free(name);
- return NULL;
- }
- if ((flags & CAMEL_STORE_FOLDER_CREATE) == 0) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_STORE_NO_FOLDER,
- _("Folder `%s' does not exist."),
- folder_name);
- g_free(name);
- return NULL;
- }
-
- fd = open(name, O_WRONLY | O_CREAT | O_APPEND, 0600);
- if (fd == -1) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not create file `%s':\n%s"),
- name, g_strerror(errno));
- g_free(name);
- return NULL;
- }
- g_free(name);
- close(fd);
- } else if (!S_ISREG(st.st_mode)) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_STORE_NO_FOLDER,
- _("`%s' is not a regular file."),
- name);
- g_free(name);
- return NULL;
- } else
- g_free(name);
-
- return camel_mbox_folder_new(store, folder_name, flags, ex);
-}
-
-static void
-delete_folder (CamelStore *store, const char *folder_name, CamelException *ex)
-{
- char *name;
- struct stat st;
-
- name = g_strdup_printf ("%s%s", CAMEL_SERVICE (store)->url->path, folder_name);
- if (stat (name, &st) == -1) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not delete folder `%s':\n%s"),
- folder_name, g_strerror (errno));
- g_free (name);
- return;
- }
-
- if (!S_ISREG (st.st_mode)) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_STORE_NO_FOLDER,
- _("`%s' is not a regular file."), name);
- g_free (name);
- return;
- }
-
- if (st.st_size != 0) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_FOLDER_NON_EMPTY,
- _("Folder `%s' is not empty. Not deleted."),
- folder_name);
- g_free (name);
- return;
- }
-
- if (unlink(name) == -1 && errno != ENOENT) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not delete folder `%s':\n%s"),
- name, g_strerror (errno));
- g_free(name);
- return;
- }
-
- g_free(name);
-
- /* and remove metadata */
- ((CamelStoreClass *)parent_class)->delete_folder(store, folder_name, ex);
-}
diff --git a/camel/providers/local/camel-mbox-store.h b/camel/providers/local/camel-mbox-store.h
deleted file mode 100644
index bc8d5149f5..0000000000
--- a/camel/providers/local/camel-mbox-store.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_MBOX_STORE_H
-#define CAMEL_MBOX_STORE_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include "camel-local-store.h"
-
-#define CAMEL_MBOX_STORE_TYPE (camel_mbox_store_get_type ())
-#define CAMEL_MBOX_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MBOX_STORE_TYPE, CamelMboxStore))
-#define CAMEL_MBOX_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MBOX_STORE_TYPE, CamelMboxStoreClass))
-#define CAMEL_IS_MBOX_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_MBOX_STORE_TYPE))
-
-typedef struct {
- CamelLocalStore parent_object;
-
-} CamelMboxStore;
-
-typedef struct {
- CamelLocalStoreClass parent_class;
-
-} CamelMboxStoreClass;
-
-/* public methods */
-
-/* Standard Camel function */
-CamelType camel_mbox_store_get_type (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_MBOX_STORE_H */
-
-
diff --git a/camel/providers/local/camel-mbox-summary.c b/camel/providers/local/camel-mbox-summary.c
deleted file mode 100644
index 3f0dd100dd..0000000000
--- a/camel/providers/local/camel-mbox-summary.c
+++ /dev/null
@@ -1,889 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; fill-column: 160 -*-
- *
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "camel-mbox-summary.h"
-#include "camel/camel-mime-message.h"
-#include "camel/camel-operation.h"
-
-#include <sys/stat.h>
-#include <sys/uio.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "camel-mbox-summary.h"
-#include "camel/camel-file-utils.h"
-#include "camel/camel-mime-message.h"
-#include "camel/camel-operation.h"
-
-#define io(x)
-#define d(x) /*(printf("%s(%d): ", __FILE__, __LINE__),(x))*/
-
-#define CAMEL_MBOX_SUMMARY_VERSION (0x1000)
-
-struct _CamelMboxSummaryPrivate {
-};
-
-#define _PRIVATE(o) (((CamelMboxSummary *)(o))->priv)
-
-static int summary_header_load (CamelFolderSummary *, FILE *);
-static int summary_header_save (CamelFolderSummary *, FILE *);
-
-static CamelMessageInfo * message_info_new (CamelFolderSummary *, struct _header_raw *);
-static CamelMessageInfo * message_info_new_from_parser (CamelFolderSummary *, CamelMimeParser *);
-static CamelMessageInfo * message_info_load (CamelFolderSummary *, FILE *);
-static int message_info_save (CamelFolderSummary *, FILE *, CamelMessageInfo *);
-/*static void message_info_free (CamelFolderSummary *, CamelMessageInfo *);*/
-
-static int mbox_summary_check(CamelLocalSummary *cls, CamelFolderChangeInfo *changeinfo, CamelException *ex);
-static int mbox_summary_sync(CamelLocalSummary *cls, gboolean expunge, CamelFolderChangeInfo *changeinfo, CamelException *ex);
-
-static void camel_mbox_summary_class_init (CamelMboxSummaryClass *klass);
-static void camel_mbox_summary_init (CamelMboxSummary *obj);
-static void camel_mbox_summary_finalise (CamelObject *obj);
-
-static CamelLocalSummaryClass *camel_mbox_summary_parent;
-
-CamelType
-camel_mbox_summary_get_type(void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_local_summary_get_type(), "CamelMboxSummary",
- sizeof (CamelMboxSummary),
- sizeof (CamelMboxSummaryClass),
- (CamelObjectClassInitFunc) camel_mbox_summary_class_init,
- NULL,
- (CamelObjectInitFunc) camel_mbox_summary_init,
- (CamelObjectFinalizeFunc) camel_mbox_summary_finalise);
- }
-
- return type;
-}
-
-static void
-camel_mbox_summary_class_init(CamelMboxSummaryClass *klass)
-{
- CamelFolderSummaryClass *sklass = (CamelFolderSummaryClass *)klass;
- CamelLocalSummaryClass *lklass = (CamelLocalSummaryClass *)klass;
-
- camel_mbox_summary_parent = (CamelLocalSummaryClass *)camel_type_get_global_classfuncs(camel_local_summary_get_type());
-
- sklass->summary_header_load = summary_header_load;
- sklass->summary_header_save = summary_header_save;
-
- sklass->message_info_new = message_info_new;
- sklass->message_info_new_from_parser = message_info_new_from_parser;
- sklass->message_info_load = message_info_load;
- sklass->message_info_save = message_info_save;
- /*sklass->message_info_free = message_info_free;*/
-
- lklass->check = mbox_summary_check;
- lklass->sync = mbox_summary_sync;
-}
-
-static void
-camel_mbox_summary_init(CamelMboxSummary *obj)
-{
- struct _CamelMboxSummaryPrivate *p;
- struct _CamelFolderSummary *s = (CamelFolderSummary *)obj;
-
- p = _PRIVATE(obj) = g_malloc0(sizeof(*p));
-
- /* subclasses need to set the right instance data sizes */
- s->message_info_size = sizeof(CamelMboxMessageInfo);
- s->content_info_size = sizeof(CamelMboxMessageContentInfo);
-
- /* and a unique file version */
- s->version += CAMEL_MBOX_SUMMARY_VERSION;
-}
-
-static void
-camel_mbox_summary_finalise(CamelObject *obj)
-{
- /*CamelMboxSummary *mbs = CAMEL_MBOX_SUMMARY(obj);*/
-}
-
-/**
- * camel_mbox_summary_new:
- *
- * Create a new CamelMboxSummary object.
- *
- * Return value: A new CamelMboxSummary widget.
- **/
-CamelMboxSummary *
-camel_mbox_summary_new(const char *filename, const char *mbox_name, ibex *index)
-{
- CamelMboxSummary *new = (CamelMboxSummary *)camel_object_new(camel_mbox_summary_get_type());
-
- camel_local_summary_construct((CamelLocalSummary *)new, filename, mbox_name, index);
- return new;
-}
-
-static int
-summary_header_load(CamelFolderSummary *s, FILE *in)
-{
- CamelMboxSummary *mbs = CAMEL_MBOX_SUMMARY(s);
-
- if (((CamelFolderSummaryClass *)camel_mbox_summary_parent)->summary_header_load(s, in) == -1)
- return -1;
-
- return camel_file_util_decode_uint32(in, &mbs->folder_size);
-}
-
-static int
-summary_header_save(CamelFolderSummary *s, FILE *out)
-{
- CamelMboxSummary *mbs = CAMEL_MBOX_SUMMARY(s);
-
- if (((CamelFolderSummaryClass *)camel_mbox_summary_parent)->summary_header_save(s, out) == -1)
- return -1;
-
- return camel_file_util_encode_uint32(out, mbs->folder_size);
-}
-
-static CamelMessageInfo *
-message_info_new(CamelFolderSummary *s, struct _header_raw *h)
-{
- CamelMessageInfo *mi;
-
- mi = ((CamelFolderSummaryClass *)camel_mbox_summary_parent)->message_info_new(s, h);
- if (mi) {
- CamelMboxMessageInfo *mbi = (CamelMboxMessageInfo *)mi;
-
- mbi->frompos = -1;
- }
-
- return mi;
-}
-
-static CamelMessageInfo *
-message_info_new_from_parser(CamelFolderSummary *s, CamelMimeParser *mp)
-{
- CamelMessageInfo *mi;
-
- mi = ((CamelFolderSummaryClass *)camel_mbox_summary_parent)->message_info_new_from_parser(s, mp);
- if (mi) {
- CamelMboxMessageInfo *mbi = (CamelMboxMessageInfo *)mi;
-
- mbi->frompos = camel_mime_parser_tell_start_from(mp);
- }
-
- return mi;
-}
-
-static CamelMessageInfo *
-message_info_load(CamelFolderSummary *s, FILE *in)
-{
- CamelMessageInfo *mi;
-
- io(printf("loading mbox message info\n"));
-
- mi = ((CamelFolderSummaryClass *)camel_mbox_summary_parent)->message_info_load(s, in);
- if (mi) {
- CamelMboxMessageInfo *mbi = (CamelMboxMessageInfo *)mi;
-
- if (camel_file_util_decode_off_t(in, &mbi->frompos) == -1)
- goto error;
- }
-
- return mi;
-error:
- camel_folder_summary_info_free(s, mi);
- return NULL;
-}
-
-static int
-message_info_save(CamelFolderSummary *s, FILE *out, CamelMessageInfo *mi)
-{
- CamelMboxMessageInfo *mbi = (CamelMboxMessageInfo *)mi;
-
- io(printf("saving mbox message info\n"));
-
- if (((CamelFolderSummaryClass *)camel_mbox_summary_parent)->message_info_save(s, out, mi) == -1
- || camel_file_util_encode_off_t(out, mbi->frompos) == -1)
- return -1;
-
- return 0;
-}
-
-static int
-summary_rebuild(CamelMboxSummary *mbs, off_t offset, CamelException *ex)
-{
- CamelLocalSummary *cls = (CamelLocalSummary *)mbs;
- CamelFolderSummary *s = (CamelFolderSummary *)mbs;
- CamelMimeParser *mp;
- int fd;
- int ok = 0;
- struct stat st;
- off_t size = 0;
-
- /* FIXME: If there is a failure, it shouldn't clear the summary and restart,
- it should try and merge the summary info's. This is a bit tricky. */
-
- camel_operation_start(NULL, _("Summarising folder"));
-
- fd = open(cls->folder_path, O_RDONLY);
- if (fd == -1) {
- printf("%s failed to open: %s", cls->folder_path, strerror(errno));
- camel_exception_setv(ex, 1, _("Could not open folder: %s: summarising from position %ld: %s"),
- cls->folder_path, offset, strerror(errno));
- camel_operation_end(NULL);
- return -1;
- }
-
- if (fstat(fd, &st) == 0)
- size = st.st_size;
-
- mp = camel_mime_parser_new();
- camel_mime_parser_init_with_fd(mp, fd);
- camel_mime_parser_scan_from(mp, TRUE);
- camel_mime_parser_seek(mp, offset, SEEK_SET);
-
- if (offset > 0) {
- if (camel_mime_parser_step(mp, NULL, NULL) == HSCAN_FROM) {
- if (camel_mime_parser_tell_start_from(mp) != offset) {
- g_warning("The next message didn't start where I expected, building summary from start");
- camel_mime_parser_drop_step(mp);
- offset = 0;
- camel_mime_parser_seek(mp, offset, SEEK_SET);
- camel_folder_summary_clear(s);
- } else {
- camel_mime_parser_unstep(mp);
- }
- } else {
- d(printf("mime parser state ran out? state is %d\n", camel_mime_parser_state(mp)));
- camel_object_unref(CAMEL_OBJECT(mp));
- /* end of file - no content? no error either */
- camel_operation_end(NULL);
- return 0;
- }
- }
-
- while (camel_mime_parser_step(mp, NULL, NULL) == HSCAN_FROM) {
- CamelMessageInfo *info;
- off_t pc = camel_mime_parser_tell_start_from (mp) + 1;
-
- camel_operation_progress (NULL, (int) (((float) pc / size) * 100));
-
- info = camel_folder_summary_add_from_parser(s, mp);
- if (info == NULL) {
- camel_exception_setv(ex, 1, _("Fatal mail parser error near position %ld in folder %s"),
- camel_mime_parser_tell(mp), cls->folder_path);
- ok = -1;
- break;
- }
-
- g_assert(camel_mime_parser_step(mp, NULL, NULL) == HSCAN_FROM_END);
- }
-
- camel_object_unref(CAMEL_OBJECT (mp));
-
- /* update the file size/mtime in the summary */
- if (ok != -1) {
- if (stat(cls->folder_path, &st) == 0) {
- camel_folder_summary_touch(s);
- mbs->folder_size = st.st_size;
- s->time = st.st_mtime;
- }
- }
-
- camel_operation_end(NULL);
-
- return ok;
-}
-
-/* like summary_rebuild, but also do changeinfo stuff (if supplied) */
-static int
-summary_update(CamelLocalSummary *cls, off_t offset, CamelFolderChangeInfo *changeinfo, CamelException *ex)
-{
- int ret, i, count;
- CamelFolderSummary *s = (CamelFolderSummary *)cls;
- CamelMboxSummary *mbs = (CamelMboxSummary *)cls;
-
- d(printf("Calling summary update, from pos %d\n", (int)offset));
-
- if (changeinfo) {
- /* we use the diff function of the change_info to build the update list. */
- for (i = 0; i < camel_folder_summary_count(s); i++) {
- CamelMessageInfo *mi = camel_folder_summary_index(s, i);
-
- camel_folder_change_info_add_source(changeinfo, camel_message_info_uid(mi));
- camel_folder_summary_info_free(s, mi);
- }
- }
-
- /* do the actual work */
- cls->index_force = FALSE;
- ret = summary_rebuild(mbs, offset, ex);
-
- if (changeinfo) {
- count = camel_folder_summary_count(s);
- for (i = 0; i < count; i++) {
- CamelMessageInfo *mi = camel_folder_summary_index(s, i);
- camel_folder_change_info_add_update(changeinfo, camel_message_info_uid(mi));
- camel_folder_summary_info_free(s, mi);
- }
- camel_folder_change_info_build_diff(changeinfo);
- }
-
- return ret;
-}
-
-static int
-mbox_summary_check(CamelLocalSummary *cls, CamelFolderChangeInfo *changes, CamelException *ex)
-{
- CamelMboxSummary *mbs = (CamelMboxSummary *)cls;
- CamelFolderSummary *s = (CamelFolderSummary *)cls;
- struct stat st;
- int ret = 0;
-
- d(printf("Checking summary\n"));
-
- /* check if the summary is up-to-date */
- if (stat(cls->folder_path, &st) == -1) {
- camel_folder_summary_clear(s);
- camel_exception_setv(ex, 1, _("Cannot summarise folder: %s: %s"), cls->folder_path, strerror(errno));
- return -1;
- }
-
- if (st.st_size == 0) {
- /* empty? No need to scan at all */
- d(printf("Empty mbox, clearing summary\n"));
- camel_folder_summary_clear(s);
- ret = 0;
- } else if (s->messages->len == 0) {
- /* if we are empty, then we rebuilt from scratch */
- d(printf("Empty summary, rebuilding from start\n"));
- ret = summary_update(cls, 0, changes, ex);
- } else {
- /* is the summary uptodate? */
- if (st.st_size != mbs->folder_size || st.st_mtime != s->time) {
- if (mbs->folder_size < st.st_size) {
- /* this will automatically rescan from 0 if there is a problem */
- d(printf("folder grew, attempting to rebuild from %d\n", mbs->folder_size));
- ret = summary_update(cls, mbs->folder_size, changes, ex);
- } else {
- d(printf("folder shrank! rebuilding from start\n"));
- camel_folder_summary_clear(s);
- ret = summary_update(cls, 0, changes, ex);
- }
- }
- }
-
- /* FIXME: move upstream? */
-
- if (ret != -1) {
- mbs->folder_size = st.st_size;
- s->time = st.st_mtime;
-#if 0
- /* this failing is not a fatal event */
- if (camel_folder_summary_save(s) == -1)
- g_warning("Could not save summary: %s", strerror(errno));
- if (cls->index)
- ibex_save(cls->index);
-#endif
- }
-
- return ret;
-}
-
-static char *tz_months[] = {
- "Jan", "Feb", "Mar", "Apr", "May", "Jun",
- "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
-};
-
-static char *tz_days[] = {
- "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
-};
-
-/* tries to build a From line, based on message headers */
-char *
-camel_mbox_summary_build_from(struct _header_raw *header)
-{
- GString *out = g_string_new("From ");
- char *ret;
- const char *tmp;
- time_t thetime;
- int offset;
- struct tm tm;
-
- tmp = header_raw_find(&header, "Sender", NULL);
- if (tmp == NULL)
- tmp = header_raw_find(&header, "From", NULL);
- if (tmp != NULL) {
- struct _header_address *addr = header_address_decode(tmp);
-
- tmp = NULL;
- if (addr) {
- if (addr->type == HEADER_ADDRESS_NAME) {
- g_string_append(out, addr->v.addr);
- tmp = "";
- }
- header_address_unref(addr);
- }
- }
- if (tmp == NULL) {
- g_string_append(out, "unknown@nodomain.now.au");
- }
-
- /* try use the received header to get the date */
- tmp = header_raw_find(&header, "Received", NULL);
- if (tmp) {
- tmp = strrchr(tmp, ';');
- if (tmp)
- tmp++;
- }
-
- /* if there isn't one, try the Date field */
- if (tmp == NULL)
- tmp = header_raw_find(&header, "Date", NULL);
-
- thetime = header_decode_date(tmp, &offset);
-
- thetime += ((offset / 100) * (60 * 60)) + (offset % 100) * 60;
-
- /* a pseudo, but still bogus attempt at thread safing the function */
- /*memcpy(&tm, gmtime(&thetime), sizeof(tm));*/
- gmtime_r(&thetime, &tm);
-
- g_string_sprintfa(out, " %s %s %d %02d:%02d:%02d %4d\n",
- tz_days[tm.tm_wday],
- tz_months[tm.tm_mon], tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec, tm.tm_year + 1900);
-
- ret = out->str;
- g_string_free(out, FALSE);
- return ret;
-}
-
-/* perform a full sync */
-static int
-mbox_summary_sync_full(CamelLocalSummary *cls, gboolean expunge, CamelFolderChangeInfo *changeinfo, CamelException *ex)
-{
- CamelMboxSummary *mbs = (CamelMboxSummary *)cls;
- CamelFolderSummary *s = (CamelFolderSummary *)mbs;
- CamelMimeParser *mp = NULL;
- int i, count;
- CamelMboxMessageInfo *info = NULL;
- int fd = -1, fdout = -1;
- char *tmpname = NULL;
- char *buffer, *xevnew = NULL;
- int len;
- const char *fromline;
- int lastdel = FALSE;
-
- d(printf("performing full summary/sync\n"));
-
- camel_operation_start(NULL, _("Synchronising folder"));
-
- fd = open(cls->folder_path, O_RDONLY);
- if (fd == -1) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not open folder to summarise: %s: %s"),
- cls->folder_path, strerror(errno));
- camel_operation_end(NULL);
- return -1;
- }
-
- mp = camel_mime_parser_new();
- camel_mime_parser_scan_from(mp, TRUE);
- camel_mime_parser_scan_pre_from(mp, TRUE);
- camel_mime_parser_init_with_fd(mp, fd);
-
- tmpname = alloca(strlen (cls->folder_path) + 5);
- sprintf(tmpname, "%s.tmp", cls->folder_path);
- d(printf("Writing tmp file to %s\n", tmpname));
- fdout = open(tmpname, O_WRONLY|O_CREAT|O_TRUNC, 0600);
- if (fdout == -1) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Cannot open temporary mailbox: %s"), strerror(errno));
- goto error;
- }
-
- count = camel_folder_summary_count(s);
- for (i = 0; i < count; i++) {
- int pc = (i + 1) * 100 / count;
-
- camel_operation_progress(NULL, pc);
-
- info = (CamelMboxMessageInfo *)camel_folder_summary_index(s, i);
-
- g_assert(info);
-
- d(printf("Looking at message %s\n", info->info.uid));
-
- /* only need to seek past deleted messages, otherwise we should be at the right spot/state already */
- if (lastdel) {
- d(printf("seeking to %d\n", (int)info->frompos));
- camel_mime_parser_seek(mp, info->frompos, SEEK_SET);
- }
-
- if (camel_mime_parser_step(mp, &buffer, &len) != HSCAN_FROM) {
- g_warning("Expected a From line here, didn't get it");
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Summary and folder mismatch, even after a sync"));
- goto error;
- }
-
- if (camel_mime_parser_tell_start_from(mp) != info->frompos) {
- g_warning("Didn't get the next message where I expected (%d) got %d instead",
- (int)info->frompos, (int)camel_mime_parser_tell_start_from(mp));
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Summary and folder mismatch, even after a sync"));
- goto error;
- }
-
- lastdel = FALSE;
- if (expunge && info->info.flags & CAMEL_MESSAGE_DELETED) {
- const char *uid = camel_message_info_uid(info);
-
- d(printf("Deleting %s\n", uid));
-
- if (cls->index)
- ibex_unindex(cls->index, (char *)uid);
-
- /* remove it from the change list */
- camel_folder_change_info_remove_uid(changeinfo, uid);
- camel_folder_summary_remove(s, (CamelMessageInfo *)info);
- camel_folder_summary_info_free(s, (CamelMessageInfo *)info);
- count--;
- i--;
- info = NULL;
- lastdel = TRUE;
- } else {
- /* otherwise, the message is staying, copy its From_ line across */
- if (i>0) {
- write(fdout, "\n", 1);
- }
- info->frompos = lseek(fdout, 0, SEEK_CUR);
- fromline = camel_mime_parser_from_line(mp);
- write(fdout, fromline, strlen(fromline));
- }
-
- if (info && info->info.flags & (CAMEL_MESSAGE_FOLDER_NOXEV | CAMEL_MESSAGE_FOLDER_FLAGGED)) {
- d(printf("Updating header for %s flags = %08x\n", info->info.uid, info->info.flags));
-
- if (camel_mime_parser_step(mp, &buffer, &len) == HSCAN_FROM_END) {
- g_warning("camel_mime_parser_step failed (2)");
- goto error;
- }
-
- xevnew = camel_local_summary_encode_x_evolution(cls, (CamelMessageInfo *)info);
- if (camel_local_summary_write_headers(fdout, camel_mime_parser_headers_raw(mp), xevnew) == -1) {
- d(printf("Error writing to tmp mailbox\n"));
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Error writing to temp mailbox: %s"),
- strerror(errno));
- goto error;
- }
- info->info.flags &= 0xffff;
- g_free(xevnew);
- xevnew = NULL;
- camel_mime_parser_drop_step(mp);
- }
-
- camel_mime_parser_drop_step(mp);
- if (info) {
- d(printf("looking for message content to copy across from %d\n", (int)camel_mime_parser_tell(mp)));
- while (camel_mime_parser_step(mp, &buffer, &len) == HSCAN_PRE_FROM) {
- d(printf("copying mbox contents to tmp: '%.*s'\n", len, buffer));
- if (write(fdout, buffer, len) != len) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Writing to tmp mailbox failed: %s: %s"),
- cls->folder_path, strerror(errno));
- goto error;
- }
- }
- d(printf("we are now at %d, from = %d\n", (int)camel_mime_parser_tell(mp),
- (int)camel_mime_parser_tell_start_from(mp)));
- camel_mime_parser_unstep(mp);
- camel_folder_summary_info_free(s, (CamelMessageInfo *)info);
- info = NULL;
- }
- }
-
- d(printf("Closing folders\n"));
-
- if (close(fd) == -1) {
- g_warning("Cannot close source folder: %s", strerror(errno));
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not close source folder %s: %s"),
- cls->folder_path, strerror(errno));
- fd = -1;
- goto error;
- }
-
- if (close(fdout) == -1) {
- g_warning("Cannot close tmp folder: %s", strerror(errno));
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not close temp folder: %s"),
- strerror(errno));
- fdout = -1;
- goto error;
- }
-
- /* this should probably either use unlink/link/unlink, or recopy over
- the original mailbox, for various locking reasons/etc */
- if (rename(tmpname, cls->folder_path) == -1) {
- g_warning("Cannot rename folder: %s", strerror(errno));
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not rename folder: %s"),
- strerror(errno));
- goto error;
- }
- tmpname = NULL;
-
- camel_object_unref((CamelObject *)mp);
- camel_operation_end(NULL);
-
- return 0;
- error:
- if (fd != -1)
- close(fd);
-
- if (fdout != -1)
- close(fdout);
-
- g_free(xevnew);
-
- if (tmpname)
- unlink(tmpname);
- if (mp)
- camel_object_unref((CamelObject *)mp);
- if (info)
- camel_folder_summary_info_free(s, (CamelMessageInfo *)info);
-
- camel_operation_end(NULL);
-
- return -1;
-}
-
-/* perform a quick sync - only system flags have changed */
-static int
-mbox_summary_sync_quick(CamelLocalSummary *cls, gboolean expunge, CamelFolderChangeInfo *changeinfo, CamelException *ex)
-{
- CamelMboxSummary *mbs = (CamelMboxSummary *)cls;
- CamelFolderSummary *s = (CamelFolderSummary *)mbs;
- CamelMimeParser *mp = NULL;
- int i, count;
- CamelMboxMessageInfo *info = NULL;
- int fd = -1;
- char *xevnew, *xevtmp;
- const char *xev;
- int len;
- off_t lastpos;
-
- d(printf("Performing quick summary sync\n"));
-
- camel_operation_start(NULL, _("Synchronising folder"));
-
- fd = open(cls->folder_path, O_RDWR);
- if (fd == -1) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not open folder to summarise: %s: %s"),
- cls->folder_path, strerror(errno));
-
- camel_operation_end(NULL);
- return -1;
- }
-
- mp = camel_mime_parser_new();
- camel_mime_parser_scan_from(mp, TRUE);
- camel_mime_parser_scan_pre_from(mp, TRUE);
- camel_mime_parser_init_with_fd(mp, fd);
-
- count = camel_folder_summary_count(s);
- for (i = 0; i < count; i++) {
- int xevoffset;
- int pc = (i+1)*100/count;
-
- camel_operation_progress(NULL, pc);
-
- info = (CamelMboxMessageInfo *)camel_folder_summary_index(s, i);
-
- g_assert(info);
-
- d(printf("Checking message %s %08x\n", info->info.uid, info->info.flags));
-
- if ((info->info.flags & CAMEL_MESSAGE_FOLDER_FLAGGED) == 0) {
- camel_folder_summary_info_free(s, (CamelMessageInfo *)info);
- info = NULL;
- continue;
- }
-
- d(printf("Updating message %s\n", info->info.uid));
-
- camel_mime_parser_seek(mp, info->frompos, SEEK_SET);
-
- if (camel_mime_parser_step(mp, 0, 0) != HSCAN_FROM) {
- g_warning("Expected a From line here, didn't get it");
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Summary and folder mismatch, even after a sync"));
- goto error;
- }
-
- if (camel_mime_parser_tell_start_from(mp) != info->frompos) {
- g_warning("Didn't get the next message where I expected (%d) got %d instead",
- (int)info->frompos, (int)camel_mime_parser_tell_start_from(mp));
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Summary and folder mismatch, even after a sync"));
- goto error;
- }
-
- if (camel_mime_parser_step(mp, 0, 0) == HSCAN_FROM_END) {
- g_warning("camel_mime_parser_step failed (2)");
- goto error;
- }
-
- xev = camel_mime_parser_header(mp, "X-Evolution", &xevoffset);
- if (xev == NULL || camel_local_summary_decode_x_evolution(cls, xev, NULL) == -1) {
- g_warning("We're supposed to have a valid x-ev header, but we dont");
- goto error;
- }
- xevnew = camel_local_summary_encode_x_evolution(cls, (CamelMessageInfo *)info);
- /* SIGH: encode_param_list is about the only function which folds headers by itself.
- This should be fixed somehow differently (either parser doesn't fold headers,
- or param_list doesn't, or something */
- xevtmp = header_unfold(xevnew);
- /* the raw header contains a leading ' ', so (dis)count that too */
- if (strlen(xev)-1 != strlen(xevtmp)) {
- g_free(xevnew);
- g_free(xevtmp);
- g_warning("Hmm, the xev headers shouldn't have changed size, but they did");
- goto error;
- }
- g_free(xevtmp);
-
- /* we write out the xevnew string, assuming its been folded identically to the original too! */
-
- lastpos = lseek(fd, 0, SEEK_CUR);
- lseek(fd, xevoffset+strlen("X-Evolution: "), SEEK_SET);
- do {
- len = write(fd, xevnew, strlen(xevnew));
- } while (len == -1 && errno == EINTR);
- lseek(fd, lastpos, SEEK_SET);
- g_free(xevnew);
-
- camel_mime_parser_drop_step(mp);
- camel_mime_parser_drop_step(mp);
-
- info->info.flags &= 0xffff;
- camel_folder_summary_info_free(s, (CamelMessageInfo *)info);
- }
-
- d(printf("Closing folders\n"));
-
- if (close(fd) == -1) {
- g_warning("Cannot close source folder: %s", strerror(errno));
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not close source folder %s: %s"),
- cls->folder_path, strerror(errno));
- fd = -1;
- goto error;
- }
-
- camel_object_unref((CamelObject *)mp);
-
- camel_operation_end(NULL);
-
- return 0;
- error:
- if (fd != -1)
- close(fd);
- if (mp)
- camel_object_unref((CamelObject *)mp);
- if (info)
- camel_folder_summary_info_free(s, (CamelMessageInfo *)info);
-
- camel_operation_end(NULL);
-
- return -1;
-}
-
-static int
-mbox_summary_sync(CamelLocalSummary *cls, gboolean expunge, CamelFolderChangeInfo *changeinfo, CamelException *ex)
-{
- struct stat st;
- CamelMboxSummary *mbs = (CamelMboxSummary *)cls;
- CamelFolderSummary *s = (CamelFolderSummary *)cls;
- int i, count;
- int quick = TRUE, work=FALSE;
- int ret;
-
- /* first, sync ourselves up, just to make sure */
- summary_update(cls, mbs->folder_size, changeinfo, ex);
- if (camel_exception_is_set(ex))
- return -1;
-
- count = camel_folder_summary_count(s);
- if (count == 0)
- return 0;
-
- /* check what work we have to do, if any */
- for (i=0;quick && i<count; i++) {
- CamelMessageInfo *info = camel_folder_summary_index(s, i);
- g_assert(info);
- if ((expunge && (info->flags & CAMEL_MESSAGE_DELETED)) ||
- (info->flags & (CAMEL_MESSAGE_FOLDER_NOXEV|CAMEL_MESSAGE_FOLDER_XEVCHANGE)))
- quick = FALSE;
- else
- work |= (info->flags & CAMEL_MESSAGE_FOLDER_FLAGGED) != 0;
- camel_folder_summary_info_free(s, info);
- }
-
- /* yuck i hate this logic, but its to simplify the 'all ok, update summary' and failover cases */
- ret = -1;
- if (quick) {
- if (work) {
- ret = mbox_summary_sync_quick(cls, expunge, changeinfo, ex);
- if (ret == -1) {
- g_warning("failed a quick-sync, trying a full sync");
- camel_exception_clear(ex);
- }
- } else {
- ret = 0;
- }
- }
-
- if (ret == -1)
- ret = mbox_summary_sync_full(cls, expunge, changeinfo, ex);
- if (ret == -1)
- return -1;
-
- if (stat(cls->folder_path, &st) == -1) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM, _("Unknown error: %s"), strerror(errno));
- return -1;
- }
-
- camel_folder_summary_touch(s);
- s->time = st.st_mtime;
- mbs->folder_size = st.st_size;
- camel_folder_summary_save(s);
-
- return 0;
-}
diff --git a/camel/providers/local/camel-mbox-summary.h b/camel/providers/local/camel-mbox-summary.h
deleted file mode 100644
index e24c2b4cdd..0000000000
--- a/camel/providers/local/camel-mbox-summary.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef _CAMEL_MBOX_SUMMARY_H
-#define _CAMEL_MBOX_SUMMARY_H
-
-#include "camel-local-summary.h"
-
-#define CAMEL_MBOX_SUMMARY(obj) CAMEL_CHECK_CAST (obj, camel_mbox_summary_get_type (), CamelMboxSummary)
-#define CAMEL_MBOX_SUMMARY_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mbox_summary_get_type (), CamelMboxSummaryClass)
-#define CAMEL_IS_MBOX_SUMMARY(obj) CAMEL_CHECK_TYPE (obj, camel_mbox_summary_get_type ())
-
-typedef struct _CamelMboxSummary CamelMboxSummary;
-typedef struct _CamelMboxSummaryClass CamelMboxSummaryClass;
-
-typedef struct _CamelMboxMessageContentInfo {
- CamelMessageContentInfo info;
-} CamelMboxMessageContentInfo;
-
-typedef struct _CamelMboxMessageInfo {
- CamelMessageInfo info;
-
- off_t frompos;
-} CamelMboxMessageInfo;
-
-struct _CamelMboxSummary {
- CamelLocalSummary parent;
-
- struct _CamelMboxSummaryPrivate *priv;
-
- size_t folder_size; /* size of the mbox file, last sync */
-};
-
-struct _CamelMboxSummaryClass {
- CamelLocalSummaryClass parent_class;
-};
-
-guint camel_mbox_summary_get_type (void);
-CamelMboxSummary *camel_mbox_summary_new (const char *filename, const char *mbox_name, ibex *index);
-
-/* generate a From line from headers */
-char *camel_mbox_summary_build_from(struct _header_raw *header);
-
-#endif /* ! _CAMEL_MBOX_SUMMARY_H */
-
diff --git a/camel/providers/local/camel-mh-folder.c b/camel/providers/local/camel-mh-folder.c
deleted file mode 100644
index cdf636b533..0000000000
--- a/camel/providers/local/camel-mh-folder.c
+++ /dev/null
@@ -1,214 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; fill-column: 160 -*-
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright (C) 1999, 2000 Helix Code Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <dirent.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <fcntl.h>
-
-#include "camel-mh-folder.h"
-#include "camel-mh-store.h"
-#include "string-utils.h"
-#include "camel-stream-fs.h"
-#include "camel-mh-summary.h"
-#include "camel-data-wrapper.h"
-#include "camel-mime-message.h"
-#include "camel-exception.h"
-
-#define d(x) /*(printf("%s(%d): ", __FILE__, __LINE__),(x))*/
-
-static CamelLocalFolderClass *parent_class = NULL;
-
-/* Returns the class for a CamelMhFolder */
-#define CMHF_CLASS(so) CAMEL_MH_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-#define CF_CLASS(so) CAMEL_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-#define CMHS_CLASS(so) CAMEL_STORE_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-static CamelLocalSummary *mh_create_summary(const char *path, const char *folder, ibex *index);
-
-static void mh_append_message(CamelFolder * folder, CamelMimeMessage * message, const CamelMessageInfo *info, CamelException * ex);
-static CamelMimeMessage *mh_get_message(CamelFolder * folder, const gchar * uid, CamelException * ex);
-
-static void mh_finalize(CamelObject * object);
-
-static void camel_mh_folder_class_init(CamelObjectClass * camel_mh_folder_class)
-{
- CamelFolderClass *camel_folder_class = CAMEL_FOLDER_CLASS(camel_mh_folder_class);
- CamelLocalFolderClass *lclass = (CamelLocalFolderClass *)camel_mh_folder_class;
-
- parent_class = CAMEL_LOCAL_FOLDER_CLASS (camel_type_get_global_classfuncs(camel_local_folder_get_type()));
-
- /* virtual method definition */
-
- /* virtual method overload */
- camel_folder_class->append_message = mh_append_message;
- camel_folder_class->get_message = mh_get_message;
-
- lclass->create_summary = mh_create_summary;
-}
-
-static void mh_init(gpointer object, gpointer klass)
-{
- /*CamelFolder *folder = object;
- CamelMhFolder *mh_folder = object;*/
-}
-
-static void mh_finalize(CamelObject * object)
-{
- /*CamelMhFolder *mh_folder = CAMEL_MH_FOLDER(object);*/
-}
-
-CamelType camel_mh_folder_get_type(void)
-{
- static CamelType camel_mh_folder_type = CAMEL_INVALID_TYPE;
-
- if (camel_mh_folder_type == CAMEL_INVALID_TYPE) {
- camel_mh_folder_type = camel_type_register(CAMEL_LOCAL_FOLDER_TYPE, "CamelMhFolder",
- sizeof(CamelMhFolder),
- sizeof(CamelMhFolderClass),
- (CamelObjectClassInitFunc) camel_mh_folder_class_init,
- NULL,
- (CamelObjectInitFunc) mh_init,
- (CamelObjectFinalizeFunc) mh_finalize);
- }
-
- return camel_mh_folder_type;
-}
-
-CamelFolder *
-camel_mh_folder_new(CamelStore *parent_store, const char *full_name, guint32 flags, CamelException *ex)
-{
- CamelFolder *folder;
-
- d(printf("Creating mh folder: %s\n", full_name));
-
- folder = (CamelFolder *)camel_object_new(CAMEL_MH_FOLDER_TYPE);
- folder = (CamelFolder *)camel_local_folder_construct((CamelLocalFolder *)folder,
- parent_store, full_name, flags, ex);
-
- return folder;
-}
-
-static CamelLocalSummary *mh_create_summary(const char *path, const char *folder, ibex *index)
-{
- return (CamelLocalSummary *)camel_mh_summary_new(path, folder, index);
-}
-
-static void mh_append_message(CamelFolder * folder, CamelMimeMessage * message, const CamelMessageInfo *info, CamelException * ex)
-{
- CamelMhFolder *mh_folder = (CamelMhFolder *)folder;
- CamelLocalFolder *lf = (CamelLocalFolder *)folder;
- CamelStream *output_stream;
- CamelMessageInfo *mi;
- char *name;
-
- /* FIXME: probably needs additional locking (although mh doesn't appear do do it) */
-
- d(printf("Appending message\n"));
-
- /* add it to the summary/assign the uid, etc */
- mi = camel_local_summary_add((CamelLocalSummary *)folder->summary, message, info, lf->changes, ex);
- if (camel_exception_is_set(ex)) {
- return;
- }
-
- d(printf("Appending message: uid is %s\n", camel_message_info_uid(mi)));
-
- /* write it out, use the uid we got from the summary */
- name = g_strdup_printf("%s/%s", lf->folder_path, camel_message_info_uid(mi));
- output_stream = camel_stream_fs_new_with_name(name, O_WRONLY|O_CREAT, 0600);
- if (output_stream == NULL) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Cannot append message to mh folder: %s: %s"), name, g_strerror(errno));
- g_free(name);
- return;
- }
-
- if (camel_data_wrapper_write_to_stream((CamelDataWrapper *)message, output_stream) == -1
- || camel_stream_close(output_stream) == -1) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Cannot append message to mh folder: %s: %s"), name, g_strerror(errno));
- camel_object_unref((CamelObject *)output_stream);
- unlink(name);
- g_free(name);
- return;
- }
-
- /* close this? */
- camel_object_unref((CamelObject *)output_stream);
-
- g_free(name);
-
- camel_object_trigger_event((CamelObject *)folder, "folder_changed", ((CamelLocalFolder *)mh_folder)->changes);
- camel_folder_change_info_clear(((CamelLocalFolder *)mh_folder)->changes);
-}
-
-static CamelMimeMessage *mh_get_message(CamelFolder * folder, const gchar * uid, CamelException * ex)
-{
- CamelLocalFolder *lf = (CamelLocalFolder *)folder;
- CamelStream *message_stream = NULL;
- CamelMimeMessage *message = NULL;
- CamelMessageInfo *info;
- char *name;
-
- d(printf("getting message: %s\n", uid));
-
- /* get the message summary info */
- if ((info = camel_folder_summary_uid(folder->summary, uid)) == NULL) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_FOLDER_INVALID_UID, _("Cannot get message: %s\n %s"), uid, _("No such message"));
- return NULL;
- }
-
- /* we only need it to check the message exists */
- camel_folder_summary_info_free(folder->summary, info);
-
- name = g_strdup_printf("%s/%s", lf->folder_path, uid);
- if ((message_stream = camel_stream_fs_new_with_name(name, O_RDONLY, 0)) == NULL) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_FOLDER_INVALID_UID, _("Cannot get message: %s\n %s"),
- name, g_strerror(errno));
- g_free(name);
- return NULL;
- }
-
- message = camel_mime_message_new();
- if (camel_data_wrapper_construct_from_stream((CamelDataWrapper *)message, message_stream) == -1) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_FOLDER_INVALID_UID, _("Cannot get message: %s\n %s"),
- name, _("Invalid message contents"));
- g_free(name);
- camel_object_unref((CamelObject *)message_stream);
- camel_object_unref((CamelObject *)message);
- return NULL;
-
- }
- camel_object_unref((CamelObject *)message_stream);
- g_free(name);
-
- return message;
-}
diff --git a/camel/providers/local/camel-mh-folder.h b/camel/providers/local/camel-mh-folder.h
deleted file mode 100644
index 175aef2946..0000000000
--- a/camel/providers/local/camel-mh-folder.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Authors:
- * Michael Zucchi <notzed@helixcode.com>
- *
- * Copyright (C) 1999 Helix Code Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_MH_FOLDER_H
-#define CAMEL_MH_FOLDER_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus } */
-#include "camel-local-folder.h"
-
-#define CAMEL_MH_FOLDER_TYPE (camel_mh_folder_get_type ())
-#define CAMEL_MH_FOLDER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MH_FOLDER_TYPE, CamelMhFolder))
-#define CAMEL_MH_FOLDER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MH_FOLDER_TYPE, CamelMhFolderClass))
-#define CAMEL_IS_MH_FOLDER(o) (CAMEL_CHECK_TYPE((o), CAMEL_MH_FOLDER_TYPE))
-
-typedef struct {
- CamelLocalFolder parent_object;
-
-} CamelMhFolder;
-
-typedef struct {
- CamelLocalFolderClass parent_class;
-
- /* Virtual methods */
-
-} CamelMhFolderClass;
-
-/* public methods */
-CamelFolder *camel_mh_folder_new(CamelStore *parent_store, const char *full_name, guint32 flags, CamelException *ex);
-
-/* Standard Camel function */
-CamelType camel_mh_folder_get_type(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif /* CAMEL_MH_FOLDER_H */
diff --git a/camel/providers/local/camel-mh-store.c b/camel/providers/local/camel-mh-store.c
deleted file mode 100644
index 3edadb5ca1..0000000000
--- a/camel/providers/local/camel-mh-store.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <sys/stat.h>
-#include <errno.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "camel-mh-store.h"
-#include "camel-mh-folder.h"
-#include "camel-exception.h"
-#include "camel-url.h"
-
-static CamelLocalStoreClass *parent_class = NULL;
-
-/* Returns the class for a CamelMhStore */
-#define CMHS_CLASS(so) CAMEL_MH_STORE_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-#define CF_CLASS(so) CAMEL_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-#define CMHF_CLASS(so) CAMEL_MH_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-static CamelFolder *get_folder(CamelStore * store, const char *folder_name, guint32 flags, CamelException * ex);
-static void delete_folder(CamelStore * store, const char *folder_name, CamelException * ex);
-
-static void camel_mh_store_class_init(CamelObjectClass * camel_mh_store_class)
-{
- CamelStoreClass *camel_store_class = CAMEL_STORE_CLASS(camel_mh_store_class);
- /*CamelServiceClass *camel_service_class = CAMEL_SERVICE_CLASS(camel_mh_store_class);*/
-
- parent_class = (CamelLocalStoreClass *)camel_type_get_global_classfuncs(camel_local_store_get_type());
-
- /* virtual method overload, use defaults for most */
- camel_store_class->get_folder = get_folder;
- camel_store_class->delete_folder = delete_folder;
-}
-
-CamelType camel_mh_store_get_type(void)
-{
- static CamelType camel_mh_store_type = CAMEL_INVALID_TYPE;
-
- if (camel_mh_store_type == CAMEL_INVALID_TYPE) {
- camel_mh_store_type = camel_type_register(CAMEL_LOCAL_STORE_TYPE, "CamelMhStore",
- sizeof(CamelMhStore),
- sizeof(CamelMhStoreClass),
- (CamelObjectClassInitFunc) camel_mh_store_class_init,
- NULL,
- NULL,
- NULL);
- }
-
- return camel_mh_store_type;
-}
-
-static CamelFolder *get_folder(CamelStore * store, const char *folder_name, guint32 flags, CamelException * ex)
-{
- char *name;
- struct stat st;
-
- (void) ((CamelStoreClass *)parent_class)->get_folder(store, folder_name, flags, ex);
- if (camel_exception_is_set(ex))
- return NULL;
-
- name = g_strdup_printf("%s%s", CAMEL_SERVICE(store)->url->path, folder_name);
-
- if (stat(name, &st) == -1) {
- if (errno != ENOENT) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not open folder `%s':\n%s"),
- folder_name, g_strerror(errno));
- g_free (name);
- return NULL;
- }
- if ((flags & CAMEL_STORE_FOLDER_CREATE) == 0) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_STORE_NO_FOLDER,
- _("Folder `%s' does not exist."), folder_name);
- g_free (name);
- return NULL;
- }
- if (mkdir(name, 0700) != 0) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not create folder `%s':\n%s"),
- folder_name, g_strerror(errno));
- g_free (name);
- return NULL;
- }
- } else if (!S_ISDIR(st.st_mode)) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_STORE_NO_FOLDER,
- _("`%s' is not a directory."), name);
- g_free (name);
- return NULL;
- }
- g_free(name);
-
- return camel_mh_folder_new(store, folder_name, flags, ex);
-}
-
-static void delete_folder(CamelStore * store, const char *folder_name, CamelException * ex)
-{
- char *name;
-
- /* remove folder directory - will fail if not empty */
- name = g_strdup_printf("%s%s", CAMEL_SERVICE(store)->url->path, folder_name);
- if (rmdir(name) == -1) {
- camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not delete folder `%s': %s"),
- folder_name, strerror(errno));
- g_free(name);
- return;
- }
- g_free(name);
-
- /* and remove metadata */
- ((CamelStoreClass *)parent_class)->delete_folder(store, folder_name, ex);
-}
diff --git a/camel/providers/local/camel-mh-store.h b/camel/providers/local/camel-mh-store.h
deleted file mode 100644
index f1f8eb9983..0000000000
--- a/camel/providers/local/camel-mh-store.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Authors: Michael Zucchi <notzed@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_MH_STORE_H
-#define CAMEL_MH_STORE_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus } */
-
-#include "camel-local-store.h"
-
-#define CAMEL_MH_STORE_TYPE (camel_mh_store_get_type ())
-#define CAMEL_MH_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MH_STORE_TYPE, CamelMhStore))
-#define CAMEL_MH_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MH_STORE_TYPE, CamelMhStoreClass))
-#define CAMEL_IS_MH_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_MH_STORE_TYPE))
-
-typedef struct {
- CamelLocalStore parent_object;
-
-} CamelMhStore;
-
-typedef struct {
- CamelLocalStoreClass parent_class;
-
-} CamelMhStoreClass;
-
-/* public methods */
-
-/* Standard Camel function */
-CamelType camel_mh_store_get_type(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif /* CAMEL_MH_STORE_H */
diff --git a/camel/providers/local/camel-mh-summary.c b/camel/providers/local/camel-mh-summary.c
deleted file mode 100644
index 3e588be909..0000000000
--- a/camel/providers/local/camel-mh-summary.c
+++ /dev/null
@@ -1,397 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Not Zed <notzed@lostzed.mmc.com.au>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <sys/stat.h>
-#include <sys/uio.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <sys/types.h>
-#include <dirent.h>
-
-#include <ctype.h>
-
-#include "camel-mh-summary.h"
-#include <camel/camel-mime-message.h>
-
-#define d(x) /*(printf("%s(%d): ", __FILE__, __LINE__),(x))*/
-
-#define CAMEL_MH_SUMMARY_VERSION (0x2000)
-
-static int mh_summary_check(CamelLocalSummary *cls, CamelFolderChangeInfo *changeinfo, CamelException *ex);
-static int mh_summary_sync(CamelLocalSummary *cls, gboolean expunge, CamelFolderChangeInfo *changeinfo, CamelException *ex);
-/*static int mh_summary_add(CamelLocalSummary *cls, CamelMimeMessage *msg, CamelMessageInfo *info, CamelFolderChangeInfo *, CamelException *ex);*/
-
-static char *mh_summary_next_uid_string(CamelFolderSummary *s);
-
-static void camel_mh_summary_class_init (CamelMhSummaryClass *class);
-static void camel_mh_summary_init (CamelMhSummary *gspaper);
-static void camel_mh_summary_finalise (CamelObject *obj);
-
-#define _PRIVATE(x) (((CamelMhSummary *)(x))->priv)
-
-struct _CamelMhSummaryPrivate {
- char *current_uid;
-};
-
-static CamelLocalSummaryClass *parent_class;
-
-CamelType
-camel_mh_summary_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register(camel_local_summary_get_type (), "CamelMhSummary",
- sizeof(CamelMhSummary),
- sizeof(CamelMhSummaryClass),
- (CamelObjectClassInitFunc)camel_mh_summary_class_init,
- NULL,
- (CamelObjectInitFunc)camel_mh_summary_init,
- (CamelObjectFinalizeFunc)camel_mh_summary_finalise);
- }
-
- return type;
-}
-
-static void
-camel_mh_summary_class_init (CamelMhSummaryClass *class)
-{
- CamelFolderSummaryClass *sklass = (CamelFolderSummaryClass *) class;
- CamelLocalSummaryClass *lklass = (CamelLocalSummaryClass *)class;
-
- parent_class = (CamelLocalSummaryClass *)camel_type_get_global_classfuncs(camel_local_summary_get_type ());
-
- /* override methods */
- sklass->next_uid_string = mh_summary_next_uid_string;
-
- lklass->check = mh_summary_check;
- lklass->sync = mh_summary_sync;
- /*lklass->add = mh_summary_add;*/
-}
-
-static void
-camel_mh_summary_init (CamelMhSummary *o)
-{
- struct _CamelFolderSummary *s = (CamelFolderSummary *) o;
-
- o->priv = g_malloc0(sizeof(*o->priv));
- /* set unique file version */
- s->version += CAMEL_MH_SUMMARY_VERSION;
-}
-
-static void
-camel_mh_summary_finalise(CamelObject *obj)
-{
- CamelMhSummary *o = (CamelMhSummary *)obj;
-
- g_free(o->priv);
-}
-
-/**
- * camel_mh_summary_new:
- *
- * Create a new CamelMhSummary object.
- *
- * Return value: A new #CamelMhSummary object.
- **/
-CamelMhSummary *camel_mh_summary_new (const char *filename, const char *mhdir, ibex *index)
-{
- CamelMhSummary *o = (CamelMhSummary *)camel_object_new(camel_mh_summary_get_type ());
-
- camel_local_summary_construct((CamelLocalSummary *)o, filename, mhdir, index);
- return o;
-}
-
-static char *mh_summary_next_uid_string(CamelFolderSummary *s)
-{
- CamelMhSummary *mhs = (CamelMhSummary *)s;
- CamelLocalSummary *cls = (CamelLocalSummary *)s;
- int fd = -1;
- guint32 uid;
- char *name;
-
- /* if we are working to add an existing file, then use current_uid */
- if (mhs->priv->current_uid)
- return g_strdup(mhs->priv->current_uid);
-
- /* else scan for one - and create it too, to make sure */
- do {
- close(fd);
- uid = camel_folder_summary_next_uid(s);
- name = g_strdup_printf("%s/%u", cls->folder_path, uid);
- /* O_EXCL isn't guaranteed, sigh. Oh well, bad luck, mh has problems anyway */
- fd = open(name, O_WRONLY|O_CREAT|O_EXCL, 0600);
- g_free(name);
- } while (fd == -1 && errno == EEXIST);
-
- close(fd);
-
- return g_strdup_printf("%u", uid);
-}
-
-static int camel_mh_summary_add(CamelLocalSummary *cls, const char *name, int forceindex)
-{
- CamelMhSummary *mhs = (CamelMhSummary *)cls;
- char *filename = g_strdup_printf("%s/%s", cls->folder_path, name);
- int fd;
- CamelMimeParser *mp;
-
- d(printf("summarising: %s\n", name));
-
- fd = open(filename, O_RDONLY);
- if (fd == -1) {
- g_warning("Cannot summarise/index: %s: %s", filename, strerror(errno));
- g_free(filename);
- return -1;
- }
- mp = camel_mime_parser_new();
- camel_mime_parser_scan_from(mp, FALSE);
- camel_mime_parser_init_with_fd(mp, fd);
- if (cls->index && (forceindex || !ibex_contains_name(cls->index, (char *)name))) {
- d(printf("forcing indexing of message content\n"));
- camel_folder_summary_set_index((CamelFolderSummary *)mhs, cls->index);
- } else {
- camel_folder_summary_set_index((CamelFolderSummary *)mhs, NULL);
- }
- mhs->priv->current_uid = (char *)name;
- camel_folder_summary_add_from_parser((CamelFolderSummary *)mhs, mp);
- camel_object_unref((CamelObject *)mp);
- mhs->priv->current_uid = NULL;
- camel_folder_summary_set_index((CamelFolderSummary *)mhs, NULL);
- g_free(filename);
- return 0;
-}
-
-static void
-remove_summary(char *key, CamelMessageInfo *info, CamelLocalSummary *cls)
-{
- d(printf("removing message %s from summary\n", key));
- if (cls->index)
- ibex_unindex(cls->index, (char *)camel_message_info_uid(info));
- camel_folder_summary_remove((CamelFolderSummary *)cls, info);
- camel_folder_summary_info_free((CamelFolderSummary *)cls, info);
-}
-
-static int
-mh_summary_check(CamelLocalSummary *cls, CamelFolderChangeInfo *changeinfo, CamelException *ex)
-{
- DIR *dir;
- struct dirent *d;
- char *p, c;
- CamelMessageInfo *info;
- GHashTable *left;
- int i, count;
- int forceindex;
-
- /* FIXME: Handle changeinfo */
-
- d(printf("checking summary ...\n"));
-
- /* scan the directory, check for mail files not in the index, or index entries that
- no longer exist */
- dir = opendir(cls->folder_path);
- if (dir == NULL) {
- camel_exception_setv(ex, 1, _("Cannot open MH directory path: %s: %s"), cls->folder_path, strerror(errno));
- return -1;
- }
-
- /* keeps track of all uid's that have not been processed */
- left = g_hash_table_new(g_str_hash, g_str_equal);
- count = camel_folder_summary_count((CamelFolderSummary *)cls);
- forceindex = count == 0;
- for (i=0;i<count;i++) {
- info = camel_folder_summary_index((CamelFolderSummary *)cls, i);
- if (info) {
- g_hash_table_insert(left, (char *)camel_message_info_uid(info), info);
- }
- }
-
- while ( (d = readdir(dir)) ) {
- /* FIXME: also run stat to check for regular file */
- p = d->d_name;
- while ( (c = *p++) ) {
- if (!isdigit(c))
- break;
- }
- if (c==0) {
- info = camel_folder_summary_uid((CamelFolderSummary *)cls, d->d_name);
- if (info == NULL || (cls->index && (!ibex_contains_name(cls->index, d->d_name)))) {
- /* need to add this file to the summary */
- if (info != NULL) {
- g_hash_table_remove(left, camel_message_info_uid(info));
- camel_folder_summary_remove((CamelFolderSummary *)cls, info);
- camel_folder_summary_info_free((CamelFolderSummary *)cls, info);
- }
- camel_mh_summary_add(cls, d->d_name, forceindex);
- } else {
- const char *uid = camel_message_info_uid(info);
- CamelMessageInfo *old = g_hash_table_lookup(left, uid);
-
- if (old) {
- camel_folder_summary_info_free((CamelFolderSummary *)cls, old);
- g_hash_table_remove(left, uid);
- }
- camel_folder_summary_info_free((CamelFolderSummary *)cls, info);
- }
- }
- }
- closedir(dir);
- g_hash_table_foreach(left, (GHFunc)remove_summary, cls);
- g_hash_table_destroy(left);
-
- /* FIXME: move this up a class */
-
- /* force a save of the index, just to make sure */
- /* note this could be expensive so possibly shouldn't be here
- as such */
- if (cls->index) {
- ibex_save(cls->index);
- }
-
- return 0;
-}
-
-static int
-mh_summary_sync_message(CamelLocalSummary *cls, CamelMessageInfo *info, CamelException *ex)
-{
- CamelMimeParser *mp;
- const char *xev, *buffer;
- int xevoffset;
- int fd, outfd, len, outlen, ret=0;
- char *name, *tmpname, *xevnew;
-
- name = g_strdup_printf("%s/%s", cls->folder_path, camel_message_info_uid(info));
- fd = open(name, O_RDWR);
- if (fd == -1)
- return -1;
-
- mp = camel_mime_parser_new();
- camel_mime_parser_init_with_fd(mp, fd);
- if (camel_mime_parser_step(mp, 0, 0) != HSCAN_EOF) {
- xev = camel_mime_parser_header(mp, "X-Evolution", &xevoffset);
- d(printf("xev = '%s'\n", xev));
- xevnew = camel_local_summary_encode_x_evolution(cls, info);
- if (xev == NULL
- || camel_local_summary_decode_x_evolution(cls, xev, NULL) == -1
- || strlen(xev)-1 != strlen(xevnew)) {
-
- d(printf("camel local summary_decode_xev = %d\n", camel_local_summary_decode_x_evolution(cls, xev, NULL)));
-
- /* need to write a new copy/unlink old */
- tmpname = g_strdup_printf("%s/.tmp.%d.%s", cls->folder_path, getpid(), camel_message_info_uid(info));
- d(printf("old xev was %d %s new xev is %d %s\n", strlen(xev), xev, strlen(xevnew), xevnew));
- d(printf("creating new message %s\n", tmpname));
- outfd = open(tmpname, O_CREAT|O_WRONLY|O_TRUNC, 0600);
- if (outfd != -1) {
- outlen = 0;
- len = camel_local_summary_write_headers(outfd, camel_mime_parser_headers_raw(mp), xevnew);
- if (len != -1) {
- while (outlen != -1 && (len = camel_mime_parser_read(mp, &buffer, 10240)) > 0) {
- d(printf("camel mime parser read, read %d bytes: %.*s\n", len, len, buffer));
- do {
- outlen = write(outfd, buffer, len);
- } while (outlen == -1 && errno == EINTR);
- }
- }
-
- d(printf("len = %d outlen = %d, renaming/finishing\n", len, outlen));
- if (close(outfd) == -1
- || len == -1
- || outlen == -1
- || rename(tmpname, name) == -1) {
- unlink(tmpname);
- ret = -1;
- }
- } else {
- g_warning("sync can't create tmp file: %s", strerror(errno));
- }
- g_free(tmpname);
- } else {
- d(printf("stamping in updated X-EV at %d\n", (int)xevoffset));
- /* else, we can just update the flags field */
- lseek(fd, xevoffset+strlen("X-Evolution: "), SEEK_SET);
- do {
- len = write(fd, xevnew, strlen(xevnew));
- } while (len == -1 && errno == EINTR);
- if (len == -1)
- ret = -1;
- }
-
- g_free(xevnew);
- }
-
- camel_object_unref((CamelObject *)mp);
- g_free(name);
- return ret;
-}
-
-/* sync the summary file with the ondisk files */
-static int
-mh_summary_sync(CamelLocalSummary *cls, gboolean expunge, CamelFolderChangeInfo *changes, CamelException *ex)
-{
- int count, i;
- CamelMessageInfo *info;
- char *name;
- const char *uid;
-
- d(printf("summary_sync(expunge=%s)\n", expunge?"true":"false"));
-
- /* we could probably get away without this ... but why not use it, esp if we're going to
- be doing any significant io already */
- if (camel_local_summary_check(cls, changes, ex) == -1)
- return -1;
-
- count = camel_folder_summary_count((CamelFolderSummary *)cls);
- for (i=count-1;i>=0;i--) {
- info = camel_folder_summary_index((CamelFolderSummary *)cls, i);
- g_assert(info);
- if (expunge && (info->flags & CAMEL_MESSAGE_DELETED)) {
- uid = camel_message_info_uid(info);
- name = g_strdup_printf("%s/%s", cls->folder_path, uid);
- d(printf("deleting %s\n", name));
- if (unlink(name) == 0 || errno==ENOENT) {
-
- /* FIXME: put this in folder_summary::remove()? */
- if (cls->index)
- ibex_unindex(cls->index, (char *)uid);
-
- camel_folder_change_info_remove_uid(changes, uid);
- camel_folder_summary_remove((CamelFolderSummary *)cls, info);
- }
- g_free(name);
- } else if (info->flags & (CAMEL_MESSAGE_FOLDER_NOXEV|CAMEL_MESSAGE_FOLDER_FLAGGED)) {
- if (mh_summary_sync_message(cls, info, ex) != -1) {
- info->flags &= 0xffff;
- } else {
- g_warning("Problem occured when trying to expunge, ignored");
- }
- }
- camel_folder_summary_info_free((CamelFolderSummary *)cls, info);
- }
-
- return 0;
-}
diff --git a/camel/providers/local/camel-mh-summary.h b/camel/providers/local/camel-mh-summary.h
deleted file mode 100644
index 52cc496610..0000000000
--- a/camel/providers/local/camel-mh-summary.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2000 Helix Code Inc.
- *
- * Authors: Not Zed <notzed@lostzed.mmc.com.au>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef _CAMEL_MH_SUMMARY_H
-#define _CAMEL_MH_SUMMARY_H
-
-#include "camel-local-summary.h"
-#include <camel/camel-folder.h>
-#include <camel/camel-exception.h>
-#include <libibex/ibex.h>
-
-#define CAMEL_MH_SUMMARY(obj) CAMEL_CHECK_CAST (obj, camel_mh_summary_get_type (), CamelMhSummary)
-#define CAMEL_MH_SUMMARY_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mh_summary_get_type (), CamelMhSummaryClass)
-#define CAMEL_IS_MH_SUMMARY(obj) CAMEL_CHECK_TYPE (obj, camel_mh_summary_get_type ())
-
-typedef struct _CamelMhSummary CamelMhSummary;
-typedef struct _CamelMhSummaryClass CamelMhSummaryClass;
-
-struct _CamelMhSummary {
- CamelLocalSummary parent;
- struct _CamelMhSummaryPrivate *priv;
-};
-
-struct _CamelMhSummaryClass {
- CamelLocalSummaryClass parent_class;
-
- /* virtual methods */
-
- /* signals */
-};
-
-CamelType camel_mh_summary_get_type (void);
-CamelMhSummary *camel_mh_summary_new (const char *filename, const char *mhdir, ibex *index);
-
-#endif /* ! _CAMEL_MH_SUMMARY_H */
-
diff --git a/camel/providers/local/libcamellocal.urls b/camel/providers/local/libcamellocal.urls
deleted file mode 100644
index 35a7049145..0000000000
--- a/camel/providers/local/libcamellocal.urls
+++ /dev/null
@@ -1,3 +0,0 @@
-mh
-mbox
-maildir
diff --git a/camel/providers/nntp/.cvsignore b/camel/providers/nntp/.cvsignore
deleted file mode 100644
index 2fbeab8712..0000000000
--- a/camel/providers/nntp/.cvsignore
+++ /dev/null
@@ -1,12 +0,0 @@
-.deps
-Makefile
-Makefile.in
-.libs
-.deps
-*.lo
-*.la
-test-newsrc
-*.bb
-*.bbg
-*.da
-*.gcov
diff --git a/camel/providers/nntp/Makefile.am b/camel/providers/nntp/Makefile.am
deleted file mode 100644
index a453ec305f..0000000000
--- a/camel/providers/nntp/Makefile.am
+++ /dev/null
@@ -1,53 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-libcamelnntpincludedir = $(includedir)/camel
-
-providerdir = $(pkglibdir)/camel-providers/$(VERSION)
-
-provider_LTLIBRARIES = libcamelnntp.la
-provider_DATA = libcamelnntp.urls
-
-INCLUDES = -I../.. \
- -I$(top_srcdir)/camel \
- -I$(top_srcdir)/intl \
- -I$(top_srcdir)/libibex \
- -I$(top_srcdir)/e-util \
- -I$(top_srcdir) \
- -I$(includedir) \
- $(EXTRA_GNOME_CFLAGS) \
- -DG_LOG_DOMAIN=\"camel-nntp-provider\"
-
-libcamelnntp_la_SOURCES = \
- camel-nntp-auth.c \
- camel-nntp-folder.c \
- camel-nntp-grouplist.c \
- camel-nntp-newsrc.c \
- camel-nntp-provider.c \
- camel-nntp-store.c \
- camel-nntp-utils.c
-
-libcamelnntpinclude_HEADERS = \
- camel-nntp-auth.h \
- camel-nntp-folder.h \
- camel-nntp-grouplist.h \
- camel-nntp-newsrc.h \
- camel-nntp-resp-codes.h \
- camel-nntp-store.h \
- camel-nntp-types.h \
- camel-nntp-utils.h
-
-libcamelnntp_la_LDFLAGS = -version-info 0:0:0
-
-EXTRA_DIST = libcamelnntp.urls
-
-#noinst_PROGRAMS = test-newsrc
-
-#LDADD = \
- #$(top_builddir)/camel/libcamel.la \
- #$(top_builddir)/e-util/libeutil.la \
- #$(top_builddir)/libibex/libibex.la \
- #$(GNOME_LIBDIR) \
- #$(GNOMEUI_LIBS) $(INTLLIBS) $(EXTRA_GNOME_LIBS)
-# $(BONOBO_LIBS)
-
-#test_newsrc_LDADD = libcamelnntp.la $(LDADD)
diff --git a/camel/providers/nntp/camel-nntp-auth.c b/camel/providers/nntp/camel-nntp-auth.c
deleted file mode 100644
index b211f52593..0000000000
--- a/camel/providers/nntp/camel-nntp-auth.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-nntp-auth.c : authentication for nntp */
-
-/*
- *
- * Copyright (C) 2000 Helix Code, Inc. <toshok@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include <camel-nntp-auth.h>
-#include <camel-nntp-store.h>
-#include <camel-nntp-resp-codes.h>
-#include <camel-exception.h>
-#include <camel-session.h>
-
-int
-camel_nntp_auth_authenticate (CamelNNTPStore *store, CamelException *ex)
-{
- CamelService *service = CAMEL_SERVICE (store);
- CamelSession *session = camel_service_get_session (service);
- int resp;
-
- if (!service->url->authmech && !service->url->passwd) {
- gchar *prompt;
-
- prompt = g_strdup_printf (_("Please enter the NNTP password for %s@%s"),
- service->url->user, service->url->host);
- service->url->passwd =
- camel_session_query_authenticator (session,
- CAMEL_AUTHENTICATOR_ASK, prompt,
- TRUE, service, "password", ex);
- g_free (prompt);
-
- if (!service->url->passwd) {
- camel_exception_set (ex, CAMEL_EXCEPTION_USER_CANCEL,
- "You didn\'t enter a password.");
- resp = 666;
- goto done;
- }
- }
-
- /* first send username */
- resp = camel_nntp_command (store, ex, NULL, "AUTHINFO USER %s", service->url->user);
-
- if (resp == NNTP_AUTH_REJECTED) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("Server rejected username"));
- goto done;
-
- }
- else if (resp != NNTP_AUTH_CONTINUE) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("Failed to send username to server"));
- goto done;
- }
-
- /* then send the username if the server asks for it */
- resp = camel_nntp_command (store, ex, NULL, "AUTHINFO PASS %s", service->url->passwd);
-
- if (resp == NNTP_AUTH_REJECTED) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("Server rejected username/password"));
- goto done;
- }
-
- done:
-
- if (service->url->passwd) {
- /* let's be paranoid */
- memset (service->url->passwd, 0, strlen (service->url->passwd));
- g_free (service->url->passwd);
- service->url->passwd = NULL;
- }
- return resp;
-}
diff --git a/camel/providers/nntp/camel-nntp-auth.h b/camel/providers/nntp/camel-nntp-auth.h
deleted file mode 100644
index 2708d9d335..0000000000
--- a/camel/providers/nntp/camel-nntp-auth.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-nntp-auth.h : authentication for nntp */
-
-/*
- *
- * Author : Chris Toshok <toshok@helixcode.com>
- *
- * Copyright (C) 1999 Helix Code .
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_NNTP_AUTH_H
-#define CAMEL_NNTP_AUTH_H 1
-
-#include <camel-nntp-store.h>
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-int camel_nntp_auth_authenticate (CamelNNTPStore *store, CamelException *ex);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_NNTP_AUTH_H */
diff --git a/camel/providers/nntp/camel-nntp-folder.c b/camel/providers/nntp/camel-nntp-folder.c
deleted file mode 100644
index 7edc4a98fd..0000000000
--- a/camel/providers/nntp/camel-nntp-folder.c
+++ /dev/null
@@ -1,265 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-nntp-folder.c : Abstract class for an email folder */
-
-/*
- * Author : Chris Toshok <toshok@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code .
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#include <config.h>
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <dirent.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <fcntl.h>
-
-#include "camel-folder-summary.h"
-#include "camel-nntp-resp-codes.h"
-#include "camel-nntp-store.h"
-#include "camel-nntp-folder.h"
-#include "camel-nntp-store.h"
-#include "camel-nntp-utils.h"
-
-#include "string-utils.h"
-#include "camel-stream-mem.h"
-#include "camel-data-wrapper.h"
-#include "camel-mime-message.h"
-#include "camel-folder-summary.h"
-
-#include "camel-exception.h"
-
-static CamelFolderClass *parent_class=NULL;
-
-/* Returns the class for a CamelNNTPFolder */
-#define CNNTPF_CLASS(so) CAMEL_NNTP_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-#define CF_CLASS(so) CAMEL_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-#define CNNTPS_CLASS(so) CAMEL_STORE_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-
-static void
-nntp_folder_sync (CamelFolder *folder, gboolean expunge,
- CamelException *ex)
-{
- CamelNNTPStore *store;
-
- camel_folder_summary_save (folder->summary);
-
- store = CAMEL_NNTP_STORE (camel_folder_get_parent_store (folder));
-
- if (store->newsrc)
- camel_nntp_newsrc_write (store->newsrc);
-}
-
-static void
-nntp_folder_set_message_flags (CamelFolder *folder, const char *uid,
- guint32 flags, guint32 set)
-{
- ((CamelFolderClass *)parent_class)->set_message_flags(folder, uid, flags, set);
-
- if (flags & set & CAMEL_MESSAGE_SEEN) {
- int article_num;
- CamelNNTPStore *nntp_store = CAMEL_NNTP_STORE (camel_folder_get_parent_store (folder));
-
- sscanf (uid, "%d", &article_num);
-
- camel_nntp_newsrc_mark_article_read (nntp_store->newsrc,
- folder->name,
- article_num);
- }
-}
-
-static CamelMimeMessage *
-nntp_folder_get_message (CamelFolder *folder, const gchar *uid, CamelException *ex)
-{
- CamelStream *message_stream = NULL;
- CamelMimeMessage *message = NULL;
- CamelStore *parent_store;
- char *buf;
- int buf_len;
- int buf_alloc;
- int status;
- gboolean done;
- char *message_id;
-
- /* get the parent store */
- parent_store = camel_folder_get_parent_store (folder);
-
- message_id = strchr (uid, ',') + 1;
- status = camel_nntp_command (CAMEL_NNTP_STORE( parent_store ), ex, NULL, "ARTICLE %s", message_id);
-
- /* if the message_id was not found, raise an exception and return */
- if (status == NNTP_NO_SUCH_ARTICLE) {
- camel_exception_setv (ex,
- CAMEL_EXCEPTION_FOLDER_INVALID_UID,
- _("Message %s not found."),
- message_id);
- return NULL;
- }
- else if (status != NNTP_ARTICLE_FOLLOWS) {
- /* XXX */
- g_warning ("weird nntp error %d\n", status);
- return NULL;
- }
-
- /* this could probably done fairly easily with an nntp stream that
- returns eof after '.' */
-
- /* XXX ick ick ick. read the entire message into a buffer and
- then create a stream_mem for it. */
- buf_alloc = 2048;
- buf_len = 0;
- buf = g_malloc(buf_alloc);
- done = FALSE;
-
- buf[0] = 0;
-
- while (!done) {
- int line_length;
- char *line;
-
- if (camel_remote_store_recv_line (CAMEL_REMOTE_STORE (parent_store), &line, ex) < 0) {
- g_warning ("recv_line failed while building message\n");
- break;
- }
-
- /* XXX check exception */
-
- line_length = strlen ( line );
-
- if (!strcmp(line, ".")) {
- done = TRUE;
- g_free (line);
- }
- else {
- if (buf_len + line_length > buf_alloc) {
- buf_alloc *= 2;
- buf = g_realloc (buf, buf_alloc);
- }
- strcat(buf, line);
- strcat(buf, "\n");
- buf_len += strlen(line) + 1;
- g_free (line);
- }
- }
-
- /* create a stream bound to the message */
- message_stream = camel_stream_mem_new_with_buffer(buf, buf_len);
-
- message = camel_mime_message_new ();
- camel_data_wrapper_construct_from_stream (CAMEL_DATA_WRAPPER(message), message_stream);
-
- camel_object_unref (CAMEL_OBJECT (message_stream));
-
-#if 0
- gtk_signal_connect (CAMEL_OBJECT (message), "message_changed", message_changed, folder);
-#endif
-
- g_free (buf);
-
- return message;
-}
-
-static GPtrArray*
-nntp_folder_search_by_expression (CamelFolder *folder, const char *expression, CamelException *ex)
-{
- g_assert (0);
- return NULL;
-}
-
-static void
-nntp_folder_finalize (CamelObject *object)
-{
- CamelNNTPFolder *nntp_folder = CAMEL_NNTP_FOLDER (object);
-
- g_free (nntp_folder->summary_file_path);
-}
-
-static void
-camel_nntp_folder_class_init (CamelNNTPFolderClass *camel_nntp_folder_class)
-{
- CamelFolderClass *camel_folder_class = CAMEL_FOLDER_CLASS (camel_nntp_folder_class);
-
- parent_class = CAMEL_FOLDER_CLASS (camel_type_get_global_classfuncs (camel_folder_get_type ()));
-
- /* virtual method definition */
-
- /* virtual method overload */
- camel_folder_class->sync = nntp_folder_sync;
- camel_folder_class->set_message_flags = nntp_folder_set_message_flags;
- camel_folder_class->get_message = nntp_folder_get_message;
- camel_folder_class->search_by_expression = nntp_folder_search_by_expression;
-}
-
-CamelType
-camel_nntp_folder_get_type (void)
-{
- static CamelType camel_nntp_folder_type = CAMEL_INVALID_TYPE;
-
- if (camel_nntp_folder_type == CAMEL_INVALID_TYPE) {
- camel_nntp_folder_type = camel_type_register (CAMEL_FOLDER_TYPE, "CamelNNTPFolder",
- sizeof (CamelNNTPFolder),
- sizeof (CamelNNTPFolderClass),
- (CamelObjectClassInitFunc) camel_nntp_folder_class_init,
- NULL,
- (CamelObjectInitFunc) NULL,
- (CamelObjectFinalizeFunc) nntp_folder_finalize);
- }
-
- return camel_nntp_folder_type;
-}
-
-CamelFolder *
-camel_nntp_folder_new (CamelStore *parent, const char *folder_name, CamelException *ex)
-{
- CamelFolder *folder = CAMEL_FOLDER (camel_object_new (CAMEL_NNTP_FOLDER_TYPE));
- CamelNNTPFolder *nntp_folder = CAMEL_NNTP_FOLDER (folder);
- const gchar *root_dir_path;
-
- camel_folder_construct (folder, parent, folder_name, folder_name);
- folder->has_summary_capability = TRUE;
-
- root_dir_path = camel_nntp_store_get_toplevel_dir (CAMEL_NNTP_STORE(folder->parent_store));
- nntp_folder->summary_file_path = g_strdup_printf ("%s/%s-ev-summary",
- root_dir_path,
- folder->name);
-
- folder->summary = camel_folder_summary_new ();
- camel_folder_summary_set_filename (folder->summary,
- nntp_folder->summary_file_path);
-
- if (-1 == camel_folder_summary_load (folder->summary)) {
- /* Bad or nonexistant summary file */
- camel_nntp_get_headers (CAMEL_FOLDER( folder )->parent_store,
- nntp_folder, ex);
- if (camel_exception_get_id (ex)) {
- camel_object_unref (CAMEL_OBJECT (folder));
- return NULL;
- }
-
- /* XXX check return value */
- camel_folder_summary_save (folder->summary);
- }
-
- return folder;
-}
diff --git a/camel/providers/nntp/camel-nntp-folder.h b/camel/providers/nntp/camel-nntp-folder.h
deleted file mode 100644
index 190d0bf346..0000000000
--- a/camel/providers/nntp/camel-nntp-folder.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-nntp-folder.h : NNTP group (folder) support. */
-
-/*
- *
- * Author : Chris Toshok <toshok@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code .
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_NNTP_FOLDER_H
-#define CAMEL_NNTP_FOLDER_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include "camel-folder.h"
-
-/* #include "camel-store.h" */
-
-#define CAMEL_NNTP_FOLDER_TYPE (camel_nntp_folder_get_type ())
-#define CAMEL_NNTP_FOLDER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_NNTP_FOLDER_TYPE, CamelNNTPFolder))
-#define CAMEL_NNTP_FOLDER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_NNTP_FOLDER_TYPE, CamelNNTPFolderClass))
-#define CAMEL_IS_NNTP_FOLDER(o) (CAMEL_CHECK_TYPE((o), CAMEL_NNTP_FOLDER_TYPE))
-
-
-typedef struct {
- CamelFolder parent_object;
-
- gchar *summary_file_path; /* contains the messages summary */
- CamelFolderSummary *summary;
-} CamelNNTPFolder;
-
-
-
-typedef struct {
- CamelFolderClass parent_class;
-
- /* Virtual methods */
-
-} CamelNNTPFolderClass;
-
-
-/* public methods */
-
-/* Standard Camel function */
-CamelType camel_nntp_folder_get_type (void);
-
-CamelFolder *camel_nntp_folder_new (CamelStore *parent, const char *folder_name, CamelException *ex);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_NNTP_FOLDER_H */
diff --git a/camel/providers/nntp/camel-nntp-grouplist.c b/camel/providers/nntp/camel-nntp-grouplist.c
deleted file mode 100644
index 578a6eba66..0000000000
--- a/camel/providers/nntp/camel-nntp-grouplist.c
+++ /dev/null
@@ -1,214 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-nntp-grouplist.c : getting/updating the list of newsgroups on the server. */
-
-/*
- * Author : Chris Toshok <toshok@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code .
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#include <config.h>
-#include <errno.h>
-#include <string.h>
-
-#include "camel-exception.h"
-#include "camel-nntp-grouplist.h"
-#include "camel-nntp-resp-codes.h"
-
-static CamelNNTPGroupList *
-camel_nntp_get_grouplist_from_server (CamelNNTPStore *store, CamelException *ex)
-{
- int status;
- gboolean done = FALSE;
- CamelNNTPGroupList *list;
-
- status = camel_nntp_command (store, ex, NULL,
- "LIST");
-
- if (status != NNTP_LIST_FOLLOWS) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not get group list from server."));
- return NULL;
- }
-
- list = g_new0 (CamelNNTPGroupList, 1);
- list->time = time (NULL);
-
- while (!done) {
- char *line;
-
- if (camel_remote_store_recv_line (CAMEL_REMOTE_STORE (store), &line, ex) < 0)
- return list;
-
- if (*line == '.') {
- done = TRUE;
- }
- else {
- CamelNNTPGroupListEntry *entry = g_new (CamelNNTPGroupListEntry, 1);
- char **split_line = g_strsplit (line, " ", 4);
-
- entry->group_name = g_strdup (split_line[0]);
- entry->high = atoi (split_line[1]);
- entry->low = atoi (split_line[2]);
-
- g_strfreev (split_line);
-
- list->group_list = g_list_append (list->group_list, entry);
- }
- }
-
- return list;
-}
-
-static CamelNNTPGroupList*
-camel_nntp_get_grouplist_from_file (CamelNNTPStore *store, CamelException *ex)
-{
- gchar *root_dir = camel_nntp_store_get_toplevel_dir(CAMEL_NNTP_STORE(store));
- gchar *grouplist_file = g_strdup_printf ("%s/grouplist", root_dir);
- CamelNNTPGroupList *list;
- FILE *fp;
- char buf[300];
- unsigned long time;
-
- g_free (root_dir);
- fp = fopen (grouplist_file, "r");
- g_free (grouplist_file);
-
- if (fp == NULL) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("Unable to load grouplist file for %s: %s"),
- CAMEL_SERVICE(store)->url->host,
- strerror(errno));
- return NULL;
- }
-
- /* read the time */
- if (!fgets (buf, sizeof (buf), fp)) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("Unable to load grouplist file for %s: %s"),
- CAMEL_SERVICE(store)->url->host,
- strerror(errno));
- fclose (fp);
- return NULL;
- }
-
-
- list = g_new0 (CamelNNTPGroupList, 1);
- list->store = store;
- sscanf (buf, "%lu", &time);
- list->time = time;
-
- while (fgets (buf, sizeof (buf), fp)) {
- CamelNNTPGroupListEntry *entry = g_new (CamelNNTPGroupListEntry, 1);
- char **split_line = g_strsplit (buf, " ", 4);
-
- entry->group_name = g_strdup (split_line[0]);
- entry->high = atoi (split_line[1]);
- entry->low = atoi (split_line[2]);
-
- g_strfreev (split_line);
-
- list->group_list = g_list_append (list->group_list, entry);
- }
-
- fclose (fp);
-
- return list;
-}
-
-static void
-save_entry (CamelNNTPGroupListEntry *entry, FILE *fp)
-{
- fprintf (fp, "%s %d %d\n", entry->group_name, entry->low, entry->high);
-}
-
-void
-camel_nntp_grouplist_save (CamelNNTPGroupList *group_list, CamelException *ex)
-{
- FILE *fp;
- gchar *root_dir = camel_nntp_store_get_toplevel_dir(CAMEL_NNTP_STORE(group_list->store));
- gchar *grouplist_file = g_strdup_printf ("%s/grouplist", root_dir);
-
- g_free (root_dir);
- fp = fopen (grouplist_file, "w");
- g_free (grouplist_file);
-
- if (fp == NULL) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("Unable to save grouplist file for %s: %s"),
- CAMEL_SERVICE(group_list->store)->url->host,
- strerror(errno));
- return;
- }
-
- fprintf (fp, "%lu\n", (long)group_list->time);
-
- g_list_foreach (group_list->group_list, (GFunc)save_entry, fp);
-
- fclose (fp);
-}
-
-static void
-free_entry (CamelNNTPGroupListEntry *entry, void *data)
-{
- g_free (entry->group_name);
- g_free (entry);
-}
-
-void
-camel_nntp_grouplist_free (CamelNNTPGroupList *group_list)
-{
- g_return_if_fail (group_list);
-
- g_list_foreach (group_list->group_list, (GFunc)free_entry, NULL);
-
- g_free (group_list);
-}
-
-CamelNNTPGroupList*
-camel_nntp_grouplist_fetch (CamelNNTPStore *store, CamelException *ex)
-{
- CamelNNTPGroupList *list;
-
- list = camel_nntp_get_grouplist_from_file (store, ex);
-
- printf ("camel_nntp_get_grouplist_from_file returned %p\n", list);
-
- if (!list) {
- camel_exception_clear (ex);
-
- list = camel_nntp_get_grouplist_from_server (store, ex);
-
- if (!list) {
- camel_nntp_grouplist_free (list);
- }
- else {
- list->store = store;
- camel_nntp_grouplist_save (list, ex);
- return list;
- }
- }
-
- return list;
-}
-
-gint
-camel_nntp_grouplist_update (CamelNNTPGroupList *group_list, CamelException *ex)
-{
- return 0;
-}
diff --git a/camel/providers/nntp/camel-nntp-grouplist.h b/camel/providers/nntp/camel-nntp-grouplist.h
deleted file mode 100644
index 67c74d5dc2..0000000000
--- a/camel/providers/nntp/camel-nntp-grouplist.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-nntp-grouplist.h : getting/updating the list of newsgroups on the server. */
-
-/*
- * Author : Chris Toshok <toshok@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code .
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_NNTP_GROUPLIST_H
-#define CAMEL_NNTP_GROUPLIST_H 1
-
-#include <time.h>
-#include "camel-nntp-store.h"
-
-struct CamelNNTPGroupListEntry {
- char *group_name;
- guint32 low;
- guint32 high;
- guint32 flags;
-};
-
-struct CamelNNTPGroupList {
- CamelNNTPStore *store;
- time_t time;
- GList *group_list;
-};
-
-CamelNNTPGroupList* camel_nntp_grouplist_fetch (CamelNNTPStore *store, CamelException *ex);
-gint camel_nntp_grouplist_update (CamelNNTPGroupList *group_list, CamelException *ex);
-void camel_nntp_grouplist_save (CamelNNTPGroupList *group_list, CamelException *ex);
-void camel_nntp_grouplist_free (CamelNNTPGroupList *group_list);
-
-#endif /* CAMEL_NNTP_GROUPLIST_H */
diff --git a/camel/providers/nntp/camel-nntp-newsrc.c b/camel/providers/nntp/camel-nntp-newsrc.c
deleted file mode 100644
index d0b56222cf..0000000000
--- a/camel/providers/nntp/camel-nntp-newsrc.c
+++ /dev/null
@@ -1,645 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-nntp-newsrc.c - .newsrc parsing/regurgitating code */
-/*
- *
- * Copyright (C) 2000 Helix Code, Inc. <toshok@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#include <config.h>
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <glib.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <errno.h>
-#include "camel-nntp-newsrc.h"
-#include <camel/camel-folder-summary.h>
-
-#ifdef ENABLE_THREADS
-#include <pthread.h>
-
-#define NEWSRC_LOCK(f, l) (g_mutex_lock(((CamelNNTPNewsrc *)f)->l))
-#define NEWSRC_UNLOCK(f, l) (g_mutex_unlock(((CamelNNTPNewsrc *)f)->l))
-#else
-#define NEWSRC_LOCK(f, l)
-#define NEWSRC_UNLOCK(f, l)
-#endif
-
-typedef struct {
- guint low;
- guint high;
-} ArticleRange;
-
-typedef struct {
- char *name;
- GArray *ranges;
- gboolean subscribed;
-} NewsrcGroup;
-
-struct CamelNNTPNewsrc {
- gchar *filename;
- GHashTable *groups;
- gboolean dirty;
-#ifdef ENABLE_THREADS
- GMutex *lock;
-#endif
-} ;
-
-
-static NewsrcGroup *
-camel_nntp_newsrc_group_add (CamelNNTPNewsrc *newsrc, const char *group_name, gboolean subscribed)
-{
- NewsrcGroup *new_group = g_malloc(sizeof(NewsrcGroup));
-
- new_group->name = g_strdup(group_name);
- new_group->subscribed = subscribed;
- new_group->ranges = g_array_new (FALSE, FALSE, sizeof (ArticleRange));
-
- g_hash_table_insert (newsrc->groups, new_group->name, new_group);
-
- newsrc->dirty = TRUE;
-
- return new_group;
-}
-
-static int
-camel_nntp_newsrc_group_get_highest_article_read(CamelNNTPNewsrc *newsrc, NewsrcGroup *group)
-{
- if (!group || group->ranges->len == 0)
- return 0;
-
- return g_array_index(group->ranges, ArticleRange, group->ranges->len - 1).high;
-}
-
-static int
-camel_nntp_newsrc_group_get_num_articles_read(CamelNNTPNewsrc *newsrc, NewsrcGroup *group)
-{
- int i;
- int count = 0;
-
- if (group == NULL)
- return 0;
-
- for (i = 0; i < group->ranges->len; i ++)
- count += (g_array_index(group->ranges, ArticleRange, i).high -
- g_array_index(group->ranges, ArticleRange, i).low) + 1;
-
- return count;
-}
-
-
-static void
-camel_nntp_newsrc_group_mark_range_read(CamelNNTPNewsrc *newsrc, NewsrcGroup *group, long low, long high)
-{
- int i;
-
- if (group->ranges->len == 1
- && g_array_index (group->ranges, ArticleRange, 0).low == 0
- && g_array_index (group->ranges, ArticleRange, 0).high == 0) {
- g_array_index (group->ranges, ArticleRange, 0).low = low;
- g_array_index (group->ranges, ArticleRange, 0).high = high;
-
- newsrc->dirty = TRUE;
- }
- else {
- ArticleRange tmp_range;
-
- for (i = 0; i < group->ranges->len; i ++) {
- guint range_low = g_array_index (group->ranges, ArticleRange, i).low;
- guint range_high = g_array_index (group->ranges, ArticleRange, i).high;
-
- /* if it's already part of a range, return immediately. */
- if (low >= range_low &&
- low <= range_high &&
- high >= range_low &&
- high <= range_high) {
- return;
- }
- /* if we have a new lower bound for this range, set it. */
- else if (low <= range_low
- && high >= range_low
- && high <= range_high) {
- g_array_index (group->ranges, ArticleRange, i).low = low;
- newsrc->dirty = TRUE;
- return;
- }
- /* if we have a new upper bound for this range, set it. */
- else if (high >= range_high
- && low >= range_low
- && low <= range_high) {
- g_array_index (group->ranges, ArticleRange, i).high = high;
- newsrc->dirty = TRUE;
- return;
- }
- /* if we would be inserting another range that
- starts one index higher than an existing
- one, make the upper value of the existing
- range the upper value of the new one. */
- else if (low == range_high + 1) {
- g_array_index (group->ranges, ArticleRange, i).high = high;
- newsrc->dirty = TRUE;
- return;
- }
- /* if we would be inserting another range that
- ends one index lower than an existing one,
- group the existing range by setting its low
- to the new low */
- else if (high == range_low - 1) {
- g_array_index (group->ranges, ArticleRange, i).low = low;
- newsrc->dirty = TRUE;
- return;
- }
- /* if the range lies entirely outside another
- range, doesn't coincide with it's
- endpoints, and has lower values, insert it
- into the middle of the list. */
- else if (low < range_low
- && high < range_low) {
- tmp_range.low = low;
- tmp_range.high = high;
-
- group->ranges = g_array_insert_val (group->ranges, i, tmp_range);
- newsrc->dirty = TRUE;
-
- return;
- }
- }
-
- /* if we made it here, the range needs to go at the end */
- tmp_range.low = low;
- tmp_range.high = high;
- group->ranges = g_array_append_val (group->ranges, tmp_range);
- newsrc->dirty = TRUE;
- }
-}
-
-int
-camel_nntp_newsrc_get_highest_article_read (CamelNNTPNewsrc *newsrc, const char *group_name)
-{
- NewsrcGroup *group;
- int ret;
-
- NEWSRC_LOCK(newsrc, lock);
-
- group = g_hash_table_lookup (newsrc->groups, group_name);
- ret = camel_nntp_newsrc_group_get_highest_article_read (newsrc, group);
-
- NEWSRC_UNLOCK(newsrc, lock);
-
- return ret;
-}
-
-int
-camel_nntp_newsrc_get_num_articles_read (CamelNNTPNewsrc *newsrc, const char *group_name)
-{
- NewsrcGroup *group;
- int ret;
-
- NEWSRC_LOCK(newsrc, lock);
-
- group = g_hash_table_lookup (newsrc->groups, group_name);
- ret = camel_nntp_newsrc_group_get_num_articles_read (newsrc, group);
-
- NEWSRC_UNLOCK(newsrc, lock);
-
- return ret;
-}
-
-void
-camel_nntp_newsrc_mark_article_read (CamelNNTPNewsrc *newsrc, const char *group_name, int num)
-{
- NEWSRC_LOCK(newsrc, lock);
- camel_nntp_newsrc_mark_range_read (newsrc, group_name, num, num);
- NEWSRC_UNLOCK(newsrc, lock);
-}
-
-void
-camel_nntp_newsrc_mark_range_read(CamelNNTPNewsrc *newsrc, const char *group_name, long low, long high)
-{
- NewsrcGroup *group;
-
- /* swap them if they're in the wrong order. */
- if (low > high) {
- long tmp;
-
- tmp = high;
- high = low;
- low = tmp;
- }
-
- NEWSRC_LOCK(newsrc, lock);
- group = g_hash_table_lookup (newsrc->groups, group_name);
-
- camel_nntp_newsrc_group_mark_range_read (newsrc, group, low, high);
- NEWSRC_UNLOCK(newsrc, lock);
-}
-
-gboolean
-camel_nntp_newsrc_article_is_read (CamelNNTPNewsrc *newsrc, const char *group_name, long num)
-{
- int i;
- NewsrcGroup *group;
- int ret = FALSE;
-
- NEWSRC_LOCK(newsrc, lock);
- group = g_hash_table_lookup (newsrc->groups, group_name);
-
- for (i = 0; i < group->ranges->len; i++) {
- if (num >= g_array_index (group->ranges, ArticleRange, i).low &&
- num <= g_array_index (group->ranges, ArticleRange, i).high) {
- ret = TRUE;
- break;
- }
- }
-
- NEWSRC_UNLOCK(newsrc, lock);
-
- return FALSE;
-}
-
-gboolean
-camel_nntp_newsrc_group_is_subscribed (CamelNNTPNewsrc *newsrc, const char *group_name)
-{
- NewsrcGroup *group;
- int ret = FALSE;
-
- NEWSRC_LOCK(newsrc, lock);
-
- group = g_hash_table_lookup (newsrc->groups, group_name);
-
- if (group) {
- ret = group->subscribed;
- }
-
- NEWSRC_UNLOCK(newsrc, lock);
-
- return ret;
-}
-
-void
-camel_nntp_newsrc_subscribe_group (CamelNNTPNewsrc *newsrc, const char *group_name)
-{
- NewsrcGroup *group;
-
- NEWSRC_LOCK(newsrc, lock);
-
- group = g_hash_table_lookup (newsrc->groups, group_name);
-
- if (group) {
- if (!group->subscribed)
- newsrc->dirty = TRUE;
- group->subscribed = TRUE;
- }
- else {
- camel_nntp_newsrc_group_add (newsrc, group_name, TRUE);
- }
-
- NEWSRC_UNLOCK(newsrc, lock);
-}
-
-void
-camel_nntp_newsrc_unsubscribe_group (CamelNNTPNewsrc *newsrc, const char *group_name)
-{
- NewsrcGroup *group;
-
- NEWSRC_LOCK(newsrc, lock);
-
- group = g_hash_table_lookup (newsrc->groups, group_name);
- if (group) {
- if (group->subscribed)
- newsrc->dirty = TRUE;
- group->subscribed = FALSE;
- }
- else {
- camel_nntp_newsrc_group_add (newsrc, group_name, FALSE);
- }
-
- NEWSRC_UNLOCK(newsrc, lock);
-}
-
-struct newsrc_ptr_array {
- GPtrArray *ptr_array;
- gboolean subscribed_only;
-};
-
-/* this needs to strdup the grup_name, if the group array is likely to change */
-static void
-get_group_foreach (char *group_name, NewsrcGroup *group, struct newsrc_ptr_array *npa)
-{
- if (group->subscribed || !npa->subscribed_only) {
- g_ptr_array_add (npa->ptr_array, group_name);
- }
-}
-
-GPtrArray *
-camel_nntp_newsrc_get_subscribed_group_names (CamelNNTPNewsrc *newsrc)
-{
- struct newsrc_ptr_array npa;
-
- g_return_val_if_fail (newsrc, NULL);
-
- NEWSRC_LOCK(newsrc, lock);
-
- npa.ptr_array = g_ptr_array_new();
- npa.subscribed_only = TRUE;
-
- g_hash_table_foreach (newsrc->groups,
- (GHFunc)get_group_foreach, &npa);
-
- NEWSRC_UNLOCK(newsrc, lock);
-
- return npa.ptr_array;
-}
-
-GPtrArray *
-camel_nntp_newsrc_get_all_group_names (CamelNNTPNewsrc *newsrc)
-{
- struct newsrc_ptr_array npa;
-
- g_return_val_if_fail (newsrc, NULL);
-
- NEWSRC_LOCK(newsrc, lock);
-
- npa.ptr_array = g_ptr_array_new();
- npa.subscribed_only = FALSE;
-
- g_hash_table_foreach (newsrc->groups,
- (GHFunc)get_group_foreach, &npa);
-
- NEWSRC_UNLOCK(newsrc, lock);
-
- return npa.ptr_array;
-}
-
-void
-camel_nntp_newsrc_free_group_names (CamelNNTPNewsrc *newsrc, GPtrArray *group_names)
-{
- g_ptr_array_free (group_names, TRUE);
-}
-
-struct newsrc_fp {
- CamelNNTPNewsrc *newsrc;
- FILE *fp;
-};
-
-static void
-camel_nntp_newsrc_write_group_line(gpointer key, NewsrcGroup *group, struct newsrc_fp *newsrc_fp)
-{
- CamelNNTPNewsrc *newsrc;
- FILE *fp;
- int i;
-
- fp = newsrc_fp->fp;
- newsrc = newsrc_fp->newsrc;
-
- fprintf (fp, "%s%c", group->name, group->subscribed ? ':' : '!');
-
- if (group->ranges->len == 1
- && g_array_index (group->ranges, ArticleRange, 0).low == 0
- && g_array_index (group->ranges, ArticleRange, 0).high == 0) {
- fprintf (fp, "\n");
-
- return; /* special case since our parsing code will insert this
- bogus range if there were no read articles. The code
- to add a range is smart enough to remove this one if we
- ever mark an article read, but we still need to deal with
- it if that code doesn't get hit. */
- }
-
- fprintf (fp, " ");
-
- for (i = 0; i < group->ranges->len; i ++) {
- char range_buffer[100];
- guint low = g_array_index (group->ranges, ArticleRange, i).low;
- guint high = g_array_index (group->ranges, ArticleRange, i).high;
-
- if (low == high)
- sprintf(range_buffer, "%d", low);
- else if (low == high - 1)
- sprintf(range_buffer, "%d,%d", low, high);
- else
- sprintf(range_buffer, "%d-%d", low, high);
-
- if (i != group->ranges->len - 1)
- strcat(range_buffer, ",");
-
- fprintf (fp, range_buffer);
- }
-
- fprintf (fp, "\n");
-}
-
-void
-camel_nntp_newsrc_write_to_file(CamelNNTPNewsrc *newsrc, FILE *fp)
-{
- struct newsrc_fp newsrc_fp;
-
- g_return_if_fail (newsrc);
-
- newsrc_fp.newsrc = newsrc;
- newsrc_fp.fp = fp;
-
- NEWSRC_LOCK(newsrc, lock);
-
- g_hash_table_foreach (newsrc->groups,
- (GHFunc)camel_nntp_newsrc_write_group_line,
- &newsrc_fp);
-
- NEWSRC_UNLOCK(newsrc, lock);
-}
-
-void
-camel_nntp_newsrc_write(CamelNNTPNewsrc *newsrc)
-{
- FILE *fp;
-
- g_return_if_fail (newsrc);
-
- NEWSRC_LOCK(newsrc, lock);
-
- if (!newsrc->dirty)
- return;
-
- if ((fp = fopen(newsrc->filename, "w")) == NULL) {
- g_warning ("Couldn't open newsrc file '%s'.\n", newsrc->filename);
- NEWSRC_UNLOCK(newsrc, lock);
- return;
- }
-
- newsrc->dirty = FALSE;
- NEWSRC_UNLOCK(newsrc, lock);
-
- camel_nntp_newsrc_write_to_file(newsrc, fp);
-
- fclose(fp);
-}
-
-static void
-camel_nntp_newsrc_parse_line(CamelNNTPNewsrc *newsrc, char *line)
-{
- char *p, *comma, *dash;
- gboolean is_subscribed;
- NewsrcGroup *group;
-
- p = strchr(line, ':');
-
- if (p) {
- is_subscribed = TRUE;
- }
- else {
- p = strchr(line, '!');
- if (p)
- is_subscribed = FALSE;
- else
- return; /* bogus line. */
- }
-
- *p++ = '\0';
-
- group = camel_nntp_newsrc_group_add (newsrc, line, is_subscribed);
-
- do {
- guint high, low;
-
- comma = strchr(p, ',');
-
- if (comma)
- *comma = '\0';
-
- dash = strchr(p, '-');
-
- if (!dash) { /* there wasn't a dash. must be just one number */
- high = low = atol(p);
- }
- else { /* there was a dash. */
- *dash = '\0';
- low = atol(p);
- *dash = '-';
- p = dash + 1;
- high = atol(p);
- }
-
- camel_nntp_newsrc_group_mark_range_read (newsrc, group, low, high);
-
- if (comma) {
- *comma = ',';
- p = comma + 1;
- }
-
- } while(comma);
-}
-
-static char*
-get_line (char *buf, char **p)
-{
- char *l;
- char *line;
-
- g_assert (*p == NULL || **p == '\n' || **p == '\0');
-
- if (*p == NULL) {
- *p = buf;
-
- if (**p == '\0')
- return NULL;
- }
- else {
- if (**p == '\0')
- return NULL;
-
- (*p) ++;
-
- /* if we just incremented to the end of the buffer, return NULL */
- if (**p == '\0')
- return NULL;
- }
-
- l = strchr (*p, '\n');
- if (l) {
- *l = '\0';
- line = g_strdup (*p);
- *l = '\n';
- *p = l;
- }
- else {
- /* we're at the last line (which isn't terminated by a \n, btw) */
- line = g_strdup (*p);
- (*p) += strlen (*p);
- }
-
- return line;
-}
-
-CamelNNTPNewsrc *
-camel_nntp_newsrc_read_for_server (const char *server)
-{
- int fd;
- char buf[1024];
- char *file_contents, *line, *p;
- char *filename;
- CamelNNTPNewsrc *newsrc;
- int newsrc_len;
- int len_read = 0;
- struct stat sb;
-
- filename = g_strdup_printf ("%s/.newsrc-%s", g_get_home_dir(), server);
-
- newsrc = g_new0(CamelNNTPNewsrc, 1);
- newsrc->filename = filename;
- newsrc->groups = g_hash_table_new (g_str_hash, g_str_equal);
-#ifdef ENABLE_THREADS
- newsrc->lock = g_mutex_new();
-#endif
-
- if ((fd = open(filename, O_RDONLY)) == -1) {
- g_warning ("~/.newsrc-%s not present.\n", server);
- return newsrc;
- }
-
- if (fstat (fd, &sb) == -1) {
- g_warning ("failed fstat on ~/.newsrc-%s: %s\n", server, strerror(errno));
- return newsrc;
- }
- newsrc_len = sb.st_size;
-
- file_contents = g_malloc (newsrc_len + 1);
-
- while (len_read < newsrc_len) {
- int c = read (fd, buf, sizeof (buf));
-
- if (c == -1)
- break;
-
- memcpy (&file_contents[len_read], buf, c);
- len_read += c;
- }
- file_contents [len_read] = 0;
-
- p = NULL;
- while ((line = get_line (file_contents, &p))) {
- camel_nntp_newsrc_parse_line(newsrc, line);
- g_free (line);
- }
-
- close (fd);
- g_free (file_contents);
-
- return newsrc;
-}
diff --git a/camel/providers/nntp/camel-nntp-newsrc.h b/camel/providers/nntp/camel-nntp-newsrc.h
deleted file mode 100644
index 652e3edbce..0000000000
--- a/camel/providers/nntp/camel-nntp-newsrc.h
+++ /dev/null
@@ -1,34 +0,0 @@
-
-#ifndef _CAMEL_NNTP_NEWSRC_H_
-#define _CAMEL_NNTP_NEWSRC_H_
-
-#include <stdio.h>
-#include "glib.h"
-
-typedef struct CamelNNTPNewsrc CamelNNTPNewsrc;
-
-int camel_nntp_newsrc_get_highest_article_read (CamelNNTPNewsrc *newsrc, const char *group_name);
-int camel_nntp_newsrc_get_num_articles_read (CamelNNTPNewsrc *newsrc, const char *group_name);
-void camel_nntp_newsrc_mark_article_read (CamelNNTPNewsrc *newsrc,
- const char *group_name, int num);
-void camel_nntp_newsrc_mark_range_read (CamelNNTPNewsrc *newsrc,
- const char *group_name, long low, long high);
-
-gboolean camel_nntp_newsrc_article_is_read (CamelNNTPNewsrc *newsrc,
- const char *group_name, long num);
-
-gboolean camel_nntp_newsrc_group_is_subscribed (CamelNNTPNewsrc *newsrc, const char *group_name);
-void camel_nntp_newsrc_subscribe_group (CamelNNTPNewsrc *newsrc, const char *group_name);
-void camel_nntp_newsrc_unsubscribe_group (CamelNNTPNewsrc *newsrc, const char *group_name);
-
-GPtrArray* camel_nntp_newsrc_get_subscribed_group_names (CamelNNTPNewsrc *newsrc);
-GPtrArray* camel_nntp_newsrc_get_all_group_names (CamelNNTPNewsrc *newsrc);
-void camel_nntp_newsrc_free_group_names (CamelNNTPNewsrc *newsrc, GPtrArray *group_names);
-
-void camel_nntp_newsrc_write_to_file (CamelNNTPNewsrc *newsrc, FILE *fp);
-void camel_nntp_newsrc_write (CamelNNTPNewsrc *newsrc);
-CamelNNTPNewsrc *camel_nntp_newsrc_read_for_server (const char *server);
-
-#endif /* _CAMEL_NNTP_NEWSRC_H_ */
-
-
diff --git a/camel/providers/nntp/camel-nntp-provider.c b/camel/providers/nntp/camel-nntp-provider.c
deleted file mode 100644
index 07857c173c..0000000000
--- a/camel/providers/nntp/camel-nntp-provider.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-nntp-provider.c: nntp provider registration code */
-
-/*
- * Authors :
- * Chris Toshok <toshok@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include "camel-nntp-store.h"
-#include "camel-provider.h"
-#include "camel-session.h"
-
-static void add_hash (guint *hash, char *s);
-static guint nntp_url_hash (gconstpointer key);
-static gint check_equal (char *s1, char *s2);
-static gint nntp_url_equal (gconstpointer a, gconstpointer b);
-
-static CamelProvider news_provider = {
- "nntp",
- N_("USENET news"),
-
- N_("This is a provider for reading from and posting to"
- "USENET newsgroups."),
-
- "news",
-
- CAMEL_PROVIDER_IS_REMOTE | CAMEL_PROVIDER_IS_STORAGE,
-
- CAMEL_URL_NEED_HOST | CAMEL_URL_ALLOW_USER |
- CAMEL_URL_ALLOW_PASSWORD | CAMEL_URL_ALLOW_AUTH,
-
- /* ... */
-};
-
-void
-camel_provider_module_init (CamelSession *session)
-{
- news_provider.object_types[CAMEL_PROVIDER_STORE] =
- camel_nntp_store_get_type();
-
- news_provider.service_cache = g_hash_table_new (nntp_url_hash, nntp_url_equal);
-
- camel_session_register_provider (session, &news_provider);
-}
-
-static void
-add_hash (guint *hash, char *s)
-{
- if (s)
- *hash ^= g_str_hash(s);
-}
-
-static guint
-nntp_url_hash (gconstpointer key)
-{
- const CamelURL *u = (CamelURL *)key;
- guint hash = 0;
-
- add_hash (&hash, u->user);
- add_hash (&hash, u->host);
- hash ^= u->port;
-
- return hash;
-}
-
-static gint
-check_equal (char *s1, char *s2)
-{
- if (s1 == NULL) {
- if (s2 == NULL)
- return TRUE;
- else
- return FALSE;
- }
-
- if (s2 == NULL)
- return FALSE;
-
- return strcmp (s1, s2) == 0;
-}
-
-static gint
-nntp_url_equal (gconstpointer a, gconstpointer b)
-{
- const CamelURL *u1 = a, *u2 = b;
-
- return check_equal (u1->user, u2->user)
- && check_equal (u1->host, u2->host)
- && u1->port == u2->port;
-}
diff --git a/camel/providers/nntp/camel-nntp-resp-codes.h b/camel/providers/nntp/camel-nntp-resp-codes.h
deleted file mode 100644
index 8b9dc8ff6c..0000000000
--- a/camel/providers/nntp/camel-nntp-resp-codes.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-nntp-resp-codes.h : #defines for all the response codes we care about */
-
-/*
- *
- * Copyright (C) 2000 Helix Code, Inc. <toshok@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_NNTP_RESP_CODES_H
-#define CAMEL_NNTP_RESP_CODES_H 1
-
-#define CAMEL_NNTP_OK(x) ((x) < 400)
-#define CAMEL_NNTP_ERR(x) (!CAMEL_NNTP_OK(x) && (x) < 500)
-#define CAMEL_NNTP_FAIL(x) (!CAMEL_NNTP_OK(x) && !CAMEL_NNTP_ERR(x))
-
-#define NNTP_GREETING_POSTING_OK 200
-#define NNTP_GREETING_NO_POSTING 201
-
-#define NNTP_GROUP_SELECTED 211
-#define NNTP_LIST_FOLLOWS 215
-#define NNTP_ARTICLE_FOLLOWS 220
-#define NNTP_HEAD_FOLLOWS 221
-#define NNTP_DATA_FOLLOWS 224
-#define NNTP_NEW_ARTICLE_LIST_FOLLOWS 230
-#define NNTP_NEW_GROUP_LIST_FOLLOWS 231
-
-#define NNTP_NO_SUCH_GROUP 411
-#define NNTP_NO_SUCH_ARTICLE 430
-
-/* authentication */
-#define NNTP_AUTH_ACCEPTED 281
-#define NNTP_AUTH_CONTINUE 381
-#define NNTP_AUTH_REQUIRED 480
-#define NNTP_AUTH_REJECTED 482
-
-#define NNTP_PROTOCOL_ERROR 666
-
-#endif /* CAMEL_NNTP_RESP_CODES_H */
diff --git a/camel/providers/nntp/camel-nntp-store.c b/camel/providers/nntp/camel-nntp-store.c
deleted file mode 100644
index 494e11f647..0000000000
--- a/camel/providers/nntp/camel-nntp-store.c
+++ /dev/null
@@ -1,850 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-nntp-store.c : class for an nntp store */
-
-/*
- *
- * Copyright (C) 2000 Helix Code, Inc. <toshok@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#include <config.h>
-
-#include <dirent.h>
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "libgnome/libgnome.h"
-
-#include "camel-nntp-resp-codes.h"
-#include "camel-folder-summary.h"
-#include "camel-nntp-store.h"
-#include "camel-nntp-grouplist.h"
-#include "camel-nntp-folder.h"
-#include "camel-nntp-auth.h"
-#include "camel-exception.h"
-#include "camel-url.h"
-#include "string-utils.h"
-
-#define NNTP_PORT 119
-
-#define DUMP_EXTENSIONS
-
-/* define if you want the subscribe ui to show folders in tree form */
-/* #define INFO_AS_TREE */
-
-static CamelRemoteStoreClass *remote_store_class = NULL;
-
-static CamelServiceClass *service_class = NULL;
-
-/* Returns the class for a CamelNNTPStore */
-#define CNNTPS_CLASS(so) CAMEL_NNTP_STORE_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-#define CF_CLASS(so) CAMEL_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-#define CNNTPF_CLASS(so) CAMEL_NNTP_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(so))
-
-static gboolean ensure_news_dir_exists (CamelNNTPStore *store);
-
-static void
-camel_nntp_store_get_extensions (CamelNNTPStore *store, CamelException *ex)
-{
- store->extensions = 0;
-
- if (camel_nntp_command (store, ex, NULL, "LIST EXTENSIONS") == NNTP_LIST_FOLLOWS) {
- gboolean done = FALSE;
- CamelException ex;
-
- camel_exception_init (&ex);
-
- while (!done) {
- char *line;
-
- if (camel_remote_store_recv_line (CAMEL_REMOTE_STORE (store), &line, &ex) < 0)
- break; /* XXX */
-
- if (*line == '.') {
- done = TRUE;
- }
- else {
-#define CHECK_EXT(name,val) if (!strcasecmp (line, (name))) store->extensions |= (val)
-
- CHECK_EXT ("SEARCH", CAMEL_NNTP_EXT_SEARCH);
- CHECK_EXT ("SETGET", CAMEL_NNTP_EXT_SETGET);
- CHECK_EXT ("OVER", CAMEL_NNTP_EXT_OVER);
- CHECK_EXT ("XPATTEXT", CAMEL_NNTP_EXT_XPATTEXT);
- CHECK_EXT ("XACTIVE", CAMEL_NNTP_EXT_XACTIVE);
- CHECK_EXT ("LISTMOTD", CAMEL_NNTP_EXT_LISTMOTD);
- CHECK_EXT ("LISTSUBSCR", CAMEL_NNTP_EXT_LISTSUBSCR);
- CHECK_EXT ("LISTPNAMES", CAMEL_NNTP_EXT_LISTPNAMES);
-
-#undef CHECK_EXT
- }
-
- g_free (line);
- }
- }
-
-#ifdef DUMP_EXTENSIONS
- g_print ("NNTP Extensions:");
-#define DUMP_EXT(name,val) if (store->extensions & (val)) g_print (" %s", name);
- DUMP_EXT ("SEARCH", CAMEL_NNTP_EXT_SEARCH);
- DUMP_EXT ("SETGET", CAMEL_NNTP_EXT_SETGET);
- DUMP_EXT ("OVER", CAMEL_NNTP_EXT_OVER);
- DUMP_EXT ("XPATTEXT", CAMEL_NNTP_EXT_XPATTEXT);
- DUMP_EXT ("XACTIVE", CAMEL_NNTP_EXT_XACTIVE);
- DUMP_EXT ("LISTMOTD", CAMEL_NNTP_EXT_LISTMOTD);
- DUMP_EXT ("LISTSUBSCR", CAMEL_NNTP_EXT_LISTSUBSCR);
- DUMP_EXT ("LISTPNAMES", CAMEL_NNTP_EXT_LISTPNAMES);
- g_print ("\n");
-#undef DUMP_EXT
-#endif
-}
-
-static void
-camel_nntp_store_get_overview_fmt (CamelNNTPStore *store, CamelException *ex)
-{
- int status;
- int i;
- gboolean done = FALSE;
-
- status = camel_nntp_command (store, ex, NULL,
- "LIST OVERVIEW.FMT");
-
- if (status != NNTP_LIST_FOLLOWS) {
- if (store->extensions & CAMEL_NNTP_EXT_OVER) {
- /* if we can't get the overview format, we should
- disable OVER support */
- g_warning ("server reported support of OVER but LIST OVERVIEW.FMT failed."
- " disabling OVER.\n");
- store->extensions &= ~CAMEL_NNTP_EXT_OVER;
- return;
- }
- }
- else {
- if (!(store->extensions & CAMEL_NNTP_EXT_OVER)) {
- g_warning ("server didn't report support of OVER but LIST OVERVIEW.FMT worked."
- " enabling OVER.\n");
- store->extensions |= CAMEL_NNTP_EXT_OVER;
- }
- }
-
- /* start at 1 because the article number is always first */
- store->num_overview_fields = 1;
-
- for (i = 0; i < CAMEL_NNTP_OVER_LAST; i ++) {
- store->overview_field [i].index = -1;
- }
-
- while (!done) {
- char *line;
-
- if (camel_remote_store_recv_line (CAMEL_REMOTE_STORE (store), &line, ex) < 0)
- break; /* XXX */
-
- if (*line == '.') {
- done = TRUE;
- }
- else {
- CamelNNTPOverField *over_field = NULL;
- char *colon = NULL;;
-
- if (!strncasecmp (line, "From:", 5)) {
- over_field = &store->overview_field [ CAMEL_NNTP_OVER_FROM ];
- over_field->index = store->num_overview_fields;
- colon = line + 5;
- }
- else if (!strncasecmp (line, "Subject:", 7)) {
- over_field = &store->overview_field [ CAMEL_NNTP_OVER_SUBJECT ];
- over_field->index = store->num_overview_fields;
- colon = line + 7;
- }
- else if (!strncasecmp (line, "Date:", 5)) {
- over_field = &store->overview_field [ CAMEL_NNTP_OVER_DATE ];
- over_field->index = store->num_overview_fields;
- colon = line + 5;
- }
- else if (!strncasecmp (line, "Message-ID:", 11)) {
- over_field = &store->overview_field [ CAMEL_NNTP_OVER_MESSAGE_ID ];
- over_field->index = store->num_overview_fields;
- colon = line + 11;
- }
- else if (!strncasecmp (line, "References:", 11)) {
- over_field = &store->overview_field [ CAMEL_NNTP_OVER_REFERENCES ];
- over_field->index = store->num_overview_fields;
- colon = line + 11;
- }
- else if (!strncasecmp (line, "Bytes:", 6)) {
- over_field = &store->overview_field [ CAMEL_NNTP_OVER_BYTES ];
- over_field->index = store->num_overview_fields;
- colon = line + 11;
- }
-
- if (colon && !strncmp (colon + 1, "full", 4))
- over_field->full = TRUE;
-
- store->num_overview_fields ++;
- }
-
- g_free (line);
- }
-
- for (i = 0; i < CAMEL_NNTP_OVER_LAST; i ++) {
- if (store->overview_field [i].index == -1) {
- g_warning ("server's OVERVIEW.FMT doesn't support minimum set we require,"
- " disabling OVER support.\n");
- store->extensions &= ~CAMEL_NNTP_EXT_OVER;
- }
- }
-}
-
-static gboolean
-nntp_store_connect (CamelService *service, CamelException *ex)
-{
- char *buf;
- int resp_code;
- CamelNNTPStore *store = CAMEL_NNTP_STORE (service);
-
- if (!ensure_news_dir_exists(store)) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not open directory for news server: %s"),
- strerror (errno));
- return FALSE;
- }
-
- if (CAMEL_SERVICE_CLASS (remote_store_class)->connect (service, ex) == FALSE)
- return FALSE;
-
- /* Read the greeting */
- if (camel_remote_store_recv_line (CAMEL_REMOTE_STORE (service), &buf, ex) < 0) {
- return FALSE;
- }
-
- /* check if posting is allowed. */
- resp_code = atoi (buf);
- if (resp_code == NNTP_GREETING_POSTING_OK) {
- g_print ("posting allowed\n");
- store->posting_allowed = TRUE;
- }
- else if (resp_code == NNTP_GREETING_NO_POSTING) {
- g_print ("no posting allowed\n");
- store->posting_allowed = FALSE;
- }
- else {
- g_warning ("unexpected server greeting code %d, no posting allowed\n", resp_code);
- store->posting_allowed = FALSE;
- }
-
- g_free (buf);
-
- /* get a list of extensions that the server supports */
- camel_nntp_store_get_extensions (store, ex);
-
- /* try to get the overview.fmt */
- camel_nntp_store_get_overview_fmt (store, ex);
-
- return TRUE;
-}
-
-static gboolean
-nntp_store_disconnect (CamelService *service, gboolean clean, CamelException *ex)
-{
- CamelNNTPStore *store = CAMEL_NNTP_STORE (service);
-
- if (clean)
- camel_nntp_command (store, ex, NULL, "QUIT");
-
- if (store->newsrc)
- camel_nntp_newsrc_write (store->newsrc);
-
- if (!service_class->disconnect (service, clean, ex))
- return FALSE;
-
- return TRUE;
-}
-
-static char *
-nntp_store_get_name (CamelService *service, gboolean brief)
-{
- if (brief)
- return g_strdup_printf ("%s", service->url->host);
- else
- return g_strdup_printf (_("USENET News via %s"), service->url->host);
-
-}
-
-static CamelServiceAuthType password_authtype = {
- N_("Password"),
-
- N_("This option will authenticate with the NNTP server using a "
- "plaintext password."),
-
- "",
- TRUE
-};
-
-static GList *
-nntp_store_query_auth_types (CamelService *service, gboolean connect, CamelException *ex)
-{
- GList *prev;
-
- g_warning ("nntp::query_auth_types: not implemented. Defaulting.");
- prev = CAMEL_SERVICE_CLASS (remote_store_class)->query_auth_types (service, ex);
- return g_list_prepend (prev, &password_authtype);
-}
-
-static CamelFolder *
-nntp_store_get_folder (CamelStore *store, const gchar *folder_name,
- guint32 flags, CamelException *ex)
-{
- CamelNNTPStore *nntp_store = CAMEL_NNTP_STORE (store);
-
- printf ("get_folder called on folder_name=%s\n", folder_name);
-
- /* if we haven't already read our .newsrc, read it now */
- if (!nntp_store->newsrc)
- nntp_store->newsrc =
- camel_nntp_newsrc_read_for_server (CAMEL_SERVICE(store)->url->host);
-
- if (!nntp_store->newsrc) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("Unable to open or create .newsrc file for %s: %s"),
- CAMEL_SERVICE(store)->url->host,
- strerror(errno));
- return NULL;
- }
-
- return camel_nntp_folder_new (store, folder_name, ex);
-}
-
-#ifdef INFO_AS_TREE
-static void
-build_folder_info (CamelNNTPStore *nntp_store, CamelFolderInfo **root,
- CamelFolderInfo *parent, CamelNNTPGroupListEntry *entry,
- char *prefix, char *suffix,
- GHashTable *name_to_info)
-{
- CamelURL *url = CAMEL_SERVICE (nntp_store)->url;
- char *dot;
- if ((dot = strchr (suffix, '.'))) {
- /* it's an internal node, figure out the next node in
- the chain */
- CamelFolderInfo *node;
- char *node_name, *node_full_name;
-
- node_name = g_malloc0 (dot - suffix + 1);
- strncpy (node_name, suffix, dot - suffix);
- node_full_name = g_strdup_printf ("%s.%s", prefix, node_name);
-
- node = g_hash_table_lookup (name_to_info, node_full_name);
- if (!node) {
- /* we need to add one */
- node = g_new0 (CamelFolderInfo, 1);
- node->name = g_strdup (node_name);
- node->full_name = g_strdup (node_full_name);
- node->url = NULL;
- node->unread_message_count = -1;
-
- if (parent) {
- if (parent->child) {
- node->sibling = parent->child;
- parent->child = node;
- }
- else {
- parent->child = node;
- }
- }
- else {
- if (*root) {
- *root = node;
- }
- else {
- node->sibling = *root;
- *root = node;
- }
- }
-
- g_hash_table_insert (name_to_info, node_full_name, node);
- }
-
- build_folder_info (nntp_store, root, node, entry, node_full_name, dot + 1, name_to_info);
- }
- else {
- /* it's a leaf node, make the CamelFolderInfo and
- append it to @parent's list of children. */
- CamelFolderInfo *new_group;
-
- new_group = g_new0 (CamelFolderInfo, 1);
- new_group->name = g_strdup (entry->group_name);
- new_group->full_name = g_strdup (entry->group_name);
- new_group->url = g_strdup_printf ("nntp://%s%s%s/%s",
- url->user ? url->user : "",
- url->user ? "@" : "",
- url->host, (char *)entry->group_name);
-
- new_group->unread_message_count = (entry->high - entry->low -
- camel_nntp_newsrc_get_num_articles_read (nntp_store->newsrc, entry->group_name));
-
- if (parent) {
- if (parent->child) {
- new_group->sibling = parent->child;
- parent->child = new_group;
- }
- else {
- parent->child = new_group;
- }
- }
- else {
- if (*root) {
- *root = new_group;
- }
- else {
- new_group->sibling = *root;
- *root = new_group;
- }
- }
- }
-}
-#endif
-
-static CamelFolderInfo *
-build_folder_info_from_grouplist (CamelNNTPStore *nntp_store, const char *top)
-{
- GList *g;
- CamelFolderInfo *groups = NULL;
-#ifdef INFO_AS_TREE
- GHashTable *hash = g_hash_table_new (g_str_hash, g_str_equal);
-#else
- CamelFolderInfo *last = NULL, *fi;
- CamelURL *url = CAMEL_SERVICE (nntp_store)->url;
-#endif
-
- for (g = nntp_store->group_list->group_list; g; g = g_list_next (g)) {
- CamelNNTPGroupListEntry *entry = g->data;
-
- if (!top || !strncmp (top, entry->group_name, strlen (top))) {
-#ifdef INFO_AS_TREE
- build_folder_info (nntp_store, &groups, NULL, entry,
- "", entry->group_name, hash);
-#else
-
- fi = g_new0 (CamelFolderInfo, 1);
- fi->name = g_strdup (entry->group_name);
- fi->full_name = g_strdup (entry->group_name);
- fi->url = g_strdup_printf ("nntp://%s%s%s/%s",
- url->user ? url->user : "",
- url->user ? "@" : "",
- url->host, (char *)entry->group_name);
-
- fi->unread_message_count = (entry->high - entry->low -
- camel_nntp_newsrc_get_num_articles_read (
- nntp_store->newsrc, entry->group_name));
-
- if (last)
- last->sibling = fi;
- else
- groups = fi;
- last = fi;
-#endif
- }
- }
-
- return groups;
-}
-
-static CamelFolderInfo *
-nntp_store_get_folder_info (CamelStore *store, const char *top,
- gboolean fast, gboolean recursive,
- gboolean subscribed_only,
- CamelException *ex)
-{
- CamelURL *url = CAMEL_SERVICE (store)->url;
- CamelNNTPStore *nntp_store = (CamelNNTPStore *)store;
- GPtrArray *names;
- CamelFolderInfo *groups = NULL, *last = NULL, *fi;
- int i;
-
- /* if we haven't already read our .newsrc, read it now */
- if (!nntp_store->newsrc)
- nntp_store->newsrc =
- camel_nntp_newsrc_read_for_server (CAMEL_SERVICE(store)->url->host);
-
- if (!nntp_store->newsrc) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("Unable to open or create .newsrc file for %s: %s"),
- CAMEL_SERVICE(store)->url->host,
- strerror(errno));
- return NULL;
- }
-
- if (!subscribed_only) {
- if (!nntp_store->group_list)
- nntp_store->group_list = camel_nntp_grouplist_fetch (nntp_store, ex);
- if (camel_exception_is_set (ex)) {
- return NULL;
- }
- else {
- fi = build_folder_info_from_grouplist (nntp_store, top);
- return fi;
- }
- }
-
- if (top == NULL) {
- /* return the list of groups */
- names = camel_nntp_newsrc_get_subscribed_group_names (nntp_store->newsrc);
- for (i = 0; i < names->len; i++) {
- fi = g_new0 (CamelFolderInfo, 1);
- fi->name = g_strdup (names->pdata[i]);
- fi->full_name = g_strdup (names->pdata[i]);
- fi->url = g_strdup_printf ("nntp://%s%s%s/%s",
- url->user ? url->user : "",
- url->user ? "@" : "",
- url->host, (char *)names->pdata[i]);
- /* FIXME */
- fi->unread_message_count = -1;
-
- if (last)
- last->sibling = fi;
- else
- groups = fi;
- last = fi;
- }
- camel_nntp_newsrc_free_group_names (nntp_store->newsrc, names);
-
- return groups;
- }
- else {
- /* getting a specific group */
-
- fi = g_new0 (CamelFolderInfo, 1);
- fi->name = g_strdup (top);
- fi->full_name = g_strdup (top);
- fi->url = g_strdup_printf ("nntp://%s/%s", url->host, top);
- /* FIXME */
- fi->unread_message_count = -1;
-
- return fi;
- }
-}
-
-static gboolean
-nntp_store_folder_subscribed (CamelStore *store, const char *folder_name)
-{
- CamelNNTPStore *nntp_store = CAMEL_NNTP_STORE (store);
-
- return camel_nntp_newsrc_group_is_subscribed (nntp_store->newsrc, folder_name);
-}
-
-static void
-nntp_store_subscribe_folder (CamelStore *store, const char *folder_name,
- CamelException *ex)
-{
- CamelNNTPStore *nntp_store = CAMEL_NNTP_STORE (store);
-
- camel_nntp_newsrc_subscribe_group (nntp_store->newsrc, folder_name);
-}
-
-static void
-nntp_store_unsubscribe_folder (CamelStore *store, const char *folder_name,
- CamelException *ex)
-{
- CamelNNTPStore *nntp_store = CAMEL_NNTP_STORE (store);
-
- camel_nntp_newsrc_unsubscribe_group (nntp_store->newsrc, folder_name);
-}
-
-static void
-finalize (CamelObject *object)
-{
- CamelNNTPStore *nntp_store = CAMEL_NNTP_STORE (object);
- if (nntp_store->newsrc)
- camel_nntp_newsrc_write (nntp_store->newsrc);
-}
-
-static void
-camel_nntp_store_class_init (CamelNNTPStoreClass *camel_nntp_store_class)
-{
- CamelStoreClass *camel_store_class = CAMEL_STORE_CLASS (camel_nntp_store_class);
- CamelServiceClass *camel_service_class = CAMEL_SERVICE_CLASS (camel_nntp_store_class);
-
- remote_store_class = CAMEL_REMOTE_STORE_CLASS(camel_type_get_global_classfuncs
- (camel_remote_store_get_type ()));
-
- service_class = CAMEL_SERVICE_CLASS (camel_type_get_global_classfuncs (camel_service_get_type ()));
-
- /* virtual method overload */
- camel_service_class->connect = nntp_store_connect;
- camel_service_class->disconnect = nntp_store_disconnect;
- camel_service_class->query_auth_types = nntp_store_query_auth_types;
- camel_service_class->get_name = nntp_store_get_name;
-
- camel_store_class->get_folder = nntp_store_get_folder;
- camel_store_class->get_folder_info = nntp_store_get_folder_info;
- camel_store_class->free_folder_info = camel_store_free_folder_info_full;
-
- camel_store_class->folder_subscribed = nntp_store_folder_subscribed;
- camel_store_class->subscribe_folder = nntp_store_subscribe_folder;
- camel_store_class->unsubscribe_folder = nntp_store_unsubscribe_folder;
-}
-
-
-
-static void
-camel_nntp_store_init (gpointer object, gpointer klass)
-{
- CamelRemoteStore *remote_store = CAMEL_REMOTE_STORE (object);
- CamelStore *store = CAMEL_STORE (object);
-
- remote_store->default_port = NNTP_PORT;
-
- store->flags = CAMEL_STORE_SUBSCRIPTIONS;
-}
-
-CamelType
-camel_nntp_store_get_type (void)
-{
- static CamelType camel_nntp_store_type = CAMEL_INVALID_TYPE;
-
- if (camel_nntp_store_type == CAMEL_INVALID_TYPE) {
- camel_nntp_store_type = camel_type_register (CAMEL_REMOTE_STORE_TYPE, "CamelNNTPStore",
- sizeof (CamelNNTPStore),
- sizeof (CamelNNTPStoreClass),
- (CamelObjectClassInitFunc) camel_nntp_store_class_init,
- NULL,
- (CamelObjectInitFunc) camel_nntp_store_init,
- (CamelObjectFinalizeFunc) finalize);
- }
-
- return camel_nntp_store_type;
-}
-
-
-/**
- * camel_nntp_command: Send a command to a NNTP server.
- * @store: the NNTP store
- * @ret: a pointer to return the full server response in
- * @fmt: a printf-style format string, followed by arguments
- *
- * This command sends the command specified by @fmt and the following
- * arguments to the connected NNTP store specified by @store. It then
- * reads the server's response and parses out the status code. If
- * the caller passed a non-NULL pointer for @ret, camel_nntp_command
- * will set it to point to an buffer containing the rest of the
- * response from the NNTP server. (If @ret was passed but there was
- * no extended response, @ret will be set to NULL.) The caller must
- * free this buffer when it is done with it.
- *
- * Return value: the response code of the nntp command.
- **/
-static int
-camel_nntp_command_send_recv (CamelNNTPStore *store, CamelException *ex, char **ret, char *cmd)
-{
- char *respbuf;
- int resp_code;
- gboolean again;
-
- do {
- again = FALSE;
-
- /* Send the command */
- if (camel_remote_store_send_string (CAMEL_REMOTE_STORE (store), ex, cmd) < 0) {
- return NNTP_PROTOCOL_ERROR;
- }
-
- /* Read the response */
- if (camel_remote_store_recv_line (CAMEL_REMOTE_STORE (store), &respbuf, ex) < 0) {
- if (ret)
- *ret = g_strdup (g_strerror (errno));
- return NNTP_PROTOCOL_ERROR;
- }
-
- resp_code = atoi (respbuf);
-
- /* this is kind of a gross hack, but since an auth challenge
- can pop up at any time, and we want to shield this from our
- callers, we handle authentication here. */
- if (resp_code == NNTP_AUTH_REQUIRED) {
- resp_code = camel_nntp_auth_authenticate (store, ex);
- if (resp_code != NNTP_AUTH_ACCEPTED) {
- return resp_code;
- }
-
- /* need to resend our command here */
- again = TRUE;
- }
- } while (again);
-
- if (ret) {
- *ret = strchr (respbuf, ' ');
- if (*ret)
- *ret = g_strdup (*ret + 1);
- }
- g_free (respbuf);
-
- return resp_code;
-}
-
-int
-camel_nntp_command (CamelNNTPStore *store, CamelException *ex, char **ret, char *fmt, ...)
-{
- char *cmdbuf;
- va_list ap;
- int resp_code;
- char *real_fmt;
-
- real_fmt = g_strdup_printf ("%s\r\n", fmt);
-
- va_start (ap, fmt);
- cmdbuf = g_strdup_vprintf (real_fmt, ap);
- va_end (ap);
-
- g_free (real_fmt);
-
- resp_code = camel_nntp_command_send_recv (store, ex, ret, cmdbuf);
-
- g_free (cmdbuf);
-
- return resp_code;
-}
-
-void
-camel_nntp_store_subscribe_group (CamelStore *store,
- const gchar *group_name)
-{
- gchar *root_dir = camel_nntp_store_get_toplevel_dir(CAMEL_NNTP_STORE(store));
- char *ret = NULL;
- CamelException *ex = camel_exception_new();
-
- if (camel_exception_get_id (ex)) {
- g_free (root_dir);
- camel_exception_free (ex);
- return;
- }
-
- if (camel_nntp_command ( CAMEL_NNTP_STORE (store),
- ex, &ret, "GROUP %s", group_name) == NNTP_GROUP_SELECTED) {
- /* we create an empty summary file here, so that when
- the group is opened we'll know we need to build it. */
- gchar *summary_file;
- int fd;
- summary_file = g_strdup_printf ("%s/%s-ev-summary", root_dir, group_name);
-
- fd = open (summary_file, O_CREAT | O_RDWR, 0666);
- close (fd);
-
- g_free (summary_file);
- }
- if (ret) g_free (ret);
-
- g_free (root_dir);
- camel_exception_free (ex);
-}
-
-void
-camel_nntp_store_unsubscribe_group (CamelStore *store,
- const gchar *group_name)
-{
- gchar *root_dir = camel_nntp_store_get_toplevel_dir(CAMEL_NNTP_STORE(store));
- gchar *summary_file;
-
- summary_file = g_strdup_printf ("%s/%s-ev-summary", root_dir, group_name);
- if (g_file_exists (summary_file))
- unlink (summary_file);
- g_free (summary_file);
-
- g_free (root_dir);
-}
-
-GList *
-camel_nntp_store_list_subscribed_groups(CamelStore *store)
-{
- GList *group_name_list = NULL;
- struct stat stat_buf;
- gint stat_error = 0;
- gchar *entry_name;
- gchar *full_entry_name;
- gchar *real_group_name;
- struct dirent *dir_entry;
- DIR *dir_handle;
- gchar *root_dir = camel_nntp_store_get_toplevel_dir(CAMEL_NNTP_STORE(store));
-
- dir_handle = opendir (root_dir);
- g_return_val_if_fail (dir_handle, NULL);
-
- /* read the first entry in the directory */
- dir_entry = readdir (dir_handle);
- while ((stat_error != -1) && (dir_entry != NULL)) {
-
- /* get the name of the next entry in the dir */
- entry_name = dir_entry->d_name;
- full_entry_name = g_strdup_printf ("%s/%s", root_dir, entry_name);
- stat_error = stat (full_entry_name, &stat_buf);
- g_free (full_entry_name);
-
- /* is it a normal file ending in -ev-summary ? */
- if ((stat_error != -1) && S_ISREG (stat_buf.st_mode)) {
- gboolean summary_suffix_found;
-
- real_group_name = string_prefix (entry_name, "-ev-summary",
- &summary_suffix_found);
-
- if (summary_suffix_found)
- /* add the folder name to the list */
- group_name_list = g_list_append (group_name_list,
- real_group_name);
- }
- /* read next entry */
- dir_entry = readdir (dir_handle);
- }
-
- closedir (dir_handle);
-
- return group_name_list;
-}
-
-gchar *
-camel_nntp_store_get_toplevel_dir (CamelNNTPStore *store)
-{
- CamelURL *url = CAMEL_SERVICE (store)->url;
- char *top_dir;
-
- g_assert(url != NULL);
-
- top_dir = g_strdup_printf( "%s/evolution/news/%s",
- g_get_home_dir (),
- url->host );
-
- return top_dir;
-}
-
-static gboolean
-ensure_news_dir_exists (CamelNNTPStore *store)
-{
- gchar *dir = camel_nntp_store_get_toplevel_dir (store);
-
- if (access (dir, F_OK) == 0) {
- g_free (dir);
- return TRUE;
- }
-
- if (camel_mkdir_hier (dir, S_IRWXU) == -1) {
- g_free (dir);
- return FALSE;
- }
-
- return TRUE;
-}
diff --git a/camel/providers/nntp/camel-nntp-store.h b/camel/providers/nntp/camel-nntp-store.h
deleted file mode 100644
index d7836f47ae..0000000000
--- a/camel/providers/nntp/camel-nntp-store.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-nntp-store.h : class for an nntp store */
-
-/*
- *
- * Copyright (C) 2000 Helix Code, Inc. <toshok@helixcode.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_NNTP_STORE_H
-#define CAMEL_NNTP_STORE_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include "camel-remote-store.h"
-#include "camel-nntp-newsrc.h"
-#include "camel-nntp-types.h"
-
-#define CAMEL_NNTP_STORE_TYPE (camel_nntp_store_get_type ())
-#define CAMEL_NNTP_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_NNTP_STORE_TYPE, CamelNNTPStore))
-#define CAMEL_NNTP_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_NNTP_STORE_TYPE, CamelNNTPStoreClass))
-#define CAMEL_IS_NNTP_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_NNTP_STORE_TYPE))
-
-
-enum {
- CAMEL_NNTP_OVER_FROM,
- CAMEL_NNTP_OVER_SUBJECT,
- CAMEL_NNTP_OVER_DATE,
- CAMEL_NNTP_OVER_MESSAGE_ID,
- CAMEL_NNTP_OVER_REFERENCES,
- CAMEL_NNTP_OVER_BYTES,
-
- CAMEL_NNTP_OVER_LAST
-};
-
-struct CamelNNTPOverField {
- int index;
- gboolean full; /* full in the OVER sense - the field name
- precedes the ':' in the XOVER list. */
-};
-
-struct CamelNNTPStore {
- CamelRemoteStore parent_object;
-
-#define CAMEL_NNTP_EXT_SEARCH (1<<0)
-#define CAMEL_NNTP_EXT_SETGET (1<<1)
-#define CAMEL_NNTP_EXT_OVER (1<<2)
-#define CAMEL_NNTP_EXT_XPATTEXT (1<<3)
-#define CAMEL_NNTP_EXT_XACTIVE (1<<4)
-#define CAMEL_NNTP_EXT_LISTMOTD (1<<5)
-#define CAMEL_NNTP_EXT_LISTSUBSCR (1<<6)
-#define CAMEL_NNTP_EXT_LISTPNAMES (1<<7)
- guint32 extensions;
-
- gboolean posting_allowed;
-
- int num_overview_fields;
- CamelNNTPOverField overview_field[ CAMEL_NNTP_OVER_LAST ];
-
- CamelNNTPNewsrc *newsrc;
- CamelNNTPGroupList *group_list;
-
-};
-
-struct CamelNNTPStoreClass {
- CamelRemoteStoreClass parent_class;
-
-};
-
-
-/* public methods */
-void camel_nntp_store_open (CamelNNTPStore *store, CamelException *ex);
-void camel_nntp_store_close (CamelNNTPStore *store, gboolean expunge,
- CamelException *ex);
-
-void camel_nntp_store_subscribe_group (CamelStore *store, const gchar *group_name);
-void camel_nntp_store_unsubscribe_group (CamelStore *store, const gchar *group_name);
-GList *camel_nntp_store_list_subscribed_groups(CamelStore *store);
-
-gchar *camel_nntp_store_get_toplevel_dir (CamelNNTPStore *store);
-
-/* support functions */
-int camel_nntp_command (CamelNNTPStore *store, CamelException *ex, char **ret, char *fmt, ...);
-
-/* Standard Camel function */
-CamelType camel_nntp_store_get_type (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_NNTP_STORE_H */
-
-
diff --git a/camel/providers/nntp/camel-nntp-types.h b/camel/providers/nntp/camel-nntp-types.h
deleted file mode 100644
index b1d91779b1..0000000000
--- a/camel/providers/nntp/camel-nntp-types.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-nntp-grouplist.h : getting/updating the list of newsgroups on the server. */
-
-/*
- * Author : Chris Toshok <toshok@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code .
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef CAMEL_NNTP_TYPES_H
-#define CAMEL_NNTP_TYPES_H 1
-
-typedef struct CamelNNTPGroupList CamelNNTPGroupList;
-typedef struct CamelNNTPGroupListEntry CamelNNTPGroupListEntry;
-typedef struct CamelNNTPOverField CamelNNTPOverField;
-typedef struct CamelNNTPStore CamelNNTPStore;
-typedef struct CamelNNTPStoreClass CamelNNTPStoreClass;
-
-#endif /* CAMEL_NNTP_TYPES_H */
diff --git a/camel/providers/nntp/camel-nntp-utils.c b/camel/providers/nntp/camel-nntp-utils.c
deleted file mode 100644
index 439626d977..0000000000
--- a/camel/providers/nntp/camel-nntp-utils.c
+++ /dev/null
@@ -1,256 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-nntp-utils.c : utilities used by the nntp code. */
-
-/*
- * Author : Chris Toshok <toshok@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code .
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#include "camel-folder-summary.h"
-#include "camel-nntp-resp-codes.h"
-#include "camel-nntp-folder.h"
-#include "camel-nntp-store.h"
-#include "camel-nntp-utils.h"
-#include "camel-stream-mem.h"
-#include "camel-exception.h"
-
-#include "e-util/md5-utils.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-static void
-get_XOVER_headers(CamelNNTPStore *nntp_store, CamelFolder *folder,
- int first_message, int last_message, CamelException *ex)
-{
- int status;
- CamelNNTPFolder *nntp_folder = CAMEL_NNTP_FOLDER (folder);
- char digest[16];
-
- status = camel_nntp_command (nntp_store, ex, NULL,
- "XOVER %d-%d",
- first_message,
- last_message);
-
- if (status == NNTP_DATA_FOLLOWS) {
- gboolean done = FALSE;
-
- while (!done) {
- char *line;
-
- if (camel_remote_store_recv_line (CAMEL_REMOTE_STORE (nntp_store), &line, ex) < 0) {
- g_warning ("failed to recv_line while building OVER header list\n");
- break;
- }
-
- if (*line == '.') {
- done = TRUE;
- g_print ("done\n");
- }
- else {
- CamelMessageInfo *new_info = camel_folder_summary_info_new(nntp_folder->summary);
- char **split_line = g_strsplit (line, "\t", 7);
- char *subject, *from, *date, *message_id, *bytes;
- char *uid;
-
- subject = split_line [nntp_store->overview_field [CAMEL_NNTP_OVER_SUBJECT].index];
- from = split_line [nntp_store->overview_field [CAMEL_NNTP_OVER_FROM].index];
- date = split_line [nntp_store->overview_field [CAMEL_NNTP_OVER_DATE].index];
- message_id = split_line [nntp_store->overview_field [CAMEL_NNTP_OVER_MESSAGE_ID].index];
- bytes = split_line [nntp_store->overview_field [CAMEL_NNTP_OVER_BYTES].index];
-
- /* if the overview format flagged this
- field as "full", skip over the
- preceding field name and colon */
- if (nntp_store->overview_field [ CAMEL_NNTP_OVER_SUBJECT ].full)
- subject += strlen ("Subject:");
- if (nntp_store->overview_field [ CAMEL_NNTP_OVER_FROM ].full)
- from += strlen ("From:");
- if (nntp_store->overview_field [ CAMEL_NNTP_OVER_DATE ].full)
- date += strlen ("Date:");
- if (nntp_store->overview_field [ CAMEL_NNTP_OVER_MESSAGE_ID ].full)
- message_id += strlen ("Message-ID:");
- if (nntp_store->overview_field [ CAMEL_NNTP_OVER_BYTES ].full)
- bytes += strlen ("Bytes:");
-
- uid = g_strdup_printf ("%s,%s", split_line[0], message_id);
- camel_message_info_set_subject(new_info, g_strdup(subject));
- camel_message_info_set_from(new_info, g_strdup(from));
- camel_message_info_set_to(new_info, g_strdup(folder->name));
- camel_message_info_set_uid(new_info, uid);
-
- new_info->date_sent = header_decode_date(date, NULL);
-#if 0
- /* XXX do we need to fill in both dates? */
- new_info->headers.date_received = g_strdup(date);
-#endif
- new_info->size = atoi(bytes);
- md5_get_digest(message_id, strlen(message_id), digest);
- memcpy(new_info->message_id.id.hash, digest, sizeof(new_info->message_id.id.hash));
-
- if (camel_nntp_newsrc_article_is_read (nntp_store->newsrc,
- folder->name,
- atoi (split_line[0])))
- new_info->flags |= CAMEL_MESSAGE_SEEN;
-
- camel_folder_summary_add (nntp_folder->summary, new_info);
- g_strfreev (split_line);
- }
- g_free (line);
- }
- }
- else {
- /* XXX */
- g_warning ("weird nntp response for XOVER: %d\n", status);
- }
-}
-
-#if 0
-static GArray*
-get_HEAD_headers(CamelNNTPStore *nntp_store, CamelFolder *folder,
- int first_message, int last_message, CamelException *ex)
-{
- int i;
- int status;
-
- for (i = first_message; i < last_message; i ++) {
- status = camel_nntp_command (nntp_store, ex, NULL,
- "HEAD %d", i);
-
- if (status == NNTP_HEAD_FOLLOWS) {
- gboolean done = FALSE;
- char *buf;
- int buf_len;
- int buf_alloc;
- int h;
- CamelStream *header_stream;
- GArray *header_array;
- CamelStream *nntp_istream;
- CamelMessageInfo *new_info = g_new0(CamelMessageInfo, 1);
-
- buf_alloc = 2048;
- buf_len = 0;
- buf = g_malloc(buf_alloc);
- done = FALSE;
-
- buf[0] = 0;
-
- nntp_istream = nntp_store->istream;
-
- while (!done) {
- char *line;
- int line_length;
-
- line = camel_stream_buffer_read_line (
- CAMEL_STREAM_BUFFER ( nntp_istream ));
- line_length = strlen ( line );
-
- if (*line == '.') {
- done = TRUE;
- }
- else {
- if (buf_len + line_length > buf_alloc) {
- buf_alloc *= 2;
- buf = g_realloc (buf, buf_alloc);
- }
- strcat(buf, line);
- strcat(buf, "\n");
- buf_len += strlen(line);
- g_free (line);
- }
- }
-
- /* create a stream from which to parse the headers */
- header_stream = camel_stream_mem_new_with_buffer(buf,
- buf_len,
- CAMEL_STREAM_MEM_READ);
-
- header_array = get_header_array_from_stream (header_stream);
-
- memset (&info, 0, sizeof(info));
-
- for (h = 0; h < header_array->len; h ++) {
- Rfc822Header *header = &((Rfc822Header*)header_array->data)[h];
- if (!g_strcasecmp(header->name, "From"))
- new_info->from = g_strdup(header->value);
- else if (!g_strcasecmp(header->name, "To"))
- new_info->to = g_strdup(header->value);
- else if (!g_strcasecmp(header->name, "Subject"))
- new_info->subject = g_strdup(header->value);
- else if (!g_strcasecmp(header->name, "Message-ID")) {
- new_info->uid = g_strdup_printf("%d,%s", i, header->value);
- new_info->message_id = g_strdup(header->value);
- }
- else if (!g_strcasecmp(header->name, "Date")) {
- new_info->date_sent = header_decode_date (header->value);
-#if 0
- new_info->date_sent = g_strdup(header->value);
- new_info->date_received = g_strdup(header->value);
-#endif
- }
- }
-
- camel_folder_summary_add (nntp_folder->summary, new_info);
- }
- else if (status == CAMEL_NNTP_FAIL) {
- /* nasty things are afoot */
- g_warning ("failure doing HEAD\n");
- break;
- }
- }
-}
-#endif
-
-void
-camel_nntp_get_headers (CamelStore *store,
- CamelNNTPFolder *nntp_folder,
- CamelException *ex)
-{
- CamelNNTPStore *nntp_store = CAMEL_NNTP_STORE (store);
- CamelFolder *folder = CAMEL_FOLDER (nntp_folder);
- char *ret;
- int first_message, nb_message, last_message;
- int status;
-
- status = camel_nntp_command (nntp_store, ex, &ret,
- "GROUP %s", folder->name);
-
- sscanf (ret, "%d %d %d", &nb_message, &first_message, &last_message);
- g_free (ret);
-
- if (status == NNTP_NO_SUCH_GROUP) {
- /* XXX throw invalid group exception */
- camel_exception_setv (ex,
- CAMEL_EXCEPTION_FOLDER_INVALID,
- "group %s not found on server",
- folder->name);
- return;
- }
-
-
- if (nntp_store->extensions & CAMEL_NNTP_EXT_OVER) {
- get_XOVER_headers (nntp_store, folder, first_message, last_message, ex);
- }
- else {
- g_warning ("need to fix get_HEAD_headers\n");
-#if 0
- get_HEAD_headers (nntp_store, folder, first_message, last_message, ex);
-#endif
- }
-}
diff --git a/camel/providers/nntp/camel-nntp-utils.h b/camel/providers/nntp/camel-nntp-utils.h
deleted file mode 100644
index f28697c744..0000000000
--- a/camel/providers/nntp/camel-nntp-utils.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-nntp-utils.h : Utilities for the NNTP provider */
-
-/*
- *
- * Author : Chris Toshok <toshok@helixcode.com>
- *
- * Copyright (C) 1999 Helix Code .
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_NNTP_UTILS_H
-#define CAMEL_NNTP_UTILS_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-void camel_nntp_get_headers (CamelStore *store, CamelNNTPFolder *nntp_folder, CamelException *ex);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_NNTP_UTILS_H */
diff --git a/camel/providers/nntp/libcamelnntp.urls b/camel/providers/nntp/libcamelnntp.urls
deleted file mode 100644
index dee2e70f14..0000000000
--- a/camel/providers/nntp/libcamelnntp.urls
+++ /dev/null
@@ -1,2 +0,0 @@
-news
-nntp
diff --git a/camel/providers/nntp/test-newsrc.c b/camel/providers/nntp/test-newsrc.c
deleted file mode 100644
index c4b985e565..0000000000
--- a/camel/providers/nntp/test-newsrc.c
+++ /dev/null
@@ -1,10 +0,0 @@
-#include <stdio.h>
-#include <glib.h>
-#include "camel-nntp-newsrc.h"
-
-int
-main(int argc, char *argv[])
-{
- CamelNNTPNewsrc *newsrc = camel_nntp_newsrc_read_for_server (argv[1]);
- camel_nntp_newsrc_write_to_file (newsrc, stdout);
-}
diff --git a/camel/providers/pop3/.cvsignore b/camel/providers/pop3/.cvsignore
deleted file mode 100644
index ddf4c8b28d..0000000000
--- a/camel/providers/pop3/.cvsignore
+++ /dev/null
@@ -1,10 +0,0 @@
-Makefile
-Makefile.in
-.libs
-.deps
-*.lo
-*.la
-*.bb
-*.bbg
-*.da
-*.gcov
diff --git a/camel/providers/pop3/Makefile.am b/camel/providers/pop3/Makefile.am
deleted file mode 100644
index 476e3d3189..0000000000
--- a/camel/providers/pop3/Makefile.am
+++ /dev/null
@@ -1,37 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-libcamelpop3includedir = $(includedir)/camel
-
-providerdir = $(pkglibdir)/camel-providers/$(VERSION)
-
-provider_LTLIBRARIES = libcamelpop3.la
-provider_DATA = libcamelpop3.urls
-
-INCLUDES = \
- -I.. \
- -I$(srcdir)/.. \
- -I$(srcdir)/../../.. \
- -I$(includedir) \
- -I$(top_srcdir)/intl \
- -I$(top_srcdir)/camel \
- -I$(top_srcdir)/e-util \
- $(GNOME_INCLUDEDIR) \
- $(KRB4_CFLAGS) \
- $(GTK_INCLUDEDIR) \
- -DG_LOG_DOMAIN=\"camel-pop3-provider\"
-
-libcamelpop3_la_SOURCES = \
- camel-pop3-folder.c \
- camel-pop3-provider.c \
- camel-pop3-store.c
-
-libcamelpop3include_HEADERS = \
- camel-pop3-folder.h \
- camel-pop3-store.h
-
-
-libcamelpop3_la_LDFLAGS = $(KRB4_LDFLAGS) -version-info 0:0:0
-
-libcamelpop3_la_LIBADD = $(top_builddir)/e-util/libeutil.la
-
-EXTRA_DIST = libcamelpop3.urls
diff --git a/camel/providers/pop3/camel-pop3-folder.c b/camel/providers/pop3/camel-pop3-folder.c
deleted file mode 100644
index 4d5c066491..0000000000
--- a/camel/providers/pop3/camel-pop3-folder.c
+++ /dev/null
@@ -1,370 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-pop3-folder.c : class for a pop3 folder */
-
-/*
- * Authors:
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "camel-pop3-folder.h"
-#include "camel-pop3-store.h"
-#include "camel-exception.h"
-#include "camel-stream-mem.h"
-#include "camel-stream-filter.h"
-#include "camel-mime-message.h"
-#include "camel-operation.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-#define CF_CLASS(o) (CAMEL_FOLDER_CLASS (CAMEL_OBJECT_GET_CLASS(o)))
-static CamelFolderClass *parent_class;
-
-static void pop3_finalize (CamelObject *object);
-
-static void pop3_refresh_info (CamelFolder *folder, CamelException *ex);
-static void pop3_sync (CamelFolder *folder, gboolean expunge,
- CamelException *ex);
-
-static gint pop3_get_message_count (CamelFolder *folder);
-static GPtrArray *pop3_get_uids (CamelFolder *folder);
-static CamelMimeMessage *pop3_get_message (CamelFolder *folder,
- const char *uid,
- CamelException *ex);
-static void pop3_set_message_flags (CamelFolder *folder, const char *uid,
- guint32 flags, guint32 set);
-
-static GPtrArray *parse_listing (int count, char *data);
-
-static void
-camel_pop3_folder_class_init (CamelPop3FolderClass *camel_pop3_folder_class)
-{
- CamelFolderClass *camel_folder_class =
- CAMEL_FOLDER_CLASS (camel_pop3_folder_class);
-
- parent_class = CAMEL_FOLDER_CLASS(camel_type_get_global_classfuncs (camel_folder_get_type ()));
-
- /* virtual method overload */
- camel_folder_class->refresh_info = pop3_refresh_info;
- camel_folder_class->sync = pop3_sync;
-
- camel_folder_class->get_message_count = pop3_get_message_count;
- camel_folder_class->get_uids = pop3_get_uids;
- camel_folder_class->free_uids = camel_folder_free_nop;
-
- camel_folder_class->get_message = pop3_get_message;
- camel_folder_class->set_message_flags = pop3_set_message_flags;
-}
-
-static void
-camel_pop3_folder_init (gpointer object)
-{
- CamelFolder *folder = CAMEL_FOLDER (object);
- CamelPop3Folder *pop3_folder = CAMEL_POP3_FOLDER (object);
-
- folder->has_summary_capability = FALSE;
- folder->has_search_capability = FALSE;
-
- pop3_folder->uids = NULL;
- pop3_folder->flags = NULL;
-}
-
-CamelType
-camel_pop3_folder_get_type (void)
-{
- static CamelType camel_pop3_folder_type = CAMEL_INVALID_TYPE;
-
- if (!camel_pop3_folder_type) {
- camel_pop3_folder_type = camel_type_register (CAMEL_FOLDER_TYPE, "CamelPop3Folder",
- sizeof (CamelPop3Folder),
- sizeof (CamelPop3FolderClass),
- (CamelObjectClassInitFunc) camel_pop3_folder_class_init,
- NULL,
- (CamelObjectInitFunc) camel_pop3_folder_init,
- (CamelObjectFinalizeFunc) pop3_finalize);
- }
-
- return camel_pop3_folder_type;
-}
-
-void
-pop3_finalize (CamelObject *object)
-{
- CamelPop3Folder *pop3_folder = CAMEL_POP3_FOLDER (object);
-
- if (pop3_folder->uids)
- camel_folder_free_deep (NULL, pop3_folder->uids);
- if (pop3_folder->flags)
- g_free (pop3_folder->flags);
-}
-
-CamelFolder *
-camel_pop3_folder_new (CamelStore *parent, CamelException *ex)
-{
- CamelFolder *folder;
-
- folder = CAMEL_FOLDER (camel_object_new (CAMEL_POP3_FOLDER_TYPE));
- camel_folder_construct (folder, parent, "inbox", "inbox");
-
- /* mt-ok, since we dont have the folder-lock for new() */
- camel_folder_refresh_info (folder, ex);/* mt-ok */
- if (camel_exception_is_set (ex)) {
- camel_object_unref (CAMEL_OBJECT (folder));
- folder = NULL;
- }
-
- return folder;
-}
-
-static void
-pop3_refresh_info (CamelFolder *folder, CamelException *ex)
-{
- GPtrArray *uids;
- int status, count;
- char *data;
- CamelPop3Folder *pop3_folder = (CamelPop3Folder *) folder;
- CamelPop3Store *pop3_store = CAMEL_POP3_STORE (folder->parent_store);
-
- camel_operation_start(NULL, _("Retrieving POP summary"));
-
- status = camel_pop3_command (pop3_store, &data, ex, "STAT");
- switch (status) {
- case CAMEL_POP3_ERR:
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("Could not check POP server for new messages: %s"),
- data);
- g_free (data);
- /* fall through */
- case CAMEL_POP3_FAIL:
- camel_operation_end(NULL);
- return;
- }
-
- count = atoi (data);
- g_free (data);
-
- if (pop3_store->supports_uidl != FALSE) {
- status = camel_pop3_command (pop3_store, NULL, ex, "UIDL");
- switch (status) {
- case CAMEL_POP3_ERR:
- pop3_store->supports_uidl = FALSE;
- break;
- case CAMEL_POP3_FAIL:
- camel_operation_end(NULL);
- return;
- }
- }
-
- if (pop3_store->supports_uidl == FALSE) {
- int i;
-
- uids = g_ptr_array_new ();
- g_ptr_array_set_size (uids, count);
-
- for (i = 0; i < count; i++)
- uids->pdata[i] = g_strdup_printf ("%d", i + 1);
- camel_operation_end(NULL);
- } else {
- data = camel_pop3_command_get_additional_data (pop3_store, 0, ex);
- camel_operation_end(NULL);
- if (camel_exception_is_set (ex))
- return;
-
- uids = parse_listing (count, data);
- g_free (data);
-
- if (!uids) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not open folder: "
- "message listing was "
- "incomplete."));
- return;
- }
- }
-
- pop3_folder->uids = uids;
- pop3_folder->flags = g_new0 (guint32, uids->len);
-}
-
-static void
-pop3_sync (CamelFolder *folder, gboolean expunge, CamelException *ex)
-{
- CamelPop3Folder *pop3_folder;
- CamelPop3Store *pop3_store;
- int i, status;
-
- if (!expunge)
- return;
-
- pop3_folder = CAMEL_POP3_FOLDER (folder);
- pop3_store = CAMEL_POP3_STORE (folder->parent_store);
-
- for (i = 0; i < pop3_folder->uids->len; i++) {
- if (pop3_folder->flags[i] & CAMEL_MESSAGE_DELETED) {
- status = camel_pop3_command (pop3_store, NULL, ex,
- "DELE %d", i + 1);
- if (status != CAMEL_POP3_OK)
- return;
- }
- }
-
- camel_pop3_store_expunge (pop3_store, ex);
-}
-
-
-static GPtrArray *
-parse_listing (int count, char *data)
-{
- GPtrArray *ans;
- char *p;
- int index, len;
-
- ans = g_ptr_array_new ();
- g_ptr_array_set_size (ans, count);
-
- p = data;
- while (*p) {
- index = strtoul (p, &p, 10);
- len = strcspn (p, "\n");
- if (index <= count && *p == ' ')
- ans->pdata[index - 1] = g_strndup (p + 1, len - 1);
- p += len;
- if (*p == '\n')
- p++;
- }
-
- for (index = 0; index < count; index++) {
- if (ans->pdata[index] == NULL) {
- g_ptr_array_free (ans, TRUE);
- return NULL;
- }
- }
-
- return ans;
-}
-
-static int
-uid_to_number (CamelPop3Folder *pop3_folder, const char *uid)
-{
- int i;
-
- for (i = 0; i < pop3_folder->uids->len; i++) {
- if (!strcmp (uid, pop3_folder->uids->pdata[i]))
- return i + 1;
- }
-
- return -1;
-}
-
-
-static CamelMimeMessage *
-pop3_get_message (CamelFolder *folder, const char *uid, CamelException *ex)
-{
- int status, num, total;
- char *result, *body;
- CamelStream *msgstream;
- CamelMimeMessage *msg;
-
- num = uid_to_number (CAMEL_POP3_FOLDER (folder), uid);
- if (num == -1) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_FOLDER_INVALID_UID,
- _("No message with uid %s"), uid);
- return NULL;
- }
-
- camel_operation_start_transient(NULL, _("Retrieving POP message %d"), num);
-
- status = camel_pop3_command (CAMEL_POP3_STORE (folder->parent_store),
- &result, ex, "RETR %d", num);
- switch (status) {
- case CAMEL_POP3_ERR:
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("Could not fetch message: %s"), result);
- g_free (result);
- /* fall through */
- case CAMEL_POP3_FAIL:
- camel_operation_end(NULL);
- return NULL;
- }
-
- /* this should be "nnn octets" ? No. RTFRFC. FIXME. */
- if (result && sscanf (result, "%d", &total) != 1)
- total = 0;
-
- g_free (result);
- body = camel_pop3_command_get_additional_data (CAMEL_POP3_STORE (folder->parent_store), total, ex);
- if (!body) {
- CamelService *service = CAMEL_SERVICE (folder->parent_store);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("Could not retrieve message from POP "
- "server %s: %s"), service->url->host,
- camel_exception_get_description (ex));
- camel_operation_end(NULL);
- return NULL;
- }
-
- msgstream = camel_stream_mem_new_with_buffer (body, strlen (body));
- g_free (body);
-
- msg = camel_mime_message_new ();
- camel_data_wrapper_construct_from_stream (CAMEL_DATA_WRAPPER (msg),
- CAMEL_STREAM (msgstream));
-
- camel_object_unref (CAMEL_OBJECT (msgstream));
-
- camel_operation_end(NULL);
-
- return msg;
-}
-
-static void
-pop3_set_message_flags (CamelFolder *folder, const char *uid,
- guint32 flags, guint32 set)
-{
- CamelPop3Folder *pop3_folder = CAMEL_POP3_FOLDER (folder);
- int num;
-
- num = uid_to_number (pop3_folder, uid);
- if (num == -1)
- return;
-
- pop3_folder->flags[num - 1] =
- (pop3_folder->flags[num] & ~flags) | (set & flags);
-}
-
-static gint
-pop3_get_message_count (CamelFolder *folder)
-{
- CamelPop3Folder *pop3_folder = CAMEL_POP3_FOLDER (folder);
-
- return pop3_folder->uids->len;
-}
-
-static GPtrArray *
-pop3_get_uids (CamelFolder *folder)
-{
- CamelPop3Folder *pop3_folder = CAMEL_POP3_FOLDER (folder);
-
- return pop3_folder->uids;
-}
diff --git a/camel/providers/pop3/camel-pop3-folder.h b/camel/providers/pop3/camel-pop3-folder.h
deleted file mode 100644
index 278cd0e8e9..0000000000
--- a/camel/providers/pop3/camel-pop3-folder.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-pop3-folder.h : Class for a POP3 folder */
-
-/*
- * Author:
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_POP3_FOLDER_H
-#define CAMEL_POP3_FOLDER_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include "camel-folder.h"
-
-#define CAMEL_POP3_FOLDER_TYPE (camel_pop3_folder_get_type ())
-#define CAMEL_POP3_FOLDER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_POP3_FOLDER_TYPE, CamelPop3Folder))
-#define CAMEL_POP3_FOLDER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_POP3_FOLDER_TYPE, CamelPop3FolderClass))
-#define CAMEL_IS_POP3_FOLDER(o) (CAMEL_CHECK_TYPE((o), CAMEL_POP3_FOLDER_TYPE))
-
-
-typedef struct {
- CamelFolder parent_object;
-
- GPtrArray *uids;
- guint32 *flags;
-
-} CamelPop3Folder;
-
-
-
-typedef struct {
- CamelFolderClass parent_class;
-
- /* Virtual methods */
-
-} CamelPop3FolderClass;
-
-
-/* public methods */
-CamelFolder *camel_pop3_folder_new (CamelStore *parent, CamelException *ex);
-
-/* Standard Camel function */
-CamelType camel_pop3_folder_get_type (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_POP3_FOLDER_H */
diff --git a/camel/providers/pop3/camel-pop3-provider.c b/camel/providers/pop3/camel-pop3-provider.c
deleted file mode 100644
index 0931f903ed..0000000000
--- a/camel/providers/pop3/camel-pop3-provider.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-pop3-provider.c: pop3 provider registration code */
-
-/*
- * Authors :
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "camel-pop3-store.h"
-#include "camel-provider.h"
-#include "camel-session.h"
-#include "camel-url.h"
-
-CamelProviderConfEntry pop3_conf_entries[] = {
- { CAMEL_PROVIDER_CONF_SECTION_START, NULL, NULL,
- N_("Message storage") },
- { CAMEL_PROVIDER_CONF_CHECKBOX, "keep_on_server", NULL,
- N_("Leave messages on server"), "0" },
- { CAMEL_PROVIDER_CONF_CHECKSPIN, "delete_after", "UNIMPLEMENTED",
- N_("Delete after %s day(s)"), "0:1:7:365" },
- { CAMEL_PROVIDER_CONF_SECTION_END },
- { CAMEL_PROVIDER_CONF_END }
-};
-
-static CamelProvider pop3_provider = {
- "pop",
- N_("POP"),
-
- N_("For connecting to POP servers. The POP protocol can also "
- "be used to retrieve mail from certain web mail providers "
- "and proprietary email systems."),
-
- "mail",
-
- CAMEL_PROVIDER_IS_REMOTE | CAMEL_PROVIDER_IS_SOURCE |
- CAMEL_PROVIDER_SUPPORTS_SSL,
-
- CAMEL_URL_NEED_USER | CAMEL_URL_NEED_HOST | CAMEL_URL_ALLOW_AUTH,
-
- pop3_conf_entries,
-
- /* ... */
-};
-
-CamelServiceAuthType camel_pop3_password_authtype = {
- N_("Password"),
-
- N_("This option will connect to the POP server using a plaintext "
- "password. This is the only option supported by many POP servers."),
-
- "",
- TRUE
-};
-
-CamelServiceAuthType camel_pop3_apop_authtype = {
- "APOP",
-
- N_("This option will connect to the POP server using an encrypted "
- "password via the APOP protocol. This may not work for all users "
- "even on servers that claim to support it."),
-
- "+APOP",
- TRUE
-};
-
-#ifdef HAVE_KRB4
-CamelServiceAuthType camel_pop3_kpop_authtype = {
- "Kerberos 4 (KPOP)",
-
- N_("This will connect to the POP server and use Kerberos 4 "
- "to authenticate to it."),
-
- "+KPOP",
- FALSE
-};
-#endif
-
-void
-camel_provider_module_init (CamelSession *session)
-{
- pop3_provider.object_types[CAMEL_PROVIDER_STORE] =
- camel_pop3_store_get_type ();
- pop3_provider.service_cache = g_hash_table_new (camel_url_hash, camel_url_equal);
-
-#ifdef HAVE_KRB4
- pop3_provider.authtypes = g_list_prepend (camel_remote_store_authtype_list (), &camel_pop3_kpop_authtype);
-#endif
- pop3_provider.authtypes = g_list_prepend (pop3_provider.authtypes, &camel_pop3_apop_authtype);
- pop3_provider.authtypes = g_list_prepend (pop3_provider.authtypes, &camel_pop3_password_authtype);
-
- camel_session_register_provider (session, &pop3_provider);
-}
diff --git a/camel/providers/pop3/camel-pop3-store.c b/camel/providers/pop3/camel-pop3-store.c
deleted file mode 100644
index 67b661caf4..0000000000
--- a/camel/providers/pop3/camel-pop3-store.c
+++ /dev/null
@@ -1,650 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-pop3-store.c : class for a pop3 store */
-
-/*
- * Authors:
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <errno.h>
-
-#include "camel-operation.h"
-
-#ifdef HAVE_KRB4
-/* Specified nowhere */
-#define KPOP_PORT 1109
-
-#include <krb.h>
-/* MIT krb4 des.h #defines _. Sigh. We don't need it. */
-#undef _
-
-#ifdef NEED_KRB_SENDAUTH_PROTO
-extern int krb_sendauth(long options, int fd, KTEXT ticket, char *service,
- char *inst, char *realm, unsigned KRB4_32 checksum,
- MSG_DAT *msg_data, CREDENTIALS *cred,
- Key_schedule schedule, struct sockaddr_in *laddr,
- struct sockaddr_in *faddr, char *version);
-#endif
-#endif
-
-#include "camel-pop3-store.h"
-#include "camel-pop3-folder.h"
-#include "camel-stream-buffer.h"
-#include "camel-tcp-stream.h"
-#include "camel-session.h"
-#include "camel-exception.h"
-#include "camel-url.h"
-#include "e-util/md5-utils.h"
-
-/* Specified in RFC 1939 */
-#define POP3_PORT 110
-
-static CamelRemoteStoreClass *parent_class = NULL;
-
-static void finalize (CamelObject *object);
-
-static gboolean pop3_connect (CamelService *service, CamelException *ex);
-static gboolean pop3_disconnect (CamelService *service, gboolean clean, CamelException *ex);
-static GList *query_auth_types (CamelService *service, CamelException *ex);
-
-static CamelFolder *get_folder (CamelStore *store, const char *folder_name,
- guint32 flags, CamelException *ex);
-
-static void init_trash (CamelStore *store);
-static CamelFolder *get_trash (CamelStore *store, CamelException *ex);
-
-static int pop3_get_response (CamelPop3Store *store, char **ret, CamelException *ex);
-
-
-static void
-camel_pop3_store_class_init (CamelPop3StoreClass *camel_pop3_store_class)
-{
- CamelServiceClass *camel_service_class =
- CAMEL_SERVICE_CLASS (camel_pop3_store_class);
- CamelStoreClass *camel_store_class =
- CAMEL_STORE_CLASS (camel_pop3_store_class);
-
- parent_class = CAMEL_REMOTE_STORE_CLASS(camel_type_get_global_classfuncs
- (camel_remote_store_get_type ()));
-
- /* virtual method overload */
- camel_service_class->query_auth_types = query_auth_types;
- camel_service_class->connect = pop3_connect;
- camel_service_class->disconnect = pop3_disconnect;
-
- camel_store_class->get_folder = get_folder;
- camel_store_class->init_trash = init_trash;
- camel_store_class->get_trash = get_trash;
-}
-
-
-
-static void
-camel_pop3_store_init (gpointer object, gpointer klass)
-{
- CamelRemoteStore *remote_store = CAMEL_REMOTE_STORE (object);
-
- remote_store->default_port = 110;
- /* FIXME: what should this port be?? */
- remote_store->default_ssl_port = 995;
-}
-
-CamelType
-camel_pop3_store_get_type (void)
-{
- static CamelType camel_pop3_store_type = CAMEL_INVALID_TYPE;
-
- if (!camel_pop3_store_type) {
- camel_pop3_store_type = camel_type_register (CAMEL_REMOTE_STORE_TYPE, "CamelPop3Store",
- sizeof (CamelPop3Store),
- sizeof (CamelPop3StoreClass),
- (CamelObjectClassInitFunc) camel_pop3_store_class_init,
- NULL,
- (CamelObjectInitFunc) camel_pop3_store_init,
- finalize);
- }
-
- return camel_pop3_store_type;
-}
-
-static void
-finalize (CamelObject *object)
-{
- CamelPop3Store *pop3_store = CAMEL_POP3_STORE (object);
-
- if (pop3_store->apop_timestamp)
- g_free (pop3_store->apop_timestamp);
- if (pop3_store->implementation)
- g_free (pop3_store->implementation);
-}
-
-static gboolean
-connect_to_server (CamelService *service, CamelException *ex)
-{
- CamelPop3Store *store = CAMEL_POP3_STORE (service);
- char *buf, *apoptime, *apopend;
- int status;
- gboolean result;
-
-#ifdef HAVE_KRB4
- gboolean set_port = FALSE, kpop;
-
- kpop = (service->url->authmech &&
- !strcmp (service->url->authmech, "+KPOP"));
-
- if (kpop && service->url->port == 0) {
- set_port = TRUE;
- service->url->port = KPOP_PORT;
- }
-#endif
-
- result = CAMEL_SERVICE_CLASS (parent_class)->connect (service, ex);
-
-#ifdef HAVE_KRB4
- if (set_port)
- service->url->port = 0;
-#endif
-
- if (result == FALSE)
- return FALSE;
-
-#ifdef HAVE_KRB4
- if (kpop) {
- KTEXT_ST ticket_st;
- MSG_DAT msg_data;
- CREDENTIALS cred;
- Key_schedule schedule;
- struct hostent *h;
- int fd;
-
- h = camel_service_gethost (service, ex);
-
- fd = GPOINTER_TO_INT (camel_tcp_stream_get_socket (CAMEL_TCP_STREAM (CAMEL_REMOTE_STORE (service)->ostream)));
- status = krb_sendauth (0, fd, &ticket_st, "pop", h->h_name,
- krb_realmofhost (h->h_name), 0,
- &msg_data, &cred, schedule,
- NULL, NULL, "KPOPV0.1");
- camel_free_host (h);
- if (status != KSUCCESS) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("Could not authenticate to "
- "KPOP server: %s"),
- krb_err_txt[status]);
- return FALSE;
- }
-
- if (!service->url->passwd)
- service->url->passwd = g_strdup (service->url->user);
- }
-#endif /* HAVE_KRB4 */
-
- /* Read the greeting, check status */
- status = pop3_get_response (store, &buf, ex);
- switch (status) {
- case CAMEL_POP3_ERR:
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("Could not connect to server: %s"),
- buf);
- g_free (buf);
- /* fall through */
- case CAMEL_POP3_FAIL:
- return FALSE;
- }
-
- if (buf) {
- apoptime = strchr (buf, '<');
- apopend = apoptime ? strchr (apoptime, '>') : NULL;
- if (apopend) {
- store->apop_timestamp =
- g_strndup (apoptime, apopend - apoptime + 1);
- memmove (apoptime, apopend + 1, strlen (apopend + 1));
- }
- store->implementation = buf;
- }
-
- /* Check extensions */
- store->login_delay = -1;
- store->supports_top = -1;
- store->supports_uidl = -1;
- store->expires = -1;
-
- status = camel_pop3_command (store, NULL, ex, "CAPA");
- if (status == CAMEL_POP3_OK) {
- char *p;
- int len;
-
- buf = camel_pop3_command_get_additional_data (store, 0, ex);
- if (camel_exception_is_set (ex))
- return FALSE;
-
- p = buf;
- while (*p) {
- len = strcspn (p, "\n");
- if (!strncmp (p, "IMPLEMENTATION ", 15)) {
- g_free (store->implementation);
- store->implementation =
- g_strndup (p + 15, len - 15);
- } else if (len == 3 && !strncmp (p, "TOP", 3))
- store->supports_top = TRUE;
- else if (len == 4 && !strncmp (p, "UIDL", 4))
- store->supports_uidl = TRUE;
- else if (!strncmp (p, "LOGIN-DELAY ", 12))
- store->login_delay = atoi (p + 12);
- else if (!strncmp (p, "EXPIRE NEVER", 12))
- store->expires = FALSE;
- else if (!strncmp (p, "EXPIRE ", 7))
- store->expires = TRUE;
-
- p += len;
- if (*p)
- p++;
- }
-
- g_free (buf);
- }
-
- return TRUE;
-}
-
-extern CamelServiceAuthType camel_pop3_password_authtype;
-extern CamelServiceAuthType camel_pop3_apop_authtype;
-#ifdef HAVE_KRB4
-extern CamelServiceAuthType camel_pop3_kpop_authtype;
-#endif
-
-static GList *
-query_auth_types (CamelService *service, CamelException *ex)
-{
- CamelPop3Store *store = CAMEL_POP3_STORE (service);
- GList *types = NULL;
- gboolean passwd = TRUE, apop = TRUE;
-#ifdef HAVE_KRB4
- gboolean kpop;
-#endif
-
- types = CAMEL_SERVICE_CLASS (parent_class)->query_auth_types (service, ex);
- if (camel_exception_is_set (ex))
- return types;
-
- passwd = connect_to_server (service, NULL);
- apop = store->apop_timestamp != NULL;
- if (passwd)
- pop3_disconnect (service, TRUE, NULL);
-
-#ifdef HAVE_KRB4
- service->url->authmech = "+KPOP";
- kpop = connect_to_server (service, NULL);
- service->url->authmech = NULL;
- if (kpop)
- pop3_disconnect (service, TRUE, NULL);
-#endif
-
- if (passwd)
- types = g_list_append (types, &camel_pop3_password_authtype);
- if (apop)
- types = g_list_append (types, &camel_pop3_apop_authtype);
-#ifdef HAVE_KRB4
- if (kpop)
- types = g_list_append (types, &camel_pop3_kpop_authtype);
-#endif
-
- if (!types) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("Could not connect to POP server on "
- "%s."), service->url->host);
- }
- return types;
-}
-
-/**
- * camel_pop3_store_expunge:
- * @store: the store
- * @ex: a CamelException
- *
- * Expunge messages from the store. This will result in the connection
- * being closed, which may cause later commands to fail if they can't
- * reconnect.
- **/
-void
-camel_pop3_store_expunge (CamelPop3Store *store, CamelException *ex)
-{
- camel_pop3_command (store, NULL, ex, "QUIT");
- camel_service_disconnect (CAMEL_SERVICE (store), FALSE, ex);
-}
-
-
-static gboolean
-pop3_try_authenticate (CamelService *service, const char *errmsg,
- CamelException *ex)
-{
- CamelPop3Store *store = (CamelPop3Store *)service;
- int status;
- char *msg;
-
- /* The KPOP code will have set the password to be the username
- * in connect_to_server. Password and APOP are the only other
- * cases, and they both need a password. So if there's no
- * password stored, query for it.
- */
- if (!service->url->passwd) {
- char *prompt;
-
- prompt = g_strdup_printf (_("%sPlease enter the POP3 password "
- "for %s@%s"), errmsg ? errmsg : "",
- service->url->user,
- service->url->host);
- service->url->passwd = camel_session_get_password (
- camel_service_get_session (service),
- prompt, TRUE, service, "password", ex);
- g_free (prompt);
- if (!service->url->passwd)
- return FALSE;
- }
-
- if (!service->url->authmech || !strcmp (service->url->authmech, "+KPOP")) {
- status = camel_pop3_command (store, &msg, ex, "USER %s",
- service->url->user);
- switch (status) {
- case CAMEL_POP3_ERR:
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("Unable to connect to POP "
- "server.\nError sending "
- "username: %s"),
- msg ? msg : _("(Unknown)"));
- g_free (msg);
- /*fallll*/
- case CAMEL_POP3_FAIL:
- return FALSE;
- }
- g_free (msg);
-
- status = camel_pop3_command (store, &msg, ex, "PASS %s",
- service->url->passwd);
- } else if (!strcmp (service->url->authmech, "+APOP")
- && store->apop_timestamp) {
- char *secret, md5asc[33], *d;
- unsigned char md5sum[16], *s;
-
- secret = g_strdup_printf ("%s%s", store->apop_timestamp,
- service->url->passwd);
- md5_get_digest (secret, strlen (secret), md5sum);
- g_free (secret);
-
- for (s = md5sum, d = md5asc; d < md5asc + 32; s++, d += 2)
- sprintf (d, "%.2x", *s);
-
- status = camel_pop3_command (store, &msg, ex, "APOP %s %s",
- service->url->user, md5asc);
- } else {
- camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("Unable to connect to POP server.\n"
- "No support for requested "
- "authentication mechanism."));
- return FALSE;
- }
-
- if (status == CAMEL_POP3_ERR) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("Unable to connect to POP server.\n"
- "Error sending password: %s"),
- msg ? msg : _("(Unknown)"));
- }
-
- g_free (msg);
- return status == CAMEL_POP3_ERR;
-}
-
-static gboolean
-pop3_connect (CamelService *service, CamelException *ex)
-{
- char *errbuf = NULL;
- gboolean tryagain;
-
- if (!connect_to_server (service, ex))
- return FALSE;
-
- camel_exception_clear (ex);
- do {
- if (camel_exception_is_set (ex)) {
- errbuf = g_strdup_printf (
- "%s\n\n",
- camel_exception_get_description (ex));
- camel_exception_clear (ex);
-
- /* Uncache the password before prompting again. */
- camel_session_forget_password (
- camel_service_get_session (service),
- service, "password", ex);
- g_free (service->url->passwd);
- service->url->passwd = NULL;
- }
-
- tryagain = pop3_try_authenticate (service, errbuf, ex);
- g_free (errbuf);
- errbuf = NULL;
- } while (tryagain);
-
- if (camel_exception_is_set (ex)) {
- camel_service_disconnect (service, TRUE, ex);
- return FALSE;
- }
-
- return TRUE;
-}
-
-static gboolean
-pop3_disconnect (CamelService *service, gboolean clean, CamelException *ex)
-{
- CamelPop3Store *store = CAMEL_POP3_STORE (service);
-
- if (clean)
- camel_pop3_command (store, NULL, ex, "QUIT");
-
- if (!CAMEL_SERVICE_CLASS (parent_class)->disconnect (service, clean, ex))
- return FALSE;
-
- return TRUE;
-}
-
-static CamelFolder *
-get_folder (CamelStore *store, const char *folder_name,
- guint32 flags, CamelException *ex)
-{
- if (g_strcasecmp (folder_name, "inbox") != 0) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_FOLDER_INVALID,
- _("No such folder `%s'."), folder_name);
- return NULL;
- }
- return camel_pop3_folder_new (store, ex);
-}
-
-static void
-init_trash (CamelStore *store)
-{
- /* no-op */
- ;
-}
-
-static CamelFolder *
-get_trash (CamelStore *store, CamelException *ex)
-{
- /* no-op */
- return NULL;
-}
-
-
-/**
- * camel_pop3_command: Send a command to a POP3 server.
- * @store: the POP3 store
- * @ret: a pointer to return the full server response in
- * @fmt: a printf-style format string, followed by arguments
- *
- * This command sends the command specified by @fmt and the following
- * arguments to the connected POP3 store specified by @store. It then
- * reads the server's response and parses out the status code. If
- * the caller passed a non-NULL pointer for @ret, camel_pop3_command
- * will set it to point to an buffer containing the rest of the
- * response from the POP3 server. (If @ret was passed but there was
- * no extended response, @ret will be set to NULL.) The caller must
- * free this buffer when it is done with it.
- *
- * Return value: one of CAMEL_POP3_OK (command executed successfully),
- * CAMEL_POP3_ERR (command encounted an error), or CAMEL_POP3_FAIL
- * (a protocol-level error occurred, and Camel is uncertain of the
- * result of the command.) @ex will be set if the return value is
- * CAMEL_POP3_FAIL, but *NOT* if it is CAMEL_POP3_ERR.
- **/
-int
-camel_pop3_command (CamelPop3Store *store, char **ret, CamelException *ex, char *fmt, ...)
-{
- char *cmdbuf;
- va_list ap;
-
- va_start (ap, fmt);
- cmdbuf = g_strdup_vprintf (fmt, ap);
- va_end (ap);
-
- /* Send the command */
- if (camel_remote_store_send_string (CAMEL_REMOTE_STORE (store), ex, "%s\r\n", cmdbuf) < 0) {
- g_free (cmdbuf);
- if (ret)
- *ret = NULL;
- return CAMEL_POP3_FAIL;
- }
- g_free (cmdbuf);
-
- return pop3_get_response (store, ret, ex);
-}
-
-static int
-pop3_get_response (CamelPop3Store *store, char **ret, CamelException *ex)
-{
- char *respbuf;
- int status;
-
- if (camel_remote_store_recv_line (CAMEL_REMOTE_STORE (store), &respbuf, ex) < 0) {
- if (ret)
- *ret = NULL;
- return CAMEL_POP3_FAIL;
- }
-
- if (!strncmp (respbuf, "+OK", 3))
- status = CAMEL_POP3_OK;
- else if (!strncmp (respbuf, "-ERR", 4))
- status = CAMEL_POP3_ERR;
- else
- status = CAMEL_POP3_FAIL;
-
- if (ret) {
- if (status != CAMEL_POP3_FAIL) {
- *ret = strchr (respbuf, ' ');
- if (*ret)
- *ret = g_strdup (*ret + 1);
- } else
- *ret = NULL;
- }
- g_free (respbuf);
-
- return status;
-}
-
-/**
- * camel_pop3_command_get_additional_data: get "additional data" from
- * a POP3 command.
- * @store: the POP3 store
- * @total: Total bytes expected (for progress reporting), use 0 for 'unknown'.
- *
- * This command gets the additional data returned by "multi-line" POP
- * commands, such as LIST, RETR, TOP, and UIDL. This command _must_
- * be called after a successful (CAMEL_POP3_OK) call to
- * camel_pop3_command for a command that has a multi-line response.
- * The returned data is un-byte-stuffed, and has lines termined by
- * newlines rather than CR/LF pairs.
- *
- * Return value: the data, which the caller must free.
- **/
-char *
-camel_pop3_command_get_additional_data (CamelPop3Store *store, int total, CamelException *ex)
-{
- GPtrArray *data;
- char *buf, *p;
- int i, len = 0, status = CAMEL_POP3_OK;
- int pc = 0;
-
- data = g_ptr_array_new ();
- while (1) {
- if (camel_remote_store_recv_line (CAMEL_REMOTE_STORE (store), &buf, ex) < 0) {
- status = CAMEL_POP3_FAIL;
- break;
- }
-
- if (!strcmp (buf, "."))
- break;
-
- g_ptr_array_add (data, buf);
- len += strlen (buf) + 1;
-
- if (total) {
- pc = (len+1) * 100 / total;
- camel_operation_progress(NULL, pc);
- } else {
- camel_operation_progress_count(NULL, len);
- }
- }
-
- if (buf)
- g_free (buf);
-
- if (status == CAMEL_POP3_OK) {
- buf = g_malloc0 (len + 1);
-
- for (i = 0, p = buf; i < data->len; i++) {
- char *ptr, *datap;
-
- datap = (char *) data->pdata[i];
- ptr = (*datap == '.') ? datap + 1 : datap;
- len = strlen (ptr);
- memcpy (p, ptr, len);
- p += len;
- *p++ = '\n';
- }
- *p = '\0';
- } else
- buf = NULL;
-
- for (i = 0; i < data->len; i++)
- g_free (data->pdata[i]);
- g_ptr_array_free (data, TRUE);
-
- return buf;
-}
-
diff --git a/camel/providers/pop3/camel-pop3-store.h b/camel/providers/pop3/camel-pop3-store.h
deleted file mode 100644
index 078a317a14..0000000000
--- a/camel/providers/pop3/camel-pop3-store.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-pop3-store.h : class for an pop3 store */
-
-/*
- * Authors:
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_POP3_STORE_H
-#define CAMEL_POP3_STORE_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include "camel-types.h"
-#include "camel-remote-store.h"
-
-#define CAMEL_POP3_STORE_TYPE (camel_pop3_store_get_type ())
-#define CAMEL_POP3_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_POP3_STORE_TYPE, CamelPop3Store))
-#define CAMEL_POP3_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_POP3_STORE_TYPE, CamelPop3StoreClass))
-#define CAMEL_IS_POP3_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_POP3_STORE_TYPE))
-
-
-typedef struct {
- CamelRemoteStore parent_object;
-
- char *apop_timestamp, *implementation;
- gboolean supports_top, supports_uidl, expires;
- int login_delay;
-
-} CamelPop3Store;
-
-
-
-typedef struct {
- CamelRemoteStoreClass parent_class;
-
-} CamelPop3StoreClass;
-
-
-/* public methods */
-void camel_pop3_store_expunge (CamelPop3Store *store, CamelException *ex);
-
-/* support functions */
-enum { CAMEL_POP3_OK, CAMEL_POP3_ERR, CAMEL_POP3_FAIL };
-int camel_pop3_command (CamelPop3Store *store, char **ret, CamelException *ex, char *fmt, ...);
-char *camel_pop3_command_get_additional_data (CamelPop3Store *store, int total, CamelException *ex);
-
-/* Standard Camel function */
-CamelType camel_pop3_store_get_type (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_POP3_STORE_H */
-
-
diff --git a/camel/providers/pop3/libcamelpop3.urls b/camel/providers/pop3/libcamelpop3.urls
deleted file mode 100644
index 7fffa4d861..0000000000
--- a/camel/providers/pop3/libcamelpop3.urls
+++ /dev/null
@@ -1 +0,0 @@
-pop
diff --git a/camel/providers/sendmail/.cvsignore b/camel/providers/sendmail/.cvsignore
deleted file mode 100644
index 097fdedafb..0000000000
--- a/camel/providers/sendmail/.cvsignore
+++ /dev/null
@@ -1,11 +0,0 @@
-Makefile
-Makefile.in
-.deps
-.libs
-*.lo
-*.la
-*.o
-*.bb
-*.bbg
-*.da
-*.gcov
diff --git a/camel/providers/sendmail/Makefile.am b/camel/providers/sendmail/Makefile.am
deleted file mode 100644
index deec529871..0000000000
--- a/camel/providers/sendmail/Makefile.am
+++ /dev/null
@@ -1,31 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-libcamelsendmailincludedir = $(includedir)/camel
-
-
-providerdir = $(pkglibdir)/camel-providers/$(VERSION)
-
-provider_LTLIBRARIES = libcamelsendmail.la
-provider_DATA = libcamelsendmail.urls
-
-INCLUDES = \
- -I.. \
- -I$(srcdir)/.. \
- -I$(srcdir)/../../.. \
- -I$(includedir) \
- -I$(top_srcdir)/intl \
- -I$(top_srcdir)/camel \
- $(GNOME_INCLUDEDIR) \
- $(GTK_INCLUDEDIR) \
- -DG_LOG_DOMAIN=\"camel-sendmail-provider\"
-
-libcamelsendmail_la_SOURCES = \
- camel-sendmail-provider.c \
- camel-sendmail-transport.c
-
-libcamelsendmailinclude_HEADERS = \
- camel-sendmail-transport.h
-
-libcamelsendmail_la_LDFLAGS = -version-info 0:0:0
-
-EXTRA_DIST = libcamelsendmail.urls
diff --git a/camel/providers/sendmail/camel-sendmail-provider.c b/camel/providers/sendmail/camel-sendmail-provider.c
deleted file mode 100644
index 2e9168f772..0000000000
--- a/camel/providers/sendmail/camel-sendmail-provider.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-sendmail-provider.c: sendmail provider registration code */
-
-/*
- * Authors :
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "camel-provider.h"
-#include "camel-sendmail-transport.h"
-#include "camel-session.h"
-#include "camel-url.h"
-
-static CamelProvider sendmail_provider = {
- "sendmail",
- N_("Sendmail"),
-
- N_("For delivering mail by passing it to the \"sendmail\" program "
- "on the local system."),
-
- "mail",
-
- 0, /* flags */
-
- 0, /* url_flags */
-
- /* ... */
-};
-
-void
-camel_provider_module_init (CamelSession *session)
-{
- sendmail_provider.object_types[CAMEL_PROVIDER_TRANSPORT] =
- camel_sendmail_transport_get_type();
-
- sendmail_provider.service_cache = g_hash_table_new (camel_url_hash, camel_url_equal);
-
- camel_session_register_provider (session, &sendmail_provider);
-}
-
-
-
diff --git a/camel/providers/sendmail/camel-sendmail-transport.c b/camel/providers/sendmail/camel-sendmail-transport.c
deleted file mode 100644
index 9cd0c1efa1..0000000000
--- a/camel/providers/sendmail/camel-sendmail-transport.c
+++ /dev/null
@@ -1,250 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-sendmail-transport.c: Sendmail-based transport class. */
-
-/*
- *
- * Authors: Dan Winship <danw@helixcode.com>
- *
- * Copyright 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <errno.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <sys/wait.h>
-#include <unistd.h>
-#include <string.h>
-
-#include "camel-sendmail-transport.h"
-#include "camel-mime-message.h"
-#include "camel-data-wrapper.h"
-#include "camel-stream-fs.h"
-#include "camel-exception.h"
-
-static char *get_name (CamelService *service, gboolean brief);
-
-static gboolean sendmail_can_send (CamelTransport *transport, CamelMedium *message);
-static gboolean sendmail_send (CamelTransport *transport, CamelMedium *message,
- CamelException *ex);
-static gboolean sendmail_send_to (CamelTransport *transport, CamelMedium *message,
- GList *recipients, CamelException *ex);
-
-
-static void
-camel_sendmail_transport_class_init (CamelSendmailTransportClass *camel_sendmail_transport_class)
-{
- CamelTransportClass *camel_transport_class =
- CAMEL_TRANSPORT_CLASS (camel_sendmail_transport_class);
- CamelServiceClass *camel_service_class =
- CAMEL_SERVICE_CLASS (camel_sendmail_transport_class);
-
- /* virtual method overload */
- camel_service_class->get_name = get_name;
-
- camel_transport_class->can_send = sendmail_can_send;
- camel_transport_class->send = sendmail_send;
- camel_transport_class->send_to = sendmail_send_to;
-}
-
-CamelType
-camel_sendmail_transport_get_type (void)
-{
- static CamelType camel_sendmail_transport_type = CAMEL_INVALID_TYPE;
-
- if (camel_sendmail_transport_type == CAMEL_INVALID_TYPE) {
- camel_sendmail_transport_type =
- camel_type_register (CAMEL_TRANSPORT_TYPE, "CamelSendmailTransport",
- sizeof (CamelSendmailTransport),
- sizeof (CamelSendmailTransportClass),
- (CamelObjectClassInitFunc) camel_sendmail_transport_class_init,
- NULL,
- (CamelObjectInitFunc) NULL,
- NULL);
- }
-
- return camel_sendmail_transport_type;
-}
-
-
-static gboolean
-sendmail_can_send (CamelTransport *transport, CamelMedium *message)
-{
- return CAMEL_IS_MIME_MESSAGE (message);
-}
-
-
-static gboolean
-sendmail_send_internal (CamelMedium *message, const char **argv, CamelException *ex)
-{
- int fd[2], nullfd, wstat;
- sigset_t mask, omask;
- CamelStream *out;
- pid_t pid;
-
- g_assert (CAMEL_IS_MIME_MESSAGE (message));
-
- if (pipe (fd) == -1) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not create pipe to sendmail: "
- "%s: mail not sent"),
- g_strerror (errno));
- return FALSE;
- }
-
- /* Block SIGCHLD so the calling application doesn't notice
- * sendmail exiting before we do.
- */
- sigemptyset (&mask);
- sigaddset (&mask, SIGCHLD);
- sigprocmask (SIG_BLOCK, &mask, &omask);
-
- pid = fork ();
- switch (pid) {
- case -1:
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not fork sendmail: "
- "%s: mail not sent"),
- g_strerror (errno));
- sigprocmask (SIG_SETMASK, &omask, NULL);
- return FALSE;
-
- case 0:
- /* Child process */
- nullfd = open ("/dev/null", O_RDWR);
- dup2 (fd[0], STDIN_FILENO);
- dup2 (nullfd, STDOUT_FILENO);
- dup2 (nullfd, STDERR_FILENO);
- close (nullfd);
- close (fd[1]);
-
- execv (SENDMAIL_PATH, (char **)argv);
- _exit (255);
- }
-
- /* Parent process. Write the message out. */
- close (fd[0]);
- out = camel_stream_fs_new_with_fd (fd[1]);
- if (camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (message), out) == -1
- || camel_stream_close(out) == -1) {
- camel_object_unref (CAMEL_OBJECT (out));
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not send message: %s"),
- strerror(errno));
- return FALSE;
- }
- camel_object_unref (CAMEL_OBJECT (out));
-
- /* Wait for sendmail to exit. */
- while (waitpid (pid, &wstat, 0) == -1 && errno == EINTR)
- ;
- sigprocmask (SIG_SETMASK, &omask, NULL);
-
- if (!WIFEXITED (wstat)) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("sendmail exited with signal %s: "
- "mail not sent."),
- g_strsignal (WTERMSIG (wstat)));
- return FALSE;
- } else if (WEXITSTATUS (wstat) != 0) {
- if (WEXITSTATUS (wstat) == 255) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Could not execute %s: "
- "mail not sent."),
- SENDMAIL_PATH);
- } else {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("sendmail exited with status "
- "%d: mail not sent."),
- WEXITSTATUS (wstat));
- }
- return FALSE;
- }
-
- return TRUE;
-}
-
-static const char *
-get_from (CamelMedium *message, CamelException *ex)
-{
- const CamelInternetAddress *from;
- const char *name, *address;
-
- from = camel_mime_message_get_from (CAMEL_MIME_MESSAGE (message));
- if (!from || !camel_internet_address_get (from, 0, &name, &address)) {
- camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("Could not find 'From' address in message"));
- return NULL;
- }
- return address;
-}
-
-static gboolean
-sendmail_send_to (CamelTransport *transport, CamelMedium *message,
- GList *recipients, CamelException *ex)
-{
- GList *r;
- const char *from, **argv;
- int i, len;
- gboolean status;
-
- from = get_from (message, ex);
- if (!from)
- return FALSE;
-
- len = g_list_length (recipients);
- argv = g_malloc ((len + 6) * sizeof (char *));
- argv[0] = "sendmail";
- argv[1] = "-i";
- argv[2] = "-f";
- argv[3] = from;
- argv[4] = "--";
-
- for (i = 1, r = recipients; i <= len; i++, r = r->next)
- argv[i + 4] = r->data;
- argv[i + 4] = NULL;
-
- status = sendmail_send_internal (message, argv, ex);
- g_free (argv);
- return status;
-}
-
-static gboolean
-sendmail_send (CamelTransport *transport, CamelMedium *message,
- CamelException *ex)
-{
- const char *argv[6] = { "sendmail", "-t", "-i", "-f", NULL, NULL };
-
- argv[4] = get_from (message, ex);
- if (!argv[4])
- return FALSE;
-
- return sendmail_send_internal (message, argv, ex);
-}
-
-static char *
-get_name (CamelService *service, gboolean brief)
-{
- if (brief)
- return g_strdup (_("sendmail"));
- else
- return g_strdup (_("Mail delivery via the sendmail program"));
-}
diff --git a/camel/providers/sendmail/camel-sendmail-transport.h b/camel/providers/sendmail/camel-sendmail-transport.h
deleted file mode 100644
index bb5dca071b..0000000000
--- a/camel/providers/sendmail/camel-sendmail-transport.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-sendmail-transport.h: Sendmail-based transport class */
-
-/*
- *
- * Author :
- * Dan Winship <danw@helixcode.com>
- *
- * Copyright 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_SENDMAIL_TRANSPORT_H
-#define CAMEL_SENDMAIL_TRANSPORT_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include "camel-transport.h"
-
-#define CAMEL_SENDMAIL_TRANSPORT_TYPE (camel_sendmail_transport_get_type ())
-#define CAMEL_SENDMAIL_TRANSPORT(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SENDMAIL_TRANSPORT_TYPE, CamelSendmailTransport))
-#define CAMEL_SENDMAIL_TRANSPORT_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SENDMAIL_TRANSPORT_TYPE, CamelSendmailTransportClass))
-#define CAMEL_IS_SENDMAIL_TRANSPORT(o) (CAMEL_CHECK_TYPE((o), CAMEL_SENDMAIL_TRANSPORT_TYPE))
-
-
-typedef struct {
- CamelTransport parent_object;
-
-} CamelSendmailTransport;
-
-
-typedef struct {
- CamelTransportClass parent_class;
-
-} CamelSendmailTransportClass;
-
-
-/* Standard Camel function */
-CamelType camel_sendmail_transport_get_type (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_SENDMAIL_TRANSPORT_H */
diff --git a/camel/providers/sendmail/libcamelsendmail.urls b/camel/providers/sendmail/libcamelsendmail.urls
deleted file mode 100644
index ccad52828e..0000000000
--- a/camel/providers/sendmail/libcamelsendmail.urls
+++ /dev/null
@@ -1 +0,0 @@
-sendmail
diff --git a/camel/providers/smtp/.cvsignore b/camel/providers/smtp/.cvsignore
deleted file mode 100644
index b948585108..0000000000
--- a/camel/providers/smtp/.cvsignore
+++ /dev/null
@@ -1,10 +0,0 @@
-.deps
-.libs
-Makefile
-Makefile.in
-*.lo
-*.la
-*.bb
-*.bbg
-*.da
-*.gcov
diff --git a/camel/providers/smtp/Makefile.am b/camel/providers/smtp/Makefile.am
deleted file mode 100644
index fcc2b06f9d..0000000000
--- a/camel/providers/smtp/Makefile.am
+++ /dev/null
@@ -1,37 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-libcamelsmtpincludedir = $(includedir)/camel
-
-providerdir = $(pkglibdir)/camel-providers/$(VERSION)
-
-provider_LTLIBRARIES = libcamelsmtp.la
-provider_DATA = libcamelsmtp.urls
-
-INCLUDES = \
- -I.. \
- -I$(srcdir)/.. \
- -I$(srcdir)/../../.. \
- -I$(includedir) \
- -I$(top_srcdir)/intl \
- -I$(top_srcdir)/camel \
- -I$(top_srcdir)/e-util \
- $(GNOME_INCLUDEDIR) \
- $(GTK_INCLUDEDIR) \
- $(NSPR_CFLAGS) \
- $(NSS_CFLAGS) \
- $(OPENSSL_CFLAGS) \
- -DG_LOG_DOMAIN=\"camel-smtp-provider\"
-
-libcamelsmtp_la_SOURCES = \
- camel-smtp-provider.c \
- camel-smtp-transport.c
-
-libcamelsmtpinclude_HEADERS = \
- camel-smtp-transport.h
-
-
-libcamelsmtp_la_LDFLAGS = -version-info 0:0:0
-
-libcamelsmtp_la_LIBADD = $(top_builddir)/e-util/libeutil.la
-
-EXTRA_DIST = libcamelsmtp.urls
diff --git a/camel/providers/smtp/camel-smtp-provider.c b/camel/providers/smtp/camel-smtp-provider.c
deleted file mode 100644
index 3bb47b3429..0000000000
--- a/camel/providers/smtp/camel-smtp-provider.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-smtp-provider.c: smtp provider registration code */
-
-/*
- * Authors :
- * Jeffrey Stedfast <fejj@stampede.org>
- *
- * Copyright (C) 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "camel-smtp-transport.h"
-#include "camel-provider.h"
-#include "camel-session.h"
-#include "camel-url.h"
-#include "camel-sasl.h"
-
-static CamelProvider smtp_provider = {
- "smtp",
- N_("SMTP"),
-
- N_("For delivering mail by connecting to a remote mailhub "
- "using SMTP.\n"),
-
- "mail",
-
- CAMEL_PROVIDER_IS_REMOTE | CAMEL_PROVIDER_SUPPORTS_SSL,
-
- CAMEL_URL_NEED_HOST | CAMEL_URL_ALLOW_AUTH | CAMEL_URL_ALLOW_USER,
-
- /* ... */
-};
-
-void
-camel_provider_module_init (CamelSession *session)
-{
- smtp_provider.object_types[CAMEL_PROVIDER_TRANSPORT] =
- camel_smtp_transport_get_type ();
- smtp_provider.authtypes = g_list_append (camel_sasl_authtype_list (TRUE),
- camel_sasl_authtype ("LOGIN"));
- smtp_provider.service_cache = g_hash_table_new (camel_url_hash, camel_url_equal);
-
- camel_session_register_provider (session, &smtp_provider);
-}
-
-
-
diff --git a/camel/providers/smtp/camel-smtp-transport.c b/camel/providers/smtp/camel-smtp-transport.c
deleted file mode 100644
index c081bd9a13..0000000000
--- a/camel/providers/smtp/camel-smtp-transport.c
+++ /dev/null
@@ -1,1093 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-smtp-transport.c : class for a smtp transport */
-
-/*
- * Authors: Jeffrey Stedfast <fejj@helixcode.com>
- *
- * Copyright (C) 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <unistd.h>
-#undef MIN
-#undef MAX
-#include "camel-mime-filter-crlf.h"
-#include "camel-mime-filter-linewrap.h"
-#include "camel-stream-filter.h"
-#include "camel-smtp-transport.h"
-#include "camel-mime-message.h"
-#include "camel-multipart.h"
-#include "camel-mime-part.h"
-#include "camel-stream-buffer.h"
-#include "camel-tcp-stream.h"
-#include "camel-tcp-stream-raw.h"
-#ifdef HAVE_NSS
-#include "camel-tcp-stream-ssl.h"
-#include <prnetdb.h>
-#endif
-#ifdef HAVE_OPENSSL
-#include "camel-tcp-stream-openssl.h"
-#endif
-#include "camel-session.h"
-#include "camel-exception.h"
-#include "camel-sasl.h"
-#include "string-utils.h"
-
-#define d(x) x
-
-/* Specified in RFC 821 */
-#define SMTP_PORT 25
-
-/* camel smtp transport class prototypes */
-static gboolean smtp_can_send (CamelTransport *transport, CamelMedium *message);
-static gboolean smtp_send (CamelTransport *transport, CamelMedium *message, CamelException *ex);
-static gboolean smtp_send_to (CamelTransport *transport, CamelMedium *message, GList *recipients, CamelException *ex);
-
-/* support prototypes */
-static void smtp_construct (CamelService *service, CamelSession *session,
- CamelProvider *provider, CamelURL *url,
- CamelException *ex);
-static gboolean smtp_connect (CamelService *service, CamelException *ex);
-static gboolean smtp_disconnect (CamelService *service, gboolean clean, CamelException *ex);
-static GHashTable *esmtp_get_authtypes (gchar *buffer);
-static GList *query_auth_types (CamelService *service, CamelException *ex);
-static char *get_name (CamelService *service, gboolean brief);
-
-static gboolean smtp_helo (CamelSmtpTransport *transport, CamelException *ex);
-static gboolean smtp_auth (CamelSmtpTransport *transport, const char *mech, CamelException *ex);
-static gboolean smtp_mail (CamelSmtpTransport *transport, const char *sender,
- gboolean has_8bit_parts, CamelException *ex);
-static gboolean smtp_rcpt (CamelSmtpTransport *transport, const char *recipient, CamelException *ex);
-static gboolean smtp_data (CamelSmtpTransport *transport, CamelMedium *message,
- gboolean has_8bit_parts, CamelException *ex);
-static gboolean smtp_rset (CamelSmtpTransport *transport, CamelException *ex);
-static gboolean smtp_quit (CamelSmtpTransport *transport, CamelException *ex);
-
-/* private data members */
-static CamelTransportClass *parent_class = NULL;
-
-static void
-camel_smtp_transport_class_init (CamelSmtpTransportClass *camel_smtp_transport_class)
-{
- CamelTransportClass *camel_transport_class =
- CAMEL_TRANSPORT_CLASS (camel_smtp_transport_class);
- CamelServiceClass *camel_service_class =
- CAMEL_SERVICE_CLASS (camel_smtp_transport_class);
-
- parent_class = CAMEL_TRANSPORT_CLASS (camel_type_get_global_classfuncs (camel_transport_get_type ()));
-
- /* virtual method overload */
- camel_service_class->construct = smtp_construct;
- camel_service_class->connect = smtp_connect;
- camel_service_class->disconnect = smtp_disconnect;
- camel_service_class->query_auth_types = query_auth_types;
- camel_service_class->get_name = get_name;
-
- camel_transport_class->can_send = smtp_can_send;
- camel_transport_class->send = smtp_send;
- camel_transport_class->send_to = smtp_send_to;
-}
-
-static void
-camel_smtp_transport_init (gpointer object)
-{
- CamelTransport *transport = CAMEL_TRANSPORT (object);
-
- transport->supports_8bit = FALSE;
-}
-
-CamelType
-camel_smtp_transport_get_type (void)
-{
- static CamelType camel_smtp_transport_type = CAMEL_INVALID_TYPE;
-
- if (camel_smtp_transport_type == CAMEL_INVALID_TYPE) {
- camel_smtp_transport_type =
- camel_type_register (CAMEL_TRANSPORT_TYPE, "CamelSmtpTransport",
- sizeof (CamelSmtpTransport),
- sizeof (CamelSmtpTransportClass),
- (CamelObjectClassInitFunc) camel_smtp_transport_class_init,
- NULL,
- (CamelObjectInitFunc) camel_smtp_transport_init,
- NULL);
- }
-
- return camel_smtp_transport_type;
-}
-
-static void
-smtp_construct (CamelService *service, CamelSession *session,
- CamelProvider *provider, CamelURL *url,
- CamelException *ex)
-{
- CamelSmtpTransport *smtp_transport = CAMEL_SMTP_TRANSPORT (service);
-
- CAMEL_SERVICE_CLASS (parent_class)->construct (service, session, provider, url, ex);
-
- if (camel_url_get_param (url, "use_ssl"))
- smtp_transport->use_ssl = TRUE;
-}
-
-static const char *
-get_smtp_error_string (int error)
-{
- /* SMTP error codes grabbed from rfc821 */
- switch (error) {
- case 0:
- /* looks like a read problem, check errno */
- return g_strerror (errno);
- case 500:
- return _("Syntax error, command unrecognized");
- case 501:
- return _("Syntax error in parameters or arguments");
- case 502:
- return _("Command not implemented");
- case 504:
- return _("Command parameter not implemented");
- case 211:
- return _("System status, or system help reply");
- case 214:
- return _("Help message");
- case 220:
- return _("Service ready");
- case 221:
- return _("Service closing transmission channel");
- case 421:
- return _("Service not available, closing transmission channel");
- case 250:
- return _("Requested mail action okay, completed");
- case 251:
- return _("User not local; will forward to <forward-path>");
- case 450:
- return _("Requested mail action not taken: mailbox unavailable");
- case 550:
- return _("Requested action not taken: mailbox unavailable");
- case 451:
- return _("Requested action aborted: error in processing");
- case 551:
- return _("User not local; please try <forward-path>");
- case 452:
- return _("Requested action not taken: insufficient system storage");
- case 552:
- return _("Requested mail action aborted: exceeded storage allocation");
- case 553:
- return _("Requested action not taken: mailbox name not allowed");
- case 354:
- return _("Start mail input; end with <CRLF>.<CRLF>");
- case 554:
- return _("Transaction failed");
-
- /* AUTH error codes: */
- case 432:
- return _("A password transition is needed");
- case 534:
- return _("Authentication mechanism is too weak");
- case 538:
- return _("Encryption required for requested authentication mechanism");
- case 454:
- return _("Temporary authentication failure");
- case 530:
- return _("Authentication required");
-
- default:
- return _("Unknown");
- }
-}
-
-static gboolean
-connect_to_server (CamelService *service, CamelException *ex)
-{
- CamelSmtpTransport *transport = CAMEL_SMTP_TRANSPORT (service);
- CamelStream *tcp_stream;
- gchar *respbuf = NULL;
- struct hostent *h;
- guint32 addrlen;
- int port, ret;
-
- if (!CAMEL_SERVICE_CLASS (parent_class)->connect (service, ex))
- return FALSE;
-
- h = camel_service_gethost (service, ex);
- if (!h)
- return FALSE;
-
- /* set some smtp transport defaults */
- transport->is_esmtp = FALSE;
- transport->authtypes = NULL;
- CAMEL_TRANSPORT (transport)->supports_8bit = FALSE;
-
- port = service->url->port ? service->url->port : SMTP_PORT;
-
-#if defined(HAVE_NSS) || defined(HAVE_OPENSSL)
- if (transport->use_ssl) {
- port = service->url->port ? service->url->port : 465;
-#ifdef HAVE_NSS
- /* use the preferred implementation - NSS */
- tcp_stream = camel_tcp_stream_ssl_new (service, service->url->host);
-#else
- tcp_stream = camel_tcp_stream_openssl_new (service, service->url->host);
-#endif /* HAVE_NSS */
- } else {
- tcp_stream = camel_tcp_stream_raw_new ();
- }
-#else
- tcp_stream = camel_tcp_stream_raw_new ();
-#endif /* HAVE_NSS || HAVE_OPENSSL */
-
- ret = camel_tcp_stream_connect (CAMEL_TCP_STREAM (tcp_stream), h, port);
- camel_free_host(h);
- if (ret == -1) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("Could not connect to %s (port %d): %s"),
- service->url->host, port,
- g_strerror (errno));
-
- return FALSE;
- }
-
- /* get the localaddr - needed later by smtp_helo */
- addrlen = sizeof (transport->localaddr);
-#ifdef HAVE_NSS
- if (transport->use_ssl) {
- PRFileDesc *sockfd = camel_tcp_stream_get_socket (CAMEL_TCP_STREAM (tcp_stream));
- PRNetAddr addr;
- char hname[1024];
-
- PR_GetSockName (sockfd, &addr);
- memset (hname, 0, sizeof (hname));
- PR_NetAddrToString (&addr, hname, 1023);
-
- inet_aton (hname, (struct in_addr *)&transport->localaddr.sin_addr);
- } else {
- int sockfd = GPOINTER_TO_INT (camel_tcp_stream_get_socket (CAMEL_TCP_STREAM (tcp_stream)));
-
- getsockname (sockfd, (struct sockaddr *)&transport->localaddr, &addrlen);
- }
-#else
- getsockname (CAMEL_TCP_STREAM_RAW (tcp_stream)->sockfd,
- (struct sockaddr *)&transport->localaddr, &addrlen);
-#endif /* HAVE_NSS */
-
- transport->ostream = tcp_stream;
- transport->istream = camel_stream_buffer_new (tcp_stream, CAMEL_STREAM_BUFFER_READ);
-
- /* Read the greeting, note whether the server is ESMTP or not. */
- do {
- /* Check for "220" */
- g_free (respbuf);
- respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream));
- if (!respbuf || strncmp (respbuf, "220", 3)) {
- int error;
-
- error = respbuf ? atoi (respbuf) : 0;
- g_free (respbuf);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Welcome response error: %s: possibly non-fatal"),
- get_smtp_error_string (error));
- return FALSE;
- }
- if (strstr (respbuf, "ESMTP"))
- transport->is_esmtp = TRUE;
- } while (*(respbuf+3) == '-'); /* if we got "220-" then loop again */
- g_free (respbuf);
-
- /* send HELO (or EHLO, depending on the service type) */
- if (!transport->is_esmtp) {
- /* If we did not auto-detect ESMTP, we should still send EHLO */
- transport->is_esmtp = TRUE;
- if (!smtp_helo (transport, NULL)) {
- /* Okay, apprently this server doesn't support ESMTP */
- transport->is_esmtp = FALSE;
- smtp_helo (transport, ex);
- }
- } else {
- /* send EHLO */
- smtp_helo (transport, ex);
- }
-
- return TRUE;
-}
-
-static gboolean
-smtp_connect (CamelService *service, CamelException *ex)
-{
- CamelSmtpTransport *transport = CAMEL_SMTP_TRANSPORT (service);
-
- if (!connect_to_server (service, ex))
- return FALSE;
-
- /* check to see if AUTH is required, if so...then AUTH ourselves */
- if (service->url->authmech) {
- CamelSession *session = camel_service_get_session (service);
- CamelServiceAuthType *authtype;
- gboolean authenticated = FALSE;
- char *errbuf = NULL;
-
- if (!transport->is_esmtp || !g_hash_table_lookup (transport->authtypes, service->url->authmech)) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("SMTP server %s does not support requested "
- "authentication type %s"), service->url->host,
- service->url->authmech);
- camel_service_disconnect (service, TRUE, NULL);
- return FALSE;
- }
-
- authtype = camel_sasl_authtype (service->url->authmech);
- if (!authtype) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("No support for authentication type %s"),
- service->url->authmech);
- camel_service_disconnect (service, TRUE, NULL);
- return FALSE;
- }
-
- if (!authtype->need_password) {
- /* authentication mechanism doesn't need a password,
- so if it fails there's nothing we can do */
- authenticated = smtp_auth (transport, authtype->authproto, ex);
- if (!authenticated) {
- camel_service_disconnect (service, TRUE, NULL);
- return FALSE;
- }
- }
-
- /* keep trying to login until either we succeed or the user cancels */
- while (!authenticated) {
- if (errbuf) {
- /* We need to un-cache the password before prompting again */
- camel_session_forget_password (
- session, service, "password", ex);
- g_free (service->url->passwd);
- service->url->passwd = NULL;
- }
-
- if (!service->url->passwd) {
- char *prompt;
-
- prompt = g_strdup_printf (_("%sPlease enter the SMTP password for %s@%s"),
- errbuf ? errbuf : "", service->url->user,
- service->url->host);
-
- service->url->passwd =
- camel_session_get_password (
- session, prompt, TRUE,
- service, "password", ex);
-
- g_free (prompt);
- g_free (errbuf);
- errbuf = NULL;
-
- if (!service->url->passwd) {
- camel_exception_set (ex, CAMEL_EXCEPTION_USER_CANCEL,
- _("You didn't enter a password."));
- camel_service_disconnect (service, TRUE, NULL);
- return FALSE;
- }
- }
-
- authenticated = smtp_auth (transport, authtype->authproto, ex);
- if (!authenticated) {
- errbuf = g_strdup_printf (_("Unable to authenticate "
- "to SMTP server.\n%s\n\n"),
- camel_exception_get_description (ex));
- camel_exception_clear (ex);
- }
- }
-
- /* The spec says we have to re-EHLO, but some servers
- * we won't bother to name don't want you to... so ignore
- * errors.
- */
- smtp_helo (transport, NULL);
- }
-
- return TRUE;
-}
-
-static gboolean
-authtypes_free (gpointer key, gpointer value, gpointer data)
-{
- g_free (key);
- g_free (value);
-
- return TRUE;
-}
-
-static gboolean
-smtp_disconnect (CamelService *service, gboolean clean, CamelException *ex)
-{
- CamelSmtpTransport *transport = CAMEL_SMTP_TRANSPORT (service);
-
- /*if (!service->connected)
- * return TRUE;
- */
-
- if (clean) {
- /* send the QUIT command to the SMTP server */
- smtp_quit (transport, ex);
- }
-
- if (!CAMEL_SERVICE_CLASS (parent_class)->disconnect (service, clean, ex))
- return FALSE;
-
- if (transport->authtypes) {
- g_hash_table_foreach_remove (transport->authtypes, authtypes_free, NULL);
- g_hash_table_destroy (transport->authtypes);
- transport->authtypes = NULL;
- }
-
- camel_object_unref (CAMEL_OBJECT (transport->ostream));
- camel_object_unref (CAMEL_OBJECT (transport->istream));
-
- transport->ostream = NULL;
- transport->istream = NULL;
-
- return TRUE;
-}
-
-static GHashTable *
-esmtp_get_authtypes (char *buffer)
-{
- GHashTable *table = NULL;
- gchar *start, *end;
-
- /* advance to the first token */
- for (start = buffer; isspace (*start) || *start == '='; start++);
-
- if (!*start) return NULL;
-
- table = g_hash_table_new (g_str_hash, g_str_equal);
-
- for ( ; *start; ) {
- char *type;
-
- /* advance to the end of the token */
- for (end = start; *end && !isspace (*end); end++);
-
- type = g_strndup (start, end - start);
- g_hash_table_insert (table, g_strdup (type), type);
-
- /* advance to the next token */
- for (start = end; isspace (*start); start++);
- }
-
- return table;
-}
-
-static GList *
-query_auth_types (CamelService *service, CamelException *ex)
-{
- CamelSmtpTransport *transport = CAMEL_SMTP_TRANSPORT (service);
- CamelServiceAuthType *authtype;
- GList *types, *t, *next;
-
- if (!connect_to_server (service, ex))
- return NULL;
-
- types = g_list_copy (service->provider->authtypes);
- for (t = types; t; t = next) {
- authtype = t->data;
- next = t->next;
-
- if (!g_hash_table_lookup (transport->authtypes, authtype->authproto)) {
- types = g_list_remove_link (types, t);
- g_list_free_1 (t);
- }
- }
-
- smtp_disconnect (service, TRUE, NULL);
- return types;
-}
-
-static char *
-get_name (CamelService *service, gboolean brief)
-{
- if (brief)
- return g_strdup_printf (_("SMTP server %s"), service->url->host);
- else {
- return g_strdup_printf (_("SMTP mail delivery via %s"),
- service->url->host);
- }
-}
-
-static gboolean
-smtp_can_send (CamelTransport *transport, CamelMedium *message)
-{
- return CAMEL_IS_MIME_MESSAGE (message);
-}
-
-static gboolean
-smtp_send_to (CamelTransport *transport, CamelMedium *message,
- GList *recipients, CamelException *ex)
-{
- CamelSmtpTransport *smtp_transport = CAMEL_SMTP_TRANSPORT (transport);
- const CamelInternetAddress *cia;
- char *recipient;
- const char *addr;
- gboolean has_8bit_parts;
- GList *r;
-
- cia = camel_mime_message_get_from(CAMEL_MIME_MESSAGE (message));
- if (!cia) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Cannot send message: "
- "sender address not defined."));
- return FALSE;
- }
-
- if (!camel_internet_address_get (cia, 0, NULL, &addr)) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Cannot send message: "
- "sender address not valid."));
- return FALSE;
- }
-
- /* find out if the message has 8bit mime parts */
- has_8bit_parts = camel_mime_message_has_8bit_parts (CAMEL_MIME_MESSAGE (message));
-
- /* rfc1652 (8BITMIME) requires that you notify the ESMTP daemon that
- you'll be sending an 8bit mime message at "MAIL FROM:" time. */
- smtp_mail (smtp_transport, addr, has_8bit_parts, ex);
-
- if (!recipients) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Cannot send message: "
- "no recipients defined."));
- return FALSE;
- }
-
- for (r = recipients; r; r = r->next) {
- recipient = (char *) r->data;
- if (!smtp_rcpt (smtp_transport, recipient, ex)) {
- g_free (recipient);
- return FALSE;
- }
- g_free (recipient);
- }
-
- /* passing in has_8bit_parts saves time as we don't have to
- recurse through the message all over again if the user is
- not sending 8bit mime parts */
- if (!smtp_data (smtp_transport, message, has_8bit_parts, ex))
- return FALSE;
-
- /* reset the service for our next transfer session */
- smtp_rset (smtp_transport, ex);
-
- return TRUE;
-}
-
-static gboolean
-smtp_send (CamelTransport *transport, CamelMedium *message, CamelException *ex)
-{
- const CamelInternetAddress *to, *cc, *bcc;
- GList *recipients = NULL;
- guint index, len;
-
- to = camel_mime_message_get_recipients (CAMEL_MIME_MESSAGE (message), CAMEL_RECIPIENT_TYPE_TO);
- cc = camel_mime_message_get_recipients (CAMEL_MIME_MESSAGE (message), CAMEL_RECIPIENT_TYPE_CC);
- bcc = camel_mime_message_get_recipients (CAMEL_MIME_MESSAGE (message), CAMEL_RECIPIENT_TYPE_BCC);
-
- /* get all of the To addresses into our recipient list */
- len = CAMEL_ADDRESS (to)->addresses->len;
- for (index = 0; index < len; index++) {
- const char *addr;
-
- if (camel_internet_address_get (to, index, NULL, &addr))
- recipients = g_list_append (recipients, g_strdup (addr));
- }
-
- /* get all of the Cc addresses into our recipient list */
- len = CAMEL_ADDRESS (cc)->addresses->len;
- for (index = 0; index < len; index++) {
- const char *addr;
-
- if (camel_internet_address_get (cc, index, NULL, &addr))
- recipients = g_list_append (recipients, g_strdup (addr));
- }
-
- /* get all of the Bcc addresses into our recipient list */
- len = CAMEL_ADDRESS (bcc)->addresses->len;
- for (index = 0; index < len; index++) {
- const char *addr;
-
- if (camel_internet_address_get (bcc, index, NULL, &addr))
- recipients = g_list_append (recipients, g_strdup (addr));
- }
-
- return smtp_send_to (transport, message, recipients, ex);
-}
-
-static gboolean
-smtp_helo (CamelSmtpTransport *transport, CamelException *ex)
-{
- /* say hello to the server */
- gchar *cmdbuf, *respbuf = NULL;
- struct hostent *host;
-
- /* get the local host name */
- host = gethostbyaddr ((gchar *)&transport->localaddr.sin_addr, sizeof (transport->localaddr.sin_addr), AF_INET);
-
- /* hiya server! how are you today? */
- if (transport->is_esmtp) {
- if (host && host->h_name)
- cmdbuf = g_strdup_printf ("EHLO %s\r\n", host->h_name);
- else
- cmdbuf = g_strdup_printf ("EHLO [%s]\r\n", inet_ntoa (transport->localaddr.sin_addr));
- } else {
- if (host && host->h_name)
- cmdbuf = g_strdup_printf ("HELO %s\r\n", host->h_name);
- else
- cmdbuf = g_strdup_printf ("HELO [%s]\r\n", inet_ntoa (transport->localaddr.sin_addr));
- }
-
- d(fprintf (stderr, "sending : %s", cmdbuf));
- if (camel_stream_write (transport->ostream, cmdbuf, strlen (cmdbuf)) == -1) {
- g_free (cmdbuf);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("HELO request timed out: %s: non-fatal"),
- g_strerror (errno));
- return FALSE;
- }
- g_free (cmdbuf);
-
- do {
- /* Check for "250" */
- g_free (respbuf);
- respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream));
-
- d(fprintf (stderr, "received: %s\n", respbuf ? respbuf : "(null)"));
-
- if (!respbuf || strncmp (respbuf, "250", 3)) {
- int error;
-
- error = respbuf ? atoi (respbuf) : 0;
- g_free (respbuf);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("HELO response error: %s: non-fatal"),
- get_smtp_error_string (error));
- return FALSE;
- }
-
- if (strstrcase (respbuf, "8BITMIME")) {
- d(fprintf (stderr, "This server supports 8bit MIME\n"));
- CAMEL_TRANSPORT (transport)->supports_8bit = TRUE;
- }
-
- /* Only parse authtypes if we don't already have them */
- if (transport->is_esmtp && strstr (respbuf, "AUTH") && !transport->authtypes) {
- /* parse for supported AUTH types */
- char *auths = strstr (respbuf, "AUTH") + 4;
-
- transport->authtypes = esmtp_get_authtypes (auths);
- }
- } while (*(respbuf+3) == '-'); /* if we got "250-" then loop again */
- g_free (respbuf);
-
- return TRUE;
-}
-
-static gboolean
-smtp_auth (CamelSmtpTransport *transport, const char *mech, CamelException *ex)
-{
- gchar *cmdbuf, *respbuf = NULL, *challenge;
- CamelSasl *sasl;
-
- sasl = camel_sasl_new ("smtp", mech, CAMEL_SERVICE (transport));
- if (!sasl) {
- g_free (respbuf);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("Error creating SASL authentication object."));
- return FALSE;
- }
-
- challenge = camel_sasl_challenge_base64 (sasl, NULL, ex);
- if (challenge) {
- cmdbuf = g_strdup_printf ("AUTH %s %s\r\n", mech, challenge);
- g_free (challenge);
- } else
- cmdbuf = g_strdup_printf ("AUTH %s\r\n", mech);
-
- d(fprintf (stderr, "sending : %s", cmdbuf));
- if (camel_stream_write (transport->ostream, cmdbuf, strlen (cmdbuf)) == -1) {
- g_free (cmdbuf);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("AUTH request timed out: %s"),
- g_strerror (errno));
- goto lose;
- }
- g_free (cmdbuf);
-
- respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream));
- d(fprintf (stderr, "received: %s\n", respbuf ? respbuf : "(null)"));
-
- while (!camel_sasl_authenticated (sasl)) {
- if (!respbuf) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("AUTH request timed out: %s"),
- g_strerror (errno));
- goto lose;
- }
-
- /* the server challenge/response should follow a 334 code */
- if (strcmp (respbuf, "334")) {
- g_free (respbuf);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("AUTH request failed."));
- goto lose;
- }
-
- /* eat whtspc */
- for (challenge = respbuf + 4; isspace (*challenge); challenge++);
-
- challenge = camel_sasl_challenge_base64 (sasl, challenge, ex);
- g_free (respbuf);
- if (camel_exception_is_set (ex))
- goto break_and_lose;
-
- /* send our challenge */
- cmdbuf = g_strdup_printf ("%s\r\n", challenge);
- g_free (challenge);
- d(fprintf (stderr, "sending : %s", cmdbuf));
- if (camel_stream_write (transport->ostream, cmdbuf, strlen (cmdbuf)) == -1) {
- g_free (cmdbuf);
- goto lose;
- }
- g_free (cmdbuf);
-
- /* get the server's response */
- respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream));
- d(fprintf (stderr, "received: %s\n", respbuf ? respbuf : "(null)"));
- }
-
- /* check that the server says we are authenticated */
- if (!respbuf || strncmp (respbuf, "235", 3)) {
- g_free (respbuf);
- goto lose;
- }
-
- return TRUE;
-
- break_and_lose:
- /* Get the server out of "waiting for continuation data" mode. */
- d(fprintf (stderr, "sending : *\n"));
- camel_stream_write (transport->ostream, "*\r\n", 3);
- respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream));
- d(fprintf (stderr, "received: %s\n", respbuf ? respbuf : "(null)"));
-
- lose:
- if (!camel_exception_is_set (ex)) {
- camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
- _("Bad authentication response from server.\n"));
- }
-
- if (sasl)
- camel_object_unref (CAMEL_OBJECT (sasl));
-
- return FALSE;
-}
-
-static gboolean
-smtp_mail (CamelSmtpTransport *transport, const char *sender, gboolean has_8bit_parts, CamelException *ex)
-{
- /* we gotta tell the smtp server who we are. (our email addy) */
- gchar *cmdbuf, *respbuf = NULL;
-
- /* enclose address in <>'s since some SMTP daemons *require* that */
- if (CAMEL_TRANSPORT (transport)->supports_8bit && has_8bit_parts)
- cmdbuf = g_strdup_printf ("MAIL FROM: <%s> BODY=8BITMIME\r\n", sender);
- else
- cmdbuf = g_strdup_printf ("MAIL FROM: <%s>\r\n", sender);
-
- d(fprintf (stderr, "sending : %s", cmdbuf));
-
- if (camel_stream_write (transport->ostream, cmdbuf, strlen (cmdbuf)) == -1) {
- g_free (cmdbuf);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("MAIL FROM request timed out: %s: mail not sent"),
- g_strerror (errno));
- return FALSE;
- }
- g_free (cmdbuf);
-
- do {
- /* Check for "250 Sender OK..." */
- g_free (respbuf);
- respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream));
-
- d(fprintf (stderr, "received: %s\n", respbuf ? respbuf : "(null)"));
-
- if (!respbuf || strncmp (respbuf, "250", 3)) {
- int error;
-
- error = respbuf ? atoi (respbuf) : 0;
- g_free (respbuf);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("MAIL FROM response error: %s: mail not sent"),
- get_smtp_error_string (error));
- return FALSE;
- }
- } while (*(respbuf+3) == '-'); /* if we got "250-" then loop again */
- g_free (respbuf);
-
- return TRUE;
-}
-
-static gboolean
-smtp_rcpt (CamelSmtpTransport *transport, const char *recipient, CamelException *ex)
-{
- /* we gotta tell the smtp server who we are going to be sending
- * our email to */
- gchar *cmdbuf, *respbuf = NULL;
-
- /* enclose address in <>'s since some SMTP daemons *require* that */
- cmdbuf = g_strdup_printf ("RCPT TO: <%s>\r\n", recipient);
-
- d(fprintf (stderr, "sending : %s", cmdbuf));
-
- if (camel_stream_write (transport->ostream, cmdbuf, strlen (cmdbuf)) == -1) {
- g_free (cmdbuf);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("RCPT TO request timed out: %s: mail not sent"),
- g_strerror (errno));
- return FALSE;
- }
- g_free (cmdbuf);
-
- do {
- /* Check for "250 Sender OK..." */
- g_free (respbuf);
- respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream));
-
- d(fprintf (stderr, "received: %s\n", respbuf ? respbuf : "(null)"));
-
- if (!respbuf || strncmp (respbuf, "250", 3)) {
- int error;
-
- error = respbuf ? atoi (respbuf) : 0;
- g_free (respbuf);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("RCPT TO response error: %s: mail not sent"),
- get_smtp_error_string (error));
- return FALSE;
- }
- } while (*(respbuf+3) == '-'); /* if we got "250-" then loop again */
- g_free (respbuf);
-
- return TRUE;
-}
-
-static gboolean
-smtp_data (CamelSmtpTransport *transport, CamelMedium *message, gboolean has_8bit_parts, CamelException *ex)
-{
- /* now we can actually send what's important :p */
- gchar *cmdbuf, *respbuf = NULL;
- CamelStreamFilter *filtered_stream;
- CamelMimeFilter *crlffilter;
-
- /* if the message contains 8bit mime parts and the server
- doesn't support it, encode 8bit parts to the best
- encoding. This will also enforce an encoding to keep the lines in limit */
- if (has_8bit_parts && !CAMEL_TRANSPORT (transport)->supports_8bit)
- camel_mime_message_encode_8bit_parts (CAMEL_MIME_MESSAGE (message));
-
- cmdbuf = g_strdup ("DATA\r\n");
-
- d(fprintf (stderr, "sending : %s", cmdbuf));
-
- if (camel_stream_write (transport->ostream, cmdbuf, strlen (cmdbuf)) == -1) {
- g_free (cmdbuf);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("DATA request timed out: %s: mail not sent"),
- g_strerror (errno));
- return FALSE;
- }
- g_free (cmdbuf);
-
- respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream));
-
- d(fprintf (stderr, "received: %s\n", respbuf ? respbuf : "(null)"));
-
- if (!respbuf || strncmp (respbuf, "354", 3)) {
- /* we should have gotten instructions on how to use the DATA command:
- * 354 Enter mail, end with "." on a line by itself
- */
- int error;
-
- error = respbuf ? atoi (respbuf) : 0;
- g_free (respbuf);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("DATA response error: %s: mail not sent"),
- get_smtp_error_string (error));
- return FALSE;
- }
-
- g_free (respbuf);
- respbuf = NULL;
-
- /* setup stream filtering */
- crlffilter = camel_mime_filter_crlf_new (CAMEL_MIME_FILTER_CRLF_ENCODE, CAMEL_MIME_FILTER_CRLF_MODE_CRLF_DOTS);
- filtered_stream = camel_stream_filter_new_with_stream (transport->ostream);
- camel_stream_filter_add (filtered_stream, CAMEL_MIME_FILTER (crlffilter));
-
- if (camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (message), CAMEL_STREAM (filtered_stream)) == -1) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("DATA send timed out: message termination: "
- "%s: mail not sent"),
- g_strerror (errno));
-
- camel_object_unref (CAMEL_OBJECT (filtered_stream));
-
- return FALSE;
- }
-
- camel_stream_flush (CAMEL_STREAM (filtered_stream));
- camel_object_unref (CAMEL_OBJECT (filtered_stream));
-
- /* terminate the message body */
-
- d(fprintf (stderr, "sending : \\r\\n.\\r\\n\n"));
-
- if (camel_stream_write (transport->ostream, "\r\n.\r\n", 5) == -1) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("DATA send timed out: message termination: "
- "%s: mail not sent"),
- g_strerror (errno));
- return FALSE;
- }
-
- do {
- /* Check for "250 Sender OK..." */
- g_free (respbuf);
- respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream));
-
- d(fprintf (stderr, "received: %s\n", respbuf ? respbuf : "(null)"));
-
- if (!respbuf || strncmp (respbuf, "250", 3)) {
- int error;
-
- error = respbuf ? atoi (respbuf) : 0;
- g_free (respbuf);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("DATA response error: message termination: "
- "%s: mail not sent"),
- get_smtp_error_string (error));
- return FALSE;
- }
- } while (*(respbuf+3) == '-'); /* if we got "250-" then loop again */
- g_free (respbuf);
-
- return TRUE;
-}
-
-static gboolean
-smtp_rset (CamelSmtpTransport *transport, CamelException *ex)
-{
- /* we are going to reset the smtp server (just to be nice) */
- gchar *cmdbuf, *respbuf = NULL;
-
- cmdbuf = g_strdup ("RSET\r\n");
-
- d(fprintf (stderr, "sending : %s", cmdbuf));
-
- if (camel_stream_write (transport->ostream, cmdbuf, strlen (cmdbuf)) == -1) {
- g_free (cmdbuf);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("RSET request timed out: %s"),
- g_strerror (errno));
- return FALSE;
- }
- g_free (cmdbuf);
-
- do {
- /* Check for "250" */
- g_free (respbuf);
- respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream));
-
- d(fprintf (stderr, "received: %s\n", respbuf ? respbuf : "(null)"));
-
- if (!respbuf || strncmp (respbuf, "250", 3)) {
- int error;
-
- error = respbuf ? atoi (respbuf) : 0;
- g_free (respbuf);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("RSET response error: %s"),
- get_smtp_error_string (error));
- return FALSE;
- }
- } while (*(respbuf+3) == '-'); /* if we got "250-" then loop again */
- g_free (respbuf);
-
- return TRUE;
-}
-
-static gboolean
-smtp_quit (CamelSmtpTransport *transport, CamelException *ex)
-{
- /* we are going to reset the smtp server (just to be nice) */
- gchar *cmdbuf, *respbuf = NULL;
-
- cmdbuf = g_strdup ("QUIT\r\n");
-
- d(fprintf (stderr, "sending : %s", cmdbuf));
-
- if (camel_stream_write (transport->ostream, cmdbuf, strlen (cmdbuf)) == -1) {
- g_free (cmdbuf);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("QUIT request timed out: %s: non-fatal"),
- g_strerror (errno));
- return FALSE;
- }
- g_free (cmdbuf);
-
- do {
- /* Check for "221" */
- g_free (respbuf);
- respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream));
-
- d(fprintf (stderr, "received: %s\n", respbuf ? respbuf : "(null)"));
-
- if (!respbuf || strncmp (respbuf, "221", 3)) {
- int error;
-
- error = respbuf ? atoi (respbuf) : 0;
- g_free (respbuf);
- camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
- _("QUIT response error: %s: non-fatal"),
- get_smtp_error_string (error));
- return FALSE;
- }
- } while (*(respbuf+3) == '-'); /* if we got "221-" then loop again */
- g_free (respbuf);
-
- return TRUE;
-}
diff --git a/camel/providers/smtp/camel-smtp-transport.h b/camel/providers/smtp/camel-smtp-transport.h
deleted file mode 100644
index 4515fe1f07..0000000000
--- a/camel/providers/smtp/camel-smtp-transport.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* camel-smtp-transport.h : class for an smtp transfer */
-
-/*
- * Authors:
- * Jeffrey Stedfast <fejj@stampede.org>
- *
- * Copyright (C) 2000 Helix Code, Inc. (www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef CAMEL_SMTP_TRANSPORT_H
-#define CAMEL_SMTP_TRANSPORT_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-#include "camel-transport.h"
-
-#define CAMEL_SMTP_TRANSPORT_TYPE (camel_smtp_transport_get_type ())
-#define CAMEL_SMTP_TRANSPORT(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SMTP_TRANSPORT_TYPE, CamelSmtpTransport))
-#define CAMEL_SMTP_TRANSPORT_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SMTP_TRANSPORT_TYPE, CamelSmtpTransportClass))
-#define CAMEL_IS_SMTP_TRANSPORT(o) (CAMEL_CHECK_TYPE((o), CAMEL_SMTP_TRANSPORT_TYPE))
-
-
-typedef struct {
- CamelTransport parent_object;
-
- CamelStream *istream, *ostream;
-
- gboolean use_ssl, is_esmtp;
-
- struct sockaddr_in localaddr;
-
- GHashTable *authtypes;
-
-} CamelSmtpTransport;
-
-
-
-typedef struct {
- CamelTransportClass parent_class;
-
-} CamelSmtpTransportClass;
-
-
-/* Standard Camel function */
-CamelType camel_smtp_transport_get_type (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* CAMEL_SMTP_TRANSPORT_H */
-
-
diff --git a/camel/providers/smtp/libcamelsmtp.urls b/camel/providers/smtp/libcamelsmtp.urls
deleted file mode 100644
index ec2fc0fc16..0000000000
--- a/camel/providers/smtp/libcamelsmtp.urls
+++ /dev/null
@@ -1 +0,0 @@
-smtp
diff --git a/camel/string-utils.c b/camel/string-utils.c
deleted file mode 100644
index 584e2dad0d..0000000000
--- a/camel/string-utils.c
+++ /dev/null
@@ -1,233 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* string-util : utilities for gchar* strings */
-
-/*
- *
- * Authors: Bertrand Guiheneuf <bertrand@helixcode.com>
- * Jeffrey Stedfast <fejj@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "string-utils.h"
-#include "string.h"
-
-gboolean
-string_equal_for_glist (gconstpointer v, gconstpointer v2)
-{
- return (!strcmp ( ((const gchar *)v), ((const gchar*)v2))) == 0;
-}
-
-/* utility func : frees a gchar element in a GList */
-static void
-__string_list_free_string (gpointer data, gpointer user_data)
-{
- gchar *string = (gchar *)data;
- g_free (string);
-}
-
-void
-string_list_free (GList *string_list)
-{
- if (string_list == NULL) return;
-
- g_list_foreach (string_list, __string_list_free_string, NULL);
- g_list_free (string_list);
-}
-
-GList *
-string_split (const gchar *string, char sep, const gchar *trim_chars, StringTrimOption trim_options)
-{
- GList *result = NULL;
- gint first, last, pos;
- gchar *new_string;
-
- g_assert (string);
-
- first = 0;
- last = strlen(string) - 1;
-
- /* strip leading and trailing separators */
- while ( (first<=last) && (string[first]==sep) )
- first++;
- while ( (first<=last) && (string[last]==sep) )
- last--;
-
-
- while (first<=last) {
- pos = first;
- /* find next separator */
- while ((pos<=last) && (string[pos]!=sep)) pos++;
- if (first != pos) {
- new_string = g_strndup (string+first, pos-first);
- /* could do trimming in line to speed up this code */
- if (trim_chars) string_trim (new_string, trim_chars, trim_options);
- result = g_list_append (result, new_string);
- }
- first = pos + 1;
- }
-
- return result;
-}
-
-void
-string_trim (gchar *string, const gchar *trim_chars, StringTrimOption options)
-{
- gint first_ok;
- gint last_ok;
- guint length;
-
- g_return_if_fail (string);
- length = strlen (string);
- if (length==0)
- return;
-
- first_ok = 0;
- last_ok = length - 1;
-
- if (options & STRING_TRIM_STRIP_LEADING)
- while ( (first_ok <= last_ok) && (strchr (trim_chars, string[first_ok])!=NULL) )
- first_ok++;
-
- if (options & STRING_TRIM_STRIP_TRAILING)
- while ( (first_ok <= last_ok) && (strchr (trim_chars, string[last_ok])!=NULL) )
- last_ok--;
-
- if (first_ok > 0)
- memmove (string, string+first_ok, last_ok - first_ok + 1);
- string[last_ok - first_ok +1] = '\0';
-
-}
-
-
-/**
- * remove_suffix: remove a suffix from a string
- * @s: the string to remove the suffix from.
- * @suffix: the suffix to remove
- * @suffix_found : suffix found flag
- *
- * Remove a suffix from a string. If the
- * string ends with the full suffix, a copy
- * of the string without the suffix is returned and
- * @suffix_found is set to %TRUE.
- * Otherwise, NULL is returned and
- * @suffix_found is set to %FALSE.
- *
- * Return value: an allocated copy of the string without the suffix or NULL if the suffix was not found.
- **/
-gchar *
-string_prefix (const gchar *s, const gchar *suffix, gboolean *suffix_found)
-{
- guint s_len, suf_len;
- guint suffix_pos;
- char *result_string;
-
- g_assert (s);
- g_assert (suffix);
- g_assert (suffix_found);
-
- s_len = strlen (s);
- suf_len = strlen (suffix);
-
- /* if the string is shorter than the suffix, do nothing */
- if (s_len < suf_len) {
- *suffix_found = FALSE;
- return NULL;
- }
-
- /* theoretical position of the prefix */
- suffix_pos = s_len - suf_len;
-
- /* compare the right hand side of the string with the suffix */
- if (!strncmp (s+suffix_pos, suffix, suf_len)) {
-
- /* if the suffix matches, check that there are
- characters before */
- if (suffix_pos == 0) {
- result_string = NULL;
- *suffix_found = TRUE;
- } else {
- result_string = g_strndup (s, suffix_pos);
- *suffix_found = TRUE;
- }
-
- } else {
- result_string = NULL;
- *suffix_found = FALSE;
- }
-
- return result_string;
-}
-
-void
-string_unquote (gchar *string)
-{
- /* if the string is quoted, unquote it */
-
- g_return_if_fail (string != NULL);
-
- if (*string == '"' && *(string + strlen (string) - 1) == '"') {
- *(string + strlen (string) - 1) = '\0';
- if (*string)
- memmove (string, string+1, strlen (string));
- }
-}
-
-gchar *
-strip (gchar *string, gchar c)
-{
- /* strip all occurances of c from the string */
- gchar *src, *dst;
-
- g_return_val_if_fail (string != NULL, NULL);
-
- for (src = dst = string; *src; src++)
- if (*src != c)
- *dst++ = *src;
- *dst = '\0';
-
- return string;
-}
-
-char *
-strstrcase (char *haystack, const char *needle)
-{
- /* find the needle in the haystack neglecting case */
- const char *ptr;
- guint len;
-
- g_return_val_if_fail (haystack != NULL, NULL);
- g_return_val_if_fail (needle != NULL, NULL);
-
- len = strlen (needle);
- if (len > strlen (haystack))
- return NULL;
-
- if (len == 0)
- return (char *) haystack;
-
- for (ptr = haystack; *(ptr + len - 1) != '\0'; ptr++)
- if (!g_strncasecmp (ptr, needle, len))
- return (char *) ptr;
-
- return NULL;
-}
diff --git a/camel/string-utils.h b/camel/string-utils.h
deleted file mode 100644
index e20c2e6a77..0000000000
--- a/camel/string-utils.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* string-util : utilities for normal gchar * strings */
-
-/*
- *
- * Authors: Bertrand Guiheneuf <bertrand@helixcode.com>
- * Jeffrey Stedfast <fejj@helixcode.com>
- *
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-
-#ifndef STRING_UTIL_H
-#define STRING_UTIL_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
-
-#include <glib.h>
-
-typedef enum {
- STRING_TRIM_NONE = 0,
- STRING_TRIM_STRIP_TRAILING = 1,
- STRING_TRIM_STRIP_LEADING = 2
-} StringTrimOption;
-
-
-
-gboolean string_equal_for_glist (gconstpointer v, gconstpointer v2);
-
-void string_list_free (GList *string_list);
-
-GList *string_split (const gchar *string, char sep,
- const gchar *trim_chars, StringTrimOption trim_options);
-void string_trim (gchar *string, const gchar *chars,
- StringTrimOption options);
-
-gchar *string_prefix (const gchar *s, const gchar *suffix,
- gboolean *suffix_found);
-
-void string_unquote (gchar *string);
-
-gchar *strip (gchar *string, gchar c);
-
-char *strstrcase (char *haystack, const char *needle);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* STRING_UTIL_H */
diff --git a/camel/tests/.cvsignore b/camel/tests/.cvsignore
deleted file mode 100644
index fd6b811c68..0000000000
--- a/camel/tests/.cvsignore
+++ /dev/null
@@ -1,7 +0,0 @@
-.deps
-Makefile
-Makefile.in
-.libs
-.deps
-*.lo
-*.la
diff --git a/camel/tests/Makefile.am b/camel/tests/Makefile.am
deleted file mode 100644
index 1d24ebd0ac..0000000000
--- a/camel/tests/Makefile.am
+++ /dev/null
@@ -1,3 +0,0 @@
-
-SUBDIRS = lib \
- message folder stream smime misc
diff --git a/camel/tests/README b/camel/tests/README
deleted file mode 100644
index 6815330102..0000000000
--- a/camel/tests/README
+++ /dev/null
@@ -1,44 +0,0 @@
-
-This directory is to contain regression tests that should be run
-before committing anything to camel.
-
-In each subdirectory of tests there is a README containing a
-one-line description of each test file. This README must be kept
-uptodate.
-
-To write a new test: copy an existing one and replace the contents.
-
-See camel-test.h for a number of functions and macros which setup and
-define the test environmet, and help provide meaningful messages when
-something actually fails.
-
-All tests have the following options:
- -v[vvvv]
- verbose. more v's more verbose. 2 v's will give you
- a simple test backtrace of any partially failed tests.
- No v's give you a simple backtrace of any failed tests.
- -q
- quiet. Dont print anything, unless there is a SEGV.
-
-See the other files in lib/* for utility functions that help to
-write the tests (object comparison, creation, etc functions).
-
-Tests may fail and be non-fatal. In this case, you will see "Partial
-success" on the result of each test line. To get more information
-about the test, run the test manually with a -v command line argument.
-The more v's you have the more detail you get (upto about -vvvvv),
-generally use -vv to find out which parts of a partially successful
-test failed, and where.
-
-Note that if writing tests, non-fatal tests (bracketed by a
-camel_test_nonfatal() and camel_test_fatal() pair) should only be
-defined where: 1. The test in question should ideally pass, and 2. The
-code has known limitations currently that stop it passing, but
-otherwise works for nominal input.
-
-To debug tests, set a breakpoint on camel_test_fail, which will be
-called for any failure, even a non-fatal one. Or set it to
-camel_test_break, which will only be called for fatal errors which are
-to print to the screen.
-
- Michael <notzed@helixcode.com>
diff --git a/camel/tests/data/gendoc.pl b/camel/tests/data/gendoc.pl
deleted file mode 100755
index 732f05a4ed..0000000000
--- a/camel/tests/data/gendoc.pl
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/usr/bin/perl
-
-# Generate 'documents' in different encodings, from po files
-
-if ($#ARGV < 0) {
- print "Usage: gendoc.pl pofile pofile ...\n";
- exit 1;
-}
-
-$fmt = "| fmt -u ";
-
-sub read_msgstr()
-{
- my $str = "";
- while (<IN>) {
- if (m/^msgstr \"(.*)\"/) {
- $str = $1;
- if ($str eq "") {
- while (<IN>) {
- if (m/\"(.*)\"/) {
- $str .= $1;
- } else {
- last;
- }
- }
- }
- return $str;
- }
- }
- return "";
-}
-
-$unknown = "x-unknown-1";
-
-foreach $name (@ARGV) {
- if ($name =~ m@([^/]*).po$@) {
- $poname = $1;
-
- open IN,"<$name";
-
- $header = read_msgstr;
- if ($header =~ /Content-Type:.*charset=([-a-zA-Z0-9]*)/i) {
- $charset = $1;
- } else {
- $charset = $unknown++;
- }
-
- print "Building $poname.$charset.txt from $name\n";
-
- open OUT,"$fmt > $poname.$charset.txt";
- while (!eof(IN)) {
- $msg = read_msgstr;
- # de-escape
- $msg =~ s/\\n/\n/gso;
- $msg =~ s/\\t/\t/gso;
- $msg =~ s/\\(.)/$1/gso;
- print OUT $msg." ";
- }
- close OUT;
- close IN;
- } else {
- printf("ignoring $name, probably not intended\n");
- }
-}
-
diff --git a/camel/tests/data/genline.pl b/camel/tests/data/genline.pl
deleted file mode 100755
index 99ff43c882..0000000000
--- a/camel/tests/data/genline.pl
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/usr/bin/perl
-
-# Generate 'documents' in different encodings, from po files
-
-if ($#ARGV < 0) {
- print "Usage: genline.pl pofile pofile ...\n";
- exit 1;
-}
-
-sub read_msgstr()
-{
- my $str = "";
- while (<IN>) {
- if (m/^msgstr \"(.*)\"/) {
- $str = $1;
- if ($str eq "") {
- while (<IN>) {
- if (m/\"(.*)\"/) {
- $str .= $1;
- } else {
- last;
- }
- }
- }
- return $str;
- }
- }
- return "";
-}
-
-$unknown = "x-unknown-1";
-open OUT, ">test-lines.h";
-
-print OUT <<END;
-struct _l {
- char *type;
- char *line;
-} test_lines[] = {
-END
-
-foreach $name (@ARGV) {
- if ($name =~ m@([^/]*).po$@) {
- $poname = $1;
-
- open IN,"<$name";
-
- $header = read_msgstr;
- if ($header =~ /Content-Type:.*charset=([-a-zA-Z0-9]*)/i) {
- $charset = $1;
- } else {
- $charset = $unknown++;
- }
-
- while (!eof(IN)) {
- $msg = read_msgstr;
- if (length($msg) > 60 && length($msg) < 160) {
- print OUT "\t{ \"$charset\", \"$msg\" },\n";
- last;
- }
-# $msg =~ s/\\n/\n/gso;
-# $msg =~ s/\\t/\t/gso;
-# $msg =~ s/\\(.)/$1/gso;
-# print OUT $msg." ";
- }
- close IN;
- } else {
- printf("ignoring $name, probably not intended\n");
- }
-}
-
-print OUT "};\n";
-close OUT;
diff --git a/camel/tests/data/getaddr.pl b/camel/tests/data/getaddr.pl
deleted file mode 100755
index 74a8a81f74..0000000000
--- a/camel/tests/data/getaddr.pl
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/perl
-
-# get addresses out of messages
-
-if ($#ARGV < 0) {
- print "Usage: $0 message(s) mbox(es)\n";
- exit 1;
-}
-
-foreach $name (@ARGV) {
- open IN,"<$name";
- while (<IN>) {
- if (/^From: (.*)/i
- || /^To: (.*)/i
- || /^Cc: (.*)/i) {
- $base = $1;
- while (<IN>) {
- if (/^\s+(.*)/) {
- $base .= " ".$1;
- } else {
- last;
- }
- }
- $uniq{$base} = 1;
- }
- }
- close IN;
-}
-
-foreach $key (sort keys %uniq) {
- print $key."\n";
-}
diff --git a/camel/tests/folder/.cvsignore b/camel/tests/folder/.cvsignore
deleted file mode 100644
index ba98331a6d..0000000000
--- a/camel/tests/folder/.cvsignore
+++ /dev/null
@@ -1,12 +0,0 @@
-.deps
-Makefile
-Makefile.in
-.libs
-.deps
-*.lo
-*.la
-temp-test
-*.bb
-*.bbg
-*.da
-*.gcov
diff --git a/camel/tests/folder/Makefile.am b/camel/tests/folder/Makefile.am
deleted file mode 100644
index f6dd852dd8..0000000000
--- a/camel/tests/folder/Makefile.am
+++ /dev/null
@@ -1,29 +0,0 @@
-
-INCLUDES = -I$(top_srcdir)/intl -I$(top_srcdir) -I$(top_srcdir)/camel \
- -I$(includedir) \
- -I$(top_srcdir)/camel/tests/lib \
- -DG_LOG_DOMAIN=\"evolution-tests\"
-
-LDADD = \
- $(top_builddir)/camel/libcamel.la \
- $(top_builddir)/e-util/libeutil.la \
- $(top_builddir)/libibex/libibex.la \
- $(GNOME_LIBDIR) \
- $(top_builddir)/camel/tests/lib/libcameltest.a \
- $(GNOMEUI_LIBS) $(INTLLIBS) $(EXTRA_GNOME_LIBS)
-
-check_PROGRAMS = \
- test1 test4 test5 \
- test2 test6 test7 \
- test3 \
- test8 \
- test9
-
-TESTS = test1 test4 test5 \
- test2 test6 test7 \
- test3 \
- test8 \
- test9
-
-
-
diff --git a/camel/tests/folder/README b/camel/tests/folder/README
deleted file mode 100644
index 4fed421413..0000000000
--- a/camel/tests/folder/README
+++ /dev/null
@@ -1,11 +0,0 @@
-
-test1 camel store folder operations (local only)
-test2 basic folder operations, local
-test3 folder searching and indexing, local
-test4 camel store folder operations, IMAP
-test5 camel store folder operations, NNTP
-test6 basic folder operations, IMAP
-test7 basic folder operations, NNTP
-
-test8 multithreaded folder torture test, local
-test9 filtering
diff --git a/camel/tests/folder/test1.c b/camel/tests/folder/test1.c
deleted file mode 100644
index 769254f512..0000000000
--- a/camel/tests/folder/test1.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/* store testing */
-
-#include "camel-test.h"
-#include "folders.h"
-
-#include <camel/camel-exception.h>
-#include <camel/camel-service.h>
-#include <camel/camel-session.h>
-#include <camel/camel-store.h>
-
-#define CAMEL_TEST_SESSION_TYPE (camel_test_session_get_type ())
-#define CAMEL_TEST_SESSION(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TEST_SESSION_TYPE, CamelTestSession))
-#define CAMEL_TEST_SESSION_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TEST_SESSION_TYPE, CamelTestSessionClass))
-#define CAMEL_TEST_IS_SESSION(o) (CAMEL_CHECK_TYPE((o), CAMEL_TEST_SESSION_TYPE))
-
-
-typedef struct _CamelTestSession {
- CamelSession parent_object;
-
-} CamelTestSession;
-
-typedef struct _CamelTestSessionClass {
- CamelSessionClass parent_class;
-
-} CamelTestSessionClass;
-
-static void
-init (CamelTestSession *session)
-{
- ;
-}
-
-static void
-class_init (CamelTestSessionClass *camel_test_session_class)
-{
- CamelSessionClass *camel_session_class =
- CAMEL_SESSION_CLASS (camel_test_session_class);
-
- /* virtual method override */
-}
-
-static CamelType
-camel_test_session_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (
- camel_test_session_get_type (),
- "CamelTestSession",
- sizeof (CamelTestSession),
- sizeof (CamelTestSessionClass),
- (CamelObjectClassInitFunc) class_init,
- NULL,
- (CamelObjectInitFunc) init,
- NULL);
- }
-
- return type;
-}
-
-static CamelSession *
-camel_test_session_new (const char *path)
-{
- CamelSession *session;
-
- session = CAMEL_SESSION (camel_object_new (CAMEL_TEST_SESSION_TYPE));
-
- camel_session_construct (session, path);
-
- return session;
-}
-
-#define ARRAY_LEN(x) (sizeof(x)/sizeof(x[0]))
-
-static char *local_providers[] = {
- "mbox",
- "mh",
- "maildir"
-};
-
-int main(int argc, char **argv)
-{
- CamelSession *session;
- CamelException *ex;
- int i;
- char *path;
-
- camel_test_init(argc, argv);
-
- ex = camel_exception_new();
-
- /* clear out any camel-test data */
- system("/bin/rm -rf /tmp/camel-test");
-
- session = camel_test_session_new ("/tmp/camel-test");
-
- /* todo: cross-check everything with folder_info checks as well */
- /* todo: subscriptions? */
- /* todo: work out how to do imap/pop/nntp tests */
- for (i=0;i<ARRAY_LEN(local_providers);i++) {
- path = g_strdup_printf("%s:///tmp/camel-test/%s", local_providers[i], local_providers[i]);
-
- test_folder_basic(session, path, TRUE);
-
- g_free(path);
- }
-
- camel_object_unref((CamelObject *)session);
- camel_exception_free(ex);
-
- return 0;
-}
diff --git a/camel/tests/folder/test2.c b/camel/tests/folder/test2.c
deleted file mode 100644
index 899e6425bf..0000000000
--- a/camel/tests/folder/test2.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/* folder testing */
-
-#include "camel-test.h"
-#include "messages.h"
-#include "folders.h"
-
-#include <camel/camel-exception.h>
-#include <camel/camel-service.h>
-#include <camel/camel-session.h>
-#include <camel/camel-store.h>
-
-#include <camel/camel-folder.h>
-#include <camel/camel-folder-summary.h>
-#include <camel/camel-mime-message.h>
-
-#define CAMEL_TEST_SESSION_TYPE (camel_test_session_get_type ())
-#define CAMEL_TEST_SESSION(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TEST_SESSION_TYPE, CamelTestSession))
-#define CAMEL_TEST_SESSION_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TEST_SESSION_TYPE, CamelTestSessionClass))
-#define CAMEL_TEST_IS_SESSION(o) (CAMEL_CHECK_TYPE((o), CAMEL_TEST_SESSION_TYPE))
-
-
-typedef struct _CamelTestSession {
- CamelSession parent_object;
-
-} CamelTestSession;
-
-typedef struct _CamelTestSessionClass {
- CamelSessionClass parent_class;
-
-} CamelTestSessionClass;
-
-static void
-init (CamelTestSession *session)
-{
- ;
-}
-
-static void
-class_init (CamelTestSessionClass *camel_test_session_class)
-{
- CamelSessionClass *camel_session_class =
- CAMEL_SESSION_CLASS (camel_test_session_class);
-
- /* virtual method override */
-}
-
-static CamelType
-camel_test_session_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (
- camel_test_session_get_type (),
- "CamelTestSession",
- sizeof (CamelTestSession),
- sizeof (CamelTestSessionClass),
- (CamelObjectClassInitFunc) class_init,
- NULL,
- (CamelObjectInitFunc) init,
- NULL);
- }
-
- return type;
-}
-
-static CamelSession *
-camel_test_session_new (const char *path)
-{
- CamelSession *session;
-
- session = CAMEL_SESSION (camel_object_new (CAMEL_TEST_SESSION_TYPE));
-
- camel_session_construct (session, path);
-
- return session;
-}
-
-#define ARRAY_LEN(x) (sizeof(x)/sizeof(x[0]))
-
-static char *stores[] = {
- "mbox:///tmp/camel-test/mbox",
- "mh:///tmp/camel-test/mh",
- "maildir:///tmp/camel-test/maildir"
-};
-
-int main(int argc, char **argv)
-{
- CamelSession *session;
- CamelException *ex;
- int i;
-
- camel_test_init(argc, argv);
-
- /* clear out any camel-test data */
- system("/bin/rm -rf /tmp/camel-test");
-
- ex = camel_exception_new();
-
- session = camel_test_session_new ("/tmp/camel-test");
-
- /* we iterate over all stores we want to test, with indexing or indexing turned on or off */
- for (i=0;i<ARRAY_LEN(stores);i++) {
- char *name = stores[i];
-
- test_folder_message_ops(session, name, TRUE);
- }
-
- check_unref(session, 1);
- camel_exception_free(ex);
-
- return 0;
-}
diff --git a/camel/tests/folder/test3.c b/camel/tests/folder/test3.c
deleted file mode 100644
index 4fb67c1423..0000000000
--- a/camel/tests/folder/test3.c
+++ /dev/null
@@ -1,396 +0,0 @@
-/* folder/index testing */
-
-#include "camel-test.h"
-#include "messages.h"
-#include "folders.h"
-
-#include <camel/camel-exception.h>
-#include <camel/camel-service.h>
-#include <camel/camel-session.h>
-#include <camel/camel-store.h>
-
-#include <camel/camel-folder.h>
-#include <camel/camel-folder-summary.h>
-#include <camel/camel-mime-message.h>
-
-#define ARRAY_LEN(x) (sizeof(x)/sizeof(x[0]))
-
-#define CAMEL_TEST_SESSION_TYPE (camel_test_session_get_type ())
-#define CAMEL_TEST_SESSION(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TEST_SESSION_TYPE, CamelTestSession))
-#define CAMEL_TEST_SESSION_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TEST_SESSION_TYPE, CamelTestSessionClass))
-#define CAMEL_TEST_IS_SESSION(o) (CAMEL_CHECK_TYPE((o), CAMEL_TEST_SESSION_TYPE))
-
-
-typedef struct _CamelTestSession {
- CamelSession parent_object;
-
-} CamelTestSession;
-
-typedef struct _CamelTestSessionClass {
- CamelSessionClass parent_class;
-
-} CamelTestSessionClass;
-
-static void
-init (CamelTestSession *session)
-{
- ;
-}
-
-static void
-class_init (CamelTestSessionClass *camel_test_session_class)
-{
- CamelSessionClass *camel_session_class =
- CAMEL_SESSION_CLASS (camel_test_session_class);
-
- /* virtual method override */
-}
-
-static CamelType
-camel_test_session_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (
- camel_test_session_get_type (),
- "CamelTestSession",
- sizeof (CamelTestSession),
- sizeof (CamelTestSessionClass),
- (CamelObjectClassInitFunc) class_init,
- NULL,
- (CamelObjectInitFunc) init,
- NULL);
- }
-
- return type;
-}
-
-static CamelSession *
-camel_test_session_new (const char *path)
-{
- CamelSession *session;
-
- session = CAMEL_SESSION (camel_object_new (CAMEL_TEST_SESSION_TYPE));
-
- camel_session_construct (session, path);
-
- return session;
-}
-
-static void
-test_folder_search_sub(CamelFolder *folder, const char *expr, int expected)
-{
- CamelException *ex = camel_exception_new();
- GPtrArray *uids;
- GHashTable *hash;
- int i;
-
- uids = camel_folder_search_by_expression(folder, expr, ex);
- check(uids != NULL);
- check_msg(uids->len == expected, "search %s expected %d got %d", expr, expected, uids->len);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
-
- /* check the uid's are actually unique, too */
- hash = g_hash_table_new(g_str_hash, g_str_equal);
- for (i=0;i<uids->len;i++) {
- check(g_hash_table_lookup(hash, uids->pdata[i]) == NULL);
- g_hash_table_insert(hash, uids->pdata[i], uids->pdata[i]);
- }
- g_hash_table_destroy(hash);
-
- camel_folder_search_free(folder, uids);
-
- camel_exception_free(ex);
-}
-
-static void
-test_folder_search(CamelFolder *folder, const char *expr, int expected)
-{
- char *matchall;
-
-#if 0
- /* FIXME: ??? */
- camel_test_nonfatal("most searches require match-all construct");
- push("Testing search: %s", expr);
- test_folder_search_sub(folder, expr, expected);
- pull();
- camel_test_fatal();
-#endif
-
- matchall = g_strdup_printf("(match-all %s)", expr);
- push("Testing search: %s", matchall);
- test_folder_search_sub(folder, matchall, expected);
- test_free(matchall);
- pull();
-}
-
-static struct {
- int counts[3];
- char *expr;
-} searches[] = {
- { { 1, 1, 0 }, "(header-matches \"subject\" \"Test1 message99 subject\")" },
-
- { { 100, 50, 0 }, "(header-contains \"subject\" \"subject\")" },
- { { 0, 0, 0 }, "(header-contains \"subject\" \"Subject\")" },
-
- { { 100, 50, 0 }, "(body-contains \"content\")" },
- { { 100, 50, 0 }, "(body-contains \"Content\")" },
-
- { { 0, 0, 0 }, "(user-flag \"every7\")" },
- { { 100/13+1, 50/13+1, 0 }, "(user-flag \"every13\")" },
- { { 1, 1, 0 }, "(= \"7tag1\" (user-tag \"every7\"))" },
- { { 100/11+1, 50/11+1, 0 }, "(= \"11tag\" (user-tag \"every11\"))" },
-
- { { 100/13 + 100/17 + 1, 50/13 + 50/17 + 2, 0 }, "(user-flag \"every13\" \"every17\")" },
- { { 100/13 + 100/17 + 1, 50/13 + 50/17 + 2, 0 }, "(or (user-flag \"every13\") (user-flag \"every17\"))" },
- { { 1, 0, 0 }, "(and (user-flag \"every13\") (user-flag \"every17\"))" },
-
- { { 0, 0, 0 }, "(and (header-contains \"subject\" \"Test1\") (header-contains \"subject\" \"Test2\"))" },
- /* we get 11 here as the header-contains is a substring match */
- { { 11, 6, 0 }, "(and (header-contains \"subject\" \"Test1\") (header-contains \"subject\" \"subject\"))" },
- { { 1, 1, 0 }, "(and (header-contains \"subject\" \"Test19\") (header-contains \"subject\" \"subject\"))" },
- { { 0, 0, 0 }, "(and (header-contains \"subject\" \"Test191\") (header-contains \"subject\" \"subject\"))" },
- { { 1, 1, 0 }, "(and (header-contains \"subject\" \"Test1\") (header-contains \"subject\" \"message99\"))" },
-
- { { 22, 11, 0 }, "(or (header-contains \"subject\" \"Test1\") (header-contains \"subject\" \"Test2\"))" },
- { { 2, 1, 0 }, "(or (header-contains \"subject\" \"Test16\") (header-contains \"subject\" \"Test99\"))" },
- { { 1, 1, 0 }, "(or (header-contains \"subject\" \"Test123\") (header-contains \"subject\" \"Test99\"))" },
- { { 100, 50, 0 }, "(or (header-contains \"subject\" \"Test1\") (header-contains \"subject\" \"subject\"))" },
- { { 11, 6, 0 }, "(or (header-contains \"subject\" \"Test1\") (header-contains \"subject\" \"message99\"))" },
-
- /* 72000 is 24*60*100 == half the 'sent date' of the messages */
- { { 100/2, 50/2, 0 }, "(> 72000 (get-sent-date))" },
- { { 100/2-1, 50/2, 0 }, "(< 72000 (get-sent-date))" },
- { { 1, 0, 0 }, "(= 72000 (get-sent-date))" },
- { { 0, 0, 0 }, "(= 72001 (get-sent-date))" },
-
- { { (100/2-1)/17+1, (50/2-1)/17+1, 0 }, "(and (user-flag \"every17\") (< 72000 (get-sent-date)))" },
- { { (100/2-1)/17+1, (50/2-1)/17, 0 }, "(and (user-flag \"every17\") (> 72000 (get-sent-date)))" },
- { { (100/2-1)/13+1, (50/2-1)/13+1, 0 }, "(and (user-flag \"every13\") (< 72000 (get-sent-date)))" },
- { { (100/2-1)/13+1, (50/2-1)/13+1, 0 }, "(and (user-flag \"every13\") (> 72000 (get-sent-date)))" },
-
- { { 100/2+100/2/17, 50/2+50/2/17, 0 }, "(or (user-flag \"every17\") (< 72000 (get-sent-date)))" },
- { { 100/2+100/2/17+1, 50/2+50/2/17+1, 0 }, "(or (user-flag \"every17\") (> 72000 (get-sent-date)))" },
- { { 100/2+100/2/13, 50/2+50/2/13+1, 0 }, "(or (user-flag \"every13\") (< 72000 (get-sent-date)))" },
- { { 100/2+100/2/13+1, 50/2+50/2/13+1, 0 }, "(or (user-flag \"every13\") (> 72000 (get-sent-date)))" },
-};
-
-static void
-run_search(CamelFolder *folder, int m)
-{
- int i, j = 0;
-
- check(m == 50 || m == 100 || m == 0);
-
- /* *shrug* messy, but it'll do */
- if (m==50)
- j = 1;
- else if (m==0)
- j = 2;
-
- push("performing searches, expected %d", m);
- for (i=0;i<ARRAY_LEN(searches);i++) {
- push("running search %d: %s", i, searches[i].expr);
- test_folder_search(folder, searches[i].expr, searches[i].counts[j]);
- pull();
- }
- pull();
-}
-
-
-static char *stores[] = {
- "mbox:///tmp/camel-test/mbox",
- "mh:///tmp/camel-test/mh",
- "maildir:///tmp/camel-test/maildir"
-};
-
-int main(int argc, char **argv)
-{
- CamelSession *session;
- CamelStore *store;
- CamelException *ex;
- CamelFolder *folder;
- CamelMimeMessage *msg;
- int i, j;
- int indexed;
- GPtrArray *uids;
-
- gtk_init(&argc, &argv);
- camel_test_init(argc, argv);
-
- ex = camel_exception_new();
-
- /* clear out any camel-test data */
- system("/bin/rm -rf /tmp/camel-test");
-
- session = camel_test_session_new ("/tmp/camel-test");
-
- /* todo: cross-check everything with folder_info checks as well */
- /* todo: work out how to do imap/pop/nntp tests */
-
- /* we iterate over all stores we want to test, with indexing or indexing turned on or off */
- for (i=0;i<ARRAY_LEN(stores);i++) {
- char *name = stores[i];
- for (indexed = 0;indexed<2;indexed++) {
- char *what = g_strdup_printf("folder search: %s (%sindexed)", name, indexed?"":"non-");
- int flags;
-
- camel_test_start(what);
- test_free(what);
-
- push("getting store");
- store = camel_session_get_store(session, stores[i], ex);
- check_msg(!camel_exception_is_set(ex), "getting store: %s", camel_exception_get_description(ex));
- check(store != NULL);
- pull();
-
- push("creating %sindexed folder", indexed?"":"non-");
- if (indexed)
- flags = CAMEL_STORE_FOLDER_CREATE|CAMEL_STORE_FOLDER_BODY_INDEX;
- else
- flags = CAMEL_STORE_FOLDER_CREATE;
- folder = camel_store_get_folder(store, "testbox", flags, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- check(folder != NULL);
-
- /* we need an empty folder for this to work */
- test_folder_counts(folder, 0, 0);
- pull();
-
- /* append a bunch of messages with specific content */
- push("appending 100 test messages");
- for (j=0;j<100;j++) {
- char *content, *subject;
-
- push("creating test message");
- msg = test_message_create_simple();
- content = g_strdup_printf("data%d content\n", j);
- test_message_set_content_simple((CamelMimePart *)msg, 0, "text/plain",
- content, strlen(content));
- test_free(content);
- subject = g_strdup_printf("Test%d message%d subject", j, 100-j);
- camel_mime_message_set_subject(msg, subject);
-
- camel_mime_message_set_date(msg, j*60*24, 0);
- pull();
-
- push("appending simple message %d", j);
- camel_folder_append_message(folder, msg, NULL, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- pull();
-
- test_free(subject);
-
- check_unref(msg, 1);
- }
- pull();
-
- push("Setting up some flags &c");
- uids = camel_folder_get_uids(folder);
- check(uids->len == 100);
- for (j=0;j<100;j++) {
- char *uid = uids->pdata[j];
-
- if ((j/13)*13 == j) {
- camel_folder_set_message_user_flag(folder, uid, "every13", TRUE);
- }
- if ((j/17)*17 == j) {
- camel_folder_set_message_user_flag(folder, uid, "every17", TRUE);
- }
- if ((j/7)*7 == j) {
- char *tag = g_strdup_printf("7tag%d", j/7);
- camel_folder_set_message_user_tag(folder, uid, "every7", tag);
- test_free(tag);
- }
- if ((j/11)*11 == j) {
- camel_folder_set_message_user_tag(folder, uid, "every11", "11tag");
- }
- }
- camel_folder_free_uids(folder, uids);
- pull();
-
- push("Search before sync");
- run_search(folder, 100);
- pull();
-
- push("syncing folder, searching");
- camel_folder_sync(folder, FALSE, ex);
- run_search(folder, 100);
- pull();
-
- push("syncing wiht expunge, search");
- camel_folder_sync(folder, TRUE, ex);
- run_search(folder, 100);
- pull();
-
- push("deleting every 2nd message");
- uids = camel_folder_get_uids(folder);
- check(uids->len == 100);
- for (j=0;j<uids->len;j+=2) {
- camel_folder_delete_message(folder, uids->pdata[j]);
- }
- camel_folder_free_uids(folder, uids);
- run_search(folder, 100);
-
- push("syncing");
- camel_folder_sync(folder, FALSE, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- run_search(folder, 100);
- pull();
-
- push("expunging");
- camel_folder_expunge(folder, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- run_search(folder, 50);
- pull();
-
- pull();
-
- push("closing and re-opening folder");
- check_unref(folder, 1);
- folder = camel_store_get_folder(store, "testbox", flags&~(CAMEL_STORE_FOLDER_CREATE), ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- check(folder != NULL);
-
- push("deleting remaining messages");
- uids = camel_folder_get_uids(folder);
- check(uids->len == 50);
- for (j=0;j<uids->len;j++) {
- camel_folder_delete_message(folder, uids->pdata[j]);
- }
- camel_folder_free_uids(folder, uids);
- run_search(folder, 50);
-
- push("syncing");
- camel_folder_sync(folder, FALSE, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- run_search(folder, 50);
- pull();
-
- push("expunging");
- camel_folder_expunge(folder, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- run_search(folder, 0);
- pull();
-
- pull();
-
- check_unref(folder, 1);
- pull();
-
- push("deleting test folder, with no messages in it");
- camel_store_delete_folder(store, "testbox", ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- pull();
-
- check_unref(store, 1);
- camel_test_end();
- }
- }
-
- check_unref(session, 1);
- camel_exception_free(ex);
-
- return 0;
-}
diff --git a/camel/tests/folder/test4.c b/camel/tests/folder/test4.c
deleted file mode 100644
index af0bc79e87..0000000000
--- a/camel/tests/folder/test4.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/* store testing, for remote folders */
-
-#include "camel-test.h"
-#include "folders.h"
-
-#include <camel/camel-exception.h>
-#include <camel/camel-service.h>
-#include <camel/camel-session.h>
-#include <camel/camel-store.h>
-
-static int regtimeout()
-{
- return 1;
-}
-
-static int unregtimeout()
-{
- return 1;
-}
-
-#define CAMEL_TEST_SESSION_TYPE (camel_test_session_get_type ())
-#define CAMEL_TEST_SESSION(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TEST_SESSION_TYPE, CamelTestSession))
-#define CAMEL_TEST_SESSION_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TEST_SESSION_TYPE, CamelTestSessionClass))
-#define CAMEL_TEST_IS_SESSION(o) (CAMEL_CHECK_TYPE((o), CAMEL_TEST_SESSION_TYPE))
-
-typedef struct _CamelTestSession {
- CamelSession parent_object;
-
-} CamelTestSession;
-
-typedef struct _CamelTestSessionClass {
- CamelSessionClass parent_class;
-
-} CamelTestSessionClass;
-
-static void
-init (CamelTestSession *session)
-{
- ;
-}
-
-static void
-class_init (CamelTestSessionClass *camel_test_session_class)
-{
- CamelSessionClass *camel_session_class =
- CAMEL_SESSION_CLASS (camel_test_session_class);
-
- /* virtual method override */
- camel_session_class->register_timeout = regtimeout;
- camel_session_class->remove_timeout = unregtimeout;
-}
-
-static CamelType
-camel_test_session_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (
- camel_test_session_get_type (),
- "CamelTestSession",
- sizeof (CamelTestSession),
- sizeof (CamelTestSessionClass),
- (CamelObjectClassInitFunc) class_init,
- NULL,
- (CamelObjectInitFunc) init,
- NULL);
- }
-
- return type;
-}
-
-static CamelSession *
-camel_test_session_new (const char *path)
-{
- CamelSession *session;
-
- session = CAMEL_SESSION (camel_object_new (CAMEL_TEST_SESSION_TYPE));
-
- camel_session_construct (session, path);
-
- return session;
-}
-
-#define ARRAY_LEN(x) (sizeof(x)/sizeof(x[0]))
-
-static char *remote_providers[] = {
- "IMAP_TEST_URL",
-};
-
-int main(int argc, char **argv)
-{
- CamelSession *session;
- CamelException *ex;
- int i;
- char *path;
-
- camel_test_init(argc, argv);
-
- ex = camel_exception_new();
-
- /* clear out any camel-test data */
- system("/bin/rm -rf /tmp/camel-test");
-
- session = camel_test_session_new ("/tmp/camel-test");
-
- /* todo: cross-check everything with folder_info checks as well */
- /* todo: subscriptions? */
- for (i=0;i<ARRAY_LEN(remote_providers);i++) {
- path = getenv(remote_providers[i]);
-
- if (path == NULL) {
- printf("Aborted (ignored).\n");
- printf("Set '%s', to re-run test.\n", remote_providers[i]);
- /* tells make check to ignore us in the total count */
- _exit(77);
- }
- camel_test_nonfatal("The IMAP code is just rooted");
- test_folder_basic(session, path, FALSE);
- camel_test_fatal();
- }
-
- camel_object_unref((CamelObject *)session);
- camel_exception_free(ex);
-
- return 0;
-}
diff --git a/camel/tests/folder/test5.c b/camel/tests/folder/test5.c
deleted file mode 100644
index c2a3e9af19..0000000000
--- a/camel/tests/folder/test5.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/* store testing, for remote folders */
-
-#include "camel-test.h"
-#include "folders.h"
-
-#include <camel/camel-exception.h>
-#include <camel/camel-service.h>
-#include <camel/camel-session.h>
-#include <camel/camel-store.h>
-
-static int regtimeout()
-{
- return 1;
-}
-
-static int unregtimeout()
-{
- return 1;
-}
-
-
-#define CAMEL_TEST_SESSION_TYPE (camel_test_session_get_type ())
-#define CAMEL_TEST_SESSION(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TEST_SESSION_TYPE, CamelTestSession))
-#define CAMEL_TEST_SESSION_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TEST_SESSION_TYPE, CamelTestSessionClass))
-#define CAMEL_TEST_IS_SESSION(o) (CAMEL_CHECK_TYPE((o), CAMEL_TEST_SESSION_TYPE))
-
-typedef struct _CamelTestSession {
- CamelSession parent_object;
-
-} CamelTestSession;
-
-typedef struct _CamelTestSessionClass {
- CamelSessionClass parent_class;
-
-} CamelTestSessionClass;
-
-static void
-init (CamelTestSession *session)
-{
- ;
-}
-
-static void
-class_init (CamelTestSessionClass *camel_test_session_class)
-{
- CamelSessionClass *camel_session_class =
- CAMEL_SESSION_CLASS (camel_test_session_class);
-
- /* virtual method override */
- camel_session_class->register_timeout = regtimeout;
- camel_session_class->remove_timeout = unregtimeout;
-}
-
-static CamelType
-camel_test_session_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (
- camel_test_session_get_type (),
- "CamelTestSession",
- sizeof (CamelTestSession),
- sizeof (CamelTestSessionClass),
- (CamelObjectClassInitFunc) class_init,
- NULL,
- (CamelObjectInitFunc) init,
- NULL);
- }
-
- return type;
-}
-
-static CamelSession *
-camel_test_session_new (const char *path)
-{
- CamelSession *session;
-
- session = CAMEL_SESSION (camel_object_new (CAMEL_TEST_SESSION_TYPE));
-
- camel_session_construct (session, path);
-
- return session;
-}
-
-
-#define ARRAY_LEN(x) (sizeof(x)/sizeof(x[0]))
-
-static char *remote_providers[] = {
- "NNTP_TEST_URL",
-};
-
-int main(int argc, char **argv)
-{
- CamelSession *session;
- CamelException *ex;
- int i;
- char *path;
-
- camel_test_init(argc, argv);
-
- ex = camel_exception_new();
-
- /* clear out any camel-test data */
- system("/bin/rm -rf /tmp/camel-test");
-
- session = camel_test_session_new ("/tmp/camel-test");
-
- /* todo: cross-check everything with folder_info checks as well */
- /* todo: subscriptions? */
- for (i=0;i<ARRAY_LEN(remote_providers);i++) {
- path = getenv(remote_providers[i]);
-
- if (path == NULL) {
- printf("Aborted (ignored).\n");
- printf("Set '%s', to re-run test.\n", remote_providers[i]);
- /* tells make check to ignore us in the total count */
- _exit(77);
- }
- camel_test_nonfatal("Not sure how many tests apply to NNTP");
- test_folder_basic(session, path, FALSE);
- camel_test_fatal();
- }
-
- camel_object_unref((CamelObject *)session);
- camel_exception_free(ex);
-
- return 0;
-}
diff --git a/camel/tests/folder/test6.c b/camel/tests/folder/test6.c
deleted file mode 100644
index cbd980a992..0000000000
--- a/camel/tests/folder/test6.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/* folder testing */
-
-#include "camel-test.h"
-#include "messages.h"
-
-#include <camel/camel-exception.h>
-#include <camel/camel-service.h>
-#include <camel/camel-session.h>
-#include <camel/camel-store.h>
-
-#include <camel/camel-folder.h>
-#include <camel/camel-folder-summary.h>
-#include <camel/camel-mime-message.h>
-
-static int regtimeout()
-{
- return 1;
-}
-
-static int unregtimeout()
-{
- return 1;
-}
-
-#define CAMEL_TEST_SESSION_TYPE (camel_test_session_get_type ())
-#define CAMEL_TEST_SESSION(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TEST_SESSION_TYPE, CamelTestSession))
-#define CAMEL_TEST_SESSION_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TEST_SESSION_TYPE, CamelTestSessionClass))
-#define CAMEL_TEST_IS_SESSION(o) (CAMEL_CHECK_TYPE((o), CAMEL_TEST_SESSION_TYPE))
-
-typedef struct _CamelTestSession {
- CamelSession parent_object;
-
-} CamelTestSession;
-
-typedef struct _CamelTestSessionClass {
- CamelSessionClass parent_class;
-
-} CamelTestSessionClass;
-
-static void
-init (CamelTestSession *session)
-{
- ;
-}
-
-static void
-class_init (CamelTestSessionClass *camel_test_session_class)
-{
- CamelSessionClass *camel_session_class =
- CAMEL_SESSION_CLASS (camel_test_session_class);
-
- /* virtual method override */
- camel_session_class->register_timeout = regtimeout;
- camel_session_class->remove_timeout = unregtimeout;
-}
-
-static CamelType
-camel_test_session_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (
- camel_test_session_get_type (),
- "CamelTestSession",
- sizeof (CamelTestSession),
- sizeof (CamelTestSessionClass),
- (CamelObjectClassInitFunc) class_init,
- NULL,
- (CamelObjectInitFunc) init,
- NULL);
- }
-
- return type;
-}
-
-static CamelSession *
-camel_test_session_new (const char *path)
-{
- CamelSession *session;
-
- session = CAMEL_SESSION (camel_object_new (CAMEL_TEST_SESSION_TYPE));
-
- camel_session_construct (session, path);
-
- return session;
-}
-
-
-#define ARRAY_LEN(x) (sizeof(x)/sizeof(x[0]))
-
-static char *remote_providers[] = {
- "IMAP_TEST_URL",
-};
-
-int main(int argc, char **argv)
-{
- CamelSession *session;
- CamelException *ex;
- int i;
- char *path;
-
- camel_test_init(argc, argv);
-
- /* clear out any camel-test data */
- system("/bin/rm -rf /tmp/camel-test");
-
- ex = camel_exception_new();
-
- session = camel_test_session_new ("/tmp/camel-test");
-
- for (i=0;i<ARRAY_LEN(remote_providers);i++) {
- path = getenv(remote_providers[i]);
-
- if (path == NULL) {
- printf("Aborted (ignored).\n");
- printf("Set '%s', to re-run test.\n", remote_providers[i]);
- /* tells make check to ignore us in the total count */
- _exit(77);
- }
- /*camel_test_nonfatal("The IMAP code is just rooted");*/
- test_folder_message_ops(session, path, FALSE);
- /*camel_test_fatal();*/
- }
-
- check_unref(session, 1);
- camel_exception_free(ex);
-
- return 0;
-}
diff --git a/camel/tests/folder/test7.c b/camel/tests/folder/test7.c
deleted file mode 100644
index 5e5015ac0d..0000000000
--- a/camel/tests/folder/test7.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/* folder testing */
-
-#include "camel-test.h"
-#include "messages.h"
-
-#include <camel/camel-exception.h>
-#include <camel/camel-service.h>
-#include <camel/camel-session.h>
-#include <camel/camel-store.h>
-
-#include <camel/camel-folder.h>
-#include <camel/camel-folder-summary.h>
-#include <camel/camel-mime-message.h>
-
-static int regtimeout()
-{
- return 1;
-}
-
-static int unregtimeout()
-{
- return 1;
-}
-
-#define CAMEL_TEST_SESSION_TYPE (camel_test_session_get_type ())
-#define CAMEL_TEST_SESSION(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TEST_SESSION_TYPE, CamelTestSession))
-#define CAMEL_TEST_SESSION_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TEST_SESSION_TYPE, CamelTestSessionClass))
-#define CAMEL_TEST_IS_SESSION(o) (CAMEL_CHECK_TYPE((o), CAMEL_TEST_SESSION_TYPE))
-
-typedef struct _CamelTestSession {
- CamelSession parent_object;
-
-} CamelTestSession;
-
-typedef struct _CamelTestSessionClass {
- CamelSessionClass parent_class;
-
-} CamelTestSessionClass;
-
-static void
-init (CamelTestSession *session)
-{
- ;
-}
-
-static void
-class_init (CamelTestSessionClass *camel_test_session_class)
-{
- CamelSessionClass *camel_session_class =
- CAMEL_SESSION_CLASS (camel_test_session_class);
-
- /* virtual method override */
- camel_session_class->register_timeout = regtimeout;
- camel_session_class->remove_timeout = unregtimeout;
-}
-
-static CamelType
-camel_test_session_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (
- camel_test_session_get_type (),
- "CamelTestSession",
- sizeof (CamelTestSession),
- sizeof (CamelTestSessionClass),
- (CamelObjectClassInitFunc) class_init,
- NULL,
- (CamelObjectInitFunc) init,
- NULL);
- }
-
- return type;
-}
-
-static CamelSession *
-camel_test_session_new (const char *path)
-{
- CamelSession *session;
-
- session = CAMEL_SESSION (camel_object_new (CAMEL_TEST_SESSION_TYPE));
-
- camel_session_construct (session, path);
-
- return session;
-}
-
-#define ARRAY_LEN(x) (sizeof(x)/sizeof(x[0]))
-
-static char *remote_providers[] = {
- "NNTP_TEST_URL",
-};
-
-int main(int argc, char **argv)
-{
- CamelSession *session;
- CamelException *ex;
- int i;
- char *path;
-
- camel_test_init(argc, argv);
-
- /* clear out any camel-test data */
- system("/bin/rm -rf /tmp/camel-test");
-
- ex = camel_exception_new();
-
- session = camel_test_session_new ("/tmp/camel-test");
-
- for (i=0;i<ARRAY_LEN(remote_providers);i++) {
- path = getenv(remote_providers[i]);
-
- if (path == NULL) {
- printf("Aborted (ignored).\n");
- printf("Set '%s', to re-run test.\n", remote_providers[i]);
- /* tells make check to ignore us in the total count */
- _exit(77);
- }
- camel_test_nonfatal("Dont know how many tests apply to NNTP");
- test_folder_message_ops(session, path, FALSE);
- camel_test_fatal();
- }
-
- check_unref(session, 1);
- camel_exception_free(ex);
-
- return 0;
-}
diff --git a/camel/tests/folder/test8.c b/camel/tests/folder/test8.c
deleted file mode 100644
index 3b9e0eec14..0000000000
--- a/camel/tests/folder/test8.c
+++ /dev/null
@@ -1,277 +0,0 @@
-/* threaded folder testing */
-
-#include "camel-test.h"
-#include "folders.h"
-#include "messages.h"
-
-#include <camel/camel-exception.h>
-#include <camel/camel-service.h>
-#include <camel/camel-session.h>
-#include <camel/camel-store.h>
-
-#define MAX_MESSAGES (100)
-#define MAX_THREADS (10)
-
-#define d(x)
-
-#ifndef ENABLE_THREADS
-int main(int argc, char **argv)
-{
- printf("Test %s is only compiled with threads enabled\n", argv[0]);
- return 77;
-}
-#else
-
-#include <pthread.h>
-
-
-#define CAMEL_TEST_SESSION_TYPE (camel_test_session_get_type ())
-#define CAMEL_TEST_SESSION(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TEST_SESSION_TYPE, CamelTestSession))
-#define CAMEL_TEST_SESSION_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TEST_SESSION_TYPE, CamelTestSessionClass))
-#define CAMEL_TEST_IS_SESSION(o) (CAMEL_CHECK_TYPE((o), CAMEL_TEST_SESSION_TYPE))
-
-typedef struct _CamelTestSession {
- CamelSession parent_object;
-
-} CamelTestSession;
-
-typedef struct _CamelTestSessionClass {
- CamelSessionClass parent_class;
-
-} CamelTestSessionClass;
-
-static void
-init (CamelTestSession *session)
-{
- ;
-}
-
-static void
-class_init (CamelTestSessionClass *camel_test_session_class)
-{
- CamelSessionClass *camel_session_class =
- CAMEL_SESSION_CLASS (camel_test_session_class);
-
- /* virtual method override */
-}
-
-static CamelType
-camel_test_session_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (
- camel_test_session_get_type (),
- "CamelTestSession",
- sizeof (CamelTestSession),
- sizeof (CamelTestSessionClass),
- (CamelObjectClassInitFunc) class_init,
- NULL,
- (CamelObjectInitFunc) init,
- NULL);
- }
-
- return type;
-}
-
-static CamelSession *
-camel_test_session_new (const char *path)
-{
- CamelSession *session;
-
- session = CAMEL_SESSION (camel_object_new (CAMEL_TEST_SESSION_TYPE));
-
- camel_session_construct (session, path);
-
- return session;
-}
-
-#define ARRAY_LEN(x) (sizeof(x)/sizeof(x[0]))
-
-static char *local_providers[] = {
- "mbox",
- "mh",
- "maildir"
-};
-
-static void
-test_add_message(CamelFolder *folder, int j)
-{
- CamelMimeMessage *msg;
- char *content;
- char *subject;
- CamelException ex;
-
- camel_exception_init(&ex);
-
- push("creating message %d\n", j);
- msg = test_message_create_simple();
- content = g_strdup_printf("Test message %d contents\n\n", j);
- test_message_set_content_simple((CamelMimePart *)msg, 0, "text/plain",
- content, strlen(content));
- test_free(content);
- subject = g_strdup_printf("Test message %d subject", j);
- camel_mime_message_set_subject(msg, subject);
- pull();
-
- push("appending simple message %d", j);
- camel_folder_append_message(folder, msg, NULL, &ex);
- check_msg(!camel_exception_is_set(&ex), "%s", camel_exception_get_description(&ex));
- pull();
-
- check_unref(msg, 1);
-}
-
-struct _threadinfo {
- int id;
- CamelFolder *folder;
-};
-
-static void *
-worker(void *d)
-{
- struct _threadinfo *info = d;
- int i, j, id = info->id;
- char *sub, *content;
- GPtrArray *res;
- CamelException *ex = camel_exception_new();
- CamelMimeMessage *msg;
-
- /* we add a message, search for it, twiddle some flags, delete it */
- /* and flat out */
- for (i=0;i<MAX_MESSAGES;i++) {
- d(printf("Thread %ld message %i\n", pthread_self(), i));
- test_add_message(info->folder, id+i);
-
- sub = g_strdup_printf("(match-all (header-contains \"subject\" \"message %d subject\"))", id+i);
-
- push("searching for message %d\n\tusing: %s", id+i, sub);
- res = camel_folder_search_by_expression(info->folder, sub, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- check_msg(res->len == 1, "res->len = %d", res->len);
- pull();
-
- push("getting message '%s'", res->pdata[0]);
- msg = camel_folder_get_message(info->folder, (char *)res->pdata[0], ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- pull();
-
- push("comparing content");
- content = g_strdup_printf("Test message %d contents\n\n", id+i);
- test_message_compare_content(camel_medium_get_content_object((CamelMedium *)msg), content, strlen(content));
- test_free(content);
- pull();
-
- push("deleting message, cleanup");
- j=(100.0*rand()/(RAND_MAX+1.0));
- if (j<=70) {
- camel_folder_delete_message(info->folder, res->pdata[0]);
- }
-
- camel_folder_search_free(info->folder, res);
- res = NULL;
- test_free(sub);
-
- check_unref(msg, 1);
- pull();
-
- /* about 1-in 100 calls will expunge */
- j=(200.0*rand()/(RAND_MAX+1.0));
- if (j<=2) {
- d(printf("Forcing an expuge\n"));
- push("expunging folder");
- camel_folder_expunge(info->folder, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- pull();
- }
- }
-
- camel_exception_free(ex);
-
- return info;
-}
-
-int main(int argc, char **argv)
-{
- CamelSession *session;
- CamelException *ex;
- int i, j, index;
- char *path;
- CamelStore *store;
- pthread_t threads[MAX_THREADS];
- struct _threadinfo *info;
- CamelFolder *folder;
- GPtrArray *uids;
-
- camel_test_init(argc, argv);
-
- ex = camel_exception_new();
-
- /* clear out any camel-test data */
- system("/bin/rm -rf /tmp/camel-test");
-
- session = camel_test_session_new ("/tmp/camel-test");
-
- for (j=0;j<ARRAY_LEN(local_providers);j++) {
- for (index=0;index<2;index++) {
- path = g_strdup_printf("method %s %s", local_providers[j], index?"indexed":"nonindexed");
- camel_test_start(path);
- test_free(path);
-
- push("trying %s index %d", local_providers[j], index);
- path = g_strdup_printf("%s:///tmp/camel-test/%s", local_providers[j], local_providers[j]);
- store = camel_session_get_store(session, path, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- test_free(path);
-
- if (index == 0)
- folder = camel_store_get_folder(store, "testbox", CAMEL_STORE_FOLDER_CREATE, ex);
- else
- folder = camel_store_get_folder(store, "testbox",
- CAMEL_STORE_FOLDER_CREATE|CAMEL_STORE_FOLDER_BODY_INDEX, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
-
- for (i=0;i<MAX_THREADS;i++) {
- info = g_malloc(sizeof(*info));
- info->id = i*MAX_MESSAGES;
- info->folder = folder;
- pthread_create(&threads[i], 0, worker, info);
- }
-
- for (i=0;i<MAX_THREADS;i++) {
- pthread_join(threads[i], (void **)&info);
- g_free(info);
- }
- pull();
-
- push("deleting remaining messages");
- uids = camel_folder_get_uids(folder);
- for (i=0;i<uids->len;i++) {
- camel_folder_delete_message(folder, uids->pdata[i]);
- }
- camel_folder_free_uids(folder, uids);
-
- camel_folder_expunge(folder, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
-
- check_unref(folder, 1);
-
- camel_store_delete_folder(store, "testbox", ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
-
- check_unref(store, 1);
-
- pull();
-
- camel_test_end();
- }
- }
-
- camel_object_unref((CamelObject *)session);
- camel_exception_free(ex);
-
- return 0;
-}
-
-#endif /* ENABLE_THREADS */
diff --git a/camel/tests/folder/test9.c b/camel/tests/folder/test9.c
deleted file mode 100644
index f96773d191..0000000000
--- a/camel/tests/folder/test9.c
+++ /dev/null
@@ -1,286 +0,0 @@
-/* folder/index testing */
-
-#include "camel-test.h"
-#include "messages.h"
-#include "folders.h"
-
-#include "camel/camel-exception.h"
-#include "camel/camel-service.h"
-#include "camel/camel-session.h"
-#include "camel/camel-store.h"
-
-#include "camel/camel-folder.h"
-#include "camel/camel-folder-summary.h"
-#include "camel/camel-mime-message.h"
-#include "camel/camel-filter-driver.h"
-#include "camel/camel-stream-fs.h"
-
-#define ARRAY_LEN(x) (sizeof(x)/sizeof(x[0]))
-
-#define CAMEL_TEST_SESSION_TYPE (camel_test_session_get_type ())
-#define CAMEL_TEST_SESSION(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TEST_SESSION_TYPE, CamelTestSession))
-#define CAMEL_TEST_SESSION_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TEST_SESSION_TYPE, CamelTestSessionClass))
-#define CAMEL_TEST_IS_SESSION(o) (CAMEL_CHECK_TYPE((o), CAMEL_TEST_SESSION_TYPE))
-
-typedef struct _CamelTestSession {
- CamelSession parent_object;
-
-} CamelTestSession;
-
-typedef struct _CamelTestSessionClass {
- CamelSessionClass parent_class;
-
-} CamelTestSessionClass;
-
-static void
-init (CamelTestSession *session)
-{
- ;
-}
-
-static void
-class_init (CamelTestSessionClass *camel_test_session_class)
-{
- CamelSessionClass *camel_session_class =
- CAMEL_SESSION_CLASS (camel_test_session_class);
-
- /* virtual method override */
-}
-
-static CamelType
-camel_test_session_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (
- camel_test_session_get_type (),
- "CamelTestSession",
- sizeof (CamelTestSession),
- sizeof (CamelTestSessionClass),
- (CamelObjectClassInitFunc) class_init,
- NULL,
- (CamelObjectInitFunc) init,
- NULL);
- }
-
- return type;
-}
-
-static CamelSession *
-camel_test_session_new (const char *path)
-{
- CamelSession *session;
-
- session = CAMEL_SESSION (camel_object_new (CAMEL_TEST_SESSION_TYPE));
-
- camel_session_construct (session, path);
-
- return session;
-}
-
-struct {
- char *name;
- CamelFolder *folder;
-} mailboxes[] = {
- { "INBOX", NULL },
- { "folder1", NULL },
- { "folder2", NULL },
- { "folder3", NULL },
- { "folder4", NULL },
-};
-
-struct {
- char *name, *match, *action;
-} rules[] = {
- { "empty1", "(match-all (header-contains \"Frobnitz\"))", "(copy-to \"folder1\")" },
- { "empty2", "(header-contains \"Frobnitz\")", "(copy-to \"folder2\")" },
- { "count11", "(and (header-contains \"subject\" \"Test1\") (header-contains \"subject\" \"subject\"))", "(move-to \"folder3\")" },
- { "empty3", "(and (header-contains \"subject\" \"Test1\") (header-contains \"subject\" \"subject\"))", "(move-to \"folder4\")" },
- { "count1", "(body-contains \"data50\")", "(copy-to \"folder1\")" },
- { "stop", "(body-contains \"data2\")", "(stop)" },
- { "notreached1", "(body-contains \"data2\")", "(move-to \"folder2\")" },
- { "count1", "(body-contains \"data3\")", "(move-to \"folder2\")" },
- { "ustrcasecmp", "(header-matches \"Subject\" \"Test0 message100 subject\")", "(copy-to \"folder2\")" },
-};
-
-/* broken match rules */
-struct {
- char *name, *match, *action;
-} brokens[] = {
- { "count1", "(body-contains data50)", "(copy-to \"folder1\")" }, /* non string argument */
- { "count1", "(body-contains-stuff \"data3\")", "(move-to-folder \"folder2\")" }, /* invalid function */
- { "count1", "(or (body-contains \"data3\") (foo))", "(move-to-folder \"folder2\")" }, /* invalid function */
- { "count1", "(or (body-contains \"data3\") (foo)", "(move-to-folder \"folder2\")" }, /* missing ) */
- { "count1", "(and body-contains \"data3\") (foo)", "(move-to-folder \"folder2\")" }, /* missing ( */
- { "count1", "body-contains \"data3\")", "(move-to-folder \"folder2\")" }, /* missing ( */
- { "count1", "body-contains \"data3\"", "(move-to-folder \"folder2\")" }, /* missing ( ) */
- { "count1", "(body-contains \"data3\" ())", "(move-to-folder \"folder2\")" }, /* extra () */
- { "count1", "()", "(move-to-folder \"folder2\")" }, /* invalid () */
- { "count1", "", "(move-to-folder \"folder2\")" }, /* empty */
-};
-
-/* broken action rules */
-struct {
- char *name, *match, *action;
-} brokena[] = {
- { "a", "(body-contains \"data2\")", "(body-contains \"help\")" }, /* rule in action */
- { "a", "(body-contains \"data2\")", "(move-to-folder-name \"folder2\")" }, /* unknown function */
- { "a", "(body-contains \"data2\")", "(or (move-to-folder \"folder2\")" }, /* missing ) */
- { "a", "(body-contains \"data2\")", "(or move-to-folder \"folder2\"))" }, /* missing ( */
- { "a", "(body-contains \"data2\")", "move-to-folder \"folder2\")" }, /* missing ( */
- { "a", "(body-contains \"data2\")", "(move-to-folder \"folder2\" ())" }, /* invalid () */
- { "a", "(body-contains \"data2\")", "()" }, /* invalid () */
- { "a", "(body-contains \"data2\")", "" }, /* empty */
-};
-
-static CamelFolder *get_folder(CamelFilterDriver *d, const char *uri, void *data, CamelException *ex)
-{
- int i;
-
- for (i=0;i<ARRAY_LEN(mailboxes);i++)
- if (!strcmp(mailboxes[i].name, uri)) {
- camel_object_ref((CamelObject *)mailboxes[i].folder);
- return mailboxes[i].folder;
- }
- return NULL;
-}
-
-int main(int argc, char **argv)
-{
- CamelSession *session;
- CamelStore *store;
- CamelException *ex;
- CamelFolder *folder;
- CamelMimeMessage *msg;
- int i, j;
- CamelStream *mbox;
- CamelFilterDriver *driver;
-
- /*gtk_init(&argc, &argv);*/
-
- camel_test_init(argc, argv);
-
- ex = camel_exception_new();
-
- /* clear out any camel-test data */
- system("/bin/rm -rf /tmp/camel-test");
-
- camel_test_start("Simple filtering of mbox");
-
- session = camel_test_session_new ("/tmp/camel-test");
-
- /* todo: cross-check everything with folder_info checks as well */
- /* todo: work out how to do imap/pop/nntp tests */
-
- push("getting store");
- store = camel_session_get_store(session, "mbox:///tmp/camel-test/mbox", ex);
- check_msg(!camel_exception_is_set(ex), "getting store: %s", camel_exception_get_description(ex));
- check(store != NULL);
- pull();
-
- push("Creating output folders");
- for (i=0;i<ARRAY_LEN(mailboxes);i++) {
- push("creating %s", mailboxes[i].name);
- mailboxes[i].folder = folder = camel_store_get_folder(store, mailboxes[i].name, CAMEL_STORE_FOLDER_CREATE, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- check(folder != NULL);
-
- /* we need an empty folder for this to work */
- test_folder_counts(folder, 0, 0);
- pull();
- }
- pull();
-
- /* append a bunch of messages with specific content */
- push("creating 100 test message mbox");
- mbox = camel_stream_fs_new_with_name("/tmp/camel-test/inbox", O_WRONLY|O_CREAT|O_EXCL, 0600);
- for (j=0;j<100;j++) {
- char *content, *subject;
-
- push("creating test message");
- msg = test_message_create_simple();
- content = g_strdup_printf("data%d content\n", j);
- test_message_set_content_simple((CamelMimePart *)msg, 0, "text/plain",
- content, strlen(content));
- test_free(content);
- subject = g_strdup_printf("Test%d message%d subject", j, 100-j);
- camel_mime_message_set_subject(msg, subject);
-
- camel_mime_message_set_date(msg, j*60*24, 0);
- pull();
-
- camel_stream_printf(mbox, "From \n");
- check(camel_data_wrapper_write_to_stream((CamelDataWrapper *)msg, mbox) != -1);
-#if 0
- push("appending simple message %d", j);
- camel_folder_append_message(folder, msg, NULL, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- pull();
-#endif
- test_free(subject);
-
- check_unref(msg, 1);
- }
- check(camel_stream_close(mbox) != -1);
- check_unref(mbox, 1);
- pull();
-
- push("Building filters");
- driver = camel_filter_driver_new(get_folder, NULL);
- for (i=0;i<ARRAY_LEN(rules);i++) {
- camel_filter_driver_add_rule(driver, rules[i].name, rules[i].match, rules[i].action);
- }
- pull();
-
- push("Executing filters");
- camel_filter_driver_set_default_folder(driver, mailboxes[0].folder);
- camel_filter_driver_filter_mbox(driver, "/tmp/camel-test/inbox", ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
-
- /* now need to check the folder counts/etc */
-
- check_unref(driver, 1);
- pull();
-
- /* this tests that invalid rules are caught */
- push("Testing broken match rules");
- for (i=0;i<ARRAY_LEN(brokens);i++) {
- push("rule %s", brokens[i].match);
- driver = camel_filter_driver_new(get_folder, NULL);
- camel_filter_driver_add_rule(driver, brokens[i].name, brokens[i].match, brokens[i].action);
- camel_filter_driver_filter_mbox(driver, "/tmp/camel-test/inbox", ex);
- check(camel_exception_is_set(ex));
- camel_exception_clear(ex);
- check_unref(driver, 1);
- pull();
- }
- pull();
-
- push("Testing broken action rules");
- for (i=0;i<ARRAY_LEN(brokena);i++) {
- push("rule %s", brokena[i].action);
- driver = camel_filter_driver_new(get_folder, NULL);
- camel_filter_driver_add_rule(driver, brokena[i].name, brokena[i].match, brokena[i].action);
- camel_filter_driver_filter_mbox(driver, "/tmp/camel-test/inbox", ex);
- check(camel_exception_is_set(ex));
- camel_exception_clear(ex);
- check_unref(driver, 1);
- pull();
- }
- pull();
-
-
- for (i=0;i<ARRAY_LEN(mailboxes);i++) {
- check_unref(mailboxes[i].folder, 1);
- }
-
- check_unref(store, 1);
-
- check_unref(session, 1);
- camel_exception_free(ex);
-
- camel_test_end();
-
- return 0;
-}
diff --git a/camel/tests/lib/.cvsignore b/camel/tests/lib/.cvsignore
deleted file mode 100644
index ba98331a6d..0000000000
--- a/camel/tests/lib/.cvsignore
+++ /dev/null
@@ -1,12 +0,0 @@
-.deps
-Makefile
-Makefile.in
-.libs
-.deps
-*.lo
-*.la
-temp-test
-*.bb
-*.bbg
-*.da
-*.gcov
diff --git a/camel/tests/lib/Makefile.am b/camel/tests/lib/Makefile.am
deleted file mode 100644
index ea51a2c28a..0000000000
--- a/camel/tests/lib/Makefile.am
+++ /dev/null
@@ -1,13 +0,0 @@
-
-INCLUDES = -I$(includedir)
-
-check_LIBRARIES = libcameltest.a
-
-libcameltest_a_SOURCES = \
- camel-test.c camel-test.h \
- messages.c messages.h \
- addresses.c addresses.h \
- folders.c folders.h \
- streams.c streams.h \
- address-data.h
-
diff --git a/camel/tests/lib/address-data.h b/camel/tests/lib/address-data.h
deleted file mode 100644
index acecac596a..0000000000
--- a/camel/tests/lib/address-data.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/* BE WARY of editing this file with emacs.
- Otherwise it might be smart and try to re-encode everything, which
- you really do not want
-*/
-
-static struct _a {
- int count;
- char *addr;
- char *utf8; /* the utf8 in this table was generated by camel itself. As a result i'm making the assumption it
- was right when it was created. It also depends on the format of ::format(),. which is likely to
- change, to handle other bugs ! */
-} test_address[] = {
- { 1, "\"=?ISO-8859-1?Q?David_Guti=E9rrez_Magallanes?=\" <david@iiia.csic.es>", "David Gutiérrez Magallanes <david@iiia.csic.es>" },
- { 1, "\"=?iso-8859-1?Q?Jos=E9?= Antonio Milke G.\" <gerencia@ovoplus.com>", "José Antonio Milke G. <gerencia@ovoplus.com>" },
- { 1, "\"=?iso-8859-2?Q?Hi-Fi_Internert_market_=3D_1.Virtu=E1ln=ED_Internetov=E9_H?= =?iso-8859-2?Q?i-Fi_Studio?=\" <hifimarket@atlas.cz>", "Hi-Fi Internert market = 1.Virtuální Internetové Hi-Fi Studio <hifimarket@atlas.cz>" },
- { 3, "\"James M. Cape\" <jcape@jcinteractive.com>, =?iso-8859-1?Q?Joaqu=EDn_Cuenca_Abela?= <cuenca@ie2.u-psud.fr>, gnome-hackers@nuclecu.unam.mx", "James M. Cape <jcape@jcinteractive.com>, Joaquín Cuenca Abela <cuenca@ie2.u-psud.fr>, gnome-hackers@nuclecu.unam.mx" },
- { 1, "=?ISO-8859-1?Q?David_Guti=E9rrez_Magallanes?= <david@iiia.csic.es>", "David Gutiérrez Magallanes <david@iiia.csic.es>" },
- { 1, "=?ISO-8859-2?Q?Tomasz_K=B3oczko?= <kloczek@rudy.mif.pg.gda.pl>", "Tomasz KÅ‚oczko <kloczek@rudy.mif.pg.gda.pl>" },
- { 1, "=?ISO-8859-2?Q?Vladim=EDr_Solnick=FD?= <vs@utia.cas.cz>", "Vladimír Solnický <vs@utia.cas.cz>" },
- { 1, "=?iso-8859-1?Q?=22S=F6rensen=2C_Daniel=22?= <dasar@wmdata.com>", "\"Sörensen, Daniel\" <dasar@wmdata.com>" },
- { 1, "=?iso-8859-1?Q?=C1=C2=AAQ=A7=CA?= <dennys@iim.nctu.edu.tw>", "êQ§Ê <dennys@iim.nctu.edu.tw>" },
- { 1, "=?iso-8859-1?Q?=C1=C2=AAQ=A7=CA?= <dennys@news.iim.nctu.edu.tw>", "êQ§Ê <dennys@news.iim.nctu.edu.tw>" },
- { 1, "=?iso-8859-1?Q?=C1kos?= Valentinyi <A.Valentinyi@soton.ac.uk>", "Ãkos Valentinyi <A.Valentinyi@soton.ac.uk>" },
- { 1, "=?iso-8859-1?Q?Joaqu=EDn?= Cuenca Abela <cuenca@ie2.u-psud.fr>", "Joaquín Cuenca Abela <cuenca@ie2.u-psud.fr>" },
- { 2, "=?iso-8859-1?Q?Joaqu=EDn?= Cuenca Abela <cuenca@ie2.u-psud.fr>, gnome-hackers@nuclecu.unam.mx", "Joaquín Cuenca Abela <cuenca@ie2.u-psud.fr>, gnome-hackers@nuclecu.unam.mx" },
- { 1, "=?iso-8859-1?Q?Joaqu=EDn_Cuenca_Abela?= <cuenca@celium.net>", "Joaquín Cuenca Abela <cuenca@celium.net>" },
- { 1, "=?iso-8859-1?Q?Juantom=E1s=20Garc=EDa?= <juantomas@lared.es>", "Juantomás García <juantomas@lared.es>" },
- { 1, "=?iso-8859-1?Q?Kenneth_ll=E9phaane_Christiansen?= <kenneth@ripen.dk>", "Kenneth lléphaane Christiansen <kenneth@ripen.dk>" },
- { 1, "=?iso-8859-1?Q?Kjell_Tage_=D8hman?= <tage@ohman.no>", "Kjell Tage Øhman <tage@ohman.no>" },
- { 1, "=?iso-8859-1?Q?Martin_Norb=E4ck?= <d95mback@dtek.chalmers.se>", "Martin Norbäck <d95mback@dtek.chalmers.se>" },
- { 1, "=?iso-8859-1?Q?P=E5llen?= <pollen@astrakan.hig.se>", "PÃ¥llen <pollen@astrakan.hig.se>" },
- { 1, "=?iso-8859-1?Q?Ville_P=E4tsi?= <drc@gnu.org>", "Ville Pätsi <drc@gnu.org>" },
- { 1, "=?iso-8859-1?q?Joaqu=EDn?= Cuenca Abela <cuenca@celium.net>", "Joaquín Cuenca Abela <cuenca@celium.net>" },
- { 1, "=?iso-8859-2?Q?Dra=BEen_Ka=E8ar?= <dave@srce.hr>", "Dražen KaÄar <dave@srce.hr>" },
- /* yep this is right, this isn't valid so doesn't decode at all */
- { 1, "=?windows-1250?Q? \"Jaka Mo=E8nik\" ?= <jaka.mocnik@kiss.uni-lj.si>", "=?windows-1250?Q? Jaka Mo=E8nik ?= <jaka.mocnik@kiss.uni-lj.si>" },
- { 3, "George <jirka@5z.com>, Juantomas =?ISO-8859-1?Q?Garc=C3=83=C2=ADa?= <juantomas@lared.es>, gnome-hackers@gnome.org", "George <jirka@5z.com>, Juantomas García <juantomas@lared.es>, gnome-hackers@gnome.org" },
- { 7, "Jon Trowbridge <trow@emccta.com>, gnome-1.4-list@gnome.org, gnome-devel-list@gnome.org, gnome-hackers@gnome.org, Dom Lachowicz <cinamod@hotmail.com>, =?iso-8859-1?Q?Joaqu=EDn_Cuenca_Abela?= <cuenca@celium.net>, sam th <sam@uchicago.edu>", "Jon Trowbridge <trow@emccta.com>, gnome-1.4-list@gnome.org, gnome-devel-list@gnome.org, gnome-hackers@gnome.org, Dom Lachowicz <cinamod@hotmail.com>, Joaquín Cuenca Abela <cuenca@celium.net>, sam th <sam@uchicago.edu>" },
- { 6, "Jon Trowbridge <trow@emccta.com>, gnome-1.4-list@gnome.org, gnome-devel-list@gnome.org, gnome-hackers@gnome.org, Dom Lachowicz <cinamod@hotmail.com>, =?iso-8859-1?Q?Joaqu=EDn_Cuenca_Abela?= <cuenca@ie2.u-psud.fr>", "Jon Trowbridge <trow@emccta.com>, gnome-1.4-list@gnome.org, gnome-devel-list@gnome.org, gnome-hackers@gnome.org, Dom Lachowicz <cinamod@hotmail.com>, Joaquín Cuenca Abela <cuenca@ie2.u-psud.fr>" },
- { 1, "Kai =?iso-8859-1?Q?Gro=DFjohann?= <Kai.Grossjohann@CS.Uni-Dortmund.DE>", "Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>" },
- { 1, "Kai.Grossjohann@CS.Uni-Dortmund.DE (Kai =?iso-8859-1?q?Gro=DFjohann?=)", "Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>" },
- { 1, "Rickard =?iso-8859-1?Q?Nordstr=F6m?= <rzi@ebox.tninet.se>", "Rickard Nordström <rzi@ebox.tninet.se>" },
- { 1, "Tomasz =?iso-8859-2?q?K=B3oczko?= <kloczek@rudy.mif.pg.gda.pl>", "Tomasz KÅ‚oczko <kloczek@rudy.mif.pg.gda.pl>" },
- { 1, "VALCKE =?iso-8859-1?Q?C=E9dric?= <cvalcke@freesurf.fr>", "VALCKE Cédric <cvalcke@freesurf.fr>" },
- { 1, "Ville =?iso-8859-1?q?P=E4tsi?= <drc@gnu.org>", "Ville Pätsi <drc@gnu.org>" },
- { 1, "david@iiia.csic.es (=?ISO-8859-1?Q?David_Guti=E9rrez_Magallanes?=)", "David Gutiérrez Magallanes <david@iiia.csic.es>" },
- { 1, "kloczek@rudy.mif.pg.gda.pl (=?ISO-8859-2?Q?Tomasz_K=B3oczko?=)", "Tomasz KÅ‚oczko <kloczek@rudy.mif.pg.gda.pl>" },
- { 1, "lassehp@imv.aau.dk (Lasse =?ISO-8859-1?Q?Hiller=F8e?= Petersen)", "Lasse Hillerøe Petersen <lassehp@imv.aau.dk>" },
- { 1, "ysato@etl.go.jp (Yutaka Sato =?ISO-2022-JP?B?GyRAOjRGI0stGyhK?=)", "Yutaka Sato ä½è—¤è±Š <ysato@etl.go.jp>" },
-};
-
-static struct _l {
- char *type;
- char *line;
-} test_lines[] = {
- /* commented out unsupported charsets - FIXME: camel should somehow handle this, although it can't really of course */
- /*{ "windows-1251", "Åäèí àïëåò íå îòãîâàðÿ íà çàÿâêà çà çàïèñ.\nÄà ãî ïðåìàõíà ëè èëè äà ïî÷àêàì?" },*/
- { "iso-8859-1", "Omple les miniatures de la finestra amb contingut de la pantalla" },
- { "ISO-8859-2", "Správce oken hýbe s okrajem okna\n(AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" },
- { "ISO-8859-1", "Vindueshåndtering flytter dekorationsvindue istedet\n(AfterStep, Enlightenment, FVWM, IceWM, Sawfish)" },
- { "ISO-8859-1", "Vorschaubilder der Fenster mit dem Bildschirminhalt ausfüllen" },
- { "iso-8859-7", "ÅìöÜíéóç åñãáóéþí ðïõ äå öáßíïíôáé óôç ëßóôá ðáñáèýñùí (ÐÁÑÁÊÁÌØÇ-ËÉÓÔÁÐÁÑÁÈÕÑÙÍ)" },
- { "iso-8859-1", "You've chosen to disable the startup hint.\nTo re-enable it, choose \"Startup Hint\"\nin the GNOME Control Centre" },
- { "iso-8859-1", "El aplique de reloj muestra en su panel la fecha y la hora de forma simple \ny ligero " },
- { "iso-8859-1", "Applet ei vasta salvestuskäsule.\nKas peaks ta niisama sulgema, või veel ootama?" },
- { "iso-8859-1", "Lehio kudeatzaileak lehioaren dekorazaioa mugiarazten\n(AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" },
- { "iso-8859-15", "Näytä sovellukset, joiden ikkunoista on näkyvillä vain otsikkopalkki" },
- { "ISO-8859-1", "Afficher les tâches qui ne sont pas dans la liste des fenêtres" },
- { "iso-8859-1", "Níl applet ag tabhair freagra ar iarratas sábháil.\nBain amach an applet nó lean ar fánacht?" },
- { "iso-8859-1", "Amosa-las tarefas agochadas da lista de fiestras (SKIP-WINLIST)" },
- { "iso-8859-2", "Az ablakkezelõ a dekorációt mozgassa az ablak helyett\n(AfterStep, Enlightenment, FVWM, IceWM, SawMill)" },
- { "iso-8859-1", "Riempi la finestra delle anteprime con il contenuto dello schermo" },
- { "euc-jp", "¥¦¥¤¥ó¥É¥¦¥Þ¥Í¡¼¥¸¥ã¤Ï¾þ¤ê¥¦¥¤¥ó¥É¥¦¤òÆ°¤«¤¹\n(AfterStep, Enlightenment, FVWM, IceWM, Sawfish)" },
- { "euc-kr", "â °ü¸®ÀÚ°¡ ²Ù¹Î â ´ë½Å À̵¿\n(AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" },
- { "iso-8859-13", "Priedas neatsakinëja á praðymà iðsisaugoti.\nPaðalinti priedà ar laukti toliau?" },
- { "iso-8859-1", "Window manager verplaatst dekoratie\n(AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" },
- { "iso-8859-1", "Vindushåndtereren flytter dekorasjonsvinduet i stedet\n(AfterStep, Enlightenment, FVWM, IceWM, Sawfish)" },
- { "iso-8859-2", "Przemieszczanie dekoracji zamiast okna\n(AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" },
- { "iso-8859-1", "Este programa é responsável por executar outras aplicações, embeber pequenos applets, a paz no mundo e crashes aleatórios do X." },
- { "iso-8859-1", "Mostrar tarefas que se escondem da lista de janelas (SKIP-WINLIST)" },
- { "koi8-r", "÷ÙÓÏÔÁ ÒÁÂÏÞÅÇÏ ÓÔÏÌÁ × ÐÅÒÅËÌÀÞÁÔÅÌÅ ÓÏ×ÐÁÄÁÅÔ Ó ×ÙÓÏÔÏÊ ÐÁÎÅÌÉ" },
- { "iso-8859-2", "Správca okien presúva okraje okien\n(AfterStep, Enlightenment, FVWM, IceWM, Sawfish)" },
- { "iso-8859-2", "Ka¾i posle, ki se skrivajo pred upravljalnik oken (SKIP-WINLIST)" },
- { "iso-8859-5", "Window ÜÕÝÐÔ×ÕàØ ßÞÜÕàÐ ÔÕÚÞàÐæØÞÝØ ßàÞ×Þà ãÜÕáâÞ âÞÓa\n(AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" },
- { "iso-8859-2", "Window menadzeri pomera dekoracioni prozor umesto toga\n(AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" },
- { "iso-8859-1", "Fönsterhanteraren flyttar dekorationsfönstret istället\n(AfterStep, Enlightenment, FVWM, IceWM, Sawfish)" },
- /*{ "TSCII", "À½¢ì¸¼î-ºð¼¸ò¾¢ø À¡÷ì¸ ÓÊ¡¾ À½¢ì¸¼í¸¨Ç ¸¡Á¢ (À½¢ì¸¼î-ºð¼¸õ-¾Å¢÷)" },*/
- { "iso-8859-9", "Kaydetme isteðine bir uygulak cevap vermiyor .\nUygulaðý sileyim mi , yoksa bekleyeyim mi ?" },
- { "koi8-u", "ðÅÒÅͦÝÅÎÎÑ ÄÅËÏÒÁæ§ ÚÁͦÓÔØ ×¦ËÎÁ\n(AfterStep, Enlightenment, FVWM, IceWM, Sawfish)" },
- { "iso-8859-1", "Cwand on scriftôr est bodjî foû, li scriftôr èt totes\nles apliketes å dvins sont pierdowes. Bodjî ci scriftôr chal?" },
- { "gb2312", "ǨÒƵ½×°Êδ°¿Ú¹ÜÀí³ÌÐò(AfterStep, Enlightenment, FVWM, IceWM, SawMill)" },
- { "big5", "µøµ¡ºÞ²zªÌ¥u²¾°Ê¸Ë¹¢µøµ¡\n(AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" },
-};
diff --git a/camel/tests/lib/addresses.c b/camel/tests/lib/addresses.c
deleted file mode 100644
index a97ac5e4f9..0000000000
--- a/camel/tests/lib/addresses.c
+++ /dev/null
@@ -1,51 +0,0 @@
-
-#include "addresses.h"
-#include "camel-test.h"
-
-void
-test_address_compare(CamelInternetAddress *addr, CamelInternetAddress *addr2)
-{
- const char *r1, *r2, *a1, *a2;
- char *e1, *e2, *f1, *f2;
- int j;
-
- check(camel_address_length(CAMEL_ADDRESS(addr)) == camel_address_length(CAMEL_ADDRESS(addr2)));
- for (j=0;j<camel_address_length(CAMEL_ADDRESS(addr));j++) {
-
- check(camel_internet_address_get(addr, j, &r1, &a1) == TRUE);
- check(camel_internet_address_get(addr2, j, &r2, &a2) == TRUE);
-
- check(string_equal(r1, r2));
- check(strcmp(a1, a2) == 0);
- }
- check(camel_internet_address_get(addr, j, &r1, &a1) == FALSE);
- check(camel_internet_address_get(addr2, j, &r2, &a2) == FALSE);
-
- e1 = camel_address_encode(CAMEL_ADDRESS(addr));
- e2 = camel_address_encode(CAMEL_ADDRESS(addr2));
-
- if (camel_address_length(CAMEL_ADDRESS(addr)) == 0)
- check(e1 == NULL && e2 == NULL);
- else
- check(e1 != NULL && e2 != NULL);
-
- if (e1 != NULL) {
- check_msg(string_equal(e1, e2), "e1 = '%s' e2 = '%s'", e1, e2);
- test_free(e1);
- test_free(e2);
- }
-
- f1 = camel_address_format(CAMEL_ADDRESS(addr));
- f2 = camel_address_format(CAMEL_ADDRESS(addr2));
-
- if (camel_address_length(CAMEL_ADDRESS(addr)) == 0)
- check(f1 == NULL && f2 == NULL);
- else
- check(f1 != NULL && f2 != NULL);
-
- if (f1 != NULL) {
- check_msg(string_equal(f1, f2), "f1 = '%s' f2 = '%s'", f1, f2);
- test_free(f1);
- test_free(f2);
- }
-}
diff --git a/camel/tests/lib/addresses.h b/camel/tests/lib/addresses.h
deleted file mode 100644
index dc35a19f05..0000000000
--- a/camel/tests/lib/addresses.h
+++ /dev/null
@@ -1,5 +0,0 @@
-
-#include <camel/camel-internet-address.h>
-
-/* addresses.c */
-void test_address_compare(CamelInternetAddress *addr, CamelInternetAddress *addr2);
diff --git a/camel/tests/lib/camel-test.c b/camel/tests/lib/camel-test.c
deleted file mode 100644
index a61f949f0a..0000000000
--- a/camel/tests/lib/camel-test.c
+++ /dev/null
@@ -1,350 +0,0 @@
-
-#include "camel-test.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <signal.h>
-
-#ifdef ENABLE_THREADS
-#include <pthread.h>
-#include <unistd.h>
-#endif
-
-#ifdef ENABLE_THREADS
-/* well i dunno, doesn't seem to be in the headers but hte manpage mentions it */
-/* a nonportable checking mutex for glibc, not really needed, just validates
- the test harness really */
-# ifdef PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
-static pthread_mutex_t lock = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP;
-# else
-static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
-# endif
-#define CAMEL_TEST_LOCK pthread_mutex_lock(&lock)
-#define CAMEL_TEST_UNLOCK pthread_mutex_unlock(&lock)
-#define CAMEL_TEST_ID (pthread_self())
-#else
-#define CAMEL_TEST_LOCK
-#define CAMEL_TEST_UNLOCK
-#define CAMEL_TEST_ID (0)
-#endif
-
-static int setup;
-static int ok;
-
-struct _stack {
- struct _stack *next;
- int fatal;
- char *what;
-};
-
-/* per-thread state */
-struct _state {
- char *test;
- int nonfatal;
- struct _stack *state;
-};
-
-static GHashTable *info_table;
-
-int camel_test_verbose;
-
-static void
-dump_action(int id, struct _state *s, void *d)
-{
- struct _stack *node;
-
-#ifdef ENABLE_THREADS
- printf("\nThread %d:\n", id);
-#endif
- node = s->state;
- if (node) {
- printf("Current action:\n");
- while (node) {
- printf("\t%s%s\n", node->fatal?"":"[nonfatal]", node->what);
- node = node->next;
- }
- }
- printf("\tTest: %s\n", s->test);
-}
-
-static void die(int sig)
-{
- static int indie = 0;
-
- if (!indie) {
- indie = 1;
- printf("\n\nReceived fatal signal %d\n", sig);
- g_hash_table_foreach(info_table, (GHFunc)dump_action, 0);
-
-#ifdef ENABLE_THREADS
- if (camel_test_verbose > 2) {
- printf("Attach debugger to pid %d to debug\n", getpid());
- sleep(1000);
- }
-#endif
- }
-
- _exit(1);
-}
-
-static struct _state *
-current_state(void)
-{
- struct _state *info;
-
- if (info_table == NULL)
- info_table = g_hash_table_new(0, 0);
-
- info = g_hash_table_lookup(info_table, (void *)CAMEL_TEST_ID);
- if (info == NULL) {
- info = g_malloc0(sizeof(*info));
- g_hash_table_insert(info_table, (void *)CAMEL_TEST_ID, info);
- }
- return info;
-}
-
-
-void camel_test_init(int argc, char **argv)
-{
- void camel_init(void);
- int i;
-
- setup = 1;
-
-#ifndef ENABLE_THREADS
- camel_init();
-#endif
-
- info_table = g_hash_table_new(0, 0);
-
- /* yeah, we do need ot thread init, even though camel isn't compiled with enable threads */
- g_thread_init(NULL);
-
- signal(SIGSEGV, die);
- signal(SIGABRT, die);
-
- /* default, just say what, how well we did, unless fail, then abort */
- camel_test_verbose = 1;
-
- for (i=0;i<argc;i++) {
- if (argv[i][0] == '-') {
- switch (argv[i][1]) {
- case 'v':
- camel_test_verbose = strlen(argv[i]);
- break;
- case 'q':
- camel_test_verbose = 0;
- break;
- }
- }
- }
-}
-
-void camel_test_start(const char *what)
-{
- struct _state *s;
-
- CAMEL_TEST_LOCK;
-
- s = current_state();
-
- if (!setup)
- camel_test_init(0, 0);
-
- ok = 1;
-
- s->test = g_strdup(what);
-
- if (camel_test_verbose > 0) {
- printf("Test: %s ... ", what);
- fflush(stdout);
- }
-
- CAMEL_TEST_UNLOCK;
-}
-
-void camel_test_push(const char *what, ...)
-{
- struct _stack *node;
- va_list ap;
- char *text;
- struct _state *s;
-
- CAMEL_TEST_LOCK;
-
- s = current_state();
-
- va_start(ap, what);
- text = g_strdup_vprintf(what, ap);
- va_end(ap);
-
- if (camel_test_verbose > 3)
- printf("Start step: %s\n", text);
-
- node = g_malloc(sizeof(*node));
- node->what = text;
- node->next = s->state;
- node->fatal = 1;
- s->state = node;
-
- CAMEL_TEST_UNLOCK;
-}
-
-void camel_test_pull(void)
-{
- struct _stack *node;
- struct _state *s;
-
- CAMEL_TEST_LOCK;
-
- s = current_state();
-
- g_assert(s->state);
-
- if (camel_test_verbose > 3)
- printf("Finish step: %s\n", s->state->what);
-
- node = s->state;
- s->state = node->next;
- if (!node->fatal)
- s->nonfatal--;
- g_free(node->what);
- g_free(node);
-
- CAMEL_TEST_UNLOCK;
-}
-
-/* where to set breakpoints */
-void camel_test_break(void);
-
-void camel_test_break(void)
-{
-}
-
-void camel_test_fail(const char *why, ...)
-{
- va_list ap;
-
- va_start(ap, why);
- camel_test_failv(why, ap);
- va_end(ap);
-}
-
-
-void camel_test_failv(const char *why, va_list ap)
-{
- char *text;
- struct _state *s;
-
- CAMEL_TEST_LOCK;
-
- s = current_state();
-
- text = g_strdup_vprintf(why, ap);
-
- if ((s->nonfatal == 0 && camel_test_verbose > 0)
- || (s->nonfatal && camel_test_verbose > 1)) {
- printf("Failed.\n%s\n", text);
- camel_test_break();
- }
-
- g_free(text);
-
- if ((s->nonfatal == 0 && camel_test_verbose > 0)
- || (s->nonfatal && camel_test_verbose > 2)) {
- g_hash_table_foreach(info_table, (GHFunc)dump_action, 0);
- }
-
- if (s->nonfatal == 0) {
- exit(1);
- } else {
- ok=0;
- if (camel_test_verbose > 1) {
- printf("Known problem (ignored):\n");
- dump_action(CAMEL_TEST_ID, s, 0);
- }
- }
-
- CAMEL_TEST_UNLOCK;
-}
-
-void camel_test_nonfatal(const char *what, ...)
-{
- struct _stack *node;
- va_list ap;
- char *text;
- struct _state *s;
-
- CAMEL_TEST_LOCK;
-
- s = current_state();
-
- va_start(ap, what);
- text = g_strdup_vprintf(what, ap);
- va_end(ap);
-
- if (camel_test_verbose > 3)
- printf("Start nonfatal: %s\n", text);
-
- node = g_malloc(sizeof(*node));
- node->what = text;
- node->next = s->state;
- node->fatal = 0;
- s->nonfatal++;
- s->state = node;
-
- CAMEL_TEST_UNLOCK;
-}
-
-void camel_test_fatal(void)
-{
- camel_test_pull();
-}
-
-void camel_test_end(void)
-{
- if (camel_test_verbose > 0) {
- if (ok)
- printf("Ok\n");
- else
- printf("Partial success\n");
- }
-
- fflush(stdout);
-}
-
-
-
-
-/* compare strings, ignore whitespace though */
-int string_equal(const char *a, const char *b)
-{
- const char *ap, *bp;
-
- ap = a;
- bp = b;
-
- while (*ap && *bp) {
- while (*ap == ' ' || *ap == '\n' || *ap == '\t')
- ap++;
- while (*bp == ' ' || *bp == '\n' || *bp == '\t')
- bp++;
-
- a = ap;
- b = bp;
-
- while (*ap && *ap != ' ' && *ap != '\n' && *ap != '\t')
- ap++;
- while (*bp && *bp != ' ' && *bp != '\n' && *bp != '\t')
- bp++;
-
- if (ap - a != bp - a
- && ap - 1 > 0
- && memcmp(a, b, ap-a) != 0) {
- return 0;
- }
- }
-
- return 1;
-}
-
diff --git a/camel/tests/lib/camel-test.h b/camel/tests/lib/camel-test.h
deleted file mode 100644
index 986a943fa3..0000000000
--- a/camel/tests/lib/camel-test.h
+++ /dev/null
@@ -1,68 +0,0 @@
-
-/* some utilities for testing */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <glib.h>
-
-void camel_test_failv(const char *why, va_list ap);
-
-/* perform a check assertion */
-#define check(x) do {if (!(x)) { camel_test_fail("%s:%d: %s", __FILE__, __LINE__, #x); } } while (0)
-/* check with message */
-#ifdef __GNUC__
-#define check_msg(x, y, z...) do {if (!(x)) { camel_test_fail("%s:%d: %s\n\t" #y, __FILE__, __LINE__, #x, ##z); } } while (0)
-#else
-static void check_msg(int truth, char *fmt, ...)
-{
- /* no gcc, we lose the condition that failed, nm */
- if (!truth) {
- va_list ap;
- va_start(ap, fmt);
- camel_test_failv(fmt, ap);
- va_end(ap);
- }
-}
-#endif
-
-#define check_count(object, expected) do { \
- if (CAMEL_OBJECT(object)->ref_count != expected) { \
- camel_test_fail("%s->ref_count != %s\n\tref_count = %d", #object, #expected, CAMEL_OBJECT(object)->ref_count); \
- } \
-} while (0)
-
-#define check_unref(object, expected) do { \
- check_count(object, expected); \
- camel_object_unref(CAMEL_OBJECT(object)); \
- if (expected == 1) { \
- object = NULL; \
- } \
-} while (0)
-
-#define test_free(mem) (g_free(mem), mem=NULL)
-
-#define push camel_test_push
-#define pull camel_test_pull
-
-void camel_test_init(int argc, char **argv);
-
-/* start/finish a new test */
-void camel_test_start(const char *what);
-void camel_test_end(void);
-
-/* start/finish a new test part */
-void camel_test_push(const char *what, ...);
-void camel_test_pull(void);
-
-/* fail a test, with a reason why */
-void camel_test_fail(const char *why, ...);
-void camel_test_failv(const char *why, va_list ap);
-
-/* Set whether a failed test quits. May be nested, but must be called in nonfatal/fatal pairs */
-void camel_test_nonfatal(const char *why, ...);
-void camel_test_fatal(void);
-
-/* utility functions */
-/* compare strings, ignore whitespace though */
-int string_equal(const char *a, const char *b);
diff --git a/camel/tests/lib/folders.c b/camel/tests/lib/folders.c
deleted file mode 100644
index ba02001bcc..0000000000
--- a/camel/tests/lib/folders.c
+++ /dev/null
@@ -1,526 +0,0 @@
-#include <string.h>
-
-#include "camel-test.h"
-#include "folders.h"
-#include "messages.h"
-
-#include "camel/camel-exception.h"
-
-/* check the total/unread is what we think it should be */
-void
-test_folder_counts(CamelFolder *folder, int total, int unread)
-{
- GPtrArray *s;
- int i, myunread;
- CamelMessageInfo *info;
-
- push("test folder counts %d total %d unread", total, unread);
-
- /* first, use the standard functions */
- check(camel_folder_get_message_count(folder) == total);
- check(camel_folder_get_unread_message_count(folder) == total);
-
- /* next, use the summary */
- s = camel_folder_get_summary(folder);
- check(s != NULL);
- check(s->len == total);
- myunread = s->len;
- for (i=0;i<s->len;i++) {
- info = s->pdata[i];
- if (info->flags & CAMEL_MESSAGE_SEEN)
- myunread--;
- }
- check(unread == myunread);
- camel_folder_free_summary(folder, s);
-
- /* last, use the uid list */
- s = camel_folder_get_uids(folder);
- check(s != NULL);
- check(s->len == total);
- myunread = s->len;
- for (i=0;i<s->len;i++) {
- info = camel_folder_get_message_info(folder, s->pdata[i]);
- if (info->flags & CAMEL_MESSAGE_SEEN)
- myunread--;
- camel_folder_free_message_info(folder, info);
- }
- check(unread == myunread);
- camel_folder_free_uids(folder, s);
-
- pull();
-}
-
-static int
-safe_strcmp(const char *a, const char *b)
-{
- if (a == NULL && b == NULL)
- return 0;
- if (a == NULL)
- return 1;
- if (b == NULL)
- return -1;
- return strcmp(a, b);
-}
-
-void
-test_message_info(CamelMimeMessage *msg, const CamelMessageInfo *info)
-{
- check_msg(safe_strcmp(camel_message_info_subject(info), camel_mime_message_get_subject(msg)) == 0,
- "info->subject = '%s', get_subject() = '%s'", camel_message_info_subject(info), camel_mime_message_get_subject(msg));
-
- /* FIXME: testing from/cc/to, etc is more tricky */
-
- check(info->date_sent == camel_mime_message_get_date(msg, NULL));
-
- /* date received isn't set for messages that haven't been sent anywhere ... */
- /*check(info->date_received == camel_mime_message_get_date_received(msg, NULL));*/
-
- /* so is messageid/references, etc */
-}
-
-/* check a message is present */
-void
-test_folder_message(CamelFolder *folder, const char *uid)
-{
- CamelMimeMessage *msg;
- CamelMessageInfo *info;
- GPtrArray *s;
- int i;
- CamelException *ex = camel_exception_new();
- int found;
-
- push("uid %s is in folder", uid);
-
- /* first try getting info */
- info = camel_folder_get_message_info(folder, uid);
- check(info != NULL);
- check(strcmp(camel_message_info_uid(info), uid) == 0);
- camel_folder_free_message_info(folder, info);
-
- /* then, getting message */
- msg = camel_folder_get_message(folder, uid, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- check(msg != NULL);
-
- /* cross check with info */
- test_message_info(msg, info);
-
- camel_object_unref((CamelObject *)msg);
-
- /* see if it is in the summary (only once) */
- s = camel_folder_get_summary(folder);
- check(s != NULL);
- found = 0;
- for (i=0;i<s->len;i++) {
- info = s->pdata[i];
- if (strcmp(camel_message_info_uid(info), uid) == 0)
- found++;
- }
- check(found == 1);
- camel_folder_free_summary(folder, s);
-
- /* check it is in the uid list */
- s = camel_folder_get_uids(folder);
- check(s != NULL);
- found = 0;
- for (i=0;i<s->len;i++) {
- if (strcmp(s->pdata[i], uid) == 0)
- found++;
- }
- check(found == 1);
- camel_folder_free_uids(folder, s);
-
- camel_exception_free(ex);
-
- pull();
-}
-
-/* check message not present */
-void
-test_folder_not_message(CamelFolder *folder, const char *uid)
-{
- CamelMimeMessage *msg;
- CamelMessageInfo *info;
- GPtrArray *s;
- int i;
- CamelException *ex = camel_exception_new();
- int found;
-
- push("uid %s is not in folder", uid);
-
- /* first try getting info */
- info = camel_folder_get_message_info(folder, uid);
- check(info == NULL);
-
- /* then, getting message */
- msg = camel_folder_get_message(folder, uid, ex);
- check(camel_exception_is_set(ex));
- check(msg == NULL);
- camel_exception_clear(ex);
-
- /* see if it is not in the summary (only once) */
- s = camel_folder_get_summary(folder);
- check(s != NULL);
- found = 0;
- for (i=0;i<s->len;i++) {
- info = s->pdata[i];
- if (strcmp(camel_message_info_uid(info), uid) == 0)
- found++;
- }
- check(found == 0);
- camel_folder_free_summary(folder, s);
-
- /* check it is not in the uid list */
- s = camel_folder_get_uids(folder);
- check(s != NULL);
- found = 0;
- for (i=0;i<s->len;i++) {
- if (strcmp(s->pdata[i], uid) == 0)
- found++;
- }
- check(found == 0);
- camel_folder_free_uids(folder, s);
-
- camel_exception_free(ex);
-
- pull();
-}
-
-/* test basic store operations on folders */
-/* TODO: Add subscription stuff */
-void
-test_folder_basic(CamelSession *session, const char *storename, int local)
-{
- CamelStore *store;
- CamelException *ex = camel_exception_new();
- CamelFolder *folder, *root;
- char *what = g_strdup_printf("testing store: %s", storename);
-
- camel_test_start(what);
- test_free(what);
-
- push("getting store");
- store = camel_session_get_store(session, storename, ex);
- check_msg(!camel_exception_is_set(ex), "getting store: %s", camel_exception_get_description(ex));
- check(store != NULL);
- pull();
-
- /* local providers == no root folder */
- push("getting root folder");
- root = camel_store_get_root_folder(store, ex);
- if (local) {
- check(camel_exception_is_set(ex));
- check(root == NULL);
- camel_exception_clear(ex);
- } else {
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- check(root != NULL);
- check_unref(root, 1);
- }
- pull();
-
- /* same for default folder */
- push("getting default folder");
- root = camel_store_get_root_folder(store, ex);
- if (local) {
- check(camel_exception_is_set(ex));
- check(root == NULL);
- camel_exception_clear(ex);
- } else {
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- check(root != NULL);
- check_unref(root, 1);
- }
- pull();
-
- push("getting a non-existant folder, no create");
- folder = camel_store_get_folder(store, "unknown", 0, ex);
- check(camel_exception_is_set(ex));
- check(folder == NULL);
- camel_exception_clear(ex);
- pull();
-
- push("getting a non-existant folder, with create");
- folder = camel_store_get_folder(store, "testbox", CAMEL_STORE_FOLDER_CREATE, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- check(folder != NULL);
- check_unref(folder, 1);
- pull();
-
- push("getting an existing folder");
- folder = camel_store_get_folder(store, "testbox", 0, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- check(folder != NULL);
- check_unref(folder, 1);
- pull();
-
- push("renaming a non-existant folder");
- camel_store_rename_folder(store, "unknown1", "unknown2", ex);
- check(camel_exception_is_set(ex));
- camel_exception_clear(ex);
- pull();
-
- push("renaming an existing folder");
- camel_store_rename_folder(store, "testbox", "testbox2", ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- pull();
-
- push("opening the old name of a renamed folder");
- folder = camel_store_get_folder(store, "testbox", 0, ex);
- check(camel_exception_is_set(ex));
- check(folder == NULL);
- camel_exception_clear(ex);
- pull();
-
- push("opening the new name of a renamed folder");
- folder = camel_store_get_folder(store, "testbox2", 0, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- check(folder != NULL);
- check_unref(folder, 1);
- pull();
-
- push("deleting a non-existant folder");
- camel_store_delete_folder(store, "unknown", ex);
- check(camel_exception_is_set(ex));
- camel_exception_clear(ex);
- pull();
-
- push("deleting an existing folder");
- camel_store_delete_folder(store, "testbox2", ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- pull();
-
- push("opening a folder that has been deleted");
- folder = camel_store_get_folder(store, "testbox2", 0, ex);
- check(camel_exception_is_set(ex));
- check(folder == NULL);
- camel_exception_clear(ex);
- pull();
-
- check_unref(store, 1);
-
- camel_test_end();
-
- camel_exception_free(ex);
-}
-
-
-/* todo: cross-check everything with folder_info checks as well */
-/* this should probably take a folder instead of a session ... */
-void
-test_folder_message_ops(CamelSession *session, const char *name, int local)
-{
- CamelStore *store;
- CamelException *ex = camel_exception_new();
- CamelFolder *folder;
- CamelMimeMessage *msg;
- int j;
- int indexed, max;
- GPtrArray *uids;
- CamelMessageInfo *info;
-
- max=local?2:1;
-
- for (indexed = 0;indexed<max;indexed++) {
- char *what = g_strdup_printf("folder ops: %s %s", name, local?(indexed?"indexed":"non-indexed"):"");
- int flags;
-
- camel_test_start(what);
- test_free(what);
-
- push("getting store");
- store = camel_session_get_store(session, name, ex);
- check_msg(!camel_exception_is_set(ex), "getting store: %s", camel_exception_get_description(ex));
- check(store != NULL);
- pull();
-
- push("creating %sindexed folder", indexed?"":"non-");
- if (indexed)
- flags = CAMEL_STORE_FOLDER_CREATE|CAMEL_STORE_FOLDER_BODY_INDEX;
- else
- flags = CAMEL_STORE_FOLDER_CREATE;
- folder = camel_store_get_folder(store, "testbox", flags, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- check(folder != NULL);
-
- /* verify empty/can't get nonexistant stuff */
- test_folder_counts(folder, 0, 0);
- test_folder_not_message(folder, "0");
- test_folder_not_message(folder, "");
-
- for (j=0;j<10;j++) {
- char *content, *subject;
-
- push("creating test message");
- msg = test_message_create_simple();
- content = g_strdup_printf("Test message %d contents\n\n", j);
- test_message_set_content_simple((CamelMimePart *)msg, 0, "text/plain",
- content, strlen(content));
- test_free(content);
- subject = g_strdup_printf("Test message %d", j);
- camel_mime_message_set_subject(msg, subject);
- pull();
-
- push("appending simple message %d", j);
- camel_folder_append_message(folder, msg, NULL, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
-
- /* sigh, this shouldn't be required, but the imap code is too dumb to do it itself */
- if (!local) {
- push("forcing a refresh of folder updates");
- camel_folder_refresh_info(folder, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- pull();
- }
-
- if (!local)
- camel_test_nonfatal("unread counts dont seem right for imap");
-
- test_folder_counts(folder, j+1, j+1);
-
- if (!local)
- camel_test_fatal();
-
- push("checking it is in the right uid slot & exists");
- uids = camel_folder_get_uids(folder);
- check(uids != NULL);
- check(uids->len == j+1);
- test_folder_message(folder, uids->pdata[j]);
- pull();
-
- push("checking it is the right message (subject): %s", subject);
- info = camel_folder_get_message_info(folder, uids->pdata[j]);
- check_msg(strcmp(camel_message_info_subject(info), subject)==0,
- "info->subject %s", camel_message_info_subject(info));
- camel_folder_free_uids(folder, uids);
- camel_folder_free_message_info(folder, info);
- pull();
-
- test_free(subject);
-
- check_unref(msg, 1);
- pull();
- }
-
- check_unref(folder, 1);
- pull();
-
- push("deleting test folder, with messages in it");
- camel_store_delete_folder(store, "testbox", ex);
- check(camel_exception_is_set(ex));
- camel_exception_clear(ex);
- pull();
-
- push("re-opening folder");
- folder = camel_store_get_folder(store, "testbox", flags, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- check(folder != NULL);
-
- /* verify counts */
- test_folder_counts(folder, 10, 10);
-
- /* re-check uid's, after a reload */
- uids = camel_folder_get_uids(folder);
- check(uids != NULL);
- check(uids->len == 10);
- for (j=0;j<10;j++) {
- char *subject = g_strdup_printf("Test message %d", j);
-
- push("verify reload of %s", subject);
- test_folder_message(folder, uids->pdata[j]);
-
- info = camel_folder_get_message_info(folder, uids->pdata[j]);
- check_msg(strcmp(camel_message_info_subject(info), subject)==0,
- "info->subject %s", camel_message_info_subject(info));
- test_free(subject);
- camel_folder_free_message_info(folder, info);
- pull();
- }
-
- push("deleting first message & expunging");
- camel_folder_delete_message(folder, uids->pdata[0]);
- test_folder_counts(folder, 10, 10);
- camel_folder_expunge(folder, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- test_folder_not_message(folder, uids->pdata[0]);
- test_folder_counts(folder, 9, 9);
-
- camel_folder_free_uids(folder, uids);
-
- uids = camel_folder_get_uids(folder);
- check(uids != NULL);
- check(uids->len == 9);
- for (j=0;j<9;j++) {
- char *subject = g_strdup_printf("Test message %d", j+1);
-
- push("verify after expunge of %s", subject);
- test_folder_message(folder, uids->pdata[j]);
-
- info = camel_folder_get_message_info(folder, uids->pdata[j]);
- check_msg(strcmp(camel_message_info_subject(info), subject)==0,
- "info->subject %s", camel_message_info_subject(info));
- test_free(subject);
- camel_folder_free_message_info(folder, info);
- pull();
- }
- pull();
-
- push("deleting last message & expunging");
- camel_folder_delete_message(folder, uids->pdata[8]);
- /* sync? */
- test_folder_counts(folder, 9, 9);
- camel_folder_expunge(folder, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- test_folder_not_message(folder, uids->pdata[8]);
- test_folder_counts(folder, 8, 8);
-
- camel_folder_free_uids(folder, uids);
-
- uids = camel_folder_get_uids(folder);
- check(uids != NULL);
- check(uids->len == 8);
- for (j=0;j<8;j++) {
- char *subject = g_strdup_printf("Test message %d", j+1);
-
- push("verify after expunge of %s", subject);
- test_folder_message(folder, uids->pdata[j]);
-
- info = camel_folder_get_message_info(folder, uids->pdata[j]);
- check_msg(strcmp(camel_message_info_subject(info), subject)==0,
- "info->subject %s", camel_message_info_subject(info));
- test_free(subject);
- camel_folder_free_message_info(folder, info);
- pull();
- }
- pull();
-
- push("deleting all messages & expunging");
- for (j=0;j<8;j++) {
- camel_folder_delete_message(folder, uids->pdata[j]);
- }
- /* sync? */
- test_folder_counts(folder, 8, 8);
- camel_folder_expunge(folder, ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- for (j=0;j<8;j++) {
- test_folder_not_message(folder, uids->pdata[j]);
- }
- test_folder_counts(folder, 0, 0);
-
- camel_folder_free_uids(folder, uids);
- pull();
-
- check_unref(folder, 1);
- pull(); /* re-opening folder */
-
- push("deleting test folder, with no messages in it");
- camel_store_delete_folder(store, "testbox", ex);
- check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- pull();
-
- check_unref(store, 1);
- camel_test_end();
- }
-
- camel_exception_free(ex);
-}
diff --git a/camel/tests/lib/folders.h b/camel/tests/lib/folders.h
deleted file mode 100644
index 2cb2d97028..0000000000
--- a/camel/tests/lib/folders.h
+++ /dev/null
@@ -1,20 +0,0 @@
-
-#include "camel/camel-session.h"
-#include "camel/camel-store.h"
-
-#include <camel/camel-folder.h>
-#include <camel/camel-folder-summary.h>
-#include <camel/camel-mime-message.h>
-
-/* check the total/unread is what we think it should be, everywhere it can be determined */
-void test_folder_counts(CamelFolder *folder, int total, int unread);
-/* cross-check info/msg */
-void test_message_info(CamelMimeMessage *msg, const CamelMessageInfo *info);
-/* check a message is present everywhere it should be */
-void test_folder_message(CamelFolder *folder, const char *uid);
-/* check message not present everywhere it shouldn't be */
-void test_folder_not_message(CamelFolder *folder, const char *uid);
-/* test basic folder ops on a store */
-void test_folder_basic(CamelSession *session, const char *storename, int local);
-/* test basic message operations on a folder */
-void test_folder_message_ops(CamelSession *session, const char *storename, int local);
diff --git a/camel/tests/lib/messages.c b/camel/tests/lib/messages.c
deleted file mode 100644
index a8c8b30465..0000000000
--- a/camel/tests/lib/messages.c
+++ /dev/null
@@ -1,153 +0,0 @@
-#include <string.h>
-
-#include "messages.h"
-#include "camel-test.h"
-
-#include <camel/camel-mime-message.h>
-#include <camel/camel-stream-fs.h>
-#include <camel/camel-stream-mem.h>
-
-CamelMimeMessage *
-test_message_create_simple(void)
-{
- CamelMimeMessage *msg;
- CamelInternetAddress *addr;
-
- msg = camel_mime_message_new();
-
- addr = camel_internet_address_new();
- camel_internet_address_add(addr, "Michael Zucchi", "zed@nowhere.com");
- camel_mime_message_set_from(msg, addr);
- camel_address_remove((CamelAddress *)addr, -1);
- camel_internet_address_add(addr, "POSTMASTER", "POSTMASTER@somewhere.net");
- camel_mime_message_set_recipients(msg, CAMEL_RECIPIENT_TYPE_TO, addr);
- camel_address_remove((CamelAddress *)addr, -1);
- camel_internet_address_add(addr, "Michael Zucchi", "zed@nowhere.com");
- camel_mime_message_set_recipients(msg, CAMEL_RECIPIENT_TYPE_CC, addr);
-
- check_unref(addr, 1);
-
- camel_mime_message_set_subject(msg, "Simple message subject");
- camel_mime_message_set_date(msg, time(0), 930);
-
- return msg;
-}
-
-static void
-content_finalise(CamelObject *folder, void *crap, void *ba)
-{
- g_byte_array_free(ba, TRUE);
-}
-
-void
-test_message_set_content_simple(CamelMimePart *part, int how, const char *type, const char *text, int len)
-{
- CamelStreamMem *content = NULL;
- CamelDataWrapper *dw;
- static GByteArray *ba;
-
- switch (how) {
- case 0:
- camel_mime_part_set_content(part, text, len, type);
- break;
- case 1:
- content = (CamelStreamMem *)camel_stream_mem_new_with_buffer(text, len);
- break;
- case 2:
- content = (CamelStreamMem *)camel_stream_mem_new();
- camel_stream_mem_set_buffer(content, text, len);
- break;
- case 3:
- ba = g_byte_array_new();
- g_byte_array_append(ba, text, len);
-
- content = (CamelStreamMem *)camel_stream_mem_new_with_byte_array(ba);
- ba = NULL;
- break;
- case 4:
- ba = g_byte_array_new();
- g_byte_array_append(ba, text, len);
-
- content = (CamelStreamMem *)camel_stream_mem_new();
- camel_stream_mem_set_byte_array(content, ba);
-
- camel_object_hook_event((CamelObject *)content, "finalize", content_finalise, ba);
- break;
- }
-
- if (content != 0) {
- dw = camel_data_wrapper_new();
- camel_data_wrapper_set_mime_type (dw, type);
-
- camel_data_wrapper_construct_from_stream(dw, (CamelStream *)content);
- camel_medium_set_content_object((CamelMedium *)part, dw);
-
- check_unref(content, 2);
- check_unref(dw, 2);
- }
-}
-
-int
-test_message_write_file(CamelMimeMessage *msg, const char *name)
-{
- CamelStreamFs *file;
- int ret;
-
- file = (CamelStreamFs *)camel_stream_fs_new_with_name(name, O_CREAT|O_WRONLY, 0600);
- camel_data_wrapper_write_to_stream((CamelDataWrapper *)msg, (CamelStream *)file);
- ret = camel_stream_close((CamelStream *)file);
-
- check(((CamelObject *)file)->ref_count == 1);
- camel_object_unref((CamelObject *)file);
-
- return ret;
-}
-
-CamelMimeMessage *
-test_message_read_file(const char *name)
-{
- CamelStreamFs *file;
- CamelMimeMessage *msg2;
-
- file = (CamelStreamFs *)camel_stream_fs_new_with_name(name, O_RDONLY, 0);
- msg2 = camel_mime_message_new();
-
- camel_data_wrapper_construct_from_stream((CamelDataWrapper *)msg2, (CamelStream *)file);
- /* file's refcount may be > 1 if the message is real big */
- check(CAMEL_OBJECT(file)->ref_count >=1);
-
- return msg2;
-}
-
-int
-test_message_compare_content(CamelDataWrapper *dw, const char *text, int len)
-{
- CamelStreamMem *content;
-
- /* sigh, ok, so i len == 0, dw will probably be 0 too
- camel_mime_part_set_content is weird like that */
- if (dw == 0 && len == 0)
- return 0;
-
- content = (CamelStreamMem *)camel_stream_mem_new();
- camel_data_wrapper_write_to_stream(dw, (CamelStream *)content);
-
- check_msg(content->buffer->len == len, "buffer->len = %d, len = %d", content->buffer->len, len);
- check_msg(memcmp(content->buffer->data, text, content->buffer->len) == 0, "len = %d", len);
-
- check_unref(content, 1);
-
- return 0;
-}
-
-int
-test_message_compare_header(CamelMimeMessage *m1, CamelMimeMessage *m2)
-{
- return 0;
-}
-
-int
-test_message_compare_messages(CamelMimeMessage *m1, CamelMimeMessage *m2)
-{
- return 0;
-}
diff --git a/camel/tests/lib/messages.h b/camel/tests/lib/messages.h
deleted file mode 100644
index 9cb5758826..0000000000
--- a/camel/tests/lib/messages.h
+++ /dev/null
@@ -1,12 +0,0 @@
-
-#include <camel/camel-mime-message.h>
-
-/* how many ways to set the content contents */
-#define SET_CONTENT_WAYS (5)
-
-/* messages.c */
-CamelMimeMessage *test_message_create_simple(void);
-void test_message_set_content_simple(CamelMimePart *part, int how, const char *type, const char *text, int len);
-int test_message_write_file(CamelMimeMessage *msg, const char *name);
-CamelMimeMessage *test_message_read_file(const char *name);
-int test_message_compare_content(CamelDataWrapper *dw, const char *text, int len);
diff --git a/camel/tests/lib/streams.c b/camel/tests/lib/streams.c
deleted file mode 100644
index e4dc006363..0000000000
--- a/camel/tests/lib/streams.c
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- stream tests
-
- todo: do we need a seek test that seeks beyond the eos, writes,
- then reads and checks for 0's in the space?
-*/
-
-#include <string.h>
-
-#include "camel/camel-stream.h"
-#include "camel/camel-seekable-stream.h"
-#include "camel/camel-seekable-substream.h"
-
-#include "streams.h"
-
-#include "camel-test.h"
-
-static char teststring[] = "\xaa\x55\xc0\x0c\xff\x00";
-static char testbuf[10240];
-
-/* pass in an empty read/write stream */
-void
-test_stream_seekable_writepart(CamelSeekableStream *s)
-{
- off_t end;
- int i;
-
- push("seekable stream test, writing ");
-
- check(camel_seekable_stream_tell(s) == 0);
- check(camel_seekable_stream_seek(s, 0, CAMEL_STREAM_SET) == 0);
- check(camel_seekable_stream_tell(s) == 0);
-
- check(camel_stream_write(CAMEL_STREAM(s), "", 0) == 0);
- check(camel_seekable_stream_tell(s) == 0);
- check(camel_stream_write(CAMEL_STREAM(s), "\n", 1) == 1);
- check(camel_seekable_stream_tell(s) == 1);
-
- for (i=0;i<10240;i++) {
- check(camel_stream_write(CAMEL_STREAM(s), teststring, sizeof(teststring)) == sizeof(teststring));
- check(camel_seekable_stream_tell(s) == 1 + (i+1)*sizeof(teststring));
- }
- end = 10240*sizeof(teststring)+1;
-
- check_msg(camel_seekable_stream_seek(s, 0, CAMEL_STREAM_END) == end, "seek =%d end = %d",
- camel_seekable_stream_seek(s, 0, CAMEL_STREAM_END), end);
-
- check(camel_seekable_stream_seek(s, 0, CAMEL_STREAM_END) == end);
- check(camel_seekable_stream_tell(s) == end);
- /* need to read 0 first to set eos */
- check(camel_stream_read(CAMEL_STREAM(s), testbuf, 10240) == 0);
- check(camel_stream_eos(CAMEL_STREAM(s)));
-
- pull();
-}
-
-void
-test_stream_seekable_readpart(CamelSeekableStream *s)
-{
- off_t off, new, end;
- int i, j;
-
- push("seekable stream test, re-reading");
-
- end = 10240*sizeof(teststring)+1;
-
- check(camel_seekable_stream_seek(s, 0, CAMEL_STREAM_SET) == 0);
- check(camel_seekable_stream_tell(s) == 0);
- check(!camel_stream_eos(CAMEL_STREAM(s)));
-
- off = 0;
- for (i=0;i<1024;i++) {
-
- new = i*3;
-
- /* exercise all seek methods */
- switch(i % 3) {
- case 0:
- check(camel_seekable_stream_seek(s, new, CAMEL_STREAM_SET) == new);
- break;
- case 1:
- check(camel_seekable_stream_seek(s, new-off, CAMEL_STREAM_CUR) == new);
- break;
- case 2:
- check(camel_seekable_stream_seek(s, new-end, CAMEL_STREAM_END) == new);
- break;
- }
- check(camel_seekable_stream_tell(s) == new);
-
- check(camel_stream_read(CAMEL_STREAM(s), testbuf, i*3) == i*3);
- for (j=0;j<i*3;j++) {
- int k = new + j;
-
- if (k==0) {
- check(testbuf[j] == '\n');
- } else {
- check(testbuf[j] == teststring[(k-1) % sizeof(teststring)]);
- }
- }
- off = new+i*3;
- }
-
- /* verify end-of-file behaviour */
- check(camel_seekable_stream_seek(s, -1, CAMEL_STREAM_END) == end-1);
- check(camel_seekable_stream_tell(s) == end-1);
-
- check(camel_stream_read(CAMEL_STREAM(s), testbuf, 10240) == 1);
- check(testbuf[0] == teststring[sizeof(teststring)-1]);
-
- check(camel_stream_read(CAMEL_STREAM(s), testbuf, 10240) == 0);
- check(camel_seekable_stream_seek(s, 0, CAMEL_STREAM_CUR) == end);
- check(camel_seekable_stream_tell(s) == end);
- check(camel_stream_eos(CAMEL_STREAM(s)));
-
- pull();
-}
-
-/*
- 0 = write to the substream
- 1 = write to the parent stream at the right spot
-*/
-void
-test_seekable_substream_writepart(CamelStream *s, int type)
-{
- CamelSeekableStream *ss = (CamelSeekableStream *)s;
- CamelSeekableSubstream *sus = (CamelSeekableSubstream *)s;
- CamelSeekableStream *sp = sus->parent_stream;
- int i, len;
- off_t end;
-
- push("writing substream, type %d", type);
-
- if (type == 1) {
- check(camel_seekable_stream_seek(sp, ss->bound_start, CAMEL_STREAM_SET) == ss->bound_start);
- s = (CamelStream *)sp;
- } else {
- check(camel_seekable_stream_tell(ss) == ss->bound_start);
- check(camel_seekable_stream_seek(ss, 0, CAMEL_STREAM_SET) == ss->bound_start);
- }
-
- check(camel_seekable_stream_tell(CAMEL_SEEKABLE_STREAM(s)) == ss->bound_start);
-
- check(camel_stream_write(s, "", 0) == 0);
- check(camel_seekable_stream_tell(CAMEL_SEEKABLE_STREAM(s)) == ss->bound_start);
-
- /* fill up the bounds with writes */
- if (ss->bound_end != CAMEL_STREAM_UNBOUND) {
- for (i=0;i<(ss->bound_end-ss->bound_start)/sizeof(teststring);i++) {
- check(camel_stream_write(s, teststring, sizeof(teststring)) == sizeof(teststring));
- check(camel_seekable_stream_tell(CAMEL_SEEKABLE_STREAM(s)) == ss->bound_start + (i+1)*sizeof(teststring));
- }
- len = (ss->bound_end-ss->bound_start) % sizeof(teststring);
- check(camel_stream_write(s, teststring, len) == len);
- check(camel_seekable_stream_tell(CAMEL_SEEKABLE_STREAM(s)) == ss->bound_end);
- if (type == 0) {
- check(camel_stream_write(s, teststring, sizeof(teststring)) == 0);
- check(camel_stream_eos(s));
- check(camel_seekable_stream_tell(CAMEL_SEEKABLE_STREAM(s)) == ss->bound_end);
- }
- } else {
- /* just 10K */
- for (i=0;i<10240;i++) {
- check(camel_stream_write(CAMEL_STREAM(s), teststring, sizeof(teststring)) == sizeof(teststring));
- check(camel_seekable_stream_tell(CAMEL_SEEKABLE_STREAM(s)) == ss->bound_start + (i+1)*sizeof(teststring));
- }
-
- /* we can't really verify any end length here */
- }
-
- pull();
-}
-
-void
-test_seekable_substream_readpart(CamelStream *s)
-{
- CamelSeekableStream *ss = (CamelSeekableStream *)s;
- CamelSeekableSubstream *sus = (CamelSeekableSubstream *)s;
- CamelSeekableStream *sp = sus->parent_stream;
- int i, len;
- off_t end;
-
- push("reading substream");
-
- check(camel_seekable_stream_seek(ss, 0, CAMEL_STREAM_SET) == ss->bound_start);
- check(camel_seekable_stream_tell(ss) == ss->bound_start);
-
- check(camel_seekable_stream_seek(sp, ss->bound_start, CAMEL_STREAM_SET) == ss->bound_start);
- check(camel_seekable_stream_tell(sp) == ss->bound_start);
-
- /* check writes, cross check with parent stream */
- if (ss->bound_end != CAMEL_STREAM_UNBOUND) {
- for (i=0;i<(ss->bound_end-ss->bound_start)/sizeof(teststring);i++) {
- check(camel_stream_read(s, testbuf, sizeof(teststring)) == sizeof(teststring));
- check(memcmp(testbuf, teststring, sizeof(teststring)) == 0);
- check(camel_seekable_stream_tell(ss) == ss->bound_start + (i+1)*sizeof(teststring));
-
- /* yeah great, the substreams affect the seek ... */
- check(camel_seekable_stream_seek(sp, ss->bound_start + (i)*sizeof(teststring), CAMEL_STREAM_SET) == ss->bound_start + i*sizeof(teststring));
- check(camel_stream_read(CAMEL_STREAM(sp), testbuf, sizeof(teststring)) == sizeof(teststring));
- check(memcmp(testbuf, teststring, sizeof(teststring)) == 0);
- check(camel_seekable_stream_tell(sp) == ss->bound_start + (i+1)*sizeof(teststring));
- }
- len = (ss->bound_end-ss->bound_start) % sizeof(teststring);
- check(camel_stream_read(s, testbuf, len) == len);
- check(memcmp(testbuf, teststring, len) == 0);
-
- check(camel_seekable_stream_seek(sp, ss->bound_end - len, CAMEL_STREAM_SET) == ss->bound_end - len);
- check(camel_stream_read(CAMEL_STREAM(sp), testbuf, len) == len);
- check(memcmp(testbuf, teststring, len) == 0);
-
- check(camel_stream_eos(s));
- check(camel_seekable_stream_tell(ss) == ss->bound_end);
- check(camel_seekable_stream_tell(sp) == ss->bound_end);
- check(camel_stream_read(s, testbuf, 1024) == 0);
- check(camel_seekable_stream_tell(ss) == ss->bound_end);
- check(camel_seekable_stream_tell(sp) == ss->bound_end);
- check(camel_stream_eos(s));
- } else {
- /* just 10K */
- for (i=0;i<10240;i++) {
- check(camel_stream_read(s, testbuf, sizeof(teststring)) == sizeof(teststring));
- check(memcmp(testbuf, teststring, sizeof(teststring)) == 0);
- check(camel_seekable_stream_tell(ss) == ss->bound_start + (i+1)*sizeof(teststring));
-
- check(camel_seekable_stream_seek(sp, ss->bound_start + (i)*sizeof(teststring), CAMEL_STREAM_SET) == ss->bound_start + i*sizeof(teststring));
- check(camel_stream_read(CAMEL_STREAM(sp), testbuf, sizeof(teststring)) == sizeof(teststring));
- check(memcmp(testbuf, teststring, sizeof(teststring)) == 0);
- check(camel_seekable_stream_tell(sp) == ss->bound_start + (i+1)*sizeof(teststring));
- }
-
- /* unbound - we dont know the real length */
-#if 0
- end = 10240*sizeof(teststring)+ss->bound_start;
-
- check(camel_seekable_stream_seek(ss, 0, CAMEL_STREAM_END) == end);
- check(camel_seekable_stream_tell(ss) == end);
- /* need to read 0 first to set eos */
- check(camel_stream_read(s, testbuf, 10240) == 0);
- check(camel_stream_eos(s));
-#endif
- }
-
- pull();
-}
diff --git a/camel/tests/lib/streams.h b/camel/tests/lib/streams.h
deleted file mode 100644
index df52e283d0..0000000000
--- a/camel/tests/lib/streams.h
+++ /dev/null
@@ -1,12 +0,0 @@
-
-#include "camel/camel-seekable-stream.h"
-
-/* call one, then the other on the same stream content */
-void test_stream_seekable_writepart(CamelSeekableStream *s);
-void test_stream_seekable_readpart(CamelSeekableStream *s);
-
-/* same, for substreams, multiple ways of writing */
-#define SEEKABLE_SUBSTREAM_WAYS (2)
-
-void test_seekable_substream_writepart(CamelStream *s, int type);
-void test_seekable_substream_readpart(CamelStream *s);
diff --git a/camel/tests/message/.cvsignore b/camel/tests/message/.cvsignore
deleted file mode 100644
index 4f58c83bd0..0000000000
--- a/camel/tests/message/.cvsignore
+++ /dev/null
@@ -1,15 +0,0 @@
-.deps
-Makefile
-Makefile.in
-.libs
-.deps
-*.lo
-*.la
-test1
-test2
-test3
-*.msg
-*.bb
-*.bbg
-*.da
-*.gcov
diff --git a/camel/tests/message/Makefile.am b/camel/tests/message/Makefile.am
deleted file mode 100644
index aa430fa409..0000000000
--- a/camel/tests/message/Makefile.am
+++ /dev/null
@@ -1,23 +0,0 @@
-
-INCLUDES = -I$(top_srcdir)/intl -I$(top_srcdir) -I$(top_srcdir)/camel \
- -I$(includedir) \
- -I$(top_srcdir)/camel/tests/lib \
- -DG_LOG_DOMAIN=\"evolution-tests\"
-
-LDADD = \
- $(top_builddir)/camel/libcamel.la \
- $(top_builddir)/e-util/libeutil.la \
- $(top_builddir)/libibex/libibex.la \
- $(GNOME_LIBDIR) \
- $(top_builddir)/camel/tests/lib/libcameltest.a \
- $(GNOMEUI_LIBS) $(INTLLIBS) $(EXTRA_GNOME_LIBS)
-
-check_PROGRAMS = \
- test1 \
- test2 \
- test3
-
-TESTS = test1 test2 test3
-
-
-
diff --git a/camel/tests/message/README b/camel/tests/message/README
deleted file mode 100644
index 280344ce9b..0000000000
--- a/camel/tests/message/README
+++ /dev/null
@@ -1,5 +0,0 @@
-
-test1 creating, saving, loading simple messages
-test2 camelinternetaddress tests, internationalised addresses, etc.
-test3 multipart messages
-
diff --git a/camel/tests/message/test1.c b/camel/tests/message/test1.c
deleted file mode 100644
index 3294000550..0000000000
--- a/camel/tests/message/test1.c
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- test1.c
-
- Create a message, save it.
-
- Retrieve message, compare content.
-
-
- Operations:
- writing/loading from different types of streams
- reading/writing different content
- reading/writing different encodings
- reading/writing different charsets
-
- Just testing streams:
- different stream types
- different file ops
- seek, eof, etc.
-*/
-
-#include "camel-test.h"
-#include "messages.h"
-
-/* for stat */
-#include <sys/stat.h>
-#include <unistd.h>
-
-#include <camel/camel-mime-message.h>
-#include <camel/camel-stream-fs.h>
-#include <camel/camel-stream-mem.h>
-
-struct _text {
- char *text;
- int len;
-};
-
-#define MAX_TEXTS (14)
-struct _text texts[MAX_TEXTS];
-
-static void
-setup(void)
-{
- int i, j;
- char *p;
-
- /* setup various edge and other general cases */
- texts[0].text = "";
- texts[0].len = 0;
- texts[1].text = "";
- texts[1].len = 1;
- texts[2].text = "\n";
- texts[2].len = 1;
- texts[3].text = "A";
- texts[3].len = 1;
- texts[4].text = "This is a test.\n.";
- texts[4].len = strlen(texts[4].text);
- texts[5].text = "This is a test.\n\n.\n";
- texts[5].len = strlen(texts[5].text);
- texts[6].text = g_malloc0(1024);
- texts[6].len = 1024;
- texts[7].text = g_malloc0(102400);
- texts[7].len = 102400;
- texts[8].text = g_malloc(1024);
- memset(texts[8].text, '\n', 1024);
- texts[8].len = 1024;
- texts[9].text = g_malloc(102400);
- memset(texts[9].text, '\n', 102400);
- texts[9].len = 102400;
- texts[10].text = g_malloc(1024);
- memset(texts[10].text, ' ', 1024);
- texts[10].len = 1024;
- texts[11].text = g_malloc(102400);
- memset(texts[11].text, ' ', 102400);
- texts[11].len = 102400;
-
- srand(42);
- p = texts[12].text = g_malloc(1024);
- for (i=0;i<1024;i++) {
- j = rand();
- if (j<RAND_MAX/120)
- *p++ = '\n';
- else
- *p++ = (j % 95) + 32;
- }
- texts[12].len = 1024;
- p = texts[13].text = g_malloc(102400);
- for (i=0;i<102400;i++) {
- j = rand();
- if (j<RAND_MAX/120)
- *p++ = '\n';
- else
- *p++ = (j % 95) + 32;
- }
- texts[13].len = 102400;
-}
-
-static void cleanup(void)
-{
- int i;
-
- for (i=6;i<14;i++) {
- g_free(texts[i].text);
- }
-}
-
-int main(int argc, char **argv)
-{
- CamelMimeMessage *msg, *msg2;
- int i, j;
- char *text;
- int len;
-
- camel_test_init(argc, argv);
-
- setup();
-
- camel_test_start("Simple memory-based content creation");
-
- /* test all ways of setting simple content for a message (i.e. memory based) */
- for (j=0;j<MAX_TEXTS;j++) {
- push("testing text number %d", j);
- text = texts[j].text;
- len = texts[j].len;
- for (i=0;i<SET_CONTENT_WAYS;i++) {
- push("create simple message %d", i);
- msg = test_message_create_simple();
-
- push("set simple content");
- test_message_set_content_simple((CamelMimePart *)msg, i, "text/plain", text, len);
- pull();
-
- push("compare original content");
- test_message_compare_content(camel_medium_get_content_object((CamelMedium *)msg), text, len);
- pull();
-
- push("save message to test1.msg");
- unlink("test1.msg");
- test_message_write_file(msg, "test1.msg");
- check_unref(msg, 1);
- pull();
-
- push("read from test1.msg");
- msg2 = test_message_read_file("test1.msg");
- pull();
-
- push("compare read with original content");
- test_message_compare_content(camel_medium_get_content_object((CamelMedium *)msg2), text, len);
- check_unref(msg2, 1);
- pull();
-
- unlink("test1.msg");
- pull();
- }
- pull();
- }
-
- camel_test_end();
-
- camel_test_start("Different encodings");
- for (j=0;j<MAX_TEXTS;j++) {
- push("testing text number %d", j);
- text = texts[j].text;
- len = texts[j].len;
- for (i=0;i<CAMEL_MIME_PART_NUM_ENCODINGS;i++) {
-
- push("test simple message, encoding %s", camel_mime_part_encoding_to_string(i));
- msg = test_message_create_simple();
-
- push("set simple content");
- test_message_set_content_simple((CamelMimePart *)msg, 0, "text/plain", text, len);
- pull();
-
- camel_mime_part_set_encoding((CamelMimePart *)msg, i);
-
- push("save message to test1.msg");
- unlink("test1.msg");
- test_message_write_file(msg, "test1.msg");
- check_unref(msg, 1);
- pull();
-
- push("read from test1.msg");
- msg2 = test_message_read_file("test1.msg");
- pull();
-
- push("compare read with original content");
- test_message_compare_content(camel_medium_get_content_object((CamelMedium *)msg2), text, len);
- check_unref(msg2, 1);
- pull();
-
- unlink("test1.msg");
- pull();
- }
- pull();
- }
- camel_test_end();
-
- cleanup();
-
- return 0;
-}
diff --git a/camel/tests/message/test2.c b/camel/tests/message/test2.c
deleted file mode 100644
index 95b0e324aa..0000000000
--- a/camel/tests/message/test2.c
+++ /dev/null
@@ -1,326 +0,0 @@
-#include "camel-test.h"
-#include "messages.h"
-#include "addresses.h"
-
-/* for stat */
-#include <sys/stat.h>
-#include <unistd.h>
-#include <string.h>
-#include <stdio.h>
-#include <iconv.h>
-
-#include <camel/camel-internet-address.h>
-#include <camel/camel-address.h>
-
-#include "address-data.h"
-
-static char *convert(const char *in, const char *from, const char *to)
-{
- iconv_t ic = iconv_open(to, from);
- char *out, *outp;
- const char *inp;
- int inlen, outlen;
-
- if (ic == (iconv_t)-1)
- return g_strdup(in);
-
- inlen = strlen(in);
- outlen = inlen*5 + 16;
-
- outp = out = g_malloc(outlen);
- inp = in;
-
- if (iconv(ic, &inp, &inlen, &outp, &outlen) == -1) {
- test_free(out);
- iconv_close(ic);
- return g_strdup(in);
- }
-
- if (iconv(ic, NULL, 0, &outp, &outlen) == -1) {
- test_free(out);
- iconv_close(ic);
- return g_strdup(in);
- }
-
- iconv_close(ic);
-
- *outp = 0;
-
-#if 0
- /* lets see if we can convert back again? */
- {
- char *nout, *noutp;
- iconv_t ic = iconv_open(from, to);
-
- inp = out;
- inlen = strlen(out);
- outlen = inlen*5 + 16;
- noutp = nout = g_malloc(outlen);
- if (iconv(ic, &inp, &inlen, &noutp, &outlen) == -1
- || iconv(ic, NULL, 0, &noutp, &outlen) == -1) {
- g_warning("Cannot convert '%s' \n from %s to %s: %s\n", in, to, from, strerror(errno));
- }
- iconv_close(ic);
- }
-
- /* and lets see what camel thinks out optimal charset is */
- {
- printf("Camel thinks the best encoding of '%s' is %s, although we converted from %s\n",
- in, camel_charset_best(out, strlen(out)), from);
- }
-#endif
-
- return out;
-}
-
-#define to_utf8(in, type) convert(in, type, "utf-8")
-#define from_utf8(in, type) convert(in, "utf-8", type)
-
-#define ARRAY_LEN(x) (sizeof(x)/sizeof(x[0]))
-
-int main(int argc, char **argv)
-{
- int i;
- CamelInternetAddress *addr, *addr2;
- char *name;
- char *charset;
- const char *real, *where;
- char *enc, *enc2, *format, *format2;
-
- camel_test_init(argc, argv);
-
- camel_test_start("CamelInternetAddress, basics");
-
- addr = camel_internet_address_new();
-
- push("Test blank address");
- check(camel_address_length(CAMEL_ADDRESS(addr)) == 0);
- check(camel_internet_address_get(addr, 0, &real, &where) == FALSE);
- pull();
-
- push("Test blank clone");
- addr2 = CAMEL_INTERNET_ADDRESS(camel_address_new_clone(CAMEL_ADDRESS(addr)));
- test_address_compare(addr, addr2);
- check_unref(addr2, 1);
- pull();
-
- push("Test add 1");
- camel_internet_address_add(addr, "Zed", "nowhere@here.com.au");
- check(camel_address_length(CAMEL_ADDRESS(addr)) == 1);
- check(camel_internet_address_get(addr, 0, &real, &where) == TRUE);
- check_msg(string_equal("Zed", real), "real = '%s'", real);
- check(strcmp(where, "nowhere@here.com.au") == 0);
- pull();
-
- push("Test clone 1");
- addr2 = CAMEL_INTERNET_ADDRESS(camel_address_new_clone(CAMEL_ADDRESS(addr)));
- test_address_compare(addr, addr2);
- check_unref(addr2, 1);
- pull();
-
- push("Test add many");
- for (i=1;i<10;i++) {
- char name[16], a[32];
- sprintf(name, "Zed %d", i);
- sprintf(a, "nowhere@here-%d.com.au", i);
- camel_internet_address_add(addr, name, a);
- check(camel_address_length(CAMEL_ADDRESS(addr)) == i+1);
- check(camel_internet_address_get(addr, i, &real, &where) == TRUE);
- check_msg(string_equal(name, real), "name = '%s' real = '%s'", name, real);
- check(strcmp(where, a) == 0);
- }
- pull();
-
- /* put a few of these in to make it look like its doing something impressive ... :) */
- camel_test_end();
- camel_test_start("CamelInternetAddress, search");
-
- push("Test search");
- camel_test_nonfatal("Address comparisons should ignore whitespace??");
- check(camel_internet_address_find_name(addr, "Zed 1", &where) == 1);
- check(camel_internet_address_find_name(addr, "Zed 9", &where) == 9);
- check(camel_internet_address_find_name(addr, "Zed", &where) == 0);
- check(camel_internet_address_find_name(addr, " Zed", &where) == 0);
- check(camel_internet_address_find_name(addr, "Zed ", &where) == 0);
- check(camel_internet_address_find_name(addr, " Zed ", &where) == 0);
- check(camel_internet_address_find_name(addr, "Zed 20", &where) == -1);
- check(camel_internet_address_find_name(addr, "", &where) == -1);
- /* interface dont handle nulls :) */
- /*check(camel_internet_address_find_name(addr, NULL, &where) == -1);*/
-
- check(camel_internet_address_find_address(addr, "nowhere@here-1.com.au", &where) == 1);
- check(camel_internet_address_find_address(addr, "nowhere@here-1 . com.au", &where) == 1);
- check(camel_internet_address_find_address(addr, "nowhere@here-2 .com.au ", &where) == 2);
- check(camel_internet_address_find_address(addr, " nowhere @here-3.com.au", &where) == 3);
- check(camel_internet_address_find_address(addr, "nowhere@here-20.com.au ", &where) == -1);
- check(camel_internet_address_find_address(addr, "", &where) == -1);
- /*check(camel_internet_address_find_address(addr, NULL, &where) == -1);*/
- camel_test_fatal();
- pull();
-
- camel_test_end();
- camel_test_start("CamelInternetAddress, copy/cat/clone");
-
- push("Test clone many");
- addr2 = CAMEL_INTERNET_ADDRESS(camel_address_new_clone(CAMEL_ADDRESS(addr)));
- test_address_compare(addr, addr2);
- pull();
-
- push("Test remove items");
- camel_address_remove(CAMEL_ADDRESS(addr2), 0);
- check(camel_address_length(CAMEL_ADDRESS(addr2)) == 9);
- camel_address_remove(CAMEL_ADDRESS(addr2), 0);
- check(camel_address_length(CAMEL_ADDRESS(addr2)) == 8);
- camel_address_remove(CAMEL_ADDRESS(addr2), 5);
- check(camel_address_length(CAMEL_ADDRESS(addr2)) == 7);
- camel_address_remove(CAMEL_ADDRESS(addr2), 10);
- check(camel_address_length(CAMEL_ADDRESS(addr2)) == 7);
- camel_address_remove(CAMEL_ADDRESS(addr2), -1);
- check(camel_address_length(CAMEL_ADDRESS(addr2)) == 0);
- check_unref(addr2, 1);
- pull();
-
- push("Testing copy/cat");
- push("clone + cat");
- addr2 = CAMEL_INTERNET_ADDRESS(camel_address_new_clone(CAMEL_ADDRESS(addr)));
- camel_address_cat(CAMEL_ADDRESS(addr2), CAMEL_ADDRESS(addr));
- check(camel_address_length(CAMEL_ADDRESS(addr)) == 10);
- check(camel_address_length(CAMEL_ADDRESS(addr2)) == 20);
- check_unref(addr2, 1);
- pull();
-
- push("cat + cat + copy");
- addr2 = camel_internet_address_new();
- camel_address_cat(CAMEL_ADDRESS(addr2), CAMEL_ADDRESS(addr));
- test_address_compare(addr, addr2);
- camel_address_cat(CAMEL_ADDRESS(addr2), CAMEL_ADDRESS(addr));
- check(camel_address_length(CAMEL_ADDRESS(addr)) == 10);
- check(camel_address_length(CAMEL_ADDRESS(addr2)) == 20);
- camel_address_copy(CAMEL_ADDRESS(addr2), CAMEL_ADDRESS(addr));
- test_address_compare(addr, addr2);
- check_unref(addr2, 1);
- pull();
-
- push("copy");
- addr2 = camel_internet_address_new();
- camel_address_copy(CAMEL_ADDRESS(addr2), CAMEL_ADDRESS(addr));
- test_address_compare(addr, addr2);
- check_unref(addr2, 1);
- pull();
-
- pull();
-
- check_unref(addr, 1);
-
- camel_test_end();
-
- camel_test_start("CamelInternetAddress, I18N");
-
- for (i=0;i<ARRAY_LEN(test_lines);i++) {
- push("Testing text line %d (%s) '%s'", i, test_lines[i].type, test_lines[i].line);
-
- addr = camel_internet_address_new();
-
- /* first, convert to api format (utf-8) */
- charset = test_lines[i].type;
- name = to_utf8(test_lines[i].line, charset);
-
- push("Address setup");
- camel_internet_address_add(addr, name, "nobody@nowhere.com");
- check(camel_internet_address_get(addr, 0, &real, &where) == TRUE);
- check_msg(string_equal(name, real), "name = '%s' real = '%s'", name, real);
- check(strcmp(where, "nobody@nowhere.com") == 0);
- test_free(name);
-
- check(camel_internet_address_get(addr, 1, &real, &where) == FALSE);
- check(camel_address_length(CAMEL_ADDRESS(addr)) == 1);
- pull();
-
- push("Address encode/decode");
- enc = camel_address_encode(CAMEL_ADDRESS(addr));
-
- addr2 = camel_internet_address_new();
- check(camel_address_decode(CAMEL_ADDRESS(addr2), enc) == 1);
- check(camel_address_length(CAMEL_ADDRESS(addr2)) == 1);
-
- enc2 = camel_address_encode(CAMEL_ADDRESS(addr2));
- check_msg(string_equal(enc, enc2), "enc = '%s' enc2 = '%s'", enc, enc2);
- test_free(enc2);
-
- push("Compare addresses");
- test_address_compare(addr, addr2);
- pull();
- check_unref(addr2, 1);
- test_free(enc);
- pull();
-
- /* FIXME: format/unformat arne't guaranteed to be reversible, at least at the moment */
- camel_test_nonfatal("format/unformat not (yet) reversible for all cases");
-
- push("Address format/unformat");
- format = camel_address_format(CAMEL_ADDRESS(addr));
-
- addr2 = camel_internet_address_new();
- check(camel_address_unformat(CAMEL_ADDRESS(addr2), format) == 1);
- check(camel_address_length(CAMEL_ADDRESS(addr2)) == 1);
-
- format2 = camel_address_format(CAMEL_ADDRESS(addr2));
- check_msg(string_equal(format, format2), "format = '%s\n\tformat2 = '%s'", format, format2);
- test_free(format2);
-
- /* currently format/unformat doesn't handle ,'s and other special chars at all */
- if (camel_address_length(CAMEL_ADDRESS(addr2)) == 1) {
- push("Compare addresses");
- test_address_compare(addr, addr2);
- pull();
- }
-
- test_free(format);
- pull();
-
- camel_test_fatal();
-
- check_unref(addr2, 1);
-
- check_unref(addr, 1);
- pull();
-
- }
-
- camel_test_end();
-
- camel_test_start("CamelInternetAddress, I18N decode");
-
- for (i=0;i<ARRAY_LEN(test_address);i++) {
- push("Testing address line %d '%s'", i, test_address[i].addr);
-
- addr = camel_internet_address_new();
- push("checking decoded");
- check(camel_address_decode(CAMEL_ADDRESS(addr), test_address[i].addr) == test_address[i].count);
- format = camel_address_format(CAMEL_ADDRESS(addr));
- check(strcmp(format, test_address[i].utf8) == 0);
- test_free(format);
- pull();
-
- push("Comparing re-encoded output");
- addr2 = CAMEL_INTERNET_ADDRESS(camel_internet_address_new());
- enc = camel_address_encode(CAMEL_ADDRESS(addr));
- check_msg(camel_address_decode(CAMEL_ADDRESS(addr2), enc) == test_address[i].count, "enc = '%s'", enc);
- test_free(enc);
- test_address_compare(addr, addr2);
- check_unref(addr2, 1);
- pull();
-
- check_unref(addr, 1);
-
- pull();
- }
-
- camel_test_end();
-
- /* FIXME: Add test of decoding of broken addresses */
-
- return 0;
-}
-
-
diff --git a/camel/tests/message/test3.c b/camel/tests/message/test3.c
deleted file mode 100644
index 0a9683d146..0000000000
--- a/camel/tests/message/test3.c
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- Multipart.
-*/
-
-#include "camel-test.h"
-#include "messages.h"
-
-/* for stat */
-#include <sys/stat.h>
-#include <unistd.h>
-#include <string.h>
-
-#include <camel/camel-mime-message.h>
-#include <camel/camel-stream-fs.h>
-#include <camel/camel-stream-mem.h>
-#include "camel/camel-multipart.h"
-
-int main(int argc, char **argv)
-{
- CamelMimeMessage *msg, *msg2, *msg3;
- CamelMultipart *mp, *mp2;
- CamelMimePart *part, *part2, *part3;
-
- camel_test_init(argc, argv);
-
- camel_test_start("multipart message");
-
- push("building message");
- msg = test_message_create_simple();
- mp = camel_multipart_new();
-
- /* Hrm, this should be able to set its own boundary, no? */
- camel_multipart_set_boundary(mp, "_=,.XYZ_Kangaroo_Meat_is_!_ABADF00D");
- check(strcmp(camel_multipart_get_boundary(mp), "_=,.XYZ_Kangaroo_Meat_is_!_ABADF00D") == 0);
-
- camel_medium_set_content_object((CamelMedium *)msg, (CamelDataWrapper *)mp);
- check(camel_multipart_get_number(mp) == 0);
- check(camel_multipart_get_part(mp, 0) == NULL);
- check(camel_multipart_get_part(mp, 1) == NULL);
-
- push("adding/removing parts");
- part = camel_mime_part_new();
- test_message_set_content_simple(part, 0, "text/plain", "content part 1", strlen("content part 1"));
- camel_multipart_add_part(mp, part);
- check(CAMEL_OBJECT(part)->ref_count == 2);
- check(camel_multipart_get_number(mp) == 1);
- check(camel_multipart_get_part(mp, 0) == part);
- check(camel_multipart_get_part(mp, 1) == NULL);
-
- camel_multipart_remove_part(mp, part);
- check(CAMEL_OBJECT(part)->ref_count == 1);
- check(camel_multipart_get_number(mp) == 0);
- check(camel_multipart_get_part(mp, 0) == NULL);
- check(camel_multipart_get_part(mp, 1) == NULL);
-
- camel_multipart_add_part_at(mp, part, 0);
- check(CAMEL_OBJECT(part)->ref_count == 2);
- check(camel_multipart_get_number(mp) == 1);
- check(camel_multipart_get_part(mp, 0) == part);
- check(camel_multipart_get_part(mp, 1) == NULL);
-
- check(camel_multipart_remove_part_at(mp, 1) == NULL);
- check(CAMEL_OBJECT(part)->ref_count == 2);
- check(camel_multipart_get_number(mp) == 1);
- check(camel_multipart_get_part(mp, 0) == part);
- check(camel_multipart_get_part(mp, 1) == NULL);
-
- check(camel_multipart_remove_part_at(mp, 0) == part);
- check(CAMEL_OBJECT(part)->ref_count == 1);
- check(camel_multipart_get_number(mp) == 0);
- check(camel_multipart_get_part(mp, 0) == NULL);
- check(camel_multipart_get_part(mp, 1) == NULL);
-
- camel_multipart_add_part(mp, part);
- check(CAMEL_OBJECT(part)->ref_count == 2);
- check(camel_multipart_get_number(mp) == 1);
- check(camel_multipart_get_part(mp, 0) == part);
- check(camel_multipart_get_part(mp, 1) == NULL);
-
- part2 = camel_mime_part_new();
- test_message_set_content_simple(part2, 0, "text/plain", "content part 2", strlen("content part 2"));
- camel_multipart_add_part(mp, part2);
- check(CAMEL_OBJECT(part2)->ref_count == 2);
- check(camel_multipart_get_number(mp) == 2);
- check(camel_multipart_get_part(mp, 0) == part);
- check(camel_multipart_get_part(mp, 1) == part2);
-
- part3 = camel_mime_part_new();
- test_message_set_content_simple(part3, 0, "text/plain", "content part 3", strlen("content part 3"));
- camel_multipart_add_part_at(mp, part3, 1);
- check(CAMEL_OBJECT(part3)->ref_count == 2);
- check(camel_multipart_get_number(mp) == 3);
- check(camel_multipart_get_part(mp, 0) == part);
- check(camel_multipart_get_part(mp, 1) == part3);
- check(camel_multipart_get_part(mp, 2) == part2);
- pull();
-
- push("save message to test3.msg");
- unlink("test3.msg");
- test_message_write_file(msg, "test3.msg");
- pull();
-
- push("read from test3.msg");
- msg2 = test_message_read_file("test3.msg");
- pull();
-
- push("compre content of multipart");
- mp2 = (CamelMultipart *)camel_medium_get_content_object((CamelMedium *)msg2);
- check(mp2 != NULL);
- check(CAMEL_IS_MULTIPART(mp2));
- check(camel_multipart_get_number(mp2) == 3);
-
- check(strcmp(camel_multipart_get_boundary(mp2), "_=,.XYZ_Kangaroo_Meat_is_!_ABADF00D") == 0);
- check(mp2->preface == NULL || strlen(mp2->preface) == 0);
-
- /* FIXME */
- camel_test_nonfatal("postface may gain a single \\n?");
- check_msg(mp2->postface == NULL || strlen(mp2->postface) == 0, "postface: '%s'", mp2->postface);
- camel_test_fatal();
-
- test_message_compare_content(camel_medium_get_content_object(CAMEL_MEDIUM(camel_multipart_get_part(mp2, 0))),
- "content part 1", strlen("content part 1"));
- test_message_compare_content(camel_medium_get_content_object(CAMEL_MEDIUM(camel_multipart_get_part(mp2, 1))),
- "content part 3", strlen("content part 3"));
- test_message_compare_content(camel_medium_get_content_object(CAMEL_MEDIUM(camel_multipart_get_part(mp2, 2))),
- "content part 2", strlen("content part 2"));
- pull();
-
- push("writing again, & re-reading");
- unlink("test3-2.msg");
- test_message_write_file(msg2, "test3-2.msg");
- msg3 = test_message_read_file("test3-2.msg");
-
- push("comparing again");
- mp2 = (CamelMultipart *)camel_medium_get_content_object((CamelMedium *)msg3);
- check(mp2 != NULL);
- check(CAMEL_IS_MULTIPART(mp2));
- check(camel_multipart_get_number(mp2) == 3);
-
- check(strcmp(camel_multipart_get_boundary(mp2), "_=,.XYZ_Kangaroo_Meat_is_!_ABADF00D") == 0);
- check(mp2->preface == NULL || strlen(mp2->preface) == 0);
-
- /* FIXME */
- camel_test_nonfatal("postface may gain a single \\n?");
- check_msg(mp2->postface == NULL || strlen(mp2->postface) == 0, "postface: '%s'", mp2->postface);
- camel_test_fatal();
-
- test_message_compare_content(camel_medium_get_content_object(CAMEL_MEDIUM(camel_multipart_get_part(mp2, 0))),
- "content part 1", strlen("content part 1"));
- test_message_compare_content(camel_medium_get_content_object(CAMEL_MEDIUM(camel_multipart_get_part(mp2, 1))),
- "content part 3", strlen("content part 3"));
- test_message_compare_content(camel_medium_get_content_object(CAMEL_MEDIUM(camel_multipart_get_part(mp2, 2))),
- "content part 2", strlen("content part 2"));
- pull();
- pull();
-
- check_unref(msg2, 1);
- check_unref(msg3, 1);
-
- push("testing pre/post text");
- camel_multipart_set_preface(mp, "pre-text\nLines.");
- camel_multipart_set_postface(mp, "post-text, no lines.\nOne line.\n");
-
- check(strcmp(mp->preface, "pre-text\nLines.") == 0);
- check(strcmp(mp->postface, "post-text, no lines.\nOne line.\n") == 0);
-
- push("writing /re-reading");
- unlink("test3-3.msg");
- test_message_write_file(msg, "test3-3.msg");
- msg2 = test_message_read_file("test3-3.msg");
-
- mp2 = (CamelMultipart *)camel_medium_get_content_object((CamelMedium *)msg2);
- check(mp2 != NULL);
- check(CAMEL_IS_MULTIPART(mp2));
- check(camel_multipart_get_number(mp2) == 3);
-
- check(strcmp(camel_multipart_get_boundary(mp2), "_=,.XYZ_Kangaroo_Meat_is_!_ABADF00D") == 0);
- check(strcmp(mp2->preface, "pre-text\nLines.") == 0);
- check(strcmp(mp2->postface, "post-text, no lines.\nOne line.\n") == 0);
- test_message_compare_content(camel_medium_get_content_object(CAMEL_MEDIUM(camel_multipart_get_part(mp2, 0))),
- "content part 1", strlen("content part 1"));
- test_message_compare_content(camel_medium_get_content_object(CAMEL_MEDIUM(camel_multipart_get_part(mp2, 1))),
- "content part 3", strlen("content part 3"));
- test_message_compare_content(camel_medium_get_content_object(CAMEL_MEDIUM(camel_multipart_get_part(mp2, 2))),
- "content part 2", strlen("content part 2"));
- pull();
- check_unref(msg2, 1);
- pull();
-
- check_unref(msg, 1);
- check_unref(mp, 1);
- check_unref(part, 1);
- check_unref(part2, 1);
- check_unref(part3, 1);
-
- camel_test_end();
-
- return 0;
-}
diff --git a/camel/tests/misc/.cvsignore b/camel/tests/misc/.cvsignore
deleted file mode 100644
index 3fa8afaa38..0000000000
--- a/camel/tests/misc/.cvsignore
+++ /dev/null
@@ -1,11 +0,0 @@
-.deps
-Makefile
-Makefile.in
-.libs
-.deps
-*.lo
-*.la
-*.bb
-*.bbg
-*.da
-*.gcov
diff --git a/camel/tests/misc/Makefile.am b/camel/tests/misc/Makefile.am
deleted file mode 100644
index 1cbcab8c26..0000000000
--- a/camel/tests/misc/Makefile.am
+++ /dev/null
@@ -1,21 +0,0 @@
-
-INCLUDES = -I$(top_srcdir)/intl -I$(top_srcdir) -I$(top_srcdir)/camel \
- -I$(includedir) \
- -I$(top_srcdir)/camel/tests/lib \
- -DG_LOG_DOMAIN=\"evolution-tests\"
-
-LDADD = \
- $(top_builddir)/camel/libcamel.la \
- $(top_builddir)/e-util/libeutil.la \
- $(top_builddir)/libibex/libibex.la \
- $(GNOME_LIBDIR) \
- $(top_builddir)/camel/tests/lib/libcameltest.a \
- $(GNOMEUI_LIBS) $(INTLLIBS) $(EXTRA_GNOME_LIBS)
-
-check_PROGRAMS = \
- url
-
-TESTS = url
-
-
-
diff --git a/camel/tests/misc/README b/camel/tests/misc/README
deleted file mode 100644
index d972108860..0000000000
--- a/camel/tests/misc/README
+++ /dev/null
@@ -1,3 +0,0 @@
-
-url URL parsing
-
diff --git a/camel/tests/misc/url.c b/camel/tests/misc/url.c
deleted file mode 100644
index cc61ef3cd6..0000000000
--- a/camel/tests/misc/url.c
+++ /dev/null
@@ -1,103 +0,0 @@
-#include <config.h>
-
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <camel/camel-url.h>
-
-#include "camel-test.h"
-
-char *base = "http://a/b/c/d;p?q#f";
-
-struct {
- char *url_string, *result;
-} tests[] = {
- { "g:h", "g:h" },
- { "g", "http://a/b/c/g" },
- { "./g", "http://a/b/c/g" },
- { "g/", "http://a/b/c/g/" },
- { "/g", "http://a/g" },
- { "//g", "http://g" },
- { "?y", "http://a/b/c/d;p?y" },
- { "g?y", "http://a/b/c/g?y" },
- { "g?y/./x", "http://a/b/c/g?y/./x" },
- { "#s", "http://a/b/c/d;p?q#s" },
- { "g#s", "http://a/b/c/g#s" },
- { "g#s/./x", "http://a/b/c/g#s/./x" },
- { "g?y#s", "http://a/b/c/g?y#s" },
- { ";x", "http://a/b/c/d;x" },
- { "g;x", "http://a/b/c/g;x" },
- { "g;x?y#s", "http://a/b/c/g;x?y#s" },
- { ".", "http://a/b/c/" },
- { "./", "http://a/b/c/" },
- { "..", "http://a/b/" },
- { "../", "http://a/b/" },
- { "../g", "http://a/b/g" },
- { "../..", "http://a/" },
- { "../../", "http://a/" },
- { "../../g", "http://a/g" },
- { "", "http://a/b/c/d;p?q#f" },
- { "../../../g", "http://a/../g" },
- { "../../../../g", "http://a/../../g" },
- { "/./g", "http://a/./g" },
- { "/../g", "http://a/../g" },
- { "g.", "http://a/b/c/g." },
- { ".g", "http://a/b/c/.g" },
- { "g..", "http://a/b/c/g.." },
- { "..g", "http://a/b/c/..g" },
- { "./../g", "http://a/b/g" },
- { "./g/.", "http://a/b/c/g/" },
- { "g/./h", "http://a/b/c/g/h" },
- { "g/../h", "http://a/b/c/h" },
- { "http:g", "http:g" },
- { "http:", "http:" }
-};
-int num_tests = sizeof (tests) / sizeof (tests[0]);
-
-int
-main (int argc, char **argv)
-{
- CamelURL *base_url, *url;
- char *url_string;
- int i;
-
- camel_test_init (argc, argv);
-
- camel_test_start ("RFC1808 relative URL parsing");
-
- camel_test_push ("base URL parsing");
- base_url = camel_url_new (base);
- if (!base_url)
- camel_test_fail ("Could not parse %s\n", base);
- camel_test_pull ();
-
- camel_test_push ("base URL unparsing");
- url_string = camel_url_to_string (base_url, 0);
- if (strcmp (url_string, base) != 0) {
- camel_test_fail ("URL <%s> unparses to <%s>\n",
- base, url_string);
- }
- camel_test_pull ();
- g_free (url_string);
-
- for (i = 0; i < num_tests; i++) {
- camel_test_push ("<%s> + <%s> = <%s>?", base, tests[i].url_string, tests[i].result);
- url = camel_url_new_with_base (base_url, tests[i].url_string);
- if (!url) {
- camel_test_fail ("could not parse");
- camel_test_pull ();
- continue;
- }
-
- url_string = camel_url_to_string (url, 0);
- if (strcmp (url_string, tests[i].result) != 0)
- camel_test_fail ("got <%s>!", url_string);
- g_free (url_string);
- camel_test_pull ();
- }
-
- camel_test_end ();
-
- return 0;
-}
diff --git a/camel/tests/smime/.cvsignore b/camel/tests/smime/.cvsignore
deleted file mode 100644
index c0feca5888..0000000000
--- a/camel/tests/smime/.cvsignore
+++ /dev/null
@@ -1,5 +0,0 @@
-.deps
-.libs
-Makefile*
-pgp
-pgp-mime
diff --git a/camel/tests/smime/Makefile.am b/camel/tests/smime/Makefile.am
deleted file mode 100644
index a85d875a65..0000000000
--- a/camel/tests/smime/Makefile.am
+++ /dev/null
@@ -1,21 +0,0 @@
-
-INCLUDES = -I$(top_srcdir)/intl -I$(top_srcdir) -I$(top_srcdir)/camel \
- -I$(includedir) \
- -I$(top_srcdir)/camel/tests/lib \
- -DG_LOG_DOMAIN=\"evolution-tests\"
-
-LDADD = \
- $(top_builddir)/camel/libcamel.la \
- $(top_builddir)/e-util/libeutil.la \
- $(top_builddir)/libibex/libibex.la \
- $(GNOME_LIBDIR) \
- $(top_builddir)/camel/tests/lib/libcameltest.a \
- $(GNOMEUI_LIBS) $(INTLLIBS) $(EXTRA_GNOME_LIBS) \
- $(BONOBO_GNOME_LIBS)
-
-check_PROGRAMS = \
- pgp \
- pgp-mime \
- pkcs7
-
-TESTS = pgp pgp-mime pkcs7
diff --git a/camel/tests/smime/README b/camel/tests/smime/README
deleted file mode 100644
index baad91ba00..0000000000
--- a/camel/tests/smime/README
+++ /dev/null
@@ -1,2 +0,0 @@
-pgp PGP test suite
-
diff --git a/camel/tests/smime/pgp-mime.c b/camel/tests/smime/pgp-mime.c
deleted file mode 100644
index 0da41c2542..0000000000
--- a/camel/tests/smime/pgp-mime.c
+++ /dev/null
@@ -1,169 +0,0 @@
-#include <config.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <camel/camel-pgp-mime.h>
-#include <camel/camel-stream-mem.h>
-
-#include "camel-test.h"
-
-static char test_msg[] = "Since we need to make sure that\nFrom lines work okay, we should test that"
-"as well as test 8bit chars and other fun stuff? 8bit chars: Dra¾en Kaèar\n\nOkay, I guess that covers"
-"the basics at least...\n";
-
-
-#define CAMEL_TEST_SESSION_TYPE (camel_test_session_get_type ())
-#define CAMEL_TEST_SESSION(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TEST_SESSION_TYPE, CamelTestSession))
-#define CAMEL_TEST_SESSION_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TEST_SESSION_TYPE, CamelTestSessionClass))
-#define CAMEL_TEST_IS_SESSION(o) (CAMEL_CHECK_TYPE((o), CAMEL_TEST_SESSION_TYPE))
-
-
-typedef struct _CamelTestSession {
- CamelSession parent_object;
-
-} CamelTestSession;
-
-typedef struct _CamelTestSessionClass {
- CamelSessionClass parent_class;
-
-} CamelTestSessionClass;
-
-
-static char *get_password (CamelSession *session, const char *prompt,
- gboolean secret, CamelService *service,
- const char *item, CamelException *ex);
-
-static void
-init (CamelTestSession *session)
-{
- ;
-}
-
-static void
-class_init (CamelTestSessionClass *camel_test_session_class)
-{
- CamelSessionClass *camel_session_class =
- CAMEL_SESSION_CLASS (camel_test_session_class);
-
- /* virtual method override */
- camel_session_class->get_password = get_password;
-}
-
-static CamelType
-camel_test_session_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (
- camel_test_session_get_type (),
- "CamelTestSession",
- sizeof (CamelTestSession),
- sizeof (CamelTestSessionClass),
- (CamelObjectClassInitFunc) class_init,
- NULL,
- (CamelObjectInitFunc) init,
- NULL);
- }
-
- return type;
-}
-
-static char *
-get_password (CamelSession *session, const char *prompt, gboolean secret,
- CamelService *service, const char *item, CamelException *ex)
-{
- return g_strdup ("PGP/MIME is rfc2015, now go and read it.");
-}
-
-static CamelSession *
-camel_test_session_new (const char *path)
-{
- CamelSession *session;
-
- session = CAMEL_SESSION (camel_object_new (CAMEL_TEST_SESSION_TYPE));
-
- camel_session_construct (session, path);
-
- return session;
-}
-
-
-int main (int argc, char **argv)
-{
- CamelSession *session;
- CamelPgpContext *ctx;
- CamelException *ex;
- CamelCipherValidity *valid;
- CamelMimePart *mime_part, *part;
- GPtrArray *recipients;
-
- camel_test_init (argc, argv);
-
- ex = camel_exception_new ();
-
- /* clear out any camel-test data */
- system("/bin/rm -rf /tmp/camel-test");
-
- session = camel_test_session_new ("/tmp/camel-test");
-
- ctx = camel_pgp_context_new (session, CAMEL_PGP_TYPE_GPG, "/usr/bin/gpg");
-
- camel_test_start ("Test of PGP/MIME functions");
-
- mime_part = camel_mime_part_new ();
- camel_mime_part_set_content (mime_part, test_msg, strlen (test_msg), "text/plain");
- camel_mime_part_set_description (mime_part, "Test of PGP/MIME multipart/signed stuff");
-
- camel_test_push ("PGP/MIME signing");
- camel_pgp_mime_part_sign (ctx, &mime_part, "pgp-mime@xtorshun.org", CAMEL_CIPHER_HASH_SHA1, ex);
- check_msg (!camel_exception_is_set (ex), "%s", camel_exception_get_description (ex));
- check_msg (camel_pgp_mime_is_rfc2015_signed (mime_part),
- "Huh, the MIME part does not seem to be a valid multipart/signed part");
- camel_test_pull ();
-
- camel_exception_clear (ex);
-
- camel_test_push ("PGP/MIME verify");
- valid = camel_pgp_mime_part_verify (ctx, mime_part, ex);
- check_msg (!camel_exception_is_set (ex), "%s", camel_exception_get_description (ex));
- check_msg (camel_cipher_validity_get_valid (valid), "%s", camel_cipher_validity_get_description (valid));
- camel_cipher_validity_free (valid);
- camel_test_pull ();
-
- camel_object_unref (CAMEL_OBJECT (mime_part));
-
- camel_exception_clear (ex);
-
- mime_part = camel_mime_part_new ();
- camel_mime_part_set_content (mime_part, test_msg, strlen (test_msg), "text/plain");
- camel_mime_part_set_description (mime_part, "Test of PGP/MIME multipart/encrypted stuff");
-
- camel_test_push ("PGP/MIME encrypt");
- recipients = g_ptr_array_new ();
- g_ptr_array_add (recipients, "pgp-mime@xtorshun.org");
- camel_pgp_mime_part_encrypt (ctx, &mime_part, recipients, ex);
- check_msg (!camel_exception_is_set (ex), "%s", camel_exception_get_description (ex));
- check_msg (camel_pgp_mime_is_rfc2015_encrypted (mime_part),
- "Huh, the MIME part does not seem to be a valid multipart/encrypted part");
- g_ptr_array_free (recipients, TRUE);
- camel_test_pull ();
-
- camel_exception_clear (ex);
-
- camel_test_push ("PGP/MIME decrypt");
- part = camel_pgp_mime_part_decrypt (ctx, mime_part, ex);
- check_msg (!camel_exception_is_set (ex), "%s", camel_exception_get_description (ex));
- camel_object_unref (CAMEL_OBJECT (part));
- camel_test_pull ();
-
- camel_object_unref (CAMEL_OBJECT (mime_part));
-
- camel_object_unref (CAMEL_OBJECT (ctx));
- camel_object_unref (CAMEL_OBJECT (session));
-
- camel_test_end ();
-
- return 0;
-}
diff --git a/camel/tests/smime/pgp.c b/camel/tests/smime/pgp.c
deleted file mode 100644
index c80d8c2712..0000000000
--- a/camel/tests/smime/pgp.c
+++ /dev/null
@@ -1,178 +0,0 @@
-#include <config.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <camel/camel-pgp-context.h>
-#include <camel/camel-stream-mem.h>
-
-#include "camel-test.h"
-
-
-#define CAMEL_TEST_SESSION_TYPE (camel_test_session_get_type ())
-#define CAMEL_TEST_SESSION(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TEST_SESSION_TYPE, CamelTestSession))
-#define CAMEL_TEST_SESSION_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TEST_SESSION_TYPE, CamelTestSessionClass))
-#define CAMEL_TEST_IS_SESSION(o) (CAMEL_CHECK_TYPE((o), CAMEL_TEST_SESSION_TYPE))
-
-
-typedef struct _CamelTestSession {
- CamelSession parent_object;
-
-} CamelTestSession;
-
-typedef struct _CamelTestSessionClass {
- CamelSessionClass parent_class;
-
-} CamelTestSessionClass;
-
-
-static char *get_password (CamelSession *session, const char *prompt,
- gboolean secret, CamelService *service,
- const char *item, CamelException *ex);
-
-static void
-init (CamelTestSession *session)
-{
- ;
-}
-
-static void
-class_init (CamelTestSessionClass *camel_test_session_class)
-{
- CamelSessionClass *camel_session_class =
- CAMEL_SESSION_CLASS (camel_test_session_class);
-
- /* virtual method override */
- camel_session_class->get_password = get_password;
-}
-
-static CamelType
-camel_test_session_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (
- camel_test_session_get_type (),
- "CamelTestSession",
- sizeof (CamelTestSession),
- sizeof (CamelTestSessionClass),
- (CamelObjectClassInitFunc) class_init,
- NULL,
- (CamelObjectInitFunc) init,
- NULL);
- }
-
- return type;
-}
-
-static char *
-get_password (CamelSession *session, const char *prompt, gboolean secret,
- CamelService *service, const char *item, CamelException *ex)
-{
- return g_strdup ("PGP/MIME is rfc2015, now go and read it.");
-}
-
-static CamelSession *
-camel_test_session_new (const char *path)
-{
- CamelSession *session;
-
- session = CAMEL_SESSION (camel_object_new (CAMEL_TEST_SESSION_TYPE));
-
- camel_session_construct (session, path);
-
- return session;
-}
-
-
-int main (int argc, char **argv)
-{
- CamelSession *session;
- CamelPgpContext *ctx;
- CamelException *ex;
- CamelCipherValidity *valid;
- CamelStream *stream1, *stream2, *stream3;
- GPtrArray *recipients;
- GByteArray *buf;
- char *before, *after;
-
- camel_test_init (argc, argv);
-
- ex = camel_exception_new ();
-
- /* clear out any camel-test data */
- system("/bin/rm -rf /tmp/camel-test");
-
- session = camel_test_session_new ("/tmp/camel-test");
-
- ctx = camel_pgp_context_new (session, CAMEL_PGP_TYPE_GPG, "/usr/bin/gpg");
-
- camel_test_start ("Test of PGP functions");
-
- stream1 = camel_stream_mem_new ();
- camel_stream_write (stream1, "Hello, I am a test stream.", 25);
- camel_stream_reset (stream1);
-
- stream2 = camel_stream_mem_new ();
-
- camel_test_push ("PGP signing");
- camel_pgp_sign (ctx, "pgp-mime@xtorshun.org", CAMEL_CIPHER_HASH_SHA1,
- stream1, stream2, ex);
- check_msg (!camel_exception_is_set (ex), "%s", camel_exception_get_description (ex));
- camel_test_pull ();
-
- camel_exception_clear (ex);
-
- camel_test_push ("PGP verify");
- camel_stream_reset (stream1);
- camel_stream_reset (stream2);
- valid = camel_pgp_verify (ctx, stream1, stream2, ex);
- check_msg (!camel_exception_is_set (ex), "%s", camel_exception_get_description (ex));
- check_msg (camel_cipher_validity_get_valid (valid), "%s", camel_cipher_validity_get_description (valid));
- camel_cipher_validity_free (valid);
- camel_test_pull ();
-
- camel_object_unref (CAMEL_OBJECT (stream1));
- camel_object_unref (CAMEL_OBJECT (stream2));
-
- stream1 = camel_stream_mem_new ();
- stream2 = camel_stream_mem_new ();
- stream3 = camel_stream_mem_new ();
-
- camel_stream_write (stream1, "Hello, I am a test of encryption/decryption.", 44);
- camel_stream_reset (stream1);
-
- camel_exception_clear (ex);
-
- camel_test_push ("PGP encrypt");
- recipients = g_ptr_array_new ();
- g_ptr_array_add (recipients, "pgp-mime@xtorshun.org");
- camel_pgp_encrypt (ctx, FALSE, "pgp-mime@xtorshun.org", recipients,
- stream1, stream2, ex);
- check_msg (!camel_exception_is_set (ex), "%s", camel_exception_get_description (ex));
- g_ptr_array_free (recipients, TRUE);
- camel_test_pull ();
-
- camel_stream_reset (stream2);
- camel_exception_clear (ex);
-
- camel_test_push ("PGP decrypt");
- camel_pgp_decrypt (ctx, stream2, stream3, ex);
- check_msg (!camel_exception_is_set (ex), "%s", camel_exception_get_description (ex));
- buf = CAMEL_STREAM_MEM (stream1)->buffer;
- before = g_strndup (buf->data, buf->len);
- buf = CAMEL_STREAM_MEM (stream3)->buffer;
- after = g_strndup (buf->data, buf->len);
- check_msg (string_equal (before, after), "before = '%s', after = '%s'", before, after);
- g_free (before);
- g_free (after);
- camel_test_pull ();
-
- camel_object_unref (CAMEL_OBJECT (ctx));
- camel_object_unref (CAMEL_OBJECT (session));
-
- camel_test_end ();
-
- return 0;
-}
diff --git a/camel/tests/smime/pkcs7.c b/camel/tests/smime/pkcs7.c
deleted file mode 100644
index 2248d8656d..0000000000
--- a/camel/tests/smime/pkcs7.c
+++ /dev/null
@@ -1,178 +0,0 @@
-#include <config.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <camel/camel-smime-context.h>
-#include <camel/camel-stream-mem.h>
-
-#include "camel-test.h"
-
-
-#define CAMEL_TEST_SESSION_TYPE (camel_test_session_get_type ())
-#define CAMEL_TEST_SESSION(obj) (CAMEL_CHECK_CAST((obj), CAMEL_TEST_SESSION_TYPE, CamelTestSession))
-#define CAMEL_TEST_SESSION_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_TEST_SESSION_TYPE, CamelTestSessionClass))
-#define CAMEL_TEST_IS_SESSION(o) (CAMEL_CHECK_TYPE((o), CAMEL_TEST_SESSION_TYPE))
-
-
-typedef struct _CamelTestSession {
- CamelSession parent_object;
-
-} CamelTestSession;
-
-typedef struct _CamelTestSessionClass {
- CamelSessionClass parent_class;
-
-} CamelTestSessionClass;
-
-
-static char *get_password (CamelSession *session, const char *prompt,
- gboolean secret, CamelService *service,
- const char *item, CamelException *ex);
-
-static void
-init (CamelTestSession *session)
-{
- ;
-}
-
-static void
-class_init (CamelTestSessionClass *camel_test_session_class)
-{
- CamelSessionClass *camel_session_class =
- CAMEL_SESSION_CLASS (camel_test_session_class);
-
- /* virtual method override */
- camel_session_class->get_password = get_password;
-}
-
-static CamelType
-camel_test_session_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (
- camel_test_session_get_type (),
- "CamelTestSession",
- sizeof (CamelTestSession),
- sizeof (CamelTestSessionClass),
- (CamelObjectClassInitFunc) class_init,
- NULL,
- (CamelObjectInitFunc) init,
- NULL);
- }
-
- return type;
-}
-
-static char *
-get_password (CamelSession *session, const char *prompt, gboolean secret,
- CamelService *service, const char *item, CamelException *ex)
-{
- return g_strdup ("S/MIME v3 is rfc263x, now go and read them.");
-}
-
-static CamelSession *
-camel_test_session_new (const char *path)
-{
- CamelSession *session;
-
- session = CAMEL_SESSION (camel_object_new (CAMEL_TEST_SESSION_TYPE));
-
- camel_session_construct (session, path);
-
- return session;
-}
-
-
-int main (int argc, char **argv)
-{
- CamelSession *session;
- CamelSMimeContext *ctx;
- CamelException *ex;
- CamelCipherValidity *valid;
- CamelStream *stream1, *stream2, *stream3;
- GPtrArray *recipients;
- GByteArray *buf;
- char *before, *after;
-
- camel_test_init (argc, argv);
-
- ex = camel_exception_new ();
-
- /* clear out any camel-test data */
- system ("/bin/rm -rf /tmp/camel-test");
-
- session = camel_test_session_new ("/tmp/camel-test");
-
- ctx = camel_smime_context_new (session);
-
- camel_test_start ("Test of S/MIME PKCS7 functions");
-
- stream1 = camel_stream_mem_new ();
- camel_stream_write (stream1, "Hello, I am a test stream.", 25);
- camel_stream_reset (stream1);
-
- stream2 = camel_stream_mem_new ();
-
- camel_test_push ("PKCS7 signing");
- camel_smime_sign (ctx, "smime@xtorshun.org", CAMEL_CIPHER_HASH_SHA1,
- stream1, stream2, ex);
- check_msg (!camel_exception_is_set (ex), "%s", camel_exception_get_description (ex));
- camel_test_pull ();
-
- camel_exception_clear (ex);
-
- camel_test_push ("PKCS7 verify");
- camel_stream_reset (stream1);
- camel_stream_reset (stream2);
- valid = camel_smime_verify (ctx, CAMEL_CIPHER_HASH_SHA1, stream1, stream2, ex);
- check_msg (!camel_exception_is_set (ex), "%s", camel_exception_get_description (ex));
- check_msg (camel_cipher_validity_get_valid (valid), "%s", camel_cipher_validity_get_description (valid));
- camel_cipher_validity_free (valid);
- camel_test_pull ();
-
- camel_object_unref (CAMEL_OBJECT (stream1));
- camel_object_unref (CAMEL_OBJECT (stream2));
-
- stream1 = camel_stream_mem_new ();
- stream2 = camel_stream_mem_new ();
- stream3 = camel_stream_mem_new ();
-
- camel_stream_write (stream1, "Hello, I am a test of encryption/decryption.", 44);
- camel_stream_reset (stream1);
-
- camel_exception_clear (ex);
-
- camel_test_push ("PKCS7 encrypt");
- recipients = g_ptr_array_new ();
- g_ptr_array_add (recipients, "smime@xtorshun.org");
- camel_smime_encrypt (ctx, FALSE, "smime@xtorshun.org", recipients,
- stream1, stream2, ex);
- check_msg (!camel_exception_is_set (ex), "%s", camel_exception_get_description (ex));
- g_ptr_array_free (recipients, TRUE);
- camel_test_pull ();
-
- camel_stream_reset (stream2);
- camel_exception_clear (ex);
-
- camel_test_push ("PKCS7 decrypt");
- camel_smime_decrypt (ctx, stream2, stream3, ex);
- check_msg (!camel_exception_is_set (ex), "%s", camel_exception_get_description (ex));
- buf = CAMEL_STREAM_MEM (stream1)->buffer;
- before = g_strndup (buf->data, buf->len);
- buf = CAMEL_STREAM_MEM (stream3)->buffer;
- after = g_strndup (buf->data, buf->len);
- check_msg (string_equal (before, after), "before = '%s', after = '%s'", before, after);
- g_free (before);
- g_free (after);
- camel_test_pull ();
-
- camel_object_unref (CAMEL_OBJECT (ctx));
- camel_object_unref (CAMEL_OBJECT (session));
-
- camel_test_end ();
-
- return 0;
-}
diff --git a/camel/tests/stream/.cvsignore b/camel/tests/stream/.cvsignore
deleted file mode 100644
index 3fa8afaa38..0000000000
--- a/camel/tests/stream/.cvsignore
+++ /dev/null
@@ -1,11 +0,0 @@
-.deps
-Makefile
-Makefile.in
-.libs
-.deps
-*.lo
-*.la
-*.bb
-*.bbg
-*.da
-*.gcov
diff --git a/camel/tests/stream/Makefile.am b/camel/tests/stream/Makefile.am
deleted file mode 100644
index d16f8aaa55..0000000000
--- a/camel/tests/stream/Makefile.am
+++ /dev/null
@@ -1,21 +0,0 @@
-
-INCLUDES = -I$(top_srcdir)/intl -I$(top_srcdir) -I$(top_srcdir)/camel \
- -I$(includedir) \
- -I$(top_srcdir)/camel/tests/lib \
- -DG_LOG_DOMAIN=\"evolution-tests\"
-
-LDADD = \
- $(top_builddir)/camel/libcamel.la \
- $(top_builddir)/e-util/libeutil.la \
- $(top_builddir)/libibex/libibex.la \
- $(GNOME_LIBDIR) \
- $(top_builddir)/camel/tests/lib/libcameltest.a \
- $(GNOMEUI_LIBS) $(INTLLIBS) $(EXTRA_GNOME_LIBS)
-
-check_PROGRAMS = \
- test1 test2 test3
-
-TESTS = test1 test2 test3
-
-
-
diff --git a/camel/tests/stream/README b/camel/tests/stream/README
deleted file mode 100644
index 8ca6a9602d..0000000000
--- a/camel/tests/stream/README
+++ /dev/null
@@ -1,4 +0,0 @@
-
-test1 camelstreamfs, creating, read/write, eos, refcounting
-test2 camelstreammem, creating, read/write, eos, refcounting
-test3 camelseekablesubstream
diff --git a/camel/tests/stream/test1.c b/camel/tests/stream/test1.c
deleted file mode 100644
index 452d45274f..0000000000
--- a/camel/tests/stream/test1.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- test ... camelstreamfs */
-
-#include "camel-test.h"
-#include "streams.h"
-
-#include <errno.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-#include "camel/camel-stream-fs.h"
-
-int main(int argc, char **argv)
-{
- CamelSeekableStream *ss = NULL;
- int i;
- int fd = -1;
- struct stat st;
- int size;
- char buffer[1024];
-
- camel_test_init(argc, argv);
-
- camel_test_start("CamelStream fs, open, seek, read, write, eos");
- for (i=0;i<2;i++) {
-
- (void)unlink("stream.txt");
-
- push("trying to open a nonexistant stream, method %d", i);
- switch(i) {
- case 0:
- ss = (CamelSeekableStream *)camel_stream_fs_new_with_name("stream.txt", O_RDWR, 0);
- break;
- case 1:
- fd = open("stream.txt", O_RDWR, 0);
- ss = (CamelSeekableStream *)camel_stream_fs_new_with_fd(fd);
- break;
- }
- check(ss == NULL && errno == ENOENT);
- check(stat("stream.txt", &st) == -1 && errno == ENOENT);
- pull();
-
- push("Creating stream using method %d", i);
- switch(i) {
- case 0:
- ss = (CamelSeekableStream *)camel_stream_fs_new_with_name("stream.txt", O_CREAT|O_RDWR|O_TRUNC, 0600);
- fd = ((CamelStreamFs *)ss)->fd;
- break;
- case 1:
- fd = open("stream.txt", O_CREAT|O_RDWR|O_TRUNC, 0600);
- ss = (CamelSeekableStream *)camel_stream_fs_new_with_fd(fd);
- break;
- }
- check(ss != NULL);
- check(stat("stream.txt", &st) == 0 && (st.st_mode&0777) == 0600 && S_ISREG(st.st_mode) && st.st_size == 0);
- pull();
-
- test_stream_seekable_writepart(ss);
- test_stream_seekable_readpart(ss);
-
- push("getting filesize");
- check(stat("stream.txt", &st) == 0 && (st.st_mode&0777) == 0600 && S_ISREG(st.st_mode));
- size = st.st_size;
- pull();
-
- push("checking close closes");
- check_unref(ss, 1);
- check(close(fd) == -1);
- pull();
-
- push("re-opening stream");
- switch(i) {
- case 0:
- ss = (CamelSeekableStream *)camel_stream_fs_new_with_name("stream.txt", O_RDWR, 0);
- fd = ((CamelStreamFs *)ss)->fd;
- break;
- case 1:
- fd = open("stream.txt", O_RDWR, 0);
- ss = (CamelSeekableStream *)camel_stream_fs_new_with_fd(fd);
- break;
- }
- check(ss != NULL);
- check(stat("stream.txt", &st) == 0 && (st.st_mode&0777) == 0600 && S_ISREG(st.st_mode) && st.st_size == size);
-
- test_stream_seekable_readpart(ss);
-
- check_unref(ss, 1);
- check(close(fd) == -1);
- pull();
-
- push("re-opening stream with truncate");
- switch(i) {
- case 0:
- ss = (CamelSeekableStream *)camel_stream_fs_new_with_name("stream.txt", O_RDWR|O_TRUNC, 0);
- fd = ((CamelStreamFs *)ss)->fd;
- break;
- case 1:
- fd = open("stream.txt", O_RDWR|O_TRUNC, 0);
- ss = (CamelSeekableStream *)camel_stream_fs_new_with_fd(fd);
- break;
- }
- check(ss != NULL);
- check(stat("stream.txt", &st) == 0 && (st.st_mode&0777) == 0600 && S_ISREG(st.st_mode) && st.st_size == 0);
-
- /* read has to return 0 before eos is set */
- check(camel_stream_read(CAMEL_STREAM(ss), buffer, 1) == 0);
- check(camel_stream_eos(CAMEL_STREAM(ss)));
-
- check_unref(ss, 1);
- check(close(fd) == -1);
- pull();
-
- (void)unlink("stream.txt");
- }
-
- camel_test_end();
-
- return 0;
-}
diff --git a/camel/tests/stream/test2.c b/camel/tests/stream/test2.c
deleted file mode 100644
index 02ad88e95c..0000000000
--- a/camel/tests/stream/test2.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- test ... camelstreammem */
-
-#include "camel-test.h"
-#include "streams.h"
-
-#include <errno.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-#include "camel/camel-stream-mem.h"
-
-int main(int argc, char **argv)
-{
- CamelSeekableStream *ss = NULL;
- int i;
- int fd = -1;
- struct stat st;
- int size;
- char buffer[1024];
- GByteArray *ba;
-
- camel_test_init(argc, argv);
-
- camel_test_start("CamelStream mem, create, seek, read, write, eos");
- for (i=0;i<3;i++) {
-
- push("Creating stream using method %d", i);
- switch(i) {
- case 0:
- ss = (CamelSeekableStream *)camel_stream_mem_new();
- break;
- case 1:
- ba = g_byte_array_new();
- ss = (CamelSeekableStream *)camel_stream_mem_new_with_byte_array(ba);
- break;
- case 2:
- ss = (CamelSeekableStream *)camel_stream_mem_new_with_buffer("", 0);
- break;
- }
- check(ss != NULL);
-
- test_stream_seekable_writepart(ss);
- test_stream_seekable_readpart(ss);
-
- check_unref(ss, 1);
- pull();
- }
-
- camel_test_end();
-
- return 0;
-}
diff --git a/camel/tests/stream/test3.c b/camel/tests/stream/test3.c
deleted file mode 100644
index b870a7773e..0000000000
--- a/camel/tests/stream/test3.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- test ... camelseekablesubstream */
-
-#include "camel-test.h"
-#include "streams.h"
-
-#include <errno.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-#include "camel/camel-stream-mem.h"
-#include "camel/camel-stream-fs.h"
-#include "camel/camel-seekable-substream.h"
-
-#define ARRAY_LEN(x) (sizeof(x)/sizeof(x[0]))
-
-struct {
- off_t lower, upper;
-} ranges[] = {
- { 3, 10241 },
- { 0, 1024 },
- { 0, 0 },
- { 0, 1 },
- { 0, 2 },
- { 0, 3 },
- { 0, 7 },
- { 1, 8 },
- { 1, 9 },
- { 10245, 10300 },
- { 0, CAMEL_STREAM_UNBOUND },
-/* { 1, CAMEL_STREAM_UNBOUND },
- { 2, CAMEL_STREAM_UNBOUND },
- { 3, CAMEL_STREAM_UNBOUND }, these take too long to run
- { 7, CAMEL_STREAM_UNBOUND },*/
- { 10245, CAMEL_STREAM_UNBOUND },
-};
-
-int main(int argc, char **argv)
-{
- CamelSeekableStream *ss = NULL;
- int i, j;
- CamelSeekableSubstream *sus, *sus2;
-
- camel_test_init(argc, argv);
-
- camel_test_start("CamelSeekableSubstream, mem backing");
- for (j=0;j<SEEKABLE_SUBSTREAM_WAYS;j++) {
- push("testing writing method %d", j);
- ss = (CamelSeekableStream *)camel_stream_mem_new();
- check(ss != NULL);
- for (i=0;i<ARRAY_LEN(ranges);i++) {
- push("stream subrange %d-%d", ranges[i].lower, ranges[i].upper);
- sus = (CamelSeekableSubstream *)camel_seekable_substream_new_with_seekable_stream_and_bounds(ss, ranges[i].lower, ranges[i].upper);
- check(sus != NULL);
-
- test_seekable_substream_writepart((CamelStream *)sus, j);
- test_seekable_substream_readpart((CamelStream *)sus);
-
- sus2 = (CamelSeekableSubstream *)camel_seekable_substream_new_with_seekable_stream_and_bounds(ss, ranges[i].lower, ranges[i].upper);
- check(sus2 != NULL);
- test_seekable_substream_readpart((CamelStream *)sus2);
-
- check_unref(sus, 1);
- check_unref(sus2, 1);
- pull();
- }
- check_unref(ss, 1);
- pull();
- }
-
- camel_test_end();
-
- (void)unlink("stream.txt");
-
- camel_test_start("CamelSeekableSubstream, file backing");
- for (j=0;j<SEEKABLE_SUBSTREAM_WAYS;j++) {
- push("testing writing method %d", j);
- ss = (CamelSeekableStream *)camel_stream_fs_new_with_name("stream.txt", O_RDWR|O_CREAT|O_TRUNC, 0600);
- check(ss != NULL);
- for (i=0;i<ARRAY_LEN(ranges);i++) {
- push("stream subrange %d-%d", ranges[i].lower, ranges[i].upper);
- sus = (CamelSeekableSubstream *)camel_seekable_substream_new_with_seekable_stream_and_bounds(ss, ranges[i].lower, ranges[i].upper);
- check(sus != NULL);
-
- test_seekable_substream_writepart((CamelStream *)sus, j);
- test_seekable_substream_readpart((CamelStream *)sus);
-
- sus2 = (CamelSeekableSubstream *)camel_seekable_substream_new_with_seekable_stream_and_bounds(ss, ranges[i].lower, ranges[i].upper);
- check(sus2 != NULL);
- test_seekable_substream_readpart((CamelStream *)sus2);
-
- check_unref(sus, 1);
- check_unref(sus2, 1);
- pull();
- }
- check_unref(ss, 1);
- (void)unlink("stream.txt");
- pull();
- }
-
- camel_test_end();
-
- return 0;
-}
diff --git a/configure.in b/configure.in
deleted file mode 100644
index dcf504bba4..0000000000
--- a/configure.in
+++ /dev/null
@@ -1,926 +0,0 @@
-# Process this file with autoconf to produce a configure script.
-AC_INIT(camel)
-AM_CONFIG_HEADER(config.h)
-
-EVOLUTION_MAJOR_VERSION=0
-EVOLUTION_MINOR_VERSION=0
-EVOLUTION_MICRO_VERSION=10
-VERSION=$EVOLUTION_MINOR_VERSION.$EVOLUTION_MICRO_VERSION
-PACKAGE=evolution
-
-AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
-AC_SUBST(VERSION)
-
-AC_DEFUN(EVO_CHECK_LIB, [
- dispname="$1"
- dispvers="$2"
- pkgname="$3"
-
- AC_MSG_CHECKING(for $dispname >= $dispvers)
- cmpvers=`echo $dispvers | awk -F. '{ print $[]1 * 1000000 + $[]2 * 10000 + $[]3 * 100 + $[]4;}'`
- if gnome-config --libs $pkgname > /dev/null 2>&1; then
- pkgvers=`gnome-config --modversion $pkgname | sed -e 's/^[[^0-9]]*//'`
- else
- pkgvers=not
- fi
- AC_MSG_RESULT($pkgvers found)
-
- pkgvers=`echo $pkgvers | awk -F. '{ print $[]1 * 1000000 + $[]2 * 10000 + $[]3 * 100 + $[]4;}'`
- if test "$pkgvers" -lt $cmpvers; then
- AC_MSG_ERROR([
-""
-"You need $dispname $dispvers or later to build Evolution"
-"If you think you already have this installed, consult the README."])
- fi
-])
-
-
-dnl Initialize maintainer mode
-AM_MAINTAINER_MODE
-
-AC_ISC_POSIX
-AC_PROG_CC
-AC_PROG_CPP
-AM_PROG_LEX
-AC_PROG_YACC
-case $YACC in
-*yacc*)
- AC_MSG_ERROR(You need bison to build Evolution)
- ;;
-esac
-AC_STDC_HEADERS
-AC_ARG_PROGRAM
-AC_PROG_INSTALL
-AC_PROG_LN_S
-AC_PROG_MAKE_SET
-
-dnl Initialize xml-i18n-tools
-AM_PROG_XML_I18N_TOOLS
-
-dnl Initialize libtool
-AM_PROG_LIBTOOL
-
-AM_ACLOCAL_INCLUDE(macros)
-GNOME_INIT()
-GNOME_COMPILE_WARNINGS
-GNOME_X_CHECKS
-EVO_CHECK_LIB(gnome-libs, 1.2.9, gnome)
-
-ALL_LINGUAS="az ca da de el en_GB es fi fr ga gl hu it ja ko lt nl nn no pl pt pt_BR ru sk sl sv tr uk"
-AM_GNOME_GETTEXT
-localedir='$(prefix)/$(DATADIRNAME)/locale'
-AC_SUBST(localedir)
-
-dnl
-dnl Purify support
-dnl
-AC_ARG_ENABLE(purify,
-[ --enable-purify=[no/yes] Enable support for building executables with
- Purify.],,enable_purify=no)
-AC_PATH_PROG(PURIFY, purify, impure)
-AC_ARG_WITH(purify-options, [ --with-purify-options=OPTIONS Options passed to the purify command line (defaults to PURIFYOPTIONS variable).])
-if test "x$with_purify_options" = "xno"; then
- with_purify_options="-always-use-cache-dir=yes -cache-dir=/gnome/lib/purify"
-fi
-if test "x$PURIFYOPTIONS" = "x"; then
- PURIFYOPTIONS=$with_purify_options
-fi
-AC_SUBST(PURIFY)
-AM_CONDITIONAL(ENABLE_PURIFY, test "x$enable_purify" = "xyes" -a "x$PURIFY" != "ximpure")
-PURIFY="$PURIFY $PURIFYOPTIONS"
-
-
-AC_PATH_PROG(SENDMAIL, sendmail, /usr/sbin/sendmail, /usr/sbin:/usr/lib)
-AC_DEFINE_UNQUOTED(SENDMAIL_PATH, "$SENDMAIL")
-
-AC_MSG_CHECKING(system mail directory)
-if test -d /var/mail; then
- system_mail_dir=/var/mail
-else
- system_mail_dir=/var/spool/mail
-fi
-AC_DEFINE_UNQUOTED(SYSTEM_MAIL_DIR, "$system_mail_dir")
-
-dnl * Time zone stuff
-AC_CACHE_CHECK(for timezone variable, ac_cv_var_timezone,
- AC_TRY_COMPILE([
- #include <time.h>
- ], [
- timezone = 1;
- ], ac_cv_var_timezone=yes, ac_cv_var_timezone=no))
-if test $ac_cv_var_timezone = yes; then
- AC_DEFINE(HAVE_TIMEZONE)
-else
- AC_CACHE_CHECK(for tm_gmtoff in struct tm, ac_cv_struct_tm_gmtoff,
- AC_TRY_COMPILE([
- #include <time.h>
- ], [
- struct tm tm;
- tm.tm_gmtoff = 1;
- ], ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no))
- if test $ac_cv_struct_tm_gmtoff = yes; then
- AC_DEFINE(HAVE_TM_GMTOFF)
- else
- AC_ERROR(unable to find a way to determine timezone)
- fi
-fi
-
-AC_CHECK_FUNCS(mkstemp mkdtemp isblank)
-
-dnl **************************************************
-dnl ctime_r prototype
-dnl **************************************************
-
-AC_CACHE_CHECK([if ctime_r wants three arguments], ac_cv_ctime_r_three_args,
-[
- AC_TRY_COMPILE([
- #include <time.h>
- ],[
- char *buf;
- time_t date;
- ctime_r( &date, buf, 100 );
- ],[
- ac_cv_ctime_r_three_args=yes
- ],[
- ac_cv_ctime_r_three_args=no
- ])
-])
-
-if test x"$ac_cv_ctime_r_three_args" = xyes ; then
- AC_DEFINE(CTIME_R_THREE_ARGS)
-fi
-
-dnl **************************************************
-dnl gethostbyname_r prototype
-dnl **************************************************
-
-AC_CHECK_FUNCS(gethostbyname_r,[
-AC_CACHE_CHECK([if gethostbyname_r wants five arguments], ac_cv_gethostbyname_r_five_args,
-[
- AC_TRY_COMPILE([
- #include "confdefs.h"
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <netdb.h>
-
- #define BUFSIZE (sizeof(struct hostent)+10)
- ],[
- struct hostent hent;
- char buffer[BUFSIZE];
- int bufsize=BUFSIZE;
- int h_errno;
-
- (void)gethostbyname_r( "www.ximian.com", &hent, buffer, bufsize, &h_errno);
- ],[
- ac_cv_gethostbyname_r_five_args=yes
- ],[
- ac_cv_gethostbyname_r_five_args=no
- ])
-])])
-
-if test x"$ac_cv_gethostbyname_r_five_args" = xyes ; then
- AC_DEFINE(GETHOSTBYNAME_R_FIVE_ARGS)
-fi
-
-dnl **************************************************
-dnl * pas-backend-file stuff.
-dnl * check for db_185.h. if it's there, we use it.
-dnl * otherwise, we use db.h (since it'll be 185).
-dnl * Except on RH7.0, which puts db in yet another place
-dnl **************************************************
-AC_CHECK_HEADERS(db_185.h)
-AC_CHECK_HEADERS(db1/db.h)
-
-dnl **************************************************
-dnl * ldap related stuff.
-dnl **************************************************
-AC_ARG_ENABLE(ldap,
-[ --enable-ldap=[no/yes] Enable LDAP support in evolution],,enable_ldap=no)
-if test x$enable_ldap = xyes; then
- LDAP_LIBS=
- AC_CHECK_LIB(resolv, res_query, LDAP_LIBS="-lresolv")
- AC_CHECK_LIB(lber, ber_get_tag, LDAP_LIBS="-llber $LDAP_LIBS", ,$LDAP_LIBS)
- if test x$ac_cv_lib_lber_ber_get_tag = xyes; then
- AC_CHECK_LIB(ldap, ldap_open, LDAP_LIBS="-lldap $LDAP_LIBS", ,$LDAP_LIBS)
- fi
-fi
-
-
-if test x$ac_cv_lib_ldap_ldap_open = xyes; then
-dnl *
-dnl * check for openldap version 2.x, since 1.x doesn't have the schema stuff
-dnl *
- AC_MSG_CHECKING(if openldap is version 2.x)
- AC_EGREP_CPP(yes,
- [#include "ldap.h"
- #if LDAP_VENDOR_VERSION > 20000
- yes
- #endif
- ], is_2x=yes, is_2x=no)
-
- if test x$is_2x = xyes; then
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_LDAP)
- AC_SUBST(LDAP_LIBS)
- msg_ldap=yes
- else
- AC_MSG_ERROR(evolution requires OpenLDAP version >= 2)
- fi
-else
- msg_ldap=no
- enable_ldap=no
-fi
-AM_CONDITIONAL(ENABLE_LDAP, test x$enable_ldap = xyes)
-
-dnl **************************************************
-dnl NNTP support.
-dnl **************************************************
-AC_ARG_ENABLE(nntp,
-[ --enable-nntp=[no/yes] Enable NNTP support in evolution],,enable_nntp=no)
-if test "x$enable_nntp" = "xyes"; then
- AC_DEFINE(ENABLE_NNTP)
- msg_nntp=yes
-else
- msg_nntp=no
-fi
-AM_CONDITIONAL(ENABLE_NNTP, test x$enable_nntp = xyes)
-
-dnl **************************************************
-dnl * Posix thread support
-dnl **************************************************
-
-dnl Hah! Threads are no longer an option
-dnl AC_ARG_WITH(threads, [ --with-threads Include thread support],[
-dnl FIXME: support more thread types, pth at least
-
-GNOME_PTHREAD_CHECK
-
-if test "x$PTHREAD_LIB" = "x" ; then
- AC_MSG_ERROR([POSIX threads are currently required for Evolution])
-fi
-
-dnl
-dnl Notice that this is a hack, and we wont be able to use this forever, but
-dnl at least for some time
-dnl
-
-THREADS_LIBS="$PTHREAD_LIB `glib-config --libs gthread`"
-THREADS_CFLAGS="`glib-config --cflags gthread`"
-
-AC_SUBST(THREADS_LIBS)
-AC_SUBST(THREADS_CFLAGS)
-AC_DEFINE(ENABLE_THREADS)
-
-dnl **************************************************
-dnl * File locking
-dnl **************************************************
-
-AC_ARG_ENABLE(dot-locking,
-[ --enable-dot-locking=[yes/no] Enable support for locking mail files with dot locking],,enable_dot_locking=yes)
-if test "x$enable_dot_locking" = "xyes"; then
- AC_DEFINE(USE_DOT)
- msg_dot=yes
-else
- msg_dot=no
-fi
-
-AC_ARG_ENABLE(file-locking,
-[ --enable-file-locking=[fcntl/flock/no] Enable support for locking mail files with file locking],,enable_file_locking=fcntl)
-if test "x$enable_file_locking" = "xfcntl"; then
- AC_DEFINE(USE_FCNTL)
- msg_file=fcntl
-else
- if test "x$enable_file_locking" = "xflock"; then
- AC_DEFINE(USE_FLOCK)
- msg_file=flock
- else
- msg_file=no
- fi
-fi
-
-
-
-dnl ***************
-dnl GNOME Libraries
-dnl ***************
-EVO_CHECK_LIB(Bonobo, 0.37, bonobox)
-EVO_CHECK_LIB(OAF, 0.6.2, oaf)
-EVO_CHECK_LIB(libglade, 0.14, libglade)
-EVO_CHECK_LIB(gdk-pixbuf with GNOME canvas support, 0.9.0, gnomecanvaspixbuf)
-EVO_CHECK_LIB(GAL, 0.7.99.3, gal)
-dnl FIXME: really a post-0.9.3 version (as of April 25) is needed for
-dnl changes in Editor.idl (menesis)
-EVO_CHECK_LIB(GtkHTML, 0.9.3, gtkhtml)
-EVO_CHECK_LIB(GNOME-VFS, 0.4.2, vfs)
-EVO_CHECK_LIB(libxml, 1.8.10, xml)
-
-
-
-dnl *************************
-dnl CFLAGS and LIBS and stuff
-dnl *************************
-GLIB_CFLAGS="`glib-config --cflags`"
-GLIB_LIBS="`glib-config --libs`"
-AC_SUBST(GLIB_CFLAGS)
-AC_SUBST(GLIB_LIBS)
-
-GAL_CFLAGS="`gnome-config --cflags gal`"
-GAL_LIBS="`gnome-config --libs gal`"
-AC_SUBST(GAL_CFLAGS)
-AC_SUBST(GAL_LIBS)
-
-EXTRA_GNOME_LIBS="`gnome-config --libs libglade gdk_pixbuf gnomecanvaspixbuf gnomeui gal` $THREADS_LIBS"
-EXTRA_GNOME_CFLAGS="`gnome-config --cflags libglade gdk_pixbuf gnomecanvaspixbuf gnomeui gal` $THREADS_CFLAGS"
-
-AC_SUBST(EXTRA_GNOME_LIBS)
-AC_SUBST(EXTRA_GNOME_CFLAGS)
-
-BONOBO_GNOME_LIBS="`gnome-config --libs bonobox_print libglade gdk_pixbuf gnomecanvaspixbuf gnomeui` $OAF_LIBS"
-BONOBO_GNOME_CFLAGS="`gnome-config --cflags bonobox_print libglade gdk_pixbuf gnomecanvaspixbuf gnomeui` $OAF_CFLAGS"
-AC_SUBST(BONOBO_GNOME_LIBS)
-AC_SUBST(BONOBO_GNOME_CFLAGS)
-
-BONOBO_HTML_GNOME_LIBS="`gnome-config --libs bonobox_print libglade gdk_pixbuf gtkhtml gnomecanvaspixbuf gnomeui ` $THREAD_LIBS"
-BONOBO_HTML_GNOME_CFLAGS="`gnome-config --cflags bonobox_print libglade gdk_pixbuf gtkhtml gnomecanvaspixbuf gnomeui ` $THREAD_CFLAGS"
-AC_SUBST(BONOBO_HTML_GNOME_LIBS)
-AC_SUBST(BONOBO_HTML_GNOME_CFLAGS)
-
-GNOME_PRINT_LIBS=`gnome-config --libs print`
-GNOME_PRINT_CFLAGS=`gnome-config --cflags print`
-AC_SUBST(GNOME_PRINT_LIBS)
-AC_SUBST(GNOME_PRINT_CFLAGS)
-
-GTKHTML_CFLAGS="`gnome-config --cflags gtkhtml`"
-GTKHTML_LIBS="`gnome-config --libs gtkhtml`"
-AC_SUBST(GTKHTML_CFLAGS)
-AC_SUBST(GTKHTML_LIBS)
-
-if test x${prefix} = xNONE; then
- html_prefix=$ac_default_prefix
-else
- html_prefix=$prefix
-fi
-AC_MSG_CHECKING(for Editor.idl in `gnome-config --datadir`/gtkhtml or ${html_prefix}/share/gtkhtml)
-if test -f `gnome-config --datadir`/gtkhtml/Editor.idl; then
- GTK_HTML_EDITOR_IDL=`gnome-config --datadir`/gtkhtml/Editor.idl
- AC_MSG_RESULT(found - $GTK_HTML_EDITOR_IDL)
-else
- if test -f ${html_prefix}/share/gtkhtml/Editor.idl; then
- GTK_HTML_EDITOR_IDL=${html_prefix}/share/gtkhtml/Editor.idl
- AC_MSG_RESULT(found - $GTK_HTML_EDITOR_IDL)
- else
- AC_MSG_RESULT(not found)
- if test "x$GNOME_PATH" != "x" ; then
- for dir in `echo $GNOME_PATH | sed -e "s/:/ /" `; do
- AC_MSG_CHECKING(for Editor.idl in ${dir})
- if test -f ${dir}/share/gtkhtml/Editor.idl ; then
- GTK_HTML_EDITOR_IDL=${dir}/share/gtkhtml/Editor.idl
- AC_MSG_RESULT(found - $GTK_HTML_EDITOR_IDL)
- break
- else
- AC_MSG_RESULT(not found)
- fi
- done
- fi
-
- if test "x$GTK_HTML_EDITOR_IDL" = "x" ; then
- AC_MSG_ERROR(Editor.idl is required to compile Evolution; it's included in GtkHTML.
-You need GtkHTML built with html-editor-control)
- fi
- fi
-fi
-
-AC_SUBST(GTK_HTML_EDITOR_IDL)
-
-GNOME_VFS_LIBS="`gnome-config --libs vfs`"
-GNOME_VFS_CFLAGS="`gnome-config --cflags vfs`"
-AC_SUBST(GNOME_VFS_LIBS)
-AC_SUBST(GNOME_VFS_CFLAGS)
-
-BONOBO_VFS_GNOME_LIBS="`gnome-config --libs bonobox libglade gdk_pixbuf gnomecanvaspixbuf vfs gnomeui `"
-BONOBO_VFS_GNOME_CFLAGS="`gnome-config --cflags bonobox libglade gdk_pixbuf gnomecanvaspixbuf vfs gnomeui `"
-AC_SUBST(BONOBO_VFS_GNOME_LIBS)
-AC_SUBST(BONOBO_VFS_GNOME_CFLAGS)
-
-CAMEL_CFLAGS="`gnome-config --cflags gal xml` $THREADS_CFLAGS"
-CAMEL_LIBS="`gnome-config --libs gal xml` $THREADS_LIBS"
-AC_SUBST(CAMEL_CFLAGS)
-AC_SUBST(CAMEL_LIBS)
-
-MAILER_CFLAGS="`gnome-config --cflags gtkhtml libglade gdk_pixbuf gnomecanvaspixbuf gnomeui gal bonobox bonobox_print vfs` $THREADS_CFLAGS"
-MAILER_LIBS="`gnome-config --libs gtkhtml libglade gdk_pixbuf gnomecanvaspixbuf gnomeui gal bonobox bonobox_print vfs` $THREADS_LIBS"
-AC_SUBST(MAILER_CFLAGS)
-AC_SUBST(MAILER_LIBS)
-
-dnl ******************************
-dnl Pilot checking
-dnl ******************************
-AC_ARG_ENABLE(pilot-conduits,
-[ --enable-pilot-conduits=[no/yes] Enable support for building pilot conduits.],,enable_pilot_conduits=no)
-if test "x$enable_pilot_conduits" = "xyes"; then
-GNOME_PILOT_CHECK
-fi
-AM_CONDITIONAL(ENABLE_PILOT_CONDUITS, test "x$enable_pilot_conduits" = "xyes")
-if test x$enable_pilot_conduits = xyes; then
- msg_pilot=yes
-else
- msg_pilot=no
-fi
-
-dnl ********
-dnl Kerberos
-dnl ********
-AC_ARG_WITH(krb5, [ --with-krb5=PREFIX Location of Kerberos 5 libs/includes])
-AC_ARG_WITH(krb4, [ --with-krb4=PREFIX Location of Kerberos 4 libs/includes])
-msg_krb5=no
-if test ${with_krb5:=no} != no; then
- LDFLAGS_save="$LDFLAGS"
-
- mitlibs="-lkrb5 -lk5crypto -lcom_err"
- heimlibs="-lkrb5 -lcrypto -lasn1 -lcom_err -lroken"
- AC_CACHE_CHECK([for Kerberos 5], ac_cv_lib_kerberos5,
- [
- LDFLAGS="$LDFLAGS -L$with_krb5/lib $mitlibs"
- AC_TRY_LINK_FUNC(krb5_init_context, ac_cv_lib_kerberos5="$mitlibs",
- [
- LDFLAGS="$LDFLAGS_save -L$with_krb5/lib $heimlibs"
- AC_TRY_LINK_FUNC(krb5_init_context, ac_cv_lib_kerberos5="$heimlibs", ac_cv_lib_kerberos5=no)
- ])
- LDFLAGS="$LDFLAGS_save"
- ])
- if test "$ac_cv_lib_kerberos5" != no; then
- AC_DEFINE(HAVE_KRB5)
- msg_krb5=yes
- KRB5_CFLAGS="-I$with_krb5/include/krb5"
- KRB5_LDFLAGS="-L$with_krb5/lib $ac_cv_lib_kerberos5"
- fi
-else
- AC_MSG_CHECKING(for Kerberos 5)
- AC_MSG_RESULT($with_krb5)
-fi
-
-msg_krb4=no
-if test x${with_krb4:=no} != xno; then
- LDFLAGS_save="$LDFLAGS"
- AC_CACHE_CHECK(for Kerberos 4, ac_cv_lib_kerberos4,
- [
- ac_cv_lib_kerberos4=no
-
- case $ac_cv_lib_kerberos5 in
- *k5crypto*)
- # Look for MIT krb5 compat krb4
- LDFLAGS="$LDFLAGS -L$with_krb4/lib -lkrb4 -ldes425 $KRB5_LDFLAGS"
- AC_TRY_LINK_FUNC(krb_mk_req, ac_cv_lib_kerberos4="-lkrb4 -ldes425 $KRB5_LDFLAGS")
- ;;
- esac
-
- if test "$ac_cv_lib_kerberos4" = no; then
- # Look for KTH krb4
- LDFLAGS="$LDFLAGS_save -L$with_krb4/lib -lkrb -lcrypto -lcom_err -lroken"
- AC_TRY_LINK_FUNC(krb_mk_req, ac_cv_lib_kerberos4="-lkrb -lcrypto -lcom_err -lroken")
- fi
- if test "$ac_cv_lib_kerberos4" = no; then
- # Look for old MIT krb4
- LDFLAGS="$LDFLAGS_save -L$with_krb4/lib -lkrb"
- AC_TRY_LINK_FUNC(krb_mk_req, ac_cv_lib_kerberos4=-lkrb,
- [
- LDFLAGS="$LDFLAGS -ldes"
- AC_TRY_LINK_FUNC(krb_mk_req, ac_cv_lib_kerberos4="-lkrb -ldes")
- ])
- fi
- ])
- LDFLAGS="$LDFLAGS_save"
- if test "$ac_cv_lib_kerberos4" != no; then
- AC_DEFINE(HAVE_KRB4)
- msg_krb4=yes
- if test -f "$with_krb4/include/krb.h" -o -f "$with_krb4/include/port-sockets.h"; then
- KRB4_CFLAGS="-I$with_krb4/include"
- else
- KRB4_CFLAGS="-I$with_krb4/include/kerberosIV"
- fi
- KRB4_LDFLAGS="-L$with_krb4/lib $ac_cv_lib_kerberos4"
-
- CFLAGS_save="$CFLAGS"
- CFLAGS="$CFLAGS $KRB4_CFLAGS"
- AC_TRY_COMPILE([#include "krb.h"
- int krb_sendauth;
- ],[return 0],[AC_DEFINE(NEED_KRB_SENDAUTH_PROTO)],)
- CFLAGS="$CFLAGS_save"
- fi
-else
- AC_MSG_CHECKING(for Kerberos 4)
- AC_MSG_RESULT(${with_krb4})
-fi
-
-AC_SUBST(KRB5_CFLAGS)
-AC_SUBST(KRB5_LDFLAGS)
-AC_SUBST(KRB4_CFLAGS)
-AC_SUBST(KRB4_LDFLAGS)
-
-
-dnl ===============================================================================
-dnl = security extension support (SSL and S/MIME)
-dnl =
-dnl = The following voodoo does detection of mozilla libraries (nspr and nss)
-dnl = needed by Camel (SSL) and Evolution (S/MIME).
-dnl =
-dnl = The Evolution security extensions are only built if these libraries are found
-dnl ===============================================================================
-AC_ARG_WITH(nspr-includes, [ --with-nspr-includes=PREFIX Location of Mozilla nspr4 includes.],
- with_nspr_includes="$withval", with_nspr_includes="/usr/include/mozilla")
-have_nspr_includes="no"
-if test "x${with_nspr_includes}" != "xno"; then
- CPPFLAGS_save="$CPPFLAGS"
-
- AC_MSG_CHECKING(for Mozilla nspr4 includes in $with_nspr_includes)
- AC_MSG_RESULT("")
-
- CPPFLAGS="$CPPFLAGS -I$with_nspr_includes"
- AC_CHECK_HEADERS(nspr.h prio.h, [ moz_nspr_includes="yes" ])
- CPPFLAGS="$CPPFLAGS_save"
-
- if test "x{$moz_nspr_includes}" != "xno" -a "x{$moz_nspr_includes}" != "x" ; then
- have_nspr_includes="yes"
- NSPR_CFLAGS="-I$with_nspr_includes"
- fi
-else
- AC_MSG_CHECKING(for Mozilla nspr4 includes)
- AC_MSG_RESULT(no)
-fi
-
-AC_ARG_WITH(nspr-libs, [ --with-nspr-libs=PREFIX Location of Mozilla nspr4 libs.],
- with_nspr_libs="$withval")
-have_nspr_libs="no"
-if test "x${with_nspr_libs}" != "xno" -a "x${have_nspr_includes}" != "xno"; then
- CFLAGS_save="$CFLAGS"
- LDFLAGS_save="$LDFLAGS"
-
- nsprlibs="-lnspr4 -lplc4 -lplds4 $PTHREAD_LIB"
- AC_CACHE_CHECK([for Mozilla nspr libraries], moz_nspr_libs,
- [
- CFLAGS="$CFLAGS $NSPR_CFLAGS"
-
- if test "x${with_nspr_libs}" != "x"; then
- LDFLAGS="$LDFLAGS -L$with_nspr_libs $nsprlibs"
- else
- LDFLAGS="$LDFLAGS $nsprlibs"
- fi
-
- AC_TRY_LINK_FUNC(PR_Init, moz_nspr_libs="yes", moz_nspr_libs="no")
- CFLAGS="$CFLAGS_save"
- LDFLAGS="$LDFLAGS_save"
- ])
- if test "x$moz_nspr_libs" != "xno"; then
- have_nspr_libs="yes"
- NSPR_LDFLAGS="-L$with_nspr_libs $nsprlibs"
- else
- NSPR_CLFAGS=""
- fi
-else
- AC_MSG_CHECKING(for Mozilla nspr4 libraries)
- AC_MSG_RESULT(no)
-fi
-
-AC_ARG_WITH(nss-includes, [ --with-nss-includes=PREFIX Location of Mozilla nss3 includes.],
- with_nss_includes="$withval", with_nss_includes="/usr/include/mozilla")
-have_nss_includes="no"
-if test "x${with_nss_includes}" != "xno" -a "x${have_nspr_libs}" != "xno"; then
- CPPFLAGS_save="$CPPFLAGS"
-
- AC_MSG_CHECKING(for Mozilla nss3 includes in $with_nss_includes)
- AC_MSG_RESULT("")
-
- if test "x${with_nspr_includes}" != "x"; then
- CPPFLAGS="$CPPFLAGS -I$with_nspr_includes -I$with_nss_includes"
- else
- CPPFLAGS="$CPPFLAGS -I$with_nss_includes"
- fi
-
- AC_CHECK_HEADERS(nss.h ssl.h smime.h, [ moz_nspr_includes="yes" ])
- CPPFLAGS="$CPPFLAGS_save"
-
- if test "x{$moz_nss_includes}" != "xno" -a "x{$moz_nss_includes}" != "x"; then
- have_nss_includes="yes"
- NSS_CFLAGS="-I$with_nss_includes"
- else
- NSPR_CFLAGS=""
- NSPR_LDFLAGS=""
- fi
-else
- AC_MSG_CHECKING(for Mozilla nss3 includes)
- AC_MSG_RESULT(no)
-fi
-
-AC_ARG_WITH(nss-libs, [ --with-nss-libs=PREFIX Location of Mozilla nss3 libs.],
- with_nss_libs="$withval")
-msg_nss="no"
-if test "x${with_nss_libs}" != "xno" -a "x${have_nss_includes}" != "xno"; then
- LDFLAGS_save="$LDFLAGS"
-
- nsprlibs="-lnspr4 -lplc4 -lplds4 $PTHREAD_LIB"
- nsslibs="-lnss3 -lnssckbi -lssl3 -lsmime3"
- AC_CACHE_CHECK([for Mozilla nss libraries], moz_nss_libs,
- [
- LDFLAGS="$LDFLAGS -L$with_nspr_libs $nsprlibs -L$with_nss_libs $nsslibs"
- AC_TRY_LINK_FUNC(NSS_Init, moz_nss_libs="yes", moz_nss_libs="no")
- LDFLAGS="$LDFLAGS_save"
- ])
- if test "$moz_nss_libs" != no; then
- AC_DEFINE(HAVE_NSS)
- msg_nss="yes"
- NSS_LDFLAGS="-L$with_nss_libs $nsslibs"
- else
- NSS_CFLAGS=""
- NSPR_CFLAGS=""
- NSPR_LDFLAGS=""
- fi
-else
- AC_MSG_CHECKING(for Mozilla nss libraries)
- AC_MSG_RESULT(no)
-fi
-
-AC_SUBST(NSPR_CFLAGS)
-AC_SUBST(NSPR_LDFLAGS)
-AC_SUBST(NSS_CFLAGS)
-AC_SUBST(NSS_LDFLAGS)
-
-dnl ====================================
-dnl = End mozilla hacks
-dnl ====================================
-
-dnl ******************************
-dnl OpenSSL
-dnl ******************************
-
-AC_ARG_WITH(openssl-includes, [ --with-openssl-includes=PREFIX Location of OpenSSL includes.],
- with_openssl_includes="$withval", with_openssl_includes="/usr/include")
-have_openssl_includes="no"
-if test "x${with_openssl_includes}" != "xno"; then
- CPPFLAGS_save="$CPPFLAGS"
-
- AC_MSG_CHECKING(for OpenSSL includes)
- AC_MSG_RESULT("")
-
- CPPFLAGS="$CPPFLAGS -I$with_openssl_includes"
- AC_CHECK_HEADERS(openssl/ssl.h openssl/x509.h, [ openssl_includes="yes" ])
- CPPFLAGS="$CPPFLAGS_save"
-
- if test "x{$openssl_includes}" != "xno" -a "x{$openssl_includes}" != "x"; then
- have_openssl_includes="yes"
- OPENSSL_CFLAGS="-I$with_openssl_includes"
- else
- OPENSSL_CFLAGS=""
- fi
-else
- AC_MSG_CHECKING(for OpenSSL includes)
- AC_MSG_RESULT(no)
-fi
-
-AC_ARG_WITH(openssl-libs, [ --with-openssl-libs=PREFIX Location of OpenSSL libs.],
- with_openssl_libs="$withval")
-msg_openssl="no"
-if test "x${with_openssl_libs}" != "xno" -a "x${have_openssl_includes}" != "xno"; then
- LDFLAGS_save="$LDFLAGS"
-
- AC_CACHE_CHECK([for OpenSSL libraries], openssl_libs,
- [
-dnl How can we test to see if we need to link to libld for sure??
-dnl RedHat 6.2 seems to need to but Debian Woody doesn't
- LDFLAGS="$LDFLAGS -L$with_openssl_libs -lssl -lcrypto -ldl"
- AC_TRY_LINK_FUNC(SSL_read, openssl_libs="yes", openssl_libs="no")
- LDFLAGS="$LDFLAGS_save"
- ])
- if test "x${openssl_libs}" != "xno"; then
- AC_DEFINE(HAVE_OPENSSL)
- msg_openssl="yes"
- OPENSSL_LDFLAGS="-L$with_openssl_libs -lssl -lcrypto -ldl"
- else
- OPENSSL_CFLAGS=""
- OPENSSL_LDFLAGS=""
- fi
-else
- AC_MSG_CHECKING(for OpenSSL libraries)
- AC_MSG_RESULT(no)
-fi
-
-AC_SUBST(OPENSSL_CFLAGS)
-AC_SUBST(OPENSSL_LDFLAGS)
-
-dnl ******************************
-dnl See if we have SSL support
-dnl ******************************
-
-if test "x${msg_nss}" != "xno" -o "x${msg_openssl}" != "xno"; then
- msg_ssl="yes"
- AC_DEFINE(HAVE_SSL)
-else
- msg_ssl="no"
-fi
-
-dnl ******************************
-dnl gtk-doc
-dnl ******************************
-
-AC_CHECK_PROG(GTKDOC, gtkdoc-mkdb, true, false)
-AM_CONDITIONAL(HAVE_GTK_DOC, $GTKDOC)
-AC_SUBST(HAVE_GTK_DOC)
-
-dnl Let people disable the gtk-doc stuff.
-AC_ARG_ENABLE(gtk-doc, [ --enable-gtk-doc Use gtk-doc to build documentation [default=auto]], enable_gtk_doc="$enableval", enable_gtk_doc=auto)
-
-if test x$enable_gtk_doc = xauto ; then
- if test x$GTKDOC = xtrue ; then
- enable_gtk_doc=yes
- else
- enable_gtk_doc=no
- fi
-fi
-
-dnl NOTE: We need to use a separate automake conditional for this
-dnl to make this work with the tarballs.
-AM_CONDITIONAL(ENABLE_GTK_DOC, test x$enable_gtk_doc = xyes)
-
-dnl ********
-dnl movemail
-dnl ********
-AC_ARG_WITH(movemail, [ --with-movemail=PATH Path to a movemail binary])
-AC_MSG_CHECKING(for movemail)
-if test x$with_movemail = xyes -o x$with_movemail = x; then
- with_movemail=no
-fi
-if test x$with_movemail != xno; then
- AC_DEFINE_UNQUOTED(MOVEMAIL_PATH, "$with_movemail")
- AC_MSG_RESULT($with_movemail)
-else
- emacs_exec_dir=`emacs --batch --eval '(message exec-directory)' 2>&1`
- case $emacs_exec_dir in
- /*) if test -x $emacs_exec_dir/movemail; then
- if test -u $emacs_exec_dir/movemail -o -g $emacs_exec_dir/movemail; then
- AC_MSG_RESULT($emacs_exec_dir/movemail)
- AC_DEFINE_UNQUOTED(MOVEMAIL_PATH, "$emacs_exec_dir/movemail")
- else
- AC_MSG_RESULT($emacs_exec_dir/movemail... not set-id: ignored)
- fi
- else
- AC_MSG_RESULT(no)
- fi
- ;;
- *)
- AC_MSG_RESULT(no)
- ;;
- esac
-fi
-
-dnl
-dnl Compose program
-dnl
-compose_libs="bonobo gnomeui"
-COMPOSE_LIBS="`gnome-config --libs $compose_libs`"
-COMPOSE_CFLAGS="`gnome-config --cflags $compose_libs`"
-AC_SUBST(COMPOSE_LIBS)
-AC_SUBST(COMPOSE_CFLAGS)
-
-dnl ******************
-dnl Sub-version number
-dnl ******************
-AC_ARG_WITH(sub-version, [ --with-sub-version=VERSION Specify a sub-version string])
-AC_DEFINE_UNQUOTED(SUB_VERSION, "$with_sub_version")
-
-dnl ******************************
-dnl Makefiles
-dnl ******************************
-
-AC_CONFIG_SUBDIRS(libical)
-
-EVOLUTION_DIR=`(cd $srcdir; pwd)`
-AC_SUBST(EVOLUTION_DIR)
-
-AC_OUTPUT([
-Makefile
-macros/Makefile
-intl/Makefile
-po/Makefile.in
-e-util/Makefile
-e-util/ename/Makefile
-libibex/Makefile
-executive-summary/Makefile
-executive-summary/evolution-services/Makefile
-executive-summary/idl/Makefile
-executive-summary/component/Makefile
-executive-summary/test-service/Makefile
-camel/Makefile
-camel/providers/Makefile
-camel/providers/pop3/Makefile
-camel/providers/sendmail/Makefile
-camel/providers/smtp/Makefile
-camel/providers/imap/Makefile
-camel/providers/nntp/Makefile
-camel/providers/local/Makefile
-camel/tests/Makefile
-camel/tests/lib/Makefile
-camel/tests/message/Makefile
-camel/tests/misc/Makefile
-camel/tests/folder/Makefile
-camel/tests/smime/Makefile
-camel/tests/stream/Makefile
-composer/Makefile
-widgets/Makefile
-widgets/meeting-time-sel/Makefile
-widgets/misc/Makefile
-widgets/menus/Makefile
-addressbook/Makefile
-addressbook/conduit/Makefile
-addressbook/contact-editor/Makefile
-addressbook/printing/Makefile
-addressbook/backend/Makefile
-addressbook/backend/idl/Makefile
-addressbook/backend/pas/Makefile
-addressbook/backend/ebook/Makefile
-addressbook/gui/Makefile
-addressbook/gui/widgets/Makefile
-addressbook/gui/search/Makefile
-addressbook/gui/component/Makefile
-addressbook/gui/component/select-names/Makefile
-shell/Makefile
-shell/glade/Makefile
-shell/importer/Makefile
-mail/Makefile
-mail/importers/Makefile
-data/Makefile
-libversit/Makefile
-libibex/Makefile
-calendar/Makefile
-calendar/idl/Makefile
-calendar/cal-util/Makefile
-calendar/cal-client/Makefile
-calendar/pcs/Makefile
-calendar/gui/Makefile
-calendar/gui/alarm-notify/Makefile
-calendar/gui/dialogs/Makefile
-calendar/conduits/Makefile
-calendar/conduits/calendar/Makefile
-calendar/conduits/todo/Makefile
-filter/Makefile
-wombat/Makefile
-composer/Makefile
-importers/Makefile
-art/Makefile
-ui/Makefile
-default_user/Makefile
-default_user/local/Makefile
-default_user/local/Calendar/Makefile
-default_user/local/Contacts/Makefile
-default_user/local/Drafts/Makefile
-default_user/local/Executive-Summary/Makefile
-default_user/local/Inbox/Makefile
-default_user/local/Outbox/Makefile
-default_user/local/Sent/Makefile
-default_user/local/Tasks/Makefile
-default_user/local/Trash/Makefile
-views/Makefile
-views/addressbook/Makefile
-views/mail/Makefile
-views/tasks/Makefile
-tools/Makefile
-doc/Makefile
-doc/C/Makefile
-doc/devel/Makefile
-doc/devel/calendar/Makefile
-doc/devel/calendar/cal-client/Makefile
-doc/devel/calendar/cal-util/Makefile
-doc/devel/executive-summary/Makefile
-])
-
-if test "x$with_sub_version" != "x"; then
-echo "
- Evolution ($with_sub_version) has been configured as follows: "
-else
-echo "
- Evolution has been configured as follows: "
-fi
-
-echo "
- Mail Directory: $system_mail_dir
- LDAP support: $msg_ldap
- NNTP support: $msg_nntp
- Pilot conduits: $msg_pilot
- Kerberos 4/5: $msg_krb4/$msg_krb5
- SSL support: $msg_ssl
- S/MIME support: $msg_nss
- Use movemail: $with_movemail
- Dot Locking: $msg_dot
- File Locking: $msg_file
- Gtk-doc: $enable_gtk_doc"
-
-if test x$enable_gtk_doc = xyes; then
-echo "
- Programming documentation files will be built automatically.
-"
-else
-echo "
- Programming documentation files will not be built.
- You may want to install the gtk-doc package
- so that you will get the Evolution Developer's Guide.
-"
-fi
diff --git a/devel-docs/.cvsignore b/devel-docs/.cvsignore
deleted file mode 100644
index d436efd0f7..0000000000
--- a/devel-docs/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-Makefile.in
-Makefile
-
diff --git a/devel-docs/Makefile.am b/devel-docs/Makefile.am
deleted file mode 100644
index 74a5ff5b60..0000000000
--- a/devel-docs/Makefile.am
+++ /dev/null
@@ -1,3 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-SUBDIRS=camel
diff --git a/devel-docs/camel/.cvsignore b/devel-docs/camel/.cvsignore
deleted file mode 100644
index 56d9506207..0000000000
--- a/devel-docs/camel/.cvsignore
+++ /dev/null
@@ -1,12 +0,0 @@
-sgml
-html
-Makefile.in
-Makefile
-camel.signals
-camel.hierarchy
-camel.args
-camel-decl.txt
-camel-unused.txt
-camel.html
-camel-decl-list.txt
-
diff --git a/devel-docs/camel/Makefile.am b/devel-docs/camel/Makefile.am
deleted file mode 100644
index 276059cf88..0000000000
--- a/devel-docs/camel/Makefile.am
+++ /dev/null
@@ -1,101 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-# The name of the module.
-DOC_MODULE=camel
-
-# The top-level SGML file.
-DOC_MAIN_SGML_FILE=camel-docs.sgml
-
-# The directory containing the source code (if it contains documentation).
-DOC_SOURCE_DIR=$(top_srcdir)/camel
-
-CFLAGS=`gtk-config --cflags gtk`
-LDFLAGS="-lcamel `gtk-config --libs gtk` "
-
-
-HTML_DIR=$(datadir)/gnome/html
-
-
-
-TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE)
-
-tmpl_sources = \
- tmpl/camel-data-wrapper.sgml \
- tmpl/camel-folder.sgml \
- tmpl/camel-mime-message.sgml \
- tmpl/camel-mime-part.sgml \
- tmpl/camel-recipient.sgml \
- tmpl/camel-service.sgml \
- tmpl/camel-store.sgml \
- tmpl/camel-stream.sgml
-
-
-camel_docdir = $(HTML_DIR)
-camel_doc_DATA = \
- camel.html \
- camel.hierarchy \
- camel.types \
- camel-scan.c \
- camel-decl.txt \
- camel-sections.txt
-
-EXTRA_DIST = $(camel_doc_DATA)
-
-camel.html: html/book1.html
- -cd $(srcdir) && cp html/book1.html camel.html
-
-html/book1.html: sgml/camel-doc.bottom
- $(MAKE) html
-
-sgml/camel-doc.bottom: $(tmpl_sources)
- $(MAKE) sgml
-
-camel-scan.c:
-
-scan: camel-scan.c
- CFLAGS=$(CFLAGS) LDFLAGS=$(LDFLAGS) gtkdoc-scanobj --module=$(DOC_MODULE)
- gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR)
-
-templates: scan
- gtkdoc-mktmpl --module=$(DOC_MODULE)
-
-sgml:
- gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR)
-
-html:
- if ! test -d html ; then mkdir html ; fi
- -cd html && gtkdoc-mkhtml $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
-
-clean-local:
- rm -f *~ *.bak *.hierarchy *.signals *.args *-unused.txt camel.html
-
-maintainer-clean-local: clean
- rm -rf sgml html $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt Makefile.in
-
-install-data-local:
- $(mkinstalldirs) $(TARGET_DIR)
- (installfiles=`echo $(srcdir)/html/*.html`; \
- if test "$$installfiles" = '$(srcdir)/html/*.html'; \
- then echo '-- Nothing to install' ; \
- else \
- for i in $$installfiles; do \
- echo '-- Installing '$$i ; \
- $(INSTALL_DATA) $$i $(TARGET_DIR); \
- done; \
- echo '-- Installing $(srcdir)/html/index.sgml' ; \
- $(INSTALL_DATA) $(srcdir)/html/index.sgml $(TARGET_DIR); \
- echo '-- Fixing Crossreferences' ; \
- gtkdoc-fixxref --module=$(DOC_MODULE) --html-dir=$(HTML_DIR)|| true; \
- fi)
-
-dist-hook:
- mkdir $(distdir)/html
- mkdir $(distdir)/sgml
- mkdir $(distdir)/tmpl
- -cp $(srcdir)/html/*.html $(srcdir)/html/*.css $(distdir)/html
- -cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
- -cp $(srcdir)/sgml/*.sgml $(distdir)/sgml
- -cp $(srcdir)/sgml/*.bottom $(srcdir)/sgml/*.top $(distdir)/sgml
-
-
-.PHONY : html sgml templates scan
diff --git a/devel-docs/camel/README_AND_TODO.txt b/devel-docs/camel/README_AND_TODO.txt
deleted file mode 100644
index 5feeb1e4e9..0000000000
--- a/devel-docs/camel/README_AND_TODO.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-Camel is currently (conceptualy) separated in four parts:
-
-* the session handling
-* the storage mechanism.
-* the (mime) message handling.
-* some general utilities class/functions.
-
-
-
-* Session handling
-------------------
-
-(This is not gnome session managing related)
-CamelSession is an object used to store some parameters on a user
-basis. This can be a permanent (fs based) or volatile
-(ram only) storage depending on user preferences.
-The session object is, for example, responsible for
-remembering authentication datas during application lifetime.
-It is also responsible for selecting and loading providers
-corresponding to protocols. In the case where only one
-provider exists for a given protocol, the task is trivial,
-but when multiple providers exist for a given protocol, the
-user can choose their prefered one. Given its relationship
-with providers, the session object is also used to instanciate
-a store given an URL.
-
-Associated Classes:
- CamelSession
- implementation: 5%
-
-Associated Files:
- camel-provider.[ch]
- implementation: 2.5% (a struct in camel-provider.h)
-
-
-* the storage mechanism.
-------------------------
-
-The storage mechanism is mainly represented by
-the Store class and the Folder class.
-* the (mime) message handling.
-* some general utilities class/functions.
-
diff --git a/devel-docs/camel/camel-docs.sgml b/devel-docs/camel/camel-docs.sgml
deleted file mode 100644
index 33c6623731..0000000000
--- a/devel-docs/camel/camel-docs.sgml
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype book PUBLIC "-//Davenport//DTD DocBook V3.0//EN" [
-<!entity CamelDataWrapper SYSTEM "sgml/camel-data-wrapper.sgml">
-<!entity CamelFolder SYSTEM "sgml/camel-folder.sgml">
-<!entity CamelMimeMessage SYSTEM "sgml/camel-mime-message.sgml">
-<!entity CamelMimePart SYSTEM "sgml/camel-mime-part.sgml">
-<!entity CamelRecipient SYSTEM "sgml/camel-recipient.sgml">
-<!entity CamelService SYSTEM "sgml/camel-service.sgml">
-<!entity CamelStore SYSTEM "sgml/camel-store.sgml">
-<!entity CamelStream SYSTEM "sgml/camel-stream.sgml">
-]>
-
-<book>
- <bookinfo>
- <title>Camel Messaging Library Reference Manual</title>
- </bookinfo>
-
- <chapter id="camel-objects">
- <title>Camel Objects</title>
- &CamelMimeMessage;
- &CamelService;
- &CamelStore;
- &CamelFolder;
- &CamelMimePart;
- &CamelDataWrapper;
- &CamelRecipient;
-
- </chapter>
-</book>
diff --git a/devel-docs/camel/camel-sections.txt b/devel-docs/camel/camel-sections.txt
deleted file mode 100644
index 1f6d45c03c..0000000000
--- a/devel-docs/camel/camel-sections.txt
+++ /dev/null
@@ -1,154 +0,0 @@
-
-<INCLUDE>gnome.h</INCLUDE>
-<INCLUDE>camel-data-wrapper.h</INCLUDE>
-
-
-<SECTION>
-<FILE>camel-data-wrapper</FILE>
-CamelDataWrapper
-<TITLE>CamelDataWrapper</TITLE>
-camel_data_wrapper_write_to_stream
-<SUBSECTION Standard>
-CAMEL_DATA_WRAPPER
-camel_data_wrapper_get_type
-CAMEL_DATA_WRAPPER_CLASS
-</SECTION>
-
-<SECTION>
-<FILE>camel-recipient</FILE>
-CamelRecipientTable
-<TITLE>CamelRecipientTable</TITLE>
-camel_recipient_table_new
-camel_recipient_table_get
-camel_recipient_table_add
-camel_recipient_table_add_list
-camel_recipient_table_remove
-camel_recipient_table_ref
-camel_recipient_table_unref
-</SECTION>
-
-<SECTION>
-<FILE>camel-mime-part</FILE>
-CamelMimePart
-<TITLE>CamelMimePart</TITLE>
-camel_mime_part_add_header
-camel_mime_part_set_content_object
-camel_mime_part_set_filename
-camel_mime_part_get_disposition
-camel_mime_part_get_content_MD5
-camel_mime_part_get_encoding
-camel_mime_part_set_header_lines
-camel_mime_part_get_content_object
-camel_mime_part_get_content_id
-camel_mime_part_set_description
-camel_mime_part_set_text
-camel_mime_part_set_encoding
-camel_mime_part_set_disposition
-camel_mime_part_remove_header
-camel_mime_part_get_filename
-camel_mime_part_get_content_languages
-camel_mime_part_set_content_languages
-camel_mime_part_get_header_lines
-camel_mime_part_get_description
-camel_mime_part_get_header
-<SUBSECTION Standard>
-CAMEL_MIME_PART
-camel_mime_part_get_type
-CAMEL_MIME_PART_CLASS
-</SECTION>
-
-
-
-<SECTION>
-<FILE>camel-mime-message</FILE>
-CamelMimeMessage
-<TITLE>CamelMimeMessage</TITLE>
-camel_mime_message_remove_recipient
-camel_mime_message_get_recipients
-camel_mime_message_set_flag
-camel_mime_message_set_subject
-camel_mime_message_get_reply_to
-camel_mime_message_get_from
-camel_mime_message_set_reply_to
-camel_mime_message_get_sent_date
-camel_mime_message_new_with_session
-camel_mime_message_add_recipient
-camel_mime_message_get_subject
-camel_mime_message_set_from
-camel_mime_message_get_flag
-camel_mime_message_get_message_number
-camel_mime_message_get_received_date
-camel_mime_message_set_received_date
-<SUBSECTION Standard>
-CAMEL_MIME_MESSAGE
-camel_mime_message_get_type
-CAMEL_MIME_MESSAGE_CLASS
-</SECTION>
-
-
-<SECTION>
-<FILE>camel-folder</FILE>
-CamelFolder
-<TITLE>CamelFolder</TITLE>
-camel_folder_get_folder
-camel_folder_create
-camel_folder_delete
-camel_folder_delete_messages
-camel_folder_get_parent_folder
-camel_folder_get_parent_store
-camel_folder_get_mode
-camel_folder_list_subfolders
-<SUBSECTION Standard>
-CAMEL_FOLDER
-camel_folder_get_type
-CAMEL_FOLDER_CLASS
-</SECTION>
-
-<SECTION>
-<FILE>camel-service</FILE>
-CamelService
-<TITLE>CamelService</TITLE>
-camel_service_connect
-camel_service_is_connected
-camel_service_connect_to_with_login_passwd
-camel_service_connect_to_with_login_passwd_port
-camel_service_get_url
-<SUBSECTION Standard>
-CAMEL_SERVICE
-camel_service_get_type
-CAMEL_SERVICE_CLASS
-</SECTION>
-
-<SECTION>
-<FILE>camel-store</FILE>
-CamelStore
-<TITLE>CamelStore</TITLE>
-camel_store_get_separator
-camel_store_get_folder
-<SUBSECTION Standard>
-CAMEL_STORE
-camel_store_get_type
-CAMEL_STORE_CLASS
-</SECTION>
-
-
-<SECTION>
-<FILE>camel-stream</FILE>
-CamelStream
-<TITLE>CamelStream</TITLE>
-camel_stream_seek
-camel_stream_write
-camel_stream_flush
-camel_stream_eos
-camel_stream_write_string
-camel_stream_close
-camel_stream_write_strings
-camel_stream_read
-camel_stream_available
-<SUBSECTION Standard>
-CAMEL_STREAM
-camel_stream_get_type
-CAMEL_STREAM_CLASS
-</SECTION>
-
-
diff --git a/devel-docs/camel/camel.types b/devel-docs/camel/camel.types
deleted file mode 100644
index 93142d8692..0000000000
--- a/devel-docs/camel/camel.types
+++ /dev/null
@@ -1,9 +0,0 @@
-#include <gtk/gtk.h>
-#include <camel/camel-data-wrapper.h>
-camel_data_wrapper_get_type
-camel_folder_get_type
-camel_mime_message_get_type
-camel_mime_part_get_type
-camel_service_get_type
-camel_store_get_type
-camel_stream_get_type
diff --git a/devel-docs/camel/tmpl/.cvsignore b/devel-docs/camel/tmpl/.cvsignore
deleted file mode 100644
index 29db8d052d..0000000000
--- a/devel-docs/camel/tmpl/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-camel-unused.sgml
-
diff --git a/devel-docs/camel/tmpl/camel-data-wrapper.sgml b/devel-docs/camel/tmpl/camel-data-wrapper.sgml
deleted file mode 100644
index 6fce9eb128..0000000000
--- a/devel-docs/camel/tmpl/camel-data-wrapper.sgml
+++ /dev/null
@@ -1,26 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-CamelDataWrapper
-
-<!-- ##### SECTION Short_Description ##### -->
-data container with streaming methods
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-A CamelDataWrapper is wrapper around data which can save them to a stream
-and restore them from a stream.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### FUNCTION camel_data_wrapper_write_to_stream ##### -->
-<para>
-
-</para>
-
-@data_wrapper:
-@stream:
-
-
diff --git a/devel-docs/camel/tmpl/camel-folder.sgml b/devel-docs/camel/tmpl/camel-folder.sgml
deleted file mode 100644
index 882d63499c..0000000000
--- a/devel-docs/camel/tmpl/camel-folder.sgml
+++ /dev/null
@@ -1,96 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-CamelFolder
-
-<!-- ##### SECTION Short_Description ##### -->
-Represents a folder of messages on a store.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-CamelFolder represents a folder in a message store.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### STRUCT CamelFolder ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION camel_folder_get_folder ##### -->
-<para>
-
-</para>
-
-@folder:
-@folder_name:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_folder_create ##### -->
-<para>
-
-</para>
-
-@folder:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_folder_delete ##### -->
-<para>
-
-</para>
-
-@folder:
-@recurse:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_folder_delete_messages ##### -->
-<para>
-
-</para>
-
-@folder:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_folder_get_parent_folder ##### -->
-<para>
-
-</para>
-
-@folder:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_folder_get_parent_store ##### -->
-<para>
-
-</para>
-
-@folder:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_folder_get_mode ##### -->
-<para>
-
-</para>
-
-@folder:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_folder_list_subfolders ##### -->
-<para>
-
-</para>
-
-@folder:
-@Returns:
-
-
diff --git a/devel-docs/camel/tmpl/camel-mime-message.sgml b/devel-docs/camel/tmpl/camel-mime-message.sgml
deleted file mode 100644
index 704f3d3572..0000000000
--- a/devel-docs/camel/tmpl/camel-mime-message.sgml
+++ /dev/null
@@ -1,171 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-CamelMimeMessage
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### STRUCT CamelMimeMessage ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION camel_mime_message_remove_recipient ##### -->
-<para>
-
-</para>
-
-@mime_message:
-@recipient_type:
-@recipient:
-
-
-<!-- ##### FUNCTION camel_mime_message_get_recipients ##### -->
-<para>
-
-</para>
-
-@mime_message:
-@recipient_type:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_mime_message_set_flag ##### -->
-<para>
-
-</para>
-
-@mime_message:
-@flag:
-@value:
-
-
-<!-- ##### FUNCTION camel_mime_message_set_subject ##### -->
-<para>
-
-</para>
-
-@mime_message:
-@subject:
-
-
-<!-- ##### FUNCTION camel_mime_message_get_reply_to ##### -->
-<para>
-
-</para>
-
-@mime_message:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_mime_message_get_from ##### -->
-<para>
-
-</para>
-
-@mime_message:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_mime_message_set_reply_to ##### -->
-<para>
-
-</para>
-
-@mime_message:
-@reply_to:
-
-
-<!-- ##### FUNCTION camel_mime_message_get_sent_date ##### -->
-<para>
-
-</para>
-
-@mime_message:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_mime_message_new_with_session ##### -->
-<para>
-
-</para>
-
-@session:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_mime_message_add_recipient ##### -->
-<para>
-
-</para>
-
-@mime_message:
-@recipient_type:
-@recipient:
-
-
-<!-- ##### FUNCTION camel_mime_message_get_subject ##### -->
-<para>
-
-</para>
-
-@mime_message:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_mime_message_set_from ##### -->
-<para>
-
-</para>
-
-@mime_message:
-@from:
-
-
-<!-- ##### FUNCTION camel_mime_message_get_flag ##### -->
-<para>
-
-</para>
-
-@mime_message:
-@flag:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_mime_message_get_message_number ##### -->
-<para>
-
-</para>
-
-@mime_message:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_mime_message_get_received_date ##### -->
-<para>
-
-</para>
-
-@mime_message:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_mime_message_set_received_date ##### -->
-<para>
-
-</para>
-
-@mime_message:
-@received_date:
-
-
diff --git a/devel-docs/camel/tmpl/camel-mime-part.sgml b/devel-docs/camel/tmpl/camel-mime-part.sgml
deleted file mode 100644
index 2db158b25f..0000000000
--- a/devel-docs/camel/tmpl/camel-mime-part.sgml
+++ /dev/null
@@ -1,151 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-CamelMimePart
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### FUNCTION camel_mime_part_set_filename ##### -->
-<para>
-
-</para>
-
-@mime_part:
-@filename:
-
-
-<!-- ##### FUNCTION camel_mime_part_get_disposition ##### -->
-<para>
-
-</para>
-
-@mime_part:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_mime_part_get_content_MD5 ##### -->
-<para>
-
-</para>
-
-@mime_part:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_mime_part_get_encoding ##### -->
-<para>
-
-</para>
-
-@mime_part:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_mime_part_set_header_lines ##### -->
-<para>
-
-</para>
-
-@mime_part:
-@header_lines:
-
-
-<!-- ##### FUNCTION camel_mime_part_get_content_id ##### -->
-<para>
-
-</para>
-
-@mime_part:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_mime_part_set_description ##### -->
-<para>
-
-</para>
-
-@mime_part:
-@description:
-
-
-<!-- ##### FUNCTION camel_mime_part_set_text ##### -->
-<para>
-
-</para>
-
-@camel_mime_part:
-@text:
-
-
-<!-- ##### FUNCTION camel_mime_part_set_encoding ##### -->
-<para>
-
-</para>
-
-@mime_part:
-@encoding:
-
-
-<!-- ##### FUNCTION camel_mime_part_set_disposition ##### -->
-<para>
-
-</para>
-
-@mime_part:
-@disposition:
-
-
-<!-- ##### FUNCTION camel_mime_part_get_filename ##### -->
-<para>
-
-</para>
-
-@mime_part:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_mime_part_get_content_languages ##### -->
-<para>
-
-</para>
-
-@mime_part:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_mime_part_set_content_languages ##### -->
-<para>
-
-</para>
-
-@mime_part:
-@content_languages:
-
-
-<!-- ##### FUNCTION camel_mime_part_get_header_lines ##### -->
-<para>
-
-</para>
-
-@mime_part:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_mime_part_get_description ##### -->
-<para>
-
-</para>
-
-@mime_part:
-@Returns:
-
-
diff --git a/devel-docs/camel/tmpl/camel-recipient.sgml b/devel-docs/camel/tmpl/camel-recipient.sgml
deleted file mode 100644
index 4af84cf58e..0000000000
--- a/devel-docs/camel/tmpl/camel-recipient.sgml
+++ /dev/null
@@ -1,88 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-CamelRecipientTable
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### STRUCT CamelRecipientTable ##### -->
-<para>
-
-</para>
-
-@recipient_hash_table:
-@ref_count:
-
-<!-- ##### FUNCTION camel_recipient_table_new ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-
-<!-- ##### FUNCTION camel_recipient_table_unref ##### -->
-<para>
-
-</para>
-
-@recipient_table:
-
-
-<!-- ##### FUNCTION camel_recipient_table_get ##### -->
-<para>
-
-</para>
-
-@recipient_table:
-@recipient_type:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_recipient_table_add ##### -->
-<para>
-
-</para>
-
-@recipient_table:
-@recipient_type:
-@recipient:
-
-
-<!-- ##### FUNCTION camel_recipient_table_remove ##### -->
-<para>
-
-</para>
-
-@recipient_table:
-@recipient_type:
-@recipient:
-
-
-<!-- ##### FUNCTION camel_recipient_table_add_list ##### -->
-<para>
-
-</para>
-
-@recipient_table:
-@recipient_type:
-@recipient_list:
-
-
-<!-- ##### FUNCTION camel_recipient_table_ref ##### -->
-<para>
-
-</para>
-
-@recipient_table:
-
-
diff --git a/devel-docs/camel/tmpl/camel-service.sgml b/devel-docs/camel/tmpl/camel-service.sgml
deleted file mode 100644
index 5b51ea902e..0000000000
--- a/devel-docs/camel/tmpl/camel-service.sgml
+++ /dev/null
@@ -1,72 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-CamelService
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### STRUCT CamelService ##### -->
-<para>
-
-</para>
-
-@e:
-
-<!-- ##### FUNCTION camel_service_connect ##### -->
-<para>
-
-</para>
-
-@service:
-
-
-<!-- ##### FUNCTION camel_service_is_connected ##### -->
-<para>
-
-</para>
-
-@service:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_service_connect_to_with_login_passwd ##### -->
-<para>
-
-</para>
-
-@service:
-@host:
-@login:
-@passwd:
-
-
-<!-- ##### FUNCTION camel_service_connect_to_with_login_passwd_port ##### -->
-<para>
-
-</para>
-
-@service:
-@host:
-@login:
-@passwd:
-@port:
-
-
-<!-- ##### FUNCTION camel_service_get_url ##### -->
-<para>
-
-</para>
-
-@service:
-@Returns:
-
-
diff --git a/devel-docs/camel/tmpl/camel-store.sgml b/devel-docs/camel/tmpl/camel-store.sgml
deleted file mode 100644
index 2882c09986..0000000000
--- a/devel-docs/camel/tmpl/camel-store.sgml
+++ /dev/null
@@ -1,45 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-CamelStore
-
-<!-- ##### SECTION Short_Description ##### -->
-
-A class representing a message (local or distant) repository
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-The store class models a place where messages can be stored and retreived. It can be a local
-store (for example an mbox-style store) or a distant server (for example an POP3 server). Messages are
-not retreived or stored directly with a CamelStore object. Instead, a CamelFolder object must be
-obtained from the store first.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### STRUCT CamelStore ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION camel_store_get_separator ##### -->
-<para>
-
-</para>
-
-@store:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_store_get_folder ##### -->
-<para>
-
-</para>
-
-@store:
-@folder_name:
-@Returns:
-
-
diff --git a/devel-docs/camel/tmpl/camel-stream.sgml b/devel-docs/camel/tmpl/camel-stream.sgml
deleted file mode 100644
index e965db2e45..0000000000
--- a/devel-docs/camel/tmpl/camel-stream.sgml
+++ /dev/null
@@ -1,101 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-CamelStream
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### FUNCTION camel_stream_seek ##### -->
-<para>
-
-</para>
-
-@stream:
-@offset:
-@policy:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_stream_write ##### -->
-<para>
-
-</para>
-
-@stream:
-@buffer:
-@n:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_stream_flush ##### -->
-<para>
-
-</para>
-
-@stream:
-
-
-<!-- ##### FUNCTION camel_stream_eos ##### -->
-<para>
-
-</para>
-
-@stream:
-@Returns:
-
-
-<!-- ##### MACRO camel_stream_write_string ##### -->
-<para>
-
-</para>
-
-@stream:
-@string:
-
-
-<!-- ##### FUNCTION camel_stream_close ##### -->
-<para>
-
-</para>
-
-@stream:
-
-
-<!-- ##### FUNCTION camel_stream_write_strings ##### -->
-<para>
-
-</para>
-
-@stream:
-@Varargs:
-
-
-<!-- ##### FUNCTION camel_stream_read ##### -->
-<para>
-
-</para>
-
-@stream:
-@buffer:
-@n:
-@Returns:
-
-
-<!-- ##### FUNCTION camel_stream_available ##### -->
-<para>
-
-</para>
-
-@stream:
-@Returns:
-
-
diff --git a/devel-docs/misc/ref_and_id_proposition.txt b/devel-docs/misc/ref_and_id_proposition.txt
deleted file mode 100644
index 2127b45a57..0000000000
--- a/devel-docs/misc/ref_and_id_proposition.txt
+++ /dev/null
@@ -1,237 +0,0 @@
-Author: Bertrand Guiheneuf <Bertrand.Guiheneuf@aful.org>
-Date: August 9th 1999
-Last revision date : September 3rd 1999
-Version: 0.2
-
-The last version of this document is always available in gnome CVS in
-the gnome-mailer module: devel-docs/misc/ref_and_id_proposition.txt
-
-
-
-A) Identifying messages within folders
---------------------------------------
-
-Currently, in Camel there is only one way to retrieve a message from a
-mail store:
- CamelMimeMessage *
- get_message (CamelFolder *folder, gint number)
-
-where number is an integer representing the message rank within its
-parent folder.
-
-This is a traditional method (JavaMail, MAPI) and it is very useful
-because this is often the only way to get a message in from a
-classical store (pop3 for example).
-
-Moreover, various documents ([1], [2]) proposed to generalize the URL
-scheme used in Camel ([3]) to access mail stores in order to identify
-messages. Such an URL would be, for instance:
-
-pop3://po.myisp.com:1
-
-Meaning: "Access message 1 on Pop3 server po.myisp.com"
-
-
-However, referencing a message with its number within a folder is a
-very unreliable method:
-
-1) Message order in a folder can change during a session:
-
- The user can move or remove messages from the folder, thus
- completely changing message numbers. We could however imagine to
- follow message operations in order to keep camel in a coherent
- state at each time instant. This could be quite complex but may
- be feasible using gtk signal system.
-
-2) Message order can change between sessions:
-
- Gnome-mailer was designed from the begining to allow messages to be
- stored in classical mailboxes (mbox, maildir, MH, IMAP ...), in
- order to allow users to run other MUA on their mailboxes if
- necessary. These other MUA can change message order within folders
- without any chance for Camel to trace the operations.
-
-These two scenarii show that it is quite impossible to use reliable
-folder caching or message referencing if messages are referenced only
-by their position within their parent folder.
-
-
-We thus have to find a general way to identify and retreive a message
-within its folder. One thing is sure, however: all folders
-implementation won't allow this method. Pop3 stores will always access
-messages using their rank on the server. MUA using Camel will thus
-have to be prepared to access some stores providing only the old
-fashionned message number access method.
-
-Basically, we have two choices:
-
-1) Accessing messages using (mailbox) Unique ID (UID)
-
- A UID is a string identifier associated to a message, which is
- guaranteed to be unique within its parent folder and which will not
- change between sessions.
-
-2) Accessing messages using Message ID
-
- A Message ID is a string identifier associated to a messages which
- is guaranteed to be unique in the world, that is, no other message
- can have the same Message ID. The message ID is defined in RFC 822,
- and is stored as the message header "Message-id"
-
-Method (1) already exists in IMAP.
-It is quite simple to define on local stores (MH, mbox, ....) but it
-may not resist to message modification by other MUA.
-Methods based on Message-id matching or message content checksum seem
-to be the best one. Using an "X-" header is another possibility for
-non read-only folders. A combination of these three methods may be the
-most reliable solution.
-The UID is impossible to implement in a POP3 store provider.
-
-(2) Can be used with IMAP, but would be very ineficient.
-The main issue with this method is its dependancy upon other MUAs and
-MTAs. Message-id is set before or during message transport. Moreover,
-some rfc822 compliant messages may not even have any Message-id
-header.
-These are major issues when accessing read-only stores.
-The M-ID is also impossible to implement in a POP3 store provider.
-
-
-We may not rely on external MUA and MTA to guarentee the uniqueness of
-the identifier . We may loose messages by never being able to read them
-if two had the same uid. It would be possible to find workarounds, but
-it could make Camel use a bit tricky.
-
-Given that most users will use IMAP or a database based store as their
-main mail store, and given that this stores allow UID very
-easily, I suggest that we use method (1). Discussion is still open,
-though.
-
-Here are the public methods I propose to add to CamelFolder:
-
-gboolean camel_folder_supports_uid (CamelFolder *folder)
- returns true if the folder can get messages
- by their uid.
-
-gchar * camel_folder_get_uid_by_number (CamelFolder *folder, gint message_number)
- return the uid of message which number in the folder
- is %message_number.
-
-gchar * camel_folder_get_message_uid (CamelFolder *folder, CamelMimeMessage *message)
- return the uid of the message within the folder.
-
-CamelMimeMessage *camel_folder_get_message_by_uid (CamelFolder *folder, gchar *uid)
- return the message which uid is %uid
-
-In addition, the CamelMessage Class will have a new public method
-
-gchar * camel_mime_message_get_uid (CamelMimeMessage *message)
- return the uid associated to the message in its physical parent
- folder.
-
-
-
-B) Handling message references in (v)folders.
----------------------------------------------
-
-
-We want the future Gnome mailer to be able to build (virtual) folders
-holding references to messages physically located in other
-folders. More generally, we would like folders to be able to hold:
-
-1) messages
-2) subfolders
-3) references to messages
-
-(1) and (2) are already implemented in Camel because most mail stores
-can hold messages and/or subfolders.
-
-(3) is a different issue, because no existing mail store can currently
-hold, within folders, references to messages in other folders.
-It will thus be a specific gnome-mailer extension.
-
-
-One of the main issue is to determine what kind of behaviour we expect
-from folders holding references. Here is a possible API.
-
-( the world (v)folder is used to distinguish between the physical
-parent folder and the folder holding a reference to the message, when
-a confusion may arise)
-
-Addition to CamelFolder:
-
-gboolean camel_folder_can_hold_references (CamelFolder *folder)
- return true if the folder can contain references
-
-void camel_folder_add_reference_by_uid (CamelFolder *folder, gchar *folder_url, gchar *message_uid)
- add a reference into a folder. %folder_url is the url of
- the folder, %message_uid is the uid of the message within
- its physical parent folder.
-
-void camel_folder_add_reference_by_message (CamelFolder *folder, CamelMessage *message)
- add a reference. The place where the reference points
- to is found using CamelMessage methods
-
-void camel_folder_remove_reference_by_uid (CamelFolder *folder, gchar *uid)
- remove a message reference form a folder. Reference
- is identified using its uid within the folder.
-
-gboolean camel_folder_uid_is_reference (CamelFolder *folder, gchar *uid)
- return true if the message corresponding to the uid is a reference.
-
-Then all usual operations on the folder act if the message was
-actually physically stored in this folder. For example, when the mailer
-uses camel_folder_get_message_by_uid onto the (v)folder, the actual
-message is retreived from its physical store.
-
-As you can see, the uid of the message within its physical parent
-folder is different than its uid within the (v)folder. This is because
-there is no way to guarantee that the uids of two messages in two
-different folders would be different. Using references on this two
-message in the same vfolder would break uniqueness of the uid in the
-(v)folder.
-
-A couple of other methods could be defined but all the basics are
-described here.
-
-This draft API is far from complete nor perfect, and is described here
-only to stimulate discussions before the actual implementation.
-
-
-The question now is to know how we store references. There are basically
-two ways:
-
-1) references are stored using the URL of the physical folder
- and the uid of the message within the folder
-
-2) a list of reference is kept, and in this list, reference are stored
-as in (1). Folders would refer to the actual message using index in
-the list
-
-
-
-The main problem with (1) is that references get lost as soon
-as the actual message is moved. There is no way to find in which
-folders references to the message exist.
-
-(2) is a way to solve this issue. When messages are used, Camel looks
-in the list to see if the message is refered somewhere, and actualize
-the URL and the uid with their new values.
-
-The problem with (2) is that we need to keep this information in a file
-and libraries writing automatically to files are generally a bad idea.
-
-As in additional remark, it is clear that Camel will only be able to
-hold references to messages on stores supporting UIDs.
-
-
-Thanks in advance for your comments and ideas,
-
-
- Bertrand <Bertrand.Guiheneuf@aful.org>
-
-
---
-
-[1] : http://www.selequa.com/%7epurp/gnomail/mail2db.html
-[2] : http://www.selequa.com/%7epurp/gnomail/dbRecFmt.html
-[3] : http://www.gnome.org/mailing-lists/archives/gnome-mailer-list/1999-April/0248.shtml
diff --git a/devel-docs/query/virtual-folder-in-depth.sgml b/devel-docs/query/virtual-folder-in-depth.sgml
deleted file mode 100644
index d3e3e0504b..0000000000
--- a/devel-docs/query/virtual-folder-in-depth.sgml
+++ /dev/null
@@ -1,407 +0,0 @@
-<!doctype article PUBLIC "-//Davenport//DTD DocBook V3.0//EN" []>
-
-<!-- SGMLized by Bertrand <Bertrand.Guiheneuf@aful.org> -->
-
-<article id="index">
- <artheader>
- <authorgroup>
- <author>
- <firstname>Giao</firstname>
- <surname>Nguyen</surname>
- </author>
- </authorgroup>
-
- <title>An in-depth look at the virtual folder mechanism</title>
- <abstract>
- <para>
- This document describes a different way of approaching mail
- organization and how all things are possible in this brave new
- world. This document does not describe physical storage issues
- nor interface issues.
- </para>
- <para>
- Historically mail has been organized into folders. These
- folders usually mapped to a single storage medium. The
- relationship between mail organization and storage medium was
- one to one. There was one mail organization for every storage
- medium. This scheme had its limitations.
- </para>
- <para>
- Efforts at categorizations are only meaningful at the instance that
- one categorized. To find any piece of data, regardless of how well
- it was categorized, required some amount of searching. Therefore, any
- attempts to nullify searching is doomed to fail. It's time to embrace
- searching as a way of life.
- </para>
- <para>
- These are the terms and their definitions. The example rules used are
- based on the syntax for VM (http://www.wonderworks.com/vm/) by Kyle
- Jones whose ideas form the basis for this. I'm only adding the
- existence of summary files to aid in scaling. I currently use VM and
- it's virtual-folder rules for my daily mail purposes. To date, my only
- complaints are speed (it has no caches) and for the unitiated, it's
- not very user-friendly.
- </para>
- <para>
- Comments, questions, rants, etc. should be directed at Giao Nguyen
- (grail@cafebabe.org) who will try to address issues in a timely
- manner.
- </para>
- </abstract>
- </artheader>
-
- <!-- Definitions -->
- <sect1 id="definitions">
- <title>Definitions</title>
- <sect2>
- <title>Store</title>
- <para>
- A location where mail can be found. This may be a file (Berkeley
- mbox), directory (MH), IMAP server, POP3 server, Exchange server,
- Lotus Notes server, a stack of Post-Its by your monitor fed through
- some OCR system.
- </para>
- </sect2>
-
- <sect2>
- <title>Message</title>
- <para>
- An individual mail message.
- </para>
- </sect2>
- <sect2>
- <title>Vfolder</title>
- <para>
- A group of messages sharing some commonality. This is the result of a
- query. The vfolder maybe contained in a store, but it is not necessary
- that a store holds only one vfolder. There is always an implicit
- vfolder rule which matches all messages. A store contains the vfolder
- which is the result of the query (any). It's short for virtual folder
- or maybe view folder. I dunno.
- </para>
- </sect2>
- <sect2>
- <title>Default-vfolder</title>
- <para>
- The vfolder defined by (any) applied to the store. This is not the
- inbox. The inbox could easily be defined by a query. A default rule
- for the inbox could be (new) but it doesn't have to be. Mine happens
- to be (or (unread) (new)).
- </para>
- </sect2>
- <sect2>
- <title>Folder</title>
- <para>
- The classical mail folder approach: one message organization per
- store.
- </para>
- </sect2>
- <sect2>
- <title>Query</title>
- <para>
- A search for messages. The result of this is a vfolder. There are two
- kinds of queries: named queries and lambda queries. More on this
- later.
- </para>
- </sect2>
- <sect2>
- <title>Summary file </title>
- <para>
- An external file that contains pointers to messages which are matches
- for a named query. In addition to pointers, the summary file should
- also contain signatures of the store for sanity checks. When the term
- "index" is used as a verb, it means to build a summary file for a
- given name-value pair.
- </para>
- </sect2>
- </sect1>
-
- <!-- Queries -->
- <sect1>
- <title>Queries</title>
- <para>
- Named queries are analogous to classical mail folders. Because named
- queries maybe reused, summary files are kept as caches to reduce
- the overall cost of viewing a vfolder. Summary files are superior to
- folders in that they allow for the same messages to appear in multiple
- vfolders without message duplications. Duplications of messages
- defeats attempts at tagging a message with additional user information
- like annotations. Named queries will define folders.
- </para>
- <para>
- Lambda queries are similar to named queries except that they have no
- name. These are created on the fly by the user to filter out or
- include certain messages.
- </para>
- <para>
- All queries can be layered on top of each other. A lambda query can be
- layered on a named query and a named query can be layered on a lambda
- query. The possibilities are endless.
- </para>
- <para>
- The layerings can be done as boolean operations (and, or, not). Short
- circuiting should be used.
- </para>
- <para>
- Examples:
- <programlisting>
-(and (author "Giao")
- (unread))
- </programlisting>
- The (unread) query should only be evaluated on the results of (author
- "Giao").
- <programlisting>
-(or (author "Giao")
- (unread))
- </programlisting>
- Both of these queries should be evaluated. Any matches are added to the
- resulting vfolder.
- </para>
- </sect1>
-
- <!-- Summary files -->
- <sect1>
- <title>Summary files</title>
- <para>
- Summary files are only meaningful when applied to the context of the
- default-vfolder of a store.
- </para>
- <para>
- Summary files should be generated for queries of the form:
- <programlisting>
-(function "constant value")
- </programlisting>
- Summary files should never be generated for queries of the form:
- <programlisting>
- (function (function1))
-
- (and (function "value")
- (another-function "another value"))
- </programlisting>
- Given a query of the form:
- <programlisting>
- (and (function "value")
- (another-function "another value"))
- </programlisting>
- The system should use one summary file for (function "value") and
- another summary file for (another-function "another value"). I will
- call the prior form the "plain form".
- </para>
- <para>
- It should be noted that the signature of the store should be based on
- the assumption that new data may have been added to the store since
- the application generated the summary file. Signatures generated on
- the entirety of the store will most likely be meaningless for things
- like POP/IMAP servers.
- </para>
- </sect1>
-
- <!-- Incremental Indexing -->
- <sect1>
- <title>Incremental indexing</title>
- <para>
- When new messages are detected, all known queries should be evaluated
- on the new messages. vfolders should be notified of new messages that
- are positive matches for their queries. The indexes generated by this
- process should be merged into the current indexes for the vfolder.
- </para>
- </sect1>
-
- <!-- Can I have multiple stores -->
- <sect1>
- <title>Can I have multiple stores?</title>
- <para>
- I don't see why not. Again, the inbox is a vfolder so you can get a
- unified inbox consisting of all new mail sent to all your stores or
- your can get inboxes for each store or any combination your heart
- desire. You get your cake, eat it, and someone else cleans the dishes!
- </para>
- </sect1>
-
- <!-- Why all this? -->
- <sect1>
- <title>Why all this?</title>
- <para>
- Consider the dynamic nature of the following query:
- <programlisting>
-(and (author "Giao")
- (sent-after (today-midnight)))
- </programlisting>
- today-midnight would be a function that is evaluated at run-time to
- calculate the appropriate object.
- </para>
- </sect1>
-
- <!-- Scenarios of usage and their solutions -->
- <sect1>
- <title>Scenarios of usage and their solutions</title>
- <sect2>
- <title>Mesage alterations</title>
- <para>
- This is a fuzzy area that should be left to the UI to handle. Messages
- are altered. Read status are altered when a new message is read for
- example. How do we handle this if our query is for unread messages?
- Upon viewing the state would change.
- </para>
- <para>
- One idea is to not evaluate the queries unless we're changing between
- vfolder views. This assumes that one can only view a particular
- vfolder at a time. For multi-vfolder viewing, a message change should
- propagate through the vfolder system. Certain effects (as in our
- example) would not be intuitive.
- </para>
- <para>
- It would not be a clean solution to make special cases but they may be
- necessary where certain defined fields are ignored when they are
- changed. Some combination of the above rules can be used. I don't
- think it's an easy solution.
- </para>
- </sect2>
- <sect2>
- <title>Message inclusion and exclusion</title>
- <para>
- Messages are included and excluded also with queries. The final query
- will have the form of:
- <programlisting>
- (and (author "Giao")
- (criteria value)
- (not (criteria other-value)))
- </programlisting>
- Userland criterias may be a label of some sort. These may be userland
- labels or Message-IDs. What are the performance issues involved in
- this? With short circuiting, it's not a major problem.
- </para>
- <para>
- The criterias and values are determined by the UI. The vfolder
- mechanism isn't concerned with such issues.
- </para>
- <para>
- Messages can be included and excluded at will. The idea is often
- called "arbitrary inclusion/exclusion". This can be done by
- Message-IDs or other fields. It's been noted that Message-IDs are not
- unique.
- </para>
- <para>
- I propose that any given vfolder is allocated an inclusion label and an
- exclusion label. These should be randomly generated. This should be
- part of the vfolder description. It should be noted that the vfolder
- description has not been drafted yet.
- </para>
- <para>
- The result is such that the rules for a given named query is:
- <programlisting>
- (and (user-query)
- (label inclusion-label)
- (not exclusion-label))
- </programlisting>
- </para>
- </sect2>
- <sect2>
- <title>Query scheduling</title>
- <para>
- Consider the following extremely dynamic queries:
- <programlisting>
- A:
- (and (author "Giao")
- (sent-after (today-midnight)))
-
- B:
- (and (sent-after (today-midnight))
- (author "Giao"))
-
- C:
- (or (author "Giao")
- (sent-after (today-midnight)))
- </programlisting>
- Query A would be significantly faster because (author "Giao") is not
- dynamic. A summary file could be generated for this query. Query B is
- slow and can be optimized if there was a query compiler of some
- sort. Query C demonstrates a query in which there is no good
- optimization which can be applied. These come with a certain amount of
- baggage.
- </para>
- <para>
- It seems then that for boolean 'and' operations, plain forms should be
- moved forward and other queries should be moved such that they are
- evaluated later. I would expect that the majority of queries would be
- of the plain form.
- </para>
- <para>
- First is that the summary file is tied to the query and the store
- where the query originates from. Second, a hashing function for
- strings needs to be calculated for the query so that the query and the
- summary file can be associated. This hashing function could be similar
- to the hashing function described in Rob Pike's "The Practice of
- Programming". (FIXME: Stick page number here)
- </para>
- </sect2>
- <sect2>
- <title>Archives</title>
- <para>
- Many people are concerned that archives won't be preserved, archives
- aren't supported, and many other archive related issues. This is the
- short version.
- </para>
- <para>
- Archives are just that, archives. Archives are stores. Take your
- vfolder, export it to a store. You are done. If you load up the store
- again, then the default-vfolder of that store is the view of the
- vfolder, except the query is different.
- </para>
- <para>
- The point to vfolder is not to do away with classical folder
- representation but to move the queries to the front where it would
- make data management easier for people who don't think in terms of
- files but in terms of queries because ordinary people don't think in
- terms of files.
- </para>
- </sect2>
- </sect1>
-
- <!-- Miscellany -->
- <sect1>
- <title>Miscellany</title>
- <sect2>
- <title>Annotations</title>
- <para>
- There should be a scheme to add annotations to messages. Common mail
- user agents have used a tag in the message header to mark messages as
- read/unread for example. Extending on this we have the ability to add
- our own data to a message to add meaning to it. If we have a good
- scheme for doing this, new possibilities are opened.
- </para>
- <sect3>
- <title>Keywords</title>
- <para>
- When sending a message, a message could have certain keywords attached
- to it. While this can be done with the subject line, the subject line
- has a tendency to be munged by other mail applications. One popular
- example is the "[rR]e:" prefix. Using the subject line also breaks the
- "contract" with other mail user agents. Using keywords in another
- field in the message header allows the sender to assist the recipient
- in organizing data automatically. Note that the sender can only
- provide hints as the sender is unlikely to know the organization
- schemes of the recipient.
- </para>
- </sect3>
- </sect2>
- <sect2>
- <title>Scope</title>
- <para>
- Let us assume that we have multiple stores. Does a query work on a
- given store? Or does it work on all stores? Or is it configurable such
- that a query can work on a user-selected list of stores?
- </para>
- </sect2>
- </sect1>
-
- <!-- Alternatives to the above -->
- <sect1>
- <title>Alternatives to the above</title>
- <para>
- Jim Meyer (purp@selequa.com) is putting some notes on where
- annotations needs to be located. They'll be located here as well as
- any contributions I may have to them.
- </para>
- </sect1>
-</article>
diff --git a/devel-docs/query/virtual-folder-in-depth.txt b/devel-docs/query/virtual-folder-in-depth.txt
deleted file mode 100644
index 01718a5f05..0000000000
--- a/devel-docs/query/virtual-folder-in-depth.txt
+++ /dev/null
@@ -1,309 +0,0 @@
-TITLE: An in-depth look at the virtual folder mechanism
-AUTHOR: Giao Nguyen <grail@cafebabe.org>
-
-* introduction
-
-This document describes a different way of approaching mail
-organization and how all things are possible in this brave new
-world. This document does not describe physical storage issues nor
-interface issues.
-
-Historically mail has been organized into folders. These folders
-usually mapped to a single storage medium. The relationship between
-mail organization and storage medium was one to one. There was one
-mail organization for every storage medium. This scheme had its
-limitations.
-
-Efforts at categorizations are only meaningful at the instance that
-one categorized. To find any piece of data, regardless of how well
-it was categorized, required some amount of searching. Therefore, any
-attempts to nullify searching is doomed to fail. It's time to embrace
-searching as a way of life.
-
-These are the terms and their definitions. The example rules used are
-based on the syntax for VM (http://www.wonderworks.com/vm/) by Kyle
-Jones whose ideas form the basis for this. I'm only adding the
-existence of summary files to aid in scaling. I currently use VM and
-it's virtual-folder rules for my daily mail purposes. To date, my only
-complaints are speed (it has no caches) and for the unitiated, it's
-not very user-friendly.
-
-Comments, questions, rants, etc. should be directed at Giao Nguyen
-<grail@cafebabe.org> who will try to address issues in a timely
-manner.
-
-* Definitions
-
-** store
-
-A location where mail can be found. This may be a file (Berkeley
-mbox), directory (MH), IMAP server, POP3 server, Exchange server,
-Lotus Notes server, a stack of Post-Its by your monitor fed through
-some OCR system.
-
-** message
-
-An individual mail message.
-
-** vfolder
-
-A group of messages sharing some commonality. This is the result of a
-query. The vfolder maybe contained in a store, but it is not necessary
-that a store holds only one vfolder. There is always an implicit
-vfolder rule which matches all messages. A store contains the vfolder
-which is the result of the query (any). It's short for virtual folder
-or maybe view folder. I dunno.
-
-** default-vfolder
-
-The vfolder defined by (any) applied to the store. This is not the
-inbox. The inbox could easily be defined by a query. A default rule
-for the inbox could be (new) but it doesn't have to be. Mine happens
-to be (or (unread) (new)).
-
-** folder
-
-The classical mail folder approach: one message organization per
-store.
-
-** query
-
-A search for messages. The result of this is a vfolder. There are two
-kinds of queries: named queries and lambda queries. More on this
-later.
-
-** summary file
-
-An external file that contains pointers to messages which are matches
-for a named query. In addition to pointers, the summary file should
-also contain signatures of the store for sanity checks. When the term
-"index" is used as a verb, it means to build a summary file for a
-given name-value pair.
-
-* Queries
-
-Named queries are analogous to classical mail folders. Because named
-queries maybe reused, summary files are kept as caches to reduce
-the overall cost of viewing a vfolder. Summary files are superior to
-folders in that they allow for the same messages to appear in multiple
-vfolders without message duplications. Duplications of messages
-defeats attempts at tagging a message with additional user information
-like annotations. Named queries will define folders.
-
-Lambda queries are similar to named queries except that they have no
-name. These are created on the fly by the user to filter out or
-include certain messages.
-
-All queries can be layered on top of each other. A lambda query can be
-layered on a named query and a named query can be layered on a lambda
-query. The possibilities are endless.
-
-The layerings can be done as boolean operations (and, or, not). Short
-circuiting should be used.
-
-Examples:
-
-(and (author "Giao")
- (unread))
-
-The (unread) query should only be evaluated on the results of (author
-"Giao").
-
-(or (author "Giao")
- (unread))
-
-Both of these queries should be evaluated. Any matches are added to the
-resulting vfolder.
-
-* Summary files
-
-Summary files are only meaningful when applied to the context of the
-default-vfolder of a store.
-
-Summary files should be generated for queries of the form:
-
-(function "constant value")
-
-Summary files should never be generated for queries of the form:
-
-(function (function1))
-
-(and (function "value")
- (another-function "another value"))
-
-Given a query of the form:
-
-(and (function "value")
- (another-function "another value"))
-
-The system should use one summary file for (function "value") and
-another summary file for (another-function "another value"). I will
-call the prior form the "plain form".
-
-It should be noted that the signature of the store should be based on
-the assumption that new data may have been added to the store since
-the application generated the summary file. Signatures generated on
-the entirety of the store will most likely be meaningless for things
-like POP/IMAP servers.
-
-* Incremental indexing
-
-When new messages are detected, all known queries should be evaluated
-on the new messages. vfolders should be notified of new messages that
-are positive matches for their queries. The indexes generated by this
-process should be merged into the current indexes for the vfolder.
-
-* Can I have multiple stores?
-
-I don't see why not. Again, the inbox is a vfolder so you can get a
-unified inbox consisting of all new mail sent to all your stores or
-your can get inboxes for each store or any combination your heart
-desire. You get your cake, eat it, and someone else cleans the dishes!
-
-* Why all this?
-
-Consider the dynamic nature of the following query:
-
-(and (author "Giao")
- (sent-after (today-midnight)))
-
-today-midnight would be a function that is evaluated at run-time to
-calculate the appropriate object.
-
-* Scenarios of usage and their solutions
-
-** Mesage alterations
-
-This is a fuzzy area that should be left to the UI to handle. Messages
-are altered. Read status are altered when a new message is read for
-example. How do we handle this if our query is for unread messages?
-Upon viewing the state would change.
-
-One idea is to not evaluate the queries unless we're changing between
-vfolder views. This assumes that one can only view a particular
-vfolder at a time. For multi-vfolder viewing, a message change should
-propagate through the vfolder system. Certain effects (as in our
-example) would not be intuitive.
-
-It would not be a clean solution to make special cases but they may be
-necessary where certain defined fields are ignored when they are
-changed. Some combination of the above rules can be used. I don't
-think it's an easy solution.
-
-** Message inclusion and exclusion
-
-Messages are included and excluded also with queries. The final query
-will have the form of:
-
-(and (author "Giao")
- (criteria value)
- (not (criteria other-value)))
-
-Userland criterias may be a label of some sort. These may be userland
-labels or Message-IDs. What are the performance issues involved in
-this? With short circuiting, it's not a major problem.
-
-The criterias and values are determined by the UI. The vfolder
-mechanism isn't concerned with such issues.
-
-Messages can be included and excluded at will. The idea is often
-called "arbitrary inclusion/exclusion". This can be done by
-Message-IDs or other fields. It's been noted that Message-IDs are not
-unique.
-
-I propose that any given vfolder is allocated an inclusion label and an
-exclusion label. These should be randomly generated. This should be
-part of the vfolder description. It should be noted that the vfolder
-description has not been drafted yet.
-
-The result is such that the rules for a given named query is:
-
-(and (user-query)
- (label inclusion-label)
- (not exclusion-label))
-
-** Query scheduling
-
-Consider the following extremely dynamic queries:
-
-A:
-(and (author "Giao")
- (sent-after (today-midnight)))
-
-B:
-(and (sent-after (today-midnight))
- (author "Giao"))
-
-C:
-(or (author "Giao")
- (sent-after (today-midnight)))
-
-Query A would be significantly faster because (author "Giao") is not
-dynamic. A summary file could be generated for this query. Query B is
-slow and can be optimized if there was a query compiler of some
-sort. Query C demonstrates a query in which there is no good
-optimization which can be applied. These come with a certain amount of
-baggage.
-
-It seems then that for boolean 'and' operations, plain forms should be
-moved forward and other queries should be moved such that they are
-evaluated later. I would expect that the majority of queries would be
-of the plain form.
-
-First is that the summary file is tied to the query and the store
-where the query originates from. Second, a hashing function for
-strings needs to be calculated for the query so that the query and the
-summary file can be associated. This hashing function could be similar
-to the hashing function described in Rob Pike's "The Practice of
-Programming". (FIXME: Stick page number here)
-
-** Archives
-
-Many people are concerned that archives won't be preserved, archives
-aren't supported, and many other archive related issues. This is the
-short version.
-
-Archives are just that, archives. Archives are stores. Take your
-vfolder, export it to a store. You are done. If you load up the store
-again, then the default-vfolder of that store is the view of the
-vfolder, except the query is different.
-
-The point to vfolder is not to do away with classical folder
-representation but to move the queries to the front where it would
-make data management easier for people who don't think in terms of
-files but in terms of queries because ordinary people don't think in
-terms of files.
-
-* Miscellany
-
-** Annotations
-
-There should be a scheme to add annotations to messages. Common mail
-user agents have used a tag in the message header to mark messages as
-read/unread for example. Extending on this we have the ability to add
-our own data to a message to add meaning to it. If we have a good
-scheme for doing this, new possibilities are opened.
-
-*** Keywords
-
-When sending a message, a message could have certain keywords attached
-to it. While this can be done with the subject line, the subject line
-has a tendency to be munged by other mail applications. One popular
-example is the "[rR]e:" prefix. Using the subject line also breaks the
-"contract" with other mail user agents. Using keywords in another
-field in the message header allows the sender to assist the recipient
-in organizing data automatically. Note that the sender can only
-provide hints as the sender is unlikely to know the organization
-schemes of the recipient.
-
-** Scope
-
-Let us assume that we have multiple stores. Does a query work on a
-given store? Or does it work on all stores? Or is it configurable such
-that a query can work on a user-selected list of stores?
-
-* Alternatives to the above
-
-Jim Meyer <purp@selequa.com> is putting some notes on where
-annotations needs to be located. They'll be located here as well as
-any contributions I may have to them.
diff --git a/libversit/.cvsignore b/libversit/.cvsignore
deleted file mode 100644
index 36a99050c8..0000000000
--- a/libversit/.cvsignore
+++ /dev/null
@@ -1,9 +0,0 @@
-.deps
-Makefile
-Makefile.in
-.libs
-vcc.c
-vcc.lo
-vobject.lo
-vcaltmp.lo
-libversit.la \ No newline at end of file
diff --git a/libversit/Makefile.am b/libversit/Makefile.am
deleted file mode 100644
index 5d42636c1c..0000000000
--- a/libversit/Makefile.am
+++ /dev/null
@@ -1,15 +0,0 @@
-
-noinst_LTLIBRARIES = libversit.la
-
-libversit_la_SOURCES = \
- vcc.y \
- vcc.h \
- vobject.c \
- vobject.h \
- port.h \
- vcaltmp.c \
- vcaltmp.h
-
-EXTRA_DIST = README.TXT vcaltest.c vctest.c
-
-YFLAGS=-pversit_
diff --git a/libversit/README.TXT b/libversit/README.TXT
deleted file mode 100644
index c8ce8b0979..0000000000
--- a/libversit/README.TXT
+++ /dev/null
@@ -1,951 +0,0 @@
-NOTE: If you used the earlier APIs released by Versit
-then you will want to look at the document "migrate.doc"
-included with this package. It contains a discussion of
-the differences between the old API and this one.
-
-----------------------------------------------------------------
-
-The vCard/vCalendar C interface is implemented in the set
-of files as follows:
-
-vcc.y, yacc source, and vcc.c, the yacc output you will use
-implements the core parser
-
-vobject.c implements an API that insulates the caller from
-the parser and changes in the vCard/vCalendar BNF
-
-port.h defines compilation environment dependent stuff
-
-vcc.h and vobject.h are header files for their .c counterparts
-
-vcaltmp.h and vcaltmp.c implement vCalendar "macro" functions
-which you may find useful.
-
-test.c is a standalone test driver that exercises some of
-the features of the APIs provided. Invoke test.exe on a
-VCARD/VCALENDAR input text file and you will see the pretty
-print output of the internal representation (this pretty print
-output should give you a good idea of how the internal
-representation looks like -- there is one such output in the
-following too). Also, a file with the .out suffix is generated
-to show that the internal representation can be written back
-in the original text format.
-
------------------------------------------------------------------
-
-
- VObject for VCard/VCalendar
-
-Table of Contents
-=================
-1. VObject
-2. Internal Representations of VCard/VCalendar
-3. Iterating Through VObject's Properties or Values
-4. Pretty Printing a VObject Tree
-5. Building A VObject Representation of A VCard/VCalendar
-6. Converting A VObject Representation Into Its Textual Representation
-7. Miscellaneous Notes On VObject APIs usages
-8. Brief descriptions of each APIs
-9. Additional Programming Notes.
-
-This document is mainly about the VObject and its APIs. The main
-use of a VObject is to represent a VCard or a VCalendar inside
-a program. However, its use is not limited to aforemention as it
-can represent an arbitrary information that makes up of a tree or
-forest of properties/values.
-
-1. VObject
- =======
-A VObject can have a name (id) and a list of associated properties and
-a value. Each property is itself a VObject.
-
-2. Internal Representations of VCard/VCalendar
- ===========================================
-A list of VCard or a VCalendar is represented by a list of VObjects.
-The name (id) of the VObjects in the list is either VCCardProp or
-VCCalProp. Each of these VObjects can have a list of properties.
-Since a property is represented as a VObject, each of these properties
-can have a name, a list of properties, and a value.
-
-For example, the input file "vobject.vcf":
-
-BEGIN:VCARD
-N:Alden;Roland
-FN:Roland H. Alden
-ORG:AT&T;Versit Project Office
-TITLE:Consultant
-EMAIL;WORK;PREF;INTERNET:sf!rincon!ralden@alden.attmail.com
-EMAIL;INTERNET:ralden@sfgate.com
-EMAIL;MCIMail:242-2200
-LABEL;DOM;POSTAL;PARCEL;HOME;WORK;QUOTED-PRINTABLE:Roland H. Alden=0A=
-Suite 2208=0A=
-One Pine Street=0A=
-San Francisco, CA 94111
-LABEL;POSTAL;PARCEL;HOME;WORK;QUOTED-PRINTABLE:Roland H. Alden=0A=
-Suite 2208=0A=
-One Pine Street=0A=
-San Francisco, CA 94111=0A=
-U.S.A.
-TEL;WORK;PREF;MSG:+1 415 296 9106
-TEL;WORK;FAX:+1 415 296 9016
-TEL;MSG;CELL:+1 415 608 5981
-ADR:;Suite 2208;One Pine Street;San Francisco;CA;94111;U.S.A.
-SOUND:ROW-LAND H ALL-DIN
-LOGO;GIF;BASE64:
- R0lGODdhpgBOAMQAAP///+/v797e3s7Ozr29va2trZycnIyMjHt7e2NjY1JSUkJC
- QjExMSEhIRAQEO///87v9973/73n95zW71K13jGl1nvG50Kt3iGc1gCMzq3e94zO
- 7xCU1nO952O15wAAACwAAAAApgBOAAAF/yAgjmRpnmiqrmzrvnAsz3Rt33iu73zv
- /8CgcEj8QTaeywWTyWCUno2kSK0KI5tLc8vtNi+WiHVMlj0mFK96nalsxOW4fPSw
- cNj4tQc+7xcjGh4WExJTJYUTFkp3eU0eEH6RkpOUlTARhRoWm5ydFpCWoS0QEqAu
- ARKaHRcVjV0borEoFl0cSre4Sq67FA+yvwAeTU8XHZ7HmxS6u2wVfMCVpAE3pJoW
- ylrMptDcOqSF4OHg3eQ5pInInb7lcc86mNbLzBXsZbRfUOn6ucyNHvVWJHCpQFDf
- MWwEEzLqx2YCQCqF3OnItClJNmYcJD7cSAKTuI/gtnEcOQKkyVIk6/+ds5CkFcMM
- 61LiENikwi1jBnNyuvUSjwWZOS5uIZarqNFcNl32XMMB6I06GgoJ+bZp1ZKeDl8E
- +MC1K1cBIhZ4HUu2LAsCZdOWRQDt20lxIlccSHsgrNq7Xc/ixcsWmNu34WKyYJCW
- gQjCe9XqTZy2L4pv04gg2sSKSc8OLgTcBSuWsdkVaD2TdXyiQxebFyjo1Gnx6tJm
- LuaqrdtZtNfFtruSNmF5IKujwIsmJbjwtRqNJhrcNVw79wcRAgogmE4ArIjQzj/s
- JvHAGCFDQR4UqigPK4sBe62XwO51OwADiMcqUG+iOdcFAL+hW20BfAoEexlwAnu6
- mZDAXQ1EVh//WfhxJB5gIbHgwFgOTOiVAgOuVQKAfKFg3weGwSBYFZMp4hpDGKyA
- 3lgJKECWgiMQyBVpW+0V4oJjNfhCNkR1IgWEb21QlRK9GdfFCgeOZYBsXgm4noYj
- GEBhAQHYh0J8XenoQnFGdrkUciJY6FUAK15ogozakcBhliKsyZWHDMZQ0wWC/Aim
- DB6h01KRr/lXQgFxAqDcWDACgCZpUnrVQJtjwTnWjS6MWAYqqfDnSaEkJOlVXQBo
- 2pWTMUJ53WgAuPncCR9q6VQMAYjZlXWJmknCoSUM2p4BC+SaKwG88hoZlvfFMM4f
- hQh5TXkv+RklWYtC91mopJIAKFkJlDAW/wF25ShnLbeo5gmQ+1FGkJdrKCuCi2OR
- BuwHBcwqKgABrMtVAgpem61XkLbAJ7n8uiIpvGVhO4KpH1QLbbpqLheZvQCkGoNL
- thSzSTg2UGVBBzbtaxwKsYrmgLvRAlCmWgwMAADD66rKAgR3XlGspcdkZYK8ibU7
- asgEl+XAyB8I7PCqMWiWncGGimpfAgO4ypXSPpOVLwsRCDJxRD2AoyeRRv5kApO5
- fXwzwvfOKLKtaTWtbQxccmGLTZy8xYlVSvXbhbk0M2YzrYfJJ0K8m+V9NgxpyC04
- UycI/aiuiH9Y8NftDUwWp1Wm5UABnAUKwwRsPFGBt4Oc9PZvGvNLwf8JOZt8Arpe
- eY23yDovwIDiBX74NAsPVLDJj3Hh4JEExsKcjrlKf9DsCVx3ZfLqAKBuG1s/A90C
- z2KjYHjjyPOdG1spz6BBUr+BcUxUb1nDCTa/VZD2Uv+YkLPAKJC9dNEh7628WgqI
- ybzlaA+ufxMa6bxC6ciLUQLcx5UGIAAsAkDA6wQkOxrcY39yo4cQMNWCAPTKV1R4
- wPkgaBxzOc8FtMiF1NoGoXBRJjgoPApmPsjCFlbMdzCM4TFy50IXxI2DPcHAv2rY
- gghsEIeu8CAPW6ABIPYEFkOsAeaMyIz0JfGJUExBBGRIRX0IMYovWCIT1eBELNpA
- i1vcgta8iANPCIQOghzQABl30J0tXqBla4wjFLFQxZzAUY42CIAd5OYBCuKxB2c4
- I0b28EcrQKADgmSKB9RYyDhA4BqCxIBqrtjIMTwoFeCjYSU3KZMQAAA7
-
-BEGIN:VCALENDAR
-DCREATED:19960523T100522
-PRODID:-//Alden Roland/Hand Crafted In North Carolina//NONSGML Made By Hand//EN
-VERSION:0.3
-BEGIN:VEVENT
-START:19960523T120000
-END:19960523T130000
-SUBTYPE:PHONE CALL
-SUMMARY:VERSIT PDI PR Teleconference/Interview
-DESCRIPTION:VERSIT PDI PR Teleconference/Interview With Tom Streeter and Alden Roland
-END:VEVENT
-BEGIN:VEVENT
-START:19960523T113000
-END:19960523T115500
-SUBTYPE:LUNCH
-SUMMARY:Eat in the cafeteria today
-END:VEVENT
-END:VCALENDAR
-
-END:VCARD
-
-
-will conceptually be be represented as
- vcard
- VCNameProp
- VCFamilyNameProp=Alden
- VCGivenNameProp=Roland
- VCFullNameProp=Roland H.Alden
- ....
-
-note that
- EMAIL;WORK;PREF;INTERNET:sf!rincon!ralden@alden.attmail.com
-will be represented as:
- VCEmailAddress=sf!rincon!ralden@alden.attmail.com
- VCWork
- VCPreferred
- VCInternet
-where the lower level properties are properties of the property
-VCEmailAddress.
-
-Groupings are flattened out in the VObject representation such
-that:
- a.b:blah
- a.c:blahblah
-are represented as:
- b=blah
- VCGrouping=a
- c=blahblah
- VCGrouping=a
-i.e. one can read the above as:
- the property "b" has value "blah" and property "VCGrouping"
- with the value "a".
- the property "c" has value "blahblah" and property "VCGrouping"
- with the value "a".
-likewise, multi-level groupings are flatten similarly. e.g.
- a.b.c:blah
- a.b.e:blahblah
--->
- c=blah
- VCGrouping=b
- VCGrouping=a
- e=blahblah
- VCGrouping=b
- VCGrouping=a
-which read:
- the property "c" has value "blah" and property "VCGrouping"
- with the value "b" which has property "VCGrouping"
- with value "a".
- the property "e" has value "blahblah" and property "VCGrouping"
- with the value "b" which has property "VCGrouping"
- with value "a".
-
-3. Iterating Through VObject's Properties or Values
- ================================================
-The following is a skeletal form of iterating through
-all properties of a vobject, o:
-
- // assume the object of interest, o, is of type VObject
- VObjectIterator i;
- initPropIterator(&i,o);
- while (moreIteration(&i)) {
- VObject *each = nextVObject(&i);
- // ... do something with "each" property
- }
-
-Use the API vObjectName() to access a VObject's name.
-Use the API vObjectValueType() to determine if a VObject has
- a value. For VCard/VCalendar application, you
- should not need this function as practically
- all values are either of type VCVT_USTRINGZ or
- VCVT_RAW (i.e set by setVObjectUStringZValue and
- setVObjectAnyValue APIs respectively), and the
- value returned by calls to vObjectUStringZValue
- and vObjectAnyValue are 0 if a VObject has no
- value. (There is a minor exception where VObject with
- VCDataSizeProp has value that is set by
- setVObjectLongValue).
-Use the APIs vObject???Value() to access a VObject's value.
- where ??? is the expected type.
-Use the APIs setvObject???Value() to set or modify a VObject's value.
- where ??? is the expected type.
-Use the API isAPropertyOf() to query if a name match the name of
- a property of a VObject. Since isAPropertyOf() return
- the matching property, we can use that to retrieve
- a property and subsequently the value of the property.
-
-4. Pretty Printing a VObject Tree
- ==============================
-VObject tree can be pretty printed with the printVObject() function.
-The output of pretty printing a VObject representation of the input
-test file "vobject.vcf" is shown below. Note that the indentation
-indicates the tree hirerarchy where the immediate children nodes
-of a parent node is all at the same indentation level and the
-immediate children nodes are the immediate properties of the
-associated parent nodes. In the following, {N,FN,ORG,TITLE,...}
-are immediate properties of VCARD. {F and G} are properties of N
-with value {"Alden" and "Roland"} respectively; FN has no property
-but has the value "Roland H. Alden"; EMAIL has value and
-the properties WORK, PREF, and INTERNET.
-
-
-VCARD
- N
- F="Alden"
- G="Roland"
- FN="Roland H. Alden"
- ORG
- ORGNAME="AT&T"
- OUN="Versit Project Office"
- TITLE="Consultant"
- EMAIL="sf!rincon!ralden@alden.attmail.com"
- WORK
- PREF
- INTERNET
- EMAIL="ralden@sfgate.com"
- INTERNET
- EMAIL="242-2200"
- MCIMail
- LABEL="Roland H. Alden
- Suite 2208
- One Pine Street
- San Francisco, CA 94111"
- DOM
- POSTAL
- PARCEL
- HOME
- WORK
- QP
- LABEL="Roland H. Alden
- Suite 2208
- One Pine Street
- San Francisco, CA 94111
- U.S.A."
- POSTAL
- PARCEL
- HOME
- WORK
- QP
- TEL="+1 415 296 9106"
- WORK
- PREF
- MSG
- TEL="+1 415 296 9016"
- WORK
- FAX
- TEL="+1 415 608 5981"
- MSG
- CELL
- ADR
- EXT ADD="Suite 2208"
- STREET="One Pine Street"
- L="San Francisco"
- R="CA"
- PC="94111"
- C="U.S.A."
- SOUND="ROW-LAND H ALL-DIN"
- LOGO=[raw data]
- GIF
- BASE64
- DataSize=1482
-VCALENDAR
- DCREATED="19960523T100522"
- PRODID="-//Alden Roland/Hand Crafted In North Carolina//NONSGML Made By Hand//EN"
- VERSION="0.3"
- VEVENT
- START="19960523T120000"
- END="19960523T130000"
- SUBTYPE="PHONE CALL"
- SUMMARY="VERSIT PDI PR Teleconference/Interview"
- DESCRIPTION="VERSIT PDI PR Teleconference/Interview With Tom Streeter and Alden Roland"
- VEVENT
- START="19960523T113000"
- END="19960523T115500"
- SUBTYPE="LUNCH"
- SUMMARY="Eat in the cafeteria today"
-
-5. Building A VObject Representation of A VCard/VCalendar
- ======================================================
-The parser in vcc.y converts an input file with one or more
-VCard/VCalendar that is in their textual representation
-into their corresponding VObject representation.
-
-VObject representation of a VCard/VCalendar can also be built
-directly with calls to the VObject building APIs. e.g.
-
- VObject *prop;
- VObject *vcard = newVObject(VCCardProp);
- prop = addProp(vcard,VCNameProp);
- addPropValue(prop,VCFamilyNameProp,"Alden");
- addPropValue(prop,VCGivenNameProp,"Roland");
- addPropValue(vcard,VCFullNameProp,"Roland H. Alden");
- ....
-
-6. Converting A VObject Representation Into Its Textual Representation
- ===================================================================
-The VObject representation can be converted back to its textual
-representation via the call to writeVObject() or writeMemVObject()
-API. e.g.
- a. to write to a file:
- // assume vcard is of type VObject
- FILE *fp = fopen("alden.vcf","w");
- writeVObject(fp,vcard);
- a. to write to memory, and let the API allocate the required memory.
- char* clipboard = writeVObject(0,0,vcard);
- ... do something to clipboard
- free(clipboard);
- b. to write to a user allocated buffer:
- char clipboard[16384];
- int len = 16384;
- char *buf = writeVObject(clipboard,&len,vcard);
- ... buf will be equal to clipboard if the write
- is successful otherwise 0.
-
-In the case of writing to memory, the memory buffer can be either
-allocated by the API or the user. If the user allocate the
-memory for the buffer, then the length of the buffer needs to be
-communicated to the API via a variable. The variable passed as
-the length argument will be overwritten with the actual size
-of the text output. A 0 return value from writeMemVObject()
-indicates an error which could be caused by overflowing the
-size of the buffer or lack of heap memory.
-
-7. Miscellaneous Notes On VObject APIs usages
- ==========================================
-a. vcc.h -- contains basic interfaces to the parser:
- VObject* Parse_MIME(const char *input, unsigned long len);
- VObject* Parse_MIME_FromFile(FILE *file);
- -- both of this return a null-terminated list of
- VObject that is either a VCARD or VCALENDAR.
- To iterate through this list, do
- VObject *t, *v;
- v = Parse_Mime_FromFile(fp);
- while (v) {
- // ... do something to v.
- t = v;
- v = nextVObjectInList(v);
- cleanVObject(t);
- }
- note that call to cleanVObject will release
- resource used to represent the VObject.
-
-b. vobject.h -- contains basic interfaces to the VObject APIs.
- see the header for more details.
- The structure of VObject is purposely (hiddened) not exposed
- to the user. Every access has to be done via
- the APIs. This way, if we need to change the
- structure or implementation, the client need not
- recompile as long as the interfaces remain the
- same.
-
-c. values of a property is determined by the property definition
- itself. The vobject APIs does not attempt to enforce
- any of such definition. It is the consumer responsibility
- to know what value is expected from a property. e.g
- most properties have unicode string value, so to access
- the value of these type of properties, you will use
- the vObjectUStringZValue() to read the value and
- setVObjectUStringZValue() to set or modify the value.
- Refer to the VCard and VCalendar specifications for
- the definition of each property.
-
-d. properties name (id) are case incensitive.
-
-8. Brief descriptions of each APIs
- ===============================
- * the predefined properties' names (id) are listed under vobject.h
- each is of the form VC*Prop. e.g.
- #define VC7bitProp "7BIT"
- #define VCAAlarmProp "AALARM"
- ....
-
- * consumer of a VObject can only define pointers to VObject.
-
- * a variable of type VObjectIterator, say "i", can be used to iterate
- through a VObject's properties, say "o". The APIs related to
- VObjectIterator are:
- void initPropIterator(VObjectIterator *i, VObject *o);
- -- e.g. usage
- initPropIterator(&i,o);
- int moreIteration(VObjectIterator *i);
- -- e.g. usage
- while (moreIteration(&i)) { ... }
- VObject* nextVObject(VObjectIterator *i);
- -- e.g. usage
- while (moreIteration(&i)) {
- VObject *each = nextVObject(&i);
- }
-
- * VObject can be chained together to form a list. e.g. of such
- use is in the parser where the return value of the parser is
- a link list of VObject. A link list of VObject can be
- built by:
- void addList(VObject **o, VObject *p);
- and iterated by
- VObject* nextVObjectInList(VObject *o);
- -- next VObjectInList return 0 if the list
- is exhausted.
-
- * the following APIs are mainly used to construct a VObject tree:
- VObject* newVObject(const char *id);
- -- used extensively internally by VObject APIs but when
- used externally, its use is mainly limited to the
- construction of top level object (e.g. an object
- with VCCardProp or VCCalendarProp id).
-
- void deleteVObject(VObject *p);
- -- to deallocate single VObject, for most user, use
- cleanVObject(VObject *o) instead for freeing all
- resources associated with the VObject.
-
- char* dupStr(const char *s, unsigned int size);
- -- duplicate a string s. If size is 0, the string is
- assume to be a null-terminated.
-
- void deleteStr(const char *p);
- -- used to deallocate a string allocated by dupStr();
-
- void setVObjectName(VObject *o, const char* id);
- -- set the id of VObject o. This function is not
- normally used by the user. The setting of id
- is normally done as part of other APIs (e.g.
- addProp()).
-
- void setVObjectStringZValue(VObject *o, const char *s);
- -- set a string value of a VObject.
-
- void setVObjectUStringZValue(VObject *o, const wchar_t *s);
- -- set a Unicode string value of a VObject.
-
- void setVObjectIntegerValue(VObject *o, unsigned int i);
- -- set an integer value of a VObject.
-
- void setVObjectLongValue(VObject *o, unsigned long l);
- -- set an long integer value of a VObject.
-
- void setVObjectAnyValue(VObject *o, void *t);
- -- set any value of a VObject. The value type is
- unspecified.
-
- VObject* setValueWithSize(VObject *prop, void *val, unsigned int size);
- -- set a raw data (stream of bytes) value of a VObject
- whose size is size. The internal VObject representation
- is
- this object = val
- VCDataSizeProp=size
- i.e. the value val will be attached to the VObject prop
- and a property of VCDataSize whose value is size
- is also added to the object.
-
- void setVObjectVObjectValue(VObject *o, VObject *p);
- -- set a VObject as the value of another VObject.
-
- const char* vObjectName(VObject *o);
- -- retrieve the VObject's Name (i.e. id).
-
- const char* vObjectStringZValue(VObject *o);
- -- retrieve the VObject's value interpreted as
- null-terminated string.
-
- const wchar_t* vObjectUStringZValue(VObject *o);
- -- retrieve the VObject's value interpreted as
- null-terminated unicode string.
-
- unsigned int vObjectIntegerValue(VObject *o);
- -- retrieve the VObject's value interpreted as
- integer.
-
- unsigned long vObjectLongValue(VObject *o);
- -- retrieve the VObject's value interpreted as
- long integer.
-
- void* vObjectAnyValue(VObject *o);
- -- retrieve the VObject's value interpreted as
- any value.
-
- VObject* vObjectVObjectValue(VObject *o);
- -- retrieve the VObject's value interpreted as
- a VObject.
-
- VObject* addVObjectProp(VObject *o, VObject *p);
- -- add a VObject p as a property of VObject o.
- (not normally used externally for building a
- VObject).
-
- VObject* addProp(VObject *o, const char *id);
- -- add a property whose name is id to VObject o.
-
- VObject* addPropValue(VObject *o, const char *id, const char *v);
- -- add a property whose name is id and whose value
- is a null-terminated string to VObject o.
-
- VObject* addPropSizedValue(VObject *o, const char *id,
- const char *v, unsigned int size);
- -- add a property whose name is id and whose value
- is a stream of bytes of size size, to VObject o.
-
- VObject* addGroup(VObject *o, const char *g);
- -- add a group g to VObject o.
- e.g. if g is a.b.c, you will have
- o
- c
- VCGroupingProp=b
- VCGroupingProp=a
- and the object c is returned.
-
- VObject* isAPropertyOf(VObject *o, const char *id);
- -- query if a property by the name id is in o and
- return the VObject that represent that property.
-
- void printVObject(VObject *o);
- -- pretty print VObject o to stdout (for debugging use).
-
- void writeVObject(FILE *fp, VObject *o);
- -- convert VObject o to its textual representation and
- write it to file.
-
- char* writeMemVObject(char *s, int *len, VObject *o);
- -- convert VObject o to its textual representation and
- write it to memory. If s is 0, then memory required
- to hold the textual representation will be allocated
- by this API. If a variable len is passed, len will
- be overwriten with the byte size of the textual
- representation. If s is non-zero, then s has to
- be a user allocated buffer whose size has be passed
- in len as a variable. Memory allocated by the API
- has to be freed with call to free. The return value
- of this API is either the user supplied buffer,
- the memory allocated by the API, or 0 (in case of
- failure).
-
- void cleanStrTbl();
- -- this function has to be called when all
- VObject has been destroyed.
-
- void cleanVObject(VObject *o);
- -- release all resources used by VObject o.
-
- wchar_t* fakeUnicode(const char *ps, int *bytes);
- -- convert char* to wchar_t*.
-
- extern int uStrLen(const wchar_t *u);
- -- length of unicode u.
-
- char *fakeCString(const wchar_t *u);
- -- convert wchar_t to CString (blindly assumes that
- this could be done).
-
-9. Additional Programming Notes
- ============================
-In the following notes, please refers to the listing
-of Example.vcf and its VObject Representation
-(shown at the end of this section).
-
-* Handling the Return Value of the VCard/VCalendar Parser
- The example input text file contains two root VObjects
- (a VCalendar and a VCard). The output of the VCard/VCalendar
- parser is a null-terminated list of VObjects. For this
- particular input file, the list will have two VObjects.
- The following shows a template for iterating through the
- output of the Parser:
-
- VObject *t, *v;
- v = Parse_Mime_fromFileName("example.vcf");
- while (v) {
- // currently, v will either be a VCard or a VCalendar
- // do whatever your application need to do to
- // v here ...
- t = v;
- v = nextVObjectInList(v);
- cleanVObject(t);
- }
-
-* Iterating Through a VCard/VCalendar VObject
- From the VObject APIs point of view, a VCard VObject
- is the same as a VCalendar VObject. However, the application
- needs to know what are in a VCard or a VCalendar.
- For example, A VCalendar VObject can have VCDCreatedProp,
- a VCGEOLocationProp, etc, and one or more VCEventProp and
- or VCTodoProp. The VCEventProp and VCTodoProp can have
- many properties of their own, which in turn could have
- more properties (e.g. VCDAlarmProp can be a VCEventProp
- VObject's property, and VCRunTimeProp can be a
- VCDAlarmProp VObject's property. Because a VObject tree
- can be arbitrarily complex, in general, to process all
- properties and values of a VObject tree, a recursive walk
- is desirable. An example recursive VObject tree walk
- can be found in the vobject.c source lines for printVObject*
- and writeVObject* APIs. Depending on what the application need
- to do with a VCard or a VCalendar, a recursive walk
- of the VObject tree may or may not be desirable. An example
- template of a non-recursive walk is shown below:
-
- void processVCardVCalendar(char *inputFile)
- {
- VObject *t, *v;
- v = Parse_Mime_fromFileName(inputFile);
- while (v) {
- char *n = vObjectName(v);
- if (strcmp(n,VCCardProp) == 0) {
- do_VCard(v);
- }
- else if (strcmp(n,VCCalendarProp) == 0) {
- do_VCalendar(v);
- }
- else {
- // don't know how to handle anything else!
- }
- t = v;
- v = nextVObjectInList(v);
- cleanVObject(t);
- }
- }
-
- void do_VCard(VObject *vcard)
- {
- VObjectIterator t;
- initPropIterator(&t,vcard);
- while (moreIteration(&t)) {
- VObject *eachProp = nextVObject(&t);
- // The primarly purpose of this example is to
- // show how to iterate through a VCard VObject,
- // it is not meant to be efficient at all.
- char *n = vObjectName(eachProp);
- if (strcmp(n,VCNameProp)==0) {
- do_name(eachProp);
- }
- else if (strcmp(n,VCEmailProp)==0) {
- do_email(eachProp);
- }
- else if (strcmp(n,VCLabelProp)==0) {
- do_label(eachProp);
- }
- else if ....
- }
- }
-
- void do_VCalendar(VObject *vcal)
- {
- VObjectIterator t;
- initPropIterator(&t,vcard);
- while (moreIteration(&t)) {
- VObject *eachProp = nextVObject(&t);
- // The primarly purpose of this example is to
- // show how to iterate through a VCalendar VObject,
- // it is not meant to be efficient at all.
- char *n = vObjectName(eachProp);
- if (strcmp(n,VCDCreatedProp)==0) {
- do_DCreated(eachProp);
- }
- else if (strcmp(n,VCVersionProp)==0) {
- do_Version(eachProp);
- }
- else if (strcmp(n,VCTodoProp)==0) {
- do_Todo(eachProp);
- }
- else if (strcmp(n,VCEventProp)==0) {
- do_Event(eachProp);
- }
- else if ....
- }
- }
-
- void do_Todo(VObject *vtodo) { ... }
-
- void do_Event(VObject *vevent) { ... }
-
- ...
-
-* Property's Values and Properties
- The VObject APIs do not attempt to check for the
- correctness of the values of a property. Nor do they
- will prevent the user from attaching a non-VCard/VCalendar
- standard property to a VCard/VCalendar property. Take
- the example of line [11] of the example, "O.K" is not
- a valid value of VCStatusProp. It is up to the application
- to accept or reject the value of a property.
-
-* Output of printVObject
- PrintVObject pretty prints a VObject tree in human
- readable form. See the listing at the end of the file
- for an example output of printVObject on the example
- input file "Example.vcf".
-
- Note that binary data are not shown in the output of
- printVObject. Instead, a note is made ([raw data]) to
- indicate that there exists such a binary data.
-
-* Note on Binary Data
- When the value of a property is a binary data, it is only
- useful to know the size of the binary data.
-
- In the case of the VCard/VCalendar parser, it chooses
- to represent the size information as a separate property
- called VCDataSizeProp whose value is the size of the binary
- data. The APIs sequence to construct the VObject subtree
- of line [44] of Example.vcf is
-
- // VObject *vcard;
- VObject *p1 = addProp(vcard,VCLogoProp);
- (void) addProp(p1,VCGIFProp);
- (void) addProp(p1,VCBASE64Prop);
- VObject *p2 = addProp(p1,VCDataSizeProp);
- (void) setVObjectLongValue(p2,1482);
- setVObjectAnyValue(vcard,...pointer to binary data);
-
- Note the presence of VCBase64Prop will cause the
- writeVObject API to output the binary data as BASE64 text.
- For VCard/VCalendar application, having the VCBase64Prop
- property is pratically always neccessary for property with
- binary data as its value.
-
-* Note on Quoted-Printable String
- String value with embedded newline are written out as
- quoted-prinatable string. It is therefore important
- to mark a property with a string value that has
- one or more embedded newlines, with the VCQutedPrintableProp
- property. e.g.
-
- // VObject *root;
- char *msg="To be\nor\nnot to be";
- VObject *p = addPropValue(root,VCDescriptionProp,msg);
- // the following is how you mark a property with
- // a property. In this case, the marker is
- // VCQuotedPrintableProp
- addProp(p,VCQuotedPrintableProp);
-
-* Note on Unicode
- Although, the current parser takes ASCII text file only,
- string values are all stored as Unicode in the VObject tree.
- For now, when using the VObject APIs to construct a
- VObject tree, one should always convert ASCII string value
- to a Unicode string value:
-
- // VObject *root;
- VObject *p = addProp(root,VCSomeProp);
- setVObjectUStringZValue(p,fakeUnicode(someASCIIStringZvalue));
-
- An API is provided to simplify the above process:
-
- addPropValue(root,VCSomeProp,someASCIIStringZValue);
-
- Note that someASCIISTringZValue is automatically converted to
- Unicode by addPropValue API, where as, the former code
- sequence do an explicit call to fakeUnicode.
-
- To read back the value, one should use the vObjectUStringZValue
- API not vObjectStringZValue API. The value returned by the
- vObjectUStringZValue API is a Unicode string. If the application
- do not know how to handle Unicode string, it can use the
- fakeCString API to convert it back to ASCII string (as long
- as the conversion is meaningful).
-
- Note that fakeCString return a heap allocated memory. It is
- important to call deleteStr on fakeCString return value if
- it is not longer required (or there will be memory leak).
-
- NOTE: Unfortunately, at the point when this document is written,
- there is still no consensus on how Unicode is to be handled
- in the textual representation of VCard/VCalendar. So, there
- is no version of writeVObject and the parser to output and
- input Unicode textual representation of VCard/VCalendar.
-
-
-Example.vcf
------------
-line
-number Input Text (example.vcf)
------- ----------
-1 BEGIN:VCALENDAR
-2 DCREATED:19961102T100522
-3 GEO:0,0
-4 VERSION:1.0
-5 BEGIN:VEVENT
-6 DTSTART:19961103T000000
-7 DTEND:20000101T000000
-8 DESCRIPTION;QUOTED-PRINTABLE:To be =0A=
-9 or =0A=
-10 not to be
-11 STATUS:O.K.
-12 X-ACTION:No action required
-13 DALARM:19961103T114500;5;3;Enjoy
-14 MALARM:19970101T120000;;;johny@nowhere.com;Call Mom.
-15 END:VEVENT
-16
-17 BEGIN:VTODO
-18 DUE:19960614T0173000
-19 DESCRIPTION:Relex.
-20 END:VTODO
-21
-22 END:VCALENDAR
-23
-24 BEGIN:VCARD
-25 N:Alden;Roland
-26 FN:Roland H. Alden
-27 ORG:AT&T;Versit Project Office
-28 TITLE:Consultant
-29 EMAIL;WORK;PREF;INTERNET:ralden@ralden.com
-30 LABEL;DOM;POSTAL;PARCEL;HOME;WORK;QUOTED-PRINTABLE:Roland H. Alden=0A=
-31 Suite 2208=0A=
-32 One Pine Street=0A=
-33 San Francisco, CA 94111
-34 LABEL;POSTAL;PARCEL;HOME;WORK;QUOTED-PRINTABLE:Roland H. Alden=0A=
-35 Suite 2208=0A=
-36 One Pine Street=0A=
-37 San Francisco, CA 94111=0A=
-38 U.S.A.
-39 TEL;WORK;PREF;MSG:+1 415 296 9106
-40 TEL;WORK;FAX:+1 415 296 9016
-41 TEL;MSG;CELL:+1 415 608 5981
-42 ADR:;Suite 2208;One Pine Street;San Francisco;CA;94111;U.S.A.
-43 SOUND:ROW-LAND H ALL-DIN
-44 LOGO;GIF;BASE64:
-45 R0lGODdhpgBOAMQAAP///+/v797e3s7Ozr29va2trZycnIyMjHt7e2NjY1JSUkJC
- ... 30 lines of BASE64 data not shown here.
-76 END:VCARD
-
-
-VObject Representation of Example.vcf:
--------------------------------------
-line
-in
-text
-file VObject Tree as Printed by printVObject API
----- -------------------------------------------
-1 VCALENDAR
-2 DCREATED="19961102T100522"
-3 GEO="0,0"
-4 VERSION="1.0"
-5 VEVENT
-6 DTSTART="19961103T000000"
-7 DTEND="20000101T000000"
-8 DESCRIPTION="To be
-9 or
-10 not to be"
-8 QUOTED-PRINTABLE
-11 STATUS="O.K."
-12 X-ACTION="No action required"
-13 DALARM
-13 RUNTIME="19961103T114500"
-13 SNOOZETIME="5"
-13 REPEATCOUNT="3"
-13 DISPLAYSTRING="Enjoy"
-14 MALARM
-14 RUNTIME="19970101T120000"
-14 EMAIL="johny@nowhere.com"
-14 NOTE="Call Mom"
-17 VTODO
-18 DUE="19960614T0173000"
-19 DESCRIPTION="Relex."
-24 VCARD
-25 N
-25 F="Alden"
-25 G="Roland"
-26 FN="Roland H. Alden"
-27 ORG
-27 ORGNAME="AT&T"
-27 OUN="Versit Project Office"
-28 TITLE="Consultant"
-29 EMAIL="ralden@alden.com"
-29 WORK
-29 PREF
-29 INTERNET
-30 LABEL="Roland H. Alden
-31 Suite 2208
-32 One Pine Street
-33 San Francisco, CA 94111"
-30 DOM
-30 POSTAL
-30 PARCEL
-30 HOME
-30 WORK
-30 QUOTED-PRINTABLE
-34 LABEL="Roland H. Alden
-35 Suite 2208
-36 One Pine Street
-37 San Francisco, CA 94111
-38 U.S.A."
-34 POSTAL
-34 PARCEL
-34 HOME
-34 WORK
-34 QUOTED-PRINTABLE
-39 TEL="+1 415 296 9106"
-39 WORK
-39 PREF
-39 MSG
-40 TEL="+1 415 296 9016"
-40 WORK
-40 FAX
-41 TEL="+1 415 608 5981"
-41 MSG
-41 CELL
-42 ADR
-42 EXT ADD="Suite 2208"
-42 STREET="One Pine Street"
-42 L="San Francisco"
-42 R="CA"
-42 PC="94111"
-42 C="U.S.A."
-43 SOUND="ROW-LAND H ALL-DIN"
-44 LOGO=[raw data]
-44 GIF
-44 BASE64
-44 DATASIZE=1482
-
diff --git a/libversit/port.h b/libversit/port.h
deleted file mode 100644
index 1768beebd8..0000000000
--- a/libversit/port.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/***************************************************************************
-(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International
-Business Machines Corporation and Siemens Rolm Communications Inc.
-
-For purposes of this license notice, the term Licensors shall mean,
-collectively, Apple Computer, Inc., AT&T Corp., International
-Business Machines Corporation and Siemens Rolm Communications Inc.
-The term Licensor shall mean any of the Licensors.
-
-Subject to acceptance of the following conditions, permission is hereby
-granted by Licensors without the need for written agreement and without
-license or royalty fees, to use, copy, modify and distribute this
-software for any purpose.
-
-The above copyright notice and the following four paragraphs must be
-reproduced in all copies of this software and any software including
-this software.
-
-THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE
-ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR
-MODIFICATIONS.
-
-IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT,
-INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT
-OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED,
-INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.
-
-The software is provided with RESTRICTED RIGHTS. Use, duplication, or
-disclosure by the government are subject to restrictions set forth in
-DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable.
-
-***************************************************************************/
-
-#ifndef __PORT_H__
-#define __PORT_H__ 1
-
-
-#if defined(__CPLUSPLUS__) || defined(__cplusplus)
-extern "C" {
-#endif
-
-/* some of these #defines are commented out because */
-/* Visual C++ sets them on the compiler command line instead */
-
-/* #define _DEBUG */
-/* #define WIN32 */
-/* #define WIN16 */
-/* #define _WINDOWS */
-/* #define __MWERKS__ */
-/* #define INCLUDEMFC */
-
-#define vCardClipboardFormat "+//ISBN 1-887687-00-9::versit::PDI//vCard"
-#define vCalendarClipboardFormat "+//ISBN 1-887687-00-9::versit::PDI//vCalendar"
-
-/* The above strings vCardClipboardFormat and vCalendarClipboardFormat
-are globally unique IDs which can be used to generate clipboard format
-ID's as per the requirements of a specific platform. For example, in
-Windows they are used as the parameter in a call to RegisterClipboardFormat.
-For example:
-
- CLIPFORMAT foo = RegisterClipboardFormat(vCardClipboardFormat);
-
-*/
-
-#define vCardMimeType "text/x-vCard"
-#define vCalendarMimeType "text/x-vCalendar"
-
-#define DLLEXPORT(t) t
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-#ifndef TRUE
-#define TRUE 1
-#endif
-
-#define stricmp strcasecmp
-
-#if defined(__CPLUSPLUS__) || defined(__cplusplus)
-}
-#endif
-
-#endif /* __PORT_H__ */
diff --git a/libversit/vcaltest.c b/libversit/vcaltest.c
deleted file mode 100644
index 5528aab1d1..0000000000
--- a/libversit/vcaltest.c
+++ /dev/null
@@ -1,118 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include "vcaltmp.h"
-
-#if 0
-This testcase would generate a file call "frankcal.vcf" with
-the following content:
-
-BEGIN:VCALENDAR
-DCREATED:19960523T100522
-GEO:37.24,-17.87
-PRODID:-//Frank Dawson/Hand Crafted In North Carolina//NONSGML Made By Hand//EN
-VERSION:0.3
-BEGIN:VEVENT
-DTSTART:19960523T120000
-DTEND:19960523T130000
-DESCRIPTION;QUOTED-PRINTABLE:VERSIT PDI PR Teleconference/Interview =0A=
-With Tom Streeter and Frank Dawson - Discuss VERSIT PDI project and vCard and vCalendar=0A=
-activities with European Press representatives.
-SUMMARY:VERSIT PDI PR Teleconference/Interview
-SUBTYPE:PHONE CALL
-STATUS:CONFIRMED
-TRANSP:19960523T100522-4000F100582713-009251
-UID:http://www.ibm.com/raleigh/fdawson/~c:\or2\orgfiles\versit.or2
-DALARM:19960523T114500;5;3;Your Telecon Starts At Noon!!!;
-MALARM:19960522T120000;;;fdawson@raleigh.ibm.com;Remember 05/23 Noon Telecon!!!;
-PALARM:19960523T115500;;;c:\or2\organize.exe c:\or2\orgfiles\versit.or2;
-X-LDC-OR2-OLE:c:\temp\agenda.doc
-END:VEVENT
-
-BEGIN:VTODO
-DUE:19960614T0173000
-DESCRIPTION:Review VCalendar helper API.
-END:VTODO
-
-END:VCALENDAR
-
-#endif
-
-FILE *cfp;
-
-void testVcalAPIs() {
- FILE *fp;
- VObject *vcal, *vevent;
-#if _CONSOLE
- cfp = stdout;
-#else
- cfp = fopen("vcaltest.out","w");
-#endif
- if (cfp == 0) return;
- vcal = vcsCreateVCal(
- "19960523T100522",
- "37.24,-17.87",
- "-//Frank Dawson/Hand Crafted In North Carolina//NONSGML Made By Hand//EN",
- 0,
- "0.3"
- );
-
- vevent = vcsAddEvent(
- vcal,
- "19960523T120000",
- "19960523T130000",
- "VERSIT PDI PR Teleconference/Interview \nWith Tom Streeter and Frank Dawson - Discuss VERSIT PDI project and vCard and vCalendar\nactivities with European Press representatives.",
- "VERSIT PDI PR Teleconference/Interview",
- "PHONE CALL",
- 0,
- "CONFIRMED",
- "19960523T100522-4000F100582713-009251",
- "http://www.ibm.com/raleigh/fdawson/~c:\\or2\\orgfiles\\versit.or2",
- 0
- );
-
- vcsAddDAlarm(vevent, "19960523T114500", "5", "3",
- "Your Telecon Starts At Noon!!!");
- vcsAddMAlarm(vevent, "19960522T120000", 0, 0, "fdawson@raleigh.ibm.com",
- "Remember 05/23 Noon Telecon!!!");
- vcsAddPAlarm(vevent, "19960523T115500", 0 ,0,
- "c:\\or2\\organize.exe c:\\or2\\orgfiles\\versit.or2");
-
- addPropValue(vevent, "X-LDC-OR2-OLE", "c:\\temp\\agenda.doc");
-
- vcsAddTodo(
- vcal,
- 0,
- "19960614T0173000",
- 0,
- "Review VCalendar helper API.",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- );
-
- /* now do something to the resulting VObject */
- /* pretty print on stdout for fun */
- printVObject(cfp,vcal);
- /* open the output text file */
-
-#define OUTFILE "frankcal.vcf"
-
- fp = fopen(OUTFILE, "w");
- if (fp) {
- /* write it in text form */
- writeVObject(fp,vcal);
- fclose(fp);
- }
- else {
- fprintf(cfp,"open output file '%s' failed\n", OUTFILE);
- }
- if (cfp != stdout) fclose(cfp);
- }
-
-void main() {
- testVcalAPIs();
- }
-
diff --git a/libversit/vcaltmp.c b/libversit/vcaltmp.c
deleted file mode 100644
index ccb21a649a..0000000000
--- a/libversit/vcaltmp.c
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
-This module provides some helper APIs for creating
-a VCalendar object.
-
-Note on APIs:
- 1. The APIs does not attempt to verify if the arguments
- passed are correct.
- 2. Where the argument to an API is not applicable, pass
- the value 0.
- 3. See the test program at the bottom of this file as an
- example of usage.
- 4. This code calls APIs in vobject.c.
-
-*/
-
-/***************************************************************************
-(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International
-Business Machines Corporation and Siemens Rolm Communications Inc.
-
-For purposes of this license notice, the term Licensors shall mean,
-collectively, Apple Computer, Inc., AT&T Corp., International
-Business Machines Corporation and Siemens Rolm Communications Inc.
-The term Licensor shall mean any of the Licensors.
-
-Subject to acceptance of the following conditions, permission is hereby
-granted by Licensors without the need for written agreement and without
-license or royalty fees, to use, copy, modify and distribute this
-software for any purpose.
-
-The above copyright notice and the following four paragraphs must be
-reproduced in all copies of this software and any software including
-this software.
-
-THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE
-ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR
-MODIFICATIONS.
-
-IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT,
-INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT
-OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED,
-INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.
-
-The software is provided with RESTRICTED RIGHTS. Use, duplication, or
-disclosure by the government are subject to restrictions set forth in
-DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable.
-
-***************************************************************************/
-
-
-#include <stdio.h>
-#include <string.h>
-#include "vcaltmp.h"
-
-
-DLLEXPORT(VObject*) vcsCreateVCal(
- char *date_created,
- char *location,
- char *product_id,
- char *time_zone,
- char *version
- )
- {
- VObject *vcal = newVObject(VCCalProp);
-#define Z(p,v) if (v) addPropValue(vcal,p,v);
- Z(VCDCreatedProp, date_created);
- Z(VCLocationProp, location)
- Z(VCProdIdProp, product_id)
- Z(VCTimeZoneProp, time_zone)
- Z(VCVersionProp, version)
-#undef Z
- return vcal;
- }
-
-
-DLLEXPORT(VObject*) vcsAddEvent(
- VObject *vcal,
- char *start_date_time,
- char *end_date_time,
- char *description,
- char *summary,
- char *categories,
- char *classification,
- char *status,
- char *transparency,
- char *uid,
- char *url
- )
- {
- VObject *vevent = addProp(vcal,VCEventProp);
-#define Z(p,v) if (v) addPropValue(vevent,p,v);
- Z(VCDTstartProp,start_date_time);
- Z(VCDTendProp,end_date_time);
- if (description) {
- VObject *p = addPropValue(vevent,VCDescriptionProp,description);
- if (strchr(description,'\n'))
- addProp(p,VCQuotedPrintableProp);
- }
- Z(VCSummaryProp,summary);
- Z(VCCategoriesProp,categories);
- Z(VCClassProp,classification);
- Z(VCStatusProp,status);
- Z(VCTranspProp,transparency);
- Z(VCUniqueStringProp,uid);
- Z(VCURLProp,url);
-#undef Z
- return vevent;
- }
-
-
-DLLEXPORT(VObject*) vcsAddTodo(
- VObject *vcal,
- char *start_date_time,
- char *due_date_time,
- char *date_time_complete,
- char *description,
- char *summary,
- char *priority,
- char *classification,
- char *status,
- char *uid,
- char *url
- )
- {
- VObject *vtodo = addProp(vcal,VCTodoProp);
-#define Z(p,v) if (v) addPropValue(vtodo,p,v);
- Z(VCDTstartProp,start_date_time);
- Z(VCDueProp,due_date_time);
- Z(VCCompletedProp,date_time_complete);
- if (description) {
- VObject *p = addPropValue(vtodo,VCDescriptionProp,description);
- if (strchr(description,'\n'))
- addProp(p,VCQuotedPrintableProp);
- }
- Z(VCSummaryProp,summary);
- Z(VCPriorityProp,priority);
- Z(VCClassProp,classification);
- Z(VCStatusProp,status);
- Z(VCUniqueStringProp,uid);
- Z(VCURLProp,url);
-#undef Z
- return vtodo;
- }
-
-
-DLLEXPORT(VObject*) vcsAddAAlarm(
- VObject *vevent,
- char *run_time,
- char *snooze_time,
- char *repeat_count,
- char *audio_content
- )
- {
- VObject *aalarm= addProp(vevent,VCAAlarmProp);
-#define Z(p,v) if (v) addPropValue(aalarm,p,v);
- Z(VCRunTimeProp,run_time);
- Z(VCSnoozeTimeProp,snooze_time);
- Z(VCRepeatCountProp,repeat_count);
- Z(VCAudioContentProp,audio_content);
-#undef Z
- return aalarm;
- }
-
-
-DLLEXPORT(VObject*) vcsAddMAlarm(
- VObject *vevent,
- char *run_time,
- char *snooze_time,
- char *repeat_count,
- char *email_address,
- char *note
- )
- {
- VObject *malarm= addProp(vevent,VCMAlarmProp);
-#define Z(p,v) if (v) addPropValue(malarm,p,v);
- Z(VCRunTimeProp,run_time);
- Z(VCSnoozeTimeProp,snooze_time);
- Z(VCRepeatCountProp,repeat_count);
- Z(VCEmailAddressProp,email_address);
- Z(VCNoteProp,note);
-#undef Z
- return malarm;
- }
-
-
-DLLEXPORT(VObject*) vcsAddDAlarm(
- VObject *vevent,
- char *run_time,
- char *snooze_time,
- char *repeat_count,
- char *display_string
- )
- {
- VObject *dalarm= addProp(vevent,VCDAlarmProp);
-#define Z(p,v) if (v) addPropValue(dalarm,p,v);
- Z(VCRunTimeProp,run_time);
- Z(VCSnoozeTimeProp,snooze_time);
- Z(VCRepeatCountProp,repeat_count);
- Z(VCDisplayStringProp,display_string);
-#undef Z
- return dalarm;
- }
-
-
-DLLEXPORT(VObject*) vcsAddPAlarm(
- VObject *vevent,
- char *run_time,
- char *snooze_time,
- char *repeat_count,
- char *procedure_name
- )
- {
- VObject *palarm= addProp(vevent,VCPAlarmProp);
-#define Z(p,v) if (v) addPropValue(palarm,p,v);
- Z(VCRunTimeProp,run_time);
- Z(VCSnoozeTimeProp,snooze_time);
- Z(VCRepeatCountProp,repeat_count);
- Z(VCProcedureNameProp,procedure_name);
-#undef Z
- return palarm;
- }
-
-
-#ifdef _TEST
-
-#if 0
-This testcase would generate a file call "frankcal.vcf" with
-the following content:
-
-BEGIN:VCALENDAR
-DCREATED:19960523T100522
-GEO:37.24,-17.87
-PRODID:-//Frank Dawson/Hand Crafted In North Carolina//NONSGML Made By Hand//EN
-VERSION:0.3
-BEGIN:VEVENT
-DTSTART:19960523T120000
-DTEND:19960523T130000
-DESCRIPTION;QUOTED-PRINTABLE:VERSIT PDI PR Teleconference/Interview =0A=
-With Tom Streeter and Frank Dawson - Discuss VERSIT PDI project and vCard and vCalendar=0A=
-activities with European Press representatives.
-SUMMARY:VERSIT PDI PR Teleconference/Interview
-CATEGORIES:PHONE CALL
-STATUS:CONFIRMED
-TRANSP:19960523T100522-4000F100582713-009251
-UID:http://www.ibm.com/raleigh/fdawson/~c:\or2\orgfiles\versit.or2
-DALARM:19960523T114500;5;3;Your Telecon Starts At Noon!!!;
-MALARM:19960522T120000;;;fdawson@raleigh.ibm.com;Remember 05/23 Noon Telecon!!!;
-PALARM:19960523T115500;;;c:\or2\organize.exe c:\or2\orgfiles\versit.or2;
-X-LDC-OR2-OLE:c:\temp\agenda.doc
-END:VEVENT
-
-BEGIN:VTODO
-DUE:19960614T0173000
-DESCRIPTION:Review VCalendar helper API.
-END:VTODO
-
-END:VCALENDAR
-
-#endif
-
-void testVcalAPIs() {
- FILE *fp;
- VObject *vcal = vcsCreateVCal(
- "19960523T100522",
- "37.24,-17.87",
- "-//Frank Dawson/Hand Crafted In North Carolina//NONSGML Made By Hand//EN",
- 0,
- "0.3"
- );
-
- VObject *vevent = vcsAddEvent(
- vcal,
- "19960523T120000",
- "19960523T130000",
- "VERSIT PDI PR Teleconference/Interview \nWith Tom Streeter and Frank Dawson - Discuss VERSIT PDI project and vCard and vCalendar\nactivities with European Press representatives.",
- "VERSIT PDI PR Teleconference/Interview",
- "PHONE CALL",
- 0,
- "CONFIRMED",
- "19960523T100522-4000F100582713-009251",
- "http://www.ibm.com/raleigh/fdawson/~c:\\or2\\orgfiles\\versit.or2",
- 0
- );
-
- vcsAddDAlarm(vevent, "19960523T114500", "5", "3",
- "Your Telecon Starts At Noon!!!");
- vcsAddMAlarm(vevent, "19960522T120000", 0, 0, "fdawson@raleigh.ibm.com",
- "Remember 05/23 Noon Telecon!!!");
- vcsAddPAlarm(vevent, "19960523T115500", 0 ,0,
- "c:\\or2\\organize.exe c:\\or2\\orgfiles\\versit.or2");
-
- addPropValue(vevent, "X-LDC-OR2-OLE", "c:\\temp\\agenda.doc");
-
- vcsAddTodo(
- vcal,
- 0,
- "19960614T0173000",
- 0,
- "Review VCalendar helper API.",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- );
-
- /* now do something to the resulting VObject */
- /* pretty print on stdout for fun */
- printVObject(vcal);
- /* open the output text file */
-
-#define OUTFILE "frankcal.vcf"
-
- fp = fopen(OUTFILE, "w");
- if (fp) {
- /* write it in text form */
- writeVObject(fp,vcal);
- fclose(fp);
- }
- else {
- printf("open output file '%s' failed\n", OUTFILE);
- }
- }
-
-void main() {
- testVcalAPIs();
- }
-
-#endif
-
-
-/* end of source file vcaltmp.c */
diff --git a/libversit/vcaltmp.h b/libversit/vcaltmp.h
deleted file mode 100644
index 4c4afde963..0000000000
--- a/libversit/vcaltmp.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/***************************************************************************
-(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International
-Business Machines Corporation and Siemens Rolm Communications Inc.
-
-For purposes of this license notice, the term Licensors shall mean,
-collectively, Apple Computer, Inc., AT&T Corp., International
-Business Machines Corporation and Siemens Rolm Communications Inc.
-The term Licensor shall mean any of the Licensors.
-
-Subject to acceptance of the following conditions, permission is hereby
-granted by Licensors without the need for written agreement and without
-license or royalty fees, to use, copy, modify and distribute this
-software for any purpose.
-
-The above copyright notice and the following four paragraphs must be
-reproduced in all copies of this software and any software including
-this software.
-
-THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE
-ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR
-MODIFICATIONS.
-
-IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT,
-INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT
-OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED,
-INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.
-
-The software is provided with RESTRICTED RIGHTS. Use, duplication, or
-disclosure by the government are subject to restrictions set forth in
-DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable.
-
-***************************************************************************/
-
-#include "vcc.h"
-
-#ifndef __VCALTMP_H__
-#define __VCALTMP_H__
-
-#if defined(__CPLUSPLUS__) || defined(__cplusplus)
-extern "C" {
-#endif
-
-extern DLLEXPORT(VObject*) vcsCreateVCal(
- char *date_created,
- char *location,
- char *product_id,
- char *time_zone,
- char *version
- );
-
-extern DLLEXPORT(VObject*) vcsAddEvent(
- VObject *vcal,
- char *start_date_time,
- char *end_date_time,
- char *description,
- char *summary,
- char *categories,
- char *classification,
- char *status,
- char *transparency,
- char *uid,
- char *url
- );
-
-
-extern DLLEXPORT(VObject*) vcsAddTodo(
- VObject *vcal,
- char *start_date_time,
- char *due_date_time,
- char *date_time_complete,
- char *description,
- char *summary,
- char *priority,
- char *classification,
- char *status,
- char *uid,
- char *url
- );
-
-
-extern DLLEXPORT(VObject*) vcsAddAAlarm(
- VObject *vevent,
- char *run_time,
- char *snooze_time,
- char *repeat_count,
- char *audio_content
- );
-
-
-extern DLLEXPORT(VObject*) vcsAddMAlarm(
- VObject *vevent,
- char *run_time,
- char *snooze_time,
- char *repeat_count,
- char *email_address,
- char *note
- );
-
-
-extern DLLEXPORT(VObject*) vcsAddDAlarm(
- VObject *vevent,
- char *run_time,
- char *snooze_time,
- char *repeat_count,
- char *display_string
- );
-
-
-extern DLLEXPORT(VObject*) vcsAddPAlarm(
- VObject *vevent,
- char *run_time,
- char *snooze_time,
- char *repeat_count,
- char *procedure_name
- );
-
-#if defined(__CPLUSPLUS__) || defined(__cplusplus)
-}
-#endif
-
-#endif /* __VCALTMP_H__ */
-
-
diff --git a/libversit/vcc.h b/libversit/vcc.h
deleted file mode 100644
index 0e52034710..0000000000
--- a/libversit/vcc.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/***************************************************************************
-(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International
-Business Machines Corporation and Siemens Rolm Communications Inc.
-
-For purposes of this license notice, the term Licensors shall mean,
-collectively, Apple Computer, Inc., AT&T Corp., International
-Business Machines Corporation and Siemens Rolm Communications Inc.
-The term Licensor shall mean any of the Licensors.
-
-Subject to acceptance of the following conditions, permission is hereby
-granted by Licensors without the need for written agreement and without
-license or royalty fees, to use, copy, modify and distribute this
-software for any purpose.
-
-The above copyright notice and the following four paragraphs must be
-reproduced in all copies of this software and any software including
-this software.
-
-THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE
-ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR
-MODIFICATIONS.
-
-IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT,
-INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT
-OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED,
-INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.
-
-The software is provided with RESTRICTED RIGHTS. Use, duplication, or
-disclosure by the government are subject to restrictions set forth in
-DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable.
-
-***************************************************************************/
-
-#ifndef __VCC_H__
-#define __VCC_H__ 1
-
-#include "vobject.h"
-
-
-#if defined(__CPLUSPLUS__) || defined(__cplusplus)
-extern "C" {
-#endif
-
-typedef void (*MimeErrorHandler)(char *);
-
-extern DLLEXPORT(void) registerMimeErrorHandler(MimeErrorHandler);
-
-extern DLLEXPORT(VObject*) Parse_MIME(const char *input, unsigned long len);
-extern DLLEXPORT(VObject*) Parse_MIME_FromFileName(char* fname);
-
-
-/* NOTE regarding Parse_MIME_FromFile
-The function above, Parse_MIME_FromFile, comes in two flavors,
-neither of which is exported from the DLL. Each version takes
-a CFile or FILE* as a parameter, neither of which can be
-passed across a DLL interface (at least that is my experience).
-If you are linking this code into your build directly then
-you may find them a more convenient API that the other flavors
-that take a file name. If you use them with the DLL LIB you
-will get a link error.
-*/
-
-
-#if INCLUDEMFC
-extern VObject* Parse_MIME_FromFile(CFile *file);
-#else
-extern VObject* Parse_MIME_FromFile(FILE *file);
-#endif
-
-#if defined(__CPLUSPLUS__) || defined(__cplusplus)
-}
-#endif
-
-#endif /* __VCC_H__ */
-
diff --git a/libversit/vcc.y b/libversit/vcc.y
deleted file mode 100644
index 5c093c8044..0000000000
--- a/libversit/vcc.y
+++ /dev/null
@@ -1,1262 +0,0 @@
-%{
-
-/***************************************************************************
-(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International
-Business Machines Corporation and Siemens Rolm Communications Inc.
-
-For purposes of this license notice, the term Licensors shall mean,
-collectively, Apple Computer, Inc., AT&T Corp., International
-Business Machines Corporation and Siemens Rolm Communications Inc.
-The term Licensor shall mean any of the Licensors.
-
-Subject to acceptance of the following conditions, permission is hereby
-granted by Licensors without the need for written agreement and without
-license or royalty fees, to use, copy, modify and distribute this
-software for any purpose.
-
-The above copyright notice and the following four paragraphs must be
-reproduced in all copies of this software and any software including
-this software.
-
-THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE
-ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR
-MODIFICATIONS.
-
-IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT,
-INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT
-OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED,
-INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.
-
-The software is provided with RESTRICTED RIGHTS. Use, duplication, or
-disclosure by the government are subject to restrictions set forth in
-DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable.
-
-***************************************************************************/
-
-/*
- * src: vcc.c
- * doc: Parser for vCard and vCalendar. Note that this code is
- * generated by a yacc parser generator. Generally it should not
- * be edited by hand. The real source is vcc.y. The #line directives
- * can be commented out here to make it easier to trace through
- * in a debugger. However, if a bug is found it should
- * be fixed in vcc.y and this file regenerated.
- */
-
-
-/* debugging utilities */
-#if __DEBUG
-#define DBG_(x) printf x
-#else
-#define DBG_(x)
-#endif
-
-/**** External Functions ****/
-
-/* assign local name to parser variables and functions so that
- we can use more than one yacc based parser.
-*/
-
-#define yyparse mime_parse
-#define yylex mime_lex
-#define yyerror mime_error
-#define yychar mime_char
-/* #define p_yyval p_mime_val */
-#undef yyval
-#define yyval mime_yyval
-/* #define p_yylval p_mime_lval */
-#undef yylval
-#define yylval mime_yylval
-#define yydebug mime_debug
-#define yynerrs mime_nerrs
-#define yyerrflag mime_errflag
-#define yyss mime_ss
-#define yyssp mime_ssp
-#define yyvs mime_vs
-#define yyvsp mime_vsp
-#define yylhs mime_lhs
-#define yylen mime_len
-#define yydefred mime_defred
-#define yydgoto mime_dgoto
-#define yysindex mime_sindex
-#define yyrindex mime_rindex
-#define yygindex mime_gindex
-#define yytable mime_table
-#define yycheck mime_check
-#define yyname mime_name
-#define yyrule mime_rule
-#define YYPREFIX "mime_"
-
-
-#ifndef _NO_LINE_FOLDING
-#define _SUPPORT_LINE_FOLDING 1
-#endif
-
-/* undef below if compile with MFC */
-/* #define INCLUDEMFC 1 */
-
-#if defined(WIN32) || defined(_WIN32)
-#ifdef INCLUDEMFC
-#include <afx.h>
-#endif
-#endif
-
-#include <string.h>
-#ifndef __MWERKS__
-#include <malloc.h>
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#include <ctype.h>
-#include "vcc.h"
-
-static int yylex(void);
-static void yyerror(char *s);
-
-/**** Types, Constants ****/
-
-#define YYDEBUG 1 /* 1 to compile in some debugging code */
-#define MAXTOKEN 256 /* maximum token (line) length */
-#define YYSTACKSIZE 50 /* ~unref ? */
-#define MAXLEVEL 10 /* max # of nested objects parseable */
- /* (includes outermost) */
-
-
-/**** Global Variables ****/
-int mime_lineNum, mime_numErrors; /* yyerror() can use these */
-static VObject* vObjList;
-static VObject *curProp;
-static VObject *curObj;
-static VObject* ObjStack[MAXLEVEL];
-static int ObjStackTop;
-
-
-/* A helpful utility for the rest of the app. */
-#if __CPLUSPLUS__
-extern "C" {
-#endif
-
- extern void Parse_Debug(const char *s);
- extern void yyerror(char *s);
-
-#if __CPLUSPLUS__
- };
-#endif
-
-int yyparse(void);
-
-enum LexMode {
- L_NORMAL,
- L_VCARD,
- L_VCAL,
- L_VEVENT,
- L_VTODO,
- L_VALUES,
- L_BASE64,
- L_QUOTED_PRINTABLE
- };
-
-/**** Private Forward Declarations ****/
-static int pushVObject(const char *prop);
-static VObject* popVObject(void);
-#ifndef _SUPPORT_LINE_FOLDING
-static char* lexDataFromBase64(void);
-#endif
-static void lexPopMode(int top);
-static int lexWithinMode(enum LexMode mode);
-static void lexPushMode(enum LexMode mode);
-static void enterProps(const char *s);
-static void enterAttr(const char *s1, const char *s2);
-#if 0
-static void enterValues(const char *value);
-#endif
-static void mime_error_(char *s);
- static void appendValue(const char *value);
-
-%}
-
-/***************************************************************************/
-/*** The grammar ****/
-/***************************************************************************/
-
-%union {
- char *str;
- VObject *vobj;
- }
-
-%token
- EQ COLON DOT SEMICOLON SPACE HTAB LINESEP NEWLINE
- BEGIN_VCARD END_VCARD BEGIN_VCAL END_VCAL
- BEGIN_VEVENT END_VEVENT BEGIN_VTODO END_VTODO
- ID
-
-/*
- * NEWLINE is the token that would occur outside a vCard,
- * while LINESEP is the token that would occur inside a vCard.
- */
-
-%token <str>
- STRING ID
-
-%type <str> name value
-
-%type <vobj> vcard vcal vobject
-
-%start mime
-
-%%
-
-
-mime: vobjects
- ;
-
-vobjects: vobject
- { addList(&vObjList, $1); curObj = 0; }
- vobjects
- | vobject
- { addList(&vObjList, $1); curObj = 0; }
- ;
-
-vobject: vcard
- | vcal
- ;
-
-vcard:
- BEGIN_VCARD
- {
- lexPushMode(L_VCARD);
- if (!pushVObject(VCCardProp)) YYERROR;
- }
- items END_VCARD
- {
- lexPopMode(0);
- $$ = popVObject();
- }
- | BEGIN_VCARD
- {
- lexPushMode(L_VCARD);
- if (!pushVObject(VCCardProp)) YYERROR;
- }
- END_VCARD
- {
- lexPopMode(0);
- $$ = popVObject();
- }
- ;
-
-items: item items
- | item
- ;
-
-item: prop COLON
- {
- lexPushMode(L_VALUES);
- }
- values LINESEP
- {
- if (lexWithinMode(L_BASE64) || lexWithinMode(L_QUOTED_PRINTABLE))
- lexPopMode(0);
- lexPopMode(0);
- }
- | error
- ;
-
-prop: name
- {
- enterProps($1);
- }
- attr_params
- | name
- {
- enterProps($1);
- }
- ;
-
-attr_params: attr_param attr_params
- | attr_param
- ;
-
-attr_param: SEMICOLON attr
- ;
-
-attr: name
- {
- enterAttr($1,0);
- }
- | name EQ name
- {
- enterAttr($1,$3);
-
- }
- ;
-
-name: ID
- ;
-
-values: value SEMICOLON { appendValue($1); } values
- | value
- { appendValue($1); }
- ;
-
-value: STRING
- | { $$ = 0; }
- ;
-
-vcal:
- BEGIN_VCAL
- { if (!pushVObject(VCCalProp)) YYERROR; }
- calitems
- END_VCAL
- { $$ = popVObject(); }
- | BEGIN_VCAL
- { if (!pushVObject(VCCalProp)) YYERROR; }
- END_VCAL
- { $$ = popVObject(); }
- ;
-
-calitems: calitem calitems
- | calitem
- ;
-
-calitem:
- eventitem
- | todoitem
- | items
- ;
-
-eventitem:
- BEGIN_VEVENT
- {
- lexPushMode(L_VEVENT);
- if (!pushVObject(VCEventProp)) YYERROR;
- }
- items
- END_VEVENT
- {
- lexPopMode(0);
- popVObject();
- }
- | BEGIN_VEVENT
- {
- lexPushMode(L_VEVENT);
- if (!pushVObject(VCEventProp)) YYERROR;
- }
- END_VEVENT
- {
- lexPopMode(0);
- popVObject();
- }
- ;
-
-todoitem:
- BEGIN_VTODO
- {
- lexPushMode(L_VTODO);
- if (!pushVObject(VCTodoProp)) YYERROR;
- }
- items
- END_VTODO
- {
- lexPopMode(0);
- popVObject();
- }
- | BEGIN_VTODO
- {
- lexPushMode(L_VTODO);
- if (!pushVObject(VCTodoProp)) YYERROR;
- }
- END_VTODO
- {
- lexPopMode(0);
- popVObject();
- }
- ;
-
-%%
-/* ///////////////////////////////////////////////////////////////////////// */
-static int pushVObject(const char *prop)
- {
- VObject *newObj;
- if (ObjStackTop == MAXLEVEL)
- return FALSE;
-
- ObjStack[++ObjStackTop] = curObj;
-
- if (curObj) {
- newObj = addProp(curObj,prop);
- curObj = newObj;
- }
- else
- curObj = newVObject(prop);
-
- return TRUE;
- }
-
-
-/* ///////////////////////////////////////////////////////////////////////// */
-/* This pops the recently built vCard off the stack and returns it. */
-static VObject* popVObject()
- {
- VObject *oldObj;
- if (ObjStackTop < 0) {
- yyerror("pop on empty Object Stack\n");
- return 0;
- }
- oldObj = curObj;
- curObj = ObjStack[ObjStackTop--];
-
- return oldObj;
- }
-
-static void appendValue(const char *value)
-{
- char *p1, *p2;
- wchar_t *p3;
- int i;
-
- if (fieldedProp && *fieldedProp) {
- if (value) {
- addPropValue(curProp, *fieldedProp, value);
- }
- /* else this field is empty, advance to next field */
- fieldedProp++;
- } else {
- if (value) {
- if (vObjectUStringZValue(curProp)) {
- p1 = fakeCString(vObjectUStringZValue(curProp));
- p2 = malloc(sizeof(char *) * (strlen(p1)+strlen(value)+1));
- strcpy(p2, p1);
- deleteStr(p1);
-
- i = strlen(p2);
- p2[i] = ';';
- p2[i+1] = '\0';
- p2 = strcat(p2, value);
- p3 = (wchar_t *) vObjectUStringZValue(curProp);
- free(p3);
- setVObjectUStringZValue_(curProp,fakeUnicode(p2,0));
- deleteStr(p2);
- } else {
- setVObjectUStringZValue_(curProp,fakeUnicode(value,0));
- }
- }
- }
- deleteStr(value);
-}
-
-#if 0
-static void enterValues(const char *value)
- {
- if (fieldedProp && *fieldedProp) {
- if (value) {
- addPropValue(curProp,*fieldedProp,value);
- }
- /* else this field is empty, advance to next field */
- fieldedProp++;
- }
- else {
- if (value) {
- setVObjectUStringZValue_(curProp,fakeUnicode(value,0));
- }
- }
- deleteStr(value);
- }
-#endif
-
-static void enterProps(const char *s)
- {
- curProp = addGroup(curObj,s);
- deleteStr(s);
- }
-
-static void enterAttr(const char *s1, const char *s2)
- {
- const char *p1, *p2 = NULL;
- p1 = lookupProp_(s1);
- if (s2) {
- VObject *a;
- p2 = lookupProp_(s2);
- a = addProp(curProp,p1);
- setVObjectStringZValue(a,p2);
- }
- else
- addProp(curProp,p1);
- if (stricmp(p1,VCBase64Prop) == 0 || (s2 && stricmp(p2,VCBase64Prop)==0))
- lexPushMode(L_BASE64);
- else if (stricmp(p1,VCQuotedPrintableProp) == 0
- || (s2 && stricmp(p2,VCQuotedPrintableProp)==0))
- lexPushMode(L_QUOTED_PRINTABLE);
- deleteStr(s1); deleteStr(s2);
- }
-
-
-#define MAX_LEX_LOOKAHEAD_0 32
-#define MAX_LEX_LOOKAHEAD 64
-#define MAX_LEX_MODE_STACK_SIZE 10
-#define LEXMODE() (lexBuf.lexModeStack[lexBuf.lexModeStackTop])
-
-struct LexBuf {
- /* input */
-#ifdef INCLUDEMFC
- CFile *inputFile;
-#else
- FILE *inputFile;
-#endif
- char *inputString;
- unsigned long curPos;
- unsigned long inputLen;
- /* lookahead buffer */
- /* -- lookahead buffer is short instead of char so that EOF
- / can be represented correctly.
- */
- unsigned long len;
- short buf[MAX_LEX_LOOKAHEAD];
- unsigned long getPtr;
- /* context stack */
- unsigned long lexModeStackTop;
- enum LexMode lexModeStack[MAX_LEX_MODE_STACK_SIZE];
- /* token buffer */
- unsigned long maxToken;
- char *strs;
- unsigned long strsLen;
- } lexBuf;
-
-static void lexPushMode(enum LexMode mode)
- {
- if (lexBuf.lexModeStackTop == (MAX_LEX_MODE_STACK_SIZE-1))
- yyerror("lexical context stack overflow");
- else {
- lexBuf.lexModeStack[++lexBuf.lexModeStackTop] = mode;
- }
- }
-
-static void lexPopMode(int top)
- {
- /* special case of pop for ease of error recovery -- this
- version will never underflow */
- if (top)
- lexBuf.lexModeStackTop = 0;
- else
- if (lexBuf.lexModeStackTop > 0) lexBuf.lexModeStackTop--;
- }
-
-static int lexWithinMode(enum LexMode mode) {
- unsigned long i;
- for (i=0;i<lexBuf.lexModeStackTop;i++)
- if (mode == lexBuf.lexModeStack[i]) return 1;
- return 0;
- }
-
-static int lexGetc_()
- {
- /* get next char from input, no buffering. */
- if (lexBuf.curPos == lexBuf.inputLen)
- return EOF;
- else if (lexBuf.inputString)
- return *(lexBuf.inputString + lexBuf.curPos++);
- else {
-#ifdef INCLUDEMFC
- char result;
- return lexBuf.inputFile->Read(&result, 1) == 1 ? result : EOF;
-#else
- return fgetc(lexBuf.inputFile);
-#endif
- }
- }
-
-static int lexGeta()
- {
- ++lexBuf.len;
- return (lexBuf.buf[lexBuf.getPtr] = lexGetc_());
- }
-
-static int lexGeta_(int i)
- {
- ++lexBuf.len;
- return (lexBuf.buf[(lexBuf.getPtr+i)%MAX_LEX_LOOKAHEAD] = lexGetc_());
- }
-
-static void lexSkipLookahead() {
- if (lexBuf.len > 0 && lexBuf.buf[lexBuf.getPtr]!=EOF) {
- /* don't skip EOF. */
- lexBuf.getPtr = (lexBuf.getPtr + 1) % MAX_LEX_LOOKAHEAD;
- lexBuf.len--;
- }
- }
-
-static int lexLookahead() {
- int c = (lexBuf.len)?
- lexBuf.buf[lexBuf.getPtr]:
- lexGeta();
- /* do the \r\n -> \n or \r -> \n translation here */
- if (c == '\r') {
- int a = (lexBuf.len>1)?
- lexBuf.buf[(lexBuf.getPtr+1)%MAX_LEX_LOOKAHEAD]:
- lexGeta_(1);
- if (a == '\n') {
- lexSkipLookahead();
- }
- lexBuf.buf[lexBuf.getPtr] = c = '\n';
- }
- else if (c == '\n') {
- int a = (lexBuf.len>1)?
- lexBuf.buf[lexBuf.getPtr+1]:
- lexGeta_(1);
- if (a == '\r') {
- lexSkipLookahead();
- }
- lexBuf.buf[lexBuf.getPtr] = '\n';
- }
- return c;
- }
-
-static int lexGetc() {
- int c = lexLookahead();
- if (lexBuf.len > 0 && lexBuf.buf[lexBuf.getPtr]!=EOF) {
- /* EOF will remain in lookahead buffer */
- lexBuf.getPtr = (lexBuf.getPtr + 1) % MAX_LEX_LOOKAHEAD;
- lexBuf.len--;
- }
- return c;
- }
-
-static void lexSkipLookaheadWord() {
- if (lexBuf.strsLen <= lexBuf.len) {
- lexBuf.len -= lexBuf.strsLen;
- lexBuf.getPtr = (lexBuf.getPtr + lexBuf.strsLen) % MAX_LEX_LOOKAHEAD;
- }
- }
-
-static void lexClearToken()
- {
- lexBuf.strsLen = 0;
- }
-
-static void lexAppendc(int c)
- {
- lexBuf.strs[lexBuf.strsLen] = c;
- /* append up to zero termination */
- if (c == 0) return;
- lexBuf.strsLen++;
- if (lexBuf.strsLen >= lexBuf.maxToken) {
- /* double the token string size */
- lexBuf.maxToken <<= 1;
- lexBuf.strs = (char*) realloc(lexBuf.strs,(size_t)lexBuf.maxToken);
- }
- }
-
-static char* lexStr() {
- return dupStr(lexBuf.strs,(size_t)lexBuf.strsLen+1);
- }
-
-static void lexSkipWhite() {
- int c = lexLookahead();
- while (c == ' ' || c == '\t') {
- lexSkipLookahead();
- c = lexLookahead();
- }
- }
-
-static char* lexGetWord() {
- int c;
- lexSkipWhite();
- lexClearToken();
- c = lexLookahead();
- while (c != EOF && !strchr("\t\n ;:=",c)) {
- lexAppendc(c);
- lexSkipLookahead();
- c = lexLookahead();
- }
- lexAppendc(0);
- return lexStr();
- }
-
-#if 0
-static void lexPushLookahead(char *s, int len) {
- int putptr;
- if (len == 0) len = strlen(s);
- putptr = (int)lexBuf.getPtr - len;
- /* this function assumes that length of word to push back
- / is not greater than MAX_LEX_LOOKAHEAD.
- */
- if (putptr < 0) putptr += MAX_LEX_LOOKAHEAD;
- lexBuf.getPtr = putptr;
- while (*s) {
- lexBuf.buf[putptr] = *s++;
- putptr = (putptr + 1) % MAX_LEX_LOOKAHEAD;
- }
- lexBuf.len += len;
- }
-#endif
-
-static void lexPushLookaheadc(int c) {
- int putptr;
- /* can't putback EOF, because it never leaves lookahead buffer */
- if (c == EOF) return;
- putptr = (int)lexBuf.getPtr - 1;
- if (putptr < 0) putptr += MAX_LEX_LOOKAHEAD;
- lexBuf.getPtr = putptr;
- lexBuf.buf[putptr] = c;
- lexBuf.len += 1;
- }
-
-static char* lexLookaheadWord() {
- /* this function can lookahead word with max size of MAX_LEX_LOOKAHEAD_0
- / and thing bigger than that will stop the lookahead and return 0;
- / leading white spaces are not recoverable.
- */
- int c;
- int len = 0;
- int curgetptr = 0;
- lexSkipWhite();
- lexClearToken();
- curgetptr = (int)lexBuf.getPtr; /* remember! */
- while (len < (MAX_LEX_LOOKAHEAD_0)) {
- c = lexGetc();
- len++;
- if (c == EOF || strchr("\t\n ;:=", c)) {
- lexAppendc(0);
- /* restore lookahead buf. */
- lexBuf.len += len;
- lexBuf.getPtr = curgetptr;
- return lexStr();
- }
- else
- lexAppendc(c);
- }
- lexBuf.len += len; /* char that has been moved to lookahead buffer */
- lexBuf.getPtr = curgetptr;
- return 0;
- }
-
-#ifdef _SUPPORT_LINE_FOLDING
-static void handleMoreRFC822LineBreak(int c) {
- /* suport RFC 822 line break in cases like
- * ADR: foo;
- * morefoo;
- * more foo;
- */
- if (c == ';') {
- int a;
- lexSkipLookahead();
- /* skip white spaces */
- a = lexLookahead();
- while (a == ' ' || a == '\t') {
- lexSkipLookahead();
- a = lexLookahead();
- }
- if (a == '\n') {
- lexSkipLookahead();
- a = lexLookahead();
- if (a == ' ' || a == '\t') {
- /* continuation, throw away all the \n and spaces read so
- * far
- */
- lexSkipWhite();
- lexPushLookaheadc(';');
- }
- else {
- lexPushLookaheadc('\n');
- lexPushLookaheadc(';');
- }
- }
- else {
- lexPushLookaheadc(';');
- }
- }
- }
-
-static char* lexGet1Value() {
- int c;
- lexSkipWhite();
- c = lexLookahead();
- lexClearToken();
- while (c != EOF && c != ';') {
- if (c == '\n') {
- int a;
- lexSkipLookahead();
- a = lexLookahead();
- if (a == ' ' || a == '\t') {
- lexAppendc(' ');
- lexSkipLookahead();
- }
- else {
- lexPushLookaheadc('\n');
- break;
- }
- }
- else {
- lexAppendc(c);
- lexSkipLookahead();
- }
- c = lexLookahead();
- }
- lexAppendc(0);
- handleMoreRFC822LineBreak(c);
- return c==EOF?0:lexStr();
- }
-#endif
-
-#ifndef _SUPPORT_LINE_FOLDING
-static char* lexGetStrUntil(char *termset) {
- int c = lexLookahead();
- lexClearToken();
- while (c != EOF && !strchr(termset,c)) {
- lexAppendc(c);
- lexSkipLookahead();
- c = lexLookahead();
- }
- lexAppendc(0);
- return c==EOF?0:lexStr();
- }
-#endif
-
-static int match_begin_name(int end) {
- char *n = lexLookaheadWord();
- int token = ID;
- if (n) {
- if (!stricmp(n,"vcard")) token = end?END_VCARD:BEGIN_VCARD;
- else if (!stricmp(n,"vcalendar")) token = end?END_VCAL:BEGIN_VCAL;
- else if (!stricmp(n,"vevent")) token = end?END_VEVENT:BEGIN_VEVENT;
- else if (!stricmp(n,"vtodo")) token = end?END_VTODO:BEGIN_VTODO;
- deleteStr(n);
- return token;
- }
- return 0;
- }
-
-
-#ifdef INCLUDEMFC
-static void initLex(const char *inputstring, unsigned long inputlen, CFile *inputfile)
-#else
-static void initLex(const char *inputstring, unsigned long inputlen, FILE *inputfile)
-#endif
- {
- /* initialize lex mode stack */
- lexBuf.lexModeStack[lexBuf.lexModeStackTop=0] = L_NORMAL;
-
- /* iniatialize lex buffer. */
- lexBuf.inputString = (char*) inputstring;
- lexBuf.inputLen = inputlen;
- lexBuf.curPos = 0;
- lexBuf.inputFile = inputfile;
-
- lexBuf.len = 0;
- lexBuf.getPtr = 0;
-
- lexBuf.maxToken = MAXTOKEN;
- lexBuf.strs = (char*)malloc(MAXTOKEN);
- lexBuf.strsLen = 0;
-
- }
-
-static void finiLex() {
- free(lexBuf.strs);
- }
-
-
-/* ///////////////////////////////////////////////////////////////////////// */
-/* This parses and converts the base64 format for binary encoding into
- * a decoded buffer (allocated with new). See RFC 1521.
- */
-static char * lexGetDataFromBase64()
- {
- unsigned long bytesLen = 0, bytesMax = 0;
- int quadIx = 0, pad = 0;
- unsigned long trip = 0;
- unsigned char b;
- int c;
- unsigned char *bytes = NULL;
- unsigned char *oldBytes = NULL;
-
- DBG_(("db: lexGetDataFromBase64\n"));
- while (1) {
- c = lexGetc();
- if (c == '\n') {
- ++mime_lineNum;
- if (lexLookahead() == '\n') {
- /* a '\n' character by itself means end of data */
- break;
- }
- else continue; /* ignore '\n' */
- }
- else {
- if ((c >= 'A') && (c <= 'Z'))
- b = (unsigned char)(c - 'A');
- else if ((c >= 'a') && (c <= 'z'))
- b = (unsigned char)(c - 'a') + 26;
- else if ((c >= '0') && (c <= '9'))
- b = (unsigned char)(c - '0') + 52;
- else if (c == '+')
- b = 62;
- else if (c == '/')
- b = 63;
- else if (c == '=') {
- b = 0;
- pad++;
- } else if ((c == ' ') || (c == '\t')) {
- continue;
- } else { /* error condition */
- if (bytes) free(bytes);
- else if (oldBytes) free(oldBytes);
- /* error recovery: skip until 2 adjacent newlines. */
- DBG_(("db: invalid character 0x%x '%c'\n", c,c));
- if (c != EOF) {
- c = lexGetc();
- while (c != EOF) {
- if (c == '\n' && lexLookahead() == '\n') {
- ++mime_lineNum;
- break;
- }
- c = lexGetc();
- }
- }
- return NULL;
- }
- trip = (trip << 6) | b;
- if (++quadIx == 4) {
- unsigned char outBytes[3];
- int numOut;
- int i;
- for (i = 0; i < 3; i++) {
- outBytes[2-i] = (unsigned char)(trip & 0xFF);
- trip >>= 8;
- }
- numOut = 3 - pad;
- if (bytesLen + numOut > bytesMax) {
- if (!bytes) {
- bytesMax = 1024;
- bytes = (unsigned char*)malloc((size_t)bytesMax);
- }
- else {
- bytesMax <<= 2;
- oldBytes = bytes;
- bytes = (unsigned char*)realloc(bytes,(size_t)bytesMax);
- }
- if (bytes == 0) {
- mime_error("out of memory while processing BASE64 data\n");
- }
- }
- if (bytes) {
- memcpy(bytes + bytesLen, outBytes, numOut);
- bytesLen += numOut;
- }
- trip = 0;
- quadIx = 0;
- }
- }
- } /* while */
- DBG_(("db: bytesLen = %d\n", bytesLen));
- /* kludge: all this won't be necessary if we have tree form
- representation */
- if (bytes) {
- setValueWithSize(curProp,bytes,(unsigned int)bytesLen);
- free(bytes);
- }
- else if (oldBytes) {
- setValueWithSize(curProp,oldBytes,(unsigned int)bytesLen);
- free(oldBytes);
- }
- return 0;
- }
-
-static int match_begin_end_name(int end) {
- int token;
- lexSkipWhite();
- if (lexLookahead() != ':') return ID;
- lexSkipLookahead();
- lexSkipWhite();
- token = match_begin_name(end);
- if (token == ID) {
- lexPushLookaheadc(':');
- DBG_(("db: ID '%s'\n", yylval.str));
- return ID;
- }
- else if (token != 0) {
- lexSkipLookaheadWord();
- deleteStr(yylval.str);
- DBG_(("db: begin/end %d\n", token));
- return token;
- }
- return 0;
- }
-
-static char* lexGetQuotedPrintable()
- {
- char cur;
-
- lexClearToken();
- do {
- cur = lexGetc();
- switch (cur) {
- case '=': {
- int c = 0;
- int next[2];
- int i;
- for (i = 0; i < 2; i++) {
- next[i] = lexGetc();
- if (next[i] >= '0' && next[i] <= '9')
- c = c * 16 + next[i] - '0';
- else if (next[i] >= 'A' && next[i] <= 'F')
- c = c * 16 + next[i] - 'A' + 10;
- else
- break;
- }
- if (i == 0) {
- /* single '=' follow by LINESEP is continuation sign? */
- if (next[0] == '\n') {
- ++mime_lineNum;
- }
- else {
- lexPushLookaheadc('=');
- goto EndString;
- }
- }
- else if (i == 1) {
- lexPushLookaheadc(next[1]);
- lexPushLookaheadc(next[0]);
- lexAppendc('=');
- } else {
- lexAppendc(c);
- }
- break;
- } /* '=' */
- case '\n':
- case ';':
- {
- lexPushLookaheadc(cur);
- goto EndString;
- }
- case (char)EOF:
- break;
- default:
- lexAppendc(cur);
- break;
- } /* switch */
- } while (cur != (char)EOF);
-
-EndString:
- lexAppendc(0);
- return lexStr();
- } /* LexQuotedPrintable */
-
-static int yylex() {
- int lexmode = LEXMODE();
- if (lexmode == L_VALUES) {
- int c = lexGetc();
- if (c == ';') {
- DBG_(("db: SEMICOLON\n"));
- lexPushLookaheadc(c);
-#ifdef _SUPPORT_LINE_FOLDING
- handleMoreRFC822LineBreak(c);
-#endif
- lexSkipLookahead();
- return SEMICOLON;
- }
- else if (strchr("\n",c)) {
- ++mime_lineNum;
- /* consume all line separator(s) adjacent to each other */
- c = lexLookahead();
- while (strchr("\n",c)) {
- lexSkipLookahead();
- c = lexLookahead();
- ++mime_lineNum;
- }
- DBG_(("db: LINESEP\n"));
- return LINESEP;
- }
- else {
- char *p = 0;
- lexPushLookaheadc(c);
- if (lexWithinMode(L_BASE64)) {
- /* get each char and convert to bin on the fly... */
- p = lexGetDataFromBase64();
- yylval.str = p;
- return STRING;
- }
- else if (lexWithinMode(L_QUOTED_PRINTABLE)) {
- p = lexGetQuotedPrintable();
- }
- else {
-#ifdef _SUPPORT_LINE_FOLDING
- p = lexGet1Value();
-#else
- p = lexGetStrUntil(";\n");
-#endif
- }
- if (p) {
- DBG_(("db: STRING: '%s'\n", p));
- yylval.str = p;
- return STRING;
- }
- else return 0;
- }
- }
- else {
- /* normal mode */
- while (1) {
- int c = lexGetc();
- switch(c) {
- case ':': {
- /* consume all line separator(s) adjacent to each other */
- /* ignoring linesep immediately after colon. */
-/* c = lexLookahead();
- while (strchr("\n",c)) {
- lexSkipLookahead();
- c = lexLookahead();
- ++mime_lineNum;
- }*/
- DBG_(("db: COLON\n"));
- return COLON;
- }
- case ';':
- DBG_(("db: SEMICOLON\n"));
- return SEMICOLON;
- case '=':
- DBG_(("db: EQ\n"));
- return EQ;
- /* ignore whitespace in this mode */
- case '\t':
- case ' ': continue;
- case '\n': {
- ++mime_lineNum;
- continue;
- }
- case EOF: return 0;
- break;
- default: {
- lexPushLookaheadc(c);
- if (isalpha(c)) {
- char *t = lexGetWord();
- yylval.str = t;
- if (!stricmp(t, "begin")) {
- return match_begin_end_name(0);
- }
- else if (!stricmp(t,"end")) {
- return match_begin_end_name(1);
- }
- else {
- DBG_(("db: ID '%s'\n", t));
- return ID;
- }
- }
- else {
- /* unknow token */
- return 0;
- }
- break;
- }
- }
- }
- }
- return 0;
- }
-
-
-/***************************************************************************/
-/*** Public Functions ****/
-/***************************************************************************/
-
-static VObject* Parse_MIMEHelper()
- {
- ObjStackTop = -1;
- mime_numErrors = 0;
- mime_lineNum = 1;
- vObjList = 0;
- curObj = 0;
-
- if (yyparse() != 0) {
- finiLex();
- return 0;
- }
-
- finiLex();
- return vObjList;
- }
-
-/* ///////////////////////////////////////////////////////////////////////// */
-DLLEXPORT(VObject*) Parse_MIME(const char *input, unsigned long len)
- {
- initLex(input, len, 0);
- return Parse_MIMEHelper();
- }
-
-
-#if INCLUDEMFC
-
-DLLEXPORT(VObject*) Parse_MIME_FromFile(CFile *file)
- {
- unsigned long startPos;
- VObject *result;
-
- initLex(0,-1,file);
- startPos = file->GetPosition();
- if (!(result = Parse_MIMEHelper()))
- file->Seek(startPos, CFile::begin);
- return result;
- }
-
-#else
-
-VObject* Parse_MIME_FromFile(FILE *file)
- {
- VObject *result;
- long startPos;
-
- initLex(0,(unsigned long)-1,file);
- startPos = ftell(file);
- if (!(result = Parse_MIMEHelper())) {
- fseek(file,startPos,SEEK_SET);
- }
- return result;
- }
-
-DLLEXPORT(VObject*) Parse_MIME_FromFileName(char *fname)
- {
- FILE *fp = fopen(fname,"r");
- if (fp) {
- VObject* o = Parse_MIME_FromFile(fp);
- fclose(fp);
- return o;
- }
- else {
- char msg[256];
- snprintf(msg, sizeof(msg), "can't open file '%s' for reading\n", fname);
- mime_error_(msg);
- return 0;
- }
- }
-
-#endif
-
-/* ///////////////////////////////////////////////////////////////////////// */
-
-static MimeErrorHandler mimeErrorHandler;
-
-DLLEXPORT(void) registerMimeErrorHandler(MimeErrorHandler me)
- {
- mimeErrorHandler = me;
- }
-
-static void mime_error(char *s)
- {
- char msg[256];
- if (mimeErrorHandler) {
- sprintf(msg,"%s at line %d", s, mime_lineNum);
- mimeErrorHandler(msg);
- }
- }
-
-static void mime_error_(char *s)
- {
- if (mimeErrorHandler) {
- mimeErrorHandler(s);
- }
- }
-
-
diff --git a/libversit/vctest.c b/libversit/vctest.c
deleted file mode 100644
index 7975d1e200..0000000000
--- a/libversit/vctest.c
+++ /dev/null
@@ -1,95 +0,0 @@
-
-#include <stdio.h>
-#include <string.h>
-#include "vcc.h"
-
-FILE *cfp;
-
-void myMimeErrorHandler(char *s)
-{
- printf("%s\n", s);
-}
-
-void main(int argc, char **argv)
-{
- int testmem = 0;
-
- char * foo[2] = {"foo","alden.vcf"};
-
-argc = 2;
-argv = foo;
-
-#ifdef _CONSOLE
- cfp = stdout;
- registerMimeErrorHandler(myMimeErrorHandler);
-#else
- cfp = fopen("vctest.out", "w");
- if (!cfp) return;
-#endif
- ++argv;
- while (--argc) {
- FILE *fp;
- if (strcmp(*argv,"-testmem") == 0) {
- testmem = 1;
- argv++;
- continue;
- }
- fprintf(cfp,"processing %s\n",*argv);
- fp = fopen(*argv,"r");
- if (!fp) {
- fprintf(cfp,"error opening file\n");
- }
- else {
- VObject *v, *t;
- FILE *ofp;
- char buf[256];
- char *p;
- strcpy(buf,*argv);
- p = strchr(buf,'.');
- if (p) *p = 0;
- strcat(buf,".out");
- fprintf(cfp,"reading text input from '%s'...\n", *argv);
- /*v = Parse_MIME_FromFile(fp); */
- v = Parse_MIME_FromFileName(*argv);
- writeVObjectToFile(buf,v);
- cleanVObject(v);
-
- /*
- fprintf(cfp,"pretty print internal format of '%s'...\n", *argv);
- ofp = fopen(buf,"w");
- while (v) {
- printVObject(cfp,v);
- if (testmem) {
- char *s, *p;
- fprintf(cfp,"test writing to mem...\n");
- p = s = writeMemVObject(0,0,v);
- if (s) {
- while (*s) {
- fputc(*s,ofp);
- s++;
- }
- free(p);
- }
- }
- else {
- writeVObject(ofp,v);
- }
- t = v;
- v = nextVObjectInList(v);
- cleanVObject(t);
- }
-
- fclose(ofp);
- fclose(fp);
- */
- }
-
- cleanStrTbl();
- argv++;
-
- }
-
- if (cfp != stdout) fclose(cfp);
-
-}
-
diff --git a/libversit/vobject.c b/libversit/vobject.c
deleted file mode 100644
index d685b04278..0000000000
--- a/libversit/vobject.c
+++ /dev/null
@@ -1,1452 +0,0 @@
-/***************************************************************************
-(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International
-Business Machines Corporation and Siemens Rolm Communications Inc.
-
-For purposes of this license notice, the term Licensors shall mean,
-collectively, Apple Computer, Inc., AT&T Corp., International
-Business Machines Corporation and Siemens Rolm Communications Inc.
-The term Licensor shall mean any of the Licensors.
-
-Subject to acceptance of the following conditions, permission is hereby
-granted by Licensors without the need for written agreement and without
-license or royalty fees, to use, copy, modify and distribute this
-software for any purpose.
-
-The above copyright notice and the following four paragraphs must be
-reproduced in all copies of this software and any software including
-this software.
-
-THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE
-ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR
-MODIFICATIONS.
-
-IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT,
-INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT
-OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED,
-INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.
-
-The software is provided with RESTRICTED RIGHTS. Use, duplication, or
-disclosure by the government are subject to restrictions set forth in
-DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable.
-
-***************************************************************************/
-
-/*
- * src: vobject.c
- * doc: vobject and APIs to construct vobject, APIs pretty print
- * vobject, and convert a vobject into its textual representation.
- */
-
-#ifndef MWERKS
-#include <malloc.h>
-#endif
-
-#include "vobject.h"
-#include <string.h>
-#include <stdio.h>
-#include <fcntl.h>
-
-
-#define NAME_OF(o) o->id
-#define VALUE_TYPE(o) o->valType
-#define STRINGZ_VALUE_OF(o) o->val.strs
-#define USTRINGZ_VALUE_OF(o) o->val.ustrs
-#define INTEGER_VALUE_OF(o) o->val.i
-#define LONG_VALUE_OF(o) o->val.l
-#define ANY_VALUE_OF(o) o->val.any
-#define VOBJECT_VALUE_OF(o) o->val.vobj
-
-typedef union ValueItem {
- const char *strs;
- const wchar_t *ustrs;
- unsigned int i;
- unsigned long l;
- void *any;
- VObject *vobj;
- } ValueItem;
-
-struct VObject {
- VObject *next;
- const char *id;
- VObject *prop;
- unsigned short valType;
- ValueItem val;
- };
-
-typedef struct StrItem StrItem;
-
-struct StrItem {
- StrItem *next;
- const char *s;
- unsigned int refCnt;
- };
-
-const char** fieldedProp;
-
-
-
-/*----------------------------------------------------------------------
- The following functions involve with memory allocation:
- newVObject
- deleteVObject
- dupStr
- deleteStr
- newStrItem
- deleteStrItem
- ----------------------------------------------------------------------*/
-
-DLLEXPORT(VObject*) newVObject_(const char *id)
-{
- VObject *p = (VObject*)malloc(sizeof(VObject));
- p->next = 0;
- p->id = id;
- p->prop = 0;
- VALUE_TYPE(p) = 0;
- ANY_VALUE_OF(p) = 0;
- return p;
-}
-
-DLLEXPORT(VObject*) newVObject(const char *id)
-{
- return newVObject_(lookupStr(id));
-}
-
-DLLEXPORT(void) deleteVObject(VObject *p)
-{
- unUseStr(p->id);
- free(p);
-}
-
-DLLEXPORT(char*) dupStr(const char *s, unsigned int size)
-{
- char *t;
- if (size == 0) {
- size = strlen(s);
- }
- t = (char*)malloc(size+1);
- if (t) {
- memcpy(t,s,size);
- t[size] = 0;
- return t;
- }
- else {
- return (char*)0;
- }
-}
-
-DLLEXPORT(void) deleteStr(const char *p)
-{
- if (p) free((void*)p);
-}
-
-
-static StrItem* newStrItem(const char *s, StrItem *next)
-{
- StrItem *p = (StrItem*)malloc(sizeof(StrItem));
- p->next = next;
- p->s = s;
- p->refCnt = 1;
- return p;
-}
-
-static void deleteStrItem(StrItem *p)
-{
- free((void*)p);
-}
-
-
-/*----------------------------------------------------------------------
- The following function provide accesses to VObject's value.
- ----------------------------------------------------------------------*/
-
-DLLEXPORT(const char*) vObjectName(VObject *o)
-{
- return NAME_OF(o);
-}
-
-DLLEXPORT(void) setVObjectName(VObject *o, const char* id)
-{
- NAME_OF(o) = id;
-}
-
-DLLEXPORT(const char*) vObjectStringZValue(VObject *o)
-{
- return STRINGZ_VALUE_OF(o);
-}
-
-DLLEXPORT(void) setVObjectStringZValue(VObject *o, const char *s)
-{
- STRINGZ_VALUE_OF(o) = dupStr(s,0);
- VALUE_TYPE(o) = VCVT_STRINGZ;
-}
-
-DLLEXPORT(void) setVObjectStringZValue_(VObject *o, const char *s)
-{
- STRINGZ_VALUE_OF(o) = s;
- VALUE_TYPE(o) = VCVT_STRINGZ;
-}
-
-DLLEXPORT(const wchar_t*) vObjectUStringZValue(VObject *o)
-{
- return USTRINGZ_VALUE_OF(o);
-}
-
-DLLEXPORT(void) setVObjectUStringZValue(VObject *o, const wchar_t *s)
-{
- USTRINGZ_VALUE_OF(o) = (wchar_t*) dupStr((char*)s,(uStrLen(s)+1)*2);
- VALUE_TYPE(o) = VCVT_USTRINGZ;
-}
-
-DLLEXPORT(void) setVObjectUStringZValue_(VObject *o, const wchar_t *s)
-{
- USTRINGZ_VALUE_OF(o) = s;
- VALUE_TYPE(o) = VCVT_USTRINGZ;
-}
-
-DLLEXPORT(unsigned int) vObjectIntegerValue(VObject *o)
-{
- return INTEGER_VALUE_OF(o);
-}
-
-DLLEXPORT(void) setVObjectIntegerValue(VObject *o, unsigned int i)
-{
- INTEGER_VALUE_OF(o) = i;
- VALUE_TYPE(o) = VCVT_UINT;
-}
-
-DLLEXPORT(unsigned long) vObjectLongValue(VObject *o)
-{
- return LONG_VALUE_OF(o);
-}
-
-DLLEXPORT(void) setVObjectLongValue(VObject *o, unsigned long l)
-{
- LONG_VALUE_OF(o) = l;
- VALUE_TYPE(o) = VCVT_ULONG;
-}
-
-DLLEXPORT(void*) vObjectAnyValue(VObject *o)
-{
- return ANY_VALUE_OF(o);
-}
-
-DLLEXPORT(void) setVObjectAnyValue(VObject *o, void *t)
-{
- ANY_VALUE_OF(o) = t;
- VALUE_TYPE(o) = VCVT_RAW;
-}
-
-DLLEXPORT(VObject*) vObjectVObjectValue(VObject *o)
-{
- return VOBJECT_VALUE_OF(o);
-}
-
-DLLEXPORT(void) setVObjectVObjectValue(VObject *o, VObject *p)
-{
- VOBJECT_VALUE_OF(o) = p;
- VALUE_TYPE(o) = VCVT_VOBJECT;
-}
-
-DLLEXPORT(int) vObjectValueType(VObject *o)
-{
- return VALUE_TYPE(o);
-}
-
-
-/*----------------------------------------------------------------------
- The following functions can be used to build VObject.
- ----------------------------------------------------------------------*/
-
-DLLEXPORT(VObject*) addVObjectProp(VObject *o, VObject *p)
-{
- /* circular link list pointed to tail */
- /*
- o {next,id,prop,val}
- V
- pn {next,id,prop,val}
- V
- ...
- p1 {next,id,prop,val}
- V
- pn
- -->
- o {next,id,prop,val}
- V
- pn {next,id,prop,val}
- V
- p {next,id,prop,val}
- ...
- p1 {next,id,prop,val}
- V
- pn
- */
-
- VObject *tail = o->prop;
- if (tail) {
- p->next = tail->next;
- o->prop = tail->next = p;
- }
- else {
- o->prop = p->next = p;
- }
- return p;
-}
-
-DLLEXPORT(VObject*) addProp(VObject *o, const char *id)
-{
- return addVObjectProp(o,newVObject(id));
-}
-
-DLLEXPORT(VObject*) addProp_(VObject *o, const char *id)
-{
- return addVObjectProp(o,newVObject_(id));
-}
-
-DLLEXPORT(void) addList(VObject **o, VObject *p)
-{
- p->next = 0;
- if (*o == 0) {
- *o = p;
- }
- else {
- VObject *t = *o;
- while (t->next) {
- t = t->next;
- }
- t->next = p;
- }
-}
-
-DLLEXPORT(VObject*) nextVObjectInList(VObject *o)
-{
- return o->next;
-}
-
-DLLEXPORT(VObject*) setValueWithSize_(VObject *prop, void *val, unsigned int size)
-{
- VObject *sizeProp;
- setVObjectAnyValue(prop, val);
- sizeProp = addProp(prop,VCDataSizeProp);
- setVObjectLongValue(sizeProp, size);
- return prop;
-}
-
-DLLEXPORT(VObject*) setValueWithSize(VObject *prop, void *val, unsigned int size)
-{
- void *p = dupStr((const char *)val,size);
- return setValueWithSize_(prop,p,p?size:0);
-}
-
-DLLEXPORT(void) initPropIterator(VObjectIterator *i, VObject *o)
-{
- i->start = o->prop;
- i->next = 0;
-}
-
-DLLEXPORT(void) initVObjectIterator(VObjectIterator *i, VObject *o)
-{
- i->start = o->next;
- i->next = 0;
-}
-
-DLLEXPORT(int) moreIteration(VObjectIterator *i)
-{
- return (i->start && (i->next==0 || i->next!=i->start));
-}
-
-DLLEXPORT(VObject*) nextVObject(VObjectIterator *i)
-{
- if (i->start && i->next != i->start) {
- if (i->next == 0) {
- i->next = i->start->next;
- return i->next;
- }
- else {
- i->next = i->next->next;
- return i->next;
- }
- }
- else return (VObject*)0;
-}
-
-DLLEXPORT(VObject*) isAPropertyOf(VObject *o, const char *id)
-{
- VObjectIterator i;
- initPropIterator(&i,o);
- while (moreIteration(&i)) {
- VObject *each = nextVObject(&i);
- if (!stricmp(id,each->id))
- return each;
- }
- return (VObject*)0;
-}
-
-DLLEXPORT(VObject*) addGroup(VObject *o, const char *g)
-{
- /*
- a.b.c
- -->
- prop(c)
- prop(VCGrouping=b)
- prop(VCGrouping=a)
- */
- char *dot = strrchr(g,'.');
- if (dot) {
- VObject *p, *t;
- char *gs, *n = dot+1;
- gs = dupStr(g,0); /* so we can write to it. */
- /* used to be
- * t = p = addProp_(o,lookupProp_(n));
- */
- t = p = addProp_(o,lookupProp(n));
- dot = strrchr(gs,'.');
- *dot = 0;
- do {
- dot = strrchr(gs,'.');
- if (dot) {
- n = dot+1;
- *dot=0;
- }
- else
- n = gs;
- /* property(VCGroupingProp=n);
- * and the value may have VCGrouping property
- */
- t = addProp(t,VCGroupingProp);
- setVObjectStringZValue(t,lookupProp_(n));
- } while (n != gs);
- deleteStr(gs);
- return p;
- }
- else
- return addProp_(o,lookupProp(g));
-}
-
-DLLEXPORT(VObject*) addPropValue(VObject *o, const char *p, const char *v)
-{
- VObject *prop;
- prop = addProp(o,p);
- setVObjectUStringZValue_(prop, fakeUnicode(v,0));
- return prop;
-}
-
-DLLEXPORT(VObject*) addPropSizedValue_(VObject *o, const char *p, const char *v,
- unsigned int size)
-{
- VObject *prop;
- prop = addProp(o,p);
- setValueWithSize_(prop, (void*)v, size);
- return prop;
-}
-
-DLLEXPORT(VObject*) addPropSizedValue(VObject *o, const char *p, const char *v,
- unsigned int size)
-{
- return addPropSizedValue_(o,p,dupStr(v,size),size);
-}
-
-
-
-/*----------------------------------------------------------------------
- The following pretty print a VObject
- ----------------------------------------------------------------------*/
-
-static void printVObject_(FILE *fp, VObject *o, int level);
-
-static void indent(FILE *fp, int level)
-{
- int i;
- for (i=0;i<level*4;i++) {
- fputc(' ', fp);
- }
-}
-
-static void printValue(FILE *fp, VObject *o, int level)
-{
- switch (VALUE_TYPE(o)) {
- case VCVT_USTRINGZ: {
- char c;
- char *t,*s;
- s = t = fakeCString(USTRINGZ_VALUE_OF(o));
- fputc('"',fp);
- while (c=*t,c) {
- fputc(c,fp);
- if (c == '\n') indent(fp,level+2);
- t++;
- }
- fputc('"',fp);
- deleteStr(s);
- break;
- }
- case VCVT_STRINGZ: {
- char c;
- const char *s = STRINGZ_VALUE_OF(o);
- fputc('"',fp);
- while (c=*s,c) {
- fputc(c,fp);
- if (c == '\n') indent(fp,level+2);
- s++;
- }
- fputc('"',fp);
- break;
- }
- case VCVT_UINT:
- fprintf(fp,"%d", INTEGER_VALUE_OF(o)); break;
- case VCVT_ULONG:
- fprintf(fp,"%ld", LONG_VALUE_OF(o)); break;
- case VCVT_RAW:
- fprintf(fp,"[raw data]"); break;
- case VCVT_VOBJECT:
- fprintf(fp,"[vobject]\n");
- printVObject_(fp,VOBJECT_VALUE_OF(o),level+1);
- break;
- case 0:
- fprintf(fp,"[none]"); break;
- default:
- fprintf(fp,"[unknown]"); break;
- }
-}
-
-static void printNameValue(FILE *fp,VObject *o, int level)
-{
- indent(fp,level);
- if (NAME_OF(o)) {
- fprintf(fp,"%s", NAME_OF(o));
- }
- if (VALUE_TYPE(o)) {
- fputc('=',fp);
- printValue(fp,o, level);
- }
- fprintf(fp,"\n");
-}
-
-static void printVObject_(FILE *fp, VObject *o, int level)
- {
- VObjectIterator t;
- if (o == 0) {
- fprintf(fp,"[NULL]\n");
- return;
- }
- printNameValue(fp,o,level);
- initPropIterator(&t,o);
- while (moreIteration(&t)) {
- VObject *eachProp = nextVObject(&t);
- printVObject_(fp,eachProp,level+1);
- }
- }
-
-void printVObject(FILE *fp,VObject *o)
-{
- printVObject_(fp,o,0);
-}
-
-DLLEXPORT(void) printVObjectToFile(char *fname,VObject *o)
-{
- FILE *fp = fopen(fname,"w");
- if (fp) {
- printVObject(fp,o);
- fclose(fp);
- }
-}
-
-DLLEXPORT(void) printVObjectsToFile(char *fname,VObject *list)
-{
- FILE *fp = fopen(fname,"w");
- if (fp) {
- while (list) {
- printVObject(fp,list);
- list = nextVObjectInList(list);
- }
- fclose(fp);
- }
-}
-
-DLLEXPORT(void) cleanVObject(VObject *o)
-{
- if (o == 0) return;
- if (o->prop) {
- /* destroy time: cannot use the iterator here.
- Have to break the cycle in the circular link
- list and turns it into regular NULL-terminated
- list -- since at some point of destruction,
- the reference entry for the iterator to work
- will not longer be valid.
- */
- VObject *p;
- p = o->prop->next;
- o->prop->next = 0;
- do {
- VObject *t = p->next;
- cleanVObject(p);
- p = t;
- } while (p);
- }
- switch (VALUE_TYPE(o)) {
- case VCVT_USTRINGZ:
- case VCVT_STRINGZ:
- case VCVT_RAW:
- /* assume they are all allocated by malloc. */
- free((char*)STRINGZ_VALUE_OF(o));
- break;
- case VCVT_VOBJECT:
- cleanVObject(VOBJECT_VALUE_OF(o));
- break;
- }
- deleteVObject(o);
-}
-
-DLLEXPORT(void) cleanVObjects(VObject *list)
-{
- while (list) {
- VObject *t = list;
- list = nextVObjectInList(list);
- cleanVObject(t);
- }
-}
-
-/*----------------------------------------------------------------------
- The following is a String Table Facilities.
- ----------------------------------------------------------------------*/
-
-#define STRTBLSIZE 255
-
-static StrItem *strTbl[STRTBLSIZE];
-
-static unsigned int hashStr(const char *s)
-{
- unsigned int h = 0;
- int i;
- for (i=0;s[i];i++) {
- h += s[i]*i;
- }
- return h % STRTBLSIZE;
-}
-
-DLLEXPORT(const char*) lookupStr(const char *s)
-{
- StrItem *t;
- unsigned int h = hashStr(s);
- if ((t = strTbl[h]) != 0) {
- do {
- if (stricmp(t->s,s) == 0) {
- t->refCnt++;
- return t->s;
- }
- t = t->next;
- } while (t);
- }
- s = dupStr(s,0);
- strTbl[h] = newStrItem(s,strTbl[h]);
- return s;
-}
-
-DLLEXPORT(void) unUseStr(const char *s)
-{
- StrItem *t, *p;
- unsigned int h = hashStr(s);
- if ((t = strTbl[h]) != 0) {
- p = t;
- do {
- if (stricmp(t->s,s) == 0) {
- t->refCnt--;
- if (t->refCnt == 0) {
- if (p == strTbl[h]) {
- strTbl[h] = t->next;
- }
- else {
- p->next = t->next;
- }
- deleteStr(t->s);
- deleteStrItem(t);
- return;
- }
- }
- p = t;
- t = t->next;
- } while (t);
- }
-}
-
-DLLEXPORT(void) cleanStrTbl()
-{
- int i;
- for (i=0; i<STRTBLSIZE;i++) {
- StrItem *t = strTbl[i];
- while (t) {
- StrItem *p;
- deleteStr(t->s);
- p = t;
- t = t->next;
- deleteStrItem(p);
- } while (t);
- strTbl[i] = 0;
- }
-}
-
-
-struct PreDefProp {
- const char *name;
- const char *alias;
- const char** fields;
- unsigned int flags;
- };
-
-/* flags in PreDefProp */
-#define PD_BEGIN 0x1
-#define PD_INTERNAL 0x2
-
-static const char *adrFields[] = {
- VCPostalBoxProp,
- VCExtAddressProp,
- VCStreetAddressProp,
- VCCityProp,
- VCRegionProp,
- VCPostalCodeProp,
- VCCountryNameProp,
- 0
-};
-
-static const char *nameFields[] = {
- VCFamilyNameProp,
- VCGivenNameProp,
- VCAdditionalNamesProp,
- VCNamePrefixesProp,
- VCNameSuffixesProp,
- NULL
- };
-
-static const char *orgFields[] = {
- VCOrgNameProp,
- VCOrgUnitProp,
- VCOrgUnit2Prop,
- VCOrgUnit3Prop,
- VCOrgUnit4Prop,
- NULL
- };
-
-static const char *AAlarmFields[] = {
- VCRunTimeProp,
- VCSnoozeTimeProp,
- VCRepeatCountProp,
- VCAudioContentProp,
- 0
- };
-
-/* ExDate -- has unamed fields */
-/* RDate -- has unamed fields */
-
-static const char *DAlarmFields[] = {
- VCRunTimeProp,
- VCSnoozeTimeProp,
- VCRepeatCountProp,
- VCDisplayStringProp,
- 0
- };
-
-static const char *MAlarmFields[] = {
- VCRunTimeProp,
- VCSnoozeTimeProp,
- VCRepeatCountProp,
- VCEmailAddressProp,
- VCNoteProp,
- 0
- };
-
-static const char *PAlarmFields[] = {
- VCRunTimeProp,
- VCSnoozeTimeProp,
- VCRepeatCountProp,
- VCProcedureNameProp,
- 0
- };
-
-static struct PreDefProp propNames[] = {
- { VC7bitProp, 0, 0, 0 },
- { VC8bitProp, 0, 0, 0 },
- { VCAAlarmProp, 0, AAlarmFields, 0 },
- { VCAdditionalNamesProp, 0, 0, 0 },
- { VCAdrProp, 0, adrFields, 0 },
- { VCAgentProp, 0, 0, 0 },
- { VCAIFFProp, 0, 0, 0 },
- { VCAOLProp, 0, 0, 0 },
- { VCAppleLinkProp, 0, 0, 0 },
- { VCAttachProp, 0, 0, 0 },
- { VCAttendeeProp, 0, 0, 0 },
- { VCATTMailProp, 0, 0, 0 },
- { VCAudioContentProp, 0, 0, 0 },
- { VCAVIProp, 0, 0, 0 },
- { VCBase64Prop, 0, 0, 0 },
- { VCBBSProp, 0, 0, 0 },
- { VCBirthDateProp, 0, 0, 0 },
- { VCBMPProp, 0, 0, 0 },
- { VCBodyProp, 0, 0, 0 },
- { VCBusinessRoleProp, 0, 0, 0 },
- { VCCalProp, 0, 0, PD_BEGIN },
- { VCCaptionProp, 0, 0, 0 },
- { VCCardProp, 0, 0, PD_BEGIN },
- { VCCarProp, 0, 0, 0 },
- { VCCategoriesProp, 0, 0, 0 },
- { VCCellularProp, 0, 0, 0 },
- { VCCGMProp, 0, 0, 0 },
- { VCCharSetProp, 0, 0, 0 },
- { VCCIDProp, VCContentIDProp, 0, 0 },
- { VCCISProp, 0, 0, 0 },
- { VCCityProp, 0, 0, 0 },
- { VCClassProp, 0, 0, 0 },
- { VCCommentProp, 0, 0, 0 },
- { VCCompletedProp, 0, 0, 0 },
- { VCContentIDProp, 0, 0, 0 },
- { VCCountryNameProp, 0, 0, 0 },
- { VCDAlarmProp, 0, DAlarmFields, 0 },
- { VCDataSizeProp, 0, 0, PD_INTERNAL },
- { VCDayLightProp, 0, 0, 0 },
- { VCDCreatedProp, 0, 0, 0 },
- { VCDeliveryLabelProp, 0, 0, 0 },
- { VCDescriptionProp, 0, 0, 0 },
- { VCDIBProp, 0, 0, 0 },
- { VCDisplayStringProp, 0, 0, 0 },
- { VCDomesticProp, 0, 0, 0 },
- { VCDTendProp, 0, 0, 0 },
- { VCDTstartProp, 0, 0, 0 },
- { VCDueProp, 0, 0, 0 },
- { VCEmailAddressProp, 0, 0, 0 },
- { VCEncodingProp, 0, 0, 0 },
- { VCEndProp, 0, 0, 0 },
- { VCEventProp, 0, 0, PD_BEGIN },
- { VCEWorldProp, 0, 0, 0 },
- { VCExNumProp, 0, 0, 0 },
- { VCExpDateProp, 0, 0, 0 },
- { VCExpectProp, 0, 0, 0 },
- { VCExtAddressProp, 0, 0, 0 },
- { VCFamilyNameProp, 0, 0, 0 },
- { VCFaxProp, 0, 0, 0 },
- { VCFullNameProp, 0, 0, 0 },
- { VCGeoLocationProp, 0, 0, 0 },
- { VCGeoProp, 0, 0, 0 },
- { VCGIFProp, 0, 0, 0 },
- { VCGivenNameProp, 0, 0, 0 },
- { VCGroupingProp, 0, 0, 0 },
- { VCHomeProp, 0, 0, 0 },
- { VCIBMMailProp, 0, 0, 0 },
- { VCInlineProp, 0, 0, 0 },
- { VCInternationalProp, 0, 0, 0 },
- { VCInternetProp, 0, 0, 0 },
- { VCISDNProp, 0, 0, 0 },
- { VCJPEGProp, 0, 0, 0 },
- { VCLanguageProp, 0, 0, 0 },
- { VCLastModifiedProp, 0, 0, 0 },
- { VCLastRevisedProp, 0, 0, 0 },
- { VCLocationProp, 0, 0, 0 },
- { VCLogoProp, 0, 0, 0 },
- { VCMailerProp, 0, 0, 0 },
- { VCMAlarmProp, 0, MAlarmFields, 0 },
- { VCMCIMailProp, 0, 0, 0 },
- { VCMessageProp, 0, 0, 0 },
- { VCMETProp, 0, 0, 0 },
- { VCModemProp, 0, 0, 0 },
- { VCMPEG2Prop, 0, 0, 0 },
- { VCMPEGProp, 0, 0, 0 },
- { VCMSNProp, 0, 0, 0 },
- { VCNamePrefixesProp, 0, 0, 0 },
- { VCNameProp, 0, nameFields, 0 },
- { VCNameSuffixesProp, 0, 0, 0 },
- { VCNoteProp, 0, 0, 0 },
- { VCOrgNameProp, 0, 0, 0 },
- { VCOrgProp, 0, orgFields, 0 },
- { VCOrgUnit2Prop, 0, 0, 0 },
- { VCOrgUnit3Prop, 0, 0, 0 },
- { VCOrgUnit4Prop, 0, 0, 0 },
- { VCOrgUnitProp, 0, 0, 0 },
- { VCPagerProp, 0, 0, 0 },
- { VCPAlarmProp, 0, PAlarmFields, 0 },
- { VCParcelProp, 0, 0, 0 },
- { VCPartProp, 0, 0, 0 },
- { VCPCMProp, 0, 0, 0 },
- { VCPDFProp, 0, 0, 0 },
- { VCPGPProp, 0, 0, 0 },
- { VCPhotoProp, 0, 0, 0 },
- { VCPICTProp, 0, 0, 0 },
- { VCPMBProp, 0, 0, 0 },
- { VCPostalBoxProp, 0, 0, 0 },
- { VCPostalCodeProp, 0, 0, 0 },
- { VCPostalProp, 0, 0, 0 },
- { VCPowerShareProp, 0, 0, 0 },
- { VCPreferredProp, 0, 0, 0 },
- { VCPriorityProp, 0, 0, 0 },
- { VCProcedureNameProp, 0, 0, 0 },
- { VCProdIdProp, 0, 0, 0 },
- { VCProdigyProp, 0, 0, 0 },
- { VCPronunciationProp, 0, 0, 0 },
- { VCPSProp, 0, 0, 0 },
- { VCPublicKeyProp, 0, 0, 0 },
- { VCQPProp, VCQuotedPrintableProp, 0, 0 },
- { VCQuickTimeProp, 0, 0, 0 },
- { VCQuotedPrintableProp, 0, 0, 0 },
- { VCRDateProp, 0, 0, 0 },
- { VCRegionProp, 0, 0, 0 },
- { VCRelatedToProp, 0, 0, 0 },
- { VCRepeatCountProp, 0, 0, 0 },
- { VCResourcesProp, 0, 0, 0 },
- { VCRNumProp, 0, 0, 0 },
- { VCRoleProp, 0, 0, 0 },
- { VCRRuleProp, 0, 0, 0 },
- { VCRSVPProp, 0, 0, 0 },
- { VCRunTimeProp, 0, 0, 0 },
- { VCSequenceProp, 0, 0, 0 },
- { VCSnoozeTimeProp, 0, 0, 0 },
- { VCStartProp, 0, 0, 0 },
- { VCStatusProp, 0, 0, 0 },
- { VCStreetAddressProp, 0, 0, 0 },
- { VCSubTypeProp, 0, 0, 0 },
- { VCSummaryProp, 0, 0, 0 },
- { VCTelephoneProp, 0, 0, 0 },
- { VCTIFFProp, 0, 0, 0 },
- { VCTimeZoneProp, 0, 0, 0 },
- { VCTitleProp, 0, 0, 0 },
- { VCTLXProp, 0, 0, 0 },
- { VCTodoProp, 0, 0, PD_BEGIN },
- { VCTranspProp, 0, 0, 0 },
- { VCUniqueStringProp, 0, 0, 0 },
- { VCURLProp, 0, 0, 0 },
- { VCURLValueProp, 0, 0, 0 },
- { VCValueProp, 0, 0, 0 },
- { VCVersionProp, 0, 0, 0 },
- { VCVideoProp, 0, 0, 0 },
- { VCVoiceProp, 0, 0, 0 },
- { VCWAVEProp, 0, 0, 0 },
- { VCWMFProp, 0, 0, 0 },
- { VCWorkProp, 0, 0, 0 },
- { VCX400Prop, 0, 0, 0 },
- { VCX509Prop, 0, 0, 0 },
- { VCXRuleProp, 0, 0, 0 },
- { 0,0,0,0 }
- };
-
-
-static struct PreDefProp* lookupPropInfo(const char* str)
-{
- /* brute force for now, could use a hash table here. */
- int i;
-
- for (i = 0; propNames[i].name; i++)
- if (stricmp(str, propNames[i].name) == 0) {
- return &propNames[i];
- }
-
- return 0;
-}
-
-
-DLLEXPORT(const char*) lookupProp_(const char* str)
-{
- int i;
-
- for (i = 0; propNames[i].name; i++)
- if (stricmp(str, propNames[i].name) == 0) {
- const char* s;
- s = propNames[i].alias?propNames[i].alias:propNames[i].name;
- return lookupStr(s);
- }
- return lookupStr(str);
-}
-
-
-DLLEXPORT(const char*) lookupProp(const char* str)
-{
- int i;
-
- for (i = 0; propNames[i].name; i++)
- if (stricmp(str, propNames[i].name) == 0) {
- const char *s;
- fieldedProp = propNames[i].fields;
- s = propNames[i].alias?propNames[i].alias:propNames[i].name;
- return lookupStr(s);
- }
- fieldedProp = 0;
- return lookupStr(str);
-}
-
-
-/*----------------------------------------------------------------------
- APIs to Output text form.
- ----------------------------------------------------------------------*/
-#define OFILE_REALLOC_SIZE 256
-typedef struct OFile {
- FILE *fp;
- char *s;
- int len;
- int limit;
- int alloc:1;
- int fail:1;
- } OFile;
-
-#if 0
-static void appendsOFile(OFile *fp, const char *s)
-{
- int slen;
- if (fp->fail) return;
- slen = strlen(s);
- if (fp->fp) {
- fwrite(s,1,slen,fp->fp);
- }
- else {
-stuff:
- if (fp->len + slen < fp->limit) {
- memcpy(fp->s+fp->len,s,slen);
- fp->len += slen;
- return;
- }
- else if (fp->alloc) {
- fp->limit = fp->limit + OFILE_REALLOC_SIZE;
- if (OFILE_REALLOC_SIZE <= slen) fp->limit += slen;
- fp->s = (char *) realloc(fp->s,fp->limit);
- if (fp->s) goto stuff;
- }
- if (fp->alloc)
- free(fp->s);
- fp->s = 0;
- fp->fail = 1;
- }
-}
-
-static void appendcOFile(OFile *fp, char c)
-{
- if (fp->fail) return;
- if (fp->fp) {
- fputc(c,fp->fp);
- }
- else {
-stuff:
- if (fp->len+1 < fp->limit) {
- fp->s[fp->len] = c;
- fp->len++;
- return;
- }
- else if (fp->alloc) {
- fp->limit = fp->limit + OFILE_REALLOC_SIZE;
- fp->s = (char *) realloc(fp->s,fp->limit);
- if (fp->s) goto stuff;
- }
- if (fp->alloc)
- free(fp->s);
- fp->s = 0;
- fp->fail = 1;
- }
-}
-#else
-static void appendcOFile_(OFile *fp, char c)
-{
- if (fp->fail) return;
- if (fp->fp) {
- fputc(c,fp->fp);
- }
- else {
-stuff:
- if (fp->len+1 < fp->limit) {
- fp->s[fp->len] = c;
- fp->len++;
- return;
- }
- else if (fp->alloc) {
- fp->limit = fp->limit + OFILE_REALLOC_SIZE;
- fp->s = realloc(fp->s,fp->limit);
- if (fp->s) goto stuff;
- }
- if (fp->alloc)
- free(fp->s);
- fp->s = 0;
- fp->fail = 1;
- }
-}
-
-static void appendcOFile(OFile *fp, char c)
-{
- if (c == '\n') {
- /* write out as <CR><LF> */
- appendcOFile_(fp,0xd);
- appendcOFile_(fp,0xa);
- }
- else
- appendcOFile_(fp,c);
-}
-
-static void appendsOFile(OFile *fp, const char *s)
-{
- int i, slen;
- slen = strlen(s);
- for (i=0; i<slen; i++) {
- appendcOFile(fp,s[i]);
- }
-}
-
-#endif
-
-static void initOFile(OFile *fp, FILE *ofp)
-{
- fp->fp = ofp;
- fp->s = 0;
- fp->len = 0;
- fp->limit = 0;
- fp->alloc = 0;
- fp->fail = 0;
-}
-
-static void initMemOFile(OFile *fp, char *s, int len)
-{
- fp->fp = 0;
- fp->s = s;
- fp->len = 0;
- fp->limit = s?len:0;
- fp->alloc = s?0:1;
- fp->fail = 0;
-}
-
-
-static int writeBase64(OFile *fp, unsigned char *s, long len)
-{
- long cur = 0;
- int i, numQuads = 0;
- unsigned long trip;
- unsigned char b;
- char quad[5];
-#define MAXQUADS 16
-
- quad[4] = 0;
-
- while (cur < len) {
- /* collect the triplet of bytes into 'trip' */
- trip = 0;
- for (i = 0; i < 3; i++) {
- b = (cur < len) ? *(s + cur) : 0;
- cur++;
- trip = trip << 8 | b;
- }
- /* fill in 'quad' with the appropriate four characters */
- for (i = 3; i >= 0; i--) {
- b = (unsigned char)(trip & 0x3F);
- trip = trip >> 6;
- if ((3 - i) < (cur - len))
- quad[i] = '='; /* pad char */
- else if (b < 26) quad[i] = (char)b + 'A';
- else if (b < 52) quad[i] = (char)(b - 26) + 'a';
- else if (b < 62) quad[i] = (char)(b - 52) + '0';
- else if (b == 62) quad[i] = '+';
- else quad[i] = '/';
- }
- /* now output 'quad' with appropriate whitespace and line ending */
- appendsOFile(fp, (numQuads == 0 ? " " : ""));
- appendsOFile(fp, quad);
- appendsOFile(fp, ((cur >= len)?"\n" :(numQuads==MAXQUADS-1?"\n" : "")));
- numQuads = (numQuads + 1) % MAXQUADS;
- }
- appendcOFile(fp,'\n');
-
- return 1;
-}
-
-static void writeString(OFile *fp, const char *s)
-{
- appendsOFile(fp,s);
-}
-
-static void writeQPString(OFile *fp, const char *s)
-{
- char buf[4];
- int count=0;
- const char *p = s;
-
- while (*p) {
- /* break up lines biggger than 75 chars */
- if(count >=74){
- count=0;
- appendsOFile(fp,"=\n");
- }
-
- /* escape any non ASCII characters and '=' as per rfc1521 */
- if (*p<= 0x1f || *p >=0x7f || *p == '=' ) {
- sprintf(buf,"=%02X",(unsigned char)*p);
- appendsOFile(fp,buf);
- count+=3;
- } else {
- appendcOFile(fp,*p);
- count++;
- }
- p++;
- }
-}
-
-
-
-static void writeVObject_(OFile *fp, VObject *o);
-
-static void writeValue(OFile *fp, VObject *o, unsigned long size,int quote)
-{
- if (o == 0) return;
- switch (VALUE_TYPE(o)) {
- case VCVT_USTRINGZ: {
- char *s = fakeCString(USTRINGZ_VALUE_OF(o));
- if(quote) writeQPString(fp, s);
- else writeString(fp,s);
- deleteStr(s);
- break;
- }
- case VCVT_STRINGZ: {
- if(quote) writeQPString(fp, STRINGZ_VALUE_OF(o));
- else writeString(fp,STRINGZ_VALUE_OF(o));
- break;
- }
- case VCVT_UINT: {
- char buf[16];
- sprintf(buf,"%u", INTEGER_VALUE_OF(o));
- appendsOFile(fp,buf);
- break;
- }
- case VCVT_ULONG: {
- char buf[16];
- sprintf(buf,"%lu", LONG_VALUE_OF(o));
- appendsOFile(fp,buf);
- break;
- }
- case VCVT_RAW: {
- appendcOFile(fp,'\n');
- writeBase64(fp,(unsigned char*)(ANY_VALUE_OF(o)),size);
- break;
- }
- case VCVT_VOBJECT:
- appendcOFile(fp,'\n');
- writeVObject_(fp,VOBJECT_VALUE_OF(o));
- break;
- }
-}
-
-static void writeAttrValue(OFile *fp, VObject *o)
-{
- if (NAME_OF(o)) {
- struct PreDefProp *pi;
- pi = lookupPropInfo(NAME_OF(o));
- if (pi && ((pi->flags & PD_INTERNAL) != 0)) return;
- appendcOFile(fp,';');
- appendsOFile(fp,NAME_OF(o));
- }
- else
- appendcOFile(fp,';');
- if (VALUE_TYPE(o)) {
- appendcOFile(fp,'=');
- writeValue(fp,o,0,0);
- }
-}
-
-static void writeGroup(OFile *fp, VObject *o)
-{
- char buf1[256];
- char buf2[256];
- strcpy(buf1,NAME_OF(o));
- while ((o=isAPropertyOf(o,VCGroupingProp)) != 0) {
- strcpy(buf2,STRINGZ_VALUE_OF(o));
- strcat(buf2,".");
- strcat(buf2,buf1);
- strcpy(buf1,buf2);
- }
- appendsOFile(fp,buf1);
-}
-
-static int inList(const char **list, const char *s)
-{
- if (list == 0) return 0;
- while (*list) {
- if (stricmp(*list,s) == 0) return 1;
- list++;
- }
- return 0;
-}
-
-static void writeProp(OFile *fp, VObject *o)
-{
- int isQuoted=0;
- if (NAME_OF(o)) {
- struct PreDefProp *pi;
- VObjectIterator t;
- const char **fields_ = 0;
- pi = lookupPropInfo(NAME_OF(o));
- if (pi && ((pi->flags & PD_BEGIN) != 0)) {
- writeVObject_(fp,o);
- return;
- }
- if (isAPropertyOf(o,VCGroupingProp))
- writeGroup(fp,o);
- else
- appendsOFile(fp,NAME_OF(o));
- if (pi) fields_ = pi->fields;
- initPropIterator(&t,o);
- while (moreIteration(&t)) {
- const char *s;
- VObject *eachProp = nextVObject(&t);
- s = NAME_OF(eachProp);
- if (stricmp(VCGroupingProp,s) && !inList(fields_,s))
- writeAttrValue(fp,eachProp);
- if (stricmp(VCQPProp,s)==0 || stricmp(VCQuotedPrintableProp,s)==0)
- isQuoted=1;
- }
- if (fields_) {
- int i = 0, n = 0;
- const char** fields = fields_;
- /* output prop as fields */
- appendcOFile(fp,':');
- while (*fields) {
- VObject *t = isAPropertyOf(o,*fields);
- i++;
- if (t) n = i;
- fields++;
- }
- fields = fields_;
- for (i=0;i<n;i++) {
- writeValue(fp,isAPropertyOf(o,*fields),0,isQuoted);
- fields++;
- if (i<(n-1)) appendcOFile(fp,';');
- }
- }
- }
-
- if (VALUE_TYPE(o)) {
- unsigned long size = 0;
- VObject *p = isAPropertyOf(o,VCDataSizeProp);
- if (p) size = LONG_VALUE_OF(p);
- appendcOFile(fp,':');
- writeValue(fp,o,size,isQuoted);
- }
-
- appendcOFile(fp,'\n');
-}
-
-static void writeVObject_(OFile *fp, VObject *o)
-{
- if (NAME_OF(o)) {
- struct PreDefProp *pi;
- pi = lookupPropInfo(NAME_OF(o));
-
- if (pi && ((pi->flags & PD_BEGIN) != 0)) {
- VObjectIterator t;
- const char *begin = NAME_OF(o);
- appendsOFile(fp,"BEGIN:");
- appendsOFile(fp,begin);
- appendcOFile(fp,'\n');
- initPropIterator(&t,o);
- while (moreIteration(&t)) {
- VObject *eachProp = nextVObject(&t);
- writeProp(fp, eachProp);
- }
- appendsOFile(fp,"END:");
- appendsOFile(fp,begin);
- appendsOFile(fp,"\n\n");
- }
- }
-}
-
-void writeVObject(FILE *fp, VObject *o)
-{
- OFile ofp;
- initOFile(&ofp,fp);
- writeVObject_(&ofp,o);
-}
-
-DLLEXPORT(void) writeVObjectToFile(char *fname, VObject *o)
-{
- FILE *fp = fopen(fname,"w");
- if (fp) {
- writeVObject(fp,o);
- fclose(fp);
- }
-}
-
-DLLEXPORT(void) writeVObjectsToFile(char *fname, VObject *list)
-{
- FILE *fp = fopen(fname,"w");
- if (fp) {
- while (list) {
- writeVObject(fp,list);
- list = nextVObjectInList(list);
- }
- fclose(fp);
- }
-}
-
-DLLEXPORT(char*) writeMemVObject(char *s, int *len, VObject *o)
-{
- OFile ofp;
- initMemOFile(&ofp,s,len?*len:0);
- writeVObject_(&ofp,o);
- if (len) *len = ofp.len;
- appendcOFile(&ofp,0);
- return ofp.s;
-}
-
-DLLEXPORT(char*) writeMemVObjects(char *s, int *len, VObject *list)
-{
- OFile ofp;
- initMemOFile(&ofp,s,len?*len:0);
- while (list) {
- writeVObject_(&ofp,list);
- list = nextVObjectInList(list);
- }
- if (len) *len = ofp.len;
- appendcOFile(&ofp,0);
- return ofp.s;
-}
-
-/*----------------------------------------------------------------------
- APIs to do fake Unicode stuff.
- ----------------------------------------------------------------------*/
-DLLEXPORT(wchar_t*) fakeUnicode(const char *ps, int *bytes)
-{
- wchar_t *r, *pw;
- int len = strlen(ps)+1;
-
- pw = r = (wchar_t*)malloc(sizeof(wchar_t)*len);
- if (bytes)
- *bytes = len * sizeof(wchar_t);
-
- while (*ps) {
- if (*ps == '\n')
- *pw = (wchar_t)0x2028;
- else if (*ps == '\r')
- *pw = (wchar_t)0x2029;
- else
- *pw = (wchar_t)(unsigned char)*ps;
- ps++; pw++;
- }
- *pw = (wchar_t)0;
-
- return r;
-}
-
-DLLEXPORT(int) uStrLen(const wchar_t *u)
-{
- int i = 0;
- while (*u != (wchar_t)0) { u++; i++; }
- return i;
-}
-
-DLLEXPORT(char*) fakeCString(const wchar_t *u)
-{
- char *s, *t;
- int len = uStrLen(u) + 1;
- t = s = (char*)malloc(len);
- while (*u) {
- if (*u == (wchar_t)0x2028)
- *t = '\n';
- else if (*u == (wchar_t)0x2029)
- *t = '\r';
- else
- *t = (char)*u;
- u++; t++;
- }
- *t = 0;
- return s;
-}
-
-/* end of source file vobject.c */
diff --git a/libversit/vobject.h b/libversit/vobject.h
deleted file mode 100644
index bc31dc8297..0000000000
--- a/libversit/vobject.h
+++ /dev/null
@@ -1,366 +0,0 @@
-/***************************************************************************
-(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International
-Business Machines Corporation and Siemens Rolm Communications Inc.
-
-For purposes of this license notice, the term Licensors shall mean,
-collectively, Apple Computer, Inc., AT&T Corp., International
-Business Machines Corporation and Siemens Rolm Communications Inc.
-The term Licensor shall mean any of the Licensors.
-
-Subject to acceptance of the following conditions, permission is hereby
-granted by Licensors without the need for written agreement and without
-license or royalty fees, to use, copy, modify and distribute this
-software for any purpose.
-
-The above copyright notice and the following four paragraphs must be
-reproduced in all copies of this software and any software including
-this software.
-
-THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE
-ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR
-MODIFICATIONS.
-
-IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT,
-INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT
-OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED,
-INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.
-
-The software is provided with RESTRICTED RIGHTS. Use, duplication, or
-disclosure by the government are subject to restrictions set forth in
-DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable.
-
-***************************************************************************/
-
-/*
-
-The vCard/vCalendar C interface is implemented in the set
-of files as follows:
-
-vcc.y, yacc source, and vcc.c, the yacc output you will use
-implements the core parser
-
-vobject.c implements an API that insulates the caller from
-the parser and changes in the vCard/vCalendar BNF
-
-port.h defines compilation environment dependent stuff
-
-vcc.h and vobject.h are header files for their .c counterparts
-
-vcaltmp.h and vcaltmp.c implement vCalendar "macro" functions
-which you may find useful.
-
-test.c is a standalone test driver that exercises some of
-the features of the APIs provided. Invoke test.exe on a
-VCARD/VCALENDAR input text file and you will see the pretty
-print output of the internal representation (this pretty print
-output should give you a good idea of how the internal
-representation looks like -- there is one such output in the
-following too). Also, a file with the .out suffix is generated
-to show that the internal representation can be written back
-in the original text format.
-
-For more information on this API see the readme.txt file
-which accompanied this distribution.
-
- Also visit:
-
- http://www.versit.com
- http://www.ralden.com
-
-*/
-
-
-#ifndef __VOBJECT_H__
-#define __VOBJECT_H__ 1
-
-
-#include "port.h"
-#include <stdlib.h>
-#include <stdio.h>
-
-#if defined(__CPLUSPLUS__) || defined(__cplusplus)
-extern "C" {
-#endif
-
-
-#define VC7bitProp "7BIT"
-#define VC8bitProp "8BIT"
-#define VCAAlarmProp "AALARM"
-#define VCAdditionalNamesProp "ADDN"
-#define VCAdrProp "ADR"
-#define VCAgentProp "AGENT"
-#define VCAIFFProp "AIFF"
-#define VCAOLProp "AOL"
-#define VCAppleLinkProp "APPLELINK"
-#define VCAttachProp "ATTACH"
-#define VCAttendeeProp "ATTENDEE"
-#define VCATTMailProp "ATTMAIL"
-#define VCAudioContentProp "AUDIOCONTENT"
-#define VCAVIProp "AVI"
-#define VCBase64Prop "BASE64"
-#define VCBBSProp "BBS"
-#define VCBirthDateProp "BDAY"
-#define VCBMPProp "BMP"
-#define VCBodyProp "BODY"
-#define VCBusinessRoleProp "ROLE"
-#define VCCalProp "VCALENDAR"
-#define VCCaptionProp "CAP"
-#define VCCardProp "VCARD"
-#define VCCarProp "CAR"
-#define VCCategoriesProp "CATEGORIES"
-#define VCCellularProp "CELL"
-#define VCCGMProp "CGM"
-#define VCCharSetProp "CS"
-#define VCCIDProp "CID"
-#define VCCISProp "CIS"
-#define VCCityProp "L"
-#define VCClassProp "CLASS"
-#define VCCommentProp "NOTE"
-#define VCCompletedProp "COMPLETED"
-#define VCContentIDProp "CONTENT-ID"
-#define VCCountryNameProp "C"
-#define VCDAlarmProp "DALARM"
-#define VCDataSizeProp "DATASIZE"
-#define VCDayLightProp "DAYLIGHT"
-#define VCDCreatedProp "DCREATED"
-#define VCDeliveryLabelProp "LABEL"
-#define VCDescriptionProp "DESCRIPTION"
-#define VCDIBProp "DIB"
-#define VCDisplayStringProp "DISPLAYSTRING"
-#define VCDomesticProp "DOM"
-#define VCDTendProp "DTEND"
-#define VCDTstartProp "DTSTART"
-#define VCDueProp "DUE"
-#define VCEmailAddressProp "EMAIL"
-#define VCEncodingProp "ENCODING"
-#define VCEndProp "END"
-#define VCEventProp "VEVENT"
-#define VCEWorldProp "EWORLD"
-#define VCExNumProp "EXNUM"
-#define VCExpDateProp "EXDATE"
-#define VCExpectProp "EXPECT"
-#define VCExtAddressProp "EXT ADD"
-#define VCFamilyNameProp "F"
-#define VCFaxProp "FAX"
-#define VCFullNameProp "FN"
-#define VCGeoProp "GEO"
-#define VCGeoLocationProp "GEO"
-#define VCGIFProp "GIF"
-#define VCGivenNameProp "G"
-#define VCGroupingProp "Grouping"
-#define VCHomeProp "HOME"
-#define VCIBMMailProp "IBMMail"
-#define VCInlineProp "INLINE"
-#define VCInternationalProp "INTL"
-#define VCInternetProp "INTERNET"
-#define VCISDNProp "ISDN"
-#define VCJPEGProp "JPEG"
-#define VCLanguageProp "LANG"
-#define VCLastModifiedProp "LAST-MODIFIED"
-#define VCLastRevisedProp "REV"
-#define VCLocationProp "LOCATION"
-#define VCLogoProp "LOGO"
-#define VCMailerProp "MAILER"
-#define VCMAlarmProp "MALARM"
-#define VCMCIMailProp "MCIMAIL"
-#define VCMessageProp "MSG"
-#define VCMETProp "MET"
-#define VCModemProp "MODEM"
-#define VCMPEG2Prop "MPEG2"
-#define VCMPEGProp "MPEG"
-#define VCMSNProp "MSN"
-#define VCNamePrefixesProp "NPRE"
-#define VCNameProp "N"
-#define VCNameSuffixesProp "NSUF"
-#define VCNoteProp "NOTE"
-#define VCOrgNameProp "ORGNAME"
-#define VCOrgProp "ORG"
-#define VCOrgUnit2Prop "OUN2"
-#define VCOrgUnit3Prop "OUN3"
-#define VCOrgUnit4Prop "OUN4"
-#define VCOrgUnitProp "OUN"
-#define VCPagerProp "PAGER"
-#define VCPAlarmProp "PALARM"
-#define VCParcelProp "PARCEL"
-#define VCPartProp "PART"
-#define VCPCMProp "PCM"
-#define VCPDFProp "PDF"
-#define VCPGPProp "PGP"
-#define VCPhotoProp "PHOTO"
-#define VCPICTProp "PICT"
-#define VCPMBProp "PMB"
-#define VCPostalBoxProp "BOX"
-#define VCPostalCodeProp "PC"
-#define VCPostalProp "POSTAL"
-#define VCPowerShareProp "POWERSHARE"
-#define VCPreferredProp "PREF"
-#define VCPriorityProp "PRIORITY"
-#define VCProcedureNameProp "PROCEDURENAME"
-#define VCProdIdProp "PRODID"
-#define VCProdigyProp "PRODIGY"
-#define VCPronunciationProp "SOUND"
-#define VCPSProp "PS"
-#define VCPublicKeyProp "KEY"
-#define VCQPProp "QP"
-#define VCQuickTimeProp "QTIME"
-#define VCQuotedPrintableProp "QUOTED-PRINTABLE"
-#define VCRDateProp "RDATE"
-#define VCRegionProp "R"
-#define VCRelatedToProp "RELATED-TO"
-#define VCRepeatCountProp "REPEATCOUNT"
-#define VCResourcesProp "RESOURCES"
-#define VCRNumProp "RNUM"
-#define VCRoleProp "ROLE"
-#define VCRRuleProp "RRULE"
-#define VCRSVPProp "RSVP"
-#define VCRunTimeProp "RUNTIME"
-#define VCSequenceProp "SEQUENCE"
-#define VCSnoozeTimeProp "SNOOZETIME"
-#define VCStartProp "START"
-#define VCStatusProp "STATUS"
-#define VCStreetAddressProp "STREET"
-#define VCSubTypeProp "SUBTYPE"
-#define VCSummaryProp "SUMMARY"
-#define VCTelephoneProp "TEL"
-#define VCTIFFProp "TIFF"
-#define VCTimeZoneProp "TZ"
-#define VCTitleProp "TITLE"
-#define VCTLXProp "TLX"
-#define VCTodoProp "VTODO"
-#define VCTranspProp "TRANSP"
-#define VCUniqueStringProp "UID"
-#define VCURLProp "URL"
-#define VCURLValueProp "URLVAL"
-#define VCValueProp "VALUE"
-#define VCVersionProp "VERSION"
-#define VCVideoProp "VIDEO"
-#define VCVoiceProp "VOICE"
-#define VCWAVEProp "WAVE"
-#define VCWMFProp "WMF"
-#define VCWorkProp "WORK"
-#define VCX400Prop "X400"
-#define VCX509Prop "X509"
-#define VCXRuleProp "XRULE"
-
-/* Extensions */
-
-#define XPilotIdProp "X-PILOTID"
-#define XPilotStatusProp "X-PILOTSTAT"
-
-typedef struct VObject VObject;
-
-typedef struct VObjectIterator {
- VObject* start;
- VObject* next;
- } VObjectIterator;
-
-extern DLLEXPORT(VObject*) newVObject(const char *id);
-extern DLLEXPORT(void) deleteVObject(VObject *p);
-extern DLLEXPORT(char*) dupStr(const char *s, unsigned int size);
-extern DLLEXPORT(void) deleteStr(const char *p);
-extern DLLEXPORT(void) unUseStr(const char *s);
-
-extern DLLEXPORT(void) setVObjectName(VObject *o, const char* id);
-extern DLLEXPORT(void) setVObjectStringZValue(VObject *o, const char *s);
-extern DLLEXPORT(void) setVObjectStringZValue_(VObject *o, const char *s);
-extern DLLEXPORT(void) setVObjectUStringZValue(VObject *o, const wchar_t *s);
-extern DLLEXPORT(void) setVObjectUStringZValue_(VObject *o, const wchar_t *s);
-extern DLLEXPORT(void) setVObjectIntegerValue(VObject *o, unsigned int i);
-extern DLLEXPORT(void) setVObjectLongValue(VObject *o, unsigned long l);
-extern DLLEXPORT(void) setVObjectAnyValue(VObject *o, void *t);
-extern DLLEXPORT(VObject*) setValueWithSize(VObject *prop, void *val, unsigned int size);
-extern DLLEXPORT(VObject*) setValueWithSize_(VObject *prop, void *val, unsigned int size);
-
-extern DLLEXPORT(const char*) vObjectName(VObject *o);
-extern DLLEXPORT(const char*) vObjectStringZValue(VObject *o);
-extern DLLEXPORT(const wchar_t*) vObjectUStringZValue(VObject *o);
-extern DLLEXPORT(unsigned int) vObjectIntegerValue(VObject *o);
-extern DLLEXPORT(unsigned long) vObjectLongValue(VObject *o);
-extern DLLEXPORT(void*) vObjectAnyValue(VObject *o);
-extern DLLEXPORT(VObject*) vObjectVObjectValue(VObject *o);
-extern DLLEXPORT(void) setVObjectVObjectValue(VObject *o, VObject *p);
-
-extern DLLEXPORT(VObject*) addVObjectProp(VObject *o, VObject *p);
-extern DLLEXPORT(VObject*) addProp(VObject *o, const char *id);
-extern DLLEXPORT(VObject*) addProp_(VObject *o, const char *id);
-extern DLLEXPORT(VObject*) addPropValue(VObject *o, const char *p, const char *v);
-extern DLLEXPORT(VObject*) addPropSizedValue_(VObject *o, const char *p, const char *v, unsigned int size);
-extern DLLEXPORT(VObject*) addPropSizedValue(VObject *o, const char *p, const char *v, unsigned int size);
-extern DLLEXPORT(VObject*) addGroup(VObject *o, const char *g);
-extern DLLEXPORT(void) addList(VObject **o, VObject *p);
-
-extern DLLEXPORT(VObject*) isAPropertyOf(VObject *o, const char *id);
-
-extern DLLEXPORT(VObject*) nextVObjectInList(VObject *o);
-extern DLLEXPORT(void) initPropIterator(VObjectIterator *i, VObject *o);
-extern DLLEXPORT(int) moreIteration(VObjectIterator *i);
-extern DLLEXPORT(VObject*) nextVObject(VObjectIterator *i);
-
-extern DLLEXPORT(char*) writeMemVObject(char *s, int *len, VObject *o);
-extern DLLEXPORT(char*) writeMemVObjects(char *s, int *len, VObject *list);
-
-extern DLLEXPORT(const char*) lookupStr(const char *s);
-extern DLLEXPORT(void) cleanStrTbl();
-
-extern DLLEXPORT(void) cleanVObject(VObject *o);
-extern DLLEXPORT(void) cleanVObjects(VObject *list);
-
-extern DLLEXPORT(const char*) lookupProp(const char* str);
-extern DLLEXPORT(const char*) lookupProp_(const char* str);
-
-extern DLLEXPORT(wchar_t*) fakeUnicode(const char *ps, int *bytes);
-extern DLLEXPORT(int) uStrLen(const wchar_t *u);
-extern DLLEXPORT(char*) fakeCString(const wchar_t *u);
-
-extern DLLEXPORT(void) printVObjectToFile(char *fname,VObject *o);
-extern DLLEXPORT(void) printVObjectsToFile(char *fname,VObject *list);
-extern DLLEXPORT(void) writeVObjectToFile(char *fname, VObject *o);
-extern DLLEXPORT(void) writeVObjectsToFile(char *fname, VObject *list);
-
-extern DLLEXPORT(int) vObjectValueType(VObject *o);
-
-/* return type of vObjectValueType: */
-#define VCVT_NOVALUE 0
- /* if the VObject has no value associated with it. */
-#define VCVT_STRINGZ 1
- /* if the VObject has value set by setVObjectStringZValue. */
-#define VCVT_USTRINGZ 2
- /* if the VObject has value set by setVObjectUStringZValue. */
-#define VCVT_UINT 3
- /* if the VObject has value set by setVObjectIntegerValue. */
-#define VCVT_ULONG 4
- /* if the VObject has value set by setVObjectLongValue. */
-#define VCVT_RAW 5
- /* if the VObject has value set by setVObjectAnyValue. */
-#define VCVT_VOBJECT 6
- /* if the VObject has value set by setVObjectVObjectValue. */
-
-extern const char** fieldedProp;
-
-/* NOTE regarding printVObject and writeVObject
-
-The functions below are not exported from the DLL because they
-take a FILE* as a parameter, which cannot be passed across a DLL
-interface (at least that is my experience). Instead you can use
-their companion functions which take file names or pointers
-to memory. However, if you are linking this code into
-your build directly then you may find them a more convenient API
-and you can go ahead and use them. If you try to use them with
-the DLL LIB you will get a link error.
-*/
-extern void printVObject(FILE *fp,VObject *o);
-extern void writeVObject(FILE *fp, VObject *o);
-
-
-#if defined(__CPLUSPLUS__) || defined(__cplusplus)
-}
-#endif
-
-#endif /* __VOBJECT_H__ */
-
-
diff --git a/macros/ChangeLog b/macros/ChangeLog
index 0017061b3f..a5be79154c 100644
--- a/macros/ChangeLog
+++ b/macros/ChangeLog
@@ -1,234 +1,14 @@
-2001-05-19 Jody Goldberg <jgoldberg@home.com>
+2001-05-22 Darin Adler <darin@eazel.com>
- * gnome-gettext.m4 : Add BUILD_INCLUDED_LIBINTL so that newer versions
- work.
-
-2001-04-16 Jaka Mocnik <jaka@gnu.org>
-
- * gnome-print-check.m4: change $(cmd) to `cmd` in order to make it
- usable in non-bash bourne shells.
-
-2001-03-01 JP Rosevear <jpr@ximian.com>
-
- * gnome-pilot.m4: quote a test and make sure incdir is always set
- so 'cat' works
-
-2001-02-21 Lauris Kaplinski <lauris@ximian.com>
-
- * gnome-print-check.m4: Replaced the awk alchemy with sed alchemy.
- I seems to work now as long as gnome-config is working - but that is
- the whole point of gnome-config, isn't it?
-
-2001-02-19 JP Rosevear <jpr@ximian.com>
-
- * gnome-pilot.m4: Revert my previous patch now that gnome-pim and
- evolution are fixed to accomodate the change
-
-2001-02-19 JP Rosevear <jpr@ximian.com>
-
- * gnome-pilot.m4: AC_SUBST the PISOCK_LIBDIR var
-
-2001-02-17 Lauris Kaplinski <lauris@ximian.com>
-
- * gnome-print-check.m4: Remove most of stuff here, but now
- it at least WORKS
-
-2001-02-07 Kenneth Christiansen <kenneth@gnu.org>
-
- * autogen.sh: Added test for xml-i18n-tools if
- AM_PROG_XML_I18N_TOOLS is found.
-
-2001-01-05 Maciej Stachowiak <mjs@eazel.com>
-
- * autogen.sh: Added missing PROG.
-
-2001-01-05 Maciej Stachowiak <mjs@eazel.com>
-
- * autogen.sh: xml-i18n-toolize if AM_PROG_XML_I18N_TOOLS is found
- in configure.in.
-
-2000-11-05 Martin Baulig <baulig@suse.de>
-
- * gnome-bonobo-check.m4 (BONOBO_CFLAGS, BONOBO_LIBS): Added
- stuff for `bonobox'.
-
-2000-08-01 Pavel Roskin <proski@gnu.org>
-
- * curses.m4: AC_WARN replaced with AC_MSG_WARN in comments
-
-2000-06-23 Stanislav Brabec <utx@penguin.cz>
-
- * gnome-pilot.m4: Use 'PISOCK_INCLUDEDIR' in pisock version check.
-
-2000-06-17 Dan Winship <danw@helixcode.com>
-
- * autogen.sh: exit immediately if aclocal, autoheader, automake,
- or autoconf fails, rather than continuing on with broken state.
- (In the aclocal case, print a hopefully-useful explanatory
- message.)
-
-2000-06-13 Martin Baulig <baulig@suse.de>
-
- * gnome-bonobo-check.am (AM_BONOBO_USES_OAF): New macro.
- Checks whether Bonobo uses OAF and defines `BONOBO_USES_OAF'
- if appropriate. Also provides `BONOBO_USES_OAF' automake
- conditional.
-
-2000-06-13 Martin Baulig <baulig@suse.de>
-
- * Makefile.am (EXTRA_DIST): Added `gnome-gettext.m4'.
- (gnome_aclocal_DATA): Added `gnome-gettext.m4'.
-
-2000-05-29 Martin Baulig <baulig@suse.de>
-
- * gnome-autogen.sh: Moved to the `bin/' directory.
-
-2000-05-29 Martin Baulig <baulig@suse.de>
-
- * gnome-autogen.sh: If `USE_GNOME_2_MACROS' is set, use the
- GNOME 2.0 macros from the `macros2' directory.
-
-2000-05-29 Martin Baulig <baulig@suse.de>
-
- * gnome-common.m4, Makefile.am: Install macros to
- `$(datadir)/aclocal/gnome-macros' when INSIDE_GNOME_COMMON.
-
- * gnome-autogen.sh: New file. When using gnome-common instead
- of the macros/ directory, use this in your autogen.sh.
-
-2000-05-15 Russell Steinthal <rms39@columbia.edu>
-
- * gnome-pilot.m4 (PILOT_LIBS): An attempt to fix the gnome-pilot
- check on Solaris (`$GNOME_CONFIG ...` returns more than one word,
- so we need quotes around it to keep test from bombing out)
-
-2000-05-01 Dan Winship <danw@helixcode.com>
-
- * gnome-pilot.m4 (PILOT_LIBS): "But that trick NEVER works!"
- "This time for sure!"
-
-Sun Apr 23 12:15:14 2000 George Lebl <jirka@5z.com>
-
- * gnome.m4: add an extra lib of docklets. These checks are
- braindamaged though, they don't fail and thus gnome-core for
- example compiles without gnomecc. There need to be separate .m4
- files or checks
-
-2000-04-19 Eskil Heyn Olsen <deity@eskil.dk>
-
- * gnome-pilot.m4 (PILOT_LIBS): Changed the error string for gnome-pilot
- (PILOT_LIBS): Fixes the gnome-config check
-
-2000-04-10 Dan Winship <danw@helixcode.com>
-
- * gnome-pilot.m4 (PILOT_LIBS): Fix a bug introduced in the
- gnome-pilot-config to "gnome-config gpilot" change that caused not
- having pilot-link installed to become a fatal error.
+ * gnome-gettext.m4: Set BUILD_INCLUDED_LIBINTL to no for
+ better results with newer versions of gettext.
2000-02-26 James Henstridge <james@daa.com.au>
- * gnome-gettext.m4: fix up check of LINGUAS variable so that we don't
- get problems when LINGUAS contains `en' and ALL_LINGUAS contains
- `en_GB' for instance.
-
-2000-02-22 Martin Baulig <martin@home-of-linux.org>
-
- * autogen.sh: Don't run libtoolize when `NO_LIBTOOLIZE' is set.
-
-2000-02-09 Raja R Harinath <harinath@cs.umn.edu>
-
- * autogen.sh: Fix GNUism introduced in the previous fix.
-
-2000-02-08 Miguel de Icaza <miguel@gnu.org>
-
- * autogen.sh: Handle non GNU find programs.
-
-2000-02-05 Martin Baulig <martin@home-of-linux.org>
-
- * gnome-libgtop-types.m4 (AC_LIBGTOP_CHECK_TYPE): New macro. This
- is an improved version of AC_CHECK_TYPE which takes into account
- that we need to #include some other header files on some systems
- to get some types.
- (GNOME_LIBGTOP_TYPES): Check for <sys/bitypes.h> for Tru64 and
- use AC_LIBGTOP_CHECK_TYPE rather than AC_CHECK_TYPE.
-
-2000-01-26 Dave Camp <campd@oit.edu>
-
- * gnome-bonobo-check.m4 Include <bonobo.h> rather than
- <bonobo/gnome-object.h>
-
-2000-01-26 Dave Camp <campd@oit.edu>
-
- * gnome-bonobo-check.m4: Check for bonobo_object_get_type() rather
- than gnome_object_get_type().
-
-2000-01-23 Peter Teichman <peter@helixcode.com>
-
- * gnome-pilot.m4: i broke the version-checking macro for other
- distribs in my last commit. fixing that now.
-
-2000-01-22 Peter Teichman <peter@helixcode.com>
-
- * gnome-pilot.m4 (PILOT_LIBS): fix the version-checking macro for
- debian
-
-2000-01-20 Raja R Harinath <harinath@cs.umn.edu>
-
- * gnome-objc-checks.m4: Look for sched_yield in -lrt, too.
- Suggested by Drazen Kazar <dave@srce.hr>.
-
-2000-01-16 Vadim Strizhevsky <vadim@optonline.net>
-
- * gnome-pilot.m4: Fix typo in PILOT_LINK_HOOK.
-
-2000-01-15 Eskil Heyn Olsen <deity@eskil.dk>
-
- * gnome-pilot.m4: PILOT_LINK_HOOK now check pilot-link version.
- GNOME_PILOT_CHECK defaults to requiring 0.9.3.
-
-2000-01-09 Martin Baulig <martin@home-of-linux.org>
-
- * gnome-libgtop-check.m4: Applied patch from R. Bernstein
- <rocky@panix.com> - print a better error message when
- LibGTop's major version number mismatches.
-
-1999-12-25 Martin Baulig <martin@home-of-linux.org>
-
- * gnome-pilot.m4: Applied patch from Colin Walters to make
- it compile under Debian GNU/Linux.
-
-1999-12-05 Martin Baulig <martin@home-of-linux.org>
-
- * gnome-libgtop-checks.m4: Removed all guile variables.
-
-1999-11-18 Jeff Garzik <jgarzik@mandrakesoft.com>
-
- * gnome-xml-check.m4: Better scoping of below fix.
-
-1999-11-16 Jeff Garzik <jgarzik@mandrakesoft.com>
-
- * gnome-xml-check.m4: always AC_SUBST GNOME_XML_LIB, so that
- output variable will always be present.
-
-1999-11-09 Eskil Heyn Olsen <deity@eskil.dk>
-
- * gnome-pilot.m4: uses test -r instead of test -e, was reported as
- a portability bug wrt solaris.
-
-1999-10-31 Eskil Heyn Olsen <deity@eskil.dk>
-
- * gnome-pilot.m4: added PILOT_LINK_CHECK, used by
- GNOME_PILOT_CHECK. Adds --with-pisock=$dir_for_pilot_link.
-
-1999-10-24 Jacob Berkman <jberkman@andrew.cmu.edu>
-
- * gnome-ghttp-check.m4: this should be a better fix
-
-1999-10-21 Jacob Berkman <jberkman@andrew.cmu.edu>
-
- * gnome-ghttp-check.m4: use a temp value until we know that
- ghttp exists. This will hopefully fix building on Solaris
- machines
+ * gnome-gettext.m4: fix up check of LINGUAS variable so that we don't
+ get problems when LINGUAS contains `en' and ALL_LINGUAS contains
+ `en_GB' for instance. This patch is the same as the one applied to
+ HEAD.
1999-09-26 Jody Goldberg <jgoldberg@home.com>
diff --git a/macros/gnome-gettext.m4 b/macros/gnome-gettext.m4
index 5b173b7396..cfafa19ec6 100644
--- a/macros/gnome-gettext.m4
+++ b/macros/gnome-gettext.m4
@@ -12,7 +12,7 @@
# serial 5
-AC_DEFUN([AM_GNOME_WITH_NLS],
+AC_DEFUN(AM_GNOME_WITH_NLS,
[AC_MSG_CHECKING([whether NLS is requested])
dnl Default is enabled NLS
AC_ARG_ENABLE(nls,
@@ -26,7 +26,7 @@ AC_DEFUN([AM_GNOME_WITH_NLS],
dnl If we use NLS figure out what method
if test "$USE_NLS" = "yes"; then
-# AC_DEFINE(ENABLE_NLS)
+ AC_DEFINE(ENABLE_NLS)
# AC_MSG_CHECKING([whether included gettext is requested])
# AC_ARG_WITH(included-gettext,
# [ --with-included-gettext use the GNU gettext library included here],
@@ -212,7 +212,7 @@ AC_DEFUN([AM_GNOME_WITH_NLS],
AC_SUBST(POSUB)
])
-AC_DEFUN([AM_GNOME_GETTEXT],
+AC_DEFUN(AM_GNOME_GETTEXT,
[AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AC_PROG_CC])dnl
AC_REQUIRE([AC_PROG_RANLIB])dnl
diff --git a/po/.cvsignore b/po/.cvsignore
deleted file mode 100644
index c2a0771f2e..0000000000
--- a/po/.cvsignore
+++ /dev/null
@@ -1,10 +0,0 @@
-*.gmo
-*.mo
-Makefile
-Makefile.in
-Makefile.in.in
-POTFILES
-cat-id-tbl.c
-stamp-cat-id
-evolution.pot
-messages
diff --git a/po/ChangeLog b/po/ChangeLog
deleted file mode 100644
index 4697d2ddaf..0000000000
--- a/po/ChangeLog
+++ /dev/null
@@ -1,1944 +0,0 @@
-2001-05-22 András Tímár <timar@gnome.hu>
-
- * hu.po: Updated Hungarian translation
-
-2001-05-21 Héctor García Álvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2001-05-21 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * nn.po: removed 3 old entries not in utf-8
-
-2001-05-21 Kjartan Maraas <kmaraas@gnome.org>
-
- * POTFILES.in: Updated.
- * no.po: Updated Norwegian translation.
-
-2001-05-21 Szabolcs Ban <shooby@gnome.hu>
-
- * hu.po: Updated Hungarian translation by
- Andras Timar <timar@gnome.hu>
-
-2001-05-19 Matthias Warkus <mawarkus@gnome.org>
-
- * de.po: Updated German translation.
-
-2001-05-19 Akira TAGOH <tagoh@gnome.gr.jp>
-
- * ja.po: Updated Japanese translation.
-
-2001-05-16 JP Rosevear <jpr@ximian.com>
-
- * POTFILES.in: Remove importers/evolution-gnomecard-importer.c
-
-2001-05-16 JP Rosevear <jpr@ximian.com>
-
- * POTFILES.in: Remove camel/camel-pkcs7-context.c
-
-2001-05-16 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2001-05-15 Chris Toshok <toshok@ximian.com>
-
- * POTFILES.in: e-minicard-view-model.c ->
- e-addressbook-reflow-adapter.c
-
-2001-05-15 Szabolcs Ban <shooby@gnome.hu>
-
- * hu.po: Updated Hungarian translation by
- Andras Timar <timar@gnome.hu>
-
-2001-05-15 Stanislav Visnovsky <visnovsky@nenya.ms.mff.cuni.cz>
-
- * sk.po: Updated Slovak translation.
-
-2001-05-15 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2001-05-12 Gediminas Paulauskas <menesis@delfi.lt>
-
- * po/POTFILES.in: update with new/moved files.
-
-2001-05-10 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2001-05-08 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2001-05-08 Jarkko Ranta <jjranta@cc.joensuu.fi>
-
- * fi.po: Updated Finnish translation.
-
-2001-05-07 Gediminas Paulauskas <menesis@delfi.lt>
-
- * POTFILES.in: add mail/mail-search.c
-
-2001-05-05 Gediminas Paulauskas <menesis@delfi.lt>
-
- * lt.po: Updated Lithuanian translation.
-
-2001-05-05 Héctor García Álvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2001-05-03 Matthias Warkus <mawarkus@gnome.org>
-
- * de.po: Updated German translation
-
-2001-05-02 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * az.po: Updated Azeri file
-
-2001-04-29 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2001-04-28 Jarkko Ranta <jjranta@cc.joensuu.fi>
-
- * fi.po: Updated Finnish translation.
-
-2001-04-28 Peter Williams <peterw@ximian.com>
-
- * POTFILES.in: Reflect Danw's move of mail/session.c to
- mail/mail-session.c
-
-2001-04-27 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2001-04-26 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation again.
-
-2001-04-26 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2001-04-25 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
- * POTFILES.in: Major overhaul.
-
-2001-04-25 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2001-04-24 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2001-04-24 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2001-04-24 Fatih Demir <kabalak@gtranslator.org>
-
- * tr.po: Committed updated Turkish translation
- by G‹Ókem Cetin.
-
-2001-04-23 Jeffrey Stedfast <fejj@ximian.com>
-
- * POTFILES.in: Added mail/message-browser.c and removed
- mail/mail-view.c
-
-2001-04-23 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2001-04-23 Matthias Warkus <mawarkus@gnome.org>
-
- * de.po: Updated.
-
-2001-04-23 Szabolcs Ban <shooby@gnome.hu>
-
- * hu.po: Updated translation by Andras Timar <timar@gnome.hu>
-
-2001-04-21 Almer S. Tigelaar <almer@gnome.org>
-
- For Dirk-Jan C. Binnema <dirkjan@gnome.org> :
-
- * nl.po: Updated Dutch translation
-
-2001-04-20 Szabolcs Ban <shooby@gnome.hu>
-
- * hu.po: Updated translation by Andras Timar <timar@gnome.hu>
-
-2001-04-20 Christopher R. Gabriel <cgabriel@softwarelibero.org>
-
- * it.po: Updates from Clara Tattoni <clara.tattoni@libero.it>
-
-2001-04-20 Akira TAGOH <tagoh@gnome.gr.jp>
-
- * ja.po: Updated Japanese translation.
-
-2001-04-18 Richard Hult <rhult@codefactory.se>
-
- * nl.po: Fixed two fatal errors.
-
-2001-04-18 Almer S. Tigelaar <almer@gnome.org>
-
- For Dirk-Jan C. Binnema <dirkjan@gnome.org> :
-
- * nl.po: Updated Dutch translation.
-
-2001-04-18 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2001-04-17 Stanislav Visnovsky <visnovsky@nenya.ms.mff.cuni.cz>
-
- * sk.po: Updated Slovak translation.
-
-2001-04-17 Jarkko Ranta <jjranta@cc.joensuu.fi>
-
- * fi.po: Updated Finnish translation.
-
-2001-04-17 Akira TAGOH <tagoh@gnome.gr.jp>
-
- * ja.po: Updated Japanese translation.
-
-2001-04-15 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2001-04-12 Jeffrey Stedfast <fejj@ximian.com>
-
- * POTFILES.in: Removed openpgp-utils.c and added the camel-pgp-*.c
- files. Added camel-cipher-context.c also.
-
-2001-04-12 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2001-04-12 Stanislav Visnovsky <visnovsky@nenya.ms.mff.cuni.cz>
-
- * sk.po: Updated Slovak translation.
-
-2001-04-12 Christian Rose <menthos@menthos.com>
-
- * sv.po: Fixed Swedish translation. Thanks to G‹Óan Uddeborg
- <goeran@uddeborg.pp.se>.
-
-2001-04-12 Mikael Hallendal <micke@codefactory.se>
-
- * fi.po: Removed a trailing 'k' making an error while compiling.
-
-2001-04-11 Jarkko Ranta <jjranta@cc.joensuu.fi>
-
- * fi.po: Updated Finnish translation.
-
-2001-04-11 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2001-04-11 Matthias Warkus <mawarkus@gnome.org>
-
- * de.po: Commit to be sure.
-
-2001-04-11 Fatih Demir <kabalak@gtranslator.org>
-
- * tr.po: Committed updated Turkish translation.
-
-2001-04-11 Christopher James Lahey <clahey@ximian.com>
-
- * POTFILES.in: Add the galview.xml files here.
-
-2001-04-08 Akira TAGOH <tagoh@gnome.gr.jp>
-
- * ja.po: Updated Japanese translation.
-
-2001-04-04 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian (bokméÍ) translation.
-
-2001-04-04 Fatih Demir <kabalak@gtranslator.org>
-
- * tr.po: Committed updated Turkish translation
- by G‹Ókem.
-
-2001-04-01 Jarkko Ranta <jjranta@cc.joensuu.fi>
-
- * fi.po: Another Finnish update.
-
-2001-03-29 Jarkko Ranta <jjranta@cc.joensuu.fi>
-
- * fi.po: Updated Finnish translation.
-
-2001-03-29 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2001-03-25 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2001-03-25 Fatih Demir <kabalak@gtranslator.org>
-
- * tr.po: Committed updated Turkish translation
- by G‹Ókem.
-
-2001-03-22 Dan Winship <danw@ximian.com>
-
- * az.po: Change \" to ' in translations for .oaf files, since
- various bugs conspire to prevent double quotes from working there
- currently.
-
-2001-03-23 Akira TAGOH <tagoh@gnome.gr.jp>
-
- * ja.po: Updated Japanese translation.
-
-2001-03-21 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2001-03-20 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * az.po: Updated Azeri file
-
-2001-03-20 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian (bokméÍ) translation.
-
-2001-03-19 Jarkko Ranta <jjranta@cc.joensuu.fi>
-
- * fi.po: Updated Finnish translation.
-
-2001-03-18 Fatih Demir <kabalak@gtranslator.org>
-
- * tr.po: Small update by G‹Ókem Cetin.
-
-2001-03-16 Jeffrey Stedfast <fejj@ximian.com>
-
- * POTFILES.in: Removed filter-system-flag.c.
-
-2001-03-16 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian (bokméÍ) translation.
-
-2001-03-15 Matthias Warkus <mawarkus@gnome.org>
-
- * de.po: Update.
-
-2001-03-15 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2001-03-15 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian (bokméÍ) translation.
-
-2001-03-15 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * az.po: Added Azeri file
- * {es,fi,fr,ga,hu,nl,nn,no,sk,sl,sv}.po: corrected headers
- and/or syntax errrors
-
-2001-03-15 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2001-03-14 Gediminas Paulauskas <menesis@delfi.lt>
-
- * lt.po: Updated Lithuanian translation.
-
-2001-03-13 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian (bokméÍ) translation.
- * POTFILES.in: Updated with a bunch of missing files.
-
-2001-03-12 Jarkko Ranta <jjranta@cc.joensuu.fi>
-
- * fi.po: Updated Finnish translation.
-
-2001-03-11 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2001-03-11 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2001-03-10 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2001-03-08 Jeffrey Stedfast <fejj@ximian.com>
-
- * POTFILES.in: Removed mail-vtrash.c
-
-2001-03-08 Fatih Demir <kabalak@gtranslator.org>
-
- * tr.po: Committed updated Turkish translation by G‹Ókem Cetin.
-
-2001-03-05 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian (bokméÍ) translation.
- * POTFILES.in: Updated with a bunch of missing files.
-
-2001-03-05 JP Rosevear <jpr@ximian.com>
-
- * POTFILES.in: update
-
-2001-03-04 Damon Chaplin <damon@ximian.com>
-
- * POTFILES.in: added e-util/e-time-utils.c and
- widgets/misc/e-cell-date-edit.c
-
-2001-03-02 Stanislav Visnovsky <visnovsky@nenya.ms.mff.cuni.cz>
-
- * sk.po: Updated Slovak translation.
-
-2001-03-01 Dan Winship <danw@ximian.com>
-
- * POTFILES.in: remove camel-imap-auth.c, add sasl stuff
-
-2001-02-27 JP Rosevear <jpr@ximian.com>
-
- * da.po: Correct a couple errors
-
-2001-02-25 Gediminas Paulauskas <menesis@delfi.lt>
-
- * lt.po: Updated Lithuanian translation.
-
-2001-02-24 Almer S. Tigelaar <almer@gnome.org>
-
- * nl.po: Updated Dutch translation.
-
-2001-02-24 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2001-02-24 Michael Meeks <michael@ximian.com>
-
- * POTFILES.in: remove stale calender oaf.in file
-
-2001-02-21 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2001-02-22 Christopher R. Gabriel <cgabriel@softwarelibero.org>
-
- * it.po: Updated italian translation from Clara Tattoni
- <clara.tattoni@libero.it>
-
-2001-02-22 Gediminas Paulauskas <menesis@delfi.lt>
-
- * POTFILES.in: Removed references to camel-vee-*.c
-
-2001-02-21 Jeffrey Stedfast <fejj@ximian.com>
-
- * POTFILES.in: Removed references to mail-threads.c
-
-2001-02-19 Stanislav Visnovsky <visnovsky@nenya.ms.mff.cuni.cz>
-
- * sk.po: Updated Slovak translation.
-
-2001-02-16 Akira TAGOH <tagoh@gnome.gr.jp>
-
- * ja.po: Updated Japanese translation.
-
-2001-02-16 Matthias Warkus <mawarkus@gnome.org>
-
- * de.po: Update.
-
-2001-02-16 Stanislav Visnovsky <visnovsky@nenya.ms.mff.cuni.cz>
-
- * sk.po: Updated Slovak translation.
-
-2001-02-16 Christopher R. Gabriel <cgabriel@softwarelibero.org>
-
- * it.po: Updated italian translation from Clara Tattoni
- <clara.tattoni@libero.it>
-
-2001-02-14 Stanislav Visnovsky <visnovsky@nenya.ms.mff.cuni.cz>
-
- * sk.po: Updated Slovak translation.
-
-2001-02-13 Christophe Merlet <redfox@eikonex.org>
-
- * fr.po: Updated French translation.
-
-2001-02-13 JP Rosevear <jpr@ximian.com>
-
- * POTFILES.in: Remove dead glade file that was not being disted
-
-2001-02-13 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
- * POTFILES.in: Added *.oaf.in files.
-
-2001-02-11 Stanislav Visnovsky <visnovsky@nenya.ms.mff.cuni.cz>
-
- * sk.po: Updated Slovak translation.
-
-2001-02-11 Jeffrey Stedfast <fejj@ximian.com>
-
- * POTFILES.in: removed e-contact-editor-strings.h
-
-2001-02-11 Gediminas Paulauskas <menesis@delfi.lt>
-
- * *.po: added strings from .desktop files, they are translated here
- because we use xml-i18n-tools.
- * POTFILES.in: added these *.desktop files, missing *.glade files,
- removed *.glade.h and similar files.
- * POTFILES.skip: removed all *.glade.h entries - they do not exist
- anymore.
-
-2001-02-10 Fatih Demir <kabalak@gtranslator.org>
-
- * tr.po: Took over the stable tr.po also to HEAD.
-
-2001-02-09 Anders Carlsson <andersca@codefactory.se>
-
- * sl.po: Add \n to fix a compile error.
-
-2001-02-09 Christophe Merlet <redfox@eikonex.org>
-
- * fr.po: Updated French translation.
-
-2001-02-09 Stanislav Visnovsky <visnovsky@nenya.ms.mff.cuni.cz>
-
- * sk.po: Updated Slovak translation.
-
-2001-02-09 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2001-02-08 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2001-02-07 Fatih Demir <kabalak@kabalak.net>
-
- * tr.po: Committed updated Turkish translation by
- G‹Ókem Cetin.
-
-2001-02-07 Christopher R. Gabriel <cgabriel@bug.rulez.org>
-
- * it.po: Updated italian translation from Clara Tattoni
- <clara.tattoni@libero.it>
-
-2001-02-06 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2001-02-02 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2001-01-31 Szabolcs Ban <shooby@gnome.hu>
-
- * hu.po: Terminology fixes by Andras Timar <timar@gnome.hu>
-
-2001-01-30 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2001-01-30 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2001-01-29 Stanislav Visnovsky <visnovsky@nenya.ms.mff.cuni.cz>
-
- * sk.po: Added initial Slovak translation.
-
-2001-01-29 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2001-01-27 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2001-01-27 Julian Missig <julian@jabber.org>
-
- * POTFILES.in: Someone forgot to update this when removing a file it
- uses. This was preventing evolution from compiling...
-
-2001-01-26 Gustavo Maciel Dias Vieira <gdvieira@zaz.com.br>
-
- * pt_BR.po: Updated brazilian portuguese translation
-
-2001-01-26 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2001-01-26 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2001-01-24 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2001-01-24 Szabolcs Ban <shooby@gnome.hu>
-
- * hu.po: Tons of fixes by Andras and Emese (spelling,
- terminology, headers)
-
-2001-01-23 Martin NorbçÄk <d95mback@dtek.chalmers.se>
-
- * sv.po: Updated Swedish translation.
-
-2001-01-23 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2001-01-22 Dan Winship <danw@ximian.com>
-
- * POTFILES.in: Update for filter code moves
-
-2001-01-19 Akira TAGOH <tagoh@gnome.gr.jp>
-
- * ja.po: Updated Japanese translation.
-
-2001-01-19 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2001-01-18 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian (bokméÍ) translation.
- * update.sh: Removed old script.
-
-2001-01-17 Dave Camp <dave@ximian.com>
-
- * POTFILES.in: Removed addressbook/gui/widgets/test-minicard-view.c,
- camel/providers/local/camel-mbox-provider.c,
- notes/component-factory.c, notes/main.c, and
- calendar/gui/gnome-month-item.c, and calendar/gui/alarm-notify.c.
-
-2001-01-17 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2001-01-16 Martin NorbçÄk <d95mback@dtek.chalmers.se>
-
- * sv.po: Updated Swedish translation, using xml-i18n-update.
-
-2001-01.16 Kenneth Christiansen <kenneth@gnu.org>
-
- * POTFILES.(in|skip): Updated after consulting Michael.
-
-2001-01-16 Martin NorbçÄk <d95mback@dtek.chalmers.se>
-
- * sv.po: Updated Swedish translation, using xml-i18n-update.
-
-2001-01-16 Christopher R. Gabriel <cgabriel@softwarelibero.org>
-
- * it.po: Updated italian translation from Clara Tattoni
- <clara.tattoni@libero.it>
-
-2001-01-15 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2001-01-15 Christopher R. Gabriel <cgabriel@softwarelibero.org>
-
- * it.po: Updated italian translation from Clara Tattoni
- <clara.tattoni@libero.it>
-
-2001-01-15 Richard Hult <rhult@codefactory.se>
-
- * sv.po: Updated Swedish translation.
-
-2001-01-11 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2001-01-11 Akira TAGOH <tagoh@gnome.gr.jp>
-
- * ja.po: Updated Japanese translation.
-
-2001-01-10 Christophe Merlet <redfox@eikonex.org>
-
- * fr.po: Updated French translation.
-
-2001-01-10 Jeffrey Stedfast <fejj@helixcode.com>
-
- * POTFILES.in: Added all the new source files and removed the old
- ones, yadda yadda.
-
-2001-01-09 Federico Mena Quintero <federico@helixcode.com>
-
- * POTFILES.in: Removed .oaf.in files until the whole of Evolution
- uses the xml-i18n-tools framework.
-
-2001-01-09 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2001-01-09 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2001-01-09 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian (bokméÍ) translation.
-
-2001-01-07 Benedikt Roth <Benedikt.Roth@gmx.net>
-
- * de.po: Updated German translation
-
-2001-01-07 Christophe Merlet <redfox@eikonex.org>
-
- * fr.po: Updated French translation.
-
-2001-01-06 Fatih Demir <kabalak@gmx.net>
-
- * ko.po: Committed updated Korean translation.
-
-2001-01-06 Jarkko Ranta <jjranta@cc.joensuu.fi>
-
- * fi.po: Updated Finnish translation.
-
-2001-01-04 JP Rosevear <jpr@helixcode.com>
-
- * POTFILES.in: Remove non-existent file
-
-2001-01-03 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2001-01-03 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2001-01-02 Chris Toshok <toshok@helixcode.com>
-
- * POTFILES.in: add addressbook-config.c, addressbook-storage.c,
- and addressbook-config.glade.
-
-2001-01-01 Michael Meeks <michael@helixcode.com>
-
- * POTFILES.in: remove all the stale addressbook entries.
-
-2000-12-27 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-12-25 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2000-12-23 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2000-12-23 JP Rosevear <jpr@helixcode.com>
-
- * POTFILES.in: Remove deleted file
-
-2000-12-22 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2000-12-22 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-12-21 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-12-19 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2000-12-18 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2000-12-18 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-12-18 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-12-18 Christopher R. Gabriel <cgabriel@softwarelibero.org>
-
- * it.po: Updated italian translation from Clara Tattoni
- <clara.tattoni@libero.it>
-
-2000-12-15 Federico Mena Quintero <federico@helixcode.com>
-
- * POTFILES.in: Removed getdate.y.
-
- * POTFILES.ignore: Ditto.
-
-2000-12-15 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-12-14 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-12-14 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
- * POTFILES.in: This too.
- * .potignore: Adjust to fit the new tools.
-
-2000-12-14 Christian Rose <menthos@menthos.com>
-
- * sv.po: Added Id tag to easier trace changes.
-
-2000-12-13 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-12-12 Dan Winship <danw@helixcode.com>
-
- * POTFILES.in: Update for reality. (Mostly from campd.)
-
-2000-12-12 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-12-11 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2000-12-11 Akira TAGOH <tagoh@gnome.gr.jp>
-
- * ja.po: Updated Japanese translation.
-
-2000-12-06 Christopher R. Gabriel <cgabriel@softwarelibero.org>
-
- * it.po: updated italian translation from
- Clara Tattoni <clara.tattoni@libero.it>
-
-2000-12-05 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-12-05 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian (bokméÍ) translation.
-
-2000-12-04 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-12-03 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2000-12-03 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-12-02 Almer S. Tigelaar <almer1@dds.nl>
-
- * nl.po: Updated Dutch translation.
-
-2000-12-01 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-11-30 Zbigniew Chyla <chyla@gnome.pl>
-
- * pl.po: Updated Polish translation.
-
-2000-11-30 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian (bokméÍ) translation.
-
-2000-11-30 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-11-29 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2000-11-28 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-11-26 Almer S. Tigelaar <almer1@dds.nl>
-
- * nl.po: Updated Dutch translation.
-
-2000-11-26 Christopher R. Gabriel <cgabriel@softwarelibero.org>
-
- * it.po: Updated italian translation from Clara Tattoni
- <clara.tattoni@libero.it>
-
-2000-11-24 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-11-21 Federico Mena Quintero <federico@helixcode.com>
-
- * POTFILES.in: Removed gncal-todo.c.
-
-2000-11-21 Jeffrey Stedfast <fejj@helixcode.com>
-
- * POTFILES.in: Removed mail/message-thread.c and added
- camel/camel-folder-thread.c
-
-2000-11-20 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2000-11-19 Almer S. Tigelaar <almer1@dds.nl>
-
- * nl.po: Updated Dutch translation.
-
-2000-11-18 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-11-17 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2000-11-17 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-11-17 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-11-16 Matthias Warkus <mawa@iname.com>
-
- * de.po: Major update.
-
-2000-11-14 Jarkko Ranta <jjranta@cc.joensuu.fi>
-
- * fi.po: Updated Finnish translation.
-
-2000-11-14 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-11-06 Michael Meeks <michael@helixcode.com>
-
- * update.pl (GenHeaders, GeneratePot): Kill abortive
- glade file translation code. It can't cope with line
- breaks in the node content!
-
-2000-11-13 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-11-10 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2000-11-08 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-11-08 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2000-11-08 Akira Tagoh <tagoh@gnome.gr.jp>
-
- * ja.po: Updated Japanese translation.
-
-2000-11-07 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-11-06 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: Updated Spanish translation.
-
-2000-11-06 Dan Winship <danw@helixcode.com>
-
- * POTFILES.in: Remove mail-local-storage.c
-
-2000-11-06 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-11-05 Jesus Bravo Alvarez <jba@pobox.com>
-
- * gl.po: Updated Galician translation.
-
-2000-11-05 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-11-05 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-11-05 Michael Meeks <michael@helixcode.com>
-
- * POTFILES.in: update all of ui/*.h to ui/*.xml
-
- * Makefile.i18npatch: sort out the xml bits.
-
- * ui-extract.pl: add from Kenneth.
-
- * update.pl: Update to the version in bonobo.
-
-2000-11-04 Zbigniew Chyla <cyba@gnome.pl>
-
- * pl.po: Updated Polish translation.
-
-2000-11-04 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-11-03 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2000-11-03 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-11-02 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2000-11-02 Christopher James Lahey <clahey@helixcode.com>
-
- * fi.po: Fixed a missing ".
-
-2000-11-02 Jarkko Ranta <jjranta@cc.joensuu.fi>
-
- * fi.po: Updated Finnish translation.
-
-2000-11-02 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-11-01 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-11-01 Gediminas Paulauskas <menesis@delfi.lt>
-
- * lt.po: Updated Lithuanian translation.
-
-2000-11-01 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * ca.po: Updated Catalan file
-
-2000-10-31 Christopher R. Gabriel <cgabriel@softwarelibero.org>
-
- * it.po: Updated italian translation from Clara Tattoni
- <clara.tattoni@libero.it>
-
-2000-10-31 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-10-31 Almer S. Tigelaar <almer1@dds.nl>
-
- * nl.po: Updated Dutch translation.
-
-2000-10-31 Kjartan Maraas <kmaraas@gnome.org>
-
- * POTFILES.in: updated this.
- * no.po: Updated this too.
-
-2000-10-30 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian (bokméÍ) translation.
-
-2000-10-30 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-10-30 Christopher R. Gabriel <cgabriel@softwarelibero.org>
-
- * it.po: more updates from Clara Tattoni <clara.tattoni@libero.it>
-
-2000-10-30 Federico Mena Quintero <federico@helixcode.com>
-
- * pl.po: Removed spurious character that kept it from building.
-
-2000-10-30 Zbigniew Chyla <cyba@gnome.pl>
-
- * pl.po: Updated Polish translation.
-
-2000-10-29 Christopher R. Gabriel <cgabriel@softwarelibero.org>
-
- * it.po: Updated Italian translation from Clara Tattoni
- <clara.tattoni@libero.it>
-
-2000-10-29 Zbigniew Chyla <cyba@gnome.pl>
-
- * pl.po: Updated Polish translation.
-
-2000-10-29 Matthias Warkus <mawa@iname.com>
-
- * de.po: Update.
-
-2000-10-28 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * ca.po: Added Catalan file
-
-2000-10-26 Joaquim Fellmann <joaquim@mail.dotcom.fr>
-
- * fr.po: Updated French translation.
-
-2000-10-26 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian (bokméÍ) translation.
-
-2000-10-26 Matthias Warkus <mawa@iname.com>
-
- * de.po: Huge update. Still not all of the "Could/Cannot" stuff
- fixed to correct "...konnte nicht...werden" translation.
-
-2000-10-26 Joaquim Fellmann <joaquim@mail.dotcom.fr>
-
- * fr.po: Updated French translation.
-
-2000-10-25 Christopher R. Gabriel <cgabriel@softwarelibero.org>
-
- * it.po: Updated Italian translation from Clara Tattoni
- <clara.tattoni@libero.it>
-
-2000-10-25 Christophe Merlet <christophe@merlet.net>
-
- * fr.po: Updated French translation.
-
-2000-10-25 Akira TAGOH <tagoh@gnome.gr.jp>
-
- * ja.po: Updated Japanese translation.
-
-2000-10-24 Dan Winship <danw@helixcode.com>
-
- * POTFILES.in: Add lots of camel and filter files.
-
-2000-10-23 Dan Winship <danw@helixcode.com>
-
- * POTFILES.in: Remove removed composer files
-
-2000-10-22 Robert Brady <rwb197@zepler.org>
-
- * en_GB.po: Added British translation.
-
-2000-10-20 Jarkko Ranta <jjranta@cc.joensuu.fi>
-
- * fi.po: Updated Finnish translation.
-
-2000-10-19 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-10-19 Christophe Merlet <christophe@merlet.net>
-
- * fr.po: Updated French translation.
-
-2000-10-19 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-10-15 Kjartan Maraas <kmaraas@gnome.org>
-
- * POTFILES.in: Updated for the upcoming release.
- * no.po: Same here.
-
-2000-10-14 Kjartan Maraas <kmaraas@gnome.org>
-
- * nn.po: Added Norwegian (nynorsk) translation.
- * no.po: Updated Norwegian (bokméÍ) translation.
-
-2000-10-14 Almer S. Tigelaar <almer1@dds.nl>
-
- * nl.po: Updated Dutch translation.
-
-2000-10-14 Kjartan Maraas <kmaraas@gnome.org>
-
- * POTFILES.in: Added ui/*.h
-
-2000-10-14 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-10-13 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-10-13 Matthias Warkus <mawa@iname.com>
-
- * de.po: Updated.
-
-2000-10-10 Gediminas Paulauskas <menesis@delfi.lt>
-
- * lt.po: Added Lithuanian translation.
-
-2000-10-10 Christophe Merlet <christophe@merlet.net>
-
- * fr.po: Updated French translation.
-
-2000-10-10 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-10-08 HñÄtor Garcù Alvarez <hector@scouts-es.org>
-
- * es.po: updated Spanish translation.
-
-2000-10-08 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-10-08 Jesus Bravo Alvarez <jba@pobox.com>
-
- * gl.po: Updated Galician translation.
-
-2000-10-08 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-10-06 Christophe Merlet <christophe@merlet.net>
-
- * fr.po: Minors french translation updates.
-
-2000-10-06 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-10-05 HñÄtor Garcù Alvarez <hector@scouts-es.org>
-
- * es.po: updated Spanish translation.
-
-2000-10-04 HñÄtor Garcù Alvarez <hector@scouts-es.org>
-
- * es.po: updated Spanish translation.
-
-2000-10-04 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-10-03 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2000-10-03 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: updated Spanish translation.
-
-2000-10-02 Christophe Merlet <christophe@merlet.net>
-
- * fr.po: updated French translation.
-
-2000-10-02 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-10-01 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-09-29 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-09-28 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-09-28 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-09-27 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-09-26 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2000-09-26 Christian Rose <menthos@menthos.com>
-
- * sv.po: Completed the Swedish translation.
-
-2000-09-25 Christophe Merlet <christophe@merlet.net>
-
- * POTFILES.in: Reverted somes changes. Oups :(
-
-2000-09-25 Jarkko Ranta <jjranta@cc.joensuu.fi>
-
- * fi.po: Updated Finnish translation.
-
-2000-09-25 Christophe Merlet <christophe@merlet.net>
-
- * fr.po: Updated French translation.
- * POTFILES.in: Updated files list
-
-2000-09-21 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2000-09-20 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-09-19 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2000-09-18 Christopher James Lahey <clahey@helixcode.com>
-
- * POTFILES.in: Removed files that have been moved to gal.
-
-2000-09-16 Ettore Perazzoli <ettore@helixcode.com>
-
- * POTFILES.in: `alphabet.glade.h' is now in
- `addressbook/gui/widgets'.
-
-2000-09-14 Michael Meeks <michael@helixcode.com>
-
- * POTFILES.in: s/minicard/widgets/
-
-2000-09-12 Jarkko Ranta <jjranta@cc.joensuu.fi>
-
- * fi.po: corrected some mistakes
-
-2000-09-12 Ettore Perazzoli <ettore@helixcode.com>
-
- * POTFILES.in: Removed some files that are not there anymore.
-
-2000-09-12 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2000-09-12 Richard Hult <rhult@codefactory.se>
-
- * sv.po: Updated Swedish translation.
-
-2000-09-12 Jarkko Ranta <jjranta@cc.joensuu.fi>
-
- * fi.po: Added Finnish translation.
-
-2000-09-12 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-09-11 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2000-09-10 Almer S. Tigelaar <almer1@dds.nl>
-
- * nl.po: Made a small correction to dutch translation.
-
-2000-09-10 Almer S. Tigelaar <almer1@dds.nl>
-
- * nl.po: Update Dutch translation.
-
-2000-09-09 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2000-09-09 Akira TAGOH <tagoh@gnome.gr.jp>
-
- * ja.po: Updated Japanese translation.
-
-2000-09-09 Kai Lahmann <kl@linuxfaqs.de>
-
- * nl.po: Updated dutch translation from Dennis Smit <synap@area101.penguin.nl>
-
-2000-09-08 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2000-09-04 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-09-04 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2000-09-01 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2000-09-29 Andreas Hyden <a.hyden@cyberpoint.se>
-
- * sv.po: Updated Swedish translation.
-
-2000-08-29 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-08-29 Akira TAGOH <tagoh@gnome.gr.jp>
-
- * ja.po: Updated Japanese translation.
-
-2000-08-27 Joaquim Fellmann <joaquim@hrnet.fr>
-
- * fr.po: Updated French translation.
-
-2000-08-27 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-08-26 Jesus Bravo Alvarez <jba@pobox.com>
-
- * gl.po: Updated Galician translation.
-
-2000-08-25 Christopher James Lahey <clahey@helixcode.com>
-
- * POTFILES.in: Remove add addressbook/demo files from this.
-
-2000-08-25 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-08-23 Richard Hult <rhult@hem.passagen.se>
-
- * sv.po: Updated Swedish translation.
-
-2000-08-19 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2000-08-19 Matthias Warkus <mawa@iname.com>
-
- * de.po: Updated.
-
-2000-08-19 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
- * POTFILES.in: Added missing files that are in the build.
-
-2000-08-17 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-08-17 Kai Lahmann <kl@linuxfaqs.de>
-
- * de.po: Updated German translation
-
-2000-08-16 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-08-13 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
- * POTFILES.in: Added missing files that are in the build.
-
-2000-08-12 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
- * POTFILES.in: Added missing files that are in the build. Sorted in alphabet order
-
-
-2000-08-11 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-08-10 Akira TAGOH <at@ue-spacy.com>
-
- * ja.po: Updated Japanese translation.
-
-2000-08-08 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-08-07 Kjartan Maraas <kmaraas@gnome.org>
-
- * POTFILES.in: Added missing files that are in the build.
- * no.po: Updated Norwegian translation.
-
-2000-08-07 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-08-05 Fatih Demir <kabalak@gmx.net>
-
- * tr.po: Updated the Turkish translation.
-
-2000-08-04 Szabolcs BAN <shooby@gnome.hu>
-
- * hu.po: Updated Hungarian translations.
-
-2000-08-03 Alastair McKinstry <mckinstry@computer.org>
-
- * ga.po: Add Irish translation.
-
-2000-08-02 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * es.po,hu.po,it.po,sl.po: various syntax checkings (missing %s, %S
- instead of %s etc)
-
-2000-07-30 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-07-28 Szabolcs BAN <shooby@gnome.hu>
-
- * hu.po: Updated Hungarian translations.
-
-2000-07-27 Fatih Demir <kabalak@gmx.net>
-
- * tr.po: Updated the Turkish translation.
-
-2000-07-27 Fatih Demir <kabalak@gmx.net>
-
- * tr.po: Updated the Turkish translation.
-
-2000-07-26 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-07-24 Matthias Warkus <mawa@iname.com>
-
- * de.po: Updated German translation.
-
-2000-07-24 Fatih Demir <kabalak@gmx.net>
-
- * tr.po: Updated the Turkish translation.
-
-2000-07-24 Szabolcs BAN <shooby@gnome.hu>
-
- * hu.po: updated Hungarian translations...
-
-2000-07-24 Federico Mena Quintero <federico@helixcode.com>
-
- * it.po: Added missing \n.
-
-2000-07-23 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-07-23 Ettore Perazzoli <ettore@helixcode.com>
-
- * it.po: Updated Italian translation from Clara Tattoni
- <clara.tattoni@libero.it>.
-
-2000-07-21 Szabolcs BAN <shooby@gnome.hu>
-
- * hu.po: updated Hungarian translations...
-
-2000-07-21 Andreas Hyden <a.hyden@cyberpoint.se>
-
- * sv.po: Fixed an error.
-
-2000-07-19 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-07-16 Jesus Bravo Alvarez <jba@pobox.com>
-
- * gl.po: Updated Galician translation.
-
-2000-07-16 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2000-07-16 Andreas Hyden <a.hyden@cyberpoint.se>
-
- * sv.po: Updated Swedish translation.
-
-2000-07-15 Matthias Warkus <mawa@iname.com>
-
- * de.po: Updated. Should be complete and pretty usable.
-
-2000-07-13 Fatih Demir <kabalak@gmx.net>
-
- * tr.po: Updated the Turkish translation.
-
-2000-07-13 Valek Filippov <frob@df.ru>
-
- * ru.po: Updated russian translation.
-
-2000-07-10 Federico Mena Quintero <federico@helixcode.com>
-
- * POTFILES.in: Removed several calendar/gui files that are no
- longer there.
-
-2000-07-09 Federico Mena Quintero <federico@helixcode.com>
-
- * POTFILES.in: Removed calendar/gui/evolution-calendar-control.c
-
-2000-07-09 Valek Filippov <frob@df.ru>
-
- * ru.po: Updated russian translation.
-
-2000-07-09 Matthias Warkus <mawa@iname.com>
-
- * de.po: Rough cut at a complete German translation. Still needs a
- lot of love.
-
-2000-07-03 Ettore Perazzoli <ettore@helixcode.com>
-
- * POTFILES.in: Removed `e-select-names.c' and
- `select-name.glade.h' which were removed by Chris' commit.
-
-2000-06-30 Valek Filippov <frob@df.ru>
-
- * ru.po: Updated russian translation.
-
-2000-06-29 Valek Filippov <frob@df.ru>
-
- * ru.po: Updated russian translation.
-
-2000-06-28 Valek Filippov <frob@df.ru>
-
- * ru.po: Updated russian translation.
-
-2000-06-28 Kjartan Maraas <kmaraas@gnome.org>
-
- * POTFILES.in: Added a load of missing files.
- * no.po: Updated Norwegian translation.
-
-2000-06-27 Valek Filippov <frob@df.ru>
-
- * ru.po: Updated russian translation.
-
-2000-06-24 Valek Filippov <frob@df.ru>
-
- * ru.po: Updated russian translation.
-
-2000-06-21 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2000-06-20 Jesus Bravo Alvarez <jba@pobox.com>
-
- * pt.po: Updated Portuguese translation from
- Tiago Antao <tiagoantao@bigfoot.com>
-
-2000-06-19 Ettore Perazzoli <ettore@helixcode.com>
-
- * it.po: Italian translation from Clara Tattoni
- <clara.tattoni@libero.it>.
-
-2000-06-17 Jeffrey Stedfast <fejj@helixcode.com>
-
- * POTFILES.in: why the heck was
- camel/providers/imap/imap.c listed? Oh well, 'tis
- removed now...
-
-2000-06-17 Valek Filippov <frob@df.ru>
-
- * ru.po: Updated russian translation.
-
-2000-06-16 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2000-06-13 Valek Filippov <frob@df.ru>
-
- * ru.po: Updated russian translation.
-
-2000-06-11 Valek Filippov <frob@df.ru>
-
- * ru.po: Updated russian translation.
-
-2000-06-11 Fatih Demir <kabalak@gmx.net>
-
- * tr.po: Updated the Turkish translation.
-
-2000-06-10 Zbigniew Chyla <chyla@buy.pl>
-
- * pl.po: Added Polish translation.
-
-2000-06-10 Valek Filippov <frob@df.ru>
-
- * ru.po: Updated russian translation.
-
-2000-06-09 Fatih Demir <kabalak@gmx.net>
-
- * tr.po: Updated the Turkish translation.
-
-2000-06-08 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2000-06-06 Fatih Demir <kabalak@gmx.net>
-
- * tr.po: Finished it [ what about the caveat message?
- Translating it is much fun ;) ].
-
-2000-06-05 Kenneth Christiansen <kenneth@gnu.org>
-
- * README.tools: Added readme file, which explains the
- use of the newly checked in po tools.
-
- hmm, looking forward to tomorrow...viva los compleaÐs!
- :)
-
-2000-06-05 Fatih Demir <kabalak@gmx.net>
-
- * tr.po: A quick-update ( not fully finished ).
-
-2000-06-04 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-06-02 Ettore Perazzoli <ettore@helixcode.com>
-
- * it.po: New. Just a skeleton.
-
- * de.po: New, from Kai Lahmann <kl@linuxfaqs.de>.
-
- * POTFILES.in: Updated.
-
-2000-06-04 Kjartan Maraas <kmaraas@online.no>
-
- * no.po: Updated Norwegian translation.
-
-2000-06-03 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-06-02 Jesus Bravo Alvarez <jba@pobox.com>
-
- * pt.po: Added Portuguese translation from
- Tiago Antao <tiagoantao@bigfoot.com>
-
-2000-06-01 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-05-28 Fatih Demir <kabalak@gmx.net>
-
- * tr.po: Updated the Turkish translation.
-
-2000-05-28 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-05-27 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-05-26 Kjartan Maraas <kmaraas@online.no>
-
- * no.po: Updated Norwegian translation.
-
-2000-05-23 Kjartan Maraas <kmaraas@online.no>
-
- * no.po: Updated Norwegian translation.
-
-2000-05-23 Andreas Hyden <a.hyden@cyberpoint.se>
-
- * sv.po: Updated Swedish translation.
-
-2000-05-22 Yukihiro Nakai <nakai@gnome.gr.jp>
-
- * ja.po: Update from Akira TAGOH.
-
-2000-05-18 Kjartan Maraas <kmaraas@online.no>
-
- * no.po: Updated Norwegian translation.
-
-2000-05-18 Yukihiro Nakai <nakai@gnome.gr.jp>
-
- * ja.po: Update from Akira TAGOH.
-
-2000-05-14 Valek Filippov <frob@df.ru>
-
- * ru.po: updated russian translation.
-
-2000-05-14 Andreas Hyden <a.hyden@cyberpoint.se>
-
- * sv.po: Updated Swedish translation.
-
-2000-05-13 Andreas Hyden <a.hyden@cyberpoint.se>
-
- * sv.po: Updated Swedish translation.
-
-2000-05-13 Kjartan Maraas <kmaraas@online.no>
-
- * no.po: Updated Norwegian translation.
-
-2000-05-13 Valek Filippov <frob@df.ru>
-
- * POTFILES.in: added *.glade.h and *-strings.h files.
- * ru.po: updated russian translation.
-
-2000-05-12 Andreas Hyden <a.hyden@cyberpoint.se>
-
- * sv.po: Updated Swedish translation.
-
-2000-05-12 Kjartan Maraas <kmaraas@online.no>
-
- * no.po: Updated Norwegian translation.
-
-2000-05-10 Christopher James Lahey <clahey@helixcode.com>
-
- * POTFILES.in: Removed mail/mail-component.c.
-
-2000-05-09 Andreas Hyden <a.hyden@cyberpoint.se>
-
- * sv.po: Updated Swedish translation.
- * update.sh: Updated.
-
-2000-05-08 Andreas Hyden <a.hyden@cyberpoint.se>
-
- * New update.sh script from Kenneth.
-
-2000-05-08 Andreas Hyden <a.hyden@cyberpoint.se>
-
- * sv.po: Updated Swedish translation.
-
-2000-05-08 HñÄtor Garcù ŽÁlvarez <hector@scouts-es.org>
-
- * es.po: added translation to spanish.
-
-2000-05-07 Kjartan Maraas <kmaraas@online.no>
-
- * no.po: Updated Norwegian translation.
-
-2000-05-07 Ettore Perazzoli <ettore@helixcode.com>
-
- * POTFILES.in: Remove `shell/e-shell-shortcut.c'.
-
-2000-05-05 Jesus Bravo Alvarez <jba@pobox.com>
-
- * gl.po: Updated Galician translation.
-
-2000-05-04 Fatih Demir <kabalak@gmx.net>
-
- * tr.po : Updated the Turkish translation .
-
-2000-05-03 Kjartan Maraas <kmaraas@online.no>
-
- * no.po: Updated Norwegian translation.
-
-2000-05-03 Valek Filippov <frob@df.ru>
-
- * ru.po: updated.
-
-2000-05-02 Ettore Perazzoli <ettore@helixcode.com>
-
- * POTFILES.in: Removed `shell/e-service.c'.
-
-2000-05-02 Andreas Hyden <a.hyden@cyberpoint.se>
-
- * sv.po: Updated Swedish translation.
-
-2000-05-01 Valek Filippov <frob@df.ru>
-
- * ru.po: Updated russian translation.
-
-2000-04-30 Arjan Scherpenisse <acscherp@wins.uva.nl>
-
- * nl.po: Added Dutch translation
-
-2000-04-25 Kjartan Maraas <kmaraas@online.no>
-
- * no.po: Updated Norwegian translation.
-
-2000-04-21 Andreas Hyden <a.hyden@cyberpoint.se>
-
- * sv.po: Updated Swedish translation.
-
-2000-04-20 Fatih Demir <kabalak@gmx.net>
-
- * tr.po : Added the Turkish translation .
-
-2000-04-20 Yukihiro Nakai <nakai@gnome.gr.jp>
-
- * ja.po: Initial Japanese translation from Akira Tagoh
-
-2000-04-19 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * da.po: Updated Danish file
-
-2000-04-19 Andreas Hyden <a.hyden@cyberpoint.se>
-
- * sv.po: Updated Swedish translation.
-
-2000-04-18 Vincent Renardias <vincent@redhat.com>
-
- * fr.po: creation.
-
-2000-04-18 Kjartan Maraas <kmaraas@online.no>
-
- * no.po: Updated Norwegian translation.
-
-2000-04-15 Valek Filippov <frob@df.ru>
-
- * ru.po: Updated russian translation.
-
-2000-04-15 Ettore Perazzoli <ettore@helixcode.com>
-
- * POTFILES.in: Removed `libversit/vcc.c' as its auto-generated and
- breaks.
-
-2000-04-12 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * da.po: Updated Danish file
-
-2000-04-10 Kjartan Maraas <kmaraas@online.no>
-
- * no.po: Updated Norwegian translation.
-
-2000-04-08 Jesus Bravo Alvarez <jba@pobox.com>
-
- * gl.po: Added Galician translation.
-
-2000-04-07 Yuri Syrota <rasta@renome.rovno.ua>
-
- * uk.po: Updated Ukrainian translation.
-
-2000-04-06 Andreas Hyden <a.hyden@cyberpoint.se>
-
- * sv.po: Updated Swedish translation.
-
-2000-04-04 Spiros Papadimitriou <spapadim+@cs.cmu.edu>
-
- * el.po: Added Greek translation.
-
-2000-04-04 Kjartan Maraas <kmaraas@online.no>
-
- * da.po: Added Danish translation from Kenneth Christiansen
- <kenneth@ripen.dk>.
- * no.po: Updated Norwegian translation.
- * ru.po: Added Russian translation from Valek Filippov
- <frob@df.ru>.
-
-2000-04-04 Andreas Hyden <a.hyden@cyberpoint.se>
-
- * sv.po: Updated Swedish translation.
-
-2000-04-04 Yuri Syrota <rasta@renome.rovno.ua>
-
- * uk.po: Added Ukrainian translation.
-
-2000-04-03 Richard Hult <rhult@hem.passagen.se>
-
- * sv.po: Updated Swedish translation.
-
-2000-04-03 Andreas Hyden <a.hyden@cyberpoint.se>
-
- * sv.po: Added Swedish translation.
-
-2000-04-01 Kjartan Maraas <kmaraas@online.no>
-
- * no.po: Added Norwegian translation.
-
-2000-04-01 Matt Loper <matt@helixcode.com>
-
- * .cvsignore: Added evolution.pot.
-
-2000-03-27 Federico Mena Quintero <federico@helixcode.com>
-
- * POTFILES.in: Removed the calendar files for now.
-
-1998-07-23 Nuno Ferreira <nmrf@rnl.ist.utl.pt>
-
- * pt.po: Added Portuguese translation.
-
-1996-06-12 Tristan Tarrant <ttarrant@suntlc.etnoteam.it>
-
- * it.po : Italian translations added
diff --git a/po/Makefile.i18npatch b/po/Makefile.i18npatch
deleted file mode 100644
index 98837e85c2..0000000000
--- a/po/Makefile.i18npatch
+++ /dev/null
@@ -1,63 +0,0 @@
---- Makefile.in.in.clean Sat Oct 28 15:31:52 2000
-+++ Makefile.in.in Sat Oct 28 16:11:18 2000
-@@ -33,7 +33,9 @@
- GMSGFMT = PATH=../src:$$PATH @GMSGFMT@
- MSGFMT = @MSGFMT@
- XGETTEXT = PATH=../src:$$PATH @XGETTEXT@
--MSGMERGE = PATH=../src:$$PATH msgmerge
-+MSGMERGE = PATH=$(top_srcdir)/po:../src:$$PATH perl $(top_srcdir)/po/update.pl --dist
-+GENPOT = PATH=$(top_srcdir)/po:../src:$$PATH perl $(top_srcdir)/po/update.pl --pot
-+GENHEAD = PATH=$(top_srcdir)/po:../src:$$PATH perl $(top_srcdir)/po/update.pl --headers
-
- DEFS = @DEFS@
- CFLAGS = @CFLAGS@
-@@ -47,7 +49,7 @@
- POFILES = @POFILES@
- GMOFILES = @GMOFILES@
- DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \
--stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES)
-+stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES) update.pl ui-extract.pl
-
- POTFILES = \
-
-@@ -83,12 +85,7 @@
- all-no:
-
- $(srcdir)/$(PACKAGE).pot: $(POTFILES)
-- $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \
-- --add-comments --keyword=_ --keyword=N_ \
-- --files-from=$(srcdir)/POTFILES.in \
-- && test ! -f $(PACKAGE).po \
-- || ( rm -f $(srcdir)/$(PACKAGE).pot \
-- && mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot )
-+ $(GENPOT)
-
- $(srcdir)/cat-id-tbl.c: stamp-cat-id; @:
- $(srcdir)/stamp-cat-id: $(PACKAGE).pot
-@@ -214,18 +211,21 @@
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
-- mv $$lang.po $$lang.old.po; \
-+ cp $$lang.po $$lang.old.po; \
- echo "$$lang:"; \
-- if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \
-- rm -f $$lang.old.po; \
-+ if $(MSGMERGE) $$lang; then \
-+ rm -f $$lang.old.po; \
- else \
- echo "msgmerge for $$cat failed!"; \
-- rm -f $$lang.po; \
- mv $$lang.old.po $$lang.po; \
- fi; \
- done
-
--POTFILES: POTFILES.in
-+.headerlock:
-+ $(GENHEAD)
-+ touch .headerlock
-+
-+POTFILES: POTFILES.in .headerlock
- ( if test 'x$(srcdir)' != 'x.'; then \
- posrcprefix='$(top_srcdir)/'; \
- else \
diff --git a/po/POTFILES.in b/po/POTFILES.in
deleted file mode 100644
index 07f692e0ce..0000000000
--- a/po/POTFILES.in
+++ /dev/null
@@ -1,253 +0,0 @@
-addressbook/backend/ebook/e-card.c
-addressbook/backend/ebook/e-card-simple.c
-addressbook/backend/ebook/e-destination.c
-addressbook/backend/ebook/GNOME_Evolution_Addressbook_VCard_Importer.oaf.in
-addressbook/backend/ebook/load-gnomecard-addressbook.c
-addressbook/backend/ebook/load-pine-addressbook.c
-addressbook/backend/ebook/test-client.c
-addressbook/backend/ebook/test-client-list.c
-addressbook/conduit/address-conduit.c
-addressbook/contact-editor/contact-editor.glade
-addressbook/contact-editor/e-contact-editor.c
-addressbook/contact-editor/e-contact-editor-confirm-delete.glade
-addressbook/contact-editor/e-contact-quick-add.c
-addressbook/contact-editor/fulladdr.glade
-addressbook/contact-editor/fullname.glade
-addressbook/gui/component/addressbook.c
-addressbook/gui/component/addressbook-config.c
-addressbook/gui/component/addressbook-config.glade
-addressbook/gui/component/addressbook-factory.c
-addressbook/gui/component/addressbook-storage.c
-addressbook/gui/component/e-address-widget.c
-addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in
-addressbook/gui/component/select-names/e-select-names-popup.c
-addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in
-addressbook/gui/component/select-names/select-names.glade
-addressbook/gui/search/e-addressbook-search-dialog.c
-addressbook/gui/widgets/alphabet.glade
-addressbook/gui/widgets/e-addressbook-view.c
-addressbook/gui/widgets/e-minicard.c
-addressbook/gui/widgets/e-minicard-control.c
-addressbook/gui/widgets/e-minicard-view.c
-addressbook/gui/widgets/e-addressbook-reflow-adapter.c
-addressbook/gui/widgets/gal-view-factory-minicard.c
-addressbook/printing/e-contact-print.glade
-calendar/cal-util/timeutil.c
-calendar/conduits/calendar/calendar-conduit.c
-calendar/conduits/todo/todo-conduit.c
-calendar/gui/alarm-notify/alarm-queue.c
-#calendar/gui/alarm-notify.c
-calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in
-calendar/gui/alarm-notify/notify-main.c
-calendar/gui/calendar-commands.c
-calendar/gui/calendar-model.c
-calendar/gui/calendar-summary.c
-calendar/gui/control-factory.c
-calendar/gui/dialogs/alarm-notify-dialog.c
-calendar/gui/dialogs/alarm-notify.glade
-calendar/gui/dialogs/cal-prefs-dialog.glade
-calendar/gui/dialogs/delete-comp.c
-calendar/gui/dialogs/save-comp.c
-calendar/gui/dialogs/task-editor.c
-calendar/gui/dialogs/task-editor-dialog.glade
-calendar/gui/e-calendar-table.c
-calendar/gui/e-day-view.c
-calendar/gui/e-day-view-time-item.c
-calendar/gui/e-day-view-top-item.c
-calendar/gui/e-itip-control.c
-calendar/gui/e-itip-control.glade
-calendar/gui/e-meeting-dialog.glade
-calendar/gui/e-tasks.c
-calendar/gui/event-editor.c
-calendar/gui/event-editor-dialog.glade
-calendar/gui/e-week-view.c
-calendar/gui/e-week-view-main-item.c
-calendar/gui/gnome-cal.c
-calendar/gui/GNOME_Evolution_Calendar.oaf.in
-calendar/gui/goto.c
-calendar/gui/goto-dialog.glade
-calendar/gui/main.c
-calendar/gui/print.c
-calendar/gui/tasks-control.c
-calendar/gui/tasks-migrate.c
-calendar/gui/weekday-picker.c
-calendar/pcs/query.c
-camel/camel-cipher-context.c
-camel/camel-disco-store.c
-camel/camel-filter-driver.c
-camel/camel-filter-search.c
-camel/camel-folder-search.c
-camel/camel-lock.c
-camel/camel-movemail.c
-camel/camel-pgp-context.c
-camel/camel-pgp-mime.c
-camel/camel-provider.c
-camel/camel-remote-store.c
-camel/camel-sasl-anonymous.c
-camel/camel-sasl-cram-md5.c
-camel/camel-sasl-digest-md5.c
-camel/camel-sasl-kerberos4.c
-camel/camel-sasl-login.c
-camel/camel-sasl-plain.c
-camel/camel-search-private.c
-camel/camel-service.c
-camel/camel-session.c
-camel/camel-smime-context.c
-camel/camel-store.c
-camel/camel-tcp-stream-ssl.c
-camel/camel-tcp-stream-openssl.c
-camel/camel-url.c
-camel/camel-vee-folder.c
-camel/camel-vtrash-folder.c
-#camel/providers/cache/camel-cache-map.c
-#camel/providers/cache/camel-cache-store.c
-camel/providers/imap/camel-imap-message-cache.c
-camel/providers/imap/camel-imap-command.c
-camel/providers/imap/camel-imap-folder.c
-camel/providers/imap/camel-imap-provider.c
-camel/providers/imap/camel-imap-store.c
-camel/providers/local/camel-local-provider.c
-camel/providers/local/camel-local-store.c
-camel/providers/local/camel-local-summary.c
-camel/providers/local/camel-maildir-folder.c
-camel/providers/local/camel-maildir-store.c
-camel/providers/local/camel-maildir-summary.c
-camel/providers/local/camel-mbox-folder.c
-camel/providers/local/camel-mbox-store.c
-camel/providers/local/camel-mbox-summary.c
-camel/providers/local/camel-mh-folder.c
-camel/providers/local/camel-mh-store.c
-camel/providers/local/camel-mh-summary.c
-camel/providers/nntp/camel-nntp-auth.c
-camel/providers/nntp/camel-nntp-folder.c
-camel/providers/nntp/camel-nntp-grouplist.c
-camel/providers/nntp/camel-nntp-provider.c
-camel/providers/nntp/camel-nntp-store.c
-camel/providers/pop3/camel-pop3-folder.c
-camel/providers/pop3/camel-pop3-provider.c
-camel/providers/pop3/camel-pop3-store.c
-camel/providers/sendmail/camel-sendmail-provider.c
-camel/providers/sendmail/camel-sendmail-transport.c
-camel/providers/smtp/camel-smtp-provider.c
-camel/providers/smtp/camel-smtp-transport.c
-composer/e-msg-composer-attachment-bar.c
-composer/e-msg-composer-attachment.c
-composer/e-msg-composer-attachment.glade
-composer/e-msg-composer.c
-composer/e-msg-composer-hdrs.c
-composer/evolution-composer.c
-data/evolution.desktop.in
-data/evolution.keys.in
-default_user/searches.xml
-e-util/e-time-utils.c
-executive-summary/component/component-factory.c
-executive-summary/component/e-summary.c
-executive-summary/component/e-summary-callbacks.c
-executive-summary/component/e-summary-url.c
-executive-summary/component/executive-summary-config.glade
-executive-summary/component/main.c
-executive-summary/GNOME_Evolution_Summary.oaf.in
-executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in
-executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in
-executive-summary/test-service/rdf-summary.c
-filter/filter-datespec.c
-filter/filter-editor.c
-filter/filter-filter.c
-filter/filter-folder.c
-filter/filter.glade
-filter/filter-input.c
-filter/filter-option.c
-filter/filter-part.c
-filter/filter-rule.c
-filter/libfilter-i18n.h
-filter/rule-editor.c
-filter/score-editor.c
-filter/score-rule.c
-filter/vfolder-editor.c
-filter/vfolder-rule.c
-importers/GNOME_Evolution_Elm_Intelligent_Importer.oaf.in
-importers/GNOME_Evolution_Netscape_Intelligent_Importer.oaf.in
-importers/GNOME_Evolution_Pine_Intelligent_Importer.oaf.in
-importers/elm-importer.c
-importers/evolution-gnomecard-importer.c
-importers/netscape-importer.c
-importers/pine-importer.c
-mail/component-factory.c
-mail/folder-browser.c
-mail/folder-browser-factory.c
-mail/GNOME_Evolution_Mail.oaf.in
-mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in
-mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in
-mail/local-config.glade
-mail/mail-account-editor.c
-mail/mail-account-gui.c
-mail/mail-accounts.c
-mail/mail-autofilter.c
-mail/mail-callbacks.c
-mail/mail-config.c
-mail/mail-config-druid.c
-mail/mail-config.glade
-mail/mail-crypto.c
-mail/mail-display.c
-mail/mail-format.c
-mail/mail-local.c
-mail/mail-mt.c
-mail/mail-ops.c
-mail/mail-search.c
-mail/mail-search-dialogue.c
-mail/mail-search.c
-mail/mail-send-recv.c
-mail/mail-summary.c
-mail/mail-tools.c
-mail/mail-vfolder.c
-mail/message-browser.c
-mail/message-list.c
-mail/mail-session.c
-mail/subscribe-dialog.c
-shell/e-setup.c
-shell/e-shell.c
-shell/e-shell-folder-commands.c
-shell/e-shell-folder-creation-dialog.c
-shell/e-shell-folder-selection-dialog.c
-shell/e-shell-folder-title-bar.c
-shell/e-shell-importer.c
-shell/e-shell-offline-handler.c
-shell/e-shell-view.c
-shell/e-shell-view-menu.c
-shell/e-shortcuts.c
-shell/e-shortcuts-view.c
-shell/e-storage.c
-shell/e-storage-set-view.c
-shell/glade/e-shell-folder-creation-dialog.glade
-shell/GNOME_Evolution_Shell.oaf.in
-shell/importer/import.glade
-shell/importer/intelligent.c
-shell/main.c
-ui/evolution-addressbook.xml
-ui/evolution-calendar.xml
-ui/evolution-contact-editor.xml
-ui/evolution-event-editor.xml
-ui/evolution-executive-summary.xml
-ui/evolution-mail.xml
-ui/evolution-message-composer.xml
-ui/evolution-subscribe.xml
-ui/evolution-task-editor-dialog.xml
-ui/evolution-tasks.xml
-ui/evolution.xml
-views/addressbook/galview.xml
-views/mail/galview.xml
-views/tasks/galview.xml
-widgets/meeting-time-sel/e-meeting-time-sel.c
-widgets/meeting-time-sel/e-meeting-time-sel-item.c
-widgets/menus/gal-view-menus.c
-widgets/misc/e-calendar.c
-widgets/misc/e-calendar-item.c
-widgets/misc/e-cell-date-edit.c
-widgets/misc/e-clipped-label.c
-widgets/misc/e-dateedit.c
-widgets/misc/e-filter-bar.c
-widgets/misc/e-filter-bar.h
-widgets/misc/e-messagebox.c
-widgets/misc/e-search-bar.c
-wombat/GNOME_Evolution_Wombat.oaf.in
-wombat/wombat.c
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
deleted file mode 100644
index a19f3656bc..0000000000
--- a/po/POTFILES.skip
+++ /dev/null
@@ -1,10 +0,0 @@
-tests/ui-tests/store_listing.glade
-addressbook/gui/component/select-names/recipient.glade
-addressbook/gui/widgets/test-minicard-view.c
-calendar/gui/alarm-notify.c
-calendar/gui/getdate.c
-camel/providers/local/camel-mbox-provider.c
-cmdline/compose.c
-notes/component-factory.c
-notes/main.c
-tests/ui-tests/message-browser.c
diff --git a/po/az.po b/po/az.po
deleted file mode 100644
index 8631f5cd38..0000000000
--- a/po/az.po
+++ /dev/null
@@ -1,8964 +0,0 @@
-# -------------------------------------------------------
-# Copyright (C) 2000 Free Software Foundation, Inc.
-# Vasif Ismailoglu MD <azerb_linux@hotmail.com>, 2001.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: evolution 0.3.1\n"
-"POT-Creation-Date: 2001-05-07 14:02+0200\n"
-"PO-Revision-Date: 2001-05-05 01:03GMT +0200\n"
-"Last-Translator: Vasif İsmayıloğlu MD <azerb_linux@hotmail.com>\n"
-"Language-Team: Azerbaijani Turkish <linuxaz@azerimal.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 0.8\n"
-
-#: addressbook/backend/ebook/e-card.c:3209
-msgid "Card: "
-msgstr "Kart: "
-
-#: addressbook/backend/ebook/e-card.c:3211
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-"\n"
-"Ad: "
-
-#: addressbook/backend/ebook/e-card.c:3212
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-"\n"
-" Prefiks:\t"
-
-#: addressbook/backend/ebook/e-card.c:3213
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-"\n"
-" Verilən:\t"
-
-#: addressbook/backend/ebook/e-card.c:3214
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-"\n"
-" ÆlavÉ™: "
-
-#: addressbook/backend/ebook/e-card.c:3215
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-"\n"
-" AilÉ™:\t"
-
-#: addressbook/backend/ebook/e-card.c:3216
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-"\n"
-" Suffiks:\t"
-
-#: addressbook/backend/ebook/e-card.c:3230
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-"\n"
-"Ad günü: "
-
-#: addressbook/backend/ebook/e-card.c:3241
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-"\n"
-"Ãœnvan:"
-
-#: addressbook/backend/ebook/e-card.c:3243
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-"\n"
-" Poçt Qutusu:\t"
-
-#: addressbook/backend/ebook/e-card.c:3244
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-"\n"
-" ÆlavÉ™:\t"
-
-#: addressbook/backend/ebook/e-card.c:3245
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-"\n"
-" Küçə:\t"
-
-#: addressbook/backend/ebook/e-card.c:3246
-msgid ""
-"\n"
-" City: "
-msgstr ""
-"\n"
-" Şəhər:\t"
-
-#: addressbook/backend/ebook/e-card.c:3247
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-"\n"
-" Rayon:\t"
-
-#: addressbook/backend/ebook/e-card.c:3248
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-"\n"
-" Poçt Kodu:\t"
-
-#: addressbook/backend/ebook/e-card.c:3249
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-"\n"
-" Ölkə:\t"
-
-#: addressbook/backend/ebook/e-card.c:3262
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-"\n"
-"Təslim Etiketi: "
-
-#: addressbook/backend/ebook/e-card.c:3274
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-"\n"
-"Telefonlar:\n"
-
-#: addressbook/backend/ebook/e-card.c:3277
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-"\n"
-"Telefon:"
-
-#: addressbook/backend/ebook/e-card.c:3301
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-"\n"
-"ePoçt:\n"
-
-#: addressbook/backend/ebook/e-card.c:3304
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-"\n"
-"ePoçt:"
-
-#: addressbook/backend/ebook/e-card.c:3323
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-"\n"
-"Göndərici: "
-
-#: addressbook/backend/ebook/e-card.c:3329
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-"\n"
-"Zaman zolağı: "
-
-#: addressbook/backend/ebook/e-card.c:3337
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-"\n"
-"Coğrafi Yerləşmə: "
-
-#: addressbook/backend/ebook/e-card.c:3341
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-"\n"
-"Məslək:\t"
-
-#: addressbook/backend/ebook/e-card.c:3353
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-"\n"
-"QuruluÅŸ:\t"
-
-#: addressbook/backend/ebook/e-card.c:3354
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-"\n"
-" Ad:\t"
-
-#: addressbook/backend/ebook/e-card.c:3355
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-"\n"
-" Bölmə:\t"
-
-#: addressbook/backend/ebook/e-card.c:3356
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-"\n"
-" Bölmə2:\t"
-
-#: addressbook/backend/ebook/e-card.c:3357
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-"\n"
-" Bölmə3:\t"
-
-#: addressbook/backend/ebook/e-card.c:3358
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-"\n"
-" Bölmə4:\t"
-
-#: addressbook/backend/ebook/e-card.c:3362
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-"\n"
-"Kateqoriyalar:\t"
-
-#: addressbook/backend/ebook/e-card.c:3363
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-"\n"
-"Ä°zahat:\t"
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3376
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-"\n"
-"Yeganə Kəlimə:\t"
-
-#: addressbook/backend/ebook/e-card.c:3379
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-"\n"
-"Ümumi Açar:\t"
-
-#: addressbook/backend/ebook/e-destination.c:232
-msgid "???"
-msgstr "???"
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:1
-msgid "Factory to import GnomeCard files into Evolution."
-msgstr "'GnomeCard' fayllarını 'Evolution' içinə gətirən e'malatxana."
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:2
-msgid "Imports GnomeCard files into Evolution."
-msgstr "'GnomeCard' fayllarını 'Evolution' içinə gətirir."
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:21
-#: addressbook/backend/ebook/load-pine-addressbook.c:22
-#: addressbook/backend/ebook/test-client-list.c:23
-#: addressbook/backend/ebook/test-client.c:33
-#: addressbook/conduit/address-conduit.c:1092
-#: addressbook/gui/component/addressbook-factory.c:42
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:98 calendar/gui/main.c:57
-msgid "Could not initialize Bonobo"
-msgstr "Bonoboyu başlada bilmədim"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr "Ox yüklənə bilmədi\n"
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr "eKitab yüklənmədi\n"
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr "Wombat xidməti başladıla bilmədi"
-
-#: addressbook/conduit/address-conduit.c:655
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr "Wombatı başlada bilmədim"
-
-#: addressbook/conduit/address-conduit.c:687
-#: addressbook/conduit/address-conduit.c:690
-msgid "Could not read pilot's Address application block"
-msgstr "Pilot Ünvan əlavələri bloku oxuna bilmədi"
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:7
-msgid "Add"
-msgstr "ÆlavÉ™ Et"
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr "_İl dönümü :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr "_Məslək"
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr "Məsləki _Faks"
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-msgid "C_ontacts..."
-msgstr "_ÆlaqÉ™lÉ™r ..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr "Nö_vlər..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-msgid "Contact Editor"
-msgstr "ÆlaqÉ™ düzÉ™ldicisi"
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr "Ætraflı"
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr "Fərqli fayllalə:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-msgid "General"
-msgstr "Ãœmumi"
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr "Yeni telefon növü"
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-msgid "No_tes:"
-msgstr "_Qeydlər:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr "Telefon Növləri"
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1284
-msgid "Primary Email"
-msgstr "İlk ePoçt ünvanı"
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr "_HTML ePoçtlarını qəbul edir"
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr "Web səhifəsi :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:74
-msgid "_Add"
-msgstr "_ÆlavÉ™ Et"
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr "_Ãœnvan..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr "_Köməkçi adı :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr "_Ad günü :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr "_Məslək"
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-msgid "_Company:"
-msgstr "Ş_irkət :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/folder-browser.c:639 mail/mail-config.glade.h:75
-#: ui/evolution-event-editor.xml.h:57 ui/evolution-mail.xml.h:98
-#: ui/evolution-task-editor-dialog.xml.h:69
-msgid "_Delete"
-msgstr "_Sil"
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr "_Bölmə :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr "_Tam Ad ..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-msgid "_Home"
-msgstr "_Ev"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-msgid "_Job title:"
-msgstr "Məslək _izahı:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr "_İdarəcinin Adı :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-msgid "_Mobile"
-msgstr "_Cib"
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr "_Ləqəb :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr "_Ä°darÉ™ :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr "_Məslək :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr "_YoldaÅŸ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr "_Bu ePoçt ünvanıdır"
-
-#: addressbook/contact-editor/e-contact-editor.c:603
-msgid "This contact belongs to these categories:"
-msgstr "Bu üzv bu kateqoriyalara aitdir:"
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-#: addressbook/gui/widgets/e-addressbook-view.c:676
-msgid "Assistant"
-msgstr "Köməkçi"
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/contact-editor/e-contact-editor.c:1310
-msgid "Business"
-msgstr "Məslək"
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-msgid "Business 2"
-msgstr "2.nci Məslək"
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#: addressbook/gui/widgets/e-addressbook-view.c:656
-msgid "Business Fax"
-msgstr "Məsləki Faks"
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Callback"
-msgstr "Geri axtarma"
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "Car"
-msgstr "Maşın"
-
-#: addressbook/contact-editor/e-contact-editor.c:1248
-msgid "Company"
-msgstr "Şirkət"
-
-#: addressbook/contact-editor/e-contact-editor.c:1249
-#: addressbook/contact-editor/e-contact-editor.c:1311
-msgid "Home"
-msgstr "Ev"
-
-#: addressbook/contact-editor/e-contact-editor.c:1250
-msgid "Home 2"
-msgstr "2.nci ev"
-
-#: addressbook/contact-editor/e-contact-editor.c:1251
-#: addressbook/gui/widgets/e-addressbook-view.c:657
-msgid "Home Fax"
-msgstr "Ev faksı"
-
-#: addressbook/contact-editor/e-contact-editor.c:1252
-#: addressbook/gui/widgets/e-addressbook-view.c:660
-msgid "ISDN"
-msgstr "ISDN"
-
-#: addressbook/contact-editor/e-contact-editor.c:1253
-msgid "Mobile"
-msgstr "Cib telefonu"
-
-#: addressbook/contact-editor/e-contact-editor.c:1254
-#: addressbook/contact-editor/e-contact-editor.c:1312
-#: mail/mail-config.glade.h:40
-msgid "Other"
-msgstr "BaÅŸqa"
-
-#: addressbook/contact-editor/e-contact-editor.c:1255
-#: addressbook/gui/widgets/e-addressbook-view.c:662
-msgid "Other Fax"
-msgstr "BaÅŸqa faks"
-
-#: addressbook/contact-editor/e-contact-editor.c:1256
-#: addressbook/gui/widgets/e-addressbook-view.c:663
-msgid "Pager"
-msgstr "Peycer"
-
-#: addressbook/contact-editor/e-contact-editor.c:1257
-msgid "Primary"
-msgstr "Ä°lk"
-
-#: addressbook/contact-editor/e-contact-editor.c:1258
-#: addressbook/gui/widgets/e-addressbook-view.c:664
-msgid "Radio"
-msgstr "Radio"
-
-#: addressbook/contact-editor/e-contact-editor.c:1259
-#: addressbook/gui/widgets/e-addressbook-view.c:665
-msgid "Telex"
-msgstr "Teleks"
-
-#: addressbook/contact-editor/e-contact-editor.c:1260
-msgid "TTY/TDD"
-msgstr "TTY/TDD"
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:668
-msgid "Email 2"
-msgstr "2.nci ePoçt ünvanı"
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/gui/widgets/e-addressbook-view.c:669
-msgid "Email 3"
-msgstr "3.ncü ePoçt ünvanı"
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-msgid "Delete Contact?"
-msgstr "ÆlaqÉ™ni Silimmi?"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:233
-msgid "Contact Quick-Add"
-msgstr "CÉ™ld ÆlaqÉ™ ÆlavÉ™si"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:235
-msgid "Edit Full"
-msgstr "Hamısını Düzəlt"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:276
-#: addressbook/gui/widgets/e-addressbook-view.c:643
-msgid "Full Name"
-msgstr "Tam Ad"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:282
-msgid "E-mail"
-msgstr "ePoçt"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr "Ãœnvan _2:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr "Kanada"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr "Ünvanı Yoxla"
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr "Öl_kə:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr "Finlandiya"
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr "ABÅž"
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr "_Ãœnvan :"
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-msgid "_City:"
-msgstr "_Şəhər:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr "_Poçt Qutusu:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr "_Vilayət"
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr "_ZIP Kodu:"
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr "Tam adı yoxla"
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr "Dr."
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr "Esq."
-
-#: addressbook/contact-editor/fullname.glade.h:4
-msgid "I"
-msgstr "I"
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr "II"
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr "III"
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr "Jr."
-
-#: addressbook/contact-editor/fullname.glade.h:8
-msgid "Miss"
-msgstr "Miss"
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr "Mr."
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr "Mrs."
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr "Ms."
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr "Sr."
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr "_Ad :"
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr "_Soyad :"
-
-#: addressbook/contact-editor/fullname.glade.h:15
-msgid "_Middle:"
-msgstr "_Orta ad:"
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr "_Suffiks:"
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr "B_aşlıq:"
-
-#: addressbook/gui/component/addressbook.c:241
-msgid "As _Minicards"
-msgstr "_Balaca kartlar olaraq"
-
-#: addressbook/gui/component/addressbook.c:247
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr "_Cədvəl olaraq"
-
-#: addressbook/gui/component/addressbook.c:407
-#, c-format
-msgid "Enter password for %s"
-msgstr "%s üçün parol girin"
-
-#: addressbook/gui/component/addressbook.c:435
-msgid "Unable to open addressbook"
-msgstr "Ünvan dəftərini aça bilmədim"
-
-#: addressbook/gui/component/addressbook.c:440
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or have tried\n"
-"to access an LDAP server and don't have LDAP support\n"
-"compiled in. If you've entered a URI, check the URI for\n"
-"correctness and reenter. If not, you probably have\n"
-"attempted to access an LDAP server. If you wish to be\n"
-"able to use LDAP, you'll need to download and install\n"
-"OpenLDAP and recompile and install Evolution.\n"
-msgstr ""
-"Bu ünvan dəftərini aça bilmədik. Bu ya səhv bir\n"
-"URI'nin bildirilməsindən ötrü ya da LDAP dəstəyi \n"
-"olmayan bir vericiyə çatmaq istəməsindən ötrüdür.\n"
-"Bir URI bildirdin isə, URI'nin düz olduğunu yoxla və\n"
-"yenə sına. Bir URI bildirimədin isə, bir LDAP vericisinə\n"
-"çatmaq istədin. LDAp'ı istifadə etmək istəyirsənsə , OpenLDAPi(ı)\n"
-"qurub, Evolution'u yenidən yoxlayıb yenidən qurmaq "
-"məcburiyyətindəsən.\n"
-
-#: addressbook/gui/component/addressbook.c:563 widgets/misc/e-filter-bar.h:102
-msgid "Show All"
-msgstr "Hamısını Göstər"
-
-#: addressbook/gui/component/addressbook.c:565 widgets/misc/e-filter-bar.h:104
-msgid "Advanced..."
-msgstr "Ætraflı..."
-
-#: addressbook/gui/component/addressbook.c:595 calendar/gui/gnome-cal.c:236
-msgid "Any field contains"
-msgstr "Daxil edən hər hansı üzv"
-
-#: addressbook/gui/component/addressbook.c:596
-msgid "Name contains"
-msgstr "Ad daxil edən"
-
-#: addressbook/gui/component/addressbook.c:597
-msgid "Email contains"
-msgstr "ePoçt daxil edən"
-
-#: addressbook/gui/component/addressbook.c:740
-msgid "The URI that the Folder Browser will display"
-msgstr "Qovluq Səyyahını göstərəcək olan URI"
-
-#: addressbook/gui/component/addressbook-config.c:148
-msgid "LDAP Server"
-msgstr "LDAP Vericisi"
-
-#: addressbook/gui/component/addressbook-config.c:150
-msgid "File"
-msgstr "Fayl"
-
-#: addressbook/gui/component/addressbook-config.c:153
-msgid "Unknown addressbook type"
-msgstr "Namə'lum ünvan dəftəri"
-
-#: addressbook/gui/component/addressbook-config.c:163
-msgid "None (anonymous mode)"
-msgstr "Heç biri (adsız halı)"
-
-#: addressbook/gui/component/addressbook-config.c:165
-#: camel/camel-sasl-plain.c:32 camel/providers/imap/camel-imap-provider.c:80
-#: camel/providers/nntp/camel-nntp-store.c:291
-#: camel/providers/pop3/camel-pop3-provider.c:67 mail/mail-config.glade.h:43
-msgid "Password"
-msgstr "Parol"
-
-#: addressbook/gui/component/addressbook-config.c:167
-msgid "SASL"
-msgstr "SASL"
-
-#: addressbook/gui/component/addressbook-config.c:170
-msgid "Unknown auth type"
-msgstr "Namə'lum tanıtma növü"
-
-#: addressbook/gui/component/addressbook-config.c:179
-msgid "Base"
-msgstr "Æsas"
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "One"
-msgstr "Bir"
-
-#: addressbook/gui/component/addressbook-config.c:183
-msgid "Subtree"
-msgstr "Alt AÄŸac"
-
-#: addressbook/gui/component/addressbook-config.c:186
-msgid "Unknown scope type"
-msgstr "Namə'lum hərəkət növü"
-
-#: addressbook/gui/component/addressbook-config.c:353
-msgid "Bind DN:"
-msgstr "Cild DN:"
-
-#: addressbook/gui/component/addressbook-config.c:354
-msgid "FIXME Bind DN Help text here"
-msgstr "FIZME DN Kömək Mətnini bura cala"
-
-#: addressbook/gui/component/addressbook-config.c:356
-#: mail/mail-config.glade.h:50
-msgid "Remember this password"
-msgstr "Bu parolu yadda saxla"
-
-#: addressbook/gui/component/addressbook-config.c:406
-#: mail/mail-config.glade.h:28
-msgid "Host:"
-msgstr "Ev Sahibi:"
-
-#: addressbook/gui/component/addressbook-config.c:407
-msgid "FIXME Host help text here."
-msgstr "FIXME Yuva kömək mwtni burada."
-
-#: addressbook/gui/component/addressbook-config.c:409
-msgid "Port:"
-msgstr "Qapı:"
-
-#: addressbook/gui/component/addressbook-config.c:410
-msgid "FIXME Port help text here."
-msgstr "FIXME Qapı kömək mətni burda."
-
-#: addressbook/gui/component/addressbook-config.c:414
-msgid "Root DN:"
-msgstr "Kök DN :"
-
-#: addressbook/gui/component/addressbook-config.c:415
-msgid "FIXME Root DN help text here."
-msgstr "FIXME Kök Dn kömək mətni burda."
-
-#: addressbook/gui/component/addressbook-config.c:435
-msgid "Search Scope:"
-msgstr "Axtarış Hərəkəti ..."
-
-#: addressbook/gui/component/addressbook-config.c:489
-msgid "Authentication:"
-msgstr "Tanıtma :"
-
-#: addressbook/gui/component/addressbook-config.c:507
-#: mail/mail-config.glade.h:44
-msgid "Path:"
-msgstr "Yol:"
-
-#: addressbook/gui/component/addressbook-config.c:508
-msgid "FIXME Path Help text here"
-msgstr "FIXME Cığır Kömək mətni burda."
-
-#: addressbook/gui/component/addressbook-config.c:513
-msgid "Create path if it doesn't exist."
-msgstr "BelÉ™ bir yol yoxdursa yarat."
-
-#: addressbook/gui/component/addressbook-config.c:647
-msgid "Edit Addressbook"
-msgstr "Ünvan dəftərini düzəlt"
-
-#: addressbook/gui/component/addressbook-config.c:649
-msgid "Add Addressbook"
-msgstr "Ünvan dəftəri əlavə et"
-
-#: addressbook/gui/component/addressbook-config.c:665
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-"Sahib olduğunuz ünvan dəftəri nçvünü seçin, bunu haqqında lazımi "
-"mə'lumatları bildirin."
-
-#: addressbook/gui/component/addressbook-config.c:671
-#: mail/mail-config.glade.h:35
-msgid "Name:"
-msgstr "Ad :"
-
-#: addressbook/gui/component/addressbook-config.c:672
-msgid "FIXME Name help text here"
-msgstr "FIXME Ad kömək mətbi burda."
-
-#: addressbook/gui/component/addressbook-config.c:674
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr "Ä°zah :"
-
-#: addressbook/gui/component/addressbook-config.c:675
-msgid "FIXME Description help text here"
-msgstr "FIXME İzah kömək mətbi burda."
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-msgid "Addressbook Sources"
-msgstr "Ünvan Dəftəri Qaynağı"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: addressbook/gui/widgets/e-addressbook-view.c:578
-#: addressbook/gui/widgets/e-minicard.c:673
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:11 mail/mail-config.glade.h:19
-#: mail/message-browser.c:203 ui/evolution-addressbook.xml.h:3
-#: ui/evolution-event-editor.xml.h:17 ui/evolution-mail.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr "Sil"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:23
-msgid "Edit"
-msgstr "Düzəlt"
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-msgid "Name"
-msgstr "Ad"
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-msgid "URI"
-msgstr "URI"
-
-#: addressbook/gui/component/addressbook-storage.c:99
-msgid "Other Contacts"
-msgstr "DigÉ™r ÆlaqÉ™lÉ™r"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Disable Queries"
-msgstr "Sorğuları Bağla"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Enable Queries (Dangerous!)"
-msgstr "Sorğuları Fəallaşdır (Təhlükəlidir!)"
-
-#: addressbook/gui/component/e-address-widget.c:388
-#: addressbook/gui/component/select-names/e-select-names-popup.c:210
-msgid "Edit Contact Info"
-msgstr "ÆlaqÉ™ MÉ™'lumatını DüzÉ™lt"
-
-#: addressbook/gui/component/e-address-widget.c:424
-#: addressbook/gui/component/select-names/e-select-names-popup.c:269
-msgid "Add to Contacts"
-msgstr "ÆlaqÉ™lÉ™rÉ™ ÆlavÉ™ Et"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-msgid "A Bonobo control for an address popup."
-msgstr "Bonobonun ünvan nümayiş etdirmə vasitəsi."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A Bonobo control for displaying an address."
-msgstr "Bonobonun ünvan nümayiş etdirmə vasitəsi."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr "Ünvan dəftəri göstərən nümunəvi Bonobo idarəsi."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr "Evolution ünvan dəftəri kiçik kartlarını göstərən idarə."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-msgid "Evolution Addressbook minicard viewer"
-msgstr "Evolution Ünvan Dəftəri kiçik kart nümaiyişi"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-msgid "Evolution component for handling contacts."
-msgstr "ÆlaqÉ™lÉ™ri idarÉ™ edici 'Evolution' É™lavÉ™si."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-msgid "Factory for the Addressbook Minicard control"
-msgstr "'Evolution'un Ünvan Dəftəri Kiçik Kart e'malatxanası"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-msgid "Factory for the Addressbook's address displayer"
-msgstr "Ünvan Dəftəriidə ünvan göstərici"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-msgid "Factory for the Addressbook's address popup"
-msgstr "Ünvan Dəftərində ünvan göstərici e'malatxanası"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:10
-msgid "Factory for the Evolution addressbook component."
-msgstr "'Evolution'un Ünvan Dəftəri e'malatxanası."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:11
-msgid "Factory for the sample Addressbook control"
-msgstr "Nümunəvi ünvan dəftəri idarəsi e'malatxanası"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:131
-#: composer/e-msg-composer-attachment-bar.c:468 filter/filter-filter.c:401
-#: filter/filter-rule.c:549 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:265 shell/e-shortcuts-view.c:388
-msgid "Remove"
-msgstr "Sil"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:146
-msgid "Remove All"
-msgstr "Hamısını Sil"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-msgid "Evolution's addressbook name selection interface."
-msgstr "Evolution Ünvan Dəftəri ad seçmə ara üzü."
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr "Evolution Ünvan Dəftəri ad seçmə ara üzü e'malatxanası"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr "Tap..."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-msgid "Message Recipients"
-msgstr "Alıcılar Siyahısı :"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-msgid "Select Names"
-msgstr "Ad Seç"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-msgid "Select name from:"
-msgstr "Adı buradan seç:"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:158
-msgid "Search"
-msgstr "Axtar"
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr "123"
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr "a"
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr "b"
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr "c"
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr "d"
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr "e"
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr "f"
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr "g"
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr "h"
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr "i"
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr "j"
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr "k"
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr "l"
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr "m"
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr "n"
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-msgid "o"
-msgstr "o"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr "p"
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr "q"
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-msgid "r"
-msgstr "r"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr "s"
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr "t"
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr "u"
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr "v"
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr "w"
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr "x"
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr "y"
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr "z"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:513
-#: addressbook/gui/widgets/e-addressbook-view.c:573
-#: addressbook/gui/widgets/e-minicard.c:466
-#: addressbook/gui/widgets/e-minicard.c:668
-msgid "Save as VCard"
-msgstr "VCard olaraq qeyd et"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:574
-#: addressbook/gui/widgets/e-minicard.c:669
-msgid "Send contact to other"
-msgstr "ÆlaqÉ™ni baÅŸqasına göndÉ™r"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:575
-#: addressbook/gui/widgets/e-minicard.c:670
-msgid "Send message to contact"
-msgstr "ÆlaqÉ™yÉ™ yeni bir ismarıc göndÉ™r"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:576
-#: addressbook/gui/widgets/e-minicard.c:671 mail/message-browser.c:200
-#: ui/evolution-addressbook.xml.h:9 ui/evolution-calendar.xml.h:23
-#: ui/evolution-mail.xml.h:55 ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr "Çap Et"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:577
-#: addressbook/gui/widgets/e-minicard.c:672
-msgid "Print Envelope"
-msgstr "Zərfi Çap Et"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:641
-msgid "* Click here to add a contact *"
-msgstr "* ÆlaqÉ™ É™lavÉ™ etmÉ™k üçün buraya tıqlayın *"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:642
-msgid "File As"
-msgstr "Fərqli faylla"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:644
-msgid "Email"
-msgstr "ePoçt"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:645
-msgid "Primary Phone"
-msgstr "Æsas Telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:646
-msgid "Assistant Phone"
-msgstr "Köməkçi Telefonu"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:647
-msgid "Business Phone"
-msgstr "Ä°ÅŸ Telefonu"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:648
-msgid "Callback Phone"
-msgstr "Geri axtarma Telefonu"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:649
-msgid "Company Phone"
-msgstr "Şirkət Telefonu"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:650
-msgid "Home Phone"
-msgstr "Ev Telefonu"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:651
-msgid "Organization"
-msgstr "Şirkət"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:652
-msgid "Business Address"
-msgstr "İş Ünvanı"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:653
-msgid "Home Address"
-msgstr "Ev Ünvanı"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:654
-msgid "Mobile Phone"
-msgstr "Æl Telefonu"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:655
-msgid "Car Phone"
-msgstr "Maşın Telefonu"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:658
-msgid "Business Phone 2"
-msgstr "2.nci Ä°ÅŸ Telefonu"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:659
-msgid "Home Phone 2"
-msgstr "2.nci Ev Telefonu"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:661
-msgid "Other Phone"
-msgstr "Digər Telefonlar"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:666
-msgid "TTY"
-msgstr "TTY"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:667
-msgid "Other Address"
-msgstr "BaÅŸqaÃœnvanlar"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:670
-msgid "Web Site"
-msgstr "Web Səhifəsi"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:671
-msgid "Department"
-msgstr "Bölmə"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:672
-msgid "Office"
-msgstr "Ä°darÉ™"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:673
-msgid "Title"
-msgstr "Başlıq"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:674
-msgid "Profession"
-msgstr "Məslək"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:675
-msgid "Manager"
-msgstr "İdarəci"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:677
-msgid "Nickname"
-msgstr "Ləqəb"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:678
-msgid "Spouse"
-msgstr "YoldaÅŸ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:679
-msgid "Note"
-msgstr "Qeyd"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:680
-msgid "Free-busy URL"
-msgstr "Sərbəst/məşğul URL"
-
-#: addressbook/gui/widgets/e-minicard-control.c:282
-msgid "Save in addressbook"
-msgstr "Ünvan dəftərinə qeyd et"
-
-#: addressbook/gui/widgets/e-minicard-view.c:166
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-"\n"
-"\n"
-"Bu görünüşdə göstəriləcək üzvlər yoxdur\n"
-"\n"
-"Buraya cüt-tıqlayaraq bir əlaqə üzvünü yarat."
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:26
-msgid "Card View"
-msgstr "Kart Nümayişi "
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr "10 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr "8 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr "Sonunda boÅŸ formlar olsun :"
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr "İçindəkilər"
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr "Alt :"
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr "Ölçülər :"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr "Yazı növü ..."
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr "Yazı növləri"
-
-#: addressbook/printing/e-contact-print.glade.h:9
-msgid "Footer:"
-msgstr "Axırıncı :"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr "Şəkil"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-msgid "Header"
-msgstr "Başlıq"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr "Başlıq/axırıncı"
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr "Başlıqlar"
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr "Hər bir məktub üçün üst yazı"
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr "Hündürlük :"
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr "Arxa arxaya"
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr "Daxil et :"
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr "Mənzərə"
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr "Sol :"
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr "Məktub tab'lərini bir tərəfə yığ"
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr "Kənarlar"
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr "Sütunların miqdarı :"
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr "Seçənəklər"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr "İstiqamət"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr "Səhifə"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-msgid "Page Setup:"
-msgstr "Səhifə Quruluşu:"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr "Kağız"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr "Kağız qaynağı :"
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr "Portret"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr "Nümayiş :"
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr "Boz kölgələməyi işlədərk yazdır"
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr "Ikili səhifələri tərs çevir"
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr "SaÄŸ :"
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr "Bölmələr :"
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr "Kölgələmə"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-msgid "Size:"
-msgstr "Böyüklük :"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr "Yeni bir səhifə ilə başla"
-
-#: addressbook/printing/e-contact-print.glade.h:38
-msgid "Style name:"
-msgstr "Tərz adı :"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr "Ãœst :"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-msgid "Type:"
-msgstr "Növ:"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr "En :"
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr "Təqvim vericisi ilə bağlantı qurulurkən xəta oldu"
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr "Pilot Təqvim əlavələri bloku oxuna bilmədi"
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr "Pilot Ediləcəklər əlavələri bloku oxuna bilmədi"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr "Ä°clas bildiricisi "
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-msgid "Snooze"
-msgstr "Mürgülə"
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr "Oldu"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr "Alarm vermə xidməti"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-msgid "Factory for the alarm notification service"
-msgstr "Alarm vermə xidməti e'malatxanası"
-
-#: calendar/gui/alarm-notify/notify-main.c:56
-#, c-format
-msgid ""
-"It is %s. The Unix time is %ld right now. We just thought you may like to "
-"know."
-msgstr ""
-"Bu, %s dir(dır). İndiki Unix vaxtı da %ld dir(dır). Bəlkə bilmək "
-"istəyərsinizdeyə fikirləşdik."
-
-#: calendar/gui/alarm-notify/notify-main.c:93 calendar/gui/main.c:52
-msgid "Could not initialize GNOME"
-msgstr "GNOME başladıla bilmədi"
-
-#: calendar/gui/alarm-notify/notify-main.c:108
-msgid "Could not create the alarm notify service factory"
-msgstr "Alarm vermə xidməti e'malatxanası yaradıla bilmir"
-
-#: calendar/gui/calendar-commands.c:266
-msgid "File not found"
-msgstr "Fayl tapıla bilmədi"
-
-#: calendar/gui/calendar-commands.c:290
-msgid "Open calendar"
-msgstr "Təqvimi aç"
-
-#: calendar/gui/calendar-commands.c:332
-msgid "Save calendar"
-msgstr "Təqvimi qeyd et"
-
-#: calendar/gui/calendar-commands.c:468
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-"Təqvimin görünüşü quraşdırıla bilmir. Lütfən ORBIT və OAF "
-"qurğularınızı yoxlayın."
-
-#: calendar/gui/calendar-model.c:360 calendar/gui/calendar-model.c:898
-#: calendar/gui/e-calendar-table.c:330
-msgid "Public"
-msgstr "Ãœmumi"
-
-#: calendar/gui/calendar-model.c:363 calendar/gui/calendar-model.c:900
-#: calendar/gui/e-calendar-table.c:331
-msgid "Private"
-msgstr "Şəxsi"
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:902
-#: calendar/gui/e-calendar-table.c:332
-msgid "Confidential"
-msgstr "Gizli"
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/event-editor.c:1606
-#: calendar/gui/event-editor.c:1633
-#: camel/providers/smtp/camel-smtp-transport.c:218
-msgid "Unknown"
-msgstr "NamÉ™'lum"
-
-#: calendar/gui/calendar-model.c:457
-msgid "N"
-msgstr "N"
-
-#: calendar/gui/calendar-model.c:457
-msgid "S"
-msgstr "Baz."
-
-#: calendar/gui/calendar-model.c:459
-msgid "E"
-msgstr "E"
-
-#: calendar/gui/calendar-model.c:459
-msgid "W"
-msgstr "Çərş."
-
-#: calendar/gui/calendar-model.c:497 calendar/gui/calendar-model.c:1066
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:352 mail/message-list.c:691
-msgid "High"
-msgstr "Yüksək"
-
-#: calendar/gui/calendar-model.c:499 calendar/gui/calendar-model.c:1068
-#: calendar/gui/calendar-model.c:1574
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:353 mail/message-list.c:690
-msgid "Normal"
-msgstr "Normal"
-
-#: calendar/gui/calendar-model.c:501 calendar/gui/calendar-model.c:1070
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:354 mail/message-list.c:689
-msgid "Low"
-msgstr "Alçaq"
-
-#: calendar/gui/calendar-model.c:537 calendar/gui/calendar-model.c:1122
-#: calendar/gui/e-calendar-table.c:406
-msgid "Transparent"
-msgstr "Şəffaf"
-
-#: calendar/gui/calendar-model.c:540 calendar/gui/calendar-model.c:1124
-#: calendar/gui/e-calendar-table.c:405
-msgid "Opaque"
-msgstr "Mat"
-
-#: calendar/gui/calendar-model.c:638 calendar/gui/calendar-model.c:1176
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:426
-msgid "Not Started"
-msgstr "Başlamayıb"
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1178
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:427
-msgid "In Progress"
-msgstr "İşləyir"
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1180
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:428
-msgid "Completed"
-msgstr "BitirmÉ™ Tarixi"
-
-#: calendar/gui/calendar-model.c:647 calendar/gui/calendar-model.c:1182
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:429 camel/camel-service.c:544
-#: camel/camel-service.c:580
-msgid "Cancelled"
-msgstr "Ləğv Edildi"
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:794 e-util/e-time-utils.c:278
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr "%a %m/%d/%Y %H:%M:%S"
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:797 e-util/e-time-utils.c:287
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr "%a %m/%d/%Y %I:%M:%S %p"
-
-#: calendar/gui/calendar-model.c:802
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-"Tarix öz şəklində verilməlidir: \n"
-"\n"
-"%s"
-
-#: calendar/gui/calendar-model.c:882
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr ""
-"Siniflədirmə 'Ümumi', 'Xüsusi', 'Gizli' ya da 'Heç Biri' olmalıdır"
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:896 calendar/gui/calendar-model.c:1120
-#: calendar/gui/calendar-model.c:1174 calendar/gui/e-calendar-table.c:329
-#: calendar/gui/e-calendar-table.c:404 mail/mail-account-gui.c:973
-#: mail/mail-accounts.c:120 mail/mail-accounts.c:164
-#: mail/mail-config.glade.h:37 shell/e-shell-view.c:1198
-#: widgets/misc/e-cell-date-edit.c:237 widgets/misc/e-dateedit.c:432
-#: widgets/misc/e-dateedit.c:1341 widgets/misc/e-dateedit.c:1456
-msgid "None"
-msgstr "Yoxdur"
-
-#: calendar/gui/calendar-model.c:970
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-"Coğrafi yer bu şəkildə bildirilməlidir: \n"
-"\n"
-"45.436845,125.862501"
-
-#: calendar/gui/calendar-model.c:1010
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr ""
-"Faiz qiyməti ikisi də daxil olam üzərə 0 ilə 100 arasında olmalıdır"
-
-#: calendar/gui/calendar-model.c:1051
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr ""
-"Üstünlük 'Yüksək', 'Normal', 'Alçaq' və ya 'Təsvirsiz' ola bilər."
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1064
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:355
-msgid "Undefined"
-msgstr "Təsvirsiz"
-
-#: calendar/gui/calendar-model.c:1105
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr ""
-"Şəffaflıq 'Şəffaf', 'İşıq Keçirməz' və ya 'Heç Biri' olmalıdır."
-
-#: calendar/gui/calendar-model.c:1576
-msgid "Recurring"
-msgstr "Təkrarlayan"
-
-#: calendar/gui/calendar-model.c:1578
-msgid "Assigned"
-msgstr "Vəzifələndirilmiş"
-
-#: calendar/gui/calendar-model.c:1584
-msgid "Yes"
-msgstr "Bəli"
-
-#: calendar/gui/calendar-model.c:1584
-msgid "No"
-msgstr "Xeyr"
-
-#: calendar/gui/calendar-summary.c:198
-msgid "%A, %e %B %Y"
-msgstr "%A, %e %B %Y"
-
-#: calendar/gui/calendar-summary.c:207
-msgid "Appointments"
-msgstr "Görüşlər"
-
-#: calendar/gui/calendar-summary.c:245 calendar/gui/calendar-summary.c:251
-msgid "%I:%M%p"
-msgstr "%I:%M%p"
-
-#: calendar/gui/calendar-summary.c:275 calendar/gui/print.c:948
-#: views/tasks/galview.xml.h:1
-msgid "Tasks"
-msgstr "Vəzifə"
-
-#: calendar/gui/calendar-summary.c:443
-msgid "<b>Error loading calendar</b>"
-msgstr "<b>Təqvim yükləmə xətası</b>"
-
-#: calendar/gui/calendar-summary.c:455
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr "<b>Təqvim yükləmə xətası:<br>Bu yol dəstəklanmir"
-
-#: calendar/gui/calendar-summary.c:622
-msgid "Display"
-msgstr "Ekran"
-
-#: calendar/gui/calendar-summary.c:627
-msgid "Show appointments"
-msgstr "Görüşləri göstər"
-
-#: calendar/gui/calendar-summary.c:635
-msgid "Show tasks"
-msgstr "Vəzifələri göstər"
-
-#: calendar/gui/calendar-summary.c:690
-msgid "Things to do"
-msgstr "Ediləcəklər"
-
-#: calendar/gui/calendar-summary.c:721 calendar/gui/e-itip-control.glade.h:7
-msgid "Loading Calendar"
-msgstr "Təqvim yüklənir"
-
-#: calendar/gui/control-factory.c:126
-msgid "The URI that the calendar will display"
-msgstr "Təqvimin göstərəcəyi URI"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:189
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr "%A %b %d %Y %H:%M'dÉ™ bildir"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:196
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr "%A %b %d %Y %H:%M'dəki iclas üçün bildiriş"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:207
-msgid "No summary available."
-msgstr "Mündəricat yoxdur."
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:2
-msgid "Close"
-msgstr "Qapat"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-msgid "Edit appointment"
-msgstr "İclası düzəlt"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr "Xəbərdarlıq vaxtı ( dəqiqə )"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr "05 dəqiqə"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr "10 dəqiqə"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr "12 saat (am/pm)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr "15 dəqiqə"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr "24 saat"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr "30 dəqiqə"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr "60 dəqiqə"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr "Zınqırovun səs kəsilməsi müddəti"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr "Səsli Alarmlar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr "Alarm pəncərəsi çıxanda biiplə."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-msgid "Calendar"
-msgstr "Təqvim"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr "Təqvim Seçənəkləri"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "Rənglər"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr "Həftə sonlarını sıxışdır"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr "Tarix səyyahı xüsusiyyətləri"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-msgid "Defaults"
-msgstr "Æsaslar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr "Göstərmə Seçənəkləri :"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:162
-msgid "Due Date"
-msgstr "UyÄŸun Tarix"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr "Xəbardarlığı Fəallaşdır"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr "Gün sonu:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr "Həftənin ilk günü:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr "Cüm"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:484
-msgid "Friday"
-msgstr "Cümə"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr "İşarətlə"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr "Bügunki İşlər"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr "Bügunkü İşlər:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr "Hələ Bitirilməmiş İşlər"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr "Hələ Bitirilməmiş İşlər:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr "B.e"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:480
-msgid "Monday"
-msgstr "Bazar ertəsi"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr "Vaxtı Keçmiş İşlər"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr "Vaxtı Keçmiş İşlər:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:45
-msgid "Pick a color"
-msgstr "Rəng al"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:165
-msgid "Priority"
-msgstr "Üstünlük"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-msgid "Remind me of all appointments"
-msgstr "Bütün Görüşlərimi Bildir"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-msgid "Reminders"
-msgstr "Xatırladıcılar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr "Åžn"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:485
-msgid "Saturday"
-msgstr "Şənbə"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr "Göstər"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-msgid "Show appointment end times"
-msgstr "Görüşlərin sonlanma tarixini göstər"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr "Həftə Sayısını göstər"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr "Gübüb başlanğıcı:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr "Baz"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:486
-msgid "Sunday"
-msgstr "Bazar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-msgid "TaskPad"
-msgstr "Vəzifə Taxtası"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr "C.a"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:483
-msgid "Thursday"
-msgstr "Cümə Axşamı"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr "Keçməsinə qədər qalan vaxt"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr "Vaxt Dilimləri:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr "Vaxt Şəkli:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr "Ç.a"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:481
-msgid "Tuesday"
-msgstr "Çərşənbə axşamı"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr "Göstərişli Xəbərdarlıqlar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr "Çər"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:482
-msgid "Wednesday"
-msgstr "Çərşənbə"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr "İş Həftəsi"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr "dəqiqə əvvəlində onlar meydana çıxırlar."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:78
-msgid "seconds."
-msgstr "saniyÉ™."
-
-#: calendar/gui/dialogs/delete-comp.c:70
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr "Bu `%s' görüşünü həqiqətən də silmək istəyirsiniz?"
-
-#: calendar/gui/dialogs/delete-comp.c:73
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr "Bu adsız görüşü həqiqətən də silmək istəyirsiniz?"
-
-#: calendar/gui/dialogs/delete-comp.c:79
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr "Bu `%s' vəzifəsini həqiqətən də silmək istəyirsiniz?"
-
-#: calendar/gui/dialogs/delete-comp.c:82
-msgid "Are you sure you want to delete this untitled task?"
-msgstr "Bu adsız vəzifəsini həqiqətən də silmək istəyirsiniz?"
-
-#: calendar/gui/dialogs/delete-comp.c:88
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr "Bu `%s' jurnal girişini həqiqətən də silmək istəyirsiniz?"
-
-#: calendar/gui/dialogs/delete-comp.c:91
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr "Bu adsız jurnal girişini həqiqətən də silmək istəyirsiniz?"
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr "Dəyişiklikləri qeyd etmək istəyirsinizimi?"
-
-#: calendar/gui/dialogs/task-editor.c:707
-msgid "Edit Task"
-msgstr "Vəzifəni Düzəlt"
-
-#: calendar/gui/dialogs/task-editor.c:713 calendar/gui/event-editor.c:382
-msgid "No summary"
-msgstr "Mündəricat yoxdur"
-
-#: calendar/gui/dialogs/task-editor.c:719 calendar/gui/event-editor.c:388
-#, c-format
-msgid "Appointment - %s"
-msgstr "Ä°clas - %s"
-
-#: calendar/gui/dialogs/task-editor.c:722 calendar/gui/event-editor.c:391
-#, c-format
-msgid "Task - %s"
-msgstr "Vəzifə - %s"
-
-#: calendar/gui/dialogs/task-editor.c:725 calendar/gui/event-editor.c:394
-#, c-format
-msgid "Journal entry - %s"
-msgstr "Jurnal üzvü - %s"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr "% _Qurtardı:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:158
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr "Sinifləndirmələr"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-msgid "Date & Time"
-msgstr "Tarix vÉ™ Vaxt"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr "BitirmÉ™ Tarixi:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-msgid "Pri_vate"
-msgstr "Xü_susi"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-msgid "Progress"
-msgstr "GediÅŸat"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr "Ãœm_umi"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-msgid "Sta_rt Date:"
-msgstr "BaÅŸla_ma Tarixi:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-msgid "Su_mmary:"
-msgstr "Mü_ndəricat:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr "Vəzifə"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-msgid "URL:"
-msgstr "URL:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr "_Gizli"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Contacts..."
-msgstr "_ÆlaqÉ™lÉ™r ..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-msgid "_Due Date:"
-msgstr "_Bu tarixə qədər :"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-msgid "_Priority:"
-msgstr "_Üstünlük:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "_Status:"
-msgstr "_Hal:"
-
-#: calendar/gui/e-calendar-table.c:157
-msgid "Categories"
-msgstr "Kateqoriyalar"
-
-#: calendar/gui/e-calendar-table.c:159
-msgid "Completion Date"
-msgstr "Qurtarma Vaxtı"
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "End Date"
-msgstr "Son Tarix"
-
-#: calendar/gui/e-calendar-table.c:161
-msgid "Start Date"
-msgstr "BaÅŸlama Tarixi"
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Geographical Position"
-msgstr "Çoğrafi Yerləşmə"
-
-#: calendar/gui/e-calendar-table.c:164
-msgid "Percent complete"
-msgstr "Faiz Qurtardı"
-
-#: calendar/gui/e-calendar-table.c:166
-msgid "Summary"
-msgstr "Mündəricat"
-
-#: calendar/gui/e-calendar-table.c:167
-msgid "Transparency"
-msgstr "Şəffaf"
-
-#: calendar/gui/e-calendar-table.c:168
-msgid "URL"
-msgstr "URL"
-
-#: calendar/gui/e-calendar-table.c:169
-msgid "Alarms"
-msgstr "Alarm"
-
-#: calendar/gui/e-calendar-table.c:170
-msgid "Click here to add a task"
-msgstr "Vəzifə əlavə etmək üçün buraya tıqla"
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "0%"
-msgstr "0%"
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "10%"
-msgstr "10%"
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "20%"
-msgstr "20%"
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "30%"
-msgstr "30%"
-
-#: calendar/gui/e-calendar-table.c:378
-#, c-format
-msgid "40%"
-msgstr "40%"
-
-#: calendar/gui/e-calendar-table.c:379
-#, c-format
-msgid "50%"
-msgstr "50%"
-
-#: calendar/gui/e-calendar-table.c:380
-#, c-format
-msgid "60%"
-msgstr "60%"
-
-#: calendar/gui/e-calendar-table.c:381
-#, c-format
-msgid "70%"
-msgstr "70%"
-
-#: calendar/gui/e-calendar-table.c:382
-#, c-format
-msgid "80%"
-msgstr "80%"
-
-#: calendar/gui/e-calendar-table.c:383
-#, c-format
-msgid "90%"
-msgstr "90%"
-
-#: calendar/gui/e-calendar-table.c:384
-#, c-format
-msgid "100%"
-msgstr "100%"
-
-#: calendar/gui/e-calendar-table.c:551
-msgid "Mark Complete"
-msgstr "İşarətləmə qurtadı"
-
-#: calendar/gui/e-calendar-table.c:552
-msgid "Mark the task complete"
-msgstr "Vəzifə qurtarmasını işarətlə"
-
-#: calendar/gui/e-calendar-table.c:557
-msgid "Edit this task..."
-msgstr "Bu vəzifəni düzəlt ..."
-
-#: calendar/gui/e-calendar-table.c:558
-msgid "Edit the task"
-msgstr "Vəzifəni Düzəlt"
-
-#: calendar/gui/e-calendar-table.c:560
-#: ui/evolution-task-editor-dialog.xml.h:19
-msgid "Delete this task"
-msgstr "Vəzifəni sil"
-
-#: calendar/gui/e-calendar-table.c:561
-msgid "Delete the task"
-msgstr "Bu vəzifəni sil"
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:570 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:617
-msgid "am"
-msgstr "am"
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:573 calendar/gui/e-week-view.c:303
-#: calendar/gui/print.c:616
-msgid "pm"
-msgstr "pm"
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:274 calendar/gui/e-day-view.c:1294
-#: calendar/gui/e-week-view-main-item.c:325
-msgid "%A %d %B"
-msgstr "%A %d %B"
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:278 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:334
-msgid "%a %d %b"
-msgstr "%a %b %d"
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:282 calendar/gui/e-day-view.c:1321
-#: calendar/gui/e-week-view-main-item.c:348
-msgid "%d %b"
-msgstr "%d %b"
-
-#: calendar/gui/e-day-view.c:3146 ui/evolution-calendar.xml.h:16
-msgid "New Appointment"
-msgstr "Yeni Ä°clas"
-
-#: calendar/gui/e-day-view.c:3148 calendar/gui/e-week-view.c:3280
-msgid "New All Day Event"
-msgstr "Yeni Bütün Gün Hadisələri"
-
-#: calendar/gui/e-day-view.c:3153 calendar/gui/e-week-view.c:3285
-msgid "Go to Today"
-msgstr "Günə Get"
-
-#: calendar/gui/e-day-view.c:3155 calendar/gui/e-week-view.c:3287
-msgid "Go to Date..."
-msgstr "TarixÉ™ Get..."
-
-#: calendar/gui/e-day-view.c:3162 calendar/gui/e-week-view.c:3293
-#: ui/evolution-calendar.xml.h:19 ui/evolution-message-composer.xml.h:10
-msgid "Open"
-msgstr "Aç"
-
-#: calendar/gui/e-day-view.c:3164 calendar/gui/e-week-view.c:3295
-msgid "Delete this Appointment"
-msgstr "Bu İclası sil"
-
-#: calendar/gui/e-day-view.c:3166 calendar/gui/e-week-view.c:3297
-#: ui/evolution-event-editor.xml.h:45
-msgid "Schedule Meeting"
-msgstr "Görüş Cədvəli"
-
-#: calendar/gui/e-day-view.c:3175 calendar/gui/e-week-view.c:3310
-msgid "Make this Occurrence Movable"
-msgstr "Bu hadisənin daşına bilməsinə imkan ver"
-
-#: calendar/gui/e-day-view.c:3177 calendar/gui/e-week-view.c:3312
-msgid "Delete this Occurrence"
-msgstr "Bu Hadisəni sil"
-
-#: calendar/gui/e-day-view.c:3179
-msgid "Delete all Occurrences"
-msgstr "Bütün Hadisələri sil"
-
-#: calendar/gui/e-day-view-time-item.c:519
-#, c-format
-msgid "%02i minute divisions"
-msgstr "%02i dəqiqə bölmələri"
-
-#: calendar/gui/e-itip-control.c:161
-msgid "I couldn't update your calendar file!\n"
-msgstr "Təqvim faylını güncəlləyə bilmirəm!\n"
-
-#: calendar/gui/e-itip-control.c:167 calendar/gui/e-itip-control.c:510
-msgid "Component successfully updated."
-msgstr "Komponenet müvəffəqiyyətlə güncəlləndi."
-
-#: calendar/gui/e-itip-control.c:173
-msgid "There was an error loading the calendar file."
-msgstr "Təqvim faylı yüklənərkən xəta oldu."
-
-#: calendar/gui/e-itip-control.c:197
-msgid "I couldn't open your calendar file!\n"
-msgstr "Təqvim faylını aça bilmirəm!\n"
-
-#: calendar/gui/e-itip-control.c:458 calendar/gui/e-itip-control.c:529
-msgid "I couldn't load your calendar file!\n"
-msgstr "Təqvim faylını yükləyə bilmirəm!\n"
-
-#: calendar/gui/e-itip-control.c:470
-msgid "I couldn't read your calendar file!\n"
-msgstr "Təqvim faylını oxuya bilmirəm!\n"
-
-#: calendar/gui/e-itip-control.c:483
-msgid "This is a reply from someone who was uninvited!"
-msgstr "Bu, dəvət edilməmiş biri tərəfindən verilən cavabdır!"
-
-#: calendar/gui/e-itip-control.c:499
-msgid "I couldn't update your calendar store."
-msgstr "Təqvim mə'lumatlarını güncəlləyə bilmirəm."
-
-#: calendar/gui/e-itip-control.c:540
-msgid "I couldn't delete the calendar component!\n"
-msgstr "Təqvim komponenetini silə bilmirəm!\n"
-
-#: calendar/gui/e-itip-control.c:550
-msgid "Component successfully deleted."
-msgstr "Komponenet müvəffəqiyyətlə silindi."
-
-#: calendar/gui/e-itip-control.c:694
-msgid "I don't recognize this type of calendar component."
-msgstr "Bu cür təqvim parçasından başım çıxmır."
-
-#: calendar/gui/e-itip-control.c:780
-msgid "Add to Calendar"
-msgstr "TÉ™qvimÉ™ ÆlavÉ™ Et"
-
-#: calendar/gui/e-itip-control.c:814
-msgid " Accept "
-msgstr " Qəbul Et"
-
-#: calendar/gui/e-itip-control.c:815
-msgid " Decline "
-msgstr " Rədd Et"
-
-#: calendar/gui/e-itip-control.c:816
-msgid " Tentative "
-msgstr " GiriÅŸimli"
-
-#: calendar/gui/e-itip-control.c:860
-msgid "Update Calendar"
-msgstr "Təqvimi Güncəllə"
-
-#: calendar/gui/e-itip-control.c:883
-msgid "Cancel Meeting"
-msgstr "Görüşü Ləğv Et"
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, no-c-format
-msgid "%P %%"
-msgstr "%P %%"
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr "-- --"
-
-#: calendar/gui/e-itip-control.glade.h:4
-msgid "Calendar Message"
-msgstr "Təqvim İsmarıcı"
-
-#: calendar/gui/e-itip-control.glade.h:5 mail/mail-format.c:623
-msgid "Date:"
-msgstr "Tarix:"
-
-#: calendar/gui/e-itip-control.glade.h:8
-msgid "Loading calendar..."
-msgstr "Təqvim yüklənir..."
-
-#: calendar/gui/e-itip-control.glade.h:9
-msgid "Organizer:"
-msgstr "Təşkilatçı:"
-
-#: calendar/gui/e-itip-control.glade.h:10
-msgid "Server Message:"
-msgstr "Verici İsmarıcı:"
-
-#: calendar/gui/e-itip-control.glade.h:11
-msgid "Summary:"
-msgstr "Mündəricat:"
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr "bitiÅŸ tarixi"
-
-#: calendar/gui/e-itip-control.glade.h:13
-msgid "date-start"
-msgstr "baÅŸlama tarixi"
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-msgid "Attendee"
-msgstr "Ziyarətçilər"
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-msgid "Attendee address"
-msgstr "Ziyarətçilərin ünvanları"
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-msgid "Attendees: "
-msgstr "Ziyarətçilər:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr ""
-"Görüşü\n"
-"Ləğv Et"
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-msgid "Chair"
-msgstr "Stul"
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-msgid "Meeting Invitations"
-msgstr "Görüş Dəvətləri"
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr "Qeyri İştirakçılar"
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr "Ehtiyatdakı İştirakçılar"
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-msgid "Organizer: "
-msgstr "Təşkilatçı:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:14
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-"Hadisəni\n"
-"Dərc Et"
-
-#: calendar/gui/e-meeting-dialog.glade.h:16
-msgid "RSVP"
-msgstr "RSVP"
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid ""
-"Request\n"
-"Meeting"
-msgstr ""
-"Görüş\n"
-"Ä°stÉ™"
-
-#: calendar/gui/e-meeting-dialog.glade.h:19
-msgid "Required Participant"
-msgstr "Lazımi İştirakçılar"
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-msgid "Role"
-msgstr "Rolu"
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-msgid ""
-"Schedule\n"
-"Time"
-msgstr ""
-"Vaxt\n"
-"Planlaşdır"
-
-#: calendar/gui/e-meeting-dialog.glade.h:23 filter/libfilter-i18n.h:49
-#: mail/message-list.c:1083
-msgid "Status"
-msgstr "Hal"
-
-#: calendar/gui/e-tasks.c:149 calendar/gui/e-tasks.c:469
-#: calendar/gui/e-tasks.c:502
-msgid "All"
-msgstr "Hamısı"
-
-#: calendar/gui/e-tasks.c:155
-msgid "Category:"
-msgstr "Kateqoriyalar:"
-
-#: calendar/gui/e-tasks.c:298
-#, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "`%s' dakı (dəki) vəzifələr yüklənə bilmədi"
-
-#: calendar/gui/e-tasks.c:310
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr "`%s' i(ı) yükləməyə yarayan yol dəstəklənmir"
-
-#: calendar/gui/event-editor.c:376
-msgid "Edit Appointment"
-msgstr "İclası düzəlt"
-
-#: calendar/gui/event-editor.c:454
-msgid "on"
-msgstr "..da"
-
-#: calendar/gui/event-editor.c:479 filter/filter-datespec.c:81
-msgid "day"
-msgstr "gün"
-
-#: calendar/gui/event-editor.c:606
-msgid "on the"
-msgstr "...da (dÉ™)"
-
-#: calendar/gui/event-editor.c:613
-msgid "th"
-msgstr "."
-
-#: calendar/gui/event-editor.c:759
-msgid "occurrences"
-msgstr "hadisələr"
-
-#: calendar/gui/event-editor.c:876
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr "Bu görüşdə \"Evolution\"un düzəldə bilməyəcəyi hallar var."
-
-#: calendar/gui/event-editor.c:1548
-#, c-format
-msgid " %d days"
-msgstr "%d gün"
-
-#: calendar/gui/event-editor.c:1550
-msgid " 1 day"
-msgstr "1 gün"
-
-#: calendar/gui/event-editor.c:1553
-#, c-format
-msgid " %d weeks"
-msgstr "%d həftə"
-
-#: calendar/gui/event-editor.c:1555
-msgid " 1 week"
-msgstr "2 həftə"
-
-#: calendar/gui/event-editor.c:1558
-#, c-format
-msgid " %d hours"
-msgstr "%d saat"
-
-#: calendar/gui/event-editor.c:1560
-msgid " 1 hour"
-msgstr "1 saat"
-
-#: calendar/gui/event-editor.c:1563
-#, c-format
-msgid " %d minutes"
-msgstr "%d dəqiqə"
-
-#: calendar/gui/event-editor.c:1565
-msgid " 1 minute"
-msgstr "1 dəqiqə"
-
-#: calendar/gui/event-editor.c:1568
-#, c-format
-msgid " %d seconds"
-msgstr "%d saniyÉ™"
-
-#: calendar/gui/event-editor.c:1570
-msgid " 1 second"
-msgstr "1 saniyÉ™"
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1593
-msgid "Play a sound"
-msgstr "Səs çal"
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1596
-msgid "Show a dialog"
-msgstr "Dialoqu göstər"
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1599
-msgid "Send an email"
-msgstr "ePoçt göndər"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1602
-msgid "Run a program"
-msgstr "Proqramı işə sal"
-
-#: calendar/gui/event-editor.c:1617
-msgid " before start of appointment"
-msgstr "iclasın başlanğıcından əvvəl"
-
-#: calendar/gui/event-editor.c:1619
-msgid " after start of appointment"
-msgstr "iclasın başlanğıcından sonra"
-
-#: calendar/gui/event-editor.c:1627
-msgid " before end of appointment"
-msgstr "iclas qurtarandan əvvəl"
-
-#: calendar/gui/event-editor.c:1629
-msgid " after end of appointment"
-msgstr "iclas qurtarandan sonra"
-
-#: calendar/gui/event-editor.c:3137 calendar/gui/print.c:1097
-#: calendar/gui/print.c:1099 calendar/gui/print.c:1100
-msgid "%a %b %d %Y"
-msgstr "%a %b %d %Y"
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr "Günün bü_tün hadisələri"
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-msgid "Appointment"
-msgstr "Ä°clas"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-msgid "Appointment Basics"
-msgstr "Görüş Æsasları"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-msgid "Custom recurrence"
-msgstr "Xüsusi təkrarlama"
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr "Hər"
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-msgid "Exceptions"
-msgstr "Xaric Tutulan"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-msgid "Modify"
-msgstr "Düzəlts"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-msgid "No recurrence"
-msgstr "Təkrarlama yoxudr"
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-msgid "Preview"
-msgstr "Nümayiş"
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Recurrence"
-msgstr "Təkrarlama"
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-msgid "Recurrence Rule"
-msgstr "Təkralama Qaydası"
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-msgid "Reminder"
-msgstr "Xatırladıcı"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-msgid "Settings..."
-msgstr "QurÄŸular..."
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr "Bəsit Təkrarlama"
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-msgid "_End time:"
-msgstr "_Sonlanma vaxtı:"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Start time:"
-msgstr "_BaÅŸlama vaxt:"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Starting date:"
-msgstr "_BaÅŸlama Tarixi"
-
-#. Automatically generated. Do not edit.
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:2
-msgid "after"
-msgstr "sonra"
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:6
-msgid "before"
-msgstr "əvvəl"
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "day(s)"
-msgstr "gün(lər)"
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-msgid "end of appointment"
-msgstr "görüşün sonu"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "for"
-msgstr "üçün"
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr "həmişə"
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-msgid "hour(s)"
-msgstr "saat"
-
-#: calendar/gui/event-editor-dialog.glade.h:40 mail/mail-config.glade.h:77
-msgid "minute(s)"
-msgstr "dəqiqə"
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "month(s)"
-msgstr "ay"
-
-#: calendar/gui/event-editor-dialog.glade.h:42
-msgid "start of appointment"
-msgstr "iclasın başlanğıcı"
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-msgid "until"
-msgstr "qədər"
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "week(s)"
-msgstr "həftə"
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "year(s)"
-msgstr "il"
-
-#: calendar/gui/e-week-view.c:3278 calendar/gui/e-week-view.c:3301
-msgid "New Appointment..."
-msgstr "Yeni Ä°clas ..."
-
-#: calendar/gui/e-week-view.c:3314
-msgid "Delete All Occurrences"
-msgstr "Bütün Hadisələri Sil"
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:342
-msgid "%d %B"
-msgstr "%d %B"
-
-#: calendar/gui/gnome-cal.c:223
-msgid "Show all "
-msgstr "Hamısını Göstər"
-
-#: calendar/gui/gnome-cal.c:237
-msgid "Summary contains"
-msgstr "Xülasə daxil edən"
-
-#: calendar/gui/gnome-cal.c:238
-msgid "Description contains"
-msgstr "İzah daxil edən"
-
-#: calendar/gui/gnome-cal.c:239
-msgid "Comment contains"
-msgstr "Şərh daxil edən"
-
-#: calendar/gui/gnome-cal.c:240
-msgid "Has category"
-msgstr "Kateqoriyaya sahib olan"
-
-#: calendar/gui/gnome-cal.c:843
-#, c-format
-msgid "Could not open the folder in `%s'"
-msgstr "`%s'da(də) qovluq yarada bilmədim"
-
-#: calendar/gui/gnome-cal.c:854
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr "`%s' i(ı) açmağa yarayan yol dəstəklənmir"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr "Təqvim göstərən Bonobo idarə nümunəsi."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-msgid "Evolution calendar executive summary component."
-msgstr "Evolutionun İcracı mündəricat parçası."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr "Evolution Təqvim iTip/iMip Nümayişçisi"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr "'Evolution'un Təqvim əlavəsi."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-msgid "Factory for the Calendar Summary component."
-msgstr "Təqvim Mündəricatı parçası e'malatxanası."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-msgid "Factory for the Evolution calendar component."
-msgstr "Evolutionun təqvim parçasının mərkəzi."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-msgid "Factory for the calendar iTip view control"
-msgstr "Təqvim iTip nümayiş idarəsi e'malatxanası."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-msgid "Factory for the sample Calendar control"
-msgstr "Nümunəvi Təqvim idarəsi e'malaxanası"
-
-#: calendar/gui/goto-dialog.glade.h:1
-msgid "April"
-msgstr "Aprel"
-
-#: calendar/gui/goto-dialog.glade.h:2
-msgid "August"
-msgstr "Avqust"
-
-#: calendar/gui/goto-dialog.glade.h:3
-msgid "December"
-msgstr "Dekabr"
-
-#: calendar/gui/goto-dialog.glade.h:4
-msgid "February"
-msgstr "Fevral"
-
-#: calendar/gui/goto-dialog.glade.h:5
-msgid "Go To Date"
-msgstr "TarixÉ™ Get"
-
-#: calendar/gui/goto-dialog.glade.h:6
-msgid "Go To Today"
-msgstr "Günə Get"
-
-#: calendar/gui/goto-dialog.glade.h:7
-msgid "January"
-msgstr "Yanvars"
-
-#: calendar/gui/goto-dialog.glade.h:8
-msgid "July"
-msgstr "Ä°yul"
-
-#: calendar/gui/goto-dialog.glade.h:9
-msgid "June"
-msgstr "Ä°yun"
-
-#: calendar/gui/goto-dialog.glade.h:10
-msgid "March"
-msgstr "Mart"
-
-#: calendar/gui/goto-dialog.glade.h:11
-msgid "May"
-msgstr "May"
-
-#: calendar/gui/goto-dialog.glade.h:12
-msgid "November"
-msgstr "Noyabr"
-
-#: calendar/gui/goto-dialog.glade.h:13
-msgid "October"
-msgstr "Oktyabr"
-
-#: calendar/gui/goto-dialog.glade.h:14
-msgid "September"
-msgstr "Sentyabr"
-
-#: calendar/gui/print.c:300
-msgid "1st"
-msgstr "1.nci"
-
-#: calendar/gui/print.c:300
-msgid "2nd"
-msgstr "2.nci"
-
-#: calendar/gui/print.c:300
-msgid "3rd"
-msgstr "3.ncü"
-
-#: calendar/gui/print.c:300
-msgid "4th"
-msgstr "4.ncü"
-
-#: calendar/gui/print.c:300
-msgid "5th"
-msgstr "5.nci"
-
-#: calendar/gui/print.c:301
-msgid "6th"
-msgstr "6.ncı"
-
-#: calendar/gui/print.c:301
-msgid "7th"
-msgstr "7.nci"
-
-#: calendar/gui/print.c:301
-msgid "8th"
-msgstr "8.nci"
-
-#: calendar/gui/print.c:301
-msgid "9th"
-msgstr "9.ncu"
-
-#: calendar/gui/print.c:301
-msgid "10th"
-msgstr "10.ncu"
-
-#: calendar/gui/print.c:302
-msgid "11th"
-msgstr "11.nci"
-
-#: calendar/gui/print.c:302
-msgid "12th"
-msgstr "12.nci"
-
-#: calendar/gui/print.c:302
-msgid "13th"
-msgstr "13.ncü"
-
-#: calendar/gui/print.c:302
-msgid "14th"
-msgstr "14.ncü"
-
-#: calendar/gui/print.c:302
-msgid "15th"
-msgstr "15.nci"
-
-#: calendar/gui/print.c:303
-msgid "16th"
-msgstr "16.ncı"
-
-#: calendar/gui/print.c:303
-msgid "17th"
-msgstr "17.nci"
-
-#: calendar/gui/print.c:303
-msgid "18th"
-msgstr "18.nci"
-
-#: calendar/gui/print.c:303
-msgid "19th"
-msgstr "19.ncu"
-
-#: calendar/gui/print.c:303
-msgid "20th"
-msgstr "20.nci"
-
-#: calendar/gui/print.c:304
-msgid "21st"
-msgstr "21.nci"
-
-#: calendar/gui/print.c:304
-msgid "22nd"
-msgstr "22.nci"
-
-#: calendar/gui/print.c:304
-msgid "23rd"
-msgstr "23.ncü"
-
-#: calendar/gui/print.c:304
-msgid "24th"
-msgstr "24.ncü"
-
-#: calendar/gui/print.c:304
-msgid "25th"
-msgstr "25.nci"
-
-#: calendar/gui/print.c:305
-msgid "26th"
-msgstr "26.ncı"
-
-#: calendar/gui/print.c:305
-msgid "27th"
-msgstr "27.nci"
-
-#: calendar/gui/print.c:305
-msgid "28th"
-msgstr "28.nci"
-
-#: calendar/gui/print.c:305
-msgid "29th"
-msgstr "29.ncu"
-
-#: calendar/gui/print.c:305
-msgid "30th"
-msgstr "39.ncu"
-
-#: calendar/gui/print.c:306
-msgid "31st"
-msgstr "31.nci"
-
-#: calendar/gui/print.c:362
-msgid "Su"
-msgstr "Baz."
-
-#: calendar/gui/print.c:362
-msgid "Mo"
-msgstr "B.ei"
-
-#: calendar/gui/print.c:362
-msgid "Tu"
-msgstr "Ç.a"
-
-#: calendar/gui/print.c:362
-msgid "We"
-msgstr "Çə"
-
-#: calendar/gui/print.c:362
-msgid "Th"
-msgstr "C.a"
-
-#: calendar/gui/print.c:362
-msgid "Fr"
-msgstr "Cümə"
-
-#: calendar/gui/print.c:362
-msgid "Sa"
-msgstr "Åžn"
-
-#. Day
-#: calendar/gui/print.c:1078
-msgid "Current day (%a %b %d %Y)"
-msgstr "Hazırkı gün ( %a %b %d %Y )"
-
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1096
-msgid "%a %b %d"
-msgstr "%a %b %d"
-
-#: calendar/gui/print.c:1093
-msgid "%a %d %Y"
-msgstr "%a %b %d"
-
-#: calendar/gui/print.c:1104
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr "Hazırkı həftə ( %s - %s)"
-
-#. Month
-#: calendar/gui/print.c:1112
-msgid "Current month (%b %Y)"
-msgstr "Hazırkı ay ( %b %Y )"
-
-#. Year
-#: calendar/gui/print.c:1119
-msgid "Current year (%Y)"
-msgstr "Hazırkı il ( %Y )"
-
-#: calendar/gui/print.c:1156
-msgid "Print Calendar"
-msgstr "Təqvimi çap et"
-
-#: calendar/gui/print.c:1321 mail/mail-callbacks.c:1524
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:24
-#: ui/evolution-mail.xml.h:57
-msgid "Print Preview"
-msgstr "Çap Etmə nümayişi"
-
-#: calendar/gui/tasks-control.c:108
-msgid "The URI of the tasks folder to display"
-msgstr "Göstəriləcək vəzifələr qovluğunun URIsi"
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-"\"Evolution\" təqvim qovluğunda olan vəzifələri yeni qovluqlara "
-"daşıdı."
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-"\"Evolution\" təqvim qovluğunda olan vəzifələri yeni qovluqlara "
-"daşımağa cəhd etdi.\n"
-"Bəzi vəzifələr daşına bilmədi. Ona görə də bu əməliyyat "
-"gələcəkdə də aparılmalıdır."
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-"`%s' tapıla bilmədi; təqvim qovluğuna heç bir vəzifə vəzifələr "
-"qovluğuna daşına bilməyəcək."
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-"`%s' yükləmək üçün işlədiləcən metod dəstəkləmir; təqvim "
-"qovluğuna heç bir vəzifə vəzifələr qovluğuna daşına bilməyəcək."
-
-#: calendar/gui/weekday-picker.c:315 calendar/gui/weekday-picker.c:410
-msgid "SMTWTFS"
-msgstr "BBeÇaÇCaCŞ"
-
-#: camel/camel-cipher-context.c:169
-msgid "Signing is not supported by this cipher"
-msgstr "Bu şifrləmə ilə imza dəstəklənmir"
-
-#: camel/camel-cipher-context.c:209
-msgid "Clearsigning is not supported by this cipher"
-msgstr "Bu qeydlərdə müəyyənləşdirilən imzalama növü dəstəklənmir"
-
-#: camel/camel-cipher-context.c:249
-msgid "Verifying is not supported by this cipher"
-msgstr "Bu qeydlərdə təsdiqləmə dəstəklənmir"
-
-#: camel/camel-cipher-context.c:292
-msgid "Encryption is not supported by this cipher"
-msgstr "Bu qeydlərdə şifrləmə dəstəklənmir"
-
-#: camel/camel-cipher-context.c:334
-msgid "Decryption is not supported by this cipher"
-msgstr "Bu qeydlərdə şifr açma dəstəklənmir"
-
-#: camel/camel-filter-driver.c:534 camel/camel-filter-driver.c:543
-msgid "Syncing folders"
-msgstr "Qovluqlar sinxronlaşdırılır"
-
-#: camel/camel-filter-driver.c:643
-msgid "Unable to open spool folder"
-msgstr "Növbə faylını aça bilmədim"
-
-#: camel/camel-filter-driver.c:652
-msgid "Unable to process spool folder"
-msgstr "Növbə faylını işlədə bilmirəm"
-
-#: camel/camel-filter-driver.c:666
-msgid "Getting message %d (%d%%)"
-msgstr "%d (%d%%) İsmarıcı alınır"
-
-#: camel/camel-filter-driver.c:670 camel/camel-filter-driver.c:679
-#, c-format
-msgid "Failed message %d"
-msgstr "Bacarılmayan İsmarıc %d"
-
-#: camel/camel-filter-driver.c:671
-msgid "Cannot open message"
-msgstr "İsmarıc açıla bilmir"
-
-#: camel/camel-filter-driver.c:690 camel/camel-filter-driver.c:788
-msgid "Syncing folder"
-msgstr "Qovluqlar sinxronlaşdırılır"
-
-#: camel/camel-filter-driver.c:694 camel/camel-filter-driver.c:793
-msgid "Complete"
-msgstr "Qurtar"
-
-#: camel/camel-filter-driver.c:748
-#, c-format
-msgid "Getting message %d of %d"
-msgstr "%d İsmarıcın %d qədərə alınır"
-
-#: camel/camel-filter-driver.c:753 camel/camel-filter-driver.c:771
-#, c-format
-msgid "Failed at message %d of %d"
-msgstr "%d nin(nın) %d ismarıcında iflas etdim"
-
-#: camel/camel-filter-driver.c:866
-#, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr "Alıcı süzgəc xətası: %s: %s"
-
-#: camel/camel-filter-driver.c:871
-#, c-format
-msgid "Error executing filter: %s: %s"
-msgstr "İşə salıcı süzgəc xətası: %s: %s"
-
-#: camel/camel-filter-search.c:439 camel/camel-filter-search.c:445
-#, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr "İşə salıcı süzgəc axtarışı xətası: %s: %s"
-
-#: camel/camel-folder-search.c:328
-#, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-"Axtarış ifadəsi darana bilmir:%s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:338
-#, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr ""
-"İşə salıcı axtarış ifadəsi darama xətası:%s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:485 camel/camel-folder-search.c:513
-msgid "(match-all) requires a single bool result"
-msgstr "(hamısını yoxla) tək düzgün nəticə istəyir"
-
-#: camel/camel-folder-search.c:559
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr "Namə'lum başlıqda sorǧu aparılır: %s"
-
-#: camel/camel-folder-search.c:670 camel/camel-folder-search.c:714
-msgid "Invalid type in body-contains, expecting string"
-msgstr "Cismdə hökmsüz yazı, kəlimə xaric"
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:92 camel/camel-lock.c:111 camel/camel-movemail.c:138
-#: camel/camel-movemail.c:185
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "%s üçün qıfıl faylını yarada bilmədim: %s"
-
-#: camel/camel-lock.c:151 camel/camel-movemail.c:219
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr ""
-"%s dakı(dəki) qıfıl fayllının alınması müddəti doldu. Yenidən "
-"sına."
-
-#: camel/camel-lock.c:201
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr ""
-"fcntl(2) istifadə edilərək qıfıl faylı alınması ifşlas etdi: %s"
-
-#: camel/camel-lock.c:255
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr ""
-"fclock(2) istifadə edilərək qıfıl faylı alınması iflas etdi: %s"
-
-#: camel/camel-movemail.c:101
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr "%s məktub faylı yoxlana bilmir: %s"
-
-#: camel/camel-movemail.c:148
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr "%s məktub faylı açıla bilmir: %s"
-
-#: camel/camel-movemail.c:158
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr "Müvəqqəti məktub faylı %s açıla bilmir: %s"
-
-#: camel/camel-movemail.c:199
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr "%s üçün qıfıl faylı sınana bilmədi: %s"
-
-#: camel/camel-movemail.c:245
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr "Məktub faylı oxunma xətası: %s"
-
-#: camel/camel-movemail.c:256
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr "Müvəqqəti məktub faylı yazılması xətası: %s"
-
-#: camel/camel-movemail.c:274
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr "Məktubların müvəqqəti %s fayllında saxlanma xətası: %s"
-
-#: camel/camel-movemail.c:306
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr "Boru yaradıla bilmədi: %s"
-
-#: camel/camel-movemail.c:318
-#, c-format
-msgid "Could not fork: %s"
-msgstr "Çəngəllənə bilmədi: %s"
-
-#: camel/camel-movemail.c:356
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr "Məktub daşıma proqramı iflas etdi: %s"
-
-#: camel/camel-movemail.c:357
-msgid "(Unknown error)"
-msgstr "(Namə'lum xəta)"
-
-#: camel/camel-movemail.c:587
-#, c-format
-msgid "Error copying mail temp file: %s"
-msgstr "Müvəqqəti məktub faylı köçürülmə xətası: %s"
-
-#: camel/camel-pgp-context.c:188
-#, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr "%s üçün %s parol kalimanizi lürfən girin"
-
-#: camel/camel-pgp-context.c:191
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr "Lütfən %s parol kəlimənizi girin"
-
-#: camel/camel-pgp-context.c:509
-msgid "No plaintext to sign."
-msgstr "İmzalanacaq düz mətn yoxdur."
-
-#: camel/camel-pgp-context.c:516 camel/camel-pgp-context.c:688
-#: camel/camel-pgp-context.c:1055 camel/camel-pgp-context.c:1267
-msgid "No password provided."
-msgstr "Parol verilməyib."
-
-#: camel/camel-pgp-context.c:522 camel/camel-pgp-context.c:694
-#: camel/camel-pgp-context.c:877 camel/camel-pgp-context.c:1062
-#: camel/camel-pgp-context.c:1274
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr "GPG/PGP proqramına boru yaradıla bilmir. %s"
-
-#: camel/camel-pgp-context.c:681
-msgid "No plaintext to clearsign."
-msgstr "Təmiz imza mətni yoxdur."
-
-#: camel/camel-pgp-context.c:871
-msgid "No plaintext to verify."
-msgstr "Təsdiqlənəcək düz mətn yoxdur."
-
-#: camel/camel-pgp-context.c:888
-#, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "Müvəqqəti fayl yaradıla bilmir: %s"
-
-#: camel/camel-pgp-context.c:1045
-msgid "No plaintext to encrypt."
-msgstr "Şifrlənəcək mətn yoxdur."
-
-#: camel/camel-pgp-context.c:1071
-msgid "No recipients specified"
-msgstr "Alıcı bildirilməyib"
-
-#: camel/camel-pgp-context.c:1259
-msgid "No ciphertext to decrypt."
-msgstr "Şifri açılacaq mətn yoxdur."
-
-#: camel/camel-provider.c:131
-#, c-format
-msgid "Could not load %s: Module loading not supported on this system."
-msgstr "%s yüklənə bilmir: Modul yükləmə bu sistemdə dəstəklənmir."
-
-#: camel/camel-provider.c:140
-#, c-format
-msgid "Could not load %s: %s"
-msgstr "%s yüklənə bilmədi: %s"
-
-#: camel/camel-provider.c:148
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr "%s yüklənə bilmir: Modulda başlatma kodu yoxdur."
-
-#: camel/camel-remote-store.c:186
-#, c-format
-msgid "%s server %s"
-msgstr "%s verici %s"
-
-#: camel/camel-remote-store.c:190
-#, c-format
-msgid "%s service for %s on %s"
-msgstr "%s üstündə %s üçün %s xidmətləri"
-
-#: camel/camel-remote-store.c:240
-msgid "Connection cancelled"
-msgstr "Bağlantı Ləğv edildi"
-
-#: camel/camel-remote-store.c:243
-#: camel/providers/smtp/camel-smtp-transport.c:261
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr "%s a(ə) bağlana bilmirəm (qapı %d): %s"
-
-#: camel/camel-remote-store.c:244
-msgid "(unknown host)"
-msgstr "(namÉ™'lum ev sahibi)"
-
-#: camel/camel-remote-store.c:325 camel/camel-remote-store.c:387
-#: camel/camel-remote-store.c:458
-#: camel/providers/imap/camel-imap-command.c:287
-msgid "Operation cancelled"
-msgstr "ÆmÉ™liyyat ləğv edildi"
-
-#: camel/camel-remote-store.c:464
-msgid "Server unexpectedly disconnected"
-msgstr "Verici gözlanilməz şakildə bağlantını kəsdi"
-
-#: camel/camel-sasl-anonymous.c:33
-msgid "Anonymous"
-msgstr "Adsız"
-
-#: camel/camel-sasl-anonymous.c:35
-msgid "This option will connect to the server using an anonymous login."
-msgstr ""
-"Bu seçənəklə siz vericisiyə adsız olaraq bağlana biləcəksiniz."
-
-#: camel/camel-sasl-anonymous.c:110 camel/camel-sasl-plain.c:87
-msgid "Authentication failed."
-msgstr "Tanıtma bacarılmadı."
-
-#: camel/camel-sasl-anonymous.c:119
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-"Hökmsüz ePoçt ünvanı iz mə'lumatı:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:131
-#, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr ""
-"Hökmsüz mə'nasız iz mə'lumatı:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:143
-#, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr ""
-"Hökmsüz iz mə'lumatı:\n"
-"%s"
-
-#: camel/camel-sasl-cram-md5.c:35
-msgid "CRAM-MD5"
-msgstr "CRAM-MD5"
-
-#: camel/camel-sasl-cram-md5.c:37
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-"Bu seçənək ,əgər dəstəkləyirsə, verici ilə CRAM-MD5 parolu ilə "
-"ünsiyyət quracaqdır."
-
-#: camel/camel-sasl-digest-md5.c:43
-msgid "DIGEST-MD5"
-msgstr "DIGEST-MD5"
-
-#: camel/camel-sasl-digest-md5.c:45
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-"Bu seçənək ,əgər dəstəkləyirsə, verici ilə DIGEST-MD5 parolu ilə "
-"ünsiyyət quracaqdır."
-
-#: camel/camel-sasl-digest-md5.c:810
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr "Verici çox uzun dəvət verir (>2048 oktet)\n"
-
-#: camel/camel-sasl-digest-md5.c:819
-msgid "Server challenge invalid\n"
-msgstr "Verici dəvəti hökmsüzdür\n"
-
-#: camel/camel-sasl-digest-md5.c:825
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr "Verici dəvətində hömksüz \"Qoruma Keyfiyyəti\" bileti vardır\n"
-
-#: camel/camel-sasl-digest-md5.c:847
-msgid "Server response did not contain authorization data\n"
-msgstr "Verici cavabındakı tanıtma mə'lumatı düzgün deyildir\n"
-
-#: camel/camel-sasl-digest-md5.c:865
-msgid "Server response contained incomplete authorization data\n"
-msgstr "Verici cavabındakı tanıtma mə'lumatı natamamdır\n"
-
-#: camel/camel-sasl-digest-md5.c:875
-msgid "Server response does not match\n"
-msgstr "Verci cavabı uyğun gəlmir\n"
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "Kerberos 4"
-msgstr "Kerberos 4"
-
-#: camel/camel-sasl-kerberos4.c:42
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr ""
-"Bu seçənəklə siz vericisiyə Kerberos 4 tanıdılması yolu ilə "
-"bağlana biləcəksiniz."
-
-#: camel/camel-sasl-kerberos4.c:161
-#, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr ""
-"Kerberos bileti alına bilmir:\n"
-"%s"
-
-#: camel/camel-sasl-kerberos4.c:218
-#: camel/providers/imap/camel-imap-store.c:431
-msgid "Bad authentication response from server."
-msgstr "Vericidən xətalı tanıtma istəyi alındı."
-
-#: camel/camel-sasl-login.c:32
-msgid "NT Login"
-msgstr "NT GiriÅŸ"
-
-#: camel/camel-sasl-login.c:34 camel/camel-sasl-plain.c:34
-msgid "This option will connect to the server using a simple password."
-msgstr ""
-"Bu seçənəklə siz vericisiyə sadə parol ilə bağlana biləcəksiniz."
-
-#: camel/camel-sasl-login.c:127
-msgid "Unknown authentication state."
-msgstr "Namə'lum tanıtma vəziyyəti."
-
-#: camel/camel-search-private.c:111
-#, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr "Qaydalı ifadə dərlanməsi bacarılmadı: %s: %s"
-
-#: camel/camel-service.c:154
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr "'%s' URLsi istifadəçi adına ehtiyac hiss edir"
-
-#: camel/camel-service.c:162
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr "'%s' URLsi ev sahibinÉ™ ehtiyac hiss edir"
-
-#: camel/camel-service.c:170
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr "'%s' URLsi yola ehtiyac hiss edir"
-
-#: camel/camel-service.c:548
-#, c-format
-msgid "Resolving: %s"
-msgstr "\"%s\" Həll edilir"
-
-#: camel/camel-service.c:575
-#, c-format
-msgid "Failure in name lookup: %s"
-msgstr "Ad axtarışında iflas etdim: %s"
-
-#: camel/camel-service.c:600
-#, c-format
-msgid "Host lookup failed: %s: host not found"
-msgstr "Qovşaq Ad axtarışı iflas etdi: %s: qovşaq tapılmadı"
-
-#: camel/camel-service.c:602
-#, c-format
-msgid "Host lookup failed: %s: unknown reason"
-msgstr "Qovşaq Ad axtarışı iflas etdi: %s: namə'lum səbəb"
-
-#: camel/camel-session.c:68
-msgid "Virtual folder email provider"
-msgstr "_Virtual Qovluq Sehirbazı ..."
-
-#: camel/camel-session.c:70
-msgid "For reading mail as a query of another set of folders"
-msgstr ""
-"Başqa qovluq dəstələrinin istəyi olan məktubların oxunması üçün"
-
-#: camel/camel-session.c:294 camel/camel-session.c:363
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr "`%s' protokolu üçün xidmətçi yoxdur"
-
-#: camel/camel-session.c:478
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"%s qovluğunu yarada bilmədim:\n"
-"%s"
-
-#. Fill in the new fields
-#: camel/camel-store.c:378 mail/mail-ops.c:1007 mail/mail-ops.c:1014
-#: mail/mail-ops.c:1032 mail/mail-ops.c:1033
-msgid "Trash"
-msgstr "Zibil Qutusu"
-
-#: camel/camel-tcp-stream-ssl.c:348
-#, c-format
-msgid ""
-"EMail: %s\n"
-"Common Name: %s\n"
-"Organization Unit: %s\n"
-"Organization: %s\n"
-"Locality: %s\n"
-"State: %s\n"
-"Country: %s"
-msgstr ""
-"ePoçt: %s\n"
-"ÃœmumÉ™ Ad: %s\n"
-"QuruluÅŸ Vahidi: %s\n"
-"QuruluÅŸ: %s\n"
-"Yer: %s\n"
-"ÆyalÉ™t: %s\n"
-"Ölkə: %s"
-
-#. construct our user prompt
-#: camel/camel-tcp-stream-ssl.c:364
-#, c-format
-msgid ""
-"Bad certificate from %s:\n"
-"\n"
-"%s\n"
-"\n"
-"Do you wish to accept anyway?"
-msgstr ""
-"%sdan(dən) xəsərli vəsizqə:\n"
-"\n"
-"%s\n"
-"\n"
-"Yenə də qəbul etmək istəyirsiniz?"
-
-#: camel/camel-url.c:289
-#, c-format
-msgid "Could not parse URL `%s'"
-msgstr "URL `%s' alına bilmir"
-
-#: camel/camel-vee-folder.c:451
-#, c-format
-msgid "No such message %s in %s"
-msgstr "\"%s\"da(də) %s deye bir ismarıc yoxdur"
-
-#: camel/camel-vee-folder.c:546
-#, c-format
-msgid "No such message: %s"
-msgstr "Bele bir ismarıc yoxdur: %s"
-
-#: camel/camel-vtrash-folder.c:109
-msgid "You cannot copy messages from this trash folder."
-msgstr "Buradakı ismarıcları zibilə göndərə bilməzsiniz."
-
-#: camel/providers/imap/camel-imap-message-cache.c:150
-#, c-format
-msgid "Could not open cache directory: %s"
-msgstr "Ön yaddaş qovluğunu aça bilmədim: %s"
-
-#: camel/providers/imap/camel-imap-command.c:232
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "IMAP vericisindən gözlənilməz cavab alındı: %s"
-
-#: camel/providers/imap/camel-imap-command.c:240
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr "IMAP əmri iflas etdi: %s"
-
-#: camel/providers/imap/camel-imap-command.c:241 shell/e-storage.c:481
-msgid "Unknown error"
-msgstr "Namə'lum xəta"
-
-#: camel/providers/imap/camel-imap-command.c:295
-msgid "Server response ended too soon."
-msgstr "Verci cavabı çox tez sonlandı."
-
-#: camel/providers/imap/camel-imap-command.c:487
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr "IMAP vericisi cavabı %s mə'lumatını daxil etmir"
-
-#: camel/providers/imap/camel-imap-command.c:524
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr "IMAP vericisindən gözlənilməz qəbul cavabı alındı: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:170
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr "%s qovluğunu yarada bilmədim: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:189
-#, c-format
-msgid "Could not load summary for %s"
-msgstr "%s üçün mündəricat yüklənə bilmədi"
-
-#: camel/providers/imap/camel-imap-folder.c:362
-msgid "Scanning IMAP folder"
-msgstr "IMAP qovluğu daranır"
-
-#: camel/providers/imap/camel-imap-folder.c:1043
-#: camel/providers/imap/camel-imap-folder.c:1265
-msgid "This message is not currently available"
-msgstr "Bu ismarıc hazırda mövcuddur"
-
-#: camel/providers/imap/camel-imap-folder.c:1071
-#: camel/providers/imap/camel-imap-folder.c:1298
-msgid "Could not find message body in FETCH response."
-msgstr "FETCH cavabında ismarıc gövdəsi tapıla bilmədi"
-
-#: camel/providers/imap/camel-imap-provider.c:43 mail/mail-config.glade.h:11
-msgid "Checking for new mail"
-msgstr "Yeni ePoçt üçün baxılır"
-
-#: camel/providers/imap/camel-imap-provider.c:45
-msgid "Check for new messages in all folders"
-msgstr "Bütün qovluqlarda yeni ePoçt üçün bax"
-
-#: camel/providers/imap/camel-imap-provider.c:48 shell/e-shell-view.c:551
-msgid "Folders"
-msgstr "Qovluqlar"
-
-#: camel/providers/imap/camel-imap-provider.c:50
-msgid "Show only subscribed folders"
-msgstr "Təkcə qeydiyyatdan keçilmiş qovluqları göstər"
-
-#: camel/providers/imap/camel-imap-provider.c:52
-msgid "Override server-supplied folder namespace"
-msgstr "Verici əlavəlı qovluq adı boşluqlarını nəzərə alma"
-
-#: camel/providers/imap/camel-imap-provider.c:54
-msgid "Namespace"
-msgstr "Ad boÅŸluÄŸu"
-
-#: camel/providers/imap/camel-imap-provider.c:57
-msgid "Apply filters to new messages in INBOX on this server"
-msgstr "Bu vericinin GÆLÆNLÆR qutusundaki ismarıclara süzgÉ™v É™lavÉ™ et"
-
-#: camel/providers/imap/camel-imap-provider.c:63
-msgid "IMAPv4"
-msgstr "IMAPv4"
-
-#: camel/providers/imap/camel-imap-provider.c:65
-msgid "For reading and storing mail on IMAP servers."
-msgstr ""
-"IMAP vericisində məktubların saxlanması və oxuna bilməsi üçün."
-
-#: camel/providers/imap/camel-imap-provider.c:82
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr ""
-"Bu seçənəklə siz IMAP vericisinə düz mətn parol ilə bağlana "
-"biləcəksiniz."
-
-#: camel/providers/imap/camel-imap-store.c:454
-#, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr "%s IMAP vericisi %s tanıtma növünü dəstəkləmir"
-
-#: camel/providers/imap/camel-imap-store.c:464
-#: camel/providers/smtp/camel-smtp-transport.c:358
-#, c-format
-msgid "No support for authentication type %s"
-msgstr "%s Tanıtma növü dəßtəklənmir"
-
-#: camel/providers/imap/camel-imap-store.c:488
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr "%sLütfən %s@%s üçün IMAP parolunu girin"
-
-#: camel/providers/imap/camel-imap-store.c:503
-#: camel/providers/smtp/camel-smtp-transport.c:402
-msgid "You didn't enter a password."
-msgstr "Parolu girmədiniz."
-
-#: camel/providers/imap/camel-imap-store.c:529
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"IMAP vericisinə tanıdılma xətası.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/imap/camel-imap-store.c:788 mail/mail-local.c:337
-#, c-format
-msgid "No such folder %s"
-msgstr "%s deyÉ™ bir qovluq yoxdur"
-
-#: camel/providers/local/camel-local-provider.c:39
-msgid "MH-format mail directories"
-msgstr "MH-şəklində məktub qovluqları"
-
-#: camel/providers/local/camel-local-provider.c:40
-msgid "For storing local mail in MH-like mail directories"
-msgstr ""
-"Yerli məktubların MH oxşarı məktub qovluqlarında saxlamaq üçün"
-
-#: camel/providers/local/camel-local-provider.c:49
-msgid "Standard Unix mailbox file"
-msgstr "Standart UNIX məktub qutusu faylı"
-
-#: camel/providers/local/camel-local-provider.c:50
-msgid "For storing local mail in standard mbox format"
-msgstr "Standart mbox şəklindəki məktubların saxlanması üçün"
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "Qmail maildir-format mail files"
-msgstr "Qmail məktun qovluğu şəklindəki məktub faylı"
-
-#: camel/providers/local/camel-local-provider.c:60
-msgid "For storing local mail in qmail maildir directories"
-msgstr ""
-"Yerli məktubları qmail məktub qovluqlarında saxlaya bilmək üçün"
-
-#: camel/providers/local/camel-local-store.c:127
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr "%s kök saxlama dəqiq bir yol deyildir"
-
-#: camel/providers/local/camel-local-store.c:134
-#, c-format
-msgid "Store root %s is not a regular directory"
-msgstr "%s kök saxlama düzgün bir qovluq deyildir."
-
-#: camel/providers/local/camel-local-store.c:142
-#: camel/providers/local/camel-local-store.c:158
-#, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "Qovluq alına bilmədi: %s: %s"
-
-#: camel/providers/local/camel-local-store.c:173
-msgid "Local stores do not have an inbox"
-msgstr "Yerli saxlamaların gələnlər qutusu qovluğu yoxdur"
-
-#: camel/providers/local/camel-local-store.c:183
-#, c-format
-msgid "Local mail file %s"
-msgstr "%s Yeli məktub faylı"
-
-#: camel/providers/local/camel-local-store.c:237
-#, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr "%s faylı %s adi ilə yenidən adlandırıla bilmir: %s"
-
-#: camel/providers/local/camel-local-store.c:279
-#, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr "`%s' Qovluq mündəricat faylı silinə bilmir: %s"
-
-#: camel/providers/local/camel-local-store.c:289
-#, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr "`%s' Qovluq indeks faylı silinə bilmir: %s"
-
-#: camel/providers/local/camel-local-summary.c:404
-msgid "Unable to add message to summary: unknown reason"
-msgstr "Xülasəyə ismarıc əlavə edə bilmədim: namə'lum səbəb"
-
-#: camel/providers/local/camel-maildir-folder.c:150
-#: camel/providers/local/camel-maildir-folder.c:158
-#: camel/providers/local/camel-maildir-folder.c:169
-#, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr "İsmarıc məktub qovluğu fayllına əlavə edilə bilmir: %s: %s "
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-maildir-folder.c:209
-#: camel/providers/local/camel-maildir-folder.c:217
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#: camel/providers/local/camel-mh-folder.c:194
-#: camel/providers/local/camel-mh-folder.c:202
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-"İSmarıc alına bilmir: %s\n"
-" %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-msgid "No such message"
-msgstr "Belə bir ismarıc yoxdur"
-
-#: camel/providers/local/camel-maildir-folder.c:218
-#: camel/providers/local/camel-mh-folder.c:203
-msgid "Invalid message contents"
-msgstr "Hökmsüz ismarıc mövtəviyyatı"
-
-#: camel/providers/local/camel-maildir-store.c:96
-#: camel/providers/local/camel-mh-store.c:90
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-"`%s' qovluğu açıla bilmir: \n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:100
-#: camel/providers/local/camel-mbox-store.c:101
-#: camel/providers/local/camel-mh-store.c:97
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr "`%s' faylı yoxdur ."
-
-#: camel/providers/local/camel-maildir-store.c:107
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-"`%s' qovluğu yaradıla bilmədi:\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:122
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr "`%s' məktub qovluğu faylı deyildir."
-
-#: camel/providers/local/camel-maildir-store.c:151
-#: camel/providers/local/camel-maildir-store.c:188
-#: camel/providers/local/camel-mh-store.c:127
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr "`%s' qovluÄŸu silinÉ™ bilmir: %s"
-
-#: camel/providers/local/camel-maildir-store.c:152
-msgid "not a maildir directory"
-msgstr "məktub qovluğu faylı deyildir"
-
-#: camel/providers/local/camel-maildir-summary.c:405
-#: camel/providers/local/camel-maildir-summary.c:526
-#, c-format
-msgid "Cannot open maildir directory path: %s: %s"
-msgstr "Məktub cərgəsi qovluğu cığırı açıla bilmir: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:152
-#, c-format
-msgid "Cannot create folder lock on %s: %s"
-msgstr "%s üstündə qovluq qıfılı yaradıla bilmədi: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:203
-#, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr "Məktub qutusu açıla bilmir: %s: %s\n"
-
-#: camel/providers/local/camel-mbox-folder.c:259
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr "İsmarıc mbox fayllına əlava edilə bimir: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:335
-#: camel/providers/local/camel-mbox-folder.c:367
-#: camel/providers/local/camel-mbox-folder.c:380
-#, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-"İsmarıc alına bilmir: %s qovluğundan %s\n"
-" %s"
-
-#: camel/providers/local/camel-mbox-folder.c:368
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr "Qovluq geri dönülməz şəkildə xəsarət alıb."
-
-#: camel/providers/local/camel-mbox-folder.c:381
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr "İSmarıc quruluşu bacarılmadı: Məktub qutusu yoxsa xəsərlidir?"
-
-#: camel/providers/local/camel-mbox-store.c:94
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-"`%s' Faylı açıla bilmir:\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:110
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-"`%s' faylı yaradıla bilmədi: \n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:119
-#: camel/providers/local/camel-mbox-store.c:146
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr "`%s' normal bir fayl deyildir ."
-
-#: camel/providers/local/camel-mbox-store.c:138
-#: camel/providers/local/camel-mbox-store.c:161
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-"`%s' qovluÄŸu silinÉ™ bilmir:\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr "`%s' qovluğu boş deyildir. Silinmədi."
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:249
-msgid "Summarising folder"
-msgstr "Qovluq Cəmləşdirilir"
-
-#: camel/providers/local/camel-mbox-summary.c:254
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr "Qovluq açıla bilmir: %s:%ld yerindən yığcamlaşdırılır: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:296
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr "%ld yeri yaxınlığında %s qovluğunda ciddi məktub darama xətası"
-
-#: camel/providers/local/camel-mbox-summary.c:371
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr "Qovluq yığcamlaşdırıla bilmir: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:502
-#: camel/providers/local/camel-mbox-summary.c:703 mail/mail-ops.c:1397
-msgid "Synchronising folder"
-msgstr "Qovluq sinxronlaşdırılır"
-
-#: camel/providers/local/camel-mbox-summary.c:507
-#: camel/providers/local/camel-mbox-summary.c:708
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr "Qovluq toplanmaq üçün açıla bilmir: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:524
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr "Müvəqqəti məktub qutusu açıla bilmir: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:549
-#: camel/providers/local/camel-mbox-summary.c:557
-#: camel/providers/local/camel-mbox-summary.c:746
-#: camel/providers/local/camel-mbox-summary.c:754
-msgid "Summary and folder mismatch, even after a sync"
-msgstr ""
-"Toplama və qovluq bir birinə uyğun gəlmir, sinxronizasiyadan sonra da "
-"əlbətdə"
-
-#: camel/providers/local/camel-mbox-summary.c:600
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr "Müvəqqəti məktub qutusuna yazıla bilmir: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:617
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr "Müvəqqəti məktub qutusuna yazılma bacarılmadı: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:635
-#: camel/providers/local/camel-mbox-summary.c:804
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr "Qaynaq qovluğu bağlana bilmədi: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:644
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr "Müvəqqəti qovluq bağlana bilmədi: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:655
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr "Qovluq yenidən adlandırıla bilmir: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:879
-#, c-format
-msgid "Unknown error: %s"
-msgstr "Namə'lum xəta: %s"
-
-#: camel/providers/local/camel-mh-folder.c:149
-#: camel/providers/local/camel-mh-folder.c:157
-#, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr "mh qovluğuna ismarıc əlavə edilə bilmir: %s: %s"
-
-#: camel/providers/local/camel-mh-store.c:110
-#, c-format
-msgid "`%s' is not a directory."
-msgstr "`%s' qovluq deyildir."
-
-#: camel/providers/local/camel-mh-summary.c:218
-#, c-format
-msgid "Cannot open MH directory path: %s: %s"
-msgstr "MH cərgə cığırı açıla bilmir: %s: %s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:45
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr "%s@%s üçün parolu lütfən girin"
-
-#: camel/providers/nntp/camel-nntp-auth.c:66
-msgid "Server rejected username"
-msgstr "Verici istifadəçi adını qəbul etmədi"
-
-#: camel/providers/nntp/camel-nntp-auth.c:72
-msgid "Failed to send username to server"
-msgstr "Vericiyə istifadəçi adı göndərilə bilmədi"
-
-#: camel/providers/nntp/camel-nntp-auth.c:81
-msgid "Server rejected username/password"
-msgstr "Verici istifadəçi adını/parolunu qəbul etmədi"
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr "%s ismarıcı tapıla bilmədi"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr "Vericidən qrup adı öyrənilə bilmədi."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr "%s üçün qrup siyahısı yüklənə bilmir: %s"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr "%s üçün qrup faylı qeyd edilə bilmir: %s"
-
-#: camel/providers/nntp/camel-nntp-provider.c:42
-msgid "USENET news"
-msgstr "USENET xəbərləri"
-
-#: camel/providers/nntp/camel-nntp-provider.c:44
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr ""
-"USENET xəbər qruplarına göndərilmiş hər hansı bir xəbəri oxumaq "
-"üçün bir vasitədir."
-
-#: camel/providers/nntp/camel-nntp-store.c:224
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr "Xəbər vericisi üçün qovluq açıla bilmir: %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:286
-#, c-format
-msgid "USENET News via %s"
-msgstr "%s dan(dən) USENET Xəbərləri"
-
-#: camel/providers/nntp/camel-nntp-store.c:293
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-"Bu seçənək NNTP verisici ilə düz mətn şəklindəki parol ilə "
-"ünsiyyət quracaqdır."
-
-#: camel/providers/nntp/camel-nntp-store.c:325
-#: camel/providers/nntp/camel-nntp-store.c:488
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr "%s üçün .newsrc faylı açıla bilmir ya da yaradıla bilmir: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-msgid "Retrieving POP summary"
-msgstr "POP yığcamlaşdırılması alınır"
-
-#: camel/providers/pop3/camel-pop3-folder.c:155
-#, c-format
-msgid "Could not check POP server for new messages: %s"
-msgstr "POP vericisindəki yeni ismarıclar yoxlana bilmir: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:199
-msgid "Could not open folder: message listing was incomplete."
-msgstr "Qovluq açıla bilmir: ismarıc siyahısı bütün deyil."
-
-#: camel/providers/pop3/camel-pop3-folder.c:292
-#, c-format
-msgid "No message with uid %s"
-msgstr "%s uid'li ismarıc yoxdur"
-
-#: camel/providers/pop3/camel-pop3-folder.c:296
-#, c-format
-msgid "Retrieving POP message %d"
-msgstr "%d POP ismarıcı alınır"
-
-#: camel/providers/pop3/camel-pop3-folder.c:303
-#, c-format
-msgid "Could not fetch message: %s"
-msgstr "İsmarıc alına bilmir: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:320
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr "%s POP vericisindən ismarıclar alına bilmədi: %s"
-
-#: camel/providers/pop3/camel-pop3-provider.c:37
-msgid "Message storage"
-msgstr "İsmarıc saxlanması"
-
-#: camel/providers/pop3/camel-pop3-provider.c:39
-msgid "Leave messages on server"
-msgstr "İsmarıcları Vericidə burax"
-
-#: camel/providers/pop3/camel-pop3-provider.c:41
-#, c-format
-msgid "Delete after %s day(s)"
-msgstr "%s gün sonra sil"
-
-#: camel/providers/pop3/camel-pop3-provider.c:48 mail/mail-config.glade.h:42
-msgid "POP"
-msgstr "POP"
-
-#: camel/providers/pop3/camel-pop3-provider.c:50
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-"POP vericilərinə bağlanmaq üçündür. POP protokolu eyni zamanda bə'zi "
-"veb məktub sistemlərindən məktub almaq üçün də işlədilə bilir."
-
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-"Bu seçənək POP verisici ilə düz mətn şəklindəki parol ilə "
-"ünsiyyət quracaqdır.Bu bir çox məktub vericisi tərəfindən "
-"dəstəklənən yeganə seçənəkdir."
-
-#: camel/providers/pop3/camel-pop3-provider.c:79
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-"Bu seçənək POP verisici ilə APOP protokolu ilə kodlanmış parol ilə "
-"ünsiyyət quracaqdır. Bu seçənək bütün vericilər tərəfindən "
-"bütün istifadəçilər üçün dəstəklənməz."
-
-#: camel/providers/pop3/camel-pop3-provider.c:91
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-"Bu seçənək POP verisici ilə Kerberos 4 istifadə edərək ünsiyyət "
-"quracaqdır."
-
-#: camel/providers/pop3/camel-pop3-store.c:199
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr "KPOP vericisi ilə ünsüyyət qurula bilmir: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:215
-#, c-format
-msgid "Could not connect to server: %s"
-msgstr "Vericiyə bağlana bilmirəm: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:322
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr "%s üstündəki POP vericisi ilə ünsiyyət qurula bilmir."
-
-#: camel/providers/pop3/camel-pop3-store.c:361
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr "%sLütfən %s@%s üçün POP3 parolunuzu girin"
-
-#: camel/providers/pop3/camel-pop3-store.c:379
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-"POP vericisinə bağlana bilmədim.\n"
-"İstifadəçi adı göndərilmə xətası oldu: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:382
-#: camel/providers/pop3/camel-pop3-store.c:419
-msgid "(Unknown)"
-msgstr "(NamÉ™'lum)"
-
-#: camel/providers/pop3/camel-pop3-store.c:409
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-"POP vericisinə bağlana bilmədim.\n"
-"İstənən tanıtma protokoluna dəstək verilmir."
-
-#: camel/providers/pop3/camel-pop3-store.c:417
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-"POP vericisinə bağlana bilmədim.\n"
-"Parol göndərmə xətası oldu: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:484
-#, c-format
-msgid "No such folder `%s'."
-msgstr "`%s' deyÉ™ bir qovluq yoxdur."
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:37
-#: mail/mail-config.glade.h:57
-msgid "Sendmail"
-msgstr "Sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:39
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-"Yerli sistemdəki \"sendmail\" proqramı istifadə edilərək məktub "
-"göndərmək üçün."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:107
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr ""
-"Sendmailə boru(pipe) çəkilə bilmədi bilmədi. %s: məktub "
-"göndərilmədi"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:124
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr "Sendmail çəngəllənə bilmədi: %s: məktub göndərilə bilmədi"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:150
-#, c-format
-msgid "Could not send message: %s"
-msgstr "İsmarıc göndərilə bilmədi: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:163
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr ""
-"sendmail %s siqnalı verərək bağlandı: məktub göndərilə bilmədi."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:170
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr "%s işə salına bilmir: məktub göndərilə bilmədi."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:175
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr "sendmail %d halı ilə bağlandı: məktub göndərilə bilmədi."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:194
-msgid "Could not find 'From' address in message"
-msgstr "İsmarıcda 'Göndərən' ünvanı tapıla bilmədi"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "sendmail"
-msgstr "sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:249
-msgid "Mail delivery via the sendmail program"
-msgstr "Sendmail proqramı ilə məktub göndərilməsi"
-
-#: camel/providers/smtp/camel-smtp-provider.c:38 mail/mail-config.glade.h:52
-msgid "SMTP"
-msgstr "SMTP"
-
-#: camel/providers/smtp/camel-smtp-provider.c:40
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr ""
-"SMTP istifadə edilərək uzaq məktub yayıcısına bağlanaraq məktub "
-"göndərmək üçün.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:165
-msgid "Syntax error, command unrecognized"
-msgstr "Sintaksis xətası, əmr tanınmır"
-
-#: camel/providers/smtp/camel-smtp-transport.c:167
-msgid "Syntax error in parameters or arguments"
-msgstr "Parametr və ya arqumentlərdə sintaksis xətası"
-
-#: camel/providers/smtp/camel-smtp-transport.c:169
-msgid "Command not implemented"
-msgstr "Æmr qÉ™bul edilmÉ™di"
-
-#: camel/providers/smtp/camel-smtp-transport.c:171
-msgid "Command parameter not implemented"
-msgstr "Æmr parametri qÉ™bul edilmÉ™di"
-
-#: camel/providers/smtp/camel-smtp-transport.c:173
-msgid "System status, or system help reply"
-msgstr "Sistem vəziyyəti və ya kömək cavabı"
-
-#: camel/providers/smtp/camel-smtp-transport.c:175
-msgid "Help message"
-msgstr "Kömək İsmarıcı"
-
-#: camel/providers/smtp/camel-smtp-transport.c:177
-msgid "Service ready"
-msgstr "Xidmət hazırdır"
-
-#: camel/providers/smtp/camel-smtp-transport.c:179
-msgid "Service closing transmission channel"
-msgstr "Xidmət nəqliyyat kanallarını bağlayır"
-
-#: camel/providers/smtp/camel-smtp-transport.c:181
-msgid "Service not available, closing transmission channel"
-msgstr "Xidmət uyğun deyildir, nəqliyyat kanalları bağlanır"
-
-#: camel/providers/smtp/camel-smtp-transport.c:183
-msgid "Requested mail action okay, completed"
-msgstr "Sorğulanan məktub gedişi müvəffəqiyyətlidir, qurtardı"
-
-#: camel/providers/smtp/camel-smtp-transport.c:185
-msgid "User not local; will forward to <forward-path>"
-msgstr "İstifadəçi yerli deyil; <çatdırma cığırı>na çatdırıram"
-
-#: camel/providers/smtp/camel-smtp-transport.c:187
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr "Sorğulanan məktub gedişi alınmadı; məktub qutusu əl çatmazdır"
-
-#: camel/providers/smtp/camel-smtp-transport.c:189
-msgid "Requested action not taken: mailbox unavailable"
-msgstr "Sorğulanan gediş alınmadı; məktub qutusu əl çatmazdır"
-
-#: camel/providers/smtp/camel-smtp-transport.c:191
-msgid "Requested action aborted: error in processing"
-msgstr "Sorğulanan gediş ləğv edildi; xəta oldu"
-
-#: camel/providers/smtp/camel-smtp-transport.c:193
-msgid "User not local; please try <forward-path>"
-msgstr ""
-"İstifadəçi yerli deyil; lütfən <çatdırma cığırı>nı sınayın"
-
-#: camel/providers/smtp/camel-smtp-transport.c:195
-msgid "Requested action not taken: insufficient system storage"
-msgstr "Sorğulanan gediş alınmadı; uyğunsuz sistem daxılı"
-
-#: camel/providers/smtp/camel-smtp-transport.c:197
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr "Sorğulanan məktub gediş ləğv edildi; daxıl dolmuşdur"
-
-#: camel/providers/smtp/camel-smtp-transport.c:199
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr "Sorğulanan gediş alınmadı; məktub qutusu adı qəbul edilmədi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:201
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr "Məktub alımı başladı; <CRLF>.<CRLF> ilə sonlandırın"
-
-#: camel/providers/smtp/camel-smtp-transport.c:203
-msgid "Transaction failed"
-msgstr "Nəqliyyat bacarılmadı"
-
-#: camel/providers/smtp/camel-smtp-transport.c:207
-msgid "A password transition is needed"
-msgstr "Parol nəqli lazımdır"
-
-#: camel/providers/smtp/camel-smtp-transport.c:209
-msgid "Authentication mechanism is too weak"
-msgstr "Tanıtma mexanizması çox zəifdir"
-
-#: camel/providers/smtp/camel-smtp-transport.c:211
-msgid "Encryption required for requested authentication mechanism"
-msgstr "Sorğulanan tanıtma mexanizması üçün kriptləmək lazımdır"
-
-#: camel/providers/smtp/camel-smtp-transport.c:213
-msgid "Temporary authentication failure"
-msgstr "Müvəqqəti tanıtma iflası"
-
-#: camel/providers/smtp/camel-smtp-transport.c:215
-msgid "Authentication required"
-msgstr "Tanıtma lazımdır"
-
-#: camel/providers/smtp/camel-smtp-transport.c:305
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr "Xoş gəldin ismarıcı cavab xətası: %s: ağır deyil dəyəsən"
-
-#: camel/providers/smtp/camel-smtp-transport.c:348
-#, c-format
-msgid "SMTP server %s does not support requested authentication type %s"
-msgstr "%s SMTP vericisi %s tanıtma növünü dəstəkləmir"
-
-#: camel/providers/smtp/camel-smtp-transport.c:387
-#, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr "%sLütfən %s@%s üçün SMTP parolunu girin"
-
-#: camel/providers/smtp/camel-smtp-transport.c:410
-#, c-format
-msgid ""
-"Unable to authenticate to SMTP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"SMTP vericisinə tanıdılma xətası.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:526
-#, c-format
-msgid "SMTP server %s"
-msgstr "%s SMTP vericisi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:528
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr "%s dan(dən) SMTP məktub göndərilməsi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:553
-msgid "Cannot send message: sender address not defined."
-msgstr ""
-"İsmarıc göndrərilə bilmədi: göndərənin ünvanı bildirilməyib."
-
-#: camel/providers/smtp/camel-smtp-transport.c:560
-msgid "Cannot send message: sender address not valid."
-msgstr ""
-"İsmarıc göndrərilə bilmədi: göndərənin ünvanı hökmsüzdür."
-
-#: camel/providers/smtp/camel-smtp-transport.c:574
-msgid "Cannot send message: no recipients defined."
-msgstr "İsmarıc göndrərilə bilmədi: alıcı bildirilməyib."
-
-#: camel/providers/smtp/camel-smtp-transport.c:668
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr "HELO istək vaxtı doldu: %s: ağır deyil"
-
-#: camel/providers/smtp/camel-smtp-transport.c:687
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr "HELO cavablama xətası: %s. ağır deyil"
-
-#: camel/providers/smtp/camel-smtp-transport.c:720
-msgid "Error creating SASL authentication object."
-msgstr "SASL tanıtma cismi yaratma xətası."
-
-#: camel/providers/smtp/camel-smtp-transport.c:735
-#: camel/providers/smtp/camel-smtp-transport.c:747
-#, c-format
-msgid "AUTH request timed out: %s"
-msgstr "AUTH istək vaxt dolması. %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:797
-msgid "Bad authentication response from server.\n"
-msgstr "Vericidən xətalı tanıtma istəyi alındı.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:823
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr "MAİL FROM istək vaxt dolması: %s: məktub göndərilə bilmədi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:842
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr "MAİL FROM cavablama xətası: %s: məktub göndərilə bilmədi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:867
-#, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr "RCTP TO istək vaxt dolması: %s: məktub göndərilə bilmədi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:886
-#, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr "RCTP TO cavablama xətası: %s: məktub göndərilə bilmədi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:917
-#, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr "DATA istək vaxt dolamsı. %s: məktub göndərilə bilmədi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:936
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr "DATA cavablama xətası: %s: məktub göndərilə bilmədi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:951
-#: camel/providers/smtp/camel-smtp-transport.c:969
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr ""
-"DATA göndərmə vaxt dolması: ismarıc qurtarılır: %s: məktub "
-"göndərilə bilmədi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:988
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr ""
-"DATA cavablama xətası: ismarıc qurtarılması: %s: məktub göndərilə "
-"bilmədi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1012
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr "RSET istək vaxt dolması. %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1031
-#, c-format
-msgid "RSET response error: %s"
-msgstr "RSET cavablama xətası: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1054
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr "QUİT istək vaxt dolması: %s: ağır xəta"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1073
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr "QUİT cavablama xətası: %s: ağır deyil"
-
-#: composer/e-msg-composer-attachment-bar.c:95
-msgid "1 byte"
-msgstr "1 bayt"
-
-#: composer/e-msg-composer-attachment-bar.c:97
-#, c-format
-msgid "%u bytes"
-msgstr "%u bayt"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fK"
-
-#: composer/e-msg-composer-attachment-bar.c:108
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fM"
-
-#: composer/e-msg-composer-attachment-bar.c:112
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fG"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:332 mail/mail-display.c:120
-msgid "attachment"
-msgstr "yapışdırılmış fayl"
-
-#: composer/e-msg-composer-attachment-bar.c:421
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr "Bir fayl yapışdır"
-
-#: composer/e-msg-composer-attachment-bar.c:469
-msgid "Remove selected items from the attachment list"
-msgstr "Seçili üzvləri yapışdırılmış fayllar siyahısından sil"
-
-#: composer/e-msg-composer-attachment-bar.c:500
-msgid "Add attachment..."
-msgstr "Yapışdırılmış fayl əlavə et ..."
-
-#: composer/e-msg-composer-attachment-bar.c:501
-msgid "Attach a file to the message"
-msgstr "İsmarıca bir fayl əlavə et"
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/message-list.c:1083
-msgid "Attachment"
-msgstr "Yapışdırılmış fayl"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr "Yapışdırılmış fayl xüsusiyyətləri"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr "Fayl adı :"
-
-#: composer/e-msg-composer-attachment.glade.h:5
-msgid "Inline attachment"
-msgstr "Daxili yapışdırma"
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr "MIME növü:"
-
-#: composer/e-msg-composer-attachment.glade.h:7
-msgid "Send as:"
-msgstr "Fərqli göndər:"
-
-#: composer/e-msg-composer.c:529
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-"%s imza faylı açıla bilmədi:\n"
-"%s"
-
-#: composer/e-msg-composer.c:702
-msgid "Save as..."
-msgstr "Fərqli qeyd et ..."
-
-#: composer/e-msg-composer.c:713
-#, c-format
-msgid "Error saving file: %s"
-msgstr "Fayl qeyd edərkən xəta oldu: %s"
-
-#: composer/e-msg-composer.c:733
-#, c-format
-msgid "Error loading file: %s"
-msgstr "Fayl yüklərkən xəta oldu: %s"
-
-#: composer/e-msg-composer.c:805
-msgid ""
-"Unable to open the drafts folder for this account.\n"
-"Would you like to use the default drafts folder?"
-msgstr ""
-"Bu hesab üçün lahiyə cərgəsə açıla bilmədi.\n"
-"Æsas lahiyÉ™ cÉ™rgÉ™sini iÅŸlÉ™tmÉ™k istÉ™yirsiniz?"
-
-#: composer/e-msg-composer.c:863 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:206
-msgid "Evolution"
-msgstr "Evolution"
-
-#: composer/e-msg-composer.c:869
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-"Bu ismarıc göndərilə bilmədi.\n"
-"\n"
-"Dəyişiklikləri qeyd etmak istəyirsiniz?"
-
-#: composer/e-msg-composer.c:894
-msgid "Open file"
-msgstr "Faylı aç"
-
-#: composer/e-msg-composer.c:1020
-msgid "That file does not exist."
-msgstr "BelÉ™ bir fayl yoxdur ."
-
-#: composer/e-msg-composer.c:1030
-msgid "That is not a regular file."
-msgstr "Bu normal bir fayl deyildir ."
-
-#: composer/e-msg-composer.c:1040
-msgid "That file exists but is not readable."
-msgstr "Bu fayl vardır amma oxuna bilən deyildir ."
-
-#: composer/e-msg-composer.c:1050
-msgid "That file appeared accesible but open(2) failed."
-msgstr ""
-"Bu fayl əl çatıla biləndi dəyəsən amma open(2)-çağırışı iflas "
-"etdi ."
-
-#: composer/e-msg-composer.c:1072
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-"Bu fayl çox böyükdür ( 100 KB'dən böyük ! ) .\n"
-"Bu faylı daxil etmək istəyirsanmi?"
-
-#: composer/e-msg-composer.c:1093
-msgid "An error occurred while reading the file."
-msgstr "Faylı oxurkən bir xəta oldu ."
-
-#: composer/e-msg-composer.c:1394 composer/e-msg-composer.c:1737
-msgid "Compose a message"
-msgstr "Bir ismarıc yaz"
-
-#: composer/e-msg-composer.c:1828
-msgid "Could not create composer window."
-msgstr "Dialoq qutusunu yarada bilmədim ."
-
-#: composer/e-msg-composer-hdrs.c:323
-msgid "Click here for the address book"
-msgstr "Ünvan dəftəri üçün buraya tıqla"
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:354 mail/mail-format.c:744
-msgid "From:"
-msgstr "Göndərən:"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:360 mail/mail-format.c:746
-msgid "Reply-To:"
-msgstr "Cavab ver"
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:371 mail/mail-format.c:643
-msgid "Subject:"
-msgstr "Mövzu :"
-
-#: composer/e-msg-composer-hdrs.c:385 mail/mail-format.c:748
-msgid "To:"
-msgstr "Gn:"
-
-#: composer/e-msg-composer-hdrs.c:386
-msgid "Enter the recipients of the message"
-msgstr "İsmarıcın göndərildiği adamlar"
-
-#: composer/e-msg-composer-hdrs.c:389 mail/mail-format.c:750
-msgid "Cc:"
-msgstr "Cc:"
-
-#: composer/e-msg-composer-hdrs.c:390
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "İsmarıcın nüsxəsinin göndəriləcəyi ünvanlar"
-
-#: composer/e-msg-composer-hdrs.c:393
-msgid "Bcc:"
-msgstr "Bcc:"
-
-#: composer/e-msg-composer-hdrs.c:394
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"İsmarıcın nüsxələrinin göndəriləcəyi ünvanları bildir; bunlar "
-"özlərini ismarıcın göndərildiği adamlar arasında görməyəcəkdir ."
-
-#: composer/evolution-composer.c:355
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-"Yazıçı pəncərəsini yarada bilmirəm, çünkü siz məktub "
-"parçasındakı\n"
-"heç bir qurǧulari, aparmamısınız."
-
-#: composer/evolution-composer.c:370
-msgid "Cannot initialize Evolution's composer."
-msgstr "Evolutionun ePoçt yazma parçasını başlada bilmədim ."
-
-#: data/evolution.desktop.in.h:2
-msgid "The Evolution groupware suite"
-msgstr "Evolution qruplaşdırılmış proqram tə'minatı otağı"
-
-#: data/evolution.keys.in.h:1
-msgid "address card"
-msgstr "ünvan kartı"
-
-#: data/evolution.keys.in.h:2
-msgid "calendar information"
-msgstr "təqvim haqqında"
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:69 e-util/e-time-utils.c:117
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:477
-#: widgets/misc/e-dateedit.c:1284 widgets/misc/e-dateedit.c:1465
-msgid "%m/%d/%Y"
-msgstr "%m/%d/%Y"
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:87 e-util/e-time-utils.c:198
-msgid "%I:%M:%S %p%n"
-msgstr "%I:%M:%S %p%n"
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:90 e-util/e-time-utils.c:201
-msgid "%H:%M:%S%n"
-msgstr "%H:%M:%S%n"
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:94 e-util/e-time-utils.c:205
-msgid "%I:%M %p%n"
-msgstr "%I:%M %p%n"
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:97 e-util/e-time-utils.c:208
-msgid "%H:%M%n"
-msgstr "%H:%M%n"
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:269
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:473
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2505
-msgid "%a %m/%d/%Y"
-msgstr "%a %m/%d/%Y"
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:274
-msgid "%a %m/%d/%Y %H:%M"
-msgstr "%a %m/%d/%Y %H:%M"
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:283
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr "%a %m/%d/%Y %I:%M %p"
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:312 widgets/misc/e-dateedit.c:1259
-#: widgets/misc/e-dateedit.c:1318 widgets/misc/e-dateedit.c:1497
-msgid "%H:%M"
-msgstr "%H:%M"
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:315
-msgid "%H:%M:%S"
-msgstr "%H:%M:%S"
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:320 widgets/misc/e-dateedit.c:1262
-#: widgets/misc/e-dateedit.c:1321 widgets/misc/e-dateedit.c:1500
-msgid "%I:%M %p"
-msgstr "%I:%M %p"
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:323
-msgid "%I:%M:%S %p"
-msgstr "%I:%M:%S %p"
-
-#: executive-summary/component/component-factory.c:152
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr "Evolutionun İcracı Mündəricat parçasını başlada bilmədim ."
-
-#: executive-summary/component/e-summary.c:926
-#, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"Html Faylını aça bilmədim:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:940
-#, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr ""
-" Data oxunarkən xəta oldu:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:958
-msgid "File does not have a place for the services.\n"
-msgstr "Faylının xidmətlər üçün ayrılmış sahəsi yoxdur.\n"
-
-#: executive-summary/component/e-summary-callbacks.c:126
-#, fuzzy
-msgid "Select a service"
-msgstr "Fayl seç"
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-"İcracı Mündəricatının arxaplanı üçün başqa HTML səhifəsi seçə "
-"bilərsiniz\n"
-"\n"
-"Ana seçənək üçün boş buraxın"
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr "%s i əsas GNOME proqramı ilə aç"
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr "%s i əsas GNOME səyyahı ilə aç"
-
-#: executive-summary/component/e-summary-url.c:71
-#, c-format
-msgid "Send an email to %s"
-msgstr "%s a(ə) məktub göndər"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr "Görünüşü %s a(ə)dəyişdir"
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr "%s i(ı) İşə sal"
-
-#: executive-summary/component/e-summary-url.c:75
-#, c-format
-msgid "Close %s"
-msgstr "%s i(ı) Qapat"
-
-#: executive-summary/component/e-summary-url.c:76
-#, c-format
-msgid "Move %s to the left"
-msgstr "%s i(ı) sola köçür"
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr "%s i(ı) sağa köçür"
-
-#: executive-summary/component/e-summary-url.c:78
-#, c-format
-msgid "Move %s into the previous row"
-msgstr "%s i(ı) əvvəlki sətirə köçür"
-
-#: executive-summary/component/e-summary-url.c:79
-#, c-format
-msgid "Move %s into the next row"
-msgstr "%s i(ı) sonrakı sətirə köçür"
-
-#: executive-summary/component/e-summary-url.c:80
-#, c-format
-msgid "Configure %s"
-msgstr "%s i(ı) Quraşdır"
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr "GÖrünüş"
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr "Arxaplan:"
-
-#: executive-summary/component/main.c:62
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-"İcracı mündəricatı üzvü Bonoboyu başlada bilmədi.\n"
-"ÆgÉ™r RootPOA haqqında xÉ™bÉ™rdarlıq aldınız isÉ™, demÉ™li Bonoboyu OAG "
-"yerinÉ™\n"
-"GOAD ila dayıqladınız."
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-msgid "Evolution component for the executive summary."
-msgstr "İcracı mündəricat üçün 'Evolution' parçası."
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-msgid "Factory for the Evolution executive summary component."
-msgstr "'Evolution'un icracı mündəricat parçası e'malatxanası."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr "RDF mündəricatı e'malatxanası."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-msgid "RDF Summary"
-msgstr "RDF Mündəricatı"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-msgid "Factory for the test bonobo component."
-msgstr "Sınaq bonobo parçası e'malatxanası."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-msgid "Factory for the test component."
-msgstr "Sınaq parçası e'malatxanası."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr "Bonobo xidməti"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr "Sınaq xidməti"
-
-#: executive-summary/test-service/rdf-summary.c:512
-#: executive-summary/test-service/rdf-summary.c:549
-#: executive-summary/test-service/rdf-summary.c:594
-#: widgets/misc/e-messagebox.c:166
-msgid "Error"
-msgstr "Xəta"
-
-#: executive-summary/test-service/rdf-summary.c:768
-msgid "Update automatically"
-msgstr "Avtomatik güncəllə"
-
-#: executive-summary/test-service/rdf-summary.c:778
-msgid "Update now"
-msgstr "İndi güncəllə"
-
-#: executive-summary/test-service/rdf-summary.c:788
-msgid "Update every "
-msgstr "Güncəlləməlri hər "
-
-#: executive-summary/test-service/rdf-summary.c:796
-#: filter/filter-datespec.c:83
-msgid "minutes"
-msgstr "dəqiqə"
-
-#: filter/filter-datespec.c:78
-msgid "year"
-msgstr "il"
-
-#: filter/filter-datespec.c:78
-msgid "years"
-msgstr "il"
-
-#: filter/filter-datespec.c:79
-msgid "month"
-msgstr "ay"
-
-#: filter/filter-datespec.c:79
-msgid "months"
-msgstr "ay"
-
-#: filter/filter-datespec.c:80
-msgid "week"
-msgstr "həftə"
-
-#: filter/filter-datespec.c:80
-msgid "weeks"
-msgstr "həftə"
-
-#: filter/filter-datespec.c:81
-msgid "days"
-msgstr "gün"
-
-#: filter/filter-datespec.c:82
-msgid "hour"
-msgstr "saat"
-
-#: filter/filter-datespec.c:82
-msgid "hours"
-msgstr "saat"
-
-#: filter/filter-datespec.c:83
-msgid "minute"
-msgstr "dəqiqə"
-
-#: filter/filter-datespec.c:84
-msgid "second"
-msgstr "saniyÉ™"
-
-#: filter/filter-datespec.c:84
-msgid "seconds"
-msgstr "saniyÉ™"
-
-#: filter/filter-datespec.c:199
-msgid "Oops. You have forgotten to choose a date."
-msgstr "Vaxsey. Tarix atmağı unutmusan."
-
-#: filter/filter-datespec.c:201
-msgid "Oops. You have chosen an invalid date."
-msgstr "Vaxsey. Hökmsüz tarixi seçmisən."
-
-#: filter/filter-datespec.c:276
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-"Bu ismarıc tarixi süzgəcin işlədiyi və ya\n"
-"vfolderin açıq qaldığı müddət ilə müqayisə\n"
-"ediləcəkdir."
-
-#: filter/filter-datespec.c:299
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-"Bu ismarıc tarixi burada göstərdiyiniz ilə\n"
-"müqayisə ediləcəkdir."
-
-#: filter/filter-datespec.c:339
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-"Bu ismarıc tarixi süzgəcin işlədiyi müddət\n"
-"ilə müqayisə edilaəkdir;\n"
-"\"bir haftə əvval\" məsələn."
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:374
-msgid "the current time"
-msgstr "indiki vaxt"
-
-#: filter/filter-datespec.c:374
-msgid "a time you specify"
-msgstr "bildirdiyin vaxt"
-
-#: filter/filter-datespec.c:375
-msgid "a time relative to the current time"
-msgstr "indiki vaxta görə müddət"
-
-#. The label
-#: filter/filter-datespec.c:433
-msgid "Compare against"
-msgstr "Müqayisə et"
-
-#: filter/filter-datespec.c:550 filter/filter-datespec.c:710
-msgid "now"
-msgstr "indi"
-
-#: filter/filter-datespec.c:707
-msgid "<click here to select a date>"
-msgstr "<vaxtı görə bilmək üçün buraya tıqlayın>"
-
-#: filter/filter-editor.c:132 filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr "Süzgəc Qaydaları"
-
-#. and now for the action area
-#: filter/filter-filter.c:452
-msgid "Then"
-msgstr "Onda"
-
-#: filter/filter-filter.c:466
-msgid "Add action"
-msgstr "Gediş əlavə et"
-
-#: filter/filter-folder.c:147
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-"VAxsey, qovluq seçməyi unutdunuz.\n"
-"Lütfən arxaya gedin və məktubların toplanacağı hökmlü bir qovluq "
-"seçin."
-
-#: filter/filter-folder.c:225 filter/vfolder-rule.c:285
-#: mail/mail-account-gui.c:682
-msgid "Select Folder"
-msgstr "Qovluq Seçin"
-
-#: filter/filter-folder.c:250
-msgid "Enter folder URI"
-msgstr "Qovluq URIsini Bildirin"
-
-#: filter/filter-folder.c:296
-msgid "<click here to select a folder>"
-msgstr "<qovluq seçmək üçün buraya tıqlayın>"
-
-#: filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr "Süzgəcləri Düzəlt"
-
-#: filter/filter.glade.h:5
-msgid "Edit VFolders"
-msgstr "VFolderləri Düzəlt"
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr "Gələn"
-
-#: filter/filter.glade.h:8
-msgid "Outgoing"
-msgstr "Gedən"
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:130
-msgid "Virtual Folders"
-msgstr "Virtual Qovluqlar"
-
-#: filter/filter.glade.h:11
-msgid "specific folders only"
-msgstr "təkcə xüsusi qovluqlar"
-
-#: filter/filter.glade.h:12
-msgid "vFolder Sources"
-msgstr "vFolder Qaynaqları"
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr "bütün fəal uzaq qovluqlarla"
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr "bütün yerli və fəal uzaq qovluqlarla"
-
-#: filter/filter.glade.h:15
-msgid "with all local folders"
-msgstr "bütün yerli qovluqlarla"
-
-#: filter/filter-input.c:193
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-"'%s' qaydalı ifadələrdə xəta oldu:\n"
-"%s"
-
-#: filter/filter-part.c:488
-msgid "Test"
-msgstr "Sınaq"
-
-#: filter/filter-rule.c:626
-msgid "Rule name: "
-msgstr "Qayda adı :"
-
-#: filter/filter-rule.c:630
-msgid "Untitled"
-msgstr "Adsız"
-
-#: filter/filter-rule.c:646
-msgid "If"
-msgstr "ÆgÉ™r"
-
-#: filter/filter-rule.c:664
-msgid "Execute actions"
-msgstr "GediÅŸi iÅŸÉ™ sal"
-
-#: filter/filter-rule.c:668
-msgid "if all criteria are met"
-msgstr "bütün kriteriyalar uyğun gəlirsə"
-
-#: filter/filter-rule.c:673
-msgid "if any criteria are met"
-msgstr "əgər hər hansı bir kriteriya uyğun gəlirsə"
-
-#: filter/filter-rule.c:684
-msgid "Add criterion"
-msgstr "Kriteriya əlavə et"
-
-#: filter/filter-rule.c:770
-msgid "incoming"
-msgstr "gələn"
-
-#: filter/filter-rule.c:770
-msgid "outgoing"
-msgstr "gedən"
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Colour"
-msgstr "Rəngi Seç"
-
-#: filter/libfilter-i18n.h:4
-msgid "Assign Score"
-msgstr "Qaynağı Seç"
-
-#: filter/libfilter-i18n.h:5
-msgid "Attachments"
-msgstr "Yapışdırılmış Fayllar"
-
-#: filter/libfilter-i18n.h:7
-msgid "contains"
-msgstr "daxil edir"
-
-#: filter/libfilter-i18n.h:8
-msgid "Copy to Folder"
-msgstr "Qovluğa Köçürt"
-
-#: filter/libfilter-i18n.h:9
-msgid "Date received"
-msgstr "Alınma tarixi"
-
-#: filter/libfilter-i18n.h:10
-msgid "Date sent"
-msgstr "Göndərilmə tarixi"
-
-#: filter/libfilter-i18n.h:12
-msgid "Deleted"
-msgstr "Silinən"
-
-#: filter/libfilter-i18n.h:13
-msgid "does not contain"
-msgstr "daxil etmir"
-
-#: filter/libfilter-i18n.h:14
-msgid "does not end with"
-msgstr "ilə sonlanmır"
-
-#: filter/libfilter-i18n.h:15
-msgid "does not exist"
-msgstr "yoxdur"
-
-#: filter/libfilter-i18n.h:16
-msgid "does not sound like"
-msgstr "oxçamır"
-
-#: filter/libfilter-i18n.h:17
-msgid "does not start with"
-msgstr "başlamır"
-
-#: filter/libfilter-i18n.h:18
-msgid "Do Not Exist"
-msgstr "Mövcud Deyildir"
-
-#: filter/libfilter-i18n.h:19
-msgid "Draft"
-msgstr "LahiyÉ™"
-
-#: filter/libfilter-i18n.h:20
-msgid "ends with"
-msgstr "sonlanır"
-
-#: filter/libfilter-i18n.h:21
-msgid "Exist"
-msgstr "Mövcuddur"
-
-#: filter/libfilter-i18n.h:22
-msgid "exists"
-msgstr "mövcuddur"
-
-#: filter/libfilter-i18n.h:23
-msgid "Expression"
-msgstr "Ä°fadÉ™"
-
-#: filter/libfilter-i18n.h:24
-msgid "Forward to Address"
-msgstr "İsmarıcı ünvana irəlilət"
-
-#: filter/libfilter-i18n.h:25
-msgid "Important"
-msgstr "Vacib"
-
-#: filter/libfilter-i18n.h:26
-msgid "is"
-msgstr "dir(dır)"
-
-#: filter/libfilter-i18n.h:27
-msgid "is greater than"
-msgstr "böyükdür"
-
-#: filter/libfilter-i18n.h:28
-msgid "is less than"
-msgstr "azdır"
-
-#: filter/libfilter-i18n.h:29
-msgid "is not"
-msgstr "deyil"
-
-#: filter/libfilter-i18n.h:30
-msgid "Mailing list"
-msgstr "Məktublaşma qrupu"
-
-#: filter/libfilter-i18n.h:31
-msgid "Message Body"
-msgstr "İsmarıc Gövdəsi"
-
-#: filter/libfilter-i18n.h:32
-msgid "Message Header"
-msgstr "İsmarıc Başlığı"
-
-#: filter/libfilter-i18n.h:33
-msgid "Message was received"
-msgstr "İsmarıc alındı"
-
-#: filter/libfilter-i18n.h:34
-msgid "Message was sent"
-msgstr "İsmarıc göndərildi"
-
-#: filter/libfilter-i18n.h:35
-msgid "Move to Folder"
-msgstr "Qovluğa Köçür"
-
-#: filter/libfilter-i18n.h:36
-msgid "on or after"
-msgstr "da(dÉ™) ya da sonra"
-
-#: filter/libfilter-i18n.h:37
-msgid "on or before"
-msgstr "da(də) ya da əvvəl"
-
-#: filter/libfilter-i18n.h:38
-msgid "Read"
-msgstr "Oxu"
-
-#: filter/libfilter-i18n.h:39
-msgid "Recipients"
-msgstr "Alıcılar"
-
-#: filter/libfilter-i18n.h:40
-msgid "Regex Match"
-msgstr "Regex Uyğunluqları"
-
-#: filter/libfilter-i18n.h:41
-msgid "Replied to"
-msgstr "Cavab verilən"
-
-#: filter/libfilter-i18n.h:42 filter/score-rule.c:204 filter/score-rule.c:206
-#: mail/message-list.c:1083
-msgid "Score"
-msgstr "Xal"
-
-#: filter/libfilter-i18n.h:43
-msgid "Sender"
-msgstr "Göndərən"
-
-#: filter/libfilter-i18n.h:44
-msgid "Set Status"
-msgstr "Hal Seç"
-
-#: filter/libfilter-i18n.h:45
-msgid "sounds like"
-msgstr "oxşayır"
-
-#: filter/libfilter-i18n.h:46
-msgid "Source Account"
-msgstr "Mənbə Hesabı"
-
-#: filter/libfilter-i18n.h:47
-msgid "Specific header"
-msgstr "Xas başlıq"
-
-#: filter/libfilter-i18n.h:48
-msgid "starts with"
-msgstr "başlayır"
-
-#: filter/libfilter-i18n.h:50
-msgid "Stop Processing"
-msgstr "İşi Dayandır"
-
-#: filter/libfilter-i18n.h:51 mail/message-list.c:1084
-msgid "Subject"
-msgstr "Mövzu"
-
-#: filter/libfilter-i18n.h:52
-msgid "was after"
-msgstr "sonra idi"
-
-#: filter/libfilter-i18n.h:53
-msgid "was before"
-msgstr "əvvəl idi"
-
-#: filter/rule-editor.c:147
-msgid "Rules"
-msgstr "Qaydalar"
-
-#: filter/rule-editor.c:240
-msgid "Add Rule"
-msgstr "Qayda ÆlavÉ™ Et"
-
-#: filter/rule-editor.c:299
-msgid "Edit Rule"
-msgstr "Qaydanı Düzəlt"
-
-#: filter/score-editor.c:130
-msgid "Score Rules"
-msgstr "Qiymətləndirmə Qaydaları"
-
-#: mail/component-factory.c:329
-msgid "Cannot initialize Evolution's mail component."
-msgstr "Evolutionun ePoçt parçasını başlada bilmədim ."
-
-#: mail/component-factory.c:402
-msgid "Cannot register storage with shell"
-msgstr "Nüsxəni qabıq ilə qeyd edə bilmədim"
-
-#: mail/folder-browser.c:267
-msgid "Store search as vFolder"
-msgstr "Axtarışı vFolder olaraq saxla"
-
-#: mail/folder-browser.c:575 ui/evolution-mail.xml.h:91
-msgid "VFolder on _Subject"
-msgstr "_Mövzudakı vFolder"
-
-#: mail/folder-browser.c:578 ui/evolution-mail.xml.h:89
-msgid "VFolder on Se_nder"
-msgstr "Gön_dərəndəki vFolder"
-
-#: mail/folder-browser.c:581 ui/evolution-mail.xml.h:90
-msgid "VFolder on _Recipients"
-msgstr "_Alıcıdakı vFolder"
-
-#: mail/folder-browser.c:584 ui/evolution-mail.xml.h:88
-msgid "VFolder on Mailing _List"
-msgstr "Məktublaşma Q_rupundakı VFolder"
-
-#: mail/folder-browser.c:590
-msgid "Filter on Sub_ject"
-msgstr "Mö_vzudakı Süzgəc"
-
-#: mail/folder-browser.c:593
-msgid "Filter on Sen_der"
-msgstr "Gön_dərəndəki Süzgəc"
-
-#: mail/folder-browser.c:596
-msgid "Filter on Re_cipients"
-msgstr "_Alıcıdakı Süzgəc"
-
-#: mail/folder-browser.c:599
-msgid "Filter on _Mailing List"
-msgstr "_Məktublaşma Qrupundakı Süzgəc"
-
-#: mail/folder-browser.c:608
-msgid "_Open"
-msgstr "_Aç"
-
-#: mail/folder-browser.c:610
-msgid "Resend"
-msgstr "Yenidən Göndər"
-
-#: mail/folder-browser.c:612 ui/evolution-calendar.xml.h:43
-#: ui/evolution-mail.xml.h:113 ui/evolution-tasks.xml.h:8
-msgid "_Save As..."
-msgstr "Fərqli _Qeyd Et ..."
-
-#: mail/folder-browser.c:614 ui/evolution-event-editor.xml.h:69
-#: ui/evolution-task-editor-dialog.xml.h:82 ui/evolution-tasks.xml.h:7
-msgid "_Print"
-msgstr "_Çap Et"
-
-#: mail/folder-browser.c:619
-msgid "_Reply to Sender"
-msgstr "Göndərənə _Cavab Ver"
-
-#: mail/folder-browser.c:621 ui/evolution-mail.xml.h:66
-msgid "Reply to _All"
-msgstr "_Hamısına Cavab Ver"
-
-#: mail/folder-browser.c:623 ui/evolution-mail.xml.h:102
-msgid "_Forward"
-msgstr "_Çatdır"
-
-#: mail/folder-browser.c:625
-msgid "Forward _inline"
-msgstr "_Həmən çatdır"
-
-#: mail/folder-browser.c:628 ui/evolution-mail.xml.h:40
-msgid "Mar_k as Read"
-msgstr "Oxun_muş olaraq İşarətlə"
-
-#: mail/folder-browser.c:630 ui/evolution-mail.xml.h:44
-msgid "Mark as U_nread"
-msgstr "Ox_unmamış olaraq İşarətlə"
-
-#: mail/folder-browser.c:635 ui/evolution-mail.xml.h:107
-msgid "_Move to Folder..."
-msgstr "Qovluğa _Daşı ..."
-
-#: mail/folder-browser.c:637 ui/evolution-mail.xml.h:96
-msgid "_Copy to Folder..."
-msgstr "Qovluğa _Köçürt..."
-
-#: mail/folder-browser.c:641 ui/evolution-mail.xml.h:118
-msgid "_Undelete"
-msgstr "_Geri Gətir"
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:651 ui/evolution-mail.xml.h:1
-msgid "Apply Filters"
-msgstr "SüzgÉ™clÉ™r ÆlavÉ™ Et"
-
-#: mail/folder-browser.c:655
-msgid "Create Ru_le From Message"
-msgstr "İsmarıcdan Qa_yda Yarat"
-
-#: mail/folder-browser.c:794
-msgid "Filter on Mailing List"
-msgstr "Məktublaşma Qrupundakı Süzgəc"
-
-#: mail/folder-browser.c:795
-msgid "VFolder on Mailing List"
-msgstr "Məktublaşma Qrupundakı VFolder"
-
-#: mail/folder-browser.c:797
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr "Məktublaşma Qrupunda Süz (%s)"
-
-#: mail/folder-browser.c:798
-#, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr "(%s) Məktublaşma Qrupundakı VFolder"
-
-#: mail/folder-browser-factory.c:213
-#, c-format
-msgid "Properties for \"%s\""
-msgstr "\"%s\"in Seçənəkləri"
-
-#: mail/folder-browser-factory.c:215 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-msgid "Properties"
-msgstr "Seçənəklər"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr "Məktub taşkilatcısı 'Evolution' parçası."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-msgid "Evolution mail composer."
-msgstr "'Evolution'un ePoçt yazıçısı."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-msgid "Evolution mail executive summary component."
-msgstr "'Evolution'un icracı mündəricat parçası."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-msgid "Evolution mail folder display component."
-msgstr "'Evolution'un məktub qovluğu nümayişcisi."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-msgid "Evolution mail folder factory component."
-msgstr "'Evolution'un məktub qovluğu nümayişcisi e'malatxanası."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-msgid "Factory for the Evolution composer."
-msgstr "'Evolution'un məktub yazıçısı e'malatxanası."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-msgid "Factory for the Evolution mail component."
-msgstr "'Evolution'un məktub parçası e'malatxanası."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-msgid "Factory for the Mail Summary component."
-msgstr "Məktub Mündəricatı parçası e'malatxanası."
-
-#: mail/importers/elm-importer.c:420
-msgid ""
-"Evolution has found Elm mail files.\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-"Evolution Elm məktub faylları tapdı.\n"
-"Onları proqramımıza idxal edək?"
-
-#: mail/importers/elm-importer.c:430
-msgid "Elm mail"
-msgstr "Elm Poçtu"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:1
-msgid "Factory to import mbox into Evolution"
-msgstr "'Mbox'u 'Evolution' içinə gətirən e'malatxana"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:2
-msgid "Imports mbox files into Evolution"
-msgstr "'Mbox' fayllarını 'Evolution' içinə gətirir"
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:1
-msgid "Factory to import Outlook Express 4 mails into Evolution"
-msgstr ""
-"'Outlook Express 4' məktublarını 'Evolution' içinə gətirən "
-"e'malatxana."
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:2
-msgid "Imports Outlook Express 4 files into Evolution"
-msgstr "'Outlook Express 4' fayllarını 'Evolution' içinə gətirir."
-
-#: mail/importers/netscape-importer.c:440
-msgid ""
-"Evolution has found Netscape mail files.\n"
-"Would you like them to be imported into Evolution?"
-msgstr ""
-"Evolution Netscape məktub faylları tapdı.\n"
-"Onları proqramımıza idxal edək?"
-
-#: mail/importers/pine-importer.c:385
-msgid ""
-"Evolution has found Pine mail files.\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-"Evolution Pine məktub faylları tapdı.\n"
-"Onları proqramımıza idxal edək?"
-
-#: mail/importers/pine-importer.c:395
-msgid "Pine mail"
-msgstr "Pine Poçtu"
-
-#: mail/local-config.glade.h:1
-msgid "Current store format:"
-msgstr "Hazırkı Saxlama Şəkli:"
-
-#: mail/local-config.glade.h:2
-msgid "Mailbox Format"
-msgstr "Məktub Qutusu Şəkli"
-
-#: mail/local-config.glade.h:3
-msgid "New store format:"
-msgstr "Yeni saxlama şəkli"
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-"Qeyd: məktub qutuları şəkli arasında keçişlərdə\n"
-" (disk sahəsi çatışmamazlığındakı kimi) avtomatik olaraq \n"
-"bərpası mümkün olmaya bilər. Bu xüsusiyyəti ehtiyatlı işlədin."
-
-#: mail/local-config.glade.h:7
-msgid "maildir"
-msgstr "məktub qovluğu"
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr "mbox"
-
-#: mail/local-config.glade.h:9
-msgid "mh"
-msgstr "mh"
-
-#: mail/mail-account-editor.c:105
-msgid "You have not filled in all of the required information."
-msgstr "Lazımi bütün mə'lumatlar verilməlidir."
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:173
-msgid "Evolution Account Editor"
-msgstr "Evolution Hesab Düzəldicisi"
-
-#: mail/mail-accounts.c:121 mail/mail-accounts.c:165
-msgid " (default)"
-msgstr " (varsayılan) "
-
-#: mail/mail-accounts.c:197
-msgid "Disable"
-msgstr "BaÄŸla"
-
-#: mail/mail-accounts.c:199 mail/mail-config.glade.h:25
-msgid "Enable"
-msgstr "Fəallaşdır"
-
-#: mail/mail-accounts.c:280 mail/mail-accounts.c:284
-msgid "Are you sure you want to delete this account?"
-msgstr "Bu hesabı həqiqətən də silmək istəyirsiniz?"
-
-#: mail/mail-accounts.c:418 mail/mail-accounts.c:422
-msgid "Are you sure you want to delete this news account?"
-msgstr "Bu xəbər hesabını həqiqətən də silmək istəyirsiniz?"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:536
-msgid "Evolution Account Manager"
-msgstr "Evolution Hesab İdarəcisi"
-
-#: mail/mail-autofilter.c:70
-#, c-format
-msgid "Mail to %s"
-msgstr "%s a(ə) məktub göndər"
-
-#: mail/mail-autofilter.c:213
-#, c-format
-msgid "Subject is %s"
-msgstr "Mövzu %s dir(dır)"
-
-#: mail/mail-autofilter.c:229
-#, c-format
-msgid "Mail from %s"
-msgstr "Məktub %s dandır(dəndir)"
-
-#: mail/mail-autofilter.c:285
-#, c-format
-msgid "%s mailing list"
-msgstr "%s məktublaşma qrupu"
-
-#: mail/mail-autofilter.c:335 mail/mail-autofilter.c:356
-msgid "Add Filter Rule"
-msgstr "SüzgÉ™c Qaydası ÆlavÉ™ Et"
-
-#: mail/mail-callbacks.c:96
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-"Məktub alıcısını hələ quraşdırmamısınız.\n"
-"Məktub yazmaq, almaq, göndərmədən əvvəl \n"
-"bunu quraşdırmalısınız.\n"
-"Bunu indi quraşdırmaq istəyirsiniz?"
-
-#: mail/mail-callbacks.c:149
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-"ePoçt göndərməkdən əvvəl bir \n"
-"şəxs tanıtmalısan."
-
-#: mail/mail-callbacks.c:161
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-"ePoçt göndərməkdən əvvəl bir ePoçt\n"
-"nəqliyyatını qurmalısan."
-
-#: mail/mail-callbacks.c:205
-msgid "You have not set a mail transport method"
-msgstr "Məktub nəql yolunu bildirməmisən"
-
-#: mail/mail-callbacks.c:238
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-"Bu ismarıcın mövzusu yoxdur .\n"
-"Həqiqətən də göndərim?"
-
-#: mail/mail-callbacks.c:311
-msgid "You must specify recipients in order to send this message."
-msgstr "Məktubu göndərə bilmək üçün alıcını da bildirməlisən."
-
-#: mail/mail-callbacks.c:354
-msgid "You must configure an account before you can send this email."
-msgstr ""
-"Bu ePoçtu göndərməkdən əvvəl bir ePoçt\n"
-"hesabını quraşdırmalısan."
-
-#: mail/mail-callbacks.c:593
-#, c-format
-msgid "On %s, %s wrote:"
-msgstr "%s da(də) %s yazmışdır:"
-
-#: mail/mail-callbacks.c:774
-msgid "Forwarded message:\n"
-msgstr "Bu ismarıcı çatdır:\n"
-
-#: mail/mail-callbacks.c:877
-msgid "Move message(s) to"
-msgstr "İsmarıc(ları) buraya daşı "
-
-#: mail/mail-callbacks.c:879
-msgid "Copy message(s) to"
-msgstr "İsmarıc(ları) buraya köçürt"
-
-#: mail/mail-callbacks.c:1156
-#, c-format
-msgid "Are you sure you want to edit all %d messages?"
-msgstr "Bütün `%d' ismarıclarını düzəltmək istəyirsiniz?"
-
-#: mail/mail-callbacks.c:1170
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-"Siz sadəcə olaraq Vəzifələr qovluğundakı\n"
-"ismarıcları düzəldə bilərsiniz."
-
-#: mail/mail-callbacks.c:1202
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-"Sadəcə olaraq Göndərilən cərgəsinə qeyd edilən\n"
-"ismarıcları yeniden gönderebilirsiniz."
-
-#: mail/mail-callbacks.c:1224
-msgid "No Message Selected"
-msgstr "Heç İsmarıc Seçilmədi"
-
-#: mail/mail-callbacks.c:1250 mail/mail-display.c:90
-msgid "Overwrite file?"
-msgstr "Faylının üsütünə yazım mı?"
-
-#: mail/mail-callbacks.c:1254 mail/mail-display.c:94
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-"Eyni adlı bir fayl onsuz da vardır.\n"
-"Üstünə yazım mı?"
-
-#: mail/mail-callbacks.c:1298
-msgid "Save Message As..."
-msgstr "İsmarıcı Fərqli Qeyd Et..."
-
-#: mail/mail-callbacks.c:1300
-msgid "Save Messages As..."
-msgstr "İsmarıcları Fərqli Qeyd Et..."
-
-#: mail/mail-callbacks.c:1435
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-"Süzgəc mə'lumatını yükləmə xətası:\n"
-"%s"
-
-#: mail/mail-callbacks.c:1484 ui/evolution-mail.xml.h:56
-msgid "Print Message"
-msgstr "İsmarıcı Çap Et"
-
-#: mail/mail-callbacks.c:1531
-msgid "Printing of message failed"
-msgstr "İsmarıların çap edilməsi bacarılmadı"
-
-#: mail/mail-callbacks.c:1609
-#, c-format
-msgid "Are you sure you want to open all %d messages in separate windows?"
-msgstr "Bütün %d ismarıclarını başqa pəncərədə açmaq istəyirsiniz?"
-
-#: mail/mail-config.c:1121 mail/mail-config.c:1124
-msgid "Connecting to server..."
-msgstr "Vericiyə bağlantı qurulur..."
-
-#: mail/mail-config-druid.c:99
-msgid ""
-"Please enter your name and email address below. The \"optional\" fields "
-"below do not need to be filled in, unless you wish to include this "
-"information in email you send."
-msgstr ""
-"Lütfən, adınızı v ePoçt ünvanınızı aşağıdakı boşluğa yazın. "
-"E-poçt ünvanınızda görünməsini istəmirsinizsə, arzuya bağlı "
-"sahələri doldurmağınız lazım deyil. "
-
-#: mail/mail-config-druid.c:101
-msgid ""
-"Please enter information about your incoming mail server below. If you don't "
-"know what kind of server you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"LütfÉ™n, gÉ™lÉ™n ePoçt vericisi üçün bilgi verin. ÆgÉ™r hansı tür "
-"bir sunucu işlətdiyinizi bilmirsinizsə, sistem idarəçinizə, ya da "
-"İnternet xidmət vericinizə müraciət edin."
-
-#: mail/mail-config-druid.c:105
-msgid ""
-"Please enter information about your outgoing mail protocol below. If you "
-"don't know which protocol you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"Lütfən, gedən ePoçt vericisi üçün protokol mə'lumatını aşağıda "
-"bildirin. ÆgÉ™r hansı protokolu iÅŸlÉ™tdiyinizi bilmirsinizsÉ™, sistem "
-"idarəçinizə, ya da İnternet servis sağlayıcınıza müraciət edinu."
-
-#: mail/mail-config-druid.c:107
-msgid ""
-"You are almost done with the mail configuration process. The identity, "
-"incoming mail server and outgoing mail transport method which you provided "
-"will be grouped together to make an Evolution mail account. Please enter a "
-"name for this account in the space below. This name will be used for display "
-"purposes only."
-msgstr ""
-"E-poçt quraşdırma əməliyyatı hardasa qurtardı. Kimlik "
-"qurğularınız, gələn ve gedən ePoçt sunucunuz Evolution hesabınızı "
-"tanımlamak üçün yeterli olacaktır. Lütfən, aşağıdakı boşluğa bu "
-"hesab üçün bir ad veriniz. "
-
-#. set window title
-#: mail/mail-config-druid.c:445
-msgid "Evolution Account Wizard"
-msgstr "Evolution Hesab Sehirbazı"
-
-#: mail/mail-config.glade.h:1
-msgid " Check for supported types "
-msgstr " Dəstəklənən növləri yoxla "
-
-#: mail/mail-config.glade.h:2
-msgid " color"
-msgstr " rəng"
-
-#: mail/mail-config.glade.h:3
-msgid "Account"
-msgstr "Hesab"
-
-#: mail/mail-config.glade.h:4
-msgid "Account Information"
-msgstr "Hesab Haqqında"
-
-#: mail/mail-config.glade.h:5
-msgid "Account Management"
-msgstr "Hesab İdarəsi"
-
-#: mail/mail-config.glade.h:6
-msgid "Accounts"
-msgstr "Hesablar"
-
-#: mail/mail-config.glade.h:8
-msgid "Authentication"
-msgstr "Tanıtma"
-
-#: mail/mail-config.glade.h:9
-msgid "Authentication Type: "
-msgstr "Kimlik Yoxlama Növü: "
-
-#: mail/mail-config.glade.h:10
-msgid "Automatically check for new mail every"
-msgstr "ePoçtları avtomatik yoxla:"
-
-#: mail/mail-config.glade.h:12
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-"Təbrüklər, məktub qurğularınız qurtardı.\n"
-"\n"
-"\"Evolution\" ilə indi məktub alıb göndərə \n"
-"bilərsiniz. \n"
-"\n"
-"Qurğularınızı qeyd etmək üçün \"Qurtar\"a basın."
-
-#: mail/mail-config.glade.h:18
-msgid "De_fault"
-msgstr "Æ_sas"
-
-#: mail/mail-config.glade.h:20
-msgid "Done"
-msgstr "Qurtardı"
-
-#: mail/mail-config.glade.h:21
-msgid "Drafts"
-msgstr "Lahiyələr"
-
-#: mail/mail-config.glade.h:22
-msgid "Drafts folder:"
-msgstr "Lahiyələr cərgəsi:"
-
-#: mail/mail-config.glade.h:24
-msgid "Email Address:"
-msgstr "ePoçt Ünvanı: "
-
-#: mail/mail-config.glade.h:26
-msgid "Full Name:"
-msgstr "Tam Ad:"
-
-#: mail/mail-config.glade.h:27
-msgid "Highlight citations with "
-msgstr "Sitatları Rəngləndir: "
-
-#: mail/mail-config.glade.h:29
-msgid "IMAPv4 "
-msgstr "IMAPv4 "
-
-#: mail/mail-config.glade.h:30
-msgid "Identity"
-msgstr "Kimlik"
-
-#: mail/mail-config.glade.h:31
-msgid "Kerberos "
-msgstr "Kerberos "
-
-#: mail/mail-config.glade.h:32
-msgid "Mail Configuration"
-msgstr "ePoçt Quraşdırılması"
-
-#: mail/mail-config.glade.h:33
-msgid "Make this my default account"
-msgstr "Bunu əsas hesab olaraq göstər"
-
-#: mail/mail-config.glade.h:34
-msgid "Mark messages as \"Read\" after:"
-msgstr "İsmarıcları bundan sonra \"Oxundu\" olaraq işarətlə: "
-
-#: mail/mail-config.glade.h:36
-msgid "News"
-msgstr "Xəbərlər"
-
-#: mail/mail-config.glade.h:38
-msgid "Optional Information"
-msgstr "Arzuya Bağlı Mə'lumatlar"
-
-#: mail/mail-config.glade.h:39
-msgid "Organization:"
-msgstr "Orqanizasiya"
-
-#: mail/mail-config.glade.h:41
-msgid "PGP binary path:"
-msgstr "PGP binarı cığırı:"
-
-#: mail/mail-config.glade.h:46
-msgid "Qmail maildir "
-msgstr "Qmail cərgəsi "
-
-#: mail/mail-config.glade.h:47
-msgid "Receiving Email"
-msgstr "ePoçt Alınır"
-
-#: mail/mail-config.glade.h:48
-msgid "Receiving Mail"
-msgstr "E-poçt Alınır"
-
-#: mail/mail-config.glade.h:49
-msgid "Receiving Options"
-msgstr "Alma Seçənəkləri"
-
-#: mail/mail-config.glade.h:51
-msgid "Required Information"
-msgstr "İstənən Mə'lumatlar"
-
-#: mail/mail-config.glade.h:53
-msgid "Select PGP binary"
-msgstr "PGP binarını seç"
-
-#: mail/mail-config.glade.h:54
-msgid "Send mail in HTML format by default."
-msgstr "Æsas olaraq ePoçtu HTML ŞəklindÉ™ göndÉ™r"
-
-#: mail/mail-config.glade.h:55
-msgid "Sending Email"
-msgstr "ePoçt Göndərilir"
-
-#: mail/mail-config.glade.h:56
-msgid "Sending Mail"
-msgstr "E-poçt Göndərilir"
-
-#: mail/mail-config.glade.h:58
-msgid "Sent"
-msgstr "Göndərildi"
-
-#: mail/mail-config.glade.h:59
-msgid "Sent and Draft Messages"
-msgstr "Göndərilən və Lahiyə İsmarıcları"
-
-#: mail/mail-config.glade.h:60
-msgid "Sent messages folder:"
-msgstr "Göndərilən ismarıclar cərgəsi:"
-
-#: mail/mail-config.glade.h:61
-msgid "Server Configuration"
-msgstr "Verici Quraşdırılması"
-
-#: mail/mail-config.glade.h:62
-msgid "Server Type: "
-msgstr "Verici Növü: "
-
-#: mail/mail-config.glade.h:63
-msgid "Server requires authentication"
-msgstr "Verici tanıtmaya ehtiyac hiss edər"
-
-#: mail/mail-config.glade.h:64
-msgid "Signature file:"
-msgstr "Imza faylı : "
-
-#: mail/mail-config.glade.h:65
-msgid "Sources"
-msgstr "Qaynaqlar"
-
-#: mail/mail-config.glade.h:66
-msgid "Special Folders"
-msgstr "Xüsusi Cərgələr"
-
-#: mail/mail-config.glade.h:67
-msgid "Standard Unix mbox"
-msgstr "Standart UNIX poçt qutusu faylı"
-
-#: mail/mail-config.glade.h:68
-msgid "Type"
-msgstr "Növ"
-
-#: mail/mail-config.glade.h:69
-msgid "Use secure connection (SSL)"
-msgstr "E'tibarlı bağlantı (SSL) işlət"
-
-#: mail/mail-config.glade.h:70
-msgid "Username:"
-msgstr "İstifadəçi adı :"
-
-#: mail/mail-config.glade.h:71
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-"\"Evolution\" Məktub Quraşdırılması Vasitəsi.\n"
-"\n"
-"Başlamaq üçün \"Sonrakı\" düyməsinə basın. "
-
-#: mail/mail-config.glade.h:76 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:43 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:30
-msgid "_Edit"
-msgstr "_Düzəlt"
-
-#: mail/mail-display.c:194
-msgid "Save Attachment"
-msgstr "Yapışdırılmış Faylı Qeyd Et"
-
-#: mail/mail-display.c:234
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr "Müvəqqəti qovluq yaradıla bilmədi: %s"
-
-#: mail/mail-display.c:295
-msgid "Save to Disk..."
-msgstr "DiskÉ™ Qeyd Et ..."
-
-#: mail/mail-display.c:297
-#, c-format
-msgid "Open in %s..."
-msgstr "%s da(də) Aç ..."
-
-#: mail/mail-display.c:299
-msgid "View Inline"
-msgstr "İçərisini Göstər"
-
-#: mail/mail-display.c:334
-msgid "External Viewer"
-msgstr "Xarici Göstərici"
-
-#: mail/mail-display.c:357
-#, c-format
-msgid "View Inline (via %s)"
-msgstr "İçərisini Göstər (%s ilə)"
-
-#: mail/mail-display.c:361
-msgid "Hide"
-msgstr "Gizlət"
-
-#: mail/mail-display.c:1107
-msgid "Open link in browser"
-msgstr "Körpünü səyyahda aç"
-
-#: mail/mail-display.c:1109
-msgid "Save as (FIXME)"
-msgstr "Fərqli qeyd et"
-
-#: mail/mail-display.c:1111
-msgid "Copy location (FIXME)"
-msgstr "Ünvanı köçür"
-
-#: mail/mail-format.c:522
-#, c-format
-msgid "%s attachment"
-msgstr "%s yapışdırılmış fayl"
-
-#: mail/mail-format.c:564
-msgid "Could not parse MIME message. Displaying as source."
-msgstr "MIME ismarıcı açıla bilmədi: Mənbə kodu gösteriliyor."
-
-#: mail/mail-format.c:771
-msgid "Loading message content"
-msgstr "İsmarıc içindəkilər yüklənir"
-
-#: mail/mail-format.c:1080
-msgid "No GPG/PGP program configured."
-msgstr "Heç GPG/PGP proqramı qurulmayıb."
-
-#: mail/mail-format.c:1095
-msgid "Encrypted message not displayed"
-msgstr "Kodlanmış ismarıc göstərilmədi"
-
-#: mail/mail-format.c:1101
-msgid "Encrypted message"
-msgstr "Kodlanmış İsmarıc"
-
-#: mail/mail-format.c:1102
-msgid "Click icon to decrypt."
-msgstr "Kodu açmaq üçün timsala basın."
-
-#: mail/mail-format.c:1192 mail/mail-format.c:1580
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr ""
-"Bu ismarıc digital olaraq imzalanmışdır və original olduğu "
-"düşünülür."
-
-#: mail/mail-format.c:1200 mail/mail-format.c:1588
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr ""
-"Bu ismarıc digital olaraq imzalanmışdır amma original olduğu "
-"düşünülmür."
-
-#: mail/mail-format.c:1801
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr "FTP saytını göstərən ox (%s)"
-
-#: mail/mail-format.c:1813
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr "Yerli faylyi göstərən (%s) oxu \"%s\" saytında hökmlüdür"
-
-#: mail/mail-format.c:1817
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr "Yerli faylyi göstərən ox (%s)"
-
-#: mail/mail-format.c:1851
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr "Namə'lum xarici mə'lumatı göstərən ox (\"%s\" növündə "
-
-#: mail/mail-format.c:1856
-msgid "Malformed external-body part."
-msgstr "Xəsərli xarici proqram parçası."
-
-#: mail/mail-local.c:509
-#, c-format
-msgid "Opening '%s'"
-msgstr "'%s' Açılır"
-
-#: mail/mail-local.c:787
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr "\"%s\" qovluğu \"%s\" şəklinə çevrilir"
-
-#: mail/mail-local.c:791
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr "\"%s\" qovluğunu \"%s\" şəklinə çevir"
-
-#: mail/mail-local.c:814
-msgid "Reconfiguring folder"
-msgstr "Qovluq yenidən qurulur"
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:843
-msgid "Closing current folder"
-msgstr "Hazırkı qovluq qapadılır"
-
-#: mail/mail-local.c:875
-msgid "Renaming old folder and opening"
-msgstr "Köhnə qovluğun adı dəyişdirilir və açılır"
-
-#: mail/mail-local.c:893
-msgid "Creating new folder"
-msgstr "Yeni bir qovluq yarat"
-
-#: mail/mail-local.c:907
-msgid "Copying messages"
-msgstr "İsmarıclar köçürülür"
-
-#: mail/mail-local.c:924
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-"Qovluğun meta mə'lumatını qeyd eda bilmədim; Bu qovluğu bir də aça\n"
-"bilməyə biləsən: %s"
-
-#: mail/mail-local.c:963
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-"Bu qovluğu bir də aça bilməsən, onu əllə\n"
-"bərpa etməlisən."
-
-#: mail/mail-mt.c:190
-#, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-"'%s' sırasında xəta:\n"
-"%s"
-
-#: mail/mail-mt.c:193
-#, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-"ÆmÉ™liyyat aparılırkÉ™n xÉ™ta oldu:\n"
-"%s"
-
-#: mail/mail-mt.c:516 mail/mail-mt.c:545 mail/mail-mt.c:880
-msgid "Working"
-msgstr "İşləyir"
-
-#: mail/mail-mt.c:862
-msgid "Evolution progress"
-msgstr "\"Evolution\"un gediÅŸi"
-
-#: mail/mail-ops.c:599
-#, c-format
-msgid "Sending \"%s\""
-msgstr "\"%s\" Göndərilir"
-
-#: mail/mail-ops.c:603
-msgid "Sending message"
-msgstr "İsmarıc göndərilir"
-
-#: mail/mail-ops.c:718
-#, c-format
-msgid "Sending message %d of %d"
-msgstr "%d / %d ismarıc göndərilir"
-
-#: mail/mail-ops.c:737
-#, c-format
-msgid "Failed on message %d of %d"
-msgstr "%d/%d ismarıcda xəta"
-
-#: mail/mail-ops.c:739 mail/mail-send-recv.c:475
-msgid "Complete."
-msgstr "Qurtadı."
-
-#: mail/mail-ops.c:825
-msgid "Saving message to folder"
-msgstr "İsmarıclar qovluğa qeyd edilir"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Moving messages to %s"
-msgstr "İsmarıclar \"%s\"a(ə) daşınır"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Copying messages to %s"
-msgstr "İsmarıclar \"%s\"a(ə) köçürülür"
-
-#: mail/mail-ops.c:914
-msgid "Moving"
-msgstr "Daşınır"
-
-#: mail/mail-ops.c:917
-msgid "Copying"
-msgstr "Köçürdülür"
-
-#: mail/mail-ops.c:992
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr "\"%s\" dakı qovluqlar daranır"
-
-#: mail/mail-ops.c:1154
-msgid "Forwarded messages"
-msgstr "Çatdırılmış ismarıc"
-
-#: mail/mail-ops.c:1195 mail/mail-ops.c:1333
-#, c-format
-msgid "Opening folder %s"
-msgstr "%s qovluğu açılır"
-
-#: mail/mail-ops.c:1262
-#, c-format
-msgid "Opening store %s"
-msgstr "%s qaynağı açılır"
-
-#: mail/mail-ops.c:1449
-msgid "Expunging folder"
-msgstr "Qovluq açılır"
-
-#: mail/mail-ops.c:1498
-#, c-format
-msgid "Retrieving message %s"
-msgstr "%s ismarıcı alınır"
-
-#: mail/mail-ops.c:1565
-msgid "Retrieving messages"
-msgstr "İsmarıclar alınır"
-
-#: mail/mail-ops.c:1575
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr "%d nin %d ismarıcı alınır (uid \"%s\")"
-
-#: mail/mail-ops.c:1649
-msgid "Saving messages"
-msgstr "İsmarıclar qeyd edilir"
-
-#: mail/mail-ops.c:1728
-#, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr ""
-"Nəticə faylı yaradıla bilmir: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1741
-#, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr "%d nin %d ismarıcı qeyd edilir (uid \"%s\")"
-
-#: mail/mail-ops.c:1755
-#, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr ""
-"İsmarıcların buraya qeyd edilmə xatası: %s:\n"
-" %s"
-
-#: mail/mail-ops.c:1829
-msgid "Saving attachment"
-msgstr "Yapışdırılmış Fayl Qeyd Edilir"
-
-#: mail/mail-ops.c:1844
-#, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr ""
-"Yekun faylı yaradıla bilmir: %s:\n"
-" %s"
-
-#: mail/mail-ops.c:1872
-#, c-format
-msgid "Could not write data: %s"
-msgstr "Data yazıla bilmədi: %s"
-
-#: mail/mail-search-dialogue.c:113
-msgid "_Search"
-msgstr "A_xtar"
-
-#: mail/mail-send-recv.c:138
-msgid "Cancelling ..."
-msgstr "Ləğv Edilir ..."
-
-#: mail/mail-send-recv.c:233
-msgid "Send & Receive mail"
-msgstr "ePoçt Göndər və Al"
-
-#: mail/mail-send-recv.c:236
-msgid "Receiving"
-msgstr "Alınır"
-
-#: mail/mail-send-recv.c:285
-msgid "Updating ..."
-msgstr "Güncəllənir ..."
-
-#: mail/mail-send-recv.c:287 mail/mail-send-recv.c:333
-msgid "Waiting ..."
-msgstr "Gözlənilir ..."
-
-#: mail/mail-send-recv.c:306
-msgid "Sending"
-msgstr "Göndərilir"
-
-#: mail/mail-send-recv.c:471
-msgid "Cancelled."
-msgstr "Ləğv Edildi."
-
-#: mail/mail-summary.c:110
-msgid "Incomplete message written on pipe!"
-msgstr "Borulamadan xəsərli bir ismarıc gəldi !"
-
-#: mail/mail-summary.c:468
-msgid "Mail Summary"
-msgstr "Poçt Mündəricatı"
-
-#: mail/mail-tools.c:141
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr "Müvəqqəti '%s' mboxu yaradıla bilmir: %s"
-
-#: mail/mail-tools.c:188
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr "[%s] (çatdırilmiş ismarıc)"
-
-#: mail/mail-tools.c:198
-msgid "Fwd: (no subject)"
-msgstr "Dvm: (mövzusuz)"
-
-#: mail/mail-tools.c:215
-#, c-format
-msgid "Forwarded message - %s"
-msgstr "Çatdırılmış ismarıc - %s"
-
-#: mail/mail-tools.c:217
-msgid "Forwarded message (no subject)"
-msgstr "Çatdırılmış ismarıc (mövzusuz)"
-
-#: mail/mail-tools.c:415
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-msgstr ""
-"-----Çatdırılmış İsmarıc-----<br><b>Göndərən:</b> "
-"%s<br><b>Göndərilən:</b> %s<br><b>Mövzu:</b> %s<br>"
-
-#: mail/mail-vfolder.c:249
-msgid "VFolders"
-msgstr "VFolderlər"
-
-#: mail/mail-vfolder.c:426
-msgid "New VFolder"
-msgstr "Yeni VFolder"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/message-browser.c:189 ui/evolution-mail.xml.h:64
-msgid "Reply"
-msgstr "Cavab ver"
-
-#: mail/message-browser.c:189 ui/evolution-mail.xml.h:70
-msgid "Reply to the sender of this message"
-msgstr "İsmarıcı göndərene cavab ver"
-
-#: mail/message-browser.c:192 ui/evolution-mail.xml.h:65
-msgid "Reply to All"
-msgstr "Hamısına cavab ver"
-
-#: mail/message-browser.c:192 ui/evolution-mail.xml.h:68
-msgid "Reply to all recipients of this message"
-msgstr "İsmarıcın bütün alıcılarına cavab ver"
-
-#: mail/message-browser.c:195 ui/evolution-mail.xml.h:25
-msgid "Forward"
-msgstr "Çatdır"
-
-#: mail/message-browser.c:195 ui/evolution-mail.xml.h:29
-msgid "Forward this message"
-msgstr "Bu ismarıcı çatdır"
-
-#: mail/message-browser.c:200 ui/evolution-mail.xml.h:61
-msgid "Print the selected message"
-msgstr "Seçili ismarıcı çap et"
-
-#: mail/message-browser.c:203 ui/evolution-mail.xml.h:13
-msgid "Delete this message"
-msgstr "Bu ismarıcı sil"
-
-#: mail/message-browser.c:208 ui/evolution-event-editor.xml.h:33
-#: ui/evolution-mail.xml.h:54 ui/evolution-task-editor-dialog.xml.h:36
-msgid "Previous"
-msgstr "ÆvvÉ™lki"
-
-#: mail/message-browser.c:208
-msgid "Previous message"
-msgstr "ÆvvÉ™lki Ä°smarıc"
-
-#: mail/message-browser.c:211 ui/evolution-calendar.xml.h:18
-#: ui/evolution-event-editor.xml.h:29 ui/evolution-mail.xml.h:50
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "Next"
-msgstr "İrəli"
-
-#: mail/message-browser.c:211
-msgid "Next message"
-msgstr "Sonrakı İsmarıc"
-
-#: mail/message-list.c:679
-msgid "Unseen"
-msgstr "Görülməmiş"
-
-#: mail/message-list.c:680
-msgid "Seen"
-msgstr "Görülmüş"
-
-#: mail/message-list.c:681
-msgid "Answered"
-msgstr "Cavab cerilmiÅŸ"
-
-#: mail/message-list.c:682
-msgid "Multiple Unseen Messages"
-msgstr "Çoxlu Görülməmiş İsmarıc"
-
-#: mail/message-list.c:683
-msgid "Multiple Messages"
-msgstr "Çoxlu İsmarıc"
-
-#: mail/message-list.c:687
-msgid "Lowest"
-msgstr "Æn Alçaq"
-
-#: mail/message-list.c:688
-msgid "Lower"
-msgstr "Alçalt"
-
-#: mail/message-list.c:692
-msgid "Higher"
-msgstr "Yüksək"
-
-#: mail/message-list.c:693
-msgid "Highest"
-msgstr "Æn YüksÉ™k"
-
-#: mail/message-list.c:943
-msgid "?"
-msgstr "?"
-
-#: mail/message-list.c:950
-msgid "Today %l:%M %p"
-msgstr "Bugün %l:%M %p"
-
-#: mail/message-list.c:959
-msgid "Yesterday %l:%M %p"
-msgstr "Sabah: %l:%M %p"
-
-#: mail/message-list.c:971
-msgid "%a %l:%M %p"
-msgstr "%a %l %M %p"
-
-#: mail/message-list.c:979
-msgid "%b %d %l:%M %p"
-msgstr "%b %d %l:%M %p"
-
-#: mail/message-list.c:981
-msgid "%b %d %Y"
-msgstr "%b %d %Y"
-
-#: mail/message-list.c:1083
-msgid "Flagged"
-msgstr "Bayraqlı"
-
-#: mail/message-list.c:1084
-msgid "From"
-msgstr "Göndərən"
-
-#: mail/message-list.c:1084
-msgid "Date"
-msgstr "Tarix"
-
-#: mail/message-list.c:1084
-msgid "Received"
-msgstr "Alındı"
-
-#: mail/message-list.c:1085
-msgid "To"
-msgstr "Gn:"
-
-#: mail/message-list.c:1085
-msgid "Size"
-msgstr "Böyüklük"
-
-#: mail/mail-session.c:161
-msgid "User canceled operation."
-msgstr "İstifadəçi əməliyyatı ləğv etdi."
-
-#: mail/subscribe-dialog.c:76 shell/e-storage-set-view.c:47
-msgid "Folder"
-msgstr "Qovluq"
-
-#: mail/subscribe-dialog.c:77
-msgid "Store"
-msgstr "Saxla"
-
-#: mail/subscribe-dialog.c:138
-msgid "Display folders starting with:"
-msgstr "Bunula başlayan qovluqları göstər:"
-
-#: mail/subscribe-dialog.c:168
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr "\"%s\" üçün saxlama aməliyyatı aparılır"
-
-#: mail/subscribe-dialog.c:271
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr "\"%s\" qovluğuna qeydiyyat aparılır"
-
-#: mail/subscribe-dialog.c:273
-#, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr "\"%s\" qovluÄŸuna qeydiyyat silinir"
-
-#. Construct the app
-#: mail/subscribe-dialog.c:873
-msgid "Manage Subscriptions"
-msgstr "Üzvlükləri Düzəlt"
-
-#: shell/e-setup.c:118 shell/e-setup.c:191
-msgid "Evolution installation"
-msgstr "Evolution qurulması"
-
-#: shell/e-setup.c:122
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-"Evolutionun bu yeni qurulmasının şəxsi Evolution qovluğuna\n"
-"bə'zi əlavə fayllar köçürməlidir"
-
-#: shell/e-setup.c:123
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr ""
-"Lütfən \"Oldu\"'ya tıqlayıb, faylları qurun, ya da \"Ləğv Et\"ə "
-"basaraq çıxın."
-
-#: shell/e-setup.c:163
-msgid "Could not update files correctly"
-msgstr "Fayllar düzgün güncəllənə bilmədi"
-
-#: shell/e-setup.c:166 shell/e-setup.c:234
-msgid "Evolution files successfully installed."
-msgstr "\"Evolution\" faylları müvəffəqiyyətlə quruldu."
-
-#: shell/e-setup.c:195
-msgid "This seems to be the first time you are running Evolution."
-msgstr "Dəyəsən \"Evolution\"ı ilk dəfə işə salırsan."
-
-#: shell/e-setup.c:196
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr ""
-"\"Oldu\"'ya tıqlayıb, \"Evolution\" istifadəçi fayllarını buraya qur"
-
-#: shell/e-setup.c:215
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"%s qovluğunu yarada bilmədim\n"
-"\n"
-"Xəta : %s"
-
-#: shell/e-setup.c:230
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-"Faylları `%s''yə\n"
-"köçürdə bilmədim ."
-
-#: shell/e-setup.c:255
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-"`%s' bir qovluq deyildir.\n"
-"\"Evolution\" istifadəçi fayllarınin qurulması\n"
-"üçün onu sil."
-
-#: shell/e-setup.c:267
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-"`%s' qovluğu mövcuddur, amma\n"
-"\"Evolution\" qovluğunda yerləşmir. \"Evolution\" \n"
-"istifadəçi fayllarınin qurulması üçün onu sil."
-
-#: shell/e-shell.c:388
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr "Yerli qeydi quraşdıra bilmədim -- %s"
-
-#: shell/e-shell.c:1273
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-"Vaxsey! `%s' nümayişi gözlənilməz şəkildə sonlandı. :-(\n"
-"Bu, %s qisminin çökdüyünə işarət edir."
-
-#: shell/e-shell-folder-creation-dialog.c:99
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-"Bildirilən qovluq yaradıla bilmədi:\n"
-"%s"
-
-#: shell/e-shell-folder-creation-dialog.c:156
-msgid "The specified folder name is not valid."
-msgstr "Bildirilən qovluq adı hökmlü deyildir ."
-
-#: shell/e-shell-folder-creation-dialog.c:263
-msgid "Evolution - Create new folder"
-msgstr "\"Evolution\" - Yeni qovluq yarat"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-"Bildirilən gediş üçün bu seçili qovluq növü \n"
-"hökmlü deyildir ."
-
-#: shell/e-shell-folder-selection-dialog.c:321
-msgid "New..."
-msgstr "Yeni ..."
-
-#: shell/e-shell-folder-title-bar.c:459 shell/e-shell-folder-title-bar.c:460
-msgid "(Untitled)"
-msgstr "( Adsız )"
-
-#: shell/e-shell-view.c:148
-msgid "(No folder displayed)"
-msgstr "( Heç bir qovluq göstərilmir )"
-
-#: shell/e-shell-view.c:1203
-#, c-format
-msgid "%s - Evolution %s"
-msgstr "%s - Evolution %s"
-
-#: shell/e-shell-view.c:1205
-#, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "%s - Evolution %s [%s]"
-
-#: shell/e-shell-view-menu.c:173
-msgid "Bug buddy was not found in your $PATH."
-msgstr "Bug-buddy $PATH yolunda tapıla bilmədi."
-
-#: shell/e-shell-view-menu.c:179
-msgid "Bug buddy could not be run."
-msgstr "\"Bug-buddy\" işə salına bilmədi."
-
-#: shell/e-shell-view-menu.c:208
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Təlif haqqı 1999, 2000, 2001 Helix Code, Inc."
-
-#: shell/e-shell-view-menu.c:210
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-"\"Evolution\" GNOME masa üstü üçün gözəl bir ePoçt, \n"
-"təqvim və əlaqələr idarə proqramıdır."
-
-#: shell/e-shell-view-menu.c:374
-msgid "Go to folder..."
-msgstr "QovluÄŸa get ..."
-
-#: shell/e-shell-view-menu.c:562
-#, fuzzy
-msgid "Work online"
-msgstr "Xətdən Qopuq İşlə"
-
-#: shell/e-shell-view-menu.c:574 shell/e-shell-view-menu.c:586
-#, fuzzy
-msgid "Work offline"
-msgstr "Xətdən Qopuq İşlə"
-
-#: shell/e-shortcuts.c:381
-msgid "Error saving shortcuts."
-msgstr "Qısa yolları qeyd edərkən xəta oldu."
-
-#: shell/e-shortcuts-view.c:134
-msgid "Create new shortcut group"
-msgstr "Yeni bir qısa yol qrupu yarat"
-
-#: shell/e-shortcuts-view.c:137
-msgid "Group name:"
-msgstr "Qrup adı :"
-
-#: shell/e-shortcuts-view.c:260
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-"`%s' Qrupunu qısa yol çubuğundan həqiqətən \n"
-"də silmək istəyisiniz?"
-
-#: shell/e-shortcuts-view.c:265
-msgid "Don't remove"
-msgstr "SilmÉ™"
-
-#: shell/e-shortcuts-view.c:276
-msgid "_Small Icons"
-msgstr "_Kiçik Timsallar"
-
-#: shell/e-shortcuts-view.c:277
-msgid "Show the shortcuts as small icons"
-msgstr "Qısa yolları kiçik timsallar olaraq göstər"
-
-#: shell/e-shortcuts-view.c:279
-msgid "_Large Icons"
-msgstr "_Böyük Timsallar"
-
-#: shell/e-shortcuts-view.c:280
-msgid "Show the shortcuts as large icons"
-msgstr "Qısa yolları böyük timsallar olaraq göstər"
-
-#: shell/e-shortcuts-view.c:291
-msgid "_New Group..."
-msgstr "_Yeni Qrup..."
-
-#: shell/e-shortcuts-view.c:292
-msgid "Create a new shortcut group"
-msgstr "Yeni bir qısa yol qrupu yarat"
-
-#: shell/e-shortcuts-view.c:294
-msgid "_Remove This Group..."
-msgstr "Bu Qrupu _Sil..."
-
-#: shell/e-shortcuts-view.c:295
-msgid "Remove this shortcut group"
-msgstr "Bu qısa yol qrupunusil"
-
-#: shell/e-shortcuts-view.c:300
-msgid "_Hide the Shortcut Bar"
-msgstr "Qısa yol Çubuğunu _Gizlət"
-
-#: shell/e-shortcuts-view.c:301
-msgid "Hide the shortcut bar"
-msgstr "Qısa yol Çubuğunu Gizlət"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate"
-msgstr "Fəallaşdır"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate this shortcut"
-msgstr "Bu qısa yolu fəallaşdırs"
-
-#: shell/e-shortcuts-view.c:388
-msgid "Remove this shortcut from the shortcut bar"
-msgstr "Bu qısa yolu qısa yol çubuğundan sil"
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr "( Adsızdır )"
-
-#: shell/e-storage.c:459
-msgid "No error"
-msgstr "Xəta yoxdur"
-
-#: shell/e-storage.c:461
-msgid "Generic error"
-msgstr "Ümumi xəta"
-
-#: shell/e-storage.c:463
-msgid "A folder with the same name already exists"
-msgstr "Eyni adlı bir qovluq onsuz da var"
-
-#: shell/e-storage.c:465
-msgid "The specified folder type is not valid"
-msgstr "Bildirilən qovluq növü hökmlü deyildir"
-
-#: shell/e-storage.c:467
-msgid "I/O error"
-msgstr "G/Ç xətası"
-
-#: shell/e-storage.c:469
-msgid "Not enough space to create the folder"
-msgstr "Qovluğu yaratmaq üçün lazımi disk sahəsi yoxdur"
-
-#: shell/e-storage.c:471
-msgid "The specified folder was not found"
-msgstr "Bildirilən qovluq tapıla bilmədi"
-
-#: shell/e-storage.c:473
-msgid "Function not implemented in this storage"
-msgstr "Funksiya yazılmamışdır"
-
-#: shell/e-storage.c:475
-msgid "Permission denied"
-msgstr "Qadağandır"
-
-#: shell/e-storage.c:477
-msgid "Operation not supported"
-msgstr "ÆmÉ™liyyat dÉ™stÉ™klÉ™nmir"
-
-#: shell/e-storage.c:479
-msgid "The specified type is not supported in this storage"
-msgstr "Bu qeydlərdə müəyyənləşdirilən növ dəstəklənmir"
-
-#: shell/e-storage-set-view.c:650 ui/evolution-event-editor.xml.h:76
-#: ui/evolution-message-composer.xml.h:53
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:44
-msgid "_View"
-msgstr "_Göstər"
-
-#: shell/e-storage-set-view.c:650
-msgid "View the selected folder"
-msgstr "Seçili qovluğu göstər"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-msgid "Folder name:"
-msgstr "Qovluq adı:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-msgid "Folder type:"
-msgstr "Qovluq növü:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-msgid "Specify where to create the folder:"
-msgstr "Qovluğun yaradılacağı yeri göstərin:"
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-msgid "The Evolution shell."
-msgstr "'Evolution' qabığı."
-
-#: shell/importer/importer.c:87
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-"\"Evolution\" içinə almaq istədiyiniz faylı seçin. Aşağıdakı "
-"siyahıdan alacağınız faylın növünü də seçin.\n"
-"\n"
-"ÆgÉ™r tÉ™sÉ™vvürünüz yoxdursa \"Avtomatik\" seçənÉ™yini seçin, "
-"\"Evolution\" özü bildiyi kimi edər."
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/importer/importer.c:182
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-"%s Alınır\n"
-"Alıcı hazır deyil.\n"
-"Yenidən sınamaq üçün 5 saniyə gözlənir."
-
-#: shell/importer/importer.c:202 shell/importer/importer.c:233
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-"%s Alınır\n"
-"%d üzvü alınır."
-
-#: shell/importer/importer.c:341
-#, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr ""
-"İş görəcək alıcı mövcud deyildir\n"
-"%s"
-
-#: shell/importer/importer.c:351
-msgid "Importing"
-msgstr "Alınır"
-
-#: shell/importer/importer.c:359
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-"%s Alınır.\n"
-"%s Başladılır"
-
-#: shell/importer/importer.c:372
-#, c-format
-msgid "Error starting %s"
-msgstr "%s başladırkən xəta oldu"
-
-#: shell/importer/importer.c:387
-#, c-format
-msgid "Error loading %s"
-msgstr "%s yüklənərkən xəta oldu"
-
-#: shell/importer/importer.c:402
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-"%s Alınır\n"
-"Alınan üzv 1."
-
-#: shell/importer/importer.c:473
-msgid "Automatic"
-msgstr "Avtomatik"
-
-#: shell/importer/importer.c:523
-msgid "Filename:"
-msgstr "Fayl adı:"
-
-#: shell/importer/import.glade.h:5 shell/importer/importer.c:528
-msgid "Select a file"
-msgstr "Fayl seç"
-
-#: shell/importer/importer.c:538
-msgid "File type:"
-msgstr "Fayl növü:"
-
-#: shell/importer/import.glade.h:4 shell/importer/importer.c:619
-msgid "Import"
-msgstr "Al"
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr ""
-"Faylın \"Evolution\" içina alınması üçün \"Al\" düyməsini "
-"tıqlayın. "
-
-#: shell/importer/import.glade.h:2
-msgid "Evolution Import Utility"
-msgstr "\"Evolution\" Alma Vasitəsi"
-
-#: shell/importer/import.glade.h:3
-msgid "Evolution Importer Utility"
-msgstr "\"Evolution\" Alıcı Vasitəsi"
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-"\"Evolution\" Alma Vasitəsinə Xoş Gəldiniz.\n"
-"Bu vasitə ila xarici faylları \"Evolution\" içinə\n"
-"alacaqsınız."
-
-#: shell/importer/intelligent.c:143
-msgid "Don't ask me again"
-msgstr "Mənə bir də soruşma"
-
-#: shell/main.c:82
-#, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-"Salam. \"Evolution\" NÜMAYİŞ buraxılışını sınamağa \n"
-"vaxt tapdığınız üçün minnətdarıq.\n"
-"\n"
-"\"Evolution\" hələ tamamilə azyılmayıb. Düzdür artıq sona "
-"çatırıq.\n"
-"Amma hələ də ediləcək bə'zi işlər var.\n"
-"\n"
-"Ağır bir işin nəticəsini bəyəndiyinizi ümid edib, sizin "
-"fikirlərinizi\n"
-"gözləyirik!\n"
-
-#: shell/main.c:107
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-"Minnətdarıq\n"
-"\"Evolution\" Dəstəsi\n"
-
-#: shell/main.c:138
-msgid "Cannot initialize the Evolution shell."
-msgstr "\"Evolution\" qabığını başlada bilmədim ."
-
-#: shell/main.c:184
-msgid "Disable splash screen"
-msgstr "Açılış ekranını gösdərmə"
-
-#: shell/main.c:185
-msgid "Send the debugging output of all components to a file."
-msgstr "Bütün xəta ayıqlama verilənlərini bir fayla yazdır."
-
-#: shell/main.c:217
-msgid "Cannot initialize the Bonobo component system."
-msgstr "Bonobo parçalar sistemini başlada bilmədim."
-
-#: ui/evolution-addressbook.xml.h:2
-msgid "Create new contact"
-msgstr "Yeni bir hesab yarat"
-
-#: ui/evolution-addressbook.xml.h:4
-msgid "Delete a contact"
-msgstr "ÆlaqÉ™ni sil"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-msgid "Find"
-msgstr "Axtar"
-
-#: ui/evolution-addressbook.xml.h:6
-msgid "Find a contact"
-msgstr "Bir əlaqəni axtar"
-
-#: ui/evolution-addressbook.xml.h:7
-msgid "New contact"
-msgstr "Yeni əlaqə"
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-mail.xml.h:53
-msgid "Previews the message to be printed"
-msgstr "Çap ediləcək ismarıcı nümayiş etdirər"
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "Print contacts"
-msgstr "ÆlaqÉ™lÉ™ri çap et"
-
-#: ui/evolution-addressbook.xml.h:12 ui/evolution-mail.xml.h:84
-msgid "Stop"
-msgstr "Dayan"
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "Stop Loading"
-msgstr "Yükləməni Dayandır"
-
-#: ui/evolution-addressbook.xml.h:14
-msgid "View All"
-msgstr "Hamısını Göstər"
-
-#: ui/evolution-addressbook.xml.h:15
-msgid "View all contacts"
-msgstr "Bütün əlaqələri göstər"
-
-#: ui/evolution-addressbook.xml.h:16
-msgid "_Addressbook Sources..."
-msgstr "_Ünvan Dəftəri Qaynağı..."
-
-#: ui/evolution-addressbook.xml.h:17
-msgid "_Contact"
-msgstr "_ÆlaqÉ™"
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-msgid "_Print..."
-msgstr "_Çap Et ..."
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr "ÆlaqÉ™lÉ™ri a_xtar"
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-mail.xml.h:117
-#: ui/evolution-task-editor-dialog.xml.h:88 ui/evolution.xml.h:43
-msgid "_Tools"
-msgstr "_Vasitələr"
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr "5 gün"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-msgid "Alter preferences"
-msgstr "Seçənəkləri dəyişdir"
-
-#: ui/evolution-calendar.xml.h:4
-msgid "Create a new all day Event"
-msgstr "Yeni bir bütün gün hadisəsi yarat"
-
-#: ui/evolution-calendar.xml.h:5
-msgid "Create a new appointment"
-msgstr "Yeni bir iclas yarat"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr "Yeni bir təqvim yarat"
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr "Gün"
-
-#: ui/evolution-calendar.xml.h:8
-msgid "Go To"
-msgstr "Get"
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr "Vaxtda geri get"
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go forward in time"
-msgstr "Vaxtda irəli get"
-
-#: ui/evolution-calendar.xml.h:11
-msgid "Go to _Date"
-msgstr "_TarixÉ™ Get"
-
-#: ui/evolution-calendar.xml.h:12
-msgid "Go to _Today"
-msgstr "_Bugünə Get"
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr "Xüsusi bir tarixə get"
-
-#: ui/evolution-calendar.xml.h:14
-msgid "Go to present time"
-msgstr "Ä°ndiki vaxta get"
-
-#: ui/evolution-calendar.xml.h:15
-msgid "Month"
-msgstr "Ay"
-
-#: ui/evolution-calendar.xml.h:17
-msgid "New _Event"
-msgstr "Yeni _HadisÉ™"
-
-#: ui/evolution-calendar.xml.h:20
-msgid "Open Calendar"
-msgstr "Təqvimi Aç"
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Prev"
-msgstr "Geri"
-
-#: ui/evolution-calendar.xml.h:22
-msgid "Previews the calendar to be printed"
-msgstr "Çap ediləcək təqvimi nümayiş etdirər"
-
-#: ui/evolution-calendar.xml.h:25
-msgid "Print calendar"
-msgstr "Təqvimi çap et"
-
-#: ui/evolution-calendar.xml.h:26
-msgid "Print this Calendar"
-msgstr "Bu Təqvim çap et"
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:15
-msgid "Save As"
-msgstr "Fərqli Qeyd Et"
-
-#: ui/evolution-calendar.xml.h:28
-msgid "Save calendar as something else"
-msgstr "Təqvimi başqa şey olaraq qeyd et"
-
-#: ui/evolution-calendar.xml.h:30
-msgid "Show 1 day"
-msgstr "1 günü göstər"
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr "1 ayı göstər"
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr "2 həftəni öster"
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr "İş həftəsini göstər"
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:229
-#: widgets/misc/e-dateedit.c:424
-msgid "Today"
-msgstr "Bugün"
-
-#: ui/evolution-calendar.xml.h:35
-msgid "W_ork Week"
-msgstr "İ_ş həftəsi"
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr "Həftə"
-
-#: ui/evolution-calendar.xml.h:37
-msgid "_Appointment"
-msgstr "Ä°_clas"
-
-#: ui/evolution-calendar.xml.h:38
-msgid "_Day"
-msgstr "_Gün"
-
-#: ui/evolution-calendar.xml.h:39
-msgid "_Month"
-msgstr "_Ay"
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:39
-msgid "_New"
-msgstr "_Yeni"
-
-#: ui/evolution-calendar.xml.h:41
-msgid "_Open Calendar"
-msgstr "_Təqvimi aç"
-
-#: ui/evolution-calendar.xml.h:45
-msgid "_Week"
-msgstr "_Həftə"
-
-#: ui/evolution-contact-editor.xml.h:2
-msgid "Delete this item"
-msgstr "Bu üzvü sil"
-
-#: ui/evolution-contact-editor.xml.h:3
-msgid "Delete..."
-msgstr "Sil..."
-
-#: ui/evolution-contact-editor.xml.h:4
-msgid "Help"
-msgstr "Kömək"
-
-#: ui/evolution-contact-editor.xml.h:5
-msgid "Print En_velope..."
-msgstr "_Zərfi Çap Et..."
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-msgid "Print this item"
-msgstr "Bu üzvü çap et"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-mail.xml.h:62 ui/evolution-task-editor-dialog.xml.h:41
-msgid "Print..."
-msgstr "Çap Et ..."
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:16
-#: ui/evolution-task-editor-dialog.xml.h:51
-msgid "Save _As..."
-msgstr "_Fərqli Qeyd Et ..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-msgid "Save and Close"
-msgstr "Qeyd Et vÉ™ Qapat"
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr "ÆlaqÉ™ni qeyd et vÉ™ dialoqu qapat"
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr "ÆlaqÉ™ni fÉ™rqli yerÉ™ gö_ndÉ™r..."
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr "Xətdəki Köməyə bax"
-
-#: ui/evolution-contact-editor.xml.h:13
-msgid "Send _message to contact..."
-msgstr "ÆlaqÉ™yÉ™ yeni bir _ismarıc göndÉ™r..."
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:44 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:31
-msgid "_File"
-msgstr "_Fayl"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:51
-#: ui/evolution-task-editor-dialog.xml.h:85
-msgid "_Save"
-msgstr "_Qeyd Et ..."
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr "Bu proqram tə'minatı haqqında"
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr "Haqqında..."
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-msgid "Actio_ns"
-msgstr "Gediş_lər"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-msgid "Address _Book... (FIXME)"
-msgstr "Ünvan _Dəftəri ... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-msgid "C_lear"
-msgstr "Tə_mizlə"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-msgid "C_ut"
-msgstr "Kə_s"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-msgid "Chec_k Names (FIXME)"
-msgstr "Adları Y_oxla (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-msgid "Clear"
-msgstr "Təmizlə"
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-msgid "Clear the selection"
-msgstr "Seçkiləri təmizlə"
-
-#: ui/evolution-event-editor.xml.h:11
-msgid "Close this appointment"
-msgstr "Bu iclası qapat"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "Qovluğa Kö_çür... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:7
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "Köçürt"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-msgid "Copy the selection"
-msgstr "Seçiləni köçürt"
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr "Kəs"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Cut the selection"
-msgstr "Seçiləni kəs"
-
-#: ui/evolution-event-editor.xml.h:18
-msgid "Delete this appointment"
-msgstr "Bu iclası sil"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr "XML yekunu"
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr "UI Xml yekununu çıxart"
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr "Qovluqdakı _İlk Üzv (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-msgid "For_ward (FIXME)"
-msgstr "Çat_dır (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr "v_Calendar Şəklində Çatdır (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-msgid "Go to the next item"
-msgstr "İrəlidəki Üzvə Get"
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-msgid "Go to the previous item"
-msgstr "ÆvvÉ™lki ÃœzvÉ™ Get"
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-msgid "In_complete Task (FIXME)"
-msgstr "Nata_mam Vəzifə (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-msgid "Modify the file's properties"
-msgstr "Faylların seçənəklərini təkmilləşdir"
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-msgid "N_ext"
-msgstr "_Sonrakı"
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-msgid "Paste"
-msgstr "Yapışdır"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-msgid "Paste the clipboard"
-msgstr "Ara yaddaşı yapışdır"
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr "_Geri"
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-msgid "Print Pre_view"
-msgstr "Çap Etmə Nüma_yişi"
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-msgid "Print S_etup..."
-msgstr "Çap _Qurğuları..."
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-msgid "Print Setup"
-msgstr "Çap Qurğuları"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:14
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:239
-msgid "Save"
-msgstr "Qeyd Et"
-
-#: ui/evolution-event-editor.xml.h:43
-msgid "Save the appointment and close the dialog box"
-msgstr "İclası qeyd et və dialoqu qapat"
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:20
-#: ui/evolution-task-editor-dialog.xml.h:53
-msgid "Save the current file"
-msgstr "Hazırkı faylı qeyd et"
-
-#: ui/evolution-event-editor.xml.h:46
-msgid "Schedule _Meeting"
-msgstr "_Görüşləri Planlaşdır"
-
-#: ui/evolution-event-editor.xml.h:47
-msgid "Schedule some sort of a meeting"
-msgstr "Bəzi növ görüşləri planlaşdır"
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-mail.xml.h:74
-#: ui/evolution-task-editor-dialog.xml.h:57
-msgid "Select All"
-msgstr "Hamısını Seç"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-msgid "Select everything"
-msgstr "Hər şeyi seçin"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr ""
-"Səhifə qurğularını hazırkı çap edicinizə göra uyğunlaşdırın"
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-msgid "Task _Request (FIXME)"
-msgstr "Vəzifə So_rğusu (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-message-composer.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:63
-msgid "_About..."
-msgstr "_Haqqında..."
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:41
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:28
-msgid "_Close"
-msgstr "_Qapat"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:29
-msgid "_Contact (FIXME)"
-msgstr "_ÆlaqÉ™lÉ™r"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-msgid "_Copy"
-msgstr "_Köçürt"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr "_Ayıqla"
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:46
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:35
-msgid "_Help"
-msgstr "_Kömək"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-msgid "_Item (FIXME)"
-msgstr "_Ãœzv (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-msgid "_Journal Entry (FIXME)"
-msgstr "_Jurnal GiriÅŸi (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-msgid "_Last Item in Folder (FIXME)"
-msgstr "Qovluqdakı _Axırıncı Üzv (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-msgid "_Mail Message (FIXME)"
-msgstr "e_Poçt İsmarıcı (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-msgid "_Move to Folder... (FIXME)"
-msgstr "Qovluğa _Daşı ... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-msgid "_Note (FIXME)"
-msgstr "_Qeyd (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-msgid "_Paste"
-msgstr "_Yapışdır"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:109
-#: ui/evolution-task-editor-dialog.xml.h:83
-msgid "_Properties..."
-msgstr "_Seçənəklər..."
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-msgid "_Select All"
-msgstr "Hamısını Se_ç"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:42
-msgid "_Task (FIXME)"
-msgstr "_Vəzifə"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-msgid "_Unread Item (FIXME)"
-msgstr "_OxunmamuÅŸ Ãœzv (FIXME)"
-
-#: ui/evolution-executive-summary.xml.h:1
-msgid "Add Service"
-msgstr "XidmÉ™t ÆlavÉ™ Et"
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr "İcracı Mündəricata yeni xidmət əlavə et"
-
-#: ui/evolution-executive-summary.xml.h:3
-msgid "Create a new email"
-msgstr "Yeni bir məktub yarat"
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr "İcracı Mündəricat Qurğuları..."
-
-#: ui/evolution-executive-summary.xml.h:5
-msgid "New Mail"
-msgstr "Yeni Məktub"
-
-#: ui/evolution-mail.xml.h:2
-msgid "Apply any new filters to the mail in this box"
-msgstr "ÆlavÉ™ Et hÉ™dÉ™fin"
-
-#: ui/evolution-mail.xml.h:3
-msgid "Change the properties of this folder"
-msgstr "Bu cərgənin xüsusiyyətlərini dəyişdir"
-
-#: ui/evolution-mail.xml.h:4
-msgid "Compose"
-msgstr "Yaz"
-
-#: ui/evolution-mail.xml.h:5
-msgid "Compose a new message"
-msgstr "Yeni bir ePoçt ismarıcı yaz"
-
-#: ui/evolution-mail.xml.h:6
-msgid "Configure Folder..."
-msgstr "Cərgə Qur..."
-
-#: ui/evolution-mail.xml.h:8
-msgid "Copy message to a new folder"
-msgstr "İsmarıcları yeni bir qovluğa daşı"
-
-#: ui/evolution-mail.xml.h:9
-msgid "Copy selected messages to another folder"
-msgstr "Seçili ismarıcları başqa cərgəyə köçür"
-
-#: ui/evolution-mail.xml.h:10
-msgid "Create _Virtual Folder From Message"
-msgstr "İsmarıcdan _Virtual Qovluq Yarat"
-
-#: ui/evolution-mail.xml.h:12
-msgid "Delete the selected messages"
-msgstr "Seçili ismarıcları sil"
-
-#: ui/evolution-mail.xml.h:14
-msgid "Display all of the message headers"
-msgstr "Bütün ismarıc başlıqlarını göstər"
-
-#: ui/evolution-mail.xml.h:15
-msgid "Edit Message"
-msgstr "İsmarıcı Düzəlt"
-
-#: ui/evolution-mail.xml.h:16
-msgid "Edit the current message"
-msgstr "Güncəl ismarıcı düzəlt"
-
-#: ui/evolution-mail.xml.h:17
-msgid "Empty _Trash"
-msgstr "Zibil qutusunu _boÅŸalt"
-
-#: ui/evolution-mail.xml.h:18
-msgid "Expunge"
-msgstr "Sil"
-
-#: ui/evolution-mail.xml.h:19
-msgid "Filter on Mailing _List"
-msgstr "Məktublaşma Q_rupundakı Süzgəc"
-
-#: ui/evolution-mail.xml.h:20
-msgid "Filter on Se_nder"
-msgstr "Gö_ndərənə görə Süz"
-
-#: ui/evolution-mail.xml.h:21
-msgid "Filter on _Recipients"
-msgstr "Alı_cıya görə Süz"
-
-#: ui/evolution-mail.xml.h:22
-msgid "Filter on _Subject"
-msgstr "Möv_zuya görə Süz"
-
-#: ui/evolution-mail.xml.h:23
-msgid "Finaly remove all mails tagged for deletion"
-msgstr "Axırda silmək üçün işarətli bütün məktubları sil"
-
-#: ui/evolution-mail.xml.h:24
-msgid "Forget _Passwords"
-msgstr "_Parolları Unut"
-
-#: ui/evolution-mail.xml.h:26
-msgid "Forward As"
-msgstr "Fərqli Çatdır"
-
-#: ui/evolution-mail.xml.h:27
-msgid "Forward inline"
-msgstr "Həmən çatdır"
-
-#: ui/evolution-mail.xml.h:28
-msgid "Forward the selected mail to someone"
-msgstr "Seçili ePoçtu birinə çatdır"
-
-#: ui/evolution-mail.xml.h:30
-msgid "Forward this message in-line with your mail, so you can edit it"
-msgstr "Bu ismarıcı düzəltdikdün sonra çatdır"
-
-#: ui/evolution-mail.xml.h:31
-msgid "Full _Headers"
-msgstr "_Tam Başlıqlar"
-
-#: ui/evolution-mail.xml.h:32
-msgid "Go to the next message"
-msgstr "Sonrakı ismarıca get"
-
-#: ui/evolution-mail.xml.h:33
-msgid "Go to the previous message"
-msgstr "ÆvvÉ™lki ismarıca get"
-
-#: ui/evolution-mail.xml.h:34
-msgid "Hide Deleted Messages"
-msgstr "Silinən İsmarıcları Gizlət"
-
-#: ui/evolution-mail.xml.h:35
-msgid "Hide S_elected Messages"
-msgstr "S_eçili İsmarıcları Gizlət"
-
-#: ui/evolution-mail.xml.h:36
-msgid "Hide _Deleted Messages"
-msgstr "_Silinmiş İsmarıcları Gizlət"
-
-#: ui/evolution-mail.xml.h:37
-msgid "Hide _Read messages"
-msgstr "_Oxunmuş İsmarıcları Gizlət"
-
-#: ui/evolution-mail.xml.h:38
-msgid "Invert Selection"
-msgstr "Seçimi Tərsinə Çevir"
-
-#: ui/evolution-mail.xml.h:39
-msgid "Manage _Subscriptions..."
-msgstr "Al_t Qeydləri İdarə Et..."
-
-#: ui/evolution-mail.xml.h:41
-msgid "Mark All as R_ead"
-msgstr "Hamısını O_xunmış olaraq İşarətlə"
-
-#: ui/evolution-mail.xml.h:42
-msgid "Mark As Read"
-msgstr "Oxunmuş Olaraq İşarətlə"
-
-#: ui/evolution-mail.xml.h:43
-msgid "Mark As U_nread"
-msgstr "Oxun_mamış Olaraq İşarətlə"
-
-#: ui/evolution-mail.xml.h:45
-msgid "Mark the selected messages as having been read"
-msgstr "İşarətlə"
-
-#: ui/evolution-mail.xml.h:46
-msgid "Mark the selected messages as not having been read"
-msgstr "İsmarıcı əvvəl oxunmamış olaraq İşarətlə"
-
-#: ui/evolution-mail.xml.h:47
-msgid "Move"
-msgstr "Daşı"
-
-#: ui/evolution-mail.xml.h:48
-msgid "Move message to a new folder"
-msgstr "İsmarıcı yeni bir qovluğa daşı"
-
-#: ui/evolution-mail.xml.h:49
-msgid "Move selected messages to another folder"
-msgstr "Seçili ismarıcları başqa bir cərgəyə daşı"
-
-#: ui/evolution-mail.xml.h:51
-msgid "Open in New Window"
-msgstr "Yeni Pəncərədə Aç"
-
-#: ui/evolution-mail.xml.h:52
-msgid "Open the current message in a new window"
-msgstr "Güncəl ismarıcları yeni pəncərədə aç"
-
-#: ui/evolution-mail.xml.h:58
-msgid "Print Preview of message..."
-msgstr "İsmarıcın çap etmə Nümayişi..."
-
-#: ui/evolution-mail.xml.h:59
-msgid "Print message to the printer"
-msgstr "İsmarıcı çap et"
-
-#: ui/evolution-mail.xml.h:60
-msgid "Print message..."
-msgstr "İsmarıcı çap et ..."
-
-#: ui/evolution-mail.xml.h:63
-msgid "Redirect (FIXME: implement me)"
-msgstr "İstiqamətləndir (FIXME: məni qəbul et)"
-
-#: ui/evolution-mail.xml.h:67
-msgid "Reply to all"
-msgstr "Hamısına cavab ver"
-
-#: ui/evolution-mail.xml.h:69
-msgid "Reply to sender"
-msgstr "Göndərənə cavab ver"
-
-#: ui/evolution-mail.xml.h:71
-msgid "S_earch Message"
-msgstr "İsmarıcı A_xtar"
-
-#: ui/evolution-mail.xml.h:72
-msgid "S_ource"
-msgstr "Qa_ynaq"
-
-#: ui/evolution-mail.xml.h:73
-msgid "Save the message into a new file"
-msgstr "İsmarıcı yeni bir fayla qeyd et"
-
-#: ui/evolution-mail.xml.h:75 ui/evolution-subscribe.xml.h:7
-msgid "Select _All"
-msgstr "_Hamısını Seç"
-
-#: ui/evolution-mail.xml.h:76
-msgid "Select _Thread"
-msgstr "İl_gəyi Seç"
-
-#: ui/evolution-mail.xml.h:77
-msgid "Send / Receive"
-msgstr "Al / Göndər"
-
-#: ui/evolution-mail.xml.h:78
-msgid "Send a reply to the person who sent you this mail"
-msgstr "Bu ismarıcı sizə göndərən nəfərə bir cavab yazın"
-
-#: ui/evolution-mail.xml.h:79
-msgid "Send a single mail in reply to all the selected mail"
-msgstr "Bütün seçili məktublara tək məktub yolla"
-
-#: ui/evolution-mail.xml.h:80
-msgid ""
-"Send queued mail\n"
-" and retrieve new mail"
-msgstr ""
-"Növbədəki ismarıcları göndər\n"
-" və yeni ismarıcları al"
-
-#: ui/evolution-mail.xml.h:82
-msgid "Send queued mail and retrieve new mail"
-msgstr "Sorğulanmış məktubu göndər və yeni məktubları al"
-
-#: ui/evolution-mail.xml.h:83
-msgid "Show _All"
-msgstr "_Hamısını Göstər"
-
-#: ui/evolution-mail.xml.h:85
-msgid "Threaded Message list"
-msgstr "İlgək_lənmiş İsmarıclar Siyahısı"
-
-#: ui/evolution-mail.xml.h:86
-msgid "Un-delete the selected messages"
-msgstr "Seçili ismarıcı silmə"
-
-#: ui/evolution-mail.xml.h:87
-msgid "Undelete"
-msgstr "Geri Qaytar"
-
-#: ui/evolution-mail.xml.h:92
-msgid "View Raw Message Source"
-msgstr "Çiy İsmarıc Qaynağını Göstər"
-
-#: ui/evolution-mail.xml.h:93
-msgid "Virtual Folder _Editor..."
-msgstr "Virtual Qovluq _Düzəldicisi..."
-
-#: ui/evolution-mail.xml.h:94
-msgid "_Apply Filters"
-msgstr "SüzgÉ™clÉ™ri Æ_lavÉ™ Et"
-
-#: ui/evolution-mail.xml.h:95
-msgid "_Attachment"
-msgstr "_Yapışdırılmış Fayl"
-
-#: ui/evolution-mail.xml.h:97
-msgid "_Create Filter From Message"
-msgstr "İsmarıcdan Qayda _Yarat"
-
-#: ui/evolution-mail.xml.h:99
-msgid "_Expunge"
-msgstr "_Təmizlə"
-
-#: ui/evolution-mail.xml.h:100
-msgid "_Filters..."
-msgstr "_Süzgəclər ..."
-
-#: ui/evolution-mail.xml.h:101 ui/evolution.xml.h:32
-msgid "_Folder"
-msgstr "_Qovluq"
-
-#: ui/evolution-mail.xml.h:103
-msgid "_Inline"
-msgstr "_Xətdə"
-
-#: ui/evolution-mail.xml.h:104 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr "Seçkiyi _Tərs Çevir"
-
-#: ui/evolution-mail.xml.h:105
-msgid "_Mail Message"
-msgstr "_Məktub İsmarıcı"
-
-#: ui/evolution-mail.xml.h:106
-msgid "_Mail Settings..."
-msgstr "_Məktub Qurğuları..."
-
-#: ui/evolution-mail.xml.h:108
-msgid "_Open Selected Items"
-msgstr "Seçili Üzvləri _Aç"
-
-#: ui/evolution-mail.xml.h:110
-msgid "_Quoted"
-msgstr "_Kotalanmış"
-
-#: ui/evolution-mail.xml.h:111
-msgid "_Reply"
-msgstr "_Cavabla"
-
-#: ui/evolution-mail.xml.h:112
-msgid "_Resend Messages"
-msgstr "İ_smarıcları Yenidən Göndər"
-
-#: ui/evolution-mail.xml.h:114
-msgid "_Save Message As..."
-msgstr "İsmarıcları _Fərqli Qeyd Et ..."
-
-#: ui/evolution-mail.xml.h:115
-msgid "_Send / Receive"
-msgstr "_Göndər / Al"
-
-#: ui/evolution-mail.xml.h:116
-msgid "_Threaded"
-msgstr "_İlgəklənmiş"
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr "Yapışdır"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-msgid "Close the current file"
-msgstr "Hazırkı faylı qapat"
-
-#: ui/evolution-message-composer.xml.h:5
-msgid "Encrypt this message with PGP"
-msgstr "İsmarıcı PGP ilə kodla"
-
-#: ui/evolution-message-composer.xml.h:6
-msgid "F_ormat"
-msgstr "Şəki_l"
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "HTML"
-msgstr "HTML"
-
-#: ui/evolution-message-composer.xml.h:8
-msgid "Insert a file as text into the message"
-msgstr "Bir faylı mətn olaraq ismarıca əlavə et"
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert text file..."
-msgstr "_Mətn faylını daxil et ... "
-
-#: ui/evolution-message-composer.xml.h:11
-msgid "Open a file"
-msgstr "Fayl aç"
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "PGP Encrypt"
-msgstr "PGP kodla"
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Sign"
-msgstr "PGP İmzası"
-
-#: ui/evolution-message-composer.xml.h:17
-msgid "Save _Draft"
-msgstr "_Lahiyəni Qeyd Et"
-
-#: ui/evolution-message-composer.xml.h:18
-msgid "Save in _folder... (FIXME)"
-msgstr "_Qovluqda Qeyd Et ... (ABY)"
-
-#: ui/evolution-message-composer.xml.h:19
-msgid "Save in folder..."
-msgstr "_Qovluqda qeyd et ..."
-
-#: ui/evolution-message-composer.xml.h:21
-msgid "Save the current file with a different name"
-msgstr "Hazırkı faylı fərqli bir ad altında qeyd et"
-
-#: ui/evolution-message-composer.xml.h:22
-msgid "Save the message in a specified folder"
-msgstr "İsmarıcı bildirilən qovluqda qeyd et"
-
-#: ui/evolution-message-composer.xml.h:23
-msgid "Send"
-msgstr "Göndər"
-
-#: ui/evolution-message-composer.xml.h:24
-msgid "Send _Later"
-msgstr "_Sonra Göndər"
-
-#: ui/evolution-message-composer.xml.h:25
-msgid "Send _later"
-msgstr "_Sonra göndər"
-
-#: ui/evolution-message-composer.xml.h:26
-msgid "Send the mail in HTML format"
-msgstr "ePoçtu HTML Şəklində göndər"
-
-#: ui/evolution-message-composer.xml.h:27
-msgid "Send the message later"
-msgstr "İsmarıcı sonra göndər"
-
-#: ui/evolution-message-composer.xml.h:28
-msgid "Send the message now"
-msgstr "İsmarıcı indi göndər"
-
-#: ui/evolution-message-composer.xml.h:29
-msgid "Send this message now"
-msgstr "Bu ismarıcı indi göndər"
-
-#: ui/evolution-message-composer.xml.h:30
-msgid "Show / hide attachments"
-msgstr "Yapşdırılmış faylları göstər/gizlət"
-
-#: ui/evolution-message-composer.xml.h:31
-msgid "Show _attachments"
-msgstr "_Yapışdırılmış Faylları göstər"
-
-#: ui/evolution-message-composer.xml.h:32
-msgid "Show attachments"
-msgstr "Yapışdırılmış faylları göstər"
-
-#: ui/evolution-message-composer.xml.h:33
-msgid "Sign this message with your PGP key"
-msgstr "İsmarıcı fərqli bir ad altında qeyd et"
-
-#: ui/evolution-message-composer.xml.h:34
-msgid "Toggles whether the BCC field is displayed"
-msgstr "BCC girişinin harda olacağını bildirər"
-
-#: ui/evolution-message-composer.xml.h:35
-msgid "Toggles whether the CC field is displayed"
-msgstr "CC girişinin harda olacağını bildirər"
-
-#: ui/evolution-message-composer.xml.h:36
-msgid "Toggles whether the From chooser is displayed"
-msgstr "GÖNDÆRÆN giriÅŸinin harda olacağını bildirÉ™r"
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr "GÖNDÆRÄ°LÆCÆK giriÅŸinin harda olacağını bildirÉ™r"
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "_Bcc Field"
-msgstr "_Bcc GiriÅŸi"
-
-#: ui/evolution-message-composer.xml.h:40
-msgid "_Cc Field"
-msgstr "_Cc GiriÅŸi"
-
-#: ui/evolution-message-composer.xml.h:45
-msgid "_From Field"
-msgstr "_Göndərən Girişi"
-
-#: ui/evolution-message-composer.xml.h:47
-msgid "_Insert"
-msgstr "_Daxil Et"
-
-#: ui/evolution-message-composer.xml.h:48
-msgid "_Insert text file... (FIXME)"
-msgstr "_Mətn faylını daxil et ... ( ABY )"
-
-#: ui/evolution-message-composer.xml.h:49
-msgid "_Open..."
-msgstr "_Aç ..."
-
-#: ui/evolution-message-composer.xml.h:50
-msgid "_Reply-To Field"
-msgstr "_Cavab_Verləcək Girişi"
-
-#: ui/evolution-message-composer.xml.h:52
-msgid "_Security"
-msgstr "_Təhlükəsizlik"
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr "Qovluğu qeydiyyatlı qovluqlar siyahısına al"
-
-#: ui/evolution-subscribe.xml.h:3
-msgid "F_older"
-msgstr "_Qovluq"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr "Siyahını Yenilə"
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr "Qovluqlar Siyahısını Yenilə"
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr "Qovluğu qeydiyyatlı qovluqlar siyahısından çıxart"
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr "Qeydiyyatdan Keç"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr "Qeydiyyatdan Çıx"
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-msgid "Assig_n Task (FIXME)"
-msgstr "Ayrıl_mış Vəzifə (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr "Yenidən Axtar"
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-msgid "Meeting Re_quest (FIXME)"
-msgstr "Görü İs_təyi (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-msgid "Redo"
-msgstr "Yenidən Et"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-msgid "Redo the undone action"
-msgstr "Geriyə alına gedişi yenidən et"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-msgid "Replace"
-msgstr "Dəyişdir"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-msgid "Replace a string"
-msgstr "Kəliməni dəyişdir"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-msgid "Reply to A_ll (FIXME)"
-msgstr "_Hamısına Cavab Ver (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-msgid "S_end Status Report (FIXME)"
-msgstr "Vəziyyət Raportunu _GÖndər (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr "Təkrarlamanı _Keç (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-msgid "Save the task and close the dialog box"
-msgstr "Vəzifəni qeyd et və dialoqu qapat"
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "Search again for the same string"
-msgstr "Eyni kəliməni yenə axtar"
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-msgid "Search for a string"
-msgstr "Kəliməni axtar"
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr "GeriyÉ™ Al"
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-msgid "Undo the last action"
-msgstr "Axırıncı gedişi geriyə al"
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:27
-msgid "_Appointment (FIXME)"
-msgstr "_Görüş (ABY)"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-msgid "_Mark Complete (FIXME)"
-msgstr "_İşarətləmə Qurtardı (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-msgid "_Reply (FIXME)"
-msgstr "_Cavab Ver (FIXME)"
-
-#: ui/evolution-tasks.xml.h:2
-msgid "Create a new task"
-msgstr "Yeni bir vəzifə yarat"
-
-#: ui/evolution-tasks.xml.h:3
-msgid "New Task"
-msgstr "Yeni Vəzifə"
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr "Vəzifəni və başqa şeyləri də qeyd et"
-
-#: ui/evolution-tasks.xml.h:6
-msgid "Tasks Preferences..."
-msgstr "Vəzifə Seçənəkləri..."
-
-#: ui/evolution-tasks.xml.h:9
-msgid "_Task"
-msgstr "_Vəzifə"
-
-#: ui/evolution.xml.h:1
-msgid "About Evolution..."
-msgstr "\"Evolution\" Haqqında..."
-
-#: ui/evolution.xml.h:3
-msgid "Close this window"
-msgstr "Bu pəncərəni qapat"
-
-#: ui/evolution.xml.h:4
-msgid "Customi_ze Toolbars..."
-msgstr "Vasitələr Çubuğunu _Xüsusiləşdir..."
-
-#: ui/evolution.xml.h:5
-msgid "Customize"
-msgstr "_Xüsusiləşdir"
-
-#: ui/evolution.xml.h:6
-msgid "Customize toolbars"
-msgstr "Vasitələr çubuğunu xüsusiləşdir"
-
-#: ui/evolution.xml.h:7
-msgid "Display a different folder"
-msgstr "Başqa bir qovluğu göstər"
-
-#: ui/evolution.xml.h:8
-msgid "E_xit"
-msgstr "Çı_x"
-
-#: ui/evolution.xml.h:9
-msgid "Evolution _Window"
-msgstr "Evolution _Pəncərəsi"
-
-#: ui/evolution.xml.h:10
-msgid "Evolution bar _shortcut"
-msgstr "\"Evolution\" çubuğu _qısa yolu"
-
-#: ui/evolution.xml.h:11
-msgid "Exit the program"
-msgstr "Proqramdan çıx"
-
-#: ui/evolution.xml.h:12
-msgid "Getting _Started"
-msgstr "Ne_cÉ™ BaÅŸlayaram"
-
-#: ui/evolution.xml.h:13
-msgid "Import an external file format"
-msgstr "Xarici fayl şəklini idxal et"
-
-#: ui/evolution.xml.h:14
-msgid "Main toolbar"
-msgstr "Ana vasitə çubuğu"
-
-#: ui/evolution.xml.h:15
-msgid "Show information about Evolution"
-msgstr "\"Evolution\" haqqında mə'lumat göstər"
-
-#: ui/evolution.xml.h:16
-msgid "Submit Bug Report"
-msgstr "Xəta Raportunu Göndər"
-
-#: ui/evolution.xml.h:17
-msgid "Submit _Bug Report"
-msgstr "_Xəta Raportunu Göndər"
-
-#: ui/evolution.xml.h:18
-msgid "Submit bug report using Bug Buddy."
-msgstr "\"Bug-buddy\" dəstəyi ilə bir xəta raportunu göndər"
-
-#: ui/evolution.xml.h:19
-msgid "Toggle whether to show the folder bar"
-msgstr "Qovluqlar çubuğunun nümayiş etdiriləcəyi yeri bildir"
-
-#: ui/evolution.xml.h:20
-msgid "Toggle whether to show the shortcut bar"
-msgstr "Qısa yol çubuğunun nümayiş etdiriləcəyi yeri bildir"
-
-#: ui/evolution.xml.h:21
-msgid "Using the C_ontact Manager"
-msgstr "Æ_laqÉ™lÉ™r Ä°darÉ™cisini NecÉ™ iÅŸlÉ™dim"
-
-#: ui/evolution.xml.h:22
-msgid "Using the _Calendar"
-msgstr "_Təqvimi Necə İşlədim"
-
-#: ui/evolution.xml.h:23
-msgid "Using the _Mailer"
-msgstr "_ePoçt bölməsini necə İşlədim"
-
-#: ui/evolution.xml.h:24
-msgid "Work Offline"
-msgstr "Xətdən Qopuq İşlə"
-
-#: ui/evolution.xml.h:25
-msgid "_About Evolution..."
-msgstr "_Evolution Haqqında..."
-
-#: ui/evolution.xml.h:26
-msgid "_Actions"
-msgstr "_Gedişlər"
-
-#: ui/evolution.xml.h:33
-msgid "_Folder Bar"
-msgstr "_Qovluq Çubuğu"
-
-#: ui/evolution.xml.h:34
-msgid "_Go to Folder..."
-msgstr "QovluÄŸa _Get ..."
-
-#: ui/evolution.xml.h:36
-msgid "_Import file..."
-msgstr "Faylı _İdaxl Et ... "
-
-#: ui/evolution.xml.h:37
-msgid "_Index"
-msgstr "_Ä°ndeks"
-
-#: ui/evolution.xml.h:38
-msgid "_Mail message"
-msgstr "_Məktub İsmarıcı"
-
-#: ui/evolution.xml.h:40
-msgid "_New Folder"
-msgstr "_Yeni Qovluq"
-
-#: ui/evolution.xml.h:41
-msgid "_Shortcut Bar"
-msgstr "_Qısa Yol Çubuğu"
-
-#: views/addressbook/galview.xml.h:1
-msgid "Adress Cards"
-msgstr "Ünvan Kartları"
-
-#: views/addressbook/galview.xml.h:2
-msgid "By Company"
-msgstr "Şirkət"
-
-#: views/addressbook/galview.xml.h:3
-msgid "Phone List"
-msgstr "Telefon Siyahısı"
-
-#: views/mail/galview.xml.h:1
-msgid "By Sender"
-msgstr "Göndərən"
-
-#: views/mail/galview.xml.h:2
-msgid "By Status"
-msgstr "Vəziyyət"
-
-#: views/mail/galview.xml.h:3
-msgid "By Subject"
-msgstr "Mövzu"
-
-#: views/mail/galview.xml.h:4
-msgid "Messages"
-msgstr "İsmarıclar"
-
-#: views/tasks/galview.xml.h:2
-msgid "With Category"
-msgstr "Kateqoriya ilÉ™"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:392
-msgid "Tentative"
-msgstr "GiriÅŸimli"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:393
-msgid "Busy"
-msgstr "Məşğul"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:394
-msgid "Out of Office"
-msgstr "Ä°ÅŸ YerindÉ™ Deyil"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:395
-msgid "No Information"
-msgstr "MÉ™'lumat Yoxdur"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:411
-msgid "_Invite Others..."
-msgstr "Başqalarını _Dəvət Et ..."
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:431
-msgid "_Options"
-msgstr "_Seçənəklər"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:448
-msgid "Show _Only Working Hours"
-msgstr "Sadəcə olaraq -İş Saatlarını Göstər"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:461
-msgid "Show _Zoomed Out"
-msgstr "_Uzaqlaşdıraraq Göstər"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:479
-msgid "_Update Free/Busy"
-msgstr "Boş/Məşğulları _Təzələ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:497
-msgid "_<<"
-msgstr "_<<"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:514
-msgid "_Autopick"
-msgstr "_Avtomarik Olaraq Seç"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:528
-msgid ">_>"
-msgstr ">_>"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:545
-msgid "_All People and Resources"
-msgstr "_Bütün Adamlar və Qaynaqlar"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:558
-msgid "All _People and One Resource"
-msgstr "Bütün _adamlar və Bir Qaynaq"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:571
-msgid "_Required People"
-msgstr "_Lazımi Adamlar"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:584
-msgid "Required People and _One Resource"
-msgstr "Lazımi Adamlar və _Bir Qaynaq"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:607
-msgid "Meeting _start time:"
-msgstr "İclas başlama saatı :"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:631
-msgid "Meeting _end time:"
-msgstr "İclas sonlanma saatı :"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:744
-msgid "All Attendees"
-msgstr "Bütün Ziyarətçilər"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:469
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2477
-msgid "%A, %B %d, %Y"
-msgstr "%a %B %d %Y"
-
-#: widgets/menus/gal-view-menus.c:177
-msgid "_Current View"
-msgstr "_Hazırkı Görünüş"
-
-#: widgets/menus/gal-view-menus.c:196
-msgid "Define Views"
-msgstr "Görünüşləri Müəyyənləşdir"
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:422
-msgid "MTWTFSS"
-msgstr "MTWTFSS"
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1061 widgets/misc/e-calendar-item.c:2756
-msgid "%B %Y"
-msgstr "%B %Y"
-
-#: widgets/misc/e-cell-date-edit.c:221 widgets/misc/e-dateedit.c:418
-msgid "Now"
-msgstr "Ä°ndi"
-
-#: widgets/misc/e-cell-date-edit.c:245
-msgid "OK"
-msgstr "Oldu"
-
-#: widgets/misc/e-cell-date-edit.c:726
-#, c-format
-msgid "The time must be in the format: %s"
-msgstr "Gün %s şəklində girilməlidir."
-
-#: widgets/misc/e-clipped-label.c:112
-msgid "..."
-msgstr "..."
-
-#: widgets/misc/e-filter-bar.c:166
-msgid "Save Search"
-msgstr "Axtarışı Qeyd Et"
-
-#: widgets/misc/e-filter-bar.c:237
-msgid "Advanced Search"
-msgstr "Ætraflı Axtarış"
-
-#: widgets/misc/e-filter-bar.c:317
-msgid "Advanced ..."
-msgstr "Ætraflı ..."
-
-#: widgets/misc/e-filter-bar.h:101
-#, fuzzy
-msgid "Save As..."
-msgstr "Fərqli _Qeyd Et ..."
-
-#: widgets/misc/e-filter-bar.h:103
-#, fuzzy
-msgid "Edit..."
-msgstr "Düzəlt"
-
-#: widgets/misc/e-messagebox.c:152
-msgid "Information"
-msgstr "MÉ™'lumat"
-
-#: widgets/misc/e-messagebox.c:159
-msgid "Warning"
-msgstr "Xəbərdarlıq"
-
-#: widgets/misc/e-messagebox.c:173
-msgid "Question"
-msgstr "Sual"
-
-#: widgets/misc/e-messagebox.c:180
-msgid "Message"
-msgstr "İsmarıc"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:224
-msgid "Don't show this message again."
-msgstr "Bu ismarıcı bir də göstərmə."
-
-#: widgets/misc/e-search-bar.c:148
-msgid "Sear_ch"
-msgstr "Ax_tar"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-msgid "The Personal Addressbook Server"
-msgstr "Şəxsi Ünvan Dəftəri Vericisi"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr "Şəxsi Ünvan Dəftəri Vericisi; təqvim e'malatxanası"
-
-#: wombat/wombat.c:173
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr "setup_vfs(): GNOME_VFS başladıla bilmədi"
-
-#: wombat/wombat.c:185
-msgid "init_corba(): could not initialize GNOME"
-msgstr "init_corba(): GNOME başladıla bilmədi"
-
-#: wombat/wombat.c:198
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "init_bonobo(): Bonobonu başlada bilmədim"
-
-#~ msgid "%s is not a selectable folder"
-#~ msgstr "%s Seçilə bilən qovluq deyildir"
-
-#~ msgid "You must be working online to complete this operation"
-#~ msgstr "Bu əməliyyatı qurtarmaq üçün xətdə olmalısınız"
diff --git a/po/ca.po b/po/ca.po
deleted file mode 100644
index a2426ff409..0000000000
--- a/po/ca.po
+++ /dev/null
@@ -1,10707 +0,0 @@
-# evolution translation to Catalan.
-# Copyright (C) 2000 Free Software Foundation, Inc.
-# Softcatalà <info@softcatala.org>, 2000.
-#
-# Traducció per Softcatalà <linux@softcatala.org>
-# Traductor original: Víctor Nieto <vnie2025@alu-etsetb.upc.es>
-msgid ""
-msgstr ""
-"Project-Id-Version: evolution 0.0.6\n"
-"POT-Creation-Date: 2001-04-14 08:51-0400\n"
-"PO-Revision-Date: 2000-11-01 00:40+0100\n"
-"Last-Translator: Quico Llach <tradgnome@softcatala.org>\n"
-"Language-Team: Catalan <linux@softcatala.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: addressbook/backend/ebook/e-card.c:3209
-#, fuzzy
-msgid "Card: "
-msgstr "Cotxe"
-
-#: addressbook/backend/ebook/e-card.c:3211
-#, fuzzy
-msgid ""
-"\n"
-"Name: "
-msgstr "Nom:"
-
-#: addressbook/backend/ebook/e-card.c:3212
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3213
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3214
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3215
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3216
-#, fuzzy
-msgid ""
-"\n"
-" Suffix: "
-msgstr "_Sufix:"
-
-#: addressbook/backend/ebook/e-card.c:3230
-#, fuzzy
-msgid ""
-"\n"
-"Birth Date: "
-msgstr "Data d'ini_ci:"
-
-#: addressbook/backend/ebook/e-card.c:3241
-#, fuzzy
-msgid ""
-"\n"
-"Address:"
-msgstr "_Adreça:"
-
-#: addressbook/backend/ebook/e-card.c:3243
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3244
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3245
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3246
-msgid ""
-"\n"
-" City: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3247
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3248
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3249
-#, fuzzy
-msgid ""
-"\n"
-" Country: "
-msgstr "Paí_s:"
-
-#: addressbook/backend/ebook/e-card.c:3262
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3274
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3277
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3301
-#, fuzzy
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr "Adreça electrònica 2"
-
-#: addressbook/backend/ebook/e-card.c:3304
-#, fuzzy
-msgid ""
-"\n"
-"E-mail:"
-msgstr "Adreça electrònica 2"
-
-#: addressbook/backend/ebook/e-card.c:3323
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3329
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3337
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3341
-#, fuzzy
-msgid ""
-"\n"
-"Business Role: "
-msgstr "Feina 2"
-
-#: addressbook/backend/ebook/e-card.c:3353
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3354
-#, fuzzy
-msgid ""
-"\n"
-" Name: "
-msgstr "Nom:"
-
-#: addressbook/backend/ebook/e-card.c:3355
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3356
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3357
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3358
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3362
-#, fuzzy
-msgid ""
-"\n"
-"Categories: "
-msgstr "categories"
-
-#: addressbook/backend/ebook/e-card.c:3363
-#, fuzzy
-msgid ""
-"\n"
-"Comment: "
-msgstr "Comentaris sobre l'element:"
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3376
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3379
-#, fuzzy
-msgid ""
-"\n"
-"Public Key: "
-msgstr "Públic"
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:1
-msgid "Factory to import GnomeCard files into Evolution."
-msgstr ""
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:2
-msgid "Imports GnomeCard files into Evolution."
-msgstr ""
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:21
-#: addressbook/backend/ebook/load-pine-addressbook.c:22
-#: addressbook/backend/ebook/test-client-list.c:23
-#: addressbook/backend/ebook/test-client.c:33
-#: addressbook/conduit/address-conduit.c:1092
-#: addressbook/gui/component/addressbook-factory.c:43
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:72 calendar/gui/main.c:57
-msgid "Could not initialize Bonobo"
-msgstr "No s'ha pogut inicialitzar el Bonobo"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr "No s'ha pogut iniciar el servidor wombat"
-
-#: addressbook/conduit/address-conduit.c:655
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr "No s'ha pogut iniciar el wombat"
-
-#: addressbook/conduit/address-conduit.c:687
-#: addressbook/conduit/address-conduit.c:690
-msgid "Could not read pilot's Address application block"
-msgstr "No s'ha pogut llegir el bloc d'aplicació d'adreça del Pilot"
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:7
-msgid "Add"
-msgstr "Afegeix"
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr "Ani_versari:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr "F_eina"
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr "Fax de la feina"
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-msgid "C_ontacts..."
-msgstr "C_ontactes..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr "Ca_tegories..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-msgid "Contact Editor"
-msgstr "Contacta l'editor"
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr "Detalls"
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr "Arxiva com:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-msgid "General"
-msgstr "General"
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr "Nou tipus de telèfon"
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-msgid "No_tes:"
-msgstr "No_tes:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr "Tipus de telèfon"
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1284
-msgid "Primary Email"
-msgstr "Adreça electrònica principal"
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr "Vol rebre correu _HTML"
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr "Adreça de pàgina web:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:74
-msgid "_Add"
-msgstr "_Afegeix"
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr "_Adreça..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr "_Nom de l'assistent:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr "_Data de naixement:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr "_Feina"
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-msgid "_Company:"
-msgstr "_Empresa:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/mail-config.glade.h:75 ui/evolution-event-editor.xml.h:57
-#: ui/evolution-mail.xml.h:91 ui/evolution-task-editor-dialog.xml.h:69
-msgid "_Delete"
-msgstr "_Suprimeix"
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr "_Departament:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr "Nom _complet..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-msgid "_Home"
-msgstr "_Particular"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-msgid "_Job title:"
-msgstr "_Càrrec:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr "_Nom del gestor:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-msgid "_Mobile"
-msgstr "_Mòbil"
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr "_Sobrenom:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr "_Oficina"
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr "_Professió:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr "_Cònjuge:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr "_Aquesta és l'adreça de correu"
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-msgid "Delete Contact?"
-msgstr "Voleu suprimir el contacte?"
-
-#: addressbook/contact-editor/e-contact-editor.c:603
-#, fuzzy
-msgid "This contact belongs to these categories:"
-msgstr "El(s) element(s) pertanyen a aquestes categories:"
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-#: addressbook/gui/widgets/e-addressbook-view.c:676
-msgid "Assistant"
-msgstr "Assistent"
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/contact-editor/e-contact-editor.c:1310
-msgid "Business"
-msgstr "Feina"
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-msgid "Business 2"
-msgstr "Feina 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#: addressbook/gui/widgets/e-addressbook-view.c:656
-msgid "Business Fax"
-msgstr "Fax de la feina"
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Callback"
-msgstr "Crida de retorn"
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "Car"
-msgstr "Cotxe"
-
-#: addressbook/contact-editor/e-contact-editor.c:1248
-msgid "Company"
-msgstr "Empresa"
-
-#: addressbook/contact-editor/e-contact-editor.c:1249
-#: addressbook/contact-editor/e-contact-editor.c:1311
-msgid "Home"
-msgstr "Particular"
-
-#: addressbook/contact-editor/e-contact-editor.c:1250
-msgid "Home 2"
-msgstr "Particular 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1251
-#: addressbook/gui/widgets/e-addressbook-view.c:657
-msgid "Home Fax"
-msgstr "Fax particular"
-
-#: addressbook/contact-editor/e-contact-editor.c:1252
-#: addressbook/gui/widgets/e-addressbook-view.c:660
-msgid "ISDN"
-msgstr "XDSI"
-
-#: addressbook/contact-editor/e-contact-editor.c:1253
-msgid "Mobile"
-msgstr "Mòbil"
-
-#: addressbook/contact-editor/e-contact-editor.c:1254
-#: addressbook/contact-editor/e-contact-editor.c:1312
-#: calendar/gui/e-meeting-dialog.glade.h:14 mail/mail-config.glade.h:40
-msgid "Other"
-msgstr "Altres"
-
-#: addressbook/contact-editor/e-contact-editor.c:1255
-#: addressbook/gui/widgets/e-addressbook-view.c:662
-msgid "Other Fax"
-msgstr "Un altre fax"
-
-#: addressbook/contact-editor/e-contact-editor.c:1256
-#: addressbook/gui/widgets/e-addressbook-view.c:663
-msgid "Pager"
-msgstr "Busca"
-
-#: addressbook/contact-editor/e-contact-editor.c:1257
-msgid "Primary"
-msgstr "Primari"
-
-#: addressbook/contact-editor/e-contact-editor.c:1258
-#: addressbook/gui/widgets/e-addressbook-view.c:664
-msgid "Radio"
-msgstr "Ràdio"
-
-#: addressbook/contact-editor/e-contact-editor.c:1259
-#: addressbook/gui/widgets/e-addressbook-view.c:665
-msgid "Telex"
-msgstr "Tèlex"
-
-#: addressbook/contact-editor/e-contact-editor.c:1260
-msgid "TTY/TDD"
-msgstr "TTY/TDD"
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:668
-msgid "Email 2"
-msgstr "Adreça electrònica 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/gui/widgets/e-addressbook-view.c:669
-msgid "Email 3"
-msgstr "Adreça electrònica 3"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:223
-msgid "Contact Quick-Add"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-quick-add.c:225
-#, fuzzy
-msgid "Edit Full"
-msgstr "Filtres d'edició"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:262
-#: addressbook/gui/widgets/e-addressbook-view.c:643
-#, fuzzy
-msgid "Full Name"
-msgstr "Nom complet:"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:268
-#, fuzzy
-msgid "E-mail"
-msgstr "Adreça electrònica 2"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr "Adreça _2:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr "Canadà"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr "Comprova l'adreça"
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr "Paí_s:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr "Finlàndia"
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr "EUA"
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr "_Adreça:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-msgid "_City:"
-msgstr "_Població:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr "_Apartat de correus:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr "_Comarca:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr "_Codi postal:"
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr "Comprova el nom complet"
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:4
-#, fuzzy
-msgid "I"
-msgstr "Si"
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:8
-#, fuzzy
-msgid "Miss"
-msgstr "és"
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr "_Primer:"
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr "_Últim:"
-
-#: addressbook/contact-editor/fullname.glade.h:15
-msgid "_Middle:"
-msgstr "_Mig:"
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr "_Sufix:"
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr "_Títol:"
-
-#: addressbook/gui/component/addressbook.c:241
-msgid "As _Minicards"
-msgstr "Com a _Minicards"
-
-#: addressbook/gui/component/addressbook.c:247
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr "Com a _taula"
-
-#: addressbook/gui/component/addressbook.c:399
-#, fuzzy, c-format
-msgid "Enter password for %s"
-msgstr "Si us plau, introduïu la contrasenya NNTP per a %s@%s"
-
-#: addressbook/gui/component/addressbook.c:427
-msgid "Unable to open addressbook"
-msgstr "No es pot obrir la llibreta d'adreces"
-
-#: addressbook/gui/component/addressbook.c:432
-#, fuzzy
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or have tried\n"
-"to access an LDAP server and don't have LDAP support\n"
-"compiled in. If you've entered a URI, check the URI for\n"
-"correctness and reenter. If not, you probably have\n"
-"attempted to access an LDAP server. If you wish to be\n"
-"able to use LDAP, you'll need to download and install\n"
-"OpenLDAP and recompile and install Evolution.\n"
-msgstr ""
-"Ha estat impossible obrir aquesta llibreta d'adreces.\n"
-"Això pot ser perquè, o bé heu introduït un URI incorrecte,\n"
-"o bé heu intentat accedir a un servidor LDAP sense tenir\n"
-"compilat el suport per a LDAP. Si heu introduït un URI,\n"
-"comproveu que sigui correcte i torneu-lo a introduir. Altrament,\n"
-"segurament heu intentat accedir a un servidor LDAP. Si\n"
-"voleu poder utilitzar LDAP, necessitareu descarregar i instal·lar\n"
-"l'OpenLDAP i recompilar i instal·lar l'Evolution.\n"
-
-#: addressbook/gui/component/addressbook.c:555
-#, fuzzy
-msgid "Show All"
-msgstr "Mostra"
-
-#: addressbook/gui/component/addressbook.c:557
-#, fuzzy
-msgid "Advanced..."
-msgstr "Afegeix..."
-
-#: addressbook/gui/component/addressbook.c:587
-#, fuzzy
-msgid "Any field contains"
-msgstr "El cos conté"
-
-#: addressbook/gui/component/addressbook.c:588
-#, fuzzy
-msgid "Name contains"
-msgstr "conté"
-
-#: addressbook/gui/component/addressbook.c:589
-#, fuzzy
-msgid "Email contains"
-msgstr "conté"
-
-#: addressbook/gui/component/addressbook.c:732
-msgid "The URI that the Folder Browser will display"
-msgstr "L'URI que mostrarà el navegador de carpetes"
-
-#: addressbook/gui/component/addressbook-storage.c:99
-#, fuzzy
-msgid "Other Contacts"
-msgstr "Contacte _nou"
-
-#: addressbook/gui/component/addressbook-config.c:148
-#, fuzzy
-msgid "LDAP Server"
-msgstr "Servidor LDAP:"
-
-#: addressbook/gui/component/addressbook-config.c:150
-#, fuzzy
-msgid "File"
-msgstr "_Fitxer"
-
-#: addressbook/gui/component/addressbook-config.c:153
-#, fuzzy
-msgid "Unknown addressbook type"
-msgstr "No es pot obrir la llibreta d'adreces"
-
-#: addressbook/gui/component/addressbook-config.c:163
-msgid "None (anonymous mode)"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:165
-#: camel/camel-sasl-plain.c:32 camel/providers/imap/camel-imap-provider.c:80
-#: camel/providers/nntp/camel-nntp-store.c:293
-#: camel/providers/pop3/camel-pop3-provider.c:67 mail/mail-config.glade.h:43
-msgid "Password"
-msgstr "Contrasenya"
-
-#: addressbook/gui/component/addressbook-config.c:167
-msgid "SASL"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:170
-#, fuzzy
-msgid "Unknown auth type"
-msgstr "Error desconegut"
-
-#: addressbook/gui/component/addressbook-config.c:179
-#, fuzzy
-msgid "Base"
-msgstr "Enganxa"
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "One"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:183
-#, fuzzy
-msgid "Subtree"
-msgstr "Subscriu-me"
-
-#: addressbook/gui/component/addressbook-config.c:186
-msgid "Unknown scope type"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:353
-msgid "Bind DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:354
-msgid "FIXME Bind DN Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:356
-#: mail/mail-config.glade.h:50
-msgid "Remember this password"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:406
-#: mail/mail-config.glade.h:28
-#, fuzzy
-msgid "Host:"
-msgstr "Hores"
-
-#: addressbook/gui/component/addressbook-config.c:407
-msgid "FIXME Host help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:409
-#, fuzzy
-msgid "Port:"
-msgstr "Prioritat:"
-
-#: addressbook/gui/component/addressbook-config.c:410
-msgid "FIXME Port help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:414
-msgid "Root DN:"
-msgstr "DN arrel:"
-
-#: addressbook/gui/component/addressbook-config.c:415
-msgid "FIXME Root DN help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:435
-#, fuzzy
-msgid "Search Scope:"
-msgstr "Cerca"
-
-#: addressbook/gui/component/addressbook-config.c:489
-msgid "Authentication:"
-msgstr "Autenticació:"
-
-#: addressbook/gui/component/addressbook-config.c:507
-#: mail/mail-config.glade.h:44
-msgid "Path:"
-msgstr "Camí:"
-
-#: addressbook/gui/component/addressbook-config.c:508
-msgid "FIXME Path Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:513
-#, fuzzy
-msgid "Create path if it doesn't exist."
-msgstr "Aquest fitxer no existeix."
-
-#: addressbook/gui/component/addressbook-config.c:647
-#, fuzzy
-msgid "Edit Addressbook"
-msgstr "Desa a la llibreta d'adreces"
-
-#: addressbook/gui/component/addressbook-config.c:649
-#, fuzzy
-msgid "Add Addressbook"
-msgstr "Desa a la llibreta d'adreces"
-
-#: addressbook/gui/component/addressbook-config.c:665
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:671
-#: mail/mail-config.glade.h:35
-msgid "Name:"
-msgstr "Nom:"
-
-#: addressbook/gui/component/addressbook-config.c:672
-msgid "FIXME Name help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:674
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr "Descripció:"
-
-#: addressbook/gui/component/addressbook-config.c:675
-msgid "FIXME Description help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-#, fuzzy
-msgid "Addressbook Sources"
-msgstr "Afegeix una font"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: addressbook/gui/widgets/e-addressbook-view.c:578
-#: addressbook/gui/widgets/e-minicard.c:673
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:8 mail/folder-browser.c:597
-#: mail/mail-config.glade.h:19 mail/mail-view.c:156
-#: ui/evolution-addressbook.xml.h:3 ui/evolution-event-editor.xml.h:17
-#: ui/evolution-mail.xml.h:11 ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr "Suprimeix"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:23
-msgid "Edit"
-msgstr "Edita"
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-msgid "Name"
-msgstr "Nom"
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-#, fuzzy
-msgid "URI"
-msgstr "URL:"
-
-#: addressbook/gui/component/e-address-widget.c:365
-#, fuzzy
-msgid "Disable Queries"
-msgstr "Categories disponibles:"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Enable Queries (Dangerous!)"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:388
-#: addressbook/gui/component/select-names/e-select-names-popup.c:210
-msgid "Edit Contact Info"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:424
-#: addressbook/gui/component/select-names/e-select-names-popup.c:269
-#, fuzzy
-msgid "Add to Contacts"
-msgstr "Contacte _nou"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-msgid "A Bonobo control for an address popup."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A Bonobo control for displaying an address."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-#, fuzzy
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr ""
-"Utilitat de configuració per al conducte de la llibreta d'adreces de "
-"l'Evolution\n"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-#, fuzzy
-msgid "Evolution Addressbook minicard viewer"
-msgstr "Conducte de la llibreta d'adreces de l'Evolution"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-msgid "Evolution component for handling contacts."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-#, fuzzy
-msgid "Factory for the Addressbook Minicard control"
-msgstr "Utilitat de configuració per al conducte de l'agenda de l'Evolution.\n"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-msgid "Factory for the Addressbook's address displayer"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-#, fuzzy
-msgid "Factory for the Addressbook's address popup"
-msgstr "Utilitat de configuració per al conducte de l'agenda de l'Evolution.\n"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:10
-#, fuzzy
-msgid "Factory for the Evolution addressbook component."
-msgstr "Utilitat de configuració per al conducte de l'agenda de l'Evolution.\n"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:11
-#, fuzzy
-msgid "Factory for the sample Addressbook control"
-msgstr "Feu clic aquí per a la llibreta d'adreces"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-#, fuzzy
-msgid "Evolution's addressbook name selection interface."
-msgstr "Conducte de la llibreta d'adreces de l'Evolution"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr ""
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:131
-#: composer/e-msg-composer-attachment-bar.c:468 filter/filter-filter.c:402
-#: filter/filter-rule.c:549 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:265 shell/e-shortcuts-view.c:388
-msgid "Remove"
-msgstr "Elimina"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:146
-#, fuzzy
-msgid "Remove All"
-msgstr "Elimina"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr "Cerca..."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-msgid "Message Recipients"
-msgstr "Destinataris del missatge"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-msgid "Select Names"
-msgstr "Seleccioneu els noms"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-#, fuzzy
-msgid "Select name from:"
-msgstr "Seleccioneu un nom de la llista:"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:158
-msgid "Search"
-msgstr "Cerca"
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr "123"
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr "a"
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr "b"
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr "c"
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr "d"
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr "e"
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr "f"
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr "g"
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr "h"
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr "i"
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr "j"
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr "k"
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr "l"
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr "m"
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr "n"
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-msgid "o"
-msgstr "o"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr "p"
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr "q"
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-msgid "r"
-msgstr "r"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr "s"
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr "t"
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr "u"
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr "v"
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr "w"
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr "x"
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr "y"
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr "z"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:513
-#: addressbook/gui/widgets/e-addressbook-view.c:573
-#: addressbook/gui/widgets/e-minicard.c:466
-#: addressbook/gui/widgets/e-minicard.c:668
-msgid "Save as VCard"
-msgstr "Desa com a VCard"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:574
-#: addressbook/gui/widgets/e-minicard.c:669
-msgid "Send contact to other"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:575
-#: addressbook/gui/widgets/e-minicard.c:670
-#, fuzzy
-msgid "Send message to contact"
-msgstr "FIXME: Nou _missatge per contactar"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:576
-#: addressbook/gui/widgets/e-minicard.c:671 mail/folder-browser.c:572
-#: mail/mail-view.c:154 ui/evolution-addressbook.xml.h:9
-#: ui/evolution-calendar.xml.h:23 ui/evolution-mail.xml.h:50
-#: ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr "Imprimeix"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:577
-#: addressbook/gui/widgets/e-minicard.c:672
-#, fuzzy
-msgid "Print Envelope"
-msgstr "Imprimeix el missatge..."
-
-#: addressbook/gui/widgets/e-addressbook-view.c:641
-#, fuzzy
-msgid "* Click here to add a contact *"
-msgstr "<feu clic aquí per seleccionar una data>"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:642
-#, fuzzy
-msgid "File As"
-msgstr "Arxiva com:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:644
-#, fuzzy
-msgid "Email"
-msgstr "Adreça electrònica 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:645
-#, fuzzy
-msgid "Primary Phone"
-msgstr "Primari"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:646
-#, fuzzy
-msgid "Assistant Phone"
-msgstr "Assistent"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:647
-#, fuzzy
-msgid "Business Phone"
-msgstr "Feina 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:648
-#, fuzzy
-msgid "Callback Phone"
-msgstr "Crida de retorn"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:649
-#, fuzzy
-msgid "Company Phone"
-msgstr "Empresa"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:650
-#, fuzzy
-msgid "Home Phone"
-msgstr "Particular 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:651
-msgid "Organization"
-msgstr "Organització"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:652
-#, fuzzy
-msgid "Business Address"
-msgstr "Feina 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:653
-#, fuzzy
-msgid "Home Address"
-msgstr "Comprova l'adreça"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:654
-#, fuzzy
-msgid "Mobile Phone"
-msgstr "Mòbil"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:655
-msgid "Car Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:658
-#, fuzzy
-msgid "Business Phone 2"
-msgstr "Feina 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:659
-#, fuzzy
-msgid "Home Phone 2"
-msgstr "Particular 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:661
-#, fuzzy
-msgid "Other Phone"
-msgstr "Contacte _nou"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:666
-#, fuzzy
-msgid "TTY"
-msgstr "TTY/TDD"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:667
-#, fuzzy
-msgid "Other Address"
-msgstr "Comprova l'adreça"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:670
-msgid "Web Site"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:671
-#, fuzzy
-msgid "Department"
-msgstr "_Departament:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:672
-#, fuzzy
-msgid "Office"
-msgstr "_Oficina"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:673
-#, fuzzy
-msgid "Title"
-msgstr "_Títol:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:674
-#, fuzzy
-msgid "Profession"
-msgstr "_Professió:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:675
-#, fuzzy
-msgid "Manager"
-msgstr "Busca"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:677
-#, fuzzy
-msgid "Nickname"
-msgstr "_Sobrenom:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:678
-#, fuzzy
-msgid "Spouse"
-msgstr "_Cònjuge:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:679
-#, fuzzy
-msgid "Note"
-msgstr "Cap"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:680
-msgid "Free-busy URL"
-msgstr ""
-
-#: addressbook/gui/widgets/e-minicard-control.c:282
-msgid "Save in addressbook"
-msgstr "Desa a la llibreta d'adreces"
-
-#: addressbook/gui/widgets/e-minicard-view.c:166
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-"\n"
-"\n"
-"No hi ha elements per mostrar en aquesta vista\n"
-"\n"
-"Feu doble clic aquí per crear un nou contacte."
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:26
-#, fuzzy
-msgid "Card View"
-msgstr "Cotxe"
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr "10 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr "8 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr "Formularis en blanc al final:"
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr "Cos"
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr "Inferior:"
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr "Dimensions:"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr "Lletra..."
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr "Lletres"
-
-#: addressbook/printing/e-contact-print.glade.h:9
-msgid "Footer:"
-msgstr "Peu de pàgina:"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr "Format"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-msgid "Header"
-msgstr "Capçalera"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr "Capçalera/Peu de pàgina"
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr "Encapçalaments"
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr "Encapçalaments per a cada carta"
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr "Alçada:"
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr "Un segueix immediatament l'altre"
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr "Inclou:"
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr "Horitzontal"
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr "Esquerra:"
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr "Tabuladors de carta al costat"
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr "Marges"
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr "Nombre de columnes:"
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr "Opcions"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr "Orientació"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr "Pàgina"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-msgid "Page Setup:"
-msgstr "Configuració de la pàgina:"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr "Paper"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr "Font del paper:"
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr "Vertical"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr "Previsualització:"
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr "Imprimeix usant ombrejat de grisos"
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr "Inverteix-ho per a les pàgines senars"
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr "Dreta:"
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr "Seccions:"
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr "Ombrejat"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-msgid "Size:"
-msgstr "Mida:"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr "Comença en una nova pàgina"
-
-#: addressbook/printing/e-contact-print.glade.h:38
-msgid "Style name:"
-msgstr "Nom de l'estil:"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr "Superior:"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-msgid "Type:"
-msgstr "Tipus:"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr "Amplada:"
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr "Error en comunicar-se amb el servidor d'agenda"
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr "No s'ha pogut llegir el bloc d'aplicació d'agenda del Pilot"
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr "No s'ha pogut llegir el bloc d'aplicació de coses per fer del Pilot"
-
-#: calendar/gui/calendar-commands.c:266
-msgid "File not found"
-msgstr "No s'ha trobat el fitxer"
-
-#: calendar/gui/calendar-commands.c:290
-msgid "Open calendar"
-msgstr "Obre l'agenda"
-
-#: calendar/gui/calendar-commands.c:332
-msgid "Save calendar"
-msgstr "Desa l'agenda"
-
-#: calendar/gui/calendar-commands.c:468
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-
-#: calendar/gui/calendar-model.c:360 calendar/gui/calendar-model.c:895
-#: calendar/gui/e-calendar-table.c:330
-msgid "Public"
-msgstr "Públic"
-
-#: calendar/gui/calendar-model.c:363 calendar/gui/calendar-model.c:897
-#: calendar/gui/e-calendar-table.c:331
-msgid "Private"
-msgstr "Privat"
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:899
-#: calendar/gui/e-calendar-table.c:332
-msgid "Confidential"
-msgstr "Confidencial"
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/event-editor.c:1592
-#: calendar/gui/event-editor.c:1619
-#: camel/providers/smtp/camel-smtp-transport.c:218
-msgid "Unknown"
-msgstr "Desconegut"
-
-#: calendar/gui/calendar-model.c:457
-msgid "N"
-msgstr "N"
-
-#: calendar/gui/calendar-model.c:457
-msgid "S"
-msgstr "S"
-
-#: calendar/gui/calendar-model.c:459
-msgid "E"
-msgstr "E"
-
-#: calendar/gui/calendar-model.c:459
-msgid "W"
-msgstr "O"
-
-#: calendar/gui/calendar-model.c:497 calendar/gui/calendar-model.c:1063
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:352 mail/message-list.c:660
-msgid "High"
-msgstr "Alta"
-
-#: calendar/gui/calendar-model.c:499 calendar/gui/calendar-model.c:1065
-#: calendar/gui/calendar-model.c:1569
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:353 mail/message-list.c:659
-msgid "Normal"
-msgstr "Normal"
-
-#: calendar/gui/calendar-model.c:501 calendar/gui/calendar-model.c:1067
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:354 mail/message-list.c:658
-msgid "Low"
-msgstr "Baixa"
-
-#: calendar/gui/calendar-model.c:537 calendar/gui/calendar-model.c:1119
-#: calendar/gui/e-calendar-table.c:406
-msgid "Transparent"
-msgstr "Transparent"
-
-#: calendar/gui/calendar-model.c:540 calendar/gui/calendar-model.c:1121
-#: calendar/gui/e-calendar-table.c:405
-msgid "Opaque"
-msgstr "Opac"
-
-#: calendar/gui/calendar-model.c:635 calendar/gui/calendar-model.c:1173
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:426
-msgid "Not Started"
-msgstr "No iniciat"
-
-#: calendar/gui/calendar-model.c:638 calendar/gui/calendar-model.c:1175
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:427
-msgid "In Progress"
-msgstr "En procés"
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1177
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:428
-#, fuzzy
-msgid "Completed"
-msgstr "% comp_let:"
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1179
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:429 camel/camel-service.c:550
-#: camel/camel-service.c:586
-#, fuzzy
-msgid "Cancelled"
-msgstr "Cancel·lat"
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:791 e-util/e-time-utils.c:278
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr "%a %d/%m/%Y %H:%M:%S"
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:794 e-util/e-time-utils.c:287
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr "%a %d/%m/%Y %I:%M:%S %p"
-
-#: calendar/gui/calendar-model.c:799
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-"La data s'ha d'introduir amb el format: \n"
-"\n"
-"%s"
-
-#: calendar/gui/calendar-model.c:879
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr ""
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:893 calendar/gui/calendar-model.c:1117
-#: calendar/gui/calendar-model.c:1171 calendar/gui/e-calendar-table.c:329
-#: calendar/gui/e-calendar-table.c:404 mail/mail-account-gui.c:973
-#: mail/mail-accounts.c:120 mail/mail-accounts.c:164
-#: mail/mail-config.glade.h:37 shell/e-shell-view.c:1129
-#: widgets/misc/e-cell-date-edit.c:234 widgets/misc/e-dateedit.c:430
-#: widgets/misc/e-dateedit.c:1339 widgets/misc/e-dateedit.c:1454
-msgid "None"
-msgstr "Cap"
-
-#: calendar/gui/calendar-model.c:967
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-"La posició geogràfica s'ha d'introduir amb el format: \n"
-"\n"
-"45.436845,125.862501"
-
-#: calendar/gui/calendar-model.c:1007
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr "El valor de percentatge ha d'estar entre 0 i 100, ambdós inclosos"
-
-#: calendar/gui/calendar-model.c:1048
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr ""
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1061
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:355
-msgid "Undefined"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1102
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1571
-#, fuzzy
-msgid "Recurring"
-msgstr "Recurrència"
-
-#: calendar/gui/calendar-model.c:1573
-#, fuzzy
-msgid "Assigned"
-msgstr "Assigna una puntuació"
-
-#: calendar/gui/calendar-model.c:1579
-msgid "Yes"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1579
-#, fuzzy
-msgid "No"
-msgstr "Ara"
-
-#: calendar/gui/calendar-summary.c:196
-#, fuzzy
-msgid "%A, %e %B %Y"
-msgstr "%A, %d de %B de %Y"
-
-#: calendar/gui/calendar-summary.c:239 calendar/gui/calendar-summary.c:245
-#, fuzzy
-msgid "%I:%M%p"
-msgstr "%I:%M %p"
-
-#: calendar/gui/calendar-summary.c:437
-#, fuzzy
-msgid "<b>Error loading calendar</b>"
-msgstr "Error en carregar el fitxer: %s"
-
-#: calendar/gui/calendar-summary.c:449
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:616
-#, fuzzy
-msgid "Display"
-msgstr "_Visualització"
-
-#: calendar/gui/calendar-summary.c:621
-#, fuzzy
-msgid "Show appointments"
-msgstr "Mostra les hores d'acabament de les cites"
-
-#: calendar/gui/calendar-summary.c:629
-#, fuzzy
-msgid "Show tasks"
-msgstr "Mostra les _adjuncions"
-
-#: calendar/gui/calendar-summary.c:715 calendar/gui/e-itip-control.glade.h:7
-#, fuzzy
-msgid "Loading Calendar"
-msgstr "Imprimeix l'agenda"
-
-#: calendar/gui/control-factory.c:126
-msgid "The URI that the calendar will display"
-msgstr "La URI que mostrarà l'agenda"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr "Recordatori de la vostra cita a "
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-msgid "Snooze"
-msgstr "'Snooze'"
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr "D'acord"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr ""
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-msgid "Factory for the alarm notification service"
-msgstr ""
-
-#: calendar/gui/alarm-notify/notify-main.c:67 calendar/gui/main.c:52
-#, fuzzy
-msgid "Could not initialize GNOME"
-msgstr "No s'ha pogut inicialitzar el Bonobo"
-
-#: calendar/gui/alarm-notify/notify-main.c:77
-#, fuzzy
-msgid "Could not create the alarm notify service factory"
-msgstr "No s'ha pogut crear el directori temporal: %s"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:189
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr "Alarma el %A %d de %b de %Y, a les %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:196
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr "Notificació sobre la vostra cita el %A %d de %b de %Y, a les %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:207
-msgid "No summary available."
-msgstr "No hi ha cap resum disponible."
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:2
-#, fuzzy
-msgid "Close"
-msgstr "Tanca"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-msgid "Edit appointment"
-msgstr "Edita una cita"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr "Durada de l'snooze (minuts)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr "05 minuts"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr "10 minuts"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr "12 hores (am/pm)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr "15 minuts"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr "24 hores"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr "30 minuts"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr "60 minuts"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr "Les alarmes es desactiven després de"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr "Alarmes acústiques"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr "Fes un so quan aparegui una finestra d'alarma."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-msgid "Calendar"
-msgstr "Agenda"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr "Preferències de l'agenda"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "Colors"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr "Comprimeix els caps de setmana"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr "Opcions del navegador de dates"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-msgid "Defaults"
-msgstr "Valors predeterminats"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr "Opcions de visualització"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:162
-msgid "Due Date"
-msgstr "Data de venciment"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr "Habilita l'snoozing per a"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr "Final del dia:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr "primer dia de la setmana:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr "dv."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:481
-msgid "Friday"
-msgstr "Divendres"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr "Ressalta"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr "Elemts que vencen avui"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr "Elements que vencen avui:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr "Elements que encara no han vençut"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr "Elements que encara no han vençut:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr "dl."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:477
-msgid "Monday"
-msgstr "Dilluns"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr "Elements vençuts"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr "Elements que ja han vençut:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:45
-msgid "Pick a color"
-msgstr "Agafa un color"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:165
-msgid "Priority"
-msgstr "Prioritat"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-msgid "Remind me of all appointments"
-msgstr "Recorda'm totes les cites"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-msgid "Reminders"
-msgstr "Recordatoris"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr "ds."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:482
-msgid "Saturday"
-msgstr "Dissabte"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr "Mostra"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-#, fuzzy
-msgid "Show appointment end times"
-msgstr "Mostra les hores d'acabament de les cites"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr "Mostra els números de les setmanes"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr "Inici del dia:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr "dg."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:483
-msgid "Sunday"
-msgstr "Diumenge"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-msgid "TaskPad"
-msgstr "TaskPad"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr "dj."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:480
-msgid "Thursday"
-msgstr "Dijous"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr "Temps fins al venciment"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr "Divisions de temps:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr "Format de l'hora:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr "dm."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:478
-msgid "Tuesday"
-msgstr "Dimarts"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr "Alarmes visuals"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr "dc."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:479
-msgid "Wednesday"
-msgstr "Dimecres"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr "Setmana de treball"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr "minuts abans que es produeixin."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:78
-msgid "seconds."
-msgstr "segons."
-
-#: calendar/gui/dialogs/delete-comp.c:70
-#, fuzzy, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr ""
-"Esteu segur que voleu\n"
-"suprimir aquest contacte?"
-
-#: calendar/gui/dialogs/delete-comp.c:73
-#, fuzzy
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr ""
-"Esteu segur que voleu\n"
-"suprimir aquest contacte?"
-
-#: calendar/gui/dialogs/delete-comp.c:79
-#, fuzzy, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr ""
-"Esteu segur que voleu\n"
-"suprimir aquest contacte?"
-
-#: calendar/gui/dialogs/delete-comp.c:82
-#, fuzzy
-msgid "Are you sure you want to delete this untitled task?"
-msgstr ""
-"Esteu segur que voleu\n"
-"suprimir aquest contacte?"
-
-#: calendar/gui/dialogs/delete-comp.c:88
-#, fuzzy, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr ""
-"Esteu segur que voleu\n"
-"suprimir aquest contacte?"
-
-#: calendar/gui/dialogs/delete-comp.c:91
-#, fuzzy
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr ""
-"Esteu segur que voleu\n"
-"suprimir aquest contacte?"
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr "% comp_let:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:158
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr "Classificació"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-#, fuzzy
-msgid "Date & Time"
-msgstr "Data d'enviament"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr "Data completa:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-msgid "Pri_vate"
-msgstr "Pri_vat"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-#, fuzzy
-msgid "Progress"
-msgstr "En procés"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr "Pú_blic"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-#, fuzzy
-msgid "Sta_rt Date:"
-msgstr "Data d'ini_ci:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-msgid "Su_mmary:"
-msgstr "Resu_m:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr "Tasca"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-#, fuzzy
-msgid "URL:"
-msgstr "URL:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr "_Confidencial"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Contacts..."
-msgstr "_Contactes..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-msgid "_Due Date:"
-msgstr "_Data de venciment:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-msgid "_Priority:"
-msgstr "_Prioritat:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "_Status:"
-msgstr "_Estat:"
-
-#: calendar/gui/dialogs/task-editor.c:697
-msgid "Edit Task"
-msgstr "Edita la tasca"
-
-#: calendar/gui/dialogs/task-editor.c:703 calendar/gui/event-editor.c:379
-msgid "No summary"
-msgstr "Sense resum"
-
-#: calendar/gui/dialogs/task-editor.c:709 calendar/gui/event-editor.c:385
-#, c-format
-msgid "Appointment - %s"
-msgstr "Cita - %s"
-
-#: calendar/gui/dialogs/task-editor.c:712 calendar/gui/event-editor.c:388
-#, c-format
-msgid "Task - %s"
-msgstr "Tasca - %s"
-
-#: calendar/gui/dialogs/task-editor.c:715 calendar/gui/event-editor.c:391
-#, c-format
-msgid "Journal entry - %s"
-msgstr "Entrada al diari - %s"
-
-#: calendar/gui/e-calendar-table.c:157
-#, fuzzy
-msgid "Categories"
-msgstr "categories"
-
-#: calendar/gui/e-calendar-table.c:159
-#, fuzzy
-msgid "Completion Date"
-msgstr "Completat"
-
-#: calendar/gui/e-calendar-table.c:160
-#, fuzzy
-msgid "End Date"
-msgstr "Hora de _finalització:"
-
-#: calendar/gui/e-calendar-table.c:161
-#, fuzzy
-msgid "Start Date"
-msgstr "Data d'ini_ci:"
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Geographical Position"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:164
-#, fuzzy
-msgid "Percent complete"
-msgstr "Marca la tasca com a completa"
-
-#: calendar/gui/e-calendar-table.c:166
-#, fuzzy
-msgid "Summary"
-msgstr "R_esum"
-
-#: calendar/gui/e-calendar-table.c:167
-#, fuzzy
-msgid "Transparency"
-msgstr "Transparent"
-
-#: calendar/gui/e-calendar-table.c:168
-#, fuzzy
-msgid "URL"
-msgstr "URL:"
-
-#: calendar/gui/e-calendar-table.c:169
-msgid "Alarms"
-msgstr "Alarmes"
-
-#: calendar/gui/e-calendar-table.c:170
-#, fuzzy
-msgid "Click here to add a task"
-msgstr "Feu clic aquí per a la llibreta d'adreces"
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "0%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "10%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "20%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "30%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:378
-#, c-format
-msgid "40%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:379
-#, c-format
-msgid "50%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:380
-#, c-format
-msgid "60%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:381
-#, c-format
-msgid "70%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:382
-#, c-format
-msgid "80%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:383
-#, c-format
-msgid "90%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:384
-#, c-format
-msgid "100%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:551
-msgid "Mark Complete"
-msgstr "Marca com a completa"
-
-#: calendar/gui/e-calendar-table.c:552
-msgid "Mark the task complete"
-msgstr "Marca la tasca com a completa"
-
-#: calendar/gui/e-calendar-table.c:557
-#, fuzzy
-msgid "Edit this task..."
-msgstr "Edita aquest element..."
-
-#: calendar/gui/e-calendar-table.c:558
-#, fuzzy
-msgid "Edit the task"
-msgstr "Edita la tasca"
-
-#: calendar/gui/e-calendar-table.c:560
-#: ui/evolution-task-editor-dialog.xml.h:19
-#, fuzzy
-msgid "Delete this task"
-msgstr "Suprimeix la tasca"
-
-#: calendar/gui/e-calendar-table.c:561
-msgid "Delete the task"
-msgstr "Suprimeix la tasca"
-
-#: calendar/gui/e-day-view-time-item.c:519
-#, c-format
-msgid "%02i minute divisions"
-msgstr "%02i divisions de minut"
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:274 calendar/gui/e-day-view.c:1294
-#: calendar/gui/e-week-view-main-item.c:325
-msgid "%A %d %B"
-msgstr "%A, %d de %B"
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:278 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:334
-msgid "%a %d %b"
-msgstr "%a %d %b"
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:282 calendar/gui/e-day-view.c:1321
-#: calendar/gui/e-week-view-main-item.c:348
-msgid "%d %b"
-msgstr "%d %b"
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:570 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:617
-msgid "am"
-msgstr "am"
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:573 calendar/gui/e-week-view.c:303
-#: calendar/gui/print.c:616
-msgid "pm"
-msgstr "pm"
-
-#: calendar/gui/e-day-view.c:3146 ui/evolution-calendar.xml.h:16
-#, fuzzy
-msgid "New Appointment"
-msgstr "Nova cita..."
-
-#: calendar/gui/e-day-view.c:3148 calendar/gui/e-week-view.c:3280
-#, fuzzy
-msgid "New All Day Event"
-msgstr "Esdeveniment per a _tot el dia"
-
-#: calendar/gui/e-day-view.c:3153 calendar/gui/e-week-view.c:3285
-#, fuzzy
-msgid "Go to Today"
-msgstr "Vés a avui"
-
-#: calendar/gui/e-day-view.c:3155 calendar/gui/e-week-view.c:3287
-#, fuzzy
-msgid "Go to Date..."
-msgstr "Vés a una data"
-
-#: calendar/gui/e-day-view.c:3162 calendar/gui/e-week-view.c:3293
-#: mail/folder-browser.c:566 ui/evolution-calendar.xml.h:19
-#: ui/evolution-message-composer.xml.h:10
-#, fuzzy
-msgid "Open"
-msgstr "_Obre"
-
-#: calendar/gui/e-day-view.c:3164 calendar/gui/e-week-view.c:3295
-#, fuzzy
-msgid "Delete this Appointment"
-msgstr "Suprimeix aquesta cita"
-
-#: calendar/gui/e-day-view.c:3166 calendar/gui/e-week-view.c:3297
-#: ui/evolution-event-editor.xml.h:45
-#, fuzzy
-msgid "Schedule Meeting"
-msgstr "Seleccioneu una carpeta"
-
-#: calendar/gui/e-day-view.c:3175 calendar/gui/e-week-view.c:3310
-#, fuzzy
-msgid "Make this Occurrence Movable"
-msgstr "Fes aquesta cita movible"
-
-#: calendar/gui/e-day-view.c:3177 calendar/gui/e-week-view.c:3312
-#, fuzzy
-msgid "Delete this Occurrence"
-msgstr "Suprimeix-ne aquesta aparició"
-
-#: calendar/gui/e-day-view.c:3179
-#, fuzzy
-msgid "Delete all Occurrences"
-msgstr "Suprimeix-ne totes les aparicions"
-
-#: calendar/gui/e-itip-control.c:161
-#, fuzzy
-msgid "I couldn't update your calendar file!\n"
-msgstr "No s'ha pogut crear una agenda a `%s'"
-
-#: calendar/gui/e-itip-control.c:167 calendar/gui/e-itip-control.c:510
-#, fuzzy
-msgid "Component successfully updated."
-msgstr "Els fitxers de l'Evolution s'han instal·lat amb èxit."
-
-#: calendar/gui/e-itip-control.c:173
-msgid "There was an error loading the calendar file."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:197
-msgid "I couldn't open your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:458 calendar/gui/e-itip-control.c:529
-msgid "I couldn't load your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:470
-#, fuzzy
-msgid "I couldn't read your calendar file!\n"
-msgstr "No s'ha pogut crear una agenda a `%s'"
-
-#: calendar/gui/e-itip-control.c:483
-msgid "This is a reply from someone who was uninvited!"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:499
-#, fuzzy
-msgid "I couldn't update your calendar store."
-msgstr "No s'ha pogut crear una agenda a `%s'"
-
-#: calendar/gui/e-itip-control.c:540
-msgid "I couldn't delete the calendar component!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:550
-#, fuzzy
-msgid "Component successfully deleted."
-msgstr "Els fitxers de l'Evolution s'han instal·lat amb èxit."
-
-#: calendar/gui/e-itip-control.c:694
-#, fuzzy
-msgid "I don't recognize this type of calendar component."
-msgstr "Utilitat de configuració per al conducte de l'agenda de l'Evolution.\n"
-
-#: calendar/gui/e-itip-control.c:780
-#, fuzzy
-msgid "Add to Calendar"
-msgstr "Sobre l'agenda"
-
-#: calendar/gui/e-itip-control.c:814
-#, fuzzy
-msgid " Accept "
-msgstr "set"
-
-#: calendar/gui/e-itip-control.c:815
-#, fuzzy
-msgid " Decline "
-msgstr "Suprimeix"
-
-#: calendar/gui/e-itip-control.c:816
-#, fuzzy
-msgid " Tentative "
-msgstr "Tentatiu"
-
-#: calendar/gui/e-itip-control.c:860
-#, fuzzy
-msgid "Update Calendar"
-msgstr "_Obre una agenda"
-
-#: calendar/gui/e-itip-control.c:883
-#, fuzzy
-msgid "Cancel Meeting"
-msgstr "Cancel·lat"
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, fuzzy, no-c-format
-msgid "%P %%"
-msgstr "%A, %d de %B"
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:4
-#, fuzzy
-msgid "Calendar Message"
-msgstr "Agenda"
-
-#: calendar/gui/e-itip-control.glade.h:5 mail/mail-format.c:619
-#, fuzzy
-msgid "Date:"
-msgstr "Data de venciment"
-
-#: calendar/gui/e-itip-control.glade.h:8
-#, fuzzy
-msgid "Loading calendar..."
-msgstr "Imprimeix l'agenda"
-
-#: calendar/gui/e-itip-control.glade.h:9
-#, fuzzy
-msgid "Organizer:"
-msgstr "Organització:"
-
-#: calendar/gui/e-itip-control.glade.h:10
-#, fuzzy
-msgid "Server Message:"
-msgstr "Anomena i desa..."
-
-#: calendar/gui/e-itip-control.glade.h:11
-msgid "Summary:"
-msgstr "Resum:"
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:13
-#, fuzzy
-msgid "date-start"
-msgstr "Inici del dia:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-#, fuzzy
-msgid "Attendee"
-msgstr "Tots els assistents"
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-#, fuzzy
-msgid "Attendee address"
-msgstr "Tots els assistents"
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-#, fuzzy
-msgid "Attendees: "
-msgstr "Tots els assistents"
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-#, fuzzy
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr "Cancel·lat"
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-#, fuzzy
-msgid "Chair"
-msgstr "Cotxe"
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-#, fuzzy
-msgid "Meeting Invitations"
-msgstr "Hora d'_inici de la reunió:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-#, fuzzy
-msgid "Organizer: "
-msgstr "Organització:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:15
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid "RSVP"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:18
-msgid ""
-"Request\n"
-"Meeting"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-#, fuzzy
-msgid "Required Participant"
-msgstr "Persones _requerides"
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-#, fuzzy
-msgid "Role"
-msgstr "Mòbil"
-
-#: calendar/gui/e-meeting-dialog.glade.h:22
-msgid ""
-"Schedule\n"
-"Time"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:24 filter/libfilter-i18n.h:33
-#: mail/message-list.c:1052
-#, fuzzy
-msgid "Status"
-msgstr "_Estat:"
-
-#: calendar/gui/e-tasks.c:149 calendar/gui/e-tasks.c:469
-#: calendar/gui/e-tasks.c:502
-msgid "All"
-msgstr ""
-
-#: calendar/gui/e-tasks.c:155
-#, fuzzy
-msgid "Category:"
-msgstr "categories"
-
-#: calendar/gui/e-tasks.c:298
-#, fuzzy, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "No s'ha pogut carregar l'agenda en `%s'"
-
-#: calendar/gui/e-tasks.c:310
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr "El mètode necessari per carregar `%s' no està suportat"
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:342
-msgid "%d %B"
-msgstr "%d %B"
-
-#: calendar/gui/e-week-view.c:3278 calendar/gui/e-week-view.c:3301
-#, fuzzy
-msgid "New Appointment..."
-msgstr "Nova cita..."
-
-#: calendar/gui/e-week-view.c:3314
-#, fuzzy
-msgid "Delete All Occurrences"
-msgstr "Suprimeix-ne totes les aparicions"
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr "Esdeveniment per a _tot el dia"
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-#, fuzzy
-msgid "Appointment"
-msgstr "Cites:"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-msgid "Appointment Basics"
-msgstr "Temes fonamentals sobre les cites"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-msgid "Custom recurrence"
-msgstr "Recurrència personalitzada"
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr "Cada"
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-msgid "Exceptions"
-msgstr "Excepcions"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-msgid "Modify"
-msgstr "Modifica"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-msgid "No recurrence"
-msgstr "Sense recurrència"
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1579
-msgid "Play a sound"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-#, fuzzy
-msgid "Preview"
-msgstr "Previsualització:"
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Recurrence"
-msgstr "Recurrència"
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-msgid "Recurrence Rule"
-msgstr "Regla de recurrència"
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-msgid "Reminder"
-msgstr "Recordatori"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1588
-#, fuzzy
-msgid "Run a program"
-msgstr "_Executa el programa:"
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1585
-#, fuzzy
-msgid "Send an email"
-msgstr "S'està recollint el correu des de %s"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-#, fuzzy
-msgid "Settings..."
-msgstr "_Paràmetres"
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1582
-#, fuzzy
-msgid "Show a dialog"
-msgstr "Mostra 1 dia"
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr "Recurrència simple"
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-#, fuzzy
-msgid "_End time:"
-msgstr "Hora de _finalització:"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Start time:"
-msgstr "Hora d'_inici:"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Starting date:"
-msgstr "Data d'_inici:"
-
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:36
-msgid "after"
-msgstr "després de"
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:37
-msgid "before"
-msgstr "abans de"
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "day(s)"
-msgstr "dia(es)"
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-#, fuzzy
-msgid "end of appointment"
-msgstr "Recorda'm totes les cites"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "for"
-msgstr "per a"
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr "per sempre"
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-#, fuzzy
-msgid "hour(s)"
-msgstr "hores"
-
-#: calendar/gui/event-editor-dialog.glade.h:40 mail/mail-config.glade.h:77
-#, fuzzy
-msgid "minute(s)"
-msgstr "minuts"
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "month(s)"
-msgstr "mes(os)"
-
-#: calendar/gui/event-editor-dialog.glade.h:42
-#, fuzzy
-msgid "start of appointment"
-msgstr "Edita una cita"
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-msgid "until"
-msgstr "fins a"
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "week(s)"
-msgstr "setmana(es)"
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "year(s)"
-msgstr "any(s)"
-
-#: calendar/gui/event-editor.c:373
-msgid "Edit Appointment"
-msgstr "Edita una cita"
-
-#: calendar/gui/event-editor.c:451
-msgid "on"
-msgstr "el"
-
-#: calendar/gui/event-editor.c:476 filter/filter-datespec.c:81
-msgid "day"
-msgstr "dia"
-
-#: calendar/gui/event-editor.c:603
-#, fuzzy
-msgid "on the"
-msgstr "mes"
-
-#: calendar/gui/event-editor.c:610
-#, fuzzy
-msgid "th"
-msgstr "4"
-
-#: calendar/gui/event-editor.c:756
-#, fuzzy
-msgid "occurrences"
-msgstr "aparicions"
-
-#: calendar/gui/event-editor.c:873
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr ""
-
-#: calendar/gui/event-editor.c:1534
-#, fuzzy, c-format
-msgid " %d days"
-msgstr "dies"
-
-#: calendar/gui/event-editor.c:1536
-#, fuzzy
-msgid " 1 day"
-msgstr "Mostra 1 dia"
-
-#: calendar/gui/event-editor.c:1539
-#, fuzzy, c-format
-msgid " %d weeks"
-msgstr "setmanes"
-
-#: calendar/gui/event-editor.c:1541
-#, fuzzy
-msgid " 1 week"
-msgstr "Mostra 1 setmana"
-
-#: calendar/gui/event-editor.c:1544
-#, fuzzy, c-format
-msgid " %d hours"
-msgstr "hores"
-
-#: calendar/gui/event-editor.c:1546
-#, fuzzy
-msgid " 1 hour"
-msgstr "hora"
-
-#: calendar/gui/event-editor.c:1549
-#, fuzzy, c-format
-msgid " %d minutes"
-msgstr "minuts"
-
-#: calendar/gui/event-editor.c:1551
-#, fuzzy
-msgid " 1 minute"
-msgstr "10 minuts"
-
-#: calendar/gui/event-editor.c:1554
-#, fuzzy, c-format
-msgid " %d seconds"
-msgstr " segons"
-
-#: calendar/gui/event-editor.c:1556
-#, fuzzy
-msgid " 1 second"
-msgstr " segons"
-
-#: calendar/gui/event-editor.c:1603
-#, fuzzy
-msgid " before start of appointment"
-msgstr "Crea una nova cita"
-
-#: calendar/gui/event-editor.c:1605
-#, fuzzy
-msgid " after start of appointment"
-msgstr "Crea una nova cita"
-
-#: calendar/gui/event-editor.c:1613
-#, fuzzy
-msgid " before end of appointment"
-msgstr "Recorda'm totes les cites"
-
-#: calendar/gui/event-editor.c:1615
-#, fuzzy
-msgid " after end of appointment"
-msgstr "Crea una nova cita"
-
-#: calendar/gui/event-editor.c:3123 calendar/gui/print.c:1097
-#: calendar/gui/print.c:1099 calendar/gui/print.c:1100
-msgid "%a %b %d %Y"
-msgstr "%a, %d de %b de %Y"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-#, fuzzy
-msgid "Evolution calendar executive summary component."
-msgstr ""
-"No es pot inicialitzar el component de resum del correu de l'Evolution."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-#, fuzzy
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr "Conducte de l'agenda de l'Evolution"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-#, fuzzy
-msgid "Factory for the Calendar Summary component."
-msgstr "Utilitat de configuració per al conducte de l'agenda de l'Evolution.\n"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-#, fuzzy
-msgid "Factory for the Evolution calendar component."
-msgstr "Utilitat de configuració per al conducte de l'agenda de l'Evolution.\n"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-#, fuzzy
-msgid "Factory for the calendar iTip view control"
-msgstr "Utilitat de configuració per al conducte de l'agenda de l'Evolution.\n"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-#, fuzzy
-msgid "Factory for the sample Calendar control"
-msgstr "Utilitat de configuració per al conducte de l'agenda de l'Evolution.\n"
-
-#: calendar/gui/gnome-cal.c:700
-#, fuzzy, c-format
-msgid "Could not open the folder in `%s'"
-msgstr ""
-"No s'ha pogut obrir la carpeta `%s':\n"
-"%s"
-
-#: calendar/gui/gnome-cal.c:711
-#, fuzzy, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr "El mètode necessari per carregar `%s' no està suportat"
-
-#: calendar/gui/goto-dialog.glade.h:1
-#, fuzzy
-msgid "April"
-msgstr "abril"
-
-#: calendar/gui/goto-dialog.glade.h:2
-#, fuzzy
-msgid "August"
-msgstr "agost"
-
-#: calendar/gui/goto-dialog.glade.h:3
-#, fuzzy
-msgid "December"
-msgstr "desembre"
-
-#: calendar/gui/goto-dialog.glade.h:4
-#, fuzzy
-msgid "February"
-msgstr "febrer"
-
-#: calendar/gui/goto-dialog.glade.h:5
-#, fuzzy
-msgid "Go To Date"
-msgstr "Vés a una data"
-
-#: calendar/gui/goto-dialog.glade.h:6
-#, fuzzy
-msgid "Go To Today"
-msgstr "Vés a avui"
-
-#: calendar/gui/goto-dialog.glade.h:7
-#, fuzzy
-msgid "January"
-msgstr "gener"
-
-#: calendar/gui/goto-dialog.glade.h:8
-#, fuzzy
-msgid "July"
-msgstr "juliol"
-
-#: calendar/gui/goto-dialog.glade.h:9
-#, fuzzy
-msgid "June"
-msgstr "juny"
-
-#: calendar/gui/goto-dialog.glade.h:10
-#, fuzzy
-msgid "March"
-msgstr "març"
-
-#: calendar/gui/goto-dialog.glade.h:11
-#, fuzzy
-msgid "May"
-msgstr "Dilluns"
-
-#: calendar/gui/goto-dialog.glade.h:12
-#, fuzzy
-msgid "November"
-msgstr "novembre"
-
-#: calendar/gui/goto-dialog.glade.h:13
-#, fuzzy
-msgid "October"
-msgstr "octubre"
-
-#: calendar/gui/goto-dialog.glade.h:14
-#, fuzzy
-msgid "September"
-msgstr "setembre"
-
-#: calendar/gui/print.c:300
-msgid "1st"
-msgstr "1"
-
-#: calendar/gui/print.c:300
-msgid "2nd"
-msgstr "2"
-
-#: calendar/gui/print.c:300
-msgid "3rd"
-msgstr "3"
-
-#: calendar/gui/print.c:300
-msgid "4th"
-msgstr "4"
-
-#: calendar/gui/print.c:300
-msgid "5th"
-msgstr "5"
-
-#: calendar/gui/print.c:301
-msgid "6th"
-msgstr "6"
-
-#: calendar/gui/print.c:301
-msgid "7th"
-msgstr "7"
-
-#: calendar/gui/print.c:301
-msgid "8th"
-msgstr "8"
-
-#: calendar/gui/print.c:301
-msgid "9th"
-msgstr "9"
-
-#: calendar/gui/print.c:301
-msgid "10th"
-msgstr "10"
-
-#: calendar/gui/print.c:302
-msgid "11th"
-msgstr "11"
-
-#: calendar/gui/print.c:302
-msgid "12th"
-msgstr "12"
-
-#: calendar/gui/print.c:302
-msgid "13th"
-msgstr "13"
-
-#: calendar/gui/print.c:302
-msgid "14th"
-msgstr "14"
-
-#: calendar/gui/print.c:302
-msgid "15th"
-msgstr "15"
-
-#: calendar/gui/print.c:303
-msgid "16th"
-msgstr "16"
-
-#: calendar/gui/print.c:303
-msgid "17th"
-msgstr "17"
-
-#: calendar/gui/print.c:303
-msgid "18th"
-msgstr "18"
-
-#: calendar/gui/print.c:303
-msgid "19th"
-msgstr "19"
-
-#: calendar/gui/print.c:303
-msgid "20th"
-msgstr "20"
-
-#: calendar/gui/print.c:304
-msgid "21st"
-msgstr "21"
-
-#: calendar/gui/print.c:304
-msgid "22nd"
-msgstr "22"
-
-#: calendar/gui/print.c:304
-msgid "23rd"
-msgstr "23"
-
-#: calendar/gui/print.c:304
-msgid "24th"
-msgstr "24"
-
-#: calendar/gui/print.c:304
-msgid "25th"
-msgstr "25"
-
-#: calendar/gui/print.c:305
-msgid "26th"
-msgstr "26"
-
-#: calendar/gui/print.c:305
-msgid "27th"
-msgstr "27"
-
-#: calendar/gui/print.c:305
-msgid "28th"
-msgstr "28"
-
-#: calendar/gui/print.c:305
-msgid "29th"
-msgstr "29"
-
-#: calendar/gui/print.c:305
-msgid "30th"
-msgstr "30"
-
-#: calendar/gui/print.c:306
-msgid "31st"
-msgstr "31"
-
-#: calendar/gui/print.c:362
-msgid "Su"
-msgstr "Dg"
-
-#: calendar/gui/print.c:362
-msgid "Mo"
-msgstr "Dl"
-
-#: calendar/gui/print.c:362
-msgid "Tu"
-msgstr "Dm"
-
-#: calendar/gui/print.c:362
-msgid "We"
-msgstr "Dc"
-
-#: calendar/gui/print.c:362
-msgid "Th"
-msgstr "Dj"
-
-#: calendar/gui/print.c:362
-msgid "Fr"
-msgstr "Dv"
-
-#: calendar/gui/print.c:362
-msgid "Sa"
-msgstr "Ds"
-
-#: calendar/gui/print.c:948 views/tasks/galview.xml.h:1
-msgid "Tasks"
-msgstr "Tasques"
-
-#. Day
-#: calendar/gui/print.c:1078
-msgid "Current day (%a %b %d %Y)"
-msgstr "Avui (%a, %d de %b de %Y)"
-
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1096
-msgid "%a %b %d"
-msgstr "%a, %d de %b"
-
-#: calendar/gui/print.c:1093
-msgid "%a %d %Y"
-msgstr "%a %d %Y"
-
-#: calendar/gui/print.c:1104
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr "Aquesta setmana (%s - %s)"
-
-#. Month
-#: calendar/gui/print.c:1112
-msgid "Current month (%b %Y)"
-msgstr "Aquest mes (%b %Y)"
-
-#. Year
-#: calendar/gui/print.c:1119
-msgid "Current year (%Y)"
-msgstr "Enguany (%Y)"
-
-#: calendar/gui/print.c:1156
-msgid "Print Calendar"
-msgstr "Imprimeix l'agenda"
-
-#: calendar/gui/print.c:1321 mail/mail-callbacks.c:1342
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:24
-#: ui/evolution-mail.xml.h:52
-msgid "Print Preview"
-msgstr "Previsualització d'impressió"
-
-#: calendar/gui/tasks-control.c:108
-#, fuzzy
-msgid "The URI of the tasks folder to display"
-msgstr "La URI que mostrarà l'agenda"
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-
-#: calendar/gui/weekday-picker.c:315 calendar/gui/weekday-picker.c:410
-#, fuzzy
-msgid "SMTWTFS"
-msgstr "DDDDDDD"
-
-#: camel/camel-cipher-context.c:169
-#, fuzzy
-msgid "Signing is not supported by this cipher"
-msgstr "El tipus indicat no es suporta en aquest emmagatzemament"
-
-#: camel/camel-cipher-context.c:207
-#, fuzzy
-msgid "Clearsigning is not supported by this cipher"
-msgstr "El tipus indicat no es suporta en aquest emmagatzemament"
-
-#: camel/camel-cipher-context.c:245
-#, fuzzy
-msgid "Verifying is not supported by this cipher"
-msgstr "El tipus indicat no es suporta en aquest emmagatzemament"
-
-#: camel/camel-cipher-context.c:286
-#, fuzzy
-msgid "Encryption is not supported by this cipher"
-msgstr "El tipus indicat no es suporta en aquest emmagatzemament"
-
-#: camel/camel-cipher-context.c:326
-#, fuzzy
-msgid "Decryption is not supported by this cipher"
-msgstr "El tipus indicat no es suporta en aquest emmagatzemament"
-
-#: camel/camel-filter-driver.c:534 camel/camel-filter-driver.c:543
-#, fuzzy
-msgid "Syncing folders"
-msgstr "S'està sincronitzant \"%s\""
-
-#: camel/camel-filter-driver.c:643
-#, fuzzy
-msgid "Unable to open spool folder"
-msgstr "No es pot obrir la llibreta d'adreces"
-
-#: camel/camel-filter-driver.c:652
-#, fuzzy
-msgid "Unable to process spool folder"
-msgstr "No es pot desar el fitxer de llista de grups per a %s: %s"
-
-#: camel/camel-filter-driver.c:666
-#, fuzzy
-msgid "Getting message %d (%d%%)"
-msgstr "S'està escrivint el missatge %d de %d"
-
-#: camel/camel-filter-driver.c:670 camel/camel-filter-driver.c:679
-#, fuzzy, c-format
-msgid "Failed message %d"
-msgstr "Missatge de _correu (FIXME)"
-
-#: camel/camel-filter-driver.c:671
-#, fuzzy
-msgid "Cannot open message"
-msgstr "No es pot recuperar el missatge: %s"
-
-#: camel/camel-filter-driver.c:690 camel/camel-filter-driver.c:788
-#, fuzzy
-msgid "Syncing folder"
-msgstr "S'està sincronitzant \"%s\""
-
-#: camel/camel-filter-driver.c:694 camel/camel-filter-driver.c:793
-#, fuzzy
-msgid "Complete"
-msgstr "% comp_let:"
-
-#: camel/camel-filter-driver.c:748
-#, fuzzy, c-format
-msgid "Getting message %d of %d"
-msgstr "S'està escrivint el missatge %d de %d"
-
-#: camel/camel-filter-driver.c:753 camel/camel-filter-driver.c:771
-#, fuzzy, c-format
-msgid "Failed at message %d of %d"
-msgstr "S'està escrivint el missatge %d de %d"
-
-#: camel/camel-filter-driver.c:866
-#, fuzzy, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr "Error en desar el fitxer: %s"
-
-#: camel/camel-filter-driver.c:871
-#, fuzzy, c-format
-msgid "Error executing filter: %s: %s"
-msgstr "Error en desar el fitxer: %s"
-
-#: camel/camel-filter-search.c:439 camel/camel-filter-search.c:445
-#, fuzzy, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr "Error en desar el fitxer: %s"
-
-#: camel/camel-folder-search.c:328
-#, fuzzy, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-"Error en preparar-se per a %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:338
-#, fuzzy, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr ""
-"Error en preparar-se per a %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:485 camel/camel-folder-search.c:513
-msgid "(match-all) requires a single bool result"
-msgstr ""
-
-#: camel/camel-folder-search.c:559
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr ""
-
-#: camel/camel-folder-search.c:670 camel/camel-folder-search.c:714
-msgid "Invalid type in body-contains, expecting string"
-msgstr ""
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:92 camel/camel-lock.c:111 camel/camel-movemail.c:138
-#: camel/camel-movemail.c:185
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "No s'ha pogut crear el fitxer de blocatge per a %s: %s"
-
-#: camel/camel-lock.c:151 camel/camel-movemail.c:219
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr ""
-"S'ha excedit el temps màxim en intentar recuperar el fitxer de blocatge en "
-"%s. Torneu-ho a provar més tard."
-
-#: camel/camel-lock.c:201
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr ""
-
-#: camel/camel-lock.c:255
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr ""
-
-#: camel/camel-movemail.c:101
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr "No s'ha pogut comprovar el fitxer de correu %s: %s"
-
-#: camel/camel-movemail.c:148
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr "No s'ha pogut obrir el fitxer de correu %s: %s"
-
-#: camel/camel-movemail.c:158
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr "No s'ha pogut obrir el fitxer temporal de correu %s: %s"
-
-#: camel/camel-movemail.c:199
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr "No s'ha pogut comprovar el fitxer de blocatge per a %s: %s"
-
-#: camel/camel-movemail.c:245
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr "Error en llegir el fitxer de correu: %s"
-
-#: camel/camel-movemail.c:256
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr "Error en escriure el fitxer temporal de correu: %s"
-
-#: camel/camel-movemail.c:274
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr "No s'ha pogut emmagatzemar el correu en el fitxer temporal %s: %s"
-
-#: camel/camel-movemail.c:306
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr "No s'ha pogut crear el conducte: %s"
-
-#: camel/camel-movemail.c:318
-#, c-format
-msgid "Could not fork: %s"
-msgstr "No s'ha pogut bifurcar: %s"
-
-#: camel/camel-movemail.c:356
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr "El programa Movemail ha fallat: %s"
-
-#: camel/camel-movemail.c:357
-msgid "(Unknown error)"
-msgstr "(Error desconegut)"
-
-#: camel/camel-movemail.c:587
-#, fuzzy, c-format
-msgid "Error copying mail temp file: %s"
-msgstr "Error en escriure el fitxer temporal de correu: %s"
-
-#: camel/camel-pgp-context.c:186
-#, fuzzy, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr "Si us plau, introduïu la vostra contrasenya PGP/GPG."
-
-#: camel/camel-pgp-context.c:189
-#, fuzzy, c-format
-msgid "Please enter your %s passphrase"
-msgstr "Si us plau, introduïu la vostra contrasenya PGP/GPG."
-
-#: camel/camel-pgp-context.c:509
-msgid "No plaintext to sign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:516 camel/camel-pgp-context.c:688
-#: camel/camel-pgp-context.c:1021 camel/camel-pgp-context.c:1235
-msgid "No password provided."
-msgstr "No s'ha indicat cap contrasenya."
-
-#: camel/camel-pgp-context.c:522 camel/camel-pgp-context.c:694
-#: camel/camel-pgp-context.c:877 camel/camel-pgp-context.c:1028
-#: camel/camel-pgp-context.c:1242
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr "No s'ha pogut crear cap conducte a GPG/PGP: %s"
-
-#: camel/camel-pgp-context.c:681
-msgid "No plaintext to clearsign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:871
-msgid "No plaintext to verify."
-msgstr ""
-
-#: camel/camel-pgp-context.c:888
-#, fuzzy, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "No s'ha pogut crear el conducte: %s"
-
-#: camel/camel-pgp-context.c:1011
-msgid "No plaintext to encrypt."
-msgstr ""
-
-#: camel/camel-pgp-context.c:1037
-msgid "No recipients specified"
-msgstr ""
-
-#: camel/camel-pgp-context.c:1227
-msgid "No ciphertext to decrypt."
-msgstr ""
-
-#: camel/camel-provider.c:131
-#, c-format
-msgid "Could not load %s: Module loading not supported on this system."
-msgstr ""
-
-#: camel/camel-provider.c:140
-#, c-format
-msgid "Could not load %s: %s"
-msgstr "No s'ha pogut carregar %s: %s"
-
-#: camel/camel-provider.c:148
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr ""
-"No s'ha pogut carregar %s: el mòdul no conté cap codi d'inicialització."
-
-#: camel/camel-remote-store.c:186
-#, c-format
-msgid "%s server %s"
-msgstr "Servidor %s %s"
-
-#: camel/camel-remote-store.c:190
-#, c-format
-msgid "%s service for %s on %s"
-msgstr "Servei %s per a %s en %s"
-
-#: camel/camel-remote-store.c:240
-#, fuzzy
-msgid "Connection cancelled"
-msgstr "Cancel·lat"
-
-#: camel/camel-remote-store.c:243
-#: camel/providers/smtp/camel-smtp-transport.c:261
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr "No s'ha pogut connectar a %s (port %d): %s"
-
-#: camel/camel-remote-store.c:244
-msgid "(unknown host)"
-msgstr "(ordinador central desconegut)"
-
-#: camel/camel-remote-store.c:325 camel/camel-remote-store.c:387
-#: camel/camel-remote-store.c:458
-#: camel/providers/imap/camel-imap-command.c:264
-#, fuzzy
-msgid "Operation cancelled"
-msgstr "Obre l'agenda"
-
-#: camel/camel-remote-store.c:464
-#, fuzzy
-msgid "Server unexpectedly disconnected"
-msgstr "El servidor ha rebutjat el nom d'usuari"
-
-#: camel/camel-sasl-anonymous.c:33
-msgid "Anonymous"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:35
-#, fuzzy
-msgid "This option will connect to the server using an anonymous login."
-msgstr ""
-"Aquesta opció es connectarà al servidor IMAP mitjançant una contrasenya de "
-"text net."
-
-#: camel/camel-sasl-anonymous.c:110 camel/camel-sasl-plain.c:87
-#, fuzzy
-msgid "Authentication failed."
-msgstr "Autenticació:"
-
-#: camel/camel-sasl-anonymous.c:119
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:131
-#, fuzzy, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr ""
-"Error en carregar la informació del filtre:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:143
-#, fuzzy, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr ""
-"Error en carregar la informació del filtre:\n"
-"%s"
-
-#: camel/camel-sasl-cram-md5.c:35
-msgid "CRAM-MD5"
-msgstr ""
-
-#: camel/camel-sasl-cram-md5.c:37
-#, fuzzy
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-"Això us connectarà al servidor POP i utilitzarà el Kerberos 4 per "
-"autenticar-vos-hi."
-
-#: camel/camel-sasl-digest-md5.c:43
-msgid "DIGEST-MD5"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:45
-#, fuzzy
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-"Aquesta opció es connectarà al servidor IMAP mitjançant una contrasenya de "
-"text net."
-
-#: camel/camel-sasl-digest-md5.c:810
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:819
-msgid "Server challenge invalid\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:825
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:847
-#, fuzzy
-msgid "Server response did not contain authorization data\n"
-msgstr "La resposta del servidor IMAP no contenia la informació %s"
-
-#: camel/camel-sasl-digest-md5.c:865
-msgid "Server response contained incomplete authorization data\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:875
-#, fuzzy
-msgid "Server response does not match\n"
-msgstr "La resposta del servidor IMAP no contenia la informació %s"
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "Kerberos 4"
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:42
-#, fuzzy
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr ""
-"Això us connectarà al servidor POP i utilitzarà el Kerberos 4 per "
-"autenticar-vos-hi."
-
-#: camel/camel-sasl-kerberos4.c:161
-#, fuzzy, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr "No s'ha pogut crear el conducte: %s"
-
-#: camel/camel-sasl-kerberos4.c:218
-#: camel/providers/imap/camel-imap-store.c:417
-#, fuzzy
-msgid "Bad authentication response from server."
-msgstr "Resposta inesperada del servidor IMAP: %s"
-
-#: camel/camel-sasl-plain.c:34
-#, fuzzy
-msgid "This option will connect to the server using a simple password."
-msgstr ""
-"Aquesta opció es connectarà al servidor IMAP mitjançant una contrasenya de "
-"text net."
-
-#: camel/camel-search-private.c:110
-#, fuzzy, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr "Error en escriure a la bústia de correu temporal: %s"
-
-#: camel/camel-service.c:152
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr "L'URL '%s' necessita un component de nom d'usuari"
-
-#: camel/camel-service.c:160
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr "L'URL '%s' necessita un component d'ordinador central"
-
-#: camel/camel-service.c:168
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr "L'URL '%s' necessita un component de camí"
-
-#: camel/camel-service.c:554
-#, fuzzy, c-format
-msgid "Resolving: %s"
-msgstr "S'està comprovant \"%s\""
-
-#: camel/camel-service.c:581
-#, c-format
-msgid "Failure in name lookup: %s"
-msgstr ""
-
-#: camel/camel-service.c:606
-#, c-format
-msgid "Host lookup failed: %s: host not found"
-msgstr ""
-
-#: camel/camel-service.c:608
-#, c-format
-msgid "Host lookup failed: %s: unknown reason"
-msgstr ""
-
-#: camel/camel-session.c:57
-msgid "Virtual folder email provider"
-msgstr "Proveïdor de correu de la carpeta virtual"
-
-#: camel/camel-session.c:59
-msgid "For reading mail as a query of another set of folders"
-msgstr "Per llegir correu com a consulta d'un altre joc de carpetes"
-
-#: camel/camel-session.c:274 camel/camel-session.c:364
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr "No hi ha cap proveïdor disponible per al protocol `%s'"
-
-#: camel/camel-session.c:462
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"No s'ha pogut crear el directori %s:\n"
-"%s"
-
-#. Fill in the new fields
-#: camel/camel-store.c:380 mail/mail-ops.c:994 mail/mail-ops.c:1001
-#: mail/mail-ops.c:1019 mail/mail-ops.c:1020
-#, fuzzy
-msgid "Trash"
-msgstr "Tasca"
-
-#: camel/camel-url.c:289
-#, fuzzy, c-format
-msgid "Could not parse URL `%s'"
-msgstr ""
-"No s'ha pogut obrir el fitxer `%s':\n"
-"%s"
-
-#: camel/camel-vee-folder.c:451
-#, fuzzy, c-format
-msgid "No such message %s in %s"
-msgstr "L'ordinador central %s no existeix."
-
-#: camel/camel-vee-folder.c:545
-#, fuzzy, c-format
-msgid "No such message: %s"
-msgstr "L'ordinador central %s no existeix."
-
-#: camel/providers/imap/camel-imap-command.c:209
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "Resposta inesperada del servidor IMAP: %s"
-
-#: camel/providers/imap/camel-imap-command.c:217
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr "L'ordre IMAP ha fallat: %s"
-
-#: camel/providers/imap/camel-imap-command.c:218 shell/e-storage.c:481
-msgid "Unknown error"
-msgstr "Error desconegut"
-
-#: camel/providers/imap/camel-imap-command.c:272
-#, fuzzy
-msgid "Server response ended too soon."
-msgstr "La resposta del servidor IMAP no contenia la informació %s"
-
-#: camel/providers/imap/camel-imap-command.c:456
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr "La resposta del servidor IMAP no contenia la informació %s"
-
-#: camel/providers/imap/camel-imap-command.c:490
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr "Resposta D'acord inesperada del servidor IMAP: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:172
-#, c-format
-msgid "Could not load summary for %s"
-msgstr "No s'ha pogut carregar el resum per a %s"
-
-#: camel/providers/imap/camel-imap-folder.c:351
-#, fuzzy
-msgid "Scanning IMAP folder"
-msgstr "S'estan escanejant les carpetes de \"%s\""
-
-#: camel/providers/imap/camel-imap-folder.c:986
-#: camel/providers/imap/camel-imap-folder.c:1197
-#, fuzzy
-msgid "This message is not currently available"
-msgstr ""
-"Aquest missatge no té cap assumpte.\n"
-"Voleu que l'enviï igualment?"
-
-#: camel/providers/imap/camel-imap-folder.c:1016
-#: camel/providers/imap/camel-imap-folder.c:1231
-msgid "Could not find message body in FETCH response."
-msgstr "No s'ha pogut trobar el cos del missatge en la resposta al FETCH."
-
-#: camel/providers/imap/camel-imap-provider.c:43 mail/mail-config.glade.h:11
-#, fuzzy
-msgid "Checking for new mail"
-msgstr "Comprova si hi ha nou correu"
-
-#: camel/providers/imap/camel-imap-provider.c:45
-#, fuzzy
-msgid "Check for new messages in all folders"
-msgstr "Comprova si hi ha nou correu"
-
-#: camel/providers/imap/camel-imap-provider.c:48 shell/e-shell-view.c:484
-msgid "Folders"
-msgstr "Carpetes"
-
-#: camel/providers/imap/camel-imap-provider.c:50
-#, fuzzy
-msgid "Show only subscribed folders"
-msgstr "Escaneja les carpetes de \"%s\""
-
-#: camel/providers/imap/camel-imap-provider.c:52
-msgid "Override server-supplied folder namespace"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:54
-#, fuzzy
-msgid "Namespace"
-msgstr "Nom:"
-
-#: camel/providers/imap/camel-imap-provider.c:57
-msgid "Apply filters to new messages in INBOX on this server"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:63
-msgid "IMAPv4"
-msgstr "IMAPv4"
-
-#: camel/providers/imap/camel-imap-provider.c:65
-msgid "For reading and storing mail on IMAP servers."
-msgstr "Per llegir i emmagatzemar correu en servidors IMAP."
-
-#: camel/providers/imap/camel-imap-provider.c:82
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr ""
-"Aquesta opció es connectarà al servidor IMAP mitjançant una contrasenya de "
-"text net."
-
-#: camel/providers/imap/camel-imap-store.c:440
-#, fuzzy, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr ""
-"No es pot connectar al servidor POP.\n"
-"No hi ha suport per al mecanisme d'autenticació sol·licitat."
-
-#: camel/providers/imap/camel-imap-store.c:450
-#: camel/providers/smtp/camel-smtp-transport.c:358
-#, fuzzy, c-format
-msgid "No support for authentication type %s"
-msgstr "Autenticació:"
-
-#: camel/providers/imap/camel-imap-store.c:475
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr "%sSi us plau, introduïu la contrasenya IMAP per a %s@%s"
-
-#: camel/providers/imap/camel-imap-store.c:490
-#: camel/providers/smtp/camel-smtp-transport.c:403
-msgid "You didn't enter a password."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:518
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"No es pot autenticar davant del servidor IMAP.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/imap/camel-imap-store.c:865
-#, fuzzy, c-format
-msgid "%s is not a selectable folder"
-msgstr "Visualitza la carpeta seleccionada"
-
-#: camel/providers/imap/camel-imap-store.c:879
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr "No s'ha pogut crear el directori %s: %s"
-
-#: camel/providers/imap/camel-imap-store.c:1382
-msgid "You must be working online to complete this operation"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:39
-#, fuzzy
-msgid "MH-format mail directories"
-msgstr "Directoris de correu en format MH d'UNIX"
-
-#: camel/providers/local/camel-local-provider.c:40
-msgid "For storing local mail in MH-like mail directories"
-msgstr "Per emmagatzemar correu local en directoris de correu de tipus MH"
-
-#: camel/providers/local/camel-local-provider.c:49
-msgid "Standard Unix mailbox file"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:50
-#, fuzzy
-msgid "For storing local mail in standard mbox format"
-msgstr "Per emmagatzemar correu local en directoris de correu de tipus MH"
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "Qmail maildir-format mail files"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:60
-#, fuzzy
-msgid "For storing local mail in qmail maildir directories"
-msgstr "Per emmagatzemar correu local en directoris de correu de tipus MH"
-
-#: camel/providers/local/camel-local-store.c:129
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:136
-#, fuzzy, c-format
-msgid "Store root %s is not a regular directory"
-msgstr "`%s' no és un fitxer habitual."
-
-#: camel/providers/local/camel-local-store.c:144
-#: camel/providers/local/camel-local-store.c:160
-#, fuzzy, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "No es pot bifurcar %s: %s"
-
-#: camel/providers/local/camel-local-store.c:175
-msgid "Local stores do not have an inbox"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:185
-#, c-format
-msgid "Local mail file %s"
-msgstr "Fitxer de correu local %s"
-
-#: camel/providers/local/camel-local-store.c:241
-#, fuzzy, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr "No s'ha pogut canviar el nom de la carpeta `%s': %s"
-
-#: camel/providers/local/camel-local-store.c:283
-#, fuzzy, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr "No s'ha pogut suprimir la carpeta `%s': %s"
-
-#: camel/providers/local/camel-local-store.c:293
-#, fuzzy, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr "No s'ha pogut suprimir la carpeta `%s': %s"
-
-#: camel/providers/local/camel-maildir-folder.c:150
-#: camel/providers/local/camel-maildir-folder.c:158
-#: camel/providers/local/camel-maildir-folder.c:169
-#, fuzzy, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr "No es pot afegir cap missatge a la carpeta mh: %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-maildir-folder.c:209
-#: camel/providers/local/camel-maildir-folder.c:217
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#: camel/providers/local/camel-mh-folder.c:194
-#: camel/providers/local/camel-mh-folder.c:202
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-"No es pot recuperar el missatge: %s\n"
-" %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#, fuzzy
-msgid "No such message"
-msgstr "L'ordinador central %s no existeix."
-
-#: camel/providers/local/camel-maildir-folder.c:218
-#: camel/providers/local/camel-mh-folder.c:203
-msgid "Invalid message contents"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:96
-#: camel/providers/local/camel-mh-store.c:90
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-"No s'ha pogut obrir la carpeta `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:100
-#: camel/providers/local/camel-mbox-store.c:101
-#: camel/providers/local/camel-mh-store.c:97
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr "La carpeta `%s' no existeix."
-
-#: camel/providers/local/camel-maildir-store.c:107
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-"No s'ha pogut crear la carpeta `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:122
-#, fuzzy, c-format
-msgid "`%s' is not a maildir directory."
-msgstr "`%s' no és un directori."
-
-#: camel/providers/local/camel-maildir-store.c:151
-#: camel/providers/local/camel-maildir-store.c:188
-#: camel/providers/local/camel-mh-store.c:127
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr "No s'ha pogut suprimir la carpeta `%s': %s"
-
-#: camel/providers/local/camel-maildir-store.c:152
-#, fuzzy
-msgid "not a maildir directory"
-msgstr "Directori de correu local %s"
-
-#: camel/providers/local/camel-mbox-folder.c:152
-#, fuzzy, c-format
-msgid "Cannot create folder lock on %s: %s"
-msgstr "No es pot bifurcar %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:203
-#, fuzzy, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr "No es pot obrir la bústia de correu temporal: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:259
-#, fuzzy, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr "No es pot afegir el missatge al fitxer mbox: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:335
-#: camel/providers/local/camel-mbox-folder.c:367
-#: camel/providers/local/camel-mbox-folder.c:380
-#, fuzzy, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-"No es pot recuperar el missatge: %s\n"
-" %s"
-
-#: camel/providers/local/camel-mbox-folder.c:368
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:381
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:94
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-"No s'ha pogut obrir el fitxer `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:110
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-"No s'ha pogut crear el fitxer `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:119
-#: camel/providers/local/camel-mbox-store.c:146
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr "`%s' no és un fitxer habitual."
-
-#: camel/providers/local/camel-mbox-store.c:138
-#: camel/providers/local/camel-mbox-store.c:161
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-"No s'ha pogut suprimir la carpeta `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr "La carpeta `%s' no és buida. No s'ha suprimit."
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:248
-#, fuzzy
-msgid "Summarising folder"
-msgstr "S'està sincronitzant \"%s\""
-
-#: camel/providers/local/camel-mbox-summary.c:253
-#, fuzzy, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr "No s'ha pogut obrir la carpeta: la llista de missatges era incompleta."
-
-#: camel/providers/local/camel-mbox-summary.c:295
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:370
-#, fuzzy, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr "No es pot bifurcar %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:501
-#: camel/providers/local/camel-mbox-summary.c:702 mail/mail-ops.c:1382
-#, fuzzy
-msgid "Synchronising folder"
-msgstr "S'està sincronitzant \"%s\""
-
-#: camel/providers/local/camel-mbox-summary.c:506
-#: camel/providers/local/camel-mbox-summary.c:707
-#, fuzzy, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr ""
-"No s'ha pogut obrir la carpeta `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-summary.c:523
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr "No es pot obrir la bústia de correu temporal: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:548
-#: camel/providers/local/camel-mbox-summary.c:556
-#: camel/providers/local/camel-mbox-summary.c:745
-#: camel/providers/local/camel-mbox-summary.c:753
-#, fuzzy
-msgid "Summary and folder mismatch, even after a sync"
-msgstr "Incongruència del resum, s'està interrompent la sincronització"
-
-#: camel/providers/local/camel-mbox-summary.c:599
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr "Error en escriure a la bústia de correu temporal: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:616
-#, fuzzy, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr "Error en escriure a la bústia de correu temporal: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:634
-#: camel/providers/local/camel-mbox-summary.c:803
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr "No s'ha pogut tancar la carpeta font %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:643
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr "No es pot tancar la carpeta temporal: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:654
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr "No s'ha pogut canviar el nom de la carpeta: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:878
-#, c-format
-msgid "Unknown error: %s"
-msgstr "Error desconegut: %s"
-
-#: camel/providers/local/camel-mh-folder.c:149
-#: camel/providers/local/camel-mh-folder.c:157
-#, fuzzy, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr "No es pot afegir cap missatge a la carpeta mh: %s"
-
-#: camel/providers/local/camel-mh-store.c:110
-#, c-format
-msgid "`%s' is not a directory."
-msgstr "`%s' no és un directori."
-
-#: camel/providers/nntp/camel-nntp-auth.c:45
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr "Si us plau, introduïu la contrasenya NNTP per a %s@%s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:66
-msgid "Server rejected username"
-msgstr "El servidor ha rebutjat el nom d'usuari"
-
-#: camel/providers/nntp/camel-nntp-auth.c:72
-msgid "Failed to send username to server"
-msgstr "No s'ha pogut enviar el nom d'usuari al servidor"
-
-#: camel/providers/nntp/camel-nntp-auth.c:81
-msgid "Server rejected username/password"
-msgstr "El servidor ha rebutjat el nom d'usuari/la contrasenya"
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr "No s'ha trobat el missatge %s."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr "No s'ha pogut aconseguir la llista de grups del servidor"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr "No es pot carregar el fitxer de llista de grups per a %s: %s"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr "No es pot desar el fitxer de llista de grups per a %s: %s"
-
-#: camel/providers/nntp/camel-nntp-provider.c:42
-msgid "USENET news"
-msgstr "Notícies d'USENET"
-
-#: camel/providers/nntp/camel-nntp-provider.c:44
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr "Proveïdor per llegir i publicar als grups de notícies d'USENET."
-
-#: camel/providers/nntp/camel-nntp-store.c:226
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr "No s'ha pogut obrir el directori per al servidor de notícies: %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:288
-#, c-format
-msgid "USENET News via %s"
-msgstr "Notícies d'USENET mitjançant %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:295
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-"Aquesta opció us autentica al servidor NNTP mitjançant una contrasenya en "
-"text net"
-
-#: camel/providers/nntp/camel-nntp-store.c:327
-#: camel/providers/nntp/camel-nntp-store.c:490
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr "No es pot obrir o crear el fitxer .newsrc per a %s: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-#, fuzzy
-msgid "Retrieving POP summary"
-msgstr "S'estan recuperant els missatges : %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:192
-msgid "Could not open folder: message listing was incomplete."
-msgstr "No s'ha pogut obrir la carpeta: la llista de missatges era incompleta."
-
-#: camel/providers/pop3/camel-pop3-folder.c:285
-#, c-format
-msgid "No message with uid %s"
-msgstr "No hi ha cap missatge amb l'uid %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:289
-#, fuzzy, c-format
-msgid "Retrieving POP message %d"
-msgstr "S'estan recuperant els missatges : %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:307
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr "No s'ha pogut recuperar el missatge %s del servidor POP: %s"
-
-#: camel/providers/pop3/camel-pop3-provider.c:37
-#, fuzzy
-msgid "Message storage"
-msgstr "Cos del missatge"
-
-#: camel/providers/pop3/camel-pop3-provider.c:39
-#, fuzzy
-msgid "Leave messages on server"
-msgstr "No suprimeixis els missatges del servidor"
-
-#: camel/providers/pop3/camel-pop3-provider.c:41
-#, fuzzy, c-format
-msgid "Delete after %s day(s)"
-msgstr "Suprimeix la tasca"
-
-#: camel/providers/pop3/camel-pop3-provider.c:48 mail/mail-config.glade.h:42
-msgid "POP"
-msgstr "POP"
-
-#: camel/providers/pop3/camel-pop3-provider.c:50
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-"Per connectar als servidors POP. El protocol POP també es pot utilitzar per "
-"recuperar correu des de determinats proveïdors de correu web i sistemes "
-"propietaris de correu."
-
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-"Aquesta opció us connectarà al sevidor POP mitjançant una contrasenya en "
-"text net. És l'única suportada per molts servidors POP."
-
-#: camel/providers/pop3/camel-pop3-provider.c:79
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-"Aquesta opció us connectarà al servidor POP utilitzant una contrasenya "
-"xifrada mitjançant el protocol APOP. Això no funcionarà per a tots els "
-"usuaris, fins i tot en servidors que diuen que ho suporten."
-
-#: camel/providers/pop3/camel-pop3-provider.c:91
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-"Això us connectarà al servidor POP i utilitzarà el Kerberos 4 per "
-"autenticar-vos-hi."
-
-#: camel/providers/pop3/camel-pop3-store.c:207
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr "No se us ha pogut autenticar al servidor KPOP: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:319
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr "No s'ha pogut connectar al servidor POP en %s."
-
-#: camel/providers/pop3/camel-pop3-store.c:358
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr "%sSi us plau, introduïu la contrasenya POP3 per a %s@%s"
-
-#: camel/providers/pop3/camel-pop3-store.c:377
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-"No es pot connectar al servidor POP.\n"
-"Error en enviar el nom d'usuari: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:380
-#: camel/providers/pop3/camel-pop3-store.c:417
-msgid "(Unknown)"
-msgstr "(Desconegut)"
-
-#: camel/providers/pop3/camel-pop3-store.c:407
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-"No es pot connectar al servidor POP.\n"
-"No hi ha suport per al mecanisme d'autenticació sol·licitat."
-
-#: camel/providers/pop3/camel-pop3-store.c:415
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-"No es pot connectar al servidor POP.\n"
-"Error en enviar la contrasenya: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:483
-#, c-format
-msgid "No such folder `%s'."
-msgstr "La carpeta `%s' no existeix."
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:37
-#: mail/mail-config.glade.h:57
-msgid "Sendmail"
-msgstr "Sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:39
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-"Per lliurar correu transferint-lo al programa \"sendmail\" en el sistema "
-"local."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:107
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr ""
-"No s'ha pogut crear el conducte al sendmail: %s: no s'ha enviat el correu"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:124
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr "No s'ha pogut bifurcar el sendmail: %s: no s'ha enviat el correu"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:150
-#, c-format
-msgid "Could not send message: %s"
-msgstr "No s'ha pogut enviar el missatge: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:163
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr "El sendmail ha acabat amb el senyal %s: no s'ha enviat el correu."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:170
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr "No s'ha pogut executar %s: no s'ha enviat el correu."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:175
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr "El sendmail ha acabat amb l'estat %d: no s'ha enviat el correu."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:194
-#, fuzzy
-msgid "Could not find 'From' address in message"
-msgstr "No s'ha pogut trobar el cos del missatge en la resposta al FETCH."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "sendmail"
-msgstr "sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:249
-msgid "Mail delivery via the sendmail program"
-msgstr "Lliurament de correu mitjançant el programa sendmail"
-
-#: camel/providers/smtp/camel-smtp-provider.c:38 mail/mail-config.glade.h:52
-msgid "SMTP"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-provider.c:40
-#, fuzzy
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr ""
-"Per al lliurament de correu mitjançant la connexió a un concentrador de "
-"correu utilitzant SMTP."
-
-#: camel/providers/smtp/camel-smtp-transport.c:165
-msgid "Syntax error, command unrecognized"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:167
-msgid "Syntax error in parameters or arguments"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:169
-msgid "Command not implemented"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:171
-msgid "Command parameter not implemented"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:173
-msgid "System status, or system help reply"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:175
-#, fuzzy
-msgid "Help message"
-msgstr "Mou el missatge"
-
-#: camel/providers/smtp/camel-smtp-transport.c:177
-#, fuzzy
-msgid "Service ready"
-msgstr "Amaga"
-
-#: camel/providers/smtp/camel-smtp-transport.c:179
-msgid "Service closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:181
-msgid "Service not available, closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:183
-msgid "Requested mail action okay, completed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:185
-msgid "User not local; will forward to <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:187
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:189
-msgid "Requested action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:191
-msgid "Requested action aborted: error in processing"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:193
-msgid "User not local; please try <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:195
-msgid "Requested action not taken: insufficient system storage"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:197
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:199
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:201
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:203
-msgid "Transaction failed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:207
-#, fuzzy
-msgid "A password transition is needed"
-msgstr "No s'ha indicat cap contrasenya."
-
-#: camel/providers/smtp/camel-smtp-transport.c:209
-msgid "Authentication mechanism is too weak"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:211
-#, fuzzy
-msgid "Encryption required for requested authentication mechanism"
-msgstr ""
-"No es pot connectar al servidor POP.\n"
-"No hi ha suport per al mecanisme d'autenticació sol·licitat."
-
-#: camel/providers/smtp/camel-smtp-transport.c:213
-#, fuzzy
-msgid "Temporary authentication failure"
-msgstr "Autenticació:"
-
-#: camel/providers/smtp/camel-smtp-transport.c:215
-#, fuzzy
-msgid "Authentication required"
-msgstr "Autenticació:"
-
-#: camel/providers/smtp/camel-smtp-transport.c:305
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:348
-#, fuzzy, c-format
-msgid "SMTP server %s does not support requested authentication type %s"
-msgstr ""
-"No es pot connectar al servidor POP.\n"
-"No hi ha suport per al mecanisme d'autenticació sol·licitat."
-
-#: camel/providers/smtp/camel-smtp-transport.c:388
-#, fuzzy, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr "%sSi us plau, introduïu la contrasenya IMAP per a %s@%s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:411
-#, fuzzy, c-format
-msgid ""
-"Unable to authenticate to SMTP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"No es pot autenticar davant del servidor IMAP.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:527
-#, fuzzy, c-format
-msgid "SMTP server %s"
-msgstr "Servidor %s %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:529
-#, fuzzy, c-format
-msgid "SMTP mail delivery via %s"
-msgstr "Lliurament de correu mitjançant el programa sendmail"
-
-#: camel/providers/smtp/camel-smtp-transport.c:554
-msgid "Cannot send message: sender address not defined."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:561
-msgid "Cannot send message: sender address not valid."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:575
-msgid "Cannot send message: no recipients defined."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:669
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:688
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:721
-msgid "Error creating SASL authentication object."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:736
-#: camel/providers/smtp/camel-smtp-transport.c:748
-#, fuzzy, c-format
-msgid "AUTH request timed out: %s"
-msgstr "No s'ha pogut executar %s: no s'ha enviat el correu."
-
-#: camel/providers/smtp/camel-smtp-transport.c:798
-#, fuzzy
-msgid "Bad authentication response from server.\n"
-msgstr "Resposta inesperada del servidor IMAP: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:824
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:843
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:868
-#, fuzzy, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr ""
-"No s'ha pogut crear el conducte al sendmail: %s: no s'ha enviat el correu"
-
-#: camel/providers/smtp/camel-smtp-transport.c:887
-#, fuzzy, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr "No s'ha pogut executar %s: no s'ha enviat el correu."
-
-#: camel/providers/smtp/camel-smtp-transport.c:918
-#, fuzzy, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr "No s'ha pogut executar %s: no s'ha enviat el correu."
-
-#: camel/providers/smtp/camel-smtp-transport.c:937
-#, fuzzy, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr "No s'ha pogut bifurcar el sendmail: %s: no s'ha enviat el correu"
-
-#: camel/providers/smtp/camel-smtp-transport.c:952
-#: camel/providers/smtp/camel-smtp-transport.c:970
-#, fuzzy, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr "El sendmail ha acabat amb el senyal %s: no s'ha enviat el correu."
-
-#: camel/providers/smtp/camel-smtp-transport.c:989
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1013
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1032
-#, fuzzy, c-format
-msgid "RSET response error: %s"
-msgstr "Error desconegut: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1055
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1074
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:95
-msgid "1 byte"
-msgstr "1 octet"
-
-#: composer/e-msg-composer-attachment-bar.c:97
-#, c-format
-msgid "%u bytes"
-msgstr "%u octets"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fK"
-
-#: composer/e-msg-composer-attachment-bar.c:108
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fM"
-
-#: composer/e-msg-composer-attachment-bar.c:112
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fG"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:332 mail/mail-display.c:120
-msgid "attachment"
-msgstr "adjunció"
-
-#: composer/e-msg-composer-attachment-bar.c:421
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr "Adjunta un fitxer"
-
-#: composer/e-msg-composer-attachment-bar.c:469
-msgid "Remove selected items from the attachment list"
-msgstr "Elimina els elements seleccionats de la llista d'adjuncions"
-
-#: composer/e-msg-composer-attachment-bar.c:500
-msgid "Add attachment..."
-msgstr "Afegeix una adjunció..."
-
-#: composer/e-msg-composer-attachment-bar.c:501
-msgid "Attach a file to the message"
-msgstr "Adjunta un fitxer al missatge"
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/message-list.c:1052
-#, fuzzy
-msgid "Attachment"
-msgstr "adjunció"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr "Propietats de l'adjunció"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr "Nom del fitxer:"
-
-#: composer/e-msg-composer-attachment.glade.h:5
-#, fuzzy
-msgid "Inline attachment"
-msgstr "adjunció"
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr "Tipus de MIME:"
-
-#: composer/e-msg-composer-attachment.glade.h:7
-#, fuzzy
-msgid "Send as:"
-msgstr "Envia \"%s\""
-
-#: composer/e-msg-composer-hdrs.c:321
-msgid "Click here for the address book"
-msgstr "Feu clic aquí per a la llibreta d'adreces"
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:352 mail/mail-format.c:715
-msgid "From:"
-msgstr "De:"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:358 mail/mail-format.c:717
-#, fuzzy
-msgid "Reply-To:"
-msgstr "Respon"
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:369 mail/mail-format.c:639
-msgid "Subject:"
-msgstr "Assumpte:"
-
-#: composer/e-msg-composer-hdrs.c:383 mail/mail-format.c:719
-msgid "To:"
-msgstr "Per a:"
-
-#: composer/e-msg-composer-hdrs.c:384
-msgid "Enter the recipients of the message"
-msgstr "Introduïu els destinataris del missatge"
-
-#: composer/e-msg-composer-hdrs.c:387 mail/mail-format.c:721
-msgid "Cc:"
-msgstr "Cc:"
-
-#: composer/e-msg-composer-hdrs.c:388
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "Întroduïu les adreces que rebran una còpia del missatge"
-
-#: composer/e-msg-composer-hdrs.c:391
-msgid "Bcc:"
-msgstr "Bcc:"
-
-#: composer/e-msg-composer-hdrs.c:392
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"introduïu les adreces que rebran una còpia del missatge sense aparèixer a la "
-"llista de destinataris del missatge."
-
-#: composer/e-msg-composer.c:528
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-"No s'ha pogut obrir el fitxer de signatura %s:\n"
-"%s"
-
-#: composer/e-msg-composer.c:716
-msgid "Save as..."
-msgstr "Anomena i desa..."
-
-#: composer/e-msg-composer.c:727
-#, c-format
-msgid "Error saving file: %s"
-msgstr "Error en desar el fitxer: %s"
-
-#: composer/e-msg-composer.c:747
-#, c-format
-msgid "Error loading file: %s"
-msgstr "Error en carregar el fitxer: %s"
-
-#: composer/e-msg-composer.c:819
-msgid ""
-"Unable to open the drafts folder for this account.\n"
-"Would you like to use the default drafts folder?"
-msgstr ""
-
-#: composer/e-msg-composer.c:877 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:206
-msgid "Evolution"
-msgstr "Evolution"
-
-#: composer/e-msg-composer.c:883
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-"Aquest missatge no s'ha enviat.\n"
-"\n"
-"Voleu desar-ne els canvis?"
-
-#: composer/e-msg-composer.c:908
-msgid "Open file"
-msgstr "Obre un fitxer"
-
-#: composer/e-msg-composer.c:1034
-msgid "That file does not exist."
-msgstr "Aquest fitxer no existeix."
-
-#: composer/e-msg-composer.c:1044
-msgid "That is not a regular file."
-msgstr "Aquest fitxer no és habitual."
-
-#: composer/e-msg-composer.c:1054
-msgid "That file exists but is not readable."
-msgstr "Aquest fitxer existeix però no es pot llegir."
-
-#: composer/e-msg-composer.c:1064
-msgid "That file appeared accesible but open(2) failed."
-msgstr "Aquest fitxer sembla accessible però n'ha fallat l'obertura(2)."
-
-#: composer/e-msg-composer.c:1086
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-"El fitxer és molt gran (més de 100 kB).\n"
-"Segur que voleu inserir-lo?"
-
-#: composer/e-msg-composer.c:1107
-msgid "An error occurred while reading the file."
-msgstr "S'ha produït un error en llegir el fitxer."
-
-#: composer/e-msg-composer.c:1408 composer/e-msg-composer.c:1740
-msgid "Compose a message"
-msgstr "Redacta un missatge"
-
-#: composer/e-msg-composer.c:1829
-msgid "Could not create composer window."
-msgstr "No s'ha pogut crear la finestra del redactor."
-
-#: composer/evolution-composer.c:355
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-
-#: composer/evolution-composer.c:370
-#, fuzzy
-msgid "Cannot initialize Evolution's composer."
-msgstr "No es pot inicialitzar el component de correu de l'Evolution."
-
-#: data/evolution.desktop.in.h:2
-#, fuzzy
-msgid "The Evolution groupware suite"
-msgstr "Barra de _dreceres de l'Evolution"
-
-#: data/evolution.keys.in.h:1
-#, fuzzy
-msgid "address card"
-msgstr "Adreça"
-
-#: data/evolution.keys.in.h:2
-#, fuzzy
-msgid "calendar information"
-msgstr "Cap informació"
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:69 e-util/e-time-utils.c:117
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:477
-#: widgets/misc/e-dateedit.c:1282 widgets/misc/e-dateedit.c:1463
-msgid "%m/%d/%Y"
-msgstr "%d/%m/%Y"
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:87 e-util/e-time-utils.c:198
-msgid "%I:%M:%S %p%n"
-msgstr "%I:%M:%S %p%n"
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:90 e-util/e-time-utils.c:201
-msgid "%H:%M:%S%n"
-msgstr "%H:%M:%S%n"
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:94 e-util/e-time-utils.c:205
-msgid "%I:%M %p%n"
-msgstr "%I:%M %p%n"
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:97 e-util/e-time-utils.c:208
-msgid "%H:%M%n"
-msgstr "%H:%M%n"
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:269
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:473
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2503
-msgid "%a %m/%d/%Y"
-msgstr "%a %d/%m/%Y"
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:274
-#, fuzzy
-msgid "%a %m/%d/%Y %H:%M"
-msgstr "%a %d/%m/%Y %H:%M:%S"
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:283
-#, fuzzy
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr "%a %d/%m/%Y %I:%M:%S %p"
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:312 widgets/misc/e-dateedit.c:1257
-#: widgets/misc/e-dateedit.c:1316 widgets/misc/e-dateedit.c:1495
-msgid "%H:%M"
-msgstr "%H:%M"
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:315
-#, fuzzy
-msgid "%H:%M:%S"
-msgstr "%H:%M:%S%n"
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:320 widgets/misc/e-dateedit.c:1260
-#: widgets/misc/e-dateedit.c:1319 widgets/misc/e-dateedit.c:1498
-msgid "%I:%M %p"
-msgstr "%I:%M %p"
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:323
-#, fuzzy
-msgid "%I:%M:%S %p"
-msgstr "%I:%M:%S %p%n"
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-#, fuzzy
-msgid "Evolution component for the executive summary."
-msgstr ""
-"No es pot inicialitzar el component de resum del correu de l'Evolution."
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-#, fuzzy
-msgid "Factory for the Evolution executive summary component."
-msgstr "Utilitat de configuració per al conducte de l'agenda de l'Evolution.\n"
-
-#: executive-summary/component/component-factory.c:152
-#, fuzzy
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr "No es pot inicialitzar el component de correu de l'Evolution."
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:71
-#, fuzzy, c-format
-msgid "Send an email to %s"
-msgstr "S'està recollint el correu des de %s"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:75
-#, fuzzy, c-format
-msgid "Close %s"
-msgstr "Tanca"
-
-#: executive-summary/component/e-summary-url.c:76
-#, fuzzy, c-format
-msgid "Move %s to the left"
-msgstr "Mou a la carpeta"
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:78
-#, fuzzy, c-format
-msgid "Move %s into the previous row"
-msgstr "Vés a l'element anterior"
-
-#: executive-summary/component/e-summary-url.c:79
-#, fuzzy, c-format
-msgid "Move %s into the next row"
-msgstr "Vés a l'element següent"
-
-#: executive-summary/component/e-summary-url.c:80
-#, fuzzy, c-format
-msgid "Configure %s"
-msgstr "_Configura la carpeta"
-
-#: executive-summary/component/e-summary.c:924
-#, fuzzy, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"No s'ha pogut obrir el fitxer %s:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:938
-#, fuzzy, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr "Error en llegir el fitxer de correu: %s"
-
-#: executive-summary/component/e-summary.c:956
-msgid "File does not have a place for the services.\n"
-msgstr ""
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr ""
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr ""
-
-#: executive-summary/component/main.c:62
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-#, fuzzy
-msgid "RDF Summary"
-msgstr "R_esum"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-#, fuzzy
-msgid "Factory for the test bonobo component."
-msgstr "Utilitat de configuració per al conducte de l'agenda de l'Evolution.\n"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-#, fuzzy
-msgid "Factory for the test component."
-msgstr "Utilitat de configuració per al conducte de l'agenda de l'Evolution.\n"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:512
-#: executive-summary/test-service/rdf-summary.c:549
-#: executive-summary/test-service/rdf-summary.c:594
-#: widgets/misc/e-messagebox.c:166
-#, fuzzy
-msgid "Error"
-msgstr "Cap error"
-
-#: executive-summary/test-service/rdf-summary.c:768
-msgid "Update automatically"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:778
-msgid "Update now"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:788
-#, fuzzy
-msgid "Update every "
-msgstr "_Actualitza lliure/ocupat"
-
-#: executive-summary/test-service/rdf-summary.c:796
-#: filter/filter-datespec.c:83
-msgid "minutes"
-msgstr "minuts"
-
-#: filter/filter-datespec.c:78
-msgid "year"
-msgstr "any"
-
-#: filter/filter-datespec.c:78
-msgid "years"
-msgstr "anys"
-
-#: filter/filter-datespec.c:79
-msgid "month"
-msgstr "mes"
-
-#: filter/filter-datespec.c:79
-msgid "months"
-msgstr "mesos"
-
-#: filter/filter-datespec.c:80
-msgid "week"
-msgstr "setmana"
-
-#: filter/filter-datespec.c:80
-msgid "weeks"
-msgstr "setmanes"
-
-#: filter/filter-datespec.c:81
-msgid "days"
-msgstr "dies"
-
-#: filter/filter-datespec.c:82
-msgid "hour"
-msgstr "hora"
-
-#: filter/filter-datespec.c:82
-msgid "hours"
-msgstr "hores"
-
-#: filter/filter-datespec.c:83
-msgid "minute"
-msgstr "minut"
-
-#: filter/filter-datespec.c:84
-msgid "second"
-msgstr "segon"
-
-#: filter/filter-datespec.c:84
-msgid "seconds"
-msgstr "segons"
-
-#: filter/filter-datespec.c:199
-msgid "Oops. You have forgotten to choose a date."
-msgstr ""
-
-#: filter/filter-datespec.c:201
-msgid "Oops. You have chosen an invalid date."
-msgstr ""
-
-#: filter/filter-datespec.c:275
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-"La data del missatge es compararà amb l'hora,\n"
-"sigui quina sigui, en què s'executi el filtre\n"
-"o s'obri la vfolder."
-
-#: filter/filter-datespec.c:298
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-"La data del missatge es compararà amb l'hora\n"
-"que indiqueu aquí."
-
-#: filter/filter-datespec.c:338
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-"La data del missatge es compararà amb una hora\n"
-"relativa a quan s'executi el filtre;\n"
-"\"fa una setmana\", per exemple."
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:373
-msgid "the current time"
-msgstr "l'hora actual"
-
-#: filter/filter-datespec.c:373
-msgid "a time you specify"
-msgstr "una hora que indiqueu"
-
-#: filter/filter-datespec.c:374
-msgid "a time relative to the current time"
-msgstr "una hora relativa a l'actual"
-
-#. The label
-#: filter/filter-datespec.c:432
-msgid "Compare against"
-msgstr "Compara-la amb"
-
-#: filter/filter-datespec.c:549 filter/filter-datespec.c:709
-msgid "now"
-msgstr "ara"
-
-#: filter/filter-datespec.c:706
-msgid "<click here to select a date>"
-msgstr "<feu clic aquí per seleccionar una data>"
-
-#: filter/filter-editor.c:132 filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr "Regles del filtre"
-
-#. and now for the action area
-#: filter/filter-filter.c:453
-msgid "Then"
-msgstr "Aleshores"
-
-#: filter/filter-filter.c:467
-msgid "Add action"
-msgstr "Afegeix una acció"
-
-#: filter/filter-folder.c:147
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-
-#: filter/filter-folder.c:222 filter/vfolder-rule.c:285
-#: mail/mail-account-gui.c:682
-msgid "Select Folder"
-msgstr "Seleccioneu una carpeta"
-
-#: filter/filter-folder.c:247
-msgid "Enter folder URI"
-msgstr "Introduïu l'URI de la carpeta"
-
-#: filter/filter-folder.c:293
-msgid "<click here to select a folder>"
-msgstr "<feu clic aquí per seleccionar una carpeta>"
-
-#: filter/filter-input.c:194
-#, fuzzy, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-"Error en preparar-se per a %s:\n"
-"%s"
-
-#: filter/filter-part.c:475
-msgid "Test"
-msgstr "Comprova"
-
-#: filter/filter-rule.c:626
-msgid "Rule name: "
-msgstr "Nom de la regla: "
-
-#: filter/filter-rule.c:630
-msgid "Untitled"
-msgstr "Sense títol"
-
-#: filter/filter-rule.c:646
-msgid "If"
-msgstr "Si"
-
-#: filter/filter-rule.c:664
-msgid "Execute actions"
-msgstr "Executa les accions"
-
-#: filter/filter-rule.c:668
-msgid "if all criteria are met"
-msgstr "si es compleixen tots els criteris"
-
-#: filter/filter-rule.c:673
-msgid "if any criteria are met"
-msgstr "si es compleix qualsevol criteri"
-
-#: filter/filter-rule.c:684
-msgid "Add criterion"
-msgstr "Afegeix un criteri"
-
-#: filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr "Filtres d'edició"
-
-#: filter/filter.glade.h:5
-msgid "Edit VFolders"
-msgstr "Edita les VFolders"
-
-#: filter/filter.glade.h:7
-#, fuzzy
-msgid "Incoming"
-msgstr ""
-"Entrant\n"
-"Sortint\n"
-
-#: filter/filter.glade.h:8
-#, fuzzy
-msgid "Outgoing"
-msgstr "Contorn:"
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:130
-msgid "Virtual Folders"
-msgstr "Carpetes virtuals"
-
-#: filter/filter.glade.h:11
-#, fuzzy
-msgid "specific folders only"
-msgstr "No s'ha trobat la carpeta indicada"
-
-#: filter/filter.glade.h:12
-msgid "vFolder Sources"
-msgstr "Fonts de la vFolder"
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr ""
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr ""
-
-#: filter/filter.glade.h:15
-#, fuzzy
-msgid "with all local folders"
-msgstr "Crea una carpeta nova"
-
-#. Automatically generated. Do not edit.
-#: filter/libfilter-i18n.h:2
-msgid "Assign Colour"
-msgstr "Assigna un color"
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Score"
-msgstr "Assigna una puntuació"
-
-#: filter/libfilter-i18n.h:4
-#, fuzzy
-msgid "Attachments"
-msgstr "adjunció"
-
-#: filter/libfilter-i18n.h:5
-msgid "Copy to Folder"
-msgstr "Copia a la carpeta"
-
-#: filter/libfilter-i18n.h:6
-msgid "Date received"
-msgstr "Data de recepció"
-
-#: filter/libfilter-i18n.h:7
-msgid "Date sent"
-msgstr "Data d'enviament"
-
-#: filter/libfilter-i18n.h:9
-#, fuzzy
-msgid "Deleted"
-msgstr "Suprimeix"
-
-#: filter/libfilter-i18n.h:10
-#, fuzzy
-msgid "Do Not Exist"
-msgstr "no existeix"
-
-#: filter/libfilter-i18n.h:11
-#, fuzzy
-msgid "Draft"
-msgstr "Data de venciment"
-
-#: filter/libfilter-i18n.h:12
-#, fuzzy
-msgid "Exist"
-msgstr "S_urt"
-
-#: filter/libfilter-i18n.h:13
-msgid "Expression"
-msgstr "Expressió"
-
-#: filter/libfilter-i18n.h:14
-msgid "Forward to Address"
-msgstr "Reenvia-ho a l'adreça"
-
-#: filter/libfilter-i18n.h:15
-msgid "Important"
-msgstr ""
-
-#: filter/libfilter-i18n.h:16
-#, fuzzy
-msgid "Is Not"
-msgstr "no és"
-
-#: filter/libfilter-i18n.h:17
-#, fuzzy
-msgid "Is"
-msgstr "Si"
-
-#: filter/libfilter-i18n.h:18
-#, fuzzy
-msgid "Mailing list"
-msgstr "Llista de correu %s"
-
-#: filter/libfilter-i18n.h:19
-msgid "Message Body"
-msgstr "Cos del missatge"
-
-#: filter/libfilter-i18n.h:20
-#, fuzzy
-msgid "Message Header"
-msgstr "Cos del missatge"
-
-#: filter/libfilter-i18n.h:21
-msgid "Message was received"
-msgstr "S'ha rebut el missatge"
-
-#: filter/libfilter-i18n.h:22
-msgid "Message was sent"
-msgstr "S'ha enviat el missatge"
-
-#: filter/libfilter-i18n.h:23
-msgid "Move to Folder"
-msgstr "Mou a la carpeta"
-
-#: filter/libfilter-i18n.h:24
-#, fuzzy
-msgid "Read"
-msgstr "Ràdio"
-
-#: filter/libfilter-i18n.h:25
-msgid "Recipients"
-msgstr "Destinataris"
-
-#: filter/libfilter-i18n.h:26
-msgid "Regex Match"
-msgstr ""
-
-#: filter/libfilter-i18n.h:27
-#, fuzzy
-msgid "Replied to"
-msgstr "Respon a tots"
-
-#: filter/libfilter-i18n.h:28 filter/score-rule.c:203 filter/score-rule.c:205
-#: mail/message-list.c:1052
-msgid "Score"
-msgstr "Puntuació"
-
-#: filter/libfilter-i18n.h:29
-msgid "Sender"
-msgstr "Remitent"
-
-#: filter/libfilter-i18n.h:30
-#, fuzzy
-msgid "Set Status"
-msgstr "Estat de la connexió"
-
-#: filter/libfilter-i18n.h:31
-#, fuzzy
-msgid "Source Account"
-msgstr "conté"
-
-#: filter/libfilter-i18n.h:32
-msgid "Specific header"
-msgstr "Especifiqueu la capçalera"
-
-#: filter/libfilter-i18n.h:34
-msgid "Stop Processing"
-msgstr "Atura el processament"
-
-#: filter/libfilter-i18n.h:35 mail/message-list.c:1053
-msgid "Subject"
-msgstr "Assumpte"
-
-#: filter/libfilter-i18n.h:38
-msgid "contains"
-msgstr "conté"
-
-#: filter/libfilter-i18n.h:39
-msgid "does not contain"
-msgstr "no conté"
-
-#: filter/libfilter-i18n.h:40
-msgid "does not end with"
-msgstr "no acaba amb "
-
-#: filter/libfilter-i18n.h:41
-msgid "does not exist"
-msgstr "no existeix"
-
-#: filter/libfilter-i18n.h:42
-#, fuzzy
-msgid "does not sound like"
-msgstr "no acaba amb "
-
-#: filter/libfilter-i18n.h:43
-msgid "does not start with"
-msgstr "no comença per"
-
-#: filter/libfilter-i18n.h:44
-msgid "ends with"
-msgstr "acaba amb"
-
-#: filter/libfilter-i18n.h:45
-msgid "exists"
-msgstr "existeix"
-
-#: filter/libfilter-i18n.h:46
-msgid "is greater than"
-msgstr "és més gran que"
-
-#: filter/libfilter-i18n.h:47
-msgid "is less than"
-msgstr "és més petit que"
-
-#: filter/libfilter-i18n.h:48
-msgid "is not"
-msgstr "no és"
-
-#: filter/libfilter-i18n.h:49
-msgid "is"
-msgstr "és"
-
-#: filter/libfilter-i18n.h:50
-msgid "on or after"
-msgstr "el o després del"
-
-#: filter/libfilter-i18n.h:51
-msgid "on or before"
-msgstr "el o abans del"
-
-#: filter/libfilter-i18n.h:52
-msgid "sounds like"
-msgstr ""
-
-#: filter/libfilter-i18n.h:53
-msgid "starts with"
-msgstr "comença per"
-
-#: filter/libfilter-i18n.h:54
-msgid "was after"
-msgstr "ha estat després de"
-
-#: filter/libfilter-i18n.h:55
-msgid "was before"
-msgstr "ha estat abans de"
-
-#: filter/score-editor.c:130
-#, fuzzy
-msgid "Score Rules"
-msgstr "Edita la regla de puntuació"
-
-#: mail/component-factory.c:329
-msgid "Cannot initialize Evolution's mail component."
-msgstr "No es pot inicialitzar el component de correu de l'Evolution."
-
-#: mail/component-factory.c:402
-msgid "Cannot register storage with shell"
-msgstr "No es pot registrar l'emmagatzemament amb l'intèrpret d'ordres"
-
-#: mail/folder-browser-factory.c:209
-#, fuzzy, c-format
-msgid "Properties for \"%s\""
-msgstr "Propietats..."
-
-#: mail/folder-browser-factory.c:211 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-#, fuzzy
-msgid "Properties"
-msgstr "Propietats..."
-
-#: mail/folder-browser.c:225
-#, fuzzy
-msgid "Store search as vFolder"
-msgstr "Seleccioneu una carpeta"
-
-#: mail/folder-browser.c:533
-msgid "VFolder on Subject"
-msgstr "VFolder sobre l'assumpte"
-
-#: mail/folder-browser.c:536
-msgid "VFolder on Sender"
-msgstr "VFolder sobre el remitent"
-
-#: mail/folder-browser.c:539
-msgid "VFolder on Recipients"
-msgstr "VFolder sobre els destinataris"
-
-#: mail/folder-browser.c:542 mail/folder-browser.c:733
-#, fuzzy
-msgid "VFolder on Mailing List"
-msgstr "Filtre sobre la llista de correu"
-
-#: mail/folder-browser.c:548
-msgid "Filter on Subject"
-msgstr "Filtre sobre l'assumpte"
-
-#: mail/folder-browser.c:551
-msgid "Filter on Sender"
-msgstr "Filtre sobre el remitent"
-
-#: mail/folder-browser.c:554
-msgid "Filter on Recipients"
-msgstr "Filtre sobre els destinataris"
-
-#: mail/folder-browser.c:557 mail/folder-browser.c:732
-msgid "Filter on Mailing List"
-msgstr "Filtre sobre la llista de correu"
-
-#: mail/folder-browser.c:568
-#, fuzzy
-msgid "Resend"
-msgstr "segon"
-
-#: mail/folder-browser.c:570
-#, fuzzy
-msgid "Save As..."
-msgstr "Anomena i desa..."
-
-#: mail/folder-browser.c:577
-msgid "Reply to Sender"
-msgstr "Respon al remitent"
-
-#: mail/folder-browser.c:579 mail/mail-view.c:147 ui/evolution-mail.xml.h:60
-msgid "Reply to All"
-msgstr "Respon a tots"
-
-#: mail/folder-browser.c:581 mail/mail-view.c:150 ui/evolution-mail.xml.h:24
-msgid "Forward"
-msgstr "Reenvia"
-
-#: mail/folder-browser.c:583 ui/evolution-mail.xml.h:26
-#, fuzzy
-msgid "Forward inline"
-msgstr "Vés endavant en el temps"
-
-#: mail/folder-browser.c:586
-#, fuzzy
-msgid "Mark as Read"
-msgstr "Mar_ca'l com a llegit"
-
-#: mail/folder-browser.c:588
-#, fuzzy
-msgid "Mark as Unread"
-msgstr "Marca'l com a per _llegir"
-
-#: mail/folder-browser.c:593
-#, fuzzy
-msgid "Move to Folder..."
-msgstr "Mou a la carpeta"
-
-#: mail/folder-browser.c:595
-#, fuzzy
-msgid "Copy to Folder..."
-msgstr "Copia a la carpeta"
-
-#: mail/folder-browser.c:599 ui/evolution-mail.xml.h:81
-#, fuzzy
-msgid "Undelete"
-msgstr "Suprimeix"
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:609 ui/evolution-mail.xml.h:1
-#, fuzzy
-msgid "Apply Filters"
-msgstr "_Aplica els filtres"
-
-#: mail/folder-browser.c:613
-msgid "Create Rule From Message"
-msgstr ""
-
-#: mail/folder-browser.c:735
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr "Filtre sobre la llista de correu (%s)"
-
-#: mail/folder-browser.c:736
-#, fuzzy, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr "Filtre sobre la llista de correu (%s)"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-#, fuzzy
-msgid "Evolution mail composer."
-msgstr "No es pot inicialitzar el component de correu de l'Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-#, fuzzy
-msgid "Evolution mail executive summary component."
-msgstr ""
-"No es pot inicialitzar el component de resum del correu de l'Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-#, fuzzy
-msgid "Evolution mail folder display component."
-msgstr ""
-"No es pot inicialitzar el component de resum del correu de l'Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-#, fuzzy
-msgid "Evolution mail folder factory component."
-msgstr ""
-"No es pot inicialitzar el component de resum del correu de l'Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-#, fuzzy
-msgid "Factory for the Evolution composer."
-msgstr "Utilitat de configuració per al conducte de l'agenda de l'Evolution.\n"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-#, fuzzy
-msgid "Factory for the Evolution mail component."
-msgstr "Utilitat de configuració per al conducte de l'agenda de l'Evolution.\n"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-#, fuzzy
-msgid "Factory for the Mail Summary component."
-msgstr "Utilitat de configuració per al conducte de l'agenda de l'Evolution.\n"
-
-#: mail/local-config.glade.h:1
-#, fuzzy
-msgid "Current store format:"
-msgstr "No s'ha pogut iniciar el wombat"
-
-#: mail/local-config.glade.h:2
-#, fuzzy
-msgid "Mailbox Format"
-msgstr "Format"
-
-#: mail/local-config.glade.h:3
-#, fuzzy
-msgid "New store format:"
-msgstr "Tipus de font de notícies:"
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-
-#: mail/local-config.glade.h:7
-#, fuzzy
-msgid "maildir"
-msgstr "Adreça electrònica 2"
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr ""
-
-#: mail/local-config.glade.h:9
-#, fuzzy
-msgid "mh"
-msgstr "h"
-
-#: mail/mail-accounts.c:121 mail/mail-accounts.c:165
-#, fuzzy
-msgid " (default)"
-msgstr "Valors predeterminats"
-
-#: mail/mail-accounts.c:197
-#, fuzzy
-msgid "Disable"
-msgstr "Inhabilitat"
-
-#: mail/mail-accounts.c:199 mail/mail-config.glade.h:25
-msgid "Enable"
-msgstr ""
-
-#: mail/mail-accounts.c:280 mail/mail-accounts.c:284
-#, fuzzy
-msgid "Are you sure you want to delete this account?"
-msgstr ""
-"Esteu segur que voleu\n"
-"suprimir aquest contacte?"
-
-#: mail/mail-accounts.c:418 mail/mail-accounts.c:422
-#, fuzzy
-msgid "Are you sure you want to delete this news account?"
-msgstr ""
-"Esteu segur que voleu\n"
-"suprimir aquest contacte?"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:536
-msgid "Evolution Account Manager"
-msgstr ""
-
-#: mail/mail-account-editor.c:105
-msgid "You have not filled in all of the required information."
-msgstr ""
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:173
-#, fuzzy
-msgid "Evolution Account Editor"
-msgstr "Conducte de les coses per fer de l'Evolution"
-
-#: mail/mail-autofilter.c:70
-#, c-format
-msgid "Mail to %s"
-msgstr "Correu per a %s"
-
-#: mail/mail-autofilter.c:213
-#, fuzzy, c-format
-msgid "Subject is %s"
-msgstr "Assumpte"
-
-#: mail/mail-autofilter.c:229
-#, c-format
-msgid "Mail from %s"
-msgstr "Correu de %s"
-
-#: mail/mail-autofilter.c:285
-#, c-format
-msgid "%s mailing list"
-msgstr "Llista de correu %s"
-
-#: mail/mail-autofilter.c:335 mail/mail-autofilter.c:357
-msgid "Add Filter Rule"
-msgstr "Afegeix una regla de filtre"
-
-#: mail/mail-callbacks.c:93
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-"No heu configurat el client de correu.\n"
-"Cal que ho feu abans de poder enviar,\n"
-"rebre o redactar correu.\n"
-"El voleu configurar ara?"
-
-#: mail/mail-callbacks.c:146
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-"Cal que configureu una identitat\n"
-"abans de poder redactar correu."
-
-#: mail/mail-callbacks.c:158
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-"Cal que configureu un transport de correu\n"
-"abans de poder redactar correu."
-
-#: mail/mail-callbacks.c:202
-msgid "You have not set a mail transport method"
-msgstr "No heu definit cap mètode de transport de correu"
-
-#: mail/mail-callbacks.c:235
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-"Aquest missatge no té cap assumpte.\n"
-"Voleu que l'enviï igualment?"
-
-#: mail/mail-callbacks.c:308
-msgid "You must specify recipients in order to send this message."
-msgstr "Cal que indiqueu els destinataris per poder enviar aquest missatge."
-
-#: mail/mail-callbacks.c:351
-#, fuzzy
-msgid "You must configure an account before you can send this email."
-msgstr ""
-"Cal que configureu una identitat\n"
-"abans de poder redactar correu."
-
-#: mail/mail-callbacks.c:591
-#, c-format
-msgid "On %s, %s wrote:\n"
-msgstr ""
-
-#: mail/mail-callbacks.c:773
-#, fuzzy
-msgid "Forwarded message:\n"
-msgstr "Missatge reenviat - %s"
-
-#: mail/mail-callbacks.c:876
-msgid "Move message(s) to"
-msgstr "Mou el(s) missatge(s) cap a"
-
-#: mail/mail-callbacks.c:878
-msgid "Copy message(s) to"
-msgstr "Copia el(s) missatge(s) a"
-
-#: mail/mail-callbacks.c:1019
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-"Només podeu editar els missatges que s'hagin desat\n"
-"a la carpeta Esborranys."
-
-#: mail/mail-callbacks.c:1056
-#, fuzzy
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-"Només podeu editar els missatges que s'hagin desat\n"
-"a la carpeta Esborranys."
-
-#: mail/mail-callbacks.c:1089 mail/mail-display.c:90
-msgid "Overwrite file?"
-msgstr "Voleu sobreescriure el fitxer?"
-
-#: mail/mail-callbacks.c:1093 mail/mail-display.c:94
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-"Ja existeix una fitxer amb aquest nom.\n"
-"El voleu sobreescriure?"
-
-#: mail/mail-callbacks.c:1137
-#, fuzzy
-msgid "Save Message As..."
-msgstr "Anomena i desa..."
-
-#: mail/mail-callbacks.c:1139
-#, fuzzy
-msgid "Save Messages As..."
-msgstr "Anomena i desa..."
-
-#: mail/mail-callbacks.c:1253
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-"Error en carregar la informació del filtre:\n"
-"%s"
-
-#: mail/mail-callbacks.c:1302 ui/evolution-mail.xml.h:51
-msgid "Print Message"
-msgstr "Imprimeix el missatge"
-
-#: mail/mail-callbacks.c:1349
-msgid "Printing of message failed"
-msgstr "Ha fallat la impressió del missatge"
-
-#: mail/mail-config.c:1043 mail/mail-config.c:1046
-#, fuzzy
-msgid "Connecting to server..."
-msgstr "Connexió de prova a \"%s\""
-
-#: mail/mail-config.glade.h:1
-#, fuzzy
-msgid " Check for supported types "
-msgstr "Detecta els tipus suportats..."
-
-#: mail/mail-config.glade.h:2
-#, fuzzy
-msgid " color"
-msgstr "Colors"
-
-#: mail/mail-config.glade.h:3
-#, fuzzy
-msgid "Account"
-msgstr "conté"
-
-#: mail/mail-config.glade.h:4
-#, fuzzy
-msgid "Account Information"
-msgstr "Cap informació"
-
-#: mail/mail-config.glade.h:5
-msgid "Account Management"
-msgstr ""
-
-#: mail/mail-config.glade.h:6
-#, fuzzy
-msgid "Accounts"
-msgstr "conté"
-
-#: mail/mail-config.glade.h:8
-#, fuzzy
-msgid "Authentication"
-msgstr "Autenticació:"
-
-#: mail/mail-config.glade.h:9
-#, fuzzy
-msgid "Authentication Type: "
-msgstr "Autenticació:"
-
-#: mail/mail-config.glade.h:10
-#, fuzzy
-msgid "Automatically check for new mail every"
-msgstr "Comprova si hi ha nou correu"
-
-#: mail/mail-config.glade.h:12
-#, fuzzy
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-"Ja teniu enllestida la configuració del correu.\n"
-"Feu clic a \"Finalitza\" per desar els nous paràmetres"
-
-#: mail/mail-config.glade.h:18
-#, fuzzy
-msgid "De_fault"
-msgstr "Valors predeterminats"
-
-#: mail/mail-config.glade.h:20
-#, fuzzy
-msgid "Done"
-msgstr "Cap"
-
-#: mail/mail-config.glade.h:21
-#, fuzzy
-msgid "Drafts"
-msgstr "Data de venciment"
-
-#: mail/mail-config.glade.h:22
-#, fuzzy
-msgid "Drafts folder:"
-msgstr "Creació d'una nova carpeta"
-
-#: mail/mail-config.glade.h:24
-#, fuzzy
-msgid "Email Address:"
-msgstr "Adreça electrònica:"
-
-#: mail/mail-config.glade.h:26
-#, fuzzy
-msgid "Full Name:"
-msgstr "Nom complet:"
-
-#: mail/mail-config.glade.h:27
-#, fuzzy
-msgid "Highlight citations with "
-msgstr "Ressalta els elemts que vencen avui"
-
-#: mail/mail-config.glade.h:29
-#, fuzzy
-msgid "IMAPv4 "
-msgstr "IMAPv4"
-
-#: mail/mail-config.glade.h:30
-msgid "Identity"
-msgstr "Identitat"
-
-#: mail/mail-config.glade.h:31
-#, fuzzy
-msgid "Kerberos "
-msgstr "Servidor:"
-
-#: mail/mail-config.glade.h:32
-msgid "Mail Configuration"
-msgstr "Configuració del correu"
-
-#: mail/mail-config.glade.h:33
-msgid "Make this my default account"
-msgstr ""
-
-#: mail/mail-config.glade.h:34
-#, fuzzy
-msgid "Mark messages as \"Read\" after:"
-msgstr "Marca el missatge com a vist [ms]: "
-
-#: mail/mail-config.glade.h:36
-#, fuzzy
-msgid "News"
-msgstr "Nou"
-
-#: mail/mail-config.glade.h:38
-#, fuzzy
-msgid "Optional Information"
-msgstr "Cap informació"
-
-#: mail/mail-config.glade.h:39
-msgid "Organization:"
-msgstr "Organització:"
-
-#: mail/mail-config.glade.h:41
-msgid "PGP binary path:"
-msgstr ""
-
-#: mail/mail-config.glade.h:46
-#, fuzzy
-msgid "Qmail maildir "
-msgstr "Adreça electrònica 2"
-
-#: mail/mail-config.glade.h:47
-#, fuzzy
-msgid "Receiving Email"
-msgstr "Sendmail"
-
-#: mail/mail-config.glade.h:48
-#, fuzzy
-msgid "Receiving Mail"
-msgstr "Sendmail"
-
-#: mail/mail-config.glade.h:49
-#, fuzzy
-msgid "Receiving Options"
-msgstr "Data de recepció"
-
-#: mail/mail-config.glade.h:51
-#, fuzzy
-msgid "Required Information"
-msgstr "Cap informació"
-
-#: mail/mail-config.glade.h:53
-msgid "Select PGP binary"
-msgstr ""
-
-#: mail/mail-config.glade.h:54
-#, fuzzy
-msgid "Send mail in HTML format by default."
-msgstr "Envia els missatges en format HTML"
-
-#: mail/mail-config.glade.h:55
-#, fuzzy
-msgid "Sending Email"
-msgstr "Sendmail"
-
-#: mail/mail-config.glade.h:56
-#, fuzzy
-msgid "Sending Mail"
-msgstr "Sendmail"
-
-#: mail/mail-config.glade.h:58
-#, fuzzy
-msgid "Sent"
-msgstr "Vist"
-
-#: mail/mail-config.glade.h:59
-#, fuzzy
-msgid "Sent and Draft Messages"
-msgstr "Agenda"
-
-#: mail/mail-config.glade.h:60
-#, fuzzy
-msgid "Sent messages folder:"
-msgstr "S'estan adjuntant els missatges de la carpeta \"%s\""
-
-#: mail/mail-config.glade.h:61
-#, fuzzy
-msgid "Server Configuration"
-msgstr "Configuració del correu"
-
-#: mail/mail-config.glade.h:62
-#, fuzzy
-msgid "Server Type: "
-msgstr "Servidor:"
-
-#: mail/mail-config.glade.h:63
-msgid "Server requires authentication"
-msgstr ""
-
-#: mail/mail-config.glade.h:64
-msgid "Signature file:"
-msgstr "Fitxer de signatura:"
-
-#: mail/mail-config.glade.h:65
-msgid "Sources"
-msgstr "Fonts"
-
-#: mail/mail-config.glade.h:66
-#, fuzzy
-msgid "Special Folders"
-msgstr "Carpetes virtuals"
-
-#: mail/mail-config.glade.h:67
-msgid "Standard Unix mbox"
-msgstr ""
-
-#: mail/mail-config.glade.h:68
-#, fuzzy
-msgid "Type"
-msgstr "Tipus:"
-
-#: mail/mail-config.glade.h:69
-msgid "Use secure connection (SSL)"
-msgstr ""
-
-#: mail/mail-config.glade.h:70
-msgid "Username:"
-msgstr "Nom d'usuari:"
-
-#: mail/mail-config.glade.h:71
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-
-#: mail/mail-config.glade.h:76 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:43 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:29
-msgid "_Edit"
-msgstr "_Edita"
-
-#: mail/mail-config-druid.c:99
-msgid ""
-"Please enter your name and email address below. The \"optional\" fields "
-"below do not need to be filled in, unless you wish to include this "
-"information in email you send."
-msgstr ""
-
-#: mail/mail-config-druid.c:101
-msgid ""
-"Please enter information about your incoming mail server below. If you don't "
-"know what kind of server you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-
-#: mail/mail-config-druid.c:105
-msgid ""
-"Please enter information about your outgoing mail protocol below. If you "
-"don't know which protocol you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-
-#: mail/mail-config-druid.c:107
-msgid ""
-"You are almost done with the mail configuration process. The identity, "
-"incoming mail server and outgoing mail transport method which you provided "
-"will be grouped together to make an Evolution mail account. Please enter a "
-"name for this account in the space below. This name will be used for display "
-"purposes only."
-msgstr ""
-
-#. set window title
-#: mail/mail-config-druid.c:445
-msgid "Evolution Account Wizard"
-msgstr ""
-
-#: mail/mail-display.c:194
-msgid "Save Attachment"
-msgstr "Desa l'adjunció"
-
-#: mail/mail-display.c:234
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr "No s'ha pogut crear el directori temporal: %s"
-
-#: mail/mail-display.c:295
-msgid "Save to Disk..."
-msgstr "Desa al disc..."
-
-#: mail/mail-display.c:297
-#, c-format
-msgid "Open in %s..."
-msgstr "Obre a %s..."
-
-#: mail/mail-display.c:299
-msgid "View Inline"
-msgstr "Visualitza en línia"
-
-#: mail/mail-display.c:334
-msgid "External Viewer"
-msgstr "Visualitzador extern"
-
-#: mail/mail-display.c:357
-#, c-format
-msgid "View Inline (via %s)"
-msgstr "Visualitza en línia (mitjançant %s)"
-
-#: mail/mail-display.c:361
-msgid "Hide"
-msgstr "Amaga"
-
-#: mail/mail-display.c:1102
-#, fuzzy
-msgid "Open link in browser"
-msgstr "Obre'l en una nova finestra"
-
-#: mail/mail-display.c:1104
-#, fuzzy
-msgid "Save as (FIXME)"
-msgstr "_Tasca (FIXME)"
-
-#: mail/mail-display.c:1106
-#, fuzzy
-msgid "Copy location (FIXME)"
-msgstr "_Contacte (FIXME)"
-
-#: mail/mail-format.c:518
-#, fuzzy, c-format
-msgid "%s attachment"
-msgstr "adjunció"
-
-#: mail/mail-format.c:560
-#, fuzzy
-msgid "Could not parse MIME message. Displaying as source."
-msgstr "No s'ha pogut obrir la carpeta: la llista de missatges era incompleta."
-
-#: mail/mail-format.c:742
-#, fuzzy
-msgid "Loading message content"
-msgstr "S'estan reenviant els missatges \"%s\""
-
-#: mail/mail-format.c:1046
-#, fuzzy
-msgid "Encrypted message not displayed"
-msgstr "Esborra la visualització del missatge"
-
-#: mail/mail-format.c:1052
-#, fuzzy
-msgid "Encrypted message"
-msgstr "Edita el missatge"
-
-#: mail/mail-format.c:1053
-msgid "Click icon to decrypt."
-msgstr ""
-
-#: mail/mail-format.c:1137 mail/mail-format.c:1526
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr ""
-
-#: mail/mail-format.c:1145 mail/mail-format.c:1534
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr ""
-
-#: mail/mail-format.c:1747
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr ""
-
-#: mail/mail-format.c:1759
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr ""
-
-#: mail/mail-format.c:1763
-#, fuzzy, c-format
-msgid "Pointer to local file (%s)"
-msgstr "Filtre sobre la llista de correu (%s)"
-
-#: mail/mail-format.c:1797
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr ""
-
-#: mail/mail-format.c:1802
-msgid "Malformed external-body part."
-msgstr ""
-
-#: mail/mail-local.c:337
-#, fuzzy, c-format
-msgid "No such folder %s"
-msgstr "La carpeta `%s' no existeix."
-
-#: mail/mail-local.c:509
-#, fuzzy, c-format
-msgid "Opening '%s'"
-msgstr "Obre a %s..."
-
-#: mail/mail-local.c:787
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr "S'està convertint la carpeta \"%s\" al format \"%s\""
-
-#: mail/mail-local.c:791
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr "Canvia la carpeta \"%s\" al format \"%s\""
-
-#: mail/mail-local.c:815
-#, fuzzy
-msgid "Reconfiguring folder"
-msgstr "_Configura la carpeta"
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:844
-msgid "Closing current folder"
-msgstr "S'està tancant la carpeta actual"
-
-#: mail/mail-local.c:876
-msgid "Renaming old folder and opening"
-msgstr "S'està canviant el nom de la carpeta antiga i obrint-la"
-
-#: mail/mail-local.c:894
-msgid "Creating new folder"
-msgstr "Creació d'una nova carpeta"
-
-#: mail/mail-local.c:908
-msgid "Copying messages"
-msgstr "Còpia de missatges"
-
-#: mail/mail-local.c:925
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-"No es pot desar la informació meta de la carpeta; probablement\n"
-"no la podreu tornar a obrir: %s"
-
-#: mail/mail-local.c:964
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-"Si ja no podeu obrir aquesta bústia de correu\n"
-"potser us caldrà reparar-la manualment."
-
-#: mail/mail-mt.c:190
-#, fuzzy, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-"Error en `%s':\n"
-"%s"
-
-#: mail/mail-mt.c:192
-#, fuzzy, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-"Error en preparar-se per a %s:\n"
-"%s"
-
-#: mail/mail-mt.c:515 mail/mail-mt.c:544 mail/mail-mt.c:891
-#, fuzzy
-msgid "Working"
-msgstr "S'està movent"
-
-#: mail/mail-mt.c:679 mail/session.c:98
-msgid "Do you accept?"
-msgstr ""
-
-#: mail/mail-mt.c:873
-#, fuzzy
-msgid "Evolution progress"
-msgstr "Evolution"
-
-#: mail/mail-ops.c:587
-#, c-format
-msgid "Sending \"%s\""
-msgstr "S'està enviant \"%s\""
-
-#: mail/mail-ops.c:589
-#, fuzzy
-msgid "Sending message"
-msgstr "Envia aquest missatge"
-
-#: mail/mail-ops.c:704
-#, fuzzy, c-format
-msgid "Sending message %d of %d"
-msgstr "S'està escrivint el missatge %d de %d"
-
-#: mail/mail-ops.c:723
-#, fuzzy, c-format
-msgid "Failed on message %d of %d"
-msgstr "S'està marcant el missatge %d de %d"
-
-#: mail/mail-ops.c:725 mail/mail-send-recv.c:475
-#, fuzzy
-msgid "Complete."
-msgstr "% comp_let:"
-
-#: mail/mail-ops.c:811
-#, fuzzy
-msgid "Saving message to folder"
-msgstr "S'estan adjuntant els missatges de la carpeta \"%s\""
-
-#: mail/mail-ops.c:884
-#, fuzzy, c-format
-msgid "Moving messages to %s"
-msgstr "Mou el(s) missatge(s) cap a"
-
-#: mail/mail-ops.c:884
-#, fuzzy, c-format
-msgid "Copying messages to %s"
-msgstr "Còpia de missatges"
-
-#: mail/mail-ops.c:900
-msgid "Moving"
-msgstr "S'està movent"
-
-#: mail/mail-ops.c:903
-msgid "Copying"
-msgstr "S'està copiant"
-
-#: mail/mail-ops.c:978
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr "S'estan escanejant les carpetes de \"%s\""
-
-#: mail/mail-ops.c:1139
-#, fuzzy
-msgid "Forwarded messages"
-msgstr "Missatge reenviat - %s"
-
-#: mail/mail-ops.c:1180 mail/mail-ops.c:1318
-#, fuzzy, c-format
-msgid "Opening folder %s"
-msgstr "S'estan escanejant les carpetes de \"%s\""
-
-#: mail/mail-ops.c:1247
-#, fuzzy, c-format
-msgid "Opening store %s"
-msgstr "S'estan escanejant les carpetes de \"%s\""
-
-#: mail/mail-ops.c:1434
-#, fuzzy
-msgid "Expunging folder"
-msgstr "S'està esborrant \"%s\""
-
-#: mail/mail-ops.c:1483
-#, fuzzy, c-format
-msgid "Retrieving message %s"
-msgstr "S'estan recuperant els missatges : %s"
-
-#: mail/mail-ops.c:1550
-#, fuzzy
-msgid "Retrieving messages"
-msgstr "S'estan recuperant els missatges : %s"
-
-#: mail/mail-ops.c:1560
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr "S'està recuperant el missatge número %d de %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1634
-#, fuzzy
-msgid "Saving messages"
-msgstr "Còpia de missatges"
-
-#: mail/mail-ops.c:1713
-#, fuzzy, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr "No es pot desar el fitxer de llista de grups per a %s: %s"
-
-#: mail/mail-ops.c:1726
-#, fuzzy, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr "S'està recuperant el missatge %d de %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1740
-#, fuzzy, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr "Error en desar el fitxer: %s"
-
-#: mail/mail-ops.c:1814
-#, fuzzy
-msgid "Saving attachment"
-msgstr "Desa l'adjunció"
-
-#: mail/mail-ops.c:1829
-#, fuzzy, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr "No es pot desar el fitxer de llista de grups per a %s: %s"
-
-#: mail/mail-ops.c:1857
-#, c-format
-msgid "Could not write data: %s"
-msgstr "No s'han pogut escriure les dades: %s"
-
-#: mail/mail-search-dialogue.c:113
-#, fuzzy
-msgid "_Search"
-msgstr "Cerca"
-
-#: mail/mail-send-recv.c:138
-#, fuzzy
-msgid "Cancelling ..."
-msgstr "Cancel·lat"
-
-#: mail/mail-send-recv.c:233
-#, fuzzy
-msgid "Send & Receive mail"
-msgstr "Sendmail"
-
-#: mail/mail-send-recv.c:236
-#, fuzzy
-msgid "Receiving"
-msgstr "Data de recepció"
-
-#: mail/mail-send-recv.c:285
-msgid "Updating ..."
-msgstr ""
-
-#: mail/mail-send-recv.c:287 mail/mail-send-recv.c:333
-msgid "Waiting ..."
-msgstr ""
-
-#: mail/mail-send-recv.c:306
-#, fuzzy
-msgid "Sending"
-msgstr "S'està enviant \"%s\""
-
-#: mail/mail-send-recv.c:471
-#, fuzzy
-msgid "Cancelled."
-msgstr "Cancel·lat"
-
-#: mail/mail-summary.c:109
-msgid "Incomplete message written on pipe!"
-msgstr "S'ha escrit un missatge incomplet al conducte!"
-
-#: mail/mail-tools.c:141
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr "No s'ha pogut crear la mbox temporal `%s': %s"
-
-#: mail/mail-tools.c:188
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr "[%s] (missatge reenviat)"
-
-#: mail/mail-tools.c:198
-msgid "Fwd: (no subject)"
-msgstr "Re: (sense assumpte)"
-
-#: mail/mail-tools.c:215
-#, c-format
-msgid "Forwarded message - %s"
-msgstr "Missatge reenviat - %s"
-
-#: mail/mail-tools.c:217
-msgid "Forwarded message (no subject)"
-msgstr "Missatge reenviat (sense assumpte)"
-
-#: mail/mail-tools.c:414
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-msgstr ""
-
-#: mail/mail-vfolder.c:249
-msgid "VFolders"
-msgstr "VFolders"
-
-#: mail/mail-vfolder.c:427
-msgid "New VFolder"
-msgstr "Nova VFolder"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/mail-view.c:144 ui/evolution-mail.xml.h:59
-msgid "Reply"
-msgstr "Respon"
-
-#: mail/mail-view.c:144 ui/evolution-mail.xml.h:65
-msgid "Reply to the sender of this message"
-msgstr "Respon al remitent d'aquest missatge"
-
-#: mail/mail-view.c:147 ui/evolution-mail.xml.h:63
-msgid "Reply to all recipients of this message"
-msgstr "Respon a tots els destinataris d'aquest missatge"
-
-#: mail/mail-view.c:150 ui/evolution-mail.xml.h:28
-msgid "Forward this message"
-msgstr "Reenvia aquest missatge"
-
-#: mail/mail-view.c:154 ui/evolution-mail.xml.h:56
-msgid "Print the selected message"
-msgstr "Imprimeix el missatge seleccionat"
-
-#: mail/mail-view.c:156 ui/evolution-mail.xml.h:13
-msgid "Delete this message"
-msgstr "Suprimeix aquest missatge"
-
-#: mail/message-list.c:648
-msgid "Unseen"
-msgstr "No vist"
-
-#: mail/message-list.c:649
-msgid "Seen"
-msgstr "Vist"
-
-#: mail/message-list.c:650
-msgid "Answered"
-msgstr "Respost"
-
-#: mail/message-list.c:651
-#, fuzzy
-msgid "Multiple Unseen Messages"
-msgstr "No s'ha pogut enviar el missatge: %s"
-
-#: mail/message-list.c:652
-#, fuzzy
-msgid "Multiple Messages"
-msgstr "Mou el missatge"
-
-#: mail/message-list.c:656
-#, fuzzy
-msgid "Lowest"
-msgstr "Baixa"
-
-#: mail/message-list.c:657
-#, fuzzy
-msgid "Lower"
-msgstr "Baixa"
-
-#: mail/message-list.c:661
-#, fuzzy
-msgid "Higher"
-msgstr "Alta"
-
-#: mail/message-list.c:662
-#, fuzzy
-msgid "Highest"
-msgstr "Alta"
-
-#: mail/message-list.c:912
-msgid "?"
-msgstr "?"
-
-#: mail/message-list.c:919
-#, fuzzy
-msgid "Today %l:%M %p"
-msgstr "%I:%M %p"
-
-#: mail/message-list.c:928
-msgid "Yesterday %l:%M %p"
-msgstr ""
-
-#: mail/message-list.c:940
-#, fuzzy
-msgid "%a %l:%M %p"
-msgstr "%I:%M %p"
-
-#: mail/message-list.c:948
-#, fuzzy
-msgid "%b %d %l:%M %p"
-msgstr "%a %d/%m/%Y %I:%M:%S %p"
-
-#: mail/message-list.c:950
-#, fuzzy
-msgid "%b %d %Y"
-msgstr "%a %d %Y"
-
-#: mail/message-list.c:1052
-msgid "Flagged"
-msgstr ""
-
-#: mail/message-list.c:1053
-#, fuzzy
-msgid "From"
-msgstr "De:"
-
-#: mail/message-list.c:1053
-#, fuzzy
-msgid "Date"
-msgstr "Data de venciment"
-
-#: mail/message-list.c:1053
-#, fuzzy
-msgid "Received"
-msgstr "Data de recepció"
-
-#: mail/message-list.c:1054
-msgid "To"
-msgstr "Per a"
-
-#: mail/message-list.c:1054
-msgid "Size"
-msgstr "Mida"
-
-#: mail/subscribe-dialog.c:76 shell/e-storage-set-view.c:46
-#, fuzzy
-msgid "Folder"
-msgstr "Carpetes"
-
-#: mail/subscribe-dialog.c:77
-#, fuzzy
-msgid "Store"
-msgstr "Puntuació"
-
-#: mail/subscribe-dialog.c:138
-#, fuzzy
-msgid "Display folders starting with:"
-msgstr "Visualitza les carpetes que continguin:"
-
-#: mail/subscribe-dialog.c:168
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:271
-#, fuzzy, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr "S'estan escanejant les carpetes de \"%s\""
-
-#: mail/subscribe-dialog.c:273
-#, fuzzy, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr "S'estan obrint els missatges des de la carpeta \"%s\""
-
-#. Construct the app
-#: mail/subscribe-dialog.c:873
-#, fuzzy
-msgid "Manage Subscriptions"
-msgstr "Gestiona les subscripcions..."
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-#, fuzzy
-msgid "Folder name:"
-msgstr "Nom del fitxer:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-#, fuzzy
-msgid "Folder type:"
-msgstr "Carpetes"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-#, fuzzy
-msgid "Specify where to create the folder:"
-msgstr "No hi ha espai suficient per crear la carpeta"
-
-#: shell/importer/importer.c:87
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/importer/importer.c:182
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-
-#: shell/importer/importer.c:202 shell/importer/importer.c:233
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-
-#: shell/importer/importer.c:341
-#, fuzzy, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr "No hi ha nou correu a %s."
-
-#: shell/importer/importer.c:351
-#, fuzzy
-msgid "Importing"
-msgstr "S'està movent"
-
-#: shell/importer/importer.c:359
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-
-#: shell/importer/importer.c:372
-#, fuzzy, c-format
-msgid "Error starting %s"
-msgstr "Error en carregar el fitxer: %s"
-
-#: shell/importer/importer.c:387
-#, fuzzy, c-format
-msgid "Error loading %s"
-msgstr "Error en carregar el fitxer: %s"
-
-#: shell/importer/importer.c:402
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-
-#: shell/importer/importer.c:473
-#, fuzzy
-msgid "Automatic"
-msgstr "Tria automàtica"
-
-#: shell/importer/importer.c:523
-#, fuzzy
-msgid "Filename:"
-msgstr "Nom del fitxer:"
-
-#: shell/importer/import.glade.h:5 shell/importer/importer.c:528
-#, fuzzy
-msgid "Select a file"
-msgstr "Fitxer de signatura:"
-
-#: shell/importer/importer.c:538
-#, fuzzy
-msgid "File type:"
-msgstr "Nom del fitxer:"
-
-#: shell/importer/import.glade.h:4 shell/importer/importer.c:619
-msgid "Import"
-msgstr ""
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr ""
-
-#: shell/importer/import.glade.h:2
-#, fuzzy
-msgid "Evolution Import Utility"
-msgstr "Conducte de les coses per fer de l'Evolution"
-
-#: shell/importer/import.glade.h:3
-#, fuzzy
-msgid "Evolution Importer Utility"
-msgstr "Conducte de les coses per fer de l'Evolution"
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-
-#: shell/e-setup.c:118 shell/e-setup.c:191
-msgid "Evolution installation"
-msgstr "Instal·lació de l'Evolution"
-
-#: shell/e-setup.c:122
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-"Aquesta nova versió de l'Evolution necessita instal·lar fitxers addicionals\n"
-"al directori personal on teniu l'Evolution"
-
-#: shell/e-setup.c:123
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr ""
-"Si us plau, feu clic a \"D'acord\" per instal·lar els fitxers, o a "
-"\"Cancel·la\" per sortir."
-
-#: shell/e-setup.c:163
-msgid "Could not update files correctly"
-msgstr "No s'han pogut actualitzar correctament els fitxers"
-
-#: shell/e-setup.c:166 shell/e-setup.c:234
-msgid "Evolution files successfully installed."
-msgstr "Els fitxers de l'Evolution s'han instal·lat amb èxit."
-
-#: shell/e-setup.c:195
-#, fuzzy
-msgid "This seems to be the first time you are running Evolution."
-msgstr "Sembla que aquesta és la primera vegada que executeu l'Evolution."
-
-#: shell/e-setup.c:196
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr ""
-"Si us plau, feu clic a \"D'acord\" per instal·lar els fitxers d'usuari\n"
-"de l''Evolution a"
-
-#: shell/e-setup.c:215
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"No es pot crear el directori\n"
-"%s\n"
-"Error: %s"
-
-#: shell/e-setup.c:230
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-"No es poden copiar els fitxers a\n"
-"`%s'."
-
-#: shell/e-setup.c:255
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-"El fitxer `%s' no és un directori.\n"
-"Si us plau, moveu-lo per permetre la instal·lació\n"
-"dels fitxers d'usuari de l'Evolution."
-
-#: shell/e-setup.c:267
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-"El directori `%s' existeix, però no és el directori\n"
-"de l'Evolution. Si us plau, moveu-lo per permetre\n"
-"la instal·lació dels fitxers d'usuari de l'Evolution."
-
-#: shell/e-shell-folder-creation-dialog.c:99
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-"No es pot crear la carpeta indicada:\n"
-"%s"
-
-#: shell/e-shell-folder-creation-dialog.c:156
-msgid "The specified folder name is not valid."
-msgstr "El nom de carpeta indicat no és vàlid."
-
-#: shell/e-shell-folder-creation-dialog.c:248
-msgid "Evolution - Create new folder"
-msgstr "Evolution - Crea una nova carpeta"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-"El tipus de la carpeta seleccionada no és vàlid per a\n"
-"l'operació sol·licitada."
-
-#: shell/e-shell-folder-selection-dialog.c:319
-msgid "New..."
-msgstr "Nou..."
-
-#: shell/e-shell-folder-title-bar.c:459 shell/e-shell-folder-title-bar.c:460
-msgid "(Untitled)"
-msgstr "(Sense títol)"
-
-#: shell/e-shell-view-menu.c:173
-msgid "Bug buddy was not found in your $PATH."
-msgstr "No s'ha trobat el Bug Buddy en el vostre $PATH."
-
-#: shell/e-shell-view-menu.c:179
-msgid "Bug buddy could not be run."
-msgstr "No es pot executar el Bug Buddy."
-
-#: shell/e-shell-view-menu.c:208
-#, fuzzy
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Copyright 1999, 2000 Helix Code, Inc."
-
-#: shell/e-shell-view-menu.c:210
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-"L'Evolution és un conjunt d'aplicacions de treball en grup\n"
-"per a correu, agenda i gestió de contactes\n"
-"dins de l'entorn d'escriptori GNOME."
-
-#: shell/e-shell-view-menu.c:374
-msgid "Go to folder..."
-msgstr "Vés a la carpeta..."
-
-#: shell/e-shell-view.c:148
-msgid "(No folder displayed)"
-msgstr "(Cap carpeta mostrada)"
-
-#: shell/e-shell-view.c:1134
-#, fuzzy, c-format
-msgid "%s - Evolution %s"
-msgstr "Evolution - %s"
-
-#: shell/e-shell-view.c:1136
-#, fuzzy, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "Evolution - %s"
-
-#: shell/e-shell.c:378
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr "No es pot configurar l'emmagatzemament local -- %s"
-
-#: shell/e-shell.c:1248
-#, fuzzy, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-"Ep! La visualització de `%s' s'ha mort inesperadament. :-(\n"
-"Això segurament vol dir que el component %s ha petat."
-
-#: shell/e-shortcuts-view.c:134
-msgid "Create new shortcut group"
-msgstr "Crea un nou grup de dreceres"
-
-#: shell/e-shortcuts-view.c:137
-msgid "Group name:"
-msgstr "Nom del grup:"
-
-#: shell/e-shortcuts-view.c:260
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-"Esteu segur que voleu eliminar el grup\n"
-"`%s' de la barra de dreceres?"
-
-#: shell/e-shortcuts-view.c:265
-msgid "Don't remove"
-msgstr "No l'eliminis"
-
-#: shell/e-shortcuts-view.c:276
-msgid "_Small Icons"
-msgstr "Icones _petites"
-
-#: shell/e-shortcuts-view.c:277
-msgid "Show the shortcuts as small icons"
-msgstr "Mostra les dreceres com a icones petites"
-
-#: shell/e-shortcuts-view.c:279
-msgid "_Large Icons"
-msgstr "Icones _grans"
-
-#: shell/e-shortcuts-view.c:280
-msgid "Show the shortcuts as large icons"
-msgstr "Mostra les dreceres com a icones grans"
-
-#: shell/e-shortcuts-view.c:291
-msgid "_New Group..."
-msgstr "_Nou grup..."
-
-#: shell/e-shortcuts-view.c:292
-msgid "Create a new shortcut group"
-msgstr "Crea un nou grup de dreceres"
-
-#: shell/e-shortcuts-view.c:294
-msgid "_Remove This Group..."
-msgstr "_Elimina aquest grup..."
-
-#: shell/e-shortcuts-view.c:295
-msgid "Remove this shortcut group"
-msgstr "Elimina aquest grup de dreceres"
-
-#: shell/e-shortcuts-view.c:300
-#, fuzzy
-msgid "_Hide the Shortcut Bar"
-msgstr "Mostra la barra de _dreceres"
-
-#: shell/e-shortcuts-view.c:301
-#, fuzzy
-msgid "Hide the shortcut bar"
-msgstr "Mostra la barra de _dreceres"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate"
-msgstr "Activa"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate this shortcut"
-msgstr "Activa aquesta drecera"
-
-#: shell/e-shortcuts-view.c:388
-msgid "Remove this shortcut from the shortcut bar"
-msgstr "Elimina aquesta drecera de la barra de dreceres"
-
-#: shell/e-shortcuts.c:379
-msgid "Error saving shortcuts."
-msgstr "Error en desar les dreceres."
-
-#: shell/e-storage-set-view.c:649 ui/evolution-event-editor.xml.h:76
-#: ui/evolution-message-composer.xml.h:53
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:43
-msgid "_View"
-msgstr "_Visualitza"
-
-#: shell/e-storage-set-view.c:649
-msgid "View the selected folder"
-msgstr "Visualitza la carpeta seleccionada"
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr "(Sense nom)"
-
-#: shell/e-storage.c:459
-msgid "No error"
-msgstr "Cap error"
-
-#: shell/e-storage.c:461
-msgid "Generic error"
-msgstr "Error genèric"
-
-#: shell/e-storage.c:463
-msgid "A folder with the same name already exists"
-msgstr "Ja existeix una carpeta amb el mateix nom"
-
-#: shell/e-storage.c:465
-msgid "The specified folder type is not valid"
-msgstr "El tipus de carpeta especificat no és vàlid"
-
-#: shell/e-storage.c:467
-msgid "I/O error"
-msgstr "Error d'E/S"
-
-#: shell/e-storage.c:469
-msgid "Not enough space to create the folder"
-msgstr "No hi ha espai suficient per crear la carpeta"
-
-#: shell/e-storage.c:471
-msgid "The specified folder was not found"
-msgstr "No s'ha trobat la carpeta indicada"
-
-#: shell/e-storage.c:473
-msgid "Function not implemented in this storage"
-msgstr "Funció no implementada en aquest emmagatzemament"
-
-#: shell/e-storage.c:475
-msgid "Permission denied"
-msgstr "Permís denegat"
-
-#: shell/e-storage.c:477
-msgid "Operation not supported"
-msgstr "Operació no suportada"
-
-#: shell/e-storage.c:479
-msgid "The specified type is not supported in this storage"
-msgstr "El tipus indicat no es suporta en aquest emmagatzemament"
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-#, fuzzy
-msgid "The Evolution shell."
-msgstr "No es pot inicialitzat l'intèrpret d'ordres de l'Evolution."
-
-#: shell/main.c:83
-#, fuzzy, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-"Hola! Gràcies per prendre-us la molèstia de baixar-vos aquesta versió\n"
-"provisional del conjunt de programes de grup de treball Evolution.\n"
-"Més o menys durant el darrer mes i mig ens hem concentrat en fer que\n"
-"l'Evolution es pugui utilitzar. Molts dels seus desenvolupadors ja estan\n"
-"utilitzant-lo per llegir sempre el seu correu, així que també ho podeu fer\n"
-"(però feu còpies de seguretat per si un cas!).\n"
-"\n"
-"Però, encara que hem solucionat molts problemes que afectaven a "
-"l'estabilitat\n"
-"de l'Evolution, aquí teniu encara el descàrrec. L'Evolution pot: deixar de\n"
-"funcionar, perdre el correu que no voleu perdre, negar-se a suprimir el "
-"correu\n"
-"que voleu suprimir, deixar processos en marxa per tot arreu, consumir el "
-"100%\n"
-"de la CPU, anar massa de pressa, blocar-se, enviar correu HTML a llistes de\n"
-"correu a l'atzar, i deixar-vos en ridícul davant dels vostres amics i "
-"companys\n"
-"de feina. Utilitzeu-lo només sota un control estricte.\n"
-"\n"
-"Esperem que gaudiu del resultat de la nostra feixuga feina, i esperem\n"
-"ansiosament les vostres contribucions!\n"
-
-#: shell/main.c:108
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-"Gràcies\n"
-"L'equip de l'Evolution\n"
-
-#: shell/main.c:139
-msgid "Cannot initialize the Evolution shell."
-msgstr "No es pot inicialitzat l'intèrpret d'ordres de l'Evolution."
-
-#: shell/main.c:185
-msgid "Disable splash screen"
-msgstr ""
-
-#: shell/main.c:186
-msgid "Send the debugging output of all components to a file."
-msgstr ""
-
-#: shell/main.c:219
-msgid "Cannot initialize the Bonobo component system."
-msgstr "No es pot inicialitzar el sistema de components del Bonobo."
-
-#: ui/evolution-addressbook.xml.h:2
-#, fuzzy
-msgid "Create new contact"
-msgstr "Crea un nou contacte"
-
-#: ui/evolution-addressbook.xml.h:4
-msgid "Delete a contact"
-msgstr "Suprimeix un contacte"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-msgid "Find"
-msgstr "Cerca"
-
-#: ui/evolution-addressbook.xml.h:6
-msgid "Find a contact"
-msgstr "Cerca un contacte"
-
-#: ui/evolution-addressbook.xml.h:7
-#, fuzzy
-msgid "New contact"
-msgstr "Visualitza tots els contactes"
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-mail.xml.h:49
-msgid "Previews the message to be printed"
-msgstr "Previsualitza el missatge que s'ha d'imprimir"
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "Print contacts"
-msgstr "Imprimeix els contactes"
-
-#: ui/evolution-addressbook.xml.h:12 ui/evolution-mail.xml.h:78
-msgid "Stop"
-msgstr "Atura"
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "Stop Loading"
-msgstr "Atura la càrrega"
-
-#: ui/evolution-addressbook.xml.h:14
-msgid "View All"
-msgstr "Visualitza'ls tots"
-
-#: ui/evolution-addressbook.xml.h:15
-msgid "View all contacts"
-msgstr "Visualitza tots els contactes"
-
-#: ui/evolution-addressbook.xml.h:16
-#, fuzzy
-msgid "_Addressbook Sources..."
-msgstr "Afegeix una font"
-
-#: ui/evolution-addressbook.xml.h:17
-#, fuzzy
-msgid "_Contact"
-msgstr "_Contactes..."
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-#, fuzzy
-msgid "_Print..."
-msgstr "Imprimeix..."
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr "_Cerca contactes"
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-mail.xml.h:110
-#: ui/evolution-task-editor-dialog.xml.h:88 ui/evolution.xml.h:42
-msgid "_Tools"
-msgstr "_Eines"
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr "5 dies"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-msgid "Alter preferences"
-msgstr "Modifica les preferències"
-
-#: ui/evolution-calendar.xml.h:4
-#, fuzzy
-msgid "Create a new all day Event"
-msgstr "Crea una nova agenda"
-
-#: ui/evolution-calendar.xml.h:5
-msgid "Create a new appointment"
-msgstr "Crea una nova cita"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr "Crea una nova agenda"
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr "Dia"
-
-#: ui/evolution-calendar.xml.h:8
-#, fuzzy
-msgid "Go To"
-msgstr "Vés a"
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr "Vés enrera en el temps"
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go forward in time"
-msgstr "Vés endavant en el temps"
-
-#: ui/evolution-calendar.xml.h:11
-#, fuzzy
-msgid "Go to _Date"
-msgstr "Vés a una data"
-
-#: ui/evolution-calendar.xml.h:12
-#, fuzzy
-msgid "Go to _Today"
-msgstr "Vés a avui"
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr "Vés a una data concreta"
-
-#: ui/evolution-calendar.xml.h:14
-msgid "Go to present time"
-msgstr "Vés al present"
-
-#: ui/evolution-calendar.xml.h:15
-msgid "Month"
-msgstr "Mes"
-
-#: ui/evolution-calendar.xml.h:17
-#, fuzzy
-msgid "New _Event"
-msgstr "Nova a_genda"
-
-#: ui/evolution-calendar.xml.h:18 ui/evolution-event-editor.xml.h:29
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "Next"
-msgstr "Següent"
-
-#: ui/evolution-calendar.xml.h:20
-#, fuzzy
-msgid "Open Calendar"
-msgstr "_Obre una agenda"
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Prev"
-msgstr "Anterior"
-
-#: ui/evolution-calendar.xml.h:22
-#, fuzzy
-msgid "Previews the calendar to be printed"
-msgstr "Previsualitza el missatge que s'ha d'imprimir"
-
-#: ui/evolution-calendar.xml.h:25
-#, fuzzy
-msgid "Print calendar"
-msgstr "Imprimeix l'agenda"
-
-#: ui/evolution-calendar.xml.h:26
-#, fuzzy
-msgid "Print this Calendar"
-msgstr "Imprimeix aquest agenda"
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:15
-#, fuzzy
-msgid "Save As"
-msgstr "_Anomena i desa"
-
-#: ui/evolution-calendar.xml.h:28
-#, fuzzy
-msgid "Save calendar as something else"
-msgstr "Deixa l'agenda com a alguna altra cosa"
-
-#: ui/evolution-calendar.xml.h:30
-msgid "Show 1 day"
-msgstr "Mostra 1 dia"
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr "Mostra 1 mes"
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr "Mostra 1 setmana"
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr "Mostra la setmana de treball"
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:226
-#: widgets/misc/e-dateedit.c:422
-msgid "Today"
-msgstr "Avui"
-
-#: ui/evolution-calendar.xml.h:35
-#, fuzzy
-msgid "W_ork Week"
-msgstr "Setmana de treball"
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr "Setmana"
-
-#: ui/evolution-calendar.xml.h:37
-#, fuzzy
-msgid "_Appointment"
-msgstr "Cites:"
-
-#: ui/evolution-calendar.xml.h:38
-#, fuzzy
-msgid "_Day"
-msgstr "Dia"
-
-#: ui/evolution-calendar.xml.h:39
-#, fuzzy
-msgid "_Month"
-msgstr "Mes"
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:38
-msgid "_New"
-msgstr "_Nou"
-
-#: ui/evolution-calendar.xml.h:41
-msgid "_Open Calendar"
-msgstr "_Obre una agenda"
-
-#: ui/evolution-calendar.xml.h:43 ui/evolution-mail.xml.h:106
-#: ui/evolution-tasks.xml.h:8
-#, fuzzy
-msgid "_Save As..."
-msgstr "Anomena i desa..."
-
-#: ui/evolution-calendar.xml.h:45
-#, fuzzy
-msgid "_Week"
-msgstr "Setmana"
-
-#: ui/evolution-contact-editor.xml.h:2
-msgid "Delete this item"
-msgstr "Suprimeix aquest element"
-
-#: ui/evolution-contact-editor.xml.h:3
-#, fuzzy
-msgid "Delete..."
-msgstr "Suprimeix"
-
-#: ui/evolution-contact-editor.xml.h:4
-#, fuzzy
-msgid "Help"
-msgstr "_Ajuda"
-
-#: ui/evolution-contact-editor.xml.h:5
-#, fuzzy
-msgid "Print En_velope..."
-msgstr "Imprimeix el missatge..."
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-msgid "Print this item"
-msgstr "Imprimeix aquest element"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-mail.xml.h:57 ui/evolution-task-editor-dialog.xml.h:41
-msgid "Print..."
-msgstr "Imprimeix..."
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:16
-#: ui/evolution-task-editor-dialog.xml.h:51
-#, fuzzy
-msgid "Save _As..."
-msgstr "Anomena i desa..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-msgid "Save and Close"
-msgstr "Desa i tanca"
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr "Desa el contacte i tanca el quadre de diàleg"
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr "Consulta l'ajuda en línia"
-
-#: ui/evolution-contact-editor.xml.h:13
-#, fuzzy
-msgid "Send _message to contact..."
-msgstr "FIXME: Nou _missatge per contactar"
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:44 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:30
-msgid "_File"
-msgstr "_Fitxer"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:51
-#: ui/evolution-task-editor-dialog.xml.h:85
-msgid "_Save"
-msgstr "_Desa"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-#, fuzzy
-msgid "About this application"
-msgstr "Autenticació:"
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-#, fuzzy
-msgid "About..."
-msgstr "Lletra..."
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-#, fuzzy
-msgid "Actio_ns"
-msgstr "_Accions"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-#, fuzzy
-msgid "Address _Book... (FIXME)"
-msgstr "FIXME: _Llibreta d'adreces..."
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-#, fuzzy
-msgid "C_lear"
-msgstr "Agenda"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-#, fuzzy
-msgid "C_ut"
-msgstr "Personalitzat"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-#, fuzzy
-msgid "Chec_k Names (FIXME)"
-msgstr "_Tasca (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-#, fuzzy
-msgid "Clear"
-msgstr "Agenda"
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-#, fuzzy
-msgid "Clear the selection"
-msgstr "_Inverteix la selecció"
-
-#: ui/evolution-event-editor.xml.h:11
-#, fuzzy
-msgid "Close this appointment"
-msgstr "Suprimeix aquesta cita"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-#, fuzzy
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "Copia a la carpeta"
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:7
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "Copia"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-#, fuzzy
-msgid "Copy the selection"
-msgstr "_Inverteix la selecció"
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-#, fuzzy
-msgid "Cut"
-msgstr "Personalitzat"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-#, fuzzy
-msgid "Cut the selection"
-msgstr "_Inverteix la selecció"
-
-#: ui/evolution-event-editor.xml.h:18
-msgid "Delete this appointment"
-msgstr "Suprimeix aquesta cita"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-#, fuzzy
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr "FIXME: Pr_imer element de la carpeta"
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-#, fuzzy
-msgid "For_ward (FIXME)"
-msgstr "_Tasca (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:23
-#, fuzzy
-msgid "Forward as v_Calendar (FIXME)"
-msgstr "FIXME: Reenvia com a v_Calendar"
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-msgid "Go to the next item"
-msgstr "Vés a l'element següent"
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-msgid "Go to the previous item"
-msgstr "Vés a l'element anterior"
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-#, fuzzy
-msgid "In_complete Task (FIXME)"
-msgstr "_Tasca (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-#, fuzzy
-msgid "Modify the file's properties"
-msgstr "Propietats de la llista de coses per fer"
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-#, fuzzy
-msgid "N_ext"
-msgstr "Següent"
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-msgid "Paste"
-msgstr "Enganxa"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-#, fuzzy
-msgid "Paste the clipboard"
-msgstr "Enganxa l'element del porta-retalls"
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr "Ant_erior"
-
-#: ui/evolution-event-editor.xml.h:33 ui/evolution-task-editor-dialog.xml.h:36
-#, fuzzy
-msgid "Previous"
-msgstr "Ant_erior"
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-#, fuzzy
-msgid "Print Pre_view"
-msgstr "Previsualització d'impressió"
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-#, fuzzy
-msgid "Print S_etup..."
-msgstr "Imprimeix..."
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-#, fuzzy
-msgid "Print Setup"
-msgstr "Configuració de la pàgina:"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:14
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:239
-msgid "Save"
-msgstr "Desa"
-
-#: ui/evolution-event-editor.xml.h:43
-#, fuzzy
-msgid "Save the appointment and close the dialog box"
-msgstr "Desa el contacte i tanca el quadre de diàleg"
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:20
-#: ui/evolution-task-editor-dialog.xml.h:53
-#, fuzzy
-msgid "Save the current file"
-msgstr "l'hora actual"
-
-#: ui/evolution-event-editor.xml.h:46
-#, fuzzy
-msgid "Schedule _Meeting"
-msgstr "Seleccioneu una carpeta"
-
-#: ui/evolution-event-editor.xml.h:47
-msgid "Schedule some sort of a meeting"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-mail.xml.h:68
-#: ui/evolution-task-editor-dialog.xml.h:57
-#, fuzzy
-msgid "Select All"
-msgstr "Selecciona'ls _tots"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-#, fuzzy
-msgid "Select everything"
-msgstr "Seleccioneu una carpeta"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-#, fuzzy
-msgid "Task _Request (FIXME)"
-msgstr "_Tasca (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-message-composer.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:63
-#, fuzzy
-msgid "_About..."
-msgstr "_Quant a l'Evolution..."
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:41
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:27
-#, fuzzy
-msgid "_Close"
-msgstr "Tanca"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:28
-msgid "_Contact (FIXME)"
-msgstr "_Contacte (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-#, fuzzy
-msgid "_Copy"
-msgstr "Copia"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:46
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:34
-msgid "_Help"
-msgstr "_Ajuda"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-#, fuzzy
-msgid "_Item (FIXME)"
-msgstr "_Tasca (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-#, fuzzy
-msgid "_Journal Entry (FIXME)"
-msgstr "_Contacte (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-#, fuzzy
-msgid "_Last Item in Folder (FIXME)"
-msgstr "FIXME: _Últim element de la carpeta"
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-#, fuzzy
-msgid "_Mail Message (FIXME)"
-msgstr "Missatge de _correu (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-#, fuzzy
-msgid "_Move to Folder... (FIXME)"
-msgstr "_Mou a la carpeta"
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-#, fuzzy
-msgid "_Note (FIXME)"
-msgstr "_Contacte (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-#, fuzzy
-msgid "_Paste"
-msgstr "Enganxa"
-
-#: ui/evolution-event-editor.xml.h:69 ui/evolution-task-editor-dialog.xml.h:82
-#: ui/evolution-tasks.xml.h:7
-msgid "_Print"
-msgstr "_Imprimeix"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:102
-#: ui/evolution-task-editor-dialog.xml.h:83
-#, fuzzy
-msgid "_Properties..."
-msgstr "Propietats..."
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-#, fuzzy
-msgid "_Select All"
-msgstr "Selecciona'ls _tots"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:41
-msgid "_Task (FIXME)"
-msgstr "_Tasca (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-#, fuzzy
-msgid "_Unread Item (FIXME)"
-msgstr "_Contacte (FIXME)"
-
-#: ui/evolution-executive-summary.xml.h:1
-#, fuzzy
-msgid "Add Service"
-msgstr "Afegeix una font"
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:3
-#, fuzzy
-msgid "Create a new email"
-msgstr "Crea un nou contacte"
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:5
-#, fuzzy
-msgid "New Mail"
-msgstr "Recupera el correu"
-
-#: ui/evolution-mail.xml.h:2
-msgid "Apply any new filters to the mail in this box"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:3
-msgid "Change the properties of this folder"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:4
-msgid "Compose"
-msgstr "Redacta"
-
-#: ui/evolution-mail.xml.h:5
-msgid "Compose a new message"
-msgstr "Redacta un nou missatge"
-
-#: ui/evolution-mail.xml.h:6
-#, fuzzy
-msgid "Configure Folder..."
-msgstr "Mou a la carpeta"
-
-#: ui/evolution-mail.xml.h:8
-msgid "Copy message to a new folder"
-msgstr "Copia el missatge a una nova carpeta"
-
-#: ui/evolution-mail.xml.h:9
-#, fuzzy
-msgid "Copy selected messages to another folder"
-msgstr "Copia el missatge a una nova carpeta"
-
-#: ui/evolution-mail.xml.h:10
-#, fuzzy
-msgid "Create _Virtual Folder From Message"
-msgstr "Carpetes virtuals"
-
-#: ui/evolution-mail.xml.h:12
-#, fuzzy
-msgid "Delete the selected messages"
-msgstr "Imprimeix el missatge seleccionat"
-
-#: ui/evolution-mail.xml.h:14
-msgid "Display all of the message headers"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:15
-#, fuzzy
-msgid "Edit Message"
-msgstr "_Edita el missatge"
-
-#: ui/evolution-mail.xml.h:16
-#, fuzzy
-msgid "Edit the current message"
-msgstr "l'hora actual"
-
-#: ui/evolution-mail.xml.h:17
-#, fuzzy
-msgid "Empty _Trash"
-msgstr "Dies buits:"
-
-#: ui/evolution-mail.xml.h:18
-#, fuzzy
-msgid "Expunge"
-msgstr "_Esborra"
-
-#: ui/evolution-mail.xml.h:19
-#, fuzzy
-msgid "Filter on Se_nder"
-msgstr "Filtre sobre el remitent"
-
-#: ui/evolution-mail.xml.h:20
-#, fuzzy
-msgid "Filter on _Recipients"
-msgstr "Filtre sobre els destinataris"
-
-#: ui/evolution-mail.xml.h:21
-#, fuzzy
-msgid "Filter on _Subject"
-msgstr "Filtre sobre l'assumpte"
-
-#: ui/evolution-mail.xml.h:22
-msgid "Finaly remove all mails tagged for deletion"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:23
-msgid "Forget _Passwords"
-msgstr "Oblida les _contrasenyes"
-
-#: ui/evolution-mail.xml.h:25
-#, fuzzy
-msgid "Forward As"
-msgstr "Reenvia"
-
-#: ui/evolution-mail.xml.h:27
-msgid "Forward the selected mail to someone"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:29
-#, fuzzy
-msgid "Forward this message in-line with your mail, so you can edit it"
-msgstr "Reenvia un missatge sense cap assumpte"
-
-#: ui/evolution-mail.xml.h:30
-#, fuzzy
-msgid "Full _Headers"
-msgstr "Cerca completa"
-
-#: ui/evolution-mail.xml.h:31
-#, fuzzy
-msgid "Hide Deleted Messages"
-msgstr "Suprimeix el missatge"
-
-#: ui/evolution-mail.xml.h:32
-#, fuzzy
-msgid "Hide S_elected Messages"
-msgstr "Imprimeix el missatge seleccionat"
-
-#: ui/evolution-mail.xml.h:33
-#, fuzzy
-msgid "Hide _Deleted Messages"
-msgstr "Suprimeix el missatge"
-
-#: ui/evolution-mail.xml.h:34
-#, fuzzy
-msgid "Hide _Read messages"
-msgstr "Missatge reenviat - %s"
-
-#: ui/evolution-mail.xml.h:35
-#, fuzzy
-msgid "Invert Selection"
-msgstr "_Inverteix la selecció"
-
-#: ui/evolution-mail.xml.h:36
-#, fuzzy
-msgid "Manage _Subscriptions..."
-msgstr "Gestiona les subscripcions..."
-
-#: ui/evolution-mail.xml.h:37
-#, fuzzy
-msgid "Mar_k as Read"
-msgstr "Mar_ca'l com a llegit"
-
-#: ui/evolution-mail.xml.h:38
-#, fuzzy
-msgid "Mark All as R_ead"
-msgstr "Mar_ca'l com a llegit"
-
-#: ui/evolution-mail.xml.h:39
-#, fuzzy
-msgid "Mark As Read"
-msgstr "Mar_ca'l com a llegit"
-
-#: ui/evolution-mail.xml.h:40
-msgid "Mark As U_nread"
-msgstr "Marca'l com a per _llegir"
-
-#: ui/evolution-mail.xml.h:41
-#, fuzzy
-msgid "Mark as U_nread"
-msgstr "Marca'l com a per _llegir"
-
-#: ui/evolution-mail.xml.h:42
-#, fuzzy
-msgid "Mark the selected messages as having been read"
-msgstr "Imprimeix el missatge seleccionat"
-
-#: ui/evolution-mail.xml.h:43
-msgid "Mark the selected messages as not having been read"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:44
-msgid "Move"
-msgstr "Mou"
-
-#: ui/evolution-mail.xml.h:45
-msgid "Move message to a new folder"
-msgstr "Mou un missatge a una nova carpeta"
-
-#: ui/evolution-mail.xml.h:46
-#, fuzzy
-msgid "Move selected messages to another folder"
-msgstr "Mou un missatge a una nova carpeta"
-
-#: ui/evolution-mail.xml.h:47
-msgid "Open in New Window"
-msgstr "Obre'l en una nova finestra"
-
-#: ui/evolution-mail.xml.h:48
-#, fuzzy
-msgid "Open the current message in a new window"
-msgstr "Envia aquest missatge"
-
-#: ui/evolution-mail.xml.h:53
-msgid "Print Preview of message..."
-msgstr "Previsualització d'impressió del missatge..."
-
-#: ui/evolution-mail.xml.h:54
-msgid "Print message to the printer"
-msgstr "Imprimeix el missatge a la impressora"
-
-#: ui/evolution-mail.xml.h:55
-msgid "Print message..."
-msgstr "Imprimeix el missatge..."
-
-#: ui/evolution-mail.xml.h:58
-msgid "Redirect (FIXME: implement me)"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:61
-msgid "Reply to _All"
-msgstr "Respon a _tots"
-
-#: ui/evolution-mail.xml.h:62
-#, fuzzy
-msgid "Reply to all"
-msgstr "Respon a tots"
-
-#: ui/evolution-mail.xml.h:64
-#, fuzzy
-msgid "Reply to sender"
-msgstr "Respon al remitent"
-
-#: ui/evolution-mail.xml.h:66
-#, fuzzy
-msgid "S_ource"
-msgstr "Font"
-
-#: ui/evolution-mail.xml.h:67
-#, fuzzy
-msgid "Save the message into a new file"
-msgstr "Desa el missatge a una carpeta determinada"
-
-#: ui/evolution-mail.xml.h:69 ui/evolution-subscribe.xml.h:7
-msgid "Select _All"
-msgstr "Selecciona'ls _tots"
-
-#: ui/evolution-mail.xml.h:70
-#, fuzzy
-msgid "Select _Thread"
-msgstr "Selecciona'ls _tots"
-
-#: ui/evolution-mail.xml.h:71
-#, fuzzy
-msgid "Send / Receive"
-msgstr "Sendmail"
-
-#: ui/evolution-mail.xml.h:72
-msgid "Send a reply to the person who sent you this mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:73
-msgid "Send a single mail in reply to all the selected mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:74
-#, fuzzy
-msgid ""
-"Send queued mail\n"
-" and retrieve new mail"
-msgstr "Envia el correu de la cua i recupera'n el nou"
-
-#: ui/evolution-mail.xml.h:76
-msgid "Send queued mail and retrieve new mail"
-msgstr "Envia el correu de la cua i recupera'n el nou"
-
-#: ui/evolution-mail.xml.h:77
-#, fuzzy
-msgid "Show _All"
-msgstr "Mostra"
-
-#: ui/evolution-mail.xml.h:79
-msgid "Threaded Message list"
-msgstr "Llista de missatges en cadena"
-
-#: ui/evolution-mail.xml.h:80
-#, fuzzy
-msgid "Un-delete the selected messages"
-msgstr "Imprimeix el missatge seleccionat"
-
-#: ui/evolution-mail.xml.h:82
-msgid "VFolder on Se_nder"
-msgstr "VFolder sobre el remite_nt"
-
-#: ui/evolution-mail.xml.h:83
-msgid "VFolder on _Recipients"
-msgstr "VFolder sobre els destinata_ris"
-
-#: ui/evolution-mail.xml.h:84
-#, fuzzy
-msgid "VFolder on _Subject"
-msgstr "VFolder sobre l'assumpte"
-
-#: ui/evolution-mail.xml.h:85
-msgid "View Raw Message Source"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:86
-#, fuzzy
-msgid "Virtual Folder _Editor..."
-msgstr "Editor de carpetes _virtuals..."
-
-#: ui/evolution-mail.xml.h:87
-msgid "_Apply Filters"
-msgstr "_Aplica els filtres"
-
-#: ui/evolution-mail.xml.h:88
-#, fuzzy
-msgid "_Attachment"
-msgstr "adjunció"
-
-#: ui/evolution-mail.xml.h:89
-#, fuzzy
-msgid "_Copy to Folder..."
-msgstr "_Copia a la carpeta"
-
-#: ui/evolution-mail.xml.h:90
-msgid "_Create Filter From Message"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:92
-msgid "_Expunge"
-msgstr "_Esborra"
-
-#: ui/evolution-mail.xml.h:93
-#, fuzzy
-msgid "_Filters..."
-msgstr "_Filtres de correu ..."
-
-#: ui/evolution-mail.xml.h:94 ui/evolution.xml.h:31
-msgid "_Folder"
-msgstr "_Carpeta"
-
-#: ui/evolution-mail.xml.h:95
-msgid "_Forward"
-msgstr "_Reenvia"
-
-#: ui/evolution-mail.xml.h:96
-#, fuzzy
-msgid "_Inline"
-msgstr "Visualitza en línia"
-
-#: ui/evolution-mail.xml.h:97 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr "_Inverteix la selecció"
-
-#: ui/evolution-mail.xml.h:98
-#, fuzzy
-msgid "_Mail Message"
-msgstr "FIXME: Missatge de _correu"
-
-#: ui/evolution-mail.xml.h:99
-#, fuzzy
-msgid "_Mail Settings..."
-msgstr "_Paràmetres"
-
-#: ui/evolution-mail.xml.h:100
-#, fuzzy
-msgid "_Move to Folder..."
-msgstr "_Mou a la carpeta"
-
-#: ui/evolution-mail.xml.h:101
-#, fuzzy
-msgid "_Open Selected Items"
-msgstr "Obre la tasca"
-
-#: ui/evolution-mail.xml.h:103
-#, fuzzy
-msgid "_Quoted"
-msgstr "Cap"
-
-#: ui/evolution-mail.xml.h:104
-#, fuzzy
-msgid "_Reply"
-msgstr "Respon"
-
-#: ui/evolution-mail.xml.h:105
-#, fuzzy
-msgid "_Resend Messages"
-msgstr "_Edita el missatge"
-
-#: ui/evolution-mail.xml.h:107
-#, fuzzy
-msgid "_Save Message As..."
-msgstr "_Anomena i desa..."
-
-#: ui/evolution-mail.xml.h:108
-#, fuzzy
-msgid "_Send / Receive"
-msgstr "Sendmail"
-
-#: ui/evolution-mail.xml.h:109
-msgid "_Threaded"
-msgstr "_En cadena"
-
-#: ui/evolution-mail.xml.h:111
-#, fuzzy
-msgid "_Undelete"
-msgstr "_Suprimeix"
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr "Adjunta"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-#, fuzzy
-msgid "Close the current file"
-msgstr "l'hora actual"
-
-#: ui/evolution-message-composer.xml.h:5
-#, fuzzy
-msgid "Encrypt this message with PGP"
-msgstr "Edita el missatge"
-
-#: ui/evolution-message-composer.xml.h:6
-msgid "F_ormat"
-msgstr "F_ormat"
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "HTML"
-msgstr "HTML"
-
-#: ui/evolution-message-composer.xml.h:8
-msgid "Insert a file as text into the message"
-msgstr "Insereix un fitxer com a text dins del missatge"
-
-#: ui/evolution-message-composer.xml.h:9
-#, fuzzy
-msgid "Insert text file..."
-msgstr "_Insereix el fitxer de text... (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:11
-#, fuzzy
-msgid "Open a file"
-msgstr "Obre un fitxer"
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "PGP Encrypt"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Sign"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:17
-msgid "Save _Draft"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:18
-#, fuzzy
-msgid "Save in _folder... (FIXME)"
-msgstr "Desa a la _carpeta..."
-
-#: ui/evolution-message-composer.xml.h:19
-#, fuzzy
-msgid "Save in folder..."
-msgstr "Desa a la _carpeta..."
-
-#: ui/evolution-message-composer.xml.h:21
-#, fuzzy
-msgid "Save the current file with a different name"
-msgstr "l'hora actual"
-
-#: ui/evolution-message-composer.xml.h:22
-msgid "Save the message in a specified folder"
-msgstr "Desa el missatge a una carpeta determinada"
-
-#: ui/evolution-message-composer.xml.h:23
-#, fuzzy
-msgid "Send"
-msgstr "_Envia"
-
-#: ui/evolution-message-composer.xml.h:24
-#, fuzzy
-msgid "Send _Later"
-msgstr "Remitent"
-
-#: ui/evolution-message-composer.xml.h:25
-#, fuzzy
-msgid "Send _later"
-msgstr "Remitent"
-
-#: ui/evolution-message-composer.xml.h:26
-#, fuzzy
-msgid "Send the mail in HTML format"
-msgstr "Envia els missatges en format HTML"
-
-#: ui/evolution-message-composer.xml.h:27
-#, fuzzy
-msgid "Send the message later"
-msgstr "Envia aquest missatge"
-
-#: ui/evolution-message-composer.xml.h:28
-#, fuzzy
-msgid "Send the message now"
-msgstr "Envia aquest missatge"
-
-#: ui/evolution-message-composer.xml.h:29
-#, fuzzy
-msgid "Send this message now"
-msgstr "Envia aquest missatge"
-
-#: ui/evolution-message-composer.xml.h:30
-#, fuzzy
-msgid "Show / hide attachments"
-msgstr "Mostra/amaga les adjuncions"
-
-#: ui/evolution-message-composer.xml.h:31
-msgid "Show _attachments"
-msgstr "Mostra les _adjuncions"
-
-#: ui/evolution-message-composer.xml.h:32
-#, fuzzy
-msgid "Show attachments"
-msgstr "Mostra les _adjuncions"
-
-#: ui/evolution-message-composer.xml.h:33
-#, fuzzy
-msgid "Sign this message with your PGP key"
-msgstr "S'està enviant el missatge sense cap asuumpte"
-
-#: ui/evolution-message-composer.xml.h:34
-#, fuzzy
-msgid "Toggles whether the BCC field is displayed"
-msgstr "Commuta la visualització o no de la barra de carpetes"
-
-#: ui/evolution-message-composer.xml.h:35
-#, fuzzy
-msgid "Toggles whether the CC field is displayed"
-msgstr "Commuta la visualització o no de la barra de carpetes"
-
-#: ui/evolution-message-composer.xml.h:36
-#, fuzzy
-msgid "Toggles whether the From chooser is displayed"
-msgstr "Commuta la visualització o no de la barra de carpetes"
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:39
-#, fuzzy
-msgid "_Bcc Field"
-msgstr "Camps"
-
-#: ui/evolution-message-composer.xml.h:40
-#, fuzzy
-msgid "_Cc Field"
-msgstr "Camps"
-
-#: ui/evolution-message-composer.xml.h:45
-msgid "_From Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:47
-#, fuzzy
-msgid "_Insert"
-msgstr "_Índex"
-
-#: ui/evolution-message-composer.xml.h:48
-msgid "_Insert text file... (FIXME)"
-msgstr "_Insereix el fitxer de text... (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:49
-#, fuzzy
-msgid "_Open..."
-msgstr "_Obre..."
-
-#: ui/evolution-message-composer.xml.h:50
-#, fuzzy
-msgid "_Reply-To Field"
-msgstr "Respon"
-
-#: ui/evolution-message-composer.xml.h:52
-msgid "_Security"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr "Afegeix una carpeta a la llista de carpetes a què estic subscrit"
-
-#: ui/evolution-subscribe.xml.h:3
-msgid "F_older"
-msgstr "C_arpeta"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr "Refresca la llista"
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr "Refresca la llista de carpetes"
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr "Elimina la carpeta de la llista de carpetes a què estic subscrit"
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr "Subscriu-me"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr "Cancel·la la subscripció"
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-#, fuzzy
-msgid "Assig_n Task (FIXME)"
-msgstr "_Tasca (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-#, fuzzy
-msgid "Meeting Re_quest (FIXME)"
-msgstr "FIXME: Pe_tició de cita"
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-#, fuzzy
-msgid "Redo"
-msgstr "Ràdio"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-#, fuzzy
-msgid "Redo the undone action"
-msgstr "Elimina una acció"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-#, fuzzy
-msgid "Replace"
-msgstr "Respon"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-#, fuzzy
-msgid "Replace a string"
-msgstr "_Cerca contactes"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-#, fuzzy
-msgid "Reply to A_ll (FIXME)"
-msgstr "Respon a tots"
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-#, fuzzy
-msgid "S_end Status Report (FIXME)"
-msgstr "_Contacte (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-#, fuzzy
-msgid "Save the task and close the dialog box"
-msgstr "Desa el contacte i tanca el quadre de diàleg"
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-#, fuzzy
-msgid "Search again for the same string"
-msgstr "_Cerca contactes"
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-#, fuzzy
-msgid "Search for a string"
-msgstr "_Cerca contactes"
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-#, fuzzy
-msgid "Undo"
-msgstr "_Envia"
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-#, fuzzy
-msgid "Undo the last action"
-msgstr "Elimina una acció"
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:26
-msgid "_Appointment (FIXME)"
-msgstr "_Cita (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-#, fuzzy
-msgid "_Mark Complete (FIXME)"
-msgstr "Marca com a completa"
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-#, fuzzy
-msgid "_Reply (FIXME)"
-msgstr "_Tasca (FIXME)"
-
-#: ui/evolution-tasks.xml.h:2
-#, fuzzy
-msgid "Create a new task"
-msgstr "Crea un nou contacte"
-
-#: ui/evolution-tasks.xml.h:3
-#, fuzzy
-msgid "New Task"
-msgstr "Tasca"
-
-#: ui/evolution-tasks.xml.h:5
-#, fuzzy
-msgid "Save task as something else"
-msgstr "Deixa l'agenda com a alguna altra cosa"
-
-#: ui/evolution-tasks.xml.h:6
-#, fuzzy
-msgid "Tasks Preferences..."
-msgstr "Preferències de l'agenda..."
-
-#: ui/evolution-tasks.xml.h:9
-#, fuzzy
-msgid "_Task"
-msgstr "Tasca"
-
-#: ui/evolution.xml.h:1
-#, fuzzy
-msgid "About Evolution..."
-msgstr "_Quant a l'Evolution..."
-
-#: ui/evolution.xml.h:3
-#, fuzzy
-msgid "Close this window"
-msgstr "Suprimeix aquesta cita"
-
-#: ui/evolution.xml.h:4
-msgid "Customi_ze Toolbars..."
-msgstr ""
-
-#: ui/evolution.xml.h:5
-#, fuzzy
-msgid "Customize"
-msgstr "Cerca personalitzada"
-
-#: ui/evolution.xml.h:6
-msgid "Customize toolbars"
-msgstr ""
-
-#: ui/evolution.xml.h:7
-msgid "Display a different folder"
-msgstr "Mostra una altra carpeta"
-
-#: ui/evolution.xml.h:8
-msgid "E_xit"
-msgstr "S_urt"
-
-#: ui/evolution.xml.h:9
-msgid "Evolution bar _shortcut"
-msgstr "Barra de _dreceres de l'Evolution"
-
-#: ui/evolution.xml.h:10
-msgid "Exit the program"
-msgstr "Surt del programa"
-
-#: ui/evolution.xml.h:11
-msgid "Getting _Started"
-msgstr "Per _començar"
-
-#: ui/evolution.xml.h:12
-msgid "Import an external file format"
-msgstr ""
-
-#: ui/evolution.xml.h:13
-msgid "Main toolbar"
-msgstr ""
-
-#: ui/evolution.xml.h:14
-msgid "Show information about Evolution"
-msgstr "Mostra informació referent a l'Evolution"
-
-#: ui/evolution.xml.h:15
-#, fuzzy
-msgid "Submit Bug Report"
-msgstr "_Envia un informe d'error"
-
-#: ui/evolution.xml.h:16
-#, fuzzy
-msgid "Submit _Bug Report"
-msgstr "_Envia un informe d'error"
-
-#: ui/evolution.xml.h:17
-#, fuzzy
-msgid "Submit bug report using Bug Buddy."
-msgstr "Envia un informe d'error mitjançant el Bug Buddy"
-
-#: ui/evolution.xml.h:18
-msgid "Toggle whether to show the folder bar"
-msgstr "Commuta la visualització o no de la barra de carpetes"
-
-#: ui/evolution.xml.h:19
-msgid "Toggle whether to show the shortcut bar"
-msgstr "Commuta la visualització o no de la barra de dreceres"
-
-#: ui/evolution.xml.h:20
-msgid "Using the C_ontact Manager"
-msgstr "Utilització del gestor de c_ontactes"
-
-#: ui/evolution.xml.h:21
-msgid "Using the _Calendar"
-msgstr "Utilització de l'_agenda"
-
-#: ui/evolution.xml.h:22
-msgid "Using the _Mailer"
-msgstr "Utilització del _gestor de correu"
-
-#: ui/evolution.xml.h:23
-#, fuzzy
-msgid "Work Offline"
-msgstr "S'està movent"
-
-#: ui/evolution.xml.h:24
-msgid "_About Evolution..."
-msgstr "_Quant a l'Evolution..."
-
-#: ui/evolution.xml.h:25
-msgid "_Actions"
-msgstr "_Accions"
-
-#: ui/evolution.xml.h:32
-#, fuzzy
-msgid "_Folder Bar"
-msgstr "_Carpeta"
-
-#: ui/evolution.xml.h:33
-msgid "_Go to Folder..."
-msgstr "_Vés a la carpeta..."
-
-#: ui/evolution.xml.h:35
-#, fuzzy
-msgid "_Import file..."
-msgstr "_Insereix el fitxer de text... (FIXME)"
-
-#: ui/evolution.xml.h:36
-msgid "_Index"
-msgstr "_Índex"
-
-#: ui/evolution.xml.h:37
-#, fuzzy
-msgid "_Mail message"
-msgstr "Missatge de _correu (FIXME)"
-
-#: ui/evolution.xml.h:39
-#, fuzzy
-msgid "_New Folder"
-msgstr "Nova VFolder"
-
-#: ui/evolution.xml.h:40
-#, fuzzy
-msgid "_Shortcut Bar"
-msgstr "Mostra la barra de _dreceres"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:469
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2475
-msgid "%A, %B %d, %Y"
-msgstr "%A, %d de %B de %Y"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:390
-msgid "Tentative"
-msgstr "Tentatiu"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:391
-msgid "Busy"
-msgstr "Ocupat"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:392
-msgid "Out of Office"
-msgstr "Fora de l'oficina"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:393
-msgid "No Information"
-msgstr "Cap informació"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:409
-msgid "_Invite Others..."
-msgstr "_Invita a altres..."
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:429
-msgid "_Options"
-msgstr "_Opcions"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:446
-msgid "Show _Only Working Hours"
-msgstr "Mostra _només les hores de treball"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:459
-msgid "Show _Zoomed Out"
-msgstr "Mostra-ho reduint el zoom"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:477
-msgid "_Update Free/Busy"
-msgstr "_Actualitza lliure/ocupat"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:495
-msgid "_<<"
-msgstr "_<<"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:512
-msgid "_Autopick"
-msgstr "Tria automàtica"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:526
-msgid ">_>"
-msgstr ">_>"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:543
-msgid "_All People and Resources"
-msgstr "_Totes les persones i recursos"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:556
-msgid "All _People and One Resource"
-msgstr "Totes les persones i un recurs"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:569
-msgid "_Required People"
-msgstr "Persones _requerides"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:582
-msgid "Required People and _One Resource"
-msgstr "Persones requerides i _un recurs"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:605
-msgid "Meeting _start time:"
-msgstr "Hora d'_inici de la reunió:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:629
-msgid "Meeting _end time:"
-msgstr "Hora de _finalització de la reunió:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:742
-msgid "All Attendees"
-msgstr "Tots els assistents"
-
-#: widgets/menus/gal-view-menus.c:177
-#, fuzzy
-msgid "_Current View"
-msgstr "l'hora actual"
-
-#: widgets/menus/gal-view-menus.c:196
-msgid "Define Views"
-msgstr ""
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:421
-msgid "MTWTFSS"
-msgstr "DDDDDDD"
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1060 widgets/misc/e-calendar-item.c:2755
-msgid "%B %Y"
-msgstr "%B %Y"
-
-#: widgets/misc/e-cell-date-edit.c:218 widgets/misc/e-dateedit.c:416
-msgid "Now"
-msgstr "Ara"
-
-#: widgets/misc/e-cell-date-edit.c:242
-msgid "OK"
-msgstr ""
-
-#: widgets/misc/e-cell-date-edit.c:723
-#, fuzzy, c-format
-msgid "The time must be in the format: %s"
-msgstr ""
-"La data s'ha d'introduir amb el format: \n"
-"\n"
-"%s"
-
-#: widgets/misc/e-clipped-label.c:107
-msgid "..."
-msgstr "..."
-
-#: widgets/misc/e-filter-bar.c:166
-#, fuzzy
-msgid "Save Search"
-msgstr "Cerca"
-
-#: widgets/misc/e-filter-bar.c:237
-#, fuzzy
-msgid "Advanced Search"
-msgstr "Afegeix..."
-
-#: widgets/misc/e-filter-bar.c:317
-#, fuzzy
-msgid "Advanced ..."
-msgstr "Afegeix..."
-
-#: widgets/misc/e-messagebox.c:152
-#, fuzzy
-msgid "Information"
-msgstr "Cap informació"
-
-#: widgets/misc/e-messagebox.c:159
-#, fuzzy
-msgid "Warning"
-msgstr "S'està movent"
-
-#: widgets/misc/e-messagebox.c:173
-#, fuzzy
-msgid "Question"
-msgstr "Descripció:"
-
-#: widgets/misc/e-messagebox.c:180
-#, fuzzy
-msgid "Message"
-msgstr "_Missatge"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:224
-#, fuzzy
-msgid "Don't show this message again."
-msgstr "Envia aquest missatge"
-
-#: widgets/misc/e-search-bar.c:148
-#, fuzzy
-msgid "Sear_ch"
-msgstr "Cerca"
-
-#: views/addressbook/galview.xml.h:1
-#, fuzzy
-msgid "Adress Cards"
-msgstr "Adreça"
-
-#: views/addressbook/galview.xml.h:2
-#, fuzzy
-msgid "By Company"
-msgstr "Empresa"
-
-#: views/addressbook/galview.xml.h:3
-#, fuzzy
-msgid "Phone List"
-msgstr "Tipus de telèfon"
-
-#: views/mail/galview.xml.h:1
-#, fuzzy
-msgid "By Sender"
-msgstr "Remitent"
-
-#: views/mail/galview.xml.h:2
-#, fuzzy
-msgid "By Status"
-msgstr "_Estat:"
-
-#: views/mail/galview.xml.h:3
-#, fuzzy
-msgid "By Subject"
-msgstr "Assumpte"
-
-#: views/mail/galview.xml.h:4
-#, fuzzy
-msgid "Messages"
-msgstr "_Missatge"
-
-#: views/tasks/galview.xml.h:2
-#, fuzzy
-msgid "With Category"
-msgstr "categories"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-#, fuzzy
-msgid "The Personal Addressbook Server"
-msgstr "Afegeix una font"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr ""
-
-#: wombat/wombat.c:173
-#, fuzzy
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr "No s'ha pogut inicialitzar el Bonobo"
-
-#: wombat/wombat.c:185
-#, fuzzy
-msgid "init_corba(): could not initialize GNOME"
-msgstr "No s'ha pogut inicialitzar el Bonobo"
-
-#: wombat/wombat.c:198
-#, fuzzy
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "No s'ha pogut inicialitzar el Bonobo"
-
-#, fuzzy
-#~ msgid "Click here to add a contact"
-#~ msgstr "<feu clic aquí per seleccionar una data>"
-
-#, fuzzy
-#~ msgid ""
-#~ "This option will connect to the server using a the PLAIN SASL mechanism if "
-#~ "the server supports it."
-#~ msgstr ""
-#~ "Aquesta opció es connectarà al servidor IMAP mitjançant una contrasenya de "
-#~ "text net."
-
-#~ msgid "No such host %s."
-#~ msgstr "L'ordinador central %s no existeix."
-
-#~ msgid "Temporarily unable to look up hostname %s."
-#~ msgstr "Temporalment no es pot cercar el nom d'ordinador central %s."
-
-#~ msgid "URL string `%s' contains no protocol"
-#~ msgstr "La cadena d'URL `%s' no conté cap protocol"
-
-#~ msgid "URL string `%s' contains an invalid protocol"
-#~ msgstr "La cadena d'URL `%s' conté un protocol incorrecte"
-
-#~ msgid "Port number in URL `%s' is non-numeric"
-#~ msgstr "El número de port de l'URL `%s' no és numèric"
-
-#, fuzzy
-#~ msgid "Secure IMAPv4"
-#~ msgstr "IMAPv4"
-
-#, fuzzy
-#~ msgid "For reading and storing mail on IMAP servers over an SSL connection."
-#~ msgstr "Per llegir i emmagatzemar correu en servidors IMAP."
-
-#, fuzzy
-#~ msgid ""
-#~ "For connecting to POP servers over an SSL connection. The POP protocol can "
-#~ "also be used to retrieve mail from certain web mail providers and "
-#~ "proprietary email systems."
-#~ msgstr ""
-#~ "Per connectar als servidors POP. El protocol POP també es pot utilitzar per "
-#~ "recuperar correu des de determinats proveïdors de correu web i sistemes "
-#~ "propietaris de correu."
-
-#, fuzzy
-#~ msgid ""
-#~ "For delivering mail by connecting to a remote mailhub using SMTP over an SSL "
-#~ "connection.\n"
-#~ msgstr ""
-#~ "Per al lliurament de correu mitjançant la connexió a un concentrador de "
-#~ "correu utilitzant SMTP."
-
-#, fuzzy
-#~ msgid "No authentication required"
-#~ msgstr "Autenticació:"
-
-#, fuzzy
-#~ msgid ""
-#~ "This option will connect to the SMTP server without using any kind of "
-#~ "authentication. This should be fine for connecting to most SMTP servers."
-#~ msgstr ""
-#~ "Aquesta opció us connectarà al sevidor POP mitjançant una contrasenya en "
-#~ "text net. És l'única suportada per molts servidors POP."
-
-#~ msgid "Remove action"
-#~ msgstr "Elimina una acció"
-
-#~ msgid "Remove criterion"
-#~ msgstr "Elimina un criteri"
-
-#~ msgid "Source"
-#~ msgstr "Font"
-
-#, fuzzy
-#~ msgid "Unspecified"
-#~ msgstr "Especifiqueu la capçalera"
-
-#, fuzzy
-#~ msgid "Advanced"
-#~ msgstr "Afegeix..."
-
-#, fuzzy
-#~ msgid "Check settings"
-#~ msgstr "Paràmetres de prova"
-
-#~ msgid "Email address:"
-#~ msgstr "Adreça electrònica:"
-
-#, fuzzy
-#~ msgid "Evolution Mail Configuration"
-#~ msgstr "Configuració del correu"
-
-#, fuzzy
-#~ msgid "Hostname:"
-#~ msgstr "Nom d'usuari:"
-
-#, fuzzy
-#~ msgid "IMAP"
-#~ msgstr "IMAPv4"
-
-#, fuzzy
-#~ msgid "Keep mail on server"
-#~ msgstr "No suprimeixis els missatges del servidor"
-
-#, fuzzy
-#~ msgid "Mail"
-#~ msgstr "_Correu"
-
-#, fuzzy
-#~ msgid "Mail Account"
-#~ msgstr "conté"
-
-#, fuzzy
-#~ msgid "Mail Configuration Druid"
-#~ msgstr "Configuració del correu"
-
-#, fuzzy
-#~ msgid "Optional"
-#~ msgstr "Opcions"
-
-#, fuzzy
-#~ msgid "Password:"
-#~ msgstr "Contrasenya"
-
-#, fuzzy
-#~ msgid "Remember my password"
-#~ msgstr "Desa com a VCard"
-
-#, fuzzy
-#~ msgid "Reply address:"
-#~ msgstr "Adreça electrònica:"
-
-#, fuzzy
-#~ msgid "Required"
-#~ msgstr "Persones _requerides"
-
-#, fuzzy
-#~ msgid "Save password"
-#~ msgstr "Desa com a VCard"
-
-#, fuzzy
-#~ msgid "Select signature file"
-#~ msgstr "Fitxer de signatura:"
-
-#, fuzzy
-#~ msgid "Server type:"
-#~ msgstr "Servidor:"
-
-#, fuzzy
-#~ msgid "Signature:"
-#~ msgstr "Fitxer de signatura:"
-
-#, fuzzy
-#~ msgid "Transport"
-#~ msgstr "Transparent"
-
-#, fuzzy
-#~ msgid "Transport Authentication"
-#~ msgstr "Autenticació:"
-
-#, fuzzy
-#~ msgid "minutes."
-#~ msgstr "minuts"
-
-#~ msgid "%s message %d of %d (uid \"%s\")"
-#~ msgstr "%s missatge %d de %d (uid \"%s\")"
-
-#, fuzzy
-#~ msgid "<unknown>"
-#~ msgstr "Desconegut"
-
-#~ msgid "No GPG/PGP program available."
-#~ msgstr "No hi ha cap programa GPG/PGP disponible."
-
-#, fuzzy
-#~ msgid "Message _Display"
-#~ msgstr "Esborra la visualització del missatge"
-
-#, fuzzy
-#~ msgid "_Compose"
-#~ msgstr "Redacta"
-
-#, fuzzy
-#~ msgid "_Message Hiding"
-#~ msgstr "_Missatge"
-
-#, fuzzy
-#~ msgid "Copyright (C) 2000, Helix Code, Inc."
-#~ msgstr "Copyright 1999, 2000 Helix Code, Inc."
-
-#, fuzzy
-#~ msgid "UNIX mbox-format mail files"
-#~ msgstr "Fitxers de correu en format mbox d'UNIX"
-
-#~ msgid ""
-#~ "For reading mail delivered by the local system, and for storing mail on "
-#~ "local disk."
-#~ msgstr ""
-#~ "Per llegir el correu lliurat al sistema local i per emmagatzemar correu en "
-#~ "el disc local."
-
-#, fuzzy
-#~ msgid "Connect to server"
-#~ msgstr "No s'ha pogut connectar al servidor POP en %s."
-
-#~ msgid "New"
-#~ msgstr "Nou"
-
-#, fuzzy
-#~ msgid "Cannot initialize Evolution's notes component."
-#~ msgstr "No es pot inicialitzar el component de correu de l'Evolution."
-
-#, fuzzy
-#~ msgid "Notes Component: Could not initialize bonobo"
-#~ msgstr "No s'ha pogut inicialitzar el Bonobo"
-
-#~ msgid "Disabled"
-#~ msgstr "Inhabilitat"
-
-#~ msgid "Synchronize"
-#~ msgstr "Sincronitza"
-
-#~ msgid "Copy From Pilot"
-#~ msgstr "Copia des del Pilot"
-
-#~ msgid "Copy To Pilot"
-#~ msgstr "Copia al Pilot"
-
-#~ msgid "Merge From Pilot"
-#~ msgstr "Fusiona des del Pilot"
-
-#~ msgid "Merge To Pilot"
-#~ msgstr "Fusiona cap al Pilot"
-
-#~ msgid "JP Rosevear <jpr@helixcode.com>"
-#~ msgstr "JP Rosevear <jpr@helixcode.com>"
-
-#~ msgid "Original Author:"
-#~ msgstr "Autor original:"
-
-#~ msgid "Eskil Heyn Olsen <deity@eskil.dk>"
-#~ msgstr "Eskil Heyn Olsen <deity@eskil.dk>"
-
-#~ msgid "(C) 1998-2000 the Free Software Foundation and Helix Code"
-#~ msgstr "(C) 1998-2000 la Free Software Foundation i Helix Code"
-
-#~ msgid "gnome-unknown.xpm"
-#~ msgstr "gnome-unknown.xpm"
-
-#~ msgid "Synchronize Action"
-#~ msgstr "Sincronitza l'acció"
-
-#~ msgid "Conduit state"
-#~ msgstr "Estat del conducte"
-
-#~ msgid ""
-#~ "No pilot configured, please choose the\n"
-#~ "'Pilot Link Properties' capplet first."
-#~ msgstr ""
-#~ "No s'ha configurat cap Pilot, escolliu primer el\n"
-#~ "capplet 'Pilot Link Properties'."
-
-#~ msgid "Not connected to the gnome-pilot daemon"
-#~ msgstr "Sense connexió al dimoni gnome-pilot"
-
-#~ msgid ""
-#~ "An error occured when trying to fetch\n"
-#~ "pilot list from the gnome-pilot daemon"
-#~ msgstr ""
-#~ "S'ha produït un error en intentar recollir\n"
-#~ "la llista del Pilot del dimoni gnome-pilot"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "Mr.\n"
-#~ "Mrs.\n"
-#~ "Ms.\n"
-#~ "Miss\n"
-#~ "Dr.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Sr.\n"
-#~ "Sra.\n"
-#~ "Dr.\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Sr.\n"
-#~ "Jr.\n"
-#~ "I\n"
-#~ "II\n"
-#~ "III\n"
-#~ "Esq.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Sr.\n"
-#~ "Jr.\n"
-#~ "I\n"
-#~ "II\n"
-#~ "III\n"
-#~ "Esq.\n"
-
-#~ msgid "Evolution Calendar Conduit"
-#~ msgstr "Conducte de l'agenda de l'Evolution"
-
-#~ msgid "Configuration utility for the evolution calendar conduit.\n"
-#~ msgstr ""
-#~ "Utilitat de configuració per al conducte de l'agenda de l'Evolution.\n"
-
-#~ msgid "Evolution ToDo Conduit"
-#~ msgstr "Conducte de les coses per fer de l'Evolution"
-
-#~ msgid "Configuration utility for the evolution todo conduit.\n"
-#~ msgstr ""
-#~ "Utilitat de configuració per al conducte de les coses per fer de "
-#~ "l'Evolution.\n"
-
-#~ msgid "The priority must be between 1 and 9, inclusive"
-#~ msgstr "La prioritat ha d'estar entre 1 i 9, ambdós inclosos"
-
-#~ msgid "Open..."
-#~ msgstr "_Obre..."
-
-#~ msgid "Edit this appointment..."
-#~ msgstr "Edita aquesta cita..."
-
-#, fuzzy
-#~ msgid "Local folders may not be nested."
-#~ msgstr "Les carpetes Mbox no es poden imbricar."
-
-#~ msgid "Enter the identity you wish to send this message from"
-#~ msgstr "Introduïu la identitat amb la qual voleu enviar aquest missatge"
-
-#~ msgid "Enter the subject of the mail"
-#~ msgstr "Introduïu l'assumpte del correu"
-
-#~ msgid "Saving changes to message..."
-#~ msgstr "S'estan desant els canvis al missatge..."
-
-#~ msgid "Save changes to message..."
-#~ msgstr "Desa els canvis al missatge..."
-
-#~ msgid "Error saving composition to 'Drafts': %s"
-#~ msgstr "Error en desar la redacció a 'Esborranys': %s"
-
-#~ msgid "Edit Filter Rule"
-#~ msgstr "Edita una regla de filtre"
-
-#, fuzzy
-#~ msgid "outgoing"
-#~ msgstr "Agrupament"
-
-#~ msgid "Add Rule"
-#~ msgstr "Afegeix una regla"
-
-#~ msgid "Add VFolder Rule"
-#~ msgstr "Afegeix una regla de la VFolder"
-
-#~ msgid "Edit VFolder Rule"
-#~ msgstr "Edita una regla de la VFolder"
-
-#~ msgid "Body or subject contains"
-#~ msgstr "El cos o l'assumpte contenen"
-
-#~ msgid "Body contains"
-#~ msgstr "El cos conté"
-
-#~ msgid "Subject contains"
-#~ msgstr "L'assumpte conté"
-
-#~ msgid "Body does not contain"
-#~ msgstr "El cos no conté"
-
-#~ msgid "Subject does not contain"
-#~ msgstr "L'assumpte no conté"
-
-#~ msgid "You have no Outbox configured"
-#~ msgstr "No teniu configurada cap bústia de sortida"
-
-#~ msgid ""
-#~ "Could not open file %s:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "No s'ha pogut obrir el fitxer %s:\n"
-#~ "%s"
-
-#, fuzzy
-#~ msgid "Registering local folder"
-#~ msgstr "Creació d'una nova carpeta"
-
-#~ msgid "Fetching email from %s"
-#~ msgstr "S'està recollint el correu des de %s"
-
-#~ msgid "Fetch email from %s"
-#~ msgstr "Recull el correu des de %s"
-
-#~ msgid "Filtering email on demand"
-#~ msgstr "S'està filtrant el correu sota demanda"
-
-#~ msgid "Filter email on demand"
-#~ msgstr "Filtra el correu sota demanda"
-
-#~ msgid "Sending queue"
-#~ msgstr "S'està enviant la cua"
-
-#~ msgid "Send queue"
-#~ msgstr "Envia la cua"
-
-#~ msgid "Appending \"%s\""
-#~ msgstr "S'està afegint \"%s\""
-
-#~ msgid "Appending a message without a subject"
-#~ msgstr "S'està afegint un missatge sense cap assumpte"
-
-#~ msgid "Moving messages from \"%s\" into \"%s\""
-#~ msgstr "S'estan movent els missatges des de \"%s\" cap a \"%s\""
-
-#~ msgid "Copying messages from \"%s\" into \"%s\""
-#~ msgstr "S'estan copiant els missatges des de \"%s\" cap a \"%s\""
-
-#~ msgid "Move messages from \"%s\" into \"%s\""
-#~ msgstr "Mou els missatges des de \"%s\" cap a \"%s\""
-
-#~ msgid "Copy messages from \"%s\" into \"%s\""
-#~ msgstr "Copia els missatges des de \"%s\" cap a \"%s\""
-
-#~ msgid "(No description)"
-#~ msgstr "(Sense descripció)"
-
-#, fuzzy
-#~ msgid "Loading %s Folder for %s"
-#~ msgstr "S'està carregant la carpeta %s"
-
-#, fuzzy
-#~ msgid "Load %s Folder for %s"
-#~ msgstr "Carrega la carpeta %s"
-
-#~ msgid ""
-#~ "Error while preparing to %s:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Error en preparar-se per a %s:\n"
-#~ "%s"
-
-#~ msgid ""
-#~ "Error while `%s':\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Error en `%s':\n"
-#~ "%s"
-
-#~ msgid "Error reading commands from dispatching thread."
-#~ msgstr "S'ha produït un error en llegir les ordres de la cadena cursada."
-
-#~ msgid "Corrupted message from dispatching thread?"
-#~ msgstr "Missatge malmés de la cadena cursada?"
-
-#~ msgid "Could not create dialog box."
-#~ msgstr "No s'ha pogut crear el quadre de diàleg."
-
-#~ msgid "User cancelled query."
-#~ msgstr "Consulta cancel·lada per l'usuari."
-
-#~ msgid "Examining %s"
-#~ msgstr "S'està examinant %s"
-
-#~ msgid ""
-#~ "Could not read UID cache file \"%s\". You may receive duplicate messages."
-#~ msgstr ""
-#~ "No s'ha pogut llegir el fitxer de la memòria cau UID \"%s\". És possible que "
-#~ "rebeu missatges duplicats."
-
-#~ msgid "Retrieving message %d of %d"
-#~ msgstr "S'està recuperant el missatge %d de %d"
-
-#~ msgid "Saving changes to %s"
-#~ msgstr "S'estan desant els canvis a %s"
-
-#~ msgid ""
-#~ "Cannot open location `%s':\n"
-#~ "%s"
-#~ msgstr ""
-#~ "No es pot obrir la ubicació `%s':\n"
-#~ "%s"
-
-#, fuzzy
-#~ msgid "Unsubscribe from folder \"%s\""
-#~ msgstr "S'estan obrint els missatges des de la carpeta \"%s\""
-
-#~ msgid "FIXME: _Appointment"
-#~ msgstr "FIXME: _Cita"
-
-#~ msgid "FIXME: _Contact"
-#~ msgstr "FIXME: _Contacte"
-
-#~ msgid "FIXME: _Task"
-#~ msgstr "FIXME: _Tasca"
-
-#~ msgid "FIXME: Task _Request"
-#~ msgstr "FIXME: _Petició de tasca"
-
-#~ msgid "FIXME: _Journal Entry"
-#~ msgstr "FIXME: Entrada al _diari"
-
-#~ msgid "FIXME: _Note"
-#~ msgstr "FIXME: _Nota"
-
-#~ msgid "FIXME: Ch_oose Form..."
-#~ msgstr "FIXME: Tr_ia el formulari..."
-
-#~ msgid "FIXME: _Memo Style"
-#~ msgstr "FIXME: Estil _memo"
-
-#, fuzzy
-#~ msgid "FIXME: Define Print _Styles..."
-#~ msgstr "FIXME: Defineix els e_stils d'impressió..."
-
-#~ msgid "FIXME: S_end"
-#~ msgstr "FIXME: E_nvia"
-
-#, fuzzy
-#~ msgid "FIXME: Save Attac_hments..."
-#~ msgstr "FIXME: Invita els assistents..."
-
-#, fuzzy
-#~ msgid "FIXME: _Move to Folder..."
-#~ msgstr "_Mou a la carpeta"
-
-#, fuzzy
-#~ msgid "FIXME: Cop_y to Folder..."
-#~ msgstr "FIXME: Tr_ia el formulari..."
-
-#~ msgid "Page Set_up"
-#~ msgstr "Con_figuració de la pàgina"
-
-#~ msgid "FIXME: Print Pre_view"
-#~ msgstr "FIXME: Pre_visualització de la impressió"
-
-#, fuzzy
-#~ msgid "FIXME: Paste _Special..."
-#~ msgstr "FIXME: Enganxa e_special..."
-
-#, fuzzy
-#~ msgid "FIXME: Mark as U_nread"
-#~ msgstr "Marca'l com a per _llegir"
-
-#~ msgid "_Object"
-#~ msgstr "_Objecte"
-
-#~ msgid "FIXME: _Item"
-#~ msgstr "FIXME: _Element"
-
-#~ msgid "FIXME: _Unread Item"
-#~ msgstr "FIXME: Element per _llegir"
-
-#~ msgid "FIXME: _Standard"
-#~ msgstr "FIXME: E_stàndard"
-
-#, fuzzy
-#~ msgid "FIXME: __Formatting"
-#~ msgstr "FIXME: S'està __formatant"
-
-#~ msgid "FIXME: _Customize..."
-#~ msgstr "FIXME: _Personalitza..."
-
-#~ msgid "Ne_xt"
-#~ msgstr "Se_güent"
-
-#~ msgid "_Toolbars"
-#~ msgstr "_Barres d'eines"
-
-#~ msgid "FIXME: _File..."
-#~ msgstr "FIXME: _Fitxer..."
-
-#~ msgid "FIXME: It_em..."
-#~ msgstr "FIXME: El_ement..."
-
-#~ msgid "FIXME: _Object..."
-#~ msgstr "FIXME: _Objecte..."
-
-#~ msgid "FIXME: _Font..."
-#~ msgstr "FIXME: _Lletra..."
-
-#~ msgid "FIXME: _Paragraph..."
-#~ msgstr "FIXME: _Paràgraf..."
-
-#~ msgid "FIXME: Desi_gn This Form"
-#~ msgstr "FIXME: Diss_enya aquest formulari"
-
-#~ msgid "FIXME: D_esign a Form..."
-#~ msgstr "FIXME: D_issenya un formulari..."
-
-#~ msgid "FIXME: Publish _Form..."
-#~ msgstr "FIXME: Publica el _formulari..."
-
-#~ msgid "FIXME: Pu_blish Form As..."
-#~ msgstr "FIXME: Pu_blica el formulari com a..."
-
-#~ msgid "FIXME: Script _Debugger"
-#~ msgstr "FIXME: _Depurador de seqüències"
-
-#~ msgid "FIXME: _Spelling..."
-#~ msgstr "FIXME: _Ortografia..."
-
-#~ msgid "_Forms"
-#~ msgstr "_Formularis"
-
-#~ msgid "FIXME: _New Contact"
-#~ msgstr "FIXME: Contacte _nou"
-
-#~ msgid "FIXME: New _Contact from Same Company"
-#~ msgstr "FIXME: Nou _contacte de la mateixa empresa"
-
-#~ msgid "FIXME: New _Letter to Contact"
-#~ msgstr "FIXME: Nova _carta per contactar"
-
-#, fuzzy
-#~ msgid "FIXME: New _Message to Contact"
-#~ msgstr "FIXME: Nova _carta per contactar"
-
-#~ msgid "FIXME: New Meetin_g with Contact"
-#~ msgstr "FIXME: Nova cit_a amb contacte"
-
-#~ msgid "FIXME: _Plan a Meeting..."
-#~ msgstr "FIXME: _Prepara una cita..."
-
-#~ msgid "FIXME: New _Task for Contact"
-#~ msgstr "FIXME: Nova _tasca per contactar"
-
-#~ msgid "FIXME: New _Journal Entry for Contact"
-#~ msgstr "FIXME: Nova entrada al _diari per contactar"
-
-#~ msgid "FIXME: _Flag for Follow Up..."
-#~ msgstr "FIXME: _Assenyala per al seguiment..."
-
-#~ msgid "FIXME: _Display Map of Address"
-#~ msgstr "FIXME: _Mostra el mapa de l'adreça"
-
-#~ msgid "FIXME: _Open Web Page"
-#~ msgstr "FIXME: _Obre la pàgina web"
-
-#~ msgid "FIXME: Forward as _vCard"
-#~ msgstr "FIXME: Reenvia com a _vCard"
-
-#~ msgid "FIXME: For_ward"
-#~ msgstr "FIXME: Reen_via"
-
-#~ msgid "FIXME: Previous"
-#~ msgstr "FIXME: Anterior"
-
-#~ msgid "FIXME: Next"
-#~ msgstr "FIXME: Següent"
-
-#~ msgid "Group %i"
-#~ msgstr "Grup %i"
-
-#~ msgid "label26"
-#~ msgstr "etiqueta26"
-
-#~ msgid "C_lassification:"
-#~ msgstr "C_lassificació:"
-
-#~ msgid "task-editor-dialog"
-#~ msgstr "task-editor-dialog"
-
-#~ msgid "Days"
-#~ msgstr "Dies"
-
-#~ msgid "Hours"
-#~ msgstr "Hores"
-
-#~ msgid "Mail _to:"
-#~ msgstr "Envia per correu _a:"
-
-#~ msgid "Minutes"
-#~ msgstr "Minuts"
-
-#~ msgid "Time"
-#~ msgstr "Temps"
-
-#~ msgid "_Audio"
-#~ msgstr "_Àudio"
-
-#~ msgid "_Mail"
-#~ msgstr "_Correu"
-
-#~ msgid "_Program"
-#~ msgstr "_Programa"
-
-#~ msgid "event-editor-dialog"
-#~ msgstr "event-editor-dialog"
-
-#~ msgid "label21"
-#~ msgstr "etiqueta21"
-
-#, fuzzy
-#~ msgid "Show all hidden"
-#~ msgstr "Mostra"
-
-#, fuzzy
-#~ msgid "Hide deleted"
-#~ msgstr "Suprimeix"
-
-#, fuzzy
-#~ msgid "Hide Subject"
-#~ msgstr "Assumpte"
-
-#, fuzzy
-#~ msgid "Hide from Sender"
-#~ msgstr "Filtre sobre el remitent"
-
-#, fuzzy
-#~ msgid "Hide Subject \"%s\""
-#~ msgstr "Assumpte"
-
-#~ msgid "You have no mail sources configured"
-#~ msgstr "No teniu configurada cap font de correu"
-
-#, fuzzy
-#~ msgid "Account Properties"
-#~ msgstr "Propietats de l'adjunció"
-
-#, fuzzy
-#~ msgid "E-Mail Address:"
-#~ msgstr "Adreça electrònica:"
-
-#, fuzzy
-#~ msgid "Reply-to:"
-#~ msgstr "Respon"
-
-#~ msgid ""
-#~ "Enter your name and email address to be used in outgoing mail. You may also, "
-#~ "optionally, enter the name of your organization, and the name of a file to "
-#~ "read your signature from."
-#~ msgstr ""
-#~ "Introduïu el vostre nom i adreça electrònica que es farà servir al correu "
-#~ "desortida. Podeu, opcionalment, introduir el nom de la vostra organització, "
-#~ "iel nom d'un fitxer d'on llegir la vostra signatura."
-
-#~ msgid "Full name:"
-#~ msgstr "Nom complet:"
-
-#~ msgid "Signature File"
-#~ msgstr "Fitxer de signatura"
-
-#~ msgid "Server:"
-#~ msgstr "Servidor:"
-
-#~ msgid "Mail source type:"
-#~ msgstr "Tipus de font del correu:"
-
-#~ msgid ""
-#~ "Select the kind of mail server you have, and enter the relevant information "
-#~ "about it.\n"
-#~ "\n"
-#~ "If the server requires authentication, you can click the \"Detect supported "
-#~ "types...\" button after entering the other information."
-#~ msgstr ""
-#~ "Seleccioneu el tipus de servidor de correu que teniu, i introduïu-ne la "
-#~ "informació corresponent.\n"
-#~ "\n"
-#~ "Si el servidor demana autenticació, podeu fer clic al botó \"Detecta els "
-#~ "tipus suportats...\" després d'introduir l'altra informació."
-
-#~ msgid "News source type:"
-#~ msgstr "Tipus de font de notícies:"
-
-#~ msgid ""
-#~ "Select the kind of news server you have, and enter the relevant information "
-#~ "about it.\n"
-#~ "\n"
-#~ "If the server requires authentication, you can click the \"Detect supported "
-#~ "types...\" button after entering the other information."
-#~ msgstr ""
-#~ "Seleccioneu el tipus del vostre servidor de notícies, i introduïu-ne la "
-#~ "informació corresponent.\n"
-#~ "Si el servidor demana autenticació, podeu fer clic al botó \"Detecta els "
-#~ "tipus suportats...\" després d'introduir l'altra informació."
-
-#~ msgid "Mail transport type:"
-#~ msgstr "Tipus de transport de correu:"
-
-#, fuzzy
-#~ msgid ""
-#~ "Select the kind of mail server you have, and enter the relevant information "
-#~ "about it.\n"
-#~ "If the server requires authentication, you can click the \"Detect supported "
-#~ "types...\" button after entering the other information."
-#~ msgstr ""
-#~ "Seleccioneu el tipus de servidor de correu que teniu, i introduïu-ne la "
-#~ "informació corresponent.\n"
-#~ "\n"
-#~ "Si el servidor demana autenticació, podeu fer clic al botó \"Detecta els "
-#~ "tipus suportats...\" després d'introduir l'altra informació."
-
-#~ msgid "Add Identity"
-#~ msgstr "Afegeix una identitat"
-
-#~ msgid "Edit Identity"
-#~ msgstr "Edita la identitat"
-
-#~ msgid "Edit Source"
-#~ msgstr "Edita la font"
-
-#~ msgid "Add News Server"
-#~ msgstr "Afegeix un servidor de notícies"
-
-#~ msgid "Edit News Server"
-#~ msgstr "Edita el servidor de notícies"
-
-#~ msgid "The connection was successful!"
-#~ msgstr "La connexió ha tingut èxit!"
-
-#~ msgid "Querying authorization capabilities of \"%s\""
-#~ msgstr "Possibilitats d'autorització de consultes de \"%s\""
-
-#~ msgid "Query authorization at \"%s\""
-#~ msgstr "Autorització de consultes a \"%s\""
-
-#~ msgid "Identities"
-#~ msgstr "Identitats"
-
-#~ msgid "Mail Sources"
-#~ msgstr "Fonts del correu"
-
-#~ msgid "Mail Transport"
-#~ msgstr "Transport de correu"
-
-#~ msgid "News Servers"
-#~ msgstr "Servidors de notícies"
-
-#~ msgid "News Sources"
-#~ msgstr "Fonts de notícies"
-
-#~ msgid "Send messages in HTML format"
-#~ msgstr "Envia els missatges en format HTML"
-
-#, fuzzy
-#~ msgid "_Addressbook Configuration..."
-#~ msgstr "Configuració del _correu..."
-
-#~ msgid "_Print Contacts..."
-#~ msgstr "_Imprimeix els contactes..."
-
-#, fuzzy
-#~ msgid "Ca_lendar"
-#~ msgstr "Agenda"
-
-#~ msgid "Open a calendar"
-#~ msgstr "Obre una agenda"
-
-#~ msgid "_Print this calendar"
-#~ msgstr "_Imprimeix aquest agenda"
-
-#~ msgid "FIXME: Chec_k Names"
-#~ msgstr "FIXME: Comp_rova els noms"
-
-#~ msgid "FIXME: Help"
-#~ msgstr "FIXME: Ajuda"
-
-#, fuzzy
-#~ msgid "FIXME: In_complete Task"
-#~ msgstr "FIXME: _Tasca"
-
-#, fuzzy
-#~ msgid "FIXME: Insert File"
-#~ msgstr "FIXME: Insereix el fitxer..."
-
-#~ msgid "FIXME: Rec_urrence..."
-#~ msgstr "FIXME: Rec_urrència..."
-
-#~ msgid "FIXME: _New Appointment"
-#~ msgstr "FIXME: _Nova cita"
-
-#, fuzzy
-#~ msgid "_Find..."
-#~ msgstr "Cerca..."
-
-#, fuzzy
-#~ msgid "_Redo"
-#~ msgstr "Ràdio"
-
-#, fuzzy
-#~ msgid "_Replace..."
-#~ msgstr "_Tanca..."
-
-#~ msgid "Fi_lter on Sender"
-#~ msgstr "Fi_ltre sobre el remitent"
-
-#~ msgid "Filter on Rec_ipients"
-#~ msgstr "Filtre sobre els dest_inataris"
-
-#~ msgid "Reply to _Sender"
-#~ msgstr "Respon al _remitent"
-
-#, fuzzy
-#~ msgid "Show _All messages"
-#~ msgstr "Mostra"
-
-#~ msgid "_Filter on Subject"
-#~ msgstr "_Filtre sobre l'assumpte"
-
-#~ msgid "_Mail Configuration..."
-#~ msgstr "Configuració del _correu..."
-
-#~ msgid "_Open in New Window"
-#~ msgstr "_Obre'l en una nova finestra"
-
-#~ msgid "_Print Message"
-#~ msgstr "_Imprimeix el missatge"
-
-#, fuzzy
-#~ msgid "_Source"
-#~ msgstr "Font"
-
-#~ msgid "_VFolder on Subject"
-#~ msgstr "_VFolder sobre l'assumpte"
-
-#~ msgid "Show the _Folder Bar"
-#~ msgstr "Mostra la barra de _carpetes"
-
-#~ msgid "External Directories"
-#~ msgstr "Directoris externs"
-
-#~ msgid "Port Number:"
-#~ msgstr "Número de port:"
-
-#~ msgid "Outline:"
-#~ msgstr "Contorn:"
-
-#~ msgid "Headings:"
-#~ msgstr "Encapçalaments:"
-
-#~ msgid "Highlighted day:"
-#~ msgstr "Dia ressaltat:"
-
-#~ msgid "Day numbers:"
-#~ msgstr "Números de dia:"
-
-#~ msgid "Current day's number:"
-#~ msgstr "Número del dia d'avui:"
-
-#~ msgid "To-Do item that is not yet due:"
-#~ msgstr "Element per fer que encara no ha vençut:"
-
-#~ msgid "To-Do item that is due today:"
-#~ msgstr "Element per fer que venç avui:"
-
-#~ msgid "To-Do item that is overdue:"
-#~ msgstr "Element endarrerit encara per fer:"
-
-#~ msgid "may"
-#~ msgstr "maig"
-
-#~ msgid "sunday"
-#~ msgstr "diumenge"
-
-#~ msgid "monday"
-#~ msgstr "dilluns"
-
-#~ msgid "tuesday"
-#~ msgstr "dimarts"
-
-#~ msgid "tues"
-#~ msgstr "dm."
-
-#~ msgid "wednesday"
-#~ msgstr "dimecres"
-
-#~ msgid "wednes"
-#~ msgstr "dc."
-
-#~ msgid "thursday"
-#~ msgstr "dijous"
-
-#~ msgid "thur"
-#~ msgstr "dj."
-
-#~ msgid "thurs"
-#~ msgstr "dj."
-
-#~ msgid "friday"
-#~ msgstr "divendres"
-
-#~ msgid "saturday"
-#~ msgstr "dissabte"
-
-#~ msgid "fortnight"
-#~ msgstr "quinzena"
-
-#~ msgid "min"
-#~ msgstr "min."
-
-#~ msgid "sec"
-#~ msgstr "s"
-
-#~ msgid "tomorrow"
-#~ msgstr "demà"
-
-#~ msgid "yesterday"
-#~ msgstr "ahir"
-
-#~ msgid "today"
-#~ msgstr "avui"
-
-#~ msgid "last"
-#~ msgstr "últim"
-
-#~ msgid "this"
-#~ msgstr "aquest"
-
-#~ msgid "next"
-#~ msgstr "següent"
-
-#~ msgid "first"
-#~ msgstr "primer"
-
-#~ msgid "third"
-#~ msgstr "tercer"
-
-#~ msgid "fourth"
-#~ msgstr "quart"
-
-#~ msgid "fifth"
-#~ msgstr "cinquè"
-
-#~ msgid "sixth"
-#~ msgstr "sisè"
-
-#~ msgid "seventh"
-#~ msgstr "setè"
-
-#~ msgid "eighth"
-#~ msgstr "vuitè"
-
-#~ msgid "ninth"
-#~ msgstr "novè"
-
-#~ msgid "tenth"
-#~ msgstr "desè"
-
-#~ msgid "eleventh"
-#~ msgstr "onzè"
-
-#~ msgid "twelfth"
-#~ msgstr "dotzè"
-
-#~ msgid "ago"
-#~ msgstr "fa"
-
-#~ msgid "Year:"
-#~ msgstr "Any:"
-
-#~ msgid ""
-#~ "Please select the date you want to go to.\n"
-#~ "When you click on a day, you will be taken\n"
-#~ "to that date."
-#~ msgstr ""
-#~ "Si us plau, seleccioneu la data a què voleu anar.\n"
-#~ "Quan feu clic sobre un dia, anireu a parar\n"
-#~ "a aquella data."
-
-#~ msgid "Mail Source"
-#~ msgstr "Font del correu"
-
-#~ msgid "Send a message without a subject"
-#~ msgstr "Envia un missatge sense assumpte"
-
-#~ msgid "Expunge \"%s\""
-#~ msgstr "Esborra \"%s\""
-
-#~ msgid "Marking messages in folder \"%s\""
-#~ msgstr "S'estan marcant els missatges de la carpeta \"%s\""
-
-#~ msgid "Mark messages in folder \"%s\""
-#~ msgstr "Marca els missatges de la carpeta \"%s\""
-
-#~ msgid "Scan folders in \"%s\""
-#~ msgstr "Escaneja les carpetes de \"%s\""
-
-#~ msgid "Attaching messages from folder \"%s\""
-#~ msgstr "S'estan adjuntant els missatges de la carpeta \"%s\""
-
-#~ msgid "Attach messages from \"%s\""
-#~ msgstr "Adjunta els missatges des de \"%s\""
-
-#~ msgid "Forwarding a message without a subject"
-#~ msgstr "S'està reenviant un missatge sense cap assumpte"
-
-#~ msgid "Forward message \"%s\""
-#~ msgstr "Reenvia el missatge \"%s\""
-
-#~ msgid ""
-#~ "Failed to generate mime part from message while generating forwarded message."
-#~ msgstr ""
-#~ "No s'ha pogut generar la part mime del missatge en generar el missatge "
-#~ "reenviat."
-
-#~ msgid "Loading \"%s\""
-#~ msgstr "S'està carregant \"%s\""
-
-#~ msgid "Load \"%s\""
-#~ msgstr "Carrega \"%s\""
-
-#~ msgid "Creating \"%s\""
-#~ msgstr "S'està creant \"%s\""
-
-#~ msgid "Create \"%s\""
-#~ msgstr "Crea \"%s\""
-
-#~ msgid "Exception while reporting result to shell component listener."
-#~ msgstr ""
-#~ "Excepció en informar del resultat a l'escoltador de components de "
-#~ "l'intèrpret d'ordres."
-
-#~ msgid "Synchronize \"%s\""
-#~ msgstr "Sincronitza \"%s\""
-
-#~ msgid "Displaying message UID \"%s\""
-#~ msgstr "S'està visualitzant l'UID del missatge \"%s\""
-
-#~ msgid "Clearing message display"
-#~ msgstr "S'està esborrant la visualització del missatge"
-
-#~ msgid "Display message UID \"%s\""
-#~ msgstr "Visualitza l'UID del missatge \"%s\""
-
-#~ msgid "Opening messages from folder \"%s\""
-#~ msgstr "S'estan obrint els missatges des de la carpeta \"%s\""
-
-#~ msgid "Open messages from \"%s\""
-#~ msgstr "Obre els missatges des de \"%s\""
-
-#~ msgid "Viewing messages from folder \"%s\""
-#~ msgstr "S'estan visualitzant els missatges des de la carpeta \"%s\""
-
-#~ msgid "View messages from \"%s\""
-#~ msgstr "Visualitza els missatges des de \"%s\""
-
-#~ msgid "Retrieving message %d of %d (uid \"%s\")"
-#~ msgstr "S'està recuperant el missatge %d de %d (uid \"%s\")"
-
-#, fuzzy
-#~ msgid "Save messages from folder \"%s\""
-#~ msgstr "S'estan obrint els missatges des de la carpeta \"%s\""
-
-#~ msgid "Rebuilding message view"
-#~ msgstr "S'està reconstruint la visualització del missatge"
-
-#~ msgid "Rebuild message view"
-#~ msgstr "Reconstrueix la visualització del missatge"
-
-#~ msgid "N_ew Directory Server"
-#~ msgstr "N_ou servidor de directori"
-
-#~ msgid "_Save Calendar As"
-#~ msgstr "_Anomena i desa l'agenda"
-
-#, fuzzy
-#~ msgid "_Mail Configuration"
-#~ msgstr "Configuració del correu"
-
-#~ msgid "BLARG\n"
-#~ msgstr "BLARG\n"
-
-#~ msgid "window2"
-#~ msgstr "finestra2"
-
-#~ msgid "Recur on the"
-#~ msgstr "Repeteix-ho el dia"
-
-#~ msgid "th day of the month"
-#~ msgstr "del mes"
-
-#~ msgid ""
-#~ "This appointment has custom recurrence rules that cannot be edited by "
-#~ "Evolution.\n"
-#~ "\n"
-#~ "However, the appointment will recur at the appropriate time and will be "
-#~ "displayed properly in the calendar views."
-#~ msgstr ""
-#~ "Aquesta cita té regles de recurrència personalitzades que l'Evolution no pot "
-#~ "editar.\n"
-#~ "\n"
-#~ "No obstant això, la cita recurrirà en el moment oportú i es visualitzarà "
-#~ "correctament en les vistes de l'agenda."
-
-#~ msgid "Create to-do item"
-#~ msgstr "Crea un element per fer"
-
-#~ msgid "Edit to-do item"
-#~ msgstr "Edita un element per fer"
-
-#~ msgid "Due Date:"
-#~ msgstr "Data de venciment:"
-
-#~ msgid "Time display"
-#~ msgstr "Visualització de l'hora"
-
-#~ msgid "Time format"
-#~ msgstr "Format de l'hora"
-
-#~ msgid "12-hour (AM/PM)"
-#~ msgstr "12 hores (AM/PM)"
-
-#~ msgid "24-hour"
-#~ msgstr "24 hores"
-
-#~ msgid "Weeks start on"
-#~ msgstr "La setmana comença el"
-
-#~ msgid "Day range"
-#~ msgstr "Abast de dies"
-
-#~ msgid ""
-#~ "Please select the start and end hours you want\n"
-#~ "to be displayed in the day view and week view.\n"
-#~ "Times outside this range will not be displayed\n"
-#~ "by default."
-#~ msgstr ""
-#~ "Si us plau, seleccioneu les hores d'inici i\n"
-#~ "finalització que voleu que es mostrin en les\n"
-#~ "vistes de dia i de setmana. Per defecte, les\n"
-#~ "hores fora d'aquest abast no es mostraran."
-
-#~ msgid "Day end:"
-#~ msgstr "Final del dia:"
-
-#~ msgid "Colors for display"
-#~ msgstr "Colors per a la visualització"
-
-#~ msgid "Show on TODO List:"
-#~ msgstr "Mostra-ho a la llista de coses per fer:"
-
-#~ msgid "To Do List style options:"
-#~ msgstr "Opcions d'estil de la llista de coses per fer:"
-
-#~ msgid "Highlight overdue items"
-#~ msgstr "Ressalta els elements endarrerits"
-
-#~ msgid "Highlight not yet due items"
-#~ msgstr "Ressalta els elements que encara no han vençut"
-
-#~ msgid "To Do List"
-#~ msgstr "Llista de coses per fer"
-
-#~ msgid "Preferences"
-#~ msgstr "Preferències"
-
-#~ msgid "Alarm Properties"
-#~ msgstr "Propietats de l'alarma"
-
-#~ msgid "Beep on display alarms"
-#~ msgstr "Fes un so en visualitzar les alarmes"
-
-#~ msgid "Audio alarms timeout after"
-#~ msgstr "Les alarmes acústiques s'apaguen després de"
-
-#~ msgid "Enable snoozing for "
-#~ msgstr "Habilita l'snoozing per a "
-
-#~ msgid "Could not connect to IMAP server on %s."
-#~ msgstr "No s'ha pogut connectar al servidor IMAP en %s."
-
-#~ msgid "Could not create summary"
-#~ msgstr "No s'ha pogut crear el resum"
-
-#~ msgid "Could not rename folder %s to %s: destination exists"
-#~ msgstr ""
-#~ "No s'ha pogut canviar el nom de la carpeta %s a %s: el nom de destí ja "
-#~ "existeix"
-
-#~ msgid "Could not open summary %s"
-#~ msgstr "No s'ha pogut obrir el resum %s"
-
-#~ msgid "Summary mismatch, X-Evolution header missing"
-#~ msgstr "Incongruència del resum, manca la capçalera de l'X-Evolution"
-
-#~ msgid "Cannot copy data to output file: %s"
-#~ msgstr "No es poden copiar les dades al fitxer de sortida: %s"
-
-#~ msgid "Could not load or create summary"
-#~ msgstr "No s'ha pogut carregar o crear el resum"
-
-#~ msgid "Could not rename folder `%s': %s exists"
-#~ msgstr "No s'ha pogut canviar el nom de la carpeta `%s': %s existeix"
-
-#~ msgid "MH folders may not be nested."
-#~ msgstr "Les carpetes MH no es poden imbricar."
-
-#~ msgid "does not match regex"
-#~ msgstr "no coincideix amb la regex"
-
-#~ msgid "matches regex"
-#~ msgstr "coincideix amb la regex"
-
-#~ msgid "Cannot initialize Evolution's mail storage hash."
-#~ msgstr ""
-#~ "No es pot inicialitzar el hash d'emmagatzematge de correu de l'Evolution."
-
-#~ msgid "Bad storage URL (no server): %s"
-#~ msgstr "URL d'emmagatzemament incorrecte (cap servidor): %s"
-
-#~ msgid ""
-#~ "Welcome to the Evolution Mail configuration wizard!\n"
-#~ "By filling in some information about your email\n"
-#~ "settings, you can start sending and receiving email\n"
-#~ "right away. Click Next to continue."
-#~ msgstr ""
-#~ "Benvingut a l'assistent de configuració de l'Evolution!\n"
-#~ "Faciliteu certes informacions sobre els vostres paràmetres\n"
-#~ "de correu electrònic i podreu començar immediatament a enviar\n"
-#~ "i rebre correu. Feu clic a Següent per continuar."
-
-#~ msgid "Couldn't create pipe to %s: %s"
-#~ msgstr "No s'ha pogut crear el conducte a %s: %s"
-
-#~ msgid "Could not execute %s: %s\n"
-#~ msgstr "No es pot executar %s: %s\n"
-
-#~ msgid " (XXX unread)"
-#~ msgstr " (XXX no llegits)"
-
-#~ msgid "Don't know protocol to open URI `%s'"
-#~ msgstr "No es coneix cap protocol per obrir l'URI '%s'"
-
-#~ msgid "Forward Message"
-#~ msgstr "Reenvia el missatge"
-
-#~ msgid "Copy Message"
-#~ msgstr "Copia el missatge"
-
-#~ msgid "_New appointment..."
-#~ msgstr "_Nova cita..."
-
-#~ msgid "_Create New Folder..."
-#~ msgstr "_Crea una carpeta nova..."
-
-#~ msgid "Insert a file as an attachment"
-#~ msgstr "Insereix un fitxer com a adjunció"
-
-#~ msgid "Gnome Calendar"
-#~ msgstr "Agenda del Gnome"
-
-#~ msgid "The GNOME personal calendar and schedule manager."
-#~ msgstr "L'agenda personal del GNOME i el gestor de planificació."
-
-#~ msgid "Year"
-#~ msgstr "Any"
-
-#~ msgid "Show 1 year"
-#~ msgstr "Mostra 1 any"
-
-#~ msgid "New appointment for _today..."
-#~ msgstr "Nova cita per a _avui..."
-
-#~ msgid "Create a new appointment for today"
-#~ msgstr "Crea una nova cita per a avui"
-
-#~ msgid "%s%s"
-#~ msgstr "%2$s%1$s"
-
-#~ msgid "'s calendar"
-#~ msgstr "seva agenda"
-
-#~ msgid "FIXME: _Delete"
-#~ msgstr "FIXME: _Suprimeix"
-
-#~ msgid "FIXME: Ca_lendar..."
-#~ msgstr "FIXME: A_genda..."
-
-#~ msgid "FIXME: Invite _Attendees..."
-#~ msgstr "FIXME: Invita els _assistents..."
-
-#~ msgid "FIXME: C_ancel Invitation..."
-#~ msgstr "FIXME: C_ancel·la una invitació..."
-
-#~ msgid "FIXME: Save and Close"
-#~ msgstr "FIXME: Desa i tanca"
-
-#~ msgid "FIXME: Print..."
-#~ msgstr "FIXME: Imprimeix..."
-
-#~ msgid "Invite attendees to a meeting"
-#~ msgstr "Invita als assistents a una reunió"
-
-#~ msgid "FIXME: Delete"
-#~ msgstr "FIXME: Suprimeix"
-
-#~ msgid "Add to-do item..."
-#~ msgstr "Afegeix un element per fer..."
-
-#~ msgid "To-do list"
-#~ msgstr "Llista de coses per fer"
-
-#~ msgid "Edit..."
-#~ msgstr "Edita..."
-
-#~ msgid "Weeks"
-#~ msgstr "Setmanes"
-
-#~ msgid "Hour"
-#~ msgstr "Hora"
-
-#~ msgid "Minute"
-#~ msgstr "Minut"
-
-#~ msgid "Second"
-#~ msgstr "Segon"
-
-#~ msgid "TODO Items"
-#~ msgstr "Elements per fer"
-
-#~ msgid "%a"
-#~ msgstr "%a"
-
-#~ msgid "%b"
-#~ msgstr "%b"
-
-#~ msgid "Current week (%s %s %d - %s %s %d %d)"
-#~ msgstr "Setmana actual (%s %s %d - %s %s %d %d)"
-
-#~ msgid "Current week (%s %s %d %d - %s %s %d %d)"
-#~ msgstr "Setmana actual (%s %s %d %d - %s %s %d %d)"
-
-#~ msgid "Cut selected item into clipboard"
-#~ msgstr "Retalla l'element seleccionat i posa'l al porta-retalls"
-
-#~ msgid "Copy selected item into clipboard"
-#~ msgstr "Copia l'element seleccionat al porta-retalls"
-
-#~ msgid "Select recipients' addresses"
-#~ msgstr "Selecciona les adreces dels destinataris"
-
-#~ msgid "To: >>"
-#~ msgstr "Per a: >>"
-
-#~ msgid "Cc: >>"
-#~ msgstr "Cc: >>"
-
-#~ msgid "Bcc: >>"
-#~ msgstr "Bcc: >>"
-
-#~ msgid "label9"
-#~ msgstr "etiqueta9"
-
-#~ msgid "label7"
-#~ msgstr "etiqueta7"
-
-#~ msgid "label8"
-#~ msgstr "etiqueta8"
-
-#~ msgid "Discard this message?"
-#~ msgstr "Voleu descartar aquest missatge?"
-
-#~ msgid "Load a previously saved message"
-#~ msgstr "Carrega un missatge desat anteriorment"
-
-#~ msgid "_Format"
-#~ msgstr "_Formata"
-
-#~ msgid "Currently pending operations:"
-#~ msgstr "Operacions encara pendents:"
-
-#~ msgid "Show _folder bar"
-#~ msgstr "Mostra la barra de _carpetes"
-
-#~ msgid "Help _index"
-#~ msgstr "_Índex de l'ajuda"
-
-#~ msgid "Cannot initialize the configuration system."
-#~ msgstr "No es pot inicialitzar el sistema de configuració."
-
-#~ msgid "Field Chooser"
-#~ msgstr "Selector de camps"
-
-#~ msgid ""
-#~ "To add a column to your table, drag it into\n"
-#~ "the location in which you want it to appear."
-#~ msgstr ""
-#~ "Per afegir una columna a la vostra taula, arrosegue-la\n"
-#~ "a la ubicació on voleu que aparegui."
-
-#~ msgid "window1"
-#~ msgstr "finestra1"
-
-#~ msgid "Available fields"
-#~ msgstr "Camps disponibles"
-
-#~ msgid "Show in this order"
-#~ msgstr "Mostra en aquest ordre"
-
-#~ msgid "label2"
-#~ msgstr "etiqueta2"
-
-#~ msgid "Add >>"
-#~ msgstr "Afegeix >>"
-
-#~ msgid "<< Remove"
-#~ msgstr "<< Elimina"
diff --git a/po/da.po b/po/da.po
deleted file mode 100644
index d20750bddd..0000000000
--- a/po/da.po
+++ /dev/null
@@ -1,11238 +0,0 @@
-# Danish translation of evolution
-# Copyright (C) 2000 Free Software Foundation, Inc.
-# Kenneth Christiansen <kenneth@gnome.dk>, 2000.
-# Keld Simonsen <keld@dkuug.dk>, 2000.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: evolution beta\n"
-"POT-Creation-Date: 2001-05-18 15:23+0200\n"
-"PO-Revision-Date: 2001-04-21 10:38+0100\n"
-"Last-Translator: Keld Simonsen <keld@dkuug.dk>\n"
-"Language-Team: Danish <dansk@klid.dk>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: addressbook/backend/ebook/e-card.c:3314
-msgid "Card: "
-msgstr "Kort: "
-
-#: addressbook/backend/ebook/e-card.c:3316
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-"\n"
-"Navn:"
-
-#: addressbook/backend/ebook/e-card.c:3317
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-"\n"
-"Prefiks: "
-
-#: addressbook/backend/ebook/e-card.c:3318
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-"\n"
-"Opgivet: "
-
-#: addressbook/backend/ebook/e-card.c:3319
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-"\n"
-"Tillæg: "
-
-#: addressbook/backend/ebook/e-card.c:3320
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-"\n"
-"Familie: "
-
-#: addressbook/backend/ebook/e-card.c:3321
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-"\n"
-"Suffiks: "
-
-#: addressbook/backend/ebook/e-card.c:3335
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-"\n"
-"Fødselsdato: "
-
-#: addressbook/backend/ebook/e-card.c:3346
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-"\n"
-"Adresse:"
-
-#: addressbook/backend/ebook/e-card.c:3348
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-"\n"
-"Postboks: "
-
-#: addressbook/backend/ebook/e-card.c:3349
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-"\n"
-"Linje: "
-
-#: addressbook/backend/ebook/e-card.c:3350
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-"\n"
-"Vej: "
-
-#: addressbook/backend/ebook/e-card.c:3351
-msgid ""
-"\n"
-" City: "
-msgstr ""
-"\n"
-"By: "
-
-#: addressbook/backend/ebook/e-card.c:3352
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-"\n"
-"Region: "
-
-#: addressbook/backend/ebook/e-card.c:3353
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-"\n"
-"Postnummer: "
-
-#: addressbook/backend/ebook/e-card.c:3354
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-"\n"
-"Land: "
-
-#: addressbook/backend/ebook/e-card.c:3367
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-"\n"
-"Leveringsmærke: "
-
-#: addressbook/backend/ebook/e-card.c:3379
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-"\n"
-"Telefoner:\n"
-
-#: addressbook/backend/ebook/e-card.c:3382
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-"\n"
-"Telefon:"
-
-#: addressbook/backend/ebook/e-card.c:3406
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-"\n"
-"E-post:\n"
-
-#: addressbook/backend/ebook/e-card.c:3409
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-"\n"
-"E-post:"
-
-#: addressbook/backend/ebook/e-card.c:3428
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-"\n"
-"E-post program: "
-
-#: addressbook/backend/ebook/e-card.c:3434
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-"\n"
-"Tidszone: "
-
-#: addressbook/backend/ebook/e-card.c:3442
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-"\n"
-"Geografisk lokation: "
-
-#: addressbook/backend/ebook/e-card.c:3446
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-"\n"
-"Stilling: "
-
-#: addressbook/backend/ebook/e-card.c:3458
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-"\n"
-"Org: "
-
-#: addressbook/backend/ebook/e-card.c:3459
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-"\n"
-"Navn: "
-
-#: addressbook/backend/ebook/e-card.c:3460
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-"\n"
-"Enhed: "
-
-#: addressbook/backend/ebook/e-card.c:3461
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-"\n"
-"Enhed2: "
-
-#: addressbook/backend/ebook/e-card.c:3462
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-"\n"
-"Enhed3: "
-
-#: addressbook/backend/ebook/e-card.c:3463
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-"\n"
-"Enhed4: "
-
-#: addressbook/backend/ebook/e-card.c:3467
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-"\n"
-"Kategorier: "
-
-#: addressbook/backend/ebook/e-card.c:3468
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-"\n"
-"Kommentar: "
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3481
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-"\n"
-"Unik streng: "
-
-#: addressbook/backend/ebook/e-card.c:3484
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-"\n"
-"Offentlig nøgle: "
-
-#: addressbook/backend/ebook/e-card.c:3745
-msgid "Multiple VCards"
-msgstr "Flere VKort"
-
-#: addressbook/backend/ebook/e-card.c:3753
-#, c-format
-msgid "VCard for %s"
-msgstr "VKort for %s"
-
-#: addressbook/backend/ebook/e-destination.c:232
-msgid "???"
-msgstr "???"
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_VCard_Importer.oaf.in.h:1
-msgid "Factory to import VCard files into Evolution."
-msgstr "Fabrik til at importere VKort-filer ind i Evolution."
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_VCard_Importer.oaf.in.h:2
-msgid "Imports VCard files into Evolution."
-msgstr "Importerer VKort-filer ind i Evolution."
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:21
-#: addressbook/backend/ebook/load-pine-addressbook.c:22
-#: addressbook/backend/ebook/test-client-list.c:23
-#: addressbook/backend/ebook/test-client.c:33
-#: addressbook/conduit/address-conduit.c:1092
-#: addressbook/gui/component/addressbook-factory.c:42
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:98 calendar/gui/main.c:57
-msgid "Could not initialize Bonobo"
-msgstr "Kunne ikke initiere Bonobo"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr "Markøren kunne ikke indlæses\n"
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr "EBook ikke indlæst\n"
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr "Kunne ikke starte wombat-tjener"
-
-#: addressbook/conduit/address-conduit.c:655
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr "Kunne ikke starte wombat"
-
-#: addressbook/conduit/address-conduit.c:687
-#: addressbook/conduit/address-conduit.c:690
-msgid "Could not read pilot's Address application block"
-msgstr "Kunne ikke læse pilotens adresseapplikationsblok"
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:7
-msgid "Add"
-msgstr "Tilføj"
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr "Br_yllupsdag:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr "A_rbejde"
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr "_Fax på arbejde"
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-msgid "C_ontacts..."
-msgstr "K_ontakter..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr "Ka_tegorier..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-msgid "Contact Editor"
-msgstr "Kontaktredigering"
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr "Detaljer"
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr "Gem som:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-msgid "General"
-msgstr "Generel"
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr "Ny telefontype"
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-msgid "No_tes:"
-msgstr "_Notater:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr "Telefontyper"
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1284
-msgid "Primary Email"
-msgstr "Primær epost"
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr "Vil modtage epost af formatet _HTML"
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr "Hjemmeside-adresse:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:84
-msgid "_Add"
-msgstr "_Tilføj"
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr "_Adresse..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr "Sekretærs navn:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr "_Fødselsdag:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr "_Arbejde"
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-msgid "_Company:"
-msgstr "_Firma:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/folder-browser.c:656 mail/mail-config.glade.h:85
-#: ui/evolution-event-editor.xml.h:57 ui/evolution-mail.xml.h:103
-#: ui/evolution-task-editor-dialog.xml.h:69
-msgid "_Delete"
-msgstr "_Slet"
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr "_Afdeling:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr "_Fulde navn..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-msgid "_Home"
-msgstr "_Hjemme"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-msgid "_Job title:"
-msgstr "_Job titel:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr "_Leders navn:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-msgid "_Mobile"
-msgstr "_Mobil"
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr "Kalde_navn:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr "_Kontor:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr "_Profession:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr "Ægte_fælle:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr "_Dette er postadressen"
-
-#: addressbook/contact-editor/e-contact-editor.c:603
-msgid "This contact belongs to these categories:"
-msgstr "Denne kontakt tilhører disse kategorier:"
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-#: addressbook/gui/widgets/e-addressbook-view.c:688
-msgid "Assistant"
-msgstr "Sekretær"
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/contact-editor/e-contact-editor.c:1310
-msgid "Business"
-msgstr "Arbejde"
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-msgid "Business 2"
-msgstr "Arbejde 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#: addressbook/gui/widgets/e-addressbook-view.c:668
-msgid "Business Fax"
-msgstr "Firma fax"
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Callback"
-msgstr "Tilbagering"
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "Car"
-msgstr "Bil"
-
-#: addressbook/contact-editor/e-contact-editor.c:1248
-msgid "Company"
-msgstr "Firma"
-
-#: addressbook/contact-editor/e-contact-editor.c:1249
-#: addressbook/contact-editor/e-contact-editor.c:1311
-msgid "Home"
-msgstr "Hjem"
-
-#: addressbook/contact-editor/e-contact-editor.c:1250
-msgid "Home 2"
-msgstr "Hjem 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1251
-#: addressbook/gui/widgets/e-addressbook-view.c:669
-msgid "Home Fax"
-msgstr "Hjemme fax"
-
-#: addressbook/contact-editor/e-contact-editor.c:1252
-#: addressbook/gui/widgets/e-addressbook-view.c:672
-msgid "ISDN"
-msgstr "Isdn"
-
-#: addressbook/contact-editor/e-contact-editor.c:1253
-msgid "Mobile"
-msgstr "_Mobil"
-
-#: addressbook/contact-editor/e-contact-editor.c:1254
-#: addressbook/contact-editor/e-contact-editor.c:1312
-msgid "Other"
-msgstr "Andet"
-
-#: addressbook/contact-editor/e-contact-editor.c:1255
-#: addressbook/gui/widgets/e-addressbook-view.c:674
-msgid "Other Fax"
-msgstr "Anden fax"
-
-#: addressbook/contact-editor/e-contact-editor.c:1256
-#: addressbook/gui/widgets/e-addressbook-view.c:675
-msgid "Pager"
-msgstr "Kalder"
-
-#: addressbook/contact-editor/e-contact-editor.c:1257
-msgid "Primary"
-msgstr "Primær epost"
-
-#: addressbook/contact-editor/e-contact-editor.c:1258
-#: addressbook/gui/widgets/e-addressbook-view.c:676
-msgid "Radio"
-msgstr "Radio"
-
-#: addressbook/contact-editor/e-contact-editor.c:1259
-#: addressbook/gui/widgets/e-addressbook-view.c:677
-msgid "Telex"
-msgstr "Telex"
-
-#: addressbook/contact-editor/e-contact-editor.c:1260
-msgid "TTY/TDD"
-msgstr "TTY/TDD"
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:680
-msgid "Email 2"
-msgstr "Sekundær epost"
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/gui/widgets/e-addressbook-view.c:681
-msgid "Email 3"
-msgstr "Tertiær epost"
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-msgid "Delete Contact?"
-msgstr "Slet kontakt?"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:233
-msgid "Contact Quick-Add"
-msgstr "Hurtigkontakt"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:235
-msgid "Edit Full"
-msgstr "Redigér alt"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:276
-#: addressbook/gui/widgets/e-addressbook-view.c:655
-msgid "Full Name"
-msgstr "Fuldt navn"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:282
-msgid "E-mail"
-msgstr "E-post"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr "Adresse _2:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr "Canada"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr "Tjek adresse"
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr "_Land:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr "Finland"
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr "USA"
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr "_Adresse:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-msgid "_City:"
-msgstr "_By:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr "_Postboks:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr "_Stat/Provins:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr "_ZIP/Postnummer:"
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr "Tjek fulde navn"
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr "Dr."
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr "Esq."
-
-#: addressbook/contact-editor/fullname.glade.h:4
-msgid "I"
-msgstr "I"
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr "II"
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr "III"
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr "Jr."
-
-#: addressbook/contact-editor/fullname.glade.h:8
-msgid "Miss"
-msgstr "Frøken"
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr "Hr."
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr "Fru"
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr "Frk."
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr "Sr."
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr "_Fornavn:"
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr "_Efternavn:"
-
-#: addressbook/contact-editor/fullname.glade.h:15
-msgid "_Middle:"
-msgstr "_Mellemnavn:"
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr "_Suffiks:"
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr "_Titel:"
-
-#: addressbook/gui/component/addressbook.c:242
-msgid "As _Minicards"
-msgstr "Som _minikort"
-
-#: addressbook/gui/component/addressbook.c:248
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr "Som _tabel"
-
-#: addressbook/gui/component/addressbook.c:408
-#, c-format
-msgid "Enter password for %s"
-msgstr "Indtast adgangskode for %s"
-
-#: addressbook/gui/component/addressbook.c:436
-msgid "Unable to open addressbook"
-msgstr "Kunne ikke åbne adressebogen"
-
-#: addressbook/gui/component/addressbook.c:443
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or the LDAP server\n"
-"is down"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:448
-msgid ""
-"This version of Evolution does not have LDAP support\n"
-"compiled in to it. If you want to use LDAP in Evolution\n"
-"you must compile the program from the CVS sources after\n"
-"retrieving OpenLDAP from the link below.\n"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:456
-msgid ""
-"We were unable to open this addressbook. Please check that the\n"
-"path exists and that you have permission to access it."
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:616 calendar/gui/gnome-cal.c:233
-msgid "Any field contains"
-msgstr "Hvilkensomhelst felt indeholder"
-
-#: addressbook/gui/component/addressbook.c:617
-msgid "Name contains"
-msgstr "Navn indeholder"
-
-#: addressbook/gui/component/addressbook.c:618
-msgid "Email contains"
-msgstr "Epost indeholder"
-
-#: addressbook/gui/component/addressbook.c:761
-msgid "The URI that the Folder Browser will display"
-msgstr "Uri'en som mappebladreren vil vise"
-
-#: addressbook/gui/component/addressbook-config.c:148
-msgid "LDAP Server"
-msgstr "LDAP server"
-
-#: addressbook/gui/component/addressbook-config.c:150
-msgid "File"
-msgstr "Fil"
-
-#: addressbook/gui/component/addressbook-config.c:153
-msgid "Unknown addressbook type"
-msgstr "Ukendt adressebogstype"
-
-#: addressbook/gui/component/addressbook-config.c:163
-msgid "None (anonymous mode)"
-msgstr "Ingen (anonym modus)"
-
-#: addressbook/gui/component/addressbook-config.c:165
-#: camel/camel-sasl-plain.c:32 camel/providers/imap/camel-imap-provider.c:80
-#: camel/providers/nntp/camel-nntp-store.c:291
-#: camel/providers/pop3/camel-pop3-provider.c:67 mail/mail-config.glade.h:52
-msgid "Password"
-msgstr "Adgangskode"
-
-#: addressbook/gui/component/addressbook-config.c:168
-msgid "Unknown auth type"
-msgstr "Ukendt auth type"
-
-#: addressbook/gui/component/addressbook-config.c:177
-msgid "Base"
-msgstr "Base"
-
-#: addressbook/gui/component/addressbook-config.c:179
-msgid "One"
-msgstr "Én"
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "Subtree"
-msgstr "Undertræ"
-
-#: addressbook/gui/component/addressbook-config.c:184
-msgid "Unknown scope type"
-msgstr "Ukendt område-type"
-
-#: addressbook/gui/component/addressbook-config.c:349
-msgid "Bind DN:"
-msgstr "Bind DN:"
-
-#: addressbook/gui/component/addressbook-config.c:350
-msgid "FIXME Bind DN Help text here"
-msgstr "RETMIG: Bind DN-hjælpetekst ind her"
-
-#: addressbook/gui/component/addressbook-config.c:352
-#: mail/mail-config.glade.h:60
-msgid "Remember this password"
-msgstr "Husk denne adgangskode"
-
-#: addressbook/gui/component/addressbook-config.c:401
-#: mail/mail-config.glade.h:33
-msgid "Host:"
-msgstr "Vært:"
-
-#: addressbook/gui/component/addressbook-config.c:402
-msgid "FIXME Host help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:404
-msgid "Root DN:"
-msgstr "Rod-DN:"
-
-#: addressbook/gui/component/addressbook-config.c:405
-msgid "FIXME Root DN help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:409
-msgid "Port:"
-msgstr "Port:"
-
-#: addressbook/gui/component/addressbook-config.c:410
-msgid "FIXME Port help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:430
-msgid "Search Scope:"
-msgstr "Søgeområde:"
-
-#: addressbook/gui/component/addressbook-config.c:477
-msgid "Authentication:"
-msgstr "Godkendelse:"
-
-#: addressbook/gui/component/addressbook-config.c:499
-msgid "Advanced LDAP Options"
-msgstr "Avancerede LDAP-indstillinger"
-
-#: addressbook/gui/component/addressbook-config.c:520
-#: mail/mail-config.glade.h:53
-msgid "Path:"
-msgstr "Sti:"
-
-#: addressbook/gui/component/addressbook-config.c:521
-msgid "FIXME Path Help text here"
-msgstr "RETMIG: Hjælp for stier her?"
-
-#: addressbook/gui/component/addressbook-config.c:526
-msgid "Create path if it doesn't exist."
-msgstr "Opret sti hvis den ikke eksisterer."
-
-#: addressbook/gui/component/addressbook-config.c:660
-msgid "Edit Addressbook"
-msgstr "Redigér adressebog"
-
-#: addressbook/gui/component/addressbook-config.c:662
-msgid "Add Addressbook"
-msgstr "Tilføj adressebog"
-
-#: addressbook/gui/component/addressbook-config.c:680
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-"Vælg den type adressebog som du har, og indtast den relvante information om "
-"den."
-
-#: addressbook/gui/component/addressbook-config.c:686
-#: mail/mail-config.glade.h:43
-msgid "Name:"
-msgstr "Navn:"
-
-#: addressbook/gui/component/addressbook-config.c:687
-msgid "FIXME Name help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:689
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr "Beskrivelse:"
-
-#: addressbook/gui/component/addressbook-config.c:690
-msgid "FIXME Description help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-msgid "Addressbook Sources"
-msgstr "Kilder til adressebog"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:235
-#: addressbook/gui/widgets/e-addressbook-view.c:590
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:11 mail/mail-config.glade.h:23
-#: mail/message-browser.c:202 ui/evolution-addressbook.xml.h:3
-#: ui/evolution-event-editor.xml.h:17 ui/evolution-mail.xml.h:22
-#: ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr "Slet"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:28
-msgid "Edit"
-msgstr "Redigér"
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-msgid "Name"
-msgstr "Navn"
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-msgid "URI"
-msgstr "URI"
-
-#: addressbook/gui/component/addressbook-storage.c:99
-msgid "Other Contacts"
-msgstr "Andre kontakter"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Disable Queries"
-msgstr "Deaktiver forespørgsler"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Enable Queries (Dangerous!)"
-msgstr "Aktivér forespørgsler (Farligt!)"
-
-#: addressbook/gui/component/e-address-widget.c:388
-#: addressbook/gui/component/select-names/e-select-names-popup.c:210
-msgid "Edit Contact Info"
-msgstr "Redigér kontaktinfo"
-
-#: addressbook/gui/component/e-address-widget.c:424
-#: addressbook/gui/component/select-names/e-select-names-popup.c:269
-msgid "Add to Contacts"
-msgstr "Føj til kontakter"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-msgid "A Bonobo control for an address popup."
-msgstr "En Bonobo-kontrol for popop af en adresse."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A Bonobo control for displaying an address."
-msgstr "En Bonobo-kontrol for visning af en adresse."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr "En simpel Bonobo kontrol som viser en adressebog."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr "Kontrol der viser et minikort for Evolutions adressebog."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-msgid "Evolution Addressbook minicard viewer"
-msgstr "Evolution adressebogs minikort-viser"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-msgid "Evolution component for handling contacts."
-msgstr "Evolution komponent for behandling af kontakter"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-msgid "Factory for the Addressbook Minicard control"
-msgstr "Fabrik for kontrol af adressebog minikort"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-msgid "Factory for the Addressbook's address displayer"
-msgstr "Fabrik for adressebogens adressevisning"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-msgid "Factory for the Addressbook's address popup"
-msgstr "Fabrik for adressebogens adressepopop"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:10
-msgid "Factory for the Evolution addressbook component."
-msgstr "Fabrik for Evolutions adressebog-komponent."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:11
-msgid "Factory for the sample Addressbook control"
-msgstr "Fabrik for eksempelkontrol for adressebog"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:131
-#: composer/e-msg-composer-attachment-bar.c:468 filter/filter-filter.c:401
-#: filter/filter-rule.c:549 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:265 shell/e-shortcuts-view.c:388
-msgid "Remove"
-msgstr "Fjern"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:146
-msgid "Remove All"
-msgstr "Fjern alt"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-msgid "Evolution's addressbook name selection interface."
-msgstr "Evolutions adressebog-komponent"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr "Fabrik for adressebogens grænseflade for navneudvælgelse"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr "Find..."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-msgid "Message Recipients"
-msgstr "Modtagerliste:"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-msgid "Select Names"
-msgstr "Vælg mappe"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-msgid "Select name from:"
-msgstr "Vælg navn fra:"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:158
-#: mail/mail-search.c:242
-msgid "Search"
-msgstr "Søg"
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr "123"
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr "a"
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr "b"
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr "c"
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr "d"
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr "e"
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr "f"
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr "g"
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr "h"
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr "i"
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr "j"
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr "k"
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr "l"
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr "m"
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr "n"
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-msgid "o"
-msgstr "o"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr "p"
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr "q"
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-msgid "r"
-msgstr "r"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr "s"
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr "t"
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr "u"
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr "v"
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr "w"
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr "x"
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr "y"
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr "z"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:135
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:230
-#: addressbook/gui/widgets/e-addressbook-view.c:525
-#: addressbook/gui/widgets/e-addressbook-view.c:585
-msgid "Save as VCard"
-msgstr "Gem som vCard"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:231
-#: addressbook/gui/widgets/e-addressbook-view.c:586
-#, fuzzy
-msgid "Send contact to other"
-msgstr "Send _kontaktperson til andre..."
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:232
-#: addressbook/gui/widgets/e-addressbook-view.c:587
-#, fuzzy
-msgid "Send message to contact"
-msgstr "Ny _meddelelse til kontaktperson"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:233
-#: addressbook/gui/widgets/e-addressbook-view.c:588 mail/message-browser.c:199
-#: ui/evolution-addressbook.xml.h:9 ui/evolution-calendar.xml.h:23
-#: ui/evolution-mail.xml.h:65 ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr "Udskriv"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:234
-#: addressbook/gui/widgets/e-addressbook-view.c:589
-#, fuzzy
-msgid "Print Envelope"
-msgstr "Skriv kuvert..."
-
-#: addressbook/gui/widgets/e-addressbook-view.c:653
-msgid "* Click here to add a contact *"
-msgstr "* Klik her for at tilføje en kontakt *"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:654
-msgid "File As"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:656
-msgid "Email"
-msgstr "Epost"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:657
-#, fuzzy
-msgid "Primary Phone"
-msgstr "Primær epost"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:658
-#, fuzzy
-msgid "Assistant Phone"
-msgstr "Sekretær"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:659
-#, fuzzy
-msgid "Business Phone"
-msgstr "Arbejde 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:660
-#, fuzzy
-msgid "Callback Phone"
-msgstr "Tilbagering"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:661
-#, fuzzy
-msgid "Company Phone"
-msgstr "Firma"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:662
-#, fuzzy
-msgid "Home Phone"
-msgstr "Hjem 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:663
-msgid "Organization"
-msgstr "Organisation"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:664
-#, fuzzy
-msgid "Business Address"
-msgstr "Arbejde 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:665
-msgid "Home Address"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:666
-#, fuzzy
-msgid "Mobile Phone"
-msgstr "_Mobil"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:667
-msgid "Car Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:670
-#, fuzzy
-msgid "Business Phone 2"
-msgstr "Arbejde 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:671
-#, fuzzy
-msgid "Home Phone 2"
-msgstr "Hjem 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:673
-#, fuzzy
-msgid "Other Phone"
-msgstr "Andre kontakter"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:678
-msgid "TTY"
-msgstr "TTY"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:679
-msgid "Other Address"
-msgstr "Anden adresse"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:682
-msgid "Web Site"
-msgstr "Websted"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:683
-msgid "Department"
-msgstr "Afdeling"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:684
-msgid "Office"
-msgstr "Kontor"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:685
-msgid "Title"
-msgstr "Titel"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:686
-msgid "Profession"
-msgstr "Profession"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:687
-msgid "Manager"
-msgstr "Foresatte"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:689
-msgid "Nickname"
-msgstr "Kaldenavn"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:690
-msgid "Spouse"
-msgstr "Samlever"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:691
-msgid "Note"
-msgstr "Bemærkning"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:692
-msgid "Free-busy URL"
-msgstr "Ledig-optaget URL"
-
-#: addressbook/gui/widgets/e-minicard-control.c:282
-msgid "Save in addressbook"
-msgstr "Kunne ikke åbne adressebogen"
-
-#: addressbook/gui/widgets/e-minicard-view.c:216
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-"\n"
-"\n"
-"Der er ingen punkter at vise i denne visning\n"
-"\n"
-"Dobbelt-klik her for at oprette en ny kontakt."
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:26
-msgid "Card View"
-msgstr "Kortvisning"
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr "10 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr "8 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr "Blanke skemaer ved slutningen:"
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr "Krop"
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr "Bund:"
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr "Dimensioner:"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr "Skrifttype..."
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr "Skrifttyper"
-
-#: addressbook/printing/e-contact-print.glade.h:9
-msgid "Footer:"
-msgstr "Bundtekst:"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr "Format"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-msgid "Header"
-msgstr "Toptekst"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr "Top-/bundtekst"
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr "Overskrifter"
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr "Toptekst for hvert bogstav"
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr "Højde:"
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr "Lige efter hinanden"
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr "Inkludér:"
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr "Landskab"
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr "Venstre:"
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr "Bogstavfaner på siden"
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr "Marginer"
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr "Antal kolonner:"
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr "Alternativer"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr "Orientering"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr "Side"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-msgid "Page Setup:"
-msgstr "Sideopsætning"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr "Papir"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr "Papirkilde:"
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr "Portræt"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr "Smugkig:"
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr "Udskriv med gråtoner"
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr "Modsat på lige sider"
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr "Højre:"
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr "Sektioner:"
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr "Skyggelægning"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-msgid "Size:"
-msgstr "Størrelse:"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr "Start på en ny side"
-
-#: addressbook/printing/e-contact-print.glade.h:38
-msgid "Style name:"
-msgstr "Stilnavn:"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr "Top:"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-msgid "Type:"
-msgstr "Type:"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr "Bredde:"
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr "Fejl under kommunikation med kalendertjeneren"
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr "Kunne ikke læse pilotens kalenderapplikationsblok"
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr "Kunne ikke læse pilotens applikationsblok for opgaveliste"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr "Påmindelse om din aftale "
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-msgid "Snooze"
-msgstr "Udsæt"
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr "O.k."
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr "Alarm-notificeringstjeneste"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-msgid "Factory for the alarm notification service"
-msgstr ""
-
-#: calendar/gui/alarm-notify/notify-main.c:56
-#, c-format
-msgid ""
-"It is %s. The Unix time is %ld right now. We just thought you may like to "
-"know."
-msgstr ""
-
-#: calendar/gui/alarm-notify/notify-main.c:93 calendar/gui/main.c:52
-msgid "Could not initialize GNOME"
-msgstr "Kunne ikke initiere Gnome"
-
-#: calendar/gui/alarm-notify/notify-main.c:108
-msgid "Could not create the alarm notify service factory"
-msgstr ""
-
-#: calendar/gui/calendar-commands.c:266
-msgid "File not found"
-msgstr "Fil ikke fundet"
-
-#: calendar/gui/calendar-commands.c:290
-msgid "Open calendar"
-msgstr "Åbn kalender"
-
-#: calendar/gui/calendar-commands.c:332
-msgid "Save calendar"
-msgstr "Gem kalender"
-
-#: calendar/gui/calendar-commands.c:468
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-"Kunne ikke oprette kalender-visning. Tjek venligst din opsætning af ORBit og "
-"OAF."
-
-#: calendar/gui/calendar-model.c:360 calendar/gui/calendar-model.c:898
-#: calendar/gui/e-calendar-table.c:330
-msgid "Public"
-msgstr "Of_fentlig"
-
-#: calendar/gui/calendar-model.c:363 calendar/gui/calendar-model.c:900
-#: calendar/gui/e-calendar-table.c:331
-msgid "Private"
-msgstr "Privat"
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:902
-#: calendar/gui/e-calendar-table.c:332
-msgid "Confidential"
-msgstr "_Fortrolig"
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/event-editor.c:1601
-#: calendar/gui/event-editor.c:1628
-#: camel/providers/smtp/camel-smtp-transport.c:221
-msgid "Unknown"
-msgstr "Ukendt fejl"
-
-#: calendar/gui/calendar-model.c:457
-msgid "N"
-msgstr "N"
-
-#: calendar/gui/calendar-model.c:457
-msgid "S"
-msgstr "S"
-
-#: calendar/gui/calendar-model.c:459
-msgid "E"
-msgstr "Ø"
-
-#: calendar/gui/calendar-model.c:459
-msgid "W"
-msgstr "V"
-
-#: calendar/gui/calendar-model.c:497 calendar/gui/calendar-model.c:1066
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:352 mail/message-list.c:689
-msgid "High"
-msgstr "Høj"
-
-#: calendar/gui/calendar-model.c:499 calendar/gui/calendar-model.c:1068
-#: calendar/gui/calendar-model.c:1574
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:353 mail/message-list.c:688
-msgid "Normal"
-msgstr "Normal"
-
-#: calendar/gui/calendar-model.c:501 calendar/gui/calendar-model.c:1070
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:354 mail/message-list.c:687
-msgid "Low"
-msgstr "Lav"
-
-#: calendar/gui/calendar-model.c:537 calendar/gui/calendar-model.c:1122
-#: calendar/gui/e-calendar-table.c:406
-msgid "Transparent"
-msgstr "Gennemsigtig"
-
-#: calendar/gui/calendar-model.c:540 calendar/gui/calendar-model.c:1124
-#: calendar/gui/e-calendar-table.c:405
-msgid "Opaque"
-msgstr "Uigennemsigtig"
-
-#: calendar/gui/calendar-model.c:638 calendar/gui/calendar-model.c:1176
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:426
-msgid "Not Started"
-msgstr "Ikke startet"
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1178
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:427
-msgid "In Progress"
-msgstr "Under udarbejdelse"
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1180
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:428
-msgid "Completed"
-msgstr "Fuldført"
-
-#: calendar/gui/calendar-model.c:647 calendar/gui/calendar-model.c:1182
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:429 camel/camel-service.c:544
-#: camel/camel-service.c:580
-msgid "Cancelled"
-msgstr "Afbrudt"
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:794 e-util/e-time-utils.c:278
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr "%a %Y-%m-%d %H:%M:%S"
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:797 e-util/e-time-utils.c:287
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr "%a %Y-%m-%d %I:%M:%S %p"
-
-#: calendar/gui/calendar-model.c:802
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-"Datoen skal skrives ind på formatet: \n"
-"\n"
-"%s"
-
-#: calendar/gui/calendar-model.c:882
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr ""
-"Klassifikationen skal være en af 'Offentlig', 'Privat', \"Fortrolig' eller "
-"'Ingen'"
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:896 calendar/gui/calendar-model.c:1120
-#: calendar/gui/calendar-model.c:1174 calendar/gui/e-calendar-table.c:329
-#: calendar/gui/e-calendar-table.c:404 mail/mail-account-gui.c:976
-#: mail/mail-accounts.c:120 mail/mail-accounts.c:164
-#: mail/mail-config.glade.h:46 shell/e-shell-view.c:1199
-#: widgets/misc/e-cell-date-edit.c:237 widgets/misc/e-dateedit.c:432
-#: widgets/misc/e-dateedit.c:1341 widgets/misc/e-dateedit.c:1456
-msgid "None"
-msgstr "Ingen"
-
-#: calendar/gui/calendar-model.c:970
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-"Den geografiske position skal skrives ind på formatet: \n"
-"\n"
-"45.436845,125.862501"
-
-#: calendar/gui/calendar-model.c:1010
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr "Procentværdien skal være mellem 0 og 100, inklusive"
-
-#: calendar/gui/calendar-model.c:1051
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr "Prioriteten skal være en af 'Høj', 'Normal', 'Lav' eller 'Udefineret'."
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1064
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:355
-msgid "Undefined"
-msgstr "Udefineret"
-
-#: calendar/gui/calendar-model.c:1105
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr ""
-"Gennemsigtigheden skal være en af 'Gennemsigtig', 'Uigennemsigtig' eller "
-"\"Ingen'."
-
-#: calendar/gui/calendar-model.c:1576
-msgid "Recurring"
-msgstr "Gentages"
-
-#: calendar/gui/calendar-model.c:1578
-msgid "Assigned"
-msgstr "Tildelt"
-
-#: calendar/gui/calendar-model.c:1584
-msgid "Yes"
-msgstr "Ja"
-
-#: calendar/gui/calendar-model.c:1584
-msgid "No"
-msgstr "Nej"
-
-#: calendar/gui/calendar-summary.c:198
-msgid "%A, %e %B %Y"
-msgstr "%A den %e. %B %Y"
-
-#: calendar/gui/calendar-summary.c:207
-msgid "Appointments"
-msgstr "Aftaler"
-
-#: calendar/gui/calendar-summary.c:245 calendar/gui/calendar-summary.c:251
-msgid "%I:%M%p"
-msgstr "%H:%M"
-
-#: calendar/gui/calendar-summary.c:275 calendar/gui/print.c:948
-#: views/tasks/galview.xml.h:1
-msgid "Tasks"
-msgstr "Opgaver"
-
-#: calendar/gui/calendar-summary.c:443
-msgid "<b>Error loading calendar</b>"
-msgstr "<b>Fejl ved indlæsning af kalender</b>"
-
-#: calendar/gui/calendar-summary.c:455
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr "<b>Fejl ved indlæsning af kalender:<br>Metode ikke understøttet"
-
-#: calendar/gui/calendar-summary.c:622 mail/mail-config.glade.h:24
-msgid "Display"
-msgstr "Vis"
-
-#: calendar/gui/calendar-summary.c:627
-msgid "Show appointments"
-msgstr "Vis aftaler"
-
-#: calendar/gui/calendar-summary.c:635
-msgid "Show tasks"
-msgstr "Vis opgaver"
-
-#: calendar/gui/calendar-summary.c:690
-msgid "Things to do"
-msgstr "Opgaver der skal fuldføres"
-
-#: calendar/gui/calendar-summary.c:721 calendar/gui/e-itip-control.glade.h:7
-msgid "Loading Calendar"
-msgstr "Indlæser kalender"
-
-#: calendar/gui/control-factory.c:126
-msgid "The URI that the calendar will display"
-msgstr "URIen som kalenderen skal vise"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:189
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr "Alarm på %A %d %b %Y %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:196
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr "Besked om din aftale på %A %d %b %Y %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:207
-msgid "No summary available."
-msgstr "Intet sammendrag."
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:2
-msgid "Close"
-msgstr "Luk"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-msgid "Edit appointment"
-msgstr "Redigér aftale"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr "Udsæt-tid (minutter)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr "05 minutter"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr "10 minutter"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr "12 timer (AM/PM)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr "15 minutter"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr "24 timer"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr "30 minutter"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr "60 minutter"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr "Alarmer afbrydes efter"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr "Lyd-alarmer"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr "Pip når alarmvinduet kommer til syne."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-msgid "Calendar"
-msgstr "Kalender"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr "Opsætning af kalender"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "Farver"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr "Sammenpres weekender"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr "Alternativer for datonavigator"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-msgid "Defaults"
-msgstr "Forvalg"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr "Vis valgmuligheder"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:162
-msgid "Due Date"
-msgstr "Færdig-dato"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr "Slå udsættelse til for"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr "Dagen slutter:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr "Ugens første dag:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr "fre"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:479
-msgid "Friday"
-msgstr "fredag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr "Fremhæv:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr "Punkter som skal afsluttes idag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr "Punkter som skal afsluttes idag:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr "Punkter som ikke skal afsluttes endnu"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr "Punkter som ikke skal afsluttes endnu:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr "man"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:475
-msgid "Monday"
-msgstr "mandag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr "Overskredne opgaver"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr "Overskredne opgaver:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:54
-msgid "Pick a color"
-msgstr "Vælg en farve"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:165
-msgid "Priority"
-msgstr "Prioritet"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-msgid "Remind me of all appointments"
-msgstr "Påmind mig om alle aftaler"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-msgid "Reminders"
-msgstr "Påmindelser"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr "lør"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:480
-msgid "Saturday"
-msgstr "lørdag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr "Vis"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-msgid "Show appointment end times"
-msgstr "Vis sluttider for aftaler"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr "Vis ugenumre"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr "Dagens starter:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr "søn"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:481
-msgid "Sunday"
-msgstr "søndag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-msgid "TaskPad"
-msgstr "Opgaveblok"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr "tor"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:478
-msgid "Thursday"
-msgstr "torsdag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr "Tid til afslutning"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr "Tidsopdeling:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr "Tidsformat:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr "tir"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:476
-msgid "Tuesday"
-msgstr "tirsdag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr "Visuelle alarmer"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr "ons"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:477
-msgid "Wednesday"
-msgstr "onsdag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr "Arbejdsuge"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr "minutter før de skal ske."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:88
-msgid "seconds."
-msgstr "sekunder."
-
-#: calendar/gui/dialogs/delete-comp.c:70
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr "Er du sikker på at du vil slette aftalen '%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:73
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr "Er du sikker på at du vil slette denne unavngivne aftale?"
-
-#: calendar/gui/dialogs/delete-comp.c:79
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr "Er du sikker på at du vil slette opgaven '%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:82
-msgid "Are you sure you want to delete this untitled task?"
-msgstr "Er du sikker på at du vil slette denne unavngivne opgave?"
-
-#: calendar/gui/dialogs/delete-comp.c:88
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr "Er du sikker på at du vil slette journalindgangen '%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:91
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr "Er du sikker på at du vil slette denne unavngivne journalindgang?"
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr "Ønsker du at gemme ændringer?"
-
-#: calendar/gui/dialogs/task-editor.c:709
-msgid "Edit Task"
-msgstr "Redigér opgave"
-
-#: calendar/gui/dialogs/task-editor.c:714 calendar/gui/event-editor.c:382
-#, c-format
-msgid "Appointment - %s"
-msgstr "Aftale - %s"
-
-#: calendar/gui/dialogs/task-editor.c:717 calendar/gui/event-editor.c:385
-#, c-format
-msgid "Task - %s"
-msgstr "Opgave - %s"
-
-#: calendar/gui/dialogs/task-editor.c:720 calendar/gui/event-editor.c:388
-#, c-format
-msgid "Journal entry - %s"
-msgstr "Journalpunkt - %s"
-
-#: calendar/gui/dialogs/task-editor.c:734 calendar/gui/event-editor.c:402
-msgid "No summary"
-msgstr "Ingen sammendrag"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr "% færdi_g:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:158
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr "Klassificering"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-msgid "Date & Time"
-msgstr "Dato & tidspunkt"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr "Fuldført dato:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-msgid "Pri_vate"
-msgstr "Pri_vat"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-msgid "Progress"
-msgstr "Fremskridt"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr "Of_fentlig"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-msgid "Sta_rt Date:"
-msgstr "Sta_rt dato:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-msgid "Su_mmary:"
-msgstr "Sa_mmendrag:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr "Opgave"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-msgid "URL:"
-msgstr "URL:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr "_Fortrolig"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Contacts..."
-msgstr "_Kontakter..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-msgid "_Due Date:"
-msgstr "Slut-_dato:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-msgid "_Priority:"
-msgstr "_Prioritet:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "_Status:"
-msgstr "_Status:"
-
-#: calendar/gui/e-calendar-table.c:157
-msgid "Categories"
-msgstr "Kategorier"
-
-#: calendar/gui/e-calendar-table.c:159
-msgid "Completion Date"
-msgstr "Færdiggørelsesdato"
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "End Date"
-msgstr "Slutdato"
-
-#: calendar/gui/e-calendar-table.c:161
-msgid "Start Date"
-msgstr "Startdato"
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Geographical Position"
-msgstr "Geografisk position"
-
-#: calendar/gui/e-calendar-table.c:164
-msgid "Percent complete"
-msgstr "Procent færdig"
-
-#: calendar/gui/e-calendar-table.c:166
-msgid "Summary"
-msgstr "Sammendrag"
-
-#: calendar/gui/e-calendar-table.c:167
-msgid "Transparency"
-msgstr "Gennemsigtighed"
-
-#: calendar/gui/e-calendar-table.c:168
-msgid "URL"
-msgstr "URI"
-
-#: calendar/gui/e-calendar-table.c:169
-msgid "Alarms"
-msgstr "Alarmer"
-
-#: calendar/gui/e-calendar-table.c:170
-msgid "Click here to add a task"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "0%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "10%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "20%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "30%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:378
-#, c-format
-msgid "40%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:379
-#, c-format
-msgid "50%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:380
-#, c-format
-msgid "60%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:381
-#, c-format
-msgid "70%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:382
-#, c-format
-msgid "80%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:383
-#, c-format
-msgid "90%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:384
-#, c-format
-msgid "100%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:551
-msgid "Mark Complete"
-msgstr "Markér som fuldført"
-
-#: calendar/gui/e-calendar-table.c:552
-msgid "Mark the task complete"
-msgstr "Markér opgaven som fuldført"
-
-#: calendar/gui/e-calendar-table.c:557
-msgid "Edit this task..."
-msgstr "Ændr denne opgave..."
-
-#: calendar/gui/e-calendar-table.c:558
-msgid "Edit the task"
-msgstr "Ændr denne opgave"
-
-#: calendar/gui/e-calendar-table.c:560
-#: ui/evolution-task-editor-dialog.xml.h:19
-msgid "Delete this task"
-msgstr "Slet denne opgave"
-
-#: calendar/gui/e-calendar-table.c:561
-msgid "Delete the task"
-msgstr "Slet opgaven"
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:570 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:617
-msgid "am"
-msgstr " "
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:573 calendar/gui/e-week-view.c:303
-#: calendar/gui/print.c:616
-msgid "pm"
-msgstr " "
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:274 calendar/gui/e-day-view.c:1294
-#: calendar/gui/e-week-view-main-item.c:325
-msgid "%A %d %B"
-msgstr "%A %d %B"
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:278 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:334
-msgid "%a %d %b"
-msgstr "%a %d %b"
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:282 calendar/gui/e-day-view.c:1321
-#: calendar/gui/e-week-view-main-item.c:348
-msgid "%d %b"
-msgstr "%d %b"
-
-#: calendar/gui/e-day-view.c:3146 ui/evolution-calendar.xml.h:16
-msgid "New Appointment"
-msgstr "Ny aftale"
-
-#: calendar/gui/e-day-view.c:3148 calendar/gui/e-week-view.c:3280
-msgid "New All Day Event"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3153 calendar/gui/e-week-view.c:3285
-msgid "Go to Today"
-msgstr "Gå til i dag"
-
-#: calendar/gui/e-day-view.c:3155 calendar/gui/e-week-view.c:3287
-msgid "Go to Date..."
-msgstr "Gå til dato..."
-
-#: calendar/gui/e-day-view.c:3162 calendar/gui/e-week-view.c:3293
-#: ui/evolution-calendar.xml.h:19 ui/evolution-message-composer.xml.h:10
-msgid "Open"
-msgstr "Åbn"
-
-#: calendar/gui/e-day-view.c:3164 calendar/gui/e-week-view.c:3295
-msgid "Delete this Appointment"
-msgstr "Fjern denne aftale"
-
-#: calendar/gui/e-day-view.c:3166 calendar/gui/e-week-view.c:3297
-#: ui/evolution-event-editor.xml.h:45
-msgid "Schedule Meeting"
-msgstr "Planlæg møde"
-
-#: calendar/gui/e-day-view.c:3175 calendar/gui/e-week-view.c:3310
-msgid "Make this Occurrence Movable"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3177 calendar/gui/e-week-view.c:3312
-msgid "Delete this Occurrence"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3179
-msgid "Delete all Occurrences"
-msgstr ""
-
-#: calendar/gui/e-day-view-time-item.c:519
-#, c-format
-msgid "%02i minute divisions"
-msgstr "%02i minutters opdeling"
-
-#: calendar/gui/e-itip-control.c:161
-msgid "I couldn't update your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:167 calendar/gui/e-itip-control.c:510
-msgid "Component successfully updated."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:173
-msgid "There was an error loading the calendar file."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:197
-msgid "I couldn't open your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:458 calendar/gui/e-itip-control.c:529
-msgid "I couldn't load your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:470
-msgid "I couldn't read your calendar file!\n"
-msgstr "Kunne ikke læse din kalenderfil!\n"
-
-#: calendar/gui/e-itip-control.c:483
-msgid "This is a reply from someone who was uninvited!"
-msgstr "Dette er et svar fra nogen som ikke er inviteret!"
-
-#: calendar/gui/e-itip-control.c:499
-msgid "I couldn't update your calendar store."
-msgstr "Kunne ikke opdatere dit kalenderlager."
-
-#: calendar/gui/e-itip-control.c:540
-msgid "I couldn't delete the calendar component!\n"
-msgstr "Kunne ikke slette kalenderkomponenten!\n"
-
-#: calendar/gui/e-itip-control.c:550
-msgid "Component successfully deleted."
-msgstr "Sletning af komponent fuldført."
-
-#: calendar/gui/e-itip-control.c:694
-msgid "I don't recognize this type of calendar component."
-msgstr "Kan ikke genkende denne type kalenderkomponent."
-
-#: calendar/gui/e-itip-control.c:780
-msgid "Add to Calendar"
-msgstr "Tilføj til Kalender"
-
-#: calendar/gui/e-itip-control.c:814
-msgid " Accept "
-msgstr " Acceptér "
-
-#: calendar/gui/e-itip-control.c:815
-msgid " Decline "
-msgstr " Afvis "
-
-#: calendar/gui/e-itip-control.c:816
-msgid " Tentative "
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:860
-msgid "Update Calendar"
-msgstr "Opdatér kalender"
-
-#: calendar/gui/e-itip-control.c:883
-msgid "Cancel Meeting"
-msgstr "Annullér møde"
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, no-c-format
-msgid "%P %%"
-msgstr "%P %%"
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr "--til--"
-
-#: calendar/gui/e-itip-control.glade.h:4
-msgid "Calendar Message"
-msgstr "Kalenderbesked"
-
-#: calendar/gui/e-itip-control.glade.h:5 mail/mail-format.c:632
-msgid "Date:"
-msgstr "Dato:"
-
-#: calendar/gui/e-itip-control.glade.h:8
-msgid "Loading calendar..."
-msgstr "Indlæser kalender..."
-
-#: calendar/gui/e-itip-control.glade.h:9
-msgid "Organizer:"
-msgstr "Arrangør:"
-
-#: calendar/gui/e-itip-control.glade.h:10
-msgid "Server Message:"
-msgstr "Server-melding:"
-
-#: calendar/gui/e-itip-control.glade.h:11
-msgid "Summary:"
-msgstr "Sammendrag:"
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr "dagen begynder"
-
-#: calendar/gui/e-itip-control.glade.h:13
-msgid "date-start"
-msgstr "dagen slutter"
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-msgid "Attendee"
-msgstr "Deltager"
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-msgid "Attendee address"
-msgstr "Deltagers adresse"
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-msgid "Attendees: "
-msgstr "Deltagere:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr ""
-"Annullér\n"
-"møde"
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-msgid "Chair"
-msgstr "Formand"
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-msgid "Meeting Invitations"
-msgstr "Invitationer til møde"
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr "Ikke-deltager"
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr "Mulig deltager"
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-msgid "Organizer: "
-msgstr "Arrangør:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:14
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-"Offentliggør\n"
-"arrangement"
-
-#: calendar/gui/e-meeting-dialog.glade.h:16
-msgid "RSVP"
-msgstr "S.U."
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid ""
-"Request\n"
-"Meeting"
-msgstr ""
-"Anmod\n"
-"om møde"
-
-#: calendar/gui/e-meeting-dialog.glade.h:19
-msgid "Required Participant"
-msgstr "Nødvendig deltager"
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-msgid "Role"
-msgstr "Rolle"
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-msgid ""
-"Schedule\n"
-"Time"
-msgstr ""
-"Afsæt\n"
-"tid"
-
-#: calendar/gui/e-meeting-dialog.glade.h:23 filter/libfilter-i18n.h:49
-#: mail/message-list.c:1081
-msgid "Status"
-msgstr "Status"
-
-#: calendar/gui/e-tasks.c:149 calendar/gui/e-tasks.c:469
-#: calendar/gui/e-tasks.c:502
-msgid "All"
-msgstr "Alle"
-
-#: calendar/gui/e-tasks.c:155
-msgid "Category:"
-msgstr "Kategori:"
-
-#: calendar/gui/e-tasks.c:298
-#, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "Kunne ikke indlæse opgaverne i '%s'"
-
-#: calendar/gui/e-tasks.c:310
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr "Metoden der kræves for at indlæse '%s' er ikke understøttet"
-
-#: calendar/gui/event-editor.c:377
-msgid "Edit Appointment"
-msgstr "Redigér aftale"
-
-#: calendar/gui/event-editor.c:449
-msgid "on"
-msgstr "på"
-
-#: calendar/gui/event-editor.c:474 filter/filter-datespec.c:81
-msgid "day"
-msgstr "dag"
-
-#: calendar/gui/event-editor.c:601
-msgid "on the"
-msgstr "den"
-
-#: calendar/gui/event-editor.c:608
-msgid "th"
-msgstr "."
-
-#: calendar/gui/event-editor.c:754
-msgid "occurrences"
-msgstr "hændelser"
-
-#: calendar/gui/event-editor.c:871
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr "Denne aftale indeholder gentagelser som Evolution ikke kan redigere."
-
-#: calendar/gui/event-editor.c:1543
-#, c-format
-msgid " %d days"
-msgstr " %d dage"
-
-#: calendar/gui/event-editor.c:1545
-msgid " 1 day"
-msgstr " 1 dag"
-
-#: calendar/gui/event-editor.c:1548
-#, c-format
-msgid " %d weeks"
-msgstr " %d uger"
-
-#: calendar/gui/event-editor.c:1550
-msgid " 1 week"
-msgstr " 1 uge"
-
-#: calendar/gui/event-editor.c:1553
-#, c-format
-msgid " %d hours"
-msgstr " %d timer"
-
-#: calendar/gui/event-editor.c:1555
-msgid " 1 hour"
-msgstr " 1 time"
-
-#: calendar/gui/event-editor.c:1558
-#, c-format
-msgid " %d minutes"
-msgstr " %d minutter"
-
-#: calendar/gui/event-editor.c:1560
-msgid " 1 minute"
-msgstr " 1 minut"
-
-#: calendar/gui/event-editor.c:1563
-#, c-format
-msgid " %d seconds"
-msgstr " %d sekunder"
-
-#: calendar/gui/event-editor.c:1565
-msgid " 1 second"
-msgstr " 1 sekund"
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1588
-msgid "Play a sound"
-msgstr "Afspil lyd/sang"
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1591
-msgid "Show a dialog"
-msgstr "Vis dialog"
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1594
-msgid "Send an email"
-msgstr "Send besked"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1597
-msgid "Run a program"
-msgstr "Kø_r program"
-
-#: calendar/gui/event-editor.c:1612
-msgid " before start of appointment"
-msgstr " før begyndelse på aftale"
-
-#: calendar/gui/event-editor.c:1614
-msgid " after start of appointment"
-msgstr " efter begyndelse på aftale"
-
-#: calendar/gui/event-editor.c:1622
-msgid " before end of appointment"
-msgstr " før slutning på aftale"
-
-#: calendar/gui/event-editor.c:1624
-msgid " after end of appointment"
-msgstr " efter slutning på aftale"
-
-#: calendar/gui/event-editor.c:3132 calendar/gui/print.c:1097
-#: calendar/gui/print.c:1099 calendar/gui/print.c:1100
-msgid "%a %b %d %Y"
-msgstr "%a %d %b %Y"
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr "Varer he_le dagen"
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-msgid "Appointment"
-msgstr "Aftale"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-msgid "Appointment Basics"
-msgstr "Grundlæggende om aftaler"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-msgid "Custom recurrence"
-msgstr "Egendefineret genindtræffelse"
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr "Hver"
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-msgid "Exceptions"
-msgstr "Undtagelser"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-msgid "Modify"
-msgstr "Ændr"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-msgid "No recurrence"
-msgstr "Ingen genindtræffelse"
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-msgid "Preview"
-msgstr "Smugkig"
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Recurrence"
-msgstr "Gentagelse"
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-msgid "Recurrence Rule"
-msgstr "Regel for genindtræffelse"
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-msgid "Reminder"
-msgstr "Påmindelse"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-msgid "Settings..."
-msgstr "Indstillinger..."
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr "Simpel genindtræffelse"
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-msgid "_End time:"
-msgstr "S_lut-tid:"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Start time:"
-msgstr "_Start-tid:"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Starting date:"
-msgstr "_Start dato:"
-
-#. Automatically generated. Do not edit.
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:2
-msgid "after"
-msgstr "efter"
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:6
-msgid "before"
-msgstr "før"
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "day(s)"
-msgstr "dag(e)"
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-msgid "end of appointment"
-msgstr "slut på aftale"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "for"
-msgstr "for"
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr "for evigt"
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-msgid "hour(s)"
-msgstr "time(r)"
-
-#: calendar/gui/event-editor-dialog.glade.h:40 mail/mail-config.glade.h:87
-msgid "minute(s)"
-msgstr "minut(ter)"
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "month(s)"
-msgstr "måned(er)"
-
-#: calendar/gui/event-editor-dialog.glade.h:42
-msgid "start of appointment"
-msgstr "start på aftale"
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-msgid "until"
-msgstr "til"
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "week(s)"
-msgstr "uge(r)"
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "year(s)"
-msgstr "år"
-
-#: calendar/gui/e-week-view.c:3278 calendar/gui/e-week-view.c:3301
-msgid "New Appointment..."
-msgstr "Ny aftale..."
-
-#: calendar/gui/e-week-view.c:3314
-msgid "Delete All Occurrences"
-msgstr "Slet alle opføringer"
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:342
-msgid "%d %B"
-msgstr "%d %b"
-
-#: calendar/gui/gnome-cal.c:234
-msgid "Summary contains"
-msgstr "Sammendrag indeholder"
-
-#: calendar/gui/gnome-cal.c:235
-msgid "Description contains"
-msgstr "Beskrivelse indeholder"
-
-#: calendar/gui/gnome-cal.c:236
-#, fuzzy
-msgid "Comment contains"
-msgstr "Navn indeholder"
-
-#: calendar/gui/gnome-cal.c:237
-msgid "Has category"
-msgstr "Har kategori"
-
-#: calendar/gui/gnome-cal.c:840
-#, c-format
-msgid "Could not open the folder in `%s'"
-msgstr "Kunne ikke åbne mappen i `%s'"
-
-#: calendar/gui/gnome-cal.c:851
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr "Metoden som er nødvendig for at åbne `%s' er ikke støttet"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr "En simpel Bonobo kontrol som viser en kalender."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-msgid "Evolution calendar executive summary component."
-msgstr "Evolution kalender eksekutivoversigt-komponent."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr "Evolution kalender ITip/iMip fremviser"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr "Evolution-komponent for behandling af kalenderen."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-msgid "Factory for the Calendar Summary component."
-msgstr "Fabrik for kalenderoversigts-komponenten."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-msgid "Factory for the Evolution calendar component."
-msgstr "Fabrik for evolutions kalenderkomponent."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-msgid "Factory for the calendar iTip view control"
-msgstr "Fabrik for kalenderens iTip visningskontrol"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-msgid "Factory for the sample Calendar control"
-msgstr "Fabrik for eksempelkontrol for kalender"
-
-#: calendar/gui/goto-dialog.glade.h:1
-msgid "April"
-msgstr "april"
-
-#: calendar/gui/goto-dialog.glade.h:2
-msgid "August"
-msgstr "august"
-
-#: calendar/gui/goto-dialog.glade.h:3
-msgid "December"
-msgstr "december"
-
-#: calendar/gui/goto-dialog.glade.h:4
-msgid "February"
-msgstr "februar"
-
-#: calendar/gui/goto-dialog.glade.h:5
-msgid "Go To Date"
-msgstr "Gå til dato"
-
-#: calendar/gui/goto-dialog.glade.h:6
-msgid "Go To Today"
-msgstr "Gå til i dag"
-
-#: calendar/gui/goto-dialog.glade.h:7
-msgid "January"
-msgstr "januar"
-
-#: calendar/gui/goto-dialog.glade.h:8
-msgid "July"
-msgstr "juli"
-
-#: calendar/gui/goto-dialog.glade.h:9
-msgid "June"
-msgstr "juni"
-
-#: calendar/gui/goto-dialog.glade.h:10
-msgid "March"
-msgstr "marts"
-
-#: calendar/gui/goto-dialog.glade.h:11
-msgid "May"
-msgstr "maj"
-
-#: calendar/gui/goto-dialog.glade.h:12
-msgid "November"
-msgstr "november"
-
-#: calendar/gui/goto-dialog.glade.h:13
-msgid "October"
-msgstr "oktober"
-
-#: calendar/gui/goto-dialog.glade.h:14
-msgid "September"
-msgstr "september"
-
-#: calendar/gui/print.c:300
-msgid "1st"
-msgstr "1."
-
-#: calendar/gui/print.c:300
-msgid "2nd"
-msgstr "2."
-
-#: calendar/gui/print.c:300
-msgid "3rd"
-msgstr "3."
-
-#: calendar/gui/print.c:300
-msgid "4th"
-msgstr "4."
-
-#: calendar/gui/print.c:300
-msgid "5th"
-msgstr "5."
-
-#: calendar/gui/print.c:301
-msgid "6th"
-msgstr "6."
-
-#: calendar/gui/print.c:301
-msgid "7th"
-msgstr "7."
-
-#: calendar/gui/print.c:301
-msgid "8th"
-msgstr "8."
-
-#: calendar/gui/print.c:301
-msgid "9th"
-msgstr "9."
-
-#: calendar/gui/print.c:301
-msgid "10th"
-msgstr "10."
-
-#: calendar/gui/print.c:302
-msgid "11th"
-msgstr "11."
-
-#: calendar/gui/print.c:302
-msgid "12th"
-msgstr "12."
-
-#: calendar/gui/print.c:302
-msgid "13th"
-msgstr "13."
-
-#: calendar/gui/print.c:302
-msgid "14th"
-msgstr "14."
-
-#: calendar/gui/print.c:302
-msgid "15th"
-msgstr "15."
-
-#: calendar/gui/print.c:303
-msgid "16th"
-msgstr "16."
-
-#: calendar/gui/print.c:303
-msgid "17th"
-msgstr "17."
-
-#: calendar/gui/print.c:303
-msgid "18th"
-msgstr "18."
-
-#: calendar/gui/print.c:303
-msgid "19th"
-msgstr "19."
-
-#: calendar/gui/print.c:303
-msgid "20th"
-msgstr "20."
-
-#: calendar/gui/print.c:304
-msgid "21st"
-msgstr "21."
-
-#: calendar/gui/print.c:304
-msgid "22nd"
-msgstr "22."
-
-#: calendar/gui/print.c:304
-msgid "23rd"
-msgstr "23."
-
-#: calendar/gui/print.c:304
-msgid "24th"
-msgstr "24."
-
-#: calendar/gui/print.c:304
-msgid "25th"
-msgstr "25."
-
-#: calendar/gui/print.c:305
-msgid "26th"
-msgstr "26."
-
-#: calendar/gui/print.c:305
-msgid "27th"
-msgstr "27."
-
-#: calendar/gui/print.c:305
-msgid "28th"
-msgstr "28."
-
-#: calendar/gui/print.c:305
-msgid "29th"
-msgstr "29."
-
-#: calendar/gui/print.c:305
-msgid "30th"
-msgstr "30."
-
-#: calendar/gui/print.c:306
-msgid "31st"
-msgstr "31."
-
-#: calendar/gui/print.c:362
-msgid "Su"
-msgstr "søn"
-
-#: calendar/gui/print.c:362
-msgid "Mo"
-msgstr "man"
-
-#: calendar/gui/print.c:362
-msgid "Tu"
-msgstr "tir"
-
-#: calendar/gui/print.c:362
-msgid "We"
-msgstr "ons"
-
-#: calendar/gui/print.c:362
-msgid "Th"
-msgstr "tor"
-
-#: calendar/gui/print.c:362
-msgid "Fr"
-msgstr "fre"
-
-#: calendar/gui/print.c:362
-msgid "Sa"
-msgstr "lør"
-
-#. Day
-#: calendar/gui/print.c:1078
-msgid "Current day (%a %b %d %Y)"
-msgstr "I dag (%a %d %b %Y)"
-
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1096
-msgid "%a %b %d"
-msgstr "%a %d %b"
-
-#: calendar/gui/print.c:1093
-msgid "%a %d %Y"
-msgstr "%a %d %Y"
-
-#: calendar/gui/print.c:1104
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr "Denne uge (%s - %s)"
-
-#. Month
-#: calendar/gui/print.c:1112
-msgid "Current month (%b %Y)"
-msgstr "Denne måned (%b %Y)"
-
-#. Year
-#: calendar/gui/print.c:1119
-msgid "Current year (%Y)"
-msgstr "Dette år (%Y)"
-
-#: calendar/gui/print.c:1156
-msgid "Print Calendar"
-msgstr "Udskriv kalender"
-
-#: calendar/gui/print.c:1321 mail/mail-callbacks.c:1560
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:24
-msgid "Print Preview"
-msgstr "Forhåndsvisning af udskrift"
-
-#: calendar/gui/tasks-control.c:108
-msgid "The URI of the tasks folder to display"
-msgstr "URI for opgavemappen der skal vises"
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-"Evolution har udført automatisk migration af opgaverne fra din kalendermappe "
-"til den nye opgave-mappe."
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-"Evolution har forsøgt at migrere opgaverne som var i din kalendermappe til "
-"den nye opgavemappe.\n"
-"Nogen af opgaverne kunne ikke migreres, så denne proces vil kunne forsøges "
-"igen i fremtiden."
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-"Kunne ikke åbne `%s'; ingen opføringer fra kalendermappen vil flyttes til "
-"opgavemappen."
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-
-#: calendar/gui/weekday-picker.c:315 calendar/gui/weekday-picker.c:410
-msgid "SMTWTFS"
-msgstr "SMTOTFL"
-
-#: calendar/pcs/query.c:218
-msgid "time-now expects 0 arguments"
-msgstr ""
-
-#: calendar/pcs/query.c:242
-msgid "make-time expects 1 argument"
-msgstr ""
-
-#: calendar/pcs/query.c:247
-msgid "make-time expects argument 1 to be a string"
-msgstr ""
-
-#: calendar/pcs/query.c:255
-msgid "make-time argument 1 must be an ISO 8601 date/time string"
-msgstr ""
-
-#: calendar/pcs/query.c:281
-msgid "time-add-day expects 2 arguments"
-msgstr ""
-
-#: calendar/pcs/query.c:286
-msgid "time-add-day expects argument 1 to be a time_t"
-msgstr ""
-
-#: calendar/pcs/query.c:293
-msgid "time-add-day expects argument 2 to be an integer"
-msgstr ""
-
-#: calendar/pcs/query.c:318
-msgid "time-day-begin expects 1 argument"
-msgstr ""
-
-#: calendar/pcs/query.c:323
-msgid "time-day-begin expects argument 1 to be a time_t"
-msgstr ""
-
-#: calendar/pcs/query.c:348
-msgid "time-day-end expects 1 argument"
-msgstr ""
-
-#: calendar/pcs/query.c:353
-msgid "time-day-end expects argument 1 to be a time_t"
-msgstr ""
-
-#: calendar/pcs/query.c:389
-msgid "get-vtype expects 0 arguments"
-msgstr ""
-
-#: calendar/pcs/query.c:472
-msgid "occur-in-time-range? expects 2 arguments"
-msgstr ""
-
-#: calendar/pcs/query.c:477
-msgid "occur-in-time-range? expects argument 1 to be a time_t"
-msgstr ""
-
-#: calendar/pcs/query.c:484
-msgid "occur-in-time-range? expects argument 2 to be a time_t"
-msgstr ""
-
-#: calendar/pcs/query.c:611
-msgid "contains? expects 2 arguments"
-msgstr ""
-
-#: calendar/pcs/query.c:616
-msgid "contains? expects argument 1 to be a string"
-msgstr ""
-
-#: calendar/pcs/query.c:623
-msgid "contains? expects argument 2 to be a string"
-msgstr ""
-
-#: calendar/pcs/query.c:640
-msgid ""
-"contains? expects argument 1 to be one of \"any\", \"summary\", "
-"\"description\""
-msgstr ""
-
-#: calendar/pcs/query.c:678
-msgid "has-categories? expects at least 1 argument"
-msgstr ""
-
-#: calendar/pcs/query.c:684
-msgid "has-categories? expects all arguments to be strings"
-msgstr ""
-
-#: calendar/pcs/query.c:932
-msgid "Evaluation of the search expression did not yield a boolean value"
-msgstr ""
-
-#: camel/camel-cipher-context.c:171
-#, fuzzy
-msgid "Signing is not supported by this cipher"
-msgstr "Den angivne type er ikke understøttet i denne gemning"
-
-#: camel/camel-cipher-context.c:211
-#, fuzzy
-msgid "Clearsigning is not supported by this cipher"
-msgstr "Den angivne type er ikke understøttet i denne gemning"
-
-#: camel/camel-cipher-context.c:251
-#, fuzzy
-msgid "Verifying is not supported by this cipher"
-msgstr "Den angivne type er ikke understøttet i denne gemning"
-
-#: camel/camel-cipher-context.c:294
-#, fuzzy
-msgid "Encryption is not supported by this cipher"
-msgstr "Den angivne type er ikke understøttet i denne gemning"
-
-#: camel/camel-cipher-context.c:336
-#, fuzzy
-msgid "Decryption is not supported by this cipher"
-msgstr "Den angivne type er ikke understøttet i denne gemning"
-
-#: camel/camel-disco-store.c:271
-msgid "You must be working online to complete this operation"
-msgstr ""
-
-#: camel/camel-filter-driver.c:534 camel/camel-filter-driver.c:543
-msgid "Syncing folders"
-msgstr ""
-
-#: camel/camel-filter-driver.c:643
-msgid "Unable to open spool folder"
-msgstr ""
-
-#: camel/camel-filter-driver.c:652
-msgid "Unable to process spool folder"
-msgstr ""
-
-#: camel/camel-filter-driver.c:666
-msgid "Getting message %d (%d%%)"
-msgstr "Henter besked %d (%d%%)"
-
-#: camel/camel-filter-driver.c:670 camel/camel-filter-driver.c:679
-#, c-format
-msgid "Failed message %d"
-msgstr ""
-
-#: camel/camel-filter-driver.c:671
-msgid "Cannot open message"
-msgstr "Kan ikke åbne besked"
-
-#: camel/camel-filter-driver.c:690 camel/camel-filter-driver.c:788
-msgid "Syncing folder"
-msgstr "Synkroniserer mappe"
-
-#: camel/camel-filter-driver.c:694 camel/camel-filter-driver.c:793
-msgid "Complete"
-msgstr "Færdig"
-
-#: camel/camel-filter-driver.c:748
-#, c-format
-msgid "Getting message %d of %d"
-msgstr "Henter besked %d af %d"
-
-#: camel/camel-filter-driver.c:753 camel/camel-filter-driver.c:771
-#, c-format
-msgid "Failed at message %d of %d"
-msgstr "Fejlede ved besked %d af %d"
-
-#: camel/camel-filter-driver.c:866
-#, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr ""
-
-#: camel/camel-filter-driver.c:871
-#, c-format
-msgid "Error executing filter: %s: %s"
-msgstr ""
-
-#: camel/camel-filter-search.c:439 camel/camel-filter-search.c:445
-#, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr ""
-
-#: camel/camel-folder-search.c:328
-#, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-folder-search.c:338
-#, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-folder-search.c:485 camel/camel-folder-search.c:513
-msgid "(match-all) requires a single bool result"
-msgstr ""
-
-#: camel/camel-folder-search.c:559
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr ""
-
-#: camel/camel-folder-search.c:670 camel/camel-folder-search.c:714
-msgid "Invalid type in body-contains, expecting string"
-msgstr "Ugyldig type i krop-beholder, forventer streng"
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:92 camel/camel-lock.c:111 camel/camel-movemail.c:138
-#: camel/camel-movemail.c:185
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "Kunne ikke oprette låsefil for %s: %s"
-
-#: camel/camel-lock.c:151 camel/camel-movemail.c:219
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr "Tidsafbrud ved ventning på låsefil for %s. Prøv igen senere."
-
-#: camel/camel-lock.c:201
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr "Kunne ikke få fat på lås ved brug af fcntl(2): %s "
-
-#: camel/camel-lock.c:255
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr "Kunne ikke få fat på lås ved brug af flock(2): %s"
-
-#: camel/camel-movemail.c:101
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr "Kunne ikke tjekke e-post fil %s: %s"
-
-#: camel/camel-movemail.c:148
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr "Kunne ikke åbne postfil %s: %s"
-
-#: camel/camel-movemail.c:158
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr "Kunne ikke åbne midlertidig postfil %s: %s"
-
-#: camel/camel-movemail.c:199
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr "Kunne ikke tjekke låsefil for %s: %s"
-
-#: camel/camel-movemail.c:245
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr "Fejl ved læsning af postfil: %s"
-
-#: camel/camel-movemail.c:256
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr "Fejl ved skriving af midlertidig fil: %s"
-
-#: camel/camel-movemail.c:274
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr "Kunne ikke gemme post i midlertidig fil %s: %s"
-
-#: camel/camel-movemail.c:306
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr "Kunne ikke oprette rør: %s"
-
-#: camel/camel-movemail.c:318
-#, c-format
-msgid "Could not fork: %s"
-msgstr "Kunne ikke udføre fork: %s"
-
-#: camel/camel-movemail.c:356
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr "Movemail-programmet mislykkedes: %s"
-
-#: camel/camel-movemail.c:357
-msgid "(Unknown error)"
-msgstr "(Ukendt fejl)"
-
-#: camel/camel-movemail.c:587
-#, c-format
-msgid "Error copying mail temp file: %s"
-msgstr ""
-
-#: camel/camel-pgp-context.c:190
-#, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr "Indtast venligst din %s adgangskode for %s"
-
-#: camel/camel-pgp-context.c:193
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr "Indtast venligst din %s adgangskode"
-
-#: camel/camel-pgp-context.c:511
-msgid "No plaintext to sign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:518 camel/camel-pgp-context.c:690
-#: camel/camel-pgp-context.c:1057 camel/camel-pgp-context.c:1269
-msgid "No password provided."
-msgstr "Ingen adgangskode oplyst."
-
-#: camel/camel-pgp-context.c:524 camel/camel-pgp-context.c:696
-#: camel/camel-pgp-context.c:879 camel/camel-pgp-context.c:1064
-#: camel/camel-pgp-context.c:1276
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr "Kunne ikke oprette rør til GPG/PGP: %s"
-
-#: camel/camel-pgp-context.c:683
-msgid "No plaintext to clearsign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:873
-msgid "No plaintext to verify."
-msgstr ""
-
-#: camel/camel-pgp-context.c:890
-#, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "Kunne ikke oprette midlertidig fil: %s"
-
-#: camel/camel-pgp-context.c:1047
-#, fuzzy
-msgid "No plaintext to encrypt."
-msgstr "Klik på ikonen for at dekryptere."
-
-#: camel/camel-pgp-context.c:1073
-msgid "No recipients specified"
-msgstr "Ingen modtagere specificeret"
-
-#: camel/camel-pgp-context.c:1261
-msgid "No ciphertext to decrypt."
-msgstr ""
-
-#: camel/camel-pkcs7-context.c:197 camel/camel-smime-context.c:195
-#, fuzzy, c-format
-msgid "Please enter your password for %s"
-msgstr "Indtast venligst din %s adgangskode for %s"
-
-#: camel/camel-pkcs7-context.c:213 camel/camel-smime-context.c:211
-#, fuzzy
-msgid "Error hashing password."
-msgstr "Fejl under gemning af genveje."
-
-#: camel/camel-pkcs7-context.c:222 camel/camel-smime-context.c:220
-msgid "Invalid password."
-msgstr "Ugyldig adgangskode."
-
-#: camel/camel-pkcs7-context.c:329 camel/camel-smime-context.c:328
-#, fuzzy, c-format
-msgid "Could not sign: certificate not found for \"%s\"."
-msgstr "Kunne ikke oprette låsefil for %s: %s"
-
-#: camel/camel-pkcs7-context.c:378
-#, fuzzy, c-format
-msgid "Could not clearsign: certificate not found for \"%s\"."
-msgstr "Kunne ikke oprette låsefil for %s: %s"
-
-#: camel/camel-pkcs7-context.c:567 camel/camel-smime-context.c:529
-msgid "Could not encrypt: failed to create enveloped data."
-msgstr ""
-
-#: camel/camel-pkcs7-context.c:590 camel/camel-smime-context.c:536
-msgid "Could not encrypt: failed to create encryption context."
-msgstr ""
-
-#: camel/camel-pkcs7-context.c:620 camel/camel-smime-context.c:571
-#, fuzzy, c-format
-msgid "Could not encrypt data: invalid user key: \"%s\"."
-msgstr "Kunne ikke koble til tjener: %s."
-
-#: camel/camel-pkcs7-context.c:626 camel/camel-smime-context.c:577
-#, fuzzy
-msgid "Could not encrypt: encoding failed."
-msgstr "Kunne ikke oprette rør: %s"
-
-#: camel/camel-pkcs7-context.c:677 camel/camel-smime-context.c:627
-msgid "Failed to decrypt: Unknown"
-msgstr ""
-
-#: camel/camel-provider.c:131
-#, c-format
-msgid "Could not load %s: Module loading not supported on this system."
-msgstr ""
-
-#: camel/camel-provider.c:140
-#, c-format
-msgid "Could not load %s: %s"
-msgstr "Kunne ikke indlæse %s: %s"
-
-#: camel/camel-provider.c:148
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr "Kunne ikke indlæse %s: Ingen initieringskode i modulet."
-
-#: camel/camel-remote-store.c:191
-#, c-format
-msgid "%s server %s"
-msgstr "%s-tjener %s"
-
-#: camel/camel-remote-store.c:195
-#, c-format
-msgid "%s service for %s on %s"
-msgstr "%s-tjeneste for %s på %s"
-
-#: camel/camel-remote-store.c:252
-msgid "Connection cancelled"
-msgstr "Forbindelse annulleret"
-
-#: camel/camel-remote-store.c:255
-#: camel/providers/smtp/camel-smtp-transport.c:269
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr "Kunne ikke koble til %s (port %d): %s"
-
-#: camel/camel-remote-store.c:256
-msgid "(unknown host)"
-msgstr "(ukendt vært)"
-
-#: camel/camel-remote-store.c:337 camel/camel-remote-store.c:399
-#: camel/camel-remote-store.c:470
-#: camel/providers/imap/camel-imap-command.c:287
-msgid "Operation cancelled"
-msgstr "Handling annulleret"
-
-#: camel/camel-remote-store.c:476
-msgid "Server unexpectedly disconnected"
-msgstr "Server frakoblet uventet"
-
-#: camel/camel-sasl-anonymous.c:33
-msgid "Anonymous"
-msgstr "Anonym"
-
-#: camel/camel-sasl-anonymous.c:35
-msgid "This option will connect to the server using an anonymous login."
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:110 camel/camel-sasl-plain.c:87
-msgid "Authentication failed."
-msgstr "Godkendelse fejlede."
-
-#: camel/camel-sasl-anonymous.c:119
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:131
-#, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:143
-#, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-cram-md5.c:35
-msgid "CRAM-MD5"
-msgstr "CRAM-MD5"
-
-#: camel/camel-sasl-cram-md5.c:37
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:43
-msgid "DIGEST-MD5"
-msgstr "DIGEST-MD5"
-
-#: camel/camel-sasl-digest-md5.c:45
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:810
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:819
-msgid "Server challenge invalid\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:825
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:847
-msgid "Server response did not contain authorization data\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:865
-msgid "Server response contained incomplete authorization data\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:875
-msgid "Server response does not match\n"
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "Kerberos 4"
-msgstr "Kerberos 4"
-
-#: camel/camel-sasl-kerberos4.c:42
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:161
-#, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr ""
-"Kunne ikke få fat på Kerberos billet:\n"
-"%s"
-
-#: camel/camel-sasl-kerberos4.c:218
-#: camel/providers/imap/camel-imap-store.c:433
-msgid "Bad authentication response from server."
-msgstr "Forkert autoriseringsbesked fra server."
-
-#: camel/camel-sasl-login.c:32
-msgid "NT Login"
-msgstr "NT-logind"
-
-#: camel/camel-sasl-login.c:34 camel/camel-sasl-plain.c:34
-msgid "This option will connect to the server using a simple password."
-msgstr ""
-
-#: camel/camel-sasl-login.c:127
-#, fuzzy
-msgid "Unknown authentication state."
-msgstr "Autenticering kræves"
-
-#: camel/camel-search-private.c:111
-#, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr ""
-
-#: camel/camel-service.c:154
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr "URL '%s' skal indeholde et brugernavn"
-
-#: camel/camel-service.c:162
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr "URL '%s' skal indeholde et vertsnavn"
-
-#: camel/camel-service.c:170
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr "URL '%s' skal indeholde en sti"
-
-#: camel/camel-service.c:548
-#, c-format
-msgid "Resolving: %s"
-msgstr "Løser: '%s'"
-
-#: camel/camel-service.c:575
-#, c-format
-msgid "Failure in name lookup: %s"
-msgstr ""
-
-#: camel/camel-service.c:600
-#, c-format
-msgid "Host lookup failed: %s: host not found"
-msgstr ""
-
-#: camel/camel-service.c:602
-#, c-format
-msgid "Host lookup failed: %s: unknown reason"
-msgstr ""
-
-#: camel/camel-session.c:68
-msgid "Virtual folder email provider"
-msgstr "E-post-udbyder for virtuelle mapper"
-
-#: camel/camel-session.c:70
-msgid "For reading mail as a query of another set of folders"
-msgstr "For læsning af e-post som en anmodning på et andet sæt af mapper"
-
-#: camel/camel-session.c:295 camel/camel-session.c:364
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr "Ingen udbyder tilgængelig for protokol `%s'"
-
-#: camel/camel-session.c:479
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"Kan ikke oprette katalog %s:\n"
-"%s"
-
-#: camel/camel-smime-context.c:344
-#, fuzzy
-msgid "Could not sign: failed to create content info."
-msgstr "Kan ikke oprette komponeringsvinduet."
-
-#: camel/camel-smime-context.c:351
-msgid "Could not sign: failed to create signing context."
-msgstr ""
-
-#: camel/camel-smime-context.c:357
-#, fuzzy
-msgid "Could not sign: failed to create signature."
-msgstr "Kunne ikke indlæse sammendrag for %s"
-
-#: camel/camel-smime-context.c:384
-#, fuzzy
-msgid "'clearsign' is not supported by S/MIME."
-msgstr "Den angivne type er ikke understøttet i denne gemning"
-
-#. Fill in the new fields
-#: camel/camel-store.c:378 mail/mail-ops.c:1007 mail/mail-ops.c:1014
-#: mail/mail-ops.c:1032 mail/mail-ops.c:1033
-msgid "Trash"
-msgstr "Papirkurv"
-
-#: camel/camel-tcp-stream-ssl.c:348
-#, c-format
-msgid ""
-"EMail: %s\n"
-"Common Name: %s\n"
-"Organization Unit: %s\n"
-"Organization: %s\n"
-"Locality: %s\n"
-"State: %s\n"
-"Country: %s"
-msgstr ""
-
-#. construct our user prompt
-#: camel/camel-tcp-stream-openssl.c:428 camel/camel-tcp-stream-ssl.c:364
-#, c-format
-msgid ""
-"Bad certificate from %s:\n"
-"\n"
-"%s\n"
-"\n"
-"Do you wish to accept anyway?"
-msgstr ""
-
-#: camel/camel-tcp-stream-openssl.c:423
-#, fuzzy, c-format
-msgid ""
-"Issuer: %s\n"
-"Subject: %s"
-msgstr "Emne er %s"
-
-#: camel/camel-url.c:289
-#, c-format
-msgid "Could not parse URL `%s'"
-msgstr ""
-
-#: camel/camel-vee-folder.c:451
-#, fuzzy, c-format
-msgid "No such message %s in %s"
-msgstr "Ingen sådan besked: %s"
-
-#: camel/camel-vee-folder.c:546
-#, c-format
-msgid "No such message: %s"
-msgstr "Ingen sådan besked: %s"
-
-#: camel/camel-vtrash-folder.c:109
-#, fuzzy
-msgid "You cannot copy messages from this trash folder."
-msgstr ""
-"Du kan kun redigere beskeder lagret\n"
-"i Skitse-kataloget."
-
-#: camel/providers/imap/camel-imap-message-cache.c:150
-#, fuzzy, c-format
-msgid "Could not open cache directory: %s"
-msgstr "Kan ikke oprette katalog %s: %s"
-
-#: camel/providers/imap/camel-imap-command.c:232
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "Uventet svar fra IMAP-tjener: %s"
-
-#: camel/providers/imap/camel-imap-command.c:240
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr "IMAP-kommando mislykkedes: %s"
-
-#: camel/providers/imap/camel-imap-command.c:241 shell/e-storage.c:481
-msgid "Unknown error"
-msgstr "Ukendt fejl"
-
-#: camel/providers/imap/camel-imap-command.c:295
-msgid "Server response ended too soon."
-msgstr "Serversvar afsluttet for tidligt."
-
-#: camel/providers/imap/camel-imap-command.c:487
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr "Svar fra IMAP-tjener indeholdt ikke %s-information"
-
-#: camel/providers/imap/camel-imap-command.c:524
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr "Uventet svar 'OK' fra IMAP-tjener: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:172
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr "Kan ikke oprette katalog %s: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:191
-#, c-format
-msgid "Could not load summary for %s"
-msgstr "Kunne ikke indlæse sammendrag for %s"
-
-#: camel/providers/imap/camel-imap-folder.c:364
-msgid "Scanning IMAP folder"
-msgstr "Skanner IMAP-mapper"
-
-#: camel/providers/imap/camel-imap-folder.c:1047
-#: camel/providers/imap/camel-imap-folder.c:1281
-msgid "This message is not currently available"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-folder.c:1075
-#: camel/providers/imap/camel-imap-folder.c:1314
-msgid "Could not find message body in FETCH response."
-msgstr "Kunne ikke finde beskedskrop i FETCH-svar."
-
-#: camel/providers/imap/camel-imap-provider.c:43 mail/mail-config.glade.h:13
-msgid "Checking for new mail"
-msgstr "Tjekker for nyt post"
-
-#: camel/providers/imap/camel-imap-provider.c:45
-msgid "Check for new messages in all folders"
-msgstr "Tjek for nye beskeder i alle mapper"
-
-#: camel/providers/imap/camel-imap-provider.c:48 shell/e-shell-view.c:552
-msgid "Folders"
-msgstr "Mapper"
-
-#: camel/providers/imap/camel-imap-provider.c:50
-msgid "Show only subscribed folders"
-msgstr "Vis kun abonnerede mapper"
-
-#: camel/providers/imap/camel-imap-provider.c:52
-msgid "Override server-supplied folder namespace"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:54
-msgid "Namespace"
-msgstr "Navnerum"
-
-#: camel/providers/imap/camel-imap-provider.c:57
-msgid "Apply filters to new messages in INBOX on this server"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:63
-msgid "IMAPv4"
-msgstr "IMAPv4"
-
-#: camel/providers/imap/camel-imap-provider.c:65
-msgid "For reading and storing mail on IMAP servers."
-msgstr "For læsning og gemning af e-post på IMAP-tjenere."
-
-#: camel/providers/imap/camel-imap-provider.c:82
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr ""
-"Dette valg vil lade dig koble til en IMAP-tjener ved at bruge en "
-"klartekst-adgangskode."
-
-#: camel/providers/imap/camel-imap-store.c:456
-#, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:466
-#: camel/providers/smtp/camel-smtp-transport.c:366
-#, c-format
-msgid "No support for authentication type %s"
-msgstr "Ingen støtte for autenticeringstype %s"
-
-#: camel/providers/imap/camel-imap-store.c:490
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr "%sIndtast venligst IMAP-adgangskode for %s@%s"
-
-#: camel/providers/imap/camel-imap-store.c:505
-#: camel/providers/smtp/camel-smtp-transport.c:410
-msgid "You didn't enter a password."
-msgstr "Du indtastede ikke en adgangskode."
-
-#: camel/providers/imap/camel-imap-store.c:531
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Kunne ikke autenticere mod IMAP-tjener.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/imap/camel-imap-store.c:803 mail/mail-local.c:334
-#, c-format
-msgid "No such folder %s"
-msgstr "Mappen %s eksisterer ikke"
-
-#: camel/providers/local/camel-local-provider.c:39
-msgid "MH-format mail directories"
-msgstr "MH-formaterede postkataloger"
-
-#: camel/providers/local/camel-local-provider.c:40
-msgid "For storing local mail in MH-like mail directories"
-msgstr "For gemning af lokal e-post i MH-lignende beskedskataloger "
-
-#: camel/providers/local/camel-local-provider.c:49
-msgid "Standard Unix mailbox file"
-msgstr "Standard Unix-postkassefil"
-
-#: camel/providers/local/camel-local-provider.c:50
-msgid "For storing local mail in standard mbox format"
-msgstr "For gemning af lokal e-post i standard mbox format"
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "Qmail maildir-format mail files"
-msgstr "Qmail maildir-formaterede postfiler"
-
-#: camel/providers/local/camel-local-provider.c:60
-msgid "For storing local mail in qmail maildir directories"
-msgstr "For gemning af lokal e-post i qmail beskedskataloger"
-
-#: camel/providers/local/camel-local-store.c:127
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr "Gemme-rod %s er ikke en absolut sti"
-
-#: camel/providers/local/camel-local-store.c:134
-#, c-format
-msgid "Store root %s is not a regular directory"
-msgstr "Gemme-rod %s er ikke et almindeligt katalog"
-
-#: camel/providers/local/camel-local-store.c:142
-#: camel/providers/local/camel-local-store.c:158
-#, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "Kan ikke få fat på mappe: %s: %s"
-
-#: camel/providers/local/camel-local-store.c:173
-msgid "Local stores do not have an inbox"
-msgstr "Lokale gemmesteder har ikke en indbakke"
-
-#: camel/providers/local/camel-local-store.c:183
-#, c-format
-msgid "Local mail file %s"
-msgstr "Lokal e-post-fil %s"
-
-#: camel/providers/local/camel-local-store.c:237
-#, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr "Kunne ikke ændre navn på mappe %s til %s: %s"
-
-#: camel/providers/local/camel-local-store.c:279
-#, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr "Kunne ikke slette oversigtsfil `%s': %s"
-
-#: camel/providers/local/camel-local-store.c:289
-#, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr "Kunne ikke slette indeksfil `%s': %s"
-
-#: camel/providers/local/camel-local-summary.c:404
-msgid "Unable to add message to summary: unknown reason"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-folder.c:150
-#: camel/providers/local/camel-maildir-folder.c:158
-#: camel/providers/local/camel-maildir-folder.c:169
-#, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr "Kan ikke tilføje besked i maildir-mappe: %s: %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-maildir-folder.c:209
-#: camel/providers/local/camel-maildir-folder.c:217
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#: camel/providers/local/camel-mh-folder.c:194
-#: camel/providers/local/camel-mh-folder.c:202
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-"Kan ikke hente besked: %s\n"
-" %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-msgid "No such message"
-msgstr "Ingen sådan besked"
-
-#: camel/providers/local/camel-maildir-folder.c:218
-#: camel/providers/local/camel-mh-folder.c:203
-msgid "Invalid message contents"
-msgstr "Ugyldigt indhold af meddelelse"
-
-#: camel/providers/local/camel-maildir-store.c:96
-#: camel/providers/local/camel-mh-store.c:90
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-"Kan ikke åbne mappe `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:100
-#: camel/providers/local/camel-mbox-store.c:101
-#: camel/providers/local/camel-mh-store.c:97
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr "Mappen `%s' eksisterer ikke."
-
-#: camel/providers/local/camel-maildir-store.c:107
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-"Kunne ikke oprette mappe `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:122
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr "`%s' er ikke et maildir katalog."
-
-#: camel/providers/local/camel-maildir-store.c:151
-#: camel/providers/local/camel-maildir-store.c:188
-#: camel/providers/local/camel-mh-store.c:127
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr "Kunne ikke slette mappe `%s': %s"
-
-#: camel/providers/local/camel-maildir-store.c:152
-msgid "not a maildir directory"
-msgstr "ikke et maildir katalog"
-
-#: camel/providers/local/camel-maildir-summary.c:405
-#: camel/providers/local/camel-maildir-summary.c:526
-#, fuzzy, c-format
-msgid "Cannot open maildir directory path: %s: %s"
-msgstr "Kan ikke åbne postboks: %s: %s\n"
-
-#: camel/providers/local/camel-mbox-folder.c:152
-#, c-format
-msgid "Cannot create folder lock on %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:203
-#, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr "Kan ikke åbne postboks: %s: %s\n"
-
-#: camel/providers/local/camel-mbox-folder.c:259
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr "Kan ikke tilføje besked i mbox-filen: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:335
-#: camel/providers/local/camel-mbox-folder.c:367
-#: camel/providers/local/camel-mbox-folder.c:380
-#, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-"Kan ikke hente besked: %s fra mappe %s\n"
-" %s"
-
-#: camel/providers/local/camel-mbox-folder.c:368
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr "Mappen set ud til at være uigenkaldeligt ødelagt."
-
-#: camel/providers/local/camel-mbox-folder.c:381
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr "Fremstilling af besked mislykkedes: Er postkassen ødelagt?"
-
-#: camel/providers/local/camel-mbox-store.c:94
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-"Kunne ikke åbne fil `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:110
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-"Kunne ikke oprette fil `%s'\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:119
-#: camel/providers/local/camel-mbox-store.c:146
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr "`%s' er ikke en almindelig fil."
-
-#: camel/providers/local/camel-mbox-store.c:138
-#: camel/providers/local/camel-mbox-store.c:161
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-"Kunne ikke slette mappen `%s'\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr "Mappen `%s' er ikke tom. Ikke slettet."
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:249
-msgid "Summarising folder"
-msgstr "Laver sammendrag for mappe"
-
-#: camel/providers/local/camel-mbox-summary.c:254
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr "Kunne ikke åbne mappe: %s: summerer fra position %ld: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:296
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr "Uoprettelig fejl ved fortolkning af post nær position %ld i mappe %s"
-
-#: camel/providers/local/camel-mbox-summary.c:371
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr "Kan ikke lave oversigt over folder: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:502
-#: camel/providers/local/camel-mbox-summary.c:703 mail/mail-ops.c:1397
-msgid "Synchronising folder"
-msgstr "Synkroniserer mappe"
-
-#: camel/providers/local/camel-mbox-summary.c:507
-#: camel/providers/local/camel-mbox-summary.c:708
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr "Kunne ikke åbne folder der skal laves oversigt for: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:524
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr "Kan ikke åbne midlertidig postboks: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:549
-#: camel/providers/local/camel-mbox-summary.c:557
-#: camel/providers/local/camel-mbox-summary.c:746
-#: camel/providers/local/camel-mbox-summary.c:754
-msgid "Summary and folder mismatch, even after a sync"
-msgstr "Oversigt og mappe uoverensstemmelse, selv efter synkronisering"
-
-#: camel/providers/local/camel-mbox-summary.c:600
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr "Fejl under skriving til midlertidig postboks: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:617
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr "Fejl under skriving til midlertidig postboks: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:635
-#: camel/providers/local/camel-mbox-summary.c:804
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr "Kunne ikke lukke kildemappe %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:644
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr "Kunne ikke lukke midlertidig mappe: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:655
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr "Kunne ikke ændre navn på mappe: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:879
-#, c-format
-msgid "Unknown error: %s"
-msgstr "Ukendt fejl: %s"
-
-#: camel/providers/local/camel-mh-folder.c:149
-#: camel/providers/local/camel-mh-folder.c:157
-#, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr "Kan ikke tilføje besked i mh-mappe: %s: %s"
-
-#: camel/providers/local/camel-mh-store.c:110
-#, c-format
-msgid "`%s' is not a directory."
-msgstr "`%s' er ikke et katalog."
-
-#: camel/providers/local/camel-mh-summary.c:218
-#, fuzzy, c-format
-msgid "Cannot open MH directory path: %s: %s"
-msgstr "Kan ikke åbne postboks: %s: %s\n"
-
-#: camel/providers/nntp/camel-nntp-auth.c:45
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr "Venligst indtast NNTP-adgangskode for %s@%s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:66
-msgid "Server rejected username"
-msgstr "Tjeneren godtog ikke brugernavn"
-
-#: camel/providers/nntp/camel-nntp-auth.c:72
-msgid "Failed to send username to server"
-msgstr "Fejl ved sending af brugernavn til tjener"
-
-#: camel/providers/nntp/camel-nntp-auth.c:81
-msgid "Server rejected username/password"
-msgstr "Tjeneren godtog ikke brugernavn/adgangskode"
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr "Besked %s ikke fundet"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr "Kunne ikke hente gruppeliste fra tjeneren."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr "Kunne ikke indlæse gruppelistefil for %s: %s"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr "Kunne ikke gemme gruppelistefil for %s: %s"
-
-#: camel/providers/nntp/camel-nntp-provider.c:42
-msgid "USENET news"
-msgstr "USENET-nyheder"
-
-#: camel/providers/nntp/camel-nntp-provider.c:44
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr ""
-"Dette er en udbyder for læsning af og postning af indlæg til USENET "
-"nyhedsgrupper."
-
-#: camel/providers/nntp/camel-nntp-store.c:224
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr "Kunne ikke åbne katalog for news-tjener: %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:286
-#, c-format
-msgid "USENET News via %s"
-msgstr "USENET-nyheder via %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:293
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-"Dette alternativ vil autenticere mod NNTP-tjeneren ved brug af klartekst "
-"adgangskode."
-
-#: camel/providers/nntp/camel-nntp-store.c:325
-#: camel/providers/nntp/camel-nntp-store.c:488
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr "Kunne ikke åbne eller oprette .newsrc-fil for %s: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-msgid "Retrieving POP summary"
-msgstr "Modtager POP-oversigt"
-
-#: camel/providers/pop3/camel-pop3-folder.c:155
-#, fuzzy, c-format
-msgid "Could not check POP server for new messages: %s"
-msgstr "Kunne ikke koble til POP-tjener på %s."
-
-#: camel/providers/pop3/camel-pop3-folder.c:199
-msgid "Could not open folder: message listing was incomplete."
-msgstr "Kunne ikke åbne mappe: beskedslisten var ikke komplet."
-
-#: camel/providers/pop3/camel-pop3-folder.c:292
-#, c-format
-msgid "No message with uid %s"
-msgstr "Ingen besked med uid %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:296
-#, c-format
-msgid "Retrieving POP message %d"
-msgstr "Modtager POP-meddelelse %d"
-
-#: camel/providers/pop3/camel-pop3-folder.c:303
-#, c-format
-msgid "Could not fetch message: %s"
-msgstr "Kunne ikke hente beskeden: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:320
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr "Kunne ikke hente besked fra POP-tjener %s: %s"
-
-#: camel/providers/pop3/camel-pop3-provider.c:37
-msgid "Message storage"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:39
-msgid "Leave messages on server"
-msgstr "Efterlad beskeder på tjeneren"
-
-#: camel/providers/pop3/camel-pop3-provider.c:41
-#, c-format
-msgid "Delete after %s day(s)"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:48 mail/mail-config.glade.h:51
-msgid "POP"
-msgstr "POP"
-
-#: camel/providers/pop3/camel-pop3-provider.c:50
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-"For tilkobling til POP-tjenere. POP-protokollen kan også bruges for at hente "
-"e-post fra visse e-postudbydere via web, samt fra proprietære e-postsystemer."
-
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-"Dette alternativ lader dig koble til POP-tjeneren ved brug af adgangskode i "
-"klartekst. Dette er det eneste alternativ som er understøttet af mange "
-"POP-tjenere."
-
-#: camel/providers/pop3/camel-pop3-provider.c:79
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-"Dette alternativ lader dig koble til POP-tjenere ved brug af krypteret "
-"adgangskode via APOP-protokollen. Dette vil muligvis ikke virke for alle "
-"brugere selv på tjenere som hævder at understøtte det."
-
-#: camel/providers/pop3/camel-pop3-provider.c:91
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-"Dette lader dig koble til POP-tjeneren ved at bruge Kerberos 4 som "
-"autenticering."
-
-#: camel/providers/pop3/camel-pop3-store.c:199
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr "Kunne ikke autenticere mod KPOP-tjener: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:215
-#, c-format
-msgid "Could not connect to server: %s"
-msgstr "Kunne ikke koble til tjener: %s."
-
-#: camel/providers/pop3/camel-pop3-store.c:322
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr "Kunne ikke koble til POP-tjener på %s."
-
-#: camel/providers/pop3/camel-pop3-store.c:361
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr "%sIndtast venligst POP3-adgangskode for %s@%s"
-
-#: camel/providers/pop3/camel-pop3-store.c:379
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-"Kunne ikke koble til POP-tjener.\n"
-"Fejl under oversending af brugernavn: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:382
-#: camel/providers/pop3/camel-pop3-store.c:419
-msgid "(Unknown)"
-msgstr "(Ukendt)"
-
-#: camel/providers/pop3/camel-pop3-store.c:409
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-"Kunne ikke koble til POP-tjeneren.\n"
-"Ingen støtte for forespurgt autenticeringsmekanisme."
-
-#: camel/providers/pop3/camel-pop3-store.c:417
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-"Kunne ikke koble til POP-tjener.\n"
-"Fejl ved oversending af adgangskode: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:484
-#, c-format
-msgid "No such folder `%s'."
-msgstr "Ingen sådan mappe `%s'."
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:37
-#: mail/mail-config.glade.h:67
-msgid "Sendmail"
-msgstr "Sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:39
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-"For levering af e-post ved at videresende den til \"sendmail\"-programmet på "
-"det lokale system."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:107
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr "Kunne ikke oprette rør til sendmail: %s: besked ikke sendt"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:124
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr "Kunne ikke udføre fork på sendmail: %s: besked ikke sendt"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:150
-#, c-format
-msgid "Could not send message: %s"
-msgstr "Kunne ikke sende beskeden: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:163
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr "sendmail afsluttede med signal %s: besked ikke sendt."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:170
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr "Kunne ikke udføre %s: besked ikke sendt."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:175
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr "sendmail afsluttede med status %d: besked ikke sendt."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:194
-msgid "Could not find 'From' address in message"
-msgstr "Kunne ikke finde 'Fra'-adresse i besked"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "sendmail"
-msgstr "sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:249
-msgid "Mail delivery via the sendmail program"
-msgstr "Levering af e-post via sendmail programmet"
-
-#: camel/providers/smtp/camel-smtp-provider.c:38 mail/mail-config.glade.h:62
-msgid "SMTP"
-msgstr "SMTP"
-
-#: camel/providers/smtp/camel-smtp-provider.c:40
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr "For levering af e-post via en ekstern e-posttjener med SMTP.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:168
-msgid "Syntax error, command unrecognized"
-msgstr "Syntaksfejl, kommando ikke genkendt"
-
-#: camel/providers/smtp/camel-smtp-transport.c:170
-msgid "Syntax error in parameters or arguments"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:172
-msgid "Command not implemented"
-msgstr "Kommando ikke implimenteret"
-
-#: camel/providers/smtp/camel-smtp-transport.c:174
-msgid "Command parameter not implemented"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:176
-msgid "System status, or system help reply"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:178
-msgid "Help message"
-msgstr "Hjælpebesked"
-
-#: camel/providers/smtp/camel-smtp-transport.c:180
-msgid "Service ready"
-msgstr "Tjeneste parat"
-
-#: camel/providers/smtp/camel-smtp-transport.c:182
-msgid "Service closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:184
-msgid "Service not available, closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:186
-msgid "Requested mail action okay, completed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:188
-msgid "User not local; will forward to <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:190
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:192
-msgid "Requested action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:194
-msgid "Requested action aborted: error in processing"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:196
-msgid "User not local; please try <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:198
-msgid "Requested action not taken: insufficient system storage"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:200
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:202
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:204
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:206
-msgid "Transaction failed"
-msgstr "Transaktionen mislykkedes"
-
-#: camel/providers/smtp/camel-smtp-transport.c:210
-msgid "A password transition is needed"
-msgstr "Adganggskodeoverføring kræves"
-
-#: camel/providers/smtp/camel-smtp-transport.c:212
-msgid "Authentication mechanism is too weak"
-msgstr "Autenticeringsmekanismen er for svag"
-
-#: camel/providers/smtp/camel-smtp-transport.c:214
-msgid "Encryption required for requested authentication mechanism"
-msgstr "Kryptering kræves for forespurgt autenticeringsmekanisme"
-
-#: camel/providers/smtp/camel-smtp-transport.c:216
-msgid "Temporary authentication failure"
-msgstr "Midlertidig autenticeringsfejl"
-
-#: camel/providers/smtp/camel-smtp-transport.c:218
-msgid "Authentication required"
-msgstr "Autenticering kræves"
-
-#: camel/providers/smtp/camel-smtp-transport.c:313
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr "Velkomst fejl ved svar: %s: formentlig ikke-fatal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:356
-#, c-format
-msgid "SMTP server %s does not support requested authentication type %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:395
-#, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr "%sVenligst indtast SMTP-adgangskode for %s@%s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:418
-#, fuzzy, c-format
-msgid ""
-"Unable to authenticate to SMTP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Kunne ikke autenticere mod IMAP-tjener.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:534
-#, c-format
-msgid "SMTP server %s"
-msgstr "SMTP-tjener %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:536
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr "SMTP-levering af e-post via %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:561
-msgid "Cannot send message: sender address not defined."
-msgstr "Kan ikke sende besked: afsenderadresse ikke defineret."
-
-#: camel/providers/smtp/camel-smtp-transport.c:568
-msgid "Cannot send message: sender address not valid."
-msgstr "Kan ikke sende besked: afsenderadresse ikke gyldig."
-
-#: camel/providers/smtp/camel-smtp-transport.c:582
-msgid "Cannot send message: no recipients defined."
-msgstr "Kan ikke sende besked: ingen modtagere defineret."
-
-#: camel/providers/smtp/camel-smtp-transport.c:676
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr "HELO anmodning overskred tid: %s: ikke-fatal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:695
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr "HELO fejl ved svar: %s: ikke-fatal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:728
-msgid "Error creating SASL authentication object."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:743
-#: camel/providers/smtp/camel-smtp-transport.c:755
-#, c-format
-msgid "AUTH request timed out: %s"
-msgstr "Tidsafbrud for AUTH-forespørgsel: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:764
-#, fuzzy
-msgid "AUTH request failed."
-msgstr "Tidsafbrud for AUTH-forespørgsel: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:809
-msgid "Bad authentication response from server.\n"
-msgstr "Ugyldigt svar på autenticering fra tjener.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:835
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr "MAIL FROM anmodning overskred tid: %s: besked ikke sendt"
-
-#: camel/providers/smtp/camel-smtp-transport.c:854
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr "MAIL FROM fejl ved svar: %s: besked ikke sendt"
-
-#: camel/providers/smtp/camel-smtp-transport.c:879
-#, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr "RCPT TO anmodning overskred tid: %s: besked ikke sendt"
-
-#: camel/providers/smtp/camel-smtp-transport.c:898
-#, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr "Fejl ved \"RCPT TO\"-svar: %s: besked ikke sendt."
-
-#: camel/providers/smtp/camel-smtp-transport.c:929
-#, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr "DATA anmodning overskred tid: %s: besked ikke sendt"
-
-#: camel/providers/smtp/camel-smtp-transport.c:948
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr "DATA fejl ved svar: %s: besked ikke sendt"
-
-#: camel/providers/smtp/camel-smtp-transport.c:963
-#: camel/providers/smtp/camel-smtp-transport.c:981
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr "DATA sending overskred tid: Besked afbrudt: %s: besked ikke sendt"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1000
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr "DATA fejl ved svar: Besked afbrudt: %s: besked ikke sendt"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1024
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr "RSET-anmodning overskred tid: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1043
-#, c-format
-msgid "RSET response error: %s"
-msgstr "RSET fejl ved svar: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1066
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr "QUIT-anmodning overskred tid: %s: ikke-fatal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1085
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr "QUIT fejl ved svar: %s: ikke-fatal"
-
-#: composer/e-msg-composer-attachment-bar.c:95
-msgid "1 byte"
-msgstr "1 byte"
-
-#: composer/e-msg-composer-attachment-bar.c:97
-#, c-format
-msgid "%u bytes"
-msgstr "%u byte"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fk"
-
-#: composer/e-msg-composer-attachment-bar.c:108
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fM"
-
-#: composer/e-msg-composer-attachment-bar.c:112
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fG"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:332 mail/mail-display.c:122
-msgid "attachment"
-msgstr "bilag"
-
-#: composer/e-msg-composer-attachment-bar.c:421
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr "Vedhæft en fil"
-
-#: composer/e-msg-composer-attachment-bar.c:469
-msgid "Remove selected items from the attachment list"
-msgstr "Fjern valgte punkter fra bilagslisten"
-
-#: composer/e-msg-composer-attachment-bar.c:500
-msgid "Add attachment..."
-msgstr "Vedhæft bilag..."
-
-#: composer/e-msg-composer-attachment-bar.c:501
-msgid "Attach a file to the message"
-msgstr "Vedhæft bilag til meddelelsen"
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/mail-config.glade.h:9
-#: mail/message-list.c:1081
-msgid "Attachment"
-msgstr "Bilag"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr "Egenskaber for bilag"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr "Filnavn:"
-
-#: composer/e-msg-composer-attachment.glade.h:5
-msgid "Inline attachment"
-msgstr ""
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr "MIME-type:"
-
-#: composer/e-msg-composer-attachment.glade.h:7
-msgid "Send as:"
-msgstr ""
-
-#: composer/e-msg-composer.c:536
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-"Kunne ikke åbne signaturfilen %s:\n"
-"%s"
-
-#: composer/e-msg-composer.c:709
-msgid "Save as..."
-msgstr "Gem som..."
-
-#: composer/e-msg-composer.c:720
-#, c-format
-msgid "Error saving file: %s"
-msgstr "Fejl ved gemning af fil: %s"
-
-#: composer/e-msg-composer.c:740
-#, c-format
-msgid "Error loading file: %s"
-msgstr "Fejl ved indlæsning af fil: %s"
-
-#: composer/e-msg-composer.c:812
-msgid ""
-"Unable to open the drafts folder for this account.\n"
-"Would you like to use the default drafts folder?"
-msgstr ""
-
-#: composer/e-msg-composer.c:870 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:224
-msgid "Evolution"
-msgstr "Evolution"
-
-#: composer/e-msg-composer.c:876
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-"Denne meddelelse er ikke sendt.\n"
-"\n"
-"Vil du gemme ændringene?"
-
-#: composer/e-msg-composer.c:901
-msgid "Open file"
-msgstr "Åbn fil"
-
-#: composer/e-msg-composer.c:1027
-msgid "That file does not exist."
-msgstr "Den fil eksisterer ikke."
-
-#: composer/e-msg-composer.c:1037
-msgid "That is not a regular file."
-msgstr "Dette er ikke en almindelig fil."
-
-#: composer/e-msg-composer.c:1047
-msgid "That file exists but is not readable."
-msgstr "Den fil eksisterer men kan ikke læses."
-
-#: composer/e-msg-composer.c:1057
-msgid "That file appeared accesible but open(2) failed."
-msgstr "Den fil så ud til at være tilgængelig, men open(2) fejlede."
-
-#: composer/e-msg-composer.c:1079
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-"Filen er meget stor (mere end 100 k).\n"
-"Er du sikker på at du ønsker at indsætte den?"
-
-#: composer/e-msg-composer.c:1100
-msgid "An error occurred while reading the file."
-msgstr "En fejl skete ved læsning af filen."
-
-#: composer/e-msg-composer.c:1401 composer/e-msg-composer.c:1744
-msgid "Compose a message"
-msgstr "Skriv en meddelelse"
-
-#: composer/e-msg-composer.c:1835
-msgid "Could not create composer window."
-msgstr "Kan ikke oprette komponeringsvinduet."
-
-#: composer/e-msg-composer-hdrs.c:323
-msgid "Click here for the address book"
-msgstr "Klik her for adressebogen"
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:354 mail/mail-format.c:753
-msgid "From:"
-msgstr "Fra:"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:360 mail/mail-format.c:755
-msgid "Reply-To:"
-msgstr "Svar-til:"
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:371 mail/mail-format.c:652
-msgid "Subject:"
-msgstr "Emne:"
-
-#: composer/e-msg-composer-hdrs.c:385 mail/mail-format.c:757
-msgid "To:"
-msgstr "Til:"
-
-#: composer/e-msg-composer-hdrs.c:386
-msgid "Enter the recipients of the message"
-msgstr "Indtast modtagerne for meddelelsen"
-
-#: composer/e-msg-composer-hdrs.c:389 mail/mail-format.c:759
-msgid "Cc:"
-msgstr "Kopi:"
-
-#: composer/e-msg-composer-hdrs.c:390
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "Indtast adresserne som skal modtage en kopi af meddelelsen"
-
-#: composer/e-msg-composer-hdrs.c:393
-msgid "Bcc:"
-msgstr "B-kopi:"
-
-#: composer/e-msg-composer-hdrs.c:394
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"Indtast adresserne som skal modtage en kopi af meddelelsen uden at komme til "
-"syne i meddelelsens modtagerliste."
-
-#: composer/evolution-composer.c:355
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-
-#: composer/evolution-composer.c:370
-msgid "Cannot initialize Evolution's composer."
-msgstr "Kan ikke initiere Evolutions composer."
-
-#: data/evolution.desktop.in.h:2
-msgid "The Evolution groupware suite"
-msgstr "Evolution gruppevarepakke"
-
-#: data/evolution.keys.in.h:1
-msgid "address card"
-msgstr "Adressekort"
-
-#: data/evolution.keys.in.h:2
-msgid "calendar information"
-msgstr "Kalenderinformation"
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:69 e-util/e-time-utils.c:117
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:477
-#: widgets/misc/e-dateedit.c:1284 widgets/misc/e-dateedit.c:1465
-msgid "%m/%d/%Y"
-msgstr "%Y-%m-%d"
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:87 e-util/e-time-utils.c:198
-msgid "%I:%M:%S %p%n"
-msgstr " "
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:90 e-util/e-time-utils.c:201
-msgid "%H:%M:%S%n"
-msgstr "%H:%M:%S%n"
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:94 e-util/e-time-utils.c:205
-msgid "%I:%M %p%n"
-msgstr " "
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:97 e-util/e-time-utils.c:208
-msgid "%H:%M%n"
-msgstr "%H:%M%n"
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:269
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:473
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2505
-msgid "%a %m/%d/%Y"
-msgstr "%a %Y-%m-%d"
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:274
-msgid "%a %m/%d/%Y %H:%M"
-msgstr ""
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:283
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr ""
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:312 widgets/misc/e-dateedit.c:1259
-#: widgets/misc/e-dateedit.c:1318 widgets/misc/e-dateedit.c:1497
-msgid "%H:%M"
-msgstr "%H:%M"
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:315
-msgid "%H:%M:%S"
-msgstr ""
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:320 widgets/misc/e-dateedit.c:1262
-#: widgets/misc/e-dateedit.c:1321 widgets/misc/e-dateedit.c:1500
-msgid "%I:%M %p"
-msgstr " "
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:323
-msgid "%I:%M:%S %p"
-msgstr ""
-
-#: executive-summary/component/component-factory.c:152
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr ""
-
-#: executive-summary/component/e-summary.c:926
-#, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"Kan ikke åbne HTML-fil:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:940
-#, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr ""
-
-#: executive-summary/component/e-summary.c:958
-msgid "File does not have a place for the services.\n"
-msgstr ""
-
-#: executive-summary/component/e-summary-callbacks.c:126
-msgid "Select a service"
-msgstr "Vælg tjeneste"
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:71
-#, c-format
-msgid "Send an email to %s"
-msgstr "Send et brev til %s"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr "Ændr visningen til %s"
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr "Kør %s"
-
-#: executive-summary/component/e-summary-url.c:75
-#, c-format
-msgid "Close %s"
-msgstr "Luk %s"
-
-#: executive-summary/component/e-summary-url.c:76
-#, c-format
-msgid "Move %s to the left"
-msgstr "Flyt %s til venstre"
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr "Flyt %s til højre"
-
-#: executive-summary/component/e-summary-url.c:78
-#, c-format
-msgid "Move %s into the previous row"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:79
-#, c-format
-msgid "Move %s into the next row"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:80
-#, c-format
-msgid "Configure %s"
-msgstr "Konfigurér %s"
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr ""
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr ""
-
-#: executive-summary/component/main.c:62
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-msgid "Evolution component for the executive summary."
-msgstr ""
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-msgid "Factory for the Evolution executive summary component."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-msgid "RDF Summary"
-msgstr "RDF-sammendrag"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-msgid "Factory for the test bonobo component."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-msgid "Factory for the test component."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr "Testtjeneste"
-
-#: executive-summary/test-service/rdf-summary.c:512
-#: executive-summary/test-service/rdf-summary.c:549
-#: executive-summary/test-service/rdf-summary.c:594
-#: widgets/misc/e-messagebox.c:166
-msgid "Error"
-msgstr "Fejl"
-
-#: executive-summary/test-service/rdf-summary.c:775
-msgid "Update automatically"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:785
-msgid "Update now"
-msgstr "Opdatér nu"
-
-#: executive-summary/test-service/rdf-summary.c:795
-msgid "Update every "
-msgstr "_Opdatér hver"
-
-#: executive-summary/test-service/rdf-summary.c:806
-#: filter/filter-datespec.c:83
-msgid "minutes"
-msgstr "minutter"
-
-#: filter/filter-datespec.c:78
-msgid "year"
-msgstr "år"
-
-#: filter/filter-datespec.c:78
-msgid "years"
-msgstr "år"
-
-#: filter/filter-datespec.c:79
-msgid "month"
-msgstr "måned"
-
-#: filter/filter-datespec.c:79
-msgid "months"
-msgstr "måneder"
-
-#: filter/filter-datespec.c:80
-msgid "week"
-msgstr "uge"
-
-#: filter/filter-datespec.c:80
-msgid "weeks"
-msgstr "uger"
-
-#: filter/filter-datespec.c:81
-msgid "days"
-msgstr "dage"
-
-#: filter/filter-datespec.c:82
-msgid "hour"
-msgstr "time"
-
-#: filter/filter-datespec.c:82
-msgid "hours"
-msgstr "timer"
-
-#: filter/filter-datespec.c:83
-msgid "minute"
-msgstr "minut"
-
-#: filter/filter-datespec.c:84
-msgid "second"
-msgstr "sekund"
-
-#: filter/filter-datespec.c:84
-msgid "seconds"
-msgstr "sekunder"
-
-#: filter/filter-datespec.c:199
-msgid "Oops. You have forgotten to choose a date."
-msgstr "Du har glemt at vælge en dato."
-
-#: filter/filter-datespec.c:201
-msgid "Oops. You have chosen an invalid date."
-msgstr "Du har valgt en ugyldig dato."
-
-#: filter/filter-datespec.c:276
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-"Beskedens dato vil blive sammenlignet med tiden\n"
-"når filteret køres eller tiden når vMappen\n"
-"åbnes."
-
-#: filter/filter-datespec.c:299
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-"Beskedens dato vil blive sammenlignet med\n"
-"tiden du angive her."
-
-#: filter/filter-datespec.c:339
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-"Beskedens dato vil blive sammenlignet med\n"
-"en tid relativ til når filteret bliver kørt;\n"
-"for eksempel \"for en uge siden\"."
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:374
-msgid "the current time"
-msgstr "den aktuelle tid"
-
-#: filter/filter-datespec.c:374
-msgid "a time you specify"
-msgstr "et tidspunkt du angiver"
-
-#: filter/filter-datespec.c:375
-msgid "a time relative to the current time"
-msgstr "et tidspunkt relativt til den aktuelle tid"
-
-#. The label
-#: filter/filter-datespec.c:433
-msgid "Compare against"
-msgstr "Sammenlign med"
-
-#: filter/filter-datespec.c:550 filter/filter-datespec.c:710
-msgid "now"
-msgstr "nu"
-
-#: filter/filter-datespec.c:707
-msgid "<click here to select a date>"
-msgstr "<klik her for at vælge en mappe>"
-
-#: filter/filter-editor.c:132 filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr "Filterregler"
-
-#. and now for the action area
-#: filter/filter-filter.c:452
-msgid "Then"
-msgstr "Så"
-
-#: filter/filter-filter.c:466
-msgid "Add action"
-msgstr "Tilføj handling"
-
-#: filter/filter-folder.c:147
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-"Du glemte at vælge en mappe.\n"
-"Venligst gå tilbage og specificér en gyldig mappe for levering af e-post."
-
-#: filter/filter-folder.c:225 filter/vfolder-rule.c:285
-#: mail/mail-account-gui.c:682
-msgid "Select Folder"
-msgstr "Vælg mappe"
-
-#: filter/filter-folder.c:250
-msgid "Enter folder URI"
-msgstr "Indtast URI for mappen"
-
-#: filter/filter-folder.c:296
-msgid "<click here to select a folder>"
-msgstr "<klik her for at vælge en mappe>"
-
-#: filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr "Redigér filtre"
-
-#: filter/filter.glade.h:5
-msgid "Edit VFolders"
-msgstr "Redigér vMapper"
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr "Indkommende"
-
-#: filter/filter.glade.h:8
-msgid "Outgoing"
-msgstr "Udgående"
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:130
-msgid "Virtual Folders"
-msgstr "Visuelle mapper"
-
-#: filter/filter.glade.h:11
-msgid "specific folders only"
-msgstr ""
-
-#: filter/filter.glade.h:12
-msgid "vFolder Sources"
-msgstr "vMappe-kilder"
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr "med alle aktive fjernmapper"
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr "med alle lokale og aktive fjernmapper"
-
-#: filter/filter.glade.h:15
-msgid "with all local folders"
-msgstr "med alle lokale mapper"
-
-#: filter/filter-input.c:193
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-"Fejl i regulært udtryk '%s':\n"
-"%s"
-
-#: filter/filter-part.c:488
-msgid "Test"
-msgstr "Test"
-
-#: filter/filter-rule.c:626
-msgid "Rule name: "
-msgstr "Regelnavn: "
-
-#: filter/filter-rule.c:630
-msgid "Untitled"
-msgstr "Uden navn"
-
-#: filter/filter-rule.c:646
-msgid "If"
-msgstr "Hvis"
-
-#: filter/filter-rule.c:664
-msgid "Execute actions"
-msgstr "Udfør handlinger"
-
-#: filter/filter-rule.c:668
-msgid "if all criteria are met"
-msgstr "hvis alle kriterier er mødt"
-
-#: filter/filter-rule.c:673
-msgid "if any criteria are met"
-msgstr "hvis et kriterie er mødt"
-
-#: filter/filter-rule.c:684
-msgid "Add criterion"
-msgstr "Tilføj kriterie"
-
-#: filter/filter-rule.c:770
-msgid "incoming"
-msgstr "indkommende"
-
-#: filter/filter-rule.c:770
-msgid "outgoing"
-msgstr "udgående"
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Colour"
-msgstr "Giv farve"
-
-#: filter/libfilter-i18n.h:4
-msgid "Assign Score"
-msgstr "Giv point"
-
-#: filter/libfilter-i18n.h:5
-msgid "Attachments"
-msgstr "Bilag"
-
-#: filter/libfilter-i18n.h:7
-msgid "contains"
-msgstr "indeholder"
-
-#: filter/libfilter-i18n.h:8
-msgid "Copy to Folder"
-msgstr "Kopiér til mappe"
-
-#: filter/libfilter-i18n.h:9
-msgid "Date received"
-msgstr "Dato modtaget"
-
-#: filter/libfilter-i18n.h:10
-msgid "Date sent"
-msgstr "Dato sendt"
-
-#: filter/libfilter-i18n.h:12
-msgid "Deleted"
-msgstr "Slettet"
-
-#: filter/libfilter-i18n.h:13
-msgid "does not contain"
-msgstr "indeholder ikke"
-
-#: filter/libfilter-i18n.h:14
-msgid "does not end with"
-msgstr "slutter ikke med"
-
-#: filter/libfilter-i18n.h:15
-msgid "does not exist"
-msgstr "eksisterer ikke"
-
-#: filter/libfilter-i18n.h:16
-msgid "does not sound like"
-msgstr "lyder ikke som"
-
-#: filter/libfilter-i18n.h:17
-msgid "does not start with"
-msgstr "starter ikke med"
-
-#: filter/libfilter-i18n.h:18
-msgid "Do Not Exist"
-msgstr "Findes ikke"
-
-#: filter/libfilter-i18n.h:19
-msgid "Draft"
-msgstr "Udkast"
-
-#: filter/libfilter-i18n.h:20
-msgid "ends with"
-msgstr "slutter med"
-
-#: filter/libfilter-i18n.h:21
-msgid "Exist"
-msgstr "Findes"
-
-#: filter/libfilter-i18n.h:22
-msgid "exists"
-msgstr "findes"
-
-#: filter/libfilter-i18n.h:23
-msgid "Expression"
-msgstr "Udtryk"
-
-#: filter/libfilter-i18n.h:24
-msgid "Forward to Address"
-msgstr "Videresend til adresse"
-
-#: filter/libfilter-i18n.h:25
-msgid "Important"
-msgstr "Vigtig"
-
-#: filter/libfilter-i18n.h:26
-msgid "is"
-msgstr "er"
-
-#: filter/libfilter-i18n.h:27
-msgid "is greater than"
-msgstr "er større end"
-
-#: filter/libfilter-i18n.h:28
-msgid "is less than"
-msgstr "er mindre end"
-
-#: filter/libfilter-i18n.h:29
-msgid "is not"
-msgstr "er ikke"
-
-#: filter/libfilter-i18n.h:30
-msgid "Mailing list"
-msgstr "Diskussionsliste"
-
-#: filter/libfilter-i18n.h:31
-msgid "Message Body"
-msgstr "Beskedskrop"
-
-#: filter/libfilter-i18n.h:32
-msgid "Message Header"
-msgstr "Beskedshoved"
-
-#: filter/libfilter-i18n.h:33
-msgid "Message was received"
-msgstr "Beskeden blev modtaget"
-
-#: filter/libfilter-i18n.h:34
-msgid "Message was sent"
-msgstr "Beskeden blev sendt"
-
-#: filter/libfilter-i18n.h:35
-msgid "Move to Folder"
-msgstr "Flyt til folder"
-
-#: filter/libfilter-i18n.h:36
-msgid "on or after"
-msgstr "på eller efter"
-
-#: filter/libfilter-i18n.h:37
-msgid "on or before"
-msgstr "på eller før"
-
-#: filter/libfilter-i18n.h:38
-msgid "Read"
-msgstr "Læst"
-
-#: filter/libfilter-i18n.h:39
-msgid "Recipients"
-msgstr "Modtagere"
-
-#: filter/libfilter-i18n.h:40
-msgid "Regex Match"
-msgstr "Passer på regulært udtryk"
-
-#: filter/libfilter-i18n.h:41
-msgid "Replied to"
-msgstr "Svaret til"
-
-#: filter/libfilter-i18n.h:42 filter/score-rule.c:204 filter/score-rule.c:206
-#: mail/message-list.c:1081
-msgid "Score"
-msgstr "Point"
-
-#: filter/libfilter-i18n.h:43
-msgid "Sender"
-msgstr "Afsender"
-
-#: filter/libfilter-i18n.h:44
-msgid "Set Status"
-msgstr "_Sæt Status"
-
-#: filter/libfilter-i18n.h:45
-msgid "sounds like"
-msgstr "lyder som"
-
-#: filter/libfilter-i18n.h:46
-msgid "Source Account"
-msgstr "Kildekonto"
-
-#: filter/libfilter-i18n.h:47
-msgid "Specific header"
-msgstr "Specifik brevhoved"
-
-#: filter/libfilter-i18n.h:48
-msgid "starts with"
-msgstr "starter med"
-
-#: filter/libfilter-i18n.h:50
-msgid "Stop Processing"
-msgstr "Stop behandling"
-
-#: filter/libfilter-i18n.h:51 mail/message-list.c:1082
-msgid "Subject"
-msgstr "Emne"
-
-#: filter/libfilter-i18n.h:52
-msgid "was after"
-msgstr "var efter"
-
-#: filter/libfilter-i18n.h:53
-msgid "was before"
-msgstr "var før"
-
-#: filter/rule-editor.c:147
-msgid "Rules"
-msgstr "Regler"
-
-#: filter/rule-editor.c:240
-msgid "Add Rule"
-msgstr "Tilføj regel"
-
-#: filter/rule-editor.c:299
-msgid "Edit Rule"
-msgstr "Ændr regel"
-
-#: filter/score-editor.c:130
-msgid "Score Rules"
-msgstr ""
-
-#: importers/elm-importer.c:512 importers/netscape-importer.c:780
-#: importers/pine-importer.c:646 shell/e-shell-importer.c:655
-#: shell/importer/import.glade.h:4
-msgid "Import"
-msgstr "Importér"
-
-#: importers/elm-importer.c:517 importers/netscape-importer.c:785
-#: importers/pine-importer.c:651
-msgid "Mail"
-msgstr "Epost"
-
-#: importers/elm-importer.c:521
-msgid "Elm Aliases"
-msgstr ""
-
-#: importers/elm-importer.c:528 importers/netscape-importer.c:807
-#: importers/pine-importer.c:668
-msgid "Don't ask me again"
-msgstr ""
-
-#: importers/elm-importer.c:561
-msgid ""
-"Evolution has found Elm mail files\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-
-#: importers/elm-importer.c:579
-#, fuzzy
-msgid "Elm mail"
-msgstr "Epost"
-
-#: importers/evolution-gnomecard-importer.c:156
-msgid ""
-"Evolution has found GnomeCard files.\n"
-"Would you like them to be imported into Evolution?"
-msgstr ""
-
-#: importers/netscape-importer.c:790 importers/pine-importer.c:656
-msgid "Settings"
-msgstr "Indstillinger"
-
-#: importers/netscape-importer.c:795 mail/mail-callbacks.c:1472
-msgid "Filters"
-msgstr "Filtre"
-
-#: importers/netscape-importer.c:800
-msgid "Addressbooks"
-msgstr "Adressebøger"
-
-#: importers/netscape-importer.c:847
-msgid ""
-"Evolution has found Netscape mail files.\n"
-"Would you like them to be imported into Evolution?"
-msgstr ""
-
-#: importers/pine-importer.c:661
-msgid "Addressbook"
-msgstr "Adressebog"
-
-#: importers/pine-importer.c:705
-msgid ""
-"Evolution has found Pine mail files.\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-
-#: importers/pine-importer.c:723
-msgid "Pine mail"
-msgstr "Pine-post"
-
-#: mail/component-factory.c:337
-msgid "Cannot initialize Evolution's mail component."
-msgstr "Kan ikke initialisere Evolutions e-postkomponent."
-
-#: mail/component-factory.c:410
-msgid "Cannot register storage with shell"
-msgstr "Kan ikke registrere gemning i skallen"
-
-#: mail/folder-browser.c:270
-msgid "Store search as vFolder"
-msgstr "Gem søgning som vMappe"
-
-#: mail/folder-browser.c:594
-msgid "VFolder on _Subject"
-msgstr "VFolder på e_mne"
-
-#: mail/folder-browser.c:597
-msgid "VFolder on Se_nder"
-msgstr "vMappe for _afsender"
-
-#: mail/folder-browser.c:600
-msgid "VFolder on _Recipients"
-msgstr "vMappe for _modtagere"
-
-#: mail/folder-browser.c:603
-msgid "VFolder on Mailing _List"
-msgstr "Vfolder efter diskussions_liste"
-
-#: mail/folder-browser.c:609
-msgid "Filter on Sub_ject"
-msgstr "Filtrér efter emne"
-
-#: mail/folder-browser.c:612
-msgid "Filter on Sen_der"
-msgstr "Filtrér efter afsender"
-
-#: mail/folder-browser.c:615
-msgid "Filter on Re_cipients"
-msgstr "Filtrér efter modtager"
-
-#: mail/folder-browser.c:618
-msgid "Filter on _Mailing List"
-msgstr "Filtrér efter diskussionsliste"
-
-#: mail/folder-browser.c:627
-msgid "_Open"
-msgstr "_Åbn"
-
-#: mail/folder-browser.c:629
-msgid "Resend"
-msgstr "Gensend"
-
-#: mail/folder-browser.c:631 ui/evolution-calendar.xml.h:43
-#: ui/evolution-mail.xml.h:118 ui/evolution-tasks.xml.h:8
-msgid "_Save As..."
-msgstr "_Gem som..."
-
-#: mail/folder-browser.c:633 ui/evolution-event-editor.xml.h:69
-#: ui/evolution-task-editor-dialog.xml.h:82 ui/evolution-tasks.xml.h:7
-msgid "_Print"
-msgstr "_Udskriv"
-
-#: mail/folder-browser.c:638 ui/evolution-mail.xml.h:117
-msgid "_Reply to Sender"
-msgstr "Svar til afsende_r"
-
-#: mail/folder-browser.c:640 ui/evolution-mail.xml.h:72
-msgid "Reply to _All"
-msgstr "Svar til _alle"
-
-#: mail/folder-browser.c:642
-msgid "_Forward"
-msgstr "_Videresend"
-
-#: mail/folder-browser.c:645
-msgid "Mar_k as Read"
-msgstr "Mær_k som læst"
-
-#: mail/folder-browser.c:647
-msgid "Mark as U_nread"
-msgstr "Mærk som u_læst"
-
-#: mail/folder-browser.c:652
-msgid "_Move to Folder..."
-msgstr "_Flyt til mappe..."
-
-#: mail/folder-browser.c:654
-msgid "_Copy to Folder..."
-msgstr "_Kopiér til mappe..."
-
-#: mail/folder-browser.c:658 ui/evolution-mail.xml.h:121
-msgid "_Undelete"
-msgstr "_Fortryd sletning"
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:668
-msgid "Apply Filters"
-msgstr "Anvend filtre"
-
-#: mail/folder-browser.c:672
-msgid "Create Ru_le From Message"
-msgstr "Skab rege_l fra besked"
-
-#: mail/folder-browser.c:811
-msgid "Filter on Mailing List"
-msgstr "Filtrér efter epostliste"
-
-#: mail/folder-browser.c:812
-msgid "VFolder on Mailing List"
-msgstr "vMappe efter diskussionsliste"
-
-#: mail/folder-browser.c:814
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr "Filtrér efter diskussionsliste (%s)"
-
-#: mail/folder-browser.c:815
-#, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr "vMappe efter diskussionsliste (%s)"
-
-#: mail/folder-browser-factory.c:196
-#, c-format
-msgid "Properties for \"%s\""
-msgstr "Egenskaber for \"%s\""
-
-#: mail/folder-browser-factory.c:198 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-msgid "Properties"
-msgstr "Egenskaber"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr "Evolution komponent til håndtering af post."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-msgid "Evolution mail composer."
-msgstr "Evolution beskedskriver."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-msgid "Evolution mail executive summary component."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-msgid "Evolution mail folder display component."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-msgid "Evolution mail folder factory component."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-msgid "Factory for the Evolution composer."
-msgstr "Fabrik for Evolution beskedskriver."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-msgid "Factory for the Evolution mail component."
-msgstr "Fabrik for Evolution postkomponent."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-msgid "Factory for the Mail Summary component."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:9
-#, fuzzy
-msgid "Mail configuration interface"
-msgstr "Konfiguration af epost"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:1
-#, fuzzy
-msgid "Factory to import mbox into Evolution"
-msgstr "Fabrik vil importere GnomeCard-filer ind i Evolution."
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:2
-#, fuzzy
-msgid "Imports mbox files into Evolution"
-msgstr "Importerer GnomeCard-filer ind i Evolution."
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:1
-#, fuzzy
-msgid "Factory to import Outlook Express 4 mails into Evolution"
-msgstr "Fabrik vil importere GnomeCard-filer ind i Evolution."
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:2
-msgid "Imports Outlook Express 4 files into Evolution"
-msgstr "Importerer Outlook Express 4-filer ind i Evolution."
-
-#: mail/local-config.glade.h:1
-msgid "Current store format:"
-msgstr "Nuværende lagringsformat:"
-
-#: mail/local-config.glade.h:2
-msgid "Mailbox Format"
-msgstr "Postkasseformat"
-
-#: mail/local-config.glade.h:3
-msgid "New store format:"
-msgstr "Nyt gemningsformat:"
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-
-#: mail/local-config.glade.h:7
-msgid "maildir"
-msgstr "maildir"
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr "mbox"
-
-#: mail/local-config.glade.h:9
-msgid "mh"
-msgstr "mh"
-
-#: mail/mail-account-editor.c:105
-msgid "You have not filled in all of the required information."
-msgstr ""
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:173
-msgid "Evolution Account Editor"
-msgstr "Evolution kontoredigering"
-
-#: mail/mail-accounts.c:121 mail/mail-accounts.c:165
-msgid " (default)"
-msgstr " (standard)"
-
-#: mail/mail-accounts.c:197
-msgid "Disable"
-msgstr "Deaktivér"
-
-#: mail/mail-accounts.c:199 mail/mail-config.glade.h:30
-msgid "Enable"
-msgstr "Aktivér"
-
-#: mail/mail-accounts.c:280 mail/mail-accounts.c:284
-msgid "Are you sure you want to delete this account?"
-msgstr "Er du sikker på at du vil slette denne konto?"
-
-#: mail/mail-accounts.c:418 mail/mail-accounts.c:422
-msgid "Are you sure you want to delete this news account?"
-msgstr "Er du sikker på at du vil slette denne nyhedskonto?"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:568
-msgid "Evolution Account Manager"
-msgstr "Evolution kontobehandler"
-
-#: mail/mail-autofilter.c:70
-#, c-format
-msgid "Mail to %s"
-msgstr "Send til %s"
-
-#: mail/mail-autofilter.c:213
-#, c-format
-msgid "Subject is %s"
-msgstr "Emne er %s"
-
-#: mail/mail-autofilter.c:229
-#, c-format
-msgid "Mail from %s"
-msgstr "Epost fra %s"
-
-#: mail/mail-autofilter.c:285
-#, c-format
-msgid "%s mailing list"
-msgstr "%s diskussionsliste"
-
-#: mail/mail-autofilter.c:335 mail/mail-autofilter.c:356
-msgid "Add Filter Rule"
-msgstr "Tilføj filterregel"
-
-#: mail/mail-callbacks.c:96
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-"Du har ikke konfigureret epostklienten.\n"
-"Du skal gøre dette før du kan sende,\n"
-"modtage eller skrive beskeder.\n"
-"Vil du konfigurere den nu?"
-
-#: mail/mail-callbacks.c:149
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-"Du skal konfigurere en identitet\n"
-"før du kan sende epost."
-
-#: mail/mail-callbacks.c:161
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-"Du skal konfigurere en epost-transport\n"
-"før du kan sende epost."
-
-#: mail/mail-callbacks.c:205
-msgid "You have not set a mail transport method"
-msgstr "Du har ikke sat en transportmetode for e-post"
-
-#: mail/mail-callbacks.c:238
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-"Denne meddelse har intet emne.\n"
-"Skal den sendes alligevel?"
-
-#: mail/mail-callbacks.c:311
-msgid "You must specify recipients in order to send this message."
-msgstr "Du skal specificere modtagere for at kunne sende denne besked."
-
-#: mail/mail-callbacks.c:354
-msgid "You must configure an account before you can send this email."
-msgstr "Du skal konfigurere en konto før du kan sende dette brev."
-
-#: mail/mail-callbacks.c:593
-#, c-format
-msgid "On %s, %s wrote:"
-msgstr "Den %s skrev %s:"
-
-#: mail/mail-callbacks.c:755
-msgid "Forwarded message:\n"
-msgstr "Videresendt meddelelse:\n"
-
-#: mail/mail-callbacks.c:849
-msgid "Move message(s) to"
-msgstr "Flyt meddelelse(r) til"
-
-#: mail/mail-callbacks.c:851
-msgid "Copy message(s) to"
-msgstr "Kopiér meddelelse(r) til"
-
-#: mail/mail-callbacks.c:1130
-#, fuzzy, c-format
-msgid "Are you sure you want to edit all %d messages?"
-msgstr "Er du sikker på at du vil slette opgaven '%s'?"
-
-#: mail/mail-callbacks.c:1152
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-"Du kan kun redigere beskeder lagret\n"
-"i Skitse-kataloget."
-
-#: mail/mail-callbacks.c:1186
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-"Du kan kun sende beskeder igen\n"
-"som er gemt i sendt-kataloget."
-
-#: mail/mail-callbacks.c:1198
-#, fuzzy, c-format
-msgid "Are you sure you want to resend all %d messages?"
-msgstr "Er du sikker på at du vil slette opgaven '%s'?"
-
-#: mail/mail-callbacks.c:1219
-#, fuzzy
-msgid "No Message Selected"
-msgstr "Beskeden blev modtaget"
-
-#: mail/mail-callbacks.c:1253 mail/mail-display.c:92
-msgid "Overwrite file?"
-msgstr "Overskriv fil?"
-
-#: mail/mail-callbacks.c:1257 mail/mail-display.c:96
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-"En fil med samme navn eksisterer allerede.\n"
-"Overskriv den?"
-
-#: mail/mail-callbacks.c:1301
-msgid "Save Message As..."
-msgstr "Gem besked som..."
-
-#: mail/mail-callbacks.c:1303
-msgid "Save Messages As..."
-msgstr "Gem beskeder som..."
-
-#: mail/mail-callbacks.c:1462
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-"Fejl ved indlæsning af filter information:\n"
-"%s"
-
-#: mail/mail-callbacks.c:1520
-msgid "Print Message"
-msgstr "Udskriv besked"
-
-#: mail/mail-callbacks.c:1567
-msgid "Printing of message failed"
-msgstr "Udskrivning af besked mislykkedes"
-
-#: mail/mail-callbacks.c:1662
-#, fuzzy, c-format
-msgid "Are you sure you want to open all %d messages in separate windows?"
-msgstr "Er du sikker på at du vil slette denne nyhedskonto?"
-
-#: mail/mail-config.c:1199 mail/mail-config.c:1202
-msgid "Connecting to server..."
-msgstr "Opkobler til server..."
-
-#: mail/mail-config-druid.c:99
-msgid ""
-"Please enter your name and email address below. The \"optional\" fields "
-"below do not need to be filled in, unless you wish to include this "
-"information in email you send."
-msgstr ""
-"Venligst indtast dit navn og din e-post adresse nedenunder. "
-"&quot;optional&quot; felterne nedenunder behøver ikke at blive udfyldt, "
-"medmindre du ønsker at have denne information med i breve du sender."
-
-#: mail/mail-config-druid.c:101
-msgid ""
-"Please enter information about your incoming mail server below. If you don't "
-"know what kind of server you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"Venligst indtast information om din tjener for indkommende e-post "
-"nedenunder. Hvis du ikke véd hvilken slags server du skal bruge, så kontakt "
-"din systemadministrator eller internetudbyder."
-
-#: mail/mail-config-druid.c:105
-msgid ""
-"Please enter information about your outgoing mail protocol below. If you "
-"don't know which protocol you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"Venligst indtast information om protokol for udgående e-post nedenunder. "
-"Hvis du ikke véd hvilken protokol du skal bruge, så kontakt din "
-"systemadministrator eller internetudbyder."
-
-#: mail/mail-config-druid.c:107
-msgid ""
-"You are almost done with the mail configuration process. The identity, "
-"incoming mail server and outgoing mail transport method which you provided "
-"will be grouped together to make an Evolution mail account. Please enter a "
-"name for this account in the space below. This name will be used for display "
-"purposes only."
-msgstr ""
-
-#. set window title
-#: mail/mail-config-druid.c:445
-msgid "Evolution Account Wizard"
-msgstr "Evolution konto-guide"
-
-#: mail/mail-config.glade.h:1
-msgid " Check for supported types "
-msgstr " Tjek for støttede typer"
-
-#: mail/mail-config.glade.h:2
-msgid " color"
-msgstr " farve"
-
-#: mail/mail-config.glade.h:3
-msgid "Account"
-msgstr "Konto"
-
-#: mail/mail-config.glade.h:4
-msgid "Account Information"
-msgstr "kontoinformation"
-
-#: mail/mail-config.glade.h:5
-msgid "Account Management"
-msgstr "Kontoadministration"
-
-#: mail/mail-config.glade.h:6
-msgid "Accounts"
-msgstr "Konti"
-
-#: mail/mail-config.glade.h:8
-msgid "Always load images off the net"
-msgstr "Indlæs aftid billeder fra nettet"
-
-#: mail/mail-config.glade.h:10
-msgid "Authentication"
-msgstr "Godkendelse"
-
-#: mail/mail-config.glade.h:11
-msgid "Authentication Type: "
-msgstr "Godkendelsestype: "
-
-#: mail/mail-config.glade.h:12
-msgid "Automatically check for new mail every"
-msgstr "Tjek automatisk for nye beskeder hvert"
-
-#: mail/mail-config.glade.h:14
-msgid "Composer"
-msgstr "Beskedskriver"
-
-#: mail/mail-config.glade.h:15
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-"Din epost-konfiguration er nu komplet.\n"
-"Klik \"Fuldfør\" for at gemme dine nye indstillinger"
-
-#: mail/mail-config.glade.h:21
-msgid "De_fault"
-msgstr "Standard"
-
-#: mail/mail-config.glade.h:22
-msgid "Default \"Forward\" style is: "
-msgstr ""
-
-#: mail/mail-config.glade.h:25
-msgid "Done"
-msgstr "Færdig"
-
-#: mail/mail-config.glade.h:26
-msgid "Drafts"
-msgstr "Kladder"
-
-#: mail/mail-config.glade.h:27
-msgid "Drafts folder:"
-msgstr "Kladdemappe:"
-
-#: mail/mail-config.glade.h:29
-msgid "Email Address:"
-msgstr "Epostadresse:"
-
-#: mail/mail-config.glade.h:31
-msgid "Full Name:"
-msgstr "Fulde navn:"
-
-#: mail/mail-config.glade.h:32
-msgid "Highlight citations with"
-msgstr ""
-
-#: mail/mail-config.glade.h:34
-msgid "IMAPv4 "
-msgstr "IMAPv4 "
-
-#: mail/mail-config.glade.h:35
-msgid "Identity"
-msgstr "Identitet"
-
-#: mail/mail-config.glade.h:36
-msgid "In HTML mail"
-msgstr ""
-
-#: mail/mail-config.glade.h:37
-msgid "Inline"
-msgstr "Vis i brev"
-
-#: mail/mail-config.glade.h:38
-msgid "Kerberos "
-msgstr "Kerberos "
-
-#: mail/mail-config.glade.h:39
-msgid "Load images if sender is in addressbook"
-msgstr ""
-
-#: mail/mail-config.glade.h:40
-msgid "Mail Configuration"
-msgstr "Konfiguration af epost"
-
-#: mail/mail-config.glade.h:41
-msgid "Make this my default account"
-msgstr "Gør dette til min standardkonto"
-
-#: mail/mail-config.glade.h:42
-msgid "Mark messages as \"Read\" after:"
-msgstr ""
-
-#: mail/mail-config.glade.h:44
-msgid "Never load images off the net"
-msgstr ""
-
-#: mail/mail-config.glade.h:45
-msgid "News"
-msgstr "Nyheder"
-
-#: mail/mail-config.glade.h:47
-msgid "Optional Information"
-msgstr ""
-
-#: mail/mail-config.glade.h:48
-msgid "Organization:"
-msgstr "Organisation:"
-
-#: mail/mail-config.glade.h:49
-msgid "PGP"
-msgstr "PGP"
-
-#: mail/mail-config.glade.h:50
-msgid "PGP binary path:"
-msgstr "PGP binærsti:"
-
-#: mail/mail-config.glade.h:55
-msgid "Qmail maildir "
-msgstr ""
-
-#: mail/mail-config.glade.h:56
-#, fuzzy
-msgid "Quoted"
-msgstr "Bemærkning"
-
-#: mail/mail-config.glade.h:57
-msgid "Receiving Email"
-msgstr "Modtager post"
-
-#: mail/mail-config.glade.h:58
-msgid "Receiving Mail"
-msgstr "Modtager post"
-
-#: mail/mail-config.glade.h:59
-msgid "Receiving Options"
-msgstr ""
-
-#: mail/mail-config.glade.h:61
-msgid "Required Information"
-msgstr ""
-
-#: mail/mail-config.glade.h:63
-msgid "Select PGP binary"
-msgstr "Vælg PGP binær"
-
-#: mail/mail-config.glade.h:64
-msgid "Send mail in HTML format by default."
-msgstr ""
-
-#: mail/mail-config.glade.h:65
-msgid "Sending Email"
-msgstr "Sender post"
-
-#: mail/mail-config.glade.h:66
-msgid "Sending Mail"
-msgstr "Sender post"
-
-#: mail/mail-config.glade.h:68
-msgid "Sent"
-msgstr "Sendt"
-
-#: mail/mail-config.glade.h:69
-msgid "Sent and Draft Messages"
-msgstr ""
-
-#: mail/mail-config.glade.h:70
-msgid "Sent messages folder:"
-msgstr ""
-
-#: mail/mail-config.glade.h:71
-msgid "Server Configuration"
-msgstr "Konfiguration af tjener"
-
-#: mail/mail-config.glade.h:72
-msgid "Server Type: "
-msgstr "Tjenertype:"
-
-#: mail/mail-config.glade.h:73
-msgid "Server requires authentication"
-msgstr "Server kræver autentificering"
-
-#: mail/mail-config.glade.h:74
-msgid "Signature file:"
-msgstr "Signaturfil:"
-
-#: mail/mail-config.glade.h:75
-msgid "Sources"
-msgstr "Kilder"
-
-#: mail/mail-config.glade.h:76
-msgid "Special Folders"
-msgstr "Specielle mapper"
-
-#: mail/mail-config.glade.h:77
-msgid "Standard Unix mbox"
-msgstr "Standard-Unix mbox"
-
-#: mail/mail-config.glade.h:78
-msgid "Type"
-msgstr "Type"
-
-#: mail/mail-config.glade.h:79
-msgid "Use secure connection (SSL)"
-msgstr "Brug sikker forbindelse (SSL)"
-
-#: mail/mail-config.glade.h:80
-msgid "Username:"
-msgstr "Brugernavn:"
-
-#: mail/mail-config.glade.h:81
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-
-#: mail/mail-config.glade.h:86 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:42 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:33
-msgid "_Edit"
-msgstr "_Redigér"
-
-#: mail/mail-display.c:196
-msgid "Save Attachment"
-msgstr "Gem bilag"
-
-#: mail/mail-display.c:236
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr "Kunne ikke oprette midlertidig katalog: %s"
-
-#: mail/mail-display.c:297
-msgid "Save to Disk..."
-msgstr "Gem på disk..."
-
-#: mail/mail-display.c:299
-#, c-format
-msgid "Open in %s..."
-msgstr "Åbn i %s..."
-
-#: mail/mail-display.c:301
-msgid "View Inline"
-msgstr "Vis i brev"
-
-#: mail/mail-display.c:336
-msgid "External Viewer"
-msgstr "Ekstern visning"
-
-#: mail/mail-display.c:359
-#, c-format
-msgid "View Inline (via %s)"
-msgstr "Vis i brev (via %s)"
-
-#: mail/mail-display.c:363
-msgid "Hide"
-msgstr "Skjul"
-
-#: mail/mail-display.c:962
-msgid "Loading message content"
-msgstr "Indlæser indholdet af beskeden"
-
-#: mail/mail-display.c:1253
-msgid "Open link in browser"
-msgstr ""
-
-#: mail/mail-display.c:1255
-msgid "Save as (FIXME)"
-msgstr "Gem som (RETMIG)"
-
-#: mail/mail-display.c:1257
-msgid "Copy location (FIXME)"
-msgstr "Kopiér placering (RETMIG)"
-
-#: mail/mail-format.c:527
-#, c-format
-msgid "%s attachment"
-msgstr "%s-bilag"
-
-#: mail/mail-format.c:573
-msgid "Could not parse MIME message. Displaying as source."
-msgstr ""
-
-#: mail/mail-format.c:1029
-msgid "No GPG/PGP program configured."
-msgstr ""
-
-#: mail/mail-format.c:1044
-msgid "Encrypted message not displayed"
-msgstr "Krypteret besked ikke vist"
-
-#: mail/mail-format.c:1050
-msgid "Encrypted message"
-msgstr "Krypteret besked"
-
-#: mail/mail-format.c:1051
-msgid "Click icon to decrypt."
-msgstr "Klik på ikonen for at dekryptere."
-
-#: mail/mail-format.c:1141 mail/mail-format.c:1527
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr "Denne besked er underskrevet digitalt og er fundet autentisk."
-
-#: mail/mail-format.c:1149 mail/mail-format.c:1535
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr "Denne besked er underskrevet digitalt, men er ikke fundet autentisk."
-
-#: mail/mail-format.c:1749
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr "Peger til FTP-tjener (%s)"
-
-#: mail/mail-format.c:1761
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr "Peger til lokal fil (%s) gyldig på netsted \"%s\""
-
-#: mail/mail-format.c:1765
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr "Peger til lokal fil (%s)"
-
-#: mail/mail-format.c:1799
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr "Peger til ukendt eksternt data (\"%s\"-type)"
-
-#: mail/mail-format.c:1804
-msgid "Malformed external-body part."
-msgstr "Fejludformet del for ekstern-krop."
-
-#: mail/mail-local.c:505
-#, c-format
-msgid "Opening '%s'"
-msgstr "Åbner '%s'"
-
-#: mail/mail-local.c:785
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr "Ændrer mappe \"%s\" til \"%s\" format"
-
-#: mail/mail-local.c:789
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr "Ændr mappe \"%s\" til \"%s\" format"
-
-#: mail/mail-local.c:812
-msgid "Reconfiguring folder"
-msgstr "_Rekonfigurér mappe"
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:841
-msgid "Closing current folder"
-msgstr "Lukker aktiv mappe"
-
-#: mail/mail-local.c:873
-msgid "Renaming old folder and opening"
-msgstr "Ændrer navn på gammel mappe og genåbner"
-
-#: mail/mail-local.c:891
-msgid "Creating new folder"
-msgstr "Opretter en ny mappe"
-
-#: mail/mail-local.c:905
-msgid "Copying messages"
-msgstr "Kopierer beskeder"
-
-#: mail/mail-local.c:922
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-"Kan ikke gemme metainformation for mappe; du vil sandsynligvis\n"
-"ikke kunne åbne denne mappe igen: %s"
-
-#: mail/mail-local.c:961
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-"Hvis du ikke kan åbne denne postboks igen skal\n"
-"du reparere den manuelt."
-
-#: mail/mail-mt.c:190
-#, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-"Fejl ved '%s':\n"
-"%s"
-
-#: mail/mail-mt.c:193
-#, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-"Fejl ved udføring af operation:\n"
-"%s"
-
-#: mail/mail-mt.c:516 mail/mail-mt.c:545 mail/mail-mt.c:880
-msgid "Working"
-msgstr "Arbejder"
-
-#: mail/mail-mt.c:862
-msgid "Evolution progress"
-msgstr "Evolution fremgang"
-
-#: mail/mail-ops.c:599
-#, c-format
-msgid "Sending \"%s\""
-msgstr "Sender '%s'"
-
-#: mail/mail-ops.c:603
-msgid "Sending message"
-msgstr "Sender meddelelse"
-
-#: mail/mail-ops.c:718
-#, c-format
-msgid "Sending message %d of %d"
-msgstr ""
-
-#: mail/mail-ops.c:737
-#, c-format
-msgid "Failed on message %d of %d"
-msgstr ""
-
-#: mail/mail-ops.c:739 mail/mail-send-recv.c:475
-msgid "Complete."
-msgstr "Fuldført."
-
-#: mail/mail-ops.c:825
-msgid "Saving message to folder"
-msgstr "Gemmer besked i mappe"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Moving messages to %s"
-msgstr "Flytter meddelelser til %s"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Copying messages to %s"
-msgstr "Kopierer beskeder til %s"
-
-#: mail/mail-ops.c:914
-msgid "Moving"
-msgstr "Flytter"
-
-#: mail/mail-ops.c:917
-msgid "Copying"
-msgstr "Kopiérer"
-
-#: mail/mail-ops.c:992
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr "Skanner mapper i '%s'"
-
-#: mail/mail-ops.c:1154
-msgid "Forwarded messages"
-msgstr "Videresendte meddelelser"
-
-#: mail/mail-ops.c:1195 mail/mail-ops.c:1333
-#, c-format
-msgid "Opening folder %s"
-msgstr "Åbner mappe %s"
-
-#: mail/mail-ops.c:1262
-#, c-format
-msgid "Opening store %s"
-msgstr "Åbner lager %s"
-
-#: mail/mail-ops.c:1449
-msgid "Expunging folder"
-msgstr "Tømmer mappe for slettede beskeder"
-
-#: mail/mail-ops.c:1498
-#, c-format
-msgid "Retrieving message %s"
-msgstr "Modtager meddelelse %s"
-
-#: mail/mail-ops.c:1565
-msgid "Retrieving messages"
-msgstr "Modtager meddelelser"
-
-#: mail/mail-ops.c:1575
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr "Henter besked nummer %d af %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1649
-msgid "Saving messages"
-msgstr "Gemmer beskeder"
-
-#: mail/mail-ops.c:1728
-#, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr ""
-"Kunne ikke oprette uddatafil: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1741
-#, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr "Gemmer besked %d af %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1755
-#, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr ""
-"Fejl ved gemning af beskeder til: %s:\n"
-" %s"
-
-#: mail/mail-ops.c:1829
-msgid "Saving attachment"
-msgstr "Gemmer bilag"
-
-#: mail/mail-ops.c:1844
-#, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr ""
-"Kunne ikke oprette uddatafil: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1872
-#, c-format
-msgid "Could not write data: %s"
-msgstr "Kan ikke skrive data: %s"
-
-#: mail/mail-ops.c:1939
-#, fuzzy, c-format
-msgid "Disconnecting from %s"
-msgstr "Epost fra %s"
-
-#: mail/mail-search.c:138
-msgid "(Untitled Message)"
-msgstr "(Unavngivet besked)"
-
-#: mail/mail-search.c:268
-msgid "Find in Message"
-msgstr "Find i besked"
-
-#: mail/mail-search.c:298
-msgid "Case Sensitive"
-msgstr ""
-
-#: mail/mail-search.c:299
-#, fuzzy
-msgid "Search Forward"
-msgstr "Søg efter en streng"
-
-#: mail/mail-search.c:316
-msgid "Find:"
-msgstr "Find:"
-
-#: mail/mail-search.c:319
-msgid "Matches:"
-msgstr "Matcher:"
-
-#: mail/mail-search-dialogue.c:113
-msgid "_Search"
-msgstr "_Søg"
-
-#: mail/mail-send-recv.c:138
-msgid "Cancelling..."
-msgstr "Afbryder..."
-
-#: mail/mail-send-recv.c:233
-msgid "Send & Receive mail"
-msgstr "Send & modtag e-post"
-
-#: mail/mail-send-recv.c:236
-msgid "Receiving"
-msgstr "Modtager"
-
-#: mail/mail-send-recv.c:285
-msgid "Updating..."
-msgstr "Opdaterer..."
-
-#: mail/mail-send-recv.c:287 mail/mail-send-recv.c:333
-msgid "Waiting..."
-msgstr "Venter..."
-
-#: mail/mail-send-recv.c:306
-msgid "Sending"
-msgstr "Sender"
-
-#: mail/mail-send-recv.c:471
-msgid "Cancelled."
-msgstr "Afbrudt"
-
-#: mail/mail-summary.c:110
-msgid "Incomplete message written on pipe!"
-msgstr "Ufuldstændig meddelse skrevet til rør!"
-
-#: mail/mail-summary.c:468
-msgid "Mail Summary"
-msgstr "Sammendrag"
-
-#: mail/mail-tools.c:145
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr "Kunne ikke oprette midlertidig mbox '%s': %s"
-
-#: mail/mail-tools.c:192
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr "[%s] (videresendt meddelelse)"
-
-#: mail/mail-tools.c:202
-msgid "Fwd: (no subject)"
-msgstr "Fwd: (uden emne)"
-
-#: mail/mail-tools.c:219
-#, c-format
-msgid "Forwarded message - %s"
-msgstr "Videresendt meddelelse - %s"
-
-#: mail/mail-tools.c:221
-msgid "Forwarded message (no subject)"
-msgstr "Videresendt meddelelse (intet emne)"
-
-#: mail/mail-tools.c:428
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-msgstr ""
-"-----Videresendt besked---<br><b>Fra:</b> %s<br><b>Til:</b> "
-"%s<br><b>Emne:</b> %s<br>"
-
-#: mail/mail-vfolder.c:249
-msgid "VFolders"
-msgstr "vMapper"
-
-#: mail/mail-vfolder.c:438
-msgid "New VFolder"
-msgstr "Ny vMappe"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/message-browser.c:188 ui/evolution-mail.xml.h:70
-msgid "Reply"
-msgstr "Svar"
-
-#: mail/message-browser.c:188
-msgid "Reply to the sender of this message"
-msgstr "Svar til afsenderen af denne meddelelse"
-
-#: mail/message-browser.c:191 ui/evolution-mail.xml.h:71
-msgid "Reply to All"
-msgstr "Svar til alle"
-
-#: mail/message-browser.c:191
-msgid "Reply to all recipients of this message"
-msgstr "Svar til alle modtagere af denne meddelelse"
-
-#: mail/message-browser.c:194 ui/evolution-mail.xml.h:33
-msgid "Forward"
-msgstr "Videresend"
-
-#: mail/message-browser.c:194
-msgid "Forward this message"
-msgstr "Videresend denne meddelelse"
-
-#: mail/message-browser.c:199
-msgid "Print the selected message"
-msgstr "Udskriv den valgte meddelelse"
-
-#: mail/message-browser.c:202
-msgid "Delete this message"
-msgstr "Slet denne meddelelse"
-
-#: mail/message-browser.c:207 ui/evolution-event-editor.xml.h:33
-#: ui/evolution-mail.xml.h:64 ui/evolution-task-editor-dialog.xml.h:36
-msgid "Previous"
-msgstr "Forri_ge"
-
-#: mail/message-browser.c:207
-msgid "Previous message"
-msgstr "Forrige besked"
-
-#: mail/message-browser.c:210 ui/evolution-calendar.xml.h:18
-#: ui/evolution-event-editor.xml.h:29 ui/evolution-mail.xml.h:57
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "Next"
-msgstr "Næste"
-
-#: mail/message-browser.c:210
-msgid "Next message"
-msgstr "Hjælpebesked"
-
-#: mail/message-list.c:677
-msgid "Unseen"
-msgstr "Ulæst"
-
-#: mail/message-list.c:678
-msgid "Seen"
-msgstr "Læst"
-
-#: mail/message-list.c:679
-msgid "Answered"
-msgstr "Besvaret"
-
-#: mail/message-list.c:680
-msgid "Multiple Unseen Messages"
-msgstr "Flere ulæste beskeder"
-
-#: mail/message-list.c:681
-msgid "Multiple Messages"
-msgstr "Flere beskeder"
-
-#: mail/message-list.c:685
-msgid "Lowest"
-msgstr "Lavest"
-
-#: mail/message-list.c:686
-msgid "Lower"
-msgstr "Lavere"
-
-#: mail/message-list.c:690
-msgid "Higher"
-msgstr "Højere"
-
-#: mail/message-list.c:691
-msgid "Highest"
-msgstr "Højest"
-
-#: mail/message-list.c:941
-msgid "?"
-msgstr "?"
-
-#: mail/message-list.c:948
-msgid "Today %l:%M %p"
-msgstr "Idag %h:%M"
-
-#: mail/message-list.c:957
-msgid "Yesterday %l:%M %p"
-msgstr "Igår %h:%M"
-
-#: mail/message-list.c:969
-msgid "%a %l:%M %p"
-msgstr "%a %H:%M"
-
-#: mail/message-list.c:977
-msgid "%b %d %l:%M %p"
-msgstr "%a %Y-%m-%d %H:%M:%S"
-
-#: mail/message-list.c:979
-msgid "%b %d %Y"
-msgstr "%a %d %Y"
-
-#: mail/message-list.c:1081
-msgid "Flagged"
-msgstr "Mærket"
-
-#: mail/message-list.c:1082
-msgid "From"
-msgstr "Afsender"
-
-#: mail/message-list.c:1082
-msgid "Date"
-msgstr "Dato"
-
-#: mail/message-list.c:1082
-msgid "Received"
-msgstr "Modtaget"
-
-#: mail/message-list.c:1083
-msgid "To"
-msgstr "Modtager"
-
-#: mail/message-list.c:1083
-msgid "Size"
-msgstr "Størrelse"
-
-#: mail/mail-session.c:161
-#, fuzzy
-msgid "User canceled operation."
-msgstr "Handling annulleret"
-
-#: mail/subscribe-dialog.c:76 shell/e-storage-set-view.c:48
-msgid "Folder"
-msgstr "Mappe"
-
-#: mail/subscribe-dialog.c:77
-msgid "Store"
-msgstr "Gem"
-
-#: mail/subscribe-dialog.c:138
-msgid "Display folders starting with:"
-msgstr "Vis mapper som som starter med:"
-
-#: mail/subscribe-dialog.c:168
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr "Henter lager for \"%s\""
-
-#: mail/subscribe-dialog.c:271
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr "Abonnerer på mappe \"%s\""
-
-#: mail/subscribe-dialog.c:273
-#, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr "Fjerner abonnement på mappe \"%s\""
-
-#. Construct the app
-#: mail/subscribe-dialog.c:873
-msgid "Manage Subscriptions"
-msgstr "_Håndtér abonnementer"
-
-#: shell/e-setup.c:118 shell/e-setup.c:191
-msgid "Evolution installation"
-msgstr "Evolution installation"
-
-#: shell/e-setup.c:122
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-"Denne nye version af Evolution skal installere flere filer i\n"
-"dit personlige Evolution-katalog"
-
-#: shell/e-setup.c:123
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr ""
-"Klik venligst \"Ok\" for at installere filerne, eller 'annullér' for at "
-"afslutte."
-
-#: shell/e-setup.c:163
-msgid "Could not update files correctly"
-msgstr "Kunne ikke opdatere filer korrekt"
-
-#: shell/e-setup.c:166 shell/e-setup.c:234
-msgid "Evolution files successfully installed."
-msgstr "Evolutions filer blev installeret."
-
-#: shell/e-setup.c:195
-msgid "This seems to be the first time you are running Evolution."
-msgstr "Dette ser ud til at være første gang du kører Evolution."
-
-#: shell/e-setup.c:196
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr "Venligst klik \"OK\" for at installere Evolutions brugerfiler under"
-
-#: shell/e-setup.c:215
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"Kan ikke oprette kataloget\n"
-"%s\n"
-"Fejl: %s"
-
-#: shell/e-setup.c:230
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-"Kan ikke kopiere filer til\n"
-"'%s'."
-
-#: shell/e-setup.c:255
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-"Filen '%s' er ikke et katalog.\n"
-"Venligst fjern denne for at tillade installation\n"
-"af Evolution's brugerfiler."
-
-#: shell/e-setup.c:267
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-"Filen '%s' er ikke et katalog.\n"
-"Venligst fjern denne for at tillade installation\n"
-"af Evolution's brugerfiler."
-
-#: shell/e-shell.c:388
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr "Kan ikke opsætte lokal gemning -- %s"
-
-#: shell/e-shell.c:1268
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-"Ups! Visningen for `%s' døde uventet. :-(\n"
-"Dette betyder sandsynligvis at %s komponenten er brudt ned."
-
-#: shell/e-shell-folder-creation-dialog.c:99
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-"Kan ikke oprette specificeret katalog:\n"
-"%s"
-
-#: shell/e-shell-folder-creation-dialog.c:156
-msgid "The specified folder name is not valid."
-msgstr "Det angivne katalognavn er ikke gyldigt."
-
-#: shell/e-shell-folder-creation-dialog.c:263
-msgid "Evolution - Create new folder"
-msgstr "Evolution - opret ny mappe"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-"Typen på den valgte mappe er ikke gyldig til\n"
-"den ønskede operation."
-
-#: shell/e-shell-folder-selection-dialog.c:321
-msgid "New..."
-msgstr "Ny..."
-
-#: shell/e-shell-folder-title-bar.c:459 shell/e-shell-folder-title-bar.c:460
-msgid "(Untitled)"
-msgstr "(Unavngivet)"
-
-#: shell/e-shell-importer.c:97
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-"Vælg filen du ønsker at importere til Evolution og vælg hvilken type fil det "
-"er fra listen.\n"
-"\n"
-"Du kan vælge \"Automatisk\" hvis du ikke ved det, så vil Evolution prøve at "
-"finde ud af hvilken type det er, for dig."
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/e-shell-importer.c:192
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-"Importerer %s\n"
-"Importør ikke klar.\n"
-"Venter 5 sekunder før nyt forsøg."
-
-#: shell/e-shell-importer.c:212 shell/e-shell-importer.c:243
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-"Importerer %s\n"
-"Importerer opføring %d."
-
-#: shell/e-shell-importer.c:353
-#, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr ""
-"Der er ingen importør som kan håndtere\n"
-"%s"
-
-#: shell/e-shell-importer.c:363
-msgid "Importing"
-msgstr "Importerer"
-
-#: shell/e-shell-importer.c:371
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-"Importerer %s.\n"
-"Starter %s"
-
-#: shell/e-shell-importer.c:384
-#, c-format
-msgid "Error starting %s"
-msgstr ""
-
-#: shell/e-shell-importer.c:404
-#, c-format
-msgid "Error loading %s"
-msgstr "Fejl under indlæsning af %s"
-
-#: shell/e-shell-importer.c:419
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-"Importerer %s\n"
-"Importerer opføring 1."
-
-#: shell/e-shell-importer.c:490
-msgid "Automatic"
-msgstr "Automatisk"
-
-#: shell/e-shell-importer.c:540
-msgid "Filename:"
-msgstr "Filnavn:"
-
-#: shell/e-shell-importer.c:545 shell/importer/import.glade.h:5
-msgid "Select a file"
-msgstr "Vælg fil"
-
-#: shell/e-shell-importer.c:555
-msgid "File type:"
-msgstr "Filtype:"
-
-#: shell/e-shell-importer.c:601
-msgid "Select folder"
-msgstr "Vælg mappe"
-
-#: shell/e-shell-offline-handler.c:554
-msgid "Closing connections..."
-msgstr "Afbryder forbindelser..."
-
-#: shell/e-shell-view.c:149
-msgid "(No folder displayed)"
-msgstr "(Ingen mappe vist)"
-
-#: shell/e-shell-view.c:1204
-#, c-format
-msgid "%s - Evolution %s"
-msgstr "%s - Evolution %s"
-
-#: shell/e-shell-view.c:1206
-#, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "%s - Evolution %s [%s]"
-
-#: shell/e-shell-view-menu.c:175
-msgid "Bug buddy was not found in your $PATH."
-msgstr "Fejl-Frede fandtes ikke i din $PATH"
-
-#: shell/e-shell-view-menu.c:181
-msgid "Bug buddy could not be run."
-msgstr "Fejl-Frede kunne ikke køres"
-
-#: shell/e-shell-view-menu.c:226
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Ophavsret tilhørende Ximian, Inc. 1999-2001."
-
-#: shell/e-shell-view-menu.c:228
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-"Evolution er en samling af gruppeorienterede anvendelser\n"
-"til administrering af post, kalender og aftaler\n"
-"indenfor Gnomes skrivebordsmiljø."
-
-#: shell/e-shell-view-menu.c:392
-msgid "Go to folder..."
-msgstr "Gå til mappe..."
-
-#: shell/e-shell-view-menu.c:576
-msgid "Work online"
-msgstr "Arbejd på nettet"
-
-#: shell/e-shell-view-menu.c:588 shell/e-shell-view-menu.c:600
-msgid "Work offline"
-msgstr "Arbejd uden net"
-
-#: shell/e-shortcuts.c:381
-msgid "Error saving shortcuts."
-msgstr "Fejl under gemning af genveje."
-
-#: shell/e-shortcuts-view.c:134
-msgid "Create new shortcut group"
-msgstr "Opret en ny kontakt"
-
-#: shell/e-shortcuts-view.c:137
-msgid "Group name:"
-msgstr "Gruppenavn:"
-
-#: shell/e-shortcuts-view.c:260
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-"Ønsker du virkelig at fjerne gruppe %s\n"
-"fra genvejsbjælken?"
-
-#: shell/e-shortcuts-view.c:265
-msgid "Don't remove"
-msgstr "Fjern ikke"
-
-#: shell/e-shortcuts-view.c:276
-msgid "_Small Icons"
-msgstr "_Små ikoner"
-
-#: shell/e-shortcuts-view.c:277
-msgid "Show the shortcuts as small icons"
-msgstr "Vis genveje som små ikoner"
-
-#: shell/e-shortcuts-view.c:279
-msgid "_Large Icons"
-msgstr "Store i_koner"
-
-#: shell/e-shortcuts-view.c:280
-msgid "Show the shortcuts as large icons"
-msgstr "Vis genveje som store ikoner"
-
-#: shell/e-shortcuts-view.c:291
-msgid "_New Group..."
-msgstr "_Ny gruppe..."
-
-#: shell/e-shortcuts-view.c:292
-msgid "Create a new shortcut group"
-msgstr "Opret en ny genvejsgruppe"
-
-#: shell/e-shortcuts-view.c:294
-msgid "_Remove This Group..."
-msgstr "_Fjern denne gruppe..."
-
-#: shell/e-shortcuts-view.c:295
-msgid "Remove this shortcut group"
-msgstr "Fjern denne genvejsgruppe"
-
-#: shell/e-shortcuts-view.c:300
-msgid "_Hide the Shortcut Bar"
-msgstr "Skjul genvejsbjælken"
-
-#: shell/e-shortcuts-view.c:301
-msgid "Hide the shortcut bar"
-msgstr "Skjul genvejsbjælken"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate"
-msgstr "Aktivér"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate this shortcut"
-msgstr "Aktivér denne genvej"
-
-#: shell/e-shortcuts-view.c:388
-msgid "Remove this shortcut from the shortcut bar"
-msgstr "Fjern denne genvej fra genvejsbjælken"
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr "(Uden navn)"
-
-#: shell/e-storage.c:459
-msgid "No error"
-msgstr "Ingen fejl"
-
-#: shell/e-storage.c:461
-msgid "Generic error"
-msgstr "Almindelig fejl"
-
-#: shell/e-storage.c:463
-msgid "A folder with the same name already exists"
-msgstr "En mappe med samme navn eksisterer allerede"
-
-#: shell/e-storage.c:465
-msgid "The specified folder type is not valid"
-msgstr "Specificeret mappetype er ikke gyldig"
-
-#: shell/e-storage.c:467
-msgid "I/O error"
-msgstr "I/U-fejl"
-
-#: shell/e-storage.c:469
-msgid "Not enough space to create the folder"
-msgstr "Ikke nok plads til at oprette mappen"
-
-#: shell/e-storage.c:471
-msgid "The specified folder was not found"
-msgstr "Angivet mappe blev ikke fundet"
-
-#: shell/e-storage.c:473
-msgid "Function not implemented in this storage"
-msgstr "Funktionen ikke implementeret i denne gemning"
-
-#: shell/e-storage.c:475
-msgid "Permission denied"
-msgstr "Adgang nægtet"
-
-#: shell/e-storage.c:477
-msgid "Operation not supported"
-msgstr "Operationen er ikke understøttet"
-
-#: shell/e-storage.c:479
-msgid "The specified type is not supported in this storage"
-msgstr "Den angivne type er ikke understøttet i denne gemning"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-msgid "Folder name:"
-msgstr "Mappenavn:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-msgid "Folder type:"
-msgstr "Mappetype:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-msgid "Specify where to create the folder:"
-msgstr "Angiv hvor mappen skal oprettes:"
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-msgid "The Evolution shell."
-msgstr "Evolution-skallen."
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr "Klik \"Importér\" for at starte importering af filen til Evolution."
-
-#: shell/importer/import.glade.h:2
-msgid "Evolution Import Utility"
-msgstr "Evolution importeringsprogram"
-
-#: shell/importer/import.glade.h:3
-msgid "Evolution Importer Utility"
-msgstr "Evolution importørprogram"
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-"Velkommen til Evolutions importværktøj.\n"
-"Via denne vejviser vil du ledes gennem importprocessen af\n"
-"eksterne filer til Evolution."
-
-#: shell/importer/intelligent.c:186
-msgid "Importers"
-msgstr "Importerer"
-
-#: shell/main.c:82
-#, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-"Hej. Tak for at du har taget dig tid til at hente denne prøveversion\n"
-"af Evolution gruppevare-suiten.\n"
-"\n"
-"Evolution er ikke færdig. Det nærmer sig, men dele af funktionaliteten\n"
-"mangler eller er ikke fuldført. Hvis du ikke finder ud hvordan ting\n"
-"virker, er grunden sandsynligvis bare at dette ikke er lagt til i koden\n"
-"endnu.\n"
-"\n"
-"Vi håber at Evolution vil være nyttig for dig, men vi føler fremdeles\n"
-"behov for at advare dig om følgende: Evolution vil: gå ned, miste din "
-"e-post\n"
-"når du ikke vil have at det skal ske, efterlade sig vilfarne processer som "
-"\n"
-"spiser 100% af din CPU-tid, låse sig, sende e-post i HTML-format til\n"
-"tilfældige e-postlister, og gøre dig pinlig for dine venner og kolleger.\n"
-"Brug kun efter anbefaling.\n"
-"\n"
-"Vi håber at du nyder resultatene af vort hårde arbejde, og vi venter i\n"
-"spænding på at du tilbyder din hjælp!\n"
-
-#: shell/main.c:107
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-"Tak\n"
-"Holdet bag Evolution\n"
-
-#: shell/main.c:138
-msgid "Cannot initialize the Evolution shell."
-msgstr "Kan ikke initialisere Evolution-skallen."
-
-#: shell/main.c:184
-msgid "Disable splash screen"
-msgstr "Deaktivér opstartsskærm"
-
-#: shell/main.c:185
-msgid "Send the debugging output of all components to a file."
-msgstr ""
-
-#: shell/main.c:217
-msgid "Cannot initialize the Bonobo component system."
-msgstr "Kunne ikke initialisere komponentsystemet, Bonobo."
-
-#: ui/evolution-addressbook.xml.h:2
-msgid "Create new contact"
-msgstr "Opret ny kontakt"
-
-#: ui/evolution-addressbook.xml.h:4
-msgid "Delete a contact"
-msgstr "Slet kontakt"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-msgid "Find"
-msgstr "Find"
-
-#: ui/evolution-addressbook.xml.h:6
-msgid "Find a contact"
-msgstr "Find kontakt"
-
-#: ui/evolution-addressbook.xml.h:7
-msgid "New contact"
-msgstr "Ny kontakt"
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-mail.xml.h:63
-msgid "Previews the message to be printed"
-msgstr "Viser forhåndsvisning af beskeden som skal udskrives"
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "Print contacts"
-msgstr "Udskriv kontakt"
-
-#: ui/evolution-addressbook.xml.h:12
-msgid "Stop"
-msgstr "Stop"
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "Stop Loading"
-msgstr "Stop indlæsning"
-
-#: ui/evolution-addressbook.xml.h:14
-msgid "View All"
-msgstr "Vis alle"
-
-#: ui/evolution-addressbook.xml.h:15
-msgid "View all contacts"
-msgstr "Vis alle kontakter"
-
-#: ui/evolution-addressbook.xml.h:16
-msgid "_Addressbook Sources..."
-msgstr "_Adressebog-kilder..."
-
-#: ui/evolution-addressbook.xml.h:17
-msgid "_Contact"
-msgstr "_Kontakt"
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-msgid "_Print..."
-msgstr "_Udskriv..."
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr "_Søg efter kontakter"
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-task-editor-dialog.xml.h:88
-#: ui/evolution.xml.h:46
-msgid "_Tools"
-msgstr "_Værktøj"
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr "Fem dage"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-msgid "Alter preferences"
-msgstr "Ændr opsætning"
-
-#: ui/evolution-calendar.xml.h:4
-msgid "Create a new all day Event"
-msgstr "Opret en ny aftale for hele dagen"
-
-#: ui/evolution-calendar.xml.h:5
-msgid "Create a new appointment"
-msgstr "Opret en ny aftale"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr "Opret en ny kalender"
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr "Dag"
-
-#: ui/evolution-calendar.xml.h:8
-msgid "Go To"
-msgstr "Gå til"
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr "Gå tilbage i tiden"
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go forward in time"
-msgstr "Gå fremad i tid"
-
-#: ui/evolution-calendar.xml.h:11
-msgid "Go to _Date"
-msgstr "Gå til _dato"
-
-#: ui/evolution-calendar.xml.h:12
-msgid "Go to _Today"
-msgstr "Gå _til idag"
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr "Gå til specifik dato"
-
-#: ui/evolution-calendar.xml.h:14
-msgid "Go to present time"
-msgstr "Gå til nutiden"
-
-#: ui/evolution-calendar.xml.h:15
-msgid "Month"
-msgstr "Måned"
-
-#: ui/evolution-calendar.xml.h:17
-msgid "New _Event"
-msgstr "Ny aftal_e"
-
-#: ui/evolution-calendar.xml.h:20
-msgid "Open Calendar"
-msgstr "Åbn kalender"
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Prev"
-msgstr "Smugkig"
-
-#: ui/evolution-calendar.xml.h:22
-msgid "Previews the calendar to be printed"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:25
-msgid "Print calendar"
-msgstr "Udskriv kalender"
-
-#: ui/evolution-calendar.xml.h:26
-msgid "Print this Calendar"
-msgstr "Udskriv denne kalender"
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:15
-msgid "Save As"
-msgstr "Gem som"
-
-#: ui/evolution-calendar.xml.h:28
-msgid "Save calendar as something else"
-msgstr "Gem kalender som noget andet"
-
-#: ui/evolution-calendar.xml.h:30
-msgid "Show 1 day"
-msgstr "Vis én dag"
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr "Vis én måned"
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr "Vis én uge"
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr "Vis arbejdsugen"
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:229
-#: widgets/misc/e-dateedit.c:424
-msgid "Today"
-msgstr "I dag"
-
-#: ui/evolution-calendar.xml.h:35
-msgid "W_ork Week"
-msgstr "Arbejds_uge"
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr "Uge"
-
-#: ui/evolution-calendar.xml.h:37
-msgid "_Appointment"
-msgstr "_Aftale"
-
-#: ui/evolution-calendar.xml.h:38
-msgid "_Day"
-msgstr "_Dag"
-
-#: ui/evolution-calendar.xml.h:39
-msgid "_Month"
-msgstr "_Måned"
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:42
-msgid "_New"
-msgstr "_Ny"
-
-#: ui/evolution-calendar.xml.h:41
-msgid "_Open Calendar"
-msgstr "_Åbn kalender"
-
-#: ui/evolution-calendar.xml.h:45
-msgid "_Week"
-msgstr "_Uge"
-
-#: ui/evolution-contact-editor.xml.h:2
-msgid "Delete this item"
-msgstr "Slet dette punkt"
-
-#: ui/evolution-contact-editor.xml.h:3
-msgid "Delete..."
-msgstr "Slet..."
-
-#: ui/evolution-contact-editor.xml.h:4
-msgid "Help"
-msgstr "Hjælp"
-
-#: ui/evolution-contact-editor.xml.h:5
-msgid "Print En_velope..."
-msgstr "Skriv kuvert..."
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-msgid "Print this item"
-msgstr "Udskriv denne ting"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:41
-msgid "Print..."
-msgstr "Udskriv..."
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:16
-#: ui/evolution-task-editor-dialog.xml.h:51
-msgid "Save _As..."
-msgstr "_Gem som..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-msgid "Save and Close"
-msgstr "Gem og luk"
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr "Gem kontakten og luk dialogboksen"
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr "Send _kontaktperson til andre..."
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr "Se hjælpetekster"
-
-#: ui/evolution-contact-editor.xml.h:13
-msgid "Send _message to contact..."
-msgstr "Ny _meddelelse til kontaktperson"
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:43 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:34
-msgid "_File"
-msgstr "_Fil"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:50
-#: ui/evolution-task-editor-dialog.xml.h:85
-msgid "_Save"
-msgstr "_Gem"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr "Om denne applikation"
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr "Om..."
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-msgid "Actio_ns"
-msgstr "Ha_ndlinger"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-msgid "Address _Book... (FIXME)"
-msgstr "Adresse_bog..."
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-msgid "C_lear"
-msgstr "T_øm"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-msgid "C_ut"
-msgstr "Klip _ud"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-msgid "Chec_k Names (FIXME)"
-msgstr "_Tjek navne"
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-msgid "Clear"
-msgstr "Tøm"
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-msgid "Clear the selection"
-msgstr "Tøm det valgte"
-
-#: ui/evolution-event-editor.xml.h:11
-msgid "Close this appointment"
-msgstr "Luk denne aftale"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "Kopiér til mappe... (RETMIG)"
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:8
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "Kopiér"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-msgid "Copy the selection"
-msgstr "Kopiér valget"
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr "Klip ud"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Cut the selection"
-msgstr "Klip valget ud"
-
-#: ui/evolution-event-editor.xml.h:18
-msgid "Delete this appointment"
-msgstr "Slet denne aftale"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr "Dump XML"
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr "Dump beskrivelse af grænsefladen som XML"
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr "Fø_rste opføring i mappe (RET)"
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-msgid "For_ward (FIXME)"
-msgstr "Videresend (RET)"
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr "Videresend som v_Kalender (RET)"
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-msgid "Go to the next item"
-msgstr "Gå til næste opføring"
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-msgid "Go to the previous item"
-msgstr "Gå til forrige opføring"
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-msgid "In_complete Task (FIXME)"
-msgstr "U_komplet opgave (RETMIG)"
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-msgid "Modify the file's properties"
-msgstr "Ændr filens egenskaber"
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-msgid "N_ext"
-msgstr "N_æste"
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-msgid "Paste"
-msgstr "Indsæt"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-msgid "Paste the clipboard"
-msgstr "Indsæt fra klippebordet"
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr "Forri_ge"
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-msgid "Print Pre_view"
-msgstr "Vis udskrift"
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-msgid "Print S_etup..."
-msgstr "Skriverops_ætning..."
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-msgid "Print Setup"
-msgstr "Skriveropsætning"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:14
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:241
-msgid "Save"
-msgstr "Gem"
-
-#: ui/evolution-event-editor.xml.h:43
-msgid "Save the appointment and close the dialog box"
-msgstr "Gem aftalen og luk dialogboksen"
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:20
-#: ui/evolution-task-editor-dialog.xml.h:53
-msgid "Save the current file"
-msgstr "Gem aktiv fil"
-
-#: ui/evolution-event-editor.xml.h:46
-msgid "Schedule _Meeting"
-msgstr "_Planlæg møde"
-
-#: ui/evolution-event-editor.xml.h:47
-msgid "Schedule some sort of a meeting"
-msgstr "Opsæt et eller andet møde"
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-task-editor-dialog.xml.h:57
-msgid "Select All"
-msgstr "Vælg alle"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-msgid "Select everything"
-msgstr "Vælg alt"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr "Redigér sideindstillinger for aktiv skriver"
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-msgid "Task _Request (FIXME)"
-msgstr "_Opgaveforespørgsel"
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-task-editor-dialog.xml.h:63
-msgid "_About..."
-msgstr "_Om..."
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:40
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:31
-msgid "_Close"
-msgstr "L_uk"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:32
-msgid "_Contact (FIXME)"
-msgstr "_Kontakt (RETMIG)"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-msgid "_Copy"
-msgstr "_Kopiér"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:41
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr "_Fejlsøg"
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:45
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:38
-msgid "_Help"
-msgstr "_Hjælp"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-msgid "_Item (FIXME)"
-msgstr "Opføring (RETMIG)"
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-msgid "_Journal Entry (FIXME)"
-msgstr "_Journalopføring (RETMIG)"
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-msgid "_Last Item in Folder (FIXME)"
-msgstr "_Sidste opføring i mappen (RETMIG)"
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-msgid "_Mail Message (FIXME)"
-msgstr "_Postmeddelelse (RETMIG)"
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-msgid "_Move to Folder... (FIXME)"
-msgstr "_Flyt til mappe... (RETMIG)"
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-msgid "_Note (FIXME)"
-msgstr "_Note (RETMIG)"
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-msgid "_Paste"
-msgstr "_Indsæt"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:115
-#: ui/evolution-task-editor-dialog.xml.h:83
-msgid "_Properties..."
-msgstr "Egenska_ber..."
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-msgid "_Select All"
-msgstr "Vælg alle"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:45
-msgid "_Task (FIXME)"
-msgstr "Opgave (RETMIG)"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-msgid "_Unread Item (FIXME)"
-msgstr "_Ulæst opføring (RETMIG)"
-
-#: ui/evolution-event-editor.xml.h:76 ui/evolution-message-composer.xml.h:52
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:47
-msgid "_View"
-msgstr "_Vis"
-
-#: ui/evolution-executive-summary.xml.h:1
-msgid "Add Service"
-msgstr "Tilføj tjeneste"
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr "Tilføj ny tjeneste til ledelsesresumé"
-
-#: ui/evolution-executive-summary.xml.h:3
-msgid "Create a new email"
-msgstr "Opret et nyt brev"
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr "Indstillinger for Ledelsesresumé..."
-
-#: ui/evolution-executive-summary.xml.h:5
-msgid "New Mail"
-msgstr "Nyt post"
-
-#: ui/evolution-mail.xml.h:1
-#, fuzzy
-msgid "Apply filter rules to the selected messages"
-msgstr "Udskriv den valgte meddelelse"
-
-#: ui/evolution-mail.xml.h:2
-msgid "Cancel"
-msgstr "Annullér"
-
-#: ui/evolution-mail.xml.h:3
-#, fuzzy
-msgid "Cancel the current mail operation"
-msgstr "Gem aktiv fil"
-
-#: ui/evolution-mail.xml.h:4
-msgid "Change the properties of this folder"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:5
-msgid "Compose"
-msgstr "Skriv"
-
-#: ui/evolution-mail.xml.h:6
-#, fuzzy
-msgid "Compose a reply to all of the recipients of the selected message"
-msgstr "Svar til alle modtagere af denne meddelelse"
-
-#: ui/evolution-mail.xml.h:7
-#, fuzzy
-msgid "Compose a reply to the sender of the selected message"
-msgstr "Svar til afsenderen af denne meddelelse"
-
-#: ui/evolution-mail.xml.h:9
-#, fuzzy
-msgid "Copy selected messages to another folder"
-msgstr "Kopiér meddelelse til en ny mappe"
-
-#: ui/evolution-mail.xml.h:10
-msgid "Create _Virtual Folder From Message"
-msgstr "Opret _virtuel mappe fra besked"
-
-#: ui/evolution-mail.xml.h:11
-msgid "Create a rule to filter messages from this sender"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:12
-msgid "Create a rule to filter messages to these recipients"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:13
-msgid "Create a rule to filter messages to this mailing list"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:14
-#, fuzzy
-msgid "Create a rule to filter messages with this subject"
-msgstr "Videresendt meddelelse (intet emne)"
-
-#: ui/evolution-mail.xml.h:15
-#, fuzzy
-msgid "Create a virtual folder for these recipients"
-msgstr "Opret _virtuel mappe fra besked"
-
-#: ui/evolution-mail.xml.h:16
-#, fuzzy
-msgid "Create a virtual folder for this mailing list"
-msgstr "Opret _virtuel mappe fra besked"
-
-#: ui/evolution-mail.xml.h:17
-#, fuzzy
-msgid "Create a virtual folder for this sender"
-msgstr "Opret _virtuel mappe fra besked"
-
-#: ui/evolution-mail.xml.h:18
-#, fuzzy
-msgid "Create a virtual folder for this subject"
-msgstr "Opret _virtuel mappe fra besked"
-
-#: ui/evolution-mail.xml.h:19
-msgid "Create or edit mail accounts and other preferences"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:20
-msgid "Create or edit rules for filtering new mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:21
-msgid "Create or edit virtual folder definitions"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:23
-#, fuzzy
-msgid "Display the next message"
-msgstr "den aktuelle tid"
-
-#: ui/evolution-mail.xml.h:24
-#, fuzzy
-msgid "Display the previous message"
-msgstr "Les en tidligere lagret melding"
-
-#: ui/evolution-mail.xml.h:25
-msgid "Empty _Trash"
-msgstr "_Tøm papirkurven"
-
-#: ui/evolution-mail.xml.h:26
-msgid "Filter on Mailing _List"
-msgstr "Filtrér efter epost_liste"
-
-#: ui/evolution-mail.xml.h:27
-msgid "Filter on Se_nder"
-msgstr "Filtrér efter se_nder"
-
-#: ui/evolution-mail.xml.h:28
-msgid "Filter on _Recipients"
-msgstr "Filtrér på modtage_re"
-
-#: ui/evolution-mail.xml.h:29
-msgid "Filter on _Subject"
-msgstr "Filtrér på e_mne"
-
-#: ui/evolution-mail.xml.h:30
-msgid "Force images in HTML mail to be loaded"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:31
-msgid "Forget _Passwords"
-msgstr "Glem _adgangskoder"
-
-#: ui/evolution-mail.xml.h:32
-msgid "Forget remembered passwords so you will be prompted for them again"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:34
-msgid "Forward As"
-msgstr "Videresend som"
-
-#: ui/evolution-mail.xml.h:35
-#, fuzzy
-msgid "Forward _Attached"
-msgstr "Vis bilag"
-
-#: ui/evolution-mail.xml.h:36
-#, fuzzy
-msgid "Forward _Inline"
-msgstr "Videresend mellem linjerne"
-
-#: ui/evolution-mail.xml.h:37
-#, fuzzy
-msgid "Forward _Quoted"
-msgstr "Videresend som"
-
-#: ui/evolution-mail.xml.h:38
-#, fuzzy
-msgid "Forward the selected message in the body of a new message"
-msgstr "Udskriv den valgte meddelelse"
-
-#: ui/evolution-mail.xml.h:39
-#, fuzzy
-msgid "Forward the selected message quoted like a reply"
-msgstr "Udskriv den valgte meddelelse"
-
-#: ui/evolution-mail.xml.h:40
-#, fuzzy
-msgid "Forward the selected message to someone"
-msgstr "Flyt meddelelsen til en ny mappe"
-
-#: ui/evolution-mail.xml.h:41
-#, fuzzy
-msgid "Forward the selected message to someone as an attachment"
-msgstr "Udskriv den valgte meddelelse"
-
-#: ui/evolution-mail.xml.h:42
-msgid "Hide S_elected Messages"
-msgstr "Skjul valgte beskeder"
-
-#: ui/evolution-mail.xml.h:43
-msgid "Hide _Deleted Messages"
-msgstr "Skjul slettede beskeder"
-
-#: ui/evolution-mail.xml.h:44
-msgid "Hide _Read messages"
-msgstr "Skjul _læste beskeder"
-
-#: ui/evolution-mail.xml.h:45
-msgid ""
-"Hide deleted messages rather than displaying them with a line through them"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:46
-#, fuzzy
-msgid "Load _Images"
-msgstr "Videresendte meddelelser"
-
-#: ui/evolution-mail.xml.h:47
-msgid "Manage _Subscriptions..."
-msgstr "_Håndtér abonnement..."
-
-#: ui/evolution-mail.xml.h:48
-#, fuzzy
-msgid "Mar_k As Read"
-msgstr "Mær_k som læst"
-
-#: ui/evolution-mail.xml.h:49
-msgid "Mark All as R_ead"
-msgstr "Mærk alle som l_æst"
-
-#: ui/evolution-mail.xml.h:50
-msgid "Mark As U_nread"
-msgstr "Mærk som _ulæst"
-
-#: ui/evolution-mail.xml.h:51
-#, fuzzy
-msgid "Mark all visible messages as read"
-msgstr "Udskriv den valgte meddelelse"
-
-#: ui/evolution-mail.xml.h:52
-#, fuzzy
-msgid "Mark the selected messages as having been read"
-msgstr "Udskriv den valgte meddelelse"
-
-#: ui/evolution-mail.xml.h:53
-msgid "Mark the selected messages as not having been read"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:54
-#, fuzzy
-msgid "Mark the selected messages for deletion"
-msgstr "Udskriv den valgte meddelelse"
-
-#: ui/evolution-mail.xml.h:55
-msgid "Move"
-msgstr "Flyt"
-
-#: ui/evolution-mail.xml.h:56
-#, fuzzy
-msgid "Move selected messages to another folder"
-msgstr "Flyt meddelelsen til en ny mappe"
-
-#: ui/evolution-mail.xml.h:58
-msgid "Open a window for composing a mail message"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:59
-#, fuzzy
-msgid "Open the selected message in a new window"
-msgstr "Udskriv den valgte meddelelse"
-
-#: ui/evolution-mail.xml.h:60
-#, fuzzy
-msgid "Open the selected message in the composer to re-send it"
-msgstr "Udskriv den valgte meddelelse"
-
-#: ui/evolution-mail.xml.h:61
-#, fuzzy
-msgid "Permanently remove all deleted messages from all folders"
-msgstr "Flyt meddelelsen til en ny mappe"
-
-#: ui/evolution-mail.xml.h:62
-#, fuzzy
-msgid "Permanently remove all deleted messages from this folder"
-msgstr "Flyt meddelelsen til en ny mappe"
-
-#: ui/evolution-mail.xml.h:66
-#, fuzzy
-msgid "Print Message..."
-msgstr "Udskriv besked..."
-
-#: ui/evolution-mail.xml.h:67
-#, fuzzy
-msgid "Print Preview..."
-msgstr "Forhåndsvisning af udskrift"
-
-#: ui/evolution-mail.xml.h:68
-msgid "Print message to the printer"
-msgstr "Udskriv besked til printeren"
-
-#: ui/evolution-mail.xml.h:69
-msgid "Redirect (FIXME: implement me)"
-msgstr "Omdirigér"
-
-#: ui/evolution-mail.xml.h:73
-#, fuzzy
-msgid "S_earch Message"
-msgstr "_Postmeddelelse"
-
-#: ui/evolution-mail.xml.h:74
-#, fuzzy
-msgid "Save the message as a text file"
-msgstr "Flyt meddelelsen til en ny mappe"
-
-#: ui/evolution-mail.xml.h:75
-msgid "Search for text in the body of the displayed message"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:76 ui/evolution-subscribe.xml.h:7
-msgid "Select _All"
-msgstr "Vælg _alle"
-
-#: ui/evolution-mail.xml.h:77
-msgid "Select _Thread"
-msgstr "Vælg _tråd"
-
-#: ui/evolution-mail.xml.h:78
-msgid "Select all and only the messages that are not currently selected"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:79
-msgid "Select all messages in the same thread as the selected message"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:80
-#, fuzzy
-msgid "Select all visible messages"
-msgstr "Udskriv den valgte meddelelse"
-
-#: ui/evolution-mail.xml.h:81
-msgid "Send / Receive"
-msgstr "Send / modtag"
-
-#: ui/evolution-mail.xml.h:82
-msgid "Send queued mail and retrieve new mail"
-msgstr "Afsend køet post og modtag ny post"
-
-#: ui/evolution-mail.xml.h:83
-#, fuzzy
-msgid "Show Email _Source"
-msgstr "Kilder"
-
-#: ui/evolution-mail.xml.h:84
-msgid "Show Full _Headers"
-msgstr "Vis fulde brev_hoveder"
-
-#: ui/evolution-mail.xml.h:85
-msgid "Show _All"
-msgstr "Vis _alt"
-
-#: ui/evolution-mail.xml.h:86
-#, fuzzy
-msgid "Show message in the normal style"
-msgstr "Ny _meddelelse til kontaktperson"
-
-#: ui/evolution-mail.xml.h:87
-#, fuzzy
-msgid "Show message with all email headers"
-msgstr "Ingen besked med uid %s"
-
-#: ui/evolution-mail.xml.h:88
-msgid "Show messages that have been temporarily hidden"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:89
-#, fuzzy
-msgid "Show the raw email source of the message"
-msgstr "Vedhæft bilag til meddelelsen"
-
-#: ui/evolution-mail.xml.h:90
-msgid "Subscribe or unsubscribe to folders on remote servers"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:91
-#, fuzzy
-msgid "Temporarily hide all messages that have already been read"
-msgstr "Udskriv den valgte meddelelse"
-
-#: ui/evolution-mail.xml.h:92
-#, fuzzy
-msgid "Temporarily hide the selected messages"
-msgstr "Udskriv den valgte meddelelse"
-
-#: ui/evolution-mail.xml.h:93
-msgid "Threaded Message list"
-msgstr "Trådet meddelelsesliste"
-
-#: ui/evolution-mail.xml.h:94
-#, fuzzy
-msgid "Un-delete the selected messages"
-msgstr "Udskriv den valgte meddelelse"
-
-#: ui/evolution-mail.xml.h:95
-msgid "VFolder on Mailing _List..."
-msgstr "vMappe efter epostliste..."
-
-#: ui/evolution-mail.xml.h:96
-msgid "VFolder on Se_nder..."
-msgstr "vMappe for _afsender..."
-
-#: ui/evolution-mail.xml.h:97
-msgid "VFolder on _Recipients..."
-msgstr "vMappe for _modtagere..."
-
-#: ui/evolution-mail.xml.h:98
-msgid "VFolder on _Subject..."
-msgstr "vMappe på e_mne..."
-
-#: ui/evolution-mail.xml.h:99
-msgid "Virtual Folder _Editor..."
-msgstr "R_edigering af virtuelle mapper..."
-
-#: ui/evolution-mail.xml.h:100
-msgid "_Apply Filters"
-msgstr "_Anvend filtre"
-
-#: ui/evolution-mail.xml.h:101
-#, fuzzy
-msgid "_Copy to Folder"
-msgstr "Kopiér til mappe"
-
-#: ui/evolution-mail.xml.h:102
-msgid "_Create Filter From Message"
-msgstr "_Opret filter fra besked"
-
-#: ui/evolution-mail.xml.h:104
-msgid "_Expunge"
-msgstr "_Tøm"
-
-#: ui/evolution-mail.xml.h:105
-msgid "_Filters..."
-msgstr "_Filtre..."
-
-#: ui/evolution-mail.xml.h:106 ui/evolution.xml.h:35
-msgid "_Folder"
-msgstr "_Mappe"
-
-#: ui/evolution-mail.xml.h:107
-#, fuzzy
-msgid "_Forward Message"
-msgstr "Videresendte meddelelser"
-
-#: ui/evolution-mail.xml.h:108 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:109
-msgid "_Mail Message"
-msgstr "_Postmeddelelse"
-
-#: ui/evolution-mail.xml.h:110
-msgid "_Mail Settings..."
-msgstr "Indstillinger for _post..."
-
-#: ui/evolution-mail.xml.h:111
-#, fuzzy
-msgid "_Message Display"
-msgstr "Beskeder"
-
-#: ui/evolution-mail.xml.h:112
-#, fuzzy
-msgid "_Move to Folder"
-msgstr "Flyt til folder"
-
-#: ui/evolution-mail.xml.h:113
-#, fuzzy
-msgid "_Normal Display"
-msgstr "Vis"
-
-#: ui/evolution-mail.xml.h:114
-#, fuzzy
-msgid "_Open Message"
-msgstr "Send beskeder _igen"
-
-#: ui/evolution-mail.xml.h:116
-#, fuzzy
-msgid "_Re-send Message"
-msgstr "Send beskeder _igen"
-
-#: ui/evolution-mail.xml.h:119
-msgid "_Send / Receive"
-msgstr "_Send / modtag"
-
-#: ui/evolution-mail.xml.h:120
-#, fuzzy
-msgid "_Threaded Message List"
-msgstr "Trådet meddelelsesliste"
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr "Vedlæg"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-msgid "Close the current file"
-msgstr "Luk aktiv fil"
-
-#: ui/evolution-message-composer.xml.h:5
-msgid "Encrypt this message with PGP"
-msgstr "Kryptér denne besked med PGP"
-
-#: ui/evolution-message-composer.xml.h:6
-msgid "F_ormat"
-msgstr "F_ormat"
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "HTML"
-msgstr "HTML"
-
-#: ui/evolution-message-composer.xml.h:8
-msgid "Insert a file as text into the message"
-msgstr "Vedhæft bilag til meddelelsen"
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert text file..."
-msgstr "Indsæt tekstfil..."
-
-#: ui/evolution-message-composer.xml.h:11
-msgid "Open a file"
-msgstr "Åbn fil"
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "PGP Encrypt"
-msgstr "PGP-kryptér"
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Sign"
-msgstr "PGP-signér"
-
-#: ui/evolution-message-composer.xml.h:17
-msgid "Save _Draft"
-msgstr "Gem _udkast"
-
-#: ui/evolution-message-composer.xml.h:18
-msgid "Save in _folder... (FIXME)"
-msgstr "_Gem i mappe... (RET)"
-
-#: ui/evolution-message-composer.xml.h:19
-msgid "Save in folder..."
-msgstr "Gem i mappe..."
-
-#: ui/evolution-message-composer.xml.h:21
-msgid "Save the current file with a different name"
-msgstr "Gem aktiv fil med et andet navn"
-
-#: ui/evolution-message-composer.xml.h:22
-msgid "Save the message in a specified folder"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:23
-msgid "Send"
-msgstr "Afsend"
-
-#: ui/evolution-message-composer.xml.h:24
-msgid "Send _Later"
-msgstr "Afsend _senere"
-
-#: ui/evolution-message-composer.xml.h:25
-msgid "Send _later"
-msgstr "Afsend _senere"
-
-#: ui/evolution-message-composer.xml.h:26
-msgid "Send the mail in HTML format"
-msgstr "Send brevet i HMTL-format"
-
-#: ui/evolution-message-composer.xml.h:27
-msgid "Send the message later"
-msgstr "Send beskeden senere"
-
-#: ui/evolution-message-composer.xml.h:28
-msgid "Send the message now"
-msgstr "Send beskeden nu"
-
-#: ui/evolution-message-composer.xml.h:29
-msgid "Send this message now"
-msgstr "Send denne meddelelse nu"
-
-#: ui/evolution-message-composer.xml.h:30
-msgid "Show / hide attachments"
-msgstr "Vis/skjul bilag"
-
-#: ui/evolution-message-composer.xml.h:31
-msgid "Show _attachments"
-msgstr "Vis _bilag"
-
-#: ui/evolution-message-composer.xml.h:32
-msgid "Show attachments"
-msgstr "Vis bilag"
-
-#: ui/evolution-message-composer.xml.h:33
-msgid "Sign this message with your PGP key"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:34
-msgid "Toggles whether the BCC field is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:35
-msgid "Toggles whether the CC field is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:36
-msgid "Toggles whether the From chooser is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:38
-msgid "_Bcc Field"
-msgstr "_B-kopifelt"
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "_Cc Field"
-msgstr "_Kopifelt"
-
-#: ui/evolution-message-composer.xml.h:44
-msgid "_From Field"
-msgstr "_Fra-felt"
-
-#: ui/evolution-message-composer.xml.h:46
-msgid "_Insert"
-msgstr "_indsæt"
-
-#: ui/evolution-message-composer.xml.h:47
-msgid "_Insert text file... (FIXME)"
-msgstr "_Indsæt tekstfil... (RETMIG)"
-
-#: ui/evolution-message-composer.xml.h:48
-msgid "_Open..."
-msgstr "_Åbn..."
-
-#: ui/evolution-message-composer.xml.h:49
-msgid "_Reply-To Field"
-msgstr "_Svar-til-felt"
-
-#: ui/evolution-message-composer.xml.h:51
-msgid "_Security"
-msgstr "_Sikkerhed"
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:3
-msgid "F_older"
-msgstr "_Mappe"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr "Opdatér liste"
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr "Opdatér mappelisten"
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr "Abonnér"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr "Opsig abonnement"
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-msgid "Assig_n Task (FIXME)"
-msgstr "_Tildel opgave (RET)"
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr "Find igen"
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-msgid "Meeting Re_quest (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-msgid "Redo"
-msgstr "Gentag"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-msgid "Redo the undone action"
-msgstr "Gentag sidste fortrudte handling"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-msgid "Replace"
-msgstr "Erstat"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-msgid "Replace a string"
-msgstr "Erstat en streng"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-msgid "Reply to A_ll (FIXME)"
-msgstr "Svar til _alle (RETMIG)"
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-msgid "S_end Status Report (FIXME)"
-msgstr "S_end statusrapport (RETMIG)"
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-msgid "Save the task and close the dialog box"
-msgstr "Gem opgaven og luk dialogboksen"
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "Search again for the same string"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-msgid "Search for a string"
-msgstr "Søg efter en streng"
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr "Fortryd"
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-msgid "Undo the last action"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:30
-msgid "_Appointment (FIXME)"
-msgstr "_Aftale (RETMIG)"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-msgid "_Mark Complete (FIXME)"
-msgstr "_Markér som fuldført (RETMIG)"
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-msgid "_Reply (FIXME)"
-msgstr "Sva_r (RETMIG)"
-
-#: ui/evolution-tasks.xml.h:2
-msgid "Create a new task"
-msgstr "Opret en ny opgave"
-
-#: ui/evolution-tasks.xml.h:3
-msgid "New Task"
-msgstr "Ny opgave"
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr "Gem opgave som noget andet"
-
-#: ui/evolution-tasks.xml.h:6
-msgid "Tasks Preferences..."
-msgstr "Opsætning af opgaver"
-
-#: ui/evolution-tasks.xml.h:9
-msgid "_Task"
-msgstr "_Opgave"
-
-#: ui/evolution.xml.h:1
-msgid "About Evolution..."
-msgstr "Om evolution..."
-
-#: ui/evolution.xml.h:3
-msgid "Close this window"
-msgstr "Luk dette vindue"
-
-#: ui/evolution.xml.h:4
-msgid "Customi_ze Toolbars..."
-msgstr ""
-
-#: ui/evolution.xml.h:5
-msgid "Customize"
-msgstr "Personliggør"
-
-#: ui/evolution.xml.h:6
-msgid "Customize toolbars"
-msgstr "Ændr værktøjslinjerne"
-
-#: ui/evolution.xml.h:7
-msgid "Display a different folder"
-msgstr ""
-
-#: ui/evolution.xml.h:8
-msgid "E_xit"
-msgstr "_Afslut"
-
-# OSS = Ofte Stillede Spørgsmål
-#: ui/evolution.xml.h:9
-msgid "Evolution _FAQ"
-msgstr "Evolution OSS"
-
-#: ui/evolution.xml.h:10
-msgid "Evolution _Window"
-msgstr "Evolution _vindue"
-
-#: ui/evolution.xml.h:11
-msgid "Evolution bar _shortcut"
-msgstr ""
-
-#: ui/evolution.xml.h:12
-msgid "Exit the program"
-msgstr "Afslut program"
-
-#: ui/evolution.xml.h:13
-msgid "Getting _Started"
-msgstr "Kom i gang"
-
-#: ui/evolution.xml.h:14
-msgid "Import an external file format"
-msgstr ""
-
-#: ui/evolution.xml.h:15
-msgid "Main toolbar"
-msgstr "Den centrale værktøjslinje"
-
-#: ui/evolution.xml.h:16
-msgid "Show information about Evolution"
-msgstr "Vis information om Evolution"
-
-#: ui/evolution.xml.h:17
-msgid "Submit Bug Report"
-msgstr "Indsend fejlrapport"
-
-#: ui/evolution.xml.h:18
-msgid "Submit _Bug Report"
-msgstr "Indsend fejlrapport"
-
-#: ui/evolution.xml.h:19
-msgid "Submit bug report using Bug Buddy."
-msgstr ""
-
-#: ui/evolution.xml.h:20
-#, fuzzy
-msgid "Toggle"
-msgstr "Rolle"
-
-#: ui/evolution.xml.h:21
-msgid "Toggle whether to show the folder bar"
-msgstr ""
-
-#: ui/evolution.xml.h:22
-msgid "Toggle whether to show the shortcut bar"
-msgstr ""
-
-#: ui/evolution.xml.h:23
-msgid "Toggle whether we are working offline."
-msgstr ""
-
-#: ui/evolution.xml.h:24
-msgid "Using the C_ontact Manager"
-msgstr ""
-
-#: ui/evolution.xml.h:25
-msgid "Using the _Calendar"
-msgstr "Brug af kalenderen"
-
-#: ui/evolution.xml.h:26
-msgid "Using the _Mailer"
-msgstr "Brug af postdelen"
-
-#: ui/evolution.xml.h:27
-msgid "Work Offline"
-msgstr ""
-
-#: ui/evolution.xml.h:28
-msgid "_About Evolution..."
-msgstr "_Om Evolution"
-
-#: ui/evolution.xml.h:29
-msgid "_Actions"
-msgstr "Ha_ndlinger"
-
-#: ui/evolution.xml.h:36
-msgid "_Folder Bar"
-msgstr ""
-
-#: ui/evolution.xml.h:37
-msgid "_Go to Folder..."
-msgstr "_Gå til mappe..."
-
-#: ui/evolution.xml.h:39
-msgid "_Import file..."
-msgstr "_Importér fil..."
-
-#: ui/evolution.xml.h:40
-msgid "_Index"
-msgstr "_Indeks"
-
-#: ui/evolution.xml.h:41
-msgid "_Mail message"
-msgstr "Send besked"
-
-#: ui/evolution.xml.h:43
-msgid "_New Folder"
-msgstr "_Ny Mappe"
-
-#: ui/evolution.xml.h:44
-msgid "_Shortcut Bar"
-msgstr "_Genvejsbjælke"
-
-#: ui/evolution.xml.h:48
-#, fuzzy
-msgid "_Work Offline"
-msgstr "Arbejder"
-
-#: views/addressbook/galview.xml.h:1
-msgid "Adress Cards"
-msgstr "Adressekort"
-
-#: views/addressbook/galview.xml.h:2
-msgid "By Company"
-msgstr "Efter firma"
-
-#: views/addressbook/galview.xml.h:3
-#, fuzzy
-msgid "Phone List"
-msgstr "Telefontyper"
-
-#: views/mail/galview.xml.h:1
-msgid "By Sender"
-msgstr "Efter afsender"
-
-#: views/mail/galview.xml.h:2
-msgid "By Status"
-msgstr "Efter status"
-
-#: views/mail/galview.xml.h:3
-msgid "By Subject"
-msgstr "Efter emne"
-
-#: views/mail/galview.xml.h:4
-msgid "Messages"
-msgstr "Beskeder"
-
-#: views/tasks/galview.xml.h:2
-msgid "With Category"
-msgstr "Med kategori"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:392
-msgid "Tentative"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:393
-msgid "Busy"
-msgstr "Optaget"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:394
-msgid "Out of Office"
-msgstr "I marken"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:395
-msgid "No Information"
-msgstr "Ingen information"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:411
-msgid "_Invite Others..."
-msgstr "_Indvitér andre..."
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:431
-msgid "_Options"
-msgstr "_Alternativer"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:448
-msgid "Show _Only Working Hours"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:461
-msgid "Show _Zoomed Out"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:479
-msgid "_Update Free/Busy"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:497
-msgid "_<<"
-msgstr "_<<"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:514
-msgid "_Autopick"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:528
-msgid ">_>"
-msgstr ">_>"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:545
-msgid "_All People and Resources"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:558
-msgid "All _People and One Resource"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:571
-msgid "_Required People"
-msgstr "_Nødvendig deltager"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:584
-msgid "Required People and _One Resource"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:607
-msgid "Meeting _start time:"
-msgstr "_Start-tid for møde:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:631
-msgid "Meeting _end time:"
-msgstr "S_lut-tid for møde:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:744
-msgid "All Attendees"
-msgstr "Alle deltagere"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:469
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2477
-msgid "%A, %B %d, %Y"
-msgstr "%A den %e. %B %Y"
-
-#: widgets/menus/gal-view-menus.c:176
-msgid "_Current View"
-msgstr "Nuværende visning"
-
-#: widgets/menus/gal-view-menus.c:202
-msgid "Define Views"
-msgstr ""
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:422
-msgid "MTWTFSS"
-msgstr "MTOTFLS"
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1061 widgets/misc/e-calendar-item.c:2756
-msgid "%B %Y"
-msgstr "%a %d %Y"
-
-#: widgets/misc/e-cell-date-edit.c:221 widgets/misc/e-dateedit.c:418
-msgid "Now"
-msgstr "Nu"
-
-#: widgets/misc/e-cell-date-edit.c:245
-msgid "OK"
-msgstr "O.k."
-
-#: widgets/misc/e-cell-date-edit.c:726
-#, c-format
-msgid "The time must be in the format: %s"
-msgstr "Datoen skal skrives ind på formatet: %s"
-
-#: widgets/misc/e-clipped-label.c:112
-msgid "..."
-msgstr "..."
-
-#: widgets/misc/e-filter-bar.c:168
-msgid "Save Search"
-msgstr "Gem søgning"
-
-#: widgets/misc/e-filter-bar.c:239
-msgid "Advanced Search"
-msgstr "Avanceret søgning"
-
-#: widgets/misc/e-filter-bar.h:94 widgets/misc/e-filter-bar.h:101
-msgid "Save As..."
-msgstr "Gem som..."
-
-#: widgets/misc/e-filter-bar.h:95 widgets/misc/e-filter-bar.h:102
-msgid "Show All"
-msgstr "Vis alt"
-
-#: widgets/misc/e-filter-bar.h:96 widgets/misc/e-filter-bar.h:103
-msgid "Edit..."
-msgstr "Redigér..."
-
-#: widgets/misc/e-filter-bar.h:97 widgets/misc/e-filter-bar.h:104
-msgid "Advanced..."
-msgstr "Avanceret..."
-
-#: widgets/misc/e-messagebox.c:152
-msgid "Information"
-msgstr "Information"
-
-#: widgets/misc/e-messagebox.c:159
-msgid "Warning"
-msgstr "Advarsel"
-
-#: widgets/misc/e-messagebox.c:173
-msgid "Question"
-msgstr "Spørgsmål"
-
-#: widgets/misc/e-messagebox.c:180
-msgid "Message"
-msgstr "Besked"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:224
-msgid "Don't show this message again."
-msgstr ""
-
-#: widgets/misc/e-search-bar.c:155
-msgid "Sear_ch"
-msgstr "_Søg"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-msgid "The Personal Addressbook Server"
-msgstr "Den personlige adressebogsserver"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr ""
-
-#: wombat/wombat.c:173
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr ""
-
-#: wombat/wombat.c:185
-msgid "init_corba(): could not initialize GNOME"
-msgstr ""
-
-#: wombat/wombat.c:198
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "init_bonobo(): Kunne ikke initiere Bonobo"
-
-#~ msgid ""
-#~ "We were unable to open this addressbook. This either\n"
-#~ "means you have entered an incorrect URI, or have tried\n"
-#~ "to access an LDAP server and don't have LDAP support\n"
-#~ "compiled in. If you've entered a URI, check the URI for\n"
-#~ "correctness and reenter. If not, you probably have\n"
-#~ "attempted to access an LDAP server. If you wish to be\n"
-#~ "able to use LDAP, you'll need to download and install\n"
-#~ "OpenLDAP and recompile and install Evolution.\n"
-#~ msgstr ""
-#~ "Vi kunne ikke åbne denne adressebog. Dette betyder enten\n"
-#~ "at du har angivet en forkert URI, eller ar du har forsøgt\n"
-#~ "at bruge en LDAP-tjeneste men ikke har LDAP-understøttelse\n"
-#~ "kompileret ind. Hvis du har angivet en URI, tjek om URI-en \n"
-#~ "er korrekt og genindtast. Hvis ikke, så har du nok prøvet\n"
-#~ "at nå en LDAP tjeneste. Hvis du ønsker at kunne bruge LDAP,\n"
-#~ "er det nødvendigt at hente og installere OpenLDAP og\n"
-#~ "rekompilere og installere Evolution.\n"
-
-#~ msgid "SASL"
-#~ msgstr "SASL"
-
-#, fuzzy
-#~ msgid "Show all "
-#~ msgstr "Vis alt"
-
-#~ msgid "VFolder on Subject"
-#~ msgstr "vMappe for emne"
-
-#~ msgid "VFolder on Sender"
-#~ msgstr "vMappe for afsender"
-
-#~ msgid "VFolder on Recipients"
-#~ msgstr "vMappe for modtagere"
-
-#~ msgid "Mark as Read"
-#~ msgstr "Markér som _læst"
-
-#~ msgid "Mark as Unread"
-#~ msgstr "Markér som ulæst"
-
-#~ msgid "Move to Folder..."
-#~ msgstr "Flyt til mappe..."
-
-#~ msgid "Copy to Folder..."
-#~ msgstr "Kopiér til mappe..."
-
-#~ msgid "Undelete"
-#~ msgstr "Fortryd sletning"
-
-#~ msgid "Do you accept?"
-#~ msgstr "Accepterer du?"
-
-#~ msgid "View the selected folder"
-#~ msgstr "Vis den valgte mappe"
-
-#~ msgid "Compose a new message"
-#~ msgstr "Udskriv ny meddelelse"
-
-#~ msgid "Copy message to a new folder"
-#~ msgstr "Kopiér meddelelse til en ny mappe"
-
-#~ msgid "Display all of the message headers"
-#~ msgstr "Vis komplette beskedshoveder"
-
-#~ msgid "Hide Deleted Messages"
-#~ msgstr "Skjul slettede beskeder"
-
-#, fuzzy
-#~ msgid "Open in New Window"
-#~ msgstr "_Åpne i nytt vindu"
-
-#~ msgid "Print Preview of message..."
-#~ msgstr "Vis udskrift af besked..."
-
-#, fuzzy
-#~ msgid "Reply to all"
-#~ msgstr "Svar til alle"
-
-#, fuzzy
-#~ msgid "Reply to sender"
-#~ msgstr "Svar til afsender"
-
-#~ msgid "S_ource"
-#~ msgstr "Kilde"
-
-#~ msgid "View Raw Message Source"
-#~ msgstr "Vis rå beskedskildetekst"
-
-#~ msgid "_Attachment"
-#~ msgstr "_Bilag"
-
-#~ msgid "_Open Selected Items"
-#~ msgstr "_Åbn valgte beskeder"
-
-#~ msgid "_Reply"
-#~ msgstr "_Svar"
-
-#~ msgid "_Save Message As..."
-#~ msgstr "_Gem besked som..."
-
-#~ msgid "_Threaded"
-#~ msgstr "_Trådet"
-
-#~ msgid "Advanced ..."
-#~ msgstr "Avanceret..."
-
-#, fuzzy
-#~ msgid "Click here to add a contact"
-#~ msgstr "* Klik her for at tilføje en kontakt *"
-
-#, fuzzy
-#~ msgid "_Compose"
-#~ msgstr "Skriv"
-
-#~ msgid "PLAIN"
-#~ msgstr "PLAIN"
-
-#, fuzzy
-#~ msgid ""
-#~ "This option will connect to the server using a the PLAIN SASL mechanism if "
-#~ "the server supports it."
-#~ msgstr ""
-#~ "Dette valg vil lade dig koble til en IMAP-tjener ved at bruge en "
-#~ "klartekst-adgangskode."
-
-#, fuzzy
-#~ msgid "No such host %s."
-#~ msgstr "Mappen %s eksisterer ikke"
-
-#~ msgid "Temporarily unable to look up hostname %s."
-#~ msgstr "Midlertidig ute av stand til å slå opp vertsnavn %s."
-
-#~ msgid "URL string `%s' contains no protocol"
-#~ msgstr "URL-streng `%s' inneholder ikke protokoll"
-
-#~ msgid "URL string `%s' contains an invalid protocol"
-#~ msgstr "URL-streng `%s' inneholder en ugyldig protokoll"
-
-#~ msgid "Port number in URL `%s' is non-numeric"
-#~ msgstr "Portnummer i URL `%s' er ikke-numerisk"
-
-#, fuzzy
-#~ msgid "Secure IMAPv4"
-#~ msgstr "IMAPv4"
-
-#, fuzzy
-#~ msgid "For reading and storing mail on IMAP servers over an SSL connection."
-#~ msgstr "For læsning og gemning af e-post på IMAP-tjenere."
-
-#~ msgid "Secure POP"
-#~ msgstr "Sikker POP"
-
-#, fuzzy
-#~ msgid ""
-#~ "For connecting to POP servers over an SSL connection. The POP protocol can "
-#~ "also be used to retrieve mail from certain web mail providers and "
-#~ "proprietary email systems."
-#~ msgstr ""
-#~ "For tilkobling til POP-tjenere. POP-protokollen kan også bruges for at hente "
-#~ "e-post fra visse e-postudbydere via web, samt fra proprietære e-postsystemer."
-
-#~ msgid "Secure SMTP"
-#~ msgstr "Sikker SMTP"
-
-#, fuzzy
-#~ msgid ""
-#~ "For delivering mail by connecting to a remote mailhub using SMTP over an SSL "
-#~ "connection.\n"
-#~ msgstr "For levering af e-post via en ekstern e-posttjener med SMTP.\n"
-
-#, fuzzy
-#~ msgid ""
-#~ "This option will connect to the SMTP server without using any kind of "
-#~ "authentication. This should be fine for connecting to most SMTP servers."
-#~ msgstr ""
-#~ "Dette alternativ lader dig koble til POP-tjeneren ved brug af adgangskode i "
-#~ "klartekst. Dette er det eneste alternativ som er understøttet af mange "
-#~ "POP-tjenere."
-
-#, fuzzy
-#~ msgid "Remove action"
-#~ msgstr "Udfør handlinger"
-
-#, fuzzy
-#~ msgid "Remove criterion"
-#~ msgstr "Tilføj kriterie"
-
-#~ msgid ""
-#~ "One or more of your servers are not configured correctly.\n"
-#~ "Do you wish to save anyway?"
-#~ msgstr ""
-#~ "En eller flere av dine tjenere er ikke korrekt konfigurert.\n"
-#~ "Vil du lagre likevel?"
-
-#, fuzzy
-#~ msgid "Unspecified"
-#~ msgstr "Udefineret"
-
-#, fuzzy
-#~ msgid "Advanced"
-#~ msgstr "Avanceret..."
-
-#~ msgid "Check settings"
-#~ msgstr "Sjekk innstillinger"
-
-#, fuzzy
-#~ msgid "Email address:"
-#~ msgstr "Epostadresse:"
-
-#, fuzzy
-#~ msgid "Evolution Mail Configuration"
-#~ msgstr "Konfiguration af epost"
-
-#, fuzzy
-#~ msgid "Hostname:"
-#~ msgstr "Vært:"
-
-#, fuzzy
-#~ msgid "IMAP"
-#~ msgstr "IMAPv4"
-
-#~ msgid "Include this account when receiving mail"
-#~ msgstr "Ta med denne kontoen når du mottar e-post"
-
-#, fuzzy
-#~ msgid "Keep mail on server"
-#~ msgstr "Efterlad beskeder på tjeneren"
-
-#, fuzzy
-#~ msgid "Kerberos"
-#~ msgstr "Kerberos 4"
-
-#, fuzzy
-#~ msgid "Mail Account"
-#~ msgstr "Konto"
-
-#, fuzzy
-#~ msgid "Mail Configuration Druid"
-#~ msgstr "Konfiguration af epost"
-
-#, fuzzy
-#~ msgid "Optional"
-#~ msgstr "Alternativer"
-
-#, fuzzy
-#~ msgid "Password:"
-#~ msgstr "Adgangskode"
-
-#~ msgid "Plain Text"
-#~ msgstr "Vanlig tekst"
-
-#, fuzzy
-#~ msgid "Remember my password"
-#~ msgstr "Husk denne adgangskode"
-
-#, fuzzy
-#~ msgid "Reply address:"
-#~ msgstr "Hjemmeside-adresse:"
-
-#, fuzzy
-#~ msgid "Required"
-#~ msgstr "_Nødvendig deltager"
-
-#, fuzzy
-#~ msgid "Select signature file"
-#~ msgstr "Signaturfil:"
-
-#, fuzzy
-#~ msgid "Server type:"
-#~ msgstr "Tjenertype:"
-
-#, fuzzy
-#~ msgid "Signature:"
-#~ msgstr "Signaturfil:"
-
-#, fuzzy
-#~ msgid "Source"
-#~ msgstr "Kilder"
-
-#, fuzzy
-#~ msgid "Transport"
-#~ msgstr "Gennemsigtig"
-
-#, fuzzy
-#~ msgid "Transport Authentication"
-#~ msgstr "Autenticering"
-
-#~ msgid ""
-#~ "Type the name by which you would like to refer to these servers. For "
-#~ "example: \"Work\" or \"Home\"."
-#~ msgstr ""
-#~ "Skriv inn et referansenavn for disse tjenerene. For eksempel: \"Arbeid\" "
-#~ "eller \"Hjemme\"."
-
-#, fuzzy
-#~ msgid "minutes."
-#~ msgstr "minutter"
-
-#~ msgid ""
-#~ "Failed to verify the incoming mail configuration.\n"
-#~ "You may experience problems retrieving your mail from %s"
-#~ msgstr ""
-#~ "Feil under verifisering av konfigurasjon av innkommende\n"
-#~ "post. Du vil kunne oppleve problemer ved henting av e-post fra %s"
-
-#~ msgid ""
-#~ "Failed to verify the outgoing mail configuration.\n"
-#~ "You may experience problems sending your mail using %s"
-#~ msgstr ""
-#~ "Feil under verifisering av konfigurasjon av utgående e-post.\n"
-#~ "Du vil kunne oppleve problemer ved sending av e-post gjennom %s"
-
-#, fuzzy
-#~ msgid "%s message %d of %d (uid \"%s\")"
-#~ msgstr "Gemmer besked %d af %d (uid \"%s\")"
-
-#~ msgid "[ %s ]"
-#~ msgstr "[ %s ]"
-
-#~ msgid "%s, et al."
-#~ msgstr "%s, et al."
-
-#, fuzzy
-#~ msgid "<unknown>"
-#~ msgstr "Ukendt fejl"
-
-#, fuzzy
-#~ msgid "_Message Hiding"
-#~ msgstr "Beskedshoved"
-
-#~ msgid "The time is invalid"
-#~ msgstr "Tide er gyldig"
-
-#, fuzzy
-#~ msgid "Edit Filter Rule"
-#~ msgstr "Tilføj filterregel"
-
-#, fuzzy
-#~ msgid "Add VFolder Rule"
-#~ msgstr "Tilføj filterregel"
-
-#, fuzzy
-#~ msgid "Edit VFolder Rule"
-#~ msgstr "Redigér vMapper"
-
-#, fuzzy
-#~ msgid "Disabled"
-#~ msgstr "Deaktivér"
-
-#, fuzzy
-#~ msgid "Synchronize"
-#~ msgstr "Synkroniserer mappe"
-
-#~ msgid "Copy From Pilot"
-#~ msgstr "Kopiér fra Pilot"
-
-#~ msgid "Copy To Pilot"
-#~ msgstr "Kopiér til Pilot"
-
-#~ msgid "Merge From Pilot"
-#~ msgstr "Flett fra Pilot"
-
-#~ msgid "Merge To Pilot"
-#~ msgstr "Flett til Pilot"
-
-#~ msgid "JP Rosevear <jpr@helixcode.com>"
-#~ msgstr "JP Rosevar <jpr@helixcode.com>"
-
-#~ msgid "Original Author:"
-#~ msgstr "Opprinnelig forfatter:"
-
-#~ msgid "Eskil Heyn Olsen <deity@eskil.dk>"
-#~ msgstr "Eskil Heyn Olsen <deity@eskil.dk>"
-
-#, fuzzy
-#~ msgid "Evolution Addressbook Conduit"
-#~ msgstr "Evolution adressebogs minikort-viser"
-
-#~ msgid "(C) 1998-2000 the Free Software Foundation and Helix Code"
-#~ msgstr "© 1998-2000 the Free Software Foundation og Helix Code"
-
-#, fuzzy
-#~ msgid "Configuration utility for the evolution addressbook conduit.\n"
-#~ msgstr "Fabrik for Evolutions adressebog-komponent."
-
-#~ msgid "gnome-unknown.xpm"
-#~ msgstr "gnome-unknown.xpm"
-
-#~ msgid "Synchronize Action"
-#~ msgstr "Synkroniseringshandling"
-
-#~ msgid "Conduit state"
-#~ msgstr "Komponent-tilstand"
-
-#~ msgid ""
-#~ "No pilot configured, please choose the\n"
-#~ "'Pilot Link Properties' capplet first."
-#~ msgstr ""
-#~ "Ingen pilot er konfigurert, vennligst\n"
-#~ "velg cappleten 'Egenskaper for pilot link' først."
-
-#~ msgid "Not connected to the gnome-pilot daemon"
-#~ msgstr "Ikke tilkoblet gnome-pilot daemon"
-
-#~ msgid ""
-#~ "An error occured when trying to fetch\n"
-#~ "pilot list from the gnome-pilot daemon"
-#~ msgstr ""
-#~ "En feil oppsto under forsøk på å hente\n"
-#~ "pilot-listen fra gnome-pilot daemonen"
-
-#, fuzzy
-#~ msgid "Configure the address conduit"
-#~ msgstr "Klik her for adressebogen"
-
-#, fuzzy
-#~ msgid "Evolution Address conduit "
-#~ msgstr "Evolution kontoredigering"
-
-#, fuzzy
-#~ msgid "Evolution Calendar Conduit"
-#~ msgstr "Evolution installation"
-
-#, fuzzy
-#~ msgid "Configuration utility for the evolution calendar conduit.\n"
-#~ msgstr "Fabrik for evolutions kalenderkomponent."
-
-#~ msgid "Configure the GnomeCal conduit"
-#~ msgstr "Konfigurér GnomeCal-komponent"
-
-#, fuzzy
-#~ msgid "Evolution Calendar conduit"
-#~ msgstr "Evolution kontoredigering"
-
-#~ msgid "Configure the todo conduit"
-#~ msgstr "Konfigurér oppgavelistekomponenten"
-
-#, fuzzy
-#~ msgid "Evolution ToDo conduit "
-#~ msgstr "Evolution kontoredigering"
-
-#, fuzzy
-#~ msgid "Evolution ToDo Conduit"
-#~ msgstr "Evolution kontoredigering"
-
-#~ msgid "Configuration utility for the evolution todo conduit.\n"
-#~ msgstr "Konfigurasjonsverktøy for evolutions oppgavelistekomponent.\n"
-
-#~ msgid "Set Flag"
-#~ msgstr "Sett flagg"
-
-#~ msgid "matches regex"
-#~ msgstr "er lik regex"
-
-#, fuzzy
-#~ msgid "Opening Trash folder for %s"
-#~ msgstr "Åbner mappe %s"
-
-#, fuzzy
-#~ msgid "Getting matches"
-#~ msgstr "_Start dato:"
-
-#, fuzzy
-#~ msgid "Attachment (FIXME: implement me)"
-#~ msgstr "Omdirigér"
-
-#, fuzzy
-#~ msgid "Quoted (FIXME: implement me)"
-#~ msgstr "Omdirigér"
-
-#, fuzzy
-#~ msgid "Enter the identity you wish to send this message from"
-#~ msgstr "Indtast modtagerne for meddelelsen"
-
-#, fuzzy
-#~ msgid "Enter the subject of the mail"
-#~ msgstr "Indtast modtagerne for meddelelsen"
-
-#, fuzzy
-#~ msgid "Account Properties"
-#~ msgstr "Egenskaber for bilag"
-
-#, fuzzy
-#~ msgid "E-Mail Address:"
-#~ msgstr "Epostadresse:"
-
-#~ msgid "Include in \"Get Mail\" operations."
-#~ msgstr "Ta med i \"Hent e-post\"-operasjoner."
-
-#~ msgid "Incoming Mail Server"
-#~ msgstr "E-posttjener for innkommende post"
-
-#~ msgid "Miscellaneous"
-#~ msgstr "Forskjellig"
-
-#~ msgid "Outgoing Mail Server"
-#~ msgstr "E-posttjener for utgående post"
-
-#, fuzzy
-#~ msgid "Servers"
-#~ msgstr "LDAP server"
-
-#, fuzzy
-#~ msgid "_Addressbook Configuration..."
-#~ msgstr "_Adressebog-kilder..."
-
-#, fuzzy
-#~ msgid "_Print Contacts..."
-#~ msgstr "Udskriv kontakt"
-
-#, fuzzy
-#~ msgid "Ca_lendar"
-#~ msgstr "Kalender"
-
-#, fuzzy
-#~ msgid "Calendar Preferences..."
-#~ msgstr "Opsætning af kalender"
-
-#, fuzzy
-#~ msgid "_Print this calendar"
-#~ msgstr "Udskriv denne kalender"
-
-#, fuzzy
-#~ msgid "Create Rule"
-#~ msgstr "Skab regel fra besked"
-
-#, fuzzy
-#~ msgid "Fi_lter on Sender"
-#~ msgstr "Filtrér efter afsender"
-
-#, fuzzy
-#~ msgid "Filter on Rec_ipients"
-#~ msgstr "Filtrér efter modtager"
-
-#, fuzzy
-#~ msgid "Get Mail"
-#~ msgstr "Nyt post"
-
-#, fuzzy
-#~ msgid "Reply to _Sender"
-#~ msgstr "Svar til afsender"
-
-#, fuzzy
-#~ msgid "Show _All Messages"
-#~ msgstr "Vis _alt"
-
-#, fuzzy
-#~ msgid "_Filter on Subject"
-#~ msgstr "Filtrér efter emne"
-
-#, fuzzy
-#~ msgid "_Mail Configuration..."
-#~ msgstr "Konfiguration af epost"
-
-#, fuzzy
-#~ msgid "_Print Message"
-#~ msgstr "Udskriv besked"
-
-#, fuzzy
-#~ msgid "_VFolder on Subject"
-#~ msgstr "vMappe for emne"
-
-#~ msgid "Customi_ze..."
-#~ msgstr "_Tilpass..."
-
-#~ msgid "Show the _Folder Bar"
-#~ msgstr "Vis _mappelinjen"
-
-#, fuzzy
-#~ msgid "Show the _Shortcut Bar"
-#~ msgstr "Skjul genvejsbjælken"
-
-#, fuzzy
-#~ msgid "The priority must be between 1 and 9, inclusive"
-#~ msgstr "Procentværdien skal være mellem 0 og 100, inklusive"
-
-#, fuzzy
-#~ msgid "Schedule meeting"
-#~ msgstr "Planlæg møde"
-
-#, fuzzy
-#~ msgid "Edit this appointment..."
-#~ msgstr "Redigér aftale"
-
-#, fuzzy
-#~ msgid "New"
-#~ msgstr "Nyheder"
-
-#, fuzzy
-#~ msgid "Saving changes to message..."
-#~ msgstr "Gemmer beskeder"
-
-#, fuzzy
-#~ msgid "Save changes to message..."
-#~ msgstr "Gem besked som..."
-
-#, fuzzy
-#~ msgid "Error saving composition to 'Drafts': %s"
-#~ msgstr ""
-#~ "Fejl ved gemning af beskeder til: %s:\n"
-#~ " %s"
-
-#, fuzzy
-#~ msgid "Body or subject contains"
-#~ msgstr "Kommentar indeholder"
-
-#, fuzzy
-#~ msgid "Body contains"
-#~ msgstr "indeholder"
-
-#, fuzzy
-#~ msgid "Subject contains"
-#~ msgstr "Navn indeholder"
-
-#, fuzzy
-#~ msgid "Body does not contain"
-#~ msgstr "indeholder ikke"
-
-#, fuzzy
-#~ msgid "Subject does not contain"
-#~ msgstr "indeholder ikke"
-
-#, fuzzy
-#~ msgid "Sender contains"
-#~ msgstr "Navn indeholder"
-
-#, fuzzy
-#~ msgid "Connect to server"
-#~ msgstr "Opkobler til server..."
-
-#, fuzzy
-#~ msgid "Registering local folder"
-#~ msgstr "_Rekonfigurér mappe"
-
-#, fuzzy
-#~ msgid "Appending \"%s\""
-#~ msgstr "Sender '%s'"
-
-#~ msgid "Appending a message without a subject"
-#~ msgstr "Legger til en melding uten emne"
-
-#, fuzzy
-#~ msgid "Moving messages from \"%s\" into \"%s\""
-#~ msgstr "Flytter meddelelser til %s"
-
-#, fuzzy
-#~ msgid "Copying messages from \"%s\" into \"%s\""
-#~ msgstr "Kopierer beskeder til %s"
-
-#, fuzzy
-#~ msgid "Move messages from \"%s\" into \"%s\""
-#~ msgstr "Flytter meddelelser til %s"
-
-#, fuzzy
-#~ msgid "Copy messages from \"%s\" into \"%s\""
-#~ msgstr "Kopierer beskeder til %s"
-
-#, fuzzy
-#~ msgid "(No description)"
-#~ msgstr "Beskrivelse:"
-
-#, fuzzy
-#~ msgid "Loading %s Folder for %s"
-#~ msgstr "Henter lager for \"%s\""
-
-#, fuzzy
-#~ msgid "Load %s Folder for %s"
-#~ msgstr "Mappen %s eksisterer ikke"
-
-#, fuzzy
-#~ msgid ""
-#~ "Error while preparing to %s:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Fejl ved udføring af operation:\n"
-#~ "%s"
-
-#, fuzzy
-#~ msgid ""
-#~ "Error while `%s':\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Fejl ved '%s':\n"
-#~ "%s"
-
-#~ msgid "Error reading commands from dispatching thread."
-#~ msgstr "Feil under lesing av kommandoer fra utsender-tråd."
-
-#, fuzzy
-#~ msgid "Corrupted message from dispatching thread?"
-#~ msgstr "Krypteret besked ikke vist"
-
-#, fuzzy
-#~ msgid ""
-#~ "Cannot open location `%s':\n"
-#~ "%s"
-#~ msgstr "Kan ikke åbne postboks: %s: %s\n"
-
-#, fuzzy
-#~ msgid "Get store for \"%s\""
-#~ msgstr "Henter lager for \"%s\""
-
-#, fuzzy
-#~ msgid "Unsubscribe from folder \"%s\""
-#~ msgstr "Fjerner abonnement på mappe \"%s\""
-
-#, fuzzy
-#~ msgid "All Folders"
-#~ msgstr "Mapper"
-
-#, fuzzy
-#~ msgid "Display folders whose name contain:"
-#~ msgstr "Vis mapper som som starter med:"
-
-#, fuzzy
-#~ msgid "Query"
-#~ msgstr "Hver"
-
-#, fuzzy
-#~ msgid "Subscribed"
-#~ msgstr "Abonnér"
-
-#, fuzzy
-#~ msgid "Local stores do not have a default folder"
-#~ msgstr "Lokale gemmesteder har ikke en indbakke"
-
-#~ msgid "Local folders may not be nested."
-#~ msgstr "Lokale mapper kan ikke være rekursive."
-
-#, fuzzy
-#~ msgid "Page Set_up"
-#~ msgstr "Sideopsætning"
-
-#, fuzzy
-#~ msgid "_Object"
-#~ msgstr "Emne"
-
-#, fuzzy
-#~ msgid "Ne_xt"
-#~ msgstr "Næste"
-
-#, fuzzy
-#~ msgid "_Toolbars"
-#~ msgstr "_Værktøj"
-
-#, fuzzy
-#~ msgid "_Forms"
-#~ msgstr "Format"
-
-#, fuzzy
-#~ msgid "Configure the Evolution Calendar conduit"
-#~ msgstr "Fabrik for evolutions kalenderkomponent."
-
-#~ msgid "Configure the Evolution ToDo conduit"
-#~ msgstr "Konfigurasjon av Evolution oppgavelistekomponent"
-
-#, fuzzy
-#~ msgid "C_lassification:"
-#~ msgstr "Klassificering"
-
-#, fuzzy
-#~ msgid "Su_mmary"
-#~ msgstr "Sa_mmendrag:"
-
-#, fuzzy
-#~ msgid "Time"
-#~ msgstr "Titel"
-
-#, fuzzy
-#~ msgid "description"
-#~ msgstr "Beskrivelse:"
-
-#, fuzzy
-#~ msgid "Evolution shell factory"
-#~ msgstr "Evolution installation"
-
-#~ msgid ""
-#~ "\n"
-#~ "Mr.\n"
-#~ "Mrs.\n"
-#~ "Ms.\n"
-#~ "Miss\n"
-#~ "Dr.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Hr.\n"
-#~ "Fru.\n"
-#~ "Frk.\n"
-#~ "Frøken\n"
-#~ "Dr.\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Sr.\n"
-#~ "Jr.\n"
-#~ "I\n"
-#~ "II\n"
-#~ "III\n"
-#~ "Esq.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Sr.\n"
-#~ "Jr.\n"
-#~ "I\n"
-#~ "II\n"
-#~ "III\n"
-#~ "Esq.\n"
-
-#~ msgid "task-editor-dialog"
-#~ msgstr "task-editor-dialog"
-
-#~ msgid "event-editor-dialog"
-#~ msgstr "event-editor-dialog"
-
-#, fuzzy
-#~ msgid "S_ummary"
-#~ msgstr "Sammendrag"
-
-#, fuzzy
-#~ msgid "Open..."
-#~ msgstr "_Åbn..."
-
-#, fuzzy
-#~ msgid "Days"
-#~ msgstr "Dag"
-
-#, fuzzy
-#~ msgid "Hours"
-#~ msgstr "timer"
-
-#, fuzzy
-#~ msgid "Mail _to:"
-#~ msgstr "Send til %s"
-
-#, fuzzy
-#~ msgid "Minutes"
-#~ msgstr "minutter"
-
-#, fuzzy
-#~ msgid "_Audio"
-#~ msgstr "_Tilføj"
-
-#, fuzzy
-#~ msgid "_Mail"
-#~ msgstr "_Mobil"
-
-#, fuzzy
-#~ msgid "_Program"
-#~ msgstr "Fremskridt"
-
-#, fuzzy
-#~ msgid "Open a calendar"
-#~ msgstr "Åbn kalender"
-
-#~ msgid "Failed to perform regex search on message header: %s"
-#~ msgstr "Feil under utførelse av søk etter vanlig uttrykk i meldingshode: %s"
-
-#~ msgid "You have no Outbox configured"
-#~ msgstr "Du har ikke konfigurert en utboks"
-
-#, fuzzy
-#~ msgid ""
-#~ "Could not open file %s:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Kunne ikke åbne fil `%s':\n"
-#~ "%s"
-
-#, fuzzy
-#~ msgid "Fetch email from %s"
-#~ msgstr "Epost fra %s"
-
-#, fuzzy
-#~ msgid "Filtering email on demand"
-#~ msgstr "Filtrér efter afsender"
-
-#, fuzzy
-#~ msgid "Filter email on demand"
-#~ msgstr "Filtrér efter afsender"
-
-#, fuzzy
-#~ msgid "Sending queue"
-#~ msgstr "Sender meddelelse"
-
-#, fuzzy
-#~ msgid "Send queue"
-#~ msgstr "Afsender"
-
-#~ msgid "Examining %s"
-#~ msgstr "Undersøker %s"
-
-#~ msgid ""
-#~ "Could not read UID cache file \"%s\". You may receive duplicate messages."
-#~ msgstr ""
-#~ "Kunne ikke lese bufferfil for UID \"%s\". Du kan motta dupliserte meldinger."
-
-#, fuzzy
-#~ msgid "Retrieving message %d of %d"
-#~ msgstr "Henter besked %d af %d"
-
-#, fuzzy
-#~ msgid "Saving changes to %s"
-#~ msgstr "Flytter meddelelser til %s"
-
-#, fuzzy
-#~ msgid "_Find..."
-#~ msgstr "Find..."
-
-#, fuzzy
-#~ msgid "_Redo"
-#~ msgstr "Læst"
-
-#, fuzzy
-#~ msgid "_Replace..."
-#~ msgstr "_Åbn..."
-
-#~ msgid "_Undo"
-#~ msgstr "_Angre"
-
-#, fuzzy
-#~ msgid "Group %i"
-#~ msgstr "Gruppenavn:"
-
-#, fuzzy
-#~ msgid "<b>Error loading calendar:<br>Calendar in use."
-#~ msgstr "<b>Fejl ved indlæsning af kalender:<br>Metode ikke understøttet"
-
-#, fuzzy
-#~ msgid "Could not create a tasks file in `%s'"
-#~ msgstr "Kunne ikke indlæse opgaverne i '%s'"
-
-#, fuzzy
-#~ msgid "Could not create a folder in `%s'"
-#~ msgstr ""
-#~ "Kunne ikke oprette mappe `%s':\n"
-#~ "%s"
-
-#, fuzzy
-#~ msgid " for "
-#~ msgstr "for"
-
-#, fuzzy
-#~ msgid "Show all hidden"
-#~ msgstr "Vis alt "
-
-#, fuzzy
-#~ msgid "Hide selected"
-#~ msgstr "Skjul valgte beskeder"
-
-#, fuzzy
-#~ msgid "Hide deleted"
-#~ msgstr "Skjul slettede beskeder"
-
-#, fuzzy
-#~ msgid "Hide Subject"
-#~ msgstr "Emne"
-
-#, fuzzy
-#~ msgid "Hide from Sender"
-#~ msgstr "Filtrér efter afsender"
-
-#~ msgid "Hide from Sender <%s>"
-#~ msgstr "Skjul fra sender <%s>"
-
-#, fuzzy
-#~ msgid "_Source"
-#~ msgstr "Kilder"
-
-#, fuzzy
-#~ msgid "UNIX MH-format mail directories (CamelLocal version)"
-#~ msgstr "MH-formaterede postkataloger"
-
-#~ msgid "UNIX mbox-format mail files (CamelLocal version)"
-#~ msgstr "UNIX e-post filer i mbox-format (CamelLocal versjon)"
-
-#, fuzzy
-#~ msgid "UNIX qmail maildir-format mail files (CamelLocal version)"
-#~ msgstr "Qmail maildir-formaterede postfiler"
-
-#, fuzzy
-#~ msgid "You have no mail sources configured"
-#~ msgstr "Du har ikke sat en transportmetode for e-post"
-
-#, fuzzy
-#~ msgid "Reply-to:"
-#~ msgstr "Svar-til:"
-
-#, fuzzy
-#~ msgid "Calendar Repository"
-#~ msgstr "Kalenderbesked"
-
-#~ msgid "Congratulations, your mail configuration is complete.\n"
-#~ msgstr "Gratulerer, konfigurasjon av e-post er fullført.\n"
-
-#~ msgid ""
-#~ "Enter your name and email address to be used in outgoing mail. You may also, "
-#~ "optionally, enter the name of your organization, and the name of a file to "
-#~ "read your signature from."
-#~ msgstr ""
-#~ "Skriv inn ditt navn og din e-post adresse for bruk i utgående post. Du kan "
-#~ "også skrive inn navnet på din organisasjon, og navnet på en signaturfil."
-
-#, fuzzy
-#~ msgid "Full name:"
-#~ msgstr "Fulde navn:"
-
-#, fuzzy
-#~ msgid "Signature File"
-#~ msgstr "Signaturfil:"
-
-#, fuzzy
-#~ msgid "Server:"
-#~ msgstr "Tjenertype:"
-
-#, fuzzy
-#~ msgid "Mail source type:"
-#~ msgstr "Filtype:"
-
-#~ msgid ""
-#~ "Select the kind of mail server you have, and enter the relevant information "
-#~ "about it.\n"
-#~ "\n"
-#~ "If the server requires authentication, you can click the \"Detect supported "
-#~ "types...\" button after entering the other information."
-#~ msgstr ""
-#~ "Velg hvilken type e-post tjener du har, og skriv inn relevant informasjon om "
-#~ "denne.\n"
-#~ "\n"
-#~ "Hvis tjeneren trenger autentisering, kan du klikke på \"Søk etter støttede "
-#~ "typer...\" knappen etter at du har skrevet inn resten av informasjonen."
-
-#, fuzzy
-#~ msgid "News source type:"
-#~ msgstr "Ny telefontype"
-
-#~ msgid ""
-#~ "Select the kind of news server you have, and enter the relevant information "
-#~ "about it.\n"
-#~ "\n"
-#~ "If the server requires authentication, you can click the \"Detect supported "
-#~ "types...\" button after entering the other information."
-#~ msgstr ""
-#~ "Velg hvilken type news-tjener du har, og skriv inn relevant informasjon om "
-#~ "denne.\n"
-#~ "\n"
-#~ "Hvis tjeneren trenger autentisering, kan du klikke på \"Søk etter støttede "
-#~ "typer...\"-knappen etter at du har skrevet inn resten av informasjonen."
-
-#~ msgid "Mail transport type:"
-#~ msgstr "Type e-post-transport"
-
-#~ msgid ""
-#~ "Select the kind of mail server you have, and enter the relevant information "
-#~ "about it.\n"
-#~ "If the server requires authentication, you can click the \"Detect supported "
-#~ "types...\" button after entering the other information."
-#~ msgstr ""
-#~ "Velg hvilken type e-post tjener du har, og skriv inn relevant informasjon om "
-#~ "denne.\n"
-#~ "Hvis tjeneren trenger autentisering, kan du klikke på \"Søk etter støttede "
-#~ "typer...\" knappen etter at du har skrevet inn resten av informasjonen."
-
-#, fuzzy
-#~ msgid "Add Identity"
-#~ msgstr "Identitet"
-
-#, fuzzy
-#~ msgid "Edit Identity"
-#~ msgstr "Identitet"
-
-#, fuzzy
-#~ msgid "Edit Source"
-#~ msgstr "Kilder"
-
-#, fuzzy
-#~ msgid "Add News Server"
-#~ msgstr "Tilføj tjeneste"
-
-#~ msgid "Edit News Server"
-#~ msgstr "Redigér news-tjener"
-
-#~ msgid "The connection was successful!"
-#~ msgstr "Tilkoblingen var vellykket!"
-
-#~ msgid "Querying authorization capabilities of \"%s\""
-#~ msgstr "Spør etter autorisasjonsegenskaper for \"%s\""
-
-#~ msgid "Query authorization at \"%s\""
-#~ msgstr "Spør etter autorisasjon hos \"%s\""
-
-#, fuzzy
-#~ msgid "Identities"
-#~ msgstr "Identitet"
-
-#, fuzzy
-#~ msgid "Mail Sources"
-#~ msgstr "Kilder"
-
-#, fuzzy
-#~ msgid "Mail Transport"
-#~ msgstr "Gennemsigtig"
-
-#, fuzzy
-#~ msgid "News Servers"
-#~ msgstr "%s-tjener %s"
-
-#, fuzzy
-#~ msgid "News Sources"
-#~ msgstr "Kilder"
-
-#~ msgid "No GPG/PGP support available in this copy of Evolution."
-#~ msgstr "Ingen GPG/PGP-støtte tilgjengelig i denne versjonen av Evolution."
-
-#, fuzzy
-#~ msgid "Server Timeouts"
-#~ msgstr "Tjenertype:"
-
-#, fuzzy
-#~ msgid "Sending a message without a subject"
-#~ msgstr "Videresendt meddelelse (intet emne)"
-
-#, fuzzy
-#~ msgid "Mark messages in folder \"%s\""
-#~ msgstr "Gemmer besked i mappe"
-
-#, fuzzy
-#~ msgid "Scan folders in \"%s\""
-#~ msgstr "Skanner mapper i '%s'"
-
-#, fuzzy
-#~ msgid "Attaching messages from folder \"%s\""
-#~ msgstr "Gemmer besked i mappe"
-
-#, fuzzy
-#~ msgid "Attach messages from \"%s\""
-#~ msgstr "Flytter meddelelser til %s"
-
-#, fuzzy
-#~ msgid "Forwarding messages \"%s\""
-#~ msgstr "Videresendt meddelelse - %s"
-
-#, fuzzy
-#~ msgid "Forwarding a message without a subject"
-#~ msgstr "Videresendt meddelelse (intet emne)"
-
-#, fuzzy
-#~ msgid "Forward message \"%s\""
-#~ msgstr "Videresendt meddelelse - %s"
-
-#~ msgid ""
-#~ "Failed to generate mime part from message while generating forwarded message."
-#~ msgstr ""
-#~ "Kunne ikke generere MIME-del fra melding under generering av videresendt "
-#~ "melding."
-
-#, fuzzy
-#~ msgid "Creating \"%s\""
-#~ msgstr "Sender '%s'"
-
-#~ msgid "Exception while reporting result to shell component listener."
-#~ msgstr "Unntak under rapportering av resultat til skallkomponentens lytter."
-
-#, fuzzy
-#~ msgid "Save messages from folder \"%s\""
-#~ msgstr "Gemmer besked i mappe"
-
-#, fuzzy
-#~ msgid "Rebuilding message view"
-#~ msgstr "Sender meddelelse"
-
-#, fuzzy
-#~ msgid "Rebuild message view"
-#~ msgstr "Hjælpebesked"
-
-#~ msgid "Note: When converting between mailbox formats, a failure\n"
-#~ msgstr "Merk: Ved konvertering mellom postboksformater, kan en feil\n"
-
-#, fuzzy
-#~ msgid "External Directories"
-#~ msgstr "Ekstern visning"
-
-#~ msgid "Port Number:"
-#~ msgstr "Portnummer:"
-
-#, fuzzy
-#~ msgid "Outline:"
-#~ msgstr "Udgående"
-
-#, fuzzy
-#~ msgid "Headings:"
-#~ msgstr "Overskrifter"
-
-#, fuzzy
-#~ msgid "Highlighted day:"
-#~ msgstr "Fremhæv:"
-
-#~ msgid "Day numbers:"
-#~ msgstr "Dagnummer:"
-
-#~ msgid "Current day's number:"
-#~ msgstr "Nummer for idag:"
-
-#~ msgid "To-Do item that is not yet due:"
-#~ msgstr "Oppgavelisteoppføring som ikke har gått ut ennå:"
-
-#~ msgid "To-Do item that is due today:"
-#~ msgstr "Oppgavelisteoppføring som går ut idag:"
-
-#~ msgid "To-Do item that is overdue:"
-#~ msgstr "Oppgavelisteoppføring som har gått ut:"
-
-#, fuzzy
-#~ msgid "Expunging \"%s\""
-#~ msgstr "Sender '%s'"
-
-#~ msgid "Expunge \"%s\""
-#~ msgstr "Tøm \"%s\""
-
-#, fuzzy
-#~ msgid "Loading \"%s\""
-#~ msgstr "Sender '%s'"
-
-#~ msgid "Load \"%s\""
-#~ msgstr "Last \"%s\""
-
-#, fuzzy
-#~ msgid "Synchronizing \"%s\""
-#~ msgstr "Synkroniserer mappe"
-
-#~ msgid "Synchronize \"%s\""
-#~ msgstr "Synkronisér \"%s\""
-
-#, fuzzy
-#~ msgid "Displaying message UID \"%s\""
-#~ msgstr "Kopierer beskeder til %s"
-
-#, fuzzy
-#~ msgid "Clearing message display"
-#~ msgstr "Modtager meddelelse %s"
-
-#, fuzzy
-#~ msgid "Display message UID \"%s\""
-#~ msgstr "Kopierer beskeder til %s"
-
-#, fuzzy
-#~ msgid "Opening messages from folder \"%s\""
-#~ msgstr ""
-#~ "Kan ikke hente besked: %s fra mappe %s\n"
-#~ " %s"
-
-#, fuzzy
-#~ msgid "Open messages from \"%s\""
-#~ msgstr "Kopierer beskeder til %s"
-
-#, fuzzy
-#~ msgid "Viewing messages from folder \"%s\""
-#~ msgstr "Gemmer besked i mappe"
-
-#, fuzzy
-#~ msgid "View messages from \"%s\""
-#~ msgstr "Flytter meddelelser til %s"
-
-#, fuzzy
-#~ msgid "Retrieving message %d of %d (uid \"%s\")"
-#~ msgstr "Henter besked nummer %d af %d (uid \"%s\")"
-
-#~ msgid "N_ew Directory Server"
-#~ msgstr "Ny katalog-tj_ener"
-
-#, fuzzy
-#~ msgid "appointment"
-#~ msgstr "Aftale"
-
-#, fuzzy
-#~ msgid "task"
-#~ msgstr "Opgave"
-
-#, fuzzy
-#~ msgid "journal entry"
-#~ msgstr "Journalpunkt - %s"
-
-#, fuzzy
-#~ msgid "Year:"
-#~ msgstr "år"
-
-#~ msgid ""
-#~ "Please select the date you want to go to.\n"
-#~ "When you click on a day, you will be taken\n"
-#~ "to that date."
-#~ msgstr ""
-#~ "Vennligst velg datoen du vil gå til.\n"
-#~ "Når du klikker på en dag vil du flytte\n"
-#~ "deg til denne datoen."
-
-#, fuzzy
-#~ msgid "_Mail Configuration"
-#~ msgstr "Konfiguration af epost"
-
-#, fuzzy
-#~ msgid "_Save Calendar As"
-#~ msgstr "Gem kalender"
-
-#, fuzzy
-#~ msgid "may"
-#~ msgstr "dag"
-
-#~ msgid "sept"
-#~ msgstr "sept"
-
-#, fuzzy
-#~ msgid "sunday"
-#~ msgstr "søndag"
-
-#, fuzzy
-#~ msgid "monday"
-#~ msgstr "mandag"
-
-#, fuzzy
-#~ msgid "tuesday"
-#~ msgstr "tirsdag"
-
-#, fuzzy
-#~ msgid "wednesday"
-#~ msgstr "onsdag"
-
-#, fuzzy
-#~ msgid "wednes"
-#~ msgstr "uger"
-
-#, fuzzy
-#~ msgid "thursday"
-#~ msgstr "torsdag"
-
-#, fuzzy
-#~ msgid "thur"
-#~ msgstr "time"
-
-#, fuzzy
-#~ msgid "thurs"
-#~ msgstr "timer"
-
-#, fuzzy
-#~ msgid "friday"
-#~ msgstr "fredag"
-
-#, fuzzy
-#~ msgid "saturday"
-#~ msgstr "lørdag"
-
-#~ msgid "fortnight"
-#~ msgstr "14-dager"
-
-#, fuzzy
-#~ msgid "min"
-#~ msgstr "minut"
-
-#, fuzzy
-#~ msgid "sec"
-#~ msgstr "sekund"
-
-#~ msgid "tomorrow"
-#~ msgstr "imorgen"
-
-#, fuzzy
-#~ msgid "yesterday"
-#~ msgstr "tirsdag"
-
-#, fuzzy
-#~ msgid "today"
-#~ msgstr "I dag"
-
-#, fuzzy
-#~ msgid "last"
-#~ msgstr "Indsæt"
-
-#, fuzzy
-#~ msgid "this"
-#~ msgstr "."
-
-#, fuzzy
-#~ msgid "next"
-#~ msgstr "Næste"
-
-#, fuzzy
-#~ msgid "first"
-#~ msgstr "_Fornavn:"
-
-#, fuzzy
-#~ msgid "third"
-#~ msgstr "Andet"
-
-#, fuzzy
-#~ msgid "fourth"
-#~ msgstr "for"
-
-#~ msgid "fifth"
-#~ msgstr "femte"
-
-#~ msgid "sixth"
-#~ msgstr "sjette"
-
-#, fuzzy
-#~ msgid "seventh"
-#~ msgstr "Ulæst"
-
-#, fuzzy
-#~ msgid "eighth"
-#~ msgstr "Højde:"
-
-#, fuzzy
-#~ msgid "ninth"
-#~ msgstr "Udskriv"
-
-#, fuzzy
-#~ msgid "tenth"
-#~ msgstr "måned"
-
-#~ msgid "eleventh"
-#~ msgstr "ellevte"
-
-#~ msgid "twelfth"
-#~ msgstr "tolvte"
-
-#~ msgid "ago"
-#~ msgstr "siden"
-
-#, fuzzy
-#~ msgid "Could not create summary"
-#~ msgstr "Kunne ikke oprette rør: %s"
-
-#~ msgid ""
-#~ "For reading mail delivered by the local system, and for storing mail on "
-#~ "local disk."
-#~ msgstr ""
-#~ "For lesing av e-post levert av det lokale systemet, og for lagring av e-post "
-#~ "på lokal disk."
-
-#, fuzzy
-#~ msgid "Could not rename folder %s to %s: destination exists"
-#~ msgstr "Kunne ikke ændre navn på mappe %s til %s: %s"
-
-#~ msgid "Mbox folders may not be nested."
-#~ msgstr "Mbox-mapper kan ikke være rekursive."
-
-#, fuzzy
-#~ msgid "Could not open summary %s"
-#~ msgstr "Kunne ikke indlæse sammendrag for %s"
-
-#, fuzzy
-#~ msgid "Summary mismatch, aborting sync"
-#~ msgstr "Oversigt og mappe uoverensstemmelse, selv efter synkronisering"
-
-#, fuzzy
-#~ msgid "Summary mismatch, X-Evolution header missing"
-#~ msgstr "Oversigt og mappe uoverensstemmelse, selv efter synkronisering"
-
-#, fuzzy
-#~ msgid "Cannot copy data to output file: %s"
-#~ msgstr ""
-#~ "Kunne ikke oprette uddatafil: %s\n"
-#~ " %s"
-
-#, fuzzy
-#~ msgid "Cannot append message to mh folder: %s"
-#~ msgstr "Kan ikke tilføje besked i mh-mappe: %s: %s"
-
-#, fuzzy
-#~ msgid "Could not rename folder `%s': %s"
-#~ msgstr "Kunne ikke ændre navn på mappe: %s"
-
-#, fuzzy
-#~ msgid "Could not rename folder `%s': %s exists"
-#~ msgstr "Kunne ikke ændre navn på mappe %s til %s: %s"
-
-#~ msgid "MH folders may not be nested."
-#~ msgstr "MH-mapper kan ikke være rekursive."
-
-#, fuzzy
-#~ msgid "Local mail directory %s"
-#~ msgstr "Lokal e-post-fil %s"
-
-#, fuzzy
-#~ msgid "Bold"
-#~ msgstr "Krop"
-
-#, fuzzy
-#~ msgid "Sets something as bold"
-#~ msgstr "Gem opgave som noget andet"
-
-#, fuzzy
-#~ msgid "Couldn't create pipe to %s: %s"
-#~ msgstr "Kunne ikke oprette rør til GPG/PGP: %s"
-
-#, fuzzy
-#~ msgid "Could not execute %s: %s\n"
-#~ msgstr "Kunne ikke udføre %s: besked ikke sendt."
-
-#, fuzzy
-#~ msgid "Cannot fork %s: %s"
-#~ msgstr "Kan ikke få fat på mappe: %s: %s"
-
-#, fuzzy
-#~ msgid "Cannot initialize Evolution's mail storage hash."
-#~ msgstr "Kan ikke initialisere Evolutions e-postkomponent."
-
-#, fuzzy
-#~ msgid "_New appointment..."
-#~ msgstr "Ny aftale..."
-
-#, fuzzy
-#~ msgid "Create a new folder"
-#~ msgstr "Opretter en ny mappe"
-
-#, fuzzy
-#~ msgid "_Create New Folder..."
-#~ msgstr "Opretter en ny mappe"
-
-#, fuzzy
-#~ msgid "Monday\n"
-#~ msgstr "mandag"
-
-#, fuzzy
-#~ msgid "None\n"
-#~ msgstr "Ingen"
-
-#, fuzzy
-#~ msgid ""
-#~ "Incoming\n"
-#~ "Outgoing"
-#~ msgstr "udgående"
-
-#, fuzzy
-#~ msgid "window2"
-#~ msgstr "nu"
-
-#~ msgid ""
-#~ "This appointment has custom recurrence rules that cannot be edited by "
-#~ "Evolution.\n"
-#~ "\n"
-#~ "However, the appointment will recur at the appropriate time and will be "
-#~ "displayed properly in the calendar views."
-#~ msgstr ""
-#~ "Denne avtalen har egendefinerte regler for gjeninntreffelse som ikke kan "
-#~ "redigeres av Evolution.\n"
-#~ "\n"
-#~ "Avtalen vil uansett inntreffe til riktig tid og vil vises korrekt i "
-#~ "kalendervisningene."
-
-#, fuzzy
-#~ msgid "Create to-do item"
-#~ msgstr "Slet dette punkt"
-
-#, fuzzy
-#~ msgid "Edit to-do item"
-#~ msgstr "Udskriv denne ting"
-
-#, fuzzy
-#~ msgid "Due Date:"
-#~ msgstr "Slut-_dato:"
-
-#, fuzzy
-#~ msgid "Item Comments:"
-#~ msgstr ""
-#~ "\n"
-#~ "Kommentar: "
-
-#, fuzzy
-#~ msgid "Time display"
-#~ msgstr "Vis"
-
-#, fuzzy
-#~ msgid "Time format"
-#~ msgstr "Tidsformat:"
-
-#, fuzzy
-#~ msgid "12-hour (AM/PM)"
-#~ msgstr "12 timer (AM/PM)"
-
-#, fuzzy
-#~ msgid "24-hour"
-#~ msgstr "24 timer"
-
-#~ msgid "Weeks start on"
-#~ msgstr "Uken starter på"
-
-#~ msgid "Day range"
-#~ msgstr "Dagområde"
-
-#~ msgid ""
-#~ "Please select the start and end hours you want\n"
-#~ "to be displayed in the day view and week view.\n"
-#~ "Times outside this range will not be displayed\n"
-#~ "by default."
-#~ msgstr ""
-#~ "Vennligst velg start og slutt-tidene du ønsker\n"
-#~ "at skal vises i dagvisningen og ukevisningen.\n"
-#~ "Tider utenfor dette området vil ikke vises\n"
-#~ "som standard."
-
-#, fuzzy
-#~ msgid "Day end:"
-#~ msgstr "Dato:"
-
-#, fuzzy
-#~ msgid "Colors for display"
-#~ msgstr "(Ingen mappe vist)"
-
-#~ msgid "Show on TODO List:"
-#~ msgstr "Vis på oppgavelisten:"
-
-#, fuzzy
-#~ msgid "To Do List style options:"
-#~ msgstr "Vis valgmuligheder"
-
-#, fuzzy
-#~ msgid "Highlight overdue items"
-#~ msgstr "Overskredne opgaver"
-
-#~ msgid "Highlight not yet due items"
-#~ msgstr "Merk oppføringer som ikke har gått ut"
-
-#, fuzzy
-#~ msgid "To Do List Properties"
-#~ msgstr "Egenskaber"
-
-#, fuzzy
-#~ msgid "To Do List"
-#~ msgstr "Telefonliste"
-
-#, fuzzy
-#~ msgid "Preferences"
-#~ msgstr "Ændr opsætning"
-
-#, fuzzy
-#~ msgid "Alarm Properties"
-#~ msgstr "Egenskaber"
-
-#~ msgid "Beep on display alarms"
-#~ msgstr "Pip ved visning av alarmer"
-
-#, fuzzy
-#~ msgid "Audio alarms timeout after"
-#~ msgstr "Alarmer afbrydes efter"
-
-#, fuzzy
-#~ msgid "Enable snoozing for "
-#~ msgstr "Slå udsættelse til for"
-
-#, fuzzy
-#~ msgid "does not match regex"
-#~ msgstr "eksisterer ikke"
-
-#~ msgid ""
-#~ "Welcome to the Evolution Mail configuration wizard!\n"
-#~ "By filling in some information about your email\n"
-#~ "settings, you can start sending and receiving email\n"
-#~ "right away. Click Next to continue."
-#~ msgstr ""
-#~ "Velkommen til Evolution E-post-konfigurasjonsdruiden!\n"
-#~ "Ved å fylle ut litt informasjon om dine e-post-\n"
-#~ "innstillinger kan du begynne å sende og motta e-post\n"
-#~ "med én gang. Klikk neste for å fortsette."
-
-#~ msgid "Add Optional Fields..."
-#~ msgstr "Legg til tillegsfelt..."
-
-#~ msgid "Additional Identity Fields"
-#~ msgstr "Ekstra identitetsfelt"
-
-#~ msgid "Browse..."
-#~ msgstr "Bla gjennom..."
-
-#, fuzzy
-#~ msgid "Edit Mail Configuration Settings"
-#~ msgstr "Konfiguration af epost"
-
-#, fuzzy
-#~ msgid "Preferred type: "
-#~ msgstr "Tjenertype:"
-
-#~ msgid ""
-#~ "You are almost done with the mail configuration process. The identity, "
-#~ "incoming"
-#~ msgstr ""
-#~ "Du er nesten ferdig med konfigurasjonsprosessen for e-post. Identiteten, "
-#~ "innkommende"
-
-#~ msgid ""
-#~ "Your mail server supports the following types of authentication. Please"
-#~ msgstr "Din e-post tjener støtter følgende typer autentisering. Vennligst"
-
-#, fuzzy
-#~ msgid "Threading message list"
-#~ msgstr "Trådet meddelelsesliste"
-
-#, fuzzy
-#~ msgid "Thread message list"
-#~ msgstr "Trådet meddelelsesliste"
-
-#~ msgid "_Submit Bug Report"
-#~ msgstr "_Send inn feilrapport"
-
-#, fuzzy
-#~ msgid "Send _Now"
-#~ msgstr "Afsend"
-
-#, fuzzy
-#~ msgid "Custom search"
-#~ msgstr "Egendefineret genindtræffelse"
-
-#~ msgid " (XXX unread)"
-#~ msgstr " (XXX ulest)"
-
-#~ msgid "Don't know protocol to open URI `%s'"
-#~ msgstr "Ingen protokoll for åpning av URI `%s'"
-
-#, fuzzy
-#~ msgid "Recur on the"
-#~ msgstr "den"
-
-#~ msgid "th day of the month"
-#~ msgstr "de dagen i måneden"
-
-#, fuzzy
-#~ msgid "Copy Message"
-#~ msgstr "Kopierer beskeder"
-
-#, fuzzy
-#~ msgid "Quick Search"
-#~ msgstr "Søg"
-
-#~ msgid "BLARG\n"
-#~ msgstr "BLARG\n"
-
-#~ msgid "Bad storage URL (no server): %s"
-#~ msgstr "Ugyldig URL for lagring (ingen tjener): %s"
-
-#, fuzzy
-#~ msgid "Family Name"
-#~ msgstr "Fuldt navn"
-
-#, fuzzy
-#~ msgid "Prim"
-#~ msgstr "Primær epost"
-
-#, fuzzy
-#~ msgid "Could not connect to IMAP server on %s."
-#~ msgstr "Kunne ikke koble til POP-tjener på %s."
-
-#, fuzzy
-#~ msgid "_Summary:"
-#~ msgstr "Sammendrag:"
-
-#~ msgid ""
-#~ "Minutes\n"
-#~ "Hours\n"
-#~ "Days\n"
-#~ msgstr ""
-#~ "Minutter\n"
-#~ "Timer\n"
-#~ "Dager\n"
-
-#, fuzzy
-#~ msgid "Daily"
-#~ msgstr "Dag"
-
-#, fuzzy
-#~ msgid "Weekly"
-#~ msgstr "Uge"
-
-#, fuzzy
-#~ msgid "Monthly"
-#~ msgstr "Måned"
-
-#, fuzzy
-#~ msgid "Yearly"
-#~ msgstr "år"
-
-#, fuzzy
-#~ msgid "Every "
-#~ msgstr "Hver"
-
-#~ msgid ""
-#~ "1st\n"
-#~ "2nd\n"
-#~ "3rd\n"
-#~ "4th\n"
-#~ "5th\n"
-#~ msgstr ""
-#~ "1ste\n"
-#~ "2dre\n"
-#~ "3dje\n"
-#~ "4de\n"
-#~ "5te\n"
-
-#~ msgid ""
-#~ "Monday\n"
-#~ "Tuesday\n"
-#~ "Wednesday\n"
-#~ "Thursday\n"
-#~ "Friday\n"
-#~ "Saturday\n"
-#~ "Sunday\n"
-#~ msgstr ""
-#~ "Mandag\n"
-#~ "Tirsdag\n"
-#~ "Onsdag\n"
-#~ "Torsdag\n"
-#~ "Fredag\n"
-#~ "Lørdag\n"
-#~ "Søndag\n"
-
-#, fuzzy
-#~ msgid "Ending date"
-#~ msgstr "Slutdato"
-
-#, fuzzy
-#~ msgid "End on "
-#~ msgstr "Dagen slutter:"
-
-#, fuzzy
-#~ msgid "Change"
-#~ msgstr "Foresatte"
-
-#, fuzzy
-#~ msgid "_Unselect All"
-#~ msgstr "Vælg alle"
-
-#, fuzzy
-#~ msgid "FIXME: Print..."
-#~ msgstr "Udskriv..."
-
-#, fuzzy
-#~ msgid "Insert a file as an attachment"
-#~ msgstr "Vedhæft bilag til meddelelsen"
-
-#~ msgid "FIXME: Assign Task..."
-#~ msgstr "Tildel oppgave..."
-
-#~ msgid "Assign the task to someone"
-#~ msgstr "Tildel oppgaven til noen"
-
-#~ msgid "FIXME: Ca_lendar..."
-#~ msgstr "Ka_lender..."
-
-#, fuzzy
-#~ msgid "Save and close this appointment"
-#~ msgstr "Luk denne aftale"
-
-#~ msgid "Invite attendees to a meeting"
-#~ msgstr "Invitér deltakere til et møte"
-
-#, fuzzy
-#~ msgid "Cut selected item into clipboard"
-#~ msgstr "Indsæt fra klippebordet"
-
-#, fuzzy
-#~ msgid "Copy selected item into clipboard"
-#~ msgstr "Indsæt fra klippebordet"
-
-#~ msgid "Select recipients' addresses"
-#~ msgstr "Velg mottakerenes adresser"
-
-#, fuzzy
-#~ msgid "Search..."
-#~ msgstr "Søg"
-
-#, fuzzy
-#~ msgid "To: >>"
-#~ msgstr "Til:"
-
-#, fuzzy
-#~ msgid "Cc: >>"
-#~ msgstr "Cc:"
-
-#, fuzzy
-#~ msgid "Bcc: >>"
-#~ msgstr "Bcc:"
-
-#~ msgid "label7"
-#~ msgstr "etikett7"
-
-#~ msgid "label8"
-#~ msgstr "etikett8"
-
-#, fuzzy
-#~ msgid "_Save..."
-#~ msgstr "_Gem som..."
-
-#~ msgid "Quit the message composer"
-#~ msgstr "Avslutt meldingsredigering"
-
-#, fuzzy
-#~ msgid "More criteria"
-#~ msgstr "Tilføj kriterie"
-
-#~ msgid "Fewer criteria"
-#~ msgstr "Færre kriterier"
-
-#~ msgid "Run filter \"%s\""
-#~ msgstr "Kjør filter \"%s\""
diff --git a/po/de.po b/po/de.po
deleted file mode 100644
index 2c988766e4..0000000000
--- a/po/de.po
+++ /dev/null
@@ -1,9488 +0,0 @@
-# German po for Evolution.
-# Copyright (C) 2000 Free Software Foundation, Inc.
-# Kai Lahmann <kl@linuxfaqs.de>, 2000.
-# Matthias Warkus <mawa@iname.com>, 2000.
-#
-# Sprachregelungen:
-# task = Aufgabe (Auftrag klingt nach Buchhaltung)
-# mailbox = Postfach (dt. Mailbox ist die Übersetzung von "BBS")
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: evolution-0.8cvs\n"
-"POT-Creation-Date: 2001-05-18 15:40+0200\n"
-"PO-Revision-Date: 2001-05-18 16:18+02:00\n"
-"Last-Translator: Matthias Warkus <mawarkus@gnome.org>\n"
-"Language-Team: German <gnome-de@gnome.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: addressbook/backend/ebook/e-card.c:3314
-msgid "Card: "
-msgstr "Karte: "
-
-#: addressbook/backend/ebook/e-card.c:3316
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-"\n"
-"Name: "
-
-#: addressbook/backend/ebook/e-card.c:3317
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-"\n"
-" Präfix: "
-
-#: addressbook/backend/ebook/e-card.c:3318
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-"\n"
-" Vorname: "
-
-#: addressbook/backend/ebook/e-card.c:3319
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-"\n"
-" Zusätzlich: "
-
-#: addressbook/backend/ebook/e-card.c:3320
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-"\n"
-" Familienname: "
-
-#: addressbook/backend/ebook/e-card.c:3321
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-"\n"
-" Suffix: "
-
-#: addressbook/backend/ebook/e-card.c:3335
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-"\n"
-"Geburtsdatum: "
-
-#: addressbook/backend/ebook/e-card.c:3346
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-"\n"
-"Adresse:"
-
-#: addressbook/backend/ebook/e-card.c:3348
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-"\n"
-" Postfach: "
-
-#: addressbook/backend/ebook/e-card.c:3349
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-"\n"
-" Suffix: "
-
-#: addressbook/backend/ebook/e-card.c:3350
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-"\n"
-" Straße: "
-
-#: addressbook/backend/ebook/e-card.c:3351
-msgid ""
-"\n"
-" City: "
-msgstr ""
-"\n"
-" Ort: "
-
-#: addressbook/backend/ebook/e-card.c:3352
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-"\n"
-" Region: "
-
-#: addressbook/backend/ebook/e-card.c:3353
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-"\n"
-" Postleitzahl: "
-
-#: addressbook/backend/ebook/e-card.c:3354
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-"\n"
-" Land: "
-
-#: addressbook/backend/ebook/e-card.c:3367
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-"\n"
-"Postvermerk: "
-
-#: addressbook/backend/ebook/e-card.c:3379
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-"\n"
-"Telefone:\n"
-
-#: addressbook/backend/ebook/e-card.c:3382
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-"\n"
-"Telefon:"
-
-#: addressbook/backend/ebook/e-card.c:3406
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-"\n"
-"E-Mail:\n"
-
-#: addressbook/backend/ebook/e-card.c:3409
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-"\n"
-"E-Mail:"
-
-#: addressbook/backend/ebook/e-card.c:3428
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-"\n"
-"Mailer: "
-
-#: addressbook/backend/ebook/e-card.c:3434
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-"\n"
-"Zeitzone: "
-
-#: addressbook/backend/ebook/e-card.c:3442
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-"\n"
-"Geographischer Ort: "
-
-#: addressbook/backend/ebook/e-card.c:3446
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-"\n"
-"Berufsbezeichnung: "
-
-#: addressbook/backend/ebook/e-card.c:3458
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-"\n"
-"Firma: "
-
-#: addressbook/backend/ebook/e-card.c:3459
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-"\n"
-" Name: "
-
-#: addressbook/backend/ebook/e-card.c:3460
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-"\n"
-" Einheit: "
-
-#: addressbook/backend/ebook/e-card.c:3461
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-"\n"
-" Einheit2: "
-
-#: addressbook/backend/ebook/e-card.c:3462
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-"\n"
-" Einheit3: "
-
-#: addressbook/backend/ebook/e-card.c:3463
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-"\n"
-" Einheit4: "
-
-#: addressbook/backend/ebook/e-card.c:3467
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-"\n"
-"Kategorien: "
-
-#: addressbook/backend/ebook/e-card.c:3468
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-"\n"
-"Kommentar: "
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3481
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-"\n"
-"Eindeutige Zeichenkette: "
-
-#: addressbook/backend/ebook/e-card.c:3484
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-"\n"
-"Öffentlicher Schlüssel: "
-
-#: addressbook/backend/ebook/e-card.c:3745
-msgid "Multiple VCards"
-msgstr "Mehrere VCards"
-
-#: addressbook/backend/ebook/e-card.c:3753
-#, c-format
-msgid "VCard for %s"
-msgstr "VCard für %s"
-
-#: addressbook/backend/ebook/e-destination.c:244
-msgid "???"
-msgstr "???"
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_VCard_Importer.oaf.in.h:1
-msgid "Factory to import VCard files into Evolution."
-msgstr "Factory, um VCard-Dateien in Evolution zu importieren."
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_VCard_Importer.oaf.in.h:2
-msgid "Imports VCard files into Evolution."
-msgstr "Importiert VCard-Dateien in Evolution."
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:21
-#: addressbook/backend/ebook/load-pine-addressbook.c:22
-#: addressbook/backend/ebook/test-client-list.c:23
-#: addressbook/backend/ebook/test-client.c:33
-#: addressbook/conduit/address-conduit.c:1092
-#: addressbook/gui/component/addressbook-factory.c:42
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:98 calendar/gui/main.c:57
-msgid "Could not initialize Bonobo"
-msgstr "Bonobo konnte nicht initialisiert werden"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr "Cursor konnte nicht geladen werden\n"
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr "EBook nicht geladen\n"
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr "Der Wombat-Server konnte nicht gestartet werden"
-
-#: addressbook/conduit/address-conduit.c:655
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr "Wombat konnte nicht gestartet werden"
-
-#: addressbook/conduit/address-conduit.c:687
-#: addressbook/conduit/address-conduit.c:690
-msgid "Could not read pilot's Address application block"
-msgstr "Adress-Anwendungsblock des konnte Pilot nicht gelesen werden"
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:7
-msgid "Add"
-msgstr "Hinzufügen"
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr "Jahrestag:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr "Geschäftlich"
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr "Geschäftliches Fax"
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-msgid "C_ontacts..."
-msgstr "Kontakte..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr "Kategorien..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-msgid "Contact Editor"
-msgstr "Kontakteditor"
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr "Details"
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr "Einsortieren unter:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-msgid "General"
-msgstr "Allgemein"
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr "Neuer Telefon-Typ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-msgid "No_tes:"
-msgstr "Notizen:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr "Telefon-Typen"
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1284
-msgid "Primary Email"
-msgstr "Primäre E-Mail"
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr "Will HTML-Mail erhalten"
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr "Adresse der Webseite:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:84
-msgid "_Add"
-msgstr "Hinzufügen"
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr "Adresse..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr "Name des Assistenten:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr "Geburtstag:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr "Geschäftlich"
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-msgid "_Company:"
-msgstr "Firma:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/folder-browser.c:715 mail/mail-config.glade.h:85
-#: ui/evolution-event-editor.xml.h:57 ui/evolution-mail.xml.h:103
-#: ui/evolution-task-editor-dialog.xml.h:69
-msgid "_Delete"
-msgstr "Löschen"
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr "Abteilung:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr "Voller Name..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-msgid "_Home"
-msgstr "Zu Hause"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-msgid "_Job title:"
-msgstr "Stellenbezeichnung:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr "Name des Vorgesetzten:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-msgid "_Mobile"
-msgstr "Mobil"
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr "Spitzname:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr "Büro:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr "Beruf:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr "Partner:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr "Dies ist die Postadresse"
-
-#: addressbook/contact-editor/e-contact-editor.c:603
-msgid "This contact belongs to these categories:"
-msgstr "Dieser Kontakt gehört in folgende Kategorien:"
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-#: addressbook/gui/widgets/e-addressbook-view.c:733
-msgid "Assistant"
-msgstr "Assistent"
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/contact-editor/e-contact-editor.c:1310
-msgid "Business"
-msgstr "Geschäftlich"
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-msgid "Business 2"
-msgstr "Geschäftlich 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#: addressbook/gui/widgets/e-addressbook-view.c:713
-msgid "Business Fax"
-msgstr "Geschäftliches Fax"
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Callback"
-msgstr "Rückruf"
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "Car"
-msgstr "Auto"
-
-#: addressbook/contact-editor/e-contact-editor.c:1248
-msgid "Company"
-msgstr "Firma"
-
-#: addressbook/contact-editor/e-contact-editor.c:1249
-#: addressbook/contact-editor/e-contact-editor.c:1311
-msgid "Home"
-msgstr "Zu Hause"
-
-#: addressbook/contact-editor/e-contact-editor.c:1250
-msgid "Home 2"
-msgstr "Zu Hause 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1251
-#: addressbook/gui/widgets/e-addressbook-view.c:714
-msgid "Home Fax"
-msgstr "Fax zu Hause"
-
-#: addressbook/contact-editor/e-contact-editor.c:1252
-#: addressbook/gui/widgets/e-addressbook-view.c:717
-msgid "ISDN"
-msgstr "ISDN"
-
-#: addressbook/contact-editor/e-contact-editor.c:1253
-msgid "Mobile"
-msgstr "Mobil"
-
-#: addressbook/contact-editor/e-contact-editor.c:1254
-#: addressbook/contact-editor/e-contact-editor.c:1312
-msgid "Other"
-msgstr "Andere"
-
-#: addressbook/contact-editor/e-contact-editor.c:1255
-#: addressbook/gui/widgets/e-addressbook-view.c:719
-msgid "Other Fax"
-msgstr "Anderes Fax"
-
-#: addressbook/contact-editor/e-contact-editor.c:1256
-#: addressbook/gui/widgets/e-addressbook-view.c:720
-msgid "Pager"
-msgstr "Pager"
-
-#: addressbook/contact-editor/e-contact-editor.c:1257
-msgid "Primary"
-msgstr "Primär"
-
-#: addressbook/contact-editor/e-contact-editor.c:1258
-#: addressbook/gui/widgets/e-addressbook-view.c:721
-msgid "Radio"
-msgstr "Radio"
-
-#: addressbook/contact-editor/e-contact-editor.c:1259
-#: addressbook/gui/widgets/e-addressbook-view.c:722
-msgid "Telex"
-msgstr "Telex"
-
-#: addressbook/contact-editor/e-contact-editor.c:1260
-msgid "TTY/TDD"
-msgstr "TTY/TTD"
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:725
-msgid "Email 2"
-msgstr "E-Mail 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/gui/widgets/e-addressbook-view.c:726
-msgid "Email 3"
-msgstr "E-Mail 3"
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-msgid "Delete Contact?"
-msgstr "Kontakt löschen?"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:233
-msgid "Contact Quick-Add"
-msgstr "Kontakt schnell hinzufügen"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:235
-msgid "Edit Full"
-msgstr "Voll bearbeiten"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:276
-#: addressbook/gui/widgets/e-addressbook-view.c:700
-msgid "Full Name"
-msgstr "Voller Name"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:282
-msgid "E-mail"
-msgstr "E-Mail"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr "Adresse _2"
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr "Kanada"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr "Adresse prüfen"
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr "Land:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr "Finnland"
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr "USA"
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr "_Adresse:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-msgid "_City:"
-msgstr "Ort:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr "_Postfach:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr "_Staat/Bundesland:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr "Postleitzahl/_ZIP:"
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr "Vollen Namen prüfen"
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr "Dr."
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr "Esq."
-
-#: addressbook/contact-editor/fullname.glade.h:4
-msgid "I"
-msgstr "I"
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr "II"
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr "III"
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr "Jr."
-
-#: addressbook/contact-editor/fullname.glade.h:8
-msgid "Miss"
-msgstr "Fräulein"
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr "Herr"
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr "Frau"
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr "Frl."
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr "Sr."
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr "Vorname:"
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr "Nachname:"
-
-#: addressbook/contact-editor/fullname.glade.h:15
-msgid "_Middle:"
-msgstr "Mittelname:"
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr "Suffix:"
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr "Titel:"
-
-#: addressbook/gui/component/addressbook.c:244
-msgid "As _Minicards"
-msgstr "Als _Minikarten"
-
-#: addressbook/gui/component/addressbook.c:250
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr "Als Tabelle"
-
-#: addressbook/gui/component/addressbook.c:410
-#, c-format
-msgid "Enter password for %s"
-msgstr "Bitte geben Sie das Passwort für %s ein"
-
-#: addressbook/gui/component/addressbook.c:438
-msgid "Unable to open addressbook"
-msgstr "Das Adressbuch kann nicht geöffnet werden"
-
-#: addressbook/gui/component/addressbook.c:445
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or the LDAP server\n"
-"is down"
-msgstr ""
-"Es war nicht möglich, dieses Adressbuch zu öffnen. Dies\n"
-"bedeutet entweder, dass Sie einen ungültigen URI eingegeben\n"
-"haben oder dass der LDAP-Server unerreichbar ist."
-
-#: addressbook/gui/component/addressbook.c:450
-msgid ""
-"This version of Evolution does not have LDAP support\n"
-"compiled in to it. If you want to use LDAP in Evolution\n"
-"you must compile the program from the CVS sources after\n"
-"retrieving OpenLDAP from the link below.\n"
-msgstr ""
-"Diese Version von Evolution hat keine eincompilierte LDAP-\n"
-"Unterstützung. Wenn Sie LDAP in Evolution verwenden wollen,\n"
-"müssen Sie das Programm aus dem CVS-Quellcode compilieren,\n"
-"nachdem Sie sich von der Adresse unten OpenLDAP besorgt\n"
-"haben.\n"
-
-#: addressbook/gui/component/addressbook.c:458
-msgid ""
-"We were unable to open this addressbook. Please check that the\n"
-"path exists and that you have permission to access it."
-msgstr ""
-"Dieses Adressbuch konnte nicht geöffnet werden. Bitte prüfen Sie\n"
-"nach, ob der Pfad existiert und ob Sie darauf zugreifen dürfen."
-
-#: addressbook/gui/component/addressbook.c:618 calendar/gui/gnome-cal.c:233
-msgid "Any field contains"
-msgstr "Irgend ein Feld enthält"
-
-#: addressbook/gui/component/addressbook.c:619
-msgid "Name contains"
-msgstr "Name enthält"
-
-#: addressbook/gui/component/addressbook.c:620
-msgid "Email contains"
-msgstr "E-Mail enthält"
-
-#: addressbook/gui/component/addressbook.c:763
-msgid "The URI that the Folder Browser will display"
-msgstr "Die URI, die der Suchdienst anzeigen wird"
-
-#: addressbook/gui/component/addressbook-config.c:148
-msgid "LDAP Server"
-msgstr "LDAP-Server"
-
-#: addressbook/gui/component/addressbook-config.c:150
-msgid "File"
-msgstr "Datei"
-
-#: addressbook/gui/component/addressbook-config.c:153
-msgid "Unknown addressbook type"
-msgstr "Unbekannter Adressbuch-Typ"
-
-#: addressbook/gui/component/addressbook-config.c:163
-msgid "None (anonymous mode)"
-msgstr "Kein (Anonymer Modus)"
-
-#: addressbook/gui/component/addressbook-config.c:165
-#: camel/camel-sasl-plain.c:32 camel/providers/imap/camel-imap-provider.c:80
-#: camel/providers/nntp/camel-nntp-store.c:291
-#: camel/providers/pop3/camel-pop3-provider.c:67 mail/mail-config.glade.h:52
-msgid "Password"
-msgstr "Passwort"
-
-#: addressbook/gui/component/addressbook-config.c:168
-msgid "Unknown auth type"
-msgstr "Unbekannter Legitimationstyp"
-
-#: addressbook/gui/component/addressbook-config.c:177
-msgid "Base"
-msgstr "Basis"
-
-#: addressbook/gui/component/addressbook-config.c:179
-msgid "One"
-msgstr "Ein"
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "Subtree"
-msgstr "Unterbaum"
-
-#: addressbook/gui/component/addressbook-config.c:184
-msgid "Unknown scope type"
-msgstr "Unbekannter Gültigkeitsbereichstyp"
-
-#: addressbook/gui/component/addressbook-config.c:349
-msgid "Bind DN:"
-msgstr "DN binden:"
-
-#: addressbook/gui/component/addressbook-config.c:350
-msgid "FIXME Bind DN Help text here"
-msgstr "FIXME DN-Bindungs-Hilfetext hier"
-
-#: addressbook/gui/component/addressbook-config.c:352
-#: mail/mail-config.glade.h:60
-msgid "Remember this password"
-msgstr "Dieses Passwort speichern"
-
-#: addressbook/gui/component/addressbook-config.c:401
-#: mail/mail-config.glade.h:33
-msgid "Host:"
-msgstr "Host-Rechner:"
-
-#: addressbook/gui/component/addressbook-config.c:402
-msgid "FIXME Host help text here."
-msgstr "FIXME Host-Rechner-Hilfetext hier."
-
-#: addressbook/gui/component/addressbook-config.c:404
-msgid "Root DN:"
-msgstr "Root-DN:"
-
-#: addressbook/gui/component/addressbook-config.c:405
-msgid "FIXME Root DN help text here."
-msgstr "FIXME Root-DN-Hilfetext hier."
-
-#: addressbook/gui/component/addressbook-config.c:409
-msgid "Port:"
-msgstr "Port:"
-
-#: addressbook/gui/component/addressbook-config.c:410
-msgid "FIXME Port help text here."
-msgstr "FIXME Port-Hilfetext hier."
-
-#: addressbook/gui/component/addressbook-config.c:430
-msgid "Search Scope:"
-msgstr "Suche-Bereich:"
-
-#: addressbook/gui/component/addressbook-config.c:477
-msgid "Authentication:"
-msgstr "Legitimation:"
-
-#: addressbook/gui/component/addressbook-config.c:499
-msgid "Advanced LDAP Options"
-msgstr "Komplexe LDAP-Optionen"
-
-#: addressbook/gui/component/addressbook-config.c:520
-#: mail/mail-config.glade.h:53
-msgid "Path:"
-msgstr "Pfad:"
-
-#: addressbook/gui/component/addressbook-config.c:521
-msgid "FIXME Path Help text here"
-msgstr "FIXME Pfad-Hilfetext hier"
-
-#: addressbook/gui/component/addressbook-config.c:526
-msgid "Create path if it doesn't exist."
-msgstr "Pfad erstellen wenn er noch nicht existiert."
-
-#: addressbook/gui/component/addressbook-config.c:660
-msgid "Edit Addressbook"
-msgstr "Adressbuch bearbeiten"
-
-#: addressbook/gui/component/addressbook-config.c:662
-msgid "Add Addressbook"
-msgstr "Adressbuch hinzufügen"
-
-#: addressbook/gui/component/addressbook-config.c:680
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-"Wählen Sie den Typ ihres Adressbuches und geben Sie die relevanten "
-"Informationen ein."
-
-#: addressbook/gui/component/addressbook-config.c:686
-#: mail/mail-config.glade.h:43
-msgid "Name:"
-msgstr "Name:"
-
-#: addressbook/gui/component/addressbook-config.c:687
-msgid "FIXME Name help text here"
-msgstr "FIXME Hilfetext zum Namen hier"
-
-#: addressbook/gui/component/addressbook-config.c:689
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr "Beschreibung:"
-
-#: addressbook/gui/component/addressbook-config.c:690
-msgid "FIXME Description help text here"
-msgstr "FIXME Hilfetext zur Beschreibung hier"
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-msgid "Addressbook Sources"
-msgstr "Adressbuch-Quellen"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:235
-#: addressbook/gui/widgets/e-addressbook-view.c:616
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:11 mail/mail-config.glade.h:23
-#: mail/message-browser.c:202 ui/evolution-addressbook.xml.h:3
-#: ui/evolution-event-editor.xml.h:17 ui/evolution-mail.xml.h:22
-#: ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr "Löschen"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:28
-msgid "Edit"
-msgstr "Bearbeiten"
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-msgid "Name"
-msgstr "Name"
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-msgid "URI"
-msgstr "URI"
-
-#: addressbook/gui/component/addressbook-storage.c:99
-msgid "Other Contacts"
-msgstr "Andere Kontakte"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Disable Queries"
-msgstr "Abfragen deaktivieren"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Enable Queries (Dangerous!)"
-msgstr "Abfragen aktivieren (gefährlich!)"
-
-#: addressbook/gui/component/e-address-widget.c:388
-#: addressbook/gui/component/select-names/e-select-names-popup.c:281
-msgid "Edit Contact Info"
-msgstr "Kontaktinfo bearbeiten"
-
-#: addressbook/gui/component/e-address-widget.c:424
-#: addressbook/gui/component/select-names/e-select-names-popup.c:347
-msgid "Add to Contacts"
-msgstr "Zu Kontakten hinzufügen"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-msgid "A Bonobo control for an address popup."
-msgstr "Eine Bonobo-Control für ein Adress-Popup."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A Bonobo control for displaying an address."
-msgstr "Eine Bonobo-Control, um eine Adresse anzuzeigen."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr "Eine beispielhafte Bonobo-Komponente, die ein Adressbuch anzeigt."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr "Control, die eine Evolution-Adressbuch-Minikarte anzeigt."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-msgid "Evolution Addressbook minicard viewer"
-msgstr "Evolution-Adressbuch-Minikarten-Betrachter"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-msgid "Evolution component for handling contacts."
-msgstr "Evolution-Komponente für Kontaktverwaltung."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-msgid "Factory for the Addressbook Minicard control"
-msgstr "Factory für die Adressbuch-Minikarten-Control"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-msgid "Factory for the Addressbook's address displayer"
-msgstr "Factory für den Adressanzeiger des Adressbuchs"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-msgid "Factory for the Addressbook's address popup"
-msgstr "Factory für das Adress-Popup des Adressbuchs"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:10
-msgid "Factory for the Evolution addressbook component."
-msgstr "Factory für die Evolution-Adressbuch-Komponente."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:11
-msgid "Factory for the sample Addressbook control"
-msgstr "Factory für die beispielhafte Adressbuch-Kontrolle"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:161
-#: composer/e-msg-composer-attachment-bar.c:468 filter/filter-filter.c:401
-#: filter/filter-rule.c:549 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:265 shell/e-shortcuts-view.c:388
-msgid "Remove"
-msgstr "Entfernen"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:176
-msgid "Remove All"
-msgstr "Alle Entfernen"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:200
-msgid "Send HTML Mail?"
-msgstr "HTML-Mail senden?"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-msgid "Evolution's addressbook name selection interface."
-msgstr "Evolution Namenauswahlschnittstelle für das Adressbuch."
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr "Factory für die Namenauswahl-Schnittstelle des Adressbuchs"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr "Suchen..."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-msgid "Message Recipients"
-msgstr "Nachrichtenempfänger"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-msgid "Select Names"
-msgstr "Namen wählen"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-msgid "Select name from:"
-msgstr "Name wählen aus:"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:158
-#: mail/mail-search.c:242
-msgid "Search"
-msgstr "Suchen"
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr "123"
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr "a"
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr "b"
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr "c"
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr "d"
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr "e"
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr "f"
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr "g"
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr "h"
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr "i"
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr "j"
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr "k"
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr "l"
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr "m"
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr "n"
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-msgid "o"
-msgstr "o"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr "p"
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr "q"
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-msgid "r"
-msgstr "r"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr "s"
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr "t"
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr "u"
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr "v"
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr "w"
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr "x"
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr "y"
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr "z"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:135
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:230
-#: addressbook/gui/widgets/e-addressbook-view.c:551
-#: addressbook/gui/widgets/e-addressbook-view.c:611
-msgid "Save as VCard"
-msgstr "Als VCard speichern"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:231
-#: addressbook/gui/widgets/e-addressbook-view.c:612
-msgid "Send contact to other"
-msgstr "Kontakt an anderen senden"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:232
-#: addressbook/gui/widgets/e-addressbook-view.c:613
-msgid "Send message to contact"
-msgstr "Nachricht an Kontakt senden"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:233
-#: addressbook/gui/widgets/e-addressbook-view.c:614 mail/message-browser.c:199
-#: ui/evolution-addressbook.xml.h:9 ui/evolution-calendar.xml.h:23
-#: ui/evolution-mail.xml.h:65 ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr "Drucken"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:234
-#: addressbook/gui/widgets/e-addressbook-view.c:615
-msgid "Print Envelope"
-msgstr "Umschlag drucken"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:698
-msgid "* Click here to add a contact *"
-msgstr "* Hier klicken, um einen Kontakt hinzuzufügen *"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:699
-msgid "File As"
-msgstr "Einsortieren unter"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:701
-msgid "Email"
-msgstr "E-Mail"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:702
-msgid "Primary Phone"
-msgstr "Primäres Telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:703
-msgid "Assistant Phone"
-msgstr "Telefon des Assistenten"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:704
-msgid "Business Phone"
-msgstr "Geschäftliches Telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:705
-msgid "Callback Phone"
-msgstr "Rückruf-Telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:706
-msgid "Company Phone"
-msgstr "Firmentelefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:707
-msgid "Home Phone"
-msgstr "Telefon zu Hause"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:708
-msgid "Organization"
-msgstr "Organisation"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:709
-msgid "Business Address"
-msgstr "Geschäftliche Adresse"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:710
-msgid "Home Address"
-msgstr "Adresse zu Hause"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:711
-msgid "Mobile Phone"
-msgstr "Mobiltelefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:712
-msgid "Car Phone"
-msgstr "Autotelefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:715
-msgid "Business Phone 2"
-msgstr "Geschäftliches Telefon 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:716
-msgid "Home Phone 2"
-msgstr "Telefon zu Hause 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:718
-msgid "Other Phone"
-msgstr "Anderes Telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:723
-msgid "TTY"
-msgstr "Telex"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:724
-msgid "Other Address"
-msgstr "Andere Adresse"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:727
-msgid "Web Site"
-msgstr "Website"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:728
-msgid "Department"
-msgstr "Abteilung"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:729
-msgid "Office"
-msgstr "Büro"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:730
-msgid "Title"
-msgstr "Titel"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:731
-msgid "Profession"
-msgstr "Beruf"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:732
-msgid "Manager"
-msgstr "Vorgesetzter"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:734
-msgid "Nickname"
-msgstr "Spitzname"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:735
-msgid "Spouse"
-msgstr "Lebenspartner"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:736
-msgid "Note"
-msgstr "Notiz"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:737
-msgid "Free-busy URL"
-msgstr "Frei/beschäftigt-URL"
-
-#: addressbook/gui/widgets/e-minicard-control.c:282
-msgid "Save in addressbook"
-msgstr "In Adressbuch speichern"
-
-#: addressbook/gui/widgets/e-minicard-view.c:216
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-"\n"
-"\n"
-"In dieser Ansicht gibt es keine Einträge zum Anzeigen.\n"
-"\n"
-"Doppelklicken Sie hier, um einen neuen Kontakt anzulegen."
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:26
-msgid "Card View"
-msgstr "Kartenansicht"
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr "10 Punkt Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr "8 Punkt Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr "Leere Formulare am Ende:"
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr "Textkörper"
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr "Unten:"
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr "Ausmaße:"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr "Schrifart..."
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr "Schrifarten"
-
-#: addressbook/printing/e-contact-print.glade.h:9
-msgid "Footer:"
-msgstr "Fußzeile:"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr "Format"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-msgid "Header"
-msgstr "Kopfzeile"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr "Kopf-/Fußzeile"
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr "Überschriften"
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr "Überschriften für jeden Buchstaben"
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr "Höhe:"
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr "Folgen einander unmittelbar"
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr "Dazunehmen:"
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr "Querformat"
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr "Links:"
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr "Buchstabenreiter an der Seite"
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr "Ränder"
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr "Anzahl Spalten:"
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr "Optionen"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr "Ausrichtung"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr "Seite"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-msgid "Page Setup:"
-msgstr "Seite einrichten:"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr "Papier"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr "Papierquelle:"
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr "Hochformat"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr "Vorschau:"
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr "Mit grauer Schattierung drucken"
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr "Auf geraden Seiten umkehren"
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr "Rechts:"
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr "Abschnitte:"
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr "Schattierung"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-msgid "Size:"
-msgstr "Größe:"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr "Auf einer neuen Seite beginnen"
-
-#: addressbook/printing/e-contact-print.glade.h:38
-msgid "Style name:"
-msgstr "Stilname:"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr "Oben:"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-msgid "Type:"
-msgstr "Typ:"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr "Breite:"
-
-#: addressbook/printing/e-contact-print.glade.h:42
-msgid "label26"
-msgstr "label26"
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr "Fehler bei der Kommunikation mit dem Kalender-Server"
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr "Calendar-Anwendungsblock des Pilot konnte nicht gelesen werden"
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr "ToDo-Anwendungsblock des Pilot konnte nicht gelesen werden"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr "Erinnerung für Ihren Termin um "
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-msgid "Snooze"
-msgstr "Weiterschlafen"
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr "OK"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr "Alarm-Benachrichtigungsdienst"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-msgid "Factory for the alarm notification service"
-msgstr "Factory für den Alarm-Benachrichtigungsdienst."
-
-#: calendar/gui/alarm-notify/notify-main.c:56
-#, c-format
-msgid ""
-"It is %s. The Unix time is %ld right now. We just thought you may like to "
-"know."
-msgstr ""
-"Es ist %s. Die Unix-Zeit ist momentan %ld. Wir dachten nur, dass Sie das "
-"vielleicht wissen wollten."
-
-#: calendar/gui/alarm-notify/notify-main.c:93 calendar/gui/main.c:52
-msgid "Could not initialize GNOME"
-msgstr "GNOME konnte nicht initialisiert werden"
-
-#: calendar/gui/alarm-notify/notify-main.c:108
-msgid "Could not create the alarm notify service factory"
-msgstr "Factory für Alarm-Benachrichtigungsdienst konnte nicht angelegt werden"
-
-#: calendar/gui/calendar-commands.c:266
-msgid "File not found"
-msgstr "Datei nicht gefunden"
-
-#: calendar/gui/calendar-commands.c:290
-msgid "Open calendar"
-msgstr "Kalender öffnen"
-
-#: calendar/gui/calendar-commands.c:332
-msgid "Save calendar"
-msgstr "Kalender speichern"
-
-#: calendar/gui/calendar-commands.c:468
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-"Die Kalender-Ansicht konnte nicht erstellt werden. Bitte überprüfen Sie Ihre "
-"ORBit und OAF Einstellungen. "
-
-#: calendar/gui/calendar-model.c:360 calendar/gui/calendar-model.c:898
-#: calendar/gui/e-calendar-table.c:330
-msgid "Public"
-msgstr "Öffentlich"
-
-#: calendar/gui/calendar-model.c:363 calendar/gui/calendar-model.c:900
-#: calendar/gui/e-calendar-table.c:331
-msgid "Private"
-msgstr "Privat"
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:902
-#: calendar/gui/e-calendar-table.c:332
-msgid "Confidential"
-msgstr "Vertraulich"
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/event-editor.c:1601
-#: calendar/gui/event-editor.c:1628
-#: camel/providers/smtp/camel-smtp-transport.c:221
-msgid "Unknown"
-msgstr "Unbekannt"
-
-#: calendar/gui/calendar-model.c:457
-msgid "N"
-msgstr "N"
-
-#: calendar/gui/calendar-model.c:457
-msgid "S"
-msgstr "S"
-
-#: calendar/gui/calendar-model.c:459
-msgid "E"
-msgstr "O"
-
-#: calendar/gui/calendar-model.c:459
-msgid "W"
-msgstr "W"
-
-#: calendar/gui/calendar-model.c:497 calendar/gui/calendar-model.c:1066
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:352 mail/message-list.c:689
-msgid "High"
-msgstr "Hoch"
-
-#: calendar/gui/calendar-model.c:499 calendar/gui/calendar-model.c:1068
-#: calendar/gui/calendar-model.c:1574
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:353 mail/message-list.c:688
-msgid "Normal"
-msgstr "Normal"
-
-#: calendar/gui/calendar-model.c:501 calendar/gui/calendar-model.c:1070
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:354 mail/message-list.c:687
-msgid "Low"
-msgstr "Niedrig"
-
-#: calendar/gui/calendar-model.c:537 calendar/gui/calendar-model.c:1122
-#: calendar/gui/e-calendar-table.c:406
-msgid "Transparent"
-msgstr "Transparent"
-
-#: calendar/gui/calendar-model.c:540 calendar/gui/calendar-model.c:1124
-#: calendar/gui/e-calendar-table.c:405
-msgid "Opaque"
-msgstr "Opak"
-
-#: calendar/gui/calendar-model.c:638 calendar/gui/calendar-model.c:1176
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:426
-msgid "Not Started"
-msgstr "Nicht gestartet"
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1178
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:427
-msgid "In Progress"
-msgstr "In Bearbeitung"
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1180
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:428
-msgid "Completed"
-msgstr "Abgeschlossen"
-
-#: calendar/gui/calendar-model.c:647 calendar/gui/calendar-model.c:1182
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:429 camel/camel-service.c:544
-#: camel/camel-service.c:580
-msgid "Cancelled"
-msgstr "Storniert"
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:794 e-util/e-time-utils.c:278
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr "%a, %d.%m.%Y %H:%M:%S"
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:797 e-util/e-time-utils.c:287
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr "%a, %d.%m.%Y %I:%M:%S %p"
-
-#: calendar/gui/calendar-model.c:802
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-"Das Datum muss in diesem Format eingegeben werden: \n"
-"\n"
-"%s"
-
-#: calendar/gui/calendar-model.c:882
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr ""
-"Die Klassifizierung muss 'Öffentlich', 'Privat', 'Vertraulich' oder 'Keine' "
-"sein"
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:896 calendar/gui/calendar-model.c:1120
-#: calendar/gui/calendar-model.c:1174 calendar/gui/e-calendar-table.c:329
-#: calendar/gui/e-calendar-table.c:404 mail/mail-account-gui.c:976
-#: mail/mail-accounts.c:120 mail/mail-accounts.c:164
-#: mail/mail-config.glade.h:46 shell/e-shell-view.c:1198
-#: widgets/misc/e-cell-date-edit.c:237 widgets/misc/e-dateedit.c:432
-#: widgets/misc/e-dateedit.c:1341 widgets/misc/e-dateedit.c:1456
-msgid "None"
-msgstr "Keine"
-
-#: calendar/gui/calendar-model.c:970
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-"Die geographische Position muss in diesem Format eingegeben werden: \n"
-"\n"
-"45.436845,125.862501"
-
-#: calendar/gui/calendar-model.c:1010
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr "Der Prozentwert muss zwischen 0 und 100 (einschließlich) sein"
-
-#: calendar/gui/calendar-model.c:1051
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr ""
-"Die Priorität muss 'Hoch', 'Normal', 'Niedrig' oder 'Undefiniert' sein."
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1064
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:355
-msgid "Undefined"
-msgstr "Undefiniert"
-
-#: calendar/gui/calendar-model.c:1105
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr "Die Transparenz muss 'Transparent', 'Opak' oder 'Keine' sein."
-
-#: calendar/gui/calendar-model.c:1576
-msgid "Recurring"
-msgstr "Wiederkehrend"
-
-#: calendar/gui/calendar-model.c:1578
-msgid "Assigned"
-msgstr "Zugewiesen"
-
-#: calendar/gui/calendar-model.c:1584
-msgid "Yes"
-msgstr "Ja"
-
-#: calendar/gui/calendar-model.c:1584
-msgid "No"
-msgstr "Nein"
-
-#: calendar/gui/calendar-summary.c:198
-msgid "%A, %e %B %Y"
-msgstr "%A, %e %B %Y"
-
-#: calendar/gui/calendar-summary.c:207
-msgid "Appointments"
-msgstr "Termine"
-
-#: calendar/gui/calendar-summary.c:245 calendar/gui/calendar-summary.c:251
-msgid "%I:%M%p"
-msgstr "%H.%M"
-
-#: calendar/gui/calendar-summary.c:275 calendar/gui/print.c:948
-#: views/tasks/galview.xml.h:1
-msgid "Tasks"
-msgstr "Aufträge"
-
-#: calendar/gui/calendar-summary.c:443
-msgid "<b>Error loading calendar</b>"
-msgstr "<b>Fehler beim Laden des Kalenders</b>"
-
-#: calendar/gui/calendar-summary.c:455
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr "<b>Fehler beim Laden des Kalenders:<br>Methode wird nicht unterstützt"
-
-#: calendar/gui/calendar-summary.c:622 mail/mail-config.glade.h:24
-msgid "Display"
-msgstr "Anzeige"
-
-#: calendar/gui/calendar-summary.c:627
-msgid "Show appointments"
-msgstr "Termine anzeigen"
-
-#: calendar/gui/calendar-summary.c:635
-msgid "Show tasks"
-msgstr "Aufgaben zeigen"
-
-#: calendar/gui/calendar-summary.c:690
-msgid "Things to do"
-msgstr "Zu erledigen"
-
-#: calendar/gui/calendar-summary.c:721 calendar/gui/e-itip-control.glade.h:7
-msgid "Loading Calendar"
-msgstr "Kalender laden"
-
-#: calendar/gui/control-factory.c:126
-msgid "The URI that the calendar will display"
-msgstr "Der URI, den der Kalender anzeigen wird"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:189
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr "Alarm am %A, %d. %b %Y um %H.%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:196
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr "Hinweis auf Ihren Termin am %A, %d. %b %Y um %H.%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:207
-msgid "No summary available."
-msgstr "Keine Zusammenfassung verfügbar."
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:2
-msgid "Close"
-msgstr "Schließen"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-msgid "Edit appointment"
-msgstr "Termin bearbeiten"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr "Weiterschlaf-Zeit (Minuten)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr "05 Minuten"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr "10 Minuten"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr "12 Stunden (am/pm)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr "15 Minuten"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr "24 Stunden"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr "30 Minuten"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr "60 Minuten"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr "Alarme schweigen nach"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr "Audio-Alarme"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr "Piepsen, wenn Alarmfenster erscheinen."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-msgid "Calendar"
-msgstr "Kalender"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr "Kalender-Vorlieben"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "Farben"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr "Wochenenden komprimieren"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr "Optionen zum Datumsnavigator"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-msgid "Defaults"
-msgstr "Voreinstellungen"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr "Anzeigeoptionen"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:162
-msgid "Due Date"
-msgstr "Fällig am"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr "Weiterschlafen aktivieren für "
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr "Ende des Tages:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr "Erster Tag der Woche:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr "Fr"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:479
-msgid "Friday"
-msgstr "Freitag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr "Markieren"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr "Heute fällige Einträge"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr "Heute fällige Einträge:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr "Noch nicht fällige Einträge"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr "Noch nicht fällige Einträge:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr "Mo"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:475
-msgid "Monday"
-msgstr "Montag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr "Überfällige Einträge"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr "Überfällige Einträge:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:54
-msgid "Pick a color"
-msgstr "Eine Farbe auswählen"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:165 filter/libfilter-i18n.h:45
-#: filter/libfilter-i18n.h:185
-msgid "Priority"
-msgstr "Priorität"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-msgid "Remind me of all appointments"
-msgstr "Mich an alle Termine erinnern,"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-msgid "Reminders"
-msgstr "Erinnerungen"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr "Sa"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:480
-msgid "Saturday"
-msgstr "Samstag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr "Anzeigen"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-msgid "Show appointment end times"
-msgstr "Endzeiten von Terminen anzeigen"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr "Wochennummern zeigen"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr "Anfang des Tages:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr "So"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:481
-msgid "Sunday"
-msgstr "Sonntag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-msgid "TaskPad"
-msgstr "Aufgabenblock"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr "Do"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:478
-msgid "Thursday"
-msgstr "Donnerstag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr "Zeit bis Fälligkeit"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr "Zeit-Unterteilungen:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr "Zeitformat:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr "Di"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:476
-msgid "Tuesday"
-msgstr "Dienstag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr "Visuelle Alarme"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr "Mi"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:477
-msgid "Wednesday"
-msgstr "Mittwoch"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr "Arbeitswoche"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr "Minuten bevor sie auftreten."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:88
-msgid "seconds."
-msgstr "Sekunden."
-
-#: calendar/gui/dialogs/delete-comp.c:70
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr "Sind Sie sicher, dass Sie den Termin \"%s\" löschen wollen?"
-
-#: calendar/gui/dialogs/delete-comp.c:73
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr "Sind Sie sicher, dass Sie diesen unbenannten Termin löschen wollen?"
-
-#: calendar/gui/dialogs/delete-comp.c:79
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr "Sind Sie sicher, dass Sie die Aufgabe `%s' löschen wollen?"
-
-#: calendar/gui/dialogs/delete-comp.c:82
-msgid "Are you sure you want to delete this untitled task?"
-msgstr "Sind Sie sicher, dass Sie diese unbenannte Aufgabe löschen wollen?"
-
-#: calendar/gui/dialogs/delete-comp.c:88
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr "Sind Sie sicher, dass Sie den Journaleintrag `%s' löschen wollen?"
-
-#: calendar/gui/dialogs/delete-comp.c:91
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr ""
-"Sind Sie sicher, dass Sie diesen unbenannten Journaleintrag löschen wollen?"
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr "Wollen Sie die Änderungen speichern?"
-
-#: calendar/gui/dialogs/task-editor.c:709
-msgid "Edit Task"
-msgstr "Aufgabe bearbeiten"
-
-#: calendar/gui/dialogs/task-editor.c:714 calendar/gui/event-editor.c:382
-#, c-format
-msgid "Appointment - %s"
-msgstr "Termin - %s"
-
-#: calendar/gui/dialogs/task-editor.c:717 calendar/gui/event-editor.c:385
-#, c-format
-msgid "Task - %s"
-msgstr "Aufgabe - %s"
-
-#: calendar/gui/dialogs/task-editor.c:720 calendar/gui/event-editor.c:388
-#, c-format
-msgid "Journal entry - %s"
-msgstr "Journal-Eintrag - %s"
-
-#: calendar/gui/dialogs/task-editor.c:734 calendar/gui/event-editor.c:402
-msgid "No summary"
-msgstr "Keine Zusammenfassung"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr "% abgeschlossen:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:158
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr "Klassifikation"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-msgid "Date & Time"
-msgstr "Datum & Zeit"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr "Abgeschlossen am:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-msgid "Pri_vate"
-msgstr "Privat"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-msgid "Progress"
-msgstr "Fortschritt"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr "Öffentlich"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-msgid "Sta_rt Date:"
-msgstr "Anfangsdatum:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-msgid "Su_mmary:"
-msgstr "Zusammenfassung:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr "Aufgabe"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-msgid "URL:"
-msgstr "URL:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr "Vertraulich"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Contacts..."
-msgstr "Kontakte..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-msgid "_Due Date:"
-msgstr "Fällig am:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-msgid "_Priority:"
-msgstr "_Priorität:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "_Status:"
-msgstr "Status:"
-
-#: calendar/gui/e-calendar-table.c:157
-msgid "Categories"
-msgstr "Kategorien"
-
-#: calendar/gui/e-calendar-table.c:159
-msgid "Completion Date"
-msgstr "Abschlussdatum"
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "End Date"
-msgstr "Enddatum"
-
-#: calendar/gui/e-calendar-table.c:161
-msgid "Start Date"
-msgstr "Anfangsdatum"
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Geographical Position"
-msgstr "Geographische Lage"
-
-#: calendar/gui/e-calendar-table.c:164
-msgid "Percent complete"
-msgstr "Fertigstellung in Prozent"
-
-#: calendar/gui/e-calendar-table.c:166
-msgid "Summary"
-msgstr "Zusammenfassung"
-
-#: calendar/gui/e-calendar-table.c:167
-msgid "Transparency"
-msgstr "Transparenz"
-
-#: calendar/gui/e-calendar-table.c:168
-msgid "URL"
-msgstr "URL"
-
-#: calendar/gui/e-calendar-table.c:169
-msgid "Alarms"
-msgstr "Alarme"
-
-#: calendar/gui/e-calendar-table.c:170
-msgid "Click here to add a task"
-msgstr "Hier klicken, um eine Aufgabe hinzuzufügen"
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "0%"
-msgstr "0%"
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "10%"
-msgstr "10%"
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "20%"
-msgstr "20%"
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "30%"
-msgstr "30%"
-
-#: calendar/gui/e-calendar-table.c:378
-#, c-format
-msgid "40%"
-msgstr "40%"
-
-#: calendar/gui/e-calendar-table.c:379
-#, c-format
-msgid "50%"
-msgstr "50%"
-
-#: calendar/gui/e-calendar-table.c:380
-#, c-format
-msgid "60%"
-msgstr "60%"
-
-#: calendar/gui/e-calendar-table.c:381
-#, c-format
-msgid "70%"
-msgstr "70%"
-
-#: calendar/gui/e-calendar-table.c:382
-#, c-format
-msgid "80%"
-msgstr "80%"
-
-#: calendar/gui/e-calendar-table.c:383
-#, c-format
-msgid "90%"
-msgstr "90%"
-
-#: calendar/gui/e-calendar-table.c:384
-#, c-format
-msgid "100%"
-msgstr "100%"
-
-#: calendar/gui/e-calendar-table.c:551
-msgid "Mark Complete"
-msgstr "Als abgeschlossen markieren"
-
-#: calendar/gui/e-calendar-table.c:552
-msgid "Mark the task complete"
-msgstr "Die Aufgabe als abgeschlossen markieren"
-
-#: calendar/gui/e-calendar-table.c:557
-msgid "Edit this task..."
-msgstr "Diese Aufgabe bearbeiten..."
-
-#: calendar/gui/e-calendar-table.c:558
-msgid "Edit the task"
-msgstr "Die Aufgabe bearbeiten"
-
-#: calendar/gui/e-calendar-table.c:560
-#: ui/evolution-task-editor-dialog.xml.h:19
-msgid "Delete this task"
-msgstr "Diese Aufgabe löschen"
-
-#: calendar/gui/e-calendar-table.c:561
-msgid "Delete the task"
-msgstr "Diese Aufgabe löschen"
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:570 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:617
-msgid "am"
-msgstr "AM"
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:573 calendar/gui/e-week-view.c:303
-#: calendar/gui/print.c:616
-msgid "pm"
-msgstr "PM"
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:274 calendar/gui/e-day-view.c:1294
-#: calendar/gui/e-week-view-main-item.c:325
-msgid "%A %d %B"
-msgstr "%A, %d. %B"
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:278 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:334
-msgid "%a %d %b"
-msgstr "%a, %d. %b"
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:282 calendar/gui/e-day-view.c:1321
-#: calendar/gui/e-week-view-main-item.c:348
-msgid "%d %b"
-msgstr "%d. %b"
-
-#: calendar/gui/e-day-view.c:3146 ui/evolution-calendar.xml.h:16
-msgid "New Appointment"
-msgstr "Neuer Termin"
-
-#: calendar/gui/e-day-view.c:3148 calendar/gui/e-week-view.c:3279
-msgid "New All Day Event"
-msgstr "Neues ganztägiges Ereignis"
-
-#: calendar/gui/e-day-view.c:3153 calendar/gui/e-week-view.c:3284
-msgid "Go to Today"
-msgstr "Zum heutigen Tag"
-
-#: calendar/gui/e-day-view.c:3155 calendar/gui/e-week-view.c:3286
-msgid "Go to Date..."
-msgstr "Gehe zu Datum..."
-
-#: calendar/gui/e-day-view.c:3162 calendar/gui/e-week-view.c:3292
-#: ui/evolution-calendar.xml.h:19 ui/evolution-message-composer.xml.h:11
-msgid "Open"
-msgstr "Öffnen"
-
-#: calendar/gui/e-day-view.c:3164 calendar/gui/e-week-view.c:3294
-msgid "Delete this Appointment"
-msgstr "Diesen Termin löschen"
-
-#: calendar/gui/e-day-view.c:3166 calendar/gui/e-week-view.c:3296
-#: ui/evolution-event-editor.xml.h:45
-msgid "Schedule Meeting"
-msgstr "Besprechung ansetzen"
-
-#: calendar/gui/e-day-view.c:3175 calendar/gui/e-week-view.c:3309
-msgid "Make this Occurrence Movable"
-msgstr "Dieses Auftreten beweglich machen"
-
-#: calendar/gui/e-day-view.c:3177 calendar/gui/e-week-view.c:3311
-msgid "Delete this Occurrence"
-msgstr "Dieses Auftreten löschen"
-
-#: calendar/gui/e-day-view.c:3179
-msgid "Delete all Occurrences"
-msgstr "Jedes Auftreten löschen"
-
-#: calendar/gui/e-day-view-time-item.c:519
-#, c-format
-msgid "%02i minute divisions"
-msgstr "%02i Minuten-Unterteilungen"
-
-#: calendar/gui/e-itip-control.c:161
-msgid "I couldn't update your calendar file!\n"
-msgstr "Ihre Kalenderdatei konnte nicht aktualisiert werden!\n"
-
-#: calendar/gui/e-itip-control.c:167 calendar/gui/e-itip-control.c:510
-msgid "Component successfully updated."
-msgstr "Komponente erfolgreich aktualisiert."
-
-#: calendar/gui/e-itip-control.c:173
-msgid "There was an error loading the calendar file."
-msgstr "Beim Laden der Kalenderdatei ist ein Fehler aufgetreten."
-
-#: calendar/gui/e-itip-control.c:197
-msgid "I couldn't open your calendar file!\n"
-msgstr "Ihre Kalenderdatei konnte nicht geöffnet werden!\n"
-
-#: calendar/gui/e-itip-control.c:458 calendar/gui/e-itip-control.c:529
-msgid "I couldn't load your calendar file!\n"
-msgstr "Ihre Kalenderdatei konnte nicht geladen werden!\n"
-
-#: calendar/gui/e-itip-control.c:470
-msgid "I couldn't read your calendar file!\n"
-msgstr "Ihre Kalenderdatei konnte nicht gelesen werden!\n"
-
-#: calendar/gui/e-itip-control.c:483
-msgid "This is a reply from someone who was uninvited!"
-msgstr "Dies ist eine Antwort von einem Uneingeladenen!"
-
-#: calendar/gui/e-itip-control.c:499
-msgid "I couldn't update your calendar store."
-msgstr "Ihr Kalenderspeicher konnte nicht aktualisiert werden."
-
-#: calendar/gui/e-itip-control.c:540
-msgid "I couldn't delete the calendar component!\n"
-msgstr "Die Kalenderkomponente konnte nicht gelöscht werden!\n"
-
-#: calendar/gui/e-itip-control.c:550
-msgid "Component successfully deleted."
-msgstr "Komponente erfolgreich gelöscht."
-
-#: calendar/gui/e-itip-control.c:694
-msgid "I don't recognize this type of calendar component."
-msgstr "Dieser Typ Kalenderkomponente ist unbekannt."
-
-#: calendar/gui/e-itip-control.c:780
-msgid "Add to Calendar"
-msgstr "Zum Kalender hinzufügen"
-
-#: calendar/gui/e-itip-control.c:814
-msgid " Accept "
-msgstr " Annehmen "
-
-#: calendar/gui/e-itip-control.c:815
-msgid " Decline "
-msgstr " Ablehnen "
-
-#: calendar/gui/e-itip-control.c:816
-msgid " Tentative "
-msgstr " Vorläufig "
-
-#: calendar/gui/e-itip-control.c:860
-msgid "Update Calendar"
-msgstr "Kalender aktualisieren"
-
-#: calendar/gui/e-itip-control.c:883
-msgid "Cancel Meeting"
-msgstr "Besprechung absagen"
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, no-c-format
-msgid "%P %%"
-msgstr "%P %%"
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr "--an--"
-
-#: calendar/gui/e-itip-control.glade.h:4
-msgid "Calendar Message"
-msgstr "Kalendermitteilung"
-
-#: calendar/gui/e-itip-control.glade.h:5
-msgid "Date:"
-msgstr "Datum:"
-
-#: calendar/gui/e-itip-control.glade.h:8
-msgid "Loading calendar..."
-msgstr "Kalender wird geladen..."
-
-#: calendar/gui/e-itip-control.glade.h:9
-msgid "Organizer:"
-msgstr "Organisator:"
-
-#: calendar/gui/e-itip-control.glade.h:10
-msgid "Server Message:"
-msgstr "Server-Nachricht:"
-
-#: calendar/gui/e-itip-control.glade.h:11
-msgid "Summary:"
-msgstr "Zusammenfassung:"
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr "datum-ende"
-
-#: calendar/gui/e-itip-control.glade.h:13
-msgid "date-start"
-msgstr "datum-anfang"
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-msgid "Attendee"
-msgstr "Anwesender"
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-msgid "Attendee address"
-msgstr "Adresse des Anwesenden"
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-msgid "Attendees: "
-msgstr "Anwesende:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr ""
-"Besprechung\n"
-"absagen"
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-msgid "Chair"
-msgstr "Vorsitzender"
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-msgid "Meeting Invitations"
-msgstr "Besprechungseinladungen"
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr "Nicht-Teilnehmer"
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr "Eventueller Teilnehmer"
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-msgid "Organizer: "
-msgstr "Organisator:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:14
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-"Ereignis\n"
-"bekanntmachen"
-
-#: calendar/gui/e-meeting-dialog.glade.h:16
-msgid "RSVP"
-msgstr "UAwg"
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid ""
-"Request\n"
-"Meeting"
-msgstr ""
-"Besprechung\n"
-"beantragen"
-
-#: calendar/gui/e-meeting-dialog.glade.h:19
-msgid "Required Participant"
-msgstr "Benötigter Teilnehmer"
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-msgid "Role"
-msgstr "Funktion"
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-msgid ""
-"Schedule\n"
-"Time"
-msgstr ""
-"Termin\n"
-"ansetzen"
-
-#: calendar/gui/e-meeting-dialog.glade.h:23 filter/libfilter-i18n.h:81
-#: filter/libfilter-i18n.h:214 mail/message-list.c:1081
-msgid "Status"
-msgstr "Status"
-
-#: calendar/gui/e-tasks.c:149 calendar/gui/e-tasks.c:469
-#: calendar/gui/e-tasks.c:502
-msgid "All"
-msgstr "Alle"
-
-#: calendar/gui/e-tasks.c:155
-msgid "Category:"
-msgstr "Kategorie:"
-
-#: calendar/gui/e-tasks.c:298
-#, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "Die Aufgaben in `%s' konnten nicht geladen werden"
-
-#: calendar/gui/e-tasks.c:310
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr ""
-"Die Methode, die zum Laden von `%s' benötigt wird, ist nicht unterstützt"
-
-#: calendar/gui/event-editor.c:377
-msgid "Edit Appointment"
-msgstr "Termin bearbeiten"
-
-#: calendar/gui/event-editor.c:449
-msgid "on"
-msgstr "bei"
-
-#: calendar/gui/event-editor.c:474 filter/filter-datespec.c:81
-msgid "day"
-msgstr "Tag"
-
-#: calendar/gui/event-editor.c:601
-msgid "on the"
-msgstr "am"
-
-#: calendar/gui/event-editor.c:608
-msgid "th"
-msgstr "."
-
-#: calendar/gui/event-editor.c:754
-msgid "occurrences"
-msgstr "Auftreten"
-
-#: calendar/gui/event-editor.c:871
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr ""
-"Dieser Termin enthält Wiederholungsregeln, die Evolution nicht bearbeiten "
-"kann."
-
-#: calendar/gui/event-editor.c:1543
-#, c-format
-msgid " %d days"
-msgstr " %d Tage"
-
-#: calendar/gui/event-editor.c:1545
-msgid " 1 day"
-msgstr " 1 Tag"
-
-#: calendar/gui/event-editor.c:1548
-#, c-format
-msgid " %d weeks"
-msgstr " %d Wochen"
-
-#: calendar/gui/event-editor.c:1550
-msgid " 1 week"
-msgstr " 1 Woche"
-
-#: calendar/gui/event-editor.c:1553
-#, c-format
-msgid " %d hours"
-msgstr " %d Stunden"
-
-#: calendar/gui/event-editor.c:1555
-msgid " 1 hour"
-msgstr " 1 Stunde"
-
-#: calendar/gui/event-editor.c:1558
-#, c-format
-msgid " %d minutes"
-msgstr " %d Minuten"
-
-#: calendar/gui/event-editor.c:1560
-msgid " 1 minute"
-msgstr " 1 Minute"
-
-#: calendar/gui/event-editor.c:1563
-#, c-format
-msgid " %d seconds"
-msgstr " %d Sekunden"
-
-#: calendar/gui/event-editor.c:1565
-msgid " 1 second"
-msgstr " 1 Sekunde"
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1588
-msgid "Play a sound"
-msgstr "Einen Klang abspielen"
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1591
-msgid "Show a dialog"
-msgstr "Ein Dialogfenster anzeigen"
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1594
-msgid "Send an email"
-msgstr "Eine E-Mail senden"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1597
-msgid "Run a program"
-msgstr "Ein Programm ausführen"
-
-#: calendar/gui/event-editor.c:1612
-msgid " before start of appointment"
-msgstr " vor Terminbeginn"
-
-#: calendar/gui/event-editor.c:1614
-msgid " after start of appointment"
-msgstr " nach Terminbeginn"
-
-#: calendar/gui/event-editor.c:1622
-msgid " before end of appointment"
-msgstr " vor Terminende"
-
-#: calendar/gui/event-editor.c:1624
-msgid " after end of appointment"
-msgstr " nach Terminende"
-
-#: calendar/gui/event-editor.c:3132 calendar/gui/print.c:1097
-#: calendar/gui/print.c:1099 calendar/gui/print.c:1100
-msgid "%a %b %d %Y"
-msgstr "%a, %d. %b %Y"
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr "Ganztägiges Ereignis"
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-msgid "Appointment"
-msgstr "Termin"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-msgid "Appointment Basics"
-msgstr "Termin-Grundeinstellungen"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-msgid "Custom recurrence"
-msgstr "Benutzerdefinierte Wiederholung"
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr "Alle"
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-msgid "Exceptions"
-msgstr "Ausnahmen"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-msgid "Modify"
-msgstr "Ändern"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-msgid "No recurrence"
-msgstr "Keine Wiederholung"
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-msgid "Preview"
-msgstr "Vorschau"
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Recurrence"
-msgstr "Wiederholung"
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-msgid "Recurrence Rule"
-msgstr "Wiederholungsregel"
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-msgid "Reminder"
-msgstr "Erinnerung"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-msgid "Settings..."
-msgstr "Einstellungen..."
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr "Einfache Wiederholung"
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-msgid "_End time:"
-msgstr "_Endzeit:"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Start time:"
-msgstr "Anfangszeit:"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Starting date:"
-msgstr "Anfangsdatum:"
-
-#. Automatically generated. Do not edit.
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:2
-#: filter/libfilter-i18n.h:87 filter/libfilter-i18n.h:219
-msgid "after"
-msgstr "nach"
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:6
-#: filter/libfilter-i18n.h:88 filter/libfilter-i18n.h:220
-msgid "before"
-msgstr "vor"
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "day(s)"
-msgstr "Tag(e)"
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-msgid "end of appointment"
-msgstr "Ende des Termins"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "for"
-msgstr "für"
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr "für immer"
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-msgid "hour(s)"
-msgstr "Stunde(n)"
-
-#: calendar/gui/event-editor-dialog.glade.h:40
-msgid "label21"
-msgstr "label21"
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "label55"
-msgstr "label55"
-
-#: calendar/gui/event-editor-dialog.glade.h:42 mail/mail-config.glade.h:87
-msgid "minute(s)"
-msgstr "Minute(n)"
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-msgid "month(s)"
-msgstr "Monat(e)"
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "start of appointment"
-msgstr "Beginn des Termins"
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "until"
-msgstr "bis"
-
-#: calendar/gui/event-editor-dialog.glade.h:46
-msgid "week(s)"
-msgstr "Woche(n)"
-
-#: calendar/gui/event-editor-dialog.glade.h:47
-msgid "year(s)"
-msgstr "Jahr(e)"
-
-#: calendar/gui/e-week-view.c:3277 calendar/gui/e-week-view.c:3300
-msgid "New Appointment..."
-msgstr "Neuer Termin..."
-
-#: calendar/gui/e-week-view.c:3313
-msgid "Delete All Occurrences"
-msgstr "Jedes Auftreten löschen"
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:342
-msgid "%d %B"
-msgstr "%d. %B"
-
-#: calendar/gui/gnome-cal.c:234
-msgid "Summary contains"
-msgstr "Zusammenfassung enthält"
-
-#: calendar/gui/gnome-cal.c:235
-msgid "Description contains"
-msgstr "Beschreibung enthält"
-
-#: calendar/gui/gnome-cal.c:236
-msgid "Comment contains"
-msgstr "Kommentar enthält"
-
-#: calendar/gui/gnome-cal.c:237
-msgid "Has category"
-msgstr "Hat Kategorie"
-
-#: calendar/gui/gnome-cal.c:840
-#, c-format
-msgid "Could not open the folder in `%s'"
-msgstr "Der Ordner in `%s' konnte nicht geöffnet werden"
-
-#: calendar/gui/gnome-cal.c:851
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr ""
-"Die Methode, die zum Öffnen von `%s' benötigt wird, wird nicht unterstützt"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr "Eine beispielhafte Bonobo-Komponente, die einen Kalender anzeigt."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-msgid "Evolution calendar executive summary component."
-msgstr "Evolutions Chefsesselansichts-Komponente für den Kalender."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr "iTip-/iMip-Betrachter für den Evolution-Kalender"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr "Evolution-Komponente für die Verwaltung des Kalenders."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-msgid "Factory for the Calendar Summary component."
-msgstr "Factory für die Kalenderzusammenfassungs-Komponente."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-msgid "Factory for the Evolution calendar component."
-msgstr "Factory für die Evolution-Kalender-Komponente."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-msgid "Factory for the calendar iTip view control"
-msgstr "Factory für die Kalender-iTip-Ansichts-Control"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-msgid "Factory for the sample Calendar control"
-msgstr "Factory für die beispielhafte Kalender-Control"
-
-#: calendar/gui/goto-dialog.glade.h:1
-msgid "April"
-msgstr "April"
-
-#: calendar/gui/goto-dialog.glade.h:2
-msgid "August"
-msgstr "August"
-
-#: calendar/gui/goto-dialog.glade.h:3
-msgid "December"
-msgstr "Dezember"
-
-#: calendar/gui/goto-dialog.glade.h:4
-msgid "February"
-msgstr "Februar"
-
-#: calendar/gui/goto-dialog.glade.h:5
-msgid "Go To Date"
-msgstr "Zu Datum gehen"
-
-#: calendar/gui/goto-dialog.glade.h:6
-msgid "Go To Today"
-msgstr "Zum heutigen Tag"
-
-#: calendar/gui/goto-dialog.glade.h:7
-msgid "January"
-msgstr "Januar"
-
-#: calendar/gui/goto-dialog.glade.h:8
-msgid "July"
-msgstr "Juli"
-
-#: calendar/gui/goto-dialog.glade.h:9
-msgid "June"
-msgstr "Juni"
-
-#: calendar/gui/goto-dialog.glade.h:10
-msgid "March"
-msgstr "März"
-
-#: calendar/gui/goto-dialog.glade.h:11
-msgid "May"
-msgstr "Mai"
-
-#: calendar/gui/goto-dialog.glade.h:12
-msgid "November"
-msgstr "November"
-
-#: calendar/gui/goto-dialog.glade.h:13
-msgid "October"
-msgstr "Oktober"
-
-#: calendar/gui/goto-dialog.glade.h:14
-msgid "September"
-msgstr "September"
-
-#: calendar/gui/print.c:300
-msgid "1st"
-msgstr "1."
-
-#: calendar/gui/print.c:300
-msgid "2nd"
-msgstr "2."
-
-#: calendar/gui/print.c:300
-msgid "3rd"
-msgstr "3."
-
-#: calendar/gui/print.c:300
-msgid "4th"
-msgstr "4."
-
-#: calendar/gui/print.c:300
-msgid "5th"
-msgstr "5."
-
-#: calendar/gui/print.c:301
-msgid "6th"
-msgstr "6."
-
-#: calendar/gui/print.c:301
-msgid "7th"
-msgstr "7."
-
-#: calendar/gui/print.c:301
-msgid "8th"
-msgstr "8."
-
-#: calendar/gui/print.c:301
-msgid "9th"
-msgstr "9."
-
-#: calendar/gui/print.c:301
-msgid "10th"
-msgstr "10."
-
-#: calendar/gui/print.c:302
-msgid "11th"
-msgstr "11."
-
-#: calendar/gui/print.c:302
-msgid "12th"
-msgstr "12."
-
-#: calendar/gui/print.c:302
-msgid "13th"
-msgstr "13."
-
-#: calendar/gui/print.c:302
-msgid "14th"
-msgstr "14."
-
-#: calendar/gui/print.c:302
-msgid "15th"
-msgstr "15."
-
-#: calendar/gui/print.c:303
-msgid "16th"
-msgstr "16."
-
-#: calendar/gui/print.c:303
-msgid "17th"
-msgstr "17."
-
-#: calendar/gui/print.c:303
-msgid "18th"
-msgstr "18."
-
-#: calendar/gui/print.c:303
-msgid "19th"
-msgstr "19."
-
-#: calendar/gui/print.c:303
-msgid "20th"
-msgstr "20."
-
-#: calendar/gui/print.c:304
-msgid "21st"
-msgstr "21."
-
-#: calendar/gui/print.c:304
-msgid "22nd"
-msgstr "22."
-
-#: calendar/gui/print.c:304
-msgid "23rd"
-msgstr "23."
-
-#: calendar/gui/print.c:304
-msgid "24th"
-msgstr "24."
-
-#: calendar/gui/print.c:304
-msgid "25th"
-msgstr "25."
-
-#: calendar/gui/print.c:305
-msgid "26th"
-msgstr "26."
-
-#: calendar/gui/print.c:305
-msgid "27th"
-msgstr "27."
-
-#: calendar/gui/print.c:305
-msgid "28th"
-msgstr "28."
-
-#: calendar/gui/print.c:305
-msgid "29th"
-msgstr "29."
-
-#: calendar/gui/print.c:305
-msgid "30th"
-msgstr "30."
-
-#: calendar/gui/print.c:306
-msgid "31st"
-msgstr "31."
-
-#: calendar/gui/print.c:362
-msgid "Su"
-msgstr "So"
-
-#: calendar/gui/print.c:362
-msgid "Mo"
-msgstr "Mo"
-
-#: calendar/gui/print.c:362
-msgid "Tu"
-msgstr "Di"
-
-#: calendar/gui/print.c:362
-msgid "We"
-msgstr "Mi"
-
-#: calendar/gui/print.c:362
-msgid "Th"
-msgstr "Do"
-
-#: calendar/gui/print.c:362
-msgid "Fr"
-msgstr "Fr"
-
-#: calendar/gui/print.c:362
-msgid "Sa"
-msgstr "Sa"
-
-#. Day
-#: calendar/gui/print.c:1078
-msgid "Current day (%a %b %d %Y)"
-msgstr "Aktueller Tag (%a, %d. %b %Y)"
-
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1096
-msgid "%a %b %d"
-msgstr "%a, %d. %b"
-
-#: calendar/gui/print.c:1093
-msgid "%a %d %Y"
-msgstr "%a, %d. %Y"
-
-#: calendar/gui/print.c:1104
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr "Aktuelle Woche (%s - %s)"
-
-#. Month
-#: calendar/gui/print.c:1112
-msgid "Current month (%b %Y)"
-msgstr "Aktueller Monat (%b %Y)"
-
-#. Year
-#: calendar/gui/print.c:1119
-msgid "Current year (%Y)"
-msgstr "Aktuelles Jahr (%Y)"
-
-#: calendar/gui/print.c:1156
-msgid "Print Calendar"
-msgstr "Kalender drucken"
-
-#: calendar/gui/print.c:1321 mail/mail-callbacks.c:1447
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:24
-msgid "Print Preview"
-msgstr "Druckvorschau"
-
-#: calendar/gui/tasks-control.c:108
-msgid "The URI of the tasks folder to display"
-msgstr "Der URI, den der Aufgabenordner anzeigen wird"
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-"Evolution hat die Aufgaben aus Ihrem Kalenderordner entnommen und sie "
-"automatisch in den neuen Aufgaben-Ordner migriert."
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-"Evolution hat versucht, die Aufgaben aus Ihrem Kalenderordner zu entnehmen "
-"und sie in den neuen Aufgaben-Ordner migriert.\n"
-"Einige Aufgaben konnten nicht migriert werden, so dass sich dieser Vorgang "
-"vielleicht noch einmal wiederholen wird."
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-"`%s' konnte nicht geöffnet werden; es werden keine Objekte aus dem "
-"Kalenderordner in den Aufgaben-Ordner migriert."
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-"Die zum Laden von `%s' benötigte Methode ist nicht unterstützt; keine "
-"Objekte aus dem Kalenderordner werden in den Aufgaben-Ordner migriert werden."
-
-#: calendar/gui/weekday-picker.c:315 calendar/gui/weekday-picker.c:410
-msgid "SMTWTFS"
-msgstr "SMDMDFS"
-
-#: calendar/pcs/query.c:218
-msgid "time-now expects 0 arguments"
-msgstr "time-now erwartet 0 Argumente"
-
-#: calendar/pcs/query.c:242
-msgid "make-time expects 1 argument"
-msgstr "make-time erwartet 1 argument"
-
-#: calendar/pcs/query.c:247
-msgid "make-time expects argument 1 to be a string"
-msgstr "make-time erwartet, dass Argument 1 eine Zeichenkette ist"
-
-#: calendar/pcs/query.c:255
-msgid "make-time argument 1 must be an ISO 8601 date/time string"
-msgstr "Argument 1 von make-time muss eine Datum-/Zeit-Zeichenkette nach ISO 8601 sein"
-
-#: calendar/pcs/query.c:281
-msgid "time-add-day expects 2 arguments"
-msgstr "time-add-day erwartet zwei Argumente"
-
-#: calendar/pcs/query.c:286
-msgid "time-add-day expects argument 1 to be a time_t"
-msgstr "time-add-day erwartet, dass Argument 1 ein time_t ist"
-
-#: calendar/pcs/query.c:293
-msgid "time-add-day expects argument 2 to be an integer"
-msgstr "time-add-day erwartet, dass Argument 2 eine Ganzzahl ist"
-
-#: calendar/pcs/query.c:318
-msgid "time-day-begin expects 1 argument"
-msgstr "time-day-begin erwartet 1 Argument"
-
-#: calendar/pcs/query.c:323
-msgid "time-day-begin expects argument 1 to be a time_t"
-msgstr "time-day-begin erwartet, dass Argument 1 ein time_t ist"
-
-#: calendar/pcs/query.c:348
-msgid "time-day-end expects 1 argument"
-msgstr "time-day-end erwartet 1 Argument"
-
-#: calendar/pcs/query.c:353
-msgid "time-day-end expects argument 1 to be a time_t"
-msgstr "time-day-end erwartet, dass Argument 1 ein time_t ist"
-
-#: calendar/pcs/query.c:389
-msgid "get-vtype expects 0 arguments"
-msgstr "get-vtype erwartet 0 Argumente"
-
-#: calendar/pcs/query.c:472
-msgid "occur-in-time-range? expects 2 arguments"
-msgstr "occur-in-time-range? erwartet 2 Argumente"
-
-#: calendar/pcs/query.c:477
-msgid "occur-in-time-range? expects argument 1 to be a time_t"
-msgstr "occur-in-time-range? erwartet, dass Argument 1 ein time_t ist"
-
-#: calendar/pcs/query.c:484
-msgid "occur-in-time-range? expects argument 2 to be a time_t"
-msgstr "occur-in-time-range? erwartet, dass Argument 2 ein time_t ist"
-
-#: calendar/pcs/query.c:611
-msgid "contains? expects 2 arguments"
-msgstr "contains? erwartet 2 Argumente"
-
-#: calendar/pcs/query.c:616
-msgid "contains? expects argument 1 to be a string"
-msgstr "contains? erwartet, dass Argument 1 eine Zeichenkette ist"
-
-#: calendar/pcs/query.c:623
-msgid "contains? expects argument 2 to be a string"
-msgstr "contains? erwartet, dass Argument 2 eine Zeichenkette is"
-
-#: calendar/pcs/query.c:640
-msgid ""
-"contains? expects argument 1 to be one of \"any\", \"summary\", "
-"\"description\""
-msgstr "contains? erwartet, dass Argument 2 entweder \"any\", \"summary\" oder \"description\" ist"
-
-#: calendar/pcs/query.c:678
-msgid "has-categories? expects at least 1 argument"
-msgstr "has-categories? erwartet mindestens ein Argument"
-
-#: calendar/pcs/query.c:684
-msgid "has-categories? expects all arguments to be strings"
-msgstr "has-categories? erwartet, dass alle Argumente Zeichenketten sin"
-
-#: calendar/pcs/query.c:932
-msgid "Evaluation of the search expression did not yield a boolean value"
-msgstr "Die Auswertung des Suchausdrucks ergab keinen Wahrheitswert"
-
-#: camel/camel-cipher-context.c:171
-msgid "Signing is not supported by this cipher"
-msgstr "Signieren wird von dieser Verschlüsselung nicht unterstützt"
-
-#: camel/camel-cipher-context.c:211
-msgid "Clearsigning is not supported by this cipher"
-msgstr "Klarsignieren wird von dieser Verschlüsselung nicht unterstützt"
-
-#: camel/camel-cipher-context.c:251
-msgid "Verifying is not supported by this cipher"
-msgstr "Prüfen wird von dieser Verschlüsselung nicht unterstützt"
-
-#: camel/camel-cipher-context.c:294
-msgid "Encryption is not supported by this cipher"
-msgstr "Verschlüsseln wird von dieser Verschlüsselung nicht unterstützt"
-
-#: camel/camel-cipher-context.c:336
-msgid "Decryption is not supported by this cipher"
-msgstr "Entziffern wird von dieser Verschlüsselung nicht unterstützt"
-
-#: camel/camel-disco-store.c:271
-msgid "You must be working online to complete this operation"
-msgstr "Sie müssen online arbeiten, um diesen Vorgang zu Ende zu bringen"
-
-#: camel/camel-filter-driver.c:534 camel/camel-filter-driver.c:543
-msgid "Syncing folders"
-msgstr "Ordner werden synchronisiert"
-
-#: camel/camel-filter-driver.c:643
-msgid "Unable to open spool folder"
-msgstr "Der Spool-Ordner kann nicht geöffnet werden"
-
-#: camel/camel-filter-driver.c:652
-msgid "Unable to process spool folder"
-msgstr "Der Spool-Ordner kann nicht verarbeitet werden"
-
-#: camel/camel-filter-driver.c:666
-msgid "Getting message %d (%d%%)"
-msgstr "Nachricht %d wird abgerufen (%d%%)"
-
-#: camel/camel-filter-driver.c:670 camel/camel-filter-driver.c:679
-#, c-format
-msgid "Failed message %d"
-msgstr "Fehlgeschlagen bei Nachricht %d"
-
-#: camel/camel-filter-driver.c:671
-msgid "Cannot open message"
-msgstr "Nachricht kann nicht geöffnet werden"
-
-#: camel/camel-filter-driver.c:690 camel/camel-filter-driver.c:788
-msgid "Syncing folder"
-msgstr "Ordner wird synchronisiert"
-
-#: camel/camel-filter-driver.c:694 camel/camel-filter-driver.c:793
-msgid "Complete"
-msgstr "Abgeschlossen"
-
-#: camel/camel-filter-driver.c:748
-#, c-format
-msgid "Getting message %d of %d"
-msgstr "Nachricht %d von %d wird abgerufen"
-
-#: camel/camel-filter-driver.c:753 camel/camel-filter-driver.c:771
-#, c-format
-msgid "Failed at message %d of %d"
-msgstr "Fehlgeschlagen bei Nachricht %d von %d"
-
-#: camel/camel-filter-driver.c:866
-#, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr "Fehler beim Verarbeiten des Filters: %s: %s"
-
-#: camel/camel-filter-driver.c:871
-#, c-format
-msgid "Error executing filter: %s: %s"
-msgstr "Fehler beim Ausführen des Filters: %s: %s"
-
-#: camel/camel-filter-search.c:439 camel/camel-filter-search.c:445
-#, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr "Fehler beim Ausführen einer Filtersuche: %s: %s"
-
-#: camel/camel-folder-search.c:328
-#, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-"Suchausdruck kann nicht verarbeitet werden: %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:338
-#, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr ""
-"Fehler beim Ausführen eines Suchausdrucks: %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:485 camel/camel-folder-search.c:513
-msgid "(match-all) requires a single bool result"
-msgstr "(match-all) verlangt einen einzelnen Wahrheitswert als Ergebnis"
-
-#: camel/camel-folder-search.c:559
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr "Abfrage wird auf unbekannte Kopfzeile ausgeführt: %s"
-
-#: camel/camel-folder-search.c:670 camel/camel-folder-search.c:714
-msgid "Invalid type in body-contains, expecting string"
-msgstr "Ungültiger Typ in body-contains, Zeichenkette wurde erwartet"
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:92 camel/camel-lock.c:111 camel/camel-movemail.c:138
-#: camel/camel-movemail.c:185
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "Lockdatei für %s konnte nicht angelegt werden: %s"
-
-#: camel/camel-lock.c:151 camel/camel-movemail.c:219
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr ""
-"Zeitüberschreitung beim Versuch, eine Lockdatei auf %s zu erhalten. "
-"Versuchen Sie es später noch einmal."
-
-#: camel/camel-lock.c:201
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr "fcntl(2)-Sperre konnte nicht erhalten werden: %s"
-
-#: camel/camel-lock.c:255
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr "flock(2)-Sperre konnte nicht erhalten werden: %s"
-
-#: camel/camel-movemail.c:101
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr "Maildatei %s konnte nicht überprüft werden: %s"
-
-#: camel/camel-movemail.c:148
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr "Maildatei %s konnte nicht geöffnet werden: %s"
-
-#: camel/camel-movemail.c:158
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr "Temporäre Maildatei %s konnte nicht geöffnet werden: %s"
-
-#: camel/camel-movemail.c:199
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr "Lockdatei für %s konnte nicht getestet werden: %s"
-
-#: camel/camel-movemail.c:245
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr "Fehler beim Lesen der Maildatei: %s"
-
-#: camel/camel-movemail.c:256
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr "Fehler beim Schreiben der temporären Maildatei: %s"
-
-#: camel/camel-movemail.c:274
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr "Mail konnte nicht in temporärer Datei %s gespeichert werden: %s"
-
-#: camel/camel-movemail.c:306
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr "Pipe konnte nicht angelegt werden: %s"
-
-#: camel/camel-movemail.c:318
-#, c-format
-msgid "Could not fork: %s"
-msgstr "forK() konnte nicht durchgeführt werden: %s"
-
-#: camel/camel-movemail.c:356
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr "Movemail-Programm fehlgeschlagen: %s"
-
-#: camel/camel-movemail.c:357
-msgid "(Unknown error)"
-msgstr "(Unbekannter Fehler)"
-
-#: camel/camel-movemail.c:587
-#, c-format
-msgid "Error copying mail temp file: %s"
-msgstr "Fehler beim Kopieren der temporären Maildatei: %s"
-
-#: camel/camel-pgp-context.c:190
-#, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr "Bitte geben Sie Ihre %s-Passphrase für %s ein."
-
-#: camel/camel-pgp-context.c:193
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr "Bitte geben Sie Ihre %s-Passphrase ein."
-
-#: camel/camel-pgp-context.c:511
-msgid "No plaintext to sign."
-msgstr "Kein Klartext zum Signieren."
-
-#: camel/camel-pgp-context.c:518 camel/camel-pgp-context.c:690
-#: camel/camel-pgp-context.c:1057 camel/camel-pgp-context.c:1269
-msgid "No password provided."
-msgstr "Kein Passwort angegeben."
-
-#: camel/camel-pgp-context.c:524 camel/camel-pgp-context.c:696
-#: camel/camel-pgp-context.c:879 camel/camel-pgp-context.c:1064
-#: camel/camel-pgp-context.c:1276
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr "Pipe zu GPG/PGP konnte nicht angelegt werden: %s"
-
-#: camel/camel-pgp-context.c:683
-msgid "No plaintext to clearsign."
-msgstr "Kein Klartext zum Klarsignieren."
-
-#: camel/camel-pgp-context.c:873
-msgid "No plaintext to verify."
-msgstr "Kein Klartext zum Prüfen."
-
-#: camel/camel-pgp-context.c:890
-#, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "Temporäre Datei konnte nicht angelegt werden: %s"
-
-#: camel/camel-pgp-context.c:1047
-msgid "No plaintext to encrypt."
-msgstr "Kein Klartext zum Verschlüsseln."
-
-#: camel/camel-pgp-context.c:1073
-msgid "No recipients specified"
-msgstr "Keine Empfänger angegeben"
-
-#: camel/camel-pgp-context.c:1261
-msgid "No ciphertext to decrypt."
-msgstr "Kein codierter Text zum Entziffern."
-
-#: camel/camel-provider.c:131
-#, c-format
-msgid "Could not load %s: Module loading not supported on this system."
-msgstr ""
-"%s konnte nicht geladen werden: Laden von Modulen wird von diesem System "
-"nicht unterstützt."
-
-#: camel/camel-provider.c:140
-#, c-format
-msgid "Could not load %s: %s"
-msgstr "%s konnte nicht geladen werden: %s"
-
-#: camel/camel-provider.c:148
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr "%s konnte nicht geladen werden: Kein Initialisationscode im Modul."
-
-#: camel/camel-remote-store.c:191
-#, c-format
-msgid "%s server %s"
-msgstr "%s-Server %s"
-
-#: camel/camel-remote-store.c:195
-#, c-format
-msgid "%s service for %s on %s"
-msgstr "%s-Dienst für %s auf %s"
-
-#: camel/camel-remote-store.c:252
-msgid "Connection cancelled"
-msgstr "Verbindung abgebrochen"
-
-#: camel/camel-remote-store.c:255
-#: camel/providers/smtp/camel-smtp-transport.c:269
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr "Verbindung zu %s (Port %d) konnte nicht hergestellt werden: %s"
-
-#: camel/camel-remote-store.c:256
-msgid "(unknown host)"
-msgstr "(unbekannter Rechner)"
-
-#: camel/camel-remote-store.c:337 camel/camel-remote-store.c:399
-#: camel/camel-remote-store.c:470
-#: camel/providers/imap/camel-imap-command.c:287
-msgid "Operation cancelled"
-msgstr "Vorgang abgebrochen"
-
-#: camel/camel-remote-store.c:476
-msgid "Server unexpectedly disconnected"
-msgstr "Verbindung zum Server unerwartet getrennt"
-
-#: camel/camel-sasl-anonymous.c:33
-msgid "Anonymous"
-msgstr "Anonym"
-
-#: camel/camel-sasl-anonymous.c:35
-msgid "This option will connect to the server using an anonymous login."
-msgstr "Diese Option verbindet zum Server unter einem anonymen Zugang."
-
-#: camel/camel-sasl-anonymous.c:110 camel/camel-sasl-plain.c:87
-msgid "Authentication failed."
-msgstr "Legitimation fehlgeschlagen."
-
-#: camel/camel-sasl-anonymous.c:119
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-"Ungültige E-Mail-Adressverfolgungs-Information:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:131
-#, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr ""
-"Ungültige opake Verfolgungsinformation:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:143
-#, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr ""
-"Ungültige Verfolgungsinformation\n"
-"%s"
-
-#: camel/camel-sasl-cram-md5.c:35
-msgid "CRAM-MD5"
-msgstr "CRAM-MD5"
-
-#: camel/camel-sasl-cram-md5.c:37
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-"Dies verbindet mit dem SMTP-Server und benutzt, falls es der Server "
-"unterstützt, ein sicheres CRAM-MD5-Passwort."
-
-#: camel/camel-sasl-digest-md5.c:43
-msgid "DIGEST-MD5"
-msgstr "DIGEST-MD5"
-
-#: camel/camel-sasl-digest-md5.c:45
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-"Dies verbindet mit dem SMTP-Server und benutzt, falls es der Server "
-"unterstützt, ein sicheres DIGEST-MD5-Passwort."
-
-#: camel/camel-sasl-digest-md5.c:810
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr "Server-Herausforderung zu lang (>2048 Oktette)\n"
-
-#: camel/camel-sasl-digest-md5.c:819
-msgid "Server challenge invalid\n"
-msgstr "Server-Herausforderung ungültig\n"
-
-#: camel/camel-sasl-digest-md5.c:825
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr ""
-"Server-Herausforderung enthielt ungültiges \"Quality-of-Protection\"-Token\n"
-
-#: camel/camel-sasl-digest-md5.c:847
-msgid "Server response did not contain authorization data\n"
-msgstr "Serverantwort enthielt keine Legitimationsdaten\n"
-
-#: camel/camel-sasl-digest-md5.c:865
-msgid "Server response contained incomplete authorization data\n"
-msgstr "Serverantwort enthielt unvollständige Legitimationsdaten\n"
-
-#: camel/camel-sasl-digest-md5.c:875
-msgid "Server response does not match\n"
-msgstr "Antwort des Servers passt nicht\n"
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "Kerberos 4"
-msgstr "Kerberos 4"
-
-#: camel/camel-sasl-kerberos4.c:42
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr ""
-"Dies verbindet mit dem Server und benutzt Kerberos 4, um sich zu "
-"legitimieren."
-
-#: camel/camel-sasl-kerberos4.c:161
-#, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr ""
-"Kerberos-Ticket konnte nicht erhalten werden:\n"
-"%s"
-
-#: camel/camel-sasl-kerberos4.c:218
-#: camel/providers/imap/camel-imap-store.c:433
-msgid "Bad authentication response from server."
-msgstr "Ungültige Legitimationsantwort vom Server."
-
-#: camel/camel-sasl-login.c:32
-msgid "NT Login"
-msgstr "NT-Login"
-
-#: camel/camel-sasl-login.c:34 camel/camel-sasl-plain.c:34
-msgid "This option will connect to the server using a simple password."
-msgstr "Diese Option verbindet zum Server mit einem einfachen Passwort."
-
-#: camel/camel-sasl-login.c:127
-msgid "Unknown authentication state."
-msgstr "Unbekannter Legitimationszustand."
-
-#: camel/camel-search-private.c:111
-#, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr "Fehler beim Compilieren eines regulären Ausdrucks: %s: %s"
-
-#: camel/camel-service.c:154
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr "URL '%s' benötigt einen Benutzernamen-Teil"
-
-#: camel/camel-service.c:162
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr "URL '%s' braucht einen Rechnernamen-Teil"
-
-#: camel/camel-service.c:170
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr "URL '%ss' braucht einen Pfad-Teil"
-
-#: camel/camel-service.c:548
-#, c-format
-msgid "Resolving: %s"
-msgstr "%s wird aufgelöst"
-
-#: camel/camel-service.c:575
-#, c-format
-msgid "Failure in name lookup: %s"
-msgstr "Fehler beim Auflösen eines Namens: %s"
-
-#: camel/camel-service.c:600
-#, c-format
-msgid "Host lookup failed: %s: host not found"
-msgstr "Finden eines Rechners fehlgeschlagen: %s: Rechner nicht gefunden"
-
-#: camel/camel-service.c:602
-#, c-format
-msgid "Host lookup failed: %s: unknown reason"
-msgstr "Finden eines Rechners fehlgeschlagen: %s: unbekannter Grund"
-
-#: camel/camel-session.c:68
-msgid "Virtual folder email provider"
-msgstr "E-Mail-Quelle: Virtueller Ordner"
-
-#: camel/camel-session.c:70
-msgid "For reading mail as a query of another set of folders"
-msgstr "Zum Lesen von Mail in Form einer Abfrage über andere Ordner"
-
-#: camel/camel-session.c:295 camel/camel-session.c:364
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr "Keine Quelle für Protokoll `%s' verfügbar"
-
-#: camel/camel-session.c:479
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"Verzeichnis %s konnte nicht angelegt werden:\n"
-"%s"
-
-#: camel/camel-smime-context.c:194
-#, c-format
-msgid "Please enter your password for %s"
-msgstr "Bitte geben Sie Ihr Passwort für %s ein"
-
-#: camel/camel-smime-context.c:210
-msgid "Error hashing password."
-msgstr "Fehler beim Hashen des Passworts."
-
-#: camel/camel-smime-context.c:219
-msgid "Invalid password."
-msgstr "Ungültiges Passwort."
-
-#: camel/camel-smime-context.c:327
-#, c-format
-msgid "Could not sign: certificate not found for \"%s\"."
-msgstr "Signieren nicht möglich: kein Zertifikat gefunden für \"%s\""
-
-#: camel/camel-smime-context.c:343
-msgid "Could not sign: failed to create content info."
-msgstr "Signieren nicht möglich: Inhaltsinformation konnte nicht erzeugt werden."
-
-#: camel/camel-smime-context.c:350
-msgid "Could not sign: failed to create signing context."
-msgstr "Signieren nicht möglich: Signierkontext konnte nicht angelegt werden."
-
-#: camel/camel-smime-context.c:356
-msgid "Could not sign: failed to create signature."
-msgstr "Signieren nicht möglich: Signatur konnte nicht erzeugt werden."
-
-#: camel/camel-smime-context.c:383
-msgid "'clearsign' is not supported by S/MIME."
-msgstr "'Klarsignieren' wird von S/MIME nicht unterstützt."
-
-#: camel/camel-smime-context.c:528
-msgid "Could not encrypt: failed to create enveloped data."
-msgstr "Verschlüsseln nicht möglich: umhüllte Daten konnten nicht angelegt werden."
-
-#: camel/camel-smime-context.c:535
-msgid "Could not encrypt: failed to create encryption context."
-msgstr "Verschlüsseln nicht möglich: Verschlüsselungskontext konnte nicht angelegt werden."
-
-#: camel/camel-smime-context.c:570
-#, c-format
-msgid "Could not encrypt data: invalid user key: \"%s\"."
-msgstr "Verschlüsseln nicht möglich: ungültiger Benutzerschlüssel: \"%s\"."
-
-#: camel/camel-smime-context.c:576
-msgid "Could not encrypt: encoding failed."
-msgstr "Verschlüsseln nicht möglich: Kodieren schlug fehl."
-
-#: camel/camel-smime-context.c:626
-msgid "Failed to decrypt: Unknown"
-msgstr "Entschlüsseln nicht möglich: Unbekannt"
-
-#. Fill in the new fields
-#: camel/camel-store.c:378 mail/mail-ops.c:1007 mail/mail-ops.c:1014
-#: mail/mail-ops.c:1032 mail/mail-ops.c:1033
-msgid "Trash"
-msgstr "Müll"
-
-#: camel/camel-tcp-stream-ssl.c:348
-#, c-format
-msgid ""
-"EMail: %s\n"
-"Common Name: %s\n"
-"Organization Unit: %s\n"
-"Organization: %s\n"
-"Locality: %s\n"
-"State: %s\n"
-"Country: %s"
-msgstr ""
-"E-Mail: %s\n"
-"Üblicher Name: %s\n"
-"Organisationseinheit: %s\n"
-"Organisation: %s\n"
-"Örtlichkeit: %s\n"
-"Bundesland/-staat: %s\n"
-"Land: %s"
-
-#. construct our user prompt
-#: camel/camel-tcp-stream-openssl.c:428 camel/camel-tcp-stream-ssl.c:364
-#, c-format
-msgid ""
-"Bad certificate from %s:\n"
-"\n"
-"%s\n"
-"\n"
-"Do you wish to accept anyway?"
-msgstr ""
-"Ungültiges Zertifikat von %s:\n"
-"\n"
-"%s\n"
-"\n"
-"Möchten Sie trotzdem akzeptieren?"
-
-#: camel/camel-tcp-stream-openssl.c:423
-#, c-format
-msgid ""
-"Issuer: %s\n"
-"Subject: %s"
-msgstr ""
-"Ausgabestelle: %s\n"
-"Betreff: %s"
-
-#: camel/camel-url.c:289
-#, c-format
-msgid "Could not parse URL `%s'"
-msgstr "URL `%s' konnte nicht geparst werden"
-
-#: camel/camel-vee-folder.c:451
-#, c-format
-msgid "No such message %s in %s"
-msgstr "Nachricht %s gibt es in %s nicht"
-
-#: camel/camel-vee-folder.c:546
-#, c-format
-msgid "No such message: %s"
-msgstr "Nachricht gibt es nicht: %s"
-
-#: camel/camel-vtrash-folder.c:109
-msgid "You cannot copy messages from this trash folder."
-msgstr "Sie können keine Nachrichten aus diesem Müllordner kopieren."
-
-#: camel/providers/imap/camel-imap-message-cache.c:150
-#, c-format
-msgid "Could not open cache directory: %s"
-msgstr "Cache-Verzeichnis konnte nicht geöffnet werden: %s"
-
-#: camel/providers/imap/camel-imap-command.c:232
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "Unerwartete Antwort von IMAP-Server: %s"
-
-#: camel/providers/imap/camel-imap-command.c:240
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr "IMAP-Befehl fehlgeschlagen: %s"
-
-#: camel/providers/imap/camel-imap-command.c:241 shell/e-storage.c:481
-msgid "Unknown error"
-msgstr "Unbekannter Fehler"
-
-#: camel/providers/imap/camel-imap-command.c:295
-msgid "Server response ended too soon."
-msgstr "Antwort des Servers endete zu früh."
-
-#: camel/providers/imap/camel-imap-command.c:487
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr "Antwort des IMAP-Servers enthielt keine %s-Information"
-
-#: camel/providers/imap/camel-imap-command.c:524
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr "Unerwartete OK-Antwort von IMAP-Server: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:172
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr "Verzeichnis %s konnte nicht angelegt werden: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:191
-#, c-format
-msgid "Could not load summary for %s"
-msgstr "Zusammenfassung für %s konnte nicht geladen werden"
-
-#: camel/providers/imap/camel-imap-folder.c:364
-msgid "Scanning IMAP folder"
-msgstr "IMAP-Ordner wird abgetastet"
-
-#: camel/providers/imap/camel-imap-folder.c:1047
-#: camel/providers/imap/camel-imap-folder.c:1281
-msgid "This message is not currently available"
-msgstr "Diese Nachricht ist derzei nicht verfügbar"
-
-#: camel/providers/imap/camel-imap-folder.c:1075
-#: camel/providers/imap/camel-imap-folder.c:1314
-msgid "Could not find message body in FETCH response."
-msgstr "Nachrichtenrumpf in Antwort auf FETCH konnte nicht gefunden werden."
-
-#: camel/providers/imap/camel-imap-provider.c:43 mail/mail-config.glade.h:13
-msgid "Checking for new mail"
-msgstr "Nach neuer Mail sehen"
-
-#: camel/providers/imap/camel-imap-provider.c:45
-msgid "Check for new messages in all folders"
-msgstr "In allen Ordnern nach neuer Mail sehen"
-
-#: camel/providers/imap/camel-imap-provider.c:48 shell/e-shell-view.c:552
-msgid "Folders"
-msgstr "Ordner"
-
-#: camel/providers/imap/camel-imap-provider.c:50
-msgid "Show only subscribed folders"
-msgstr "Nur abonnierte Ordner anzeigen"
-
-#: camel/providers/imap/camel-imap-provider.c:52
-msgid "Override server-supplied folder namespace"
-msgstr "Über vom Server vorgegebenen Ordner-Namensraum hinwegsetzen"
-
-#: camel/providers/imap/camel-imap-provider.c:54
-msgid "Namespace"
-msgstr "Namensraum"
-
-#: camel/providers/imap/camel-imap-provider.c:57
-msgid "Apply filters to new messages in INBOX on this server"
-msgstr "Filter auf neue Nachrichten in INBOX dieses Servers anwenden"
-
-#: camel/providers/imap/camel-imap-provider.c:63
-msgid "IMAPv4"
-msgstr "IMAPv4"
-
-#: camel/providers/imap/camel-imap-provider.c:65
-msgid "For reading and storing mail on IMAP servers."
-msgstr "Zum Lesen und Speichern von Mail auf IMAP-Servern."
-
-#: camel/providers/imap/camel-imap-provider.c:82
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr ""
-"Diese Option verbindet zum IMAP-Server mit einem unverschlüsselten "
-"Passwortes."
-
-#: camel/providers/imap/camel-imap-store.c:456
-#, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr ""
-"IMAP-Server %s unterstützt den verlangten Legitimationsmechanismus %s nicht."
-
-#: camel/providers/imap/camel-imap-store.c:466
-#: camel/providers/smtp/camel-smtp-transport.c:366
-#, c-format
-msgid "No support for authentication type %s"
-msgstr "Keine Unterstützung für Legitimationstyp %s"
-
-#: camel/providers/imap/camel-imap-store.c:490
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr "%sBitte geben Sie das IMAP-Passwort für %s@%s ein"
-
-#: camel/providers/imap/camel-imap-store.c:505
-#: camel/providers/smtp/camel-smtp-transport.c:410
-msgid "You didn't enter a password."
-msgstr "Sie haben kein Passwort eingegeben."
-
-#: camel/providers/imap/camel-imap-store.c:531
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Legitimation beim IMAP-Server konnte nicht erreicht werden.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/imap/camel-imap-store.c:803 mail/mail-local.c:334
-#, c-format
-msgid "No such folder %s"
-msgstr "Ordner %s gibt es nicht"
-
-#: camel/providers/local/camel-local-provider.c:39
-msgid "MH-format mail directories"
-msgstr "Mailverzeichnisse im MH-Format"
-
-#: camel/providers/local/camel-local-provider.c:40
-msgid "For storing local mail in MH-like mail directories"
-msgstr "Zum Speichern lokaler Mail in Mailverzeichnissen im MH-Format"
-
-#: camel/providers/local/camel-local-provider.c:49
-msgid "Standard Unix mailbox file"
-msgstr "Standard-Unix-Postfachdatei"
-
-#: camel/providers/local/camel-local-provider.c:50
-msgid "For storing local mail in standard mbox format"
-msgstr "Zum Speichern lokaler Mail im Standard-mbox-Format"
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "Qmail maildir-format mail files"
-msgstr "Maildateien im Qmail-maildir-Format"
-
-#: camel/providers/local/camel-local-provider.c:60
-msgid "For storing local mail in qmail maildir directories"
-msgstr ""
-"Zum Speichern lokaler Mail in Mailverzeichnissen im qmail-maildir-Format"
-
-#: camel/providers/local/camel-local-store.c:127
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr "Speicherungswurzel %s ist kein absoluter Pfad"
-
-#: camel/providers/local/camel-local-store.c:134
-#, c-format
-msgid "Store root %s is not a regular directory"
-msgstr "Speicherwurzel `%s' ist kein reguläres Verzeichnis."
-
-#: camel/providers/local/camel-local-store.c:142
-#: camel/providers/local/camel-local-store.c:158
-#, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "Ordner kann nicht abgerufen werden: %s: %s"
-
-#: camel/providers/local/camel-local-store.c:173
-msgid "Local stores do not have an inbox"
-msgstr "Lokale Speicher haben keinen Posteingangsordner"
-
-#: camel/providers/local/camel-local-store.c:183
-#, c-format
-msgid "Local mail file %s"
-msgstr "Lokale Maildatei %s"
-
-#: camel/providers/local/camel-local-store.c:237
-#, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr "Ordner %s konnte nicht in %s umbenannt werden: %s"
-
-#: camel/providers/local/camel-local-store.c:279
-#, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr "Ordner-Zusammenfassungsdatei `%s' konnte nicht gelöscht werden: %s"
-
-#: camel/providers/local/camel-local-store.c:289
-#, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr "Ordner-Indexdatei `%s' konnte nicht gelöscht werden: %s"
-
-#: camel/providers/local/camel-local-summary.c:404
-msgid "Unable to add message to summary: unknown reason"
-msgstr ""
-"Nachricht kann nicht zur Zusammenfassung hinzugefügt werden: Grund unbekannt"
-
-#: camel/providers/local/camel-maildir-folder.c:150
-#: camel/providers/local/camel-maildir-folder.c:158
-#: camel/providers/local/camel-maildir-folder.c:169
-#, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr "Nachricht kann nicht an maildir-Ordner angehängt werden: %s: %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-maildir-folder.c:209
-#: camel/providers/local/camel-maildir-folder.c:217
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#: camel/providers/local/camel-mh-folder.c:194
-#: camel/providers/local/camel-mh-folder.c:202
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-"Nachricht kann nicht erhalten werden: %s\n"
-" %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-msgid "No such message"
-msgstr "Keine solche Nachricht"
-
-#: camel/providers/local/camel-maildir-folder.c:218
-#: camel/providers/local/camel-mh-folder.c:203
-msgid "Invalid message contents"
-msgstr "Ungültiger Inhalt der Nachricht"
-
-#: camel/providers/local/camel-maildir-store.c:96
-#: camel/providers/local/camel-mh-store.c:90
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-"Ordner `%s' konnte nicht geöffnet werden:\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:100
-#: camel/providers/local/camel-mbox-store.c:101
-#: camel/providers/local/camel-mh-store.c:97
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr "Ordner `%s' existiert nicht."
-
-#: camel/providers/local/camel-maildir-store.c:107
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-"Ordner `%s' konnte nicht angelegt werden:\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:122
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr "`%s' ist kein maildir-Verzeichnis."
-
-#: camel/providers/local/camel-maildir-store.c:151
-#: camel/providers/local/camel-maildir-store.c:188
-#: camel/providers/local/camel-mh-store.c:127
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr "Ordner `%s' konnte nicht gelöscht werden: %s"
-
-#: camel/providers/local/camel-maildir-store.c:152
-msgid "not a maildir directory"
-msgstr "kein maildir-Verzeichnis"
-
-#: camel/providers/local/camel-maildir-summary.c:405
-#: camel/providers/local/camel-maildir-summary.c:526
-#, c-format
-msgid "Cannot open maildir directory path: %s: %s"
-msgstr "Maildir-Verzeichnispfad kann nicht geöffnet werden: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:152
-#, c-format
-msgid "Cannot create folder lock on %s: %s"
-msgstr "Ordnersperre auf %s kann nicht erzeugt werden: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:203
-#, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr "Postfach kann nicht geöffnet werden: %s: %s\n"
-
-#: camel/providers/local/camel-mbox-folder.c:259
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr "Nachricht kann nicht an mbox-Datei angehängt werden: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:335
-#: camel/providers/local/camel-mbox-folder.c:367
-#: camel/providers/local/camel-mbox-folder.c:380
-#, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-"Nachricht kann nicht erhalten werden: %s aus Ordner %s\n"
-" %s"
-
-#: camel/providers/local/camel-mbox-folder.c:368
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr "Dieser Ordner scheint nicht-wiederherstellbar korrupt zu sein."
-
-#: camel/providers/local/camel-mbox-folder.c:381
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr "Nachrichtenerstellung fehlgeschlagen: Defektes Postfach?"
-
-#: camel/providers/local/camel-mbox-store.c:94
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-"Datei `%s' konnte nicht geöffnet werden:\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:110
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-"Datei `%s' konnte nicht angelegt werden:\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:119
-#: camel/providers/local/camel-mbox-store.c:146
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr "`%s' ist keine reguläre Datei."
-
-#: camel/providers/local/camel-mbox-store.c:138
-#: camel/providers/local/camel-mbox-store.c:161
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-"Ordner `%s' konnte nicht gelöscht werden:\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr "Ordner `%s' ist nicht leer. Nicht gelöscht."
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:249
-msgid "Summarising folder"
-msgstr "Zusammenfassen des Ordners"
-
-#: camel/providers/local/camel-mbox-summary.c:254
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr ""
-"Ordner konnte nicht geöffnet werden: %s: Zusammenfassung wird begonnen bei "
-"Position %ld: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:296
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr "Fataler Mailparser-Fehler nahe Position %ld in Ordner %s"
-
-#: camel/providers/local/camel-mbox-summary.c:371
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr "Zusammenfassung von Ordner kann nicht erstellt werden: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:502
-#: camel/providers/local/camel-mbox-summary.c:703 mail/mail-ops.c:1397
-msgid "Synchronising folder"
-msgstr "Ordner wird synchronisiert"
-
-#: camel/providers/local/camel-mbox-summary.c:507
-#: camel/providers/local/camel-mbox-summary.c:708
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr "Ordner konnte nicht zum Zusammenfassen geöffnet werden: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:524
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr "Temporäres Postfach konnte nicht angelegt werden: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:549
-#: camel/providers/local/camel-mbox-summary.c:557
-#: camel/providers/local/camel-mbox-summary.c:746
-#: camel/providers/local/camel-mbox-summary.c:754
-msgid "Summary and folder mismatch, even after a sync"
-msgstr ""
-"Zusammenfassungs- und Order-Prüffehler, sogar nach einer Synchronisation"
-
-#: camel/providers/local/camel-mbox-summary.c:600
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr "Fehler beim Schreiben auf temporäres Postfach: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:617
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr "Fehler beim Schreiben auf temporäres Postfach %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:635
-#: camel/providers/local/camel-mbox-summary.c:804
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr "Quellordner %s konnte nicht geschlossen werden: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:644
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr "Temporärer Ordner konnte nicht geschlossen werden: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:655
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr "Ordner konnte nicht umbenannt werden: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:879
-#, c-format
-msgid "Unknown error: %s"
-msgstr "Unbekannter Fehler: %s"
-
-#: camel/providers/local/camel-mh-folder.c:149
-#: camel/providers/local/camel-mh-folder.c:157
-#, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr "Nachricht kann nicht an mh-Ordner angehängt werden: %s: %s"
-
-#: camel/providers/local/camel-mh-store.c:110
-#, c-format
-msgid "`%s' is not a directory."
-msgstr "`%s' ist kein Verzeichnis."
-
-#: camel/providers/local/camel-mh-summary.c:218
-#, c-format
-msgid "Cannot open MH directory path: %s: %s"
-msgstr "MH-Verzeichnispfad kann nicht geöffnet werden: %s: %s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:45
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr "Bitte geben Sie das NNTP-Passwort für %s@%s ein"
-
-#: camel/providers/nntp/camel-nntp-auth.c:66
-msgid "Server rejected username"
-msgstr "Server lehnte Benutzername ab"
-
-#: camel/providers/nntp/camel-nntp-auth.c:72
-msgid "Failed to send username to server"
-msgstr "Benutzername konnte nicht an Server gesendet werden"
-
-#: camel/providers/nntp/camel-nntp-auth.c:81
-msgid "Server rejected username/password"
-msgstr "Server lehnte Benutzername/Passwort ab"
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr "Nachricht %s nicht gefunden."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr "Gruppenliste konnte nicht vom Server abgerufen werden."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr "grouplist-Datei für %s konnte nicht geladen werden: %s"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr "grouplist-Datei für %s konnte nicht gespeichert werden: %s"
-
-#: camel/providers/nntp/camel-nntp-provider.c:42
-msgid "USENET news"
-msgstr "USENET-News"
-
-#: camel/providers/nntp/camel-nntp-provider.c:44
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr ""
-"Dies ist eine Quelle zum Lesen von und zum Posten in USENET-Newsgroups."
-
-#: camel/providers/nntp/camel-nntp-store.c:224
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr "Verzeichnis für Newsserver konnte nicht geöffnet werden: %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:286
-#, c-format
-msgid "USENET News via %s"
-msgstr "USENET-News über %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:293
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-"Diese Option führt die Legitimation am NNTP-Server mit einem "
-"unverschlüsselten Passwort durch."
-
-#: camel/providers/nntp/camel-nntp-store.c:325
-#: camel/providers/nntp/camel-nntp-store.c:488
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr ".newsrc-Datei für %s konnte nicht geöffnet oder erstellt werden: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-msgid "Retrieving POP summary"
-msgstr "Abrufen der POP-Zusammenfassung"
-
-#: camel/providers/pop3/camel-pop3-folder.c:155
-#, c-format
-msgid "Could not check POP server for new messages: %s"
-msgstr "POP-Server konnte nicht auf neue Nachrichten überprüft werden: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:199
-msgid "Could not open folder: message listing was incomplete."
-msgstr ""
-"Ordner konnte nicht geöffnet werden: Nachrichtenliste war unvollständig."
-
-#: camel/providers/pop3/camel-pop3-folder.c:292
-#, c-format
-msgid "No message with uid %s"
-msgstr "Keine Nachricht mit UID %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:296
-#, c-format
-msgid "Retrieving POP message %d"
-msgstr "Abrufen der POP-Nachricht %d"
-
-#: camel/providers/pop3/camel-pop3-folder.c:303
-#, c-format
-msgid "Could not fetch message: %s"
-msgstr "Nachricht konnte nicht abgeholt werden: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:320
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr "Nachricht konnte nicht vom POP-Server %s abgerufen werden: %s"
-
-#: camel/providers/pop3/camel-pop3-provider.c:37
-msgid "Message storage"
-msgstr "Nachrichtenspeicherung"
-
-#: camel/providers/pop3/camel-pop3-provider.c:39
-msgid "Leave messages on server"
-msgstr "Mail auf Server belassen"
-
-#: camel/providers/pop3/camel-pop3-provider.c:41
-#, c-format
-msgid "Delete after %s day(s)"
-msgstr "Nach %s Tag(en) löschen"
-
-#: camel/providers/pop3/camel-pop3-provider.c:48 mail/mail-config.glade.h:51
-msgid "POP"
-msgstr "POP"
-
-#: camel/providers/pop3/camel-pop3-provider.c:50
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-"Zum Verbinden mit POP-Servern. Das PO-Protokoll kann auch verwendet werden, "
-"om Mail von manchen Web-Mailprovidern und proprietären E-Mail-Systemen "
-"abzurufen."
-
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-"Diese Option wird mit dem POP-Server unter einem unverschlüsselten Passwort "
-"verbinden. Viele POP-Server unterstützen nur dies."
-
-#: camel/providers/pop3/camel-pop3-provider.c:79
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-"Diese Option wird mit dem POP-Server unter einem verschlüsselten Passwort "
-"über das APO-Protokoll verbinden. Dies funktioniert evtl. nicht für alle "
-"Benutzer, sogar auf Servern, die behaupten, es zu unterstützen."
-
-#: camel/providers/pop3/camel-pop3-provider.c:91
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-"Dies verbindet mit dem POP-Server und benutzt Kerberos 4, um sich zu "
-"legitimieren."
-
-#: camel/providers/pop3/camel-pop3-store.c:199
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr "Legitimation beim KPOP-Server konnte nicht erfolgen: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:215
-#, c-format
-msgid "Could not connect to server: %s"
-msgstr "Verbindung zu Server konnte nicht hergestellt werden: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:322
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr "Verbindung zu POP-Server auf %s konnte nicht hergestellt werden."
-
-#: camel/providers/pop3/camel-pop3-store.c:361
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr "%sBitte geben Sie das POP3-Passwort für %s@%s ein"
-
-#: camel/providers/pop3/camel-pop3-store.c:379
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-"Verbindung mit POP-Server konnte nicht hergestellt werden.\n"
-"Fehler beim Senden des Benutzernamens: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:382
-#: camel/providers/pop3/camel-pop3-store.c:419
-msgid "(Unknown)"
-msgstr "(Unbekannt)"
-
-#: camel/providers/pop3/camel-pop3-store.c:409
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-"Verbindung mit POP-Server konnte nicht hergestellt werden.\n"
-"Keine Unterstützung für den verlangten Legitimationsmechanismus."
-
-#: camel/providers/pop3/camel-pop3-store.c:417
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-"Verbindung mit POP-Server konnte nicht hergestellt werden.\n"
-"Fehler beim Senden des Passworts: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:484
-#, c-format
-msgid "No such folder `%s'."
-msgstr "Ordner `%s' gibt es nicht."
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:37
-#: mail/mail-config.glade.h:67
-msgid "Sendmail"
-msgstr "Sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:39
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-"Zum Ausliefern von Mail durch Übergabe an das Programm \"sendmail\" auf dem "
-"lokalen System."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:107
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr "Pipe zu sendmail konnte nicht angelegt werden: %s: Mail nicht gesendet"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:124
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr "sendmail konnte nicht geforkt werden: %s: Mail nicht gesendet"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:150
-#, c-format
-msgid "Could not send message: %s"
-msgstr "Nachricht konnte nicht gesendet werden: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:163
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr "sendmail brach mit Signal %s ab: Mail nicht gesendet."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:170
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr "%s konnte nicht ausgeführt werden: Mail nicht gesendet."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:175
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr "sendmail gab Status %d zurück: Mail nicht gesendet."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:194
-msgid "Could not find 'From' address in message"
-msgstr "'Von'-Adresse konnte nicht in Nachricht gefunden werden"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "sendmail"
-msgstr "sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:249
-msgid "Mail delivery via the sendmail program"
-msgstr "Mailauslieferung über das Programm sendmail"
-
-#: camel/providers/smtp/camel-smtp-provider.c:38 mail/mail-config.glade.h:62
-msgid "SMTP"
-msgstr "SMTP"
-
-#: camel/providers/smtp/camel-smtp-provider.c:40
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr "Zum Ausliefern von Mail über einen Mailknotenpunkt im Netz per SMTP.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:168
-msgid "Syntax error, command unrecognized"
-msgstr "Syntaxfehler, Befehl nicht erkannt"
-
-#: camel/providers/smtp/camel-smtp-transport.c:170
-msgid "Syntax error in parameters or arguments"
-msgstr "Syntaxfehler in Parametern oder Argumenten"
-
-#: camel/providers/smtp/camel-smtp-transport.c:172
-msgid "Command not implemented"
-msgstr "Befehl nicht implementiert"
-
-#: camel/providers/smtp/camel-smtp-transport.c:174
-msgid "Command parameter not implemented"
-msgstr "Befehlsparameter nicht implementiert"
-
-#: camel/providers/smtp/camel-smtp-transport.c:176
-msgid "System status, or system help reply"
-msgstr "Systemstatus- oder Systemhilfe-Antwort"
-
-#: camel/providers/smtp/camel-smtp-transport.c:178
-msgid "Help message"
-msgstr "Hilfemeldung"
-
-#: camel/providers/smtp/camel-smtp-transport.c:180
-msgid "Service ready"
-msgstr "Dienst ist bereit"
-
-#: camel/providers/smtp/camel-smtp-transport.c:182
-msgid "Service closing transmission channel"
-msgstr "Dienst schließt Übertragungskanal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:184
-msgid "Service not available, closing transmission channel"
-msgstr "Dienst nicht verfügbar, Übertragungskanal wird geschlossen"
-
-#: camel/providers/smtp/camel-smtp-transport.c:186
-msgid "Requested mail action okay, completed"
-msgstr "Angeforderte Mailaktion in Ordnung, abgeschlossen"
-
-#: camel/providers/smtp/camel-smtp-transport.c:188
-msgid "User not local; will forward to <forward-path>"
-msgstr "Benutzer nicht lokal; Weiterleitung erfolgt zu <weiterleitungspfad>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:190
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr "Angeforderte Mailaktion nicht ausgeführt: Postfach nicht verfügbar"
-
-#: camel/providers/smtp/camel-smtp-transport.c:192
-msgid "Requested action not taken: mailbox unavailable"
-msgstr "Angeforderte Aktion nicht ausgeführt: Postfach nicht verfügbar"
-
-#: camel/providers/smtp/camel-smtp-transport.c:194
-msgid "Requested action aborted: error in processing"
-msgstr "Angeforderte Aktion abgebrochen: Fehler bei Verarbeitung"
-
-#: camel/providers/smtp/camel-smtp-transport.c:196
-msgid "User not local; please try <forward-path>"
-msgstr "Benutzer nicht lokal; probieren Sie es mit <weiterleitungspfad>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:198
-msgid "Requested action not taken: insufficient system storage"
-msgstr "Angeforderte Aktion nicht ausgeführt: unzureichender Systemspeicher"
-
-#: camel/providers/smtp/camel-smtp-transport.c:200
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr "Angeforderte Aktion nicht ausgeführt: Speicherzuteilung überschritten"
-
-#: camel/providers/smtp/camel-smtp-transport.c:202
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr "Angeforderte Aktion nicht ausgeführt: Postfachname nicht erlaubt"
-
-#: camel/providers/smtp/camel-smtp-transport.c:204
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr "Maileingabe beginnen; Ende mit <CRLF>.<CRLF>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:206
-msgid "Transaction failed"
-msgstr "Transaktion fehlgeschlagen"
-
-#: camel/providers/smtp/camel-smtp-transport.c:210
-msgid "A password transition is needed"
-msgstr "Ein Passwordübergang ist notwendig"
-
-#: camel/providers/smtp/camel-smtp-transport.c:212
-msgid "Authentication mechanism is too weak"
-msgstr "Legitimationsmechanismus ist zu schwach"
-
-#: camel/providers/smtp/camel-smtp-transport.c:214
-msgid "Encryption required for requested authentication mechanism"
-msgstr ""
-"Für den verlangten Legitimationsmechanismus ist Verschlüsselung erforderlich."
-
-#: camel/providers/smtp/camel-smtp-transport.c:216
-msgid "Temporary authentication failure"
-msgstr "Zeitweiliger Legitimationsfehlschlag"
-
-#: camel/providers/smtp/camel-smtp-transport.c:218
-msgid "Authentication required"
-msgstr "Legitimation benötigt"
-
-#: camel/providers/smtp/camel-smtp-transport.c:313
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr "Willkommen-Antwortfehler: %s: vielleicht nicht fatal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:356
-#, c-format
-msgid "SMTP server %s does not support requested authentication type %s"
-msgstr ""
-"SMTP-Server %s unterstützt den verlangten Legitimationsmechanismus %s nicht."
-
-#: camel/providers/smtp/camel-smtp-transport.c:395
-#, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr "%sBitte geben Sie das SMTP-Passwort für %s@%s ein"
-
-#: camel/providers/smtp/camel-smtp-transport.c:418
-#, c-format
-msgid ""
-"Unable to authenticate to SMTP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Legitimation beim SMTP-Server konnte nicht erreicht werden.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:534
-#, c-format
-msgid "SMTP server %s"
-msgstr "SMTP-Server %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:536
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr "SMTP-Mailauslieferung über %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:561
-msgid "Cannot send message: sender address not defined."
-msgstr "Nachricht konnte nicht gesendet werden: Absenderadresse nicht angegeben."
-
-#: camel/providers/smtp/camel-smtp-transport.c:568
-msgid "Cannot send message: sender address not valid."
-msgstr "Nachricht konnte nicht gesendet werden: Absenderadresse nicht gültig."
-
-#: camel/providers/smtp/camel-smtp-transport.c:582
-msgid "Cannot send message: no recipients defined."
-msgstr "Nachricht konnte nicht gesendet werden: Keine Empfänger angegeben."
-
-#: camel/providers/smtp/camel-smtp-transport.c:676
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr "Zeitüberschreitung bei HELO-Anfrage: %s: nicht fatal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:695
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr "HELO-Antwortfehler: %s: nicht fatal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:728
-msgid "Error creating SASL authentication object."
-msgstr "Fehler beim Anlegen eines SASL-Legitimations-Objektes."
-
-#: camel/providers/smtp/camel-smtp-transport.c:743
-#: camel/providers/smtp/camel-smtp-transport.c:755
-#, c-format
-msgid "AUTH request timed out: %s"
-msgstr "Zeitüberschreitung bei AUTH-Anfrage: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:764
-msgid "AUTH request failed."
-msgstr "AUTH-Anfrage fehlgeschlagen."
-
-#: camel/providers/smtp/camel-smtp-transport.c:809
-msgid "Bad authentication response from server.\n"
-msgstr "Ungültige Legitimationsantwort vom Server.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:835
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr "Zeitüberschreitung bei MAIL-FROM-Anfrage: %s: Mail nicht gesendet"
-
-#: camel/providers/smtp/camel-smtp-transport.c:854
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr "MAIL-FROM-Antwortfehler: %s: Mail nicht gesendet"
-
-#: camel/providers/smtp/camel-smtp-transport.c:879
-#, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr "Zeitüberschreitung bei RCPT-TO-Anfrage: %s: Mail nicht gesendet"
-
-#: camel/providers/smtp/camel-smtp-transport.c:898
-#, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr "RCPT-TO-Antwortfehler: %s: Mail nicht gesendet."
-
-#: camel/providers/smtp/camel-smtp-transport.c:929
-#, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr "Zeitüberschreitung bei DATA-Anfrage: %s: Mail nicht gesendet."
-
-#: camel/providers/smtp/camel-smtp-transport.c:948
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr "DATA-Antwortfehler: %s: Mail nicht gesendet"
-
-#: camel/providers/smtp/camel-smtp-transport.c:963
-#: camel/providers/smtp/camel-smtp-transport.c:981
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr ""
-"Zeitüberschreitung beim Senden von DATA: Nachrichtenabschluss: %s Mail nicht "
-"gesendet"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1000
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr "DATA-Antwortfehler: Nachrichtenabschluss: %s: Mail nicht gesendet"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1024
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr "Zeitüberschreitung bei RSET-Anfrage: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1043
-#, c-format
-msgid "RSET response error: %s"
-msgstr "RSET-Antwort-Fehler: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1066
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr "Zeitüberschreitung bei QUIT-Anfrage: %s: nicht fatal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1085
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr "QUIT-Antwortfehler: %s: nicht fatal"
-
-#: composer/e-msg-composer-attachment-bar.c:95
-msgid "1 byte"
-msgstr "1 Byte"
-
-#: composer/e-msg-composer-attachment-bar.c:97
-#, c-format
-msgid "%u bytes"
-msgstr "%u Bytes"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fK"
-msgstr "%.1f kB"
-
-#: composer/e-msg-composer-attachment-bar.c:108
-#, c-format
-msgid "%.1fM"
-msgstr "%.1f MB"
-
-#: composer/e-msg-composer-attachment-bar.c:112
-#, c-format
-msgid "%.1fG"
-msgstr "%.1f GB"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:332 mail/mail-display.c:122
-msgid "attachment"
-msgstr "anlage"
-
-#: composer/e-msg-composer-attachment-bar.c:421
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr "Eine Datei beilegen"
-
-#: composer/e-msg-composer-attachment-bar.c:469
-msgid "Remove selected items from the attachment list"
-msgstr "Entferne das gewählte Element aus der Anlagenliste"
-
-#: composer/e-msg-composer-attachment-bar.c:500
-msgid "Add attachment..."
-msgstr "Anlage hinzufügen..."
-
-#: composer/e-msg-composer-attachment-bar.c:501
-msgid "Attach a file to the message"
-msgstr "Der Nachricht eine Datei beilegen"
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/mail-config.glade.h:9
-#: mail/message-list.c:1081
-msgid "Attachment"
-msgstr "Anlage"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr "Anlagen-Eigenschaften"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr "Dateiname:"
-
-#: composer/e-msg-composer-attachment.glade.h:5
-msgid "Inline attachment"
-msgstr "Eingebettete Anlage"
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr "MIME-Typ:"
-
-#: composer/e-msg-composer-attachment.glade.h:7
-msgid "Send as:"
-msgstr "Senden als:"
-
-#: composer/e-msg-composer.c:546
-#, c-format
-msgid ""
-"This version of Evolution was not built with support for S/MIME.\n"
-"You may wish to instead use PGP to %s your document."
-msgstr ""
-"Diese Version von Evolution wurde ohne Unterstützung für S/MIME gebaut.\n"
-"Statt dessen könnten Sie PGP benutzen, um Ihr Dokument zu %s."
-
-#: composer/e-msg-composer.c:548
-msgid "sign and encrypt"
-msgstr "signieren und zu verschlüssen"
-
-#: composer/e-msg-composer.c:549
-msgid "sign"
-msgstr "signieren"
-
-#: composer/e-msg-composer.c:549
-msgid "encrypt"
-msgstr "verschlüsseln"
-
-#: composer/e-msg-composer.c:601
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-"Signaturdatei %s konnte nicht geöffnet werden:\n"
-"%s"
-
-#: composer/e-msg-composer.c:774
-msgid "Save as..."
-msgstr "Speichern unter..."
-
-#: composer/e-msg-composer.c:785
-#, c-format
-msgid "Error saving file: %s"
-msgstr "Fehler beim Speichern der Datei: %s"
-
-#: composer/e-msg-composer.c:805
-#, c-format
-msgid "Error loading file: %s"
-msgstr "Fehler beim Laden der Datei: %s"
-
-#: composer/e-msg-composer.c:877
-msgid ""
-"Unable to open the drafts folder for this account.\n"
-"Would you like to use the default drafts folder?"
-msgstr ""
-"Der Entwürfe-Ordner für diesen Zugang konnte nicht geöffnet werden.\n"
-"Möchten Sie den vorgegebenen Entwürfe-Ordner verwenden?"
-
-#: composer/e-msg-composer.c:935 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:224
-msgid "Evolution"
-msgstr "Evolution"
-
-#: composer/e-msg-composer.c:941
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-"Diese Nachricht wurde nicht versandt.\n"
-"\n"
-"Wollen Sie Ihre Änderungen speichern?"
-
-#: composer/e-msg-composer.c:966
-msgid "Open file"
-msgstr "Datei öffnen"
-
-#: composer/e-msg-composer.c:1092
-msgid "That file does not exist."
-msgstr "Diese Datei existiert nicht."
-
-#: composer/e-msg-composer.c:1102
-msgid "That is not a regular file."
-msgstr "Diese Datei ist keine normale Datei."
-
-#: composer/e-msg-composer.c:1112
-msgid "That file exists but is not readable."
-msgstr "Diese Datei existiert, ist aber nicht lesbar."
-
-#: composer/e-msg-composer.c:1122
-msgid "That file appeared accesible but open(2) failed."
-msgstr "Diese Datei scheint lesbar zu sein, aber open(2) schlug fehl."
-
-#: composer/e-msg-composer.c:1144
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-"Diese Datei ist sehr groß (mehr als 100 kB).\n"
-"Sind Sie sicher, dass Sie sie einfügen wollen?"
-
-#: composer/e-msg-composer.c:1165
-msgid "An error occurred while reading the file."
-msgstr "Ein Fehler trat beim Lesen der Datei auf."
-
-#: composer/e-msg-composer.c:1526 composer/e-msg-composer.c:1871
-msgid "Compose a message"
-msgstr "Eine Nachricht erstellen"
-
-#: composer/e-msg-composer.c:1962
-msgid "Could not create composer window."
-msgstr "Erstellungsfenster konnte nicht erzeugt werden."
-
-#: composer/e-msg-composer-hdrs.c:324
-msgid "Click here for the address book"
-msgstr "Für das Adressbuch hier klicken"
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:355
-msgid "From:"
-msgstr "Von:"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:361
-msgid "Reply-To:"
-msgstr "Antwort an:"
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:372
-msgid "Subject:"
-msgstr "Betreff:"
-
-#: composer/e-msg-composer-hdrs.c:386
-msgid "To:"
-msgstr "An:"
-
-#: composer/e-msg-composer-hdrs.c:387
-msgid "Enter the recipients of the message"
-msgstr "Gebe die Empfänger der Nachricht ein"
-
-#: composer/e-msg-composer-hdrs.c:390
-msgid "Cc:"
-msgstr "Cc:"
-
-#: composer/e-msg-composer-hdrs.c:391
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "Gebe die Adressen ein, die eine Kopie der Nachricht erhalten"
-
-#: composer/e-msg-composer-hdrs.c:394
-msgid "Bcc:"
-msgstr "Bcc:"
-
-#: composer/e-msg-composer-hdrs.c:395
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"Gebe die Adressen ein, die eine Kopie erhalten, dienicht in der "
-"Empfängerliste auftaucht."
-
-#: composer/evolution-composer.c:355
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-"Es konnte kein Erstellungsfenster angelegt werden, da Sie\n"
-"in der Mailkomponente noch keine Identität konfiguriert\n"
-"haben."
-
-#: composer/evolution-composer.c:370
-msgid "Cannot initialize Evolution's composer."
-msgstr "Evolutions Maileditor kann nicht initialisiert werden."
-
-#: data/evolution.desktop.in.h:2
-msgid "The Evolution groupware suite"
-msgstr "Die Groupware-Suite Evolution"
-
-#: data/evolution.keys.in.h:1
-msgid "address card"
-msgstr "Adresskarte"
-
-#: data/evolution.keys.in.h:2
-msgid "calendar information"
-msgstr "Kalender-Information"
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:69 e-util/e-time-utils.c:117
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:477
-#: widgets/misc/e-dateedit.c:1284 widgets/misc/e-dateedit.c:1465
-msgid "%m/%d/%Y"
-msgstr "%d.%m.%Y"
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:87 e-util/e-time-utils.c:198
-msgid "%I:%M:%S %p%n"
-msgstr ""
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:90 e-util/e-time-utils.c:201
-msgid "%H:%M:%S%n"
-msgstr "%H:%M:%S"
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:94 e-util/e-time-utils.c:205
-msgid "%I:%M %p%n"
-msgstr ""
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:97 e-util/e-time-utils.c:208
-msgid "%H:%M%n"
-msgstr "%H.%M%n"
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:269
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:473
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2505
-msgid "%a %m/%d/%Y"
-msgstr "%a, %d.%m.%Y"
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:274
-msgid "%a %m/%d/%Y %H:%M"
-msgstr "%a, %d.%m.%Y %H.%M"
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:283
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr "%a, %d.%m.%Y %I.%M %p"
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:312 widgets/misc/e-dateedit.c:1259
-#: widgets/misc/e-dateedit.c:1318 widgets/misc/e-dateedit.c:1497
-msgid "%H:%M"
-msgstr "%H.%M"
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:315
-msgid "%H:%M:%S"
-msgstr "%H:%M:%S"
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:320 widgets/misc/e-dateedit.c:1262
-#: widgets/misc/e-dateedit.c:1321 widgets/misc/e-dateedit.c:1500
-msgid "%I:%M %p"
-msgstr "%I:%M %p"
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:323
-msgid "%I:%M:%S %p"
-msgstr "%I:%M:%S %p"
-
-#: executive-summary/component/component-factory.c:152
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr ""
-"Evolutions Chefsesselansichts-Komponente kann nicht initialisiert werden."
-
-#: executive-summary/component/e-summary.c:926
-#, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"HTML-Datei kann nicht geöffnet werden:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:940
-#, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr ""
-"Fehler beim Lesen von Daten:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:958
-msgid "File does not have a place for the services.\n"
-msgstr "Datei hat keinen Platz für die Dienste.\n"
-
-#: executive-summary/component/e-summary-callbacks.c:126
-msgid "Select a service"
-msgstr "Einen Dienst wählen"
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-"Sie können eine andere HTML-Seite als Hintergrund für die Chefsesselansicht "
-"auswählen.\n"
-"\n"
-"Um die Vorgabe einzustellen, lassen Sie den Eintrag einfach frei."
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr "%s mit der in GNOME voreingestellten Anwendung öffnen"
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr "%s mit dem in GNOME voreingestellten Web-Browser öffnen"
-
-#: executive-summary/component/e-summary-url.c:71
-#, c-format
-msgid "Send an email to %s"
-msgstr "E-Mail wird an %s gesendet"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr "Die Ansicht auf %s ändern"
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr "%s ausführen"
-
-#: executive-summary/component/e-summary-url.c:75
-#, c-format
-msgid "Close %s"
-msgstr "%s schließen"
-
-#: executive-summary/component/e-summary-url.c:76
-#, c-format
-msgid "Move %s to the left"
-msgstr "%s nach links verschieben"
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr "%s nach rechts verschieben"
-
-#: executive-summary/component/e-summary-url.c:78
-#, c-format
-msgid "Move %s into the previous row"
-msgstr "%s in die vorige Zeile verschieben"
-
-#: executive-summary/component/e-summary-url.c:79
-#, c-format
-msgid "Move %s into the next row"
-msgstr "%s in die nächste Zeile verschieben"
-
-#: executive-summary/component/e-summary-url.c:80
-#, c-format
-msgid "Configure %s"
-msgstr "%s konfigurieren"
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr "Aussehen"
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr "Hintergrund:"
-
-#: executive-summary/component/main.c:62
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-"Chefsesselansichts-Komponente konnte Bonobo nicht initialisieren.\n"
-"Falls es eine Warnungsmeldung über den RootPOA gegeben hat, bedeutet das\n"
-"wahrscheinlich, dass Sie Bonobo gegen GOAD statt gegen OAF compiliert\n"
-"haben."
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-msgid "Evolution component for the executive summary."
-msgstr "Evolution-Komponente für die Chefsesselansicht"
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-msgid "Factory for the Evolution executive summary component."
-msgstr "Factory für Evolutions Chefsesselansichts-Komponente."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr "Factory für die RDF-Zusammenfassung."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-msgid "RDF Summary"
-msgstr "RDF-Zusammenfassung"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-msgid "Factory for the test bonobo component."
-msgstr "Factory für die Test-Bonobo-Komponente."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-msgid "Factory for the test component."
-msgstr "Factory für die Test-Komponente."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr "Test-Bonobo-Dienst"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr "Test-Dienst"
-
-#: executive-summary/test-service/rdf-summary.c:512
-#: executive-summary/test-service/rdf-summary.c:549
-#: executive-summary/test-service/rdf-summary.c:594
-#: widgets/misc/e-messagebox.c:166
-msgid "Error"
-msgstr "Fehler"
-
-#: executive-summary/test-service/rdf-summary.c:775
-msgid "Update automatically"
-msgstr "Automatisch aktualisieren"
-
-#: executive-summary/test-service/rdf-summary.c:785
-msgid "Update now"
-msgstr "Jetzt aktualisieren"
-
-#: executive-summary/test-service/rdf-summary.c:795
-msgid "Update every "
-msgstr "Aktualisieren alle "
-
-#: executive-summary/test-service/rdf-summary.c:806
-#: filter/filter-datespec.c:83
-msgid "minutes"
-msgstr "Minuten"
-
-#: filter/filter-datespec.c:78
-msgid "year"
-msgstr "Jahr"
-
-#: filter/filter-datespec.c:78
-msgid "years"
-msgstr "Jahre"
-
-#: filter/filter-datespec.c:79
-msgid "month"
-msgstr "Monat"
-
-#: filter/filter-datespec.c:79
-msgid "months"
-msgstr "Monate"
-
-#: filter/filter-datespec.c:80
-msgid "week"
-msgstr "Woche"
-
-#: filter/filter-datespec.c:80
-msgid "weeks"
-msgstr "Wochen"
-
-#: filter/filter-datespec.c:81
-msgid "days"
-msgstr "Tage"
-
-#: filter/filter-datespec.c:82
-msgid "hour"
-msgstr "Stunde"
-
-#: filter/filter-datespec.c:82
-msgid "hours"
-msgstr "Stunden"
-
-#: filter/filter-datespec.c:83
-msgid "minute"
-msgstr "Minute"
-
-#: filter/filter-datespec.c:84
-msgid "second"
-msgstr "Sekunde"
-
-#: filter/filter-datespec.c:84
-msgid "seconds"
-msgstr "Sekunden"
-
-#: filter/filter-datespec.c:199
-msgid "Oops. You have forgotten to choose a date."
-msgstr "Hoppla. Sie haben vergessen, ein Datum zu wählen."
-
-#: filter/filter-datespec.c:201
-msgid "Oops. You have chosen an invalid date."
-msgstr "Hoppla. Sie haben ein ungültiges Datum gewählt."
-
-#: filter/filter-datespec.c:276
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-"Das Datum der Nachricht wird mit der Zeit\n"
-"verglichen, zu der der Filter ausgeführt oder\n"
-"der VOrdner geöffnet wird."
-
-#: filter/filter-datespec.c:299
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-"Das Datum der Nachricht wird mit der hier\n"
-"von Ihnen angegebenen Zeit verglichen."
-
-#: filter/filter-datespec.c:339
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-"Das Datum der Nachricht wird verglichen mit\n"
-"einer zur Zeit der Filterausführung relativen\n"
-"Zeit, z.B. \"vor einer Woche\"."
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:374
-msgid "the current time"
-msgstr "der aktuellen Zeit"
-
-#: filter/filter-datespec.c:374
-msgid "a time you specify"
-msgstr "einer von Ihnen angegebene Zeit"
-
-#: filter/filter-datespec.c:375
-msgid "a time relative to the current time"
-msgstr "einer zur momentanen Zeit relativen Zeit"
-
-#. The label
-#: filter/filter-datespec.c:433
-msgid "Compare against"
-msgstr "Vergleichen mit"
-
-#: filter/filter-datespec.c:550 filter/filter-datespec.c:710
-msgid "now"
-msgstr "jetzt"
-
-#: filter/filter-datespec.c:707
-msgid "<click here to select a date>"
-msgstr "<hier klicken, um ein Datum zu wählen>"
-
-#: filter/filter-editor.c:132 filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr "Filterregeln"
-
-#. and now for the action area
-#: filter/filter-filter.c:452
-msgid "Then"
-msgstr "Dann"
-
-#: filter/filter-filter.c:466
-msgid "Add action"
-msgstr "Aktion hinzufügen"
-
-#: filter/filter-folder.c:147
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-"Hoppla, Sie haben vergessen, einen Ordner zu wählen.\n"
-"Bitte gehen Sie zurück und wählen Sie einen gültigen Ordner zum Ausliefern "
-"der Mail."
-
-#: filter/filter-folder.c:225 filter/vfolder-rule.c:285
-#: mail/mail-account-gui.c:682
-msgid "Select Folder"
-msgstr "Ordner wählen"
-
-#: filter/filter-folder.c:250
-msgid "Enter folder URI"
-msgstr "Ordner-URI eingeben"
-
-#: filter/filter-folder.c:296
-msgid "<click here to select a folder>"
-msgstr "<hier klicken, um einen Ordner zu wählen>"
-
-#: filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr "Filter bearbeiten"
-
-#: filter/filter.glade.h:5
-msgid "Edit VFolders"
-msgstr "VOrdner bearbeiten"
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr "Eingang"
-
-#: filter/filter.glade.h:8
-msgid "Outgoing"
-msgstr "Ausgang"
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:130
-msgid "Virtual Folders"
-msgstr "Virtuelle Ordner"
-
-#: filter/filter.glade.h:11
-msgid "specific folders only"
-msgstr "nur bestimmte Ordner"
-
-#: filter/filter.glade.h:12
-msgid "vFolder Sources"
-msgstr "vOrdner-Quellen"
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr "mit allen aktiven Ordnern aus dem Netz"
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr "mit allen lokalen Ordnern und aktiven Ordnern aus dem Netz"
-
-#: filter/filter.glade.h:15
-msgid "with all local folders"
-msgstr "mit allen lokalen Ordnern"
-
-#: filter/filter-input.c:193
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-"Fehler im regulären Ausdruck '%s':\n"
-"%s"
-
-#: filter/filter-part.c:488
-msgid "Test"
-msgstr "Test"
-
-#: filter/filter-rule.c:626
-msgid "Rule name: "
-msgstr "Regelname: "
-
-#: filter/filter-rule.c:630
-msgid "Untitled"
-msgstr "Namenlos"
-
-#: filter/filter-rule.c:646
-msgid "If"
-msgstr "Wenn"
-
-#: filter/filter-rule.c:664
-msgid "Execute actions"
-msgstr "Aktionen ausführen"
-
-#: filter/filter-rule.c:668
-msgid "if all criteria are met"
-msgstr "wenn alle Kriterien zutreffen"
-
-#: filter/filter-rule.c:673
-msgid "if any criteria are met"
-msgstr "wenn irgendwelche Kriterien zutreffen"
-
-#: filter/filter-rule.c:684
-msgid "Add criterion"
-msgstr "Kriterium hinzufügen"
-
-#: filter/filter-rule.c:770
-msgid "incoming"
-msgstr "Eingang"
-
-#: filter/filter-rule.c:770
-msgid "outgoing"
-msgstr "Ausgang"
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Colour"
-msgstr "Farbe zuweisen"
-
-#: filter/libfilter-i18n.h:4
-msgid "Assign Score"
-msgstr "Bewertung zuweisen"
-
-#: filter/libfilter-i18n.h:5
-msgid "Attachments"
-msgstr "Anlagen"
-
-#: filter/libfilter-i18n.h:7 filter/libfilter-i18n.h:89
-#: filter/libfilter-i18n.h:221
-msgid "contains"
-msgstr "enthält"
-
-#: filter/libfilter-i18n.h:8
-msgid "Copy to Folder"
-msgstr "In Ordner kopieren"
-
-#: filter/libfilter-i18n.h:9
-msgid "Date received"
-msgstr "Empfangsdatum"
-
-#: filter/libfilter-i18n.h:10
-msgid "Date sent"
-msgstr "Sendedatum"
-
-#: filter/libfilter-i18n.h:18 filter/libfilter-i18n.h:94
-msgid "Deleted"
-msgstr "Gelöscht"
-
-#: filter/libfilter-i18n.h:21 filter/libfilter-i18n.h:109
-msgid "Do Not Exist"
-msgstr "Existieren nicht"
-
-#: filter/libfilter-i18n.h:23 filter/libfilter-i18n.h:110
-msgid "Draft"
-msgstr "Entwurf"
-
-#: filter/libfilter-i18n.h:28 filter/libfilter-i18n.h:112
-msgid "Exist"
-msgstr "Existieren"
-
-#: filter/libfilter-i18n.h:30 filter/libfilter-i18n.h:130
-msgid "Expression"
-msgstr "Ausdruck"
-
-#: filter/libfilter-i18n.h:31 mail/message-list.c:1081
-msgid "Flagged"
-msgstr "Markiert"
-
-#: filter/libfilter-i18n.h:32 filter/libfilter-i18n.h:131
-msgid "Forward to Address"
-msgstr "Weiterleiten an Adresse"
-
-#: filter/libfilter-i18n.h:35 filter/libfilter-i18n.h:136
-msgid "Important"
-msgstr "Wichtig"
-
-#: filter/libfilter-i18n.h:37 filter/libfilter-i18n.h:161
-msgid "Mailing list"
-msgstr "Mailingliste"
-
-#: filter/libfilter-i18n.h:38 filter/libfilter-i18n.h:163
-msgid "Message Body"
-msgstr "Nachrichtenrumpf"
-
-#: filter/libfilter-i18n.h:39 filter/libfilter-i18n.h:164
-msgid "Message Header"
-msgstr "Nachrichtenkopf"
-
-#: filter/libfilter-i18n.h:40 filter/libfilter-i18n.h:165
-msgid "Message was received"
-msgstr "Nachricht wurde empfangen"
-
-#: filter/libfilter-i18n.h:41 filter/libfilter-i18n.h:166
-msgid "Message was sent"
-msgstr "Nachricht wurde gesendet"
-
-#: filter/libfilter-i18n.h:42 filter/libfilter-i18n.h:167
-msgid "Move to Folder"
-msgstr "In Ordner verschieben"
-
-#: filter/libfilter-i18n.h:49 filter/libfilter-i18n.h:193
-msgid "Read"
-msgstr "Gelesen"
-
-#: filter/libfilter-i18n.h:51 filter/libfilter-i18n.h:195
-msgid "Recipients"
-msgstr "Empfänger"
-
-#: filter/libfilter-i18n.h:52 filter/libfilter-i18n.h:196
-msgid "Regex Match"
-msgstr "Regex-Treffer"
-
-#: filter/libfilter-i18n.h:54 mail/message-list.c:678
-msgid "Seen"
-msgstr "Gelesen"
-
-#: filter/libfilter-i18n.h:56 filter/libfilter-i18n.h:198
-#: filter/score-rule.c:204 filter/score-rule.c:206 mail/message-list.c:1081
-msgid "Score"
-msgstr "Bewertung"
-
-#: filter/libfilter-i18n.h:58 filter/libfilter-i18n.h:199
-msgid "Sender"
-msgstr "Absender"
-
-#: filter/libfilter-i18n.h:60 filter/libfilter-i18n.h:67
-msgid "Set Flag"
-msgstr "Marke setzen"
-
-#: filter/libfilter-i18n.h:61 filter/libfilter-i18n.h:69
-#: filter/libfilter-i18n.h:200
-msgid "Set Status"
-msgstr "Status setzen:"
-
-#: filter/libfilter-i18n.h:62 filter/libfilter-i18n.h:202
-#: filter/libfilter-i18n.h:204 filter/libfilter-i18n.h:235
-msgid "sounds like"
-msgstr "klingt wie"
-
-#: filter/libfilter-i18n.h:63 filter/libfilter-i18n.h:72
-msgid "Source"
-msgstr "Quelle"
-
-#: filter/libfilter-i18n.h:64 filter/libfilter-i18n.h:75
-#: filter/libfilter-i18n.h:207
-msgid "Specific header"
-msgstr "Bestimmte Kopfzeile"
-
-#: filter/libfilter-i18n.h:83 filter/libfilter-i18n.h:215
-msgid "Stop Processing"
-msgstr "Verarbeitung abbrechen"
-
-#: filter/libfilter-i18n.h:84 filter/libfilter-i18n.h:216
-#: mail/mail-format.c:767 mail/message-list.c:1082
-msgid "Subject"
-msgstr "Betreff"
-
-#: filter/libfilter-i18n.h:97 filter/libfilter-i18n.h:103
-#: filter/libfilter-i18n.h:117 filter/libfilter-i18n.h:222
-msgid "does not contain"
-msgstr "enthält nicht"
-
-#: filter/libfilter-i18n.h:98 filter/libfilter-i18n.h:104
-#: filter/libfilter-i18n.h:118 filter/libfilter-i18n.h:223
-msgid "does not end with"
-msgstr "endet nicht mit"
-
-#: filter/libfilter-i18n.h:99 filter/libfilter-i18n.h:105
-#: filter/libfilter-i18n.h:119 filter/libfilter-i18n.h:224
-msgid "does not exist"
-msgstr "existiert nicht"
-
-#: filter/libfilter-i18n.h:100 filter/libfilter-i18n.h:106
-#: filter/libfilter-i18n.h:120 filter/libfilter-i18n.h:225
-msgid "does not sound like"
-msgstr "klingt nicht wie"
-
-#: filter/libfilter-i18n.h:101 filter/libfilter-i18n.h:107
-#: filter/libfilter-i18n.h:121 filter/libfilter-i18n.h:226
-msgid "does not start with"
-msgstr "beginnt nicht mit"
-
-#: filter/libfilter-i18n.h:111 filter/libfilter-i18n.h:122
-#: filter/libfilter-i18n.h:227
-msgid "ends with"
-msgstr "endet mit"
-
-#: filter/libfilter-i18n.h:114 filter/libfilter-i18n.h:123
-#: filter/libfilter-i18n.h:128 filter/libfilter-i18n.h:228
-msgid "exists"
-msgstr "existiert"
-
-#: filter/libfilter-i18n.h:139 filter/libfilter-i18n.h:148
-#: filter/libfilter-i18n.h:156 filter/libfilter-i18n.h:172
-#: filter/libfilter-i18n.h:232
-msgid "is"
-msgstr "ist"
-
-#: filter/libfilter-i18n.h:140 filter/libfilter-i18n.h:149
-#: filter/libfilter-i18n.h:157 filter/libfilter-i18n.h:229
-msgid "is greater than"
-msgstr "ist größer als"
-
-#: filter/libfilter-i18n.h:141 filter/libfilter-i18n.h:150
-#: filter/libfilter-i18n.h:158 filter/libfilter-i18n.h:230
-msgid "is less than"
-msgstr "ist kleiner als"
-
-#: filter/libfilter-i18n.h:142 filter/libfilter-i18n.h:151
-#: filter/libfilter-i18n.h:159 filter/libfilter-i18n.h:231
-msgid "is not"
-msgstr "ist nicht"
-
-#: filter/libfilter-i18n.h:144
-msgid "matches regex"
-msgstr "passt auf Regex"
-
-#: filter/libfilter-i18n.h:174 filter/libfilter-i18n.h:180
-#: filter/libfilter-i18n.h:190 filter/libfilter-i18n.h:233
-msgid "on or after"
-msgstr "am oder nach"
-
-#: filter/libfilter-i18n.h:175 filter/libfilter-i18n.h:181
-#: filter/libfilter-i18n.h:191 filter/libfilter-i18n.h:234
-msgid "on or before"
-msgstr "am oder vor"
-
-#: filter/libfilter-i18n.h:197
-msgid "Replied to"
-msgstr "Beantwortet an"
-
-#: filter/libfilter-i18n.h:205
-msgid "Source Account"
-msgstr "Herkunfts-Account"
-
-#: filter/libfilter-i18n.h:209 filter/libfilter-i18n.h:212
-#: filter/libfilter-i18n.h:236
-msgid "starts with"
-msgstr "beginnt mit"
-
-#: filter/libfilter-i18n.h:240
-msgid "was after"
-msgstr "war nach"
-
-#: filter/libfilter-i18n.h:241
-msgid "was before"
-msgstr "war vor"
-
-#: filter/rule-editor.c:147
-msgid "Rules"
-msgstr "Regeln"
-
-#: filter/rule-editor.c:240
-msgid "Add Rule"
-msgstr "Regel hinzufügen"
-
-#: filter/rule-editor.c:299
-msgid "Edit Rule"
-msgstr "Regel bearbeiten"
-
-#: filter/score-editor.c:130
-msgid "Score Rules"
-msgstr "Bewertungsregeln"
-
-#: importers/elm-importer.c:512 importers/netscape-importer.c:780
-#: importers/pine-importer.c:646 shell/e-shell-importer.c:655
-#: shell/importer/import.glade.h:4
-msgid "Import"
-msgstr "Importieren"
-
-#: importers/elm-importer.c:517 importers/netscape-importer.c:785
-#: importers/pine-importer.c:651
-msgid "Mail"
-msgstr "Mail"
-
-#: importers/elm-importer.c:521
-msgid "Elm Aliases"
-msgstr "Elm-Aliase"
-
-#: importers/elm-importer.c:528 importers/netscape-importer.c:807
-#: importers/pine-importer.c:668
-msgid "Don't ask me again"
-msgstr "Mich nicht mehr fragen"
-
-#: importers/elm-importer.c:561
-msgid ""
-"Evolution has found Elm mail files\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-"Evolution hat Elm-Maildateien gefunden.\n"
-"Möchten Sie sie in Evolution importieren?"
-
-#: importers/elm-importer.c:579
-msgid "Elm mail"
-msgstr "Elm-Mail"
-
-#: importers/netscape-importer.c:790 importers/pine-importer.c:656
-msgid "Settings"
-msgstr "Einstellungen"
-
-#: importers/netscape-importer.c:795 mail/mail-callbacks.c:1359
-msgid "Filters"
-msgstr "Filter"
-
-#: importers/netscape-importer.c:800
-msgid "Addressbooks"
-msgstr "Adressbücher"
-
-#: importers/netscape-importer.c:847
-msgid ""
-"Evolution has found Netscape mail files.\n"
-"Would you like them to be imported into Evolution?"
-msgstr ""
-"Evolution hat Netscape-Maildateien gefunden.\n"
-"Möchten Sie sie in Evolution importieren?"
-
-#: importers/pine-importer.c:661
-msgid "Addressbook"
-msgstr "Adressbuch"
-
-#: importers/pine-importer.c:705
-msgid ""
-"Evolution has found Pine mail files.\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-"Evolution hat Pine-Maildateien gefunden.\n"
-"Möchten Sie sie in Evolution importieren?"
-
-#: importers/pine-importer.c:723
-msgid "Pine mail"
-msgstr "Pine-Mail"
-
-#: mail/component-factory.c:337
-msgid "Cannot initialize Evolution's mail component."
-msgstr "Evolutions Mail-Komponente kann nicht initialisiert werden"
-
-#: mail/component-factory.c:410
-msgid "Cannot register storage with shell"
-msgstr "Speicher kann nicht bei der Shell registriert werden"
-
-#: mail/folder-browser.c:329
-msgid "Store search as vFolder"
-msgstr "Suche als VOrdner speichern"
-
-#: mail/folder-browser.c:653
-msgid "VFolder on _Subject"
-msgstr "VOrdner über _Betreff"
-
-#: mail/folder-browser.c:656
-msgid "VFolder on Se_nder"
-msgstr "VOrdner über Absender"
-
-#: mail/folder-browser.c:659
-msgid "VFolder on _Recipients"
-msgstr "VOrdner über Empfänger"
-
-#: mail/folder-browser.c:662
-msgid "VFolder on Mailing _List"
-msgstr "VOrdner über Mailing_liste"
-
-#: mail/folder-browser.c:668
-msgid "Filter on Sub_ject"
-msgstr "Filter über _Betreff"
-
-#: mail/folder-browser.c:671
-msgid "Filter on Sen_der"
-msgstr "Filter über _Absender"
-
-#: mail/folder-browser.c:674
-msgid "Filter on Re_cipients"
-msgstr "Filter über _Empfänger"
-
-#: mail/folder-browser.c:677
-msgid "Filter on _Mailing List"
-msgstr "Filter über _Mailingliste"
-
-#: mail/folder-browser.c:686
-msgid "_Open"
-msgstr "Ö_ffnen"
-
-#: mail/folder-browser.c:688
-msgid "Resend"
-msgstr "Nochmals senden"
-
-#: mail/folder-browser.c:690 ui/evolution-calendar.xml.h:43
-#: ui/evolution-mail.xml.h:118 ui/evolution-tasks.xml.h:8
-msgid "_Save As..."
-msgstr "Speichern _unter..."
-
-#: mail/folder-browser.c:692 ui/evolution-event-editor.xml.h:69
-#: ui/evolution-task-editor-dialog.xml.h:82 ui/evolution-tasks.xml.h:7
-msgid "_Print"
-msgstr "Drucken"
-
-#: mail/folder-browser.c:697 ui/evolution-mail.xml.h:117
-msgid "_Reply to Sender"
-msgstr "Antwort an Ab_sender"
-
-#: mail/folder-browser.c:699 ui/evolution-mail.xml.h:72
-msgid "Reply to _All"
-msgstr "_Allen antworten"
-
-#: mail/folder-browser.c:701
-msgid "_Forward"
-msgstr "Weiterleiten"
-
-#: mail/folder-browser.c:704
-msgid "Mar_k as Read"
-msgstr "Als gelesen markieren"
-
-#: mail/folder-browser.c:706
-msgid "Mark as U_nread"
-msgstr "Als ungelesen markieren"
-
-#: mail/folder-browser.c:711
-msgid "_Move to Folder..."
-msgstr "In Ordner verschieben..."
-
-#: mail/folder-browser.c:713
-msgid "_Copy to Folder..."
-msgstr "In Ordner kopieren..."
-
-#: mail/folder-browser.c:717 ui/evolution-mail.xml.h:121
-msgid "_Undelete"
-msgstr "Löschen rückgängig"
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:727
-msgid "Apply Filters"
-msgstr "Filter anwenden"
-
-#: mail/folder-browser.c:731
-msgid "Create Ru_le From Message"
-msgstr "_Regel aus Nachricht erzeugen"
-
-#: mail/folder-browser.c:870
-msgid "Filter on Mailing List"
-msgstr "Filter über Mailingliste"
-
-#: mail/folder-browser.c:871
-msgid "VFolder on Mailing List"
-msgstr "VOrdner über Mailingliste"
-
-#: mail/folder-browser.c:873
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr "Filter über Mailingliste (%s)"
-
-#: mail/folder-browser.c:874
-#, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr "VOrdner über Mailingliste (%s)"
-
-#: mail/folder-browser-factory.c:196
-#, c-format
-msgid "Properties for \"%s\""
-msgstr "Eigenschaften von \"%s\""
-
-#: mail/folder-browser-factory.c:198 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-msgid "Properties"
-msgstr "Eigenschaften"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr "Evolution-Komponente für den Umgang mit Mail."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-msgid "Evolution mail composer."
-msgstr "Evolution-Mailersteller."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-msgid "Evolution mail executive summary component."
-msgstr "Evolutions Mail-Chefsesselansicht-Komponente."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-msgid "Evolution mail folder display component."
-msgstr "Evolution-Komponente zur Mailordneranzeige."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-msgid "Evolution mail folder factory component."
-msgstr "Evolution-Mailordner-Factory-Komponente."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-msgid "Factory for the Evolution composer."
-msgstr "Factory für den Evolution-Maileditor."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-msgid "Factory for the Evolution mail component."
-msgstr "Factory für die Evolution-Mail-Komponente."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-msgid "Factory for the Mail Summary component."
-msgstr "Factory für die Mailzusammenfassungs-Komponente."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:9
-msgid "Mail configuration interface"
-msgstr "Mailkonfigurations-Oberfläche"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:1
-msgid "Factory to import mbox into Evolution"
-msgstr "Factory, um mbox in Evolution zu importieren."
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:2
-msgid "Imports mbox files into Evolution"
-msgstr "Importiert mbox-Dateien in Evolution."
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:1
-msgid "Factory to import Outlook Express 4 mails into Evolution"
-msgstr "Factory, um Outlook-Express-4-Mails in Evolution zu importieren."
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:2
-msgid "Imports Outlook Express 4 files into Evolution"
-msgstr "Importiert Outlook-Express-4-Dateien in Evolution."
-
-#: mail/local-config.glade.h:1
-msgid "Current store format:"
-msgstr "Aktuelles Speicherformat:"
-
-#: mail/local-config.glade.h:2
-msgid "Mailbox Format"
-msgstr "Postfach-Format"
-
-#: mail/local-config.glade.h:3
-msgid "New store format:"
-msgstr "Neues Speicherformat:"
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-"Hinweis: Beim Konvertieren zwischen Postfach-Formaten\n"
-"kann ein Fehler (wie z.B. fehlender Plattenplatz)\n"
-"eventuell nicht automatisch behoben werden. Bitte\n"
-"verwenden Sie diese Funktion mit Vorsicht."
-
-#: mail/local-config.glade.h:7
-msgid "maildir"
-msgstr "maildir"
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr "mbox"
-
-#: mail/local-config.glade.h:9
-msgid "mh"
-msgstr "mh"
-
-#: mail/mail-account-editor.c:105
-msgid "You have not filled in all of the required information."
-msgstr "Sie haben nicht alle benötigten Felder ausgefüllt."
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:173
-msgid "Evolution Account Editor"
-msgstr "Evolution-Accounteditor"
-
-#: mail/mail-accounts.c:121 mail/mail-accounts.c:165
-msgid " (default)"
-msgstr " (voreingestellt)"
-
-#: mail/mail-accounts.c:197
-msgid "Disable"
-msgstr "Deaktivieren"
-
-#: mail/mail-accounts.c:199 mail/mail-config.glade.h:30
-msgid "Enable"
-msgstr "Aktivieren"
-
-#: mail/mail-accounts.c:280 mail/mail-accounts.c:284
-msgid "Are you sure you want to delete this account?"
-msgstr "Sind Sie sicher, dass Sie diesen Account löschen wollen?"
-
-#: mail/mail-accounts.c:418 mail/mail-accounts.c:422
-msgid "Are you sure you want to delete this news account?"
-msgstr "Sind Sie sicher, dass Sie diesen News-Account löschen wollen?"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:568
-msgid "Evolution Account Manager"
-msgstr "Evolution-Accountverwaltung"
-
-#: mail/mail-autofilter.c:70
-#, c-format
-msgid "Mail to %s"
-msgstr "Mail an %s"
-
-#: mail/mail-autofilter.c:213
-#, c-format
-msgid "Subject is %s"
-msgstr "Betreff ist %s"
-
-#: mail/mail-autofilter.c:229
-#, c-format
-msgid "Mail from %s"
-msgstr "E-Mail von %s"
-
-#: mail/mail-autofilter.c:285
-#, c-format
-msgid "%s mailing list"
-msgstr "Mailingliste %s"
-
-#: mail/mail-autofilter.c:335 mail/mail-autofilter.c:356
-msgid "Add Filter Rule"
-msgstr "Filterregel hinzufügen"
-
-#: mail/mail-callbacks.c:93
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-"Sie haben den Mailclient nicht konfiguriert.\n"
-"Sie müssen dies tun, bevor Sie Mail senden,\n"
-"empfangen oder erstellen können.\n"
-"Möchten Sie ihn jetzt konfigurieren?"
-
-#: mail/mail-callbacks.c:146
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-"Sie müssen eine Identität einrichten,\n"
-"bevor Sie Mail erstellen können."
-
-#: mail/mail-callbacks.c:158
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-"Sie müssen einen Mailtransport einrichten,\n"
-"bevor Sie Mail erstellen können."
-
-#: mail/mail-callbacks.c:202
-msgid "You have not set a mail transport method"
-msgstr "Sie haben keine Mailtransport-Methode eingestellt"
-
-#: mail/mail-callbacks.c:235
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-"Diese Nachricht hat keinen Betreff.\n"
-"Wirklich senden?"
-
-#: mail/mail-callbacks.c:308
-msgid "You must specify recipients in order to send this message."
-msgstr "Sie müssen Empfänger angeben, um diese Nachricht zu senden."
-
-#: mail/mail-callbacks.c:351
-msgid "You must configure an account before you can send this email."
-msgstr ""
-"Sie müssen einen Account einrichten, bevor Sie diese Mail senden können."
-
-#: mail/mail-callbacks.c:594
-#, c-format
-msgid "On %s, %s wrote:"
-msgstr "Am %s schrieb %s:"
-
-#: mail/mail-callbacks.c:756
-msgid "Forwarded message:\n"
-msgstr "Weitergeleitete Nachricht:\n"
-
-#: mail/mail-callbacks.c:850
-msgid "Move message(s) to"
-msgstr "Machricht(en) verschieben in"
-
-#: mail/mail-callbacks.c:852
-msgid "Copy message(s) to"
-msgstr "Machricht(en) kopieren in"
-
-#: mail/mail-callbacks.c:1017
-#, c-format
-msgid "Are you sure you want to edit all %d messages?"
-msgstr "Sind Sie sicher, dass Sie alle %d Nachrichten bearbeiten wollen?"
-
-#: mail/mail-callbacks.c:1039
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-"Sie können nur im Entwürfe-Ordner\n"
-"abgespeicherte Nachrichten bearbeiten."
-
-#: mail/mail-callbacks.c:1073
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-"Sie können nur Nachrichten im\n"
-"Gesendet-Ordner neu senden."
-
-#: mail/mail-callbacks.c:1085
-#, c-format
-msgid "Are you sure you want to resend all %d messages?"
-msgstr "Sind Sie sicher, dass Sie alle %d Nachrichten nochmals senden wollen?"
-
-#: mail/mail-callbacks.c:1106
-msgid "No Message Selected"
-msgstr "Keine Nachricht ausgewählt"
-
-#: mail/mail-callbacks.c:1140 mail/mail-display.c:92
-msgid "Overwrite file?"
-msgstr "Datei überschreiben?"
-
-#: mail/mail-callbacks.c:1144 mail/mail-display.c:96
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-"Eine Datei mit diesem Namen existiert bereits.\n"
-"Überschreiben?"
-
-#: mail/mail-callbacks.c:1188
-msgid "Save Message As..."
-msgstr "Nachricht speichern unter..."
-
-#: mail/mail-callbacks.c:1190
-msgid "Save Messages As..."
-msgstr "Nachrichten speichern unter..."
-
-#: mail/mail-callbacks.c:1349
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-"Fehler beim Laden von Filterinformation:\n"
-"%s"
-
-#: mail/mail-callbacks.c:1407
-msgid "Print Message"
-msgstr "Nachricht drucken"
-
-#: mail/mail-callbacks.c:1454
-msgid "Printing of message failed"
-msgstr "Drucken der Nachricht fehlgeschlagen"
-
-#: mail/mail-callbacks.c:1549
-#, c-format
-msgid "Are you sure you want to open all %d messages in separate windows?"
-msgstr ""
-"Sind Sie sicher, dass Sie alle %d Nachrichten in getrennten Fenstern öffnen "
-"wollen?"
-
-#: mail/mail-config.c:1213 mail/mail-config.c:1216
-msgid "Connecting to server..."
-msgstr "Verbindung zu Server..."
-
-#: mail/mail-config-druid.c:99
-msgid ""
-"Please enter your name and email address below. The \"optional\" fields "
-"below do not need to be filled in, unless you wish to include this "
-"information in email you send."
-msgstr ""
-"Bitte geben Sie unten Ihren Namen und Ihre E-Mail-Adresse an. Die "
-"\"optionalen\" Felder unten müssen nicht ausgefüllt werden, falls Sie diese "
-"Information nicht in der E-Mail, die Sie verschicken, einschließen wollen."
-
-#: mail/mail-config-druid.c:101
-msgid ""
-"Please enter information about your incoming mail server below. If you don't "
-"know what kind of server you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"Bitte geben Sie unten Informationen über Ihren Server für eingehende Mail "
-"an. Falls Sie nicht wissen, was für einen Server Sie verwenden, wenden Sie "
-"sich an Ihren Systemadministrator oder Internetprovider."
-
-#: mail/mail-config-druid.c:105
-msgid ""
-"Please enter information about your outgoing mail protocol below. If you "
-"don't know which protocol you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"Bitte geben Sie unten Informationen über Ihr Protokoll für ausgehende Mail "
-"an. Falls Sie nicht wissen, welches Protokoll Sie verwenden, wenden Sie sich "
-"an Ihren Systemadministrator oder Internetprovider."
-
-#: mail/mail-config-druid.c:107
-msgid ""
-"You are almost done with the mail configuration process. The identity, "
-"incoming mail server and outgoing mail transport method which you provided "
-"will be grouped together to make an Evolution mail account. Please enter a "
-"name for this account in the space below. This name will be used for display "
-"purposes only."
-msgstr ""
-"Sie haben Ihre Mailkonfiguration fast abgeschlossen. Die Identität, der "
-"Server für eingehende und das Protokoll für ausgehende Mail, die sie "
-"angegeben haben, werden zu einem Evolution-Mailzugang zusammengefasst. Bitte "
-"geben Sie in dem Feld unten einen Namen für diesen Zugang ein. Dieser Name "
-"wird nur für die Bildschirmanzeige verwendet."
-
-#. set window title
-#: mail/mail-config-druid.c:445
-msgid "Evolution Account Wizard"
-msgstr "Evolution-Account-Druide"
-
-#: mail/mail-config.glade.h:1
-msgid " Check for supported types "
-msgstr " Prüfen, welche Typen unterstützt werden "
-
-#: mail/mail-config.glade.h:2
-msgid " color"
-msgstr " Farbe"
-
-#: mail/mail-config.glade.h:3
-msgid "Account"
-msgstr "Account"
-
-#: mail/mail-config.glade.h:4
-msgid "Account Information"
-msgstr "Account-Information"
-
-#: mail/mail-config.glade.h:5
-msgid "Account Management"
-msgstr "Accountverwaltung"
-
-#: mail/mail-config.glade.h:6
-msgid "Accounts"
-msgstr "Zugänge"
-
-#: mail/mail-config.glade.h:8
-msgid "Always load images off the net"
-msgstr "Bilder immer aus dem Netz laden"
-
-#: mail/mail-config.glade.h:10
-msgid "Authentication"
-msgstr "Legitimation"
-
-#: mail/mail-config.glade.h:11
-msgid "Authentication Type: "
-msgstr "Legitimations-Typ: "
-
-#: mail/mail-config.glade.h:12
-msgid "Automatically check for new mail every"
-msgstr "Automatisch nach neuer Mail sehen alle"
-
-#: mail/mail-config.glade.h:14
-msgid "Composer"
-msgstr "Maileditor"
-
-#: mail/mail-config.glade.h:15
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-"Herzlichen Glückwunsch! Ihre Mailkonfiguration ist \n"
-"abgeschlossen.\n"
-"\n"
-"Sie können jetzt mit Evolution Mail senden und\n"
-"empfangen.\n"
-"\n"
-"Klicken Sie auf \"Beenden\", um Ihre Einstellungen zu\n"
-"speichern."
-
-#: mail/mail-config.glade.h:21
-msgid "De_fault"
-msgstr "_Vorgabe"
-
-#: mail/mail-config.glade.h:22
-msgid "Default \"Forward\" style is: "
-msgstr "Vorgegebener Weiterleitungsstil ist: "
-
-#: mail/mail-config.glade.h:25
-msgid "Done"
-msgstr "Fertig"
-
-#: mail/mail-config.glade.h:26
-msgid "Drafts"
-msgstr "Entwürfe"
-
-#: mail/mail-config.glade.h:27
-msgid "Drafts folder:"
-msgstr "Entwürfe-Ordner:"
-
-#: mail/mail-config.glade.h:29
-msgid "Email Address:"
-msgstr "E-Mail-Adresse:"
-
-#: mail/mail-config.glade.h:31
-msgid "Full Name:"
-msgstr "Voller Name:"
-
-#: mail/mail-config.glade.h:32
-msgid "Highlight citations with"
-msgstr "Zitate markieren mit"
-
-#: mail/mail-config.glade.h:34
-msgid "IMAPv4 "
-msgstr "IMAPv4 "
-
-#: mail/mail-config.glade.h:35
-msgid "Identity"
-msgstr "Identität"
-
-#: mail/mail-config.glade.h:36
-msgid "In HTML mail"
-msgstr "In HTML-Mail"
-
-#: mail/mail-config.glade.h:37
-msgid "Inline"
-msgstr "An Ort und Stelle"
-
-#: mail/mail-config.glade.h:38
-msgid "Kerberos "
-msgstr "Kerberos "
-
-#: mail/mail-config.glade.h:39
-msgid "Load images if sender is in addressbook"
-msgstr "Bilder laden, falls Absender im Adressbuch ist"
-
-#: mail/mail-config.glade.h:40
-msgid "Mail Configuration"
-msgstr "Mailkonfiguration"
-
-#: mail/mail-config.glade.h:41
-msgid "Make this my default account"
-msgstr "Dies zu meinem Standardaccount machen"
-
-#: mail/mail-config.glade.h:42
-msgid "Mark messages as \"Read\" after:"
-msgstr "Nachrichten als \"Gelesen\" markieren nach:"
-
-#: mail/mail-config.glade.h:44
-msgid "Never load images off the net"
-msgstr "Bilder nie aus dem Netz laden"
-
-#: mail/mail-config.glade.h:45
-msgid "News"
-msgstr "Nachrichten"
-
-#: mail/mail-config.glade.h:47
-msgid "Optional Information"
-msgstr "Optionale Information"
-
-#: mail/mail-config.glade.h:48
-msgid "Organization:"
-msgstr "Organisation:"
-
-#: mail/mail-config.glade.h:49
-msgid "PGP"
-msgstr "PGP"
-
-#: mail/mail-config.glade.h:50
-msgid "PGP binary path:"
-msgstr "Pfad zur PGP-Binärdatei:"
-
-#: mail/mail-config.glade.h:55
-msgid "Qmail maildir "
-msgstr "Qmail-maildir "
-
-#: mail/mail-config.glade.h:56
-msgid "Quoted"
-msgstr "Umschrieben"
-
-#: mail/mail-config.glade.h:57
-msgid "Receiving Email"
-msgstr "Mail erhalten"
-
-#: mail/mail-config.glade.h:58
-msgid "Receiving Mail"
-msgstr "Mail erhalten"
-
-#: mail/mail-config.glade.h:59
-msgid "Receiving Options"
-msgstr "Empfangs-Optionen"
-
-#: mail/mail-config.glade.h:61
-msgid "Required Information"
-msgstr "Benötigte Information"
-
-#: mail/mail-config.glade.h:63
-msgid "Select PGP binary"
-msgstr "PGP-Binärdatei wählen"
-
-#: mail/mail-config.glade.h:64
-msgid "Send mail in HTML format by default."
-msgstr "Mail normalerweise im HTML-Format senden."
-
-#: mail/mail-config.glade.h:65
-msgid "Sending Email"
-msgstr "E-Mail senden"
-
-#: mail/mail-config.glade.h:66
-msgid "Sending Mail"
-msgstr "Mail senden"
-
-#: mail/mail-config.glade.h:68
-msgid "Sent"
-msgstr "Gesendet"
-
-#: mail/mail-config.glade.h:69
-msgid "Sent and Draft Messages"
-msgstr "Nachrichten in \"Gesendet\" und \"Entwürfe\""
-
-#: mail/mail-config.glade.h:70
-msgid "Sent messages folder:"
-msgstr "Ordner für gesendete Nachrichten:"
-
-#: mail/mail-config.glade.h:71
-msgid "Server Configuration"
-msgstr "Server-Konfiguration"
-
-#: mail/mail-config.glade.h:72
-msgid "Server Type: "
-msgstr "Servertyp: "
-
-#: mail/mail-config.glade.h:73
-msgid "Server requires authentication"
-msgstr "Server benötigt Legitimation"
-
-#: mail/mail-config.glade.h:74
-msgid "Signature file:"
-msgstr "Signaturdatei:"
-
-#: mail/mail-config.glade.h:75
-msgid "Sources"
-msgstr "Quellen"
-
-#: mail/mail-config.glade.h:76
-msgid "Special Folders"
-msgstr "Besondere Ordner"
-
-#: mail/mail-config.glade.h:77
-msgid "Standard Unix mbox"
-msgstr "Standard-Unix-mbox"
-
-#: mail/mail-config.glade.h:78
-msgid "Type"
-msgstr "Typ"
-
-#: mail/mail-config.glade.h:79
-msgid "Use secure connection (SSL)"
-msgstr "Sichere Verbindung (SSL) verwenden"
-
-#: mail/mail-config.glade.h:80
-msgid "Username:"
-msgstr "Benutzername:"
-
-#: mail/mail-config.glade.h:81
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-"Willkommen zum Evolution-Mailkonfigurations-Druiden!\n"
-"\n"
-"Klicken Sie \"Weiter\" zum Beginnen."
-
-#: mail/mail-config.glade.h:86 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:45 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:36
-msgid "_Edit"
-msgstr "_Bearbeiten"
-
-#: mail/mail-crypto.c:59
-msgid "Could not create a PGP signature context."
-msgstr "PGP-Signaturkontext konnte nicht angelegt werden."
-
-#: mail/mail-crypto.c:84
-msgid "Could not create a PGP verification context."
-msgstr "PGP-Überprüfungskontext konnte nicht angelegt werden."
-
-#: mail/mail-crypto.c:113
-msgid "Could not create a PGP encryption context."
-msgstr "PGP-Verschlüsselungskontext konnte nicht angelegt werden."
-
-#: mail/mail-crypto.c:138
-msgid "Could not create a PGP decryption context."
-msgstr "PGP-Entschlüsselungskontext konnte nicht angelegt werden."
-
-#: mail/mail-crypto.c:169
-msgid "Could not create a S/MIME signature context."
-msgstr "S/MIME-Signaturkontext konnte nicht angelegt werden."
-
-#: mail/mail-crypto.c:195
-msgid "Could not create a S/MIME verification context."
-msgstr "S/MIME-Überprüfungskontext konnte nicht angelegt werden."
-
-#: mail/mail-crypto.c:225
-msgid "Could not create a S/MIME encryption context."
-msgstr "S/MIME-Verschlüsselungskontext konnte nicht angelegt werden."
-
-#: mail/mail-crypto.c:251
-msgid "Could not create a S/MIME decryption context."
-msgstr "S/MIME-Entschlüsselungskontext konnte nicht angelegt werden."
-
-#: mail/mail-display.c:196
-msgid "Save Attachment"
-msgstr "Anlage speichern"
-
-#: mail/mail-display.c:236
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr "Temporäres Verzeichnis konnte nicht angelegt werden: %s"
-
-#: mail/mail-display.c:297
-msgid "Save to Disk..."
-msgstr "Auf Platte speichern..."
-
-#: mail/mail-display.c:299
-#, c-format
-msgid "Open in %s..."
-msgstr "Öffnen in %s..."
-
-#: mail/mail-display.c:301
-msgid "View Inline"
-msgstr "An Ort und Stelle betrachten"
-
-#: mail/mail-display.c:336
-msgid "External Viewer"
-msgstr "Externer Betrachter"
-
-#: mail/mail-display.c:359
-#, c-format
-msgid "View Inline (via %s)"
-msgstr "An Ort und Stelle betrachten (über %s)"
-
-#: mail/mail-display.c:363
-msgid "Hide"
-msgstr "Verbergen"
-
-#: mail/mail-display.c:962
-msgid "Loading message content"
-msgstr "Laden des Nachrichteninhalts"
-
-#: mail/mail-display.c:1256
-msgid "Open link in browser"
-msgstr "Link in Browser öffnen"
-
-#: mail/mail-display.c:1258
-msgid "Save as (FIXME)"
-msgstr "Speichern unter (FIXME)"
-
-#: mail/mail-display.c:1260
-msgid "Copy location (FIXME)"
-msgstr "Ort kopieren (FIXME)"
-
-#: mail/mail-format.c:527
-#, c-format
-msgid "%s attachment"
-msgstr "%s-Anlage"
-
-#: mail/mail-format.c:573
-msgid "Could not parse MIME message. Displaying as source."
-msgstr ""
-"MIME-Nachricht konnte nicht geparst werden. Wird als Quellcode angezeigt."
-
-#: mail/mail-format.c:640 mail/message-list.c:1082
-msgid "Date"
-msgstr "Datum"
-
-#: mail/mail-format.c:756 mail/message-list.c:1082
-msgid "From"
-msgstr "Von"
-
-#: mail/mail-format.c:759
-msgid "Reply-To"
-msgstr "Antwort an"
-
-#: mail/mail-format.c:762 mail/message-list.c:1083
-msgid "To"
-msgstr "An"
-
-#: mail/mail-format.c:765
-msgid "Cc"
-msgstr "Cc"
-
-#: mail/mail-format.c:1075
-msgid "No GPG/PGP program configured."
-msgstr "Kein GPG/PGP-Programm konfiguriert."
-
-#: mail/mail-format.c:1090
-msgid "Encrypted message not displayed"
-msgstr "Verschlüsselte Nachricht nicht angezeigt"
-
-#: mail/mail-format.c:1096
-msgid "Encrypted message"
-msgstr "Verschlüsselte Nachricht"
-
-#: mail/mail-format.c:1097
-msgid "Click icon to decrypt."
-msgstr "Zum Entschlüsseln Icon klicken."
-
-#: mail/mail-format.c:1153
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr ""
-"Diese Nachricht ist digital signiert und wurde als authentisch nachgewiesen."
-
-#: mail/mail-format.c:1161
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr ""
-"Diese Nachricht ist digital signiert, kann aber nicht als authentisch "
-"nachgewiesen werden."
-
-#: mail/mail-format.c:1787
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr "Zeiger auf FTP-Site (%s)"
-
-#: mail/mail-format.c:1799
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr "Zeiger auf lokale Datei (%s) gültig auf Site \"%s\""
-
-#: mail/mail-format.c:1803
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr "Zeiger auf lokale Datei (%s)"
-
-#: mail/mail-format.c:1837
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr "Zeiger auf unbekannte externe Daten (Typ \"%s\")"
-
-#: mail/mail-format.c:1842
-msgid "Malformed external-body part."
-msgstr "Ungültiger external-body-Teil."
-
-#: mail/mail-local.c:505
-#, c-format
-msgid "Opening '%s'"
-msgstr "Öffnen von '%s'..."
-
-#: mail/mail-local.c:785
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr "Wandle Ordner \"%s\" in \"%s\"-Format um"
-
-#: mail/mail-local.c:789
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr "Ordner \"%s\" in \"%s\"-Format umwandeln"
-
-#: mail/mail-local.c:812
-msgid "Reconfiguring folder"
-msgstr "Ordner wird neu konfiguriert"
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:841
-msgid "Closing current folder"
-msgstr "Aktueller Ordner wird geschlossen"
-
-#: mail/mail-local.c:873
-msgid "Renaming old folder and opening"
-msgstr "Alter Ordner wird umbenannt und geöffnet"
-
-#: mail/mail-local.c:891
-msgid "Creating new folder"
-msgstr "Neuer Ordner wird angelegt"
-
-#: mail/mail-local.c:905
-msgid "Copying messages"
-msgstr "Nachrichten werden kopiert"
-
-#: mail/mail-local.c:922
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-"Metainformationen zu Ordner können nicht gespeichert werden; Sie\n"
-"werden ihn wahrscheinlich nie mehr öffnen können: %s"
-
-#: mail/mail-local.c:961
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr "Datei %s konnte nicht geladen werden"
-
-#: mail/mail-mt.c:190
-#, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-"Fehler beim `%s':\n"
-"%s"
-
-#: mail/mail-mt.c:193
-#, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-"Fehler beim Ausführen eines Vorgangs:\n"
-"%s"
-
-#: mail/mail-mt.c:516 mail/mail-mt.c:545 mail/mail-mt.c:880
-msgid "Working"
-msgstr "In Arbeit"
-
-#: mail/mail-mt.c:862
-msgid "Evolution progress"
-msgstr "Evolution-Fortschritt"
-
-#: mail/mail-ops.c:599
-#, c-format
-msgid "Sending \"%s\""
-msgstr "Sende \"%s\""
-
-#: mail/mail-ops.c:603
-msgid "Sending message"
-msgstr "Nachricht senden"
-
-#: mail/mail-ops.c:718
-#, c-format
-msgid "Sending message %d of %d"
-msgstr "Nachricht %d von %d wird gesendet"
-
-#: mail/mail-ops.c:737
-#, c-format
-msgid "Failed on message %d of %d"
-msgstr "Fehlgeschlagen bei Nachricht %d von %d"
-
-#: mail/mail-ops.c:739 mail/mail-send-recv.c:475
-msgid "Complete."
-msgstr "Abgeschlossen."
-
-#: mail/mail-ops.c:825
-msgid "Saving message to folder"
-msgstr "Nachricht wird in Ordner gespeichert"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Moving messages to %s"
-msgstr "Machrichten werden nach %s verschoben"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Copying messages to %s"
-msgstr "Nachrichten werden nach %s kopiert"
-
-#: mail/mail-ops.c:914
-msgid "Moving"
-msgstr "Verschiebe"
-
-#: mail/mail-ops.c:917
-msgid "Copying"
-msgstr "Kopiere"
-
-#: mail/mail-ops.c:992
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr "Taste Ordner in \"%s\" ab"
-
-#: mail/mail-ops.c:1154
-msgid "Forwarded messages"
-msgstr "Weitergeleitete Nachrichten"
-
-#: mail/mail-ops.c:1195 mail/mail-ops.c:1333
-#, c-format
-msgid "Opening folder %s"
-msgstr "Ordner %s öffnen"
-
-#: mail/mail-ops.c:1262
-#, c-format
-msgid "Opening store %s"
-msgstr "Öffnen des Speichers %s"
-
-#: mail/mail-ops.c:1449
-msgid "Expunging folder"
-msgstr "Säubere Ordner"
-
-#: mail/mail-ops.c:1498
-#, c-format
-msgid "Retrieving message %s"
-msgstr "Nachricht %s abrufen"
-
-#: mail/mail-ops.c:1565
-msgid "Retrieving messages"
-msgstr "Nachrichten abrufen"
-
-#: mail/mail-ops.c:1575
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr "Rufe Nachricht Nummer %d von %d ab (UID \"%s\")"
-
-#: mail/mail-ops.c:1649
-msgid "Saving messages"
-msgstr "Nachrichten speichern"
-
-#: mail/mail-ops.c:1728
-#, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr ""
-"Ausgabedatei konnte nicht erstellt werden: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1741
-#, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr "Nachricht %d von %d (UID \"%s\") speichern"
-
-#: mail/mail-ops.c:1755
-#, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr ""
-"Fehler beim Speichern der Nachrichten in: %s\n"
-"%s"
-
-#: mail/mail-ops.c:1829
-msgid "Saving attachment"
-msgstr "Speichern der Anlage"
-
-#: mail/mail-ops.c:1844
-#, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr ""
-"Ausgabedatei kann nicht erstellt werden: %s:\n"
-" %s"
-
-#: mail/mail-ops.c:1872
-#, c-format
-msgid "Could not write data: %s"
-msgstr "Daten konnten nicht geschrieben werden: %s"
-
-#: mail/mail-ops.c:1939
-#, c-format
-msgid "Disconnecting from %s"
-msgstr "Verbindung mit %s wird getrennt"
-
-#: mail/mail-search.c:138
-msgid "(Untitled Message)"
-msgstr "(Unbenannte Nachricht)"
-
-#: mail/mail-search.c:268
-msgid "Find in Message"
-msgstr "In Nachricht suchen"
-
-#: mail/mail-search.c:298
-msgid "Case Sensitive"
-msgstr "Groß-/Kleinschreibung beachten"
-
-#: mail/mail-search.c:299
-msgid "Search Forward"
-msgstr "Vorwärts suchen"
-
-#: mail/mail-search.c:316
-msgid "Find:"
-msgstr "Suchen:"
-
-#: mail/mail-search.c:319
-msgid "Matches:"
-msgstr "Passt auf:"
-
-#: mail/mail-search-dialogue.c:113
-msgid "_Search"
-msgstr "_Suchen"
-
-#: mail/mail-send-recv.c:138
-msgid "Cancelling..."
-msgstr "Stornieren..."
-
-#: mail/mail-send-recv.c:233
-msgid "Send & Receive mail"
-msgstr "Mail erhalten & senden"
-
-#: mail/mail-send-recv.c:236
-msgid "Receiving"
-msgstr "Erhalten"
-
-#: mail/mail-send-recv.c:285
-msgid "Updating..."
-msgstr "Aktualisieren..."
-
-#: mail/mail-send-recv.c:287 mail/mail-send-recv.c:333
-msgid "Waiting..."
-msgstr "Warten..."
-
-#: mail/mail-send-recv.c:306
-msgid "Sending"
-msgstr "Senden"
-
-#: mail/mail-send-recv.c:471
-msgid "Cancelled."
-msgstr "Storniert"
-
-#: mail/mail-summary.c:110
-msgid "Incomplete message written on pipe!"
-msgstr "Unvollständige Nachricht auf Pipe geschrieben!"
-
-#: mail/mail-summary.c:468
-msgid "Mail Summary"
-msgstr "Mail-Zusammenfassung"
-
-#: mail/mail-tools.c:145
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr "Temporäre Mbox `%s' konnte nicht angelegt werden: %s"
-
-#: mail/mail-tools.c:192
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr "[%s] (weitergeleitete Nachricht)"
-
-#: mail/mail-tools.c:202
-msgid "Fwd: (no subject)"
-msgstr "Fwd: (kein Betreff)"
-
-#: mail/mail-tools.c:219
-#, c-format
-msgid "Forwarded message - %s"
-msgstr "Weitergeleitete Nachricht - %s"
-
-#: mail/mail-tools.c:221
-msgid "Forwarded message (no subject)"
-msgstr "Weitergeleitete Nachricht (kein Betreff)"
-
-#: mail/mail-tools.c:428
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-msgstr ""
-"-----Weitergeleitete Nachricht-----<br><b>Von:</b> %s<br><b>An:</b> "
-"%s<br><b>Betreff:</b> %s<br>"
-
-#: mail/mail-vfolder.c:249
-msgid "VFolders"
-msgstr "VOrdner"
-
-#: mail/mail-vfolder.c:438
-msgid "New VFolder"
-msgstr "Neuer VOrdner"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/message-browser.c:188 ui/evolution-mail.xml.h:70
-msgid "Reply"
-msgstr "Antworten"
-
-#: mail/message-browser.c:188
-msgid "Reply to the sender of this message"
-msgstr "An den Absender der Nachricht antworten"
-
-#: mail/message-browser.c:191 ui/evolution-mail.xml.h:71
-msgid "Reply to All"
-msgstr "Allen antworten"
-
-#: mail/message-browser.c:191
-msgid "Reply to all recipients of this message"
-msgstr "allen Empfängern der Nachricht antworten"
-
-#: mail/message-browser.c:194 ui/evolution-mail.xml.h:33
-msgid "Forward"
-msgstr "Weiterleiten"
-
-#: mail/message-browser.c:194
-msgid "Forward this message"
-msgstr "Die Nachricht weiterleiten"
-
-#: mail/message-browser.c:199
-msgid "Print the selected message"
-msgstr "Die gewählte Nachricht drucken"
-
-#: mail/message-browser.c:202
-msgid "Delete this message"
-msgstr "Die Nachricht löschen"
-
-#: mail/message-browser.c:207 ui/evolution-event-editor.xml.h:33
-#: ui/evolution-mail.xml.h:64 ui/evolution-task-editor-dialog.xml.h:36
-msgid "Previous"
-msgstr "Zurück"
-
-#: mail/message-browser.c:207
-msgid "Previous message"
-msgstr "Vorige Nachricht"
-
-#: mail/message-browser.c:210 ui/evolution-calendar.xml.h:18
-#: ui/evolution-event-editor.xml.h:29 ui/evolution-mail.xml.h:57
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "Next"
-msgstr "Weiter"
-
-#: mail/message-browser.c:210
-msgid "Next message"
-msgstr "Nächste Nachricht"
-
-#: mail/message-list.c:677
-msgid "Unseen"
-msgstr "Ungelesen"
-
-#: mail/message-list.c:679
-msgid "Answered"
-msgstr "Beantwortet"
-
-#: mail/message-list.c:680
-msgid "Multiple Unseen Messages"
-msgstr "Mehrere ungelesene Nachrichten"
-
-#: mail/message-list.c:681
-msgid "Multiple Messages"
-msgstr "Mehrere Nachrichten"
-
-#: mail/message-list.c:685
-msgid "Lowest"
-msgstr "Am niedrigsten"
-
-#: mail/message-list.c:686
-msgid "Lower"
-msgstr "Niedriger"
-
-#: mail/message-list.c:690
-msgid "Higher"
-msgstr "Höher"
-
-#: mail/message-list.c:691
-msgid "Highest"
-msgstr "Am höchsten"
-
-#: mail/message-list.c:941
-msgid "?"
-msgstr "?"
-
-#: mail/message-list.c:948
-msgid "Today %l:%M %p"
-msgstr "Heute %I:%M %p"
-
-#: mail/message-list.c:957
-msgid "Yesterday %l:%M %p"
-msgstr "Gestern %l:%M %p"
-
-#: mail/message-list.c:969
-msgid "%a %l:%M %p"
-msgstr "%a %I:%M %p"
-
-#: mail/message-list.c:977
-msgid "%b %d %l:%M %p"
-msgstr "%a %d %l:%M %p"
-
-#: mail/message-list.c:979
-msgid "%b %d %Y"
-msgstr "%b %d %Y"
-
-#: mail/message-list.c:1082
-msgid "Received"
-msgstr "Empfangen"
-
-#: mail/message-list.c:1083
-msgid "Size"
-msgstr "Größe"
-
-#: mail/mail-session.c:161
-msgid "User canceled operation."
-msgstr "Benutzer hat Aktion abgebrochen."
-
-#: mail/subscribe-dialog.c:76 shell/e-storage-set-view.c:48
-#: ui/evolution.xml.h:13
-msgid "Folder"
-msgstr "Ordner"
-
-#: mail/subscribe-dialog.c:77
-msgid "Store"
-msgstr "Speicher"
-
-#: mail/subscribe-dialog.c:138
-msgid "Display folders starting with:"
-msgstr "Ordner anzeigen, die beginnen mit:"
-
-#: mail/subscribe-dialog.c:168
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr "Erhalte Speicher für \"%s\""
-
-#: mail/subscribe-dialog.c:271
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr "Ordner \"%s\" wird abonniert"
-
-#: mail/subscribe-dialog.c:273
-#, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr "Abonnement auf Ordner \"%s\" wird abbestellt"
-
-#. Construct the app
-#: mail/subscribe-dialog.c:873
-msgid "Manage Subscriptions"
-msgstr "Abonnements verwalten"
-
-#: shell/e-setup.c:118 shell/e-setup.c:191
-msgid "Evolution installation"
-msgstr "Installation von Evolution"
-
-#: shell/e-setup.c:122
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-"Diese neue Version von Evolution muss zusätzliche Dateien in Ihr\n"
-"persönliches Evolution-Verzeichnis installieren"
-
-#: shell/e-setup.c:123
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr ""
-"Bitte klicken Sie \"OK\", um die Dateien zu installieren, oder \"Abbrechen\" "
-"zum Beenden."
-
-#: shell/e-setup.c:163
-msgid "Could not update files correctly"
-msgstr "Dateien konnte nicht korrekt aktualisiert werden"
-
-#: shell/e-setup.c:166 shell/e-setup.c:234
-msgid "Evolution files successfully installed."
-msgstr "Evolutions Dateien erfolgreich installiert."
-
-#: shell/e-setup.c:195
-msgid "This seems to be the first time you are running Evolution."
-msgstr "Dies scheint das erste Mal zu sein, dass Sie Evolution ausführen."
-
-#: shell/e-setup.c:196
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr ""
-"Bitte klicken Sie \"OK\", um Evolutions Benutzerdateien zu installieren "
-"unter:"
-
-#: shell/e-setup.c:215
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"Verzeichnis\n"
-"%s\n"
-"kann nicht angelegt werden.\n"
-"Fehler: %s"
-
-#: shell/e-setup.c:230
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-"Dateien können nicht in\n"
-"`%s'\n"
-"kopiert werden."
-
-#: shell/e-setup.c:255
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-"Die Datei `%s' ist kein Verzeichnis.\n"
-"Bitte verschieben Sie es, damit Evolution seine\n"
-"Benutzerdateien installieren kann."
-
-#: shell/e-setup.c:267
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-"Das Verzeichnis `%s' existiert, ist aber nicht\n"
-"das Evolution-Verzeichnis. Bitte verschieben Sie\n"
-"es, damit Evolution seine Benutzerdateien\n"
-"installieren kann."
-
-#: shell/e-shell.c:388
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr "Lokaler Speicher kann nicht eingestellt werden -- %s"
-
-#: shell/e-shell.c:1268
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-"Hoppla! Die Ansicht für `%s' ist unerwartet gestorben. :-(\n"
-"Das heißt wahrscheinlich, dass die %s-Komponente abgestürzt ist."
-
-#: shell/e-shell-folder-creation-dialog.c:99
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-"Der angegebene Ordner kann nicht erstellt werden:\n"
-"%s"
-
-#: shell/e-shell-folder-creation-dialog.c:156
-msgid "The specified folder name is not valid."
-msgstr "Der angegebene Ordnername ist nicht gültig"
-
-#: shell/e-shell-folder-creation-dialog.c:263
-msgid "Evolution - Create new folder"
-msgstr "Evolution - Neuen Ordner anlegen"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-"Der Typ des ausgewählten Ordners ist für die \n"
-"gewählte Operation nicht gültig."
-
-#: shell/e-shell-folder-selection-dialog.c:321
-msgid "New..."
-msgstr "Neu..."
-
-#: shell/e-shell-folder-title-bar.c:459 shell/e-shell-folder-title-bar.c:460
-msgid "(Untitled)"
-msgstr "(Namenlos)"
-
-#: shell/e-shell-importer.c:97
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-"Wählen Sie die Datei, die Sie in Evolution importieren wollen, und wählen "
-"Sie aus der Liste, welchen Typ die Datei hat.\n"
-"\n"
-"Sie können \"Automatisch\" wählen, wenn Sie ihn nicht wissen, und Evolution "
-"wird versuchen, ihn selber zu bestimmen."
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/e-shell-importer.c:192
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-"Importieren von %s\n"
-"Importeur nicht bereit.\n"
-"Es wird 5 Sekunden bis zum nächsten Versuch gewartet"
-
-#: shell/e-shell-importer.c:212 shell/e-shell-importer.c:243
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-"Importieren von %s\n"
-"Importiert wird Objekt %d."
-
-#: shell/e-shell-importer.c:353
-#, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr ""
-"Es gibt keinen Importeur, der mit\n"
-"%s\n"
-"umgehen kann"
-
-#: shell/e-shell-importer.c:363
-msgid "Importing"
-msgstr "Importieren"
-
-#: shell/e-shell-importer.c:371
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-"Importieren von %s.\n"
-"Starten von %s"
-
-#: shell/e-shell-importer.c:384
-#, c-format
-msgid "Error starting %s"
-msgstr "Fehler beim Starten von %s"
-
-#: shell/e-shell-importer.c:404
-#, c-format
-msgid "Error loading %s"
-msgstr "Fehler beim Laden von %s"
-
-#: shell/e-shell-importer.c:419
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-"Importieren von %s.\n"
-"Erstes Objekt wird importiert."
-
-#: shell/e-shell-importer.c:490
-msgid "Automatic"
-msgstr "Automatisch"
-
-#: shell/e-shell-importer.c:540
-msgid "Filename:"
-msgstr "Dateiname:"
-
-#: shell/e-shell-importer.c:545 shell/importer/import.glade.h:5
-msgid "Select a file"
-msgstr "Eine Datei wählen"
-
-#: shell/e-shell-importer.c:555
-msgid "File type:"
-msgstr "Dateityp:"
-
-#: shell/e-shell-importer.c:601
-msgid "Select folder"
-msgstr "Ordner wählen"
-
-#: shell/e-shell-offline-handler.c:554
-msgid "Closing connections..."
-msgstr "Verbindungen werden geschlossen..."
-
-#: shell/e-shell-view.c:149
-msgid "(No folder displayed)"
-msgstr "(Kein Ordner angezeigt)"
-
-#: shell/e-shell-view.c:1203
-#, c-format
-msgid "%s - Evolution %s"
-msgstr "%s - Evolution %s"
-
-#: shell/e-shell-view.c:1205
-#, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "%s - Evolution %s [%s]"
-
-#: shell/e-shell-view-menu.c:175
-msgid "Bug buddy was not found in your $PATH."
-msgstr "Der Fehlermelder kann nicht gefunden werden"
-
-#: shell/e-shell-view-menu.c:181
-msgid "Bug buddy could not be run."
-msgstr "Der Fehlermelder kann nicht starten"
-
-#: shell/e-shell-view-menu.c:226
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Copyright 1999, 2000, 2001 Ximian, Inc."
-
-#: shell/e-shell-view-menu.c:228
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-"Evolution ist eine Suite von Groupware-Anwendungen\n"
-"für Mail sowie Termin- und Kontaktverwaltung\n"
-"in der GNOME-Desktopumgebung."
-
-#: shell/e-shell-view-menu.c:392
-msgid "Go to folder..."
-msgstr "Gehe zu Ordner..."
-
-#: shell/e-shell-view-menu.c:576
-msgid "Work online"
-msgstr "Online arbeiten"
-
-#: shell/e-shell-view-menu.c:588 shell/e-shell-view-menu.c:600
-msgid "Work offline"
-msgstr "Offline arbeiten"
-
-#: shell/e-shortcuts.c:381
-msgid "Error saving shortcuts."
-msgstr "Fehler beim Speichern von Verknüpfungen."
-
-#: shell/e-shortcuts-view.c:134
-msgid "Create new shortcut group"
-msgstr "Neue Verknüpfungsgruppe anlegen"
-
-#: shell/e-shortcuts-view.c:137
-msgid "Group name:"
-msgstr "Gruppenname:"
-
-#: shell/e-shortcuts-view.c:260
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-"Wollen Sie wirklich Gruppe `%s' aus\n"
-"der Verknüpfungsleiste entfernen?"
-
-#: shell/e-shortcuts-view.c:265
-msgid "Don't remove"
-msgstr "Nicht entfernen"
-
-#: shell/e-shortcuts-view.c:276
-msgid "_Small Icons"
-msgstr "Kleine Icons"
-
-#: shell/e-shortcuts-view.c:277
-msgid "Show the shortcuts as small icons"
-msgstr "Die Verknüpfungen als kleine Icons anzeigen"
-
-#: shell/e-shortcuts-view.c:279
-msgid "_Large Icons"
-msgstr "Große Icons"
-
-#: shell/e-shortcuts-view.c:280
-msgid "Show the shortcuts as large icons"
-msgstr "Die Verknüpfungen als große Icons zeigen"
-
-#: shell/e-shortcuts-view.c:291
-msgid "_New Group..."
-msgstr "Neue Gruppe..."
-
-#: shell/e-shortcuts-view.c:292
-msgid "Create a new shortcut group"
-msgstr "Eine neue Verknüpfungsgruppe anlegen"
-
-#: shell/e-shortcuts-view.c:294
-msgid "_Remove This Group..."
-msgstr "Diese Gruppe entfernen..."
-
-#: shell/e-shortcuts-view.c:295
-msgid "Remove this shortcut group"
-msgstr "Diese Verknüpfungsgruppe entfernen"
-
-#: shell/e-shortcuts-view.c:300
-msgid "_Hide the Shortcut Bar"
-msgstr "Die Verknüpfungsleiste verbergen"
-
-#: shell/e-shortcuts-view.c:301
-msgid "Hide the shortcut bar"
-msgstr "Die Verknüpfungsleiste verbergen"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate"
-msgstr "Aktivieren"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate this shortcut"
-msgstr "Diese Verknüpfung aktivieren"
-
-#: shell/e-shortcuts-view.c:388
-msgid "Remove this shortcut from the shortcut bar"
-msgstr "Diese Verknüpfung aus der Verknüpfungsleiste entfernen"
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr "(Kein Name)"
-
-#: shell/e-storage.c:459
-msgid "No error"
-msgstr "Kein Fehler"
-
-#: shell/e-storage.c:461
-msgid "Generic error"
-msgstr "Allgemeiner Fehler"
-
-#: shell/e-storage.c:463
-msgid "A folder with the same name already exists"
-msgstr "Ein Ordner mit dem gleichen Namen existiert bereits"
-
-#: shell/e-storage.c:465
-msgid "The specified folder type is not valid"
-msgstr "Der angegebene Ordnertyp ist ungültig"
-
-#: shell/e-storage.c:467
-msgid "I/O error"
-msgstr "E-/A-Fehler"
-
-#: shell/e-storage.c:469
-msgid "Not enough space to create the folder"
-msgstr "Nicht genügend Platz, um den Ordner zu erstellen"
-
-#: shell/e-storage.c:471
-msgid "The specified folder was not found"
-msgstr "Der angegebene Ordner wurde nicht gefunden"
-
-#: shell/e-storage.c:473
-msgid "Function not implemented in this storage"
-msgstr "Funktion für diese Speicherweise nicht implementiert"
-
-#: shell/e-storage.c:475
-msgid "Permission denied"
-msgstr "Erlaubnis verweigert"
-
-#: shell/e-storage.c:477
-msgid "Operation not supported"
-msgstr "Operation nicht unterstützt"
-
-#: shell/e-storage.c:479
-msgid "The specified type is not supported in this storage"
-msgstr "Der angegebene Typ wird für diese Speicherweise nicht unterstützt"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-msgid "Folder name:"
-msgstr "Ordnername:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-msgid "Folder type:"
-msgstr "Ordnertyp:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-msgid "Specify where to create the folder:"
-msgstr "Angeben, wo der Ordner erstellt werden soll:"
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-msgid "The Evolution shell."
-msgstr "Die Evolution-Shell."
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr ""
-"Klicken Sie \"Importieren\", um den Import der Datei in Evolution zu "
-"beginnen."
-
-#: shell/importer/import.glade.h:2
-msgid "Evolution Import Utility"
-msgstr "Evolution-Importwerkzeug"
-
-#: shell/importer/import.glade.h:3
-msgid "Evolution Importer Utility"
-msgstr "Evolution-Importeur-Werkzeug"
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-"Willkommen zum Evolution-Importwerkzeug.\n"
-"Dieser Druide führt Sie durch das Importieren interner\n"
-"Dateien in Evolution."
-
-#: shell/importer/intelligent.c:186
-msgid "Importers"
-msgstr "Importeure"
-
-#: shell/main.c:82
-#, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-"Hallo. Viele Dank dafür, dass Sie sich die Zeit genommen haben, diese\n"
-"VORSCHAUVERSION der Evolution-Groupware-Suite herunterzuladen.\n"
-"\n"
-"Evolution ist noch nicht fertig. Es ist nahe dran, aber es gibt noch\n"
-"Stellen, wo Funktionen entweder fehlen oder nur halbwegs arbeiten.\n"
-"Wenn Sie nicht herausfinden können, wie etwas geht, liegt das\n"
-"wahrscheinlich daran, dass es noch nicht möglich ist! :-)\n"
-"\n"
-"Wir hoffen, dass Evolution für Sie benutzbar sein wird, aber wir\n"
-"halten es immer noch für notwendig, Sie zu warnen: Es könnte\n"
-"abstürzen, Ihre Mail verlieren, freilaufende Prozesse zurücklassen,\n"
-"100% Ihrer CPU verbrauchen, nicht akzeptierte Befehle an Ihre Server\n"
-"schicken und Sie ganz allgemein vor Ihren Freunden und Mitarbeitern\n"
-"lächerlich machen. Zu Risiken und Nebenwirkungen fragen Sie Ihren Arzt\n"
-"oder Apotheker.\n"
-"\n"
-"Wir hoffen, dass Ihnen die Ergebnisse unserer harten Arbeit gefallen\n"
-"werden, und wir hoffen auf Ihre Mitarbeit!\n"
-
-#: shell/main.c:107
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-"Danke.\n"
-"das Evolution-Team\n"
-
-#: shell/main.c:138
-msgid "Cannot initialize the Evolution shell."
-msgstr "Evolution-Shell kann nicht initialisiert werden."
-
-#: shell/main.c:184
-msgid "Disable splash screen"
-msgstr "Splashscreen deaktivieren"
-
-#: shell/main.c:185
-msgid "Send the debugging output of all components to a file."
-msgstr "Die Diagnoseausgabe aller Komponenten in eine Datei umleiten."
-
-#: shell/main.c:217
-msgid "Cannot initialize the Bonobo component system."
-msgstr "Das Bonobo-Komponentensystem kann nicht initialisiert werden."
-
-#: ui/evolution-addressbook.xml.h:2
-msgid "Create new contact"
-msgstr "Einen neuen Kontakt anlegen"
-
-#: ui/evolution-addressbook.xml.h:4
-msgid "Delete a contact"
-msgstr "Einen Kontakt löschen"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-msgid "Find"
-msgstr "Suchen"
-
-#: ui/evolution-addressbook.xml.h:6
-msgid "Find a contact"
-msgstr "Einen Kontakt suchen"
-
-#: ui/evolution-addressbook.xml.h:7
-msgid "New contact"
-msgstr "Neuer Kontakt"
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-mail.xml.h:63
-msgid "Previews the message to be printed"
-msgstr "Zeigt eine Vorschau der zu druckenden Nachricht"
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "Print contacts"
-msgstr "Kontakte drucken"
-
-#: ui/evolution-addressbook.xml.h:12
-msgid "Stop"
-msgstr "Stopp"
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "Stop Loading"
-msgstr "Laden abbrechen"
-
-#: ui/evolution-addressbook.xml.h:14
-msgid "View All"
-msgstr "Alle betrachten"
-
-#: ui/evolution-addressbook.xml.h:15
-msgid "View all contacts"
-msgstr "Alle Kontakte betrachten"
-
-#: ui/evolution-addressbook.xml.h:16
-msgid "_Addressbook Sources..."
-msgstr "_Adressbuch-Quellen..."
-
-#: ui/evolution-addressbook.xml.h:17
-msgid "_Contact"
-msgstr "_Kontakt"
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-msgid "_Print..."
-msgstr "_Drucken..."
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr "Nach Kontakten _suchen"
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-task-editor-dialog.xml.h:88
-#: ui/evolution.xml.h:50
-msgid "_Tools"
-msgstr "Werkzeuge"
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr "5 Tage"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-msgid "Alter preferences"
-msgstr "Einstellungen ändern"
-
-#: ui/evolution-calendar.xml.h:4
-msgid "Create a new all day Event"
-msgstr "Ein neues ganztägiges Ereignis anlegen"
-
-#: ui/evolution-calendar.xml.h:5
-msgid "Create a new appointment"
-msgstr "Einen neuen Termin anlegen"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr "Einen neuen Kalender anlegen"
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr "Tag"
-
-#: ui/evolution-calendar.xml.h:8
-msgid "Go To"
-msgstr "Gehe zu"
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr "In der Zeit zurückgehen"
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go forward in time"
-msgstr "In der Zeit vorangehen"
-
-#: ui/evolution-calendar.xml.h:11
-msgid "Go to _Date"
-msgstr "Gehe zu _Datum"
-
-#: ui/evolution-calendar.xml.h:12
-msgid "Go to _Today"
-msgstr "Zum _heutigen Tag"
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr "Zu bestimmtem Datum gehen"
-
-#: ui/evolution-calendar.xml.h:14
-msgid "Go to present time"
-msgstr "Zur aktuellen Zeit gehen"
-
-#: ui/evolution-calendar.xml.h:15
-msgid "Month"
-msgstr "Monat"
-
-#: ui/evolution-calendar.xml.h:17
-msgid "New _Event"
-msgstr "Neues _Ereignis"
-
-#: ui/evolution-calendar.xml.h:20
-msgid "Open Calendar"
-msgstr "Kalender öffnen"
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Prev"
-msgstr "Zurück"
-
-#: ui/evolution-calendar.xml.h:22
-msgid "Previews the calendar to be printed"
-msgstr "Zeigt eine Vorschau des zu druckenden Kalenders"
-
-#: ui/evolution-calendar.xml.h:25
-msgid "Print calendar"
-msgstr "Kalender drucken"
-
-#: ui/evolution-calendar.xml.h:26
-msgid "Print this Calendar"
-msgstr "Diesen Kalender drucken"
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:18
-msgid "Save As"
-msgstr "Speichern _unter"
-
-#: ui/evolution-calendar.xml.h:28
-msgid "Save calendar as something else"
-msgstr "Kalender als etwas anderes speichern"
-
-#: ui/evolution-calendar.xml.h:30
-msgid "Show 1 day"
-msgstr "Einen Tag zeigen"
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr "1 Monat zeigen"
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr "1 Woche zeigen"
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr "Die Arbeitswoche zeigen"
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:229
-#: widgets/misc/e-dateedit.c:424
-msgid "Today"
-msgstr "Heute"
-
-#: ui/evolution-calendar.xml.h:35
-msgid "W_ork Week"
-msgstr "_Arbeitswoche"
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr "Woche"
-
-#: ui/evolution-calendar.xml.h:37
-msgid "_Appointment"
-msgstr "_Termin"
-
-#: ui/evolution-calendar.xml.h:38
-msgid "_Day"
-msgstr "_Tag"
-
-#: ui/evolution-calendar.xml.h:39
-msgid "_Month"
-msgstr "_Monat"
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:45
-msgid "_New"
-msgstr "_Neu"
-
-#: ui/evolution-calendar.xml.h:41
-msgid "_Open Calendar"
-msgstr "Kalender öffnen"
-
-#: ui/evolution-calendar.xml.h:45
-msgid "_Week"
-msgstr "_Woche"
-
-#: ui/evolution-contact-editor.xml.h:2
-msgid "Delete this item"
-msgstr "Diesen Eintrag löschen"
-
-#: ui/evolution-contact-editor.xml.h:3
-msgid "Delete..."
-msgstr "Löschen..."
-
-#: ui/evolution-contact-editor.xml.h:4
-msgid "Help"
-msgstr "Hilfe"
-
-#: ui/evolution-contact-editor.xml.h:5
-msgid "Print En_velope..."
-msgstr "Umschlag drucken..."
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-msgid "Print this item"
-msgstr "Diesen Eintrag drucken"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:41
-msgid "Print..."
-msgstr "Drucken..."
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:19
-#: ui/evolution-task-editor-dialog.xml.h:51
-msgid "Save _As..."
-msgstr "Speichern _unter..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-msgid "Save and Close"
-msgstr "Speichern und schließen"
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr "Den Kontakt speichern und das Dialogfenster schließen"
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr "Kontakt an anderen senden..."
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr "Online-Hilfe einsehen"
-
-#: ui/evolution-contact-editor.xml.h:13
-msgid "Send _message to contact..."
-msgstr "_Nachricht an Kontakt senden..."
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:46 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:37
-msgid "_File"
-msgstr "_Datei"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:53
-#: ui/evolution-task-editor-dialog.xml.h:85
-msgid "_Save"
-msgstr "_Speichern"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr "Über diese Anwendung"
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr "Info..."
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-msgid "Actio_ns"
-msgstr "Aktio_nen"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-msgid "Address _Book... (FIXME)"
-msgstr "Adress_buch... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-msgid "C_lear"
-msgstr "_Löschen"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-msgid "C_ut"
-msgstr "Ausschneiden"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-msgid "Chec_k Names (FIXME)"
-msgstr "Namen prüfen (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-msgid "Clear"
-msgstr "Löschen"
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-msgid "Clear the selection"
-msgstr "Die Auswahl löschen"
-
-#: ui/evolution-event-editor.xml.h:11
-msgid "Close this appointment"
-msgstr "Diesen Termin abschließen"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "In Ordner kopieren... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:8
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "Kopieren"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-msgid "Copy the selection"
-msgstr "Die Auswahl kopieren"
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr "Ausschneiden"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Cut the selection"
-msgstr "Die Auswahl ausschneiden"
-
-#: ui/evolution-event-editor.xml.h:18
-msgid "Delete this appointment"
-msgstr "Diesen Termin löschen"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr "XML auswerfen"
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr "Die XML-UI-Beschreibung auswerfen"
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr "Erster Eintrag im Ordner (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-msgid "For_ward (FIXME)"
-msgstr "Weiterleiten (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr "Als vCalendar weiterleiten (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-msgid "Go to the next item"
-msgstr "Zum nächsten Eintrag gehen"
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-msgid "Go to the previous item"
-msgstr "Zum vorigen Eintrag gehen"
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-msgid "In_complete Task (FIXME)"
-msgstr "Unvollständige Aufgabe (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-msgid "Modify the file's properties"
-msgstr "Eigenschaften der Datei ändern"
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-msgid "N_ext"
-msgstr "Weiter"
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-msgid "Paste"
-msgstr "Einfügen"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-msgid "Paste the clipboard"
-msgstr "Inhalt der Zwischenablage einfügen"
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr "Zurück"
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-msgid "Print Pre_view"
-msgstr "Druckvorschau"
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-msgid "Print S_etup..."
-msgstr "Druckeinstellungen..."
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-msgid "Print Setup"
-msgstr "Druckeinstellungen"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:17
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:241
-msgid "Save"
-msgstr "Speichern"
-
-#: ui/evolution-event-editor.xml.h:43
-msgid "Save the appointment and close the dialog box"
-msgstr "Den Termin speichern und das Dialogfenster schließen"
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:23
-#: ui/evolution-task-editor-dialog.xml.h:53
-msgid "Save the current file"
-msgstr "Die aktuelle Datei speichern"
-
-#: ui/evolution-event-editor.xml.h:46
-msgid "Schedule _Meeting"
-msgstr "Besprechung ansetzen"
-
-#: ui/evolution-event-editor.xml.h:47
-msgid "Schedule some sort of a meeting"
-msgstr "Eine Besprechung ansetzen"
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-task-editor-dialog.xml.h:57
-msgid "Select All"
-msgstr "Alle auswählen"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-msgid "Select everything"
-msgstr "Alles auswählen"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr "Die Seiteneinstellungen für Ihren aktuellen Drucker einrichten"
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-msgid "Task _Request (FIXME)"
-msgstr "Aufgabenanfrage (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-task-editor-dialog.xml.h:63
-msgid "_About..."
-msgstr "Info..."
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:43
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:34
-msgid "_Close"
-msgstr "Schließen"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:35
-msgid "_Contact (FIXME)"
-msgstr "Kontakt (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-msgid "_Copy"
-msgstr "Kopieren"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:44
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr "_Diagnose"
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:48
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:41
-msgid "_Help"
-msgstr "_Hilfe"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-msgid "_Item (FIXME)"
-msgstr "Eintrag (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-msgid "_Journal Entry (FIXME)"
-msgstr "_Journaleintrag (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-msgid "_Last Item in Folder (FIXME)"
-msgstr "_Letzter Eintrag im Ordner (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-msgid "_Mail Message (FIXME)"
-msgstr "_Mailnachricht (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-msgid "_Move to Folder... (FIXME)"
-msgstr "In Ordner verschieben... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-msgid "_Note (FIXME)"
-msgstr "_Notiz (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-msgid "_Paste"
-msgstr "Einfügen"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:115
-#: ui/evolution-task-editor-dialog.xml.h:83
-msgid "_Properties..."
-msgstr "Eigenschaften..."
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-msgid "_Select All"
-msgstr "Alle auswählen"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:49
-msgid "_Task (FIXME)"
-msgstr "Aufgabe (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-msgid "_Unread Item (FIXME)"
-msgstr "_Ungelesener Eintrag (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:76 ui/evolution-message-composer.xml.h:55
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:51
-msgid "_View"
-msgstr "_Ansicht"
-
-#: ui/evolution-executive-summary.xml.h:1
-msgid "Add Service"
-msgstr "Dienst hinzufügen"
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr "Einen neuen Dienst zur Chefsesselansicht hinzufügen"
-
-#: ui/evolution-executive-summary.xml.h:3
-msgid "Create a new email"
-msgstr "Einen neue E-Mail erzeugen"
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr "Einstellungen der Chefsesselansicht..."
-
-#: ui/evolution-executive-summary.xml.h:5
-msgid "New Mail"
-msgstr "Neue Mail"
-
-#: ui/evolution-mail.xml.h:1
-msgid "Apply filter rules to the selected messages"
-msgstr "Filterregeln auf die gewählten Nachrichten anwenden"
-
-#: ui/evolution-mail.xml.h:2
-msgid "Cancel"
-msgstr "Abbrechen"
-
-#: ui/evolution-mail.xml.h:3
-msgid "Cancel the current mail operation"
-msgstr "Den aktuellen Mailvorgang abbrechen"
-
-#: ui/evolution-mail.xml.h:4
-msgid "Change the properties of this folder"
-msgstr "Die Eigenschaften dieses Ordners ändern"
-
-#: ui/evolution-mail.xml.h:5
-msgid "Compose"
-msgstr "Erstellen"
-
-#: ui/evolution-mail.xml.h:6
-msgid "Compose a reply to all of the recipients of the selected message"
-msgstr "Eine Antwort an alle Empfängern der gewählten Nachricht erstellen"
-
-#: ui/evolution-mail.xml.h:7
-msgid "Compose a reply to the sender of the selected message"
-msgstr "Eine Antwort an den Absender der gewählten Nachricht erstellen"
-
-#: ui/evolution-mail.xml.h:9
-msgid "Copy selected messages to another folder"
-msgstr "Ausgewählte Nachrichten in einen anderen Ordner kopieren"
-
-#: ui/evolution-mail.xml.h:10
-msgid "Create _Virtual Folder From Message"
-msgstr "_Virtuellen Ordner aus Nachricht erzeugen"
-
-#: ui/evolution-mail.xml.h:11
-msgid "Create a rule to filter messages from this sender"
-msgstr "Eine Regel erstellen, um Nachrichten von diesem Absender zu filtern"
-
-#: ui/evolution-mail.xml.h:12
-msgid "Create a rule to filter messages to these recipients"
-msgstr "Eine Regel erstellen, um Nachrichten an diese Empfänger zu filtern"
-
-#: ui/evolution-mail.xml.h:13
-msgid "Create a rule to filter messages to this mailing list"
-msgstr "Eine Regel erstellen, um Nachrichten an diese Mailingliste zu filtern"
-
-#: ui/evolution-mail.xml.h:14
-msgid "Create a rule to filter messages with this subject"
-msgstr "Eine Regel erstellen, um Nachrichten mit diesem Betreff zu filtern"
-
-#: ui/evolution-mail.xml.h:15
-msgid "Create a virtual folder for these recipients"
-msgstr "Einen virtuellen Ordner für diese Empfänger anlegen"
-
-#: ui/evolution-mail.xml.h:16
-msgid "Create a virtual folder for this mailing list"
-msgstr "Einen virtuellen Ordner für diese Mailingliste anlegen"
-
-#: ui/evolution-mail.xml.h:17
-msgid "Create a virtual folder for this sender"
-msgstr "Einen virtuellen Ordner für diesen Absender anlegen"
-
-#: ui/evolution-mail.xml.h:18
-msgid "Create a virtual folder for this subject"
-msgstr "Einen virtuellen Ordner für diesen Betreff anlegen"
-
-#: ui/evolution-mail.xml.h:19
-msgid "Create or edit mail accounts and other preferences"
-msgstr "Mailaccounts anlegen und bearbeiten sowie andere Vorlieben"
-
-#: ui/evolution-mail.xml.h:20
-msgid "Create or edit rules for filtering new mail"
-msgstr "Regeln zum Filtern neuer Mail anlegen oder bearbeiten"
-
-#: ui/evolution-mail.xml.h:21
-msgid "Create or edit virtual folder definitions"
-msgstr "Definitionen virtueller Ordner anlegen oder bearbeiten"
-
-#: ui/evolution-mail.xml.h:23
-msgid "Display the next message"
-msgstr "Die nächste Nachricht anzeigen"
-
-#: ui/evolution-mail.xml.h:24
-msgid "Display the previous message"
-msgstr "Die vorige Nachricht anzeigen"
-
-#: ui/evolution-mail.xml.h:25
-msgid "Empty _Trash"
-msgstr "_Müll leeren"
-
-#: ui/evolution-mail.xml.h:26
-msgid "Filter on Mailing _List"
-msgstr "Filter über Mailing_liste"
-
-#: ui/evolution-mail.xml.h:27
-msgid "Filter on Se_nder"
-msgstr "Filter über Absender"
-
-#: ui/evolution-mail.xml.h:28
-msgid "Filter on _Recipients"
-msgstr "Filter über Empfänger"
-
-#: ui/evolution-mail.xml.h:29
-msgid "Filter on _Subject"
-msgstr "Filter über _Betreff"
-
-#: ui/evolution-mail.xml.h:30
-msgid "Force images in HTML mail to be loaded"
-msgstr "Laden von Bildern in HTML-Mail erzwingen"
-
-#: ui/evolution-mail.xml.h:31
-msgid "Forget _Passwords"
-msgstr "Passwörter vergessen"
-
-#: ui/evolution-mail.xml.h:32
-msgid "Forget remembered passwords so you will be prompted for them again"
-msgstr "Erinnerte Passwörter vergessen, so dass Sie wieder nach ihnen gefragt werden"
-
-#: ui/evolution-mail.xml.h:34
-msgid "Forward As"
-msgstr "Weiterleiten als"
-
-#: ui/evolution-mail.xml.h:35
-msgid "Forward _Attached"
-msgstr "Als _Anlage weiterleiten"
-
-#: ui/evolution-mail.xml.h:36
-msgid "Forward _Inline"
-msgstr "An _Ort und Stelle weiterleiten"
-
-#: ui/evolution-mail.xml.h:37
-msgid "Forward _Quoted"
-msgstr "Als _Zitat weiterleiten"
-
-#: ui/evolution-mail.xml.h:38
-msgid "Forward the selected message in the body of a new message"
-msgstr "Die ausgewählte Nachricht im Rumpf einer neuen Nachricht weiterleiten"
-
-#: ui/evolution-mail.xml.h:39
-msgid "Forward the selected message quoted like a reply"
-msgstr "Die ausgewählte Nachricht als Zitat wie in einer Antwort weiterleiten"
-
-#: ui/evolution-mail.xml.h:40
-msgid "Forward the selected message to someone"
-msgstr "Die ausgewählte Nachricht an jemanden weiterleiten"
-
-#: ui/evolution-mail.xml.h:41
-msgid "Forward the selected message to someone as an attachment"
-msgstr "Die ausgewählte Nachricht an jemanden als Anlage weiterleiten"
-
-#: ui/evolution-mail.xml.h:42
-msgid "Hide S_elected Messages"
-msgstr "Gewählte Nachrichten _verbergen"
-
-#: ui/evolution-mail.xml.h:43
-msgid "Hide _Deleted Messages"
-msgstr "Ge_löschte Nachrichten verbergen"
-
-#: ui/evolution-mail.xml.h:44
-msgid "Hide _Read messages"
-msgstr "_Gelesene Nachrichten verbergen"
-
-#: ui/evolution-mail.xml.h:45
-msgid ""
-"Hide deleted messages rather than displaying them with a line through them"
-msgstr "Verborgene Nachrichten verbergen, statt sie durchgestrichen darzustellen"
-
-#: ui/evolution-mail.xml.h:46
-msgid "Load _Images"
-msgstr "_Bilder laden"
-
-#: ui/evolution-mail.xml.h:47
-msgid "Manage _Subscriptions..."
-msgstr "_Abonnements verwalten..."
-
-#: ui/evolution-mail.xml.h:48
-msgid "Mar_k As Read"
-msgstr "Als _gelesen markieren"
-
-#: ui/evolution-mail.xml.h:49
-msgid "Mark All as R_ead"
-msgstr "Alle als gelesen markieren"
-
-#: ui/evolution-mail.xml.h:50
-msgid "Mark As U_nread"
-msgstr "Als u_ngelesen markieren"
-
-#: ui/evolution-mail.xml.h:51
-msgid "Mark all visible messages as read"
-msgstr "Alle sichtbaren Nachrichten als gelesen markieren"
-
-#: ui/evolution-mail.xml.h:52
-msgid "Mark the selected messages as having been read"
-msgstr "Die gewählten Nachrichten als gelesen markieren"
-
-#: ui/evolution-mail.xml.h:53
-msgid "Mark the selected messages as not having been read"
-msgstr "Die ausgewählten Nachrichten als ungelesen markieren"
-
-#: ui/evolution-mail.xml.h:54
-msgid "Mark the selected messages for deletion"
-msgstr "Alle sichtbaren Nachrichten zum Löschen vorsehen"
-
-#: ui/evolution-mail.xml.h:55
-msgid "Move"
-msgstr "Verschieben"
-
-#: ui/evolution-mail.xml.h:56
-msgid "Move selected messages to another folder"
-msgstr "Ausgewählte Nachrichten in einen anderen Ordner kopieren"
-
-#: ui/evolution-mail.xml.h:58
-msgid "Open a window for composing a mail message"
-msgstr "Ein Fenster zum Erstellen einer Mailnachricht öffnen"
-
-#: ui/evolution-mail.xml.h:59
-msgid "Open the selected message in a new window"
-msgstr "Die ausgewählte Nachricht in einem neuen Fenster öffnen"
-
-#: ui/evolution-mail.xml.h:60
-msgid "Open the selected message in the composer to re-send it"
-msgstr "Die gewählte Nachrichten im Maileditor öffnen, um sie nochmals zu versenden"
-
-#: ui/evolution-mail.xml.h:61
-msgid "Permanently remove all deleted messages from all folders"
-msgstr "Alle gelöschten Nachrichten auf Dauer aus allen Ordnern entfernen"
-
-#: ui/evolution-mail.xml.h:62
-msgid "Permanently remove all deleted messages from this folder"
-msgstr "Alle gelöschten Nachrichten auf Dauer aus diesem Ordner entfernen"
-
-#: ui/evolution-mail.xml.h:66
-msgid "Print Message..."
-msgstr "Nachricht drucken..."
-
-#: ui/evolution-mail.xml.h:67
-msgid "Print Preview..."
-msgstr "Druckvorschau..."
-
-#: ui/evolution-mail.xml.h:68
-msgid "Print message to the printer"
-msgstr "Nachricht auf dem Drucker drucken"
-
-#: ui/evolution-mail.xml.h:69
-msgid "Redirect (FIXME: implement me)"
-msgstr "Umleitung (FIXME: implementier mich)"
-
-#: ui/evolution-mail.xml.h:73
-msgid "S_earch Message"
-msgstr "Nachricht durch_suchen"
-
-#: ui/evolution-mail.xml.h:74
-msgid "Save the message as a text file"
-msgstr "Die Nachricht als Textdatei speichern"
-
-#: ui/evolution-mail.xml.h:75
-msgid "Search for text in the body of the displayed message"
-msgstr "Im Rumpf der angezeigten Nachricht nach einem Text suchen"
-
-#: ui/evolution-mail.xml.h:76 ui/evolution-subscribe.xml.h:7
-msgid "Select _All"
-msgstr "_Alle auswählen"
-
-#: ui/evolution-mail.xml.h:77
-msgid "Select _Thread"
-msgstr "_Strang auswählen"
-
-#: ui/evolution-mail.xml.h:78
-msgid "Select all and only the messages that are not currently selected"
-msgstr "Alle momentan nicht ausgewählten Nachrichten und keine anderen auswählen"
-
-#: ui/evolution-mail.xml.h:79
-msgid "Select all messages in the same thread as the selected message"
-msgstr "Alle Nachrichten im selben Strang wie die ausgewählte Nachricht auswählen"
-
-#: ui/evolution-mail.xml.h:80
-msgid "Select all visible messages"
-msgstr "Alle sichtbaren Nachrichten wählen"
-
-#: ui/evolution-mail.xml.h:81
-msgid "Send / Receive"
-msgstr "Senden / Empfangen"
-
-#: ui/evolution-mail.xml.h:82
-msgid "Send queued mail and retrieve new mail"
-msgstr "Mail in der Warteschlange senden und neue Mail abholen"
-
-#: ui/evolution-mail.xml.h:83
-msgid "Show Email _Source"
-msgstr "E-Mail-_Quellcode anzeigen"
-
-#: ui/evolution-mail.xml.h:84
-msgid "Show Full _Headers"
-msgstr "Alle _Kopfzeilen anzeigen"
-
-#: ui/evolution-mail.xml.h:85
-msgid "Show _All"
-msgstr "Alle zeigen"
-
-#: ui/evolution-mail.xml.h:86
-msgid "Show message in the normal style"
-msgstr "Nachricht im normalen Stil zeigen"
-
-#: ui/evolution-mail.xml.h:87
-msgid "Show message with all email headers"
-msgstr "Nachricht mit allen E-Mail-Kopfzeilen zeigen"
-
-#: ui/evolution-mail.xml.h:88
-msgid "Show messages that have been temporarily hidden"
-msgstr "Nachrichten zeigen, die zeitweilig verborgen wurden"
-
-#: ui/evolution-mail.xml.h:89
-msgid "Show the raw email source of the message"
-msgstr "Den rohen E-Mail-Quellcode dieser Nachricht anzeigen"
-
-#: ui/evolution-mail.xml.h:90
-msgid "Subscribe or unsubscribe to folders on remote servers"
-msgstr "Ordner auf entfernten Servern abonnieren oder abbestellen"
-
-#: ui/evolution-mail.xml.h:91
-msgid "Temporarily hide all messages that have already been read"
-msgstr "Alle bereits gelesenen Nachrichten zeitweilig verbergen"
-
-#: ui/evolution-mail.xml.h:92
-msgid "Temporarily hide the selected messages"
-msgstr "Die gewählten Nachrichten zeitweilig verbergen"
-
-#: ui/evolution-mail.xml.h:93
-msgid "Threaded Message list"
-msgstr "Nachrichtenliste in Stränge geordnet"
-
-#: ui/evolution-mail.xml.h:94
-msgid "Un-delete the selected messages"
-msgstr "Löschen für ausgewählte Nachrichten rückgängig machen"
-
-#: ui/evolution-mail.xml.h:95
-msgid "VFolder on Mailing _List..."
-msgstr "VOrdner über Mailing_liste..."
-
-#: ui/evolution-mail.xml.h:96
-msgid "VFolder on Se_nder..."
-msgstr "VOrdner über _Absender..."
-
-#: ui/evolution-mail.xml.h:97
-msgid "VFolder on _Recipients..."
-msgstr "VOrdner über _Empfänger..."
-
-#: ui/evolution-mail.xml.h:98
-msgid "VFolder on _Subject..."
-msgstr "VOrdner über _Betreff..."
-
-#: ui/evolution-mail.xml.h:99
-msgid "Virtual Folder _Editor..."
-msgstr "_Editor für virtuelle Ordner..."
-
-#: ui/evolution-mail.xml.h:100
-msgid "_Apply Filters"
-msgstr "Filter _anwenden"
-
-#: ui/evolution-mail.xml.h:101
-msgid "_Copy to Folder"
-msgstr "In Ordner _kopieren"
-
-#: ui/evolution-mail.xml.h:102
-msgid "_Create Filter From Message"
-msgstr "Filter aus Nachricht _erzeugen"
-
-#: ui/evolution-mail.xml.h:104
-msgid "_Expunge"
-msgstr "_Säubern"
-
-#: ui/evolution-mail.xml.h:105
-msgid "_Filters..."
-msgstr "_Filter..."
-
-#: ui/evolution-mail.xml.h:106 ui/evolution.xml.h:38
-msgid "_Folder"
-msgstr "_Ordner"
-
-#: ui/evolution-mail.xml.h:107
-msgid "_Forward Message"
-msgstr "Nachricht _weiterleiten"
-
-#: ui/evolution-mail.xml.h:108 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr "Auswahl _umkehren"
-
-#: ui/evolution-mail.xml.h:109
-msgid "_Mail Message"
-msgstr "Nachricht _verschicken"
-
-#: ui/evolution-mail.xml.h:110
-msgid "_Mail Settings..."
-msgstr "_Mail-Einstellungen..."
-
-#: ui/evolution-mail.xml.h:111
-msgid "_Message Display"
-msgstr "_Nachrichtenanzeige"
-
-#: ui/evolution-mail.xml.h:112
-msgid "_Move to Folder"
-msgstr "In Ordner _verschieben"
-
-#: ui/evolution-mail.xml.h:113
-msgid "_Normal Display"
-msgstr "_Normale Anzeige"
-
-#: ui/evolution-mail.xml.h:114
-msgid "_Open Message"
-msgstr "Nachricht _öffnen"
-
-#: ui/evolution-mail.xml.h:116
-msgid "_Re-send Message"
-msgstr "Nachricht _nochmals senden"
-
-#: ui/evolution-mail.xml.h:119
-msgid "_Send / Receive"
-msgstr "_Senden / Empfangen"
-
-#: ui/evolution-mail.xml.h:120
-msgid "_Threaded Message List"
-msgstr "Nachrichtenliste in _Stränge geordnet"
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr "Beilegen"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-msgid "Close the current file"
-msgstr "Die aktuelle Datei schließen"
-
-#: ui/evolution-message-composer.xml.h:5
-msgid "Encrypt this message with PGP"
-msgstr "Diese Nachricht mit PGP verschlüsseln"
-
-#: ui/evolution-message-composer.xml.h:6
-msgid "Encrypt this message with your S/MIME Encryption Cetificate"
-msgstr "Diese Nachricht mit Ihrem S/MIME-Verschlüsselungszertifikat verschlüsseln"
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "F_ormat"
-msgstr "Format"
-
-#: ui/evolution-message-composer.xml.h:8
-msgid "HTML"
-msgstr "HTML"
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert a file as text into the message"
-msgstr "Eine Datei als Text in die Nachricht einfügen"
-
-#: ui/evolution-message-composer.xml.h:10
-msgid "Insert text file..."
-msgstr "Textdatei einfügen..."
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "Open a file"
-msgstr "Eine Datei öffnen"
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Encrypt"
-msgstr "Mit PGP verschlüsseln"
-
-#: ui/evolution-message-composer.xml.h:14
-msgid "PGP Sign"
-msgstr "Mit PGP signieren"
-
-#: ui/evolution-message-composer.xml.h:15
-msgid "S/MIME Encrypt"
-msgstr "Mit S/MIME verschlüsseln"
-
-#: ui/evolution-message-composer.xml.h:16
-msgid "S/MIME Sign"
-msgstr "Mit S/MIME signieren"
-
-#: ui/evolution-message-composer.xml.h:20
-msgid "Save _Draft"
-msgstr "Entwurf speichern"
-
-#: ui/evolution-message-composer.xml.h:21
-msgid "Save in _folder... (FIXME)"
-msgstr "In Ordner speichern... (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:22
-msgid "Save in folder..."
-msgstr "In Ordner speichern..."
-
-#: ui/evolution-message-composer.xml.h:24
-msgid "Save the current file with a different name"
-msgstr "Die aktuelle Datei unter anderem Namen speichern"
-
-#: ui/evolution-message-composer.xml.h:25
-msgid "Save the message in a specified folder"
-msgstr "Die Nachricht in einem bestimmten Ordner speichern"
-
-#: ui/evolution-message-composer.xml.h:26
-msgid "Send"
-msgstr "Senden"
-
-#: ui/evolution-message-composer.xml.h:27
-msgid "Send _Later"
-msgstr "Später senden"
-
-#: ui/evolution-message-composer.xml.h:28
-msgid "Send _later"
-msgstr "Später senden"
-
-#: ui/evolution-message-composer.xml.h:29
-msgid "Send the mail in HTML format"
-msgstr "Die Mail im HTML-Format senden"
-
-#: ui/evolution-message-composer.xml.h:30
-msgid "Send the message later"
-msgstr "Die Nachricht später senden"
-
-#: ui/evolution-message-composer.xml.h:31
-msgid "Send this message now"
-msgstr "Diese Nachricht jetzt senden"
-
-#: ui/evolution-message-composer.xml.h:32
-msgid "Show / hide attachments"
-msgstr "Anlagen anzeigen / verbergen"
-
-#: ui/evolution-message-composer.xml.h:33
-msgid "Show _attachments"
-msgstr "Anlagen anzeigen"
-
-#: ui/evolution-message-composer.xml.h:34
-msgid "Show attachments"
-msgstr "Anlagen anzeigen"
-
-#: ui/evolution-message-composer.xml.h:35
-msgid "Sign this message with your PGP key"
-msgstr "Diese Nachricht mit PGP signieren"
-
-#: ui/evolution-message-composer.xml.h:36
-msgid "Sign this message with your S/MIME Signature Certificate"
-msgstr "Diese Nachricht mit Ihrem S/MIME-Signaturzertifikat signieren"
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the BCC field is displayed"
-msgstr "Anzeige des BCC-Feldes an/aus"
-
-#: ui/evolution-message-composer.xml.h:38
-msgid "Toggles whether the CC field is displayed"
-msgstr "Anzeige des CC-Feldes an/aus"
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "Toggles whether the From chooser is displayed"
-msgstr "Anzeige des From-Wählers an/aus"
-
-#: ui/evolution-message-composer.xml.h:40
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr "Anzeige des Antwort-an-Feldes an/aus"
-
-#: ui/evolution-message-composer.xml.h:41
-msgid "_Bcc Field"
-msgstr "_BCC-Feld"
-
-#: ui/evolution-message-composer.xml.h:42
-msgid "_Cc Field"
-msgstr "_CC-Feld"
-
-#: ui/evolution-message-composer.xml.h:47
-msgid "_From Field"
-msgstr "_Von-Feld"
-
-#: ui/evolution-message-composer.xml.h:49
-msgid "_Insert"
-msgstr "Einfügen"
-
-#: ui/evolution-message-composer.xml.h:50
-msgid "_Insert text file... (FIXME)"
-msgstr "Textdatei e_infügen... (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:51
-msgid "_Open..."
-msgstr "_Öffnen..."
-
-#: ui/evolution-message-composer.xml.h:52
-msgid "_Reply-To Field"
-msgstr "Antwort-an-Feld"
-
-#: ui/evolution-message-composer.xml.h:54
-msgid "_Security"
-msgstr "_Sicherheit"
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr "Ordner zu Ihrer Liste abonnierter Ordner hinzufügen"
-
-#: ui/evolution-subscribe.xml.h:3
-msgid "F_older"
-msgstr "Ordner"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr "Liste aktualisieren"
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr "Liste von Ordnern aktualisieren"
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr "Ordner aus Ihrer Liste abonnierter Ordner entfernen"
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr "Abonnieren"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr "Abonnement kündigen"
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-msgid "Assig_n Task (FIXME)"
-msgstr "Aufgabe zuweisen (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr "Weitersuchen"
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-msgid "Meeting Re_quest (FIXME)"
-msgstr "Besprechungsanfrage (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-msgid "Redo"
-msgstr "Wiederherstellen"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-msgid "Redo the undone action"
-msgstr "Die rückgängig gemachte Aktion wiederherstellen"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-msgid "Replace"
-msgstr "Ersetzen"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-msgid "Replace a string"
-msgstr "Eine Zeichenkette ersetzen"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-msgid "Reply to A_ll (FIXME)"
-msgstr "Allen antworten (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-msgid "S_end Status Report (FIXME)"
-msgstr "Statusbericht senden (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr "Auftreten überspringen (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-msgid "Save the task and close the dialog box"
-msgstr "Die Aufgabe speichern und das Dialogfenster schließen"
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "Search again for the same string"
-msgstr "Noch einmal nach derselben Zeichenkette suchen"
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-msgid "Search for a string"
-msgstr "Eine Zeichenkette suchen"
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr "Rückgängig"
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-msgid "Undo the last action"
-msgstr "Die letzte Aktion rückgängig machen"
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:33
-msgid "_Appointment (FIXME)"
-msgstr "Termin (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-msgid "_Mark Complete (FIXME)"
-msgstr "Als abgeschlossen markieren (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-msgid "_Reply (FIXME)"
-msgstr "Antworten (FIXME)"
-
-#: ui/evolution-tasks.xml.h:2
-msgid "Create a new task"
-msgstr "Eine neue Aufgabe anlegen"
-
-#: ui/evolution-tasks.xml.h:3
-msgid "New Task"
-msgstr "Neue Aufgabe"
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr "Aufgabe als etwas anderes speichern"
-
-#: ui/evolution-tasks.xml.h:6
-msgid "Tasks Preferences..."
-msgstr "Aufgaben-Vorlieben..."
-
-#: ui/evolution-tasks.xml.h:9
-msgid "_Task"
-msgstr "Aufgabe"
-
-#: ui/evolution.xml.h:1
-msgid "About Evolution..."
-msgstr "Über Evolution..."
-
-#: ui/evolution.xml.h:3
-msgid "Close this window"
-msgstr "Dieses Fenster schließen"
-
-#: ui/evolution.xml.h:4
-msgid "Customi_ze Toolbars..."
-msgstr "Werkzeugleisten anpassen..."
-
-#: ui/evolution.xml.h:5
-msgid "Customize"
-msgstr "Anpassen"
-
-#: ui/evolution.xml.h:6
-msgid "Customize toolbars"
-msgstr "Werkzeugleisten anpassen"
-
-#: ui/evolution.xml.h:7
-msgid "Display a different folder"
-msgstr "Einen anderen Ordner anzeigen"
-
-#: ui/evolution.xml.h:8
-msgid "E_xit"
-msgstr "Beenden"
-
-#: ui/evolution.xml.h:9
-msgid "Evolution _FAQ"
-msgstr "Evolution-_FAQ"
-
-#: ui/evolution.xml.h:10
-msgid "Evolution _Window"
-msgstr "Evolution-_Fenster"
-
-#: ui/evolution.xml.h:11
-msgid "Evolution bar _shortcut"
-msgstr "Evolution-Leistenverknüpfung"
-
-#: ui/evolution.xml.h:12
-msgid "Exit the program"
-msgstr "Das Programm verlassen"
-
-#: ui/evolution.xml.h:14
-msgid "Getting _Started"
-msgstr "Erste Schritte"
-
-#: ui/evolution.xml.h:15
-msgid "Import an external file format"
-msgstr "Ein externes Dateiformat importieren"
-
-#: ui/evolution.xml.h:16
-msgid "Main toolbar"
-msgstr "Hauptwerkzeugleiste"
-
-#: ui/evolution.xml.h:17
-msgid "Remove the selected folder"
-msgstr "Den gewählten Ordner entfernen"
-
-#: ui/evolution.xml.h:18
-msgid "Show information about Evolution"
-msgstr "Information über Evolution anzeigen"
-
-#: ui/evolution.xml.h:19
-msgid "Submit Bug Report"
-msgstr "Fehlerbericht einschicken"
-
-#: ui/evolution.xml.h:20
-msgid "Submit _Bug Report"
-msgstr "Fehlerbericht einschicken"
-
-#: ui/evolution.xml.h:21
-msgid "Submit bug report using Bug Buddy."
-msgstr "Einen Fehlerbericht mit dem Fehlermelder (Bug Buddy) einschicken"
-
-#: ui/evolution.xml.h:22
-msgid "Toggle"
-msgstr "Ein/Aus"
-
-#: ui/evolution.xml.h:23
-msgid "Toggle whether to show the folder bar"
-msgstr "Anzeige der Ordnerleiste an/aus"
-
-#: ui/evolution.xml.h:24
-msgid "Toggle whether to show the shortcut bar"
-msgstr "Anzeige der Verknüpfungsleiste an/aus"
-
-#: ui/evolution.xml.h:25
-msgid "Toggle whether we are working offline."
-msgstr "Offline-Arbeitsmodus an/aus."
-
-#: ui/evolution.xml.h:26
-msgid "Using the C_ontact Manager"
-msgstr "Die Kontaktverwaltung benutzen"
-
-#: ui/evolution.xml.h:27
-msgid "Using the _Calendar"
-msgstr "Den Kalender benutzen"
-
-#: ui/evolution.xml.h:28
-msgid "Using the _Mailer"
-msgstr "Den _Mailer benutzen"
-
-#: ui/evolution.xml.h:29
-msgid "View the selected folder"
-msgstr "Den gewählten Ordner betrachten"
-
-#: ui/evolution.xml.h:30
-msgid "Work Offline"
-msgstr "Offline arbeiten"
-
-#: ui/evolution.xml.h:31
-msgid "_About Evolution..."
-msgstr "Über Evolution..."
-
-#: ui/evolution.xml.h:32
-msgid "_Actions"
-msgstr "Aktio_nen"
-
-#: ui/evolution.xml.h:39
-msgid "_Folder Bar"
-msgstr "Ordnerleiste"
-
-#: ui/evolution.xml.h:40
-msgid "_Go to Folder..."
-msgstr "_Gehe zu Ordner..."
-
-#: ui/evolution.xml.h:42
-msgid "_Import file..."
-msgstr "Datei _importieren..."
-
-#: ui/evolution.xml.h:43
-msgid "_Index"
-msgstr "_Index"
-
-#: ui/evolution.xml.h:44
-msgid "_Mail message"
-msgstr "_Mailnachricht"
-
-#: ui/evolution.xml.h:46
-msgid "_New Folder"
-msgstr "Neuer Ordner"
-
-#: ui/evolution.xml.h:47
-msgid "_Remove"
-msgstr "_Entfernen"
-
-#: ui/evolution.xml.h:48
-msgid "_Shortcut Bar"
-msgstr "Verknüpfungsleiste"
-
-#: ui/evolution.xml.h:52
-msgid "_Work Offline"
-msgstr "Offline _arbeiten"
-
-#: views/addressbook/galview.xml.h:1
-msgid "Adress Cards"
-msgstr "Adresskarten"
-
-#: views/addressbook/galview.xml.h:2
-msgid "By Company"
-msgstr "Nach Firma"
-
-#: views/addressbook/galview.xml.h:3
-msgid "Phone List"
-msgstr "Telefonliste"
-
-#: views/mail/galview.xml.h:1
-msgid "By Sender"
-msgstr "Nach Absender"
-
-#: views/mail/galview.xml.h:2
-msgid "By Status"
-msgstr "Nach Status"
-
-#: views/mail/galview.xml.h:3
-msgid "By Subject"
-msgstr "Nach Betreff"
-
-#: views/mail/galview.xml.h:4
-msgid "Messages"
-msgstr "Nachrichten"
-
-#: views/tasks/galview.xml.h:2
-msgid "With Category"
-msgstr "Mit Kategorie"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:392
-msgid "Tentative"
-msgstr "Vorläufig"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:393
-msgid "Busy"
-msgstr "Beschäftigt"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:394
-msgid "Out of Office"
-msgstr "Außer Haus"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:395
-msgid "No Information"
-msgstr "Keine Information"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:411
-msgid "_Invite Others..."
-msgstr "Andere einladen..."
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:431
-msgid "_Options"
-msgstr "Optionen"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:448
-msgid "Show _Only Working Hours"
-msgstr "Nur Arbeitszeit anzeigen"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:461
-msgid "Show _Zoomed Out"
-msgstr "Weggezoomt anzeigen"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:479
-msgid "_Update Free/Busy"
-msgstr "Frei/beschäftigt aktualisieren"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:497
-msgid "_<<"
-msgstr "<<"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:514
-msgid "_Autopick"
-msgstr "AutoWahl"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:528
-msgid ">_>"
-msgstr ">>"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:545
-msgid "_All People and Resources"
-msgstr "Alle Leute und Ressourcen"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:558
-msgid "All _People and One Resource"
-msgstr "Alle Leute und eine Ressource"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:571
-msgid "_Required People"
-msgstr "Benötigte Leute"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:584
-msgid "Required People and _One Resource"
-msgstr "Benötigte Leute und eine Ressource"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:607
-msgid "Meeting _start time:"
-msgstr "Anfang der Besprechung:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:631
-msgid "Meeting _end time:"
-msgstr "Ende der Besprechung:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:744
-msgid "All Attendees"
-msgstr "Alle Anwesenden"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:469
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2477
-msgid "%A, %B %d, %Y"
-msgstr "%A, %d. %B %Y"
-
-#: widgets/menus/gal-view-menus.c:176
-msgid "_Current View"
-msgstr "Aktuelle Ansicht"
-
-#: widgets/menus/gal-view-menus.c:202
-msgid "Define Views"
-msgstr "Ansichten definieren"
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:422
-msgid "MTWTFSS"
-msgstr "MDMDFSS"
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1061 widgets/misc/e-calendar-item.c:2756
-msgid "%B %Y"
-msgstr "%B %Y"
-
-#: widgets/misc/e-cell-date-edit.c:221 widgets/misc/e-dateedit.c:418
-msgid "Now"
-msgstr "Jetzt"
-
-#: widgets/misc/e-cell-date-edit.c:245
-msgid "OK"
-msgstr "OK"
-
-#: widgets/misc/e-cell-date-edit.c:726
-#, c-format
-msgid "The time must be in the format: %s"
-msgstr "Die Zeit muss folgendes Format haben: %s"
-
-#: widgets/misc/e-clipped-label.c:112
-msgid "..."
-msgstr "..."
-
-#: widgets/misc/e-filter-bar.c:168
-msgid "Save Search"
-msgstr "Suche speichren"
-
-#: widgets/misc/e-filter-bar.c:239
-msgid "Advanced Search"
-msgstr "Komplexe Suche"
-
-#: widgets/misc/e-filter-bar.h:101
-msgid "Save As..."
-msgstr "Speichern unter..."
-
-#: widgets/misc/e-filter-bar.h:102
-msgid "Show All"
-msgstr "Alle anzeigen"
-
-#: widgets/misc/e-filter-bar.h:103
-msgid "Edit..."
-msgstr "Bearbeiten..."
-
-#: widgets/misc/e-filter-bar.h:104
-msgid "Advanced..."
-msgstr "Komplex..."
-
-#: widgets/misc/e-messagebox.c:152
-msgid "Information"
-msgstr "Information"
-
-#: widgets/misc/e-messagebox.c:159
-msgid "Warning"
-msgstr "Warnung"
-
-#: widgets/misc/e-messagebox.c:173
-msgid "Question"
-msgstr "Frage"
-
-#: widgets/misc/e-messagebox.c:180
-msgid "Message"
-msgstr "Meldung"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:224
-msgid "Don't show this message again."
-msgstr "Diese Meldung nicht mehr anzeigen."
-
-#: widgets/misc/e-search-bar.c:155
-msgid "Sear_ch"
-msgstr "Su_chen"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-msgid "The Personal Addressbook Server"
-msgstr "Der persönliche Adressbuchserver"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr "Der persönliche Kalenderserver; Kalender-Factory"
-
-#: wombat/wombat.c:173
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr "setup_vfs(): GNOME VFS konnte nicht initialisiert werden"
-
-#: wombat/wombat.c:185
-msgid "init_corba(): could not initialize GNOME"
-msgstr "init-corba(): GNOME konnte nicht initialisiert werden"
-
-#: wombat/wombat.c:198
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "init_bonobo(): Bonobo konnte nicht initialisiert werden"
diff --git a/po/el.po b/po/el.po
deleted file mode 100644
index 303c9a121c..0000000000
--- a/po/el.po
+++ /dev/null
@@ -1,9326 +0,0 @@
-# Greek translation of evolution.
-# Copyright (C) 2000 Free Software Foundation, Inc.
-# Spiros Papadimitriou <spapadim+@cs.cmu.edu>, 2000.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: evolution 0.1\n"
-"POT-Creation-Date: 2001-04-14 08:51-0400\n"
-"PO-Revision-Date: 2000-04-04 19:42-0500\n"
-"Last-Translator: Spiros Papadimitriou <spapadim+@cs.cmu.edu>\n"
-"Language-Team: Greek <nls@tux.hellug.gr>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-7\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: addressbook/backend/ebook/e-card.c:3209
-msgid "Card: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3211
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3212
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3213
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3214
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3215
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3216
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3230
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3241
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3243
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3244
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3245
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3246
-msgid ""
-"\n"
-" City: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3247
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3248
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3249
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3262
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3274
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3277
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3301
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3304
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3323
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3329
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3337
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3341
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3353
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3354
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3355
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3356
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3357
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3358
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3362
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3363
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3376
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3379
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:1
-msgid "Factory to import GnomeCard files into Evolution."
-msgstr ""
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:2
-msgid "Imports GnomeCard files into Evolution."
-msgstr ""
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:21
-#: addressbook/backend/ebook/load-pine-addressbook.c:22
-#: addressbook/backend/ebook/test-client-list.c:23
-#: addressbook/backend/ebook/test-client.c:33
-#: addressbook/conduit/address-conduit.c:1092
-#: addressbook/gui/component/addressbook-factory.c:43
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:72 calendar/gui/main.c:57
-#, fuzzy
-msgid "Could not initialize Bonobo"
-msgstr "ÌïíÜäá Ôá÷/ìåßïõ: Áñ÷éêïðïßçóç ôïõ Bonobo áäýíáôç"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:655
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-#, fuzzy
-msgid "Could not start wombat"
-msgstr "ÌïíÜäá Ôá÷/ìåßïõ: Áñ÷éêïðïßçóç ôïõ Bonobo áäýíáôç"
-
-#: addressbook/conduit/address-conduit.c:687
-#: addressbook/conduit/address-conduit.c:690
-msgid "Could not read pilot's Address application block"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:7
-msgid "Add"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-#, fuzzy
-msgid "C_ontacts..."
-msgstr "_Ãíùñéìßá"
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-#, fuzzy
-msgid "Contact Editor"
-msgstr "_Ãíùñéìßá"
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-msgid "General"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-#, fuzzy
-msgid "No_tes:"
-msgstr "Óçìåßù_ìá"
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1284
-msgid "Primary Email"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:74
-msgid "_Add"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-#, fuzzy
-msgid "_Company:"
-msgstr "ÁíôéãñáöÞ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/mail-config.glade.h:75 ui/evolution-event-editor.xml.h:57
-#: ui/evolution-mail.xml.h:91 ui/evolution-task-editor-dialog.xml.h:69
-msgid "_Delete"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-#, fuzzy
-msgid "_Home"
-msgstr "Óçìåßù_ìá"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-#, fuzzy
-msgid "_Job title:"
-msgstr "_ÌÞíõìá"
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-#, fuzzy
-msgid "_Mobile"
-msgstr "_ÌÞíõìá"
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-#, fuzzy
-msgid "Delete Contact?"
-msgstr "ÅðéëÝîôå åðéóýíáøç"
-
-#: addressbook/contact-editor/e-contact-editor.c:603
-msgid "This contact belongs to these categories:"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-#: addressbook/gui/widgets/e-addressbook-view.c:676
-msgid "Assistant"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/contact-editor/e-contact-editor.c:1310
-msgid "Business"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-msgid "Business 2"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#: addressbook/gui/widgets/e-addressbook-view.c:656
-msgid "Business Fax"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Callback"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "Car"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1248
-#, fuzzy
-msgid "Company"
-msgstr "ÁíôéãñáöÞ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1249
-#: addressbook/contact-editor/e-contact-editor.c:1311
-#, fuzzy
-msgid "Home"
-msgstr "Óçìåßù_ìá"
-
-#: addressbook/contact-editor/e-contact-editor.c:1250
-#, fuzzy
-msgid "Home 2"
-msgstr "Óçìåßù_ìá"
-
-#: addressbook/contact-editor/e-contact-editor.c:1251
-#: addressbook/gui/widgets/e-addressbook-view.c:657
-#, fuzzy
-msgid "Home Fax"
-msgstr "Óçìåßù_ìá"
-
-#: addressbook/contact-editor/e-contact-editor.c:1252
-#: addressbook/gui/widgets/e-addressbook-view.c:660
-msgid "ISDN"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1253
-#, fuzzy
-msgid "Mobile"
-msgstr "_ÌÞíõìá"
-
-#: addressbook/contact-editor/e-contact-editor.c:1254
-#: addressbook/contact-editor/e-contact-editor.c:1312
-#: calendar/gui/e-meeting-dialog.glade.h:14 mail/mail-config.glade.h:40
-msgid "Other"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1255
-#: addressbook/gui/widgets/e-addressbook-view.c:662
-msgid "Other Fax"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1256
-#: addressbook/gui/widgets/e-addressbook-view.c:663
-#, fuzzy
-msgid "Pager"
-msgstr "Åðéêüëëçóç"
-
-#: addressbook/contact-editor/e-contact-editor.c:1257
-#, fuzzy
-msgid "Primary"
-msgstr "Ðñïôåñáéüôçôá"
-
-#: addressbook/contact-editor/e-contact-editor.c:1258
-#: addressbook/gui/widgets/e-addressbook-view.c:664
-msgid "Radio"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1259
-#: addressbook/gui/widgets/e-addressbook-view.c:665
-msgid "Telex"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1260
-msgid "TTY/TDD"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:668
-msgid "Email 2"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/gui/widgets/e-addressbook-view.c:669
-msgid "Email 3"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-quick-add.c:223
-msgid "Contact Quick-Add"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-quick-add.c:225
-#, fuzzy
-msgid "Edit Full"
-msgstr "_ÖÜêåëëïò"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:262
-#: addressbook/gui/widgets/e-addressbook-view.c:643
-#, fuzzy
-msgid "Full Name"
-msgstr "Ìåôïíïìáóßá ÏìÜäáò"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:268
-#, fuzzy
-msgid "E-mail"
-msgstr "_ÌÞíõìá"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-#, fuzzy
-msgid "Canada"
-msgstr "Çìåñïëüãéï"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-#, fuzzy
-msgid "_City:"
-msgstr "Ðñïôåñáéüôçôá"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:4
-msgid "I"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:8
-msgid "Miss"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:15
-#, fuzzy
-msgid "_Middle:"
-msgstr "_ÌÞíõìá"
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:241
-msgid "As _Minicards"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:247
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:399
-#, c-format
-msgid "Enter password for %s"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:427
-#, fuzzy
-msgid "Unable to open addressbook"
-msgstr "Êëßê åäþ ãéá ôï äéåõèõíóéïëüãéï"
-
-#: addressbook/gui/component/addressbook.c:432
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or have tried\n"
-"to access an LDAP server and don't have LDAP support\n"
-"compiled in. If you've entered a URI, check the URI for\n"
-"correctness and reenter. If not, you probably have\n"
-"attempted to access an LDAP server. If you wish to be\n"
-"able to use LDAP, you'll need to download and install\n"
-"OpenLDAP and recompile and install Evolution.\n"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:555
-msgid "Show All"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:557
-#, fuzzy
-msgid "Advanced..."
-msgstr "ÁíáæÞôçóç ãéá Ðñï÷ùñçìÝíïõò"
-
-#: addressbook/gui/component/addressbook.c:587
-#, fuzzy
-msgid "Any field contains"
-msgstr "ÖÜêåëïò ðïõ ðåñéÝ÷åé åêêñåìüôçôåò"
-
-#: addressbook/gui/component/addressbook.c:588
-msgid "Name contains"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:589
-#, fuzzy
-msgid "Email contains"
-msgstr "ÌéêñÜ Åéêïíßäéá"
-
-#: addressbook/gui/component/addressbook.c:732
-msgid "The URI that the Folder Browser will display"
-msgstr "Ôï URI ðïõ èá åìöáíßóåé ï ÅîåñåõíçôÞò ÖáêÝëëùí"
-
-#: addressbook/gui/component/addressbook-storage.c:99
-#, fuzzy
-msgid "Other Contacts"
-msgstr "ËïéðÝò Óõíôïìåýóåéò"
-
-#: addressbook/gui/component/addressbook-config.c:148
-#, fuzzy
-msgid "LDAP Server"
-msgstr "ÍÝá ÏìÜäá"
-
-#: addressbook/gui/component/addressbook-config.c:150
-#, fuzzy
-msgid "File"
-msgstr "_ÖÜêåëëïò"
-
-#: addressbook/gui/component/addressbook-config.c:153
-#, fuzzy
-msgid "Unknown addressbook type"
-msgstr "Êëßê åäþ ãéá ôï äéåõèõíóéïëüãéï"
-
-#: addressbook/gui/component/addressbook-config.c:163
-msgid "None (anonymous mode)"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:165
-#: camel/camel-sasl-plain.c:32 camel/providers/imap/camel-imap-provider.c:80
-#: camel/providers/nntp/camel-nntp-store.c:293
-#: camel/providers/pop3/camel-pop3-provider.c:67 mail/mail-config.glade.h:43
-msgid "Password"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:167
-msgid "SASL"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:170
-msgid "Unknown auth type"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:179
-#, fuzzy
-msgid "Base"
-msgstr "Åðéêüëëçóç"
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "One"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:183
-#, fuzzy
-msgid "Subtree"
-msgstr "ÍÝá Óõíôüìåõóç"
-
-#: addressbook/gui/component/addressbook-config.c:186
-msgid "Unknown scope type"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:353
-msgid "Bind DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:354
-msgid "FIXME Bind DN Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:356
-#: mail/mail-config.glade.h:50
-msgid "Remember this password"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:406
-#: mail/mail-config.glade.h:28
-msgid "Host:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:407
-msgid "FIXME Host help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:409
-#, fuzzy
-msgid "Port:"
-msgstr "Ðñïôåñáéüôçôá"
-
-#: addressbook/gui/component/addressbook-config.c:410
-msgid "FIXME Port help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:414
-msgid "Root DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:415
-msgid "FIXME Root DN help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:435
-msgid "Search Scope:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:489
-msgid "Authentication:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:507
-#: mail/mail-config.glade.h:44
-#, fuzzy
-msgid "Path:"
-msgstr "Åðéêüëëçóç"
-
-#: addressbook/gui/component/addressbook-config.c:508
-msgid "FIXME Path Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:513
-msgid "Create path if it doesn't exist."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:647
-#, fuzzy
-msgid "Edit Addressbook"
-msgstr "Êëßê åäþ ãéá ôï äéåõèõíóéïëüãéï"
-
-#: addressbook/gui/component/addressbook-config.c:649
-#, fuzzy
-msgid "Add Addressbook"
-msgstr "Êëßê åäþ ãéá ôï äéåõèõíóéïëüãéï"
-
-#: addressbook/gui/component/addressbook-config.c:665
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:671
-#: mail/mail-config.glade.h:35
-msgid "Name:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:672
-msgid "FIXME Name help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:674
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:675
-msgid "FIXME Description help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-#, fuzzy
-msgid "Addressbook Sources"
-msgstr "ÍÝá Óõíôüìåõóç"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: addressbook/gui/widgets/e-addressbook-view.c:578
-#: addressbook/gui/widgets/e-minicard.c:673
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:8 mail/folder-browser.c:597
-#: mail/mail-config.glade.h:19 mail/mail-view.c:156
-#: ui/evolution-addressbook.xml.h:3 ui/evolution-event-editor.xml.h:17
-#: ui/evolution-mail.xml.h:11 ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:23
-msgid "Edit"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-msgid "Name"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-msgid "URI"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Disable Queries"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Enable Queries (Dangerous!)"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:388
-#: addressbook/gui/component/select-names/e-select-names-popup.c:210
-msgid "Edit Contact Info"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:424
-#: addressbook/gui/component/select-names/e-select-names-popup.c:269
-#, fuzzy
-msgid "Add to Contacts"
-msgstr "ËïéðÝò Óõíôïìåýóåéò"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-msgid "A Bonobo control for an address popup."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A Bonobo control for displaying an address."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-#, fuzzy
-msgid "Evolution Addressbook minicard viewer"
-msgstr "Ã_ñáììÞ Óõíôïìåýóåùí ôïõ Evolution"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-#, fuzzy
-msgid "Evolution component for handling contacts."
-msgstr "ÖÜêåëëïò ðïõ ðåñéÝ÷åé ãíùñéìßåò"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-#, fuzzy
-msgid "Factory for the Addressbook Minicard control"
-msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-msgid "Factory for the Addressbook's address displayer"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-msgid "Factory for the Addressbook's address popup"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:10
-#, fuzzy
-msgid "Factory for the Evolution addressbook component."
-msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:11
-#, fuzzy
-msgid "Factory for the sample Addressbook control"
-msgstr "Êëßê åäþ ãéá ôï äéåõèõíóéïëüãéï"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-msgid "Evolution's addressbook name selection interface."
-msgstr ""
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr ""
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:131
-#: composer/e-msg-composer-attachment-bar.c:468 filter/filter-filter.c:402
-#: filter/filter-rule.c:549 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:265 shell/e-shortcuts-view.c:388
-msgid "Remove"
-msgstr "ÄéáãñáöÞ"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:146
-#, fuzzy
-msgid "Remove All"
-msgstr "ÄéáãñáöÞ"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-#, fuzzy
-msgid "Find..."
-msgstr "Ðñïôåñáéüôçôá"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-#, fuzzy
-msgid "Message Recipients"
-msgstr "ÊáôÜóôáóç ìçíõìÜôùí"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-#, fuzzy
-msgid "Select Names"
-msgstr "Åðéëå_ãìÝíá Áíôéêåßìåíá"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-#, fuzzy
-msgid "Select name from:"
-msgstr "Åðéëå_ãìÝíá Áíôéêåßìåíá"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:158
-msgid "Search"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-#, fuzzy
-msgid "n"
-msgstr "Ðñïò"
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-#, fuzzy
-msgid "o"
-msgstr "Ðñïò"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-#, fuzzy
-msgid "r"
-msgstr "Áðü"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:513
-#: addressbook/gui/widgets/e-addressbook-view.c:573
-#: addressbook/gui/widgets/e-minicard.c:466
-#: addressbook/gui/widgets/e-minicard.c:668
-msgid "Save as VCard"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:574
-#: addressbook/gui/widgets/e-minicard.c:669
-msgid "Send contact to other"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:575
-#: addressbook/gui/widgets/e-minicard.c:670
-#, fuzzy
-msgid "Send message to contact"
-msgstr "_Ãíùñéìßá"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:576
-#: addressbook/gui/widgets/e-minicard.c:671 mail/folder-browser.c:572
-#: mail/mail-view.c:154 ui/evolution-addressbook.xml.h:9
-#: ui/evolution-calendar.xml.h:23 ui/evolution-mail.xml.h:50
-#: ui/evolution-tasks.xml.h:4
-#, fuzzy
-msgid "Print"
-msgstr "Ðñïôåñáéüôçôá"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:577
-#: addressbook/gui/widgets/e-minicard.c:672
-#, fuzzy
-msgid "Print Envelope"
-msgstr "Ðñïôåñáéüôçôá"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:641
-msgid "* Click here to add a contact *"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:642
-#, fuzzy
-msgid "File As"
-msgstr "_ÖÜêåëëïò"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:644
-#, fuzzy
-msgid "Email"
-msgstr "_ÌÞíõìá"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:645
-#, fuzzy
-msgid "Primary Phone"
-msgstr "Ðñïôåñáéüôçôá"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:646
-msgid "Assistant Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:647
-msgid "Business Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:648
-msgid "Callback Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:649
-#, fuzzy
-msgid "Company Phone"
-msgstr "ÁíôéãñáöÞ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:650
-#, fuzzy
-msgid "Home Phone"
-msgstr "Óçìåßù_ìá"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:651
-msgid "Organization"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:652
-msgid "Business Address"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:653
-#, fuzzy
-msgid "Home Address"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:654
-#, fuzzy
-msgid "Mobile Phone"
-msgstr "_ÌÞíõìá"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:655
-msgid "Car Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:658
-msgid "Business Phone 2"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:659
-#, fuzzy
-msgid "Home Phone 2"
-msgstr "Óçìåßù_ìá"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:661
-#, fuzzy
-msgid "Other Phone"
-msgstr "ËïéðÝò Óõíôïìåýóåéò"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:666
-msgid "TTY"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:667
-#, fuzzy
-msgid "Other Address"
-msgstr "Êëßê åäþ ãéá ôï äéåõèõíóéïëüãéï"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:670
-msgid "Web Site"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:671
-#, fuzzy
-msgid "Department"
-msgstr "Åðéêüëëçóç"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:672
-msgid "Office"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:673
-#, fuzzy
-msgid "Title"
-msgstr "_ÖÜêåëëïò"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:674
-#, fuzzy
-msgid "Profession"
-msgstr "Å_íÝñãåéåò"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:675
-#, fuzzy
-msgid "Manager"
-msgstr "Åðéêüëëçóç"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:677
-msgid "Nickname"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:678
-#, fuzzy
-msgid "Spouse"
-msgstr "ÍÝá Óõíôüìåõóç"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:679
-#, fuzzy
-msgid "Note"
-msgstr "Óçìåßù_ìá"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:680
-msgid "Free-busy URL"
-msgstr ""
-
-#: addressbook/gui/widgets/e-minicard-control.c:282
-#, fuzzy
-msgid "Save in addressbook"
-msgstr "Êëßê åäþ ãéá ôï äéåõèõíóéïëüãéï"
-
-#: addressbook/gui/widgets/e-minicard-view.c:166
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:26
-msgid "Card View"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:4
-#, fuzzy
-msgid "Body"
-msgstr "ÓÞìåñá"
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:6
-#, fuzzy
-msgid "Dimensions:"
-msgstr "Å_íÝñãåéåò"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-#, fuzzy
-msgid "Font..."
-msgstr "Ðñïôåñáéüôçôá"
-
-#: addressbook/printing/e-contact-print.glade.h:8
-#, fuzzy
-msgid "Fonts"
-msgstr "Ãíùñéìßåò"
-
-#: addressbook/printing/e-contact-print.glade.h:9
-#, fuzzy
-msgid "Footer:"
-msgstr "_ÖÜêåëëïò"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-#, fuzzy
-msgid "Format"
-msgstr "Áðü"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-#, fuzzy
-msgid "Header"
-msgstr "ÁðïóôïëÞ"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:23
-#, fuzzy
-msgid "Options"
-msgstr "Å_íÝñãåéåò"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:25
-#, fuzzy
-msgid "Page"
-msgstr "Åðéêüëëçóç"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-#, fuzzy
-msgid "Page Setup:"
-msgstr "Ðñïôåñáéüôçôá"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-#, fuzzy
-msgid "Paper"
-msgstr "Åðéêüëëçóç"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-#, fuzzy
-msgid "Paper source:"
-msgstr "Êõñßùò Óõíôïìåýóåéò"
-
-#: addressbook/printing/e-contact-print.glade.h:29
-#, fuzzy
-msgid "Portrait"
-msgstr "Ðñïôåñáéüôçôá"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:34
-#, fuzzy
-msgid "Sections:"
-msgstr "Å_íÝñãåéåò"
-
-#: addressbook/printing/e-contact-print.glade.h:35
-#, fuzzy
-msgid "Shading"
-msgstr "Åðéêüëëçóç"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-#, fuzzy
-msgid "Size:"
-msgstr "ÌÝãåèïò"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:38
-#, fuzzy
-msgid "Style name:"
-msgstr "Ìåôïíïìáóßá ÏìÜäáò"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-#, fuzzy
-msgid "Top:"
-msgstr "Ðñïò:"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-#, fuzzy
-msgid "Type:"
-msgstr "Ðñïò:"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr ""
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr ""
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr ""
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr ""
-
-#: calendar/gui/calendar-commands.c:266
-msgid "File not found"
-msgstr ""
-
-#: calendar/gui/calendar-commands.c:290
-#, fuzzy
-msgid "Open calendar"
-msgstr "Ôï çìåñïëüãéü óáò"
-
-#: calendar/gui/calendar-commands.c:332
-#, fuzzy
-msgid "Save calendar"
-msgstr "Ôï çìåñïëüãéü óáò"
-
-#: calendar/gui/calendar-commands.c:468
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-
-#: calendar/gui/calendar-model.c:360 calendar/gui/calendar-model.c:895
-#: calendar/gui/e-calendar-table.c:330
-msgid "Public"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:363 calendar/gui/calendar-model.c:897
-#: calendar/gui/e-calendar-table.c:331
-#, fuzzy
-msgid "Private"
-msgstr "Åðéêüëëçóç"
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:899
-#: calendar/gui/e-calendar-table.c:332
-msgid "Confidential"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/event-editor.c:1592
-#: calendar/gui/event-editor.c:1619
-#: camel/providers/smtp/camel-smtp-transport.c:218
-msgid "Unknown"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:457
-msgid "N"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:457
-msgid "S"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:459
-msgid "E"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:459
-msgid "W"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:497 calendar/gui/calendar-model.c:1063
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:352 mail/message-list.c:660
-msgid "High"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:499 calendar/gui/calendar-model.c:1065
-#: calendar/gui/calendar-model.c:1569
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:353 mail/message-list.c:659
-#, fuzzy
-msgid "Normal"
-msgstr "Áðü"
-
-#: calendar/gui/calendar-model.c:501 calendar/gui/calendar-model.c:1067
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:354 mail/message-list.c:658
-#, fuzzy
-msgid "Low"
-msgstr "_ÍÝï"
-
-#: calendar/gui/calendar-model.c:537 calendar/gui/calendar-model.c:1119
-#: calendar/gui/e-calendar-table.c:406
-msgid "Transparent"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:540 calendar/gui/calendar-model.c:1121
-#: calendar/gui/e-calendar-table.c:405
-msgid "Opaque"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:635 calendar/gui/calendar-model.c:1173
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:426
-msgid "Not Started"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:638 calendar/gui/calendar-model.c:1175
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:427
-msgid "In Progress"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1177
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:428
-msgid "Completed"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1179
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:429 camel/camel-service.c:550
-#: camel/camel-service.c:586
-msgid "Cancelled"
-msgstr ""
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:791 e-util/e-time-utils.c:278
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr ""
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:794 e-util/e-time-utils.c:287
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:799
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:879
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr ""
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:893 calendar/gui/calendar-model.c:1117
-#: calendar/gui/calendar-model.c:1171 calendar/gui/e-calendar-table.c:329
-#: calendar/gui/e-calendar-table.c:404 mail/mail-account-gui.c:973
-#: mail/mail-accounts.c:120 mail/mail-accounts.c:164
-#: mail/mail-config.glade.h:37 shell/e-shell-view.c:1129
-#: widgets/misc/e-cell-date-edit.c:234 widgets/misc/e-dateedit.c:430
-#: widgets/misc/e-dateedit.c:1339 widgets/misc/e-dateedit.c:1454
-#, fuzzy
-msgid "None"
-msgstr "Óçìåßù_ìá"
-
-#: calendar/gui/calendar-model.c:967
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1007
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1048
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr ""
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1061
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:355
-msgid "Undefined"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1102
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1571
-msgid "Recurring"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1573
-msgid "Assigned"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1579
-msgid "Yes"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1579
-#, fuzzy
-msgid "No"
-msgstr "_ÍÝï"
-
-#: calendar/gui/calendar-summary.c:196
-msgid "%A, %e %B %Y"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:239 calendar/gui/calendar-summary.c:245
-msgid "%I:%M%p"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:437
-msgid "<b>Error loading calendar</b>"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:449
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:616
-msgid "Display"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:621
-#, fuzzy
-msgid "Show appointments"
-msgstr "Ñ_áíôåâïý"
-
-#: calendar/gui/calendar-summary.c:629
-#, fuzzy
-msgid "Show tasks"
-msgstr "ÅìöÜíéóç åðéóõíÜ_øåùí"
-
-#: calendar/gui/calendar-summary.c:715 calendar/gui/e-itip-control.glade.h:7
-#, fuzzy
-msgid "Loading Calendar"
-msgstr "Çìåñïëüãéï"
-
-#: calendar/gui/control-factory.c:126
-#, fuzzy
-msgid "The URI that the calendar will display"
-msgstr "Ôï URI ðïõ èá åìöáíßóåé ï ÅîåñåõíçôÞò ÖáêÝëëùí"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr ""
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-#, fuzzy
-msgid "Snooze"
-msgstr "ÌÝãåèïò"
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr ""
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr ""
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-msgid "Factory for the alarm notification service"
-msgstr ""
-
-#: calendar/gui/alarm-notify/notify-main.c:67 calendar/gui/main.c:52
-#, fuzzy
-msgid "Could not initialize GNOME"
-msgstr "ÌïíÜäá Ôá÷/ìåßïõ: Áñ÷éêïðïßçóç ôïõ Bonobo áäýíáôç"
-
-#: calendar/gui/alarm-notify/notify-main.c:77
-#, fuzzy
-msgid "Could not create the alarm notify service factory"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:189
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:196
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:207
-msgid "No summary available."
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:2
-msgid "Close"
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-#, fuzzy
-msgid "Edit appointment"
-msgstr "Ñ_áíôåâïý"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-#, fuzzy
-msgid "05 minutes"
-msgstr "Ãíùñéìßåò"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-#, fuzzy
-msgid "10 minutes"
-msgstr "Ãíùñéìßåò"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-#, fuzzy
-msgid "15 minutes"
-msgstr "Ãíùñéìßåò"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-#, fuzzy
-msgid "30 minutes"
-msgstr "Ãíùñéìßåò"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-#, fuzzy
-msgid "60 minutes"
-msgstr "Ãíùñéìßåò"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-#, fuzzy
-msgid "Audio Alarms"
-msgstr "Åðéêüëëçóç"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-#, fuzzy
-msgid "Calendar"
-msgstr "Çìåñïëüãéï"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-#, fuzzy
-msgid "Calendar Preferences"
-msgstr "Çìåñïëüãéï"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-#, fuzzy
-msgid "Colors"
-msgstr "_ÖÜêåëëïò"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-msgid "Defaults"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:162
-msgid "Due Date"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:481
-#, fuzzy
-msgid "Friday"
-msgstr "Ðñïôåñáéüôçôá"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:477
-#, fuzzy
-msgid "Monday"
-msgstr "ÓÞìåñá"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:45
-msgid "Pick a color"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:165
-msgid "Priority"
-msgstr "Ðñïôåñáéüôçôá"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-#, fuzzy
-msgid "Remind me of all appointments"
-msgstr "Ñ_áíôåâïý"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-#, fuzzy
-msgid "Reminders"
-msgstr "ÁðïóôïëÞ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:482
-#, fuzzy
-msgid "Saturday"
-msgstr "ÁðïóôïëÞ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-#, fuzzy
-msgid "Show appointment end times"
-msgstr "Ñ_áíôåâïý"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-#, fuzzy
-msgid "Start of day:"
-msgstr "Áß_ôçóç ÓõíÜíôçóçò"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:483
-#, fuzzy
-msgid "Sunday"
-msgstr "ÁðïóôïëÞ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-#, fuzzy
-msgid "TaskPad"
-msgstr "Åêêñåìü_ôçôá"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:480
-#, fuzzy
-msgid "Thursday"
-msgstr "ÓÞìåñá"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:478
-#, fuzzy
-msgid "Tuesday"
-msgstr "ÓÞìåñá"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-#, fuzzy
-msgid "Visual Alarms"
-msgstr "_ÖÜêåëëïò"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:479
-msgid "Wednesday"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:78
-#, fuzzy
-msgid "seconds."
-msgstr "ÁðïóôïëÞ"
-
-#: calendar/gui/dialogs/delete-comp.c:70
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:73
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:79
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:82
-msgid "Are you sure you want to delete this untitled task?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:88
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:91
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr ""
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:158
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-#, fuzzy
-msgid "Date & Time"
-msgstr "Åðéêüëëçóç"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-#, fuzzy
-msgid "Pri_vate"
-msgstr "Åðéêüëëçóç"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-#, fuzzy
-msgid "Progress"
-msgstr "Å_íÝñãåéåò"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-#, fuzzy
-msgid "Sta_rt Date:"
-msgstr "Áß_ôçóç ÓõíÜíôçóçò"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-#, fuzzy
-msgid "Su_mmary:"
-msgstr "ÁðïóôïëÞ"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-#, fuzzy
-msgid "Task"
-msgstr "Åêêñåìü_ôçôá"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-msgid "URL:"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-#, fuzzy
-msgid "_Contacts..."
-msgstr "_Ãíùñéìßá"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-msgid "_Due Date:"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-#, fuzzy
-msgid "_Priority:"
-msgstr "Ðñïôåñáéüôçôá"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-#, fuzzy
-msgid "_Status:"
-msgstr "ÊáôÜóôáóç óýíäåóçò"
-
-#: calendar/gui/dialogs/task-editor.c:697
-msgid "Edit Task"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor.c:703 calendar/gui/event-editor.c:379
-msgid "No summary"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor.c:709 calendar/gui/event-editor.c:385
-#, fuzzy, c-format
-msgid "Appointment - %s"
-msgstr "Ñ_áíôåâïý"
-
-#: calendar/gui/dialogs/task-editor.c:712 calendar/gui/event-editor.c:388
-#, fuzzy, c-format
-msgid "Task - %s"
-msgstr "Åêêñåìüôçôåò"
-
-#: calendar/gui/dialogs/task-editor.c:715 calendar/gui/event-editor.c:391
-#, fuzzy, c-format
-msgid "Journal entry - %s"
-msgstr "Êáôá÷þñçóç Çìåñï_ëïãßïõ"
-
-#: calendar/gui/e-calendar-table.c:157
-msgid "Categories"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:159
-msgid "Completion Date"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:160
-#, fuzzy
-msgid "End Date"
-msgstr "Áß_ôçóç ÓõíÜíôçóçò"
-
-#: calendar/gui/e-calendar-table.c:161
-#, fuzzy
-msgid "Start Date"
-msgstr "Áß_ôçóç ÓõíÜíôçóçò"
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Geographical Position"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:164
-msgid "Percent complete"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:166
-#, fuzzy
-msgid "Summary"
-msgstr "ÁðïóôïëÞ"
-
-#: calendar/gui/e-calendar-table.c:167
-msgid "Transparency"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:168
-msgid "URL"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:169
-#, fuzzy
-msgid "Alarms"
-msgstr "Åðéêüëëçóç"
-
-#: calendar/gui/e-calendar-table.c:170
-#, fuzzy
-msgid "Click here to add a task"
-msgstr "Êëßê åäþ ãéá ôï äéåõèõíóéïëüãéï"
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "0%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "10%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "20%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "30%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:378
-#, c-format
-msgid "40%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:379
-#, c-format
-msgid "50%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:380
-#, c-format
-msgid "60%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:381
-#, c-format
-msgid "70%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:382
-#, c-format
-msgid "80%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:383
-#, c-format
-msgid "90%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:384
-#, c-format
-msgid "100%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:551
-msgid "Mark Complete"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:552
-msgid "Mark the task complete"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:557
-msgid "Edit this task..."
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:558
-#, fuzzy
-msgid "Edit the task"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: calendar/gui/e-calendar-table.c:560
-#: ui/evolution-task-editor-dialog.xml.h:19
-#, fuzzy
-msgid "Delete this task"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: calendar/gui/e-calendar-table.c:561
-#, fuzzy
-msgid "Delete the task"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: calendar/gui/e-day-view-time-item.c:519
-#, c-format
-msgid "%02i minute divisions"
-msgstr ""
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:274 calendar/gui/e-day-view.c:1294
-#: calendar/gui/e-week-view-main-item.c:325
-msgid "%A %d %B"
-msgstr ""
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:278 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:334
-msgid "%a %d %b"
-msgstr ""
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:282 calendar/gui/e-day-view.c:1321
-#: calendar/gui/e-week-view-main-item.c:348
-msgid "%d %b"
-msgstr ""
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:570 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:617
-msgid "am"
-msgstr ""
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:573 calendar/gui/e-week-view.c:303
-#: calendar/gui/print.c:616
-msgid "pm"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3146 ui/evolution-calendar.xml.h:16
-#, fuzzy
-msgid "New Appointment"
-msgstr "Ñ_áíôåâïý"
-
-#: calendar/gui/e-day-view.c:3148 calendar/gui/e-week-view.c:3280
-msgid "New All Day Event"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3153 calendar/gui/e-week-view.c:3285
-#, fuzzy
-msgid "Go to Today"
-msgstr "ÓÞìåñá"
-
-#: calendar/gui/e-day-view.c:3155 calendar/gui/e-week-view.c:3287
-#, fuzzy
-msgid "Go to Date..."
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: calendar/gui/e-day-view.c:3162 calendar/gui/e-week-view.c:3293
-#: mail/folder-browser.c:566 ui/evolution-calendar.xml.h:19
-#: ui/evolution-message-composer.xml.h:10
-#, fuzzy
-msgid "Open"
-msgstr "¶íïé_ãìá"
-
-#: calendar/gui/e-day-view.c:3164 calendar/gui/e-week-view.c:3295
-#, fuzzy
-msgid "Delete this Appointment"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: calendar/gui/e-day-view.c:3166 calendar/gui/e-week-view.c:3297
-#: ui/evolution-event-editor.xml.h:45
-msgid "Schedule Meeting"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3175 calendar/gui/e-week-view.c:3310
-#, fuzzy
-msgid "Make this Occurrence Movable"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: calendar/gui/e-day-view.c:3177 calendar/gui/e-week-view.c:3312
-#, fuzzy
-msgid "Delete this Occurrence"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: calendar/gui/e-day-view.c:3179
-#, fuzzy
-msgid "Delete all Occurrences"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: calendar/gui/e-itip-control.c:161
-msgid "I couldn't update your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:167 calendar/gui/e-itip-control.c:510
-msgid "Component successfully updated."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:173
-msgid "There was an error loading the calendar file."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:197
-msgid "I couldn't open your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:458 calendar/gui/e-itip-control.c:529
-msgid "I couldn't load your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:470
-msgid "I couldn't read your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:483
-msgid "This is a reply from someone who was uninvited!"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:499
-msgid "I couldn't update your calendar store."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:540
-msgid "I couldn't delete the calendar component!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:550
-msgid "Component successfully deleted."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:694
-#, fuzzy
-msgid "I don't recognize this type of calendar component."
-msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#: calendar/gui/e-itip-control.c:780
-#, fuzzy
-msgid "Add to Calendar"
-msgstr "Ôï çìåñïëüãéü óáò"
-
-#: calendar/gui/e-itip-control.c:814
-msgid " Accept "
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:815
-msgid " Decline "
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:816
-msgid " Tentative "
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:860
-#, fuzzy
-msgid "Update Calendar"
-msgstr "Çìåñïëüãéï"
-
-#: calendar/gui/e-itip-control.c:883
-msgid "Cancel Meeting"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, no-c-format
-msgid "%P %%"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:4
-#, fuzzy
-msgid "Calendar Message"
-msgstr "Çìåñïëüãéï"
-
-#: calendar/gui/e-itip-control.glade.h:5 mail/mail-format.c:619
-#, fuzzy
-msgid "Date:"
-msgstr "Åðéêüëëçóç"
-
-#: calendar/gui/e-itip-control.glade.h:8
-#, fuzzy
-msgid "Loading calendar..."
-msgstr "Çìåñïëüãéï"
-
-#: calendar/gui/e-itip-control.glade.h:9
-msgid "Organizer:"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:10
-#, fuzzy
-msgid "Server Message:"
-msgstr "ÁðåóôáëìÝíá ìçíýìáôá"
-
-#: calendar/gui/e-itip-control.glade.h:11
-#, fuzzy
-msgid "Summary:"
-msgstr "ÁðïóôïëÞ"
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:13
-msgid "date-start"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-msgid "Attendee"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-msgid "Attendee address"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-msgid "Attendees: "
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-msgid "Chair"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-#, fuzzy
-msgid "Meeting Invitations"
-msgstr "Áß_ôçóç ÓõíÜíôçóçò"
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-msgid "Organizer: "
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:15
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid "RSVP"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:18
-msgid ""
-"Request\n"
-"Meeting"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-msgid "Required Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-#, fuzzy
-msgid "Role"
-msgstr "_ÌÞíõìá"
-
-#: calendar/gui/e-meeting-dialog.glade.h:22
-msgid ""
-"Schedule\n"
-"Time"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:24 filter/libfilter-i18n.h:33
-#: mail/message-list.c:1052
-#, fuzzy
-msgid "Status"
-msgstr "ÊáôÜóôáóç óýíäåóçò"
-
-#: calendar/gui/e-tasks.c:149 calendar/gui/e-tasks.c:469
-#: calendar/gui/e-tasks.c:502
-msgid "All"
-msgstr ""
-
-#: calendar/gui/e-tasks.c:155
-msgid "Category:"
-msgstr ""
-
-#: calendar/gui/e-tasks.c:298
-#, fuzzy, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "ÓõããñáöÞ íÝïõ ìçíýìáôïò"
-
-#: calendar/gui/e-tasks.c:310
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr ""
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:342
-msgid "%d %B"
-msgstr ""
-
-#: calendar/gui/e-week-view.c:3278 calendar/gui/e-week-view.c:3301
-#, fuzzy
-msgid "New Appointment..."
-msgstr "Ñ_áíôåâïý"
-
-#: calendar/gui/e-week-view.c:3314
-#, fuzzy
-msgid "Delete All Occurrences"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-#, fuzzy
-msgid "Appointment"
-msgstr "Ñ_áíôåâïý"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-#, fuzzy
-msgid "Appointment Basics"
-msgstr "Ñ_áíôåâïý"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-#, fuzzy
-msgid "Custom recurrence"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-#, fuzzy
-msgid "Exceptions"
-msgstr "Å_íÝñãåéåò"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-#, fuzzy
-msgid "Modify"
-msgstr "ÓÞìåñá"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-#, fuzzy
-msgid "No recurrence"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1579
-msgid "Play a sound"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-msgid "Preview"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-#, fuzzy
-msgid "Recurrence"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-#, fuzzy
-msgid "Recurrence Rule"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-#, fuzzy
-msgid "Reminder"
-msgstr "ÁðïóôïëÞ"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1588
-msgid "Run a program"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1585
-#, fuzzy
-msgid "Send an email"
-msgstr "ÁðïóôïëÞ"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-#, fuzzy
-msgid "Settings..."
-msgstr "Å_íÝñãåéåò"
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1582
-msgid "Show a dialog"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-#, fuzzy
-msgid "_End time:"
-msgstr "Áß_ôçóç ÓõíÜíôçóçò"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-#, fuzzy
-msgid "_Start time:"
-msgstr "Áß_ôçóç ÓõíÜíôçóçò"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-#, fuzzy
-msgid "_Starting date:"
-msgstr "Áß_ôçóç ÓõíÜíôçóçò"
-
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:36
-#, fuzzy
-msgid "after"
-msgstr "Åðéêüëëçóç"
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:37
-msgid "before"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-#, fuzzy
-msgid "day(s)"
-msgstr "Ðñü÷åéñá"
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-#, fuzzy
-msgid "end of appointment"
-msgstr "Ñ_áíôåâïý"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "for"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-msgid "hour(s)"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:40 mail/mail-config.glade.h:77
-#, fuzzy
-msgid "minute(s)"
-msgstr "Ãíùñéìßåò"
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-#, fuzzy
-msgid "month(s)"
-msgstr "Ãíùñéìßåò"
-
-#: calendar/gui/event-editor-dialog.glade.h:42
-#, fuzzy
-msgid "start of appointment"
-msgstr "Ñ_áíôåâïý"
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-msgid "until"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "week(s)"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "year(s)"
-msgstr ""
-
-#: calendar/gui/event-editor.c:373
-#, fuzzy
-msgid "Edit Appointment"
-msgstr "Ñ_áíôåâïý"
-
-#: calendar/gui/event-editor.c:451
-#, fuzzy
-msgid "on"
-msgstr "Ðñïò"
-
-#: calendar/gui/event-editor.c:476 filter/filter-datespec.c:81
-msgid "day"
-msgstr ""
-
-#: calendar/gui/event-editor.c:603
-#, fuzzy
-msgid "on the"
-msgstr "Ãíùñéìßåò"
-
-#: calendar/gui/event-editor.c:610
-msgid "th"
-msgstr ""
-
-#: calendar/gui/event-editor.c:756
-#, fuzzy
-msgid "occurrences"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: calendar/gui/event-editor.c:873
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr ""
-
-#: calendar/gui/event-editor.c:1534
-#, fuzzy, c-format
-msgid " %d days"
-msgstr "Ðñü÷åéñá"
-
-#: calendar/gui/event-editor.c:1536
-#, fuzzy
-msgid " 1 day"
-msgstr "Ðñü÷åéñá"
-
-#: calendar/gui/event-editor.c:1539
-#, c-format
-msgid " %d weeks"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1541
-msgid " 1 week"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1544
-#, c-format
-msgid " %d hours"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1546
-msgid " 1 hour"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1549
-#, fuzzy, c-format
-msgid " %d minutes"
-msgstr "Ãíùñéìßåò"
-
-#: calendar/gui/event-editor.c:1551
-#, fuzzy
-msgid " 1 minute"
-msgstr "Ãíùñéìßåò"
-
-#: calendar/gui/event-editor.c:1554
-#, fuzzy, c-format
-msgid " %d seconds"
-msgstr "ÁðïóôïëÞ"
-
-#: calendar/gui/event-editor.c:1556
-#, fuzzy
-msgid " 1 second"
-msgstr "ÁðïóôïëÞ"
-
-#: calendar/gui/event-editor.c:1603
-#, fuzzy
-msgid " before start of appointment"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: calendar/gui/event-editor.c:1605
-#, fuzzy
-msgid " after start of appointment"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: calendar/gui/event-editor.c:1613
-#, fuzzy
-msgid " before end of appointment"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: calendar/gui/event-editor.c:1615
-#, fuzzy
-msgid " after end of appointment"
-msgstr "Ñ_áíôåâïý"
-
-#: calendar/gui/event-editor.c:3123 calendar/gui/print.c:1097
-#: calendar/gui/print.c:1099 calendar/gui/print.c:1100
-msgid "%a %b %d %Y"
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-#, fuzzy
-msgid "Evolution calendar executive summary component."
-msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-#, fuzzy
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr "Ã_ñáììÞ Óõíôïìåýóåùí ôïõ Evolution"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-#, fuzzy
-msgid "Factory for the Calendar Summary component."
-msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-#, fuzzy
-msgid "Factory for the Evolution calendar component."
-msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-#, fuzzy
-msgid "Factory for the calendar iTip view control"
-msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-#, fuzzy
-msgid "Factory for the sample Calendar control"
-msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#: calendar/gui/gnome-cal.c:700
-#, fuzzy, c-format
-msgid "Could not open the folder in `%s'"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: calendar/gui/gnome-cal.c:711
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:1
-#, fuzzy
-msgid "April"
-msgstr "Åðéêüëëçóç"
-
-#: calendar/gui/goto-dialog.glade.h:2
-msgid "August"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:3
-msgid "December"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:4
-msgid "February"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:5
-#, fuzzy
-msgid "Go To Date"
-msgstr "ÓÞìåñá"
-
-#: calendar/gui/goto-dialog.glade.h:6
-#, fuzzy
-msgid "Go To Today"
-msgstr "ÓÞìåñá"
-
-#: calendar/gui/goto-dialog.glade.h:7
-msgid "January"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:8
-msgid "July"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:9
-msgid "June"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:10
-msgid "March"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:11
-#, fuzzy
-msgid "May"
-msgstr "ÓÞìåñá"
-
-#: calendar/gui/goto-dialog.glade.h:12
-msgid "November"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:13
-msgid "October"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:14
-msgid "September"
-msgstr ""
-
-#: calendar/gui/print.c:300
-msgid "1st"
-msgstr ""
-
-#: calendar/gui/print.c:300
-msgid "2nd"
-msgstr ""
-
-#: calendar/gui/print.c:300
-msgid "3rd"
-msgstr ""
-
-#: calendar/gui/print.c:300
-msgid "4th"
-msgstr ""
-
-#: calendar/gui/print.c:300
-msgid "5th"
-msgstr ""
-
-#: calendar/gui/print.c:301
-msgid "6th"
-msgstr ""
-
-#: calendar/gui/print.c:301
-msgid "7th"
-msgstr ""
-
-#: calendar/gui/print.c:301
-msgid "8th"
-msgstr ""
-
-#: calendar/gui/print.c:301
-msgid "9th"
-msgstr ""
-
-#: calendar/gui/print.c:301
-msgid "10th"
-msgstr ""
-
-#: calendar/gui/print.c:302
-msgid "11th"
-msgstr ""
-
-#: calendar/gui/print.c:302
-msgid "12th"
-msgstr ""
-
-#: calendar/gui/print.c:302
-msgid "13th"
-msgstr ""
-
-#: calendar/gui/print.c:302
-msgid "14th"
-msgstr ""
-
-#: calendar/gui/print.c:302
-msgid "15th"
-msgstr ""
-
-#: calendar/gui/print.c:303
-msgid "16th"
-msgstr ""
-
-#: calendar/gui/print.c:303
-msgid "17th"
-msgstr ""
-
-#: calendar/gui/print.c:303
-msgid "18th"
-msgstr ""
-
-#: calendar/gui/print.c:303
-msgid "19th"
-msgstr ""
-
-#: calendar/gui/print.c:303
-msgid "20th"
-msgstr ""
-
-#: calendar/gui/print.c:304
-msgid "21st"
-msgstr ""
-
-#: calendar/gui/print.c:304
-msgid "22nd"
-msgstr ""
-
-#: calendar/gui/print.c:304
-msgid "23rd"
-msgstr ""
-
-#: calendar/gui/print.c:304
-msgid "24th"
-msgstr ""
-
-#: calendar/gui/print.c:304
-msgid "25th"
-msgstr ""
-
-#: calendar/gui/print.c:305
-msgid "26th"
-msgstr ""
-
-#: calendar/gui/print.c:305
-msgid "27th"
-msgstr ""
-
-#: calendar/gui/print.c:305
-msgid "28th"
-msgstr ""
-
-#: calendar/gui/print.c:305
-msgid "29th"
-msgstr ""
-
-#: calendar/gui/print.c:305
-msgid "30th"
-msgstr ""
-
-#: calendar/gui/print.c:306
-msgid "31st"
-msgstr ""
-
-#: calendar/gui/print.c:362
-msgid "Su"
-msgstr ""
-
-#: calendar/gui/print.c:362
-msgid "Mo"
-msgstr ""
-
-#: calendar/gui/print.c:362
-msgid "Tu"
-msgstr ""
-
-#: calendar/gui/print.c:362
-msgid "We"
-msgstr ""
-
-#: calendar/gui/print.c:362
-msgid "Th"
-msgstr ""
-
-#: calendar/gui/print.c:362
-#, fuzzy
-msgid "Fr"
-msgstr "Áðü"
-
-#: calendar/gui/print.c:362
-msgid "Sa"
-msgstr ""
-
-#: calendar/gui/print.c:948 views/tasks/galview.xml.h:1
-#, fuzzy
-msgid "Tasks"
-msgstr "Åêêñåìü_ôçôá"
-
-#. Day
-#: calendar/gui/print.c:1078
-msgid "Current day (%a %b %d %Y)"
-msgstr ""
-
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1096
-msgid "%a %b %d"
-msgstr ""
-
-#: calendar/gui/print.c:1093
-msgid "%a %d %Y"
-msgstr ""
-
-#: calendar/gui/print.c:1104
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr ""
-
-#. Month
-#: calendar/gui/print.c:1112
-msgid "Current month (%b %Y)"
-msgstr ""
-
-#. Year
-#: calendar/gui/print.c:1119
-msgid "Current year (%Y)"
-msgstr ""
-
-#: calendar/gui/print.c:1156
-#, fuzzy
-msgid "Print Calendar"
-msgstr "Çìåñïëüãéï"
-
-#: calendar/gui/print.c:1321 mail/mail-callbacks.c:1342
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:24
-#: ui/evolution-mail.xml.h:52
-msgid "Print Preview"
-msgstr ""
-
-#: calendar/gui/tasks-control.c:108
-#, fuzzy
-msgid "The URI of the tasks folder to display"
-msgstr "Ôï URI ðïõ èá åìöáíßóåé ï ÅîåñåõíçôÞò ÖáêÝëëùí"
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-
-#: calendar/gui/weekday-picker.c:315 calendar/gui/weekday-picker.c:410
-msgid "SMTWTFS"
-msgstr ""
-
-#: camel/camel-cipher-context.c:169
-msgid "Signing is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-cipher-context.c:207
-msgid "Clearsigning is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-cipher-context.c:245
-msgid "Verifying is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-cipher-context.c:286
-msgid "Encryption is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-cipher-context.c:326
-msgid "Decryption is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-filter-driver.c:534 camel/camel-filter-driver.c:543
-#, fuzzy
-msgid "Syncing folders"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: camel/camel-filter-driver.c:643
-#, fuzzy
-msgid "Unable to open spool folder"
-msgstr "Êëßê åäþ ãéá ôï äéåõèõíóéïëüãéï"
-
-#: camel/camel-filter-driver.c:652
-#, fuzzy
-msgid "Unable to process spool folder"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: camel/camel-filter-driver.c:666
-#, fuzzy
-msgid "Getting message %d (%d%%)"
-msgstr "ÍÝá ìçíýìáôá"
-
-#: camel/camel-filter-driver.c:670 camel/camel-filter-driver.c:679
-#, fuzzy, c-format
-msgid "Failed message %d"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: camel/camel-filter-driver.c:671
-#, fuzzy
-msgid "Cannot open message"
-msgstr "ÁðåóôáëìÝíá ìçíýìáôá"
-
-#: camel/camel-filter-driver.c:690 camel/camel-filter-driver.c:788
-#, fuzzy
-msgid "Syncing folder"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: camel/camel-filter-driver.c:694 camel/camel-filter-driver.c:793
-msgid "Complete"
-msgstr ""
-
-#: camel/camel-filter-driver.c:748
-#, fuzzy, c-format
-msgid "Getting message %d of %d"
-msgstr "ÍÝá ìçíýìáôá"
-
-#: camel/camel-filter-driver.c:753 camel/camel-filter-driver.c:771
-#, fuzzy, c-format
-msgid "Failed at message %d of %d"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: camel/camel-filter-driver.c:866
-#, fuzzy, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: camel/camel-filter-driver.c:871
-#, fuzzy, c-format
-msgid "Error executing filter: %s: %s"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: camel/camel-filter-search.c:439 camel/camel-filter-search.c:445
-#, fuzzy, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: camel/camel-folder-search.c:328
-#, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-folder-search.c:338
-#, fuzzy, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: camel/camel-folder-search.c:485 camel/camel-folder-search.c:513
-msgid "(match-all) requires a single bool result"
-msgstr ""
-
-#: camel/camel-folder-search.c:559
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr ""
-
-#: camel/camel-folder-search.c:670 camel/camel-folder-search.c:714
-msgid "Invalid type in body-contains, expecting string"
-msgstr ""
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:92 camel/camel-lock.c:111 camel/camel-movemail.c:138
-#: camel/camel-movemail.c:185
-#, fuzzy, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: camel/camel-lock.c:151 camel/camel-movemail.c:219
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr ""
-
-#: camel/camel-lock.c:201
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr ""
-
-#: camel/camel-lock.c:255
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr ""
-
-#: camel/camel-movemail.c:101
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:148
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:158
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:199
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:245
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:256
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:274
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:306
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:318
-#, c-format
-msgid "Could not fork: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:356
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:357
-msgid "(Unknown error)"
-msgstr ""
-
-#: camel/camel-movemail.c:587
-#, c-format
-msgid "Error copying mail temp file: %s"
-msgstr ""
-
-#: camel/camel-pgp-context.c:186
-#, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr ""
-
-#: camel/camel-pgp-context.c:189
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr ""
-
-#: camel/camel-pgp-context.c:509
-msgid "No plaintext to sign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:516 camel/camel-pgp-context.c:688
-#: camel/camel-pgp-context.c:1021 camel/camel-pgp-context.c:1235
-msgid "No password provided."
-msgstr ""
-
-#: camel/camel-pgp-context.c:522 camel/camel-pgp-context.c:694
-#: camel/camel-pgp-context.c:877 camel/camel-pgp-context.c:1028
-#: camel/camel-pgp-context.c:1242
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr ""
-
-#: camel/camel-pgp-context.c:681
-msgid "No plaintext to clearsign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:871
-msgid "No plaintext to verify."
-msgstr ""
-
-#: camel/camel-pgp-context.c:888
-#, fuzzy, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: camel/camel-pgp-context.c:1011
-msgid "No plaintext to encrypt."
-msgstr ""
-
-#: camel/camel-pgp-context.c:1037
-msgid "No recipients specified"
-msgstr ""
-
-#: camel/camel-pgp-context.c:1227
-msgid "No ciphertext to decrypt."
-msgstr ""
-
-#: camel/camel-provider.c:131
-#, c-format
-msgid "Could not load %s: Module loading not supported on this system."
-msgstr ""
-
-#: camel/camel-provider.c:140
-#, c-format
-msgid "Could not load %s: %s"
-msgstr ""
-
-#: camel/camel-provider.c:148
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr ""
-
-#: camel/camel-remote-store.c:186
-#, c-format
-msgid "%s server %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:190
-#, c-format
-msgid "%s service for %s on %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:240
-msgid "Connection cancelled"
-msgstr ""
-
-#: camel/camel-remote-store.c:243
-#: camel/providers/smtp/camel-smtp-transport.c:261
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:244
-msgid "(unknown host)"
-msgstr ""
-
-#: camel/camel-remote-store.c:325 camel/camel-remote-store.c:387
-#: camel/camel-remote-store.c:458
-#: camel/providers/imap/camel-imap-command.c:264
-#, fuzzy
-msgid "Operation cancelled"
-msgstr "Ôï çìåñïëüãéü óáò"
-
-#: camel/camel-remote-store.c:464
-msgid "Server unexpectedly disconnected"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:33
-msgid "Anonymous"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:35
-msgid "This option will connect to the server using an anonymous login."
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:110 camel/camel-sasl-plain.c:87
-msgid "Authentication failed."
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:119
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:131
-#, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:143
-#, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-cram-md5.c:35
-msgid "CRAM-MD5"
-msgstr ""
-
-#: camel/camel-sasl-cram-md5.c:37
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:43
-msgid "DIGEST-MD5"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:45
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:810
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:819
-msgid "Server challenge invalid\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:825
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:847
-msgid "Server response did not contain authorization data\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:865
-msgid "Server response contained incomplete authorization data\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:875
-msgid "Server response does not match\n"
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "Kerberos 4"
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:42
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:161
-#, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:218
-#: camel/providers/imap/camel-imap-store.c:417
-msgid "Bad authentication response from server."
-msgstr ""
-
-#: camel/camel-sasl-plain.c:34
-msgid "This option will connect to the server using a simple password."
-msgstr ""
-
-#: camel/camel-search-private.c:110
-#, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr ""
-
-#: camel/camel-service.c:152
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr ""
-
-#: camel/camel-service.c:160
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr ""
-
-#: camel/camel-service.c:168
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr ""
-
-#: camel/camel-service.c:554
-#, c-format
-msgid "Resolving: %s"
-msgstr ""
-
-#: camel/camel-service.c:581
-#, c-format
-msgid "Failure in name lookup: %s"
-msgstr ""
-
-#: camel/camel-service.c:606
-#, c-format
-msgid "Host lookup failed: %s: host not found"
-msgstr ""
-
-#: camel/camel-service.c:608
-#, c-format
-msgid "Host lookup failed: %s: unknown reason"
-msgstr ""
-
-#: camel/camel-session.c:57
-msgid "Virtual folder email provider"
-msgstr ""
-
-#: camel/camel-session.c:59
-msgid "For reading mail as a query of another set of folders"
-msgstr ""
-
-#: camel/camel-session.c:274 camel/camel-session.c:364
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr ""
-
-#: camel/camel-session.c:462
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-
-#. Fill in the new fields
-#: camel/camel-store.c:380 mail/mail-ops.c:994 mail/mail-ops.c:1001
-#: mail/mail-ops.c:1019 mail/mail-ops.c:1020
-#, fuzzy
-msgid "Trash"
-msgstr "Åêêñåìü_ôçôá"
-
-#: camel/camel-url.c:289
-#, fuzzy, c-format
-msgid "Could not parse URL `%s'"
-msgstr "ÓõããñáöÞ íÝïõ ìçíýìáôïò"
-
-#: camel/camel-vee-folder.c:451
-#, fuzzy, c-format
-msgid "No such message %s in %s"
-msgstr "ÁðïóôïëÞ ôïõ ìçíýìáôïò"
-
-#: camel/camel-vee-folder.c:545
-#, fuzzy, c-format
-msgid "No such message: %s"
-msgstr "ÁðïóôïëÞ ôïõ ìçíýìáôïò"
-
-#: camel/providers/imap/camel-imap-command.c:209
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:217
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:218 shell/e-storage.c:481
-msgid "Unknown error"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:272
-msgid "Server response ended too soon."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:456
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:490
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-folder.c:172
-#, c-format
-msgid "Could not load summary for %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-folder.c:351
-#, fuzzy
-msgid "Scanning IMAP folder"
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: camel/providers/imap/camel-imap-folder.c:986
-#: camel/providers/imap/camel-imap-folder.c:1197
-msgid "This message is not currently available"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-folder.c:1016
-#: camel/providers/imap/camel-imap-folder.c:1231
-msgid "Could not find message body in FETCH response."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:43 mail/mail-config.glade.h:11
-msgid "Checking for new mail"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:45
-#, fuzzy
-msgid "Check for new messages in all folders"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: camel/providers/imap/camel-imap-provider.c:48 shell/e-shell-view.c:484
-#, fuzzy
-msgid "Folders"
-msgstr "_ÖÜêåëëïò"
-
-#: camel/providers/imap/camel-imap-provider.c:50
-msgid "Show only subscribed folders"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:52
-msgid "Override server-supplied folder namespace"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:54
-#, fuzzy
-msgid "Namespace"
-msgstr "ÅëÞöèç"
-
-#: camel/providers/imap/camel-imap-provider.c:57
-msgid "Apply filters to new messages in INBOX on this server"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:63
-msgid "IMAPv4"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:65
-msgid "For reading and storing mail on IMAP servers."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:82
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:440
-#, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:450
-#: camel/providers/smtp/camel-smtp-transport.c:358
-#, c-format
-msgid "No support for authentication type %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:475
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:490
-#: camel/providers/smtp/camel-smtp-transport.c:403
-msgid "You didn't enter a password."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:518
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:865
-#, fuzzy, c-format
-msgid "%s is not a selectable folder"
-msgstr "ÅéóÜãåôå ôïí ðáñáëÞðôç ôïõ ìçíýìáôïò"
-
-#: camel/providers/imap/camel-imap-store.c:879
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:1382
-msgid "You must be working online to complete this operation"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:39
-msgid "MH-format mail directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:40
-msgid "For storing local mail in MH-like mail directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:49
-msgid "Standard Unix mailbox file"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:50
-msgid "For storing local mail in standard mbox format"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "Qmail maildir-format mail files"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:60
-msgid "For storing local mail in qmail maildir directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:129
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:136
-#, c-format
-msgid "Store root %s is not a regular directory"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:144
-#: camel/providers/local/camel-local-store.c:160
-#, fuzzy, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: camel/providers/local/camel-local-store.c:175
-msgid "Local stores do not have an inbox"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:185
-#, c-format
-msgid "Local mail file %s"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:241
-#, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:283
-#, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:293
-#, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-folder.c:150
-#: camel/providers/local/camel-maildir-folder.c:158
-#: camel/providers/local/camel-maildir-folder.c:169
-#, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-maildir-folder.c:209
-#: camel/providers/local/camel-maildir-folder.c:217
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#: camel/providers/local/camel-mh-folder.c:194
-#: camel/providers/local/camel-mh-folder.c:202
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#, fuzzy
-msgid "No such message"
-msgstr "ÁðïóôïëÞ ôïõ ìçíýìáôïò"
-
-#: camel/providers/local/camel-maildir-folder.c:218
-#: camel/providers/local/camel-mh-folder.c:203
-msgid "Invalid message contents"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:96
-#: camel/providers/local/camel-mh-store.c:90
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:100
-#: camel/providers/local/camel-mbox-store.c:101
-#: camel/providers/local/camel-mh-store.c:97
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:107
-#: camel/providers/local/camel-mh-store.c:103
-#, fuzzy, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: camel/providers/local/camel-maildir-store.c:122
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:151
-#: camel/providers/local/camel-maildir-store.c:188
-#: camel/providers/local/camel-mh-store.c:127
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:152
-msgid "not a maildir directory"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:152
-#, fuzzy, c-format
-msgid "Cannot create folder lock on %s: %s"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: camel/providers/local/camel-mbox-folder.c:203
-#, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:259
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:335
-#: camel/providers/local/camel-mbox-folder.c:367
-#: camel/providers/local/camel-mbox-folder.c:380
-#, fuzzy, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: camel/providers/local/camel-mbox-folder.c:368
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:381
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:94
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:110
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:119
-#: camel/providers/local/camel-mbox-store.c:146
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:138
-#: camel/providers/local/camel-mbox-store.c:161
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr ""
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:248
-#, fuzzy
-msgid "Summarising folder"
-msgstr "_ÍÝïò ÖÜêåëëïò"
-
-#: camel/providers/local/camel-mbox-summary.c:253
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:295
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:370
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:501
-#: camel/providers/local/camel-mbox-summary.c:702 mail/mail-ops.c:1382
-msgid "Synchronising folder"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:506
-#: camel/providers/local/camel-mbox-summary.c:707
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:523
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:548
-#: camel/providers/local/camel-mbox-summary.c:556
-#: camel/providers/local/camel-mbox-summary.c:745
-#: camel/providers/local/camel-mbox-summary.c:753
-msgid "Summary and folder mismatch, even after a sync"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:599
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:616
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:634
-#: camel/providers/local/camel-mbox-summary.c:803
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:643
-#, fuzzy, c-format
-msgid "Could not close temp folder: %s"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: camel/providers/local/camel-mbox-summary.c:654
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:878
-#, c-format
-msgid "Unknown error: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mh-folder.c:149
-#: camel/providers/local/camel-mh-folder.c:157
-#, fuzzy, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: camel/providers/local/camel-mh-store.c:110
-#, c-format
-msgid "`%s' is not a directory."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:45
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:66
-msgid "Server rejected username"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:72
-msgid "Failed to send username to server"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:81
-msgid "Server rejected username/password"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, fuzzy, c-format
-msgid "Message %s not found."
-msgstr "ÊáôÜóôáóç ìçíõìÜôùí"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-provider.c:42
-msgid "USENET news"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-provider.c:44
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:226
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:288
-#, c-format
-msgid "USENET News via %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:295
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:327
-#: camel/providers/nntp/camel-nntp-store.c:490
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-#, fuzzy
-msgid "Retrieving POP summary"
-msgstr "ÁðåóôáëìÝíá ìçíýìáôá"
-
-#: camel/providers/pop3/camel-pop3-folder.c:192
-msgid "Could not open folder: message listing was incomplete."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:285
-#, c-format
-msgid "No message with uid %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:289
-#, fuzzy, c-format
-msgid "Retrieving POP message %d"
-msgstr "ÍÝá ìçíýìáôá"
-
-#: camel/providers/pop3/camel-pop3-folder.c:307
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:37
-#, fuzzy
-msgid "Message storage"
-msgstr "ÊáôÜóôáóç ìçíõìÜôùí"
-
-#: camel/providers/pop3/camel-pop3-provider.c:39
-#, fuzzy
-msgid "Leave messages on server"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: camel/providers/pop3/camel-pop3-provider.c:41
-#, fuzzy, c-format
-msgid "Delete after %s day(s)"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: camel/providers/pop3/camel-pop3-provider.c:48 mail/mail-config.glade.h:42
-msgid "POP"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:50
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:79
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:91
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:207
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:319
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:358
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:377
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:380
-#: camel/providers/pop3/camel-pop3-store.c:417
-msgid "(Unknown)"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:407
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:415
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:483
-#, c-format
-msgid "No such folder `%s'."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:37
-#: mail/mail-config.glade.h:57
-#, fuzzy
-msgid "Sendmail"
-msgstr "ÁðïóôïëÞ"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:39
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:107
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:124
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:150
-#, fuzzy, c-format
-msgid "Could not send message: %s"
-msgstr "ÓõããñáöÞ íÝïõ ìçíýìáôïò"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:163
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:170
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:175
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:194
-#, fuzzy
-msgid "Could not find 'From' address in message"
-msgstr "ÓõããñáöÞ íÝïõ ìçíýìáôïò"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "sendmail"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:249
-msgid "Mail delivery via the sendmail program"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-provider.c:38 mail/mail-config.glade.h:52
-msgid "SMTP"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-provider.c:40
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:165
-msgid "Syntax error, command unrecognized"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:167
-msgid "Syntax error in parameters or arguments"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:169
-msgid "Command not implemented"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:171
-msgid "Command parameter not implemented"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:173
-msgid "System status, or system help reply"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:175
-#, fuzzy
-msgid "Help message"
-msgstr "ÁðåóôáëìÝíá ìçíýìáôá"
-
-#: camel/providers/smtp/camel-smtp-transport.c:177
-#, fuzzy
-msgid "Service ready"
-msgstr "ÁðïóôïëÞ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:179
-msgid "Service closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:181
-msgid "Service not available, closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:183
-msgid "Requested mail action okay, completed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:185
-msgid "User not local; will forward to <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:187
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:189
-msgid "Requested action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:191
-msgid "Requested action aborted: error in processing"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:193
-msgid "User not local; please try <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:195
-msgid "Requested action not taken: insufficient system storage"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:197
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:199
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:201
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:203
-msgid "Transaction failed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:207
-msgid "A password transition is needed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:209
-msgid "Authentication mechanism is too weak"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:211
-msgid "Encryption required for requested authentication mechanism"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:213
-msgid "Temporary authentication failure"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:215
-msgid "Authentication required"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:305
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:348
-#, c-format
-msgid "SMTP server %s does not support requested authentication type %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:388
-#, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:411
-#, c-format
-msgid ""
-"Unable to authenticate to SMTP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:527
-#, c-format
-msgid "SMTP server %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:529
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:554
-msgid "Cannot send message: sender address not defined."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:561
-msgid "Cannot send message: sender address not valid."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:575
-msgid "Cannot send message: no recipients defined."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:669
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:688
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:721
-msgid "Error creating SASL authentication object."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:736
-#: camel/providers/smtp/camel-smtp-transport.c:748
-#, c-format
-msgid "AUTH request timed out: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:798
-msgid "Bad authentication response from server.\n"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:824
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:843
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:868
-#, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:887
-#, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:918
-#, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:937
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:952
-#: camel/providers/smtp/camel-smtp-transport.c:970
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:989
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1013
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1032
-#, c-format
-msgid "RSET response error: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1055
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1074
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:95
-msgid "1 byte"
-msgstr "1 byte"
-
-#: composer/e-msg-composer-attachment-bar.c:97
-#, c-format
-msgid "%u bytes"
-msgstr "%u byte"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fK"
-
-#: composer/e-msg-composer-attachment-bar.c:108
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fM"
-
-#: composer/e-msg-composer-attachment-bar.c:112
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fG"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:332 mail/mail-display.c:120
-#, fuzzy
-msgid "attachment"
-msgstr "Íåá åðéóýíáøç"
-
-#: composer/e-msg-composer-attachment-bar.c:421
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr "Åðéóýíáøç áñ÷åßïõ"
-
-#: composer/e-msg-composer-attachment-bar.c:469
-msgid "Remove selected items from the attachment list"
-msgstr "ÄéáãñáöÞ åðéëåãìÝíùí áíôéêåéìÝíùí áðü ôïí êáôÜëïãï åðéóõíÜøåùí"
-
-#: composer/e-msg-composer-attachment-bar.c:500
-msgid "Add attachment..."
-msgstr "ÍÝá åðéóýíáøç..."
-
-#: composer/e-msg-composer-attachment-bar.c:501
-msgid "Attach a file to the message"
-msgstr "Åðéóýíáøç áñ÷åßïõ óôï ìÞíõìá"
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/message-list.c:1052
-#, fuzzy
-msgid "Attachment"
-msgstr "Íåá åðéóýíáøç"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-#, fuzzy
-msgid "Attachment properties"
-msgstr "Åðéóýíáøç"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-#, fuzzy
-msgid "File name:"
-msgstr "Ìåôïíïìáóßá ÏìÜäáò"
-
-#: composer/e-msg-composer-attachment.glade.h:5
-#, fuzzy
-msgid "Inline attachment"
-msgstr "Íåá åðéóýíáøç"
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr ""
-
-#: composer/e-msg-composer-attachment.glade.h:7
-#, fuzzy
-msgid "Send as:"
-msgstr "Å_íÝñãåéåò"
-
-#: composer/e-msg-composer-hdrs.c:321
-msgid "Click here for the address book"
-msgstr "Êëßê åäþ ãéá ôï äéåõèõíóéïëüãéï"
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:352 mail/mail-format.c:715
-#, fuzzy
-msgid "From:"
-msgstr "Áðü"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:358 mail/mail-format.c:717
-msgid "Reply-To:"
-msgstr ""
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:369 mail/mail-format.c:639
-msgid "Subject:"
-msgstr "ÈÝìá:"
-
-#: composer/e-msg-composer-hdrs.c:383 mail/mail-format.c:719
-msgid "To:"
-msgstr "Ðñïò:"
-
-#: composer/e-msg-composer-hdrs.c:384
-msgid "Enter the recipients of the message"
-msgstr "ÅéóÜãåôå ôïí ðáñáëÞðôç ôïõ ìçíýìáôïò"
-
-#: composer/e-msg-composer-hdrs.c:387 mail/mail-format.c:721
-msgid "Cc:"
-msgstr "Áíôßãñáöï:"
-
-#: composer/e-msg-composer-hdrs.c:388
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "ÅéóÜãåôå ôéò äéåõèýíóåéò üðïõ èá óôáëåß áíôßãñáöï ôïõ ìçíýìáôïò"
-
-#: composer/e-msg-composer-hdrs.c:391
-msgid "Bcc:"
-msgstr "Êñõöü áíôßãñáöï:"
-
-#: composer/e-msg-composer-hdrs.c:392
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"ÅéóÜãåôå ôéò äéåõèýíóåéò üðïõ èá óôáëåß áíôßãñáöï ôïõ ìçíýìáôïò ÷ùñßò áõôÝò "
-"íá åìöáíéóôïýí óôïí êáôÜëïãï ðáñáëçðôþí ôïõ ìçíýìáôïò."
-
-#: composer/e-msg-composer.c:528
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-
-#: composer/e-msg-composer.c:716
-msgid "Save as..."
-msgstr ""
-
-#: composer/e-msg-composer.c:727
-#, c-format
-msgid "Error saving file: %s"
-msgstr ""
-
-#: composer/e-msg-composer.c:747
-#, c-format
-msgid "Error loading file: %s"
-msgstr ""
-
-#: composer/e-msg-composer.c:819
-msgid ""
-"Unable to open the drafts folder for this account.\n"
-"Would you like to use the default drafts folder?"
-msgstr ""
-
-#: composer/e-msg-composer.c:877 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:206
-msgid "Evolution"
-msgstr ""
-
-#: composer/e-msg-composer.c:883
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-
-#: composer/e-msg-composer.c:908
-#, fuzzy
-msgid "Open file"
-msgstr "¶íïéãìá ÖáêÝëëïõ"
-
-#: composer/e-msg-composer.c:1034
-msgid "That file does not exist."
-msgstr ""
-
-#: composer/e-msg-composer.c:1044
-msgid "That is not a regular file."
-msgstr ""
-
-#: composer/e-msg-composer.c:1054
-msgid "That file exists but is not readable."
-msgstr ""
-
-#: composer/e-msg-composer.c:1064
-msgid "That file appeared accesible but open(2) failed."
-msgstr ""
-
-#: composer/e-msg-composer.c:1086
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-
-#: composer/e-msg-composer.c:1107
-msgid "An error occurred while reading the file."
-msgstr ""
-
-#: composer/e-msg-composer.c:1408 composer/e-msg-composer.c:1740
-#, fuzzy
-msgid "Compose a message"
-msgstr "ÓõããñáöÞ íÝïõ ìçíýìáôïò"
-
-#: composer/e-msg-composer.c:1829
-msgid "Could not create composer window."
-msgstr ""
-
-#: composer/evolution-composer.c:355
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-
-#: composer/evolution-composer.c:370
-#, fuzzy
-msgid "Cannot initialize Evolution's composer."
-msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#: data/evolution.desktop.in.h:2
-#, fuzzy
-msgid "The Evolution groupware suite"
-msgstr "Ã_ñáììÞ Óõíôïìåýóåùí ôïõ Evolution"
-
-#: data/evolution.keys.in.h:1
-msgid "address card"
-msgstr ""
-
-#: data/evolution.keys.in.h:2
-msgid "calendar information"
-msgstr ""
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:69 e-util/e-time-utils.c:117
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:477
-#: widgets/misc/e-dateedit.c:1282 widgets/misc/e-dateedit.c:1463
-msgid "%m/%d/%Y"
-msgstr ""
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:87 e-util/e-time-utils.c:198
-msgid "%I:%M:%S %p%n"
-msgstr ""
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:90 e-util/e-time-utils.c:201
-msgid "%H:%M:%S%n"
-msgstr ""
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:94 e-util/e-time-utils.c:205
-msgid "%I:%M %p%n"
-msgstr ""
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:97 e-util/e-time-utils.c:208
-msgid "%H:%M%n"
-msgstr ""
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:269
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:473
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2503
-msgid "%a %m/%d/%Y"
-msgstr ""
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:274
-msgid "%a %m/%d/%Y %H:%M"
-msgstr ""
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:283
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr ""
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:312 widgets/misc/e-dateedit.c:1257
-#: widgets/misc/e-dateedit.c:1316 widgets/misc/e-dateedit.c:1495
-msgid "%H:%M"
-msgstr ""
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:315
-msgid "%H:%M:%S"
-msgstr ""
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:320 widgets/misc/e-dateedit.c:1260
-#: widgets/misc/e-dateedit.c:1319 widgets/misc/e-dateedit.c:1498
-msgid "%I:%M %p"
-msgstr ""
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:323
-msgid "%I:%M:%S %p"
-msgstr ""
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-msgid "Evolution component for the executive summary."
-msgstr ""
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-#, fuzzy
-msgid "Factory for the Evolution executive summary component."
-msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#: executive-summary/component/component-factory.c:152
-#, fuzzy
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:71
-#, fuzzy, c-format
-msgid "Send an email to %s"
-msgstr "ÁðïóôïëÞ"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:75
-#, c-format
-msgid "Close %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:76
-#, fuzzy, c-format
-msgid "Move %s to the left"
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:78
-#, c-format
-msgid "Move %s into the previous row"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:79
-#, c-format
-msgid "Move %s into the next row"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:80
-#, fuzzy, c-format
-msgid "Configure %s"
-msgstr "_ÍÝïò ÖÜêåëëïò"
-
-#: executive-summary/component/e-summary.c:924
-#, fuzzy, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: executive-summary/component/e-summary.c:938
-#, fuzzy, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: executive-summary/component/e-summary.c:956
-msgid "File does not have a place for the services.\n"
-msgstr ""
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr ""
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr ""
-
-#: executive-summary/component/main.c:62
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-#, fuzzy
-msgid "RDF Summary"
-msgstr "ÁðïóôïëÞ"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-#, fuzzy
-msgid "Factory for the test bonobo component."
-msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-#, fuzzy
-msgid "Factory for the test component."
-msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:512
-#: executive-summary/test-service/rdf-summary.c:549
-#: executive-summary/test-service/rdf-summary.c:594
-#: widgets/misc/e-messagebox.c:166
-msgid "Error"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:768
-msgid "Update automatically"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:778
-msgid "Update now"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:788
-msgid "Update every "
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:796
-#: filter/filter-datespec.c:83
-msgid "minutes"
-msgstr ""
-
-#: filter/filter-datespec.c:78
-msgid "year"
-msgstr ""
-
-#: filter/filter-datespec.c:78
-msgid "years"
-msgstr ""
-
-#: filter/filter-datespec.c:79
-#, fuzzy
-msgid "month"
-msgstr "Ãíùñéìßåò"
-
-#: filter/filter-datespec.c:79
-#, fuzzy
-msgid "months"
-msgstr "Ãíùñéìßåò"
-
-#: filter/filter-datespec.c:80
-msgid "week"
-msgstr ""
-
-#: filter/filter-datespec.c:80
-msgid "weeks"
-msgstr ""
-
-#: filter/filter-datespec.c:81
-#, fuzzy
-msgid "days"
-msgstr "Ðñü÷åéñá"
-
-#: filter/filter-datespec.c:82
-msgid "hour"
-msgstr ""
-
-#: filter/filter-datespec.c:82
-msgid "hours"
-msgstr ""
-
-#: filter/filter-datespec.c:83
-msgid "minute"
-msgstr ""
-
-#: filter/filter-datespec.c:84
-#, fuzzy
-msgid "second"
-msgstr "ÁðïóôïëÞ"
-
-#: filter/filter-datespec.c:84
-#, fuzzy
-msgid "seconds"
-msgstr "ÁðïóôïëÞ"
-
-#: filter/filter-datespec.c:199
-msgid "Oops. You have forgotten to choose a date."
-msgstr ""
-
-#: filter/filter-datespec.c:201
-msgid "Oops. You have chosen an invalid date."
-msgstr ""
-
-#: filter/filter-datespec.c:275
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-
-#: filter/filter-datespec.c:298
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-
-#: filter/filter-datespec.c:338
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:373
-msgid "the current time"
-msgstr ""
-
-#: filter/filter-datespec.c:373
-msgid "a time you specify"
-msgstr ""
-
-#: filter/filter-datespec.c:374
-msgid "a time relative to the current time"
-msgstr ""
-
-#. The label
-#: filter/filter-datespec.c:432
-msgid "Compare against"
-msgstr ""
-
-#: filter/filter-datespec.c:549 filter/filter-datespec.c:709
-msgid "now"
-msgstr ""
-
-#: filter/filter-datespec.c:706
-msgid "<click here to select a date>"
-msgstr ""
-
-#: filter/filter-editor.c:132 filter/filter.glade.h:6
-#, fuzzy
-msgid "Filter Rules"
-msgstr "_ÖÜêåëëïò"
-
-#. and now for the action area
-#: filter/filter-filter.c:453
-msgid "Then"
-msgstr ""
-
-#: filter/filter-filter.c:467
-#, fuzzy
-msgid "Add action"
-msgstr "Å_íÝñãåéåò"
-
-#: filter/filter-folder.c:147
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-
-#: filter/filter-folder.c:222 filter/vfolder-rule.c:285
-#: mail/mail-account-gui.c:682
-#, fuzzy
-msgid "Select Folder"
-msgstr "_ÍÝïò ÖÜêåëëïò"
-
-#: filter/filter-folder.c:247
-msgid "Enter folder URI"
-msgstr ""
-
-#: filter/filter-folder.c:293
-msgid "<click here to select a folder>"
-msgstr ""
-
-#: filter/filter-input.c:194
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-
-#: filter/filter-part.c:475
-msgid "Test"
-msgstr ""
-
-#: filter/filter-rule.c:626
-#, fuzzy
-msgid "Rule name: "
-msgstr "Ìåôïíïìáóßá ÏìÜäáò"
-
-#: filter/filter-rule.c:630
-msgid "Untitled"
-msgstr ""
-
-#: filter/filter-rule.c:646
-msgid "If"
-msgstr ""
-
-#: filter/filter-rule.c:664
-#, fuzzy
-msgid "Execute actions"
-msgstr "Å_íÝñãåéåò"
-
-#: filter/filter-rule.c:668
-msgid "if all criteria are met"
-msgstr ""
-
-#: filter/filter-rule.c:673
-msgid "if any criteria are met"
-msgstr ""
-
-#: filter/filter-rule.c:684
-msgid "Add criterion"
-msgstr ""
-
-#: filter/filter.glade.h:4
-#, fuzzy
-msgid "Edit Filters"
-msgstr "_ÖÜêåëëïò"
-
-#: filter/filter.glade.h:5
-#, fuzzy
-msgid "Edit VFolders"
-msgstr "_ÖÜêåëëïò"
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr ""
-
-#: filter/filter.glade.h:8
-msgid "Outgoing"
-msgstr ""
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:130
-#, fuzzy
-msgid "Virtual Folders"
-msgstr "_ÖÜêåëëïò"
-
-#: filter/filter.glade.h:11
-msgid "specific folders only"
-msgstr ""
-
-#: filter/filter.glade.h:12
-#, fuzzy
-msgid "vFolder Sources"
-msgstr "ÍÝá Óõíôüìåõóç"
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr ""
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr ""
-
-#: filter/filter.glade.h:15
-msgid "with all local folders"
-msgstr ""
-
-#. Automatically generated. Do not edit.
-#: filter/libfilter-i18n.h:2
-msgid "Assign Colour"
-msgstr ""
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Score"
-msgstr ""
-
-#: filter/libfilter-i18n.h:4
-#, fuzzy
-msgid "Attachments"
-msgstr "Íåá åðéóýíáøç"
-
-#: filter/libfilter-i18n.h:5
-#, fuzzy
-msgid "Copy to Folder"
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: filter/libfilter-i18n.h:6
-#, fuzzy
-msgid "Date received"
-msgstr "ÅëÞöèç"
-
-#: filter/libfilter-i18n.h:7
-#, fuzzy
-msgid "Date sent"
-msgstr "Åðéêüëëçóç"
-
-#: filter/libfilter-i18n.h:9
-msgid "Deleted"
-msgstr ""
-
-#: filter/libfilter-i18n.h:10
-msgid "Do Not Exist"
-msgstr ""
-
-#: filter/libfilter-i18n.h:11
-#, fuzzy
-msgid "Draft"
-msgstr "Åðéêüëëçóç"
-
-#: filter/libfilter-i18n.h:12
-msgid "Exist"
-msgstr ""
-
-#: filter/libfilter-i18n.h:13
-#, fuzzy
-msgid "Expression"
-msgstr "Å_íÝñãåéåò"
-
-#: filter/libfilter-i18n.h:14
-#, fuzzy
-msgid "Forward to Address"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: filter/libfilter-i18n.h:15
-msgid "Important"
-msgstr ""
-
-#: filter/libfilter-i18n.h:16
-#, fuzzy
-msgid "Is Not"
-msgstr "Óçìåßù_ìá"
-
-#: filter/libfilter-i18n.h:17
-msgid "Is"
-msgstr ""
-
-#: filter/libfilter-i18n.h:18
-msgid "Mailing list"
-msgstr ""
-
-#: filter/libfilter-i18n.h:19
-#, fuzzy
-msgid "Message Body"
-msgstr "ÊáôÜóôáóç ìçíõìÜôùí"
-
-#: filter/libfilter-i18n.h:20
-#, fuzzy
-msgid "Message Header"
-msgstr "ÊáôÜóôáóç ìçíõìÜôùí"
-
-#: filter/libfilter-i18n.h:21
-msgid "Message was received"
-msgstr ""
-
-#: filter/libfilter-i18n.h:22
-#, fuzzy
-msgid "Message was sent"
-msgstr "ÊáôÜóôáóç ìçíõìÜôùí"
-
-#: filter/libfilter-i18n.h:23
-#, fuzzy
-msgid "Move to Folder"
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: filter/libfilter-i18n.h:24
-#, fuzzy
-msgid "Read"
-msgstr "ÄéáãñáöÞ"
-
-#: filter/libfilter-i18n.h:25
-msgid "Recipients"
-msgstr ""
-
-#: filter/libfilter-i18n.h:26
-msgid "Regex Match"
-msgstr ""
-
-#: filter/libfilter-i18n.h:27
-msgid "Replied to"
-msgstr ""
-
-#: filter/libfilter-i18n.h:28 filter/score-rule.c:203 filter/score-rule.c:205
-#: mail/message-list.c:1052
-msgid "Score"
-msgstr ""
-
-#: filter/libfilter-i18n.h:29
-#, fuzzy
-msgid "Sender"
-msgstr "ÁðïóôïëÞ"
-
-#: filter/libfilter-i18n.h:30
-#, fuzzy
-msgid "Set Status"
-msgstr "ÊáôÜóôáóç óýíäåóçò"
-
-#: filter/libfilter-i18n.h:31
-#, fuzzy
-msgid "Source Account"
-msgstr "ÌéêñÜ Åéêïíßäéá"
-
-#: filter/libfilter-i18n.h:32
-msgid "Specific header"
-msgstr ""
-
-#: filter/libfilter-i18n.h:34
-msgid "Stop Processing"
-msgstr ""
-
-#: filter/libfilter-i18n.h:35 mail/message-list.c:1053
-msgid "Subject"
-msgstr "ÈÝìá"
-
-#: filter/libfilter-i18n.h:38
-#, fuzzy
-msgid "contains"
-msgstr "Å_íÝñãåéåò"
-
-#: filter/libfilter-i18n.h:39
-msgid "does not contain"
-msgstr ""
-
-#: filter/libfilter-i18n.h:40
-msgid "does not end with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:41
-msgid "does not exist"
-msgstr ""
-
-#: filter/libfilter-i18n.h:42
-msgid "does not sound like"
-msgstr ""
-
-#: filter/libfilter-i18n.h:43
-msgid "does not start with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:44
-msgid "ends with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:45
-msgid "exists"
-msgstr ""
-
-#: filter/libfilter-i18n.h:46
-msgid "is greater than"
-msgstr ""
-
-#: filter/libfilter-i18n.h:47
-msgid "is less than"
-msgstr ""
-
-#: filter/libfilter-i18n.h:48
-msgid "is not"
-msgstr ""
-
-#: filter/libfilter-i18n.h:49
-msgid "is"
-msgstr ""
-
-#: filter/libfilter-i18n.h:50
-msgid "on or after"
-msgstr ""
-
-#: filter/libfilter-i18n.h:51
-msgid "on or before"
-msgstr ""
-
-#: filter/libfilter-i18n.h:52
-msgid "sounds like"
-msgstr ""
-
-#: filter/libfilter-i18n.h:53
-msgid "starts with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:54
-msgid "was after"
-msgstr ""
-
-#: filter/libfilter-i18n.h:55
-msgid "was before"
-msgstr ""
-
-#: filter/score-editor.c:130
-#, fuzzy
-msgid "Score Rules"
-msgstr "_ÖÜêåëëïò"
-
-#: mail/component-factory.c:329
-#, fuzzy
-msgid "Cannot initialize Evolution's mail component."
-msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#: mail/component-factory.c:402
-msgid "Cannot register storage with shell"
-msgstr ""
-
-#: mail/folder-browser-factory.c:209
-#, fuzzy, c-format
-msgid "Properties for \"%s\""
-msgstr "Éäéüôçôåò"
-
-#: mail/folder-browser-factory.c:211 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-#, fuzzy
-msgid "Properties"
-msgstr "Éäéüôçôåò"
-
-#: mail/folder-browser.c:225
-#, fuzzy
-msgid "Store search as vFolder"
-msgstr "_ÍÝïò ÖÜêåëëïò"
-
-#: mail/folder-browser.c:533
-msgid "VFolder on Subject"
-msgstr ""
-
-#: mail/folder-browser.c:536
-msgid "VFolder on Sender"
-msgstr ""
-
-#: mail/folder-browser.c:539
-msgid "VFolder on Recipients"
-msgstr ""
-
-#: mail/folder-browser.c:542 mail/folder-browser.c:733
-#, fuzzy
-msgid "VFolder on Mailing List"
-msgstr "ÖÜêåëëïò ðïõ ðåñéÝ÷åé ìçíýìáôá"
-
-#: mail/folder-browser.c:548
-msgid "Filter on Subject"
-msgstr ""
-
-#: mail/folder-browser.c:551
-msgid "Filter on Sender"
-msgstr ""
-
-#: mail/folder-browser.c:554
-msgid "Filter on Recipients"
-msgstr ""
-
-#: mail/folder-browser.c:557 mail/folder-browser.c:732
-msgid "Filter on Mailing List"
-msgstr ""
-
-#: mail/folder-browser.c:568
-#, fuzzy
-msgid "Resend"
-msgstr "ÁðïóôïëÞ"
-
-#: mail/folder-browser.c:570
-msgid "Save As..."
-msgstr ""
-
-#: mail/folder-browser.c:577
-msgid "Reply to Sender"
-msgstr ""
-
-#: mail/folder-browser.c:579 mail/mail-view.c:147 ui/evolution-mail.xml.h:60
-msgid "Reply to All"
-msgstr ""
-
-#: mail/folder-browser.c:581 mail/mail-view.c:150 ui/evolution-mail.xml.h:24
-msgid "Forward"
-msgstr ""
-
-#: mail/folder-browser.c:583 ui/evolution-mail.xml.h:26
-msgid "Forward inline"
-msgstr ""
-
-#: mail/folder-browser.c:586
-msgid "Mark as Read"
-msgstr ""
-
-#: mail/folder-browser.c:588
-msgid "Mark as Unread"
-msgstr ""
-
-#: mail/folder-browser.c:593
-#, fuzzy
-msgid "Move to Folder..."
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: mail/folder-browser.c:595
-#, fuzzy
-msgid "Copy to Folder..."
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: mail/folder-browser.c:599 ui/evolution-mail.xml.h:81
-msgid "Undelete"
-msgstr ""
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:609 ui/evolution-mail.xml.h:1
-#, fuzzy
-msgid "Apply Filters"
-msgstr "_ÖÜêåëëïò"
-
-#: mail/folder-browser.c:613
-#, fuzzy
-msgid "Create Rule From Message"
-msgstr "Ðñü÷åéñá ìçíýìáôá"
-
-#: mail/folder-browser.c:735
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr ""
-
-#: mail/folder-browser.c:736
-#, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-#, fuzzy
-msgid "Evolution mail composer."
-msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-#, fuzzy
-msgid "Evolution mail executive summary component."
-msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-#, fuzzy
-msgid "Evolution mail folder display component."
-msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-#, fuzzy
-msgid "Evolution mail folder factory component."
-msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-#, fuzzy
-msgid "Factory for the Evolution composer."
-msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-#, fuzzy
-msgid "Factory for the Evolution mail component."
-msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-#, fuzzy
-msgid "Factory for the Mail Summary component."
-msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#: mail/local-config.glade.h:1
-#, fuzzy
-msgid "Current store format:"
-msgstr "ÌïíÜäá Ôá÷/ìåßïõ: Áñ÷éêïðïßçóç ôïõ Bonobo áäýíáôç"
-
-#: mail/local-config.glade.h:2
-#, fuzzy
-msgid "Mailbox Format"
-msgstr "Áðü"
-
-#: mail/local-config.glade.h:3
-#, fuzzy
-msgid "New store format:"
-msgstr "ÌïíÜäá Ôá÷/ìåßïõ: Áñ÷éêïðïßçóç ôïõ Bonobo áäýíáôç"
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-
-#: mail/local-config.glade.h:7
-#, fuzzy
-msgid "maildir"
-msgstr "_ÌÞíõìá"
-
-#: mail/local-config.glade.h:8
-#, fuzzy
-msgid "mbox"
-msgstr "Åéóåñ÷üìåíá"
-
-#: mail/local-config.glade.h:9
-msgid "mh"
-msgstr ""
-
-#: mail/mail-accounts.c:121 mail/mail-accounts.c:165
-msgid " (default)"
-msgstr ""
-
-#: mail/mail-accounts.c:197
-msgid "Disable"
-msgstr ""
-
-#: mail/mail-accounts.c:199 mail/mail-config.glade.h:25
-msgid "Enable"
-msgstr ""
-
-#: mail/mail-accounts.c:280 mail/mail-accounts.c:284
-msgid "Are you sure you want to delete this account?"
-msgstr ""
-
-#: mail/mail-accounts.c:418 mail/mail-accounts.c:422
-msgid "Are you sure you want to delete this news account?"
-msgstr ""
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:536
-msgid "Evolution Account Manager"
-msgstr ""
-
-#: mail/mail-account-editor.c:105
-msgid "You have not filled in all of the required information."
-msgstr ""
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:173
-#, fuzzy
-msgid "Evolution Account Editor"
-msgstr "Ã_ñáììÞ Óõíôïìåýóåùí ôïõ Evolution"
-
-#: mail/mail-autofilter.c:70
-#, c-format
-msgid "Mail to %s"
-msgstr ""
-
-#: mail/mail-autofilter.c:213
-#, fuzzy, c-format
-msgid "Subject is %s"
-msgstr "ÈÝìá"
-
-#: mail/mail-autofilter.c:229
-#, c-format
-msgid "Mail from %s"
-msgstr ""
-
-#: mail/mail-autofilter.c:285
-#, c-format
-msgid "%s mailing list"
-msgstr ""
-
-#: mail/mail-autofilter.c:335 mail/mail-autofilter.c:357
-#, fuzzy
-msgid "Add Filter Rule"
-msgstr "_ÖÜêåëëïò"
-
-#: mail/mail-callbacks.c:93
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-
-#: mail/mail-callbacks.c:146
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-
-#: mail/mail-callbacks.c:158
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-
-#: mail/mail-callbacks.c:202
-msgid "You have not set a mail transport method"
-msgstr ""
-
-#: mail/mail-callbacks.c:235
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-
-#: mail/mail-callbacks.c:308
-msgid "You must specify recipients in order to send this message."
-msgstr ""
-
-#: mail/mail-callbacks.c:351
-msgid "You must configure an account before you can send this email."
-msgstr ""
-
-#: mail/mail-callbacks.c:591
-#, c-format
-msgid "On %s, %s wrote:\n"
-msgstr ""
-
-#: mail/mail-callbacks.c:773
-#, fuzzy
-msgid "Forwarded message:\n"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: mail/mail-callbacks.c:876
-#, fuzzy
-msgid "Move message(s) to"
-msgstr "ÍÝá ìçíýìáôá"
-
-#: mail/mail-callbacks.c:878
-#, fuzzy
-msgid "Copy message(s) to"
-msgstr "ÍÝá ìçíýìáôá"
-
-#: mail/mail-callbacks.c:1019
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-
-#: mail/mail-callbacks.c:1056
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-
-#: mail/mail-callbacks.c:1089 mail/mail-display.c:90
-msgid "Overwrite file?"
-msgstr ""
-
-#: mail/mail-callbacks.c:1093 mail/mail-display.c:94
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-
-#: mail/mail-callbacks.c:1137
-msgid "Save Message As..."
-msgstr ""
-
-#: mail/mail-callbacks.c:1139
-msgid "Save Messages As..."
-msgstr ""
-
-#: mail/mail-callbacks.c:1253
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-
-#: mail/mail-callbacks.c:1302 ui/evolution-mail.xml.h:51
-#, fuzzy
-msgid "Print Message"
-msgstr "ÁðåóôáëìÝíá ìçíýìáôá"
-
-#: mail/mail-callbacks.c:1349
-msgid "Printing of message failed"
-msgstr ""
-
-#: mail/mail-config.c:1043 mail/mail-config.c:1046
-msgid "Connecting to server..."
-msgstr ""
-
-#: mail/mail-config.glade.h:1
-msgid " Check for supported types "
-msgstr ""
-
-#: mail/mail-config.glade.h:2
-msgid " color"
-msgstr ""
-
-#: mail/mail-config.glade.h:3
-#, fuzzy
-msgid "Account"
-msgstr "ÌéêñÜ Åéêïíßäéá"
-
-#: mail/mail-config.glade.h:4
-#, fuzzy
-msgid "Account Information"
-msgstr "Åðéóýíáøç"
-
-#: mail/mail-config.glade.h:5
-msgid "Account Management"
-msgstr ""
-
-#: mail/mail-config.glade.h:6
-#, fuzzy
-msgid "Accounts"
-msgstr "ÌéêñÜ Åéêïíßäéá"
-
-#: mail/mail-config.glade.h:8
-msgid "Authentication"
-msgstr ""
-
-#: mail/mail-config.glade.h:9
-msgid "Authentication Type: "
-msgstr ""
-
-#: mail/mail-config.glade.h:10
-msgid "Automatically check for new mail every"
-msgstr ""
-
-#: mail/mail-config.glade.h:12
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-
-#: mail/mail-config.glade.h:18
-msgid "De_fault"
-msgstr ""
-
-#: mail/mail-config.glade.h:20
-#, fuzzy
-msgid "Done"
-msgstr "Óçìåßù_ìá"
-
-#: mail/mail-config.glade.h:21
-#, fuzzy
-msgid "Drafts"
-msgstr "Åðéêüëëçóç"
-
-#: mail/mail-config.glade.h:22
-#, fuzzy
-msgid "Drafts folder:"
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: mail/mail-config.glade.h:24
-#, fuzzy
-msgid "Email Address:"
-msgstr "Êëßê åäþ ãéá ôï äéåõèõíóéïëüãéï"
-
-#: mail/mail-config.glade.h:26
-#, fuzzy
-msgid "Full Name:"
-msgstr "Ìåôïíïìáóßá ÏìÜäáò"
-
-#: mail/mail-config.glade.h:27
-msgid "Highlight citations with "
-msgstr ""
-
-#: mail/mail-config.glade.h:29
-msgid "IMAPv4 "
-msgstr ""
-
-#: mail/mail-config.glade.h:30
-msgid "Identity"
-msgstr ""
-
-#: mail/mail-config.glade.h:31
-#, fuzzy
-msgid "Kerberos "
-msgstr "ÁðïóôïëÞ"
-
-#: mail/mail-config.glade.h:32
-#, fuzzy
-msgid "Mail Configuration"
-msgstr "Ã_ñáììÞ Óõíôïìåýóåùí ôïõ Evolution"
-
-#: mail/mail-config.glade.h:33
-msgid "Make this my default account"
-msgstr ""
-
-#: mail/mail-config.glade.h:34
-#, fuzzy
-msgid "Mark messages as \"Read\" after:"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: mail/mail-config.glade.h:36
-#, fuzzy
-msgid "News"
-msgstr "_ÍÝï"
-
-#: mail/mail-config.glade.h:38
-#, fuzzy
-msgid "Optional Information"
-msgstr "Ã_ñáììÞ Óõíôïìåýóåùí ôïõ Evolution"
-
-#: mail/mail-config.glade.h:39
-msgid "Organization:"
-msgstr ""
-
-#: mail/mail-config.glade.h:41
-msgid "PGP binary path:"
-msgstr ""
-
-#: mail/mail-config.glade.h:46
-msgid "Qmail maildir "
-msgstr ""
-
-#: mail/mail-config.glade.h:47
-msgid "Receiving Email"
-msgstr ""
-
-#: mail/mail-config.glade.h:48
-msgid "Receiving Mail"
-msgstr ""
-
-#: mail/mail-config.glade.h:49
-msgid "Receiving Options"
-msgstr ""
-
-#: mail/mail-config.glade.h:51
-msgid "Required Information"
-msgstr ""
-
-#: mail/mail-config.glade.h:53
-msgid "Select PGP binary"
-msgstr ""
-
-#: mail/mail-config.glade.h:54
-msgid "Send mail in HTML format by default."
-msgstr ""
-
-#: mail/mail-config.glade.h:55
-#, fuzzy
-msgid "Sending Email"
-msgstr "ÁðïóôïëÞ"
-
-#: mail/mail-config.glade.h:56
-#, fuzzy
-msgid "Sending Mail"
-msgstr "ÁðïóôïëÞ"
-
-#: mail/mail-config.glade.h:58
-#, fuzzy
-msgid "Sent"
-msgstr "ÁðïóôïëÞ"
-
-#: mail/mail-config.glade.h:59
-#, fuzzy
-msgid "Sent and Draft Messages"
-msgstr "ÁðïóôïëÞ ôïõ ìçíýìáôïò"
-
-#: mail/mail-config.glade.h:60
-#, fuzzy
-msgid "Sent messages folder:"
-msgstr "ÁðïóôïëÞ ôïõ ìçíýìáôïò"
-
-#: mail/mail-config.glade.h:61
-#, fuzzy
-msgid "Server Configuration"
-msgstr "Ã_ñáììÞ Óõíôïìåýóåùí ôïõ Evolution"
-
-#: mail/mail-config.glade.h:62
-#, fuzzy
-msgid "Server Type: "
-msgstr "ÁðïóôïëÞ"
-
-#: mail/mail-config.glade.h:63
-msgid "Server requires authentication"
-msgstr ""
-
-#: mail/mail-config.glade.h:64
-msgid "Signature file:"
-msgstr ""
-
-#: mail/mail-config.glade.h:65
-#, fuzzy
-msgid "Sources"
-msgstr "ÍÝá Óõíôüìåõóç"
-
-#: mail/mail-config.glade.h:66
-#, fuzzy
-msgid "Special Folders"
-msgstr "_ÖÜêåëëïò"
-
-#: mail/mail-config.glade.h:67
-msgid "Standard Unix mbox"
-msgstr ""
-
-#: mail/mail-config.glade.h:68
-msgid "Type"
-msgstr ""
-
-#: mail/mail-config.glade.h:69
-msgid "Use secure connection (SSL)"
-msgstr ""
-
-#: mail/mail-config.glade.h:70
-#, fuzzy
-msgid "Username:"
-msgstr "Óçìåßù_ìá"
-
-#: mail/mail-config.glade.h:71
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-
-#: mail/mail-config.glade.h:76 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:43 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:29
-msgid "_Edit"
-msgstr ""
-
-#: mail/mail-config-druid.c:99
-msgid ""
-"Please enter your name and email address below. The \"optional\" fields "
-"below do not need to be filled in, unless you wish to include this "
-"information in email you send."
-msgstr ""
-
-#: mail/mail-config-druid.c:101
-msgid ""
-"Please enter information about your incoming mail server below. If you don't "
-"know what kind of server you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-
-#: mail/mail-config-druid.c:105
-msgid ""
-"Please enter information about your outgoing mail protocol below. If you "
-"don't know which protocol you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-
-#: mail/mail-config-druid.c:107
-msgid ""
-"You are almost done with the mail configuration process. The identity, "
-"incoming mail server and outgoing mail transport method which you provided "
-"will be grouped together to make an Evolution mail account. Please enter a "
-"name for this account in the space below. This name will be used for display "
-"purposes only."
-msgstr ""
-
-#. set window title
-#: mail/mail-config-druid.c:445
-msgid "Evolution Account Wizard"
-msgstr ""
-
-#: mail/mail-display.c:194
-#, fuzzy
-msgid "Save Attachment"
-msgstr "ÍÝá åðéóýíáøç..."
-
-#: mail/mail-display.c:234
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr ""
-
-#: mail/mail-display.c:295
-msgid "Save to Disk..."
-msgstr ""
-
-#: mail/mail-display.c:297
-#, c-format
-msgid "Open in %s..."
-msgstr ""
-
-#: mail/mail-display.c:299
-msgid "View Inline"
-msgstr ""
-
-#: mail/mail-display.c:334
-msgid "External Viewer"
-msgstr ""
-
-#: mail/mail-display.c:357
-#, c-format
-msgid "View Inline (via %s)"
-msgstr ""
-
-#: mail/mail-display.c:361
-msgid "Hide"
-msgstr ""
-
-#: mail/mail-display.c:1102
-#, fuzzy
-msgid "Open link in browser"
-msgstr "¶íïéãìá óå ÍÝï ÐáñÜèõñï"
-
-#: mail/mail-display.c:1104
-#, fuzzy
-msgid "Save as (FIXME)"
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: mail/mail-display.c:1106
-#, fuzzy
-msgid "Copy location (FIXME)"
-msgstr "_Ãíùñéìßá"
-
-#: mail/mail-format.c:518
-#, fuzzy, c-format
-msgid "%s attachment"
-msgstr "Íåá åðéóýíáøç"
-
-#: mail/mail-format.c:560
-msgid "Could not parse MIME message. Displaying as source."
-msgstr ""
-
-#: mail/mail-format.c:742
-#, fuzzy
-msgid "Loading message content"
-msgstr "ÁðåóôáëìÝíá ìçíýìáôá"
-
-#: mail/mail-format.c:1046
-msgid "Encrypted message not displayed"
-msgstr ""
-
-#: mail/mail-format.c:1052
-#, fuzzy
-msgid "Encrypted message"
-msgstr "ÁðïóôïëÞ ôïõ ìçíýìáôïò"
-
-#: mail/mail-format.c:1053
-msgid "Click icon to decrypt."
-msgstr ""
-
-#: mail/mail-format.c:1137 mail/mail-format.c:1526
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr ""
-
-#: mail/mail-format.c:1145 mail/mail-format.c:1534
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr ""
-
-#: mail/mail-format.c:1747
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr ""
-
-#: mail/mail-format.c:1759
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr ""
-
-#: mail/mail-format.c:1763
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr ""
-
-#: mail/mail-format.c:1797
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr ""
-
-#: mail/mail-format.c:1802
-msgid "Malformed external-body part."
-msgstr ""
-
-#: mail/mail-local.c:337
-#, fuzzy, c-format
-msgid "No such folder %s"
-msgstr "ÁðïóôïëÞ ôïõ ìçíýìáôïò"
-
-#: mail/mail-local.c:509
-#, fuzzy, c-format
-msgid "Opening '%s'"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: mail/mail-local.c:787
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr ""
-
-#: mail/mail-local.c:791
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr ""
-
-#: mail/mail-local.c:815
-#, fuzzy
-msgid "Reconfiguring folder"
-msgstr "_ÍÝïò ÖÜêåëëïò"
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:844
-msgid "Closing current folder"
-msgstr ""
-
-#: mail/mail-local.c:876
-msgid "Renaming old folder and opening"
-msgstr ""
-
-#: mail/mail-local.c:894
-#, fuzzy
-msgid "Creating new folder"
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: mail/mail-local.c:908
-#, fuzzy
-msgid "Copying messages"
-msgstr "ÁðåóôáëìÝíá ìçíýìáôá"
-
-#: mail/mail-local.c:925
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-
-#: mail/mail-local.c:964
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-
-#: mail/mail-mt.c:190
-#, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-
-#: mail/mail-mt.c:192
-#, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-
-#: mail/mail-mt.c:515 mail/mail-mt.c:544 mail/mail-mt.c:891
-msgid "Working"
-msgstr ""
-
-#: mail/mail-mt.c:679 mail/session.c:98
-msgid "Do you accept?"
-msgstr ""
-
-#: mail/mail-mt.c:873
-#, fuzzy
-msgid "Evolution progress"
-msgstr "Ã_ñáììÞ Óõíôïìåýóåùí ôïõ Evolution"
-
-#: mail/mail-ops.c:587
-#, c-format
-msgid "Sending \"%s\""
-msgstr ""
-
-#: mail/mail-ops.c:589
-#, fuzzy
-msgid "Sending message"
-msgstr "ÁðåóôáëìÝíá ìçíýìáôá"
-
-#: mail/mail-ops.c:704
-#, fuzzy, c-format
-msgid "Sending message %d of %d"
-msgstr "ÁðåóôáëìÝíá ìçíýìáôá"
-
-#: mail/mail-ops.c:723
-#, fuzzy, c-format
-msgid "Failed on message %d of %d"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: mail/mail-ops.c:725 mail/mail-send-recv.c:475
-msgid "Complete."
-msgstr ""
-
-#: mail/mail-ops.c:811
-#, fuzzy
-msgid "Saving message to folder"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: mail/mail-ops.c:884
-#, fuzzy, c-format
-msgid "Moving messages to %s"
-msgstr "ÍÝá ìçíýìáôá"
-
-#: mail/mail-ops.c:884
-#, fuzzy, c-format
-msgid "Copying messages to %s"
-msgstr "ÁðåóôáëìÝíá ìçíýìáôá"
-
-#: mail/mail-ops.c:900
-msgid "Moving"
-msgstr ""
-
-#: mail/mail-ops.c:903
-#, fuzzy
-msgid "Copying"
-msgstr "ÁíôéãñáöÞ"
-
-#: mail/mail-ops.c:978
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr ""
-
-#: mail/mail-ops.c:1139
-#, fuzzy
-msgid "Forwarded messages"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: mail/mail-ops.c:1180 mail/mail-ops.c:1318
-#, fuzzy, c-format
-msgid "Opening folder %s"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: mail/mail-ops.c:1247
-#, fuzzy, c-format
-msgid "Opening store %s"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: mail/mail-ops.c:1434
-msgid "Expunging folder"
-msgstr ""
-
-#: mail/mail-ops.c:1483
-#, fuzzy, c-format
-msgid "Retrieving message %s"
-msgstr "ÍÝá ìçíýìáôá"
-
-#: mail/mail-ops.c:1550
-#, fuzzy
-msgid "Retrieving messages"
-msgstr "ÁðåóôáëìÝíá ìçíýìáôá"
-
-#: mail/mail-ops.c:1560
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr ""
-
-#: mail/mail-ops.c:1634
-#, fuzzy
-msgid "Saving messages"
-msgstr "ÁðåóôáëìÝíá ìçíýìáôá"
-
-#: mail/mail-ops.c:1713
-#, fuzzy, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: mail/mail-ops.c:1726
-#, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr ""
-
-#: mail/mail-ops.c:1740
-#, fuzzy, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: mail/mail-ops.c:1814
-#, fuzzy
-msgid "Saving attachment"
-msgstr "ÍÝá åðéóýíáøç..."
-
-#: mail/mail-ops.c:1829
-#, fuzzy, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: mail/mail-ops.c:1857
-#, c-format
-msgid "Could not write data: %s"
-msgstr ""
-
-#: mail/mail-search-dialogue.c:113
-#, fuzzy
-msgid "_Search"
-msgstr "Çìåñïëüãéï"
-
-#: mail/mail-send-recv.c:138
-msgid "Cancelling ..."
-msgstr ""
-
-#: mail/mail-send-recv.c:233
-msgid "Send & Receive mail"
-msgstr ""
-
-#: mail/mail-send-recv.c:236
-#, fuzzy
-msgid "Receiving"
-msgstr "ÅëÞöèç"
-
-#: mail/mail-send-recv.c:285
-msgid "Updating ..."
-msgstr ""
-
-#: mail/mail-send-recv.c:287 mail/mail-send-recv.c:333
-msgid "Waiting ..."
-msgstr ""
-
-#: mail/mail-send-recv.c:306
-#, fuzzy
-msgid "Sending"
-msgstr "ÁðïóôïëÞ"
-
-#: mail/mail-send-recv.c:471
-msgid "Cancelled."
-msgstr ""
-
-#: mail/mail-summary.c:109
-msgid "Incomplete message written on pipe!"
-msgstr ""
-
-#: mail/mail-tools.c:141
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr ""
-
-#: mail/mail-tools.c:188
-#, fuzzy, c-format
-msgid "[%s] (forwarded message)"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: mail/mail-tools.c:198
-msgid "Fwd: (no subject)"
-msgstr ""
-
-#: mail/mail-tools.c:215
-#, fuzzy, c-format
-msgid "Forwarded message - %s"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: mail/mail-tools.c:217
-#, fuzzy
-msgid "Forwarded message (no subject)"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: mail/mail-tools.c:414
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-msgstr ""
-
-#: mail/mail-vfolder.c:249
-#, fuzzy
-msgid "VFolders"
-msgstr "_ÖÜêåëëïò"
-
-#: mail/mail-vfolder.c:427
-#, fuzzy
-msgid "New VFolder"
-msgstr "_ÍÝïò ÖÜêåëëïò"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/mail-view.c:144 ui/evolution-mail.xml.h:59
-msgid "Reply"
-msgstr ""
-
-#: mail/mail-view.c:144 ui/evolution-mail.xml.h:65
-#, fuzzy
-msgid "Reply to the sender of this message"
-msgstr "ÅéóÜãåôå ôïí ðáñáëÞðôç ôïõ ìçíýìáôïò"
-
-#: mail/mail-view.c:147 ui/evolution-mail.xml.h:63
-#, fuzzy
-msgid "Reply to all recipients of this message"
-msgstr "ÅéóÜãåôå ôïí ðáñáëÞðôç ôïõ ìçíýìáôïò"
-
-#: mail/mail-view.c:150 ui/evolution-mail.xml.h:28
-#, fuzzy
-msgid "Forward this message"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: mail/mail-view.c:154 ui/evolution-mail.xml.h:56
-#, fuzzy
-msgid "Print the selected message"
-msgstr "ÅéóÜãåôå ôïí ðáñáëÞðôç ôïõ ìçíýìáôïò"
-
-#: mail/mail-view.c:156 ui/evolution-mail.xml.h:13
-#, fuzzy
-msgid "Delete this message"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: mail/message-list.c:648
-msgid "Unseen"
-msgstr ""
-
-#: mail/message-list.c:649
-#, fuzzy
-msgid "Seen"
-msgstr "ÁðïóôïëÞ"
-
-#: mail/message-list.c:650
-msgid "Answered"
-msgstr ""
-
-#: mail/message-list.c:651
-#, fuzzy
-msgid "Multiple Unseen Messages"
-msgstr "ÓõããñáöÞ íÝïõ ìçíýìáôïò"
-
-#: mail/message-list.c:652
-#, fuzzy
-msgid "Multiple Messages"
-msgstr "ÁðåóôáëìÝíá ìçíýìáôá"
-
-#: mail/message-list.c:656
-msgid "Lowest"
-msgstr ""
-
-#: mail/message-list.c:657
-msgid "Lower"
-msgstr ""
-
-#: mail/message-list.c:661
-msgid "Higher"
-msgstr ""
-
-#: mail/message-list.c:662
-msgid "Highest"
-msgstr ""
-
-#: mail/message-list.c:912
-msgid "?"
-msgstr ""
-
-#: mail/message-list.c:919
-msgid "Today %l:%M %p"
-msgstr ""
-
-#: mail/message-list.c:928
-msgid "Yesterday %l:%M %p"
-msgstr ""
-
-#: mail/message-list.c:940
-msgid "%a %l:%M %p"
-msgstr ""
-
-#: mail/message-list.c:948
-msgid "%b %d %l:%M %p"
-msgstr ""
-
-#: mail/message-list.c:950
-msgid "%b %d %Y"
-msgstr ""
-
-#: mail/message-list.c:1052
-msgid "Flagged"
-msgstr ""
-
-#: mail/message-list.c:1053
-#, fuzzy
-msgid "From"
-msgstr "Áðü"
-
-#: mail/message-list.c:1053
-#, fuzzy
-msgid "Date"
-msgstr "Åðéêüëëçóç"
-
-#: mail/message-list.c:1053
-#, fuzzy
-msgid "Received"
-msgstr "ÅëÞöèç"
-
-#: mail/message-list.c:1054
-msgid "To"
-msgstr "Ðñïò"
-
-#: mail/message-list.c:1054
-msgid "Size"
-msgstr "ÌÝãåèïò"
-
-#: mail/subscribe-dialog.c:76 shell/e-storage-set-view.c:46
-#, fuzzy
-msgid "Folder"
-msgstr "_ÖÜêåëëïò"
-
-#: mail/subscribe-dialog.c:77
-#, fuzzy
-msgid "Store"
-msgstr "ÍÝá Óõíôüìåõóç"
-
-#: mail/subscribe-dialog.c:138
-msgid "Display folders starting with:"
-msgstr ""
-
-#: mail/subscribe-dialog.c:168
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:271
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:273
-#, fuzzy, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#. Construct the app
-#: mail/subscribe-dialog.c:873
-msgid "Manage Subscriptions"
-msgstr ""
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-#, fuzzy
-msgid "Folder name:"
-msgstr "Ìåôïíïìáóßá ÏìÜäáò"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-#, fuzzy
-msgid "Folder type:"
-msgstr "_ÖÜêåëëïò"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-#, fuzzy
-msgid "Specify where to create the folder:"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: shell/importer/importer.c:87
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/importer/importer.c:182
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-
-#: shell/importer/importer.c:202 shell/importer/importer.c:233
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-
-#: shell/importer/importer.c:341
-#, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr ""
-
-#: shell/importer/importer.c:351
-msgid "Importing"
-msgstr ""
-
-#: shell/importer/importer.c:359
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-
-#: shell/importer/importer.c:372
-#, fuzzy, c-format
-msgid "Error starting %s"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: shell/importer/importer.c:387
-#, fuzzy, c-format
-msgid "Error loading %s"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: shell/importer/importer.c:402
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-
-#: shell/importer/importer.c:473
-msgid "Automatic"
-msgstr ""
-
-#: shell/importer/importer.c:523
-#, fuzzy
-msgid "Filename:"
-msgstr "Ìåôïíïìáóßá ÏìÜäáò"
-
-#: shell/importer/import.glade.h:5 shell/importer/importer.c:528
-#, fuzzy
-msgid "Select a file"
-msgstr "Åðéëå_ãìÝíá Áíôéêåßìåíá"
-
-#: shell/importer/importer.c:538
-#, fuzzy
-msgid "File type:"
-msgstr "Êõñßùò Óõíôïìåýóåéò"
-
-#: shell/importer/import.glade.h:4 shell/importer/importer.c:619
-msgid "Import"
-msgstr ""
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr ""
-
-#: shell/importer/import.glade.h:2
-#, fuzzy
-msgid "Evolution Import Utility"
-msgstr "Ã_ñáììÞ Óõíôïìåýóåùí ôïõ Evolution"
-
-#: shell/importer/import.glade.h:3
-#, fuzzy
-msgid "Evolution Importer Utility"
-msgstr "Ã_ñáììÞ Óõíôïìåýóåùí ôïõ Evolution"
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-
-#: shell/e-setup.c:118 shell/e-setup.c:191
-msgid "Evolution installation"
-msgstr ""
-
-#: shell/e-setup.c:122
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-
-#: shell/e-setup.c:123
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr ""
-
-#: shell/e-setup.c:163
-msgid "Could not update files correctly"
-msgstr ""
-
-#: shell/e-setup.c:166 shell/e-setup.c:234
-msgid "Evolution files successfully installed."
-msgstr ""
-
-#: shell/e-setup.c:195
-msgid "This seems to be the first time you are running Evolution."
-msgstr ""
-
-#: shell/e-setup.c:196
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr ""
-
-#: shell/e-setup.c:215
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-
-#: shell/e-setup.c:230
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-
-#: shell/e-setup.c:255
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-
-#: shell/e-setup.c:267
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-
-#: shell/e-shell-folder-creation-dialog.c:99
-#, fuzzy, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: shell/e-shell-folder-creation-dialog.c:156
-msgid "The specified folder name is not valid."
-msgstr ""
-
-#: shell/e-shell-folder-creation-dialog.c:248
-#, fuzzy
-msgid "Evolution - Create new folder"
-msgstr "Ôï Evolution äå ìðïñåß íá äçìéïõñãÞóåé ôïõò ôïðéêïýò öáêÝëëïõò"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-
-#: shell/e-shell-folder-selection-dialog.c:319
-#, fuzzy
-msgid "New..."
-msgstr "_ÍÝï"
-
-#: shell/e-shell-folder-title-bar.c:459 shell/e-shell-folder-title-bar.c:460
-msgid "(Untitled)"
-msgstr ""
-
-#: shell/e-shell-view-menu.c:173
-msgid "Bug buddy was not found in your $PATH."
-msgstr ""
-
-#: shell/e-shell-view-menu.c:179
-msgid "Bug buddy could not be run."
-msgstr ""
-
-#: shell/e-shell-view-menu.c:208
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr ""
-
-#: shell/e-shell-view-menu.c:210
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-
-#: shell/e-shell-view-menu.c:374
-#, fuzzy
-msgid "Go to folder..."
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: shell/e-shell-view.c:148
-msgid "(No folder displayed)"
-msgstr ""
-
-#: shell/e-shell-view.c:1134
-#, c-format
-msgid "%s - Evolution %s"
-msgstr ""
-
-#: shell/e-shell-view.c:1136
-#, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr ""
-
-#: shell/e-shell.c:378
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr ""
-
-#: shell/e-shell.c:1248
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-
-#: shell/e-shortcuts-view.c:134
-msgid "Create new shortcut group"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:137
-msgid "Group name:"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:260
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:265
-msgid "Don't remove"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:276
-#, fuzzy
-msgid "_Small Icons"
-msgstr "ÌéêñÜ Åéêïíßäéá"
-
-#: shell/e-shortcuts-view.c:277
-msgid "Show the shortcuts as small icons"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:279
-#, fuzzy
-msgid "_Large Icons"
-msgstr "ÌåãÜëá Åéêïíßäéá"
-
-#: shell/e-shortcuts-view.c:280
-msgid "Show the shortcuts as large icons"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:291
-#, fuzzy
-msgid "_New Group..."
-msgstr "ÍÝá ÏìÜäá"
-
-#: shell/e-shortcuts-view.c:292
-msgid "Create a new shortcut group"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:294
-#, fuzzy
-msgid "_Remove This Group..."
-msgstr "ÄéáãñáöÞ ÏìÜäáò"
-
-#: shell/e-shortcuts-view.c:295
-#, fuzzy
-msgid "Remove this shortcut group"
-msgstr "ÄéáãñáöÞ áðü ÃñáììÞ Óõíôïìåýóåùí"
-
-#: shell/e-shortcuts-view.c:300
-#, fuzzy
-msgid "_Hide the Shortcut Bar"
-msgstr "ÄéáãñáöÞ áðü ÃñáììÞ Óõíôïìåýóåùí"
-
-#: shell/e-shortcuts-view.c:301
-#, fuzzy
-msgid "Hide the shortcut bar"
-msgstr "ÄéáãñáöÞ áðü ÃñáììÞ Óõíôïìåýóåùí"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate this shortcut"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:388
-msgid "Remove this shortcut from the shortcut bar"
-msgstr ""
-
-#: shell/e-shortcuts.c:379
-#, fuzzy
-msgid "Error saving shortcuts."
-msgstr "Êõñßùò Óõíôïìåýóåéò"
-
-#: shell/e-storage-set-view.c:649 ui/evolution-event-editor.xml.h:76
-#: ui/evolution-message-composer.xml.h:53
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:43
-#, fuzzy
-msgid "_View"
-msgstr "_ÍÝï"
-
-#: shell/e-storage-set-view.c:649
-#, fuzzy
-msgid "View the selected folder"
-msgstr "ÅéóÜãåôå ôïí ðáñáëÞðôç ôïõ ìçíýìáôïò"
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr ""
-
-#: shell/e-storage.c:459
-msgid "No error"
-msgstr ""
-
-#: shell/e-storage.c:461
-msgid "Generic error"
-msgstr ""
-
-#: shell/e-storage.c:463
-msgid "A folder with the same name already exists"
-msgstr ""
-
-#: shell/e-storage.c:465
-msgid "The specified folder type is not valid"
-msgstr ""
-
-#: shell/e-storage.c:467
-msgid "I/O error"
-msgstr ""
-
-#: shell/e-storage.c:469
-msgid "Not enough space to create the folder"
-msgstr ""
-
-#: shell/e-storage.c:471
-msgid "The specified folder was not found"
-msgstr ""
-
-#: shell/e-storage.c:473
-msgid "Function not implemented in this storage"
-msgstr ""
-
-#: shell/e-storage.c:475
-msgid "Permission denied"
-msgstr ""
-
-#: shell/e-storage.c:477
-msgid "Operation not supported"
-msgstr ""
-
-#: shell/e-storage.c:479
-msgid "The specified type is not supported in this storage"
-msgstr ""
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-msgid "The Evolution shell."
-msgstr ""
-
-#: shell/main.c:83
-#, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-
-#: shell/main.c:108
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-
-#: shell/main.c:139
-msgid "Cannot initialize the Evolution shell."
-msgstr ""
-
-#: shell/main.c:185
-msgid "Disable splash screen"
-msgstr ""
-
-#: shell/main.c:186
-msgid "Send the debugging output of all components to a file."
-msgstr ""
-
-#: shell/main.c:219
-#, fuzzy
-msgid "Cannot initialize the Bonobo component system."
-msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#: ui/evolution-addressbook.xml.h:2
-#, fuzzy
-msgid "Create new contact"
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: ui/evolution-addressbook.xml.h:4
-#, fuzzy
-msgid "Delete a contact"
-msgstr "ÅðéëÝîôå åðéóýíáøç"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-#, fuzzy
-msgid "Find"
-msgstr "Ðñïôåñáéüôçôá"
-
-#: ui/evolution-addressbook.xml.h:6
-#, fuzzy
-msgid "Find a contact"
-msgstr "Ï êáôÜëïãïò ãíùñéìéþí óáò"
-
-#: ui/evolution-addressbook.xml.h:7
-#, fuzzy
-msgid "New contact"
-msgstr "_Ãíùñéìßá"
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-mail.xml.h:49
-#, fuzzy
-msgid "Previews the message to be printed"
-msgstr "ÁðïóôïëÞ ôïõ ìçíýìáôïò"
-
-#: ui/evolution-addressbook.xml.h:11
-#, fuzzy
-msgid "Print contacts"
-msgstr "Ï êáôÜëïãïò ãíùñéìéþí óáò"
-
-#: ui/evolution-addressbook.xml.h:12 ui/evolution-mail.xml.h:78
-#, fuzzy
-msgid "Stop"
-msgstr "ÍÝá Óõíôüìåõóç"
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "Stop Loading"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:14
-#, fuzzy
-msgid "View All"
-msgstr "_ÍÝï"
-
-#: ui/evolution-addressbook.xml.h:15
-#, fuzzy
-msgid "View all contacts"
-msgstr "ÅðéëÝîôå åðéóýíáøç"
-
-#: ui/evolution-addressbook.xml.h:16
-#, fuzzy
-msgid "_Addressbook Sources..."
-msgstr "ÍÝá Óõíôüìåõóç"
-
-#: ui/evolution-addressbook.xml.h:17
-#, fuzzy
-msgid "_Contact"
-msgstr "_Ãíùñéìßá"
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-#, fuzzy
-msgid "_Print..."
-msgstr "Ðñïôåñáéüôçôá"
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-mail.xml.h:110
-#: ui/evolution-task-editor-dialog.xml.h:88 ui/evolution.xml.h:42
-msgid "_Tools"
-msgstr "Å_ñãáëåßá"
-
-#: ui/evolution-calendar.xml.h:1
-#, fuzzy
-msgid "5 Days"
-msgstr "Ðñü÷åéñá"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-msgid "Alter preferences"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:4
-#, fuzzy
-msgid "Create a new all day Event"
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: ui/evolution-calendar.xml.h:5
-#, fuzzy
-msgid "Create a new appointment"
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: ui/evolution-calendar.xml.h:6
-#, fuzzy
-msgid "Create a new calendar"
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: ui/evolution-calendar.xml.h:7
-#, fuzzy
-msgid "Day"
-msgstr "Ðñü÷åéñá"
-
-#: ui/evolution-calendar.xml.h:8
-#, fuzzy
-msgid "Go To"
-msgstr "ÓÞìåñá"
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go forward in time"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:11
-msgid "Go to _Date"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:12
-#, fuzzy
-msgid "Go to _Today"
-msgstr "ÓÞìåñá"
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:14
-msgid "Go to present time"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:15
-#, fuzzy
-msgid "Month"
-msgstr "Ãíùñéìßåò"
-
-#: ui/evolution-calendar.xml.h:17
-msgid "New _Event"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:18 ui/evolution-event-editor.xml.h:29
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "Next"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:20
-#, fuzzy
-msgid "Open Calendar"
-msgstr "Çìåñïëüãéï"
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Prev"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:22
-msgid "Previews the calendar to be printed"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:25
-#, fuzzy
-msgid "Print calendar"
-msgstr "Çìåñïëüãéï"
-
-#: ui/evolution-calendar.xml.h:26
-#, fuzzy
-msgid "Print this Calendar"
-msgstr "Ôï çìåñïëüãéü óáò"
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:15
-#, fuzzy
-msgid "Save As"
-msgstr "Çìåñïëüãéï"
-
-#: ui/evolution-calendar.xml.h:28
-msgid "Save calendar as something else"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:30
-#, fuzzy
-msgid "Show 1 day"
-msgstr "ÅìöÜíéóç åðéóõíÜ_øåùí"
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:226
-#: widgets/misc/e-dateedit.c:422
-#, fuzzy
-msgid "Today"
-msgstr "ÓÞìåñá"
-
-#: ui/evolution-calendar.xml.h:35
-msgid "W_ork Week"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:37
-#, fuzzy
-msgid "_Appointment"
-msgstr "Ñ_áíôåâïý"
-
-#: ui/evolution-calendar.xml.h:38
-#, fuzzy
-msgid "_Day"
-msgstr "Ðñü÷åéñá"
-
-#: ui/evolution-calendar.xml.h:39
-#, fuzzy
-msgid "_Month"
-msgstr "Ãíùñéìßåò"
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:38
-msgid "_New"
-msgstr "_ÍÝï"
-
-#: ui/evolution-calendar.xml.h:41
-#, fuzzy
-msgid "_Open Calendar"
-msgstr "Çìåñïëüãéï"
-
-#: ui/evolution-calendar.xml.h:43 ui/evolution-mail.xml.h:106
-#: ui/evolution-tasks.xml.h:8
-#, fuzzy
-msgid "_Save As..."
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: ui/evolution-calendar.xml.h:45
-msgid "_Week"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:2
-#, fuzzy
-msgid "Delete this item"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: ui/evolution-contact-editor.xml.h:3
-msgid "Delete..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:4
-#, fuzzy
-msgid "Help"
-msgstr "Óçìåßù_ìá"
-
-#: ui/evolution-contact-editor.xml.h:5
-#, fuzzy
-msgid "Print En_velope..."
-msgstr "Ðñïôåñáéüôçôá"
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-#, fuzzy
-msgid "Print this item"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-mail.xml.h:57 ui/evolution-task-editor-dialog.xml.h:41
-#, fuzzy
-msgid "Print..."
-msgstr "Ðñïôåñáéüôçôá"
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:16
-#: ui/evolution-task-editor-dialog.xml.h:51
-#, fuzzy
-msgid "Save _As..."
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-#, fuzzy
-msgid "Save and Close"
-msgstr "Çìåñïëüãéï"
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:13
-#, fuzzy
-msgid "Send _message to contact..."
-msgstr "_Ãíùñéìßá"
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:44 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:30
-#, fuzzy
-msgid "_File"
-msgstr "_ÖÜêåëëïò"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:51
-#: ui/evolution-task-editor-dialog.xml.h:85
-#, fuzzy
-msgid "_Save"
-msgstr "Çìåñïëüãéï"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-#, fuzzy
-msgid "Actio_ns"
-msgstr "Å_íÝñãåéåò"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-#, fuzzy
-msgid "Address _Book... (FIXME)"
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-#, fuzzy
-msgid "C_lear"
-msgstr "Çìåñïëüãéï"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-#, fuzzy
-msgid "C_ut"
-msgstr "ÊïðÞ"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-#, fuzzy
-msgid "Chec_k Names (FIXME)"
-msgstr "_ÌÞíõìá"
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-#, fuzzy
-msgid "Clear"
-msgstr "Çìåñïëüãéï"
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-#, fuzzy
-msgid "Clear the selection"
-msgstr "ÅéóÜãåôå ôïí ðáñáëÞðôç ôïõ ìçíýìáôïò"
-
-#: ui/evolution-event-editor.xml.h:11
-#, fuzzy
-msgid "Close this appointment"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-#, fuzzy
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:7
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "ÁíôéãñáöÞ"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-#, fuzzy
-msgid "Copy the selection"
-msgstr "Áêýñùóç ôåëåõôáßáò ëåéôïõñãßáò"
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr "ÊïðÞ"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Cut the selection"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:18
-#, fuzzy
-msgid "Delete this appointment"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-#, fuzzy
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-#, fuzzy
-msgid "For_ward (FIXME)"
-msgstr "Êáôá÷þñçóç Çìåñï_ëïãßïõ"
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-msgid "Go to the next item"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-msgid "Go to the previous item"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-#, fuzzy
-msgid "In_complete Task (FIXME)"
-msgstr "_Ãíùñéìßá"
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-msgid "Modify the file's properties"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-msgid "N_ext"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-msgid "Paste"
-msgstr "Åðéêüëëçóç"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-#, fuzzy
-msgid "Paste the clipboard"
-msgstr "Åðéêüëëçóç áíôéêåéìÝíïõ áðï ôï ðñü÷åéñï"
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:33 ui/evolution-task-editor-dialog.xml.h:36
-msgid "Previous"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-#, fuzzy
-msgid "Print Pre_view"
-msgstr "ÅéóÜãåôå ôïí ðáñáëÞðôç ôïõ ìçíýìáôïò"
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-#, fuzzy
-msgid "Print S_etup..."
-msgstr "Ðñïôåñáéüôçôá"
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-#, fuzzy
-msgid "Print Setup"
-msgstr "Ðñïôåñáéüôçôá"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:14
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:239
-#, fuzzy
-msgid "Save"
-msgstr "Çìåñïëüãéï"
-
-#: ui/evolution-event-editor.xml.h:43
-msgid "Save the appointment and close the dialog box"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:20
-#: ui/evolution-task-editor-dialog.xml.h:53
-#, fuzzy
-msgid "Save the current file"
-msgstr "Êëåßóéìï üëùí ôùí áíïé÷ôþí áíôéêåéìÝíùí"
-
-#: ui/evolution-event-editor.xml.h:46
-msgid "Schedule _Meeting"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:47
-msgid "Schedule some sort of a meeting"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-mail.xml.h:68
-#: ui/evolution-task-editor-dialog.xml.h:57
-#, fuzzy
-msgid "Select All"
-msgstr "_ÍÝïò ÖÜêåëëïò"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-#, fuzzy
-msgid "Select everything"
-msgstr "_ÍÝïò ÖÜêåëëïò"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-#, fuzzy
-msgid "Task _Request (FIXME)"
-msgstr "Áßôç_óç Åêêñåìüôçôáò"
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-message-composer.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:63
-msgid "_About..."
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:41
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:27
-msgid "_Close"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:28
-#, fuzzy
-msgid "_Contact (FIXME)"
-msgstr "_Ãíùñéìßá"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-#, fuzzy
-msgid "_Copy"
-msgstr "ÁíôéãñáöÞ"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:46
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:34
-#, fuzzy
-msgid "_Help"
-msgstr "Óçìåßù_ìá"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-#, fuzzy
-msgid "_Item (FIXME)"
-msgstr "_Ãíùñéìßá"
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-#, fuzzy
-msgid "_Journal Entry (FIXME)"
-msgstr "Êáôá÷þñçóç Çìåñï_ëïãßïõ"
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-#, fuzzy
-msgid "_Last Item in Folder (FIXME)"
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-#, fuzzy
-msgid "_Mail Message (FIXME)"
-msgstr "_ÌÞíõìá"
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-#, fuzzy
-msgid "_Move to Folder... (FIXME)"
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-#, fuzzy
-msgid "_Note (FIXME)"
-msgstr "_Ãíùñéìßá"
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-#, fuzzy
-msgid "_Paste"
-msgstr "Åðéêüëëçóç"
-
-#: ui/evolution-event-editor.xml.h:69 ui/evolution-task-editor-dialog.xml.h:82
-#: ui/evolution-tasks.xml.h:7
-#, fuzzy
-msgid "_Print"
-msgstr "Ðñïôåñáéüôçôá"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:102
-#: ui/evolution-task-editor-dialog.xml.h:83
-#, fuzzy
-msgid "_Properties..."
-msgstr "Éäéüôçôåò"
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-#, fuzzy
-msgid "_Select All"
-msgstr "_ÍÝïò ÖÜêåëëïò"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:41
-#, fuzzy
-msgid "_Task (FIXME)"
-msgstr "Áßôç_óç Åêêñåìüôçôáò"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-#, fuzzy
-msgid "_Unread Item (FIXME)"
-msgstr "_Ãíùñéìßá"
-
-#: ui/evolution-executive-summary.xml.h:1
-#, fuzzy
-msgid "Add Service"
-msgstr "ÍÝá Óõíôüìåõóç"
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:3
-#, fuzzy
-msgid "Create a new email"
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: ui/evolution-executive-summary.xml.h:4
-#, fuzzy
-msgid "Executive Summary Settings..."
-msgstr "Ðåñßëçøç"
-
-#: ui/evolution-executive-summary.xml.h:5
-#, fuzzy
-msgid "New Mail"
-msgstr "_ÌÞíõìá"
-
-#: ui/evolution-mail.xml.h:2
-msgid "Apply any new filters to the mail in this box"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:3
-msgid "Change the properties of this folder"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:4
-#, fuzzy
-msgid "Compose"
-msgstr "ÍÝá Óõíôüìåõóç"
-
-#: ui/evolution-mail.xml.h:5
-#, fuzzy
-msgid "Compose a new message"
-msgstr "ÓõããñáöÞ íÝïõ ìçíýìáôïò"
-
-#: ui/evolution-mail.xml.h:6
-#, fuzzy
-msgid "Configure Folder..."
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: ui/evolution-mail.xml.h:8
-#, fuzzy
-msgid "Copy message to a new folder"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: ui/evolution-mail.xml.h:9
-#, fuzzy
-msgid "Copy selected messages to another folder"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: ui/evolution-mail.xml.h:10
-#, fuzzy
-msgid "Create _Virtual Folder From Message"
-msgstr "Ðñü÷åéñá ìçíýìáôá"
-
-#: ui/evolution-mail.xml.h:12
-#, fuzzy
-msgid "Delete the selected messages"
-msgstr "ÅéóÜãåôå ôïí ðáñáëÞðôç ôïõ ìçíýìáôïò"
-
-#: ui/evolution-mail.xml.h:14
-msgid "Display all of the message headers"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:15
-#, fuzzy
-msgid "Edit Message"
-msgstr "ÁðïóôïëÞ ôïõ ìçíýìáôïò"
-
-#: ui/evolution-mail.xml.h:16
-#, fuzzy
-msgid "Edit the current message"
-msgstr "ÅéóÜãåôå ôïí ðáñáëÞðôç ôïõ ìçíýìáôïò"
-
-#: ui/evolution-mail.xml.h:17
-msgid "Empty _Trash"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:18
-msgid "Expunge"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:19
-msgid "Filter on Se_nder"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:20
-#, fuzzy
-msgid "Filter on _Recipients"
-msgstr "ÊáôÜóôáóç ìçíõìÜôùí"
-
-#: ui/evolution-mail.xml.h:21
-#, fuzzy
-msgid "Filter on _Subject"
-msgstr "ÈÝìá"
-
-#: ui/evolution-mail.xml.h:22
-msgid "Finaly remove all mails tagged for deletion"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:23
-#, fuzzy
-msgid "Forget _Passwords"
-msgstr "Çìåñïëüãéï"
-
-#: ui/evolution-mail.xml.h:25
-#, fuzzy
-msgid "Forward As"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: ui/evolution-mail.xml.h:27
-msgid "Forward the selected mail to someone"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:29
-msgid "Forward this message in-line with your mail, so you can edit it"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:30
-#, fuzzy
-msgid "Full _Headers"
-msgstr "Ìåôïíïìáóßá ÏìÜäáò"
-
-#: ui/evolution-mail.xml.h:31
-#, fuzzy
-msgid "Hide Deleted Messages"
-msgstr "ÅéóÜãåôå ôïí ðáñáëÞðôç ôïõ ìçíýìáôïò"
-
-#: ui/evolution-mail.xml.h:32
-#, fuzzy
-msgid "Hide S_elected Messages"
-msgstr "ÅéóÜãåôå ôïí ðáñáëÞðôç ôïõ ìçíýìáôïò"
-
-#: ui/evolution-mail.xml.h:33
-#, fuzzy
-msgid "Hide _Deleted Messages"
-msgstr "ÅéóÜãåôå ôïí ðáñáëÞðôç ôïõ ìçíýìáôïò"
-
-#: ui/evolution-mail.xml.h:34
-#, fuzzy
-msgid "Hide _Read messages"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: ui/evolution-mail.xml.h:35
-msgid "Invert Selection"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:36
-msgid "Manage _Subscriptions..."
-msgstr ""
-
-#: ui/evolution-mail.xml.h:37
-msgid "Mar_k as Read"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:38
-msgid "Mark All as R_ead"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:39
-msgid "Mark As Read"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:40
-msgid "Mark As U_nread"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:41
-msgid "Mark as U_nread"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:42
-#, fuzzy
-msgid "Mark the selected messages as having been read"
-msgstr "ÅéóÜãåôå ôïí ðáñáëÞðôç ôïõ ìçíýìáôïò"
-
-#: ui/evolution-mail.xml.h:43
-msgid "Mark the selected messages as not having been read"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:44
-#, fuzzy
-msgid "Move"
-msgstr "_ÌÞíõìá"
-
-#: ui/evolution-mail.xml.h:45
-#, fuzzy
-msgid "Move message to a new folder"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: ui/evolution-mail.xml.h:46
-#, fuzzy
-msgid "Move selected messages to another folder"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: ui/evolution-mail.xml.h:47
-#, fuzzy
-msgid "Open in New Window"
-msgstr "¶íïéãìá óå ÍÝï ÐáñÜèõñï"
-
-#: ui/evolution-mail.xml.h:48
-#, fuzzy
-msgid "Open the current message in a new window"
-msgstr "ÁðïóôïëÞ ôïõ ìçíýìáôïò"
-
-#: ui/evolution-mail.xml.h:53
-#, fuzzy
-msgid "Print Preview of message..."
-msgstr "ÅéóÜãåôå ôïí ðáñáëÞðôç ôïõ ìçíýìáôïò"
-
-#: ui/evolution-mail.xml.h:54
-msgid "Print message to the printer"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:55
-#, fuzzy
-msgid "Print message..."
-msgstr "ÁðåóôáëìÝíá ìçíýìáôá"
-
-#: ui/evolution-mail.xml.h:58
-msgid "Redirect (FIXME: implement me)"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:61
-msgid "Reply to _All"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:62
-msgid "Reply to all"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:64
-#, fuzzy
-msgid "Reply to sender"
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: ui/evolution-mail.xml.h:66
-#, fuzzy
-msgid "S_ource"
-msgstr "ÍÝá Óõíôüìåõóç"
-
-#: ui/evolution-mail.xml.h:67
-#, fuzzy
-msgid "Save the message into a new file"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: ui/evolution-mail.xml.h:69 ui/evolution-subscribe.xml.h:7
-#, fuzzy
-msgid "Select _All"
-msgstr "_ÍÝïò ÖÜêåëëïò"
-
-#: ui/evolution-mail.xml.h:70
-#, fuzzy
-msgid "Select _Thread"
-msgstr "Åðéëå_ãìÝíá Áíôéêåßìåíá"
-
-#: ui/evolution-mail.xml.h:71
-#, fuzzy
-msgid "Send / Receive"
-msgstr "ÅëÞöèç"
-
-#: ui/evolution-mail.xml.h:72
-msgid "Send a reply to the person who sent you this mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:73
-msgid "Send a single mail in reply to all the selected mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:74
-msgid ""
-"Send queued mail\n"
-" and retrieve new mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:76
-msgid "Send queued mail and retrieve new mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:77
-#, fuzzy
-msgid "Show _All"
-msgstr "ÁðåóôáëìÝíá ìçíýìáôá"
-
-#: ui/evolution-mail.xml.h:79
-#, fuzzy
-msgid "Threaded Message list"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: ui/evolution-mail.xml.h:80
-#, fuzzy
-msgid "Un-delete the selected messages"
-msgstr "ÅéóÜãåôå ôïí ðáñáëÞðôç ôïõ ìçíýìáôïò"
-
-#: ui/evolution-mail.xml.h:82
-msgid "VFolder on Se_nder"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:83
-#, fuzzy
-msgid "VFolder on _Recipients"
-msgstr "ÊáôÜóôáóç ìçíõìÜôùí"
-
-#: ui/evolution-mail.xml.h:84
-#, fuzzy
-msgid "VFolder on _Subject"
-msgstr "ÈÝìá"
-
-#: ui/evolution-mail.xml.h:85
-msgid "View Raw Message Source"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:86
-#, fuzzy
-msgid "Virtual Folder _Editor..."
-msgstr "_ÖÜêåëëïò"
-
-#: ui/evolution-mail.xml.h:87
-#, fuzzy
-msgid "_Apply Filters"
-msgstr "_ÖÜêåëëïò"
-
-#: ui/evolution-mail.xml.h:88
-#, fuzzy
-msgid "_Attachment"
-msgstr "Íåá åðéóýíáøç"
-
-#: ui/evolution-mail.xml.h:89
-#, fuzzy
-msgid "_Copy to Folder..."
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: ui/evolution-mail.xml.h:90
-#, fuzzy
-msgid "_Create Filter From Message"
-msgstr "Ðñü÷åéñá ìçíýìáôá"
-
-#: ui/evolution-mail.xml.h:92
-msgid "_Expunge"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:93
-#, fuzzy
-msgid "_Filters..."
-msgstr "_ÖÜêåëëïò"
-
-#: ui/evolution-mail.xml.h:94 ui/evolution.xml.h:31
-msgid "_Folder"
-msgstr "_ÖÜêåëëïò"
-
-#: ui/evolution-mail.xml.h:95
-msgid "_Forward"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:96
-msgid "_Inline"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:97 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:98
-#, fuzzy
-msgid "_Mail Message"
-msgstr "_ÌÞíõìá"
-
-#: ui/evolution-mail.xml.h:99
-#, fuzzy
-msgid "_Mail Settings..."
-msgstr "Å_íÝñãåéåò"
-
-#: ui/evolution-mail.xml.h:100
-#, fuzzy
-msgid "_Move to Folder..."
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: ui/evolution-mail.xml.h:101
-#, fuzzy
-msgid "_Open Selected Items"
-msgstr "ÅéóÜãåôå ôïí ðáñáëÞðôç ôïõ ìçíýìáôïò"
-
-#: ui/evolution-mail.xml.h:103
-msgid "_Quoted"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:104
-#, fuzzy
-msgid "_Reply"
-msgstr "ÅëÞöèç"
-
-#: ui/evolution-mail.xml.h:105
-#, fuzzy
-msgid "_Resend Messages"
-msgstr "ÁðåóôáëìÝíá ìçíýìáôá"
-
-#: ui/evolution-mail.xml.h:107
-#, fuzzy
-msgid "_Save Message As..."
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: ui/evolution-mail.xml.h:108
-#, fuzzy
-msgid "_Send / Receive"
-msgstr "ÅëÞöèç"
-
-#: ui/evolution-mail.xml.h:109
-msgid "_Threaded"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:111
-msgid "_Undelete"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr "Åðéóýíáøç"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-#, fuzzy
-msgid "Close the current file"
-msgstr "Êëåßóéìï üëùí ôùí áíïé÷ôþí áíôéêåéìÝíùí"
-
-#: ui/evolution-message-composer.xml.h:5
-#, fuzzy
-msgid "Encrypt this message with PGP"
-msgstr "ÁðïóôïëÞ ôïõ ìçíýìáôïò"
-
-#: ui/evolution-message-composer.xml.h:6
-#, fuzzy
-msgid "F_ormat"
-msgstr "Áðü"
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "HTML"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:8
-#, fuzzy
-msgid "Insert a file as text into the message"
-msgstr "Åðéóýíáøç áñ÷åßïõ óôï ìÞíõìá"
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert text file..."
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:11
-#, fuzzy
-msgid "Open a file"
-msgstr "¶íïéãìá ÖáêÝëëïõ"
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "PGP Encrypt"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Sign"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:17
-msgid "Save _Draft"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:18
-#, fuzzy
-msgid "Save in _folder... (FIXME)"
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: ui/evolution-message-composer.xml.h:19
-#, fuzzy
-msgid "Save in folder..."
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: ui/evolution-message-composer.xml.h:21
-msgid "Save the current file with a different name"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:22
-msgid "Save the message in a specified folder"
-msgstr "ÁðïèÞêåõóç ôïõ ìçíýìáôïò óôïí êáèïñéóìÝíï öÜêåëëï"
-
-#: ui/evolution-message-composer.xml.h:23
-msgid "Send"
-msgstr "ÁðïóôïëÞ"
-
-#: ui/evolution-message-composer.xml.h:24
-#, fuzzy
-msgid "Send _Later"
-msgstr "ÁðïóôïëÞ"
-
-#: ui/evolution-message-composer.xml.h:25
-#, fuzzy
-msgid "Send _later"
-msgstr "ÁðïóôïëÞ"
-
-#: ui/evolution-message-composer.xml.h:26
-msgid "Send the mail in HTML format"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:27
-#, fuzzy
-msgid "Send the message later"
-msgstr "ÁðïóôïëÞ ôïõ ìçíýìáôïò"
-
-#: ui/evolution-message-composer.xml.h:28
-#, fuzzy
-msgid "Send the message now"
-msgstr "ÁðïóôïëÞ ôïõ ìçíýìáôïò"
-
-#: ui/evolution-message-composer.xml.h:29
-#, fuzzy
-msgid "Send this message now"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: ui/evolution-message-composer.xml.h:30
-#, fuzzy
-msgid "Show / hide attachments"
-msgstr "ÅìöÜíéóç/áðüêñõøç åðéóõíÜøåùí"
-
-#: ui/evolution-message-composer.xml.h:31
-#, fuzzy
-msgid "Show _attachments"
-msgstr "ÅìöÜíéóç åðéóõíÜ_øåùí"
-
-#: ui/evolution-message-composer.xml.h:32
-#, fuzzy
-msgid "Show attachments"
-msgstr "ÅìöÜíéóç åðéóõíÜ_øåùí"
-
-#: ui/evolution-message-composer.xml.h:33
-#, fuzzy
-msgid "Sign this message with your PGP key"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: ui/evolution-message-composer.xml.h:34
-msgid "Toggles whether the BCC field is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:35
-msgid "Toggles whether the CC field is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:36
-#, fuzzy
-msgid "Toggles whether the From chooser is displayed"
-msgstr "Ôï URI ðïõ èá åìöáíßóåé ï ÅîåñåõíçôÞò ÖáêÝëëùí"
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "_Bcc Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:40
-msgid "_Cc Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:45
-msgid "_From Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:47
-msgid "_Insert"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:48
-#, fuzzy
-msgid "_Insert text file... (FIXME)"
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: ui/evolution-message-composer.xml.h:49
-#, fuzzy
-msgid "_Open..."
-msgstr "¶íïé_ãìá"
-
-#: ui/evolution-message-composer.xml.h:50
-msgid "_Reply-To Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:52
-msgid "_Security"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:3
-#, fuzzy
-msgid "F_older"
-msgstr "_ÖÜêåëëïò"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:8
-#, fuzzy
-msgid "Subscribe"
-msgstr "ÍÝá Óõíôüìåõóç"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-#, fuzzy
-msgid "Assig_n Task (FIXME)"
-msgstr "_Ãíùñéìßá"
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-#, fuzzy
-msgid "Meeting Re_quest (FIXME)"
-msgstr "Áßôç_óç Åêêñåìüôçôáò"
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-#, fuzzy
-msgid "Redo"
-msgstr "ÄéáãñáöÞ"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-#, fuzzy
-msgid "Redo the undone action"
-msgstr "Áêýñùóç ôåëåõôáßáò ëåéôïõñãßáò"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-#, fuzzy
-msgid "Replace"
-msgstr "ÅëÞöèç"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-#, fuzzy
-msgid "Replace a string"
-msgstr "ÅëÞöèç"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-msgid "Reply to A_ll (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-#, fuzzy
-msgid "S_end Status Report (FIXME)"
-msgstr "_Ãíùñéìßá"
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-msgid "Save the task and close the dialog box"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "Search again for the same string"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-msgid "Search for a string"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr "Áêýñùóç"
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-#, fuzzy
-msgid "Undo the last action"
-msgstr "Áêýñùóç ôåëåõôáßáò ëåéôïõñãßáò"
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:26
-#, fuzzy
-msgid "_Appointment (FIXME)"
-msgstr "Ñ_áíôåâïý"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-#, fuzzy
-msgid "_Mark Complete (FIXME)"
-msgstr "_ÌÞíõìá"
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-#, fuzzy
-msgid "_Reply (FIXME)"
-msgstr "Áßôç_óç Åêêñåìüôçôáò"
-
-#: ui/evolution-tasks.xml.h:2
-#, fuzzy
-msgid "Create a new task"
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: ui/evolution-tasks.xml.h:3
-#, fuzzy
-msgid "New Task"
-msgstr "Åêêñåìü_ôçôá"
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr ""
-
-#: ui/evolution-tasks.xml.h:6
-msgid "Tasks Preferences..."
-msgstr ""
-
-#: ui/evolution-tasks.xml.h:9
-#, fuzzy
-msgid "_Task"
-msgstr "Åêêñåìü_ôçôá"
-
-#: ui/evolution.xml.h:1
-msgid "About Evolution..."
-msgstr ""
-
-#: ui/evolution.xml.h:3
-#, fuzzy
-msgid "Close this window"
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: ui/evolution.xml.h:4
-msgid "Customi_ze Toolbars..."
-msgstr ""
-
-#: ui/evolution.xml.h:5
-msgid "Customize"
-msgstr ""
-
-#: ui/evolution.xml.h:6
-msgid "Customize toolbars"
-msgstr ""
-
-#: ui/evolution.xml.h:7
-msgid "Display a different folder"
-msgstr ""
-
-#: ui/evolution.xml.h:8
-msgid "E_xit"
-msgstr ""
-
-#: ui/evolution.xml.h:9
-#, fuzzy
-msgid "Evolution bar _shortcut"
-msgstr "Ã_ñáììÞ Óõíôïìåýóåùí ôïõ Evolution"
-
-#: ui/evolution.xml.h:10
-msgid "Exit the program"
-msgstr ""
-
-#: ui/evolution.xml.h:11
-#, fuzzy
-msgid "Getting _Started"
-msgstr "Áß_ôçóç ÓõíÜíôçóçò"
-
-#: ui/evolution.xml.h:12
-msgid "Import an external file format"
-msgstr ""
-
-#: ui/evolution.xml.h:13
-msgid "Main toolbar"
-msgstr ""
-
-#: ui/evolution.xml.h:14
-msgid "Show information about Evolution"
-msgstr ""
-
-#: ui/evolution.xml.h:15
-msgid "Submit Bug Report"
-msgstr ""
-
-#: ui/evolution.xml.h:16
-msgid "Submit _Bug Report"
-msgstr ""
-
-#: ui/evolution.xml.h:17
-msgid "Submit bug report using Bug Buddy."
-msgstr ""
-
-#: ui/evolution.xml.h:18
-#, fuzzy
-msgid "Toggle whether to show the folder bar"
-msgstr "ÄéáãñáöÞ áðü ÃñáììÞ Óõíôïìåýóåùí"
-
-#: ui/evolution.xml.h:19
-#, fuzzy
-msgid "Toggle whether to show the shortcut bar"
-msgstr "ÄéáãñáöÞ áðü ÃñáììÞ Óõíôïìåýóåùí"
-
-#: ui/evolution.xml.h:20
-msgid "Using the C_ontact Manager"
-msgstr ""
-
-#: ui/evolution.xml.h:21
-#, fuzzy
-msgid "Using the _Calendar"
-msgstr "Çìåñïëüãéï"
-
-#: ui/evolution.xml.h:22
-msgid "Using the _Mailer"
-msgstr ""
-
-#: ui/evolution.xml.h:23
-msgid "Work Offline"
-msgstr ""
-
-#: ui/evolution.xml.h:24
-msgid "_About Evolution..."
-msgstr ""
-
-#: ui/evolution.xml.h:25
-msgid "_Actions"
-msgstr "Å_íÝñãåéåò"
-
-#: ui/evolution.xml.h:32
-#, fuzzy
-msgid "_Folder Bar"
-msgstr "_ÖÜêåëëïò"
-
-#: ui/evolution.xml.h:33
-#, fuzzy
-msgid "_Go to Folder..."
-msgstr "ÁðïèÞêåõóç óôï öÜêåëëï..."
-
-#: ui/evolution.xml.h:35
-#, fuzzy
-msgid "_Import file..."
-msgstr "Éäéüôçôåò"
-
-#: ui/evolution.xml.h:36
-msgid "_Index"
-msgstr ""
-
-#: ui/evolution.xml.h:37
-#, fuzzy
-msgid "_Mail message"
-msgstr "_ÌÞíõìá"
-
-#: ui/evolution.xml.h:39
-#, fuzzy
-msgid "_New Folder"
-msgstr "_ÍÝïò ÖÜêåëëïò"
-
-#: ui/evolution.xml.h:40
-#, fuzzy
-msgid "_Shortcut Bar"
-msgstr "ÄéáãñáöÞ áðü ÃñáììÞ Óõíôïìåýóåùí"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:469
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2475
-msgid "%A, %B %d, %Y"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:390
-msgid "Tentative"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:391
-msgid "Busy"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:392
-msgid "Out of Office"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:393
-msgid "No Information"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:409
-msgid "_Invite Others..."
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:429
-#, fuzzy
-msgid "_Options"
-msgstr "Å_íÝñãåéåò"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:446
-msgid "Show _Only Working Hours"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:459
-msgid "Show _Zoomed Out"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:477
-msgid "_Update Free/Busy"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:495
-msgid "_<<"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:512
-msgid "_Autopick"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:526
-msgid ">_>"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:543
-msgid "_All People and Resources"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:556
-msgid "All _People and One Resource"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:569
-msgid "_Required People"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:582
-msgid "Required People and _One Resource"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:605
-#, fuzzy
-msgid "Meeting _start time:"
-msgstr "Áß_ôçóç ÓõíÜíôçóçò"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:629
-#, fuzzy
-msgid "Meeting _end time:"
-msgstr "Áß_ôçóç ÓõíÜíôçóçò"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:742
-msgid "All Attendees"
-msgstr ""
-
-#: widgets/menus/gal-view-menus.c:177
-msgid "_Current View"
-msgstr ""
-
-#: widgets/menus/gal-view-menus.c:196
-msgid "Define Views"
-msgstr ""
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:421
-msgid "MTWTFSS"
-msgstr ""
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1060 widgets/misc/e-calendar-item.c:2755
-msgid "%B %Y"
-msgstr ""
-
-#: widgets/misc/e-cell-date-edit.c:218 widgets/misc/e-dateedit.c:416
-#, fuzzy
-msgid "Now"
-msgstr "_ÍÝï"
-
-#: widgets/misc/e-cell-date-edit.c:242
-msgid "OK"
-msgstr ""
-
-#: widgets/misc/e-cell-date-edit.c:723
-#, c-format
-msgid "The time must be in the format: %s"
-msgstr ""
-
-#: widgets/misc/e-clipped-label.c:107
-msgid "..."
-msgstr ""
-
-#: widgets/misc/e-filter-bar.c:166
-#, fuzzy
-msgid "Save Search"
-msgstr "Ôï çìåñïëüãéü óáò"
-
-#: widgets/misc/e-filter-bar.c:237
-#, fuzzy
-msgid "Advanced Search"
-msgstr "ÁíáæÞôçóç ãéá Ðñï÷ùñçìÝíïõò"
-
-#: widgets/misc/e-filter-bar.c:317
-#, fuzzy
-msgid "Advanced ..."
-msgstr "ÁíáæÞôçóç ãéá Ðñï÷ùñçìÝíïõò"
-
-#: widgets/misc/e-messagebox.c:152
-msgid "Information"
-msgstr ""
-
-#: widgets/misc/e-messagebox.c:159
-msgid "Warning"
-msgstr ""
-
-#: widgets/misc/e-messagebox.c:173
-msgid "Question"
-msgstr ""
-
-#: widgets/misc/e-messagebox.c:180
-#, fuzzy
-msgid "Message"
-msgstr "ÊáôÜóôáóç ìçíõìÜôùí"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:224
-#, fuzzy
-msgid "Don't show this message again."
-msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#: widgets/misc/e-search-bar.c:148
-msgid "Sear_ch"
-msgstr ""
-
-#: views/addressbook/galview.xml.h:1
-msgid "Adress Cards"
-msgstr ""
-
-#: views/addressbook/galview.xml.h:2
-#, fuzzy
-msgid "By Company"
-msgstr "ÁíôéãñáöÞ"
-
-#: views/addressbook/galview.xml.h:3
-msgid "Phone List"
-msgstr ""
-
-#: views/mail/galview.xml.h:1
-#, fuzzy
-msgid "By Sender"
-msgstr "ÁðïóôïëÞ"
-
-#: views/mail/galview.xml.h:2
-#, fuzzy
-msgid "By Status"
-msgstr "ÊáôÜóôáóç óýíäåóçò"
-
-#: views/mail/galview.xml.h:3
-#, fuzzy
-msgid "By Subject"
-msgstr "ÈÝìá"
-
-#: views/mail/galview.xml.h:4
-#, fuzzy
-msgid "Messages"
-msgstr "ÊáôÜóôáóç ìçíõìÜôùí"
-
-#: views/tasks/galview.xml.h:2
-msgid "With Category"
-msgstr ""
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-#, fuzzy
-msgid "The Personal Addressbook Server"
-msgstr "ÍÝá Óõíôüìåõóç"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr ""
-
-#: wombat/wombat.c:173
-#, fuzzy
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr "ÌïíÜäá Ôá÷/ìåßïõ: Áñ÷éêïðïßçóç ôïõ Bonobo áäýíáôç"
-
-#: wombat/wombat.c:185
-#, fuzzy
-msgid "init_corba(): could not initialize GNOME"
-msgstr "ÌïíÜäá Ôá÷/ìåßïõ: Áñ÷éêïðïßçóç ôïõ Bonobo áäýíáôç"
-
-#: wombat/wombat.c:198
-#, fuzzy
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "ÌïíÜäá Ôá÷/ìåßïõ: Áñ÷éêïðïßçóç ôïõ Bonobo áäýíáôç"
-
-#, fuzzy
-#~ msgid "New"
-#~ msgstr "_ÍÝï"
-
-#, fuzzy
-#~ msgid "Cannot initialize Evolution's notes component."
-#~ msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#, fuzzy
-#~ msgid "Notes Component: Could not initialize bonobo"
-#~ msgstr "ÌïíÜäá Ôá÷/ìåßïõ: Áñ÷éêïðïßçóç ôïõ Bonobo áäýíáôç"
-
-#, fuzzy
-#~ msgid ""
-#~ "An error occured when trying to fetch\n"
-#~ "pilot list from the gnome-pilot daemon"
-#~ msgstr ""
-#~ "ÐñïÝêõøå åîáßñåóç êáôÜ ôçí áðüðåéñá áíÜãíùóçò äåäïìÝíùí ìå PersistStream áðü "
-#~ "ôç ìïíÜäá"
-
-#, fuzzy
-#~ msgid "Evolution Calendar Conduit"
-#~ msgstr "Ã_ñáììÞ Óõíôïìåýóåùí ôïõ Evolution"
-
-#, fuzzy
-#~ msgid "Evolution ToDo Conduit"
-#~ msgstr "Ã_ñáììÞ Óõíôïìåýóåùí ôïõ Evolution"
-
-#, fuzzy
-#~ msgid "Open..."
-#~ msgstr "¶íïé_ãìá"
-
-#, fuzzy
-#~ msgid "Enter the identity you wish to send this message from"
-#~ msgstr "ÅéóÜãåôå ôïí ðáñáëÞðôç ôïõ ìçíýìáôïò"
-
-#~ msgid "Enter the subject of the mail"
-#~ msgstr "ÅéóÜãåôå ôï èÝìá ôïõ ìçíýìáôïò"
-
-#, fuzzy
-#~ msgid "Saving changes to message..."
-#~ msgstr "ÁðïóôïëÞ ôïõ ìçíýìáôïò"
-
-#, fuzzy
-#~ msgid "Save changes to message..."
-#~ msgstr "ÁðïóôïëÞ ôïõ ìçíýìáôïò"
-
-#, fuzzy
-#~ msgid "Edit Filter Rule"
-#~ msgstr "_ÖÜêåëëïò"
-
-#, fuzzy
-#~ msgid "Remove action"
-#~ msgstr "ÄéáãñáöÞ ÏìÜäáò"
-
-#, fuzzy
-#~ msgid "Remove criterion"
-#~ msgstr "ÄéáãñáöÞ ÏìÜäáò"
-
-#, fuzzy
-#~ msgid "Add Rule"
-#~ msgstr "ÍÝá Óõíôüìåõóç"
-
-#, fuzzy
-#~ msgid "Edit VFolder Rule"
-#~ msgstr "_ÖÜêåëëïò"
-
-#, fuzzy
-#~ msgid "Subject contains"
-#~ msgstr "ÈÝìá"
-
-#, fuzzy
-#~ msgid "FIXME: _Appointment"
-#~ msgstr "Ñ_áíôåâïý"
-
-#, fuzzy
-#~ msgid "FIXME: Meeting Re_quest"
-#~ msgstr "Áßôç_óç Åêêñåìüôçôáò"
-
-#, fuzzy
-#~ msgid "FIXME: _Contact"
-#~ msgstr "_Ãíùñéìßá"
-
-#, fuzzy
-#~ msgid "FIXME: Task _Request"
-#~ msgstr "Áßôç_óç Åêêñåìüôçôáò"
-
-#, fuzzy
-#~ msgid "FIXME: _Journal Entry"
-#~ msgstr "Êáôá÷þñçóç Çìåñï_ëïãßïõ"
-
-#, fuzzy
-#~ msgid "FIXME: Define Print _Styles..."
-#~ msgstr "Áß_ôçóç ÓõíÜíôçóçò"
-
-#, fuzzy
-#~ msgid "FIXME: Save Attac_hments..."
-#~ msgstr "ÍÝá åðéóýíáøç..."
-
-#, fuzzy
-#~ msgid "_Object"
-#~ msgstr "ÈÝìá"
-
-#, fuzzy
-#~ msgid "FIXME: __Formatting"
-#~ msgstr "_Ãíùñéìßá"
-
-#, fuzzy
-#~ msgid "_Toolbars"
-#~ msgstr "Å_ñãáëåßá"
-
-#, fuzzy
-#~ msgid "_Forms"
-#~ msgstr "Áðü"
-
-#, fuzzy
-#~ msgid "FIXME: _New Contact"
-#~ msgstr "_Ãíùñéìßá"
-
-#, fuzzy
-#~ msgid "FIXME: New _Letter to Contact"
-#~ msgstr "_Ãíùñéìßá"
-
-#, fuzzy
-#~ msgid "FIXME: New Meetin_g with Contact"
-#~ msgstr "_Ãíùñéìßá"
-
-#, fuzzy
-#~ msgid "FIXME: _Plan a Meeting..."
-#~ msgstr "_Ãíùñéìßá"
-
-#, fuzzy
-#~ msgid "FIXME: New _Task for Contact"
-#~ msgstr "_Ãíùñéìßá"
-
-#, fuzzy
-#~ msgid "FIXME: New _Journal Entry for Contact"
-#~ msgstr "Êáôá÷þñçóç Çìåñï_ëïãßïõ"
-
-#, fuzzy
-#~ msgid "FIXME: _Display Map of Address"
-#~ msgstr "_ÌÞíõìá"
-
-#, fuzzy
-#~ msgid "FIXME: _Open Web Page"
-#~ msgstr "_ÌÞíõìá"
-
-#, fuzzy
-#~ msgid "FIXME: Next"
-#~ msgstr "_Ãíùñéìßá"
-
-#, fuzzy
-#~ msgid "_Mail"
-#~ msgstr "_ÌÞíõìá"
-
-#, fuzzy
-#~ msgid "Hide Subject \"%s\""
-#~ msgstr "ÈÝìá"
-
-#, fuzzy
-#~ msgid "Optional"
-#~ msgstr "Å_íÝñãåéåò"
-
-#, fuzzy
-#~ msgid "Add News Server"
-#~ msgstr "ÍÝá ÏìÜäá"
-
-#, fuzzy
-#~ msgid "Mail Sources"
-#~ msgstr "Êõñßùò Óõíôïìåýóåéò"
-
-#, fuzzy
-#~ msgid "News Sources"
-#~ msgstr "ÍÝá Óõíôüìåõóç"
-
-#, fuzzy
-#~ msgid "_Print Contacts..."
-#~ msgstr "Ï êáôÜëïãïò ãíùñéìéþí óáò"
-
-#, fuzzy
-#~ msgid "Ca_lendar"
-#~ msgstr "Çìåñïëüãéï"
-
-#, fuzzy
-#~ msgid "Open a calendar"
-#~ msgstr "Ôï çìåñïëüãéü óáò"
-
-#, fuzzy
-#~ msgid "_Print this calendar"
-#~ msgstr "Ôï çìåñïëüãéü óáò"
-
-#, fuzzy
-#~ msgid "FIXME: _New Appointment"
-#~ msgstr "Ñ_áíôåâïý"
-
-#, fuzzy
-#~ msgid "_Find..."
-#~ msgstr "Ðñïôåñáéüôçôá"
-
-#, fuzzy
-#~ msgid "_Undo"
-#~ msgstr "Áêýñùóç"
-
-#, fuzzy
-#~ msgid "_Print Message"
-#~ msgstr "ÁðåóôáëìÝíá ìçíýìáôá"
-
-#, fuzzy
-#~ msgid "_Source"
-#~ msgstr "ÍÝá Óõíôüìåõóç"
-
-#, fuzzy
-#~ msgid "Show the _Folder Bar"
-#~ msgstr "ÄéáãñáöÞ áðü ÃñáììÞ Óõíôïìåýóåùí"
-
-#, fuzzy
-#~ msgid "monday"
-#~ msgstr "ÓÞìåñá"
-
-#, fuzzy
-#~ msgid "tues"
-#~ msgstr "Óçìåßù_ìá"
-
-#, fuzzy
-#~ msgid "today"
-#~ msgstr "ÓÞìåñá"
-
-#, fuzzy
-#~ msgid "ninth"
-#~ msgstr "Ðñïôåñáéüôçôá"
-
-#, fuzzy
-#~ msgid "tenth"
-#~ msgstr "ÅóôÜëç"
-
-#, fuzzy
-#~ msgid "Mail Source"
-#~ msgstr "Êõñßùò Óõíôïìåýóåéò"
-
-#, fuzzy
-#~ msgid "Forward message \"%s\""
-#~ msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#, fuzzy
-#~ msgid "View messages from \"%s\""
-#~ msgstr "ÍÝá ìçíýìáôá"
-
-#, fuzzy
-#~ msgid "Rebuild message view"
-#~ msgstr "ÍÝá ìçíýìáôá"
-
-#, fuzzy
-#~ msgid "Gnome Calendar"
-#~ msgstr "Çìåñïëüãéï"
-
-#, fuzzy
-#~ msgid "_New appointment..."
-#~ msgstr "Ñ_áíôåâïý"
-
-#, fuzzy
-#~ msgid "'s calendar"
-#~ msgstr "Ôï çìåñïëüãéü óáò"
-
-#, fuzzy
-#~ msgid "To-do list"
-#~ msgstr "Å_ñãáëåßá"
-
-#, fuzzy
-#~ msgid "Second"
-#~ msgstr "ÁðïóôïëÞ"
-
-#, fuzzy
-#~ msgid "Alarm Properties"
-#~ msgstr "Åðéóýíáøç"
-
-#~ msgid "Cut selected item into clipboard"
-#~ msgstr "ÊïðÞ åðéëåãìÝíïõ áíôéêåéìÝíïõ óôï ðñü÷åéñï"
-
-#~ msgid "Copy selected item into clipboard"
-#~ msgstr "ÁíôéãñáöÞ åðéëåãìÝíïõ áíôéêåéìÝíïõ óôï ðñü÷åéñï"
-
-#~ msgid "Select recipients' addresses"
-#~ msgstr "ÅðéëÝîôå ôç äéåýèõíóç ôïõ ðáñáëÞðôç"
-
-#, fuzzy
-#~ msgid "To: >>"
-#~ msgstr "Ðñïò:"
-
-#, fuzzy
-#~ msgid "Cc: >>"
-#~ msgstr "Áíôßãñáöï:"
-
-#, fuzzy
-#~ msgid "Bcc: >>"
-#~ msgstr "Êñõöü áíôßãñáöï:"
-
-#, fuzzy
-#~ msgid "Discard this message?"
-#~ msgstr "ÁðïóôïëÞ ðáñüíôïò ìçíýìáôïò"
-
-#~ msgid "Cut selected region into the clipboard"
-#~ msgstr "ÊïðÞ åðéëåãìÝíçò ðåñéï÷Þò óôï ðñü÷åéñï"
-
-#~ msgid "Copy selected region into the clipboard"
-#~ msgstr "ÁíôéãñáöÞ åðéëåãìÝíçò ðåñéï÷Þò óôï ðñü÷åéñï"
-
-#~ msgid "Paste selected region into the clipboard"
-#~ msgstr "Åðéêüëëçóç åðéëåãìÝíçò ðåñéï÷Þò áðü ôï ðñü÷åéñï"
-
-#~ msgid "Evolution can not create its local folders"
-#~ msgstr "Ôï Evolution äå ìðïñåß íá äçìéïõñãÞóåé ôïõò ôïðéêïýò öáêÝëëïõò"
-
-#~ msgid "Composes a new mail message"
-#~ msgstr "ÓõããñáöÞ íÝïõ ìçíýìáôïò"
-
-#, fuzzy
-#~ msgid "Cannot initialize the configuration system."
-#~ msgstr "Áñ÷éêïðïßçóçò ôïõ óõóôÞìáôïò ìïíÜäùí Bonobo áíåðéôõ÷Þò"
-
-#, fuzzy
-#~ msgid "<< Remove"
-#~ msgstr "ÄéáãñáöÞ"
-
-#~ msgid "We are sorry, Evolution's Folder Browser can not be initialized."
-#~ msgstr ""
-#~ "Ìáò óõã÷øñåßôå, ç áñ÷éêïðïßçóç ôïõ åîåñåõíçôÞ öáêÝëëùí ôïõ Evolution áðÝôõ÷å."
-
-#~ msgid "Whether a message preview should be shown"
-#~ msgstr "¸áí èÝëåôå Þ ï÷é ðñïåðéóêüðéóç ìçíõìÜôùí"
-
-#~ msgid "Clos_e All Items"
-#~ msgstr "Êë_åßóéìï ¼ëùí"
-
-#~ msgid ""
-#~ "Evolution detected that the file `%s' is a not a directory.\n"
-#~ "\n"
-#~ "Evolution can rename the file, delete the file or shutdown and\n"
-#~ "let you fix the problem."
-#~ msgstr ""
-#~ "Ôï Evolution âñÞêå üôé ôï áñ÷åßï \"%s\" äåí åßíáé êáôÜëïãïò.\n"
-#~ "\n"
-#~ "Ôï Evolution ìðïñåß íá ìåôïíïìÜóåé ôï áñ÷åßï, íá ôï äéáãñÜøåé Þ íá\n"
-#~ "ôåñìáôßóåé þóôå íá äéïñèþóåôå ôï ðñüâëçìá."
-
-#~ msgid ""
-#~ "This is a development version of Evolution.\n"
-#~ " Using the mail component on your mail files\n"
-#~ " is extremely hazardous.\n"
-#~ "Please backup all your mails before trying\n"
-#~ " this program. \n"
-#~ " You have been warned\n"
-#~ msgstr ""
-#~ "ÁõôÞ åßíáé ðåéñáìáôéêÞ Ýêäïóç ôïõ Evolution.\n"
-#~ " Ç ÷ñÞóç ôïõ ôìÞìáôïò çë. ôá÷õäñïìåßïõ ãéá ôá áñ÷åßá\n"
-#~ " ìçíõìÜôùí åßíáé éäéáßôåñá åðéêßíäõíç.\n"
-#~ "Ðáñáêáëïýìå êÜíôå áíôßãñáöá ôùí ìçíõìÜôùí óáò ðñßí\n"
-#~ " äïêéìÜóåôå ôï ðáñüí ðñüãñáììá. \n"
-#~ " ¸÷åôå ðñïåéäïðïéçèåß!\n"
-
-#~ msgid "The %s component doesn't support PersistStream!\n"
-#~ msgstr "Ç ìïíÜäá %s äåí õðïóôçñßæåé ôá PersistStream!\n"
-
-#~ msgid "A folder containing calendar entries"
-#~ msgstr "ÖÜêåëëïò ðïõ ðåñéÝ÷åé óôïé÷åßá çìåñïëïãßïõ"
-
-#~ msgid "A service containing mail items"
-#~ msgstr "Õðçñåóßá ðïõ ðåñéÝ÷åé ìçíýìáôá"
-
-#~ msgid "A service containing contacts"
-#~ msgstr "Õðçñåóßá ðïõ ðåñéÝ÷åé ãíùñéìßåò"
-
-#~ msgid "A service containing calendar entries"
-#~ msgstr "Õðçñåóßá ðïõ ðåñéÝ÷åé óôïé÷åßá çìåñïëïãßïõ"
-
-#~ msgid "A service containing tasks"
-#~ msgstr "Õðçñåóßá ðïõ ðåñéÝ÷åé åêêñåìüôçôåò"
-
-#~ msgid "Rename Shortcut"
-#~ msgstr "Ìåôïíïìáóßá Óõíôüìåõóçò"
-
-#~ msgid "Tasks list"
-#~ msgstr "ÊáôÜëïãïò åêêñåìïôÞôùí"
-
-#~ msgid "Enables some debugging functions"
-#~ msgstr "Åíåñãïðïßçóç ìåñéêþí ëåéôïõñãéþí áðïóöáëìÜôùóçò"
-
-#~ msgid "LEVEL"
-#~ msgstr "ÅÐÉÐÅÄÏ"
diff --git a/po/en_GB.po b/po/en_GB.po
deleted file mode 100644
index bb5c3d412b..0000000000
--- a/po/en_GB.po
+++ /dev/null
@@ -1,8441 +0,0 @@
-# English (Commonwealth) translation
-# Copyright (C) 2000 Free Software Foundation, Inc.
-# Robert Brady <rwb197@zepler.org> 2000
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: evolution 0.6\n"
-"POT-Creation-Date: 2001-04-14 08:51-0400\n"
-"PO-Revision-Date: 2000-10-22 16:19+0100\n"
-"Last-Translator: Robert Brady <rwb197@zepler.org>\n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: addressbook/backend/ebook/e-card.c:3209
-msgid "Card: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3211
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3212
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3213
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3214
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3215
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3216
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3230
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3241
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3243
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3244
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3245
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3246
-msgid ""
-"\n"
-" City: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3247
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3248
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3249
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3262
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3274
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3277
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3301
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3304
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3323
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3329
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3337
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3341
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3353
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3354
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3355
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3356
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3357
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3358
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3362
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3363
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3376
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3379
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:1
-msgid "Factory to import GnomeCard files into Evolution."
-msgstr ""
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:2
-msgid "Imports GnomeCard files into Evolution."
-msgstr ""
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:21
-#: addressbook/backend/ebook/load-pine-addressbook.c:22
-#: addressbook/backend/ebook/test-client-list.c:23
-#: addressbook/backend/ebook/test-client.c:33
-#: addressbook/conduit/address-conduit.c:1092
-#: addressbook/gui/component/addressbook-factory.c:43
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:72 calendar/gui/main.c:57
-msgid "Could not initialize Bonobo"
-msgstr "Could not initialise Bonobo"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:655
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:687
-#: addressbook/conduit/address-conduit.c:690
-msgid "Could not read pilot's Address application block"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:7
-msgid "Add"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-msgid "C_ontacts..."
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-msgid "Contact Editor"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-msgid "General"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-msgid "No_tes:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1284
-msgid "Primary Email"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:74
-msgid "_Add"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-msgid "_Company:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/mail-config.glade.h:75 ui/evolution-event-editor.xml.h:57
-#: ui/evolution-mail.xml.h:91 ui/evolution-task-editor-dialog.xml.h:69
-msgid "_Delete"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-msgid "_Home"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-msgid "_Job title:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-msgid "_Mobile"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-msgid "Delete Contact?"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:603
-msgid "This contact belongs to these categories:"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-#: addressbook/gui/widgets/e-addressbook-view.c:676
-msgid "Assistant"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/contact-editor/e-contact-editor.c:1310
-msgid "Business"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-msgid "Business 2"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#: addressbook/gui/widgets/e-addressbook-view.c:656
-msgid "Business Fax"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Callback"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "Car"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1248
-msgid "Company"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1249
-#: addressbook/contact-editor/e-contact-editor.c:1311
-msgid "Home"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1250
-msgid "Home 2"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1251
-#: addressbook/gui/widgets/e-addressbook-view.c:657
-msgid "Home Fax"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1252
-#: addressbook/gui/widgets/e-addressbook-view.c:660
-msgid "ISDN"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1253
-msgid "Mobile"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1254
-#: addressbook/contact-editor/e-contact-editor.c:1312
-#: calendar/gui/e-meeting-dialog.glade.h:14 mail/mail-config.glade.h:40
-msgid "Other"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1255
-#: addressbook/gui/widgets/e-addressbook-view.c:662
-msgid "Other Fax"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1256
-#: addressbook/gui/widgets/e-addressbook-view.c:663
-msgid "Pager"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1257
-msgid "Primary"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1258
-#: addressbook/gui/widgets/e-addressbook-view.c:664
-msgid "Radio"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1259
-#: addressbook/gui/widgets/e-addressbook-view.c:665
-msgid "Telex"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1260
-msgid "TTY/TDD"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:668
-msgid "Email 2"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/gui/widgets/e-addressbook-view.c:669
-msgid "Email 3"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-quick-add.c:223
-msgid "Contact Quick-Add"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-quick-add.c:225
-msgid "Edit Full"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-quick-add.c:262
-#: addressbook/gui/widgets/e-addressbook-view.c:643
-msgid "Full Name"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-quick-add.c:268
-msgid "E-mail"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-msgid "_City:"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr "_Post Code:"
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:4
-msgid "I"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:8
-msgid "Miss"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:15
-msgid "_Middle:"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:241
-msgid "As _Minicards"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:247
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:399
-#, c-format
-msgid "Enter password for %s"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:427
-msgid "Unable to open addressbook"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:432
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or have tried\n"
-"to access an LDAP server and don't have LDAP support\n"
-"compiled in. If you've entered a URI, check the URI for\n"
-"correctness and reenter. If not, you probably have\n"
-"attempted to access an LDAP server. If you wish to be\n"
-"able to use LDAP, you'll need to download and install\n"
-"OpenLDAP and recompile and install Evolution.\n"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:555
-msgid "Show All"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:557
-msgid "Advanced..."
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:587
-msgid "Any field contains"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:588
-msgid "Name contains"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:589
-msgid "Email contains"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:732
-msgid "The URI that the Folder Browser will display"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-storage.c:99
-msgid "Other Contacts"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:148
-msgid "LDAP Server"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:150
-msgid "File"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:153
-msgid "Unknown addressbook type"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:163
-msgid "None (anonymous mode)"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:165
-#: camel/camel-sasl-plain.c:32 camel/providers/imap/camel-imap-provider.c:80
-#: camel/providers/nntp/camel-nntp-store.c:293
-#: camel/providers/pop3/camel-pop3-provider.c:67 mail/mail-config.glade.h:43
-msgid "Password"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:167
-msgid "SASL"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:170
-msgid "Unknown auth type"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:179
-msgid "Base"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "One"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:183
-msgid "Subtree"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:186
-msgid "Unknown scope type"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:353
-msgid "Bind DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:354
-msgid "FIXME Bind DN Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:356
-#: mail/mail-config.glade.h:50
-msgid "Remember this password"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:406
-#: mail/mail-config.glade.h:28
-msgid "Host:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:407
-msgid "FIXME Host help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:409
-msgid "Port:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:410
-msgid "FIXME Port help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:414
-msgid "Root DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:415
-msgid "FIXME Root DN help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:435
-msgid "Search Scope:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:489
-msgid "Authentication:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:507
-#: mail/mail-config.glade.h:44
-msgid "Path:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:508
-msgid "FIXME Path Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:513
-msgid "Create path if it doesn't exist."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:647
-msgid "Edit Addressbook"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:649
-msgid "Add Addressbook"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:665
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:671
-#: mail/mail-config.glade.h:35
-msgid "Name:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:672
-msgid "FIXME Name help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:674
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:675
-msgid "FIXME Description help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-msgid "Addressbook Sources"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: addressbook/gui/widgets/e-addressbook-view.c:578
-#: addressbook/gui/widgets/e-minicard.c:673
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:8 mail/folder-browser.c:597
-#: mail/mail-config.glade.h:19 mail/mail-view.c:156
-#: ui/evolution-addressbook.xml.h:3 ui/evolution-event-editor.xml.h:17
-#: ui/evolution-mail.xml.h:11 ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:23
-msgid "Edit"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-msgid "Name"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-msgid "URI"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Disable Queries"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Enable Queries (Dangerous!)"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:388
-#: addressbook/gui/component/select-names/e-select-names-popup.c:210
-msgid "Edit Contact Info"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:424
-#: addressbook/gui/component/select-names/e-select-names-popup.c:269
-msgid "Add to Contacts"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-msgid "A Bonobo control for an address popup."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A Bonobo control for displaying an address."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-msgid "Evolution Addressbook minicard viewer"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-msgid "Evolution component for handling contacts."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-#, fuzzy
-msgid "Factory for the Addressbook Minicard control"
-msgstr "Cannot initialise Evolution's mail component."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-msgid "Factory for the Addressbook's address displayer"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-msgid "Factory for the Addressbook's address popup"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:10
-#, fuzzy
-msgid "Factory for the Evolution addressbook component."
-msgstr "Cannot initialise Evolution's mail component."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:11
-msgid "Factory for the sample Addressbook control"
-msgstr ""
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-msgid "Evolution's addressbook name selection interface."
-msgstr ""
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr ""
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:131
-#: composer/e-msg-composer-attachment-bar.c:468 filter/filter-filter.c:402
-#: filter/filter-rule.c:549 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:265 shell/e-shortcuts-view.c:388
-msgid "Remove"
-msgstr ""
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:146
-msgid "Remove All"
-msgstr ""
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr ""
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-msgid "Message Recipients"
-msgstr ""
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-msgid "Select Names"
-msgstr ""
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-msgid "Select name from:"
-msgstr ""
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:158
-msgid "Search"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-msgid "o"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-msgid "r"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:513
-#: addressbook/gui/widgets/e-addressbook-view.c:573
-#: addressbook/gui/widgets/e-minicard.c:466
-#: addressbook/gui/widgets/e-minicard.c:668
-msgid "Save as VCard"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:574
-#: addressbook/gui/widgets/e-minicard.c:669
-msgid "Send contact to other"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:575
-#: addressbook/gui/widgets/e-minicard.c:670
-msgid "Send message to contact"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:576
-#: addressbook/gui/widgets/e-minicard.c:671 mail/folder-browser.c:572
-#: mail/mail-view.c:154 ui/evolution-addressbook.xml.h:9
-#: ui/evolution-calendar.xml.h:23 ui/evolution-mail.xml.h:50
-#: ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:577
-#: addressbook/gui/widgets/e-minicard.c:672
-msgid "Print Envelope"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:641
-msgid "* Click here to add a contact *"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:642
-msgid "File As"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:644
-msgid "Email"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:645
-msgid "Primary Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:646
-msgid "Assistant Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:647
-msgid "Business Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:648
-msgid "Callback Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:649
-msgid "Company Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:650
-msgid "Home Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:651
-msgid "Organization"
-msgstr "Organisation"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:652
-msgid "Business Address"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:653
-msgid "Home Address"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:654
-msgid "Mobile Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:655
-msgid "Car Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:658
-msgid "Business Phone 2"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:659
-msgid "Home Phone 2"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:661
-msgid "Other Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:666
-msgid "TTY"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:667
-msgid "Other Address"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:670
-msgid "Web Site"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:671
-msgid "Department"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:672
-msgid "Office"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:673
-msgid "Title"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:674
-msgid "Profession"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:675
-msgid "Manager"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:677
-msgid "Nickname"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:678
-msgid "Spouse"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:679
-msgid "Note"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:680
-msgid "Free-busy URL"
-msgstr ""
-
-#: addressbook/gui/widgets/e-minicard-control.c:282
-msgid "Save in addressbook"
-msgstr ""
-
-#: addressbook/gui/widgets/e-minicard-view.c:166
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:26
-msgid "Card View"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:9
-msgid "Footer:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:11
-msgid "Header"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:24
-#, fuzzy
-msgid "Orientation"
-msgstr "Organisation"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:26
-msgid "Page Setup:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:36
-msgid "Size:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:38
-msgid "Style name:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:40
-msgid "Type:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr ""
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr ""
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr ""
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr ""
-
-#: calendar/gui/calendar-commands.c:266
-msgid "File not found"
-msgstr ""
-
-#: calendar/gui/calendar-commands.c:290
-msgid "Open calendar"
-msgstr ""
-
-#: calendar/gui/calendar-commands.c:332
-msgid "Save calendar"
-msgstr ""
-
-#: calendar/gui/calendar-commands.c:468
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-
-#: calendar/gui/calendar-model.c:360 calendar/gui/calendar-model.c:895
-#: calendar/gui/e-calendar-table.c:330
-msgid "Public"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:363 calendar/gui/calendar-model.c:897
-#: calendar/gui/e-calendar-table.c:331
-msgid "Private"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:899
-#: calendar/gui/e-calendar-table.c:332
-msgid "Confidential"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/event-editor.c:1592
-#: calendar/gui/event-editor.c:1619
-#: camel/providers/smtp/camel-smtp-transport.c:218
-msgid "Unknown"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:457
-msgid "N"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:457
-msgid "S"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:459
-msgid "E"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:459
-msgid "W"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:497 calendar/gui/calendar-model.c:1063
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:352 mail/message-list.c:660
-msgid "High"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:499 calendar/gui/calendar-model.c:1065
-#: calendar/gui/calendar-model.c:1569
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:353 mail/message-list.c:659
-msgid "Normal"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:501 calendar/gui/calendar-model.c:1067
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:354 mail/message-list.c:658
-msgid "Low"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:537 calendar/gui/calendar-model.c:1119
-#: calendar/gui/e-calendar-table.c:406
-msgid "Transparent"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:540 calendar/gui/calendar-model.c:1121
-#: calendar/gui/e-calendar-table.c:405
-msgid "Opaque"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:635 calendar/gui/calendar-model.c:1173
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:426
-msgid "Not Started"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:638 calendar/gui/calendar-model.c:1175
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:427
-msgid "In Progress"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1177
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:428
-msgid "Completed"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1179
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:429 camel/camel-service.c:550
-#: camel/camel-service.c:586
-msgid "Cancelled"
-msgstr ""
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:791 e-util/e-time-utils.c:278
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr ""
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:794 e-util/e-time-utils.c:287
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:799
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:879
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr ""
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:893 calendar/gui/calendar-model.c:1117
-#: calendar/gui/calendar-model.c:1171 calendar/gui/e-calendar-table.c:329
-#: calendar/gui/e-calendar-table.c:404 mail/mail-account-gui.c:973
-#: mail/mail-accounts.c:120 mail/mail-accounts.c:164
-#: mail/mail-config.glade.h:37 shell/e-shell-view.c:1129
-#: widgets/misc/e-cell-date-edit.c:234 widgets/misc/e-dateedit.c:430
-#: widgets/misc/e-dateedit.c:1339 widgets/misc/e-dateedit.c:1454
-msgid "None"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:967
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1007
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1048
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr ""
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1061
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:355
-msgid "Undefined"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1102
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1571
-msgid "Recurring"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1573
-msgid "Assigned"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1579
-msgid "Yes"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1579
-msgid "No"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:196
-msgid "%A, %e %B %Y"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:239 calendar/gui/calendar-summary.c:245
-msgid "%I:%M%p"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:437
-msgid "<b>Error loading calendar</b>"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:449
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:616
-msgid "Display"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:621
-msgid "Show appointments"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:629
-msgid "Show tasks"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:715 calendar/gui/e-itip-control.glade.h:7
-msgid "Loading Calendar"
-msgstr ""
-
-#: calendar/gui/control-factory.c:126
-msgid "The URI that the calendar will display"
-msgstr ""
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr ""
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-msgid "Snooze"
-msgstr ""
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr ""
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr ""
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-msgid "Factory for the alarm notification service"
-msgstr ""
-
-#: calendar/gui/alarm-notify/notify-main.c:67 calendar/gui/main.c:52
-#, fuzzy
-msgid "Could not initialize GNOME"
-msgstr "Could not initialise Bonobo"
-
-#: calendar/gui/alarm-notify/notify-main.c:77
-msgid "Could not create the alarm notify service factory"
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:189
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:196
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:207
-msgid "No summary available."
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:2
-#, fuzzy
-msgid "Close"
-msgstr "Colours"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-msgid "Edit appointment"
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-msgid "Calendar"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "Colours"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-msgid "Defaults"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:162
-msgid "Due Date"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:481
-msgid "Friday"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:477
-msgid "Monday"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:45
-msgid "Pick a color"
-msgstr "Pick a colour"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:165
-msgid "Priority"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-msgid "Remind me of all appointments"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-msgid "Reminders"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:482
-msgid "Saturday"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-msgid "Show appointment end times"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:483
-msgid "Sunday"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-msgid "TaskPad"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:480
-msgid "Thursday"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:478
-msgid "Tuesday"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:479
-msgid "Wednesday"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:78
-msgid "seconds."
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:70
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:73
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:79
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:82
-msgid "Are you sure you want to delete this untitled task?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:88
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:91
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr ""
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:158
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-msgid "Date & Time"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-msgid "Pri_vate"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-msgid "Progress"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-msgid "Sta_rt Date:"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-msgid "Su_mmary:"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-msgid "URL:"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Contacts..."
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-msgid "_Due Date:"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-msgid "_Priority:"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "_Status:"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor.c:697
-msgid "Edit Task"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor.c:703 calendar/gui/event-editor.c:379
-msgid "No summary"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor.c:709 calendar/gui/event-editor.c:385
-#, c-format
-msgid "Appointment - %s"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor.c:712 calendar/gui/event-editor.c:388
-#, c-format
-msgid "Task - %s"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor.c:715 calendar/gui/event-editor.c:391
-#, c-format
-msgid "Journal entry - %s"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:157
-msgid "Categories"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:159
-msgid "Completion Date"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "End Date"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:161
-msgid "Start Date"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Geographical Position"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:164
-msgid "Percent complete"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:166
-msgid "Summary"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:167
-msgid "Transparency"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:168
-msgid "URL"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:169
-msgid "Alarms"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:170
-msgid "Click here to add a task"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "0%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "10%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "20%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "30%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:378
-#, c-format
-msgid "40%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:379
-#, c-format
-msgid "50%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:380
-#, c-format
-msgid "60%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:381
-#, c-format
-msgid "70%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:382
-#, c-format
-msgid "80%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:383
-#, c-format
-msgid "90%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:384
-#, c-format
-msgid "100%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:551
-msgid "Mark Complete"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:552
-msgid "Mark the task complete"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:557
-msgid "Edit this task..."
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:558
-msgid "Edit the task"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:560
-#: ui/evolution-task-editor-dialog.xml.h:19
-msgid "Delete this task"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:561
-msgid "Delete the task"
-msgstr ""
-
-#: calendar/gui/e-day-view-time-item.c:519
-#, c-format
-msgid "%02i minute divisions"
-msgstr ""
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:274 calendar/gui/e-day-view.c:1294
-#: calendar/gui/e-week-view-main-item.c:325
-msgid "%A %d %B"
-msgstr ""
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:278 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:334
-msgid "%a %d %b"
-msgstr ""
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:282 calendar/gui/e-day-view.c:1321
-#: calendar/gui/e-week-view-main-item.c:348
-msgid "%d %b"
-msgstr ""
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:570 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:617
-msgid "am"
-msgstr ""
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:573 calendar/gui/e-week-view.c:303
-#: calendar/gui/print.c:616
-msgid "pm"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3146 ui/evolution-calendar.xml.h:16
-msgid "New Appointment"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3148 calendar/gui/e-week-view.c:3280
-msgid "New All Day Event"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3153 calendar/gui/e-week-view.c:3285
-msgid "Go to Today"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3155 calendar/gui/e-week-view.c:3287
-msgid "Go to Date..."
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3162 calendar/gui/e-week-view.c:3293
-#: mail/folder-browser.c:566 ui/evolution-calendar.xml.h:19
-#: ui/evolution-message-composer.xml.h:10
-msgid "Open"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3164 calendar/gui/e-week-view.c:3295
-msgid "Delete this Appointment"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3166 calendar/gui/e-week-view.c:3297
-#: ui/evolution-event-editor.xml.h:45
-msgid "Schedule Meeting"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3175 calendar/gui/e-week-view.c:3310
-msgid "Make this Occurrence Movable"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3177 calendar/gui/e-week-view.c:3312
-msgid "Delete this Occurrence"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3179
-msgid "Delete all Occurrences"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:161
-msgid "I couldn't update your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:167 calendar/gui/e-itip-control.c:510
-msgid "Component successfully updated."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:173
-msgid "There was an error loading the calendar file."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:197
-msgid "I couldn't open your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:458 calendar/gui/e-itip-control.c:529
-msgid "I couldn't load your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:470
-msgid "I couldn't read your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:483
-msgid "This is a reply from someone who was uninvited!"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:499
-msgid "I couldn't update your calendar store."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:540
-msgid "I couldn't delete the calendar component!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:550
-msgid "Component successfully deleted."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:694
-#, fuzzy
-msgid "I don't recognize this type of calendar component."
-msgstr "Cannot initialise Evolution's mail component."
-
-#: calendar/gui/e-itip-control.c:780
-msgid "Add to Calendar"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:814
-msgid " Accept "
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:815
-msgid " Decline "
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:816
-msgid " Tentative "
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:860
-msgid "Update Calendar"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:883
-msgid "Cancel Meeting"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, no-c-format
-msgid "%P %%"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:4
-msgid "Calendar Message"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:5 mail/mail-format.c:619
-msgid "Date:"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:8
-msgid "Loading calendar..."
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:9
-#, fuzzy
-msgid "Organizer:"
-msgstr "Organisation:"
-
-#: calendar/gui/e-itip-control.glade.h:10
-msgid "Server Message:"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:11
-msgid "Summary:"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:13
-msgid "date-start"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-msgid "Attendee"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-msgid "Attendee address"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-msgid "Attendees: "
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-msgid "Chair"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-msgid "Meeting Invitations"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-#, fuzzy
-msgid "Organizer: "
-msgstr "Organisation:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:15
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid "RSVP"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:18
-msgid ""
-"Request\n"
-"Meeting"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-msgid "Required Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-msgid "Role"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:22
-msgid ""
-"Schedule\n"
-"Time"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:24 filter/libfilter-i18n.h:33
-#: mail/message-list.c:1052
-msgid "Status"
-msgstr ""
-
-#: calendar/gui/e-tasks.c:149 calendar/gui/e-tasks.c:469
-#: calendar/gui/e-tasks.c:502
-msgid "All"
-msgstr ""
-
-#: calendar/gui/e-tasks.c:155
-msgid "Category:"
-msgstr ""
-
-#: calendar/gui/e-tasks.c:298
-#, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr ""
-
-#: calendar/gui/e-tasks.c:310
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr ""
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:342
-msgid "%d %B"
-msgstr ""
-
-#: calendar/gui/e-week-view.c:3278 calendar/gui/e-week-view.c:3301
-msgid "New Appointment..."
-msgstr ""
-
-#: calendar/gui/e-week-view.c:3314
-msgid "Delete All Occurrences"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-msgid "Appointment"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-msgid "Appointment Basics"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-msgid "Custom recurrence"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-msgid "Exceptions"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-msgid "Modify"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-msgid "No recurrence"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1579
-msgid "Play a sound"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-msgid "Preview"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Recurrence"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-msgid "Recurrence Rule"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-msgid "Reminder"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1588
-msgid "Run a program"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1585
-msgid "Send an email"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-msgid "Settings..."
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1582
-msgid "Show a dialog"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-msgid "_End time:"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Start time:"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Starting date:"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:36
-msgid "after"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:37
-msgid "before"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "day(s)"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-msgid "end of appointment"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "for"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-msgid "hour(s)"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:40 mail/mail-config.glade.h:77
-msgid "minute(s)"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "month(s)"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:42
-msgid "start of appointment"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-msgid "until"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "week(s)"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "year(s)"
-msgstr ""
-
-#: calendar/gui/event-editor.c:373
-msgid "Edit Appointment"
-msgstr ""
-
-#: calendar/gui/event-editor.c:451
-msgid "on"
-msgstr ""
-
-#: calendar/gui/event-editor.c:476 filter/filter-datespec.c:81
-msgid "day"
-msgstr ""
-
-#: calendar/gui/event-editor.c:603
-msgid "on the"
-msgstr ""
-
-#: calendar/gui/event-editor.c:610
-msgid "th"
-msgstr ""
-
-#: calendar/gui/event-editor.c:756
-msgid "occurrences"
-msgstr ""
-
-#: calendar/gui/event-editor.c:873
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr ""
-
-#: calendar/gui/event-editor.c:1534
-#, c-format
-msgid " %d days"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1536
-msgid " 1 day"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1539
-#, c-format
-msgid " %d weeks"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1541
-msgid " 1 week"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1544
-#, c-format
-msgid " %d hours"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1546
-msgid " 1 hour"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1549
-#, c-format
-msgid " %d minutes"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1551
-msgid " 1 minute"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1554
-#, c-format
-msgid " %d seconds"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1556
-msgid " 1 second"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1603
-msgid " before start of appointment"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1605
-msgid " after start of appointment"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1613
-msgid " before end of appointment"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1615
-msgid " after end of appointment"
-msgstr ""
-
-#: calendar/gui/event-editor.c:3123 calendar/gui/print.c:1097
-#: calendar/gui/print.c:1099 calendar/gui/print.c:1100
-msgid "%a %b %d %Y"
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-#, fuzzy
-msgid "Evolution calendar executive summary component."
-msgstr "Cannot initialise Evolution's mail summary component."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-#, fuzzy
-msgid "Factory for the Calendar Summary component."
-msgstr "Cannot initialise Evolution's mail component."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-#, fuzzy
-msgid "Factory for the Evolution calendar component."
-msgstr "Cannot initialise Evolution's mail component."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-#, fuzzy
-msgid "Factory for the calendar iTip view control"
-msgstr "Cannot initialise Evolution's mail component."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-#, fuzzy
-msgid "Factory for the sample Calendar control"
-msgstr "Cannot initialise Evolution's mail component."
-
-#: calendar/gui/gnome-cal.c:700
-#, c-format
-msgid "Could not open the folder in `%s'"
-msgstr ""
-
-#: calendar/gui/gnome-cal.c:711
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:1
-msgid "April"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:2
-msgid "August"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:3
-msgid "December"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:4
-msgid "February"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:5
-msgid "Go To Date"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:6
-msgid "Go To Today"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:7
-msgid "January"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:8
-msgid "July"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:9
-msgid "June"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:10
-msgid "March"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:11
-msgid "May"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:12
-msgid "November"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:13
-msgid "October"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:14
-msgid "September"
-msgstr ""
-
-#: calendar/gui/print.c:300
-msgid "1st"
-msgstr ""
-
-#: calendar/gui/print.c:300
-msgid "2nd"
-msgstr ""
-
-#: calendar/gui/print.c:300
-msgid "3rd"
-msgstr ""
-
-#: calendar/gui/print.c:300
-msgid "4th"
-msgstr ""
-
-#: calendar/gui/print.c:300
-msgid "5th"
-msgstr ""
-
-#: calendar/gui/print.c:301
-msgid "6th"
-msgstr ""
-
-#: calendar/gui/print.c:301
-msgid "7th"
-msgstr ""
-
-#: calendar/gui/print.c:301
-msgid "8th"
-msgstr ""
-
-#: calendar/gui/print.c:301
-msgid "9th"
-msgstr ""
-
-#: calendar/gui/print.c:301
-msgid "10th"
-msgstr ""
-
-#: calendar/gui/print.c:302
-msgid "11th"
-msgstr ""
-
-#: calendar/gui/print.c:302
-msgid "12th"
-msgstr ""
-
-#: calendar/gui/print.c:302
-msgid "13th"
-msgstr ""
-
-#: calendar/gui/print.c:302
-msgid "14th"
-msgstr ""
-
-#: calendar/gui/print.c:302
-msgid "15th"
-msgstr ""
-
-#: calendar/gui/print.c:303
-msgid "16th"
-msgstr ""
-
-#: calendar/gui/print.c:303
-msgid "17th"
-msgstr ""
-
-#: calendar/gui/print.c:303
-msgid "18th"
-msgstr ""
-
-#: calendar/gui/print.c:303
-msgid "19th"
-msgstr ""
-
-#: calendar/gui/print.c:303
-msgid "20th"
-msgstr ""
-
-#: calendar/gui/print.c:304
-msgid "21st"
-msgstr ""
-
-#: calendar/gui/print.c:304
-msgid "22nd"
-msgstr ""
-
-#: calendar/gui/print.c:304
-msgid "23rd"
-msgstr ""
-
-#: calendar/gui/print.c:304
-msgid "24th"
-msgstr ""
-
-#: calendar/gui/print.c:304
-msgid "25th"
-msgstr ""
-
-#: calendar/gui/print.c:305
-msgid "26th"
-msgstr ""
-
-#: calendar/gui/print.c:305
-msgid "27th"
-msgstr ""
-
-#: calendar/gui/print.c:305
-msgid "28th"
-msgstr ""
-
-#: calendar/gui/print.c:305
-msgid "29th"
-msgstr ""
-
-#: calendar/gui/print.c:305
-msgid "30th"
-msgstr ""
-
-#: calendar/gui/print.c:306
-msgid "31st"
-msgstr ""
-
-#: calendar/gui/print.c:362
-msgid "Su"
-msgstr ""
-
-#: calendar/gui/print.c:362
-msgid "Mo"
-msgstr ""
-
-#: calendar/gui/print.c:362
-msgid "Tu"
-msgstr ""
-
-#: calendar/gui/print.c:362
-msgid "We"
-msgstr ""
-
-#: calendar/gui/print.c:362
-msgid "Th"
-msgstr ""
-
-#: calendar/gui/print.c:362
-msgid "Fr"
-msgstr ""
-
-#: calendar/gui/print.c:362
-msgid "Sa"
-msgstr ""
-
-#: calendar/gui/print.c:948 views/tasks/galview.xml.h:1
-msgid "Tasks"
-msgstr ""
-
-#. Day
-#: calendar/gui/print.c:1078
-msgid "Current day (%a %b %d %Y)"
-msgstr ""
-
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1096
-msgid "%a %b %d"
-msgstr ""
-
-#: calendar/gui/print.c:1093
-msgid "%a %d %Y"
-msgstr ""
-
-#: calendar/gui/print.c:1104
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr ""
-
-#. Month
-#: calendar/gui/print.c:1112
-msgid "Current month (%b %Y)"
-msgstr ""
-
-#. Year
-#: calendar/gui/print.c:1119
-msgid "Current year (%Y)"
-msgstr ""
-
-#: calendar/gui/print.c:1156
-msgid "Print Calendar"
-msgstr ""
-
-#: calendar/gui/print.c:1321 mail/mail-callbacks.c:1342
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:24
-#: ui/evolution-mail.xml.h:52
-msgid "Print Preview"
-msgstr ""
-
-#: calendar/gui/tasks-control.c:108
-msgid "The URI of the tasks folder to display"
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-
-#: calendar/gui/weekday-picker.c:315 calendar/gui/weekday-picker.c:410
-msgid "SMTWTFS"
-msgstr ""
-
-#: camel/camel-cipher-context.c:169
-msgid "Signing is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-cipher-context.c:207
-msgid "Clearsigning is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-cipher-context.c:245
-msgid "Verifying is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-cipher-context.c:286
-msgid "Encryption is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-cipher-context.c:326
-msgid "Decryption is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-filter-driver.c:534 camel/camel-filter-driver.c:543
-#, fuzzy
-msgid "Syncing folders"
-msgstr "Synchronising \"%s\""
-
-#: camel/camel-filter-driver.c:643
-msgid "Unable to open spool folder"
-msgstr ""
-
-#: camel/camel-filter-driver.c:652
-msgid "Unable to process spool folder"
-msgstr ""
-
-#: camel/camel-filter-driver.c:666
-msgid "Getting message %d (%d%%)"
-msgstr ""
-
-#: camel/camel-filter-driver.c:670 camel/camel-filter-driver.c:679
-#, c-format
-msgid "Failed message %d"
-msgstr ""
-
-#: camel/camel-filter-driver.c:671
-msgid "Cannot open message"
-msgstr ""
-
-#: camel/camel-filter-driver.c:690 camel/camel-filter-driver.c:788
-#, fuzzy
-msgid "Syncing folder"
-msgstr "Synchronising \"%s\""
-
-#: camel/camel-filter-driver.c:694 camel/camel-filter-driver.c:793
-msgid "Complete"
-msgstr ""
-
-#: camel/camel-filter-driver.c:748
-#, c-format
-msgid "Getting message %d of %d"
-msgstr ""
-
-#: camel/camel-filter-driver.c:753 camel/camel-filter-driver.c:771
-#, c-format
-msgid "Failed at message %d of %d"
-msgstr ""
-
-#: camel/camel-filter-driver.c:866
-#, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr ""
-
-#: camel/camel-filter-driver.c:871
-#, c-format
-msgid "Error executing filter: %s: %s"
-msgstr ""
-
-#: camel/camel-filter-search.c:439 camel/camel-filter-search.c:445
-#, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr ""
-
-#: camel/camel-folder-search.c:328
-#, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-folder-search.c:338
-#, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-folder-search.c:485 camel/camel-folder-search.c:513
-msgid "(match-all) requires a single bool result"
-msgstr ""
-
-#: camel/camel-folder-search.c:559
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr ""
-
-#: camel/camel-folder-search.c:670 camel/camel-folder-search.c:714
-msgid "Invalid type in body-contains, expecting string"
-msgstr ""
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:92 camel/camel-lock.c:111 camel/camel-movemail.c:138
-#: camel/camel-movemail.c:185
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr ""
-
-#: camel/camel-lock.c:151 camel/camel-movemail.c:219
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr ""
-
-#: camel/camel-lock.c:201
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr ""
-
-#: camel/camel-lock.c:255
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr ""
-
-#: camel/camel-movemail.c:101
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:148
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:158
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:199
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:245
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:256
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:274
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:306
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:318
-#, c-format
-msgid "Could not fork: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:356
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:357
-msgid "(Unknown error)"
-msgstr ""
-
-#: camel/camel-movemail.c:587
-#, c-format
-msgid "Error copying mail temp file: %s"
-msgstr ""
-
-#: camel/camel-pgp-context.c:186
-#, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr ""
-
-#: camel/camel-pgp-context.c:189
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr ""
-
-#: camel/camel-pgp-context.c:509
-msgid "No plaintext to sign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:516 camel/camel-pgp-context.c:688
-#: camel/camel-pgp-context.c:1021 camel/camel-pgp-context.c:1235
-msgid "No password provided."
-msgstr ""
-
-#: camel/camel-pgp-context.c:522 camel/camel-pgp-context.c:694
-#: camel/camel-pgp-context.c:877 camel/camel-pgp-context.c:1028
-#: camel/camel-pgp-context.c:1242
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr ""
-
-#: camel/camel-pgp-context.c:681
-msgid "No plaintext to clearsign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:871
-msgid "No plaintext to verify."
-msgstr ""
-
-#: camel/camel-pgp-context.c:888
-#, c-format
-msgid "Couldn't create temp file: %s"
-msgstr ""
-
-#: camel/camel-pgp-context.c:1011
-msgid "No plaintext to encrypt."
-msgstr ""
-
-#: camel/camel-pgp-context.c:1037
-msgid "No recipients specified"
-msgstr ""
-
-#: camel/camel-pgp-context.c:1227
-msgid "No ciphertext to decrypt."
-msgstr ""
-
-#: camel/camel-provider.c:131
-#, c-format
-msgid "Could not load %s: Module loading not supported on this system."
-msgstr ""
-
-#: camel/camel-provider.c:140
-#, c-format
-msgid "Could not load %s: %s"
-msgstr ""
-
-#: camel/camel-provider.c:148
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr ""
-
-#: camel/camel-remote-store.c:186
-#, c-format
-msgid "%s server %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:190
-#, c-format
-msgid "%s service for %s on %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:240
-msgid "Connection cancelled"
-msgstr ""
-
-#: camel/camel-remote-store.c:243
-#: camel/providers/smtp/camel-smtp-transport.c:261
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:244
-msgid "(unknown host)"
-msgstr ""
-
-#: camel/camel-remote-store.c:325 camel/camel-remote-store.c:387
-#: camel/camel-remote-store.c:458
-#: camel/providers/imap/camel-imap-command.c:264
-msgid "Operation cancelled"
-msgstr ""
-
-#: camel/camel-remote-store.c:464
-msgid "Server unexpectedly disconnected"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:33
-msgid "Anonymous"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:35
-msgid "This option will connect to the server using an anonymous login."
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:110 camel/camel-sasl-plain.c:87
-msgid "Authentication failed."
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:119
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:131
-#, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:143
-#, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-cram-md5.c:35
-msgid "CRAM-MD5"
-msgstr ""
-
-#: camel/camel-sasl-cram-md5.c:37
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:43
-msgid "DIGEST-MD5"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:45
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:810
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:819
-msgid "Server challenge invalid\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:825
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:847
-msgid "Server response did not contain authorization data\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:865
-msgid "Server response contained incomplete authorization data\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:875
-msgid "Server response does not match\n"
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "Kerberos 4"
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:42
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:161
-#, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:218
-#: camel/providers/imap/camel-imap-store.c:417
-msgid "Bad authentication response from server."
-msgstr ""
-
-#: camel/camel-sasl-plain.c:34
-msgid "This option will connect to the server using a simple password."
-msgstr ""
-
-#: camel/camel-search-private.c:110
-#, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr ""
-
-#: camel/camel-service.c:152
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr ""
-
-#: camel/camel-service.c:160
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr ""
-
-#: camel/camel-service.c:168
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr ""
-
-#: camel/camel-service.c:554
-#, c-format
-msgid "Resolving: %s"
-msgstr ""
-
-#: camel/camel-service.c:581
-#, c-format
-msgid "Failure in name lookup: %s"
-msgstr ""
-
-#: camel/camel-service.c:606
-#, c-format
-msgid "Host lookup failed: %s: host not found"
-msgstr ""
-
-#: camel/camel-service.c:608
-#, c-format
-msgid "Host lookup failed: %s: unknown reason"
-msgstr ""
-
-#: camel/camel-session.c:57
-msgid "Virtual folder email provider"
-msgstr ""
-
-#: camel/camel-session.c:59
-msgid "For reading mail as a query of another set of folders"
-msgstr ""
-
-#: camel/camel-session.c:274 camel/camel-session.c:364
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr ""
-
-#: camel/camel-session.c:462
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-
-#. Fill in the new fields
-#: camel/camel-store.c:380 mail/mail-ops.c:994 mail/mail-ops.c:1001
-#: mail/mail-ops.c:1019 mail/mail-ops.c:1020
-msgid "Trash"
-msgstr ""
-
-#: camel/camel-url.c:289
-#, c-format
-msgid "Could not parse URL `%s'"
-msgstr ""
-
-#: camel/camel-vee-folder.c:451
-#, c-format
-msgid "No such message %s in %s"
-msgstr ""
-
-#: camel/camel-vee-folder.c:545
-#, c-format
-msgid "No such message: %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:209
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:217
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:218 shell/e-storage.c:481
-msgid "Unknown error"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:272
-msgid "Server response ended too soon."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:456
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:490
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-folder.c:172
-#, c-format
-msgid "Could not load summary for %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-folder.c:351
-#, fuzzy
-msgid "Scanning IMAP folder"
-msgstr "Synchronising \"%s\""
-
-#: camel/providers/imap/camel-imap-folder.c:986
-#: camel/providers/imap/camel-imap-folder.c:1197
-msgid "This message is not currently available"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-folder.c:1016
-#: camel/providers/imap/camel-imap-folder.c:1231
-msgid "Could not find message body in FETCH response."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:43 mail/mail-config.glade.h:11
-msgid "Checking for new mail"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:45
-msgid "Check for new messages in all folders"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:48 shell/e-shell-view.c:484
-msgid "Folders"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:50
-msgid "Show only subscribed folders"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:52
-msgid "Override server-supplied folder namespace"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:54
-msgid "Namespace"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:57
-msgid "Apply filters to new messages in INBOX on this server"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:63
-msgid "IMAPv4"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:65
-msgid "For reading and storing mail on IMAP servers."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:82
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:440
-#, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:450
-#: camel/providers/smtp/camel-smtp-transport.c:358
-#, c-format
-msgid "No support for authentication type %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:475
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:490
-#: camel/providers/smtp/camel-smtp-transport.c:403
-msgid "You didn't enter a password."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:518
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:865
-#, c-format
-msgid "%s is not a selectable folder"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:879
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:1382
-msgid "You must be working online to complete this operation"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:39
-msgid "MH-format mail directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:40
-msgid "For storing local mail in MH-like mail directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:49
-msgid "Standard Unix mailbox file"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:50
-msgid "For storing local mail in standard mbox format"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "Qmail maildir-format mail files"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:60
-msgid "For storing local mail in qmail maildir directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:129
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:136
-#, c-format
-msgid "Store root %s is not a regular directory"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:144
-#: camel/providers/local/camel-local-store.c:160
-#, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:175
-msgid "Local stores do not have an inbox"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:185
-#, c-format
-msgid "Local mail file %s"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:241
-#, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:283
-#, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:293
-#, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-folder.c:150
-#: camel/providers/local/camel-maildir-folder.c:158
-#: camel/providers/local/camel-maildir-folder.c:169
-#, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-maildir-folder.c:209
-#: camel/providers/local/camel-maildir-folder.c:217
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#: camel/providers/local/camel-mh-folder.c:194
-#: camel/providers/local/camel-mh-folder.c:202
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-msgid "No such message"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-folder.c:218
-#: camel/providers/local/camel-mh-folder.c:203
-msgid "Invalid message contents"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:96
-#: camel/providers/local/camel-mh-store.c:90
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:100
-#: camel/providers/local/camel-mbox-store.c:101
-#: camel/providers/local/camel-mh-store.c:97
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:107
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:122
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:151
-#: camel/providers/local/camel-maildir-store.c:188
-#: camel/providers/local/camel-mh-store.c:127
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:152
-msgid "not a maildir directory"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:152
-#, c-format
-msgid "Cannot create folder lock on %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:203
-#, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:259
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:335
-#: camel/providers/local/camel-mbox-folder.c:367
-#: camel/providers/local/camel-mbox-folder.c:380
-#, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:368
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:381
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:94
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:110
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:119
-#: camel/providers/local/camel-mbox-store.c:146
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:138
-#: camel/providers/local/camel-mbox-store.c:161
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr ""
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:248
-#, fuzzy
-msgid "Summarising folder"
-msgstr "Synchronising \"%s\""
-
-#: camel/providers/local/camel-mbox-summary.c:253
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:295
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:370
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:501
-#: camel/providers/local/camel-mbox-summary.c:702 mail/mail-ops.c:1382
-#, fuzzy
-msgid "Synchronising folder"
-msgstr "Synchronising \"%s\""
-
-#: camel/providers/local/camel-mbox-summary.c:506
-#: camel/providers/local/camel-mbox-summary.c:707
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:523
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:548
-#: camel/providers/local/camel-mbox-summary.c:556
-#: camel/providers/local/camel-mbox-summary.c:745
-#: camel/providers/local/camel-mbox-summary.c:753
-msgid "Summary and folder mismatch, even after a sync"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:599
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:616
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:634
-#: camel/providers/local/camel-mbox-summary.c:803
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:643
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:654
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:878
-#, c-format
-msgid "Unknown error: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mh-folder.c:149
-#: camel/providers/local/camel-mh-folder.c:157
-#, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mh-store.c:110
-#, c-format
-msgid "`%s' is not a directory."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:45
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:66
-msgid "Server rejected username"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:72
-msgid "Failed to send username to server"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:81
-msgid "Server rejected username/password"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-provider.c:42
-msgid "USENET news"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-provider.c:44
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:226
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:288
-#, c-format
-msgid "USENET News via %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:295
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:327
-#: camel/providers/nntp/camel-nntp-store.c:490
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-msgid "Retrieving POP summary"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:192
-msgid "Could not open folder: message listing was incomplete."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:285
-#, c-format
-msgid "No message with uid %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:289
-#, c-format
-msgid "Retrieving POP message %d"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:307
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:37
-msgid "Message storage"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:39
-msgid "Leave messages on server"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:41
-#, c-format
-msgid "Delete after %s day(s)"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:48 mail/mail-config.glade.h:42
-msgid "POP"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:50
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:79
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:91
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:207
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:319
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:358
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:377
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:380
-#: camel/providers/pop3/camel-pop3-store.c:417
-msgid "(Unknown)"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:407
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:415
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:483
-#, c-format
-msgid "No such folder `%s'."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:37
-#: mail/mail-config.glade.h:57
-msgid "Sendmail"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:39
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:107
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:124
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:150
-#, c-format
-msgid "Could not send message: %s"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:163
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:170
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:175
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:194
-msgid "Could not find 'From' address in message"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "sendmail"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:249
-msgid "Mail delivery via the sendmail program"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-provider.c:38 mail/mail-config.glade.h:52
-msgid "SMTP"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-provider.c:40
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:165
-msgid "Syntax error, command unrecognized"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:167
-msgid "Syntax error in parameters or arguments"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:169
-msgid "Command not implemented"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:171
-msgid "Command parameter not implemented"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:173
-msgid "System status, or system help reply"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:175
-msgid "Help message"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:177
-msgid "Service ready"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:179
-msgid "Service closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:181
-msgid "Service not available, closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:183
-msgid "Requested mail action okay, completed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:185
-msgid "User not local; will forward to <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:187
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:189
-msgid "Requested action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:191
-msgid "Requested action aborted: error in processing"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:193
-msgid "User not local; please try <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:195
-msgid "Requested action not taken: insufficient system storage"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:197
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:199
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:201
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:203
-msgid "Transaction failed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:207
-msgid "A password transition is needed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:209
-msgid "Authentication mechanism is too weak"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:211
-msgid "Encryption required for requested authentication mechanism"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:213
-msgid "Temporary authentication failure"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:215
-msgid "Authentication required"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:305
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:348
-#, c-format
-msgid "SMTP server %s does not support requested authentication type %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:388
-#, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:411
-#, c-format
-msgid ""
-"Unable to authenticate to SMTP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:527
-#, c-format
-msgid "SMTP server %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:529
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:554
-msgid "Cannot send message: sender address not defined."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:561
-msgid "Cannot send message: sender address not valid."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:575
-msgid "Cannot send message: no recipients defined."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:669
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:688
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:721
-msgid "Error creating SASL authentication object."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:736
-#: camel/providers/smtp/camel-smtp-transport.c:748
-#, c-format
-msgid "AUTH request timed out: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:798
-msgid "Bad authentication response from server.\n"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:824
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:843
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:868
-#, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:887
-#, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:918
-#, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:937
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:952
-#: camel/providers/smtp/camel-smtp-transport.c:970
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:989
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1013
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1032
-#, c-format
-msgid "RSET response error: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1055
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1074
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:95
-msgid "1 byte"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:97
-#, c-format
-msgid "%u bytes"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fK"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:108
-#, c-format
-msgid "%.1fM"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:112
-#, c-format
-msgid "%.1fG"
-msgstr ""
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:332 mail/mail-display.c:120
-msgid "attachment"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:421
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:469
-msgid "Remove selected items from the attachment list"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:500
-msgid "Add attachment..."
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:501
-msgid "Attach a file to the message"
-msgstr ""
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/message-list.c:1052
-msgid "Attachment"
-msgstr ""
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr ""
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr ""
-
-#: composer/e-msg-composer-attachment.glade.h:5
-msgid "Inline attachment"
-msgstr ""
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr ""
-
-#: composer/e-msg-composer-attachment.glade.h:7
-msgid "Send as:"
-msgstr ""
-
-#: composer/e-msg-composer-hdrs.c:321
-msgid "Click here for the address book"
-msgstr ""
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:352 mail/mail-format.c:715
-msgid "From:"
-msgstr ""
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:358 mail/mail-format.c:717
-msgid "Reply-To:"
-msgstr ""
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:369 mail/mail-format.c:639
-msgid "Subject:"
-msgstr ""
-
-#: composer/e-msg-composer-hdrs.c:383 mail/mail-format.c:719
-msgid "To:"
-msgstr ""
-
-#: composer/e-msg-composer-hdrs.c:384
-msgid "Enter the recipients of the message"
-msgstr ""
-
-#: composer/e-msg-composer-hdrs.c:387 mail/mail-format.c:721
-msgid "Cc:"
-msgstr ""
-
-#: composer/e-msg-composer-hdrs.c:388
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr ""
-
-#: composer/e-msg-composer-hdrs.c:391
-msgid "Bcc:"
-msgstr ""
-
-#: composer/e-msg-composer-hdrs.c:392
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-
-#: composer/e-msg-composer.c:528
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-
-#: composer/e-msg-composer.c:716
-msgid "Save as..."
-msgstr ""
-
-#: composer/e-msg-composer.c:727
-#, c-format
-msgid "Error saving file: %s"
-msgstr ""
-
-#: composer/e-msg-composer.c:747
-#, c-format
-msgid "Error loading file: %s"
-msgstr ""
-
-#: composer/e-msg-composer.c:819
-msgid ""
-"Unable to open the drafts folder for this account.\n"
-"Would you like to use the default drafts folder?"
-msgstr ""
-
-#: composer/e-msg-composer.c:877 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:206
-msgid "Evolution"
-msgstr ""
-
-#: composer/e-msg-composer.c:883
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-
-#: composer/e-msg-composer.c:908
-msgid "Open file"
-msgstr ""
-
-#: composer/e-msg-composer.c:1034
-msgid "That file does not exist."
-msgstr ""
-
-#: composer/e-msg-composer.c:1044
-msgid "That is not a regular file."
-msgstr ""
-
-#: composer/e-msg-composer.c:1054
-msgid "That file exists but is not readable."
-msgstr ""
-
-#: composer/e-msg-composer.c:1064
-msgid "That file appeared accesible but open(2) failed."
-msgstr ""
-
-#: composer/e-msg-composer.c:1086
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-
-#: composer/e-msg-composer.c:1107
-msgid "An error occurred while reading the file."
-msgstr ""
-
-#: composer/e-msg-composer.c:1408 composer/e-msg-composer.c:1740
-msgid "Compose a message"
-msgstr ""
-
-#: composer/e-msg-composer.c:1829
-msgid "Could not create composer window."
-msgstr ""
-
-#: composer/evolution-composer.c:355
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-
-#: composer/evolution-composer.c:370
-#, fuzzy
-msgid "Cannot initialize Evolution's composer."
-msgstr "Cannot initialise Evolution's mail component."
-
-#: data/evolution.desktop.in.h:2
-msgid "The Evolution groupware suite"
-msgstr ""
-
-#: data/evolution.keys.in.h:1
-msgid "address card"
-msgstr ""
-
-#: data/evolution.keys.in.h:2
-msgid "calendar information"
-msgstr ""
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:69 e-util/e-time-utils.c:117
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:477
-#: widgets/misc/e-dateedit.c:1282 widgets/misc/e-dateedit.c:1463
-msgid "%m/%d/%Y"
-msgstr ""
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:87 e-util/e-time-utils.c:198
-msgid "%I:%M:%S %p%n"
-msgstr ""
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:90 e-util/e-time-utils.c:201
-msgid "%H:%M:%S%n"
-msgstr ""
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:94 e-util/e-time-utils.c:205
-msgid "%I:%M %p%n"
-msgstr ""
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:97 e-util/e-time-utils.c:208
-msgid "%H:%M%n"
-msgstr ""
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:269
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:473
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2503
-msgid "%a %m/%d/%Y"
-msgstr ""
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:274
-msgid "%a %m/%d/%Y %H:%M"
-msgstr ""
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:283
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr ""
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:312 widgets/misc/e-dateedit.c:1257
-#: widgets/misc/e-dateedit.c:1316 widgets/misc/e-dateedit.c:1495
-msgid "%H:%M"
-msgstr ""
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:315
-msgid "%H:%M:%S"
-msgstr ""
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:320 widgets/misc/e-dateedit.c:1260
-#: widgets/misc/e-dateedit.c:1319 widgets/misc/e-dateedit.c:1498
-msgid "%I:%M %p"
-msgstr ""
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:323
-msgid "%I:%M:%S %p"
-msgstr ""
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-#, fuzzy
-msgid "Evolution component for the executive summary."
-msgstr "Cannot initialise Evolution's mail summary component."
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-#, fuzzy
-msgid "Factory for the Evolution executive summary component."
-msgstr "Cannot initialise Evolution's mail component."
-
-#: executive-summary/component/component-factory.c:152
-#, fuzzy
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr "Cannot initialise Evolution's mail component."
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:71
-#, c-format
-msgid "Send an email to %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:75
-#, fuzzy, c-format
-msgid "Close %s"
-msgstr "Colours"
-
-#: executive-summary/component/e-summary-url.c:76
-#, c-format
-msgid "Move %s to the left"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:78
-#, c-format
-msgid "Move %s into the previous row"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:79
-#, c-format
-msgid "Move %s into the next row"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:80
-#, c-format
-msgid "Configure %s"
-msgstr ""
-
-#: executive-summary/component/e-summary.c:924
-#, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-
-#: executive-summary/component/e-summary.c:938
-#, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr ""
-
-#: executive-summary/component/e-summary.c:956
-msgid "File does not have a place for the services.\n"
-msgstr ""
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr ""
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr ""
-
-#: executive-summary/component/main.c:62
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-msgid "RDF Summary"
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-#, fuzzy
-msgid "Factory for the test bonobo component."
-msgstr "Cannot initialise Evolution's mail component."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-#, fuzzy
-msgid "Factory for the test component."
-msgstr "Cannot initialise Evolution's mail component."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:512
-#: executive-summary/test-service/rdf-summary.c:549
-#: executive-summary/test-service/rdf-summary.c:594
-#: widgets/misc/e-messagebox.c:166
-msgid "Error"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:768
-msgid "Update automatically"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:778
-msgid "Update now"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:788
-msgid "Update every "
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:796
-#: filter/filter-datespec.c:83
-msgid "minutes"
-msgstr ""
-
-#: filter/filter-datespec.c:78
-msgid "year"
-msgstr ""
-
-#: filter/filter-datespec.c:78
-msgid "years"
-msgstr ""
-
-#: filter/filter-datespec.c:79
-msgid "month"
-msgstr ""
-
-#: filter/filter-datespec.c:79
-msgid "months"
-msgstr ""
-
-#: filter/filter-datespec.c:80
-msgid "week"
-msgstr ""
-
-#: filter/filter-datespec.c:80
-msgid "weeks"
-msgstr ""
-
-#: filter/filter-datespec.c:81
-msgid "days"
-msgstr ""
-
-#: filter/filter-datespec.c:82
-msgid "hour"
-msgstr ""
-
-#: filter/filter-datespec.c:82
-msgid "hours"
-msgstr ""
-
-#: filter/filter-datespec.c:83
-msgid "minute"
-msgstr ""
-
-#: filter/filter-datespec.c:84
-msgid "second"
-msgstr ""
-
-#: filter/filter-datespec.c:84
-msgid "seconds"
-msgstr ""
-
-#: filter/filter-datespec.c:199
-msgid "Oops. You have forgotten to choose a date."
-msgstr ""
-
-#: filter/filter-datespec.c:201
-msgid "Oops. You have chosen an invalid date."
-msgstr ""
-
-#: filter/filter-datespec.c:275
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-
-#: filter/filter-datespec.c:298
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-
-#: filter/filter-datespec.c:338
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:373
-msgid "the current time"
-msgstr ""
-
-#: filter/filter-datespec.c:373
-msgid "a time you specify"
-msgstr ""
-
-#: filter/filter-datespec.c:374
-msgid "a time relative to the current time"
-msgstr ""
-
-#. The label
-#: filter/filter-datespec.c:432
-msgid "Compare against"
-msgstr ""
-
-#: filter/filter-datespec.c:549 filter/filter-datespec.c:709
-msgid "now"
-msgstr ""
-
-#: filter/filter-datespec.c:706
-msgid "<click here to select a date>"
-msgstr ""
-
-#: filter/filter-editor.c:132 filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr ""
-
-#. and now for the action area
-#: filter/filter-filter.c:453
-msgid "Then"
-msgstr ""
-
-#: filter/filter-filter.c:467
-msgid "Add action"
-msgstr ""
-
-#: filter/filter-folder.c:147
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-
-#: filter/filter-folder.c:222 filter/vfolder-rule.c:285
-#: mail/mail-account-gui.c:682
-msgid "Select Folder"
-msgstr ""
-
-#: filter/filter-folder.c:247
-msgid "Enter folder URI"
-msgstr ""
-
-#: filter/filter-folder.c:293
-msgid "<click here to select a folder>"
-msgstr ""
-
-#: filter/filter-input.c:194
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-
-#: filter/filter-part.c:475
-msgid "Test"
-msgstr ""
-
-#: filter/filter-rule.c:626
-msgid "Rule name: "
-msgstr ""
-
-#: filter/filter-rule.c:630
-msgid "Untitled"
-msgstr ""
-
-#: filter/filter-rule.c:646
-msgid "If"
-msgstr ""
-
-#: filter/filter-rule.c:664
-msgid "Execute actions"
-msgstr ""
-
-#: filter/filter-rule.c:668
-msgid "if all criteria are met"
-msgstr ""
-
-#: filter/filter-rule.c:673
-msgid "if any criteria are met"
-msgstr ""
-
-#: filter/filter-rule.c:684
-msgid "Add criterion"
-msgstr ""
-
-#: filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr ""
-
-#: filter/filter.glade.h:5
-msgid "Edit VFolders"
-msgstr ""
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr ""
-
-#: filter/filter.glade.h:8
-msgid "Outgoing"
-msgstr ""
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:130
-msgid "Virtual Folders"
-msgstr ""
-
-#: filter/filter.glade.h:11
-msgid "specific folders only"
-msgstr ""
-
-#: filter/filter.glade.h:12
-msgid "vFolder Sources"
-msgstr ""
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr ""
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr ""
-
-#: filter/filter.glade.h:15
-msgid "with all local folders"
-msgstr ""
-
-#. Automatically generated. Do not edit.
-#: filter/libfilter-i18n.h:2
-msgid "Assign Colour"
-msgstr ""
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Score"
-msgstr ""
-
-#: filter/libfilter-i18n.h:4
-msgid "Attachments"
-msgstr ""
-
-#: filter/libfilter-i18n.h:5
-msgid "Copy to Folder"
-msgstr ""
-
-#: filter/libfilter-i18n.h:6
-msgid "Date received"
-msgstr ""
-
-#: filter/libfilter-i18n.h:7
-msgid "Date sent"
-msgstr ""
-
-#: filter/libfilter-i18n.h:9
-msgid "Deleted"
-msgstr ""
-
-#: filter/libfilter-i18n.h:10
-msgid "Do Not Exist"
-msgstr ""
-
-#: filter/libfilter-i18n.h:11
-msgid "Draft"
-msgstr ""
-
-#: filter/libfilter-i18n.h:12
-msgid "Exist"
-msgstr ""
-
-#: filter/libfilter-i18n.h:13
-msgid "Expression"
-msgstr ""
-
-#: filter/libfilter-i18n.h:14
-msgid "Forward to Address"
-msgstr ""
-
-#: filter/libfilter-i18n.h:15
-msgid "Important"
-msgstr ""
-
-#: filter/libfilter-i18n.h:16
-msgid "Is Not"
-msgstr ""
-
-#: filter/libfilter-i18n.h:17
-msgid "Is"
-msgstr ""
-
-#: filter/libfilter-i18n.h:18
-msgid "Mailing list"
-msgstr ""
-
-#: filter/libfilter-i18n.h:19
-msgid "Message Body"
-msgstr ""
-
-#: filter/libfilter-i18n.h:20
-msgid "Message Header"
-msgstr ""
-
-#: filter/libfilter-i18n.h:21
-msgid "Message was received"
-msgstr ""
-
-#: filter/libfilter-i18n.h:22
-msgid "Message was sent"
-msgstr ""
-
-#: filter/libfilter-i18n.h:23
-msgid "Move to Folder"
-msgstr ""
-
-#: filter/libfilter-i18n.h:24
-msgid "Read"
-msgstr ""
-
-#: filter/libfilter-i18n.h:25
-msgid "Recipients"
-msgstr ""
-
-#: filter/libfilter-i18n.h:26
-msgid "Regex Match"
-msgstr ""
-
-#: filter/libfilter-i18n.h:27
-msgid "Replied to"
-msgstr ""
-
-#: filter/libfilter-i18n.h:28 filter/score-rule.c:203 filter/score-rule.c:205
-#: mail/message-list.c:1052
-msgid "Score"
-msgstr ""
-
-#: filter/libfilter-i18n.h:29
-msgid "Sender"
-msgstr ""
-
-#: filter/libfilter-i18n.h:30
-msgid "Set Status"
-msgstr ""
-
-#: filter/libfilter-i18n.h:31
-msgid "Source Account"
-msgstr ""
-
-#: filter/libfilter-i18n.h:32
-msgid "Specific header"
-msgstr ""
-
-#: filter/libfilter-i18n.h:34
-msgid "Stop Processing"
-msgstr ""
-
-#: filter/libfilter-i18n.h:35 mail/message-list.c:1053
-msgid "Subject"
-msgstr ""
-
-#: filter/libfilter-i18n.h:38
-msgid "contains"
-msgstr ""
-
-#: filter/libfilter-i18n.h:39
-msgid "does not contain"
-msgstr ""
-
-#: filter/libfilter-i18n.h:40
-msgid "does not end with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:41
-msgid "does not exist"
-msgstr ""
-
-#: filter/libfilter-i18n.h:42
-msgid "does not sound like"
-msgstr ""
-
-#: filter/libfilter-i18n.h:43
-msgid "does not start with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:44
-msgid "ends with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:45
-msgid "exists"
-msgstr ""
-
-#: filter/libfilter-i18n.h:46
-msgid "is greater than"
-msgstr ""
-
-#: filter/libfilter-i18n.h:47
-msgid "is less than"
-msgstr ""
-
-#: filter/libfilter-i18n.h:48
-msgid "is not"
-msgstr ""
-
-#: filter/libfilter-i18n.h:49
-msgid "is"
-msgstr ""
-
-#: filter/libfilter-i18n.h:50
-msgid "on or after"
-msgstr ""
-
-#: filter/libfilter-i18n.h:51
-msgid "on or before"
-msgstr ""
-
-#: filter/libfilter-i18n.h:52
-msgid "sounds like"
-msgstr ""
-
-#: filter/libfilter-i18n.h:53
-msgid "starts with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:54
-msgid "was after"
-msgstr ""
-
-#: filter/libfilter-i18n.h:55
-msgid "was before"
-msgstr ""
-
-#: filter/score-editor.c:130
-msgid "Score Rules"
-msgstr ""
-
-#: mail/component-factory.c:329
-msgid "Cannot initialize Evolution's mail component."
-msgstr "Cannot initialise Evolution's mail component."
-
-#: mail/component-factory.c:402
-msgid "Cannot register storage with shell"
-msgstr ""
-
-#: mail/folder-browser-factory.c:209
-#, c-format
-msgid "Properties for \"%s\""
-msgstr ""
-
-#: mail/folder-browser-factory.c:211 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-msgid "Properties"
-msgstr ""
-
-#: mail/folder-browser.c:225
-msgid "Store search as vFolder"
-msgstr ""
-
-#: mail/folder-browser.c:533
-msgid "VFolder on Subject"
-msgstr ""
-
-#: mail/folder-browser.c:536
-msgid "VFolder on Sender"
-msgstr ""
-
-#: mail/folder-browser.c:539
-msgid "VFolder on Recipients"
-msgstr ""
-
-#: mail/folder-browser.c:542 mail/folder-browser.c:733
-msgid "VFolder on Mailing List"
-msgstr ""
-
-#: mail/folder-browser.c:548
-msgid "Filter on Subject"
-msgstr ""
-
-#: mail/folder-browser.c:551
-msgid "Filter on Sender"
-msgstr ""
-
-#: mail/folder-browser.c:554
-msgid "Filter on Recipients"
-msgstr ""
-
-#: mail/folder-browser.c:557 mail/folder-browser.c:732
-msgid "Filter on Mailing List"
-msgstr ""
-
-#: mail/folder-browser.c:568
-msgid "Resend"
-msgstr ""
-
-#: mail/folder-browser.c:570
-msgid "Save As..."
-msgstr ""
-
-#: mail/folder-browser.c:577
-msgid "Reply to Sender"
-msgstr ""
-
-#: mail/folder-browser.c:579 mail/mail-view.c:147 ui/evolution-mail.xml.h:60
-msgid "Reply to All"
-msgstr ""
-
-#: mail/folder-browser.c:581 mail/mail-view.c:150 ui/evolution-mail.xml.h:24
-msgid "Forward"
-msgstr ""
-
-#: mail/folder-browser.c:583 ui/evolution-mail.xml.h:26
-msgid "Forward inline"
-msgstr ""
-
-#: mail/folder-browser.c:586
-msgid "Mark as Read"
-msgstr ""
-
-#: mail/folder-browser.c:588
-msgid "Mark as Unread"
-msgstr ""
-
-#: mail/folder-browser.c:593
-msgid "Move to Folder..."
-msgstr ""
-
-#: mail/folder-browser.c:595
-msgid "Copy to Folder..."
-msgstr ""
-
-#: mail/folder-browser.c:599 ui/evolution-mail.xml.h:81
-msgid "Undelete"
-msgstr ""
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:609 ui/evolution-mail.xml.h:1
-msgid "Apply Filters"
-msgstr ""
-
-#: mail/folder-browser.c:613
-msgid "Create Rule From Message"
-msgstr ""
-
-#: mail/folder-browser.c:735
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr ""
-
-#: mail/folder-browser.c:736
-#, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-#, fuzzy
-msgid "Evolution mail composer."
-msgstr "Cannot initialise Evolution's mail component."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-#, fuzzy
-msgid "Evolution mail executive summary component."
-msgstr "Cannot initialise Evolution's mail summary component."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-#, fuzzy
-msgid "Evolution mail folder display component."
-msgstr "Cannot initialise Evolution's mail summary component."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-#, fuzzy
-msgid "Evolution mail folder factory component."
-msgstr "Cannot initialise Evolution's mail summary component."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-#, fuzzy
-msgid "Factory for the Evolution composer."
-msgstr "Cannot initialise Evolution's mail component."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-#, fuzzy
-msgid "Factory for the Evolution mail component."
-msgstr "Cannot initialise Evolution's mail component."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-#, fuzzy
-msgid "Factory for the Mail Summary component."
-msgstr "Cannot initialise Evolution's mail component."
-
-#: mail/local-config.glade.h:1
-msgid "Current store format:"
-msgstr ""
-
-#: mail/local-config.glade.h:2
-msgid "Mailbox Format"
-msgstr ""
-
-#: mail/local-config.glade.h:3
-msgid "New store format:"
-msgstr ""
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-
-#: mail/local-config.glade.h:7
-msgid "maildir"
-msgstr ""
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr ""
-
-#: mail/local-config.glade.h:9
-msgid "mh"
-msgstr ""
-
-#: mail/mail-accounts.c:121 mail/mail-accounts.c:165
-msgid " (default)"
-msgstr ""
-
-#: mail/mail-accounts.c:197
-msgid "Disable"
-msgstr ""
-
-#: mail/mail-accounts.c:199 mail/mail-config.glade.h:25
-msgid "Enable"
-msgstr ""
-
-#: mail/mail-accounts.c:280 mail/mail-accounts.c:284
-msgid "Are you sure you want to delete this account?"
-msgstr ""
-
-#: mail/mail-accounts.c:418 mail/mail-accounts.c:422
-msgid "Are you sure you want to delete this news account?"
-msgstr ""
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:536
-msgid "Evolution Account Manager"
-msgstr ""
-
-#: mail/mail-account-editor.c:105
-msgid "You have not filled in all of the required information."
-msgstr ""
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:173
-msgid "Evolution Account Editor"
-msgstr ""
-
-#: mail/mail-autofilter.c:70
-#, c-format
-msgid "Mail to %s"
-msgstr ""
-
-#: mail/mail-autofilter.c:213
-#, c-format
-msgid "Subject is %s"
-msgstr ""
-
-#: mail/mail-autofilter.c:229
-#, c-format
-msgid "Mail from %s"
-msgstr ""
-
-#: mail/mail-autofilter.c:285
-#, c-format
-msgid "%s mailing list"
-msgstr ""
-
-#: mail/mail-autofilter.c:335 mail/mail-autofilter.c:357
-msgid "Add Filter Rule"
-msgstr ""
-
-#: mail/mail-callbacks.c:93
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-
-#: mail/mail-callbacks.c:146
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-
-#: mail/mail-callbacks.c:158
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-
-#: mail/mail-callbacks.c:202
-msgid "You have not set a mail transport method"
-msgstr ""
-
-#: mail/mail-callbacks.c:235
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-
-#: mail/mail-callbacks.c:308
-msgid "You must specify recipients in order to send this message."
-msgstr ""
-
-#: mail/mail-callbacks.c:351
-msgid "You must configure an account before you can send this email."
-msgstr ""
-
-#: mail/mail-callbacks.c:591
-#, c-format
-msgid "On %s, %s wrote:\n"
-msgstr ""
-
-#: mail/mail-callbacks.c:773
-msgid "Forwarded message:\n"
-msgstr ""
-
-#: mail/mail-callbacks.c:876
-msgid "Move message(s) to"
-msgstr ""
-
-#: mail/mail-callbacks.c:878
-msgid "Copy message(s) to"
-msgstr ""
-
-#: mail/mail-callbacks.c:1019
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-
-#: mail/mail-callbacks.c:1056
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-
-#: mail/mail-callbacks.c:1089 mail/mail-display.c:90
-msgid "Overwrite file?"
-msgstr ""
-
-#: mail/mail-callbacks.c:1093 mail/mail-display.c:94
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-
-#: mail/mail-callbacks.c:1137
-msgid "Save Message As..."
-msgstr ""
-
-#: mail/mail-callbacks.c:1139
-msgid "Save Messages As..."
-msgstr ""
-
-#: mail/mail-callbacks.c:1253
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-
-#: mail/mail-callbacks.c:1302 ui/evolution-mail.xml.h:51
-msgid "Print Message"
-msgstr ""
-
-#: mail/mail-callbacks.c:1349
-msgid "Printing of message failed"
-msgstr ""
-
-#: mail/mail-config.c:1043 mail/mail-config.c:1046
-msgid "Connecting to server..."
-msgstr ""
-
-#: mail/mail-config.glade.h:1
-msgid " Check for supported types "
-msgstr ""
-
-#: mail/mail-config.glade.h:2
-#, fuzzy
-msgid " color"
-msgstr "Colours"
-
-#: mail/mail-config.glade.h:3
-msgid "Account"
-msgstr ""
-
-#: mail/mail-config.glade.h:4
-msgid "Account Information"
-msgstr ""
-
-#: mail/mail-config.glade.h:5
-msgid "Account Management"
-msgstr ""
-
-#: mail/mail-config.glade.h:6
-msgid "Accounts"
-msgstr ""
-
-#: mail/mail-config.glade.h:8
-msgid "Authentication"
-msgstr ""
-
-#: mail/mail-config.glade.h:9
-msgid "Authentication Type: "
-msgstr ""
-
-#: mail/mail-config.glade.h:10
-msgid "Automatically check for new mail every"
-msgstr ""
-
-#: mail/mail-config.glade.h:12
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-
-#: mail/mail-config.glade.h:18
-msgid "De_fault"
-msgstr ""
-
-#: mail/mail-config.glade.h:20
-msgid "Done"
-msgstr ""
-
-#: mail/mail-config.glade.h:21
-msgid "Drafts"
-msgstr ""
-
-#: mail/mail-config.glade.h:22
-msgid "Drafts folder:"
-msgstr ""
-
-#: mail/mail-config.glade.h:24
-msgid "Email Address:"
-msgstr ""
-
-#: mail/mail-config.glade.h:26
-msgid "Full Name:"
-msgstr ""
-
-#: mail/mail-config.glade.h:27
-msgid "Highlight citations with "
-msgstr ""
-
-#: mail/mail-config.glade.h:29
-msgid "IMAPv4 "
-msgstr ""
-
-#: mail/mail-config.glade.h:30
-msgid "Identity"
-msgstr ""
-
-#: mail/mail-config.glade.h:31
-msgid "Kerberos "
-msgstr ""
-
-#: mail/mail-config.glade.h:32
-msgid "Mail Configuration"
-msgstr ""
-
-#: mail/mail-config.glade.h:33
-msgid "Make this my default account"
-msgstr ""
-
-#: mail/mail-config.glade.h:34
-msgid "Mark messages as \"Read\" after:"
-msgstr ""
-
-#: mail/mail-config.glade.h:36
-msgid "News"
-msgstr ""
-
-#: mail/mail-config.glade.h:38
-msgid "Optional Information"
-msgstr ""
-
-#: mail/mail-config.glade.h:39
-msgid "Organization:"
-msgstr "Organisation:"
-
-#: mail/mail-config.glade.h:41
-msgid "PGP binary path:"
-msgstr ""
-
-#: mail/mail-config.glade.h:46
-msgid "Qmail maildir "
-msgstr ""
-
-#: mail/mail-config.glade.h:47
-msgid "Receiving Email"
-msgstr ""
-
-#: mail/mail-config.glade.h:48
-msgid "Receiving Mail"
-msgstr ""
-
-#: mail/mail-config.glade.h:49
-msgid "Receiving Options"
-msgstr ""
-
-#: mail/mail-config.glade.h:51
-msgid "Required Information"
-msgstr ""
-
-#: mail/mail-config.glade.h:53
-msgid "Select PGP binary"
-msgstr ""
-
-#: mail/mail-config.glade.h:54
-msgid "Send mail in HTML format by default."
-msgstr ""
-
-#: mail/mail-config.glade.h:55
-msgid "Sending Email"
-msgstr ""
-
-#: mail/mail-config.glade.h:56
-msgid "Sending Mail"
-msgstr ""
-
-#: mail/mail-config.glade.h:58
-msgid "Sent"
-msgstr ""
-
-#: mail/mail-config.glade.h:59
-msgid "Sent and Draft Messages"
-msgstr ""
-
-#: mail/mail-config.glade.h:60
-msgid "Sent messages folder:"
-msgstr ""
-
-#: mail/mail-config.glade.h:61
-msgid "Server Configuration"
-msgstr ""
-
-#: mail/mail-config.glade.h:62
-msgid "Server Type: "
-msgstr ""
-
-#: mail/mail-config.glade.h:63
-msgid "Server requires authentication"
-msgstr ""
-
-#: mail/mail-config.glade.h:64
-msgid "Signature file:"
-msgstr ""
-
-#: mail/mail-config.glade.h:65
-msgid "Sources"
-msgstr ""
-
-#: mail/mail-config.glade.h:66
-msgid "Special Folders"
-msgstr ""
-
-#: mail/mail-config.glade.h:67
-msgid "Standard Unix mbox"
-msgstr ""
-
-#: mail/mail-config.glade.h:68
-msgid "Type"
-msgstr ""
-
-#: mail/mail-config.glade.h:69
-msgid "Use secure connection (SSL)"
-msgstr ""
-
-#: mail/mail-config.glade.h:70
-msgid "Username:"
-msgstr ""
-
-#: mail/mail-config.glade.h:71
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-
-#: mail/mail-config.glade.h:76 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:43 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:29
-msgid "_Edit"
-msgstr ""
-
-#: mail/mail-config-druid.c:99
-msgid ""
-"Please enter your name and email address below. The \"optional\" fields "
-"below do not need to be filled in, unless you wish to include this "
-"information in email you send."
-msgstr ""
-
-#: mail/mail-config-druid.c:101
-msgid ""
-"Please enter information about your incoming mail server below. If you don't "
-"know what kind of server you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-
-#: mail/mail-config-druid.c:105
-msgid ""
-"Please enter information about your outgoing mail protocol below. If you "
-"don't know which protocol you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-
-#: mail/mail-config-druid.c:107
-msgid ""
-"You are almost done with the mail configuration process. The identity, "
-"incoming mail server and outgoing mail transport method which you provided "
-"will be grouped together to make an Evolution mail account. Please enter a "
-"name for this account in the space below. This name will be used for display "
-"purposes only."
-msgstr ""
-
-#. set window title
-#: mail/mail-config-druid.c:445
-msgid "Evolution Account Wizard"
-msgstr ""
-
-#: mail/mail-display.c:194
-msgid "Save Attachment"
-msgstr ""
-
-#: mail/mail-display.c:234
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr ""
-
-#: mail/mail-display.c:295
-msgid "Save to Disk..."
-msgstr ""
-
-#: mail/mail-display.c:297
-#, c-format
-msgid "Open in %s..."
-msgstr ""
-
-#: mail/mail-display.c:299
-msgid "View Inline"
-msgstr ""
-
-#: mail/mail-display.c:334
-msgid "External Viewer"
-msgstr ""
-
-#: mail/mail-display.c:357
-#, c-format
-msgid "View Inline (via %s)"
-msgstr ""
-
-#: mail/mail-display.c:361
-msgid "Hide"
-msgstr ""
-
-#: mail/mail-display.c:1102
-msgid "Open link in browser"
-msgstr ""
-
-#: mail/mail-display.c:1104
-msgid "Save as (FIXME)"
-msgstr ""
-
-#: mail/mail-display.c:1106
-msgid "Copy location (FIXME)"
-msgstr ""
-
-#: mail/mail-format.c:518
-#, c-format
-msgid "%s attachment"
-msgstr ""
-
-#: mail/mail-format.c:560
-msgid "Could not parse MIME message. Displaying as source."
-msgstr ""
-
-#: mail/mail-format.c:742
-msgid "Loading message content"
-msgstr ""
-
-#: mail/mail-format.c:1046
-msgid "Encrypted message not displayed"
-msgstr ""
-
-#: mail/mail-format.c:1052
-msgid "Encrypted message"
-msgstr ""
-
-#: mail/mail-format.c:1053
-msgid "Click icon to decrypt."
-msgstr ""
-
-#: mail/mail-format.c:1137 mail/mail-format.c:1526
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr ""
-
-#: mail/mail-format.c:1145 mail/mail-format.c:1534
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr ""
-
-#: mail/mail-format.c:1747
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr ""
-
-#: mail/mail-format.c:1759
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr ""
-
-#: mail/mail-format.c:1763
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr ""
-
-#: mail/mail-format.c:1797
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr ""
-
-#: mail/mail-format.c:1802
-msgid "Malformed external-body part."
-msgstr ""
-
-#: mail/mail-local.c:337
-#, c-format
-msgid "No such folder %s"
-msgstr ""
-
-#: mail/mail-local.c:509
-#, c-format
-msgid "Opening '%s'"
-msgstr ""
-
-#: mail/mail-local.c:787
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr ""
-
-#: mail/mail-local.c:791
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr ""
-
-#: mail/mail-local.c:815
-msgid "Reconfiguring folder"
-msgstr ""
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:844
-msgid "Closing current folder"
-msgstr ""
-
-#: mail/mail-local.c:876
-msgid "Renaming old folder and opening"
-msgstr ""
-
-#: mail/mail-local.c:894
-msgid "Creating new folder"
-msgstr ""
-
-#: mail/mail-local.c:908
-msgid "Copying messages"
-msgstr ""
-
-#: mail/mail-local.c:925
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-
-#: mail/mail-local.c:964
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-
-#: mail/mail-mt.c:190
-#, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-
-#: mail/mail-mt.c:192
-#, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-
-#: mail/mail-mt.c:515 mail/mail-mt.c:544 mail/mail-mt.c:891
-msgid "Working"
-msgstr ""
-
-#: mail/mail-mt.c:679 mail/session.c:98
-msgid "Do you accept?"
-msgstr ""
-
-#: mail/mail-mt.c:873
-msgid "Evolution progress"
-msgstr ""
-
-#: mail/mail-ops.c:587
-#, c-format
-msgid "Sending \"%s\""
-msgstr ""
-
-#: mail/mail-ops.c:589
-msgid "Sending message"
-msgstr ""
-
-#: mail/mail-ops.c:704
-#, c-format
-msgid "Sending message %d of %d"
-msgstr ""
-
-#: mail/mail-ops.c:723
-#, c-format
-msgid "Failed on message %d of %d"
-msgstr ""
-
-#: mail/mail-ops.c:725 mail/mail-send-recv.c:475
-msgid "Complete."
-msgstr ""
-
-#: mail/mail-ops.c:811
-msgid "Saving message to folder"
-msgstr ""
-
-#: mail/mail-ops.c:884
-#, c-format
-msgid "Moving messages to %s"
-msgstr ""
-
-#: mail/mail-ops.c:884
-#, c-format
-msgid "Copying messages to %s"
-msgstr ""
-
-#: mail/mail-ops.c:900
-msgid "Moving"
-msgstr ""
-
-#: mail/mail-ops.c:903
-msgid "Copying"
-msgstr ""
-
-#: mail/mail-ops.c:978
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr ""
-
-#: mail/mail-ops.c:1139
-msgid "Forwarded messages"
-msgstr ""
-
-#: mail/mail-ops.c:1180 mail/mail-ops.c:1318
-#, c-format
-msgid "Opening folder %s"
-msgstr ""
-
-#: mail/mail-ops.c:1247
-#, c-format
-msgid "Opening store %s"
-msgstr ""
-
-#: mail/mail-ops.c:1434
-msgid "Expunging folder"
-msgstr ""
-
-#: mail/mail-ops.c:1483
-#, c-format
-msgid "Retrieving message %s"
-msgstr ""
-
-#: mail/mail-ops.c:1550
-msgid "Retrieving messages"
-msgstr ""
-
-#: mail/mail-ops.c:1560
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr ""
-
-#: mail/mail-ops.c:1634
-msgid "Saving messages"
-msgstr ""
-
-#: mail/mail-ops.c:1713
-#, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr ""
-
-#: mail/mail-ops.c:1726
-#, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr ""
-
-#: mail/mail-ops.c:1740
-#, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr ""
-
-#: mail/mail-ops.c:1814
-msgid "Saving attachment"
-msgstr ""
-
-#: mail/mail-ops.c:1829
-#, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr ""
-
-#: mail/mail-ops.c:1857
-#, c-format
-msgid "Could not write data: %s"
-msgstr ""
-
-#: mail/mail-search-dialogue.c:113
-msgid "_Search"
-msgstr ""
-
-#: mail/mail-send-recv.c:138
-msgid "Cancelling ..."
-msgstr ""
-
-#: mail/mail-send-recv.c:233
-msgid "Send & Receive mail"
-msgstr ""
-
-#: mail/mail-send-recv.c:236
-msgid "Receiving"
-msgstr ""
-
-#: mail/mail-send-recv.c:285
-msgid "Updating ..."
-msgstr ""
-
-#: mail/mail-send-recv.c:287 mail/mail-send-recv.c:333
-msgid "Waiting ..."
-msgstr ""
-
-#: mail/mail-send-recv.c:306
-msgid "Sending"
-msgstr ""
-
-#: mail/mail-send-recv.c:471
-msgid "Cancelled."
-msgstr ""
-
-#: mail/mail-summary.c:109
-msgid "Incomplete message written on pipe!"
-msgstr ""
-
-#: mail/mail-tools.c:141
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr ""
-
-#: mail/mail-tools.c:188
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr ""
-
-#: mail/mail-tools.c:198
-msgid "Fwd: (no subject)"
-msgstr ""
-
-#: mail/mail-tools.c:215
-#, c-format
-msgid "Forwarded message - %s"
-msgstr ""
-
-#: mail/mail-tools.c:217
-msgid "Forwarded message (no subject)"
-msgstr ""
-
-#: mail/mail-tools.c:414
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-msgstr ""
-
-#: mail/mail-vfolder.c:249
-msgid "VFolders"
-msgstr ""
-
-#: mail/mail-vfolder.c:427
-msgid "New VFolder"
-msgstr ""
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/mail-view.c:144 ui/evolution-mail.xml.h:59
-msgid "Reply"
-msgstr ""
-
-#: mail/mail-view.c:144 ui/evolution-mail.xml.h:65
-msgid "Reply to the sender of this message"
-msgstr ""
-
-#: mail/mail-view.c:147 ui/evolution-mail.xml.h:63
-msgid "Reply to all recipients of this message"
-msgstr ""
-
-#: mail/mail-view.c:150 ui/evolution-mail.xml.h:28
-msgid "Forward this message"
-msgstr ""
-
-#: mail/mail-view.c:154 ui/evolution-mail.xml.h:56
-msgid "Print the selected message"
-msgstr ""
-
-#: mail/mail-view.c:156 ui/evolution-mail.xml.h:13
-msgid "Delete this message"
-msgstr ""
-
-#: mail/message-list.c:648
-msgid "Unseen"
-msgstr ""
-
-#: mail/message-list.c:649
-msgid "Seen"
-msgstr ""
-
-#: mail/message-list.c:650
-msgid "Answered"
-msgstr ""
-
-#: mail/message-list.c:651
-msgid "Multiple Unseen Messages"
-msgstr ""
-
-#: mail/message-list.c:652
-msgid "Multiple Messages"
-msgstr ""
-
-#: mail/message-list.c:656
-msgid "Lowest"
-msgstr ""
-
-#: mail/message-list.c:657
-msgid "Lower"
-msgstr ""
-
-#: mail/message-list.c:661
-msgid "Higher"
-msgstr ""
-
-#: mail/message-list.c:662
-msgid "Highest"
-msgstr ""
-
-#: mail/message-list.c:912
-msgid "?"
-msgstr ""
-
-#: mail/message-list.c:919
-msgid "Today %l:%M %p"
-msgstr ""
-
-#: mail/message-list.c:928
-msgid "Yesterday %l:%M %p"
-msgstr ""
-
-#: mail/message-list.c:940
-msgid "%a %l:%M %p"
-msgstr ""
-
-#: mail/message-list.c:948
-msgid "%b %d %l:%M %p"
-msgstr ""
-
-#: mail/message-list.c:950
-msgid "%b %d %Y"
-msgstr ""
-
-#: mail/message-list.c:1052
-msgid "Flagged"
-msgstr ""
-
-#: mail/message-list.c:1053
-msgid "From"
-msgstr ""
-
-#: mail/message-list.c:1053
-msgid "Date"
-msgstr ""
-
-#: mail/message-list.c:1053
-msgid "Received"
-msgstr ""
-
-#: mail/message-list.c:1054
-msgid "To"
-msgstr ""
-
-#: mail/message-list.c:1054
-msgid "Size"
-msgstr ""
-
-#: mail/subscribe-dialog.c:76 shell/e-storage-set-view.c:46
-msgid "Folder"
-msgstr ""
-
-#: mail/subscribe-dialog.c:77
-msgid "Store"
-msgstr ""
-
-#: mail/subscribe-dialog.c:138
-msgid "Display folders starting with:"
-msgstr ""
-
-#: mail/subscribe-dialog.c:168
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:271
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:273
-#, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr ""
-
-#. Construct the app
-#: mail/subscribe-dialog.c:873
-msgid "Manage Subscriptions"
-msgstr ""
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-msgid "Folder name:"
-msgstr ""
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-msgid "Folder type:"
-msgstr ""
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-msgid "Specify where to create the folder:"
-msgstr ""
-
-#: shell/importer/importer.c:87
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/importer/importer.c:182
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-
-#: shell/importer/importer.c:202 shell/importer/importer.c:233
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-
-#: shell/importer/importer.c:341
-#, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr ""
-
-#: shell/importer/importer.c:351
-msgid "Importing"
-msgstr ""
-
-#: shell/importer/importer.c:359
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-
-#: shell/importer/importer.c:372
-#, c-format
-msgid "Error starting %s"
-msgstr ""
-
-#: shell/importer/importer.c:387
-#, c-format
-msgid "Error loading %s"
-msgstr ""
-
-#: shell/importer/importer.c:402
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-
-#: shell/importer/importer.c:473
-msgid "Automatic"
-msgstr ""
-
-#: shell/importer/importer.c:523
-msgid "Filename:"
-msgstr ""
-
-#: shell/importer/import.glade.h:5 shell/importer/importer.c:528
-msgid "Select a file"
-msgstr ""
-
-#: shell/importer/importer.c:538
-msgid "File type:"
-msgstr ""
-
-#: shell/importer/import.glade.h:4 shell/importer/importer.c:619
-msgid "Import"
-msgstr ""
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr ""
-
-#: shell/importer/import.glade.h:2
-msgid "Evolution Import Utility"
-msgstr ""
-
-#: shell/importer/import.glade.h:3
-msgid "Evolution Importer Utility"
-msgstr ""
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-
-#: shell/e-setup.c:118 shell/e-setup.c:191
-msgid "Evolution installation"
-msgstr ""
-
-#: shell/e-setup.c:122
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-
-#: shell/e-setup.c:123
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr ""
-
-#: shell/e-setup.c:163
-msgid "Could not update files correctly"
-msgstr ""
-
-#: shell/e-setup.c:166 shell/e-setup.c:234
-msgid "Evolution files successfully installed."
-msgstr ""
-
-#: shell/e-setup.c:195
-msgid "This seems to be the first time you are running Evolution."
-msgstr ""
-
-#: shell/e-setup.c:196
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr ""
-
-#: shell/e-setup.c:215
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-
-#: shell/e-setup.c:230
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-
-#: shell/e-setup.c:255
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-
-#: shell/e-setup.c:267
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-
-#: shell/e-shell-folder-creation-dialog.c:99
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-
-#: shell/e-shell-folder-creation-dialog.c:156
-msgid "The specified folder name is not valid."
-msgstr ""
-
-#: shell/e-shell-folder-creation-dialog.c:248
-msgid "Evolution - Create new folder"
-msgstr ""
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-
-#: shell/e-shell-folder-selection-dialog.c:319
-msgid "New..."
-msgstr ""
-
-#: shell/e-shell-folder-title-bar.c:459 shell/e-shell-folder-title-bar.c:460
-msgid "(Untitled)"
-msgstr ""
-
-#: shell/e-shell-view-menu.c:173
-msgid "Bug buddy was not found in your $PATH."
-msgstr ""
-
-#: shell/e-shell-view-menu.c:179
-msgid "Bug buddy could not be run."
-msgstr ""
-
-#: shell/e-shell-view-menu.c:208
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr ""
-
-#: shell/e-shell-view-menu.c:210
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-
-#: shell/e-shell-view-menu.c:374
-msgid "Go to folder..."
-msgstr ""
-
-#: shell/e-shell-view.c:148
-msgid "(No folder displayed)"
-msgstr ""
-
-#: shell/e-shell-view.c:1134
-#, c-format
-msgid "%s - Evolution %s"
-msgstr ""
-
-#: shell/e-shell-view.c:1136
-#, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr ""
-
-#: shell/e-shell.c:378
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr ""
-
-#: shell/e-shell.c:1248
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-
-#: shell/e-shortcuts-view.c:134
-msgid "Create new shortcut group"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:137
-msgid "Group name:"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:260
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:265
-msgid "Don't remove"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:276
-msgid "_Small Icons"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:277
-msgid "Show the shortcuts as small icons"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:279
-msgid "_Large Icons"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:280
-msgid "Show the shortcuts as large icons"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:291
-msgid "_New Group..."
-msgstr ""
-
-#: shell/e-shortcuts-view.c:292
-msgid "Create a new shortcut group"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:294
-msgid "_Remove This Group..."
-msgstr ""
-
-#: shell/e-shortcuts-view.c:295
-msgid "Remove this shortcut group"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:300
-msgid "_Hide the Shortcut Bar"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:301
-msgid "Hide the shortcut bar"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate this shortcut"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:388
-msgid "Remove this shortcut from the shortcut bar"
-msgstr ""
-
-#: shell/e-shortcuts.c:379
-msgid "Error saving shortcuts."
-msgstr ""
-
-#: shell/e-storage-set-view.c:649 ui/evolution-event-editor.xml.h:76
-#: ui/evolution-message-composer.xml.h:53
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:43
-msgid "_View"
-msgstr ""
-
-#: shell/e-storage-set-view.c:649
-msgid "View the selected folder"
-msgstr ""
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr ""
-
-#: shell/e-storage.c:459
-msgid "No error"
-msgstr ""
-
-#: shell/e-storage.c:461
-msgid "Generic error"
-msgstr ""
-
-#: shell/e-storage.c:463
-msgid "A folder with the same name already exists"
-msgstr ""
-
-#: shell/e-storage.c:465
-msgid "The specified folder type is not valid"
-msgstr ""
-
-#: shell/e-storage.c:467
-msgid "I/O error"
-msgstr ""
-
-#: shell/e-storage.c:469
-msgid "Not enough space to create the folder"
-msgstr ""
-
-#: shell/e-storage.c:471
-msgid "The specified folder was not found"
-msgstr ""
-
-#: shell/e-storage.c:473
-msgid "Function not implemented in this storage"
-msgstr ""
-
-#: shell/e-storage.c:475
-msgid "Permission denied"
-msgstr ""
-
-#: shell/e-storage.c:477
-msgid "Operation not supported"
-msgstr ""
-
-#: shell/e-storage.c:479
-msgid "The specified type is not supported in this storage"
-msgstr ""
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-#, fuzzy
-msgid "The Evolution shell."
-msgstr "Cannot initialise the Evolution shell."
-
-#: shell/main.c:83
-#, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-
-#: shell/main.c:108
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-
-#: shell/main.c:139
-msgid "Cannot initialize the Evolution shell."
-msgstr "Cannot initialise the Evolution shell."
-
-#: shell/main.c:185
-msgid "Disable splash screen"
-msgstr ""
-
-#: shell/main.c:186
-msgid "Send the debugging output of all components to a file."
-msgstr ""
-
-#: shell/main.c:219
-msgid "Cannot initialize the Bonobo component system."
-msgstr "Cannot initialise the Bonobo component system."
-
-#: ui/evolution-addressbook.xml.h:2
-msgid "Create new contact"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:4
-msgid "Delete a contact"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-msgid "Find"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:6
-msgid "Find a contact"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:7
-msgid "New contact"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-mail.xml.h:49
-msgid "Previews the message to be printed"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "Print contacts"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:12 ui/evolution-mail.xml.h:78
-msgid "Stop"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "Stop Loading"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:14
-msgid "View All"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:15
-msgid "View all contacts"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:16
-msgid "_Addressbook Sources..."
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:17
-msgid "_Contact"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-msgid "_Print..."
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-mail.xml.h:110
-#: ui/evolution-task-editor-dialog.xml.h:88 ui/evolution.xml.h:42
-msgid "_Tools"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-msgid "Alter preferences"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:4
-msgid "Create a new all day Event"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:5
-msgid "Create a new appointment"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:8
-msgid "Go To"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go forward in time"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:11
-msgid "Go to _Date"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:12
-msgid "Go to _Today"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:14
-msgid "Go to present time"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:15
-msgid "Month"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:17
-msgid "New _Event"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:18 ui/evolution-event-editor.xml.h:29
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "Next"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:20
-msgid "Open Calendar"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Prev"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:22
-msgid "Previews the calendar to be printed"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:25
-msgid "Print calendar"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:26
-msgid "Print this Calendar"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:15
-msgid "Save As"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:28
-msgid "Save calendar as something else"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:30
-msgid "Show 1 day"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:226
-#: widgets/misc/e-dateedit.c:422
-msgid "Today"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:35
-msgid "W_ork Week"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:37
-msgid "_Appointment"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:38
-msgid "_Day"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:39
-msgid "_Month"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:38
-msgid "_New"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:41
-msgid "_Open Calendar"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:43 ui/evolution-mail.xml.h:106
-#: ui/evolution-tasks.xml.h:8
-msgid "_Save As..."
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:45
-msgid "_Week"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:2
-msgid "Delete this item"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:3
-msgid "Delete..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:4
-msgid "Help"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:5
-msgid "Print En_velope..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-msgid "Print this item"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-mail.xml.h:57 ui/evolution-task-editor-dialog.xml.h:41
-msgid "Print..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:16
-#: ui/evolution-task-editor-dialog.xml.h:51
-msgid "Save _As..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-msgid "Save and Close"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:13
-msgid "Send _message to contact..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:44 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:30
-msgid "_File"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:51
-#: ui/evolution-task-editor-dialog.xml.h:85
-msgid "_Save"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-msgid "Actio_ns"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-msgid "Address _Book... (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-msgid "C_lear"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-msgid "C_ut"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-msgid "Chec_k Names (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-msgid "Clear"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-msgid "Clear the selection"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:11
-msgid "Close this appointment"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-msgid "Cop_y to Folder... (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:7
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-msgid "Copy the selection"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Cut the selection"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:18
-msgid "Delete this appointment"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-msgid "For_ward (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-msgid "Go to the next item"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-msgid "Go to the previous item"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-msgid "In_complete Task (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-msgid "Modify the file's properties"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-msgid "N_ext"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-msgid "Paste"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-msgid "Paste the clipboard"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:33 ui/evolution-task-editor-dialog.xml.h:36
-msgid "Previous"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-msgid "Print Pre_view"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-msgid "Print S_etup..."
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-msgid "Print Setup"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:14
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:239
-msgid "Save"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:43
-msgid "Save the appointment and close the dialog box"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:20
-#: ui/evolution-task-editor-dialog.xml.h:53
-msgid "Save the current file"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:46
-msgid "Schedule _Meeting"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:47
-msgid "Schedule some sort of a meeting"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-mail.xml.h:68
-#: ui/evolution-task-editor-dialog.xml.h:57
-msgid "Select All"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-msgid "Select everything"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-msgid "Task _Request (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-message-composer.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:63
-msgid "_About..."
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:41
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:27
-#, fuzzy
-msgid "_Close"
-msgstr "Colours"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:28
-msgid "_Contact (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-msgid "_Copy"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:46
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:34
-msgid "_Help"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-msgid "_Item (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-msgid "_Journal Entry (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-msgid "_Last Item in Folder (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-msgid "_Mail Message (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-msgid "_Move to Folder... (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-msgid "_Note (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-msgid "_Paste"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:69 ui/evolution-task-editor-dialog.xml.h:82
-#: ui/evolution-tasks.xml.h:7
-msgid "_Print"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:102
-#: ui/evolution-task-editor-dialog.xml.h:83
-msgid "_Properties..."
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-msgid "_Select All"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:41
-msgid "_Task (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-msgid "_Unread Item (FIXME)"
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:1
-msgid "Add Service"
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:3
-msgid "Create a new email"
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:5
-msgid "New Mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:2
-msgid "Apply any new filters to the mail in this box"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:3
-msgid "Change the properties of this folder"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:4
-#, fuzzy
-msgid "Compose"
-msgstr "Colours"
-
-#: ui/evolution-mail.xml.h:5
-msgid "Compose a new message"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:6
-msgid "Configure Folder..."
-msgstr ""
-
-#: ui/evolution-mail.xml.h:8
-msgid "Copy message to a new folder"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:9
-msgid "Copy selected messages to another folder"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:10
-msgid "Create _Virtual Folder From Message"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:12
-msgid "Delete the selected messages"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:14
-msgid "Display all of the message headers"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:15
-msgid "Edit Message"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:16
-msgid "Edit the current message"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:17
-msgid "Empty _Trash"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:18
-msgid "Expunge"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:19
-msgid "Filter on Se_nder"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:20
-msgid "Filter on _Recipients"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:21
-msgid "Filter on _Subject"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:22
-msgid "Finaly remove all mails tagged for deletion"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:23
-msgid "Forget _Passwords"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:25
-msgid "Forward As"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:27
-msgid "Forward the selected mail to someone"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:29
-msgid "Forward this message in-line with your mail, so you can edit it"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:30
-msgid "Full _Headers"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:31
-msgid "Hide Deleted Messages"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:32
-msgid "Hide S_elected Messages"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:33
-msgid "Hide _Deleted Messages"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:34
-msgid "Hide _Read messages"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:35
-msgid "Invert Selection"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:36
-msgid "Manage _Subscriptions..."
-msgstr ""
-
-#: ui/evolution-mail.xml.h:37
-msgid "Mar_k as Read"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:38
-msgid "Mark All as R_ead"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:39
-msgid "Mark As Read"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:40
-msgid "Mark As U_nread"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:41
-msgid "Mark as U_nread"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:42
-msgid "Mark the selected messages as having been read"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:43
-msgid "Mark the selected messages as not having been read"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:44
-msgid "Move"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:45
-msgid "Move message to a new folder"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:46
-msgid "Move selected messages to another folder"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:47
-msgid "Open in New Window"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:48
-msgid "Open the current message in a new window"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:53
-msgid "Print Preview of message..."
-msgstr ""
-
-#: ui/evolution-mail.xml.h:54
-msgid "Print message to the printer"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:55
-msgid "Print message..."
-msgstr ""
-
-#: ui/evolution-mail.xml.h:58
-msgid "Redirect (FIXME: implement me)"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:61
-msgid "Reply to _All"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:62
-msgid "Reply to all"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:64
-msgid "Reply to sender"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:66
-msgid "S_ource"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:67
-msgid "Save the message into a new file"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:69 ui/evolution-subscribe.xml.h:7
-msgid "Select _All"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:70
-msgid "Select _Thread"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:71
-msgid "Send / Receive"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:72
-msgid "Send a reply to the person who sent you this mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:73
-msgid "Send a single mail in reply to all the selected mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:74
-msgid ""
-"Send queued mail\n"
-" and retrieve new mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:76
-msgid "Send queued mail and retrieve new mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:77
-msgid "Show _All"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:79
-msgid "Threaded Message list"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:80
-msgid "Un-delete the selected messages"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:82
-msgid "VFolder on Se_nder"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:83
-msgid "VFolder on _Recipients"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:84
-msgid "VFolder on _Subject"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:85
-msgid "View Raw Message Source"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:86
-msgid "Virtual Folder _Editor..."
-msgstr ""
-
-#: ui/evolution-mail.xml.h:87
-msgid "_Apply Filters"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:88
-msgid "_Attachment"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:89
-msgid "_Copy to Folder..."
-msgstr ""
-
-#: ui/evolution-mail.xml.h:90
-msgid "_Create Filter From Message"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:92
-msgid "_Expunge"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:93
-msgid "_Filters..."
-msgstr ""
-
-#: ui/evolution-mail.xml.h:94 ui/evolution.xml.h:31
-msgid "_Folder"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:95
-msgid "_Forward"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:96
-msgid "_Inline"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:97 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:98
-msgid "_Mail Message"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:99
-msgid "_Mail Settings..."
-msgstr ""
-
-#: ui/evolution-mail.xml.h:100
-msgid "_Move to Folder..."
-msgstr ""
-
-#: ui/evolution-mail.xml.h:101
-msgid "_Open Selected Items"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:103
-msgid "_Quoted"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:104
-msgid "_Reply"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:105
-msgid "_Resend Messages"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:107
-msgid "_Save Message As..."
-msgstr ""
-
-#: ui/evolution-mail.xml.h:108
-msgid "_Send / Receive"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:109
-msgid "_Threaded"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:111
-msgid "_Undelete"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-msgid "Close the current file"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:5
-msgid "Encrypt this message with PGP"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:6
-msgid "F_ormat"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "HTML"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:8
-msgid "Insert a file as text into the message"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert text file..."
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:11
-msgid "Open a file"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "PGP Encrypt"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Sign"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:17
-msgid "Save _Draft"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:18
-msgid "Save in _folder... (FIXME)"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:19
-msgid "Save in folder..."
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:21
-msgid "Save the current file with a different name"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:22
-msgid "Save the message in a specified folder"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:23
-msgid "Send"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:24
-msgid "Send _Later"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:25
-msgid "Send _later"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:26
-msgid "Send the mail in HTML format"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:27
-msgid "Send the message later"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:28
-msgid "Send the message now"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:29
-msgid "Send this message now"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:30
-msgid "Show / hide attachments"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:31
-msgid "Show _attachments"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:32
-msgid "Show attachments"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:33
-msgid "Sign this message with your PGP key"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:34
-msgid "Toggles whether the BCC field is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:35
-msgid "Toggles whether the CC field is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:36
-msgid "Toggles whether the From chooser is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "_Bcc Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:40
-msgid "_Cc Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:45
-msgid "_From Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:47
-msgid "_Insert"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:48
-msgid "_Insert text file... (FIXME)"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:49
-msgid "_Open..."
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:50
-msgid "_Reply-To Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:52
-msgid "_Security"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:3
-msgid "F_older"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-msgid "Assig_n Task (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-msgid "Meeting Re_quest (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-msgid "Redo"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-msgid "Redo the undone action"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-msgid "Replace"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-msgid "Replace a string"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-msgid "Reply to A_ll (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-msgid "S_end Status Report (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-msgid "Save the task and close the dialog box"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "Search again for the same string"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-msgid "Search for a string"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-msgid "Undo the last action"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:26
-msgid "_Appointment (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-msgid "_Mark Complete (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-msgid "_Reply (FIXME)"
-msgstr ""
-
-#: ui/evolution-tasks.xml.h:2
-msgid "Create a new task"
-msgstr ""
-
-#: ui/evolution-tasks.xml.h:3
-msgid "New Task"
-msgstr ""
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr ""
-
-#: ui/evolution-tasks.xml.h:6
-msgid "Tasks Preferences..."
-msgstr ""
-
-#: ui/evolution-tasks.xml.h:9
-msgid "_Task"
-msgstr ""
-
-#: ui/evolution.xml.h:1
-msgid "About Evolution..."
-msgstr ""
-
-#: ui/evolution.xml.h:3
-msgid "Close this window"
-msgstr ""
-
-#: ui/evolution.xml.h:4
-msgid "Customi_ze Toolbars..."
-msgstr ""
-
-#: ui/evolution.xml.h:5
-msgid "Customize"
-msgstr ""
-
-#: ui/evolution.xml.h:6
-msgid "Customize toolbars"
-msgstr ""
-
-#: ui/evolution.xml.h:7
-msgid "Display a different folder"
-msgstr ""
-
-#: ui/evolution.xml.h:8
-msgid "E_xit"
-msgstr ""
-
-#: ui/evolution.xml.h:9
-msgid "Evolution bar _shortcut"
-msgstr ""
-
-#: ui/evolution.xml.h:10
-msgid "Exit the program"
-msgstr ""
-
-#: ui/evolution.xml.h:11
-msgid "Getting _Started"
-msgstr ""
-
-#: ui/evolution.xml.h:12
-msgid "Import an external file format"
-msgstr ""
-
-#: ui/evolution.xml.h:13
-msgid "Main toolbar"
-msgstr ""
-
-#: ui/evolution.xml.h:14
-msgid "Show information about Evolution"
-msgstr ""
-
-#: ui/evolution.xml.h:15
-msgid "Submit Bug Report"
-msgstr ""
-
-#: ui/evolution.xml.h:16
-msgid "Submit _Bug Report"
-msgstr ""
-
-#: ui/evolution.xml.h:17
-msgid "Submit bug report using Bug Buddy."
-msgstr ""
-
-#: ui/evolution.xml.h:18
-msgid "Toggle whether to show the folder bar"
-msgstr ""
-
-#: ui/evolution.xml.h:19
-msgid "Toggle whether to show the shortcut bar"
-msgstr ""
-
-#: ui/evolution.xml.h:20
-msgid "Using the C_ontact Manager"
-msgstr ""
-
-#: ui/evolution.xml.h:21
-msgid "Using the _Calendar"
-msgstr ""
-
-#: ui/evolution.xml.h:22
-msgid "Using the _Mailer"
-msgstr ""
-
-#: ui/evolution.xml.h:23
-msgid "Work Offline"
-msgstr ""
-
-#: ui/evolution.xml.h:24
-msgid "_About Evolution..."
-msgstr ""
-
-#: ui/evolution.xml.h:25
-msgid "_Actions"
-msgstr ""
-
-#: ui/evolution.xml.h:32
-msgid "_Folder Bar"
-msgstr ""
-
-#: ui/evolution.xml.h:33
-msgid "_Go to Folder..."
-msgstr ""
-
-#: ui/evolution.xml.h:35
-msgid "_Import file..."
-msgstr ""
-
-#: ui/evolution.xml.h:36
-msgid "_Index"
-msgstr ""
-
-#: ui/evolution.xml.h:37
-msgid "_Mail message"
-msgstr ""
-
-#: ui/evolution.xml.h:39
-msgid "_New Folder"
-msgstr ""
-
-#: ui/evolution.xml.h:40
-msgid "_Shortcut Bar"
-msgstr ""
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:469
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2475
-msgid "%A, %B %d, %Y"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:390
-msgid "Tentative"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:391
-msgid "Busy"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:392
-msgid "Out of Office"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:393
-msgid "No Information"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:409
-msgid "_Invite Others..."
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:429
-msgid "_Options"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:446
-msgid "Show _Only Working Hours"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:459
-msgid "Show _Zoomed Out"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:477
-msgid "_Update Free/Busy"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:495
-msgid "_<<"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:512
-msgid "_Autopick"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:526
-msgid ">_>"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:543
-msgid "_All People and Resources"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:556
-msgid "All _People and One Resource"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:569
-msgid "_Required People"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:582
-msgid "Required People and _One Resource"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:605
-msgid "Meeting _start time:"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:629
-msgid "Meeting _end time:"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:742
-msgid "All Attendees"
-msgstr ""
-
-#: widgets/menus/gal-view-menus.c:177
-msgid "_Current View"
-msgstr ""
-
-#: widgets/menus/gal-view-menus.c:196
-msgid "Define Views"
-msgstr ""
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:421
-msgid "MTWTFSS"
-msgstr ""
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1060 widgets/misc/e-calendar-item.c:2755
-msgid "%B %Y"
-msgstr ""
-
-#: widgets/misc/e-cell-date-edit.c:218 widgets/misc/e-dateedit.c:416
-msgid "Now"
-msgstr ""
-
-#: widgets/misc/e-cell-date-edit.c:242
-msgid "OK"
-msgstr ""
-
-#: widgets/misc/e-cell-date-edit.c:723
-#, c-format
-msgid "The time must be in the format: %s"
-msgstr ""
-
-#: widgets/misc/e-clipped-label.c:107
-msgid "..."
-msgstr ""
-
-#: widgets/misc/e-filter-bar.c:166
-msgid "Save Search"
-msgstr ""
-
-#: widgets/misc/e-filter-bar.c:237
-msgid "Advanced Search"
-msgstr ""
-
-#: widgets/misc/e-filter-bar.c:317
-msgid "Advanced ..."
-msgstr ""
-
-#: widgets/misc/e-messagebox.c:152
-msgid "Information"
-msgstr ""
-
-#: widgets/misc/e-messagebox.c:159
-msgid "Warning"
-msgstr ""
-
-#: widgets/misc/e-messagebox.c:173
-msgid "Question"
-msgstr ""
-
-#: widgets/misc/e-messagebox.c:180
-msgid "Message"
-msgstr ""
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:224
-msgid "Don't show this message again."
-msgstr ""
-
-#: widgets/misc/e-search-bar.c:148
-msgid "Sear_ch"
-msgstr ""
-
-#: views/addressbook/galview.xml.h:1
-msgid "Adress Cards"
-msgstr ""
-
-#: views/addressbook/galview.xml.h:2
-msgid "By Company"
-msgstr ""
-
-#: views/addressbook/galview.xml.h:3
-msgid "Phone List"
-msgstr ""
-
-#: views/mail/galview.xml.h:1
-msgid "By Sender"
-msgstr ""
-
-#: views/mail/galview.xml.h:2
-msgid "By Status"
-msgstr ""
-
-#: views/mail/galview.xml.h:3
-msgid "By Subject"
-msgstr ""
-
-#: views/mail/galview.xml.h:4
-msgid "Messages"
-msgstr ""
-
-#: views/tasks/galview.xml.h:2
-msgid "With Category"
-msgstr ""
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-msgid "The Personal Addressbook Server"
-msgstr ""
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr ""
-
-#: wombat/wombat.c:173
-#, fuzzy
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr "Could not initialise Bonobo"
-
-#: wombat/wombat.c:185
-#, fuzzy
-msgid "init_corba(): could not initialize GNOME"
-msgstr "Could not initialise Bonobo"
-
-#: wombat/wombat.c:198
-#, fuzzy
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "Could not initialise Bonobo"
-
-#, fuzzy
-#~ msgid "Cannot initialize Evolution's notes component."
-#~ msgstr "Cannot initialise Evolution's mail component."
-
-#, fuzzy
-#~ msgid "Notes Component: Could not initialize bonobo"
-#~ msgstr "Could not initialise Bonobo"
-
-#~ msgid "Synchronize"
-#~ msgstr "Synchronise"
-
-#~ msgid "Synchronize Action"
-#~ msgstr "Synchronise Action"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "Mr.\n"
-#~ "Mrs.\n"
-#~ "Ms.\n"
-#~ "Miss\n"
-#~ "Dr.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Mr\n"
-#~ "Ms\n"
-#~ "Miss\n"
-#~ "Mrs\n"
-#~ "Dr\n"
-#~ "Prof\n"
-#~ "Rev\n"
-
-#~ msgid ""
-#~ "Enter your name and email address to be used in outgoing mail. You may also, "
-#~ "optionally, enter the name of your organization, and the name of a file to "
-#~ "read your signature from."
-#~ msgstr ""
-#~ "Enter your name and email address to be used in outgoing mail. You may also, "
-#~ "optionally, enter the name of your organisation, and the name of a file to "
-#~ "read your signature from."
-
-#~ msgid "Querying authorization capabilities of \"%s\""
-#~ msgstr "Querying authorisation capabilities of \"%s\""
-
-#~ msgid "Query authorization at \"%s\""
-#~ msgstr "Query authorisation at \"%s\""
-
-#~ msgid "Synchronize \"%s\""
-#~ msgstr "Synchronise \"%s\""
-
-#~ msgid "Colors for display"
-#~ msgstr "Colours for display"
-
-#~ msgid "Cannot initialize Evolution's mail storage hash."
-#~ msgstr "Cannot initialise Evolution's mail storage hash."
diff --git a/po/es.po b/po/es.po
deleted file mode 100644
index 873c81be68..0000000000
--- a/po/es.po
+++ /dev/null
@@ -1,9667 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR Free Software Foundation, Inc.
-# Héctor García Álvarez <hector@scouts-es.org>, 2000-2001.
-# Carlos Perelló Marín <carlos@gnome-db.org>, 2000-2001.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: evolution 0.7.0\n"
-"POT-Creation-Date: 2001-05-21 19:19+0200\n"
-"PO-Revision-Date: 2001-01-23 16:58-04:00\n"
-"Last-Translator: Héctor García Álvarez <hector@scouts-es.org>\n"
-"Language-Team: Spanish <es@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: addressbook/backend/ebook/e-card.c:3314
-msgid "Card: "
-msgstr "Tarjeta: "
-
-#: addressbook/backend/ebook/e-card.c:3316
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-"\n"
-"Nombre:"
-
-#: addressbook/backend/ebook/e-card.c:3317
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-"\n"
-" Prefijo: "
-
-#: addressbook/backend/ebook/e-card.c:3318
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-"\n"
-" Dado: "
-
-#: addressbook/backend/ebook/e-card.c:3319
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-"\n"
-" Adicional: "
-
-#: addressbook/backend/ebook/e-card.c:3320
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-"\n"
-" Familia: "
-
-#: addressbook/backend/ebook/e-card.c:3321
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-"\n"
-" Sufijo: "
-
-#: addressbook/backend/ebook/e-card.c:3335
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-"\n"
-"Fecha de nacimiento: "
-
-#: addressbook/backend/ebook/e-card.c:3346
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-"\n"
-"Dirección:"
-
-#: addressbook/backend/ebook/e-card.c:3348
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-"\n"
-" Dirección postal: "
-
-#: addressbook/backend/ebook/e-card.c:3349
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-"\n"
-" Ext: "
-
-#: addressbook/backend/ebook/e-card.c:3350
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-"\n"
-" Calle: "
-
-#: addressbook/backend/ebook/e-card.c:3351
-msgid ""
-"\n"
-" City: "
-msgstr ""
-"\n"
-" Ciudad: "
-
-#: addressbook/backend/ebook/e-card.c:3352
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-"\n"
-" Región: "
-
-#: addressbook/backend/ebook/e-card.c:3353
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-"\n"
-" Código postal: "
-
-#: addressbook/backend/ebook/e-card.c:3354
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-"\n"
-" País: "
-
-#: addressbook/backend/ebook/e-card.c:3367
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-"\n"
-"Etiqueta de envío: "
-
-#: addressbook/backend/ebook/e-card.c:3379
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-"\n"
-"Teléfonos:\n"
-
-#: addressbook/backend/ebook/e-card.c:3382
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-"\n"
-"Teléfono:"
-
-#: addressbook/backend/ebook/e-card.c:3406
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-"\n"
-"Correo electrónico:\n"
-
-#: addressbook/backend/ebook/e-card.c:3409
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-"\n"
-"Correo electrónico:"
-
-#: addressbook/backend/ebook/e-card.c:3428
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-"\n"
-"Programa de correo: "
-
-#: addressbook/backend/ebook/e-card.c:3434
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-"\n"
-"Zona horaria: "
-
-#: addressbook/backend/ebook/e-card.c:3442
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-"\n"
-"Localización geográfica: "
-
-#: addressbook/backend/ebook/e-card.c:3446
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-"\n"
-"Cargo: "
-
-#: addressbook/backend/ebook/e-card.c:3458
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-"\n"
-"Organización: "
-
-#: addressbook/backend/ebook/e-card.c:3459
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-"\n"
-" Nombre: "
-
-#: addressbook/backend/ebook/e-card.c:3460
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-"\n"
-" Unidad: "
-
-#: addressbook/backend/ebook/e-card.c:3461
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-"\n"
-" Unidad2: "
-
-#: addressbook/backend/ebook/e-card.c:3462
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-"\n"
-" Unidad3: "
-
-#: addressbook/backend/ebook/e-card.c:3463
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-"\n"
-" Unidad4: "
-
-#: addressbook/backend/ebook/e-card.c:3467
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-"\n"
-"categorías: "
-
-#: addressbook/backend/ebook/e-card.c:3468
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-"\n"
-"Comentarios: "
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3481
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-"\n"
-"Cadena única: "
-
-#: addressbook/backend/ebook/e-card.c:3484
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-"\n"
-"Llave pública: "
-
-#: addressbook/backend/ebook/e-card.c:3745
-msgid "Multiple VCards"
-msgstr "VCards Múltiples"
-
-#: addressbook/backend/ebook/e-card.c:3753
-#, c-format
-msgid "VCard for %s"
-msgstr "VCard para %s"
-
-#: addressbook/backend/ebook/e-destination.c:244
-msgid "???"
-msgstr "???"
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_VCard_Importer.oaf.in.h:1
-msgid "Factory to import VCard files into Evolution."
-msgstr "Factoría para importar archivos VCard a Evolution."
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_VCard_Importer.oaf.in.h:2
-msgid "Imports VCard files into Evolution."
-msgstr "Importa archivos VCard a Evolution."
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:21
-#: addressbook/backend/ebook/load-pine-addressbook.c:22
-#: addressbook/backend/ebook/test-client-list.c:23
-#: addressbook/backend/ebook/test-client.c:33
-#: addressbook/conduit/address-conduit.c:1092
-#: addressbook/gui/component/addressbook-factory.c:42
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:98 calendar/gui/main.c:57
-msgid "Could not initialize Bonobo"
-msgstr "No se puede inicializar Bonobo"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr "No pude cargar el cursor\n"
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr "EBook no esta cargado\n"
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr "No se ha podido iniciar el servidor wombat"
-
-#: addressbook/conduit/address-conduit.c:655
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr "No se puede inicializar wombat"
-
-#: addressbook/conduit/address-conduit.c:687
-#: addressbook/conduit/address-conduit.c:690
-msgid "Could not read pilot's Address application block"
-msgstr "No pude leer información de la aplicación de direcciones del pilot"
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:7
-msgid "Add"
-msgstr "Añadir"
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr "Ani_versario:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr "T_rabajo"
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr "_Fax del trabajo"
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-msgid "C_ontacts..."
-msgstr "C_ontactos..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr "Ca_tegorías..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-msgid "Contact Editor"
-msgstr "Editor de contactos"
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr "Detalles"
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr "Archivar como:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-msgid "General"
-msgstr "General"
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr "Nuevo tipo de teléfono"
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-msgid "No_tes:"
-msgstr "No_tas:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr "Tipos de teléfono"
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1284
-msgid "Primary Email"
-msgstr "Correo electrónico principal"
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr "Prefiere recibir el correo como _HTML"
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr "Dirección de la página web:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:84
-msgid "_Add"
-msgstr "_Añadir"
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr "_Dirección..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr "Nombre del _asistente:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr "Fecha de _nacimiento:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr "_Trabajo"
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-msgid "_Company:"
-msgstr "_Compañía:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/folder-browser.c:715 mail/mail-config.glade.h:85
-#: ui/evolution-event-editor.xml.h:57 ui/evolution-mail.xml.h:103
-#: ui/evolution-task-editor-dialog.xml.h:69 ui/evolution.xml.h:46
-msgid "_Delete"
-msgstr "_Borrar"
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr "_Departamento:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr "_Nombre completo..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-msgid "_Home"
-msgstr "_Casa"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-msgid "_Job title:"
-msgstr "_Puesto:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr "Nombre del _manager:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-msgid "_Mobile"
-msgstr "_Móvil"
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr "Nick:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr "_Oficina:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr "_Profesión:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr "_Cónyuge:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr "Es_tá es la dirección de correo"
-
-#: addressbook/contact-editor/e-contact-editor.c:603
-msgid "This contact belongs to these categories:"
-msgstr "Este contacto está en estas categorías:"
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-#: addressbook/gui/widgets/e-addressbook-view.c:733
-msgid "Assistant"
-msgstr "Asistente"
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/contact-editor/e-contact-editor.c:1310
-msgid "Business"
-msgstr "Trabajo"
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-msgid "Business 2"
-msgstr "Trabajo 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#: addressbook/gui/widgets/e-addressbook-view.c:713
-msgid "Business Fax"
-msgstr "Fax del trabajo"
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Callback"
-msgstr "Rellamada"
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "Car"
-msgstr "Coche"
-
-#: addressbook/contact-editor/e-contact-editor.c:1248
-msgid "Company"
-msgstr "Compañía"
-
-#: addressbook/contact-editor/e-contact-editor.c:1249
-#: addressbook/contact-editor/e-contact-editor.c:1311
-msgid "Home"
-msgstr "Casa"
-
-#: addressbook/contact-editor/e-contact-editor.c:1250
-msgid "Home 2"
-msgstr "Casa 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1251
-#: addressbook/gui/widgets/e-addressbook-view.c:714
-msgid "Home Fax"
-msgstr "Fax de casa"
-
-#: addressbook/contact-editor/e-contact-editor.c:1252
-#: addressbook/gui/widgets/e-addressbook-view.c:717
-msgid "ISDN"
-msgstr "RDSI"
-
-#: addressbook/contact-editor/e-contact-editor.c:1253
-msgid "Mobile"
-msgstr "Móvil"
-
-#: addressbook/contact-editor/e-contact-editor.c:1254
-#: addressbook/contact-editor/e-contact-editor.c:1312
-msgid "Other"
-msgstr "Otro"
-
-#: addressbook/contact-editor/e-contact-editor.c:1255
-#: addressbook/gui/widgets/e-addressbook-view.c:719
-msgid "Other Fax"
-msgstr "Otro fax"
-
-#: addressbook/contact-editor/e-contact-editor.c:1256
-#: addressbook/gui/widgets/e-addressbook-view.c:720
-msgid "Pager"
-msgstr "Papel"
-
-#: addressbook/contact-editor/e-contact-editor.c:1257
-msgid "Primary"
-msgstr "Principal"
-
-#: addressbook/contact-editor/e-contact-editor.c:1258
-#: addressbook/gui/widgets/e-addressbook-view.c:721
-msgid "Radio"
-msgstr "Radio"
-
-#: addressbook/contact-editor/e-contact-editor.c:1259
-#: addressbook/gui/widgets/e-addressbook-view.c:722
-msgid "Telex"
-msgstr "Telex"
-
-#: addressbook/contact-editor/e-contact-editor.c:1260
-msgid "TTY/TDD"
-msgstr "TTY/TDD"
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:725
-msgid "Email 2"
-msgstr "Correo electrónico 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/gui/widgets/e-addressbook-view.c:726
-msgid "Email 3"
-msgstr "Correo electrónico 3"
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-msgid "Delete Contact?"
-msgstr "¿Borrar contacto?"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:233
-msgid "Contact Quick-Add"
-msgstr "Añadir Contacto"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:235
-msgid "Edit Full"
-msgstr "Editar Todo"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:276
-#: addressbook/gui/widgets/e-addressbook-view.c:700
-msgid "Full Name"
-msgstr "Nombre Completo"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:282
-msgid "E-mail"
-msgstr "Correo electrónico"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr "Dirección _2:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr "Canadá"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr "Comprobar Dirección"
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr "P_aís:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr "Finlandia"
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr "USA"
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr "_Dirección:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-msgid "_City:"
-msgstr "_Ciudad:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr "_Dirección:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr "E_stado/Provincia:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr "Código _Postal"
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr "Comprobar nombre completo"
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr "Dr."
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr "Esq."
-
-#: addressbook/contact-editor/fullname.glade.h:4
-msgid "I"
-msgstr "I"
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr "II"
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr "III"
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr "Junior"
-
-#: addressbook/contact-editor/fullname.glade.h:8
-msgid "Miss"
-msgstr "Señorita"
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr "Sr."
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr "Sra."
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr "Sta."
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr "Senior"
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr "_Nombre:"
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr "_Apellido:"
-
-#: addressbook/contact-editor/fullname.glade.h:15
-msgid "_Middle:"
-msgstr "M"
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr "_Sufijo:"
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr "_Título:"
-
-#: addressbook/gui/component/addressbook.c:244
-msgid "As _Minicards"
-msgstr "Como _mini tarjetas"
-
-#: addressbook/gui/component/addressbook.c:250
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr "Como _Tabla"
-
-#: addressbook/gui/component/addressbook.c:410
-#, c-format
-msgid "Enter password for %s"
-msgstr "Introduzca la contraseña para %s"
-
-#: addressbook/gui/component/addressbook.c:438
-msgid "Unable to open addressbook"
-msgstr "No es posible abrir la agenda de direcciones"
-
-#: addressbook/gui/component/addressbook.c:445
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or the LDAP server\n"
-"is down"
-msgstr ""
-"No podemos abrir este agenda de direcciones. Esto significa\n"
-"que ha introducido una URI erronea, o que el servidor LDAP está\n"
-"caido"
-
-#: addressbook/gui/component/addressbook.c:450
-msgid ""
-"This version of Evolution does not have LDAP support\n"
-"compiled in to it. If you want to use LDAP in Evolution\n"
-"you must compile the program from the CVS sources after\n"
-"retrieving OpenLDAP from the link below.\n"
-msgstr ""
-"Esta versión de Evolution no tiene soporte LDAP compilado.\n"
-"Si quiere usar LDAP en Evolution debe compilar el programa\n"
-"de las fuentes del CVS una vez que haya obtenido LDAP del\n"
-"siguiente enlace.\n"
-
-#: addressbook/gui/component/addressbook.c:458
-msgid ""
-"We were unable to open this addressbook. Please check that the\n"
-"path exists and that you have permission to access it."
-msgstr ""
-"No pudimos abrir esta agenda de direcciones. Por favor compruebe\n"
-"que existe la ruta y que tiene permisos para acceder a ella."
-
-#: addressbook/gui/component/addressbook.c:618 calendar/gui/gnome-cal.c:233
-msgid "Any field contains"
-msgstr "Cualquier campo contiene"
-
-#: addressbook/gui/component/addressbook.c:619
-msgid "Name contains"
-msgstr "El nombre contiene"
-
-#: addressbook/gui/component/addressbook.c:620
-msgid "Email contains"
-msgstr "El mensaje contiene"
-
-#: addressbook/gui/component/addressbook.c:763
-msgid "The URI that the Folder Browser will display"
-msgstr "La URI que mostrará el visor de carpetas"
-
-#: addressbook/gui/component/addressbook-config.c:148
-msgid "LDAP Server"
-msgstr "Servidor LDAP"
-
-#: addressbook/gui/component/addressbook-config.c:150
-msgid "File"
-msgstr "Archivo"
-
-#: addressbook/gui/component/addressbook-config.c:153
-msgid "Unknown addressbook type"
-msgstr "Tipo de agenda de direcciones desconocido"
-
-#: addressbook/gui/component/addressbook-config.c:163
-msgid "None (anonymous mode)"
-msgstr "Ninguno (modo anónimo)"
-
-#: addressbook/gui/component/addressbook-config.c:165
-#: camel/camel-sasl-plain.c:32 camel/providers/imap/camel-imap-provider.c:80
-#: camel/providers/nntp/camel-nntp-store.c:291
-#: camel/providers/pop3/camel-pop3-provider.c:67 mail/mail-config.glade.h:52
-msgid "Password"
-msgstr "Clave"
-
-#: addressbook/gui/component/addressbook-config.c:168
-msgid "Unknown auth type"
-msgstr "Tipo de autentificación desconocido"
-
-#: addressbook/gui/component/addressbook-config.c:177
-msgid "Base"
-msgstr "Base"
-
-#: addressbook/gui/component/addressbook-config.c:179
-msgid "One"
-msgstr "Uno"
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "Subtree"
-msgstr "Sub-arbol"
-
-#: addressbook/gui/component/addressbook-config.c:184
-msgid "Unknown scope type"
-msgstr "Tipo de rango desconocido"
-
-#: addressbook/gui/component/addressbook-config.c:349
-msgid "Bind DN:"
-msgstr "Asociar DN:"
-
-#: addressbook/gui/component/addressbook-config.c:350
-msgid "FIXME Bind DN Help text here"
-msgstr "FIXME Bind DN Help text here"
-
-#: addressbook/gui/component/addressbook-config.c:352
-#: mail/mail-config.glade.h:60
-msgid "Remember this password"
-msgstr "Recuerda esta contraseña"
-
-#: addressbook/gui/component/addressbook-config.c:403
-#: mail/mail-config.glade.h:33
-msgid "Host:"
-msgstr "Servidor:"
-
-#: addressbook/gui/component/addressbook-config.c:404
-msgid "FIXME Host help text here."
-msgstr "FIXME Host help text here."
-
-#: addressbook/gui/component/addressbook-config.c:406
-msgid "Root DN:"
-msgstr "DN raíz:"
-
-#: addressbook/gui/component/addressbook-config.c:407
-msgid "FIXME Root DN help text here."
-msgstr "FIXME Root DN help text here."
-
-#: addressbook/gui/component/addressbook-config.c:411
-msgid "Port:"
-msgstr "Puerto:"
-
-#: addressbook/gui/component/addressbook-config.c:412
-msgid "FIXME Port help text here."
-msgstr "FIXME Port help text here."
-
-#: addressbook/gui/component/addressbook-config.c:432
-msgid "Search Scope:"
-msgstr "Rango de búsqueda:"
-
-#: addressbook/gui/component/addressbook-config.c:479
-msgid "Authentication:"
-msgstr "Autentificación:"
-
-#: addressbook/gui/component/addressbook-config.c:501
-msgid "Advanced LDAP Options"
-msgstr "Opciones avanzadas de LDAP"
-
-#: addressbook/gui/component/addressbook-config.c:522
-#: mail/mail-config.glade.h:53
-msgid "Path:"
-msgstr "Ruta:"
-
-#: addressbook/gui/component/addressbook-config.c:523
-msgid "FIXME Path Help text here"
-msgstr "FIXME Path Help text here"
-
-#: addressbook/gui/component/addressbook-config.c:528
-msgid "Create path if it doesn't exist."
-msgstr "Crear ruta si no existe."
-
-#: addressbook/gui/component/addressbook-config.c:662
-msgid "Edit Addressbook"
-msgstr "Editar agenda de direcciones"
-
-#: addressbook/gui/component/addressbook-config.c:664
-msgid "Add Addressbook"
-msgstr "Añadir agenda de direcciones"
-
-#: addressbook/gui/component/addressbook-config.c:682
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-"Seleccione el tipo de agenda de direcciones que tiene, e introduzca la "
-"información relevante acerca de ella."
-
-#: addressbook/gui/component/addressbook-config.c:688
-#: mail/mail-config.glade.h:43
-msgid "Name:"
-msgstr "Nombre:"
-
-#: addressbook/gui/component/addressbook-config.c:689
-msgid "FIXME Name help text here"
-msgstr "FIXME Name help text here"
-
-#: addressbook/gui/component/addressbook-config.c:691
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr "Descripción:"
-
-#: addressbook/gui/component/addressbook-config.c:692
-msgid "FIXME Description help text here"
-msgstr "FIXME Description help text here"
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-msgid "Addressbook Sources"
-msgstr "Fuentes de la agenda de direcciones"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:235
-#: addressbook/gui/widgets/e-addressbook-view.c:616
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:11 mail/mail-config.glade.h:23
-#: mail/message-browser.c:202 ui/evolution-addressbook.xml.h:3
-#: ui/evolution-event-editor.xml.h:17 ui/evolution-mail.xml.h:22
-#: ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr "Borrar"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:28
-msgid "Edit"
-msgstr "Editar"
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-msgid "Name"
-msgstr "Nombre"
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-msgid "URI"
-msgstr "URI"
-
-#: addressbook/gui/component/addressbook-storage.c:99
-msgid "Other Contacts"
-msgstr "Otros contactos"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Disable Queries"
-msgstr "Deshabilitar Consultas"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Enable Queries (Dangerous!)"
-msgstr "Habilitar Consultas (¡Peligroso!)"
-
-#: addressbook/gui/component/e-address-widget.c:388
-#: addressbook/gui/component/select-names/e-select-names-popup.c:281
-msgid "Edit Contact Info"
-msgstr "Editar información de contacto"
-
-#: addressbook/gui/component/e-address-widget.c:424
-#: addressbook/gui/component/select-names/e-select-names-popup.c:347
-msgid "Add to Contacts"
-msgstr "Añadir a Contactos"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-msgid "A Bonobo control for an address popup."
-msgstr "Un control Bonobo para una ventada de dirección."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A Bonobo control for displaying an address."
-msgstr "Un control Bonobo para mostrar una dirección."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr "Un control Bonobo de ejemplo que muestra una agenda."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr "Control que muestra minitarjetas de direcciones en Evolution."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-msgid "Evolution Addressbook minicard viewer"
-msgstr "Visor de Minitarjetas de Direcciones de Evolution"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-msgid "Evolution component for handling contacts."
-msgstr "Componente de Evolution para manejar contactos."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-msgid "Factory for the Addressbook Minicard control"
-msgstr "Factoría para el controlde Minitarjetas de Direcciones"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-msgid "Factory for the Addressbook's address displayer"
-msgstr "Factoría para el visualizador de direcciones de la Agenda"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-msgid "Factory for the Addressbook's address popup"
-msgstr "Factoría para la ventana de direcciones de la Agenda"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:10
-msgid "Factory for the Evolution addressbook component."
-msgstr "Factoría para el componente de agenda de Evolution."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:11
-msgid "Factory for the sample Addressbook control"
-msgstr "Factoría para el control de ejemplo de la Agenda"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:161
-#: composer/e-msg-composer-attachment-bar.c:468 filter/filter-filter.c:401
-#: filter/filter-rule.c:549 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:265 shell/e-shortcuts-view.c:388
-msgid "Remove"
-msgstr "Quitar"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:176
-msgid "Remove All"
-msgstr "Quitar Todas"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:200
-msgid "Send HTML Mail?"
-msgstr "¿Enviar correo en HTML?"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-msgid "Evolution's addressbook name selection interface."
-msgstr "Interfaz de Evolutión de selección de nombre de la agenda."
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr "Factoría para la interfaz de selección de nombre de la Agenda"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr "Buscar..."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-msgid "Message Recipients"
-msgstr "Lista de destinatarios"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-msgid "Select Names"
-msgstr "_Seleccionar nombres"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-msgid "Select name from:"
-msgstr "Seleccionar nombre de:"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:158
-#: mail/mail-search.c:242
-msgid "Search"
-msgstr "Buscar"
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr "123"
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr "a"
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr "b"
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr "c"
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr "d"
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr "e"
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr "f"
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr "g"
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr "h"
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr "i"
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr "j"
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr "k"
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr "l"
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr "m"
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr "n"
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-msgid "o"
-msgstr "o"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr "p"
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr "q"
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-msgid "r"
-msgstr "r"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr "s"
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr "t"
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr "u"
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr "v"
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr "w"
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr "x"
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr "y"
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr "z"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:135
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:230
-#: addressbook/gui/widgets/e-addressbook-view.c:551
-#: addressbook/gui/widgets/e-addressbook-view.c:611
-msgid "Save as VCard"
-msgstr "Guardar como vCard"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:231
-#: addressbook/gui/widgets/e-addressbook-view.c:612
-msgid "Send contact to other"
-msgstr "Enviar el contacto a otro"
-
-#
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:232
-#: addressbook/gui/widgets/e-addressbook-view.c:613
-msgid "Send message to contact"
-msgstr "Enviar un mensaje al contacto"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:233
-#: addressbook/gui/widgets/e-addressbook-view.c:614 mail/message-browser.c:199
-#: ui/evolution-addressbook.xml.h:9 ui/evolution-calendar.xml.h:23
-#: ui/evolution-mail.xml.h:65 ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr "Imprimir"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:234
-#: addressbook/gui/widgets/e-addressbook-view.c:615
-msgid "Print Envelope"
-msgstr "Imprimir cabecera"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:698
-msgid "* Click here to add a contact *"
-msgstr "* Pulse aquí para añadir un contacto *"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:699
-msgid "File As"
-msgstr "Archivar como"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:701
-msgid "Email"
-msgstr "Correo electrónico"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:702
-msgid "Primary Phone"
-msgstr "Teléfono Principal"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:703
-msgid "Assistant Phone"
-msgstr "Teléfono del Asistente"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:704
-msgid "Business Phone"
-msgstr "Teléfono del Trabajo"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:705
-msgid "Callback Phone"
-msgstr "Teléfono para rellamadas"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:706
-msgid "Company Phone"
-msgstr "Teléfono de la compañía"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:707
-msgid "Home Phone"
-msgstr "Teléfono de casa"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:708
-msgid "Organization"
-msgstr "Organización"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:709
-msgid "Business Address"
-msgstr "Dirección del trabajo"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:710
-msgid "Home Address"
-msgstr "Dirección de su casa"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:711
-msgid "Mobile Phone"
-msgstr "Teléfono móvil"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:712
-msgid "Car Phone"
-msgstr "Teléfono del coche"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:715
-msgid "Business Phone 2"
-msgstr "Teléfono del trabajo 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:716
-msgid "Home Phone 2"
-msgstr "Teléfono de casa 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:718
-msgid "Other Phone"
-msgstr "Otro teléfono"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:723
-msgid "TTY"
-msgstr "TTY"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:724
-msgid "Other Address"
-msgstr "Otra dirección"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:727
-msgid "Web Site"
-msgstr "Sitio Web"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:728
-msgid "Department"
-msgstr "Departamento"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:729
-msgid "Office"
-msgstr "Oficina"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:730
-msgid "Title"
-msgstr "Título"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:731
-msgid "Profession"
-msgstr "Profesión"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:732
-msgid "Manager"
-msgstr "Encargado"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:734
-msgid "Nickname"
-msgstr "Nick"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:735
-msgid "Spouse"
-msgstr "Cónyuge"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:736
-msgid "Note"
-msgstr "Nota"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:737
-msgid "Free-busy URL"
-msgstr "URL de disponibilidad"
-
-#: addressbook/gui/widgets/e-minicard-control.c:282
-msgid "Save in addressbook"
-msgstr "Guardar en la agenda de direcciones"
-
-#: addressbook/gui/widgets/e-minicard-view.c:216
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-"\n"
-"\n"
-"No hay elementos para mostrar en esta vista\n"
-"\n"
-"Pulse dos veces aquí para crear un nuevo contacto."
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:26
-msgid "Card View"
-msgstr "Vista de la tarjeta"
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr "10 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr "8 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr "Formularios vacíos al final:"
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr "Cuerpo"
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr "Pie:"
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr "Dimensiones:"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr "Fuente..."
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr "Fuentes"
-
-#: addressbook/printing/e-contact-print.glade.h:9
-msgid "Footer:"
-msgstr "Pie:"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr "Formatear"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-msgid "Header"
-msgstr "Cabecera"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr "Cabecera/Pie"
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr "Títulos"
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr "Títulos para cada carta"
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr "Alto:"
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr "Uno inmediatamente detrás del otro"
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr "Incluye:"
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr "Horizontal"
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr "Izquierda:"
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr "Las pestañas con las letras a la derecha"
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr "Margenes"
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr "Número de columnas:"
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr "Opciónes"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr "Orientación"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr "Pagina"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-msgid "Page Setup:"
-msgstr "Configuración de la página:"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr "Papel"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr "Fuente del papel:"
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr "Vertical"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr "Vista previa:"
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr "Imprimir usando un oscurecimiento gris"
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr "Reverso en páginas impares"
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr "Derecha:"
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr "Secciones:"
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr "Oscureciendo"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-msgid "Size:"
-msgstr "Tamaño:"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr "Comenzar en una nueva página"
-
-#: addressbook/printing/e-contact-print.glade.h:38
-msgid "Style name:"
-msgstr "Nombre del estilo:"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr "Encabezado:"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-msgid "Type:"
-msgstr "Tipo:"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr "Ancho:"
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr "Error mientras me comunicaba con el servidor de calendario"
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr "No pude leer información de la aplicación de calendario del pilot"
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr "No pude leer los datos de la aplicación ToDo de la pilot"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr "Recordatorio de su cita a las "
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-msgid "Snooze"
-msgstr "Recordatorio"
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr "Ok"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr "Servicio de notificación de alarmas"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-msgid "Factory for the alarm notification service"
-msgstr "Factoria para la alarma del servicio denotificación"
-
-#: calendar/gui/alarm-notify/notify-main.c:56
-#, c-format
-msgid ""
-"It is %s. The Unix time is %ld right now. We just thought you may like to "
-"know."
-msgstr ""
-"Son las %s. El tiempo Unix es %ld en estos momentos. pensamos que le "
-"gustaria saberlo."
-
-#: calendar/gui/alarm-notify/notify-main.c:93 calendar/gui/main.c:52
-msgid "Could not initialize GNOME"
-msgstr "No se puede inicializar GNOME"
-
-#: calendar/gui/alarm-notify/notify-main.c:108
-msgid "Could not create the alarm notify service factory"
-msgstr "No pude crear la factoría del servicio de la alarma de notificación"
-
-#: calendar/gui/calendar-commands.c:266
-msgid "File not found"
-msgstr "Archivo no encontrado"
-
-#: calendar/gui/calendar-commands.c:290
-msgid "Open calendar"
-msgstr "Abrir calendario"
-
-#: calendar/gui/calendar-commands.c:332
-msgid "Save calendar"
-msgstr "Guardar calendario"
-
-#: calendar/gui/calendar-commands.c:468
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr "No pude mostrar el calendario. Por favor compruebe su ORBit y su OAF."
-
-#: calendar/gui/calendar-model.c:360 calendar/gui/calendar-model.c:898
-#: calendar/gui/e-calendar-table.c:323
-msgid "Public"
-msgstr "Público"
-
-#: calendar/gui/calendar-model.c:363 calendar/gui/calendar-model.c:900
-#: calendar/gui/e-calendar-table.c:324
-msgid "Private"
-msgstr "Privado"
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:902
-#: calendar/gui/e-calendar-table.c:325
-msgid "Confidential"
-msgstr "Confidencial"
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/event-editor.c:1601
-#: calendar/gui/event-editor.c:1628
-#: camel/providers/smtp/camel-smtp-transport.c:221
-msgid "Unknown"
-msgstr "Desconocido"
-
-#: calendar/gui/calendar-model.c:457
-msgid "N"
-msgstr "N"
-
-#: calendar/gui/calendar-model.c:457
-msgid "S"
-msgstr "S"
-
-#: calendar/gui/calendar-model.c:459
-msgid "E"
-msgstr "E"
-
-#: calendar/gui/calendar-model.c:459
-msgid "W"
-msgstr "W"
-
-#: calendar/gui/calendar-model.c:497 calendar/gui/calendar-model.c:1066
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:345 mail/message-list.c:689
-msgid "High"
-msgstr "Alta"
-
-#: calendar/gui/calendar-model.c:499 calendar/gui/calendar-model.c:1068
-#: calendar/gui/calendar-model.c:1574
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:346 mail/message-list.c:688
-msgid "Normal"
-msgstr "Normal"
-
-#: calendar/gui/calendar-model.c:501 calendar/gui/calendar-model.c:1070
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:347 mail/message-list.c:687
-msgid "Low"
-msgstr "Baja"
-
-#: calendar/gui/calendar-model.c:537 calendar/gui/calendar-model.c:1122
-#: calendar/gui/e-calendar-table.c:399
-msgid "Transparent"
-msgstr "Transparente"
-
-#: calendar/gui/calendar-model.c:540 calendar/gui/calendar-model.c:1124
-#: calendar/gui/e-calendar-table.c:398
-msgid "Opaque"
-msgstr "Opaco"
-
-#: calendar/gui/calendar-model.c:638 calendar/gui/calendar-model.c:1176
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:419
-msgid "Not Started"
-msgstr "Sin comenzando"
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1178
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:420
-msgid "In Progress"
-msgstr "En proceso"
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1180
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:421
-msgid "Completed"
-msgstr "Completado"
-
-#: calendar/gui/calendar-model.c:647 calendar/gui/calendar-model.c:1182
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:422 camel/camel-service.c:544
-#: camel/camel-service.c:580
-msgid "Cancelled"
-msgstr "Cancelar"
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:794 e-util/e-time-utils.c:278
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr "%a %m/%d/%Y %H:%M:%S"
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:797 e-util/e-time-utils.c:287
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr "%a %m/%d/%Y %I:%M:%S %p"
-
-#: calendar/gui/calendar-model.c:802
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-"La fecha debe ser escrita en la forma: \n"
-"\n"
-"%s"
-
-#: calendar/gui/calendar-model.c:882
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr ""
-"La clasificación debe ser 'Pública', 'Privada', 'Confidencial' o 'Ninguna'"
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:896 calendar/gui/calendar-model.c:1120
-#: calendar/gui/calendar-model.c:1174 calendar/gui/e-calendar-table.c:322
-#: calendar/gui/e-calendar-table.c:397 mail/mail-account-gui.c:976
-#: mail/mail-accounts.c:120 mail/mail-accounts.c:164
-#: mail/mail-config.glade.h:46 shell/e-shell-view.c:1312
-#: widgets/misc/e-cell-date-edit.c:237 widgets/misc/e-dateedit.c:432
-#: widgets/misc/e-dateedit.c:1341 widgets/misc/e-dateedit.c:1456
-msgid "None"
-msgstr "Ninguno"
-
-#: calendar/gui/calendar-model.c:970
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-"La posición geográfica debe ser escrita en la forma: \n"
-"\n"
-"45.436845,125.862501"
-
-#: calendar/gui/calendar-model.c:1010
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr "El valor del porcentaje debe estar entre 0 y 100"
-
-#: calendar/gui/calendar-model.c:1051
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr "La prioridad debe ser 'Alta', 'Normal', 'Baja' o 'Indefinida'"
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1064
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:348
-msgid "Undefined"
-msgstr "Sin definir"
-
-#: calendar/gui/calendar-model.c:1105
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr "La transparencia debe ser 'Transparente', 'Opaca' o 'Ninguna'."
-
-#: calendar/gui/calendar-model.c:1576
-msgid "Recurring"
-msgstr "Recurriendo"
-
-#: calendar/gui/calendar-model.c:1578
-msgid "Assigned"
-msgstr "Asignado"
-
-#: calendar/gui/calendar-model.c:1584
-msgid "Yes"
-msgstr "Si"
-
-#: calendar/gui/calendar-model.c:1584
-msgid "No"
-msgstr "No"
-
-#: calendar/gui/calendar-summary.c:198
-msgid "%A, %e %B %Y"
-msgstr "%A, %e %B %Y"
-
-#: calendar/gui/calendar-summary.c:207
-msgid "Appointments"
-msgstr "Citas"
-
-#: calendar/gui/calendar-summary.c:245 calendar/gui/calendar-summary.c:251
-msgid "%I:%M%p"
-msgstr "%I:%M%p"
-
-#: calendar/gui/calendar-summary.c:275 calendar/gui/print.c:948
-#: views/tasks/galview.xml.h:1
-msgid "Tasks"
-msgstr "Tareas"
-
-#: calendar/gui/calendar-summary.c:443
-msgid "<b>Error loading calendar</b>"
-msgstr "<b>Error cargando el calendario</b>"
-
-#: calendar/gui/calendar-summary.c:455
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr "<b>Error cargando el calendario:<br>Método no soportado"
-
-#: calendar/gui/calendar-summary.c:622 mail/mail-config.glade.h:24
-msgid "Display"
-msgstr "Mostrar"
-
-#: calendar/gui/calendar-summary.c:627
-msgid "Show appointments"
-msgstr "Mostrar citas"
-
-#: calendar/gui/calendar-summary.c:635
-msgid "Show tasks"
-msgstr "Mostrar tareas"
-
-#: calendar/gui/calendar-summary.c:690
-msgid "Things to do"
-msgstr "Cosas por hacer"
-
-#: calendar/gui/calendar-summary.c:721 calendar/gui/e-itip-control.glade.h:7
-msgid "Loading Calendar"
-msgstr "Cargando calendario"
-
-#: calendar/gui/control-factory.c:126
-msgid "The URI that the calendar will display"
-msgstr "La URI que mostrará el calendario"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:189
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr "Alarma en %A %b %d %Y %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:196
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr "Notificación sobre su cita en %A %b %d %Y %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:207
-msgid "No summary available."
-msgstr "No hay un sumario disponible."
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:5
-msgid "Close"
-msgstr "Cerrar"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-msgid "Edit appointment"
-msgstr "Editas una cita"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr "Tiempo de recordatorio (minutos)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr "05 minutos"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr "10 minutos"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr "12 horas (am/pm)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr "15 minutos"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr "24 horas"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr "30 minutos"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr "60 minutos"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr "Las alarmas cesan tras"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr "Alarmas auditivas"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr "Pitar cuando aparezca la ventana de la alarma."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-msgid "Calendar"
-msgstr "Calendario"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr "Preferencias del calendario"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "Colores"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr "Comprimir fines de semana"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr "Opciónes de la fecha del navegador"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-msgid "Defaults"
-msgstr "Valores predeterminados"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr "Mostrar opciónes"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:155
-msgid "Due Date"
-msgstr "Fecha de plazo"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr "Habilitar recordatorio para"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr "Fin del día:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr "Primer día de la semana:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr "Vier"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:479
-msgid "Friday"
-msgstr "Viernes"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr "Resaltar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr "Elementos de plazo hoy"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr "Elementos con plazo para hoy:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr "Elementos dentro de plazo"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr "Elementos dentro del plazo:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr "Lun"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:475
-msgid "Monday"
-msgstr "Lunes"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr "Elementos fuera de plazo"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr "Elementos fuera de plazo:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:54
-msgid "Pick a color"
-msgstr "Elije un color"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:158
-msgid "Priority"
-msgstr "Prioridad"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-msgid "Remind me of all appointments"
-msgstr "Recuerdame todas las citas"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-msgid "Reminders"
-msgstr "Recordatorios"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr "Sab"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:480
-msgid "Saturday"
-msgstr "Sábado"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr "Mostrar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-msgid "Show appointment end times"
-msgstr "Mostrar la hora del final de las citas"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr "Mostrar los números de las semanas"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr "Comienzo del día:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr "Dom"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:481
-msgid "Sunday"
-msgstr "Domingo"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-msgid "TaskPad"
-msgstr "Tabla de tares"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr "Jue"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:478
-msgid "Thursday"
-msgstr "Jueves"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr "Tiempo hasta el plazo"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr "Divisiónes de tiempo:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr "Formato del tiempo:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr "Mar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:476
-msgid "Tuesday"
-msgstr "Martes"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr "Alarmas visuales"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr "Mier"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:477
-msgid "Wednesday"
-msgstr "Miércoles"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr "Semana laboral"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr "minutos antes de que ocurra."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:88
-msgid "seconds."
-msgstr "segundos."
-
-#: calendar/gui/dialogs/delete-comp.c:84
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr "¿Esta seguro que quiere borrar la cita `%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:87
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr "¿Esta seguro que quiere borrar esta cita sin título?"
-
-#: calendar/gui/dialogs/delete-comp.c:93
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr "¿Esta seguro que quiere borrar la tarea `%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:96
-msgid "Are you sure you want to delete this untitled task?"
-msgstr "¿Esta seguro que quiere borrar esta tarea sin título?"
-
-#: calendar/gui/dialogs/delete-comp.c:102
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr "¿Esta seguro que quiere borrar la entrada del diario `%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:105
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr "¿Esta seguro que quiere borrar esta entrada del diario sin título?"
-
-#: calendar/gui/dialogs/delete-comp.c:120
-msgid "Are you sure you want to delete %d appointments?"
-msgstr "¿Esta seguro que quiere borrar %d citas?"
-
-#: calendar/gui/dialogs/delete-comp.c:125
-msgid "Are you sure you want to delete %d tasks?"
-msgstr "¿Esta seguro que quiere borrar %d tareas?"
-
-#: calendar/gui/dialogs/delete-comp.c:130
-msgid "Are you sure you want to delete %d journal entries?"
-msgstr "¿Esta seguro que quiere borrar %d entradas del diario?"
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr "¿Desea guardar los cambios?"
-
-#: calendar/gui/dialogs/task-editor.c:709
-msgid "Edit Task"
-msgstr "Editar Tarea"
-
-#: calendar/gui/dialogs/task-editor.c:714 calendar/gui/event-editor.c:382
-#, c-format
-msgid "Appointment - %s"
-msgstr "Cita - %s"
-
-#: calendar/gui/dialogs/task-editor.c:717 calendar/gui/event-editor.c:385
-#, c-format
-msgid "Task - %s"
-msgstr "Tarea - %s"
-
-#: calendar/gui/dialogs/task-editor.c:720 calendar/gui/event-editor.c:388
-#, c-format
-msgid "Journal entry - %s"
-msgstr "Entrada del diario - %s"
-
-#: calendar/gui/dialogs/task-editor.c:734 calendar/gui/event-editor.c:402
-msgid "No summary"
-msgstr "Sin resumen"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr "% Comp_leto:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:151
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr "Clasificación"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-msgid "Date & Time"
-msgstr "Fecha y Hora"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr "Fecha Completada:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-msgid "Pri_vate"
-msgstr "Pri_vado"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-msgid "Progress"
-msgstr "Progreso"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr "Pú_blico"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-msgid "Sta_rt Date:"
-msgstr "Fecha de Ini_cio:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-msgid "Su_mmary:"
-msgstr "Resu_men:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr "Tarea"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-msgid "URL:"
-msgstr "URL:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr "_Confidencial"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Contacts..."
-msgstr "_Contactos..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-msgid "_Due Date:"
-msgstr "Fecha _de Fin:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-msgid "_Priority:"
-msgstr "_Prioridad:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "_Status:"
-msgstr "E_stado:"
-
-#: calendar/gui/e-calendar-table.c:150
-msgid "Categories"
-msgstr "Categorías"
-
-#: calendar/gui/e-calendar-table.c:152
-msgid "Completion Date"
-msgstr "Fecha de vencimiento"
-
-#: calendar/gui/e-calendar-table.c:153
-msgid "End Date"
-msgstr "Fecha fin"
-
-#: calendar/gui/e-calendar-table.c:154
-msgid "Start Date"
-msgstr "Fecha de Inicio"
-
-#: calendar/gui/e-calendar-table.c:156
-msgid "Geographical Position"
-msgstr "Posición geográfica"
-
-#: calendar/gui/e-calendar-table.c:157
-msgid "Percent complete"
-msgstr "Porcentaje completado"
-
-#: calendar/gui/e-calendar-table.c:159
-msgid "Summary"
-msgstr "Resumen"
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "Transparency"
-msgstr "Transparencia"
-
-#: calendar/gui/e-calendar-table.c:161
-msgid "URL"
-msgstr "URL"
-
-#: calendar/gui/e-calendar-table.c:162
-msgid "Alarms"
-msgstr "Alarmas"
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Click here to add a task"
-msgstr "Pulse aquí para añadir una tarea"
-
-#: calendar/gui/e-calendar-table.c:367
-#, c-format
-msgid "0%"
-msgstr "0%"
-
-#: calendar/gui/e-calendar-table.c:368
-#, c-format
-msgid "10%"
-msgstr "10%"
-
-#: calendar/gui/e-calendar-table.c:369
-#, c-format
-msgid "20%"
-msgstr "20%"
-
-#: calendar/gui/e-calendar-table.c:370
-#, c-format
-msgid "30%"
-msgstr "30%"
-
-#: calendar/gui/e-calendar-table.c:371
-#, c-format
-msgid "40%"
-msgstr "40%"
-
-#: calendar/gui/e-calendar-table.c:372
-#, c-format
-msgid "50%"
-msgstr "50%"
-
-#: calendar/gui/e-calendar-table.c:373
-#, c-format
-msgid "60%"
-msgstr "60%"
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "70%"
-msgstr "70%"
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "80%"
-msgstr "80%"
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "90%"
-msgstr "90%"
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "100%"
-msgstr "100%"
-
-#: calendar/gui/e-calendar-table.c:705
-msgid "Edit this task"
-msgstr "Editar esta tarea"
-
-#: calendar/gui/e-calendar-table.c:707
-msgid "Mark as complete"
-msgstr "Marcar como completa"
-
-#: calendar/gui/e-calendar-table.c:708
-#: ui/evolution-task-editor-dialog.xml.h:19
-msgid "Delete this task"
-msgstr "Borrar esta tarea"
-
-#: calendar/gui/e-calendar-table.c:713
-msgid "Mark tasks as complete"
-msgstr "Marcar tareas como completas"
-
-#: calendar/gui/e-calendar-table.c:714
-msgid "Delete selected tasks"
-msgstr "Borrar las tareas seleccionadas"
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:570 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:617
-msgid "am"
-msgstr "am"
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:573 calendar/gui/e-week-view.c:303
-#: calendar/gui/print.c:616
-msgid "pm"
-msgstr "pm"
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:274 calendar/gui/e-day-view.c:1294
-#: calendar/gui/e-week-view-main-item.c:325
-msgid "%A %d %B"
-msgstr "%A %b de %B"
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:278 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:334
-msgid "%a %d %b"
-msgstr "%a, %d de %b de %Y"
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:282 calendar/gui/e-day-view.c:1321
-#: calendar/gui/e-week-view-main-item.c:348
-msgid "%d %b"
-msgstr "%d de %b"
-
-#: calendar/gui/e-day-view.c:3146 ui/evolution-calendar.xml.h:16
-msgid "New Appointment"
-msgstr "Nueva cita"
-
-#: calendar/gui/e-day-view.c:3148 calendar/gui/e-week-view.c:3279
-msgid "New All Day Event"
-msgstr "Nuevo evento para todo el día"
-
-#: calendar/gui/e-day-view.c:3153 calendar/gui/e-week-view.c:3284
-msgid "Go to Today"
-msgstr "Ir a hoy"
-
-#: calendar/gui/e-day-view.c:3155 calendar/gui/e-week-view.c:3286
-msgid "Go to Date..."
-msgstr "Ir a una fecha..."
-
-#: calendar/gui/e-day-view.c:3162 calendar/gui/e-week-view.c:3292
-#: ui/evolution-calendar.xml.h:19 ui/evolution-message-composer.xml.h:11
-msgid "Open"
-msgstr "Abrir"
-
-#: calendar/gui/e-day-view.c:3164 calendar/gui/e-week-view.c:3294
-msgid "Delete this Appointment"
-msgstr "Borrar esta Cita"
-
-#: calendar/gui/e-day-view.c:3166 calendar/gui/e-week-view.c:3296
-#: ui/evolution-event-editor.xml.h:45
-msgid "Schedule Meeting"
-msgstr "Concertar encuentro"
-
-#: calendar/gui/e-day-view.c:3175 calendar/gui/e-week-view.c:3309
-msgid "Make this Occurrence Movable"
-msgstr "Hacer esta Ocurrencia Movible"
-
-#: calendar/gui/e-day-view.c:3177 calendar/gui/e-week-view.c:3311
-msgid "Delete this Occurrence"
-msgstr "Borrar esta Ocurrencia"
-
-#: calendar/gui/e-day-view.c:3179
-msgid "Delete all Occurrences"
-msgstr "Borrar todas las Ocurrencias"
-
-#: calendar/gui/e-day-view-time-item.c:519
-#, c-format
-msgid "%02i minute divisions"
-msgstr "%02i divisiónes por minuto"
-
-#: calendar/gui/e-itip-control.c:161
-msgid "I couldn't update your calendar file!\n"
-msgstr "¡No pude actualizar el archivo de su calendario!\n"
-
-#: calendar/gui/e-itip-control.c:167 calendar/gui/e-itip-control.c:510
-msgid "Component successfully updated."
-msgstr "Componente actualizado satisfactoriamente."
-
-#: calendar/gui/e-itip-control.c:173
-msgid "There was an error loading the calendar file."
-msgstr "Hubo un error cargando al archivo del calendario."
-
-#: calendar/gui/e-itip-control.c:197
-msgid "I couldn't open your calendar file!\n"
-msgstr "¡No pude abrir el archivo de su calendario!\n"
-
-#: calendar/gui/e-itip-control.c:458 calendar/gui/e-itip-control.c:529
-msgid "I couldn't load your calendar file!\n"
-msgstr "¡No pude cargar el archivo de su calendario!\n"
-
-#: calendar/gui/e-itip-control.c:470
-msgid "I couldn't read your calendar file!\n"
-msgstr "¡No pude leer el archivo de su calendario!\n"
-
-#: calendar/gui/e-itip-control.c:483
-msgid "This is a reply from someone who was uninvited!"
-msgstr "¡Esta es una respuesta de alguien que no estaba invitado!"
-
-#: calendar/gui/e-itip-control.c:499
-msgid "I couldn't update your calendar store."
-msgstr "No pude actualizar el alamacen de su calendario."
-
-#: calendar/gui/e-itip-control.c:540
-msgid "I couldn't delete the calendar component!\n"
-msgstr "¡No pude borrar el componente del calendario!\n"
-
-#: calendar/gui/e-itip-control.c:550
-msgid "Component successfully deleted."
-msgstr "Componente borrado satisfactoriamente."
-
-#: calendar/gui/e-itip-control.c:694
-msgid "I don't recognize this type of calendar component."
-msgstr "No reconozco este tipo de componente de calendario."
-
-#: calendar/gui/e-itip-control.c:780
-msgid "Add to Calendar"
-msgstr "Añadir al calendario"
-
-#: calendar/gui/e-itip-control.c:814
-msgid " Accept "
-msgstr "Aceptar "
-
-#: calendar/gui/e-itip-control.c:815
-msgid " Decline "
-msgstr "Declinar "
-
-#: calendar/gui/e-itip-control.c:816
-msgid " Tentative "
-msgstr "Tentativa "
-
-#: calendar/gui/e-itip-control.c:860
-msgid "Update Calendar"
-msgstr "Actualizar calendario"
-
-#: calendar/gui/e-itip-control.c:883
-msgid "Cancel Meeting"
-msgstr "Cancelar encuentro"
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, no-c-format
-msgid "%P %%"
-msgstr "%P %%"
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr "--to--"
-
-#: calendar/gui/e-itip-control.glade.h:4
-msgid "Calendar Message"
-msgstr "Mensaje del Calendario"
-
-#: calendar/gui/e-itip-control.glade.h:5
-msgid "Date:"
-msgstr "Fecha:"
-
-#: calendar/gui/e-itip-control.glade.h:8
-msgid "Loading calendar..."
-msgstr "Cargando calendario..."
-
-#: calendar/gui/e-itip-control.glade.h:9
-msgid "Organizer:"
-msgstr "Organizador:"
-
-#: calendar/gui/e-itip-control.glade.h:10
-msgid "Server Message:"
-msgstr "Mensaje del Servidor:"
-
-#: calendar/gui/e-itip-control.glade.h:11
-msgid "Summary:"
-msgstr "Resumen:"
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr "fecha de fin"
-
-#: calendar/gui/e-itip-control.glade.h:13
-msgid "date-start"
-msgstr "fecha de inicio"
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-msgid "Attendee"
-msgstr "Asistentes"
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-msgid "Attendee address"
-msgstr "Dirección de los asistentes"
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-msgid "Attendees: "
-msgstr "Asistentes: "
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr ""
-"Cancelar\n"
-"Encuentro"
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-msgid "Chair"
-msgstr "Silla"
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-msgid "Meeting Invitations"
-msgstr "Invitaciones para la reunión"
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr "No participa"
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr "Participación opcional"
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-msgid "Organizer: "
-msgstr "Organizador: "
-
-#: calendar/gui/e-meeting-dialog.glade.h:14
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-"Publicar\n"
-"Evento"
-
-#: calendar/gui/e-meeting-dialog.glade.h:16
-msgid "RSVP"
-msgstr "RSVP"
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid ""
-"Request\n"
-"Meeting"
-msgstr ""
-"Concertar\n"
-"Encuentro"
-
-#: calendar/gui/e-meeting-dialog.glade.h:19
-msgid "Required Participant"
-msgstr "Participantes requeridos"
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-msgid "Role"
-msgstr "Papel"
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-msgid ""
-"Schedule\n"
-"Time"
-msgstr ""
-"Concertar\n"
-"Hora"
-
-#: calendar/gui/e-meeting-dialog.glade.h:23 filter/libfilter-i18n.h:49
-#: mail/message-list.c:1081
-msgid "Status"
-msgstr "Estado"
-
-#: calendar/gui/e-tasks.c:149 calendar/gui/e-tasks.c:469
-#: calendar/gui/e-tasks.c:502
-msgid "All"
-msgstr "Todo"
-
-#: calendar/gui/e-tasks.c:155
-msgid "Category:"
-msgstr "Categorías:"
-
-#: calendar/gui/e-tasks.c:298
-#, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "No puedo cargar las tareas en `%s'"
-
-#: calendar/gui/e-tasks.c:310
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr "El método necesario para cargar `%s' no esta soportado"
-
-#: calendar/gui/event-editor.c:377
-msgid "Edit Appointment"
-msgstr "Editar Cita"
-
-#: calendar/gui/event-editor.c:449
-msgid "on"
-msgstr "en"
-
-#: calendar/gui/event-editor.c:474 filter/filter-datespec.c:81
-msgid "day"
-msgstr "día"
-
-#: calendar/gui/event-editor.c:601
-msgid "on the"
-msgstr "en el"
-
-#: calendar/gui/event-editor.c:608
-msgid "th"
-msgstr "º"
-
-#: calendar/gui/event-editor.c:754
-msgid "occurrences"
-msgstr "ocurrencias"
-
-#: calendar/gui/event-editor.c:871
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr "Esta cita tiene recurrencias que no pueden ser editadas por Evolution."
-
-#: calendar/gui/event-editor.c:1543
-#, c-format
-msgid " %d days"
-msgstr "%d días"
-
-#: calendar/gui/event-editor.c:1545
-msgid " 1 day"
-msgstr " 1 día"
-
-#: calendar/gui/event-editor.c:1548
-#, c-format
-msgid " %d weeks"
-msgstr " %d semanas"
-
-#: calendar/gui/event-editor.c:1550
-msgid " 1 week"
-msgstr " 1 semana"
-
-#: calendar/gui/event-editor.c:1553
-#, c-format
-msgid " %d hours"
-msgstr " %d horas"
-
-#: calendar/gui/event-editor.c:1555
-msgid " 1 hour"
-msgstr " 1 hora"
-
-#: calendar/gui/event-editor.c:1558
-#, c-format
-msgid " %d minutes"
-msgstr " %d minutos"
-
-#: calendar/gui/event-editor.c:1560
-msgid " 1 minute"
-msgstr "1 minuto"
-
-#: calendar/gui/event-editor.c:1563
-#, c-format
-msgid " %d seconds"
-msgstr " %d segundos"
-
-#: calendar/gui/event-editor.c:1565
-msgid " 1 second"
-msgstr " 1 segundo"
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1588
-msgid "Play a sound"
-msgstr "Tocar un sonido"
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1591
-msgid "Show a dialog"
-msgstr "Mostrar un diálogo"
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1594
-msgid "Send an email"
-msgstr "Enviar un correo"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1597
-msgid "Run a program"
-msgstr "Ejecutar un programa"
-
-#: calendar/gui/event-editor.c:1612
-msgid " before start of appointment"
-msgstr "antes del inicio de la cita"
-
-#: calendar/gui/event-editor.c:1614
-msgid " after start of appointment"
-msgstr "tras el inicio de la cita"
-
-#: calendar/gui/event-editor.c:1622
-msgid " before end of appointment"
-msgstr "antes del fin de la cita"
-
-#: calendar/gui/event-editor.c:1624
-msgid " after end of appointment"
-msgstr "tras el fin de la cita"
-
-#: calendar/gui/event-editor.c:3132 calendar/gui/print.c:1097
-#: calendar/gui/print.c:1099 calendar/gui/print.c:1100
-msgid "%a %b %d %Y"
-msgstr "%a %b %d %Y"
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr "Evento para todo e_l día"
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-msgid "Appointment"
-msgstr "Cita"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-msgid "Appointment Basics"
-msgstr "Bases de la citas"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-msgid "Custom recurrence"
-msgstr "Recurrencia personalizada"
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr "Cada"
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-msgid "Exceptions"
-msgstr "Excepciones"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-msgid "Modify"
-msgstr "Modificar"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-msgid "No recurrence"
-msgstr "Sin recurrencia"
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-msgid "Preview"
-msgstr "Vista previa"
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Recurrence"
-msgstr "Recurrencia"
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-msgid "Recurrence Rule"
-msgstr "Regla de recurrencia"
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-msgid "Reminder"
-msgstr "Recordatorio"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-msgid "Settings..."
-msgstr "Configuración..."
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr "Recurrencia simple"
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-msgid "_End time:"
-msgstr "Hora de _fin:"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Start time:"
-msgstr "Hora de _inicio:"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Starting date:"
-msgstr "Fecha de Ini_cio:"
-
-#. Automatically generated. Do not edit.
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:2
-msgid "after"
-msgstr "después de"
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:6
-msgid "before"
-msgstr "antes"
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "day(s)"
-msgstr "día(s)"
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-msgid "end of appointment"
-msgstr "fin de la cita"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "for"
-msgstr "para"
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr "siempre"
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-msgid "hour(s)"
-msgstr "hora(s)"
-
-#: calendar/gui/event-editor-dialog.glade.h:40 mail/mail-config.glade.h:87
-msgid "minute(s)"
-msgstr "minuto(s)"
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "month(s)"
-msgstr "mes(es)"
-
-#: calendar/gui/event-editor-dialog.glade.h:42
-msgid "start of appointment"
-msgstr "comienzo de cita"
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-msgid "until"
-msgstr "hasta"
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "week(s)"
-msgstr "semana(s)"
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "year(s)"
-msgstr "año(s)"
-
-#: calendar/gui/e-week-view.c:3277 calendar/gui/e-week-view.c:3300
-msgid "New Appointment..."
-msgstr "Nueva Cita..."
-
-#: calendar/gui/e-week-view.c:3313
-msgid "Delete All Occurrences"
-msgstr "Borrar todas las Ocurrencias"
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:342
-msgid "%d %B"
-msgstr "%d de %B"
-
-#: calendar/gui/gnome-cal.c:234
-msgid "Summary contains"
-msgstr "El resumen contiene"
-
-#: calendar/gui/gnome-cal.c:235
-msgid "Description contains"
-msgstr "La descripción contiene"
-
-#: calendar/gui/gnome-cal.c:236
-msgid "Comment contains"
-msgstr "El comentario contiene"
-
-#: calendar/gui/gnome-cal.c:237
-msgid "Has category"
-msgstr "Tiene la categoría"
-
-#: calendar/gui/gnome-cal.c:840
-#, c-format
-msgid "Could not open the folder in `%s'"
-msgstr "No puedo abrir la carpeta en `%s'"
-
-#: calendar/gui/gnome-cal.c:851
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr "El método necesario para abrir `%s' no esta soportado"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr "Un control bonobo de ejemplo que muestra un calendario."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-msgid "Evolution calendar executive summary component."
-msgstr "Componente de resumen de trabajo de Evolution."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr "Visor del calendario iTip/iMip de Evolution"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr "Componente de Evolutión para manejar el calendario."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-msgid "Factory for the Calendar Summary component."
-msgstr "Factoría para el componente de Resumen de Calendario."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-msgid "Factory for the Evolution calendar component."
-msgstr "Factoría para el componente de calendario de Evolution."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-msgid "Factory for the calendar iTip view control"
-msgstr "Factoría para el control de vista de calendario iTip"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-msgid "Factory for the sample Calendar control"
-msgstr "Factoría para el control del Calendario de ejemplo"
-
-#: calendar/gui/goto-dialog.glade.h:1
-msgid "April"
-msgstr "Abril"
-
-#: calendar/gui/goto-dialog.glade.h:2
-msgid "August"
-msgstr "Agosto"
-
-#: calendar/gui/goto-dialog.glade.h:3
-msgid "December"
-msgstr "Diciembre"
-
-#: calendar/gui/goto-dialog.glade.h:4
-msgid "February"
-msgstr "Febrero"
-
-#: calendar/gui/goto-dialog.glade.h:5
-msgid "Go To Date"
-msgstr "Ir a una fecha"
-
-#: calendar/gui/goto-dialog.glade.h:6
-msgid "Go To Today"
-msgstr "Ir a hoy"
-
-#: calendar/gui/goto-dialog.glade.h:7
-msgid "January"
-msgstr "Enero"
-
-#: calendar/gui/goto-dialog.glade.h:8
-msgid "July"
-msgstr "Julio"
-
-#: calendar/gui/goto-dialog.glade.h:9
-msgid "June"
-msgstr "Junio"
-
-#: calendar/gui/goto-dialog.glade.h:10
-msgid "March"
-msgstr "Marzo"
-
-#: calendar/gui/goto-dialog.glade.h:11
-msgid "May"
-msgstr "Mayo"
-
-#: calendar/gui/goto-dialog.glade.h:12
-msgid "November"
-msgstr "Noviembre"
-
-#: calendar/gui/goto-dialog.glade.h:13
-msgid "October"
-msgstr "Octubre"
-
-#: calendar/gui/goto-dialog.glade.h:14
-msgid "September"
-msgstr "Septiembre"
-
-#: calendar/gui/print.c:300
-msgid "1st"
-msgstr "1º"
-
-#: calendar/gui/print.c:300
-msgid "2nd"
-msgstr "2º"
-
-#: calendar/gui/print.c:300
-msgid "3rd"
-msgstr "3º"
-
-#: calendar/gui/print.c:300
-msgid "4th"
-msgstr "4º"
-
-#: calendar/gui/print.c:300
-msgid "5th"
-msgstr "5º"
-
-#: calendar/gui/print.c:301
-msgid "6th"
-msgstr "6º"
-
-#: calendar/gui/print.c:301
-msgid "7th"
-msgstr "7º"
-
-#: calendar/gui/print.c:301
-msgid "8th"
-msgstr "8º"
-
-#: calendar/gui/print.c:301
-msgid "9th"
-msgstr "9º"
-
-#: calendar/gui/print.c:301
-msgid "10th"
-msgstr "10º"
-
-#: calendar/gui/print.c:302
-msgid "11th"
-msgstr "11º"
-
-#: calendar/gui/print.c:302
-msgid "12th"
-msgstr "12º"
-
-#: calendar/gui/print.c:302
-msgid "13th"
-msgstr "13º"
-
-#: calendar/gui/print.c:302
-msgid "14th"
-msgstr "14º"
-
-#: calendar/gui/print.c:302
-msgid "15th"
-msgstr "15º"
-
-#: calendar/gui/print.c:303
-msgid "16th"
-msgstr "16º"
-
-#: calendar/gui/print.c:303
-msgid "17th"
-msgstr "17º"
-
-#: calendar/gui/print.c:303
-msgid "18th"
-msgstr "18º"
-
-#: calendar/gui/print.c:303
-msgid "19th"
-msgstr "19º"
-
-#: calendar/gui/print.c:303
-msgid "20th"
-msgstr "20º"
-
-#: calendar/gui/print.c:304
-msgid "21st"
-msgstr "21º"
-
-#: calendar/gui/print.c:304
-msgid "22nd"
-msgstr "22º"
-
-#: calendar/gui/print.c:304
-msgid "23rd"
-msgstr "23º"
-
-#: calendar/gui/print.c:304
-msgid "24th"
-msgstr "24º"
-
-#: calendar/gui/print.c:304
-msgid "25th"
-msgstr "25º"
-
-#: calendar/gui/print.c:305
-msgid "26th"
-msgstr "26º"
-
-#: calendar/gui/print.c:305
-msgid "27th"
-msgstr "27º"
-
-#: calendar/gui/print.c:305
-msgid "28th"
-msgstr "28º"
-
-#: calendar/gui/print.c:305
-msgid "29th"
-msgstr "29º"
-
-#: calendar/gui/print.c:305
-msgid "30th"
-msgstr "30º"
-
-#: calendar/gui/print.c:306
-msgid "31st"
-msgstr "31º"
-
-#: calendar/gui/print.c:362
-msgid "Su"
-msgstr "Do"
-
-#: calendar/gui/print.c:362
-msgid "Mo"
-msgstr "Lun"
-
-#: calendar/gui/print.c:362
-msgid "Tu"
-msgstr "Mar"
-
-#: calendar/gui/print.c:362
-msgid "We"
-msgstr "Mier"
-
-#: calendar/gui/print.c:362
-msgid "Th"
-msgstr "Jue"
-
-#: calendar/gui/print.c:362
-msgid "Fr"
-msgstr "Vier"
-
-#: calendar/gui/print.c:362
-msgid "Sa"
-msgstr "Sab"
-
-#. Day
-#: calendar/gui/print.c:1078
-msgid "Current day (%a %b %d %Y)"
-msgstr "Día actual (%a %b %d %Y)"
-
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1096
-msgid "%a %b %d"
-msgstr "%a %b %d"
-
-#: calendar/gui/print.c:1093
-msgid "%a %d %Y"
-msgstr "%a %d %Y"
-
-#: calendar/gui/print.c:1104
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr "Semana actual (%s - %s)"
-
-#. Month
-#: calendar/gui/print.c:1112
-msgid "Current month (%b %Y)"
-msgstr "Mes actual (%b %Y)"
-
-#. Year
-#: calendar/gui/print.c:1119
-msgid "Current year (%Y)"
-msgstr "Año actual (%Y)"
-
-#: calendar/gui/print.c:1156
-msgid "Print Calendar"
-msgstr "Imprimir calendario"
-
-#: calendar/gui/print.c:1321 mail/mail-callbacks.c:1447
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:24
-msgid "Print Preview"
-msgstr "Vista previa"
-
-#: calendar/gui/tasks-control.c:108
-msgid "The URI of the tasks folder to display"
-msgstr "La URI que mostrará la carpeta de tareas"
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-"Evolution ha tomado las tareas que estaban en su carpeta de calendario y las "
-"ha migrado automaticamente a la nueva carpeta de tareas."
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-"Evolution ha intentado tomar las tareas que estaban en su carpeta de "
-"calendario y migrarlas automaticamente a la nueva carpeta de tareas.\n"
-"Algunas tareas no han podido ser migradas, así que este proceso puede que "
-"sea reintentado otra vez en el futuro."
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-"No pude abrir `%s'; no se migrarán elementos de la carpeta de calendario a "
-"la carpeta de tareas."
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-"No está soportado el método requerido para cargar `%s'. No se migrarán "
-"elementos de la carpeta de calendario a la carpeta de tareas."
-
-#: calendar/gui/weekday-picker.c:315 calendar/gui/weekday-picker.c:410
-msgid "SMTWTFS"
-msgstr "DLMMJVS"
-
-#: calendar/pcs/query.c:218
-msgid "time-now expects 0 arguments"
-msgstr "time-now espera 0 argumentos"
-
-#: calendar/pcs/query.c:242
-msgid "make-time expects 1 argument"
-msgstr "make-time espera 1 argumento"
-
-#: calendar/pcs/query.c:247
-msgid "make-time expects argument 1 to be a string"
-msgstr "make-time espera que el argumento 1 sea una cadena"
-
-#: calendar/pcs/query.c:255
-msgid "make-time argument 1 must be an ISO 8601 date/time string"
-msgstr "el argumento 1 de make-time debe ser una cadena ISO 8601 fecha/hora"
-
-#: calendar/pcs/query.c:281
-msgid "time-add-day expects 2 arguments"
-msgstr "time-add-day espera 2 argumentos"
-
-#: calendar/pcs/query.c:286
-msgid "time-add-day expects argument 1 to be a time_t"
-msgstr "time-add-day espera que el argumento 1 sea de tipo time_t"
-
-#: calendar/pcs/query.c:293
-msgid "time-add-day expects argument 2 to be an integer"
-msgstr "time-add-day espera que el argumento 2 sea un entero"
-
-#: calendar/pcs/query.c:318
-msgid "time-day-begin expects 1 argument"
-msgstr "time-day-begin espera 1 argumento"
-
-#: calendar/pcs/query.c:323
-msgid "time-day-begin expects argument 1 to be a time_t"
-msgstr "time-day-begin espera que el argumento 1 sea de tipo time_t"
-
-#: calendar/pcs/query.c:348
-msgid "time-day-end expects 1 argument"
-msgstr "time-day-end espera 1 argumento"
-
-#: calendar/pcs/query.c:353
-msgid "time-day-end expects argument 1 to be a time_t"
-msgstr "time-day-end espera que el argumento 1 sea de tipo time_t"
-
-#: calendar/pcs/query.c:389
-msgid "get-vtype expects 0 arguments"
-msgstr "get-vtype espera 0 argumentos"
-
-#: calendar/pcs/query.c:472
-msgid "occur-in-time-range? expects 2 arguments"
-msgstr "occur-in-time-range? espera 2 argumentos"
-
-#: calendar/pcs/query.c:477
-msgid "occur-in-time-range? expects argument 1 to be a time_t"
-msgstr "occur-in-time-range? espera que el argumento 1 sea de tipo time_t"
-
-#: calendar/pcs/query.c:484
-msgid "occur-in-time-range? expects argument 2 to be a time_t"
-msgstr "occur-in-time-range? espera que el argumento 2 sea de tipo time_t"
-
-#: calendar/pcs/query.c:611
-msgid "contains? expects 2 arguments"
-msgstr "contains? espera 2 argumentos"
-
-#: calendar/pcs/query.c:616
-msgid "contains? expects argument 1 to be a string"
-msgstr "contains? espera que el argumento 1 sea una cadena"
-
-#: calendar/pcs/query.c:623
-msgid "contains? expects argument 2 to be a string"
-msgstr "contains? espera que el argumento 2 sea una cadena"
-
-#: calendar/pcs/query.c:640
-msgid ""
-"contains? expects argument 1 to be one of \"any\", \"summary\", \"description"
-"\""
-msgstr ""
-"contains? espera que el argumento 1 este entre \"any\", \"summary\", "
-"\"description\""
-
-#: calendar/pcs/query.c:678
-msgid "has-categories? expects at least 1 argument"
-msgstr "has-categories? espera al menos 1 argumento"
-
-#: calendar/pcs/query.c:684
-msgid "has-categories? expects all arguments to be strings"
-msgstr "has-categories? espera que todos los argumentos sean cadenas"
-
-#: calendar/pcs/query.c:932
-msgid "Evaluation of the search expression did not yield a boolean value"
-msgstr ""
-"La evaluación de las expresiones de busqueda no devolvio un valor booleano"
-
-#: camel/camel-cipher-context.c:171
-msgid "Signing is not supported by this cipher"
-msgstr "Firmar no esta soportado por este cifrado"
-
-#: camel/camel-cipher-context.c:211
-msgid "Clearsigning is not supported by this cipher"
-msgstr "Firmado en claro no esta soportado por este cifrado"
-
-#: camel/camel-cipher-context.c:251
-msgid "Verifying is not supported by this cipher"
-msgstr "La verificación no esta soportada por este cifrado"
-
-#: camel/camel-cipher-context.c:294
-msgid "Encryption is not supported by this cipher"
-msgstr "La encriptación no está soportada por este cifrado"
-
-#: camel/camel-cipher-context.c:336
-msgid "Decryption is not supported by this cipher"
-msgstr "La desencriptación no está soportada por este cifrado"
-
-#: camel/camel-disco-store.c:271
-msgid "You must be working online to complete this operation"
-msgstr "Debe estar trabajando en línea para competar esta operación"
-
-#: camel/camel-filter-driver.c:534 camel/camel-filter-driver.c:543
-msgid "Syncing folders"
-msgstr "Sincronizando carpetas"
-
-#: camel/camel-filter-driver.c:643
-msgid "Unable to open spool folder"
-msgstr "No pude abrir la carpeta temporal"
-
-#: camel/camel-filter-driver.c:652
-msgid "Unable to process spool folder"
-msgstr "No pude procesar la carpeta temporal"
-
-#: camel/camel-filter-driver.c:666
-#, c-format
-msgid "Getting message %d (%d%%)"
-msgstr "Obteniendo mensaje %d (%d%%)"
-
-#: camel/camel-filter-driver.c:670 camel/camel-filter-driver.c:679
-#, c-format
-msgid "Failed message %d"
-msgstr "Error en el mensaje %d"
-
-#: camel/camel-filter-driver.c:671
-msgid "Cannot open message"
-msgstr "No puedo abrir el mensaje"
-
-#: camel/camel-filter-driver.c:690 camel/camel-filter-driver.c:788
-msgid "Syncing folder"
-msgstr "Sincronizando carpeta"
-
-#: camel/camel-filter-driver.c:694 camel/camel-filter-driver.c:793
-msgid "Complete"
-msgstr "Completo"
-
-#: camel/camel-filter-driver.c:748
-#, c-format
-msgid "Getting message %d of %d"
-msgstr "Obteniendo mensaje %d de %d"
-
-#: camel/camel-filter-driver.c:753 camel/camel-filter-driver.c:771
-#, c-format
-msgid "Failed at message %d of %d"
-msgstr "Error en el mensaje %d de %d"
-
-#: camel/camel-filter-driver.c:866
-#, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr "Error parseando filtro: %s: %s"
-
-#: camel/camel-filter-driver.c:871
-#, c-format
-msgid "Error executing filter: %s: %s"
-msgstr "Error ejecutando filtro: %s: %s"
-
-#: camel/camel-filter-search.c:439 camel/camel-filter-search.c:445
-#, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr "Error ejecutando la búsqueda del filtro: %s: %s"
-
-#: camel/camel-folder-search.c:328
-#, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-"No puedo parsear la expresión de búsqueda %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:338
-#, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr ""
-"Error ejecutando la búsqueda según la expresión %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:485 camel/camel-folder-search.c:513
-msgid "(match-all) requires a single bool result"
-msgstr "(concordar todas) requiere un único resultado booleano"
-
-#: camel/camel-folder-search.c:559
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr "Realizando búsqueda en cabezera desconocida: %s"
-
-#: camel/camel-folder-search.c:670 camel/camel-folder-search.c:714
-msgid "Invalid type in body-contains, expecting string"
-msgstr "Tipo inválido en el contenido del cuerpo, esperando una cadena"
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:92 camel/camel-lock.c:111 camel/camel-movemail.c:138
-#: camel/camel-movemail.c:185
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "No pude bloquear el archivo para %s: %s"
-
-#: camel/camel-lock.c:151 camel/camel-movemail.c:219
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr "Dio un timeout tratando de cerrar el archivo %s. Inténtelo más tarde."
-
-#: camel/camel-lock.c:201
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr "Fallo al hacer un lock usando fcntl(2): %s"
-
-#: camel/camel-lock.c:255
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr "Fallo al hacer un lock usando flock(2): %s"
-
-#: camel/camel-movemail.c:101
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr "No pude comprobar el archivo de correo %s: %s"
-
-#: camel/camel-movemail.c:148
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr "No pude abrir el archivo de correo %s: %s"
-
-#: camel/camel-movemail.c:158
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr "No pude abrir el archivo de correo temporal %s: %s"
-
-#: camel/camel-movemail.c:199
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr "No puedo probar el fichero de lock para %s: %s"
-
-#: camel/camel-movemail.c:245
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr "Error leyendo el archivo de correo: %s"
-
-#: camel/camel-movemail.c:256
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr "Error escribiendo en el archivo temporal de correo: %s"
-
-#: camel/camel-movemail.c:274
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr "Falló al guardar el correo en al archivo temporal %s: %s"
-
-#: camel/camel-movemail.c:306
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr "No pude crear un conducto(pipe): %s"
-
-#: camel/camel-movemail.c:318
-#, c-format
-msgid "Could not fork: %s"
-msgstr "No se puede hacer un fork: %s"
-
-#: camel/camel-movemail.c:356
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr "El programa Movemail ha fallado: %s"
-
-#: camel/camel-movemail.c:357
-msgid "(Unknown error)"
-msgstr "(Error desconocido)"
-
-#: camel/camel-movemail.c:587
-#, c-format
-msgid "Error copying mail temp file: %s"
-msgstr "Error copiando el correo al archivo temporal: %s"
-
-#: camel/camel-pgp-context.c:190
-#, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr "Por favor introduzca su frase de paso%s %s"
-
-#: camel/camel-pgp-context.c:193
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr "Por favor introduzca su frase de paso %s"
-
-#: camel/camel-pgp-context.c:511
-msgid "No plaintext to sign."
-msgstr "No hay ningún texto plano a firmar"
-
-#: camel/camel-pgp-context.c:518 camel/camel-pgp-context.c:690
-#: camel/camel-pgp-context.c:1057 camel/camel-pgp-context.c:1269
-msgid "No password provided."
-msgstr "No se dio contraseña"
-
-#: camel/camel-pgp-context.c:524 camel/camel-pgp-context.c:696
-#: camel/camel-pgp-context.c:879 camel/camel-pgp-context.c:1064
-#: camel/camel-pgp-context.c:1276
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr "No pude comunicar con GPG/PGP: %s"
-
-#: camel/camel-pgp-context.c:683
-msgid "No plaintext to clearsign."
-msgstr "No hay ningún texto plano para firmar."
-
-#: camel/camel-pgp-context.c:873
-msgid "No plaintext to verify."
-msgstr "No hay ningún texto plano a verificar."
-
-#: camel/camel-pgp-context.c:890
-#, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "No pude crear archivo temporal: %s"
-
-#: camel/camel-pgp-context.c:1047
-msgid "No plaintext to encrypt."
-msgstr "No hay ningún texto plano a encriptar."
-
-#: camel/camel-pgp-context.c:1073
-msgid "No recipients specified"
-msgstr "No ha especificado destinatarios"
-
-#: camel/camel-pgp-context.c:1261
-msgid "No ciphertext to decrypt."
-msgstr "No hay ningún texto cifrado a desencriptar."
-
-#: camel/camel-provider.c:131
-#, c-format
-msgid "Could not load %s: Module loading not supported on this system."
-msgstr ""
-"No pude cargar %s: La carga de módulos no está soportada es este sistema."
-
-#: camel/camel-provider.c:140
-#, c-format
-msgid "Could not load %s: %s"
-msgstr "No puedo cargar %s: %s"
-
-#: camel/camel-provider.c:148
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr "No pude cagar %s: No hay código de inicialización en el módulo."
-
-#: camel/camel-remote-store.c:191
-#, c-format
-msgid "%s server %s"
-msgstr "%s servidor %s"
-
-#: camel/camel-remote-store.c:195
-#, c-format
-msgid "%s service for %s on %s"
-msgstr "%s servicio para %s en %s"
-
-#: camel/camel-remote-store.c:252
-msgid "Connection cancelled"
-msgstr "Conexión cancelada"
-
-#: camel/camel-remote-store.c:255
-#: camel/providers/smtp/camel-smtp-transport.c:269
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr "No pude conectar con %s (puerto %d): %s"
-
-#: camel/camel-remote-store.c:256
-msgid "(unknown host)"
-msgstr "(servidor desconocido)"
-
-#: camel/camel-remote-store.c:337 camel/camel-remote-store.c:399
-#: camel/camel-remote-store.c:470
-#: camel/providers/imap/camel-imap-command.c:287
-msgid "Operation cancelled"
-msgstr "Operación cancelada"
-
-#: camel/camel-remote-store.c:476
-msgid "Server unexpectedly disconnected"
-msgstr "El servidor se desconectó inesperadamente"
-
-#: camel/camel-sasl-anonymous.c:33
-msgid "Anonymous"
-msgstr "Anónimo"
-
-#: camel/camel-sasl-anonymous.c:35
-msgid "This option will connect to the server using an anonymous login."
-msgstr "Esta opción conectará con el servidor usando un usuario anónimo."
-
-#: camel/camel-sasl-anonymous.c:110 camel/camel-sasl-plain.c:87
-msgid "Authentication failed."
-msgstr "Fallo en la autenticación."
-
-#: camel/camel-sasl-anonymous.c:119
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-"Dirección de correo erronea información de ayuda:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:131
-#, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr ""
-"Información opaca de seguimiento inválida:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:143
-#, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr ""
-"Información de seguimiento inválida:\n"
-"%s"
-
-#: camel/camel-sasl-cram-md5.c:35
-msgid "CRAM-MD5"
-msgstr "CRAM-MD5"
-
-#: camel/camel-sasl-cram-md5.c:37
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-"Esta opción conectará con el servidor usando una clave segura CRAM-MD5, si "
-"el servidor lo soporta."
-
-#: camel/camel-sasl-digest-md5.c:43
-msgid "DIGEST-MD5"
-msgstr "DIGEST-MD5"
-
-#: camel/camel-sasl-digest-md5.c:45
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-"Esta opción conectará con el servidor usando una clave segura DIGEST-MD5, "
-"siel servidor lo soporta."
-
-#: camel/camel-sasl-digest-md5.c:810
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr "Reto del servidor demasiado largo (>2048 octetos)\n"
-
-#: camel/camel-sasl-digest-md5.c:819
-msgid "Server challenge invalid\n"
-msgstr "Reto del servidor no válido\n"
-
-#: camel/camel-sasl-digest-md5.c:825
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr ""
-"El reto del servidor contiene una valor \"Calidad de Protección\" no válido\n"
-
-#: camel/camel-sasl-digest-md5.c:847
-msgid "Server response did not contain authorization data\n"
-msgstr "La respuesta del servidor no contenía información de autorización\n"
-
-#: camel/camel-sasl-digest-md5.c:865
-msgid "Server response contained incomplete authorization data\n"
-msgstr ""
-"La respuesta del servidor contenía información de autorización incompleta\n"
-
-#: camel/camel-sasl-digest-md5.c:875
-msgid "Server response does not match\n"
-msgstr "La respuesta del servidor no coincide\n"
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "Kerberos 4"
-msgstr "Kerberos 4"
-
-#: camel/camel-sasl-kerberos4.c:42
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr "Esta opción conectará con el servidor usando autenticación Kerberos 4."
-
-#: camel/camel-sasl-kerberos4.c:161
-#, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr ""
-"No pude obtener la entrada Kerberos:\n"
-"%s"
-
-#: camel/camel-sasl-kerberos4.c:218
-#: camel/providers/imap/camel-imap-store.c:433
-msgid "Bad authentication response from server."
-msgstr "Respuesta de autentificación errónea desde el servidor."
-
-#: camel/camel-sasl-login.c:32
-msgid "NT Login"
-msgstr "NT Login"
-
-#: camel/camel-sasl-login.c:34 camel/camel-sasl-plain.c:34
-msgid "This option will connect to the server using a simple password."
-msgstr "Esta opción conectará con el servidor usando una simple contraseña."
-
-#: camel/camel-sasl-login.c:127
-msgid "Unknown authentication state."
-msgstr "Estado de la autenticación desconocido."
-
-#: camel/camel-search-private.c:111
-#, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr "Falló la compilación de la expresión regular: %s: %s"
-
-#: camel/camel-service.c:154
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr "La URL '%s' necesita un componente de usuario"
-
-#: camel/camel-service.c:162
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr "La URL '%s' necesita un componente de servidor"
-
-#: camel/camel-service.c:170
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr "La URL '%s' necesita un componente de ruta"
-
-#: camel/camel-service.c:548
-#, c-format
-msgid "Resolving: %s"
-msgstr "Resolviendo: %s"
-
-#: camel/camel-service.c:575
-#, c-format
-msgid "Failure in name lookup: %s"
-msgstr "Error al resolver: %s"
-
-#: camel/camel-service.c:600
-#, c-format
-msgid "Host lookup failed: %s: host not found"
-msgstr "Error al resolver: %s: servidor no encontrado"
-
-#: camel/camel-service.c:602
-#, c-format
-msgid "Host lookup failed: %s: unknown reason"
-msgstr "Error al resolver: %s: razón desconocida"
-
-#: camel/camel-session.c:68
-msgid "Virtual folder email provider"
-msgstr "Proveedor de correo de la carpeta virtual"
-
-#: camel/camel-session.c:70
-msgid "For reading mail as a query of another set of folders"
-msgstr "Para leer correo como una búsqueda de otras carpetas"
-
-#: camel/camel-session.c:295 camel/camel-session.c:364
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr "No hay proveedor para el protocolo `%s'"
-
-#: camel/camel-session.c:479
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"No puedo crear el directorio %s:\n"
-"%s"
-
-#: camel/camel-smime-context.c:194
-#, c-format
-msgid "Please enter your password for %s"
-msgstr "Por favor introduzca su contraseña para %s"
-
-#: camel/camel-smime-context.c:210
-msgid "Error hashing password."
-msgstr "Error calculando el hash de la contraseña."
-
-#: camel/camel-smime-context.c:219
-msgid "Invalid password."
-msgstr "Contraseña erronea."
-
-#: camel/camel-smime-context.c:327
-#, c-format
-msgid "Could not sign: certificate not found for \"%s\"."
-msgstr "No pude firmar: certificado no encontrado para \"%s\"."
-
-#: camel/camel-smime-context.c:343
-msgid "Could not sign: failed to create content info."
-msgstr "No pude firmar: error al crear la información del contenido."
-
-#: camel/camel-smime-context.c:350
-msgid "Could not sign: failed to create signing context."
-msgstr "No pude firmar: error al crear el contexto a firmar."
-
-#: camel/camel-smime-context.c:356
-msgid "Could not sign: failed to create signature."
-msgstr "No pude firmar: error al crear la firma."
-
-#: camel/camel-smime-context.c:383
-msgid "'clearsign' is not supported by S/MIME."
-msgstr "'firma en claro' no está soportado por S/MIME."
-
-#: camel/camel-smime-context.c:528
-msgid "Could not encrypt: failed to create enveloped data."
-msgstr "No pude encriptar: error al crear la información del sobre."
-
-#: camel/camel-smime-context.c:535
-msgid "Could not encrypt: failed to create encryption context."
-msgstr "No pude encriptar: error al crear el contexto de encriptación."
-
-#: camel/camel-smime-context.c:570
-#, c-format
-msgid "Could not encrypt data: invalid user key: \"%s\"."
-msgstr "No pude encriptar: clave de usuario invalida: \"%s\"."
-
-#: camel/camel-smime-context.c:576
-msgid "Could not encrypt: encoding failed."
-msgstr "No pude encriptar: error en la codificación."
-
-#: camel/camel-smime-context.c:626
-msgid "Failed to decrypt: Unknown"
-msgstr "Fallo al desencriptar: Desconocido"
-
-#. Fill in the new fields
-#: camel/camel-store.c:378 mail/mail-ops.c:1007 mail/mail-ops.c:1014
-#: mail/mail-ops.c:1032 mail/mail-ops.c:1033
-msgid "Trash"
-msgstr "Papelera"
-
-#: camel/camel-tcp-stream-ssl.c:348
-#, c-format
-msgid ""
-"EMail: %s\n"
-"Common Name: %s\n"
-"Organization Unit: %s\n"
-"Organization: %s\n"
-"Locality: %s\n"
-"State: %s\n"
-"Country: %s"
-msgstr ""
-"EMail: %s\n"
-"Nombre: %s\n"
-"Departamento: %s\n"
-"Organización: %s\n"
-"Localidad: %s\n"
-"Estado: %s\n"
-"País: %s"
-
-#. construct our user prompt
-#: camel/camel-tcp-stream-openssl.c:428 camel/camel-tcp-stream-ssl.c:364
-#, c-format
-msgid ""
-"Bad certificate from %s:\n"
-"\n"
-"%s\n"
-"\n"
-"Do you wish to accept anyway?"
-msgstr ""
-"Certificado erroneo de %s:\n"
-"\n"
-"%s\n"
-"\n"
-"¿Quieres aceptarlo de todos modos?"
-
-#: camel/camel-tcp-stream-openssl.c:423
-#, c-format
-msgid ""
-"Issuer: %s\n"
-"Subject: %s"
-msgstr ""
-"Responsable: %s\n"
-"Asunto: %s"
-
-#: camel/camel-url.c:289
-#, c-format
-msgid "Could not parse URL `%s'"
-msgstr "No pude analizar la URL `%s'"
-
-#: camel/camel-vee-folder.c:451
-#, c-format
-msgid "No such message %s in %s"
-msgstr "No existe el mensaje %s en %s"
-
-#: camel/camel-vee-folder.c:546
-#, c-format
-msgid "No such message: %s"
-msgstr "No existe el mensaje: %s"
-
-#: camel/camel-vtrash-folder.c:109
-msgid "You cannot copy messages from this trash folder."
-msgstr "No puede copiar mensajes de esta papelera."
-
-#: camel/providers/imap/camel-imap-message-cache.c:150
-#, c-format
-msgid "Could not open cache directory: %s"
-msgstr "No puedo abrir directorio de cache: %s"
-
-#: camel/providers/imap/camel-imap-command.c:232
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "Respuesta inesperada del servidor IMAP: %s"
-
-#: camel/providers/imap/camel-imap-command.c:240
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr "El comando IMAP ha fallado: %s"
-
-#: camel/providers/imap/camel-imap-command.c:241 shell/e-storage.c:481
-msgid "Unknown error"
-msgstr "Error desconocido"
-
-#: camel/providers/imap/camel-imap-command.c:295
-msgid "Server response ended too soon."
-msgstr "La respuesta del servidor terminó demasiado pronto."
-
-#: camel/providers/imap/camel-imap-command.c:487
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr "La respuesta del servidor IMAP no contenía información de %s"
-
-#: camel/providers/imap/camel-imap-command.c:524
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr "El servidor IMAP inesperadamente a respondido OK: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:172
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr "No puedo crear el directorio %s: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:191
-#, c-format
-msgid "Could not load summary for %s"
-msgstr "No puedo cargar el resumen de %s"
-
-#: camel/providers/imap/camel-imap-folder.c:364
-msgid "Scanning IMAP folder"
-msgstr "Escaneando carpeta IMAP"
-
-#: camel/providers/imap/camel-imap-folder.c:1047
-#: camel/providers/imap/camel-imap-folder.c:1281
-msgid "This message is not currently available"
-msgstr "Este mensaje no está disponible actualmente"
-
-#: camel/providers/imap/camel-imap-folder.c:1075
-#: camel/providers/imap/camel-imap-folder.c:1314
-msgid "Could not find message body in FETCH response."
-msgstr "No pude encontrar el cuerpo del mensaje en la respuesta de FETCH"
-
-#: camel/providers/imap/camel-imap-provider.c:43 mail/mail-config.glade.h:13
-msgid "Checking for new mail"
-msgstr "Comprobando si hay correo nuevo"
-
-#: camel/providers/imap/camel-imap-provider.c:45
-msgid "Check for new messages in all folders"
-msgstr "Comprobar si hay mensajes nuevos en todas las carpetas"
-
-#: camel/providers/imap/camel-imap-provider.c:48 shell/e-shell-view.c:598
-msgid "Folders"
-msgstr "Carpetas"
-
-#: camel/providers/imap/camel-imap-provider.c:50
-msgid "Show only subscribed folders"
-msgstr "Mostrar solo las carpetas suscritas"
-
-#: camel/providers/imap/camel-imap-provider.c:52
-msgid "Override server-supplied folder namespace"
-msgstr "Sobreescribir los nombres dados por el servidor"
-
-#: camel/providers/imap/camel-imap-provider.c:54
-msgid "Namespace"
-msgstr "Espacio de nombres"
-
-#: camel/providers/imap/camel-imap-provider.c:57
-msgid "Apply filters to new messages in INBOX on this server"
-msgstr "Aplicar filtros a los mensajes nuevos en INBOX en este servidor"
-
-#: camel/providers/imap/camel-imap-provider.c:63
-msgid "IMAPv4"
-msgstr "IMAPv4"
-
-#: camel/providers/imap/camel-imap-provider.c:65
-msgid "For reading and storing mail on IMAP servers."
-msgstr "Para leer y guardar correo en los servidores IMAP."
-
-#: camel/providers/imap/camel-imap-provider.c:82
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr "Conectará con el servidor IMAP usando una contraseña de texto plano"
-
-#: camel/providers/imap/camel-imap-store.c:456
-#, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr "El servidor IMAP %s no soporta el método de autenticación requerido %s"
-
-#: camel/providers/imap/camel-imap-store.c:466
-#: camel/providers/smtp/camel-smtp-transport.c:366
-#, c-format
-msgid "No support for authentication type %s"
-msgstr "No hay soporte para el tipo de autenticación %s"
-
-#: camel/providers/imap/camel-imap-store.c:490
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr "%sPor favor escriba la contraseña IMAP para %s@%s"
-
-#: camel/providers/imap/camel-imap-store.c:505
-#: camel/providers/smtp/camel-smtp-transport.c:410
-msgid "You didn't enter a password."
-msgstr "No escribió una clave."
-
-#: camel/providers/imap/camel-imap-store.c:531
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"No pude autentificarme en el servidor IMAP.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/imap/camel-imap-store.c:803 mail/mail-local.c:334
-#, c-format
-msgid "No such folder %s"
-msgstr "No existe la carpeta %s"
-
-#: camel/providers/local/camel-local-provider.c:39
-msgid "MH-format mail directories"
-msgstr "Directorios de correo en formato MH"
-
-#: camel/providers/local/camel-local-provider.c:40
-msgid "For storing local mail in MH-like mail directories"
-msgstr "Para guardar el correo local en directorios del tipo MH"
-
-#: camel/providers/local/camel-local-provider.c:49
-msgid "Standard Unix mailbox file"
-msgstr "Archivos de correo en formato Unix estándar"
-
-#: camel/providers/local/camel-local-provider.c:50
-msgid "For storing local mail in standard mbox format"
-msgstr "Para guardar el correo local en archivos del tipo mbox"
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "Qmail maildir-format mail files"
-msgstr "Archivos de correo en formato maildir de Qmail"
-
-#: camel/providers/local/camel-local-provider.c:60
-msgid "For storing local mail in qmail maildir directories"
-msgstr "Para guardar el correo local en directorios del tipo maildir de qmail"
-
-#: camel/providers/local/camel-local-store.c:127
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr "La dirección %s no es absoluta"
-
-#: camel/providers/local/camel-local-store.c:134
-#, c-format
-msgid "Store root %s is not a regular directory"
-msgstr "%s no es un directorio normal"
-
-#: camel/providers/local/camel-local-store.c:142
-#: camel/providers/local/camel-local-store.c:158
-#, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "No pude acceder a la carpeta: %s: %s"
-
-#: camel/providers/local/camel-local-store.c:173
-msgid "Local stores do not have an inbox"
-msgstr "Los almacenadores locales no tienen unacarpeta de entrada"
-
-#: camel/providers/local/camel-local-store.c:183
-#, c-format
-msgid "Local mail file %s"
-msgstr "Archivo de correo local %s"
-
-#: camel/providers/local/camel-local-store.c:237
-#, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr "No pude cambiarle el nombre de la carpeta %s a %s: %s"
-
-#: camel/providers/local/camel-local-store.c:279
-#, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr "No pude borrar el resumen la carpeta `%s': %s"
-
-#: camel/providers/local/camel-local-store.c:289
-#, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr "No pude borrar el índice de la carpeta `%s': %s"
-
-#: camel/providers/local/camel-local-summary.c:404
-msgid "Unable to add message to summary: unknown reason"
-msgstr "No pude añadir mensajes al resumen: razón desconocida"
-
-#: camel/providers/local/camel-maildir-folder.c:150
-#: camel/providers/local/camel-maildir-folder.c:158
-#: camel/providers/local/camel-maildir-folder.c:169
-#, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr "No pude añadir el mensaje a la carpeta tipo maildir: %s: %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-maildir-folder.c:209
-#: camel/providers/local/camel-maildir-folder.c:217
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#: camel/providers/local/camel-mh-folder.c:194
-#: camel/providers/local/camel-mh-folder.c:202
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-"No puedo obtener el mensaje; %s\n"
-" %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-msgid "No such message"
-msgstr "No existe ese mensaje"
-
-#
-#: camel/providers/local/camel-maildir-folder.c:218
-#: camel/providers/local/camel-mh-folder.c:203
-msgid "Invalid message contents"
-msgstr "Contenido inválido en el mensaje"
-
-#: camel/providers/local/camel-maildir-store.c:96
-#: camel/providers/local/camel-mh-store.c:90
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-"No pude abrir la carpeta `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:100
-#: camel/providers/local/camel-mbox-store.c:101
-#: camel/providers/local/camel-mh-store.c:97
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr "La carpeta `%s' no existe."
-
-#: camel/providers/local/camel-maildir-store.c:107
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-"No pude crear la carpeta `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:122
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr "`%s' no es un directorio tipo maildir."
-
-#: camel/providers/local/camel-maildir-store.c:151
-#: camel/providers/local/camel-maildir-store.c:188
-#: camel/providers/local/camel-mh-store.c:127
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr "No pude borrar la carpeta `%s': %s"
-
-#: camel/providers/local/camel-maildir-store.c:152
-msgid "not a maildir directory"
-msgstr "no es un directorio tipo maildir"
-
-#: camel/providers/local/camel-maildir-summary.c:405
-#: camel/providers/local/camel-maildir-summary.c:526
-#, c-format
-msgid "Cannot open maildir directory path: %s: %s"
-msgstr "No puedo abrir el maildir en esta ruta: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:152
-#, c-format
-msgid "Cannot create folder lock on %s: %s"
-msgstr "No puedo crear un bloqueo de carpetas en %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:203
-#, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr "No puedo abrir el buzón: %s: %s\n"
-
-#: camel/providers/local/camel-mbox-folder.c:259
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr "No puedo añadir el mensaje al archivo mbox: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:335
-#: camel/providers/local/camel-mbox-folder.c:367
-#: camel/providers/local/camel-mbox-folder.c:380
-#, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-"No puedo obtener el mensaje; %s de la carpeta %s\n"
-" %s"
-
-#: camel/providers/local/camel-mbox-folder.c:368
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr "La carpeta parece estar corrompida e irrecuperable."
-
-#: camel/providers/local/camel-mbox-folder.c:381
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr "Fallo la construcción del mensaje: ¿Buzón corrompido?"
-
-#: camel/providers/local/camel-mbox-store.c:94
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-"No puedo abrir el archivo `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:110
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-"No pude crear el archivo `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:119
-#: camel/providers/local/camel-mbox-store.c:146
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr "`%s' no es un archivo normal."
-
-#: camel/providers/local/camel-mbox-store.c:138
-#: camel/providers/local/camel-mbox-store.c:161
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-"No pude borrar la carpeta `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr "La carpeta `%s' no esta vacía. No fue borrada."
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:249
-msgid "Summarising folder"
-msgstr "Resumiendo carpeta"
-
-#: camel/providers/local/camel-mbox-summary.c:254
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr "No pude abrir la carpeta: %s: resumiendo desda la posición %ld: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:296
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr "Parseado erróneo del correo cerca de la posición %ld en la carpeta %s"
-
-#: camel/providers/local/camel-mbox-summary.c:371
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr "No puedo resumir la carpeta: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:502
-#: camel/providers/local/camel-mbox-summary.c:703 mail/mail-ops.c:1397
-msgid "Synchronising folder"
-msgstr "Sincronizando carpeta"
-
-#: camel/providers/local/camel-mbox-summary.c:507
-#: camel/providers/local/camel-mbox-summary.c:708
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr "No pude abrir la carpeta para resumirla: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:524
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr "No puedo abrir el archivo de correo temporal: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:549
-#: camel/providers/local/camel-mbox-summary.c:557
-#: camel/providers/local/camel-mbox-summary.c:746
-#: camel/providers/local/camel-mbox-summary.c:754
-msgid "Summary and folder mismatch, even after a sync"
-msgstr "Resumen y carpeta no concuerdan, incluso después de una sincronización"
-
-#: camel/providers/local/camel-mbox-summary.c:600
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr "Error la escribir al archivo de correo temporal: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:617
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr "Error la escribir al archivo temporal: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:635
-#: camel/providers/local/camel-mbox-summary.c:804
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr "No pude cerrar la carpeta origen %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:644
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr "No pude cerrar la carpeta temporal: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:655
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr "No pude cambiar el nombre a la carpeta: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:879
-#, c-format
-msgid "Unknown error: %s"
-msgstr "Error desconocido: %s"
-
-#: camel/providers/local/camel-mh-folder.c:149
-#: camel/providers/local/camel-mh-folder.c:157
-#, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr "No pude añadir el mensaje a la carpeta mh: %s: %s"
-
-#: camel/providers/local/camel-mh-store.c:110
-#, c-format
-msgid "`%s' is not a directory."
-msgstr "`%s' no es un directorio."
-
-#: camel/providers/local/camel-mh-summary.c:218
-#, c-format
-msgid "Cannot open MH directory path: %s: %s"
-msgstr "No puedo abrir el directorio MH en la ruta: %s: %s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:45
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr "Por favor introduzca la contraseña NNTP para %s@%s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:66
-msgid "Server rejected username"
-msgstr "El servidor rechazo el nombre de usuario"
-
-#: camel/providers/nntp/camel-nntp-auth.c:72
-msgid "Failed to send username to server"
-msgstr "Fallo al enviar el nombre de usuario al servidor"
-
-#: camel/providers/nntp/camel-nntp-auth.c:81
-msgid "Server rejected username/password"
-msgstr "El servidor rechazo el nombre de usuario ó la contraseña"
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr "Mensaje %s no encontrado."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr "No pude obtener la lista de grupos del servidor."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr "No pude cargar el archivo de listas de grupos para %s: %s"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr "No pude guardar el archivo de listas de grupos para %s: %s"
-
-#: camel/providers/nntp/camel-nntp-provider.c:42
-msgid "USENET news"
-msgstr "noticias USENET"
-
-#: camel/providers/nntp/camel-nntp-provider.c:44
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr "Este es un proveedor para leer y enviar noticias a grupos de USENET."
-
-#: camel/providers/nntp/camel-nntp-store.c:224
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr "No puedo abrir el directorio para el servidor de noticias: %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:286
-#, c-format
-msgid "USENET News via %s"
-msgstr "Noticias USENET vía %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:293
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-"Esta opción es para autentificarse con el servidor NNTP usando una "
-"contraseña de texto."
-
-#: camel/providers/nntp/camel-nntp-store.c:325
-#: camel/providers/nntp/camel-nntp-store.c:488
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr "No pude abrir o crear el archivo .newsrc para %s: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-msgid "Retrieving POP summary"
-msgstr "Obteniendo resumen POP"
-
-#: camel/providers/pop3/camel-pop3-folder.c:155
-#, c-format
-msgid "Could not check POP server for new messages: %s"
-msgstr "No pude comprobar si hay nuevos mensajes en el servidor POP: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:199
-msgid "Could not open folder: message listing was incomplete."
-msgstr "No pude abrir la carpeta: listados de los mensajes incompletos."
-
-#: camel/providers/pop3/camel-pop3-folder.c:292
-#, c-format
-msgid "No message with uid %s"
-msgstr "No hay mensajes con uid %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:296
-#, c-format
-msgid "Retrieving POP message %d"
-msgstr "Obteniendo mensaje POP %d"
-
-#: camel/providers/pop3/camel-pop3-folder.c:303
-#, c-format
-msgid "Could not fetch message: %s"
-msgstr "No pude obtener el mensaje: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:320
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr "No pude obtener los mensajes del servidor POP %s: %s"
-
-#: camel/providers/pop3/camel-pop3-provider.c:37
-msgid "Message storage"
-msgstr "Almacén del mensaje"
-
-#: camel/providers/pop3/camel-pop3-provider.c:39
-msgid "Leave messages on server"
-msgstr "Dejar mensajes en el servidor"
-
-#: camel/providers/pop3/camel-pop3-provider.c:41
-#, c-format
-msgid "Delete after %s day(s)"
-msgstr "Borrar tras %s día(s)"
-
-#: camel/providers/pop3/camel-pop3-provider.c:48 mail/mail-config.glade.h:51
-msgid "POP"
-msgstr "POP"
-
-#: camel/providers/pop3/camel-pop3-provider.c:50
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-"Para conectar con servidores POP. El protocolo POP también puede usarse para "
-"obtener correo de algunos web-mail y sistemas de correo propietarios."
-
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-"Esta opción es para conectar con servidores POP usando una contraseña en "
-"texto plano. Esta es la única opción soportada por muchos servidores POP."
-
-#: camel/providers/pop3/camel-pop3-provider.c:79
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-"Esta opción es para conectar con servidores POP usando una contraseña "
-"encriptada por medio del protocolo APOP. Esto no funcionará para todos los "
-"usuarios ni siquiera en servidores que dicen soportarlo."
-
-#: camel/providers/pop3/camel-pop3-provider.c:91
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-"Esta opción es para conectar con POP y usando autentificación Kerberos 4."
-
-#: camel/providers/pop3/camel-pop3-store.c:199
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr "No pude autentificarme con el servidor KPOP: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:215
-#, c-format
-msgid "Could not connect to server: %s"
-msgstr "No pude conectar con el servidor: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:322
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr "No pude conectar con el servidor POP en: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:361
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr "%sPor favor escriba la contraseña POP3 para %s@%s"
-
-#: camel/providers/pop3/camel-pop3-store.c:379
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-"No pude conectar con el servidor POP.\n"
-"Error mandando nombre de usuario: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:382
-#: camel/providers/pop3/camel-pop3-store.c:419
-msgid "(Unknown)"
-msgstr "(Desconocido)"
-
-#: camel/providers/pop3/camel-pop3-store.c:409
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-"No pude conectar con el servidor POP.\n"
-"No hay soporte para el sistema de autentificación definido."
-
-#: camel/providers/pop3/camel-pop3-store.c:417
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-"No pude conectar con el servidor POP.\n"
-"Error al enviar la contraseña: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:484
-#, c-format
-msgid "No such folder `%s'."
-msgstr "No existe la carpeta `%s'."
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:37
-#: mail/mail-config.glade.h:67
-msgid "Sendmail"
-msgstr "Sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:39
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-"Para enviar correo pasándoselo al programa \"sendmail\" en el sistema local."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:107
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr "No pude comunicar con sendmail: %s: correo no enviado"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:124
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr "No pude hacer un fork a sendmail: %s: correo no enviado"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:150
-#, c-format
-msgid "Could not send message: %s"
-msgstr "No pude enviar mensaje: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:163
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr "sendmail finalizo con %s: correo no enviado."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:170
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr "No pude ejecutar %s: correo no enviado."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:175
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr "sendmail finalizo con estado %d: correo no enviado."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:194
-msgid "Could not find 'From' address in message"
-msgstr "No pude encontrar la dirección 'De' en el mensaje"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "sendmail"
-msgstr "sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:249
-msgid "Mail delivery via the sendmail program"
-msgstr "Envío de correo vía el programa sendmail"
-
-#: camel/providers/smtp/camel-smtp-provider.c:38 mail/mail-config.glade.h:62
-msgid "SMTP"
-msgstr "SMTP"
-
-#: camel/providers/smtp/camel-smtp-provider.c:40
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr "Para enviar correo conectándose a un servidor de correo usando SMTP.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:168
-msgid "Syntax error, command unrecognized"
-msgstr "Error de sintaxis, comando no reconocido"
-
-#: camel/providers/smtp/camel-smtp-transport.c:170
-msgid "Syntax error in parameters or arguments"
-msgstr "Error de sintaxis en los parámetros o los argumentos"
-
-#: camel/providers/smtp/camel-smtp-transport.c:172
-msgid "Command not implemented"
-msgstr "Comando no implementado"
-
-#: camel/providers/smtp/camel-smtp-transport.c:174
-msgid "Command parameter not implemented"
-msgstr "Parámetro del comando no implementado"
-
-#: camel/providers/smtp/camel-smtp-transport.c:176
-msgid "System status, or system help reply"
-msgstr "Estado del sistema, o respuesta a la ayuda del sistema"
-
-#: camel/providers/smtp/camel-smtp-transport.c:178
-msgid "Help message"
-msgstr "Mensaje de ayuda"
-
-#: camel/providers/smtp/camel-smtp-transport.c:180
-msgid "Service ready"
-msgstr "Servicio preparado"
-
-#: camel/providers/smtp/camel-smtp-transport.c:182
-msgid "Service closing transmission channel"
-msgstr "Servicio cerrando los canales de transmisión"
-
-#: camel/providers/smtp/camel-smtp-transport.c:184
-msgid "Service not available, closing transmission channel"
-msgstr "Servicio no disponible, cerrando los canales de transmisión"
-
-#: camel/providers/smtp/camel-smtp-transport.c:186
-msgid "Requested mail action okay, completed"
-msgstr "Acción de correo requerida en orden, completada"
-
-#: camel/providers/smtp/camel-smtp-transport.c:188
-msgid "User not local; will forward to <forward-path>"
-msgstr "El usuario no es local: lo reenviaré a <forward-path>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:190
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr ""
-"Acción solicitada del correo no realizada: el mailbox no está disponible"
-
-#: camel/providers/smtp/camel-smtp-transport.c:192
-msgid "Requested action not taken: mailbox unavailable"
-msgstr "Acción solicitada no realizada: el mailbox no está disponible"
-
-#: camel/providers/smtp/camel-smtp-transport.c:194
-msgid "Requested action aborted: error in processing"
-msgstr "Acción solicitada abortada: error en procesamiento"
-
-#: camel/providers/smtp/camel-smtp-transport.c:196
-msgid "User not local; please try <forward-path>"
-msgstr "El usuario no es local: por favor pruebe con <forward-path>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:198
-msgid "Requested action not taken: insufficient system storage"
-msgstr ""
-"Acción solicitada no realizada: la capacidad del sistema es insuficiente"
-
-#: camel/providers/smtp/camel-smtp-transport.c:200
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr "Acción solicitada no realizada: excedió la capacidad de almacenamiento"
-
-#: camel/providers/smtp/camel-smtp-transport.c:202
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr "Acción solicitada no realizada: nombre no permitido para mailbox"
-
-#: camel/providers/smtp/camel-smtp-transport.c:204
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr "Comience a escribir el mensaje; finalice con <CRLF>.<CRLF>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:206
-msgid "Transaction failed"
-msgstr "Fallo en la transacción"
-
-#: camel/providers/smtp/camel-smtp-transport.c:210
-msgid "A password transition is needed"
-msgstr "Es necesaria una transición de contraseña"
-
-#: camel/providers/smtp/camel-smtp-transport.c:212
-msgid "Authentication mechanism is too weak"
-msgstr "El método de autenticación en demasiado debil"
-
-#: camel/providers/smtp/camel-smtp-transport.c:214
-msgid "Encryption required for requested authentication mechanism"
-msgstr "Encriptación requerida por el mecanismo de autenticación pedido"
-
-#: camel/providers/smtp/camel-smtp-transport.c:216
-msgid "Temporary authentication failure"
-msgstr "Fallo temporal en la autenticación"
-
-#: camel/providers/smtp/camel-smtp-transport.c:218
-msgid "Authentication required"
-msgstr "Autenticación requerida"
-
-#: camel/providers/smtp/camel-smtp-transport.c:313
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr "Mensaje de bienvenida erróneo: %s: posiblemente no es fatal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:356
-#, c-format
-msgid "SMTP server %s does not support requested authentication type %s"
-msgstr "El servidor SMTP %s no soporta el método de autenticación requerido %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:395
-#, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr "%sPor favor escriba la contraseña SMTP para %s@%s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:418
-#, c-format
-msgid ""
-"Unable to authenticate to SMTP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"No pude autenticarme en el servidor SMTP.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:534
-#, c-format
-msgid "SMTP server %s"
-msgstr "Servidor SMTP %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:536
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr "Envío de correo SMTP vía %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:561
-msgid "Cannot send message: sender address not defined."
-msgstr "No puedo enviar el mensaje: dirección del remitente no definida."
-
-#: camel/providers/smtp/camel-smtp-transport.c:568
-msgid "Cannot send message: sender address not valid."
-msgstr "No puedo enviar el mensaje: dirección del remitente no válida."
-
-#: camel/providers/smtp/camel-smtp-transport.c:582
-msgid "Cannot send message: no recipients defined."
-msgstr "No puedo enviar el mensaje: no hay destinatarios."
-
-#: camel/providers/smtp/camel-smtp-transport.c:676
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr "Expiró el tiempo para HELO: %s: no es fatal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:695
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr "Respuesta de error al HELO: %s: no es fatal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:728
-msgid "Error creating SASL authentication object."
-msgstr "Error al crear el objeto de autenticación SASL."
-
-#: camel/providers/smtp/camel-smtp-transport.c:743
-#: camel/providers/smtp/camel-smtp-transport.c:755
-#, c-format
-msgid "AUTH request timed out: %s"
-msgstr "Expiró el tiempo para AUTH: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:764
-msgid "AUTH request failed."
-msgstr "Error en la petición de AUTH."
-
-#: camel/providers/smtp/camel-smtp-transport.c:809
-msgid "Bad authentication response from server.\n"
-msgstr "Respuesta de autenticación errónea desde el servidor.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:835
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr "Expiró el tiempo para MAIL FROM: %s: correo no enviado"
-
-#: camel/providers/smtp/camel-smtp-transport.c:854
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr "Respuesta de error a MAIL FROM: %s: correo no enviado"
-
-#: camel/providers/smtp/camel-smtp-transport.c:879
-#, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr "Expiró el tiempo para RCPT TO: %s: correo no enviado"
-
-#: camel/providers/smtp/camel-smtp-transport.c:898
-#, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr "Respuesta de error a RCPT TO: %s: correo no enviado"
-
-#: camel/providers/smtp/camel-smtp-transport.c:929
-#, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr "Expiró el tiempo para DATA: %s: correo no enviado"
-
-#: camel/providers/smtp/camel-smtp-transport.c:948
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr "Respuesta de error a DATA: %s: correo no enviado"
-
-#: camel/providers/smtp/camel-smtp-transport.c:963
-#: camel/providers/smtp/camel-smtp-transport.c:981
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr ""
-"Expiró el tiempo para el envío de DATA: terminación del mensaje: %s: correo "
-"no enviado"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1000
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr ""
-"Respuesta de error a DATA: terminación del mensaje: %s: correo no enviado"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1024
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr "Expiró el tiempo para RSET: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1043
-#, c-format
-msgid "RSET response error: %s"
-msgstr "Respuesta de error a RSET: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1066
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr "Expiró el tiempo para QUIT: %s: no es fatal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1085
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr "Respuesta de error a QUIT: %s: no es fatal"
-
-#: composer/e-msg-composer-attachment-bar.c:95
-msgid "1 byte"
-msgstr "1 byte"
-
-#: composer/e-msg-composer-attachment-bar.c:97
-#, c-format
-msgid "%u bytes"
-msgstr "%u bytes"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fK"
-
-#: composer/e-msg-composer-attachment-bar.c:108
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fM"
-
-#: composer/e-msg-composer-attachment-bar.c:112
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fG"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:332 mail/mail-display.c:122
-msgid "attachment"
-msgstr "adjunto"
-
-#: composer/e-msg-composer-attachment-bar.c:421
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr "Adjuntar un fichero"
-
-#: composer/e-msg-composer-attachment-bar.c:469
-msgid "Remove selected items from the attachment list"
-msgstr "Quitar los elementos seleccionados de la lista de adjuntos"
-
-#: composer/e-msg-composer-attachment-bar.c:500
-msgid "Add attachment..."
-msgstr "Incluir adjunto..."
-
-#: composer/e-msg-composer-attachment-bar.c:501
-msgid "Attach a file to the message"
-msgstr "Adjuntar un fichero al mensaje"
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/mail-config.glade.h:9
-#: mail/message-list.c:1081
-msgid "Attachment"
-msgstr "Adjunto"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr "Propiedades del adjunto"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr "Nombre del fichero:"
-
-#: composer/e-msg-composer-attachment.glade.h:5
-msgid "Inline attachment"
-msgstr "Adjunto en línea"
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr "Tipo MIME:"
-
-#: composer/e-msg-composer-attachment.glade.h:7
-msgid "Send as:"
-msgstr "Enviar como:"
-
-#: composer/e-msg-composer.c:546
-#, c-format
-msgid ""
-"This version of Evolution was not built with support for S/MIME.\n"
-"You may wish to instead use PGP to %s your document."
-msgstr ""
-"Esta versión de Evolution no fue construida con soporte para S/MIME.\n"
-"En su lugar puede querer usar PGP para %s su documento."
-
-#: composer/e-msg-composer.c:548
-msgid "sign and encrypt"
-msgstr "firmar y encriptar"
-
-#: composer/e-msg-composer.c:549
-msgid "sign"
-msgstr "firmar"
-
-#: composer/e-msg-composer.c:549
-msgid "encrypt"
-msgstr "encriptar"
-
-#: composer/e-msg-composer.c:601
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-"No pude abrir el archivo de firma %s:\n"
-"%s"
-
-#: composer/e-msg-composer.c:774
-msgid "Save as..."
-msgstr "Guardar como..."
-
-#: composer/e-msg-composer.c:785
-#, c-format
-msgid "Error saving file: %s"
-msgstr "Error guardando el archivo: %s"
-
-#: composer/e-msg-composer.c:805
-#, c-format
-msgid "Error loading file: %s"
-msgstr "Error cargando el archivo: %s"
-
-#: composer/e-msg-composer.c:877
-msgid ""
-"Unable to open the drafts folder for this account.\n"
-"Would you like to use the default drafts folder?"
-msgstr ""
-"No pude abrir la carpeta de borradores para esta cuenta.\n"
-"¿Quiere usar la carpeta de borradores por defecto?"
-
-#: composer/e-msg-composer.c:935 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:228
-msgid "Evolution"
-msgstr "Evolution"
-
-#: composer/e-msg-composer.c:941
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-"Este mensaje no ha sido enviado.\n"
-"\n"
-"¿Quiere guardar los cambios?"
-
-#: composer/e-msg-composer.c:966
-msgid "Open file"
-msgstr "Abrir archivo"
-
-#: composer/e-msg-composer.c:1092
-msgid "That file does not exist."
-msgstr "Ese archivo no existe."
-
-#: composer/e-msg-composer.c:1102
-msgid "That is not a regular file."
-msgstr "Ese no es un archivo normal."
-
-#: composer/e-msg-composer.c:1112
-msgid "That file exists but is not readable."
-msgstr "Ese archivo no es legible."
-
-#: composer/e-msg-composer.c:1122
-msgid "That file appeared accesible but open(2) failed."
-msgstr "Ese archivo parece accesible pero open(2) ha fallado."
-
-#: composer/e-msg-composer.c:1144
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-"El archivo es muy largo (más de 100K).\n"
-"¿Esta seguro que quiere añadirlo?"
-
-#: composer/e-msg-composer.c:1165
-msgid "An error occurred while reading the file."
-msgstr "Ha ocurrido un error mientras se leía el archivo."
-
-#: composer/e-msg-composer.c:1526 composer/e-msg-composer.c:1871
-msgid "Compose a message"
-msgstr "Nuevo mensaje"
-
-#: composer/e-msg-composer.c:1962
-msgid "Could not create composer window."
-msgstr "No pude crear una ventana para escribir el mensaje"
-
-#: composer/e-msg-composer-hdrs.c:324
-msgid "Click here for the address book"
-msgstr "Presione aquí para acceder a la agenda"
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:355
-msgid "From:"
-msgstr "De:"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:361
-msgid "Reply-To:"
-msgstr "Responder a:"
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:372
-msgid "Subject:"
-msgstr "Asunto:"
-
-#: composer/e-msg-composer-hdrs.c:386
-msgid "To:"
-msgstr "A:"
-
-#: composer/e-msg-composer-hdrs.c:387
-msgid "Enter the recipients of the message"
-msgstr "Escriba los destinatarios del mensaje"
-
-#: composer/e-msg-composer-hdrs.c:390
-msgid "Cc:"
-msgstr "Cc:"
-
-#: composer/e-msg-composer-hdrs.c:391
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "Escriba las direcciones que recibirán una copia del mensaje"
-
-#: composer/e-msg-composer-hdrs.c:394
-msgid "Bcc:"
-msgstr "Bcc:"
-
-#: composer/e-msg-composer-hdrs.c:395
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"Escriba las direcciones que recibirán una copia del mensaje sin aparecer en "
-"la lista de destinatarios del mensaje."
-
-#: composer/evolution-composer.c:355
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-"No pude crear una ventana de composición, porque no ha configurado\n"
-"todavía ninguna identidad en el componente de correo."
-
-#: composer/evolution-composer.c:370
-msgid "Cannot initialize Evolution's composer."
-msgstr "No puedo inicializar el componente de escritura correo de Evolution."
-
-#: data/evolution.desktop.in.h:2
-msgid "The Evolution groupware suite"
-msgstr "La herramienta de trabajo en grupo Evolution"
-
-#: data/evolution.keys.in.h:1
-msgid "address card"
-msgstr "tarjeta de dirección"
-
-#: data/evolution.keys.in.h:2
-msgid "calendar information"
-msgstr "información del calendario"
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:69 e-util/e-time-utils.c:117
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:477
-#: widgets/misc/e-dateedit.c:1284 widgets/misc/e-dateedit.c:1465
-msgid "%m/%d/%Y"
-msgstr "%m/%d/%Y"
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:87 e-util/e-time-utils.c:198
-msgid "%I:%M:%S %p%n"
-msgstr "%I:%M:%S %p%n"
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:90 e-util/e-time-utils.c:201
-msgid "%H:%M:%S%n"
-msgstr "%H:%M:%S%n"
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:94 e-util/e-time-utils.c:205
-msgid "%I:%M %p%n"
-msgstr "%I:%M %p%n"
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:97 e-util/e-time-utils.c:208
-msgid "%H:%M%n"
-msgstr "%H:%M%n"
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:269
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:473
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2505
-msgid "%a %m/%d/%Y"
-msgstr "%a %m %d %Y"
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:274
-msgid "%a %m/%d/%Y %H:%M"
-msgstr "%a %m/%d/%Y %H:%M"
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:283
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr "%a %m/%d/%Y %I:%M %p"
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:312 widgets/misc/e-dateedit.c:1259
-#: widgets/misc/e-dateedit.c:1318 widgets/misc/e-dateedit.c:1497
-msgid "%H:%M"
-msgstr "%H:%M"
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:315
-msgid "%H:%M:%S"
-msgstr "%H:%M:%S"
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:320 widgets/misc/e-dateedit.c:1262
-#: widgets/misc/e-dateedit.c:1321 widgets/misc/e-dateedit.c:1500
-msgid "%I:%M %p"
-msgstr "%I:%M %p"
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:323
-msgid "%I:%M:%S %p"
-msgstr "%I:%M:%S %p"
-
-#: executive-summary/component/component-factory.c:152
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr "No puedo inicializar el componente de resumen de trabajo de Evolution."
-
-#: executive-summary/component/e-summary.c:926
-#, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"No pude abrir el archivo HTML:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:940
-#, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr ""
-"Error leyendo los datos\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:958
-msgid "File does not have a place for the services.\n"
-msgstr "El archivo no tiene un lugar para el servicio.\n"
-
-#: executive-summary/component/e-summary-callbacks.c:126
-msgid "Select a service"
-msgstr "Seleccione un servicio"
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-"Puede elegir una página HTML distinta como fondo del Resumen de Trabajo.\n"
-"\n"
-"Déjelo vacío para la elección por defecto"
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr "Abrir %s con la aplicación por defecto de GNOME"
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr "Abrir %s con el navegador web por defecto de GNOME"
-
-#: executive-summary/component/e-summary-url.c:71
-#, c-format
-msgid "Send an email to %s"
-msgstr "Enviar un correo a %s"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr "Cambiar la vista a %s"
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr "Ejecutar %s"
-
-#: executive-summary/component/e-summary-url.c:75
-#, c-format
-msgid "Close %s"
-msgstr "Cerrar %s"
-
-#: executive-summary/component/e-summary-url.c:76
-#, c-format
-msgid "Move %s to the left"
-msgstr "Mover %s a la izquierda"
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr "Mover %s a la derecha"
-
-#: executive-summary/component/e-summary-url.c:78
-#, c-format
-msgid "Move %s into the previous row"
-msgstr "Mover %s a la fila anterior"
-
-#: executive-summary/component/e-summary-url.c:79
-#, c-format
-msgid "Move %s into the next row"
-msgstr "Mover %s a la fila siguiente"
-
-#: executive-summary/component/e-summary-url.c:80
-#, c-format
-msgid "Configure %s"
-msgstr "Configurar %s"
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr "Apariencia"
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr "Fondo:"
-
-#: executive-summary/component/main.c:62
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-"El componente Resumen de Trabajo no pudo inicializar Bonobo.\n"
-"Si hubo un mensaje de advertencia sobre el RootPOA, probablemente significa\n"
-"que compiló Bonobo con GOAD en lugar de con OAF."
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-msgid "Evolution component for the executive summary."
-msgstr "Componente Evolution para el resumen de trabajo."
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-msgid "Factory for the Evolution executive summary component."
-msgstr "Factoría para el componente resumen de trabajo de Evolution."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr "Factoría para el resumen RDF."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-msgid "RDF Summary"
-msgstr "Resumen RDF"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-msgid "Factory for the test bonobo component."
-msgstr "Factoría para el componente bonobo de prueba."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-msgid "Factory for the test component."
-msgstr "Factoría para el componente de prueba."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr "Servicio de prueba bonobo"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr "Probar Servicio"
-
-#: executive-summary/test-service/rdf-summary.c:512
-#: executive-summary/test-service/rdf-summary.c:549
-#: executive-summary/test-service/rdf-summary.c:594
-#: widgets/misc/e-messagebox.c:166
-msgid "Error"
-msgstr "Error"
-
-#: executive-summary/test-service/rdf-summary.c:775
-msgid "Update automatically"
-msgstr "Actualizado automático"
-
-#: executive-summary/test-service/rdf-summary.c:785
-msgid "Update now"
-msgstr "Actualizar ahora"
-
-#: executive-summary/test-service/rdf-summary.c:795
-msgid "Update every "
-msgstr "Actualizar cada "
-
-#: executive-summary/test-service/rdf-summary.c:806
-#: filter/filter-datespec.c:83
-msgid "minutes"
-msgstr "minutos"
-
-#: filter/filter-datespec.c:78
-msgid "year"
-msgstr "año"
-
-#: filter/filter-datespec.c:78
-msgid "years"
-msgstr "años"
-
-#: filter/filter-datespec.c:79
-msgid "month"
-msgstr "mes"
-
-#: filter/filter-datespec.c:79
-msgid "months"
-msgstr "meses"
-
-#: filter/filter-datespec.c:80
-msgid "week"
-msgstr "semana"
-
-#: filter/filter-datespec.c:80
-msgid "weeks"
-msgstr "semanas"
-
-#: filter/filter-datespec.c:81
-msgid "days"
-msgstr "días"
-
-#: filter/filter-datespec.c:82
-msgid "hour"
-msgstr "hora"
-
-#: filter/filter-datespec.c:82
-msgid "hours"
-msgstr "horas"
-
-#: filter/filter-datespec.c:83
-msgid "minute"
-msgstr "minuto"
-
-#: filter/filter-datespec.c:84
-msgid "second"
-msgstr "segundo"
-
-#: filter/filter-datespec.c:84
-msgid "seconds"
-msgstr "segundos"
-
-#: filter/filter-datespec.c:199
-msgid "Oops. You have forgotten to choose a date."
-msgstr "Oops. Te has olvidado de elegir una fecha."
-
-#: filter/filter-datespec.c:201
-msgid "Oops. You have chosen an invalid date."
-msgstr "Oops. Has elegido una fecha incorrecta."
-
-#: filter/filter-datespec.c:276
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-"La fecha del mensaje será comparada con la\n"
-"fecha del momento de ejecutar el filtro o\n"
-"cuando se abra el vfolder."
-
-#: filter/filter-datespec.c:299
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-"La fecha del mensaje será comparada con la\n"
-"fecha que especifique aquí."
-
-#: filter/filter-datespec.c:339
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-"La fecha del mensaje será comparada con una\n"
-"fecha relativa al momento de ejecutar el\n"
-"filtro. Por ejemplo: \"Hace una semana\"."
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:374
-msgid "the current time"
-msgstr "la fecha actual"
-
-#: filter/filter-datespec.c:374
-msgid "a time you specify"
-msgstr "Una fecha a especificar"
-
-#: filter/filter-datespec.c:375
-msgid "a time relative to the current time"
-msgstr "una fecha relativa al momento actual"
-
-#. The label
-#: filter/filter-datespec.c:433
-msgid "Compare against"
-msgstr "Comparar con"
-
-#: filter/filter-datespec.c:550 filter/filter-datespec.c:710
-msgid "now"
-msgstr "ahora"
-
-#: filter/filter-datespec.c:707
-msgid "<click here to select a date>"
-msgstr "<pinche aquí para añadir una fecha>"
-
-#: filter/filter-editor.c:132 filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr "Reglas para los filtro"
-
-#. and now for the action area
-#: filter/filter-filter.c:452
-msgid "Then"
-msgstr "Entonces"
-
-#: filter/filter-filter.c:466
-msgid "Add action"
-msgstr "Añadir acción"
-
-#: filter/filter-folder.c:147
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-"Oops, te has olvidado de elegir una carpeta.\n"
-"Por favor vuelve y especifica una carpeta válida donde entregar el correo."
-
-#: filter/filter-folder.c:225 filter/vfolder-rule.c:285
-#: mail/mail-account-gui.c:682
-msgid "Select Folder"
-msgstr "Seleccionar carpeta"
-
-#: filter/filter-folder.c:250
-msgid "Enter folder URI"
-msgstr "Escribir URI de la carpeta"
-
-#: filter/filter-folder.c:296
-msgid "<click here to select a folder>"
-msgstr "<pinche aquí para seleccionar una carpeta>"
-
-#: filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr "Editar filtros"
-
-#: filter/filter.glade.h:5
-msgid "Edit VFolders"
-msgstr "Editar carpeta virtual"
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr "Entrando"
-
-#: filter/filter.glade.h:8
-msgid "Outgoing"
-msgstr "Saliente"
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:130
-msgid "Virtual Folders"
-msgstr "Carpetas virtuales"
-
-#: filter/filter.glade.h:11
-msgid "specific folders only"
-msgstr "solo carpetas especificadas"
-
-#: filter/filter.glade.h:12
-msgid "vFolder Sources"
-msgstr "Fuentes de la carpeta virtual"
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr "con todas las carpetas remotas activas"
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr "con todas las carpetas locales y remotas activas"
-
-#: filter/filter.glade.h:15
-msgid "with all local folders"
-msgstr "con todas las carpetas locales"
-
-#: filter/filter-input.c:193
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-"Error en la expresión regular '%s':\n"
-"%s"
-
-#: filter/filter-part.c:488
-msgid "Test"
-msgstr "Prueba"
-
-#: filter/filter-rule.c:626
-msgid "Rule name: "
-msgstr "Nombre de la regla:"
-
-#: filter/filter-rule.c:630
-msgid "Untitled"
-msgstr "Sin título"
-
-#: filter/filter-rule.c:646
-msgid "If"
-msgstr "Si"
-
-#: filter/filter-rule.c:664
-msgid "Execute actions"
-msgstr "Ejecutar acciones"
-
-#: filter/filter-rule.c:668
-msgid "if all criteria are met"
-msgstr "si se cumplen todos los criterios"
-
-#: filter/filter-rule.c:673
-msgid "if any criteria are met"
-msgstr "si se cumple algún criterio"
-
-#: filter/filter-rule.c:684
-msgid "Add criterion"
-msgstr "Añadir criterio"
-
-#: filter/filter-rule.c:770
-msgid "incoming"
-msgstr "entrante"
-
-#: filter/filter-rule.c:770
-msgid "outgoing"
-msgstr "saliente"
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Colour"
-msgstr "Asignar color"
-
-#: filter/libfilter-i18n.h:4
-msgid "Assign Score"
-msgstr "Asignar puntuación"
-
-#: filter/libfilter-i18n.h:5
-msgid "Attachments"
-msgstr "Adjuntos"
-
-#: filter/libfilter-i18n.h:7
-msgid "contains"
-msgstr "contiene"
-
-#: filter/libfilter-i18n.h:8
-msgid "Copy to Folder"
-msgstr "Copiar a la carpeta"
-
-#: filter/libfilter-i18n.h:9
-msgid "Date received"
-msgstr "Fecha de recepción"
-
-#: filter/libfilter-i18n.h:10
-msgid "Date sent"
-msgstr "Fecha de envío"
-
-#: filter/libfilter-i18n.h:12
-msgid "Deleted"
-msgstr "Borrado"
-
-#: filter/libfilter-i18n.h:13
-msgid "does not contain"
-msgstr "no contiene"
-
-#: filter/libfilter-i18n.h:14
-msgid "does not end with"
-msgstr "no acaba en"
-
-#: filter/libfilter-i18n.h:15
-msgid "does not exist"
-msgstr "no existe"
-
-#: filter/libfilter-i18n.h:16
-msgid "does not sound like"
-msgstr "no suena como"
-
-#: filter/libfilter-i18n.h:17
-msgid "does not start with"
-msgstr "no comienza por"
-
-#: filter/libfilter-i18n.h:18
-msgid "Do Not Exist"
-msgstr "No Existe"
-
-#: filter/libfilter-i18n.h:19
-msgid "Draft"
-msgstr "Borrador"
-
-#: filter/libfilter-i18n.h:20
-msgid "ends with"
-msgstr "finaliza con"
-
-#: filter/libfilter-i18n.h:21
-msgid "Exist"
-msgstr "Salir"
-
-#: filter/libfilter-i18n.h:22
-msgid "exists"
-msgstr "existe"
-
-#: filter/libfilter-i18n.h:23
-msgid "Expression"
-msgstr "Expresión"
-
-#: filter/libfilter-i18n.h:24
-msgid "Forward to Address"
-msgstr "Reenviar a dirección"
-
-#: filter/libfilter-i18n.h:25
-msgid "Important"
-msgstr "Importante"
-
-#: filter/libfilter-i18n.h:26
-msgid "is"
-msgstr "es"
-
-#: filter/libfilter-i18n.h:27
-msgid "is greater than"
-msgstr "es mayor que"
-
-#: filter/libfilter-i18n.h:28
-msgid "is less than"
-msgstr "es menor que"
-
-#: filter/libfilter-i18n.h:29
-msgid "is not"
-msgstr "no es"
-
-#: filter/libfilter-i18n.h:30
-msgid "Mailing list"
-msgstr "Lista de correo"
-
-#: filter/libfilter-i18n.h:31
-msgid "Message Body"
-msgstr "Cuerpo del mensaje"
-
-#: filter/libfilter-i18n.h:32
-msgid "Message Header"
-msgstr "Cabecera del mensaje"
-
-#: filter/libfilter-i18n.h:33
-msgid "Message was received"
-msgstr "Se recibió el mensaje"
-
-#: filter/libfilter-i18n.h:34
-msgid "Message was sent"
-msgstr "Se envió el mensaje"
-
-#: filter/libfilter-i18n.h:35
-msgid "Move to Folder"
-msgstr "Mover a la carpeta"
-
-#: filter/libfilter-i18n.h:36
-msgid "on or after"
-msgstr "en o después de"
-
-#: filter/libfilter-i18n.h:37
-msgid "on or before"
-msgstr "en o antes de"
-
-#: filter/libfilter-i18n.h:38
-msgid "Read"
-msgstr "Leído"
-
-#: filter/libfilter-i18n.h:39
-msgid "Recipients"
-msgstr "Destinatarios"
-
-#: filter/libfilter-i18n.h:40
-msgid "Regex Match"
-msgstr "Expresión regular"
-
-#: filter/libfilter-i18n.h:41
-msgid "Replied to"
-msgstr "Respondido a"
-
-#: filter/libfilter-i18n.h:42 filter/score-rule.c:204 filter/score-rule.c:206
-#: mail/message-list.c:1081
-msgid "Score"
-msgstr "Puntuación"
-
-#: filter/libfilter-i18n.h:43
-msgid "Sender"
-msgstr "Remitente"
-
-#: filter/libfilter-i18n.h:44
-msgid "Set Status"
-msgstr "Poner estado"
-
-#: filter/libfilter-i18n.h:45
-msgid "sounds like"
-msgstr "suena como"
-
-#: filter/libfilter-i18n.h:46
-msgid "Source Account"
-msgstr "Fuente de la cuenta"
-
-#: filter/libfilter-i18n.h:47
-msgid "Specific header"
-msgstr "Cabecera específica"
-
-#: filter/libfilter-i18n.h:48
-msgid "starts with"
-msgstr "comienza por"
-
-#: filter/libfilter-i18n.h:50
-msgid "Stop Processing"
-msgstr "Parar el proceso"
-
-#: filter/libfilter-i18n.h:51 mail/mail-format.c:767 mail/message-list.c:1082
-msgid "Subject"
-msgstr "Asunto"
-
-#: filter/libfilter-i18n.h:52
-msgid "was after"
-msgstr "estaba después de"
-
-#: filter/libfilter-i18n.h:53
-msgid "was before"
-msgstr "estaba antes de"
-
-#: filter/rule-editor.c:147
-msgid "Rules"
-msgstr "Reglas"
-
-#: filter/rule-editor.c:240
-msgid "Add Rule"
-msgstr "Añadir Regla"
-
-#: filter/rule-editor.c:299
-msgid "Edit Rule"
-msgstr "Editar Regla"
-
-#: filter/score-editor.c:130
-msgid "Score Rules"
-msgstr "Reglas de puntuación"
-
-#: importers/elm-importer.c:512 importers/evolution-gnomecard-importer.c:238
-#: importers/netscape-importer.c:780 importers/pine-importer.c:646
-#: shell/e-shell-importer.c:653 shell/importer/import.glade.h:4
-msgid "Import"
-msgstr "Importar"
-
-#: importers/elm-importer.c:517 importers/netscape-importer.c:785
-#: importers/pine-importer.c:651
-msgid "Mail"
-msgstr "Correo"
-
-#: importers/elm-importer.c:521
-msgid "Elm Aliases"
-msgstr "Alias de Elm"
-
-#: importers/elm-importer.c:528 importers/evolution-gnomecard-importer.c:250
-#: importers/netscape-importer.c:807 importers/pine-importer.c:668
-msgid "Don't ask me again"
-msgstr "No me preguntes más veces"
-
-#: importers/elm-importer.c:561
-msgid ""
-"Evolution has found Elm mail files\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-"Evolution ha encontrado archivos de correo de Elm\n"
-"¿Quiere importarlos a Evolution?"
-
-#: importers/elm-importer.c:579
-msgid "Elm mail"
-msgstr "Correo de Elm"
-
-#: importers/evolution-gnomecard-importer.c:243 importers/pine-importer.c:661
-msgid "Addressbook"
-msgstr "Agenda de direcciones"
-
-#: importers/evolution-gnomecard-importer.c:275
-msgid ""
-"Evolution has found GnomeCard files.\n"
-"Would you like them to be imported into Evolution?"
-msgstr ""
-"Evolution ha encontrado archivos de GnomeCard.\n"
-"¿Quiere importarlos a Evolution?"
-
-#: importers/netscape-importer.c:790 importers/pine-importer.c:656
-msgid "Settings"
-msgstr "Configuración"
-
-#: importers/netscape-importer.c:795 mail/mail-callbacks.c:1359
-msgid "Filters"
-msgstr "Filtros"
-
-#: importers/netscape-importer.c:800
-msgid "Addressbooks"
-msgstr "Agenda de direcciones"
-
-#: importers/netscape-importer.c:847
-msgid ""
-"Evolution has found Netscape mail files.\n"
-"Would you like them to be imported into Evolution?"
-msgstr ""
-"Evolution ha encontrado archivos de correo de Netscape.\n"
-"¿Quiere importarlos a Evolution?"
-
-#: importers/pine-importer.c:705
-msgid ""
-"Evolution has found Pine mail files.\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-"Evolution ha encontrado archivos de correo de Pine.\n"
-"¿Quiere importarlos a Evolution?"
-
-#: importers/pine-importer.c:723
-msgid "Pine mail"
-msgstr "Correo de Pine"
-
-#: mail/component-factory.c:337
-msgid "Cannot initialize Evolution's mail component."
-msgstr "No puedo inicializar el componente de correo de Evolution."
-
-#: mail/component-factory.c:410
-msgid "Cannot register storage with shell"
-msgstr "No puedo registrar un sistema de guardado con la shell"
-
-#: mail/folder-browser.c:329
-msgid "Store search as vFolder"
-msgstr "Guardar la búsqueda como una carpeta virtual"
-
-#: mail/folder-browser.c:653
-msgid "VFolder on _Subject"
-msgstr "VFolder según el a_sunto"
-
-#: mail/folder-browser.c:656
-msgid "VFolder on Se_nder"
-msgstr "VFolder según el _remitente"
-
-#: mail/folder-browser.c:659
-msgid "VFolder on _Recipients"
-msgstr "VFolder según los _destinatarios"
-
-#: mail/folder-browser.c:662
-msgid "VFolder on Mailing _List"
-msgstr "Carpeta virtual según la _Lista de Correo"
-
-#: mail/folder-browser.c:668
-msgid "Filter on Sub_ject"
-msgstr "Filtrar según el As_unto"
-
-#: mail/folder-browser.c:671
-msgid "Filter on Sen_der"
-msgstr "Filtrar según el Re_mitente"
-
-#: mail/folder-browser.c:674
-msgid "Filter on Re_cipients"
-msgstr "Filtrar según los Des_tinatarios"
-
-#: mail/folder-browser.c:677
-msgid "Filter on _Mailing List"
-msgstr "Filtrar según la Lista de _Correo"
-
-#: mail/folder-browser.c:686
-msgid "_Open"
-msgstr "_Abrir"
-
-#: mail/folder-browser.c:688
-msgid "Resend"
-msgstr "Reenviar"
-
-#: mail/folder-browser.c:690 ui/evolution-calendar.xml.h:43
-#: ui/evolution-mail.xml.h:118 ui/evolution-tasks.xml.h:8
-msgid "_Save As..."
-msgstr "Guardar _como..."
-
-#: mail/folder-browser.c:692 ui/evolution-event-editor.xml.h:69
-#: ui/evolution-task-editor-dialog.xml.h:82 ui/evolution-tasks.xml.h:7
-msgid "_Print"
-msgstr "Im_primir"
-
-#: mail/folder-browser.c:697 ui/evolution-mail.xml.h:117
-msgid "_Reply to Sender"
-msgstr "_Resp. al Remitente"
-
-#: mail/folder-browser.c:699 ui/evolution-mail.xml.h:72
-msgid "Reply to _All"
-msgstr "Re: _Todos"
-
-#: mail/folder-browser.c:701
-msgid "_Forward"
-msgstr "_Reenviar"
-
-#: mail/folder-browser.c:704
-msgid "Mar_k as Read"
-msgstr "Mar_car como leído"
-
-#: mail/folder-browser.c:706
-msgid "Mark as U_nread"
-msgstr "Marcar como _no leído"
-
-#: mail/folder-browser.c:711
-msgid "_Move to Folder..."
-msgstr "_Mover a la carpeta..."
-
-#: mail/folder-browser.c:713
-msgid "_Copy to Folder..."
-msgstr "_Copiar a la carpeta..."
-
-#: mail/folder-browser.c:717 ui/evolution-mail.xml.h:121
-msgid "_Undelete"
-msgstr "_Recuperar"
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:727
-msgid "Apply Filters"
-msgstr "Aplicar filtro"
-
-#: mail/folder-browser.c:731
-msgid "Create Ru_le From Message"
-msgstr "Crear una Reg_la con el Mensaje"
-
-#: mail/folder-browser.c:870
-msgid "Filter on Mailing List"
-msgstr "Filtrar según la lista de correo"
-
-#: mail/folder-browser.c:871
-msgid "VFolder on Mailing List"
-msgstr "Carpeta virtual según la Lista de Correo"
-
-#: mail/folder-browser.c:873
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr "Filtrar según la lista de correo (%s)"
-
-#: mail/folder-browser.c:874
-#, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr "Carpeta virtual según la Lista de Correo (%s)"
-
-#: mail/folder-browser-factory.c:196
-#, c-format
-msgid "Properties for \"%s\""
-msgstr "Propiedades para \"%s\""
-
-#: mail/folder-browser-factory.c:198 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-msgid "Properties"
-msgstr "Propiedades"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr "Componente Evolution para manejar el correo."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-msgid "Evolution mail composer."
-msgstr "Compositor de correo de Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-msgid "Evolution mail executive summary component."
-msgstr "Componente de correo del resumen de trabajo de Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-msgid "Evolution mail folder display component."
-msgstr "Componente para mostar carpetas de correo de Evolution"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-msgid "Evolution mail folder factory component."
-msgstr "Componente para factoría de carpetas de correo de Evolution"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-msgid "Factory for the Evolution composer."
-msgstr "Factoría para el compositor de correo de Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-msgid "Factory for the Evolution mail component."
-msgstr "Factoría para el componente de correo de Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-msgid "Factory for the Mail Summary component."
-msgstr "Factoría para el componente de Resumen de Correo."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:9
-msgid "Mail configuration interface"
-msgstr "Interface de configuración del correo"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:1
-msgid "Factory to import mbox into Evolution"
-msgstr "Factoría para importar archivos de mbox a Evolution."
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:2
-msgid "Imports mbox files into Evolution"
-msgstr "Importa archivos de mbox a Evolution."
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:1
-msgid "Factory to import Outlook Express 4 mails into Evolution"
-msgstr "Factoría para importar mensajes de Outlook Express 4 a Evolution."
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:2
-msgid "Imports Outlook Express 4 files into Evolution"
-msgstr "Importa archivos de Outlook Express 4 a Evolution."
-
-#: mail/local-config.glade.h:1
-msgid "Current store format:"
-msgstr "Formato de almacenamiento actual:"
-
-#: mail/local-config.glade.h:2
-msgid "Mailbox Format"
-msgstr "Formato Mailbox"
-
-#: mail/local-config.glade.h:3
-msgid "New store format:"
-msgstr "Nuevo formato de almacenamiento:"
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-"Nota: Cuando se convierte entre distintos formatos de buzón de correo, "
-"puede\n"
-"que un fallo (como la falta de disco) no sea recuperable automaticamente.\n"
-"Por favor use esta opción con cuidado."
-
-#: mail/local-config.glade.h:7
-msgid "maildir"
-msgstr "maildir"
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr "mbox"
-
-#: mail/local-config.glade.h:9
-msgid "mh"
-msgstr "mh"
-
-#: mail/mail-account-editor.c:105
-msgid "You have not filled in all of the required information."
-msgstr "No ha rellenado toda la información requerida."
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:173
-msgid "Evolution Account Editor"
-msgstr "Editor de cuentas de Evolution"
-
-#: mail/mail-accounts.c:121 mail/mail-accounts.c:165
-msgid " (default)"
-msgstr "(valores predeterminados)"
-
-#: mail/mail-accounts.c:197
-msgid "Disable"
-msgstr "Deshabilitado"
-
-#: mail/mail-accounts.c:199 mail/mail-config.glade.h:30
-msgid "Enable"
-msgstr "Habilitado"
-
-#: mail/mail-accounts.c:280 mail/mail-accounts.c:284
-msgid "Are you sure you want to delete this account?"
-msgstr "¿Esta seguro que quiere borrar esta cuenta?"
-
-#: mail/mail-accounts.c:418 mail/mail-accounts.c:422
-msgid "Are you sure you want to delete this news account?"
-msgstr "¿Esta seguro que quiere borrar esta cuenta de noticias?"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:568
-msgid "Evolution Account Manager"
-msgstr "Administrador de cuentas de Evolution"
-
-#: mail/mail-autofilter.c:70
-#, c-format
-msgid "Mail to %s"
-msgstr "Enviar a %s"
-
-#: mail/mail-autofilter.c:213
-#, c-format
-msgid "Subject is %s"
-msgstr "Asunto es %s"
-
-#: mail/mail-autofilter.c:229
-#, c-format
-msgid "Mail from %s"
-msgstr "Correo de %s"
-
-#: mail/mail-autofilter.c:285
-#, c-format
-msgid "%s mailing list"
-msgstr "lista de correo %s"
-
-#: mail/mail-autofilter.c:335 mail/mail-autofilter.c:356
-msgid "Add Filter Rule"
-msgstr "Añadir Regla de Filtro"
-
-#: mail/mail-callbacks.c:93
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-"No ha configurado el cliente de correo.\n"
-"Necesita hacerlo para poder enviar,\n"
-"recibir o escribir mensajes.\n"
-"¿Querría configurarlo ahora?"
-
-#: mail/mail-callbacks.c:146
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-"Necesita configurar una identidad para\n"
-"poder escribir mensajes de correo."
-
-#: mail/mail-callbacks.c:158
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-"Necesita configurar un transporte de\n"
-"correo para poder enviarlo."
-
-#: mail/mail-callbacks.c:202
-msgid "You have not set a mail transport method"
-msgstr "No has definido un sistema para enviar el correo"
-
-#: mail/mail-callbacks.c:235
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-"Este mensaje no tiene asunto.\n"
-"¿Quiere enviarlo?"
-
-#: mail/mail-callbacks.c:308
-msgid "You must specify recipients in order to send this message."
-msgstr "Debes especificar destinatarios para poder enviar el mensaje."
-
-#: mail/mail-callbacks.c:351
-msgid "You must configure an account before you can send this email."
-msgstr "Debe configurar una cuenta antes de poder enviar este mensaje."
-
-#: mail/mail-callbacks.c:594
-#, c-format
-msgid "On %s, %s wrote:"
-msgstr "El día %s, %s escribió:"
-
-#: mail/mail-callbacks.c:756
-msgid "Forwarded message:\n"
-msgstr "Mensaje reenviado:\n"
-
-#: mail/mail-callbacks.c:850
-msgid "Move message(s) to"
-msgstr "Mover Mensaje(s) a"
-
-#: mail/mail-callbacks.c:852
-msgid "Copy message(s) to"
-msgstr "Copiar mensaje(s) a"
-
-#: mail/mail-callbacks.c:1017
-#, c-format
-msgid "Are you sure you want to edit all %d messages?"
-msgstr "¿Esta seguro que quiere editar los %d mensajes?"
-
-#: mail/mail-callbacks.c:1039
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-"Solo puede editar mensajes guardados\n"
-"en la carpeta Borradores."
-
-#: mail/mail-callbacks.c:1073
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-"Solo puede reenviar mensajes\n"
-"de la carpeta Enviados."
-
-#: mail/mail-callbacks.c:1085
-#, c-format
-msgid "Are you sure you want to resend all %d messages?"
-msgstr "¿Esta seguro que quiere reenviar los %d mensajes?"
-
-#: mail/mail-callbacks.c:1106
-msgid "No Message Selected"
-msgstr "Se hay mensajes seleccionados"
-
-#: mail/mail-callbacks.c:1140 mail/mail-display.c:92
-msgid "Overwrite file?"
-msgstr "¿Sobreescribir archivo?"
-
-#: mail/mail-callbacks.c:1144 mail/mail-display.c:96
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-"Ya existe una archivo con ese nombre.\n"
-"¿Sobreescribirlo?"
-
-#: mail/mail-callbacks.c:1188
-msgid "Save Message As..."
-msgstr "Guardar mensaje como..."
-
-#: mail/mail-callbacks.c:1190
-msgid "Save Messages As..."
-msgstr "Guardar mensajes como..."
-
-#: mail/mail-callbacks.c:1349
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-"Error cargando la información del filtro:\n"
-"%s"
-
-#: mail/mail-callbacks.c:1407
-msgid "Print Message"
-msgstr "Imprimir mensaje"
-
-#: mail/mail-callbacks.c:1454
-msgid "Printing of message failed"
-msgstr "Ha fallado la impresión del mensaje"
-
-#: mail/mail-callbacks.c:1549
-#, c-format
-msgid "Are you sure you want to open all %d messages in separate windows?"
-msgstr "¿Esta seguro que quiere abrir %d mensajes en ventanas separadas?"
-
-#: mail/mail-config.c:1213 mail/mail-config.c:1216
-msgid "Connecting to server..."
-msgstr "Conectando al servidor..."
-
-#: mail/mail-config-druid.c:99
-msgid ""
-"Please enter your name and email address below. The \"optional\" fields "
-"below do not need to be filled in, unless you wish to include this "
-"information in email you send."
-msgstr ""
-"Por favor escribe debajo tu nombre y dirección de correo. Los campos "
-"\"opcionales\" no hace falta que los rellenes, a menos que quieras incluir "
-"esta información en las cartas que envies."
-
-#: mail/mail-config-druid.c:101
-msgid ""
-"Please enter information about your incoming mail server below. If you don't "
-"know what kind of server you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"Por favor rellena la información acerca del servidor de correo de entrada. "
-"Si no sabes que clase de servidor estas usando, preguntale a tu "
-"administrador de sistemas o a tu Proveedor de Servicios de Internet."
-
-#: mail/mail-config-druid.c:105
-msgid ""
-"Please enter information about your outgoing mail protocol below. If you "
-"don't know which protocol you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"Por favor escriba debajo la información acerca del protocolo de salida de su "
-"correo. Si no sabes que protocolo usas, preguntale a tu administrador de "
-"sistemas o a tu Proveedor de Servicios de Internet."
-
-#: mail/mail-config-druid.c:107
-msgid ""
-"You are almost done with the mail configuration process. The identity, "
-"incoming mail server and outgoing mail transport method which you provided "
-"will be grouped together to make an Evolution mail account. Please enter a "
-"name for this account in the space below. This name will be used for display "
-"purposes only."
-msgstr ""
-"Casi has acabado con el proceso de configuración del correo. La identidad, "
-"el servidor de correo de entrada y el método de envío de correo que has "
-"especificado serán agrupados para crear una cuenta de correo de Evolution. "
-"Por favor escriba debajo un nombre para esta cuenta, Este nombre solo se "
-"usará para mostrar información."
-
-#. set window title
-#: mail/mail-config-druid.c:445
-msgid "Evolution Account Wizard"
-msgstr "Configurador de cuentas de Evolution"
-
-#: mail/mail-config.glade.h:1
-msgid " Check for supported types "
-msgstr " Comprobar tipos soportados "
-
-#: mail/mail-config.glade.h:2
-msgid " color"
-msgstr "color"
-
-#: mail/mail-config.glade.h:3
-msgid "Account"
-msgstr "Cuenta"
-
-#: mail/mail-config.glade.h:4
-msgid "Account Information"
-msgstr "Información de la cuenta"
-
-#: mail/mail-config.glade.h:5
-msgid "Account Management"
-msgstr "Gestión de la cuenta"
-
-#: mail/mail-config.glade.h:6
-msgid "Accounts"
-msgstr "Cuentas"
-
-#: mail/mail-config.glade.h:8
-msgid "Always load images off the net"
-msgstr "Cargar imagenes fuera de la red"
-
-#: mail/mail-config.glade.h:10
-msgid "Authentication"
-msgstr "Autentificación"
-
-#: mail/mail-config.glade.h:11
-msgid "Authentication Type: "
-msgstr "Tipo de autentificación: "
-
-#: mail/mail-config.glade.h:12
-msgid "Automatically check for new mail every"
-msgstr "Comprobar el correo automáticamente cada"
-
-#: mail/mail-config.glade.h:14
-msgid "Composer"
-msgstr "Nuevo"
-
-#: mail/mail-config.glade.h:15
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-"Enhorabueba, la configuración de su correo esta completa.\n"
-"\n"
-"Ahora está listo para mandar y recivir correo \n"
-"usando Evolution. \n"
-"\n"
-"Pulse \"Finalizar\" para guardar su configuración."
-
-#: mail/mail-config.glade.h:21
-msgid "De_fault"
-msgstr "Va_lores predeterminados"
-
-#: mail/mail-config.glade.h:22
-msgid "Default \"Forward\" style is: "
-msgstr "El estilo por defecto de \"Reenviar\" es: "
-
-#: mail/mail-config.glade.h:25
-msgid "Done"
-msgstr "Hecho"
-
-#: mail/mail-config.glade.h:26
-msgid "Drafts"
-msgstr "Borradores"
-
-#: mail/mail-config.glade.h:27
-msgid "Drafts folder:"
-msgstr "Carpeta de borradores:"
-
-#: mail/mail-config.glade.h:29
-msgid "Email Address:"
-msgstr "Dirección de correo:"
-
-#: mail/mail-config.glade.h:31
-msgid "Full Name:"
-msgstr "Nombre completo:"
-
-#: mail/mail-config.glade.h:32
-msgid "Highlight citations with"
-msgstr "Resaltadar citas con"
-
-#: mail/mail-config.glade.h:34
-msgid "IMAPv4 "
-msgstr "IMAPv4 "
-
-#: mail/mail-config.glade.h:35
-msgid "Identity"
-msgstr "Identidad"
-
-#: mail/mail-config.glade.h:36
-msgid "In HTML mail"
-msgstr "Correo en HTML"
-
-#: mail/mail-config.glade.h:37
-msgid "Inline"
-msgstr "Incluido en línea"
-
-#: mail/mail-config.glade.h:38
-msgid "Kerberos "
-msgstr "Kerberos "
-
-#: mail/mail-config.glade.h:39
-msgid "Load images if sender is in addressbook"
-msgstr "Cargar imágenes si el remitente esta el la agenda de direcciones"
-
-#: mail/mail-config.glade.h:40
-msgid "Mail Configuration"
-msgstr "Configuración del correo"
-
-#: mail/mail-config.glade.h:41
-msgid "Make this my default account"
-msgstr "Hacer de esta mi cuenta predeterminada"
-
-#: mail/mail-config.glade.h:42
-msgid "Mark messages as \"Read\" after:"
-msgstr "Marcar mensajes como \"Leídos\" tras:"
-
-#: mail/mail-config.glade.h:44
-msgid "Never load images off the net"
-msgstr "No cargar nunca imágenes desde la red"
-
-#: mail/mail-config.glade.h:45
-msgid "News"
-msgstr "Noticias"
-
-#: mail/mail-config.glade.h:47
-msgid "Optional Information"
-msgstr "Información Opcional"
-
-#: mail/mail-config.glade.h:48
-msgid "Organization:"
-msgstr "Organización:"
-
-#: mail/mail-config.glade.h:49
-msgid "PGP"
-msgstr "PGP"
-
-#: mail/mail-config.glade.h:50
-msgid "PGP binary path:"
-msgstr "Localización del binario de PGP:"
-
-#: mail/mail-config.glade.h:55
-msgid "Qmail maildir "
-msgstr "Maildir estilo Qmail"
-
-#: mail/mail-config.glade.h:56
-msgid "Quoted"
-msgstr "Citado"
-
-#: mail/mail-config.glade.h:57
-msgid "Receiving Email"
-msgstr "Recibiendo mensajes"
-
-#: mail/mail-config.glade.h:58
-msgid "Receiving Mail"
-msgstr "Recibiendo Mensajes"
-
-#: mail/mail-config.glade.h:59
-msgid "Receiving Options"
-msgstr "Recibiendo Opciones"
-
-#: mail/mail-config.glade.h:61
-msgid "Required Information"
-msgstr "Información Requerida"
-
-#: mail/mail-config.glade.h:63
-msgid "Select PGP binary"
-msgstr "Seleccione el binario de PGP"
-
-#: mail/mail-config.glade.h:64
-msgid "Send mail in HTML format by default."
-msgstr "Enviar por defecto el mensaje en formato HTML"
-
-#: mail/mail-config.glade.h:65
-msgid "Sending Email"
-msgstr "Enviando correo"
-
-#: mail/mail-config.glade.h:66
-msgid "Sending Mail"
-msgstr "Enviando Correo"
-
-#: mail/mail-config.glade.h:68
-msgid "Sent"
-msgstr "Enviado"
-
-#: mail/mail-config.glade.h:69
-msgid "Sent and Draft Messages"
-msgstr "Mensajes Enviados y Borradores"
-
-#: mail/mail-config.glade.h:70
-msgid "Sent messages folder:"
-msgstr "Carpeta de mensajes enviados:"
-
-#: mail/mail-config.glade.h:71
-msgid "Server Configuration"
-msgstr "Configuración del servidor"
-
-#: mail/mail-config.glade.h:72
-msgid "Server Type: "
-msgstr "Tipo de servidor:"
-
-#: mail/mail-config.glade.h:73
-msgid "Server requires authentication"
-msgstr "El servidor requiere autentificación"
-
-#: mail/mail-config.glade.h:74
-msgid "Signature file:"
-msgstr "Archivo de firma:"
-
-#: mail/mail-config.glade.h:75
-msgid "Sources"
-msgstr "Fuentes"
-
-#: mail/mail-config.glade.h:76
-msgid "Special Folders"
-msgstr "Carpetas Especiales"
-
-#: mail/mail-config.glade.h:77
-msgid "Standard Unix mbox"
-msgstr "Mabox estándar de Unix"
-
-#: mail/mail-config.glade.h:78
-msgid "Type"
-msgstr "Tipo"
-
-#: mail/mail-config.glade.h:79
-msgid "Use secure connection (SSL)"
-msgstr "Use conexiones seguras (SSL)"
-
-#: mail/mail-config.glade.h:80
-msgid "Username:"
-msgstr "Nombre:"
-
-#: mail/mail-config.glade.h:81
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-"Bienvenido al ayudante de configuración de correo de Evolution.\n"
-"\n"
-"Pulse \"Siguiente\" para comenzar. "
-
-#: mail/mail-config.glade.h:86 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:45 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:48
-msgid "_Edit"
-msgstr "_Editar"
-
-#: mail/mail-crypto.c:59
-msgid "Could not create a PGP signature context."
-msgstr "No pude crear un contexto de firma PGP."
-
-#: mail/mail-crypto.c:84
-msgid "Could not create a PGP verification context."
-msgstr "No pude crear un contexto de verificación PGP."
-
-#: mail/mail-crypto.c:113
-msgid "Could not create a PGP encryption context."
-msgstr "No pude crear un contexto de encriptación PGP."
-
-#: mail/mail-crypto.c:138
-msgid "Could not create a PGP decryption context."
-msgstr "No pude crear un contexto de desencriptación PGP."
-
-#: mail/mail-crypto.c:169
-msgid "Could not create a S/MIME signature context."
-msgstr "No pude crear un contexto de firma S/MIME."
-
-#: mail/mail-crypto.c:195
-msgid "Could not create a S/MIME verification context."
-msgstr "No pude crear un contexto de verificación S/MIME."
-
-#: mail/mail-crypto.c:225
-msgid "Could not create a S/MIME encryption context."
-msgstr "No pude crear un contexto de encriptación S/MIME."
-
-#: mail/mail-crypto.c:251
-msgid "Could not create a S/MIME decryption context."
-msgstr "No pude crear un contexto de desencriptación S/MIME."
-
-#: mail/mail-display.c:196
-msgid "Save Attachment"
-msgstr "Guardar adjunto"
-
-#: mail/mail-display.c:236
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr "No puedo crear el directorio temporal: %s"
-
-#: mail/mail-display.c:297
-msgid "Save to Disk..."
-msgstr "Guardar en disco..."
-
-#: mail/mail-display.c:299
-#, c-format
-msgid "Open in %s..."
-msgstr "Abrir en %s..."
-
-#: mail/mail-display.c:301
-msgid "View Inline"
-msgstr "Ver incluido"
-
-#: mail/mail-display.c:336
-msgid "External Viewer"
-msgstr "Visores externos"
-
-#: mail/mail-display.c:359
-#, c-format
-msgid "View Inline (via %s)"
-msgstr "Ver incluido (vía %s)"
-
-#: mail/mail-display.c:363
-msgid "Hide"
-msgstr "Ocultar"
-
-#: mail/mail-display.c:962
-msgid "Loading message content"
-msgstr "Cargando el contenido del mensaje"
-
-#: mail/mail-display.c:1256
-msgid "Open link in browser"
-msgstr "Abrir enlaze en el navegador"
-
-#: mail/mail-display.c:1258
-msgid "Save as (FIXME)"
-msgstr "Guardar como (ARREGLAME)"
-
-#: mail/mail-display.c:1260
-msgid "Copy location (FIXME)"
-msgstr "Copiar dirección (ARREGLAME)"
-
-#: mail/mail-format.c:527
-#, c-format
-msgid "%s attachment"
-msgstr "%s adjunto"
-
-#: mail/mail-format.c:573
-msgid "Could not parse MIME message. Displaying as source."
-msgstr "No puede analizar el mensaje MIME. Mostrando la fuente."
-
-#: mail/mail-format.c:640 mail/message-list.c:1082
-msgid "Date"
-msgstr "Fecha"
-
-#: mail/mail-format.c:756 mail/message-list.c:1082
-msgid "From"
-msgstr "De"
-
-#: mail/mail-format.c:759
-msgid "Reply-To"
-msgstr "Responder a"
-
-#: mail/mail-format.c:762 mail/message-list.c:1083
-msgid "To"
-msgstr "A"
-
-#: mail/mail-format.c:765
-msgid "Cc"
-msgstr "Cc"
-
-#: mail/mail-format.c:1075
-msgid "No GPG/PGP program configured."
-msgstr "No hay programas GPG/PGP configurados."
-
-#: mail/mail-format.c:1090
-msgid "Encrypted message not displayed"
-msgstr "Mensaje encriptado no mostrado"
-
-#: mail/mail-format.c:1096
-msgid "Encrypted message"
-msgstr "Mensaje encriptado"
-
-#: mail/mail-format.c:1097
-msgid "Click icon to decrypt."
-msgstr "Pulse el icono para desencriptar."
-
-#: mail/mail-format.c:1153
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr "Este mensaje está firmado digitalmente y es auténtico."
-
-#: mail/mail-format.c:1161
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr ""
-"Este mensaje está firmado digitalmente pero no se puede verificar su "
-"autenticidad."
-
-#: mail/mail-format.c:1787
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr "Puntero a sitio FTP (%s)"
-
-#: mail/mail-format.c:1799
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr "Puntero a archivo local (%s) valido en \"%s\""
-
-#: mail/mail-format.c:1803
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr "Puntero a archivo local (%s)"
-
-#: mail/mail-format.c:1837
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr "Puntero a datos externos desconocidos (tipo \"%s\")"
-
-#: mail/mail-format.c:1842
-msgid "Malformed external-body part."
-msgstr "Parte externa al cuerpo del mensaje mal escrita."
-
-#: mail/mail-local.c:505
-#, c-format
-msgid "Opening '%s'"
-msgstr "Abriendo '%s'"
-
-#: mail/mail-local.c:785
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr "Cambiando la carpeta \"%s\" al formato \"%s\""
-
-#: mail/mail-local.c:789
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr "Cambiar la carpeta \"%s\" al formato \"%s\""
-
-#: mail/mail-local.c:812
-msgid "Reconfiguring folder"
-msgstr "Reconfigurar carpeta"
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:841
-msgid "Closing current folder"
-msgstr "Cerrando carpeta actual"
-
-#: mail/mail-local.c:873
-msgid "Renaming old folder and opening"
-msgstr "Renombrando carpeta antigua y abriéndola"
-
-#: mail/mail-local.c:891
-msgid "Creating new folder"
-msgstr "Creando una nueva carpeta"
-
-#: mail/mail-local.c:905
-msgid "Copying messages"
-msgstr "Copiando mensajes"
-
-#: mail/mail-local.c:922
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-"No puedo guardar la metainformación de la carpeta: probablemente\n"
-"volver a abrir esta carpeta: %s"
-
-#: mail/mail-local.c:961
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-"Si no puede volver a abrir este buzón, entonces\n"
-"puede que tenga que arreglarlo a mano."
-
-#: mail/mail-mt.c:190
-#, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-"Error mientras `%s':\n"
-"%s"
-
-#: mail/mail-mt.c:193
-#, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-"Error mientras hacia:\n"
-"%s"
-
-#: mail/mail-mt.c:516 mail/mail-mt.c:545 mail/mail-mt.c:880
-msgid "Working"
-msgstr "Trabajando"
-
-#: mail/mail-mt.c:862
-msgid "Evolution progress"
-msgstr "Progreso de Evolution"
-
-#: mail/mail-ops.c:599
-#, c-format
-msgid "Sending \"%s\""
-msgstr "Enviando \"%s\""
-
-#: mail/mail-ops.c:603
-msgid "Sending message"
-msgstr "Enviando mensaje"
-
-#: mail/mail-ops.c:718
-#, c-format
-msgid "Sending message %d of %d"
-msgstr "Enviando mensaje %d de %d"
-
-#: mail/mail-ops.c:737
-#, c-format
-msgid "Failed on message %d of %d"
-msgstr "Error en mensaje %d de %d"
-
-#: mail/mail-ops.c:739 mail/mail-send-recv.c:475
-msgid "Complete."
-msgstr "Completado."
-
-#: mail/mail-ops.c:825
-msgid "Saving message to folder"
-msgstr "Guardando mensajes en la carpeta"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Moving messages to %s"
-msgstr "Moviendo mensajes a %s"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Copying messages to %s"
-msgstr "Copiando mensajes a %s"
-
-#: mail/mail-ops.c:914
-msgid "Moving"
-msgstr "Moviendo"
-
-#: mail/mail-ops.c:917
-msgid "Copying"
-msgstr "Copiando"
-
-#: mail/mail-ops.c:992
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr "Escaneando carpetas en \"%s\""
-
-#: mail/mail-ops.c:1154
-msgid "Forwarded messages"
-msgstr "Mensaje reenviados"
-
-#: mail/mail-ops.c:1195 mail/mail-ops.c:1333
-#, c-format
-msgid "Opening folder %s"
-msgstr "Abriendo carpeta %s"
-
-#: mail/mail-ops.c:1262
-#, c-format
-msgid "Opening store %s"
-msgstr "Abriendo sitio %s"
-
-#: mail/mail-ops.c:1449
-msgid "Expunging folder"
-msgstr "Comprimiendo carpeta"
-
-#: mail/mail-ops.c:1498
-#, c-format
-msgid "Retrieving message %s"
-msgstr "Obteniendo mensaje %s"
-
-#: mail/mail-ops.c:1565
-msgid "Retrieving messages"
-msgstr "Obteniendo mensajes"
-
-#: mail/mail-ops.c:1575
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr "Obteniendo mensaje número %d de %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1649
-msgid "Saving messages"
-msgstr "Guardando mensajes"
-
-#: mail/mail-ops.c:1728
-#, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr ""
-"No pude crear el archivo de salida: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1741
-#, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr "Guardando mensaje %d de %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1755
-#, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr ""
-"Error guardando mensajes en: %s:\n"
-" %s"
-
-#: mail/mail-ops.c:1829
-msgid "Saving attachment"
-msgstr "Guardando adjunto"
-
-#: mail/mail-ops.c:1844
-#, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr ""
-"No pude crear el archivo de salida: %s:\n"
-" %s"
-
-#: mail/mail-ops.c:1872
-#, c-format
-msgid "Could not write data: %s"
-msgstr "No pude escribir datos: %s"
-
-#: mail/mail-ops.c:1939
-#, c-format
-msgid "Disconnecting from %s"
-msgstr "Desconectar de %s"
-
-#: mail/mail-search.c:138
-msgid "(Untitled Message)"
-msgstr "(Mansaje sin título)"
-
-#: mail/mail-search.c:268
-msgid "Find in Message"
-msgstr "Buscar en Mensaje"
-
-#: mail/mail-search.c:298
-msgid "Case Sensitive"
-msgstr "Sensible a mayusculas"
-
-#: mail/mail-search.c:299
-msgid "Search Forward"
-msgstr "Buscar hacia adelante"
-
-#: mail/mail-search.c:316
-msgid "Find:"
-msgstr "Buscar:"
-
-#: mail/mail-search.c:319
-msgid "Matches:"
-msgstr "Coincide:"
-
-#: mail/mail-search-dialogue.c:113
-msgid "_Search"
-msgstr "_Buscar"
-
-#: mail/mail-send-recv.c:138
-msgid "Cancelling..."
-msgstr "Cancelando..."
-
-#: mail/mail-send-recv.c:233
-msgid "Send & Receive mail"
-msgstr "Enviar & Recibir mensajes"
-
-#: mail/mail-send-recv.c:236
-msgid "Receiving"
-msgstr "Recibiendo"
-
-#: mail/mail-send-recv.c:285
-msgid "Updating..."
-msgstr "Actualizando..."
-
-#: mail/mail-send-recv.c:287 mail/mail-send-recv.c:333
-msgid "Waiting..."
-msgstr "Esperando..."
-
-#: mail/mail-send-recv.c:306
-msgid "Sending"
-msgstr "Enviando"
-
-#: mail/mail-send-recv.c:471
-msgid "Cancelled."
-msgstr "Cancelado"
-
-#: mail/mail-summary.c:110
-msgid "Incomplete message written on pipe!"
-msgstr "¡Mensaje escrito incompleto en la tubería!"
-
-#: mail/mail-summary.c:468
-msgid "Mail Summary"
-msgstr "Resumen de Correo"
-
-#: mail/mail-tools.c:145
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr "No puedo crear el mbox temporal `%s': %s"
-
-#: mail/mail-tools.c:192
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr "[%s] (mensaje reenviado)"
-
-#: mail/mail-tools.c:202
-msgid "Fwd: (no subject)"
-msgstr "Fwd: (sin asunto)"
-
-#: mail/mail-tools.c:219
-#, c-format
-msgid "Forwarded message - %s"
-msgstr "Reenviado mensaje - %s"
-
-#: mail/mail-tools.c:221
-msgid "Forwarded message (no subject)"
-msgstr "Mensaje reenviado (sin asunto)"
-
-#: mail/mail-tools.c:428
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> %"
-"s<br><b>Subject:</b> %s<br>"
-msgstr ""
-"-----Mensaje Reenviado-----<br><b>De:</b> %s<br><b>A:</b> %s<br><b>Asunto:</"
-"b> %s<br>"
-
-#: mail/mail-vfolder.c:249
-msgid "VFolders"
-msgstr "Carpetas virtuales"
-
-#: mail/mail-vfolder.c:438
-msgid "New VFolder"
-msgstr "Nueva carpeta virtual"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/message-browser.c:188 ui/evolution-mail.xml.h:70
-msgid "Reply"
-msgstr "Responder"
-
-#: mail/message-browser.c:188
-msgid "Reply to the sender of this message"
-msgstr "Responder al remitente de este mensaje"
-
-#: mail/message-browser.c:191 ui/evolution-mail.xml.h:71
-msgid "Reply to All"
-msgstr "Re: Todos"
-
-#: mail/message-browser.c:191
-msgid "Reply to all recipients of this message"
-msgstr "Responder a todos los destinatarios de este mensaje"
-
-#: mail/message-browser.c:194 ui/evolution-mail.xml.h:33
-msgid "Forward"
-msgstr "Reenviar"
-
-#: mail/message-browser.c:194
-msgid "Forward this message"
-msgstr "Reenviar este mensaje"
-
-#: mail/message-browser.c:199
-msgid "Print the selected message"
-msgstr "Imprimir el mensaje seleccionado"
-
-#: mail/message-browser.c:202
-msgid "Delete this message"
-msgstr "Borrar este mensaje"
-
-#: mail/message-browser.c:207 ui/evolution-event-editor.xml.h:33
-#: ui/evolution-mail.xml.h:64 ui/evolution-task-editor-dialog.xml.h:36
-msgid "Previous"
-msgstr "Previo"
-
-#: mail/message-browser.c:207
-msgid "Previous message"
-msgstr "Mensaje previo"
-
-#: mail/message-browser.c:210 ui/evolution-calendar.xml.h:18
-#: ui/evolution-event-editor.xml.h:29 ui/evolution-mail.xml.h:57
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "Next"
-msgstr "Siguiente"
-
-#: mail/message-browser.c:210
-msgid "Next message"
-msgstr "Mensaje siguiente"
-
-#: mail/message-list.c:677
-msgid "Unseen"
-msgstr "Sin leer"
-
-#: mail/message-list.c:678
-msgid "Seen"
-msgstr "Visto"
-
-#: mail/message-list.c:679
-msgid "Answered"
-msgstr "Contestado"
-
-#: mail/message-list.c:680
-msgid "Multiple Unseen Messages"
-msgstr "Multiples mensajes sin leer"
-
-#: mail/message-list.c:681
-msgid "Multiple Messages"
-msgstr "Multiples mensajes"
-
-#: mail/message-list.c:685
-msgid "Lowest"
-msgstr "La más baja"
-
-#: mail/message-list.c:686
-msgid "Lower"
-msgstr "Más baja"
-
-#: mail/message-list.c:690
-msgid "Higher"
-msgstr "Más alta"
-
-#: mail/message-list.c:691
-msgid "Highest"
-msgstr "La más alta"
-
-#: mail/message-list.c:941
-msgid "?"
-msgstr "?"
-
-#: mail/message-list.c:948
-msgid "Today %l:%M %p"
-msgstr "Hoy %l:%M %p"
-
-#: mail/message-list.c:957
-msgid "Yesterday %l:%M %p"
-msgstr "Ayer %l:%M %p"
-
-#: mail/message-list.c:969
-msgid "%a %l:%M %p"
-msgstr "%a %l:%M %p"
-
-#: mail/message-list.c:977
-msgid "%b %d %l:%M %p"
-msgstr "%b %d %l:%M %p"
-
-#: mail/message-list.c:979
-msgid "%b %d %Y"
-msgstr "%b %d %Y"
-
-#: mail/message-list.c:1081
-msgid "Flagged"
-msgstr "Marcado"
-
-#: mail/message-list.c:1082
-msgid "Received"
-msgstr "Recibido"
-
-#: mail/message-list.c:1083
-msgid "Size"
-msgstr "Tamaño"
-
-#: mail/mail-session.c:161
-msgid "User canceled operation."
-msgstr "Operación cancelada por el usuario."
-
-#: mail/subscribe-dialog.c:76 shell/e-storage-set-view.c:48
-msgid "Folder"
-msgstr "Carpeta"
-
-#: mail/subscribe-dialog.c:77
-msgid "Store"
-msgstr "Almacenar"
-
-#: mail/subscribe-dialog.c:138
-msgid "Display folders starting with:"
-msgstr "Mostrar carpetas que comiencen por:"
-
-#: mail/subscribe-dialog.c:168
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr "Obteniendo sitio para \"%s\""
-
-#: mail/subscribe-dialog.c:271
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr "Suscribiendo a carpeta \"%s\""
-
-#: mail/subscribe-dialog.c:273
-#, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr "Dessuscribiendo la carpeta \"%s\""
-
-#. Construct the app
-#: mail/subscribe-dialog.c:873
-msgid "Manage Subscriptions"
-msgstr "Administrar Suscripciones"
-
-#: shell/e-setup.c:118 shell/e-setup.c:191
-msgid "Evolution installation"
-msgstr "Instalación de Evolution"
-
-#: shell/e-setup.c:122
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-"Esta nueva versión de Evolution necesita instalar archivos adicionales\n"
-"en su carpeta personal de Evolution"
-
-#: shell/e-setup.c:123
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr ""
-"Por favor, pulse en <<Aceptar>> para instalar los archivos, o <<Cancelar>> "
-"para salir."
-
-#: shell/e-setup.c:163
-msgid "Could not update files correctly"
-msgstr "No pude actualizar correctamente los archivos"
-
-#: shell/e-setup.c:166 shell/e-setup.c:234
-msgid "Evolution files successfully installed."
-msgstr "Los archivos de Evolution han sido instalados."
-
-#: shell/e-setup.c:195
-msgid "This seems to be the first time you are running Evolution."
-msgstr "Parece que esta es la primera vez que ejecuta Evolution"
-
-#: shell/e-setup.c:196
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr ""
-"Por favor, pulse en <<Aceptar>> para instalar los archivos de usuario de "
-"Evolution en"
-
-#: shell/e-setup.c:215
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"No puedo crear el directorio\n"
-"%s\n"
-"Error: %s"
-
-#: shell/e-setup.c:230
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-"No puedo copiar archivos en\n"
-"`%s'."
-
-#: shell/e-setup.c:255
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-"El archivo `%s' no es un directorio.\n"
-"Por favor, renombre lo para permitir la instalación\n"
-"de los archivos de usuario de Evolution."
-
-#: shell/e-setup.c:267
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-"El directorio `%s' existe pero no es el directorio\n"
-"de Evolution. Por favor, renombre lo para permitir la\n"
-"instalación de los archivos de usuario de Evolution."
-
-#: shell/e-shell.c:392
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr "No puedo configurar una carpeta local -- %s"
-
-#: shell/e-shell.c:1272
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-"Ooops! La vista `%s' ha cesado inesperadamente. :-(\n"
-"Esto probablemente significa que el componente %s se ha roto."
-
-#: shell/e-shell-folder-commands.c:238
-#, c-format
-msgid "Specify a folder to copy folder \"%s\" into:"
-msgstr "Especificar una carpeta en la que copiar la carpeta \"%s\":"
-
-#: shell/e-shell-folder-commands.c:243
-msgid "Copy folder"
-msgstr "Copiar una carpeta"
-
-#: shell/e-shell-folder-commands.c:280
-#, c-format
-msgid "Specify a folder to move folder \"%s\" into:"
-msgstr "Especificar una carpeta a la que mover la carpeta \"%s\":"
-
-#: shell/e-shell-folder-commands.c:285
-msgid "Move folder"
-msgstr "Mover una carpeta"
-
-#: shell/e-shell-folder-creation-dialog.c:99
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-"No puedo crear la carpeta especificada:\n"
-"%s"
-
-#: shell/e-shell-folder-creation-dialog.c:156
-msgid "The specified folder name is not valid."
-msgstr "El nombre de carpeta especificado no es valido."
-
-#: shell/e-shell-folder-creation-dialog.c:263
-msgid "Evolution - Create new folder"
-msgstr "Evolution - Crear nuevas carpetas"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-"El tipo de carpeta seleccionada no es valido para\n"
-"la operación requerida."
-
-#: shell/e-shell-folder-selection-dialog.c:328
-msgid "New..."
-msgstr "Nuevo..."
-
-#: shell/e-shell-folder-title-bar.c:459 shell/e-shell-folder-title-bar.c:460
-msgid "(Untitled)"
-msgstr "(Sin título)"
-
-#: shell/e-shell-importer.c:97
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-"Eliga el archivo que quiere importar a Evolution, y seleccione de la lista "
-"el tipo de archivo que es.\n"
-"\n"
-"Si no lo sabe, puede elegir \"Automático\" y Evolution tratará de encargarse."
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/e-shell-importer.c:192
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-"Importando %s\n"
-"El importador no esta listo.\n"
-"Esperando 5 segundos antes de reintentar."
-
-#: shell/e-shell-importer.c:212 shell/e-shell-importer.c:243
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-"Importando %s\n"
-"Importando elemento %d."
-
-#: shell/e-shell-importer.c:353
-#, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr ""
-"No hay ninguna herramienta para importar datos que pueda encargarse de\n"
-"%s"
-
-#: shell/e-shell-importer.c:363
-msgid "Importing"
-msgstr "Importando"
-
-#: shell/e-shell-importer.c:371
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-"Importando %s.\n"
-"Comenzando %s"
-
-#: shell/e-shell-importer.c:384
-#, c-format
-msgid "Error starting %s"
-msgstr "Error cargando %s"
-
-#: shell/e-shell-importer.c:404
-#, c-format
-msgid "Error loading %s"
-msgstr "Error cargando %s"
-
-#: shell/e-shell-importer.c:419
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-"Importando %s\n"
-"Importando elemento 1."
-
-#: shell/e-shell-importer.c:490
-msgid "Automatic"
-msgstr "Automático"
-
-#: shell/e-shell-importer.c:540
-msgid "Filename:"
-msgstr "Nombre de fichero:"
-
-#: shell/e-shell-importer.c:545 shell/importer/import.glade.h:5
-msgid "Select a file"
-msgstr "Elega un archivo"
-
-#: shell/e-shell-importer.c:555
-msgid "File type:"
-msgstr "Tipo de archivo:"
-
-#: shell/e-shell-importer.c:601
-msgid "Select folder"
-msgstr "Seleccionar carpeta"
-
-#: shell/e-shell-importer.c:602
-msgid "Select a destination folder for importing this data"
-msgstr "Seleccionar una carpeta de destino donde importar estos datos"
-
-#: shell/e-shell-offline-handler.c:554
-msgid "Closing connections..."
-msgstr "Cerrando conexiones..."
-
-#: shell/e-shell-view.c:166
-msgid "(No folder displayed)"
-msgstr "(No hay carpetas mostrándose)"
-
-#: shell/e-shell-view.c:1317
-#, c-format
-msgid "%s - Evolution %s"
-msgstr "%s - Evolution %s"
-
-#: shell/e-shell-view.c:1319
-#, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "%s - Evolution %s [%s]"
-
-#: shell/e-shell-view.c:1357
-msgid "Evolution is currently online. Click on this button to work offline."
-msgstr "Evolution está conectado. Pulse este botón para trabajar desconectado."
-
-#: shell/e-shell-view.c:1364
-msgid "Evolution is in the process of going offline."
-msgstr "Evolution está en proceso de desconectarse."
-
-#: shell/e-shell-view.c:1370
-msgid "Evolution is currently offline. Click on this button to work online."
-msgstr "Evolution está desconectado. Pulse este botón para trabajar conectado."
-
-#: shell/e-shell-view-menu.c:179
-msgid "Bug buddy was not found in your $PATH."
-msgstr "No se ha encontrado a bug buddy en su $PATH."
-
-#: shell/e-shell-view-menu.c:185
-msgid "Bug buddy could not be run."
-msgstr "No se ha podido ejecutar bug buddy"
-
-#: shell/e-shell-view-menu.c:230
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Copyright 1999, 2000, 2001 Ximian, Inc."
-
-#: shell/e-shell-view-menu.c:232
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-"Evolution es un conjunto de aplicaciones de\n"
-"trabajo en grupo para manejar el correo, el calendario y\n"
-"la lista de contactos en el entorno del escritorio GNOME."
-
-#: shell/e-shell-view-menu.c:421
-msgid "Go to folder..."
-msgstr "Ir a la carpeta..."
-
-#: shell/e-shell-view-menu.c:422
-msgid "Select the folder that you want to open"
-msgstr "Seleccione la carpeta que quiere abrir"
-
-#: shell/e-shell-view-menu.c:602
-msgid "Work online"
-msgstr "Trabajar conectado"
-
-#: shell/e-shell-view-menu.c:614 shell/e-shell-view-menu.c:626
-msgid "Work offline"
-msgstr "Trabajar desconectado"
-
-#: shell/e-shortcuts.c:381
-msgid "Error saving shortcuts."
-msgstr "Error guardando atajos."
-
-#: shell/e-shortcuts-view.c:134
-msgid "Create new shortcut group"
-msgstr "Crear un nuevo grupo de atajos"
-
-#: shell/e-shortcuts-view.c:137
-msgid "Group name:"
-msgstr "Nombre del grupo:"
-
-#: shell/e-shortcuts-view.c:260
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-"¿Realmente quiere quitar el grupo\n"
-"`%s' del menú de atajos?"
-
-#: shell/e-shortcuts-view.c:265
-msgid "Don't remove"
-msgstr "No quitar"
-
-#: shell/e-shortcuts-view.c:276
-msgid "_Small Icons"
-msgstr "Icono_s pequeños"
-
-#: shell/e-shortcuts-view.c:277
-msgid "Show the shortcuts as small icons"
-msgstr "Mostrar los atajos como iconos pequeños"
-
-#: shell/e-shortcuts-view.c:279
-msgid "_Large Icons"
-msgstr "Iconos _grandes"
-
-#: shell/e-shortcuts-view.c:280
-msgid "Show the shortcuts as large icons"
-msgstr "Mostrar los atajos como iconos grandes"
-
-#: shell/e-shortcuts-view.c:291
-msgid "_New Group..."
-msgstr "_Nuevo grupo..."
-
-#: shell/e-shortcuts-view.c:292
-msgid "Create a new shortcut group"
-msgstr "Crear un nuevo grupo de atajos"
-
-#: shell/e-shortcuts-view.c:294
-msgid "_Remove This Group..."
-msgstr "_Quitar este grupo..."
-
-#: shell/e-shortcuts-view.c:295
-msgid "Remove this shortcut group"
-msgstr "Quitar este grupo de atajos"
-
-#: shell/e-shortcuts-view.c:300
-msgid "_Hide the Shortcut Bar"
-msgstr "_Ocultar la barra de atajos"
-
-#: shell/e-shortcuts-view.c:301
-msgid "Hide the shortcut bar"
-msgstr "Ocultar la barra de atajos"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate"
-msgstr "Activar"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate this shortcut"
-msgstr "Activar este atajo"
-
-#: shell/e-shortcuts-view.c:388
-msgid "Remove this shortcut from the shortcut bar"
-msgstr "Quitar este atajo de la lista de atajos"
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr "(Sin nombre)"
-
-#: shell/e-storage.c:459
-msgid "No error"
-msgstr "Sin errores"
-
-#: shell/e-storage.c:461
-msgid "Generic error"
-msgstr "Error genérico"
-
-#: shell/e-storage.c:463
-msgid "A folder with the same name already exists"
-msgstr "Ya existe una carpeta con ese nombre"
-
-#: shell/e-storage.c:465
-msgid "The specified folder type is not valid"
-msgstr "Es tipo de fichero especificado no es válido"
-
-#: shell/e-storage.c:467
-msgid "I/O error"
-msgstr "Error de I/O"
-
-#: shell/e-storage.c:469
-msgid "Not enough space to create the folder"
-msgstr "No hay suficiente espacio para crear la carpeta"
-
-#: shell/e-storage.c:471
-msgid "The specified folder was not found"
-msgstr "No se encontró la carpeta especificada"
-
-#: shell/e-storage.c:473
-msgid "Function not implemented in this storage"
-msgstr "Función sin implementar en este manejador"
-
-#: shell/e-storage.c:475
-msgid "Permission denied"
-msgstr "Permiso denegado"
-
-#: shell/e-storage.c:477
-msgid "Operation not supported"
-msgstr "Operación no soportada"
-
-#: shell/e-storage.c:479
-msgid "The specified type is not supported in this storage"
-msgstr "El tipo especificado no esta soportado por este manejador"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-msgid "Folder name:"
-msgstr "Nombre de la carpeta:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-msgid "Folder type:"
-msgstr "Tipo de carpeta:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-msgid "Specify where to create the folder:"
-msgstr "Especifique donde crear la carpeta:"
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-msgid "The Evolution shell."
-msgstr "La shell de Evolution."
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr "Pulse \"Importar\" para comenzar a importar el archivo en Evolution. "
-
-#: shell/importer/import.glade.h:2
-msgid "Evolution Import Utility"
-msgstr "Utilidad de Importación de Evolution"
-
-#: shell/importer/import.glade.h:3
-msgid "Evolution Importer Utility"
-msgstr "Utilidad de Importación de Evolution"
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-"Bienvenido a la Utilidad de Importación de Evolution.\n"
-"Con este asistente será guiado a traves del proceso de\n"
-"importar archivos externos a Evolution."
-
-#: shell/importer/intelligent.c:186
-msgid "Importers"
-msgstr "Importadores"
-
-#: shell/main.c:82
-#, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-"Hola. Gracias por tomarse la molestia de descargar esta LIBERACIÓN DE "
-"PRUEBA\n"
-"de la herramienta de trabajo en grupo Evolution.\n"
-"\n"
-"Evolution todavía no está completa. Se está acercando,pero hay sitios\n"
-"donde faltan las utilidades o solo funcionan a medias. Si no puede "
-"averiguar\n"
-"como hacer algo, ¿probablemente es porque todavía no se puede hacer! :-)\n"
-"\n"
-"Esperamos que pueda usar Evolution, pero todavía creemos que debemos\n"
-"advertirle que puede que: se rompa, pierda su correo, deje procesos\n"
-"corriendo, consuma el 100% de su CPU, envie comando incorrectos a sus\n"
-"servidores, y le ponga en situaciones embarazosas delante de sus \n"
-"amigos y compañeros de trabajo. Úselo como se indica.\n"
-"\n"
-"Esperamos que le gusten los resultados de nuestro duro trabajo, y\n"
-"esperamos sus contribuciónes\n"
-
-#: shell/main.c:107
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-"Gracias\n"
-"El equipo de Evolution\n"
-
-#: shell/main.c:138
-msgid "Cannot initialize the Evolution shell."
-msgstr "No puedo inicializar la shell de Evolution."
-
-#: shell/main.c:184
-msgid "Disable splash screen"
-msgstr "Desahilitar pantalla de entrada"
-
-#: shell/main.c:185
-msgid "Send the debugging output of all components to a file."
-msgstr "Enviar la salida de depurado de todos los componente a un archivo."
-
-#: shell/main.c:217
-msgid "Cannot initialize the Bonobo component system."
-msgstr "No puedo inicializar el sistema de componentes Bonobo."
-
-#: ui/evolution-addressbook.xml.h:2
-msgid "Create new contact"
-msgstr "Crear nuevo contacto"
-
-#: ui/evolution-addressbook.xml.h:4
-msgid "Delete a contact"
-msgstr "Borrar un contacto"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-msgid "Find"
-msgstr "Buscar"
-
-#: ui/evolution-addressbook.xml.h:6
-msgid "Find a contact"
-msgstr "Buscar un contacto"
-
-#: ui/evolution-addressbook.xml.h:7
-msgid "New contact"
-msgstr "Nuevo contacto"
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-mail.xml.h:63
-msgid "Previews the message to be printed"
-msgstr "Ver el mensaje que va a ser impreso"
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "Print contacts"
-msgstr "Imprimir contactos"
-
-#: ui/evolution-addressbook.xml.h:12
-msgid "Stop"
-msgstr "Parar"
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "Stop Loading"
-msgstr "Parar la carga"
-
-#: ui/evolution-addressbook.xml.h:14
-msgid "View All"
-msgstr "Ver todo"
-
-#: ui/evolution-addressbook.xml.h:15
-msgid "View all contacts"
-msgstr "Ver todos los contactos"
-
-#: ui/evolution-addressbook.xml.h:16
-msgid "_Addressbook Sources..."
-msgstr "Fuentes de la _Agenda..."
-
-#: ui/evolution-addressbook.xml.h:17
-msgid "_Contact"
-msgstr "_Contacto"
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-msgid "_Print..."
-msgstr "Im_primir..."
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr "Bu_scar contactos"
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-task-editor-dialog.xml.h:88
-#: ui/evolution.xml.h:64
-msgid "_Tools"
-msgstr "_Herramientas"
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr "5 Días"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-msgid "Alter preferences"
-msgstr "Alterar preferencias"
-
-#: ui/evolution-calendar.xml.h:4
-msgid "Create a new all day Event"
-msgstr "Crear un nuevo evento de todo el día"
-
-#: ui/evolution-calendar.xml.h:5
-msgid "Create a new appointment"
-msgstr "Crear una nueva cita"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr "Creando un nuevo calendario"
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr "Día"
-
-#: ui/evolution-calendar.xml.h:8
-msgid "Go To"
-msgstr "Ir a"
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr "Volver en el tiempo"
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go forward in time"
-msgstr "Avanzar en el tiempo"
-
-#: ui/evolution-calendar.xml.h:11
-msgid "Go to _Date"
-msgstr "Ir a una _fecha"
-
-#: ui/evolution-calendar.xml.h:12
-msgid "Go to _Today"
-msgstr "Ir a _hoy"
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr "Ir a una fecha específica"
-
-#: ui/evolution-calendar.xml.h:14
-msgid "Go to present time"
-msgstr "Ir al momento actual"
-
-#: ui/evolution-calendar.xml.h:15
-msgid "Month"
-msgstr "Mes"
-
-#: ui/evolution-calendar.xml.h:17
-msgid "New _Event"
-msgstr "Nuevo _Evento"
-
-#: ui/evolution-calendar.xml.h:20
-msgid "Open Calendar"
-msgstr "Abrir calendario"
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Prev"
-msgstr "Previo"
-
-#: ui/evolution-calendar.xml.h:22
-msgid "Previews the calendar to be printed"
-msgstr "Vista previa del calendario a imprimir"
-
-#: ui/evolution-calendar.xml.h:25
-msgid "Print calendar"
-msgstr "Imprimir calendario"
-
-#: ui/evolution-calendar.xml.h:26
-msgid "Print this Calendar"
-msgstr "Imprimir este calendario"
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:18
-msgid "Save As"
-msgstr "Guardar como"
-
-#: ui/evolution-calendar.xml.h:28
-msgid "Save calendar as something else"
-msgstr "Guardar el calendario como otra cosa"
-
-#: ui/evolution-calendar.xml.h:30
-msgid "Show 1 day"
-msgstr "Mostrar 1 día"
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr "Mostrar un mes"
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr "Mostrar 1 semana"
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr "Mostrar un semana laboral"
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:229
-#: widgets/misc/e-dateedit.c:424
-msgid "Today"
-msgstr "Hoy"
-
-#: ui/evolution-calendar.xml.h:35
-msgid "W_ork Week"
-msgstr "Semana lab_oral"
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr "Semana"
-
-#: ui/evolution-calendar.xml.h:37
-msgid "_Appointment"
-msgstr "Cit_a"
-
-#: ui/evolution-calendar.xml.h:38
-msgid "_Day"
-msgstr "_Día"
-
-#: ui/evolution-calendar.xml.h:39
-msgid "_Month"
-msgstr "_Mes"
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:58
-msgid "_New"
-msgstr "_Nuevo"
-
-#: ui/evolution-calendar.xml.h:41
-msgid "_Open Calendar"
-msgstr "_Abrir calendario"
-
-#: ui/evolution-calendar.xml.h:45
-msgid "_Week"
-msgstr "_Semana"
-
-#: ui/evolution-contact-editor.xml.h:2
-msgid "Delete this item"
-msgstr "Borrar este elemento"
-
-#: ui/evolution-contact-editor.xml.h:3
-msgid "Delete..."
-msgstr "Borrar..."
-
-#: ui/evolution-contact-editor.xml.h:4
-msgid "Help"
-msgstr "Ayuda"
-
-#: ui/evolution-contact-editor.xml.h:5
-msgid "Print En_velope..."
-msgstr "Imprimir ca_becera..."
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-msgid "Print this item"
-msgstr "Imprimir este elemento"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:41
-msgid "Print..."
-msgstr "Imprimir..."
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:19
-#: ui/evolution-task-editor-dialog.xml.h:51
-msgid "Save _As..."
-msgstr "Guardar _como..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-msgid "Save and Close"
-msgstr "Guardar y cerrar"
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr "Guardar el contacto y cerrar la ventana de diálogo"
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr "E_nviar el contacto a otro..."
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr "Ver la ayuda en línea"
-
-#
-#: ui/evolution-contact-editor.xml.h:13
-msgid "Send _message to contact..."
-msgstr "Enviar un _mensaje al contacto..."
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:46 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:49
-msgid "_File"
-msgstr "_Archivo"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:53
-#: ui/evolution-task-editor-dialog.xml.h:85
-msgid "_Save"
-msgstr "_Guardar"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr "Acerca de esta aplicación"
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr "Acerca de..."
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-msgid "Actio_ns"
-msgstr "Accio_nes"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-msgid "Address _Book... (FIXME)"
-msgstr "_Agenda de Direcciones...(FIXME)"
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-msgid "C_lear"
-msgstr "_Limpiar"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-msgid "C_ut"
-msgstr "C_ortar"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-msgid "Chec_k Names (FIXME)"
-msgstr "Chec_k Names (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-msgid "Clear"
-msgstr "Limpiar"
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-msgid "Clear the selection"
-msgstr "Quitar la seleccionada"
-
-#: ui/evolution-event-editor.xml.h:11
-msgid "Close this appointment"
-msgstr "Cerrar esta cita"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "Cop_y to Folder... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:8
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "Copiar"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-msgid "Copy the selection"
-msgstr "Copiar la selección"
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr "Cortar"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Cut the selection"
-msgstr "Cortar la selección"
-
-#: ui/evolution-event-editor.xml.h:18
-msgid "Delete this appointment"
-msgstr "Borrar esta cita"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr "Volcar XML"
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr "Volcar la descripción XML de la IU"
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr "Fi_rst Item in Folder (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-msgid "For_ward (FIXME)"
-msgstr "For_ward (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr "Forward as v_Calendar (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-msgid "Go to the next item"
-msgstr "Ir al siguiente elemento"
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-msgid "Go to the previous item"
-msgstr "Ir al elemento anterior"
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-msgid "In_complete Task (FIXME)"
-msgstr "In_complete Task (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-msgid "Modify the file's properties"
-msgstr "Propiedades las propiedades del archivo"
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-msgid "N_ext"
-msgstr "Sigui_ente"
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-msgid "Paste"
-msgstr "Pegar"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-msgid "Paste the clipboard"
-msgstr "Pegar el contenido del porta papeles"
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr "Pre_vio"
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-msgid "Print Pre_view"
-msgstr "Vista pre_via"
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-msgid "Print S_etup..."
-msgstr "Configurar impr_esión..."
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-msgid "Print Setup"
-msgstr "Configurar impresión"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:17
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:241
-msgid "Save"
-msgstr "Guardar"
-
-#: ui/evolution-event-editor.xml.h:43
-msgid "Save the appointment and close the dialog box"
-msgstr "Guardar la cita y cerrar la ventana de diálogo"
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:23
-#: ui/evolution-task-editor-dialog.xml.h:53
-msgid "Save the current file"
-msgstr "Guardar archivo actual"
-
-#: ui/evolution-event-editor.xml.h:46
-msgid "Schedule _Meeting"
-msgstr "Concertar un _encuentro"
-
-#: ui/evolution-event-editor.xml.h:47
-msgid "Schedule some sort of a meeting"
-msgstr "Programas algún tipo de encuentro"
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-task-editor-dialog.xml.h:57
-msgid "Select All"
-msgstr "Seleccionar todo"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-msgid "Select everything"
-msgstr "Seleccionar todo"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr "Configurar los datos de la página para la impresora actual"
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-msgid "Task _Request (FIXME)"
-msgstr "Task _Request (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-task-editor-dialog.xml.h:63
-msgid "_About..."
-msgstr "_Acerca de..."
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:43
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:43
-msgid "_Close"
-msgstr "_Cerrar"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:44
-msgid "_Contact (FIXME)"
-msgstr "_Contact (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-msgid "_Copy"
-msgstr "_Copiar"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:44
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr "_Depurar"
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:48
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:53
-msgid "_Help"
-msgstr "A_yuda"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-msgid "_Item (FIXME)"
-msgstr "_Item (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-msgid "_Journal Entry (FIXME)"
-msgstr "_Journal Entry (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-msgid "_Last Item in Folder (FIXME)"
-msgstr "_Last Item in Folder (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-msgid "_Mail Message (FIXME)"
-msgstr "_Mail Message (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-msgid "_Move to Folder... (FIXME)"
-msgstr "_Move to Folder... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-msgid "_Note (FIXME)"
-msgstr "_Note (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-msgid "_Paste"
-msgstr "_Pegar"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:115
-#: ui/evolution-task-editor-dialog.xml.h:83 ui/evolution.xml.h:60
-msgid "_Properties..."
-msgstr "_Propiedades..."
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-msgid "_Select All"
-msgstr "_Seleccionar todo"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:63
-msgid "_Task (FIXME)"
-msgstr "_Task (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-msgid "_Unread Item (FIXME)"
-msgstr "_Unread Item (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:76 ui/evolution-message-composer.xml.h:55
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:65
-msgid "_View"
-msgstr "_Vista"
-
-#: ui/evolution-executive-summary.xml.h:1
-msgid "Add Service"
-msgstr "Añadir Servicio"
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr "Añadir un nuevo servicio al Resumen de Trabajo"
-
-#: ui/evolution-executive-summary.xml.h:3
-msgid "Create a new email"
-msgstr "Crear un nuevo mensaje electrónico"
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr "Configuración del Resumen de Trabajo..."
-
-#: ui/evolution-executive-summary.xml.h:5
-msgid "New Mail"
-msgstr "Nuevo"
-
-#: ui/evolution-mail.xml.h:1
-msgid "Apply filter rules to the selected messages"
-msgstr "Aplicar filtros a los mensajes seleccionados"
-
-#: ui/evolution-mail.xml.h:2
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: ui/evolution-mail.xml.h:3
-msgid "Cancel the current mail operation"
-msgstr "Cancelar la operación de correo actual"
-
-#: ui/evolution-mail.xml.h:4
-msgid "Change the properties of this folder"
-msgstr "Cambiar las propiedades de esta carpeta"
-
-#: ui/evolution-mail.xml.h:5
-msgid "Compose"
-msgstr "Nuevo"
-
-#: ui/evolution-mail.xml.h:6
-msgid "Compose a reply to all of the recipients of the selected message"
-msgstr "Responder a todos los destinatarios del mensaje seleccionado"
-
-#: ui/evolution-mail.xml.h:7
-msgid "Compose a reply to the sender of the selected message"
-msgstr "Responder al remitente del mensaje seleccionado"
-
-#: ui/evolution-mail.xml.h:9
-msgid "Copy selected messages to another folder"
-msgstr "Copiar mensajes seleccionados a otra carpeta"
-
-#: ui/evolution-mail.xml.h:10
-msgid "Create _Virtual Folder From Message"
-msgstr "Crear una Carpeta _Virtual según el mensaje"
-
-#: ui/evolution-mail.xml.h:11
-msgid "Create a rule to filter messages from this sender"
-msgstr "Crear una regla para filtrar los mensajes de este remitente"
-
-#: ui/evolution-mail.xml.h:12
-msgid "Create a rule to filter messages to these recipients"
-msgstr "Crear una regla para filtrar los mensajes de estos destinatarios"
-
-#: ui/evolution-mail.xml.h:13
-msgid "Create a rule to filter messages to this mailing list"
-msgstr "Crear una regla para filtrar los mensajes de esta lista de correo"
-
-#: ui/evolution-mail.xml.h:14
-msgid "Create a rule to filter messages with this subject"
-msgstr "Crear una regla para filtrar los mensajes con este asunto"
-
-#: ui/evolution-mail.xml.h:15
-msgid "Create a virtual folder for these recipients"
-msgstr "Crear una carpeta virtual para estos destinatarios"
-
-#: ui/evolution-mail.xml.h:16
-msgid "Create a virtual folder for this mailing list"
-msgstr "Crear una carpeta virtual para esta lista de correo"
-
-#: ui/evolution-mail.xml.h:17
-msgid "Create a virtual folder for this sender"
-msgstr "Crear una carpeta virtual para este remitente"
-
-#: ui/evolution-mail.xml.h:18
-msgid "Create a virtual folder for this subject"
-msgstr "Crear una carpeta virtual para este asunto"
-
-#: ui/evolution-mail.xml.h:19
-msgid "Create or edit mail accounts and other preferences"
-msgstr "Crear o editar cuentas de correo y otras preferencias"
-
-#: ui/evolution-mail.xml.h:20
-msgid "Create or edit rules for filtering new mail"
-msgstr "Crear o editar reglas para el filtrado de mensajes"
-
-#: ui/evolution-mail.xml.h:21
-msgid "Create or edit virtual folder definitions"
-msgstr "Crear o editar definiciones de carpetas virtuales"
-
-#: ui/evolution-mail.xml.h:23
-msgid "Display the next message"
-msgstr "Mostrar el mensaje siguiente"
-
-#: ui/evolution-mail.xml.h:24
-msgid "Display the previous message"
-msgstr "Mostrar el mensaje anterior"
-
-#: ui/evolution-mail.xml.h:25
-msgid "Empty _Trash"
-msgstr "Vaciar _Papelera"
-
-#: ui/evolution-mail.xml.h:26
-msgid "Filter on Mailing _List"
-msgstr "Filtrar según la _lista de correo"
-
-#: ui/evolution-mail.xml.h:27
-msgid "Filter on Se_nder"
-msgstr "Filtrar según el remite_nte"
-
-#: ui/evolution-mail.xml.h:28
-msgid "Filter on _Recipients"
-msgstr "Filtrar según los destinata_rios"
-
-#: ui/evolution-mail.xml.h:29
-msgid "Filter on _Subject"
-msgstr "Filtrar según el a_sunto"
-
-#: ui/evolution-mail.xml.h:30
-msgid "Force images in HTML mail to be loaded"
-msgstr "Forzar que las imágenes en los correos en HTML sean cargadas"
-
-#: ui/evolution-mail.xml.h:31
-msgid "Forget _Passwords"
-msgstr "Olvidar _contraseña"
-
-#: ui/evolution-mail.xml.h:32
-msgid "Forget remembered passwords so you will be prompted for them again"
-msgstr "Olvidar las contraseñas recordadas con lo que será preguntado de nuevo"
-
-#: ui/evolution-mail.xml.h:34
-msgid "Forward As"
-msgstr "Reenviar como"
-
-#: ui/evolution-mail.xml.h:35
-msgid "Forward _Attached"
-msgstr "Reenviar _Adjunto"
-
-#: ui/evolution-mail.xml.h:36
-msgid "Forward _Inline"
-msgstr "Reenviar _dentro del mensaje"
-
-#: ui/evolution-mail.xml.h:37
-msgid "Forward _Quoted"
-msgstr "Reenviar _Citado"
-
-#: ui/evolution-mail.xml.h:38
-msgid "Forward the selected message in the body of a new message"
-msgstr "Reenviar el mensaje seleccionado en el cuerpo de un nuevo mensaje"
-
-#: ui/evolution-mail.xml.h:39
-msgid "Forward the selected message quoted like a reply"
-msgstr "Reenviar el mensaje seleccionado citado como una respuesta"
-
-#: ui/evolution-mail.xml.h:40
-msgid "Forward the selected message to someone"
-msgstr "Reenviar el mensaje seleccionado a alguien"
-
-#: ui/evolution-mail.xml.h:41
-msgid "Forward the selected message to someone as an attachment"
-msgstr "Reenviar el mensaje seleccionado como un adjunto a alguien"
-
-#: ui/evolution-mail.xml.h:42
-msgid "Hide S_elected Messages"
-msgstr "Ocultar los mensajes _seleccionados"
-
-#: ui/evolution-mail.xml.h:43
-msgid "Hide _Deleted Messages"
-msgstr "Ocultar mensajes _borrados"
-
-#: ui/evolution-mail.xml.h:44
-msgid "Hide _Read messages"
-msgstr "Ocultar mensajes _leídos"
-
-#: ui/evolution-mail.xml.h:45
-msgid ""
-"Hide deleted messages rather than displaying them with a line through them"
-msgstr ""
-"Oculta los mensajes borrados en lugar de mostrarlos tachados por una línea"
-
-#: ui/evolution-mail.xml.h:46
-msgid "Load _Images"
-msgstr "Cargar _Imágenes"
-
-#: ui/evolution-mail.xml.h:47
-msgid "Manage _Subscriptions..."
-msgstr "Administrar _suscripciones..."
-
-#: ui/evolution-mail.xml.h:48
-msgid "Mar_k As Read"
-msgstr "Mar_car como Leído"
-
-#: ui/evolution-mail.xml.h:49
-msgid "Mark All as R_ead"
-msgstr "Marcar todos como l_eídos"
-
-#: ui/evolution-mail.xml.h:50
-msgid "Mark As U_nread"
-msgstr "Marcar como _no leído"
-
-#: ui/evolution-mail.xml.h:51
-msgid "Mark all visible messages as read"
-msgstr "Marcar los mensajes visibles como leídos"
-
-#: ui/evolution-mail.xml.h:52
-msgid "Mark the selected messages as having been read"
-msgstr "Marcar los mensajes seleccionados como leidos"
-
-#: ui/evolution-mail.xml.h:53
-msgid "Mark the selected messages as not having been read"
-msgstr "Marcar los mensajes seleccionados como no leidos"
-
-#: ui/evolution-mail.xml.h:54
-msgid "Mark the selected messages for deletion"
-msgstr "Marcar los mensajes seleccionados para borrar"
-
-#: ui/evolution-mail.xml.h:55
-msgid "Move"
-msgstr "Mover"
-
-#: ui/evolution-mail.xml.h:56
-msgid "Move selected messages to another folder"
-msgstr "Mover mensajes seleccionados a otra carpeta"
-
-#: ui/evolution-mail.xml.h:58
-msgid "Open a window for composing a mail message"
-msgstr "Abrir una ventana para escribir un mensaje de correo"
-
-#: ui/evolution-mail.xml.h:59
-msgid "Open the selected message in a new window"
-msgstr "Abrir el mensaje seleccionado en una nueva ventana"
-
-#: ui/evolution-mail.xml.h:60
-msgid "Open the selected message in the composer to re-send it"
-msgstr "Abrir el mensaje seleccionado para reenviarlo"
-
-#: ui/evolution-mail.xml.h:61
-msgid "Permanently remove all deleted messages from all folders"
-msgstr ""
-"Eliminar permanentemente todos los mansajes borrados de todas las carpetas"
-
-#: ui/evolution-mail.xml.h:62
-msgid "Permanently remove all deleted messages from this folder"
-msgstr "Eliminar permanentemente todos los mansajes borrados de esta carpeta"
-
-#: ui/evolution-mail.xml.h:66
-msgid "Print Message..."
-msgstr "Imprimir Mensaje..."
-
-#: ui/evolution-mail.xml.h:67
-msgid "Print Preview..."
-msgstr "Vista previa..."
-
-#: ui/evolution-mail.xml.h:68
-msgid "Print message to the printer"
-msgstr "Imprimir el mensaje en la impresora"
-
-#: ui/evolution-mail.xml.h:69
-msgid "Redirect (FIXME: implement me)"
-msgstr "Redirigir (ARREGLAME: implementame)"
-
-#: ui/evolution-mail.xml.h:73
-msgid "S_earch Message"
-msgstr "Buscar M_ensaje"
-
-#: ui/evolution-mail.xml.h:74
-msgid "Save the message as a text file"
-msgstr "Guardar el mensaje en un archivo de texto"
-
-#: ui/evolution-mail.xml.h:75
-msgid "Search for text in the body of the displayed message"
-msgstr "Buscar un texto en el cuerpo del mensaje mostrado"
-
-#: ui/evolution-mail.xml.h:76 ui/evolution-subscribe.xml.h:7
-msgid "Select _All"
-msgstr "Seleccionar _todo"
-
-#: ui/evolution-mail.xml.h:77
-msgid "Select _Thread"
-msgstr "Seleccionar _Hilo"
-
-#: ui/evolution-mail.xml.h:78
-msgid "Select all and only the messages that are not currently selected"
-msgstr "Selecciona todos los mensajes que no están seleccionados actualmente"
-
-#: ui/evolution-mail.xml.h:79
-msgid "Select all messages in the same thread as the selected message"
-msgstr ""
-"Selecciona todos los mensajes en el mismo hilo que el mensaje seleccionado"
-
-#: ui/evolution-mail.xml.h:80
-msgid "Select all visible messages"
-msgstr "Seleccionar todos los mensajes visibles"
-
-#: ui/evolution-mail.xml.h:81
-msgid "Send / Receive"
-msgstr "Enviar / Recibir"
-
-#: ui/evolution-mail.xml.h:82
-msgid "Send queued mail and retrieve new mail"
-msgstr "Enviar el correo en la cola y obtener el nuevo"
-
-#: ui/evolution-mail.xml.h:83
-msgid "Show Email _Source"
-msgstr "Mostrar la Fuente del Men_saje"
-
-#: ui/evolution-mail.xml.h:84
-msgid "Show Full _Headers"
-msgstr "Mostrar cabeceras completas"
-
-#: ui/evolution-mail.xml.h:85
-msgid "Show _All"
-msgstr "Mostrar _todo"
-
-#: ui/evolution-mail.xml.h:86
-msgid "Show message in the normal style"
-msgstr "Mostrar mensajes en el estilo normal"
-
-#: ui/evolution-mail.xml.h:87
-msgid "Show message with all email headers"
-msgstr "Mostrar mensajes con todas las cabeceras"
-
-#: ui/evolution-mail.xml.h:88
-msgid "Show messages that have been temporarily hidden"
-msgstr "Mostrar mensajes que han estado ocultos temporalmente"
-
-#: ui/evolution-mail.xml.h:89
-msgid "Show the raw email source of the message"
-msgstr "Mostrar la fuentes sin formatear del mensaje"
-
-#: ui/evolution-mail.xml.h:90
-msgid "Subscribe or unsubscribe to folders on remote servers"
-msgstr "Suscribirse o desuscribirse de carpetas de los servidores remotos"
-
-#: ui/evolution-mail.xml.h:91
-msgid "Temporarily hide all messages that have already been read"
-msgstr "Oculta temporalmente todos los mensajes que han sido leiods"
-
-#: ui/evolution-mail.xml.h:92
-msgid "Temporarily hide the selected messages"
-msgstr "Oculta temporalmente los mensajes seleccionados"
-
-#: ui/evolution-mail.xml.h:93
-msgid "Threaded Message list"
-msgstr "Lista de Mensajes Encadenados"
-
-#: ui/evolution-mail.xml.h:94
-msgid "Un-delete the selected messages"
-msgstr "Recuperar los mensajes seleccionados"
-
-#: ui/evolution-mail.xml.h:95
-msgid "VFolder on Mailing _List..."
-msgstr "Carpeta virtual según la _Lista de Correo..."
-
-#: ui/evolution-mail.xml.h:96
-msgid "VFolder on Se_nder..."
-msgstr "VFolder según el Remite_nte..."
-
-#: ui/evolution-mail.xml.h:97
-msgid "VFolder on _Recipients..."
-msgstr "VFolder según los Destinata_rios..."
-
-#: ui/evolution-mail.xml.h:98
-msgid "VFolder on _Subject..."
-msgstr "VFolder según el A_sunto..."
-
-#: ui/evolution-mail.xml.h:99
-msgid "Virtual Folder _Editor..."
-msgstr "_Editor de carpetas virtuales..."
-
-#: ui/evolution-mail.xml.h:100
-msgid "_Apply Filters"
-msgstr "_Aplicar filtro"
-
-#: ui/evolution-mail.xml.h:101
-msgid "_Copy to Folder"
-msgstr "_Copiar a la Carpeta"
-
-#: ui/evolution-mail.xml.h:102
-msgid "_Create Filter From Message"
-msgstr "_Crear filtro del mensaje"
-
-#: ui/evolution-mail.xml.h:104
-msgid "_Expunge"
-msgstr "_Comprimir"
-
-#: ui/evolution-mail.xml.h:105
-msgid "_Filters..."
-msgstr "_Filtros..."
-
-#: ui/evolution-mail.xml.h:106 ui/evolution.xml.h:50
-msgid "_Folder"
-msgstr "_Carpeta"
-
-#: ui/evolution-mail.xml.h:107
-msgid "_Forward Message"
-msgstr "_Reenviar Mensaje"
-
-#: ui/evolution-mail.xml.h:108 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr "_Invertir selección"
-
-#: ui/evolution-mail.xml.h:109
-msgid "_Mail Message"
-msgstr "_Mensaje de correo"
-
-#: ui/evolution-mail.xml.h:110
-msgid "_Mail Settings..."
-msgstr "_Configuración del correo..."
-
-#: ui/evolution-mail.xml.h:111
-msgid "_Message Display"
-msgstr "_Mostrar Mensaje"
-
-#: ui/evolution-mail.xml.h:112
-msgid "_Move to Folder"
-msgstr "_Mover a la Carpeta"
-
-#: ui/evolution-mail.xml.h:113
-msgid "_Normal Display"
-msgstr "Vista _Normal"
-
-#: ui/evolution-mail.xml.h:114
-msgid "_Open Message"
-msgstr "_Abrir Mensaje"
-
-#: ui/evolution-mail.xml.h:116
-msgid "_Re-send Message"
-msgstr "_Reenviar Mensaje"
-
-#: ui/evolution-mail.xml.h:119
-msgid "_Send / Receive"
-msgstr "_Enviar / Recibir"
-
-#: ui/evolution-mail.xml.h:120
-msgid "_Threaded Message List"
-msgstr "_Lista de Mensajes Encadenados"
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr "Adjuntar"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-msgid "Close the current file"
-msgstr "Cerrar el archivo actual"
-
-#: ui/evolution-message-composer.xml.h:5
-msgid "Encrypt this message with PGP"
-msgstr "Encriptar este mensaje con PGP"
-
-#: ui/evolution-message-composer.xml.h:6
-msgid "Encrypt this message with your S/MIME Encryption Cetificate"
-msgstr "Encripta este mensaje con su Certificado de Encriptación S/MIME"
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "F_ormat"
-msgstr "F_ormatear"
-
-#: ui/evolution-message-composer.xml.h:8
-msgid "HTML"
-msgstr "HTML"
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert a file as text into the message"
-msgstr "Insertar un archivo como texto en el mensaje"
-
-#: ui/evolution-message-composer.xml.h:10
-msgid "Insert text file..."
-msgstr "Insertar un archivo de texto..."
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "Open a file"
-msgstr "Abrir un archivo"
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Encrypt"
-msgstr "Encriptar con PGP"
-
-#: ui/evolution-message-composer.xml.h:14
-msgid "PGP Sign"
-msgstr "Firmar con PGP"
-
-#: ui/evolution-message-composer.xml.h:15
-msgid "S/MIME Encrypt"
-msgstr "Encriptar con S/MIME"
-
-#: ui/evolution-message-composer.xml.h:16
-msgid "S/MIME Sign"
-msgstr "Firmar con S/MIME"
-
-#: ui/evolution-message-composer.xml.h:20
-msgid "Save _Draft"
-msgstr "Guardar _Borrador"
-
-#: ui/evolution-message-composer.xml.h:21
-msgid "Save in _folder... (FIXME)"
-msgstr "Save in _folder... (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:22
-msgid "Save in folder..."
-msgstr "Guardar en carpeta..."
-
-#: ui/evolution-message-composer.xml.h:24
-msgid "Save the current file with a different name"
-msgstr "Guardar el archivo actual con un nombre diferente"
-
-#: ui/evolution-message-composer.xml.h:25
-msgid "Save the message in a specified folder"
-msgstr "Guardara el mensaje a una carpeta específica"
-
-#: ui/evolution-message-composer.xml.h:26
-msgid "Send"
-msgstr "Enviar"
-
-#: ui/evolution-message-composer.xml.h:27
-msgid "Send _Later"
-msgstr "Enviar _mas tarde"
-
-#: ui/evolution-message-composer.xml.h:28
-msgid "Send _later"
-msgstr "Enviar _mas tarde"
-
-#: ui/evolution-message-composer.xml.h:29
-msgid "Send the mail in HTML format"
-msgstr "Enviar el mensaje en formato HTML"
-
-#: ui/evolution-message-composer.xml.h:30
-msgid "Send the message later"
-msgstr "Enviar el mensaje más tarde"
-
-#: ui/evolution-message-composer.xml.h:31
-msgid "Send this message now"
-msgstr "Enviar este mensaje ahora"
-
-#: ui/evolution-message-composer.xml.h:32
-msgid "Show / hide attachments"
-msgstr "Mostrar / ocultar adjuntos"
-
-#: ui/evolution-message-composer.xml.h:33
-msgid "Show _attachments"
-msgstr "Mostrar _adjuntos"
-
-#: ui/evolution-message-composer.xml.h:34
-msgid "Show attachments"
-msgstr "Mostrar adjuntos"
-
-#: ui/evolution-message-composer.xml.h:35
-msgid "Sign this message with your PGP key"
-msgstr "Firmar este mensaje con tu clave PGP"
-
-#: ui/evolution-message-composer.xml.h:36
-msgid "Sign this message with your S/MIME Signature Certificate"
-msgstr "Firmar este mensaje con su certificado de firma S/MIME"
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the BCC field is displayed"
-msgstr "Activa si se muestra el campo CCO"
-
-#: ui/evolution-message-composer.xml.h:38
-msgid "Toggles whether the CC field is displayed"
-msgstr "Activa si se muestra el campo CC"
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "Toggles whether the From chooser is displayed"
-msgstr "Activa si se muestra el selector 'De'"
-
-#: ui/evolution-message-composer.xml.h:40
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr "Activa si se muestra el campo Responder-A"
-
-#: ui/evolution-message-composer.xml.h:41
-msgid "_Bcc Field"
-msgstr "Campo Cc_o"
-
-#: ui/evolution-message-composer.xml.h:42
-msgid "_Cc Field"
-msgstr "Campo _Cc"
-
-#: ui/evolution-message-composer.xml.h:47
-msgid "_From Field"
-msgstr "Campo _De"
-
-#: ui/evolution-message-composer.xml.h:49
-msgid "_Insert"
-msgstr "_Insertar"
-
-#: ui/evolution-message-composer.xml.h:50
-msgid "_Insert text file... (FIXME)"
-msgstr "_Insert text file... (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:51
-msgid "_Open..."
-msgstr "_Abrir..."
-
-#: ui/evolution-message-composer.xml.h:52
-msgid "_Reply-To Field"
-msgstr "Campo _Responder-A"
-
-#: ui/evolution-message-composer.xml.h:54
-msgid "_Security"
-msgstr "_Seguridad"
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr "Añadir carpeta a tu lista de carpeta suscritas"
-
-#: ui/evolution-subscribe.xml.h:3
-msgid "F_older"
-msgstr "_Carpetas"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr "Regenerar la lista"
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr "Regenerar la lista de carpetas"
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr "Quitar carpetas de tu lista de carpetas suscritas"
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr "Suscribir"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr "Dessuscribir"
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-msgid "Assig_n Task (FIXME)"
-msgstr "Assig_n Task (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr "Buscar de nuevo"
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-msgid "Meeting Re_quest (FIXME)"
-msgstr "Meeting Re_quest (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-msgid "Redo"
-msgstr "Rehacer"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-msgid "Redo the undone action"
-msgstr "Rehacer la acción deshecha"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-msgid "Replace"
-msgstr "Remplazar"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-msgid "Replace a string"
-msgstr "Remplazar una cadena"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-msgid "Reply to A_ll (FIXME)"
-msgstr "Reply to A_ll (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-msgid "S_end Status Report (FIXME)"
-msgstr "S_end Status Report (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr "S_kip Occurrence (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-msgid "Save the task and close the dialog box"
-msgstr "Guardar la tarea y cerrar la ventana de diálogo"
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "Search again for the same string"
-msgstr "Buscar de nuevo la misma cadena"
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-msgid "Search for a string"
-msgstr "Buscar una cadena"
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr "Deshacer"
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-msgid "Undo the last action"
-msgstr "Deshacer la última acción"
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:42
-msgid "_Appointment (FIXME)"
-msgstr "_Appointment (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-msgid "_Mark Complete (FIXME)"
-msgstr "_Mark Complete (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-msgid "_Reply (FIXME)"
-msgstr "_Reply (FIXME)"
-
-#: ui/evolution-tasks.xml.h:2
-msgid "Create a new task"
-msgstr "Crear una nueva tarea"
-
-#: ui/evolution-tasks.xml.h:3
-msgid "New Task"
-msgstr "Nueva tarea"
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr "Guardar la tarea como otra cosa"
-
-#: ui/evolution-tasks.xml.h:6
-msgid "Tasks Preferences..."
-msgstr "Preferencias de las tareas..."
-
-#: ui/evolution-tasks.xml.h:9
-msgid "_Task"
-msgstr "_Tarea"
-
-#: ui/evolution.xml.h:1
-msgid "About Evolution..."
-msgstr "Acerca de Evolution..."
-
-#: ui/evolution.xml.h:2
-msgid "Add to _Shortcut Bar"
-msgstr "Añadir a la barra de atajo_s"
-
-#: ui/evolution.xml.h:3
-msgid "Change the name of this folder"
-msgstr "Cambiar el nombre de esta carpeta"
-
-#: ui/evolution.xml.h:4
-msgid "Change the properties for this folder"
-msgstr "Cambiar las propiedades de esta carpeta"
-
-#: ui/evolution.xml.h:6
-msgid "Close this window"
-msgstr "Cerrar esta ventana"
-
-#: ui/evolution.xml.h:7
-msgid "Copy this folder"
-msgstr "Copiar esta carpeta"
-
-#: ui/evolution.xml.h:8
-msgid "Create _New Folder..."
-msgstr "Creando una _Nueva Carpeta..."
-
-#: ui/evolution.xml.h:9
-msgid "Create a link to this folder in the shortcut bar"
-msgstr "Crear un enlace a esta carpeta en la lista de atajos"
-
-#: ui/evolution.xml.h:10
-msgid "Create a new folder"
-msgstr "Creando una nueva carpeta"
-
-#: ui/evolution.xml.h:11
-msgid "Customi_ze Toolbars..."
-msgstr "Personali_zar barras de herramientas..."
-
-#: ui/evolution.xml.h:12
-msgid "Customize"
-msgstr "Personalizar"
-
-#: ui/evolution.xml.h:13
-msgid "Customize toolbars"
-msgstr "Personalizar barras de herramientas"
-
-#: ui/evolution.xml.h:14
-msgid "Display a different folder"
-msgstr "Mostrar una carpeta distinta"
-
-#: ui/evolution.xml.h:15
-msgid "E_xit"
-msgstr "_Salir"
-
-#: ui/evolution.xml.h:16
-msgid "Evolution _FAQ"
-msgstr "_FAQ de Evolution"
-
-#: ui/evolution.xml.h:17
-msgid "Evolution _Window"
-msgstr "_Ventana de Evolution"
-
-#: ui/evolution.xml.h:18
-msgid "Evolution bar _shortcut"
-msgstr "Barra de _atajos de Evolution"
-
-#: ui/evolution.xml.h:19
-msgid "Exit the program"
-msgstr "Salir del programa"
-
-#: ui/evolution.xml.h:20
-msgid "Getting _Started"
-msgstr "Comenzando"
-
-#: ui/evolution.xml.h:21
-msgid "Import an external file format"
-msgstr "Importar un formato de archivo externo"
-
-#: ui/evolution.xml.h:22
-msgid "Main toolbar"
-msgstr "Barra de herramientas principal"
-
-#: ui/evolution.xml.h:23
-msgid "Move this folder to another place"
-msgstr "Mueve esta carpeta a otro sitio"
-
-#: ui/evolution.xml.h:24
-msgid "Open in New Window"
-msgstr "Abrir en una nueva ventana"
-
-#: ui/evolution.xml.h:25
-msgid "Open in New _Window"
-msgstr "Abrir en una Nueva _Ventana"
-
-#: ui/evolution.xml.h:26
-msgid "Open this folder in an other window"
-msgstr "Abre esta carpeta en una nueva ventana"
-
-#: ui/evolution.xml.h:27
-msgid "Show information about Evolution"
-msgstr "Mostrar información acerca de Evolution"
-
-#: ui/evolution.xml.h:28
-msgid "Submit Bug Report"
-msgstr "Enviar reporte de fallo"
-
-#: ui/evolution.xml.h:29
-msgid "Submit _Bug Report"
-msgstr "Enviar reporte de _fallo"
-
-#: ui/evolution.xml.h:30
-msgid "Submit bug report using Bug Buddy."
-msgstr "Enviar un reporte de fallo usando Bug Buddy."
-
-#: ui/evolution.xml.h:31
-msgid "Toggle"
-msgstr "Activar"
-
-#: ui/evolution.xml.h:32
-msgid "Toggle whether to show the folder bar"
-msgstr "Activar si se muestra la barra de carpetas"
-
-#: ui/evolution.xml.h:33
-msgid "Toggle whether to show the shortcut bar"
-msgstr "Activar si se muestra la barra de atajos"
-
-#: ui/evolution.xml.h:34
-msgid "Toggle whether we are working offline."
-msgstr "Activar si se estamos trabajando desconectados o no."
-
-#: ui/evolution.xml.h:35
-msgid "Using the C_ontact Manager"
-msgstr "Usando el administrador de c_ontactos"
-
-#: ui/evolution.xml.h:36
-msgid "Using the _Calendar"
-msgstr "Usando el _calendario"
-
-#: ui/evolution.xml.h:37
-msgid "Using the _Mailer"
-msgstr "Usando el _correo"
-
-#: ui/evolution.xml.h:38
-msgid "View the selected folder"
-msgstr "Ver la carpeta seleccionada"
-
-#: ui/evolution.xml.h:39
-msgid "Work Offline"
-msgstr "Trabajar desconectado"
-
-#: ui/evolution.xml.h:40
-msgid "_About Evolution..."
-msgstr "_Acerca de Evolution..."
-
-#: ui/evolution.xml.h:41
-msgid "_Actions"
-msgstr "_Acciones"
-
-#: ui/evolution.xml.h:45
-msgid "_Copy..."
-msgstr "_Copiar..."
-
-#: ui/evolution.xml.h:47
-msgid "_Delete this folder"
-msgstr "_Borrar esta carpeta"
-
-#: ui/evolution.xml.h:51
-msgid "_Folder Bar"
-msgstr "Barra de _carpetas"
-
-#: ui/evolution.xml.h:52
-msgid "_Go to Folder..."
-msgstr "_Ir a la carpeta..."
-
-#: ui/evolution.xml.h:54
-msgid "_Import file..."
-msgstr "_Importar archivo..."
-
-#: ui/evolution.xml.h:55
-msgid "_Index"
-msgstr "_Índice"
-
-#: ui/evolution.xml.h:56
-msgid "_Mail message"
-msgstr "_Enviar mensaje"
-
-#: ui/evolution.xml.h:57
-msgid "_Move..."
-msgstr "_Mover..."
-
-#: ui/evolution.xml.h:59
-msgid "_New Folder"
-msgstr "_Nueva carpeta"
-
-#: ui/evolution.xml.h:61
-msgid "_Rename..."
-msgstr "_Renombrar..."
-
-#: ui/evolution.xml.h:62
-msgid "_Shortcut Bar"
-msgstr "Barra de atajo_s"
-
-#: ui/evolution.xml.h:66
-msgid "_Work Offline"
-msgstr "_Trabajar Desconectado"
-
-#: views/addressbook/galview.xml.h:1
-msgid "Adress Cards"
-msgstr "Tarjeta de visita"
-
-#: views/addressbook/galview.xml.h:2
-msgid "By Company"
-msgstr "Por Compañía"
-
-#: views/addressbook/galview.xml.h:3
-msgid "Phone List"
-msgstr "Lista de teléfonos"
-
-#: views/mail/galview.xml.h:1
-msgid "By Sender"
-msgstr "Por remitente"
-
-#: views/mail/galview.xml.h:2
-msgid "By Status"
-msgstr "Por estado"
-
-#: views/mail/galview.xml.h:3
-msgid "By Subject"
-msgstr "Por asunto"
-
-#: views/mail/galview.xml.h:4
-msgid "Messages"
-msgstr "Mensajes"
-
-#: views/tasks/galview.xml.h:2
-msgid "With Category"
-msgstr "Con categoría"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:392
-msgid "Tentative"
-msgstr "Tentativa"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:393
-msgid "Busy"
-msgstr "Ocupado"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:394
-msgid "Out of Office"
-msgstr "Fuera de la oficina"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:395
-msgid "No Information"
-msgstr "Sin información"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:411
-msgid "_Invite Others..."
-msgstr "_Invitar a otros..."
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:431
-msgid "_Options"
-msgstr "_Opciónes"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:448
-msgid "Show _Only Working Hours"
-msgstr "Mostrar _solo las horas de trabajo"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:461
-msgid "Show _Zoomed Out"
-msgstr "Mostrar quitando _Zoom"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:479
-msgid "_Update Free/Busy"
-msgstr "_Actualizar Libre/Ocupado"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:497
-msgid "_<<"
-msgstr "_<<"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:514
-msgid "_Autopick"
-msgstr "_Auto seleccionar"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:528
-msgid ">_>"
-msgstr ">_>"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:545
-msgid "_All People and Resources"
-msgstr "_Todas las personas y los recursos"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:558
-msgid "All _People and One Resource"
-msgstr "Todas las _personas y un recurso"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:571
-msgid "_Required People"
-msgstr "Personas _requeridas"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:584
-msgid "Required People and _One Resource"
-msgstr "Personas requeridas y _un recurso"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:607
-msgid "Meeting _start time:"
-msgstr "Hora de _inicio de la reunión:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:631
-msgid "Meeting _end time:"
-msgstr "Hora de _fin de la reunión:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:744
-msgid "All Attendees"
-msgstr "Todos los participantes"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:469
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2477
-msgid "%A, %B %d, %Y"
-msgstr "%A, %d de %B de %Y"
-
-#: widgets/menus/gal-view-menus.c:176
-msgid "_Current View"
-msgstr "_Vista actual"
-
-#: widgets/menus/gal-view-menus.c:202
-msgid "Define Views"
-msgstr "Definir Vistas"
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:422
-msgid "MTWTFSS"
-msgstr "LMMJVSD"
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1061 widgets/misc/e-calendar-item.c:2756
-msgid "%B %Y"
-msgstr "%B %Y"
-
-#: widgets/misc/e-cell-date-edit.c:221 widgets/misc/e-dateedit.c:418
-msgid "Now"
-msgstr "Ahora"
-
-#: widgets/misc/e-cell-date-edit.c:245
-msgid "OK"
-msgstr "OK"
-
-#: widgets/misc/e-cell-date-edit.c:726
-#, c-format
-msgid "The time must be in the format: %s"
-msgstr "La fecha debe estar en el formato: %s"
-
-#: widgets/misc/e-clipped-label.c:112
-msgid "..."
-msgstr "..."
-
-#: widgets/misc/e-filter-bar.c:168
-msgid "Save Search"
-msgstr "Guardar búsqueda"
-
-#: widgets/misc/e-filter-bar.c:239
-msgid "Advanced Search"
-msgstr "Búqueda avanzada"
-
-#: widgets/misc/e-filter-bar.h:94 widgets/misc/e-filter-bar.h:101
-msgid "Save As..."
-msgstr "Guardar como..."
-
-#: widgets/misc/e-filter-bar.h:95 widgets/misc/e-filter-bar.h:102
-msgid "Show All"
-msgstr "Mostrar todo"
-
-#: widgets/misc/e-filter-bar.h:96 widgets/misc/e-filter-bar.h:103
-msgid "Edit..."
-msgstr "Editar..."
-
-#: widgets/misc/e-filter-bar.h:97 widgets/misc/e-filter-bar.h:104
-msgid "Advanced..."
-msgstr "Avanzado..."
-
-#: widgets/misc/e-messagebox.c:152
-msgid "Information"
-msgstr "Información"
-
-#: widgets/misc/e-messagebox.c:159
-msgid "Warning"
-msgstr "Aviso"
-
-#: widgets/misc/e-messagebox.c:173
-msgid "Question"
-msgstr "Pregunta"
-
-#: widgets/misc/e-messagebox.c:180
-msgid "Message"
-msgstr "Mensaje"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:224
-msgid "Don't show this message again."
-msgstr "No mostrar otra vez este mensaje."
-
-#: widgets/misc/e-search-bar.c:155
-msgid "Sear_ch"
-msgstr "Bus_car"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-msgid "The Personal Addressbook Server"
-msgstr "El Servidor de Agendas Personales"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr "El Servidor de Calendarios Personales. Factoría de calendarios"
-
-#: wombat/wombat.c:173
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr "setup_vfs(): no pude inicializar GNOME-VFS"
-
-#: wombat/wombat.c:185
-msgid "init_corba(): could not initialize GNOME"
-msgstr "init_corba(): no pude inicializar GNOME"
-
-#: wombat/wombat.c:198
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "init_bonob(): no pude inicializar Bonobo"
-
-#~ msgid "Mark Complete"
-#~ msgstr "Marcar como completa"
-
-#~ msgid "Edit the task"
-#~ msgstr "Editar la tarea"
-
-#~ msgid "Remove the selected folder"
-#~ msgstr "Borrar la carpeta seleccionada"
-
-#~ msgid "_Remove"
-#~ msgstr "_Quitar"
-
-#~ msgid ""
-#~ "We were unable to open this addressbook. This either\n"
-#~ "means you have entered an incorrect URI, or have tried\n"
-#~ "to access an LDAP server and don't have LDAP support\n"
-#~ "compiled in. If you've entered a URI, check the URI for\n"
-#~ "correctness and reenter. If not, you probably have\n"
-#~ "attempted to access an LDAP server. If you wish to be\n"
-#~ "able to use LDAP, you'll need to download and install\n"
-#~ "OpenLDAP and recompile and install Evolution.\n"
-#~ msgstr ""
-#~ "No podemos abrir esta agenda de direcciones. Esto puede\n"
-#~ "significar que, o bien ha introducido un URI incorrecto,\n"
-#~ "o que ha intentado acceder a un servidor LDAP y no ha\n"
-#~ "compilado el soporte para LDAP. Si ha introducido un URI,\n"
-#~ "compruébelo y reinténtelo. De no ser así, posiblemente a\n"
-#~ "intentado acceder a un servidor LDAP. Si desea poder emplear\n"
-#~ "LDAP, necesitará descargar e instalar OpenLDAP y recompilar\n"
-#~ "e instalar evolution.\n"
-
-#~ msgid "SASL"
-#~ msgstr "SASL"
-
-#~ msgid "Show all "
-#~ msgstr "Mostrar todo "
-
-#~ msgid "Apply any new filters to the mail in this box"
-#~ msgstr "Aplicar cualquier filtro nuevo al correo en este buzón"
-
-#~ msgid "Compose a new message"
-#~ msgstr "Escribir un nuevo mensaje"
-
-#~ msgid "Configure Folder..."
-#~ msgstr "Configurar la carpeta..."
-
-#~ msgid "Copy message to a new folder"
-#~ msgstr "Copiar mensaje a una nueva carpeta"
-
-#~ msgid "Display all of the message headers"
-#~ msgstr "Mostrar la cabecera de los mensajes"
-
-#~ msgid "Edit the current message"
-#~ msgstr "Editar el mensaje actual"
-
-#~ msgid "Expunge"
-#~ msgstr "Comprimir"
-
-#~ msgid "Finaly remove all mails tagged for deletion"
-#~ msgstr "Eliminar todos los mensajes marcados para borrar"
-
-#~ msgid "Forward inline"
-#~ msgstr "Reenviar dentro del mensaje"
-
-#~ msgid "Forward this message in-line with your mail, so you can edit it"
-#~ msgstr ""
-#~ "Reenviar este mensaje incluido en su correo, para que pueda editarlo"
-
-#~ msgid "Hide Deleted Messages"
-#~ msgstr "Ocultar Mensajes Borrados"
-
-#~ msgid "Invert Selection"
-#~ msgstr "Invertir selección"
-
-#~ msgid "Move message to a new folder"
-#~ msgstr "Mover mensaje a una nueva carpeta"
-
-#~ msgid "Print Preview of message..."
-#~ msgstr "Imprimir vista previa del mensaje..."
-
-#~ msgid "Reply to all"
-#~ msgstr "Resp. todos"
-
-#~ msgid "Reply to sender"
-#~ msgstr "Resp. remitente"
-
-#~ msgid "S_ource"
-#~ msgstr "F_uente"
-
-#~ msgid "Send a reply to the person who sent you this mail"
-#~ msgstr "Enviar una respuesta a la presona que le envio este mensaje"
-
-#~ msgid "Send a single mail in reply to all the selected mail"
-#~ msgstr "Enviar un solo mensaje para responder a todo el correo seleccionado"
-
-#~ msgid ""
-#~ "Send queued mail\n"
-#~ " and retrieve new mail"
-#~ msgstr ""
-#~ "Enviar el correo en la cola\n"
-#~ " y obtener el nuevo"
-
-#~ msgid "Undelete"
-#~ msgstr "Recuperar"
-
-#~ msgid "View Raw Message Source"
-#~ msgstr "Ver las fuentes del mensaje"
-
-#~ msgid "_Attachment"
-#~ msgstr "_Adjunto"
-
-#~ msgid "_Open Selected Items"
-#~ msgstr "Abrir element_os seleccionados"
-
-#~ msgid "_Reply"
-#~ msgstr "_Responder"
-
-#~ msgid "_Save Message As..."
-#~ msgstr "Guardar men_saje como..."
-
-#~ msgid "_Threaded"
-#~ msgstr "_Encadenados"
-
-#~ msgid "Send the message now"
-#~ msgstr "Enviar el mensaje ahora"
-
-#~ msgid "Advanced ..."
-#~ msgstr "Avanzada..."
-
-#~ msgid "Save As ..."
-#~ msgstr "Guardar como ..."
-
-#~ msgid "%s is not a selectable folder"
-#~ msgstr "%s no es una carpeta seleccionable"
-
-#~ msgid "VFolder on Subject"
-#~ msgstr "VFolder según el asunto"
-
-#~ msgid "VFolder on Sender"
-#~ msgstr "VFolder según el remitente"
-
-#~ msgid "VFolder on Recipients"
-#~ msgstr "VFolder según los destinatarios"
-
-#~ msgid "Mark as Read"
-#~ msgstr "Marcar como leído"
-
-#~ msgid "Mark as Unread"
-#~ msgstr "Marcar como no leído"
-
-#~ msgid "Move to Folder..."
-#~ msgstr "Mover a la carpeta..."
-
-#~ msgid "Copy to Folder..."
-#~ msgstr "Copiar a la carpeta..."
-
-#~ msgid "Do you accept?"
-#~ msgstr "¿Acepta?"
diff --git a/po/fi.po b/po/fi.po
deleted file mode 100644
index 3d95876d12..0000000000
--- a/po/fi.po
+++ /dev/null
@@ -1,8696 +0,0 @@
-# Finnish messages for evolution
-# Copyright (C) 2000-2001 Free Software Foundation, Inc.
-# Jarkko Ranta <jjranta@cc.joensuu.fi> 2000-2001.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: evolution\n"
-"POT-Creation-Date: 2001-05-08 09:51+0000\n"
-"PO-Revision-Date: 2001-05-08 15:00+0300\n"
-"Last-Translator: Jarkko Ranta <jjranta@cc.joensuu.fi>\n"
-"Language-Team: Finnish <fi@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-15\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: addressbook/backend/ebook/e-card.c:3278
-msgid "Card: "
-msgstr "Kortti: "
-
-#: addressbook/backend/ebook/e-card.c:3280
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-"\n"
-"Nimi: "
-
-#: addressbook/backend/ebook/e-card.c:3281
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-"\n"
-" Etuliite: "
-
-#: addressbook/backend/ebook/e-card.c:3282
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-"\n"
-" Etunimi: "
-
-#: addressbook/backend/ebook/e-card.c:3283
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-"\n"
-" Muut nimet: "
-
-#: addressbook/backend/ebook/e-card.c:3284
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-"\n"
-" Sukunimi: "
-
-#: addressbook/backend/ebook/e-card.c:3285
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3299
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-"\n"
-"Syntymäpäivä: "
-
-#: addressbook/backend/ebook/e-card.c:3310
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-"\n"
-"Osoite:"
-
-#: addressbook/backend/ebook/e-card.c:3312
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-"\n"
-" Postilokero: "
-
-#: addressbook/backend/ebook/e-card.c:3313
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3314
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-"\n"
-" Katu: "
-
-#: addressbook/backend/ebook/e-card.c:3315
-msgid ""
-"\n"
-" City: "
-msgstr ""
-"\n"
-" Kaupunki: "
-
-#: addressbook/backend/ebook/e-card.c:3316
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3317
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-"\n"
-" Postinumero: "
-
-#: addressbook/backend/ebook/e-card.c:3318
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-"\n"
-" Maa: "
-
-#: addressbook/backend/ebook/e-card.c:3331
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3343
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-"\n"
-"Puhelimet:\n"
-
-#: addressbook/backend/ebook/e-card.c:3346
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-"\n"
-"Puhelin:"
-
-#: addressbook/backend/ebook/e-card.c:3370
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-"\n"
-"Sähköposti:\n"
-
-#: addressbook/backend/ebook/e-card.c:3373
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-"\n"
-"Sähköposti:"
-
-#: addressbook/backend/ebook/e-card.c:3392
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3398
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-"\n"
-"Aikavyöhyke: "
-
-#: addressbook/backend/ebook/e-card.c:3406
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-"\n"
-"Maant. sijainti: "
-
-#: addressbook/backend/ebook/e-card.c:3410
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3422
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3423
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-"\n"
-" Nimi: "
-
-#: addressbook/backend/ebook/e-card.c:3424
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-"\n"
-" Yksikkö: "
-
-#: addressbook/backend/ebook/e-card.c:3425
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-"\n"
-" Yksikkö2: "
-
-#: addressbook/backend/ebook/e-card.c:3426
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-"\n"
-" Yksikkö3: "
-
-#: addressbook/backend/ebook/e-card.c:3427
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-"\n"
-" Yksikkö4: "
-
-#: addressbook/backend/ebook/e-card.c:3431
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-"\n"
-"Ryhmät: "
-
-#: addressbook/backend/ebook/e-card.c:3432
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3445
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3448
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-"\n"
-"Julkinen avain: "
-
-#: addressbook/backend/ebook/e-card.c:3709
-msgid "Multiple VCards"
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3717
-#, c-format
-msgid "VCard for %s"
-msgstr ""
-
-#: addressbook/backend/ebook/e-destination.c:232
-msgid "???"
-msgstr "???"
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:1
-msgid "Factory to import GnomeCard files into Evolution."
-msgstr ""
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:2
-msgid "Imports GnomeCard files into Evolution."
-msgstr ""
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:21
-#: addressbook/backend/ebook/load-pine-addressbook.c:22
-#: addressbook/backend/ebook/test-client-list.c:23
-#: addressbook/backend/ebook/test-client.c:33
-#: addressbook/conduit/address-conduit.c:1092
-#: addressbook/gui/component/addressbook-factory.c:42
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:98 calendar/gui/main.c:57
-msgid "Could not initialize Bonobo"
-msgstr "Bonobon alustus ei onnistunut"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr "Kohdistimen lataaminen epäonnistui\n"
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:655
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:687
-#: addressbook/conduit/address-conduit.c:690
-msgid "Could not read pilot's Address application block"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:7
-msgid "Add"
-msgstr "Lisää"
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr "T_yöpaikka"
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr "Työ-_faksi"
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-msgid "C_ontacts..."
-msgstr "K_ontaktit..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr "Ry_hmät..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-msgid "Contact Editor"
-msgstr "Kontaktinhallinta"
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr "Yksityiskohtaiset"
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-msgid "General"
-msgstr "Yleiset"
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr "Uusi puhelintyyppi"
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-msgid "No_tes:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr "Puhelintyypit"
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1284
-msgid "Primary Email"
-msgstr "Ensisijainen sähköposti"
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr "Haluaa sähköpostit HTML-muodossa"
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr "Kotisivun osoite:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:74
-msgid "_Add"
-msgstr "_Lisää"
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr "_Osoite..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr "_Syntymäpäivä:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr "_Työ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-msgid "_Company:"
-msgstr "_Yritys:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/folder-browser.c:640 mail/mail-config.glade.h:75
-#: ui/evolution-event-editor.xml.h:57 ui/evolution-mail.xml.h:98
-#: ui/evolution-task-editor-dialog.xml.h:69
-msgid "_Delete"
-msgstr "_Poista"
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr "_Osasto:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr "_Koko nimi..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-msgid "_Home"
-msgstr "_Koti"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-msgid "_Job title:"
-msgstr "_Tehtävänimike:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-msgid "_Mobile"
-msgstr "_Matkapuhelin"
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr "_Kutsumanimi:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr "_Asema:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr "_Ammatti:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr "Puoli_so:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr "_Tämä on postitusosoite"
-
-#: addressbook/contact-editor/e-contact-editor.c:603
-msgid "This contact belongs to these categories:"
-msgstr "Tämä kontakti kuuluu näihin ryhmiin:"
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-#: addressbook/gui/widgets/e-addressbook-view.c:676
-msgid "Assistant"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/contact-editor/e-contact-editor.c:1310
-msgid "Business"
-msgstr "Työ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-msgid "Business 2"
-msgstr "Työ 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#: addressbook/gui/widgets/e-addressbook-view.c:656
-msgid "Business Fax"
-msgstr "Työ/faksi"
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Callback"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "Car"
-msgstr "Auto"
-
-#: addressbook/contact-editor/e-contact-editor.c:1248
-msgid "Company"
-msgstr "Yritys"
-
-#: addressbook/contact-editor/e-contact-editor.c:1249
-#: addressbook/contact-editor/e-contact-editor.c:1311
-msgid "Home"
-msgstr "Koti"
-
-#: addressbook/contact-editor/e-contact-editor.c:1250
-msgid "Home 2"
-msgstr "Koti 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1251
-#: addressbook/gui/widgets/e-addressbook-view.c:657
-msgid "Home Fax"
-msgstr "Koti/faksi"
-
-#: addressbook/contact-editor/e-contact-editor.c:1252
-#: addressbook/gui/widgets/e-addressbook-view.c:660
-msgid "ISDN"
-msgstr "ISDN"
-
-#: addressbook/contact-editor/e-contact-editor.c:1253
-msgid "Mobile"
-msgstr "Matkapuhelin"
-
-#: addressbook/contact-editor/e-contact-editor.c:1254
-#: addressbook/contact-editor/e-contact-editor.c:1312
-#: mail/mail-config.glade.h:40
-msgid "Other"
-msgstr "Muut"
-
-#: addressbook/contact-editor/e-contact-editor.c:1255
-#: addressbook/gui/widgets/e-addressbook-view.c:662
-msgid "Other Fax"
-msgstr "Muu faksi"
-
-#: addressbook/contact-editor/e-contact-editor.c:1256
-#: addressbook/gui/widgets/e-addressbook-view.c:663
-msgid "Pager"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1257
-msgid "Primary"
-msgstr "Ensisijainen"
-
-#: addressbook/contact-editor/e-contact-editor.c:1258
-#: addressbook/gui/widgets/e-addressbook-view.c:664
-msgid "Radio"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1259
-#: addressbook/gui/widgets/e-addressbook-view.c:665
-msgid "Telex"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1260
-msgid "TTY/TDD"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:668
-msgid "Email 2"
-msgstr "Sähköposti 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/gui/widgets/e-addressbook-view.c:669
-msgid "Email 3"
-msgstr "Sähköposti 3"
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-msgid "Delete Contact?"
-msgstr "Poista kontakti?"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:233
-msgid "Contact Quick-Add"
-msgstr "Kontaktin pikalisäys"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:235
-msgid "Edit Full"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-quick-add.c:276
-#: addressbook/gui/widgets/e-addressbook-view.c:643
-msgid "Full Name"
-msgstr "Koko nimi"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:282
-msgid "E-mail"
-msgstr "Sähköposti"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr "Osoite _2:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr "Kanada"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr "Tarkista osoite"
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr "M_aa:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr "Suomi"
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr "Yhdysvallat"
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr "_Osoite:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-msgid "_City:"
-msgstr "_Kaupunki:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr "_Postilokero:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr "_Osavaltio/lääni:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr "Po_stinumero:"
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr "Tarkasta kokonimi"
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:4
-msgid "I"
-msgstr "I"
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr "II"
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr "III"
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr "Jr."
-
-#: addressbook/contact-editor/fullname.glade.h:8
-msgid "Miss"
-msgstr "Neiti"
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr "Hra."
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr "Rva."
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr "Nti."
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr "_Etunimi:"
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr "_Sukunimi:"
-
-#: addressbook/contact-editor/fullname.glade.h:15
-msgid "_Middle:"
-msgstr "_Toinen nimi:"
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:242
-msgid "As _Minicards"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:248
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:408
-#, c-format
-msgid "Enter password for %s"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:436
-msgid "Unable to open addressbook"
-msgstr "Osoitekirjaa ei voitu avata"
-
-#: addressbook/gui/component/addressbook.c:443
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or the LDAP server\n"
-"is down"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:448
-msgid ""
-"This version of Evolution does not have LDAP support\n"
-"compiled in to it. If you want to use LDAP in Evolution\n"
-"you must compile the program from the CVS sources after\n"
-"retrieving OpenLDAP from the link below.\n"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:456
-msgid ""
-"We were unable to open this addressbook. Please check that the\n"
-"path exists and that you have permission to access it."
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:607 calendar/gui/gnome-cal.c:233
-msgid "Any field contains"
-msgstr "Mikä tahansa kenttä sisältää"
-
-#: addressbook/gui/component/addressbook.c:608
-msgid "Name contains"
-msgstr "Nimi sisältää"
-
-#: addressbook/gui/component/addressbook.c:609
-msgid "Email contains"
-msgstr "Sähköposti sisältää"
-
-#: addressbook/gui/component/addressbook.c:752
-msgid "The URI that the Folder Browser will display"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:148
-msgid "LDAP Server"
-msgstr "LDAP-palvelin"
-
-#: addressbook/gui/component/addressbook-config.c:150
-msgid "File"
-msgstr "Tiedosto"
-
-#: addressbook/gui/component/addressbook-config.c:153
-msgid "Unknown addressbook type"
-msgstr "Tuntematon osoitekirjatyyppi"
-
-#: addressbook/gui/component/addressbook-config.c:163
-msgid "None (anonymous mode)"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:165
-#: camel/camel-sasl-plain.c:32 camel/providers/imap/camel-imap-provider.c:80
-#: camel/providers/nntp/camel-nntp-store.c:291
-#: camel/providers/pop3/camel-pop3-provider.c:67 mail/mail-config.glade.h:43
-msgid "Password"
-msgstr "Salasana"
-
-#: addressbook/gui/component/addressbook-config.c:167
-msgid "SASL"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:170
-msgid "Unknown auth type"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:179
-msgid "Base"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "One"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:183
-msgid "Subtree"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:186
-msgid "Unknown scope type"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:353
-msgid "Bind DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:354
-msgid "FIXME Bind DN Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:356
-#: mail/mail-config.glade.h:50
-msgid "Remember this password"
-msgstr "Muista tämä salasana"
-
-#: addressbook/gui/component/addressbook-config.c:406
-#: mail/mail-config.glade.h:28
-msgid "Host:"
-msgstr "Isäntäpalvelin:"
-
-#: addressbook/gui/component/addressbook-config.c:407
-msgid "FIXME Host help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:409
-msgid "Port:"
-msgstr "Portti:"
-
-#: addressbook/gui/component/addressbook-config.c:410
-msgid "FIXME Port help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:414
-msgid "Root DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:415
-msgid "FIXME Root DN help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:435
-msgid "Search Scope:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:489
-msgid "Authentication:"
-msgstr "Todennus:"
-
-#: addressbook/gui/component/addressbook-config.c:507
-#: mail/mail-config.glade.h:44
-msgid "Path:"
-msgstr "Polku:"
-
-#: addressbook/gui/component/addressbook-config.c:508
-msgid "FIXME Path Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:513
-msgid "Create path if it doesn't exist."
-msgstr "Luo polku mikäli sitä ei ole olemassa."
-
-#: addressbook/gui/component/addressbook-config.c:647
-msgid "Edit Addressbook"
-msgstr "Muokkaa osoitekirjaa"
-
-#: addressbook/gui/component/addressbook-config.c:649
-msgid "Add Addressbook"
-msgstr "Lisää osoitekirja"
-
-#: addressbook/gui/component/addressbook-config.c:665
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-"Valitse osoitekirjan tyyppi, ja anna sen jälkeen tarpeelliset tiedot siitä."
-
-#: addressbook/gui/component/addressbook-config.c:671
-#: mail/mail-config.glade.h:35
-msgid "Name:"
-msgstr "Nimi:"
-
-#: addressbook/gui/component/addressbook-config.c:672
-msgid "FIXME Name help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:674
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr "Kuvaus:"
-
-#: addressbook/gui/component/addressbook-config.c:675
-msgid "FIXME Description help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-msgid "Addressbook Sources"
-msgstr "Osoitekirjan lähteet"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: addressbook/gui/widgets/e-addressbook-view.c:578
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:11 mail/mail-config.glade.h:19
-#: mail/message-browser.c:203 ui/evolution-addressbook.xml.h:3
-#: ui/evolution-event-editor.xml.h:17 ui/evolution-mail.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr "Poista"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:23
-msgid "Edit"
-msgstr "Muokkaa"
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-msgid "Name"
-msgstr "Nimi"
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-msgid "URI"
-msgstr "URI"
-
-#: addressbook/gui/component/addressbook-storage.c:99
-msgid "Other Contacts"
-msgstr "Muut kontaktit"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Disable Queries"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Enable Queries (Dangerous!)"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:388
-#: addressbook/gui/component/select-names/e-select-names-popup.c:210
-msgid "Edit Contact Info"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:424
-#: addressbook/gui/component/select-names/e-select-names-popup.c:269
-msgid "Add to Contacts"
-msgstr "Lisää kontakteihin"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-msgid "A Bonobo control for an address popup."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A Bonobo control for displaying an address."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-msgid "Evolution Addressbook minicard viewer"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-msgid "Evolution component for handling contacts."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-msgid "Factory for the Addressbook Minicard control"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-msgid "Factory for the Addressbook's address displayer"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-msgid "Factory for the Addressbook's address popup"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:10
-msgid "Factory for the Evolution addressbook component."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:11
-msgid "Factory for the sample Addressbook control"
-msgstr ""
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:131
-#: composer/e-msg-composer-attachment-bar.c:468 filter/filter-filter.c:401
-#: filter/filter-rule.c:549 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:265 shell/e-shortcuts-view.c:388
-msgid "Remove"
-msgstr "Poista"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:146
-msgid "Remove All"
-msgstr "Poista kaikki"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-msgid "Evolution's addressbook name selection interface."
-msgstr ""
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr ""
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr "Etsi..."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-msgid "Message Recipients"
-msgstr "Vastaanottajat"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-msgid "Select Names"
-msgstr "Valitse nimet"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-msgid "Select name from:"
-msgstr ""
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:158
-#: mail/mail-search.c:148
-msgid "Search"
-msgstr "Etsi"
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr "123"
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr "a"
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr "b"
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr "c"
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr "d"
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr "e"
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr "f"
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr "g"
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr "h"
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr "i"
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr "j"
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr "k"
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr "l"
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr "m"
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr "n"
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-msgid "o"
-msgstr "o"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr "p"
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr "q"
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-msgid "r"
-msgstr "r"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr "s"
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr "t"
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr "u"
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr "v"
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr "w"
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr "x"
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr "y"
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr "z"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:513
-#: addressbook/gui/widgets/e-addressbook-view.c:573
-msgid "Save as VCard"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:574
-msgid "Send contact to other"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:575
-msgid "Send message to contact"
-msgstr "Lähetä viesti kontaktille"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:576 mail/message-browser.c:200
-#: ui/evolution-addressbook.xml.h:9 ui/evolution-calendar.xml.h:23
-#: ui/evolution-mail.xml.h:55 ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr "Tulosta"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:577
-msgid "Print Envelope"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:641
-msgid "* Click here to add a contact *"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:642
-msgid "File As"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:644
-msgid "Email"
-msgstr "Sähköposti"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:645
-msgid "Primary Phone"
-msgstr "Ensisijainen puhelin"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:646
-msgid "Assistant Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:647
-msgid "Business Phone"
-msgstr "Työpuhelin"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:648
-msgid "Callback Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:649
-msgid "Company Phone"
-msgstr "Yrityksen puhelin"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:650
-msgid "Home Phone"
-msgstr "Kotipuhelin"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:651
-msgid "Organization"
-msgstr "Organisaatio"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:652
-msgid "Business Address"
-msgstr "Työosoite"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:653
-msgid "Home Address"
-msgstr "Kotiosoite"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:654
-msgid "Mobile Phone"
-msgstr "Matkapuhelin"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:655
-msgid "Car Phone"
-msgstr "Autopuhelin"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:658
-msgid "Business Phone 2"
-msgstr "Työpuhelin 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:659
-msgid "Home Phone 2"
-msgstr "Kotipuhelin 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:661
-msgid "Other Phone"
-msgstr "Muu puhelin"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:666
-msgid "TTY"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:667
-msgid "Other Address"
-msgstr "Muu osoite"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:670
-msgid "Web Site"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:671
-msgid "Department"
-msgstr "Osasto"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:672
-msgid "Office"
-msgstr "Asema"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:673
-msgid "Title"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:674
-msgid "Profession"
-msgstr "Ammatti"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:675
-msgid "Manager"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:677
-msgid "Nickname"
-msgstr "Kutsumanimi"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:678
-msgid "Spouse"
-msgstr "Puoliso"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:679
-msgid "Note"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:680
-msgid "Free-busy URL"
-msgstr ""
-
-#: addressbook/gui/widgets/e-minicard-control.c:282
-msgid "Save in addressbook"
-msgstr "Tallenna osoitekirjaan"
-
-#: addressbook/gui/widgets/e-minicard-view.c:469
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:26
-msgid "Card View"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr "10 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr "8 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr "Ala:"
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr "Mitat:"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr "Kirjasin..."
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr "Kirjasinlajit"
-
-#: addressbook/printing/e-contact-print.glade.h:9
-msgid "Footer:"
-msgstr "Alatunniste:"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:11
-msgid "Header"
-msgstr "Ylätunniste:"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr "Ylä-/Alatunniste"
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr "Korkeus:"
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr "Vaaka"
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr "Vasen:"
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr "Reunukset"
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr "Sarakkeiden määrä:"
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr "Asetukset"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr "Suunta"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr "Sivu"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-msgid "Page Setup:"
-msgstr "Sivun asetukset:"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr "Paperi"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr "Paperilähde:"
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr "Pysty"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr "Esikatselu:"
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr "Peilikuvareunukset"
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr "Oikea:"
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr "Varjostus"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-msgid "Size:"
-msgstr "Koko:"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr "Aloita uudelta sivulta"
-
-#: addressbook/printing/e-contact-print.glade.h:38
-msgid "Style name:"
-msgstr "Tyylin nimi:"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr "Ylä:"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-msgid "Type:"
-msgstr "Tyyppi:"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr "Leveys:"
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr "Virhe kommunikoitaessa kalenteripalvelimen kanssa"
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr ""
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr ""
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr ""
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-msgid "Snooze"
-msgstr ""
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr "Ok"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr ""
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-msgid "Factory for the alarm notification service"
-msgstr ""
-
-#: calendar/gui/alarm-notify/notify-main.c:56
-#, c-format
-msgid ""
-"It is %s. The Unix time is %ld right now. We just thought you may like to "
-"know."
-msgstr ""
-
-#: calendar/gui/alarm-notify/notify-main.c:93 calendar/gui/main.c:52
-msgid "Could not initialize GNOME"
-msgstr "GNOMEn alustus ei onnistunut"
-
-#: calendar/gui/alarm-notify/notify-main.c:108
-msgid "Could not create the alarm notify service factory"
-msgstr ""
-
-#: calendar/gui/calendar-commands.c:266
-msgid "File not found"
-msgstr ""
-
-#: calendar/gui/calendar-commands.c:290
-msgid "Open calendar"
-msgstr "Avaa kalenteri"
-
-#: calendar/gui/calendar-commands.c:332
-msgid "Save calendar"
-msgstr "Tallenna kalenteri"
-
-#: calendar/gui/calendar-commands.c:468
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-
-#: calendar/gui/calendar-model.c:360 calendar/gui/calendar-model.c:898
-#: calendar/gui/e-calendar-table.c:330
-msgid "Public"
-msgstr "Julkinen"
-
-#: calendar/gui/calendar-model.c:363 calendar/gui/calendar-model.c:900
-#: calendar/gui/e-calendar-table.c:331
-msgid "Private"
-msgstr "Henkilökohtainen"
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:902
-#: calendar/gui/e-calendar-table.c:332
-msgid "Confidential"
-msgstr "Luottamuksellinen"
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/event-editor.c:1601
-#: calendar/gui/event-editor.c:1628
-#: camel/providers/smtp/camel-smtp-transport.c:221
-msgid "Unknown"
-msgstr "Tuntematon"
-
-#: calendar/gui/calendar-model.c:457
-msgid "N"
-msgstr "P"
-
-#: calendar/gui/calendar-model.c:457
-msgid "S"
-msgstr "E"
-
-#: calendar/gui/calendar-model.c:459
-msgid "E"
-msgstr "I"
-
-#: calendar/gui/calendar-model.c:459
-msgid "W"
-msgstr "L"
-
-#: calendar/gui/calendar-model.c:497 calendar/gui/calendar-model.c:1066
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:352 mail/message-list.c:694
-msgid "High"
-msgstr "Korkea"
-
-#: calendar/gui/calendar-model.c:499 calendar/gui/calendar-model.c:1068
-#: calendar/gui/calendar-model.c:1574
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:353 mail/message-list.c:693
-msgid "Normal"
-msgstr "Tavallinen"
-
-#: calendar/gui/calendar-model.c:501 calendar/gui/calendar-model.c:1070
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:354 mail/message-list.c:692
-msgid "Low"
-msgstr "Matala"
-
-#: calendar/gui/calendar-model.c:537 calendar/gui/calendar-model.c:1122
-#: calendar/gui/e-calendar-table.c:406
-msgid "Transparent"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:540 calendar/gui/calendar-model.c:1124
-#: calendar/gui/e-calendar-table.c:405
-msgid "Opaque"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:638 calendar/gui/calendar-model.c:1176
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:426
-msgid "Not Started"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1178
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:427
-msgid "In Progress"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1180
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:428
-msgid "Completed"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:647 calendar/gui/calendar-model.c:1182
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:429 camel/camel-service.c:544
-#: camel/camel-service.c:580
-msgid "Cancelled"
-msgstr "Peruutettu"
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:794 e-util/e-time-utils.c:278
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr "%a %d/%m/%Y %H:%M:%S"
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:797 e-util/e-time-utils.c:287
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr "%a %d/%m/%Y %I:%M:%S %p"
-
-#: calendar/gui/calendar-model.c:802
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-"Päiväys tulee antaa seuraavassa muodossa: \n"
-"\n"
-"%s"
-
-#: calendar/gui/calendar-model.c:882
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr ""
-"Luokittelun tulee olla 'Julkinen', 'Yksityinen, 'Luottamuksellinen', tai "
-"'Määrittelemätön'"
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:896 calendar/gui/calendar-model.c:1120
-#: calendar/gui/calendar-model.c:1174 calendar/gui/e-calendar-table.c:329
-#: calendar/gui/e-calendar-table.c:404 mail/mail-account-gui.c:973
-#: mail/mail-accounts.c:120 mail/mail-accounts.c:164
-#: mail/mail-config.glade.h:37 shell/e-shell-view.c:1198
-#: widgets/misc/e-cell-date-edit.c:237 widgets/misc/e-dateedit.c:432
-#: widgets/misc/e-dateedit.c:1341 widgets/misc/e-dateedit.c:1456
-msgid "None"
-msgstr "Määrittelemätön"
-
-#: calendar/gui/calendar-model.c:970
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1010
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1051
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr ""
-"Prioriteetin tulee olla 'Korkea', 'Tavallinen', 'Matala' tai "
-"'Määrittelemätön'."
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1064
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:355
-msgid "Undefined"
-msgstr "Määrittelemätön"
-
-#: calendar/gui/calendar-model.c:1105
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1576
-msgid "Recurring"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1578
-msgid "Assigned"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1584
-msgid "Yes"
-msgstr "Kyllä"
-
-#: calendar/gui/calendar-model.c:1584
-msgid "No"
-msgstr "Ei"
-
-#: calendar/gui/calendar-summary.c:198
-msgid "%A, %e %B %Y"
-msgstr "%A, %e %B %Y"
-
-#: calendar/gui/calendar-summary.c:207
-msgid "Appointments"
-msgstr "Tapaamiset"
-
-#: calendar/gui/calendar-summary.c:245 calendar/gui/calendar-summary.c:251
-msgid "%I:%M%p"
-msgstr "%I:%M%p"
-
-#: calendar/gui/calendar-summary.c:275 calendar/gui/print.c:948
-#: views/tasks/galview.xml.h:1
-msgid "Tasks"
-msgstr "Tehtävät"
-
-#: calendar/gui/calendar-summary.c:443
-msgid "<b>Error loading calendar</b>"
-msgstr "<b>Virhe ladattaessa kalenteria</b>"
-
-#: calendar/gui/calendar-summary.c:455
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr "<b>Virhe ladattaessa kalenteria:<br>Metodia ei tueta"
-
-#: calendar/gui/calendar-summary.c:622
-msgid "Display"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:627
-msgid "Show appointments"
-msgstr "Näytä tapaamiset"
-
-#: calendar/gui/calendar-summary.c:635
-msgid "Show tasks"
-msgstr "Näytä tehtävät"
-
-#: calendar/gui/calendar-summary.c:690
-msgid "Things to do"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:721 calendar/gui/e-itip-control.glade.h:7
-msgid "Loading Calendar"
-msgstr "Ladataan kalenteria"
-
-#: calendar/gui/control-factory.c:126
-msgid "The URI that the calendar will display"
-msgstr "URI jonka kalenteri näyttää"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:189
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:196
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:207
-msgid "No summary available."
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:2
-msgid "Close"
-msgstr "Sulje"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-msgid "Edit appointment"
-msgstr "Muokkaa tapaamista"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr "05 minuuttia"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr "10 minuuttia"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr "12 tuntia (am/pm)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr "15 minuuttia"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr "24 tuntia"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr "30 minuuttia"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr "60 minuuttia"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-msgid "Calendar"
-msgstr "Kalenteri"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr "Kalenterin asetukset"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "Värit"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr "Tiivistä viikonloput"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-msgid "Defaults"
-msgstr "Oletukset"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr "Näytä asetukset"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:162
-msgid "Due Date"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr "Päivän loppu:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr "Pe"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:479
-msgid "Friday"
-msgstr "Perjantai"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr "Korosta"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr "Ma"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:475
-msgid "Monday"
-msgstr "Maanantai"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:45
-msgid "Pick a color"
-msgstr "Valitse väri"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:165
-msgid "Priority"
-msgstr "Prioriteetti"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-msgid "Remind me of all appointments"
-msgstr "Muistuta minua kaikista tapaamisista"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-msgid "Reminders"
-msgstr "Muistutukset"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr "La"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:480
-msgid "Saturday"
-msgstr "Lauantai"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr "Näytä"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-msgid "Show appointment end times"
-msgstr "Näytä tapaamisten loppumisajat"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr "Näytä viikkonumerot"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr "Päivän alku:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr "Su"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:481
-msgid "Sunday"
-msgstr "Sunnuntai"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-msgid "TaskPad"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr "To"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:478
-msgid "Thursday"
-msgstr "Torstai"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr "Ti"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:476
-msgid "Tuesday"
-msgstr "Tiistai"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr "Ke"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:477
-msgid "Wednesday"
-msgstr "Keskiviikko"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr "Työviikko"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr "minuuttia niitä ennen."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:78
-msgid "seconds."
-msgstr "sekuntia."
-
-#: calendar/gui/dialogs/delete-comp.c:70
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr "Haluatko todella poistaa tapaamisen '%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:73
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr "Haluatko todella poistaa tämän nimettömän tapaamisen?"
-
-#: calendar/gui/dialogs/delete-comp.c:79
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr "Haluatko todella poistaa tehtävän '%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:82
-msgid "Are you sure you want to delete this untitled task?"
-msgstr "Haluatko todella poistaa tämän nimettömän tehtävän?"
-
-#: calendar/gui/dialogs/delete-comp.c:88
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:91
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr ""
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr "Haluatko tallentaa muutokset?"
-
-#: calendar/gui/dialogs/task-editor.c:709
-msgid "Edit Task"
-msgstr "Muokkaa tehtävää"
-
-#: calendar/gui/dialogs/task-editor.c:714 calendar/gui/event-editor.c:382
-#, c-format
-msgid "Appointment - %s"
-msgstr "Tapaaminen - %s"
-
-#: calendar/gui/dialogs/task-editor.c:717 calendar/gui/event-editor.c:385
-#, c-format
-msgid "Task - %s"
-msgstr "Tehtävä - %s"
-
-#: calendar/gui/dialogs/task-editor.c:720 calendar/gui/event-editor.c:388
-#, c-format
-msgid "Journal entry - %s"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor.c:734 calendar/gui/event-editor.c:402
-msgid "No summary"
-msgstr "Ei kuvausta"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:158
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr "Luokittelu"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-msgid "Date & Time"
-msgstr "Päiväys & Aika"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-msgid "Pri_vate"
-msgstr "Y_ksityinen"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-msgid "Progress"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr "Ju_lkinen"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-msgid "Sta_rt Date:"
-msgstr "_Alkamispäivä:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-msgid "Su_mmary:"
-msgstr "K_uvaus:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr "Tehtävä"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-msgid "URL:"
-msgstr "URL:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr "_Luottamuksellinen"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Contacts..."
-msgstr "_Kontaktit..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-msgid "_Due Date:"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-msgid "_Priority:"
-msgstr "_Prioriteetti:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "_Status:"
-msgstr "_Tila:"
-
-#: calendar/gui/e-calendar-table.c:157
-msgid "Categories"
-msgstr "Ryhmät"
-
-#: calendar/gui/e-calendar-table.c:159
-msgid "Completion Date"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "End Date"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:161
-msgid "Start Date"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Geographical Position"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:164
-msgid "Percent complete"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:166
-msgid "Summary"
-msgstr "Kuvaus"
-
-#: calendar/gui/e-calendar-table.c:167
-msgid "Transparency"
-msgstr "Läpinäkyvyys"
-
-#: calendar/gui/e-calendar-table.c:168
-msgid "URL"
-msgstr "URL:"
-
-#: calendar/gui/e-calendar-table.c:169
-msgid "Alarms"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:170
-msgid "Click here to add a task"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "0%"
-msgstr "0%"
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "10%"
-msgstr "10%"
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "20%"
-msgstr "20%"
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "30%"
-msgstr "30%"
-
-#: calendar/gui/e-calendar-table.c:378
-#, c-format
-msgid "40%"
-msgstr "40%"
-
-#: calendar/gui/e-calendar-table.c:379
-#, c-format
-msgid "50%"
-msgstr "50%"
-
-#: calendar/gui/e-calendar-table.c:380
-#, c-format
-msgid "60%"
-msgstr "60%"
-
-#: calendar/gui/e-calendar-table.c:381
-#, c-format
-msgid "70%"
-msgstr "70%"
-
-#: calendar/gui/e-calendar-table.c:382
-#, c-format
-msgid "80%"
-msgstr "80%"
-
-#: calendar/gui/e-calendar-table.c:383
-#, c-format
-msgid "90%"
-msgstr "90%"
-
-#: calendar/gui/e-calendar-table.c:384
-#, c-format
-msgid "100%"
-msgstr "100%"
-
-#: calendar/gui/e-calendar-table.c:551
-msgid "Mark Complete"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:552
-msgid "Mark the task complete"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:557
-msgid "Edit this task..."
-msgstr "Muokkaa tätä tehtävää..."
-
-#: calendar/gui/e-calendar-table.c:558
-msgid "Edit the task"
-msgstr "Muokkaa tehtävää"
-
-#: calendar/gui/e-calendar-table.c:560
-#: ui/evolution-task-editor-dialog.xml.h:19
-msgid "Delete this task"
-msgstr "Poista tämä tehtävä"
-
-#: calendar/gui/e-calendar-table.c:561
-msgid "Delete the task"
-msgstr "Poista tehtävä"
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:570 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:617
-msgid "am"
-msgstr "am"
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:573 calendar/gui/e-week-view.c:303
-#: calendar/gui/print.c:616
-msgid "pm"
-msgstr "pm"
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:274 calendar/gui/e-day-view.c:1294
-#: calendar/gui/e-week-view-main-item.c:325
-msgid "%A %d %B"
-msgstr "%A %d %B"
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:278 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:334
-msgid "%a %d %b"
-msgstr "%a %d %b"
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:282 calendar/gui/e-day-view.c:1321
-#: calendar/gui/e-week-view-main-item.c:348
-msgid "%d %b"
-msgstr "%d %b"
-
-#: calendar/gui/e-day-view.c:3146 ui/evolution-calendar.xml.h:16
-msgid "New Appointment"
-msgstr "Uusi tapaaminen"
-
-#: calendar/gui/e-day-view.c:3148 calendar/gui/e-week-view.c:3280
-msgid "New All Day Event"
-msgstr "Uusi koko päivän tapahtuma"
-
-#: calendar/gui/e-day-view.c:3153 calendar/gui/e-week-view.c:3285
-msgid "Go to Today"
-msgstr "Siirry tähän päivään"
-
-#: calendar/gui/e-day-view.c:3155 calendar/gui/e-week-view.c:3287
-msgid "Go to Date..."
-msgstr "Siirry päivään..."
-
-#: calendar/gui/e-day-view.c:3162 calendar/gui/e-week-view.c:3293
-#: ui/evolution-calendar.xml.h:19 ui/evolution-message-composer.xml.h:10
-msgid "Open"
-msgstr "Avaa"
-
-#: calendar/gui/e-day-view.c:3164 calendar/gui/e-week-view.c:3295
-msgid "Delete this Appointment"
-msgstr "Poista tämä tapaaminen"
-
-#: calendar/gui/e-day-view.c:3166 calendar/gui/e-week-view.c:3297
-#: ui/evolution-event-editor.xml.h:45
-msgid "Schedule Meeting"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3175 calendar/gui/e-week-view.c:3310
-msgid "Make this Occurrence Movable"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3177 calendar/gui/e-week-view.c:3312
-msgid "Delete this Occurrence"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3179
-msgid "Delete all Occurrences"
-msgstr ""
-
-#: calendar/gui/e-day-view-time-item.c:519
-#, c-format
-msgid "%02i minute divisions"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:161
-msgid "I couldn't update your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:167 calendar/gui/e-itip-control.c:510
-msgid "Component successfully updated."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:173
-msgid "There was an error loading the calendar file."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:197
-msgid "I couldn't open your calendar file!\n"
-msgstr "En pystynyt avaamaan kalenteritiedostoasi!\n"
-
-#: calendar/gui/e-itip-control.c:458 calendar/gui/e-itip-control.c:529
-msgid "I couldn't load your calendar file!\n"
-msgstr "En pystynyt lataamaan kalenteritiedostoasi!\n"
-
-#: calendar/gui/e-itip-control.c:470
-msgid "I couldn't read your calendar file!\n"
-msgstr "En pystynyt lukemaan kalenteritiedostoasi!\n"
-
-#: calendar/gui/e-itip-control.c:483
-msgid "This is a reply from someone who was uninvited!"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:499
-msgid "I couldn't update your calendar store."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:540
-msgid "I couldn't delete the calendar component!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:550
-msgid "Component successfully deleted."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:694
-msgid "I don't recognize this type of calendar component."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:780
-msgid "Add to Calendar"
-msgstr "Lisää kalenteriin"
-
-#: calendar/gui/e-itip-control.c:814
-msgid " Accept "
-msgstr "Hyväksy "
-
-#: calendar/gui/e-itip-control.c:815
-msgid " Decline "
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:816
-msgid " Tentative "
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:860
-msgid "Update Calendar"
-msgstr "Päivitä kalenteri"
-
-#: calendar/gui/e-itip-control.c:883
-msgid "Cancel Meeting"
-msgstr "Peruuta tapaaminen"
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, no-c-format
-msgid "%P %%"
-msgstr "%P %%"
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:4
-msgid "Calendar Message"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:5 mail/mail-format.c:623
-msgid "Date:"
-msgstr "Päiväys:"
-
-#: calendar/gui/e-itip-control.glade.h:8
-msgid "Loading calendar..."
-msgstr "Ladataan kalenteria..."
-
-#: calendar/gui/e-itip-control.glade.h:9
-msgid "Organizer:"
-msgstr "Organisoija:"
-
-#: calendar/gui/e-itip-control.glade.h:10
-msgid "Server Message:"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:11
-msgid "Summary:"
-msgstr "Kuvaus:"
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:13
-msgid "date-start"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-msgid "Attendee"
-msgstr "Osanottaja"
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-msgid "Attendee address"
-msgstr "Osanottajan osoite"
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-msgid "Attendees: "
-msgstr "Osanottajat: "
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr ""
-"Peruuta\n"
-"tapaaminen"
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-msgid "Chair"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-msgid "Meeting Invitations"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-msgid "Organizer: "
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:14
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:16
-msgid "RSVP"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid ""
-"Request\n"
-"Meeting"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:19
-msgid "Required Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-msgid "Role"
-msgstr "Rooli"
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-msgid ""
-"Schedule\n"
-"Time"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:23 filter/libfilter-i18n.h:49
-#: mail/message-list.c:1086
-msgid "Status"
-msgstr "Tila"
-
-#: calendar/gui/e-tasks.c:149 calendar/gui/e-tasks.c:469
-#: calendar/gui/e-tasks.c:502
-msgid "All"
-msgstr ""
-
-#: calendar/gui/e-tasks.c:155
-msgid "Category:"
-msgstr "Ryhmät:"
-
-#: calendar/gui/e-tasks.c:298
-#, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr ""
-
-#: calendar/gui/e-tasks.c:310
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr ""
-
-#: calendar/gui/event-editor.c:377
-msgid "Edit Appointment"
-msgstr "Muokkaa tapaamista"
-
-#: calendar/gui/event-editor.c:449
-msgid "on"
-msgstr ""
-
-#: calendar/gui/event-editor.c:474 filter/filter-datespec.c:81
-msgid "day"
-msgstr "päivä"
-
-#: calendar/gui/event-editor.c:601
-msgid "on the"
-msgstr ""
-
-#: calendar/gui/event-editor.c:608
-msgid "th"
-msgstr "."
-
-#: calendar/gui/event-editor.c:754
-msgid "occurrences"
-msgstr ""
-
-#: calendar/gui/event-editor.c:871
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr ""
-
-#: calendar/gui/event-editor.c:1543
-#, c-format
-msgid " %d days"
-msgstr " %d päivää"
-
-#: calendar/gui/event-editor.c:1545
-msgid " 1 day"
-msgstr " 1 päivä"
-
-#: calendar/gui/event-editor.c:1548
-#, c-format
-msgid " %d weeks"
-msgstr " %d viikkoa"
-
-#: calendar/gui/event-editor.c:1550
-msgid " 1 week"
-msgstr " 1 viikko"
-
-#: calendar/gui/event-editor.c:1553
-#, c-format
-msgid " %d hours"
-msgstr " %d tuntia"
-
-#: calendar/gui/event-editor.c:1555
-msgid " 1 hour"
-msgstr " 1 tunti"
-
-#: calendar/gui/event-editor.c:1558
-#, c-format
-msgid " %d minutes"
-msgstr " %d minuuttia"
-
-#: calendar/gui/event-editor.c:1560
-msgid " 1 minute"
-msgstr " 1 minuutti"
-
-#: calendar/gui/event-editor.c:1563
-#, c-format
-msgid " %d seconds"
-msgstr " %d sekuntia"
-
-#: calendar/gui/event-editor.c:1565
-msgid " 1 second"
-msgstr " 1 sekunti"
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1588
-msgid "Play a sound"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1591
-msgid "Show a dialog"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1594
-msgid "Send an email"
-msgstr "Lähetä sähköpostia"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1597
-msgid "Run a program"
-msgstr "Aja ohjelma"
-
-#: calendar/gui/event-editor.c:1612
-msgid " before start of appointment"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1614
-msgid " after start of appointment"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1622
-msgid " before end of appointment"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1624
-msgid " after end of appointment"
-msgstr ""
-
-#: calendar/gui/event-editor.c:3132 calendar/gui/print.c:1097
-#: calendar/gui/print.c:1099 calendar/gui/print.c:1100
-msgid "%a %b %d %Y"
-msgstr "%a %b %d %Y"
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr "_Koko päivän kestävä tapahtuma"
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-msgid "Appointment"
-msgstr "Tapaaminen"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-msgid "Appointment Basics"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-msgid "Custom recurrence"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr "Joka"
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-msgid "Exceptions"
-msgstr "Poikkeukset"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-msgid "Modify"
-msgstr "Muuta"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-msgid "No recurrence"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-msgid "Preview"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Recurrence"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-msgid "Recurrence Rule"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-msgid "Reminder"
-msgstr "Muistutus"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-msgid "Settings..."
-msgstr "Asetukset..."
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-msgid "_End time:"
-msgstr "_Loppumisaika:"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Start time:"
-msgstr "_Alkamisaika:"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Starting date:"
-msgstr "_Alkamispäivä:"
-
-#. Automatically generated. Do not edit.
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:2
-msgid "after"
-msgstr "jälkeen"
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:6
-msgid "before"
-msgstr "ennen"
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "day(s)"
-msgstr "päivä(ä)"
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-msgid "end of appointment"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "for"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-msgid "hour(s)"
-msgstr "tunti(a)"
-
-#: calendar/gui/event-editor-dialog.glade.h:40 mail/mail-config.glade.h:77
-msgid "minute(s)"
-msgstr "minuutti"
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "month(s)"
-msgstr "kuukautta"
-
-#: calendar/gui/event-editor-dialog.glade.h:42
-msgid "start of appointment"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-msgid "until"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "week(s)"
-msgstr "viikkoa"
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "year(s)"
-msgstr "vuotta"
-
-#: calendar/gui/e-week-view.c:3278 calendar/gui/e-week-view.c:3301
-msgid "New Appointment..."
-msgstr "Uusi tapaaminen..."
-
-#: calendar/gui/e-week-view.c:3314
-msgid "Delete All Occurrences"
-msgstr ""
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:342
-msgid "%d %B"
-msgstr "%d %B"
-
-#: calendar/gui/gnome-cal.c:234
-msgid "Summary contains"
-msgstr "Yhteenveto sisältää"
-
-#: calendar/gui/gnome-cal.c:235
-msgid "Description contains"
-msgstr "Kuvaus sisältää"
-
-#: calendar/gui/gnome-cal.c:236
-msgid "Comment contains"
-msgstr "Kommentti sisältää"
-
-#: calendar/gui/gnome-cal.c:237
-msgid "Has category"
-msgstr "Sisältää ryhmän"
-
-#: calendar/gui/gnome-cal.c:840
-#, c-format
-msgid "Could not open the folder in `%s'"
-msgstr ""
-
-#: calendar/gui/gnome-cal.c:851
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-msgid "Evolution calendar executive summary component."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-msgid "Factory for the Calendar Summary component."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-msgid "Factory for the Evolution calendar component."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-msgid "Factory for the calendar iTip view control"
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-msgid "Factory for the sample Calendar control"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:1
-msgid "April"
-msgstr "Huhtikuu"
-
-#: calendar/gui/goto-dialog.glade.h:2
-msgid "August"
-msgstr "Elokuu"
-
-#: calendar/gui/goto-dialog.glade.h:3
-msgid "December"
-msgstr "Joulukuu"
-
-#: calendar/gui/goto-dialog.glade.h:4
-msgid "February"
-msgstr "Helmikuu"
-
-#: calendar/gui/goto-dialog.glade.h:5
-msgid "Go To Date"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:6
-msgid "Go To Today"
-msgstr "Siirry tähän päivään"
-
-#: calendar/gui/goto-dialog.glade.h:7
-msgid "January"
-msgstr "Tammikuu"
-
-#: calendar/gui/goto-dialog.glade.h:8
-msgid "July"
-msgstr "Heinäkuu"
-
-#: calendar/gui/goto-dialog.glade.h:9
-msgid "June"
-msgstr "Kesäkuu"
-
-#: calendar/gui/goto-dialog.glade.h:10
-msgid "March"
-msgstr "Maaliskuu"
-
-#: calendar/gui/goto-dialog.glade.h:11
-msgid "May"
-msgstr "Toukokuu"
-
-#: calendar/gui/goto-dialog.glade.h:12
-msgid "November"
-msgstr "Marraskuu"
-
-#: calendar/gui/goto-dialog.glade.h:13
-msgid "October"
-msgstr "Lokakuu"
-
-#: calendar/gui/goto-dialog.glade.h:14
-msgid "September"
-msgstr "Syyskuu"
-
-#: calendar/gui/print.c:300
-msgid "1st"
-msgstr "1."
-
-#: calendar/gui/print.c:300
-msgid "2nd"
-msgstr "2."
-
-#: calendar/gui/print.c:300
-msgid "3rd"
-msgstr "3."
-
-#: calendar/gui/print.c:300
-msgid "4th"
-msgstr "4."
-
-#: calendar/gui/print.c:300
-msgid "5th"
-msgstr "5."
-
-#: calendar/gui/print.c:301
-msgid "6th"
-msgstr "6."
-
-#: calendar/gui/print.c:301
-msgid "7th"
-msgstr "7."
-
-#: calendar/gui/print.c:301
-msgid "8th"
-msgstr "8."
-
-#: calendar/gui/print.c:301
-msgid "9th"
-msgstr "9."
-
-#: calendar/gui/print.c:301
-msgid "10th"
-msgstr "10."
-
-#: calendar/gui/print.c:302
-msgid "11th"
-msgstr "11."
-
-#: calendar/gui/print.c:302
-msgid "12th"
-msgstr "12."
-
-#: calendar/gui/print.c:302
-msgid "13th"
-msgstr "13."
-
-#: calendar/gui/print.c:302
-msgid "14th"
-msgstr "14."
-
-#: calendar/gui/print.c:302
-msgid "15th"
-msgstr "15."
-
-#: calendar/gui/print.c:303
-msgid "16th"
-msgstr "16."
-
-#: calendar/gui/print.c:303
-msgid "17th"
-msgstr "17."
-
-#: calendar/gui/print.c:303
-msgid "18th"
-msgstr "18."
-
-#: calendar/gui/print.c:303
-msgid "19th"
-msgstr "19."
-
-#: calendar/gui/print.c:303
-msgid "20th"
-msgstr "20."
-
-#: calendar/gui/print.c:304
-msgid "21st"
-msgstr "21."
-
-#: calendar/gui/print.c:304
-msgid "22nd"
-msgstr "22."
-
-#: calendar/gui/print.c:304
-msgid "23rd"
-msgstr "23."
-
-#: calendar/gui/print.c:304
-msgid "24th"
-msgstr "24."
-
-#: calendar/gui/print.c:304
-msgid "25th"
-msgstr "25."
-
-#: calendar/gui/print.c:305
-msgid "26th"
-msgstr "26."
-
-#: calendar/gui/print.c:305
-msgid "27th"
-msgstr "27."
-
-#: calendar/gui/print.c:305
-msgid "28th"
-msgstr "28."
-
-#: calendar/gui/print.c:305
-msgid "29th"
-msgstr "29."
-
-#: calendar/gui/print.c:305
-msgid "30th"
-msgstr "30."
-
-#: calendar/gui/print.c:306
-msgid "31st"
-msgstr "31."
-
-#: calendar/gui/print.c:362
-msgid "Su"
-msgstr "Su"
-
-#: calendar/gui/print.c:362
-msgid "Mo"
-msgstr "Ma"
-
-#: calendar/gui/print.c:362
-msgid "Tu"
-msgstr "Ti"
-
-#: calendar/gui/print.c:362
-msgid "We"
-msgstr "Ke"
-
-#: calendar/gui/print.c:362
-msgid "Th"
-msgstr "To"
-
-#: calendar/gui/print.c:362
-msgid "Fr"
-msgstr "Pe"
-
-#: calendar/gui/print.c:362
-msgid "Sa"
-msgstr "La"
-
-#. Day
-#: calendar/gui/print.c:1078
-msgid "Current day (%a %b %d %Y)"
-msgstr ""
-
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1096
-msgid "%a %b %d"
-msgstr "%a %b %d"
-
-#: calendar/gui/print.c:1093
-msgid "%a %d %Y"
-msgstr "%a %d %Y"
-
-#: calendar/gui/print.c:1104
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr ""
-
-#. Month
-#: calendar/gui/print.c:1112
-msgid "Current month (%b %Y)"
-msgstr ""
-
-#. Year
-#: calendar/gui/print.c:1119
-msgid "Current year (%Y)"
-msgstr ""
-
-#: calendar/gui/print.c:1156
-msgid "Print Calendar"
-msgstr "Tulosta kalenteri"
-
-#: calendar/gui/print.c:1321 mail/mail-callbacks.c:1524
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:24
-#: ui/evolution-mail.xml.h:57
-msgid "Print Preview"
-msgstr "Tulostuksen esikatselu"
-
-#: calendar/gui/tasks-control.c:108
-msgid "The URI of the tasks folder to display"
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-
-#: calendar/gui/weekday-picker.c:315 calendar/gui/weekday-picker.c:410
-msgid "SMTWTFS"
-msgstr "SMTKTPL"
-
-#: camel/camel-cipher-context.c:169
-msgid "Signing is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-cipher-context.c:209
-msgid "Clearsigning is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-cipher-context.c:249
-msgid "Verifying is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-cipher-context.c:292
-msgid "Encryption is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-cipher-context.c:334
-msgid "Decryption is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-filter-driver.c:534 camel/camel-filter-driver.c:543
-msgid "Syncing folders"
-msgstr "Synkronoidaan kansiota"
-
-#: camel/camel-filter-driver.c:643
-msgid "Unable to open spool folder"
-msgstr ""
-
-#: camel/camel-filter-driver.c:652
-msgid "Unable to process spool folder"
-msgstr ""
-
-#: camel/camel-filter-driver.c:666
-msgid "Getting message %d (%d%%)"
-msgstr "Haetaan viestiä %d (%d%%)"
-
-#: camel/camel-filter-driver.c:670 camel/camel-filter-driver.c:679
-#, c-format
-msgid "Failed message %d"
-msgstr ""
-
-#: camel/camel-filter-driver.c:671
-msgid "Cannot open message"
-msgstr "Viestiä ei voida avata"
-
-#: camel/camel-filter-driver.c:690 camel/camel-filter-driver.c:788
-msgid "Syncing folder"
-msgstr "Synkronoidaan kansiota"
-
-#: camel/camel-filter-driver.c:694 camel/camel-filter-driver.c:793
-msgid "Complete"
-msgstr "Valmis"
-
-#: camel/camel-filter-driver.c:748
-#, c-format
-msgid "Getting message %d of %d"
-msgstr "Haetaan viestiä %d / %d"
-
-#: camel/camel-filter-driver.c:753 camel/camel-filter-driver.c:771
-#, c-format
-msgid "Failed at message %d of %d"
-msgstr ""
-
-#: camel/camel-filter-driver.c:866
-#, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr "Virhe jäsennettäessä suodatinta: %s: %s"
-
-#: camel/camel-filter-driver.c:871
-#, c-format
-msgid "Error executing filter: %s: %s"
-msgstr "Virhe suoritettaessa suodatinta: %s: %s"
-
-#: camel/camel-filter-search.c:439 camel/camel-filter-search.c:445
-#, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr ""
-
-#: camel/camel-folder-search.c:328
-#, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-folder-search.c:338
-#, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-folder-search.c:485 camel/camel-folder-search.c:513
-msgid "(match-all) requires a single bool result"
-msgstr ""
-
-#: camel/camel-folder-search.c:559
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr ""
-
-#: camel/camel-folder-search.c:670 camel/camel-folder-search.c:714
-msgid "Invalid type in body-contains, expecting string"
-msgstr ""
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:92 camel/camel-lock.c:111 camel/camel-movemail.c:138
-#: camel/camel-movemail.c:185
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr ""
-
-#: camel/camel-lock.c:151 camel/camel-movemail.c:219
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr ""
-
-#: camel/camel-lock.c:201
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr ""
-
-#: camel/camel-lock.c:255
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr ""
-
-#: camel/camel-movemail.c:101
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:148
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:158
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:199
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:245
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr "VIrhe luettaessa viestitiedostoa: %s"
-
-#: camel/camel-movemail.c:256
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr "Virhe kirjoitettaessa väliaikaista viestitiedostoa: %s"
-
-#: camel/camel-movemail.c:274
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr "Viestin tallentaminen väliaikaistiedostoon %s epäonnistui: %s"
-
-#: camel/camel-movemail.c:306
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr "Putken luonti epäonnistui: %s"
-
-#: camel/camel-movemail.c:318
-#, c-format
-msgid "Could not fork: %s"
-msgstr "Haaroitus epäonnistui: %s"
-
-#: camel/camel-movemail.c:356
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:357
-msgid "(Unknown error)"
-msgstr "(tuntematon virhe)"
-
-#: camel/camel-movemail.c:587
-#, c-format
-msgid "Error copying mail temp file: %s"
-msgstr "Virhe kopioitaessa viestin väliaikaistiedostoa: %s"
-
-#: camel/camel-pgp-context.c:188
-#, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr ""
-
-#: camel/camel-pgp-context.c:191
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr ""
-
-#: camel/camel-pgp-context.c:509
-msgid "No plaintext to sign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:516 camel/camel-pgp-context.c:688
-#: camel/camel-pgp-context.c:1055 camel/camel-pgp-context.c:1267
-msgid "No password provided."
-msgstr "Ei annettu salasanaa."
-
-#: camel/camel-pgp-context.c:522 camel/camel-pgp-context.c:694
-#: camel/camel-pgp-context.c:877 camel/camel-pgp-context.c:1062
-#: camel/camel-pgp-context.c:1274
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr "Putken luominen GPG/PGP:lle epäonnistui: %s"
-
-#: camel/camel-pgp-context.c:681
-msgid "No plaintext to clearsign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:871
-msgid "No plaintext to verify."
-msgstr ""
-
-#: camel/camel-pgp-context.c:888
-#, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "Väliaikaistiedostoa ei voitu luoda: %s"
-
-#: camel/camel-pgp-context.c:1045
-msgid "No plaintext to encrypt."
-msgstr "Ei puhdasta tekstiä salattavaksi."
-
-#: camel/camel-pgp-context.c:1071
-msgid "No recipients specified"
-msgstr "Vastaanottajia ei ole määritelty"
-
-#: camel/camel-pgp-context.c:1259
-msgid "No ciphertext to decrypt."
-msgstr ""
-
-#: camel/camel-provider.c:131
-#, c-format
-msgid "Could not load %s: Module loading not supported on this system."
-msgstr ""
-"Moduulin %s lataaminen epäonnistui: Järjestelmäsi ei tue moduulien "
-"lataamista."
-
-#: camel/camel-provider.c:140
-#, c-format
-msgid "Could not load %s: %s"
-msgstr ""
-
-#: camel/camel-provider.c:148
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr ""
-
-#: camel/camel-remote-store.c:191
-#, c-format
-msgid "%s server %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:195
-#, c-format
-msgid "%s service for %s on %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:252
-msgid "Connection cancelled"
-msgstr "Yhteys peruutettu"
-
-#: camel/camel-remote-store.c:255
-#: camel/providers/smtp/camel-smtp-transport.c:269
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:256
-msgid "(unknown host)"
-msgstr ""
-
-#: camel/camel-remote-store.c:337 camel/camel-remote-store.c:399
-#: camel/camel-remote-store.c:470
-#: camel/providers/imap/camel-imap-command.c:287
-msgid "Operation cancelled"
-msgstr ""
-
-#: camel/camel-remote-store.c:476
-msgid "Server unexpectedly disconnected"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:33
-msgid "Anonymous"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:35
-msgid "This option will connect to the server using an anonymous login."
-msgstr "Tämä valitsin kirjautuu palvelimelle anonyymisti."
-
-#: camel/camel-sasl-anonymous.c:110 camel/camel-sasl-plain.c:87
-msgid "Authentication failed."
-msgstr "Todennus epäonnistui."
-
-#: camel/camel-sasl-anonymous.c:119
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:131
-#, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:143
-#, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-cram-md5.c:35
-msgid "CRAM-MD5"
-msgstr "CRAM-MD5"
-
-#: camel/camel-sasl-cram-md5.c:37
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:43
-msgid "DIGEST-MD5"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:45
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:810
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:819
-msgid "Server challenge invalid\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:825
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:847
-msgid "Server response did not contain authorization data\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:865
-msgid "Server response contained incomplete authorization data\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:875
-msgid "Server response does not match\n"
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "Kerberos 4"
-msgstr "Kerberos 4"
-
-#: camel/camel-sasl-kerberos4.c:42
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:161
-#, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:218
-#: camel/providers/imap/camel-imap-store.c:431
-msgid "Bad authentication response from server."
-msgstr ""
-
-#: camel/camel-sasl-login.c:32
-msgid "NT Login"
-msgstr ""
-
-#: camel/camel-sasl-login.c:34 camel/camel-sasl-plain.c:34
-msgid "This option will connect to the server using a simple password."
-msgstr "Tämä valitsin yhdistää palvelimeen yksinkertaista salasanaa käyttäen."
-
-#: camel/camel-sasl-login.c:127
-msgid "Unknown authentication state."
-msgstr "Tuntematon todennustila."
-
-#: camel/camel-search-private.c:111
-#, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr ""
-
-#: camel/camel-service.c:154
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr ""
-
-#: camel/camel-service.c:162
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr ""
-
-#: camel/camel-service.c:170
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr ""
-
-#: camel/camel-service.c:548
-#, c-format
-msgid "Resolving: %s"
-msgstr ""
-
-#: camel/camel-service.c:575
-#, c-format
-msgid "Failure in name lookup: %s"
-msgstr ""
-
-#: camel/camel-service.c:600
-#, c-format
-msgid "Host lookup failed: %s: host not found"
-msgstr ""
-
-#: camel/camel-service.c:602
-#, c-format
-msgid "Host lookup failed: %s: unknown reason"
-msgstr ""
-
-#: camel/camel-session.c:68
-msgid "Virtual folder email provider"
-msgstr ""
-
-#: camel/camel-session.c:70
-msgid "For reading mail as a query of another set of folders"
-msgstr ""
-
-#: camel/camel-session.c:294 camel/camel-session.c:363
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr ""
-
-#: camel/camel-session.c:478
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"Hakemistoa %s ei voitu luoda:\n"
-"%s"
-
-#. Fill in the new fields
-#: camel/camel-store.c:378 mail/mail-ops.c:1007 mail/mail-ops.c:1014
-#: mail/mail-ops.c:1032 mail/mail-ops.c:1033
-msgid "Trash"
-msgstr "Roskakori"
-
-#: camel/camel-tcp-stream-ssl.c:348
-#, c-format
-msgid ""
-"EMail: %s\n"
-"Common Name: %s\n"
-"Organization Unit: %s\n"
-"Organization: %s\n"
-"Locality: %s\n"
-"State: %s\n"
-"Country: %s"
-msgstr ""
-
-#. construct our user prompt
-#: camel/camel-tcp-stream-ssl.c:364
-#, c-format
-msgid ""
-"Bad certificate from %s:\n"
-"\n"
-"%s\n"
-"\n"
-"Do you wish to accept anyway?"
-msgstr ""
-
-#: camel/camel-url.c:289
-#, c-format
-msgid "Could not parse URL `%s'"
-msgstr "URL:n `%s' jäsentäminen epäonnistui"
-
-#: camel/camel-vee-folder.c:451
-#, c-format
-msgid "No such message %s in %s"
-msgstr ""
-
-#: camel/camel-vee-folder.c:546
-#, c-format
-msgid "No such message: %s"
-msgstr "Ei kyseistä viestiä: %s"
-
-#: camel/camel-vtrash-folder.c:109
-msgid "You cannot copy messages from this trash folder."
-msgstr "Et voi kopioida viestejä tästä roskakorista."
-
-#: camel/providers/imap/camel-imap-message-cache.c:150
-#, c-format
-msgid "Could not open cache directory: %s"
-msgstr "Välimuistihakemistoa ei voitu avata: %s"
-
-#: camel/providers/imap/camel-imap-command.c:232
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "Odottamaton vastaus IMAP-palvelimelta: %s"
-
-#: camel/providers/imap/camel-imap-command.c:240
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr "IMAP-komento epäonnistui: %s"
-
-#: camel/providers/imap/camel-imap-command.c:241 shell/e-storage.c:481
-msgid "Unknown error"
-msgstr "Tuntematon virhe"
-
-#: camel/providers/imap/camel-imap-command.c:295
-msgid "Server response ended too soon."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:487
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:524
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr "Odottamaton OK-vastaus IMAP-palvelimelta: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:170
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr "Hakemistoa %s ei voitu luoda: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:189
-#, c-format
-msgid "Could not load summary for %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-folder.c:362
-msgid "Scanning IMAP folder"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-folder.c:1043
-#: camel/providers/imap/camel-imap-folder.c:1265
-msgid "This message is not currently available"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-folder.c:1071
-#: camel/providers/imap/camel-imap-folder.c:1298
-msgid "Could not find message body in FETCH response."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:43 mail/mail-config.glade.h:11
-msgid "Checking for new mail"
-msgstr "Tarkastetaan onko uutta sähköpostia"
-
-#: camel/providers/imap/camel-imap-provider.c:45
-msgid "Check for new messages in all folders"
-msgstr "Etsi uusia viestejä kaikista kansioista"
-
-#: camel/providers/imap/camel-imap-provider.c:48 shell/e-shell-view.c:551
-msgid "Folders"
-msgstr "Kansiot"
-
-#: camel/providers/imap/camel-imap-provider.c:50
-msgid "Show only subscribed folders"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:52
-msgid "Override server-supplied folder namespace"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:54
-msgid "Namespace"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:57
-msgid "Apply filters to new messages in INBOX on this server"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:63
-msgid "IMAPv4"
-msgstr "IMAPv4"
-
-#: camel/providers/imap/camel-imap-provider.c:65
-msgid "For reading and storing mail on IMAP servers."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:82
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr "Ota yhteys IMAP-palvelimeen tekstimuotoista salasanaa käyttäen."
-
-#: camel/providers/imap/camel-imap-store.c:454
-#, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:464
-#: camel/providers/smtp/camel-smtp-transport.c:366
-#, c-format
-msgid "No support for authentication type %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:488
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:503
-#: camel/providers/smtp/camel-smtp-transport.c:410
-msgid "You didn't enter a password."
-msgstr "Et antanut salasanaa."
-
-#: camel/providers/imap/camel-imap-store.c:529
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:788 mail/mail-local.c:337
-#, c-format
-msgid "No such folder %s"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:39
-msgid "MH-format mail directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:40
-msgid "For storing local mail in MH-like mail directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:49
-msgid "Standard Unix mailbox file"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:50
-msgid "For storing local mail in standard mbox format"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "Qmail maildir-format mail files"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:60
-msgid "For storing local mail in qmail maildir directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:127
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:134
-#, c-format
-msgid "Store root %s is not a regular directory"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:142
-#: camel/providers/local/camel-local-store.c:158
-#, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "Kansion hakeminen ei onnistu: %s: %s"
-
-#: camel/providers/local/camel-local-store.c:173
-msgid "Local stores do not have an inbox"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:183
-#, c-format
-msgid "Local mail file %s"
-msgstr "Paikallinen viestitiedosto %s"
-
-#: camel/providers/local/camel-local-store.c:237
-#, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr "Hakemistoa %s ei voitu uudelleennimetä seuraavaksi: %s: %s"
-
-#: camel/providers/local/camel-local-store.c:279
-#, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:289
-#, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr ""
-
-#: camel/providers/local/camel-local-summary.c:404
-msgid "Unable to add message to summary: unknown reason"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-folder.c:150
-#: camel/providers/local/camel-maildir-folder.c:158
-#: camel/providers/local/camel-maildir-folder.c:169
-#, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-maildir-folder.c:209
-#: camel/providers/local/camel-maildir-folder.c:217
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#: camel/providers/local/camel-mh-folder.c:194
-#: camel/providers/local/camel-mh-folder.c:202
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-msgid "No such message"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-folder.c:218
-#: camel/providers/local/camel-mh-folder.c:203
-msgid "Invalid message contents"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:96
-#: camel/providers/local/camel-mh-store.c:90
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:100
-#: camel/providers/local/camel-mbox-store.c:101
-#: camel/providers/local/camel-mh-store.c:97
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr "Kansiota `%s' ei ole olemassa."
-
-#: camel/providers/local/camel-maildir-store.c:107
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:122
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:151
-#: camel/providers/local/camel-maildir-store.c:188
-#: camel/providers/local/camel-mh-store.c:127
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr "Kansion `%s' poistaminen epäonnistui: %s"
-
-#: camel/providers/local/camel-maildir-store.c:152
-msgid "not a maildir directory"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-summary.c:405
-#: camel/providers/local/camel-maildir-summary.c:526
-#, c-format
-msgid "Cannot open maildir directory path: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:152
-#, c-format
-msgid "Cannot create folder lock on %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:203
-#, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:259
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:335
-#: camel/providers/local/camel-mbox-folder.c:367
-#: camel/providers/local/camel-mbox-folder.c:380
-#, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-"Viestin %s hakeminen kansiosta %s epäonnistui\n"
-" %s"
-
-#: camel/providers/local/camel-mbox-folder.c:368
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:381
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:94
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:110
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:119
-#: camel/providers/local/camel-mbox-store.c:146
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr "`%s' ei ole tavallinen tiedosto."
-
-#: camel/providers/local/camel-mbox-store.c:138
-#: camel/providers/local/camel-mbox-store.c:161
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr ""
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:249
-msgid "Summarising folder"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:254
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:296
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:371
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:502
-#: camel/providers/local/camel-mbox-summary.c:703 mail/mail-ops.c:1397
-msgid "Synchronising folder"
-msgstr "Synkronoidaan kansiota"
-
-#: camel/providers/local/camel-mbox-summary.c:507
-#: camel/providers/local/camel-mbox-summary.c:708
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:524
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:549
-#: camel/providers/local/camel-mbox-summary.c:557
-#: camel/providers/local/camel-mbox-summary.c:746
-#: camel/providers/local/camel-mbox-summary.c:754
-msgid "Summary and folder mismatch, even after a sync"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:600
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:617
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:635
-#: camel/providers/local/camel-mbox-summary.c:804
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:644
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:655
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:879
-#, c-format
-msgid "Unknown error: %s"
-msgstr "Tuntematon virhe: %s"
-
-#: camel/providers/local/camel-mh-folder.c:149
-#: camel/providers/local/camel-mh-folder.c:157
-#, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mh-store.c:110
-#, c-format
-msgid "`%s' is not a directory."
-msgstr "`%s' ei ole hakemisto."
-
-#: camel/providers/local/camel-mh-summary.c:218
-#, c-format
-msgid "Cannot open MH directory path: %s: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:45
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:66
-msgid "Server rejected username"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:72
-msgid "Failed to send username to server"
-msgstr "Käyttäjätunnuksen lähetys palvelimelle epäonnistui"
-
-#: camel/providers/nntp/camel-nntp-auth.c:81
-msgid "Server rejected username/password"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr "Ei saatu ryhmäluetteloa palvelimelta."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-provider.c:42
-msgid "USENET news"
-msgstr "Keskusteluryhmät"
-
-#: camel/providers/nntp/camel-nntp-provider.c:44
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:224
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:286
-#, c-format
-msgid "USENET News via %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:293
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:325
-#: camel/providers/nntp/camel-nntp-store.c:488
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-msgid "Retrieving POP summary"
-msgstr "Haetaan POP-yhteenvetoa"
-
-#: camel/providers/pop3/camel-pop3-folder.c:155
-#, c-format
-msgid "Could not check POP server for new messages: %s"
-msgstr "Uusien viestien haku POP-palvelimelta epäonnistui: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:199
-msgid "Could not open folder: message listing was incomplete."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:292
-#, c-format
-msgid "No message with uid %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:296
-#, c-format
-msgid "Retrieving POP message %d"
-msgstr "Haetaan POP-viestiä %d"
-
-#: camel/providers/pop3/camel-pop3-folder.c:303
-#, c-format
-msgid "Could not fetch message: %s"
-msgstr "Viestin hakeminen epäonnistui: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:320
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr "Viestiä ei saatu POP-palvelimelta %s: %s"
-
-#: camel/providers/pop3/camel-pop3-provider.c:37
-msgid "Message storage"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:39
-msgid "Leave messages on server"
-msgstr "Jätä viestit palvelimelle"
-
-#: camel/providers/pop3/camel-pop3-provider.c:41
-#, c-format
-msgid "Delete after %s day(s)"
-msgstr "Poista %s:n päivän kuluttua"
-
-#: camel/providers/pop3/camel-pop3-provider.c:48 mail/mail-config.glade.h:42
-msgid "POP"
-msgstr "POP"
-
-#: camel/providers/pop3/camel-pop3-provider.c:50
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:79
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:91
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:199
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:215
-#, c-format
-msgid "Could not connect to server: %s"
-msgstr "Yhdistäminen palvelimeen epäonnistui: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:322
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:361
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:379
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:382
-#: camel/providers/pop3/camel-pop3-store.c:419
-msgid "(Unknown)"
-msgstr "(tuntematon)"
-
-#: camel/providers/pop3/camel-pop3-store.c:409
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:417
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:484
-#, c-format
-msgid "No such folder `%s'."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:37
-#: mail/mail-config.glade.h:57
-msgid "Sendmail"
-msgstr "Sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:39
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:107
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:124
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:150
-#, c-format
-msgid "Could not send message: %s"
-msgstr "Viestin lähettäminen epäonnistui: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:163
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:170
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:175
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:194
-msgid "Could not find 'From' address in message"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "sendmail"
-msgstr "sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:249
-msgid "Mail delivery via the sendmail program"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-provider.c:38 mail/mail-config.glade.h:52
-msgid "SMTP"
-msgstr "SMTP"
-
-#: camel/providers/smtp/camel-smtp-provider.c:40
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:168
-msgid "Syntax error, command unrecognized"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:170
-msgid "Syntax error in parameters or arguments"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:172
-msgid "Command not implemented"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:174
-msgid "Command parameter not implemented"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:176
-msgid "System status, or system help reply"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:178
-msgid "Help message"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:180
-msgid "Service ready"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:182
-msgid "Service closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:184
-msgid "Service not available, closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:186
-msgid "Requested mail action okay, completed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:188
-msgid "User not local; will forward to <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:190
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:192
-msgid "Requested action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:194
-msgid "Requested action aborted: error in processing"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:196
-msgid "User not local; please try <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:198
-msgid "Requested action not taken: insufficient system storage"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:200
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:202
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:204
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:206
-msgid "Transaction failed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:210
-msgid "A password transition is needed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:212
-msgid "Authentication mechanism is too weak"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:214
-msgid "Encryption required for requested authentication mechanism"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:216
-msgid "Temporary authentication failure"
-msgstr "Väliaikainen todennusvirhe"
-
-#: camel/providers/smtp/camel-smtp-transport.c:218
-msgid "Authentication required"
-msgstr "Todennus vaaditaan"
-
-#: camel/providers/smtp/camel-smtp-transport.c:313
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:356
-#, c-format
-msgid "SMTP server %s does not support requested authentication type %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:395
-#, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:418
-#, c-format
-msgid ""
-"Unable to authenticate to SMTP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:534
-#, c-format
-msgid "SMTP server %s"
-msgstr "SMTP-palvelin %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:536
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:561
-msgid "Cannot send message: sender address not defined."
-msgstr "Viestiä ei voida lähettää: lähettäjän osoitetta ei ole määritelty."
-
-#: camel/providers/smtp/camel-smtp-transport.c:568
-msgid "Cannot send message: sender address not valid."
-msgstr "Viestiä ei voida lähettää: lähettäjän osoite on epäkelpo."
-
-#: camel/providers/smtp/camel-smtp-transport.c:582
-msgid "Cannot send message: no recipients defined."
-msgstr "Viestiä ei voida lähettää: vastaanottajia ei ole määritelty."
-
-#: camel/providers/smtp/camel-smtp-transport.c:676
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:695
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:728
-msgid "Error creating SASL authentication object."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:743
-#: camel/providers/smtp/camel-smtp-transport.c:755
-#, c-format
-msgid "AUTH request timed out: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:805
-msgid "Bad authentication response from server.\n"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:831
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:850
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:875
-#, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:894
-#, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:925
-#, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:944
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:959
-#: camel/providers/smtp/camel-smtp-transport.c:977
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:996
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1020
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1039
-#, c-format
-msgid "RSET response error: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1062
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1081
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:95
-msgid "1 byte"
-msgstr "1 tavy"
-
-#: composer/e-msg-composer-attachment-bar.c:97
-#, c-format
-msgid "%u bytes"
-msgstr "%u tavua"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fK"
-
-#: composer/e-msg-composer-attachment-bar.c:108
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fM"
-
-#: composer/e-msg-composer-attachment-bar.c:112
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fG"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:332 mail/mail-display.c:120
-msgid "attachment"
-msgstr "liite"
-
-#: composer/e-msg-composer-attachment-bar.c:421
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr "Liitä tiedosto"
-
-#: composer/e-msg-composer-attachment-bar.c:469
-msgid "Remove selected items from the attachment list"
-msgstr "Poista seuraavat tiedostot liiteluettelosta"
-
-#: composer/e-msg-composer-attachment-bar.c:500
-msgid "Add attachment..."
-msgstr "Lisää liite..."
-
-#: composer/e-msg-composer-attachment-bar.c:501
-msgid "Attach a file to the message"
-msgstr "Lisää viestiin liitetiedoston"
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/message-list.c:1086
-msgid "Attachment"
-msgstr "Liite"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr "Liitteen ominaisuudet"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr "Tiedostonimi:"
-
-#: composer/e-msg-composer-attachment.glade.h:5
-msgid "Inline attachment"
-msgstr ""
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr "MIME-tyyppi:"
-
-#: composer/e-msg-composer-attachment.glade.h:7
-msgid "Send as:"
-msgstr ""
-
-#: composer/e-msg-composer.c:529
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-
-#: composer/e-msg-composer.c:702
-msgid "Save as..."
-msgstr "Tallenna nimellä..."
-
-#: composer/e-msg-composer.c:713
-#, c-format
-msgid "Error saving file: %s"
-msgstr "Virhe tallennettaessa tiedostoa: %s"
-
-#: composer/e-msg-composer.c:733
-#, c-format
-msgid "Error loading file: %s"
-msgstr "Virhe avattaessa tiedostoa: %s"
-
-#: composer/e-msg-composer.c:805
-msgid ""
-"Unable to open the drafts folder for this account.\n"
-"Would you like to use the default drafts folder?"
-msgstr ""
-
-#: composer/e-msg-composer.c:863 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:206
-msgid "Evolution"
-msgstr "Evolution"
-
-#: composer/e-msg-composer.c:869
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-"Tätä viestiä ei ole lähetetty.\n"
-"\n"
-"Haluatko tallentaa muutokset?"
-
-#: composer/e-msg-composer.c:894
-msgid "Open file"
-msgstr "Avaa tiedosto"
-
-#: composer/e-msg-composer.c:1020
-msgid "That file does not exist."
-msgstr "Tiedostoa ei ole olemassa."
-
-#: composer/e-msg-composer.c:1030
-msgid "That is not a regular file."
-msgstr "Se ei ole tavallinen tiedosto."
-
-#: composer/e-msg-composer.c:1040
-msgid "That file exists but is not readable."
-msgstr "Tiedosto on olemassa, muttei lukukelpoinen."
-
-#: composer/e-msg-composer.c:1050
-msgid "That file appeared accesible but open(2) failed."
-msgstr "Tiedosto vaikutti avattavalta, mutta avaaminen epäonnistui."
-
-#: composer/e-msg-composer.c:1072
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-"Tiedosto on hyvin suuri (yli 100K).\n"
-"Haluatko varmasti liittää sen?"
-
-#: composer/e-msg-composer.c:1093
-msgid "An error occurred while reading the file."
-msgstr "Virhe luettaessa tiedostoa."
-
-#: composer/e-msg-composer.c:1394 composer/e-msg-composer.c:1737
-msgid "Compose a message"
-msgstr "Kirjoita viesti"
-
-#: composer/e-msg-composer.c:1828
-msgid "Could not create composer window."
-msgstr ""
-
-#: composer/e-msg-composer-hdrs.c:323
-msgid "Click here for the address book"
-msgstr ""
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:354 mail/mail-format.c:744
-msgid "From:"
-msgstr "Lähettäjä:"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:360 mail/mail-format.c:746
-msgid "Reply-To:"
-msgstr "Vastausosoite:"
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:371 mail/mail-format.c:643
-msgid "Subject:"
-msgstr "Aihe:"
-
-#: composer/e-msg-composer-hdrs.c:385 mail/mail-format.c:748
-msgid "To:"
-msgstr "Vastaanottaja:"
-
-#: composer/e-msg-composer-hdrs.c:386
-msgid "Enter the recipients of the message"
-msgstr ""
-
-#: composer/e-msg-composer-hdrs.c:389 mail/mail-format.c:750
-msgid "Cc:"
-msgstr "Kopiot:"
-
-#: composer/e-msg-composer-hdrs.c:390
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "Anna osoitteet joihin lähetetään kopio viestistä (Cc)"
-
-#: composer/e-msg-composer-hdrs.c:393
-msgid "Bcc:"
-msgstr "Piilokopiot:"
-
-#: composer/e-msg-composer-hdrs.c:394
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"Anna osoitteet joihin lähetetään kopiot viestistä ilman että muut "
-"vastaanottajat näkisivät tätä (Bcc)"
-
-#: composer/evolution-composer.c:355
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-
-#: composer/evolution-composer.c:370
-msgid "Cannot initialize Evolution's composer."
-msgstr ""
-
-#: data/evolution.desktop.in.h:2
-msgid "The Evolution groupware suite"
-msgstr ""
-
-#: data/evolution.keys.in.h:1
-msgid "address card"
-msgstr ""
-
-#: data/evolution.keys.in.h:2
-msgid "calendar information"
-msgstr ""
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:69 e-util/e-time-utils.c:117
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:477
-#: widgets/misc/e-dateedit.c:1284 widgets/misc/e-dateedit.c:1465
-msgid "%m/%d/%Y"
-msgstr "%d/%m/%Y"
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:87 e-util/e-time-utils.c:198
-msgid "%I:%M:%S %p%n"
-msgstr "%I:%M:%S %p%n"
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:90 e-util/e-time-utils.c:201
-msgid "%H:%M:%S%n"
-msgstr "%H:%M:%S%n"
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:94 e-util/e-time-utils.c:205
-msgid "%I:%M %p%n"
-msgstr "%I:%M %p%n"
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:97 e-util/e-time-utils.c:208
-msgid "%H:%M%n"
-msgstr "%H:%M%n"
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:269
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:473
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2505
-msgid "%a %m/%d/%Y"
-msgstr "%a %d/%m/%Y"
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:274
-msgid "%a %m/%d/%Y %H:%M"
-msgstr "%a %d/%m/%Y %H:%M"
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:283
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr "%a %d/%m/%Y %I:%M %p"
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:312 widgets/misc/e-dateedit.c:1259
-#: widgets/misc/e-dateedit.c:1318 widgets/misc/e-dateedit.c:1497
-msgid "%H:%M"
-msgstr "%H:%M"
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:315
-msgid "%H:%M:%S"
-msgstr "%H:%M:%S"
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:320 widgets/misc/e-dateedit.c:1262
-#: widgets/misc/e-dateedit.c:1321 widgets/misc/e-dateedit.c:1500
-msgid "%I:%M %p"
-msgstr "%I:%M %p"
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:323
-msgid "%I:%M:%S %p"
-msgstr "%I:%M:%S %p"
-
-#: executive-summary/component/component-factory.c:152
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr ""
-
-#: executive-summary/component/e-summary.c:926
-#, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"HTML-tiedostoa ei voitu avata:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:940
-#, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr ""
-
-#: executive-summary/component/e-summary.c:958
-msgid "File does not have a place for the services.\n"
-msgstr ""
-
-#: executive-summary/component/e-summary-callbacks.c:126
-msgid "Select a service"
-msgstr "Valitse palvelu"
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:71
-#, c-format
-msgid "Send an email to %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr "Suorita %s"
-
-#: executive-summary/component/e-summary-url.c:75
-#, c-format
-msgid "Close %s"
-msgstr "Sulje %s"
-
-#: executive-summary/component/e-summary-url.c:76
-#, c-format
-msgid "Move %s to the left"
-msgstr "Siirrä %s vasemmalle"
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr "Siirrä %s oikealle"
-
-#: executive-summary/component/e-summary-url.c:78
-#, c-format
-msgid "Move %s into the previous row"
-msgstr "Siirrä %s edelliselle riville"
-
-#: executive-summary/component/e-summary-url.c:79
-#, c-format
-msgid "Move %s into the next row"
-msgstr "Siirrä %s seuraavalle riville"
-
-#: executive-summary/component/e-summary-url.c:80
-#, c-format
-msgid "Configure %s"
-msgstr "Aseta %s"
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr "Ulkonäkö"
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr "Tausta:"
-
-#: executive-summary/component/main.c:62
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-msgid "Evolution component for the executive summary."
-msgstr ""
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-msgid "Factory for the Evolution executive summary component."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-msgid "RDF Summary"
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-msgid "Factory for the test bonobo component."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-msgid "Factory for the test component."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr "Testaa bonobo-palvelua"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr "Testaa palvelua"
-
-#: executive-summary/test-service/rdf-summary.c:512
-#: executive-summary/test-service/rdf-summary.c:549
-#: executive-summary/test-service/rdf-summary.c:594
-#: widgets/misc/e-messagebox.c:166
-msgid "Error"
-msgstr "Virhe"
-
-#: executive-summary/test-service/rdf-summary.c:768
-msgid "Update automatically"
-msgstr "Päivitä automaattisesti"
-
-#: executive-summary/test-service/rdf-summary.c:778
-msgid "Update now"
-msgstr "Päivitä heti"
-
-#: executive-summary/test-service/rdf-summary.c:788
-msgid "Update every "
-msgstr "Päivitä joka"
-
-#: executive-summary/test-service/rdf-summary.c:796
-#: filter/filter-datespec.c:83
-msgid "minutes"
-msgstr "minuutti"
-
-#: filter/filter-datespec.c:78
-msgid "year"
-msgstr "vuosi"
-
-#: filter/filter-datespec.c:78
-msgid "years"
-msgstr "vuotta"
-
-#: filter/filter-datespec.c:79
-msgid "month"
-msgstr "kuukausi"
-
-#: filter/filter-datespec.c:79
-msgid "months"
-msgstr "kuukautta"
-
-#: filter/filter-datespec.c:80
-msgid "week"
-msgstr "viikko"
-
-#: filter/filter-datespec.c:80
-msgid "weeks"
-msgstr "viikkoa"
-
-#: filter/filter-datespec.c:81
-msgid "days"
-msgstr "päivää"
-
-#: filter/filter-datespec.c:82
-msgid "hour"
-msgstr "tunti"
-
-#: filter/filter-datespec.c:82
-msgid "hours"
-msgstr "tuntia"
-
-#: filter/filter-datespec.c:83
-msgid "minute"
-msgstr "minuutti"
-
-#: filter/filter-datespec.c:84
-msgid "second"
-msgstr "sekunti"
-
-#: filter/filter-datespec.c:84
-msgid "seconds"
-msgstr "sekuntia"
-
-#: filter/filter-datespec.c:199
-msgid "Oops. You have forgotten to choose a date."
-msgstr "Hups. Olet unohtanut valita päivän."
-
-#: filter/filter-datespec.c:201
-msgid "Oops. You have chosen an invalid date."
-msgstr "Hups. Olet valinnut epäkelvon päivän."
-
-#: filter/filter-datespec.c:276
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-
-#: filter/filter-datespec.c:299
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-
-#: filter/filter-datespec.c:339
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:374
-msgid "the current time"
-msgstr ""
-
-#: filter/filter-datespec.c:374
-msgid "a time you specify"
-msgstr ""
-
-#: filter/filter-datespec.c:375
-msgid "a time relative to the current time"
-msgstr ""
-
-#. The label
-#: filter/filter-datespec.c:433
-msgid "Compare against"
-msgstr ""
-
-#: filter/filter-datespec.c:550 filter/filter-datespec.c:710
-msgid "now"
-msgstr "nyt"
-
-#: filter/filter-datespec.c:707
-msgid "<click here to select a date>"
-msgstr ""
-
-#: filter/filter-editor.c:132 filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr ""
-
-#. and now for the action area
-#: filter/filter-filter.c:452
-msgid "Then"
-msgstr "Sitten"
-
-#: filter/filter-filter.c:466
-msgid "Add action"
-msgstr "Lisää toiminto"
-
-#: filter/filter-folder.c:147
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-
-#: filter/filter-folder.c:225 filter/vfolder-rule.c:285
-#: mail/mail-account-gui.c:682
-msgid "Select Folder"
-msgstr ""
-
-#: filter/filter-folder.c:250
-msgid "Enter folder URI"
-msgstr ""
-
-#: filter/filter-folder.c:296
-msgid "<click here to select a folder>"
-msgstr ""
-
-#: filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr ""
-
-#: filter/filter.glade.h:5
-msgid "Edit VFolders"
-msgstr ""
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr "Tulevat"
-
-#: filter/filter.glade.h:8
-msgid "Outgoing"
-msgstr "Lähtevät"
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:130
-msgid "Virtual Folders"
-msgstr ""
-
-#: filter/filter.glade.h:11
-msgid "specific folders only"
-msgstr ""
-
-#: filter/filter.glade.h:12
-msgid "vFolder Sources"
-msgstr ""
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr ""
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr ""
-
-#: filter/filter.glade.h:15
-msgid "with all local folders"
-msgstr ""
-
-#: filter/filter-input.c:193
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-
-#: filter/filter-part.c:488
-msgid "Test"
-msgstr ""
-
-#: filter/filter-rule.c:626
-msgid "Rule name: "
-msgstr "Säännön nimi: "
-
-#: filter/filter-rule.c:630
-msgid "Untitled"
-msgstr "Nimetön"
-
-#: filter/filter-rule.c:646
-msgid "If"
-msgstr "Jos"
-
-#: filter/filter-rule.c:664
-msgid "Execute actions"
-msgstr "Suorita toiminnot"
-
-#: filter/filter-rule.c:668
-msgid "if all criteria are met"
-msgstr "kaikki ehdot täytetään"
-
-#: filter/filter-rule.c:673
-msgid "if any criteria are met"
-msgstr "mikään ehdoista täyttyy"
-
-#: filter/filter-rule.c:684
-msgid "Add criterion"
-msgstr "Lisää ehto"
-
-#: filter/filter-rule.c:770
-msgid "incoming"
-msgstr "tulevat"
-
-#: filter/filter-rule.c:770
-msgid "outgoing"
-msgstr "lähtevät"
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Colour"
-msgstr ""
-
-#: filter/libfilter-i18n.h:4
-msgid "Assign Score"
-msgstr ""
-
-#: filter/libfilter-i18n.h:5
-msgid "Attachments"
-msgstr "Liitteet"
-
-#: filter/libfilter-i18n.h:7
-msgid "contains"
-msgstr "sisältää"
-
-#: filter/libfilter-i18n.h:8
-msgid "Copy to Folder"
-msgstr "Kopioi kansioon"
-
-#: filter/libfilter-i18n.h:9
-msgid "Date received"
-msgstr "Otettu vastaan"
-
-#: filter/libfilter-i18n.h:10
-msgid "Date sent"
-msgstr "Lähetetty"
-
-#: filter/libfilter-i18n.h:12
-msgid "Deleted"
-msgstr "Poistettu"
-
-#: filter/libfilter-i18n.h:13
-msgid "does not contain"
-msgstr "ei sisällä"
-
-#: filter/libfilter-i18n.h:14
-msgid "does not end with"
-msgstr "ei lopu merkkijonoon"
-
-#: filter/libfilter-i18n.h:15
-msgid "does not exist"
-msgstr "ei ole olemassa"
-
-#: filter/libfilter-i18n.h:16
-msgid "does not sound like"
-msgstr ""
-
-#: filter/libfilter-i18n.h:17
-msgid "does not start with"
-msgstr "ei ala merkkijonolla"
-
-#: filter/libfilter-i18n.h:18
-msgid "Do Not Exist"
-msgstr ""
-
-#: filter/libfilter-i18n.h:19
-msgid "Draft"
-msgstr "Luonnos"
-
-#: filter/libfilter-i18n.h:20
-msgid "ends with"
-msgstr "loppuu merkkijonoon"
-
-#: filter/libfilter-i18n.h:21
-msgid "Exist"
-msgstr ""
-
-#: filter/libfilter-i18n.h:22
-msgid "exists"
-msgstr ""
-
-#: filter/libfilter-i18n.h:23
-msgid "Expression"
-msgstr ""
-
-#: filter/libfilter-i18n.h:24
-msgid "Forward to Address"
-msgstr "Välitä osoitteeseen"
-
-#: filter/libfilter-i18n.h:25
-msgid "Important"
-msgstr ""
-
-#: filter/libfilter-i18n.h:26
-msgid "is"
-msgstr "on"
-
-#: filter/libfilter-i18n.h:27
-msgid "is greater than"
-msgstr "on suurempi kuin"
-
-#: filter/libfilter-i18n.h:28
-msgid "is less than"
-msgstr "on pienempi kuin"
-
-#: filter/libfilter-i18n.h:29
-msgid "is not"
-msgstr "ei ole"
-
-#: filter/libfilter-i18n.h:30
-msgid "Mailing list"
-msgstr ""
-
-#: filter/libfilter-i18n.h:31
-msgid "Message Body"
-msgstr ""
-
-#: filter/libfilter-i18n.h:32
-msgid "Message Header"
-msgstr "Viestin otsikko"
-
-#: filter/libfilter-i18n.h:33
-msgid "Message was received"
-msgstr "Viesti vastaanotettu"
-
-#: filter/libfilter-i18n.h:34
-msgid "Message was sent"
-msgstr "Viesti lähetetty"
-
-#: filter/libfilter-i18n.h:35
-msgid "Move to Folder"
-msgstr "Siirrä kansioon"
-
-#: filter/libfilter-i18n.h:36
-msgid "on or after"
-msgstr ""
-
-#: filter/libfilter-i18n.h:37
-msgid "on or before"
-msgstr ""
-
-#: filter/libfilter-i18n.h:38
-msgid "Read"
-msgstr "Lue"
-
-#: filter/libfilter-i18n.h:39
-msgid "Recipients"
-msgstr "Vastaanottajat"
-
-#: filter/libfilter-i18n.h:40
-msgid "Regex Match"
-msgstr ""
-
-#: filter/libfilter-i18n.h:41
-msgid "Replied to"
-msgstr ""
-
-#: filter/libfilter-i18n.h:42 filter/score-rule.c:204 filter/score-rule.c:206
-#: mail/message-list.c:1086
-msgid "Score"
-msgstr ""
-
-#: filter/libfilter-i18n.h:43
-msgid "Sender"
-msgstr "Lähettäjä"
-
-#: filter/libfilter-i18n.h:44
-msgid "Set Status"
-msgstr ""
-
-#: filter/libfilter-i18n.h:45
-msgid "sounds like"
-msgstr ""
-
-#: filter/libfilter-i18n.h:46
-msgid "Source Account"
-msgstr ""
-
-#: filter/libfilter-i18n.h:47
-msgid "Specific header"
-msgstr ""
-
-#: filter/libfilter-i18n.h:48
-msgid "starts with"
-msgstr "alkaa merkkijonolla"
-
-#: filter/libfilter-i18n.h:50
-msgid "Stop Processing"
-msgstr ""
-
-#: filter/libfilter-i18n.h:51 mail/message-list.c:1087
-msgid "Subject"
-msgstr "Aihe"
-
-#: filter/libfilter-i18n.h:52
-msgid "was after"
-msgstr ""
-
-#: filter/libfilter-i18n.h:53
-msgid "was before"
-msgstr ""
-
-#: filter/rule-editor.c:147
-msgid "Rules"
-msgstr "Säännöt"
-
-#: filter/rule-editor.c:240
-msgid "Add Rule"
-msgstr "Lisää sääntö"
-
-#: filter/rule-editor.c:299
-msgid "Edit Rule"
-msgstr "Muokkaa sääntöä"
-
-#: filter/score-editor.c:130
-msgid "Score Rules"
-msgstr ""
-
-#: mail/component-factory.c:329
-msgid "Cannot initialize Evolution's mail component."
-msgstr ""
-
-#: mail/component-factory.c:402
-msgid "Cannot register storage with shell"
-msgstr ""
-
-#: mail/folder-browser.c:268
-msgid "Store search as vFolder"
-msgstr ""
-
-#: mail/folder-browser.c:576 ui/evolution-mail.xml.h:91
-msgid "VFolder on _Subject"
-msgstr ""
-
-#: mail/folder-browser.c:579 ui/evolution-mail.xml.h:89
-msgid "VFolder on Se_nder"
-msgstr ""
-
-#: mail/folder-browser.c:582 ui/evolution-mail.xml.h:90
-msgid "VFolder on _Recipients"
-msgstr ""
-
-#: mail/folder-browser.c:585 ui/evolution-mail.xml.h:88
-msgid "VFolder on Mailing _List"
-msgstr ""
-
-#: mail/folder-browser.c:591
-msgid "Filter on Sub_ject"
-msgstr "Suodata a_iheen mukaan"
-
-#: mail/folder-browser.c:594
-msgid "Filter on Sen_der"
-msgstr "Suodata _lähettäjän mukaan"
-
-#: mail/folder-browser.c:597
-msgid "Filter on Re_cipients"
-msgstr "Suodata _vastaanottajien mukaan"
-
-#: mail/folder-browser.c:600
-msgid "Filter on _Mailing List"
-msgstr "Suodata _postituslistan mukaan"
-
-#: mail/folder-browser.c:609
-msgid "_Open"
-msgstr "_Avaa"
-
-#: mail/folder-browser.c:611
-msgid "Resend"
-msgstr "Lähetä uudelleen"
-
-#: mail/folder-browser.c:613 ui/evolution-calendar.xml.h:43
-#: ui/evolution-mail.xml.h:113 ui/evolution-tasks.xml.h:8
-msgid "_Save As..."
-msgstr "Tallenna _nimellä..."
-
-#: mail/folder-browser.c:615 ui/evolution-event-editor.xml.h:69
-#: ui/evolution-task-editor-dialog.xml.h:82 ui/evolution-tasks.xml.h:7
-msgid "_Print"
-msgstr "_Tulosta"
-
-#: mail/folder-browser.c:620
-msgid "_Reply to Sender"
-msgstr "_Vastaa lähettäjälle"
-
-#: mail/folder-browser.c:622 ui/evolution-mail.xml.h:66
-msgid "Reply to _All"
-msgstr "Vastaa _kaikille"
-
-#: mail/folder-browser.c:624 ui/evolution-mail.xml.h:102
-msgid "_Forward"
-msgstr "_Välitä"
-
-#: mail/folder-browser.c:626
-msgid "Forward _inline"
-msgstr ""
-
-#: mail/folder-browser.c:629 ui/evolution-mail.xml.h:40
-msgid "Mar_k as Read"
-msgstr "Merkitse _luetuksi"
-
-#: mail/folder-browser.c:631 ui/evolution-mail.xml.h:44
-msgid "Mark as U_nread"
-msgstr "Merkitse luke_mattomaksi"
-
-#: mail/folder-browser.c:636 ui/evolution-mail.xml.h:107
-msgid "_Move to Folder..."
-msgstr "_Siirrä kansioon..."
-
-#: mail/folder-browser.c:638 ui/evolution-mail.xml.h:96
-msgid "_Copy to Folder..."
-msgstr "_Kopioi kansioon..."
-
-#: mail/folder-browser.c:642 ui/evolution-mail.xml.h:118
-msgid "_Undelete"
-msgstr "_Palauta"
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:652 ui/evolution-mail.xml.h:1
-msgid "Apply Filters"
-msgstr "Toteuta suodattimet"
-
-#: mail/folder-browser.c:656
-msgid "Create Ru_le From Message"
-msgstr "_Luo viestistä sääntö"
-
-#: mail/folder-browser.c:795
-msgid "Filter on Mailing List"
-msgstr "Suodata postituslistan mukaan"
-
-#: mail/folder-browser.c:796
-msgid "VFolder on Mailing List"
-msgstr ""
-
-#: mail/folder-browser.c:798
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr "Suodata postituslistan mukaan (%s)"
-
-#: mail/folder-browser.c:799
-#, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr ""
-
-#: mail/folder-browser-factory.c:213
-#, c-format
-msgid "Properties for \"%s\""
-msgstr ""
-
-#: mail/folder-browser-factory.c:215 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-msgid "Properties"
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-msgid "Evolution mail composer."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-msgid "Evolution mail executive summary component."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-msgid "Evolution mail folder display component."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-msgid "Evolution mail folder factory component."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-msgid "Factory for the Evolution composer."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-msgid "Factory for the Evolution mail component."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-msgid "Factory for the Mail Summary component."
-msgstr ""
-
-#: mail/importers/elm-importer.c:420
-msgid ""
-"Evolution has found Elm mail files.\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-"Evolution on löytänyt Elmin sähköpostitiedostoja.\n"
-"Haluatko tuoda nämä postit Evolutioniin?"
-
-#: mail/importers/elm-importer.c:430
-msgid "Elm mail"
-msgstr "Elm-sähköposti"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:1
-msgid "Factory to import mbox into Evolution"
-msgstr ""
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:2
-msgid "Imports mbox files into Evolution"
-msgstr ""
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:1
-msgid "Factory to import Outlook Express 4 mails into Evolution"
-msgstr ""
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:2
-msgid "Imports Outlook Express 4 files into Evolution"
-msgstr ""
-
-#: mail/importers/netscape-importer.c:440
-msgid ""
-"Evolution has found Netscape mail files.\n"
-"Would you like them to be imported into Evolution?"
-msgstr ""
-
-#: mail/importers/pine-importer.c:385
-msgid ""
-"Evolution has found Pine mail files.\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-
-#: mail/importers/pine-importer.c:395
-msgid "Pine mail"
-msgstr "Pine-sähköposti"
-
-#: mail/local-config.glade.h:1
-msgid "Current store format:"
-msgstr ""
-
-#: mail/local-config.glade.h:2
-msgid "Mailbox Format"
-msgstr ""
-
-#: mail/local-config.glade.h:3
-msgid "New store format:"
-msgstr ""
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-
-#: mail/local-config.glade.h:7
-msgid "maildir"
-msgstr ""
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr ""
-
-#: mail/local-config.glade.h:9
-msgid "mh"
-msgstr ""
-
-#: mail/mail-account-editor.c:105
-msgid "You have not filled in all of the required information."
-msgstr "Et ole täyttänyt kaikkia tarvittavia kohtia."
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:173
-msgid "Evolution Account Editor"
-msgstr "Evolutionin tilimuokkain"
-
-#: mail/mail-accounts.c:121 mail/mail-accounts.c:165
-msgid " (default)"
-msgstr " (oletus)"
-
-#: mail/mail-accounts.c:197
-msgid "Disable"
-msgstr "Älä käytä"
-
-#: mail/mail-accounts.c:199 mail/mail-config.glade.h:25
-msgid "Enable"
-msgstr "Käytä"
-
-#: mail/mail-accounts.c:280 mail/mail-accounts.c:284
-msgid "Are you sure you want to delete this account?"
-msgstr "Haluatko varmasti poistaa tämän tilin?"
-
-#: mail/mail-accounts.c:418 mail/mail-accounts.c:422
-msgid "Are you sure you want to delete this news account?"
-msgstr "Haluatko varmasti poistaa tämän keskusteluryhmätilin?"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:536
-msgid "Evolution Account Manager"
-msgstr "Evolutionin tilienhallinta"
-
-#: mail/mail-autofilter.c:70
-#, c-format
-msgid "Mail to %s"
-msgstr ""
-
-#: mail/mail-autofilter.c:213
-#, c-format
-msgid "Subject is %s"
-msgstr "Aihe on %s"
-
-#: mail/mail-autofilter.c:229
-#, c-format
-msgid "Mail from %s"
-msgstr ""
-
-#: mail/mail-autofilter.c:285
-#, c-format
-msgid "%s mailing list"
-msgstr ""
-
-#: mail/mail-autofilter.c:335 mail/mail-autofilter.c:356
-msgid "Add Filter Rule"
-msgstr "Lisää suodatussääntö"
-
-#: mail/mail-callbacks.c:96
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-"Et ole asettanut sähköpostiasiakkaan asetuksia.\n"
-"Tämä täytyy tehdä jotta voisit lähettää,\n"
-"vastaanottaa tai kirjoittaa viestejä.\n"
-"Haluatko tehdä asetukset nyt?"
-
-#: mail/mail-callbacks.c:149
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-
-#: mail/mail-callbacks.c:161
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-
-#: mail/mail-callbacks.c:205
-msgid "You have not set a mail transport method"
-msgstr ""
-
-#: mail/mail-callbacks.c:238
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-"Viestillä ei ole aihetta.\n"
-"Lähetetäänkö toedella?"
-
-#: mail/mail-callbacks.c:311
-msgid "You must specify recipients in order to send this message."
-msgstr "Sinuun tulee määritellä vastaanottajat ennen tämän viestin "
-"lähettämistä."
-
-#: mail/mail-callbacks.c:354
-msgid "You must configure an account before you can send this email."
-msgstr "Sinun tulee luoda tili ennen kuin voit lähettää tätä viestiä."
-
-#: mail/mail-callbacks.c:593
-#, c-format
-msgid "On %s, %s wrote:"
-msgstr "%s %s kirjoitti:"
-
-#: mail/mail-callbacks.c:774
-msgid "Forwarded message:\n"
-msgstr "Välitetty viesti:\n"
-
-#: mail/mail-callbacks.c:877
-msgid "Move message(s) to"
-msgstr "Siirrä viesti(t) kansioon"
-
-#: mail/mail-callbacks.c:879
-msgid "Copy message(s) to"
-msgstr "Kopioi viesti(t) kansioon"
-
-#: mail/mail-callbacks.c:1156
-#, c-format
-msgid "Are you sure you want to edit all %d messages?"
-msgstr ""
-
-#: mail/mail-callbacks.c:1170
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-"Voit muokata vain Luonnokset\n"
-"-kansiossa olevia viestejä."
-
-#: mail/mail-callbacks.c:1202
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-"Voit lähettää uudelleen vain\n"
-"\"Lähetetyt\"-kansiossa olevia viestejä."
-
-#: mail/mail-callbacks.c:1224
-msgid "No Message Selected"
-msgstr "Ei viestejä valittuna"
-
-#: mail/mail-callbacks.c:1250 mail/mail-display.c:90
-msgid "Overwrite file?"
-msgstr "Kirjoita tiedoston yli?"
-
-#: mail/mail-callbacks.c:1254 mail/mail-display.c:94
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-"Saman niminen tiedosto on jo olemassa.\n"
-"Kirjoitetaanko sen yli?"
-
-#: mail/mail-callbacks.c:1298
-msgid "Save Message As..."
-msgstr "Tallenna viesti nimellä..."
-
-#: mail/mail-callbacks.c:1300
-msgid "Save Messages As..."
-msgstr "Tallenna viestit nimellä..."
-
-#: mail/mail-callbacks.c:1435
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-
-#: mail/mail-callbacks.c:1484 ui/evolution-mail.xml.h:56
-msgid "Print Message"
-msgstr "Tulosta viesti"
-
-#: mail/mail-callbacks.c:1531
-msgid "Printing of message failed"
-msgstr "Viestin tulostus epäonnistui"
-
-#: mail/mail-callbacks.c:1609
-#, c-format
-msgid "Are you sure you want to open all %d messages in separate windows?"
-msgstr ""
-
-#: mail/mail-config.c:1121 mail/mail-config.c:1124
-msgid "Connecting to server..."
-msgstr ""
-
-#: mail/mail-config-druid.c:99
-msgid ""
-"Please enter your name and email address below. The \"optional\" fields "
-"below do not need to be filled in, unless you wish to include this "
-"information in email you send."
-msgstr ""
-
-#: mail/mail-config-druid.c:101
-msgid ""
-"Please enter information about your incoming mail server below. If you don't "
-"know what kind of server you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-
-#: mail/mail-config-druid.c:105
-msgid ""
-"Please enter information about your outgoing mail protocol below. If you "
-"don't know which protocol you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-
-#: mail/mail-config-druid.c:107
-msgid ""
-"You are almost done with the mail configuration process. The identity, "
-"incoming mail server and outgoing mail transport method which you provided "
-"will be grouped together to make an Evolution mail account. Please enter a "
-"name for this account in the space below. This name will be used for display "
-"purposes only."
-msgstr ""
-
-#. set window title
-#: mail/mail-config-druid.c:445
-msgid "Evolution Account Wizard"
-msgstr ""
-
-#: mail/mail-config.glade.h:1
-msgid " Check for supported types "
-msgstr " Tarkista tuetut tavat "
-
-#: mail/mail-config.glade.h:2
-msgid " color"
-msgstr " "
-
-#: mail/mail-config.glade.h:3
-msgid "Account"
-msgstr "Tili"
-
-#: mail/mail-config.glade.h:4
-msgid "Account Information"
-msgstr "Tilitiedot"
-
-#: mail/mail-config.glade.h:5
-msgid "Account Management"
-msgstr "Tilinhallinta"
-
-#: mail/mail-config.glade.h:6
-msgid "Accounts"
-msgstr "Tilit"
-
-#: mail/mail-config.glade.h:8
-msgid "Authentication"
-msgstr "Todennus"
-
-#: mail/mail-config.glade.h:9
-msgid "Authentication Type: "
-msgstr "Todennustapa:"
-
-#: mail/mail-config.glade.h:10
-msgid "Automatically check for new mail every"
-msgstr "Tarkasta onko uutta postia joka"
-
-#: mail/mail-config.glade.h:12
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-
-#: mail/mail-config.glade.h:18
-msgid "De_fault"
-msgstr "_Oletukset"
-
-#: mail/mail-config.glade.h:20
-msgid "Done"
-msgstr "Valmis"
-
-#: mail/mail-config.glade.h:21
-msgid "Drafts"
-msgstr "Luonnokset"
-
-#: mail/mail-config.glade.h:22
-msgid "Drafts folder:"
-msgstr "Luonnoskansio:"
-
-#: mail/mail-config.glade.h:24
-msgid "Email Address:"
-msgstr "Sähköpostiosoite:"
-
-#: mail/mail-config.glade.h:26
-msgid "Full Name:"
-msgstr "Koko nimi:"
-
-#: mail/mail-config.glade.h:27
-msgid "Highlight citations with "
-msgstr "Korosta lainaukset värillä "
-
-#: mail/mail-config.glade.h:29
-msgid "IMAPv4 "
-msgstr "IMAPv4 "
-
-#: mail/mail-config.glade.h:30
-msgid "Identity"
-msgstr ""
-
-#: mail/mail-config.glade.h:31
-msgid "Kerberos "
-msgstr "Kerberos"
-
-#: mail/mail-config.glade.h:32
-msgid "Mail Configuration"
-msgstr ""
-
-#: mail/mail-config.glade.h:33
-msgid "Make this my default account"
-msgstr "Tämä on oletustilini"
-
-#: mail/mail-config.glade.h:34
-msgid "Mark messages as \"Read\" after:"
-msgstr "Merkitse viestit luetuiksi kun on kulunut:"
-
-#: mail/mail-config.glade.h:36
-msgid "News"
-msgstr ""
-
-#: mail/mail-config.glade.h:38
-msgid "Optional Information"
-msgstr "Valinnaiset tiedot"
-
-#: mail/mail-config.glade.h:39
-msgid "Organization:"
-msgstr "Organisaatio:"
-
-#: mail/mail-config.glade.h:41
-msgid "PGP binary path:"
-msgstr "PGP-ohjelman polku:"
-
-#: mail/mail-config.glade.h:46
-msgid "Qmail maildir "
-msgstr ""
-
-#: mail/mail-config.glade.h:47
-msgid "Receiving Email"
-msgstr "Otetaan vastaan sähköpostia"
-
-#: mail/mail-config.glade.h:48
-msgid "Receiving Mail"
-msgstr "Tuleva posti"
-
-#: mail/mail-config.glade.h:49
-msgid "Receiving Options"
-msgstr "Hakuasetukset"
-
-#: mail/mail-config.glade.h:51
-msgid "Required Information"
-msgstr "Pakolliset tiedot"
-
-#: mail/mail-config.glade.h:53
-msgid "Select PGP binary"
-msgstr "Valitse PGP-ohjelma"
-
-#: mail/mail-config.glade.h:54
-msgid "Send mail in HTML format by default."
-msgstr "Lähetä sähköpostit oletuksena HTML-muodossa."
-
-#: mail/mail-config.glade.h:55
-msgid "Sending Email"
-msgstr "Lähetetään sähköpostia"
-
-#: mail/mail-config.glade.h:56
-msgid "Sending Mail"
-msgstr "Lähtevä posti"
-
-#: mail/mail-config.glade.h:58
-msgid "Sent"
-msgstr "Lähetetyt"
-
-#: mail/mail-config.glade.h:59
-msgid "Sent and Draft Messages"
-msgstr "Lähetetyt viestit ja luonnokset"
-
-#: mail/mail-config.glade.h:60
-msgid "Sent messages folder:"
-msgstr "Lähetettyjen kansio:"
-
-#: mail/mail-config.glade.h:61
-msgid "Server Configuration"
-msgstr "Palvelimen asetukset"
-
-#: mail/mail-config.glade.h:62
-msgid "Server Type: "
-msgstr "Palvelintyyppi: "
-
-#: mail/mail-config.glade.h:63
-msgid "Server requires authentication"
-msgstr "Palvelin vaati todennuksen"
-
-#: mail/mail-config.glade.h:64
-msgid "Signature file:"
-msgstr "Allekirjoitustiedosto:"
-
-#: mail/mail-config.glade.h:65
-msgid "Sources"
-msgstr "Lähteet"
-
-#: mail/mail-config.glade.h:66
-msgid "Special Folders"
-msgstr "Erikoiskansiot"
-
-#: mail/mail-config.glade.h:67
-msgid "Standard Unix mbox"
-msgstr ""
-
-#: mail/mail-config.glade.h:68
-msgid "Type"
-msgstr "Tyyppi"
-
-#: mail/mail-config.glade.h:69
-msgid "Use secure connection (SSL)"
-msgstr "Käytä salattua yhteyttä (SSL)"
-
-#: mail/mail-config.glade.h:70
-msgid "Username:"
-msgstr "Käyttäjätunnus:"
-
-#: mail/mail-config.glade.h:71
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-
-#: mail/mail-config.glade.h:76 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:43 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:32
-msgid "_Edit"
-msgstr "_Muokkaa"
-
-#: mail/mail-display.c:194
-msgid "Save Attachment"
-msgstr "Tallenna liite"
-
-#: mail/mail-display.c:234
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr "Väliaikaishakemistoa ei voitu luoda: %s"
-
-#: mail/mail-display.c:295
-msgid "Save to Disk..."
-msgstr ""
-
-#: mail/mail-display.c:297
-#, c-format
-msgid "Open in %s..."
-msgstr ""
-
-#: mail/mail-display.c:299
-msgid "View Inline"
-msgstr ""
-
-#: mail/mail-display.c:334
-msgid "External Viewer"
-msgstr "Ulkoinen katselin"
-
-#: mail/mail-display.c:357
-#, c-format
-msgid "View Inline (via %s)"
-msgstr ""
-
-#: mail/mail-display.c:361
-msgid "Hide"
-msgstr "Piilota"
-
-#: mail/mail-display.c:1107
-msgid "Open link in browser"
-msgstr "Avaa linkki selaimessa"
-
-#: mail/mail-display.c:1109
-msgid "Save as (FIXME)"
-msgstr "Tallenna nimellä"
-
-#: mail/mail-display.c:1111
-msgid "Copy location (FIXME)"
-msgstr "Kopioi sijainti"
-
-#: mail/mail-format.c:522
-#, c-format
-msgid "%s attachment"
-msgstr ""
-
-#: mail/mail-format.c:564
-msgid "Could not parse MIME message. Displaying as source."
-msgstr ""
-
-#: mail/mail-format.c:771
-msgid "Loading message content"
-msgstr "Ladataan viestin sisältöä"
-
-#: mail/mail-format.c:1080
-msgid "No GPG/PGP program configured."
-msgstr ""
-
-#: mail/mail-format.c:1095
-msgid "Encrypted message not displayed"
-msgstr ""
-
-#: mail/mail-format.c:1101
-msgid "Encrypted message"
-msgstr "Salattu viesti"
-
-#: mail/mail-format.c:1102
-msgid "Click icon to decrypt."
-msgstr "Napsauta kuvaketta salauksen purkamiseksi."
-
-#: mail/mail-format.c:1192 mail/mail-format.c:1580
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr ""
-
-#: mail/mail-format.c:1200 mail/mail-format.c:1588
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr ""
-
-#: mail/mail-format.c:1801
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr ""
-
-#: mail/mail-format.c:1813
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr ""
-
-#: mail/mail-format.c:1817
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr ""
-
-#: mail/mail-format.c:1851
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr ""
-
-#: mail/mail-format.c:1856
-msgid "Malformed external-body part."
-msgstr ""
-
-#: mail/mail-local.c:509
-#, c-format
-msgid "Opening '%s'"
-msgstr ""
-
-#: mail/mail-local.c:787
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr ""
-
-#: mail/mail-local.c:791
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr ""
-
-#: mail/mail-local.c:814
-msgid "Reconfiguring folder"
-msgstr ""
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:843
-msgid "Closing current folder"
-msgstr ""
-
-#: mail/mail-local.c:875
-msgid "Renaming old folder and opening"
-msgstr ""
-
-#: mail/mail-local.c:893
-msgid "Creating new folder"
-msgstr "Luodaan uutta kansiota"
-
-#: mail/mail-local.c:907
-msgid "Copying messages"
-msgstr "Kopioidaan viestejä"
-
-#: mail/mail-local.c:924
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-
-#: mail/mail-local.c:963
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-
-#: mail/mail-mt.c:190
-#, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-
-#: mail/mail-mt.c:193
-#, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-
-#: mail/mail-mt.c:516 mail/mail-mt.c:545 mail/mail-mt.c:880
-msgid "Working"
-msgstr ""
-
-#: mail/mail-mt.c:862
-msgid "Evolution progress"
-msgstr ""
-
-#: mail/mail-ops.c:599
-#, c-format
-msgid "Sending \"%s\""
-msgstr "Lähetetään \"%s\""
-
-#: mail/mail-ops.c:603
-msgid "Sending message"
-msgstr "Lähetetään viestiä"
-
-#: mail/mail-ops.c:718
-#, c-format
-msgid "Sending message %d of %d"
-msgstr "Lähetetään viestiä %d / %d"
-
-#: mail/mail-ops.c:737
-#, c-format
-msgid "Failed on message %d of %d"
-msgstr ""
-
-#: mail/mail-ops.c:739 mail/mail-send-recv.c:475
-msgid "Complete."
-msgstr "Valmis."
-
-#: mail/mail-ops.c:825
-msgid "Saving message to folder"
-msgstr ""
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Moving messages to %s"
-msgstr ""
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Copying messages to %s"
-msgstr ""
-
-#: mail/mail-ops.c:914
-msgid "Moving"
-msgstr "Siirretään"
-
-#: mail/mail-ops.c:917
-msgid "Copying"
-msgstr "Kopioidaan"
-
-#: mail/mail-ops.c:992
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr ""
-
-#: mail/mail-ops.c:1154
-msgid "Forwarded messages"
-msgstr "Välitetyt viestit"
-
-#: mail/mail-ops.c:1195 mail/mail-ops.c:1333
-#, c-format
-msgid "Opening folder %s"
-msgstr ""
-
-#: mail/mail-ops.c:1262
-#, c-format
-msgid "Opening store %s"
-msgstr ""
-
-#: mail/mail-ops.c:1449
-msgid "Expunging folder"
-msgstr ""
-
-#: mail/mail-ops.c:1498
-#, c-format
-msgid "Retrieving message %s"
-msgstr "Haetaan viestiä %s"
-
-#: mail/mail-ops.c:1565
-msgid "Retrieving messages"
-msgstr "Haetaan viestejä"
-
-#: mail/mail-ops.c:1575
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr ""
-
-#: mail/mail-ops.c:1649
-msgid "Saving messages"
-msgstr "Tallennetaan viestejä"
-
-#: mail/mail-ops.c:1728
-#, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr ""
-
-#: mail/mail-ops.c:1741
-#, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr ""
-
-#: mail/mail-ops.c:1755
-#, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr ""
-
-#: mail/mail-ops.c:1829
-msgid "Saving attachment"
-msgstr "Tallennetaan liite"
-
-#: mail/mail-ops.c:1844
-#, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr ""
-
-#: mail/mail-ops.c:1872
-#, c-format
-msgid "Could not write data: %s"
-msgstr ""
-
-#: mail/mail-search-dialogue.c:113
-msgid "_Search"
-msgstr "_Etsi"
-
-#: mail/mail-search.c:167
-#, c-format
-msgid "Search \"%s\""
-msgstr "Etsi \"%s\""
-
-#: mail/mail-search.c:169
-msgid "Search Untitled Message"
-msgstr "Etsi viestiä jolla ei ole aihetta"
-
-#: mail/mail-search.c:184
-msgid "Case Sensitive"
-msgstr "Kirjainkoolla on merkitystä"
-
-#: mail/mail-search.c:185
-msgid "Search Forward"
-msgstr ""
-
-#: mail/mail-search.c:192
-msgid "Find:"
-msgstr "Etsi:"
-
-#: mail/mail-send-recv.c:138
-msgid "Cancelling..."
-msgstr "Peruutetaan..."
-
-#: mail/mail-send-recv.c:233
-msgid "Send & Receive mail"
-msgstr "Lähetä & Vastaanota postia"
-
-#: mail/mail-send-recv.c:236
-msgid "Receiving"
-msgstr "Otetaan vastaan"
-
-#: mail/mail-send-recv.c:285
-msgid "Updating..."
-msgstr "Päivitetään..."
-
-#: mail/mail-send-recv.c:287 mail/mail-send-recv.c:333
-msgid "Waiting..."
-msgstr "Odotetaan..."
-
-#: mail/mail-send-recv.c:306
-msgid "Sending"
-msgstr "Lähetetään"
-
-#: mail/mail-send-recv.c:471
-msgid "Cancelled."
-msgstr "Peruutettu."
-
-#: mail/mail-summary.c:110
-msgid "Incomplete message written on pipe!"
-msgstr ""
-
-#: mail/mail-summary.c:468
-msgid "Mail Summary"
-msgstr ""
-
-#: mail/mail-tools.c:141
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr ""
-
-#: mail/mail-tools.c:188
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr "[%s] (välitetty viesti)"
-
-#: mail/mail-tools.c:198
-msgid "Fwd: (no subject)"
-msgstr ""
-
-#: mail/mail-tools.c:215
-#, c-format
-msgid "Forwarded message - %s"
-msgstr "Välitetty viesti - %s"
-
-#: mail/mail-tools.c:217
-msgid "Forwarded message (no subject)"
-msgstr "Välitetty viesti (ei aihetta)"
-
-#: mail/mail-tools.c:415
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-msgstr ""
-
-#: mail/mail-vfolder.c:249
-msgid "VFolders"
-msgstr ""
-
-#: mail/mail-vfolder.c:426
-msgid "New VFolder"
-msgstr ""
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/message-browser.c:189 ui/evolution-mail.xml.h:64
-msgid "Reply"
-msgstr "Vastaa"
-
-#: mail/message-browser.c:189 ui/evolution-mail.xml.h:70
-msgid "Reply to the sender of this message"
-msgstr "Vastaa tämän viestin lähettäjälle"
-
-#: mail/message-browser.c:192 ui/evolution-mail.xml.h:65
-msgid "Reply to All"
-msgstr "Vastaa kaikille"
-
-#: mail/message-browser.c:192 ui/evolution-mail.xml.h:68
-msgid "Reply to all recipients of this message"
-msgstr "Vastaa kaikille tämän viestin vastaanottajille"
-
-#: mail/message-browser.c:195 ui/evolution-mail.xml.h:25
-msgid "Forward"
-msgstr "Välitä"
-
-#: mail/message-browser.c:195 ui/evolution-mail.xml.h:29
-msgid "Forward this message"
-msgstr "Välitä tämä viesti"
-
-#: mail/message-browser.c:200 ui/evolution-mail.xml.h:61
-msgid "Print the selected message"
-msgstr "Tulosta valittu viesti"
-
-#: mail/message-browser.c:203 ui/evolution-mail.xml.h:13
-msgid "Delete this message"
-msgstr "Poista tämä viesti"
-
-#: mail/message-browser.c:208 ui/evolution-event-editor.xml.h:33
-#: ui/evolution-mail.xml.h:54 ui/evolution-task-editor-dialog.xml.h:36
-msgid "Previous"
-msgstr "Edellinen"
-
-#: mail/message-browser.c:208
-msgid "Previous message"
-msgstr "Edellinen viesti"
-
-#: mail/message-browser.c:211 ui/evolution-calendar.xml.h:18
-#: ui/evolution-event-editor.xml.h:29 ui/evolution-mail.xml.h:50
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "Next"
-msgstr "Seuraava"
-
-#: mail/message-browser.c:211
-msgid "Next message"
-msgstr "Seuraava viesti"
-
-#: mail/message-list.c:682
-msgid "Unseen"
-msgstr "Nähty"
-
-#: mail/message-list.c:683
-msgid "Seen"
-msgstr "Näkemättä"
-
-#: mail/message-list.c:684
-msgid "Answered"
-msgstr "Vastattu"
-
-#: mail/message-list.c:685
-msgid "Multiple Unseen Messages"
-msgstr ""
-
-#: mail/message-list.c:686
-msgid "Multiple Messages"
-msgstr ""
-
-#: mail/message-list.c:690
-msgid "Lowest"
-msgstr "Matalin"
-
-#: mail/message-list.c:691
-msgid "Lower"
-msgstr "Matalampi"
-
-#: mail/message-list.c:695
-msgid "Higher"
-msgstr "Korkeampi"
-
-#: mail/message-list.c:696
-msgid "Highest"
-msgstr "Korkein"
-
-#: mail/message-list.c:946
-msgid "?"
-msgstr "?"
-
-#: mail/message-list.c:953
-msgid "Today %l:%M %p"
-msgstr "Tänään %l:%M %p"
-
-#: mail/message-list.c:962
-msgid "Yesterday %l:%M %p"
-msgstr "Eilen %l:%M %p"
-
-#: mail/message-list.c:974
-msgid "%a %l:%M %p"
-msgstr "%a %l:%M %p"
-
-#: mail/message-list.c:982
-msgid "%b %d %l:%M %p"
-msgstr "%b %d %l:%M %p"
-
-#: mail/message-list.c:984
-msgid "%b %d %Y"
-msgstr "%b %d %Y"
-
-#: mail/message-list.c:1086
-msgid "Flagged"
-msgstr ""
-
-#: mail/message-list.c:1087
-msgid "From"
-msgstr "Lähettäjä"
-
-#: mail/message-list.c:1087
-msgid "Date"
-msgstr "Päiväys"
-
-#: mail/message-list.c:1087
-msgid "Received"
-msgstr "Otettu vastaan"
-
-#: mail/message-list.c:1088
-msgid "To"
-msgstr "Vastaanottaja"
-
-#: mail/message-list.c:1088
-msgid "Size"
-msgstr "Koko"
-
-#: mail/mail-session.c:161
-msgid "User canceled operation."
-msgstr ""
-
-#: mail/subscribe-dialog.c:76 shell/e-storage-set-view.c:47
-msgid "Folder"
-msgstr "Kansio"
-
-#: mail/subscribe-dialog.c:77
-msgid "Store"
-msgstr ""
-
-#: mail/subscribe-dialog.c:138
-msgid "Display folders starting with:"
-msgstr ""
-
-#: mail/subscribe-dialog.c:168
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:271
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:273
-#, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr ""
-
-#. Construct the app
-#: mail/subscribe-dialog.c:873
-msgid "Manage Subscriptions"
-msgstr ""
-
-#: shell/e-setup.c:118 shell/e-setup.c:191
-msgid "Evolution installation"
-msgstr ""
-
-#: shell/e-setup.c:122
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-
-#: shell/e-setup.c:123
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr ""
-
-#: shell/e-setup.c:163
-msgid "Could not update files correctly"
-msgstr ""
-
-#: shell/e-setup.c:166 shell/e-setup.c:234
-msgid "Evolution files successfully installed."
-msgstr ""
-
-#: shell/e-setup.c:195
-msgid "This seems to be the first time you are running Evolution."
-msgstr "Tämä näyttäisi olevan ensimmäinen kerta kun käytät Evolutionia."
-
-#: shell/e-setup.c:196
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr ""
-"Paina \"OK\" asentaaksesi Evolutionin käyttäjäkohtaiset tiedostot kohteeseen"
-
-#: shell/e-setup.c:215
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"Ei voitu luoda hakemistoa\n"
-"%s\n"
-"Virhe: %s"
-
-#: shell/e-setup.c:230
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-
-#: shell/e-setup.c:255
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-
-#: shell/e-setup.c:267
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-
-#: shell/e-shell.c:388
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr ""
-
-#: shell/e-shell.c:1273
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-
-#: shell/e-shell-folder-creation-dialog.c:99
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-
-#: shell/e-shell-folder-creation-dialog.c:156
-msgid "The specified folder name is not valid."
-msgstr ""
-
-#: shell/e-shell-folder-creation-dialog.c:263
-msgid "Evolution - Create new folder"
-msgstr ""
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-
-#: shell/e-shell-folder-selection-dialog.c:321
-msgid "New..."
-msgstr "Uusi..."
-
-#: shell/e-shell-folder-title-bar.c:459 shell/e-shell-folder-title-bar.c:460
-msgid "(Untitled)"
-msgstr "(Nimetön)"
-
-#: shell/e-shell-view.c:148
-msgid "(No folder displayed)"
-msgstr ""
-
-#: shell/e-shell-view.c:1203
-#, c-format
-msgid "%s - Evolution %s"
-msgstr "%s - Evolution %s"
-
-#: shell/e-shell-view.c:1205
-#, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "%s - Evolution %s [%s]"
-
-#: shell/e-shell-view-menu.c:173
-msgid "Bug buddy was not found in your $PATH."
-msgstr "Bug budday ei löytynyt $PATH:istasi."
-
-#: shell/e-shell-view-menu.c:179
-msgid "Bug buddy could not be run."
-msgstr "Bug buddya ei voitu ajaa."
-
-#: shell/e-shell-view-menu.c:208
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Copyright 1999, 2000, 2001 Ximian, Inc."
-
-#: shell/e-shell-view-menu.c:210
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-
-#: shell/e-shell-view-menu.c:374
-msgid "Go to folder..."
-msgstr "Siirry kansioon..."
-
-#: shell/e-shell-view-menu.c:562
-msgid "Work online"
-msgstr "Työskentele linjoilla"
-
-#: shell/e-shell-view-menu.c:574 shell/e-shell-view-menu.c:586
-msgid "Work offline"
-msgstr "Työskentele poissa linjoilta"
-
-#: shell/e-shortcuts.c:381
-msgid "Error saving shortcuts."
-msgstr "Virhe tallennettaessa oikoteitä."
-
-#: shell/e-shortcuts-view.c:134
-msgid "Create new shortcut group"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:137
-msgid "Group name:"
-msgstr "Ryhmän nimi:"
-
-#: shell/e-shortcuts-view.c:260
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:265
-msgid "Don't remove"
-msgstr "Älä poista"
-
-#: shell/e-shortcuts-view.c:276
-msgid "_Small Icons"
-msgstr "_Pienet kuvakkeet"
-
-#: shell/e-shortcuts-view.c:277
-msgid "Show the shortcuts as small icons"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:279
-msgid "_Large Icons"
-msgstr "_Suuret kuvakkeet"
-
-#: shell/e-shortcuts-view.c:280
-msgid "Show the shortcuts as large icons"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:291
-msgid "_New Group..."
-msgstr "_Uusi ryhmä..."
-
-#: shell/e-shortcuts-view.c:292
-msgid "Create a new shortcut group"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:294
-msgid "_Remove This Group..."
-msgstr "_Poista tämä ryhmä..."
-
-#: shell/e-shortcuts-view.c:295
-msgid "Remove this shortcut group"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:300
-msgid "_Hide the Shortcut Bar"
-msgstr "_Piilota oikotiepalkki"
-
-#: shell/e-shortcuts-view.c:301
-msgid "Hide the shortcut bar"
-msgstr "Piilota oikotiepalkki"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate"
-msgstr "Aktivoi"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate this shortcut"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:388
-msgid "Remove this shortcut from the shortcut bar"
-msgstr "Poista tämä oikotie oikotiepalkista"
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr "(Ei nimeä)"
-
-#: shell/e-storage.c:459
-msgid "No error"
-msgstr "Ei virhettä"
-
-#: shell/e-storage.c:461
-msgid "Generic error"
-msgstr "Yleinen virhe"
-
-#: shell/e-storage.c:463
-msgid "A folder with the same name already exists"
-msgstr ""
-
-#: shell/e-storage.c:465
-msgid "The specified folder type is not valid"
-msgstr ""
-
-#: shell/e-storage.c:467
-msgid "I/O error"
-msgstr "I/O-virhe"
-
-#: shell/e-storage.c:469
-msgid "Not enough space to create the folder"
-msgstr ""
-
-#: shell/e-storage.c:471
-msgid "The specified folder was not found"
-msgstr ""
-
-#: shell/e-storage.c:473
-msgid "Function not implemented in this storage"
-msgstr ""
-
-#: shell/e-storage.c:475
-msgid "Permission denied"
-msgstr ""
-
-#: shell/e-storage.c:477
-msgid "Operation not supported"
-msgstr ""
-
-#: shell/e-storage.c:479
-msgid "The specified type is not supported in this storage"
-msgstr ""
-
-#: shell/e-storage-set-view.c:650 ui/evolution-event-editor.xml.h:76
-#: ui/evolution-message-composer.xml.h:53
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:46
-msgid "_View"
-msgstr "_Näytä"
-
-#: shell/e-storage-set-view.c:650
-msgid "View the selected folder"
-msgstr ""
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-msgid "Folder name:"
-msgstr "Kansion nimi:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-msgid "Folder type:"
-msgstr "Kansion tyyppi:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-msgid "Specify where to create the folder:"
-msgstr ""
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-msgid "The Evolution shell."
-msgstr ""
-
-#: shell/importer/importer.c:87
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/importer/importer.c:182
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-
-#: shell/importer/importer.c:202 shell/importer/importer.c:233
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-
-#: shell/importer/importer.c:341
-#, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr ""
-
-#: shell/importer/importer.c:351
-msgid "Importing"
-msgstr ""
-
-#: shell/importer/importer.c:359
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-
-#: shell/importer/importer.c:372
-#, c-format
-msgid "Error starting %s"
-msgstr "Virhe %s:n käynnistyksessä"
-
-#: shell/importer/importer.c:387
-#, c-format
-msgid "Error loading %s"
-msgstr "Virhe %s:n lataamisessa"
-
-#: shell/importer/importer.c:402
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-
-#: shell/importer/importer.c:473
-msgid "Automatic"
-msgstr ""
-
-#: shell/importer/importer.c:523
-msgid "Filename:"
-msgstr "Tiedostonimi:"
-
-#: shell/importer/import.glade.h:5 shell/importer/importer.c:528
-msgid "Select a file"
-msgstr "Valitse tiedosto"
-
-#: shell/importer/importer.c:538
-msgid "File type:"
-msgstr "Tiedoston tyyppi:"
-
-#: shell/importer/import.glade.h:4 shell/importer/importer.c:619
-msgid "Import"
-msgstr ""
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr ""
-
-#: shell/importer/import.glade.h:2
-msgid "Evolution Import Utility"
-msgstr ""
-
-#: shell/importer/import.glade.h:3
-msgid "Evolution Importer Utility"
-msgstr ""
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-
-#: shell/importer/intelligent.c:143
-msgid "Don't ask me again"
-msgstr "Älä kysy tätä enää uudelleen"
-
-#: shell/main.c:82
-#, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-
-#: shell/main.c:107
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-"Kiitos\n"
-"The Evolution Team\n"
-
-#: shell/main.c:138
-msgid "Cannot initialize the Evolution shell."
-msgstr ""
-
-#: shell/main.c:184
-msgid "Disable splash screen"
-msgstr ""
-
-#: shell/main.c:185
-msgid "Send the debugging output of all components to a file."
-msgstr ""
-
-#: shell/main.c:217
-msgid "Cannot initialize the Bonobo component system."
-msgstr "Bonobon komponenttijärjestelmän alustus epäonnistui"
-
-#: ui/evolution-addressbook.xml.h:2
-msgid "Create new contact"
-msgstr "Luo uusi kontakti"
-
-#: ui/evolution-addressbook.xml.h:4
-msgid "Delete a contact"
-msgstr "Poista kontakti"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-msgid "Find"
-msgstr "Etsi"
-
-#: ui/evolution-addressbook.xml.h:6
-msgid "Find a contact"
-msgstr "Etsi kontakti"
-
-#: ui/evolution-addressbook.xml.h:7
-msgid "New contact"
-msgstr "Uusi kontakti"
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-mail.xml.h:53
-msgid "Previews the message to be printed"
-msgstr "Esikatsele tulostettavaa viestiä"
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "Print contacts"
-msgstr "Tulosta kontaktit"
-
-#: ui/evolution-addressbook.xml.h:12 ui/evolution-mail.xml.h:84
-msgid "Stop"
-msgstr "Pysäytä"
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "Stop Loading"
-msgstr "Pysäytä lataaminen"
-
-#: ui/evolution-addressbook.xml.h:14
-msgid "View All"
-msgstr "Näytä kaikki"
-
-#: ui/evolution-addressbook.xml.h:15
-msgid "View all contacts"
-msgstr "Näytä kaikki kontaktit"
-
-#: ui/evolution-addressbook.xml.h:16
-msgid "_Addressbook Sources..."
-msgstr "_Osoitekirjan lähteet..."
-
-#: ui/evolution-addressbook.xml.h:17
-msgid "_Contact"
-msgstr "_Kontakti"
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-msgid "_Print..."
-msgstr "T_ulosta..."
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr "_Etsi kontakteja"
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-mail.xml.h:117
-#: ui/evolution-task-editor-dialog.xml.h:88 ui/evolution.xml.h:45
-msgid "_Tools"
-msgstr "T_yökalut"
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr "5 päivää"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-msgid "Alter preferences"
-msgstr "Muuta asetuksia"
-
-#: ui/evolution-calendar.xml.h:4
-msgid "Create a new all day Event"
-msgstr "Luo uusi koko päivän tapahtuma"
-
-#: ui/evolution-calendar.xml.h:5
-msgid "Create a new appointment"
-msgstr "Luo uusi tapaaminen"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr "Luo uusi kalenteri"
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr "Päivä"
-
-#: ui/evolution-calendar.xml.h:8
-msgid "Go To"
-msgstr "Siirry"
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go forward in time"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:11
-msgid "Go to _Date"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:12
-msgid "Go to _Today"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:14
-msgid "Go to present time"
-msgstr "Siirry nykyiseen aikaan"
-
-#: ui/evolution-calendar.xml.h:15
-msgid "Month"
-msgstr "Kuukausi"
-
-#: ui/evolution-calendar.xml.h:17
-msgid "New _Event"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:20
-msgid "Open Calendar"
-msgstr "Avaa kalenteri"
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Prev"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:22
-msgid "Previews the calendar to be printed"
-msgstr "Esikatselee tulostettavaa kalenteria"
-
-#: ui/evolution-calendar.xml.h:25
-msgid "Print calendar"
-msgstr "Tulosta kalenteri"
-
-#: ui/evolution-calendar.xml.h:26
-msgid "Print this Calendar"
-msgstr "Tulosta tämä kalenteri"
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:15
-msgid "Save As"
-msgstr "Tallenna nimellä"
-
-#: ui/evolution-calendar.xml.h:28
-msgid "Save calendar as something else"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:30
-msgid "Show 1 day"
-msgstr "Näytä 1 päivä"
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr "Näytä 1 kuukausi"
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr "Näytä 1 viikko"
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr "Näytä työviikko"
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:229
-#: widgets/misc/e-dateedit.c:424
-msgid "Today"
-msgstr "Tänään"
-
-#: ui/evolution-calendar.xml.h:35
-msgid "W_ork Week"
-msgstr "Työviikk_o"
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr "Viikko"
-
-#: ui/evolution-calendar.xml.h:37
-msgid "_Appointment"
-msgstr "_Tapaaminen"
-
-#: ui/evolution-calendar.xml.h:38
-msgid "_Day"
-msgstr "_Päivä"
-
-#: ui/evolution-calendar.xml.h:39
-msgid "_Month"
-msgstr "_Kuukausi"
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:41
-msgid "_New"
-msgstr "_Uusi"
-
-#: ui/evolution-calendar.xml.h:41
-msgid "_Open Calendar"
-msgstr "_Avaa kalenteri"
-
-#: ui/evolution-calendar.xml.h:45
-msgid "_Week"
-msgstr "_Viikko"
-
-#: ui/evolution-contact-editor.xml.h:2
-msgid "Delete this item"
-msgstr "Poista tämä kohta"
-
-#: ui/evolution-contact-editor.xml.h:3
-msgid "Delete..."
-msgstr "Poista..."
-
-#: ui/evolution-contact-editor.xml.h:4
-msgid "Help"
-msgstr "Ohje"
-
-#: ui/evolution-contact-editor.xml.h:5
-msgid "Print En_velope..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-msgid "Print this item"
-msgstr "Tulosta tämä kohta"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-mail.xml.h:62 ui/evolution-task-editor-dialog.xml.h:41
-msgid "Print..."
-msgstr "Tulosta..."
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:16
-#: ui/evolution-task-editor-dialog.xml.h:51
-msgid "Save _As..."
-msgstr "Tallenna _nimellä..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-msgid "Save and Close"
-msgstr "Tallenna ja sulje"
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr "Tallenna kontakti ja sulje ikkuna"
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:13
-msgid "Send _message to contact..."
-msgstr "Lähetä _viesti kontaktille..."
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:44 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:33
-msgid "_File"
-msgstr "_Tiedosto"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:51
-#: ui/evolution-task-editor-dialog.xml.h:85
-msgid "_Save"
-msgstr "_Tallenna"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr "Tietoja tästä sovelluksesta"
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr "Tietoja..."
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-msgid "Actio_ns"
-msgstr "T_oiminnot"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-msgid "Address _Book... (FIXME)"
-msgstr "_Osoitekirja..."
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-msgid "C_lear"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-msgid "C_ut"
-msgstr "L_eikkaa"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-msgid "Chec_k Names (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-msgid "Clear"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-msgid "Clear the selection"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:11
-msgid "Close this appointment"
-msgstr "Sulje tämä tapaaminen"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "Kopioi kansioon..."
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:7
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "Kopioi"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-msgid "Copy the selection"
-msgstr "Kopioi valinta"
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr "Leikkaa"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Cut the selection"
-msgstr "Leikkaa valinta"
-
-#: ui/evolution-event-editor.xml.h:18
-msgid "Delete this appointment"
-msgstr "Poista tämä tapaaminen"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-msgid "For_ward (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-msgid "Go to the next item"
-msgstr "Siirry seuraavaan kohtaan"
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-msgid "Go to the previous item"
-msgstr "Siirry edelliseen kohtaan"
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-msgid "In_complete Task (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-msgid "Modify the file's properties"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-msgid "N_ext"
-msgstr "_Seuraava"
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-msgid "Paste"
-msgstr "Liitä"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-msgid "Paste the clipboard"
-msgstr "Liitä leikepöytä"
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr "_Edellinen"
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-msgid "Print Pre_view"
-msgstr "Tulostuksen esikatselu"
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-msgid "Print S_etup..."
-msgstr "Tulost_usasetukset"
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-msgid "Print Setup"
-msgstr "Tulostusasetukset"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:14
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:241
-msgid "Save"
-msgstr "Tallenna"
-
-#: ui/evolution-event-editor.xml.h:43
-msgid "Save the appointment and close the dialog box"
-msgstr "Tallenna tapaaminen ja sulje tapaamisikkuna"
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:20
-#: ui/evolution-task-editor-dialog.xml.h:53
-msgid "Save the current file"
-msgstr "Tallenna nykyinen tiedosto"
-
-#: ui/evolution-event-editor.xml.h:46
-msgid "Schedule _Meeting"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:47
-msgid "Schedule some sort of a meeting"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-mail.xml.h:74
-#: ui/evolution-task-editor-dialog.xml.h:57
-msgid "Select All"
-msgstr "Valitse kaikki"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-msgid "Select everything"
-msgstr "Merkitsee kaikki valituksi"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr "Muuta nykyisen tulostimesi sivuasetuksia"
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-msgid "Task _Request (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-message-composer.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:63
-msgid "_About..."
-msgstr "_Tietoja..."
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:41
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:30
-msgid "_Close"
-msgstr "_Sulje"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:31
-msgid "_Contact (FIXME)"
-msgstr "_Kontakti"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-msgid "_Copy"
-msgstr "_Kopioi"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:46
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:37
-msgid "_Help"
-msgstr "_Ohje"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-msgid "_Item (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-msgid "_Journal Entry (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-msgid "_Last Item in Folder (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-msgid "_Mail Message (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-msgid "_Move to Folder... (FIXME)"
-msgstr "_Siirrä kansioon..."
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-msgid "_Note (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-msgid "_Paste"
-msgstr "L_iitä"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:109
-#: ui/evolution-task-editor-dialog.xml.h:83
-msgid "_Properties..."
-msgstr "_Ominaisuudet..."
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-msgid "_Select All"
-msgstr "Valitse k_aikki"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:44
-msgid "_Task (FIXME)"
-msgstr "_Tehtävä"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-msgid "_Unread Item (FIXME)"
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:1
-msgid "Add Service"
-msgstr "Lisää palvelu"
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:3
-msgid "Create a new email"
-msgstr "Luo uusi sähköposti"
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:5
-msgid "New Mail"
-msgstr "Uusi sähköposti"
-
-#: ui/evolution-mail.xml.h:2
-msgid "Apply any new filters to the mail in this box"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:3
-msgid "Change the properties of this folder"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:4
-msgid "Compose"
-msgstr "Kirjoita"
-
-#: ui/evolution-mail.xml.h:5
-msgid "Compose a new message"
-msgstr "Kirjoita uusi viesti"
-
-#: ui/evolution-mail.xml.h:6
-msgid "Configure Folder..."
-msgstr "Kansion asetukset..."
-
-#: ui/evolution-mail.xml.h:8
-msgid "Copy message to a new folder"
-msgstr "Kopioi viesti uuteen kansioon"
-
-#: ui/evolution-mail.xml.h:9
-msgid "Copy selected messages to another folder"
-msgstr "Kopioi valitut viestit uuteen kansioon"
-
-#: ui/evolution-mail.xml.h:10
-msgid "Create _Virtual Folder From Message"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:12
-msgid "Delete the selected messages"
-msgstr "Poista valitut viestit"
-
-#: ui/evolution-mail.xml.h:14
-msgid "Display all of the message headers"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:15
-msgid "Edit Message"
-msgstr "Muokkaa viestiä"
-
-#: ui/evolution-mail.xml.h:16
-msgid "Edit the current message"
-msgstr "Muokkaa valittua viestiä"
-
-#: ui/evolution-mail.xml.h:17
-msgid "Empty _Trash"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:18
-msgid "Expunge"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:19
-msgid "Filter on Mailing _List"
-msgstr "Suodata post-ituslistan mukaan"
-
-#: ui/evolution-mail.xml.h:20
-msgid "Filter on Se_nder"
-msgstr "Suodata _lähettäjän mukaan"
-
-#: ui/evolution-mail.xml.h:21
-msgid "Filter on _Recipients"
-msgstr "Suodata _vastaanottajien mukaan"
-
-#: ui/evolution-mail.xml.h:22
-msgid "Filter on _Subject"
-msgstr "Suodata _aiheen mukaan"
-
-#: ui/evolution-mail.xml.h:23
-msgid "Finaly remove all mails tagged for deletion"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:24
-msgid "Forget _Passwords"
-msgstr "_Unohda salasanat"
-
-#: ui/evolution-mail.xml.h:26
-msgid "Forward As"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:27
-msgid "Forward inline"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:28
-msgid "Forward the selected mail to someone"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:30
-msgid "Forward this message in-line with your mail, so you can edit it"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:31
-msgid "Full _Headers"
-msgstr "Täydet _otsikkotiedot"
-
-#: ui/evolution-mail.xml.h:32
-msgid "Go to the next message"
-msgstr "Siirry seuraavaan viestiin"
-
-#: ui/evolution-mail.xml.h:33
-msgid "Go to the previous message"
-msgstr "Siirry edelliseen viestiin"
-
-#: ui/evolution-mail.xml.h:34
-msgid "Hide Deleted Messages"
-msgstr "Piilota poistetut viestit"
-
-#: ui/evolution-mail.xml.h:35
-msgid "Hide S_elected Messages"
-msgstr "Piilota valitut vi_estit"
-
-#: ui/evolution-mail.xml.h:36
-msgid "Hide _Deleted Messages"
-msgstr "Piilota _poistetut viestit"
-
-#: ui/evolution-mail.xml.h:37
-msgid "Hide _Read messages"
-msgstr "Piilota _luetut viestit"
-
-#: ui/evolution-mail.xml.h:38
-msgid "Invert Selection"
-msgstr "Käännä valinta"
-
-#: ui/evolution-mail.xml.h:39
-msgid "Manage _Subscriptions..."
-msgstr ""
-
-#: ui/evolution-mail.xml.h:41
-msgid "Mark All as R_ead"
-msgstr "Merkitse ka_ikki luetuksi"
-
-#: ui/evolution-mail.xml.h:42
-msgid "Mark As Read"
-msgstr "Merkitse luetuksi"
-
-#: ui/evolution-mail.xml.h:43
-msgid "Mark As U_nread"
-msgstr "Merkitse luke_mattomaksi"
-
-#: ui/evolution-mail.xml.h:45
-msgid "Mark the selected messages as having been read"
-msgstr "Merkitse valitut viestit luetuiksi"
-
-#: ui/evolution-mail.xml.h:46
-msgid "Mark the selected messages as not having been read"
-msgstr "Merkitse valitut viestit lukemattomiksi"
-
-#: ui/evolution-mail.xml.h:47
-msgid "Move"
-msgstr "Siirrä"
-
-#: ui/evolution-mail.xml.h:48
-msgid "Move message to a new folder"
-msgstr "Siirrä viesti uuteen kansioon"
-
-#: ui/evolution-mail.xml.h:49
-msgid "Move selected messages to another folder"
-msgstr "Siirrä valitut viestit toiseen kansioon"
-
-#: ui/evolution-mail.xml.h:51
-msgid "Open in New Window"
-msgstr "Avaa uudessa ikkunassa"
-
-#: ui/evolution-mail.xml.h:52
-msgid "Open the current message in a new window"
-msgstr "Avaa valittu viesti uudessa ikkunassa"
-
-#: ui/evolution-mail.xml.h:58
-msgid "Print Preview of message..."
-msgstr "Tulostuksen esikatselu viestistä..."
-
-#: ui/evolution-mail.xml.h:59
-msgid "Print message to the printer"
-msgstr "Tulosta viesti tulostimella"
-
-#: ui/evolution-mail.xml.h:60
-msgid "Print message..."
-msgstr "Tulosta viesti..."
-
-#: ui/evolution-mail.xml.h:63
-msgid "Redirect (FIXME: implement me)"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:67
-msgid "Reply to all"
-msgstr "Vastaa kaikille"
-
-#: ui/evolution-mail.xml.h:69
-msgid "Reply to sender"
-msgstr "Vastaa lähettäjälle"
-
-#: ui/evolution-mail.xml.h:71
-msgid "S_earch Message"
-msgstr "_Etsi viestiä"
-
-#: ui/evolution-mail.xml.h:72
-msgid "S_ource"
-msgstr "_Lähde"
-
-#: ui/evolution-mail.xml.h:73
-msgid "Save the message into a new file"
-msgstr "Tallenna viesti uuteen tiedostoon"
-
-#: ui/evolution-mail.xml.h:75 ui/evolution-subscribe.xml.h:7
-msgid "Select _All"
-msgstr "Valitse _kaikki"
-
-#: ui/evolution-mail.xml.h:76
-msgid "Select _Thread"
-msgstr "Valitse _säie"
-
-#: ui/evolution-mail.xml.h:77
-msgid "Send / Receive"
-msgstr "Lähetä / Vastaanota"
-
-#: ui/evolution-mail.xml.h:78
-msgid "Send a reply to the person who sent you this mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:79
-msgid "Send a single mail in reply to all the selected mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:80
-msgid ""
-"Send queued mail\n"
-" and retrieve new mail"
-msgstr ""
-"lähetä jonossa olevat viestit\n"
-" ja hae uudet viestit"
-
-#: ui/evolution-mail.xml.h:82
-msgid "Send queued mail and retrieve new mail"
-msgstr "Lähetä jonossa olevat viestit ja hae uudet viestit"
-
-#: ui/evolution-mail.xml.h:83
-msgid "Show _All"
-msgstr "Näytä k_aikki"
-
-#: ui/evolution-mail.xml.h:85
-msgid "Threaded Message list"
-msgstr "Säikeistetty viesti-ikkuna"
-
-#: ui/evolution-mail.xml.h:86
-msgid "Un-delete the selected messages"
-msgstr "Peruuta valittujen viestien poistaminen"
-
-#: ui/evolution-mail.xml.h:87
-msgid "Undelete"
-msgstr "Palauta"
-
-#: ui/evolution-mail.xml.h:92
-msgid "View Raw Message Source"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:93
-msgid "Virtual Folder _Editor..."
-msgstr ""
-
-#: ui/evolution-mail.xml.h:94
-msgid "_Apply Filters"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:95
-msgid "_Attachment"
-msgstr "_Liite"
-
-#: ui/evolution-mail.xml.h:97
-msgid "_Create Filter From Message"
-msgstr "_Luo viestistä suodatin"
-
-#: ui/evolution-mail.xml.h:99
-msgid "_Expunge"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:100
-msgid "_Filters..."
-msgstr "S_uodattimet..."
-
-#: ui/evolution-mail.xml.h:101 ui/evolution.xml.h:34
-msgid "_Folder"
-msgstr "_Kansio"
-
-#: ui/evolution-mail.xml.h:103
-msgid "_Inline"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:104 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr "_Käännä valinta"
-
-#: ui/evolution-mail.xml.h:105
-msgid "_Mail Message"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:106
-msgid "_Mail Settings..."
-msgstr "_Sähköpostiasetukset..."
-
-#: ui/evolution-mail.xml.h:108
-msgid "_Open Selected Items"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:110
-msgid "_Quoted"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:111
-msgid "_Reply"
-msgstr "_Vastaa"
-
-#: ui/evolution-mail.xml.h:112
-msgid "_Resend Messages"
-msgstr "Lähetä viestejä _uudelleen"
-
-#: ui/evolution-mail.xml.h:114
-msgid "_Save Message As..."
-msgstr "_Tallenna viesti nimellä..."
-
-#: ui/evolution-mail.xml.h:115
-msgid "_Send / Receive"
-msgstr "_Lähetä / Vastaanota"
-
-#: ui/evolution-mail.xml.h:116
-msgid "_Threaded"
-msgstr "_Säikeistys"
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr "Liitä"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-msgid "Close the current file"
-msgstr "Sulje nykyinen tiedosto"
-
-#: ui/evolution-message-composer.xml.h:5
-msgid "Encrypt this message with PGP"
-msgstr "Salaa tämä viesti PGP:llä"
-
-#: ui/evolution-message-composer.xml.h:6
-msgid "F_ormat"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "HTML"
-msgstr "HTML"
-
-#: ui/evolution-message-composer.xml.h:8
-msgid "Insert a file as text into the message"
-msgstr "Liitä tiedosto viestiin tekstinä"
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert text file..."
-msgstr "Liitä tekstitiedosto..."
-
-#: ui/evolution-message-composer.xml.h:11
-msgid "Open a file"
-msgstr "Avaa tiedosto"
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "PGP Encrypt"
-msgstr "PGP-salaus"
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Sign"
-msgstr "PGP-allekirjoitus"
-
-#: ui/evolution-message-composer.xml.h:17
-msgid "Save _Draft"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:18
-msgid "Save in _folder... (FIXME)"
-msgstr "Tallenna _kansioon..."
-
-#: ui/evolution-message-composer.xml.h:19
-msgid "Save in folder..."
-msgstr "Tallenna kansioon..."
-
-#: ui/evolution-message-composer.xml.h:21
-msgid "Save the current file with a different name"
-msgstr "Tallenna tiedosto uudella nimellä"
-
-#: ui/evolution-message-composer.xml.h:22
-msgid "Save the message in a specified folder"
-msgstr "Tallenna viesti johonkin tiettyyn kansioon"
-
-#: ui/evolution-message-composer.xml.h:23
-msgid "Send"
-msgstr "Lähetä"
-
-#: ui/evolution-message-composer.xml.h:24
-msgid "Send _Later"
-msgstr "Lähetä _myöhemmin"
-
-#: ui/evolution-message-composer.xml.h:25
-msgid "Send _later"
-msgstr "Lähetä _myöhemmin"
-
-#: ui/evolution-message-composer.xml.h:26
-msgid "Send the mail in HTML format"
-msgstr "Lähetä viesti HTML-muodossa"
-
-#: ui/evolution-message-composer.xml.h:27
-msgid "Send the message later"
-msgstr "Lähetä viesti myöhemmin"
-
-#: ui/evolution-message-composer.xml.h:28
-msgid "Send the message now"
-msgstr "Lähetä viesti heti"
-
-#: ui/evolution-message-composer.xml.h:29
-msgid "Send this message now"
-msgstr "Lähetä viesti heti"
-
-#: ui/evolution-message-composer.xml.h:30
-msgid "Show / hide attachments"
-msgstr "Näytä / piilota liitetiedostot"
-
-#: ui/evolution-message-composer.xml.h:31
-msgid "Show _attachments"
-msgstr "Näytä _liitteet"
-
-#: ui/evolution-message-composer.xml.h:32
-msgid "Show attachments"
-msgstr "Näytä liitteet"
-
-#: ui/evolution-message-composer.xml.h:33
-msgid "Sign this message with your PGP key"
-msgstr "Allekirjoita viesti PGP-avaimellasi"
-
-#: ui/evolution-message-composer.xml.h:34
-msgid "Toggles whether the BCC field is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:35
-msgid "Toggles whether the CC field is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:36
-msgid "Toggles whether the From chooser is displayed"
-msgstr "Määrittää näytetäänkö Lähettäjä-kenttä"
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr "Määrittää näytetäänkö Vastausosoite-kenttä"
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "_Bcc Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:40
-msgid "_Cc Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:45
-msgid "_From Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:47
-msgid "_Insert"
-msgstr "Li_sää"
-
-#: ui/evolution-message-composer.xml.h:48
-msgid "_Insert text file... (FIXME)"
-msgstr "_Liitä tekstitiedosto..."
-
-#: ui/evolution-message-composer.xml.h:49
-msgid "_Open..."
-msgstr "_Avaa..."
-
-#: ui/evolution-message-composer.xml.h:50
-msgid "_Reply-To Field"
-msgstr "_Vastausosoite-kenttä"
-
-#: ui/evolution-message-composer.xml.h:52
-msgid "_Security"
-msgstr "Turvalli_suus"
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:3
-msgid "F_older"
-msgstr "_Kansio"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr "Tilaa"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr "Poista tilaus"
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-msgid "Assig_n Task (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr "Etsi uudelleen"
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-msgid "Meeting Re_quest (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-msgid "Redo"
-msgstr "Tee uudelleen"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-msgid "Redo the undone action"
-msgstr "Tee kumottu toiminto uudelleen"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-msgid "Replace"
-msgstr "Korvaa"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-msgid "Replace a string"
-msgstr "Korvaa merkkijono"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-msgid "Reply to A_ll (FIXME)"
-msgstr "Vastaa kaiki_lle"
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-msgid "S_end Status Report (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-msgid "Save the task and close the dialog box"
-msgstr "Tallenna tehtävä ja sulje ikkuna"
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "Search again for the same string"
-msgstr "Etsi uudelleen samaa merkkijonoa"
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-msgid "Search for a string"
-msgstr "Etsi merkkijonoa"
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr "Kumoa"
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-msgid "Undo the last action"
-msgstr "Kumoa edellinen toiminto"
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:29
-msgid "_Appointment (FIXME)"
-msgstr "_Tapaaminen"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-msgid "_Mark Complete (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-msgid "_Reply (FIXME)"
-msgstr "_Vastaa"
-
-#: ui/evolution-tasks.xml.h:2
-msgid "Create a new task"
-msgstr "Luo uusi tehtävä"
-
-#: ui/evolution-tasks.xml.h:3
-msgid "New Task"
-msgstr "Uusi tehtävä"
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr ""
-
-#: ui/evolution-tasks.xml.h:6
-msgid "Tasks Preferences..."
-msgstr "Tehtäväasetukset"
-
-#: ui/evolution-tasks.xml.h:9
-msgid "_Task"
-msgstr "_Tehtävä"
-
-#: ui/evolution.xml.h:1
-msgid "About Evolution..."
-msgstr "Tietoja Evolutionista..."
-
-#: ui/evolution.xml.h:3
-msgid "Close this window"
-msgstr "Sulje tämä ikkuna"
-
-#: ui/evolution.xml.h:4
-msgid "Customi_ze Toolbars..."
-msgstr "Mukauta t_yökalupalkkeja..."
-
-#: ui/evolution.xml.h:5
-msgid "Customize"
-msgstr "Mukauta"
-
-#: ui/evolution.xml.h:6
-msgid "Customize toolbars"
-msgstr "Mukauta työkalupalkkeja"
-
-#: ui/evolution.xml.h:7
-msgid "Display a different folder"
-msgstr ""
-
-#: ui/evolution.xml.h:8
-msgid "E_xit"
-msgstr "_Poistu"
-
-#: ui/evolution.xml.h:9
-msgid "Evolution _Window"
-msgstr ""
-
-#: ui/evolution.xml.h:10
-msgid "Evolution bar _shortcut"
-msgstr ""
-
-#: ui/evolution.xml.h:11
-msgid "Exit the program"
-msgstr "Poistu ohjelmasta"
-
-#: ui/evolution.xml.h:12
-msgid "Getting _Started"
-msgstr ""
-
-#: ui/evolution.xml.h:13
-msgid "Import an external file format"
-msgstr ""
-
-#: ui/evolution.xml.h:14
-msgid "Main toolbar"
-msgstr ""
-
-#: ui/evolution.xml.h:15
-msgid "Show information about Evolution"
-msgstr ""
-
-#: ui/evolution.xml.h:16
-msgid "Submit Bug Report"
-msgstr "Lähetä virheraportti"
-
-#: ui/evolution.xml.h:17
-msgid "Submit _Bug Report"
-msgstr "Lähetä _virheraportti"
-
-#: ui/evolution.xml.h:18
-msgid "Submit bug report using Bug Buddy."
-msgstr "Lähetä virheraportti käyttäen Bug Buddy:a."
-
-#: ui/evolution.xml.h:19
-msgid "Toggle"
-msgstr ""
-
-#: ui/evolution.xml.h:20
-msgid "Toggle whether to show the folder bar"
-msgstr "Määritä, näytetäänkö kansiopalkki"
-
-#: ui/evolution.xml.h:21
-msgid "Toggle whether to show the shortcut bar"
-msgstr "Määritä, näytetäänkö oikotiepalkki"
-
-#: ui/evolution.xml.h:22
-msgid "Toggle whether we are working offline."
-msgstr "Määritä, työskennelläänkö poissa linjoilta."
-
-#: ui/evolution.xml.h:23
-msgid "Using the C_ontact Manager"
-msgstr ""
-
-#: ui/evolution.xml.h:24
-msgid "Using the _Calendar"
-msgstr "_Kalenterin käyttö"
-
-#: ui/evolution.xml.h:25
-msgid "Using the _Mailer"
-msgstr ""
-
-#: ui/evolution.xml.h:26
-msgid "Work Offline"
-msgstr "Työskentele poissa linjoilta"
-
-#: ui/evolution.xml.h:27
-msgid "_About Evolution..."
-msgstr "_Tietoja Evolutionista..."
-
-#: ui/evolution.xml.h:28
-msgid "_Actions"
-msgstr "T_oiminnot"
-
-#: ui/evolution.xml.h:35
-msgid "_Folder Bar"
-msgstr "_Kansiopalkki"
-
-#: ui/evolution.xml.h:36
-msgid "_Go to Folder..."
-msgstr "_Siirry kansioon..."
-
-#: ui/evolution.xml.h:38
-msgid "_Import file..."
-msgstr ""
-
-#: ui/evolution.xml.h:39
-msgid "_Index"
-msgstr ""
-
-#: ui/evolution.xml.h:40
-msgid "_Mail message"
-msgstr ""
-
-#: ui/evolution.xml.h:42
-msgid "_New Folder"
-msgstr "_Uusi kansio"
-
-#: ui/evolution.xml.h:43
-msgid "_Shortcut Bar"
-msgstr "_Oikotiepalkki"
-
-#: ui/evolution.xml.h:47
-msgid "_Work Offline"
-msgstr ""
-
-#: views/addressbook/galview.xml.h:1
-msgid "Adress Cards"
-msgstr ""
-
-#: views/addressbook/galview.xml.h:2
-msgid "By Company"
-msgstr "Yrityksen mukaan"
-
-#: views/addressbook/galview.xml.h:3
-msgid "Phone List"
-msgstr ""
-
-#: views/mail/galview.xml.h:1
-msgid "By Sender"
-msgstr "Lähettäjän mukaan"
-
-#: views/mail/galview.xml.h:2
-msgid "By Status"
-msgstr "Tilan mukaan"
-
-#: views/mail/galview.xml.h:3
-msgid "By Subject"
-msgstr "Aiheen mukaan"
-
-#: views/mail/galview.xml.h:4
-msgid "Messages"
-msgstr "Viestit"
-
-#: views/tasks/galview.xml.h:2
-msgid "With Category"
-msgstr "Ryhmän mukaan"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:392
-msgid "Tentative"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:393
-msgid "Busy"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:394
-msgid "Out of Office"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:395
-msgid "No Information"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:411
-msgid "_Invite Others..."
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:431
-msgid "_Options"
-msgstr "_Asetukset"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:448
-msgid "Show _Only Working Hours"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:461
-msgid "Show _Zoomed Out"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:479
-msgid "_Update Free/Busy"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:497
-msgid "_<<"
-msgstr "_<<"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:514
-msgid "_Autopick"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:528
-msgid ">_>"
-msgstr ">_>"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:545
-msgid "_All People and Resources"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:558
-msgid "All _People and One Resource"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:571
-msgid "_Required People"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:584
-msgid "Required People and _One Resource"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:607
-msgid "Meeting _start time:"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:631
-msgid "Meeting _end time:"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:744
-msgid "All Attendees"
-msgstr ""
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:469
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2477
-msgid "%A, %B %d, %Y"
-msgstr "%A, %B %d, %Y"
-
-#: widgets/menus/gal-view-menus.c:176
-msgid "_Current View"
-msgstr "_Nykyinen näkymä"
-
-#: widgets/menus/gal-view-menus.c:202
-msgid "Define Views"
-msgstr ""
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:422
-msgid "MTWTFSS"
-msgstr "MTKTPLS"
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1061 widgets/misc/e-calendar-item.c:2756
-msgid "%B %Y"
-msgstr "%B %Y"
-
-#: widgets/misc/e-cell-date-edit.c:221 widgets/misc/e-dateedit.c:418
-msgid "Now"
-msgstr "Nyt"
-
-#: widgets/misc/e-cell-date-edit.c:245
-msgid "OK"
-msgstr "OK"
-
-#: widgets/misc/e-cell-date-edit.c:726
-#, c-format
-msgid "The time must be in the format: %s"
-msgstr "Ajan tulee olla muodossa: %s"
-
-#: widgets/misc/e-clipped-label.c:112
-msgid "..."
-msgstr "..."
-
-#: widgets/misc/e-filter-bar.c:168
-msgid "Save Search"
-msgstr "Tallenna haku"
-
-#: widgets/misc/e-filter-bar.c:239
-msgid "Advanced Search"
-msgstr "Edistynyt haku"
-
-#: widgets/misc/e-filter-bar.h:101
-msgid "Save As..."
-msgstr "Tallenna nimellä..."
-
-#: widgets/misc/e-filter-bar.h:102
-msgid "Show All"
-msgstr "Näytä kaikki"
-
-#: widgets/misc/e-filter-bar.h:103
-msgid "Edit..."
-msgstr "Muokkaa..."
-
-#: widgets/misc/e-filter-bar.h:104
-msgid "Advanced..."
-msgstr ""
-
-#: widgets/misc/e-messagebox.c:152
-msgid "Information"
-msgstr "Tiedoksi"
-
-#: widgets/misc/e-messagebox.c:159
-msgid "Warning"
-msgstr "Varoitus"
-
-#: widgets/misc/e-messagebox.c:173
-msgid "Question"
-msgstr "Kysymys"
-
-#: widgets/misc/e-messagebox.c:180
-msgid "Message"
-msgstr "Viesti"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:224
-msgid "Don't show this message again."
-msgstr "Älä näytä tätä viestiä uudelleen."
-
-#: widgets/misc/e-search-bar.c:155
-msgid "Sear_ch"
-msgstr "_Etsi"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-msgid "The Personal Addressbook Server"
-msgstr ""
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr ""
-
-#: wombat/wombat.c:173
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr "setup_vfs(): GNOME-VFS:n alustus epäonnistui"
-
-#: wombat/wombat.c:185
-msgid "init_corba(): could not initialize GNOME"
-msgstr "init_corba(): GNOME:n alustus epäonnistui"
-
-#: wombat/wombat.c:198
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "init_bonobo(): Bonobon alustus epäonnistui"
diff --git a/po/flu-danish b/po/flu-danish
deleted file mode 100644
index 51953e5980..0000000000
--- a/po/flu-danish
+++ /dev/null
@@ -1,114 +0,0 @@
-#~ msgid "A folder containing mail items"
-#~ msgstr "En mappe som indeholder e-post ting"
-
-#~ msgid "A folder containing contacts"
-#~ msgstr "En mappe med kontakter"
-
-#~ msgid "A folder containing calendar entries"
-#~ msgstr "En mappe med kalenderting"
-
-#~ msgid "A folder containing tasks"
-#~ msgstr "En mappe med opgaver"
-
-#~ msgid "Evolution can not create its local folders"
-#~ msgstr "Evolution kan ikke oprette sine lokale mapper"
-
-#~ msgid "Large Icons"
-#~ msgstr "Store ikoner"
-
-#~ msgid "Small Icons"
-#~ msgstr "Små ikoner"
-
-#~ msgid "Add New Group"
-#~ msgstr "Tilføj ny gruppe"
-
-#~ msgid "Remove Group"
-#~ msgstr "Fjern gruppe"
-
-#~ msgid "Rename Group"
-#~ msgstr "Omdøb gruppe"
-
-#~ msgid "Add Shortcut"
-#~ msgstr "Tilføj genvej"
-
-#~ msgid "Open Folder"
-#~ msgstr "Åbn mappe"
-
-#~ msgid "Open in New Window"
-#~ msgstr "Åbn i et nyt vindue"
-
-#~ msgid "Advanced Find"
-#~ msgstr "Avanceret søgning"
-
-#~ msgid "Remove From Shortcut Bar"
-#~ msgstr "Fjern fra genvejslinjen"
-
-#~ msgid "Rename Shortcut"
-#~ msgstr "Omdøb genvej"
-
-#~ msgid "Properties"
-#~ msgstr "Egenskaber"
-
-#~ msgid "Today"
-#~ msgstr "I dag"
-
-#~ msgid "Executive Summary"
-#~ msgstr "Oversigt"
-
-#~ msgid "Inbox"
-#~ msgstr "Indboks"
-
-#~ msgid "New mail messages"
-#~ msgstr "Nye e-post meddelelser"
-
-#~ msgid "Sent messages"
-#~ msgstr "Sendte meddelelser"
-
-#~ msgid "Sent mail messages"
-#~ msgstr "Sendte e-post meddelelser"
-
-#~ msgid "Drafts"
-#~ msgstr "Kladder"
-
-#~ msgid "Draft mail messages"
-#~ msgstr "E-post-kladder"
-
-#~ msgid "Calendar"
-#~ msgstr "Kalender"
-
-#~ msgid "Your calendar"
-#~ msgstr "Din kalender"
-
-#~ msgid "Contacts"
-#~ msgstr "Kontakter"
-
-#~ msgid "Your contacts list"
-#~ msgstr "Din kontaktliste"
-
-#~ msgid "Tasks"
-#~ msgstr "Opgaver"
-
-#~ msgid "Tasks list"
-#~ msgstr "Opgaveliste"
-
-#~ msgid "Main Shortcuts"
-#~ msgstr "Hovedgenveje"
-
-#~ msgid "Other Shortcuts"
-#~ msgstr "Andre genveje"
-
-#~ msgid "New group"
-#~ msgstr "Ny gruppe"
-
-#~ msgid "Enables some debugging functions"
-#~ msgstr "Aktivér fejlsøgningsfunktioner"
-
-#~ msgid "LEVEL"
-#~ msgstr "LEVEL"
-
-#~ msgid ""
-#~ "It was not possible to setup the Evolution startup files. Please\n"
-#~ "fix the problem, and restart Evolution"
-#~ msgstr ""
-#~ "Det var ikke muligt at sætte Evolutions opstartsfiler op. Venligst\n"
-#~ "ret problemet, og genstart Evolution"
diff --git a/po/fr.po b/po/fr.po
deleted file mode 100644
index 2b910af395..0000000000
--- a/po/fr.po
+++ /dev/null
@@ -1,10371 +0,0 @@
-# evolution fr.po
-# Copyright (C) 2000-2001 Free Software Foundation, Inc.
-# Vincent Renardias <vincent@debian.org>, 2000.
-# Christophe Merlet (RedFox) <redfox@eikonex.org>, 2000-2001.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: evolution 0.8\n"
-"POT-Creation-Date: 2001-04-14 08:51-0400\n"
-"PO-Revision-Date: 2001-02-13 13:03+0100\n"
-"Last-Translator: Christophe Merlet (RedFox) <redfox@eikonex.org>\n"
-"Language-Team: GNOME French Team <gnomefr@gnomefr.traduc.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: addressbook/backend/ebook/e-card.c:3209
-msgid "Card: "
-msgstr "Carte : "
-
-#: addressbook/backend/ebook/e-card.c:3211
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-"\n"
-"Nom : "
-
-#: addressbook/backend/ebook/e-card.c:3212
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-"\n"
-" Préfixe : "
-
-#: addressbook/backend/ebook/e-card.c:3213
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-"\n"
-" Donné : "
-
-#: addressbook/backend/ebook/e-card.c:3214
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-"\n"
-" Additionnel : "
-
-#: addressbook/backend/ebook/e-card.c:3215
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-"\n"
-" Famille : "
-
-#: addressbook/backend/ebook/e-card.c:3216
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-"\n"
-" Suffixe : "
-
-#: addressbook/backend/ebook/e-card.c:3230
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-"\n"
-"Date de naissance : "
-
-#: addressbook/backend/ebook/e-card.c:3241
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-"\n"
-"Addresse :"
-
-#: addressbook/backend/ebook/e-card.c:3243
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-"\n"
-" Boite postale : "
-
-#: addressbook/backend/ebook/e-card.c:3244
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-"\n"
-" Ext : "
-
-#: addressbook/backend/ebook/e-card.c:3245
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-"\n"
-" Rue : "
-
-#: addressbook/backend/ebook/e-card.c:3246
-msgid ""
-"\n"
-" City: "
-msgstr ""
-"\n"
-" Ville : "
-
-#: addressbook/backend/ebook/e-card.c:3247
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-"\n"
-" Région : "
-
-#: addressbook/backend/ebook/e-card.c:3248
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-"\n"
-" Code postal : "
-
-#: addressbook/backend/ebook/e-card.c:3249
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-"\n"
-" Pays : "
-
-#: addressbook/backend/ebook/e-card.c:3262
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-"\n"
-"Dénomination : "
-
-#: addressbook/backend/ebook/e-card.c:3274
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-"\n"
-"Téléphones :\n"
-
-#: addressbook/backend/ebook/e-card.c:3277
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-"\n"
-"Téléphone :"
-
-#: addressbook/backend/ebook/e-card.c:3301
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-"\n"
-"Adresse électronique :\n"
-
-#: addressbook/backend/ebook/e-card.c:3304
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-"\n"
-"Adresse électronique 2 :"
-
-#: addressbook/backend/ebook/e-card.c:3323
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-"\n"
-"Messager : "
-
-#: addressbook/backend/ebook/e-card.c:3329
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-"\n"
-"Fuseau horaire : "
-
-#: addressbook/backend/ebook/e-card.c:3337
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-"\n"
-"Situation géographique : "
-
-#: addressbook/backend/ebook/e-card.c:3341
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-"\n"
-"Profession : "
-
-#: addressbook/backend/ebook/e-card.c:3353
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-"\n"
-"Org : "
-
-#: addressbook/backend/ebook/e-card.c:3354
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-"\n"
-" Nom : "
-
-#: addressbook/backend/ebook/e-card.c:3355
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-"\n"
-" Unité : "
-
-#: addressbook/backend/ebook/e-card.c:3356
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-"\n"
-" Unité 2 : "
-
-#: addressbook/backend/ebook/e-card.c:3357
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-"\n"
-" Unité 3 : "
-
-#: addressbook/backend/ebook/e-card.c:3358
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-"\n"
-" Unité 4 : "
-
-#: addressbook/backend/ebook/e-card.c:3362
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-"\n"
-"Catégories : "
-
-#: addressbook/backend/ebook/e-card.c:3363
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-"\n"
-"Commentaire : "
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3376
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-"\n"
-"Chaîne unique : "
-
-#: addressbook/backend/ebook/e-card.c:3379
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-"\n"
-"Clé publique : "
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:1
-msgid "Factory to import GnomeCard files into Evolution."
-msgstr ""
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:2
-msgid "Imports GnomeCard files into Evolution."
-msgstr ""
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:21
-#: addressbook/backend/ebook/load-pine-addressbook.c:22
-#: addressbook/backend/ebook/test-client-list.c:23
-#: addressbook/backend/ebook/test-client.c:33
-#: addressbook/conduit/address-conduit.c:1092
-#: addressbook/gui/component/addressbook-factory.c:43
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:72 calendar/gui/main.c:57
-msgid "Could not initialize Bonobo"
-msgstr "Ne peut initialiser Bonobo"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr "Le curseur ne peut être chargé\n"
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr "EBook non chargé\n"
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr "Ne peut démarrer le serveur wombat"
-
-#: addressbook/conduit/address-conduit.c:655
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr "Ne peut démarrer wombat"
-
-#: addressbook/conduit/address-conduit.c:687
-#: addressbook/conduit/address-conduit.c:690
-msgid "Could not read pilot's Address application block"
-msgstr "Ne peut lire le bloc d'application Adresse du Pilot"
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:7
-msgid "Add"
-msgstr "Ajouter"
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr "Anni_verssaire :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr "T_ravail"
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr "_Fax travail"
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-msgid "C_ontacts..."
-msgstr "C_ontacts..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr "Ca_tégories..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-msgid "Contact Editor"
-msgstr "Éditeur de contacts"
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr "Détails"
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr "Classer comme :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-msgid "General"
-msgstr "Général"
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr "Nouveau type de téléphone"
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-msgid "No_tes:"
-msgstr "No_tes :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr "Types de téléphones"
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1284
-msgid "Primary Email"
-msgstr "E-mail principal"
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr "Veut recevoir des messages _HTML"
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr "Page Web :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:74
-msgid "_Add"
-msgstr "_Ajouter"
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr "_Adresse..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr "Nom de l'_assistant :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr "_Date de naissance :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr "_Travail"
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-msgid "_Company:"
-msgstr "So_ciété :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/mail-config.glade.h:75 ui/evolution-event-editor.xml.h:57
-#: ui/evolution-mail.xml.h:91 ui/evolution-task-editor-dialog.xml.h:69
-msgid "_Delete"
-msgstr "_Supprimer"
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr "_Département :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr "_Nom complet..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-msgid "_Home"
-msgstr "_Maison"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-msgid "_Job title:"
-msgstr "_Profession :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr "No_m du directeur :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-msgid "_Mobile"
-msgstr "_Mobile"
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr "Sur_nom :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr "_Bureau :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr "_Profession :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr "_Conjoint(e) :"
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr "_C'est l'adresse de la liste de diffusion"
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-msgid "Delete Contact?"
-msgstr "Supprimer le contact ?"
-
-#: addressbook/contact-editor/e-contact-editor.c:603
-#, fuzzy
-msgid "This contact belongs to these categories:"
-msgstr "Élement(s) appartenant à ces catégories : "
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-#: addressbook/gui/widgets/e-addressbook-view.c:676
-msgid "Assistant"
-msgstr "Assistant"
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/contact-editor/e-contact-editor.c:1310
-msgid "Business"
-msgstr "Travail"
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-msgid "Business 2"
-msgstr "Travail 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#: addressbook/gui/widgets/e-addressbook-view.c:656
-msgid "Business Fax"
-msgstr "Fax travail"
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Callback"
-msgstr "Répondeur"
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "Car"
-msgstr "Voiture"
-
-#: addressbook/contact-editor/e-contact-editor.c:1248
-msgid "Company"
-msgstr "Société"
-
-#: addressbook/contact-editor/e-contact-editor.c:1249
-#: addressbook/contact-editor/e-contact-editor.c:1311
-msgid "Home"
-msgstr "Maison"
-
-#: addressbook/contact-editor/e-contact-editor.c:1250
-msgid "Home 2"
-msgstr "Maison 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1251
-#: addressbook/gui/widgets/e-addressbook-view.c:657
-msgid "Home Fax"
-msgstr "Fax maison"
-
-#: addressbook/contact-editor/e-contact-editor.c:1252
-#: addressbook/gui/widgets/e-addressbook-view.c:660
-msgid "ISDN"
-msgstr "RNIS"
-
-#: addressbook/contact-editor/e-contact-editor.c:1253
-msgid "Mobile"
-msgstr "Mobile"
-
-#: addressbook/contact-editor/e-contact-editor.c:1254
-#: addressbook/contact-editor/e-contact-editor.c:1312
-#: calendar/gui/e-meeting-dialog.glade.h:14 mail/mail-config.glade.h:40
-msgid "Other"
-msgstr "Autre"
-
-#: addressbook/contact-editor/e-contact-editor.c:1255
-#: addressbook/gui/widgets/e-addressbook-view.c:662
-msgid "Other Fax"
-msgstr "Fax autre"
-
-#: addressbook/contact-editor/e-contact-editor.c:1256
-#: addressbook/gui/widgets/e-addressbook-view.c:663
-msgid "Pager"
-msgstr "Pager"
-
-#: addressbook/contact-editor/e-contact-editor.c:1257
-msgid "Primary"
-msgstr "Principal"
-
-#: addressbook/contact-editor/e-contact-editor.c:1258
-#: addressbook/gui/widgets/e-addressbook-view.c:664
-msgid "Radio"
-msgstr "Radio"
-
-#: addressbook/contact-editor/e-contact-editor.c:1259
-#: addressbook/gui/widgets/e-addressbook-view.c:665
-msgid "Telex"
-msgstr "Telex"
-
-#: addressbook/contact-editor/e-contact-editor.c:1260
-msgid "TTY/TDD"
-msgstr "TTY/TDD"
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:668
-msgid "Email 2"
-msgstr "E-mail 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/gui/widgets/e-addressbook-view.c:669
-msgid "Email 3"
-msgstr "E-mail 3"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:223
-msgid "Contact Quick-Add"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-quick-add.c:225
-#, fuzzy
-msgid "Edit Full"
-msgstr "Éditer les Filtres"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:262
-#: addressbook/gui/widgets/e-addressbook-view.c:643
-#, fuzzy
-msgid "Full Name"
-msgstr "Nom complet :"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:268
-#, fuzzy
-msgid "E-mail"
-msgstr "Adresse élec."
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr "Adresse _2 :"
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr "Canada"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr "Verifier l'adresse"
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr "Pa_ys :"
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr "Finlande"
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr "USA"
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr "_Adresse :"
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-msgid "_City:"
-msgstr "_Ville :"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr "Boîte _postale :"
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr "État/_Province :"
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr "_Code postal :"
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr "Vérifier le nom complet"
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:4
-#, fuzzy
-msgid "I"
-msgstr "Si"
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:8
-#, fuzzy
-msgid "Miss"
-msgstr "est"
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr "_Prénom :"
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr "_Nom :"
-
-#: addressbook/contact-editor/fullname.glade.h:15
-msgid "_Middle:"
-msgstr "Second préno_m :"
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr "_Suffixe :"
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr "_Titre :"
-
-#: addressbook/gui/component/addressbook.c:241
-msgid "As _Minicards"
-msgstr "Comme _minicartes"
-
-#: addressbook/gui/component/addressbook.c:247
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr "Comme _tableau"
-
-#: addressbook/gui/component/addressbook.c:399
-#, c-format
-msgid "Enter password for %s"
-msgstr "Entrer le mot de passe pour %s"
-
-#: addressbook/gui/component/addressbook.c:427
-msgid "Unable to open addressbook"
-msgstr "Impossible d'ouvrir le carnet d'adresses"
-
-#: addressbook/gui/component/addressbook.c:432
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or have tried\n"
-"to access an LDAP server and don't have LDAP support\n"
-"compiled in. If you've entered a URI, check the URI for\n"
-"correctness and reenter. If not, you probably have\n"
-"attempted to access an LDAP server. If you wish to be\n"
-"able to use LDAP, you'll need to download and install\n"
-"OpenLDAP and recompile and install Evolution.\n"
-msgstr ""
-"Il nous est impossible d'ouvrir ce carnet d'adresses. Soit\n"
-"parce que vous avez entrez une URI incorrecte, soit\n"
-"parce que vous avez essayer d'accéder à un serveur LDAP\n"
-"et que le support LDAP n'a pas été compilé. Si vous avez\n"
-"entré une URI, vérifiez sa validité et réentrez la. Sinon\n"
-"vous essayer probablement d'accéder à un serveur LDAP,\n"
-"vous devriez télécharger et installer OpenLDAP, puis\n"
-"recompiler et installer Evolution.\n"
-
-#: addressbook/gui/component/addressbook.c:555
-msgid "Show All"
-msgstr "Afficher tout"
-
-#: addressbook/gui/component/addressbook.c:557
-msgid "Advanced..."
-msgstr "Avancée..."
-
-#: addressbook/gui/component/addressbook.c:587
-msgid "Any field contains"
-msgstr "N'importe quel champ contient"
-
-#: addressbook/gui/component/addressbook.c:588
-msgid "Name contains"
-msgstr "Le nom contient"
-
-#: addressbook/gui/component/addressbook.c:589
-msgid "Email contains"
-msgstr "L'e-mail contient"
-
-#: addressbook/gui/component/addressbook.c:732
-msgid "The URI that the Folder Browser will display"
-msgstr "L'URI que le navigateur de dossier affichera"
-
-#: addressbook/gui/component/addressbook-storage.c:99
-msgid "Other Contacts"
-msgstr "Autres contacts"
-
-#: addressbook/gui/component/addressbook-config.c:148
-msgid "LDAP Server"
-msgstr "Serveur LDAP"
-
-#: addressbook/gui/component/addressbook-config.c:150
-msgid "File"
-msgstr "Fichier"
-
-#: addressbook/gui/component/addressbook-config.c:153
-msgid "Unknown addressbook type"
-msgstr "Type de carnet d'adresses inconnu"
-
-#: addressbook/gui/component/addressbook-config.c:163
-msgid "None (anonymous mode)"
-msgstr "Aucun (mode anonyme)"
-
-#: addressbook/gui/component/addressbook-config.c:165
-#: camel/camel-sasl-plain.c:32 camel/providers/imap/camel-imap-provider.c:80
-#: camel/providers/nntp/camel-nntp-store.c:293
-#: camel/providers/pop3/camel-pop3-provider.c:67 mail/mail-config.glade.h:43
-msgid "Password"
-msgstr "Mot de passe"
-
-#: addressbook/gui/component/addressbook-config.c:167
-msgid "SASL"
-msgstr "SASL"
-
-#: addressbook/gui/component/addressbook-config.c:170
-msgid "Unknown auth type"
-msgstr "Type d'identification inconnu"
-
-#: addressbook/gui/component/addressbook-config.c:179
-msgid "Base"
-msgstr "Base"
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "One"
-msgstr "Un"
-
-#: addressbook/gui/component/addressbook-config.c:183
-msgid "Subtree"
-msgstr "Sous-arborescence"
-
-#: addressbook/gui/component/addressbook-config.c:186
-msgid "Unknown scope type"
-msgstr "Type de domaine inconnu"
-
-#: addressbook/gui/component/addressbook-config.c:353
-msgid "Bind DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:354
-msgid "FIXME Bind DN Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:356
-#: mail/mail-config.glade.h:50
-msgid "Remember this password"
-msgstr "Se souvenir de ce mot de passe"
-
-#: addressbook/gui/component/addressbook-config.c:406
-#: mail/mail-config.glade.h:28
-msgid "Host:"
-msgstr "Hôte :"
-
-#: addressbook/gui/component/addressbook-config.c:407
-msgid "FIXME Host help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:409
-msgid "Port:"
-msgstr "Port :"
-
-#: addressbook/gui/component/addressbook-config.c:410
-msgid "FIXME Port help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:414
-msgid "Root DN:"
-msgstr "Racine DN :"
-
-#: addressbook/gui/component/addressbook-config.c:415
-msgid "FIXME Root DN help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:435
-msgid "Search Scope:"
-msgstr "Domaine de recherche :"
-
-#: addressbook/gui/component/addressbook-config.c:489
-msgid "Authentication:"
-msgstr "Identification :"
-
-#: addressbook/gui/component/addressbook-config.c:507
-#: mail/mail-config.glade.h:44
-msgid "Path:"
-msgstr "Chemin :"
-
-#: addressbook/gui/component/addressbook-config.c:508
-msgid "FIXME Path Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:513
-msgid "Create path if it doesn't exist."
-msgstr "Créer le chemin si il n'existe pas."
-
-#: addressbook/gui/component/addressbook-config.c:647
-msgid "Edit Addressbook"
-msgstr "Éditer le carnet d'adresses"
-
-#: addressbook/gui/component/addressbook-config.c:649
-msgid "Add Addressbook"
-msgstr "Ajouter un carnet d'adresses"
-
-#: addressbook/gui/component/addressbook-config.c:665
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-"Sélectionnez le type de carnet d'adresse que vous avez, et entrez les "
-"informations le concernant."
-
-#: addressbook/gui/component/addressbook-config.c:671
-#: mail/mail-config.glade.h:35
-msgid "Name:"
-msgstr "Nom :"
-
-#: addressbook/gui/component/addressbook-config.c:672
-msgid "FIXME Name help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:674
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr "Description :"
-
-#: addressbook/gui/component/addressbook-config.c:675
-msgid "FIXME Description help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-msgid "Addressbook Sources"
-msgstr "Sources du carnet d'adresses"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: addressbook/gui/widgets/e-addressbook-view.c:578
-#: addressbook/gui/widgets/e-minicard.c:673
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:8 mail/folder-browser.c:597
-#: mail/mail-config.glade.h:19 mail/mail-view.c:156
-#: ui/evolution-addressbook.xml.h:3 ui/evolution-event-editor.xml.h:17
-#: ui/evolution-mail.xml.h:11 ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr "Supprimer"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:23
-msgid "Edit"
-msgstr "Éditer"
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-msgid "Name"
-msgstr "Nom"
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-msgid "URI"
-msgstr "URI"
-
-#: addressbook/gui/component/e-address-widget.c:365
-#, fuzzy
-msgid "Disable Queries"
-msgstr "Catégories disponibles : "
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Enable Queries (Dangerous!)"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:388
-#: addressbook/gui/component/select-names/e-select-names-popup.c:210
-msgid "Edit Contact Info"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:424
-#: addressbook/gui/component/select-names/e-select-names-popup.c:269
-#, fuzzy
-msgid "Add to Contacts"
-msgstr "Autres contacts"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-msgid "A Bonobo control for an address popup."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A Bonobo control for displaying an address."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-#, fuzzy
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr "Utilitaire de configuration pour le conduit 'Contact' d'Evolution.\n"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-#, fuzzy
-msgid "Evolution Addressbook minicard viewer"
-msgstr "Conduit 'Contact' d'Evolution"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-msgid "Evolution component for handling contacts."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-msgid "Factory for the Addressbook Minicard control"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-#, fuzzy
-msgid "Factory for the Addressbook's address displayer"
-msgstr "Cliquez ici pour le carnet d'adresses"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-#, fuzzy
-msgid "Factory for the Addressbook's address popup"
-msgstr "Cliquez ici pour le carnet d'adresses"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:10
-#, fuzzy
-msgid "Factory for the Evolution addressbook component."
-msgstr "Utilitaire de configuration pour le conduit 'Contact' d'Evolution.\n"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:11
-#, fuzzy
-msgid "Factory for the sample Addressbook control"
-msgstr "Cliquez ici pour le carnet d'adresses"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-#, fuzzy
-msgid "Evolution's addressbook name selection interface."
-msgstr "Conduit 'Contact' d'Evolution"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr ""
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:131
-#: composer/e-msg-composer-attachment-bar.c:468 filter/filter-filter.c:402
-#: filter/filter-rule.c:549 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:265 shell/e-shortcuts-view.c:388
-msgid "Remove"
-msgstr "Enlever"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:146
-#, fuzzy
-msgid "Remove All"
-msgstr "Enlever"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr "Rechercher..."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-msgid "Message Recipients"
-msgstr "Destinataires du message"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-msgid "Select Names"
-msgstr "Sélectionnez des noms"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-msgid "Select name from:"
-msgstr "Sélectionnez un nom depuis :"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:158
-msgid "Search"
-msgstr "Rechercher"
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr "123"
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr "a"
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr "b"
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr "c"
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr "d"
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr "e"
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr "f"
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr "g"
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr "h"
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr "i"
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr "j"
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr "k"
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr "l"
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr "m"
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr "n"
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-msgid "o"
-msgstr "o"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr "p"
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr "q"
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-msgid "r"
-msgstr "r"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr "s"
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr "t"
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr "u"
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr "v"
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr "w"
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr "x"
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr "y"
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr "z"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:513
-#: addressbook/gui/widgets/e-addressbook-view.c:573
-#: addressbook/gui/widgets/e-minicard.c:466
-#: addressbook/gui/widgets/e-minicard.c:668
-msgid "Save as VCard"
-msgstr "Enregistrer comme VCard"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:574
-#: addressbook/gui/widgets/e-minicard.c:669
-msgid "Send contact to other"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:575
-#: addressbook/gui/widgets/e-minicard.c:670
-#, fuzzy
-msgid "Send message to contact"
-msgstr "Envoie un _message au contact..."
-
-#: addressbook/gui/widgets/e-addressbook-view.c:576
-#: addressbook/gui/widgets/e-minicard.c:671 mail/folder-browser.c:572
-#: mail/mail-view.c:154 ui/evolution-addressbook.xml.h:9
-#: ui/evolution-calendar.xml.h:23 ui/evolution-mail.xml.h:50
-#: ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr "Imprimer"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:577
-#: addressbook/gui/widgets/e-minicard.c:672
-#, fuzzy
-msgid "Print Envelope"
-msgstr "Imprimer une en_veloppe..."
-
-#: addressbook/gui/widgets/e-addressbook-view.c:641
-msgid "* Click here to add a contact *"
-msgstr "* Cliquez ici pour ajouter un contact *"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:642
-#, fuzzy
-msgid "File As"
-msgstr "Classer comme :"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:644
-msgid "Email"
-msgstr "Adresse élec."
-
-#: addressbook/gui/widgets/e-addressbook-view.c:645
-#, fuzzy
-msgid "Primary Phone"
-msgstr "Principal"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:646
-#, fuzzy
-msgid "Assistant Phone"
-msgstr "Assistant"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:647
-#, fuzzy
-msgid "Business Phone"
-msgstr "Travail 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:648
-#, fuzzy
-msgid "Callback Phone"
-msgstr "Répondeur"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:649
-#, fuzzy
-msgid "Company Phone"
-msgstr "Société"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:650
-#, fuzzy
-msgid "Home Phone"
-msgstr "Maison 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:651
-msgid "Organization"
-msgstr "Organisation"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:652
-#, fuzzy
-msgid "Business Address"
-msgstr "Travail 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:653
-#, fuzzy
-msgid "Home Address"
-msgstr "Verifier l'adresse"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:654
-#, fuzzy
-msgid "Mobile Phone"
-msgstr "Mobile"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:655
-msgid "Car Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:658
-#, fuzzy
-msgid "Business Phone 2"
-msgstr "Travail 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:659
-#, fuzzy
-msgid "Home Phone 2"
-msgstr "Maison 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:661
-#, fuzzy
-msgid "Other Phone"
-msgstr "Autres contacts"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:666
-#, fuzzy
-msgid "TTY"
-msgstr "TTY/TDD"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:667
-#, fuzzy
-msgid "Other Address"
-msgstr "Verifier l'adresse"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:670
-msgid "Web Site"
-msgstr "Site Web"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:671
-msgid "Department"
-msgstr "Département"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:672
-msgid "Office"
-msgstr "Bureau"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:673
-msgid "Title"
-msgstr "Titre"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:674
-msgid "Profession"
-msgstr "Profession"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:675
-msgid "Manager"
-msgstr "Gestionnaire"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:677
-msgid "Nickname"
-msgstr "Surnom"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:678
-msgid "Spouse"
-msgstr "Conjoint(e)"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:679
-msgid "Note"
-msgstr "Note"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:680
-msgid "Free-busy URL"
-msgstr ""
-
-#: addressbook/gui/widgets/e-minicard-control.c:282
-msgid "Save in addressbook"
-msgstr "Enregistrer dans le carnet d'adresses"
-
-#: addressbook/gui/widgets/e-minicard-view.c:166
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-"\n"
-"\n"
-"Il n'y a aucun éléments à afficher dans cette vue.\n"
-"\n"
-"Double-cliquez ici pour créer un nouveau contact."
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:26
-#, fuzzy
-msgid "Card View"
-msgstr "Carte : "
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr "10 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr "8 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr "Formulaires blancs à la fin :"
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr "Corps"
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr "Bas :"
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr "Dimensions :"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr "Police..."
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr "Polices"
-
-#: addressbook/printing/e-contact-print.glade.h:9
-msgid "Footer:"
-msgstr "Pied de page :"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr "Format"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-msgid "Header"
-msgstr "En-tête"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr "En-tête/Pied de page"
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr "En-têtes"
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr "En-têtes pour chaque lettre"
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr "Hauteur :"
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr "Se suivre immédiatement l'un l'autre"
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr "Inclure :"
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr "Paysage"
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr "Gauche :"
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr "Sélecteurs de lettre sur le coté"
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr "Marges"
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr "Nombre de colonnes :"
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr "Options"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr "Orientation"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr "Page"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-msgid "Page Setup:"
-msgstr "Configuration de la page :"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr "Papier"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr "Source de papier :"
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr "Portrait"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr "Aperçu :"
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr "Imprimer en utilisant un ombrage gris"
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr "Retourner sur les pages paires"
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr "Droite :"
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr "Sections :"
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr "Ombrage"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-msgid "Size:"
-msgstr "Taille :"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr "Démarrer sur une nouvelle page"
-
-#: addressbook/printing/e-contact-print.glade.h:38
-msgid "Style name:"
-msgstr "Nom du style :"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr "Haut :"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-msgid "Type:"
-msgstr "Type :"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr "Largeur :"
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr "Erreur lors de la communication avec le serveur de calendrier"
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr "Ne peut lire le bloc d'application Calendrier du Pilot"
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr "Ne peut lire le bloc d'application « À faire » du Pilot"
-
-#: calendar/gui/calendar-commands.c:266
-msgid "File not found"
-msgstr "Fichier introuvable"
-
-#: calendar/gui/calendar-commands.c:290
-msgid "Open calendar"
-msgstr "Ouvrir le calendrier"
-
-#: calendar/gui/calendar-commands.c:332
-msgid "Save calendar"
-msgstr "Enregistrer le calendrier"
-
-#: calendar/gui/calendar-commands.c:468
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-"Ne peut créer la vue du calendrier. Veuillez vérifier votre configuration "
-"d'ORBit et d'OAF."
-
-#: calendar/gui/calendar-model.c:360 calendar/gui/calendar-model.c:895
-#: calendar/gui/e-calendar-table.c:330
-msgid "Public"
-msgstr "Public"
-
-#: calendar/gui/calendar-model.c:363 calendar/gui/calendar-model.c:897
-#: calendar/gui/e-calendar-table.c:331
-msgid "Private"
-msgstr "Privé"
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:899
-#: calendar/gui/e-calendar-table.c:332
-msgid "Confidential"
-msgstr "Confidentiel"
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/event-editor.c:1592
-#: calendar/gui/event-editor.c:1619
-#: camel/providers/smtp/camel-smtp-transport.c:218
-msgid "Unknown"
-msgstr "Inconnu"
-
-#: calendar/gui/calendar-model.c:457
-msgid "N"
-msgstr "N"
-
-#: calendar/gui/calendar-model.c:457
-msgid "S"
-msgstr "S"
-
-#: calendar/gui/calendar-model.c:459
-msgid "E"
-msgstr "E"
-
-#: calendar/gui/calendar-model.c:459
-msgid "W"
-msgstr "O"
-
-#: calendar/gui/calendar-model.c:497 calendar/gui/calendar-model.c:1063
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:352 mail/message-list.c:660
-msgid "High"
-msgstr "Haute"
-
-#: calendar/gui/calendar-model.c:499 calendar/gui/calendar-model.c:1065
-#: calendar/gui/calendar-model.c:1569
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:353 mail/message-list.c:659
-msgid "Normal"
-msgstr "Normal"
-
-#: calendar/gui/calendar-model.c:501 calendar/gui/calendar-model.c:1067
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:354 mail/message-list.c:658
-msgid "Low"
-msgstr "Basse"
-
-#: calendar/gui/calendar-model.c:537 calendar/gui/calendar-model.c:1119
-#: calendar/gui/e-calendar-table.c:406
-msgid "Transparent"
-msgstr "Transparent"
-
-#: calendar/gui/calendar-model.c:540 calendar/gui/calendar-model.c:1121
-#: calendar/gui/e-calendar-table.c:405
-msgid "Opaque"
-msgstr "Opaque"
-
-#: calendar/gui/calendar-model.c:635 calendar/gui/calendar-model.c:1173
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:426
-msgid "Not Started"
-msgstr "Non démarrée"
-
-#: calendar/gui/calendar-model.c:638 calendar/gui/calendar-model.c:1175
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:427
-msgid "In Progress"
-msgstr "En cours"
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1177
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:428
-msgid "Completed"
-msgstr "Complété"
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1179
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:429 camel/camel-service.c:550
-#: camel/camel-service.c:586
-msgid "Cancelled"
-msgstr "Annulé"
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:791 e-util/e-time-utils.c:278
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr "%a %m/%d/%Y %H:%M:%S"
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:794 e-util/e-time-utils.c:287
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr "%a %m/%d/%Y %I:%M:%S %p"
-
-#: calendar/gui/calendar-model.c:799
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-"La date doit être entrée dans ce format :\n"
-"\n"
-"%s"
-
-#: calendar/gui/calendar-model.c:879
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr ""
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:893 calendar/gui/calendar-model.c:1117
-#: calendar/gui/calendar-model.c:1171 calendar/gui/e-calendar-table.c:329
-#: calendar/gui/e-calendar-table.c:404 mail/mail-account-gui.c:973
-#: mail/mail-accounts.c:120 mail/mail-accounts.c:164
-#: mail/mail-config.glade.h:37 shell/e-shell-view.c:1129
-#: widgets/misc/e-cell-date-edit.c:234 widgets/misc/e-dateedit.c:430
-#: widgets/misc/e-dateedit.c:1339 widgets/misc/e-dateedit.c:1454
-msgid "None"
-msgstr "Aucune"
-
-#: calendar/gui/calendar-model.c:967
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-"La situation géographique doit être entrée dans ce format :\n"
-"\n"
-"45.436845,125.862501"
-
-#: calendar/gui/calendar-model.c:1007
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr "La valeur de pourcentage doit être comprise entre 0 et 100 inclus"
-
-#: calendar/gui/calendar-model.c:1048
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr ""
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1061
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:355
-msgid "Undefined"
-msgstr "Indéfini"
-
-#: calendar/gui/calendar-model.c:1102
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1571
-#, fuzzy
-msgid "Recurring"
-msgstr "Récurrence"
-
-#: calendar/gui/calendar-model.c:1573
-#, fuzzy
-msgid "Assigned"
-msgstr "Assigner un score"
-
-#: calendar/gui/calendar-model.c:1579
-msgid "Yes"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1579
-#, fuzzy
-msgid "No"
-msgstr "Maintenant"
-
-#: calendar/gui/calendar-summary.c:196
-msgid "%A, %e %B %Y"
-msgstr "%A %e %B %Y"
-
-#: calendar/gui/calendar-summary.c:239 calendar/gui/calendar-summary.c:245
-msgid "%I:%M%p"
-msgstr "%I:%M%p"
-
-#: calendar/gui/calendar-summary.c:437
-msgid "<b>Error loading calendar</b>"
-msgstr "<b>Erreur de chargement du calendrier</b>"
-
-#: calendar/gui/calendar-summary.c:449
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr "<b>Erreur de chargement du calendrier :<br>Méthode non supportée"
-
-#: calendar/gui/calendar-summary.c:616
-msgid "Display"
-msgstr "Affichage"
-
-#: calendar/gui/calendar-summary.c:621
-msgid "Show appointments"
-msgstr "Afficher les rendez-vous"
-
-#: calendar/gui/calendar-summary.c:629
-msgid "Show tasks"
-msgstr "Afficher les tâches"
-
-#: calendar/gui/calendar-summary.c:715 calendar/gui/e-itip-control.glade.h:7
-msgid "Loading Calendar"
-msgstr "Chargement du calendrier"
-
-#: calendar/gui/control-factory.c:126
-msgid "The URI that the calendar will display"
-msgstr "L'URI que le calendrier affichera"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr "Rappel de votre rendez-vous à "
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-msgid "Snooze"
-msgstr "Sieste"
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr "Valider"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr ""
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-#, fuzzy
-msgid "Factory for the alarm notification service"
-msgstr "Ne peut initialiser le composant de messagerie d'Evolution."
-
-#: calendar/gui/alarm-notify/notify-main.c:67 calendar/gui/main.c:52
-msgid "Could not initialize GNOME"
-msgstr "Ne peut initialiser GNOME"
-
-#: calendar/gui/alarm-notify/notify-main.c:77
-#, fuzzy
-msgid "Could not create the alarm notify service factory"
-msgstr "Ne peut créer de répertoire temporaire : %s"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:189
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr "Alarme le %A %b %d %Y %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:196
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr "Notification à propos de votre rendez-vous le %A %b %d %Y %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:207
-msgid "No summary available."
-msgstr "Aucun résumé disponible."
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:2
-msgid "Close"
-msgstr "Fermer"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-msgid "Edit appointment"
-msgstr "Éditer le rendez-vous"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr "Durée de la sieste (minutes)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr "05 minutes"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr "10 minutes"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr "12 heures (am/pm)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr "15 minutes"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr "24 heures"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr "30 minutes"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr "60 minutes"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr "Expiration des alarmes après"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr "Alarmes auditives"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr "Biper quand les fenêtres d'alarme apparaissent."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-msgid "Calendar"
-msgstr "Calendrier"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr "Préférences du calendrier"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "Couleurs"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr "Compresser les week-ends"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr "Options du navigateur de date"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-msgid "Defaults"
-msgstr "Défauts"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr "Options d'affichage"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:162
-msgid "Due Date"
-msgstr "Date d'échéance"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr "Activer la sonnerie pour"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr "Fin de la journée :"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr "Premier jour de la semaine :"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr "Ven"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:481
-msgid "Friday"
-msgstr "Vendredi"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr "Mettre en évidence"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr "Éléments s'achevant aujourd'hui"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr "Éléments expirant aujourd'hui : "
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr "Éléments pas encore expirés"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr "Éléments pas encore expirés :"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr "Lun"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:477
-msgid "Monday"
-msgstr "Lundi"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr "Éléments en retard"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr "Éléments en retard :"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:45
-msgid "Pick a color"
-msgstr "Choisissez une couleur"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:165
-msgid "Priority"
-msgstr "Priorité"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-msgid "Remind me of all appointments"
-msgstr "Me rappeler de tous les rendez-vous"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-msgid "Reminders"
-msgstr "Alarmes"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr "Sam"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:482
-msgid "Saturday"
-msgstr "Samedi"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr "Afficher"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-msgid "Show appointment end times"
-msgstr "Afficher l'heure de fin des rendez-vous"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr "Afficher les numéros de semaine"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr "Début de la journée :"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr "Dim"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:483
-msgid "Sunday"
-msgstr "Dimanche"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-msgid "TaskPad"
-msgstr "TâchePad"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr "Jeu"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:480
-msgid "Thursday"
-msgstr "Jeudi"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr "Durée avant échéance"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr "Divisions du temps :"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr "Format de date :"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr "Mar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:478
-msgid "Tuesday"
-msgstr "Mardi"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr "Alarmes visuelles"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr "Mer"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:479
-msgid "Wednesday"
-msgstr "Mercredi"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr "Semaine de travail"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr "minutes avant leur début."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:78
-msgid "seconds."
-msgstr "secondes."
-
-#: calendar/gui/dialogs/delete-comp.c:70
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr "Êtes-vous sûr de vouloir supprimer le rendez-vous « %s » ?"
-
-#: calendar/gui/dialogs/delete-comp.c:73
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr "Êtes-vous sûr de vouloir supprimer ce rendez-vous sans titre ?"
-
-#: calendar/gui/dialogs/delete-comp.c:79
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr "Êtes-vous sûr de vouloir supprimer la tâche « %s » ?"
-
-#: calendar/gui/dialogs/delete-comp.c:82
-msgid "Are you sure you want to delete this untitled task?"
-msgstr "Êtes-vous sûr de vouloir supprimer cette tâche sans titre %s ?"
-
-#: calendar/gui/dialogs/delete-comp.c:88
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr "Êtes-vous sûr de vouloir supprimer l'entrée de journal « %s » ?"
-
-#: calendar/gui/dialogs/delete-comp.c:91
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr "Êtes-vous sûr de vouloir supprimer cet entrée de journal sans titre ?"
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr "Voulez-vous enregistrer les changements ?"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr "% Comp_lété :"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:158
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr "Classification"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-#, fuzzy
-msgid "Date & Time"
-msgstr "Date &amp; heure"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr "Date d'achèvement :"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-msgid "Pri_vate"
-msgstr "Pri_vé"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-msgid "Progress"
-msgstr "En cours"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr "Pu_blic"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-msgid "Sta_rt Date:"
-msgstr "Date de _début :"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-msgid "Su_mmary:"
-msgstr "Résu_mé :"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr "Tâche"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-msgid "URL:"
-msgstr "URL :"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr "_Confidentiel"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Contacts..."
-msgstr "_Contacts..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-msgid "_Due Date:"
-msgstr "_Date d'expiration :"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-msgid "_Priority:"
-msgstr "_Priorité :"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "_Status:"
-msgstr "_État :"
-
-#: calendar/gui/dialogs/task-editor.c:697
-msgid "Edit Task"
-msgstr "Éditer la tâche"
-
-#: calendar/gui/dialogs/task-editor.c:703 calendar/gui/event-editor.c:379
-msgid "No summary"
-msgstr "Aucun résumé"
-
-#: calendar/gui/dialogs/task-editor.c:709 calendar/gui/event-editor.c:385
-#, c-format
-msgid "Appointment - %s"
-msgstr "Rendez-vous - %s"
-
-#: calendar/gui/dialogs/task-editor.c:712 calendar/gui/event-editor.c:388
-#, c-format
-msgid "Task - %s"
-msgstr "Tâche - %s"
-
-#: calendar/gui/dialogs/task-editor.c:715 calendar/gui/event-editor.c:391
-#, c-format
-msgid "Journal entry - %s"
-msgstr "Entrée de journal - %s"
-
-#: calendar/gui/e-calendar-table.c:157
-msgid "Categories"
-msgstr "Catégories"
-
-#: calendar/gui/e-calendar-table.c:159
-#, fuzzy
-msgid "Completion Date"
-msgstr "Complétée"
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "End Date"
-msgstr "Date de fin"
-
-#: calendar/gui/e-calendar-table.c:161
-msgid "Start Date"
-msgstr "Date de début"
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Geographical Position"
-msgstr "Emplacement géographique"
-
-#: calendar/gui/e-calendar-table.c:164
-#, fuzzy
-msgid "Percent complete"
-msgstr "Marque la tâche comme complétée"
-
-#: calendar/gui/e-calendar-table.c:166
-msgid "Summary"
-msgstr "Résumé"
-
-#: calendar/gui/e-calendar-table.c:167
-msgid "Transparency"
-msgstr "Transparence"
-
-#: calendar/gui/e-calendar-table.c:168
-msgid "URL"
-msgstr "URL"
-
-#: calendar/gui/e-calendar-table.c:169
-msgid "Alarms"
-msgstr "Alarmes"
-
-#: calendar/gui/e-calendar-table.c:170
-msgid "Click here to add a task"
-msgstr "Cliquez ici pour ajouter une tâche"
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "0%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "10%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "20%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "30%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:378
-#, c-format
-msgid "40%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:379
-#, c-format
-msgid "50%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:380
-#, c-format
-msgid "60%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:381
-#, c-format
-msgid "70%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:382
-#, c-format
-msgid "80%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:383
-#, c-format
-msgid "90%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:384
-#, c-format
-msgid "100%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:551
-msgid "Mark Complete"
-msgstr "Marquer comme terminée"
-
-#: calendar/gui/e-calendar-table.c:552
-msgid "Mark the task complete"
-msgstr "Marque la tâche comme complétée"
-
-#: calendar/gui/e-calendar-table.c:557
-msgid "Edit this task..."
-msgstr "Éditer cette tâche..."
-
-#: calendar/gui/e-calendar-table.c:558
-msgid "Edit the task"
-msgstr "Édite la tâche"
-
-#: calendar/gui/e-calendar-table.c:560
-#: ui/evolution-task-editor-dialog.xml.h:19
-msgid "Delete this task"
-msgstr "Supprimer la tâche"
-
-#: calendar/gui/e-calendar-table.c:561
-msgid "Delete the task"
-msgstr "Supprime la tâche"
-
-#: calendar/gui/e-day-view-time-item.c:519
-#, c-format
-msgid "%02i minute divisions"
-msgstr "%02i divisions de minute"
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:274 calendar/gui/e-day-view.c:1294
-#: calendar/gui/e-week-view-main-item.c:325
-msgid "%A %d %B"
-msgstr "%A %d %B"
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:278 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:334
-msgid "%a %d %b"
-msgstr "%a %d %b"
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:282 calendar/gui/e-day-view.c:1321
-#: calendar/gui/e-week-view-main-item.c:348
-msgid "%d %b"
-msgstr "%d %b"
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:570 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:617
-msgid "am"
-msgstr "am"
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:573 calendar/gui/e-week-view.c:303
-#: calendar/gui/print.c:616
-msgid "pm"
-msgstr "pm"
-
-#: calendar/gui/e-day-view.c:3146 ui/evolution-calendar.xml.h:16
-#, fuzzy
-msgid "New Appointment"
-msgstr "Nouveau rendez-vous"
-
-#: calendar/gui/e-day-view.c:3148 calendar/gui/e-week-view.c:3280
-#, fuzzy
-msgid "New All Day Event"
-msgstr "_Toute la journée"
-
-#: calendar/gui/e-day-view.c:3153 calendar/gui/e-week-view.c:3285
-#, fuzzy
-msgid "Go to Today"
-msgstr "Aller à aujourd'hui"
-
-#: calendar/gui/e-day-view.c:3155 calendar/gui/e-week-view.c:3287
-#, fuzzy
-msgid "Go to Date..."
-msgstr "Aller à la date"
-
-#: calendar/gui/e-day-view.c:3162 calendar/gui/e-week-view.c:3293
-#: mail/folder-browser.c:566 ui/evolution-calendar.xml.h:19
-#: ui/evolution-message-composer.xml.h:10
-msgid "Open"
-msgstr "Ouvrir"
-
-#: calendar/gui/e-day-view.c:3164 calendar/gui/e-week-view.c:3295
-#, fuzzy
-msgid "Delete this Appointment"
-msgstr "Supprimer ce rendez-vous"
-
-#: calendar/gui/e-day-view.c:3166 calendar/gui/e-week-view.c:3297
-#: ui/evolution-event-editor.xml.h:45
-#, fuzzy
-msgid "Schedule Meeting"
-msgstr "Sélectionnez un Dossier"
-
-#: calendar/gui/e-day-view.c:3175 calendar/gui/e-week-view.c:3310
-#, fuzzy
-msgid "Make this Occurrence Movable"
-msgstr "Rendre ce rendez-vous déplaçable"
-
-#: calendar/gui/e-day-view.c:3177 calendar/gui/e-week-view.c:3312
-#, fuzzy
-msgid "Delete this Occurrence"
-msgstr "Supprimer cette occurence"
-
-#: calendar/gui/e-day-view.c:3179
-#, fuzzy
-msgid "Delete all Occurrences"
-msgstr "Supprimer toutes les occurences"
-
-#: calendar/gui/e-itip-control.c:161
-msgid "I couldn't update your calendar file!\n"
-msgstr "Je ne peut mettre à jour votre fichier de calendrier !\n"
-
-#: calendar/gui/e-itip-control.c:167 calendar/gui/e-itip-control.c:510
-#, fuzzy
-msgid "Component successfully updated."
-msgstr "Les fichiers d'Evolution sont correctement installés."
-
-#: calendar/gui/e-itip-control.c:173
-msgid "There was an error loading the calendar file."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:197
-msgid "I couldn't open your calendar file!\n"
-msgstr "Je ne peut ouvrir votre fichier de calendrier !\n"
-
-#: calendar/gui/e-itip-control.c:458 calendar/gui/e-itip-control.c:529
-msgid "I couldn't load your calendar file!\n"
-msgstr "Je ne peut charger votre fichier de calendrier !\n"
-
-#: calendar/gui/e-itip-control.c:470
-msgid "I couldn't read your calendar file!\n"
-msgstr "Je ne peut lire votre fichier de calendrier !\n"
-
-#: calendar/gui/e-itip-control.c:483
-msgid "This is a reply from someone who was uninvited!"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:499
-#, fuzzy
-msgid "I couldn't update your calendar store."
-msgstr "Ne peut créer un calendrier dans `%s'"
-
-#: calendar/gui/e-itip-control.c:540
-msgid "I couldn't delete the calendar component!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:550
-#, fuzzy
-msgid "Component successfully deleted."
-msgstr "Les fichiers d'Evolution sont correctement installés."
-
-#: calendar/gui/e-itip-control.c:694
-msgid "I don't recognize this type of calendar component."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:780
-msgid "Add to Calendar"
-msgstr "Ajouter au calendrier"
-
-#: calendar/gui/e-itip-control.c:814
-#, fuzzy
-msgid " Accept "
-msgstr "Accepter"
-
-#: calendar/gui/e-itip-control.c:815
-#, fuzzy
-msgid " Decline "
-msgstr "Refuser"
-
-#: calendar/gui/e-itip-control.c:816
-#, fuzzy
-msgid " Tentative "
-msgstr "Essai"
-
-#: calendar/gui/e-itip-control.c:860
-msgid "Update Calendar"
-msgstr "Mettre à jour le calendrier"
-
-#: calendar/gui/e-itip-control.c:883
-msgid "Cancel Meeting"
-msgstr "Annuler la réunion"
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, fuzzy, no-c-format
-msgid "%P %%"
-msgstr "%A %d %B"
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:4
-#, fuzzy
-msgid "Calendar Message"
-msgstr "Calendrier"
-
-#: calendar/gui/e-itip-control.glade.h:5 mail/mail-format.c:619
-#, fuzzy
-msgid "Date:"
-msgstr "Date"
-
-#: calendar/gui/e-itip-control.glade.h:8
-#, fuzzy
-msgid "Loading calendar..."
-msgstr "Chargement du calendrier"
-
-#: calendar/gui/e-itip-control.glade.h:9
-#, fuzzy
-msgid "Organizer:"
-msgstr "Organisation :"
-
-#: calendar/gui/e-itip-control.glade.h:10
-#, fuzzy
-msgid "Server Message:"
-msgstr "Enregistrer le message sous..."
-
-#: calendar/gui/e-itip-control.glade.h:11
-#, fuzzy
-msgid "Summary:"
-msgstr "Résu_mé :"
-
-#: calendar/gui/e-itip-control.glade.h:12
-#, fuzzy
-msgid "date-end"
-msgstr "Mettre à jour le calendrier"
-
-#: calendar/gui/e-itip-control.glade.h:13
-msgid "date-start"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-#, fuzzy
-msgid "Attendee"
-msgstr "Tout les invités"
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-#, fuzzy
-msgid "Attendee address"
-msgstr "Tout les invités"
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-#, fuzzy
-msgid "Attendees: "
-msgstr "Tout les invités"
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-#, fuzzy
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr "Annuler la réunion"
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-#, fuzzy
-msgid "Chair"
-msgstr "Voiture"
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-#, fuzzy
-msgid "Meeting Invitations"
-msgstr "Heure de _début de la réunion :"
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-#, fuzzy
-msgid "Organizer: "
-msgstr "Organisation :"
-
-#: calendar/gui/e-meeting-dialog.glade.h:15
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid "RSVP"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:18
-#, fuzzy
-msgid ""
-"Request\n"
-"Meeting"
-msgstr "Sélectionnez un Dossier"
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-#, fuzzy
-msgid "Required Participant"
-msgstr "Personnes _nécessaires"
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-msgid "Role"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:22
-#, fuzzy
-msgid ""
-"Schedule\n"
-"Time"
-msgstr "Sélectionnez un Dossier"
-
-#: calendar/gui/e-meeting-dialog.glade.h:24 filter/libfilter-i18n.h:33
-#: mail/message-list.c:1052
-msgid "Status"
-msgstr "État"
-
-#: calendar/gui/e-tasks.c:149 calendar/gui/e-tasks.c:469
-#: calendar/gui/e-tasks.c:502
-msgid "All"
-msgstr "Tous"
-
-#: calendar/gui/e-tasks.c:155
-msgid "Category:"
-msgstr "Catégorie :"
-
-#: calendar/gui/e-tasks.c:298
-#, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "Ne peut charger la tâche dans « %s »"
-
-#: calendar/gui/e-tasks.c:310
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr "La méthode requise pour charger « %s » n'est pas supportée"
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:342
-msgid "%d %B"
-msgstr "%d %B"
-
-#: calendar/gui/e-week-view.c:3278 calendar/gui/e-week-view.c:3301
-#, fuzzy
-msgid "New Appointment..."
-msgstr "Nouveau rendez-vous..."
-
-#: calendar/gui/e-week-view.c:3314
-#, fuzzy
-msgid "Delete All Occurrences"
-msgstr "Supprimer toutes les occurences"
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr "_Toute la journée"
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-msgid "Appointment"
-msgstr "Rendez-vous"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-msgid "Appointment Basics"
-msgstr "Rendez-vous élémentaires"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-msgid "Custom recurrence"
-msgstr "Récurrence personnalisée"
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr "Tou(te)s les"
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-msgid "Exceptions"
-msgstr "Exceptions"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-msgid "Modify"
-msgstr "Modifier"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-msgid "No recurrence"
-msgstr "Aucune récurrence"
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1579
-msgid "Play a sound"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-msgid "Preview"
-msgstr "Aperçu"
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Recurrence"
-msgstr "Récurrence"
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-msgid "Recurrence Rule"
-msgstr "Règle de récurrence"
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-msgid "Reminder"
-msgstr "Alarme"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1588
-msgid "Run a program"
-msgstr "Lancer un programme"
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1585
-#, fuzzy
-msgid "Send an email"
-msgstr "Récupération du courrier depuis %s"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-msgid "Settings..."
-msgstr "Réglages..."
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1582
-msgid "Show a dialog"
-msgstr "Afficher un dialogue"
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr "Récurrence simple"
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-msgid "_End time:"
-msgstr "Heure de _fin :"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Start time:"
-msgstr "Heure de _début :"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Starting date:"
-msgstr "Date de _début :"
-
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:36
-msgid "after"
-msgstr "aprés"
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:37
-msgid "before"
-msgstr "avant"
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "day(s)"
-msgstr "jour(s)"
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-#, fuzzy
-msgid "end of appointment"
-msgstr "Me rappeler de tous les rendez-vous"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "for"
-msgstr "pour"
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr "toujours"
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-msgid "hour(s)"
-msgstr "heure(s)"
-
-#: calendar/gui/event-editor-dialog.glade.h:40 mail/mail-config.glade.h:77
-msgid "minute(s)"
-msgstr "minute(s)"
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "month(s)"
-msgstr "mois"
-
-#: calendar/gui/event-editor-dialog.glade.h:42
-#, fuzzy
-msgid "start of appointment"
-msgstr "Éditer le rendez-vous"
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-msgid "until"
-msgstr "jusqu'à"
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "week(s)"
-msgstr "semaine(s)"
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "year(s)"
-msgstr "année(s)"
-
-#: calendar/gui/event-editor.c:373
-msgid "Edit Appointment"
-msgstr "Éditer le rendez-vous"
-
-#: calendar/gui/event-editor.c:451
-msgid "on"
-msgstr "le"
-
-#: calendar/gui/event-editor.c:476 filter/filter-datespec.c:81
-msgid "day"
-msgstr "jour"
-
-#: calendar/gui/event-editor.c:603
-msgid "on the"
-msgstr "dans le"
-
-#: calendar/gui/event-editor.c:610
-msgid "th"
-msgstr "ième"
-
-#: calendar/gui/event-editor.c:756
-msgid "occurrences"
-msgstr "occurences"
-
-#: calendar/gui/event-editor.c:873
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr "Ce rendez-vons contient des récurrences qu'Evolution ne peut éditer."
-
-#: calendar/gui/event-editor.c:1534
-#, c-format
-msgid " %d days"
-msgstr " %d jours"
-
-#: calendar/gui/event-editor.c:1536
-msgid " 1 day"
-msgstr " 1 jour"
-
-#: calendar/gui/event-editor.c:1539
-#, c-format
-msgid " %d weeks"
-msgstr " %d semaines"
-
-#: calendar/gui/event-editor.c:1541
-msgid " 1 week"
-msgstr " 1 semaine"
-
-#: calendar/gui/event-editor.c:1544
-#, c-format
-msgid " %d hours"
-msgstr " %d heures"
-
-#: calendar/gui/event-editor.c:1546
-msgid " 1 hour"
-msgstr " 1 heure"
-
-#: calendar/gui/event-editor.c:1549
-#, c-format
-msgid " %d minutes"
-msgstr " %d minutes"
-
-#: calendar/gui/event-editor.c:1551
-msgid " 1 minute"
-msgstr " 1 minute"
-
-#: calendar/gui/event-editor.c:1554
-#, c-format
-msgid " %d seconds"
-msgstr " %d secondes"
-
-#: calendar/gui/event-editor.c:1556
-msgid " 1 second"
-msgstr " 1 seconde"
-
-#: calendar/gui/event-editor.c:1603
-#, fuzzy
-msgid " before start of appointment"
-msgstr "Crée un nouveau rendez-vous"
-
-#: calendar/gui/event-editor.c:1605
-#, fuzzy
-msgid " after start of appointment"
-msgstr "Crée un nouveau rendez-vous"
-
-#: calendar/gui/event-editor.c:1613
-#, fuzzy
-msgid " before end of appointment"
-msgstr "Me rappeler de tous les rendez-vous"
-
-#: calendar/gui/event-editor.c:1615
-#, fuzzy
-msgid " after end of appointment"
-msgstr "Crée un nouveau rendez-vous"
-
-#: calendar/gui/event-editor.c:3123 calendar/gui/print.c:1097
-#: calendar/gui/print.c:1099 calendar/gui/print.c:1100
-msgid "%a %b %d %Y"
-msgstr "%a %b %d %Y"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-#, fuzzy
-msgid "Evolution calendar executive summary component."
-msgstr "Ne peut initialiser le composant de résumé de messages d'Evolution."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-#, fuzzy
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr "Conduite « Calendrier » d'Evolution"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-msgid "Factory for the Calendar Summary component."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-#, fuzzy
-msgid "Factory for the Evolution calendar component."
-msgstr ""
-"Utilitaire de configuration pour la conduite « Calendrier » d'Evolution.\n"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-msgid "Factory for the calendar iTip view control"
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-msgid "Factory for the sample Calendar control"
-msgstr ""
-
-#: calendar/gui/gnome-cal.c:700
-#, c-format
-msgid "Could not open the folder in `%s'"
-msgstr "Ne peut ouvrir le dossier dans « %s »"
-
-#: calendar/gui/gnome-cal.c:711
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr "La méthode requise pour charger « %s » n'est pas supportée"
-
-#: calendar/gui/goto-dialog.glade.h:1
-msgid "April"
-msgstr "Avril"
-
-#: calendar/gui/goto-dialog.glade.h:2
-msgid "August"
-msgstr "Aout"
-
-#: calendar/gui/goto-dialog.glade.h:3
-msgid "December"
-msgstr "Décembre"
-
-#: calendar/gui/goto-dialog.glade.h:4
-msgid "February"
-msgstr "Février"
-
-#: calendar/gui/goto-dialog.glade.h:5
-msgid "Go To Date"
-msgstr "Aller à la date"
-
-#: calendar/gui/goto-dialog.glade.h:6
-msgid "Go To Today"
-msgstr "Aller à aujourd'hui"
-
-#: calendar/gui/goto-dialog.glade.h:7
-msgid "January"
-msgstr "Janvier"
-
-#: calendar/gui/goto-dialog.glade.h:8
-msgid "July"
-msgstr "Juillet"
-
-#: calendar/gui/goto-dialog.glade.h:9
-msgid "June"
-msgstr "Juin"
-
-#: calendar/gui/goto-dialog.glade.h:10
-msgid "March"
-msgstr "Mars"
-
-#: calendar/gui/goto-dialog.glade.h:11
-msgid "May"
-msgstr "Mai"
-
-#: calendar/gui/goto-dialog.glade.h:12
-msgid "November"
-msgstr "Novembre"
-
-#: calendar/gui/goto-dialog.glade.h:13
-msgid "October"
-msgstr "Octobre"
-
-#: calendar/gui/goto-dialog.glade.h:14
-msgid "September"
-msgstr "Septembre"
-
-#: calendar/gui/print.c:300
-msgid "1st"
-msgstr "1er"
-
-#: calendar/gui/print.c:300
-msgid "2nd"
-msgstr "2ème"
-
-#: calendar/gui/print.c:300
-msgid "3rd"
-msgstr "3ème"
-
-#: calendar/gui/print.c:300
-msgid "4th"
-msgstr "4ème"
-
-#: calendar/gui/print.c:300
-msgid "5th"
-msgstr "5ème"
-
-#: calendar/gui/print.c:301
-msgid "6th"
-msgstr "6ème"
-
-#: calendar/gui/print.c:301
-msgid "7th"
-msgstr "7ème"
-
-#: calendar/gui/print.c:301
-msgid "8th"
-msgstr "8ème"
-
-#: calendar/gui/print.c:301
-msgid "9th"
-msgstr "9ème"
-
-#: calendar/gui/print.c:301
-msgid "10th"
-msgstr "10ème"
-
-#: calendar/gui/print.c:302
-msgid "11th"
-msgstr "11ème"
-
-#: calendar/gui/print.c:302
-msgid "12th"
-msgstr "12ème"
-
-#: calendar/gui/print.c:302
-msgid "13th"
-msgstr "13ème"
-
-#: calendar/gui/print.c:302
-msgid "14th"
-msgstr "14ème"
-
-#: calendar/gui/print.c:302
-msgid "15th"
-msgstr "15ème"
-
-#: calendar/gui/print.c:303
-msgid "16th"
-msgstr "16ème"
-
-#: calendar/gui/print.c:303
-msgid "17th"
-msgstr "17ème"
-
-#: calendar/gui/print.c:303
-msgid "18th"
-msgstr "18ème"
-
-#: calendar/gui/print.c:303
-msgid "19th"
-msgstr "19ème"
-
-#: calendar/gui/print.c:303
-msgid "20th"
-msgstr "20ème"
-
-#: calendar/gui/print.c:304
-msgid "21st"
-msgstr "21ème"
-
-#: calendar/gui/print.c:304
-msgid "22nd"
-msgstr "22ème"
-
-#: calendar/gui/print.c:304
-msgid "23rd"
-msgstr "23ème"
-
-#: calendar/gui/print.c:304
-msgid "24th"
-msgstr "24ème"
-
-#: calendar/gui/print.c:304
-msgid "25th"
-msgstr "25ème"
-
-#: calendar/gui/print.c:305
-msgid "26th"
-msgstr "26ème"
-
-#: calendar/gui/print.c:305
-msgid "27th"
-msgstr "27ème"
-
-#: calendar/gui/print.c:305
-msgid "28th"
-msgstr "28ème"
-
-#: calendar/gui/print.c:305
-msgid "29th"
-msgstr "29ème"
-
-#: calendar/gui/print.c:305
-msgid "30th"
-msgstr "30ème"
-
-#: calendar/gui/print.c:306
-msgid "31st"
-msgstr "31ème"
-
-#: calendar/gui/print.c:362
-msgid "Su"
-msgstr "Di"
-
-#: calendar/gui/print.c:362
-msgid "Mo"
-msgstr "Lu"
-
-#: calendar/gui/print.c:362
-msgid "Tu"
-msgstr "Ma"
-
-#: calendar/gui/print.c:362
-msgid "We"
-msgstr "Me"
-
-#: calendar/gui/print.c:362
-msgid "Th"
-msgstr "Je"
-
-#: calendar/gui/print.c:362
-msgid "Fr"
-msgstr "Ve"
-
-#: calendar/gui/print.c:362
-msgid "Sa"
-msgstr "Sa"
-
-#: calendar/gui/print.c:948 views/tasks/galview.xml.h:1
-msgid "Tasks"
-msgstr "Tâches"
-
-#. Day
-#: calendar/gui/print.c:1078
-msgid "Current day (%a %b %d %Y)"
-msgstr "Jour en cours (%a %b %d %Y)"
-
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1096
-msgid "%a %b %d"
-msgstr "%a %b %d"
-
-#: calendar/gui/print.c:1093
-msgid "%a %d %Y"
-msgstr "%a %d %Y"
-
-#: calendar/gui/print.c:1104
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr "Semaine en cours (%s - %s)"
-
-#. Month
-#: calendar/gui/print.c:1112
-msgid "Current month (%b %Y)"
-msgstr "Mois en cours (%b %Y)"
-
-#. Year
-#: calendar/gui/print.c:1119
-msgid "Current year (%Y)"
-msgstr "Année en cours (%Y)"
-
-#: calendar/gui/print.c:1156
-msgid "Print Calendar"
-msgstr "Imprimer le Calendrier"
-
-#: calendar/gui/print.c:1321 mail/mail-callbacks.c:1342
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:24
-#: ui/evolution-mail.xml.h:52
-msgid "Print Preview"
-msgstr "Aperçu Avant Impression"
-
-#: calendar/gui/tasks-control.c:108
-#, fuzzy
-msgid "The URI of the tasks folder to display"
-msgstr "L'URI que le calendrier affichera"
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-
-#: calendar/gui/weekday-picker.c:315 calendar/gui/weekday-picker.c:410
-msgid "SMTWTFS"
-msgstr "DLMMJVS"
-
-#: camel/camel-cipher-context.c:169
-#, fuzzy
-msgid "Signing is not supported by this cipher"
-msgstr "Le type spécifié n'est pas supporté dans cet entrepot"
-
-#: camel/camel-cipher-context.c:207
-#, fuzzy
-msgid "Clearsigning is not supported by this cipher"
-msgstr "Le type spécifié n'est pas supporté dans cet entrepot"
-
-#: camel/camel-cipher-context.c:245
-#, fuzzy
-msgid "Verifying is not supported by this cipher"
-msgstr "Le type spécifié n'est pas supporté dans cet entrepot"
-
-#: camel/camel-cipher-context.c:286
-#, fuzzy
-msgid "Encryption is not supported by this cipher"
-msgstr "Le type spécifié n'est pas supporté dans cet entrepot"
-
-#: camel/camel-cipher-context.c:326
-#, fuzzy
-msgid "Decryption is not supported by this cipher"
-msgstr "Le type spécifié n'est pas supporté dans cet entrepot"
-
-#: camel/camel-filter-driver.c:534 camel/camel-filter-driver.c:543
-#, fuzzy
-msgid "Syncing folders"
-msgstr "Synchronisation du dossier"
-
-#: camel/camel-filter-driver.c:643
-#, fuzzy
-msgid "Unable to open spool folder"
-msgstr "Impossible d'ouvrir le carnet d'adresses"
-
-#: camel/camel-filter-driver.c:652
-#, fuzzy
-msgid "Unable to process spool folder"
-msgstr ""
-"Ne peut enregistrer le dossier « %s » :\n"
-"%s"
-
-#: camel/camel-filter-driver.c:666
-#, fuzzy
-msgid "Getting message %d (%d%%)"
-msgstr "Écriture du message %d du %d"
-
-#: camel/camel-filter-driver.c:670 camel/camel-filter-driver.c:679
-#, fuzzy, c-format
-msgid "Failed message %d"
-msgstr "_Message électronique (FIXME)"
-
-#: camel/camel-filter-driver.c:671
-#, fuzzy
-msgid "Cannot open message"
-msgstr "Ne peut obtenir le message : %s"
-
-#: camel/camel-filter-driver.c:690 camel/camel-filter-driver.c:788
-#, fuzzy
-msgid "Syncing folder"
-msgstr "Synchronisation du dossier"
-
-#: camel/camel-filter-driver.c:694 camel/camel-filter-driver.c:793
-#, fuzzy
-msgid "Complete"
-msgstr "Complété"
-
-#: camel/camel-filter-driver.c:748
-#, fuzzy, c-format
-msgid "Getting message %d of %d"
-msgstr "Écriture du message %d du %d"
-
-#: camel/camel-filter-driver.c:753 camel/camel-filter-driver.c:771
-#, fuzzy, c-format
-msgid "Failed at message %d of %d"
-msgstr "Écriture du message %d du %d"
-
-#: camel/camel-filter-driver.c:866
-#, fuzzy, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr "Erreur d'enregistrement du fichier : %s"
-
-#: camel/camel-filter-driver.c:871
-#, fuzzy, c-format
-msgid "Error executing filter: %s: %s"
-msgstr "Erreur d'enregistrement du fichier : %s"
-
-#: camel/camel-filter-search.c:439 camel/camel-filter-search.c:445
-#, fuzzy, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr "Erreur d'enregistrement du fichier : %s"
-
-#: camel/camel-folder-search.c:328
-#, fuzzy, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-"Erreur durant le préparation vers %s :\n"
-"%s"
-
-#: camel/camel-folder-search.c:338
-#, fuzzy, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr ""
-"Erreur durant le préparation vers %s :\n"
-"%s"
-
-#: camel/camel-folder-search.c:485 camel/camel-folder-search.c:513
-msgid "(match-all) requires a single bool result"
-msgstr ""
-
-#: camel/camel-folder-search.c:559
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr ""
-
-#: camel/camel-folder-search.c:670 camel/camel-folder-search.c:714
-msgid "Invalid type in body-contains, expecting string"
-msgstr ""
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:92 camel/camel-lock.c:111 camel/camel-movemail.c:138
-#: camel/camel-movemail.c:185
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "Ne peut créer le fichier de verrouillage pour %s : %s"
-
-#: camel/camel-lock.c:151 camel/camel-movemail.c:219
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr ""
-"Échéance du délai pour obtenir le fichier de verrouillage sur %s. Essayez de "
-"nouveau plus tard."
-
-#: camel/camel-lock.c:201
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr "Impossible d'obtenir le verrou avec fcntl(2) : %s"
-
-#: camel/camel-lock.c:255
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr "Impossible d'obtenir le verrou avec flock(2) : %s"
-
-#: camel/camel-movemail.c:101
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr "Ne peut vérifier le fichier de courrier %s : %s"
-
-#: camel/camel-movemail.c:148
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr "Ne peut ouvrir le fichier de courrier %s : %s"
-
-#: camel/camel-movemail.c:158
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr "Ne peut ouvrir le fichier de courrier temporaire %s : %s"
-
-#: camel/camel-movemail.c:199
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr "Ne peut tester le fichier de verrouillage pour %s : %s"
-
-#: camel/camel-movemail.c:245
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr "Erreur de lecture du fichier de courrier : %s"
-
-#: camel/camel-movemail.c:256
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr "Erreur d'écriture du fichier temporaire de courrier : %s"
-
-#: camel/camel-movemail.c:274
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr "Échec du stockage du courrier dans le fichier temporaire %s : %s"
-
-#: camel/camel-movemail.c:306
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr "Ne peut créer le tube : %s"
-
-#: camel/camel-movemail.c:318
-#, c-format
-msgid "Could not fork: %s"
-msgstr "Ne peut cloner : %s"
-
-#: camel/camel-movemail.c:356
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr "Échec du programme movemail : %s"
-
-#: camel/camel-movemail.c:357
-msgid "(Unknown error)"
-msgstr "(Erreur inconnue)"
-
-#: camel/camel-movemail.c:587
-#, fuzzy, c-format
-msgid "Error copying mail temp file: %s"
-msgstr "Erreur d'écriture du fichier temporaire de courrier : %s"
-
-#: camel/camel-pgp-context.c:186
-#, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr "Veuillez saisir votre %s phrase de passe pour %s"
-
-#: camel/camel-pgp-context.c:189
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr "Veuillez saisir votre %s phrase de passe"
-
-#: camel/camel-pgp-context.c:509
-msgid "No plaintext to sign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:516 camel/camel-pgp-context.c:688
-#: camel/camel-pgp-context.c:1021 camel/camel-pgp-context.c:1235
-msgid "No password provided."
-msgstr "Aucun mot de passe fournit."
-
-#: camel/camel-pgp-context.c:522 camel/camel-pgp-context.c:694
-#: camel/camel-pgp-context.c:877 camel/camel-pgp-context.c:1028
-#: camel/camel-pgp-context.c:1242
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr "Ne peut créer le tube vers GPG/PGP : %s"
-
-#: camel/camel-pgp-context.c:681
-msgid "No plaintext to clearsign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:871
-msgid "No plaintext to verify."
-msgstr ""
-
-#: camel/camel-pgp-context.c:888
-#, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "Ne peut créer de fichier temporaire : %s"
-
-#: camel/camel-pgp-context.c:1011
-msgid "No plaintext to encrypt."
-msgstr ""
-
-#: camel/camel-pgp-context.c:1037
-msgid "No recipients specified"
-msgstr "Aucun destinataires spécifiés"
-
-#: camel/camel-pgp-context.c:1227
-msgid "No ciphertext to decrypt."
-msgstr ""
-
-#: camel/camel-provider.c:131
-#, c-format
-msgid "Could not load %s: Module loading not supported on this system."
-msgstr ""
-
-#: camel/camel-provider.c:140
-#, c-format
-msgid "Could not load %s: %s"
-msgstr "Ne peut charger %s : %s"
-
-#: camel/camel-provider.c:148
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr "Ne peut charger %s : Aucun code d'initialisation dans le module."
-
-#: camel/camel-remote-store.c:186
-#, c-format
-msgid "%s server %s"
-msgstr "%s serveur %s"
-
-#: camel/camel-remote-store.c:190
-#, c-format
-msgid "%s service for %s on %s"
-msgstr "%s service pour %s sur %s"
-
-#: camel/camel-remote-store.c:240
-msgid "Connection cancelled"
-msgstr "Connexion annulée"
-
-#: camel/camel-remote-store.c:243
-#: camel/providers/smtp/camel-smtp-transport.c:261
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr "Ne peut se connecter à %s (port %d) : %s"
-
-#: camel/camel-remote-store.c:244
-msgid "(unknown host)"
-msgstr "(hôte inconnu)"
-
-#: camel/camel-remote-store.c:325 camel/camel-remote-store.c:387
-#: camel/camel-remote-store.c:458
-#: camel/providers/imap/camel-imap-command.c:264
-msgid "Operation cancelled"
-msgstr "Opération annulée"
-
-#: camel/camel-remote-store.c:464
-#, fuzzy
-msgid "Server unexpectedly disconnected"
-msgstr "Serveur déconnecté."
-
-#: camel/camel-sasl-anonymous.c:33
-msgid "Anonymous"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:35
-#, fuzzy
-msgid "This option will connect to the server using an anonymous login."
-msgstr ""
-"Cette option vous connectera au serveur IMAP en utilisant un mots de passe "
-"en clair."
-
-#: camel/camel-sasl-anonymous.c:110 camel/camel-sasl-plain.c:87
-#, fuzzy
-msgid "Authentication failed."
-msgstr "Identification"
-
-#: camel/camel-sasl-anonymous.c:119
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:131
-#, fuzzy, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr ""
-"Erreur de chargement des information du filtre :\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:143
-#, fuzzy, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr "Information utilisateur"
-
-#: camel/camel-sasl-cram-md5.c:35
-msgid "CRAM-MD5"
-msgstr "CRAM-MD5"
-
-#: camel/camel-sasl-cram-md5.c:37
-#, fuzzy
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-"Cela vous connectera au serveur SMTP en utilisant une identification "
-"CRAM-MD5."
-
-#: camel/camel-sasl-digest-md5.c:43
-msgid "DIGEST-MD5"
-msgstr "DIGEST-MD5"
-
-#: camel/camel-sasl-digest-md5.c:45
-#, fuzzy
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-"Cette option vous connectera au serveur IMAP en utilisant un mots de passe "
-"en clair."
-
-#: camel/camel-sasl-digest-md5.c:810
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:819
-msgid "Server challenge invalid\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:825
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:847
-#, fuzzy
-msgid "Server response did not contain authorization data\n"
-msgstr "La réponse du serveur IMAP ne contient pas l'information %s"
-
-#: camel/camel-sasl-digest-md5.c:865
-msgid "Server response contained incomplete authorization data\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:875
-#, fuzzy
-msgid "Server response does not match\n"
-msgstr "La réponse du serveur s'est terminée trop tot."
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "Kerberos 4"
-msgstr "Kerberos 4"
-
-#: camel/camel-sasl-kerberos4.c:42
-#, fuzzy
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr ""
-"Cette option vous connectera au serveur IMAP en utilisant Kerberos 4 pour "
-"vous identifier."
-
-#: camel/camel-sasl-kerberos4.c:161
-#, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr ""
-"Ne peut obtenir le ticket Kerberos :\n"
-"%s"
-
-#: camel/camel-sasl-kerberos4.c:218
-#: camel/providers/imap/camel-imap-store.c:417
-msgid "Bad authentication response from server."
-msgstr "Mauvaise réponse d'identification du serveur."
-
-#: camel/camel-sasl-plain.c:34
-#, fuzzy
-msgid "This option will connect to the server using a simple password."
-msgstr ""
-"Cette option vous connectera au serveur IMAP en utilisant un mots de passe "
-"en clair."
-
-#: camel/camel-search-private.c:110
-#, fuzzy, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr "Echec d'écriture dans la boite à lettres temporaire : %s : %s"
-
-#: camel/camel-service.c:152
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr "L'URL « %s » a besoin du composant « nom d'utilisateur »"
-
-#: camel/camel-service.c:160
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr "L'URL « %s » a besoin du composant « hôte »"
-
-#: camel/camel-service.c:168
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr "L'URL « %s » a besoin du composant « chemin »"
-
-#: camel/camel-service.c:554
-#, fuzzy, c-format
-msgid "Resolving: %s"
-msgstr "Test de \"%s\""
-
-#: camel/camel-service.c:581
-#, c-format
-msgid "Failure in name lookup: %s"
-msgstr ""
-
-#: camel/camel-service.c:606
-#, c-format
-msgid "Host lookup failed: %s: host not found"
-msgstr ""
-
-#: camel/camel-service.c:608
-#, c-format
-msgid "Host lookup failed: %s: unknown reason"
-msgstr ""
-
-#: camel/camel-session.c:57
-msgid "Virtual folder email provider"
-msgstr "Founisseur de dossier de courrier virtuel"
-
-#: camel/camel-session.c:59
-msgid "For reading mail as a query of another set of folders"
-msgstr ""
-"Pour la lecture de courrier comme requête a un autre ensemble de dossiers"
-
-#: camel/camel-session.c:274 camel/camel-session.c:364
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr "Aucun fournisseur disponible pour le protocole « %s »"
-
-#: camel/camel-session.c:462
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"Ne peut créer le répertoire %s :\n"
-"%s"
-
-#. Fill in the new fields
-#: camel/camel-store.c:380 mail/mail-ops.c:994 mail/mail-ops.c:1001
-#: mail/mail-ops.c:1019 mail/mail-ops.c:1020
-#, fuzzy
-msgid "Trash"
-msgstr "Tâche"
-
-#: camel/camel-url.c:289
-#, fuzzy, c-format
-msgid "Could not parse URL `%s'"
-msgstr ""
-"Impossible d'ouvrir le fichier « %s » :\n"
-"%s"
-
-#: camel/camel-vee-folder.c:451
-#, fuzzy, c-format
-msgid "No such message %s in %s"
-msgstr "Aucun message correspondant"
-
-#: camel/camel-vee-folder.c:545
-#, fuzzy, c-format
-msgid "No such message: %s"
-msgstr "Aucun message correspondant"
-
-#: camel/providers/imap/camel-imap-command.c:209
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "Réponse innatendue du serveur IMAP : %s"
-
-#: camel/providers/imap/camel-imap-command.c:217
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr "Échec de la commande IMAP : %s"
-
-#: camel/providers/imap/camel-imap-command.c:218 shell/e-storage.c:481
-msgid "Unknown error"
-msgstr "Erreur inconnue"
-
-#: camel/providers/imap/camel-imap-command.c:272
-msgid "Server response ended too soon."
-msgstr "La réponse du serveur s'est terminée trop tot."
-
-#: camel/providers/imap/camel-imap-command.c:456
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr "La réponse du serveur IMAP ne contient pas l'information %s"
-
-#: camel/providers/imap/camel-imap-command.c:490
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr "Réponse OK innatendue du serveur IMAP : %s"
-
-#: camel/providers/imap/camel-imap-folder.c:172
-#, c-format
-msgid "Could not load summary for %s"
-msgstr "Ne peut charger le résumé pour %s"
-
-#: camel/providers/imap/camel-imap-folder.c:351
-#, fuzzy
-msgid "Scanning IMAP folder"
-msgstr "Scrutation des dossiers dans « %s »"
-
-#: camel/providers/imap/camel-imap-folder.c:986
-#: camel/providers/imap/camel-imap-folder.c:1197
-#, fuzzy
-msgid "This message is not currently available"
-msgstr ""
-"Ce message n'a pas de sujet.\n"
-"Voulez-vous vraiment l'envoyer ?"
-
-#: camel/providers/imap/camel-imap-folder.c:1016
-#: camel/providers/imap/camel-imap-folder.c:1231
-msgid "Could not find message body in FETCH response."
-msgstr "Ne peut trouver le corps du message dans la réponse FETCH."
-
-#: camel/providers/imap/camel-imap-provider.c:43 mail/mail-config.glade.h:11
-#, fuzzy
-msgid "Checking for new mail"
-msgstr "Crée une nouveau contact"
-
-#: camel/providers/imap/camel-imap-provider.c:45
-#, fuzzy
-msgid "Check for new messages in all folders"
-msgstr "Marquage des messages du dossier \"%s\""
-
-#: camel/providers/imap/camel-imap-provider.c:48 shell/e-shell-view.c:484
-msgid "Folders"
-msgstr "Dossiers"
-
-#: camel/providers/imap/camel-imap-provider.c:50
-#, fuzzy
-msgid "Show only subscribed folders"
-msgstr "S'abonne au dossier « %s »"
-
-#: camel/providers/imap/camel-imap-provider.c:52
-msgid "Override server-supplied folder namespace"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:54
-#, fuzzy
-msgid "Namespace"
-msgstr "Espace de nom :"
-
-#: camel/providers/imap/camel-imap-provider.c:57
-msgid "Apply filters to new messages in INBOX on this server"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:63
-msgid "IMAPv4"
-msgstr "IMAPv4"
-
-#: camel/providers/imap/camel-imap-provider.c:65
-msgid "For reading and storing mail on IMAP servers."
-msgstr "Pour la lecture et le stockage du courrier sur des serveurs IMAP."
-
-#: camel/providers/imap/camel-imap-provider.c:82
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr ""
-"Cette option vous connectera au serveur IMAP en utilisant un mots de passe "
-"en clair."
-
-#: camel/providers/imap/camel-imap-store.c:440
-#, fuzzy, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr ""
-"Impossible de se connecter au serveur POP.\n"
-"Aucun support pour le mécanisme d'identification demandé."
-
-#: camel/providers/imap/camel-imap-store.c:450
-#: camel/providers/smtp/camel-smtp-transport.c:358
-#, fuzzy, c-format
-msgid "No support for authentication type %s"
-msgstr "Aucune identification requise"
-
-#: camel/providers/imap/camel-imap-store.c:475
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr "%sVeuillez entrer le mot de passe IMAP pour %s@%s"
-
-#: camel/providers/imap/camel-imap-store.c:490
-#: camel/providers/smtp/camel-smtp-transport.c:403
-msgid "You didn't enter a password."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:518
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Impossible de vous identifier sur le serveur IMAP.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/imap/camel-imap-store.c:865
-#, fuzzy, c-format
-msgid "%s is not a selectable folder"
-msgstr "Voir le sélecteur de dossier"
-
-#: camel/providers/imap/camel-imap-store.c:879
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr "Ne peut créer le répertoire %s : %s"
-
-#: camel/providers/imap/camel-imap-store.c:1382
-msgid "You must be working online to complete this operation"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:39
-#, fuzzy
-msgid "MH-format mail directories"
-msgstr "Répertoires de courrier au format UNIX MH (version CamelLocal)"
-
-#: camel/providers/local/camel-local-provider.c:40
-msgid "For storing local mail in MH-like mail directories"
-msgstr ""
-"Pour stocker le courrier local dans des répertoires de courrier au format MH"
-
-#: camel/providers/local/camel-local-provider.c:49
-msgid "Standard Unix mailbox file"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:50
-msgid "For storing local mail in standard mbox format"
-msgstr "Pour stocker le courrier local au format standard mbox"
-
-#: camel/providers/local/camel-local-provider.c:59
-#, fuzzy
-msgid "Qmail maildir-format mail files"
-msgstr "Fichiers de courrier au format UNIX qmail maildir"
-
-#: camel/providers/local/camel-local-provider.c:60
-msgid "For storing local mail in qmail maildir directories"
-msgstr ""
-"Pour stocker le courrier local dans des répertoires de courrier au format "
-"qmail"
-
-#: camel/providers/local/camel-local-store.c:129
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr "La racine de stockage %s n'est pas un chemin absolu"
-
-#: camel/providers/local/camel-local-store.c:136
-#, c-format
-msgid "Store root %s is not a regular directory"
-msgstr "La racine de stockage %s n'est pas un répertoire normal"
-
-#: camel/providers/local/camel-local-store.c:144
-#: camel/providers/local/camel-local-store.c:160
-#, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "Ne peut obtenir le répertoire : %s : %s"
-
-#: camel/providers/local/camel-local-store.c:175
-#, fuzzy
-msgid "Local stores do not have an inbox"
-msgstr "Le stockage local n'a pas de répertoire racine"
-
-#: camel/providers/local/camel-local-store.c:185
-#, c-format
-msgid "Local mail file %s"
-msgstr "Fichier de courrier local %s"
-
-#: camel/providers/local/camel-local-store.c:241
-#, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr "Impossible de renommer le dossier %s vers %s : %s"
-
-#: camel/providers/local/camel-local-store.c:283
-#, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr "Impossible de supprimer le fichier de résumé de dossier « %s » : %s"
-
-#: camel/providers/local/camel-local-store.c:293
-#, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr "Impossible de supprimer le fichier d'index de dossier « %s » : %s"
-
-#: camel/providers/local/camel-maildir-folder.c:150
-#: camel/providers/local/camel-maildir-folder.c:158
-#: camel/providers/local/camel-maildir-folder.c:169
-#, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr "Impossible de concaténer le message au dossier maildir : %s : %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-maildir-folder.c:209
-#: camel/providers/local/camel-maildir-folder.c:217
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#: camel/providers/local/camel-mh-folder.c:194
-#: camel/providers/local/camel-mh-folder.c:202
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-"Impossible d'obtenir le message : %s\n"
-" %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-msgid "No such message"
-msgstr "Aucun message correspondant"
-
-#: camel/providers/local/camel-maildir-folder.c:218
-#: camel/providers/local/camel-mh-folder.c:203
-msgid "Invalid message contents"
-msgstr "Contenu de message invalide"
-
-#: camel/providers/local/camel-maildir-store.c:96
-#: camel/providers/local/camel-mh-store.c:90
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-"Ne peut ouvrir le dossier « %s » :\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:100
-#: camel/providers/local/camel-mbox-store.c:101
-#: camel/providers/local/camel-mh-store.c:97
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr "Le dossier « %s » n'existe pas."
-
-#: camel/providers/local/camel-maildir-store.c:107
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-"Ne peut créer le dossier « %s » :\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:122
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr "« %s » n'est pas un répertoire maildir."
-
-#: camel/providers/local/camel-maildir-store.c:151
-#: camel/providers/local/camel-maildir-store.c:188
-#: camel/providers/local/camel-mh-store.c:127
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr "Impossible de supprimer le dossier « %s » : %s"
-
-#: camel/providers/local/camel-maildir-store.c:152
-msgid "not a maildir directory"
-msgstr "n'est pas un répertoire maildir"
-
-#: camel/providers/local/camel-mbox-folder.c:152
-#, fuzzy, c-format
-msgid "Cannot create folder lock on %s: %s"
-msgstr "Ne peut obtenir le répertoire : %s : %s"
-
-#: camel/providers/local/camel-mbox-folder.c:203
-#, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr "Ne peut ouvrir la boîte à lettres : %s : %s\n"
-
-#: camel/providers/local/camel-mbox-folder.c:259
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr "Impossible de concaténer le message au fichier mbox : %s : %s"
-
-#: camel/providers/local/camel-mbox-folder.c:335
-#: camel/providers/local/camel-mbox-folder.c:367
-#: camel/providers/local/camel-mbox-folder.c:380
-#, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-"Impossible d'obtenir le message : %s du dossier %s\n"
-" %s"
-
-#: camel/providers/local/camel-mbox-folder.c:368
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr "Le dossier semble irrémédiablement corrompu"
-
-#: camel/providers/local/camel-mbox-folder.c:381
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:94
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-"Impossible d'ouvrir le fichier « %s » :\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:110
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-"Ne peut créer le fichier « %s » :\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:119
-#: camel/providers/local/camel-mbox-store.c:146
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr "« %s » n'est pas un fichier normal."
-
-#: camel/providers/local/camel-mbox-store.c:138
-#: camel/providers/local/camel-mbox-store.c:161
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-"Ne peut supprimer le dossier « %s » :\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr "Le dossier « %s » n'est pas vide. Non supprimé."
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:248
-#, fuzzy
-msgid "Summarising folder"
-msgstr "Synchronisation du dossier"
-
-#: camel/providers/local/camel-mbox-summary.c:253
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr ""
-"Impossible d'ouvrir le dossier : %s : résume depuis la position %ld : %s"
-
-#: camel/providers/local/camel-mbox-summary.c:295
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr ""
-"Erreur fatale d'analyse du courrier prés de la position %ld dans le dossier "
-"%s"
-
-#: camel/providers/local/camel-mbox-summary.c:370
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr "Ne peut résumer le dossier : %s :%s"
-
-#: camel/providers/local/camel-mbox-summary.c:501
-#: camel/providers/local/camel-mbox-summary.c:702 mail/mail-ops.c:1382
-msgid "Synchronising folder"
-msgstr "Synchronisation du dossier"
-
-#: camel/providers/local/camel-mbox-summary.c:506
-#: camel/providers/local/camel-mbox-summary.c:707
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr "Ne peut ouvrir le dossier à résumer : %s : %s"
-
-#: camel/providers/local/camel-mbox-summary.c:523
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr "Ne peut ouvrir la boîte à lettres temporaire : %s"
-
-#: camel/providers/local/camel-mbox-summary.c:548
-#: camel/providers/local/camel-mbox-summary.c:556
-#: camel/providers/local/camel-mbox-summary.c:745
-#: camel/providers/local/camel-mbox-summary.c:753
-msgid "Summary and folder mismatch, even after a sync"
-msgstr ""
-"Le résumé et le dossier ne correspondent pas, meme aprés une synchronisation"
-
-#: camel/providers/local/camel-mbox-summary.c:599
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr "Erreur d'écriture dans la boite à lettres temporaire : %s"
-
-#: camel/providers/local/camel-mbox-summary.c:616
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr "Echec d'écriture dans la boite à lettres temporaire : %s : %s"
-
-#: camel/providers/local/camel-mbox-summary.c:634
-#: camel/providers/local/camel-mbox-summary.c:803
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr "Impossible de fermer le dossier source %s : %s"
-
-#: camel/providers/local/camel-mbox-summary.c:643
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr "Impossible de fermer le dossier temporaire : %s"
-
-#: camel/providers/local/camel-mbox-summary.c:654
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr "Impossible de renommer le dossier : %s"
-
-#: camel/providers/local/camel-mbox-summary.c:878
-#, c-format
-msgid "Unknown error: %s"
-msgstr "Erreur inconnue : %s"
-
-#: camel/providers/local/camel-mh-folder.c:149
-#: camel/providers/local/camel-mh-folder.c:157
-#, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr "Impossible de concaténer le message au dossier mh : %s : %s"
-
-#: camel/providers/local/camel-mh-store.c:110
-#, c-format
-msgid "`%s' is not a directory."
-msgstr "« %s » n'est pas un répertoire."
-
-#: camel/providers/nntp/camel-nntp-auth.c:45
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr "Veuillez entrer le mot de passe NNTP pour %s@%s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:66
-msgid "Server rejected username"
-msgstr "Le serveur a rejeté le nom d'utilisateur"
-
-#: camel/providers/nntp/camel-nntp-auth.c:72
-msgid "Failed to send username to server"
-msgstr "Échec d'envoi du nom d'utilisateur au serveur"
-
-#: camel/providers/nntp/camel-nntp-auth.c:81
-msgid "Server rejected username/password"
-msgstr "Le serveur a rejeté le nom d'utilisateur / mot de passe"
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr "Message %s non trouvé."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr "Ne peut obtenir la liste des grouges du serveur."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr "Inpossible de charger la liste des groupes du serveur pour %s : %s"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr ""
-"Inpossible de sauvegarder le fichier de la liste des groupes pour %s : %s"
-
-#: camel/providers/nntp/camel-nntp-provider.c:42
-msgid "USENET news"
-msgstr "Nouvelles USENET"
-
-#: camel/providers/nntp/camel-nntp-provider.c:44
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr ""
-"C'est un fournisseur pour la lecture et la publication dans les groupes de "
-"nouvelles USENET."
-
-#: camel/providers/nntp/camel-nntp-store.c:226
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr "Ne peut ouvrir le répertoire pour le serveur de nouvelles : %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:288
-#, c-format
-msgid "USENET News via %s"
-msgstr "Nouvelles USENET via %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:295
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-"Cette option vous identifiera auprés du serveur NNTP en utilisant un mot de "
-"passe en clair."
-
-#: camel/providers/nntp/camel-nntp-store.c:327
-#: camel/providers/nntp/camel-nntp-store.c:490
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr "Incapable d'ouvrir ou de créer un fichier .newsrc pour %s : %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-#, fuzzy
-msgid "Retrieving POP summary"
-msgstr "Récupération des messages"
-
-#: camel/providers/pop3/camel-pop3-folder.c:192
-msgid "Could not open folder: message listing was incomplete."
-msgstr ""
-"Impossible d'ouvrir le dossier : la liste des messages était incomplete."
-
-#: camel/providers/pop3/camel-pop3-folder.c:285
-#, c-format
-msgid "No message with uid %s"
-msgstr "Aucun message avec l'uid %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:289
-#, fuzzy, c-format
-msgid "Retrieving POP message %d"
-msgstr "Récupération du message %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:307
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr "Ne pas récupérer le message du serveur POP %s : %s"
-
-#: camel/providers/pop3/camel-pop3-provider.c:37
-#, fuzzy
-msgid "Message storage"
-msgstr "En-tête du message"
-
-#: camel/providers/pop3/camel-pop3-provider.c:39
-#, fuzzy
-msgid "Leave messages on server"
-msgstr "Ne pas effacer les messages du serveur"
-
-#: camel/providers/pop3/camel-pop3-provider.c:41
-#, fuzzy, c-format
-msgid "Delete after %s day(s)"
-msgstr "Supprime la tâche"
-
-#: camel/providers/pop3/camel-pop3-provider.c:48 mail/mail-config.glade.h:42
-msgid "POP"
-msgstr "POP"
-
-#: camel/providers/pop3/camel-pop3-provider.c:50
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-"Pour la connexion aux serveurs POP. Le protocole POP peut aussi être utilisé "
-"pour récupérer les courriers depuis certains fournisseurs de courriers Web "
-"et de systèmes de courriers propriétaires."
-
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-"Cette option vous connectera au serveur POP en utilisant un mot de passe en "
-"clair. C'est la seul option supporté par la plupart des serveurs POP."
-
-#: camel/providers/pop3/camel-pop3-provider.c:79
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-"Cette option vous connectera au serveur POP en utilisant un mot de passe "
-"chiffré via le protocole APOP. Cela peut ne pas fonctionner pour tous les "
-"utilisateurs même si le serveur prétend pouvoir le supporter."
-
-#: camel/providers/pop3/camel-pop3-provider.c:91
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-"Cela vous connectera au serveur POP et utilisera Kerberos 4 pour vous "
-"identifier."
-
-#: camel/providers/pop3/camel-pop3-store.c:207
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr "Ne peut vous identifier sur le serveur KPOP : %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:319
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr "Ne peut se connecter au serveur POP sur %s."
-
-#: camel/providers/pop3/camel-pop3-store.c:358
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr "%sVeuillez entrer le mot de passe POP3 pour %s@%s"
-
-#: camel/providers/pop3/camel-pop3-store.c:377
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-"Impossible de se connecter au serveur POP.\n"
-"Erreur lors de l'envoi du nom d'utilisateur : %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:380
-#: camel/providers/pop3/camel-pop3-store.c:417
-msgid "(Unknown)"
-msgstr "(Inconnu)"
-
-#: camel/providers/pop3/camel-pop3-store.c:407
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-"Impossible de se connecter au serveur POP.\n"
-"Aucun support pour le mécanisme d'identification demandé."
-
-#: camel/providers/pop3/camel-pop3-store.c:415
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-"Impossible de se connecter au serveur POP.\n"
-"Erreur lors de l'envoi du mot de passe : %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:483
-#, c-format
-msgid "No such folder `%s'."
-msgstr "Aucun dossier « %s »."
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:37
-#: mail/mail-config.glade.h:57
-msgid "Sendmail"
-msgstr "Sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:39
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-"Pour délivrer le courrier en passant par le programme « sendmail » sur le "
-"système local."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:107
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr "Ne peut créer de tube vers sendmail : %s : courrier non envoyé"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:124
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr "Ne peut cloner sendmail : %s : courrier non envoyé"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:150
-#, c-format
-msgid "Could not send message: %s"
-msgstr "Impossible d'envoyer le message : %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:163
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr "sendmail s'est terminé avec le signal %s : courrier non envoyé."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:170
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr "Ne peut exécuter %s : courrier non envoyé."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:175
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr "sendmail s'est terrminé avec l'état %d : courrier non envoyé."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:194
-#, fuzzy
-msgid "Could not find 'From' address in message"
-msgstr "Ne peut trouver le corps du message dans la réponse FETCH."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "sendmail"
-msgstr "sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:249
-msgid "Mail delivery via the sendmail program"
-msgstr "Livraison du courrier via le programme sendmail"
-
-#: camel/providers/smtp/camel-smtp-provider.c:38 mail/mail-config.glade.h:52
-msgid "SMTP"
-msgstr "SMTP"
-
-#: camel/providers/smtp/camel-smtp-provider.c:40
-#, fuzzy
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr ""
-"Pour livrer le courrier en vous connectant à un distributeur distant "
-"utilisant SMTP."
-
-#: camel/providers/smtp/camel-smtp-transport.c:165
-msgid "Syntax error, command unrecognized"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:167
-msgid "Syntax error in parameters or arguments"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:169
-msgid "Command not implemented"
-msgstr "Commande non implémentée"
-
-#: camel/providers/smtp/camel-smtp-transport.c:171
-msgid "Command parameter not implemented"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:173
-msgid "System status, or system help reply"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:175
-msgid "Help message"
-msgstr "Message d'aide"
-
-#: camel/providers/smtp/camel-smtp-transport.c:177
-msgid "Service ready"
-msgstr "Service pret"
-
-#: camel/providers/smtp/camel-smtp-transport.c:179
-msgid "Service closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:181
-msgid "Service not available, closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:183
-msgid "Requested mail action okay, completed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:185
-msgid "User not local; will forward to <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:187
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:189
-msgid "Requested action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:191
-msgid "Requested action aborted: error in processing"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:193
-msgid "User not local; please try <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:195
-msgid "Requested action not taken: insufficient system storage"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:197
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:199
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:201
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:203
-msgid "Transaction failed"
-msgstr "Échec de la transaction"
-
-#: camel/providers/smtp/camel-smtp-transport.c:207
-#, fuzzy
-msgid "A password transition is needed"
-msgstr "Aucun mot de passe fournit."
-
-#: camel/providers/smtp/camel-smtp-transport.c:209
-msgid "Authentication mechanism is too weak"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:211
-#, fuzzy
-msgid "Encryption required for requested authentication mechanism"
-msgstr ""
-"Impossible de se connecter au serveur POP.\n"
-"Aucun support pour le mécanisme d'identification demandé."
-
-#: camel/providers/smtp/camel-smtp-transport.c:213
-#, fuzzy
-msgid "Temporary authentication failure"
-msgstr "Aucune identification requise"
-
-#: camel/providers/smtp/camel-smtp-transport.c:215
-#, fuzzy
-msgid "Authentication required"
-msgstr "Aucune identification requise"
-
-#: camel/providers/smtp/camel-smtp-transport.c:305
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr "Erreur du message de bienvenur : %s : sûrement pas grave"
-
-#: camel/providers/smtp/camel-smtp-transport.c:348
-#, fuzzy, c-format
-msgid "SMTP server %s does not support requested authentication type %s"
-msgstr ""
-"Impossible de se connecter au serveur POP.\n"
-"Aucun support pour le mécanisme d'identification demandé."
-
-#: camel/providers/smtp/camel-smtp-transport.c:388
-#, fuzzy, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr "%sVeuillez entrer le mot de passe IMAP pour %s@%s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:411
-#, fuzzy, c-format
-msgid ""
-"Unable to authenticate to SMTP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Impossible de vous identifier sur le serveur IMAP.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:527
-#, c-format
-msgid "SMTP server %s"
-msgstr "Serveur SMTP %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:529
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr "Livraison du courrier SMTP via %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:554
-msgid "Cannot send message: sender address not defined."
-msgstr ""
-"Ne peut envoyer le message : l'adresse de l'expéditeur n'est pas défini"
-
-#: camel/providers/smtp/camel-smtp-transport.c:561
-msgid "Cannot send message: sender address not valid."
-msgstr ""
-"Ne peut envoyer le message : l'adresse de l'expéditeur n'est pas valide"
-
-#: camel/providers/smtp/camel-smtp-transport.c:575
-msgid "Cannot send message: no recipients defined."
-msgstr "Ne peut envoyer le message : aucun destinataire n'est défini."
-
-#: camel/providers/smtp/camel-smtp-transport.c:669
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:688
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:721
-msgid "Error creating SASL authentication object."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:736
-#: camel/providers/smtp/camel-smtp-transport.c:748
-#, fuzzy, c-format
-msgid "AUTH request timed out: %s"
-msgstr "Ne peut exécuter %s : courrier non envoyé."
-
-#: camel/providers/smtp/camel-smtp-transport.c:798
-#, fuzzy
-msgid "Bad authentication response from server.\n"
-msgstr "Mauvaise réponse d'identification du serveur."
-
-#: camel/providers/smtp/camel-smtp-transport.c:824
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:843
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:868
-#, fuzzy, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr "Ne peut créer de tube vers sendmail : %s : courrier non envoyé"
-
-#: camel/providers/smtp/camel-smtp-transport.c:887
-#, fuzzy, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr "Ne peut exécuter %s : courrier non envoyé."
-
-#: camel/providers/smtp/camel-smtp-transport.c:918
-#, fuzzy, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr "Ne peut exécuter %s : courrier non envoyé."
-
-#: camel/providers/smtp/camel-smtp-transport.c:937
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:952
-#: camel/providers/smtp/camel-smtp-transport.c:970
-#, fuzzy, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr "sendmail s'est terminé avec le signal %s : courrier non envoyé."
-
-#: camel/providers/smtp/camel-smtp-transport.c:989
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1013
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1032
-#, c-format
-msgid "RSET response error: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1055
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1074
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:95
-msgid "1 byte"
-msgstr "1 octet"
-
-#: composer/e-msg-composer-attachment-bar.c:97
-#, c-format
-msgid "%u bytes"
-msgstr "%u octets"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fko"
-
-#: composer/e-msg-composer-attachment-bar.c:108
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fMo"
-
-#: composer/e-msg-composer-attachment-bar.c:112
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fGo"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:332 mail/mail-display.c:120
-msgid "attachment"
-msgstr "pièce-jointe"
-
-#: composer/e-msg-composer-attachment-bar.c:421
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr "Joindre un fichier"
-
-#: composer/e-msg-composer-attachment-bar.c:469
-msgid "Remove selected items from the attachment list"
-msgstr "Supprimer les éléments sélectionnés de la liste des pièces-jointes"
-
-#: composer/e-msg-composer-attachment-bar.c:500
-msgid "Add attachment..."
-msgstr "Ajouter une pièce-jointe..."
-
-#: composer/e-msg-composer-attachment-bar.c:501
-msgid "Attach a file to the message"
-msgstr "Joindre un fichier au message"
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/message-list.c:1052
-msgid "Attachment"
-msgstr "Pièce-jointe"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr "Propriétés de la pièce-jointe"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr "Nom du fichier : "
-
-#: composer/e-msg-composer-attachment.glade.h:5
-msgid "Inline attachment"
-msgstr "pièce-jointe incorporée"
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr "Type MIME :"
-
-#: composer/e-msg-composer-attachment.glade.h:7
-msgid "Send as:"
-msgstr "Envoyer comme :"
-
-#: composer/e-msg-composer-hdrs.c:321
-msgid "Click here for the address book"
-msgstr "Cliquez ici pour le carnet d'adresses"
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:352 mail/mail-format.c:715
-msgid "From:"
-msgstr "De :"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:358 mail/mail-format.c:717
-msgid "Reply-To:"
-msgstr "Répondre-à :"
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:369 mail/mail-format.c:639
-msgid "Subject:"
-msgstr "Sujet :"
-
-#: composer/e-msg-composer-hdrs.c:383 mail/mail-format.c:719
-msgid "To:"
-msgstr "À :"
-
-#: composer/e-msg-composer-hdrs.c:384
-msgid "Enter the recipients of the message"
-msgstr "Entrez les destinataires du message"
-
-#: composer/e-msg-composer-hdrs.c:387 mail/mail-format.c:721
-msgid "Cc:"
-msgstr "Cc :"
-
-#: composer/e-msg-composer-hdrs.c:388
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "Entrez les adresses qui recevront une copie carbone de ce message"
-
-#: composer/e-msg-composer-hdrs.c:391
-msgid "Bcc:"
-msgstr "Bcc :"
-
-#: composer/e-msg-composer-hdrs.c:392
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"Entrez les adresses qui recevront une copie carbone du message sans "
-"apparaitre dans la liste des destinataires du messages."
-
-#: composer/e-msg-composer.c:528
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-"Ne peut ouvrir le fichier de signature %s :\n"
-"%s"
-
-#: composer/e-msg-composer.c:716
-msgid "Save as..."
-msgstr "Enregistrer sous..."
-
-#: composer/e-msg-composer.c:727
-#, c-format
-msgid "Error saving file: %s"
-msgstr "Erreur d'enregistrement du fichier : %s"
-
-#: composer/e-msg-composer.c:747
-#, c-format
-msgid "Error loading file: %s"
-msgstr "Erreur de chargement du fichier : %s"
-
-#: composer/e-msg-composer.c:819
-msgid ""
-"Unable to open the drafts folder for this account.\n"
-"Would you like to use the default drafts folder?"
-msgstr ""
-
-#: composer/e-msg-composer.c:877 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:206
-msgid "Evolution"
-msgstr "Evolution"
-
-#: composer/e-msg-composer.c:883
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-"Ce message n'a pas été envoyé.\n"
-"\n"
-"Voulez-vous enregistrer vos changements ?"
-
-#: composer/e-msg-composer.c:908
-msgid "Open file"
-msgstr "Ouvrir un fichier"
-
-#: composer/e-msg-composer.c:1034
-msgid "That file does not exist."
-msgstr "Ce fichier n'existe pas."
-
-#: composer/e-msg-composer.c:1044
-msgid "That is not a regular file."
-msgstr "Ce n'est pas un fichier normal."
-
-#: composer/e-msg-composer.c:1054
-msgid "That file exists but is not readable."
-msgstr "Ce fichier existe mais n'est pas lisible."
-
-#: composer/e-msg-composer.c:1064
-msgid "That file appeared accesible but open(2) failed."
-msgstr "Ce fichier apparait accessible mais l'ouverture 'open(2)' a échoué."
-
-#: composer/e-msg-composer.c:1086
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-"Ce fichier est trés gros (plus de 100 ko).\n"
-"Êtes-vous sûr de vouloir l'insérer ?"
-
-#: composer/e-msg-composer.c:1107
-msgid "An error occurred while reading the file."
-msgstr "Une erreur est survenue durant la lecture du fichier."
-
-#: composer/e-msg-composer.c:1408 composer/e-msg-composer.c:1740
-msgid "Compose a message"
-msgstr "Composer un message"
-
-#: composer/e-msg-composer.c:1829
-msgid "Could not create composer window."
-msgstr "Ne peut créer la fenêtre de composition."
-
-#: composer/evolution-composer.c:355
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-
-#: composer/evolution-composer.c:370
-#, fuzzy
-msgid "Cannot initialize Evolution's composer."
-msgstr "Ne peut initialiser le composant de messagerie d'Evolution."
-
-#: data/evolution.desktop.in.h:2
-msgid "The Evolution groupware suite"
-msgstr "La suite de travail collaboratif Evolution"
-
-#: data/evolution.keys.in.h:1
-#, fuzzy
-msgid "address card"
-msgstr "Adresse"
-
-#: data/evolution.keys.in.h:2
-#, fuzzy
-msgid "calendar information"
-msgstr "Information utilisateur"
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:69 e-util/e-time-utils.c:117
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:477
-#: widgets/misc/e-dateedit.c:1282 widgets/misc/e-dateedit.c:1463
-msgid "%m/%d/%Y"
-msgstr "%m/%d/%Y"
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:87 e-util/e-time-utils.c:198
-msgid "%I:%M:%S %p%n"
-msgstr "%I:%M:%S %p%n"
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:90 e-util/e-time-utils.c:201
-msgid "%H:%M:%S%n"
-msgstr "%H:%M:%S%n"
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:94 e-util/e-time-utils.c:205
-msgid "%I:%M %p%n"
-msgstr "%I:%M %p%n"
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:97 e-util/e-time-utils.c:208
-msgid "%H:%M%n"
-msgstr "%H:%M%n"
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:269
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:473
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2503
-msgid "%a %m/%d/%Y"
-msgstr "%a %m/%d/%Y"
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:274
-#, fuzzy
-msgid "%a %m/%d/%Y %H:%M"
-msgstr "%a %m/%d/%Y %H:%M:%S"
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:283
-#, fuzzy
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr "%a %m/%d/%Y %I:%M:%S %p"
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:312 widgets/misc/e-dateedit.c:1257
-#: widgets/misc/e-dateedit.c:1316 widgets/misc/e-dateedit.c:1495
-msgid "%H:%M"
-msgstr "%H:%M"
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:315
-#, fuzzy
-msgid "%H:%M:%S"
-msgstr "%H:%M:%S%n"
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:320 widgets/misc/e-dateedit.c:1260
-#: widgets/misc/e-dateedit.c:1319 widgets/misc/e-dateedit.c:1498
-msgid "%I:%M %p"
-msgstr "%I:%M %p"
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:323
-#, fuzzy
-msgid "%I:%M:%S %p"
-msgstr "%I:%M:%S %p%n"
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-msgid "Evolution component for the executive summary."
-msgstr ""
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-#, fuzzy
-msgid "Factory for the Evolution executive summary component."
-msgstr "Ne peut initialiser le composant de résumé de messages d'Evolution."
-
-#: executive-summary/component/component-factory.c:152
-#, fuzzy
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr "Ne peut initialiser le composant de résumé de messages d'Evolution."
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:71
-#, fuzzy, c-format
-msgid "Send an email to %s"
-msgstr "Récupération du courrier depuis %s"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:75
-#, c-format
-msgid "Close %s"
-msgstr "Fermer %s"
-
-#: executive-summary/component/e-summary-url.c:76
-#, fuzzy, c-format
-msgid "Move %s to the left"
-msgstr "Déplacer vers le dossier"
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:78
-#, fuzzy, c-format
-msgid "Move %s into the previous row"
-msgstr "Va à la date actuelle"
-
-#: executive-summary/component/e-summary-url.c:79
-#, fuzzy, c-format
-msgid "Move %s into the next row"
-msgstr "Va à la date actuelle"
-
-#: executive-summary/component/e-summary-url.c:80
-#, fuzzy, c-format
-msgid "Configure %s"
-msgstr "_Configuration du dossier..."
-
-#: executive-summary/component/e-summary.c:924
-#, fuzzy, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"Ne peut ouvrir le fichier %s :\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:938
-#, fuzzy, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr "Erreur de lecture du fichier de courrier : %s"
-
-#: executive-summary/component/e-summary.c:956
-msgid "File does not have a place for the services.\n"
-msgstr ""
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr ""
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr ""
-
-#: executive-summary/component/main.c:62
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-#, fuzzy
-msgid "RDF Summary"
-msgstr "Résumé"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-msgid "Factory for the test bonobo component."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-#, fuzzy
-msgid "Factory for the test component."
-msgstr "Marque la tâche comme complétée"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-#, fuzzy
-msgid "Test service"
-msgstr "Ajouter un service"
-
-#: executive-summary/test-service/rdf-summary.c:512
-#: executive-summary/test-service/rdf-summary.c:549
-#: executive-summary/test-service/rdf-summary.c:594
-#: widgets/misc/e-messagebox.c:166
-msgid "Error"
-msgstr "Erreur"
-
-#: executive-summary/test-service/rdf-summary.c:768
-msgid "Update automatically"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:778
-#, fuzzy
-msgid "Update now"
-msgstr "Mettre à jour le calendrier"
-
-#: executive-summary/test-service/rdf-summary.c:788
-#, fuzzy
-msgid "Update every "
-msgstr "_Mettre à jour Libre/Occupé"
-
-#: executive-summary/test-service/rdf-summary.c:796
-#: filter/filter-datespec.c:83
-msgid "minutes"
-msgstr "minutes"
-
-#: filter/filter-datespec.c:78
-msgid "year"
-msgstr "an"
-
-#: filter/filter-datespec.c:78
-msgid "years"
-msgstr "années"
-
-#: filter/filter-datespec.c:79
-msgid "month"
-msgstr "mois"
-
-#: filter/filter-datespec.c:79
-msgid "months"
-msgstr "mois"
-
-#: filter/filter-datespec.c:80
-msgid "week"
-msgstr "semaine"
-
-#: filter/filter-datespec.c:80
-msgid "weeks"
-msgstr "semaines"
-
-#: filter/filter-datespec.c:81
-msgid "days"
-msgstr "jours"
-
-#: filter/filter-datespec.c:82
-msgid "hour"
-msgstr "heure"
-
-#: filter/filter-datespec.c:82
-msgid "hours"
-msgstr "heures"
-
-#: filter/filter-datespec.c:83
-msgid "minute"
-msgstr "minute"
-
-#: filter/filter-datespec.c:84
-msgid "second"
-msgstr "seconde"
-
-#: filter/filter-datespec.c:84
-msgid "seconds"
-msgstr "secondes"
-
-#: filter/filter-datespec.c:199
-msgid "Oops. You have forgotten to choose a date."
-msgstr "Oups. Vous avez oublié de choisir une date."
-
-#: filter/filter-datespec.c:201
-msgid "Oops. You have chosen an invalid date."
-msgstr "Oups. Vous avez choisi une date invalide."
-
-#: filter/filter-datespec.c:275
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-"La date du message sera comparé à la date d'execution\n"
-"du filtre ou lorsque le dossier virtuel est ouvert."
-
-#: filter/filter-datespec.c:298
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-"La date du message sera comparé à la date\n"
-"que vous spécifiez ici."
-
-#: filter/filter-datespec.c:338
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-"La date du message sera comparé à une date\n"
-"relative au moment où le filtre est exécuté;\n"
-"« il y a une semaine », par exemple."
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:373
-msgid "the current time"
-msgstr "la date actuelle"
-
-#: filter/filter-datespec.c:373
-msgid "a time you specify"
-msgstr "une date que vous spécifiez"
-
-#: filter/filter-datespec.c:374
-msgid "a time relative to the current time"
-msgstr "une date relative à la date en cours"
-
-#. The label
-#: filter/filter-datespec.c:432
-msgid "Compare against"
-msgstr "Comparer avec"
-
-#: filter/filter-datespec.c:549 filter/filter-datespec.c:709
-msgid "now"
-msgstr "maintenant"
-
-#: filter/filter-datespec.c:706
-msgid "<click here to select a date>"
-msgstr "<cliquez ici pour sélectionner une date>"
-
-#: filter/filter-editor.c:132 filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr "Règles de Filtrage"
-
-#. and now for the action area
-#: filter/filter-filter.c:453
-msgid "Then"
-msgstr "Alors"
-
-#: filter/filter-filter.c:467
-msgid "Add action"
-msgstr "Ajouter l'action"
-
-#: filter/filter-folder.c:147
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-
-#: filter/filter-folder.c:222 filter/vfolder-rule.c:285
-#: mail/mail-account-gui.c:682
-msgid "Select Folder"
-msgstr "Sélectionnez un Dossier"
-
-#: filter/filter-folder.c:247
-msgid "Enter folder URI"
-msgstr "Entrez l'URI du dossier"
-
-#: filter/filter-folder.c:293
-msgid "<click here to select a folder>"
-msgstr "<cliquez ici pour sélectionner un dossier>"
-
-#: filter/filter-input.c:194
-#, fuzzy, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-"Erreur durant le préparation vers %s :\n"
-"%s"
-
-#: filter/filter-part.c:475
-msgid "Test"
-msgstr "Test"
-
-#: filter/filter-rule.c:626
-msgid "Rule name: "
-msgstr "Nom de la règle : "
-
-#: filter/filter-rule.c:630
-msgid "Untitled"
-msgstr "SansTitre"
-
-#: filter/filter-rule.c:646
-msgid "If"
-msgstr "Si"
-
-#: filter/filter-rule.c:664
-msgid "Execute actions"
-msgstr "Exécuter les actions"
-
-#: filter/filter-rule.c:668
-msgid "if all criteria are met"
-msgstr "si tous les critères sont remplis"
-
-#: filter/filter-rule.c:673
-msgid "if any criteria are met"
-msgstr "si un des critères est rempli"
-
-#: filter/filter-rule.c:684
-msgid "Add criterion"
-msgstr "Ajouter un critère"
-
-#: filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr "Éditer les Filtres"
-
-#: filter/filter.glade.h:5
-msgid "Edit VFolders"
-msgstr "Éditer les dossiers virtuels"
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr "Entrant"
-
-#: filter/filter.glade.h:8
-msgid "Outgoing"
-msgstr "Sortant"
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:130
-msgid "Virtual Folders"
-msgstr "Dossiers Virtuels"
-
-#: filter/filter.glade.h:11
-#, fuzzy
-msgid "specific folders only"
-msgstr "Le dossier spécifié n'a pas été trouvé"
-
-#: filter/filter.glade.h:12
-msgid "vFolder Sources"
-msgstr "Sources de Dossier Virtuel"
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr ""
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr ""
-
-#: filter/filter.glade.h:15
-#, fuzzy
-msgid "with all local folders"
-msgstr "Enregistre le dossier local"
-
-#. Automatically generated. Do not edit.
-#: filter/libfilter-i18n.h:2
-msgid "Assign Colour"
-msgstr "Assigner une couleur"
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Score"
-msgstr "Assigner un score"
-
-#: filter/libfilter-i18n.h:4
-#, fuzzy
-msgid "Attachments"
-msgstr "Pièce-jointe"
-
-#: filter/libfilter-i18n.h:5
-msgid "Copy to Folder"
-msgstr "Copier vers le dossier"
-
-#: filter/libfilter-i18n.h:6
-msgid "Date received"
-msgstr "Date de réception"
-
-#: filter/libfilter-i18n.h:7
-msgid "Date sent"
-msgstr "Date d'envoi"
-
-#: filter/libfilter-i18n.h:9
-msgid "Deleted"
-msgstr "Supprimé"
-
-#: filter/libfilter-i18n.h:10
-#, fuzzy
-msgid "Do Not Exist"
-msgstr "n'existe pas"
-
-#: filter/libfilter-i18n.h:11
-#, fuzzy
-msgid "Draft"
-msgstr "Date"
-
-#: filter/libfilter-i18n.h:12
-#, fuzzy
-msgid "Exist"
-msgstr "Quitter"
-
-#: filter/libfilter-i18n.h:13
-msgid "Expression"
-msgstr "Expression"
-
-#: filter/libfilter-i18n.h:14
-msgid "Forward to Address"
-msgstr "Fait suivre à l'adresse"
-
-#: filter/libfilter-i18n.h:15
-msgid "Important"
-msgstr "Important"
-
-#: filter/libfilter-i18n.h:16
-#, fuzzy
-msgid "Is Not"
-msgstr "n'est pas"
-
-#: filter/libfilter-i18n.h:17
-#, fuzzy
-msgid "Is"
-msgstr "Si"
-
-#: filter/libfilter-i18n.h:18
-#, fuzzy
-msgid "Mailing list"
-msgstr "liste de diffusion %s"
-
-#: filter/libfilter-i18n.h:19
-msgid "Message Body"
-msgstr "Corps du message"
-
-#: filter/libfilter-i18n.h:20
-msgid "Message Header"
-msgstr "En-tête du message"
-
-#: filter/libfilter-i18n.h:21
-msgid "Message was received"
-msgstr "Le message a été reçu"
-
-#: filter/libfilter-i18n.h:22
-msgid "Message was sent"
-msgstr "Le message a été envoyé"
-
-#: filter/libfilter-i18n.h:23
-msgid "Move to Folder"
-msgstr "Déplacer vers le dossier"
-
-#: filter/libfilter-i18n.h:24
-msgid "Read"
-msgstr "Lu"
-
-#: filter/libfilter-i18n.h:25
-msgid "Recipients"
-msgstr "Destinataires"
-
-#: filter/libfilter-i18n.h:26
-msgid "Regex Match"
-msgstr ""
-
-#: filter/libfilter-i18n.h:27
-msgid "Replied to"
-msgstr "Répondu à"
-
-#: filter/libfilter-i18n.h:28 filter/score-rule.c:203 filter/score-rule.c:205
-#: mail/message-list.c:1052
-msgid "Score"
-msgstr "Score"
-
-#: filter/libfilter-i18n.h:29
-msgid "Sender"
-msgstr "Expéditeur"
-
-#: filter/libfilter-i18n.h:30
-msgid "Set Status"
-msgstr "Définir l'état"
-
-#: filter/libfilter-i18n.h:31
-#, fuzzy
-msgid "Source Account"
-msgstr "Compte"
-
-#: filter/libfilter-i18n.h:32
-msgid "Specific header"
-msgstr "En-tête spécifique"
-
-#: filter/libfilter-i18n.h:34
-msgid "Stop Processing"
-msgstr "Arrête le traitement"
-
-#: filter/libfilter-i18n.h:35 mail/message-list.c:1053
-msgid "Subject"
-msgstr "Sujet"
-
-#: filter/libfilter-i18n.h:38
-msgid "contains"
-msgstr "contient"
-
-#: filter/libfilter-i18n.h:39
-msgid "does not contain"
-msgstr "ne contient pas"
-
-#: filter/libfilter-i18n.h:40
-msgid "does not end with"
-msgstr "ne fini pas avec"
-
-#: filter/libfilter-i18n.h:41
-msgid "does not exist"
-msgstr "n'existe pas"
-
-#: filter/libfilter-i18n.h:42
-msgid "does not sound like"
-msgstr "ne ressemble pas"
-
-#: filter/libfilter-i18n.h:43
-msgid "does not start with"
-msgstr "ne commence pas par"
-
-#: filter/libfilter-i18n.h:44
-msgid "ends with"
-msgstr "fini avec"
-
-#: filter/libfilter-i18n.h:45
-msgid "exists"
-msgstr "existe"
-
-#: filter/libfilter-i18n.h:46
-msgid "is greater than"
-msgstr "est plus que"
-
-#: filter/libfilter-i18n.h:47
-msgid "is less than"
-msgstr "est moins que"
-
-#: filter/libfilter-i18n.h:48
-msgid "is not"
-msgstr "n'est pas"
-
-#: filter/libfilter-i18n.h:49
-msgid "is"
-msgstr "est"
-
-#: filter/libfilter-i18n.h:50
-msgid "on or after"
-msgstr "sur ou aprés"
-
-#: filter/libfilter-i18n.h:51
-msgid "on or before"
-msgstr "sur ou avant"
-
-#: filter/libfilter-i18n.h:52
-msgid "sounds like"
-msgstr "ressemble à"
-
-#: filter/libfilter-i18n.h:53
-msgid "starts with"
-msgstr "Débute avec"
-
-#: filter/libfilter-i18n.h:54
-msgid "was after"
-msgstr "était aprés"
-
-#: filter/libfilter-i18n.h:55
-msgid "was before"
-msgstr "était avant"
-
-#: filter/score-editor.c:130
-#, fuzzy
-msgid "Score Rules"
-msgstr "Éditer la règle de score"
-
-#: mail/component-factory.c:329
-msgid "Cannot initialize Evolution's mail component."
-msgstr "Ne peut initialiser le composant de messagerie d'Evolution."
-
-#: mail/component-factory.c:402
-msgid "Cannot register storage with shell"
-msgstr "Ne peut enregistrer le stockage avec le shell"
-
-#: mail/folder-browser-factory.c:209
-#, fuzzy, c-format
-msgid "Properties for \"%s\""
-msgstr "Propriétés"
-
-#: mail/folder-browser-factory.c:211 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-msgid "Properties"
-msgstr "Propriétés"
-
-#: mail/folder-browser.c:225
-#, fuzzy
-msgid "Store search as vFolder"
-msgstr "Sélectionnez un Dossier"
-
-#: mail/folder-browser.c:533
-msgid "VFolder on Subject"
-msgstr "Dossier virtuel sur le sujet"
-
-#: mail/folder-browser.c:536
-msgid "VFolder on Sender"
-msgstr "Dossier virtuel sur l'expéditeur"
-
-#: mail/folder-browser.c:539
-msgid "VFolder on Recipients"
-msgstr "Dossier virtuel sur les destinataires"
-
-#: mail/folder-browser.c:542 mail/folder-browser.c:733
-#, fuzzy
-msgid "VFolder on Mailing List"
-msgstr "Filtre sur la liste de diffusion"
-
-#: mail/folder-browser.c:548
-msgid "Filter on Subject"
-msgstr "Filtre sur le sujet"
-
-#: mail/folder-browser.c:551
-msgid "Filter on Sender"
-msgstr "Filtre sur l'expéditeur"
-
-#: mail/folder-browser.c:554
-msgid "Filter on Recipients"
-msgstr "Filtre sur les destinataires"
-
-#: mail/folder-browser.c:557 mail/folder-browser.c:732
-msgid "Filter on Mailing List"
-msgstr "Filtre sur la liste de diffusion"
-
-#: mail/folder-browser.c:568
-#, fuzzy
-msgid "Resend"
-msgstr "seconde"
-
-#: mail/folder-browser.c:570
-msgid "Save As..."
-msgstr "Enregistrer sous..."
-
-#: mail/folder-browser.c:577
-msgid "Reply to Sender"
-msgstr "Répondre à l'expéditeur"
-
-#: mail/folder-browser.c:579 mail/mail-view.c:147 ui/evolution-mail.xml.h:60
-msgid "Reply to All"
-msgstr "Répondre à tous"
-
-#: mail/folder-browser.c:581 mail/mail-view.c:150 ui/evolution-mail.xml.h:24
-msgid "Forward"
-msgstr "Faire suivre"
-
-#: mail/folder-browser.c:583 ui/evolution-mail.xml.h:26
-msgid "Forward inline"
-msgstr "Faire suire incorporé"
-
-#: mail/folder-browser.c:586
-msgid "Mark as Read"
-msgstr "Marquer comme lu"
-
-#: mail/folder-browser.c:588
-msgid "Mark as Unread"
-msgstr "Marquer comme non lu"
-
-#: mail/folder-browser.c:593
-msgid "Move to Folder..."
-msgstr "Déplacer vers le dossier..."
-
-#: mail/folder-browser.c:595
-msgid "Copy to Folder..."
-msgstr "Copier vers le dossier..."
-
-#: mail/folder-browser.c:599 ui/evolution-mail.xml.h:81
-msgid "Undelete"
-msgstr "Récupérer"
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:609 ui/evolution-mail.xml.h:1
-msgid "Apply Filters"
-msgstr "Appliquer les filtres"
-
-#: mail/folder-browser.c:613
-msgid "Create Rule From Message"
-msgstr "Créer une règle à partir du message"
-
-#: mail/folder-browser.c:735
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr "Filtre sur la liste de diffusion (%s)"
-
-#: mail/folder-browser.c:736
-#, fuzzy, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr "Filtre sur la liste de diffusion (%s)"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-#, fuzzy
-msgid "Evolution mail composer."
-msgstr "Ne peut initialiser le composant de messagerie d'Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-#, fuzzy
-msgid "Evolution mail executive summary component."
-msgstr "Ne peut initialiser le composant de résumé de messages d'Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-#, fuzzy
-msgid "Evolution mail folder display component."
-msgstr "Conduit Calendrier"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-#, fuzzy
-msgid "Evolution mail folder factory component."
-msgstr "Conduit Calendrier"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-#, fuzzy
-msgid "Factory for the Evolution composer."
-msgstr "Ne peut initialiser le composant de messagerie d'Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-#, fuzzy
-msgid "Factory for the Evolution mail component."
-msgstr "Ne peut initialiser le composant de messagerie d'Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-msgid "Factory for the Mail Summary component."
-msgstr ""
-
-#: mail/local-config.glade.h:1
-#, fuzzy
-msgid "Current store format:"
-msgstr "Ne peut démarrer wombat"
-
-#: mail/local-config.glade.h:2
-msgid "Mailbox Format"
-msgstr ""
-
-#: mail/local-config.glade.h:3
-#, fuzzy
-msgid "New store format:"
-msgstr "Type de sources de nouvelles :"
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-
-#: mail/local-config.glade.h:7
-msgid "maildir"
-msgstr "maildir"
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr "mbox"
-
-#: mail/local-config.glade.h:9
-msgid "mh"
-msgstr "mh"
-
-#: mail/mail-accounts.c:121 mail/mail-accounts.c:165
-msgid " (default)"
-msgstr " (défaut)"
-
-#: mail/mail-accounts.c:197
-#, fuzzy
-msgid "Disable"
-msgstr "Désactiver."
-
-#: mail/mail-accounts.c:199 mail/mail-config.glade.h:25
-msgid "Enable"
-msgstr ""
-
-#: mail/mail-accounts.c:280 mail/mail-accounts.c:284
-#, fuzzy
-msgid "Are you sure you want to delete this account?"
-msgstr "Êtes-vous sûr de vouloir supprimer cette tâche sans titre %s ?"
-
-#: mail/mail-accounts.c:418 mail/mail-accounts.c:422
-#, fuzzy
-msgid "Are you sure you want to delete this news account?"
-msgstr "Êtes-vous sûr de vouloir supprimer ce rendez-vous sans titre ?"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:536
-msgid "Evolution Account Manager"
-msgstr "Gestionnaire de comptes Evolution"
-
-#: mail/mail-account-editor.c:105
-msgid "You have not filled in all of the required information."
-msgstr ""
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:173
-#, fuzzy
-msgid "Evolution Account Editor"
-msgstr "Conduit 'À faire' d'Evolution"
-
-#: mail/mail-autofilter.c:70
-#, c-format
-msgid "Mail to %s"
-msgstr "Courrier à %s"
-
-#: mail/mail-autofilter.c:213
-#, c-format
-msgid "Subject is %s"
-msgstr "Sujet est %s"
-
-#: mail/mail-autofilter.c:229
-#, c-format
-msgid "Mail from %s"
-msgstr "Courrier de %s"
-
-#: mail/mail-autofilter.c:285
-#, c-format
-msgid "%s mailing list"
-msgstr "liste de diffusion %s"
-
-#: mail/mail-autofilter.c:335 mail/mail-autofilter.c:357
-msgid "Add Filter Rule"
-msgstr "Ajouter une Règle de Filtre"
-
-#: mail/mail-callbacks.c:93
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-"Vous n'avez pas configuré le client de messagerie.\n"
-"Vous avez besoin de le faire avant d'envoyer,\n"
-"recevoir ou composer des courriers.\n"
-"Voulez-vous le configurer maintenant ?"
-
-#: mail/mail-callbacks.c:146
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-"Vous devez configurer une identité\n"
-"avant de pouvoir composer un message."
-
-#: mail/mail-callbacks.c:158
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-"Vous devez configurez un transport de messagerie\n"
-"avant de pouvoir composer un message."
-
-#: mail/mail-callbacks.c:202
-msgid "You have not set a mail transport method"
-msgstr "Vous n'avez pas défini de méthode de transport de courrier"
-
-#: mail/mail-callbacks.c:235
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-"Ce message n'a pas de sujet.\n"
-"Voulez-vous vraiment l'envoyer ?"
-
-#: mail/mail-callbacks.c:308
-msgid "You must specify recipients in order to send this message."
-msgstr ""
-"Vous devez spécifier des destinataires afin de pouvoir envoyer ce message."
-
-#: mail/mail-callbacks.c:351
-msgid "You must configure an account before you can send this email."
-msgstr "Vous devez configurer un compte avant de pouvoir envoyer ce message."
-
-#: mail/mail-callbacks.c:591
-#, c-format
-msgid "On %s, %s wrote:\n"
-msgstr "Le %s, %s a écrit :\n"
-
-#: mail/mail-callbacks.c:773
-msgid "Forwarded message:\n"
-msgstr "Message suivi :\n"
-
-#: mail/mail-callbacks.c:876
-msgid "Move message(s) to"
-msgstr "Déplacez le(s) message(s) vers"
-
-#: mail/mail-callbacks.c:878
-msgid "Copy message(s) to"
-msgstr "Copiez le(s) message(s) vers"
-
-#: mail/mail-callbacks.c:1019
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-"Vous ne pouvez éditer des messages que\n"
-"lorsqu'ils sont dans le dossier Brouillons."
-
-#: mail/mail-callbacks.c:1056
-#, fuzzy
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-"Vous ne pouvez éditer des messages que\n"
-"lorsqu'ils sont dans le dossier Brouillons."
-
-#: mail/mail-callbacks.c:1089 mail/mail-display.c:90
-msgid "Overwrite file?"
-msgstr "Écraser le fichier ?"
-
-#: mail/mail-callbacks.c:1093 mail/mail-display.c:94
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-"Un fichier avec le même nom existe.\n"
-"L'écraser ?"
-
-#: mail/mail-callbacks.c:1137
-msgid "Save Message As..."
-msgstr "Enregistrer le message sous..."
-
-#: mail/mail-callbacks.c:1139
-msgid "Save Messages As..."
-msgstr "Enregistrer les messages sous..."
-
-#: mail/mail-callbacks.c:1253
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-"Erreur de chargement des information du filtre :\n"
-"%s"
-
-#: mail/mail-callbacks.c:1302 ui/evolution-mail.xml.h:51
-msgid "Print Message"
-msgstr "Imprimer le message"
-
-#: mail/mail-callbacks.c:1349
-msgid "Printing of message failed"
-msgstr "Échec de l'impression du message"
-
-#: mail/mail-config.c:1043 mail/mail-config.c:1046
-#, fuzzy
-msgid "Connecting to server..."
-msgstr "Connexion au serveur"
-
-#: mail/mail-config.glade.h:1
-#, fuzzy
-msgid " Check for supported types "
-msgstr "Détecter les types supportés..."
-
-#: mail/mail-config.glade.h:2
-#, fuzzy
-msgid " color"
-msgstr "Couleurs"
-
-#: mail/mail-config.glade.h:3
-msgid "Account"
-msgstr "Compte"
-
-#: mail/mail-config.glade.h:4
-msgid "Account Information"
-msgstr "Information du compte"
-
-#: mail/mail-config.glade.h:5
-msgid "Account Management"
-msgstr "Gestionnaire de comptes"
-
-#: mail/mail-config.glade.h:6
-#, fuzzy
-msgid "Accounts"
-msgstr "Compte"
-
-#: mail/mail-config.glade.h:8
-msgid "Authentication"
-msgstr "Identification"
-
-#: mail/mail-config.glade.h:9
-#, fuzzy
-msgid "Authentication Type: "
-msgstr "Type d'identification :"
-
-#: mail/mail-config.glade.h:10
-msgid "Automatically check for new mail every"
-msgstr ""
-
-#: mail/mail-config.glade.h:12
-#, fuzzy
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-"Votre configuration de la messagerie est maintenant complétée.\n"
-"Cliquez sur \"Terminer\" pour enregistrer vos nouveaux paramètres."
-
-#: mail/mail-config.glade.h:18
-#, fuzzy
-msgid "De_fault"
-msgstr "Défaut"
-
-#: mail/mail-config.glade.h:20
-msgid "Done"
-msgstr "Fait"
-
-#: mail/mail-config.glade.h:21
-#, fuzzy
-msgid "Drafts"
-msgstr "Date"
-
-#: mail/mail-config.glade.h:22
-#, fuzzy
-msgid "Drafts folder:"
-msgstr "Création d'un nouveau dossier"
-
-#: mail/mail-config.glade.h:24
-msgid "Email Address:"
-msgstr "Adresse électronique :"
-
-#: mail/mail-config.glade.h:26
-msgid "Full Name:"
-msgstr "Nom complet :"
-
-#: mail/mail-config.glade.h:27
-#, fuzzy
-msgid "Highlight citations with "
-msgstr "Mettre en évidence les éléments s'achevant aujourd'hui"
-
-#: mail/mail-config.glade.h:29
-#, fuzzy
-msgid "IMAPv4 "
-msgstr "IMAPv4"
-
-#: mail/mail-config.glade.h:30
-msgid "Identity"
-msgstr "Identité"
-
-#: mail/mail-config.glade.h:31
-#, fuzzy
-msgid "Kerberos "
-msgstr "Kerberos 4"
-
-#: mail/mail-config.glade.h:32
-msgid "Mail Configuration"
-msgstr "Configuration de la messagerie"
-
-#: mail/mail-config.glade.h:33
-msgid "Make this my default account"
-msgstr ""
-
-#: mail/mail-config.glade.h:34
-#, fuzzy
-msgid "Mark messages as \"Read\" after:"
-msgstr "Marque les messages comme vus [ms] : "
-
-#: mail/mail-config.glade.h:36
-msgid "News"
-msgstr "Nouvelles"
-
-#: mail/mail-config.glade.h:38
-#, fuzzy
-msgid "Optional Information"
-msgstr "Pas d'information"
-
-#: mail/mail-config.glade.h:39
-msgid "Organization:"
-msgstr "Organisation :"
-
-#: mail/mail-config.glade.h:41
-#, fuzzy
-msgid "PGP binary path:"
-msgstr "Encrypter avec PGP"
-
-#: mail/mail-config.glade.h:46
-#, fuzzy
-msgid "Qmail maildir "
-msgstr "maildir"
-
-#: mail/mail-config.glade.h:47
-msgid "Receiving Email"
-msgstr "Réception des messages"
-
-#: mail/mail-config.glade.h:48
-#, fuzzy
-msgid "Receiving Mail"
-msgstr "Réception des messages"
-
-#: mail/mail-config.glade.h:49
-#, fuzzy
-msgid "Receiving Options"
-msgstr "Réception des messages"
-
-#: mail/mail-config.glade.h:51
-#, fuzzy
-msgid "Required Information"
-msgstr "Information utilisateur"
-
-#: mail/mail-config.glade.h:53
-#, fuzzy
-msgid "Select PGP binary"
-msgstr "Sélectionner un fichier"
-
-#: mail/mail-config.glade.h:54
-#, fuzzy
-msgid "Send mail in HTML format by default."
-msgstr "Envoie le message au format HTML"
-
-#: mail/mail-config.glade.h:55
-msgid "Sending Email"
-msgstr "Envoie du message"
-
-#: mail/mail-config.glade.h:56
-#, fuzzy
-msgid "Sending Mail"
-msgstr "Envoie du message"
-
-#: mail/mail-config.glade.h:58
-#, fuzzy
-msgid "Sent"
-msgstr "Vu"
-
-#: mail/mail-config.glade.h:59
-#, fuzzy
-msgid "Sent and Draft Messages"
-msgstr "Calendrier"
-
-#: mail/mail-config.glade.h:60
-#, fuzzy
-msgid "Sent messages folder:"
-msgstr "Joints les messages du dossier \"%s\""
-
-#: mail/mail-config.glade.h:61
-msgid "Server Configuration"
-msgstr "Configuration du serveur"
-
-#: mail/mail-config.glade.h:62
-msgid "Server Type: "
-msgstr "Type de serveur : "
-
-#: mail/mail-config.glade.h:63
-msgid "Server requires authentication"
-msgstr "Le serveur nécessite une identification"
-
-#: mail/mail-config.glade.h:64
-msgid "Signature file:"
-msgstr "Fichier de signature :"
-
-#: mail/mail-config.glade.h:65
-msgid "Sources"
-msgstr "Sources"
-
-#: mail/mail-config.glade.h:66
-#, fuzzy
-msgid "Special Folders"
-msgstr "Dossiers Virtuels"
-
-#: mail/mail-config.glade.h:67
-msgid "Standard Unix mbox"
-msgstr ""
-
-#: mail/mail-config.glade.h:68
-msgid "Type"
-msgstr "Type"
-
-#: mail/mail-config.glade.h:69
-#, fuzzy
-msgid "Use secure connection (SSL)"
-msgstr "Ce serveur nécessite une connexion sécurisé (SSL)"
-
-#: mail/mail-config.glade.h:70
-msgid "Username:"
-msgstr "Nom d'utilisateur :"
-
-#: mail/mail-config.glade.h:71
-#, fuzzy
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr "Configuration de la messagerie Evolution"
-
-#: mail/mail-config.glade.h:76 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:43 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:29
-msgid "_Edit"
-msgstr "_Édition"
-
-#: mail/mail-config-druid.c:99
-msgid ""
-"Please enter your name and email address below. The \"optional\" fields "
-"below do not need to be filled in, unless you wish to include this "
-"information in email you send."
-msgstr ""
-
-#: mail/mail-config-druid.c:101
-msgid ""
-"Please enter information about your incoming mail server below. If you don't "
-"know what kind of server you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-
-#: mail/mail-config-druid.c:105
-msgid ""
-"Please enter information about your outgoing mail protocol below. If you "
-"don't know which protocol you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-
-#: mail/mail-config-druid.c:107
-msgid ""
-"You are almost done with the mail configuration process. The identity, "
-"incoming mail server and outgoing mail transport method which you provided "
-"will be grouped together to make an Evolution mail account. Please enter a "
-"name for this account in the space below. This name will be used for display "
-"purposes only."
-msgstr ""
-
-#. set window title
-#: mail/mail-config-druid.c:445
-msgid "Evolution Account Wizard"
-msgstr ""
-
-#: mail/mail-display.c:194
-msgid "Save Attachment"
-msgstr "Enregistrer la pièce-jointe"
-
-#: mail/mail-display.c:234
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr "Ne peut créer de répertoire temporaire : %s"
-
-#: mail/mail-display.c:295
-msgid "Save to Disk..."
-msgstr "Enregistrer sur le disque..."
-
-#: mail/mail-display.c:297
-#, c-format
-msgid "Open in %s..."
-msgstr "Ouvrir dans %s..."
-
-#: mail/mail-display.c:299
-msgid "View Inline"
-msgstr "Voir en ligne"
-
-#: mail/mail-display.c:334
-msgid "External Viewer"
-msgstr "Visualiseur externe"
-
-#: mail/mail-display.c:357
-#, c-format
-msgid "View Inline (via %s)"
-msgstr "Voir en ligne (via %s)"
-
-#: mail/mail-display.c:361
-msgid "Hide"
-msgstr "Cacher"
-
-#: mail/mail-display.c:1102
-#, fuzzy
-msgid "Open link in browser"
-msgstr "Ouvrir dans une nouvelle fenêtre"
-
-#: mail/mail-display.c:1104
-#, fuzzy
-msgid "Save as (FIXME)"
-msgstr "_Tâche (FIXME)"
-
-#: mail/mail-display.c:1106
-#, fuzzy
-msgid "Copy location (FIXME)"
-msgstr "_Contact (FIXME)"
-
-#: mail/mail-format.c:518
-#, c-format
-msgid "%s attachment"
-msgstr "pièce-jointe %s"
-
-#: mail/mail-format.c:560
-#, fuzzy
-msgid "Could not parse MIME message. Displaying as source."
-msgstr ""
-"Impossible d'ouvrir le dossier : la liste des messages était incomplete."
-
-#: mail/mail-format.c:742
-#, fuzzy
-msgid "Loading message content"
-msgstr "Contenu de message invalide"
-
-#: mail/mail-format.c:1046
-#, fuzzy
-msgid "Encrypted message not displayed"
-msgstr "Nettoyer l'affichage des messages"
-
-#: mail/mail-format.c:1052
-#, fuzzy
-msgid "Encrypted message"
-msgstr "Éditer le message"
-
-#: mail/mail-format.c:1053
-msgid "Click icon to decrypt."
-msgstr ""
-
-#: mail/mail-format.c:1137 mail/mail-format.c:1526
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr ""
-
-#: mail/mail-format.c:1145 mail/mail-format.c:1534
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr ""
-
-#: mail/mail-format.c:1747
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr ""
-
-#: mail/mail-format.c:1759
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr ""
-
-#: mail/mail-format.c:1763
-#, fuzzy, c-format
-msgid "Pointer to local file (%s)"
-msgstr "Filtre sur la liste de diffusion (%s)"
-
-#: mail/mail-format.c:1797
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr ""
-
-#: mail/mail-format.c:1802
-msgid "Malformed external-body part."
-msgstr ""
-
-#: mail/mail-local.c:337
-#, fuzzy, c-format
-msgid "No such folder %s"
-msgstr "Aucun dossier « %s »."
-
-#: mail/mail-local.c:509
-#, fuzzy, c-format
-msgid "Opening '%s'"
-msgstr "Ouvrir dans %s..."
-
-#: mail/mail-local.c:787
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr "Changement du dossier « %s » vers le format « %s »"
-
-#: mail/mail-local.c:791
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr "Change de dossier « %s » vers le format « %s »"
-
-#: mail/mail-local.c:815
-msgid "Reconfiguring folder"
-msgstr "Reconfiguration du dossier"
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:844
-msgid "Closing current folder"
-msgstr "Fermeture du dossier en cours"
-
-#: mail/mail-local.c:876
-msgid "Renaming old folder and opening"
-msgstr "Renommage du vieus dossier et ouverture"
-
-#: mail/mail-local.c:894
-msgid "Creating new folder"
-msgstr "Création d'un nouveau dossier"
-
-#: mail/mail-local.c:908
-msgid "Copying messages"
-msgstr "Copie du message"
-
-#: mail/mail-local.c:925
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-"Ne peut enregistrer les meta-info du dossier; vous n'allez probablement plus "
-"pouvoir ouvrir ce dossier : %s"
-
-#: mail/mail-local.c:964
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-"Si vous ne pouvez plus ouvrir cette boîte aux lettres, alors\n"
-"vous aurez besoin de la réparer manuellement."
-
-#: mail/mail-mt.c:190
-#, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-"Erreur durant « %s » :\n"
-"%s"
-
-#: mail/mail-mt.c:192
-#, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-"Erreur durant l'exécution de l'opération :\n"
-"%s"
-
-#: mail/mail-mt.c:515 mail/mail-mt.c:544 mail/mail-mt.c:891
-msgid "Working"
-msgstr "Travail en cours"
-
-#: mail/mail-mt.c:679 mail/session.c:98
-msgid "Do you accept?"
-msgstr ""
-
-#: mail/mail-mt.c:873
-#, fuzzy
-msgid "Evolution progress"
-msgstr "Evolution"
-
-#: mail/mail-ops.c:587
-#, c-format
-msgid "Sending \"%s\""
-msgstr "Expédition de « %s »"
-
-#: mail/mail-ops.c:589
-msgid "Sending message"
-msgstr "Envoie du message"
-
-#: mail/mail-ops.c:704
-#, fuzzy, c-format
-msgid "Sending message %d of %d"
-msgstr "Écriture du message %d du %d"
-
-#: mail/mail-ops.c:723
-#, fuzzy, c-format
-msgid "Failed on message %d of %d"
-msgstr "Marque le message %d du %d"
-
-#: mail/mail-ops.c:725 mail/mail-send-recv.c:475
-msgid "Complete."
-msgstr "Complété."
-
-#: mail/mail-ops.c:811
-#, fuzzy
-msgid "Saving message to folder"
-msgstr "Joints les messages du dossier \"%s\""
-
-#: mail/mail-ops.c:884
-#, fuzzy, c-format
-msgid "Moving messages to %s"
-msgstr "Déplacez le(s) message(s) vers"
-
-#: mail/mail-ops.c:884
-#, fuzzy, c-format
-msgid "Copying messages to %s"
-msgstr "Copie du message"
-
-#: mail/mail-ops.c:900
-msgid "Moving"
-msgstr "Déplacement"
-
-#: mail/mail-ops.c:903
-msgid "Copying"
-msgstr "Duplication"
-
-#: mail/mail-ops.c:978
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr "Scrutation des dossiers dans « %s »"
-
-#: mail/mail-ops.c:1139
-msgid "Forwarded messages"
-msgstr "Messages suivis"
-
-#: mail/mail-ops.c:1180 mail/mail-ops.c:1318
-#, c-format
-msgid "Opening folder %s"
-msgstr "Ouverture du dossier %s"
-
-#: mail/mail-ops.c:1247
-#, fuzzy, c-format
-msgid "Opening store %s"
-msgstr "Ouverture du dossier %s"
-
-#: mail/mail-ops.c:1434
-msgid "Expunging folder"
-msgstr "Nettoyage du dossier"
-
-#: mail/mail-ops.c:1483
-#, c-format
-msgid "Retrieving message %s"
-msgstr "Récupération du message %s"
-
-#: mail/mail-ops.c:1550
-msgid "Retrieving messages"
-msgstr "Récupération des messages"
-
-#: mail/mail-ops.c:1560
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr "Récupération du message numéro %d de %d (uid « %s »)"
-
-#: mail/mail-ops.c:1634
-msgid "Saving messages"
-msgstr "Enregistre les messages"
-
-#: mail/mail-ops.c:1713
-#, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr ""
-"Ne peut créer le fichier de sortie : %s\n"
-" %s"
-
-#: mail/mail-ops.c:1726
-#, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr "Enregistrement du message %d sur %d (uid « %s »)"
-
-#: mail/mail-ops.c:1740
-#, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr ""
-"Erreur lors de l'enregistrement des messages vers : %s :\n"
-" %s"
-
-#: mail/mail-ops.c:1814
-#, fuzzy
-msgid "Saving attachment"
-msgstr "Enregistrer la pièce-jointe"
-
-#: mail/mail-ops.c:1829
-#, fuzzy, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr ""
-"Ne peut créer le fichier de sortie : %s\n"
-" %s"
-
-#: mail/mail-ops.c:1857
-#, c-format
-msgid "Could not write data: %s"
-msgstr "Ne peut écrire les données : %s"
-
-#: mail/mail-search-dialogue.c:113
-#, fuzzy
-msgid "_Search"
-msgstr "Rechercher"
-
-#: mail/mail-send-recv.c:138
-msgid "Cancelling ..."
-msgstr ""
-
-#: mail/mail-send-recv.c:233
-#, fuzzy
-msgid "Send & Receive mail"
-msgstr "Réception des messages"
-
-#: mail/mail-send-recv.c:236
-#, fuzzy
-msgid "Receiving"
-msgstr "Réception des messages"
-
-#: mail/mail-send-recv.c:285
-msgid "Updating ..."
-msgstr ""
-
-#: mail/mail-send-recv.c:287 mail/mail-send-recv.c:333
-msgid "Waiting ..."
-msgstr ""
-
-#: mail/mail-send-recv.c:306
-#, fuzzy
-msgid "Sending"
-msgstr "Expédition de « %s »"
-
-#: mail/mail-send-recv.c:471
-msgid "Cancelled."
-msgstr "Annulé."
-
-#: mail/mail-summary.c:109
-msgid "Incomplete message written on pipe!"
-msgstr "Message incomplé écrit dans le conduit !"
-
-#: mail/mail-tools.c:141
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr "Ne peut créer de mbox temporaire « %s » : %s"
-
-#: mail/mail-tools.c:188
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr "[%s] (message suivi)"
-
-#: mail/mail-tools.c:198
-msgid "Fwd: (no subject)"
-msgstr "Fwd: (pas de sujet)"
-
-#: mail/mail-tools.c:215
-#, c-format
-msgid "Forwarded message - %s"
-msgstr "Message suivi - %s"
-
-#: mail/mail-tools.c:217
-msgid "Forwarded message (no subject)"
-msgstr "Message suivi (pas de sujet)"
-
-#: mail/mail-tools.c:414
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-msgstr ""
-
-#: mail/mail-vfolder.c:249
-msgid "VFolders"
-msgstr "Dossiers virtuels"
-
-#: mail/mail-vfolder.c:427
-msgid "New VFolder"
-msgstr "Nouveau dossier virtuel"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/mail-view.c:144 ui/evolution-mail.xml.h:59
-msgid "Reply"
-msgstr "Répondre"
-
-#: mail/mail-view.c:144 ui/evolution-mail.xml.h:65
-msgid "Reply to the sender of this message"
-msgstr "Répond à l'expéditeur du message"
-
-#: mail/mail-view.c:147 ui/evolution-mail.xml.h:63
-msgid "Reply to all recipients of this message"
-msgstr "Répond à l'expéditeur et à tous les destinataires du message"
-
-#: mail/mail-view.c:150 ui/evolution-mail.xml.h:28
-msgid "Forward this message"
-msgstr "Fait suivre le message"
-
-#: mail/mail-view.c:154 ui/evolution-mail.xml.h:56
-msgid "Print the selected message"
-msgstr "Imprime le message sélectionné"
-
-#: mail/mail-view.c:156 ui/evolution-mail.xml.h:13
-msgid "Delete this message"
-msgstr "Supprime le message"
-
-#: mail/message-list.c:648
-msgid "Unseen"
-msgstr "Non vu"
-
-#: mail/message-list.c:649
-msgid "Seen"
-msgstr "Vu"
-
-#: mail/message-list.c:650
-msgid "Answered"
-msgstr "Répondu"
-
-#: mail/message-list.c:651
-msgid "Multiple Unseen Messages"
-msgstr ""
-
-#: mail/message-list.c:652
-msgid "Multiple Messages"
-msgstr "Messages multiple"
-
-#: mail/message-list.c:656
-#, fuzzy
-msgid "Lowest"
-msgstr "Basse"
-
-#: mail/message-list.c:657
-#, fuzzy
-msgid "Lower"
-msgstr "Basse"
-
-#: mail/message-list.c:661
-#, fuzzy
-msgid "Higher"
-msgstr "Haute"
-
-#: mail/message-list.c:662
-#, fuzzy
-msgid "Highest"
-msgstr "Haute"
-
-#: mail/message-list.c:912
-msgid "?"
-msgstr "?"
-
-#: mail/message-list.c:919
-msgid "Today %l:%M %p"
-msgstr "Aujourd'hui %l:%M %p"
-
-#: mail/message-list.c:928
-msgid "Yesterday %l:%M %p"
-msgstr "Hier %l:%M %p"
-
-#: mail/message-list.c:940
-msgid "%a %l:%M %p"
-msgstr "%a %l:%M %p"
-
-#: mail/message-list.c:948
-msgid "%b %d %l:%M %p"
-msgstr "%b %d %l:%M %p"
-
-#: mail/message-list.c:950
-msgid "%b %d %Y"
-msgstr "%b %d %Y"
-
-#: mail/message-list.c:1052
-msgid "Flagged"
-msgstr ""
-
-#: mail/message-list.c:1053
-msgid "From"
-msgstr "De"
-
-#: mail/message-list.c:1053
-msgid "Date"
-msgstr "Date"
-
-#: mail/message-list.c:1053
-msgid "Received"
-msgstr "Réçu"
-
-#: mail/message-list.c:1054
-msgid "To"
-msgstr "À"
-
-#: mail/message-list.c:1054
-msgid "Size"
-msgstr "Taille"
-
-#: mail/subscribe-dialog.c:76 shell/e-storage-set-view.c:46
-msgid "Folder"
-msgstr "Dossier"
-
-#: mail/subscribe-dialog.c:77
-#, fuzzy
-msgid "Store"
-msgstr "Score"
-
-#: mail/subscribe-dialog.c:138
-msgid "Display folders starting with:"
-msgstr "Afficher les dossiers commençant avec :"
-
-#: mail/subscribe-dialog.c:168
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:271
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr "Abonnement au dossier « %s »"
-
-#: mail/subscribe-dialog.c:273
-#, fuzzy, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr "Désabonnement au dossier « %s »"
-
-#. Construct the app
-#: mail/subscribe-dialog.c:873
-#, fuzzy
-msgid "Manage Subscriptions"
-msgstr "Gérer les abonnements..."
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-#, fuzzy
-msgid "Folder name:"
-msgstr "Nom du fichier : "
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-#, fuzzy
-msgid "Folder type:"
-msgstr "Type de fichier :"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-#, fuzzy
-msgid "Specify where to create the folder:"
-msgstr "Pas suffisemment d'espace pour créer le dossier"
-
-#: shell/importer/importer.c:87
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/importer/importer.c:182
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-
-#: shell/importer/importer.c:202 shell/importer/importer.c:233
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-
-#: shell/importer/importer.c:341
-#, fuzzy, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr "Il n'y a pas de nouveaux messages sur %s."
-
-#: shell/importer/importer.c:351
-msgid "Importing"
-msgstr "Importation"
-
-#: shell/importer/importer.c:359
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-
-#: shell/importer/importer.c:372
-#, fuzzy, c-format
-msgid "Error starting %s"
-msgstr "Erreur de chargement %s"
-
-#: shell/importer/importer.c:387
-#, c-format
-msgid "Error loading %s"
-msgstr "Erreur de chargement %s"
-
-#: shell/importer/importer.c:402
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-
-#: shell/importer/importer.c:473
-msgid "Automatic"
-msgstr "Automatique"
-
-#: shell/importer/importer.c:523
-msgid "Filename:"
-msgstr "Nom du fichier :"
-
-#: shell/importer/import.glade.h:5 shell/importer/importer.c:528
-msgid "Select a file"
-msgstr "Sélectionner un fichier"
-
-#: shell/importer/importer.c:538
-msgid "File type:"
-msgstr "Type de fichier :"
-
-#: shell/importer/import.glade.h:4 shell/importer/importer.c:619
-msgid "Import"
-msgstr "Importer"
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr ""
-
-#: shell/importer/import.glade.h:2
-#, fuzzy
-msgid "Evolution Import Utility"
-msgstr "Conduit 'À faire' d'Evolution"
-
-#: shell/importer/import.glade.h:3
-msgid "Evolution Importer Utility"
-msgstr ""
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-
-#: shell/e-setup.c:118 shell/e-setup.c:191
-msgid "Evolution installation"
-msgstr "Installation d'Evolution"
-
-#: shell/e-setup.c:122
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-"Cette nouvelle version d'Evolution a besoin d'installer des fichiers "
-"supplémentaires dans votre répertoire personnel d'Evolution."
-
-#: shell/e-setup.c:123
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr ""
-"Veuillez cliquez sur « Valider » pour installer les fichiers, ou « Annuler » "
-"pour quitter."
-
-#: shell/e-setup.c:163
-msgid "Could not update files correctly"
-msgstr "Ne peut mettre à jour les fichiers correctement"
-
-#: shell/e-setup.c:166 shell/e-setup.c:234
-msgid "Evolution files successfully installed."
-msgstr "Les fichiers d'Evolution sont correctement installés."
-
-#: shell/e-setup.c:195
-#, fuzzy
-msgid "This seems to be the first time you are running Evolution."
-msgstr "Il semble que c'est la première fois que vous utilisez Evolution."
-
-#: shell/e-setup.c:196
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr ""
-"Cliquez sur « Valider » pour installer les fichiers utilisateur d'Evolution "
-"sous"
-
-#: shell/e-setup.c:215
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"Ne peut créer le répertoire\n"
-"%s\n"
-"Erreur : %s"
-
-#: shell/e-setup.c:230
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-"Ne peut copier les fichiers dans\n"
-"« %s »."
-
-#: shell/e-setup.c:255
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-"Le fichier « %s » n'est pas un répertoire.\n"
-"Déplacez le afin de permettre l'installation\n"
-"des fichiers utilisateur d'Evolution."
-
-#: shell/e-setup.c:267
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-"Le répertoire « %s » existe mais n'est pas le répertoire\n"
-"d'Evolution. Déplacez le afin de permettre\n"
-"l'installation des fichiers utilisateur d'Evolution."
-
-#: shell/e-shell-folder-creation-dialog.c:99
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-"Ne peut créer le dossier spécifié :\n"
-"%s"
-
-#: shell/e-shell-folder-creation-dialog.c:156
-msgid "The specified folder name is not valid."
-msgstr "Le nom de dossier spécifié n'est pas valide."
-
-#: shell/e-shell-folder-creation-dialog.c:248
-msgid "Evolution - Create new folder"
-msgstr "Evolution - Créez un nouveau dossier"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-"Le type du dossier sélectionné n'est pas valide pour\n"
-"l'opération demandée."
-
-#: shell/e-shell-folder-selection-dialog.c:319
-msgid "New..."
-msgstr "Nouveau..."
-
-#: shell/e-shell-folder-title-bar.c:459 shell/e-shell-folder-title-bar.c:460
-msgid "(Untitled)"
-msgstr "(Sans titre)"
-
-#: shell/e-shell-view-menu.c:173
-msgid "Bug buddy was not found in your $PATH."
-msgstr "Bug buddy n'a pas été trouvé dans votre $PATH."
-
-#: shell/e-shell-view-menu.c:179
-msgid "Bug buddy could not be run."
-msgstr "Bug buddy ne peut être exécuté."
-
-#: shell/e-shell-view-menu.c:208
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Copyright 1999, 2000, 2001 Ximian, Inc."
-
-#: shell/e-shell-view-menu.c:210
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-"Evolution est une suite d'applications de travail collaboratif\n"
-"pour la messagerie, l'agenda, et la gestion de contacts\n"
-"à l'intérieur de l'environnement de bureau Gnome."
-
-#: shell/e-shell-view-menu.c:374
-msgid "Go to folder..."
-msgstr "Aller au dossier..."
-
-#: shell/e-shell-view.c:148
-msgid "(No folder displayed)"
-msgstr "(Aucun dossier affiché)"
-
-#: shell/e-shell-view.c:1134
-#, c-format
-msgid "%s - Evolution %s"
-msgstr "%s - Evolution %s"
-
-#: shell/e-shell-view.c:1136
-#, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "%s - Evolution %s [%s]"
-
-#: shell/e-shell.c:378
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr "Ne peut activer l'entrepôt local -- %s"
-
-#: shell/e-shell.c:1248
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-"Ouups ! La vue pour « %s » est morte de manière inattendue. :-(\n"
-"Cela signifie probablement que le composant %s a planté."
-
-#: shell/e-shortcuts-view.c:134
-msgid "Create new shortcut group"
-msgstr "Créer un nouveau groupe de raccourcis"
-
-#: shell/e-shortcuts-view.c:137
-msgid "Group name:"
-msgstr "Nom du groupe :"
-
-#: shell/e-shortcuts-view.c:260
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-"Voulez-vous vraiment enlever le groupe\n"
-"« %s » de la barre de raccourcis ?"
-
-#: shell/e-shortcuts-view.c:265
-msgid "Don't remove"
-msgstr "Ne pas enlever"
-
-#: shell/e-shortcuts-view.c:276
-msgid "_Small Icons"
-msgstr "_Petites icones"
-
-#: shell/e-shortcuts-view.c:277
-msgid "Show the shortcuts as small icons"
-msgstr "Affiche les raccourcis sous forme de petites icones"
-
-#: shell/e-shortcuts-view.c:279
-msgid "_Large Icons"
-msgstr "_Grandes icones"
-
-#: shell/e-shortcuts-view.c:280
-msgid "Show the shortcuts as large icons"
-msgstr "Affiche les raccourcis sous forme de grandes icones"
-
-#: shell/e-shortcuts-view.c:291
-msgid "_New Group..."
-msgstr "_Nouveau groupe..."
-
-#: shell/e-shortcuts-view.c:292
-msgid "Create a new shortcut group"
-msgstr "Créer un nouveau groupe de raccourcis"
-
-#: shell/e-shortcuts-view.c:294
-msgid "_Remove This Group..."
-msgstr "_Supprimer ce groupe..."
-
-#: shell/e-shortcuts-view.c:295
-msgid "Remove this shortcut group"
-msgstr "Supprime ce groupe de raccourcis"
-
-#: shell/e-shortcuts-view.c:300
-#, fuzzy
-msgid "_Hide the Shortcut Bar"
-msgstr "Afficher la barre de _raccourcis"
-
-#: shell/e-shortcuts-view.c:301
-#, fuzzy
-msgid "Hide the shortcut bar"
-msgstr "Afficher la barre de _raccourcis"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate"
-msgstr "Activer"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate this shortcut"
-msgstr "Active ce raccourci"
-
-#: shell/e-shortcuts-view.c:388
-msgid "Remove this shortcut from the shortcut bar"
-msgstr "Supprime ce raccourci de la barre de raccourcis"
-
-#: shell/e-shortcuts.c:379
-msgid "Error saving shortcuts."
-msgstr "Erreur d'enregistrement des raccourcis."
-
-#: shell/e-storage-set-view.c:649 ui/evolution-event-editor.xml.h:76
-#: ui/evolution-message-composer.xml.h:53
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:43
-msgid "_View"
-msgstr "_Vue"
-
-#: shell/e-storage-set-view.c:649
-msgid "View the selected folder"
-msgstr "Voir le sélecteur de dossier"
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr "(Pas de nom)"
-
-#: shell/e-storage.c:459
-msgid "No error"
-msgstr "Pas d'erreur"
-
-#: shell/e-storage.c:461
-msgid "Generic error"
-msgstr "Erreur générique"
-
-#: shell/e-storage.c:463
-msgid "A folder with the same name already exists"
-msgstr "Un dossier avec le même nom existe"
-
-#: shell/e-storage.c:465
-msgid "The specified folder type is not valid"
-msgstr "Le type de dossier spécifié n'est pas valide"
-
-#: shell/e-storage.c:467
-msgid "I/O error"
-msgstr "Erreur d'E/S"
-
-#: shell/e-storage.c:469
-msgid "Not enough space to create the folder"
-msgstr "Pas suffisemment d'espace pour créer le dossier"
-
-#: shell/e-storage.c:471
-msgid "The specified folder was not found"
-msgstr "Le dossier spécifié n'a pas été trouvé"
-
-#: shell/e-storage.c:473
-msgid "Function not implemented in this storage"
-msgstr "La fonction n'est pas implémenté dans cet entrepot"
-
-#: shell/e-storage.c:475
-msgid "Permission denied"
-msgstr "Permission refusée"
-
-#: shell/e-storage.c:477
-msgid "Operation not supported"
-msgstr "Opération non supportée"
-
-#: shell/e-storage.c:479
-msgid "The specified type is not supported in this storage"
-msgstr "Le type spécifié n'est pas supporté dans cet entrepot"
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-#, fuzzy
-msgid "The Evolution shell."
-msgstr "Ne peut initialiser le shell Evolution."
-
-#: shell/main.c:83
-#, fuzzy, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-"Bonjour.\n"
-"Merci d'avoir pris le temps de télécharger cette version d'aperçu\n"
-"de la suite de travail collaboratif Evolution.\n"
-"\n"
-"Depuis la dernière version, notre effort a été de rendre Evolution\n"
-"utilisable. Beaucoup des programmeurs d'Evolution l'utilise pour\n"
-"lire leurs messages. Vous aussi vous pouvez. (Par précaution,\n"
-"faites une sauvegarde.)\n"
-"\n"
-"Mais tant que nous n'aurons pas fixé toutes les anomalies affectant\n"
-"la stabilité et la sécurité, vous aurez cet avertissement :\n"
-"Evolution peut planter, perdre vos courriers quand vous ne le souhaitez\n"
-"pas, refuser de supprimer vos courriers lorsque vous le souhaitez,\n"
-"laisser des processus égarés en exécution, consommer 100% du CPU,\n"
-"se geler, se verrouiller, envoyer des message HTML à diverses\n"
-"listes de diffusions, et vous embarrasser vis à vis de vos amis et\n"
-"collègues de travail.\n"
-"Utilisez la en connaissance de cause.\n"
-"\n"
-"Nous espérons que vous apprécierez le résultat de notre dur labeur,\n"
-"et nous attendons avec impatience vos contributions !\n"
-
-#: shell/main.c:108
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-"Merci\n"
-"L'équipe d'Evolution\n"
-
-#: shell/main.c:139
-msgid "Cannot initialize the Evolution shell."
-msgstr "Ne peut initialiser le shell Evolution."
-
-#: shell/main.c:185
-msgid "Disable splash screen"
-msgstr ""
-
-#: shell/main.c:186
-msgid "Send the debugging output of all components to a file."
-msgstr ""
-
-#: shell/main.c:219
-msgid "Cannot initialize the Bonobo component system."
-msgstr "Ne peut initialiser le composant Bonobo"
-
-#: ui/evolution-addressbook.xml.h:2
-msgid "Create new contact"
-msgstr "Créer un nouveau contact"
-
-#: ui/evolution-addressbook.xml.h:4
-msgid "Delete a contact"
-msgstr "Supprimer le contact"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-msgid "Find"
-msgstr "Rechercher"
-
-#: ui/evolution-addressbook.xml.h:6
-msgid "Find a contact"
-msgstr "Rechercher un contact"
-
-#: ui/evolution-addressbook.xml.h:7
-msgid "New contact"
-msgstr "Nouveau contact"
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-mail.xml.h:49
-msgid "Previews the message to be printed"
-msgstr "Visualise le message a imprimer"
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "Print contacts"
-msgstr "Imprimer les contacts"
-
-#: ui/evolution-addressbook.xml.h:12 ui/evolution-mail.xml.h:78
-msgid "Stop"
-msgstr "Arrêter"
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "Stop Loading"
-msgstr "Arrête le chargement"
-
-#: ui/evolution-addressbook.xml.h:14
-msgid "View All"
-msgstr "Tout voir"
-
-#: ui/evolution-addressbook.xml.h:15
-msgid "View all contacts"
-msgstr "Voir tous les contacts"
-
-#: ui/evolution-addressbook.xml.h:16
-#, fuzzy
-msgid "_Addressbook Sources..."
-msgstr "Sources du carnet d'adresses"
-
-#: ui/evolution-addressbook.xml.h:17
-#, fuzzy
-msgid "_Contact"
-msgstr "_Contacts"
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-msgid "_Print..."
-msgstr "_Imprimer..."
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr "_Rechercher des contacts"
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-mail.xml.h:110
-#: ui/evolution-task-editor-dialog.xml.h:88 ui/evolution.xml.h:42
-msgid "_Tools"
-msgstr "_Outils"
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr "5 jours"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-msgid "Alter preferences"
-msgstr "Modifier les préférences"
-
-#: ui/evolution-calendar.xml.h:4
-#, fuzzy
-msgid "Create a new all day Event"
-msgstr "Crée un nouveau calendrier"
-
-#: ui/evolution-calendar.xml.h:5
-msgid "Create a new appointment"
-msgstr "Crée un nouveau rendez-vous"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr "Crée un nouveau calendrier"
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr "Jour"
-
-#: ui/evolution-calendar.xml.h:8
-#, fuzzy
-msgid "Go To"
-msgstr "Aller à"
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr "Recule dans le temps"
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go forward in time"
-msgstr "Avance dans le temps"
-
-#: ui/evolution-calendar.xml.h:11
-#, fuzzy
-msgid "Go to _Date"
-msgstr "Aller à la date"
-
-#: ui/evolution-calendar.xml.h:12
-#, fuzzy
-msgid "Go to _Today"
-msgstr "Aller à aujourd'hui"
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr "Va à une date précise"
-
-#: ui/evolution-calendar.xml.h:14
-msgid "Go to present time"
-msgstr "Va à la date actuelle"
-
-#: ui/evolution-calendar.xml.h:15
-msgid "Month"
-msgstr "Mois"
-
-#: ui/evolution-calendar.xml.h:17
-#, fuzzy
-msgid "New _Event"
-msgstr "Nouveau Ca_lendrier"
-
-#: ui/evolution-calendar.xml.h:18 ui/evolution-event-editor.xml.h:29
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "Next"
-msgstr "Suivant"
-
-#: ui/evolution-calendar.xml.h:20
-msgid "Open Calendar"
-msgstr "Ouvrir un calendrier"
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Prev"
-msgstr "Préc"
-
-#: ui/evolution-calendar.xml.h:22
-#, fuzzy
-msgid "Previews the calendar to be printed"
-msgstr "Visualise le message a imprimer"
-
-#: ui/evolution-calendar.xml.h:25
-#, fuzzy
-msgid "Print calendar"
-msgstr "Imprimer le Calendrier"
-
-#: ui/evolution-calendar.xml.h:26
-msgid "Print this Calendar"
-msgstr "Imprimer ce calendrier"
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:15
-msgid "Save As"
-msgstr "Enregistrer sous"
-
-#: ui/evolution-calendar.xml.h:28
-msgid "Save calendar as something else"
-msgstr "Enregistrer le calendrier comme quelquechose d'autre"
-
-#: ui/evolution-calendar.xml.h:30
-msgid "Show 1 day"
-msgstr "Affiche une journée"
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr "Affiche un mois"
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr "Affiche une semaine"
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr "Affiche une semaine de travail"
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:226
-#: widgets/misc/e-dateedit.c:422
-msgid "Today"
-msgstr "Aujourd'hui"
-
-#: ui/evolution-calendar.xml.h:35
-#, fuzzy
-msgid "W_ork Week"
-msgstr "Semaine de travail"
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr "Semaine"
-
-#: ui/evolution-calendar.xml.h:37
-#, fuzzy
-msgid "_Appointment"
-msgstr "Rendez-vous"
-
-#: ui/evolution-calendar.xml.h:38
-#, fuzzy
-msgid "_Day"
-msgstr "Jour"
-
-#: ui/evolution-calendar.xml.h:39
-#, fuzzy
-msgid "_Month"
-msgstr "Mois"
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:38
-msgid "_New"
-msgstr "_Nouveau"
-
-#: ui/evolution-calendar.xml.h:41
-msgid "_Open Calendar"
-msgstr "_Ouvrir un calendrier"
-
-#: ui/evolution-calendar.xml.h:43 ui/evolution-mail.xml.h:106
-#: ui/evolution-tasks.xml.h:8
-msgid "_Save As..."
-msgstr "Enregistrer _sous..."
-
-#: ui/evolution-calendar.xml.h:45
-#, fuzzy
-msgid "_Week"
-msgstr "Semaine"
-
-#: ui/evolution-contact-editor.xml.h:2
-msgid "Delete this item"
-msgstr "Supprimer cet élément"
-
-#: ui/evolution-contact-editor.xml.h:3
-msgid "Delete..."
-msgstr "Supprimer..."
-
-#: ui/evolution-contact-editor.xml.h:4
-msgid "Help"
-msgstr "Aide"
-
-#: ui/evolution-contact-editor.xml.h:5
-msgid "Print En_velope..."
-msgstr "Imprimer une en_veloppe..."
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-msgid "Print this item"
-msgstr "Imprime cet élément"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-mail.xml.h:57 ui/evolution-task-editor-dialog.xml.h:41
-msgid "Print..."
-msgstr "Imprimer..."
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:16
-#: ui/evolution-task-editor-dialog.xml.h:51
-msgid "Save _As..."
-msgstr "Enregistrer _sous..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-msgid "Save and Close"
-msgstr "Enregistrer et Quitter"
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr "Enregistrer le contact et fermer la boîte de dialogue"
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr "Voir l'aide en ligne"
-
-#: ui/evolution-contact-editor.xml.h:13
-#, fuzzy
-msgid "Send _message to contact..."
-msgstr "Envoie un _message au contact..."
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:44 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:30
-msgid "_File"
-msgstr "_Fichier"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:51
-#: ui/evolution-task-editor-dialog.xml.h:85
-msgid "_Save"
-msgstr "_Enregistrer"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr "À propos de cette application"
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr "À propos..."
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-msgid "Actio_ns"
-msgstr "Actio_ns"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-msgid "Address _Book... (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-msgid "C_lear"
-msgstr "_Vider"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-msgid "C_ut"
-msgstr "Co_uper"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-#, fuzzy
-msgid "Chec_k Names (FIXME)"
-msgstr "_Tâche (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-msgid "Clear"
-msgstr "Vider"
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-msgid "Clear the selection"
-msgstr "Vide la sélection"
-
-#: ui/evolution-event-editor.xml.h:11
-msgid "Close this appointment"
-msgstr "Ferme ce rendez-vous"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "Cop_ier vers le dossier... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:7
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "Copier"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-msgid "Copy the selection"
-msgstr "Copie la sélection"
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr "Couper"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Cut the selection"
-msgstr "Coupe la sélection"
-
-#: ui/evolution-event-editor.xml.h:18
-msgid "Delete this appointment"
-msgstr "Supprimer ce rendez-vous"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-#, fuzzy
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr "Enregistrer dans le _dossier... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-#, fuzzy
-msgid "For_ward (FIXME)"
-msgstr "_Tâche (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-#, fuzzy
-msgid "Go to the next item"
-msgstr "Va à la date actuelle"
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-#, fuzzy
-msgid "Go to the previous item"
-msgstr "Va à la date actuelle"
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-#, fuzzy
-msgid "In_complete Task (FIXME)"
-msgstr "_Tâche (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-#, fuzzy
-msgid "Modify the file's properties"
-msgstr "Propriétés de la Liste 'À Faire'"
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-msgid "N_ext"
-msgstr "_Suivant"
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-msgid "Paste"
-msgstr "Coller"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-msgid "Paste the clipboard"
-msgstr "Colle le contenu du presse-papiers"
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr "_Précédent"
-
-#: ui/evolution-event-editor.xml.h:33 ui/evolution-task-editor-dialog.xml.h:36
-msgid "Previous"
-msgstr "Précédent"
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-#, fuzzy
-msgid "Print Pre_view"
-msgstr "Aperçu Avant Impression"
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-msgid "Print S_etup..."
-msgstr "Configuration de l'impr_ession..."
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-msgid "Print Setup"
-msgstr "Configuration de l'impression"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:14
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:239
-msgid "Save"
-msgstr "Enregistrer"
-
-#: ui/evolution-event-editor.xml.h:43
-#, fuzzy
-msgid "Save the appointment and close the dialog box"
-msgstr "Enregistrer le contact et fermer la boîte de dialogue"
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:20
-#: ui/evolution-task-editor-dialog.xml.h:53
-#, fuzzy
-msgid "Save the current file"
-msgstr "la date actuelle"
-
-#: ui/evolution-event-editor.xml.h:46
-#, fuzzy
-msgid "Schedule _Meeting"
-msgstr "Sélectionnez un Dossier"
-
-#: ui/evolution-event-editor.xml.h:47
-msgid "Schedule some sort of a meeting"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-mail.xml.h:68
-#: ui/evolution-task-editor-dialog.xml.h:57
-msgid "Select All"
-msgstr "Sélectionner tout"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-#, fuzzy
-msgid "Select everything"
-msgstr "Sélectionnez un Dossier"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-#, fuzzy
-msgid "Task _Request (FIXME)"
-msgstr "_Tâche (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-message-composer.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:63
-msgid "_About..."
-msgstr "À _propos..."
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:41
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:27
-msgid "_Close"
-msgstr "_Fermer"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:28
-msgid "_Contact (FIXME)"
-msgstr "_Contact (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-msgid "_Copy"
-msgstr "_Copier"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr "_Débog"
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:46
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:34
-msgid "_Help"
-msgstr "_Aide"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-#, fuzzy
-msgid "_Item (FIXME)"
-msgstr "_Tâche (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-#, fuzzy
-msgid "_Journal Entry (FIXME)"
-msgstr "_Contact (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-#, fuzzy
-msgid "_Last Item in Folder (FIXME)"
-msgstr "Enregistrer dans le _dossier... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-#, fuzzy
-msgid "_Mail Message (FIXME)"
-msgstr "_Message électronique (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-#, fuzzy
-msgid "_Move to Folder... (FIXME)"
-msgstr "_Déplacer vers le dossier..."
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-#, fuzzy
-msgid "_Note (FIXME)"
-msgstr "_Contact (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-msgid "_Paste"
-msgstr "_Coller"
-
-#: ui/evolution-event-editor.xml.h:69 ui/evolution-task-editor-dialog.xml.h:82
-#: ui/evolution-tasks.xml.h:7
-msgid "_Print"
-msgstr "_Imprimer"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:102
-#: ui/evolution-task-editor-dialog.xml.h:83
-msgid "_Properties..."
-msgstr "_Propriétés..."
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-msgid "_Select All"
-msgstr "_Sélectionner tout"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:41
-msgid "_Task (FIXME)"
-msgstr "_Tâche (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-#, fuzzy
-msgid "_Unread Item (FIXME)"
-msgstr "_Contact (FIXME)"
-
-#: ui/evolution-executive-summary.xml.h:1
-msgid "Add Service"
-msgstr "Ajouter un service"
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:3
-#, fuzzy
-msgid "Create a new email"
-msgstr "Crée une nouveau contact"
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:5
-msgid "New Mail"
-msgstr "Nouveau courrier"
-
-#: ui/evolution-mail.xml.h:2
-msgid "Apply any new filters to the mail in this box"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:3
-msgid "Change the properties of this folder"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:4
-msgid "Compose"
-msgstr "Composer"
-
-#: ui/evolution-mail.xml.h:5
-msgid "Compose a new message"
-msgstr "Compose un nouveau message"
-
-#: ui/evolution-mail.xml.h:6
-#, fuzzy
-msgid "Configure Folder..."
-msgstr "_Copier vers le dossier..."
-
-#: ui/evolution-mail.xml.h:8
-msgid "Copy message to a new folder"
-msgstr "Copie le message vers un nouveau dossier"
-
-#: ui/evolution-mail.xml.h:9
-#, fuzzy
-msgid "Copy selected messages to another folder"
-msgstr "Copie le message vers un nouveau dossier"
-
-#: ui/evolution-mail.xml.h:10
-#, fuzzy
-msgid "Create _Virtual Folder From Message"
-msgstr "Créer une règle à partir du message"
-
-#: ui/evolution-mail.xml.h:12
-#, fuzzy
-msgid "Delete the selected messages"
-msgstr "Imprime le message sélectionné"
-
-#: ui/evolution-mail.xml.h:14
-msgid "Display all of the message headers"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:15
-#, fuzzy
-msgid "Edit Message"
-msgstr "_Éditer le message"
-
-#: ui/evolution-mail.xml.h:16
-#, fuzzy
-msgid "Edit the current message"
-msgstr "la date actuelle"
-
-#: ui/evolution-mail.xml.h:17
-#, fuzzy
-msgid "Empty _Trash"
-msgstr "Jours vides :"
-
-#: ui/evolution-mail.xml.h:18
-#, fuzzy
-msgid "Expunge"
-msgstr "_Nettoyer"
-
-#: ui/evolution-mail.xml.h:19
-#, fuzzy
-msgid "Filter on Se_nder"
-msgstr "Filtre sur l'expéditeur"
-
-#: ui/evolution-mail.xml.h:20
-#, fuzzy
-msgid "Filter on _Recipients"
-msgstr "Filtre sur les destinataires"
-
-#: ui/evolution-mail.xml.h:21
-#, fuzzy
-msgid "Filter on _Subject"
-msgstr "Filtre sur le sujet"
-
-#: ui/evolution-mail.xml.h:22
-msgid "Finaly remove all mails tagged for deletion"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:23
-msgid "Forget _Passwords"
-msgstr "Oublier les _mots de passe"
-
-#: ui/evolution-mail.xml.h:25
-#, fuzzy
-msgid "Forward As"
-msgstr "Faire suivre"
-
-#: ui/evolution-mail.xml.h:27
-msgid "Forward the selected mail to someone"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:29
-#, fuzzy
-msgid "Forward this message in-line with your mail, so you can edit it"
-msgstr "Faire suivre un message sans sujet"
-
-#: ui/evolution-mail.xml.h:30
-#, fuzzy
-msgid "Full _Headers"
-msgstr "Rechercher complète"
-
-#: ui/evolution-mail.xml.h:31
-#, fuzzy
-msgid "Hide Deleted Messages"
-msgstr "Supprimer le message"
-
-#: ui/evolution-mail.xml.h:32
-#, fuzzy
-msgid "Hide S_elected Messages"
-msgstr "Imprime le message sélectionné"
-
-#: ui/evolution-mail.xml.h:33
-#, fuzzy
-msgid "Hide _Deleted Messages"
-msgstr "Supprimer le message"
-
-#: ui/evolution-mail.xml.h:34
-#, fuzzy
-msgid "Hide _Read messages"
-msgstr "Message suivi - %s"
-
-#: ui/evolution-mail.xml.h:35
-#, fuzzy
-msgid "Invert Selection"
-msgstr "_Inverser la sélection"
-
-#: ui/evolution-mail.xml.h:36
-#, fuzzy
-msgid "Manage _Subscriptions..."
-msgstr "Gérer les abonnements..."
-
-#: ui/evolution-mail.xml.h:37
-#, fuzzy
-msgid "Mar_k as Read"
-msgstr "Marquer comme lu"
-
-#: ui/evolution-mail.xml.h:38
-#, fuzzy
-msgid "Mark All as R_ead"
-msgstr "Marquer comme lu"
-
-#: ui/evolution-mail.xml.h:39
-#, fuzzy
-msgid "Mark As Read"
-msgstr "_Marquer comme lus"
-
-#: ui/evolution-mail.xml.h:40
-msgid "Mark As U_nread"
-msgstr "Marquer comme _non lu"
-
-#: ui/evolution-mail.xml.h:41
-#, fuzzy
-msgid "Mark as U_nread"
-msgstr "Marquer comme non lu"
-
-#: ui/evolution-mail.xml.h:42
-#, fuzzy
-msgid "Mark the selected messages as having been read"
-msgstr "Imprime le message sélectionné"
-
-#: ui/evolution-mail.xml.h:43
-msgid "Mark the selected messages as not having been read"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:44
-msgid "Move"
-msgstr "Déplacer"
-
-#: ui/evolution-mail.xml.h:45
-msgid "Move message to a new folder"
-msgstr "Déplace le message vers un nouveau dossier"
-
-#: ui/evolution-mail.xml.h:46
-#, fuzzy
-msgid "Move selected messages to another folder"
-msgstr "Déplace le message vers un nouveau dossier"
-
-#: ui/evolution-mail.xml.h:47
-msgid "Open in New Window"
-msgstr "Ouvrir dans une nouvelle fenêtre"
-
-#: ui/evolution-mail.xml.h:48
-#, fuzzy
-msgid "Open the current message in a new window"
-msgstr "Envoie le message maintenant"
-
-#: ui/evolution-mail.xml.h:53
-msgid "Print Preview of message..."
-msgstr "Aperçu avant impression du message..."
-
-#: ui/evolution-mail.xml.h:54
-msgid "Print message to the printer"
-msgstr "Imprime le message vers l'imprimante"
-
-#: ui/evolution-mail.xml.h:55
-msgid "Print message..."
-msgstr "Imprimer le message..."
-
-#: ui/evolution-mail.xml.h:58
-msgid "Redirect (FIXME: implement me)"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:61
-msgid "Reply to _All"
-msgstr "Répondre à _tous"
-
-#: ui/evolution-mail.xml.h:62
-#, fuzzy
-msgid "Reply to all"
-msgstr "Répondre à tous"
-
-#: ui/evolution-mail.xml.h:64
-#, fuzzy
-msgid "Reply to sender"
-msgstr "Répondre à l'expéditeur"
-
-#: ui/evolution-mail.xml.h:66
-msgid "S_ource"
-msgstr "S_ource"
-
-#: ui/evolution-mail.xml.h:67
-#, fuzzy
-msgid "Save the message into a new file"
-msgstr "Enregistrer le message dans un dossier spécifié"
-
-#: ui/evolution-mail.xml.h:69 ui/evolution-subscribe.xml.h:7
-msgid "Select _All"
-msgstr "Sélectionnez _tout"
-
-#: ui/evolution-mail.xml.h:70
-#, fuzzy
-msgid "Select _Thread"
-msgstr "Sélectionnez _tout"
-
-#: ui/evolution-mail.xml.h:71
-#, fuzzy
-msgid "Send / Receive"
-msgstr "Réception des messages"
-
-#: ui/evolution-mail.xml.h:72
-msgid "Send a reply to the person who sent you this mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:73
-msgid "Send a single mail in reply to all the selected mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:74
-#, fuzzy
-msgid ""
-"Send queued mail\n"
-" and retrieve new mail"
-msgstr "Envoie les messages en attente et récupère les nouveaux messages"
-
-#: ui/evolution-mail.xml.h:76
-msgid "Send queued mail and retrieve new mail"
-msgstr "Envoie les messages en attente et récupère les nouveaux messages"
-
-#: ui/evolution-mail.xml.h:77
-#, fuzzy
-msgid "Show _All"
-msgstr "Afficher tout"
-
-#: ui/evolution-mail.xml.h:79
-msgid "Threaded Message list"
-msgstr "Liste des messages par enfilade"
-
-#: ui/evolution-mail.xml.h:80
-#, fuzzy
-msgid "Un-delete the selected messages"
-msgstr "Imprime le message sélectionné"
-
-#: ui/evolution-mail.xml.h:82
-msgid "VFolder on Se_nder"
-msgstr "Dossier virtuel sur l'e_xpéditeur"
-
-#: ui/evolution-mail.xml.h:83
-msgid "VFolder on _Recipients"
-msgstr "Dossier virtuel sur les de_stinataires"
-
-#: ui/evolution-mail.xml.h:84
-#, fuzzy
-msgid "VFolder on _Subject"
-msgstr "Dossier virtuel sur le sujet"
-
-#: ui/evolution-mail.xml.h:85
-msgid "View Raw Message Source"
-msgstr "Voir la source brut du message"
-
-#: ui/evolution-mail.xml.h:86
-#, fuzzy
-msgid "Virtual Folder _Editor..."
-msgstr "Éditeur de dossier _virtuel..."
-
-#: ui/evolution-mail.xml.h:87
-msgid "_Apply Filters"
-msgstr "_Appliquer les filtres"
-
-#: ui/evolution-mail.xml.h:88
-#, fuzzy
-msgid "_Attachment"
-msgstr "Pièce-jointe"
-
-#: ui/evolution-mail.xml.h:89
-msgid "_Copy to Folder..."
-msgstr "_Copier vers le dossier..."
-
-#: ui/evolution-mail.xml.h:90
-#, fuzzy
-msgid "_Create Filter From Message"
-msgstr "Créer une règle à partir du message"
-
-#: ui/evolution-mail.xml.h:92
-msgid "_Expunge"
-msgstr "_Nettoyer"
-
-#: ui/evolution-mail.xml.h:93
-#, fuzzy
-msgid "_Filters..."
-msgstr "_Filtres de message..."
-
-#: ui/evolution-mail.xml.h:94 ui/evolution.xml.h:31
-msgid "_Folder"
-msgstr "_Dossier"
-
-#: ui/evolution-mail.xml.h:95
-msgid "_Forward"
-msgstr "_Faire suivre"
-
-#: ui/evolution-mail.xml.h:96
-#, fuzzy
-msgid "_Inline"
-msgstr "Voir en ligne"
-
-#: ui/evolution-mail.xml.h:97 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr "_Inverser la sélection"
-
-#: ui/evolution-mail.xml.h:98
-#, fuzzy
-msgid "_Mail Message"
-msgstr "_Message électronique (FIXME)"
-
-#: ui/evolution-mail.xml.h:99
-#, fuzzy
-msgid "_Mail Settings..."
-msgstr "Réglages..."
-
-#: ui/evolution-mail.xml.h:100
-msgid "_Move to Folder..."
-msgstr "_Déplacer vers le dossier..."
-
-#: ui/evolution-mail.xml.h:101
-#, fuzzy
-msgid "_Open Selected Items"
-msgstr "Ouvrir la tâche"
-
-#: ui/evolution-mail.xml.h:103
-#, fuzzy
-msgid "_Quoted"
-msgstr "Note"
-
-#: ui/evolution-mail.xml.h:104
-#, fuzzy
-msgid "_Reply"
-msgstr "Répondre"
-
-#: ui/evolution-mail.xml.h:105
-#, fuzzy
-msgid "_Resend Messages"
-msgstr "_Éditer le message"
-
-#: ui/evolution-mail.xml.h:107
-msgid "_Save Message As..."
-msgstr "_Enregistrer le message sous..."
-
-#: ui/evolution-mail.xml.h:108
-#, fuzzy
-msgid "_Send / Receive"
-msgstr "Réception des messages"
-
-#: ui/evolution-mail.xml.h:109
-msgid "_Threaded"
-msgstr "_Enfiler"
-
-#: ui/evolution-mail.xml.h:111
-msgid "_Undelete"
-msgstr "_Récupérer"
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr "Joindre"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-msgid "Close the current file"
-msgstr "Ferme le fichier en cours"
-
-#: ui/evolution-message-composer.xml.h:5
-msgid "Encrypt this message with PGP"
-msgstr "Encrypter le message avec PGP"
-
-#: ui/evolution-message-composer.xml.h:6
-msgid "F_ormat"
-msgstr "F_ormat"
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "HTML"
-msgstr "HTML"
-
-#: ui/evolution-message-composer.xml.h:8
-msgid "Insert a file as text into the message"
-msgstr "Insère un fichier comme texte dans le message"
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert text file..."
-msgstr "Ensérer un fichier texte..."
-
-#: ui/evolution-message-composer.xml.h:11
-msgid "Open a file"
-msgstr "Ouvrir un fichier"
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "PGP Encrypt"
-msgstr "Encrypter avec PGP"
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Sign"
-msgstr "Signer avec PGP"
-
-#: ui/evolution-message-composer.xml.h:17
-msgid "Save _Draft"
-msgstr "Enregistrer le _brouillon"
-
-#: ui/evolution-message-composer.xml.h:18
-msgid "Save in _folder... (FIXME)"
-msgstr "Enregistrer dans le _dossier... (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:19
-msgid "Save in folder..."
-msgstr "Enregistrer dans le dossier..."
-
-#: ui/evolution-message-composer.xml.h:21
-msgid "Save the current file with a different name"
-msgstr "Enregistrer le fichier en cours avec un nom différent"
-
-#: ui/evolution-message-composer.xml.h:22
-msgid "Save the message in a specified folder"
-msgstr "Enregistrer le message dans un dossier spécifié"
-
-#: ui/evolution-message-composer.xml.h:23
-msgid "Send"
-msgstr "Envoyer"
-
-#: ui/evolution-message-composer.xml.h:24
-msgid "Send _Later"
-msgstr "Envoyer plus _tard"
-
-#: ui/evolution-message-composer.xml.h:25
-msgid "Send _later"
-msgstr "Envoyer plus _tard"
-
-#: ui/evolution-message-composer.xml.h:26
-msgid "Send the mail in HTML format"
-msgstr "Envoie le message au format HTML"
-
-#: ui/evolution-message-composer.xml.h:27
-msgid "Send the message later"
-msgstr "Envoie le message plus tard"
-
-#: ui/evolution-message-composer.xml.h:28
-msgid "Send the message now"
-msgstr "Envoie le message maintenant"
-
-#: ui/evolution-message-composer.xml.h:29
-msgid "Send this message now"
-msgstr "Envoyer ce message maintenant"
-
-#: ui/evolution-message-composer.xml.h:30
-msgid "Show / hide attachments"
-msgstr "Afficher / Cacher les pièces-jointes"
-
-#: ui/evolution-message-composer.xml.h:31
-msgid "Show _attachments"
-msgstr "Afficher les _pièces-jointes"
-
-#: ui/evolution-message-composer.xml.h:32
-msgid "Show attachments"
-msgstr "Afficher les pièces-jointes"
-
-#: ui/evolution-message-composer.xml.h:33
-msgid "Sign this message with your PGP key"
-msgstr "Signer ce message avec votre clé PGP"
-
-#: ui/evolution-message-composer.xml.h:34
-#, fuzzy
-msgid "Toggles whether the BCC field is displayed"
-msgstr "Commute l'affichage de la barre de dossiers"
-
-#: ui/evolution-message-composer.xml.h:35
-#, fuzzy
-msgid "Toggles whether the CC field is displayed"
-msgstr "Commute l'affichage de la barre de dossiers"
-
-#: ui/evolution-message-composer.xml.h:36
-#, fuzzy
-msgid "Toggles whether the From chooser is displayed"
-msgstr "Commute l'affichage de la barre de dossiers"
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "_Bcc Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:40
-msgid "_Cc Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:45
-msgid "_From Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:47
-msgid "_Insert"
-msgstr "_Insertion"
-
-#: ui/evolution-message-composer.xml.h:48
-msgid "_Insert text file... (FIXME)"
-msgstr "_Insérer un fichier texte... (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:49
-msgid "_Open..."
-msgstr "_Ouvrir..."
-
-#: ui/evolution-message-composer.xml.h:50
-#, fuzzy
-msgid "_Reply-To Field"
-msgstr "Répondre-à :"
-
-#: ui/evolution-message-composer.xml.h:52
-msgid "_Security"
-msgstr "_Sécurité"
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr "Ajouter le dossier à votre liste de dossier abonnés"
-
-#: ui/evolution-subscribe.xml.h:3
-msgid "F_older"
-msgstr "D_ossier"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr "Rafraîchir la liste"
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr "Rafraîchi la liste de dossiers"
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr "Supprimer le dossier de votre liste de dossier abonnés"
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr "S'abonner"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr "Se désabonner"
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-#, fuzzy
-msgid "Assig_n Task (FIXME)"
-msgstr "_Tâche (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-msgid "Meeting Re_quest (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-msgid "Redo"
-msgstr "Refaire"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-#, fuzzy
-msgid "Redo the undone action"
-msgstr "Supprimer l'action"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-msgid "Replace"
-msgstr "Remplacer"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-msgid "Replace a string"
-msgstr "Remplace une chaîne"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-#, fuzzy
-msgid "Reply to A_ll (FIXME)"
-msgstr "Répondre à tous"
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-#, fuzzy
-msgid "S_end Status Report (FIXME)"
-msgstr "_Contact (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-#, fuzzy
-msgid "Save the task and close the dialog box"
-msgstr "Enregistrer le contact et fermer la boîte de dialogue"
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-#, fuzzy
-msgid "Search again for the same string"
-msgstr "_Rechercher des contacts"
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-#, fuzzy
-msgid "Search for a string"
-msgstr "_Rechercher des contacts"
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr "Défaire"
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-#, fuzzy
-msgid "Undo the last action"
-msgstr "Supprimer l'action"
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:26
-msgid "_Appointment (FIXME)"
-msgstr "_Rendez-vous (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-#, fuzzy
-msgid "_Mark Complete (FIXME)"
-msgstr "Marquer comme terminée"
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-msgid "_Reply (FIXME)"
-msgstr "_Répondre (FIXME)"
-
-#: ui/evolution-tasks.xml.h:2
-msgid "Create a new task"
-msgstr "Crée une nouvelle tache"
-
-#: ui/evolution-tasks.xml.h:3
-#, fuzzy
-msgid "New Task"
-msgstr "Tâche"
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr "Enregistrer la tache comme quelquechose d'autre"
-
-#: ui/evolution-tasks.xml.h:6
-msgid "Tasks Preferences..."
-msgstr "Préférences des taches..."
-
-#: ui/evolution-tasks.xml.h:9
-#, fuzzy
-msgid "_Task"
-msgstr "Tâche"
-
-#: ui/evolution.xml.h:1
-msgid "About Evolution..."
-msgstr "À propos d'Evolution..."
-
-#: ui/evolution.xml.h:3
-msgid "Close this window"
-msgstr "Ferme cette fenetre"
-
-#: ui/evolution.xml.h:4
-#, fuzzy
-msgid "Customi_ze Toolbars..."
-msgstr "Personnaliser la barre d'outils"
-
-#: ui/evolution.xml.h:5
-msgid "Customize"
-msgstr "Personnaliser"
-
-#: ui/evolution.xml.h:6
-msgid "Customize toolbars"
-msgstr "Personnaliser la barre d'outils"
-
-#: ui/evolution.xml.h:7
-msgid "Display a different folder"
-msgstr "Afficher un dossier différent"
-
-#: ui/evolution.xml.h:8
-msgid "E_xit"
-msgstr "_Quitter"
-
-#: ui/evolution.xml.h:9
-msgid "Evolution bar _shortcut"
-msgstr "Barre de _raccourcis d'Evolution"
-
-#: ui/evolution.xml.h:10
-msgid "Exit the program"
-msgstr "Quitte le programme"
-
-#: ui/evolution.xml.h:11
-msgid "Getting _Started"
-msgstr "Prêt à _démarrer"
-
-#: ui/evolution.xml.h:12
-msgid "Import an external file format"
-msgstr "Importer un format de fichier externe"
-
-#: ui/evolution.xml.h:13
-msgid "Main toolbar"
-msgstr "Barre d'outils principale"
-
-#: ui/evolution.xml.h:14
-msgid "Show information about Evolution"
-msgstr "Afficher les informations concernant Evolution"
-
-#: ui/evolution.xml.h:15
-msgid "Submit Bug Report"
-msgstr "Transmettre un rapport d'anomalies"
-
-#: ui/evolution.xml.h:16
-msgid "Submit _Bug Report"
-msgstr "_Transmettre un rapport d'anomalies"
-
-#: ui/evolution.xml.h:17
-msgid "Submit bug report using Bug Buddy."
-msgstr "Transmets un rapport d'anomalies en utilisant Bug Buddy."
-
-#: ui/evolution.xml.h:18
-msgid "Toggle whether to show the folder bar"
-msgstr "Commute l'affichage de la barre de dossiers"
-
-#: ui/evolution.xml.h:19
-msgid "Toggle whether to show the shortcut bar"
-msgstr "Commute l'affichage de la barre de raccourcis"
-
-#: ui/evolution.xml.h:20
-msgid "Using the C_ontact Manager"
-msgstr "Utilisation du gestionnaire de c_ontact"
-
-#: ui/evolution.xml.h:21
-msgid "Using the _Calendar"
-msgstr "Utilisation du _calendrier"
-
-#: ui/evolution.xml.h:22
-msgid "Using the _Mailer"
-msgstr "Utilisation de la _messagerie"
-
-#: ui/evolution.xml.h:23
-#, fuzzy
-msgid "Work Offline"
-msgstr "Travail en cours"
-
-#: ui/evolution.xml.h:24
-msgid "_About Evolution..."
-msgstr "À _propos d'Evolution..."
-
-#: ui/evolution.xml.h:25
-msgid "_Actions"
-msgstr "_Actions"
-
-#: ui/evolution.xml.h:32
-#, fuzzy
-msgid "_Folder Bar"
-msgstr "_Dossier"
-
-#: ui/evolution.xml.h:33
-msgid "_Go to Folder..."
-msgstr "_Aller au dossier..."
-
-#: ui/evolution.xml.h:35
-msgid "_Import file..."
-msgstr "_Importer un fichier..."
-
-#: ui/evolution.xml.h:36
-msgid "_Index"
-msgstr "_Index"
-
-#: ui/evolution.xml.h:37
-#, fuzzy
-msgid "_Mail message"
-msgstr "_Message électronique (FIXME)"
-
-#: ui/evolution.xml.h:39
-#, fuzzy
-msgid "_New Folder"
-msgstr "Nouveau dossier virtuel"
-
-#: ui/evolution.xml.h:40
-#, fuzzy
-msgid "_Shortcut Bar"
-msgstr "Afficher la barre de _raccourcis"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:469
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2475
-msgid "%A, %B %d, %Y"
-msgstr "%A %d %B %Y"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:390
-msgid "Tentative"
-msgstr "Essai"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:391
-msgid "Busy"
-msgstr "Occupé"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:392
-msgid "Out of Office"
-msgstr "Hors du bureau"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:393
-msgid "No Information"
-msgstr "Pas d'information"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:409
-msgid "_Invite Others..."
-msgstr "_Inviter d'autres personnes..."
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:429
-msgid "_Options"
-msgstr "_Options"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:446
-msgid "Show _Only Working Hours"
-msgstr "Afficher _seulement les heures de travail"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:459
-msgid "Show _Zoomed Out"
-msgstr "Afficher _Zommé arrière"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:477
-msgid "_Update Free/Busy"
-msgstr "_Mettre à jour Libre/Occupé"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:495
-msgid "_<<"
-msgstr "_<<"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:512
-msgid "_Autopick"
-msgstr "_Choix automatique"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:526
-msgid ">_>"
-msgstr ">_>"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:543
-msgid "_All People and Resources"
-msgstr "_Toutes les personnes et ressources"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:556
-msgid "All _People and One Resource"
-msgstr "Toute les _personnes et une ressource"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:569
-msgid "_Required People"
-msgstr "Personnes _nécessaires"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:582
-msgid "Required People and _One Resource"
-msgstr "Personnes nécessaires et _une ressource"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:605
-msgid "Meeting _start time:"
-msgstr "Heure de _début de la réunion :"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:629
-msgid "Meeting _end time:"
-msgstr "Heure de _fin de la réunion :"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:742
-msgid "All Attendees"
-msgstr "Tout les invités"
-
-#: widgets/menus/gal-view-menus.c:177
-#, fuzzy
-msgid "_Current View"
-msgstr "la date actuelle"
-
-#: widgets/menus/gal-view-menus.c:196
-msgid "Define Views"
-msgstr ""
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:421
-msgid "MTWTFSS"
-msgstr "LMMJVSD"
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1060 widgets/misc/e-calendar-item.c:2755
-msgid "%B %Y"
-msgstr "%B %Y"
-
-#: widgets/misc/e-cell-date-edit.c:218 widgets/misc/e-dateedit.c:416
-msgid "Now"
-msgstr "Maintenant"
-
-#: widgets/misc/e-cell-date-edit.c:242
-msgid "OK"
-msgstr ""
-
-#: widgets/misc/e-cell-date-edit.c:723
-#, fuzzy, c-format
-msgid "The time must be in the format: %s"
-msgstr ""
-"La date doit être entrée dans ce format :\n"
-"\n"
-"%s"
-
-#: widgets/misc/e-clipped-label.c:107
-msgid "..."
-msgstr "..."
-
-#: widgets/misc/e-filter-bar.c:166
-#, fuzzy
-msgid "Save Search"
-msgstr "Rechercher"
-
-#: widgets/misc/e-filter-bar.c:237
-#, fuzzy
-msgid "Advanced Search"
-msgstr "Avancée"
-
-#: widgets/misc/e-filter-bar.c:317
-#, fuzzy
-msgid "Advanced ..."
-msgstr "Avancée..."
-
-#: widgets/misc/e-messagebox.c:152
-msgid "Information"
-msgstr "Information"
-
-#: widgets/misc/e-messagebox.c:159
-msgid "Warning"
-msgstr "Avertissement"
-
-#: widgets/misc/e-messagebox.c:173
-msgid "Question"
-msgstr "Question"
-
-#: widgets/misc/e-messagebox.c:180
-msgid "Message"
-msgstr "Message"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:224
-msgid "Don't show this message again."
-msgstr "Ne plus afficher ce message."
-
-#: widgets/misc/e-search-bar.c:148
-msgid "Sear_ch"
-msgstr "Recher_cher"
-
-#: views/addressbook/galview.xml.h:1
-#, fuzzy
-msgid "Adress Cards"
-msgstr "Adresse"
-
-#: views/addressbook/galview.xml.h:2
-#, fuzzy
-msgid "By Company"
-msgstr "Société"
-
-#: views/addressbook/galview.xml.h:3
-#, fuzzy
-msgid "Phone List"
-msgstr "Types de téléphones"
-
-#: views/mail/galview.xml.h:1
-#, fuzzy
-msgid "By Sender"
-msgstr "Expéditeur"
-
-#: views/mail/galview.xml.h:2
-#, fuzzy
-msgid "By Status"
-msgstr "État"
-
-#: views/mail/galview.xml.h:3
-#, fuzzy
-msgid "By Subject"
-msgstr "Sujet"
-
-#: views/mail/galview.xml.h:4
-#, fuzzy
-msgid "Messages"
-msgstr "Message"
-
-#: views/tasks/galview.xml.h:2
-#, fuzzy
-msgid "With Category"
-msgstr "Catégorie :"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-msgid "The Personal Addressbook Server"
-msgstr ""
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr ""
-
-#: wombat/wombat.c:173
-#, fuzzy
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr "Ne peut initialiser GNOME"
-
-#: wombat/wombat.c:185
-#, fuzzy
-msgid "init_corba(): could not initialize GNOME"
-msgstr "Ne peut initialiser GNOME"
-
-#: wombat/wombat.c:198
-#, fuzzy
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "Ne peut initialiser Bonobo"
-
-#, fuzzy
-#~ msgid "Click here to add a contact"
-#~ msgstr "* Cliquez ici pour ajouter un contact *"
-
-#, fuzzy
-#~ msgid ""
-#~ "This option will connect to the server using a the PLAIN SASL mechanism if "
-#~ "the server supports it."
-#~ msgstr ""
-#~ "Cette option vous connectera au serveur IMAP en utilisant un mots de passe "
-#~ "en clair."
-
-#~ msgid "No such host %s."
-#~ msgstr "Aucun hôte %s."
-
-#~ msgid "Temporarily unable to look up hostname %s."
-#~ msgstr "Temporairement impossible de résoudre le nom d'hôte %s."
-
-#~ msgid "URL string `%s' contains no protocol"
-#~ msgstr "La chaîne d'URL « %s » ne contient pas de protocole"
-
-#~ msgid "URL string `%s' contains an invalid protocol"
-#~ msgstr "La chaîne d'URL « %s » contient un protocole invalide"
-
-#~ msgid "Port number in URL `%s' is non-numeric"
-#~ msgstr "Le numéro de port dans l'URL « %s » n'est pas numérique"
-
-#, fuzzy
-#~ msgid "Secure IMAPv4"
-#~ msgstr "IMAPv4"
-
-#, fuzzy
-#~ msgid "For reading and storing mail on IMAP servers over an SSL connection."
-#~ msgstr "Pour la lecture et le stockage du courrier sur des serveurs IMAP."
-
-#, fuzzy
-#~ msgid ""
-#~ "For connecting to POP servers over an SSL connection. The POP protocol can "
-#~ "also be used to retrieve mail from certain web mail providers and "
-#~ "proprietary email systems."
-#~ msgstr ""
-#~ "Pour la connexion aux serveurs POP. Le protocole POP peut aussi être utilisé "
-#~ "pour récupérer les courriers depuis certains fournisseurs de courriers Web "
-#~ "et de systèmes de courriers propriétaires."
-
-#, fuzzy
-#~ msgid ""
-#~ "For delivering mail by connecting to a remote mailhub using SMTP over an SSL "
-#~ "connection.\n"
-#~ msgstr ""
-#~ "Pour livrer le courrier en vous connectant à un distributeur distant "
-#~ "utilisant SMTP."
-
-#~ msgid "No authentication required"
-#~ msgstr "Aucune identification requise"
-
-#~ msgid ""
-#~ "This option will connect to the SMTP server without using any kind of "
-#~ "authentication. This should be fine for connecting to most SMTP servers."
-#~ msgstr ""
-#~ "Cette option vous connectera au serveur SMTP sans utiliser d'identification. "
-#~ "Cela devrait être suffisant pour se connecter à la plupart des serveurs SMTP."
-
-#~ msgid "Remove action"
-#~ msgstr "Supprimer l'action"
-
-#~ msgid "Remove criterion"
-#~ msgstr "Supprimer le critère"
-
-#~ msgid "Source"
-#~ msgstr "Source"
-
-#, fuzzy
-#~ msgid "Unspecified"
-#~ msgstr "Indéfini"
-
-#~ msgid "Advanced"
-#~ msgstr "Avancée"
-
-#~ msgid "Check settings"
-#~ msgstr "Vérifier les réglages"
-
-#~ msgid "Email address:"
-#~ msgstr "Adresse électronique :"
-
-#~ msgid "Evolution Mail Configuration"
-#~ msgstr "Configuration de la messagerie Evolution"
-
-#~ msgid "Hostname:"
-#~ msgstr "Nom d'hôte :"
-
-#, fuzzy
-#~ msgid "IMAP"
-#~ msgstr "IMAPv4"
-
-#~ msgid "Keep mail on server"
-#~ msgstr "Garder les courriers sur le serveur"
-
-#~ msgid "Kerberos"
-#~ msgstr "Kerberos"
-
-#~ msgid "Mail"
-#~ msgstr "Courrier"
-
-#~ msgid "Mail Account"
-#~ msgstr "Compte de messagerie"
-
-#~ msgid "Mail Configuration Druid"
-#~ msgstr "Assistant de configuration de messagerie"
-
-#~ msgid "Optional"
-#~ msgstr "Optionnel"
-
-#~ msgid "Password:"
-#~ msgstr "Mot de passe :"
-
-#~ msgid "Plain Text"
-#~ msgstr "Texte plein"
-
-#~ msgid "Remember my password"
-#~ msgstr "Se souvenir de mon mot de passe"
-
-#, fuzzy
-#~ msgid "Reply address:"
-#~ msgstr "Adresse électronique :"
-
-#~ msgid "Required"
-#~ msgstr "Requis"
-
-#~ msgid "Save password"
-#~ msgstr "Enregistrer le mot de passe"
-
-#~ msgid "Select signature file"
-#~ msgstr "Sélectionner un fichier de signature"
-
-#, fuzzy
-#~ msgid "Server type:"
-#~ msgstr "Type de serveur : "
-
-#~ msgid "Signature:"
-#~ msgstr "Signature :"
-
-#, fuzzy
-#~ msgid "Transport"
-#~ msgstr "Transparent"
-
-#, fuzzy
-#~ msgid "Transport Authentication"
-#~ msgstr "Identification"
-
-#~ msgid ""
-#~ "Type the name by which you would like to refer to these servers. For "
-#~ "example: \"Work\" or \"Home\"."
-#~ msgstr ""
-#~ "Tapez le nom sous lequel vous voulez identifier ces serveurs. Par exemple : "
-#~ "« Travail » ou « Maison »."
-
-#~ msgid "minutes."
-#~ msgstr "minutes."
-
-#~ msgid "%s message %d of %d (uid \"%s\")"
-#~ msgstr "%s message %d de %d (uid « %s »)"
-
-#~ msgid "[ %s ]"
-#~ msgstr "[ %s ]"
-
-#~ msgid "%s, et al."
-#~ msgstr "%s, et tous"
-
-#~ msgid "<unknown>"
-#~ msgstr "<inconnu>"
-
-#~ msgid "No GPG/PGP program available."
-#~ msgstr "Aucun programme GPG/PGP disponible."
-
-#, fuzzy
-#~ msgid "Message _Display"
-#~ msgstr "Nettoyer l'affichage des messages"
-
-#, fuzzy
-#~ msgid "_Compose"
-#~ msgstr "Composer"
-
-#, fuzzy
-#~ msgid "_Message Hiding"
-#~ msgstr "_Message"
-
-#~ msgid "Disabled"
-#~ msgstr "Désactivé"
-
-#~ msgid "Synchronize"
-#~ msgstr "Synchroniser"
-
-#~ msgid "Copy From Pilot"
-#~ msgstr "Copier depuis le Pilot"
-
-#~ msgid "Copy To Pilot"
-#~ msgstr "Copier vers le Pilot"
-
-#~ msgid "Merge From Pilot"
-#~ msgstr "Fusionner depuis le Pilot"
-
-#~ msgid "Merge To Pilot"
-#~ msgstr "Fusionner vers le Pilot"
-
-#~ msgid "JP Rosevear <jpr@helixcode.com>"
-#~ msgstr "JP Rosevear <jpr@helixcode.com>"
-
-#~ msgid "Original Author:"
-#~ msgstr "Auteur originel : "
-
-#~ msgid "Eskil Heyn Olsen <deity@eskil.dk>"
-#~ msgstr "Eskil Heyn Olsen <deity@eskil.dk>"
-
-#~ msgid "Evolution Addressbook Conduit"
-#~ msgstr "Conduit 'Contact' d'Evolution"
-
-#~ msgid "(C) 1998-2000 the Free Software Foundation and Helix Code"
-#~ msgstr "(C) 1998-2000 la Free Software Foundation et Helix Code"
-
-#~ msgid "Configuration utility for the evolution addressbook conduit.\n"
-#~ msgstr ""
-#~ "Utilitaire de configuration pour le conduit 'Contact' d'Evolution.\n"
-
-#~ msgid "gnome-unknown.xpm"
-#~ msgstr "gnome-unknown.xpm"
-
-#~ msgid "Synchronize Action"
-#~ msgstr "Synchronise l'action"
-
-#~ msgid "Conduit state"
-#~ msgstr "État du conduit"
-
-#~ msgid ""
-#~ "No pilot configured, please choose the\n"
-#~ "'Pilot Link Properties' capplet first."
-#~ msgstr ""
-#~ "Aucun Pilot configuré, choisissez la capplet\n"
-#~ "'Propriétés du lien Pilot' en premier."
-
-#~ msgid "Not connected to the gnome-pilot daemon"
-#~ msgstr "Non connecté au démon gnome-pilot"
-
-#~ msgid ""
-#~ "An error occured when trying to fetch\n"
-#~ "pilot list from the gnome-pilot daemon"
-#~ msgstr ""
-#~ "Une erreur est survenue durant la récupération de\n"
-#~ "la liste des Pilot depuis le démon gnome-pilot"
-
-#~ msgid "Configure the address conduit"
-#~ msgstr "Configuration du conduit Adresses"
-
-#~ msgid "Evolution Address conduit "
-#~ msgstr "Conduit Adresses"
-
-#~ msgid "label26"
-#~ msgstr "label26"
-
-#~ msgid "Evolution Calendar Conduit"
-#~ msgstr "Conduite « Calendrier » d'Evolution"
-
-#~ msgid "Configuration utility for the evolution calendar conduit.\n"
-#~ msgstr ""
-#~ "Utilitaire de configuration pour la conduite « Calendrier » d'Evolution.\n"
-
-#~ msgid "Configure the GnomeCal conduit"
-#~ msgstr "Configuration du conduit calendrier"
-
-#~ msgid "Evolution Calendar conduit"
-#~ msgstr "Conduit Calendrier"
-
-#~ msgid "Configure the todo conduit"
-#~ msgstr "Configuration du conduit `A Faire'"
-
-#~ msgid "Evolution ToDo conduit "
-#~ msgstr "Conduit Evolution `A Faire'"
-
-#~ msgid "Evolution ToDo Conduit"
-#~ msgstr "Conduite « À faire » d'Evolution"
-
-#~ msgid "Configuration utility for the evolution todo conduit.\n"
-#~ msgstr ""
-#~ "Utilitaire de configuration pour la conduite « À faire » d'Evolution.\n"
-
-#~ msgid "The priority must be between 1 and 9, inclusive"
-#~ msgstr "La priorité doit être comprise entre 1 et 9 inclus"
-
-#, fuzzy
-#~ msgid "Schedule meeting"
-#~ msgstr "Sélectionnez un Dossier"
-
-#~ msgid "Edit this appointment..."
-#~ msgstr "Éditer ce rendez-vous..."
-
-#~ msgid "label21"
-#~ msgstr "label21"
-
-#~ msgid "label55"
-#~ msgstr "label55"
-
-#~ msgid "Enter the identity you wish to send this message from"
-#~ msgstr "Entrez l'identité sous laquelle vous désirez envoyer ce message"
-
-#~ msgid "Enter the subject of the mail"
-#~ msgstr "Entrez le sujet du message"
-
-#~ msgid "Saving changes to message..."
-#~ msgstr "Enregistrement des changements dans le message..."
-
-#~ msgid "Save changes to message..."
-#~ msgstr "Enregistrer les changements dans le message..."
-
-#~ msgid "Error saving composition to 'Drafts': %s"
-#~ msgstr ""
-#~ "Erreur de l'enregistrement de la composition dans « Brouillons » : %s"
-
-#~ msgid "Edit Filter Rule"
-#~ msgstr "Éditer la Règle du Filtre"
-
-#~ msgid "incoming"
-#~ msgstr "entrant"
-
-#~ msgid "outgoing"
-#~ msgstr "sortant"
-
-#~ msgid "Add Rule"
-#~ msgstr "Ajouter une règle"
-
-#~ msgid "Add VFolder Rule"
-#~ msgstr "Ajouter une règle de dossier virtuel"
-
-#~ msgid "Edit VFolder Rule"
-#~ msgstr "Éditez la règle du dossier virtuel"
-
-#~ msgid "Body or subject contains"
-#~ msgstr "Le corps ou le sujet contient"
-
-#~ msgid "Body contains"
-#~ msgstr "Le corps contient"
-
-#~ msgid "Subject contains"
-#~ msgstr "Le sujet contient"
-
-#~ msgid "Body does not contain"
-#~ msgstr "Le corps ne contient pas"
-
-#~ msgid "Subject does not contain"
-#~ msgstr "Le sujet ne contient pas"
-
-#, fuzzy
-#~ msgid "Sender contains"
-#~ msgstr "Le nom contient"
-
-#~ msgid "Connect to server"
-#~ msgstr "Connecter au serveur"
-
-#~ msgid "Account Properties"
-#~ msgstr "Propriétés du compte"
-
-#~ msgid "E-Mail Address:"
-#~ msgstr "Adresse électronique :"
-
-#~ msgid "Incoming Mail Server"
-#~ msgstr "Serveur de courrier entrant"
-
-#~ msgid "Miscellaneous"
-#~ msgstr "Divers"
-
-#~ msgid "Outgoing Mail Server"
-#~ msgstr "Serveur de courrier sortant"
-
-#~ msgid "Servers"
-#~ msgstr "Serveurs"
-
-#~ msgid "Registering local folder"
-#~ msgstr "Enregistrement du dossier local"
-
-#~ msgid "Appending \"%s\""
-#~ msgstr "Adjation de « %s »"
-
-#~ msgid "Appending a message without a subject"
-#~ msgstr "Adjoint un message sans sujet"
-
-#~ msgid "Moving messages from \"%s\" into \"%s\""
-#~ msgstr "Déplacement des messages de « %s » vers « %s »"
-
-#~ msgid "Copying messages from \"%s\" into \"%s\""
-#~ msgstr "Duplication des messages de « %s » vers « %s »"
-
-#~ msgid "Move messages from \"%s\" into \"%s\""
-#~ msgstr "Déplace les messages de « %s » vers « %s »"
-
-#~ msgid "Copy messages from \"%s\" into \"%s\""
-#~ msgstr "Copie les messages de « %s » vers « %s »"
-
-#~ msgid "(No description)"
-#~ msgstr "(Aucune description)"
-
-#~ msgid "Loading %s Folder for %s"
-#~ msgstr "Chargement de %s dossier pour %s"
-
-#~ msgid "Load %s Folder for %s"
-#~ msgstr "Charge %s dossier pour %s"
-
-#~ msgid ""
-#~ "Error while preparing to %s:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Erreur durant le préparation vers %s :\n"
-#~ "%s"
-
-#~ msgid ""
-#~ "Error while `%s':\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Erreur durant « %s » :\n"
-#~ "%s"
-
-#~ msgid "Error reading commands from dispatching thread."
-#~ msgstr "Erreur de lecture des commandes de l'enfilade envoyé."
-
-#~ msgid "Corrupted message from dispatching thread?"
-#~ msgstr "Message corrompu de l'enfilade envoyée ?"
-
-#~ msgid "Could not create dialog box."
-#~ msgstr "Ne peut créer la boîte de dialogue"
-
-#~ msgid "User cancelled query."
-#~ msgstr "L'utilisateur a annulé la requête"
-
-#~ msgid ""
-#~ "Cannot open location `%s':\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Ne peut ouvrir l'emplacement « %s » :\n"
-#~ "%s"
-
-#~ msgid "Unsubscribe from folder \"%s\""
-#~ msgstr "Se désabonne du dossier « %s »"
-
-#~ msgid "_Addressbook Configuration..."
-#~ msgstr "Configuration du carnet d'_adresses..."
-
-#~ msgid "_Print Contacts..."
-#~ msgstr "_Imprimer les contacts..."
-
-#~ msgid "Ca_lendar"
-#~ msgstr "Ca_lendrier"
-
-#~ msgid "Calendar Preferences..."
-#~ msgstr "Préférences du calendrier..."
-
-#~ msgid "_Print this calendar"
-#~ msgstr "_Imprimer ce calendrier"
-
-#, fuzzy
-#~ msgid "Create Rule"
-#~ msgstr "Crée \"%s\""
-
-#~ msgid "Fi_lter on Sender"
-#~ msgstr "Fi_ltrer sur l'expéditeur"
-
-#~ msgid "Filter on Rec_ipients"
-#~ msgstr "Filtrer sur les _destinataires"
-
-#~ msgid "Get Mail"
-#~ msgstr "Récupérer"
-
-#~ msgid "Reply to _Sender"
-#~ msgstr "Répondre à l'_expéditeur"
-
-#~ msgid "Show _All Messages"
-#~ msgstr "Afficher _tous les messages"
-
-#~ msgid "_Filter on Subject"
-#~ msgstr "_Filtrer sur le sujet"
-
-#~ msgid "_Mail Configuration..."
-#~ msgstr "Configuration de la _messagerie..."
-
-#~ msgid "_Open in New Window"
-#~ msgstr "_Ouvrir dans une nouvelle fenêtre"
-
-#~ msgid "_Print Message"
-#~ msgstr "_Imprimer le message"
-
-#~ msgid "_VFolder on Subject"
-#~ msgstr "_Dossier Virtuel sur le sujet"
-
-#~ msgid "New"
-#~ msgstr "Nouveau"
-
-#~ msgid "Customi_ze..."
-#~ msgstr "_Personnaliser..."
-
-#~ msgid "Show the _Folder Bar"
-#~ msgstr "Afficher la barre de _dossiers"
-
-#~ msgid "Show the _Shortcut Bar"
-#~ msgstr "Afficher la barre de raccourci_s"
-
-#~ msgid "_Settings"
-#~ msgstr "_Réglages"
-
-#~ msgid ""
-#~ "\n"
-#~ "Mr.\n"
-#~ "Mrs.\n"
-#~ "Ms.\n"
-#~ "Miss\n"
-#~ "Dr.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Mr.\n"
-#~ "Mrs.\n"
-#~ "Mme.\n"
-#~ "Mlle\n"
-#~ "Dr.\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Sr.\n"
-#~ "Jr.\n"
-#~ "I\n"
-#~ "II\n"
-#~ "III\n"
-#~ "Esq.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Sr.\n"
-#~ "Jr.\n"
-#~ "I\n"
-#~ "II\n"
-#~ "III\n"
-#~ "Esq.\n"
-
-#~ msgid "Local stores do not have a default folder"
-#~ msgstr "La stockage local n'a pas de répertoire par défaut"
-
-#~ msgid "Local folders may not be nested."
-#~ msgstr "Les dossiers locaux ne peuvent être encapsulés."
-
-#~ msgid "Congratulations, your mail configuration is complete.\n"
-#~ msgstr "Félicitations, votre configuration de messagerie est effectué.\n"
-
-#~ msgid "Copyright (C) 2000, Helix Code, Inc."
-#~ msgstr "Copyright (C) 2000, Helix Code, Inc."
-
-#, fuzzy
-#~ msgid "UNIX mbox-format mail files"
-#~ msgstr "Fichiers de courrier au format UNIX mbox (version CamelLocal)"
-
-#~ msgid ""
-#~ "For reading mail delivered by the local system, and for storing mail on "
-#~ "local disk."
-#~ msgstr ""
-#~ "Pour la lecture de courrier délivré par le système local, et pour le "
-#~ "stockage de courrier sur le disque local."
-
-#, fuzzy
-#~ msgid "Cannot initialize Evolution's notes component."
-#~ msgstr "Ne peut initialiser le composant de messagerie d'Evolution."
-
-#, fuzzy
-#~ msgid "Notes Component: Could not initialize bonobo"
-#~ msgstr "Ne peut initialiser Bonobo"
-
-#~ msgid "Open..."
-#~ msgstr "Ouvrir..."
-
-#~ msgid "You have no Outbox configured"
-#~ msgstr "Vous n'avez pas de boîte de sortie configuré"
-
-#~ msgid ""
-#~ "Could not open file %s:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Ne peut ouvrir le fichier %s :\n"
-#~ "%s"
-
-#~ msgid "Fetching email from %s"
-#~ msgstr "Récupération du courrier depuis %s"
-
-#~ msgid "Fetch email from %s"
-#~ msgstr "Récupère le courrier depuis %s"
-
-#~ msgid "Filtering email on demand"
-#~ msgstr "Filtrage d'e-mail à la demande"
-
-#~ msgid "Filter email on demand"
-#~ msgstr "Filtre d'e-mail à la demande"
-
-#~ msgid "Sending queue"
-#~ msgstr "Expédition de la queue"
-
-#~ msgid "Send queue"
-#~ msgstr "Expédie la queue"
-
-#~ msgid "Examining %s"
-#~ msgstr "Examine %s"
-
-#~ msgid ""
-#~ "Could not read UID cache file \"%s\". You may receive duplicate messages."
-#~ msgstr ""
-#~ "Ne peut lire le fichier de cache UID \"%s\". Vous pouvez recevoir des "
-#~ "messages dupliqués."
-
-#~ msgid "Retrieving message %d of %d"
-#~ msgstr "Récupération du message %d sur %d"
-
-#~ msgid "Saving changes to %s"
-#~ msgstr "Enregistrement des changements vers %s"
-
-#, fuzzy
-#~ msgid "FIXME: _Appointment"
-#~ msgstr "_Nouveau rendez-vous..."
-
-#, fuzzy
-#~ msgid "FIXME: _Mail Message"
-#~ msgstr "Éditer le message"
-
-#, fuzzy
-#~ msgid "FIXME: _Journal Entry"
-#~ msgstr "Entrée de journal - %s"
-
-#, fuzzy
-#~ msgid "FIXME: Save Attac_hments..."
-#~ msgstr "Enregistrer la pièce-jointe"
-
-#, fuzzy
-#~ msgid "FIXME: _Move to Folder..."
-#~ msgstr "_Aller au dossier"
-
-#, fuzzy
-#~ msgid "FIXME: Cop_y to Folder..."
-#~ msgstr "Copier vers le dossier"
-
-#, fuzzy
-#~ msgid "FIXME: Print Pre_view"
-#~ msgstr "Aperçu Avant Impression"
-
-#, fuzzy
-#~ msgid "FIXME: Paste _Special..."
-#~ msgstr "_Filtres de message..."
-
-#, fuzzy
-#~ msgid "FIXME: Mark as U_nread"
-#~ msgstr "Marquer comme non lu"
-
-#~ msgid "_Object"
-#~ msgstr "_Sujet"
-
-#, fuzzy
-#~ msgid "FIXME: __Formatting"
-#~ msgstr "Faire suivre"
-
-#~ msgid "_Toolbars"
-#~ msgstr "Barres d'_outils"
-
-#, fuzzy
-#~ msgid "FIXME: _File..."
-#~ msgstr "_Filtres de message..."
-
-#, fuzzy
-#~ msgid "FIXME: _Font..."
-#~ msgstr "Police..."
-
-#~ msgid "_Forms"
-#~ msgstr "_Formulaires"
-
-#, fuzzy
-#~ msgid "FIXME: _New Contact"
-#~ msgstr "_Nouveau rendez-vous..."
-
-#, fuzzy
-#~ msgid "FIXME: _Plan a Meeting..."
-#~ msgstr "_Filtres de message..."
-
-#, fuzzy
-#~ msgid "FIXME: New _Journal Entry for Contact"
-#~ msgstr "Entrée de journal - %s"
-
-#, fuzzy
-#~ msgid "FIXME: _Flag for Follow Up..."
-#~ msgstr "Copier vers le dossier"
-
-#, fuzzy
-#~ msgid "FIXME: _Display Map of Address"
-#~ msgstr "Éditer le message"
-
-#, fuzzy
-#~ msgid "FIXME: _Open Web Page"
-#~ msgstr "Éditer le message"
-
-#, fuzzy
-#~ msgid "FIXME: Forward as _vCard"
-#~ msgstr "Faire suivre"
-
-#, fuzzy
-#~ msgid "FIXME: For_ward"
-#~ msgstr "Faire suivre"
-
-#, fuzzy
-#~ msgid "FIXME: Previous"
-#~ msgstr "Préc"
-
-#, fuzzy
-#~ msgid "FIXME: Next"
-#~ msgstr "_Filtres de message..."
-
-#~ msgid "Group %i"
-#~ msgstr "Groupe %i"
-
-#~ msgid "<b>Error loading calendar:<br>Calendar in use."
-#~ msgstr ""
-#~ "<b>Erreur de chargement du calendrier :<br>Calendrier en cours d'utilisation"
-
-#~ msgid "C_lassification:"
-#~ msgstr "C_lassification :"
-
-#~ msgid "task-editor-dialog"
-#~ msgstr "task-editor-dialog"
-
-#, fuzzy
-#~ msgid "Could not create a tasks file in `%s'"
-#~ msgstr "Ne peut créer un calendrier dans « %s »"
-
-#~ msgid "Days"
-#~ msgstr "Jours"
-
-#~ msgid "Hours"
-#~ msgstr "Heures"
-
-#~ msgid "Mail _to:"
-#~ msgstr "Cou_rrier à :"
-
-#~ msgid "Minutes"
-#~ msgstr "Minutes"
-
-#~ msgid "Time"
-#~ msgstr "Horaire"
-
-#~ msgid "_Audio"
-#~ msgstr "_Audio"
-
-#~ msgid "_Display"
-#~ msgstr "_Affichage"
-
-#~ msgid "_Mail"
-#~ msgstr "_Courrier"
-
-#~ msgid "_Program"
-#~ msgstr "_Programme"
-
-#~ msgid "event-editor-dialog"
-#~ msgstr "event-editor-dialog"
-
-#~ msgid "Show all hidden"
-#~ msgstr "Afficher tous les cachés"
-
-#~ msgid "Hide selected"
-#~ msgstr "Cacher sélectionné"
-
-#~ msgid "Hide deleted"
-#~ msgstr "Cacher supprimé"
-
-#~ msgid "Hide Subject"
-#~ msgstr "Cacher Sujet"
-
-#~ msgid "Hide from Sender"
-#~ msgstr "Cacher de l'expéditeur"
-
-#~ msgid "Hide Subject \"%s\""
-#~ msgstr "Cacher le sujet \"%s\""
-
-#~ msgid "Hide from Sender <%s>"
-#~ msgstr "Cacher depuis l'expéditeur <%s>"
-
-#~ msgid "You have no mail sources configured"
-#~ msgstr "Vous n'avez pas de source de courrier configuré"
-
-#~ msgid "Reply-to:"
-#~ msgstr "Répondre-à :"
-
-#~ msgid " for "
-#~ msgstr " pour "
-
-#~ msgid "Open a calendar"
-#~ msgstr "Ouvre un calendrier"
-
-#, fuzzy
-#~ msgid "FIXME: Rec_urrence..."
-#~ msgstr "Récurrence"
-
-#~ msgid "_Find..."
-#~ msgstr "_Rechercher..."
-
-#, fuzzy
-#~ msgid "_Redo"
-#~ msgstr "Radio"
-
-#~ msgid "_Replace..."
-#~ msgstr "_Remplacer..."
-
-#~ msgid "_Source"
-#~ msgstr "_Source"
-
-#~ msgid ""
-#~ "Enter your name and email address to be used in outgoing mail. You may also, "
-#~ "optionally, enter the name of your organization, and the name of a file to "
-#~ "read your signature from."
-#~ msgstr ""
-#~ "Entrez votre nom et adresse e-mail à utiliser dans les messages sortant. "
-#~ "Vous pouvez aussi, optionellement, entrez le nom de votre organisation, et "
-#~ "le nom du fichier dans lequel lire votre signature."
-
-#~ msgid "Full name:"
-#~ msgstr "Nom complet :"
-
-#~ msgid "Signature File"
-#~ msgstr "Fichier de signature"
-
-#~ msgid "Server:"
-#~ msgstr "Serveur :"
-
-#~ msgid "Mail source type:"
-#~ msgstr "Type de source de courrier :"
-
-#~ msgid ""
-#~ "Select the kind of mail server you have, and enter the relevant information "
-#~ "about it.\n"
-#~ "\n"
-#~ "If the server requires authentication, you can click the \"Detect supported "
-#~ "types...\" button after entering the other information."
-#~ msgstr ""
-#~ "Sélectionner le type de serveur de messagerie que vous avez, et entrez les "
-#~ "informations correspondantes.\n"
-#~ "\n"
-#~ "Si le serveur nécessite une identification, vous pouvez cliquez sur le "
-#~ "bouton \"Détecter les types supportés...\" aprés avoir entré les autres "
-#~ "informations."
-
-#~ msgid ""
-#~ "Select the kind of news server you have, and enter the relevant information "
-#~ "about it.\n"
-#~ "\n"
-#~ "If the server requires authentication, you can click the \"Detect supported "
-#~ "types...\" button after entering the other information."
-#~ msgstr ""
-#~ "Sélectionnez le type de serveur de forums de discussions que vous avez, et "
-#~ "entrez les informations correspondantes.\n"
-#~ "\n"
-#~ "Si le serveur nécessite une identification, vous pouvez cliquez sur le "
-#~ "bouton \"Détecter les types supportés...\" aprés avoir entré les autres "
-#~ "informations."
-
-#~ msgid "Mail transport type:"
-#~ msgstr "Type de transport de courrier :"
-
-#~ msgid "Add Identity"
-#~ msgstr "Ajouter une identité"
-
-#~ msgid "Edit Identity"
-#~ msgstr "Éditer l'identité"
-
-#~ msgid "Edit Source"
-#~ msgstr "Éditer source"
-
-#~ msgid "Add News Server"
-#~ msgstr "Ajouter un serveur de news"
-
-#~ msgid "Edit News Server"
-#~ msgstr "Éditer le serveur de news"
-
-#~ msgid "The connection was successful!"
-#~ msgstr "La connexion est concluante !"
-
-#~ msgid "Querying authorization capabilities of \"%s\""
-#~ msgstr "Interroge les capacités d'autorisation de \"%s\""
-
-#~ msgid "Query authorization at \"%s\""
-#~ msgstr "Interroge l'autorisation à \"%s\""
-
-#~ msgid "Identities"
-#~ msgstr "Identités"
-
-#~ msgid "Mail Sources"
-#~ msgstr "Sources de messages"
-
-#~ msgid "Mail Transport"
-#~ msgstr "Transport de courrier"
-
-#~ msgid "News Servers"
-#~ msgstr "Serveur de forums"
-
-#~ msgid "News Sources"
-#~ msgstr "Sources de forums"
-
-#~ msgid "Send messages in HTML format"
-#~ msgstr "Envoie les messages au format HTML"
-
-#~ msgid "External Directories"
-#~ msgstr "Annuaires externes"
-
-#~ msgid "Port Number:"
-#~ msgstr "Numéro de port :"
-
-#~ msgid "Outline:"
-#~ msgstr "Bordure :"
-
-#~ msgid "Headings:"
-#~ msgstr "En-têtes :"
-
-#~ msgid "Highlighted day:"
-#~ msgstr "Jour mis en évidence :"
-
-#~ msgid "Day numbers:"
-#~ msgstr "Numéros de jour :"
-
-#~ msgid "Current day's number:"
-#~ msgstr "Numéro du jour en cours :"
-
-#~ msgid "To-Do item that is not yet due:"
-#~ msgstr "Élément 'À faire' qui n'est pas encore terminé :"
-
-#~ msgid "To-Do item that is due today:"
-#~ msgstr "Élément 'À faire' qui finit aujourd'hui :"
-
-#~ msgid "To-Do item that is overdue:"
-#~ msgstr "Élément 'À faire' en retard : "
-
-#~ msgid "appointment"
-#~ msgstr "rendez-vous"
-
-#~ msgid "task"
-#~ msgstr "tâche"
-
-#~ msgid "journal entry"
-#~ msgstr "entrée de journal"
-
-#~ msgid "Year:"
-#~ msgstr "Année :"
-
-#~ msgid ""
-#~ "Please select the date you want to go to.\n"
-#~ "When you click on a day, you will be taken\n"
-#~ "to that date."
-#~ msgstr ""
-#~ "Sélectionnez la date à laquelle vous voulez\n"
-#~ "aller. Quand vous cliquez sur un jour, vous\n"
-#~ "y serez automatiquement amené."
-
-#~ msgid "Mail Source"
-#~ msgstr "Source de courrier"
-
-#~ msgid "Sending a message without a subject"
-#~ msgstr "Expédition d'un message sans sujet"
-
-#~ msgid "Send a message without a subject"
-#~ msgstr "Envoie un message sans sujet"
-
-#~ msgid "Expunge \"%s\""
-#~ msgstr "Nettoie \"%s\""
-
-#~ msgid "Mark messages in folder \"%s\""
-#~ msgstr "Marque les messages du dossier \"%s\""
-
-#~ msgid "Scan folders in \"%s\""
-#~ msgstr "Scrute les dossiers dans \"%s\""
-
-#~ msgid "Attaching messages from folder \"%s\""
-#~ msgstr "Joints les messages du dossier \"%s\""
-
-#~ msgid "Attach messages from \"%s\""
-#~ msgstr "Joindre les messages de \"%s\""
-
-#~ msgid "Forwarding messages \"%s\""
-#~ msgstr "Fait suivre les messages \"%s\""
-
-#~ msgid "Forwarding a message without a subject"
-#~ msgstr "Fait suivre un message sans sujet"
-
-#~ msgid "Forward message \"%s\""
-#~ msgstr "Faire suivre le message \"%s\""
-
-#~ msgid ""
-#~ "Failed to generate mime part from message while generating forwarded message."
-#~ msgstr ""
-#~ "Échec de génération de la partie MIME du message lors de la génération du "
-#~ "message suivi."
-
-#~ msgid "Loading \"%s\""
-#~ msgstr "Chargement de \"%s\""
-
-#~ msgid "Load \"%s\""
-#~ msgstr "Charge \"%s\""
-
-#~ msgid "Creating \"%s\""
-#~ msgstr "Création de \"%s\""
-
-#~ msgid "Exception while reporting result to shell component listener."
-#~ msgstr ""
-#~ "Exception lors du retour du résultat vers le composant shell écouteur."
-
-#~ msgid "Synchronize \"%s\""
-#~ msgstr "Synchronise \"%s\""
-
-#~ msgid "Displaying message UID \"%s\""
-#~ msgstr "Affichage du message UID \"%s\""
-
-#~ msgid "Clearing message display"
-#~ msgstr "Nettoie l'affichage des messages"
-
-#~ msgid "Display message UID \"%s\""
-#~ msgstr "Affiche le message UID \"%s\""
-
-#~ msgid "Opening messages from folder \"%s\""
-#~ msgstr "Ouverture des messages du dossier \"%s\""
-
-#~ msgid "Open messages from \"%s\""
-#~ msgstr "Ouvre les messages de \"%s\""
-
-#~ msgid "Viewing messages from folder \"%s\""
-#~ msgstr "Visualisation des messages du dossier \"%s\""
-
-#~ msgid "View messages from \"%s\""
-#~ msgstr "Visualise les messages du dossier \"%s\""
-
-#~ msgid "Retrieving message %d of %d (uid \"%s\")"
-#~ msgstr "Récupération du message %d sur %d (uid \"%s\")"
-
-#, fuzzy
-#~ msgid "Save messages from folder \"%s\""
-#~ msgstr "Ouverture des messages du dossier \"%s\""
-
-#~ msgid "Rebuilding message view"
-#~ msgstr "Reconstruction de la vue de messages"
-
-#~ msgid "Rebuild message view"
-#~ msgstr "Reconstruit la vue de messages"
-
-#~ msgid "N_ew Directory Server"
-#~ msgstr "N_ouveau serveur d'annuaire"
-
-#~ msgid "_Save Calendar As"
-#~ msgstr "Enregistrer le calendrier _sous"
-
-#, fuzzy
-#~ msgid "_Mail Configuration"
-#~ msgstr "Configuration de la messagerie"
-
-#~ msgid "may"
-#~ msgstr "mai"
-
-#~ msgid "sept"
-#~ msgstr "sept"
-
-#~ msgid "sunday"
-#~ msgstr "dimanche"
-
-#~ msgid "monday"
-#~ msgstr "lundi"
-
-#~ msgid "tuesday"
-#~ msgstr "mardi"
-
-#~ msgid "tues"
-#~ msgstr "mar"
-
-#~ msgid "wednesday"
-#~ msgstr "mercredi"
-
-#~ msgid "wednes"
-#~ msgstr "mer"
-
-#~ msgid "thursday"
-#~ msgstr "jeudi"
-
-#~ msgid "thur"
-#~ msgstr "jeu"
-
-#~ msgid "thurs"
-#~ msgstr "jeud"
-
-#~ msgid "friday"
-#~ msgstr "vendredi"
-
-#~ msgid "saturday"
-#~ msgstr "samedi"
-
-#~ msgid "fortnight"
-#~ msgstr "quinzaine"
-
-#~ msgid "min"
-#~ msgstr "min"
-
-#~ msgid "sec"
-#~ msgstr "sec"
-
-#~ msgid "tomorrow"
-#~ msgstr "demain"
-
-#~ msgid "yesterday"
-#~ msgstr "hier"
-
-#~ msgid "today"
-#~ msgstr "aujourd'hui"
-
-#~ msgid "last"
-#~ msgstr "dernier"
-
-#~ msgid "this"
-#~ msgstr "ce"
-
-#~ msgid "next"
-#~ msgstr "suivant"
-
-#~ msgid "first"
-#~ msgstr "premier"
-
-#~ msgid "third"
-#~ msgstr "troisième"
-
-#~ msgid "fourth"
-#~ msgstr "quatrième"
-
-#~ msgid "fifth"
-#~ msgstr "cinquième"
-
-#~ msgid "sixth"
-#~ msgstr "sixième"
-
-#~ msgid "seventh"
-#~ msgstr "septième"
-
-#~ msgid "eighth"
-#~ msgstr "huitième"
-
-#~ msgid "ninth"
-#~ msgstr "neuvième"
-
-#~ msgid "tenth"
-#~ msgstr "dixième"
-
-#~ msgid "eleventh"
-#~ msgstr "onzième"
-
-#~ msgid "twelfth"
-#~ msgstr "douzième"
-
-#~ msgid "ago"
-#~ msgstr "passé"
-
-#~ msgid "BLARG\n"
-#~ msgstr "BLARG\n"
-
-#~ msgid "window2"
-#~ msgstr "fenêtre2"
-
-#~ msgid "_Summary:"
-#~ msgstr "Rés_umé : "
-
-#~ msgid ""
-#~ "Minutes\n"
-#~ "Hours\n"
-#~ "Days\n"
-#~ msgstr ""
-#~ "Minutes\n"
-#~ "Heures\n"
-#~ "Jours\n"
-
-#~ msgid "Daily"
-#~ msgstr "Journalière"
-
-#~ msgid "Weekly"
-#~ msgstr "Hebdomadaire"
-
-#~ msgid "Monthly"
-#~ msgstr "Mensuelle"
-
-#~ msgid "Yearly"
-#~ msgstr "Annuelle"
-
-#~ msgid "label23"
-#~ msgstr "label23"
-
-#~ msgid "Every "
-#~ msgstr "Tou(te)s les "
-
-#~ msgid "label24"
-#~ msgstr "label24"
-
-#~ msgid "Recur on the"
-#~ msgstr "Récurrence le"
-
-#~ msgid "th day of the month"
-#~ msgstr "ème jour du mois"
-
-#~ msgid ""
-#~ "1st\n"
-#~ "2nd\n"
-#~ "3rd\n"
-#~ "4th\n"
-#~ "5th\n"
-#~ msgstr ""
-#~ "1er\n"
-#~ "2ème\n"
-#~ "3ème\n"
-#~ "4ème\n"
-#~ "5ème\n"
-
-#~ msgid ""
-#~ "Monday\n"
-#~ "Tuesday\n"
-#~ "Wednesday\n"
-#~ "Thursday\n"
-#~ "Friday\n"
-#~ "Saturday\n"
-#~ "Sunday\n"
-#~ msgstr ""
-#~ "Lundi\n"
-#~ "Mardi\n"
-#~ "Mercredi\n"
-#~ "Jeudi\n"
-#~ "Vendredi\n"
-#~ "Samedi\n"
-#~ "Dimanche\n"
-
-#~ msgid "label27"
-#~ msgstr "label27"
-
-#~ msgid "Ending date"
-#~ msgstr "Date de fin"
-
-#~ msgid "End on "
-#~ msgstr "Fin le "
-
-#~ msgid "Change"
-#~ msgstr "Changer"
-
-#~ msgid "Create to-do item"
-#~ msgstr "Créer un élément 'à faire'"
-
-#~ msgid "Edit to-do item"
-#~ msgstr "Éditer l'élément 'à faire'"
-
-#~ msgid "Due Date:"
-#~ msgstr "Date d'échéance : "
-
-#~ msgid "Time display"
-#~ msgstr "Affichage de l'heure"
-
-#~ msgid "Time format"
-#~ msgstr "Format de l'heure"
-
-#~ msgid "12-hour (AM/PM)"
-#~ msgstr "12 heures (AM/PM)"
-
-#~ msgid "24-hour"
-#~ msgstr "24 heures"
-
-#~ msgid "Weeks start on"
-#~ msgstr "Les semaines débutent un"
-
-#~ msgid "Day range"
-#~ msgstr "Horaires de travail"
-
-#~ msgid ""
-#~ "Please select the start and end hours you want\n"
-#~ "to be displayed in the day view and week view.\n"
-#~ "Times outside this range will not be displayed\n"
-#~ "by default."
-#~ msgstr ""
-#~ "Sélectionnez les heures de début et de fin que\n"
-#~ "vous voulez afficher dans la vue par jour et par\n"
-#~ "semaine. Les heures en dehors de cet intervalle\n"
-#~ "ne seront pas affichées par défaut."
-
-#~ msgid "Day start:"
-#~ msgstr "Heure de début : "
-
-#~ msgid "Day end:"
-#~ msgstr "Heure de fin : "
-
-#~ msgid "Colors for display"
-#~ msgstr "Couleurs pour l'affichage"
-
-#~ msgid "Show on TODO List:"
-#~ msgstr "Afficher dans la liste 'À Faire' : "
-
-#~ msgid "To Do List style options:"
-#~ msgstr "Options de style de la liste 'À Faire' : "
-
-#~ msgid "Highlight overdue items"
-#~ msgstr "Mettre en evidence les éléments en retard"
-
-#~ msgid "Highlight not yet due items"
-#~ msgstr "Mettre en évidence les éléments non encore achevé"
-
-#~ msgid "To Do List"
-#~ msgstr "Liste 'À Faire'"
-
-#~ msgid "Preferences"
-#~ msgstr "Préférences"
-
-#~ msgid "Beep on display alarms"
-#~ msgstr "Biper lors de l'affichage des alarmes"
-
-#~ msgid "Audio alarms timeout after"
-#~ msgstr "Expiration des alarmes audios après"
-
-#~ msgid "Enable snoozing for "
-#~ msgstr "Activer la sonnerie pour"
-
-#~ msgid "Could not connect to IMAP server on %s."
-#~ msgstr "Ne peut se connecter au serveur IMAP sur %s."
-
-#~ msgid "Could not create summary"
-#~ msgstr "Ne peut créer le résumé"
-
-#~ msgid "Could not rename folder %s to %s: destination exists"
-#~ msgstr "Ne peut renommer le dossier %s vers %s : la destination existe"
-
-#~ msgid "Could not open summary %s"
-#~ msgstr "Ne peut ouvrir le résumé %s"
-
-#~ msgid "Summary mismatch, X-Evolution header missing"
-#~ msgstr "Le résumé ne correspond pas, en-tête X-Evolution manquant"
-
-#~ msgid "Cannot copy data to output file: %s"
-#~ msgstr "Impossible de copier les données dans le fichier de sortie : %s"
-
-#~ msgid "Could not load or create summary"
-#~ msgstr "Impossible de charger ou créer le résumé"
-
-#~ msgid "Could not rename folder `%s': %s exists"
-#~ msgstr "Impossible de renommer le dossier « %s » : %s existe"
-
-#~ msgid "MH folders may not be nested."
-#~ msgstr "Les dossiers MH ne peuvent être encapsulés."
-
-#~ msgid "Cannot initialize Evolution's mail storage hash."
-#~ msgstr "Ne peut initialiser le hachage du stockage de courrier d'Evolution."
-
-#~ msgid "Bad storage URL (no server): %s"
-#~ msgstr "Mauvaise URL de stockage (aucun serveur) : %s"
-
-#~ msgid ""
-#~ "Welcome to the Evolution Mail configuration wizard!\n"
-#~ "By filling in some information about your email\n"
-#~ "settings, you can start sending and receiving email\n"
-#~ "right away. Click Next to continue."
-#~ msgstr ""
-#~ "Bienvenue sur l'assistant de configuration de messagerie d'Evolution !\n"
-#~ "En y remplissant les informations concernant les paramètres de votre\n"
-#~ "messagerie, vous pourrez commencer à envoyer et recevoir des mails.\n"
-#~ "Cliquez sur \"Suivant\" pour continuer."
-
-#~ msgid "Couldn't create pipe to %s: %s"
-#~ msgstr "Ne peut créer le tube vers %s : %s"
-
-#~ msgid "Could not execute %s: %s\n"
-#~ msgstr "Ne peut exécuter %s : %s\n"
-
-#~ msgid " (XXX unread)"
-#~ msgstr " (XXX non lu)"
-
-#~ msgid "Don't know protocol to open URI `%s'"
-#~ msgstr "Ne connait pas le protocole pour ouvrir l'URI « %s »"
-
-#~ msgid "Forward Message"
-#~ msgstr "Faire suivre le message"
-
-#~ msgid "Copy Message"
-#~ msgstr "Copier le message"
-
-#~ msgid "_Create New Folder..."
-#~ msgstr "_Créer un nouveau dossier..."
-
-#~ msgid "_Unselect All"
-#~ msgstr "_Déselectionner tout"
diff --git a/po/ga.po b/po/ga.po
deleted file mode 100755
index 5a7b7436e9..0000000000
--- a/po/ga.po
+++ /dev/null
@@ -1,8761 +0,0 @@
-# Irish language translation of evolution
-# Copyright (C) 2000 Free Software Foundation, Inc.
-# Alastair McKinstry, <mckinstry@computer.org>, 2000.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: evolution CVS\n"
-"POT-Creation-Date: 2001-04-14 08:51-0400\n"
-"PO-Revision-Date: 2000-08-02 13:00:00-0000\n"
-"Last-Translator: Alastair McKinstry, <mckinstry@computer.org>\n"
-"Language-Team: Irish <ga@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: addressbook/backend/ebook/e-card.c:3209
-msgid "Card: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3211
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3212
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3213
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3214
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3215
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3216
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3230
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3241
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3243
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3244
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3245
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3246
-msgid ""
-"\n"
-" City: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3247
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3248
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3249
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3262
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3274
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3277
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3301
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3304
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3323
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3329
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3337
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3341
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3353
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3354
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3355
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3356
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3357
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3358
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3362
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3363
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3376
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3379
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:1
-msgid "Factory to import GnomeCard files into Evolution."
-msgstr ""
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:2
-msgid "Imports GnomeCard files into Evolution."
-msgstr ""
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:21
-#: addressbook/backend/ebook/load-pine-addressbook.c:22
-#: addressbook/backend/ebook/test-client-list.c:23
-#: addressbook/backend/ebook/test-client.c:33
-#: addressbook/conduit/address-conduit.c:1092
-#: addressbook/gui/component/addressbook-factory.c:43
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:72 calendar/gui/main.c:57
-msgid "Could not initialize Bonobo"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:655
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:687
-#: addressbook/conduit/address-conduit.c:690
-msgid "Could not read pilot's Address application block"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:7
-msgid "Add"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-msgid "C_ontacts..."
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-msgid "Contact Editor"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-msgid "General"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-#, fuzzy
-msgid "No_tes:"
-msgstr "_Nota"
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1284
-msgid "Primary Email"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:74
-msgid "_Add"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-#, fuzzy
-msgid "_Company:"
-msgstr "Greamaigh"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/mail-config.glade.h:75 ui/evolution-event-editor.xml.h:57
-#: ui/evolution-mail.xml.h:91 ui/evolution-task-editor-dialog.xml.h:69
-#, fuzzy
-msgid "_Delete"
-msgstr "Scríos"
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-#, fuzzy
-msgid "_Home"
-msgstr "_Nota"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-msgid "_Job title:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-msgid "_Mobile"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-#, fuzzy
-msgid "Delete Contact?"
-msgstr "Scríos an sceal seo"
-
-#: addressbook/contact-editor/e-contact-editor.c:603
-msgid "This contact belongs to these categories:"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-#: addressbook/gui/widgets/e-addressbook-view.c:676
-msgid "Assistant"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/contact-editor/e-contact-editor.c:1310
-msgid "Business"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-msgid "Business 2"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#: addressbook/gui/widgets/e-addressbook-view.c:656
-msgid "Business Fax"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Callback"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "Car"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1248
-#, fuzzy
-msgid "Company"
-msgstr "Greamaigh"
-
-#: addressbook/contact-editor/e-contact-editor.c:1249
-#: addressbook/contact-editor/e-contact-editor.c:1311
-msgid "Home"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1250
-msgid "Home 2"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1251
-#: addressbook/gui/widgets/e-addressbook-view.c:657
-msgid "Home Fax"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1252
-#: addressbook/gui/widgets/e-addressbook-view.c:660
-msgid "ISDN"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1253
-msgid "Mobile"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1254
-#: addressbook/contact-editor/e-contact-editor.c:1312
-#: calendar/gui/e-meeting-dialog.glade.h:14 mail/mail-config.glade.h:40
-msgid "Other"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1255
-#: addressbook/gui/widgets/e-addressbook-view.c:662
-msgid "Other Fax"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1256
-#: addressbook/gui/widgets/e-addressbook-view.c:663
-msgid "Pager"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1257
-#, fuzzy
-msgid "Primary"
-msgstr "Tosaíocht"
-
-#: addressbook/contact-editor/e-contact-editor.c:1258
-#: addressbook/gui/widgets/e-addressbook-view.c:664
-msgid "Radio"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1259
-#: addressbook/gui/widgets/e-addressbook-view.c:665
-msgid "Telex"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1260
-msgid "TTY/TDD"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:668
-msgid "Email 2"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/gui/widgets/e-addressbook-view.c:669
-msgid "Email 3"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-quick-add.c:223
-msgid "Contact Quick-Add"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-quick-add.c:225
-#, fuzzy
-msgid "Edit Full"
-msgstr "_Fillteán"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:262
-#: addressbook/gui/widgets/e-addressbook-view.c:643
-msgid "Full Name"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-quick-add.c:268
-#, fuzzy
-msgid "E-mail"
-msgstr "Post"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-#, fuzzy
-msgid "_City:"
-msgstr "Tosaíocht"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:4
-msgid "I"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:8
-msgid "Miss"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:15
-msgid "_Middle:"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:241
-msgid "As _Minicards"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:247
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:399
-#, c-format
-msgid "Enter password for %s"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:427
-msgid "Unable to open addressbook"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:432
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or have tried\n"
-"to access an LDAP server and don't have LDAP support\n"
-"compiled in. If you've entered a URI, check the URI for\n"
-"correctness and reenter. If not, you probably have\n"
-"attempted to access an LDAP server. If you wish to be\n"
-"able to use LDAP, you'll need to download and install\n"
-"OpenLDAP and recompile and install Evolution.\n"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:555
-msgid "Show All"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:557
-msgid "Advanced..."
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:587
-msgid "Any field contains"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:588
-msgid "Name contains"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:589
-msgid "Email contains"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:732
-msgid "The URI that the Folder Browser will display"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-storage.c:99
-msgid "Other Contacts"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:148
-msgid "LDAP Server"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:150
-#, fuzzy
-msgid "File"
-msgstr "_Fillteán"
-
-#: addressbook/gui/component/addressbook-config.c:153
-msgid "Unknown addressbook type"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:163
-msgid "None (anonymous mode)"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:165
-#: camel/camel-sasl-plain.c:32 camel/providers/imap/camel-imap-provider.c:80
-#: camel/providers/nntp/camel-nntp-store.c:293
-#: camel/providers/pop3/camel-pop3-provider.c:67 mail/mail-config.glade.h:43
-msgid "Password"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:167
-msgid "SASL"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:170
-msgid "Unknown auth type"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:179
-msgid "Base"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "One"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:183
-msgid "Subtree"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:186
-msgid "Unknown scope type"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:353
-msgid "Bind DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:354
-msgid "FIXME Bind DN Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:356
-#: mail/mail-config.glade.h:50
-msgid "Remember this password"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:406
-#: mail/mail-config.glade.h:28
-msgid "Host:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:407
-msgid "FIXME Host help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:409
-#, fuzzy
-msgid "Port:"
-msgstr "Tosaíocht"
-
-#: addressbook/gui/component/addressbook-config.c:410
-msgid "FIXME Port help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:414
-msgid "Root DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:415
-msgid "FIXME Root DN help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:435
-msgid "Search Scope:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:489
-msgid "Authentication:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:507
-#: mail/mail-config.glade.h:44
-msgid "Path:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:508
-msgid "FIXME Path Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:513
-msgid "Create path if it doesn't exist."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:647
-msgid "Edit Addressbook"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:649
-msgid "Add Addressbook"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:665
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:671
-#: mail/mail-config.glade.h:35
-msgid "Name:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:672
-msgid "FIXME Name help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:674
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:675
-msgid "FIXME Description help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-msgid "Addressbook Sources"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: addressbook/gui/widgets/e-addressbook-view.c:578
-#: addressbook/gui/widgets/e-minicard.c:673
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:8 mail/folder-browser.c:597
-#: mail/mail-config.glade.h:19 mail/mail-view.c:156
-#: ui/evolution-addressbook.xml.h:3 ui/evolution-event-editor.xml.h:17
-#: ui/evolution-mail.xml.h:11 ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr "Scríos"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:23
-msgid "Edit"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-msgid "Name"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-msgid "URI"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Disable Queries"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Enable Queries (Dangerous!)"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:388
-#: addressbook/gui/component/select-names/e-select-names-popup.c:210
-msgid "Edit Contact Info"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:424
-#: addressbook/gui/component/select-names/e-select-names-popup.c:269
-msgid "Add to Contacts"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-msgid "A Bonobo control for an address popup."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A Bonobo control for displaying an address."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-msgid "Evolution Addressbook minicard viewer"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-msgid "Evolution component for handling contacts."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-msgid "Factory for the Addressbook Minicard control"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-msgid "Factory for the Addressbook's address displayer"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-msgid "Factory for the Addressbook's address popup"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:10
-msgid "Factory for the Evolution addressbook component."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:11
-msgid "Factory for the sample Addressbook control"
-msgstr ""
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-msgid "Evolution's addressbook name selection interface."
-msgstr ""
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr ""
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:131
-#: composer/e-msg-composer-attachment-bar.c:468 filter/filter-filter.c:402
-#: filter/filter-rule.c:549 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:265 shell/e-shortcuts-view.c:388
-msgid "Remove"
-msgstr "Scríos"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:146
-#, fuzzy
-msgid "Remove All"
-msgstr "Scríos"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-#, fuzzy
-msgid "Find..."
-msgstr "Priontáil"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-msgid "Message Recipients"
-msgstr ""
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-#, fuzzy
-msgid "Select Names"
-msgstr "Fillteán _Nua"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-#, fuzzy
-msgid "Select name from:"
-msgstr "Fillteán _Nua"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:158
-msgid "Search"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-#, fuzzy
-msgid "o"
-msgstr "Do"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-#, fuzzy
-msgid "r"
-msgstr "Ó:"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:513
-#: addressbook/gui/widgets/e-addressbook-view.c:573
-#: addressbook/gui/widgets/e-minicard.c:466
-#: addressbook/gui/widgets/e-minicard.c:668
-msgid "Save as VCard"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:574
-#: addressbook/gui/widgets/e-minicard.c:669
-msgid "Send contact to other"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:575
-#: addressbook/gui/widgets/e-minicard.c:670
-#, fuzzy
-msgid "Send message to contact"
-msgstr "_Post sceál"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:576
-#: addressbook/gui/widgets/e-minicard.c:671 mail/folder-browser.c:572
-#: mail/mail-view.c:154 ui/evolution-addressbook.xml.h:9
-#: ui/evolution-calendar.xml.h:23 ui/evolution-mail.xml.h:50
-#: ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr "Priontáil"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:577
-#: addressbook/gui/widgets/e-minicard.c:672
-#, fuzzy
-msgid "Print Envelope"
-msgstr "Post an sceál seo"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:641
-msgid "* Click here to add a contact *"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:642
-#, fuzzy
-msgid "File As"
-msgstr "_Fillteán"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:644
-#, fuzzy
-msgid "Email"
-msgstr "Post"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:645
-#, fuzzy
-msgid "Primary Phone"
-msgstr "Tosaíocht"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:646
-msgid "Assistant Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:647
-msgid "Business Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:648
-msgid "Callback Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:649
-#, fuzzy
-msgid "Company Phone"
-msgstr "Greamaigh"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:650
-msgid "Home Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:651
-msgid "Organization"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:652
-msgid "Business Address"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:653
-msgid "Home Address"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:654
-msgid "Mobile Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:655
-msgid "Car Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:658
-msgid "Business Phone 2"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:659
-msgid "Home Phone 2"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:661
-msgid "Other Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:666
-msgid "TTY"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:667
-msgid "Other Address"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:670
-msgid "Web Site"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:671
-msgid "Department"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:672
-msgid "Office"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:673
-#, fuzzy
-msgid "Title"
-msgstr "_Fillteán"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:674
-msgid "Profession"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:675
-msgid "Manager"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:677
-msgid "Nickname"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:678
-msgid "Spouse"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:679
-#, fuzzy
-msgid "Note"
-msgstr "_Nota"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:680
-msgid "Free-busy URL"
-msgstr ""
-
-#: addressbook/gui/widgets/e-minicard-control.c:282
-msgid "Save in addressbook"
-msgstr ""
-
-#: addressbook/gui/widgets/e-minicard-view.c:166
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:26
-msgid "Card View"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:7
-#, fuzzy
-msgid "Font..."
-msgstr "Priontáil"
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:9
-#, fuzzy
-msgid "Footer:"
-msgstr "_Fillteán"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-#, fuzzy
-msgid "Format"
-msgstr "Sheoladh Chuig duine"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-#, fuzzy
-msgid "Header"
-msgstr "Post"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:23
-#, fuzzy
-msgid "Options"
-msgstr "_Oscáil"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:26
-#, fuzzy
-msgid "Page Setup:"
-msgstr "Priontáil"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:29
-#, fuzzy
-msgid "Portrait"
-msgstr "Tosaíocht"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:36
-#, fuzzy
-msgid "Size:"
-msgstr "Méid"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:38
-#, fuzzy
-msgid "Style name:"
-msgstr "Fillteán _Nua"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-#, fuzzy
-msgid "Top:"
-msgstr "Do:"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-#, fuzzy
-msgid "Type:"
-msgstr "Do:"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr ""
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr ""
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr ""
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr ""
-
-#: calendar/gui/calendar-commands.c:266
-msgid "File not found"
-msgstr ""
-
-#: calendar/gui/calendar-commands.c:290
-msgid "Open calendar"
-msgstr ""
-
-#: calendar/gui/calendar-commands.c:332
-msgid "Save calendar"
-msgstr ""
-
-#: calendar/gui/calendar-commands.c:468
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-
-#: calendar/gui/calendar-model.c:360 calendar/gui/calendar-model.c:895
-#: calendar/gui/e-calendar-table.c:330
-msgid "Public"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:363 calendar/gui/calendar-model.c:897
-#: calendar/gui/e-calendar-table.c:331
-#, fuzzy
-msgid "Private"
-msgstr "Priontáil"
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:899
-#: calendar/gui/e-calendar-table.c:332
-msgid "Confidential"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/event-editor.c:1592
-#: calendar/gui/event-editor.c:1619
-#: camel/providers/smtp/camel-smtp-transport.c:218
-msgid "Unknown"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:457
-msgid "N"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:457
-msgid "S"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:459
-msgid "E"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:459
-msgid "W"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:497 calendar/gui/calendar-model.c:1063
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:352 mail/message-list.c:660
-msgid "High"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:499 calendar/gui/calendar-model.c:1065
-#: calendar/gui/calendar-model.c:1569
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:353 mail/message-list.c:659
-#, fuzzy
-msgid "Normal"
-msgstr "Sheoladh Chuig duine"
-
-#: calendar/gui/calendar-model.c:501 calendar/gui/calendar-model.c:1067
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:354 mail/message-list.c:658
-msgid "Low"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:537 calendar/gui/calendar-model.c:1119
-#: calendar/gui/e-calendar-table.c:406
-msgid "Transparent"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:540 calendar/gui/calendar-model.c:1121
-#: calendar/gui/e-calendar-table.c:405
-msgid "Opaque"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:635 calendar/gui/calendar-model.c:1173
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:426
-msgid "Not Started"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:638 calendar/gui/calendar-model.c:1175
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:427
-msgid "In Progress"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1177
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:428
-msgid "Completed"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1179
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:429 camel/camel-service.c:550
-#: camel/camel-service.c:586
-msgid "Cancelled"
-msgstr ""
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:791 e-util/e-time-utils.c:278
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr ""
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:794 e-util/e-time-utils.c:287
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:799
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:879
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr ""
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:893 calendar/gui/calendar-model.c:1117
-#: calendar/gui/calendar-model.c:1171 calendar/gui/e-calendar-table.c:329
-#: calendar/gui/e-calendar-table.c:404 mail/mail-account-gui.c:973
-#: mail/mail-accounts.c:120 mail/mail-accounts.c:164
-#: mail/mail-config.glade.h:37 shell/e-shell-view.c:1129
-#: widgets/misc/e-cell-date-edit.c:234 widgets/misc/e-dateedit.c:430
-#: widgets/misc/e-dateedit.c:1339 widgets/misc/e-dateedit.c:1454
-#, fuzzy
-msgid "None"
-msgstr "_Nota"
-
-#: calendar/gui/calendar-model.c:967
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1007
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1048
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr ""
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1061
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:355
-msgid "Undefined"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1102
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1571
-msgid "Recurring"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1573
-msgid "Assigned"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1579
-msgid "Yes"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1579
-#, fuzzy
-msgid "No"
-msgstr "_Nota"
-
-#: calendar/gui/calendar-summary.c:196
-msgid "%A, %e %B %Y"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:239 calendar/gui/calendar-summary.c:245
-msgid "%I:%M%p"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:437
-msgid "<b>Error loading calendar</b>"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:449
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:616
-msgid "Display"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:621
-#, fuzzy
-msgid "Show appointments"
-msgstr "_Coinne"
-
-#: calendar/gui/calendar-summary.c:629
-msgid "Show tasks"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:715 calendar/gui/e-itip-control.glade.h:7
-msgid "Loading Calendar"
-msgstr ""
-
-#: calendar/gui/control-factory.c:126
-msgid "The URI that the calendar will display"
-msgstr ""
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr ""
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-#, fuzzy
-msgid "Snooze"
-msgstr "Méid"
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr ""
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr ""
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-msgid "Factory for the alarm notification service"
-msgstr ""
-
-#: calendar/gui/alarm-notify/notify-main.c:67 calendar/gui/main.c:52
-msgid "Could not initialize GNOME"
-msgstr ""
-
-#: calendar/gui/alarm-notify/notify-main.c:77
-msgid "Could not create the alarm notify service factory"
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:189
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:196
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:207
-msgid "No summary available."
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:2
-msgid "Close"
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-#, fuzzy
-msgid "Edit appointment"
-msgstr "_Coinne"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-#, fuzzy
-msgid "Calendar"
-msgstr "_Fillteán"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-#, fuzzy
-msgid "Colors"
-msgstr "_Fillteán"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-#, fuzzy
-msgid "Defaults"
-msgstr "Scríos"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:162
-msgid "Due Date"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:481
-msgid "Friday"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:477
-msgid "Monday"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:45
-msgid "Pick a color"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:165
-msgid "Priority"
-msgstr "Tosaíocht"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-#, fuzzy
-msgid "Remind me of all appointments"
-msgstr "_Coinne"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-#, fuzzy
-msgid "Reminders"
-msgstr "Post"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:482
-msgid "Saturday"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-#, fuzzy
-msgid "Show appointment end times"
-msgstr "_Coinne"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:483
-#, fuzzy
-msgid "Sunday"
-msgstr "Post"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-#, fuzzy
-msgid "TaskPad"
-msgstr "_Teacs"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:480
-msgid "Thursday"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:478
-msgid "Tuesday"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:479
-msgid "Wednesday"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:78
-#, fuzzy
-msgid "seconds."
-msgstr "Post"
-
-#: calendar/gui/dialogs/delete-comp.c:70
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:73
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:79
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:82
-msgid "Are you sure you want to delete this untitled task?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:88
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:91
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr ""
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:158
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-msgid "Date & Time"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-#, fuzzy
-msgid "Pri_vate"
-msgstr "Priontáil"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-msgid "Progress"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-msgid "Sta_rt Date:"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-#, fuzzy
-msgid "Su_mmary:"
-msgstr "Post"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-#, fuzzy
-msgid "Task"
-msgstr "_Teacs"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-msgid "URL:"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Contacts..."
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-msgid "_Due Date:"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-#, fuzzy
-msgid "_Priority:"
-msgstr "Tosaíocht"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "_Status:"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor.c:697
-msgid "Edit Task"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor.c:703 calendar/gui/event-editor.c:379
-msgid "No summary"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor.c:709 calendar/gui/event-editor.c:385
-#, fuzzy, c-format
-msgid "Appointment - %s"
-msgstr "_Coinne"
-
-#: calendar/gui/dialogs/task-editor.c:712 calendar/gui/event-editor.c:388
-#, c-format
-msgid "Task - %s"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor.c:715 calendar/gui/event-editor.c:391
-#, c-format
-msgid "Journal entry - %s"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:157
-msgid "Categories"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:159
-msgid "Completion Date"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "End Date"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:161
-msgid "Start Date"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Geographical Position"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:164
-msgid "Percent complete"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:166
-#, fuzzy
-msgid "Summary"
-msgstr "Post"
-
-#: calendar/gui/e-calendar-table.c:167
-msgid "Transparency"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:168
-msgid "URL"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:169
-msgid "Alarms"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:170
-msgid "Click here to add a task"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "0%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "10%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "20%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "30%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:378
-#, c-format
-msgid "40%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:379
-#, c-format
-msgid "50%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:380
-#, c-format
-msgid "60%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:381
-#, c-format
-msgid "70%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:382
-#, c-format
-msgid "80%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:383
-#, c-format
-msgid "90%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:384
-#, c-format
-msgid "100%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:551
-msgid "Mark Complete"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:552
-msgid "Mark the task complete"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:557
-msgid "Edit this task..."
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:558
-#, fuzzy
-msgid "Edit the task"
-msgstr "Scríos an sceal seo"
-
-#: calendar/gui/e-calendar-table.c:560
-#: ui/evolution-task-editor-dialog.xml.h:19
-#, fuzzy
-msgid "Delete this task"
-msgstr "Scríos an sceal seo"
-
-#: calendar/gui/e-calendar-table.c:561
-#, fuzzy
-msgid "Delete the task"
-msgstr "Scríos an sceal seo"
-
-#: calendar/gui/e-day-view-time-item.c:519
-#, c-format
-msgid "%02i minute divisions"
-msgstr ""
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:274 calendar/gui/e-day-view.c:1294
-#: calendar/gui/e-week-view-main-item.c:325
-msgid "%A %d %B"
-msgstr ""
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:278 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:334
-msgid "%a %d %b"
-msgstr ""
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:282 calendar/gui/e-day-view.c:1321
-#: calendar/gui/e-week-view-main-item.c:348
-msgid "%d %b"
-msgstr ""
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:570 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:617
-msgid "am"
-msgstr ""
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:573 calendar/gui/e-week-view.c:303
-#: calendar/gui/print.c:616
-msgid "pm"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3146 ui/evolution-calendar.xml.h:16
-#, fuzzy
-msgid "New Appointment"
-msgstr "_Coinne"
-
-#: calendar/gui/e-day-view.c:3148 calendar/gui/e-week-view.c:3280
-msgid "New All Day Event"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3153 calendar/gui/e-week-view.c:3285
-#, fuzzy
-msgid "Go to Today"
-msgstr "Sábháil 'san _fillteán"
-
-#: calendar/gui/e-day-view.c:3155 calendar/gui/e-week-view.c:3287
-#, fuzzy
-msgid "Go to Date..."
-msgstr "Sábháil 'san _fillteán"
-
-#: calendar/gui/e-day-view.c:3162 calendar/gui/e-week-view.c:3293
-#: mail/folder-browser.c:566 ui/evolution-calendar.xml.h:19
-#: ui/evolution-message-composer.xml.h:10
-#, fuzzy
-msgid "Open"
-msgstr "_Oscáil"
-
-#: calendar/gui/e-day-view.c:3164 calendar/gui/e-week-view.c:3295
-#, fuzzy
-msgid "Delete this Appointment"
-msgstr "Scríos an sceal seo"
-
-#: calendar/gui/e-day-view.c:3166 calendar/gui/e-week-view.c:3297
-#: ui/evolution-event-editor.xml.h:45
-msgid "Schedule Meeting"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3175 calendar/gui/e-week-view.c:3310
-#, fuzzy
-msgid "Make this Occurrence Movable"
-msgstr "Scríos an sceal seo"
-
-#: calendar/gui/e-day-view.c:3177 calendar/gui/e-week-view.c:3312
-#, fuzzy
-msgid "Delete this Occurrence"
-msgstr "Scríos an sceal seo"
-
-#: calendar/gui/e-day-view.c:3179
-#, fuzzy
-msgid "Delete all Occurrences"
-msgstr "Scríos an sceal seo"
-
-#: calendar/gui/e-itip-control.c:161
-msgid "I couldn't update your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:167 calendar/gui/e-itip-control.c:510
-msgid "Component successfully updated."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:173
-msgid "There was an error loading the calendar file."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:197
-msgid "I couldn't open your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:458 calendar/gui/e-itip-control.c:529
-msgid "I couldn't load your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:470
-msgid "I couldn't read your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:483
-msgid "This is a reply from someone who was uninvited!"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:499
-msgid "I couldn't update your calendar store."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:540
-msgid "I couldn't delete the calendar component!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:550
-msgid "Component successfully deleted."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:694
-msgid "I don't recognize this type of calendar component."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:780
-msgid "Add to Calendar"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:814
-msgid " Accept "
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:815
-#, fuzzy
-msgid " Decline "
-msgstr "Scríos"
-
-#: calendar/gui/e-itip-control.c:816
-msgid " Tentative "
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:860
-msgid "Update Calendar"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:883
-msgid "Cancel Meeting"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, no-c-format
-msgid "%P %%"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:4
-#, fuzzy
-msgid "Calendar Message"
-msgstr "Post an sceál seo"
-
-#: calendar/gui/e-itip-control.glade.h:5 mail/mail-format.c:619
-#, fuzzy
-msgid "Date:"
-msgstr "Scríos"
-
-#: calendar/gui/e-itip-control.glade.h:8
-msgid "Loading calendar..."
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:9
-msgid "Organizer:"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:10
-#, fuzzy
-msgid "Server Message:"
-msgstr "Post"
-
-#: calendar/gui/e-itip-control.glade.h:11
-#, fuzzy
-msgid "Summary:"
-msgstr "Post"
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:13
-msgid "date-start"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-msgid "Attendee"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-msgid "Attendee address"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-msgid "Attendees: "
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-msgid "Chair"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-msgid "Meeting Invitations"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-msgid "Organizer: "
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:15
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid "RSVP"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:18
-msgid ""
-"Request\n"
-"Meeting"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-msgid "Required Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-#, fuzzy
-msgid "Role"
-msgstr "Scríos"
-
-#: calendar/gui/e-meeting-dialog.glade.h:22
-msgid ""
-"Schedule\n"
-"Time"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:24 filter/libfilter-i18n.h:33
-#: mail/message-list.c:1052
-msgid "Status"
-msgstr ""
-
-#: calendar/gui/e-tasks.c:149 calendar/gui/e-tasks.c:469
-#: calendar/gui/e-tasks.c:502
-msgid "All"
-msgstr ""
-
-#: calendar/gui/e-tasks.c:155
-msgid "Category:"
-msgstr ""
-
-#: calendar/gui/e-tasks.c:298
-#, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr ""
-
-#: calendar/gui/e-tasks.c:310
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr ""
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:342
-msgid "%d %B"
-msgstr ""
-
-#: calendar/gui/e-week-view.c:3278 calendar/gui/e-week-view.c:3301
-#, fuzzy
-msgid "New Appointment..."
-msgstr "_Coinne"
-
-#: calendar/gui/e-week-view.c:3314
-#, fuzzy
-msgid "Delete All Occurrences"
-msgstr "Scríos an sceal seo"
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-#, fuzzy
-msgid "Appointment"
-msgstr "_Coinne"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-#, fuzzy
-msgid "Appointment Basics"
-msgstr "_Coinne"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-msgid "Custom recurrence"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-#, fuzzy
-msgid "Exceptions"
-msgstr "_Oscáil"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-msgid "Modify"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-msgid "No recurrence"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1579
-msgid "Play a sound"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-msgid "Preview"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Recurrence"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-msgid "Recurrence Rule"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-#, fuzzy
-msgid "Reminder"
-msgstr "Post"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1588
-msgid "Run a program"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1585
-#, fuzzy
-msgid "Send an email"
-msgstr "Post"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-msgid "Settings..."
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1582
-msgid "Show a dialog"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-msgid "_End time:"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Start time:"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Starting date:"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:36
-msgid "after"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:37
-msgid "before"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "day(s)"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-#, fuzzy
-msgid "end of appointment"
-msgstr "_Coinne"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "for"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-msgid "hour(s)"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:40 mail/mail-config.glade.h:77
-msgid "minute(s)"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "month(s)"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:42
-#, fuzzy
-msgid "start of appointment"
-msgstr "_Coinne"
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-msgid "until"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "week(s)"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "year(s)"
-msgstr ""
-
-#: calendar/gui/event-editor.c:373
-#, fuzzy
-msgid "Edit Appointment"
-msgstr "_Coinne"
-
-#: calendar/gui/event-editor.c:451
-msgid "on"
-msgstr ""
-
-#: calendar/gui/event-editor.c:476 filter/filter-datespec.c:81
-msgid "day"
-msgstr ""
-
-#: calendar/gui/event-editor.c:603
-msgid "on the"
-msgstr ""
-
-#: calendar/gui/event-editor.c:610
-msgid "th"
-msgstr ""
-
-#: calendar/gui/event-editor.c:756
-msgid "occurrences"
-msgstr ""
-
-#: calendar/gui/event-editor.c:873
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr ""
-
-#: calendar/gui/event-editor.c:1534
-#, c-format
-msgid " %d days"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1536
-msgid " 1 day"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1539
-#, c-format
-msgid " %d weeks"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1541
-msgid " 1 week"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1544
-#, c-format
-msgid " %d hours"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1546
-msgid " 1 hour"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1549
-#, c-format
-msgid " %d minutes"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1551
-msgid " 1 minute"
-msgstr ""
-
-#: calendar/gui/event-editor.c:1554
-#, fuzzy, c-format
-msgid " %d seconds"
-msgstr "Post"
-
-#: calendar/gui/event-editor.c:1556
-#, fuzzy
-msgid " 1 second"
-msgstr "Post"
-
-#: calendar/gui/event-editor.c:1603
-#, fuzzy
-msgid " before start of appointment"
-msgstr "Scríos an sceal seo"
-
-#: calendar/gui/event-editor.c:1605
-#, fuzzy
-msgid " after start of appointment"
-msgstr "Scríos an sceal seo"
-
-#: calendar/gui/event-editor.c:1613
-#, fuzzy
-msgid " before end of appointment"
-msgstr "Scríos an sceal seo"
-
-#: calendar/gui/event-editor.c:1615
-#, fuzzy
-msgid " after end of appointment"
-msgstr "_Coinne"
-
-#: calendar/gui/event-editor.c:3123 calendar/gui/print.c:1097
-#: calendar/gui/print.c:1099 calendar/gui/print.c:1100
-msgid "%a %b %d %Y"
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-msgid "Evolution calendar executive summary component."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-msgid "Factory for the Calendar Summary component."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-msgid "Factory for the Evolution calendar component."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-msgid "Factory for the calendar iTip view control"
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-msgid "Factory for the sample Calendar control"
-msgstr ""
-
-#: calendar/gui/gnome-cal.c:700
-#, c-format
-msgid "Could not open the folder in `%s'"
-msgstr ""
-
-#: calendar/gui/gnome-cal.c:711
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:1
-msgid "April"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:2
-msgid "August"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:3
-msgid "December"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:4
-msgid "February"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:5
-msgid "Go To Date"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:6
-msgid "Go To Today"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:7
-msgid "January"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:8
-msgid "July"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:9
-msgid "June"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:10
-msgid "March"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:11
-msgid "May"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:12
-msgid "November"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:13
-msgid "October"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:14
-msgid "September"
-msgstr ""
-
-#: calendar/gui/print.c:300
-msgid "1st"
-msgstr ""
-
-#: calendar/gui/print.c:300
-msgid "2nd"
-msgstr ""
-
-#: calendar/gui/print.c:300
-msgid "3rd"
-msgstr ""
-
-#: calendar/gui/print.c:300
-msgid "4th"
-msgstr ""
-
-#: calendar/gui/print.c:300
-msgid "5th"
-msgstr ""
-
-#: calendar/gui/print.c:301
-msgid "6th"
-msgstr ""
-
-#: calendar/gui/print.c:301
-msgid "7th"
-msgstr ""
-
-#: calendar/gui/print.c:301
-msgid "8th"
-msgstr ""
-
-#: calendar/gui/print.c:301
-msgid "9th"
-msgstr ""
-
-#: calendar/gui/print.c:301
-msgid "10th"
-msgstr ""
-
-#: calendar/gui/print.c:302
-msgid "11th"
-msgstr ""
-
-#: calendar/gui/print.c:302
-msgid "12th"
-msgstr ""
-
-#: calendar/gui/print.c:302
-msgid "13th"
-msgstr ""
-
-#: calendar/gui/print.c:302
-msgid "14th"
-msgstr ""
-
-#: calendar/gui/print.c:302
-msgid "15th"
-msgstr ""
-
-#: calendar/gui/print.c:303
-msgid "16th"
-msgstr ""
-
-#: calendar/gui/print.c:303
-msgid "17th"
-msgstr ""
-
-#: calendar/gui/print.c:303
-msgid "18th"
-msgstr ""
-
-#: calendar/gui/print.c:303
-msgid "19th"
-msgstr ""
-
-#: calendar/gui/print.c:303
-msgid "20th"
-msgstr ""
-
-#: calendar/gui/print.c:304
-msgid "21st"
-msgstr ""
-
-#: calendar/gui/print.c:304
-msgid "22nd"
-msgstr ""
-
-#: calendar/gui/print.c:304
-msgid "23rd"
-msgstr ""
-
-#: calendar/gui/print.c:304
-msgid "24th"
-msgstr ""
-
-#: calendar/gui/print.c:304
-msgid "25th"
-msgstr ""
-
-#: calendar/gui/print.c:305
-msgid "26th"
-msgstr ""
-
-#: calendar/gui/print.c:305
-msgid "27th"
-msgstr ""
-
-#: calendar/gui/print.c:305
-msgid "28th"
-msgstr ""
-
-#: calendar/gui/print.c:305
-msgid "29th"
-msgstr ""
-
-#: calendar/gui/print.c:305
-msgid "30th"
-msgstr ""
-
-#: calendar/gui/print.c:306
-msgid "31st"
-msgstr ""
-
-#: calendar/gui/print.c:362
-msgid "Su"
-msgstr ""
-
-#: calendar/gui/print.c:362
-msgid "Mo"
-msgstr ""
-
-#: calendar/gui/print.c:362
-msgid "Tu"
-msgstr ""
-
-#: calendar/gui/print.c:362
-msgid "We"
-msgstr ""
-
-#: calendar/gui/print.c:362
-msgid "Th"
-msgstr ""
-
-#: calendar/gui/print.c:362
-#, fuzzy
-msgid "Fr"
-msgstr "Ó:"
-
-#: calendar/gui/print.c:362
-msgid "Sa"
-msgstr ""
-
-#: calendar/gui/print.c:948 views/tasks/galview.xml.h:1
-#, fuzzy
-msgid "Tasks"
-msgstr "_Teacs"
-
-#. Day
-#: calendar/gui/print.c:1078
-msgid "Current day (%a %b %d %Y)"
-msgstr ""
-
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1096
-msgid "%a %b %d"
-msgstr ""
-
-#: calendar/gui/print.c:1093
-msgid "%a %d %Y"
-msgstr ""
-
-#: calendar/gui/print.c:1104
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr ""
-
-#. Month
-#: calendar/gui/print.c:1112
-msgid "Current month (%b %Y)"
-msgstr ""
-
-#. Year
-#: calendar/gui/print.c:1119
-msgid "Current year (%Y)"
-msgstr ""
-
-#: calendar/gui/print.c:1156
-msgid "Print Calendar"
-msgstr ""
-
-#: calendar/gui/print.c:1321 mail/mail-callbacks.c:1342
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:24
-#: ui/evolution-mail.xml.h:52
-msgid "Print Preview"
-msgstr ""
-
-#: calendar/gui/tasks-control.c:108
-msgid "The URI of the tasks folder to display"
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-
-#: calendar/gui/weekday-picker.c:315 calendar/gui/weekday-picker.c:410
-msgid "SMTWTFS"
-msgstr ""
-
-#: camel/camel-cipher-context.c:169
-msgid "Signing is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-cipher-context.c:207
-msgid "Clearsigning is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-cipher-context.c:245
-msgid "Verifying is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-cipher-context.c:286
-msgid "Encryption is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-cipher-context.c:326
-msgid "Decryption is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-filter-driver.c:534 camel/camel-filter-driver.c:543
-#, fuzzy
-msgid "Syncing folders"
-msgstr "Fillteán _Nua"
-
-#: camel/camel-filter-driver.c:643
-msgid "Unable to open spool folder"
-msgstr ""
-
-#: camel/camel-filter-driver.c:652
-msgid "Unable to process spool folder"
-msgstr ""
-
-#: camel/camel-filter-driver.c:666
-#, fuzzy
-msgid "Getting message %d (%d%%)"
-msgstr "_Post sceál"
-
-#: camel/camel-filter-driver.c:670 camel/camel-filter-driver.c:679
-#, fuzzy, c-format
-msgid "Failed message %d"
-msgstr "_Post sceál"
-
-#: camel/camel-filter-driver.c:671
-#, fuzzy
-msgid "Cannot open message"
-msgstr "_Post sceál"
-
-#: camel/camel-filter-driver.c:690 camel/camel-filter-driver.c:788
-#, fuzzy
-msgid "Syncing folder"
-msgstr "Fillteán _Nua"
-
-#: camel/camel-filter-driver.c:694 camel/camel-filter-driver.c:793
-#, fuzzy
-msgid "Complete"
-msgstr "_Nota"
-
-#: camel/camel-filter-driver.c:748
-#, fuzzy, c-format
-msgid "Getting message %d of %d"
-msgstr "_Post sceál"
-
-#: camel/camel-filter-driver.c:753 camel/camel-filter-driver.c:771
-#, fuzzy, c-format
-msgid "Failed at message %d of %d"
-msgstr "Post an sceál seo"
-
-#: camel/camel-filter-driver.c:866
-#, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr ""
-
-#: camel/camel-filter-driver.c:871
-#, c-format
-msgid "Error executing filter: %s: %s"
-msgstr ""
-
-#: camel/camel-filter-search.c:439 camel/camel-filter-search.c:445
-#, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr ""
-
-#: camel/camel-folder-search.c:328
-#, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-folder-search.c:338
-#, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-folder-search.c:485 camel/camel-folder-search.c:513
-msgid "(match-all) requires a single bool result"
-msgstr ""
-
-#: camel/camel-folder-search.c:559
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr ""
-
-#: camel/camel-folder-search.c:670 camel/camel-folder-search.c:714
-msgid "Invalid type in body-contains, expecting string"
-msgstr ""
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:92 camel/camel-lock.c:111 camel/camel-movemail.c:138
-#: camel/camel-movemail.c:185
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr ""
-
-#: camel/camel-lock.c:151 camel/camel-movemail.c:219
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr ""
-
-#: camel/camel-lock.c:201
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr ""
-
-#: camel/camel-lock.c:255
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr ""
-
-#: camel/camel-movemail.c:101
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:148
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:158
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:199
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:245
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:256
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:274
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:306
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:318
-#, c-format
-msgid "Could not fork: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:356
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:357
-msgid "(Unknown error)"
-msgstr ""
-
-#: camel/camel-movemail.c:587
-#, c-format
-msgid "Error copying mail temp file: %s"
-msgstr ""
-
-#: camel/camel-pgp-context.c:186
-#, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr ""
-
-#: camel/camel-pgp-context.c:189
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr ""
-
-#: camel/camel-pgp-context.c:509
-msgid "No plaintext to sign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:516 camel/camel-pgp-context.c:688
-#: camel/camel-pgp-context.c:1021 camel/camel-pgp-context.c:1235
-msgid "No password provided."
-msgstr ""
-
-#: camel/camel-pgp-context.c:522 camel/camel-pgp-context.c:694
-#: camel/camel-pgp-context.c:877 camel/camel-pgp-context.c:1028
-#: camel/camel-pgp-context.c:1242
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr ""
-
-#: camel/camel-pgp-context.c:681
-msgid "No plaintext to clearsign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:871
-msgid "No plaintext to verify."
-msgstr ""
-
-#: camel/camel-pgp-context.c:888
-#, c-format
-msgid "Couldn't create temp file: %s"
-msgstr ""
-
-#: camel/camel-pgp-context.c:1011
-msgid "No plaintext to encrypt."
-msgstr ""
-
-#: camel/camel-pgp-context.c:1037
-msgid "No recipients specified"
-msgstr ""
-
-#: camel/camel-pgp-context.c:1227
-msgid "No ciphertext to decrypt."
-msgstr ""
-
-#: camel/camel-provider.c:131
-#, c-format
-msgid "Could not load %s: Module loading not supported on this system."
-msgstr ""
-
-#: camel/camel-provider.c:140
-#, c-format
-msgid "Could not load %s: %s"
-msgstr ""
-
-#: camel/camel-provider.c:148
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr ""
-
-#: camel/camel-remote-store.c:186
-#, c-format
-msgid "%s server %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:190
-#, c-format
-msgid "%s service for %s on %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:240
-msgid "Connection cancelled"
-msgstr ""
-
-#: camel/camel-remote-store.c:243
-#: camel/providers/smtp/camel-smtp-transport.c:261
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:244
-msgid "(unknown host)"
-msgstr ""
-
-#: camel/camel-remote-store.c:325 camel/camel-remote-store.c:387
-#: camel/camel-remote-store.c:458
-#: camel/providers/imap/camel-imap-command.c:264
-msgid "Operation cancelled"
-msgstr ""
-
-#: camel/camel-remote-store.c:464
-msgid "Server unexpectedly disconnected"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:33
-msgid "Anonymous"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:35
-msgid "This option will connect to the server using an anonymous login."
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:110 camel/camel-sasl-plain.c:87
-msgid "Authentication failed."
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:119
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:131
-#, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:143
-#, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-cram-md5.c:35
-msgid "CRAM-MD5"
-msgstr ""
-
-#: camel/camel-sasl-cram-md5.c:37
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:43
-msgid "DIGEST-MD5"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:45
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:810
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:819
-msgid "Server challenge invalid\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:825
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:847
-msgid "Server response did not contain authorization data\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:865
-msgid "Server response contained incomplete authorization data\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:875
-msgid "Server response does not match\n"
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "Kerberos 4"
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:42
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:161
-#, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:218
-#: camel/providers/imap/camel-imap-store.c:417
-msgid "Bad authentication response from server."
-msgstr ""
-
-#: camel/camel-sasl-plain.c:34
-msgid "This option will connect to the server using a simple password."
-msgstr ""
-
-#: camel/camel-search-private.c:110
-#, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr ""
-
-#: camel/camel-service.c:152
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr ""
-
-#: camel/camel-service.c:160
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr ""
-
-#: camel/camel-service.c:168
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr ""
-
-#: camel/camel-service.c:554
-#, c-format
-msgid "Resolving: %s"
-msgstr ""
-
-#: camel/camel-service.c:581
-#, c-format
-msgid "Failure in name lookup: %s"
-msgstr ""
-
-#: camel/camel-service.c:606
-#, c-format
-msgid "Host lookup failed: %s: host not found"
-msgstr ""
-
-#: camel/camel-service.c:608
-#, c-format
-msgid "Host lookup failed: %s: unknown reason"
-msgstr ""
-
-#: camel/camel-session.c:57
-msgid "Virtual folder email provider"
-msgstr ""
-
-#: camel/camel-session.c:59
-msgid "For reading mail as a query of another set of folders"
-msgstr ""
-
-#: camel/camel-session.c:274 camel/camel-session.c:364
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr ""
-
-#: camel/camel-session.c:462
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-
-#. Fill in the new fields
-#: camel/camel-store.c:380 mail/mail-ops.c:994 mail/mail-ops.c:1001
-#: mail/mail-ops.c:1019 mail/mail-ops.c:1020
-#, fuzzy
-msgid "Trash"
-msgstr "_Teacs"
-
-#: camel/camel-url.c:289
-#, c-format
-msgid "Could not parse URL `%s'"
-msgstr ""
-
-#: camel/camel-vee-folder.c:451
-#, fuzzy, c-format
-msgid "No such message %s in %s"
-msgstr "Post an sceál seo"
-
-#: camel/camel-vee-folder.c:545
-#, fuzzy, c-format
-msgid "No such message: %s"
-msgstr "Post an sceál seo"
-
-#: camel/providers/imap/camel-imap-command.c:209
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:217
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:218 shell/e-storage.c:481
-msgid "Unknown error"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:272
-msgid "Server response ended too soon."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:456
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:490
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-folder.c:172
-#, c-format
-msgid "Could not load summary for %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-folder.c:351
-#, fuzzy
-msgid "Scanning IMAP folder"
-msgstr "Fillteán _Nua"
-
-#: camel/providers/imap/camel-imap-folder.c:986
-#: camel/providers/imap/camel-imap-folder.c:1197
-msgid "This message is not currently available"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-folder.c:1016
-#: camel/providers/imap/camel-imap-folder.c:1231
-msgid "Could not find message body in FETCH response."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:43 mail/mail-config.glade.h:11
-msgid "Checking for new mail"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:45
-#, fuzzy
-msgid "Check for new messages in all folders"
-msgstr "Fillteán _Nua"
-
-#: camel/providers/imap/camel-imap-provider.c:48 shell/e-shell-view.c:484
-#, fuzzy
-msgid "Folders"
-msgstr "_Fillteán"
-
-#: camel/providers/imap/camel-imap-provider.c:50
-msgid "Show only subscribed folders"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:52
-msgid "Override server-supplied folder namespace"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:54
-#, fuzzy
-msgid "Namespace"
-msgstr "Freagrair"
-
-#: camel/providers/imap/camel-imap-provider.c:57
-msgid "Apply filters to new messages in INBOX on this server"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:63
-msgid "IMAPv4"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:65
-msgid "For reading and storing mail on IMAP servers."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:82
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:440
-#, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:450
-#: camel/providers/smtp/camel-smtp-transport.c:358
-#, c-format
-msgid "No support for authentication type %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:475
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:490
-#: camel/providers/smtp/camel-smtp-transport.c:403
-msgid "You didn't enter a password."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:518
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:865
-#, c-format
-msgid "%s is not a selectable folder"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:879
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:1382
-msgid "You must be working online to complete this operation"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:39
-msgid "MH-format mail directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:40
-msgid "For storing local mail in MH-like mail directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:49
-msgid "Standard Unix mailbox file"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:50
-msgid "For storing local mail in standard mbox format"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "Qmail maildir-format mail files"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:60
-msgid "For storing local mail in qmail maildir directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:129
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:136
-#, c-format
-msgid "Store root %s is not a regular directory"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:144
-#: camel/providers/local/camel-local-store.c:160
-#, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:175
-msgid "Local stores do not have an inbox"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:185
-#, c-format
-msgid "Local mail file %s"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:241
-#, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:283
-#, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:293
-#, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-folder.c:150
-#: camel/providers/local/camel-maildir-folder.c:158
-#: camel/providers/local/camel-maildir-folder.c:169
-#, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-maildir-folder.c:209
-#: camel/providers/local/camel-maildir-folder.c:217
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#: camel/providers/local/camel-mh-folder.c:194
-#: camel/providers/local/camel-mh-folder.c:202
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#, fuzzy
-msgid "No such message"
-msgstr "Post an sceál seo"
-
-#: camel/providers/local/camel-maildir-folder.c:218
-#: camel/providers/local/camel-mh-folder.c:203
-msgid "Invalid message contents"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:96
-#: camel/providers/local/camel-mh-store.c:90
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:100
-#: camel/providers/local/camel-mbox-store.c:101
-#: camel/providers/local/camel-mh-store.c:97
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:107
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:122
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:151
-#: camel/providers/local/camel-maildir-store.c:188
-#: camel/providers/local/camel-mh-store.c:127
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:152
-msgid "not a maildir directory"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:152
-#, c-format
-msgid "Cannot create folder lock on %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:203
-#, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:259
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:335
-#: camel/providers/local/camel-mbox-folder.c:367
-#: camel/providers/local/camel-mbox-folder.c:380
-#, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:368
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:381
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:94
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:110
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:119
-#: camel/providers/local/camel-mbox-store.c:146
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:138
-#: camel/providers/local/camel-mbox-store.c:161
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr ""
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:248
-#, fuzzy
-msgid "Summarising folder"
-msgstr "Fillteán _Nua"
-
-#: camel/providers/local/camel-mbox-summary.c:253
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:295
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:370
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:501
-#: camel/providers/local/camel-mbox-summary.c:702 mail/mail-ops.c:1382
-msgid "Synchronising folder"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:506
-#: camel/providers/local/camel-mbox-summary.c:707
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:523
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:548
-#: camel/providers/local/camel-mbox-summary.c:556
-#: camel/providers/local/camel-mbox-summary.c:745
-#: camel/providers/local/camel-mbox-summary.c:753
-msgid "Summary and folder mismatch, even after a sync"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:599
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:616
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:634
-#: camel/providers/local/camel-mbox-summary.c:803
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:643
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:654
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:878
-#, c-format
-msgid "Unknown error: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mh-folder.c:149
-#: camel/providers/local/camel-mh-folder.c:157
-#, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mh-store.c:110
-#, c-format
-msgid "`%s' is not a directory."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:45
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:66
-msgid "Server rejected username"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:72
-msgid "Failed to send username to server"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:81
-msgid "Server rejected username/password"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-provider.c:42
-msgid "USENET news"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-provider.c:44
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:226
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:288
-#, c-format
-msgid "USENET News via %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:295
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:327
-#: camel/providers/nntp/camel-nntp-store.c:490
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-#, fuzzy
-msgid "Retrieving POP summary"
-msgstr "_Post sceál"
-
-#: camel/providers/pop3/camel-pop3-folder.c:192
-msgid "Could not open folder: message listing was incomplete."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:285
-#, c-format
-msgid "No message with uid %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:289
-#, fuzzy, c-format
-msgid "Retrieving POP message %d"
-msgstr "_Post sceál"
-
-#: camel/providers/pop3/camel-pop3-folder.c:307
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:37
-#, fuzzy
-msgid "Message storage"
-msgstr "_Post sceál"
-
-#: camel/providers/pop3/camel-pop3-provider.c:39
-#, fuzzy
-msgid "Leave messages on server"
-msgstr "_Post sceál"
-
-#: camel/providers/pop3/camel-pop3-provider.c:41
-#, fuzzy, c-format
-msgid "Delete after %s day(s)"
-msgstr "Scríos an sceal seo"
-
-#: camel/providers/pop3/camel-pop3-provider.c:48 mail/mail-config.glade.h:42
-msgid "POP"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:50
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:79
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:91
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:207
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:319
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:358
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:377
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:380
-#: camel/providers/pop3/camel-pop3-store.c:417
-msgid "(Unknown)"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:407
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:415
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:483
-#, c-format
-msgid "No such folder `%s'."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:37
-#: mail/mail-config.glade.h:57
-#, fuzzy
-msgid "Sendmail"
-msgstr "Post"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:39
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:107
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:124
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:150
-#, c-format
-msgid "Could not send message: %s"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:163
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:170
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:175
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:194
-msgid "Could not find 'From' address in message"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "sendmail"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:249
-msgid "Mail delivery via the sendmail program"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-provider.c:38 mail/mail-config.glade.h:52
-msgid "SMTP"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-provider.c:40
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:165
-msgid "Syntax error, command unrecognized"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:167
-msgid "Syntax error in parameters or arguments"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:169
-msgid "Command not implemented"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:171
-msgid "Command parameter not implemented"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:173
-msgid "System status, or system help reply"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:175
-#, fuzzy
-msgid "Help message"
-msgstr "Post an sceál seo"
-
-#: camel/providers/smtp/camel-smtp-transport.c:177
-#, fuzzy
-msgid "Service ready"
-msgstr "Post"
-
-#: camel/providers/smtp/camel-smtp-transport.c:179
-msgid "Service closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:181
-msgid "Service not available, closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:183
-msgid "Requested mail action okay, completed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:185
-msgid "User not local; will forward to <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:187
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:189
-msgid "Requested action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:191
-msgid "Requested action aborted: error in processing"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:193
-msgid "User not local; please try <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:195
-msgid "Requested action not taken: insufficient system storage"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:197
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:199
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:201
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:203
-msgid "Transaction failed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:207
-msgid "A password transition is needed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:209
-msgid "Authentication mechanism is too weak"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:211
-msgid "Encryption required for requested authentication mechanism"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:213
-msgid "Temporary authentication failure"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:215
-msgid "Authentication required"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:305
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:348
-#, c-format
-msgid "SMTP server %s does not support requested authentication type %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:388
-#, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:411
-#, c-format
-msgid ""
-"Unable to authenticate to SMTP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:527
-#, c-format
-msgid "SMTP server %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:529
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:554
-msgid "Cannot send message: sender address not defined."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:561
-msgid "Cannot send message: sender address not valid."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:575
-msgid "Cannot send message: no recipients defined."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:669
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:688
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:721
-msgid "Error creating SASL authentication object."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:736
-#: camel/providers/smtp/camel-smtp-transport.c:748
-#, c-format
-msgid "AUTH request timed out: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:798
-msgid "Bad authentication response from server.\n"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:824
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:843
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:868
-#, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:887
-#, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:918
-#, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:937
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:952
-#: camel/providers/smtp/camel-smtp-transport.c:970
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:989
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1013
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1032
-#, c-format
-msgid "RSET response error: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1055
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1074
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:95
-msgid "1 byte"
-msgstr "1 byte"
-
-#: composer/e-msg-composer-attachment-bar.c:97
-#, c-format
-msgid "%u bytes"
-msgstr "%u bytanna"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fK"
-
-#: composer/e-msg-composer-attachment-bar.c:108
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fM"
-
-#: composer/e-msg-composer-attachment-bar.c:112
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fG"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:332 mail/mail-display.c:120
-msgid "attachment"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:421
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:469
-msgid "Remove selected items from the attachment list"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:500
-msgid "Add attachment..."
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:501
-msgid "Attach a file to the message"
-msgstr ""
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/message-list.c:1052
-msgid "Attachment"
-msgstr ""
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr ""
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr ""
-
-#: composer/e-msg-composer-attachment.glade.h:5
-msgid "Inline attachment"
-msgstr ""
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr ""
-
-#: composer/e-msg-composer-attachment.glade.h:7
-#, fuzzy
-msgid "Send as:"
-msgstr "Post"
-
-#: composer/e-msg-composer-hdrs.c:321
-msgid "Click here for the address book"
-msgstr ""
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:352 mail/mail-format.c:715
-#, fuzzy
-msgid "From:"
-msgstr "Ó:"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:358 mail/mail-format.c:717
-#, fuzzy
-msgid "Reply-To:"
-msgstr "Freagrair"
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:369 mail/mail-format.c:639
-msgid "Subject:"
-msgstr "Abair:"
-
-#: composer/e-msg-composer-hdrs.c:383 mail/mail-format.c:719
-msgid "To:"
-msgstr "Do:"
-
-#: composer/e-msg-composer-hdrs.c:384
-msgid "Enter the recipients of the message"
-msgstr ""
-
-#: composer/e-msg-composer-hdrs.c:387 mail/mail-format.c:721
-msgid "Cc:"
-msgstr "Cc:"
-
-#: composer/e-msg-composer-hdrs.c:388
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr ""
-
-#: composer/e-msg-composer-hdrs.c:391
-msgid "Bcc:"
-msgstr "Bcc:"
-
-#: composer/e-msg-composer-hdrs.c:392
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-
-#: composer/e-msg-composer.c:528
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-
-#: composer/e-msg-composer.c:716
-msgid "Save as..."
-msgstr ""
-
-#: composer/e-msg-composer.c:727
-#, c-format
-msgid "Error saving file: %s"
-msgstr ""
-
-#: composer/e-msg-composer.c:747
-#, c-format
-msgid "Error loading file: %s"
-msgstr ""
-
-#: composer/e-msg-composer.c:819
-msgid ""
-"Unable to open the drafts folder for this account.\n"
-"Would you like to use the default drafts folder?"
-msgstr ""
-
-#: composer/e-msg-composer.c:877 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:206
-msgid "Evolution"
-msgstr "Evolution"
-
-#: composer/e-msg-composer.c:883
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-
-#: composer/e-msg-composer.c:908
-msgid "Open file"
-msgstr ""
-
-#: composer/e-msg-composer.c:1034
-msgid "That file does not exist."
-msgstr ""
-
-#: composer/e-msg-composer.c:1044
-msgid "That is not a regular file."
-msgstr ""
-
-#: composer/e-msg-composer.c:1054
-msgid "That file exists but is not readable."
-msgstr ""
-
-#: composer/e-msg-composer.c:1064
-msgid "That file appeared accesible but open(2) failed."
-msgstr ""
-
-#: composer/e-msg-composer.c:1086
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-
-#: composer/e-msg-composer.c:1107
-msgid "An error occurred while reading the file."
-msgstr ""
-
-#: composer/e-msg-composer.c:1408 composer/e-msg-composer.c:1740
-#, fuzzy
-msgid "Compose a message"
-msgstr "Post an sceál seo"
-
-#: composer/e-msg-composer.c:1829
-msgid "Could not create composer window."
-msgstr ""
-
-#: composer/evolution-composer.c:355
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-
-#: composer/evolution-composer.c:370
-msgid "Cannot initialize Evolution's composer."
-msgstr ""
-
-#: data/evolution.desktop.in.h:2
-msgid "The Evolution groupware suite"
-msgstr ""
-
-#: data/evolution.keys.in.h:1
-msgid "address card"
-msgstr ""
-
-#: data/evolution.keys.in.h:2
-msgid "calendar information"
-msgstr ""
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:69 e-util/e-time-utils.c:117
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:477
-#: widgets/misc/e-dateedit.c:1282 widgets/misc/e-dateedit.c:1463
-msgid "%m/%d/%Y"
-msgstr ""
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:87 e-util/e-time-utils.c:198
-msgid "%I:%M:%S %p%n"
-msgstr ""
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:90 e-util/e-time-utils.c:201
-msgid "%H:%M:%S%n"
-msgstr ""
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:94 e-util/e-time-utils.c:205
-msgid "%I:%M %p%n"
-msgstr ""
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:97 e-util/e-time-utils.c:208
-msgid "%H:%M%n"
-msgstr ""
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:269
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:473
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2503
-msgid "%a %m/%d/%Y"
-msgstr ""
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:274
-msgid "%a %m/%d/%Y %H:%M"
-msgstr ""
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:283
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr ""
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:312 widgets/misc/e-dateedit.c:1257
-#: widgets/misc/e-dateedit.c:1316 widgets/misc/e-dateedit.c:1495
-msgid "%H:%M"
-msgstr ""
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:315
-msgid "%H:%M:%S"
-msgstr ""
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:320 widgets/misc/e-dateedit.c:1260
-#: widgets/misc/e-dateedit.c:1319 widgets/misc/e-dateedit.c:1498
-msgid "%I:%M %p"
-msgstr ""
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:323
-msgid "%I:%M:%S %p"
-msgstr ""
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-msgid "Evolution component for the executive summary."
-msgstr ""
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-msgid "Factory for the Evolution executive summary component."
-msgstr ""
-
-#: executive-summary/component/component-factory.c:152
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr ""
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:71
-#, fuzzy, c-format
-msgid "Send an email to %s"
-msgstr "Post"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:75
-#, c-format
-msgid "Close %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:76
-#, fuzzy, c-format
-msgid "Move %s to the left"
-msgstr "Fillteán _Nua"
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:78
-#, c-format
-msgid "Move %s into the previous row"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:79
-#, c-format
-msgid "Move %s into the next row"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:80
-#, fuzzy, c-format
-msgid "Configure %s"
-msgstr "Fillteán _Nua"
-
-#: executive-summary/component/e-summary.c:924
-#, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-
-#: executive-summary/component/e-summary.c:938
-#, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr ""
-
-#: executive-summary/component/e-summary.c:956
-msgid "File does not have a place for the services.\n"
-msgstr ""
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr ""
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr ""
-
-#: executive-summary/component/main.c:62
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-#, fuzzy
-msgid "RDF Summary"
-msgstr "Post"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-msgid "Factory for the test bonobo component."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-msgid "Factory for the test component."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:512
-#: executive-summary/test-service/rdf-summary.c:549
-#: executive-summary/test-service/rdf-summary.c:594
-#: widgets/misc/e-messagebox.c:166
-msgid "Error"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:768
-msgid "Update automatically"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:778
-msgid "Update now"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:788
-msgid "Update every "
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:796
-#: filter/filter-datespec.c:83
-msgid "minutes"
-msgstr ""
-
-#: filter/filter-datespec.c:78
-msgid "year"
-msgstr ""
-
-#: filter/filter-datespec.c:78
-msgid "years"
-msgstr ""
-
-#: filter/filter-datespec.c:79
-msgid "month"
-msgstr ""
-
-#: filter/filter-datespec.c:79
-msgid "months"
-msgstr ""
-
-#: filter/filter-datespec.c:80
-msgid "week"
-msgstr ""
-
-#: filter/filter-datespec.c:80
-msgid "weeks"
-msgstr ""
-
-#: filter/filter-datespec.c:81
-msgid "days"
-msgstr ""
-
-#: filter/filter-datespec.c:82
-msgid "hour"
-msgstr ""
-
-#: filter/filter-datespec.c:82
-msgid "hours"
-msgstr ""
-
-#: filter/filter-datespec.c:83
-msgid "minute"
-msgstr ""
-
-#: filter/filter-datespec.c:84
-#, fuzzy
-msgid "second"
-msgstr "Post"
-
-#: filter/filter-datespec.c:84
-msgid "seconds"
-msgstr ""
-
-#: filter/filter-datespec.c:199
-msgid "Oops. You have forgotten to choose a date."
-msgstr ""
-
-#: filter/filter-datespec.c:201
-msgid "Oops. You have chosen an invalid date."
-msgstr ""
-
-#: filter/filter-datespec.c:275
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-
-#: filter/filter-datespec.c:298
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-
-#: filter/filter-datespec.c:338
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:373
-msgid "the current time"
-msgstr ""
-
-#: filter/filter-datespec.c:373
-msgid "a time you specify"
-msgstr ""
-
-#: filter/filter-datespec.c:374
-msgid "a time relative to the current time"
-msgstr ""
-
-#. The label
-#: filter/filter-datespec.c:432
-msgid "Compare against"
-msgstr ""
-
-#: filter/filter-datespec.c:549 filter/filter-datespec.c:709
-msgid "now"
-msgstr ""
-
-#: filter/filter-datespec.c:706
-msgid "<click here to select a date>"
-msgstr ""
-
-#: filter/filter-editor.c:132 filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr ""
-
-#. and now for the action area
-#: filter/filter-filter.c:453
-msgid "Then"
-msgstr ""
-
-#: filter/filter-filter.c:467
-msgid "Add action"
-msgstr ""
-
-#: filter/filter-folder.c:147
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-
-#: filter/filter-folder.c:222 filter/vfolder-rule.c:285
-#: mail/mail-account-gui.c:682
-#, fuzzy
-msgid "Select Folder"
-msgstr "Fillteán _Nua"
-
-#: filter/filter-folder.c:247
-msgid "Enter folder URI"
-msgstr ""
-
-#: filter/filter-folder.c:293
-msgid "<click here to select a folder>"
-msgstr ""
-
-#: filter/filter-input.c:194
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-
-#: filter/filter-part.c:475
-msgid "Test"
-msgstr ""
-
-#: filter/filter-rule.c:626
-msgid "Rule name: "
-msgstr ""
-
-#: filter/filter-rule.c:630
-msgid "Untitled"
-msgstr ""
-
-#: filter/filter-rule.c:646
-msgid "If"
-msgstr ""
-
-#: filter/filter-rule.c:664
-msgid "Execute actions"
-msgstr ""
-
-#: filter/filter-rule.c:668
-msgid "if all criteria are met"
-msgstr ""
-
-#: filter/filter-rule.c:673
-msgid "if any criteria are met"
-msgstr ""
-
-#: filter/filter-rule.c:684
-msgid "Add criterion"
-msgstr ""
-
-#: filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr ""
-
-#: filter/filter.glade.h:5
-#, fuzzy
-msgid "Edit VFolders"
-msgstr "_Fillteán"
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr ""
-
-#: filter/filter.glade.h:8
-msgid "Outgoing"
-msgstr ""
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:130
-#, fuzzy
-msgid "Virtual Folders"
-msgstr "_Fillteán"
-
-#: filter/filter.glade.h:11
-msgid "specific folders only"
-msgstr ""
-
-#: filter/filter.glade.h:12
-#, fuzzy
-msgid "vFolder Sources"
-msgstr "_Fillteán"
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr ""
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr ""
-
-#: filter/filter.glade.h:15
-msgid "with all local folders"
-msgstr ""
-
-#. Automatically generated. Do not edit.
-#: filter/libfilter-i18n.h:2
-msgid "Assign Colour"
-msgstr ""
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Score"
-msgstr ""
-
-#: filter/libfilter-i18n.h:4
-msgid "Attachments"
-msgstr ""
-
-#: filter/libfilter-i18n.h:5
-msgid "Copy to Folder"
-msgstr ""
-
-#: filter/libfilter-i18n.h:6
-msgid "Date received"
-msgstr ""
-
-#: filter/libfilter-i18n.h:7
-msgid "Date sent"
-msgstr ""
-
-#: filter/libfilter-i18n.h:9
-#, fuzzy
-msgid "Deleted"
-msgstr "Scríos"
-
-#: filter/libfilter-i18n.h:10
-msgid "Do Not Exist"
-msgstr ""
-
-#: filter/libfilter-i18n.h:11
-#, fuzzy
-msgid "Draft"
-msgstr "Scríos"
-
-#: filter/libfilter-i18n.h:12
-msgid "Exist"
-msgstr ""
-
-#: filter/libfilter-i18n.h:13
-msgid "Expression"
-msgstr ""
-
-#: filter/libfilter-i18n.h:14
-msgid "Forward to Address"
-msgstr ""
-
-#: filter/libfilter-i18n.h:15
-msgid "Important"
-msgstr ""
-
-#: filter/libfilter-i18n.h:16
-#, fuzzy
-msgid "Is Not"
-msgstr "_Nota"
-
-#: filter/libfilter-i18n.h:17
-msgid "Is"
-msgstr ""
-
-#: filter/libfilter-i18n.h:18
-msgid "Mailing list"
-msgstr ""
-
-#: filter/libfilter-i18n.h:19
-msgid "Message Body"
-msgstr ""
-
-#: filter/libfilter-i18n.h:20
-msgid "Message Header"
-msgstr ""
-
-#: filter/libfilter-i18n.h:21
-msgid "Message was received"
-msgstr ""
-
-#: filter/libfilter-i18n.h:22
-msgid "Message was sent"
-msgstr ""
-
-#: filter/libfilter-i18n.h:23
-#, fuzzy
-msgid "Move to Folder"
-msgstr "Fillteán _Nua"
-
-#: filter/libfilter-i18n.h:24
-#, fuzzy
-msgid "Read"
-msgstr "Scríos"
-
-#: filter/libfilter-i18n.h:25
-msgid "Recipients"
-msgstr ""
-
-#: filter/libfilter-i18n.h:26
-msgid "Regex Match"
-msgstr ""
-
-#: filter/libfilter-i18n.h:27
-msgid "Replied to"
-msgstr ""
-
-#: filter/libfilter-i18n.h:28 filter/score-rule.c:203 filter/score-rule.c:205
-#: mail/message-list.c:1052
-msgid "Score"
-msgstr ""
-
-#: filter/libfilter-i18n.h:29
-#, fuzzy
-msgid "Sender"
-msgstr "Post"
-
-#: filter/libfilter-i18n.h:30
-msgid "Set Status"
-msgstr ""
-
-#: filter/libfilter-i18n.h:31
-msgid "Source Account"
-msgstr ""
-
-#: filter/libfilter-i18n.h:32
-msgid "Specific header"
-msgstr ""
-
-#: filter/libfilter-i18n.h:34
-msgid "Stop Processing"
-msgstr ""
-
-#: filter/libfilter-i18n.h:35 mail/message-list.c:1053
-msgid "Subject"
-msgstr "Abair"
-
-#: filter/libfilter-i18n.h:38
-msgid "contains"
-msgstr ""
-
-#: filter/libfilter-i18n.h:39
-msgid "does not contain"
-msgstr ""
-
-#: filter/libfilter-i18n.h:40
-msgid "does not end with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:41
-msgid "does not exist"
-msgstr ""
-
-#: filter/libfilter-i18n.h:42
-msgid "does not sound like"
-msgstr ""
-
-#: filter/libfilter-i18n.h:43
-msgid "does not start with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:44
-msgid "ends with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:45
-msgid "exists"
-msgstr ""
-
-#: filter/libfilter-i18n.h:46
-msgid "is greater than"
-msgstr ""
-
-#: filter/libfilter-i18n.h:47
-msgid "is less than"
-msgstr ""
-
-#: filter/libfilter-i18n.h:48
-msgid "is not"
-msgstr ""
-
-#: filter/libfilter-i18n.h:49
-msgid "is"
-msgstr ""
-
-#: filter/libfilter-i18n.h:50
-msgid "on or after"
-msgstr ""
-
-#: filter/libfilter-i18n.h:51
-msgid "on or before"
-msgstr ""
-
-#: filter/libfilter-i18n.h:52
-msgid "sounds like"
-msgstr ""
-
-#: filter/libfilter-i18n.h:53
-msgid "starts with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:54
-msgid "was after"
-msgstr ""
-
-#: filter/libfilter-i18n.h:55
-msgid "was before"
-msgstr ""
-
-#: filter/score-editor.c:130
-msgid "Score Rules"
-msgstr ""
-
-#: mail/component-factory.c:329
-msgid "Cannot initialize Evolution's mail component."
-msgstr ""
-
-#: mail/component-factory.c:402
-msgid "Cannot register storage with shell"
-msgstr ""
-
-#: mail/folder-browser-factory.c:209
-#, c-format
-msgid "Properties for \"%s\""
-msgstr ""
-
-#: mail/folder-browser-factory.c:211 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-msgid "Properties"
-msgstr ""
-
-#: mail/folder-browser.c:225
-#, fuzzy
-msgid "Store search as vFolder"
-msgstr "Fillteán _Nua"
-
-#: mail/folder-browser.c:533
-msgid "VFolder on Subject"
-msgstr ""
-
-#: mail/folder-browser.c:536
-msgid "VFolder on Sender"
-msgstr ""
-
-#: mail/folder-browser.c:539
-msgid "VFolder on Recipients"
-msgstr ""
-
-#: mail/folder-browser.c:542 mail/folder-browser.c:733
-msgid "VFolder on Mailing List"
-msgstr ""
-
-#: mail/folder-browser.c:548
-msgid "Filter on Subject"
-msgstr ""
-
-#: mail/folder-browser.c:551
-msgid "Filter on Sender"
-msgstr ""
-
-#: mail/folder-browser.c:554
-msgid "Filter on Recipients"
-msgstr ""
-
-#: mail/folder-browser.c:557 mail/folder-browser.c:732
-msgid "Filter on Mailing List"
-msgstr ""
-
-#: mail/folder-browser.c:568
-#, fuzzy
-msgid "Resend"
-msgstr "Post"
-
-#: mail/folder-browser.c:570
-msgid "Save As..."
-msgstr ""
-
-#: mail/folder-browser.c:577
-msgid "Reply to Sender"
-msgstr ""
-
-#: mail/folder-browser.c:579 mail/mail-view.c:147 ui/evolution-mail.xml.h:60
-msgid "Reply to All"
-msgstr ""
-
-#: mail/folder-browser.c:581 mail/mail-view.c:150 ui/evolution-mail.xml.h:24
-msgid "Forward"
-msgstr "Sheoladh Chuig duine"
-
-#: mail/folder-browser.c:583 ui/evolution-mail.xml.h:26
-#, fuzzy
-msgid "Forward inline"
-msgstr "Sheoladh Chuig duine"
-
-#: mail/folder-browser.c:586
-msgid "Mark as Read"
-msgstr ""
-
-#: mail/folder-browser.c:588
-msgid "Mark as Unread"
-msgstr ""
-
-#: mail/folder-browser.c:593
-#, fuzzy
-msgid "Move to Folder..."
-msgstr "Sábháil 'san _fillteán"
-
-#: mail/folder-browser.c:595
-msgid "Copy to Folder..."
-msgstr ""
-
-#: mail/folder-browser.c:599 ui/evolution-mail.xml.h:81
-#, fuzzy
-msgid "Undelete"
-msgstr "Scríos"
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:609 ui/evolution-mail.xml.h:1
-msgid "Apply Filters"
-msgstr ""
-
-#: mail/folder-browser.c:613
-msgid "Create Rule From Message"
-msgstr ""
-
-#: mail/folder-browser.c:735
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr ""
-
-#: mail/folder-browser.c:736
-#, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-msgid "Evolution mail composer."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-msgid "Evolution mail executive summary component."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-msgid "Evolution mail folder display component."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-msgid "Evolution mail folder factory component."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-msgid "Factory for the Evolution composer."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-msgid "Factory for the Evolution mail component."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-msgid "Factory for the Mail Summary component."
-msgstr ""
-
-#: mail/local-config.glade.h:1
-msgid "Current store format:"
-msgstr ""
-
-#: mail/local-config.glade.h:2
-#, fuzzy
-msgid "Mailbox Format"
-msgstr "Sheoladh Chuig duine"
-
-#: mail/local-config.glade.h:3
-msgid "New store format:"
-msgstr ""
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-
-#: mail/local-config.glade.h:7
-#, fuzzy
-msgid "maildir"
-msgstr "Post"
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr ""
-
-#: mail/local-config.glade.h:9
-msgid "mh"
-msgstr ""
-
-#: mail/mail-accounts.c:121 mail/mail-accounts.c:165
-#, fuzzy
-msgid " (default)"
-msgstr "Scríos"
-
-#: mail/mail-accounts.c:197
-msgid "Disable"
-msgstr ""
-
-#: mail/mail-accounts.c:199 mail/mail-config.glade.h:25
-msgid "Enable"
-msgstr ""
-
-#: mail/mail-accounts.c:280 mail/mail-accounts.c:284
-msgid "Are you sure you want to delete this account?"
-msgstr ""
-
-#: mail/mail-accounts.c:418 mail/mail-accounts.c:422
-msgid "Are you sure you want to delete this news account?"
-msgstr ""
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:536
-msgid "Evolution Account Manager"
-msgstr ""
-
-#: mail/mail-account-editor.c:105
-msgid "You have not filled in all of the required information."
-msgstr ""
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:173
-msgid "Evolution Account Editor"
-msgstr ""
-
-#: mail/mail-autofilter.c:70
-#, c-format
-msgid "Mail to %s"
-msgstr ""
-
-#: mail/mail-autofilter.c:213
-#, fuzzy, c-format
-msgid "Subject is %s"
-msgstr "Abair"
-
-#: mail/mail-autofilter.c:229
-#, c-format
-msgid "Mail from %s"
-msgstr ""
-
-#: mail/mail-autofilter.c:285
-#, c-format
-msgid "%s mailing list"
-msgstr ""
-
-#: mail/mail-autofilter.c:335 mail/mail-autofilter.c:357
-msgid "Add Filter Rule"
-msgstr ""
-
-#: mail/mail-callbacks.c:93
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-
-#: mail/mail-callbacks.c:146
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-
-#: mail/mail-callbacks.c:158
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-
-#: mail/mail-callbacks.c:202
-msgid "You have not set a mail transport method"
-msgstr ""
-
-#: mail/mail-callbacks.c:235
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-
-#: mail/mail-callbacks.c:308
-msgid "You must specify recipients in order to send this message."
-msgstr ""
-
-#: mail/mail-callbacks.c:351
-msgid "You must configure an account before you can send this email."
-msgstr ""
-
-#: mail/mail-callbacks.c:591
-#, c-format
-msgid "On %s, %s wrote:\n"
-msgstr ""
-
-#: mail/mail-callbacks.c:773
-msgid "Forwarded message:\n"
-msgstr ""
-
-#: mail/mail-callbacks.c:876
-msgid "Move message(s) to"
-msgstr ""
-
-#: mail/mail-callbacks.c:878
-msgid "Copy message(s) to"
-msgstr ""
-
-#: mail/mail-callbacks.c:1019
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-
-#: mail/mail-callbacks.c:1056
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-
-#: mail/mail-callbacks.c:1089 mail/mail-display.c:90
-msgid "Overwrite file?"
-msgstr ""
-
-#: mail/mail-callbacks.c:1093 mail/mail-display.c:94
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-
-#: mail/mail-callbacks.c:1137
-msgid "Save Message As..."
-msgstr ""
-
-#: mail/mail-callbacks.c:1139
-msgid "Save Messages As..."
-msgstr ""
-
-#: mail/mail-callbacks.c:1253
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-
-#: mail/mail-callbacks.c:1302 ui/evolution-mail.xml.h:51
-#, fuzzy
-msgid "Print Message"
-msgstr "Post an sceál seo"
-
-#: mail/mail-callbacks.c:1349
-msgid "Printing of message failed"
-msgstr ""
-
-#: mail/mail-config.c:1043 mail/mail-config.c:1046
-msgid "Connecting to server..."
-msgstr ""
-
-#: mail/mail-config.glade.h:1
-msgid " Check for supported types "
-msgstr ""
-
-#: mail/mail-config.glade.h:2
-#, fuzzy
-msgid " color"
-msgstr "_Fillteán"
-
-#: mail/mail-config.glade.h:3
-msgid "Account"
-msgstr ""
-
-#: mail/mail-config.glade.h:4
-msgid "Account Information"
-msgstr ""
-
-#: mail/mail-config.glade.h:5
-msgid "Account Management"
-msgstr ""
-
-#: mail/mail-config.glade.h:6
-#, fuzzy
-msgid "Accounts"
-msgstr "_Oscáil"
-
-#: mail/mail-config.glade.h:8
-msgid "Authentication"
-msgstr ""
-
-#: mail/mail-config.glade.h:9
-msgid "Authentication Type: "
-msgstr ""
-
-#: mail/mail-config.glade.h:10
-msgid "Automatically check for new mail every"
-msgstr ""
-
-#: mail/mail-config.glade.h:12
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-
-#: mail/mail-config.glade.h:18
-#, fuzzy
-msgid "De_fault"
-msgstr "Scríos"
-
-#: mail/mail-config.glade.h:20
-#, fuzzy
-msgid "Done"
-msgstr "_Nota"
-
-#: mail/mail-config.glade.h:21
-#, fuzzy
-msgid "Drafts"
-msgstr "Scríos"
-
-#: mail/mail-config.glade.h:22
-msgid "Drafts folder:"
-msgstr ""
-
-#: mail/mail-config.glade.h:24
-msgid "Email Address:"
-msgstr ""
-
-#: mail/mail-config.glade.h:26
-msgid "Full Name:"
-msgstr ""
-
-#: mail/mail-config.glade.h:27
-msgid "Highlight citations with "
-msgstr ""
-
-#: mail/mail-config.glade.h:29
-msgid "IMAPv4 "
-msgstr ""
-
-#: mail/mail-config.glade.h:30
-msgid "Identity"
-msgstr ""
-
-#: mail/mail-config.glade.h:31
-#, fuzzy
-msgid "Kerberos "
-msgstr "Post"
-
-#: mail/mail-config.glade.h:32
-msgid "Mail Configuration"
-msgstr ""
-
-#: mail/mail-config.glade.h:33
-msgid "Make this my default account"
-msgstr ""
-
-#: mail/mail-config.glade.h:34
-msgid "Mark messages as \"Read\" after:"
-msgstr ""
-
-#: mail/mail-config.glade.h:36
-#, fuzzy
-msgid "News"
-msgstr "_Nua"
-
-#: mail/mail-config.glade.h:38
-msgid "Optional Information"
-msgstr ""
-
-#: mail/mail-config.glade.h:39
-msgid "Organization:"
-msgstr ""
-
-#: mail/mail-config.glade.h:41
-msgid "PGP binary path:"
-msgstr ""
-
-#: mail/mail-config.glade.h:46
-#, fuzzy
-msgid "Qmail maildir "
-msgstr "Post"
-
-#: mail/mail-config.glade.h:47
-msgid "Receiving Email"
-msgstr ""
-
-#: mail/mail-config.glade.h:48
-msgid "Receiving Mail"
-msgstr ""
-
-#: mail/mail-config.glade.h:49
-msgid "Receiving Options"
-msgstr ""
-
-#: mail/mail-config.glade.h:51
-msgid "Required Information"
-msgstr ""
-
-#: mail/mail-config.glade.h:53
-msgid "Select PGP binary"
-msgstr ""
-
-#: mail/mail-config.glade.h:54
-msgid "Send mail in HTML format by default."
-msgstr ""
-
-#: mail/mail-config.glade.h:55
-#, fuzzy
-msgid "Sending Email"
-msgstr "Post"
-
-#: mail/mail-config.glade.h:56
-#, fuzzy
-msgid "Sending Mail"
-msgstr "Post"
-
-#: mail/mail-config.glade.h:58
-#, fuzzy
-msgid "Sent"
-msgstr "Post"
-
-#: mail/mail-config.glade.h:59
-#, fuzzy
-msgid "Sent and Draft Messages"
-msgstr "Post an sceál seo"
-
-#: mail/mail-config.glade.h:60
-#, fuzzy
-msgid "Sent messages folder:"
-msgstr "_Post sceál"
-
-#: mail/mail-config.glade.h:61
-msgid "Server Configuration"
-msgstr ""
-
-#: mail/mail-config.glade.h:62
-#, fuzzy
-msgid "Server Type: "
-msgstr "Post"
-
-#: mail/mail-config.glade.h:63
-msgid "Server requires authentication"
-msgstr ""
-
-#: mail/mail-config.glade.h:64
-msgid "Signature file:"
-msgstr ""
-
-#: mail/mail-config.glade.h:65
-msgid "Sources"
-msgstr ""
-
-#: mail/mail-config.glade.h:66
-#, fuzzy
-msgid "Special Folders"
-msgstr "_Fillteán"
-
-#: mail/mail-config.glade.h:67
-msgid "Standard Unix mbox"
-msgstr ""
-
-#: mail/mail-config.glade.h:68
-msgid "Type"
-msgstr ""
-
-#: mail/mail-config.glade.h:69
-msgid "Use secure connection (SSL)"
-msgstr ""
-
-#: mail/mail-config.glade.h:70
-msgid "Username:"
-msgstr ""
-
-#: mail/mail-config.glade.h:71
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-
-#: mail/mail-config.glade.h:76 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:43 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:29
-msgid "_Edit"
-msgstr ""
-
-#: mail/mail-config-druid.c:99
-msgid ""
-"Please enter your name and email address below. The \"optional\" fields "
-"below do not need to be filled in, unless you wish to include this "
-"information in email you send."
-msgstr ""
-
-#: mail/mail-config-druid.c:101
-msgid ""
-"Please enter information about your incoming mail server below. If you don't "
-"know what kind of server you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-
-#: mail/mail-config-druid.c:105
-msgid ""
-"Please enter information about your outgoing mail protocol below. If you "
-"don't know which protocol you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-
-#: mail/mail-config-druid.c:107
-msgid ""
-"You are almost done with the mail configuration process. The identity, "
-"incoming mail server and outgoing mail transport method which you provided "
-"will be grouped together to make an Evolution mail account. Please enter a "
-"name for this account in the space below. This name will be used for display "
-"purposes only."
-msgstr ""
-
-#. set window title
-#: mail/mail-config-druid.c:445
-msgid "Evolution Account Wizard"
-msgstr ""
-
-#: mail/mail-display.c:194
-msgid "Save Attachment"
-msgstr ""
-
-#: mail/mail-display.c:234
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr ""
-
-#: mail/mail-display.c:295
-msgid "Save to Disk..."
-msgstr ""
-
-#: mail/mail-display.c:297
-#, c-format
-msgid "Open in %s..."
-msgstr ""
-
-#: mail/mail-display.c:299
-msgid "View Inline"
-msgstr ""
-
-#: mail/mail-display.c:334
-msgid "External Viewer"
-msgstr ""
-
-#: mail/mail-display.c:357
-#, c-format
-msgid "View Inline (via %s)"
-msgstr ""
-
-#: mail/mail-display.c:361
-msgid "Hide"
-msgstr ""
-
-#: mail/mail-display.c:1102
-msgid "Open link in browser"
-msgstr ""
-
-#: mail/mail-display.c:1104
-#, fuzzy
-msgid "Save as (FIXME)"
-msgstr "_Post sceál"
-
-#: mail/mail-display.c:1106
-#, fuzzy
-msgid "Copy location (FIXME)"
-msgstr "_Coinne"
-
-#: mail/mail-format.c:518
-#, c-format
-msgid "%s attachment"
-msgstr ""
-
-#: mail/mail-format.c:560
-msgid "Could not parse MIME message. Displaying as source."
-msgstr ""
-
-#: mail/mail-format.c:742
-#, fuzzy
-msgid "Loading message content"
-msgstr "Post an sceál seo"
-
-#: mail/mail-format.c:1046
-msgid "Encrypted message not displayed"
-msgstr ""
-
-#: mail/mail-format.c:1052
-#, fuzzy
-msgid "Encrypted message"
-msgstr "Post an sceál seo"
-
-#: mail/mail-format.c:1053
-msgid "Click icon to decrypt."
-msgstr ""
-
-#: mail/mail-format.c:1137 mail/mail-format.c:1526
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr ""
-
-#: mail/mail-format.c:1145 mail/mail-format.c:1534
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr ""
-
-#: mail/mail-format.c:1747
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr ""
-
-#: mail/mail-format.c:1759
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr ""
-
-#: mail/mail-format.c:1763
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr ""
-
-#: mail/mail-format.c:1797
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr ""
-
-#: mail/mail-format.c:1802
-msgid "Malformed external-body part."
-msgstr ""
-
-#: mail/mail-local.c:337
-#, fuzzy, c-format
-msgid "No such folder %s"
-msgstr "Post an sceál seo"
-
-#: mail/mail-local.c:509
-#, c-format
-msgid "Opening '%s'"
-msgstr ""
-
-#: mail/mail-local.c:787
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr ""
-
-#: mail/mail-local.c:791
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr ""
-
-#: mail/mail-local.c:815
-#, fuzzy
-msgid "Reconfiguring folder"
-msgstr "Fillteán _Nua"
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:844
-msgid "Closing current folder"
-msgstr ""
-
-#: mail/mail-local.c:876
-msgid "Renaming old folder and opening"
-msgstr ""
-
-#: mail/mail-local.c:894
-msgid "Creating new folder"
-msgstr ""
-
-#: mail/mail-local.c:908
-#, fuzzy
-msgid "Copying messages"
-msgstr "_Post sceál"
-
-#: mail/mail-local.c:925
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-
-#: mail/mail-local.c:964
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-
-#: mail/mail-mt.c:190
-#, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-
-#: mail/mail-mt.c:192
-#, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-
-#: mail/mail-mt.c:515 mail/mail-mt.c:544 mail/mail-mt.c:891
-msgid "Working"
-msgstr ""
-
-#: mail/mail-mt.c:679 mail/session.c:98
-msgid "Do you accept?"
-msgstr ""
-
-#: mail/mail-mt.c:873
-#, fuzzy
-msgid "Evolution progress"
-msgstr "Evolution"
-
-#: mail/mail-ops.c:587
-#, c-format
-msgid "Sending \"%s\""
-msgstr ""
-
-#: mail/mail-ops.c:589
-#, fuzzy
-msgid "Sending message"
-msgstr "Post an sceál seo"
-
-#: mail/mail-ops.c:704
-#, fuzzy, c-format
-msgid "Sending message %d of %d"
-msgstr "Post an sceál seo"
-
-#: mail/mail-ops.c:723
-#, fuzzy, c-format
-msgid "Failed on message %d of %d"
-msgstr "_Post sceál"
-
-#: mail/mail-ops.c:725 mail/mail-send-recv.c:475
-msgid "Complete."
-msgstr ""
-
-#: mail/mail-ops.c:811
-#, fuzzy
-msgid "Saving message to folder"
-msgstr "_Post sceál"
-
-#: mail/mail-ops.c:884
-#, fuzzy, c-format
-msgid "Moving messages to %s"
-msgstr "_Post sceál"
-
-#: mail/mail-ops.c:884
-#, fuzzy, c-format
-msgid "Copying messages to %s"
-msgstr "_Post sceál"
-
-#: mail/mail-ops.c:900
-msgid "Moving"
-msgstr ""
-
-#: mail/mail-ops.c:903
-#, fuzzy
-msgid "Copying"
-msgstr "Greamaigh"
-
-#: mail/mail-ops.c:978
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr ""
-
-#: mail/mail-ops.c:1139
-msgid "Forwarded messages"
-msgstr ""
-
-#: mail/mail-ops.c:1180 mail/mail-ops.c:1318
-#, c-format
-msgid "Opening folder %s"
-msgstr ""
-
-#: mail/mail-ops.c:1247
-#, c-format
-msgid "Opening store %s"
-msgstr ""
-
-#: mail/mail-ops.c:1434
-msgid "Expunging folder"
-msgstr ""
-
-#: mail/mail-ops.c:1483
-#, fuzzy, c-format
-msgid "Retrieving message %s"
-msgstr "_Post sceál"
-
-#: mail/mail-ops.c:1550
-#, fuzzy
-msgid "Retrieving messages"
-msgstr "_Post sceál"
-
-#: mail/mail-ops.c:1560
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr ""
-
-#: mail/mail-ops.c:1634
-#, fuzzy
-msgid "Saving messages"
-msgstr "_Post sceál"
-
-#: mail/mail-ops.c:1713
-#, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr ""
-
-#: mail/mail-ops.c:1726
-#, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr ""
-
-#: mail/mail-ops.c:1740
-#, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr ""
-
-#: mail/mail-ops.c:1814
-msgid "Saving attachment"
-msgstr ""
-
-#: mail/mail-ops.c:1829
-#, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr ""
-
-#: mail/mail-ops.c:1857
-#, c-format
-msgid "Could not write data: %s"
-msgstr ""
-
-#: mail/mail-search-dialogue.c:113
-#, fuzzy
-msgid "_Search"
-msgstr "_Fillteán"
-
-#: mail/mail-send-recv.c:138
-msgid "Cancelling ..."
-msgstr ""
-
-#: mail/mail-send-recv.c:233
-msgid "Send & Receive mail"
-msgstr ""
-
-#: mail/mail-send-recv.c:236
-msgid "Receiving"
-msgstr ""
-
-#: mail/mail-send-recv.c:285
-msgid "Updating ..."
-msgstr ""
-
-#: mail/mail-send-recv.c:287 mail/mail-send-recv.c:333
-msgid "Waiting ..."
-msgstr ""
-
-#: mail/mail-send-recv.c:306
-#, fuzzy
-msgid "Sending"
-msgstr "Post"
-
-#: mail/mail-send-recv.c:471
-msgid "Cancelled."
-msgstr ""
-
-#: mail/mail-summary.c:109
-msgid "Incomplete message written on pipe!"
-msgstr ""
-
-#: mail/mail-tools.c:141
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr ""
-
-#: mail/mail-tools.c:188
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr ""
-
-#: mail/mail-tools.c:198
-msgid "Fwd: (no subject)"
-msgstr ""
-
-#: mail/mail-tools.c:215
-#, c-format
-msgid "Forwarded message - %s"
-msgstr ""
-
-#: mail/mail-tools.c:217
-msgid "Forwarded message (no subject)"
-msgstr ""
-
-#: mail/mail-tools.c:414
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-msgstr ""
-
-#: mail/mail-vfolder.c:249
-#, fuzzy
-msgid "VFolders"
-msgstr "_Fillteán"
-
-#: mail/mail-vfolder.c:427
-#, fuzzy
-msgid "New VFolder"
-msgstr "Fillteán _Nua"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/mail-view.c:144 ui/evolution-mail.xml.h:59
-msgid "Reply"
-msgstr "Freagrair"
-
-#: mail/mail-view.c:144 ui/evolution-mail.xml.h:65
-msgid "Reply to the sender of this message"
-msgstr ""
-
-#: mail/mail-view.c:147 ui/evolution-mail.xml.h:63
-msgid "Reply to all recipients of this message"
-msgstr ""
-
-#: mail/mail-view.c:150 ui/evolution-mail.xml.h:28
-msgid "Forward this message"
-msgstr ""
-
-#: mail/mail-view.c:154 ui/evolution-mail.xml.h:56
-msgid "Print the selected message"
-msgstr ""
-
-#: mail/mail-view.c:156 ui/evolution-mail.xml.h:13
-msgid "Delete this message"
-msgstr "Scríos an sceal seo"
-
-#: mail/message-list.c:648
-msgid "Unseen"
-msgstr ""
-
-#: mail/message-list.c:649
-#, fuzzy
-msgid "Seen"
-msgstr "Post"
-
-#: mail/message-list.c:650
-msgid "Answered"
-msgstr ""
-
-#: mail/message-list.c:651
-msgid "Multiple Unseen Messages"
-msgstr ""
-
-#: mail/message-list.c:652
-#, fuzzy
-msgid "Multiple Messages"
-msgstr "Post an sceál seo"
-
-#: mail/message-list.c:656
-msgid "Lowest"
-msgstr ""
-
-#: mail/message-list.c:657
-msgid "Lower"
-msgstr ""
-
-#: mail/message-list.c:661
-msgid "Higher"
-msgstr ""
-
-#: mail/message-list.c:662
-msgid "Highest"
-msgstr ""
-
-#: mail/message-list.c:912
-msgid "?"
-msgstr ""
-
-#: mail/message-list.c:919
-msgid "Today %l:%M %p"
-msgstr ""
-
-#: mail/message-list.c:928
-msgid "Yesterday %l:%M %p"
-msgstr ""
-
-#: mail/message-list.c:940
-msgid "%a %l:%M %p"
-msgstr ""
-
-#: mail/message-list.c:948
-msgid "%b %d %l:%M %p"
-msgstr ""
-
-#: mail/message-list.c:950
-msgid "%b %d %Y"
-msgstr ""
-
-#: mail/message-list.c:1052
-msgid "Flagged"
-msgstr ""
-
-#: mail/message-list.c:1053
-#, fuzzy
-msgid "From"
-msgstr "Ó:"
-
-#: mail/message-list.c:1053
-#, fuzzy
-msgid "Date"
-msgstr "Scríos"
-
-#: mail/message-list.c:1053
-msgid "Received"
-msgstr ""
-
-#: mail/message-list.c:1054
-#, fuzzy
-msgid "To"
-msgstr "Do:"
-
-#: mail/message-list.c:1054
-#, fuzzy
-msgid "Size"
-msgstr "Méid"
-
-#: mail/subscribe-dialog.c:76 shell/e-storage-set-view.c:46
-#, fuzzy
-msgid "Folder"
-msgstr "_Fillteán"
-
-#: mail/subscribe-dialog.c:77
-msgid "Store"
-msgstr ""
-
-#: mail/subscribe-dialog.c:138
-msgid "Display folders starting with:"
-msgstr ""
-
-#: mail/subscribe-dialog.c:168
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:271
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:273
-#, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr ""
-
-#. Construct the app
-#: mail/subscribe-dialog.c:873
-msgid "Manage Subscriptions"
-msgstr ""
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-#, fuzzy
-msgid "Folder name:"
-msgstr "_Fillteán"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-#, fuzzy
-msgid "Folder type:"
-msgstr "_Fillteán"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-msgid "Specify where to create the folder:"
-msgstr ""
-
-#: shell/importer/importer.c:87
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/importer/importer.c:182
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-
-#: shell/importer/importer.c:202 shell/importer/importer.c:233
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-
-#: shell/importer/importer.c:341
-#, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr ""
-
-#: shell/importer/importer.c:351
-msgid "Importing"
-msgstr ""
-
-#: shell/importer/importer.c:359
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-
-#: shell/importer/importer.c:372
-#, c-format
-msgid "Error starting %s"
-msgstr ""
-
-#: shell/importer/importer.c:387
-#, c-format
-msgid "Error loading %s"
-msgstr ""
-
-#: shell/importer/importer.c:402
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-
-#: shell/importer/importer.c:473
-msgid "Automatic"
-msgstr ""
-
-#: shell/importer/importer.c:523
-#, fuzzy
-msgid "Filename:"
-msgstr "_Fillteán"
-
-#: shell/importer/import.glade.h:5 shell/importer/importer.c:528
-#, fuzzy
-msgid "Select a file"
-msgstr "Fillteán _Nua"
-
-#: shell/importer/importer.c:538
-msgid "File type:"
-msgstr ""
-
-#: shell/importer/import.glade.h:4 shell/importer/importer.c:619
-msgid "Import"
-msgstr ""
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr ""
-
-#: shell/importer/import.glade.h:2
-msgid "Evolution Import Utility"
-msgstr ""
-
-#: shell/importer/import.glade.h:3
-msgid "Evolution Importer Utility"
-msgstr ""
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-
-#: shell/e-setup.c:118 shell/e-setup.c:191
-msgid "Evolution installation"
-msgstr ""
-
-#: shell/e-setup.c:122
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-
-#: shell/e-setup.c:123
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr ""
-
-#: shell/e-setup.c:163
-msgid "Could not update files correctly"
-msgstr ""
-
-#: shell/e-setup.c:166 shell/e-setup.c:234
-msgid "Evolution files successfully installed."
-msgstr ""
-
-#: shell/e-setup.c:195
-msgid "This seems to be the first time you are running Evolution."
-msgstr ""
-
-#: shell/e-setup.c:196
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr ""
-
-#: shell/e-setup.c:215
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-
-#: shell/e-setup.c:230
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-
-#: shell/e-setup.c:255
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-
-#: shell/e-setup.c:267
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-
-#: shell/e-shell-folder-creation-dialog.c:99
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-
-#: shell/e-shell-folder-creation-dialog.c:156
-msgid "The specified folder name is not valid."
-msgstr ""
-
-#: shell/e-shell-folder-creation-dialog.c:248
-msgid "Evolution - Create new folder"
-msgstr ""
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-
-#: shell/e-shell-folder-selection-dialog.c:319
-#, fuzzy
-msgid "New..."
-msgstr "_Nua"
-
-#: shell/e-shell-folder-title-bar.c:459 shell/e-shell-folder-title-bar.c:460
-msgid "(Untitled)"
-msgstr ""
-
-#: shell/e-shell-view-menu.c:173
-msgid "Bug buddy was not found in your $PATH."
-msgstr ""
-
-#: shell/e-shell-view-menu.c:179
-msgid "Bug buddy could not be run."
-msgstr ""
-
-#: shell/e-shell-view-menu.c:208
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr ""
-
-#: shell/e-shell-view-menu.c:210
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-
-#: shell/e-shell-view-menu.c:374
-#, fuzzy
-msgid "Go to folder..."
-msgstr "Sábháil 'san _fillteán"
-
-#: shell/e-shell-view.c:148
-msgid "(No folder displayed)"
-msgstr ""
-
-#: shell/e-shell-view.c:1134
-#, fuzzy, c-format
-msgid "%s - Evolution %s"
-msgstr "Evolution"
-
-#: shell/e-shell-view.c:1136
-#, fuzzy, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "Evolution"
-
-#: shell/e-shell.c:378
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr ""
-
-#: shell/e-shell.c:1248
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-
-#: shell/e-shortcuts-view.c:134
-msgid "Create new shortcut group"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:137
-msgid "Group name:"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:260
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:265
-msgid "Don't remove"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:276
-msgid "_Small Icons"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:277
-msgid "Show the shortcuts as small icons"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:279
-msgid "_Large Icons"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:280
-msgid "Show the shortcuts as large icons"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:291
-msgid "_New Group..."
-msgstr ""
-
-#: shell/e-shortcuts-view.c:292
-msgid "Create a new shortcut group"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:294
-msgid "_Remove This Group..."
-msgstr ""
-
-#: shell/e-shortcuts-view.c:295
-msgid "Remove this shortcut group"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:300
-msgid "_Hide the Shortcut Bar"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:301
-msgid "Hide the shortcut bar"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate this shortcut"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:388
-msgid "Remove this shortcut from the shortcut bar"
-msgstr ""
-
-#: shell/e-shortcuts.c:379
-msgid "Error saving shortcuts."
-msgstr ""
-
-#: shell/e-storage-set-view.c:649 ui/evolution-event-editor.xml.h:76
-#: ui/evolution-message-composer.xml.h:53
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:43
-#, fuzzy
-msgid "_View"
-msgstr "_Nua"
-
-#: shell/e-storage-set-view.c:649
-msgid "View the selected folder"
-msgstr ""
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr ""
-
-#: shell/e-storage.c:459
-msgid "No error"
-msgstr ""
-
-#: shell/e-storage.c:461
-msgid "Generic error"
-msgstr ""
-
-#: shell/e-storage.c:463
-msgid "A folder with the same name already exists"
-msgstr ""
-
-#: shell/e-storage.c:465
-msgid "The specified folder type is not valid"
-msgstr ""
-
-#: shell/e-storage.c:467
-msgid "I/O error"
-msgstr ""
-
-#: shell/e-storage.c:469
-msgid "Not enough space to create the folder"
-msgstr ""
-
-#: shell/e-storage.c:471
-msgid "The specified folder was not found"
-msgstr ""
-
-#: shell/e-storage.c:473
-msgid "Function not implemented in this storage"
-msgstr ""
-
-#: shell/e-storage.c:475
-msgid "Permission denied"
-msgstr ""
-
-#: shell/e-storage.c:477
-msgid "Operation not supported"
-msgstr ""
-
-#: shell/e-storage.c:479
-msgid "The specified type is not supported in this storage"
-msgstr ""
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-#, fuzzy
-msgid "The Evolution shell."
-msgstr ""
-"Go raibh maith agat\n"
-"An Fhoireann Evolution\n"
-
-#: shell/main.c:83
-#, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-
-#: shell/main.c:108
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-"Go raibh maith agat\n"
-"An Fhoireann Evolution\n"
-
-#: shell/main.c:139
-msgid "Cannot initialize the Evolution shell."
-msgstr ""
-
-#: shell/main.c:185
-msgid "Disable splash screen"
-msgstr ""
-
-#: shell/main.c:186
-msgid "Send the debugging output of all components to a file."
-msgstr ""
-
-#: shell/main.c:219
-msgid "Cannot initialize the Bonobo component system."
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:2
-msgid "Create new contact"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:4
-#, fuzzy
-msgid "Delete a contact"
-msgstr "Scríos an sceal seo"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-msgid "Find"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:6
-msgid "Find a contact"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:7
-#, fuzzy
-msgid "New contact"
-msgstr "_Coinne"
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-mail.xml.h:49
-#, fuzzy
-msgid "Previews the message to be printed"
-msgstr "Post an sceál seo"
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "Print contacts"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:12 ui/evolution-mail.xml.h:78
-msgid "Stop"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "Stop Loading"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:14
-#, fuzzy
-msgid "View All"
-msgstr "_Nua"
-
-#: ui/evolution-addressbook.xml.h:15
-msgid "View all contacts"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:16
-msgid "_Addressbook Sources..."
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:17
-msgid "_Contact"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-#, fuzzy
-msgid "_Print..."
-msgstr "Priontáil"
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-mail.xml.h:110
-#: ui/evolution-task-editor-dialog.xml.h:88 ui/evolution.xml.h:42
-msgid "_Tools"
-msgstr "_Uirlisí"
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-msgid "Alter preferences"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:4
-#, fuzzy
-msgid "Create a new all day Event"
-msgstr "Scríos an sceal seo"
-
-#: ui/evolution-calendar.xml.h:5
-#, fuzzy
-msgid "Create a new appointment"
-msgstr "Scríos an sceal seo"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:8
-msgid "Go To"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:10
-#, fuzzy
-msgid "Go forward in time"
-msgstr "Sheoladh Chuig duine"
-
-#: ui/evolution-calendar.xml.h:11
-msgid "Go to _Date"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:12
-msgid "Go to _Today"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:14
-msgid "Go to present time"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:15
-#, fuzzy
-msgid "Month"
-msgstr "Priontáil"
-
-#: ui/evolution-calendar.xml.h:17
-msgid "New _Event"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:18 ui/evolution-event-editor.xml.h:29
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "Next"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:20
-msgid "Open Calendar"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Prev"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:22
-#, fuzzy
-msgid "Previews the calendar to be printed"
-msgstr "Post an sceál seo"
-
-#: ui/evolution-calendar.xml.h:25
-msgid "Print calendar"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:26
-msgid "Print this Calendar"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:15
-#, fuzzy
-msgid "Save As"
-msgstr "Sábháil 'san _fillteán"
-
-#: ui/evolution-calendar.xml.h:28
-msgid "Save calendar as something else"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:30
-msgid "Show 1 day"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:226
-#: widgets/misc/e-dateedit.c:422
-msgid "Today"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:35
-msgid "W_ork Week"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:37
-#, fuzzy
-msgid "_Appointment"
-msgstr "_Coinne"
-
-#: ui/evolution-calendar.xml.h:38
-msgid "_Day"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:39
-#, fuzzy
-msgid "_Month"
-msgstr "Priontáil"
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:38
-msgid "_New"
-msgstr "_Nua"
-
-#: ui/evolution-calendar.xml.h:41
-msgid "_Open Calendar"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:43 ui/evolution-mail.xml.h:106
-#: ui/evolution-tasks.xml.h:8
-#, fuzzy
-msgid "_Save As..."
-msgstr "Sábháil 'san _fillteán"
-
-#: ui/evolution-calendar.xml.h:45
-msgid "_Week"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:2
-#, fuzzy
-msgid "Delete this item"
-msgstr "Scríos an sceal seo"
-
-#: ui/evolution-contact-editor.xml.h:3
-#, fuzzy
-msgid "Delete..."
-msgstr "Scríos"
-
-#: ui/evolution-contact-editor.xml.h:4
-msgid "Help"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:5
-#, fuzzy
-msgid "Print En_velope..."
-msgstr "Post an sceál seo"
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-#, fuzzy
-msgid "Print this item"
-msgstr "Scríos an sceal seo"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-mail.xml.h:57 ui/evolution-task-editor-dialog.xml.h:41
-#, fuzzy
-msgid "Print..."
-msgstr "Priontáil"
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:16
-#: ui/evolution-task-editor-dialog.xml.h:51
-#, fuzzy
-msgid "Save _As..."
-msgstr "Sábháil 'san _fillteán"
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-msgid "Save and Close"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:13
-#, fuzzy
-msgid "Send _message to contact..."
-msgstr "_Post sceál"
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:44 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:30
-#, fuzzy
-msgid "_File"
-msgstr "_Fillteán"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:51
-#: ui/evolution-task-editor-dialog.xml.h:85
-#, fuzzy
-msgid "_Save"
-msgstr "Sábháil 'san _fillteán"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-msgid "Actio_ns"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-#, fuzzy
-msgid "Address _Book... (FIXME)"
-msgstr "Sábháil 'san _fillteán"
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-#, fuzzy
-msgid "C_lear"
-msgstr "_Fillteán"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-#, fuzzy
-msgid "C_ut"
-msgstr "Gearr"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-#, fuzzy
-msgid "Chec_k Names (FIXME)"
-msgstr "_Post sceál"
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-#, fuzzy
-msgid "Clear"
-msgstr "_Fillteán"
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-msgid "Clear the selection"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:11
-#, fuzzy
-msgid "Close this appointment"
-msgstr "Scríos an sceal seo"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-#, fuzzy
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "Sábháil 'san _fillteán"
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:7
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "Greamaigh"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-msgid "Copy the selection"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr "Gearr"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Cut the selection"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:18
-#, fuzzy
-msgid "Delete this appointment"
-msgstr "Scríos an sceal seo"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-#, fuzzy
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr "Sábháil 'san _fillteán"
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-#, fuzzy
-msgid "For_ward (FIXME)"
-msgstr "Sheoladh Chuig duine"
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-msgid "Go to the next item"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-msgid "Go to the previous item"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-msgid "In_complete Task (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-msgid "Modify the file's properties"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-msgid "N_ext"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-#, fuzzy
-msgid "Paste"
-msgstr "Priontáil"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-msgid "Paste the clipboard"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:33 ui/evolution-task-editor-dialog.xml.h:36
-msgid "Previous"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-msgid "Print Pre_view"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-#, fuzzy
-msgid "Print S_etup..."
-msgstr "Priontáil"
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-#, fuzzy
-msgid "Print Setup"
-msgstr "Priontáil"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:14
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:239
-msgid "Save"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:43
-msgid "Save the appointment and close the dialog box"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:20
-#: ui/evolution-task-editor-dialog.xml.h:53
-msgid "Save the current file"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:46
-msgid "Schedule _Meeting"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:47
-msgid "Schedule some sort of a meeting"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-mail.xml.h:68
-#: ui/evolution-task-editor-dialog.xml.h:57
-#, fuzzy
-msgid "Select All"
-msgstr "Fillteán _Nua"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-#, fuzzy
-msgid "Select everything"
-msgstr "Fillteán _Nua"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-msgid "Task _Request (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-message-composer.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:63
-#, fuzzy
-msgid "_About..."
-msgstr "Evolution"
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:41
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:27
-msgid "_Close"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:28
-#, fuzzy
-msgid "_Contact (FIXME)"
-msgstr "_Coinne"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-#, fuzzy
-msgid "_Copy"
-msgstr "Greamaigh"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:46
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:34
-#, fuzzy
-msgid "_Help"
-msgstr "_Nota"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-#, fuzzy
-msgid "_Item (FIXME)"
-msgstr "_Coinne"
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-#, fuzzy
-msgid "_Journal Entry (FIXME)"
-msgstr "_Coinne"
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-#, fuzzy
-msgid "_Last Item in Folder (FIXME)"
-msgstr "Sábháil 'san _fillteán"
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-#, fuzzy
-msgid "_Mail Message (FIXME)"
-msgstr "_Post sceál"
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-#, fuzzy
-msgid "_Move to Folder... (FIXME)"
-msgstr "Sábháil 'san _fillteán"
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-#, fuzzy
-msgid "_Note (FIXME)"
-msgstr "_Coinne"
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-#, fuzzy
-msgid "_Paste"
-msgstr "Priontáil"
-
-#: ui/evolution-event-editor.xml.h:69 ui/evolution-task-editor-dialog.xml.h:82
-#: ui/evolution-tasks.xml.h:7
-#, fuzzy
-msgid "_Print"
-msgstr "Priontáil"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:102
-#: ui/evolution-task-editor-dialog.xml.h:83
-#, fuzzy
-msgid "_Properties..."
-msgstr "Priontáil"
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-#, fuzzy
-msgid "_Select All"
-msgstr "Fillteán _Nua"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:41
-#, fuzzy
-msgid "_Task (FIXME)"
-msgstr "_Post sceál"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-#, fuzzy
-msgid "_Unread Item (FIXME)"
-msgstr "_Coinne"
-
-#: ui/evolution-executive-summary.xml.h:1
-msgid "Add Service"
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:3
-msgid "Create a new email"
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:5
-msgid "New Mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:2
-msgid "Apply any new filters to the mail in this box"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:3
-msgid "Change the properties of this folder"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:4
-msgid "Compose"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:5
-#, fuzzy
-msgid "Compose a new message"
-msgstr "Post an sceál seo"
-
-#: ui/evolution-mail.xml.h:6
-#, fuzzy
-msgid "Configure Folder..."
-msgstr "Sábháil 'san _fillteán"
-
-#: ui/evolution-mail.xml.h:8
-msgid "Copy message to a new folder"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:9
-#, fuzzy
-msgid "Copy selected messages to another folder"
-msgstr "Fillteán _Nua"
-
-#: ui/evolution-mail.xml.h:10
-msgid "Create _Virtual Folder From Message"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:12
-#, fuzzy
-msgid "Delete the selected messages"
-msgstr "Scríos an sceal seo"
-
-#: ui/evolution-mail.xml.h:14
-msgid "Display all of the message headers"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:15
-#, fuzzy
-msgid "Edit Message"
-msgstr "_Post sceál"
-
-#: ui/evolution-mail.xml.h:16
-msgid "Edit the current message"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:17
-msgid "Empty _Trash"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:18
-msgid "Expunge"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:19
-msgid "Filter on Se_nder"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:20
-msgid "Filter on _Recipients"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:21
-#, fuzzy
-msgid "Filter on _Subject"
-msgstr "Abair"
-
-#: ui/evolution-mail.xml.h:22
-msgid "Finaly remove all mails tagged for deletion"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:23
-msgid "Forget _Passwords"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:25
-#, fuzzy
-msgid "Forward As"
-msgstr "Sheoladh Chuig duine"
-
-#: ui/evolution-mail.xml.h:27
-msgid "Forward the selected mail to someone"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:29
-msgid "Forward this message in-line with your mail, so you can edit it"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:30
-#, fuzzy
-msgid "Full _Headers"
-msgstr "_Fillteán"
-
-#: ui/evolution-mail.xml.h:31
-#, fuzzy
-msgid "Hide Deleted Messages"
-msgstr "Scríos an sceal seo"
-
-#: ui/evolution-mail.xml.h:32
-#, fuzzy
-msgid "Hide S_elected Messages"
-msgstr "Scríos an sceal seo"
-
-#: ui/evolution-mail.xml.h:33
-#, fuzzy
-msgid "Hide _Deleted Messages"
-msgstr "Scríos an sceal seo"
-
-#: ui/evolution-mail.xml.h:34
-#, fuzzy
-msgid "Hide _Read messages"
-msgstr "Post an sceál seo"
-
-#: ui/evolution-mail.xml.h:35
-msgid "Invert Selection"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:36
-msgid "Manage _Subscriptions..."
-msgstr ""
-
-#: ui/evolution-mail.xml.h:37
-msgid "Mar_k as Read"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:38
-msgid "Mark All as R_ead"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:39
-msgid "Mark As Read"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:40
-msgid "Mark As U_nread"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:41
-msgid "Mark as U_nread"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:42
-msgid "Mark the selected messages as having been read"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:43
-msgid "Mark the selected messages as not having been read"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:44
-#, fuzzy
-msgid "Move"
-msgstr "Scríos"
-
-#: ui/evolution-mail.xml.h:45
-#, fuzzy
-msgid "Move message to a new folder"
-msgstr "Fillteán _Nua"
-
-#: ui/evolution-mail.xml.h:46
-#, fuzzy
-msgid "Move selected messages to another folder"
-msgstr "Fillteán _Nua"
-
-#: ui/evolution-mail.xml.h:47
-msgid "Open in New Window"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:48
-#, fuzzy
-msgid "Open the current message in a new window"
-msgstr "Post an sceál seo"
-
-#: ui/evolution-mail.xml.h:53
-#, fuzzy
-msgid "Print Preview of message..."
-msgstr "Post an sceál seo"
-
-#: ui/evolution-mail.xml.h:54
-msgid "Print message to the printer"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:55
-#, fuzzy
-msgid "Print message..."
-msgstr "Post an sceál seo"
-
-#: ui/evolution-mail.xml.h:58
-msgid "Redirect (FIXME: implement me)"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:61
-#, fuzzy
-msgid "Reply to _All"
-msgstr "Freagrair"
-
-#: ui/evolution-mail.xml.h:62
-#, fuzzy
-msgid "Reply to all"
-msgstr "Freagrair"
-
-#: ui/evolution-mail.xml.h:64
-#, fuzzy
-msgid "Reply to sender"
-msgstr "Freagrair"
-
-#: ui/evolution-mail.xml.h:66
-msgid "S_ource"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:67
-#, fuzzy
-msgid "Save the message into a new file"
-msgstr "Post an sceál seo"
-
-#: ui/evolution-mail.xml.h:69 ui/evolution-subscribe.xml.h:7
-#, fuzzy
-msgid "Select _All"
-msgstr "Fillteán _Nua"
-
-#: ui/evolution-mail.xml.h:70
-msgid "Select _Thread"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:71
-msgid "Send / Receive"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:72
-msgid "Send a reply to the person who sent you this mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:73
-msgid "Send a single mail in reply to all the selected mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:74
-msgid ""
-"Send queued mail\n"
-" and retrieve new mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:76
-msgid "Send queued mail and retrieve new mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:77
-#, fuzzy
-msgid "Show _All"
-msgstr "Post an sceál seo"
-
-#: ui/evolution-mail.xml.h:79
-#, fuzzy
-msgid "Threaded Message list"
-msgstr "Post an sceál seo"
-
-#: ui/evolution-mail.xml.h:80
-#, fuzzy
-msgid "Un-delete the selected messages"
-msgstr "Scríos an sceal seo"
-
-#: ui/evolution-mail.xml.h:82
-msgid "VFolder on Se_nder"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:83
-msgid "VFolder on _Recipients"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:84
-#, fuzzy
-msgid "VFolder on _Subject"
-msgstr "Abair"
-
-#: ui/evolution-mail.xml.h:85
-msgid "View Raw Message Source"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:86
-msgid "Virtual Folder _Editor..."
-msgstr ""
-
-#: ui/evolution-mail.xml.h:87
-msgid "_Apply Filters"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:88
-#, fuzzy
-msgid "_Attachment"
-msgstr "_Coinne"
-
-#: ui/evolution-mail.xml.h:89
-#, fuzzy
-msgid "_Copy to Folder..."
-msgstr "_Fillteán"
-
-#: ui/evolution-mail.xml.h:90
-msgid "_Create Filter From Message"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:92
-msgid "_Expunge"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:93
-#, fuzzy
-msgid "_Filters..."
-msgstr "_Fillteán"
-
-#: ui/evolution-mail.xml.h:94 ui/evolution.xml.h:31
-msgid "_Folder"
-msgstr "_Fillteán"
-
-#: ui/evolution-mail.xml.h:95
-#, fuzzy
-msgid "_Forward"
-msgstr "Sheoladh Chuig duine"
-
-#: ui/evolution-mail.xml.h:96
-msgid "_Inline"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:97 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:98
-#, fuzzy
-msgid "_Mail Message"
-msgstr "_Post sceál"
-
-#: ui/evolution-mail.xml.h:99
-msgid "_Mail Settings..."
-msgstr ""
-
-#: ui/evolution-mail.xml.h:100
-#, fuzzy
-msgid "_Move to Folder..."
-msgstr "Sábháil 'san _fillteán"
-
-#: ui/evolution-mail.xml.h:101
-#, fuzzy
-msgid "_Open Selected Items"
-msgstr "Scríos an sceal seo"
-
-#: ui/evolution-mail.xml.h:103
-#, fuzzy
-msgid "_Quoted"
-msgstr "_Nota"
-
-#: ui/evolution-mail.xml.h:104
-#, fuzzy
-msgid "_Reply"
-msgstr "Freagrair"
-
-#: ui/evolution-mail.xml.h:105
-#, fuzzy
-msgid "_Resend Messages"
-msgstr "_Post sceál"
-
-#: ui/evolution-mail.xml.h:107
-#, fuzzy
-msgid "_Save Message As..."
-msgstr "Sábháil 'san _fillteán"
-
-#: ui/evolution-mail.xml.h:108
-msgid "_Send / Receive"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:109
-msgid "_Threaded"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:111
-#, fuzzy
-msgid "_Undelete"
-msgstr "Scríos"
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-msgid "Close the current file"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:5
-#, fuzzy
-msgid "Encrypt this message with PGP"
-msgstr "Post an sceál seo"
-
-#: ui/evolution-message-composer.xml.h:6
-msgid "F_ormat"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "HTML"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:8
-msgid "Insert a file as text into the message"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert text file..."
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:11
-msgid "Open a file"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "PGP Encrypt"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Sign"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:17
-msgid "Save _Draft"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:18
-#, fuzzy
-msgid "Save in _folder... (FIXME)"
-msgstr "Sábháil 'san _fillteán"
-
-#: ui/evolution-message-composer.xml.h:19
-#, fuzzy
-msgid "Save in folder..."
-msgstr "Sábháil 'san _fillteán"
-
-#: ui/evolution-message-composer.xml.h:21
-msgid "Save the current file with a different name"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:22
-#, fuzzy
-msgid "Save the message in a specified folder"
-msgstr "Post an sceál seo"
-
-#: ui/evolution-message-composer.xml.h:23
-msgid "Send"
-msgstr "Post"
-
-#: ui/evolution-message-composer.xml.h:24
-#, fuzzy
-msgid "Send _Later"
-msgstr "Post"
-
-#: ui/evolution-message-composer.xml.h:25
-#, fuzzy
-msgid "Send _later"
-msgstr "Post"
-
-#: ui/evolution-message-composer.xml.h:26
-msgid "Send the mail in HTML format"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:27
-#, fuzzy
-msgid "Send the message later"
-msgstr "Post an sceál seo"
-
-#: ui/evolution-message-composer.xml.h:28
-#, fuzzy
-msgid "Send the message now"
-msgstr "Post an sceál seo"
-
-#: ui/evolution-message-composer.xml.h:29
-#, fuzzy
-msgid "Send this message now"
-msgstr "Post an sceál seo"
-
-#: ui/evolution-message-composer.xml.h:30
-#, fuzzy
-msgid "Show / hide attachments"
-msgstr "_Coinne"
-
-#: ui/evolution-message-composer.xml.h:31
-#, fuzzy
-msgid "Show _attachments"
-msgstr "_Coinne"
-
-#: ui/evolution-message-composer.xml.h:32
-#, fuzzy
-msgid "Show attachments"
-msgstr "_Coinne"
-
-#: ui/evolution-message-composer.xml.h:33
-#, fuzzy
-msgid "Sign this message with your PGP key"
-msgstr "Post an sceál seo"
-
-#: ui/evolution-message-composer.xml.h:34
-msgid "Toggles whether the BCC field is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:35
-msgid "Toggles whether the CC field is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:36
-msgid "Toggles whether the From chooser is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "_Bcc Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:40
-msgid "_Cc Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:45
-msgid "_From Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:47
-msgid "_Insert"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:48
-#, fuzzy
-msgid "_Insert text file... (FIXME)"
-msgstr "Sábháil 'san _fillteán"
-
-#: ui/evolution-message-composer.xml.h:49
-#, fuzzy
-msgid "_Open..."
-msgstr "_Oscáil"
-
-#: ui/evolution-message-composer.xml.h:50
-#, fuzzy
-msgid "_Reply-To Field"
-msgstr "Freagrair"
-
-#: ui/evolution-message-composer.xml.h:52
-msgid "_Security"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:3
-#, fuzzy
-msgid "F_older"
-msgstr "_Fillteán"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-msgid "Assig_n Task (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-msgid "Meeting Re_quest (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-#, fuzzy
-msgid "Redo"
-msgstr "Scríos"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-#, fuzzy
-msgid "Redo the undone action"
-msgstr "Scríos"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-#, fuzzy
-msgid "Replace"
-msgstr "Freagrair"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-#, fuzzy
-msgid "Replace a string"
-msgstr "Freagrair"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-msgid "Reply to A_ll (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-msgid "S_end Status Report (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-msgid "Save the task and close the dialog box"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "Search again for the same string"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-msgid "Search for a string"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr "Leasú"
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-msgid "Undo the last action"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:26
-#, fuzzy
-msgid "_Appointment (FIXME)"
-msgstr "_Coinne"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-#, fuzzy
-msgid "_Mark Complete (FIXME)"
-msgstr "_Post sceál"
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-msgid "_Reply (FIXME)"
-msgstr ""
-
-#: ui/evolution-tasks.xml.h:2
-#, fuzzy
-msgid "Create a new task"
-msgstr "Scríos an sceal seo"
-
-#: ui/evolution-tasks.xml.h:3
-#, fuzzy
-msgid "New Task"
-msgstr "_Teacs"
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr ""
-
-#: ui/evolution-tasks.xml.h:6
-msgid "Tasks Preferences..."
-msgstr ""
-
-#: ui/evolution-tasks.xml.h:9
-#, fuzzy
-msgid "_Task"
-msgstr "_Teacs"
-
-#: ui/evolution.xml.h:1
-#, fuzzy
-msgid "About Evolution..."
-msgstr "Evolution"
-
-#: ui/evolution.xml.h:3
-msgid "Close this window"
-msgstr ""
-
-#: ui/evolution.xml.h:4
-msgid "Customi_ze Toolbars..."
-msgstr ""
-
-#: ui/evolution.xml.h:5
-msgid "Customize"
-msgstr ""
-
-#: ui/evolution.xml.h:6
-msgid "Customize toolbars"
-msgstr ""
-
-#: ui/evolution.xml.h:7
-msgid "Display a different folder"
-msgstr ""
-
-#: ui/evolution.xml.h:8
-msgid "E_xit"
-msgstr ""
-
-#: ui/evolution.xml.h:9
-msgid "Evolution bar _shortcut"
-msgstr ""
-
-#: ui/evolution.xml.h:10
-msgid "Exit the program"
-msgstr ""
-
-#: ui/evolution.xml.h:11
-msgid "Getting _Started"
-msgstr ""
-
-#: ui/evolution.xml.h:12
-msgid "Import an external file format"
-msgstr ""
-
-#: ui/evolution.xml.h:13
-msgid "Main toolbar"
-msgstr ""
-
-#: ui/evolution.xml.h:14
-msgid "Show information about Evolution"
-msgstr ""
-
-#: ui/evolution.xml.h:15
-msgid "Submit Bug Report"
-msgstr ""
-
-#: ui/evolution.xml.h:16
-msgid "Submit _Bug Report"
-msgstr ""
-
-#: ui/evolution.xml.h:17
-msgid "Submit bug report using Bug Buddy."
-msgstr ""
-
-#: ui/evolution.xml.h:18
-msgid "Toggle whether to show the folder bar"
-msgstr ""
-
-#: ui/evolution.xml.h:19
-msgid "Toggle whether to show the shortcut bar"
-msgstr ""
-
-#: ui/evolution.xml.h:20
-msgid "Using the C_ontact Manager"
-msgstr ""
-
-#: ui/evolution.xml.h:21
-msgid "Using the _Calendar"
-msgstr ""
-
-#: ui/evolution.xml.h:22
-msgid "Using the _Mailer"
-msgstr ""
-
-#: ui/evolution.xml.h:23
-msgid "Work Offline"
-msgstr ""
-
-#: ui/evolution.xml.h:24
-#, fuzzy
-msgid "_About Evolution..."
-msgstr "Evolution"
-
-#: ui/evolution.xml.h:25
-#, fuzzy
-msgid "_Actions"
-msgstr "_Oscáil"
-
-#: ui/evolution.xml.h:32
-#, fuzzy
-msgid "_Folder Bar"
-msgstr "_Fillteán"
-
-#: ui/evolution.xml.h:33
-#, fuzzy
-msgid "_Go to Folder..."
-msgstr "_Fillteán"
-
-#: ui/evolution.xml.h:35
-#, fuzzy
-msgid "_Import file..."
-msgstr "Sábháil 'san _fillteán"
-
-#: ui/evolution.xml.h:36
-msgid "_Index"
-msgstr ""
-
-#: ui/evolution.xml.h:37
-#, fuzzy
-msgid "_Mail message"
-msgstr "_Post sceál"
-
-#: ui/evolution.xml.h:39
-#, fuzzy
-msgid "_New Folder"
-msgstr "Fillteán _Nua"
-
-#: ui/evolution.xml.h:40
-msgid "_Shortcut Bar"
-msgstr ""
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:469
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2475
-msgid "%A, %B %d, %Y"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:390
-msgid "Tentative"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:391
-msgid "Busy"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:392
-msgid "Out of Office"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:393
-msgid "No Information"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:409
-msgid "_Invite Others..."
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:429
-#, fuzzy
-msgid "_Options"
-msgstr "_Oscáil"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:446
-msgid "Show _Only Working Hours"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:459
-msgid "Show _Zoomed Out"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:477
-msgid "_Update Free/Busy"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:495
-msgid "_<<"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:512
-msgid "_Autopick"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:526
-msgid ">_>"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:543
-msgid "_All People and Resources"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:556
-msgid "All _People and One Resource"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:569
-msgid "_Required People"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:582
-msgid "Required People and _One Resource"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:605
-msgid "Meeting _start time:"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:629
-msgid "Meeting _end time:"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:742
-msgid "All Attendees"
-msgstr ""
-
-#: widgets/menus/gal-view-menus.c:177
-msgid "_Current View"
-msgstr ""
-
-#: widgets/menus/gal-view-menus.c:196
-msgid "Define Views"
-msgstr ""
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:421
-msgid "MTWTFSS"
-msgstr ""
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1060 widgets/misc/e-calendar-item.c:2755
-msgid "%B %Y"
-msgstr ""
-
-#: widgets/misc/e-cell-date-edit.c:218 widgets/misc/e-dateedit.c:416
-msgid "Now"
-msgstr ""
-
-#: widgets/misc/e-cell-date-edit.c:242
-msgid "OK"
-msgstr ""
-
-#: widgets/misc/e-cell-date-edit.c:723
-#, c-format
-msgid "The time must be in the format: %s"
-msgstr ""
-
-#: widgets/misc/e-clipped-label.c:107
-msgid "..."
-msgstr ""
-
-#: widgets/misc/e-filter-bar.c:166
-msgid "Save Search"
-msgstr ""
-
-#: widgets/misc/e-filter-bar.c:237
-msgid "Advanced Search"
-msgstr ""
-
-#: widgets/misc/e-filter-bar.c:317
-msgid "Advanced ..."
-msgstr ""
-
-#: widgets/misc/e-messagebox.c:152
-msgid "Information"
-msgstr ""
-
-#: widgets/misc/e-messagebox.c:159
-msgid "Warning"
-msgstr ""
-
-#: widgets/misc/e-messagebox.c:173
-msgid "Question"
-msgstr ""
-
-#: widgets/misc/e-messagebox.c:180
-#, fuzzy
-msgid "Message"
-msgstr "_Post sceál"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:224
-#, fuzzy
-msgid "Don't show this message again."
-msgstr "Post an sceál seo"
-
-#: widgets/misc/e-search-bar.c:148
-msgid "Sear_ch"
-msgstr ""
-
-#: views/addressbook/galview.xml.h:1
-msgid "Adress Cards"
-msgstr ""
-
-#: views/addressbook/galview.xml.h:2
-#, fuzzy
-msgid "By Company"
-msgstr "Greamaigh"
-
-#: views/addressbook/galview.xml.h:3
-msgid "Phone List"
-msgstr ""
-
-#: views/mail/galview.xml.h:1
-#, fuzzy
-msgid "By Sender"
-msgstr "Post"
-
-#: views/mail/galview.xml.h:2
-msgid "By Status"
-msgstr ""
-
-#: views/mail/galview.xml.h:3
-#, fuzzy
-msgid "By Subject"
-msgstr "Abair"
-
-#: views/mail/galview.xml.h:4
-#, fuzzy
-msgid "Messages"
-msgstr "_Post sceál"
-
-#: views/tasks/galview.xml.h:2
-msgid "With Category"
-msgstr ""
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-msgid "The Personal Addressbook Server"
-msgstr ""
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr ""
-
-#: wombat/wombat.c:173
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr ""
-
-#: wombat/wombat.c:185
-msgid "init_corba(): could not initialize GNOME"
-msgstr ""
-
-#: wombat/wombat.c:198
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr ""
-
-#, fuzzy
-#~ msgid "Remove action"
-#~ msgstr "Scríos"
-
-#, fuzzy
-#~ msgid "Mail"
-#~ msgstr "Post"
-
-#, fuzzy
-#~ msgid "Optional"
-#~ msgstr "_Oscáil"
-
-#, fuzzy
-#~ msgid "Select signature file"
-#~ msgstr "Fillteán _Nua"
-
-#, fuzzy
-#~ msgid "_Message Hiding"
-#~ msgstr "_Post sceál"
-
-#, fuzzy
-#~ msgid "New"
-#~ msgstr "_Nua"
-
-#, fuzzy
-#~ msgid "Open..."
-#~ msgstr "_Oscáil"
-
-#, fuzzy
-#~ msgid "Save changes to message..."
-#~ msgstr "Post an sceál seo"
-
-#, fuzzy
-#~ msgid "Subject contains"
-#~ msgstr "Abair"
-
-#, fuzzy
-#~ msgid "FIXME: _Appointment"
-#~ msgstr "_Coinne"
-
-#, fuzzy
-#~ msgid "_Object"
-#~ msgstr "Abair"
-
-#, fuzzy
-#~ msgid "FIXME: __Formatting"
-#~ msgstr "Sheoladh Chuig duine"
-
-#, fuzzy
-#~ msgid "_Toolbars"
-#~ msgstr "_Uirlisí"
-
-#, fuzzy
-#~ msgid "_Forms"
-#~ msgstr "_Fillteán"
-
-#, fuzzy
-#~ msgid "FIXME: _Display Map of Address"
-#~ msgstr "_Post sceál"
-
-#, fuzzy
-#~ msgid "FIXME: _Open Web Page"
-#~ msgstr "_Post sceál"
-
-#, fuzzy
-#~ msgid "FIXME: Forward as _vCard"
-#~ msgstr "Sheoladh Chuig duine"
-
-#, fuzzy
-#~ msgid "FIXME: For_ward"
-#~ msgstr "Sheoladh Chuig duine"
-
-#, fuzzy
-#~ msgid "Hide deleted"
-#~ msgstr "Scríos"
-
-#, fuzzy
-#~ msgid "Hide Subject \"%s\""
-#~ msgstr "Abair"
-
-#, fuzzy
-#~ msgid "_Undo"
-#~ msgstr "Leasú"
-
-#, fuzzy
-#~ msgid "_Print Message"
-#~ msgstr "_Post sceál"
-
-#, fuzzy
-#~ msgid "Rebuild message view"
-#~ msgstr "_Post sceál"
-
-#~ msgid "Clos_e All Items"
-#~ msgstr "_Dún gach rud"
diff --git a/po/gl.po b/po/gl.po
deleted file mode 100644
index 3e7f49d087..0000000000
--- a/po/gl.po
+++ /dev/null
@@ -1,10095 +0,0 @@
-# Galician translation of Evolution.
-# Copyright (C) 2000 Jesús Bravo Álvarez.
-# Jesús Bravo Álvarez <jba@pobox.com>, 2000.
-#
-# Proxecto Trasno - Adaptación do software libre á lingua galega: Se desexas
-# colaborar connosco, podes atopar máis información en http://trasno.gpul.org
-#
-# First Version: 2000-04-07 22:14+0200
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Evolution\n"
-"POT-Creation-Date: 2001-04-14 08:51-0400\n"
-"PO-Revision-Date: 2000-08-26 00:59+0200\n"
-"Last-Translator: Jesús Bravo Álvarez <jba@pobox.com>\n"
-"Language-Team: Galician <trasno@ceu.fi.udc.es>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: addressbook/backend/ebook/e-card.c:3209
-msgid "Card: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3211
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-"\n"
-"Nome: "
-
-#: addressbook/backend/ebook/e-card.c:3212
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-"\n"
-" Prefixo: "
-
-#: addressbook/backend/ebook/e-card.c:3213
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3214
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3215
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3216
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-"\n"
-" Sufixo: "
-
-#: addressbook/backend/ebook/e-card.c:3230
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-"\n"
-"Data de Nacemento: "
-
-#: addressbook/backend/ebook/e-card.c:3241
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-"\n"
-"Enderezo:"
-
-#: addressbook/backend/ebook/e-card.c:3243
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-"\n"
-" Apdo. de Correos: "
-
-#: addressbook/backend/ebook/e-card.c:3244
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3245
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-"\n"
-" Rúa: "
-
-#: addressbook/backend/ebook/e-card.c:3246
-msgid ""
-"\n"
-" City: "
-msgstr ""
-"\n"
-" Cidade: "
-
-#: addressbook/backend/ebook/e-card.c:3247
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-"\n"
-" Rexión: "
-
-#: addressbook/backend/ebook/e-card.c:3248
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-"\n"
-" Código Postal: "
-
-#: addressbook/backend/ebook/e-card.c:3249
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-"\n"
-" País: "
-
-#: addressbook/backend/ebook/e-card.c:3262
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3274
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-"\n"
-"Teléfonos:\n"
-
-#: addressbook/backend/ebook/e-card.c:3277
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-"\n"
-"Teléfono:"
-
-#: addressbook/backend/ebook/e-card.c:3301
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-"\n"
-"Correo Electrónico:\n"
-
-#: addressbook/backend/ebook/e-card.c:3304
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-"\n"
-"Correo Electrónico:"
-
-#: addressbook/backend/ebook/e-card.c:3323
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3329
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-"\n"
-"Zona Horaria: "
-
-#: addressbook/backend/ebook/e-card.c:3337
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3341
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3353
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3354
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-"\n"
-" Nome: "
-
-#: addressbook/backend/ebook/e-card.c:3355
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3356
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3357
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3358
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3362
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-"\n"
-"Categorías: "
-
-#: addressbook/backend/ebook/e-card.c:3363
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-"\n"
-"Comentario: "
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3376
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3379
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-"\n"
-"Clave Pública: "
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:1
-msgid "Factory to import GnomeCard files into Evolution."
-msgstr ""
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:2
-msgid "Imports GnomeCard files into Evolution."
-msgstr ""
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:21
-#: addressbook/backend/ebook/load-pine-addressbook.c:22
-#: addressbook/backend/ebook/test-client-list.c:23
-#: addressbook/backend/ebook/test-client.c:33
-#: addressbook/conduit/address-conduit.c:1092
-#: addressbook/gui/component/addressbook-factory.c:43
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:72 calendar/gui/main.c:57
-msgid "Could not initialize Bonobo"
-msgstr "Non foi posible inicializar Bonobo"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr "Non foi posible cargar o cursor\n"
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr "EBook non cargado\n"
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr "Non foi posible iniciar o servidor wombat"
-
-#: addressbook/conduit/address-conduit.c:655
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr "Non foi posible iniciar wombat"
-
-#: addressbook/conduit/address-conduit.c:687
-#: addressbook/conduit/address-conduit.c:690
-msgid "Could not read pilot's Address application block"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:7
-msgid "Add"
-msgstr "Engadir"
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr "Ani_versario:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr "T_raballo"
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr "_Fax do Traballo"
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-msgid "C_ontacts..."
-msgstr "C_ontactos..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr "Ca_tegorías..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-msgid "Contact Editor"
-msgstr "Editor de Contactos"
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr "Detalles"
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr "Arquivar Como:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-msgid "General"
-msgstr "Xeral"
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr "Novo tipo de teléfono"
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-msgid "No_tes:"
-msgstr "No_tas:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr "Tipos de Teléfono"
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1284
-msgid "Primary Email"
-msgstr "Correo Electrónico Principal"
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr "Quere recibir correo _HTML"
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr "Enderezo da páxina Web:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:74
-msgid "_Add"
-msgstr "_Engadir"
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr "_Enderezo..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr "Nome do _Asistente:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr "Cu_mpreanos:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr "_Traballo"
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-msgid "_Company:"
-msgstr "_Compañía:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/mail-config.glade.h:75 ui/evolution-event-editor.xml.h:57
-#: ui/evolution-mail.xml.h:91 ui/evolution-task-editor-dialog.xml.h:69
-msgid "_Delete"
-msgstr "_Borrar"
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr "_Departamento:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr "Nome _Completo..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-msgid "_Home"
-msgstr "_Particular"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-msgid "_Job title:"
-msgstr "_Posto:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-msgid "_Mobile"
-msgstr "_Móbil"
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr "_Sobrenome:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr "_Oficina:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr "_Profesión:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr "_Cónxuxe:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr "_Este é o enderezo da lista de correo"
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-msgid "Delete Contact?"
-msgstr "¿Borrar Contacto?"
-
-#: addressbook/contact-editor/e-contact-editor.c:603
-#, fuzzy
-msgid "This contact belongs to these categories:"
-msgstr "Elemento(s) pertencentes a estas categorías:"
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-#: addressbook/gui/widgets/e-addressbook-view.c:676
-msgid "Assistant"
-msgstr "Asistente"
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/contact-editor/e-contact-editor.c:1310
-msgid "Business"
-msgstr "Traballo"
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-msgid "Business 2"
-msgstr "Traballo 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#: addressbook/gui/widgets/e-addressbook-view.c:656
-msgid "Business Fax"
-msgstr "Fax do Traballo"
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Callback"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "Car"
-msgstr "Automóbil"
-
-#: addressbook/contact-editor/e-contact-editor.c:1248
-msgid "Company"
-msgstr "Compañía"
-
-#: addressbook/contact-editor/e-contact-editor.c:1249
-#: addressbook/contact-editor/e-contact-editor.c:1311
-msgid "Home"
-msgstr "Particular"
-
-#: addressbook/contact-editor/e-contact-editor.c:1250
-msgid "Home 2"
-msgstr "Particular 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1251
-#: addressbook/gui/widgets/e-addressbook-view.c:657
-msgid "Home Fax"
-msgstr "Fax Particular"
-
-#: addressbook/contact-editor/e-contact-editor.c:1252
-#: addressbook/gui/widgets/e-addressbook-view.c:660
-msgid "ISDN"
-msgstr "RDSI"
-
-#: addressbook/contact-editor/e-contact-editor.c:1253
-msgid "Mobile"
-msgstr "Móbil"
-
-#: addressbook/contact-editor/e-contact-editor.c:1254
-#: addressbook/contact-editor/e-contact-editor.c:1312
-#: calendar/gui/e-meeting-dialog.glade.h:14 mail/mail-config.glade.h:40
-msgid "Other"
-msgstr "Outro"
-
-#: addressbook/contact-editor/e-contact-editor.c:1255
-#: addressbook/gui/widgets/e-addressbook-view.c:662
-msgid "Other Fax"
-msgstr "Outro Fax"
-
-#: addressbook/contact-editor/e-contact-editor.c:1256
-#: addressbook/gui/widgets/e-addressbook-view.c:663
-msgid "Pager"
-msgstr "Localizador (Pager)"
-
-#: addressbook/contact-editor/e-contact-editor.c:1257
-msgid "Primary"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1258
-#: addressbook/gui/widgets/e-addressbook-view.c:664
-msgid "Radio"
-msgstr "Radio"
-
-#: addressbook/contact-editor/e-contact-editor.c:1259
-#: addressbook/gui/widgets/e-addressbook-view.c:665
-msgid "Telex"
-msgstr "Telex"
-
-#: addressbook/contact-editor/e-contact-editor.c:1260
-msgid "TTY/TDD"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:668
-msgid "Email 2"
-msgstr "Correo Electrónico 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/gui/widgets/e-addressbook-view.c:669
-msgid "Email 3"
-msgstr "Correo Electrónico 3"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:223
-msgid "Contact Quick-Add"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-quick-add.c:225
-#, fuzzy
-msgid "Edit Full"
-msgstr "Editar Filtros"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:262
-#: addressbook/gui/widgets/e-addressbook-view.c:643
-#, fuzzy
-msgid "Full Name"
-msgstr "Nome Completo:"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:268
-#, fuzzy
-msgid "E-mail"
-msgstr "Correo Electrónico 2"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr "Enderezo _2:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr "Canadá"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-#, fuzzy
-msgid "Check Address"
-msgstr "Enderezo"
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr "_País:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr "Finlandia"
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr "Estados Unidos"
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr "_Enderezo:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-msgid "_City:"
-msgstr "_Cidade:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr "_Apdo. de Correos:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr "E_stado/Provincia:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr "Código _Postal:"
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:4
-#, fuzzy
-msgid "I"
-msgstr "Se"
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:8
-#, fuzzy
-msgid "Miss"
-msgstr "é"
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr "_Nome:"
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr "_Apelidos:"
-
-#: addressbook/contact-editor/fullname.glade.h:15
-msgid "_Middle:"
-msgstr "_Outros nomes:"
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr "_Sufixo:"
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr "_Tratamento:"
-
-#: addressbook/gui/component/addressbook.c:241
-msgid "As _Minicards"
-msgstr "Como _Minitarxetas"
-
-#: addressbook/gui/component/addressbook.c:247
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr "Como unha _Táboa"
-
-#: addressbook/gui/component/addressbook.c:399
-#, fuzzy, c-format
-msgid "Enter password for %s"
-msgstr "Introduza o contrasinal NNTP para %s@%s"
-
-#: addressbook/gui/component/addressbook.c:427
-msgid "Unable to open addressbook"
-msgstr "Non se pode abrir o libro de enderezos"
-
-#: addressbook/gui/component/addressbook.c:432
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or have tried\n"
-"to access an LDAP server and don't have LDAP support\n"
-"compiled in. If you've entered a URI, check the URI for\n"
-"correctness and reenter. If not, you probably have\n"
-"attempted to access an LDAP server. If you wish to be\n"
-"able to use LDAP, you'll need to download and install\n"
-"OpenLDAP and recompile and install Evolution.\n"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:555
-#, fuzzy
-msgid "Show All"
-msgstr "Ver Todos"
-
-#: addressbook/gui/component/addressbook.c:557
-msgid "Advanced..."
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:587
-#, fuzzy
-msgid "Any field contains"
-msgstr "O corpo contén"
-
-#: addressbook/gui/component/addressbook.c:588
-#, fuzzy
-msgid "Name contains"
-msgstr "contén"
-
-#: addressbook/gui/component/addressbook.c:589
-#, fuzzy
-msgid "Email contains"
-msgstr "contén"
-
-#: addressbook/gui/component/addressbook.c:732
-msgid "The URI that the Folder Browser will display"
-msgstr "O URI que amosará o navegador de carpetas"
-
-#: addressbook/gui/component/addressbook-storage.c:99
-#, fuzzy
-msgid "Other Contacts"
-msgstr "_Novo Contacto"
-
-#: addressbook/gui/component/addressbook-config.c:148
-#, fuzzy
-msgid "LDAP Server"
-msgstr "Servidor LDAP:"
-
-#: addressbook/gui/component/addressbook-config.c:150
-#, fuzzy
-msgid "File"
-msgstr "_Ficheiro"
-
-#: addressbook/gui/component/addressbook-config.c:153
-#, fuzzy
-msgid "Unknown addressbook type"
-msgstr "Non se pode abrir o libro de enderezos"
-
-#: addressbook/gui/component/addressbook-config.c:163
-msgid "None (anonymous mode)"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:165
-#: camel/camel-sasl-plain.c:32 camel/providers/imap/camel-imap-provider.c:80
-#: camel/providers/nntp/camel-nntp-store.c:293
-#: camel/providers/pop3/camel-pop3-provider.c:67 mail/mail-config.glade.h:43
-msgid "Password"
-msgstr "Contrasinal"
-
-#: addressbook/gui/component/addressbook-config.c:167
-msgid "SASL"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:170
-#, fuzzy
-msgid "Unknown auth type"
-msgstr "Erro descoñecido"
-
-#: addressbook/gui/component/addressbook-config.c:179
-#, fuzzy
-msgid "Base"
-msgstr "Pegar"
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "One"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:183
-#, fuzzy
-msgid "Subtree"
-msgstr "Subscribir"
-
-#: addressbook/gui/component/addressbook-config.c:186
-msgid "Unknown scope type"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:353
-msgid "Bind DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:354
-msgid "FIXME Bind DN Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:356
-#: mail/mail-config.glade.h:50
-msgid "Remember this password"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:406
-#: mail/mail-config.glade.h:28
-#, fuzzy
-msgid "Host:"
-msgstr "Horas"
-
-#: addressbook/gui/component/addressbook-config.c:407
-msgid "FIXME Host help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:409
-#, fuzzy
-msgid "Port:"
-msgstr "Prioridade:"
-
-#: addressbook/gui/component/addressbook-config.c:410
-msgid "FIXME Port help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:414
-msgid "Root DN:"
-msgstr "DN Raíz:"
-
-#: addressbook/gui/component/addressbook-config.c:415
-msgid "FIXME Root DN help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:435
-#, fuzzy
-msgid "Search Scope:"
-msgstr "Buscar"
-
-#: addressbook/gui/component/addressbook-config.c:489
-msgid "Authentication:"
-msgstr "Autenticación:"
-
-#: addressbook/gui/component/addressbook-config.c:507
-#: mail/mail-config.glade.h:44
-msgid "Path:"
-msgstr "Camiño:"
-
-#: addressbook/gui/component/addressbook-config.c:508
-msgid "FIXME Path Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:513
-#, fuzzy
-msgid "Create path if it doesn't exist."
-msgstr "O ficheiro non existe."
-
-#: addressbook/gui/component/addressbook-config.c:647
-#, fuzzy
-msgid "Edit Addressbook"
-msgstr "Gardar no libro de enderezos"
-
-#: addressbook/gui/component/addressbook-config.c:649
-#, fuzzy
-msgid "Add Addressbook"
-msgstr "Gardar no libro de enderezos"
-
-#: addressbook/gui/component/addressbook-config.c:665
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:671
-#: mail/mail-config.glade.h:35
-msgid "Name:"
-msgstr "Nome:"
-
-#: addressbook/gui/component/addressbook-config.c:672
-msgid "FIXME Name help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:674
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr "Descrición:"
-
-#: addressbook/gui/component/addressbook-config.c:675
-msgid "FIXME Description help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-#, fuzzy
-msgid "Addressbook Sources"
-msgstr "Engadir Fonte"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: addressbook/gui/widgets/e-addressbook-view.c:578
-#: addressbook/gui/widgets/e-minicard.c:673
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:8 mail/folder-browser.c:597
-#: mail/mail-config.glade.h:19 mail/mail-view.c:156
-#: ui/evolution-addressbook.xml.h:3 ui/evolution-event-editor.xml.h:17
-#: ui/evolution-mail.xml.h:11 ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr "Eliminar"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:23
-msgid "Edit"
-msgstr "Editar"
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-#, fuzzy
-msgid "Name"
-msgstr "Nome:"
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-#, fuzzy
-msgid "URI"
-msgstr "URL:"
-
-#: addressbook/gui/component/e-address-widget.c:365
-#, fuzzy
-msgid "Disable Queries"
-msgstr "Categorías Dispoñibles:"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Enable Queries (Dangerous!)"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:388
-#: addressbook/gui/component/select-names/e-select-names-popup.c:210
-msgid "Edit Contact Info"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:424
-#: addressbook/gui/component/select-names/e-select-names-popup.c:269
-#, fuzzy
-msgid "Add to Contacts"
-msgstr "_Novo Contacto"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-msgid "A Bonobo control for an address popup."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A Bonobo control for displaying an address."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-#, fuzzy
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr ""
-"Utilidade de configuración para o conducto de libro de enderezos de "
-"evolution.\n"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-#, fuzzy
-msgid "Evolution Addressbook minicard viewer"
-msgstr "Conducto de Libro de Enderezos de Evolution"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-msgid "Evolution component for handling contacts."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-#, fuzzy
-msgid "Factory for the Addressbook Minicard control"
-msgstr "Utilidade de configuración para o conducto de axenda de evolution.\n"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-msgid "Factory for the Addressbook's address displayer"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-#, fuzzy
-msgid "Factory for the Addressbook's address popup"
-msgstr "Utilidade de configuración para o conducto de axenda de evolution.\n"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:10
-#, fuzzy
-msgid "Factory for the Evolution addressbook component."
-msgstr "Utilidade de configuración para o conducto de axenda de evolution.\n"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:11
-#, fuzzy
-msgid "Factory for the sample Addressbook control"
-msgstr "Prema aquí para o libro de enderezos"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-#, fuzzy
-msgid "Evolution's addressbook name selection interface."
-msgstr "Conducto de Libro de Enderezos de Evolution"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr ""
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:131
-#: composer/e-msg-composer-attachment-bar.c:468 filter/filter-filter.c:402
-#: filter/filter-rule.c:549 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:265 shell/e-shortcuts-view.c:388
-msgid "Remove"
-msgstr "Quitar"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:146
-#, fuzzy
-msgid "Remove All"
-msgstr "Quitar"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr "Buscar..."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-#, fuzzy
-msgid "Message Recipients"
-msgstr "Destinatarios"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-#, fuzzy
-msgid "Select Names"
-msgstr "Seleccionar un nome da Lista:"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-#, fuzzy
-msgid "Select name from:"
-msgstr "Seleccionar un nome da Lista:"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:158
-msgid "Search"
-msgstr "Buscar"
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr "123"
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr "a"
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr "b"
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr "c"
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr "d"
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr "e"
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr "f"
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr "g"
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr "h"
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr "i"
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr "j"
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr "k"
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr "l"
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr "m"
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr "n"
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-msgid "o"
-msgstr "o"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr "p"
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr "q"
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-msgid "r"
-msgstr "r"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr "s"
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr "t"
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr "u"
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr "v"
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr "w"
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr "x"
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr "y"
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr "z"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:513
-#: addressbook/gui/widgets/e-addressbook-view.c:573
-#: addressbook/gui/widgets/e-minicard.c:466
-#: addressbook/gui/widgets/e-minicard.c:668
-msgid "Save as VCard"
-msgstr "Gardar como VCard"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:574
-#: addressbook/gui/widgets/e-minicard.c:669
-msgid "Send contact to other"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:575
-#: addressbook/gui/widgets/e-minicard.c:670
-#, fuzzy
-msgid "Send message to contact"
-msgstr "Enviar unha mensaxe sen asunto"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:576
-#: addressbook/gui/widgets/e-minicard.c:671 mail/folder-browser.c:572
-#: mail/mail-view.c:154 ui/evolution-addressbook.xml.h:9
-#: ui/evolution-calendar.xml.h:23 ui/evolution-mail.xml.h:50
-#: ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr "Imprimir"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:577
-#: addressbook/gui/widgets/e-minicard.c:672
-#, fuzzy
-msgid "Print Envelope"
-msgstr "_Configuración da Impresión..."
-
-#: addressbook/gui/widgets/e-addressbook-view.c:641
-#, fuzzy
-msgid "* Click here to add a contact *"
-msgstr "<prema aquí para seleccionar unha data>"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:642
-#, fuzzy
-msgid "File As"
-msgstr "Arquivar Como:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:644
-#, fuzzy
-msgid "Email"
-msgstr "Correo Electrónico 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:645
-#, fuzzy
-msgid "Primary Phone"
-msgstr "Correo Electrónico Principal"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:646
-#, fuzzy
-msgid "Assistant Phone"
-msgstr "Asistente"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:647
-#, fuzzy
-msgid "Business Phone"
-msgstr "Traballo 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:648
-msgid "Callback Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:649
-#, fuzzy
-msgid "Company Phone"
-msgstr "Compañía"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:650
-#, fuzzy
-msgid "Home Phone"
-msgstr "Particular 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:651
-msgid "Organization"
-msgstr "Organización"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:652
-#, fuzzy
-msgid "Business Address"
-msgstr "Traballo 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:653
-#, fuzzy
-msgid "Home Address"
-msgstr "Enderezo"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:654
-#, fuzzy
-msgid "Mobile Phone"
-msgstr "Móbil"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:655
-msgid "Car Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:658
-#, fuzzy
-msgid "Business Phone 2"
-msgstr "Traballo 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:659
-#, fuzzy
-msgid "Home Phone 2"
-msgstr "Particular 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:661
-#, fuzzy
-msgid "Other Phone"
-msgstr "_Novo Contacto"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:666
-msgid "TTY"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:667
-#, fuzzy
-msgid "Other Address"
-msgstr "Enderezo"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:670
-msgid "Web Site"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:671
-#, fuzzy
-msgid "Department"
-msgstr "_Departamento:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:672
-#, fuzzy
-msgid "Office"
-msgstr "_Oficina:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:673
-#, fuzzy
-msgid "Title"
-msgstr "_Tratamento:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:674
-#, fuzzy
-msgid "Profession"
-msgstr "_Profesión:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:675
-#, fuzzy
-msgid "Manager"
-msgstr "Localizador (Pager)"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:677
-#, fuzzy
-msgid "Nickname"
-msgstr "_Sobrenome:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:678
-#, fuzzy
-msgid "Spouse"
-msgstr "_Cónxuxe:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:679
-#, fuzzy
-msgid "Note"
-msgstr "No_tas:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:680
-msgid "Free-busy URL"
-msgstr ""
-
-#: addressbook/gui/widgets/e-minicard-control.c:282
-msgid "Save in addressbook"
-msgstr "Gardar no libro de enderezos"
-
-#: addressbook/gui/widgets/e-minicard-view.c:166
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-"\n"
-"\n"
-"Non hai elementos para mostrar nesta vista\n"
-"\n"
-"Faga dobre clic aquí para crear un novo Contacto."
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:26
-msgid "Card View"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr "10 ptos. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr "8 ptos. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr "Corpo"
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr "Inferior:"
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr "Dimensións:"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr "Fonte..."
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr "Fontes"
-
-#: addressbook/printing/e-contact-print.glade.h:9
-#, fuzzy
-msgid "Footer:"
-msgstr "Carpetas"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr "Formato"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-#, fuzzy
-msgid "Header"
-msgstr "Autor"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr "Cabeceiras"
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr "Altura:"
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr "Horizontal"
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr "Esquerda:"
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr "Pestanas coas letras no lateral"
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr "Marxes"
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr "Número de columnas:"
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr "Opcións"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr "Orientación"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr "Páxina"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-#, fuzzy
-msgid "Page Setup:"
-msgstr "Configuración da Páxina:"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr "Papel"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr "Orixe do papel:"
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr "Vertical"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr "Previsualización:"
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr "Imprimir usando sombreado gris"
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr "Invertir nas páxinas pares"
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr "Dereita:"
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr "Seccións:"
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr "Sombreado"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-#, fuzzy
-msgid "Size:"
-msgstr "Tamaño:"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr "Iniciar nunha nova páxina"
-
-#: addressbook/printing/e-contact-print.glade.h:38
-msgid "Style name:"
-msgstr "Nome do estilo:"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr "Superior:"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-msgid "Type:"
-msgstr "Tipo:"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr "Largura:"
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr "Erro comunicando co servidor de axenda"
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr ""
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr ""
-
-#: calendar/gui/calendar-commands.c:266
-msgid "File not found"
-msgstr "Ficheiro non atopado"
-
-#: calendar/gui/calendar-commands.c:290
-msgid "Open calendar"
-msgstr "Abrir axenda"
-
-#: calendar/gui/calendar-commands.c:332
-msgid "Save calendar"
-msgstr "Gardar axenda"
-
-#: calendar/gui/calendar-commands.c:468
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-
-#: calendar/gui/calendar-model.c:360 calendar/gui/calendar-model.c:895
-#: calendar/gui/e-calendar-table.c:330
-msgid "Public"
-msgstr "Público"
-
-#: calendar/gui/calendar-model.c:363 calendar/gui/calendar-model.c:897
-#: calendar/gui/e-calendar-table.c:331
-msgid "Private"
-msgstr "Privado"
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:899
-#: calendar/gui/e-calendar-table.c:332
-msgid "Confidential"
-msgstr "Confidencial"
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/event-editor.c:1592
-#: calendar/gui/event-editor.c:1619
-#: camel/providers/smtp/camel-smtp-transport.c:218
-msgid "Unknown"
-msgstr "Descoñecido"
-
-#: calendar/gui/calendar-model.c:457
-msgid "N"
-msgstr "N"
-
-#: calendar/gui/calendar-model.c:457
-msgid "S"
-msgstr "S"
-
-#: calendar/gui/calendar-model.c:459
-msgid "E"
-msgstr "E"
-
-#: calendar/gui/calendar-model.c:459
-msgid "W"
-msgstr "O"
-
-#: calendar/gui/calendar-model.c:497 calendar/gui/calendar-model.c:1063
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:352 mail/message-list.c:660
-msgid "High"
-msgstr "Alta"
-
-#: calendar/gui/calendar-model.c:499 calendar/gui/calendar-model.c:1065
-#: calendar/gui/calendar-model.c:1569
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:353 mail/message-list.c:659
-msgid "Normal"
-msgstr "Normal"
-
-#: calendar/gui/calendar-model.c:501 calendar/gui/calendar-model.c:1067
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:354 mail/message-list.c:658
-msgid "Low"
-msgstr "Baixa"
-
-#: calendar/gui/calendar-model.c:537 calendar/gui/calendar-model.c:1119
-#: calendar/gui/e-calendar-table.c:406
-msgid "Transparent"
-msgstr "Transparente"
-
-#: calendar/gui/calendar-model.c:540 calendar/gui/calendar-model.c:1121
-#: calendar/gui/e-calendar-table.c:405
-msgid "Opaque"
-msgstr "Opaco"
-
-#: calendar/gui/calendar-model.c:635 calendar/gui/calendar-model.c:1173
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:426
-msgid "Not Started"
-msgstr "Non Iniciada"
-
-#: calendar/gui/calendar-model.c:638 calendar/gui/calendar-model.c:1175
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:427
-msgid "In Progress"
-msgstr "En Progreso"
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1177
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:428
-#, fuzzy
-msgid "Completed"
-msgstr "% Comp_leta:"
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1179
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:429 camel/camel-service.c:550
-#: camel/camel-service.c:586
-#, fuzzy
-msgid "Cancelled"
-msgstr "Cancelar"
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:791 e-util/e-time-utils.c:278
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr "%a %d/%m/%Y %H:%M:%S"
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:794 e-util/e-time-utils.c:287
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr "%a %d/%m/%Y %I:%M:%S %p"
-
-#: calendar/gui/calendar-model.c:799
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-"A data ten que ser introducida no formato: \n"
-"\n"
-"%s"
-
-#: calendar/gui/calendar-model.c:879
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr ""
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:893 calendar/gui/calendar-model.c:1117
-#: calendar/gui/calendar-model.c:1171 calendar/gui/e-calendar-table.c:329
-#: calendar/gui/e-calendar-table.c:404 mail/mail-account-gui.c:973
-#: mail/mail-accounts.c:120 mail/mail-accounts.c:164
-#: mail/mail-config.glade.h:37 shell/e-shell-view.c:1129
-#: widgets/misc/e-cell-date-edit.c:234 widgets/misc/e-dateedit.c:430
-#: widgets/misc/e-dateedit.c:1339 widgets/misc/e-dateedit.c:1454
-msgid "None"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:967
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-"A posición xeográfica ten que ser introducida no formato: \n"
-"\n"
-"45.436845,125.862501"
-
-#: calendar/gui/calendar-model.c:1007
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr "A porcentaxe ten que ser un valor entre 0 e 100, inclusive"
-
-#: calendar/gui/calendar-model.c:1048
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr ""
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1061
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:355
-msgid "Undefined"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1102
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1571
-msgid "Recurring"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1573
-#, fuzzy
-msgid "Assigned"
-msgstr "Asignar Puntuación"
-
-#: calendar/gui/calendar-model.c:1579
-msgid "Yes"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1579
-#, fuzzy
-msgid "No"
-msgstr "Agora"
-
-#: calendar/gui/calendar-summary.c:196
-#, fuzzy
-msgid "%A, %e %B %Y"
-msgstr "%A, %d de %B de %Y"
-
-#: calendar/gui/calendar-summary.c:239 calendar/gui/calendar-summary.c:245
-#, fuzzy
-msgid "%I:%M%p"
-msgstr "%I:%M %p"
-
-#: calendar/gui/calendar-summary.c:437
-#, fuzzy
-msgid "<b>Error loading calendar</b>"
-msgstr "Erro cargando o ficheiro: %s"
-
-#: calendar/gui/calendar-summary.c:449
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:616
-#, fuzzy
-msgid "Display"
-msgstr "_Visualizar"
-
-#: calendar/gui/calendar-summary.c:621
-#, fuzzy
-msgid "Show appointments"
-msgstr "Nova cita..."
-
-#: calendar/gui/calendar-summary.c:629
-#, fuzzy
-msgid "Show tasks"
-msgstr "anexo"
-
-#: calendar/gui/calendar-summary.c:715 calendar/gui/e-itip-control.glade.h:7
-#, fuzzy
-msgid "Loading Calendar"
-msgstr "Imprimir axenda"
-
-#: calendar/gui/control-factory.c:126
-msgid "The URI that the calendar will display"
-msgstr "O URI que amosará a axenda"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr ""
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-msgid "Snooze"
-msgstr "Adiar"
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr "Aceptar"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr ""
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-msgid "Factory for the alarm notification service"
-msgstr ""
-
-#: calendar/gui/alarm-notify/notify-main.c:67 calendar/gui/main.c:52
-#, fuzzy
-msgid "Could not initialize GNOME"
-msgstr "Non foi posible inicializar Bonobo"
-
-#: calendar/gui/alarm-notify/notify-main.c:77
-#, fuzzy
-msgid "Could not create the alarm notify service factory"
-msgstr "Non foi posible crear o directorio temporal: %s"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:189
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr "Alarma o %A, %d de %b de %Y, %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:196
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr "Notificación da súa cita o %A, %d de %b de %Y, %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:207
-msgid "No summary available."
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:2
-#, fuzzy
-msgid "Close"
-msgstr "_Pechar"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-msgid "Edit appointment"
-msgstr "Editar cita"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr "Tempo de adiamento (minutos)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr "05 minutos"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr "10 minutos"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr "12 horas (am/pm)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr "15 minutos"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr "24 horas"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr "30 minutos"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr "60 minutos"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-#, fuzzy
-msgid "Alarms timeout after"
-msgstr "As alarmas sonoras expiran tras"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr "Alarmas Sonoras"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-msgid "Calendar"
-msgstr "Axenda"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr "Preferencias da Axenda"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "Cores"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-#, fuzzy
-msgid "Defaults"
-msgstr "Detalles"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-#, fuzzy
-msgid "Display options"
-msgstr "_Visualizar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:162
-msgid "Due Date"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr "Final do día:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr "Primeiro día da semana:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr "Ven"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:481
-msgid "Friday"
-msgstr "Venres"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-#, fuzzy
-msgid "Highlight"
-msgstr "Día salientado:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr "Lun"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:477
-msgid "Monday"
-msgstr "Luns"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:45
-msgid "Pick a color"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:165
-msgid "Priority"
-msgstr "Prioridade"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-#, fuzzy
-msgid "Remind me of all appointments"
-msgstr "Nova cita..."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-#, fuzzy
-msgid "Reminders"
-msgstr "Autor"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr "Sáb"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:482
-msgid "Saturday"
-msgstr "Sábado"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-#, fuzzy
-msgid "Show"
-msgstr "Ver Todos"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-#, fuzzy
-msgid "Show appointment end times"
-msgstr "Nova cita..."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr "Amosar números de semana"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr "Inicio do día:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr "Dom"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:483
-msgid "Sunday"
-msgstr "Domingo"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-#, fuzzy
-msgid "TaskPad"
-msgstr "Tarefa"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr "Xov"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:480
-msgid "Thursday"
-msgstr "Xoves"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-#, fuzzy
-msgid "Time divisions:"
-msgstr "Dimensións:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr "Formato da hora:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr "Mar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:478
-msgid "Tuesday"
-msgstr "Martes"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr "Alarmas Visuais"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr "Mér"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:479
-msgid "Wednesday"
-msgstr "Mércores"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-#, fuzzy
-msgid "Work week"
-msgstr "semana"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:78
-msgid "seconds."
-msgstr "segundos."
-
-#: calendar/gui/dialogs/delete-comp.c:70
-#, fuzzy, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr ""
-"¿Está seguro de que quere\n"
-"borrar este contacto?"
-
-#: calendar/gui/dialogs/delete-comp.c:73
-#, fuzzy
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr ""
-"¿Está seguro de que quere\n"
-"borrar este contacto?"
-
-#: calendar/gui/dialogs/delete-comp.c:79
-#, fuzzy, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr ""
-"¿Está seguro de que quere\n"
-"borrar este contacto?"
-
-#: calendar/gui/dialogs/delete-comp.c:82
-#, fuzzy
-msgid "Are you sure you want to delete this untitled task?"
-msgstr ""
-"¿Está seguro de que quere\n"
-"borrar este contacto?"
-
-#: calendar/gui/dialogs/delete-comp.c:88
-#, fuzzy, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr ""
-"¿Está seguro de que quere\n"
-"borrar este contacto?"
-
-#: calendar/gui/dialogs/delete-comp.c:91
-#, fuzzy
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr ""
-"¿Está seguro de que quere\n"
-"borrar este contacto?"
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr "% Comp_leta:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:158
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr "Clasificación"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-#, fuzzy
-msgid "Date & Time"
-msgstr "Data de envío"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-#, fuzzy
-msgid "Date Completed:"
-msgstr "% Comp_leta:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-msgid "Pri_vate"
-msgstr "Pri_vado"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-#, fuzzy
-msgid "Progress"
-msgstr "En Progreso"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr "Pú_blico"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-#, fuzzy
-msgid "Sta_rt Date:"
-msgstr "Data de _Inicio:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-msgid "Su_mmary:"
-msgstr "_Resume:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr "Tarefa"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-#, fuzzy
-msgid "URL:"
-msgstr "URL:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr "_Confidencial"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Contacts..."
-msgstr "_Contactos..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-#, fuzzy
-msgid "_Due Date:"
-msgstr "_Departamento:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-msgid "_Priority:"
-msgstr "_Prioridade:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "_Status:"
-msgstr "_Estado:"
-
-#: calendar/gui/dialogs/task-editor.c:697
-msgid "Edit Task"
-msgstr "Editar Tarefa"
-
-#: calendar/gui/dialogs/task-editor.c:703 calendar/gui/event-editor.c:379
-msgid "No summary"
-msgstr "Sen resume"
-
-#: calendar/gui/dialogs/task-editor.c:709 calendar/gui/event-editor.c:385
-#, c-format
-msgid "Appointment - %s"
-msgstr "Cita - %s"
-
-#: calendar/gui/dialogs/task-editor.c:712 calendar/gui/event-editor.c:388
-#, c-format
-msgid "Task - %s"
-msgstr "Tarefa - %s"
-
-#: calendar/gui/dialogs/task-editor.c:715 calendar/gui/event-editor.c:391
-#, c-format
-msgid "Journal entry - %s"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:157
-#, fuzzy
-msgid "Categories"
-msgstr "categorías"
-
-#: calendar/gui/e-calendar-table.c:159
-#, fuzzy
-msgid "Completion Date"
-msgstr "Completada"
-
-#: calendar/gui/e-calendar-table.c:160
-#, fuzzy
-msgid "End Date"
-msgstr "Hora de _finalización:"
-
-#: calendar/gui/e-calendar-table.c:161
-#, fuzzy
-msgid "Start Date"
-msgstr "Data de _Inicio:"
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Geographical Position"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:164
-#, fuzzy
-msgid "Percent complete"
-msgstr "Marcar a tarefa como completa"
-
-#: calendar/gui/e-calendar-table.c:166
-#, fuzzy
-msgid "Summary"
-msgstr "_Resume"
-
-#: calendar/gui/e-calendar-table.c:167
-#, fuzzy
-msgid "Transparency"
-msgstr "Transparente"
-
-#: calendar/gui/e-calendar-table.c:168
-#, fuzzy
-msgid "URL"
-msgstr "URL:"
-
-#: calendar/gui/e-calendar-table.c:169
-msgid "Alarms"
-msgstr "Alarmas"
-
-#: calendar/gui/e-calendar-table.c:170
-#, fuzzy
-msgid "Click here to add a task"
-msgstr "Prema aquí para o libro de enderezos"
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "0%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "10%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "20%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "30%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:378
-#, c-format
-msgid "40%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:379
-#, c-format
-msgid "50%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:380
-#, c-format
-msgid "60%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:381
-#, c-format
-msgid "70%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:382
-#, c-format
-msgid "80%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:383
-#, c-format
-msgid "90%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:384
-#, c-format
-msgid "100%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:551
-msgid "Mark Complete"
-msgstr "Marcar como Completa"
-
-#: calendar/gui/e-calendar-table.c:552
-msgid "Mark the task complete"
-msgstr "Marcar a tarefa como completa"
-
-#: calendar/gui/e-calendar-table.c:557
-#, fuzzy
-msgid "Edit this task..."
-msgstr "Editar esta cita..."
-
-#: calendar/gui/e-calendar-table.c:558
-#, fuzzy
-msgid "Edit the task"
-msgstr "Editar Tarefa"
-
-#: calendar/gui/e-calendar-table.c:560
-#: ui/evolution-task-editor-dialog.xml.h:19
-#, fuzzy
-msgid "Delete this task"
-msgstr "Borrar a tarefa"
-
-#: calendar/gui/e-calendar-table.c:561
-msgid "Delete the task"
-msgstr "Borrar a tarefa"
-
-#: calendar/gui/e-day-view-time-item.c:519
-#, c-format
-msgid "%02i minute divisions"
-msgstr ""
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:274 calendar/gui/e-day-view.c:1294
-#: calendar/gui/e-week-view-main-item.c:325
-msgid "%A %d %B"
-msgstr "%A, %d de %B"
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:278 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:334
-msgid "%a %d %b"
-msgstr "%a %d de %b"
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:282 calendar/gui/e-day-view.c:1321
-#: calendar/gui/e-week-view-main-item.c:348
-msgid "%d %b"
-msgstr "%d de %b"
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:570 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:617
-msgid "am"
-msgstr "am"
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:573 calendar/gui/e-week-view.c:303
-#: calendar/gui/print.c:616
-msgid "pm"
-msgstr "pm"
-
-#: calendar/gui/e-day-view.c:3146 ui/evolution-calendar.xml.h:16
-#, fuzzy
-msgid "New Appointment"
-msgstr "Nova cita..."
-
-#: calendar/gui/e-day-view.c:3148 calendar/gui/e-week-view.c:3280
-#, fuzzy
-msgid "New All Day Event"
-msgstr "Evento de día _completo"
-
-#: calendar/gui/e-day-view.c:3153 calendar/gui/e-week-view.c:3285
-#, fuzzy
-msgid "Go to Today"
-msgstr "Ir a hoxe"
-
-#: calendar/gui/e-day-view.c:3155 calendar/gui/e-week-view.c:3287
-#, fuzzy
-msgid "Go to Date..."
-msgstr "Ir á data"
-
-#: calendar/gui/e-day-view.c:3162 calendar/gui/e-week-view.c:3293
-#: mail/folder-browser.c:566 ui/evolution-calendar.xml.h:19
-#: ui/evolution-message-composer.xml.h:10
-#, fuzzy
-msgid "Open"
-msgstr "_Abrir"
-
-#: calendar/gui/e-day-view.c:3164 calendar/gui/e-week-view.c:3295
-#, fuzzy
-msgid "Delete this Appointment"
-msgstr "Borrar esta cita"
-
-#: calendar/gui/e-day-view.c:3166 calendar/gui/e-week-view.c:3297
-#: ui/evolution-event-editor.xml.h:45
-#, fuzzy
-msgid "Schedule Meeting"
-msgstr "FIXME: Programar Reunión"
-
-#: calendar/gui/e-day-view.c:3175 calendar/gui/e-week-view.c:3310
-#, fuzzy
-msgid "Make this Occurrence Movable"
-msgstr "Gardar o ficheiro actual"
-
-#: calendar/gui/e-day-view.c:3177 calendar/gui/e-week-view.c:3312
-#, fuzzy
-msgid "Delete this Occurrence"
-msgstr "Borrar este elemento"
-
-#: calendar/gui/e-day-view.c:3179
-#, fuzzy
-msgid "Delete all Occurrences"
-msgstr "Borrar un contacto"
-
-#: calendar/gui/e-itip-control.c:161
-#, fuzzy
-msgid "I couldn't update your calendar file!\n"
-msgstr "Non foi posible crear un calendario en `%s'"
-
-#: calendar/gui/e-itip-control.c:167 calendar/gui/e-itip-control.c:510
-#, fuzzy
-msgid "Component successfully updated."
-msgstr "Ficheiros de Evolution instalados con éxito."
-
-#: calendar/gui/e-itip-control.c:173
-msgid "There was an error loading the calendar file."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:197
-msgid "I couldn't open your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:458 calendar/gui/e-itip-control.c:529
-msgid "I couldn't load your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:470
-#, fuzzy
-msgid "I couldn't read your calendar file!\n"
-msgstr "Non foi posible crear un calendario en `%s'"
-
-#: calendar/gui/e-itip-control.c:483
-msgid "This is a reply from someone who was uninvited!"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:499
-#, fuzzy
-msgid "I couldn't update your calendar store."
-msgstr "Non foi posible crear un calendario en `%s'"
-
-#: calendar/gui/e-itip-control.c:540
-msgid "I couldn't delete the calendar component!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:550
-#, fuzzy
-msgid "Component successfully deleted."
-msgstr "Ficheiros de Evolution instalados con éxito."
-
-#: calendar/gui/e-itip-control.c:694
-#, fuzzy
-msgid "I don't recognize this type of calendar component."
-msgstr "Utilidade de configuración para o conducto de axenda de evolution.\n"
-
-#: calendar/gui/e-itip-control.c:780
-#, fuzzy
-msgid "Add to Calendar"
-msgstr "Axenda"
-
-#: calendar/gui/e-itip-control.c:814
-#, fuzzy
-msgid " Accept "
-msgstr "Contas"
-
-#: calendar/gui/e-itip-control.c:815
-#, fuzzy
-msgid " Decline "
-msgstr "Eliminar"
-
-#: calendar/gui/e-itip-control.c:816
-msgid " Tentative "
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:860
-#, fuzzy
-msgid "Update Calendar"
-msgstr "_Abrir axenda"
-
-#: calendar/gui/e-itip-control.c:883
-#, fuzzy
-msgid "Cancel Meeting"
-msgstr "FIXME: Programar Reunión"
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, fuzzy, no-c-format
-msgid "%P %%"
-msgstr "%A, %d de %B"
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:4
-#, fuzzy
-msgid "Calendar Message"
-msgstr "Axenda"
-
-#: calendar/gui/e-itip-control.glade.h:5 mail/mail-format.c:619
-#, fuzzy
-msgid "Date:"
-msgstr "Pegar"
-
-#: calendar/gui/e-itip-control.glade.h:8
-#, fuzzy
-msgid "Loading calendar..."
-msgstr "Imprimir axenda"
-
-#: calendar/gui/e-itip-control.glade.h:9
-#, fuzzy
-msgid "Organizer:"
-msgstr "Organización:"
-
-#: calendar/gui/e-itip-control.glade.h:10
-#, fuzzy
-msgid "Server Message:"
-msgstr "Mover Mensaxe"
-
-#: calendar/gui/e-itip-control.glade.h:11
-#, fuzzy
-msgid "Summary:"
-msgstr "_Resume:"
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:13
-msgid "date-start"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-msgid "Attendee"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-#, fuzzy
-msgid "Attendee address"
-msgstr "Enderezo"
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-msgid "Attendees: "
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-#, fuzzy
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr "FIXME: Programar Reunión"
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-#, fuzzy
-msgid "Chair"
-msgstr "Automóbil"
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-#, fuzzy
-msgid "Meeting Invitations"
-msgstr "Hora do _inicio da reunión:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-#, fuzzy
-msgid "Optional Participant"
-msgstr "Información Opcional"
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-#, fuzzy
-msgid "Organizer: "
-msgstr "Organización:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:15
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid "RSVP"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:18
-#, fuzzy
-msgid ""
-"Request\n"
-"Meeting"
-msgstr "FIXME: Programar Reunión"
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-#, fuzzy
-msgid "Required Participant"
-msgstr "Persoas _Requiridas"
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-#, fuzzy
-msgid "Role"
-msgstr "Móbil"
-
-#: calendar/gui/e-meeting-dialog.glade.h:22
-#, fuzzy
-msgid ""
-"Schedule\n"
-"Time"
-msgstr "FIXME: Programar Reunión"
-
-#: calendar/gui/e-meeting-dialog.glade.h:24 filter/libfilter-i18n.h:33
-#: mail/message-list.c:1052
-#, fuzzy
-msgid "Status"
-msgstr "_Estado:"
-
-#: calendar/gui/e-tasks.c:149 calendar/gui/e-tasks.c:469
-#: calendar/gui/e-tasks.c:502
-msgid "All"
-msgstr ""
-
-#: calendar/gui/e-tasks.c:155
-#, fuzzy
-msgid "Category:"
-msgstr ""
-"\n"
-"Categorías: "
-
-#: calendar/gui/e-tasks.c:298
-#, fuzzy, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "Non foi posible cargar a axenda en `%s'"
-
-#: calendar/gui/e-tasks.c:310
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr "O método requirido para cargar `%s' non está soportado"
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:342
-msgid "%d %B"
-msgstr "%d de %b"
-
-#: calendar/gui/e-week-view.c:3278 calendar/gui/e-week-view.c:3301
-#, fuzzy
-msgid "New Appointment..."
-msgstr "Nova cita..."
-
-#: calendar/gui/e-week-view.c:3314
-#, fuzzy
-msgid "Delete All Occurrences"
-msgstr "Fontes"
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr "Evento de día _completo"
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-#, fuzzy
-msgid "Appointment"
-msgstr "Citas:"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-#, fuzzy
-msgid "Appointment Basics"
-msgstr "Citas:"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-#, fuzzy
-msgid "Custom recurrence"
-msgstr "Fontes"
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr "Cada"
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-msgid "Exceptions"
-msgstr "Excepcións"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-#, fuzzy
-msgid "Modify"
-msgstr "Luns"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-#, fuzzy
-msgid "No recurrence"
-msgstr "Fontes"
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1579
-msgid "Play a sound"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-#, fuzzy
-msgid "Preview"
-msgstr "Previsualización:"
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-#, fuzzy
-msgid "Recurrence"
-msgstr "Fontes"
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-#, fuzzy
-msgid "Recurrence Rule"
-msgstr "Fontes"
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-#, fuzzy
-msgid "Reminder"
-msgstr "Autor"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1588
-#, fuzzy
-msgid "Run a program"
-msgstr "_Executar programa:"
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1585
-#, fuzzy
-msgid "Send an email"
-msgstr "Recibindo correo de %s"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-#, fuzzy
-msgid "Settings..."
-msgstr "_Configuración"
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1582
-#, fuzzy
-msgid "Show a dialog"
-msgstr "Amosar un día"
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-#, fuzzy
-msgid "_End time:"
-msgstr "Hora de _finalización:"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Start time:"
-msgstr "Hora de _comezo:"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Starting date:"
-msgstr "Data de _comezo:"
-
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:36
-msgid "after"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:37
-msgid "before"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "day(s)"
-msgstr "día(s)"
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-#, fuzzy
-msgid "end of appointment"
-msgstr "Editar cita"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-#, fuzzy
-msgid "for"
-msgstr "cuarto"
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-#, fuzzy
-msgid "hour(s)"
-msgstr "horas"
-
-#: calendar/gui/event-editor-dialog.glade.h:40 mail/mail-config.glade.h:77
-#, fuzzy
-msgid "minute(s)"
-msgstr "minutos"
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "month(s)"
-msgstr "mes(es)"
-
-#: calendar/gui/event-editor-dialog.glade.h:42
-#, fuzzy
-msgid "start of appointment"
-msgstr "Editar cita"
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-#, fuzzy
-msgid "until"
-msgstr "Sen_título"
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "week(s)"
-msgstr "semana(s)"
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "year(s)"
-msgstr "ano(s)"
-
-#: calendar/gui/event-editor.c:373
-msgid "Edit Appointment"
-msgstr "Editar Cita"
-
-#: calendar/gui/event-editor.c:451
-msgid "on"
-msgstr ""
-
-#: calendar/gui/event-editor.c:476 filter/filter-datespec.c:81
-msgid "day"
-msgstr "día"
-
-#: calendar/gui/event-editor.c:603
-#, fuzzy
-msgid "on the"
-msgstr "mes"
-
-#: calendar/gui/event-editor.c:610
-#, fuzzy
-msgid "th"
-msgstr "4"
-
-#: calendar/gui/event-editor.c:756
-#, fuzzy
-msgid "occurrences"
-msgstr "Fontes"
-
-#: calendar/gui/event-editor.c:873
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr ""
-
-#: calendar/gui/event-editor.c:1534
-#, fuzzy, c-format
-msgid " %d days"
-msgstr "días"
-
-#: calendar/gui/event-editor.c:1536
-#, fuzzy
-msgid " 1 day"
-msgstr "Amosar un día"
-
-#: calendar/gui/event-editor.c:1539
-#, fuzzy, c-format
-msgid " %d weeks"
-msgstr "semanas"
-
-#: calendar/gui/event-editor.c:1541
-#, fuzzy
-msgid " 1 week"
-msgstr "Amosar unha semana"
-
-#: calendar/gui/event-editor.c:1544
-#, fuzzy, c-format
-msgid " %d hours"
-msgstr "horas"
-
-#: calendar/gui/event-editor.c:1546
-#, fuzzy
-msgid " 1 hour"
-msgstr "hora"
-
-#: calendar/gui/event-editor.c:1549
-#, fuzzy, c-format
-msgid " %d minutes"
-msgstr "minutos"
-
-#: calendar/gui/event-editor.c:1551
-#, fuzzy
-msgid " 1 minute"
-msgstr "10 minutos"
-
-#: calendar/gui/event-editor.c:1554
-#, fuzzy, c-format
-msgid " %d seconds"
-msgstr " segundos"
-
-#: calendar/gui/event-editor.c:1556
-#, fuzzy
-msgid " 1 second"
-msgstr " segundos"
-
-#: calendar/gui/event-editor.c:1603
-#, fuzzy
-msgid " before start of appointment"
-msgstr "Crear unha nova cita"
-
-#: calendar/gui/event-editor.c:1605
-#, fuzzy
-msgid " after start of appointment"
-msgstr "Crear unha nova cita"
-
-#: calendar/gui/event-editor.c:1613
-#, fuzzy
-msgid " before end of appointment"
-msgstr "Borrar esta cita"
-
-#: calendar/gui/event-editor.c:1615
-#, fuzzy
-msgid " after end of appointment"
-msgstr "Crear unha nova cita"
-
-#: calendar/gui/event-editor.c:3123 calendar/gui/print.c:1097
-#: calendar/gui/print.c:1099 calendar/gui/print.c:1100
-msgid "%a %b %d %Y"
-msgstr "%a, %d de %b de %Y"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-#, fuzzy
-msgid "Evolution calendar executive summary component."
-msgstr "Non se pode inicializar o compoñente de correo de Evolution."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-#, fuzzy
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr "Conducto de Axenda de Evolution"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-#, fuzzy
-msgid "Factory for the Calendar Summary component."
-msgstr "Utilidade de configuración para o conducto de axenda de evolution.\n"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-#, fuzzy
-msgid "Factory for the Evolution calendar component."
-msgstr "Utilidade de configuración para o conducto de axenda de evolution.\n"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-#, fuzzy
-msgid "Factory for the calendar iTip view control"
-msgstr "Utilidade de configuración para o conducto de axenda de evolution.\n"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-#, fuzzy
-msgid "Factory for the sample Calendar control"
-msgstr "Utilidade de configuración para o conducto de axenda de evolution.\n"
-
-#: calendar/gui/gnome-cal.c:700
-#, fuzzy, c-format
-msgid "Could not open the folder in `%s'"
-msgstr ""
-"Non é posible abrir a carpeta `%s':\n"
-"%s"
-
-#: calendar/gui/gnome-cal.c:711
-#, fuzzy, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr "O método requirido para cargar `%s' non está soportado"
-
-#: calendar/gui/goto-dialog.glade.h:1
-#, fuzzy
-msgid "April"
-msgstr "abril"
-
-#: calendar/gui/goto-dialog.glade.h:2
-#, fuzzy
-msgid "August"
-msgstr "agosto"
-
-#: calendar/gui/goto-dialog.glade.h:3
-#, fuzzy
-msgid "December"
-msgstr "decembro"
-
-#: calendar/gui/goto-dialog.glade.h:4
-#, fuzzy
-msgid "February"
-msgstr "febreiro"
-
-#: calendar/gui/goto-dialog.glade.h:5
-#, fuzzy
-msgid "Go To Date"
-msgstr "Ir á data"
-
-#: calendar/gui/goto-dialog.glade.h:6
-#, fuzzy
-msgid "Go To Today"
-msgstr "Ir a hoxe"
-
-#: calendar/gui/goto-dialog.glade.h:7
-#, fuzzy
-msgid "January"
-msgstr "xaneiro"
-
-#: calendar/gui/goto-dialog.glade.h:8
-#, fuzzy
-msgid "July"
-msgstr "xullo"
-
-#: calendar/gui/goto-dialog.glade.h:9
-#, fuzzy
-msgid "June"
-msgstr "xuño"
-
-#: calendar/gui/goto-dialog.glade.h:10
-#, fuzzy
-msgid "March"
-msgstr "marzo"
-
-#: calendar/gui/goto-dialog.glade.h:11
-#, fuzzy
-msgid "May"
-msgstr "Luns"
-
-#: calendar/gui/goto-dialog.glade.h:12
-#, fuzzy
-msgid "November"
-msgstr "novembro"
-
-#: calendar/gui/goto-dialog.glade.h:13
-#, fuzzy
-msgid "October"
-msgstr "outubro"
-
-#: calendar/gui/goto-dialog.glade.h:14
-#, fuzzy
-msgid "September"
-msgstr "setembro"
-
-#: calendar/gui/print.c:300
-msgid "1st"
-msgstr "1"
-
-#: calendar/gui/print.c:300
-msgid "2nd"
-msgstr "2"
-
-#: calendar/gui/print.c:300
-msgid "3rd"
-msgstr "3"
-
-#: calendar/gui/print.c:300
-msgid "4th"
-msgstr "4"
-
-#: calendar/gui/print.c:300
-msgid "5th"
-msgstr "5"
-
-#: calendar/gui/print.c:301
-msgid "6th"
-msgstr "6"
-
-#: calendar/gui/print.c:301
-msgid "7th"
-msgstr "7"
-
-#: calendar/gui/print.c:301
-msgid "8th"
-msgstr "8"
-
-#: calendar/gui/print.c:301
-msgid "9th"
-msgstr "9"
-
-#: calendar/gui/print.c:301
-msgid "10th"
-msgstr "10"
-
-#: calendar/gui/print.c:302
-msgid "11th"
-msgstr "11"
-
-#: calendar/gui/print.c:302
-msgid "12th"
-msgstr "12"
-
-#: calendar/gui/print.c:302
-msgid "13th"
-msgstr "13"
-
-#: calendar/gui/print.c:302
-msgid "14th"
-msgstr "14"
-
-#: calendar/gui/print.c:302
-msgid "15th"
-msgstr "15"
-
-#: calendar/gui/print.c:303
-msgid "16th"
-msgstr "16"
-
-#: calendar/gui/print.c:303
-msgid "17th"
-msgstr "17"
-
-#: calendar/gui/print.c:303
-msgid "18th"
-msgstr "18"
-
-#: calendar/gui/print.c:303
-msgid "19th"
-msgstr "19"
-
-#: calendar/gui/print.c:303
-msgid "20th"
-msgstr "20"
-
-#: calendar/gui/print.c:304
-msgid "21st"
-msgstr "21"
-
-#: calendar/gui/print.c:304
-msgid "22nd"
-msgstr "22"
-
-#: calendar/gui/print.c:304
-msgid "23rd"
-msgstr "23"
-
-#: calendar/gui/print.c:304
-msgid "24th"
-msgstr "24"
-
-#: calendar/gui/print.c:304
-msgid "25th"
-msgstr "25"
-
-#: calendar/gui/print.c:305
-msgid "26th"
-msgstr "26"
-
-#: calendar/gui/print.c:305
-msgid "27th"
-msgstr "27"
-
-#: calendar/gui/print.c:305
-msgid "28th"
-msgstr "28"
-
-#: calendar/gui/print.c:305
-msgid "29th"
-msgstr "29"
-
-#: calendar/gui/print.c:305
-msgid "30th"
-msgstr "30"
-
-#: calendar/gui/print.c:306
-msgid "31st"
-msgstr "31"
-
-#: calendar/gui/print.c:362
-msgid "Su"
-msgstr "Do"
-
-#: calendar/gui/print.c:362
-msgid "Mo"
-msgstr "Lu"
-
-#: calendar/gui/print.c:362
-msgid "Tu"
-msgstr "Ma"
-
-#: calendar/gui/print.c:362
-msgid "We"
-msgstr "Me"
-
-#: calendar/gui/print.c:362
-msgid "Th"
-msgstr "Xo"
-
-#: calendar/gui/print.c:362
-msgid "Fr"
-msgstr "Ve"
-
-#: calendar/gui/print.c:362
-msgid "Sa"
-msgstr "Sa"
-
-#: calendar/gui/print.c:948 views/tasks/galview.xml.h:1
-msgid "Tasks"
-msgstr "Tarefas"
-
-#. Day
-#: calendar/gui/print.c:1078
-msgid "Current day (%a %b %d %Y)"
-msgstr "Día actual (%a, %d de %b de %Y)"
-
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1096
-msgid "%a %b %d"
-msgstr "%a, %d de %b"
-
-#: calendar/gui/print.c:1093
-msgid "%a %d %Y"
-msgstr "%a %d de %Y"
-
-#: calendar/gui/print.c:1104
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr "Semana actual (%s - %s)"
-
-# Isto está mal, o %a é o nome de semana
-#. Month
-#: calendar/gui/print.c:1112
-msgid "Current month (%b %Y)"
-msgstr "Mes actual (%b de %Y)"
-
-#. Year
-#: calendar/gui/print.c:1119
-msgid "Current year (%Y)"
-msgstr "Ano actual (%Y)"
-
-#: calendar/gui/print.c:1156
-msgid "Print Calendar"
-msgstr "Imprimir axenda"
-
-#: calendar/gui/print.c:1321 mail/mail-callbacks.c:1342
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:24
-#: ui/evolution-mail.xml.h:52
-msgid "Print Preview"
-msgstr "Previsualizar da Impresión"
-
-#: calendar/gui/tasks-control.c:108
-#, fuzzy
-msgid "The URI of the tasks folder to display"
-msgstr "O URI que amosará a axenda"
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-
-#: calendar/gui/weekday-picker.c:315 calendar/gui/weekday-picker.c:410
-msgid "SMTWTFS"
-msgstr "DLMMXVS"
-
-#: camel/camel-cipher-context.c:169
-#, fuzzy
-msgid "Signing is not supported by this cipher"
-msgstr "O tipo especificado non está soportado neste almacenamento"
-
-#: camel/camel-cipher-context.c:207
-#, fuzzy
-msgid "Clearsigning is not supported by this cipher"
-msgstr "O tipo especificado non está soportado neste almacenamento"
-
-#: camel/camel-cipher-context.c:245
-#, fuzzy
-msgid "Verifying is not supported by this cipher"
-msgstr "O tipo especificado non está soportado neste almacenamento"
-
-#: camel/camel-cipher-context.c:286
-#, fuzzy
-msgid "Encryption is not supported by this cipher"
-msgstr "O tipo especificado non está soportado neste almacenamento"
-
-#: camel/camel-cipher-context.c:326
-#, fuzzy
-msgid "Decryption is not supported by this cipher"
-msgstr "O tipo especificado non está soportado neste almacenamento"
-
-#: camel/camel-filter-driver.c:534 camel/camel-filter-driver.c:543
-#, fuzzy
-msgid "Syncing folders"
-msgstr "Sincronizando \"%s\""
-
-#: camel/camel-filter-driver.c:643
-#, fuzzy
-msgid "Unable to open spool folder"
-msgstr "Non se pode abrir o libro de enderezos"
-
-#: camel/camel-filter-driver.c:652
-#, fuzzy
-msgid "Unable to process spool folder"
-msgstr ""
-"Non foi posible crear a carpeta `%s':\n"
-"%s"
-
-#: camel/camel-filter-driver.c:666
-#, fuzzy
-msgid "Getting message %d (%d%%)"
-msgstr "Escribindo a mensaxe %d de %d"
-
-#: camel/camel-filter-driver.c:670 camel/camel-filter-driver.c:679
-#, fuzzy, c-format
-msgid "Failed message %d"
-msgstr "_Mensaxe"
-
-#: camel/camel-filter-driver.c:671
-#, fuzzy
-msgid "Cannot open message"
-msgstr ""
-"Non é posible obter a mensaxe: %s\n"
-" %s"
-
-#: camel/camel-filter-driver.c:690 camel/camel-filter-driver.c:788
-#, fuzzy
-msgid "Syncing folder"
-msgstr "Sincronizando \"%s\""
-
-#: camel/camel-filter-driver.c:694 camel/camel-filter-driver.c:793
-#, fuzzy
-msgid "Complete"
-msgstr "% Comp_leta:"
-
-#: camel/camel-filter-driver.c:748
-#, fuzzy, c-format
-msgid "Getting message %d of %d"
-msgstr "Escribindo a mensaxe %d de %d"
-
-#: camel/camel-filter-driver.c:753 camel/camel-filter-driver.c:771
-#, fuzzy, c-format
-msgid "Failed at message %d of %d"
-msgstr "Escribindo a mensaxe %d de %d"
-
-#: camel/camel-filter-driver.c:866
-#, fuzzy, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr "Erro gardando o ficheiro: %s"
-
-#: camel/camel-filter-driver.c:871
-#, fuzzy, c-format
-msgid "Error executing filter: %s: %s"
-msgstr "Erro gardando o ficheiro: %s"
-
-#: camel/camel-filter-search.c:439 camel/camel-filter-search.c:445
-#, fuzzy, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr "Erro gardando o ficheiro: %s"
-
-#: camel/camel-folder-search.c:328
-#, fuzzy, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-"Erro na expresión regular '%s':\n"
-"%s"
-
-#: camel/camel-folder-search.c:338
-#, fuzzy, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr ""
-"Erro na expresión regular '%s':\n"
-"%s"
-
-#: camel/camel-folder-search.c:485 camel/camel-folder-search.c:513
-msgid "(match-all) requires a single bool result"
-msgstr ""
-
-#: camel/camel-folder-search.c:559
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr ""
-
-#: camel/camel-folder-search.c:670 camel/camel-folder-search.c:714
-msgid "Invalid type in body-contains, expecting string"
-msgstr ""
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:92 camel/camel-lock.c:111 camel/camel-movemail.c:138
-#: camel/camel-movemail.c:185
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "Non foi posible crear o ficheiro de bloqueo para %s: %s"
-
-#: camel/camel-lock.c:151 camel/camel-movemail.c:219
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr ""
-
-#: camel/camel-lock.c:201
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr ""
-
-#: camel/camel-lock.c:255
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr ""
-
-#: camel/camel-movemail.c:101
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:148
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr "Non foi posible abrir o ficheiro de correo %s: %s"
-
-#: camel/camel-movemail.c:158
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr "Non foi posible abrir o ficheiro de correo temporal %s: %s"
-
-#: camel/camel-movemail.c:199
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:245
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr "Erro lendo o ficheiro de correo: %s"
-
-#: camel/camel-movemail.c:256
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr "Erro escribindo o ficheiro temporal de correo: %s"
-
-#: camel/camel-movemail.c:274
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr "Erro ó almacenar o correo no ficheiro temporal %s: %s"
-
-#: camel/camel-movemail.c:306
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr "Non foi posible crear unha canalización: %s"
-
-#: camel/camel-movemail.c:318
-#, c-format
-msgid "Could not fork: %s"
-msgstr "Non foi posible facer fork: %s"
-
-#: camel/camel-movemail.c:356
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr "O programa movemail fallou: %s"
-
-#: camel/camel-movemail.c:357
-msgid "(Unknown error)"
-msgstr "(Erro descoñecido)"
-
-#: camel/camel-movemail.c:587
-#, fuzzy, c-format
-msgid "Error copying mail temp file: %s"
-msgstr "Erro escribindo o ficheiro temporal de correo: %s"
-
-#: camel/camel-pgp-context.c:186
-#, fuzzy, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr "Introduza o seu contrasinal de PGP/GPG."
-
-#: camel/camel-pgp-context.c:189
-#, fuzzy, c-format
-msgid "Please enter your %s passphrase"
-msgstr "Introduza o seu contrasinal de PGP/GPG."
-
-#: camel/camel-pgp-context.c:509
-msgid "No plaintext to sign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:516 camel/camel-pgp-context.c:688
-#: camel/camel-pgp-context.c:1021 camel/camel-pgp-context.c:1235
-msgid "No password provided."
-msgstr "Non se indicou un contrasinal."
-
-#: camel/camel-pgp-context.c:522 camel/camel-pgp-context.c:694
-#: camel/camel-pgp-context.c:877 camel/camel-pgp-context.c:1028
-#: camel/camel-pgp-context.c:1242
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr "Non foi posible crear unha canalización co GPG/PGP: %s"
-
-#: camel/camel-pgp-context.c:681
-msgid "No plaintext to clearsign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:871
-msgid "No plaintext to verify."
-msgstr ""
-
-#: camel/camel-pgp-context.c:888
-#, fuzzy, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "Non foi posible crear unha canalización: %s"
-
-#: camel/camel-pgp-context.c:1011
-msgid "No plaintext to encrypt."
-msgstr ""
-
-#: camel/camel-pgp-context.c:1037
-msgid "No recipients specified"
-msgstr ""
-
-#: camel/camel-pgp-context.c:1227
-msgid "No ciphertext to decrypt."
-msgstr ""
-
-#: camel/camel-provider.c:131
-#, c-format
-msgid "Could not load %s: Module loading not supported on this system."
-msgstr ""
-
-#: camel/camel-provider.c:140
-#, c-format
-msgid "Could not load %s: %s"
-msgstr "Non foi posible cargar %s: %s"
-
-#: camel/camel-provider.c:148
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr ""
-
-#: camel/camel-remote-store.c:186
-#, c-format
-msgid "%s server %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:190
-#, c-format
-msgid "%s service for %s on %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:240
-#, fuzzy
-msgid "Connection cancelled"
-msgstr "Cancelada"
-
-#: camel/camel-remote-store.c:243
-#: camel/providers/smtp/camel-smtp-transport.c:261
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr "Non foi posible conectarse a %s (porto %d): %s"
-
-#: camel/camel-remote-store.c:244
-msgid "(unknown host)"
-msgstr "(máquina descoñecida)"
-
-#: camel/camel-remote-store.c:325 camel/camel-remote-store.c:387
-#: camel/camel-remote-store.c:458
-#: camel/providers/imap/camel-imap-command.c:264
-#, fuzzy
-msgid "Operation cancelled"
-msgstr "Abrir axenda"
-
-#: camel/camel-remote-store.c:464
-#, fuzzy
-msgid "Server unexpectedly disconnected"
-msgstr "O servidor rexeitou o nome de usuario"
-
-#: camel/camel-sasl-anonymous.c:33
-msgid "Anonymous"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:35
-#, fuzzy
-msgid "This option will connect to the server using an anonymous login."
-msgstr ""
-"Esta opción conectarase ó servidor IMAP usando un contrasinal sen cifrar."
-
-#: camel/camel-sasl-anonymous.c:110 camel/camel-sasl-plain.c:87
-#, fuzzy
-msgid "Authentication failed."
-msgstr "Autenticación"
-
-#: camel/camel-sasl-anonymous.c:119
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:131
-#, fuzzy, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr ""
-"Erro cargando a información do filtro:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:143
-#, fuzzy, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr ""
-"Erro cargando a información do filtro:\n"
-"%s"
-
-#: camel/camel-sasl-cram-md5.c:35
-msgid "CRAM-MD5"
-msgstr ""
-
-#: camel/camel-sasl-cram-md5.c:37
-#, fuzzy
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-"Esta opción conectarase ó servidor IMAP usando autenticación Kerberos 4."
-
-#: camel/camel-sasl-digest-md5.c:43
-msgid "DIGEST-MD5"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:45
-#, fuzzy
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-"Esta opción conectarase ó servidor IMAP usando un contrasinal sen cifrar."
-
-#: camel/camel-sasl-digest-md5.c:810
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:819
-msgid "Server challenge invalid\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:825
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:847
-msgid "Server response did not contain authorization data\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:865
-msgid "Server response contained incomplete authorization data\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:875
-msgid "Server response does not match\n"
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "Kerberos 4"
-msgstr "Kerberos 4"
-
-#: camel/camel-sasl-kerberos4.c:42
-#, fuzzy
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr ""
-"Esta opción conectarase ó servidor IMAP usando autenticación Kerberos 4."
-
-#: camel/camel-sasl-kerberos4.c:161
-#, fuzzy, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr "Non foi posible crear unha canalización: %s"
-
-#: camel/camel-sasl-kerberos4.c:218
-#: camel/providers/imap/camel-imap-store.c:417
-#, fuzzy
-msgid "Bad authentication response from server."
-msgstr "Resposta non agardada do servidor IMAP: %s"
-
-#: camel/camel-sasl-plain.c:34
-#, fuzzy
-msgid "This option will connect to the server using a simple password."
-msgstr ""
-"Esta opción conectarase ó servidor IMAP usando un contrasinal sen cifrar."
-
-#: camel/camel-search-private.c:110
-#, fuzzy, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr "Erro escribindo á caixa de correo temporal: %s"
-
-#: camel/camel-service.c:152
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr "O URL '%s' necesita unha parte co nome do usuario"
-
-#: camel/camel-service.c:160
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr "O URL '%s' necesita unha parte co nome de máquina"
-
-#: camel/camel-service.c:168
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr "O URL '%s' necesita unha parte co camiño"
-
-#: camel/camel-service.c:554
-#, fuzzy, c-format
-msgid "Resolving: %s"
-msgstr "Probando \"%s\""
-
-#: camel/camel-service.c:581
-#, c-format
-msgid "Failure in name lookup: %s"
-msgstr ""
-
-#: camel/camel-service.c:606
-#, c-format
-msgid "Host lookup failed: %s: host not found"
-msgstr ""
-
-#: camel/camel-service.c:608
-#, c-format
-msgid "Host lookup failed: %s: unknown reason"
-msgstr ""
-
-#: camel/camel-session.c:57
-msgid "Virtual folder email provider"
-msgstr ""
-
-#: camel/camel-session.c:59
-msgid "For reading mail as a query of another set of folders"
-msgstr ""
-
-#: camel/camel-session.c:274 camel/camel-session.c:364
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr "Non hai ningún fornecedor dispoñible para o protocolo `%s'"
-
-#: camel/camel-session.c:462
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"Non foi posible crear o directorio %s:\n"
-"%s"
-
-#. Fill in the new fields
-#: camel/camel-store.c:380 mail/mail-ops.c:994 mail/mail-ops.c:1001
-#: mail/mail-ops.c:1019 mail/mail-ops.c:1020
-#, fuzzy
-msgid "Trash"
-msgstr "Tarefa"
-
-#: camel/camel-url.c:289
-#, fuzzy, c-format
-msgid "Could not parse URL `%s'"
-msgstr ""
-"Non foi posible abrir o ficheiro `%s':\n"
-"%s"
-
-#: camel/camel-vee-folder.c:451
-#, fuzzy, c-format
-msgid "No such message %s in %s"
-msgstr "Re-enviar esta mensaxe"
-
-#: camel/camel-vee-folder.c:545
-#, fuzzy, c-format
-msgid "No such message: %s"
-msgstr "Re-enviar esta mensaxe"
-
-#: camel/providers/imap/camel-imap-command.c:209
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "Resposta non agardada do servidor IMAP: %s"
-
-#: camel/providers/imap/camel-imap-command.c:217
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr "O comando IMAP fallou: %s"
-
-#: camel/providers/imap/camel-imap-command.c:218 shell/e-storage.c:481
-msgid "Unknown error"
-msgstr "Erro descoñecido"
-
-#: camel/providers/imap/camel-imap-command.c:272
-msgid "Server response ended too soon."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:456
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:490
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-folder.c:172
-#, c-format
-msgid "Could not load summary for %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-folder.c:351
-#, fuzzy
-msgid "Scanning IMAP folder"
-msgstr "Examinando as carpetas en \"%s\""
-
-#: camel/providers/imap/camel-imap-folder.c:986
-#: camel/providers/imap/camel-imap-folder.c:1197
-#, fuzzy
-msgid "This message is not currently available"
-msgstr ""
-"Esta mensaxe non ten asunto.\n"
-"¿Enviar realmente?"
-
-#: camel/providers/imap/camel-imap-folder.c:1016
-#: camel/providers/imap/camel-imap-folder.c:1231
-msgid "Could not find message body in FETCH response."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:43 mail/mail-config.glade.h:11
-#, fuzzy
-msgid "Checking for new mail"
-msgstr "Crear un novo contacto"
-
-#: camel/providers/imap/camel-imap-provider.c:45
-#, fuzzy
-msgid "Check for new messages in all folders"
-msgstr "Marcando mensaxes na carpeta \"%s\""
-
-#: camel/providers/imap/camel-imap-provider.c:48 shell/e-shell-view.c:484
-msgid "Folders"
-msgstr "Carpetas"
-
-#: camel/providers/imap/camel-imap-provider.c:50
-#, fuzzy
-msgid "Show only subscribed folders"
-msgstr "Abrindo as mensaxes da carpeta \"%s\""
-
-#: camel/providers/imap/camel-imap-provider.c:52
-msgid "Override server-supplied folder namespace"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:54
-#, fuzzy
-msgid "Namespace"
-msgstr "Nome:"
-
-#: camel/providers/imap/camel-imap-provider.c:57
-msgid "Apply filters to new messages in INBOX on this server"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:63
-msgid "IMAPv4"
-msgstr "IMAPv4"
-
-#: camel/providers/imap/camel-imap-provider.c:65
-msgid "For reading and storing mail on IMAP servers."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:82
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr ""
-"Esta opción conectarase ó servidor IMAP usando un contrasinal sen cifrar."
-
-#: camel/providers/imap/camel-imap-store.c:440
-#, fuzzy, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr ""
-"Non foi posible conectarse ó servidor POP.\n"
-"Non se soporta o mecanismo de autenticación solicitado."
-
-#: camel/providers/imap/camel-imap-store.c:450
-#: camel/providers/smtp/camel-smtp-transport.c:358
-#, fuzzy, c-format
-msgid "No support for authentication type %s"
-msgstr "Autenticación"
-
-#: camel/providers/imap/camel-imap-store.c:475
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr "%sIntroduza o contrasinal IMAP para %s@%s"
-
-#: camel/providers/imap/camel-imap-store.c:490
-#: camel/providers/smtp/camel-smtp-transport.c:403
-msgid "You didn't enter a password."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:518
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Non foi posible autenticarse co servidor IMAP.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/imap/camel-imap-store.c:865
-#, fuzzy, c-format
-msgid "%s is not a selectable folder"
-msgstr "Ver carpeta seleccionada"
-
-#: camel/providers/imap/camel-imap-store.c:879
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr "Non foi posible crear o directorio %s: %s"
-
-#: camel/providers/imap/camel-imap-store.c:1382
-msgid "You must be working online to complete this operation"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:39
-#, fuzzy
-msgid "MH-format mail directories"
-msgstr "`%s' non é un directorio."
-
-#: camel/providers/local/camel-local-provider.c:40
-msgid "For storing local mail in MH-like mail directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:49
-msgid "Standard Unix mailbox file"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:50
-msgid "For storing local mail in standard mbox format"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "Qmail maildir-format mail files"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:60
-msgid "For storing local mail in qmail maildir directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:129
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:136
-#, fuzzy, c-format
-msgid "Store root %s is not a regular directory"
-msgstr "`%s' non é un ficheiro regular."
-
-#: camel/providers/local/camel-local-store.c:144
-#: camel/providers/local/camel-local-store.c:160
-#, fuzzy, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "Non é posible facer un fork a %s: %s"
-
-#: camel/providers/local/camel-local-store.c:175
-msgid "Local stores do not have an inbox"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:185
-#, c-format
-msgid "Local mail file %s"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:241
-#, fuzzy, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr "Non foi posible renomear a carpeta `%s': %s"
-
-#: camel/providers/local/camel-local-store.c:283
-#, fuzzy, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr "Non foi posible borrar a carpeta `%s': %s"
-
-#: camel/providers/local/camel-local-store.c:293
-#, fuzzy, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr "Non foi posible borrar a carpeta `%s': %s"
-
-#: camel/providers/local/camel-maildir-folder.c:150
-#: camel/providers/local/camel-maildir-folder.c:158
-#: camel/providers/local/camel-maildir-folder.c:169
-#, fuzzy, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr "Non é posible engadir a mensaxe á carpeta mh: %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-maildir-folder.c:209
-#: camel/providers/local/camel-maildir-folder.c:217
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#: camel/providers/local/camel-mh-folder.c:194
-#: camel/providers/local/camel-mh-folder.c:202
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-"Non é posible obter a mensaxe: %s\n"
-" %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#, fuzzy
-msgid "No such message"
-msgstr "Re-enviar esta mensaxe"
-
-#: camel/providers/local/camel-maildir-folder.c:218
-#: camel/providers/local/camel-mh-folder.c:203
-msgid "Invalid message contents"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:96
-#: camel/providers/local/camel-mh-store.c:90
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-"Non é posible abrir a carpeta `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:100
-#: camel/providers/local/camel-mbox-store.c:101
-#: camel/providers/local/camel-mh-store.c:97
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr "A carpeta `%s' non existe."
-
-#: camel/providers/local/camel-maildir-store.c:107
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-"Non foi posible crear a carpeta `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:122
-#, fuzzy, c-format
-msgid "`%s' is not a maildir directory."
-msgstr "`%s' non é un directorio."
-
-#: camel/providers/local/camel-maildir-store.c:151
-#: camel/providers/local/camel-maildir-store.c:188
-#: camel/providers/local/camel-mh-store.c:127
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr "Non foi posible borrar a carpeta `%s': %s"
-
-#: camel/providers/local/camel-maildir-store.c:152
-#, fuzzy
-msgid "not a maildir directory"
-msgstr "`%s' non é un directorio."
-
-#: camel/providers/local/camel-mbox-folder.c:152
-#, fuzzy, c-format
-msgid "Cannot create folder lock on %s: %s"
-msgstr "Non é posible facer un fork a %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:203
-#, fuzzy, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr "Non é posible abrir a caixa de correo temporal: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:259
-#, fuzzy, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr "Non é posible engadir a mensaxe á carpeta mh: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:335
-#: camel/providers/local/camel-mbox-folder.c:367
-#: camel/providers/local/camel-mbox-folder.c:380
-#, fuzzy, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-"Non é posible obter a mensaxe: %s\n"
-" %s"
-
-#: camel/providers/local/camel-mbox-folder.c:368
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:381
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:94
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-"Non foi posible abrir o ficheiro `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:110
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-"Non foi posible crear o ficheiro `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:119
-#: camel/providers/local/camel-mbox-store.c:146
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr "`%s' non é un ficheiro regular."
-
-#: camel/providers/local/camel-mbox-store.c:138
-#: camel/providers/local/camel-mbox-store.c:161
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-"Non foi posible borrar a carpeta `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr "A carpeta `%s' non está baleira. Non borrada."
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:248
-#, fuzzy
-msgid "Summarising folder"
-msgstr "Sincronizando \"%s\""
-
-#: camel/providers/local/camel-mbox-summary.c:253
-#, fuzzy, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr ""
-"Non é posible abrir a carpeta `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-summary.c:295
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:370
-#, fuzzy, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr "Non é posible facer un fork a %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:501
-#: camel/providers/local/camel-mbox-summary.c:702 mail/mail-ops.c:1382
-#, fuzzy
-msgid "Synchronising folder"
-msgstr "Sincronizando \"%s\""
-
-#: camel/providers/local/camel-mbox-summary.c:506
-#: camel/providers/local/camel-mbox-summary.c:707
-#, fuzzy, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr ""
-"Non é posible abrir a carpeta `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-summary.c:523
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr "Non é posible abrir a caixa de correo temporal: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:548
-#: camel/providers/local/camel-mbox-summary.c:556
-#: camel/providers/local/camel-mbox-summary.c:745
-#: camel/providers/local/camel-mbox-summary.c:753
-msgid "Summary and folder mismatch, even after a sync"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:599
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr "Erro escribindo á caixa de correo temporal: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:616
-#, fuzzy, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr "Erro escribindo á caixa de correo temporal: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:634
-#: camel/providers/local/camel-mbox-summary.c:803
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr "Non foi posible pechar a carpeta orixe %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:643
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr "Non foi posible pechar a carpeta temporal: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:654
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr "Non foi posible renomear a carpeta: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:878
-#, c-format
-msgid "Unknown error: %s"
-msgstr "Erro descoñecido: %s"
-
-#: camel/providers/local/camel-mh-folder.c:149
-#: camel/providers/local/camel-mh-folder.c:157
-#, fuzzy, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr "Non é posible engadir a mensaxe á carpeta mh: %s"
-
-#: camel/providers/local/camel-mh-store.c:110
-#, c-format
-msgid "`%s' is not a directory."
-msgstr "`%s' non é un directorio."
-
-#: camel/providers/nntp/camel-nntp-auth.c:45
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr "Introduza o contrasinal NNTP para %s@%s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:66
-msgid "Server rejected username"
-msgstr "O servidor rexeitou o nome de usuario"
-
-#: camel/providers/nntp/camel-nntp-auth.c:72
-msgid "Failed to send username to server"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:81
-msgid "Server rejected username/password"
-msgstr "O servidor rexeitou o nome de usuario/contrasinal"
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr "Mensaxe %s non atopada."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr "Non foi posible recibir a lista de grupos do servidor."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-provider.c:42
-msgid "USENET news"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-provider.c:44
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:226
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr "Non foi posible abrir o directorio para o servidor de novas: %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:288
-#, c-format
-msgid "USENET News via %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:295
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-"Esta opción autenticarase co servidor NNTP usando un contrasinal sen cifrar."
-
-#: camel/providers/nntp/camel-nntp-store.c:327
-#: camel/providers/nntp/camel-nntp-store.c:490
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr "Non foi posible abrir ou crear o ficheiro .newsrc para %s: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-#, fuzzy
-msgid "Retrieving POP summary"
-msgstr "Recibindo a mensaxe %d de %d"
-
-#: camel/providers/pop3/camel-pop3-folder.c:192
-msgid "Could not open folder: message listing was incomplete."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:285
-#, c-format
-msgid "No message with uid %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:289
-#, fuzzy, c-format
-msgid "Retrieving POP message %d"
-msgstr "Recibindo a mensaxe %d de %d"
-
-#: camel/providers/pop3/camel-pop3-folder.c:307
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr "Non foi posible recibir a mensaxe do servidor POP %s: %s"
-
-#: camel/providers/pop3/camel-pop3-provider.c:37
-#, fuzzy
-msgid "Message storage"
-msgstr "Corpo da Mensaxe"
-
-#: camel/providers/pop3/camel-pop3-provider.c:39
-#, fuzzy
-msgid "Leave messages on server"
-msgstr "Non borrar as mensaxes do servidor"
-
-#: camel/providers/pop3/camel-pop3-provider.c:41
-#, fuzzy, c-format
-msgid "Delete after %s day(s)"
-msgstr "Borrar a tarefa"
-
-#: camel/providers/pop3/camel-pop3-provider.c:48 mail/mail-config.glade.h:42
-msgid "POP"
-msgstr "POP"
-
-#: camel/providers/pop3/camel-pop3-provider.c:50
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-"Para conectarse a servidores POP. O protocolo POP tamén se pode usar para "
-"recibir correo de certos provedores de correo web, e de sistemas de email "
-"propietarios."
-
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-"Esta opción conectarase ó servidor POP usando un contrasinal sen cifrar. "
-"Esta é a única opción que soportan moitos servidores POP."
-
-#: camel/providers/pop3/camel-pop3-provider.c:79
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-"Esta opción conectarase ó servidor POP usando un contrasinal cifrado a "
-"través do protocolo APOP. Pode que isto non funcione para tódolos usuarios, "
-"mesmo naqueles que indican que o soportan."
-
-#: camel/providers/pop3/camel-pop3-provider.c:91
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-"Isto conectarase ó servidor POP e usará Kerberos 4 para autenticarse con el."
-
-#: camel/providers/pop3/camel-pop3-store.c:207
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr "Non foi posible autenticarse co servidor KPOP: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:319
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr "Non foi posible conectarse ó servidor POP en %s."
-
-#: camel/providers/pop3/camel-pop3-store.c:358
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr "%sIntroduza o contrasinal POP3 para %s@%s"
-
-#: camel/providers/pop3/camel-pop3-store.c:377
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-"Non foi posible conectarse ó servidor POP.\n"
-"Erro enviando o nome de usuario: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:380
-#: camel/providers/pop3/camel-pop3-store.c:417
-msgid "(Unknown)"
-msgstr "(Descoñecido)"
-
-#: camel/providers/pop3/camel-pop3-store.c:407
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-"Non foi posible conectarse ó servidor POP.\n"
-"Non se soporta o mecanismo de autenticación solicitado."
-
-#: camel/providers/pop3/camel-pop3-store.c:415
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-"Non foi posible conectarse ó servidor POP.\n"
-"Erro enviando o contrasinal: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:483
-#, c-format
-msgid "No such folder `%s'."
-msgstr "Non existe a carpeta `%s'."
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:37
-#: mail/mail-config.glade.h:57
-msgid "Sendmail"
-msgstr "Sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:39
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-"Para entregar o correo pasándollo ó programa \"sendmail\" no sistema local."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:107
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr ""
-"Non foi posible crear unha canalización para o sendmail: %s: correo non "
-"enviado"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:124
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr "Non foi posible facer fork para o sendmail: %s: correo non enviado"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:150
-#, c-format
-msgid "Could not send message: %s"
-msgstr "Non foi posible enviar a mensaxe: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:163
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr "o sendmail saíu co sinal %s: correo non enviado."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:170
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr "Non foi posible executar %s: correo non enviado."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:175
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr "o sendmail saíu con estado %d: correo non enviado."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:194
-#, fuzzy
-msgid "Could not find 'From' address in message"
-msgstr "Non foi posible enviar a mensaxe: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "sendmail"
-msgstr "sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:249
-msgid "Mail delivery via the sendmail program"
-msgstr "Entrega de correo a través do programa sendmail"
-
-#: camel/providers/smtp/camel-smtp-provider.c:38 mail/mail-config.glade.h:52
-msgid "SMTP"
-msgstr "SMTP"
-
-#: camel/providers/smtp/camel-smtp-provider.c:40
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:165
-msgid "Syntax error, command unrecognized"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:167
-msgid "Syntax error in parameters or arguments"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:169
-msgid "Command not implemented"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:171
-msgid "Command parameter not implemented"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:173
-msgid "System status, or system help reply"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:175
-#, fuzzy
-msgid "Help message"
-msgstr "Editar Mensaxe"
-
-#: camel/providers/smtp/camel-smtp-transport.c:177
-#, fuzzy
-msgid "Service ready"
-msgstr "Agochar"
-
-#: camel/providers/smtp/camel-smtp-transport.c:179
-msgid "Service closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:181
-msgid "Service not available, closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:183
-msgid "Requested mail action okay, completed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:185
-msgid "User not local; will forward to <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:187
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:189
-msgid "Requested action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:191
-msgid "Requested action aborted: error in processing"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:193
-msgid "User not local; please try <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:195
-msgid "Requested action not taken: insufficient system storage"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:197
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:199
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:201
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:203
-msgid "Transaction failed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:207
-#, fuzzy
-msgid "A password transition is needed"
-msgstr "Non se indicou un contrasinal."
-
-#: camel/providers/smtp/camel-smtp-transport.c:209
-msgid "Authentication mechanism is too weak"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:211
-#, fuzzy
-msgid "Encryption required for requested authentication mechanism"
-msgstr ""
-"Non foi posible conectarse ó servidor POP.\n"
-"Non se soporta o mecanismo de autenticación solicitado."
-
-#: camel/providers/smtp/camel-smtp-transport.c:213
-#, fuzzy
-msgid "Temporary authentication failure"
-msgstr "Autenticación"
-
-#: camel/providers/smtp/camel-smtp-transport.c:215
-#, fuzzy
-msgid "Authentication required"
-msgstr "Autenticación"
-
-#: camel/providers/smtp/camel-smtp-transport.c:305
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:348
-#, fuzzy, c-format
-msgid "SMTP server %s does not support requested authentication type %s"
-msgstr ""
-"Non foi posible conectarse ó servidor POP.\n"
-"Non se soporta o mecanismo de autenticación solicitado."
-
-#: camel/providers/smtp/camel-smtp-transport.c:388
-#, fuzzy, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr "%sIntroduza o contrasinal IMAP para %s@%s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:411
-#, fuzzy, c-format
-msgid ""
-"Unable to authenticate to SMTP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Non foi posible autenticarse co servidor IMAP.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:527
-#, c-format
-msgid "SMTP server %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:529
-#, fuzzy, c-format
-msgid "SMTP mail delivery via %s"
-msgstr "Entrega de correo a través do programa sendmail"
-
-#: camel/providers/smtp/camel-smtp-transport.c:554
-msgid "Cannot send message: sender address not defined."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:561
-msgid "Cannot send message: sender address not valid."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:575
-msgid "Cannot send message: no recipients defined."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:669
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:688
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:721
-msgid "Error creating SASL authentication object."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:736
-#: camel/providers/smtp/camel-smtp-transport.c:748
-#, fuzzy, c-format
-msgid "AUTH request timed out: %s"
-msgstr "Non foi posible executar %s: correo non enviado."
-
-#: camel/providers/smtp/camel-smtp-transport.c:798
-#, fuzzy
-msgid "Bad authentication response from server.\n"
-msgstr "Resposta non agardada do servidor IMAP: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:824
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:843
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:868
-#, fuzzy, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr ""
-"Non foi posible crear unha canalización para o sendmail: %s: correo non "
-"enviado"
-
-#: camel/providers/smtp/camel-smtp-transport.c:887
-#, fuzzy, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr "Non foi posible executar %s: correo non enviado."
-
-#: camel/providers/smtp/camel-smtp-transport.c:918
-#, fuzzy, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr "Non foi posible executar %s: correo non enviado."
-
-#: camel/providers/smtp/camel-smtp-transport.c:937
-#, fuzzy, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr "Non foi posible facer fork para o sendmail: %s: correo non enviado"
-
-#: camel/providers/smtp/camel-smtp-transport.c:952
-#: camel/providers/smtp/camel-smtp-transport.c:970
-#, fuzzy, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr "o sendmail saíu co sinal %s: correo non enviado."
-
-#: camel/providers/smtp/camel-smtp-transport.c:989
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1013
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1032
-#, fuzzy, c-format
-msgid "RSET response error: %s"
-msgstr "Erro descoñecido: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1055
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1074
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:95
-msgid "1 byte"
-msgstr "1 byte"
-
-#: composer/e-msg-composer-attachment-bar.c:97
-#, c-format
-msgid "%u bytes"
-msgstr "%u bytes"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fK"
-
-#: composer/e-msg-composer-attachment-bar.c:108
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fM"
-
-#: composer/e-msg-composer-attachment-bar.c:112
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fG"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:332 mail/mail-display.c:120
-msgid "attachment"
-msgstr "anexo"
-
-#: composer/e-msg-composer-attachment-bar.c:421
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr "Incluír un ficheiro"
-
-#: composer/e-msg-composer-attachment-bar.c:469
-msgid "Remove selected items from the attachment list"
-msgstr "Quitar os elementos seleccionados da lista de anexos"
-
-#: composer/e-msg-composer-attachment-bar.c:500
-msgid "Add attachment..."
-msgstr "Engadir anexo..."
-
-#: composer/e-msg-composer-attachment-bar.c:501
-msgid "Attach a file to the message"
-msgstr "Incluír un ficheiro como anexo na mensaxe"
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/message-list.c:1052
-#, fuzzy
-msgid "Attachment"
-msgstr "anexo"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr "Propiedades do anexo"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr "Nome de ficheiro:"
-
-#: composer/e-msg-composer-attachment.glade.h:5
-#, fuzzy
-msgid "Inline attachment"
-msgstr "anexo"
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr "Tipo MIME:"
-
-#: composer/e-msg-composer-attachment.glade.h:7
-#, fuzzy
-msgid "Send as:"
-msgstr "Autor"
-
-#: composer/e-msg-composer-hdrs.c:321
-msgid "Click here for the address book"
-msgstr "Prema aquí para o libro de enderezos"
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:352 mail/mail-format.c:715
-msgid "From:"
-msgstr "De:"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:358 mail/mail-format.c:717
-msgid "Reply-To:"
-msgstr "Responder-A:"
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:369 mail/mail-format.c:639
-msgid "Subject:"
-msgstr "Asunto:"
-
-#: composer/e-msg-composer-hdrs.c:383 mail/mail-format.c:719
-msgid "To:"
-msgstr "A:"
-
-#: composer/e-msg-composer-hdrs.c:384
-msgid "Enter the recipients of the message"
-msgstr "Introduza os destinatarios da mensaxe"
-
-#: composer/e-msg-composer-hdrs.c:387 mail/mail-format.c:721
-msgid "Cc:"
-msgstr "Cc:"
-
-#: composer/e-msg-composer-hdrs.c:388
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "Introduza os enderezos que recibirán unha copia da mensaxe"
-
-#: composer/e-msg-composer-hdrs.c:391
-msgid "Bcc:"
-msgstr "Bcc:"
-
-#: composer/e-msg-composer-hdrs.c:392
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"Introduza os enderezos que recibirán unha copia da mensaxe sen apareceren na "
-"lista de destinatarios."
-
-#: composer/e-msg-composer.c:528
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-"Non foi posible abrir o ficheiro de sinatura %s:\n"
-"%s"
-
-#: composer/e-msg-composer.c:716
-msgid "Save as..."
-msgstr "Gardar como..."
-
-#: composer/e-msg-composer.c:727
-#, c-format
-msgid "Error saving file: %s"
-msgstr "Erro gardando o ficheiro: %s"
-
-#: composer/e-msg-composer.c:747
-#, c-format
-msgid "Error loading file: %s"
-msgstr "Erro cargando o ficheiro: %s"
-
-#: composer/e-msg-composer.c:819
-msgid ""
-"Unable to open the drafts folder for this account.\n"
-"Would you like to use the default drafts folder?"
-msgstr ""
-
-#: composer/e-msg-composer.c:877 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:206
-msgid "Evolution"
-msgstr "Evolution"
-
-#: composer/e-msg-composer.c:883
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-"Esta mensaxe non foi enviada.\n"
-"\n"
-"¿Desexa gardar os cambios?"
-
-#: composer/e-msg-composer.c:908
-msgid "Open file"
-msgstr "Abrir ficheiro"
-
-#: composer/e-msg-composer.c:1034
-msgid "That file does not exist."
-msgstr "O ficheiro non existe."
-
-#: composer/e-msg-composer.c:1044
-msgid "That is not a regular file."
-msgstr "Non é un ficheiro normal."
-
-#: composer/e-msg-composer.c:1054
-msgid "That file exists but is not readable."
-msgstr "O ficheiro existe pero non se pode ler."
-
-#: composer/e-msg-composer.c:1064
-msgid "That file appeared accesible but open(2) failed."
-msgstr "O ficheiro parecía accesible pero a chamada a open(2) fallou."
-
-#: composer/e-msg-composer.c:1086
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-"O ficheiro é moi longo (máis de 100K).\n"
-"¿Está seguro de querer inserilo?"
-
-#: composer/e-msg-composer.c:1107
-msgid "An error occurred while reading the file."
-msgstr "Ocorreu un erro lendo o ficheiro."
-
-#: composer/e-msg-composer.c:1408 composer/e-msg-composer.c:1740
-msgid "Compose a message"
-msgstr "Compoñer unha mensaxe"
-
-#: composer/e-msg-composer.c:1829
-msgid "Could not create composer window."
-msgstr ""
-
-#: composer/evolution-composer.c:355
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-
-#: composer/evolution-composer.c:370
-msgid "Cannot initialize Evolution's composer."
-msgstr ""
-
-#: data/evolution.desktop.in.h:2
-#, fuzzy
-msgid "The Evolution groupware suite"
-msgstr "_Atallo da barra do Evolution"
-
-#: data/evolution.keys.in.h:1
-#, fuzzy
-msgid "address card"
-msgstr "Enderezo"
-
-#: data/evolution.keys.in.h:2
-#, fuzzy
-msgid "calendar information"
-msgstr "Sen Información"
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:69 e-util/e-time-utils.c:117
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:477
-#: widgets/misc/e-dateedit.c:1282 widgets/misc/e-dateedit.c:1463
-msgid "%m/%d/%Y"
-msgstr "%d/%m/%Y"
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:87 e-util/e-time-utils.c:198
-msgid "%I:%M:%S %p%n"
-msgstr "%I:%M:%S %p%n"
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:90 e-util/e-time-utils.c:201
-msgid "%H:%M:%S%n"
-msgstr "%H:%M:%S%n"
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:94 e-util/e-time-utils.c:205
-msgid "%I:%M %p%n"
-msgstr "%I:%M %p%n"
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:97 e-util/e-time-utils.c:208
-msgid "%H:%M%n"
-msgstr "%H:%M%n"
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:269
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:473
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2503
-msgid "%a %m/%d/%Y"
-msgstr "%a %d/%m/%Y"
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:274
-#, fuzzy
-msgid "%a %m/%d/%Y %H:%M"
-msgstr "%a %d/%m/%Y %H:%M:%S"
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:283
-#, fuzzy
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr "%a %d/%m/%Y %I:%M:%S %p"
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:312 widgets/misc/e-dateedit.c:1257
-#: widgets/misc/e-dateedit.c:1316 widgets/misc/e-dateedit.c:1495
-msgid "%H:%M"
-msgstr "%H:%M"
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:315
-#, fuzzy
-msgid "%H:%M:%S"
-msgstr "%H:%M:%S%n"
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:320 widgets/misc/e-dateedit.c:1260
-#: widgets/misc/e-dateedit.c:1319 widgets/misc/e-dateedit.c:1498
-msgid "%I:%M %p"
-msgstr "%I:%M %p"
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:323
-#, fuzzy
-msgid "%I:%M:%S %p"
-msgstr "%I:%M:%S %p%n"
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-msgid "Evolution component for the executive summary."
-msgstr ""
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-#, fuzzy
-msgid "Factory for the Evolution executive summary component."
-msgstr "Utilidade de configuración para o conducto de axenda de evolution.\n"
-
-#: executive-summary/component/component-factory.c:152
-#, fuzzy
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr "Non se pode inicializar o compoñente de correo de Evolution."
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:71
-#, fuzzy, c-format
-msgid "Send an email to %s"
-msgstr "Recibindo correo de %s"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:75
-#, fuzzy, c-format
-msgid "Close %s"
-msgstr "Pechar"
-
-#: executive-summary/component/e-summary-url.c:76
-#, fuzzy, c-format
-msgid "Move %s to the left"
-msgstr "Mover para a Carpeta"
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:78
-#, fuzzy, c-format
-msgid "Move %s into the previous row"
-msgstr "Ir ó elemento anterior"
-
-#: executive-summary/component/e-summary-url.c:79
-#, fuzzy, c-format
-msgid "Move %s into the next row"
-msgstr "Ir ó elemento seguinte"
-
-#: executive-summary/component/e-summary-url.c:80
-#, fuzzy, c-format
-msgid "Configure %s"
-msgstr "_Configurar Carpeta"
-
-#: executive-summary/component/e-summary.c:924
-#, fuzzy, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"Non foi posible abrir o ficheiro %s:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:938
-#, fuzzy, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr "Erro lendo o ficheiro de correo: %s"
-
-#: executive-summary/component/e-summary.c:956
-msgid "File does not have a place for the services.\n"
-msgstr ""
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr ""
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr ""
-
-#: executive-summary/component/main.c:62
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-#, fuzzy
-msgid "RDF Summary"
-msgstr "_Resume"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-#, fuzzy
-msgid "Factory for the test bonobo component."
-msgstr "Utilidade de configuración para o conducto de axenda de evolution.\n"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-#, fuzzy
-msgid "Factory for the test component."
-msgstr "Utilidade de configuración para o conducto de axenda de evolution.\n"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:512
-#: executive-summary/test-service/rdf-summary.c:549
-#: executive-summary/test-service/rdf-summary.c:594
-#: widgets/misc/e-messagebox.c:166
-#, fuzzy
-msgid "Error"
-msgstr "Sen erro"
-
-#: executive-summary/test-service/rdf-summary.c:768
-msgid "Update automatically"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:778
-msgid "Update now"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:788
-msgid "Update every "
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:796
-#: filter/filter-datespec.c:83
-msgid "minutes"
-msgstr "minutos"
-
-#: filter/filter-datespec.c:78
-msgid "year"
-msgstr "ano"
-
-#: filter/filter-datespec.c:78
-msgid "years"
-msgstr "anos"
-
-#: filter/filter-datespec.c:79
-msgid "month"
-msgstr "mes"
-
-#: filter/filter-datespec.c:79
-msgid "months"
-msgstr "meses"
-
-#: filter/filter-datespec.c:80
-msgid "week"
-msgstr "semana"
-
-#: filter/filter-datespec.c:80
-msgid "weeks"
-msgstr "semanas"
-
-#: filter/filter-datespec.c:81
-msgid "days"
-msgstr "días"
-
-#: filter/filter-datespec.c:82
-msgid "hour"
-msgstr "hora"
-
-#: filter/filter-datespec.c:82
-msgid "hours"
-msgstr "horas"
-
-#: filter/filter-datespec.c:83
-msgid "minute"
-msgstr "minuto"
-
-#: filter/filter-datespec.c:84
-msgid "second"
-msgstr "segundo"
-
-#: filter/filter-datespec.c:84
-msgid "seconds"
-msgstr "segundos"
-
-#: filter/filter-datespec.c:199
-msgid "Oops. You have forgotten to choose a date."
-msgstr "Oops. Esqueceu escoller unha data."
-
-#: filter/filter-datespec.c:201
-msgid "Oops. You have chosen an invalid date."
-msgstr "Oops. Escolleu unha data non válida."
-
-#: filter/filter-datespec.c:275
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-
-#: filter/filter-datespec.c:298
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-
-#: filter/filter-datespec.c:338
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:373
-msgid "the current time"
-msgstr "a hora actual"
-
-#: filter/filter-datespec.c:373
-msgid "a time you specify"
-msgstr "unha hora que especifique"
-
-#: filter/filter-datespec.c:374
-msgid "a time relative to the current time"
-msgstr "unha relativa ó momento actual"
-
-#. The label
-#: filter/filter-datespec.c:432
-msgid "Compare against"
-msgstr ""
-
-#: filter/filter-datespec.c:549 filter/filter-datespec.c:709
-msgid "now"
-msgstr "agora"
-
-#: filter/filter-datespec.c:706
-msgid "<click here to select a date>"
-msgstr "<prema aquí para seleccionar unha data>"
-
-#: filter/filter-editor.c:132 filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr "Reglas de Filtrado"
-
-#. and now for the action area
-#: filter/filter-filter.c:453
-msgid "Then"
-msgstr "Entón"
-
-#: filter/filter-filter.c:467
-msgid "Add action"
-msgstr "Engadir acción"
-
-#: filter/filter-folder.c:147
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-
-#: filter/filter-folder.c:222 filter/vfolder-rule.c:285
-#: mail/mail-account-gui.c:682
-msgid "Select Folder"
-msgstr "Seleccionar Carpeta"
-
-#: filter/filter-folder.c:247
-msgid "Enter folder URI"
-msgstr "Introduza o URI da carpeta"
-
-#: filter/filter-folder.c:293
-msgid "<click here to select a folder>"
-msgstr "<prema aquí para seleccionar unha carpeta>"
-
-#: filter/filter-input.c:194
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-"Erro na expresión regular '%s':\n"
-"%s"
-
-#: filter/filter-part.c:475
-msgid "Test"
-msgstr ""
-
-#: filter/filter-rule.c:626
-msgid "Rule name: "
-msgstr "Nome da regra: "
-
-#: filter/filter-rule.c:630
-msgid "Untitled"
-msgstr "Sen_título"
-
-#: filter/filter-rule.c:646
-msgid "If"
-msgstr "Se"
-
-#: filter/filter-rule.c:664
-msgid "Execute actions"
-msgstr "Executar accións"
-
-#: filter/filter-rule.c:668
-msgid "if all criteria are met"
-msgstr "se se cumpren tódolos criterios"
-
-#: filter/filter-rule.c:673
-msgid "if any criteria are met"
-msgstr "se se cumpre algún criterio"
-
-#: filter/filter-rule.c:684
-msgid "Add criterion"
-msgstr "Engadir criterio"
-
-#: filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr "Editar Filtros"
-
-#: filter/filter.glade.h:5
-#, fuzzy
-msgid "Edit VFolders"
-msgstr "Editar Filtros"
-
-#: filter/filter.glade.h:7
-#, fuzzy
-msgid "Incoming"
-msgstr ""
-"Entrante\n"
-"Saínte\n"
-
-#: filter/filter.glade.h:8
-#, fuzzy
-msgid "Outgoing"
-msgstr ""
-"Entrante\n"
-"Saínte\n"
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:130
-msgid "Virtual Folders"
-msgstr "Carpetas Virtuais"
-
-#: filter/filter.glade.h:11
-#, fuzzy
-msgid "specific folders only"
-msgstr "Non se atopou a carpeta especificada"
-
-#: filter/filter.glade.h:12
-#, fuzzy
-msgid "vFolder Sources"
-msgstr "Fontes de Correo"
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr ""
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr ""
-
-#: filter/filter.glade.h:15
-#, fuzzy
-msgid "with all local folders"
-msgstr "Crear unha nova carpeta"
-
-#. Automatically generated. Do not edit.
-#: filter/libfilter-i18n.h:2
-msgid "Assign Colour"
-msgstr "Asignar Cor"
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Score"
-msgstr "Asignar Puntuación"
-
-#: filter/libfilter-i18n.h:4
-#, fuzzy
-msgid "Attachments"
-msgstr "anexo"
-
-#: filter/libfilter-i18n.h:5
-msgid "Copy to Folder"
-msgstr "Copiar á Carpeta"
-
-#: filter/libfilter-i18n.h:6
-msgid "Date received"
-msgstr "Data de recepción"
-
-#: filter/libfilter-i18n.h:7
-msgid "Date sent"
-msgstr "Data de envío"
-
-#: filter/libfilter-i18n.h:9
-#, fuzzy
-msgid "Deleted"
-msgstr "Eliminar"
-
-#: filter/libfilter-i18n.h:10
-#, fuzzy
-msgid "Do Not Exist"
-msgstr "non existe"
-
-#: filter/libfilter-i18n.h:11
-#, fuzzy
-msgid "Draft"
-msgstr "Pegar"
-
-#: filter/libfilter-i18n.h:12
-#, fuzzy
-msgid "Exist"
-msgstr "_Saír"
-
-#: filter/libfilter-i18n.h:13
-msgid "Expression"
-msgstr "Expresión"
-
-#: filter/libfilter-i18n.h:14
-msgid "Forward to Address"
-msgstr "Reenviar ó Enderezo"
-
-#: filter/libfilter-i18n.h:15
-msgid "Important"
-msgstr ""
-
-#: filter/libfilter-i18n.h:16
-#, fuzzy
-msgid "Is Not"
-msgstr "non é"
-
-#: filter/libfilter-i18n.h:17
-#, fuzzy
-msgid "Is"
-msgstr "Se"
-
-#: filter/libfilter-i18n.h:18
-#, fuzzy
-msgid "Mailing list"
-msgstr "lista de correo %s"
-
-#: filter/libfilter-i18n.h:19
-msgid "Message Body"
-msgstr "Corpo da Mensaxe"
-
-#: filter/libfilter-i18n.h:20
-#, fuzzy
-msgid "Message Header"
-msgstr "Corpo da Mensaxe"
-
-#: filter/libfilter-i18n.h:21
-msgid "Message was received"
-msgstr ""
-
-#: filter/libfilter-i18n.h:22
-msgid "Message was sent"
-msgstr ""
-
-#: filter/libfilter-i18n.h:23
-msgid "Move to Folder"
-msgstr "Mover para a Carpeta"
-
-#: filter/libfilter-i18n.h:24
-#, fuzzy
-msgid "Read"
-msgstr "Refacer"
-
-#: filter/libfilter-i18n.h:25
-msgid "Recipients"
-msgstr "Destinatarios"
-
-#: filter/libfilter-i18n.h:26
-msgid "Regex Match"
-msgstr ""
-
-#: filter/libfilter-i18n.h:27
-#, fuzzy
-msgid "Replied to"
-msgstr "Responder a Todos"
-
-#: filter/libfilter-i18n.h:28 filter/score-rule.c:203 filter/score-rule.c:205
-#: mail/message-list.c:1052
-msgid "Score"
-msgstr "Puntuación"
-
-#: filter/libfilter-i18n.h:29
-msgid "Sender"
-msgstr "Autor"
-
-#: filter/libfilter-i18n.h:30
-#, fuzzy
-msgid "Set Status"
-msgstr "_Estado:"
-
-#: filter/libfilter-i18n.h:31
-#, fuzzy
-msgid "Source Account"
-msgstr "Contas"
-
-#: filter/libfilter-i18n.h:32
-msgid "Specific header"
-msgstr ""
-
-#: filter/libfilter-i18n.h:34
-msgid "Stop Processing"
-msgstr ""
-
-#: filter/libfilter-i18n.h:35 mail/message-list.c:1053
-msgid "Subject"
-msgstr "Asunto"
-
-#: filter/libfilter-i18n.h:38
-msgid "contains"
-msgstr "contén"
-
-#: filter/libfilter-i18n.h:39
-msgid "does not contain"
-msgstr "non contén"
-
-#: filter/libfilter-i18n.h:40
-msgid "does not end with"
-msgstr "non termina en"
-
-#: filter/libfilter-i18n.h:41
-msgid "does not exist"
-msgstr "non existe"
-
-#: filter/libfilter-i18n.h:42
-msgid "does not sound like"
-msgstr ""
-
-#: filter/libfilter-i18n.h:43
-msgid "does not start with"
-msgstr "non empeza por"
-
-#: filter/libfilter-i18n.h:44
-msgid "ends with"
-msgstr "termina en"
-
-#: filter/libfilter-i18n.h:45
-msgid "exists"
-msgstr "existe"
-
-#: filter/libfilter-i18n.h:46
-msgid "is greater than"
-msgstr "é maior que"
-
-#: filter/libfilter-i18n.h:47
-msgid "is less than"
-msgstr "é menor que"
-
-#: filter/libfilter-i18n.h:48
-msgid "is not"
-msgstr "non é"
-
-#: filter/libfilter-i18n.h:49
-msgid "is"
-msgstr "é"
-
-#: filter/libfilter-i18n.h:50
-msgid "on or after"
-msgstr ""
-
-#: filter/libfilter-i18n.h:51
-msgid "on or before"
-msgstr ""
-
-#: filter/libfilter-i18n.h:52
-msgid "sounds like"
-msgstr ""
-
-#: filter/libfilter-i18n.h:53
-msgid "starts with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:54
-msgid "was after"
-msgstr "foi posterior a"
-
-#: filter/libfilter-i18n.h:55
-msgid "was before"
-msgstr "foi anterior a"
-
-#: filter/score-editor.c:130
-#, fuzzy
-msgid "Score Rules"
-msgstr "Puntuación"
-
-#: mail/component-factory.c:329
-msgid "Cannot initialize Evolution's mail component."
-msgstr "Non se pode inicializar o compoñente de correo de Evolution."
-
-#: mail/component-factory.c:402
-msgid "Cannot register storage with shell"
-msgstr ""
-
-#: mail/folder-browser-factory.c:209
-#, fuzzy, c-format
-msgid "Properties for \"%s\""
-msgstr "Propiedades"
-
-#: mail/folder-browser-factory.c:211 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-msgid "Properties"
-msgstr "Propiedades"
-
-#: mail/folder-browser.c:225
-#, fuzzy
-msgid "Store search as vFolder"
-msgstr "Seleccionar Carpeta"
-
-#: mail/folder-browser.c:533
-msgid "VFolder on Subject"
-msgstr ""
-
-#: mail/folder-browser.c:536
-msgid "VFolder on Sender"
-msgstr ""
-
-#: mail/folder-browser.c:539
-msgid "VFolder on Recipients"
-msgstr ""
-
-#: mail/folder-browser.c:542 mail/folder-browser.c:733
-msgid "VFolder on Mailing List"
-msgstr ""
-
-#: mail/folder-browser.c:548
-msgid "Filter on Subject"
-msgstr ""
-
-#: mail/folder-browser.c:551
-msgid "Filter on Sender"
-msgstr ""
-
-#: mail/folder-browser.c:554
-msgid "Filter on Recipients"
-msgstr ""
-
-#: mail/folder-browser.c:557 mail/folder-browser.c:732
-msgid "Filter on Mailing List"
-msgstr ""
-
-#: mail/folder-browser.c:568
-#, fuzzy
-msgid "Resend"
-msgstr "segundo"
-
-#: mail/folder-browser.c:570
-#, fuzzy
-msgid "Save As..."
-msgstr "Gardar _Como..."
-
-#: mail/folder-browser.c:577
-msgid "Reply to Sender"
-msgstr "Responder ó Autor"
-
-#: mail/folder-browser.c:579 mail/mail-view.c:147 ui/evolution-mail.xml.h:60
-msgid "Reply to All"
-msgstr "Responder a Todos"
-
-#: mail/folder-browser.c:581 mail/mail-view.c:150 ui/evolution-mail.xml.h:24
-msgid "Forward"
-msgstr "Re-enviar"
-
-#: mail/folder-browser.c:583 ui/evolution-mail.xml.h:26
-#, fuzzy
-msgid "Forward inline"
-msgstr "Ir para diante no tempo"
-
-#: mail/folder-browser.c:586
-msgid "Mark as Read"
-msgstr ""
-
-#: mail/folder-browser.c:588
-msgid "Mark as Unread"
-msgstr ""
-
-#: mail/folder-browser.c:593
-#, fuzzy
-msgid "Move to Folder..."
-msgstr "Mover para a Carpeta"
-
-#: mail/folder-browser.c:595
-#, fuzzy
-msgid "Copy to Folder..."
-msgstr "Copiar á Carpeta"
-
-#: mail/folder-browser.c:599 ui/evolution-mail.xml.h:81
-#, fuzzy
-msgid "Undelete"
-msgstr "Eliminar"
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:609 ui/evolution-mail.xml.h:1
-msgid "Apply Filters"
-msgstr "Aplicar Filtros"
-
-#: mail/folder-browser.c:613
-msgid "Create Rule From Message"
-msgstr ""
-
-#: mail/folder-browser.c:735
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr ""
-
-#: mail/folder-browser.c:736
-#, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-#, fuzzy
-msgid "Evolution mail composer."
-msgstr "Non se pode inicializar o compoñente de correo de Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-#, fuzzy
-msgid "Evolution mail executive summary component."
-msgstr "Non se pode inicializar o compoñente de correo de Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-#, fuzzy
-msgid "Evolution mail folder display component."
-msgstr "Utilidade de configuración para o conducto de axenda de evolution.\n"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-#, fuzzy
-msgid "Evolution mail folder factory component."
-msgstr "Utilidade de configuración para o conducto de axenda de evolution.\n"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-#, fuzzy
-msgid "Factory for the Evolution composer."
-msgstr "Utilidade de configuración para o conducto de axenda de evolution.\n"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-#, fuzzy
-msgid "Factory for the Evolution mail component."
-msgstr "Utilidade de configuración para o conducto de axenda de evolution.\n"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-#, fuzzy
-msgid "Factory for the Mail Summary component."
-msgstr "Utilidade de configuración para o conducto de axenda de evolution.\n"
-
-#: mail/local-config.glade.h:1
-#, fuzzy
-msgid "Current store format:"
-msgstr "Non foi posible iniciar wombat"
-
-#: mail/local-config.glade.h:2
-#, fuzzy
-msgid "Mailbox Format"
-msgstr "Formato"
-
-#: mail/local-config.glade.h:3
-#, fuzzy
-msgid "New store format:"
-msgstr "Tipo de fonte de Novas:"
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-
-#: mail/local-config.glade.h:7
-#, fuzzy
-msgid "maildir"
-msgstr "Correo Electrónico 2"
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr ""
-
-#: mail/local-config.glade.h:9
-#, fuzzy
-msgid "mh"
-msgstr "h"
-
-#: mail/mail-accounts.c:121 mail/mail-accounts.c:165
-#, fuzzy
-msgid " (default)"
-msgstr "Eliminar"
-
-#: mail/mail-accounts.c:197
-#, fuzzy
-msgid "Disable"
-msgstr "Desactivar."
-
-#: mail/mail-accounts.c:199 mail/mail-config.glade.h:25
-msgid "Enable"
-msgstr ""
-
-#: mail/mail-accounts.c:280 mail/mail-accounts.c:284
-#, fuzzy
-msgid "Are you sure you want to delete this account?"
-msgstr ""
-"¿Está seguro de que quere\n"
-"borrar este contacto?"
-
-#: mail/mail-accounts.c:418 mail/mail-accounts.c:422
-#, fuzzy
-msgid "Are you sure you want to delete this news account?"
-msgstr ""
-"¿Está seguro de que quere\n"
-"borrar este contacto?"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:536
-#, fuzzy
-msgid "Evolution Account Manager"
-msgstr "Xestión e Contas"
-
-#: mail/mail-account-editor.c:105
-msgid "You have not filled in all of the required information."
-msgstr ""
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:173
-#, fuzzy
-msgid "Evolution Account Editor"
-msgstr "Instalación de Evolution"
-
-#: mail/mail-autofilter.c:70
-#, c-format
-msgid "Mail to %s"
-msgstr "Enviar por correo a %s"
-
-#: mail/mail-autofilter.c:213
-#, c-format
-msgid "Subject is %s"
-msgstr "O asunto é %s"
-
-#: mail/mail-autofilter.c:229
-#, c-format
-msgid "Mail from %s"
-msgstr "Enviar dende %s"
-
-#: mail/mail-autofilter.c:285
-#, c-format
-msgid "%s mailing list"
-msgstr "lista de correo %s"
-
-#: mail/mail-autofilter.c:335 mail/mail-autofilter.c:357
-msgid "Add Filter Rule"
-msgstr "Engadir Regra de Filtrado"
-
-#: mail/mail-callbacks.c:93
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-
-#: mail/mail-callbacks.c:146
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-"Ten que configurar unha identidade\n"
-"antes de poder escribir correo."
-
-#: mail/mail-callbacks.c:158
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-
-#: mail/mail-callbacks.c:202
-msgid "You have not set a mail transport method"
-msgstr "Non definiu ningún método de envío de correo"
-
-#: mail/mail-callbacks.c:235
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-"Esta mensaxe non ten asunto.\n"
-"¿Enviar realmente?"
-
-#: mail/mail-callbacks.c:308
-msgid "You must specify recipients in order to send this message."
-msgstr "Ten que especificar destinatarios para poder enviar esta mensaxe."
-
-#: mail/mail-callbacks.c:351
-#, fuzzy
-msgid "You must configure an account before you can send this email."
-msgstr ""
-"Ten que configurar unha identidade\n"
-"antes de poder escribir correo."
-
-#: mail/mail-callbacks.c:591
-#, c-format
-msgid "On %s, %s wrote:\n"
-msgstr ""
-
-#: mail/mail-callbacks.c:773
-#, fuzzy
-msgid "Forwarded message:\n"
-msgstr "Mensaxe reenviada - %s"
-
-#: mail/mail-callbacks.c:876
-msgid "Move message(s) to"
-msgstr "Mover mensaxe(s) a"
-
-#: mail/mail-callbacks.c:878
-msgid "Copy message(s) to"
-msgstr "Copiar mensaxe(s) a"
-
-#: mail/mail-callbacks.c:1019
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-"Só pode editar mensaxes gardados\n"
-"na carpeta de Borrador."
-
-#: mail/mail-callbacks.c:1056
-#, fuzzy
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-"Só pode editar mensaxes gardados\n"
-"na carpeta de Borrador."
-
-#: mail/mail-callbacks.c:1089 mail/mail-display.c:90
-msgid "Overwrite file?"
-msgstr "¿Sobrescribir ficheiro?"
-
-#: mail/mail-callbacks.c:1093 mail/mail-display.c:94
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-"Xa existe un ficheiro con ese nome.\n"
-"¿Sobrescribilo?"
-
-#: mail/mail-callbacks.c:1137
-#, fuzzy
-msgid "Save Message As..."
-msgstr "Gardar como..."
-
-#: mail/mail-callbacks.c:1139
-#, fuzzy
-msgid "Save Messages As..."
-msgstr "Gardar como..."
-
-#: mail/mail-callbacks.c:1253
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-"Erro cargando a información do filtro:\n"
-"%s"
-
-#: mail/mail-callbacks.c:1302 ui/evolution-mail.xml.h:51
-msgid "Print Message"
-msgstr "Imprimir Mensaxe"
-
-#: mail/mail-callbacks.c:1349
-msgid "Printing of message failed"
-msgstr "A impresión da mensaxe fallou"
-
-#: mail/mail-config.c:1043 mail/mail-config.c:1046
-#, fuzzy
-msgid "Connecting to server..."
-msgstr "Non foi posible conectarse ó servidor POP en %s."
-
-#: mail/mail-config.glade.h:1
-#, fuzzy
-msgid " Check for supported types "
-msgstr "Detectar tipos soportados..."
-
-#: mail/mail-config.glade.h:2
-#, fuzzy
-msgid " color"
-msgstr "Cores"
-
-#: mail/mail-config.glade.h:3
-#, fuzzy
-msgid "Account"
-msgstr "Contas"
-
-#: mail/mail-config.glade.h:4
-msgid "Account Information"
-msgstr "Información de Contas"
-
-#: mail/mail-config.glade.h:5
-#, fuzzy
-msgid "Account Management"
-msgstr "Xestión e Contas"
-
-#: mail/mail-config.glade.h:6
-#, fuzzy
-msgid "Accounts"
-msgstr "Contas"
-
-#: mail/mail-config.glade.h:8
-msgid "Authentication"
-msgstr "Autenticación"
-
-#: mail/mail-config.glade.h:9
-#, fuzzy
-msgid "Authentication Type: "
-msgstr "Autenticación:"
-
-#: mail/mail-config.glade.h:10
-msgid "Automatically check for new mail every"
-msgstr ""
-
-#: mail/mail-config.glade.h:12
-#, fuzzy
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-"A configuración do correo electrónico está completa.\n"
-"Prema \"Finalizar\" para gardar a nova configuración"
-
-#: mail/mail-config.glade.h:18
-#, fuzzy
-msgid "De_fault"
-msgstr "Eliminar"
-
-#: mail/mail-config.glade.h:20
-#, fuzzy
-msgid "Done"
-msgstr "mes"
-
-#: mail/mail-config.glade.h:21
-#, fuzzy
-msgid "Drafts"
-msgstr "Pegar"
-
-#: mail/mail-config.glade.h:22
-#, fuzzy
-msgid "Drafts folder:"
-msgstr "Creando unha nova carpeta"
-
-#: mail/mail-config.glade.h:24
-msgid "Email Address:"
-msgstr "Enderezo de Email:"
-
-#: mail/mail-config.glade.h:26
-msgid "Full Name:"
-msgstr "Nome Completo:"
-
-#: mail/mail-config.glade.h:27
-msgid "Highlight citations with "
-msgstr ""
-
-#: mail/mail-config.glade.h:29
-#, fuzzy
-msgid "IMAPv4 "
-msgstr "IMAPv4"
-
-#: mail/mail-config.glade.h:30
-msgid "Identity"
-msgstr "Identidade"
-
-#: mail/mail-config.glade.h:31
-#, fuzzy
-msgid "Kerberos "
-msgstr "Kerberos 4"
-
-#: mail/mail-config.glade.h:32
-msgid "Mail Configuration"
-msgstr "Configuración do Correo"
-
-#: mail/mail-config.glade.h:33
-msgid "Make this my default account"
-msgstr ""
-
-#: mail/mail-config.glade.h:34
-#, fuzzy
-msgid "Mark messages as \"Read\" after:"
-msgstr "Marcar mensaxe como lida [ms]: "
-
-#: mail/mail-config.glade.h:36
-msgid "News"
-msgstr "Novas"
-
-#: mail/mail-config.glade.h:38
-#, fuzzy
-msgid "Optional Information"
-msgstr "Sen Información"
-
-#: mail/mail-config.glade.h:39
-msgid "Organization:"
-msgstr "Organización:"
-
-#: mail/mail-config.glade.h:41
-msgid "PGP binary path:"
-msgstr ""
-
-#: mail/mail-config.glade.h:46
-#, fuzzy
-msgid "Qmail maildir "
-msgstr "Correo Electrónico 2"
-
-#: mail/mail-config.glade.h:47
-#, fuzzy
-msgid "Receiving Email"
-msgstr "Enviando Correo"
-
-#: mail/mail-config.glade.h:48
-#, fuzzy
-msgid "Receiving Mail"
-msgstr "Enviando Correo"
-
-#: mail/mail-config.glade.h:49
-#, fuzzy
-msgid "Receiving Options"
-msgstr "Data de recepción"
-
-#: mail/mail-config.glade.h:51
-#, fuzzy
-msgid "Required Information"
-msgstr "Sen Información"
-
-#: mail/mail-config.glade.h:53
-msgid "Select PGP binary"
-msgstr ""
-
-#: mail/mail-config.glade.h:54
-#, fuzzy
-msgid "Send mail in HTML format by default."
-msgstr "Enviar mensaxes en formato HTML"
-
-#: mail/mail-config.glade.h:55
-#, fuzzy
-msgid "Sending Email"
-msgstr "Enviando Correo"
-
-#: mail/mail-config.glade.h:56
-#, fuzzy
-msgid "Sending Mail"
-msgstr "Enviando Correo"
-
-#: mail/mail-config.glade.h:58
-#, fuzzy
-msgid "Sent"
-msgstr "Autor"
-
-#: mail/mail-config.glade.h:59
-#, fuzzy
-msgid "Sent and Draft Messages"
-msgstr "Axenda"
-
-#: mail/mail-config.glade.h:60
-#, fuzzy
-msgid "Sent messages folder:"
-msgstr "Abrindo as mensaxes da carpeta \"%s\""
-
-#: mail/mail-config.glade.h:61
-msgid "Server Configuration"
-msgstr "Configuración do Servidor"
-
-#: mail/mail-config.glade.h:62
-msgid "Server Type: "
-msgstr "Tipo de Servidor: "
-
-#: mail/mail-config.glade.h:63
-#, fuzzy
-msgid "Server requires authentication"
-msgstr "O servidor SMTP require autenticación"
-
-#: mail/mail-config.glade.h:64
-msgid "Signature file:"
-msgstr "Ficheiro de sinatura:"
-
-#: mail/mail-config.glade.h:65
-msgid "Sources"
-msgstr "Fontes"
-
-#: mail/mail-config.glade.h:66
-#, fuzzy
-msgid "Special Folders"
-msgstr "Carpetas Virtuais"
-
-#: mail/mail-config.glade.h:67
-msgid "Standard Unix mbox"
-msgstr ""
-
-#: mail/mail-config.glade.h:68
-#, fuzzy
-msgid "Type"
-msgstr "Tipo:"
-
-#: mail/mail-config.glade.h:69
-#, fuzzy
-msgid "Use secure connection (SSL)"
-msgstr "O servidor SMTP require autenticación"
-
-#: mail/mail-config.glade.h:70
-msgid "Username:"
-msgstr "Nome de usuario:"
-
-#: mail/mail-config.glade.h:71
-#, fuzzy
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr "¡Benvido ó axudante da Configuración de Correo do Evolution!"
-
-#: mail/mail-config.glade.h:76 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:43 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:29
-msgid "_Edit"
-msgstr "_Editar"
-
-#: mail/mail-config-druid.c:99
-msgid ""
-"Please enter your name and email address below. The \"optional\" fields "
-"below do not need to be filled in, unless you wish to include this "
-"information in email you send."
-msgstr ""
-
-#: mail/mail-config-druid.c:101
-msgid ""
-"Please enter information about your incoming mail server below. If you don't "
-"know what kind of server you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-
-#: mail/mail-config-druid.c:105
-msgid ""
-"Please enter information about your outgoing mail protocol below. If you "
-"don't know which protocol you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-
-#: mail/mail-config-druid.c:107
-msgid ""
-"You are almost done with the mail configuration process. The identity, "
-"incoming mail server and outgoing mail transport method which you provided "
-"will be grouped together to make an Evolution mail account. Please enter a "
-"name for this account in the space below. This name will be used for display "
-"purposes only."
-msgstr ""
-
-#. set window title
-#: mail/mail-config-druid.c:445
-msgid "Evolution Account Wizard"
-msgstr ""
-
-#: mail/mail-display.c:194
-msgid "Save Attachment"
-msgstr "Gardar Anexo"
-
-#: mail/mail-display.c:234
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr "Non foi posible crear o directorio temporal: %s"
-
-#: mail/mail-display.c:295
-msgid "Save to Disk..."
-msgstr "Gardar ó Disco..."
-
-#: mail/mail-display.c:297
-#, c-format
-msgid "Open in %s..."
-msgstr "Abrir en %s..."
-
-#: mail/mail-display.c:299
-msgid "View Inline"
-msgstr ""
-
-#: mail/mail-display.c:334
-msgid "External Viewer"
-msgstr "Visualizador Externo"
-
-#: mail/mail-display.c:357
-#, c-format
-msgid "View Inline (via %s)"
-msgstr ""
-
-#: mail/mail-display.c:361
-msgid "Hide"
-msgstr "Agochar"
-
-#: mail/mail-display.c:1102
-#, fuzzy
-msgid "Open link in browser"
-msgstr "Abrir nunha Nova Fiestra"
-
-#: mail/mail-display.c:1104
-#, fuzzy
-msgid "Save as (FIXME)"
-msgstr "_Tarefa (FIXME)"
-
-#: mail/mail-display.c:1106
-#, fuzzy
-msgid "Copy location (FIXME)"
-msgstr "_Contacto (FIXME)"
-
-#: mail/mail-format.c:518
-#, c-format
-msgid "%s attachment"
-msgstr ""
-
-#: mail/mail-format.c:560
-msgid "Could not parse MIME message. Displaying as source."
-msgstr ""
-
-#: mail/mail-format.c:742
-#, fuzzy
-msgid "Loading message content"
-msgstr "Reenviando mensaxes \"%s\""
-
-#: mail/mail-format.c:1046
-msgid "Encrypted message not displayed"
-msgstr "Mensaxe cifrada non visualizada"
-
-#: mail/mail-format.c:1052
-msgid "Encrypted message"
-msgstr "Mensaxe cifrada"
-
-#: mail/mail-format.c:1053
-msgid "Click icon to decrypt."
-msgstr ""
-
-#: mail/mail-format.c:1137 mail/mail-format.c:1526
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr ""
-
-#: mail/mail-format.c:1145 mail/mail-format.c:1534
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr ""
-
-#: mail/mail-format.c:1747
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr ""
-
-#: mail/mail-format.c:1759
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr ""
-
-#: mail/mail-format.c:1763
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr ""
-
-#: mail/mail-format.c:1797
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr ""
-
-#: mail/mail-format.c:1802
-msgid "Malformed external-body part."
-msgstr ""
-
-#: mail/mail-local.c:337
-#, fuzzy, c-format
-msgid "No such folder %s"
-msgstr "Non existe a carpeta `%s'."
-
-#: mail/mail-local.c:509
-#, fuzzy, c-format
-msgid "Opening '%s'"
-msgstr "Abrir en %s..."
-
-#: mail/mail-local.c:787
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr "Cambiando a carpeta \"%s\" ó formato \"%s\""
-
-#: mail/mail-local.c:791
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr "Cambiar carpeta \"%s\" ó formato \"%s\""
-
-#: mail/mail-local.c:815
-#, fuzzy
-msgid "Reconfiguring folder"
-msgstr "_Configurar Carpeta"
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:844
-msgid "Closing current folder"
-msgstr "Pechando a carpeta actual"
-
-#: mail/mail-local.c:876
-msgid "Renaming old folder and opening"
-msgstr "Renomeando a carpeta antiga e abrindo"
-
-#: mail/mail-local.c:894
-msgid "Creating new folder"
-msgstr "Creando unha nova carpeta"
-
-#: mail/mail-local.c:908
-msgid "Copying messages"
-msgstr "Copiando as mensaxes"
-
-#: mail/mail-local.c:925
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-
-#: mail/mail-local.c:964
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-
-#: mail/mail-mt.c:190
-#, fuzzy, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-"Erro na expresión regular '%s':\n"
-"%s"
-
-#: mail/mail-mt.c:192
-#, fuzzy, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-"Erro cargando a información do filtro:\n"
-"%s"
-
-#: mail/mail-mt.c:515 mail/mail-mt.c:544 mail/mail-mt.c:891
-#, fuzzy
-msgid "Working"
-msgstr "Movendo"
-
-#: mail/mail-mt.c:679 mail/session.c:98
-msgid "Do you accept?"
-msgstr ""
-
-#: mail/mail-mt.c:873
-#, fuzzy
-msgid "Evolution progress"
-msgstr "Evolution"
-
-#: mail/mail-ops.c:587
-#, c-format
-msgid "Sending \"%s\""
-msgstr "Enviando \"%s\""
-
-#: mail/mail-ops.c:589
-#, fuzzy
-msgid "Sending message"
-msgstr "Borrar esta mensaxe"
-
-#: mail/mail-ops.c:704
-#, fuzzy, c-format
-msgid "Sending message %d of %d"
-msgstr "Escribindo a mensaxe %d de %d"
-
-#: mail/mail-ops.c:723
-#, fuzzy, c-format
-msgid "Failed on message %d of %d"
-msgstr "Marcando a mensaxe %d de %d"
-
-#: mail/mail-ops.c:725 mail/mail-send-recv.c:475
-#, fuzzy
-msgid "Complete."
-msgstr "% Comp_leta:"
-
-#: mail/mail-ops.c:811
-#, fuzzy
-msgid "Saving message to folder"
-msgstr "Abrindo as mensaxes da carpeta \"%s\""
-
-#: mail/mail-ops.c:884
-#, fuzzy, c-format
-msgid "Moving messages to %s"
-msgstr "Mover mensaxe(s) a"
-
-#: mail/mail-ops.c:884
-#, fuzzy, c-format
-msgid "Copying messages to %s"
-msgstr "Copiando as mensaxes"
-
-#: mail/mail-ops.c:900
-msgid "Moving"
-msgstr "Movendo"
-
-#: mail/mail-ops.c:903
-msgid "Copying"
-msgstr "Copiando"
-
-#: mail/mail-ops.c:978
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr "Examinando as carpetas en \"%s\""
-
-#: mail/mail-ops.c:1139
-#, fuzzy
-msgid "Forwarded messages"
-msgstr "Mensaxe reenviada - %s"
-
-#: mail/mail-ops.c:1180 mail/mail-ops.c:1318
-#, fuzzy, c-format
-msgid "Opening folder %s"
-msgstr "Examinando as carpetas en \"%s\""
-
-#: mail/mail-ops.c:1247
-#, fuzzy, c-format
-msgid "Opening store %s"
-msgstr "Examinando as carpetas en \"%s\""
-
-#: mail/mail-ops.c:1434
-msgid "Expunging folder"
-msgstr ""
-
-#: mail/mail-ops.c:1483
-#, fuzzy, c-format
-msgid "Retrieving message %s"
-msgstr "Recibindo a mensaxe %d de %d"
-
-#: mail/mail-ops.c:1550
-#, fuzzy
-msgid "Retrieving messages"
-msgstr "Recibindo a mensaxe %d de %d"
-
-#: mail/mail-ops.c:1560
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr "Recibindo a mensaxe número %d de %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1634
-#, fuzzy
-msgid "Saving messages"
-msgstr "Copiando as mensaxes"
-
-#: mail/mail-ops.c:1713
-#, fuzzy, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr "Non foi posible abrir ou crear o ficheiro .newsrc para %s: %s"
-
-#: mail/mail-ops.c:1726
-#, fuzzy, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr "Recibindo a mensaxe %d de %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1740
-#, fuzzy, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr "Erro gardando o ficheiro: %s"
-
-#: mail/mail-ops.c:1814
-#, fuzzy
-msgid "Saving attachment"
-msgstr "Gardar Anexo"
-
-#: mail/mail-ops.c:1829
-#, fuzzy, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr "Non foi posible abrir ou crear o ficheiro .newsrc para %s: %s"
-
-#: mail/mail-ops.c:1857
-#, c-format
-msgid "Could not write data: %s"
-msgstr "Non foi posible escribir os datos: %s"
-
-#: mail/mail-search-dialogue.c:113
-#, fuzzy
-msgid "_Search"
-msgstr "Buscar"
-
-#: mail/mail-send-recv.c:138
-#, fuzzy
-msgid "Cancelling ..."
-msgstr "Cancelar"
-
-#: mail/mail-send-recv.c:233
-#, fuzzy
-msgid "Send & Receive mail"
-msgstr "Enviando Correo"
-
-#: mail/mail-send-recv.c:236
-#, fuzzy
-msgid "Receiving"
-msgstr "Data de recepción"
-
-#: mail/mail-send-recv.c:285
-msgid "Updating ..."
-msgstr ""
-
-#: mail/mail-send-recv.c:287 mail/mail-send-recv.c:333
-msgid "Waiting ..."
-msgstr ""
-
-#: mail/mail-send-recv.c:306
-#, fuzzy
-msgid "Sending"
-msgstr "Enviando \"%s\""
-
-#: mail/mail-send-recv.c:471
-#, fuzzy
-msgid "Cancelled."
-msgstr "Cancelar"
-
-#: mail/mail-summary.c:109
-msgid "Incomplete message written on pipe!"
-msgstr ""
-
-#: mail/mail-tools.c:141
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr "Non foi posible crear a caixa de correo temporal `%s': %s"
-
-#: mail/mail-tools.c:188
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr "[%s] (mensaxe reenviada)"
-
-#: mail/mail-tools.c:198
-msgid "Fwd: (no subject)"
-msgstr "Fwd: (sen asunto)"
-
-#: mail/mail-tools.c:215
-#, c-format
-msgid "Forwarded message - %s"
-msgstr "Mensaxe reenviada - %s"
-
-#: mail/mail-tools.c:217
-msgid "Forwarded message (no subject)"
-msgstr "Mensaxe reenviada (sen asunto)"
-
-#: mail/mail-tools.c:414
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-msgstr ""
-
-#: mail/mail-vfolder.c:249
-msgid "VFolders"
-msgstr ""
-
-#: mail/mail-vfolder.c:427
-msgid "New VFolder"
-msgstr "Nova VFolder"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/mail-view.c:144 ui/evolution-mail.xml.h:59
-msgid "Reply"
-msgstr "Responder"
-
-#: mail/mail-view.c:144 ui/evolution-mail.xml.h:65
-msgid "Reply to the sender of this message"
-msgstr "Responder ó autor desta mensaxe"
-
-#: mail/mail-view.c:147 ui/evolution-mail.xml.h:63
-msgid "Reply to all recipients of this message"
-msgstr "Responder a tódolos destinatarios desta mensaxe"
-
-#: mail/mail-view.c:150 ui/evolution-mail.xml.h:28
-msgid "Forward this message"
-msgstr "Re-enviar esta mensaxe"
-
-#: mail/mail-view.c:154 ui/evolution-mail.xml.h:56
-msgid "Print the selected message"
-msgstr "Imprimir a mensaxe seleccionada"
-
-#: mail/mail-view.c:156 ui/evolution-mail.xml.h:13
-msgid "Delete this message"
-msgstr "Borrar esta mensaxe"
-
-#: mail/message-list.c:648
-msgid "Unseen"
-msgstr ""
-
-#: mail/message-list.c:649
-msgid "Seen"
-msgstr ""
-
-#: mail/message-list.c:650
-msgid "Answered"
-msgstr ""
-
-#: mail/message-list.c:651
-#, fuzzy
-msgid "Multiple Unseen Messages"
-msgstr "Non foi posible enviar a mensaxe: %s"
-
-#: mail/message-list.c:652
-#, fuzzy
-msgid "Multiple Messages"
-msgstr "Editar Mensaxe"
-
-#: mail/message-list.c:656
-#, fuzzy
-msgid "Lowest"
-msgstr "Baixa"
-
-#: mail/message-list.c:657
-#, fuzzy
-msgid "Lower"
-msgstr "Baixa"
-
-#: mail/message-list.c:661
-#, fuzzy
-msgid "Higher"
-msgstr "Alta"
-
-#: mail/message-list.c:662
-#, fuzzy
-msgid "Highest"
-msgstr "Alta"
-
-#: mail/message-list.c:912
-msgid "?"
-msgstr ""
-
-#: mail/message-list.c:919
-#, fuzzy
-msgid "Today %l:%M %p"
-msgstr "%I:%M %p"
-
-#: mail/message-list.c:928
-msgid "Yesterday %l:%M %p"
-msgstr ""
-
-#: mail/message-list.c:940
-#, fuzzy
-msgid "%a %l:%M %p"
-msgstr "%I:%M %p"
-
-#: mail/message-list.c:948
-#, fuzzy
-msgid "%b %d %l:%M %p"
-msgstr "%a %d/%m/%Y %I:%M:%S %p"
-
-#: mail/message-list.c:950
-#, fuzzy
-msgid "%b %d %Y"
-msgstr "%a %d de %Y"
-
-#: mail/message-list.c:1052
-msgid "Flagged"
-msgstr ""
-
-#: mail/message-list.c:1053
-#, fuzzy
-msgid "From"
-msgstr "De:"
-
-#: mail/message-list.c:1053
-#, fuzzy
-msgid "Date"
-msgstr "Pegar"
-
-#: mail/message-list.c:1053
-#, fuzzy
-msgid "Received"
-msgstr "Data de recepción"
-
-#: mail/message-list.c:1054
-#, fuzzy
-msgid "To"
-msgstr "A:"
-
-#: mail/message-list.c:1054
-#, fuzzy
-msgid "Size"
-msgstr "Tamaño:"
-
-#: mail/subscribe-dialog.c:76 shell/e-storage-set-view.c:46
-#, fuzzy
-msgid "Folder"
-msgstr "Carpetas"
-
-#: mail/subscribe-dialog.c:77
-#, fuzzy
-msgid "Store"
-msgstr "Puntuación"
-
-#: mail/subscribe-dialog.c:138
-msgid "Display folders starting with:"
-msgstr ""
-
-#: mail/subscribe-dialog.c:168
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:271
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:273
-#, fuzzy, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr "Abrindo as mensaxes da carpeta \"%s\""
-
-#. Construct the app
-#: mail/subscribe-dialog.c:873
-#, fuzzy
-msgid "Manage Subscriptions"
-msgstr "Descrición:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-#, fuzzy
-msgid "Folder name:"
-msgstr "Nome de ficheiro:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-#, fuzzy
-msgid "Folder type:"
-msgstr "Carpetas"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-#, fuzzy
-msgid "Specify where to create the folder:"
-msgstr "Non hai espacio dabondo para crear a carpeta"
-
-#: shell/importer/importer.c:87
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/importer/importer.c:182
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-
-#: shell/importer/importer.c:202 shell/importer/importer.c:233
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-
-#: shell/importer/importer.c:341
-#, fuzzy, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr "Non hai novo correo en %s."
-
-#: shell/importer/importer.c:351
-#, fuzzy
-msgid "Importing"
-msgstr "Movendo"
-
-#: shell/importer/importer.c:359
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-
-#: shell/importer/importer.c:372
-#, fuzzy, c-format
-msgid "Error starting %s"
-msgstr "Erro cargando o ficheiro: %s"
-
-#: shell/importer/importer.c:387
-#, fuzzy, c-format
-msgid "Error loading %s"
-msgstr "Erro cargando o ficheiro: %s"
-
-#: shell/importer/importer.c:402
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-
-#: shell/importer/importer.c:473
-msgid "Automatic"
-msgstr ""
-
-#: shell/importer/importer.c:523
-#, fuzzy
-msgid "Filename:"
-msgstr "Nome de ficheiro:"
-
-#: shell/importer/import.glade.h:5 shell/importer/importer.c:528
-#, fuzzy
-msgid "Select a file"
-msgstr "Ficheiro de sinatura:"
-
-#: shell/importer/importer.c:538
-#, fuzzy
-msgid "File type:"
-msgstr "Nome de ficheiro:"
-
-#: shell/importer/import.glade.h:4 shell/importer/importer.c:619
-msgid "Import"
-msgstr ""
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr ""
-
-#: shell/importer/import.glade.h:2
-#, fuzzy
-msgid "Evolution Import Utility"
-msgstr "Instalación de Evolution"
-
-#: shell/importer/import.glade.h:3
-#, fuzzy
-msgid "Evolution Importer Utility"
-msgstr "Instalación de Evolution"
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-
-#: shell/e-setup.c:118 shell/e-setup.c:191
-msgid "Evolution installation"
-msgstr "Instalación de Evolution"
-
-#: shell/e-setup.c:122
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-"Esta nova versión do Evolution necesita instalar ficheiros\n"
-"adicionais no seu directorio persoal do Evolution"
-
-#: shell/e-setup.c:123
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr ""
-"Prema \"Aceptar\" para instalar os ficheiros, ou \"Cancelar\" para saír."
-
-#: shell/e-setup.c:163
-msgid "Could not update files correctly"
-msgstr "Non foi posible actualizar os ficheiros correctamente"
-
-#: shell/e-setup.c:166 shell/e-setup.c:234
-msgid "Evolution files successfully installed."
-msgstr "Ficheiros de Evolution instalados con éxito."
-
-#: shell/e-setup.c:195
-#, fuzzy
-msgid "This seems to be the first time you are running Evolution."
-msgstr "Semella que é a primeira vez que executa Evolution."
-
-#: shell/e-setup.c:196
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr ""
-"Prema \"Aceptar\" para instalar os ficheiros de usuario de Evolution en"
-
-#: shell/e-setup.c:215
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"Non se pode crear o directorio\n"
-"%s\n"
-"Erro: %s"
-
-#: shell/e-setup.c:230
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-"Non se poden copiar os ficheiros a\n"
-"`%s'."
-
-#: shell/e-setup.c:255
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-"O ficheiro `%s' non é un directorio.\n"
-"Móvao para poder instalar os ficheiros de\n"
-"usuario de Evolution."
-
-#: shell/e-setup.c:267
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-"O directorio `%s' existe pero non é o\n"
-"directorio de Evolution. Móvao para poder\n"
-"instalar os ficheiros de usuario de Evolution."
-
-#: shell/e-shell-folder-creation-dialog.c:99
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-"Non se pode crear a carpeta indicada:\n"
-"%s"
-
-#: shell/e-shell-folder-creation-dialog.c:156
-msgid "The specified folder name is not valid."
-msgstr "O nome de carpeta indicado non é válido."
-
-#: shell/e-shell-folder-creation-dialog.c:248
-msgid "Evolution - Create new folder"
-msgstr "Evolution - Crear unha nova carpeta"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-"O tipo da carpeta seleccionada non é válido para\n"
-"a operación solicitada."
-
-#: shell/e-shell-folder-selection-dialog.c:319
-msgid "New..."
-msgstr "Nova..."
-
-#: shell/e-shell-folder-title-bar.c:459 shell/e-shell-folder-title-bar.c:460
-msgid "(Untitled)"
-msgstr "(Sen_título)"
-
-#: shell/e-shell-view-menu.c:173
-msgid "Bug buddy was not found in your $PATH."
-msgstr "Bug buddy non foi atopado no seu $PATH."
-
-#: shell/e-shell-view-menu.c:179
-msgid "Bug buddy could not be run."
-msgstr "Non se puido executar Bug buddy."
-
-#: shell/e-shell-view-menu.c:208
-#, fuzzy
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Copyright 1999, 2000 Helix Code, Inc."
-
-#: shell/e-shell-view-menu.c:210
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-"Evolution é unha suite de aplicacións de traballo\n"
-"en grupo para xestión de correo, axenda e contactos\n"
-"dentro do ambiente de escritorio GNOME."
-
-#: shell/e-shell-view-menu.c:374
-msgid "Go to folder..."
-msgstr "Ir á carpeta..."
-
-#: shell/e-shell-view.c:148
-msgid "(No folder displayed)"
-msgstr "(Ningunha carpeta visualizada)"
-
-#: shell/e-shell-view.c:1134
-#, fuzzy, c-format
-msgid "%s - Evolution %s"
-msgstr "Evolution - %s"
-
-#: shell/e-shell-view.c:1136
-#, fuzzy, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "Evolution - %s"
-
-#: shell/e-shell.c:378
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr "Non se pode activar o almacenamento local -- %s"
-
-#: shell/e-shell.c:1248
-#, fuzzy, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-"Ooops! A vista de `%s' morreu inesperadamente. :-(\n"
-"Isto significa probablemente que o compoñente %s se estragou."
-
-#: shell/e-shortcuts-view.c:134
-msgid "Create new shortcut group"
-msgstr "Crear novo grupo de atallos"
-
-#: shell/e-shortcuts-view.c:137
-msgid "Group name:"
-msgstr "Nome do grupo:"
-
-#: shell/e-shortcuts-view.c:260
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-"¿Realmente desexa eliminar o grupo\n"
-"`%s' da barra de atallos?"
-
-#: shell/e-shortcuts-view.c:265
-msgid "Don't remove"
-msgstr "Non eliminar"
-
-#: shell/e-shortcuts-view.c:276
-msgid "_Small Icons"
-msgstr "Iconas _Pequenas"
-
-#: shell/e-shortcuts-view.c:277
-msgid "Show the shortcuts as small icons"
-msgstr "Amosar os atallos como iconas pequenas"
-
-#: shell/e-shortcuts-view.c:279
-msgid "_Large Icons"
-msgstr "Iconas _Grandes"
-
-#: shell/e-shortcuts-view.c:280
-msgid "Show the shortcuts as large icons"
-msgstr "Amosar os atallos como iconas grandes"
-
-#: shell/e-shortcuts-view.c:291
-msgid "_New Group..."
-msgstr "_Novo Grupo..."
-
-#: shell/e-shortcuts-view.c:292
-msgid "Create a new shortcut group"
-msgstr "Crear un novo grupo de atallos"
-
-#: shell/e-shortcuts-view.c:294
-msgid "_Remove This Group..."
-msgstr "_Eliminar este Grupo..."
-
-#: shell/e-shortcuts-view.c:295
-msgid "Remove this shortcut group"
-msgstr "Eliminar este grupo de atallos"
-
-#: shell/e-shortcuts-view.c:300
-#, fuzzy
-msgid "_Hide the Shortcut Bar"
-msgstr "Amosar a Barra de _Atallos"
-
-#: shell/e-shortcuts-view.c:301
-#, fuzzy
-msgid "Hide the shortcut bar"
-msgstr "Amosar a Barra de _Atallos"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate"
-msgstr "Activar"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate this shortcut"
-msgstr "Activar este atallo"
-
-#: shell/e-shortcuts-view.c:388
-msgid "Remove this shortcut from the shortcut bar"
-msgstr "Eliminar este atallo da barra de atallos"
-
-#: shell/e-shortcuts.c:379
-msgid "Error saving shortcuts."
-msgstr "Erro gardando atallos."
-
-#: shell/e-storage-set-view.c:649 ui/evolution-event-editor.xml.h:76
-#: ui/evolution-message-composer.xml.h:53
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:43
-msgid "_View"
-msgstr "_Vista"
-
-#: shell/e-storage-set-view.c:649
-msgid "View the selected folder"
-msgstr "Ver carpeta seleccionada"
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr "(Sen nome)"
-
-#: shell/e-storage.c:459
-msgid "No error"
-msgstr "Sen erro"
-
-#: shell/e-storage.c:461
-msgid "Generic error"
-msgstr "Erro xenérico"
-
-#: shell/e-storage.c:463
-msgid "A folder with the same name already exists"
-msgstr "Xa existe unha carpeta co mesmo nome"
-
-#: shell/e-storage.c:465
-msgid "The specified folder type is not valid"
-msgstr "O tipo da carpeta especificada non é válido"
-
-#: shell/e-storage.c:467
-msgid "I/O error"
-msgstr "Erro de E/S"
-
-#: shell/e-storage.c:469
-msgid "Not enough space to create the folder"
-msgstr "Non hai espacio dabondo para crear a carpeta"
-
-#: shell/e-storage.c:471
-msgid "The specified folder was not found"
-msgstr "Non se atopou a carpeta especificada"
-
-#: shell/e-storage.c:473
-msgid "Function not implemented in this storage"
-msgstr "Función non implementada neste almacenamento"
-
-#: shell/e-storage.c:475
-msgid "Permission denied"
-msgstr "Permiso denegado"
-
-#: shell/e-storage.c:477
-msgid "Operation not supported"
-msgstr "Operación non soportada"
-
-#: shell/e-storage.c:479
-msgid "The specified type is not supported in this storage"
-msgstr "O tipo especificado non está soportado neste almacenamento"
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-#, fuzzy
-msgid "The Evolution shell."
-msgstr "Non se pode inicializar a shell de Evolution."
-
-#: shell/main.c:83
-#, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-
-#: shell/main.c:108
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-"Graciñas\n"
-"O Equipo de Evolution\n"
-
-#: shell/main.c:139
-msgid "Cannot initialize the Evolution shell."
-msgstr "Non se pode inicializar a shell de Evolution."
-
-#: shell/main.c:185
-msgid "Disable splash screen"
-msgstr ""
-
-#: shell/main.c:186
-msgid "Send the debugging output of all components to a file."
-msgstr ""
-
-#: shell/main.c:219
-msgid "Cannot initialize the Bonobo component system."
-msgstr "Non se pode inicializar o sistema de compoñentes de Bonobo"
-
-#: ui/evolution-addressbook.xml.h:2
-#, fuzzy
-msgid "Create new contact"
-msgstr "Crear un novo contacto"
-
-#: ui/evolution-addressbook.xml.h:4
-msgid "Delete a contact"
-msgstr "Borrar un contacto"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-msgid "Find"
-msgstr "Buscar"
-
-#: ui/evolution-addressbook.xml.h:6
-msgid "Find a contact"
-msgstr "Buscar un contacto"
-
-#: ui/evolution-addressbook.xml.h:7
-#, fuzzy
-msgid "New contact"
-msgstr "Ver tódolos contactos"
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-mail.xml.h:49
-msgid "Previews the message to be printed"
-msgstr "Previsualiza a mensaxe que se vai imprimir"
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "Print contacts"
-msgstr "Imprimir contactos"
-
-#: ui/evolution-addressbook.xml.h:12 ui/evolution-mail.xml.h:78
-msgid "Stop"
-msgstr "Parar"
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "Stop Loading"
-msgstr "Parar a Carga"
-
-#: ui/evolution-addressbook.xml.h:14
-msgid "View All"
-msgstr "Ver Todos"
-
-#: ui/evolution-addressbook.xml.h:15
-msgid "View all contacts"
-msgstr "Ver tódolos contactos"
-
-#: ui/evolution-addressbook.xml.h:16
-#, fuzzy
-msgid "_Addressbook Sources..."
-msgstr "Engadir Fonte"
-
-#: ui/evolution-addressbook.xml.h:17
-#, fuzzy
-msgid "_Contact"
-msgstr "_Contactos..."
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-#, fuzzy
-msgid "_Print..."
-msgstr "Imprimir..."
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr "_Buscar contactos"
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-mail.xml.h:110
-#: ui/evolution-task-editor-dialog.xml.h:88 ui/evolution.xml.h:42
-msgid "_Tools"
-msgstr "_Ferramentas"
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr "5 Días"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-#, fuzzy
-msgid "Alter preferences"
-msgstr "Preferencias da Axenda"
-
-#: ui/evolution-calendar.xml.h:4
-#, fuzzy
-msgid "Create a new all day Event"
-msgstr "Crear unha nova axenda"
-
-#: ui/evolution-calendar.xml.h:5
-msgid "Create a new appointment"
-msgstr "Crear unha nova cita"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr "Crear unha nova axenda"
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr "Día"
-
-#: ui/evolution-calendar.xml.h:8
-#, fuzzy
-msgid "Go To"
-msgstr "Ir para"
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr "Ir para atrás no tempo"
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go forward in time"
-msgstr "Ir para diante no tempo"
-
-#: ui/evolution-calendar.xml.h:11
-#, fuzzy
-msgid "Go to _Date"
-msgstr "Ir á data"
-
-#: ui/evolution-calendar.xml.h:12
-#, fuzzy
-msgid "Go to _Today"
-msgstr "Ir a hoxe"
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr "Ir para a data especificada"
-
-#: ui/evolution-calendar.xml.h:14
-#, fuzzy
-msgid "Go to present time"
-msgstr "Ir ó elemento seguinte"
-
-#: ui/evolution-calendar.xml.h:15
-msgid "Month"
-msgstr "Mes"
-
-#: ui/evolution-calendar.xml.h:17
-#, fuzzy
-msgid "New _Event"
-msgstr "Nova A_xenda"
-
-#: ui/evolution-calendar.xml.h:18 ui/evolution-event-editor.xml.h:29
-#: ui/evolution-task-editor-dialog.xml.h:32
-#, fuzzy
-msgid "Next"
-msgstr "Seguinte"
-
-#: ui/evolution-calendar.xml.h:20
-#, fuzzy
-msgid "Open Calendar"
-msgstr "_Abrir axenda"
-
-#: ui/evolution-calendar.xml.h:21
-#, fuzzy
-msgid "Prev"
-msgstr "Previsualización:"
-
-#: ui/evolution-calendar.xml.h:22
-#, fuzzy
-msgid "Previews the calendar to be printed"
-msgstr "Previsualiza a mensaxe que se vai imprimir"
-
-#: ui/evolution-calendar.xml.h:25
-#, fuzzy
-msgid "Print calendar"
-msgstr "Imprimir axenda"
-
-#: ui/evolution-calendar.xml.h:26
-#, fuzzy
-msgid "Print this Calendar"
-msgstr "Imprimir esta axenda"
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:15
-#, fuzzy
-msgid "Save As"
-msgstr "Gardar _Como"
-
-#: ui/evolution-calendar.xml.h:28
-msgid "Save calendar as something else"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:30
-msgid "Show 1 day"
-msgstr "Amosar un día"
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr "Amosar un mes"
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr "Amosar unha semana"
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr "Amosar a semana laboral"
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:226
-#: widgets/misc/e-dateedit.c:422
-msgid "Today"
-msgstr "Hoxe"
-
-#: ui/evolution-calendar.xml.h:35
-#, fuzzy
-msgid "W_ork Week"
-msgstr "semana"
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr "Semana"
-
-#: ui/evolution-calendar.xml.h:37
-#, fuzzy
-msgid "_Appointment"
-msgstr "Citas:"
-
-#: ui/evolution-calendar.xml.h:38
-#, fuzzy
-msgid "_Day"
-msgstr "Día"
-
-#: ui/evolution-calendar.xml.h:39
-#, fuzzy
-msgid "_Month"
-msgstr "Mes"
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:38
-msgid "_New"
-msgstr "_Novo"
-
-#: ui/evolution-calendar.xml.h:41
-msgid "_Open Calendar"
-msgstr "_Abrir axenda"
-
-#: ui/evolution-calendar.xml.h:43 ui/evolution-mail.xml.h:106
-#: ui/evolution-tasks.xml.h:8
-#, fuzzy
-msgid "_Save As..."
-msgstr "Gardar _Como..."
-
-#: ui/evolution-calendar.xml.h:45
-#, fuzzy
-msgid "_Week"
-msgstr "Semana"
-
-#: ui/evolution-contact-editor.xml.h:2
-msgid "Delete this item"
-msgstr "Borrar este elemento"
-
-#: ui/evolution-contact-editor.xml.h:3
-#, fuzzy
-msgid "Delete..."
-msgstr "Eliminar"
-
-#: ui/evolution-contact-editor.xml.h:4
-msgid "Help"
-msgstr "Axuda"
-
-#: ui/evolution-contact-editor.xml.h:5
-#, fuzzy
-msgid "Print En_velope..."
-msgstr "_Configuración da Impresión..."
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-msgid "Print this item"
-msgstr "Imprimir este elemento"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-mail.xml.h:57 ui/evolution-task-editor-dialog.xml.h:41
-msgid "Print..."
-msgstr "Imprimir..."
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:16
-#: ui/evolution-task-editor-dialog.xml.h:51
-msgid "Save _As..."
-msgstr "Gardar _Como..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-msgid "Save and Close"
-msgstr "Gardar e Pechar"
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr "Gardar o contacto e pechar a caixa de diálogo"
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr "Ver a axuda online"
-
-#: ui/evolution-contact-editor.xml.h:13
-#, fuzzy
-msgid "Send _message to contact..."
-msgstr "Enviar unha mensaxe sen asunto"
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:44 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:30
-msgid "_File"
-msgstr "_Ficheiro"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:51
-#: ui/evolution-task-editor-dialog.xml.h:85
-msgid "_Save"
-msgstr "_Gardar"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr "Acerca desta aplicación"
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr "Acerca de..."
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-msgid "Actio_ns"
-msgstr "Acció_ns"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-#, fuzzy
-msgid "Address _Book... (FIXME)"
-msgstr "FIXME: _Libro de enderezos..."
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-msgid "C_lear"
-msgstr "_Limpar"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-msgid "C_ut"
-msgstr "Co_rtar"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-#, fuzzy
-msgid "Chec_k Names (FIXME)"
-msgstr "_Tarefa (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-msgid "Clear"
-msgstr "Limpar"
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-msgid "Clear the selection"
-msgstr "Limpar a selección"
-
-#: ui/evolution-event-editor.xml.h:11
-msgid "Close this appointment"
-msgstr "Pechar esta cita"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-#, fuzzy
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "Copiar á Carpeta"
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:7
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "Copiar"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-msgid "Copy the selection"
-msgstr "Copiar a selección"
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr "Cortar"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Cut the selection"
-msgstr "Cortar a selección"
-
-#: ui/evolution-event-editor.xml.h:18
-msgid "Delete this appointment"
-msgstr "Borrar esta cita"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr "Envorcar XML"
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr "Envorcar a descrición Xml da Interface"
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-#, fuzzy
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr "FIXME: Pri_meiro elemento na Carpeta"
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-#, fuzzy
-msgid "For_ward (FIXME)"
-msgstr "_Tarefa (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-msgid "Go to the next item"
-msgstr "Ir ó elemento seguinte"
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-msgid "Go to the previous item"
-msgstr "Ir ó elemento anterior"
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-#, fuzzy
-msgid "In_complete Task (FIXME)"
-msgstr "_Tarefa (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-msgid "Modify the file's properties"
-msgstr "Modificar as propiedades do ficheiro"
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-msgid "N_ext"
-msgstr "Se_guinte"
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-#, fuzzy
-msgid "Paste"
-msgstr "_Pegar"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-msgid "Paste the clipboard"
-msgstr "Pegar o contido do cartafol"
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr "An_terior"
-
-#: ui/evolution-event-editor.xml.h:33 ui/evolution-task-editor-dialog.xml.h:36
-#, fuzzy
-msgid "Previous"
-msgstr "An_terior"
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-#, fuzzy
-msgid "Print Pre_view"
-msgstr "Previsualizar da Impresión"
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-msgid "Print S_etup..."
-msgstr "_Configuración da Impresión..."
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-msgid "Print Setup"
-msgstr "Configuración da Impresión"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:14
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:239
-msgid "Save"
-msgstr "Gardar"
-
-#: ui/evolution-event-editor.xml.h:43
-msgid "Save the appointment and close the dialog box"
-msgstr "Gardar a cita e pechar a caixa de diálogo"
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:20
-#: ui/evolution-task-editor-dialog.xml.h:53
-msgid "Save the current file"
-msgstr "Gardar o ficheiro actual"
-
-#: ui/evolution-event-editor.xml.h:46
-#, fuzzy
-msgid "Schedule _Meeting"
-msgstr "FIXME: _Programar Reunión"
-
-#: ui/evolution-event-editor.xml.h:47
-#, fuzzy
-msgid "Schedule some sort of a meeting"
-msgstr "FIXME: Programar Reunión"
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-mail.xml.h:68
-#: ui/evolution-task-editor-dialog.xml.h:57
-#, fuzzy
-msgid "Select All"
-msgstr "Seleccionar _Todo"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-msgid "Select everything"
-msgstr "Seleccionar todo"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr "Configurar as opcións de páxina para a impresora actual"
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-#, fuzzy
-msgid "Task _Request (FIXME)"
-msgstr "_Tarefa (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-message-composer.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:63
-msgid "_About..."
-msgstr "_Acerca de..."
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:41
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:27
-msgid "_Close"
-msgstr "_Pechar"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:28
-msgid "_Contact (FIXME)"
-msgstr "_Contacto (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-msgid "_Copy"
-msgstr "_Copiar"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr "_Depuración"
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:46
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:34
-msgid "_Help"
-msgstr "A_xuda"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-#, fuzzy
-msgid "_Item (FIXME)"
-msgstr "_Tarefa (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-#, fuzzy
-msgid "_Journal Entry (FIXME)"
-msgstr "_Contacto (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-#, fuzzy
-msgid "_Last Item in Folder (FIXME)"
-msgstr "FIXME: _Derradeiro Elemento na Carpeta"
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-#, fuzzy
-msgid "_Mail Message (FIXME)"
-msgstr "_Tarefa (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-#, fuzzy
-msgid "_Move to Folder... (FIXME)"
-msgstr "_Mover para a Carpeta"
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-#, fuzzy
-msgid "_Note (FIXME)"
-msgstr "_Contacto (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-msgid "_Paste"
-msgstr "_Pegar"
-
-#: ui/evolution-event-editor.xml.h:69 ui/evolution-task-editor-dialog.xml.h:82
-#: ui/evolution-tasks.xml.h:7
-msgid "_Print"
-msgstr "_Imprimir"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:102
-#: ui/evolution-task-editor-dialog.xml.h:83
-msgid "_Properties..."
-msgstr "_Propiedades..."
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-#, fuzzy
-msgid "_Select All"
-msgstr "Seleccionar _Todo"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:41
-msgid "_Task (FIXME)"
-msgstr "_Tarefa (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-#, fuzzy
-msgid "_Unread Item (FIXME)"
-msgstr "_Contacto (FIXME)"
-
-#: ui/evolution-executive-summary.xml.h:1
-#, fuzzy
-msgid "Add Service"
-msgstr "Engadir Fonte"
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:3
-#, fuzzy
-msgid "Create a new email"
-msgstr "Crear un novo contacto"
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:5
-#, fuzzy
-msgid "New Mail"
-msgstr "Recibir Correo"
-
-#: ui/evolution-mail.xml.h:2
-msgid "Apply any new filters to the mail in this box"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:3
-msgid "Change the properties of this folder"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:4
-msgid "Compose"
-msgstr "Redactar"
-
-#: ui/evolution-mail.xml.h:5
-msgid "Compose a new message"
-msgstr "Redactar unha nova mensaxe"
-
-#: ui/evolution-mail.xml.h:6
-#, fuzzy
-msgid "Configure Folder..."
-msgstr "Mover para a Carpeta"
-
-#: ui/evolution-mail.xml.h:8
-msgid "Copy message to a new folder"
-msgstr "Copiar a mensaxe nunha nova carpeta"
-
-#: ui/evolution-mail.xml.h:9
-#, fuzzy
-msgid "Copy selected messages to another folder"
-msgstr "Copiar a mensaxe nunha nova carpeta"
-
-#: ui/evolution-mail.xml.h:10
-#, fuzzy
-msgid "Create _Virtual Folder From Message"
-msgstr "Carpetas Virtuais"
-
-#: ui/evolution-mail.xml.h:12
-#, fuzzy
-msgid "Delete the selected messages"
-msgstr "Imprimir a mensaxe seleccionada"
-
-#: ui/evolution-mail.xml.h:14
-msgid "Display all of the message headers"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:15
-#, fuzzy
-msgid "Edit Message"
-msgstr "_Editar Mensaxe"
-
-#: ui/evolution-mail.xml.h:16
-#, fuzzy
-msgid "Edit the current message"
-msgstr "a hora actual"
-
-#: ui/evolution-mail.xml.h:17
-#, fuzzy
-msgid "Empty _Trash"
-msgstr "Días baleiros:"
-
-#: ui/evolution-mail.xml.h:18
-msgid "Expunge"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:19
-#, fuzzy
-msgid "Filter on Se_nder"
-msgstr "Responder ó Autor"
-
-#: ui/evolution-mail.xml.h:20
-#, fuzzy
-msgid "Filter on _Recipients"
-msgstr "Destinatarios"
-
-#: ui/evolution-mail.xml.h:21
-#, fuzzy
-msgid "Filter on _Subject"
-msgstr "Asunto"
-
-#: ui/evolution-mail.xml.h:22
-msgid "Finaly remove all mails tagged for deletion"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:23
-msgid "Forget _Passwords"
-msgstr "Esquecer _Contrasinais"
-
-#: ui/evolution-mail.xml.h:25
-#, fuzzy
-msgid "Forward As"
-msgstr "Re-enviar"
-
-#: ui/evolution-mail.xml.h:27
-msgid "Forward the selected mail to someone"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:29
-msgid "Forward this message in-line with your mail, so you can edit it"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:30
-#, fuzzy
-msgid "Full _Headers"
-msgstr "Nome Completo:"
-
-#: ui/evolution-mail.xml.h:31
-#, fuzzy
-msgid "Hide Deleted Messages"
-msgstr "Borrar Mensaxe"
-
-#: ui/evolution-mail.xml.h:32
-#, fuzzy
-msgid "Hide S_elected Messages"
-msgstr "Imprimir a mensaxe seleccionada"
-
-#: ui/evolution-mail.xml.h:33
-#, fuzzy
-msgid "Hide _Deleted Messages"
-msgstr "Borrar Mensaxe"
-
-#: ui/evolution-mail.xml.h:34
-#, fuzzy
-msgid "Hide _Read messages"
-msgstr "Mensaxe reenviada - %s"
-
-#: ui/evolution-mail.xml.h:35
-#, fuzzy
-msgid "Invert Selection"
-msgstr "_Inverter Selección"
-
-#: ui/evolution-mail.xml.h:36
-#, fuzzy
-msgid "Manage _Subscriptions..."
-msgstr "Descrición:"
-
-#: ui/evolution-mail.xml.h:37
-#, fuzzy
-msgid "Mar_k as Read"
-msgstr "Marcar como _Lida"
-
-#: ui/evolution-mail.xml.h:38
-#, fuzzy
-msgid "Mark All as R_ead"
-msgstr "Marcar como _Lida"
-
-#: ui/evolution-mail.xml.h:39
-#, fuzzy
-msgid "Mark As Read"
-msgstr "Marcar como _Lida"
-
-#: ui/evolution-mail.xml.h:40
-#, fuzzy
-msgid "Mark As U_nread"
-msgstr "Marcar como _non Lida"
-
-#: ui/evolution-mail.xml.h:41
-#, fuzzy
-msgid "Mark as U_nread"
-msgstr "Marcar como _non Lida"
-
-#: ui/evolution-mail.xml.h:42
-#, fuzzy
-msgid "Mark the selected messages as having been read"
-msgstr "Imprimir a mensaxe seleccionada"
-
-#: ui/evolution-mail.xml.h:43
-msgid "Mark the selected messages as not having been read"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:44
-msgid "Move"
-msgstr "Mover"
-
-#: ui/evolution-mail.xml.h:45
-msgid "Move message to a new folder"
-msgstr "Mover mensaxe a unha nova carpeta"
-
-#: ui/evolution-mail.xml.h:46
-#, fuzzy
-msgid "Move selected messages to another folder"
-msgstr "Mover mensaxe a unha nova carpeta"
-
-#: ui/evolution-mail.xml.h:47
-msgid "Open in New Window"
-msgstr "Abrir nunha Nova Fiestra"
-
-#: ui/evolution-mail.xml.h:48
-#, fuzzy
-msgid "Open the current message in a new window"
-msgstr "Enviar mensaxes en formato HTML"
-
-#: ui/evolution-mail.xml.h:53
-msgid "Print Preview of message..."
-msgstr "Previsualización da Impresión da mensaxe..."
-
-#: ui/evolution-mail.xml.h:54
-msgid "Print message to the printer"
-msgstr "Imprimir mensaxe na impresora"
-
-#: ui/evolution-mail.xml.h:55
-msgid "Print message..."
-msgstr "Imprimir mensaxe..."
-
-#: ui/evolution-mail.xml.h:58
-msgid "Redirect (FIXME: implement me)"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:61
-msgid "Reply to _All"
-msgstr "Responder a _Todos"
-
-#: ui/evolution-mail.xml.h:62
-#, fuzzy
-msgid "Reply to all"
-msgstr "Responder a Todos"
-
-#: ui/evolution-mail.xml.h:64
-#, fuzzy
-msgid "Reply to sender"
-msgstr "Responder ó Autor"
-
-#: ui/evolution-mail.xml.h:66
-#, fuzzy
-msgid "S_ource"
-msgstr "Fontes"
-
-#: ui/evolution-mail.xml.h:67
-#, fuzzy
-msgid "Save the message into a new file"
-msgstr "Mover mensaxe a unha nova carpeta"
-
-#: ui/evolution-mail.xml.h:69 ui/evolution-subscribe.xml.h:7
-msgid "Select _All"
-msgstr "Seleccionar _Todo"
-
-#: ui/evolution-mail.xml.h:70
-#, fuzzy
-msgid "Select _Thread"
-msgstr "Seleccionar _Todo"
-
-#: ui/evolution-mail.xml.h:71
-#, fuzzy
-msgid "Send / Receive"
-msgstr "Enviando Correo"
-
-#: ui/evolution-mail.xml.h:72
-msgid "Send a reply to the person who sent you this mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:73
-msgid "Send a single mail in reply to all the selected mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:74
-#, fuzzy
-msgid ""
-"Send queued mail\n"
-" and retrieve new mail"
-msgstr "Enviar o correo na cola e recibir o correo novo"
-
-#: ui/evolution-mail.xml.h:76
-msgid "Send queued mail and retrieve new mail"
-msgstr "Enviar o correo na cola e recibir o correo novo"
-
-#: ui/evolution-mail.xml.h:77
-#, fuzzy
-msgid "Show _All"
-msgstr "Ver Todos"
-
-#: ui/evolution-mail.xml.h:79
-#, fuzzy
-msgid "Threaded Message list"
-msgstr "Mensaxe reenviada - %s"
-
-#: ui/evolution-mail.xml.h:80
-#, fuzzy
-msgid "Un-delete the selected messages"
-msgstr "Imprimir a mensaxe seleccionada"
-
-#: ui/evolution-mail.xml.h:82
-#, fuzzy
-msgid "VFolder on Se_nder"
-msgstr "Responder ó Autor"
-
-#: ui/evolution-mail.xml.h:83
-#, fuzzy
-msgid "VFolder on _Recipients"
-msgstr "Destinatarios"
-
-#: ui/evolution-mail.xml.h:84
-#, fuzzy
-msgid "VFolder on _Subject"
-msgstr "Asunto"
-
-#: ui/evolution-mail.xml.h:85
-msgid "View Raw Message Source"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:86
-#, fuzzy
-msgid "Virtual Folder _Editor..."
-msgstr "Carpetas Virtuais"
-
-#: ui/evolution-mail.xml.h:87
-msgid "_Apply Filters"
-msgstr "_Aplicar Filtros"
-
-#: ui/evolution-mail.xml.h:88
-#, fuzzy
-msgid "_Attachment"
-msgstr "anexo"
-
-#: ui/evolution-mail.xml.h:89
-#, fuzzy
-msgid "_Copy to Folder..."
-msgstr "_Copiar á Carpeta"
-
-#: ui/evolution-mail.xml.h:90
-msgid "_Create Filter From Message"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:92
-msgid "_Expunge"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:93
-#, fuzzy
-msgid "_Filters..."
-msgstr "_Filtros de Correo..."
-
-#: ui/evolution-mail.xml.h:94 ui/evolution.xml.h:31
-msgid "_Folder"
-msgstr "_Carpeta"
-
-#: ui/evolution-mail.xml.h:95
-msgid "_Forward"
-msgstr "_Reenviar"
-
-#: ui/evolution-mail.xml.h:96
-#, fuzzy
-msgid "_Inline"
-msgstr "Í_ndice"
-
-#: ui/evolution-mail.xml.h:97 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr "_Inverter Selección"
-
-#: ui/evolution-mail.xml.h:98
-#, fuzzy
-msgid "_Mail Message"
-msgstr "FIXME: Enviar _Mensaxe"
-
-#: ui/evolution-mail.xml.h:99
-#, fuzzy
-msgid "_Mail Settings..."
-msgstr "_Configuración"
-
-#: ui/evolution-mail.xml.h:100
-#, fuzzy
-msgid "_Move to Folder..."
-msgstr "_Mover para a Carpeta"
-
-#: ui/evolution-mail.xml.h:101
-#, fuzzy
-msgid "_Open Selected Items"
-msgstr "Abrir a tarefa"
-
-#: ui/evolution-mail.xml.h:103
-#, fuzzy
-msgid "_Quoted"
-msgstr "No_tas:"
-
-#: ui/evolution-mail.xml.h:104
-#, fuzzy
-msgid "_Reply"
-msgstr "Responder"
-
-#: ui/evolution-mail.xml.h:105
-#, fuzzy
-msgid "_Resend Messages"
-msgstr "_Editar Mensaxe"
-
-#: ui/evolution-mail.xml.h:107
-#, fuzzy
-msgid "_Save Message As..."
-msgstr "Gardar como..."
-
-#: ui/evolution-mail.xml.h:108
-#, fuzzy
-msgid "_Send / Receive"
-msgstr "Enviando Correo"
-
-#: ui/evolution-mail.xml.h:109
-msgid "_Threaded"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:111
-#, fuzzy
-msgid "_Undelete"
-msgstr "_Borrar"
-
-#: ui/evolution-message-composer.xml.h:1
-#, fuzzy
-msgid "Attach"
-msgstr "Incluír un ficheiro"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-#, fuzzy
-msgid "Close the current file"
-msgstr "Gardar o ficheiro actual"
-
-#: ui/evolution-message-composer.xml.h:5
-#, fuzzy
-msgid "Encrypt this message with PGP"
-msgstr "Mensaxe cifrada"
-
-#: ui/evolution-message-composer.xml.h:6
-msgid "F_ormat"
-msgstr "_Formatar"
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "HTML"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:8
-#, fuzzy
-msgid "Insert a file as text into the message"
-msgstr "Incluír un ficheiro como anexo na mensaxe"
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert text file..."
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:11
-#, fuzzy
-msgid "Open a file"
-msgstr "Abrir ficheiro"
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "PGP Encrypt"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Sign"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:17
-msgid "Save _Draft"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:18
-#, fuzzy
-msgid "Save in _folder... (FIXME)"
-msgstr "Ir á carpeta..."
-
-#: ui/evolution-message-composer.xml.h:19
-#, fuzzy
-msgid "Save in folder..."
-msgstr "Ir á carpeta..."
-
-#: ui/evolution-message-composer.xml.h:21
-#, fuzzy
-msgid "Save the current file with a different name"
-msgstr "Gardar o ficheiro actual"
-
-#: ui/evolution-message-composer.xml.h:22
-#, fuzzy
-msgid "Save the message in a specified folder"
-msgstr "Mover mensaxe a unha nova carpeta"
-
-#: ui/evolution-message-composer.xml.h:23
-#, fuzzy
-msgid "Send"
-msgstr "Autor"
-
-#: ui/evolution-message-composer.xml.h:24
-#, fuzzy
-msgid "Send _Later"
-msgstr "Autor"
-
-#: ui/evolution-message-composer.xml.h:25
-#, fuzzy
-msgid "Send _later"
-msgstr "Autor"
-
-#: ui/evolution-message-composer.xml.h:26
-#, fuzzy
-msgid "Send the mail in HTML format"
-msgstr "Enviar mensaxes en formato HTML"
-
-#: ui/evolution-message-composer.xml.h:27
-#, fuzzy
-msgid "Send the message later"
-msgstr "Previsualiza a mensaxe que se vai imprimir"
-
-#: ui/evolution-message-composer.xml.h:28
-#, fuzzy
-msgid "Send the message now"
-msgstr "Enviar mensaxes en formato HTML"
-
-#: ui/evolution-message-composer.xml.h:29
-#, fuzzy
-msgid "Send this message now"
-msgstr "Borrar esta mensaxe"
-
-#: ui/evolution-message-composer.xml.h:30
-#, fuzzy
-msgid "Show / hide attachments"
-msgstr "Gardar Anexo"
-
-#: ui/evolution-message-composer.xml.h:31
-#, fuzzy
-msgid "Show _attachments"
-msgstr "anexo"
-
-#: ui/evolution-message-composer.xml.h:32
-#, fuzzy
-msgid "Show attachments"
-msgstr "anexo"
-
-#: ui/evolution-message-composer.xml.h:33
-#, fuzzy
-msgid "Sign this message with your PGP key"
-msgstr "Enviando unha mensaxe sen asunto"
-
-#: ui/evolution-message-composer.xml.h:34
-msgid "Toggles whether the BCC field is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:35
-msgid "Toggles whether the CC field is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:36
-#, fuzzy
-msgid "Toggles whether the From chooser is displayed"
-msgstr "O URI que amosará o navegador de carpetas"
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "_Bcc Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:40
-msgid "_Cc Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:45
-msgid "_From Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:47
-msgid "_Insert"
-msgstr "_Inserir"
-
-#: ui/evolution-message-composer.xml.h:48
-msgid "_Insert text file... (FIXME)"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:49
-#, fuzzy
-msgid "_Open..."
-msgstr "Abrir..."
-
-#: ui/evolution-message-composer.xml.h:50
-#, fuzzy
-msgid "_Reply-To Field"
-msgstr "Responder-A:"
-
-#: ui/evolution-message-composer.xml.h:52
-msgid "_Security"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr "Engadir a carpeta á súa lista de carpetas subscritas"
-
-#: ui/evolution-subscribe.xml.h:3
-msgid "F_older"
-msgstr "_Carpeta"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr "Actualizar Lista"
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr "Actualizar Lista de Carpetas"
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr "Eliminar a carpeta da súa lista de carpetas subscritas"
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr "Subscribir"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr "Desubscribir"
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-#, fuzzy
-msgid "Assig_n Task (FIXME)"
-msgstr "_Tarefa (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr "Buscar Novamente"
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-#, fuzzy
-msgid "Meeting Re_quest (FIXME)"
-msgstr "FIXME: Solicitude de _Tarefa"
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-msgid "Redo"
-msgstr "Refacer"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-msgid "Redo the undone action"
-msgstr "Refacer a acción desfeita"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-msgid "Replace"
-msgstr "Substituír"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-msgid "Replace a string"
-msgstr "Substituír unha cadea"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-#, fuzzy
-msgid "Reply to A_ll (FIXME)"
-msgstr "Responder a Todos"
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-#, fuzzy
-msgid "S_end Status Report (FIXME)"
-msgstr "_Contacto (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-#, fuzzy
-msgid "Save the task and close the dialog box"
-msgstr "Gardar o contacto e pechar a caixa de diálogo"
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "Search again for the same string"
-msgstr "Buscar novamente a mesma cadea"
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-msgid "Search for a string"
-msgstr "Buscar unha cadea"
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr "Desfacer"
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-msgid "Undo the last action"
-msgstr "Desfacer a última acción"
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:26
-msgid "_Appointment (FIXME)"
-msgstr "_Cita (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-#, fuzzy
-msgid "_Mark Complete (FIXME)"
-msgstr "Marcar como Completa"
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-#, fuzzy
-msgid "_Reply (FIXME)"
-msgstr "_Tarefa (FIXME)"
-
-#: ui/evolution-tasks.xml.h:2
-#, fuzzy
-msgid "Create a new task"
-msgstr "Crear un novo contacto"
-
-#: ui/evolution-tasks.xml.h:3
-#, fuzzy
-msgid "New Task"
-msgstr "Tarefa"
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr ""
-
-#: ui/evolution-tasks.xml.h:6
-#, fuzzy
-msgid "Tasks Preferences..."
-msgstr "Preferencias da Axenda..."
-
-#: ui/evolution-tasks.xml.h:9
-#, fuzzy
-msgid "_Task"
-msgstr "Tarefa"
-
-#: ui/evolution.xml.h:1
-#, fuzzy
-msgid "About Evolution..."
-msgstr "_Acerca do Evolution..."
-
-#: ui/evolution.xml.h:3
-#, fuzzy
-msgid "Close this window"
-msgstr "Pechar esta cita"
-
-#: ui/evolution.xml.h:4
-msgid "Customi_ze Toolbars..."
-msgstr ""
-
-#: ui/evolution.xml.h:5
-#, fuzzy
-msgid "Customize"
-msgstr "FIXME: _Personalizar..."
-
-#: ui/evolution.xml.h:6
-msgid "Customize toolbars"
-msgstr ""
-
-#: ui/evolution.xml.h:7
-msgid "Display a different folder"
-msgstr "Visualizar unha carpeta diferente"
-
-#: ui/evolution.xml.h:8
-msgid "E_xit"
-msgstr "_Saír"
-
-#: ui/evolution.xml.h:9
-msgid "Evolution bar _shortcut"
-msgstr "_Atallo da barra do Evolution"
-
-#: ui/evolution.xml.h:10
-msgid "Exit the program"
-msgstr "Saír do programa"
-
-#: ui/evolution.xml.h:11
-msgid "Getting _Started"
-msgstr "_Iniciación"
-
-#: ui/evolution.xml.h:12
-msgid "Import an external file format"
-msgstr ""
-
-#: ui/evolution.xml.h:13
-msgid "Main toolbar"
-msgstr ""
-
-#: ui/evolution.xml.h:14
-msgid "Show information about Evolution"
-msgstr "Amosar información sobre o Evolution"
-
-#: ui/evolution.xml.h:15
-#, fuzzy
-msgid "Submit Bug Report"
-msgstr "_Enviar un Informe de Erro"
-
-#: ui/evolution.xml.h:16
-#, fuzzy
-msgid "Submit _Bug Report"
-msgstr "_Enviar un Informe de Erro"
-
-#: ui/evolution.xml.h:17
-#, fuzzy
-msgid "Submit bug report using Bug Buddy."
-msgstr "Enviar un informe de erro usando o Bug Buddy"
-
-#: ui/evolution.xml.h:18
-msgid "Toggle whether to show the folder bar"
-msgstr ""
-
-#: ui/evolution.xml.h:19
-#, fuzzy
-msgid "Toggle whether to show the shortcut bar"
-msgstr "Eliminar este atallo da barra de atallos"
-
-#: ui/evolution.xml.h:20
-msgid "Using the C_ontact Manager"
-msgstr "Uso do Xestor de Co_ntactos"
-
-#: ui/evolution.xml.h:21
-msgid "Using the _Calendar"
-msgstr "Uso da _Axenda"
-
-#: ui/evolution.xml.h:22
-msgid "Using the _Mailer"
-msgstr "Uso do Cliente de _Correo"
-
-#: ui/evolution.xml.h:23
-#, fuzzy
-msgid "Work Offline"
-msgstr "Movendo"
-
-#: ui/evolution.xml.h:24
-msgid "_About Evolution..."
-msgstr "_Acerca do Evolution..."
-
-#: ui/evolution.xml.h:25
-msgid "_Actions"
-msgstr "_Accións"
-
-#: ui/evolution.xml.h:32
-#, fuzzy
-msgid "_Folder Bar"
-msgstr "_Carpeta"
-
-#: ui/evolution.xml.h:33
-msgid "_Go to Folder..."
-msgstr "_Ir para a Carpeta..."
-
-#: ui/evolution.xml.h:35
-#, fuzzy
-msgid "_Import file..."
-msgstr "_Propiedades..."
-
-#: ui/evolution.xml.h:36
-msgid "_Index"
-msgstr "Í_ndice"
-
-#: ui/evolution.xml.h:37
-#, fuzzy
-msgid "_Mail message"
-msgstr "_Mensaxe"
-
-#: ui/evolution.xml.h:39
-#, fuzzy
-msgid "_New Folder"
-msgstr "Nova VFolder"
-
-#: ui/evolution.xml.h:40
-#, fuzzy
-msgid "_Shortcut Bar"
-msgstr "Amosar a Barra de _Atallos"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:469
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2475
-msgid "%A, %B %d, %Y"
-msgstr "%A, %d de %B de %Y"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:390
-msgid "Tentative"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:391
-msgid "Busy"
-msgstr "Ocupado"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:392
-msgid "Out of Office"
-msgstr "Fóra da Oficina"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:393
-msgid "No Information"
-msgstr "Sen Información"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:409
-msgid "_Invite Others..."
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:429
-msgid "_Options"
-msgstr "_Opcións"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:446
-msgid "Show _Only Working Hours"
-msgstr "Amosar _Só as Horas de Traballo"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:459
-msgid "Show _Zoomed Out"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:477
-msgid "_Update Free/Busy"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:495
-msgid "_<<"
-msgstr "_<<"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:512
-msgid "_Autopick"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:526
-msgid ">_>"
-msgstr ">_>"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:543
-msgid "_All People and Resources"
-msgstr "_Tódalas Persoas e Recursos"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:556
-msgid "All _People and One Resource"
-msgstr "Tódalas _Persoas e Un Recurso"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:569
-msgid "_Required People"
-msgstr "Persoas _Requiridas"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:582
-msgid "Required People and _One Resource"
-msgstr "Persoas Requiridas e _Un Recurso"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:605
-msgid "Meeting _start time:"
-msgstr "Hora do _inicio da reunión:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:629
-msgid "Meeting _end time:"
-msgstr "Hora do _final da reunión:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:742
-msgid "All Attendees"
-msgstr ""
-
-#: widgets/menus/gal-view-menus.c:177
-#, fuzzy
-msgid "_Current View"
-msgstr "a hora actual"
-
-#: widgets/menus/gal-view-menus.c:196
-msgid "Define Views"
-msgstr ""
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:421
-msgid "MTWTFSS"
-msgstr "LMMXVSD"
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1060 widgets/misc/e-calendar-item.c:2755
-msgid "%B %Y"
-msgstr "%B de %Y"
-
-#: widgets/misc/e-cell-date-edit.c:218 widgets/misc/e-dateedit.c:416
-msgid "Now"
-msgstr "Agora"
-
-#: widgets/misc/e-cell-date-edit.c:242
-msgid "OK"
-msgstr ""
-
-#: widgets/misc/e-cell-date-edit.c:723
-#, fuzzy, c-format
-msgid "The time must be in the format: %s"
-msgstr ""
-"A data ten que ser introducida no formato: \n"
-"\n"
-"%s"
-
-#: widgets/misc/e-clipped-label.c:107
-msgid "..."
-msgstr "..."
-
-#: widgets/misc/e-filter-bar.c:166
-#, fuzzy
-msgid "Save Search"
-msgstr "Buscar"
-
-#: widgets/misc/e-filter-bar.c:237
-msgid "Advanced Search"
-msgstr ""
-
-#: widgets/misc/e-filter-bar.c:317
-msgid "Advanced ..."
-msgstr ""
-
-#: widgets/misc/e-messagebox.c:152
-#, fuzzy
-msgid "Information"
-msgstr "Sen Información"
-
-#: widgets/misc/e-messagebox.c:159
-#, fuzzy
-msgid "Warning"
-msgstr "Movendo"
-
-#: widgets/misc/e-messagebox.c:173
-#, fuzzy
-msgid "Question"
-msgstr "Descrición:"
-
-#: widgets/misc/e-messagebox.c:180
-#, fuzzy
-msgid "Message"
-msgstr "_Mensaxe"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:224
-#, fuzzy
-msgid "Don't show this message again."
-msgstr "Borrar esta mensaxe"
-
-#: widgets/misc/e-search-bar.c:148
-#, fuzzy
-msgid "Sear_ch"
-msgstr "Buscar"
-
-#: views/addressbook/galview.xml.h:1
-#, fuzzy
-msgid "Adress Cards"
-msgstr "Enderezo"
-
-#: views/addressbook/galview.xml.h:2
-#, fuzzy
-msgid "By Company"
-msgstr "Compañía"
-
-#: views/addressbook/galview.xml.h:3
-#, fuzzy
-msgid "Phone List"
-msgstr "Tipos de Teléfono"
-
-#: views/mail/galview.xml.h:1
-#, fuzzy
-msgid "By Sender"
-msgstr "Autor"
-
-#: views/mail/galview.xml.h:2
-#, fuzzy
-msgid "By Status"
-msgstr "_Estado:"
-
-#: views/mail/galview.xml.h:3
-#, fuzzy
-msgid "By Subject"
-msgstr "Asunto"
-
-#: views/mail/galview.xml.h:4
-#, fuzzy
-msgid "Messages"
-msgstr "_Mensaxe"
-
-#: views/tasks/galview.xml.h:2
-#, fuzzy
-msgid "With Category"
-msgstr ""
-"\n"
-"Categorías: "
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-#, fuzzy
-msgid "The Personal Addressbook Server"
-msgstr "Engadir Fonte"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr ""
-
-#: wombat/wombat.c:173
-#, fuzzy
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr "Non foi posible inicializar Bonobo"
-
-#: wombat/wombat.c:185
-#, fuzzy
-msgid "init_corba(): could not initialize GNOME"
-msgstr "Non foi posible inicializar Bonobo"
-
-#: wombat/wombat.c:198
-#, fuzzy
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "Non foi posible inicializar Bonobo"
-
-#, fuzzy
-#~ msgid "Click here to add a contact"
-#~ msgstr "<prema aquí para seleccionar unha data>"
-
-#, fuzzy
-#~ msgid ""
-#~ "This option will connect to the server using a the PLAIN SASL mechanism if "
-#~ "the server supports it."
-#~ msgstr ""
-#~ "Esta opción conectarase ó servidor IMAP usando un contrasinal sen cifrar."
-
-#~ msgid "URL string `%s' contains no protocol"
-#~ msgstr "O URL `%s' non contén ningún protocolo"
-
-#~ msgid "URL string `%s' contains an invalid protocol"
-#~ msgstr "O URL `%s' contén un protocolo non válido"
-
-#~ msgid "Port number in URL `%s' is non-numeric"
-#~ msgstr "O número de porto no URL `%s' non é numérico"
-
-#, fuzzy
-#~ msgid "Secure IMAPv4"
-#~ msgstr "IMAPv4"
-
-#, fuzzy
-#~ msgid ""
-#~ "For connecting to POP servers over an SSL connection. The POP protocol can "
-#~ "also be used to retrieve mail from certain web mail providers and "
-#~ "proprietary email systems."
-#~ msgstr ""
-#~ "Para conectarse a servidores POP. O protocolo POP tamén se pode usar para "
-#~ "recibir correo de certos provedores de correo web, e de sistemas de email "
-#~ "propietarios."
-
-#, fuzzy
-#~ msgid "No authentication required"
-#~ msgstr "Autenticación"
-
-#, fuzzy
-#~ msgid ""
-#~ "This option will connect to the SMTP server without using any kind of "
-#~ "authentication. This should be fine for connecting to most SMTP servers."
-#~ msgstr ""
-#~ "Esta opción conectarase ó servidor POP usando un contrasinal sen cifrar. "
-#~ "Esta é a única opción que soportan moitos servidores POP."
-
-#~ msgid "Remove action"
-#~ msgstr "Eliminar acción"
-
-#~ msgid "Remove criterion"
-#~ msgstr "Eliminar criterio"
-
-#, fuzzy
-#~ msgid "Check settings"
-#~ msgstr "Probar Configuración"
-
-#~ msgid "Email address:"
-#~ msgstr "Enderezo de email:"
-
-#~ msgid "Evolution Mail Configuration"
-#~ msgstr "Configuración de Correo do Evolution"
-
-#, fuzzy
-#~ msgid "Hostname:"
-#~ msgstr "Nome de usuario:"
-
-#~ msgid "IMAP"
-#~ msgstr "IMAP"
-
-#, fuzzy
-#~ msgid "Keep mail on server"
-#~ msgstr "Non borrar as mensaxes do servidor"
-
-#, fuzzy
-#~ msgid "Kerberos"
-#~ msgstr "Kerberos 4"
-
-#~ msgid "Mail"
-#~ msgstr "Correo"
-
-#, fuzzy
-#~ msgid "Mail Account"
-#~ msgstr "Contas"
-
-#~ msgid "Mail Configuration Druid"
-#~ msgstr "Axudante da Configuración do Correo"
-
-#~ msgid "Optional"
-#~ msgstr "Opcional"
-
-#~ msgid "Password:"
-#~ msgstr "Contrasinal:"
-
-#, fuzzy
-#~ msgid "Remember my password"
-#~ msgstr "Gardar como VCard"
-
-#, fuzzy
-#~ msgid "Reply address:"
-#~ msgstr "Enderezo de email:"
-
-#, fuzzy
-#~ msgid "Required"
-#~ msgstr "Persoas _Requiridas"
-
-#, fuzzy
-#~ msgid "Save password"
-#~ msgstr "Gardar como VCard"
-
-#, fuzzy
-#~ msgid "Select signature file"
-#~ msgstr "Ficheiro de sinatura:"
-
-#, fuzzy
-#~ msgid "Server type:"
-#~ msgstr "Tipo de Servidor: "
-
-#, fuzzy
-#~ msgid "Signature:"
-#~ msgstr "Ficheiro de sinatura:"
-
-#, fuzzy
-#~ msgid "Transport"
-#~ msgstr "Transparente"
-
-#, fuzzy
-#~ msgid "Transport Authentication"
-#~ msgstr "Autenticación"
-
-#, fuzzy
-#~ msgid "minutes."
-#~ msgstr "minutos"
-
-#~ msgid "%s message %d of %d (uid \"%s\")"
-#~ msgstr "%s mensaxe %d de %d (uid \"%s\")"
-
-#, fuzzy
-#~ msgid "<unknown>"
-#~ msgstr "Descoñecido"
-
-#~ msgid "No GPG/PGP program available."
-#~ msgstr "O programa GPG/PGP non está dispoñible."
-
-#, fuzzy
-#~ msgid "Message _Display"
-#~ msgstr "Corpo da Mensaxe"
-
-#, fuzzy
-#~ msgid "_Compose"
-#~ msgstr "Redactar"
-
-#, fuzzy
-#~ msgid "_Message Hiding"
-#~ msgstr "_Mensaxe"
-
-#, fuzzy
-#~ msgid "Copyright (C) 2000, Helix Code, Inc."
-#~ msgstr "Copyright 1999, 2000 Helix Code, Inc."
-
-#~ msgid "New"
-#~ msgstr "Novo"
-
-#, fuzzy
-#~ msgid "Cannot initialize Evolution's notes component."
-#~ msgstr "Non se pode inicializar o compoñente de correo de Evolution."
-
-#, fuzzy
-#~ msgid "Notes Component: Could not initialize bonobo"
-#~ msgstr "Non foi posible inicializar Bonobo"
-
-#~ msgid "Disabled"
-#~ msgstr "Desactivado"
-
-#~ msgid "Synchronize"
-#~ msgstr "Sincronizar"
-
-#~ msgid "Copy From Pilot"
-#~ msgstr "Copiar do Pilot"
-
-#~ msgid "Copy To Pilot"
-#~ msgstr "Copiar ó Pilot"
-
-#~ msgid "Merge From Pilot"
-#~ msgstr "Mesturar do Pilot"
-
-#~ msgid "Merge To Pilot"
-#~ msgstr "Mesturar ó Pilot"
-
-#~ msgid "JP Rosevear <jpr@helixcode.com>"
-#~ msgstr "JP Rosevear <jpr@helixcode.com>"
-
-#~ msgid "Original Author:"
-#~ msgstr "Autor Orixinal:"
-
-#~ msgid "Eskil Heyn Olsen <deity@eskil.dk>"
-#~ msgstr "Eskil Heyn Olsen <deity@eskil.dk>"
-
-#~ msgid "(C) 1998-2000 the Free Software Foundation and Helix Code"
-#~ msgstr "(C) 1998-2000 a Free Software Foundation e Helix Code"
-
-#~ msgid "gnome-unknown.xpm"
-#~ msgstr "gnome-unknown.xpm"
-
-#~ msgid "Synchronize Action"
-#~ msgstr "Sincronizar Acción"
-
-#~ msgid "Conduit state"
-#~ msgstr "Estado do conducto"
-
-#~ msgid ""
-#~ "No pilot configured, please choose the\n"
-#~ "'Pilot Link Properties' capplet first."
-#~ msgstr ""
-#~ "Non hai ningún pilot configurado, escolla\n"
-#~ "primeiro a capplet 'Propiedades da Ligazón co Pilot'."
-
-#~ msgid "Not connected to the gnome-pilot daemon"
-#~ msgstr "Non conectado ó demo gnome-pilot"
-
-#~ msgid ""
-#~ "An error occured when trying to fetch\n"
-#~ "pilot list from the gnome-pilot daemon"
-#~ msgstr ""
-#~ "Ocorreu un erro ó obter a lista de\n"
-#~ "pilots do demo gnome-pilot"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "Mr.\n"
-#~ "Mrs.\n"
-#~ "Ms.\n"
-#~ "Miss\n"
-#~ "Dr.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Sr.\n"
-#~ "Sra.\n"
-#~ "Srta.\n"
-#~ "D.\n"
-#~ "Dª.\n"
-#~ "Dr.\n"
-#~ "Dra.\n"
-#~ "Prof.\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Sr.\n"
-#~ "Jr.\n"
-#~ "I\n"
-#~ "II\n"
-#~ "III\n"
-#~ "Esq.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Sr.\n"
-#~ "Jr.\n"
-#~ "I\n"
-#~ "II\n"
-#~ "III\n"
-
-#~ msgid "Evolution Calendar Conduit"
-#~ msgstr "Conducto de Axenda de Evolution"
-
-#~ msgid "Configuration utility for the evolution calendar conduit.\n"
-#~ msgstr ""
-#~ "Utilidade de configuración para o conducto de axenda de evolution.\n"
-
-#~ msgid "Configuration utility for the evolution todo conduit.\n"
-#~ msgstr "Utilidade de configuración para o conducto a-facer de evolution.\n"
-
-#~ msgid "The priority must be between 1 and 9, inclusive"
-#~ msgstr "A prioridade ten que estar entre 1 e 9, inclusive"
-
-#~ msgid "Open..."
-#~ msgstr "Abrir..."
-
-#~ msgid "Enter the identity you wish to send this message from"
-#~ msgstr "Introduza a identidade coa que desexa enviar esta mensaxe"
-
-#~ msgid "Enter the subject of the mail"
-#~ msgstr "Introduza o asunto da mensaxe"
-
-#~ msgid "Saving changes to message..."
-#~ msgstr "Gardando as modificacións da mensaxe..."
-
-#~ msgid "Save changes to message..."
-#~ msgstr "Gardar as modificacións da mensaxe..."
-
-#~ msgid "Edit Filter Rule"
-#~ msgstr "Editar Regra de Filtrado"
-
-#, fuzzy
-#~ msgid "outgoing"
-#~ msgstr ""
-#~ "Entrante\n"
-#~ "Saínte\n"
-
-#~ msgid "Add Rule"
-#~ msgstr "Engadir Regra"
-
-#~ msgid "Body or subject contains"
-#~ msgstr "O corpo ou o asunto conteñen"
-
-#~ msgid "Body contains"
-#~ msgstr "O corpo contén"
-
-#~ msgid "Subject contains"
-#~ msgstr "O asunto contén"
-
-#~ msgid "Body does not contain"
-#~ msgstr "O corpo non contén"
-
-#~ msgid "Subject does not contain"
-#~ msgstr "O asunto non contén"
-
-#~ msgid ""
-#~ "Could not open file %s:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Non foi posible abrir o ficheiro %s:\n"
-#~ "%s"
-
-#, fuzzy
-#~ msgid "Registering local folder"
-#~ msgstr "Creando unha nova carpeta"
-
-#~ msgid "Fetching email from %s"
-#~ msgstr "Recibindo correo de %s"
-
-#~ msgid "Fetch email from %s"
-#~ msgstr "Recibir correo de %s"
-
-#~ msgid "Moving messages from \"%s\" into \"%s\""
-#~ msgstr "Movendo mensaxes de \"%s\" a \"%s\""
-
-#~ msgid "Copying messages from \"%s\" into \"%s\""
-#~ msgstr "Copiando mensaxes de \"%s\" a \"%s\""
-
-#~ msgid "Move messages from \"%s\" into \"%s\""
-#~ msgstr "Mover mensaxes de \"%s\" a \"%s\""
-
-#~ msgid "Copy messages from \"%s\" into \"%s\""
-#~ msgstr "Copiar mensaxes de \"%s\" a \"%s\""
-
-#~ msgid "(No description)"
-#~ msgstr "(Sen descrición)"
-
-#, fuzzy
-#~ msgid "Loading %s Folder for %s"
-#~ msgstr "Cargando a Carpeta %s"
-
-#, fuzzy
-#~ msgid "Load %s Folder for %s"
-#~ msgstr "Cargando a Carpeta %s"
-
-#~ msgid "Could not create dialog box."
-#~ msgstr "Non foi posible crear a caixa de diálogo."
-
-#~ msgid "User cancelled query."
-#~ msgstr "O usuario cancelou a consulta."
-
-#~ msgid "Examining %s"
-#~ msgstr "Examinando %s"
-
-#~ msgid "Retrieving message %d of %d"
-#~ msgstr "Recibindo a mensaxe %d de %d"
-
-#~ msgid "Saving changes to %s"
-#~ msgstr "Gardando as modificacións de %s"
-
-#~ msgid ""
-#~ "Cannot open location `%s':\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Non se pode abrir a localizaión `%s':\n"
-#~ "%s"
-
-#, fuzzy
-#~ msgid "FIXME: _Appointment"
-#~ msgstr "FIXME: _Nova Cita"
-
-#~ msgid "FIXME: _Contact"
-#~ msgstr "FIXME: _Contacto"
-
-#~ msgid "FIXME: _Task"
-#~ msgstr "FIXME: _Tarefa"
-
-#~ msgid "FIXME: Task _Request"
-#~ msgstr "FIXME: Solicitude de _Tarefa"
-
-#~ msgid "FIXME: _Journal Entry"
-#~ msgstr "FIXME: Entrada de _Xornal"
-
-#~ msgid "FIXME: _Note"
-#~ msgstr "FIXME: _Nota"
-
-#~ msgid "FIXME: Ch_oose Form..."
-#~ msgstr "FIXME: Es_colla un Formulario..."
-
-#, fuzzy
-#~ msgid "FIXME: Define Print _Styles..."
-#~ msgstr "FIXME: Definir E_stilos de Impresión"
-
-#~ msgid "FIXME: S_end"
-#~ msgstr "FIXME: _Enviar"
-
-#~ msgid "FIXME: Save Attac_hments..."
-#~ msgstr "FIXME: Gardar Ane_xos..."
-
-#~ msgid "FIXME: _Move to Folder..."
-#~ msgstr "FIXME: _Mover para a Carpeta..."
-
-#~ msgid "FIXME: Cop_y to Folder..."
-#~ msgstr "FIXME: Cop_iar á Carpeta..."
-
-#~ msgid "FIXME: Print Pre_view"
-#~ msgstr "FIXME: Pre_visualización da Impresión"
-
-#, fuzzy
-#~ msgid "FIXME: Paste _Special..."
-#~ msgstr "FIXME: Pegar _Especial..."
-
-#~ msgid "_Object"
-#~ msgstr "_Obxecto"
-
-#~ msgid "FIXME: _Item"
-#~ msgstr "FIXME: _Elemento"
-
-#~ msgid "FIXME: _Unread Item"
-#~ msgstr "FIXME: Elemento _non Lido"
-
-#~ msgid "FIXME: _Standard"
-#~ msgstr "FIXME: _Estándar"
-
-#, fuzzy
-#~ msgid "FIXME: __Formatting"
-#~ msgstr "FIXME: Fo_rmato"
-
-#~ msgid "_Toolbars"
-#~ msgstr "_Barras de ferramentas"
-
-#~ msgid "FIXME: _File..."
-#~ msgstr "FIXME: _Ficheiro..."
-
-#~ msgid "FIXME: It_em..."
-#~ msgstr "FIXME: _Elemento..."
-
-#~ msgid "FIXME: _Object..."
-#~ msgstr "FIXME: _Obxecto..."
-
-#~ msgid "FIXME: _Font..."
-#~ msgstr "FIXME: _Fonte..."
-
-#~ msgid "FIXME: _Paragraph..."
-#~ msgstr "FIXME: _Parágrafo..."
-
-#~ msgid "FIXME: Desi_gn This Form"
-#~ msgstr "FIXME: Deseñar este _Formulario"
-
-#~ msgid "FIXME: D_esign a Form..."
-#~ msgstr "FIXME: _Deseñar un Formulario..."
-
-#~ msgid "FIXME: Publish _Form..."
-#~ msgstr "FIXME: Publicar _Formulario..."
-
-#~ msgid "FIXME: Pu_blish Form As..."
-#~ msgstr "FIXME: Pu_blicar Formulario Como..."
-
-#~ msgid "FIXME: Script _Debugger"
-#~ msgstr "FIXME: _Depurador de Script"
-
-#~ msgid "FIXME: _Spelling..."
-#~ msgstr "FIXME: _Ortografía..."
-
-#~ msgid "_Forms"
-#~ msgstr "_Formularios"
-
-#, fuzzy
-#~ msgid "FIXME: _New Contact"
-#~ msgstr "FIXME: _Contacto"
-
-#, fuzzy
-#~ msgid "FIXME: New _Letter to Contact"
-#~ msgstr "FIXME: _Contacto"
-
-#, fuzzy
-#~ msgid "FIXME: New Meetin_g with Contact"
-#~ msgstr "FIXME: _Contacto"
-
-#, fuzzy
-#~ msgid "FIXME: _Plan a Meeting..."
-#~ msgstr "FIXME: _Ortografía..."
-
-#, fuzzy
-#~ msgid "FIXME: New _Task for Contact"
-#~ msgstr "FIXME: _Contacto"
-
-#, fuzzy
-#~ msgid "FIXME: New _Journal Entry for Contact"
-#~ msgstr "FIXME: Entrada de _Xornal"
-
-#, fuzzy
-#~ msgid "FIXME: _Flag for Follow Up..."
-#~ msgstr "FIXME: Cop_iar á Carpeta..."
-
-#, fuzzy
-#~ msgid "FIXME: _Display Map of Address"
-#~ msgstr "FIXME: Enviar _Mensaxe"
-
-#, fuzzy
-#~ msgid "FIXME: _Open Web Page"
-#~ msgstr "FIXME: Enviar _Mensaxe"
-
-#, fuzzy
-#~ msgid "FIXME: Forward as _vCard"
-#~ msgstr "FIXME: Reenviar como v_Calendar"
-
-#~ msgid "FIXME: For_ward"
-#~ msgstr "FIXME: _Reenviar"
-
-#, fuzzy
-#~ msgid "FIXME: Previous"
-#~ msgstr "Anterior"
-
-#, fuzzy
-#~ msgid "FIXME: Next"
-#~ msgstr "FIXME: _Nota"
-
-#~ msgid "Group %i"
-#~ msgstr "Grupo %i"
-
-#~ msgid "label26"
-#~ msgstr "label26"
-
-#~ msgid "C_lassification:"
-#~ msgstr "C_lasificación:"
-
-#~ msgid "task-editor-dialog"
-#~ msgstr "diálogo-editor-tarefas"
-
-#~ msgid "Days"
-#~ msgstr "Días"
-
-#~ msgid "Hours"
-#~ msgstr "Horas"
-
-#~ msgid "Mail _to:"
-#~ msgstr "Enviar _a:"
-
-#~ msgid "Minutes"
-#~ msgstr "Minutos"
-
-#~ msgid "Time"
-#~ msgstr "Hora"
-
-#~ msgid "_Audio"
-#~ msgstr "_Audio"
-
-#~ msgid "_Mail"
-#~ msgstr "_Correo"
-
-#~ msgid "_Program"
-#~ msgstr "_Programa"
-
-#~ msgid "event-editor-dialog"
-#~ msgstr "diálogo-editor-eventos"
-
-#~ msgid "label21"
-#~ msgstr "label21"
-
-#, fuzzy
-#~ msgid "Show all hidden"
-#~ msgstr "Ver Todos"
-
-#, fuzzy
-#~ msgid "Hide deleted"
-#~ msgstr "Eliminar"
-
-#, fuzzy
-#~ msgid "Hide Subject \"%s\""
-#~ msgstr "O asunto é %s"
-
-#~ msgid "You have no mail sources configured"
-#~ msgstr "Non ten ningunha fonte de correo configurada"
-
-#, fuzzy
-#~ msgid "Account Properties"
-#~ msgstr "Propiedades do anexo"
-
-#, fuzzy
-#~ msgid "Congratulations, your mail configuration is complete.\n"
-#~ msgstr "Noraboa, a configuración do correo está completa."
-
-#, fuzzy
-#~ msgid "E-Mail Address:"
-#~ msgstr "Enderezo de Email:"
-
-#~ msgid "Reply-to:"
-#~ msgstr "Responder-a:"
-
-#, fuzzy
-#~ msgid "Server Timeouts"
-#~ msgstr "Tipo de Servidor: "
-
-#, fuzzy
-#~ msgid "Servers"
-#~ msgstr "Servidor:"
-
-#~ msgid "Full name:"
-#~ msgstr "Nome completo:"
-
-#~ msgid "Signature File"
-#~ msgstr "Ficheiro de Sinatura"
-
-#~ msgid "Server:"
-#~ msgstr "Servidor:"
-
-#~ msgid "Mail source type:"
-#~ msgstr "Tipo de fonte de correo:"
-
-#~ msgid "News source type:"
-#~ msgstr "Tipo de fonte de Novas:"
-
-#~ msgid "Mail transport type:"
-#~ msgstr "Tipo de transporte de correo:"
-
-#~ msgid "Add Identity"
-#~ msgstr "Engadir Identidade"
-
-#~ msgid "Edit Identity"
-#~ msgstr "Editar Identidade"
-
-#~ msgid "Edit Source"
-#~ msgstr "Editar Fonte"
-
-#~ msgid "Add News Server"
-#~ msgstr "Engadir Servidor de News"
-
-#~ msgid "Edit News Server"
-#~ msgstr "Editar Servidor de News"
-
-#~ msgid "The connection was successful!"
-#~ msgstr "¡A conexión foi correcta!"
-
-#~ msgid "Identities"
-#~ msgstr "Identidades"
-
-#~ msgid "Mail Transport"
-#~ msgstr "Transporte do Correo"
-
-#~ msgid "News Servers"
-#~ msgstr "Servidores de News"
-
-#~ msgid "News Sources"
-#~ msgstr "Fontes de Novas"
-
-#~ msgid "Send messages in HTML format"
-#~ msgstr "Enviar mensaxes en formato HTML"
-
-#~ msgid "No GPG/PGP support available in this copy of Evolution."
-#~ msgstr "Non hai soporte de GPG/PGP dispoñible nesta copia do Evolution."
-
-#, fuzzy
-#~ msgid "_Addressbook Configuration..."
-#~ msgstr "Configuración do _Correo..."
-
-#~ msgid "_Print Contacts..."
-#~ msgstr "_Imprimir Contactos..."
-
-#, fuzzy
-#~ msgid "Ca_lendar"
-#~ msgstr "Axenda"
-
-#~ msgid "Open a calendar"
-#~ msgstr "Abrir unha axenda"
-
-#~ msgid "_Print this calendar"
-#~ msgstr "_Imprimir esta axenda"
-
-#~ msgid "FIXME: Chec_k Names"
-#~ msgstr "FIXME: Veri_ficar Nomes"
-
-#~ msgid "FIXME: Help"
-#~ msgstr "FIXME: Axuda"
-
-#~ msgid "FIXME: In_complete Task"
-#~ msgstr "FIXME: Tarefa in_completa"
-
-#~ msgid "FIXME: Insert File"
-#~ msgstr "FIXME: Inserir Ficheiro"
-
-#~ msgid "Find _Again"
-#~ msgstr "Buscar _Novamente"
-
-#~ msgid "_Find..."
-#~ msgstr "_Buscar..."
-
-#~ msgid "_Redo"
-#~ msgstr "_Refacer"
-
-#~ msgid "_Replace..."
-#~ msgstr "_Substituír..."
-
-#~ msgid "_Undo"
-#~ msgstr "_Desfacer"
-
-#~ msgid "Reply to _Sender"
-#~ msgstr "Responder ó _Autor"
-
-#, fuzzy
-#~ msgid "Show _All messages"
-#~ msgstr "Ver Todos"
-
-#~ msgid "_Mail Configuration..."
-#~ msgstr "Configuración do _Correo..."
-
-#~ msgid "_Open in New Window"
-#~ msgstr "_Abrir nunha Nova Fiestra"
-
-#~ msgid "_Print Message"
-#~ msgstr "_Imprimir Mensaxe"
-
-#, fuzzy
-#~ msgid "_Source"
-#~ msgstr "Fontes"
-
-#~ msgid "Show the _Folder Bar"
-#~ msgstr "Amosar a Barra de _Carpetas"
-
-#~ msgid "External Directories"
-#~ msgstr "Directorios Externos"
-
-#~ msgid "Port Number:"
-#~ msgstr "Número de Porto:"
-
-#~ msgid "Day numbers:"
-#~ msgstr "Números dos días:"
-
-#~ msgid "Current day's number:"
-#~ msgstr "Número do día actual:"
-
-#~ msgid "may"
-#~ msgstr "maio"
-
-#~ msgid "sept"
-#~ msgstr "setem"
-
-#~ msgid "sunday"
-#~ msgstr "domingo"
-
-#~ msgid "monday"
-#~ msgstr "luns"
-
-#~ msgid "tuesday"
-#~ msgstr "martes"
-
-#~ msgid "tues"
-#~ msgstr "mart"
-
-#~ msgid "wednesday"
-#~ msgstr "mércores"
-
-#~ msgid "wednes"
-#~ msgstr "mércor"
-
-#~ msgid "thursday"
-#~ msgstr "xoves"
-
-#~ msgid "thur"
-#~ msgstr "xov"
-
-#~ msgid "thurs"
-#~ msgstr "xoves"
-
-#~ msgid "friday"
-#~ msgstr "venres"
-
-#~ msgid "saturday"
-#~ msgstr "sábado"
-
-#~ msgid "fortnight"
-#~ msgstr "quincena"
-
-#~ msgid "min"
-#~ msgstr "min"
-
-#~ msgid "sec"
-#~ msgstr "seg"
-
-#~ msgid "tomorrow"
-#~ msgstr "mañá"
-
-#~ msgid "yesterday"
-#~ msgstr "onte"
-
-#~ msgid "today"
-#~ msgstr "hoxe"
-
-#~ msgid "first"
-#~ msgstr "primeiro"
-
-#~ msgid "third"
-#~ msgstr "terceiro"
-
-#~ msgid "fifth"
-#~ msgstr "quinto"
-
-#~ msgid "sixth"
-#~ msgstr "sexto"
-
-#~ msgid "seventh"
-#~ msgstr "sétimo"
-
-#~ msgid "eighth"
-#~ msgstr "oitavo"
-
-#~ msgid "ninth"
-#~ msgstr "noveno"
-
-#~ msgid "tenth"
-#~ msgstr "décimo"
-
-#~ msgid "eleventh"
-#~ msgstr "décimo primeiro"
-
-#~ msgid "twelfth"
-#~ msgstr "décimo segundo"
-
-#~ msgid "Year:"
-#~ msgstr "Ano:"
-
-#~ msgid ""
-#~ "Please select the date you want to go to.\n"
-#~ "When you click on a day, you will be taken\n"
-#~ "to that date."
-#~ msgstr ""
-#~ "Seleccione a data á que quere ir.\n"
-#~ "Cando prema nun día, será levado a esa data."
-
-#~ msgid "Mail Source"
-#~ msgstr "Fonte de Correo"
-
-#~ msgid "Send a message without a subject"
-#~ msgstr "Enviar unha mensaxe sen asunto"
-
-#~ msgid "Mark messages in folder \"%s\""
-#~ msgstr "Marcar mensaxes na carpeta \"%s\""
-
-#~ msgid "Forwarding a message without a subject"
-#~ msgstr "Reenviando unha mensaxe sen asunto"
-
-#~ msgid "Forward message \"%s\""
-#~ msgstr "Reenviar mensaxe \"%s\""
-
-#~ msgid "Loading \"%s\""
-#~ msgstr "Cargando \"%s\""
-
-#~ msgid "Creating \"%s\""
-#~ msgstr "Creando \"%s\""
-
-#~ msgid "Display message UID \"%s\""
-#~ msgstr "Amosar a mensaxe co UID \"%s\""
-
-#~ msgid "Opening messages from folder \"%s\""
-#~ msgstr "Abrindo as mensaxes da carpeta \"%s\""
-
-#~ msgid "Viewing messages from folder \"%s\""
-#~ msgstr "Vendo as mensaxes da carpeta \"%s\""
-
-#~ msgid "Retrieving message %d of %d (uid \"%s\")"
-#~ msgstr "Recibindo a mensaxe %d de %d (uid \"%s\")"
-
-#, fuzzy
-#~ msgid "Save messages from folder \"%s\""
-#~ msgstr "Abrindo as mensaxes da carpeta \"%s\""
-
-#~ msgid "N_ew Directory Server"
-#~ msgstr "Novo Servidor de _Directorio"
-
-#~ msgid "_Save Calendar As"
-#~ msgstr "_Gardar Axenda Como"
-
-#, fuzzy
-#~ msgid "_Mail Configuration"
-#~ msgstr "Configuración do Correo"
-
-#~ msgid "window2"
-#~ msgstr "window2"
-
-#~ msgid "Time format"
-#~ msgstr "Formato da hora"
-
-#~ msgid "12-hour (AM/PM)"
-#~ msgstr "12 horas (AM/PM)"
-
-#~ msgid "24-hour"
-#~ msgstr "24 horas"
-
-#~ msgid "Weeks start on"
-#~ msgstr "A semana comeza o"
-
-#~ msgid "Preferences"
-#~ msgstr "Preferencias"
-
-#~ msgid "Alarm Properties"
-#~ msgstr "Propiedades da Alarma"
-
-#~ msgid "Could not rename folder %s to %s: destination exists"
-#~ msgstr "Non foi posible renomear a carpeta %s a %s: o destino xa existe"
-
-#~ msgid "Cannot copy data to output file: %s"
-#~ msgstr "Non é posible copiar os datos ó ficheiro de saída: %s"
-
-#~ msgid "Could not rename folder `%s': %s exists"
-#~ msgstr "Non foi posible renomear a carpeta `%s': %s existe"
-
-#~ msgid "Forward Message"
-#~ msgstr "Reenviar esta mensaxe"
-
-#~ msgid "Copy Message"
-#~ msgstr "Copiar Mensaxe"
-
-#~ msgid "Add Optional Fields..."
-#~ msgstr "Engadir Campos Opcionais..."
-
-#~ msgid "Browse..."
-#~ msgstr "Explorar..."
-
-#~ msgid "Couldn't create pipe to %s: %s"
-#~ msgstr "Non foi posible crear unha canalización con %s: %s"
-
-#~ msgid "Could not execute %s: %s\n"
-#~ msgstr "Non foi posible executar %s: %s\n"
-
-#~ msgid " (XXX unread)"
-#~ msgstr " (XXX sen ler)"
-
-#~ msgid "Don't know protocol to open URI `%s'"
-#~ msgstr "O protocolo para abrir o URI `%s' é descoñecido"
-
-#~ msgid "_New appointment..."
-#~ msgstr "_Nova cita..."
-
-#~ msgid "_Create New Folder..."
-#~ msgstr "_Crear unha Nova Carpeta..."
diff --git a/po/hu.po b/po/hu.po
deleted file mode 100644
index 894d8a1cb6..0000000000
--- a/po/hu.po
+++ /dev/null
@@ -1,10602 +0,0 @@
-#
-# András Tímár <timar@gnome.hu>, 2001
-# Szabolcs BAN <shooby@gnome.hu>, 2001
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: evolution VERSION\n"
-"POT-Creation-Date: 2001-05-22 15:15+0200\n"
-"PO-Revision-Date: 2001-05-22 15:23+02:00\n"
-"Last-Translator: András Tímár <timar@gnome.hu>\n"
-"Language-Team: Hungarian <hu@gnome.hu>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-2\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: addressbook/backend/ebook/e-card.c:3314
-msgid "Card: "
-msgstr "Kártya:"
-
-#: addressbook/backend/ebook/e-card.c:3316
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-"\n"
-"Név: "
-
-#: addressbook/backend/ebook/e-card.c:3317
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-"\n"
-" Elõtag: "
-
-#: addressbook/backend/ebook/e-card.c:3318
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-"\n"
-" Adott: "
-
-#: addressbook/backend/ebook/e-card.c:3319
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-"\n"
-" Egyéb: "
-
-#: addressbook/backend/ebook/e-card.c:3320
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-"\n"
-" Családi: "
-
-#: addressbook/backend/ebook/e-card.c:3321
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-"\n"
-" Utótag: "
-
-#: addressbook/backend/ebook/e-card.c:3335
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-"\n"
-"Születési dátum: "
-
-#: addressbook/backend/ebook/e-card.c:3346
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-"\n"
-"Cím:"
-
-#: addressbook/backend/ebook/e-card.c:3348
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-"\n"
-" Postafiók: "
-
-#: addressbook/backend/ebook/e-card.c:3349
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-"\n"
-" Kül:"
-
-#: addressbook/backend/ebook/e-card.c:3350
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-"\n"
-" Út: "
-
-#: addressbook/backend/ebook/e-card.c:3351
-msgid ""
-"\n"
-" City: "
-msgstr ""
-"\n"
-" Város: "
-
-#: addressbook/backend/ebook/e-card.c:3352
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-"\n"
-" Régió: "
-
-#: addressbook/backend/ebook/e-card.c:3353
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-"\n"
-" Irányítószám: "
-
-#: addressbook/backend/ebook/e-card.c:3354
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-"\n"
-" Ország: "
-
-#: addressbook/backend/ebook/e-card.c:3367
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3379
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-"\n"
-"Telefonok:\n"
-
-#: addressbook/backend/ebook/e-card.c:3382
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-"\n"
-"Telefon:"
-
-#: addressbook/backend/ebook/e-card.c:3406
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-"\n"
-"E-mail:\n"
-
-#: addressbook/backend/ebook/e-card.c:3409
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-"\n"
-"E-mail:"
-
-#: addressbook/backend/ebook/e-card.c:3428
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-"\n"
-"Levelezõ: "
-
-#: addressbook/backend/ebook/e-card.c:3434
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-"\n"
-"Idõzóna: "
-
-#: addressbook/backend/ebook/e-card.c:3442
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-"\n"
-"Hely: "
-
-#: addressbook/backend/ebook/e-card.c:3446
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-"\n"
-"Üzleti szabály:"
-
-#: addressbook/backend/ebook/e-card.c:3458
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-"\n"
-"Cég:"
-
-#: addressbook/backend/ebook/e-card.c:3459
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-"\n"
-" Név:"
-
-#: addressbook/backend/ebook/e-card.c:3460
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-"\n"
-" Egység:"
-
-#: addressbook/backend/ebook/e-card.c:3461
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-"\n"
-" 2. egység:"
-
-#: addressbook/backend/ebook/e-card.c:3462
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-"\n"
-" 3. egység:"
-
-#: addressbook/backend/ebook/e-card.c:3463
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-"\n"
-" 4. egység:"
-
-#: addressbook/backend/ebook/e-card.c:3467
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-"\n"
-"Kategóriák:"
-
-#: addressbook/backend/ebook/e-card.c:3468
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-"\n"
-"Megjegyzés:"
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3481
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-"\n"
-"Egyedi szöveg:"
-
-#: addressbook/backend/ebook/e-card.c:3484
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-"\n"
-"Nyilvános kulcs:"
-
-#: addressbook/backend/ebook/e-card.c:3745
-msgid "Multiple VCards"
-msgstr "Több VKártya"
-
-#: addressbook/backend/ebook/e-card.c:3753
-#, c-format
-msgid "VCard for %s"
-msgstr "%s VKártyája"
-
-#: addressbook/backend/ebook/e-destination.c:244
-msgid "???"
-msgstr "???"
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_VCard_Importer.oaf.in.h:1
-msgid "Factory to import VCard files into Evolution."
-msgstr "Factory a VCard fájlok Evolúcióba importálásához"
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_VCard_Importer.oaf.in.h:2
-msgid "Imports VCard files into Evolution."
-msgstr "VCard fájlok importálása az Evolúcióba."
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:21
-#: addressbook/backend/ebook/load-pine-addressbook.c:22
-#: addressbook/backend/ebook/test-client-list.c:23
-#: addressbook/backend/ebook/test-client.c:33
-#: addressbook/conduit/address-conduit.c:1092
-#: addressbook/gui/component/addressbook-factory.c:42
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:98 calendar/gui/main.c:57
-msgid "Could not initialize Bonobo"
-msgstr "A Bonobo inicializálása nem sikerült"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr "A kurzort nem tudom betölteni\n"
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr "Az EBook nincs betöltve\n"
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr "Nem tudom elindítani a wombat kiszolgálót"
-
-#: addressbook/conduit/address-conduit.c:655
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr "Nem tudom a wombat-ot elindítani"
-
-#: addressbook/conduit/address-conduit.c:687
-#: addressbook/conduit/address-conduit.c:690
-msgid "Could not read pilot's Address application block"
-msgstr "Nem tudom a pilot Address application blokkját olvasni"
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:7
-msgid "Add"
-msgstr "Hozzáadás"
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr "É_vforduló:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr "Üz_leti"
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr "Üzleti _fax"
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-msgid "C_ontacts..."
-msgstr "_Névjegyek..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr "Ka_tegóriák..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-msgid "Contact Editor"
-msgstr "Névjegy szerkesztõ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr "Részletek"
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr "Tárolás mint:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-msgid "General"
-msgstr "Alap"
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr "Új telefontípus"
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-msgid "No_tes:"
-msgstr "Felje_gyzések:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr "Telefon típusok"
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1284
-msgid "Primary Email"
-msgstr "Elsõdleges email"
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr "_HTML levelet kér"
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr "Weblap címe:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:84
-msgid "_Add"
-msgstr "Hozzá_adás"
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr "_Cím..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr "_Asszisztens neve:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr "Születésna_p:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr "Ü_zleti"
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-msgid "_Company:"
-msgstr "_Vállalat:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/folder-browser.c:715 mail/mail-config.glade.h:85
-#: ui/evolution-event-editor.xml.h:57 ui/evolution-mail.xml.h:103
-#: ui/evolution-task-editor-dialog.xml.h:69 ui/evolution-tasks.xml.h:9
-#: ui/evolution.xml.h:46
-msgid "_Delete"
-msgstr "_Törlés"
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr "_Osztály:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr "_Teljes név..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-msgid "_Home"
-msgstr "_Otthoni"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-msgid "_Job title:"
-msgstr "_Beosztás"
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr "_Fõnök neve:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-msgid "_Mobile"
-msgstr "_Mobil"
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr "Be_cenév:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr "_Hivatal:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr "_Foglalkozás:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr "Háza_stárs:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr "Ez a _levelezési cím"
-
-#: addressbook/contact-editor/e-contact-editor.c:603
-msgid "This contact belongs to these categories:"
-msgstr "Ez a névjegy az alábbi kategóriákhoz tartozik:"
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-#: addressbook/gui/widgets/e-addressbook-view.c:733
-msgid "Assistant"
-msgstr "Asszisztens"
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/contact-editor/e-contact-editor.c:1310
-msgid "Business"
-msgstr "Üzleti"
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-msgid "Business 2"
-msgstr "2. Üzleti"
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#: addressbook/gui/widgets/e-addressbook-view.c:713
-msgid "Business Fax"
-msgstr "Üzleti fax"
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Callback"
-msgstr "Visszahívás"
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "Car"
-msgstr "Autó"
-
-#: addressbook/contact-editor/e-contact-editor.c:1248
-msgid "Company"
-msgstr "Vállalat"
-
-#: addressbook/contact-editor/e-contact-editor.c:1249
-#: addressbook/contact-editor/e-contact-editor.c:1311
-msgid "Home"
-msgstr "Otthoni"
-
-#: addressbook/contact-editor/e-contact-editor.c:1250
-msgid "Home 2"
-msgstr "2. Otthoni"
-
-#: addressbook/contact-editor/e-contact-editor.c:1251
-#: addressbook/gui/widgets/e-addressbook-view.c:714
-msgid "Home Fax"
-msgstr "Otthoni fax"
-
-#: addressbook/contact-editor/e-contact-editor.c:1252
-#: addressbook/gui/widgets/e-addressbook-view.c:717
-msgid "ISDN"
-msgstr "ISDN"
-
-#: addressbook/contact-editor/e-contact-editor.c:1253
-msgid "Mobile"
-msgstr "Mobil"
-
-#: addressbook/contact-editor/e-contact-editor.c:1254
-#: addressbook/contact-editor/e-contact-editor.c:1312
-msgid "Other"
-msgstr "Más"
-
-#: addressbook/contact-editor/e-contact-editor.c:1255
-#: addressbook/gui/widgets/e-addressbook-view.c:719
-msgid "Other Fax"
-msgstr "Egyéb fax"
-
-#: addressbook/contact-editor/e-contact-editor.c:1256
-#: addressbook/gui/widgets/e-addressbook-view.c:720
-msgid "Pager"
-msgstr "Személyhívó"
-
-#: addressbook/contact-editor/e-contact-editor.c:1257
-msgid "Primary"
-msgstr "Elsõdleges"
-
-#: addressbook/contact-editor/e-contact-editor.c:1258
-#: addressbook/gui/widgets/e-addressbook-view.c:721
-msgid "Radio"
-msgstr "Rádió"
-
-#: addressbook/contact-editor/e-contact-editor.c:1259
-#: addressbook/gui/widgets/e-addressbook-view.c:722
-msgid "Telex"
-msgstr "Telex"
-
-#: addressbook/contact-editor/e-contact-editor.c:1260
-msgid "TTY/TDD"
-msgstr "TTY/TDD"
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:725
-msgid "Email 2"
-msgstr "2. email"
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/gui/widgets/e-addressbook-view.c:726
-msgid "Email 3"
-msgstr "3. email"
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-msgid "Delete Contact?"
-msgstr "Névjegy törlése?"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:233
-msgid "Contact Quick-Add"
-msgstr "Gyors névjegyhozzáadás"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:235
-msgid "Edit Full"
-msgstr "Részletes szerkesztés"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:276
-#: addressbook/gui/widgets/e-addressbook-view.c:700
-msgid "Full Name"
-msgstr "Teljes név"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:282
-msgid "E-mail"
-msgstr "Email"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr "_2. cím:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr "Kanada"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr "A cím ellenõrzése"
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr "Ors_zág:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr "Finnország"
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr "USA"
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr "_Cím:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-msgid "_City:"
-msgstr "_Város:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr "_Postafiók:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr "Á_llam/Helytartóság:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr "_Irányítószám:"
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr "A teljes név ellenõrzése"
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr "Dr."
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr "özv."
-
-#: addressbook/contact-editor/fullname.glade.h:4
-msgid "I"
-msgstr "I"
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr "II"
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr "III"
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr "ifj."
-
-#: addressbook/contact-editor/fullname.glade.h:8
-msgid "Miss"
-msgstr " "
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr " "
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr " "
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr " "
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr "id."
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr "_Keresztnév:"
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr "_Vezetéknév:"
-
-#: addressbook/contact-editor/fullname.glade.h:15
-msgid "_Middle:"
-msgstr "_Középsõ név:"
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr "M_egkülönböztetõ név"
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr "_Megszólítás:"
-
-#: addressbook/gui/component/addressbook.c:361
-#, c-format
-msgid "Enter password for %s"
-msgstr "Írd be %s jelszavát"
-
-#: addressbook/gui/component/addressbook.c:389
-msgid "Unable to open addressbook"
-msgstr "Nem tudom megnyitni a címjegyzéket"
-
-#: addressbook/gui/component/addressbook.c:396
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or the LDAP server\n"
-"is down"
-msgstr ""
-"Nem sikerült megnyitni ezt a címjegyzéket. Ez vagy azt \n"
-"jelenti, hogy helytelen URI-t adtál meg, vagy az LDAP\n"
-"kiszolgáló nem mûködik."
-
-#: addressbook/gui/component/addressbook.c:401
-msgid ""
-"This version of Evolution does not have LDAP support\n"
-"compiled in to it. If you want to use LDAP in Evolution\n"
-"you must compile the program from the CVS sources after\n"
-"retrieving OpenLDAP from the link below.\n"
-msgstr ""
-"Ez az Evolúció-változat nem támogatja az LDAP-t, mert nem\n"
-"fordították bele. Ha szeretnél LDAP-t használni az Evolúcióban,\n"
-"a CVS forrásból kell lefordítanod a programot, miután letöltötted\n"
-"az OpenLDAP-t az alábbi helyrõl.\n"
-
-#: addressbook/gui/component/addressbook.c:409
-msgid ""
-"We were unable to open this addressbook. Please check that the\n"
-"path exists and that you have permission to access it."
-msgstr ""
-"Nem sikerült megnyitni a címjegyzéket. Ellenõrizd, hogy az útvonal\n"
-"létezik-e és van-e jogod az eléréséhez."
-
-#: addressbook/gui/component/addressbook.c:569 calendar/gui/gnome-cal.c:233
-msgid "Any field contains"
-msgstr "Bármely mezõ tartalmazza"
-
-#: addressbook/gui/component/addressbook.c:570
-msgid "Name contains"
-msgstr "A név tartalmazza"
-
-#: addressbook/gui/component/addressbook.c:571
-msgid "Email contains"
-msgstr "Az emailcím tartalmazza"
-
-#: addressbook/gui/component/addressbook.c:714
-msgid "The URI that the Folder Browser will display"
-msgstr "Az URI amit a Mappaböngészõ meg fog nyitni"
-
-#: addressbook/gui/component/addressbook-config.c:148
-msgid "LDAP Server"
-msgstr "LDAP kiszolgáló"
-
-#: addressbook/gui/component/addressbook-config.c:150
-msgid "File"
-msgstr "Fájl"
-
-#: addressbook/gui/component/addressbook-config.c:153
-msgid "Unknown addressbook type"
-msgstr "Ismeretlen címjegyzéktípus"
-
-#: addressbook/gui/component/addressbook-config.c:163
-msgid "None (anonymous mode)"
-msgstr "Nincs (névtelen mód)"
-
-#: addressbook/gui/component/addressbook-config.c:165
-#: camel/camel-sasl-plain.c:32 camel/providers/imap/camel-imap-provider.c:80
-#: camel/providers/nntp/camel-nntp-store.c:291
-#: camel/providers/pop3/camel-pop3-provider.c:67 mail/mail-config.glade.h:52
-msgid "Password"
-msgstr "Jelszó"
-
-#: addressbook/gui/component/addressbook-config.c:168
-msgid "Unknown auth type"
-msgstr "Ismeretlen hitelesítési típus"
-
-#: addressbook/gui/component/addressbook-config.c:177
-msgid "Base"
-msgstr "Alap"
-
-#: addressbook/gui/component/addressbook-config.c:179
-msgid "One"
-msgstr "Egy"
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "Subtree"
-msgstr "Részfa"
-
-#: addressbook/gui/component/addressbook-config.c:184
-msgid "Unknown scope type"
-msgstr "Ismeretlen hatókörtípus"
-
-#: addressbook/gui/component/addressbook-config.c:349
-msgid "Bind DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:350
-msgid "FIXME Bind DN Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:352
-#: mail/mail-config.glade.h:60
-msgid "Remember this password"
-msgstr "Jelszó megjegyzése"
-
-#: addressbook/gui/component/addressbook-config.c:403
-#: mail/mail-config.glade.h:33
-msgid "Host:"
-msgstr "Gép:"
-
-#: addressbook/gui/component/addressbook-config.c:404
-msgid "FIXME Host help text here."
-msgstr "FIXME Ide jön a súgószöveg."
-
-#: addressbook/gui/component/addressbook-config.c:406
-msgid "Root DN:"
-msgstr "Root DN:"
-
-#: addressbook/gui/component/addressbook-config.c:407
-msgid "FIXME Root DN help text here."
-msgstr "FIXME Ide jön a súgószöveg."
-
-#: addressbook/gui/component/addressbook-config.c:411
-msgid "Port:"
-msgstr "Port:"
-
-#: addressbook/gui/component/addressbook-config.c:412
-msgid "FIXME Port help text here."
-msgstr "FIXME Ide jön a súgószöveg."
-
-#: addressbook/gui/component/addressbook-config.c:432
-msgid "Search Scope:"
-msgstr "Keresés hatóköre:"
-
-#: addressbook/gui/component/addressbook-config.c:479
-msgid "Authentication:"
-msgstr "Hitelesítés:"
-
-#: addressbook/gui/component/addressbook-config.c:501
-msgid "Advanced LDAP Options"
-msgstr "Haladó LDAP beállítások"
-
-#: addressbook/gui/component/addressbook-config.c:522
-#: mail/mail-config.glade.h:53
-msgid "Path:"
-msgstr "Útvonal:"
-
-#: addressbook/gui/component/addressbook-config.c:523
-msgid "FIXME Path Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:528
-msgid "Create path if it doesn't exist."
-msgstr "Létrehozza az útvonalat, ha nem létezik"
-
-#: addressbook/gui/component/addressbook-config.c:662
-msgid "Edit Addressbook"
-msgstr "Címjegyzék szerkesztése"
-
-#: addressbook/gui/component/addressbook-config.c:664
-msgid "Add Addressbook"
-msgstr "Címjegyzék hozzáadása"
-
-#: addressbook/gui/component/addressbook-config.c:682
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-"Válaszd ki, milyen címjegyzéked van, és add meg a vele kapcsolatos "
-"információkat."
-
-#: addressbook/gui/component/addressbook-config.c:688
-#: mail/mail-config.glade.h:43
-msgid "Name:"
-msgstr "Név:"
-
-#: addressbook/gui/component/addressbook-config.c:689
-msgid "FIXME Name help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:691
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr "Leírás:"
-
-#: addressbook/gui/component/addressbook-config.c:692
-msgid "FIXME Description help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-msgid "Addressbook Sources"
-msgstr "Címjegyzék forrásai"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:235
-#: addressbook/gui/widgets/e-addressbook-view.c:616
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:11 mail/mail-config.glade.h:23
-#: mail/message-browser.c:202 ui/evolution-addressbook.xml.h:2
-#: ui/evolution-event-editor.xml.h:17 ui/evolution-mail.xml.h:22
-#: ui/evolution-task-editor-dialog.xml.h:18 ui/evolution-tasks.xml.h:3
-msgid "Delete"
-msgstr "Törlés"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:28
-msgid "Edit"
-msgstr "Szerkesztés"
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-msgid "Name"
-msgstr "Név"
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-msgid "URI"
-msgstr "URI"
-
-#: addressbook/gui/component/addressbook-storage.c:99
-msgid "Other Contacts"
-msgstr "Egyéb címtárak"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Disable Queries"
-msgstr "Lekérdezések tiltása"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Enable Queries (Dangerous!)"
-msgstr "Lekérdezések engedélyezése (Veszélyes!)"
-
-#: addressbook/gui/component/e-address-widget.c:388
-#: addressbook/gui/component/select-names/e-select-names-popup.c:281
-msgid "Edit Contact Info"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:424
-#: addressbook/gui/component/select-names/e-select-names-popup.c:347
-msgid "Add to Contacts"
-msgstr "Hozzáadás a névjegyalbumhoz"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-msgid "A Bonobo control for an address popup."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A Bonobo control for displaying an address."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr "Evolúció címjegyzék minikártyáját megjelenítõ control."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-msgid "Evolution Addressbook minicard viewer"
-msgstr "Evolúció címjegyzék minikártya-nézõke"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-msgid "Evolution component for handling contacts."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-#, fuzzy
-msgid "Factory for the Addressbook Minicard control"
-msgstr "Az Evolúció naptár csatorna beállító eszköze.\n"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-msgid "Factory for the Addressbook's address displayer"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-#, fuzzy
-msgid "Factory for the Addressbook's address popup"
-msgstr "Az Evolúció naptár csatorna beállító eszköze.\n"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:10
-#, fuzzy
-msgid "Factory for the Evolution addressbook component."
-msgstr "Az Evolúció naptár csatorna beállító eszköze.\n"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:11
-#, fuzzy
-msgid "Factory for the sample Addressbook control"
-msgstr "Címjegyzékben való kereséshez kattints ide"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:161
-#: composer/e-msg-composer-attachment-bar.c:468 filter/filter-filter.c:401
-#: filter/filter-rule.c:549 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:265 shell/e-shortcuts-view.c:388
-msgid "Remove"
-msgstr "Törlés"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:176
-msgid "Remove All"
-msgstr "Mindet törli"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:200
-msgid "Send HTML Mail?"
-msgstr "HTML levél küldése?"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-#, fuzzy
-msgid "Evolution's addressbook name selection interface."
-msgstr "Evolúció címlista csatorna"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr ""
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr "Keresés..."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-msgid "Message Recipients"
-msgstr "A levél címzettjei"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-msgid "Select Names"
-msgstr "Válassz neveket"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-msgid "Select name from:"
-msgstr "Válassz egy nevet innen:"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:158
-#: mail/mail-search.c:242
-msgid "Search"
-msgstr "Keresés"
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr "123"
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr "a"
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr "b"
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr "c"
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr "d"
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr "e"
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr "f"
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr "g"
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr "h"
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr "i"
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr "j"
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr "k"
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr "l"
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr "m"
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr "n"
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-msgid "o"
-msgstr "o"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr "p"
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr "q"
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-msgid "r"
-msgstr "r"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr "s"
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr "t"
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr "u"
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr "v"
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr "w"
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr "x"
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr "y"
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr "z"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:135
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:230
-#: addressbook/gui/widgets/e-addressbook-view.c:551
-#: addressbook/gui/widgets/e-addressbook-view.c:611
-msgid "Save as VCard"
-msgstr "Mentés VCard-ként"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:231
-#: addressbook/gui/widgets/e-addressbook-view.c:612
-msgid "Send contact to other"
-msgstr "A névjegy elküldése valakinek"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:232
-#: addressbook/gui/widgets/e-addressbook-view.c:613
-msgid "Send message to contact"
-msgstr "Levél küldése ennek a személynek"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:233
-#: addressbook/gui/widgets/e-addressbook-view.c:614 mail/message-browser.c:199
-#: ui/evolution-addressbook.xml.h:6 ui/evolution-calendar.xml.h:23
-#: ui/evolution-mail.xml.h:65 ui/evolution-tasks.xml.h:6
-msgid "Print"
-msgstr "Nyomtatás"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:234
-#: addressbook/gui/widgets/e-addressbook-view.c:615
-msgid "Print Envelope"
-msgstr "Boríték nyomtatása"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:698
-msgid "* Click here to add a contact *"
-msgstr "* Kattints ide névjegy hozzáadásához *"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:699
-msgid "File As"
-msgstr "Tárolás mint"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:701
-msgid "Email"
-msgstr "Email"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:702
-msgid "Primary Phone"
-msgstr "Elsõdleges telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:703
-msgid "Assistant Phone"
-msgstr "Asszisztens telefonja"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:704
-msgid "Business Phone"
-msgstr "Munkahelyi telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:705
-#, fuzzy
-msgid "Callback Phone"
-msgstr "Visszahívás"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:706
-msgid "Company Phone"
-msgstr "Céges telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:707
-msgid "Home Phone"
-msgstr "Otthoni telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:708
-msgid "Organization"
-msgstr "Szervezet"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:709
-msgid "Business Address"
-msgstr "Munkahelyi cím"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:710
-msgid "Home Address"
-msgstr "Otthoni cím"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:711
-msgid "Mobile Phone"
-msgstr "Mobiltelefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:712
-msgid "Car Phone"
-msgstr "Autótelefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:715
-msgid "Business Phone 2"
-msgstr "2. munkahelyi telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:716
-msgid "Home Phone 2"
-msgstr "2. otthoni telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:718
-msgid "Other Phone"
-msgstr "Egyéb telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:723
-msgid "TTY"
-msgstr "TTY"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:724
-msgid "Other Address"
-msgstr "Egyéb cím"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:727
-msgid "Web Site"
-msgstr "Webhely"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:728
-msgid "Department"
-msgstr "Osztály"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:729
-msgid "Office"
-msgstr "Hivatal"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:730
-msgid "Title"
-msgstr "Beosztás"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:731
-msgid "Profession"
-msgstr "Foglalkozás"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:732
-msgid "Manager"
-msgstr "Fõnök"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:734
-msgid "Nickname"
-msgstr "Becenév"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:735
-msgid "Spouse"
-msgstr "Házastárs"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:736
-msgid "Note"
-msgstr "Megjegyzés"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:737
-msgid "Free-busy URL"
-msgstr ""
-
-#: addressbook/gui/widgets/e-minicard-control.c:282
-msgid "Save in addressbook"
-msgstr "Mentés a címjegyzékbe"
-
-#: addressbook/gui/widgets/e-minicard-view.c:216
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-"\n"
-"\n"
-"Nincsenek elemek, amiket meg lehetne mutatni\n"
-"\n"
-"Új névjegy készítéséhez kattints kettõt ide."
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:26
-msgid "Card View"
-msgstr "Kártyanézet"
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr "10 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr "8 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr "A végén az ûrlapok ürítése:"
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr "Törzs"
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr "Alsó:"
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr "Dimenziók:"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr "Betûkészlet..."
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr "Betûkészletek"
-
-#: addressbook/printing/e-contact-print.glade.h:9
-msgid "Footer:"
-msgstr "Lábléc:"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr "Formátum"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-msgid "Header"
-msgstr "Fejléc"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr "Fejléc/lábléc"
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr "Fejlécek"
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr "Fejléc minden levélnek"
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr "Magasság:"
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr "Rögtön egymás után következnek"
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr "Beleértve:"
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr "Fekvõ"
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr "Bal:"
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr "Levél címkék minden lapon"
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr "Margók"
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr "Oszlopok száma:"
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr "Beállítások"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr "Elhelyezkedés"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr "Lap"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-msgid "Page Setup:"
-msgstr "Oldal beállítás:"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr "Papír"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr "Papír forrás:"
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr "Álló"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr "Elõnézet:"
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr "Nyomatás szürkeskálás árnyalással"
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr "Páros lapokon fordított"
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr "Jobb:"
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr "Szekciók:"
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr "Árnyalás"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-msgid "Size:"
-msgstr "Méret:"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr "Új lapon kezdd"
-
-#: addressbook/printing/e-contact-print.glade.h:38
-msgid "Style name:"
-msgstr "Stílus neve:"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr "Felsõ:"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-msgid "Type:"
-msgstr "Típus"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr "Szélesség:"
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr "Hibás kommunikáció a naptár kiszolgálóval"
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr "Nem tudom a pilot Calendar application blokkját olvasni"
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr "Nem tudom a pilot Calendar ToDo blokkját olvasni"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr "A találkozód figyelmeztetõ üzenete:"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-msgid "Snooze"
-msgstr "Szundi"
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr "Ok"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr "Riasztó szolgáltatás"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-msgid "Factory for the alarm notification service"
-msgstr ""
-
-#: calendar/gui/alarm-notify/notify-main.c:56
-#, c-format
-msgid ""
-"It is %s. The Unix time is %ld right now. We just thought you may like to "
-"know."
-msgstr ""
-
-#: calendar/gui/alarm-notify/notify-main.c:93 calendar/gui/main.c:52
-msgid "Could not initialize GNOME"
-msgstr "Nem sikerült a GNOME inicializálása"
-
-#: calendar/gui/alarm-notify/notify-main.c:108
-#, fuzzy
-msgid "Could not create the alarm notify service factory"
-msgstr ""
-"Nem tudom létrehozni a könyvtárat\n"
-"%s\n"
-"Hiba: %s"
-
-#: calendar/gui/calendar-commands.c:266
-msgid "File not found"
-msgstr "Nem találom a fájlt"
-
-#: calendar/gui/calendar-commands.c:290
-msgid "Open calendar"
-msgstr "Naptár megnyitása"
-
-#: calendar/gui/calendar-commands.c:332
-msgid "Save calendar"
-msgstr "Naptár mentése"
-
-#: calendar/gui/calendar-commands.c:468
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-"Nem sikerült létrehozni a naptárnézetet. Ellenõrizd az ORBit és OAF "
-"telepítésedet."
-
-#: calendar/gui/calendar-model.c:360 calendar/gui/calendar-model.c:898
-#: calendar/gui/e-calendar-table.c:322
-msgid "Public"
-msgstr "Nyilvános"
-
-#: calendar/gui/calendar-model.c:363 calendar/gui/calendar-model.c:900
-#: calendar/gui/e-calendar-table.c:323
-msgid "Private"
-msgstr "Személyes"
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:902
-#: calendar/gui/e-calendar-table.c:324
-msgid "Confidential"
-msgstr "Bizalmas"
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/event-editor.c:1601
-#: calendar/gui/event-editor.c:1628
-#: camel/providers/smtp/camel-smtp-transport.c:221
-msgid "Unknown"
-msgstr "Ismeretlen"
-
-#: calendar/gui/calendar-model.c:457
-msgid "N"
-msgstr "É"
-
-#: calendar/gui/calendar-model.c:457
-msgid "S"
-msgstr "D"
-
-#: calendar/gui/calendar-model.c:459
-msgid "E"
-msgstr "K"
-
-#: calendar/gui/calendar-model.c:459
-msgid "W"
-msgstr "Ny"
-
-#: calendar/gui/calendar-model.c:497 calendar/gui/calendar-model.c:1066
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:344 mail/message-list.c:689
-msgid "High"
-msgstr "Magas"
-
-#: calendar/gui/calendar-model.c:499 calendar/gui/calendar-model.c:1068
-#: calendar/gui/calendar-model.c:1574
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:345 mail/message-list.c:688
-msgid "Normal"
-msgstr "Normális"
-
-#: calendar/gui/calendar-model.c:501 calendar/gui/calendar-model.c:1070
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:346 mail/message-list.c:687
-msgid "Low"
-msgstr "Alacsony"
-
-#: calendar/gui/calendar-model.c:537 calendar/gui/calendar-model.c:1122
-#: calendar/gui/e-calendar-table.c:398
-msgid "Transparent"
-msgstr "Áttetszõ"
-
-#: calendar/gui/calendar-model.c:540 calendar/gui/calendar-model.c:1124
-#: calendar/gui/e-calendar-table.c:397
-msgid "Opaque"
-msgstr "Átlátszatlan"
-
-#: calendar/gui/calendar-model.c:638 calendar/gui/calendar-model.c:1176
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:418
-msgid "Not Started"
-msgstr "Nem indult még el"
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1178
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:419
-msgid "In Progress"
-msgstr "Folyamatban"
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1180
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:420
-msgid "Completed"
-msgstr "Kész"
-
-#: calendar/gui/calendar-model.c:647 calendar/gui/calendar-model.c:1182
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:421 camel/camel-service.c:544
-#: camel/camel-service.c:580
-msgid "Cancelled"
-msgstr "Megszakítva"
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:794 e-util/e-time-utils.c:278
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr "%Y/%m/%d %a %H:%M:%S"
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:797 e-util/e-time-utils.c:287
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr "%Y/%m/%d %a %I:%M:%S %p"
-
-#: calendar/gui/calendar-model.c:802
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-"A dátumot a következõ formában tudod beírni: \n"
-"\n"
-"%s"
-
-#: calendar/gui/calendar-model.c:882
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr ""
-"A besorolás csak 'Nyilvános', 'Személyes', 'Bizalmas' vagy 'Semmi' lehet."
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:896 calendar/gui/calendar-model.c:1120
-#: calendar/gui/calendar-model.c:1174 calendar/gui/e-calendar-table.c:321
-#: calendar/gui/e-calendar-table.c:396 mail/mail-account-gui.c:976
-#: mail/mail-accounts.c:120 mail/mail-accounts.c:164
-#: mail/mail-config.glade.h:46 shell/e-shell-view.c:1312
-#: widgets/misc/e-cell-date-edit.c:237 widgets/misc/e-dateedit.c:432
-#: widgets/misc/e-dateedit.c:1341 widgets/misc/e-dateedit.c:1456
-msgid "None"
-msgstr "Semmi"
-
-#: calendar/gui/calendar-model.c:970
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-"A földrajzi pozíció megadása a következõ formátumban lehetséges: \n"
-"\n"
-"45.436845,125.862501"
-
-#: calendar/gui/calendar-model.c:1010
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr "A százalékos érték 0 és 100 között lehet."
-
-#: calendar/gui/calendar-model.c:1051
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr "A prioritás 'Magas', 'Alacsony' vagy 'Nem megadott' lehet."
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1064
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:347
-msgid "Undefined"
-msgstr "Nem megadott"
-
-#: calendar/gui/calendar-model.c:1105
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr "Az átlátszóság csak 'Áttetszõ', 'Átlátszatlan' vagy 'Semmi' lehet."
-
-#: calendar/gui/calendar-model.c:1576
-msgid "Recurring"
-msgstr "Ismétlõdõ"
-
-#: calendar/gui/calendar-model.c:1578
-msgid "Assigned"
-msgstr "Kiosztva"
-
-#: calendar/gui/calendar-model.c:1584
-msgid "Yes"
-msgstr "Igen"
-
-#: calendar/gui/calendar-model.c:1584
-msgid "No"
-msgstr "Nem"
-
-#: calendar/gui/calendar-summary.c:198
-msgid "%A, %e %B %Y"
-msgstr "%Y %B %e, %A"
-
-#: calendar/gui/calendar-summary.c:207
-msgid "Appointments"
-msgstr "Találkozók"
-
-#: calendar/gui/calendar-summary.c:245 calendar/gui/calendar-summary.c:251
-msgid "%I:%M%p"
-msgstr "%I:%M%p"
-
-#: calendar/gui/calendar-summary.c:275 calendar/gui/print.c:948
-#: views/tasks/galview.xml.h:1
-msgid "Tasks"
-msgstr "Feladatok"
-
-#: calendar/gui/calendar-summary.c:443
-msgid "<b>Error loading calendar</b>"
-msgstr "<b>Hiba a naptár betöltése közben</b>"
-
-#: calendar/gui/calendar-summary.c:455
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr "<b>Hiba a naptár betöltése közben:<br>Nem támogatott metódus"
-
-#: calendar/gui/calendar-summary.c:622 mail/mail-config.glade.h:24
-msgid "Display"
-msgstr "Megjelenítés"
-
-#: calendar/gui/calendar-summary.c:627
-msgid "Show appointments"
-msgstr "Találkozók mutatása"
-
-#: calendar/gui/calendar-summary.c:635
-msgid "Show tasks"
-msgstr "Feladatok mutatása"
-
-#: calendar/gui/calendar-summary.c:690
-msgid "Things to do"
-msgstr "Teendõk"
-
-#: calendar/gui/calendar-summary.c:721 calendar/gui/e-itip-control.glade.h:7
-msgid "Loading Calendar"
-msgstr "Naptár betöltése"
-
-#: calendar/gui/control-factory.c:126
-msgid "The URI that the calendar will display"
-msgstr "Az URI amit a naptár megjelenít"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:189
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr "Riasztás idõpontja: %Y %b %d, %A, %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:196
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr "Figyelmeztetés a találkozóra: %Y %b %d, %A, %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:207
-msgid "No summary available."
-msgstr "Nincs elérhetõ összegzés."
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:5
-msgid "Close"
-msgstr "Bezárás"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-msgid "Edit appointment"
-msgstr "Idõpont szerkesztése"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr "Szundi idõ (percek)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr "05 perc"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr "10 perc"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr "12 órás (de/du)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr "15 perc"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr "24 órás"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr "30 perc"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr "60 perc"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr "A riasztás idõtartama"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr "Hangos riasztás"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr "Sípjel a figyelmeztetõ ablak megjelenésekor."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-msgid "Calendar"
-msgstr "Naptár"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr "Naptár beállításai"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "Színek"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr "A hétvégék összenyomása"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr "Dátumnavigátor beállításai"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-msgid "Defaults"
-msgstr "Alapértelmezett"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr "Megjelenítési beállítások"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:154
-msgid "Due Date"
-msgstr "Lejárat"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr "Szundi idõtartama"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr "Nap vége:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr "A hét elsõ napja:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr "Pé"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:479
-msgid "Friday"
-msgstr "Péntek"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr "Kiemelés"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr "A ma lejáró elemek"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr "A ma lejáró elemek:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr "Még nem lejárt elemek"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr "Még nem lejárt elemek:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr "H"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:475
-msgid "Monday"
-msgstr "Hétfõ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr "Lejárt elemek"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr "Lejárt elemek:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:54
-msgid "Pick a color"
-msgstr "Válassz egy színt"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:157
-msgid "Priority"
-msgstr "Prioritás"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-msgid "Remind me of all appointments"
-msgstr "Minden találkozóra figyelmeztess"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-msgid "Reminders"
-msgstr "Emlékeztetõk"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr "Szo"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:480
-msgid "Saturday"
-msgstr "Szombat"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr "Mutasd"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-msgid "Show appointment end times"
-msgstr "Találkozók végpontjának mutatása"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr "Hét számának mutatása"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr "Nap kezdete:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr "V"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:481
-msgid "Sunday"
-msgstr "Vasárnap"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-msgid "TaskPad"
-msgstr "Feladattábla"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr "Cs"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:478
-msgid "Thursday"
-msgstr "Csütörtök"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr "Lejáratig hátralévõ idõ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr "Idõosztások:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr "Idõformátum:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr "K"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:476
-msgid "Tuesday"
-msgstr "Kedd"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr "Vizuális figyelmeztetés"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr "Sze"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:477
-msgid "Wednesday"
-msgstr "Szerda"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr "Munkahét"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr "perccel a bekövetkezésük elõtt."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:88
-msgid "seconds."
-msgstr "másodperc."
-
-#: calendar/gui/dialogs/delete-comp.c:84
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr "Tényleg törölni akarod ezt a találkozót: '%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:87
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr "Tényleg törölni akarod ezt a névtelen találkozót?"
-
-#: calendar/gui/dialogs/delete-comp.c:93
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr "Tényleg törölni akarod ezt a feladatot: '%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:96
-msgid "Are you sure you want to delete this untitled task?"
-msgstr "Tényleg törölni akarod ezt a névtelen feladatot?"
-
-#: calendar/gui/dialogs/delete-comp.c:102
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr "Tényleg törölni akarod ezt a naplóbejegyzést: '%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:105
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr "Tényleg törölni akarod ezt a névtelen naplóbejegyzést?"
-
-#: calendar/gui/dialogs/delete-comp.c:120
-#, c-format
-msgid "Are you sure you want to delete %d appointments?"
-msgstr "Tényleg törölni akarsz %d találkozót?"
-
-#: calendar/gui/dialogs/delete-comp.c:125
-#, c-format
-msgid "Are you sure you want to delete %d tasks?"
-msgstr "Tényleg törölni akarsz %d feladatot?"
-
-#: calendar/gui/dialogs/delete-comp.c:130
-#, c-format
-msgid "Are you sure you want to delete %d journal entries?"
-msgstr "Tényleg törölni akarsz %d naplóbejegyzést?"
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr "Mented a változtatásokat?"
-
-#: calendar/gui/dialogs/task-editor.c:709
-msgid "Edit Task"
-msgstr "Feladat vége"
-
-#: calendar/gui/dialogs/task-editor.c:714 calendar/gui/event-editor.c:382
-#, c-format
-msgid "Appointment - %s"
-msgstr "Idõpont - %s"
-
-#: calendar/gui/dialogs/task-editor.c:717 calendar/gui/event-editor.c:385
-#, c-format
-msgid "Task - %s"
-msgstr "Feladat - %s"
-
-#: calendar/gui/dialogs/task-editor.c:720 calendar/gui/event-editor.c:388
-#, c-format
-msgid "Journal entry - %s"
-msgstr "Napló bejegyzés - %s"
-
-#: calendar/gui/dialogs/task-editor.c:734 calendar/gui/event-editor.c:402
-msgid "No summary"
-msgstr "Nincs összegzés"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr "S_zázalékos készenlét:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:150
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr "Besorolás"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-msgid "Date & Time"
-msgstr "Dátum és idõ"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr "Teljesítés dátuma:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-msgid "Pri_vate"
-msgstr "Szemé_lyes"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-msgid "Progress"
-msgstr "Folyamatban"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr "Nyil_vános"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-msgid "Sta_rt Date:"
-msgstr "Ke_zdés dátuma:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-msgid "Su_mmary:"
-msgstr "Ö_sszegzés:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr "Feladat"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-msgid "URL:"
-msgstr "URL:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr "_Bizalmas"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Contacts..."
-msgstr "_Névjegyek..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-msgid "_Due Date:"
-msgstr "Le_járat:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-msgid "_Priority:"
-msgstr "_Prioritás:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "_Status:"
-msgstr "Áll_apot:"
-
-#: calendar/gui/e-calendar-table.c:149
-msgid "Categories"
-msgstr "Kategóriák"
-
-#: calendar/gui/e-calendar-table.c:151
-msgid "Completion Date"
-msgstr "Befejezés dátuma"
-
-#: calendar/gui/e-calendar-table.c:152
-msgid "End Date"
-msgstr "Határidõ"
-
-#: calendar/gui/e-calendar-table.c:153
-msgid "Start Date"
-msgstr "Kezdés dátuma"
-
-#: calendar/gui/e-calendar-table.c:155
-msgid "Geographical Position"
-msgstr "Földrajzi hely"
-
-#: calendar/gui/e-calendar-table.c:156
-msgid "Percent complete"
-msgstr "Százalékos készenlét"
-
-#: calendar/gui/e-calendar-table.c:158
-msgid "Summary"
-msgstr "Összegzés"
-
-#: calendar/gui/e-calendar-table.c:159
-msgid "Transparency"
-msgstr "Átlátszóság"
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "URL"
-msgstr "URL"
-
-#: calendar/gui/e-calendar-table.c:161
-msgid "Alarms"
-msgstr "Ébresztõk"
-
-#: calendar/gui/e-calendar-table.c:162
-msgid "Click here to add a task"
-msgstr "Kattints ide új feladat hozzáadásához"
-
-#: calendar/gui/e-calendar-table.c:366
-#, c-format
-msgid "0%"
-msgstr "0%"
-
-#: calendar/gui/e-calendar-table.c:367
-#, c-format
-msgid "10%"
-msgstr "10%"
-
-#: calendar/gui/e-calendar-table.c:368
-#, c-format
-msgid "20%"
-msgstr "20%"
-
-#: calendar/gui/e-calendar-table.c:369
-#, c-format
-msgid "30%"
-msgstr "30%"
-
-#: calendar/gui/e-calendar-table.c:370
-#, c-format
-msgid "40%"
-msgstr "40%"
-
-#: calendar/gui/e-calendar-table.c:371
-#, c-format
-msgid "50%"
-msgstr "50%"
-
-#: calendar/gui/e-calendar-table.c:372
-#, c-format
-msgid "60%"
-msgstr "60%"
-
-#: calendar/gui/e-calendar-table.c:373
-#, c-format
-msgid "70%"
-msgstr "70%"
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "80%"
-msgstr "80%"
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "90%"
-msgstr "90%"
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "100%"
-msgstr "100%"
-
-#: calendar/gui/e-calendar-table.c:736
-msgid "Edit this task"
-msgstr "A feladat szerkesztése"
-
-#: calendar/gui/e-calendar-table.c:738
-msgid "Mark as complete"
-msgstr "Megjelölés készként"
-
-#: calendar/gui/e-calendar-table.c:739
-#: ui/evolution-task-editor-dialog.xml.h:19
-msgid "Delete this task"
-msgstr "A feladat törlése"
-
-#: calendar/gui/e-calendar-table.c:744
-msgid "Mark tasks as complete"
-msgstr "Feladatok megjelölése készként"
-
-#: calendar/gui/e-calendar-table.c:745 ui/evolution-tasks.xml.h:4
-msgid "Delete selected tasks"
-msgstr "Kijelölt feladatok törlése"
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:570 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:617
-msgid "am"
-msgstr "de"
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:573 calendar/gui/e-week-view.c:303
-#: calendar/gui/print.c:616
-msgid "pm"
-msgstr "du"
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:274 calendar/gui/e-day-view.c:1294
-#: calendar/gui/e-week-view-main-item.c:325
-msgid "%A %d %B"
-msgstr "%B %d, %A"
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:278 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:334
-msgid "%a %d %b"
-msgstr "%b %d, %a"
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:282 calendar/gui/e-day-view.c:1321
-#: calendar/gui/e-week-view-main-item.c:348
-msgid "%d %b"
-msgstr "%b %d"
-
-#: calendar/gui/e-day-view.c:3146 ui/evolution-calendar.xml.h:16
-msgid "New Appointment"
-msgstr "Új találkozó"
-
-#: calendar/gui/e-day-view.c:3148 calendar/gui/e-week-view.c:3279
-msgid "New All Day Event"
-msgstr "Új mindennapos esemény"
-
-#: calendar/gui/e-day-view.c:3153 calendar/gui/e-week-view.c:3284
-msgid "Go to Today"
-msgstr "Ugorás a mai napra"
-
-#: calendar/gui/e-day-view.c:3155 calendar/gui/e-week-view.c:3286
-msgid "Go to Date..."
-msgstr "Ugrás dátumra..."
-
-#: calendar/gui/e-day-view.c:3162 calendar/gui/e-week-view.c:3292
-#: ui/evolution-calendar.xml.h:19 ui/evolution-message-composer.xml.h:11
-msgid "Open"
-msgstr "Megnyitás"
-
-#: calendar/gui/e-day-view.c:3164 calendar/gui/e-week-view.c:3294
-msgid "Delete this Appointment"
-msgstr "A találkozó törlése"
-
-#: calendar/gui/e-day-view.c:3166 calendar/gui/e-week-view.c:3296
-#: ui/evolution-event-editor.xml.h:45
-msgid "Schedule Meeting"
-msgstr "Értekezlet tervezése"
-
-#: calendar/gui/e-day-view.c:3175 calendar/gui/e-week-view.c:3309
-#, fuzzy
-msgid "Make this Occurrence Movable"
-msgstr "A megbeszélés mozgathatóvá tétele"
-
-#: calendar/gui/e-day-view.c:3177 calendar/gui/e-week-view.c:3311
-msgid "Delete this Occurrence"
-msgstr "Az elõfordulás törlése"
-
-#: calendar/gui/e-day-view.c:3179
-msgid "Delete all Occurrences"
-msgstr "Az összes elõfordulás törlése"
-
-#: calendar/gui/e-day-view-time-item.c:519
-#, c-format
-msgid "%02i minute divisions"
-msgstr "%02i perces osztás"
-
-#: calendar/gui/e-itip-control.c:161
-msgid "I couldn't update your calendar file!\n"
-msgstr "Nem lehet frissÍteni a naptárfájlodat!\n"
-
-#: calendar/gui/e-itip-control.c:167 calendar/gui/e-itip-control.c:510
-msgid "Component successfully updated."
-msgstr "Az összetevõ frissítése sikeresen megtörtént."
-
-#: calendar/gui/e-itip-control.c:173
-msgid "There was an error loading the calendar file."
-msgstr "Hiba történt a naptárfájl betöltése közben."
-
-#: calendar/gui/e-itip-control.c:197
-msgid "I couldn't open your calendar file!\n"
-msgstr "Nem sikerült megnyitni a naptárfájlodat!\n"
-
-#: calendar/gui/e-itip-control.c:458 calendar/gui/e-itip-control.c:529
-msgid "I couldn't load your calendar file!\n"
-msgstr "Nem sikerült betölteni a naptárfájlodat!\n"
-
-#: calendar/gui/e-itip-control.c:470
-msgid "I couldn't read your calendar file!\n"
-msgstr "Nem sikerült elolvasni a naptárfájlodat!\n"
-
-#: calendar/gui/e-itip-control.c:483
-msgid "This is a reply from someone who was uninvited!"
-msgstr "Ez egy hívatlan vendég válasza!"
-
-#: calendar/gui/e-itip-control.c:499
-msgid "I couldn't update your calendar store."
-msgstr "Nem sikerült frissíteni a naptártárolódat."
-
-#: calendar/gui/e-itip-control.c:540
-msgid "I couldn't delete the calendar component!\n"
-msgstr "Nem sikerült törölni a naptárösszetevõt!\n"
-
-#: calendar/gui/e-itip-control.c:550
-msgid "Component successfully deleted."
-msgstr "Az összetevõ törlése sikerült."
-
-#: calendar/gui/e-itip-control.c:694
-msgid "I don't recognize this type of calendar component."
-msgstr "Ez a naptárösszetevõ nem felismerhetõ."
-
-#: calendar/gui/e-itip-control.c:780
-msgid "Add to Calendar"
-msgstr "Hozzáadás a naptárhoz"
-
-#: calendar/gui/e-itip-control.c:814
-msgid " Accept "
-msgstr " Elfogad "
-
-#: calendar/gui/e-itip-control.c:815
-msgid " Decline "
-msgstr " Elvet "
-
-#: calendar/gui/e-itip-control.c:816
-msgid " Tentative "
-msgstr " Kísérleti "
-
-#: calendar/gui/e-itip-control.c:860
-msgid "Update Calendar"
-msgstr "Naptár frissítése"
-
-#: calendar/gui/e-itip-control.c:883
-msgid "Cancel Meeting"
-msgstr "Értekezlet lemondása"
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, no-c-format
-msgid "%P %%"
-msgstr "%P %%"
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr "--to--"
-
-#: calendar/gui/e-itip-control.glade.h:4
-msgid "Calendar Message"
-msgstr "Naptárüzenet"
-
-#: calendar/gui/e-itip-control.glade.h:5
-msgid "Date:"
-msgstr "Dátum:"
-
-#: calendar/gui/e-itip-control.glade.h:8
-msgid "Loading calendar..."
-msgstr "Naptár betöltése folyamatban..."
-
-#: calendar/gui/e-itip-control.glade.h:9
-msgid "Organizer:"
-msgstr "Szervezõ:"
-
-#: calendar/gui/e-itip-control.glade.h:10
-msgid "Server Message:"
-msgstr "Üzenet a kiszolgálótól:"
-
-#: calendar/gui/e-itip-control.glade.h:11
-msgid "Summary:"
-msgstr "Összegzés:"
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr "date-end"
-
-#: calendar/gui/e-itip-control.glade.h:13
-msgid "date-start"
-msgstr "date-start"
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-msgid "Attendee"
-msgstr "Résztvevõ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-msgid "Attendee address"
-msgstr "Résztvevõ címe"
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-msgid "Attendees: "
-msgstr "Résztvevõk:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr ""
-"Értekezlet\n"
-"lemondása"
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-msgid "Chair"
-msgstr "Levezetõ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-msgid "Meeting Invitations"
-msgstr "Értekezletmeghívások"
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr "Nem vesz részt"
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr "Esetleges résztvevõ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-msgid "Organizer: "
-msgstr "Szervezõ: "
-
-#: calendar/gui/e-meeting-dialog.glade.h:14
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-"Esemény\n"
-"közzététele"
-
-#: calendar/gui/e-meeting-dialog.glade.h:16
-msgid "RSVP"
-msgstr "RSVP"
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid ""
-"Request\n"
-"Meeting"
-msgstr ""
-"Értekezlet\n"
-"összehívása"
-
-#: calendar/gui/e-meeting-dialog.glade.h:19
-msgid "Required Participant"
-msgstr "Szükséges résztvevõk"
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-msgid "Role"
-msgstr "Szerep"
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-msgid ""
-"Schedule\n"
-"Time"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:23 filter/libfilter-i18n.h:49
-#: mail/message-list.c:1081
-msgid "Status"
-msgstr "Állapot"
-
-#: calendar/gui/e-tasks.c:181 calendar/gui/e-tasks.c:525
-#: calendar/gui/e-tasks.c:558
-msgid "All"
-msgstr "Mindenki"
-
-#: calendar/gui/e-tasks.c:187
-msgid "Category:"
-msgstr "Kategória:"
-
-#: calendar/gui/e-tasks.c:333
-#, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "Nem sikerült betölteni a feladatot %s-be."
-
-#: calendar/gui/e-tasks.c:345
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr "'%s' betöltéséhez szükséges eljárás nem támogatott"
-
-#: calendar/gui/event-editor.c:377
-msgid "Edit Appointment"
-msgstr "Megbeszélés szerkesztése"
-
-#: calendar/gui/event-editor.c:449
-msgid "on"
-msgstr "ekkor:"
-
-#: calendar/gui/event-editor.c:474 filter/filter-datespec.c:81
-msgid "day"
-msgstr "nap"
-
-#: calendar/gui/event-editor.c:601
-msgid "on the"
-msgstr "ezen:"
-
-#: calendar/gui/event-editor.c:608
-msgid "th"
-msgstr "."
-
-#: calendar/gui/event-editor.c:754
-msgid "occurrences"
-msgstr "elõfordulások"
-
-#: calendar/gui/event-editor.c:871
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr ""
-"Ez a találkozó olyan ismétlõdéseket tartalmaz, amelyeket az Evolúció nem tud "
-"szerkeszteni."
-
-#: calendar/gui/event-editor.c:1543
-#, c-format
-msgid " %d days"
-msgstr " %d nap"
-
-#: calendar/gui/event-editor.c:1545
-msgid " 1 day"
-msgstr " 1 nap"
-
-#: calendar/gui/event-editor.c:1548
-#, c-format
-msgid " %d weeks"
-msgstr "%d hét"
-
-#: calendar/gui/event-editor.c:1550
-msgid " 1 week"
-msgstr " 1 hét"
-
-#: calendar/gui/event-editor.c:1553
-#, c-format
-msgid " %d hours"
-msgstr " %d óra"
-
-#: calendar/gui/event-editor.c:1555
-msgid " 1 hour"
-msgstr " 1 óra"
-
-#: calendar/gui/event-editor.c:1558
-#, c-format
-msgid " %d minutes"
-msgstr " %d perccel"
-
-#: calendar/gui/event-editor.c:1560
-msgid " 1 minute"
-msgstr " 1 perccel"
-
-#: calendar/gui/event-editor.c:1563
-#, c-format
-msgid " %d seconds"
-msgstr " %d másodperc"
-
-#: calendar/gui/event-editor.c:1565
-msgid " 1 second"
-msgstr " 1 másodperc"
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1588
-msgid "Play a sound"
-msgstr "Hangjelzés"
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1591
-msgid "Show a dialog"
-msgstr "Üzenetablak megjelenítése"
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1594
-msgid "Send an email"
-msgstr "Levél küldése"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1597
-msgid "Run a program"
-msgstr "Program futtatása"
-
-#: calendar/gui/event-editor.c:1612
-msgid " before start of appointment"
-msgstr " találkozó kezdete elõtt"
-
-#: calendar/gui/event-editor.c:1614
-msgid " after start of appointment"
-msgstr " találkozó kezdete után"
-
-#: calendar/gui/event-editor.c:1622
-msgid " before end of appointment"
-msgstr " találkozó vége elõtt"
-
-#: calendar/gui/event-editor.c:1624
-msgid " after end of appointment"
-msgstr " találkozó vége után"
-
-#: calendar/gui/event-editor.c:3132 calendar/gui/print.c:1097
-#: calendar/gui/print.c:1099 calendar/gui/print.c:1100
-msgid "%a %b %d %Y"
-msgstr "%Y %b %d, %a"
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr "Mindennapos esemény"
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-msgid "Appointment"
-msgstr "Találkozó"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-msgid "Appointment Basics"
-msgstr "Alapvetõ adatok"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-msgid "Custom recurrence"
-msgstr "Megadott ismétlõdés"
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr "Minden"
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-msgid "Exceptions"
-msgstr "Kivételek"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-msgid "Modify"
-msgstr "Módosítás"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-msgid "No recurrence"
-msgstr "Nincs ismétlõdés"
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-msgid "Preview"
-msgstr "Elõnézet"
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Recurrence"
-msgstr "Ismétlõdés"
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-msgid "Recurrence Rule"
-msgstr "Ismétlõdési szabály"
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-msgid "Reminder"
-msgstr "Emlékeztetõ"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-msgid "Settings..."
-msgstr "Beállítások..."
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr "Egyszerû ismétlõdés"
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-msgid "_End time:"
-msgstr "_Befejezés idõpontja:"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Start time:"
-msgstr "_Kezdés idõpontja:"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Starting date:"
-msgstr "Ke_zdés dátuma:"
-
-#. Automatically generated. Do not edit.
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:2
-msgid "after"
-msgstr "utána"
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:6
-msgid "before"
-msgstr "elõtte"
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "day(s)"
-msgstr "nap"
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-msgid "end of appointment"
-msgstr "találkozó vége"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "for"
-msgstr "ennyiszer:"
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr "örökké"
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-msgid "hour(s)"
-msgstr "óra"
-
-#: calendar/gui/event-editor-dialog.glade.h:40 mail/mail-config.glade.h:87
-msgid "minute(s)"
-msgstr "perc"
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "month(s)"
-msgstr "hónapban"
-
-#: calendar/gui/event-editor-dialog.glade.h:42
-msgid "start of appointment"
-msgstr "találkozó kezdete"
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-msgid "until"
-msgstr "eddig:"
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "week(s)"
-msgstr "héten"
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "year(s)"
-msgstr "évben"
-
-#: calendar/gui/e-week-view.c:3277 calendar/gui/e-week-view.c:3300
-msgid "New Appointment..."
-msgstr "Új _találkozó..."
-
-#: calendar/gui/e-week-view.c:3313
-msgid "Delete All Occurrences"
-msgstr "Az összes elõfordulás törlése"
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:342
-msgid "%d %B"
-msgstr "%B %d"
-
-#: calendar/gui/gnome-cal.c:234
-msgid "Summary contains"
-msgstr "Összegzés tartalmazza"
-
-#: calendar/gui/gnome-cal.c:235
-msgid "Description contains"
-msgstr "Leírás tartalmazza"
-
-#: calendar/gui/gnome-cal.c:236
-msgid "Comment contains"
-msgstr "Megjegyzés tartalmazza"
-
-#: calendar/gui/gnome-cal.c:237
-msgid "Has category"
-msgstr "Kategóriája"
-
-#: calendar/gui/gnome-cal.c:840
-#, c-format
-msgid "Could not open the folder in `%s'"
-msgstr "Nem sikerült megnyitni a mappát '%s'-ben"
-
-#: calendar/gui/gnome-cal.c:851
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr "'%s' megnyitásához szükséges eljárás nem támogatott"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-msgid "Evolution calendar executive summary component."
-msgstr "Evolúció naptár vezetõi összefoglaló komponense."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr "Evolúció naptár iTip/iMip nézõke"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr "Evolúció összetevõ a naptárkezeléshez."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-#, fuzzy
-msgid "Factory for the Calendar Summary component."
-msgstr "Az Evolúció naptár csatorna beállító eszköze.\n"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-#, fuzzy
-msgid "Factory for the Evolution calendar component."
-msgstr "Az Evolúció naptár csatorna beállító eszköze.\n"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-#, fuzzy
-msgid "Factory for the calendar iTip view control"
-msgstr "Az Evolúció naptár csatorna beállító eszköze.\n"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-#, fuzzy
-msgid "Factory for the sample Calendar control"
-msgstr "Az Evolúció naptár csatorna beállító eszköze.\n"
-
-#: calendar/gui/goto-dialog.glade.h:1
-msgid "April"
-msgstr "április"
-
-#: calendar/gui/goto-dialog.glade.h:2
-msgid "August"
-msgstr "augusztus"
-
-#: calendar/gui/goto-dialog.glade.h:3
-msgid "December"
-msgstr "december"
-
-#: calendar/gui/goto-dialog.glade.h:4
-msgid "February"
-msgstr "február"
-
-#: calendar/gui/goto-dialog.glade.h:5
-msgid "Go To Date"
-msgstr "Dátumra ugrás"
-
-#: calendar/gui/goto-dialog.glade.h:6
-msgid "Go To Today"
-msgstr "Ugrás mára"
-
-#: calendar/gui/goto-dialog.glade.h:7
-msgid "January"
-msgstr "január"
-
-#: calendar/gui/goto-dialog.glade.h:8
-msgid "July"
-msgstr "július"
-
-#: calendar/gui/goto-dialog.glade.h:9
-msgid "June"
-msgstr "június"
-
-#: calendar/gui/goto-dialog.glade.h:10
-msgid "March"
-msgstr "március"
-
-#: calendar/gui/goto-dialog.glade.h:11
-msgid "May"
-msgstr "május"
-
-#: calendar/gui/goto-dialog.glade.h:12
-msgid "November"
-msgstr "november"
-
-#: calendar/gui/goto-dialog.glade.h:13
-msgid "October"
-msgstr "október"
-
-#: calendar/gui/goto-dialog.glade.h:14
-msgid "September"
-msgstr "szeptember"
-
-#: calendar/gui/print.c:300
-msgid "1st"
-msgstr "1."
-
-#: calendar/gui/print.c:300
-msgid "2nd"
-msgstr "2."
-
-#: calendar/gui/print.c:300
-msgid "3rd"
-msgstr "3."
-
-#: calendar/gui/print.c:300
-msgid "4th"
-msgstr "4."
-
-#: calendar/gui/print.c:300
-msgid "5th"
-msgstr "5."
-
-#: calendar/gui/print.c:301
-msgid "6th"
-msgstr "6."
-
-#: calendar/gui/print.c:301
-msgid "7th"
-msgstr "7."
-
-#: calendar/gui/print.c:301
-msgid "8th"
-msgstr "8."
-
-#: calendar/gui/print.c:301
-msgid "9th"
-msgstr "9."
-
-#: calendar/gui/print.c:301
-msgid "10th"
-msgstr "10."
-
-#: calendar/gui/print.c:302
-msgid "11th"
-msgstr "11."
-
-#: calendar/gui/print.c:302
-msgid "12th"
-msgstr "12."
-
-#: calendar/gui/print.c:302
-msgid "13th"
-msgstr "13."
-
-#: calendar/gui/print.c:302
-msgid "14th"
-msgstr "14."
-
-#: calendar/gui/print.c:302
-msgid "15th"
-msgstr "15."
-
-#: calendar/gui/print.c:303
-msgid "16th"
-msgstr "16."
-
-#: calendar/gui/print.c:303
-msgid "17th"
-msgstr "17."
-
-#: calendar/gui/print.c:303
-msgid "18th"
-msgstr "18."
-
-#: calendar/gui/print.c:303
-msgid "19th"
-msgstr "19."
-
-#: calendar/gui/print.c:303
-msgid "20th"
-msgstr "20."
-
-#: calendar/gui/print.c:304
-msgid "21st"
-msgstr "21."
-
-#: calendar/gui/print.c:304
-msgid "22nd"
-msgstr "22."
-
-#: calendar/gui/print.c:304
-msgid "23rd"
-msgstr "23."
-
-#: calendar/gui/print.c:304
-msgid "24th"
-msgstr "24."
-
-#: calendar/gui/print.c:304
-msgid "25th"
-msgstr "25."
-
-#: calendar/gui/print.c:305
-msgid "26th"
-msgstr "26."
-
-#: calendar/gui/print.c:305
-msgid "27th"
-msgstr "27."
-
-#: calendar/gui/print.c:305
-msgid "28th"
-msgstr "28."
-
-#: calendar/gui/print.c:305
-msgid "29th"
-msgstr "29."
-
-#: calendar/gui/print.c:305
-msgid "30th"
-msgstr "30."
-
-#: calendar/gui/print.c:306
-msgid "31st"
-msgstr "31."
-
-#: calendar/gui/print.c:362
-msgid "Su"
-msgstr "V"
-
-#: calendar/gui/print.c:362
-msgid "Mo"
-msgstr "H"
-
-#: calendar/gui/print.c:362
-msgid "Tu"
-msgstr "K"
-
-#: calendar/gui/print.c:362
-msgid "We"
-msgstr "Sze"
-
-#: calendar/gui/print.c:362
-msgid "Th"
-msgstr "Cs"
-
-#: calendar/gui/print.c:362
-msgid "Fr"
-msgstr "P"
-
-#: calendar/gui/print.c:362
-msgid "Sa"
-msgstr "Szo"
-
-#. Day
-#: calendar/gui/print.c:1078
-msgid "Current day (%a %b %d %Y)"
-msgstr "Mai nap (%Y %b %d, %a)"
-
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1096
-msgid "%a %b %d"
-msgstr "%b %d, %a"
-
-#: calendar/gui/print.c:1093
-msgid "%a %d %Y"
-msgstr "%Y %d, %a"
-
-#: calendar/gui/print.c:1104
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr "Aktuális hét (%s - %s)"
-
-#. Month
-#: calendar/gui/print.c:1112
-msgid "Current month (%b %Y)"
-msgstr "Aktuális hónap (%Y %b)"
-
-#. Year
-#: calendar/gui/print.c:1119
-msgid "Current year (%Y)"
-msgstr "Ezév (%Y)"
-
-#: calendar/gui/print.c:1156
-msgid "Print Calendar"
-msgstr "Naptár nyomtatása"
-
-#: calendar/gui/print.c:1321 mail/mail-callbacks.c:1447
-#: ui/evolution-addressbook.xml.h:7 ui/evolution-calendar.xml.h:24
-msgid "Print Preview"
-msgstr "Nyomtatási kép"
-
-#: calendar/gui/tasks-control.c:136
-msgid "The URI of the tasks folder to display"
-msgstr "A megjelenítendõ feladatmappa URI-ja"
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-"Az Evolúció kivette a naptáradban lévõ feladatokat, és automatikusan az új "
-"feladatok mappájába mozgatta."
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-"Az Evolúció megpróbálta kivenni a naptáradban lévõ feladatokat és átmozgatni "
-"az új feladatok mappájába.\n"
-"Néhány feladatot nem lehetett átmozgatni, ezért a folyamatot a késõbbiekben "
-"újra meg lehet kísérelni."
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-"Nem sikerült megnyitni '%s'-t, a egyetlen naptármappa-elemet sem lehet "
-"átmozgatni a feladatok mappájába."
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-"'%s' betöltéséhez szükséges eljárás nem támogatott, egyetlen "
-"naptármappa-elemet sem lehet átmozgatni a feladatok mappájába."
-
-#: calendar/gui/weekday-picker.c:315 calendar/gui/weekday-picker.c:410
-msgid "SMTWTFS"
-msgstr "VHKSCPS"
-
-#: calendar/pcs/query.c:218
-msgid "time-now expects 0 arguments"
-msgstr ""
-
-#: calendar/pcs/query.c:242
-msgid "make-time expects 1 argument"
-msgstr ""
-
-#: calendar/pcs/query.c:247
-msgid "make-time expects argument 1 to be a string"
-msgstr ""
-
-#: calendar/pcs/query.c:255
-msgid "make-time argument 1 must be an ISO 8601 date/time string"
-msgstr ""
-
-#: calendar/pcs/query.c:281
-msgid "time-add-day expects 2 arguments"
-msgstr ""
-
-#: calendar/pcs/query.c:286
-msgid "time-add-day expects argument 1 to be a time_t"
-msgstr ""
-
-#: calendar/pcs/query.c:293
-msgid "time-add-day expects argument 2 to be an integer"
-msgstr ""
-
-#: calendar/pcs/query.c:318
-msgid "time-day-begin expects 1 argument"
-msgstr ""
-
-#: calendar/pcs/query.c:323
-msgid "time-day-begin expects argument 1 to be a time_t"
-msgstr ""
-
-#: calendar/pcs/query.c:348
-msgid "time-day-end expects 1 argument"
-msgstr ""
-
-#: calendar/pcs/query.c:353
-msgid "time-day-end expects argument 1 to be a time_t"
-msgstr ""
-
-#: calendar/pcs/query.c:389
-msgid "get-vtype expects 0 arguments"
-msgstr ""
-
-#: calendar/pcs/query.c:472
-msgid "occur-in-time-range? expects 2 arguments"
-msgstr ""
-
-#: calendar/pcs/query.c:477
-msgid "occur-in-time-range? expects argument 1 to be a time_t"
-msgstr ""
-
-#: calendar/pcs/query.c:484
-msgid "occur-in-time-range? expects argument 2 to be a time_t"
-msgstr ""
-
-#: calendar/pcs/query.c:611
-msgid "contains? expects 2 arguments"
-msgstr "a contains? 2 argumentumot vár"
-
-#: calendar/pcs/query.c:616
-msgid "contains? expects argument 1 to be a string"
-msgstr "a contains? elsõ argumentumaként karakterláncot vár"
-
-#: calendar/pcs/query.c:623
-msgid "contains? expects argument 2 to be a string"
-msgstr "a contains? második argumentumaként karakterláncot vár"
-
-#: calendar/pcs/query.c:640
-msgid ""
-"contains? expects argument 1 to be one of \"any\", \"summary\", "
-"\"description\""
-msgstr ""
-
-#: calendar/pcs/query.c:678
-msgid "has-categories? expects at least 1 argument"
-msgstr ""
-
-#: calendar/pcs/query.c:684
-msgid "has-categories? expects all arguments to be strings"
-msgstr ""
-
-#: calendar/pcs/query.c:932
-msgid "Evaluation of the search expression did not yield a boolean value"
-msgstr ""
-
-#: camel/camel-cipher-context.c:171
-#, fuzzy
-msgid "Signing is not supported by this cipher"
-msgstr "A megadott típus nem támogatott ebben a tárolóban."
-
-#: camel/camel-cipher-context.c:211
-#, fuzzy
-msgid "Clearsigning is not supported by this cipher"
-msgstr "A megadott típus nem támogatott ebben a tárolóban."
-
-#: camel/camel-cipher-context.c:251
-#, fuzzy
-msgid "Verifying is not supported by this cipher"
-msgstr "A megadott típus nem támogatott ebben a tárolóban."
-
-#: camel/camel-cipher-context.c:294
-#, fuzzy
-msgid "Encryption is not supported by this cipher"
-msgstr "A megadott típus nem támogatott ebben a tárolóban."
-
-#: camel/camel-cipher-context.c:336
-#, fuzzy
-msgid "Decryption is not supported by this cipher"
-msgstr "A megadott típus nem támogatott ebben a tárolóban."
-
-#: camel/camel-disco-store.c:271
-msgid "You must be working online to complete this operation"
-msgstr "A mûvelet befejezéséhez hálózati kapcsolattal kell rendelkezned"
-
-#: camel/camel-filter-driver.c:534 camel/camel-filter-driver.c:543
-msgid "Syncing folders"
-msgstr "Mappák szinkronizálása"
-
-#: camel/camel-filter-driver.c:643
-#, fuzzy
-msgid "Unable to open spool folder"
-msgstr "Nem tudom megnyitni a címjegyzéket"
-
-#: camel/camel-filter-driver.c:652
-#, fuzzy
-msgid "Unable to process spool folder"
-msgstr "Nem tudom a dialógust elkészíteni."
-
-#: camel/camel-filter-driver.c:666
-msgid "Getting message %d (%d%%)"
-msgstr "%d. levél letöltése (%d%%)"
-
-#: camel/camel-filter-driver.c:670 camel/camel-filter-driver.c:679
-#, fuzzy, c-format
-msgid "Failed message %d"
-msgstr "Levéltörzs"
-
-#: camel/camel-filter-driver.c:671
-msgid "Cannot open message"
-msgstr "Nem lehet megnyitni a levelet"
-
-#: camel/camel-filter-driver.c:690 camel/camel-filter-driver.c:788
-msgid "Syncing folder"
-msgstr "Mappa szinkronizálása"
-
-#: camel/camel-filter-driver.c:694 camel/camel-filter-driver.c:793
-msgid "Complete"
-msgstr "Kész"
-
-#: camel/camel-filter-driver.c:748
-#, c-format
-msgid "Getting message %d of %d"
-msgstr "Levelek letöltése: %d/%d"
-
-#: camel/camel-filter-driver.c:753 camel/camel-filter-driver.c:771
-#, fuzzy, c-format
-msgid "Failed at message %d of %d"
-msgstr "Levél mozgatása más mappába"
-
-#: camel/camel-filter-driver.c:866
-#, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr "Hiba a szûrõ feldolgozása közben: %s: %s"
-
-#: camel/camel-filter-driver.c:871
-#, c-format
-msgid "Error executing filter: %s: %s"
-msgstr "Hiba a szûrõ végrehajtása közben: %s: %s"
-
-#: camel/camel-filter-search.c:439 camel/camel-filter-search.c:445
-#, fuzzy, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr "Fájl mentési hiba: %s"
-
-#: camel/camel-folder-search.c:328
-#, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-"Nem sikerült értelmezni a keresõkifejezést: %s\n"
-"%s"
-
-#: camel/camel-folder-search.c:338
-#, fuzzy, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr "Fájl mentési hiba: %s"
-
-#: camel/camel-folder-search.c:485 camel/camel-folder-search.c:513
-msgid "(match-all) requires a single bool result"
-msgstr ""
-
-#: camel/camel-folder-search.c:559
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr ""
-
-#: camel/camel-folder-search.c:670 camel/camel-folder-search.c:714
-msgid "Invalid type in body-contains, expecting string"
-msgstr ""
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:92 camel/camel-lock.c:111 camel/camel-movemail.c:138
-#: camel/camel-movemail.c:185
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "Nem sikerült zárolófájlt létrehozni %s számára: %s"
-
-#: camel/camel-lock.c:151 camel/camel-movemail.c:219
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr ""
-
-#: camel/camel-lock.c:201
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr ""
-
-#: camel/camel-lock.c:255
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr ""
-
-#: camel/camel-movemail.c:101
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:148
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:158
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:199
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:245
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr "Hiba a levélfájl olvasása közben: %s"
-
-#: camel/camel-movemail.c:256
-#, fuzzy, c-format
-msgid "Error writing mail temp file: %s"
-msgstr "Fájl mentési hiba: %s"
-
-#: camel/camel-movemail.c:274
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:306
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:318
-#, c-format
-msgid "Could not fork: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:356
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:357
-msgid "(Unknown error)"
-msgstr "(Ismeretlen hiba)"
-
-#: camel/camel-movemail.c:587
-#, fuzzy, c-format
-msgid "Error copying mail temp file: %s"
-msgstr "Fájl mentési hiba: %s"
-
-#: camel/camel-pgp-context.c:190
-#, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr ""
-
-#: camel/camel-pgp-context.c:193
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr ""
-
-#: camel/camel-pgp-context.c:511
-msgid "No plaintext to sign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:518 camel/camel-pgp-context.c:690
-#: camel/camel-pgp-context.c:1057 camel/camel-pgp-context.c:1269
-msgid "No password provided."
-msgstr "Nincs jelszó megadva."
-
-#: camel/camel-pgp-context.c:524 camel/camel-pgp-context.c:696
-#: camel/camel-pgp-context.c:879 camel/camel-pgp-context.c:1064
-#: camel/camel-pgp-context.c:1276
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr "Nem sikerült csõvezetéket létrehozni a GPG/PGP-hez: %s"
-
-#: camel/camel-pgp-context.c:683
-msgid "No plaintext to clearsign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:873
-msgid "No plaintext to verify."
-msgstr ""
-
-#: camel/camel-pgp-context.c:890
-#, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "Nem sikerült létrehozni az ideiglenes fájlt: %s"
-
-#: camel/camel-pgp-context.c:1047
-#, fuzzy
-msgid "No plaintext to encrypt."
-msgstr "A titkosítás visszafejtéséhez kattints az ikonra."
-
-#: camel/camel-pgp-context.c:1073
-msgid "No recipients specified"
-msgstr "Nincs címzett megadva"
-
-#: camel/camel-pgp-context.c:1261
-msgid "No ciphertext to decrypt."
-msgstr ""
-
-#: camel/camel-provider.c:131
-#, c-format
-msgid "Could not load %s: Module loading not supported on this system."
-msgstr ""
-
-#: camel/camel-provider.c:140
-#, c-format
-msgid "Could not load %s: %s"
-msgstr "%s betöltése sikertelen: %s"
-
-#: camel/camel-provider.c:148
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr "%s betöltése sikertelen: Nincs inicializáló kód a modulban."
-
-#: camel/camel-remote-store.c:191
-#, c-format
-msgid "%s server %s"
-msgstr "%s kiszolgáló %s"
-
-#: camel/camel-remote-store.c:195
-#, c-format
-msgid "%s service for %s on %s"
-msgstr "%s %s szolgáltatás %s-n"
-
-#: camel/camel-remote-store.c:252
-msgid "Connection cancelled"
-msgstr "Kapcsolat megszakítva"
-
-#: camel/camel-remote-store.c:255
-#: camel/providers/smtp/camel-smtp-transport.c:269
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr "Nem sikerült csatlakozni %s %d portjához: %s"
-
-#: camel/camel-remote-store.c:256
-msgid "(unknown host)"
-msgstr "(ismeretlen kiszolgáló)"
-
-#: camel/camel-remote-store.c:337 camel/camel-remote-store.c:399
-#: camel/camel-remote-store.c:470
-#: camel/providers/imap/camel-imap-command.c:287
-msgid "Operation cancelled"
-msgstr "Mûvelet megszakítva"
-
-#: camel/camel-remote-store.c:476
-msgid "Server unexpectedly disconnected"
-msgstr "A kiszolgáló váratlanul szétkapcsolt"
-
-#: camel/camel-sasl-anonymous.c:33
-msgid "Anonymous"
-msgstr "Anonymous"
-
-#: camel/camel-sasl-anonymous.c:35
-#, fuzzy
-msgid "This option will connect to the server using an anonymous login."
-msgstr "Egyszerû jelszó használatával kapcsolódik a kiszolgálóhoz."
-
-#: camel/camel-sasl-anonymous.c:110 camel/camel-sasl-plain.c:87
-msgid "Authentication failed."
-msgstr "Azonosítás sikertelen"
-
-#: camel/camel-sasl-anonymous.c:119
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:131
-#, fuzzy, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr "Fájl betöltési hiba: %s"
-
-#: camel/camel-sasl-anonymous.c:143
-#, fuzzy, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr "Fájl betöltési hiba: %s"
-
-#: camel/camel-sasl-cram-md5.c:35
-msgid "CRAM-MD5"
-msgstr "CRAM-MD5"
-
-#: camel/camel-sasl-cram-md5.c:37
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:43
-msgid "DIGEST-MD5"
-msgstr "DIGEST-MD5"
-
-#: camel/camel-sasl-digest-md5.c:45
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:810
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:819
-msgid "Server challenge invalid\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:825
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:847
-msgid "Server response did not contain authorization data\n"
-msgstr "A kiszolgáló válasza nem tartalmazott engedélyzési adatokat.\n"
-
-#: camel/camel-sasl-digest-md5.c:865
-msgid "Server response contained incomplete authorization data\n"
-msgstr "A kiszolgáló válasza hiányos engedélyezési adatokat tartalmazott.\n"
-
-#: camel/camel-sasl-digest-md5.c:875
-msgid "Server response does not match\n"
-msgstr "A kiszolgáló válasza nem egyezik\n"
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "Kerberos 4"
-msgstr "Kerberos 4"
-
-#: camel/camel-sasl-kerberos4.c:42
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr "Kerberos 4 hitelesítés használatával kapcsolódik a kiszolgálóhoz."
-
-#: camel/camel-sasl-kerberos4.c:161
-#, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:218
-#: camel/providers/imap/camel-imap-store.c:433
-msgid "Bad authentication response from server."
-msgstr "Rossz hitelesítési válasz a kiszolgálótól"
-
-#: camel/camel-sasl-login.c:32
-msgid "NT Login"
-msgstr "NT bejelentkezés"
-
-#: camel/camel-sasl-login.c:34 camel/camel-sasl-plain.c:34
-msgid "This option will connect to the server using a simple password."
-msgstr "Egyszerû jelszó használatával kapcsolódik a kiszolgálóhoz."
-
-#: camel/camel-sasl-login.c:127
-#, fuzzy
-msgid "Unknown authentication state."
-msgstr "Authentikáció:"
-
-#: camel/camel-search-private.c:111
-#, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr ""
-
-#: camel/camel-service.c:154
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr "'%s' URL-ben kell lennie felhasználónév összetevõnek"
-
-#: camel/camel-service.c:162
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr "'%s' URL-ben kell lennie gépnév összetevõnek"
-
-#: camel/camel-service.c:170
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr "'%s' URL-ben kell lennie útvonal összetevõnek"
-
-#: camel/camel-service.c:548
-#, c-format
-msgid "Resolving: %s"
-msgstr "'%s' feloldása"
-
-#: camel/camel-service.c:575
-#, c-format
-msgid "Failure in name lookup: %s"
-msgstr "Sikertelen névkikeresés: %s"
-
-#: camel/camel-service.c:600
-#, c-format
-msgid "Host lookup failed: %s: host not found"
-msgstr "Sikertelen gépkikeresés: %s: a gép nem található"
-
-#: camel/camel-service.c:602
-#, c-format
-msgid "Host lookup failed: %s: unknown reason"
-msgstr "Sikertelen gépkikeresés: %s: ismeretlen ok"
-
-#: camel/camel-session.c:68
-msgid "Virtual folder email provider"
-msgstr "Virtuális mappa email szolgáltató"
-
-#: camel/camel-session.c:70
-msgid "For reading mail as a query of another set of folders"
-msgstr ""
-
-#: camel/camel-session.c:295 camel/camel-session.c:364
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr "'%s' protokollhoz nincs támogatás"
-
-#: camel/camel-session.c:479
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"Nem sikerült létrehozni %s könyvtárat:\n"
-"%s"
-
-#: camel/camel-smime-context.c:194
-#, c-format
-msgid "Please enter your password for %s"
-msgstr "Add meg %s jelszavát!"
-
-#: camel/camel-smime-context.c:210
-#, fuzzy
-msgid "Error hashing password."
-msgstr "Nem sikerül elmenteni az elemeket."
-
-#: camel/camel-smime-context.c:219
-msgid "Invalid password."
-msgstr "Érvénytelen jelszó."
-
-#: camel/camel-smime-context.c:327
-#, c-format
-msgid "Could not sign: certificate not found for \"%s\"."
-msgstr ""
-
-#: camel/camel-smime-context.c:343
-#, fuzzy
-msgid "Could not sign: failed to create content info."
-msgstr "Nem sikerült létrehozni a levélíró ablakot."
-
-#: camel/camel-smime-context.c:350
-msgid "Could not sign: failed to create signing context."
-msgstr ""
-
-#: camel/camel-smime-context.c:356
-#, fuzzy
-msgid "Could not sign: failed to create signature."
-msgstr "Nem tudom a dialógust elkészíteni."
-
-#: camel/camel-smime-context.c:383
-#, fuzzy
-msgid "'clearsign' is not supported by S/MIME."
-msgstr "A megadott típus nem támogatott ebben a tárolóban."
-
-#: camel/camel-smime-context.c:528
-msgid "Could not encrypt: failed to create enveloped data."
-msgstr ""
-
-#: camel/camel-smime-context.c:535
-msgid "Could not encrypt: failed to create encryption context."
-msgstr ""
-
-#: camel/camel-smime-context.c:570
-#, fuzzy, c-format
-msgid "Could not encrypt data: invalid user key: \"%s\"."
-msgstr "Nem sikerült kapcsolódni a kiszolgálóhoz: %s"
-
-#: camel/camel-smime-context.c:576
-#, fuzzy
-msgid "Could not encrypt: encoding failed."
-msgstr "Nem tudom a dialógust elkészíteni."
-
-#: camel/camel-smime-context.c:626
-msgid "Failed to decrypt: Unknown"
-msgstr ""
-
-#. Fill in the new fields
-#: camel/camel-store.c:378 mail/mail-ops.c:1007 mail/mail-ops.c:1014
-#: mail/mail-ops.c:1032 mail/mail-ops.c:1033
-msgid "Trash"
-msgstr "Kuka"
-
-#: camel/camel-tcp-stream-ssl.c:348
-#, c-format
-msgid ""
-"EMail: %s\n"
-"Common Name: %s\n"
-"Organization Unit: %s\n"
-"Organization: %s\n"
-"Locality: %s\n"
-"State: %s\n"
-"Country: %s"
-msgstr ""
-
-#. construct our user prompt
-#: camel/camel-tcp-stream-openssl.c:428 camel/camel-tcp-stream-ssl.c:364
-#, c-format
-msgid ""
-"Bad certificate from %s:\n"
-"\n"
-"%s\n"
-"\n"
-"Do you wish to accept anyway?"
-msgstr ""
-"Rossz tanúsítvány %s-tõl:\n"
-"\n"
-"%s\n"
-"\n"
-"\n"
-"Elfogadod mégis?"
-
-#: camel/camel-tcp-stream-openssl.c:423
-#, c-format
-msgid ""
-"Issuer: %s\n"
-"Subject: %s"
-msgstr ""
-"Kibocsátó: %s\n"
-"Téma: %s"
-
-#: camel/camel-url.c:289
-#, c-format
-msgid "Could not parse URL `%s'"
-msgstr "Nem sikerülte értelmezni ezt azt URL-t: '%s'"
-
-#: camel/camel-vee-folder.c:451
-#, c-format
-msgid "No such message %s in %s"
-msgstr "Nincs %s levél %s-ben"
-
-#: camel/camel-vee-folder.c:546
-#, c-format
-msgid "No such message: %s"
-msgstr "Nincs %s levél"
-
-#: camel/camel-vtrash-folder.c:109
-msgid "You cannot copy messages from this trash folder."
-msgstr "Nem lehet leveleket másolni ebbõl a kukamappából."
-
-#: camel/providers/imap/camel-imap-message-cache.c:150
-#, c-format
-msgid "Could not open cache directory: %s"
-msgstr "Nem sikerült megnyitni a gyorstár könyvtárát: %s"
-
-#: camel/providers/imap/camel-imap-command.c:232
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "Váratlan válasz az IMAP kiszolgálótól: %s"
-
-#: camel/providers/imap/camel-imap-command.c:240
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr "Az IMAP parancs sikertelen: %s"
-
-#: camel/providers/imap/camel-imap-command.c:241 shell/e-storage.c:481
-msgid "Unknown error"
-msgstr "Ismeretlen hiba"
-
-#: camel/providers/imap/camel-imap-command.c:295
-msgid "Server response ended too soon."
-msgstr "A kiszolgáló válasza túl hamar végetért."
-
-#: camel/providers/imap/camel-imap-command.c:487
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr "Az IMAP kiszolgáló válasza nem tartalmaz %s információt"
-
-#: camel/providers/imap/camel-imap-command.c:524
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr "Váratlan OK válasz az IMAP kiszolgálótól: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:172
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr "Nem tudom létrehozni %s könyvtárat: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:191
-#, c-format
-msgid "Could not load summary for %s"
-msgstr "Nem sikerült betölteni %s összefoglalóját"
-
-#: camel/providers/imap/camel-imap-folder.c:364
-msgid "Scanning IMAP folder"
-msgstr "IMAP mappa pásztázása"
-
-#: camel/providers/imap/camel-imap-folder.c:1047
-#: camel/providers/imap/camel-imap-folder.c:1281
-msgid "This message is not currently available"
-msgstr "Ez a levél jelenleg nem elérhetõ"
-
-#: camel/providers/imap/camel-imap-folder.c:1075
-#: camel/providers/imap/camel-imap-folder.c:1314
-msgid "Could not find message body in FETCH response."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:43 mail/mail-config.glade.h:13
-msgid "Checking for new mail"
-msgstr "Új levelek keresése"
-
-#: camel/providers/imap/camel-imap-provider.c:45
-msgid "Check for new messages in all folders"
-msgstr "Új levelek keresése az összes mappában"
-
-#: camel/providers/imap/camel-imap-provider.c:48 shell/e-shell-view.c:598
-msgid "Folders"
-msgstr "Mappák"
-
-#: camel/providers/imap/camel-imap-provider.c:50
-msgid "Show only subscribed folders"
-msgstr "Csak az elõfizetett mappák megjelenítése"
-
-#: camel/providers/imap/camel-imap-provider.c:52
-msgid "Override server-supplied folder namespace"
-msgstr "A kiszolgáló által nyújtott mappanevek felülbírálata"
-
-#: camel/providers/imap/camel-imap-provider.c:54
-msgid "Namespace"
-msgstr "Névtér"
-
-#: camel/providers/imap/camel-imap-provider.c:57
-msgid "Apply filters to new messages in INBOX on this server"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:63
-msgid "IMAPv4"
-msgstr "IMAPv4"
-
-#: camel/providers/imap/camel-imap-provider.c:65
-msgid "For reading and storing mail on IMAP servers."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:82
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:456
-#, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr "%s IMAP kiszolgáló nem támogatja a kért %s hitelesítési típust"
-
-#: camel/providers/imap/camel-imap-store.c:466
-#: camel/providers/smtp/camel-smtp-transport.c:366
-#, c-format
-msgid "No support for authentication type %s"
-msgstr "%s hitelesítési típus nem támogatott"
-
-#: camel/providers/imap/camel-imap-store.c:490
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr "%sAdd meg %s@%s IMAP jelszavát!"
-
-#: camel/providers/imap/camel-imap-store.c:505
-#: camel/providers/smtp/camel-smtp-transport.c:410
-msgid "You didn't enter a password."
-msgstr "Nem adtál meg jelszót."
-
-#: camel/providers/imap/camel-imap-store.c:531
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Nem sikerült bejelentkezni az IMAP kiszolgálóra.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/imap/camel-imap-store.c:803 mail/mail-local.c:334
-#, c-format
-msgid "No such folder %s"
-msgstr "Nincs %s mappa."
-
-#: camel/providers/local/camel-local-provider.c:39
-msgid "MH-format mail directories"
-msgstr "MH formátumú levélkönyvtárak"
-
-#: camel/providers/local/camel-local-provider.c:40
-msgid "For storing local mail in MH-like mail directories"
-msgstr "A helyi levelek tárolása MH-szerû levélkönyvtárakban"
-
-#: camel/providers/local/camel-local-provider.c:49
-msgid "Standard Unix mailbox file"
-msgstr "Szabványos Unix mailboxfájl"
-
-#: camel/providers/local/camel-local-provider.c:50
-msgid "For storing local mail in standard mbox format"
-msgstr "A helyi levelek tárolása szabványos mbox formátumban"
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "Qmail maildir-format mail files"
-msgstr "Qmail maildir-formátumú fájlok"
-
-#: camel/providers/local/camel-local-provider.c:60
-msgid "For storing local mail in qmail maildir directories"
-msgstr "A helyi levelek tárolása qmail maildir könyvtárakban"
-
-#: camel/providers/local/camel-local-store.c:127
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr "%s tárológyökér nem abszolút útvonal"
-
-#: camel/providers/local/camel-local-store.c:134
-#, c-format
-msgid "Store root %s is not a regular directory"
-msgstr "%s tárológyökér nem közönséges könyvtár"
-
-#: camel/providers/local/camel-local-store.c:142
-#: camel/providers/local/camel-local-store.c:158
-#, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:173
-msgid "Local stores do not have an inbox"
-msgstr "A helyi tárolók nem rendelkeznek Bejövõ mappával"
-
-#: camel/providers/local/camel-local-store.c:183
-#, c-format
-msgid "Local mail file %s"
-msgstr "%s helyi levél fájl"
-
-#: camel/providers/local/camel-local-store.c:237
-#, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr "Nem sikerült %s mappát %s névre átnevezni: %s"
-
-#: camel/providers/local/camel-local-store.c:279
-#, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr "Nem sikerült '%s' mappaösszegzõfájt törölni: %s"
-
-#: camel/providers/local/camel-local-store.c:289
-#, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr "Nem sikerült '%s' mappaindexfájlt törölni: %s"
-
-#: camel/providers/local/camel-local-summary.c:404
-msgid "Unable to add message to summary: unknown reason"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-folder.c:150
-#: camel/providers/local/camel-maildir-folder.c:158
-#: camel/providers/local/camel-maildir-folder.c:169
-#, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr "Nem lehet a levelet a maildir mappához fûzni: %s: %s "
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-maildir-folder.c:209
-#: camel/providers/local/camel-maildir-folder.c:217
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#: camel/providers/local/camel-mh-folder.c:194
-#: camel/providers/local/camel-mh-folder.c:202
-#, fuzzy, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr "Nem tudom beállítani a helyi tárterületet -- %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-msgid "No such message"
-msgstr "Nincs ilyen levél"
-
-#: camel/providers/local/camel-maildir-folder.c:218
-#: camel/providers/local/camel-mh-folder.c:203
-msgid "Invalid message contents"
-msgstr "A levél tartalma érvénytelen"
-
-#: camel/providers/local/camel-maildir-store.c:96
-#: camel/providers/local/camel-mh-store.c:90
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-"Nem sikerült megnyitni '%s' mappát:\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:100
-#: camel/providers/local/camel-mbox-store.c:101
-#: camel/providers/local/camel-mh-store.c:97
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr "`%s' mappa nem létezik."
-
-#: camel/providers/local/camel-maildir-store.c:107
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-"Nem sikerült létrehozni '%s' mappát:\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:122
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr "'%s' nem maildir könyvtár."
-
-#: camel/providers/local/camel-maildir-store.c:151
-#: camel/providers/local/camel-maildir-store.c:188
-#: camel/providers/local/camel-mh-store.c:127
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr "Nem sikerült törölni '%s' mappát: %s"
-
-#: camel/providers/local/camel-maildir-store.c:152
-msgid "not a maildir directory"
-msgstr "nem maildir könyvtár"
-
-#: camel/providers/local/camel-maildir-summary.c:405
-#: camel/providers/local/camel-maildir-summary.c:526
-#, fuzzy, c-format
-msgid "Cannot open maildir directory path: %s: %s"
-msgstr "Nem tudom beállítani a helyi tárterületet -- %s"
-
-#: camel/providers/local/camel-mbox-folder.c:152
-#, fuzzy, c-format
-msgid "Cannot create folder lock on %s: %s"
-msgstr "Nem tudom beállítani a helyi tárterületet -- %s"
-
-#: camel/providers/local/camel-mbox-folder.c:203
-#, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr "Nem sikerült megnyitni a postaládát: %s: %s\n"
-
-#: camel/providers/local/camel-mbox-folder.c:259
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr "Nem sikerült a levelet az mbox fájlhoz hozzáfûzni: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:335
-#: camel/providers/local/camel-mbox-folder.c:367
-#: camel/providers/local/camel-mbox-folder.c:380
-#, fuzzy, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr "Nem tudom beállítani a helyi tárterületet -- %s"
-
-#: camel/providers/local/camel-mbox-folder.c:368
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr "A mappa javíthatatlanul rossznak néz ki."
-
-#: camel/providers/local/camel-mbox-folder.c:381
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:94
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-"Nem sikerült megnyitni '%s' fájlt:\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:110
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-"Nem sikerült létrehozni '%s' fájlt:\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:119
-#: camel/providers/local/camel-mbox-store.c:146
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr "'%s' nem közönséges fájl."
-
-#: camel/providers/local/camel-mbox-store.c:138
-#: camel/providers/local/camel-mbox-store.c:161
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-"Nem sikerült törölni '%s' mappát:\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr "'%s' mappa nem üres. Nem törölhetõ."
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:249
-msgid "Summarising folder"
-msgstr "Mappaösszefoglaló készítése"
-
-#: camel/providers/local/camel-mbox-summary.c:254
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:296
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:371
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr "Nem sikerült %s mappa összefoglalóját elkészíteni: %s."
-
-#: camel/providers/local/camel-mbox-summary.c:502
-#: camel/providers/local/camel-mbox-summary.c:703 mail/mail-ops.c:1397
-msgid "Synchronising folder"
-msgstr "Mappaszinkronizálás"
-
-#: camel/providers/local/camel-mbox-summary.c:507
-#: camel/providers/local/camel-mbox-summary.c:708
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr "Nem sikerült megnyitni '%s' összegzendõ mappát: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:524
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr "Nem sikerült megnyitni az ideiglenes postafiókot: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:549
-#: camel/providers/local/camel-mbox-summary.c:557
-#: camel/providers/local/camel-mbox-summary.c:746
-#: camel/providers/local/camel-mbox-summary.c:754
-msgid "Summary and folder mismatch, even after a sync"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:600
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:617
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:635
-#: camel/providers/local/camel-mbox-summary.c:804
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:644
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr "Nem sikerült bezárni ezt az ideiglenes mappát: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:655
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr "Nem sikerült átnevezni ezt a mappát: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:879
-#, c-format
-msgid "Unknown error: %s"
-msgstr "Ismeretlen hiba: %s"
-
-#: camel/providers/local/camel-mh-folder.c:149
-#: camel/providers/local/camel-mh-folder.c:157
-#, fuzzy, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr "Nem lehet a levelet az mh mappához fûzni: %s: %s"
-
-#: camel/providers/local/camel-mh-store.c:110
-#, c-format
-msgid "`%s' is not a directory."
-msgstr "'%s' nem könyvtár."
-
-#: camel/providers/local/camel-mh-summary.c:218
-#, fuzzy, c-format
-msgid "Cannot open MH directory path: %s: %s"
-msgstr "Nem tudom beállítani a helyi tárterületet -- %s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:45
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr "Add meg %s@%s NNTP jelszavát!"
-
-#: camel/providers/nntp/camel-nntp-auth.c:66
-msgid "Server rejected username"
-msgstr "A kiszolgáló a felhasználói nevet visszadobta"
-
-#: camel/providers/nntp/camel-nntp-auth.c:72
-msgid "Failed to send username to server"
-msgstr "Nem sikerült a felhasználónevet elküldeni a kiszolgálónak"
-
-#: camel/providers/nntp/camel-nntp-auth.c:81
-msgid "Server rejected username/password"
-msgstr "A kiszolgáló visszautasította a felhasználónév/jelszó párost"
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr "%s levél nem található"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr "Nem sikerült megszerezni a csoportlistát a kiszolgálóról."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr "Nem sikerült betölteni %s csoportlistafájlját: %s"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr "Nem sikerült menteni %s csoportlistafájlját: %s"
-
-#: camel/providers/nntp/camel-nntp-provider.c:42
-msgid "USENET news"
-msgstr "USENET news"
-
-#: camel/providers/nntp/camel-nntp-provider.c:44
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:224
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:286
-#, c-format
-msgid "USENET News via %s"
-msgstr "USENET News %s-rõl"
-
-#: camel/providers/nntp/camel-nntp-store.c:293
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:325
-#: camel/providers/nntp/camel-nntp-store.c:488
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-msgid "Retrieving POP summary"
-msgstr "POP összefoglaló letöltése"
-
-#: camel/providers/pop3/camel-pop3-folder.c:155
-#, c-format
-msgid "Could not check POP server for new messages: %s"
-msgstr "Nem sikerült az új levelek ellenõrzése a POP kiszolgálón: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:199
-msgid "Could not open folder: message listing was incomplete."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:292
-#, c-format
-msgid "No message with uid %s"
-msgstr "Nincs %s azonosítójú levél"
-
-#: camel/providers/pop3/camel-pop3-folder.c:296
-#, c-format
-msgid "Retrieving POP message %d"
-msgstr "%d. POP levél letöltése"
-
-#: camel/providers/pop3/camel-pop3-folder.c:303
-#, fuzzy, c-format
-msgid "Could not fetch message: %s"
-msgstr "Levél írása"
-
-#: camel/providers/pop3/camel-pop3-folder.c:320
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr "Nem sikerült letölteni a levelet a %s POP kiszolgálóról: %s"
-
-#: camel/providers/pop3/camel-pop3-provider.c:37
-msgid "Message storage"
-msgstr "Levéltároló"
-
-#: camel/providers/pop3/camel-pop3-provider.c:39
-msgid "Leave messages on server"
-msgstr "Az üzenetek maradjanak meg a kiszolgálón is"
-
-#: camel/providers/pop3/camel-pop3-provider.c:41
-#, c-format
-msgid "Delete after %s day(s)"
-msgstr "Törlés a kiszolgálóról %s nap múlva"
-
-#: camel/providers/pop3/camel-pop3-provider.c:48 mail/mail-config.glade.h:51
-msgid "POP"
-msgstr "POP"
-
-#: camel/providers/pop3/camel-pop3-provider.c:50
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:79
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:91
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:199
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:215
-#, c-format
-msgid "Could not connect to server: %s"
-msgstr "Nem sikerült kapcsolódni a kiszolgálóhoz: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:322
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr "Nem sikerült a POP kiszolgálóhoz kapcsolódni a %s gépen."
-
-#: camel/providers/pop3/camel-pop3-store.c:361
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr "%sAdd meg %s@%s POP3 jelszavát!"
-
-#: camel/providers/pop3/camel-pop3-store.c:379
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-"Nem sikerült kapcsolódni a POP kiszolgálóhoz.\n"
-"Hiba a felhasználónév küldése közben: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:382
-#: camel/providers/pop3/camel-pop3-store.c:419
-msgid "(Unknown)"
-msgstr "(Ismeretlen)"
-
-#: camel/providers/pop3/camel-pop3-store.c:409
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-"Nem sikerült kapcsolódni a POP kiszolgálóhoz.\n"
-"A kért authentikációs mechanizmus nem támogatott."
-
-#: camel/providers/pop3/camel-pop3-store.c:417
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-"Nem sikerült kapcsolódni a POP kiszolgálóhoz.\n"
-"Hiba a jelszó küldése közben: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:484
-#, c-format
-msgid "No such folder `%s'."
-msgstr "Nincs '%s' mappa."
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:37
-#: mail/mail-config.glade.h:67
-msgid "Sendmail"
-msgstr "Sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:39
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:107
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:124
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:150
-#, c-format
-msgid "Could not send message: %s"
-msgstr "Nem sikerült elküldeni a levelet: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:163
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr "A sendmail %s szignállal kilépett, a levél nem ment el."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:170
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr "Nem sikerült végrehajtani %s-t, a levél nem ment el."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:175
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:194
-msgid "Could not find 'From' address in message"
-msgstr "A feladó címe nem található meg a levélben"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "sendmail"
-msgstr "sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:249
-msgid "Mail delivery via the sendmail program"
-msgstr "Levélküldés a sendmail programon keresztül"
-
-#: camel/providers/smtp/camel-smtp-provider.c:38 mail/mail-config.glade.h:62
-msgid "SMTP"
-msgstr "SMTP"
-
-#: camel/providers/smtp/camel-smtp-provider.c:40
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:168
-msgid "Syntax error, command unrecognized"
-msgstr "Szintaktikai hiba, ismeretlen parancs"
-
-#: camel/providers/smtp/camel-smtp-transport.c:170
-msgid "Syntax error in parameters or arguments"
-msgstr "Szintaktikai hiba a paraméterekben vagy argumentumokban"
-
-#: camel/providers/smtp/camel-smtp-transport.c:172
-msgid "Command not implemented"
-msgstr "A parancs nincs megvalósítva"
-
-#: camel/providers/smtp/camel-smtp-transport.c:174
-msgid "Command parameter not implemented"
-msgstr "A parancsparaméter nincs megvalósítva"
-
-#: camel/providers/smtp/camel-smtp-transport.c:176
-msgid "System status, or system help reply"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:178
-#, fuzzy
-msgid "Help message"
-msgstr "Levél _nyomtatása"
-
-#: camel/providers/smtp/camel-smtp-transport.c:180
-#, fuzzy
-msgid "Service ready"
-msgstr "Rejtés"
-
-#: camel/providers/smtp/camel-smtp-transport.c:182
-msgid "Service closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:184
-msgid "Service not available, closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:186
-msgid "Requested mail action okay, completed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:188
-msgid "User not local; will forward to <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:190
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:192
-msgid "Requested action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:194
-msgid "Requested action aborted: error in processing"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:196
-msgid "User not local; please try <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:198
-msgid "Requested action not taken: insufficient system storage"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:200
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:202
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:204
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:206
-msgid "Transaction failed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:210
-msgid "A password transition is needed"
-msgstr "Jelszóátvitel szükséges"
-
-#: camel/providers/smtp/camel-smtp-transport.c:212
-msgid "Authentication mechanism is too weak"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:214
-msgid "Encryption required for requested authentication mechanism"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:216
-msgid "Temporary authentication failure"
-msgstr "Ideiglenes azonosítási hiba"
-
-#: camel/providers/smtp/camel-smtp-transport.c:218
-msgid "Authentication required"
-msgstr "Hitelesítés szükséges"
-
-#: camel/providers/smtp/camel-smtp-transport.c:313
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr "Üdvüzlõ válasz hiba: %s: talán nem végzetes"
-
-#: camel/providers/smtp/camel-smtp-transport.c:356
-#, fuzzy, c-format
-msgid "SMTP server %s does not support requested authentication type %s"
-msgstr "Authentikáció:"
-
-#: camel/providers/smtp/camel-smtp-transport.c:395
-#, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr "%sAdd meg %s@%s SMTP jelszavát"
-
-#: camel/providers/smtp/camel-smtp-transport.c:418
-#, c-format
-msgid ""
-"Unable to authenticate to SMTP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Nem sikerült bejelentkezni az SMTP kiszolgálóra.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:534
-#, c-format
-msgid "SMTP server %s"
-msgstr "%s SMTP kiszolgáló"
-
-#: camel/providers/smtp/camel-smtp-transport.c:536
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr "SMTP levélküldés %s kiszolgálón át"
-
-#: camel/providers/smtp/camel-smtp-transport.c:561
-msgid "Cannot send message: sender address not defined."
-msgstr "Nem lehet elküldeni a levelet: a feladó címe nincs megadva."
-
-#: camel/providers/smtp/camel-smtp-transport.c:568
-msgid "Cannot send message: sender address not valid."
-msgstr "Nem lehet elküldeni a levelet: a feladó címe érvénytelen."
-
-#: camel/providers/smtp/camel-smtp-transport.c:582
-msgid "Cannot send message: no recipients defined."
-msgstr "Nem lehet elküldeni a levelet: nincs címzett."
-
-#: camel/providers/smtp/camel-smtp-transport.c:676
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr "Idõtúllépés a HELO kérésnél: %s: nem végzetes"
-
-#: camel/providers/smtp/camel-smtp-transport.c:695
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr "HELO válasz hiba: %s: nem végzetes"
-
-#: camel/providers/smtp/camel-smtp-transport.c:728
-msgid "Error creating SASL authentication object."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:743
-#: camel/providers/smtp/camel-smtp-transport.c:755
-#, c-format
-msgid "AUTH request timed out: %s"
-msgstr "Idõtúllépés az AUTH kérésnél: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:764
-msgid "AUTH request failed."
-msgstr "AUTH kérés sikertelen."
-
-#: camel/providers/smtp/camel-smtp-transport.c:809
-msgid "Bad authentication response from server.\n"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:835
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:854
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:879
-#, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:898
-#, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr "Hibás RCPT TO válasz: %s: a levél nem lett elküldve"
-
-#: camel/providers/smtp/camel-smtp-transport.c:929
-#, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:948
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:963
-#: camel/providers/smtp/camel-smtp-transport.c:981
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1000
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1024
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1043
-#, c-format
-msgid "RSET response error: %s"
-msgstr "Hibás RSET válasz: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1066
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1085
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:95
-msgid "1 byte"
-msgstr "1 bájt"
-
-#: composer/e-msg-composer-attachment-bar.c:97
-#, c-format
-msgid "%u bytes"
-msgstr "%u bájt"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fK"
-
-#: composer/e-msg-composer-attachment-bar.c:108
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fM"
-
-#: composer/e-msg-composer-attachment-bar.c:112
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fG"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:332 mail/mail-display.c:122
-msgid "attachment"
-msgstr "csatolás"
-
-#: composer/e-msg-composer-attachment-bar.c:421
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr "Fájl csatolása"
-
-#: composer/e-msg-composer-attachment-bar.c:469
-msgid "Remove selected items from the attachment list"
-msgstr "Törli a kiválasztott elemeket a csatolási listáról"
-
-#: composer/e-msg-composer-attachment-bar.c:500
-msgid "Add attachment..."
-msgstr "Csatolás..."
-
-#: composer/e-msg-composer-attachment-bar.c:501
-msgid "Attach a file to the message"
-msgstr "Fájl csatolása a levélhez"
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/mail-config.glade.h:9
-#: mail/message-list.c:1081
-msgid "Attachment"
-msgstr "Csatolás"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr "Csatolás tulajdonságai"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr "Fájlnév:"
-
-#: composer/e-msg-composer-attachment.glade.h:5
-msgid "Inline attachment"
-msgstr "Beágyazott csatolás"
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr "MIME-típus:"
-
-#: composer/e-msg-composer-attachment.glade.h:7
-msgid "Send as:"
-msgstr "Küldés mint"
-
-#: composer/e-msg-composer.c:546
-#, c-format
-msgid ""
-"This version of Evolution was not built with support for S/MIME.\n"
-"You may wish to instead use PGP to %s your document."
-msgstr ""
-
-#: composer/e-msg-composer.c:548
-msgid "sign and encrypt"
-msgstr "aláírás és titkosítás"
-
-#: composer/e-msg-composer.c:549
-msgid "sign"
-msgstr "aláírás"
-
-#: composer/e-msg-composer.c:549
-msgid "encrypt"
-msgstr "titkosítás"
-
-#: composer/e-msg-composer.c:601
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-"Nem sikerült megnyitni az aláírásfájlt: %s\n"
-"%s"
-
-#: composer/e-msg-composer.c:774
-msgid "Save as..."
-msgstr "Mentés másként..."
-
-#: composer/e-msg-composer.c:785
-#, c-format
-msgid "Error saving file: %s"
-msgstr "Fájlmentési hiba: %s"
-
-#: composer/e-msg-composer.c:805
-#, c-format
-msgid "Error loading file: %s"
-msgstr "Fájlbetöltési hiba: %s"
-
-#: composer/e-msg-composer.c:877
-msgid ""
-"Unable to open the drafts folder for this account.\n"
-"Would you like to use the default drafts folder?"
-msgstr ""
-"Nem sikerült megnyitni az ehhez a postafiókhoz tartozó piszkozatok mappát.\n"
-"Szeretnéd használni az alapértelmezett piszkozatok mappát?"
-
-#: composer/e-msg-composer.c:935 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:228
-msgid "Evolution"
-msgstr "Evolúció"
-
-#: composer/e-msg-composer.c:941
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-"A levél nem lett elküldve.\n"
-"\n"
-"Akarod menteni a változásaidat?"
-
-#: composer/e-msg-composer.c:966
-msgid "Open file"
-msgstr "Fájl megnyitás"
-
-#: composer/e-msg-composer.c:1092
-msgid "That file does not exist."
-msgstr "A fájl nem létezik."
-
-#: composer/e-msg-composer.c:1102
-msgid "That is not a regular file."
-msgstr "Nem közönséges fájl."
-
-#: composer/e-msg-composer.c:1112
-msgid "That file exists but is not readable."
-msgstr "Az a fájl létezik, de nem olvasható."
-
-#: composer/e-msg-composer.c:1122
-msgid "That file appeared accesible but open(2) failed."
-msgstr "A fájl elérhetõnek látszik, de open(2) hiba történt."
-
-#: composer/e-msg-composer.c:1144
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-"A fájl túl nagy (100K fölötti).\n"
-"Tényleg be szeretnéd szúrni?"
-
-#: composer/e-msg-composer.c:1165
-msgid "An error occurred while reading the file."
-msgstr "Hiba történt megnyitás közben."
-
-#: composer/e-msg-composer.c:1526 composer/e-msg-composer.c:1871
-msgid "Compose a message"
-msgstr "Levél írása"
-
-#: composer/e-msg-composer.c:1962
-msgid "Could not create composer window."
-msgstr "Nem sikerült létrehozni a levélíró ablakot."
-
-#: composer/e-msg-composer-hdrs.c:324
-msgid "Click here for the address book"
-msgstr "Címjegyzékben való kereséshez kattints ide"
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:355
-msgid "From:"
-msgstr "Feladó:"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:361
-msgid "Reply-To:"
-msgstr "Válaszcím:"
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:372
-msgid "Subject:"
-msgstr "Tárgy:"
-
-#: composer/e-msg-composer-hdrs.c:386
-msgid "To:"
-msgstr "Címzett:"
-
-#: composer/e-msg-composer-hdrs.c:387
-msgid "Enter the recipients of the message"
-msgstr "Írd be a levél címzettjét"
-
-#: composer/e-msg-composer-hdrs.c:390
-msgid "Cc:"
-msgstr "Másolat:"
-
-#: composer/e-msg-composer-hdrs.c:391
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "Írd be, kik kapjanak másolatot a levélrõl"
-
-#: composer/e-msg-composer-hdrs.c:394
-msgid "Bcc:"
-msgstr "Titkos másolat:"
-
-#: composer/e-msg-composer-hdrs.c:395
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"Írd be azokat a címeket, akik rejtett másolatot kapnak a levélrõl, azaz a "
-"címzettnél nem jelenik meg a címük."
-
-#: composer/evolution-composer.c:355
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-
-#: composer/evolution-composer.c:370
-#, fuzzy
-msgid "Cannot initialize Evolution's composer."
-msgstr "Nem tudom az Evolúció levelezõ komponensét elindítani."
-
-#: data/evolution.desktop.in.h:2
-msgid "The Evolution groupware suite"
-msgstr "Evolúció csoportmunka-programcsomag"
-
-#: data/evolution.keys.in.h:1
-msgid "address card"
-msgstr "címkártya"
-
-#: data/evolution.keys.in.h:2
-msgid "calendar information"
-msgstr "naptárinformáció"
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:69 e-util/e-time-utils.c:117
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:477
-#: widgets/misc/e-dateedit.c:1284 widgets/misc/e-dateedit.c:1465
-msgid "%m/%d/%Y"
-msgstr "%Y/%m/%d"
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:87 e-util/e-time-utils.c:198
-msgid "%I:%M:%S %p%n"
-msgstr "%I:%M:%S %p%n"
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:90 e-util/e-time-utils.c:201
-msgid "%H:%M:%S%n"
-msgstr "%H:%M:%S%n"
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:94 e-util/e-time-utils.c:205
-msgid "%I:%M %p%n"
-msgstr "%I:%M %p%n"
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:97 e-util/e-time-utils.c:208
-msgid "%H:%M%n"
-msgstr "%H:%M%n"
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:269
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:473
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2505
-msgid "%a %m/%d/%Y"
-msgstr "%a %m/%d/%Y"
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:274
-msgid "%a %m/%d/%Y %H:%M"
-msgstr "%Y/%m/%d %a %H:%M"
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:283
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr "%Y/%m/%d %a %I:%M %p"
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:312 widgets/misc/e-dateedit.c:1259
-#: widgets/misc/e-dateedit.c:1318 widgets/misc/e-dateedit.c:1497
-msgid "%H:%M"
-msgstr "%H:%M"
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:315
-msgid "%H:%M:%S"
-msgstr "%H:%M:%S"
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:320 widgets/misc/e-dateedit.c:1262
-#: widgets/misc/e-dateedit.c:1321 widgets/misc/e-dateedit.c:1500
-msgid "%I:%M %p"
-msgstr "%I:%M %p"
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:323
-msgid "%I:%M:%S %p"
-msgstr "%I:%M:%S %p"
-
-#: executive-summary/component/component-factory.c:152
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr "Nem sikerült az Evolúció Vezetõi összefoglaló komponensét elindítani."
-
-#: executive-summary/component/e-summary.c:926
-#, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"Nem sikerült megnyitni a HTML fájlt:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:940
-#, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr ""
-"Adatbeolvasási hiba:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:958
-msgid "File does not have a place for the services.\n"
-msgstr ""
-
-#: executive-summary/component/e-summary-callbacks.c:126
-msgid "Select a service"
-msgstr "Válassz egy szolgáltatást"
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-"Választhatsz egy másik HTML oldalt a Vezetõi Összefoglaló hátteréül.\n"
-"\n"
-"Az alapértelmezett háttérhez hagyd üresen a mezõt."
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr "%s megnyitása az alapértelmezett GNOME alkalmazással"
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr "%s megnyitása az alapértelmezett GNOME webböngészõvel"
-
-#: executive-summary/component/e-summary-url.c:71
-#, c-format
-msgid "Send an email to %s"
-msgstr "Levél küldése %s címére"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr "%s nézetének megváltoztatása"
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr "%s futtatása"
-
-#: executive-summary/component/e-summary-url.c:75
-#, c-format
-msgid "Close %s"
-msgstr "%s bezárása"
-
-#: executive-summary/component/e-summary-url.c:76
-#, c-format
-msgid "Move %s to the left"
-msgstr "%s balra mozgatása"
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr "%s jobbra mozgatása"
-
-#: executive-summary/component/e-summary-url.c:78
-#, c-format
-msgid "Move %s into the previous row"
-msgstr "%s átmozgatása az elõzõ sorba"
-
-#: executive-summary/component/e-summary-url.c:79
-#, c-format
-msgid "Move %s into the next row"
-msgstr "%s átmozgatása a következõ sorba"
-
-#: executive-summary/component/e-summary-url.c:80
-#, c-format
-msgid "Configure %s"
-msgstr "%s beállítása"
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr "Megjelenés"
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr "Háttér:"
-
-#: executive-summary/component/main.c:62
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-msgid "Evolution component for the executive summary."
-msgstr "Vezetõi összefoglaló Evolúció komponens."
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-msgid "Factory for the Evolution executive summary component."
-msgstr "Factory a Vezetõi összefoglaló Evolúció komponens számára."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr "Factory az RDF összefoglaló komponens számára."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-msgid "RDF Summary"
-msgstr "RDF összefoglaló"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-msgid "Factory for the test bonobo component."
-msgstr "Factory a bonobo tesztkomponens számára."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-msgid "Factory for the test component."
-msgstr "Factory a tesztkomponens számára."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr "Teszt Bonobo-szolgáltatás"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr "Tesztszolgáltatás"
-
-#: executive-summary/test-service/rdf-summary.c:512
-#: executive-summary/test-service/rdf-summary.c:549
-#: executive-summary/test-service/rdf-summary.c:594
-#: widgets/misc/e-messagebox.c:166
-msgid "Error"
-msgstr "Hiba"
-
-#: executive-summary/test-service/rdf-summary.c:775
-msgid "Update automatically"
-msgstr "Automatikus frissítés"
-
-#: executive-summary/test-service/rdf-summary.c:785
-msgid "Update now"
-msgstr "Frissítés most"
-
-#: executive-summary/test-service/rdf-summary.c:795
-msgid "Update every "
-msgstr "Frissítés"
-
-#: executive-summary/test-service/rdf-summary.c:806
-#: filter/filter-datespec.c:83
-msgid "minutes"
-msgstr "percenként"
-
-#: filter/filter-datespec.c:78
-msgid "year"
-msgstr "év"
-
-#: filter/filter-datespec.c:78
-msgid "years"
-msgstr "évek"
-
-#: filter/filter-datespec.c:79
-msgid "month"
-msgstr "hónap"
-
-#: filter/filter-datespec.c:79
-msgid "months"
-msgstr "hónapok"
-
-#: filter/filter-datespec.c:80
-msgid "week"
-msgstr "hét"
-
-#: filter/filter-datespec.c:80
-msgid "weeks"
-msgstr "hetek"
-
-#: filter/filter-datespec.c:81
-msgid "days"
-msgstr "napok"
-
-#: filter/filter-datespec.c:82
-msgid "hour"
-msgstr "óra"
-
-#: filter/filter-datespec.c:82
-msgid "hours"
-msgstr "órák"
-
-#: filter/filter-datespec.c:83
-msgid "minute"
-msgstr "perc"
-
-#: filter/filter-datespec.c:84
-msgid "second"
-msgstr "másodperc"
-
-#: filter/filter-datespec.c:84
-msgid "seconds"
-msgstr " másodpercek"
-
-#: filter/filter-datespec.c:199
-msgid "Oops. You have forgotten to choose a date."
-msgstr "Hoppá! Elfelejtetted kiválasztani a dátumot."
-
-#: filter/filter-datespec.c:201
-msgid "Oops. You have chosen an invalid date."
-msgstr "Hoppá! Érvénytelen dátumot választottál."
-
-#: filter/filter-datespec.c:276
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-
-#: filter/filter-datespec.c:299
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-
-#: filter/filter-datespec.c:339
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:374
-msgid "the current time"
-msgstr "a pontos idõ most"
-
-#: filter/filter-datespec.c:374
-msgid "a time you specify"
-msgstr "megadott idõ"
-
-#: filter/filter-datespec.c:375
-msgid "a time relative to the current time"
-msgstr ""
-
-#. The label
-#: filter/filter-datespec.c:433
-msgid "Compare against"
-msgstr ""
-
-#: filter/filter-datespec.c:550 filter/filter-datespec.c:710
-msgid "now"
-msgstr "most"
-
-#: filter/filter-datespec.c:707
-msgid "<click here to select a date>"
-msgstr "<kattints ide a dátum kiválasztásához>"
-
-#: filter/filter-editor.c:132 filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr "Szûrõ szabályok"
-
-#. and now for the action area
-#: filter/filter-filter.c:452
-msgid "Then"
-msgstr "Akkor"
-
-#: filter/filter-filter.c:466
-msgid "Add action"
-msgstr "Mûvelet hozzáadása"
-
-#: filter/filter-folder.c:147
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-"Hoppá, elfelejtettél mappát választani.\n"
-"Lépj vissza, és adj meg egy érvényes mappanevet, ahová a leveleket kéred."
-
-#: filter/filter-folder.c:225 filter/vfolder-rule.c:285
-#: mail/mail-account-gui.c:682
-msgid "Select Folder"
-msgstr "Válassz mappát"
-
-#: filter/filter-folder.c:250
-msgid "Enter folder URI"
-msgstr "Írj be egy mappa URI-t"
-
-#: filter/filter-folder.c:296
-msgid "<click here to select a folder>"
-msgstr "<kattints ide a mappa kiválasztásához>"
-
-#: filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr "Szûrõk szerkesztése"
-
-#: filter/filter.glade.h:5
-msgid "Edit VFolders"
-msgstr "VMappák szerkesztése"
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr "Bejövõ"
-
-#: filter/filter.glade.h:8
-msgid "Outgoing"
-msgstr "Kimenõ"
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:130
-msgid "Virtual Folders"
-msgstr "Virtuális mappák"
-
-#: filter/filter.glade.h:11
-msgid "specific folders only"
-msgstr "csak a megadott mappák"
-
-#: filter/filter.glade.h:12
-msgid "vFolder Sources"
-msgstr "VMappa források"
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr "az összes aktív távoli mappával"
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr "az összes helyi és aktív távoli mappával"
-
-#: filter/filter.glade.h:15
-msgid "with all local folders"
-msgstr "az összes helyi mappával"
-
-#: filter/filter-input.c:193
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-"Hiba a '%s' reguláris kifejezésben:\n"
-"%s"
-
-#: filter/filter-part.c:488
-msgid "Test"
-msgstr "Teszt"
-
-#: filter/filter-rule.c:626
-msgid "Rule name: "
-msgstr "Szabály neve:"
-
-#: filter/filter-rule.c:630
-msgid "Untitled"
-msgstr "Névtelen"
-
-#: filter/filter-rule.c:646
-msgid "If"
-msgstr "Keresési feltételek"
-
-#: filter/filter-rule.c:664
-msgid "Execute actions"
-msgstr "Mûvelet végrehajtása,"
-
-#: filter/filter-rule.c:668
-msgid "if all criteria are met"
-msgstr "ha minden feltétel teljesül"
-
-#: filter/filter-rule.c:673
-msgid "if any criteria are met"
-msgstr "ha bármely feltétel teljesül"
-
-#: filter/filter-rule.c:684
-msgid "Add criterion"
-msgstr "Feltétel hozzáadása"
-
-#: filter/filter-rule.c:770
-msgid "incoming"
-msgstr "bejövõ"
-
-#: filter/filter-rule.c:770
-msgid "outgoing"
-msgstr "kimenõ"
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Colour"
-msgstr "Szín hozzárendelése"
-
-#: filter/libfilter-i18n.h:4
-msgid "Assign Score"
-msgstr "Pontszám hozzárendelése"
-
-#: filter/libfilter-i18n.h:5
-msgid "Attachments"
-msgstr "Csatolások"
-
-#: filter/libfilter-i18n.h:7
-msgid "contains"
-msgstr "tartalmazza"
-
-#: filter/libfilter-i18n.h:8
-msgid "Copy to Folder"
-msgstr "Mappába másolás"
-
-#: filter/libfilter-i18n.h:9
-msgid "Date received"
-msgstr "Fogadás dátuma"
-
-#: filter/libfilter-i18n.h:10
-msgid "Date sent"
-msgstr "Küldés dátuma"
-
-#: filter/libfilter-i18n.h:12
-msgid "Deleted"
-msgstr "Törölt"
-
-#: filter/libfilter-i18n.h:13
-msgid "does not contain"
-msgstr "nem tartalmazza"
-
-#: filter/libfilter-i18n.h:14
-msgid "does not end with"
-msgstr "nem végzõdik"
-
-#: filter/libfilter-i18n.h:15
-msgid "does not exist"
-msgstr "nem létezik"
-
-#: filter/libfilter-i18n.h:16
-msgid "does not sound like"
-msgstr "nem úgy hangzik, mint"
-
-#: filter/libfilter-i18n.h:17
-msgid "does not start with"
-msgstr "nincs az elején"
-
-#: filter/libfilter-i18n.h:18
-msgid "Do Not Exist"
-msgstr "Nem létezik"
-
-#: filter/libfilter-i18n.h:19
-msgid "Draft"
-msgstr "Piszkozat"
-
-#: filter/libfilter-i18n.h:20
-msgid "ends with"
-msgstr "végzõdik"
-
-#: filter/libfilter-i18n.h:21
-msgid "Exist"
-msgstr "Létezik"
-
-#: filter/libfilter-i18n.h:22
-msgid "exists"
-msgstr "létezik"
-
-#: filter/libfilter-i18n.h:23
-msgid "Expression"
-msgstr "Kifejezés"
-
-#: filter/libfilter-i18n.h:24
-msgid "Forward to Address"
-msgstr "A levél továbbítása címre"
-
-#: filter/libfilter-i18n.h:25
-msgid "Important"
-msgstr "Fontos"
-
-#: filter/libfilter-i18n.h:26
-msgid "is"
-msgstr "="
-
-#: filter/libfilter-i18n.h:27
-msgid "is greater than"
-msgstr "nagyobb mint"
-
-#: filter/libfilter-i18n.h:28
-msgid "is less than"
-msgstr "kisebb mint"
-
-#: filter/libfilter-i18n.h:29
-msgid "is not"
-msgstr "nem"
-
-#: filter/libfilter-i18n.h:30
-msgid "Mailing list"
-msgstr "Levelezõlista"
-
-#: filter/libfilter-i18n.h:31
-msgid "Message Body"
-msgstr "Levéltörzs"
-
-#: filter/libfilter-i18n.h:32
-msgid "Message Header"
-msgstr "Levél fejléce"
-
-#: filter/libfilter-i18n.h:33
-msgid "Message was received"
-msgstr "Az levél megérkezett"
-
-#: filter/libfilter-i18n.h:34
-msgid "Message was sent"
-msgstr "A levél el lett küldve"
-
-#: filter/libfilter-i18n.h:35
-msgid "Move to Folder"
-msgstr "Mozgatás mappába"
-
-#: filter/libfilter-i18n.h:36
-msgid "on or after"
-msgstr "akkor vagy után volt"
-
-#: filter/libfilter-i18n.h:37
-msgid "on or before"
-msgstr "akkor vagy elõbb"
-
-#: filter/libfilter-i18n.h:38
-msgid "Read"
-msgstr "Olvasott"
-
-#: filter/libfilter-i18n.h:39
-msgid "Recipients"
-msgstr "Címzettek"
-
-#: filter/libfilter-i18n.h:40
-msgid "Regex Match"
-msgstr "Regex illeszkedés"
-
-#: filter/libfilter-i18n.h:41
-msgid "Replied to"
-msgstr "Válasz"
-
-#: filter/libfilter-i18n.h:42 filter/score-rule.c:204 filter/score-rule.c:206
-#: mail/message-list.c:1081
-msgid "Score"
-msgstr "Pontszám"
-
-#: filter/libfilter-i18n.h:43
-msgid "Sender"
-msgstr "Feladó"
-
-#: filter/libfilter-i18n.h:44
-msgid "Set Status"
-msgstr "Állapot beállítása"
-
-#: filter/libfilter-i18n.h:45
-msgid "sounds like"
-msgstr "úgy hangzik, mint"
-
-#: filter/libfilter-i18n.h:46
-#, fuzzy
-msgid "Source Account"
-msgstr "Email tartalmaz"
-
-#: filter/libfilter-i18n.h:47
-msgid "Specific header"
-msgstr "Adott fejléc"
-
-#: filter/libfilter-i18n.h:48
-msgid "starts with"
-msgstr "így kezdõdik:"
-
-#: filter/libfilter-i18n.h:50
-msgid "Stop Processing"
-msgstr "Feldolgozás leállítása"
-
-#: filter/libfilter-i18n.h:51 mail/mail-format.c:767 mail/message-list.c:1082
-msgid "Subject"
-msgstr "Tárgy"
-
-#: filter/libfilter-i18n.h:52
-msgid "was after"
-msgstr "után volt"
-
-#: filter/libfilter-i18n.h:53
-msgid "was before"
-msgstr "elõtte volt"
-
-#: filter/rule-editor.c:147
-msgid "Rules"
-msgstr "Szabályok"
-
-#: filter/rule-editor.c:240
-msgid "Add Rule"
-msgstr "Szabály hozzáadása"
-
-#: filter/rule-editor.c:299
-msgid "Edit Rule"
-msgstr "Szabály szerkesztése"
-
-#: filter/score-editor.c:130
-msgid "Score Rules"
-msgstr "Pontszámszabályok"
-
-#: importers/elm-importer.c:512 importers/evolution-gnomecard-importer.c:238
-#: importers/netscape-importer.c:780 importers/pine-importer.c:646
-#: shell/e-shell-importer.c:653 shell/importer/import.glade.h:4
-msgid "Import"
-msgstr "Importálás"
-
-#: importers/elm-importer.c:517 importers/netscape-importer.c:785
-#: importers/pine-importer.c:651
-msgid "Mail"
-msgstr "Levél"
-
-#: importers/elm-importer.c:521
-msgid "Elm Aliases"
-msgstr "Elm álnevek"
-
-#: importers/elm-importer.c:528 importers/evolution-gnomecard-importer.c:250
-#: importers/netscape-importer.c:807 importers/pine-importer.c:668
-msgid "Don't ask me again"
-msgstr "Ne kérdezze meg többet."
-
-#: importers/elm-importer.c:561
-msgid ""
-"Evolution has found Elm mail files\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-"Az Evolúció Elm levélfájlokat talált.\n"
-"Szeretnéd ezeket az Evolúcióba importálni?"
-
-#: importers/elm-importer.c:579
-msgid "Elm mail"
-msgstr "Elm levél"
-
-#: importers/evolution-gnomecard-importer.c:243 importers/pine-importer.c:661
-msgid "Addressbook"
-msgstr "Címjegyzék"
-
-#: importers/evolution-gnomecard-importer.c:275
-msgid ""
-"Evolution has found GnomeCard files.\n"
-"Would you like them to be imported into Evolution?"
-msgstr ""
-"Az Evolúció GnomeCard fájlokat talált.\n"
-"Szeretnéd ezeket az Evolúcióba importálni?"
-
-#: importers/netscape-importer.c:790 importers/pine-importer.c:656
-msgid "Settings"
-msgstr "Beállítások"
-
-#: importers/netscape-importer.c:795 mail/mail-callbacks.c:1359
-msgid "Filters"
-msgstr "Szûrõk..."
-
-#: importers/netscape-importer.c:800
-msgid "Addressbooks"
-msgstr "Címjegyzékek"
-
-#: importers/netscape-importer.c:847
-msgid ""
-"Evolution has found Netscape mail files.\n"
-"Would you like them to be imported into Evolution?"
-msgstr ""
-"Az Evolúció Netscape levélfájlokat talált.\n"
-"Szeretnéd ezeket az Evolúcióba importálni?"
-
-#: importers/pine-importer.c:705
-msgid ""
-"Evolution has found Pine mail files.\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-"Az Evolúció Pine levélfájlokat talált.\n"
-"Szeretnéd ezeket az Evolúcióba importálni?"
-
-#: importers/pine-importer.c:723
-msgid "Pine mail"
-msgstr "Pine levél"
-
-#: mail/component-factory.c:337
-msgid "Cannot initialize Evolution's mail component."
-msgstr "Nem tudom az Evolúció levelezõ komponensét elindítani."
-
-#: mail/component-factory.c:410
-msgid "Cannot register storage with shell"
-msgstr ""
-
-#: mail/folder-browser.c:329
-msgid "Store search as vFolder"
-msgstr "Keresés tárolása VMappaként"
-
-#: mail/folder-browser.c:653
-msgid "VFolder on _Subject"
-msgstr "VMappa a _tárgyra"
-
-#: mail/folder-browser.c:656
-msgid "VFolder on Se_nder"
-msgstr "VMappa a _feladóra"
-
-#: mail/folder-browser.c:659
-msgid "VFolder on _Recipients"
-msgstr "VMappa a _címzettekre"
-
-#: mail/folder-browser.c:662
-msgid "VFolder on Mailing _List"
-msgstr "VMappa a _levelezõlistára"
-
-#: mail/folder-browser.c:668
-msgid "Filter on Sub_ject"
-msgstr "Szû_rõ a tárgyra"
-
-#: mail/folder-browser.c:671
-msgid "Filter on Sen_der"
-msgstr "Szûrõ a f_eladóra"
-
-#: mail/folder-browser.c:674
-msgid "Filter on Re_cipients"
-msgstr "Szûrõ a _címzettekre"
-
-#: mail/folder-browser.c:677
-msgid "Filter on _Mailing List"
-msgstr "Szûrõ a _levelezõlistára"
-
-#: mail/folder-browser.c:686
-msgid "_Open"
-msgstr "_Megnyitás"
-
-#: mail/folder-browser.c:688
-msgid "Resend"
-msgstr "Újraküldés"
-
-#: mail/folder-browser.c:690 ui/evolution-calendar.xml.h:43
-#: ui/evolution-mail.xml.h:118 ui/evolution-tasks.xml.h:11
-msgid "_Save As..."
-msgstr "M_entés másként..."
-
-#: mail/folder-browser.c:692 ui/evolution-event-editor.xml.h:69
-#: ui/evolution-task-editor-dialog.xml.h:82 ui/evolution-tasks.xml.h:10
-msgid "_Print"
-msgstr "_Nyomtatás"
-
-#: mail/folder-browser.c:697 ui/evolution-mail.xml.h:117
-msgid "_Reply to Sender"
-msgstr "_Válasz a feladónak"
-
-#: mail/folder-browser.c:699 ui/evolution-mail.xml.h:72
-msgid "Reply to _All"
-msgstr "Válasz _mindenkinek"
-
-#: mail/folder-browser.c:701
-msgid "_Forward"
-msgstr "Továbbítás"
-
-#: mail/folder-browser.c:704
-msgid "Mar_k as Read"
-msgstr "_Elolvasva"
-
-#: mail/folder-browser.c:706
-msgid "Mark as U_nread"
-msgstr "_Olvasatlan"
-
-#: mail/folder-browser.c:711
-msgid "_Move to Folder..."
-msgstr "_Mappába mozgatás..."
-
-#: mail/folder-browser.c:713
-msgid "_Copy to Folder..."
-msgstr "_Mappába másolás..."
-
-#: mail/folder-browser.c:717 ui/evolution-mail.xml.h:121
-msgid "_Undelete"
-msgstr "_Visszaállítás"
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:727
-msgid "Apply Filters"
-msgstr "Szûrõk alkalmazása"
-
-#: mail/folder-browser.c:731
-msgid "Create Ru_le From Message"
-msgstr "S_zabály gyártása levélbõl"
-
-#: mail/folder-browser.c:870
-msgid "Filter on Mailing List"
-msgstr "Szûrõ a levelezõlistára"
-
-#: mail/folder-browser.c:871
-msgid "VFolder on Mailing List"
-msgstr "VMappa a levelezési listára"
-
-#: mail/folder-browser.c:873
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr "Szûrõ a levelezõ listára (%s)"
-
-#: mail/folder-browser.c:874
-#, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr "VMappa a levelezõ listára (%s)"
-
-#: mail/folder-browser-factory.c:196
-#, c-format
-msgid "Properties for \"%s\""
-msgstr "\"%s\" tulajdonságai"
-
-#: mail/folder-browser-factory.c:198 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-msgid "Properties"
-msgstr "Tulajdonságok"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr "Levélkezelõ Evolution összetevõ."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-msgid "Evolution mail composer."
-msgstr "Evolúció levélszerkesztõ."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-msgid "Evolution mail executive summary component."
-msgstr "Evolúció vezetõi összefoglaló komponens a levelekrõl."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-msgid "Evolution mail folder display component."
-msgstr "Evolúció levélmappa-megjelenítõ komponens."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-msgid "Evolution mail folder factory component."
-msgstr "Evolúció levélmappa-factory komponens."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-msgid "Factory for the Evolution composer."
-msgstr "Factory az Evolúció levélszerkesztõ számára."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-msgid "Factory for the Evolution mail component."
-msgstr "Factory az Evolúció levelezõkomponens számára."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-#, fuzzy
-msgid "Factory for the Mail Summary component."
-msgstr "Az Evolúció naptár csatorna beállító eszköze.\n"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:9
-msgid "Mail configuration interface"
-msgstr "Levelezést beállító felület"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:1
-msgid "Factory to import mbox into Evolution"
-msgstr "Factory az mbox fájlok Evolúcióba importálásához"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:2
-msgid "Imports mbox files into Evolution"
-msgstr "Mbox fájlok importálása az Evolúcióba"
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:1
-msgid "Factory to import Outlook Express 4 mails into Evolution"
-msgstr "Factory az Outlook Express 4 fájlok Evolúcióba importálásához"
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:2
-msgid "Imports Outlook Express 4 files into Evolution"
-msgstr "Outlook Express 4 fájlok importálása az Evolúcióba"
-
-#: mail/local-config.glade.h:1
-msgid "Current store format:"
-msgstr "Jelenlegi tárolási formátum:"
-
-#: mail/local-config.glade.h:2
-msgid "Mailbox Format"
-msgstr "Postafiók formátuma"
-
-#: mail/local-config.glade.h:3
-msgid "New store format:"
-msgstr "Új tárolási formátum"
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-
-#: mail/local-config.glade.h:7
-msgid "maildir"
-msgstr "maildir"
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr "mbox"
-
-#: mail/local-config.glade.h:9
-msgid "mh"
-msgstr "mh"
-
-#: mail/mail-account-editor.c:105
-msgid "You have not filled in all of the required information."
-msgstr "Nem adtad meg az összes szükséges információt."
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:173
-msgid "Evolution Account Editor"
-msgstr "Evolúció Postafiók-szerkesztõ"
-
-#: mail/mail-accounts.c:121 mail/mail-accounts.c:165
-msgid " (default)"
-msgstr " (alapértelmezett)"
-
-#: mail/mail-accounts.c:197
-msgid "Disable"
-msgstr "Tiltás"
-
-#: mail/mail-accounts.c:199 mail/mail-config.glade.h:30
-msgid "Enable"
-msgstr "Engedélyezés"
-
-#: mail/mail-accounts.c:280 mail/mail-accounts.c:284
-msgid "Are you sure you want to delete this account?"
-msgstr "Tényleg törölni akarod ezt a postafiókot?"
-
-#: mail/mail-accounts.c:418 mail/mail-accounts.c:422
-msgid "Are you sure you want to delete this news account?"
-msgstr "Tényleg törölni akarod ezt a news-hozzáférést?"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:568
-msgid "Evolution Account Manager"
-msgstr "Evolúció Postafiók-kezelõ"
-
-#: mail/mail-autofilter.c:70
-#, c-format
-msgid "Mail to %s"
-msgstr "Levél %s-nek"
-
-#: mail/mail-autofilter.c:213
-#, c-format
-msgid "Subject is %s"
-msgstr "A téma %s"
-
-#: mail/mail-autofilter.c:229
-#, c-format
-msgid "Mail from %s"
-msgstr "Levél %s-tól"
-
-#: mail/mail-autofilter.c:285
-#, c-format
-msgid "%s mailing list"
-msgstr "%s levelezõlista"
-
-#: mail/mail-autofilter.c:335 mail/mail-autofilter.c:356
-msgid "Add Filter Rule"
-msgstr "Szûrõszabály hozzáadása"
-
-#: mail/mail-callbacks.c:93
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-"Nincs még beállítva a levelezõd.\n"
-"Be kell állítanod, mielõtt levelet \n"
-"küldhetnél, fogadhatnál vagy írhatnál.\n"
-"Szeretnéd most beállítani?"
-
-#: mail/mail-callbacks.c:146
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-"Be kell állítanod egy azonosítót,\n"
-"mielõtt levelet küldesz."
-
-#: mail/mail-callbacks.c:158
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-"Be kell állítanod a levélküldést,\n"
-"mielõtt levelet küldesz."
-
-#: mail/mail-callbacks.c:202
-msgid "You have not set a mail transport method"
-msgstr "A levélküldés módja nincs beállítva"
-
-#: mail/mail-callbacks.c:235
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-"Nincs tárgya a levélnek.\n"
-"Tényleg elküldjem?"
-
-#: mail/mail-callbacks.c:308
-msgid "You must specify recipients in order to send this message."
-msgstr "Meg kell adnod címzetteke, mielõtt elküldhetnéd a levelet."
-
-#: mail/mail-callbacks.c:351
-msgid "You must configure an account before you can send this email."
-msgstr "Be kell állítanod egy azonosítót, mielõtt levelet küldesz."
-
-#: mail/mail-callbacks.c:594
-#, c-format
-msgid "On %s, %s wrote:"
-msgstr "%s keltezéssel %s ezt írta:"
-
-#: mail/mail-callbacks.c:756
-msgid "Forwarded message:\n"
-msgstr "Továbbított levél:\n"
-
-#: mail/mail-callbacks.c:850
-msgid "Move message(s) to"
-msgstr "Levél(levelek) mozgatása más mappába"
-
-#: mail/mail-callbacks.c:852
-msgid "Copy message(s) to"
-msgstr "Levél(levelek) másolása más mappába"
-
-#: mail/mail-callbacks.c:1017
-#, c-format
-msgid "Are you sure you want to edit all %d messages?"
-msgstr "Tényleg szerkeszteni szeretnéd mind a %d levelet?"
-
-#: mail/mail-callbacks.c:1039
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-"Csak a Piszkozatok mappában lévõ \n"
-"leveleket lehet szerkeszteni."
-
-#: mail/mail-callbacks.c:1073
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-"Csak az Elküldött mappában lévõ \n"
-"leveleket lehet újra elküldeni."
-
-#: mail/mail-callbacks.c:1085
-#, c-format
-msgid "Are you sure you want to resend all %d messages?"
-msgstr "Tényleg újra akarod küldeni mind a %d üzenetet?"
-
-#: mail/mail-callbacks.c:1106
-msgid "No Message Selected"
-msgstr "Nincs levél kijelölve"
-
-#: mail/mail-callbacks.c:1140 mail/mail-display.c:92
-msgid "Overwrite file?"
-msgstr "Felülírod a fájlt?"
-
-#: mail/mail-callbacks.c:1144 mail/mail-display.c:96
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-"A megadott néven már létezik fájl.\n"
-"Felülírod?"
-
-#: mail/mail-callbacks.c:1188
-msgid "Save Message As..."
-msgstr "Levél mentése másként..."
-
-#: mail/mail-callbacks.c:1190
-msgid "Save Messages As..."
-msgstr "Levelek mentése másként..."
-
-#: mail/mail-callbacks.c:1349
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-"Hiba a szûrõinformációk betöltése közben:\n"
-"%s"
-
-#: mail/mail-callbacks.c:1407
-msgid "Print Message"
-msgstr "Levél nyomtatása"
-
-#: mail/mail-callbacks.c:1454
-msgid "Printing of message failed"
-msgstr "Levél nyomtatása sikertelen"
-
-#: mail/mail-callbacks.c:1549
-#, c-format
-msgid "Are you sure you want to open all %d messages in separate windows?"
-msgstr "Tényleg külön ablakban akarod megnyitni mind a %d levelet?"
-
-#: mail/mail-config.c:1213 mail/mail-config.c:1216
-msgid "Connecting to server..."
-msgstr "Kapcsolódás a kiszölgálóhoz..."
-
-#: mail/mail-config-druid.c:99
-msgid ""
-"Please enter your name and email address below. The \"optional\" fields "
-"below do not need to be filled in, unless you wish to include this "
-"information in email you send."
-msgstr ""
-"Add meg a neved és az emailcímedet. A \"nem kötelezõ\" mezõket csak akkor "
-"kell kitöltened, ha szeretnéd feltüntetni ezeket az adatokat a kimenõ "
-"leveleidben."
-
-#: mail/mail-config-druid.c:101
-msgid ""
-"Please enter information about your incoming mail server below. If you don't "
-"know what kind of server you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"Add meg a bejövõ leveleidet kezelõ kiszolgálóval kapcsolatos információkat.\n"
-"Ha nem tudod, hogy milyen kiszolgálót használsz, kérdezd meg a rendszer-\n"
-"gazdádat, vagy az internetszolgáltatódat."
-
-#: mail/mail-config-druid.c:105
-msgid ""
-"Please enter information about your outgoing mail protocol below. If you "
-"don't know which protocol you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"Add meg a kimenõ leveleidet kezelõ protokollal kapcsolatos információkat. \n"
-"Ha nem tudod, hogy milyen protokollt használsz, kérdezd meg a rendszer-\n"
-"gazdádat, vagy az internetszolgáltatódat."
-
-#: mail/mail-config-druid.c:107
-msgid ""
-"You are almost done with the mail configuration process. The identity, "
-"incoming mail server and outgoing mail transport method which you provided "
-"will be grouped together to make an Evolution mail account. Please enter a "
-"name for this account in the space below. This name will be used for display "
-"purposes only."
-msgstr ""
-"Majdnem kész van a levelezõ beállításának folyamata. Az azonosító, a bejövõ "
-"levelek kiszolgálója és a kimenõ levelek továbbításának módja együttesen "
-"alkotja az Evolúció postafiókot. Add meg lent a postafiók nevét. Ez a név "
-"csak az Evolúció programban jelenik meg."
-
-#. set window title
-#: mail/mail-config-druid.c:445
-msgid "Evolution Account Wizard"
-msgstr "Evolúció Postafiók varázsló"
-
-#: mail/mail-config.glade.h:1
-msgid " Check for supported types "
-msgstr " Támogatott típusok detektálása "
-
-#: mail/mail-config.glade.h:2
-msgid " color"
-msgstr " szín"
-
-#: mail/mail-config.glade.h:3
-msgid "Account"
-msgstr "Postafiók"
-
-#: mail/mail-config.glade.h:4
-msgid "Account Information"
-msgstr "Postafiók-információ"
-
-#: mail/mail-config.glade.h:5
-msgid "Account Management"
-msgstr "Postafiók-kezelés"
-
-#: mail/mail-config.glade.h:6
-msgid "Accounts"
-msgstr "Postafiókok"
-
-#: mail/mail-config.glade.h:8
-msgid "Always load images off the net"
-msgstr "Mindig töltse le a képeket a hálózatról"
-
-#: mail/mail-config.glade.h:10
-msgid "Authentication"
-msgstr "Hitelesítés:"
-
-#: mail/mail-config.glade.h:11
-msgid "Authentication Type: "
-msgstr "Hitelesítési típus:"
-
-#: mail/mail-config.glade.h:12
-msgid "Automatically check for new mail every"
-msgstr "Az új levelek automatikus lekérdezése minden"
-
-#: mail/mail-config.glade.h:14
-msgid "Composer"
-msgstr "Szerkesztõ"
-
-#: mail/mail-config.glade.h:15
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-"Gratulálunk, a levelezésed beállítása sikerült.\n"
-"\n"
-"Most már készen állsz arra, hogy leveleket küldj és \n"
-"fogadj az Evolúcióval.\n"
-"\n"
-"Kattints a \"Befejezés\" gombra a beállítások mentéséhez."
-
-#: mail/mail-config.glade.h:21
-msgid "De_fault"
-msgstr "_Alapértelmezett"
-
-#: mail/mail-config.glade.h:22
-msgid "Default \"Forward\" style is: "
-msgstr "A \"Továbbítás\" alapértelmezett stílusa: "
-
-#: mail/mail-config.glade.h:25
-msgid "Done"
-msgstr "Kész"
-
-#: mail/mail-config.glade.h:26
-msgid "Drafts"
-msgstr "Piszkozatok"
-
-#: mail/mail-config.glade.h:27
-msgid "Drafts folder:"
-msgstr "Piszkozatok mappa"
-
-#: mail/mail-config.glade.h:29
-msgid "Email Address:"
-msgstr "Emailcím:"
-
-#: mail/mail-config.glade.h:31
-msgid "Full Name:"
-msgstr "Teljes név:"
-
-#: mail/mail-config.glade.h:32
-msgid "Highlight citations with"
-msgstr "Idézetek kiemelése"
-
-#: mail/mail-config.glade.h:34
-msgid "IMAPv4 "
-msgstr "IMAPv4 "
-
-#: mail/mail-config.glade.h:35
-msgid "Identity"
-msgstr "Azonosító"
-
-#: mail/mail-config.glade.h:36
-msgid "In HTML mail"
-msgstr "HTML levélben"
-
-#: mail/mail-config.glade.h:37
-msgid "Inline"
-msgstr "Beágyazott"
-
-#: mail/mail-config.glade.h:38
-msgid "Kerberos "
-msgstr "Kerberos "
-
-#: mail/mail-config.glade.h:39
-msgid "Load images if sender is in addressbook"
-msgstr "Képek betöltése, ha a feladó szerepel a címjegyzékben"
-
-#: mail/mail-config.glade.h:40
-msgid "Mail Configuration"
-msgstr "Levelezés beállítása"
-
-#: mail/mail-config.glade.h:41
-msgid "Make this my default account"
-msgstr "Legyen ez az alapértelmezett postafiók"
-
-#: mail/mail-config.glade.h:42
-msgid "Mark messages as \"Read\" after:"
-msgstr "Várakozás a levél olvasottként megjelölése elõtt:"
-
-#: mail/mail-config.glade.h:44
-msgid "Never load images off the net"
-msgstr "Soha ne töltse le a képeket a hálózatról"
-
-#: mail/mail-config.glade.h:45
-msgid "News"
-msgstr "News"
-
-#: mail/mail-config.glade.h:47
-msgid "Optional Information"
-msgstr "Egyéb információ"
-
-#: mail/mail-config.glade.h:48
-msgid "Organization:"
-msgstr "Szervezet:"
-
-#: mail/mail-config.glade.h:49
-msgid "PGP"
-msgstr "PGP"
-
-#: mail/mail-config.glade.h:50
-msgid "PGP binary path:"
-msgstr "PGP program elérési útja:"
-
-#: mail/mail-config.glade.h:55
-msgid "Qmail maildir "
-msgstr "Qmail maildir "
-
-#: mail/mail-config.glade.h:56
-msgid "Quoted"
-msgstr "Idézet"
-
-#: mail/mail-config.glade.h:57
-msgid "Receiving Email"
-msgstr "Levelek fogadása"
-
-#: mail/mail-config.glade.h:58
-msgid "Receiving Mail"
-msgstr "Levelek fogadása"
-
-#: mail/mail-config.glade.h:59
-msgid "Receiving Options"
-msgstr "Fogadás beállításai"
-
-#: mail/mail-config.glade.h:61
-msgid "Required Information"
-msgstr "Szükséges információ"
-
-#: mail/mail-config.glade.h:63
-msgid "Select PGP binary"
-msgstr "Válaszd ki a PGP programot"
-
-#: mail/mail-config.glade.h:64
-msgid "Send mail in HTML format by default."
-msgstr "A levelet HTML formátumban küldi alapértelmezésként."
-
-#: mail/mail-config.glade.h:65
-msgid "Sending Email"
-msgstr "Levél küldése"
-
-#: mail/mail-config.glade.h:66
-msgid "Sending Mail"
-msgstr "Levél küldése"
-
-#: mail/mail-config.glade.h:68
-msgid "Sent"
-msgstr "Elküldött"
-
-#: mail/mail-config.glade.h:69
-msgid "Sent and Draft Messages"
-msgstr "Elküldött levelek és piszkozatok"
-
-#: mail/mail-config.glade.h:70
-msgid "Sent messages folder:"
-msgstr "Elküldött levelek mappája"
-
-#: mail/mail-config.glade.h:71
-msgid "Server Configuration"
-msgstr "Kiszolgáló beállítása"
-
-#: mail/mail-config.glade.h:72
-msgid "Server Type: "
-msgstr "Kiszolgáló típusa: "
-
-#: mail/mail-config.glade.h:73
-msgid "Server requires authentication"
-msgstr "A kiszolgáló megköveteli az azonosítást"
-
-#: mail/mail-config.glade.h:74
-msgid "Signature file:"
-msgstr "Aláírás fájl:"
-
-#: mail/mail-config.glade.h:75
-msgid "Sources"
-msgstr "Források"
-
-#: mail/mail-config.glade.h:76
-msgid "Special Folders"
-msgstr "Különleges mappák"
-
-#: mail/mail-config.glade.h:77
-msgid "Standard Unix mbox"
-msgstr "Szabványos Unix mbox"
-
-#: mail/mail-config.glade.h:78
-msgid "Type"
-msgstr "Típus"
-
-#: mail/mail-config.glade.h:79
-msgid "Use secure connection (SSL)"
-msgstr "Biztonságos kapcsolat használata (SSL)"
-
-#: mail/mail-config.glade.h:80
-msgid "Username:"
-msgstr "Felhasználónév:"
-
-#: mail/mail-config.glade.h:81
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-"Üdvözöl az Evolúció Levelezõbeállító varázslója.\n"
-"\n"
-"A folytatáshoz kattints a \"Tovább\" gombra."
-
-#: mail/mail-config.glade.h:86 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:45 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:48
-msgid "_Edit"
-msgstr "S_zerkesztés"
-
-#: mail/mail-crypto.c:59
-#, fuzzy
-msgid "Could not create a PGP signature context."
-msgstr "Nem tudom a dialógust elkészíteni."
-
-#: mail/mail-crypto.c:84
-#, fuzzy
-msgid "Could not create a PGP verification context."
-msgstr "Nem sikerült a POP kiszolgálóhoz kapcsolódni a %s gépen."
-
-#: mail/mail-crypto.c:113
-#, fuzzy
-msgid "Could not create a PGP encryption context."
-msgstr "Nem sikerült létrehozni a levélíró ablakot."
-
-#: mail/mail-crypto.c:138
-#, fuzzy
-msgid "Could not create a PGP decryption context."
-msgstr ""
-"Nem sikerült létrehozni %s könyvtárat:\n"
-"%s"
-
-#: mail/mail-crypto.c:169
-#, fuzzy
-msgid "Could not create a S/MIME signature context."
-msgstr "Nem tudom a dialógust elkészíteni."
-
-#: mail/mail-crypto.c:195
-msgid "Could not create a S/MIME verification context."
-msgstr ""
-
-#: mail/mail-crypto.c:225
-msgid "Could not create a S/MIME encryption context."
-msgstr ""
-
-#: mail/mail-crypto.c:251
-msgid "Could not create a S/MIME decryption context."
-msgstr ""
-
-#: mail/mail-display.c:196
-msgid "Save Attachment"
-msgstr "Csatolás mentése"
-
-#: mail/mail-display.c:236
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr "Nem sikerült létrehozni az ideiglenes könyvtárat: %s"
-
-#: mail/mail-display.c:297
-msgid "Save to Disk..."
-msgstr "Mentés a lemezre..."
-
-#: mail/mail-display.c:299
-#, c-format
-msgid "Open in %s..."
-msgstr "Megnyitás ezzel: %s..."
-
-#: mail/mail-display.c:301
-msgid "View Inline"
-msgstr "Megtekintés beágyazva"
-
-#: mail/mail-display.c:336
-msgid "External Viewer"
-msgstr "Külsõ nézõke"
-
-#: mail/mail-display.c:359
-#, c-format
-msgid "View Inline (via %s)"
-msgstr "Megtekintés beágyazva (%s segítségével)"
-
-#: mail/mail-display.c:363
-msgid "Hide"
-msgstr "Rejtés"
-
-#: mail/mail-display.c:962
-msgid "Loading message content"
-msgstr "Üzenet tartalmának betöltése"
-
-#: mail/mail-display.c:1256
-msgid "Open link in browser"
-msgstr "Hivatkozás megnyitása böngészõben"
-
-#: mail/mail-display.c:1258
-msgid "Save as (FIXME)"
-msgstr "Mentés másként (FIXME)"
-
-#: mail/mail-display.c:1260
-msgid "Copy location (FIXME)"
-msgstr "Hely másolása (FIXME)"
-
-#: mail/mail-format.c:527
-#, c-format
-msgid "%s attachment"
-msgstr "%s csatolás"
-
-#: mail/mail-format.c:573
-msgid "Could not parse MIME message. Displaying as source."
-msgstr "Nem sikerült értelmezni a MIME-üzenetet. Megjelenítés forrásként."
-
-#: mail/mail-format.c:640 mail/message-list.c:1082
-msgid "Date"
-msgstr "Dátum"
-
-#: mail/mail-format.c:756 mail/message-list.c:1082
-msgid "From"
-msgstr "Feladó"
-
-#: mail/mail-format.c:759
-msgid "Reply-To"
-msgstr "Válaszcím"
-
-#: mail/mail-format.c:762 mail/message-list.c:1083
-msgid "To"
-msgstr "Címzett"
-
-#: mail/mail-format.c:765
-msgid "Cc"
-msgstr "Másolat"
-
-#: mail/mail-format.c:1075
-msgid "No GPG/PGP program configured."
-msgstr "Nincs beállítva GPG/PGP program."
-
-#: mail/mail-format.c:1090
-msgid "Encrypted message not displayed"
-msgstr "A titkosÍtott üzenet nem jelenik meg"
-
-#: mail/mail-format.c:1096
-msgid "Encrypted message"
-msgstr "Titkosított üzenet"
-
-#: mail/mail-format.c:1097
-msgid "Click icon to decrypt."
-msgstr "A titkosítás visszafejtéséhez kattints az ikonra."
-
-#: mail/mail-format.c:1153
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr "Az üzenetet digitálisan aláírták, és az aláírás hiteles."
-
-#: mail/mail-format.c:1161
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr "Az üzenetet digitálisan aláírták, de nem bizonyítható, hogy hiteles."
-
-#: mail/mail-format.c:1787
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr "Mutató FTP-helyre (%s)"
-
-#: mail/mail-format.c:1799
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr "Mutató helyi fájlra (%s), amely \"%s\" helyen érvényes"
-
-#: mail/mail-format.c:1803
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr "Mutató hely fájlra (%s)"
-
-#: mail/mail-format.c:1837
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr "Mutató ismeretlen külsõ adatra (\"%s\" típus)"
-
-#: mail/mail-format.c:1842
-msgid "Malformed external-body part."
-msgstr "Hibás külsõ törzsrész."
-
-#: mail/mail-local.c:505
-#, c-format
-msgid "Opening '%s'"
-msgstr "'%s' megnyitása"
-
-#: mail/mail-local.c:785
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr "\"%s\" mappa átalakítása \"%s\" formátumra"
-
-#: mail/mail-local.c:789
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr "\"%s\" mappa átalakítása \"%s\" formátumra"
-
-#: mail/mail-local.c:812
-msgid "Reconfiguring folder"
-msgstr "Mappa újrabeállítása"
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:841
-msgid "Closing current folder"
-msgstr "Mappa bezárása folyamatban"
-
-#: mail/mail-local.c:873
-msgid "Renaming old folder and opening"
-msgstr "Régi mappa átnevezése és megnyitása"
-
-#: mail/mail-local.c:891
-msgid "Creating new folder"
-msgstr "Új mappa létrehozása"
-
-#: mail/mail-local.c:905
-msgid "Copying messages"
-msgstr "Levelek másolása"
-
-#: mail/mail-local.c:922
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-
-#: mail/mail-local.c:961
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-
-#: mail/mail-local.c:1047
-#, c-format
-msgid "Reconfigure %s"
-msgstr "%s újrabeállítása"
-
-#: mail/mail-mt.c:190
-#, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-
-#: mail/mail-mt.c:193
-#, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-"Hiba a mûvelet végrehajtása közben:\n"
-"%s"
-
-#: mail/mail-mt.c:516 mail/mail-mt.c:545 mail/mail-mt.c:880
-msgid "Working"
-msgstr ""
-
-#: mail/mail-mt.c:862
-msgid "Evolution progress"
-msgstr "Evolúció folyamatban"
-
-#: mail/mail-ops.c:599
-#, c-format
-msgid "Sending \"%s\""
-msgstr "'%s' küldése"
-
-#: mail/mail-ops.c:603
-msgid "Sending message"
-msgstr "Levél küldése"
-
-#: mail/mail-ops.c:718
-#, c-format
-msgid "Sending message %d of %d"
-msgstr "%d / %d üzenet küldése"
-
-#: mail/mail-ops.c:737
-#, c-format
-msgid "Failed on message %d of %d"
-msgstr "Hiba a %d / %d üzenetnél"
-
-#: mail/mail-ops.c:739 mail/mail-send-recv.c:475
-msgid "Complete."
-msgstr "Kész."
-
-#: mail/mail-ops.c:825
-msgid "Saving message to folder"
-msgstr "Levél mentése a mappába"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Moving messages to %s"
-msgstr "Levelek mozgatása %s-be"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Copying messages to %s"
-msgstr "Levelek másolása %s-be"
-
-#: mail/mail-ops.c:914
-msgid "Moving"
-msgstr "Mozgatás alatt"
-
-#: mail/mail-ops.c:917
-msgid "Copying"
-msgstr "Másolás alatt"
-
-#: mail/mail-ops.c:992
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr "Mappák pásztázása \"%s\"-ben"
-
-#: mail/mail-ops.c:1154
-msgid "Forwarded messages"
-msgstr "Továbbított levelek"
-
-#: mail/mail-ops.c:1195 mail/mail-ops.c:1333
-#, c-format
-msgid "Opening folder %s"
-msgstr "%s mappa megnyitása"
-
-#: mail/mail-ops.c:1262
-#, c-format
-msgid "Opening store %s"
-msgstr "%s tároló megnyitása"
-
-#: mail/mail-ops.c:1449
-msgid "Expunging folder"
-msgstr "Mappa tisztítása"
-
-#: mail/mail-ops.c:1498
-#, c-format
-msgid "Retrieving message %s"
-msgstr "%s levél letöltése"
-
-#: mail/mail-ops.c:1565
-msgid "Retrieving messages"
-msgstr "Levelek letöltése"
-
-#: mail/mail-ops.c:1575
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr "%d / %d számú levél letöltése (uid \"%s\")"
-
-#: mail/mail-ops.c:1649
-msgid "Saving messages"
-msgstr "Levelek mentése"
-
-#: mail/mail-ops.c:1728
-#, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr ""
-"Nem sikerült létrehozni a kimeneti fájlt: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1741
-#, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr "%d / %d levél mentése (uid \"%s\")"
-
-#: mail/mail-ops.c:1755
-#, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr ""
-"Hiba a levelek mentése közben: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1829
-msgid "Saving attachment"
-msgstr "Csatolás mentése"
-
-#: mail/mail-ops.c:1844
-#, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr ""
-"Nem lehet létrehozni a kimeneti fájlt: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1872
-#, c-format
-msgid "Could not write data: %s"
-msgstr "Nem sikerült az adatok kiírása: %s"
-
-#: mail/mail-ops.c:1939
-#, c-format
-msgid "Disconnecting from %s"
-msgstr "Szétkapcsolódás %s kiszolgálóval"
-
-#: mail/mail-search.c:138
-msgid "(Untitled Message)"
-msgstr "(Névtelen levél)"
-
-#: mail/mail-search.c:268
-msgid "Find in Message"
-msgstr "Keresés a levélben"
-
-#: mail/mail-search.c:298
-msgid "Case Sensitive"
-msgstr "Kis- és nagybetûk megkülönböztetése"
-
-#: mail/mail-search.c:299
-msgid "Search Forward"
-msgstr "Keresés elõre"
-
-#: mail/mail-search.c:316
-msgid "Find:"
-msgstr "Keresés:"
-
-#: mail/mail-search.c:319
-msgid "Matches:"
-msgstr "Találatok:"
-
-#: mail/mail-search-dialogue.c:113
-msgid "_Search"
-msgstr "_Keresés"
-
-#: mail/mail-send-recv.c:138
-msgid "Cancelling..."
-msgstr "Megszakítás..."
-
-#: mail/mail-send-recv.c:233
-msgid "Send & Receive mail"
-msgstr "Levelek küldése és fogadása"
-
-#: mail/mail-send-recv.c:236
-msgid "Receiving"
-msgstr "Fogadás"
-
-#: mail/mail-send-recv.c:285
-msgid "Updating..."
-msgstr "Frissítés folyamatban..."
-
-#: mail/mail-send-recv.c:287 mail/mail-send-recv.c:333
-msgid "Waiting..."
-msgstr "Várakozás..."
-
-#: mail/mail-send-recv.c:306
-msgid "Sending"
-msgstr "Küldés"
-
-#: mail/mail-send-recv.c:471
-msgid "Cancelled."
-msgstr "Megszakítva"
-
-#: mail/mail-summary.c:110
-msgid "Incomplete message written on pipe!"
-msgstr "Nem teljes üzenet lett a csõbe írva!"
-
-#: mail/mail-summary.c:468
-msgid "Mail Summary"
-msgstr "Összegzés a levelekrõl"
-
-#: mail/mail-tools.c:145
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr "Nem sikerült létrehozni '%s' ideiglenes mbox-ot: %s"
-
-#: mail/mail-tools.c:192
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr "[%s] (továbbított üzenet)"
-
-#: mail/mail-tools.c:202
-msgid "Fwd: (no subject)"
-msgstr "Fwd: (tárgy nélkül)"
-
-#: mail/mail-tools.c:219
-#, c-format
-msgid "Forwarded message - %s"
-msgstr "Továbbított üzenet - %s"
-
-#: mail/mail-tools.c:221
-msgid "Forwarded message (no subject)"
-msgstr "Továbbított üzenet (tárgy nélkül)"
-
-#: mail/mail-tools.c:428
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-msgstr ""
-"-----Továbbított üzenet-----<br><b>Feladó:</b> %s<br><b>Címzett:</b> "
-"%s<br><b>Tárgy:</b> %s<br>"
-
-#: mail/mail-vfolder.c:249
-msgid "VFolders"
-msgstr "VMappák"
-
-#: mail/mail-vfolder.c:438
-msgid "New VFolder"
-msgstr "Új VMappa"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/message-browser.c:188 ui/evolution-mail.xml.h:70
-msgid "Reply"
-msgstr "Válasz"
-
-#: mail/message-browser.c:188
-msgid "Reply to the sender of this message"
-msgstr "Válasz küldése a feladónak erre a levélre"
-
-#: mail/message-browser.c:191 ui/evolution-mail.xml.h:71
-msgid "Reply to All"
-msgstr "Válasz mindenkinek"
-
-#: mail/message-browser.c:191
-msgid "Reply to all recipients of this message"
-msgstr "Válasz a feladónak és az összes címzettnek"
-
-#: mail/message-browser.c:194 ui/evolution-mail.xml.h:33
-msgid "Forward"
-msgstr "Továbbítás"
-
-#: mail/message-browser.c:194
-msgid "Forward this message"
-msgstr "A levél továbbítása"
-
-#: mail/message-browser.c:199
-msgid "Print the selected message"
-msgstr "A levél nyomtatása"
-
-#: mail/message-browser.c:202
-msgid "Delete this message"
-msgstr "A levél törlése"
-
-#: mail/message-browser.c:207 ui/evolution-event-editor.xml.h:33
-#: ui/evolution-mail.xml.h:64 ui/evolution-task-editor-dialog.xml.h:36
-msgid "Previous"
-msgstr "Elõzõ"
-
-#: mail/message-browser.c:207
-msgid "Previous message"
-msgstr "Elõzõ levél"
-
-#: mail/message-browser.c:210 ui/evolution-calendar.xml.h:18
-#: ui/evolution-event-editor.xml.h:29 ui/evolution-mail.xml.h:57
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "Next"
-msgstr "Következõ"
-
-#: mail/message-browser.c:210
-msgid "Next message"
-msgstr "Következõ levél"
-
-#: mail/message-list.c:677
-msgid "Unseen"
-msgstr "Nem nézett"
-
-#: mail/message-list.c:678
-msgid "Seen"
-msgstr "Nézett"
-
-#: mail/message-list.c:679
-msgid "Answered"
-msgstr "Megválaszolt"
-
-#: mail/message-list.c:680
-msgid "Multiple Unseen Messages"
-msgstr "Több láthatatlan levél"
-
-#: mail/message-list.c:681
-msgid "Multiple Messages"
-msgstr "Több levél"
-
-#: mail/message-list.c:685
-msgid "Lowest"
-msgstr "Legalacsonyabb"
-
-#: mail/message-list.c:686
-msgid "Lower"
-msgstr "Alacsonyabb"
-
-#: mail/message-list.c:690
-msgid "Higher"
-msgstr "Magasabb"
-
-#: mail/message-list.c:691
-msgid "Highest"
-msgstr "Legmagasabb"
-
-#: mail/message-list.c:941
-msgid "?"
-msgstr "?"
-
-#: mail/message-list.c:948
-msgid "Today %l:%M %p"
-msgstr "Ma %l:%M %p"
-
-#: mail/message-list.c:957
-msgid "Yesterday %l:%M %p"
-msgstr "Tegnap %l:%M %p"
-
-#: mail/message-list.c:969
-msgid "%a %l:%M %p"
-msgstr "%a %l:%M %p"
-
-#: mail/message-list.c:977
-msgid "%b %d %l:%M %p"
-msgstr "%d %b %l:%M %p"
-
-#: mail/message-list.c:979
-msgid "%b %d %Y"
-msgstr "%Y %d %b"
-
-#: mail/message-list.c:1081
-msgid "Flagged"
-msgstr "Megjelölt"
-
-#: mail/message-list.c:1082
-msgid "Received"
-msgstr "Érkezett"
-
-#: mail/message-list.c:1083
-msgid "Size"
-msgstr "Méret"
-
-#: mail/mail-session.c:161
-msgid "User canceled operation."
-msgstr "A felhasználó megszakította a mûveletet."
-
-#: mail/subscribe-dialog.c:76 shell/e-storage-set-view.c:48
-msgid "Folder"
-msgstr "Mappa"
-
-#: mail/subscribe-dialog.c:77
-msgid "Store"
-msgstr "Tároló"
-
-#: mail/subscribe-dialog.c:138
-msgid "Display folders starting with:"
-msgstr "Az ezzel kezdõdõ mappák megjelenítése:"
-
-#: mail/subscribe-dialog.c:168
-#, fuzzy, c-format
-msgid "Getting store for \"%s\""
-msgstr "_Induláshoz"
-
-#: mail/subscribe-dialog.c:271
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr "Feliratkozás \"%s\" mappára"
-
-#: mail/subscribe-dialog.c:273
-#, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr "Leiratkozás \"%s\" mappáról"
-
-#. Construct the app
-#: mail/subscribe-dialog.c:873
-msgid "Manage Subscriptions"
-msgstr "Elõfizetések kezelése"
-
-#: shell/e-setup.c:118 shell/e-setup.c:191
-msgid "Evolution installation"
-msgstr "Evolúció telepítés"
-
-#: shell/e-setup.c:122
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-"Az Evolúciónak ez az új verziója további fájlokat fog telepíteni\n"
-"a személyes Evolúció könyvtáradba"
-
-#: shell/e-setup.c:123
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr ""
-"Nyomd meg az \"OK\" gombot a fájlok telepítéséhez, vagy a \"Mégse\" gombot a "
-"kilépéshez."
-
-#: shell/e-setup.c:163
-msgid "Could not update files correctly"
-msgstr "Nem sikerült rendesen frissíteni a fájlokat."
-
-#: shell/e-setup.c:166 shell/e-setup.c:234
-msgid "Evolution files successfully installed."
-msgstr "Az Evolúció fájljai sikeresen települtek."
-
-#: shell/e-setup.c:195
-msgid "This seems to be the first time you are running Evolution."
-msgstr "Úgy látszik, elsõ alkalommal futtatod az Evolúciót."
-
-#: shell/e-setup.c:196
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr ""
-"Nyomd meg az \"OK\" gombot az Evolúció felhasználói fájljainak telepítéséhez"
-
-#: shell/e-setup.c:215
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"Nem tudom létrehozni a könyvtárat\n"
-"%s\n"
-"Hiba: %s"
-
-#: shell/e-setup.c:230
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-"Nem tudom másolni a fájlokat\n"
-"'%s'-be."
-
-#: shell/e-setup.c:255
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-"Az '%s' fájl nem egy könyvtár.\n"
-"Kérlek mozgasd el a fájlt, hogy az Evolúció\n"
-"települni tudjon."
-
-#: shell/e-setup.c:267
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-"Az '%s' könyvtár létezik.\n"
-"Kérlek töröld a fájlt, hogy az Evolúció\n"
-"települni tudjon."
-
-#: shell/e-shell.c:392
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr "Nem tudom beállítani a helyi tárterületet -- %s"
-
-#: shell/e-shell.c:1272
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-"Hoppá! Az '%s' nézet váratlanul meghalt. :-(\n"
-"Ez valószínûleg azt jelenti, hogy a %s komponens összeomlott."
-
-#: shell/e-shell-folder-commands.c:238
-#, c-format
-msgid "Specify a folder to copy folder \"%s\" into:"
-msgstr ""
-
-#: shell/e-shell-folder-commands.c:243
-msgid "Copy folder"
-msgstr "Mappa másolása"
-
-#: shell/e-shell-folder-commands.c:280
-#, c-format
-msgid "Specify a folder to move folder \"%s\" into:"
-msgstr ""
-
-#: shell/e-shell-folder-commands.c:285
-msgid "Move folder"
-msgstr "Mappa mozgatása"
-
-#: shell/e-shell-folder-creation-dialog.c:99
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-"Nem tudom elkészíteni a megadott mappát:\n"
-"%s"
-
-#: shell/e-shell-folder-creation-dialog.c:156
-msgid "The specified folder name is not valid."
-msgstr "A megadott mappanév nem jó."
-
-#: shell/e-shell-folder-creation-dialog.c:263
-msgid "Evolution - Create new folder"
-msgstr "Evolúció - Új mappa készítése"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-"A kiválasztott mappa típusa nem jó a megadott\n"
-"mûvelethez."
-
-#: shell/e-shell-folder-selection-dialog.c:328
-msgid "New..."
-msgstr "Új..."
-
-#: shell/e-shell-folder-title-bar.c:459 shell/e-shell-folder-title-bar.c:460
-msgid "(Untitled)"
-msgstr "(Névtelen)"
-
-#: shell/e-shell-importer.c:97
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-"Válaszd ki az Evolúcióba importálandó fájlt, és jelöld ki a típusát a "
-"listából.\n"
-"\n"
-"Választhatod az \"Automatikus\" lehetõséget, ha nem tudod a típust, az "
-"Evolúció megpróbálja felismerni."
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/e-shell-importer.c:192
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-"%s importálása\n"
-"Az importáló nem felel.\n"
-"Próbálkozás 5 másodperc múlva."
-
-#: shell/e-shell-importer.c:212 shell/e-shell-importer.c:243
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-"%s importálása\n"
-"%d. elem importálása."
-
-#: shell/e-shell-importer.c:353
-#, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr ""
-"Nincs olyan importáló, amely képes lenne kezelni\n"
-"%s-t"
-
-#: shell/e-shell-importer.c:363
-msgid "Importing"
-msgstr "Importálás folyamatban"
-
-#: shell/e-shell-importer.c:371
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-"%s importálása.\n"
-"%s indítása"
-
-#: shell/e-shell-importer.c:384
-#, c-format
-msgid "Error starting %s"
-msgstr "Hiba %s indításakor"
-
-#: shell/e-shell-importer.c:404
-#, c-format
-msgid "Error loading %s"
-msgstr "Hiba %s betöltésekor"
-
-#: shell/e-shell-importer.c:419
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-"%s importálása\n"
-"1. elem importálása."
-
-#: shell/e-shell-importer.c:490
-msgid "Automatic"
-msgstr "Automatikus"
-
-#: shell/e-shell-importer.c:540
-msgid "Filename:"
-msgstr "Fájlnév:"
-
-#: shell/e-shell-importer.c:545 shell/importer/import.glade.h:5
-msgid "Select a file"
-msgstr "Válassz egy fájlt"
-
-#: shell/e-shell-importer.c:555
-msgid "File type:"
-msgstr "Fájltípus:"
-
-#: shell/e-shell-importer.c:601
-msgid "Select folder"
-msgstr "Válassz mappát"
-
-#: shell/e-shell-importer.c:602
-msgid "Select a destination folder for importing this data"
-msgstr ""
-
-#: shell/e-shell-offline-handler.c:554
-msgid "Closing connections..."
-msgstr "Kapcsolatok bezárása..."
-
-#: shell/e-shell-view.c:166
-msgid "(No folder displayed)"
-msgstr "(Nem jeleníthetõ meg a mappa)"
-
-#: shell/e-shell-view.c:1317
-#, c-format
-msgid "%s - Evolution %s"
-msgstr "%s - Evolúció %s"
-
-#: shell/e-shell-view.c:1319
-#, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "%s - Evolúció %s [%s]"
-
-#: shell/e-shell-view.c:1357
-msgid "Evolution is currently online. Click on this button to work offline."
-msgstr ""
-
-#: shell/e-shell-view.c:1364
-msgid "Evolution is in the process of going offline."
-msgstr ""
-
-#: shell/e-shell-view.c:1370
-msgid "Evolution is currently offline. Click on this button to work online."
-msgstr ""
-
-#: shell/e-shell-view-menu.c:179
-msgid "Bug buddy was not found in your $PATH."
-msgstr "Bug buddy nem található a $PATH-odban."
-
-#: shell/e-shell-view-menu.c:185
-msgid "Bug buddy could not be run."
-msgstr "A Bug buddy-t nem tudom futtatni."
-
-#: shell/e-shell-view-menu.c:230
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Copyright 1999, 2000, 2001 Ximian, Inc."
-
-#: shell/e-shell-view-menu.c:232
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-"Az Evolúció egy munkacsoport program \n"
-"levelezéshez, naptár és címjegyzék funkciókkal\n"
-"a GNOME grafikus környezethez."
-
-#: shell/e-shell-view-menu.c:421
-msgid "Go to folder..."
-msgstr "Ugrás mappába..."
-
-#: shell/e-shell-view-menu.c:422
-msgid "Select the folder that you want to open"
-msgstr ""
-
-#: shell/e-shell-view-menu.c:602
-msgid "Work online"
-msgstr "Kapcsolat nélküli munka"
-
-#: shell/e-shell-view-menu.c:614 shell/e-shell-view-menu.c:626
-msgid "Work offline"
-msgstr "Kapcsolat nélküli munka"
-
-#: shell/e-shortcuts.c:381
-msgid "Error saving shortcuts."
-msgstr "Nem sikerül elmenteni az elemeket."
-
-#: shell/e-shortcuts-view.c:134
-msgid "Create new shortcut group"
-msgstr "Új indítóikon-csoport létrehozása"
-
-#: shell/e-shortcuts-view.c:137
-msgid "Group name:"
-msgstr "Csoport neve:"
-
-#: shell/e-shortcuts-view.c:260
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-"Tényleg eltávolítod '%s' csoportot\n"
-"az indítósávról?"
-
-#: shell/e-shortcuts-view.c:265
-msgid "Don't remove"
-msgstr "Ne távolítsa el"
-
-#: shell/e-shortcuts-view.c:276
-msgid "_Small Icons"
-msgstr "_Kis ikonok"
-
-#: shell/e-shortcuts-view.c:277
-msgid "Show the shortcuts as small icons"
-msgstr "Kis ikonok mutatása az elemeken"
-
-#: shell/e-shortcuts-view.c:279
-msgid "_Large Icons"
-msgstr "_Nagy ikonok"
-
-#: shell/e-shortcuts-view.c:280
-msgid "Show the shortcuts as large icons"
-msgstr "Nagy ikonok mutatása az elemeken"
-
-#: shell/e-shortcuts-view.c:291
-msgid "_New Group..."
-msgstr "Ú_j csoport..."
-
-#: shell/e-shortcuts-view.c:292
-msgid "Create a new shortcut group"
-msgstr "Új indítócsoport létrehozása"
-
-#: shell/e-shortcuts-view.c:294
-msgid "_Remove This Group..."
-msgstr "_Csoport eltávolítása..."
-
-#: shell/e-shortcuts-view.c:295
-msgid "Remove this shortcut group"
-msgstr "Indítócsoport eltávolítása az indítósávról"
-
-#: shell/e-shortcuts-view.c:300
-msgid "_Hide the Shortcut Bar"
-msgstr "Indítósáv el_rejtése"
-
-#: shell/e-shortcuts-view.c:301
-msgid "Hide the shortcut bar"
-msgstr "Indítósáv elrejtése"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate"
-msgstr "Aktiválás"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate this shortcut"
-msgstr "Az elem aktiválása"
-
-#: shell/e-shortcuts-view.c:388
-msgid "Remove this shortcut from the shortcut bar"
-msgstr "Vedd le ezt az elemet az indítósávról"
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr "(névtelen)"
-
-#: shell/e-storage.c:459
-msgid "No error"
-msgstr "Nincs hiba"
-
-#: shell/e-storage.c:461
-msgid "Generic error"
-msgstr "Általános hiba"
-
-#: shell/e-storage.c:463
-msgid "A folder with the same name already exists"
-msgstr "A megadott néven már létezik mappa"
-
-#: shell/e-storage.c:465
-msgid "The specified folder type is not valid"
-msgstr "A megadott mappatípus nem jó"
-
-#: shell/e-storage.c:467
-msgid "I/O error"
-msgstr "I/O hiba"
-
-#: shell/e-storage.c:469
-msgid "Not enough space to create the folder"
-msgstr "Nincs elég hely a mappa elkészítéséhez"
-
-#: shell/e-storage.c:471
-msgid "The specified folder was not found"
-msgstr "A megadott mappa nem található"
-
-#: shell/e-storage.c:473
-msgid "Function not implemented in this storage"
-msgstr "A funkció nincs még ebben a tárolóban megírva"
-
-#: shell/e-storage.c:475
-msgid "Permission denied"
-msgstr "Jogosultsági hiba"
-
-#: shell/e-storage.c:477
-msgid "Operation not supported"
-msgstr "A mûvelet nem támogatott"
-
-#: shell/e-storage.c:479
-msgid "The specified type is not supported in this storage"
-msgstr "A megadott típus nem támogatott ebben a tárolóban."
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-msgid "Folder name:"
-msgstr "Mappanév:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-msgid "Folder type:"
-msgstr "Mappatípus"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-msgid "Specify where to create the folder:"
-msgstr "Add meg, hogy hol hozod létre a mappát."
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-msgid "The Evolution shell."
-msgstr "Az Evolúció shell."
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr "A fájl importálásához kattints az \"Importálás\" gombra."
-
-#: shell/importer/import.glade.h:2
-msgid "Evolution Import Utility"
-msgstr "Evolúció importáló segédeszköz"
-
-#: shell/importer/import.glade.h:3
-msgid "Evolution Importer Utility"
-msgstr "Evolúció importáló segédeszköz"
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-"Üdvözöllek az Evolúció importáló segédeszközében.\n"
-"Ez a varázsló végigvezet a külsõ fájlok Evolúcióba \n"
-"importálásának folyamatán."
-
-#: shell/importer/intelligent.c:186
-msgid "Importers"
-msgstr "Importálók"
-
-#: shell/main.c:82
-#, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-"Szia! Köszönjük, hogy letöltötted az Evolúció csoportmunka-szoftver\n"
-"fejlesztõi verzióját.\n"
-"\n"
-"Az Evolúció még nincs kész. Már közel van a befejezéshez, de vannak\n"
-"olyan részek, amelyek hiányoznak vagy csak félig mûködnek. Ha nagyon\n"
-"nem tudod kitalálni, hogy mûködik valami, az valószínûleg azért van,\n"
-"mert még nincs is ilyen funkció! :-) \n"
-"\n"
-"Reméljük, hogy az Evolúció használható lesz számodra, de úgy érezzük,\n"
-"nem árt ha tudod: a program lefagyhat, elveszítheti a leveleidet, kósza\n"
-"folyamatokat hagyhat futni, megeheti a teljes CPU-idõdet, nem szabványos\n"
-"parancsokat küldhet a kiszolgálódnak, egyszóval lejárathat a munkatársaid \n"
-"és a barátaid elõtt. Használd a saját felelõsségedre.\n"
-"\n"
-"Reméljük, élvezni fogod a kemény munkánk eredményét, és várjuk\n"
-"hozzájárulásod! \n"
-
-#: shell/main.c:107
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-"Köszönettel\n"
-"Az Evolúció Csapat\n"
-
-#: shell/main.c:138
-msgid "Cannot initialize the Evolution shell."
-msgstr "Nem tudom elindítani az Evolúció shell-t."
-
-#: shell/main.c:184
-msgid "Disable splash screen"
-msgstr "Indítóképernyõ letiltása"
-
-#: shell/main.c:185
-msgid "Send the debugging output of all components to a file."
-msgstr "Minden összetevõ hibakeresõ üzeneteit fájlba irányítja."
-
-#: shell/main.c:217
-msgid "Cannot initialize the Bonobo component system."
-msgstr "Nem tudom elindítani a Bonobo komponens rendszert."
-
-#: ui/evolution-addressbook.xml.h:1
-msgid "Create new contact"
-msgstr "Új névjegy készítése"
-
-#: ui/evolution-addressbook.xml.h:3
-msgid "Delete a contact"
-msgstr "Névjegy törlése"
-
-#: ui/evolution-addressbook.xml.h:4
-msgid "New contact"
-msgstr "Új névjegy"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-mail.xml.h:63
-msgid "Previews the message to be printed"
-msgstr "Elõnézeti képet ad a nyomtatandó levélrõl"
-
-#: ui/evolution-addressbook.xml.h:8
-msgid "Print contacts"
-msgstr "Névjegyek nyomtatása"
-
-#: ui/evolution-addressbook.xml.h:9
-msgid "Stop"
-msgstr "Leállítás"
-
-#: ui/evolution-addressbook.xml.h:10
-msgid "Stop Loading"
-msgstr "Betöltés leállítása"
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "View All"
-msgstr "Mindet megjeleníti"
-
-#: ui/evolution-addressbook.xml.h:12
-msgid "View all contacts"
-msgstr "Az összes névjegy megjelenítése"
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "_Addressbook Sources..."
-msgstr "_Címjegyzék forrásai..."
-
-#: ui/evolution-addressbook.xml.h:14
-msgid "_Contact"
-msgstr "_Névjegyek"
-
-#: ui/evolution-addressbook.xml.h:15 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-msgid "_Print..."
-msgstr "_Nyomtatás..."
-
-#: ui/evolution-addressbook.xml.h:16
-msgid "_Search for contacts"
-msgstr "_Névjegy keresése"
-
-#: ui/evolution-addressbook.xml.h:17 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-task-editor-dialog.xml.h:88
-#: ui/evolution.xml.h:64
-msgid "_Tools"
-msgstr "_Eszközök"
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr "5 nap"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-msgid "Alter preferences"
-msgstr "Beállítások változtatása"
-
-#: ui/evolution-calendar.xml.h:4
-msgid "Create a new all day Event"
-msgstr "Új mindennapos esemémy létrehozása"
-
-#: ui/evolution-calendar.xml.h:5
-msgid "Create a new appointment"
-msgstr "Új találkozó létrehozása"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr "Új naptár létrehozása"
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr "Nap"
-
-#: ui/evolution-calendar.xml.h:8
-msgid "Go To"
-msgstr "Ugrás"
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr "Ugrás az idõben visszafelé"
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go forward in time"
-msgstr "Ugrás az idõben elõre "
-
-#: ui/evolution-calendar.xml.h:11
-msgid "Go to _Date"
-msgstr "_Dátumra ugrás"
-
-#: ui/evolution-calendar.xml.h:12
-msgid "Go to _Today"
-msgstr "Ugrás a _mai napra"
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr "Ugrás adott dátumra"
-
-#: ui/evolution-calendar.xml.h:14
-msgid "Go to present time"
-msgstr "Ugrás a jelenre"
-
-#: ui/evolution-calendar.xml.h:15
-msgid "Month"
-msgstr "Hónap"
-
-#: ui/evolution-calendar.xml.h:17
-msgid "New _Event"
-msgstr "Új _esemény"
-
-#: ui/evolution-calendar.xml.h:20
-msgid "Open Calendar"
-msgstr "Naptár megnyitása"
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Prev"
-msgstr "Elõzõ"
-
-#: ui/evolution-calendar.xml.h:22
-msgid "Previews the calendar to be printed"
-msgstr "A nyomtatandó naptár nyomtatási képe"
-
-#: ui/evolution-calendar.xml.h:25
-msgid "Print calendar"
-msgstr "Naptár nyomtatása"
-
-#: ui/evolution-calendar.xml.h:26
-msgid "Print this Calendar"
-msgstr "Naptár nyomtatása"
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:18
-msgid "Save As"
-msgstr "Mentés másként"
-
-#: ui/evolution-calendar.xml.h:28
-msgid "Save calendar as something else"
-msgstr "Naptás mentése másként"
-
-#: ui/evolution-calendar.xml.h:30
-msgid "Show 1 day"
-msgstr "1 nap mutatása"
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr "1 hónap mutatása"
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr "1 hét mutatása"
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr "A munkahét mutatása"
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:229
-#: widgets/misc/e-dateedit.c:424
-msgid "Today"
-msgstr "Ma"
-
-#: ui/evolution-calendar.xml.h:35
-msgid "W_ork Week"
-msgstr "M_unkahét"
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr "Hét"
-
-#: ui/evolution-calendar.xml.h:37
-msgid "_Appointment"
-msgstr "_Találkozó"
-
-#: ui/evolution-calendar.xml.h:38
-msgid "_Day"
-msgstr "_Nap"
-
-#: ui/evolution-calendar.xml.h:39
-msgid "_Month"
-msgstr "_Hónap"
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:58
-msgid "_New"
-msgstr "Ú_j"
-
-#: ui/evolution-calendar.xml.h:41
-msgid "_Open Calendar"
-msgstr "_Naptár megnyitása"
-
-#: ui/evolution-calendar.xml.h:45
-msgid "_Week"
-msgstr "_Hét"
-
-#: ui/evolution-contact-editor.xml.h:2
-msgid "Delete this item"
-msgstr "Elem törlése"
-
-#: ui/evolution-contact-editor.xml.h:3
-msgid "Delete..."
-msgstr "Törlés..."
-
-#: ui/evolution-contact-editor.xml.h:4
-msgid "Help"
-msgstr "Súgó"
-
-#: ui/evolution-contact-editor.xml.h:5
-msgid "Print En_velope..."
-msgstr "_Boríték nyomtatása..."
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-msgid "Print this item"
-msgstr "Elem nyomtatása"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:41
-msgid "Print..."
-msgstr "Nyomtatás..."
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:19
-#: ui/evolution-task-editor-dialog.xml.h:51
-msgid "Save _As..."
-msgstr "M_entés másként..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-msgid "Save and Close"
-msgstr "Mentés és bezárás"
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr "A névjegy mentése és a párbeszédablak bezárása "
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr "Névjegy küldése másnak..."
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr "A beépített súgó megtekintése"
-
-#: ui/evolution-contact-editor.xml.h:13
-msgid "Send _message to contact..."
-msgstr "Ü_zenet küldése a névjegy tulajdonosának..."
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:46 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:49
-msgid "_File"
-msgstr "_Fájl"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:53
-#: ui/evolution-task-editor-dialog.xml.h:85
-msgid "_Save"
-msgstr "_Mentés"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr "Az alkalmazás névjegye"
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr "Névjegy..."
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-msgid "Actio_ns"
-msgstr "_Mûveletek"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-msgid "Address _Book... (FIXME)"
-msgstr "FIXME: _Betûtípus..."
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-msgid "C_lear"
-msgstr "Tör_lés"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-msgid "C_ut"
-msgstr "K_ivágás"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-msgid "Chec_k Names (FIXME)"
-msgstr "Névellenõr_zés (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-msgid "Clear"
-msgstr "Törlés"
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-msgid "Clear the selection"
-msgstr "Kijelölés törlése"
-
-#: ui/evolution-event-editor.xml.h:11
-msgid "Close this appointment"
-msgstr "A megbeszélés bezárása"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "Másolás m_appába... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:8
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "Másolás"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-msgid "Copy the selection"
-msgstr "Kijelölés másolása"
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr "Kivágás"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Cut the selection"
-msgstr "Kijelölés kivágása"
-
-#: ui/evolution-event-editor.xml.h:18
-msgid "Delete this appointment"
-msgstr "A találkozó törlése"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr "Elsõ e_lem a mappában (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-msgid "For_ward (FIXME)"
-msgstr "Továbbítás (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr "Továbbítás v_Naptárként (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-msgid "Go to the next item"
-msgstr "Következõ elemre ugrás"
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-msgid "Go to the previous item"
-msgstr "Az elõzõ elemre ugrás"
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-msgid "In_complete Task (FIXME)"
-msgstr "Befe_jezetlen feladat (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-msgid "Modify the file's properties"
-msgstr "Fájl tulajdonságainak módosítása"
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-msgid "N_ext"
-msgstr "Kö_vetkezõ"
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-msgid "Paste"
-msgstr "Beillesztés"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-msgid "Paste the clipboard"
-msgstr "Vágólap beillesztése"
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr "E_lõzõ"
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-msgid "Print Pre_view"
-msgstr "Nyomtatási _kép"
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-msgid "Print S_etup..."
-msgstr "N_yomtatási beállítások..."
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-msgid "Print Setup"
-msgstr "Nyomtatási beállítások"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:17
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:241
-msgid "Save"
-msgstr "Mentés"
-
-#: ui/evolution-event-editor.xml.h:43
-msgid "Save the appointment and close the dialog box"
-msgstr "A találkozó mentése és a párbeszédablak bezárása"
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:23
-#: ui/evolution-task-editor-dialog.xml.h:53
-msgid "Save the current file"
-msgstr "Az aktuális fájl mentése"
-
-#: ui/evolution-event-editor.xml.h:46
-msgid "Schedule _Meeting"
-msgstr "Értekezlet _tervezése"
-
-#: ui/evolution-event-editor.xml.h:47
-msgid "Schedule some sort of a meeting"
-msgstr "Valamilyen értekezlet tervezése"
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-task-editor-dialog.xml.h:57
-msgid "Select All"
-msgstr "Mindet kijelöli"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-msgid "Select everything"
-msgstr "Mindet kijelöli"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr "Oldalbeállítás az aktuális nyomtatóhoz"
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-msgid "Task _Request (FIXME)"
-msgstr "_Felkérés feladatra (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-task-editor-dialog.xml.h:63
-msgid "_About..."
-msgstr "_Névjegy..."
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:43
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:43
-msgid "_Close"
-msgstr "_Bezárás"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:44
-msgid "_Contact (FIXME)"
-msgstr "_Névjegy (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-msgid "_Copy"
-msgstr "_Másolás"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:44
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr "_Hibakövetés"
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:48
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:53
-msgid "_Help"
-msgstr "_Súgó"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-msgid "_Item (FIXME)"
-msgstr "_Elem (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-msgid "_Journal Entry (FIXME)"
-msgstr "_Naplóbejegyzés (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-msgid "_Last Item in Folder (FIXME)"
-msgstr "_Utolsó elem a mappában (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-msgid "_Mail Message (FIXME)"
-msgstr "_Levél (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-msgid "_Move to Folder... (FIXME)"
-msgstr "_Mappába mozgatás... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-msgid "_Note (FIXME)"
-msgstr "_Megjegyzés (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-msgid "_Paste"
-msgstr "_Beillesztés"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:115
-#: ui/evolution-task-editor-dialog.xml.h:83 ui/evolution.xml.h:60
-msgid "_Properties..."
-msgstr "_Tulajdonságok..."
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-msgid "_Select All"
-msgstr "_Mindet kijelöli"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:63
-msgid "_Task (FIXME)"
-msgstr "_Feladat (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-msgid "_Unread Item (FIXME)"
-msgstr "_Olvasatlan elem (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:76 ui/evolution-message-composer.xml.h:55
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:65
-msgid "_View"
-msgstr "_Nézet"
-
-#: ui/evolution-executive-summary.xml.h:1
-msgid "Add Service"
-msgstr "Szolgáltatás hozzáadása"
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr "Új szolgáltatás hozzáadása a Vezetõi összefoglalóhoz"
-
-#: ui/evolution-executive-summary.xml.h:3
-msgid "Create a new email"
-msgstr "Új levél írása"
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr "Vezetõi összefoglaló beállításai..."
-
-#: ui/evolution-executive-summary.xml.h:5
-msgid "New Mail"
-msgstr "Új levél"
-
-#: ui/evolution-mail.xml.h:1
-msgid "Apply filter rules to the selected messages"
-msgstr "Szûrõszabályok alkalmazása a kijelölt levelekre"
-
-#: ui/evolution-mail.xml.h:2
-msgid "Cancel"
-msgstr "Mégse"
-
-#: ui/evolution-mail.xml.h:3
-msgid "Cancel the current mail operation"
-msgstr "Megszakítja az aktuális levélmûveletet"
-
-#: ui/evolution-mail.xml.h:4
-msgid "Change the properties of this folder"
-msgstr "Mappa tulajdonságainak megváltoztatása"
-
-#: ui/evolution-mail.xml.h:5
-msgid "Compose"
-msgstr "Új levél"
-
-#: ui/evolution-mail.xml.h:6
-msgid "Compose a reply to all of the recipients of the selected message"
-msgstr "Válasz írása a kijelölt levél összes címzettjének"
-
-#: ui/evolution-mail.xml.h:7
-msgid "Compose a reply to the sender of the selected message"
-msgstr "Válasz írása a kijelölt levél feladójának"
-
-#: ui/evolution-mail.xml.h:9
-msgid "Copy selected messages to another folder"
-msgstr "A kijelölt levelek másolása másik mappába"
-
-#: ui/evolution-mail.xml.h:10
-msgid "Create _Virtual Folder From Message"
-msgstr "_Virtuális mappa gyártása levélbõl"
-
-#: ui/evolution-mail.xml.h:11
-msgid "Create a rule to filter messages from this sender"
-msgstr "Szabály alkotása, amely szûri az ettõl feladótól érkezõ leveleket"
-
-#: ui/evolution-mail.xml.h:12
-msgid "Create a rule to filter messages to these recipients"
-msgstr ""
-"Szabály alkotása, amely szûri az ezeknek a címzetteknek szóló leveleket"
-
-#: ui/evolution-mail.xml.h:13
-msgid "Create a rule to filter messages to this mailing list"
-msgstr ""
-"Szabály alkotása, amely szûri az erre a levelezõlistára érkezõ leveleket"
-
-#: ui/evolution-mail.xml.h:14
-msgid "Create a rule to filter messages with this subject"
-msgstr "Szabály alkotása, amely szûri az ilyen tárgyú leveleket"
-
-#: ui/evolution-mail.xml.h:15
-msgid "Create a virtual folder for these recipients"
-msgstr "Virtuális mappa létrehozása ezekre a címzettekre"
-
-#: ui/evolution-mail.xml.h:16
-msgid "Create a virtual folder for this mailing list"
-msgstr "Virtuális mappa létrehozása erre a levelezõlistára"
-
-#: ui/evolution-mail.xml.h:17
-msgid "Create a virtual folder for this sender"
-msgstr "Virtuális mappa létrehozása erre a feladóra"
-
-#: ui/evolution-mail.xml.h:18
-msgid "Create a virtual folder for this subject"
-msgstr "Virtuális mappa létrehozása erre a tárgyra"
-
-#: ui/evolution-mail.xml.h:19
-msgid "Create or edit mail accounts and other preferences"
-msgstr "Postafiókok létrehozása, szerkesztése és egyéb beállítások"
-
-#: ui/evolution-mail.xml.h:20
-msgid "Create or edit rules for filtering new mail"
-msgstr "Szabályok alkotása vagy szerkesztése új levelek szûrésére"
-
-#: ui/evolution-mail.xml.h:21
-msgid "Create or edit virtual folder definitions"
-msgstr "Virtuális mappák létrehozása vagy szerkesztése"
-
-#: ui/evolution-mail.xml.h:23
-msgid "Display the next message"
-msgstr "A következõ levél megjelenítése"
-
-#: ui/evolution-mail.xml.h:24
-msgid "Display the previous message"
-msgstr "Az elõzõ levél megjelenítése"
-
-#: ui/evolution-mail.xml.h:25
-msgid "Empty _Trash"
-msgstr "_Kuka ürítése"
-
-#: ui/evolution-mail.xml.h:26
-msgid "Filter on Mailing _List"
-msgstr "Szûrõ a _levelezési listára"
-
-#: ui/evolution-mail.xml.h:27
-msgid "Filter on Se_nder"
-msgstr "S_zûrõ a feladón"
-
-#: ui/evolution-mail.xml.h:28
-msgid "Filter on _Recipients"
-msgstr "Szûrõ a _címzettekre"
-
-#: ui/evolution-mail.xml.h:29
-msgid "Filter on _Subject"
-msgstr "Szûrõ a _tárgyra"
-
-#: ui/evolution-mail.xml.h:30
-msgid "Force images in HTML mail to be loaded"
-msgstr "Képek betöltésének kényszerítése HTML levelekben"
-
-#: ui/evolution-mail.xml.h:31
-msgid "Forget _Passwords"
-msgstr "_Jelszavak elfelejtése"
-
-#: ui/evolution-mail.xml.h:32
-msgid "Forget remembered passwords so you will be prompted for them again"
-msgstr "Elfelejti a megjegyzett jelszavakat, újra meg fogja kérdezni"
-
-#: ui/evolution-mail.xml.h:34
-msgid "Forward As"
-msgstr "Továbbítás mint"
-
-#: ui/evolution-mail.xml.h:35
-msgid "Forward _Attached"
-msgstr "Továbbítás _csatolásként"
-
-#: ui/evolution-mail.xml.h:36
-msgid "Forward _Inline"
-msgstr "Továbbítás _beágyazottként"
-
-#: ui/evolution-mail.xml.h:37
-msgid "Forward _Quoted"
-msgstr "Továbbítás _idézetként"
-
-#: ui/evolution-mail.xml.h:38
-msgid "Forward the selected message in the body of a new message"
-msgstr "A kijelölt levél továbbítása az új levél törzsében"
-
-#: ui/evolution-mail.xml.h:39
-msgid "Forward the selected message quoted like a reply"
-msgstr "A levél továbbítása idézetként, ahogy a válaszban szokás"
-
-#: ui/evolution-mail.xml.h:40
-msgid "Forward the selected message to someone"
-msgstr "A kijelölt levél továbbítása valakinek"
-
-#: ui/evolution-mail.xml.h:41
-msgid "Forward the selected message to someone as an attachment"
-msgstr "A kijelölt levél továbbítása valakinek csatolásként"
-
-#: ui/evolution-mail.xml.h:42
-msgid "Hide S_elected Messages"
-msgstr "_Kijelölt levelek elrejtése"
-
-#: ui/evolution-mail.xml.h:43
-msgid "Hide _Deleted Messages"
-msgstr "_Törölt levelek elrejtése"
-
-#: ui/evolution-mail.xml.h:44
-msgid "Hide _Read messages"
-msgstr "_Olvasott levelek elrejtése"
-
-#: ui/evolution-mail.xml.h:45
-msgid ""
-"Hide deleted messages rather than displaying them with a line through them"
-msgstr ""
-"A törölt levelek elrejtése ahelyett, hogy vonallal áthúzottan jelenjenek meg"
-
-#: ui/evolution-mail.xml.h:46
-msgid "Load _Images"
-msgstr "_Képek betöltése"
-
-#: ui/evolution-mail.xml.h:47
-msgid "Manage _Subscriptions..."
-msgstr "_Elõfizetések kezelése"
-
-#: ui/evolution-mail.xml.h:48
-msgid "Mar_k As Read"
-msgstr "_Elolvasva"
-
-#: ui/evolution-mail.xml.h:49
-msgid "Mark All as R_ead"
-msgstr "Min_degyik elolvasva"
-
-#: ui/evolution-mail.xml.h:50
-msgid "Mark As U_nread"
-msgstr "_Olvasatlan"
-
-#: ui/evolution-mail.xml.h:51
-msgid "Mark all visible messages as read"
-msgstr "Az összes látható leveleket elolvasottnak jelöli meg"
-
-#: ui/evolution-mail.xml.h:52
-msgid "Mark the selected messages as having been read"
-msgstr "A kijelölt leveleket elolvasottnak jelöli meg"
-
-#: ui/evolution-mail.xml.h:53
-msgid "Mark the selected messages as not having been read"
-msgstr "A kijelölt leveleket olvasatlannak jelöli meg"
-
-#: ui/evolution-mail.xml.h:54
-msgid "Mark the selected messages for deletion"
-msgstr "A kijelölt leveleket törlésre jelöli ki"
-
-#: ui/evolution-mail.xml.h:55
-msgid "Move"
-msgstr "Mozgatás"
-
-#: ui/evolution-mail.xml.h:56
-msgid "Move selected messages to another folder"
-msgstr "A kijelölt levelek mozgatása egy másik mappába"
-
-#: ui/evolution-mail.xml.h:58
-msgid "Open a window for composing a mail message"
-msgstr "Ablak megnyitása levélíráshoz"
-
-#: ui/evolution-mail.xml.h:59
-msgid "Open the selected message in a new window"
-msgstr "Az kijelölt levél megnyitása új ablakban"
-
-#: ui/evolution-mail.xml.h:60
-msgid "Open the selected message in the composer to re-send it"
-msgstr "A kijelölt levél megnyitása a szerkesztõben újraküldés céljából"
-
-#: ui/evolution-mail.xml.h:61
-msgid "Permanently remove all deleted messages from all folders"
-msgstr "Minden törölt levél végleges eltávolítása az összes mappából"
-
-#: ui/evolution-mail.xml.h:62
-msgid "Permanently remove all deleted messages from this folder"
-msgstr "Minden törölt levél végleges eltávolítása ebbõl a mappából"
-
-#: ui/evolution-mail.xml.h:66
-msgid "Print Message..."
-msgstr "Levél nyomtatása..."
-
-#: ui/evolution-mail.xml.h:67
-msgid "Print Preview..."
-msgstr "Nyomtatási kép..."
-
-#: ui/evolution-mail.xml.h:68
-msgid "Print message to the printer"
-msgstr "Levél nyomtatása a nyomtatón"
-
-#: ui/evolution-mail.xml.h:69
-msgid "Redirect (FIXME: implement me)"
-msgstr "Átirányítás (FIXME: nincs implementálva)"
-
-#: ui/evolution-mail.xml.h:73
-msgid "S_earch Message"
-msgstr "_Keresés a levélben"
-
-#: ui/evolution-mail.xml.h:74
-msgid "Save the message as a text file"
-msgstr "Levél mentése szövegfájlként"
-
-#: ui/evolution-mail.xml.h:75
-msgid "Search for text in the body of the displayed message"
-msgstr "Szöveg keresése a megjelenített levél törzsében"
-
-#: ui/evolution-mail.xml.h:76 ui/evolution-subscribe.xml.h:7
-msgid "Select _All"
-msgstr "Mindet _kijelöli"
-
-#: ui/evolution-mail.xml.h:77
-msgid "Select _Thread"
-msgstr "_Szál kijelölése"
-
-#: ui/evolution-mail.xml.h:78
-msgid "Select all and only the messages that are not currently selected"
-msgstr ""
-"Azoknak és csak azoknak a leveleknek a kijelölése, amelyek nincsenek "
-"jelenleg kijelölve"
-
-#: ui/evolution-mail.xml.h:79
-msgid "Select all messages in the same thread as the selected message"
-msgstr "A kijelölt levéllel azonos a szálba tartozó levelek kijelölése"
-
-#: ui/evolution-mail.xml.h:80
-msgid "Select all visible messages"
-msgstr "Az összes látható levél kijelölése"
-
-#: ui/evolution-mail.xml.h:81
-msgid "Send / Receive"
-msgstr "Küldés / Fogadás"
-
-#: ui/evolution-mail.xml.h:82
-msgid "Send queued mail and retrieve new mail"
-msgstr "Várakozó levelek elküldése és új levelek letöltése"
-
-#: ui/evolution-mail.xml.h:83
-msgid "Show Email _Source"
-msgstr "Levél forrásának mutatása"
-
-#: ui/evolution-mail.xml.h:84
-msgid "Show Full _Headers"
-msgstr "Teljes _fejléc mutatása"
-
-#: ui/evolution-mail.xml.h:85
-msgid "Show _All"
-msgstr "_Mindet mutatja"
-
-#: ui/evolution-mail.xml.h:86
-msgid "Show message in the normal style"
-msgstr "Levél megjelenítése a szokásos stílusban"
-
-#: ui/evolution-mail.xml.h:87
-msgid "Show message with all email headers"
-msgstr "Levél megjelenítése a teljes fejléccel"
-
-#: ui/evolution-mail.xml.h:88
-msgid "Show messages that have been temporarily hidden"
-msgstr "Az ideiglenesen elrejtett levelek mutatása"
-
-#: ui/evolution-mail.xml.h:89
-msgid "Show the raw email source of the message"
-msgstr "Levél nyers forrásának mutatása"
-
-#: ui/evolution-mail.xml.h:90
-msgid "Subscribe or unsubscribe to folders on remote servers"
-msgstr "Feliratkozás és leiratkozás távoli kiszolgálók mappáira"
-
-#: ui/evolution-mail.xml.h:91
-msgid "Temporarily hide all messages that have already been read"
-msgstr "Az elolvasott levelek ideiglenes elrejtése"
-
-#: ui/evolution-mail.xml.h:92
-msgid "Temporarily hide the selected messages"
-msgstr "A kijelölt levelek ideiglenes elrejtése"
-
-#: ui/evolution-mail.xml.h:93
-msgid "Threaded Message list"
-msgstr "Téma szerinti levéllista"
-
-#: ui/evolution-mail.xml.h:94
-msgid "Un-delete the selected messages"
-msgstr "A kijelölt levelek törlésének visszavonása"
-
-#: ui/evolution-mail.xml.h:95
-msgid "VFolder on Mailing _List..."
-msgstr "VMappa a _levelezõlistára..."
-
-#: ui/evolution-mail.xml.h:96
-msgid "VFolder on Se_nder..."
-msgstr "VMappa a _feladóra..."
-
-#: ui/evolution-mail.xml.h:97
-msgid "VFolder on _Recipients..."
-msgstr "VMappa a _címzettekre..."
-
-#: ui/evolution-mail.xml.h:98
-msgid "VFolder on _Subject..."
-msgstr "VMappa a _tárgyra..."
-
-#: ui/evolution-mail.xml.h:99
-msgid "Virtual Folder _Editor..."
-msgstr "Virtuális mappák szerkesztõje..."
-
-#: ui/evolution-mail.xml.h:100
-msgid "_Apply Filters"
-msgstr "_Szûrõk alkalmazása"
-
-#: ui/evolution-mail.xml.h:101
-msgid "_Copy to Folder"
-msgstr "_Másolás mappába"
-
-#: ui/evolution-mail.xml.h:102
-msgid "_Create Filter From Message"
-msgstr "Szûrõ _gyártása levélbõl"
-
-#: ui/evolution-mail.xml.h:104
-msgid "_Expunge"
-msgstr "_Tisztítás"
-
-#: ui/evolution-mail.xml.h:105
-msgid "_Filters..."
-msgstr "_Szûrõk..."
-
-#: ui/evolution-mail.xml.h:106 ui/evolution.xml.h:50
-msgid "_Folder"
-msgstr "_Mappa"
-
-#: ui/evolution-mail.xml.h:107
-msgid "_Forward Message"
-msgstr "Levél _továbbítása"
-
-#: ui/evolution-mail.xml.h:108 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr "Kijelölés meg_fordítása"
-
-#: ui/evolution-mail.xml.h:109
-msgid "_Mail Message"
-msgstr "_Levél"
-
-#: ui/evolution-mail.xml.h:110
-msgid "_Mail Settings..."
-msgstr "_Levelezõ beállításai"
-
-#: ui/evolution-mail.xml.h:111
-msgid "_Message Display"
-msgstr "Levél _megjelenítése"
-
-#: ui/evolution-mail.xml.h:112
-msgid "_Move to Folder"
-msgstr "M_ozgatás mappába"
-
-#: ui/evolution-mail.xml.h:113
-msgid "_Normal Display"
-msgstr "_Szokásos megjelenítés"
-
-#: ui/evolution-mail.xml.h:114
-msgid "_Open Message"
-msgstr "Levél _megnyitása"
-
-#: ui/evolution-mail.xml.h:116
-msgid "_Re-send Message"
-msgstr "Levél ú_jraküldése"
-
-#: ui/evolution-mail.xml.h:119
-msgid "_Send / Receive"
-msgstr "_Küldés / Fogadás"
-
-#: ui/evolution-mail.xml.h:120
-msgid "_Threaded Message List"
-msgstr "_Téma szerinti levéllista"
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr "Csatolás"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-msgid "Close the current file"
-msgstr "Aktuális fájl bezárása"
-
-#: ui/evolution-message-composer.xml.h:5
-msgid "Encrypt this message with PGP"
-msgstr "Levél titkosítása PGP-vel"
-
-#: ui/evolution-message-composer.xml.h:6
-msgid "Encrypt this message with your S/MIME Encryption Cetificate"
-msgstr "Levél titkosítása S/MIME titkosítási tanúsítvánnyal"
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "F_ormat"
-msgstr "F_ormátum"
-
-#: ui/evolution-message-composer.xml.h:8
-msgid "HTML"
-msgstr "HTML"
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert a file as text into the message"
-msgstr "Egy fájl beillesztése a levélbe szövegként"
-
-#: ui/evolution-message-composer.xml.h:10
-msgid "Insert text file..."
-msgstr "Szövegfájl beillesztése..."
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "Open a file"
-msgstr "Fájlmegnyitás"
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Encrypt"
-msgstr "PGP titkosítás"
-
-#: ui/evolution-message-composer.xml.h:14
-msgid "PGP Sign"
-msgstr "PGP aláírás"
-
-#: ui/evolution-message-composer.xml.h:15
-msgid "S/MIME Encrypt"
-msgstr "S/MIME titkosítás"
-
-#: ui/evolution-message-composer.xml.h:16
-msgid "S/MIME Sign"
-msgstr "S/MIME aláírás"
-
-#: ui/evolution-message-composer.xml.h:20
-msgid "Save _Draft"
-msgstr "_Piszkozat mentése"
-
-#: ui/evolution-message-composer.xml.h:21
-msgid "Save in _folder... (FIXME)"
-msgstr "Mentés m_appába... (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:22
-msgid "Save in folder..."
-msgstr "Mentés mappába..."
-
-#: ui/evolution-message-composer.xml.h:24
-msgid "Save the current file with a different name"
-msgstr "Az aktuális fájl mentése más néven"
-
-#: ui/evolution-message-composer.xml.h:25
-msgid "Save the message in a specified folder"
-msgstr "A levél mentése a megadott mappába"
-
-#: ui/evolution-message-composer.xml.h:26
-msgid "Send"
-msgstr "Küldés"
-
-#: ui/evolution-message-composer.xml.h:27
-msgid "Send _Later"
-msgstr "_Küldés késõbb"
-
-#: ui/evolution-message-composer.xml.h:28
-msgid "Send _later"
-msgstr "_Küldés késõbb"
-
-#: ui/evolution-message-composer.xml.h:29
-msgid "Send the mail in HTML format"
-msgstr "Levél küldése HTML formátumban"
-
-#: ui/evolution-message-composer.xml.h:30
-msgid "Send the message later"
-msgstr "A levél elküldése késõbb"
-
-#: ui/evolution-message-composer.xml.h:31
-msgid "Send this message now"
-msgstr "A levél elküldése most"
-
-#: ui/evolution-message-composer.xml.h:32
-msgid "Show / hide attachments"
-msgstr "Csatolás mutatása / elrejtése"
-
-#: ui/evolution-message-composer.xml.h:33
-msgid "Show _attachments"
-msgstr "Csatolások mutatása"
-
-#: ui/evolution-message-composer.xml.h:34
-msgid "Show attachments"
-msgstr "Csatolások mutatása"
-
-#: ui/evolution-message-composer.xml.h:35
-msgid "Sign this message with your PGP key"
-msgstr "A levél aláírása a PGP kulcsoddal"
-
-#: ui/evolution-message-composer.xml.h:36
-msgid "Sign this message with your S/MIME Signature Certificate"
-msgstr "A levél aláírása az S/MIME aláírástanúsítványoddal"
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the BCC field is displayed"
-msgstr "Megjelenjen-e a Titkos másolat mezõ"
-
-#: ui/evolution-message-composer.xml.h:38
-msgid "Toggles whether the CC field is displayed"
-msgstr "Megjelenjen-e a Másolat mezõ"
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "Toggles whether the From chooser is displayed"
-msgstr "Megjelenjen-e a Feladó kiválasztómezõ"
-
-#: ui/evolution-message-composer.xml.h:40
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr "Megjelenjen-e a Válaszcím mezõ"
-
-#: ui/evolution-message-composer.xml.h:41
-msgid "_Bcc Field"
-msgstr "_Titkos másolat mezõ"
-
-#: ui/evolution-message-composer.xml.h:42
-msgid "_Cc Field"
-msgstr "_Másolat mezõ"
-
-#: ui/evolution-message-composer.xml.h:47
-msgid "_From Field"
-msgstr "_Feladó mezõ"
-
-#: ui/evolution-message-composer.xml.h:49
-msgid "_Insert"
-msgstr "_Beillesztés"
-
-#: ui/evolution-message-composer.xml.h:50
-msgid "_Insert text file... (FIXME)"
-msgstr "_Szövegfájl beillesztése (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:51
-msgid "_Open..."
-msgstr "_Megnyitás..."
-
-#: ui/evolution-message-composer.xml.h:52
-msgid "_Reply-To Field"
-msgstr "_Válaszcím mezõ"
-
-#: ui/evolution-message-composer.xml.h:54
-msgid "_Security"
-msgstr "_Biztonság"
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr "Mappa hozzáadása az elõfizetett mappák listájához"
-
-#: ui/evolution-subscribe.xml.h:3
-msgid "F_older"
-msgstr "_Mappák"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr "Lista frissítése"
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr "Mappák listájának frissítése"
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr "Mappa eltávolítása az elõfizetett mappák listájából"
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr "Feliratkozás"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr "Leiratkozás"
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-msgid "Assig_n Task (FIXME)"
-msgstr "Feladat _kiosztása (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:23
-msgid "Find"
-msgstr "Keresés"
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr "Következõ találat"
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-msgid "Meeting Re_quest (FIXME)"
-msgstr "É_rtekezlet kérése (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-msgid "Redo"
-msgstr "Újra"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-msgid "Redo the undone action"
-msgstr "Újra végrehajtja a visszavont mûveletet"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-msgid "Replace"
-msgstr "Csere"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-msgid "Replace a string"
-msgstr "Karakterlánc cseréje"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-msgid "Reply to A_ll (FIXME)"
-msgstr "Válasz _mindenkinek (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-msgid "S_end Status Report (FIXME)"
-msgstr "Állapotjelentés küldése (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr "Elõfordulás á_tugrása (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-msgid "Save the task and close the dialog box"
-msgstr "Feladat mentése és a párbeszédablak bezárása"
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "Search again for the same string"
-msgstr "Keresés újra ugyanarra a karakterláncra"
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-msgid "Search for a string"
-msgstr "Keresés karakterláncra"
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr "Visszavonás"
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-msgid "Undo the last action"
-msgstr "Az utolsó mûvelet visszavonása"
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:42
-msgid "_Appointment (FIXME)"
-msgstr "_Találkozó (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-msgid "_Mark Complete (FIXME)"
-msgstr "Késznek jelöl"
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-msgid "_Reply (FIXME)"
-msgstr "_Válasz (FIXME)"
-
-#: ui/evolution-tasks.xml.h:2
-msgid "Create a new task"
-msgstr "Új feladat létrehozása"
-
-#: ui/evolution-tasks.xml.h:5
-msgid "New Task"
-msgstr "Új feladat"
-
-#: ui/evolution-tasks.xml.h:7
-msgid "Save task as something else"
-msgstr "Feladat mentése másként"
-
-#: ui/evolution-tasks.xml.h:8
-msgid "Tasks Preferences..."
-msgstr "Feladatok beállításai"
-
-#: ui/evolution-tasks.xml.h:12
-msgid "_Task"
-msgstr "_Feladat"
-
-#: ui/evolution.xml.h:1
-msgid "About Evolution..."
-msgstr "Evolúció névjegye..."
-
-#: ui/evolution.xml.h:2
-msgid "Add to _Shortcut Bar"
-msgstr "Hozzáadás az _indítósávhoz"
-
-#: ui/evolution.xml.h:3
-msgid "Change the name of this folder"
-msgstr "Mappa nevének megváltoztatása"
-
-#: ui/evolution.xml.h:4
-msgid "Change the properties for this folder"
-msgstr "Mappa tulajdonságainak megváltoztatása"
-
-#: ui/evolution.xml.h:6
-msgid "Close this window"
-msgstr "Ablak bezárása"
-
-#: ui/evolution.xml.h:7
-msgid "Copy this folder"
-msgstr "Mappa másolása"
-
-#: ui/evolution.xml.h:8
-msgid "Create _New Folder..."
-msgstr "Ú_j mappa létrehozása..."
-
-#: ui/evolution.xml.h:9
-msgid "Create a link to this folder in the shortcut bar"
-msgstr "Hivatkozás létrehozása ehhez a mappához az indítósávon"
-
-#: ui/evolution.xml.h:10
-msgid "Create a new folder"
-msgstr "Új mappa létrehozása"
-
-#: ui/evolution.xml.h:11
-msgid "Customi_ze Toolbars..."
-msgstr "Eszköztárak testres_zabása..."
-
-#: ui/evolution.xml.h:12
-msgid "Customize"
-msgstr "Testreszabás"
-
-#: ui/evolution.xml.h:13
-msgid "Customize toolbars"
-msgstr "Eszköztárak testreszabása"
-
-#: ui/evolution.xml.h:14
-msgid "Display a different folder"
-msgstr "Másik mappa megjelenítése"
-
-#: ui/evolution.xml.h:15
-msgid "E_xit"
-msgstr "_Kilépés"
-
-#: ui/evolution.xml.h:16
-msgid "Evolution _FAQ"
-msgstr "Evolúció _GYIK"
-
-#: ui/evolution.xml.h:17
-msgid "Evolution _Window"
-msgstr "Evolúció _ablak"
-
-#: ui/evolution.xml.h:18
-#, fuzzy
-msgid "Evolution bar _shortcut"
-msgstr "Evolúció naptár csatorna"
-
-#: ui/evolution.xml.h:19
-msgid "Exit the program"
-msgstr "Kilépés a programból"
-
-#: ui/evolution.xml.h:20
-msgid "Getting _Started"
-msgstr "_Kezdetek"
-
-#: ui/evolution.xml.h:21
-msgid "Import an external file format"
-msgstr "Külsõ fájlformátum importálása"
-
-#: ui/evolution.xml.h:22
-msgid "Main toolbar"
-msgstr "Fõ eszköztár"
-
-#: ui/evolution.xml.h:23
-msgid "Move this folder to another place"
-msgstr "Mappa mozgatása más helyre"
-
-#: ui/evolution.xml.h:24
-msgid "Open in New Window"
-msgstr "Megnyitás új ablakban"
-
-#: ui/evolution.xml.h:25
-msgid "Open in New _Window"
-msgstr "Megnyitás új _ablakban"
-
-#: ui/evolution.xml.h:26
-msgid "Open this folder in an other window"
-msgstr "A mappa megnyitása egy másik ablakban"
-
-#: ui/evolution.xml.h:27
-msgid "Show information about Evolution"
-msgstr "Az Evolúcióval kapcsolatos információk megjelenítése"
-
-#: ui/evolution.xml.h:28
-msgid "Submit Bug Report"
-msgstr "Hibajelentés beküldése"
-
-#: ui/evolution.xml.h:29
-msgid "Submit _Bug Report"
-msgstr "_Hibajelentés beküldése"
-
-#: ui/evolution.xml.h:30
-msgid "Submit bug report using Bug Buddy."
-msgstr "Hibajelentés beküldése a Bug Buddy segítségével."
-
-#: ui/evolution.xml.h:31
-msgid "Toggle"
-msgstr "Váltás"
-
-#: ui/evolution.xml.h:32
-msgid "Toggle whether to show the folder bar"
-msgstr "Mutassa-e a mappasávot"
-
-#: ui/evolution.xml.h:33
-msgid "Toggle whether to show the shortcut bar"
-msgstr "Mutassa-e indítósávot"
-
-#: ui/evolution.xml.h:34
-msgid "Toggle whether we are working offline."
-msgstr "Váltás kapcsolat nélküli munkára"
-
-#: ui/evolution.xml.h:35
-msgid "Using the C_ontact Manager"
-msgstr "A Névjegy_album használata"
-
-#: ui/evolution.xml.h:36
-msgid "Using the _Calendar"
-msgstr "A _Naptár használata"
-
-#: ui/evolution.xml.h:37
-msgid "Using the _Mailer"
-msgstr "A _Levelezõ használata"
-
-#: ui/evolution.xml.h:38
-msgid "View the selected folder"
-msgstr "A kijelölt mappák megtekintése"
-
-#: ui/evolution.xml.h:39
-msgid "Work Offline"
-msgstr "K_apcsolat nélküli munka"
-
-#: ui/evolution.xml.h:40
-msgid "_About Evolution..."
-msgstr "Evolúció _névjegye..."
-
-#: ui/evolution.xml.h:41
-msgid "_Actions"
-msgstr "_Mûveletek"
-
-#: ui/evolution.xml.h:45
-msgid "_Copy..."
-msgstr "_Másolás..."
-
-#: ui/evolution.xml.h:47
-msgid "_Delete this folder"
-msgstr "_Mappa törlése"
-
-#: ui/evolution.xml.h:51
-msgid "_Folder Bar"
-msgstr "_Mappasáv"
-
-#: ui/evolution.xml.h:52
-msgid "_Go to Folder..."
-msgstr "Mappára _ugrás..."
-
-#: ui/evolution.xml.h:54
-msgid "_Import file..."
-msgstr "Fájl _importálása..."
-
-#: ui/evolution.xml.h:55
-msgid "_Index"
-msgstr "_Tárgymutató"
-
-#: ui/evolution.xml.h:56
-msgid "_Mail message"
-msgstr "_Levél"
-
-#: ui/evolution.xml.h:57
-msgid "_Move..."
-msgstr "M_ozgatás..."
-
-#: ui/evolution.xml.h:59
-msgid "_New Folder"
-msgstr "Új _mappa"
-
-#: ui/evolution.xml.h:61
-msgid "_Rename..."
-msgstr "Á_tnevezés..."
-
-#: ui/evolution.xml.h:62
-msgid "_Shortcut Bar"
-msgstr "_Indítósáv"
-
-#: ui/evolution.xml.h:66
-msgid "_Work Offline"
-msgstr "K_apcsolat nélküli munka"
-
-#: views/addressbook/galview.xml.h:1
-msgid "Address Cards"
-msgstr "Címkártyák"
-
-#: views/addressbook/galview.xml.h:2
-msgid "By Company"
-msgstr "Cég szerint"
-
-#: views/addressbook/galview.xml.h:3
-msgid "Phone List"
-msgstr "Telefonlista"
-
-#: views/mail/galview.xml.h:1
-msgid "By Sender"
-msgstr "Feladó szerint"
-
-#: views/mail/galview.xml.h:2
-msgid "By Status"
-msgstr "Állapot szerint"
-
-#: views/mail/galview.xml.h:3
-msgid "By Subject"
-msgstr "Tárgy szerint"
-
-#: views/mail/galview.xml.h:4
-msgid "Messages"
-msgstr "Levelek"
-
-#: views/tasks/galview.xml.h:2
-msgid "With Category"
-msgstr "Kategóriákkal"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:392
-msgid "Tentative"
-msgstr "Kísérleti"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:393
-msgid "Busy"
-msgstr "Foglalt"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:394
-msgid "Out of Office"
-msgstr "Nincs bent"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:395
-msgid "No Information"
-msgstr "Nincs információ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:411
-msgid "_Invite Others..."
-msgstr "_Mások meghívása..."
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:431
-msgid "_Options"
-msgstr "_Beállítások"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:448
-msgid "Show _Only Working Hours"
-msgstr "Csak a _munkaórák mutatása"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:461
-msgid "Show _Zoomed Out"
-msgstr "_Nagyított mutatása"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:479
-msgid "_Update Free/Busy"
-msgstr "_Szabad/foglalt frissítése"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:497
-msgid "_<<"
-msgstr "_<<"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:514
-msgid "_Autopick"
-msgstr "_Automatikus kiszedés"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:528
-msgid ">_>"
-msgstr ">_>"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:545
-msgid "_All People and Resources"
-msgstr "_Minden ember és erõforrás"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:558
-msgid "All _People and One Resource"
-msgstr "Minden _ember és egy erõforrás"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:571
-msgid "_Required People"
-msgstr "_A kért emberek"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:584
-msgid "Required People and _One Resource"
-msgstr "A kért emberek és egy e_rõforrás"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:607
-msgid "Meeting _start time:"
-msgstr "Megbeszélés _kezdõdik:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:631
-msgid "Meeting _end time:"
-msgstr "Megbeszélés _vége:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:744
-msgid "All Attendees"
-msgstr "Minden meghívott"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:469
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2477
-msgid "%A, %B %d, %Y"
-msgstr "%Y %B %d, %A"
-
-#: widgets/menus/gal-view-menus.c:207
-msgid "_Current View"
-msgstr "_Aktuális nézet"
-
-#: widgets/menus/gal-view-menus.c:248
-msgid "Define Views"
-msgstr "Nézet megadása"
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:422
-msgid "MTWTFSS"
-msgstr "HKSCPSV"
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1061 widgets/misc/e-calendar-item.c:2756
-msgid "%B %Y"
-msgstr "%Y %B"
-
-#: widgets/misc/e-cell-date-edit.c:221 widgets/misc/e-dateedit.c:418
-msgid "Now"
-msgstr "Most"
-
-#: widgets/misc/e-cell-date-edit.c:245
-msgid "OK"
-msgstr "OK"
-
-#: widgets/misc/e-cell-date-edit.c:726
-#, c-format
-msgid "The time must be in the format: %s"
-msgstr "A idõt a következõ formában kell beírni: %s"
-
-#: widgets/misc/e-clipped-label.c:112
-msgid "..."
-msgstr "..."
-
-#: widgets/misc/e-filter-bar.c:168
-msgid "Save Search"
-msgstr "Keresés mentése"
-
-#: widgets/misc/e-filter-bar.c:239
-msgid "Advanced Search"
-msgstr "Haladó keresés"
-
-#: widgets/misc/e-filter-bar.h:101
-msgid "Save As..."
-msgstr "Mentés másként..."
-
-#: widgets/misc/e-filter-bar.h:102
-msgid "Show All"
-msgstr "Mutasd mind"
-
-#: widgets/misc/e-filter-bar.h:103
-msgid "Edit..."
-msgstr "Szerkesztés..."
-
-#: widgets/misc/e-filter-bar.h:104
-msgid "Advanced..."
-msgstr "Haladó..."
-
-#: widgets/misc/e-messagebox.c:152
-msgid "Information"
-msgstr "Információ"
-
-#: widgets/misc/e-messagebox.c:159
-msgid "Warning"
-msgstr "Figyelmeztetés"
-
-#: widgets/misc/e-messagebox.c:173
-msgid "Question"
-msgstr "Kérdés"
-
-#: widgets/misc/e-messagebox.c:180
-msgid "Message"
-msgstr "Üzenet"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:224
-msgid "Don't show this message again."
-msgstr "Ne jelenjen meg többé ez az üzenet."
-
-#: widgets/misc/e-search-bar.c:155
-msgid "Sear_ch"
-msgstr "_Keresés"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-msgid "The Personal Addressbook Server"
-msgstr "A Personal Addressbook Server"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr ""
-
-#: wombat/wombat.c:173
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr "setup_vfs(): nem sikerült a GNOME-VFS inicializálása"
-
-#: wombat/wombat.c:185
-msgid "init_corba(): could not initialize GNOME"
-msgstr "init_corba(): nem sikerült a GNOME inicializálása"
-
-#: wombat/wombat.c:198
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "init_bonobo(): a Bonobo inicializálása nem sikerült"
-
-#~ msgid "As _Minicards"
-#~ msgstr "_Kártyákként"
-
-#~ msgid "As _Table"
-#~ msgstr "_Táblázatként"
-
-#~ msgid "Find a contact"
-#~ msgstr "Névjegy keresése"
-
-#~ msgid "Mark Complete"
-#~ msgstr "Késznek jelöl"
-
-#~ msgid "Edit the task"
-#~ msgstr "Feladat szerkesztése"
-
-#, fuzzy
-#~ msgid "Remove the selected folder"
-#~ msgstr "A kijelölt mappák megtekintése"
-
-#~ msgid "_Remove"
-#~ msgstr "_Törlés"
-
-#~ msgid "label26"
-#~ msgstr "label26"
-
-#~ msgid "label21"
-#~ msgstr "label21"
-
-#~ msgid "label55"
-#~ msgstr "label55"
-
-#~ msgid "Compose a new message"
-#~ msgstr "Új levél írása"
-
-#~ msgid "Configure Folder..."
-#~ msgstr "Mappa beállításai..."
-
-#~ msgid "Copy message to a new folder"
-#~ msgstr "A levél másolása új mappába"
-
-#~ msgid "Display all of the message headers"
-#~ msgstr "A teljes fejléc megjelenítése"
-
-#~ msgid "Edit Message"
-#~ msgstr "Levél szerkesztése"
-
-#~ msgid "Edit the current message"
-#~ msgstr "Az aktuális levél szerkesztése"
-
-#~ msgid "Expunge"
-#~ msgstr "Tisztítás"
-
-#~ msgid "Finaly remove all mails tagged for deletion"
-#~ msgstr "Véglegesen eltávolítja a törlésre kijelölt leveleket"
-
-#~ msgid "Forward inline"
-#~ msgstr "Továbbítás beágyazott levélként"
-
-#~ msgid "Forward this message in-line with your mail, so you can edit it"
-#~ msgstr ""
-#~ "A levél továbbküldése a leveledbe beágyazva, amely így szerkeszthetõ"
-
-#~ msgid "Hide Deleted Messages"
-#~ msgstr "Törölt levelek elrejtése"
-
-#~ msgid "Invert Selection"
-#~ msgstr "Kijelölés megfordítása"
-
-#~ msgid "Move message to a new folder"
-#~ msgstr "A levél mozgatása új mappába"
-
-#~ msgid "Print Preview of message..."
-#~ msgstr "Levél nyomtatási képe..."
-
-#~ msgid "Reply to all"
-#~ msgstr "Válasz mindenkinek"
-
-#~ msgid "Reply to sender"
-#~ msgstr "Válasz a feladónak"
-
-#~ msgid "S_ource"
-#~ msgstr "_Forrás"
-
-#~ msgid "Send a reply to the person who sent you this mail"
-#~ msgstr "Válasz annak az embernek, aki a levelet írta"
-
-#~ msgid "Send a single mail in reply to all the selected mail"
-#~ msgstr "Egyetlen válaszlevél küldése az összes kijelölt levélre"
-
-#~ msgid ""
-#~ "Send queued mail\n"
-#~ " and retrieve new mail"
-#~ msgstr ""
-#~ "Várakozó levelek elküldése\n"
-#~ " és új levelek letöltése"
-
-#~ msgid "Undelete"
-#~ msgstr "Visszaállít"
-
-#~ msgid "View Raw Message Source"
-#~ msgstr "A levél nyers forrásának megtekintése"
-
-#~ msgid "_Open Selected Items"
-#~ msgstr "_Kijelölt elemek megnyitása"
-
-#~ msgid "_Reply"
-#~ msgstr "_Válasz"
-
-#~ msgid "_Save Message As..."
-#~ msgstr "_Levéd mentése másként..."
-
-#~ msgid "_Threaded"
-#~ msgstr "_Szálanként"
-
-#~ msgid "Send the message now"
-#~ msgstr "A levél elküldése most"
-
-#~ msgid ""
-#~ "We were unable to open this addressbook. This either\n"
-#~ "means you have entered an incorrect URI, or have tried\n"
-#~ "to access an LDAP server and don't have LDAP support\n"
-#~ "compiled in. If you've entered a URI, check the URI for\n"
-#~ "correctness and reenter. If not, you probably have\n"
-#~ "attempted to access an LDAP server. If you wish to be\n"
-#~ "able to use LDAP, you'll need to download and install\n"
-#~ "OpenLDAP and recompile and install Evolution.\n"
-#~ msgstr ""
-#~ "Nem tudom a címjegyzéket megnyitni. Ez azt jelenti,\n"
-#~ "hogy hibás URI-t írtál be, vagy egy LDAP kiszolgálót\n"
-#~ "szeretnél elérni, és nincs LDAP támogatás befordítva.\n"
-#~ "Ha URI-t írtál be, ellenõrizd az URI-t, nem írtad-e \n"
-#~ "rosszul, és írd be újra. Ha nem, akkor valószínûleg \n"
-#~ "egy LDAP kiszolgálót kéne elérned. Az LDAP használatához \n"
-#~ "le kell töltened és telepítened az OpenLDAP csomagot, \n"
-#~ "utána újrafordítanod és újratelepítened az Evolúciót.\n"
-
-#~ msgid "SASL"
-#~ msgstr "SASL"
-
-#~ msgid "Click here to add a contact"
-#~ msgstr "Kattints ide névjegy hozzáadásához"
-
-#~ msgid "No such host %s."
-#~ msgstr "Nincs %s gép."
-
-#~ msgid "Temporarily unable to look up hostname %s."
-#~ msgstr "Jelenleg nem lehetséges %s gépnév kikeresése."
-
-#~ msgid "Remove action"
-#~ msgstr "Mûvelet eltávolítása"
-
-#~ msgid "Remove criterion"
-#~ msgstr "Feltétel eltávolítása"
-
-#~ msgid "VFolder on Subject"
-#~ msgstr "VMappa a tárgyra"
-
-#~ msgid "VFolder on Sender"
-#~ msgstr "VMappa a feladóra"
-
-#~ msgid "VFolder on Recipients"
-#~ msgstr "VMappa a címzettekre"
-
-#~ msgid "Mark as Read"
-#~ msgstr "Elolvasva"
-
-#~ msgid "Mark as Unread"
-#~ msgstr "Olvasatlan"
-
-#~ msgid "Move to Folder..."
-#~ msgstr "Mappába mozgatás..."
-
-#~ msgid "Copy to Folder..."
-#~ msgstr "Mappába másolás..."
-
-#~ msgid "Do you accept?"
-#~ msgstr "Elfogadod?"
-
-#~ msgid "Import files"
-#~ msgstr "Fájlok importálása"
-
-#~ msgid "_Attachment"
-#~ msgstr "_Csatolás"
-
-#~ msgid "_Compose"
-#~ msgstr "_Létrehozás"
-
-#~ msgid "_Shortcut"
-#~ msgstr "_Indítóikon"
-
-#~ msgid "Advanced ..."
-#~ msgstr "Haladó..."
-
-#, fuzzy
-#~ msgid "Show all "
-#~ msgstr "Mutasd mind"
-
-#, fuzzy
-#~ msgid "%s is not a selectable folder"
-#~ msgstr "A kijelölt mappák megtekintése"
-
-#, fuzzy
-#~ msgid "Is Not"
-#~ msgstr "nem egy"
-
-#, fuzzy
-#~ msgid "Is"
-#~ msgstr "Ha"
-
-#, fuzzy
-#~ msgid "Secure IMAPv4"
-#~ msgstr "IMAPv4"
-
-#, fuzzy
-#~ msgid "No authentication required"
-#~ msgstr "Authentikáció:"
-
-#~ msgid "Source"
-#~ msgstr "Forrás"
-
-#, fuzzy
-#~ msgid "Advanced"
-#~ msgstr "Haladó..."
-
-#, fuzzy
-#~ msgid "Check settings"
-#~ msgstr "Beállítások tesztelése"
-
-#~ msgid "Email address:"
-#~ msgstr "Email cím:"
-
-#, fuzzy
-#~ msgid "Evolution Mail Configuration"
-#~ msgstr "Levelezés beállítása"
-
-#, fuzzy
-#~ msgid "Hostname:"
-#~ msgstr "Felhasználólnév:"
-
-#, fuzzy
-#~ msgid "IMAP"
-#~ msgstr "IMAPv4"
-
-#, fuzzy
-#~ msgid "Keep mail on server"
-#~ msgstr "Kilépés a levélszerkesztõbõl"
-
-#, fuzzy
-#~ msgid "Kerberos"
-#~ msgstr "Kerberos 4"
-
-#, fuzzy
-#~ msgid "Mail Account"
-#~ msgstr "Email tartalmaz"
-
-#, fuzzy
-#~ msgid "Mail Configuration Druid"
-#~ msgstr "Levelezés beállítása"
-
-#, fuzzy
-#~ msgid "Optional"
-#~ msgstr "Beállítások"
-
-#, fuzzy
-#~ msgid "Password:"
-#~ msgstr "Jelszó"
-
-#, fuzzy
-#~ msgid "Remember my password"
-#~ msgstr "VCard-ként mentés"
-
-#, fuzzy
-#~ msgid "Reply address:"
-#~ msgstr "Email cím:"
-
-#, fuzzy
-#~ msgid "Required"
-#~ msgstr "_A kért emberek"
-
-#, fuzzy
-#~ msgid "Select signature file"
-#~ msgstr "Aláírás fájl:"
-
-#, fuzzy
-#~ msgid "Server type:"
-#~ msgstr "Szerver:"
-
-#, fuzzy
-#~ msgid "Signature:"
-#~ msgstr "Aláírás fájl:"
-
-#, fuzzy
-#~ msgid "Transport"
-#~ msgstr "Áttetszõ"
-
-#, fuzzy
-#~ msgid "Transport Authentication"
-#~ msgstr "Authentikáció:"
-
-#, fuzzy
-#~ msgid "minutes."
-#~ msgstr "percek"
-
-#, fuzzy
-#~ msgid "<unknown>"
-#~ msgstr "Ismeretlen"
-
-#, fuzzy
-#~ msgid "_Message Hiding"
-#~ msgstr "Levéltörzs"
-
-#, fuzzy
-#~ msgid "Copyright (C) 2000, Helix Code, Inc."
-#~ msgstr "Copyright 1999, 2000 Helix Code, Inc."
-
-#, fuzzy
-#~ msgid "UNIX mbox-format mail files"
-#~ msgstr "UNIX mbox formátumú fájlok"
-
-#, fuzzy
-#~ msgid "New"
-#~ msgstr "Új..."
-
-#, fuzzy
-#~ msgid "Cannot initialize Evolution's notes component."
-#~ msgstr "Nem tudom az Evolúció levelezõ komponensét elindítani."
-
-#~ msgid "Notes Component: Could not initialize bonobo"
-#~ msgstr "Notes komponens: A Bonobo inicializálása nem sikerült"
-
-#~ msgid "Disabled"
-#~ msgstr "Tiltva"
-
-#~ msgid "Synchronize"
-#~ msgstr "Szinkronizálás"
-
-#~ msgid "Copy From Pilot"
-#~ msgstr " Másolás a pilotról"
-
-#~ msgid "Copy To Pilot"
-#~ msgstr "Másolás a pilotra"
-
-#~ msgid "Merge From Pilot"
-#~ msgstr "Összevetés a pilotról"
-
-#~ msgid "Merge To Pilot"
-#~ msgstr "Összevetés a pilotra"
-
-#~ msgid "JP Rosevear <jpr@helixcode.com>"
-#~ msgstr "JP Rosevear <jpr@helixcode.com>"
-
-#~ msgid "Original Author:"
-#~ msgstr "Eredeti tulajdonos:"
-
-#~ msgid "Eskil Heyn Olsen <deity@eskil.dk>"
-#~ msgstr "Eskil Heyn Olsen <deity@eskil.dk>"
-
-#~ msgid "(C) 1998-2000 the Free Software Foundation and Helix Code"
-#~ msgstr "(C) 1998-2000 a Free Software Foundation és a Helix Code"
-
-#~ msgid "gnome-unknown.xpm"
-#~ msgstr "gnome-unknown.xpm"
-
-#~ msgid "Synchronize Action"
-#~ msgstr "Szinkronizációs eljárás"
-
-#~ msgid "Conduit state"
-#~ msgstr "Csatorna állapot"
-
-#~ msgid ""
-#~ "No pilot configured, please choose the\n"
-#~ "'Pilot Link Properties' capplet first."
-#~ msgstr ""
-#~ "Nincs pilot beállítva, kérlek válaszd ki a\n"
-#~ "'Pilot Link Properties' cappletet elõször."
-
-#~ msgid "Not connected to the gnome-pilot daemon"
-#~ msgstr "Nincs a gnome-pilot daemonra kapcsolódva"
-
-#~ msgid ""
-#~ "An error occured when trying to fetch\n"
-#~ "pilot list from the gnome-pilot daemon"
-#~ msgstr ""
-#~ "Hiba lépett fel a pilotok listájának\n"
-#~ "a gnome-pilot daemontól való lekérésekor "
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "Mr.\n"
-#~ "Mrs.\n"
-#~ "Ms.\n"
-#~ "Miss\n"
-#~ "Dr.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Dr.\n"
-#~ "Prof.\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Sr.\n"
-#~ "Jr.\n"
-#~ "I\n"
-#~ "II\n"
-#~ "III\n"
-#~ "Esq.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Ifj.\n"
-#~ "Özv.\n"
-
-#~ msgid "Evolution Calendar Conduit"
-#~ msgstr "Evolúció naptár csatorna"
-
-#~ msgid "Configuration utility for the evolution calendar conduit.\n"
-#~ msgstr "Az Evolúció naptár csatorna beállító eszköze.\n"
-
-#~ msgid "Evolution ToDo Conduit"
-#~ msgstr "Evolúció tennivaló csatorna"
-
-#~ msgid "Configuration utility for the evolution todo conduit.\n"
-#~ msgstr "Az Evolúció tennivaló csatorna beállító eszköze.\n"
-
-#~ msgid "The priority must be between 1 and 9, inclusive"
-#~ msgstr "A prioritás 1 és 9 között lehet, bezárólag"
-
-#~ msgid "Open..."
-#~ msgstr "Megnyit..."
-
-#, fuzzy
-#~ msgid "Enter the identity you wish to send this message from"
-#~ msgstr "Írd be a leveleid feladóját, amilyen címrõl levelezel"
-
-#~ msgid "Enter the subject of the mail"
-#~ msgstr "Írd be a levél címét (subject)"
-
-#, fuzzy
-#~ msgid "Saving changes to message..."
-#~ msgstr "Levél mentése"
-
-#, fuzzy
-#~ msgid "Save changes to message..."
-#~ msgstr "Levél mentése"
-
-#~ msgid "Edit Filter Rule"
-#~ msgstr "Szûrõ szabály szerkesztése"
-
-#~ msgid "Add VFolder Rule"
-#~ msgstr "VMappa szabály hozzáadása"
-
-#~ msgid "Edit VFolder Rule"
-#~ msgstr "VMappa szabály szerkesztése"
-
-#~ msgid "Body or subject contains"
-#~ msgstr "A szövegtörzs vagy a téma tartalmaz"
-
-#~ msgid "Body contains"
-#~ msgstr "A szövegtörzs tartalmaz"
-
-#~ msgid "Subject contains"
-#~ msgstr "Téma tartalmaz"
-
-#~ msgid "Body does not contain"
-#~ msgstr "A szövegtörzs nem tartalmaz"
-
-#~ msgid "Subject does not contain"
-#~ msgstr "A téma nem tartalmaz"
-
-#~ msgid "You have no Outbox configured"
-#~ msgstr "Nincs kimenõ mappád beállítva"
-
-#, fuzzy
-#~ msgid "Fetch email from %s"
-#~ msgstr "Levelek letöltése"
-
-#, fuzzy
-#~ msgid "Move messages from \"%s\" into \"%s\""
-#~ msgstr "Levél(levelek) mozgatása más mappába"
-
-#~ msgid "(No description)"
-#~ msgstr "(Nincs leírás)"
-
-#, fuzzy
-#~ msgid "Loading %s Folder for %s"
-#~ msgstr "%s mappa töltõdik"
-
-#, fuzzy
-#~ msgid "Load %s Folder for %s"
-#~ msgstr "%s mappa betöltése"
-
-#~ msgid "Error reading commands from dispatching thread."
-#~ msgstr "Parancsok olvasásánál hiba történt egy feladó threadtõl."
-
-#~ msgid "Corrupted message from dispatching thread?"
-#~ msgstr "Hibás üzenet az feladó threadtõl?"
-
-#, fuzzy
-#~ msgid "FIXME: _Appointment"
-#~ msgstr "FIXME: _Idõpont"
-
-#~ msgid "FIXME: _Contact"
-#~ msgstr "FIXME: _Címjegyzék"
-
-#~ msgid "FIXME: _Task"
-#~ msgstr "FIXME: _Feladat"
-
-#~ msgid "FIXME: _Journal Entry"
-#~ msgstr "FIXME: _Napló bejegyzés"
-
-#~ msgid "FIXME: _Note"
-#~ msgstr "FIXME: _Feljegyzés"
-
-#~ msgid "FIXME: Ch_oose Form..."
-#~ msgstr "FIXME: Válassz f_ormát..."
-
-#~ msgid "FIXME: _Memo Style"
-#~ msgstr "FIXME: _Memo stílus"
-
-#, fuzzy
-#~ msgid "FIXME: Define Print _Styles..."
-#~ msgstr "FIXME: Nyomtatási stílusok definiálása..."
-
-#~ msgid "FIXME: S_end"
-#~ msgstr "FIXME: _Elküld"
-
-#~ msgid "FIXME: Save Attac_hments..."
-#~ msgstr "FIXME: Csatolások me_ntése..."
-
-#~ msgid "FIXME: _Move to Folder..."
-#~ msgstr "FIXME: _Mappába mozgat..."
-
-#~ msgid "FIXME: Cop_y to Folder..."
-#~ msgstr "FIXME: Mappába máso_l..."
-
-#~ msgid "Page Set_up"
-#~ msgstr "Oldal _beállítás:"
-
-#~ msgid "FIXME: Print Pre_view"
-#~ msgstr "FIXME: Nyomtatás né_zet"
-
-#, fuzzy
-#~ msgid "FIXME: Paste _Special..."
-#~ msgstr "FIXME: _Speciális beillesztés"
-
-#~ msgid "FIXME: Mark as U_nread"
-#~ msgstr "FIXME: Ne_m olvasottnak jelöl"
-
-#~ msgid "_Object"
-#~ msgstr "_Objektum"
-
-#~ msgid "FIXME: _Item"
-#~ msgstr "FIXME: _Elem"
-
-#~ msgid "FIXME: _Unread Item"
-#~ msgstr "FIXME: _Nem olvasott elem"
-
-#~ msgid "FIXME: _Standard"
-#~ msgstr "FIXME: Á_ltalános"
-
-#, fuzzy
-#~ msgid "FIXME: __Formatting"
-#~ msgstr "FIXME: __Formázás"
-
-#~ msgid "_Toolbars"
-#~ msgstr "_Eszközök"
-
-#~ msgid "FIXME: _File..."
-#~ msgstr "FIXME: _Fájl..."
-
-#~ msgid "FIXME: It_em..."
-#~ msgstr "FIXME: Elem..."
-
-#~ msgid "FIXME: _Object..."
-#~ msgstr "FIXME: _Objektum..."
-
-#~ msgid "FIXME: _Font..."
-#~ msgstr "FIXME: _Betûtípus..."
-
-#~ msgid "FIXME: _Paragraph..."
-#~ msgstr "FIXME: B_ekezdés..."
-
-#~ msgid "FIXME: Desi_gn This Form"
-#~ msgstr "FIXME: Aktuális kérdõív _tervezése"
-
-#~ msgid "FIXME: D_esign a Form..."
-#~ msgstr "FIXME: Kérdõív t_ervezése"
-
-#~ msgid "FIXME: Publish _Form..."
-#~ msgstr "FIXME: Kérdõív _publikálása"
-
-#~ msgid "FIXME: Pu_blish Form As..."
-#~ msgstr "FIXME: Kérdõív publikálása _mint..."
-
-#~ msgid "FIXME: Script _Debugger"
-#~ msgstr "FIXME: Szkript _hibakeresõ"
-
-#~ msgid "FIXME: _Spelling..."
-#~ msgstr "FIXME: _Helyesírás..."
-
-#~ msgid "_Forms"
-#~ msgstr "_Kérdõívek"
-
-#~ msgid "FIXME: _New Contact"
-#~ msgstr "FIXME: Ú_j névjegy"
-
-#~ msgid "FIXME: New _Contact from Same Company"
-#~ msgstr "FIXME: Új névjegy ugyanannál a _cégnél"
-
-#~ msgid "FIXME: New _Letter to Contact"
-#~ msgstr "FIXME: Levél ennek a _személynek"
-
-#, fuzzy
-#~ msgid "FIXME: New _Message to Contact"
-#~ msgstr "FIXME: Levél ennek a _személynek"
-
-#~ msgid "FIXME: New Meetin_g with Contact"
-#~ msgstr "FIXME: Ta_lálkozó ezzel a személlyel"
-
-#~ msgid "FIXME: _Plan a Meeting..."
-#~ msgstr "FIXME: _Találkozó tervezése"
-
-#~ msgid "FIXME: New _Task for Contact"
-#~ msgstr "FIXME: Új feladat a névjegyhez"
-
-#~ msgid "FIXME: New _Journal Entry for Contact"
-#~ msgstr "FIXME: Új napló bejegyzés a névjegyhez"
-
-#~ msgid "FIXME: _Flag for Follow Up..."
-#~ msgstr "FIXME: _Zászló folytatáshoz..."
-
-#~ msgid "FIXME: _Display Map of Address"
-#~ msgstr "FIXME: _Térkép vagy cím megjelenítése"
-
-#~ msgid "FIXME: _Open Web Page"
-#~ msgstr "FIXME: _Weblap megnyitása"
-
-#, fuzzy
-#~ msgid "FIXME: Forward as _vCard"
-#~ msgstr "FIXME: _vCard-ként továbbküld"
-
-#~ msgid "FIXME: For_ward"
-#~ msgstr "FIXME: _Továbbít"
-
-#~ msgid "FIXME: Previous"
-#~ msgstr "FIXME: Elõzõ"
-
-#, fuzzy
-#~ msgid "FIXME: Next"
-#~ msgstr "FIXME: _Feljegyzés"
-
-#~ msgid "Group %i"
-#~ msgstr "Csoportosítás %i"
-
-#~ msgid "C_lassification:"
-#~ msgstr "B_esorolás"
-
-#~ msgid "task-editor-dialog"
-#~ msgstr "task-editor-dialog"
-
-#~ msgid "Days"
-#~ msgstr "Napok"
-
-#~ msgid "Hours"
-#~ msgstr "Órák"
-
-#~ msgid "Mail _to:"
-#~ msgstr "Levél _valakinek:"
-
-#~ msgid "Minutes"
-#~ msgstr "Percek"
-
-#~ msgid "Time"
-#~ msgstr "Idõ"
-
-#~ msgid "_Audio"
-#~ msgstr "_Hang"
-
-#~ msgid "_Mail"
-#~ msgstr "_Levél"
-
-#~ msgid "_Program"
-#~ msgstr "_Program"
-
-#~ msgid "event-editor-dialog"
-#~ msgstr "event-editor-dialog"
-
-#, fuzzy
-#~ msgid "Show all hidden"
-#~ msgstr "Mutasd mind"
-
-#, fuzzy
-#~ msgid "Hide selected"
-#~ msgstr "Törölt"
-
-#, fuzzy
-#~ msgid "Hide deleted"
-#~ msgstr "Törölt"
-
-#, fuzzy
-#~ msgid "Hide Subject"
-#~ msgstr "Téma"
-
-#, fuzzy
-#~ msgid "Hide from Sender"
-#~ msgstr "Szûrõ a feladón"
-
-#, fuzzy
-#~ msgid "Account Properties"
-#~ msgstr "Csatolás beállítások"
-
-#, fuzzy
-#~ msgid "E-Mail Address:"
-#~ msgstr "Email cím:"
-
-#, fuzzy
-#~ msgid "Reply-to:"
-#~ msgstr "Reply-To:"
-
-#, fuzzy
-#~ msgid "Servers"
-#~ msgstr "Szerver:"
-
-#~ msgid "Full name:"
-#~ msgstr "Teljes név:"
-
-#~ msgid "Signature File"
-#~ msgstr "Aláírás fájl"
-
-#~ msgid "Server:"
-#~ msgstr "Szerver:"
-
-#~ msgid "Mail source type:"
-#~ msgstr "Levél forrás típusa:"
-
-#, fuzzy
-#~ msgid "News source type:"
-#~ msgstr "Új telefon típus"
-
-#, fuzzy
-#~ msgid "Mail transport type:"
-#~ msgstr "Levél küldés"
-
-#, fuzzy
-#~ msgid "Add Identity"
-#~ msgstr "Azonosító"
-
-#, fuzzy
-#~ msgid "Edit Identity"
-#~ msgstr "Azonosító"
-
-#~ msgid "Edit Source"
-#~ msgstr "Forrás szerkesztése"
-
-#, fuzzy
-#~ msgid "Add News Server"
-#~ msgstr "Hírcsoport-szerverek"
-
-#, fuzzy
-#~ msgid "Edit News Server"
-#~ msgstr "Hírcsoport-szerverek"
-
-#~ msgid "Identities"
-#~ msgstr "Azonosítók"
-
-#~ msgid "Mail Sources"
-#~ msgstr "Levél források"
-
-#~ msgid "Mail Transport"
-#~ msgstr "Levél küldés"
-
-#~ msgid "News Servers"
-#~ msgstr "Hírcsoport-szerverek"
-
-#~ msgid "News Sources"
-#~ msgstr "Hírcsoport források"
-
-#~ msgid "No GPG/PGP support available in this copy of Evolution."
-#~ msgstr "Nincs az Evolúciónak ebben a példányában GPG/PGP támogatás."
-
-#, fuzzy
-#~ msgid "_Addressbook Configuration..."
-#~ msgstr "Levelezés beállítása"
-
-#, fuzzy
-#~ msgid "Ca_lendar"
-#~ msgstr "Naptár"
-
-#, fuzzy
-#~ msgid "Open a calendar"
-#~ msgstr "Naptár megnyitása"
-
-#, fuzzy
-#~ msgid "_Print this calendar"
-#~ msgstr "Naptár nyomtatása"
-
-#, fuzzy
-#~ msgid "FIXME: Help"
-#~ msgstr "FIXME: Következõ"
-
-#, fuzzy
-#~ msgid "FIXME: Insert File"
-#~ msgstr "FIXME: _Elem"
-
-#, fuzzy
-#~ msgid "FIXME: Rec_urrence..."
-#~ msgstr "FIXME: _Objektum..."
-
-#, fuzzy
-#~ msgid "_Find..."
-#~ msgstr "Keresés..."
-
-#, fuzzy
-#~ msgid "_Redo"
-#~ msgstr "Rádió"
-
-#, fuzzy
-#~ msgid "Fi_lter on Sender"
-#~ msgstr "Szûrõ a feladón"
-
-#, fuzzy
-#~ msgid "Filter on Rec_ipients"
-#~ msgstr "Szûrõ a címzettekre"
-
-#, fuzzy
-#~ msgid "Reply to _Sender"
-#~ msgstr "Mindenkinek"
-
-#, fuzzy
-#~ msgid "Show _All messages"
-#~ msgstr "Mutasd mind"
-
-#, fuzzy
-#~ msgid "_Filter on Subject"
-#~ msgstr "Szûrõ a témára"
-
-#, fuzzy
-#~ msgid "_Mail Configuration..."
-#~ msgstr "Levelezés beállítása"
-
-#, fuzzy
-#~ msgid "_Print Message"
-#~ msgstr "Levél _nyomtatása"
-
-#, fuzzy
-#~ msgid "_Source"
-#~ msgstr "Forrás"
-
-#, fuzzy
-#~ msgid "_VFolder on Subject"
-#~ msgstr "VMappa a témára"
-
-#~ msgid "External Directories"
-#~ msgstr "Külsõ könyvtárak"
-
-#~ msgid "Port Number:"
-#~ msgstr "Portszám:"
-
-#~ msgid "Outline:"
-#~ msgstr "Körvonal:"
-
-#~ msgid "Headings:"
-#~ msgstr "Fejlécek:"
-
-#~ msgid "Highlighted day:"
-#~ msgstr "Kiemelt nap:"
-
-#~ msgid "Day numbers:"
-#~ msgstr "Nap számozás:"
-
-#~ msgid "Current day's number:"
-#~ msgstr "Jelenlegi nap száma:"
-
-#~ msgid "To-Do item that is not yet due:"
-#~ msgstr "Tennivaló, ami még nem járt le:"
-
-#~ msgid "To-Do item that is due today:"
-#~ msgstr "Tennivaló, ami ma jár le:"
-
-#~ msgid "To-Do item that is overdue:"
-#~ msgstr "Tennivaló, ami lejárt:"
-
-#~ msgid "may"
-#~ msgstr "május"
-
-#~ msgid "sunday"
-#~ msgstr "vasárnap"
-
-#~ msgid "monday"
-#~ msgstr "hétfõ"
-
-#~ msgid "tuesday"
-#~ msgstr "kedd"
-
-#~ msgid "tues"
-#~ msgstr "kedd"
-
-#~ msgid "wednesday"
-#~ msgstr "szerda"
-
-#~ msgid "wednes"
-#~ msgstr "szerda"
-
-#~ msgid "thursday"
-#~ msgstr "csütörtök"
-
-#~ msgid "thur"
-#~ msgstr "csüt"
-
-#~ msgid "thurs"
-#~ msgstr "csüt"
-
-#~ msgid "friday"
-#~ msgstr "péntek"
-
-#~ msgid "saturday"
-#~ msgstr "szombat"
-
-#~ msgid "fortnight"
-#~ msgstr "két hét"
-
-#~ msgid "min"
-#~ msgstr "perc"
-
-#~ msgid "sec"
-#~ msgstr "mp"
-
-#~ msgid "tomorrow"
-#~ msgstr "holnap"
-
-#~ msgid "yesterday"
-#~ msgstr "tegnap"
-
-#~ msgid "today"
-#~ msgstr "ma"
-
-#~ msgid "last"
-#~ msgstr "utolsó"
-
-#~ msgid "this"
-#~ msgstr "ez"
-
-#~ msgid "next"
-#~ msgstr "következõ"
-
-#~ msgid "first"
-#~ msgstr "elsõ"
-
-#~ msgid "third"
-#~ msgstr "harmadik"
-
-#~ msgid "fourth"
-#~ msgstr "negyedik"
-
-#~ msgid "fifth"
-#~ msgstr "ötödik"
-
-#~ msgid "sixth"
-#~ msgstr "hatodik"
-
-#~ msgid "seventh"
-#~ msgstr "hetedik"
-
-#~ msgid "eighth"
-#~ msgstr "nyolcadik"
-
-#~ msgid "ninth"
-#~ msgstr "kilencedik"
-
-#~ msgid "tenth"
-#~ msgstr "tizedik"
-
-#~ msgid "eleventh"
-#~ msgstr "tizenegyedik"
-
-#~ msgid "twelfth"
-#~ msgstr "tizenkettedik"
-
-#~ msgid "ago"
-#~ msgstr "óta"
-
-#~ msgid "Year:"
-#~ msgstr "Év:"
-
-#~ msgid ""
-#~ "Please select the date you want to go to.\n"
-#~ "When you click on a day, you will be taken\n"
-#~ "to that date."
-#~ msgstr ""
-#~ "Kérlek válassz egy dátumot amire lépni akarsz.\n"
-#~ "Ha egy napra kattintassz, arra a dátumra leszel\n"
-#~ "téve."
-
-#, fuzzy
-#~ msgid "Expunge \"%s\""
-#~ msgstr "_Tisztít"
-
-#, fuzzy
-#~ msgid "Mark messages in folder \"%s\""
-#~ msgstr "Levél mozgatása más mappába"
-
-#, fuzzy
-#~ msgid "Attach messages from \"%s\""
-#~ msgstr "Kilépés a levélszerkesztõbõl"
-
-#, fuzzy
-#~ msgid "Forward message \"%s\""
-#~ msgstr "A levél továbbítása"
-
-#, fuzzy
-#~ msgid "Loading \"%s\""
-#~ msgstr "Fejlécek"
-
-#, fuzzy
-#~ msgid "Create \"%s\""
-#~ msgstr "Létrehozva"
-
-#, fuzzy
-#~ msgid "Clearing message display"
-#~ msgstr "Idõ mutatása"
-
-#, fuzzy
-#~ msgid "View messages from \"%s\""
-#~ msgstr "Levél meg_tekintése"
-
-#, fuzzy
-#~ msgid "Save messages from folder \"%s\""
-#~ msgstr "Levél mozgatása más mappába"
-
-#, fuzzy
-#~ msgid "N_ew Directory Server"
-#~ msgstr "Hírcsoport-szerverek"
-
-#~ msgid "window2"
-#~ msgstr "2.ablak"
-
-#~ msgid "Create to-do item"
-#~ msgstr "Tennivaló készítése"
-
-#~ msgid "Due Date:"
-#~ msgstr "Lejárat:"
-
-#~ msgid "Item Comments:"
-#~ msgstr "Megjegyzések:"
-
-#~ msgid "Time display"
-#~ msgstr "Idõ mutatása"
-
-#~ msgid "Time format"
-#~ msgstr "Idõ formátum"
-
-#~ msgid "12-hour (AM/PM)"
-#~ msgstr "12 órás (de/du)"
-
-#~ msgid "24-hour"
-#~ msgstr "24 órás"
-
-#~ msgid "Weeks start on"
-#~ msgstr "A hetek kezdete"
-
-#~ msgid "Day range"
-#~ msgstr "Nap tartomány"
-
-#~ msgid ""
-#~ "Please select the start and end hours you want\n"
-#~ "to be displayed in the day view and week view.\n"
-#~ "Times outside this range will not be displayed\n"
-#~ "by default."
-#~ msgstr ""
-#~ "Kérlek add meg, hogy mikor kezdõdjön és mikor\n"
-#~ "fejezõdjön be a nap és a hét.\n"
-#~ "Az ezen kívülesõ idõpontok nem lesznek\n"
-#~ "megjelenítve."
-
-#~ msgid "Day end:"
-#~ msgstr "Nap vége:"
-
-#~ msgid "Colors for display"
-#~ msgstr "Megjelenítés színei"
-
-#~ msgid "Show on TODO List:"
-#~ msgstr "Tennivaló lista mutatása:"
-
-#~ msgid "To Do List style options:"
-#~ msgstr "Tennivaló lista stílus beállításai:"
-
-#~ msgid "Highlight overdue items"
-#~ msgstr "Lejárt elemek kivilágítása"
-
-#~ msgid "Highlight not yet due items"
-#~ msgstr "Világísd ki a még nem lejárt elemeket"
-
-#~ msgid "To Do List"
-#~ msgstr "Tennivaló lista"
-
-#~ msgid "Preferences"
-#~ msgstr "Beállítások"
-
-#~ msgid "Beep on display alarms"
-#~ msgstr "Ébresztõ kiírásánál csipogj"
-
-#~ msgid "Enable snoozing for "
-#~ msgstr "Szundi engedése"
-
-#, fuzzy
-#~ msgid "Could not create summary"
-#~ msgstr "Nem tudom a dialógust elkészíteni."
-
-#, fuzzy
-#~ msgid "Cannot copy data to output file: %s"
-#~ msgstr ""
-#~ "Nem tudom másolni a fájlokat\n"
-#~ "'%s'-be."
-
-#~ msgid "does not match regex"
-#~ msgstr "nem egyezik a regex-el:"
-
-#~ msgid "matches regex"
-#~ msgstr "megegyezik a regex-el:"
-
-#, fuzzy
-#~ msgid "Cannot initialize Evolution's mail storage hash."
-#~ msgstr "Nem tudom az Evolúció levelezõ komponensét elindítani."
-
-#~ msgid ""
-#~ "Welcome to the Evolution Mail configuration wizard!\n"
-#~ "By filling in some information about your email\n"
-#~ "settings, you can start sending and receiving email\n"
-#~ "right away. Click Next to continue."
-#~ msgstr ""
-#~ "Üdvözöllek az Evolúció levelezési varázslóban!\n"
-#~ "A levelezési beállításaiddal kapcsolatos információk\n"
-#~ "kitöltésével leveleket tudsz majd fogadni és küldeni.\n"
-#~ "Kattints a 'Következõ' gombra a folytatáshoz."
diff --git a/po/it.po b/po/it.po
deleted file mode 100644
index dcf5a9a93f..0000000000
--- a/po/it.po
+++ /dev/null
@@ -1,8878 +0,0 @@
-# Traduzione Italiana del po di Evolution.
-# Copyright (C) 2000 Free Software Foundation, Inc.
-# Clara Tattoni <clara.tattoni@libero.it>, 2000
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Evolution 0.8\n"
-"POT-Creation-Date: 2001-04-20 02:43+0200\n"
-"PO-Revision-Date: 2001-03-23 10:23-01:00\n"
-"Last-Translator: Clara Tattoni <clara.tattoni@libero.it>\n"
-"Language-Team: Italiano <it@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: addressbook/backend/ebook/e-card.c:3209
-msgid "Card: "
-msgstr "Tessera:"
-
-#: addressbook/backend/ebook/e-card.c:3211
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-"\n"
-"Nome:"
-
-#: addressbook/backend/ebook/e-card.c:3212
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-"\n"
-" Prefisso:"
-
-#: addressbook/backend/ebook/e-card.c:3213
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-"\n"
-" Dato:"
-
-#: addressbook/backend/ebook/e-card.c:3214
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-"\n"
-" Addizionale:"
-
-#: addressbook/backend/ebook/e-card.c:3215
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-"\n"
-" Famigila:"
-
-#: addressbook/backend/ebook/e-card.c:3216
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-"\n"
-" Suffisso:"
-
-#: addressbook/backend/ebook/e-card.c:3230
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-"\n"
-"Data di nascita:"
-
-#: addressbook/backend/ebook/e-card.c:3241
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-"\n"
-"Indirizzo:"
-
-#: addressbook/backend/ebook/e-card.c:3243
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-"\n"
-" Casella Postale: "
-
-#: addressbook/backend/ebook/e-card.c:3244
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3245
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-"\n"
-" Via: "
-
-#: addressbook/backend/ebook/e-card.c:3246
-msgid ""
-"\n"
-" City: "
-msgstr ""
-"\n"
-" Città: "
-
-#: addressbook/backend/ebook/e-card.c:3247
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-"\n"
-" Regione: "
-
-#: addressbook/backend/ebook/e-card.c:3248
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-"\n"
-" Codice di avviamento postale: "
-
-#: addressbook/backend/ebook/e-card.c:3249
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-"\n"
-" Stato: "
-
-#: addressbook/backend/ebook/e-card.c:3262
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-"\n"
-"Etichetta di spedizione: "
-
-#: addressbook/backend/ebook/e-card.c:3274
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-"\n"
-" Telefoni:\n"
-
-#: addressbook/backend/ebook/e-card.c:3277
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-"\n"
-"Telefono:"
-
-#: addressbook/backend/ebook/e-card.c:3301
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-"\n"
-"E-mail:\n"
-
-#: addressbook/backend/ebook/e-card.c:3304
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-"\n"
-"E-mail:"
-
-#: addressbook/backend/ebook/e-card.c:3323
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-"\n"
-"Programma di posta: "
-
-#: addressbook/backend/ebook/e-card.c:3329
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-"\n"
-"Fuso orario: "
-
-#: addressbook/backend/ebook/e-card.c:3337
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-"\n"
-"Posizione Geografica: "
-
-#: addressbook/backend/ebook/e-card.c:3341
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-"\n"
-"Occupazione:"
-
-#: addressbook/backend/ebook/e-card.c:3353
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-"\n"
-"Org: "
-
-#: addressbook/backend/ebook/e-card.c:3354
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-"\n"
-" Nome:"
-
-#: addressbook/backend/ebook/e-card.c:3355
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-"\n"
-" Unità:"
-
-#: addressbook/backend/ebook/e-card.c:3356
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-"\n"
-" Unità2:"
-
-#: addressbook/backend/ebook/e-card.c:3357
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-"\n"
-" Unità3:"
-
-#: addressbook/backend/ebook/e-card.c:3358
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-"\n"
-" Unità4:"
-
-#: addressbook/backend/ebook/e-card.c:3362
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-"\n"
-"Categorie:"
-
-#: addressbook/backend/ebook/e-card.c:3363
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-"\n"
-"Commento:"
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3376
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-"\n"
-"Stringa Unica: "
-
-#: addressbook/backend/ebook/e-card.c:3379
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-"\n"
-"Chiave Pubblica: "
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:1
-msgid "Factory to import GnomeCard files into Evolution."
-msgstr "Fabbrica per importare i file GnomeCard in Evolution."
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:2
-msgid "Imports GnomeCard files into Evolution."
-msgstr "Importa i file GnomeCard in Evolution."
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:21
-#: addressbook/backend/ebook/load-pine-addressbook.c:22
-#: addressbook/backend/ebook/test-client-list.c:23
-#: addressbook/backend/ebook/test-client.c:33
-#: addressbook/conduit/address-conduit.c:1092
-#: addressbook/gui/component/addressbook-factory.c:43
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:99 calendar/gui/main.c:57
-msgid "Could not initialize Bonobo"
-msgstr "Impossibile inizializzare Bonobo"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr "Il cursore non può essere caricato\n"
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr "EBook non caricato\n"
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr "Impossibile avviare il server wombat"
-
-#: addressbook/conduit/address-conduit.c:655
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr "Impossibile avviare wombat"
-
-#: addressbook/conduit/address-conduit.c:687
-#: addressbook/conduit/address-conduit.c:690
-msgid "Could not read pilot's Address application block"
-msgstr "Impossibile leggere il blocco Indirizzi del Pilot"
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:7
-msgid "Add"
-msgstr "Aggiungi"
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr "Anni_versario:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr "_Ufficio"
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr "_Fax Ufficio"
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-msgid "C_ontacts..."
-msgstr "C_ontatti..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr "Ca_tegorie..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-msgid "Contact Editor"
-msgstr "Editor dei Contatti"
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr "Dettagli"
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr "Memorizza Come:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-msgid "General"
-msgstr "Generale"
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr "Nuovo tipo di telefono"
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-msgid "No_tes:"
-msgstr "No_te:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr "Tipi di Telefono"
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1284
-msgid "Primary Email"
-msgstr "Email principale"
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr "Vuole ricevere messaggi in _HTML"
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr "Indirizzo pagina web:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:74
-msgid "_Add"
-msgstr "_Aggiungi"
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr "_Indirizzo..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr "Nome dell'_Assistente:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr "Co_mpleanno:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr "_Ufficio"
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-msgid "_Company:"
-msgstr "_Compagnia:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/mail-config.glade.h:75 ui/evolution-event-editor.xml.h:57
-#: ui/evolution-mail.xml.h:93 ui/evolution-task-editor-dialog.xml.h:69
-msgid "_Delete"
-msgstr "_Elimina"
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr "_Dipartimento:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr "_Nome e Cognome..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-msgid "_Home"
-msgstr "_Casa"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-msgid "_Job title:"
-msgstr "_Titolo:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr "Nome del _Manager:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-msgid "_Mobile"
-msgstr "C_ellulare"
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr "_Nickname:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr "_Ufficio:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr "_Professione:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr "_Coniuge:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr "Indirizzo a cui _spedire"
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-msgid "Delete Contact?"
-msgstr "Cancellare il Contatto?"
-
-#: addressbook/contact-editor/e-contact-editor.c:603
-msgid "This contact belongs to these categories:"
-msgstr "Questo contatto appartiene a queste categorie:"
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-#: addressbook/gui/widgets/e-addressbook-view.c:676
-msgid "Assistant"
-msgstr "Assistente"
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/contact-editor/e-contact-editor.c:1310
-msgid "Business"
-msgstr "Ufficio"
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-msgid "Business 2"
-msgstr "Ufficio2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#: addressbook/gui/widgets/e-addressbook-view.c:656
-msgid "Business Fax"
-msgstr "Fax Ufficio"
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Callback"
-msgstr "Richiamare"
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "Car"
-msgstr "Auto"
-
-#: addressbook/contact-editor/e-contact-editor.c:1248
-msgid "Company"
-msgstr "Ditta"
-
-#: addressbook/contact-editor/e-contact-editor.c:1249
-#: addressbook/contact-editor/e-contact-editor.c:1311
-msgid "Home"
-msgstr "Casa"
-
-#: addressbook/contact-editor/e-contact-editor.c:1250
-msgid "Home 2"
-msgstr "Casa 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1251
-#: addressbook/gui/widgets/e-addressbook-view.c:657
-msgid "Home Fax"
-msgstr "Fax Casa"
-
-#: addressbook/contact-editor/e-contact-editor.c:1252
-#: addressbook/gui/widgets/e-addressbook-view.c:660
-msgid "ISDN"
-msgstr "ISDN"
-
-#: addressbook/contact-editor/e-contact-editor.c:1253
-msgid "Mobile"
-msgstr "Cellulare"
-
-#: addressbook/contact-editor/e-contact-editor.c:1254
-#: addressbook/contact-editor/e-contact-editor.c:1312
-#: calendar/gui/e-meeting-dialog.glade.h:14 mail/mail-config.glade.h:40
-msgid "Other"
-msgstr "Altro"
-
-#: addressbook/contact-editor/e-contact-editor.c:1255
-#: addressbook/gui/widgets/e-addressbook-view.c:662
-msgid "Other Fax"
-msgstr "Altro fax"
-
-#: addressbook/contact-editor/e-contact-editor.c:1256
-#: addressbook/gui/widgets/e-addressbook-view.c:663
-msgid "Pager"
-msgstr "Impaginatore"
-
-#: addressbook/contact-editor/e-contact-editor.c:1257
-msgid "Primary"
-msgstr "Principale"
-
-#: addressbook/contact-editor/e-contact-editor.c:1258
-#: addressbook/gui/widgets/e-addressbook-view.c:664
-msgid "Radio"
-msgstr "Radio"
-
-#: addressbook/contact-editor/e-contact-editor.c:1259
-#: addressbook/gui/widgets/e-addressbook-view.c:665
-msgid "Telex"
-msgstr "Telex"
-
-#: addressbook/contact-editor/e-contact-editor.c:1260
-msgid "TTY/TDD"
-msgstr "TTY/TDD"
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:668
-msgid "Email 2"
-msgstr "Email 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/gui/widgets/e-addressbook-view.c:669
-msgid "Email 3"
-msgstr "Email 3"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:223
-msgid "Contact Quick-Add"
-msgstr "Aggiunta veloce di un Contatto"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:225
-msgid "Edit Full"
-msgstr "Modifica Interamente"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:262
-#: addressbook/gui/widgets/e-addressbook-view.c:643
-msgid "Full Name"
-msgstr "Nome e cognome"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:268
-msgid "E-mail"
-msgstr "E-mail"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr "Indirizzo _2:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr "Canada"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr "Controlla Indirizzo"
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr "_Stato:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr "Finlandia"
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr "USA"
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr "_Indirizzo:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-msgid "_City:"
-msgstr "_Città:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr "_Casella Postale:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr "_Stato/Provincia:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr "_ZIP/CAP:"
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr "Verifiare Nome e Cognome"
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr "Dott."
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr "Egr."
-
-#: addressbook/contact-editor/fullname.glade.h:4
-msgid "I"
-msgstr "I"
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr "II"
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr "III"
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr "Jr."
-
-#: addressbook/contact-editor/fullname.glade.h:8
-msgid "Miss"
-msgstr "Sig.na"
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr "Sig."
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr "Sig.ra"
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr "Sig.ra"
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr "Sr."
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr "_Nome:"
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr "_Cognome:"
-
-#: addressbook/contact-editor/fullname.glade.h:15
-msgid "_Middle:"
-msgstr "_Secondo nome:"
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr "S_uffisso:"
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr "_Titolo:"
-
-#: addressbook/gui/component/addressbook.c:241
-msgid "As _Minicards"
-msgstr "Come _Minicards"
-
-#: addressbook/gui/component/addressbook.c:247
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr "Come _Tabella"
-
-#: addressbook/gui/component/addressbook.c:399
-#, c-format
-msgid "Enter password for %s"
-msgstr "Inserire la password per %s"
-
-#: addressbook/gui/component/addressbook.c:427
-msgid "Unable to open addressbook"
-msgstr "Impossibile aprire la rubruca"
-
-#: addressbook/gui/component/addressbook.c:432
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or have tried\n"
-"to access an LDAP server and don't have LDAP support\n"
-"compiled in. If you've entered a URI, check the URI for\n"
-"correctness and reenter. If not, you probably have\n"
-"attempted to access an LDAP server. If you wish to be\n"
-"able to use LDAP, you'll need to download and install\n"
-"OpenLDAP and recompile and install Evolution.\n"
-msgstr ""
-"Impossibile aprire questa rubruca. Questo significa che \n"
-"è stata inserita una URI non corretta, oppure che si è\n"
-"cercato di accedere a un server LDAP senza avere il supporto \n"
-"LDAP compilato. Se si è inserita una URI, controllarne \n"
-"la correttezza ed inserirla nuovamente. Altrimenti, è \n"
-"probabile che si sia cercato di accedere ad un server LDAP. \n"
-"Se si desidera usare LDAP, è necessario scaricare e \n"
-"installare OpenLDAP, ricompilare e reinstallare Evolution.\n"
-
-#: addressbook/gui/component/addressbook.c:555
-msgid "Show All"
-msgstr "Mostra Tutto"
-
-#: addressbook/gui/component/addressbook.c:557
-msgid "Advanced..."
-msgstr "Avanzato..."
-
-#: addressbook/gui/component/addressbook.c:587 calendar/gui/gnome-cal.c:236
-msgid "Any field contains"
-msgstr "Qualunque campo contiene"
-
-#: addressbook/gui/component/addressbook.c:588
-msgid "Name contains"
-msgstr "Il nome contiene"
-
-#: addressbook/gui/component/addressbook.c:589
-msgid "Email contains"
-msgstr "Email contiene"
-
-#: addressbook/gui/component/addressbook.c:732
-msgid "The URI that the Folder Browser will display"
-msgstr "La URI visualizzata dal Browser delle cartelle"
-
-#: addressbook/gui/component/addressbook-storage.c:99
-msgid "Other Contacts"
-msgstr "Altri Contatti"
-
-#: addressbook/gui/component/addressbook-config.c:148
-msgid "LDAP Server"
-msgstr "LDAP Server"
-
-#: addressbook/gui/component/addressbook-config.c:150
-msgid "File"
-msgstr "File"
-
-#: addressbook/gui/component/addressbook-config.c:153
-msgid "Unknown addressbook type"
-msgstr "Tipo di rubrica sconosciuto"
-
-#: addressbook/gui/component/addressbook-config.c:163
-msgid "None (anonymous mode)"
-msgstr "Nessuno (modo anonimo)"
-
-#: addressbook/gui/component/addressbook-config.c:165
-#: camel/camel-sasl-plain.c:32 camel/providers/imap/camel-imap-provider.c:80
-#: camel/providers/nntp/camel-nntp-store.c:291
-#: camel/providers/pop3/camel-pop3-provider.c:67 mail/mail-config.glade.h:43
-msgid "Password"
-msgstr "Password"
-
-#: addressbook/gui/component/addressbook-config.c:167
-msgid "SASL"
-msgstr "SASL"
-
-#: addressbook/gui/component/addressbook-config.c:170
-msgid "Unknown auth type"
-msgstr "Tipo di auth sconosciuto"
-
-#: addressbook/gui/component/addressbook-config.c:179
-msgid "Base"
-msgstr "Base"
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "One"
-msgstr "Uno"
-
-#: addressbook/gui/component/addressbook-config.c:183
-msgid "Subtree"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:186
-msgid "Unknown scope type"
-msgstr "Tipo di ambito sconosciuto"
-
-#: addressbook/gui/component/addressbook-config.c:353
-msgid "Bind DN:"
-msgstr "Bind DN:"
-
-#: addressbook/gui/component/addressbook-config.c:354
-msgid "FIXME Bind DN Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:356
-#: mail/mail-config.glade.h:50
-msgid "Remember this password"
-msgstr "Ricorda questa password"
-
-#: addressbook/gui/component/addressbook-config.c:406
-#: mail/mail-config.glade.h:28
-msgid "Host:"
-msgstr "Host:"
-
-#: addressbook/gui/component/addressbook-config.c:407
-msgid "FIXME Host help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:409
-msgid "Port:"
-msgstr "Porta:"
-
-#: addressbook/gui/component/addressbook-config.c:410
-msgid "FIXME Port help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:414
-msgid "Root DN:"
-msgstr "Root DN:"
-
-#: addressbook/gui/component/addressbook-config.c:415
-msgid "FIXME Root DN help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:435
-msgid "Search Scope:"
-msgstr "Ambito della Ricerca:"
-
-#: addressbook/gui/component/addressbook-config.c:489
-msgid "Authentication:"
-msgstr "Autenticazione:"
-
-#: addressbook/gui/component/addressbook-config.c:507
-#: mail/mail-config.glade.h:44
-msgid "Path:"
-msgstr "Percorso:"
-
-#: addressbook/gui/component/addressbook-config.c:508
-msgid "FIXME Path Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:513
-msgid "Create path if it doesn't exist."
-msgstr "Crea il path se non esiste"
-
-#: addressbook/gui/component/addressbook-config.c:647
-msgid "Edit Addressbook"
-msgstr "Modifica Rubrica"
-
-#: addressbook/gui/component/addressbook-config.c:649
-msgid "Add Addressbook"
-msgstr "Aggiungi rubrica"
-
-#: addressbook/gui/component/addressbook-config.c:665
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-"Selezionare il vostr tipo di rubrica, e inserirne le informazioni rilevanti."
-
-#: addressbook/gui/component/addressbook-config.c:671
-#: mail/mail-config.glade.h:35
-msgid "Name:"
-msgstr "Nome:"
-
-#: addressbook/gui/component/addressbook-config.c:672
-msgid "FIXME Name help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:674
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr "Descrizione:"
-
-#: addressbook/gui/component/addressbook-config.c:675
-msgid "FIXME Description help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-msgid "Addressbook Sources"
-msgstr "Sorgenti della Rubrica"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: addressbook/gui/widgets/e-addressbook-view.c:578
-#: addressbook/gui/widgets/e-minicard.c:673
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:11 mail/folder-browser.c:597
-#: mail/mail-config.glade.h:19 mail/mail-view.c:156
-#: ui/evolution-addressbook.xml.h:3 ui/evolution-event-editor.xml.h:17
-#: ui/evolution-mail.xml.h:11 ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr "Elimina"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:23
-msgid "Edit"
-msgstr "Modifica"
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-msgid "Name"
-msgstr "Nome"
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-msgid "URI"
-msgstr "URI"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Disable Queries"
-msgstr "Disabilita Query"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Enable Queries (Dangerous!)"
-msgstr "Abilita Query (Pericoloso!)"
-
-#: addressbook/gui/component/e-address-widget.c:388
-#: addressbook/gui/component/select-names/e-select-names-popup.c:210
-msgid "Edit Contact Info"
-msgstr "Modifica Informazioni del Contatto"
-
-#: addressbook/gui/component/e-address-widget.c:424
-#: addressbook/gui/component/select-names/e-select-names-popup.c:269
-msgid "Add to Contacts"
-msgstr "Aggiungi ai Contatti"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-#, fuzzy
-msgid "A Bonobo control for an address popup."
-msgstr "Un controllo di Bonobo che visualizza un indirizzo."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A Bonobo control for displaying an address."
-msgstr "Un controllo di Bonobo che visualizza un indirizzo."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr "Un semplice controllo di Bonobo che visualizza una rubrica."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr "Controllo che visualizza una minicard per la rubrica di Evolution."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-msgid "Evolution Addressbook minicard viewer"
-msgstr "Visore di minicard per la rubrica di Evolution"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-msgid "Evolution component for handling contacts."
-msgstr "Componente di Evolution per gestire i contatti."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-msgid "Factory for the Addressbook Minicard control"
-msgstr "Fabbrica per il controllo delle Minicard per la rubrica"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-msgid "Factory for the Addressbook's address displayer"
-msgstr "Fabbrica per il visualizzatore di indirizzi della Rubrica"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-#, fuzzy
-msgid "Factory for the Addressbook's address popup"
-msgstr "Fabbrica per il visualizzatore di indirizzi della Rubrica"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:10
-msgid "Factory for the Evolution addressbook component."
-msgstr "Fabbrica per il componente della rubrica di Evolution."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:11
-msgid "Factory for the sample Addressbook control"
-msgstr "Fabbrica per il controllo degli esempi della Rubrica"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-msgid "Evolution's addressbook name selection interface."
-msgstr "Interfaccia per la selezione dei nomi della rubrica di Evolution."
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr "Fabbrica per l'interfaccia di selezione dei nomi della Rubrica"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:131
-#: composer/e-msg-composer-attachment-bar.c:468 filter/filter-filter.c:401
-#: filter/filter-rule.c:550 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:265 shell/e-shortcuts-view.c:388
-msgid "Remove"
-msgstr "Rimuovere"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:146
-msgid "Remove All"
-msgstr "Rimuovere Tutti"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr "Trova..."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-msgid "Message Recipients"
-msgstr "Destinatari del messaggio:"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-msgid "Select Names"
-msgstr "Seleziona Nomi"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-msgid "Select name from:"
-msgstr "Seleziona un nome da:"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:158
-msgid "Search"
-msgstr "Cerca"
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr "123"
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr "a"
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr "b"
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr "c"
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr "d"
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr "e"
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr "f"
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr "g"
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr "h"
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr "i"
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr "j"
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr "k"
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr "l"
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr "m"
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr "n"
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-msgid "o"
-msgstr "o"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr "p"
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr "q"
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-msgid "r"
-msgstr "r"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr "s"
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr "t"
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr "u"
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr "v"
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr "w"
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr "x"
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr "y"
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr "z"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:513
-#: addressbook/gui/widgets/e-addressbook-view.c:573
-#: addressbook/gui/widgets/e-minicard.c:466
-#: addressbook/gui/widgets/e-minicard.c:668
-msgid "Save as VCard"
-msgstr "Salva come VCard"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:574
-#: addressbook/gui/widgets/e-minicard.c:669
-#, fuzzy
-msgid "Send contact to other"
-msgstr "_Invia contatto a altri..."
-
-#: addressbook/gui/widgets/e-addressbook-view.c:575
-#: addressbook/gui/widgets/e-minicard.c:670
-#, fuzzy
-msgid "Send message to contact"
-msgstr "Invia un _messaggio al contatto..."
-
-#: addressbook/gui/widgets/e-addressbook-view.c:576
-#: addressbook/gui/widgets/e-minicard.c:671 mail/folder-browser.c:572
-#: mail/mail-view.c:154 ui/evolution-addressbook.xml.h:9
-#: ui/evolution-calendar.xml.h:23 ui/evolution-mail.xml.h:51
-#: ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr "Stampa"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:577
-#: addressbook/gui/widgets/e-minicard.c:672
-#, fuzzy
-msgid "Print Envelope"
-msgstr "Stampa _Busta..."
-
-#: addressbook/gui/widgets/e-addressbook-view.c:641
-msgid "* Click here to add a contact *"
-msgstr "* Cliccare qui per aggiungere un contatto *"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:642
-#, fuzzy
-msgid "File As"
-msgstr "Memorizza Come:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:644
-msgid "Email"
-msgstr "Email"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:645
-#, fuzzy
-msgid "Primary Phone"
-msgstr "Principale"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:646
-#, fuzzy
-msgid "Assistant Phone"
-msgstr "Assistente"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:647
-#, fuzzy
-msgid "Business Phone"
-msgstr "Ufficio2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:648
-#, fuzzy
-msgid "Callback Phone"
-msgstr "Richiamare"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:649
-#, fuzzy
-msgid "Company Phone"
-msgstr "Ditta"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:650
-#, fuzzy
-msgid "Home Phone"
-msgstr "Casa 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:651
-msgid "Organization"
-msgstr "Organizzazione"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:652
-#, fuzzy
-msgid "Business Address"
-msgstr "Ufficio2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:653
-#, fuzzy
-msgid "Home Address"
-msgstr "Controlla Indirizzo"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:654
-#, fuzzy
-msgid "Mobile Phone"
-msgstr "Cellulare"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:655
-msgid "Car Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:658
-#, fuzzy
-msgid "Business Phone 2"
-msgstr "Ufficio2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:659
-#, fuzzy
-msgid "Home Phone 2"
-msgstr "Casa 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:661
-#, fuzzy
-msgid "Other Phone"
-msgstr "Altri Contatti"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:666
-#, fuzzy
-msgid "TTY"
-msgstr "TTY/TDD"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:667
-#, fuzzy
-msgid "Other Address"
-msgstr "Controlla Indirizzo"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:670
-msgid "Web Site"
-msgstr "Sito Internet"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:671
-msgid "Department"
-msgstr "Dipartimento"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:672
-msgid "Office"
-msgstr "Ufficio"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:673
-msgid "Title"
-msgstr "Posizione"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:674
-msgid "Profession"
-msgstr "Professione"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:675
-msgid "Manager"
-msgstr "Manager"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:677
-msgid "Nickname"
-msgstr "Nickname"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:678
-msgid "Spouse"
-msgstr "Coniuge"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:679
-msgid "Note"
-msgstr "Note"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:680
-msgid "Free-busy URL"
-msgstr "Free-busy URL"
-
-#: addressbook/gui/widgets/e-minicard-control.c:282
-msgid "Save in addressbook"
-msgstr "Salva nella rubrica"
-
-#: addressbook/gui/widgets/e-minicard-view.c:166
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-"\n"
-"\n"
-"Non c'è niente da mostrare in questa vista\n"
-"\n"
-"Fare doppio click qui per creare un nuovo contatto."
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:26
-msgid "Card View"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr "10 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr "8 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr "Moduli bianchi alla fine:"
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr "Corpo"
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr "Inferiore:"
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr "Dimensioni:"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr "Carattere..."
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr "Caratteri"
-
-#: addressbook/printing/e-contact-print.glade.h:9
-msgid "Footer:"
-msgstr "Note a piè di pagina:"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr "Formato"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-msgid "Header"
-msgstr "Intestazione"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr "Intestazione/Note a piè di pagina"
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr "Titoli"
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr "Titolo per ogni lettera"
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr "Altezza:"
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr "Concatenati l'un l'altro"
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr "Includi:"
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr "Orizzontale"
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr "Sinistra:"
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr "Lettere sul bordo"
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr "Margini"
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr "Numero di colonne:"
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr "Opzioni"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr "Orientazione"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr "Pagina"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-msgid "Page Setup:"
-msgstr "Impostazione pagina:"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr "Carta"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr "Alimentazione della carta:"
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr "Verticale"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr "Anteprima:"
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr "Stampa usando ombreggiatura grigia"
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr "Inverti le pagine pari"
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr "Destra:"
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr "Sezioni:"
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr "Ombreggiatura"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-msgid "Size:"
-msgstr "Dimensione:"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr "Inizia su una nuova pagina"
-
-#: addressbook/printing/e-contact-print.glade.h:38
-msgid "Style name:"
-msgstr "Nome dello stile:"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr "Superiore:"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-msgid "Type:"
-msgstr "Tipo:"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr "Larghezza:"
-
-#: addressbook/printing/e-contact-print.glade.h:42
-msgid "label26"
-msgstr "label26"
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr "Errore durante la comunicazione con il server del calendario"
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr "Impossibile leggere il blocco di applicazione del Calendario"
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr "Impossibile leggere il blocco delle applicazioni da fare del Pilot "
-
-#: calendar/gui/calendar-commands.c:266
-msgid "File not found"
-msgstr "File non trovato"
-
-#: calendar/gui/calendar-commands.c:290
-msgid "Open calendar"
-msgstr "Apri calendario"
-
-#: calendar/gui/calendar-commands.c:332
-msgid "Save calendar"
-msgstr "Salva calendario"
-
-#: calendar/gui/calendar-commands.c:468
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-"Impossibile creare la vista del calendario. Controllare le impostazioni di "
-"ORBit e di OAF"
-
-#: calendar/gui/calendar-model.c:360 calendar/gui/calendar-model.c:895
-#: calendar/gui/e-calendar-table.c:330
-msgid "Public"
-msgstr "Pubblico"
-
-#: calendar/gui/calendar-model.c:363 calendar/gui/calendar-model.c:897
-#: calendar/gui/e-calendar-table.c:331
-msgid "Private"
-msgstr "Privato"
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:899
-#: calendar/gui/e-calendar-table.c:332
-msgid "Confidential"
-msgstr "Confidenziale"
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/event-editor.c:1606
-#: calendar/gui/event-editor.c:1633
-#: camel/providers/smtp/camel-smtp-transport.c:218
-msgid "Unknown"
-msgstr "Sconosciuto"
-
-#: calendar/gui/calendar-model.c:457
-msgid "N"
-msgstr "N"
-
-#: calendar/gui/calendar-model.c:457
-msgid "S"
-msgstr "S"
-
-#: calendar/gui/calendar-model.c:459
-msgid "E"
-msgstr "E"
-
-#: calendar/gui/calendar-model.c:459
-msgid "W"
-msgstr "O"
-
-#: calendar/gui/calendar-model.c:497 calendar/gui/calendar-model.c:1063
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:352 mail/message-list.c:662
-msgid "High"
-msgstr "Altezza"
-
-#: calendar/gui/calendar-model.c:499 calendar/gui/calendar-model.c:1065
-#: calendar/gui/calendar-model.c:1569
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:353 mail/message-list.c:661
-msgid "Normal"
-msgstr "Normale"
-
-#: calendar/gui/calendar-model.c:501 calendar/gui/calendar-model.c:1067
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:354 mail/message-list.c:660
-msgid "Low"
-msgstr "Basso"
-
-#: calendar/gui/calendar-model.c:537 calendar/gui/calendar-model.c:1119
-#: calendar/gui/e-calendar-table.c:406
-msgid "Transparent"
-msgstr "Trasparente"
-
-#: calendar/gui/calendar-model.c:540 calendar/gui/calendar-model.c:1121
-#: calendar/gui/e-calendar-table.c:405
-msgid "Opaque"
-msgstr "Opaco"
-
-#: calendar/gui/calendar-model.c:635 calendar/gui/calendar-model.c:1173
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:426
-msgid "Not Started"
-msgstr "Da cominciare"
-
-#: calendar/gui/calendar-model.c:638 calendar/gui/calendar-model.c:1175
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:427
-msgid "In Progress"
-msgstr "In corso"
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1177
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:428
-msgid "Completed"
-msgstr "Completato"
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1179
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:429 camel/camel-service.c:550
-#: camel/camel-service.c:586
-msgid "Cancelled"
-msgstr "Annullato"
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:791 e-util/e-time-utils.c:278
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr "%a %m/%d/%Y %H:%M:%S"
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:794 e-util/e-time-utils.c:287
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr "%a %m/%d/%Y %I:%M:%S %p"
-
-#: calendar/gui/calendar-model.c:799
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-"La data deve essere inserita nel formato:\n"
-"\n"
-"%s"
-
-#: calendar/gui/calendar-model.c:879
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr ""
-"La classificazione dev'essere 'Pubblica', 'Privata', 'Confidenziale' oppure "
-"'nessuna'"
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:893 calendar/gui/calendar-model.c:1117
-#: calendar/gui/calendar-model.c:1171 calendar/gui/e-calendar-table.c:329
-#: calendar/gui/e-calendar-table.c:404 mail/mail-account-gui.c:973
-#: mail/mail-accounts.c:120 mail/mail-accounts.c:164
-#: mail/mail-config.glade.h:37 shell/e-shell-view.c:1179
-#: widgets/misc/e-cell-date-edit.c:234 widgets/misc/e-dateedit.c:430
-#: widgets/misc/e-dateedit.c:1339 widgets/misc/e-dateedit.c:1454
-msgid "None"
-msgstr "Nessuno "
-
-#: calendar/gui/calendar-model.c:967
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-"La posizione geografica deve essere inserita nel formato:\n"
-"\n"
-"45.436845,125.862501"
-
-#: calendar/gui/calendar-model.c:1007
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr "Il valore percentuale deve essere compreso tra 0 e 100, inclusi"
-
-#: calendar/gui/calendar-model.c:1048
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr ""
-"la priorità dev'essere 'Alta', 'Normale', 'Bassa' oppure 'Non definita.'"
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1061
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:355
-msgid "Undefined"
-msgstr "Non definito"
-
-#: calendar/gui/calendar-model.c:1102
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr "La trasparenza dev'essere 'Treasparente', 'Opaca' oppure 'Nessuna'."
-
-#: calendar/gui/calendar-model.c:1571
-msgid "Recurring"
-msgstr "Ricorre"
-
-#: calendar/gui/calendar-model.c:1573
-msgid "Assigned"
-msgstr "Assegnato"
-
-#: calendar/gui/calendar-model.c:1579
-msgid "Yes"
-msgstr "Sì"
-
-#: calendar/gui/calendar-model.c:1579
-msgid "No"
-msgstr "No"
-
-#: calendar/gui/calendar-summary.c:196
-msgid "%A, %e %B %Y"
-msgstr "%A, %e %B %Y"
-
-#: calendar/gui/calendar-summary.c:239 calendar/gui/calendar-summary.c:245
-msgid "%I:%M%p"
-msgstr "%I:%M%p"
-
-#: calendar/gui/calendar-summary.c:437
-msgid "<b>Error loading calendar</b>"
-msgstr "<b>Errore nel caricare il calendario</b>"
-
-#: calendar/gui/calendar-summary.c:449
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr "<b>Errore nel caricare il calendario:<br>Metodo non supportato"
-
-#: calendar/gui/calendar-summary.c:616
-msgid "Display"
-msgstr "Visualizza"
-
-#: calendar/gui/calendar-summary.c:621
-msgid "Show appointments"
-msgstr "Mostra appuntamenti"
-
-#: calendar/gui/calendar-summary.c:629
-msgid "Show tasks"
-msgstr "Mostra obiettivi"
-
-#: calendar/gui/calendar-summary.c:715 calendar/gui/e-itip-control.glade.h:7
-msgid "Loading Calendar"
-msgstr "Caricamento del Calendario"
-
-#: calendar/gui/control-factory.c:126
-msgid "The URI that the calendar will display"
-msgstr "La URI che il calendario visualizzerà"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr "Promemoria appuntamento alle "
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-msgid "Snooze"
-msgstr "Suoneria"
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr "Ok"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr "Servizio di notifica dell'avviso sonoro"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-msgid "Factory for the alarm notification service"
-msgstr "Fabbrica per il servizio di notifica dell'avviso sonoro"
-
-#: calendar/gui/alarm-notify/notify-main.c:56
-#, c-format
-msgid ""
-"It is %s. The Unix time is %ld right now. We just thought you may like to "
-"know."
-msgstr ""
-
-#: calendar/gui/alarm-notify/notify-main.c:94 calendar/gui/main.c:52
-msgid "Could not initialize GNOME"
-msgstr "Impossibile inizializzare GNOME"
-
-#: calendar/gui/alarm-notify/notify-main.c:109
-msgid "Could not create the alarm notify service factory"
-msgstr ""
-"Impossibile creare la babbrica per il servizio di notifica dell'avviso sonoro"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:189
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr "Avviso alle %A %b %d %Y %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:196
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr "Avviso dell'appuntamento alle:%A %b %d %Y %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:207
-msgid "No summary available."
-msgstr "Indice non disponibile."
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:2
-msgid "Close"
-msgstr "Chiudi"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-msgid "Edit appointment"
-msgstr "Modifica appuntamenti"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr "Suoneria (minuti)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr "05 minuti"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr "10 minuti"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr "12 ore (am/pm)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr "15 minuti"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr "24 ore"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr "30 minuti"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr "60 minuti"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr "Interruzione avviso sonoro dopo"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr "Avviso Sonoro"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr "Emette un suono quondo appare la finestra di avviso"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-msgid "Calendar"
-msgstr "Calendario"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr "Preferenze del Calendario"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "Colori"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr "Comprimi i fine settimana"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr "Opzioni del navigatore delle date"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-msgid "Defaults"
-msgstr "Predefinito"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr "Visualizza opzioni"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:162
-msgid "Due Date"
-msgstr "Scadenza"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr "Attiva la suoneria per "
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr "Fine della giornata: "
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr "Primo giorno della settimana:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr "Ven"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:484
-msgid "Friday"
-msgstr "Venerdì"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr "Evidenzia"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr "Scadenze per oggi"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr "Scadenze per oggi:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr "Non ancora scaduti"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr "Non ancora scaduti:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr "Lun"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:480
-msgid "Monday"
-msgstr "Lunedì"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr "Compiti scaduti"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr "Compiti scaduti:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:45
-msgid "Pick a color"
-msgstr "Prendi un colore"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:165
-msgid "Priority"
-msgstr "Priorità"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-msgid "Remind me of all appointments"
-msgstr "Ricordami tutti gli appuntamenti"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-msgid "Reminders"
-msgstr "Promemoria"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr "Sab"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:485
-msgid "Saturday"
-msgstr "Sabato"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr "Mostra"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-msgid "Show appointment end times"
-msgstr "Mostra i termini dell'appuntamento"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr "Mostra i numeri delle settimane"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr "Inizio della giornata:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr "Dom"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:486
-msgid "Sunday"
-msgstr "Domenica"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-msgid "TaskPad"
-msgstr "TaskPad"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr "Gio"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:483
-msgid "Thursday"
-msgstr "Giovedì"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr "Cronometra fino al termine"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr "Suddivisione del tempo:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr "Formato del tempo:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr "Mar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:481
-msgid "Tuesday"
-msgstr "Martedì"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr "Avviso visivo"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr "Mer"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:482
-msgid "Wednesday"
-msgstr "Mercoledì"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr "Settimana lavorativa"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr "minuti prima che inizino."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:78
-msgid "seconds."
-msgstr "secondi."
-
-#: calendar/gui/dialogs/delete-comp.c:70
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr "Sei sicuro di voler cancellare l'appuntamento `%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:73
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr "Sei sicuro di voler cancellare questo appuntamento senza nome?"
-
-#: calendar/gui/dialogs/delete-comp.c:79
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr "Sei sicuro di voler cancellare l'obiettivo `%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:82
-msgid "Are you sure you want to delete this untitled task?"
-msgstr "Sei sicuro di voler cancellare quest'obiettivo senxa nome?"
-
-#: calendar/gui/dialogs/delete-comp.c:88
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr "Sei sicuro di voler cancellare la voce dell'agenda `%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:91
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr "Sei sicuro di voler cancellare questa voce dell'agenda senza nome?"
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr "Salvare le modifiche?"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr "% Comp_leta:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:158
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr "Classificazione"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-msgid "Date & Time"
-msgstr "Data e Ora"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr "Completato in data:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-msgid "Pri_vate"
-msgstr "Pri_vato"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-msgid "Progress"
-msgstr "In corso"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr "Pub_blico"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-msgid "Sta_rt Date:"
-msgstr "Data di _inizio:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-msgid "Su_mmary:"
-msgstr "_Indice:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr "Obiettivo"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-msgid "URL:"
-msgstr "URL:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr "_Confidenziale"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Contacts..."
-msgstr "_Contatti..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-msgid "_Due Date:"
-msgstr "Sca_denza:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-msgid "_Priority:"
-msgstr "_Priorità:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "_Status:"
-msgstr "_Status:"
-
-#: calendar/gui/dialogs/task-editor.c:707
-msgid "Edit Task"
-msgstr "Modifica Obiettivo"
-
-#: calendar/gui/dialogs/task-editor.c:713 calendar/gui/event-editor.c:382
-msgid "No summary"
-msgstr "Niente indice"
-
-#: calendar/gui/dialogs/task-editor.c:719 calendar/gui/event-editor.c:388
-#, c-format
-msgid "Appointment - %s"
-msgstr "Appuntamento - %s"
-
-#: calendar/gui/dialogs/task-editor.c:722 calendar/gui/event-editor.c:391
-#, c-format
-msgid "Task - %s"
-msgstr "Obiettivo - %s"
-
-#: calendar/gui/dialogs/task-editor.c:725 calendar/gui/event-editor.c:394
-#, c-format
-msgid "Journal entry - %s"
-msgstr "Voce nell'agenda - %s"
-
-#: calendar/gui/e-calendar-table.c:157
-msgid "Categories"
-msgstr "Categorie"
-
-#: calendar/gui/e-calendar-table.c:159
-msgid "Completion Date"
-msgstr "Ultimato il"
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "End Date"
-msgstr "Termine"
-
-#: calendar/gui/e-calendar-table.c:161
-msgid "Start Date"
-msgstr "Inizio"
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Geographical Position"
-msgstr "Posizione Geografica"
-
-#: calendar/gui/e-calendar-table.c:164
-msgid "Percent complete"
-msgstr "Percentuale completata"
-
-#: calendar/gui/e-calendar-table.c:166
-msgid "Summary"
-msgstr "Indice"
-
-#: calendar/gui/e-calendar-table.c:167
-msgid "Transparency"
-msgstr "Trasparenza"
-
-#: calendar/gui/e-calendar-table.c:168
-msgid "URL"
-msgstr "URL"
-
-#: calendar/gui/e-calendar-table.c:169
-msgid "Alarms"
-msgstr "Avvisi Sonoro"
-
-#: calendar/gui/e-calendar-table.c:170
-msgid "Click here to add a task"
-msgstr "Fare clic qui per aggiungere un obiettivo"
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "0%"
-msgstr "0%"
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "10%"
-msgstr "10%"
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "20%"
-msgstr "20%"
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "30%"
-msgstr "30%"
-
-#: calendar/gui/e-calendar-table.c:378
-#, c-format
-msgid "40%"
-msgstr "40%"
-
-#: calendar/gui/e-calendar-table.c:379
-#, c-format
-msgid "50%"
-msgstr "50%"
-
-#: calendar/gui/e-calendar-table.c:380
-#, c-format
-msgid "60%"
-msgstr "60%"
-
-#: calendar/gui/e-calendar-table.c:381
-#, c-format
-msgid "70%"
-msgstr "70%"
-
-#: calendar/gui/e-calendar-table.c:382
-#, c-format
-msgid "80%"
-msgstr "80%"
-
-#: calendar/gui/e-calendar-table.c:383
-#, c-format
-msgid "90%"
-msgstr "90%"
-
-#: calendar/gui/e-calendar-table.c:384
-#, c-format
-msgid "100%"
-msgstr "100%"
-
-#: calendar/gui/e-calendar-table.c:551
-msgid "Mark Complete"
-msgstr "Segna come Completato"
-
-#: calendar/gui/e-calendar-table.c:552
-msgid "Mark the task complete"
-msgstr "Segna l'obiettivo come raggiunto"
-
-#: calendar/gui/e-calendar-table.c:557
-msgid "Edit this task..."
-msgstr "Modifica questo obiettivo..."
-
-#: calendar/gui/e-calendar-table.c:558
-msgid "Edit the task"
-msgstr "Modifica obiettivo"
-
-#: calendar/gui/e-calendar-table.c:560
-#: ui/evolution-task-editor-dialog.xml.h:19
-msgid "Delete this task"
-msgstr "Elimina questo obiettivo"
-
-#: calendar/gui/e-calendar-table.c:561
-msgid "Delete the task"
-msgstr "Elimina questo obiettivo"
-
-#: calendar/gui/e-day-view-time-item.c:519
-#, c-format
-msgid "%02i minute divisions"
-msgstr "%02i divisioni per minuto"
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:274 calendar/gui/e-day-view.c:1294
-#: calendar/gui/e-week-view-main-item.c:325
-msgid "%A %d %B"
-msgstr "%A %d %B"
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:278 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:334
-msgid "%a %d %b"
-msgstr "%a %d %b"
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:282 calendar/gui/e-day-view.c:1321
-#: calendar/gui/e-week-view-main-item.c:348
-msgid "%d %b"
-msgstr "%d %b"
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:570 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:617
-msgid "am"
-msgstr "am"
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:573 calendar/gui/e-week-view.c:303
-#: calendar/gui/print.c:616
-msgid "pm"
-msgstr "pm"
-
-#: calendar/gui/e-day-view.c:3146 ui/evolution-calendar.xml.h:16
-msgid "New Appointment"
-msgstr "Nuovo Appuntamento"
-
-#: calendar/gui/e-day-view.c:3148 calendar/gui/e-week-view.c:3280
-msgid "New All Day Event"
-msgstr "Nuovo Evento dell'intera giornata"
-
-#: calendar/gui/e-day-view.c:3153 calendar/gui/e-week-view.c:3285
-msgid "Go to Today"
-msgstr "Vai a Oggi"
-
-#: calendar/gui/e-day-view.c:3155 calendar/gui/e-week-view.c:3287
-msgid "Go to Date..."
-msgstr "Vai alla data..."
-
-#: calendar/gui/e-day-view.c:3162 calendar/gui/e-week-view.c:3293
-#: mail/folder-browser.c:566 ui/evolution-calendar.xml.h:19
-#: ui/evolution-message-composer.xml.h:10
-msgid "Open"
-msgstr "Apri"
-
-#: calendar/gui/e-day-view.c:3164 calendar/gui/e-week-view.c:3295
-msgid "Delete this Appointment"
-msgstr "Elimina questo Appuntamento"
-
-#: calendar/gui/e-day-view.c:3166 calendar/gui/e-week-view.c:3297
-#: ui/evolution-event-editor.xml.h:45
-msgid "Schedule Meeting"
-msgstr "Pianifica una Riunione"
-
-#: calendar/gui/e-day-view.c:3175 calendar/gui/e-week-view.c:3310
-msgid "Make this Occurrence Movable"
-msgstr "Rendi rimandabile questa Ricorrenza"
-
-#: calendar/gui/e-day-view.c:3177 calendar/gui/e-week-view.c:3312
-msgid "Delete this Occurrence"
-msgstr "Elimina questa Ricorrenza"
-
-#: calendar/gui/e-day-view.c:3179
-msgid "Delete all Occurrences"
-msgstr "Elimina tutte le Ricorrenze"
-
-#: calendar/gui/e-itip-control.c:161
-msgid "I couldn't update your calendar file!\n"
-msgstr "Impossibile aggiornare il file del calendario!\n"
-
-#: calendar/gui/e-itip-control.c:167 calendar/gui/e-itip-control.c:510
-msgid "Component successfully updated."
-msgstr "Compnente aggiornata con successo."
-
-#: calendar/gui/e-itip-control.c:173
-msgid "There was an error loading the calendar file."
-msgstr "Si é verificato un errore nel caricare il file del calendario."
-
-#: calendar/gui/e-itip-control.c:197
-msgid "I couldn't open your calendar file!\n"
-msgstr "Impossibile aprire il file del calendario!\n"
-
-#: calendar/gui/e-itip-control.c:458 calendar/gui/e-itip-control.c:529
-msgid "I couldn't load your calendar file!\n"
-msgstr "Impossibile caricare il file del calendario!\n"
-
-#: calendar/gui/e-itip-control.c:470
-msgid "I couldn't read your calendar file!\n"
-msgstr "Impossibile leggere il file del calendario!\n"
-
-#: calendar/gui/e-itip-control.c:483
-msgid "This is a reply from someone who was uninvited!"
-msgstr "Questa é la risposta di qualcuno che non era stato invitato!"
-
-#: calendar/gui/e-itip-control.c:499
-msgid "I couldn't update your calendar store."
-msgstr "Impossibile aggiornare l'archivio del calendario."
-
-#: calendar/gui/e-itip-control.c:540
-msgid "I couldn't delete the calendar component!\n"
-msgstr "Impossibile cancellare il componente del calendario!\n"
-
-#: calendar/gui/e-itip-control.c:550
-msgid "Component successfully deleted."
-msgstr "Componente aggiornato con successo."
-
-#: calendar/gui/e-itip-control.c:694
-msgid "I don't recognize this type of calendar component."
-msgstr "Tipo di componente del calendario non riconosciuto."
-
-#: calendar/gui/e-itip-control.c:780
-msgid "Add to Calendar"
-msgstr "Aggiungi al Calendario"
-
-#: calendar/gui/e-itip-control.c:814
-#, fuzzy
-msgid " Accept "
-msgstr "Accetta"
-
-#: calendar/gui/e-itip-control.c:815
-#, fuzzy
-msgid " Decline "
-msgstr "Annulla"
-
-#: calendar/gui/e-itip-control.c:816
-#, fuzzy
-msgid " Tentative "
-msgstr "Tentativo"
-
-#: calendar/gui/e-itip-control.c:860
-msgid "Update Calendar"
-msgstr "Aggiorna Calendario"
-
-#: calendar/gui/e-itip-control.c:883
-msgid "Cancel Meeting"
-msgstr "Annulla Riunione"
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, no-c-format
-msgid "%P %%"
-msgstr "%p %%"
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr "--a--"
-
-#: calendar/gui/e-itip-control.glade.h:4
-msgid "Calendar Message"
-msgstr "Messaggio del Calendario"
-
-#: calendar/gui/e-itip-control.glade.h:5 mail/mail-format.c:623
-msgid "Date:"
-msgstr "Data:"
-
-#: calendar/gui/e-itip-control.glade.h:8
-msgid "Loading calendar..."
-msgstr "Caricamento del calendario..."
-
-#: calendar/gui/e-itip-control.glade.h:9
-msgid "Organizer:"
-msgstr "Organizzatore:"
-
-#: calendar/gui/e-itip-control.glade.h:10
-#, fuzzy
-msgid "Server Message:"
-msgstr "Salva Messaggio con nome..."
-
-#: calendar/gui/e-itip-control.glade.h:11
-msgid "Summary:"
-msgstr "Indice:"
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr "termine"
-
-#: calendar/gui/e-itip-control.glade.h:13
-msgid "date-start"
-msgstr "inizio"
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-msgid "Attendee"
-msgstr "Partecipante"
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-msgid "Attendee address"
-msgstr "Indirizzo del partecipante"
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-msgid "Attendees: "
-msgstr "Partecipanti:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr ""
-"Annulla \n"
-"Riunione"
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-msgid "Chair"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-msgid "Meeting Invitations"
-msgstr "Inviti alla riunione"
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr "Non Partecipante"
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr "Partecipante Opzionale"
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-msgid "Organizer: "
-msgstr "Organizzatore: "
-
-#: calendar/gui/e-meeting-dialog.glade.h:15
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-"Pubblica\n"
-"Evento"
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid "RSVP"
-msgstr "RSVP"
-
-#: calendar/gui/e-meeting-dialog.glade.h:18
-msgid ""
-"Request\n"
-"Meeting"
-msgstr ""
-"Richiesta\n"
-"Riunione"
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-msgid "Required Participant"
-msgstr "Partecipante Richiesto"
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-msgid "Role"
-msgstr "Ruolo"
-
-#: calendar/gui/e-meeting-dialog.glade.h:22
-msgid ""
-"Schedule\n"
-"Time"
-msgstr ""
-"Organizza\n"
-"Tempo"
-
-#: calendar/gui/e-meeting-dialog.glade.h:24 filter/libfilter-i18n.h:49
-#: mail/message-list.c:1054
-msgid "Status"
-msgstr "Status"
-
-#: calendar/gui/e-tasks.c:149 calendar/gui/e-tasks.c:469
-#: calendar/gui/e-tasks.c:502
-msgid "All"
-msgstr "Tutti"
-
-#: calendar/gui/e-tasks.c:155
-msgid "Category:"
-msgstr "Categoria:"
-
-#: calendar/gui/e-tasks.c:298
-#, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "Impossibile caricare l'obiettivo in `%s'"
-
-#: calendar/gui/e-tasks.c:310
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr "Il metodo richiesto per caricare `%s' non è supportato"
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:342
-msgid "%d %B"
-msgstr "%d %B"
-
-#: calendar/gui/e-week-view.c:3278 calendar/gui/e-week-view.c:3301
-msgid "New Appointment..."
-msgstr "Nuovo Appuntamento..."
-
-#: calendar/gui/e-week-view.c:3314
-msgid "Delete All Occurrences"
-msgstr "Elimina Tutte le Ricorrenze"
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr "_Eventi della giornata"
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-msgid "Appointment"
-msgstr "Appuntamento"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-msgid "Appointment Basics"
-msgstr "Appuntamenti di Base:"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-msgid "Custom recurrence"
-msgstr "Ricorrenza personalizzata"
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr "Ogni"
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-msgid "Exceptions"
-msgstr "Eccezioni"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-msgid "Modify"
-msgstr "Modifica"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-msgid "No recurrence"
-msgstr "Nessuna Ricorrenza"
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1593
-msgid "Play a sound"
-msgstr "Emetti un suono"
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-msgid "Preview"
-msgstr "Anteprima"
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Recurrence"
-msgstr "Ricorrenza"
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-msgid "Recurrence Rule"
-msgstr "Regole di ricorrenza"
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-msgid "Reminder"
-msgstr "Promemoria"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1602
-msgid "Run a program"
-msgstr "Esegui programma"
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1599
-msgid "Send an email"
-msgstr "Invia un email"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-msgid "Settings..."
-msgstr "Impostazioni..."
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1596
-msgid "Show a dialog"
-msgstr "Mostra un dialogo"
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr "Semplice ricorrenza"
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-msgid "_End time:"
-msgstr "Ora di _fine:"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Start time:"
-msgstr "_Ora di inizio:"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Starting date:"
-msgstr "Data di _inizio:"
-
-#. Automatically generated. Do not edit.
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:2
-msgid "after"
-msgstr "dopo"
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:6
-msgid "before"
-msgstr "prima"
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "day(s)"
-msgstr "giorno(i)"
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-msgid "end of appointment"
-msgstr "termine dell'appuntamento"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "for"
-msgstr "per"
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr "sempre"
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-msgid "hour(s)"
-msgstr "Ora (e)"
-
-#: calendar/gui/event-editor-dialog.glade.h:40
-msgid "label21"
-msgstr "label21"
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "label55"
-msgstr "label55"
-
-#: calendar/gui/event-editor-dialog.glade.h:42 mail/mail-config.glade.h:77
-msgid "minute(s)"
-msgstr "minuto(i)"
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-msgid "month(s)"
-msgstr "mese(i)"
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "start of appointment"
-msgstr "inizio dell'appuntamento"
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "until"
-msgstr "fino a"
-
-#: calendar/gui/event-editor-dialog.glade.h:46
-msgid "week(s)"
-msgstr "Settimana(e)"
-
-#: calendar/gui/event-editor-dialog.glade.h:47
-msgid "year(s)"
-msgstr "anno(i)"
-
-#: calendar/gui/event-editor.c:376
-msgid "Edit Appointment"
-msgstr "Modifica Appuntamenti"
-
-#: calendar/gui/event-editor.c:454
-msgid "on"
-msgstr "il"
-
-#: calendar/gui/event-editor.c:479 filter/filter-datespec.c:81
-msgid "day"
-msgstr "giorno"
-
-#: calendar/gui/event-editor.c:606
-msgid "on the"
-msgstr "il"
-
-#: calendar/gui/event-editor.c:613
-msgid "th"
-msgstr " "
-
-#: calendar/gui/event-editor.c:759
-msgid "occurrences"
-msgstr "ricorrenze"
-
-#: calendar/gui/event-editor.c:876
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr ""
-"Questo appuntamento contiene ricorrenze che Evolution non può modificare."
-
-#: calendar/gui/event-editor.c:1548
-#, c-format
-msgid " %d days"
-msgstr " %d giorni"
-
-#: calendar/gui/event-editor.c:1550
-msgid " 1 day"
-msgstr " 1 giorno"
-
-#: calendar/gui/event-editor.c:1553
-#, c-format
-msgid " %d weeks"
-msgstr " %d settimane"
-
-#: calendar/gui/event-editor.c:1555
-msgid " 1 week"
-msgstr " 1 settimana"
-
-#: calendar/gui/event-editor.c:1558
-#, c-format
-msgid " %d hours"
-msgstr " %d ore"
-
-#: calendar/gui/event-editor.c:1560
-msgid " 1 hour"
-msgstr " 1 ora"
-
-#: calendar/gui/event-editor.c:1563
-#, c-format
-msgid " %d minutes"
-msgstr " %d minuti"
-
-#: calendar/gui/event-editor.c:1565
-msgid " 1 minute"
-msgstr " 1 minuto"
-
-#: calendar/gui/event-editor.c:1568
-#, c-format
-msgid " %d seconds"
-msgstr " %d secondi"
-
-#: calendar/gui/event-editor.c:1570
-msgid " 1 second"
-msgstr " 1 secondo"
-
-#: calendar/gui/event-editor.c:1617
-msgid " before start of appointment"
-msgstr " prima dell'inizio di un appuntamento"
-
-#: calendar/gui/event-editor.c:1619
-msgid " after start of appointment"
-msgstr " dopo l'inizio di un appuntamento"
-
-#: calendar/gui/event-editor.c:1627
-msgid " before end of appointment"
-msgstr " prima della fine di un appuntamento"
-
-#: calendar/gui/event-editor.c:1629
-msgid " after end of appointment"
-msgstr " dopo la fine di un appuntamento"
-
-#: calendar/gui/event-editor.c:3137 calendar/gui/print.c:1097
-#: calendar/gui/print.c:1099 calendar/gui/print.c:1100
-msgid "%a %b %d %Y"
-msgstr "%a %b %d %Y"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr "Un semplice controllo di Bonobo che visualizza un calendario."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-msgid "Evolution calendar executive summary component."
-msgstr "Componente dell'sommario esecutivo del calendario di Evolution."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr "Visore iTip/iMip del calendario di Evolution"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr "Componente di Evolution per gestire il calendario."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-msgid "Factory for the Calendar Summary component."
-msgstr "Fabbrica per il componente del Sommario del Calendario."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-msgid "Factory for the Evolution calendar component."
-msgstr "Fabbrica per il componente del calendario di Evolution."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-msgid "Factory for the calendar iTip view control"
-msgstr "Fabbrica per il controllo della vista iTip del calendario"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-msgid "Factory for the sample Calendar control"
-msgstr "Fabbrica per il controllo del Calendario di esempio"
-
-#: calendar/gui/gnome-cal.c:223
-#, fuzzy
-msgid "Show all "
-msgstr "Mostra Tutto"
-
-#: calendar/gui/gnome-cal.c:237
-#, fuzzy
-msgid "Summary contains"
-msgstr "Email contiene"
-
-#: calendar/gui/gnome-cal.c:238
-#, fuzzy
-msgid "Description contains"
-msgstr "Descrizione:"
-
-#: calendar/gui/gnome-cal.c:239
-#, fuzzy
-msgid "Comment contains"
-msgstr "Il nome contiene"
-
-#: calendar/gui/gnome-cal.c:240
-#, fuzzy
-msgid "Has category"
-msgstr "Categoria:"
-
-#: calendar/gui/gnome-cal.c:843
-#, c-format
-msgid "Could not open the folder in `%s'"
-msgstr "Impossibile aprire la cartella in `%s'"
-
-#: calendar/gui/gnome-cal.c:854
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr "Il metodo richiesto per aprire `%s' non è supportato"
-
-#: calendar/gui/goto-dialog.glade.h:1
-msgid "April"
-msgstr "Aprile"
-
-#: calendar/gui/goto-dialog.glade.h:2
-msgid "August"
-msgstr "Agosto"
-
-#: calendar/gui/goto-dialog.glade.h:3
-msgid "December"
-msgstr "Dicembre"
-
-#: calendar/gui/goto-dialog.glade.h:4
-msgid "February"
-msgstr "Febbraio"
-
-#: calendar/gui/goto-dialog.glade.h:5
-msgid "Go To Date"
-msgstr "Vai alla data"
-
-#: calendar/gui/goto-dialog.glade.h:6
-msgid "Go To Today"
-msgstr "Vai a oggi"
-
-#: calendar/gui/goto-dialog.glade.h:7
-msgid "January"
-msgstr "Gennaio"
-
-#: calendar/gui/goto-dialog.glade.h:8
-msgid "July"
-msgstr "Luglio"
-
-#: calendar/gui/goto-dialog.glade.h:9
-msgid "June"
-msgstr "Giugno"
-
-#: calendar/gui/goto-dialog.glade.h:10
-msgid "March"
-msgstr "Marzo"
-
-#: calendar/gui/goto-dialog.glade.h:11
-msgid "May"
-msgstr "Maggio"
-
-#: calendar/gui/goto-dialog.glade.h:12
-msgid "November"
-msgstr "Novembre"
-
-#: calendar/gui/goto-dialog.glade.h:13
-msgid "October"
-msgstr "Ottobre"
-
-#: calendar/gui/goto-dialog.glade.h:14
-msgid "September"
-msgstr "Settembre"
-
-#: calendar/gui/print.c:300
-msgid "1st"
-msgstr "1"
-
-#: calendar/gui/print.c:300
-msgid "2nd"
-msgstr "2"
-
-#: calendar/gui/print.c:300
-msgid "3rd"
-msgstr "3"
-
-#: calendar/gui/print.c:300
-msgid "4th"
-msgstr "4"
-
-#: calendar/gui/print.c:300
-msgid "5th"
-msgstr "5"
-
-#: calendar/gui/print.c:301
-msgid "6th"
-msgstr "6"
-
-#: calendar/gui/print.c:301
-msgid "7th"
-msgstr "7"
-
-#: calendar/gui/print.c:301
-msgid "8th"
-msgstr "8"
-
-#: calendar/gui/print.c:301
-msgid "9th"
-msgstr "9"
-
-#: calendar/gui/print.c:301
-msgid "10th"
-msgstr "10"
-
-#: calendar/gui/print.c:302
-msgid "11th"
-msgstr "11"
-
-#: calendar/gui/print.c:302
-msgid "12th"
-msgstr "12"
-
-#: calendar/gui/print.c:302
-msgid "13th"
-msgstr "13"
-
-#: calendar/gui/print.c:302
-msgid "14th"
-msgstr "14"
-
-#: calendar/gui/print.c:302
-msgid "15th"
-msgstr "15"
-
-#: calendar/gui/print.c:303
-msgid "16th"
-msgstr "16"
-
-#: calendar/gui/print.c:303
-msgid "17th"
-msgstr "17"
-
-#: calendar/gui/print.c:303
-msgid "18th"
-msgstr "18"
-
-#: calendar/gui/print.c:303
-msgid "19th"
-msgstr "19"
-
-#: calendar/gui/print.c:303
-msgid "20th"
-msgstr "20"
-
-#: calendar/gui/print.c:304
-msgid "21st"
-msgstr "21"
-
-#: calendar/gui/print.c:304
-msgid "22nd"
-msgstr "22"
-
-#: calendar/gui/print.c:304
-msgid "23rd"
-msgstr "23"
-
-#: calendar/gui/print.c:304
-msgid "24th"
-msgstr "24"
-
-#: calendar/gui/print.c:304
-msgid "25th"
-msgstr "25"
-
-#: calendar/gui/print.c:305
-msgid "26th"
-msgstr "26"
-
-#: calendar/gui/print.c:305
-msgid "27th"
-msgstr "27"
-
-#: calendar/gui/print.c:305
-msgid "28th"
-msgstr "28"
-
-#: calendar/gui/print.c:305
-msgid "29th"
-msgstr "29"
-
-#: calendar/gui/print.c:305
-msgid "30th"
-msgstr "30"
-
-#: calendar/gui/print.c:306
-msgid "31st"
-msgstr "31"
-
-#: calendar/gui/print.c:362
-msgid "Su"
-msgstr "Do"
-
-#: calendar/gui/print.c:362
-msgid "Mo"
-msgstr "Lu"
-
-#: calendar/gui/print.c:362
-msgid "Tu"
-msgstr "Ma"
-
-#: calendar/gui/print.c:362
-msgid "We"
-msgstr "Me"
-
-#: calendar/gui/print.c:362
-msgid "Th"
-msgstr "Gi"
-
-#: calendar/gui/print.c:362
-msgid "Fr"
-msgstr "Ve"
-
-#: calendar/gui/print.c:362
-msgid "Sa"
-msgstr "Sa"
-
-#: calendar/gui/print.c:948 views/tasks/galview.xml.h:1
-msgid "Tasks"
-msgstr "Obiettivi"
-
-#. Day
-#: calendar/gui/print.c:1078
-msgid "Current day (%a %b %d %Y)"
-msgstr "Data odierna (%a %b %d %Y)"
-
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1096
-msgid "%a %b %d"
-msgstr "%a %b %d"
-
-#: calendar/gui/print.c:1093
-msgid "%a %d %Y"
-msgstr "%a %d %Y"
-
-#: calendar/gui/print.c:1104
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr "Settimana corrente (%s - %s) "
-
-#. Month
-#: calendar/gui/print.c:1112
-msgid "Current month (%b %Y)"
-msgstr "Mese corrente (%b %Y)"
-
-#. Year
-#: calendar/gui/print.c:1119
-msgid "Current year (%Y)"
-msgstr "Anno corrente (%Y)"
-
-#: calendar/gui/print.c:1156
-msgid "Print Calendar"
-msgstr "Stampa Calendario"
-
-#: calendar/gui/print.c:1321 mail/mail-callbacks.c:1465
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:24
-#: ui/evolution-mail.xml.h:53
-msgid "Print Preview"
-msgstr "Anteprima di stampa"
-
-#: calendar/gui/tasks-control.c:108
-msgid "The URI of the tasks folder to display"
-msgstr "La URI della cartella degli obiettivi da visualizzare"
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-"Evolution ha preso gli impegni che erano nella cartella del calendario e li "
-"ha automaticamente spostati nella nuova cartella degli impegni."
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-"Evolution ha cercato di prendere gli obiettivi presenti nella cartella del "
-"calendario e farli migrare nella nuova cartella degli obiettivi.\n"
-"Alcuni obiettivi potrebbero non essere stati spostati e quindi questo "
-"precesso potrebbe essere ritentato in futuro."
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-"Impossibile aprire `%s'; nessun oggetto della cartella del calendario sarà "
-"spostato nella cartella degli obiettivi."
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-"Il metodo richiesto per caricare `%s' non é supportato; nessun oggetto della "
-"cartella del calendario sarà spostato nella cartella degli obiettivi."
-
-#: calendar/gui/weekday-picker.c:315 calendar/gui/weekday-picker.c:410
-msgid "SMTWTFS"
-msgstr "DLMMGVS"
-
-#: camel/camel-cipher-context.c:169
-#, fuzzy
-msgid "Signing is not supported by this cipher"
-msgstr "Tipo on supportato"
-
-#: camel/camel-cipher-context.c:209
-#, fuzzy
-msgid "Clearsigning is not supported by this cipher"
-msgstr "Tipo on supportato"
-
-#: camel/camel-cipher-context.c:249
-#, fuzzy
-msgid "Verifying is not supported by this cipher"
-msgstr "Tipo on supportato"
-
-#: camel/camel-cipher-context.c:292
-#, fuzzy
-msgid "Encryption is not supported by this cipher"
-msgstr "Tipo on supportato"
-
-#: camel/camel-cipher-context.c:334
-#, fuzzy
-msgid "Decryption is not supported by this cipher"
-msgstr "Tipo on supportato"
-
-#: camel/camel-filter-driver.c:534 camel/camel-filter-driver.c:543
-#, fuzzy
-msgid "Syncing folders"
-msgstr "Sincronizzazione cartella"
-
-#: camel/camel-filter-driver.c:643
-#, fuzzy
-msgid "Unable to open spool folder"
-msgstr "Impossibile aprire la rubruca"
-
-#: camel/camel-filter-driver.c:652
-#, fuzzy
-msgid "Unable to process spool folder"
-msgstr "Impossibile aprire la rubruca"
-
-#: camel/camel-filter-driver.c:666
-#, fuzzy
-msgid "Getting message %d (%d%%)"
-msgstr "Scaricamento del messaggio %s"
-
-#: camel/camel-filter-driver.c:670 camel/camel-filter-driver.c:679
-#, fuzzy, c-format
-msgid "Failed message %d"
-msgstr "_Invia messaggio"
-
-#: camel/camel-filter-driver.c:671
-#, fuzzy
-msgid "Cannot open message"
-msgstr ""
-"Impossibile prendere il messaggio: %s\n"
-"%s"
-
-#: camel/camel-filter-driver.c:690 camel/camel-filter-driver.c:788
-#, fuzzy
-msgid "Syncing folder"
-msgstr "Sincronizzazione cartella"
-
-#: camel/camel-filter-driver.c:694 camel/camel-filter-driver.c:793
-#, fuzzy
-msgid "Complete"
-msgstr "Completato"
-
-#: camel/camel-filter-driver.c:748
-#, fuzzy, c-format
-msgid "Getting message %d of %d"
-msgstr "Salvare messaggio %d di %d (uid \"%s\")"
-
-#: camel/camel-filter-driver.c:753 camel/camel-filter-driver.c:771
-#, fuzzy, c-format
-msgid "Failed at message %d of %d"
-msgstr "Salvare messaggio %d di %d (uid \"%s\")"
-
-#: camel/camel-filter-driver.c:866
-#, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr "Errore nel filtro di smistamento: %s: %s"
-
-#: camel/camel-filter-driver.c:871
-#, c-format
-msgid "Error executing filter: %s: %s"
-msgstr "Errore nell'esecuzione del filtro: %s: %s"
-
-#: camel/camel-filter-search.c:439 camel/camel-filter-search.c:445
-#, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr "Errore nell'esecuzione della ricerca con filtro: %s: %s"
-
-#: camel/camel-folder-search.c:328
-#, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-"Impossibile filtrare l'espressione di ricerca: %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:338
-#, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr ""
-"Errore nell'esecuzione della ricerca: %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:485 camel/camel-folder-search.c:513
-msgid "(match-all) requires a single bool result"
-msgstr "(match-all) richiede un singolo risultato booleano"
-
-#: camel/camel-folder-search.c:559
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr "É stata effettuata una ricerca su un header sconosciuto: %s"
-
-#: camel/camel-folder-search.c:670 camel/camel-folder-search.c:714
-msgid "Invalid type in body-contains, expecting string"
-msgstr "Tipo non valido in body-contains, ci si aspettava una stringa"
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:92 camel/camel-lock.c:111 camel/camel-movemail.c:138
-#: camel/camel-movemail.c:185
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "Impossibile creare il file di blocco per %s; %s"
-
-#: camel/camel-lock.c:151 camel/camel-movemail.c:219
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr ""
-"Tempo scaduto nel tentativo di prendere il file di lock %s. Riprovare più "
-"tardi."
-
-#: camel/camel-lock.c:201
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr "Rimozione del lock usando fcntl(2) non riuscita: %s"
-
-#: camel/camel-lock.c:255
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr "Rimozione del lock usando flock(2) non riuscita: %s"
-
-#: camel/camel-movemail.c:101
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr "Impossibile controllare il file di posta %s: %s"
-
-#: camel/camel-movemail.c:148
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr "Impossibile aprire il file di posta %s: %s"
-
-#: camel/camel-movemail.c:158
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr "Impossibile aprire il file di posta temporaneo %s: %s"
-
-#: camel/camel-movemail.c:199
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr "Impossibile verificare il file di blocco per %s: %s"
-
-#: camel/camel-movemail.c:245
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr "Errore nella lettura del file di posta: %s"
-
-#: camel/camel-movemail.c:256
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr "Errore nella scrittura del file temp di posta: %s"
-
-#: camel/camel-movemail.c:274
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr "Fallita l'archiviazione della posta nel file temporaneo %s: %s"
-
-#: camel/camel-movemail.c:306
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr "Impossibile ridirigere: %s "
-
-#: camel/camel-movemail.c:318
-#, c-format
-msgid "Could not fork: %s"
-msgstr "Impossibile fare un fork: %s"
-
-#: camel/camel-movemail.c:356
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr "Fallito lo spostamento della posta: %s"
-
-#: camel/camel-movemail.c:357
-msgid "(Unknown error)"
-msgstr "(Errore sconosciuto)"
-
-#: camel/camel-movemail.c:587
-#, fuzzy, c-format
-msgid "Error copying mail temp file: %s"
-msgstr "Errore nella scrittura del file temp di posta: %s"
-
-#: camel/camel-pgp-context.c:190
-#, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr "Digitare la %s passphrase per %s"
-
-#: camel/camel-pgp-context.c:193
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr "Digitare la %s passphrase"
-
-#: camel/camel-pgp-context.c:513
-msgid "No plaintext to sign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:520 camel/camel-pgp-context.c:692
-#: camel/camel-pgp-context.c:1061 camel/camel-pgp-context.c:1273
-msgid "No password provided."
-msgstr "Non è stata fornita alcuna password."
-
-#: camel/camel-pgp-context.c:526 camel/camel-pgp-context.c:698
-#: camel/camel-pgp-context.c:881 camel/camel-pgp-context.c:1068
-#: camel/camel-pgp-context.c:1280
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr "Impossibile ridirigere verso GPG/PGP: %s "
-
-#: camel/camel-pgp-context.c:685
-msgid "No plaintext to clearsign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:875
-msgid "No plaintext to verify."
-msgstr ""
-
-#: camel/camel-pgp-context.c:892
-#, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "Impossibile creare file temporaneo: %s "
-
-#: camel/camel-pgp-context.c:1051
-#, fuzzy
-msgid "No plaintext to encrypt."
-msgstr "Cliccare l'icona per decifrare."
-
-#: camel/camel-pgp-context.c:1077
-msgid "No recipients specified"
-msgstr "Nessun destinatario specificato"
-
-#: camel/camel-pgp-context.c:1265
-msgid "No ciphertext to decrypt."
-msgstr ""
-
-#: camel/camel-provider.c:131
-#, c-format
-msgid "Could not load %s: Module loading not supported on this system."
-msgstr ""
-
-#: camel/camel-provider.c:140
-#, c-format
-msgid "Could not load %s: %s"
-msgstr "Impossibile caricare %s: %s"
-
-#: camel/camel-provider.c:148
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr "Impossibile caricare %s: nessun codice di inizializzazione nel modulo."
-
-#: camel/camel-remote-store.c:186
-#, c-format
-msgid "%s server %s"
-msgstr "%s server %s"
-
-#: camel/camel-remote-store.c:190
-#, c-format
-msgid "%s service for %s on %s"
-msgstr "%s servizio per %s su %s"
-
-#: camel/camel-remote-store.c:240
-msgid "Connection cancelled"
-msgstr "Connessione annullata"
-
-#: camel/camel-remote-store.c:243
-#: camel/providers/smtp/camel-smtp-transport.c:261
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr "Impossibile connettersi a %s (porta %d): %s"
-
-#: camel/camel-remote-store.c:244
-msgid "(unknown host)"
-msgstr "(host sconosciuto)"
-
-#: camel/camel-remote-store.c:325 camel/camel-remote-store.c:387
-#: camel/camel-remote-store.c:458
-#: camel/providers/imap/camel-imap-command.c:264
-msgid "Operation cancelled"
-msgstr "Operazione annullata"
-
-#: camel/camel-remote-store.c:464
-msgid "Server unexpectedly disconnected"
-msgstr "Il server si é disconnesso inaspettatamente"
-
-#: camel/camel-sasl-anonymous.c:33
-msgid "Anonymous"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:35
-#, fuzzy
-msgid "This option will connect to the server using an anonymous login."
-msgstr ""
-"Con questa opzione ci si connette al server IMAP usando una password di "
-"testo semplice."
-
-#: camel/camel-sasl-anonymous.c:110 camel/camel-sasl-plain.c:87
-msgid "Authentication failed."
-msgstr "Autenticazione fallita"
-
-#: camel/camel-sasl-anonymous.c:119
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:131
-#, fuzzy, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr ""
-"Errore nel caricare le informazioni dei filtri:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:143
-#, fuzzy, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr "informazioni sul calendario"
-
-#: camel/camel-sasl-cram-md5.c:35
-msgid "CRAM-MD5"
-msgstr "CRAM-MD5"
-
-#: camel/camel-sasl-cram-md5.c:37
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-"Con questa opzione ci si connette al server usando una password CRAM-MD5 "
-"sicura, se il server lo supporta."
-
-#: camel/camel-sasl-digest-md5.c:43
-msgid "DIGEST-MD5"
-msgstr "DIGEST-MD5"
-
-#: camel/camel-sasl-digest-md5.c:45
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-"Questa opizone si connette al serverusando una password sicura DIGEST-MD5, "
-"se il server lo supporta."
-
-#: camel/camel-sasl-digest-md5.c:810
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:819
-msgid "Server challenge invalid\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:825
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:847
-msgid "Server response did not contain authorization data\n"
-msgstr "La risposta del server non contiene dati per l'autenticazione\n"
-
-#: camel/camel-sasl-digest-md5.c:865
-msgid "Server response contained incomplete authorization data\n"
-msgstr ""
-"La risposta del server non contiene dati completi per l'autenticazione\n"
-
-#: camel/camel-sasl-digest-md5.c:875
-msgid "Server response does not match\n"
-msgstr "La risposta del server non corrisponde\n"
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "Kerberos 4"
-msgstr "Kerberos 4"
-
-#: camel/camel-sasl-kerberos4.c:42
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr ""
-"Con questa ci si connette al server usando Kerberos 4 per l'autenticazione."
-
-#: camel/camel-sasl-kerberos4.c:161
-#, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr ""
-"Impossibile avere il ticket di Kerberos:\n"
-" %s"
-
-#: camel/camel-sasl-kerberos4.c:218
-#: camel/providers/imap/camel-imap-store.c:420
-msgid "Bad authentication response from server."
-msgstr "Cattiva risposta di autenticazione dal server."
-
-#: camel/camel-sasl-plain.c:34
-#, fuzzy
-msgid "This option will connect to the server using a simple password."
-msgstr ""
-"Con questa opzione ci si connette al server IMAP usando una password di "
-"testo semplice."
-
-#: camel/camel-search-private.c:110
-#, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr "Compilazione dell'espressione regolare fallita: %s: %s"
-
-#: camel/camel-service.c:152
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr "URL '%s' necessita di un componente per lo username "
-
-#: camel/camel-service.c:160
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr "URL '%s' necessita di un componente per l'host"
-
-#: camel/camel-service.c:168
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr "URL '%s' necessita di un componente per il percorso"
-
-#: camel/camel-service.c:554
-#, c-format
-msgid "Resolving: %s"
-msgstr ""
-
-#: camel/camel-service.c:581
-#, c-format
-msgid "Failure in name lookup: %s"
-msgstr ""
-
-#: camel/camel-service.c:606
-#, c-format
-msgid "Host lookup failed: %s: host not found"
-msgstr ""
-
-#: camel/camel-service.c:608
-#, c-format
-msgid "Host lookup failed: %s: unknown reason"
-msgstr ""
-
-#: camel/camel-session.c:56
-msgid "Virtual folder email provider"
-msgstr "Fornitore di cartelle email virtuali "
-
-#: camel/camel-session.c:58
-msgid "For reading mail as a query of another set of folders"
-msgstr "Per leggere la posta come una ricerca di un altro insieme di cartelle"
-
-#: camel/camel-session.c:273 camel/camel-session.c:363
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr "Nessun fornitore disponibile per il protocollo `%s'"
-
-#: camel/camel-session.c:462
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"Impossibile creare la directory %s:\n"
-"%s"
-
-#. Fill in the new fields
-#: camel/camel-store.c:380 mail/mail-ops.c:994 mail/mail-ops.c:1001
-#: mail/mail-ops.c:1019 mail/mail-ops.c:1020
-msgid "Trash"
-msgstr "Cestino"
-
-#: camel/camel-url.c:289
-#, fuzzy, c-format
-msgid "Could not parse URL `%s'"
-msgstr ""
-"Impossibile il file %s:\n"
-"%s "
-
-#: camel/camel-vee-folder.c:451
-#, fuzzy, c-format
-msgid "No such message %s in %s"
-msgstr "Non é presente il messaggio: %s"
-
-#: camel/camel-vee-folder.c:545
-#, c-format
-msgid "No such message: %s"
-msgstr "Non é presente il messaggio: %s"
-
-#: camel/providers/imap/camel-imap-command.c:209
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "Risposta inaspettata dal server IMAP: %s"
-
-#: camel/providers/imap/camel-imap-command.c:217
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr "Comando IMAP fallito: %s"
-
-#: camel/providers/imap/camel-imap-command.c:218 shell/e-storage.c:481
-msgid "Unknown error"
-msgstr "Errore sconosciuto"
-
-#: camel/providers/imap/camel-imap-command.c:272
-msgid "Server response ended too soon."
-msgstr "La risposta del server è terminata troppo presto."
-
-#: camel/providers/imap/camel-imap-command.c:456
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr "La risposta del server IMAP non contiene informazione %s"
-
-#: camel/providers/imap/camel-imap-command.c:490
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr "Risposta OK inattesa dal server IMAP: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:170
-#, c-format
-msgid "Could not load summary for %s"
-msgstr "Impossibile caricare l'indice per %s"
-
-#: camel/providers/imap/camel-imap-folder.c:349
-msgid "Scanning IMAP folder"
-msgstr "Scansione delle cartelle IMAP in corso"
-
-#: camel/providers/imap/camel-imap-folder.c:984
-#: camel/providers/imap/camel-imap-folder.c:1195
-#, fuzzy
-msgid "This message is not currently available"
-msgstr ""
-"Questo messaggio non ha l'oggetto.\n"
-"Inviare lo stesso?"
-
-#: camel/providers/imap/camel-imap-folder.c:1014
-#: camel/providers/imap/camel-imap-folder.c:1229
-msgid "Could not find message body in FETCH response."
-msgstr "Impossibile trovare il corpo del messaggio nella risposta di FETCH."
-
-#: camel/providers/imap/camel-imap-provider.c:43 mail/mail-config.glade.h:11
-#, fuzzy
-msgid "Checking for new mail"
-msgstr "Crea una nuova email"
-
-#: camel/providers/imap/camel-imap-provider.c:45
-#, fuzzy
-msgid "Check for new messages in all folders"
-msgstr "Copia messaggio in una nuova cartella"
-
-#: camel/providers/imap/camel-imap-provider.c:48 shell/e-shell-view.c:534
-msgid "Folders"
-msgstr "Cartelle"
-
-#: camel/providers/imap/camel-imap-provider.c:50
-#, fuzzy
-msgid "Show only subscribed folders"
-msgstr "Aggiungi una cartella alla lista di cartelle a cui sei iscritto"
-
-#: camel/providers/imap/camel-imap-provider.c:52
-msgid "Override server-supplied folder namespace"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:54
-#, fuzzy
-msgid "Namespace"
-msgstr "Spazio per il Nome:"
-
-#: camel/providers/imap/camel-imap-provider.c:57
-msgid "Apply filters to new messages in INBOX on this server"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:63
-msgid "IMAPv4"
-msgstr "IMAPv4"
-
-#: camel/providers/imap/camel-imap-provider.c:65
-msgid "For reading and storing mail on IMAP servers."
-msgstr "Per leggere e archiviare la posta sui server IMAP."
-
-#: camel/providers/imap/camel-imap-provider.c:82
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr ""
-"Con questa opzione ci si connette al server IMAP usando una password di "
-"testo semplice."
-
-#: camel/providers/imap/camel-imap-store.c:443
-#, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr "Il server IMAP %s non supporta il tipo di autenticazione richiesto %s "
-
-#: camel/providers/imap/camel-imap-store.c:453
-#: camel/providers/smtp/camel-smtp-transport.c:358
-#, c-format
-msgid "No support for authentication type %s"
-msgstr "Nessun supporto per il tipo di autenticazione %s"
-
-#: camel/providers/imap/camel-imap-store.c:478
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr "%sInserire la password IMAP per %s@%s"
-
-#: camel/providers/imap/camel-imap-store.c:493
-#: camel/providers/smtp/camel-smtp-transport.c:403
-msgid "You didn't enter a password."
-msgstr "Non è stata inserita la password."
-
-#: camel/providers/imap/camel-imap-store.c:521
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Non in grado di autenticare al server IMAP.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/imap/camel-imap-store.c:868
-#, fuzzy, c-format
-msgid "%s is not a selectable folder"
-msgstr "Mostra la cartella selezionata"
-
-#: camel/providers/imap/camel-imap-store.c:882
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr "Impossibile creare la directory %s: %s"
-
-#: camel/providers/imap/camel-imap-store.c:1385
-msgid "You must be working online to complete this operation"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:39
-msgid "MH-format mail directories"
-msgstr "Formato MH di UNIX delle directory della posta"
-
-#: camel/providers/local/camel-local-provider.c:40
-msgid "For storing local mail in MH-like mail directories"
-msgstr "Per archiviare la posta locale in directory di posta di tipo MH"
-
-#: camel/providers/local/camel-local-provider.c:49
-msgid "Standard Unix mailbox file"
-msgstr "File di mailbox standard per Unix"
-
-#: camel/providers/local/camel-local-provider.c:50
-msgid "For storing local mail in standard mbox format"
-msgstr "Per archiviare la posta locale in formato mbox standard"
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "Qmail maildir-format mail files"
-msgstr "File di posta UNIX qmail maildir-format"
-
-#: camel/providers/local/camel-local-provider.c:60
-msgid "For storing local mail in qmail maildir directories"
-msgstr "Per archiviare la posta locale nelle directory qmail maildir"
-
-#: camel/providers/local/camel-local-store.c:129
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:136
-#, c-format
-msgid "Store root %s is not a regular directory"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:144
-#: camel/providers/local/camel-local-store.c:160
-#, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "Impossibile avere la cartella %s: %s"
-
-#: camel/providers/local/camel-local-store.c:175
-msgid "Local stores do not have an inbox"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:185
-#, c-format
-msgid "Local mail file %s"
-msgstr "File di posta locale: %s"
-
-#: camel/providers/local/camel-local-store.c:241
-#, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr "Impossibile rinominare la cartella %s con %s: %s"
-
-#: camel/providers/local/camel-local-store.c:283
-#, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr "Impossibile cancellare l'indice della cartella `%s': %s"
-
-#: camel/providers/local/camel-local-store.c:293
-#, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr "Impossibile cancellare il file indice della cartella `%s': %s"
-
-#: camel/providers/local/camel-maildir-folder.c:150
-#: camel/providers/local/camel-maildir-folder.c:158
-#: camel/providers/local/camel-maildir-folder.c:169
-#, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr "Impossibile accodare il messaggio alla cartella maildir: %s: %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-maildir-folder.c:209
-#: camel/providers/local/camel-maildir-folder.c:217
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#: camel/providers/local/camel-mh-folder.c:194
-#: camel/providers/local/camel-mh-folder.c:202
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-"Impossibile prendere il messaggio: %s\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-msgid "No such message"
-msgstr "Messaggio assente"
-
-#: camel/providers/local/camel-maildir-folder.c:218
-#: camel/providers/local/camel-mh-folder.c:203
-msgid "Invalid message contents"
-msgstr "Contenuto del messaggio non valido"
-
-#: camel/providers/local/camel-maildir-store.c:96
-#: camel/providers/local/camel-mh-store.c:90
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-"Impossibile aprire la cartella `%s':\n"
-"%s "
-
-#: camel/providers/local/camel-maildir-store.c:100
-#: camel/providers/local/camel-mbox-store.c:101
-#: camel/providers/local/camel-mh-store.c:97
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr "La cartella `%s' non esiste."
-
-#: camel/providers/local/camel-maildir-store.c:107
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-"Impossibile creare la cartella `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:122
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr "`%s' non è una directory maildir."
-
-#: camel/providers/local/camel-maildir-store.c:151
-#: camel/providers/local/camel-maildir-store.c:188
-#: camel/providers/local/camel-mh-store.c:127
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr "Impossibile cancellare la cartella `%s': %s"
-
-#: camel/providers/local/camel-maildir-store.c:152
-msgid "not a maildir directory"
-msgstr "non è una directory maildir"
-
-#: camel/providers/local/camel-mbox-folder.c:152
-#, fuzzy, c-format
-msgid "Cannot create folder lock on %s: %s"
-msgstr "Impossibile avere la cartella %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:203
-#, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr "Impossibile aprire la casella di posta: %s: %s\n"
-
-#: camel/providers/local/camel-mbox-folder.c:259
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr "Inpossibile accodare il messaggio al file mbox: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:335
-#: camel/providers/local/camel-mbox-folder.c:367
-#: camel/providers/local/camel-mbox-folder.c:380
-#, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-"Impossibile prendere il messaggio: %s dalla cartella: %s\n"
-" %s"
-
-#: camel/providers/local/camel-mbox-folder.c:368
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr "La cartella appare irrimediabilmente corrotta."
-
-#: camel/providers/local/camel-mbox-folder.c:381
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr "Fallita la costruziono del messaggio: mailbox corrotta?"
-
-#: camel/providers/local/camel-mbox-store.c:94
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-"Impossibile il file %s:\n"
-"%s "
-
-#: camel/providers/local/camel-mbox-store.c:110
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-"Impossibile creare il file `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:119
-#: camel/providers/local/camel-mbox-store.c:146
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr "`%s' non è un file regolare."
-
-#: camel/providers/local/camel-mbox-store.c:138
-#: camel/providers/local/camel-mbox-store.c:161
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-"Impossibile cancellare la cartella `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr "La Cartella `%s' non è vuota. Non cancellata."
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:248
-msgid "Summarising folder"
-msgstr "Creazione indice della cartella"
-
-#: camel/providers/local/camel-mbox-summary.c:253
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr ""
-"Impossibile aprire la cartella: %s: indice creato a partire dalla posizione "
-"%ld: %s "
-
-#: camel/providers/local/camel-mbox-summary.c:295
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr ""
-"Errore fatale di simistamento della posta vicino alla posizione %ld nella "
-"cartella %s"
-
-#: camel/providers/local/camel-mbox-summary.c:370
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr "Impossibile creare indice per la cartella: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:501
-#: camel/providers/local/camel-mbox-summary.c:702 mail/mail-ops.c:1382
-msgid "Synchronising folder"
-msgstr "Sincronizzazione cartella"
-
-#: camel/providers/local/camel-mbox-summary.c:506
-#: camel/providers/local/camel-mbox-summary.c:707
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr "Impossibile aprire la cartella per la quale creare l'indice %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:523
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr "Impossibile creare una mbox temporanea: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:548
-#: camel/providers/local/camel-mbox-summary.c:556
-#: camel/providers/local/camel-mbox-summary.c:745
-#: camel/providers/local/camel-mbox-summary.c:753
-msgid "Summary and folder mismatch, even after a sync"
-msgstr "Indice e cartella non corrispondono, nemmeno dopo una sincronizzazione"
-
-#: camel/providers/local/camel-mbox-summary.c:599
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr "Errore di scrittura nella mbox temporanea: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:616
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr "Scrittura fallita su casella di posta temporanea %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:634
-#: camel/providers/local/camel-mbox-summary.c:803
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr "Impossibile chiudere la cartella sorgente %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:643
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr "Impossibile chiudere la cartella temporanea: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:654
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr "Impossibile rinominare la cartella: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:878
-#, c-format
-msgid "Unknown error: %s"
-msgstr "Errore sconosciuto: %s"
-
-#: camel/providers/local/camel-mh-folder.c:149
-#: camel/providers/local/camel-mh-folder.c:157
-#, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr "Impossibile accodare il messaggio alla cartella mh: %s: %s"
-
-#: camel/providers/local/camel-mh-store.c:110
-#, c-format
-msgid "`%s' is not a directory."
-msgstr "`%s' non è una directory."
-
-#: camel/providers/nntp/camel-nntp-auth.c:45
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr "Inserire la passwoed NNTP di %s@%s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:66
-msgid "Server rejected username"
-msgstr "Username rifiutato dal server"
-
-#: camel/providers/nntp/camel-nntp-auth.c:72
-msgid "Failed to send username to server"
-msgstr "Fallito l'invio dello username al server"
-
-#: camel/providers/nntp/camel-nntp-auth.c:81
-msgid "Server rejected username/password"
-msgstr "Il server ha rifiutato username/password"
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr "Messaggio %s non trovato."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr "Impossibile prendere la lista dei gruppi dal server."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr "Impossibile caricare il file con la lista dei gruppi di %s: %s"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr "Impossibile salvare il file con la lista dei gruppi di %s: %s"
-
-#: camel/providers/nntp/camel-nntp-provider.c:42
-msgid "USENET news"
-msgstr "USENET news"
-
-#: camel/providers/nntp/camel-nntp-provider.c:44
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr "Questo è un fornitore per la lettura e l'invio a newsgroups USENET."
-
-#: camel/providers/nntp/camel-nntp-store.c:224
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr "Impossibile aprire la directory per il news server: %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:286
-#, c-format
-msgid "USENET News via %s"
-msgstr "USENET News via %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:293
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-"Con questa opzione l'autenticazione con il server NNTP avviene usando una "
-"password in testo semplice."
-
-#: camel/providers/nntp/camel-nntp-store.c:325
-#: camel/providers/nntp/camel-nntp-store.c:488
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr "Impossibile aprire o creare il file .newsrc per %s: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-msgid "Retrieving POP summary"
-msgstr "Ricezione indice POP"
-
-#: camel/providers/pop3/camel-pop3-folder.c:155
-#, fuzzy, c-format
-msgid "Could not check POP server for new messages: %s"
-msgstr "Impossibile connettersi al server POP su %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:199
-msgid "Could not open folder: message listing was incomplete."
-msgstr "Impossibile aprire la cartella: la lista dei messaggi era incompleta."
-
-#: camel/providers/pop3/camel-pop3-folder.c:292
-#, c-format
-msgid "No message with uid %s"
-msgstr "Nessun messaggio con uid %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:296
-#, c-format
-msgid "Retrieving POP message %d"
-msgstr "Ricezione messaggio POP %d"
-
-#: camel/providers/pop3/camel-pop3-folder.c:303
-#, fuzzy, c-format
-msgid "Could not fetch message: %s"
-msgstr "Impossibile inviare il messaggio: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:320
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr "Impossibile scaricare messaggi dal server POP %s: %s"
-
-#: camel/providers/pop3/camel-pop3-provider.c:37
-#, fuzzy
-msgid "Message storage"
-msgstr "Header del messaggio"
-
-#: camel/providers/pop3/camel-pop3-provider.c:39
-#, fuzzy
-msgid "Leave messages on server"
-msgstr "Non cancellare i messaggi dal server"
-
-#: camel/providers/pop3/camel-pop3-provider.c:41
-#, fuzzy, c-format
-msgid "Delete after %s day(s)"
-msgstr "Elimina questo obiettivo"
-
-#: camel/providers/pop3/camel-pop3-provider.c:48 mail/mail-config.glade.h:42
-msgid "POP"
-msgstr "POP"
-
-#: camel/providers/pop3/camel-pop3-provider.c:50
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-"Per la connessione ai server POP. Il protocollo POP può anche essere usato "
-"per scaricare la posta da fornitori di servizi di posta via web e sistemi di "
-"posta proprietari."
-
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-"Con questa opzione ci si connette al server POP usando una password in testo "
-"semplice. Questa è la sola opzione supportata da molti server POP."
-
-#: camel/providers/pop3/camel-pop3-provider.c:79
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-"Con questa opzione ci si connette al server POP usando una password cifrata "
-"attraverso il protocollo APOP. Potrebbe non funzionare per tutti gli utenti "
-"anche su server che affermano di supportarlo. "
-
-#: camel/providers/pop3/camel-pop3-provider.c:91
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-"Con questa ci si connette al server POP usando Kerberos 4 per "
-"l'autenticazione."
-
-#: camel/providers/pop3/camel-pop3-store.c:209
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr "Impossibile autenticare il KPOP server: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:225
-#, fuzzy, c-format
-msgid "Could not connect to server: %s"
-msgstr "Impossibile connettersi al server POP su %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:329
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr "Impossibile connettersi al server POP su %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:368
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr "%sPrego inserire la password del POP3 di %s@%s "
-
-#: camel/providers/pop3/camel-pop3-store.c:387
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-"Impossibile connettersi al server POP.\\n\n"
-"Errore nell'invio dello username: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:390
-#: camel/providers/pop3/camel-pop3-store.c:427
-msgid "(Unknown)"
-msgstr "(Sconosciuto)"
-
-#: camel/providers/pop3/camel-pop3-store.c:417
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-"Impossibile connettersi al server POP.\\n\n"
-"Non è presente il supporto per il meccaniscmo di autenticazione richiesto."
-
-#: camel/providers/pop3/camel-pop3-store.c:425
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-"Impossibile connettersi al server POP.\\n\n"
-"Errore nell'invio della password: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:493
-#, c-format
-msgid "No such folder `%s'."
-msgstr "Cartella `%s' non presente."
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:37
-#: mail/mail-config.glade.h:57
-msgid "Sendmail"
-msgstr "Sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:39
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-"Per consegnare la posta passandola al programma \"sendmail\" sul sistema "
-"locale."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:107
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr ""
-"Impossibile creare una ridirezione verso sendmail: %s: posta non inviata"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:124
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr "Impossibile effettuare fork di sendmail: %s: posta non inviata"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:150
-#, c-format
-msgid "Could not send message: %s"
-msgstr "Impossibile inviare il messaggio: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:163
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr "sendmail terminato con il segnale %s: posta non inviata."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:170
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr "Impossibile eseguire %s: posta non inviata."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:175
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr "sendmail terminato con lo status %d: posta non inviata."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:194
-msgid "Could not find 'From' address in message"
-msgstr "Impossibile trovare l'indirizzo 'Da' nel messaggio"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "sendmail"
-msgstr "sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:249
-msgid "Mail delivery via the sendmail program"
-msgstr "Posta consegnata attraverso il programma sendmail"
-
-#: camel/providers/smtp/camel-smtp-provider.c:38 mail/mail-config.glade.h:52
-msgid "SMTP"
-msgstr "SMTP"
-
-#: camel/providers/smtp/camel-smtp-provider.c:40
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr ""
-"Per consegnare la posta connettendosi a un mail hub remoto usando SMTP.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:165
-msgid "Syntax error, command unrecognized"
-msgstr "Errore di sintassi, comando non riconosciuto"
-
-#: camel/providers/smtp/camel-smtp-transport.c:167
-msgid "Syntax error in parameters or arguments"
-msgstr "Errore di sintassi nei parametri o negli argomenti"
-
-#: camel/providers/smtp/camel-smtp-transport.c:169
-msgid "Command not implemented"
-msgstr "Comando non implementato"
-
-#: camel/providers/smtp/camel-smtp-transport.c:171
-msgid "Command parameter not implemented"
-msgstr "Parametro del comando non implementato"
-
-#: camel/providers/smtp/camel-smtp-transport.c:173
-msgid "System status, or system help reply"
-msgstr "Stato del sistema, o risposta di aiuto del sistema"
-
-#: camel/providers/smtp/camel-smtp-transport.c:175
-msgid "Help message"
-msgstr "Messaggio di Aiuto"
-
-#: camel/providers/smtp/camel-smtp-transport.c:177
-msgid "Service ready"
-msgstr "Servizio pronto"
-
-#: camel/providers/smtp/camel-smtp-transport.c:179
-msgid "Service closing transmission channel"
-msgstr "Il servizio sta chiudendo il canale di trasmissione"
-
-#: camel/providers/smtp/camel-smtp-transport.c:181
-msgid "Service not available, closing transmission channel"
-msgstr "Servizio non disponibile, chiusura del canale di trasmissione"
-
-#: camel/providers/smtp/camel-smtp-transport.c:183
-msgid "Requested mail action okay, completed"
-msgstr "L'azione di posta richiesta è corretta, completata"
-
-#: camel/providers/smtp/camel-smtp-transport.c:185
-msgid "User not local; will forward to <forward-path>"
-msgstr "Utente non locale; inoltrare a <percorso-a-cui-inoltrare> "
-
-#: camel/providers/smtp/camel-smtp-transport.c:187
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr ""
-"L'azione di posta richiesta non è stata effettuata: casella non disponibile"
-
-#: camel/providers/smtp/camel-smtp-transport.c:189
-msgid "Requested action not taken: mailbox unavailable"
-msgstr "Azione richiesta non effettuata: casella non disponibile"
-
-#: camel/providers/smtp/camel-smtp-transport.c:191
-msgid "Requested action aborted: error in processing"
-msgstr "Azione richiesta interrotta: errore di processo"
-
-#: camel/providers/smtp/camel-smtp-transport.c:193
-msgid "User not local; please try <forward-path>"
-msgstr "Utente non locale; tentare <forward-path>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:195
-msgid "Requested action not taken: insufficient system storage"
-msgstr "Azione richiesta non effettuata: archivio di sistema insufficiente"
-
-#: camel/providers/smtp/camel-smtp-transport.c:197
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr ""
-"L'azione di posta richiesta è stata interrotta: si è ecceduta l'allocazione "
-"per l'archivio"
-
-#: camel/providers/smtp/camel-smtp-transport.c:199
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr ""
-"L'azione di posta richiesta non è stata effettuata: il nome della casella "
-"non è permesso"
-
-#: camel/providers/smtp/camel-smtp-transport.c:201
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr "Inizio dell'imput della posta, termin con <CRLF>.<CRLF>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:203
-msgid "Transaction failed"
-msgstr "Transazione fallita"
-
-#: camel/providers/smtp/camel-smtp-transport.c:207
-msgid "A password transition is needed"
-msgstr "É necessaria una password di transizione."
-
-#: camel/providers/smtp/camel-smtp-transport.c:209
-msgid "Authentication mechanism is too weak"
-msgstr "Il meccanismo di autenticazione é troppo debole"
-
-#: camel/providers/smtp/camel-smtp-transport.c:211
-msgid "Encryption required for requested authentication mechanism"
-msgstr ""
-"É richiesta la crittografia per il meccanismo di autenticazione richiesto"
-
-#: camel/providers/smtp/camel-smtp-transport.c:213
-msgid "Temporary authentication failure"
-msgstr "Autenticazione temporaneamente non riuscita"
-
-#: camel/providers/smtp/camel-smtp-transport.c:215
-msgid "Authentication required"
-msgstr "Autenticazione richiesta"
-
-#: camel/providers/smtp/camel-smtp-transport.c:305
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr "Errore nella risposta di benvenuto: %s: probabilmente non fatale"
-
-#: camel/providers/smtp/camel-smtp-transport.c:348
-#, fuzzy, c-format
-msgid "SMTP server %s does not support requested authentication type %s"
-msgstr "Il server IMAP %s non supporta il tipo di autenticazione richiesto %s "
-
-#: camel/providers/smtp/camel-smtp-transport.c:388
-#, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr "%sInserire la password SMTP per %s@%s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:411
-#, fuzzy, c-format
-msgid ""
-"Unable to authenticate to SMTP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Non in grado di autenticare al server IMAP.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:527
-#, c-format
-msgid "SMTP server %s"
-msgstr "SMTP server %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:529
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr "Posta SMTP consegnata attraverso il programma %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:554
-msgid "Cannot send message: sender address not defined."
-msgstr ""
-"Impossibile inviare il messaggio: l'indirizzo del mittente non è stato "
-"definito."
-
-#: camel/providers/smtp/camel-smtp-transport.c:561
-msgid "Cannot send message: sender address not valid."
-msgstr ""
-"Impossibile inviare il messaggio: l'indirizzo del mittente non è valido."
-
-#: camel/providers/smtp/camel-smtp-transport.c:575
-msgid "Cannot send message: no recipients defined."
-msgstr "Impossibile inviare il messaggio: senza destinatari."
-
-#: camel/providers/smtp/camel-smtp-transport.c:669
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr "Richiesta di HELO scaduta: %s: non fatale"
-
-#: camel/providers/smtp/camel-smtp-transport.c:688
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr "Errore di risposta di HELO scaduta: %s: non fatale"
-
-#: camel/providers/smtp/camel-smtp-transport.c:721
-msgid "Error creating SASL authentication object."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:736
-#: camel/providers/smtp/camel-smtp-transport.c:748
-#, c-format
-msgid "AUTH request timed out: %s"
-msgstr "Richiesta AUTH scaduta: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:798
-msgid "Bad authentication response from server.\n"
-msgstr "Cattiva risposta di autenticazione dal server.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:824
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr "Richiesta MAIL FROM scaduta: %s: posta non inviata"
-
-#: camel/providers/smtp/camel-smtp-transport.c:843
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr "Errore nella risposta MAIL FROM: %s: posta non inviata"
-
-#: camel/providers/smtp/camel-smtp-transport.c:868
-#, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr "La richiesta di RCPT TO: %s: posta non inviata"
-
-#: camel/providers/smtp/camel-smtp-transport.c:887
-#, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr "Errore nella risposta di RCPT TO: %s: posta non inviata"
-
-#: camel/providers/smtp/camel-smtp-transport.c:918
-#, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr "RIchiesta di DATA scaduta: %s: posta non inviata."
-
-#: camel/providers/smtp/camel-smtp-transport.c:937
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr "Errore nella risposta di DATA: %s: posta non inviata."
-
-#: camel/providers/smtp/camel-smtp-transport.c:952
-#: camel/providers/smtp/camel-smtp-transport.c:970
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr ""
-"DATA ha inviato il segnale di tempo scaduto: terminazione del messaggio: %s "
-"posta non inviata."
-
-#: camel/providers/smtp/camel-smtp-transport.c:989
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr ""
-"Errore nella risposta di DATA: terminazione del messaggio: %s posta non "
-"inviata."
-
-#: camel/providers/smtp/camel-smtp-transport.c:1013
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr "Richiesta RSET scaduta: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1032
-#, c-format
-msgid "RSET response error: %s"
-msgstr "Errore nella risposta di RSET: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1055
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr "Richiesta QUIT scaduta: %s: non fatale"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1074
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr "Errore nella risposta di QUIT: %s: non fatale<"
-
-#: composer/e-msg-composer-attachment-bar.c:95
-msgid "1 byte"
-msgstr "1 byte"
-
-#: composer/e-msg-composer-attachment-bar.c:97
-#, c-format
-msgid "%u bytes"
-msgstr "%u bytes"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fK"
-
-#: composer/e-msg-composer-attachment-bar.c:108
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fM"
-
-#: composer/e-msg-composer-attachment-bar.c:112
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fG"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:332 mail/mail-display.c:120
-msgid "attachment"
-msgstr "allegato"
-
-#: composer/e-msg-composer-attachment-bar.c:421
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr "Allega un file"
-
-#: composer/e-msg-composer-attachment-bar.c:469
-msgid "Remove selected items from the attachment list"
-msgstr "Rimuovere gli oggetti selezionati dalla lista degli allegati"
-
-#: composer/e-msg-composer-attachment-bar.c:500
-msgid "Add attachment..."
-msgstr "Aggiungere allegato..."
-
-#: composer/e-msg-composer-attachment-bar.c:501
-msgid "Attach a file to the message"
-msgstr "Allegare un file al messaggio"
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/message-list.c:1054
-msgid "Attachment"
-msgstr "Allegato"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr "Proprietà dell'allegato"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr "Nome del file:"
-
-#: composer/e-msg-composer-attachment.glade.h:5
-msgid "Inline attachment"
-msgstr "allegato inlinea"
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr "Tipo MIME:"
-
-#: composer/e-msg-composer-attachment.glade.h:7
-msgid "Send as:"
-msgstr "Invia come :"
-
-#: composer/e-msg-composer-hdrs.c:321
-msgid "Click here for the address book"
-msgstr "Cliccare qui per la rubrica"
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:352 mail/mail-format.c:719
-msgid "From:"
-msgstr "Da:"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:358 mail/mail-format.c:721
-msgid "Reply-To:"
-msgstr "Rispondi-a:"
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:369 mail/mail-format.c:643
-msgid "Subject:"
-msgstr "Oggetto:"
-
-#: composer/e-msg-composer-hdrs.c:383 mail/mail-format.c:723
-msgid "To:"
-msgstr "A:"
-
-#: composer/e-msg-composer-hdrs.c:384
-msgid "Enter the recipients of the message"
-msgstr "Inserire i destinatari del messaggio"
-
-#: composer/e-msg-composer-hdrs.c:387 mail/mail-format.c:725
-msgid "Cc:"
-msgstr "Cc:"
-
-#: composer/e-msg-composer-hdrs.c:388
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr ""
-"Inserire gli indirizzi che riceveranno una copia conforme del messaggio"
-
-#: composer/e-msg-composer-hdrs.c:391
-msgid "Bcc:"
-msgstr "Bcc:"
-
-#: composer/e-msg-composer-hdrs.c:392
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"Inserire gli indirizzi che riceveranno una copia conforme del messaggio "
-"senza apparire nell'elenco dei destinatari del messaggio."
-
-#: composer/e-msg-composer.c:528
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-"Impossibile aprire il file firma: %s\n"
-"%s "
-
-#: composer/e-msg-composer.c:716
-msgid "Save as..."
-msgstr "Salva come..."
-
-#: composer/e-msg-composer.c:727
-#, c-format
-msgid "Error saving file: %s"
-msgstr "Errore nel salvare il file: %s"
-
-#: composer/e-msg-composer.c:747
-#, c-format
-msgid "Error loading file: %s"
-msgstr "Errore nel caricare il file: %s"
-
-#: composer/e-msg-composer.c:819
-msgid ""
-"Unable to open the drafts folder for this account.\n"
-"Would you like to use the default drafts folder?"
-msgstr ""
-
-#: composer/e-msg-composer.c:877 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:206
-msgid "Evolution"
-msgstr "Evolution"
-
-#: composer/e-msg-composer.c:883
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-"Questo messaggio non è stato inviato\n"
-"\n"
-"Salvare le modifiche?"
-
-#: composer/e-msg-composer.c:908
-msgid "Open file"
-msgstr "Apri file"
-
-#: composer/e-msg-composer.c:1034
-msgid "That file does not exist."
-msgstr "Il file noon esiste."
-
-#: composer/e-msg-composer.c:1044
-msgid "That is not a regular file."
-msgstr "Non è un file regolare."
-
-#: composer/e-msg-composer.c:1054
-msgid "That file exists but is not readable."
-msgstr "File esistente ma illeggibile."
-
-#: composer/e-msg-composer.c:1064
-msgid "That file appeared accesible but open(2) failed."
-msgstr "File apparentemente accessibile ma open(2) non ha funzionato."
-
-#: composer/e-msg-composer.c:1086
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-"Questo file è molto grande (più di 100K).\n"
-"Inserire ugualmente?"
-
-#: composer/e-msg-composer.c:1107
-msgid "An error occurred while reading the file."
-msgstr "Si è verificato un errore durante le lettura del file."
-
-#: composer/e-msg-composer.c:1408 composer/e-msg-composer.c:1740
-msgid "Compose a message"
-msgstr "Componi un nuovo messaggio"
-
-#: composer/e-msg-composer.c:1829
-msgid "Could not create composer window."
-msgstr "Impossibile creare la finestra di composizione."
-
-#: composer/evolution-composer.c:355
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-"Impossibile creare una finestra di composizione, poichè non é\n"
-"stata ancora configurata nessuna identità nel componente della posta."
-
-#: composer/evolution-composer.c:370
-msgid "Cannot initialize Evolution's composer."
-msgstr "Impossibile inizializzare il composer di Evolution."
-
-#: data/evolution.desktop.in.h:2
-msgid "The Evolution groupware suite"
-msgstr "The Evolution groupware suite"
-
-#: data/evolution.keys.in.h:1
-msgid "address card"
-msgstr "biglietto da visita"
-
-#: data/evolution.keys.in.h:2
-msgid "calendar information"
-msgstr "informazioni sul calendario"
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:69 e-util/e-time-utils.c:117
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:477
-#: widgets/misc/e-dateedit.c:1282 widgets/misc/e-dateedit.c:1463
-msgid "%m/%d/%Y"
-msgstr "%m/%d/%Y"
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:87 e-util/e-time-utils.c:198
-msgid "%I:%M:%S %p%n"
-msgstr "%I:%M:%S %p%n"
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:90 e-util/e-time-utils.c:201
-msgid "%H:%M:%S%n"
-msgstr "%H:%M:%S%n"
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:94 e-util/e-time-utils.c:205
-msgid "%I:%M %p%n"
-msgstr "%I:%M %p%n"
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:97 e-util/e-time-utils.c:208
-msgid "%H:%M%n"
-msgstr "%H:%M%n"
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:269
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:473
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2503
-msgid "%a %m/%d/%Y"
-msgstr "%a %m/%d/%Y"
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:274
-msgid "%a %m/%d/%Y %H:%M"
-msgstr "%a %m/%d/%Y %H:%M"
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:283
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr "%a %m/%d/%Y %I:%M %p"
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:312 widgets/misc/e-dateedit.c:1257
-#: widgets/misc/e-dateedit.c:1316 widgets/misc/e-dateedit.c:1495
-msgid "%H:%M"
-msgstr "%H:%M"
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:315
-msgid "%H:%M:%S"
-msgstr "%H:%M:%S"
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:320 widgets/misc/e-dateedit.c:1260
-#: widgets/misc/e-dateedit.c:1319 widgets/misc/e-dateedit.c:1498
-msgid "%I:%M %p"
-msgstr "%I:%M %p"
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:323
-msgid "%I:%M:%S %p"
-msgstr "%I:%M:%S %p"
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-msgid "Evolution component for the executive summary."
-msgstr "Componente di Evolution per il sommario esecutivo."
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-msgid "Factory for the Evolution executive summary component."
-msgstr "Fabbrica per il componente del sommario esecutivo di Evolution"
-
-#: executive-summary/component/component-factory.c:152
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr ""
-"Impossibile inizializzare il componente del Sommario Esecutivo di Evolution."
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-"É possibile selezionare una pagina HTML diversa per lo sfondo del Sommario "
-"Esecutivo.\n"
-"\n"
-"Lasciare in bianco per la pagina predefinita. "
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr "Apre %s con l'applicazione di GNOME predefinita"
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr "Apre %s con il browser di GNOME predefinito"
-
-#: executive-summary/component/e-summary-url.c:71
-#, c-format
-msgid "Send an email to %s"
-msgstr "Invia un email a %s"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr "Cambia la vista con %s"
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr "Esegui %s"
-
-#: executive-summary/component/e-summary-url.c:75
-#, c-format
-msgid "Close %s"
-msgstr "Chiudi %s"
-
-#: executive-summary/component/e-summary-url.c:76
-#, c-format
-msgid "Move %s to the left"
-msgstr "Sposta %s a sinistra"
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr "Sposta %s a destra"
-
-#: executive-summary/component/e-summary-url.c:78
-#, c-format
-msgid "Move %s into the previous row"
-msgstr "Sposta %s alla riga precedente"
-
-#: executive-summary/component/e-summary-url.c:79
-#, c-format
-msgid "Move %s into the next row"
-msgstr "Sposta %s alla riga successiva"
-
-#: executive-summary/component/e-summary-url.c:80
-#, c-format
-msgid "Configure %s"
-msgstr "Configura %s"
-
-#: executive-summary/component/e-summary.c:924
-#, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"Impossibile aprire il file HTML:\n"
-"%s "
-
-#: executive-summary/component/e-summary.c:938
-#, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr ""
-"Errore nella lettura dei dati: \n"
-"%s"
-
-#: executive-summary/component/e-summary.c:956
-msgid "File does not have a place for the services.\n"
-msgstr "Il file non ha un posto per i servizi.\n"
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr "Aspetto"
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr "Sfondo:"
-
-#: executive-summary/component/main.c:62
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-"Il componente del sommario esecutivo non riesce a inizializzare Bonobo.\n"
-"Nel caso ci sia un messaggio circa il RootPOA, probabilmente significa che\n"
-"Bonobo é stato compilato con GOAD invece che con OAF."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr "Fabbrica per il sommario RDF."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-msgid "RDF Summary"
-msgstr "Indice RDF"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-msgid "Factory for the test bonobo component."
-msgstr "Fabbrica per il componente di prova di bonobo."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-msgid "Factory for the test component."
-msgstr "Fabbrica per il componente di prova."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr "Prova servizio bonobo"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr "Prova servizio"
-
-#: executive-summary/test-service/rdf-summary.c:512
-#: executive-summary/test-service/rdf-summary.c:549
-#: executive-summary/test-service/rdf-summary.c:594
-#: widgets/misc/e-messagebox.c:166
-msgid "Error"
-msgstr "Errore"
-
-#: executive-summary/test-service/rdf-summary.c:768
-msgid "Update automatically"
-msgstr "Aggiorna automaticamente"
-
-#: executive-summary/test-service/rdf-summary.c:778
-msgid "Update now"
-msgstr "Aggiorna adesso"
-
-#: executive-summary/test-service/rdf-summary.c:788
-msgid "Update every "
-msgstr "Aggiorna ogni "
-
-#: executive-summary/test-service/rdf-summary.c:796
-#: filter/filter-datespec.c:83
-msgid "minutes"
-msgstr "minuti"
-
-#: filter/filter-datespec.c:78
-msgid "year"
-msgstr "anno"
-
-#: filter/filter-datespec.c:78
-msgid "years"
-msgstr "anni"
-
-#: filter/filter-datespec.c:79
-msgid "month"
-msgstr "mese"
-
-#: filter/filter-datespec.c:79
-msgid "months"
-msgstr "mesi"
-
-#: filter/filter-datespec.c:80
-msgid "week"
-msgstr "settimana"
-
-#: filter/filter-datespec.c:80
-msgid "weeks"
-msgstr "settimane"
-
-#: filter/filter-datespec.c:81
-msgid "days"
-msgstr "giorni"
-
-#: filter/filter-datespec.c:82
-msgid "hour"
-msgstr "Ora"
-
-#: filter/filter-datespec.c:82
-msgid "hours"
-msgstr "Ore"
-
-#: filter/filter-datespec.c:83
-msgid "minute"
-msgstr "Minuto"
-
-#: filter/filter-datespec.c:84
-msgid "second"
-msgstr "secondo"
-
-#: filter/filter-datespec.c:84
-msgid "seconds"
-msgstr " secondi"
-
-#: filter/filter-datespec.c:199
-msgid "Oops. You have forgotten to choose a date."
-msgstr "Oops. Ti sei dimenticato di scegliere una data."
-
-#: filter/filter-datespec.c:201
-msgid "Oops. You have chosen an invalid date."
-msgstr "Oops. Hai scelto un adata non valida"
-
-#: filter/filter-datespec.c:276
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-"La data del messaggio verrà confrontata\n"
-"con la data di avvio del filtro o di apertura\n"
-"del vfolder, qualunque essa sia"
-
-#: filter/filter-datespec.c:299
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-"La data del messaggio verrà confrontata\n"
-"con quella specificata qui."
-
-#: filter/filter-datespec.c:339
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-"La data del messaggio verrà confrontata\n"
-"con una data relativa all'avvio del filtro;\n"
-"\"una settimana fa\", ad esempio."
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:374
-msgid "the current time"
-msgstr "L'ora corrente"
-
-#: filter/filter-datespec.c:374
-msgid "a time you specify"
-msgstr "una data specifica"
-
-#: filter/filter-datespec.c:375
-msgid "a time relative to the current time"
-msgstr "una data relativa a quellla corrente"
-
-#. The label
-#: filter/filter-datespec.c:433
-msgid "Compare against"
-msgstr "Confronta con"
-
-#: filter/filter-datespec.c:550 filter/filter-datespec.c:710
-msgid "now"
-msgstr "adesso"
-
-#: filter/filter-datespec.c:707
-msgid "<click here to select a date>"
-msgstr "<clicca qui per selezionare una data>"
-
-#: filter/filter-editor.c:132 filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr "Regole dei Filtri"
-
-#. and now for the action area
-#: filter/filter-filter.c:452
-msgid "Then"
-msgstr "Di"
-
-#: filter/filter-filter.c:466
-msgid "Add action"
-msgstr "Aggiungi Azione"
-
-#: filter/filter-folder.c:147
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-"Oops, ti sei dimenticato di scegliere una cartella.\n"
-"Tornare indietro e specificare una cartella valida per consegnarvi la posta."
-
-#: filter/filter-folder.c:225 filter/vfolder-rule.c:285
-#: mail/mail-account-gui.c:682
-msgid "Select Folder"
-msgstr "Scegli Cartella"
-
-#: filter/filter-folder.c:250
-msgid "Enter folder URI"
-msgstr "Inserire la URI della Cartella"
-
-#: filter/filter-folder.c:296
-msgid "<click here to select a folder>"
-msgstr "<clicca qui per selezionare una cartella>"
-
-#: filter/filter-input.c:193
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-"Errore nell'espressione regolare `%s':\n"
-"%s"
-
-#: filter/filter-part.c:474
-msgid "Test"
-msgstr "Test"
-
-#: filter/filter-rule.c:627
-msgid "Rule name: "
-msgstr "Nome della Regola:"
-
-#: filter/filter-rule.c:631
-msgid "Untitled"
-msgstr "Senza nome"
-
-#: filter/filter-rule.c:647
-msgid "If"
-msgstr "Se"
-
-#: filter/filter-rule.c:665
-msgid "Execute actions"
-msgstr "Esegui le azioni"
-
-#: filter/filter-rule.c:669
-msgid "if all criteria are met"
-msgstr "se tutti i criteri sonon soddisfatti"
-
-#: filter/filter-rule.c:674
-msgid "if any criteria are met"
-msgstr "se qualche criterio è soddisfatto"
-
-#: filter/filter-rule.c:685
-msgid "Add criterion"
-msgstr "Aggiungi criterio"
-
-#: filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr "Modifica Filtri"
-
-#: filter/filter.glade.h:5
-msgid "Edit VFolders"
-msgstr "Modifica VFolder"
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr "In entrata:"
-
-#: filter/filter.glade.h:8
-msgid "Outgoing"
-msgstr "In uscita:"
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:130
-msgid "Virtual Folders"
-msgstr "Cartelle Virtuali"
-
-#: filter/filter.glade.h:11
-msgid "specific folders only"
-msgstr "solo le cartelle specifiche"
-
-#: filter/filter.glade.h:12
-msgid "vFolder Sources"
-msgstr "Sorgenti delle cartelle virtuali"
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr "con tutte le cartelle remote attive"
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr "con tutte le cartelle locali e remote attive"
-
-#: filter/filter.glade.h:15
-msgid "with all local folders"
-msgstr "con tutte le cartelle locali"
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Colour"
-msgstr "Assegna Colore"
-
-#: filter/libfilter-i18n.h:4
-msgid "Assign Score"
-msgstr "Assegna un punteggio"
-
-#: filter/libfilter-i18n.h:5
-msgid "Attachments"
-msgstr "Allegati"
-
-#: filter/libfilter-i18n.h:7
-msgid "contains"
-msgstr "contiene"
-
-#: filter/libfilter-i18n.h:8
-msgid "Copy to Folder"
-msgstr "Copia nella Cartella"
-
-#: filter/libfilter-i18n.h:9
-msgid "Date received"
-msgstr "Data di Ricezione"
-
-#: filter/libfilter-i18n.h:10
-msgid "Date sent"
-msgstr "Data di spedizione"
-
-#: filter/libfilter-i18n.h:12
-msgid "Deleted"
-msgstr "Eliminato"
-
-#: filter/libfilter-i18n.h:13
-msgid "does not contain"
-msgstr "non contiene"
-
-#: filter/libfilter-i18n.h:14
-msgid "does not end with"
-msgstr "non finisce con"
-
-#: filter/libfilter-i18n.h:15
-msgid "does not exist"
-msgstr "non esiste"
-
-#: filter/libfilter-i18n.h:16
-msgid "does not sound like"
-msgstr "non assomiglia a"
-
-#: filter/libfilter-i18n.h:17
-msgid "does not start with"
-msgstr "non comincia per"
-
-#: filter/libfilter-i18n.h:18
-msgid "Do Not Exist"
-msgstr "Non Esiste"
-
-#: filter/libfilter-i18n.h:19
-msgid "Draft"
-msgstr "Bozza"
-
-#: filter/libfilter-i18n.h:20
-msgid "ends with"
-msgstr "finisce per"
-
-#: filter/libfilter-i18n.h:21
-msgid "Exist"
-msgstr "Esistente"
-
-#: filter/libfilter-i18n.h:22
-msgid "exists"
-msgstr "esiste"
-
-#: filter/libfilter-i18n.h:23
-msgid "Expression"
-msgstr "Espressione"
-
-#: filter/libfilter-i18n.h:24
-msgid "Forward to Address"
-msgstr "Inoltra all'Indirizzo"
-
-#: filter/libfilter-i18n.h:25
-msgid "Important"
-msgstr "Importante"
-
-#: filter/libfilter-i18n.h:26
-msgid "is"
-msgstr "è"
-
-#: filter/libfilter-i18n.h:27
-msgid "is greater than"
-msgstr "è maggiore di"
-
-#: filter/libfilter-i18n.h:28
-msgid "is less than"
-msgstr "è minore di"
-
-#: filter/libfilter-i18n.h:29
-msgid "is not"
-msgstr "non è"
-
-#: filter/libfilter-i18n.h:30
-msgid "Mailing list"
-msgstr "Mailing list"
-
-#: filter/libfilter-i18n.h:31
-msgid "Message Body"
-msgstr "Corpo del messaggio"
-
-#: filter/libfilter-i18n.h:32
-msgid "Message Header"
-msgstr "Header del messaggio"
-
-#: filter/libfilter-i18n.h:33
-msgid "Message was received"
-msgstr "Il messaggio è stato ricevuto"
-
-#: filter/libfilter-i18n.h:34
-msgid "Message was sent"
-msgstr "Il messaggio è stato inviato"
-
-#: filter/libfilter-i18n.h:35
-msgid "Move to Folder"
-msgstr "Sposta nella Cartella..."
-
-#: filter/libfilter-i18n.h:36
-msgid "on or after"
-msgstr "alle o dopo"
-
-#: filter/libfilter-i18n.h:37
-msgid "on or before"
-msgstr "Alle o prima"
-
-#: filter/libfilter-i18n.h:38
-msgid "Read"
-msgstr "Leggi"
-
-#: filter/libfilter-i18n.h:39
-msgid "Recipients"
-msgstr "Destinatari"
-
-#: filter/libfilter-i18n.h:40
-msgid "Regex Match"
-msgstr "Corrispindenza con l'espressione regolare"
-
-#: filter/libfilter-i18n.h:41
-msgid "Replied to"
-msgstr "Risposto a"
-
-#: filter/libfilter-i18n.h:42 filter/score-rule.c:204 filter/score-rule.c:206
-#: mail/message-list.c:1054
-msgid "Score"
-msgstr "Punteggio"
-
-#: filter/libfilter-i18n.h:43
-msgid "Sender"
-msgstr "Mittente"
-
-#: filter/libfilter-i18n.h:44
-msgid "Set Status"
-msgstr "Imposta _Status"
-
-#: filter/libfilter-i18n.h:45
-msgid "sounds like"
-msgstr "Assomiglia a"
-
-#: filter/libfilter-i18n.h:46
-#, fuzzy
-msgid "Source Account"
-msgstr "Account"
-
-#: filter/libfilter-i18n.h:47
-msgid "Specific header"
-msgstr "Specifica header"
-
-#: filter/libfilter-i18n.h:48
-msgid "starts with"
-msgstr "comincia per"
-
-#: filter/libfilter-i18n.h:50
-msgid "Stop Processing"
-msgstr "Arresta processo in corso"
-
-#: filter/libfilter-i18n.h:51 mail/message-list.c:1055
-msgid "Subject"
-msgstr "Oggetto"
-
-#: filter/libfilter-i18n.h:52
-msgid "was after"
-msgstr "era dopo"
-
-#: filter/libfilter-i18n.h:53
-msgid "was before"
-msgstr "era prima"
-
-#: filter/score-editor.c:130
-msgid "Score Rules"
-msgstr "Regole di punteggio"
-
-#: mail/component-factory.c:329
-msgid "Cannot initialize Evolution's mail component."
-msgstr "Impossibile inizializzare il componente della posta di Evolution."
-
-#: mail/component-factory.c:402
-msgid "Cannot register storage with shell"
-msgstr ""
-
-#: mail/folder-browser-factory.c:211
-#, c-format
-msgid "Properties for \"%s\""
-msgstr "Proprietà per \"%s\""
-
-#: mail/folder-browser-factory.c:213 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-msgid "Properties"
-msgstr "Proprietà"
-
-#: mail/folder-browser.c:225
-msgid "Store search as vFolder"
-msgstr "Archivia la ricerca come Cartella Virtuale"
-
-#: mail/folder-browser.c:533
-msgid "VFolder on Subject"
-msgstr "Cartella Virtuale per Oggetto"
-
-#: mail/folder-browser.c:536
-msgid "VFolder on Sender"
-msgstr "Cartella Virtuale per Mittente"
-
-#: mail/folder-browser.c:539
-msgid "VFolder on Recipients"
-msgstr "Cartella Virtuale per Destinatari"
-
-#: mail/folder-browser.c:542 mail/folder-browser.c:733
-msgid "VFolder on Mailing List"
-msgstr "Cartella virtuale sulla Mailng List"
-
-#: mail/folder-browser.c:548
-msgid "Filter on Subject"
-msgstr "Filtra sull'Oggetto"
-
-#: mail/folder-browser.c:551
-msgid "Filter on Sender"
-msgstr "Filtro sul Mittente"
-
-#: mail/folder-browser.c:554
-msgid "Filter on Recipients"
-msgstr "Filtro sui Destinatari:"
-
-#: mail/folder-browser.c:557 mail/folder-browser.c:732
-msgid "Filter on Mailing List"
-msgstr "Filtra sulla Mailng List"
-
-#: mail/folder-browser.c:568
-#, fuzzy
-msgid "Resend"
-msgstr "secondo"
-
-#: mail/folder-browser.c:570
-msgid "Save As..."
-msgstr "Salva con nome..."
-
-#: mail/folder-browser.c:577
-msgid "Reply to Sender"
-msgstr "Rispondi al Mittente"
-
-#: mail/folder-browser.c:579 mail/mail-view.c:147 ui/evolution-mail.xml.h:61
-msgid "Reply to All"
-msgstr "Rispondi a Tutti"
-
-#: mail/folder-browser.c:581 mail/mail-view.c:150 ui/evolution-mail.xml.h:25
-msgid "Forward"
-msgstr "Inoltra"
-
-#: mail/folder-browser.c:583 ui/evolution-mail.xml.h:27
-msgid "Forward inline"
-msgstr "Vai avanti"
-
-#: mail/folder-browser.c:586
-msgid "Mark as Read"
-msgstr "Segna come Letto"
-
-#: mail/folder-browser.c:588
-msgid "Mark as Unread"
-msgstr "Segna come Non Letto"
-
-#: mail/folder-browser.c:593
-msgid "Move to Folder..."
-msgstr "Sposta nella Cartella..."
-
-#: mail/folder-browser.c:595
-msgid "Copy to Folder..."
-msgstr "Copia nella Cartella..."
-
-#: mail/folder-browser.c:599 ui/evolution-mail.xml.h:82
-msgid "Undelete"
-msgstr "Ripristina"
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:609 ui/evolution-mail.xml.h:1
-msgid "Apply Filters"
-msgstr "Applica Filtri"
-
-#: mail/folder-browser.c:613
-msgid "Create Rule From Message"
-msgstr "Crea Regola dal Messaggio"
-
-#: mail/folder-browser.c:735
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr "Filtra sulla Mailng List (%s)"
-
-#: mail/folder-browser.c:736
-#, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr "Cartella Virtuale sulla Mailng List (%s)"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr "Componente di Evolution per gestire la posta."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-msgid "Evolution mail composer."
-msgstr "Compositore della posta di Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-msgid "Evolution mail executive summary component."
-msgstr "Componente dell'indice esecutivo della posta di Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-msgid "Evolution mail folder display component."
-msgstr "Componente di Evolution per visualizzare le cartelle di posta."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-msgid "Evolution mail folder factory component."
-msgstr "Fabbrica per il componente delle cartelle di posta di Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-msgid "Factory for the Evolution composer."
-msgstr "Fabbrica per il compositore di Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-msgid "Factory for the Evolution mail component."
-msgstr "Fabbrica per il componente della posta di Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-msgid "Factory for the Mail Summary component."
-msgstr "Fabbrica per il componente del Sommario della Posta"
-
-#: mail/local-config.glade.h:1
-msgid "Current store format:"
-msgstr "Formato corrente di archiviazione:"
-
-#: mail/local-config.glade.h:2
-msgid "Mailbox Format"
-msgstr "Formato della Mailbox"
-
-#: mail/local-config.glade.h:3
-msgid "New store format:"
-msgstr "Nuovo formato di archiviazione:"
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-"Avvertenza: durante la conversione di formati di mailbox,\n"
-"un errore (come una mancanza di spazio su disco) può non essere\n"
-"recuperabile automaticamente. Usare con cautela."
-
-#: mail/local-config.glade.h:7
-msgid "maildir"
-msgstr "maildir"
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr "mbox"
-
-#: mail/local-config.glade.h:9
-msgid "mh"
-msgstr "mh"
-
-#: mail/mail-accounts.c:121 mail/mail-accounts.c:165
-msgid " (default)"
-msgstr "(predefinito)"
-
-#: mail/mail-accounts.c:197
-#, fuzzy
-msgid "Disable"
-msgstr "Disabilita."
-
-#: mail/mail-accounts.c:199 mail/mail-config.glade.h:25
-msgid "Enable"
-msgstr ""
-
-#: mail/mail-accounts.c:280 mail/mail-accounts.c:284
-msgid "Are you sure you want to delete this account?"
-msgstr "Sicuro di voler cancellare questo account?"
-
-#: mail/mail-accounts.c:418 mail/mail-accounts.c:422
-msgid "Are you sure you want to delete this news account?"
-msgstr "Sicuro di voler cancellare questo aaccount delle news?"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:536
-msgid "Evolution Account Manager"
-msgstr "Gestione degli Account di Evolution"
-
-#: mail/mail-account-editor.c:105
-msgid "You have not filled in all of the required information."
-msgstr ""
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:173
-msgid "Evolution Account Editor"
-msgstr "Editor degli Account di Evolution"
-
-#: mail/mail-autofilter.c:70
-#, c-format
-msgid "Mail to %s"
-msgstr "Mail a %s"
-
-#: mail/mail-autofilter.c:213
-#, c-format
-msgid "Subject is %s"
-msgstr "Oggetto è %s"
-
-#: mail/mail-autofilter.c:229
-#, c-format
-msgid "Mail from %s"
-msgstr "Mail da %s"
-
-#: mail/mail-autofilter.c:285
-#, c-format
-msgid "%s mailing list"
-msgstr "%s mailing list"
-
-#: mail/mail-autofilter.c:335 mail/mail-autofilter.c:357
-msgid "Add Filter Rule"
-msgstr "Aggiungi una regola di Filtro"
-
-#: mail/mail-callbacks.c:94
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-"Non è stato configurato il client di posta.\n"
-"È necessario farlo prima di poter inviare,\n"
-"ricevere o scrivere posta.\n"
-"Si desidera configurarlo subito?"
-
-#: mail/mail-callbacks.c:147
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-"È necessario configurare un' identità\n"
-"prima di poter comporre una email."
-
-#: mail/mail-callbacks.c:159
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-"È necessario configurare un trasporto\n"
-"della posta prima di comporla."
-
-#: mail/mail-callbacks.c:203
-msgid "You have not set a mail transport method"
-msgstr "Non è stato impostato un sistema di trasporto per la posta"
-
-#: mail/mail-callbacks.c:236
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-"Questo messaggio non ha l'oggetto.\n"
-"Inviare lo stesso?"
-
-#: mail/mail-callbacks.c:309
-msgid "You must specify recipients in order to send this message."
-msgstr "È necessario specificare dei destinatari per inviare questo messaggio."
-
-#: mail/mail-callbacks.c:352
-msgid "You must configure an account before you can send this email."
-msgstr ""
-"È necessario configurare un' identità prima di poter inviare questa email."
-
-#: mail/mail-callbacks.c:592
-#, c-format
-msgid "On %s, %s wrote:\n"
-msgstr "Su %s, %s ha scritto:\n"
-
-#: mail/mail-callbacks.c:774
-msgid "Forwarded message:\n"
-msgstr "Messaggio inoltrato:\n"
-
-#: mail/mail-callbacks.c:877
-msgid "Move message(s) to"
-msgstr "Sposta messaggio(i) in"
-
-#: mail/mail-callbacks.c:879
-msgid "Copy message(s) to"
-msgstr "Copia messaggio(i) in"
-
-#: mail/mail-callbacks.c:1147
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-"È possibile modificare solo i messaggi\n"
-"salvati nella cartella Bozze."
-
-#: mail/mail-callbacks.c:1179
-#, fuzzy
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-"È possibile modificare solo i messaggi\n"
-"salvati nella cartella Bozze."
-
-#: mail/mail-callbacks.c:1212 mail/mail-display.c:90
-msgid "Overwrite file?"
-msgstr "Sovrascrivere il file?"
-
-#: mail/mail-callbacks.c:1216 mail/mail-display.c:94
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-"Esiste già un file con questo nome.\n"
-"Sovrascriverlo?"
-
-#: mail/mail-callbacks.c:1260
-msgid "Save Message As..."
-msgstr "Salva Messaggio con nome..."
-
-#: mail/mail-callbacks.c:1262
-msgid "Save Messages As..."
-msgstr "Salva messaggi con nome..."
-
-#: mail/mail-callbacks.c:1376
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-"Errore nel caricare le informazioni dei filtri:\n"
-"%s"
-
-#: mail/mail-callbacks.c:1425 ui/evolution-mail.xml.h:52
-msgid "Print Message"
-msgstr "Stampa Messaggio"
-
-#: mail/mail-callbacks.c:1472
-msgid "Printing of message failed"
-msgstr "Stampa Messaggio non riuscita"
-
-#: mail/mail-config.c:1043 mail/mail-config.c:1046
-msgid "Connecting to server..."
-msgstr ""
-
-#: mail/mail-config.glade.h:1
-msgid " Check for supported types "
-msgstr ""
-
-#: mail/mail-config.glade.h:2
-#, fuzzy
-msgid " color"
-msgstr "Colori"
-
-#: mail/mail-config.glade.h:3
-msgid "Account"
-msgstr "Account"
-
-#: mail/mail-config.glade.h:4
-msgid "Account Information"
-msgstr "Informazioni sull'Account"
-
-#: mail/mail-config.glade.h:5
-msgid "Account Management"
-msgstr "Gestione degli Account"
-
-#: mail/mail-config.glade.h:6
-#, fuzzy
-msgid "Accounts"
-msgstr "Account"
-
-#: mail/mail-config.glade.h:8
-msgid "Authentication"
-msgstr "Autenticazione"
-
-#: mail/mail-config.glade.h:9
-#, fuzzy
-msgid "Authentication Type: "
-msgstr "Tipo di Autenticazione:"
-
-#: mail/mail-config.glade.h:10
-#, fuzzy
-msgid "Automatically check for new mail every"
-msgstr "Controlla la posta automaticamente ogni"
-
-#: mail/mail-config.glade.h:12
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-"Complimenti, la configurazione della posta é completa.\n"
-"\n"
-"Siete pronti a mandare e ricevere email\n"
-"usando Evolution.\n"
-"\n"
-"Cliccare su \"Fine\" per salvare le impostazioni."
-
-#: mail/mail-config.glade.h:18
-msgid "De_fault"
-msgstr "Pr_edefinito"
-
-#: mail/mail-config.glade.h:20
-msgid "Done"
-msgstr "Completato"
-
-#: mail/mail-config.glade.h:21
-#, fuzzy
-msgid "Drafts"
-msgstr "Bozza"
-
-#: mail/mail-config.glade.h:22
-#, fuzzy
-msgid "Drafts folder:"
-msgstr "Creazione nuova cartella"
-
-#: mail/mail-config.glade.h:24
-msgid "Email Address:"
-msgstr "Indirizzo Email:"
-
-#: mail/mail-config.glade.h:26
-msgid "Full Name:"
-msgstr "Nome e cognome:"
-
-#: mail/mail-config.glade.h:27
-msgid "Highlight citations with "
-msgstr ""
-
-#: mail/mail-config.glade.h:29
-#, fuzzy
-msgid "IMAPv4 "
-msgstr "IMAPv4"
-
-#: mail/mail-config.glade.h:30
-msgid "Identity"
-msgstr "Identità"
-
-#: mail/mail-config.glade.h:31
-#, fuzzy
-msgid "Kerberos "
-msgstr "Kerberos 4"
-
-#: mail/mail-config.glade.h:32
-msgid "Mail Configuration"
-msgstr "Configurazione della Posta"
-
-#: mail/mail-config.glade.h:33
-msgid "Make this my default account"
-msgstr "Imposta come mio account predefinito"
-
-#: mail/mail-config.glade.h:34
-msgid "Mark messages as \"Read\" after:"
-msgstr "Segna i messaggi come \"Letti\" dopo:"
-
-#: mail/mail-config.glade.h:36
-msgid "News"
-msgstr "News"
-
-#: mail/mail-config.glade.h:38
-#, fuzzy
-msgid "Optional Information"
-msgstr "Nessuna informazione"
-
-#: mail/mail-config.glade.h:39
-msgid "Organization:"
-msgstr "Organizzazione:"
-
-#: mail/mail-config.glade.h:41
-msgid "PGP binary path:"
-msgstr "Percorso binario di PGP:"
-
-#: mail/mail-config.glade.h:46
-#, fuzzy
-msgid "Qmail maildir "
-msgstr "maildir"
-
-#: mail/mail-config.glade.h:47
-msgid "Receiving Email"
-msgstr "Ricezione Email"
-
-#: mail/mail-config.glade.h:48
-#, fuzzy
-msgid "Receiving Mail"
-msgstr "Ricezione Email"
-
-#: mail/mail-config.glade.h:49
-#, fuzzy
-msgid "Receiving Options"
-msgstr "Ricezione"
-
-#: mail/mail-config.glade.h:51
-#, fuzzy
-msgid "Required Information"
-msgstr "Informazioni Utente"
-
-#: mail/mail-config.glade.h:53
-msgid "Select PGP binary"
-msgstr "Scegliere un file binario PGP"
-
-#: mail/mail-config.glade.h:54
-msgid "Send mail in HTML format by default."
-msgstr "Invia la posta in formato HTML come predefinito."
-
-#: mail/mail-config.glade.h:55
-msgid "Sending Email"
-msgstr "Invio Email"
-
-#: mail/mail-config.glade.h:56
-#, fuzzy
-msgid "Sending Mail"
-msgstr "Invio Email"
-
-#: mail/mail-config.glade.h:58
-#, fuzzy
-msgid "Sent"
-msgstr "Visto"
-
-#: mail/mail-config.glade.h:59
-#, fuzzy
-msgid "Sent and Draft Messages"
-msgstr "Messaggio del Calendario"
-
-#: mail/mail-config.glade.h:60
-#, fuzzy
-msgid "Sent messages folder:"
-msgstr "Sposta il messaggio in una nuova cartella"
-
-#: mail/mail-config.glade.h:61
-msgid "Server Configuration"
-msgstr "Configurazione del Server"
-
-#: mail/mail-config.glade.h:62
-msgid "Server Type: "
-msgstr "Tipo di Server:"
-
-#: mail/mail-config.glade.h:63
-msgid "Server requires authentication"
-msgstr "Il Server richiede l'autenticazione"
-
-#: mail/mail-config.glade.h:64
-msgid "Signature file:"
-msgstr "File con la firma:"
-
-#: mail/mail-config.glade.h:65
-msgid "Sources"
-msgstr "Sorgenti"
-
-#: mail/mail-config.glade.h:66
-#, fuzzy
-msgid "Special Folders"
-msgstr "Cartelle Virtuali"
-
-#: mail/mail-config.glade.h:67
-#, fuzzy
-msgid "Standard Unix mbox"
-msgstr "File di mailbox standard per Unix"
-
-#: mail/mail-config.glade.h:68
-msgid "Type"
-msgstr "Tipo"
-
-#: mail/mail-config.glade.h:69
-msgid "Use secure connection (SSL)"
-msgstr ""
-
-#: mail/mail-config.glade.h:70
-msgid "Username:"
-msgstr "Username:"
-
-#: mail/mail-config.glade.h:71
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-"Configurazione guidata della Posta, benvenuti.\n"
-"\n"
-"Cliccare \"successivo\" per cominciare."
-
-#: mail/mail-config.glade.h:76 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:43 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:30
-msgid "_Edit"
-msgstr "_Modifica"
-
-#: mail/mail-config-druid.c:99
-msgid ""
-"Please enter your name and email address below. The \"optional\" fields "
-"below do not need to be filled in, unless you wish to include this "
-"information in email you send."
-msgstr ""
-
-#: mail/mail-config-druid.c:101
-msgid ""
-"Please enter information about your incoming mail server below. If you don't "
-"know what kind of server you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-
-#: mail/mail-config-druid.c:105
-msgid ""
-"Please enter information about your outgoing mail protocol below. If you "
-"don't know which protocol you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-
-#: mail/mail-config-druid.c:107
-msgid ""
-"You are almost done with the mail configuration process. The identity, "
-"incoming mail server and outgoing mail transport method which you provided "
-"will be grouped together to make an Evolution mail account. Please enter a "
-"name for this account in the space below. This name will be used for display "
-"purposes only."
-msgstr ""
-
-#. set window title
-#: mail/mail-config-druid.c:445
-msgid "Evolution Account Wizard"
-msgstr "Guida agli Account di Evolution"
-
-#: mail/mail-display.c:194
-msgid "Save Attachment"
-msgstr "Salva Allegati"
-
-#: mail/mail-display.c:234
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr "Impossibile creare una directory temporanea: %s"
-
-#: mail/mail-display.c:295
-msgid "Save to Disk..."
-msgstr "Salva su Disco..."
-
-#: mail/mail-display.c:297
-#, c-format
-msgid "Open in %s..."
-msgstr "Apri in %s..."
-
-#: mail/mail-display.c:299
-msgid "View Inline"
-msgstr "Visualizza In linea"
-
-#: mail/mail-display.c:334
-msgid "External Viewer"
-msgstr "Visualizzatore Esterno"
-
-#: mail/mail-display.c:357
-#, c-format
-msgid "View Inline (via %s)"
-msgstr "View Inline (via %s)"
-
-#: mail/mail-display.c:361
-msgid "Hide"
-msgstr "Nascondi"
-
-#: mail/mail-display.c:1102
-msgid "Open link in browser"
-msgstr ""
-
-#: mail/mail-display.c:1104
-#, fuzzy
-msgid "Save as (FIXME)"
-msgstr "_Obiettivo"
-
-#: mail/mail-display.c:1106
-#, fuzzy
-msgid "Copy location (FIXME)"
-msgstr "_Contatto"
-
-#: mail/mail-format.c:522
-#, c-format
-msgid "%s attachment"
-msgstr "%s allegato"
-
-#: mail/mail-format.c:564
-#, fuzzy
-msgid "Could not parse MIME message. Displaying as source."
-msgstr "Impossibile aprire la cartella: la lista dei messaggi era incompleta."
-
-#: mail/mail-format.c:746
-msgid "Loading message content"
-msgstr "Caricamento del contenuto del messaggio"
-
-#: mail/mail-format.c:1040
-#, fuzzy
-msgid "No GPG/PGP program configured."
-msgstr "Programma GPG/PGP non disponibile."
-
-#: mail/mail-format.c:1055
-msgid "Encrypted message not displayed"
-msgstr "Messaggi cifrati non visualizzati"
-
-#: mail/mail-format.c:1061
-msgid "Encrypted message"
-msgstr "Messaggio cifrato"
-
-#: mail/mail-format.c:1062
-msgid "Click icon to decrypt."
-msgstr "Cliccare l'icona per decifrare."
-
-#: mail/mail-format.c:1152 mail/mail-format.c:1540
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr "Questo messaggio ha una firma digitale riscontrata come autentica."
-
-#: mail/mail-format.c:1160 mail/mail-format.c:1548
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr ""
-"Questo messaggio ha una firma digitale di cui non è possibile provare "
-"l'autenticità."
-
-#: mail/mail-format.c:1761
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr "Puntatore al sito FTP (%s)"
-
-#: mail/mail-format.c:1773
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr "Puntatore al file locale (%s) valido al sito \"%s\""
-
-#: mail/mail-format.c:1777
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr "Puntatore a un file locale (%s)"
-
-#: mail/mail-format.c:1811
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr "Puntatore a dati esterni sconosciuti (tipo \"%s\")"
-
-#: mail/mail-format.c:1816
-msgid "Malformed external-body part."
-msgstr "Parte esterna del messaggio malformata."
-
-#: mail/mail-local.c:337
-#, c-format
-msgid "No such folder %s"
-msgstr "Non è presente la cartella %s"
-
-#: mail/mail-local.c:509
-#, c-format
-msgid "Opening '%s'"
-msgstr "Apertura di '%s'"
-
-#: mail/mail-local.c:787
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr "Cambiamento del formato della cartella da \"%s\" a \"%s\" "
-
-#: mail/mail-local.c:791
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr "Cambia il formato della cartella da \"%s\" a \"%s\""
-
-#: mail/mail-local.c:814
-msgid "Reconfiguring folder"
-msgstr "Riconfigura Cartella"
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:843
-msgid "Closing current folder"
-msgstr "Chiusura cartella corrente"
-
-#: mail/mail-local.c:875
-msgid "Renaming old folder and opening"
-msgstr "Rinomina vecchia cartella e apertura in corso"
-
-#: mail/mail-local.c:893
-msgid "Creating new folder"
-msgstr "Creazione nuova cartella"
-
-#: mail/mail-local.c:907
-msgid "Copying messages"
-msgstr "Copia messaggi"
-
-#: mail/mail-local.c:924
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-"Impossibile salvare le metainfo della cartella; probabilmente non \n"
-"sarà più possibile riaprire questa cartella: %s"
-
-#: mail/mail-local.c:963
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-"Se non si riesce più ad aprire questa mailbox, può essere necessario\n"
-"ripararla manualmente."
-
-#: mail/mail-mt.c:190
-#, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-"Errore durante '%s':\n"
-"%s"
-
-#: mail/mail-mt.c:193
-#, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-"Errore durante l'operazione:\n"
-"%s"
-
-#: mail/mail-mt.c:516 mail/mail-mt.c:545 mail/mail-mt.c:892
-msgid "Working"
-msgstr "Sto lavorando"
-
-#: mail/mail-mt.c:680 mail/session.c:98
-msgid "Do you accept?"
-msgstr "Accetti?"
-
-#: mail/mail-mt.c:874
-#, fuzzy
-msgid "Evolution progress"
-msgstr "Evolution progress"
-
-#: mail/mail-ops.c:587
-#, c-format
-msgid "Sending \"%s\""
-msgstr "Invio di \"%s\" in corso"
-
-#: mail/mail-ops.c:589
-msgid "Sending message"
-msgstr "Invio messaggio"
-
-#: mail/mail-ops.c:704
-#, fuzzy, c-format
-msgid "Sending message %d of %d"
-msgstr "Invio messaggio"
-
-#: mail/mail-ops.c:723
-#, fuzzy, c-format
-msgid "Failed on message %d of %d"
-msgstr "Salvare messaggio %d di %d (uid \"%s\")"
-
-#: mail/mail-ops.c:725 mail/mail-send-recv.c:475
-msgid "Complete."
-msgstr "Completato."
-
-#: mail/mail-ops.c:811
-msgid "Saving message to folder"
-msgstr "Sposta il messaggio in una nuova cartella"
-
-#: mail/mail-ops.c:884
-#, c-format
-msgid "Moving messages to %s"
-msgstr "Sposta messaggii in %s"
-
-#: mail/mail-ops.c:884
-#, c-format
-msgid "Copying messages to %s"
-msgstr "Copia messaggi in %s"
-
-#: mail/mail-ops.c:900
-msgid "Moving"
-msgstr "Spostamento in corso"
-
-#: mail/mail-ops.c:903
-msgid "Copying"
-msgstr "Copia in corso"
-
-#: mail/mail-ops.c:978
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr "Scansione delle cartelle in \"%s\" in corso"
-
-#: mail/mail-ops.c:1139
-msgid "Forwarded messages"
-msgstr "Messaggio inoltrato"
-
-#: mail/mail-ops.c:1180 mail/mail-ops.c:1318
-#, c-format
-msgid "Opening folder %s"
-msgstr "Apertura cartella %s"
-
-#: mail/mail-ops.c:1247
-#, c-format
-msgid "Opening store %s"
-msgstr "Apertura archivio %s"
-
-#: mail/mail-ops.c:1434
-msgid "Expunging folder"
-msgstr "Eliminazione cartella"
-
-#: mail/mail-ops.c:1483
-#, c-format
-msgid "Retrieving message %s"
-msgstr "Scaricamento del messaggio %s"
-
-#: mail/mail-ops.c:1550
-msgid "Retrieving messages"
-msgstr "Scaricamento messaggi"
-
-#: mail/mail-ops.c:1560
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr "Scarica in corso del messaggio numero %d di %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1634
-msgid "Saving messages"
-msgstr "Salvataggio messaggi"
-
-#: mail/mail-ops.c:1713
-#, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr ""
-"Impossibile creare il file di output: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1726
-#, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr "Salvare messaggio %d di %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1740
-#, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr ""
-"Errore nel salvare i messaggi in: %s\n"
-"%s"
-
-#: mail/mail-ops.c:1814
-msgid "Saving attachment"
-msgstr "Salvataggio Allegati"
-
-#: mail/mail-ops.c:1829
-#, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr ""
-"Impossibile creare il file di output: %s:\n"
-" %s"
-
-#: mail/mail-ops.c:1857
-#, c-format
-msgid "Could not write data: %s"
-msgstr "Impossibile srivere i dati: %s"
-
-#: mail/mail-search-dialogue.c:113
-msgid "_Search"
-msgstr "_Cerca"
-
-#: mail/mail-send-recv.c:138
-msgid "Cancelling ..."
-msgstr "Annullamento..."
-
-#: mail/mail-send-recv.c:233
-msgid "Send & Receive mail"
-msgstr "Invia e Ricevi la posta"
-
-#: mail/mail-send-recv.c:236
-msgid "Receiving"
-msgstr "Ricezione"
-
-#: mail/mail-send-recv.c:285
-msgid "Updating ..."
-msgstr "Aggiornamento in corso..."
-
-#: mail/mail-send-recv.c:287 mail/mail-send-recv.c:333
-msgid "Waiting ..."
-msgstr "In Attesa..."
-
-#: mail/mail-send-recv.c:306
-msgid "Sending"
-msgstr "Invio"
-
-#: mail/mail-send-recv.c:471
-msgid "Cancelled."
-msgstr "Annullato."
-
-#: mail/mail-summary.c:109
-msgid "Incomplete message written on pipe!"
-msgstr "E` stato scritto un messaggio incompleto nella pipe!"
-
-#: mail/mail-tools.c:141
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr "Impossibile creare una mbox temporanea `%s': %s"
-
-#: mail/mail-tools.c:188
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr "[%s] (messagio inoltrato)"
-
-#: mail/mail-tools.c:198
-msgid "Fwd: (no subject)"
-msgstr "Fwd: (nessun oggetto)"
-
-#: mail/mail-tools.c:215
-#, c-format
-msgid "Forwarded message - %s"
-msgstr "Messaggio inoltrato - %s"
-
-#: mail/mail-tools.c:217
-msgid "Forwarded message (no subject)"
-msgstr "Messaggio inoltrato (senza oggetto)"
-
-#: mail/mail-tools.c:414
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-msgstr ""
-"-----Messagio Inoltrato-----<br><b>Da:</b> %s<br><b>A:</b> \"\n"
-"\"%s<br><b>Oggetto:</b> %s<br>"
-
-#: mail/mail-vfolder.c:249
-msgid "VFolders"
-msgstr "Cartelle virtuali"
-
-#: mail/mail-vfolder.c:427
-msgid "New VFolder"
-msgstr "Nuova Cartella Virtuale"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/mail-view.c:144 ui/evolution-mail.xml.h:60
-msgid "Reply"
-msgstr "Rispondi"
-
-#: mail/mail-view.c:144 ui/evolution-mail.xml.h:66
-msgid "Reply to the sender of this message"
-msgstr "Rispondi all'autore di questo messaggio"
-
-#: mail/mail-view.c:147 ui/evolution-mail.xml.h:64
-msgid "Reply to all recipients of this message"
-msgstr "Rispondi a tutti i destinatari di questo messaggio"
-
-#: mail/mail-view.c:150 ui/evolution-mail.xml.h:29
-msgid "Forward this message"
-msgstr "Inoltra questo messaggio"
-
-#: mail/mail-view.c:154 ui/evolution-mail.xml.h:57
-msgid "Print the selected message"
-msgstr "Stampa il messaggio selezionato"
-
-#: mail/mail-view.c:156 ui/evolution-mail.xml.h:13
-msgid "Delete this message"
-msgstr "Elimina questo messaggio"
-
-#: mail/message-list.c:650
-msgid "Unseen"
-msgstr "Non visto"
-
-#: mail/message-list.c:651
-msgid "Seen"
-msgstr "Visto"
-
-#: mail/message-list.c:652
-msgid "Answered"
-msgstr "Risposto"
-
-#: mail/message-list.c:653
-msgid "Multiple Unseen Messages"
-msgstr "Messaggi Multipli Non Visti"
-
-#: mail/message-list.c:654
-msgid "Multiple Messages"
-msgstr "Messaggi Multipli"
-
-#: mail/message-list.c:658
-msgid "Lowest"
-msgstr "Il più basso"
-
-#: mail/message-list.c:659
-msgid "Lower"
-msgstr "Più basso"
-
-#: mail/message-list.c:663
-msgid "Higher"
-msgstr "Più alto"
-
-#: mail/message-list.c:664
-msgid "Highest"
-msgstr "Il più alto"
-
-#: mail/message-list.c:914
-msgid "?"
-msgstr "?"
-
-#: mail/message-list.c:921
-msgid "Today %l:%M %p"
-msgstr "Oggi %I:%M %p"
-
-#: mail/message-list.c:930
-msgid "Yesterday %l:%M %p"
-msgstr "Ieri %l %M %p"
-
-#: mail/message-list.c:942
-msgid "%a %l:%M %p"
-msgstr "%a %I:%M %p"
-
-#: mail/message-list.c:950
-msgid "%b %d %l:%M %p"
-msgstr "%b %d %l:%M %p"
-
-#: mail/message-list.c:952
-msgid "%b %d %Y"
-msgstr "%b %d %Y"
-
-#: mail/message-list.c:1054
-msgid "Flagged"
-msgstr "Con la bandierina"
-
-#: mail/message-list.c:1055
-msgid "From"
-msgstr "Da"
-
-#: mail/message-list.c:1055
-msgid "Date"
-msgstr "Data"
-
-#: mail/message-list.c:1055
-msgid "Received"
-msgstr "Ricevuto"
-
-#: mail/message-list.c:1056
-msgid "To"
-msgstr "A"
-
-#: mail/message-list.c:1056
-msgid "Size"
-msgstr "Dimensione"
-
-#: mail/subscribe-dialog.c:76 shell/e-storage-set-view.c:46
-msgid "Folder"
-msgstr "Cartella"
-
-#: mail/subscribe-dialog.c:77
-msgid "Store"
-msgstr "Archivio"
-
-#: mail/subscribe-dialog.c:138
-msgid "Display folders starting with:"
-msgstr "Visualizza le cartelle a partire da:"
-
-#: mail/subscribe-dialog.c:168
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:271
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr "Sottoscrivere cartella \"%s\" "
-
-#: mail/subscribe-dialog.c:273
-#, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr "Annullare sottoscrizione cartella \"%s\""
-
-#. Construct the app
-#: mail/subscribe-dialog.c:873
-#, fuzzy
-msgid "Manage Subscriptions"
-msgstr "Gestione _Sottoscrizioni..."
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-msgid "Folder name:"
-msgstr "Nome della cartella:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-msgid "Folder type:"
-msgstr "Tipo di cartella:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-msgid "Specify where to create the folder:"
-msgstr "Specificare dove creare la cartella:"
-
-#: shell/importer/importer.c:87
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-"Scegliere il file che si vuole importare in Evolution, e selezionare che "
-"tipo di file sia dalla lista.\n"
-"\n"
-"Si può selezionare \"Automatico\" se non si conosce, Evolution tenterà di "
-"arrangiarsi."
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/importer/importer.c:182
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-"Importazione di %s\n"
-"Importatore non pronto.\n"
-"Attendere 5 secondi per riprovare."
-
-#: shell/importer/importer.c:202 shell/importer/importer.c:233
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-"Importazione %s\n"
-"Importazione dell'oggetto %d."
-
-#: shell/importer/importer.c:341
-#, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr ""
-"Non c'é un importatore adatto a gestire\n"
-"%s"
-
-#: shell/importer/importer.c:351
-msgid "Importing"
-msgstr "Importazione"
-
-#: shell/importer/importer.c:359
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-"Importazione di %s.\n"
-"Avvio di %s"
-
-#: shell/importer/importer.c:372
-#, fuzzy, c-format
-msgid "Error starting %s"
-msgstr "Errore nel caricare: %s"
-
-#: shell/importer/importer.c:387
-#, c-format
-msgid "Error loading %s"
-msgstr "Errore nel caricare: %s"
-
-#: shell/importer/importer.c:402
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-"Importazione %s\n"
-"Importazione dell'oggetto 1."
-
-#: shell/importer/importer.c:473
-msgid "Automatic"
-msgstr "Automatico"
-
-#: shell/importer/importer.c:523
-msgid "Filename:"
-msgstr "Nome del file:"
-
-#: shell/importer/import.glade.h:5 shell/importer/importer.c:528
-msgid "Select a file"
-msgstr "Scegliere un file"
-
-#: shell/importer/importer.c:538
-msgid "File type:"
-msgstr "Tipo di file:"
-
-#: shell/importer/import.glade.h:4 shell/importer/importer.c:619
-msgid "Import"
-msgstr "Importa"
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr ""
-"Cliccare \"Importa\" per iniziare l'importazione del file in Evolution. "
-
-#: shell/importer/import.glade.h:2
-msgid "Evolution Import Utility"
-msgstr "Utilità Inportazione di Evolution"
-
-#: shell/importer/import.glade.h:3
-msgid "Evolution Importer Utility"
-msgstr "Utilità Importatore di Evolution"
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-"Utilità di Importazione di Evolution, benvenuti.\n"
-"Questa guida vi accompagnerà attraverso il processo \n"
-"di importazione di file esterni in Evoution."
-
-#: shell/e-setup.c:118 shell/e-setup.c:191
-msgid "Evolution installation"
-msgstr "Installazione di Evolution"
-
-#: shell/e-setup.c:122
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-"Questa nuova versione di Evolution richiede l'installazione di file \n"
-"addizionali nella directory personale di Evolution"
-
-#: shell/e-setup.c:123
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr "Cliccare \"OK\" per installare i files, o \"Annulla\" per uscire."
-
-#: shell/e-setup.c:163
-msgid "Could not update files correctly"
-msgstr "Impossibile aggiornare i file correttamente"
-
-#: shell/e-setup.c:166 shell/e-setup.c:234
-msgid "Evolution files successfully installed."
-msgstr "File di Evolution installati con successo."
-
-#: shell/e-setup.c:195
-msgid "This seems to be the first time you are running Evolution."
-msgstr "Sembra che si stia usando Evolution per la prima volta. "
-
-#: shell/e-setup.c:196
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr "Cliccare \"OK\" per installare i files di utente di Evolution sotto"
-
-#: shell/e-setup.c:215
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"Impossibile creare la directory\n"
-"%s\n"
-"Errore: %s"
-
-#: shell/e-setup.c:230
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-"Impossibile copiare i file in\n"
-"`%s'"
-
-#: shell/e-setup.c:255
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-"Il file `%s' non è una directory.\n"
-"Spostarla per permettere l'installazione\n"
-"dei file utente di Evolution."
-
-#: shell/e-setup.c:267
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-"La directory `%s' esiste ma non è la \n"
-"directorydi Evolution. Spostarla per permettere \n"
-"l'installazione dei file utente di Evolution."
-
-#: shell/e-shell-folder-creation-dialog.c:99
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-"Impossibile creare la cartella specificata:\n"
-"%s"
-
-#: shell/e-shell-folder-creation-dialog.c:156
-msgid "The specified folder name is not valid."
-msgstr "Il nome specificato della cartella non è valido."
-
-#: shell/e-shell-folder-creation-dialog.c:263
-msgid "Evolution - Create new folder"
-msgstr "Evolution - Crea nuova cartella"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-"Il tipo di cartella selezionata non è valido\n"
-"per l'operazione richiesta. "
-
-#: shell/e-shell-folder-selection-dialog.c:321
-msgid "New..."
-msgstr "Nuovo..."
-
-#: shell/e-shell-folder-title-bar.c:459 shell/e-shell-folder-title-bar.c:460
-msgid "(Untitled)"
-msgstr "(Senza nome)"
-
-#: shell/e-shell-view-menu.c:173
-msgid "Bug buddy was not found in your $PATH."
-msgstr "Impossibile trovare Bug Buddy nel tuo $PATH. "
-
-#: shell/e-shell-view-menu.c:179
-msgid "Bug buddy could not be run."
-msgstr "Bug buddy non può essere eseguito."
-
-#: shell/e-shell-view-menu.c:208
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Copyright 1999, 2000, 2001 Ximian, Inc."
-
-#: shell/e-shell-view-menu.c:210
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-"Evolution è una suite di applicazioni groupware\n"
-"per posta, calendario e gestione dei contatti\n"
-"nell'ambito dell'ambiente GNOME desktop. "
-
-#: shell/e-shell-view-menu.c:374
-msgid "Go to folder..."
-msgstr "Vai alla cartella..."
-
-#: shell/e-shell-view.c:148
-msgid "(No folder displayed)"
-msgstr "(Nessuna cartella mostrata)"
-
-#: shell/e-shell-view.c:1184
-#, c-format
-msgid "%s - Evolution %s"
-msgstr "%s -Evolution %s"
-
-#: shell/e-shell-view.c:1186
-#, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "%s - Evolution %s [%s]"
-
-#: shell/e-shell.c:378
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr "Impossibile impostare il local storage --%s"
-
-#: shell/e-shell.c:1248
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-"Ooops! La visualizzazione di `%s' è morta inaspettatamente. :-(\\n\n"
-"Il che significa che probabilmente il componente %s si è impallato"
-
-#: shell/e-shortcuts-view.c:134
-msgid "Create new shortcut group"
-msgstr "Crea un nuovo gruppo di collegamento "
-
-#: shell/e-shortcuts-view.c:137
-msgid "Group name:"
-msgstr "Nome del Gruppo:"
-
-#: shell/e-shortcuts-view.c:260
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-"Si desidera veramente rimuovere il gruppo\n"
-"`%s' dalla barra dei collegamenti?"
-
-#: shell/e-shortcuts-view.c:265
-msgid "Don't remove"
-msgstr "Non rimuovere"
-
-#: shell/e-shortcuts-view.c:276
-msgid "_Small Icons"
-msgstr "Icone _Piccole"
-
-#: shell/e-shortcuts-view.c:277
-msgid "Show the shortcuts as small icons"
-msgstr "Mostra i collegamenti come icone piccole "
-
-#: shell/e-shortcuts-view.c:279
-msgid "_Large Icons"
-msgstr "Icone _Grandi"
-
-#: shell/e-shortcuts-view.c:280
-msgid "Show the shortcuts as large icons"
-msgstr "Mostra i collegamenti come icone grandi"
-
-#: shell/e-shortcuts-view.c:291
-msgid "_New Group..."
-msgstr "_Nuovo Gruppo..."
-
-#: shell/e-shortcuts-view.c:292
-msgid "Create a new shortcut group"
-msgstr "Crea un nuovo gruppo di collegamento"
-
-#: shell/e-shortcuts-view.c:294
-msgid "_Remove This Group..."
-msgstr "_Rimuovi Questo Gruppo..."
-
-#: shell/e-shortcuts-view.c:295
-msgid "Remove this shortcut group"
-msgstr "Rimuovi questo gruppo di collegamento"
-
-#: shell/e-shortcuts-view.c:300
-msgid "_Hide the Shortcut Bar"
-msgstr "_Nascondi la Barra di Collegamento"
-
-#: shell/e-shortcuts-view.c:301
-msgid "Hide the shortcut bar"
-msgstr "Nasconde la barra di collegamento"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate"
-msgstr "Attiva"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate this shortcut"
-msgstr "Attiva questo collegamento"
-
-#: shell/e-shortcuts-view.c:388
-msgid "Remove this shortcut from the shortcut bar"
-msgstr "Rimuovi il collegamento dalla barra dei collegamenti"
-
-#: shell/e-shortcuts.c:379
-msgid "Error saving shortcuts."
-msgstr "Errore di salvataggio dei collegamenti."
-
-#: shell/e-storage-set-view.c:649 ui/evolution-event-editor.xml.h:76
-#: ui/evolution-message-composer.xml.h:53
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:44
-msgid "_View"
-msgstr "_Visualizza"
-
-#: shell/e-storage-set-view.c:649
-msgid "View the selected folder"
-msgstr "Mostra la cartella selezionata"
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr "(Senza nome)"
-
-#: shell/e-storage.c:459
-msgid "No error"
-msgstr "Nessun errore"
-
-#: shell/e-storage.c:461
-msgid "Generic error"
-msgstr "Errore generico"
-
-#: shell/e-storage.c:463
-msgid "A folder with the same name already exists"
-msgstr "Esiste già una cartella con questo nome"
-
-#: shell/e-storage.c:465
-msgid "The specified folder type is not valid"
-msgstr "Il tipo di cartella specificato non è valido"
-
-#: shell/e-storage.c:467
-msgid "I/O error"
-msgstr "Errore I/O"
-
-#: shell/e-storage.c:469
-msgid "Not enough space to create the folder"
-msgstr "Spazio insufficiente per creare la cartella"
-
-#: shell/e-storage.c:471
-msgid "The specified folder was not found"
-msgstr "Cartella non trovata"
-
-#: shell/e-storage.c:473
-msgid "Function not implemented in this storage"
-msgstr "Funzione non implementata"
-
-#: shell/e-storage.c:475
-msgid "Permission denied"
-msgstr "Permesso negato"
-
-#: shell/e-storage.c:477
-msgid "Operation not supported"
-msgstr "Operazione non supportata"
-
-#: shell/e-storage.c:479
-msgid "The specified type is not supported in this storage"
-msgstr "Tipo on supportato"
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-msgid "The Evolution shell."
-msgstr "La shell di Evolution."
-
-#: shell/main.c:83
-#, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-"Ciao.  Grazie per aver trovato il tempo di scaricare quest'ANTEPRIMA\n"
-"della groupware suite Evolution.\n"
-"\n"
-"Evolution non é ancora completo. Ci stiamo avvicinando, ma ci sono ancora\n"
-"parti in cui manca ancora qualcosa o funziona solo a metà. Se non si riesce "
-"a\n"
-"immmaginare come fare qualcosa, probabilmente é perchè non c'è ancora modo "
-"di \n"
-"farla! :-) \n"
-"\n"
-"Speriamo che Evolution possa risultarvi usabile, ma sentiamo il\n"
-"bisogno di avvisarvi che potrebbe: impallarsi, perdere la vostra\n"
-"posta, lasciare processi attivi, consumare il 100% del tempo di CPU,\n"
-"mandare messaggi strani ai server mettendovi in imbarazzo di fronte ad\n"
-"amici e colleghi.   Usatelo secondo le indicazioni.\n"
-"\n"
-"Ci auguriamo che apprezziate il risultato del nostro duro lavoro, e\n"
-"aspettiamo ansiosamente i vostri contributi!\n"
-
-#: shell/main.c:108
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-"Grazie\n"
-"il Team di Evolution.\n"
-
-#: shell/main.c:139
-msgid "Cannot initialize the Evolution shell."
-msgstr "Impossibile inizializzare la shell di Evolution."
-
-#: shell/main.c:185
-msgid "Disable splash screen"
-msgstr ""
-
-#: shell/main.c:186
-msgid "Send the debugging output of all components to a file."
-msgstr ""
-
-#: shell/main.c:219
-msgid "Cannot initialize the Bonobo component system."
-msgstr "Impossibile inizializzare il sistema di componenti Bonobo."
-
-#: ui/evolution-addressbook.xml.h:2
-msgid "Create new contact"
-msgstr "Crea un nuovo contatto"
-
-#: ui/evolution-addressbook.xml.h:4
-msgid "Delete a contact"
-msgstr "Cancella un contatto"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-msgid "Find"
-msgstr "Trova"
-
-#: ui/evolution-addressbook.xml.h:6
-msgid "Find a contact"
-msgstr "Trova un contatto"
-
-#: ui/evolution-addressbook.xml.h:7
-msgid "New contact"
-msgstr "Nuovo contatto"
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-mail.xml.h:50
-msgid "Previews the message to be printed"
-msgstr "Anteprime del messaggio da stampare"
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "Print contacts"
-msgstr "Stampa contatti"
-
-#: ui/evolution-addressbook.xml.h:12 ui/evolution-mail.xml.h:79
-msgid "Stop"
-msgstr "Stop"
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "Stop Loading"
-msgstr "Arresta caricamento"
-
-#: ui/evolution-addressbook.xml.h:14
-msgid "View All"
-msgstr "Visualizza Tutto"
-
-#: ui/evolution-addressbook.xml.h:15
-msgid "View all contacts"
-msgstr "Visualizza tutti i contatti"
-
-#: ui/evolution-addressbook.xml.h:16
-msgid "_Addressbook Sources..."
-msgstr "Sorgenti della _Rubrica..."
-
-#: ui/evolution-addressbook.xml.h:17
-msgid "_Contact"
-msgstr "_Contatti"
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-msgid "_Print..."
-msgstr "S_tampa..."
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr "_Ceca Contatti"
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-mail.xml.h:112
-#: ui/evolution-task-editor-dialog.xml.h:88 ui/evolution.xml.h:43
-msgid "_Tools"
-msgstr "S_trumenti"
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr "5 Giorni"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-msgid "Alter preferences"
-msgstr "Cambia preferenze"
-
-#: ui/evolution-calendar.xml.h:4
-msgid "Create a new all day Event"
-msgstr "Crea un nuovo Evento dell'intera giornata"
-
-#: ui/evolution-calendar.xml.h:5
-msgid "Create a new appointment"
-msgstr "Crea un nuovo appuntamento"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr "Crea un nuovo calendario"
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr "Giorno"
-
-#: ui/evolution-calendar.xml.h:8
-msgid "Go To"
-msgstr "Vai al"
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr "Torna indietro nel tempo"
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go forward in time"
-msgstr "Vai avanti nel tempo"
-
-#: ui/evolution-calendar.xml.h:11
-msgid "Go to _Date"
-msgstr "Vai alla _Data"
-
-#: ui/evolution-calendar.xml.h:12
-msgid "Go to _Today"
-msgstr "Vai a _Oggi"
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr "Vai ad una data specifica"
-
-#: ui/evolution-calendar.xml.h:14
-msgid "Go to present time"
-msgstr "Vai al presente"
-
-#: ui/evolution-calendar.xml.h:15
-msgid "Month"
-msgstr "Mese"
-
-#: ui/evolution-calendar.xml.h:17
-msgid "New _Event"
-msgstr "Nuovo _Evento"
-
-#: ui/evolution-calendar.xml.h:18 ui/evolution-event-editor.xml.h:29
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "Next"
-msgstr "Successivo"
-
-#: ui/evolution-calendar.xml.h:20
-msgid "Open Calendar"
-msgstr "Apri calendario"
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Prev"
-msgstr "Prec"
-
-#: ui/evolution-calendar.xml.h:22
-#, fuzzy
-msgid "Previews the calendar to be printed"
-msgstr "Anteprime del messaggio da stampare"
-
-#: ui/evolution-calendar.xml.h:25
-msgid "Print calendar"
-msgstr "Stampa calendario"
-
-#: ui/evolution-calendar.xml.h:26
-msgid "Print this Calendar"
-msgstr "Stampa questo calendario"
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:15
-msgid "Save As"
-msgstr "Salva con Nome"
-
-#: ui/evolution-calendar.xml.h:28
-msgid "Save calendar as something else"
-msgstr "Salva calendario con altro nome"
-
-#: ui/evolution-calendar.xml.h:30
-msgid "Show 1 day"
-msgstr "Mostra 1 giorno"
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr "Mostra 1 mese"
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr "Mostra 1 settimana"
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr "Mostra la settimana lavorativa"
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:226
-#: widgets/misc/e-dateedit.c:422
-msgid "Today"
-msgstr "Oggi"
-
-#: ui/evolution-calendar.xml.h:35
-msgid "W_ork Week"
-msgstr "_Settimana lavorativa"
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr "Settimana"
-
-#: ui/evolution-calendar.xml.h:37
-msgid "_Appointment"
-msgstr "_Appuntamento"
-
-#: ui/evolution-calendar.xml.h:38
-msgid "_Day"
-msgstr "_Giorno"
-
-#: ui/evolution-calendar.xml.h:39
-msgid "_Month"
-msgstr "_Mese"
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:39
-msgid "_New"
-msgstr "_Nuovo"
-
-#: ui/evolution-calendar.xml.h:41
-msgid "_Open Calendar"
-msgstr "_Apri calendario"
-
-#: ui/evolution-calendar.xml.h:43 ui/evolution-mail.xml.h:108
-#: ui/evolution-tasks.xml.h:8
-msgid "_Save As..."
-msgstr "_Salva con nome..."
-
-#: ui/evolution-calendar.xml.h:45
-msgid "_Week"
-msgstr "_Settimana"
-
-#: ui/evolution-contact-editor.xml.h:2
-msgid "Delete this item"
-msgstr "Elimina quest'oggetto"
-
-#: ui/evolution-contact-editor.xml.h:3
-msgid "Delete..."
-msgstr "Elimina..."
-
-#: ui/evolution-contact-editor.xml.h:4
-msgid "Help"
-msgstr "Aiuto"
-
-#: ui/evolution-contact-editor.xml.h:5
-msgid "Print En_velope..."
-msgstr "Stampa _Busta..."
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-msgid "Print this item"
-msgstr "Stampa questo articolo"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-mail.xml.h:58 ui/evolution-task-editor-dialog.xml.h:41
-msgid "Print..."
-msgstr "Stampa..."
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:16
-#: ui/evolution-task-editor-dialog.xml.h:51
-msgid "Save _As..."
-msgstr "Salva _come..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-msgid "Save and Close"
-msgstr "Salva ed Esci"
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr "Salva il contatto e chiudi la finestra di dialogo"
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr "_Invia contatto a altri..."
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr "Vedere aiuto in linea"
-
-#: ui/evolution-contact-editor.xml.h:13
-msgid "Send _message to contact..."
-msgstr "Invia un _messaggio al contatto..."
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:44 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:31
-msgid "_File"
-msgstr "_File"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:51
-#: ui/evolution-task-editor-dialog.xml.h:85
-msgid "_Save"
-msgstr "_Salva"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr "Informazioni su questa applicazione"
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr "Informazioni su..."
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-msgid "Actio_ns"
-msgstr "Azio_ni"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-msgid "Address _Book... (FIXME)"
-msgstr "FIXME: Address _Book..."
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-msgid "C_lear"
-msgstr "_Annulla"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-msgid "C_ut"
-msgstr "_Taglia"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-msgid "Chec_k Names (FIXME)"
-msgstr "Controlla i Nomi"
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-msgid "Clear"
-msgstr "Annulla"
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-msgid "Clear the selection"
-msgstr "Annulla la Selezione"
-
-#: ui/evolution-event-editor.xml.h:11
-msgid "Close this appointment"
-msgstr "Chiudi questo appuntamento"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "Cop_ia nella Cartella..."
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:7
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "Copia"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-msgid "Copy the selection"
-msgstr "Copia selezionato"
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr "Taglia"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Cut the selection"
-msgstr "Taglia selezionato"
-
-#: ui/evolution-event-editor.xml.h:18
-msgid "Delete this appointment"
-msgstr "Elimina questo appuntamento"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr "Dump XML"
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr "Fa un Dump della descrizione UI Xml"
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr "P_rimo oggetto della cartella"
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-msgid "For_ward (FIXME)"
-msgstr "Editor dei Contatti"
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr "Inoltra come v_Calendar"
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-msgid "Go to the next item"
-msgstr "Vai al successivo"
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-msgid "Go to the previous item"
-msgstr "Vai al precedente"
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-msgid "In_complete Task (FIXME)"
-msgstr "Obiettivo incompleto"
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-msgid "Modify the file's properties"
-msgstr "Modifica le proprietà del file"
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-msgid "N_ext"
-msgstr "S_uccessivo"
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-msgid "Paste"
-msgstr "Incolla"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-msgid "Paste the clipboard"
-msgstr "Incolla agli appunti"
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr "_Precedente"
-
-#: ui/evolution-event-editor.xml.h:33 ui/evolution-task-editor-dialog.xml.h:36
-msgid "Previous"
-msgstr "Precedente"
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-msgid "Print Pre_view"
-msgstr "_Anteprima di stampa"
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-msgid "Print S_etup..."
-msgstr "_Impostazioni Stampa..."
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-msgid "Print Setup"
-msgstr "Impostazione pagina"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:14
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:239
-msgid "Save"
-msgstr "Salva"
-
-#: ui/evolution-event-editor.xml.h:43
-msgid "Save the appointment and close the dialog box"
-msgstr "Salva l'appuntamento e chiudi la finestra di dialogo"
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:20
-#: ui/evolution-task-editor-dialog.xml.h:53
-msgid "Save the current file"
-msgstr "Salva il file corrente"
-
-#: ui/evolution-event-editor.xml.h:46
-msgid "Schedule _Meeting"
-msgstr "Pianifica una _Riunione"
-
-#: ui/evolution-event-editor.xml.h:47
-msgid "Schedule some sort of a meeting"
-msgstr "Pianifica un tipo di riunione"
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-mail.xml.h:69
-#: ui/evolution-task-editor-dialog.xml.h:57
-msgid "Select All"
-msgstr "Seleziona Tutto"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-msgid "Select everything"
-msgstr "Seleziona ogni cosa"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr "Imposta i parametri della pagina per la stampante corrente"
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-msgid "Task _Request (FIXME)"
-msgstr "Richiesta _obiettivo"
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-message-composer.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:63
-msgid "_About..."
-msgstr "_Informazioni su"
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:41
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:28
-msgid "_Close"
-msgstr "_Chiudi"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:29
-msgid "_Contact (FIXME)"
-msgstr "_Contatto"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-msgid "_Copy"
-msgstr "_Copia"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr "_Debug"
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:46
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:35
-msgid "_Help"
-msgstr "_Aiuto"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-msgid "_Item (FIXME)"
-msgstr "_Oggetto"
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-msgid "_Journal Entry (FIXME)"
-msgstr "_Voce dell'agenda"
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-msgid "_Last Item in Folder (FIXME)"
-msgstr "_Ultimo oggetto della Cartella"
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-msgid "_Mail Message (FIXME)"
-msgstr "_Invia messaggio"
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-msgid "_Move to Folder... (FIXME)"
-msgstr "_Sposta nella Cartella..."
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-msgid "_Note (FIXME)"
-msgstr "_Note"
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-msgid "_Paste"
-msgstr "_Incolla"
-
-#: ui/evolution-event-editor.xml.h:69 ui/evolution-task-editor-dialog.xml.h:82
-#: ui/evolution-tasks.xml.h:7
-msgid "_Print"
-msgstr "S_tampa"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:104
-#: ui/evolution-task-editor-dialog.xml.h:83
-msgid "_Properties..."
-msgstr "_Proprietà"
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-msgid "_Select All"
-msgstr "_Seleziona Tutto"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:42
-msgid "_Task (FIXME)"
-msgstr "_Obiettivo"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-msgid "_Unread Item (FIXME)"
-msgstr "_Non letto"
-
-#: ui/evolution-executive-summary.xml.h:1
-msgid "Add Service"
-msgstr "Aggiungi Servizio"
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr "Aggiungi un servizio al Sommario Esecutivo"
-
-#: ui/evolution-executive-summary.xml.h:3
-msgid "Create a new email"
-msgstr "Crea una nuova email"
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr "Impostazioni Sommario Esecutivo..."
-
-#: ui/evolution-executive-summary.xml.h:5
-msgid "New Mail"
-msgstr "Nuovi Messaggi"
-
-#: ui/evolution-mail.xml.h:2
-msgid "Apply any new filters to the mail in this box"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:3
-msgid "Change the properties of this folder"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:4
-msgid "Compose"
-msgstr "Scrivi"
-
-#: ui/evolution-mail.xml.h:5
-msgid "Compose a new message"
-msgstr "Scrivi un nuovo messaggio"
-
-#: ui/evolution-mail.xml.h:6
-#, fuzzy
-msgid "Configure Folder..."
-msgstr "Sposta nella Cartella..."
-
-#: ui/evolution-mail.xml.h:8
-msgid "Copy message to a new folder"
-msgstr "Copia messaggio in una nuova cartella"
-
-#: ui/evolution-mail.xml.h:9
-#, fuzzy
-msgid "Copy selected messages to another folder"
-msgstr "Copia messaggio in una nuova cartella"
-
-#: ui/evolution-mail.xml.h:10
-msgid "Create _Virtual Folder From Message"
-msgstr "Crea una Cartella Virtuale dal Messaggio"
-
-#: ui/evolution-mail.xml.h:12
-#, fuzzy
-msgid "Delete the selected messages"
-msgstr "Stampa il messaggio selezionato"
-
-#: ui/evolution-mail.xml.h:14
-msgid "Display all of the message headers"
-msgstr "Visualizza tutti gli header del messaggio"
-
-#: ui/evolution-mail.xml.h:15
-#, fuzzy
-msgid "Edit Message"
-msgstr "Stampa Messaggio"
-
-#: ui/evolution-mail.xml.h:16
-#, fuzzy
-msgid "Edit the current message"
-msgstr "L'ora corrente"
-
-#: ui/evolution-mail.xml.h:17
-msgid "Empty _Trash"
-msgstr "Vuota _Cestino"
-
-#: ui/evolution-mail.xml.h:18
-#, fuzzy
-msgid "Expunge"
-msgstr "_Elimina per sempre"
-
-#: ui/evolution-mail.xml.h:19
-#, fuzzy
-msgid "Filter on Mailing _List"
-msgstr "Filtra sulla Mailng List"
-
-#: ui/evolution-mail.xml.h:20
-msgid "Filter on Se_nder"
-msgstr "Filtro sul _Mittente"
-
-#: ui/evolution-mail.xml.h:21
-msgid "Filter on _Recipients"
-msgstr "Filtro sui _Destinatari"
-
-#: ui/evolution-mail.xml.h:22
-msgid "Filter on _Subject"
-msgstr "Filtra sull'_Oggetto"
-
-#: ui/evolution-mail.xml.h:23
-msgid "Finaly remove all mails tagged for deletion"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:24
-msgid "Forget _Passwords"
-msgstr "Dimantica _Password"
-
-#: ui/evolution-mail.xml.h:26
-msgid "Forward As"
-msgstr "Inoltra come"
-
-#: ui/evolution-mail.xml.h:28
-msgid "Forward the selected mail to someone"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:30
-msgid "Forward this message in-line with your mail, so you can edit it"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:31
-msgid "Full _Headers"
-msgstr "_Headers completi"
-
-#: ui/evolution-mail.xml.h:32
-#, fuzzy
-msgid "Hide Deleted Messages"
-msgstr "Nascondi i Messaggi _Cancellati"
-
-#: ui/evolution-mail.xml.h:33
-msgid "Hide S_elected Messages"
-msgstr "Nascondi i Messaggi _Selezionati"
-
-#: ui/evolution-mail.xml.h:34
-msgid "Hide _Deleted Messages"
-msgstr "Nascondi i Messaggi _Cancellati"
-
-#: ui/evolution-mail.xml.h:35
-msgid "Hide _Read messages"
-msgstr "Nascondi i messaggi _Letti"
-
-#: ui/evolution-mail.xml.h:36
-#, fuzzy
-msgid "Invert Selection"
-msgstr "_Inverti Selezione"
-
-#: ui/evolution-mail.xml.h:37
-msgid "Manage _Subscriptions..."
-msgstr "Gestione _Sottoscrizioni..."
-
-#: ui/evolution-mail.xml.h:38
-msgid "Mar_k as Read"
-msgstr "Segna come _Letto"
-
-#: ui/evolution-mail.xml.h:39
-msgid "Mark All as R_ead"
-msgstr "Segna _Tutti come Letti"
-
-#: ui/evolution-mail.xml.h:40
-#, fuzzy
-msgid "Mark As Read"
-msgstr "Segna come Letto"
-
-#: ui/evolution-mail.xml.h:41
-#, fuzzy
-msgid "Mark As U_nread"
-msgstr "Segna come _Non Letto"
-
-#: ui/evolution-mail.xml.h:42
-msgid "Mark as U_nread"
-msgstr "Segna come _Non Letto"
-
-#: ui/evolution-mail.xml.h:43
-#, fuzzy
-msgid "Mark the selected messages as having been read"
-msgstr "Stampa il messaggio selezionato"
-
-#: ui/evolution-mail.xml.h:44
-msgid "Mark the selected messages as not having been read"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:45
-msgid "Move"
-msgstr "Sposta"
-
-#: ui/evolution-mail.xml.h:46
-msgid "Move message to a new folder"
-msgstr "Sposta il messaggio in una nuova cartella"
-
-#: ui/evolution-mail.xml.h:47
-#, fuzzy
-msgid "Move selected messages to another folder"
-msgstr "Sposta il messaggio in una nuova cartella"
-
-#: ui/evolution-mail.xml.h:48
-msgid "Open in New Window"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:49
-#, fuzzy
-msgid "Open the current message in a new window"
-msgstr "Invia il messaggio adesso"
-
-#: ui/evolution-mail.xml.h:54
-#, fuzzy
-msgid "Print Preview of message..."
-msgstr "Anteprima di stampa"
-
-#: ui/evolution-mail.xml.h:55
-msgid "Print message to the printer"
-msgstr "Stampa messaggio con la stampante"
-
-#: ui/evolution-mail.xml.h:56
-#, fuzzy
-msgid "Print message..."
-msgstr "Stampa Messaggio"
-
-#: ui/evolution-mail.xml.h:59
-msgid "Redirect (FIXME: implement me)"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:62
-msgid "Reply to _All"
-msgstr "Rispondi a _Tutti"
-
-#: ui/evolution-mail.xml.h:63
-#, fuzzy
-msgid "Reply to all"
-msgstr "Rispondi a Tutti"
-
-#: ui/evolution-mail.xml.h:65
-#, fuzzy
-msgid "Reply to sender"
-msgstr "Rispondi al Mittente"
-
-#: ui/evolution-mail.xml.h:67
-msgid "S_ource"
-msgstr "S_orgente"
-
-#: ui/evolution-mail.xml.h:68
-#, fuzzy
-msgid "Save the message into a new file"
-msgstr "Salva il messaggio in una cartella specificata"
-
-#: ui/evolution-mail.xml.h:70 ui/evolution-subscribe.xml.h:7
-msgid "Select _All"
-msgstr "Seleziona _Tutto"
-
-#: ui/evolution-mail.xml.h:71
-msgid "Select _Thread"
-msgstr "Seleziona _Thread"
-
-#: ui/evolution-mail.xml.h:72
-#, fuzzy
-msgid "Send / Receive"
-msgstr "Invia e Ricevi"
-
-#: ui/evolution-mail.xml.h:73
-msgid "Send a reply to the person who sent you this mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:74
-msgid "Send a single mail in reply to all the selected mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:75
-#, fuzzy
-msgid ""
-"Send queued mail\n"
-" and retrieve new mail"
-msgstr "Invia la posta in coda e ricevi quella nuova"
-
-#: ui/evolution-mail.xml.h:77
-msgid "Send queued mail and retrieve new mail"
-msgstr "Invia la posta in coda e ricevi quella nuova"
-
-#: ui/evolution-mail.xml.h:78
-msgid "Show _All"
-msgstr "Mostra _Tutto"
-
-#: ui/evolution-mail.xml.h:80
-msgid "Threaded Message list"
-msgstr "LIsta di Messaggi a Thread"
-
-#: ui/evolution-mail.xml.h:81
-#, fuzzy
-msgid "Un-delete the selected messages"
-msgstr "Stampa il messaggio selezionato"
-
-#: ui/evolution-mail.xml.h:83
-#, fuzzy
-msgid "VFolder on Mailing _List"
-msgstr "Cartella virtuale sulla Mailng List"
-
-#: ui/evolution-mail.xml.h:84
-msgid "VFolder on Se_nder"
-msgstr "Cartella virtuale sul _Mittente"
-
-#: ui/evolution-mail.xml.h:85
-msgid "VFolder on _Recipients"
-msgstr "Cartella virtuale sui _Destinatari"
-
-#: ui/evolution-mail.xml.h:86
-msgid "VFolder on _Subject"
-msgstr "Cartella Virtuale per _Oggetto"
-
-#: ui/evolution-mail.xml.h:87
-msgid "View Raw Message Source"
-msgstr "Vedi la sorgente grezza del messaggio"
-
-#: ui/evolution-mail.xml.h:88
-msgid "Virtual Folder _Editor..."
-msgstr "_Editor delle Cartelle Virtuali..."
-
-#: ui/evolution-mail.xml.h:89
-msgid "_Apply Filters"
-msgstr "_Applica Filtri"
-
-#: ui/evolution-mail.xml.h:90
-msgid "_Attachment"
-msgstr "_Allegato"
-
-#: ui/evolution-mail.xml.h:91
-msgid "_Copy to Folder..."
-msgstr "_Copia nella cartella..."
-
-#: ui/evolution-mail.xml.h:92
-msgid "_Create Filter From Message"
-msgstr "_Crea Filtro dal Messaggio"
-
-#: ui/evolution-mail.xml.h:94
-msgid "_Expunge"
-msgstr "_Elimina per sempre"
-
-#: ui/evolution-mail.xml.h:95
-msgid "_Filters..."
-msgstr "_Filtri..."
-
-#: ui/evolution-mail.xml.h:96 ui/evolution.xml.h:32
-msgid "_Folder"
-msgstr "_Cartelle"
-
-#: ui/evolution-mail.xml.h:97
-msgid "_Forward"
-msgstr "_Inoltra"
-
-#: ui/evolution-mail.xml.h:98
-msgid "_Inline"
-msgstr "_In linea"
-
-#: ui/evolution-mail.xml.h:99 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr "_Inverti Selezione"
-
-#: ui/evolution-mail.xml.h:100
-msgid "_Mail Message"
-msgstr "Invia _Messaggio"
-
-#: ui/evolution-mail.xml.h:101
-msgid "_Mail Settings..."
-msgstr "Impostazioni _Posta..."
-
-#: ui/evolution-mail.xml.h:102
-msgid "_Move to Folder..."
-msgstr "_Sposta nella Cartella..."
-
-#: ui/evolution-mail.xml.h:103
-msgid "_Open Selected Items"
-msgstr "_Apri i Selezionati"
-
-#: ui/evolution-mail.xml.h:105
-msgid "_Quoted"
-msgstr "_Citato"
-
-#: ui/evolution-mail.xml.h:106
-msgid "_Reply"
-msgstr "_Rispondi"
-
-#: ui/evolution-mail.xml.h:107
-#, fuzzy
-msgid "_Resend Messages"
-msgstr "Messaggio del Calendario"
-
-#: ui/evolution-mail.xml.h:109
-#, fuzzy
-msgid "_Save Message As..."
-msgstr "Salva Messaggio con nome..."
-
-#: ui/evolution-mail.xml.h:110
-#, fuzzy
-msgid "_Send / Receive"
-msgstr "_Invia e Ricevi"
-
-#: ui/evolution-mail.xml.h:111
-msgid "_Threaded"
-msgstr "A _Thread"
-
-#: ui/evolution-mail.xml.h:113
-msgid "_Undelete"
-msgstr "_Ripristina"
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr "Allega"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-msgid "Close the current file"
-msgstr "Chiudi il file corrente"
-
-#: ui/evolution-message-composer.xml.h:5
-msgid "Encrypt this message with PGP"
-msgstr "Cifra Messaggio con PGP"
-
-#: ui/evolution-message-composer.xml.h:6
-msgid "F_ormat"
-msgstr "F_ormato"
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "HTML"
-msgstr "HTML"
-
-#: ui/evolution-message-composer.xml.h:8
-msgid "Insert a file as text into the message"
-msgstr "Inserici un file come testo nel messaggio"
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert text file..."
-msgstr "Inserici un file di testo..."
-
-#: ui/evolution-message-composer.xml.h:11
-msgid "Open a file"
-msgstr "Apri un file"
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "PGP Encrypt"
-msgstr "Cifra con PGP"
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Sign"
-msgstr "Firma con PGP"
-
-#: ui/evolution-message-composer.xml.h:17
-msgid "Save _Draft"
-msgstr "Salva _Bozza"
-
-#: ui/evolution-message-composer.xml.h:18
-msgid "Save in _folder... (FIXME)"
-msgstr "Salva nella cartella..."
-
-#: ui/evolution-message-composer.xml.h:19
-msgid "Save in folder..."
-msgstr "Salva nella cartella..."
-
-#: ui/evolution-message-composer.xml.h:21
-msgid "Save the current file with a different name"
-msgstr "Salva il file corrente con un nome diverso"
-
-#: ui/evolution-message-composer.xml.h:22
-msgid "Save the message in a specified folder"
-msgstr "Salva il messaggio in una cartella specificata"
-
-#: ui/evolution-message-composer.xml.h:23
-msgid "Send"
-msgstr "Invia"
-
-#: ui/evolution-message-composer.xml.h:24
-msgid "Send _Later"
-msgstr "Invia più _Tardi"
-
-#: ui/evolution-message-composer.xml.h:25
-msgid "Send _later"
-msgstr "Invia più _tardi"
-
-#: ui/evolution-message-composer.xml.h:26
-msgid "Send the mail in HTML format"
-msgstr "Invia la posta in formato HTML"
-
-#: ui/evolution-message-composer.xml.h:27
-msgid "Send the message later"
-msgstr "Invia il messaggio più tardi"
-
-#: ui/evolution-message-composer.xml.h:28
-msgid "Send the message now"
-msgstr "Invia il messaggio adesso"
-
-#: ui/evolution-message-composer.xml.h:29
-msgid "Send this message now"
-msgstr "Invia questo messaggio adesso"
-
-#: ui/evolution-message-composer.xml.h:30
-msgid "Show / hide attachments"
-msgstr "Mostra / nascondi allegati"
-
-#: ui/evolution-message-composer.xml.h:31
-msgid "Show _attachments"
-msgstr "Mostra _allegati"
-
-#: ui/evolution-message-composer.xml.h:32
-msgid "Show attachments"
-msgstr "Mostra allegati"
-
-#: ui/evolution-message-composer.xml.h:33
-msgid "Sign this message with your PGP key"
-msgstr "Frima questo messaggio con la chiave PGP"
-
-#: ui/evolution-message-composer.xml.h:34
-msgid "Toggles whether the BCC field is displayed"
-msgstr "Mostra/nasconde il campo BCC"
-
-#: ui/evolution-message-composer.xml.h:35
-msgid "Toggles whether the CC field is displayed"
-msgstr "Mostra/nasconde il campo CC"
-
-#: ui/evolution-message-composer.xml.h:36
-msgid "Toggles whether the From chooser is displayed"
-msgstr "Mostra/nasconde il campo di selezione Da"
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr "Mostra/nasconde il campo Rispondi A"
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "_Bcc Field"
-msgstr "Campo _Bcc"
-
-#: ui/evolution-message-composer.xml.h:40
-msgid "_Cc Field"
-msgstr "Campo _Cc"
-
-#: ui/evolution-message-composer.xml.h:45
-msgid "_From Field"
-msgstr "Campo _Da"
-
-#: ui/evolution-message-composer.xml.h:47
-msgid "_Insert"
-msgstr "_Inserisci"
-
-#: ui/evolution-message-composer.xml.h:48
-msgid "_Insert text file... (FIXME)"
-msgstr "Inserisci un file di testo..."
-
-#: ui/evolution-message-composer.xml.h:49
-msgid "_Open..."
-msgstr "_Apri..."
-
-#: ui/evolution-message-composer.xml.h:50
-msgid "_Reply-To Field"
-msgstr "Campo _Rispondi-a:"
-
-#: ui/evolution-message-composer.xml.h:52
-msgid "_Security"
-msgstr "_Sicurezza"
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr "Aggiungi una cartella alla lista di cartelle a cui sei iscritto"
-
-#: ui/evolution-subscribe.xml.h:3
-msgid "F_older"
-msgstr "C_artelle"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr "Aggiorna Lista"
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr "Aggiorna la Lista delle Cartelle"
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr "Elimina una cartella dalla lista delle cartelle a cui sei iscritto"
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr "Iscrizione"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr "Annulla iscrizione"
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-msgid "Assig_n Task (FIXME)"
-msgstr "Asseg_na obiettivo"
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr "Cerca ancora"
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-msgid "Meeting Re_quest (FIXME)"
-msgstr "Richiesta _appuntamento"
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-msgid "Redo"
-msgstr "Rifai"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-msgid "Redo the undone action"
-msgstr "Rifai l'azione annullata"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-msgid "Replace"
-msgstr "Sostituisci"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-msgid "Replace a string"
-msgstr "Sostituisci una stringa"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-msgid "Reply to A_ll (FIXME)"
-msgstr "Rispondi a _Tutti"
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-msgid "S_end Status Report (FIXME)"
-msgstr "_Invia un report"
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr "_Salta ricorrenza"
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-msgid "Save the task and close the dialog box"
-msgstr "Salva l'impegno e chiudi la finestra di dialogo"
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "Search again for the same string"
-msgstr "Cerca ancora la stessa stringa"
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-msgid "Search for a string"
-msgstr "Cerca una stringa"
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr "Annulla"
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-msgid "Undo the last action"
-msgstr "Annulla l'ultima azione"
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:27
-msgid "_Appointment (FIXME)"
-msgstr "_Appuntamento"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-msgid "_Mark Complete (FIXME)"
-msgstr "_Segna come Completato"
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-msgid "_Reply (FIXME)"
-msgstr "_Rispondi"
-
-#: ui/evolution-tasks.xml.h:2
-msgid "Create a new task"
-msgstr "Crea un nuovo obiettivo"
-
-#: ui/evolution-tasks.xml.h:3
-msgid "New Task"
-msgstr "Nuovo Obiettivo"
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr "Salva obiettivo come qualcos'altro"
-
-#: ui/evolution-tasks.xml.h:6
-msgid "Tasks Preferences..."
-msgstr "Preferenze degli Obiettivi..."
-
-#: ui/evolution-tasks.xml.h:9
-msgid "_Task"
-msgstr "_Obiettivo"
-
-#: ui/evolution.xml.h:1
-msgid "About Evolution..."
-msgstr "Informazioni su Evolution..."
-
-#: ui/evolution.xml.h:3
-msgid "Close this window"
-msgstr "Chiudi questa finestra"
-
-#: ui/evolution.xml.h:4
-msgid "Customi_ze Toolbars..."
-msgstr "Personali_zza barre degli strumenti..."
-
-#: ui/evolution.xml.h:5
-msgid "Customize"
-msgstr "Personalizza"
-
-#: ui/evolution.xml.h:6
-msgid "Customize toolbars"
-msgstr "Personalizza barre degli strumenti"
-
-#: ui/evolution.xml.h:7
-msgid "Display a different folder"
-msgstr "Visualizza un'altra cartella"
-
-#: ui/evolution.xml.h:8
-msgid "E_xit"
-msgstr "E_sci"
-
-#: ui/evolution.xml.h:9
-#, fuzzy
-msgid "Evolution _Window"
-msgstr "Evolution"
-
-#: ui/evolution.xml.h:10
-msgid "Evolution bar _shortcut"
-msgstr "_Barra del Collegamenti di Evolution"
-
-#: ui/evolution.xml.h:11
-msgid "Exit the program"
-msgstr "Esci dal Programma"
-
-#: ui/evolution.xml.h:12
-msgid "Getting _Started"
-msgstr "Primi _Passi"
-
-#: ui/evolution.xml.h:13
-msgid "Import an external file format"
-msgstr "Importa un formato di file esterno"
-
-#: ui/evolution.xml.h:14
-msgid "Main toolbar"
-msgstr "Barra dagli strimenti principale"
-
-#: ui/evolution.xml.h:15
-msgid "Show information about Evolution"
-msgstr "Mostra informazioni su Evolution"
-
-#: ui/evolution.xml.h:16
-msgid "Submit Bug Report"
-msgstr "Invia un Bug Report"
-
-#: ui/evolution.xml.h:17
-msgid "Submit _Bug Report"
-msgstr "Invia un _Bug Report"
-
-#: ui/evolution.xml.h:18
-msgid "Submit bug report using Bug Buddy."
-msgstr "Inoltra un Bug Report usando Bug Buddy."
-
-#: ui/evolution.xml.h:19
-msgid "Toggle whether to show the folder bar"
-msgstr "Mostra/nasconde la barra delle cartelle"
-
-#: ui/evolution.xml.h:20
-msgid "Toggle whether to show the shortcut bar"
-msgstr "Mostra/nasconde la barra dei collegamenti"
-
-#: ui/evolution.xml.h:21
-msgid "Using the C_ontact Manager"
-msgstr "Uso del manger dei C_ontatti"
-
-#: ui/evolution.xml.h:22
-msgid "Using the _Calendar"
-msgstr "Uso del _Calendario"
-
-#: ui/evolution.xml.h:23
-msgid "Using the _Mailer"
-msgstr "Uso del programma di _Posta"
-
-#: ui/evolution.xml.h:24
-msgid "Work Offline"
-msgstr "Non collegato"
-
-#: ui/evolution.xml.h:25
-msgid "_About Evolution..."
-msgstr "_Informazioni su Evolution..."
-
-#: ui/evolution.xml.h:26
-msgid "_Actions"
-msgstr "_Azioni"
-
-#: ui/evolution.xml.h:33
-msgid "_Folder Bar"
-msgstr "Barra delle _Cartelle"
-
-#: ui/evolution.xml.h:34
-msgid "_Go to Folder..."
-msgstr "_Vai alla cartella..."
-
-#: ui/evolution.xml.h:36
-msgid "_Import file..."
-msgstr "_Importa un file..."
-
-#: ui/evolution.xml.h:37
-msgid "_Index"
-msgstr "_Indice"
-
-#: ui/evolution.xml.h:38
-msgid "_Mail message"
-msgstr "_Invia messaggio"
-
-#: ui/evolution.xml.h:40
-msgid "_New Folder"
-msgstr "_Nuova Cartella"
-
-#: ui/evolution.xml.h:41
-msgid "_Shortcut Bar"
-msgstr "_Barra di Collegamento"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:469
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2475
-msgid "%A, %B %d, %Y"
-msgstr "%A, %B %d, %Y"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:390
-msgid "Tentative"
-msgstr "Tentativo"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:391
-msgid "Busy"
-msgstr "Occupato"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:392
-msgid "Out of Office"
-msgstr "Assente"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:393
-msgid "No Information"
-msgstr "Nessuna informazione"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:409
-msgid "_Invite Others..."
-msgstr "_Invita altri..."
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:429
-msgid "_Options"
-msgstr "_Opzioni"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:446
-msgid "Show _Only Working Hours"
-msgstr "Mostra s_olo le ore lavorative"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:459
-msgid "Show _Zoomed Out"
-msgstr "Vista _allargata"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:477
-msgid "_Update Free/Busy"
-msgstr "A_ggiorna libero/Occupato"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:495
-msgid "_<<"
-msgstr "_<<"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:512
-msgid "_Autopick"
-msgstr "_Autopick"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:526
-msgid ">_>"
-msgstr ">_>"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:543
-msgid "_All People and Resources"
-msgstr "_Tutto il Personale e le Risorse"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:556
-msgid "All _People and One Resource"
-msgstr "Tutto il _Personale e una Risorsa"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:569
-msgid "_Required People"
-msgstr "Personale _Richiesto"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:582
-msgid "Required People and _One Resource"
-msgstr "Personale Richiesto e _una risorsa"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:605
-msgid "Meeting _start time:"
-msgstr "_Inizio appuntamento ore:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:629
-msgid "Meeting _end time:"
-msgstr "T_ermine dell' appuntamento ore:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:742
-msgid "All Attendees"
-msgstr "Tutti i partecipanti"
-
-#: widgets/menus/gal-view-menus.c:177
-msgid "_Current View"
-msgstr "Vista _Corrente"
-
-#: widgets/menus/gal-view-menus.c:196
-msgid "Define Views"
-msgstr ""
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:421
-msgid "MTWTFSS"
-msgstr "LMMGVSD"
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1060 widgets/misc/e-calendar-item.c:2755
-msgid "%B %Y"
-msgstr "%B %Y"
-
-#: widgets/misc/e-cell-date-edit.c:218 widgets/misc/e-dateedit.c:416
-msgid "Now"
-msgstr "Adesso"
-
-#: widgets/misc/e-cell-date-edit.c:242
-msgid "OK"
-msgstr "OK"
-
-#: widgets/misc/e-cell-date-edit.c:723
-#, fuzzy, c-format
-msgid "The time must be in the format: %s"
-msgstr ""
-"La data deve essere inserita nel formato:\n"
-"\n"
-"%s"
-
-#: widgets/misc/e-clipped-label.c:107
-msgid "..."
-msgstr "..."
-
-#: widgets/misc/e-filter-bar.c:166
-msgid "Save Search"
-msgstr "Salva Ricerca"
-
-#: widgets/misc/e-filter-bar.c:237
-msgid "Advanced Search"
-msgstr "Ricerca Avanzata"
-
-#: widgets/misc/e-filter-bar.c:317
-msgid "Advanced ..."
-msgstr "Avanzato ..."
-
-#: widgets/misc/e-messagebox.c:152
-msgid "Information"
-msgstr "Informazione"
-
-#: widgets/misc/e-messagebox.c:159
-msgid "Warning"
-msgstr "Avviso"
-
-#: widgets/misc/e-messagebox.c:173
-msgid "Question"
-msgstr "Domanda"
-
-#: widgets/misc/e-messagebox.c:180
-msgid "Message"
-msgstr "Messaggio"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:224
-msgid "Don't show this message again."
-msgstr "Non mostrare questo messagio in futuro."
-
-#: widgets/misc/e-search-bar.c:148
-msgid "Sear_ch"
-msgstr "_Cerca"
-
-#: views/addressbook/galview.xml.h:1
-#, fuzzy
-msgid "Adress Cards"
-msgstr "biglietto da visita"
-
-#: views/addressbook/galview.xml.h:2
-#, fuzzy
-msgid "By Company"
-msgstr "Ditta"
-
-#: views/addressbook/galview.xml.h:3
-#, fuzzy
-msgid "Phone List"
-msgstr "Tipi di Telefono"
-
-#: views/mail/galview.xml.h:1
-#, fuzzy
-msgid "By Sender"
-msgstr "Mittente"
-
-#: views/mail/galview.xml.h:2
-#, fuzzy
-msgid "By Status"
-msgstr "Status"
-
-#: views/mail/galview.xml.h:3
-#, fuzzy
-msgid "By Subject"
-msgstr "Oggetto"
-
-#: views/mail/galview.xml.h:4
-#, fuzzy
-msgid "Messages"
-msgstr "Messaggio"
-
-#: views/tasks/galview.xml.h:2
-#, fuzzy
-msgid "With Category"
-msgstr "Categoria:"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-msgid "The Personal Addressbook Server"
-msgstr "Server Personale della Rubrica"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr "Server personale del Calendario; fabbrica del calendario"
-
-#: wombat/wombat.c:173
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr "setup_vfs(): impossibile inizializzare GNOME-VFS"
-
-#: wombat/wombat.c:185
-msgid "init_corba(): could not initialize GNOME"
-msgstr "init_corba(): impossibile inizializzare GNOME"
-
-#: wombat/wombat.c:198
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "init_bonobo(): impossibile inizializzare Bonobo"
-
diff --git a/po/ja.po b/po/ja.po
deleted file mode 100644
index 2041c8f4f9..0000000000
--- a/po/ja.po
+++ /dev/null
@@ -1,9429 +0,0 @@
-# evolution ja.po
-# Copyright (C) 2000-2001 Free Software Foundation, Inc.
-# Akira TAGOH <tagoh@gnome.gr.jp>, 2000-2001.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: evolution CVS-20010519\n"
-"POT-Creation-Date: 2001-05-19 17:16+0900\n"
-"PO-Revision-Date: 2001-05-19 19:04+0900\n"
-"Last-Translator: Akira TAGOH <tagoh@gnome.gr.jp>\n"
-"Language-Team: Japanese <translation@gnome.gr.jp>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=euc-jp\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: addressbook/backend/ebook/e-card.c:3314
-msgid "Card: "
-msgstr "̾»É: "
-
-#: addressbook/backend/ebook/e-card.c:3316
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-"\n"
-"̾Á°: "
-
-#: addressbook/backend/ebook/e-card.c:3317
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-"\n"
-" ·É¾Î(Á°¤Ä¤±): "
-
-#: addressbook/backend/ebook/e-card.c:3318
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-"\n"
-" À«: "
-
-#: addressbook/backend/ebook/e-card.c:3319
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3320
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-"\n"
-" ¥Õ¥¡¥ß¥ê¡¼Ì¾: "
-
-#: addressbook/backend/ebook/e-card.c:3321
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-"\n"
-" ·É¾Î(¸å¤Ä¤±): "
-
-#: addressbook/backend/ebook/e-card.c:3335
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-"\n"
-"ÃÂÀ¸Æü: "
-
-#: addressbook/backend/ebook/e-card.c:3346
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-"\n"
-"½»½ê:"
-
-#: addressbook/backend/ebook/e-card.c:3348
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-"\n"
-"͹ÊØÈÖ¹æ: "
-
-#: addressbook/backend/ebook/e-card.c:3349
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-"\n"
-" "
-
-#: addressbook/backend/ebook/e-card.c:3350
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3351
-msgid ""
-"\n"
-" City: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3352
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3353
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-"\n"
-" ͹ÊØÈÖ¹æ: "
-
-#: addressbook/backend/ebook/e-card.c:3354
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-"\n"
-" ¹ñ: "
-
-#: addressbook/backend/ebook/e-card.c:3367
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3379
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-"\n"
-"ÅÅÏÃÈÖ¹æ:\n"
-
-#: addressbook/backend/ebook/e-card.c:3382
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-"\n"
-"ÅÅÏÃÈÖ¹æ:"
-
-#: addressbook/backend/ebook/e-card.c:3406
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-"\n"
-"¥á¡¼¥ë:\n"
-
-#: addressbook/backend/ebook/e-card.c:3409
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-"\n"
-"¥á¡¼¥ë:"
-
-#: addressbook/backend/ebook/e-card.c:3428
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-"\n"
-"¥á¡¼¥é: "
-
-#: addressbook/backend/ebook/e-card.c:3434
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-"\n"
-"¥¿¥¤¥à¥¾¡¼¥ó: "
-
-#: addressbook/backend/ebook/e-card.c:3442
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-"\n"
-"·Ð°Þ: "
-
-#: addressbook/backend/ebook/e-card.c:3446
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-"\n"
-"»Å»ö¤Î¿¦Ì³: "
-
-#: addressbook/backend/ebook/e-card.c:3458
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-"\n"
-"ÁÈ¿¥: "
-
-#: addressbook/backend/ebook/e-card.c:3459
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-"\n"
-" ¼Ò̾: "
-
-#: addressbook/backend/ebook/e-card.c:3460
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-"\n"
-" Éô½ð: "
-
-#: addressbook/backend/ebook/e-card.c:3461
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-"\n"
-" Éô½ð2: "
-
-#: addressbook/backend/ebook/e-card.c:3462
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-"\n"
-" Éô½ð3: "
-
-#: addressbook/backend/ebook/e-card.c:3463
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-"\n"
-" Éô½ð4: "
-
-#: addressbook/backend/ebook/e-card.c:3467
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-"\n"
-"¶È̳ʬÌî: "
-
-#: addressbook/backend/ebook/e-card.c:3468
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-"\n"
-"Ãí¼á: "
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3481
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-"\n"
-"Ǥ°Õ¤Îʸ»úÎó: "
-
-#: addressbook/backend/ebook/e-card.c:3484
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-"\n"
-"¸ø³«¸°: "
-
-#: addressbook/backend/ebook/e-card.c:3745
-msgid "Multiple VCards"
-msgstr "Ê£¿ô¤Î VCard"
-
-#: addressbook/backend/ebook/e-card.c:3753
-#, c-format
-msgid "VCard for %s"
-msgstr "%s ¤Î VCard"
-
-#: addressbook/backend/ebook/e-destination.c:244
-msgid "???"
-msgstr "???"
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_VCard_Importer.oaf.in.h:1
-msgid "Factory to import VCard files into Evolution."
-msgstr "Evolution ¤Ø VCard ¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ë¥Õ¥¡¥¯¥È¥ê"
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_VCard_Importer.oaf.in.h:2
-msgid "Imports VCard files into Evolution."
-msgstr "Evolution ¤Ø VCard ¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥Ý¡¼¥È"
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:21
-#: addressbook/backend/ebook/load-pine-addressbook.c:22
-#: addressbook/backend/ebook/test-client-list.c:23
-#: addressbook/backend/ebook/test-client.c:33
-#: addressbook/conduit/address-conduit.c:1092
-#: addressbook/gui/component/addressbook-factory.c:42
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:98 calendar/gui/main.c:57
-msgid "Could not initialize Bonobo"
-msgstr "Bonobo ¤Î½é´ü²½¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr "¥«¡¼¥½¥ë¤ÏÆɤ߹þ¤Þ¤ì¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿\n"
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr "EBook ¤Ï¥í¡¼¥É¤µ¤ì¤Æ¤¤¤Þ¤»¤ó\n"
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr "wombat ¥µ¡¼¥Ð¤ò³«»Ï¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: addressbook/conduit/address-conduit.c:655
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr "wombat ¤ò³«»Ï¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: addressbook/conduit/address-conduit.c:687
-#: addressbook/conduit/address-conduit.c:690
-msgid "Could not read pilot's Address application block"
-msgstr ""
-"¥Ñ¥¤¥í¥Ã¥È¤Î¥¢¥É¥ì¥¹¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥Ö¥í¥Ã¥¯¤òÆɤ߹þ¤à¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:7
-msgid "Add"
-msgstr "ÄɲÃ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr "µ­Ç°Æü(_v):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr "ȁȚ(_u)"
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr "»Å»ö¤Î FAX(_F)"
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-msgid "C_ontacts..."
-msgstr "¥³¥ó¥¿¥¯¥È(_o)..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr "¥«¥Æ¥´¥ê(_t)..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-msgid "Contact Editor"
-msgstr "¥³¥ó¥¿¥¯¥È¥¨¥Ç¥£¥¿"
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr "¾ÜºÙ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr "ÊÌ̾:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-msgid "General"
-msgstr "°ìÈÌ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr "¿·µ¬ÅÅÏüïÊÌ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-msgid "No_tes:"
-msgstr "¥Î¡¼¥È(_t):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr "ÅÅÏüïÊÌ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1284
-msgid "Primary Email"
-msgstr "¼çÍפʥ᡼¥ë"
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr "HTML ¥á¡¼¥ë¤ò¼õ¿®µö²Ä(_H)"
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr "¥¦¥§¥Ö¥Ú¡¼¥¸¤Î URL:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:84
-msgid "_Add"
-msgstr "ÄɲÃ(_A)"
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr "½»½ê(_A)..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr "¥¢¥·¥¹¥¿¥ó¥È¤Î̾Á°(_A):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr "ÃÂÀ¸Æü(_B):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr "ȁȚ(_B)"
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-msgid "_Company:"
-msgstr "²ñ¼Ò(_C):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/folder-browser.c:715 mail/mail-config.glade.h:85
-#: ui/evolution-event-editor.xml.h:57 ui/evolution-mail.xml.h:103
-#: ui/evolution-task-editor-dialog.xml.h:69 ui/evolution.xml.h:46
-msgid "_Delete"
-msgstr "ºï½ü(_D)"
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr "ôÅöÉô½ð(_D):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr "¥Õ¥ë¥Í¡¼¥à(_F)..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-msgid "_Home"
-msgstr "²È(_H)"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-msgid "_Job title:"
-msgstr "¿¦¼ï(_J):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr "¥Þ¥Í¡¼¥¸¥ã¤Î̾Á°(_M):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-msgid "_Mobile"
-msgstr "¥â¥Ð¥¤¥ë(_M)"
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr "¥Ë¥Ã¥¯¥Í¡¼¥à(_N):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr "»ö̳½ê(_O):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr "ÀìÌ翦(_P):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr "ÇÛ¶ö¼Ô(_S):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr "¤³¤ì¤Ï͹ÊØʪ¤Î½»½ê¤Ç¤¹"
-
-#: addressbook/contact-editor/e-contact-editor.c:603
-msgid "This contact belongs to these categories:"
-msgstr "¤³¤Î¥³¥ó¥¿¥¯¥È¤Ï¤³¤ì¤é¤Î¥«¥Æ¥´¥ê¤Ë½ê°¤·¤Æ¤¤¤Þ¤¹:"
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-#: addressbook/gui/widgets/e-addressbook-view.c:733
-msgid "Assistant"
-msgstr "¥¢¥·¥¹¥¿¥ó¥È"
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/contact-editor/e-contact-editor.c:1310
-msgid "Business"
-msgstr "ȁȚ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-msgid "Business 2"
-msgstr "ȁȚ 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#: addressbook/gui/widgets/e-addressbook-view.c:713
-msgid "Business Fax"
-msgstr "»Å»ö¤Î FAX"
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Callback"
-msgstr "¸Æ¤ÓÌᤷ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "Car"
-msgstr "¼Ö"
-
-#: addressbook/contact-editor/e-contact-editor.c:1248
-msgid "Company"
-msgstr "²ñ¼Ò"
-
-#: addressbook/contact-editor/e-contact-editor.c:1249
-#: addressbook/contact-editor/e-contact-editor.c:1311
-msgid "Home"
-msgstr "²È"
-
-#: addressbook/contact-editor/e-contact-editor.c:1250
-msgid "Home 2"
-msgstr "²È 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1251
-#: addressbook/gui/widgets/e-addressbook-view.c:714
-msgid "Home Fax"
-msgstr "²È¤Î FAX"
-
-#: addressbook/contact-editor/e-contact-editor.c:1252
-#: addressbook/gui/widgets/e-addressbook-view.c:717
-msgid "ISDN"
-msgstr "ISDN"
-
-#: addressbook/contact-editor/e-contact-editor.c:1253
-msgid "Mobile"
-msgstr "¥â¥Ð¥¤¥ë"
-
-#: addressbook/contact-editor/e-contact-editor.c:1254
-#: addressbook/contact-editor/e-contact-editor.c:1312
-msgid "Other"
-msgstr "¤½¤Î¾"
-
-#: addressbook/contact-editor/e-contact-editor.c:1255
-#: addressbook/gui/widgets/e-addressbook-view.c:719
-msgid "Other Fax"
-msgstr "¤½¤Î¾¤Î FAX"
-
-#: addressbook/contact-editor/e-contact-editor.c:1256
-#: addressbook/gui/widgets/e-addressbook-view.c:720
-msgid "Pager"
-msgstr "¥Ý¥±¥Ù¥ë"
-
-#: addressbook/contact-editor/e-contact-editor.c:1257
-msgid "Primary"
-msgstr "¥×¥é¥¤¥Þ¥ê"
-
-#: addressbook/contact-editor/e-contact-editor.c:1258
-#: addressbook/gui/widgets/e-addressbook-view.c:721
-msgid "Radio"
-msgstr "¥é¥¸¥ª"
-
-#: addressbook/contact-editor/e-contact-editor.c:1259
-#: addressbook/gui/widgets/e-addressbook-view.c:722
-msgid "Telex"
-msgstr "¥Æ¥ì¥Ã¥¯¥¹"
-
-#: addressbook/contact-editor/e-contact-editor.c:1260
-msgid "TTY/TDD"
-msgstr "TTY/TDD"
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:725
-msgid "Email 2"
-msgstr "¥á¡¼¥ë2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/gui/widgets/e-addressbook-view.c:726
-msgid "Email 3"
-msgstr "¥á¡¼¥ë3"
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-msgid "Delete Contact?"
-msgstr "¥³¥ó¥¿¥¯¥È¤òºï½ü¤·¤Þ¤¹¤«?"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:233
-msgid "Contact Quick-Add"
-msgstr "¥³¥ó¥¿¥¯¥È¤Î´Ê°×ÄɲÃ"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:235
-msgid "Edit Full"
-msgstr "¤¹¤Ù¤ÆÊÔ½¸"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:276
-#: addressbook/gui/widgets/e-addressbook-view.c:700
-msgid "Full Name"
-msgstr "¥Õ¥ë¥Í¡¼¥à"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:282
-msgid "E-mail"
-msgstr "¥á¡¼¥ë"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr "½»½ê 2(_2):"
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr "¥«¥Ê¥À"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr "½»½ê¥Á¥§¥Ã¥¯"
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr "¹ñ(_y):"
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr "¥Õ¥£¥ó¥é¥ó¥É"
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr "¥¢¥á¥ê¥«"
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr "½»½ê(_A):"
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-msgid "_City:"
-msgstr "»Ô(_C):"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr "»ä½ñÈ¢(_P):"
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr "͹ÊØÈÖ¹æ(_Z):"
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr "¥Õ¥ë¥Í¡¼¥à¤Î¥Á¥§¥Ã¥¯"
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr "Dr."
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr "Esq."
-
-#: addressbook/contact-editor/fullname.glade.h:4
-msgid "I"
-msgstr "I"
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr "II"
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr "III"
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr "Jr."
-
-#: addressbook/contact-editor/fullname.glade.h:8
-msgid "Miss"
-msgstr "Miss"
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr "Mr."
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr "Mrs."
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr "Ms."
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr "Sr."
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr "̾(_F):"
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr "À«(_L):"
-
-#: addressbook/contact-editor/fullname.glade.h:15
-msgid "_Middle:"
-msgstr "¥ß¥É¥ë¥Í¡¼¥à(_M):"
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr "·É¾Î(¸å¤Ä¤±)(_S):"
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr "·É¾Î(Á°¤Ä¤±)(_T):"
-
-#: addressbook/gui/component/addressbook.c:244
-msgid "As _Minicards"
-msgstr "¥ß¥Ë¥«¡¼¥É"
-
-#: addressbook/gui/component/addressbook.c:250
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr "¥Æ¡¼¥Ö¥ë(_T)"
-
-#: addressbook/gui/component/addressbook.c:410
-#, c-format
-msgid "Enter password for %s"
-msgstr "%s ¤Î¥Ñ¥¹¥ï¡¼¥É¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤"
-
-#: addressbook/gui/component/addressbook.c:438
-msgid "Unable to open addressbook"
-msgstr "¥¢¥É¥ì¥¹Ä¢¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤»¤ó"
-
-#: addressbook/gui/component/addressbook.c:445
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or the LDAP server\n"
-"is down"
-msgstr ""
-"¤³¤Î¥¢¥É¥ì¥¹Ä¢¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤»¤ó. ¤³¤ì¤Ï¸í¤Ã¤¿URI\n"
-"¤òÆþÎϤ·¤¿¤«, ¤¢¤ë¤¤¤Ï LDAP ¥µ¡¼¥Ð¤¬Íî¤Á¤Æ¤¤¤ë¤«¤Î¤É¤Á¤é¤«\n"
-"¤ò°ÕÌ£¤·¤Þ¤¹"
-
-#: addressbook/gui/component/addressbook.c:450
-msgid ""
-"This version of Evolution does not have LDAP support\n"
-"compiled in to it. If you want to use LDAP in Evolution\n"
-"you must compile the program from the CVS sources after\n"
-"retrieving OpenLDAP from the link below.\n"
-msgstr ""
-"¤³¤Î Evolution ¤Î¥Ð¡¼¥¸¥ç¥ó¤Ï LDAP ¥µ¥Ý¡¼¥È¤ò¤»¤º¤Ë¥³¥ó¥Ñ¥¤¥ë\n"
-"¤µ¤ì¤Æ¤¤¤Þ¤¹. Evolution ¤Ç LDAP ¤ò»È¤¤¤¿¤¤¤Ê¤é¤Ð, ²¼µ­¥ê¥ó¥¯\n"
-"¤«¤é OpenLDAP ¤ò¼èÆÀ¤·¤¿¸å CVS ¥½¡¼¥¹¤«¤é¥×¥í¥°¥é¥à¤ò\n"
-"¥³¥ó¥Ñ¥¤¥ë¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó\n"
-
-#: addressbook/gui/component/addressbook.c:458
-msgid ""
-"We were unable to open this addressbook. Please check that the\n"
-"path exists and that you have permission to access it."
-msgstr ""
-"¤³¤Î¥¢¥É¥ì¥¹Ä¢¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿. ¥Ñ¥¹¤¬Â¸ºß¤·, ¥¢¥¯¥»¥¹¸¢\n"
-"¤ò»ý¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«¥Á¥§¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤"
-
-#: addressbook/gui/component/addressbook.c:618 calendar/gui/gnome-cal.c:233
-msgid "Any field contains"
-msgstr "¥Õ¥£¡¼¥ë¥É¤¬¼¡¤Î¤â¤Î¤ò´Þ¤à"
-
-#: addressbook/gui/component/addressbook.c:619
-msgid "Name contains"
-msgstr "̾Á°¤¬¼¡¤Î¤â¤Î¤ò´Þ¤à"
-
-#: addressbook/gui/component/addressbook.c:620
-msgid "Email contains"
-msgstr "¥á¡¼¥ë¤¬¼¡¤Î¤â¤Î¤ò´Þ¤à"
-
-#: addressbook/gui/component/addressbook.c:763
-msgid "The URI that the Folder Browser will display"
-msgstr "¥Õ¥©¥ë¥À¥Ö¥é¥¦¥¶¤¬É½¼¨¤¹¤ë URI"
-
-#: addressbook/gui/component/addressbook-config.c:148
-msgid "LDAP Server"
-msgstr "LDAP ¥µ¡¼¥Ð"
-
-#: addressbook/gui/component/addressbook-config.c:150
-msgid "File"
-msgstr "¥Õ¥¡¥¤¥ë"
-
-#: addressbook/gui/component/addressbook-config.c:153
-msgid "Unknown addressbook type"
-msgstr "̤ÃΤΥ¢¥É¥ì¥¹Ä¢¼ïÊÌ"
-
-#: addressbook/gui/component/addressbook-config.c:163
-msgid "None (anonymous mode)"
-msgstr "¤Ê¤· (ƿ̾¥â¡¼¥É)"
-
-#: addressbook/gui/component/addressbook-config.c:165
-#: camel/camel-sasl-plain.c:32 camel/providers/imap/camel-imap-provider.c:80
-#: camel/providers/nntp/camel-nntp-store.c:291
-#: camel/providers/pop3/camel-pop3-provider.c:67 mail/mail-config.glade.h:52
-msgid "Password"
-msgstr "¥Ñ¥¹¥ï¡¼¥É"
-
-#: addressbook/gui/component/addressbook-config.c:168
-msgid "Unknown auth type"
-msgstr "̤ÃΤÎǧ¾Ú¼ïÊÌ"
-
-#: addressbook/gui/component/addressbook-config.c:177
-msgid "Base"
-msgstr "¥Ù¡¼¥¹¥¨¥ó¥È¥ê"
-
-#: addressbook/gui/component/addressbook-config.c:179
-msgid "One"
-msgstr "¥µ¥Ö¥¨¥ó¥È¥ê"
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "Subtree"
-msgstr "¤¹¤Ù¤Æ¤Î¥¨¥ó¥È¥ê"
-
-#: addressbook/gui/component/addressbook-config.c:184
-msgid "Unknown scope type"
-msgstr "̤ÃΤΥ¹¥³¡¼¥×¼ïÊÌ"
-
-#: addressbook/gui/component/addressbook-config.c:349
-msgid "Bind DN:"
-msgstr "¥Ð¥¤¥ó¥ÉDN:"
-
-#: addressbook/gui/component/addressbook-config.c:350
-msgid "FIXME Bind DN Help text here"
-msgstr "FIXME ¥Ð¥¤¥ó¥É DN ¤Î¥Ø¥ë¥×¥Æ¥­¥¹¥È¤Ç¤¹"
-
-#: addressbook/gui/component/addressbook-config.c:352
-#: mail/mail-config.glade.h:60
-msgid "Remember this password"
-msgstr "¤³¤Î¥Ñ¥¹¥ï¡¼¥É¤òµ­²±"
-
-#: addressbook/gui/component/addressbook-config.c:401
-#: mail/mail-config.glade.h:33
-msgid "Host:"
-msgstr "¥Û¥¹¥È:"
-
-#: addressbook/gui/component/addressbook-config.c:402
-msgid "FIXME Host help text here."
-msgstr "FIXME ¥Û¥¹¥È¥Ø¥ë¥×¥Æ¥­¥¹¥È¤Ç¤¹"
-
-#: addressbook/gui/component/addressbook-config.c:404
-msgid "Root DN:"
-msgstr "¥ë¡¼¥È DN:"
-
-#: addressbook/gui/component/addressbook-config.c:405
-msgid "FIXME Root DN help text here."
-msgstr "FIXME ¥ë¡¼¥È DN ¥Ø¥ë¥×¥Æ¥­¥¹¥È¤Ç¤¹"
-
-#: addressbook/gui/component/addressbook-config.c:409
-msgid "Port:"
-msgstr "¥Ý¡¼¥È:"
-
-#: addressbook/gui/component/addressbook-config.c:410
-msgid "FIXME Port help text here."
-msgstr "FIXME ¥Ý¡¼¥È¥Ø¥ë¥×¥Æ¥­¥¹¥È¤Ç¤¹"
-
-#: addressbook/gui/component/addressbook-config.c:430
-msgid "Search Scope:"
-msgstr "¸¡º÷ÈÏ°Ï:"
-
-#: addressbook/gui/component/addressbook-config.c:477
-msgid "Authentication:"
-msgstr "ǧ¾ÚÊý¼°:"
-
-#: addressbook/gui/component/addressbook-config.c:499
-msgid "Advanced LDAP Options"
-msgstr "¾åµé LDAP ¥ª¥×¥·¥ç¥ó"
-
-#: addressbook/gui/component/addressbook-config.c:520
-#: mail/mail-config.glade.h:53
-msgid "Path:"
-msgstr "¥Ñ¥¹:"
-
-#: addressbook/gui/component/addressbook-config.c:521
-msgid "FIXME Path Help text here"
-msgstr "FIXME ¥Ñ¥¹¥Ø¥ë¥×¥Æ¥­¥¹¥È¤Ç¤¹"
-
-#: addressbook/gui/component/addressbook-config.c:526
-msgid "Create path if it doesn't exist."
-msgstr "¸ºß¤·¤Ê¤¤¾ì¹ç¥Ñ¥¹¤òºîÀ®¤¹¤ë"
-
-#: addressbook/gui/component/addressbook-config.c:660
-msgid "Edit Addressbook"
-msgstr "¥¢¥É¥ì¥¹Ä¢¤òÊÔ½¸"
-
-#: addressbook/gui/component/addressbook-config.c:662
-msgid "Add Addressbook"
-msgstr "¥¢¥É¥ì¥¹Ä¢¤ËÄɲÃ"
-
-#: addressbook/gui/component/addressbook-config.c:680
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-"¤¢¤Ê¤¿¤Î»ý¤Ä¥¢¥É¥ì¥¹Ä¢¤òÁªÂò¤·, ¤½¤ì¤Ë¤Ä¤¤¤Æ¤Î´ØÏ¢¤·¤¿¾ðÊó¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤"
-
-#: addressbook/gui/component/addressbook-config.c:686
-#: mail/mail-config.glade.h:43
-msgid "Name:"
-msgstr "̾Á°:"
-
-#: addressbook/gui/component/addressbook-config.c:687
-msgid "FIXME Name help text here"
-msgstr "FIXME ̾Á°¥Ø¥ë¥×¥Æ¥­¥¹¥È¤Ç¤¹"
-
-#: addressbook/gui/component/addressbook-config.c:689
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr "ÀâÌÀ:"
-
-#: addressbook/gui/component/addressbook-config.c:690
-msgid "FIXME Description help text here"
-msgstr "FIXME ÀâÌÀ¥Ø¥ë¥×¥Æ¥­¥¹¥È¤Ç¤¹"
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-msgid "Addressbook Sources"
-msgstr "¥¢¥É¥ì¥¹Ä¢¤Î¥½¡¼¥¹"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:235
-#: addressbook/gui/widgets/e-addressbook-view.c:616
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:11 mail/mail-config.glade.h:23
-#: mail/message-browser.c:202 ui/evolution-addressbook.xml.h:3
-#: ui/evolution-event-editor.xml.h:17 ui/evolution-mail.xml.h:22
-#: ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr "ºï½ü"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:28
-msgid "Edit"
-msgstr "ÊÔ½¸"
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-msgid "Name"
-msgstr "̾Á°"
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-msgid "URI"
-msgstr "URI"
-
-#: addressbook/gui/component/addressbook-storage.c:99
-msgid "Other Contacts"
-msgstr "¤½¤Î¾¤Î¥³¥ó¥¿¥¯¥È"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Disable Queries"
-msgstr "¥¯¥¨¥ê¤ò̵¸ú"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Enable Queries (Dangerous!)"
-msgstr "¥¯¥¨¥ê¤òÍ­¸ú (´í¸±¤Ç¤¹!)"
-
-#: addressbook/gui/component/e-address-widget.c:388
-#: addressbook/gui/component/select-names/e-select-names-popup.c:281
-msgid "Edit Contact Info"
-msgstr "¥³¥ó¥¿¥¯¥È¾ðÊó¤ÎÊÔ½¸"
-
-#: addressbook/gui/component/e-address-widget.c:424
-#: addressbook/gui/component/select-names/e-select-names-popup.c:347
-msgid "Add to Contacts"
-msgstr "¥³¥ó¥¿¥¯¥È¤ØÄɲÃ"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-msgid "A Bonobo control for an address popup."
-msgstr "¥¢¥É¥ì¥¹¤ò¥Ý¥Ã¥×¥¢¥Ã¥×¤¹¤ë¤¿¤á¤Î Bonobo ¥³¥ó¥È¥í¡¼¥ë"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A Bonobo control for displaying an address."
-msgstr "¥¢¥É¥ì¥¹¤òɽ¼¨¤¹¤ë¤¿¤á¤Î Bonobo ¥³¥ó¥È¥í¡¼¥ë"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr "¥¢¥É¥ì¥¹Ä¢¤òɽ¼¨¤¹¤ë Bonobo ¥³¥ó¥È¥í¡¼¥ë¤Î¥µ¥ó¥×¥ë¤Ç¤¹"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr "Evolution ¥¢¥É¥ì¥¹Ä¢¥ß¥Ë¥«¡¼¥É¤òɽ¼¨¤¹¤ë¥³¥ó¥È¥í¡¼¥ë"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-msgid "Evolution Addressbook minicard viewer"
-msgstr "Evolution ¥¢¥É¥ì¥¹Ä¢¥ß¥Ë¥«¡¼¥É¥Ó¥å¡¼¥¢"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-msgid "Evolution component for handling contacts."
-msgstr "¥³¥ó¥¿¥¯¥È¤ò°·¤¦¤¿¤á¤Î Evolution ¥³¥ó¥Ý¡¼¥Í¥ó¥È"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-msgid "Factory for the Addressbook Minicard control"
-msgstr "¥¢¥É¥ì¥¹Ä¢¥ß¥Ë¥«¡¼¥É¥³¥ó¥È¥í¡¼¥ë¤Î¤¿¤á¤Î¥Õ¥¡¥¯¥È¥ê"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-msgid "Factory for the Addressbook's address displayer"
-msgstr "¥¢¥É¥ì¥¹Ä¢¤Î¥¢¥É¥ì¥¹É½¼¨¤Î¤¿¤á¤Î¥Õ¥¡¥¯¥È¥ê"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-msgid "Factory for the Addressbook's address popup"
-msgstr "¥¢¥É¥ì¥¹Ä¢¤Î¥¢¥É¥ì¥¹¤ò¥Ý¥Ã¥×¥¢¥Ã¥×¤¹¤ë¤¿¤á¤Î¥Õ¥¡¥¯¥È¥ê"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:10
-msgid "Factory for the Evolution addressbook component."
-msgstr "Evolution ¥¢¥É¥ì¥¹Ä¢¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¤¿¤á¤Î¥Õ¥¡¥¯¥È¥ê"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:11
-msgid "Factory for the sample Addressbook control"
-msgstr "¥µ¥ó¥×¥ë¥¢¥É¥ì¥¹Ä¢¥³¥ó¥È¥í¡¼¥ë¤Î¤¿¤á¤Î¥Õ¥¡¥¯¥È¥ê"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:161
-#: composer/e-msg-composer-attachment-bar.c:468 filter/filter-filter.c:401
-#: filter/filter-rule.c:549 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:265 shell/e-shortcuts-view.c:388
-msgid "Remove"
-msgstr "ºï½ü"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:176
-msgid "Remove All"
-msgstr "¤¹¤Ù¤Æºï½ü"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:200
-msgid "Send HTML Mail?"
-msgstr "HTML ¥á¡¼¥ë¤òÁ÷¿®¤·¤Þ¤¹¤«?"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-msgid "Evolution's addressbook name selection interface."
-msgstr "Evolution ¤Î¥¢¥É¥ì¥¹Ä¢¤Î̾Á°ÁªÂò¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr "¥¢¥É¥ì¥¹Ä¢¤Î̾Á°ÁªÂò¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Î¤¿¤á¤Î¥Õ¥¡¥¯¥È¥ê"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr "¸¡º÷..."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-msgid "Message Recipients"
-msgstr "¥á¥Ã¥»¡¼¥¸¤Î¼õ¿®¼Ô"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-msgid "Select Names"
-msgstr "̾Á°¤òÁªÂò"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-msgid "Select name from:"
-msgstr "¼¡¤«¤é̾Á°¤òÁªÂò:"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:158
-#: mail/mail-search.c:242
-msgid "Search"
-msgstr "¸¡º÷"
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr "123"
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr "a"
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr "b"
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr "c"
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr "d"
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr "e"
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr "f"
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr "g"
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr "h"
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr "i"
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr "j"
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr "k"
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr "l"
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr "m"
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr "n"
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-msgid "o"
-msgstr "o"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr "p"
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr "q"
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-msgid "r"
-msgstr "r"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr "s"
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr "t"
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr "u"
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr "v"
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr "w"
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr "x"
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr "y"
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr "z"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:135
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:230
-#: addressbook/gui/widgets/e-addressbook-view.c:551
-#: addressbook/gui/widgets/e-addressbook-view.c:611
-msgid "Save as VCard"
-msgstr "VCard ¤ÇÊݸ"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:231
-#: addressbook/gui/widgets/e-addressbook-view.c:612
-msgid "Send contact to other"
-msgstr "¾¤Ø¥³¥ó¥¿¥¯¥È¤òÁ÷¿®"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:232
-#: addressbook/gui/widgets/e-addressbook-view.c:613
-msgid "Send message to contact"
-msgstr "¥³¥ó¥¿¥¯¥ÈÀè¤Ø¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:233
-#: addressbook/gui/widgets/e-addressbook-view.c:614 mail/message-browser.c:199
-#: ui/evolution-addressbook.xml.h:9 ui/evolution-calendar.xml.h:23
-#: ui/evolution-mail.xml.h:65 ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr "°õºþ"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:234
-#: addressbook/gui/widgets/e-addressbook-view.c:615
-msgid "Print Envelope"
-msgstr "ɽ»æ¤ò°õºþ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:698
-msgid "* Click here to add a contact *"
-msgstr "* ¥³¥ó¥¿¥¯¥È¤òÄɲ乤뤿¤á¤Ë¤³¤³¤ò¥¯¥ê¥Ã¥¯ *"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:699
-msgid "File As"
-msgstr "ÊÌ̾"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:701
-msgid "Email"
-msgstr "¥á¡¼¥ë"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:702
-msgid "Primary Phone"
-msgstr "¼ç¤ÊÅÅÏÃ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:703
-msgid "Assistant Phone"
-msgstr "Êä½õ¤ÎÅÅÏÃ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:704
-msgid "Business Phone"
-msgstr "»Å»ö¤ÎÅÅÏÃ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:705
-msgid "Callback Phone"
-msgstr "¸Æ¤ÓÌᤷ¤ÎÅÅÏÃ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:706
-msgid "Company Phone"
-msgstr "²ñ¼Ò¤ÎÅÅÏÃ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:707
-msgid "Home Phone"
-msgstr "²È¤ÎÅÅÏÃ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:708
-msgid "Organization"
-msgstr "ÁÈ¿¥"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:709
-msgid "Business Address"
-msgstr "»Å»ö¤Î½»½ê"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:710
-msgid "Home Address"
-msgstr "²È¤Î½»½ê"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:711
-msgid "Mobile Phone"
-msgstr "·ÈÂÓÅÅÏÃ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:712
-msgid "Car Phone"
-msgstr "¼ÖºÜÅÅÏÃ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:715
-msgid "Business Phone 2"
-msgstr "»Å»ö¤ÎÅÅÏà 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:716
-msgid "Home Phone 2"
-msgstr "²È¤ÎÅÅÏà 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:718
-msgid "Other Phone"
-msgstr "¤½¤Î¾¤ÎÅÅÏÃ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:723
-msgid "TTY"
-msgstr "TTY"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:724
-msgid "Other Address"
-msgstr "¤½¤Î¾¤Î½»½ê"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:727
-msgid "Web Site"
-msgstr "¥¦¥§¥Ö¥µ¥¤¥È"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:728
-msgid "Department"
-msgstr "ôÅöÉô½ð"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:729
-msgid "Office"
-msgstr "»ö̳½ê"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:730
-msgid "Title"
-msgstr "·É¾Î(Á°¤Ä¤±)"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:731
-msgid "Profession"
-msgstr "ÀìÌ翦"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:732
-msgid "Manager"
-msgstr "¥Þ¥Í¡¼¥¸¥ã"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:734
-msgid "Nickname"
-msgstr "¥Ë¥Ã¥¯¥Í¡¼¥à"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:735
-msgid "Spouse"
-msgstr "ÇÛ¶ö¼Ô"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:736
-msgid "Note"
-msgstr "¥Î¡¼¥È"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:737
-msgid "Free-busy URL"
-msgstr ""
-
-#: addressbook/gui/widgets/e-minicard-control.c:282
-msgid "Save in addressbook"
-msgstr "¥¢¥É¥ì¥¹Ä¢¤ËÊݸ"
-
-#: addressbook/gui/widgets/e-minicard-view.c:216
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-"\n"
-"\n"
-"¤³¤Î¥Ó¥å¡¼¤ÎÃæ¤Ëɽ¼¨¤Ç¤­¤ë¥¢¥¤¥Æ¥à¤Ï¤¢¤ê¤Þ¤»¤ó\n"
-"\n"
-"¥À¥Ö¥ë¥¯¥ê¥Ã¥¯¤ò¤·¤Æ¿·µ¬¥³¥ó¥¿¥¯¥È¤òºîÀ®¤·¤Æ²¼¤µ¤¤"
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:26
-msgid "Card View"
-msgstr "̾»Éɽ¼¨"
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr "10 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr "8 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr "ËÜÂÎ"
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr "²¼:"
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr "À£Ë¡:"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr "¥Õ¥©¥ó¥È..."
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr "¥Õ¥©¥ó¥È"
-
-#: addressbook/printing/e-contact-print.glade.h:9
-msgid "Footer:"
-msgstr "¥Õ¥Ã¥¿:"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr "½ñ¼°"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-msgid "Header"
-msgstr "¥Ø¥Ã¥À"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr "¥Ø¥Ã¥À/¥Õ¥Ã¥¿"
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr "¸«½Ð¤·"
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr "³Æʸ½ñ¤Î¸«½Ð¤·"
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr "¹â¤µ:"
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr "²£Ä¹"
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr "º¸:"
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr "¥Þ¡¼¥¸¥ó"
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr "Îó¿ô:"
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr "¥ª¥×¥·¥ç¥ó"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr "Êý¸þ"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr "¥Ú¡¼¥¸"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-msgid "Page Setup:"
-msgstr "¥Ú¡¼¥¸ÀßÄê:"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr "ÍÑ»æ"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr "½ÄĹ"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr "¥×¥ì¥Ó¥å¡¼:"
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr "¥°¥ì¥¤¥·¥§¡¼¥Ç¥£¥ó¥°¤ò»È¤Ã¤¿°õºþ"
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr "¶ö¿ô¥Ú¡¼¥¸¤òȿž"
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr "±¦:"
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr "¥»¥¯¥·¥ç¥ó:"
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr "¥·¥§¡¼¥Ç¥£¥ó¥°"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-msgid "Size:"
-msgstr "¥µ¥¤¥º:"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr "¿·µ¬¥Ú¡¼¥¸¤Ç³«»Ï"
-
-#: addressbook/printing/e-contact-print.glade.h:38
-msgid "Style name:"
-msgstr "¥¹¥¿¥¤¥ë̾:"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr "¾å:"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-msgid "Type:"
-msgstr "¼ïÊÌ:"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr "Éý:"
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr "¥«¥ì¥ó¥À¥µ¡¼¥Ð¤ÇÄÌ¿®Ãæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿"
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr ""
-"¥Ñ¥¤¥í¥Ã¥È¤Î¥«¥ì¥ó¥À¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥Ö¥í¥Ã¥¯¤òÆɤ߹þ¤à¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr ""
-"¥Ñ¥¤¥í¥Ã¥È¤Î ToDo ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥Ö¥í¥Ã¥¯¤òÆɤ߹þ¤à¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr "Ìó«¤ÎºÅÂ¥"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-msgid "Snooze"
-msgstr "¥¢¥é¡¼¥àÄä»ß"
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr "Ok"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr "¥¢¥é¡¼¥àÄÌÃÎ¥µ¡¼¥Ó¥¹"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-msgid "Factory for the alarm notification service"
-msgstr "¥¢¥é¡¼¥àÄÌÃÎ¥µ¡¼¥Ó¥¹¤Î¤¿¤á¤Î¥Õ¥¡¥¯¥È¥ê"
-
-#: calendar/gui/alarm-notify/notify-main.c:56
-#, c-format
-msgid ""
-"It is %s. The Unix time is %ld right now. We just thought you may like to "
-"know."
-msgstr ""
-
-#: calendar/gui/alarm-notify/notify-main.c:93 calendar/gui/main.c:52
-msgid "Could not initialize GNOME"
-msgstr "GNOME ¤Î½é´ü²½¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: calendar/gui/alarm-notify/notify-main.c:108
-msgid "Could not create the alarm notify service factory"
-msgstr "¥¢¥é¡¼¥àÄÌÃÎ¥µ¡¼¥Ó¥¹¥Õ¥¡¥¯¥È¥ê¤òºîÀ®½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: calendar/gui/calendar-commands.c:266
-msgid "File not found"
-msgstr "¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
-
-#: calendar/gui/calendar-commands.c:290
-msgid "Open calendar"
-msgstr "¥«¥ì¥ó¥À¤ò³«¤¯"
-
-#: calendar/gui/calendar-commands.c:332
-msgid "Save calendar"
-msgstr "¥«¥ì¥ó¥À¤òÊݸ"
-
-#: calendar/gui/calendar-commands.c:468
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-"¥«¥ì¥ó¥À¥Ó¥å¡¼¤òºîÀ®½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿. ORBit¤ÈOAF¤ÎÀßÄê¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤"
-
-#: calendar/gui/calendar-model.c:360 calendar/gui/calendar-model.c:898
-#: calendar/gui/e-calendar-table.c:323
-msgid "Public"
-msgstr "°ìÈÌ"
-
-#: calendar/gui/calendar-model.c:363 calendar/gui/calendar-model.c:900
-#: calendar/gui/e-calendar-table.c:324
-msgid "Private"
-msgstr "»äŪ"
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:902
-#: calendar/gui/e-calendar-table.c:325
-msgid "Confidential"
-msgstr "¶ËÈë"
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/event-editor.c:1601
-#: calendar/gui/event-editor.c:1628
-#: camel/providers/smtp/camel-smtp-transport.c:221
-msgid "Unknown"
-msgstr "̤ÃÎ"
-
-#: calendar/gui/calendar-model.c:457
-msgid "N"
-msgstr "ËÌ"
-
-#: calendar/gui/calendar-model.c:457
-msgid "S"
-msgstr "Æî"
-
-#: calendar/gui/calendar-model.c:459
-msgid "E"
-msgstr "Åì"
-
-#: calendar/gui/calendar-model.c:459
-msgid "W"
-msgstr "À¾"
-
-#: calendar/gui/calendar-model.c:497 calendar/gui/calendar-model.c:1066
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:345 mail/message-list.c:689
-msgid "High"
-msgstr "¹â¤¤"
-
-#: calendar/gui/calendar-model.c:499 calendar/gui/calendar-model.c:1068
-#: calendar/gui/calendar-model.c:1574
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:346 mail/message-list.c:688
-msgid "Normal"
-msgstr "ÉáÄÌ"
-
-#: calendar/gui/calendar-model.c:501 calendar/gui/calendar-model.c:1070
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:347 mail/message-list.c:687
-msgid "Low"
-msgstr "Ä㤤"
-
-#: calendar/gui/calendar-model.c:537 calendar/gui/calendar-model.c:1122
-#: calendar/gui/e-calendar-table.c:399
-msgid "Transparent"
-msgstr "Æ©ÌÀ"
-
-#: calendar/gui/calendar-model.c:540 calendar/gui/calendar-model.c:1124
-#: calendar/gui/e-calendar-table.c:398
-msgid "Opaque"
-msgstr "ÉÔÆ©ÌÀ"
-
-#: calendar/gui/calendar-model.c:638 calendar/gui/calendar-model.c:1176
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:419
-msgid "Not Started"
-msgstr "³«»Ï¤·¤Æ¤¤¤Ê¤¤"
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1178
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:420
-msgid "In Progress"
-msgstr "½èÍýÃæ"
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1180
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:421
-msgid "Completed"
-msgstr "´°Î»¤·¤Þ¤·¤¿"
-
-#: calendar/gui/calendar-model.c:647 calendar/gui/calendar-model.c:1182
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:422 camel/camel-service.c:544
-#: camel/camel-service.c:580
-msgid "Cancelled"
-msgstr "¥­¥ã¥ó¥»¥ë¤·¤Þ¤·¤¿"
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:794 e-util/e-time-utils.c:278
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr "%Y/%m/%d (%a) %H:%M:%S"
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:797 e-util/e-time-utils.c:287
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr "%Y/%m/%d (%a) %p %I:%M:%S"
-
-#: calendar/gui/calendar-model.c:802
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-"ÆüÉդϥե©¡¼¥Þ¥Ã¥È¤ËÆþ¤ì¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó: \n"
-"\n"
-"%s"
-
-#: calendar/gui/calendar-model.c:882
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr ""
-"ʬÎà¤ò '°ìÈÌ', '»äŪ', '¶ËÈë' ¤¢¤ë¤¤¤Ï '¤Ê¤·' ¤òÁªÂò¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:896 calendar/gui/calendar-model.c:1120
-#: calendar/gui/calendar-model.c:1174 calendar/gui/e-calendar-table.c:322
-#: calendar/gui/e-calendar-table.c:397 mail/mail-account-gui.c:976
-#: mail/mail-accounts.c:120 mail/mail-accounts.c:164
-#: mail/mail-config.glade.h:46 shell/e-shell-view.c:1198
-#: widgets/misc/e-cell-date-edit.c:237 widgets/misc/e-dateedit.c:432
-#: widgets/misc/e-dateedit.c:1341 widgets/misc/e-dateedit.c:1456
-msgid "None"
-msgstr "¥Î¡¼¥È"
-
-#: calendar/gui/calendar-model.c:970
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-"ÃÏÍýŪ¤Ê°ÌÃ֤ϥե©¡¼¥Þ¥Ã¥È¤ËÆþ¤ì¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó: \n"
-"\n"
-"45.436845,125.862501"
-
-#: calendar/gui/calendar-model.c:1010
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr "¥Ñ¡¼¥»¥ó¥ÈÃÍ¤Ï 0 ¤È 100 ¤Î´Ö¤Ç´Þ¤ó¤Ç¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
-
-#: calendar/gui/calendar-model.c:1051
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr ""
-"Í¥ÀèÅÙ¤ò '¹â¤¤', 'ÉáÄÌ', 'Ä㤤' ¤¢¤ë¤¤¤Ï '̤ÄêµÁ' ¤òÁªÂò¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1064
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:348
-msgid "Undefined"
-msgstr "̤ÄêµÁ"
-
-#: calendar/gui/calendar-model.c:1105
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr "Æ©ÌÀÅÙ¤Ï 'Æ©ÌÀ', 'ÉÔÆ©ÌÀ', ¤¢¤ë¤¤¤Ï '¤Ê¤·' ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
-
-#: calendar/gui/calendar-model.c:1576
-msgid "Recurring"
-msgstr "ºÆȯ"
-
-#: calendar/gui/calendar-model.c:1578
-msgid "Assigned"
-msgstr "³äÅö¤ÆºÑ¤ß"
-
-#: calendar/gui/calendar-model.c:1584
-msgid "Yes"
-msgstr "¤Ï¤¤"
-
-#: calendar/gui/calendar-model.c:1584
-msgid "No"
-msgstr "¤¤¤¤¤¨"
-
-#: calendar/gui/calendar-summary.c:198
-msgid "%A, %e %B %Y"
-msgstr "%Y/%B/%e %A"
-
-#: calendar/gui/calendar-summary.c:207
-msgid "Appointments"
-msgstr "Ìó«"
-
-#: calendar/gui/calendar-summary.c:245 calendar/gui/calendar-summary.c:251
-msgid "%I:%M%p"
-msgstr "%p %I:%M"
-
-#: calendar/gui/calendar-summary.c:275 calendar/gui/print.c:948
-#: views/tasks/galview.xml.h:1
-msgid "Tasks"
-msgstr "¥¿¥¹¥¯"
-
-#: calendar/gui/calendar-summary.c:443
-msgid "<b>Error loading calendar</b>"
-msgstr "<b>¥«¥ì¥ó¥À¤ò¥í¡¼¥ÉÃæ¤Ë¥¨¥é¡¼</b>"
-
-#: calendar/gui/calendar-summary.c:455
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr "<b>¥«¥ì¥ó¥À¤ò¥í¡¼¥ÉÃæ¤Ë¥¨¥é¡¼:<br>¥á¥½¥Ã¥É¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó"
-
-#: calendar/gui/calendar-summary.c:622 mail/mail-config.glade.h:24
-msgid "Display"
-msgstr "ɽ¼¨"
-
-#: calendar/gui/calendar-summary.c:627
-msgid "Show appointments"
-msgstr "Ìó«¤Îɽ¼¨"
-
-#: calendar/gui/calendar-summary.c:635
-msgid "Show tasks"
-msgstr "¥¿¥¹¥¯¤Îɽ¼¨"
-
-#: calendar/gui/calendar-summary.c:690
-msgid "Things to do"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:721 calendar/gui/e-itip-control.glade.h:7
-msgid "Loading Calendar"
-msgstr "¥«¥ì¥ó¥À¤ò¥í¡¼¥ÉÃæ"
-
-#: calendar/gui/control-factory.c:126
-msgid "The URI that the calendar will display"
-msgstr "¥«¥ì¥ó¥À¤¬É½¼¨¤¹¤ë URI"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:189
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr "%Y/%b/%d %A %H:%M ¤Ë¥¢¥é¡¼¥à"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:196
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr "%Y/%b/%d %A %H:%M ¤Î¤¢¤Ê¤¿¤ÎÌó«¤Ë¤Ä¤¤¤ÆÄÌÃÎ"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:207
-msgid "No summary available."
-msgstr "ÍøÍѤǤ­¤ë¥µ¥Þ¥ê¡¼¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:5
-msgid "Close"
-msgstr "ÊĤ¸¤ë"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-msgid "Edit appointment"
-msgstr "Ìó«¤ÎÊÔ½¸"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr "¥¢¥é¡¼¥àÄä»ß»þ´Ö (ʬ)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr "05 ʬ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr "10 ʬ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr "12 »þ´Ö (¸áÁ°/¸á¸å)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr "15 ʬ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr "24 »þ´Ö"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr "30 ʬ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr "60 ʬ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr "»ØÄê»þ´Ö¸å¤Ë¥¢¥é¡¼¥à¤¬¥¿¥¤¥à¥¢¥¦¥È"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr "¥ª¡¼¥Ç¥£¥ª¥¢¥é¡¼¥à"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr "¥¢¥é¡¼¥à¥¦¥£¥ó¥É¥¦¤¬¸½¤ì¤¿»þ BEEP ²»¤òÌĤ餹"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-msgid "Calendar"
-msgstr "¥«¥ì¥ó¥À"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr "¥«¥ì¥ó¥À¤ÎÀßÄê"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "¥«¥é¡¼"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr "½µËö¤òɽ¼¨¤·¤Ê¤¤"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr "ÆüÉÕÁàºî¥ª¥×¥·¥ç¥ó"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-msgid "Defaults"
-msgstr "¥Ç¥Õ¥©¥ë¥È"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr "ɽ¼¨¥ª¥×¥·¥ç¥ó"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:155
-msgid "Due Date"
-msgstr "´üÆü"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr "¥¢¥é¡¼¥àÄä»ß¤òÍ­¸ú"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr "½ªÎ»Æü:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr "½µ¤Î»Ï¤á:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr "¶â"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:479
-msgid "Friday"
-msgstr "¶âÍËÆü"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr "¶¯Ä´"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr "¥¢¥¤¥Æ¥à¤Ïº£Æü¤¬´ü¸Â"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr "¥¢¥¤¥Æ¥à¤Ïº£Æü¤¬´ü¸Â:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr "¥¢¥¤¥Æ¥à¤Ï¤Þ¤À´ü¸Â¤Ç¤Ï¤Ê¤¤"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr "¥¢¥¤¥Æ¥à¤Ï¤Þ¤À´ü¸Â¤Ç¤Ï¤Ê¤¤:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr "·î"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:475
-msgid "Monday"
-msgstr "·îÍËÆü"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr "´ü¸Â¤ò²á¤®¤¿¥¢¥¤¥Æ¥à"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr "´ü¸Â¤ò²á¤®¤¿¥¢¥¤¥Æ¥à:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:54
-msgid "Pick a color"
-msgstr "¥«¥é¡¼¤òÁªÂò"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:158
-msgid "Priority"
-msgstr "Í¥ÀèÅÙ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-msgid "Remind me of all appointments"
-msgstr "¤¹¤Ù¤Æ¤ÎÌó«¤òºÅÂ¥¤¹¤ë"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-msgid "Reminders"
-msgstr "ºÅÂ¥¾õ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr "ÅÚ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:480
-msgid "Saturday"
-msgstr "ÅÚÍËÆü"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr "ɽ¼¨"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-msgid "Show appointment end times"
-msgstr "Ìó«¤Î½ªÎ»»þ´Ö¤òɽ¼¨"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr "½µÈÖ¹æ¤òɽ¼¨"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr "³«»ÏÆü:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr "Æü"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:481
-msgid "Sunday"
-msgstr "ÆüÍËÆü"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-msgid "TaskPad"
-msgstr "¥¿¥¹¥¯¥Ñ¥Ã¥É"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr "ÌÚ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:478
-msgid "Thursday"
-msgstr "ÌÚÍËÆü"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr "´ü¸Â¤Þ¤Ç¤Î»þ´Ö"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr "»þʬ³ä:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr "»þ´Ö¤Î½ñ¼°:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr "²Ð"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:476
-msgid "Tuesday"
-msgstr "²ÐÍËÆü"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr "»ë³Ð¥¢¥é¡¼¥à"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr "¿å"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:477
-msgid "Wednesday"
-msgstr "¿åÍËÆü"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr "½µ´ÖϫƯ»þ´Ö"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr "ʬÁ°"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:88
-msgid "seconds."
-msgstr " ÉÃ"
-
-#: calendar/gui/dialogs/delete-comp.c:84
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr "ËÜÅö¤ËÌó« `%s' ¤òºï½ü¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?"
-
-#: calendar/gui/dialogs/delete-comp.c:87
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr "ËÜÅö¤Ë¥¿¥¤¥È¥ë¤Ê¤·¤ÎÌó«¤òºï½ü¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?"
-
-#: calendar/gui/dialogs/delete-comp.c:93
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr "ËÜÅö¤Ë¥¿¥¹¥¯ `%s' ¤òºï½ü¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?"
-
-#: calendar/gui/dialogs/delete-comp.c:96
-msgid "Are you sure you want to delete this untitled task?"
-msgstr "ËÜÅö¤Ë¥¿¥¤¥È¥ë¤Ê¤·¤Î¥¿¥¹¥¯¤òºï½ü¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?"
-
-#: calendar/gui/dialogs/delete-comp.c:102
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr "ËÜÅö¤Ë»ÅÌõµ­Æþ `%s' ¤òºï½ü¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?"
-
-#: calendar/gui/dialogs/delete-comp.c:105
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr "ËÜÅö¤Ë¥¿¥¤¥È¥ë¤Ê¤·¤Î»ÅÌõµ­Æþ¤òºï½ü¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?"
-
-#: calendar/gui/dialogs/delete-comp.c:120
-#, c-format
-msgid "Are you sure you want to delete %d appointments?"
-msgstr "ËÜÅö¤Ë %d ¸Ä¤ÎÌó«¤òºï½ü¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?"
-
-#: calendar/gui/dialogs/delete-comp.c:125
-#, c-format
-msgid "Are you sure you want to delete %d tasks?"
-msgstr "ËÜÅö¤Ë %d ¸Ä¤Î¥¿¥¹¥¯¤òºï½ü¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?"
-
-#: calendar/gui/dialogs/delete-comp.c:130
-#, c-format
-msgid "Are you sure you want to delete %d journal entries?"
-msgstr "ËÜÅö¤Ë %d ¸Ä¤Î»ÅÌõµ­Æþ¤òºï½ü¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?"
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr "Êѹ¹¤òÊݸ¤·¤¿¤¤¤Ç¤¹¤«?"
-
-#: calendar/gui/dialogs/task-editor.c:709
-msgid "Edit Task"
-msgstr "¥¿¥¹¥¯¤ÎÊÔ½¸"
-
-#: calendar/gui/dialogs/task-editor.c:714 calendar/gui/event-editor.c:382
-#, c-format
-msgid "Appointment - %s"
-msgstr "Ìó« - %s"
-
-#: calendar/gui/dialogs/task-editor.c:717 calendar/gui/event-editor.c:385
-#, c-format
-msgid "Task - %s"
-msgstr "¥¿¥¹¥¯ - %s"
-
-#: calendar/gui/dialogs/task-editor.c:720 calendar/gui/event-editor.c:388
-#, c-format
-msgid "Journal entry - %s"
-msgstr "»ÅÌõµ­Æþ - %s"
-
-#: calendar/gui/dialogs/task-editor.c:734 calendar/gui/event-editor.c:402
-msgid "No summary"
-msgstr "¥µ¥Þ¥ê¡¼¤Ê¤·"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr "% ´°Î»(_l):"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:151
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr "ʬÎà"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-msgid "Date & Time"
-msgstr "ÆüÉդȻþ´Ö"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr "´°Î»Æü:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-msgid "Pri_vate"
-msgstr "»äŪ(_v)"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-msgid "Progress"
-msgstr "½èÍýÃæ"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr "¸øŪ(_b)"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-msgid "Sta_rt Date:"
-msgstr "³«»ÏÆü(_r):"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-msgid "Su_mmary:"
-msgstr "¥µ¥Þ¥ê¡¼(_m):"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr "¥¿¥¹¥¯"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-msgid "URL:"
-msgstr "URL:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr "µ¡Ì©(_C)"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Contacts..."
-msgstr "¥³¥ó¥¿¥¯¥È(_C)..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-msgid "_Due Date:"
-msgstr "´üÆü(_D):"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-msgid "_Priority:"
-msgstr "Í¥ÀèÅÙ(_P):"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "_Status:"
-msgstr "¥¹¥Æ¡¼¥¿¥¹(_S):"
-
-#: calendar/gui/e-calendar-table.c:150
-msgid "Categories"
-msgstr "¥«¥Æ¥´¥ê"
-
-#: calendar/gui/e-calendar-table.c:152
-msgid "Completion Date"
-msgstr "´°Î»Æü"
-
-#: calendar/gui/e-calendar-table.c:153
-msgid "End Date"
-msgstr "½ªÎ»Æü"
-
-#: calendar/gui/e-calendar-table.c:154
-msgid "Start Date"
-msgstr "³«»ÏÆü"
-
-#: calendar/gui/e-calendar-table.c:156
-msgid "Geographical Position"
-msgstr "°ÞÅÙ·ÐÅÙ"
-
-#: calendar/gui/e-calendar-table.c:157
-msgid "Percent complete"
-msgstr "¥Ñ¡¼¥»¥ó¥È´°Î»"
-
-#: calendar/gui/e-calendar-table.c:159
-msgid "Summary"
-msgstr "¥µ¥Þ¥ê¡¼"
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "Transparency"
-msgstr "Æ©ÌÀÅÙ"
-
-#: calendar/gui/e-calendar-table.c:161
-msgid "URL"
-msgstr "URL"
-
-#: calendar/gui/e-calendar-table.c:162
-msgid "Alarms"
-msgstr "¥¢¥é¡¼¥à"
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Click here to add a task"
-msgstr "¥¿¥¹¥¯¤òÄɲ乤뤿¤á¤Ë¤³¤³¤ò¥¯¥ê¥Ã¥¯"
-
-#: calendar/gui/e-calendar-table.c:367
-#, c-format
-msgid "0%"
-msgstr "0%"
-
-#: calendar/gui/e-calendar-table.c:368
-#, c-format
-msgid "10%"
-msgstr "10%"
-
-#: calendar/gui/e-calendar-table.c:369
-#, c-format
-msgid "20%"
-msgstr "20%"
-
-#: calendar/gui/e-calendar-table.c:370
-#, c-format
-msgid "30%"
-msgstr "30%"
-
-#: calendar/gui/e-calendar-table.c:371
-#, c-format
-msgid "40%"
-msgstr "40%"
-
-#: calendar/gui/e-calendar-table.c:372
-#, c-format
-msgid "50%"
-msgstr "50%"
-
-#: calendar/gui/e-calendar-table.c:373
-#, c-format
-msgid "60%"
-msgstr "60%"
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "70%"
-msgstr "70%"
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "80%"
-msgstr "80%"
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "90%"
-msgstr "90%"
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "100%"
-msgstr "100%"
-
-#: calendar/gui/e-calendar-table.c:705
-msgid "Edit this task"
-msgstr "¤³¤Î¥¿¥¹¥¯¤òÊÔ½¸¤·¤Þ¤¹"
-
-#: calendar/gui/e-calendar-table.c:707
-msgid "Mark as complete"
-msgstr "´°Î»¤ò¥Þ¡¼¥¯¤·¤Þ¤¹"
-
-#: calendar/gui/e-calendar-table.c:708
-#: ui/evolution-task-editor-dialog.xml.h:19
-msgid "Delete this task"
-msgstr "¤³¤Î¥¿¥¹¥¯¤òºï½ü¤·¤Þ¤¹"
-
-#: calendar/gui/e-calendar-table.c:713
-msgid "Mark tasks as complete"
-msgstr "´°Î»¤·¤¿¥¿¥¹¥¯¤ò¥Þ¡¼¥¯¤·¤Þ¤¹"
-
-#: calendar/gui/e-calendar-table.c:714
-msgid "Delete selected tasks"
-msgstr "ÁªÂò¤·¤¿¥¿¥¹¥¯¤òºï½ü¤·¤Þ¤¹"
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:570 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:617
-msgid "am"
-msgstr "¸áÁ°"
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:573 calendar/gui/e-week-view.c:303
-#: calendar/gui/print.c:616
-msgid "pm"
-msgstr "¸á¸å"
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:274 calendar/gui/e-day-view.c:1294
-#: calendar/gui/e-week-view-main-item.c:325
-msgid "%A %d %B"
-msgstr "%B %d %A"
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:278 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:334
-msgid "%a %d %b"
-msgstr "%b/%d (%a)"
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:282 calendar/gui/e-day-view.c:1321
-#: calendar/gui/e-week-view-main-item.c:348
-msgid "%d %b"
-msgstr "%b/%d"
-
-#: calendar/gui/e-day-view.c:3146 ui/evolution-calendar.xml.h:16
-msgid "New Appointment"
-msgstr "¿·µ¬Ìó«"
-
-#: calendar/gui/e-day-view.c:3148 calendar/gui/e-week-view.c:3279
-msgid "New All Day Event"
-msgstr "¿·µ¬ËèÆü¤Î¥¤¥Ù¥ó¥È"
-
-#: calendar/gui/e-day-view.c:3153 calendar/gui/e-week-view.c:3284
-msgid "Go to Today"
-msgstr "º£Æü¤Ø°ÜÆ°"
-
-#: calendar/gui/e-day-view.c:3155 calendar/gui/e-week-view.c:3286
-msgid "Go to Date..."
-msgstr "»ØÄêÆü¤Ø°ÜÆ°..."
-
-#: calendar/gui/e-day-view.c:3162 calendar/gui/e-week-view.c:3292
-#: ui/evolution-calendar.xml.h:19 ui/evolution-message-composer.xml.h:11
-msgid "Open"
-msgstr "³«¤¯"
-
-#: calendar/gui/e-day-view.c:3164 calendar/gui/e-week-view.c:3294
-msgid "Delete this Appointment"
-msgstr "¤³¤ÎÌó«¤òºï½ü"
-
-#: calendar/gui/e-day-view.c:3166 calendar/gui/e-week-view.c:3296
-#: ui/evolution-event-editor.xml.h:45
-msgid "Schedule Meeting"
-msgstr "Âǹ礻¤Î¥¹¥±¥¸¥å¡¼¥ë"
-
-#: calendar/gui/e-day-view.c:3175 calendar/gui/e-week-view.c:3309
-msgid "Make this Occurrence Movable"
-msgstr "¤³¤Î½ÐÍè»ö¤ò²ÄÆ°¤Ë¤¹¤ë"
-
-#: calendar/gui/e-day-view.c:3177 calendar/gui/e-week-view.c:3311
-msgid "Delete this Occurrence"
-msgstr "¤³¤Î½ÐÍè»ö¤òºï½ü"
-
-#: calendar/gui/e-day-view.c:3179
-msgid "Delete all Occurrences"
-msgstr "¤¹¤Ù¤Æ¤Î½ÐÍè»ö¤òºï½ü"
-
-#: calendar/gui/e-day-view-time-item.c:519
-#, c-format
-msgid "%02i minute divisions"
-msgstr "%02i ʬʬ³ä"
-
-#: calendar/gui/e-itip-control.c:161
-msgid "I couldn't update your calendar file!\n"
-msgstr "¥«¥ì¥ó¥À¥Õ¥¡¥¤¥ë¤ò¹¹¿·½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿!\n"
-
-#: calendar/gui/e-itip-control.c:167 calendar/gui/e-itip-control.c:510
-msgid "Component successfully updated."
-msgstr "¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ÏÀµ¤·¤¯¹¹¿·¤µ¤ì¤Þ¤·¤¿"
-
-#: calendar/gui/e-itip-control.c:173
-msgid "There was an error loading the calendar file."
-msgstr "¥«¥ì¥ó¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ßÃæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿"
-
-#: calendar/gui/e-itip-control.c:197
-msgid "I couldn't open your calendar file!\n"
-msgstr "¥«¥ì¥ó¥À¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿!\n"
-
-#: calendar/gui/e-itip-control.c:458 calendar/gui/e-itip-control.c:529
-msgid "I couldn't load your calendar file!\n"
-msgstr "¥«¥ì¥ó¥À¥Õ¥¡¥¤¥ë¤ò¥í¡¼¥É¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿!\n"
-
-#: calendar/gui/e-itip-control.c:470
-msgid "I couldn't read your calendar file!\n"
-msgstr "¥«¥ì¥ó¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤à¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿!\n"
-
-#: calendar/gui/e-itip-control.c:483
-msgid "This is a reply from someone who was uninvited!"
-msgstr "¤³¤ì¤Ï¾·¤«¤¶¤ë狼¤«¤é¤ÎÊÖ»ö¤Ç¤¹!"
-
-#: calendar/gui/e-itip-control.c:499
-msgid "I couldn't update your calendar store."
-msgstr "Êݸ¤·¤¿¥«¥ì¥ó¥À¤ò¹¹¿·½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: calendar/gui/e-itip-control.c:540
-msgid "I couldn't delete the calendar component!\n"
-msgstr "¥«¥ì¥ó¥À¥³¥ó¥Ý¡¼¥Í¥ó¥È¤òºï½ü½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿!\n"
-
-#: calendar/gui/e-itip-control.c:550
-msgid "Component successfully deleted."
-msgstr "¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ÏÀµ¤·¤¯ºï½ü¤µ¤ì¤Þ¤·¤¿"
-
-#: calendar/gui/e-itip-control.c:694
-msgid "I don't recognize this type of calendar component."
-msgstr "¤³¤Î¥«¥ì¥ó¥À¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¼ïÊ̤Ïǧ¼±¤·¤Þ¤»¤ó"
-
-#: calendar/gui/e-itip-control.c:780
-msgid "Add to Calendar"
-msgstr "¥«¥ì¥ó¥À¤ÎÄɲÃ"
-
-#: calendar/gui/e-itip-control.c:814
-msgid " Accept "
-msgstr " ¼õÂú "
-
-#: calendar/gui/e-itip-control.c:815
-msgid " Decline "
-msgstr " ¼­Âà "
-
-#: calendar/gui/e-itip-control.c:816
-msgid " Tentative "
-msgstr " »ÃÄê "
-
-#: calendar/gui/e-itip-control.c:860
-msgid "Update Calendar"
-msgstr "¥«¥ì¥ó¥À¤ò¹¹¿·"
-
-#: calendar/gui/e-itip-control.c:883
-msgid "Cancel Meeting"
-msgstr "Âǹ礻¤ò¥­¥ã¥ó¥»¥ë"
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, no-c-format
-msgid "%P %%"
-msgstr "%P %%"
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:4
-msgid "Calendar Message"
-msgstr "¥«¥ì¥ó¥À¥á¥Ã¥»¡¼¥¸"
-
-#: calendar/gui/e-itip-control.glade.h:5
-msgid "Date:"
-msgstr "ÆüÉÕ:"
-
-#: calendar/gui/e-itip-control.glade.h:8
-msgid "Loading calendar..."
-msgstr "¥«¥ì¥ó¥À¤ò¥í¡¼¥ÉÃæ..."
-
-#: calendar/gui/e-itip-control.glade.h:9
-msgid "Organizer:"
-msgstr "¼çºÅ¼Ô:"
-
-#: calendar/gui/e-itip-control.glade.h:10
-msgid "Server Message:"
-msgstr "¥µ¡¼¥Ð¥á¥Ã¥»¡¼¥¸:"
-
-#: calendar/gui/e-itip-control.glade.h:11
-msgid "Summary:"
-msgstr "¥µ¥Þ¥ê:"
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr "½ªÎ»Æü"
-
-#: calendar/gui/e-itip-control.glade.h:13
-msgid "date-start"
-msgstr "³«»ÏÆü"
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-msgid "Attendee"
-msgstr "½ÐÀʼÔ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-msgid "Attendee address"
-msgstr "½ÐÀʼԤν»½ê"
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-msgid "Attendees: "
-msgstr "½ÐÀʼÔ: "
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr ""
-"¥­¥ã¥ó¥»¥ë\n"
-"Âǹ礻"
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-msgid "Chair"
-msgstr "µÄĹ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-msgid "Meeting Invitations"
-msgstr "Âǹ礻¤Î°ÆÆâ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr "ÉÔ»²²Ã¼Ô"
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr "Ǥ°Õ»²²Ã¼Ô"
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-msgid "Organizer: "
-msgstr "¼çºÅ¼Ô:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:14
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-"ȯɽ\n"
-"¥¤¥Ù¥ó¥È"
-
-#: calendar/gui/e-meeting-dialog.glade.h:16
-msgid "RSVP"
-msgstr "RSVP"
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid ""
-"Request\n"
-"Meeting"
-msgstr ""
-"Í×µá\n"
-"Âǹ礻"
-
-#: calendar/gui/e-meeting-dialog.glade.h:19
-msgid "Required Participant"
-msgstr "»²²Ã¼Ô¤¬É¬Í×"
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-msgid "Role"
-msgstr "Ìò³ä"
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-msgid ""
-"Schedule\n"
-"Time"
-msgstr ""
-"¥¹¥±¥¸¥å¡¼¥ë\n"
-"»þ´Ö"
-
-#: calendar/gui/e-meeting-dialog.glade.h:23 filter/libfilter-i18n.h:49
-#: mail/message-list.c:1081
-msgid "Status"
-msgstr "¥¹¥Æ¡¼¥¿¥¹"
-
-#: calendar/gui/e-tasks.c:149 calendar/gui/e-tasks.c:469
-#: calendar/gui/e-tasks.c:502
-msgid "All"
-msgstr "¤¹¤Ù¤Æ"
-
-#: calendar/gui/e-tasks.c:155
-msgid "Category:"
-msgstr "¥«¥Æ¥´¥ê:"
-
-#: calendar/gui/e-tasks.c:298
-#, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "'%s' ¤Î¥¿¥¹¥¯¤òÆɤ߹þ¤à¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: calendar/gui/e-tasks.c:310
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr "'%s' ¤òÆɤ߹þ¤à¤³¤È¤òÍ׵ᤵ¤ì¤ë¥á¥½¥Ã¥É¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó"
-
-#: calendar/gui/event-editor.c:377
-msgid "Edit Appointment"
-msgstr "Ìó«¤ÎÊÔ½¸"
-
-#: calendar/gui/event-editor.c:449
-msgid "on"
-msgstr ""
-
-#: calendar/gui/event-editor.c:474 filter/filter-datespec.c:81
-msgid "day"
-msgstr "Æü"
-
-#: calendar/gui/event-editor.c:601
-msgid "on the"
-msgstr ""
-
-#: calendar/gui/event-editor.c:608
-msgid "th"
-msgstr ""
-
-#: calendar/gui/event-editor.c:754
-msgid "occurrences"
-msgstr "½ÐÍè»ö"
-
-#: calendar/gui/event-editor.c:871
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr "¤³¤ÎÌó«¤Ï Evolution ¤¬ÊÔ½¸½ÐÍè¤Ê¤¤ºÆȯ¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹"
-
-#: calendar/gui/event-editor.c:1543
-#, c-format
-msgid " %d days"
-msgstr "%d Æü"
-
-#: calendar/gui/event-editor.c:1545
-msgid " 1 day"
-msgstr "1 Æü"
-
-#: calendar/gui/event-editor.c:1548
-#, c-format
-msgid " %d weeks"
-msgstr "%d ½µ´Ö"
-
-#: calendar/gui/event-editor.c:1550
-msgid " 1 week"
-msgstr "1 ½µ´Ö"
-
-#: calendar/gui/event-editor.c:1553
-#, c-format
-msgid " %d hours"
-msgstr "%d »þ´Ö"
-
-#: calendar/gui/event-editor.c:1555
-msgid " 1 hour"
-msgstr "1 »þ´Ö"
-
-#: calendar/gui/event-editor.c:1558
-#, c-format
-msgid " %d minutes"
-msgstr "%d ʬ"
-
-#: calendar/gui/event-editor.c:1560
-msgid " 1 minute"
-msgstr "1 ʬ"
-
-#: calendar/gui/event-editor.c:1563
-#, c-format
-msgid " %d seconds"
-msgstr "%d ÉÃ"
-
-#: calendar/gui/event-editor.c:1565
-msgid " 1 second"
-msgstr "1 ÉÃ"
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1588
-msgid "Play a sound"
-msgstr "¼¡¤Î»þ¤Ë²»³Ú¤òºÆÀ¸¤¹¤ë:"
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1591
-msgid "Show a dialog"
-msgstr "¼¡¤Î»þ¤Ë¥À¥¤¥¢¥í¥°¤òɽ¼¨¤¹¤ë:"
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1594
-msgid "Send an email"
-msgstr "¼¡¤Î»þ¤Ë¥á¡¼¥ë¤òÁ÷¿®¤¹¤ë:"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1597
-msgid "Run a program"
-msgstr "¼¡¤Î»þ¤Ë¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë:"
-
-#: calendar/gui/event-editor.c:1612
-msgid " before start of appointment"
-msgstr "ºÇ½é¤ÎÌó«¤ÎÁ°"
-
-#: calendar/gui/event-editor.c:1614
-msgid " after start of appointment"
-msgstr "ºÇ½é¤ÎÌó«¤Î¸å"
-
-#: calendar/gui/event-editor.c:1622
-msgid " before end of appointment"
-msgstr "ºÇ¸å¤ÎÌó«¤ÎÁ°"
-
-#: calendar/gui/event-editor.c:1624
-msgid " after end of appointment"
-msgstr "ºÇ¸å¤ÎÌó«¤Î¸å"
-
-#: calendar/gui/event-editor.c:3132 calendar/gui/print.c:1097
-#: calendar/gui/print.c:1099 calendar/gui/print.c:1100
-msgid "%a %b %d %Y"
-msgstr "%Y/%b/%d (%a)"
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr "ËèÆü¤Î¥¤¥Ù¥ó¥È(_l)"
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-msgid "Appointment"
-msgstr "Ìó«"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-msgid "Appointment Basics"
-msgstr "ÉáÄ̤ÎÌó«"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-msgid "Custom recurrence"
-msgstr "ºÆȯ¤Î¥«¥¹¥¿¥Þ¥¤¥º"
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-msgid "Exceptions"
-msgstr "Îã³°"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-msgid "Modify"
-msgstr "½¤Àµ"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-msgid "No recurrence"
-msgstr "ºÆȯ¤Ê¤·"
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-msgid "Preview"
-msgstr "¥×¥ì¥Ó¥å¡¼"
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Recurrence"
-msgstr "ºÆȯ"
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-msgid "Recurrence Rule"
-msgstr "ºÆȯ¥ë¡¼¥ë"
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-msgid "Reminder"
-msgstr "ºÅÂ¥¾õ"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-msgid "Settings..."
-msgstr "ÀßÄê..."
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr "¥·¥ó¥×¥ë¤ÊºÆȯ"
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-msgid "_End time:"
-msgstr "½ªÎ»»þ´Ö(_E):"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Start time:"
-msgstr "³«»Ï»þ´Ö(_S):"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Starting date:"
-msgstr "³«»ÏÆü(_S):"
-
-#. Automatically generated. Do not edit.
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:2
-msgid "after"
-msgstr "¸å¤Ë"
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:6
-msgid "before"
-msgstr "Á°¤Ë"
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "day(s)"
-msgstr "Æü"
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-msgid "end of appointment"
-msgstr "Ìó«¤ÎºÇ¸å¤¬·Ð²á"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "for"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-msgid "hour(s)"
-msgstr "»þ"
-
-#: calendar/gui/event-editor-dialog.glade.h:40 mail/mail-config.glade.h:87
-msgid "minute(s)"
-msgstr "ʬ"
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-#, fuzzy
-msgid "month(s)"
-msgstr "·î"
-
-#: calendar/gui/event-editor-dialog.glade.h:42
-msgid "start of appointment"
-msgstr "Ìó«¤ÎºÇ½é¤¬·Ð²á"
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-#, fuzzy
-msgid "until"
-msgstr "¤Ë»ØÄêÆü¤Þ¤Ç·«¤êÊÖ¤¹"
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-#, fuzzy
-msgid "week(s)"
-msgstr "½µ"
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-#, fuzzy
-msgid "year(s)"
-msgstr "ǯ"
-
-#: calendar/gui/e-week-view.c:3277 calendar/gui/e-week-view.c:3300
-msgid "New Appointment..."
-msgstr "¿·µ¬Ìó«..."
-
-#: calendar/gui/e-week-view.c:3313
-msgid "Delete All Occurrences"
-msgstr "¤¹¤Ù¤Æ¤Î½ÐÍè»ö¤òºï½ü"
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:342
-msgid "%d %B"
-msgstr "%B %d"
-
-#: calendar/gui/gnome-cal.c:234
-msgid "Summary contains"
-msgstr "¥µ¥Þ¥ê¤¬¼¡¤Î¤â¤Î¤ò´Þ¤à"
-
-#: calendar/gui/gnome-cal.c:235
-msgid "Description contains"
-msgstr "ÀâÌÀ¤¬¼¡¤Î¤â¤Î¤ò´Þ¤à"
-
-#: calendar/gui/gnome-cal.c:236
-msgid "Comment contains"
-msgstr "¥³¥á¥ó¥È¤¬¼¡¤Î¤â¤Î¤ò´Þ¤à"
-
-#: calendar/gui/gnome-cal.c:237
-msgid "Has category"
-msgstr "¼¡¤Î¥«¥Æ¥´¥ê¤ò»ý¤Ä"
-
-#: calendar/gui/gnome-cal.c:840
-#, c-format
-msgid "Could not open the folder in `%s'"
-msgstr "`%s' ¤Î¥Õ¥©¥ë¥À¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: calendar/gui/gnome-cal.c:851
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr "'%s' ¤ò³«¤¯¤³¤È¤òÍ׵ᤵ¤ì¤ë¥á¥½¥Ã¥É¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr "¥«¥ì¥ó¥À¤òɽ¼¨¤¹¤ë Bonobo ¥³¥ó¥È¥í¡¼¥ë¤Î¥µ¥ó¥×¥ë"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-msgid "Evolution calendar executive summary component."
-msgstr "Evolution ¥«¥ì¥ó¥À¼Â¹Ô¥µ¥Þ¥ê¥³¥ó¥Ý¡¼¥Í¥ó¥È"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr "Evolution ¥«¥ì¥ó¥À iTip/iMip ¥Ó¥å¡¼¥¢"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr "¥«¥ì¥ó¥À¤ò°·¤¦¤¿¤á¤Î Evolution ¥³¥ó¥Ý¡¼¥Í¥ó¥È"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-msgid "Factory for the Calendar Summary component."
-msgstr "¥«¥ì¥ó¥À¥µ¥Þ¥ê¡¼¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¤¿¤á¤Î¥Õ¥¡¥¯¥È¥ê"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-msgid "Factory for the Evolution calendar component."
-msgstr "Evolution ¥«¥ì¥ó¥À¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¤¿¤á¤Î¥Õ¥¡¥¯¥È¥ê"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-msgid "Factory for the calendar iTip view control"
-msgstr "¥«¥ì¥ó¥À iTip ¥Ó¥å¡¼¥³¥ó¥È¥í¡¼¥ë¤Î¤¿¤á¤Î¥Õ¥¡¥¯¥È¥ê"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-msgid "Factory for the sample Calendar control"
-msgstr "¥µ¥ó¥×¥ë¥«¥ì¥ó¥À¥³¥ó¥È¥í¡¼¥ë¤Î¥Õ¥¡¥¯¥È¥ê"
-
-#: calendar/gui/goto-dialog.glade.h:1
-msgid "April"
-msgstr "4 ·î"
-
-#: calendar/gui/goto-dialog.glade.h:2
-msgid "August"
-msgstr "8 ·î"
-
-#: calendar/gui/goto-dialog.glade.h:3
-msgid "December"
-msgstr "12 ·î"
-
-#: calendar/gui/goto-dialog.glade.h:4
-msgid "February"
-msgstr "2 ·î"
-
-#: calendar/gui/goto-dialog.glade.h:5
-msgid "Go To Date"
-msgstr "Æü¤Ë¤Á¤Ë°ÜÆ°"
-
-#: calendar/gui/goto-dialog.glade.h:6
-msgid "Go To Today"
-msgstr "º£Æü¤Ø°ÜÆ°"
-
-#: calendar/gui/goto-dialog.glade.h:7
-msgid "January"
-msgstr "1 ·î"
-
-#: calendar/gui/goto-dialog.glade.h:8
-msgid "July"
-msgstr "7 ·î"
-
-#: calendar/gui/goto-dialog.glade.h:9
-msgid "June"
-msgstr "6 ·î"
-
-#: calendar/gui/goto-dialog.glade.h:10
-msgid "March"
-msgstr "3 ·î"
-
-#: calendar/gui/goto-dialog.glade.h:11
-msgid "May"
-msgstr "5 ·î"
-
-#: calendar/gui/goto-dialog.glade.h:12
-msgid "November"
-msgstr "11 ·î"
-
-#: calendar/gui/goto-dialog.glade.h:13
-msgid "October"
-msgstr "10 ·î"
-
-#: calendar/gui/goto-dialog.glade.h:14
-msgid "September"
-msgstr "9 ·î"
-
-#: calendar/gui/print.c:300
-msgid "1st"
-msgstr "1 Æü"
-
-#: calendar/gui/print.c:300
-msgid "2nd"
-msgstr "2 Æü"
-
-#: calendar/gui/print.c:300
-msgid "3rd"
-msgstr "3 Æü"
-
-#: calendar/gui/print.c:300
-msgid "4th"
-msgstr "4 Æü"
-
-#: calendar/gui/print.c:300
-msgid "5th"
-msgstr "5 Æü"
-
-#: calendar/gui/print.c:301
-msgid "6th"
-msgstr "6 Æü"
-
-#: calendar/gui/print.c:301
-msgid "7th"
-msgstr "7 Æü"
-
-#: calendar/gui/print.c:301
-msgid "8th"
-msgstr "8 Æü"
-
-#: calendar/gui/print.c:301
-msgid "9th"
-msgstr "9 Æü"
-
-#: calendar/gui/print.c:301
-msgid "10th"
-msgstr "10 Æü"
-
-#: calendar/gui/print.c:302
-msgid "11th"
-msgstr "11 Æü"
-
-#: calendar/gui/print.c:302
-msgid "12th"
-msgstr "12 Æü"
-
-#: calendar/gui/print.c:302
-msgid "13th"
-msgstr "13 Æü"
-
-#: calendar/gui/print.c:302
-msgid "14th"
-msgstr "14 Æü"
-
-#: calendar/gui/print.c:302
-msgid "15th"
-msgstr "15 Æü"
-
-#: calendar/gui/print.c:303
-msgid "16th"
-msgstr "16 Æü"
-
-#: calendar/gui/print.c:303
-msgid "17th"
-msgstr "17 Æü"
-
-#: calendar/gui/print.c:303
-msgid "18th"
-msgstr "18 Æü"
-
-#: calendar/gui/print.c:303
-msgid "19th"
-msgstr "19 Æü"
-
-#: calendar/gui/print.c:303
-msgid "20th"
-msgstr "20 Æü"
-
-#: calendar/gui/print.c:304
-msgid "21st"
-msgstr "21 Æü"
-
-#: calendar/gui/print.c:304
-msgid "22nd"
-msgstr "22 Æü"
-
-#: calendar/gui/print.c:304
-msgid "23rd"
-msgstr "23 Æü"
-
-#: calendar/gui/print.c:304
-msgid "24th"
-msgstr "24 Æü"
-
-#: calendar/gui/print.c:304
-msgid "25th"
-msgstr "25 Æü"
-
-#: calendar/gui/print.c:305
-msgid "26th"
-msgstr "26 Æü"
-
-#: calendar/gui/print.c:305
-msgid "27th"
-msgstr "27 Æü"
-
-#: calendar/gui/print.c:305
-msgid "28th"
-msgstr "28 Æü"
-
-#: calendar/gui/print.c:305
-msgid "29th"
-msgstr "29 Æü"
-
-#: calendar/gui/print.c:305
-msgid "30th"
-msgstr "30 Æü"
-
-#: calendar/gui/print.c:306
-msgid "31st"
-msgstr "31 Æü"
-
-#: calendar/gui/print.c:362
-msgid "Su"
-msgstr "Æü"
-
-#: calendar/gui/print.c:362
-msgid "Mo"
-msgstr "·î"
-
-#: calendar/gui/print.c:362
-msgid "Tu"
-msgstr "²Ð"
-
-#: calendar/gui/print.c:362
-msgid "We"
-msgstr "¿å"
-
-#: calendar/gui/print.c:362
-msgid "Th"
-msgstr "ÌÚ"
-
-#: calendar/gui/print.c:362
-msgid "Fr"
-msgstr "¶â"
-
-#: calendar/gui/print.c:362
-msgid "Sa"
-msgstr "ÅÚ"
-
-#. Day
-#: calendar/gui/print.c:1078
-msgid "Current day (%a %b %d %Y)"
-msgstr "º£Æü¤ÎÆüÉÕ [%Y/%b/%d (%a)]"
-
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1096
-msgid "%a %b %d"
-msgstr "%b/%d (%a)"
-
-#: calendar/gui/print.c:1093
-msgid "%a %d %Y"
-msgstr "%Y/%d (%a)"
-
-#: calendar/gui/print.c:1104
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr "º£½µ (%s - %s)"
-
-#. Month
-#: calendar/gui/print.c:1112
-msgid "Current month (%b %Y)"
-msgstr "º£·î (%Y/%b)"
-
-#. Year
-#: calendar/gui/print.c:1119
-msgid "Current year (%Y)"
-msgstr "º£Ç¯ (%Y)"
-
-#: calendar/gui/print.c:1156
-msgid "Print Calendar"
-msgstr "¥«¥ì¥ó¥À¤Î°õºþ"
-
-#: calendar/gui/print.c:1321 mail/mail-callbacks.c:1447
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:24
-msgid "Print Preview"
-msgstr "°õºþ¥×¥ì¥Ó¥å¡¼"
-
-#: calendar/gui/tasks-control.c:108
-msgid "The URI of the tasks folder to display"
-msgstr "¥¿¥¹¥¯¥Õ¥©¥ë¥À¤¬É½¼¨¤¹¤ë URI"
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-"Evolution ¤Ï¥«¥ì¥ó¥À¥Õ¥©¥ë¥À¤Î¥¿¥¹¥¯¤ò¼èÆÀ¤·, "
-"¼«Æ°Åª¤Ë¿·¤·¤¤¥¿¥¹¥¯¥Õ¥©¥ë¥À¤Ø°ÜÆ°¤·¤Þ¤¹"
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-"Evolution ¤Ï¥«¥ì¥ó¥À¥Õ¥©¥ë¥À¤Î¥¿¥¹¥¯¤ò¼èÆÀ¤·, "
-"¿·¤·¤¤¥¿¥¹¥¯¥Õ¥©¥ë¥À¤Ø°ÜÆ°¤·¤è¤¦¤È¤·¤Þ¤·¤¿\n"
-"¤·¤«¤·, ¤¤¤¯¤Ä¤«¤Î¥¿¥¹¥¯¤Ï°ÜÆ°¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿, "
-"¤Ç¤¹¤Î¤Ç¤³¤Î¥×¥í¥»¥¹¤Ï¤³¤Î¸åºÆ¤Ó»î¤µ¤ì¤ë¤Ç¤·¤ç¤¦"
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-"`%s' ¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿; "
-"¥«¥ì¥ó¥À¥Õ¥©¥ë¥À¤«¤é¥¿¥¹¥¯¥Õ¥©¥ë¥À¤Ø°ÜÆ°¤¹¤ë¥¢¥¤¥Æ¥à¤¬¤¢¤ê¤Þ¤»¤ó"
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-"`%s' ¤òÆɤ߹þ¤àÍ×µá¤ò¾å¤²¤¿¥á¥½¥Ã¥É¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó; "
-"¥«¥ì¥ó¥À¥Õ¥©¥ë¥À¤«¤é¥¿¥¹¥¯¥Õ¥©¥ë¥À¤Ø°ÜÆ°¤¹¤ë¥¢¥¤¥Æ¥à¤¬¤¢¤ê¤Þ¤»¤ó"
-
-#: calendar/gui/weekday-picker.c:315 calendar/gui/weekday-picker.c:410
-msgid "SMTWTFS"
-msgstr "SMTWTFS"
-
-#: calendar/pcs/query.c:218
-msgid "time-now expects 0 arguments"
-msgstr ""
-
-#: calendar/pcs/query.c:242
-msgid "make-time expects 1 argument"
-msgstr ""
-
-#: calendar/pcs/query.c:247
-msgid "make-time expects argument 1 to be a string"
-msgstr ""
-
-#: calendar/pcs/query.c:255
-msgid "make-time argument 1 must be an ISO 8601 date/time string"
-msgstr ""
-
-#: calendar/pcs/query.c:281
-msgid "time-add-day expects 2 arguments"
-msgstr ""
-
-#: calendar/pcs/query.c:286
-msgid "time-add-day expects argument 1 to be a time_t"
-msgstr ""
-
-#: calendar/pcs/query.c:293
-msgid "time-add-day expects argument 2 to be an integer"
-msgstr ""
-
-#: calendar/pcs/query.c:318
-msgid "time-day-begin expects 1 argument"
-msgstr ""
-
-#: calendar/pcs/query.c:323
-msgid "time-day-begin expects argument 1 to be a time_t"
-msgstr ""
-
-#: calendar/pcs/query.c:348
-msgid "time-day-end expects 1 argument"
-msgstr ""
-
-#: calendar/pcs/query.c:353
-msgid "time-day-end expects argument 1 to be a time_t"
-msgstr ""
-
-#: calendar/pcs/query.c:389
-msgid "get-vtype expects 0 arguments"
-msgstr ""
-
-#: calendar/pcs/query.c:472
-msgid "occur-in-time-range? expects 2 arguments"
-msgstr ""
-
-#: calendar/pcs/query.c:477
-msgid "occur-in-time-range? expects argument 1 to be a time_t"
-msgstr ""
-
-#: calendar/pcs/query.c:484
-msgid "occur-in-time-range? expects argument 2 to be a time_t"
-msgstr ""
-
-#: calendar/pcs/query.c:611
-msgid "contains? expects 2 arguments"
-msgstr ""
-
-#: calendar/pcs/query.c:616
-msgid "contains? expects argument 1 to be a string"
-msgstr ""
-
-#: calendar/pcs/query.c:623
-msgid "contains? expects argument 2 to be a string"
-msgstr ""
-
-#: calendar/pcs/query.c:640
-msgid ""
-"contains? expects argument 1 to be one of \"any\", \"summary\", "
-"\"description\""
-msgstr ""
-
-#: calendar/pcs/query.c:678
-msgid "has-categories? expects at least 1 argument"
-msgstr ""
-
-#: calendar/pcs/query.c:684
-msgid "has-categories? expects all arguments to be strings"
-msgstr ""
-
-#: calendar/pcs/query.c:932
-msgid "Evaluation of the search expression did not yield a boolean value"
-msgstr ""
-
-#: camel/camel-cipher-context.c:171
-msgid "Signing is not supported by this cipher"
-msgstr "¥µ¥¤¥ó¤Ï¤³¤Î°Å¹æ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó"
-
-#: camel/camel-cipher-context.c:211
-msgid "Clearsigning is not supported by this cipher"
-msgstr "¥¯¥ê¥¢¥µ¥¤¥ó¤Ï¤³¤Î°Å¹æ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó"
-
-#: camel/camel-cipher-context.c:251
-msgid "Verifying is not supported by this cipher"
-msgstr "¥Ù¥ê¥Õ¥¡¥¤¤Ï¤³¤Î°Å¹æ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó"
-
-#: camel/camel-cipher-context.c:294
-msgid "Encryption is not supported by this cipher"
-msgstr "Éä¹æ²½¤Ï¤³¤Î°Å¹æ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó"
-
-#: camel/camel-cipher-context.c:336
-msgid "Decryption is not supported by this cipher"
-msgstr "Éü¹æ²½¤Ï¤³¤Î°Å¹æ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó"
-
-#: camel/camel-disco-store.c:271
-msgid "You must be working online to complete this operation"
-msgstr "¤³¤ÎÆ°ºî¤ò´°Î»¤¹¤ë¤¿¤á¤Ë¥ª¥ó¥é¥¤¥ó¤Çºî¶È¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
-
-#: camel/camel-filter-driver.c:534 camel/camel-filter-driver.c:543
-msgid "Syncing folders"
-msgstr "¥Õ¥©¥ë¥À¤òƱ´üÃæ"
-
-#: camel/camel-filter-driver.c:643
-msgid "Unable to open spool folder"
-msgstr "¥¹¥×¡¼¥ë¥Õ¥©¥ë¥À¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤»¤ó"
-
-#: camel/camel-filter-driver.c:652
-msgid "Unable to process spool folder"
-msgstr "¥¹¥×¡¼¥ë¥Õ¥©¥ë¥À¤ò½èÍý¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó"
-
-#: camel/camel-filter-driver.c:666
-msgid "Getting message %d (%d%%)"
-msgstr "¥á¥Ã¥»¡¼¥¸ %d ¤ò¼èÆÀÃæ (%d%%)"
-
-#: camel/camel-filter-driver.c:670 camel/camel-filter-driver.c:679
-#, c-format
-msgid "Failed message %d"
-msgstr "¥á¥Ã¥»¡¼¥¸ %d ¤Ï¼ºÇÔ¤·¤Þ¤·¤¿"
-
-#: camel/camel-filter-driver.c:671
-msgid "Cannot open message"
-msgstr "¥á¥Ã¥»¡¼¥¸¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤»¤ó"
-
-#: camel/camel-filter-driver.c:690 camel/camel-filter-driver.c:788
-msgid "Syncing folder"
-msgstr "¥Õ¥©¥ë¥À¤òƱ´üÃæ"
-
-#: camel/camel-filter-driver.c:694 camel/camel-filter-driver.c:793
-msgid "Complete"
-msgstr "´°Î»¤·¤Þ¤·¤¿"
-
-#: camel/camel-filter-driver.c:748
-#, c-format
-msgid "Getting message %d of %d"
-msgstr "¥á¥Ã¥»¡¼¥¸ %d / %d ¤ò¼èÆÀÃæ"
-
-#: camel/camel-filter-driver.c:753 camel/camel-filter-driver.c:771
-#, c-format
-msgid "Failed at message %d of %d"
-msgstr "¥á¥Ã¥»¡¼¥¸ %d / %d ¤Ï¼ºÇÔ¤·¤Þ¤·¤¿"
-
-#: camel/camel-filter-driver.c:866
-#, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr "¥Õ¥£¥ë¥¿¤Î¹½Ê¸²òÀÏÃæ¤Ë¥¨¥é¡¼: %s: %s"
-
-#: camel/camel-filter-driver.c:871
-#, c-format
-msgid "Error executing filter: %s: %s"
-msgstr "¥Õ¥£¥ë¥¿¼Â¹ÔÃæ¤Ë¥¨¥é¡¼: %s: %s"
-
-#: camel/camel-filter-search.c:439 camel/camel-filter-search.c:445
-#, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr "¥Õ¥£¥ë¥¿¸¡º÷¼Â¹ÔÃæ¤Ë¥¨¥é¡¼: %s: %s"
-
-#: camel/camel-folder-search.c:328
-#, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-"Àµµ¬É½¸½¤Î¹½Ê¸¤ò²òÀϽÐÍè¤Þ¤»¤ó: %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:338
-#, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr ""
-"Àµµ¬É½¸½¤Ç¤Î¸¡º÷¤ò¼Â¹ÔÃæ¤Ë¥¨¥é¡¼: %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:485 camel/camel-folder-search.c:513
-msgid "(match-all) requires a single bool result"
-msgstr ""
-
-#: camel/camel-folder-search.c:559
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr "̤ÃΤΥإåÀ¤Ç¥¯¥¨¥ê¤ò¼Â¹Ô¤·¤Æ¤¤¤Þ¤¹: %s"
-
-#: camel/camel-folder-search.c:670 camel/camel-folder-search.c:714
-msgid "Invalid type in body-contains, expecting string"
-msgstr "̵¸ú¤Ê¼ïÊ̤¬ËÜʸ¤Ë´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹, ʸ»ú¤ò´üÂÔ¤·¤Æ¤¤¤Þ¤¹"
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:92 camel/camel-lock.c:111 camel/camel-movemail.c:138
-#: camel/camel-movemail.c:185
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "%s ¤Î¥í¥Ã¥¯¥Õ¥¡¥¤¥ë¤òºîÀ®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/camel-lock.c:151 camel/camel-movemail.c:219
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr ""
-"%s ¤Î¥í¥Ã¥¯¥Õ¥¡¥¤¥ë¤ò¼èÆÀÃæ¤Ë¥¿¥¤¥à¥¢¥¦¥È¤·¤Þ¤·¤¿. ¸å¤Ç¤ä¤êľ¤·¤Æ¤¯¤À¤µ¤¤"
-
-#: camel/camel-lock.c:201
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr "fcntl(2)¤ò»È¤Ã¤¿¥í¥Ã¥¯¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s"
-
-#: camel/camel-lock.c:255
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr "flock(2)¤ò»È¤Ã¤¿¥í¥Ã¥¯¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s"
-
-#: camel/camel-movemail.c:101
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr "¥á¡¼¥ë¥Õ¥¡¥¤¥ë %s ¤ò¥Á¥§¥Ã¥¯¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/camel-movemail.c:148
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr "¥á¡¼¥ë¥Õ¥¡¥¤¥ë %s ¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/camel-movemail.c:158
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr "¥á¡¼¥ë¥Õ¥¡¥¤¥ë %s ¤Î¥Æ¥ó¥Ý¥é¥ê¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/camel-movemail.c:199
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr "%s ¤Î¥í¥Ã¥¯¥Õ¥¡¥¤¥ë¤ò¥Æ¥¹¥È½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/camel-movemail.c:245
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr "¥á¡¼¥ë¥Õ¥¡¥¤¥ë¤ÎÆɤ߹þ¤ßÃæ¤Ë¥¨¥é¡¼: %s"
-
-#: camel/camel-movemail.c:256
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr "¥á¡¼¥ëºî¶È¥Õ¥¡¥¤¥ë¤Î½ñ¤­¹þ¤ßÃæ¤Ë¥¨¥é¡¼: %s"
-
-#: camel/camel-movemail.c:274
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr "ºî¶È¥Õ¥¡¥¤¥ë %s ¤Ø¥á¡¼¥ë¤ÎÊݸ¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s"
-
-#: camel/camel-movemail.c:306
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr "¥Ñ¥¤¥×¤¬ºîÀ®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/camel-movemail.c:318
-#, c-format
-msgid "Could not fork: %s"
-msgstr "fork ½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/camel-movemail.c:356
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr "Movemail ¥×¥í¥°¥é¥à¤Ï¼ºÇÔ¤·¤Þ¤·¤¿: %s"
-
-#: camel/camel-movemail.c:357
-msgid "(Unknown error)"
-msgstr "(̤ÃΤΥ¨¥é¡¼)"
-
-#: camel/camel-movemail.c:587
-#, c-format
-msgid "Error copying mail temp file: %s"
-msgstr "¥á¡¼¥ëºî¶È¥Õ¥¡¥¤¥ë¤Î¥³¥Ô¡¼Ãæ¤Ë¥¨¥é¡¼: %s"
-
-#: camel/camel-pgp-context.c:190
-#, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr "¤¢¤Ê¤¿¤Î %s ¥Ñ¥¹¥Õ¥ì¡¼¥º ( %s ÍÑ) ¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤"
-
-#: camel/camel-pgp-context.c:193
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr "¤¢¤Ê¤¿¤Î %s ¥Ñ¥¹¥Õ¥ì¡¼¥º¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤"
-
-#: camel/camel-pgp-context.c:511
-msgid "No plaintext to sign."
-msgstr "¥µ¥¤¥ó¤¹¤ë¤¿¤á¤Î¥×¥ì¥¤¥ó¥Æ¥­¥¹¥È¤¬¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/camel-pgp-context.c:518 camel/camel-pgp-context.c:690
-#: camel/camel-pgp-context.c:1057 camel/camel-pgp-context.c:1269
-msgid "No password provided."
-msgstr "Ä󶡤µ¤ì¤¿¥Ñ¥¹¥ï¡¼¥É¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/camel-pgp-context.c:524 camel/camel-pgp-context.c:696
-#: camel/camel-pgp-context.c:879 camel/camel-pgp-context.c:1064
-#: camel/camel-pgp-context.c:1276
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr "GPG/PGP ¤Ø¤Î¥Ñ¥¤¥×¤¬ºîÀ®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/camel-pgp-context.c:683
-msgid "No plaintext to clearsign."
-msgstr "¥¯¥ê¥¢¥µ¥¤¥ó¤¹¤ë¤¿¤á¤Î¥×¥ì¥¤¥ó¥Æ¥­¥¹¥È¤¬¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/camel-pgp-context.c:873
-msgid "No plaintext to verify."
-msgstr "¥Ù¥ê¥Õ¥¡¥¤¤¹¤ë¤¿¤á¤Î¥×¥ì¥¤¥ó¥Æ¥­¥¹¥È¤¬¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/camel-pgp-context.c:890
-#, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "ºî¶È¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/camel-pgp-context.c:1047
-msgid "No plaintext to encrypt."
-msgstr "Éä¹æ²½¤¹¤ë¤¿¤á¤Î¥×¥ì¥¤¥ó¥Æ¥­¥¹¥È¤¬¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/camel-pgp-context.c:1073
-msgid "No recipients specified"
-msgstr "¼õ¿®¼Ô¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó"
-
-#: camel/camel-pgp-context.c:1261
-msgid "No ciphertext to decrypt."
-msgstr "Éü¹æ²½¤¹¤ë¤¿¤á¤Î°Å¹æ¥Æ¥­¥¹¥È¤¬¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/camel-provider.c:131
-#, c-format
-msgid "Could not load %s: Module loading not supported on this system."
-msgstr ""
-"%s ¤òÆɤ߹þ¤à¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: "
-"¤³¤Î¥·¥¹¥Æ¥à¤Ç¤Ï¥â¥¸¥å¡¼¥ë¤ÎÆɤ߹þ¤ß¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó"
-
-#: camel/camel-provider.c:140
-#, c-format
-msgid "Could not load %s: %s"
-msgstr "%s ¤ò¥í¡¼¥É½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/camel-provider.c:148
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr "%s ¤ò¥í¡¼¥É½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: ¥â¥¸¥å¡¼¥ë¤Î¥³¡¼¥É¤¬½é´ü²½¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
-
-#: camel/camel-remote-store.c:191
-#, c-format
-msgid "%s server %s"
-msgstr "%s ¥µ¡¼¥Ð %s"
-
-#: camel/camel-remote-store.c:195
-#, c-format
-msgid "%s service for %s on %s"
-msgstr "%s ¥µ¡¼¥Ó¥¹ (¥æ¡¼¥¶: %s ¥Û¥¹¥È %s)"
-
-#: camel/camel-remote-store.c:252
-msgid "Connection cancelled"
-msgstr "Àܳ¤Ï¥­¥ã¥ó¥»¥ë¤·¤Þ¤·¤¿"
-
-#: camel/camel-remote-store.c:255
-#: camel/providers/smtp/camel-smtp-transport.c:269
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr "%s (¥Ý¡¼¥È %d) ¤ØÀܳ½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/camel-remote-store.c:256
-msgid "(unknown host)"
-msgstr "(̤ÃΤΥۥ¹¥È)"
-
-#: camel/camel-remote-store.c:337 camel/camel-remote-store.c:399
-#: camel/camel-remote-store.c:470
-#: camel/providers/imap/camel-imap-command.c:287
-msgid "Operation cancelled"
-msgstr "Áàºî¤Ï¥­¥ã¥ó¥»¥ë¤·¤Þ¤·¤¿"
-
-#: camel/camel-remote-store.c:476
-msgid "Server unexpectedly disconnected"
-msgstr "¥µ¡¼¥Ð¤ÏÆÍÁ³ÀÚÃǤ·¤Þ¤·¤¿"
-
-#: camel/camel-sasl-anonymous.c:33
-msgid "Anonymous"
-msgstr "ƿ̾"
-
-#: camel/camel-sasl-anonymous.c:35
-msgid "This option will connect to the server using an anonymous login."
-msgstr "¤³¤Î¥ª¥×¥·¥ç¥ó¤Ïƿ̾¥í¥°¥¤¥ó¤ò»È¤Ã¤Æ¥µ¡¼¥Ð¤ØÀܳ¤·¤Þ¤¹"
-
-#: camel/camel-sasl-anonymous.c:110 camel/camel-sasl-plain.c:87
-msgid "Authentication failed."
-msgstr "ǧ¾Ú¤Ë¼ºÇÔ¤·¤Þ¤·¤¿"
-
-#: camel/camel-sasl-anonymous.c:119
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-"̵¸ú¤Ê¥á¡¼¥ë¥¢¥É¥ì¥¹¥È¥ì¡¼¥¹¾ðÊó:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:131
-#, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr ""
-"̵¸ú¤ÇÉԲIJò¤Ê¥È¥ì¡¼¥¹¾ðÊó:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:143
-#, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr ""
-"̵¸ú¤Ê¥È¥ì¡¼¥¹¾ðÊó:\n"
-"%s"
-
-#: camel/camel-sasl-cram-md5.c:35
-msgid "CRAM-MD5"
-msgstr "CRAM-MD5"
-
-#: camel/camel-sasl-cram-md5.c:37
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-"¤â¤·¥µ¡¼¥Ð¤¬¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤Ê¤é, ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¥»¥­¥å¥¢¤Ê CRAM-MD5 "
-"ǧ¾Ú¤ò»È¤Ã¤Æ¥µ¡¼¥Ð¤ØÀܳ¤·¤Þ¤¹"
-
-#: camel/camel-sasl-digest-md5.c:43
-msgid "DIGEST-MD5"
-msgstr "DIGEST-MD5"
-
-#: camel/camel-sasl-digest-md5.c:45
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-"¤â¤·¥µ¡¼¥Ð¤¬¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤Ê¤é, ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¥»¥­¥å¥¢¤Ê DIGEST-MD5 "
-"¤ò»È¤Ã¤Æ¥µ¡¼¥Ð¤ËÀܳ¤·¤Þ¤¹"
-
-#: camel/camel-sasl-digest-md5.c:810
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr "Ť¹¤®¤Þ¤¹ (2048¥Ð¥¤¥È°Ê¾å¤Ç¤¹)\n"
-
-#: camel/camel-sasl-digest-md5.c:819
-msgid "Server challenge invalid\n"
-msgstr "̵¸ú¤Ç¤¹\n"
-
-#: camel/camel-sasl-digest-md5.c:825
-#, fuzzy
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr "̵¸ú¤Ê \"\" ¥È¡¼¥¯¥ó¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹\n"
-
-#: camel/camel-sasl-digest-md5.c:847
-msgid "Server response did not contain authorization data\n"
-msgstr "¥µ¡¼¥Ð¤Î±þÅú¤Ïǧ¾Ú¥Ç¡¼¥¿¤ò´Þ¤ó¤Ç¤¤¤Þ¤»¤ó\n"
-
-#: camel/camel-sasl-digest-md5.c:865
-msgid "Server response contained incomplete authorization data\n"
-msgstr "¥µ¡¼¥Ð¤Î±þÅú¤ÏÉÔ´°Á´¤Êǧ¾Ú¥Ç¡¼¥¿¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹\n"
-
-#: camel/camel-sasl-digest-md5.c:875
-msgid "Server response does not match\n"
-msgstr "¥µ¡¼¥Ð¤Î±þÅú¤Ï°ìÃפ·¤Þ¤»¤ó\n"
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "Kerberos 4"
-msgstr "Kerberos 4"
-
-#: camel/camel-sasl-kerberos4.c:42
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr "¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï Kerberos 4 ǧ¾Ú¤ò»È¤Ã¤Æ¥µ¡¼¥Ð¤ËÀܳ¤·¤Þ¤¹"
-
-#: camel/camel-sasl-kerberos4.c:161
-#, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr ""
-"Kerberos ¥Á¥±¥Ã¥È¤ò¼èÆÀ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿:\n"
-"%s"
-
-#: camel/camel-sasl-kerberos4.c:218
-#: camel/providers/imap/camel-imap-store.c:433
-msgid "Bad authentication response from server."
-msgstr "¥µ¡¼¥Ð¤«¤é´Ö°ã¤Ã¤¿Ç§¾Ú±þÅú¤¬¤¢¤ê¤Þ¤·¤¿"
-
-#: camel/camel-sasl-login.c:32
-msgid "NT Login"
-msgstr "NT ¥í¥°¥¤¥ó"
-
-#: camel/camel-sasl-login.c:34 camel/camel-sasl-plain.c:34
-msgid "This option will connect to the server using a simple password."
-msgstr "¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï´Êñ¤Ê¥Ñ¥¹¥ï¡¼¥É¤ò»È¤Ã¤Æ¥µ¡¼¥Ð¤ØÀܳ¤·¤Þ¤¹"
-
-#: camel/camel-sasl-login.c:127
-msgid "Unknown authentication state."
-msgstr ""
-
-#: camel/camel-search-private.c:111
-#, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr "Àµµ¬É½¸½¤ÎÊÔ½¸¤Ë¼ºÇÔ: %s: %s"
-
-#: camel/camel-service.c:154
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr "URL '%s' ¤Ï¥æ¡¼¥¶Ì¾¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬É¬ÍפǤ¹"
-
-#: camel/camel-service.c:162
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr "URL '%s' ¤Ï¥Û¥¹¥È¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬É¬ÍפǤ¹"
-
-#: camel/camel-service.c:170
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr "URL '%s' ¤Ï¥Ñ¥¹¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬É¬ÍפǤ¹"
-
-#: camel/camel-service.c:548
-#, c-format
-msgid "Resolving: %s"
-msgstr "²ò·èÃæ: %s"
-
-#: camel/camel-service.c:575
-#, c-format
-msgid "Failure in name lookup: %s"
-msgstr "̾Á°¤Î¸¡º÷¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s"
-
-#: camel/camel-service.c:600
-#, c-format
-msgid "Host lookup failed: %s: host not found"
-msgstr "¥Û¥¹¥È¤Î¸¡º÷¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s: ¥Û¥¹¥È¤Ï¸«¤Ä¤«¤ê¤Þ¤»¤ó"
-
-#: camel/camel-service.c:602
-#, c-format
-msgid "Host lookup failed: %s: unknown reason"
-msgstr "¥Û¥¹¥È¤Î¸¡º÷¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s: ̤ÃΤÎÍýͳ¤Ç¤¹"
-
-#: camel/camel-session.c:68
-msgid "Virtual folder email provider"
-msgstr "²¾ÁÛ¥Õ¥©¥ë¥À¥á¡¼¥ë¥×¥í¥Ð¥¤¥À"
-
-#: camel/camel-session.c:70
-msgid "For reading mail as a query of another set of folders"
-msgstr ""
-
-#: camel/camel-session.c:295 camel/camel-session.c:364
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr "¥×¥í¥È¥³¥ë `%s' ¤òÍøÍѤǤ­¤ë¥×¥í¥Ð¥¤¥À¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/camel-session.c:479
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®½ÐÍè¤Þ¤»¤ó:\n"
-"%s"
-
-#: camel/camel-smime-context.c:194
-#, c-format
-msgid "Please enter your password for %s"
-msgstr "%s ¤Î¤¿¤á¤Î¤¢¤Ê¤¿¤Î¥Ñ¥¹¥ï¡¼¥É¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤"
-
-#: camel/camel-smime-context.c:210
-msgid "Error hashing password."
-msgstr "¥Ñ¥¹¥ï¡¼¥É¤Î¥Ï¥Ã¥·¥å¤Ç¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿"
-
-#: camel/camel-smime-context.c:219
-msgid "Invalid password."
-msgstr "̵¸ú¤Ê¥Ñ¥¹¥ï¡¼¥É¤Ç¤¹"
-
-#: camel/camel-smime-context.c:327
-#, c-format
-msgid "Could not sign: certificate not found for \"%s\"."
-msgstr "½ð̾½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: \"%s\" ¤Î¤¿¤á¤Î¾ÚÌÀ½ñ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
-
-#: camel/camel-smime-context.c:343
-msgid "Could not sign: failed to create content info."
-msgstr "½ð̾½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: ¥³¥ó¥Æ¥­¥¹¥È¾ðÊó¤ÎºîÀ®¤Ë¼ºÇÔ¤·¤Þ¤·¤¿"
-
-#: camel/camel-smime-context.c:350
-msgid "Could not sign: failed to create signing context."
-msgstr "½ð̾½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: ¥³¥ó¥Æ¥­¥¹¥È¤Î½ð̾¤ÎºîÀ®¤Ë¼ºÇÔ¤·¤Þ¤·¤¿"
-
-#: camel/camel-smime-context.c:356
-msgid "Could not sign: failed to create signature."
-msgstr "½ð̾½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: ½ð̾¤ÎºîÀ®¤Ë¼ºÇÔ¤·¤Þ¤·¤¿"
-
-#: camel/camel-smime-context.c:383
-msgid "'clearsign' is not supported by S/MIME."
-msgstr "'¥¯¥ê¥¢¥µ¥¤¥ó' ¤Ï S/MIME ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó"
-
-#: camel/camel-smime-context.c:528
-msgid "Could not encrypt: failed to create enveloped data."
-msgstr "°Å¹æ²½½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: ¥¨¥ó¥Ù¥í¡¼¥×¥Ç¡¼¥¿¤ÎºîÀ®¤Ë¼ºÇÔ¤·¤Þ¤·¤¿"
-
-#: camel/camel-smime-context.c:535
-msgid "Could not encrypt: failed to create encryption context."
-msgstr "°Å¹æ²½½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: °Å¹æ¥³¥ó¥Æ¥­¥¹¥È¤ÎºîÀ®¤Ë¼ºÇÔ¤·¤Þ¤·¤¿"
-
-#: camel/camel-smime-context.c:570
-#, c-format
-msgid "Could not encrypt data: invalid user key: \"%s\"."
-msgstr "¥Ç¡¼¥¿¤ò°Å¹æ²½½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: ̵¸ú¤Ê¥æ¡¼¥¶¥­¡¼¤Ç¤¹: \"%s\""
-
-#: camel/camel-smime-context.c:576
-msgid "Could not encrypt: encoding failed."
-msgstr "°Å¹æ²½½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: Éä¹æ²½¤Ë¼ºÇÔ¤·¤Þ¤·¤¿"
-
-#: camel/camel-smime-context.c:626
-msgid "Failed to decrypt: Unknown"
-msgstr "Éü¹æ²½¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: ̤ÃΤΥ¨¥é¡¼¤Ç¤¹"
-
-#. Fill in the new fields
-#: camel/camel-store.c:378 mail/mail-ops.c:1007 mail/mail-ops.c:1014
-#: mail/mail-ops.c:1032 mail/mail-ops.c:1033
-msgid "Trash"
-msgstr "¤´¤ßÈ¢"
-
-#: camel/camel-tcp-stream-ssl.c:348
-#, c-format
-msgid ""
-"EMail: %s\n"
-"Common Name: %s\n"
-"Organization Unit: %s\n"
-"Organization: %s\n"
-"Locality: %s\n"
-"State: %s\n"
-"Country: %s"
-msgstr ""
-"¥á¡¼¥ë: %s\n"
-"¶¦ÄÌ̾: %s\n"
-"ÁÈ¿¥¥æ¥Ë¥Ã¥È: %s\n"
-"ÁÈ¿¥: %s\n"
-"¾ì½ê: %s\n"
-"½£: %s\n"
-"¹ñ: %s"
-
-#. construct our user prompt
-#: camel/camel-tcp-stream-openssl.c:428 camel/camel-tcp-stream-ssl.c:364
-#, c-format
-msgid ""
-"Bad certificate from %s:\n"
-"\n"
-"%s\n"
-"\n"
-"Do you wish to accept anyway?"
-msgstr ""
-"%s ¤«¤éµ¶¤Î¾ÚÌÀ½ñ¤Ç¤¹:\n"
-"\n"
-"%s\n"
-"\n"
-"¾µÂú¤ò˾¤ß¤Þ¤¹¤«?"
-
-#: camel/camel-tcp-stream-openssl.c:423
-#, c-format
-msgid ""
-"Issuer: %s\n"
-"Subject: %s"
-msgstr ""
-"ȯ¹Ô: %s\n"
-"ÂоÝ: %s"
-
-#: camel/camel-url.c:289
-#, c-format
-msgid "Could not parse URL `%s'"
-msgstr "URL `%s' ¤ò²òÀϤ¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: camel/camel-vee-folder.c:451
-#, c-format
-msgid "No such message %s in %s"
-msgstr "%s ¤Ë %s ¤Î¤è¤¦¤Ê¥á¥Ã¥»¡¼¥¸¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/camel-vee-folder.c:546
-#, c-format
-msgid "No such message: %s"
-msgstr "¤½¤Î¤è¤¦¤Ê¥á¥Ã¥»¡¼¥¸¤Ï¤¢¤ê¤Þ¤»¤ó: %s"
-
-#: camel/camel-vtrash-folder.c:109
-msgid "You cannot copy messages from this trash folder."
-msgstr "¤³¤Î¥´¥ßÈ¢¥Õ¥©¥ë¥À¤«¤é¥á¥Ã¥»¡¼¥¸¤ò¥³¥Ô¡¼¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó"
-
-#: camel/providers/imap/camel-imap-message-cache.c:150
-#, c-format
-msgid "Could not open cache directory: %s"
-msgstr "¥­¥ã¥Ã¥·¥å¥Ç¥£¥ì¥¯¥È¥ê¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/providers/imap/camel-imap-command.c:232
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "IMAP ¥µ¡¼¥Ð¤«¤éͽ´ü¤·¤Ê¤¤±þÅú¤¬¤¢¤ê¤Þ¤·¤¿: %s"
-
-#: camel/providers/imap/camel-imap-command.c:240
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr "IMAP ¥³¥Þ¥ó¥É¤Ï¼ºÇÔ¤·¤Þ¤·¤¿: %s"
-
-#: camel/providers/imap/camel-imap-command.c:241 shell/e-storage.c:481
-msgid "Unknown error"
-msgstr "̤ÃΤΥ¨¥é¡¼"
-
-#: camel/providers/imap/camel-imap-command.c:295
-msgid "Server response ended too soon."
-msgstr "¥µ¡¼¥Ð¥ì¥¹¥Ý¥ó¥¹¤Ï¤¢¤Ã¤±¤Ê¤¯½ª¤ï¤ê¤Þ¤·¤¿"
-
-#: camel/providers/imap/camel-imap-command.c:487
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr "IMAP ¥µ¡¼¥Ð¤Î±þÅú¤Ï %s ¾ðÊó¤ò´Þ¤ó¤Ç¤¤¤Þ¤»¤ó"
-
-#: camel/providers/imap/camel-imap-command.c:524
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr "IMAP ¥µ¡¼¥Ð¤«¤éͽ´ü¤·¤Ê¤¤ OK ±þÅú¤¬¤¢¤ê¤Þ¤·¤¿: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:172
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:191
-#, c-format
-msgid "Could not load summary for %s"
-msgstr "%s ¤Î¥µ¥Þ¥ê¡¼¤ò¥í¡¼¥É½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: camel/providers/imap/camel-imap-folder.c:364
-msgid "Scanning IMAP folder"
-msgstr "IMAP ¥Õ¥©¥ë¥À¤òÁöººÃæ"
-
-#: camel/providers/imap/camel-imap-folder.c:1047
-#: camel/providers/imap/camel-imap-folder.c:1281
-msgid "This message is not currently available"
-msgstr "¤³¤Î¥á¥Ã¥»¡¼¥¸¤Ï¸½ºßÍøÍѽÐÍè¤Þ¤»¤ó"
-
-#: camel/providers/imap/camel-imap-folder.c:1075
-#: camel/providers/imap/camel-imap-folder.c:1314
-msgid "Could not find message body in FETCH response."
-msgstr "FETCH ±þÅú¤Ë¥á¥Ã¥»¡¼¥¸ËÜÂΤò¸«ÉÕ¤±¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: camel/providers/imap/camel-imap-provider.c:43 mail/mail-config.glade.h:13
-msgid "Checking for new mail"
-msgstr "¿·Ãå¥á¡¼¥ë¤Î¥Á¥§¥Ã¥¯"
-
-#: camel/providers/imap/camel-imap-provider.c:45
-msgid "Check for new messages in all folders"
-msgstr "¤¹¤Ù¤Æ¤Î¥Õ¥©¥ë¥À¤Î¿·Ãå¥á¡¼¥ë¤ò¥Á¥§¥Ã¥¯¤·¤Þ¤¹"
-
-#: camel/providers/imap/camel-imap-provider.c:48 shell/e-shell-view.c:552
-msgid "Folders"
-msgstr "¥Õ¥©¥ë¥À"
-
-#: camel/providers/imap/camel-imap-provider.c:50
-msgid "Show only subscribed folders"
-msgstr "¹ØÆɤ·¤¿¥Õ¥©¥ë¥À¤À¤±É½¼¨"
-
-#: camel/providers/imap/camel-imap-provider.c:52
-msgid "Override server-supplied folder namespace"
-msgstr "¥µ¡¼¥Ð¤¬Ä󶡤¹¤ë¥Õ¥©¥ë¥À¤Î¥Í¡¼¥à¥¹¥Ú¡¼¥¹¤è¤êÍ¥À褹¤ë"
-
-#: camel/providers/imap/camel-imap-provider.c:54
-msgid "Namespace"
-msgstr "¥Í¡¼¥à¥¹¥Ú¡¼¥¹"
-
-#: camel/providers/imap/camel-imap-provider.c:57
-msgid "Apply filters to new messages in INBOX on this server"
-msgstr "¤³¤Î¥µ¡¼¥Ð¾å¤Î INBOX Æâ¤Ë¤¢¤ë¿·µ¬¥á¥Ã¥»¡¼¥¸¤Ø¥Õ¥£¥ë¥¿¤òŬÍѤ¹¤ë"
-
-#: camel/providers/imap/camel-imap-provider.c:63
-msgid "IMAPv4"
-msgstr "IMAPv4"
-
-#: camel/providers/imap/camel-imap-provider.c:65
-msgid "For reading and storing mail on IMAP servers."
-msgstr "IMAP ¥µ¡¼¥Ð¤Ç¥á¡¼¥ë¤òÆɤó¤À¤êÃßÀѤ¹¤ë¤¿¤á¤Î¤â¤Î¤Ç¤¹"
-
-#: camel/providers/imap/camel-imap-provider.c:82
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr ""
-"¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¥×¥ì¥¤¥ó¥Æ¥­¥¹¥È¥Ñ¥¹¥ï¡¼¥É¤ò»È¤Ã¤Æ IMAP ¥µ¡¼¥Ð¤ËÀܳ¤·¤Þ¤¹"
-
-#: camel/providers/imap/camel-imap-store.c:456
-#, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr "IMAP ¥µ¡¼¥Ð %s ¤ÏÍ׵ᤷ¤¿Ç§¾Ú¥¿¥¤¥× %s ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó"
-
-#: camel/providers/imap/camel-imap-store.c:466
-#: camel/providers/smtp/camel-smtp-transport.c:366
-#, c-format
-msgid "No support for authentication type %s"
-msgstr "ǧ¾Ú¥¿¥¤¥× %s ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó"
-
-#: camel/providers/imap/camel-imap-store.c:490
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr "%s %s@%s ¤Î IMAP ¥Ñ¥¹¥ï¡¼¥É¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤"
-
-#: camel/providers/imap/camel-imap-store.c:505
-#: camel/providers/smtp/camel-smtp-transport.c:410
-msgid "You didn't enter a password."
-msgstr "¥Ñ¥¹¥ï¡¼¥É¤òÆþÎϤ·¤Æ¤¤¤Þ¤»¤ó"
-
-#: camel/providers/imap/camel-imap-store.c:531
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"IMAP ¥µ¡¼¥Ð¤Øǧ¾Ú½ÐÍè¤Þ¤»¤ó\n"
-"%s\n"
-"\n"
-
-#: camel/providers/imap/camel-imap-store.c:803 mail/mail-local.c:334
-#, c-format
-msgid "No such folder %s"
-msgstr "¤½¤Î¤è¤¦¤Ê¥Õ¥©¥ë¥À %s ¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/providers/local/camel-local-provider.c:39
-msgid "MH-format mail directories"
-msgstr "MH ·Á¼°¤Î¥á¡¼¥ë¥Ç¥£¥ì¥¯¥È¥ê"
-
-#: camel/providers/local/camel-local-provider.c:40
-msgid "For storing local mail in MH-like mail directories"
-msgstr "MH¥é¥¤¥¯¤Ê¥á¡¼¥ë¥Ç¥£¥ì¥¯¥È¥ê¤Ë¥í¡¼¥«¥ë¥á¡¼¥ë¤òÊݸ¤·¤Þ¤¹"
-
-#: camel/providers/local/camel-local-provider.c:49
-msgid "Standard Unix mailbox file"
-msgstr "ɸ½àŪ¤Ê UNIX ¤Î mailbox ¥Õ¥¡¥¤¥ë"
-
-#: camel/providers/local/camel-local-provider.c:50
-msgid "For storing local mail in standard mbox format"
-msgstr "ɸ½à mbox ·¿¼°¤Ç¥í¡¼¥«¥ë¥á¡¼¥ë¤òÊݸ¤·¤Þ¤¹"
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "Qmail maildir-format mail files"
-msgstr "Qmail maildir·¿¼°¤Î¥á¡¼¥ë¥Õ¥¡¥¤¥ë"
-
-#: camel/providers/local/camel-local-provider.c:60
-msgid "For storing local mail in qmail maildir directories"
-msgstr "qmail maildir¥Ç¥£¥ì¥¯¥È¥ê¤Ë¥í¡¼¥«¥ë¥á¡¼¥ë¤òÊݸ¤·¤Þ¤¹"
-
-#: camel/providers/local/camel-local-store.c:127
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr "Êݸ¤µ¤ì¤¿¥ë¡¼¥È %s ¤ÏÀäÂХѥ¹¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/providers/local/camel-local-store.c:134
-#, c-format
-msgid "Store root %s is not a regular directory"
-msgstr "Êݸ¤µ¤ì¤¿¥ë¡¼¥È %s ¤ÏÄ̾ï¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/providers/local/camel-local-store.c:142
-#: camel/providers/local/camel-local-store.c:158
-#, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "¥Õ¥©¥ë¥À¤ò¼èÆÀ½ÐÍè¤Þ¤»¤ó: %s: %s"
-
-#: camel/providers/local/camel-local-store.c:173
-msgid "Local stores do not have an inbox"
-msgstr "¥í¡¼¥«¥ë¤Ø¤ÎÊݸ¤Ï inbox ¤ò»ý¤Æ¤Þ¤»¤ó"
-
-#: camel/providers/local/camel-local-store.c:183
-#, c-format
-msgid "Local mail file %s"
-msgstr "¥í¡¼¥«¥ë¥á¡¼¥ë¥Õ¥¡¥¤¥ë %s"
-
-#: camel/providers/local/camel-local-store.c:237
-#, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr "¥Õ¥©¥ë¥À¤ò %s ¤«¤é %s ¤Ø̾Á°Êѹ¹¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/providers/local/camel-local-store.c:279
-#, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr "¥Õ¥©¥ë¥À¤«¤é¥µ¥Þ¥ê¡¼¥Õ¥¡¥¤¥ë `%s' ¤òºï½ü¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/providers/local/camel-local-store.c:289
-#, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr ""
-"¥Õ¥©¥ë¥À¤«¤é¥¤¥ó¥Ç¥Ã¥¯¥¹¥Õ¥¡¥¤¥ë `%s' ¤òºï½ü¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/providers/local/camel-local-summary.c:404
-msgid "Unable to add message to summary: unknown reason"
-msgstr "¥µ¥Þ¥ê¤Ø¥á¥Ã¥»¡¼¥¸¤òÄɲ乤뤳¤È¤¬½ÐÍè¤Þ¤»¤ó: ̤ÃΤÎÍýͳ¤Ç¤¹"
-
-#: camel/providers/local/camel-maildir-folder.c:150
-#: camel/providers/local/camel-maildir-folder.c:158
-#: camel/providers/local/camel-maildir-folder.c:169
-#, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr "maildir ·Á¼°¤Î¥Õ¥©¥ë¥À¤Ø¥á¥Ã¥»¡¼¥¸¤òÄɲýÐÍè¤Þ¤»¤ó: %s: %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-maildir-folder.c:209
-#: camel/providers/local/camel-maildir-folder.c:217
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#: camel/providers/local/camel-mh-folder.c:194
-#: camel/providers/local/camel-mh-folder.c:202
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-"¥á¥Ã¥»¡¼¥¸¤ò¼èÆÀ½ÐÍè¤Þ¤»¤ó: %s\n"
-" %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-msgid "No such message"
-msgstr "¤½¤Î¤è¤¦¤Ê¥á¥Ã¥»¡¼¥¸¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/providers/local/camel-maildir-folder.c:218
-#: camel/providers/local/camel-mh-folder.c:203
-msgid "Invalid message contents"
-msgstr "¥á¥Ã¥»¡¼¥¸¤ÎÆâÍƤÏ̵¸ú¤Ç¤¹"
-
-#: camel/providers/local/camel-maildir-store.c:96
-#: camel/providers/local/camel-mh-store.c:90
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-"¥Õ¥©¥ë¥À `%s' ¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿:\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:100
-#: camel/providers/local/camel-mbox-store.c:101
-#: camel/providers/local/camel-mh-store.c:97
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr "¥Õ¥©¥ë¥À `%s' ¤Ï¸ºß¤·¤Þ¤»¤ó"
-
-#: camel/providers/local/camel-maildir-store.c:107
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-"¥Õ¥©¥ë¥À `%s' ¤òºîÀ®½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿:\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:122
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr "`%s' ¤Ï maildir ·Á¼°¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/providers/local/camel-maildir-store.c:151
-#: camel/providers/local/camel-maildir-store.c:188
-#: camel/providers/local/camel-mh-store.c:127
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr "¥Õ¥©¥ë¥À `%s' ¤òºï½ü¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/providers/local/camel-maildir-store.c:152
-msgid "not a maildir directory"
-msgstr "maildir ·Á¼°¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/providers/local/camel-maildir-summary.c:405
-#: camel/providers/local/camel-maildir-summary.c:526
-#, c-format
-msgid "Cannot open maildir directory path: %s: %s"
-msgstr "maildir ¥Ç¥£¥ì¥¯¥È¥ê¥Ñ¥¹¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤»¤ó: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:152
-#, c-format
-msgid "Cannot create folder lock on %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:203
-#, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr "mailbox¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤»¤ó: %s: %s\n"
-
-#: camel/providers/local/camel-mbox-folder.c:259
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr "mbox ¥Õ¥¡¥¤¥ë¤Ë¥á¥Ã¥»¡¼¥¸¤òÄɲýÐÍè¤Þ¤»¤ó: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:335
-#: camel/providers/local/camel-mbox-folder.c:367
-#: camel/providers/local/camel-mbox-folder.c:380
-#, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-"¥á¥Ã¥»¡¼¥¸ %s ¤ò¥Õ¥©¥ë¥À %s ¤«¤é¼èÆÀ½ÐÍè¤Þ¤»¤ó\n"
-" %s"
-
-#: camel/providers/local/camel-mbox-folder.c:368
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr "¥Õ¥©¥ë¥À¤Ç²óÉüÉÔǽ¤Ê¥¨¥é¡¼¤¬È¯À¸¤·¤¿¤è¤¦¤Ç¤¹"
-
-#: camel/providers/local/camel-mbox-folder.c:381
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr "¥á¥Ã¥»¡¼¥¸¤Î²ò¼á¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: ´Ö°ã¤Ã¤¿¥á¡¼¥ë¥Ü¥Ã¥¯¥¹¤Ç¤¹¤«?"
-
-#: camel/providers/local/camel-mbox-store.c:94
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-"¥Õ¥¡¥¤¥ë `%s' ¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿:\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:110
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-"¥Õ¥¡¥¤¥ë `%s' ¤òºîÀ®¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿:\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:119
-#: camel/providers/local/camel-mbox-store.c:146
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr "`%s' ¤ÏÄ̾ï¤Î¥Õ¥¡¥¤¥ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/providers/local/camel-mbox-store.c:138
-#: camel/providers/local/camel-mbox-store.c:161
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-"¥Õ¥©¥ë¥À `%s' ¤òºï½ü¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿:\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr "¥Õ¥©¥ë¥À `%s' ¤Ï¶õ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó. ºï½ü¤·¤Þ¤»¤ó"
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:249
-msgid "Summarising folder"
-msgstr "¥Õ¥©¥ë¥À¤ò¥µ¥Þ¥é¥¤¥ºÃæ"
-
-#: camel/providers/local/camel-mbox-summary.c:254
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr "¥Õ¥©¥ë¥À¤ò³«¤±¤Þ¤»¤ó¤Ç¤·¤¿: %s: ¥Ý¥¸¥·¥ç¥ó %ld ¤«¤é¥µ¥Þ¥é¥¤¥ºÃæ: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:296
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr "¥Ý¥¸¥·¥ç¥ó %ld ÉÕ¶á ¥Õ¥©¥ë¥À %s ¤ÇÃ×̿Ū¤Ê¥á¡¼¥ë¹½Ê¸²òÀÏ¥¨¥é¡¼¤Ç¤¹"
-
-#: camel/providers/local/camel-mbox-summary.c:371
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr "¥Õ¥©¥ë¥À¤ò¥µ¥Þ¥é¥¤¥º¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:502
-#: camel/providers/local/camel-mbox-summary.c:703 mail/mail-ops.c:1397
-msgid "Synchronising folder"
-msgstr "¥Õ¥©¥ë¥À¤òƱ´üÃæ"
-
-#: camel/providers/local/camel-mbox-summary.c:507
-#: camel/providers/local/camel-mbox-summary.c:708
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr "¥Õ¥©¥ë¥À¤ò¥µ¥Þ¥é¥¤¥º¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:524
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr "¥Æ¥ó¥Ý¥é¥ê mailbox ¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤»¤ó: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:549
-#: camel/providers/local/camel-mbox-summary.c:557
-#: camel/providers/local/camel-mbox-summary.c:746
-#: camel/providers/local/camel-mbox-summary.c:754
-msgid "Summary and folder mismatch, even after a sync"
-msgstr "Ʊ´ü¤·¤Þ¤·¤¿¤¬, ¥µ¥Þ¥ê¡¼¤È¥Õ¥©¥ë¥À¤¬ÉÔ°ìÃפǤ¹"
-
-#: camel/providers/local/camel-mbox-summary.c:600
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr "ºî¶È mailbox ¤Ø½ñ¤­½Ð¤·Ãæ¤Ë¥¨¥é¡¼: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:617
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr "ºî¶È mailbox ¤Ø½ñ¤­½Ð¤·Ãæ¤Ë¥¨¥é¡¼: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:635
-#: camel/providers/local/camel-mbox-summary.c:804
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr "¸µ¤Î¥Õ¥©¥ë¥À %s ¤òÊĤ¸¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:644
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr "ºî¶È¥Õ¥©¥ë¥À¤òÊĤ¸¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:655
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr "¥Õ¥©¥ë¥À¤ò¥ê¥Í¡¼¥à½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:879
-#, c-format
-msgid "Unknown error: %s"
-msgstr "̤ÃΤΥ¨¥é¡¼: %s"
-
-#: camel/providers/local/camel-mh-folder.c:149
-#: camel/providers/local/camel-mh-folder.c:157
-#, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr "mh ¥Õ¥©¥ë¥À¤Ø¥á¥Ã¥»¡¼¥¸¤òÄɲýÐÍè¤Þ¤»¤ó: %s: %s"
-
-#: camel/providers/local/camel-mh-store.c:110
-#, c-format
-msgid "`%s' is not a directory."
-msgstr "`%s' ¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/providers/local/camel-mh-summary.c:218
-#, c-format
-msgid "Cannot open MH directory path: %s: %s"
-msgstr "MH ¥Ç¥£¥ì¥¯¥È¥ê¥Ñ¥¹¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤»¤ó: %s: %s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:45
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr "%s@%s ¤Î NNTP ¥Ñ¥¹¥ï¡¼¥É¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤"
-
-#: camel/providers/nntp/camel-nntp-auth.c:66
-msgid "Server rejected username"
-msgstr "¥µ¡¼¥Ð¤Ï¥æ¡¼¥¶Ì¾¤òµñÈݤ·¤Þ¤·¤¿"
-
-#: camel/providers/nntp/camel-nntp-auth.c:72
-msgid "Failed to send username to server"
-msgstr "¥µ¡¼¥Ð¤Ø¥æ¡¼¥¶Ì¾¤ÎÁ÷¿®¤Ë¼ºÇÔ¤·¤Þ¤·¤¿"
-
-#: camel/providers/nntp/camel-nntp-auth.c:81
-msgid "Server rejected username/password"
-msgstr "¥µ¡¼¥Ð¤Ï¥æ¡¼¥¶Ì¾/¥Ñ¥¹¥ï¡¼¥É¤òµñÈݤ·¤Þ¤·¤¿"
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr "¥á¥Ã¥»¡¼¥¸ %s ¤Ï¸«ÉÕ¤«¤ê¤Þ¤»¤ó"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr "¥µ¡¼¥Ð¤«¤é¥°¥ë¡¼¥×¥ê¥¹¥È¤ò¼èÆÀ½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr "%s ¤Î¥°¥ë¡¼¥×¥ê¥¹¥È¥Õ¥¡¥¤¥ë¤ò¥í¡¼¥É½ÐÍè¤Þ¤»¤ó: %s"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr "%s ¤Î¥°¥ë¡¼¥×¥ê¥¹¥È¥Õ¥¡¥¤¥ë¤òÊݸ½ÐÍè¤Þ¤»¤ó: %s"
-
-#: camel/providers/nntp/camel-nntp-provider.c:42
-msgid "USENET news"
-msgstr "USENET news"
-
-#: camel/providers/nntp/camel-nntp-provider.c:44
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr "¤³¤ì¤Ï USENET ¤Î¥Ë¥å¡¼¥¹¥°¥ë¡¼¥×¤ØÁ÷¼õ¿®¤¹¤ë¤¿¤á¤Î¥×¥í¥Ð¥¤¥À¤Ç¤¹"
-
-#: camel/providers/nntp/camel-nntp-store.c:224
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr "¥Ë¥å¡¼¥¹¥µ¡¼¥Ð¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:286
-#, c-format
-msgid "USENET News via %s"
-msgstr "%s ·Ðͳ¤Î USENET News"
-
-#: camel/providers/nntp/camel-nntp-store.c:293
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-"¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¥×¥ì¥¤¥ó¥Æ¥­¥¹¥È¥Ñ¥¹¥ï¡¼¥É¤ò»È¤Ã¤Æ NNTP ¥µ¡¼¥Ð¤Çǧ¾Ú¤·¤Þ¤¹"
-
-#: camel/providers/nntp/camel-nntp-store.c:325
-#: camel/providers/nntp/camel-nntp-store.c:488
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr "%s ¤Î .newsrc ¥Õ¥¡¥¤¥ë¤òºîÀ®¤Þ¤¿¤Ï³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤»¤ó: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-msgid "Retrieving POP summary"
-msgstr "POP ¥µ¥Þ¥ê¤ò¼èÆÀÃæ"
-
-#: camel/providers/pop3/camel-pop3-folder.c:155
-#, c-format
-msgid "Could not check POP server for new messages: %s"
-msgstr "POP ¥µ¡¼¥Ð¤Ç¿·µ¬¥á¥Ã¥»¡¼¥¸¤ò¥Á¥§¥Ã¥¯¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:199
-msgid "Could not open folder: message listing was incomplete."
-msgstr "¥Õ¥©¥ë¥À¤ò³«¤±¤Þ¤»¤ó¤Ç¤·¤¿: ¥á¥Ã¥»¡¼¥¸¥ê¥¹¥È¤Ï̤´°À®¤Ç¤¹"
-
-#: camel/providers/pop3/camel-pop3-folder.c:292
-#, c-format
-msgid "No message with uid %s"
-msgstr "uid %s ¤Î¥á¥Ã¥»¡¼¥¸¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/providers/pop3/camel-pop3-folder.c:296
-#, c-format
-msgid "Retrieving POP message %d"
-msgstr "POP ¥á¥Ã¥»¡¼¥¸ %d ¤ò¼èÆÀÃæ"
-
-#: camel/providers/pop3/camel-pop3-folder.c:303
-#, c-format
-msgid "Could not fetch message: %s"
-msgstr "¥á¥Ã¥»¡¼¥¸¤ò¼è¤ê½Ð¤¹¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:320
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr "POP ¥µ¡¼¥Ð %s ¤«¤é¥á¥Ã¥»¡¼¥¸¤ò¼èÆÀ½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/providers/pop3/camel-pop3-provider.c:37
-msgid "Message storage"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:39
-msgid "Leave messages on server"
-msgstr "¥µ¡¼¥Ð¤Ë¥á¥Ã¥»¡¼¥¸¤ò»Ä¤¹"
-
-#: camel/providers/pop3/camel-pop3-provider.c:41
-#, c-format
-msgid "Delete after %s day(s)"
-msgstr "%s Æü¸å¤Ëºï½ü¤¹¤ë"
-
-#: camel/providers/pop3/camel-pop3-provider.c:48 mail/mail-config.glade.h:51
-msgid "POP"
-msgstr "POP"
-
-#: camel/providers/pop3/camel-pop3-provider.c:50
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-"POP ¥µ¡¼¥Ð¤ØÀܳ¤¹¤ë¤¿¤á¤Ë, POP ¥×¥í¥È¥³¥ë¤ÏÆÃÄê¤Î web "
-"¥á¡¼¥ë¥×¥í¥Ð¥¤¥À¤äÆȼ«¤Î¥á¡¼¥ë¥·¥¹¥Æ¥à¤«¤é E "
-"¥á¡¼¥ë¤ò¼õ¿®¤¹¤ë¤¿¤á¤Ë»È¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹"
-
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-"¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¥×¥ì¥¤¥ó¥Æ¥­¥¹¥È¤Î¥Ñ¥¹¥ï¡¼¥É¤ò»È¤Ã¤Æ POP ¥µ¡¼¥Ð¤ØÀܳ¤·¤Þ¤¹. "
-"¤³¤ì¤Ï¿¤¯¤Î POP ¥µ¡¼¥Ð¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤ë¥ª¥×¥·¥ç¥ó¤Ç¤¹"
-
-#: camel/providers/pop3/camel-pop3-provider.c:79
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-"¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï APOP ¥×¥í¥È¥³¥ë·Ðͳ¤Ç°Å¹æ²½¤µ¤ì¤¿¥Ñ¥¹¥ï¡¼¥É¤ò»È¤Ã¤Æ POP "
-"¥µ¡¼¥Ð¤ØÀܳ¤·¤Þ¤¹. ¤³¤ì¤Ï¸øÊ¿¤Ê¥µ¥Ý¡¼¥È¤òÍ׵᤹¤ë¥µ¡¼¥Ð¤Ç, "
-"¤¹¤Ù¤Æ¤Î¥æ¡¼¥¶¤¬Àµ¾ï¤ËÆ°ºî¤¹¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó."
-
-#: camel/providers/pop3/camel-pop3-provider.c:91
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr "¤³¤ì¤Ï POP ¥µ¡¼¥Ð¤ØÀܳ¤·, Kerberos 4 ǧ¾Ú¤ò»È¤¤¤Þ¤¹."
-
-#: camel/providers/pop3/camel-pop3-store.c:199
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr "KPOP ¥µ¡¼¥Ð¤Øǧ¾Ú½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:215
-#, c-format
-msgid "Could not connect to server: %s"
-msgstr "¥µ¡¼¥Ð¤ØÀܳ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:322
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr "%s ¤Î POP ¥µ¡¼¥Ð¤ØÀܳ½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: camel/providers/pop3/camel-pop3-store.c:361
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr "%s %s@%s ¤Î POP3 ¥Ñ¥¹¥ï¡¼¥É¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤"
-
-#: camel/providers/pop3/camel-pop3-store.c:379
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-"POP ¥µ¡¼¥Ð¤ØÀܳ½ÐÍè¤Þ¤»¤ó\n"
-"¥æ¡¼¥¶Ì¾¤ÎÁ÷¿®Ãæ¤Ë¥¨¥é¡¼: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:382
-#: camel/providers/pop3/camel-pop3-store.c:419
-msgid "(Unknown)"
-msgstr "(̤ÃÎ)"
-
-#: camel/providers/pop3/camel-pop3-store.c:409
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-"POP ¥µ¡¼¥Ð¤ØÀܳ½ÐÍè¤Þ¤»¤ó\n"
-"Í׵ᤷ¤¿Ç§¾Ú¼êÃʤϥµ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó"
-
-#: camel/providers/pop3/camel-pop3-store.c:417
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-"POP ¥µ¡¼¥Ð¤ØÀܳ¤Ç¤­¤Þ¤»¤ó\n"
-"¥Ñ¥¹¥ï¡¼¥É¤ÎÁ÷¿®Ãæ¤Ë¥¨¥é¡¼: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:484
-#, c-format
-msgid "No such folder `%s'."
-msgstr "¤½¤Î¤è¤¦¤Ê¥Õ¥©¥ë¥À `%s' ¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:37
-#: mail/mail-config.glade.h:67
-msgid "Sendmail"
-msgstr "Sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:39
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-"¥á¡¼¥ë¤òÇÛÁ÷¤¹¤ë¤¿¤á¤Ë¥í¡¼¥«¥ë¥·¥¹¥Æ¥à¤Î \"sendmail\" ¥×¥í¥°¥é¥à¤ØÅϤ·¤Þ¤¹"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:107
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr ""
-"sendmail ¤Ø¥Ñ¥¤¥×¤òºîÀ®½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s: ¥á¡¼¥ë¤ÏÁ÷¿®¤·¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:124
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr "sendmail ¤ò fork ½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s: ¥á¡¼¥ë¤ÏÁ÷¿®¤·¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:150
-#, c-format
-msgid "Could not send message: %s"
-msgstr "¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:163
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr "sendmail ¤Ï¥·¥°¥Ê¥ë %s ¤Ç½ªÎ»¤·¤Þ¤·¤¿: ¥á¡¼¥ë¤ÏÁ÷¿®¤·¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:170
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr "%s ¤ò¼Â¹Ô½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: ¥á¡¼¥ë¤ÏÁ÷¿®¤·¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:175
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr "sendmail ¤Ï¥¹¥Æ¡¼¥¿¥¹ %d ¤Ç½ªÎ»¤·¤Þ¤·¤¿: ¥á¡¼¥ë¤ÏÁ÷¿®¤·¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:194
-msgid "Could not find 'From' address in message"
-msgstr "¥á¥Ã¥»¡¼¥¸¤Ë 'From' ¥¢¥É¥ì¥¹¤ò¸«¤Ä¤±¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "sendmail"
-msgstr "sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:249
-msgid "Mail delivery via the sendmail program"
-msgstr "sendmail ·Ðͳ¤Ç¥á¡¼¥ë¤òÇÛ¿®"
-
-#: camel/providers/smtp/camel-smtp-provider.c:38 mail/mail-config.glade.h:62
-msgid "SMTP"
-msgstr "SMTP"
-
-#: camel/providers/smtp/camel-smtp-provider.c:40
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr "SMTP¤ò»È¤Ã¤Æ¥ê¥â¡¼¥È¥á¡¼¥ë¥Ï¥Ö¤ËÀܳ¤¹¤ë¤³¤È¤Ç¥á¡¼¥ë¤òÇÛ¿®¤·¤Þ¤¹\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:168
-msgid "Syntax error, command unrecognized"
-msgstr "¹½Ê¸²òÀÏ¥¨¥é¡¼, ¥³¥Þ¥ó¥É¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/providers/smtp/camel-smtp-transport.c:170
-msgid "Syntax error in parameters or arguments"
-msgstr "¥Ñ¥é¥á¡¼¥¿¤¢¤ë¤¤¤Ï°ú¿ô¤Ë¹½Ê¸²òÀÏ¥¨¥é¡¼"
-
-#: camel/providers/smtp/camel-smtp-transport.c:172
-msgid "Command not implemented"
-msgstr "¥³¥Þ¥ó¥É¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
-
-#: camel/providers/smtp/camel-smtp-transport.c:174
-msgid "Command parameter not implemented"
-msgstr "¥³¥Þ¥ó¥É¥Ñ¥é¥á¡¼¥¿¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
-
-#: camel/providers/smtp/camel-smtp-transport.c:176
-msgid "System status, or system help reply"
-msgstr "¥·¥¹¥Æ¥à¥¹¥Æ¡¼¥¿¥¹¤¢¤ë¤¤¤Ï¥·¥¹¥Æ¥à¥Ø¥ë¥×±þÅú"
-
-#: camel/providers/smtp/camel-smtp-transport.c:178
-msgid "Help message"
-msgstr "¥Ø¥ë¥×¥á¥Ã¥»¡¼¥¸"
-
-#: camel/providers/smtp/camel-smtp-transport.c:180
-msgid "Service ready"
-msgstr "¥µ¡¼¥Ó¥¹¤ÏÍøÍѤǤ­¤Þ¤¹"
-
-#: camel/providers/smtp/camel-smtp-transport.c:182
-msgid "Service closing transmission channel"
-msgstr "¥µ¡¼¥Ó¥¹¤ÏÁ÷¿®¥Á¥ã¥ó¥Í¥ë¤òÊĤ¸¤Æ¤¤¤Þ¤¹"
-
-#: camel/providers/smtp/camel-smtp-transport.c:184
-msgid "Service not available, closing transmission channel"
-msgstr "¥µ¡¼¥Ó¥¹¤ÏÍøÍѤǤ­¤Þ¤»¤ó, Á÷¿®¥Á¥ã¥ó¥Í¥ë¤òÊĤ¸¤Æ¤¤¤Þ¤¹"
-
-#: camel/providers/smtp/camel-smtp-transport.c:186
-msgid "Requested mail action okay, completed"
-msgstr "Í׵ᤵ¤ì¤¿¥á¡¼¥ë¤ÎÆ°ºî¤ÏOK, ´°Î»¤·¤Þ¤·¤¿"
-
-#: camel/providers/smtp/camel-smtp-transport.c:188
-msgid "User not local; will forward to <forward-path>"
-msgstr "¥æ¡¼¥¶¤Ï¥í¡¼¥«¥ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó; <forward-path> ¤ØžÁ÷¤·¤Þ¤¹"
-
-#: camel/providers/smtp/camel-smtp-transport.c:190
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr "Í׵ᤵ¤ì¤¿¥á¡¼¥ë¤ÎÆ°ºî¤Ï´°Î»¤·¤Þ¤»¤ó: ¥á¡¼¥ë¥Ü¥Ã¥¯¥¹¤ÏÍøÍѤǤ­¤Þ¤»¤ó"
-
-#: camel/providers/smtp/camel-smtp-transport.c:192
-msgid "Requested action not taken: mailbox unavailable"
-msgstr "Í׵ᤵ¤ì¤¿Æ°ºî¤Ï´°Î»¤·¤Þ¤»¤ó: ¥á¡¼¥ë¥Ü¥Ã¥¯¥¹¤ÏÍøÍѤǤ­¤Þ¤»¤ó"
-
-#: camel/providers/smtp/camel-smtp-transport.c:194
-msgid "Requested action aborted: error in processing"
-msgstr "Í׵ᤵ¤ì¤¿Æ°ºî¤òÃæÃǤ·¤Þ¤·¤¿: ½èÍýÃæ¤Ë¥¨¥é¡¼"
-
-#: camel/providers/smtp/camel-smtp-transport.c:196
-msgid "User not local; please try <forward-path>"
-msgstr "¥æ¡¼¥¶¤Ï¥í¡¼¥«¥ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó; <forward-path> ¤ò»î¤·¤Æ¤¯¤À¤µ¤¤"
-
-#: camel/providers/smtp/camel-smtp-transport.c:198
-msgid "Requested action not taken: insufficient system storage"
-msgstr "Í׵ᤵ¤ì¤¿Æ°ºî¤Ï´°Î»¤·¤Þ¤»¤ó: ¥·¥¹¥Æ¥à¤ÎÊݸÎΰ褬­¤ê¤Þ¤»¤ó"
-
-#: camel/providers/smtp/camel-smtp-transport.c:200
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr "Í׵ᤵ¤ì¤¿¥á¡¼¥ë¤ÎÆ°ºî¤òÃæÃǤ·¤Þ¤·¤¿: Îΰè³ä¤êÅö¤Æ¤ò±Û¤¨¤Þ¤·¤¿"
-
-#: camel/providers/smtp/camel-smtp-transport.c:202
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr "Í׵ᤵ¤ì¤¿Æ°ºî¤Ï´°Î»¤·¤Þ¤»¤ó: ¥á¡¼¥ë¥Ü¥Ã¥¯¥¹Ì¾¤Ïǧ¤á¤é¤ì¤Þ¤»¤ó"
-
-#: camel/providers/smtp/camel-smtp-transport.c:204
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr "¥á¡¼¥ë¤ÎÆþÎϤò³«»Ï¤·¤Þ¤¹; <CRLF>.<CRLF> ¤Ç½ªÎ»¤·¤Þ¤¹"
-
-#: camel/providers/smtp/camel-smtp-transport.c:206
-msgid "Transaction failed"
-msgstr "½èÍý¤Ï¼ºÇÔ¤·¤Þ¤·¤¿"
-
-#: camel/providers/smtp/camel-smtp-transport.c:210
-msgid "A password transition is needed"
-msgstr "¥Ñ¥¹¥ï¡¼¥É¤ÎÊѹ¹¤¬É¬ÍפǤ¹"
-
-#: camel/providers/smtp/camel-smtp-transport.c:212
-msgid "Authentication mechanism is too weak"
-msgstr "ǧ¾Ú¥á¥«¥Ë¥º¥à¤ÏÉÔ½½Ê¬²á¤®¤Þ¤¹"
-
-#: camel/providers/smtp/camel-smtp-transport.c:214
-msgid "Encryption required for requested authentication mechanism"
-msgstr "Í׵ᤷ¤¿Ç§¾Ú¥á¥«¥Ë¥º¥à¤Î¤¿¤á¤Ë°Å¹æ²½¤¬É¬ÍפǤ¹"
-
-#: camel/providers/smtp/camel-smtp-transport.c:216
-msgid "Temporary authentication failure"
-msgstr "°ì»þŪ¤Êǧ¾Ú¤Ë¼ºÇÔ¤·¤Þ¤·¤¿"
-
-#: camel/providers/smtp/camel-smtp-transport.c:218
-msgid "Authentication required"
-msgstr "ǧ¾Ú¤òɬÍפȤ·¤Æ¤¤¤Þ¤¹"
-
-#: camel/providers/smtp/camel-smtp-transport.c:313
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr "½é´ü±þÅú¥¨¥é¡¼: %s: ¤¿¤Ö¤óÃ×̿Ū¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/providers/smtp/camel-smtp-transport.c:356
-#, c-format
-msgid "SMTP server %s does not support requested authentication type %s"
-msgstr "SMTP ¥µ¡¼¥Ð %s ¤ÏÍ׵ᤷ¤¿Ç§¾Ú¥¿¥¤¥× %s ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó"
-
-#: camel/providers/smtp/camel-smtp-transport.c:395
-#, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr "%s %s@%s ¤Î SMTP ¥Ñ¥¹¥ï¡¼¥É¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤"
-
-#: camel/providers/smtp/camel-smtp-transport.c:418
-#, c-format
-msgid ""
-"Unable to authenticate to SMTP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"SMTP ¥µ¡¼¥Ð¤Ëǧ¾Ú½ÐÍè¤Þ¤»¤ó\n"
-"%s\n"
-"\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:534
-#, c-format
-msgid "SMTP server %s"
-msgstr "SMTP ¥µ¡¼¥Ð %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:536
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr "%s ·Ðͳ¤Ç SMTP ¥á¡¼¥ë¤òÇÛ¿®¤·¤Þ¤¹"
-
-#: camel/providers/smtp/camel-smtp-transport.c:561
-msgid "Cannot send message: sender address not defined."
-msgstr "¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®½ÐÍè¤Þ¤»¤ó: Á÷¿®¼Ô¤Î¥¢¥É¥ì¥¹¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
-
-#: camel/providers/smtp/camel-smtp-transport.c:568
-msgid "Cannot send message: sender address not valid."
-msgstr "¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®½ÐÍè¤Þ¤»¤ó: Á÷¿®¼Ô¤Î¥¢¥É¥ì¥¹¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/providers/smtp/camel-smtp-transport.c:582
-msgid "Cannot send message: no recipients defined."
-msgstr "¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®½ÐÍè¤Þ¤»¤ó: ¼õ¿®¼Ô¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
-
-#: camel/providers/smtp/camel-smtp-transport.c:676
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr "HELO Í×µá¤Î¥¿¥¤¥à¥¢¥¦¥È: %s: Ã×̿Ū¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/providers/smtp/camel-smtp-transport.c:695
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr "HELO ¥ì¥¹¥Ý¥ó¥¹¥¨¥é¡¼: %s: Ã×̿Ū¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/providers/smtp/camel-smtp-transport.c:728
-msgid "Error creating SASL authentication object."
-msgstr "SASL ǧ¾Ú¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ¸À®Ãæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿"
-
-#: camel/providers/smtp/camel-smtp-transport.c:743
-#: camel/providers/smtp/camel-smtp-transport.c:755
-#, c-format
-msgid "AUTH request timed out: %s"
-msgstr "AUTH Í×µá¤Î¥¿¥¤¥à¥¢¥¦¥È: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:764
-msgid "AUTH request failed."
-msgstr "AUTH Í×µá¤Ë¼ºÇÔ¤·¤Þ¤·¤¿"
-
-#: camel/providers/smtp/camel-smtp-transport.c:809
-msgid "Bad authentication response from server.\n"
-msgstr "¥µ¡¼¥Ð¤«¤é´Ö°ã¤Ã¤¿Ç§¾Ú±þÅú¤¬¤¢¤ê¤Þ¤·¤¿\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:835
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr "MAIL FROM Í×µá¤Î¥¿¥¤¥à¥¢¥¦¥È: %s: ¥á¡¼¥ë¤ÏÁ÷¿®¤·¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: camel/providers/smtp/camel-smtp-transport.c:854
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr "MAIL FROM ¥ì¥¹¥Ý¥ó¥¹¥¨¥é¡¼: %s: ¥á¡¼¥ë¤ÏÁ÷¿®¤·¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: camel/providers/smtp/camel-smtp-transport.c:879
-#, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr "RCPT TO Í×µá¤Î¥¿¥¤¥à¥¢¥¦¥È: %s: ¥á¡¼¥ë¤ÏÁ÷¿®¤·¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: camel/providers/smtp/camel-smtp-transport.c:898
-#, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr "RCPT TO ¥ì¥¹¥Ý¥ó¥¹¥¨¥é¡¼: %s: ¥á¡¼¥ë¤ÏÁ÷¿®¤·¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: camel/providers/smtp/camel-smtp-transport.c:929
-#, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr "DATA Í×µá¤Î¥¿¥¤¥à¥¢¥¦¥È: %s: ¥á¡¼¥ë¤ÏÁ÷¿®¤·¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: camel/providers/smtp/camel-smtp-transport.c:948
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr "DATA ¥ì¥¹¥Ý¥ó¥¹¥¨¥é¡¼: %s: ¥á¡¼¥ë¤ÏÁ÷¿®¤·¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: camel/providers/smtp/camel-smtp-transport.c:963
-#: camel/providers/smtp/camel-smtp-transport.c:981
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr ""
-"DATA Á÷¿®¤Î¥¿¥¤¥à¥¢¥¦¥È: ¥á¥Ã¥»¡¼¥¸¤Î½ªÎ»: %s: ¥á¡¼¥ë¤ÏÁ÷¿®¤·¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1000
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr ""
-"DATA ¥ì¥¹¥Ý¥ó¥¹¥¨¥é¡¼: ¥á¥Ã¥»¡¼¥¸¤Î½ªÎ»: %s: ¥á¡¼¥ë¤ÏÁ÷¿®¤·¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1024
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr "RSET Í×µá¤Î¥¿¥¤¥à¥¢¥¦¥È: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1043
-#, c-format
-msgid "RSET response error: %s"
-msgstr "RSET ¥ì¥¹¥Ý¥ó¥¹¥¨¥é¡¼: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1066
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr "QUIT Í×µá¤Î¥¿¥¤¥à¥¢¥¦¥È: %s: Ã×̿Ū¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1085
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr "QUIT ¥ì¥¹¥Ý¥ó¥¹¥¨¥é¡¼: %s: Ã×̿Ū¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: composer/e-msg-composer-attachment-bar.c:95
-msgid "1 byte"
-msgstr "1 ¥Ð¥¤¥È"
-
-#: composer/e-msg-composer-attachment-bar.c:97
-#, c-format
-msgid "%u bytes"
-msgstr "%u ¥Ð¥¤¥È"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fK"
-
-#: composer/e-msg-composer-attachment-bar.c:108
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fM"
-
-#: composer/e-msg-composer-attachment-bar.c:112
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fG"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:332 mail/mail-display.c:122
-msgid "attachment"
-msgstr "źÉÕ"
-
-#: composer/e-msg-composer-attachment-bar.c:421
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr "¥Õ¥¡¥¤¥ë¤òźÉÕ¤·¤Þ¤¹"
-
-#: composer/e-msg-composer-attachment-bar.c:469
-msgid "Remove selected items from the attachment list"
-msgstr "źÉÕʪ¥ê¥¹¥È¤«¤éÁªÂò¤·¤¿¥¢¥¤¥Æ¥à¤òºï½ü¤·¤Þ¤¹"
-
-#: composer/e-msg-composer-attachment-bar.c:500
-msgid "Add attachment..."
-msgstr "źÉÕ¤ÎÄɲÃ..."
-
-#: composer/e-msg-composer-attachment-bar.c:501
-msgid "Attach a file to the message"
-msgstr "¥á¥Ã¥»¡¼¥¸¤Ø¥Õ¥¡¥¤¥ë¤òźÉÕ¤·¤Þ¤¹"
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/mail-config.glade.h:9
-#: mail/message-list.c:1081
-msgid "Attachment"
-msgstr "źÉÕ"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr "źÉդΥץí¥Ñ¥Æ¥£"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr "¥Õ¥¡¥¤¥ë̾:"
-
-#: composer/e-msg-composer-attachment.glade.h:5
-msgid "Inline attachment"
-msgstr "¥¤¥ó¥é¥¤¥ó¤ÇźÉÕ"
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr "MIME ¥¿¥¤¥×:"
-
-#: composer/e-msg-composer-attachment.glade.h:7
-msgid "Send as:"
-msgstr "Á÷¿®Àè:"
-
-#: composer/e-msg-composer.c:546
-#, c-format
-msgid ""
-"This version of Evolution was not built with support for S/MIME.\n"
-"You may wish to instead use PGP to %s your document."
-msgstr ""
-
-#: composer/e-msg-composer.c:548
-msgid "sign and encrypt"
-msgstr "½ð̾¤È°Å¹æ²½"
-
-#: composer/e-msg-composer.c:549
-msgid "sign"
-msgstr "½ð̾"
-
-#: composer/e-msg-composer.c:549
-msgid "encrypt"
-msgstr "°Å¹æ²½"
-
-#: composer/e-msg-composer.c:601
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-"½ð̾¥Õ¥¡¥¤¥ë %s ¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿:\n"
-"%s"
-
-#: composer/e-msg-composer.c:774
-msgid "Save as..."
-msgstr "ÊÌ̾¤ÇÊݸ..."
-
-#: composer/e-msg-composer.c:785
-#, c-format
-msgid "Error saving file: %s"
-msgstr "¥Õ¥¡¥¤¥ë¤ÎÊݸÃæ¤Ë¥¨¥é¡¼: %s"
-
-#: composer/e-msg-composer.c:805
-#, c-format
-msgid "Error loading file: %s"
-msgstr "¥Õ¥¡¥¤¥ë¤Î¥í¡¼¥ÉÃæ¤Ë¥¨¥é¡¼: %s"
-
-#: composer/e-msg-composer.c:877
-msgid ""
-"Unable to open the drafts folder for this account.\n"
-"Would you like to use the default drafts folder?"
-msgstr ""
-"¤³¤Î¥¢¥«¥¦¥ó¥È¤ÎÁð°Æ¥Õ¥©¥ë¥À¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤»¤ó\n"
-"¥Ç¥Õ¥©¥ë¥È¤ÎÁð°Æ¥Õ¥©¥ë¥À¤ò»È¤Ã¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?"
-
-#: composer/e-msg-composer.c:935 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:224
-msgid "Evolution"
-msgstr "Evolution"
-
-#: composer/e-msg-composer.c:941
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-"¤³¤Î¥á¥Ã¥»¡¼¥¸¤ÏÁ÷¿®¤·¤Æ¤¤¤Þ¤»¤ó\n"
-"\n"
-"Êѹ¹¤òÊݸ¤·¤Þ¤¹¤«?"
-
-#: composer/e-msg-composer.c:966
-msgid "Open file"
-msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤¯"
-
-#: composer/e-msg-composer.c:1092
-msgid "That file does not exist."
-msgstr "¤½¤Î¥Õ¥¡¥¤¥ë¤Ï¸ºß¤·¤Þ¤»¤ó"
-
-#: composer/e-msg-composer.c:1102
-msgid "That is not a regular file."
-msgstr "¤½¤ì¤ÏÄ̾ï¤Î¥Õ¥¡¥¤¥ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: composer/e-msg-composer.c:1112
-msgid "That file exists but is not readable."
-msgstr "¤½¤Î¥Õ¥¡¥¤¥ë¤Ï¸ºß¤·¤Þ¤¹¤¬¡¤Æɤ߼è¤ê²Äǽ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: composer/e-msg-composer.c:1122
-msgid "That file appeared accesible but open(2) failed."
-msgstr "¤½¤Î¥Õ¥¡¥¤¥ë¤Ï¥¢¥¯¥»¥¹²Äǽ¤Î¤è¤¦¤Ë¸«¤¨¤Þ¤¹¤¬¡¤open(2) ¤Ï¼ºÇÔ¤·¤Þ¤·¤¿"
-
-#: composer/e-msg-composer.c:1144
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-"¥Õ¥¡¥¤¥ë¤Ï¤È¤Æ¤âÂ礭¤¤ (100K °Ê¾å) ¤Ç¤¹\n"
-"ËÜÅö¤Ë¤½¤ì¤òÁÞÆþ¤¹¤ë¤³¤È¤ò˾¤ß¤Þ¤¹¤«?"
-
-#: composer/e-msg-composer.c:1165
-msgid "An error occurred while reading the file."
-msgstr "¥Õ¥¡¥¤¥ëÆɹþÃæ¤Î´Ö¤Ë¥¨¥é¡¼¤ÏȯÀ¸¤·¤Þ¤·¤¿"
-
-#: composer/e-msg-composer.c:1526 composer/e-msg-composer.c:1871
-msgid "Compose a message"
-msgstr "¥á¥Ã¥»¡¼¥¸¤òºîÀ®¤·¤Þ¤¹"
-
-#: composer/e-msg-composer.c:1962
-msgid "Could not create composer window."
-msgstr "¥á¡¼¥ëºîÀ®¥¦¥£¥ó¥É¥¦¤òºîÀ®½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: composer/e-msg-composer-hdrs.c:324
-msgid "Click here for the address book"
-msgstr "¥¢¥É¥ì¥¹Ä¢¤Î¤¿¤á¤Ë¤³¤³¤Ç¥¯¥ê¥Ã¥¯"
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:355
-msgid "From:"
-msgstr "º¹½Ð¿Í:"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:361
-msgid "Reply-To:"
-msgstr "ÊÖ¿®Àè:"
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:372
-msgid "Subject:"
-msgstr "·ï̾:"
-
-#: composer/e-msg-composer-hdrs.c:386
-msgid "To:"
-msgstr "°¸Àè:"
-
-#: composer/e-msg-composer-hdrs.c:387
-msgid "Enter the recipients of the message"
-msgstr "¥á¥Ã¥»¡¼¥¸¤Î¼õ¿®¼Ô¤òÆþÎϤ·¤Þ¤¹"
-
-#: composer/e-msg-composer-hdrs.c:390
-msgid "Cc:"
-msgstr "Cc:"
-
-#: composer/e-msg-composer-hdrs.c:391
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "¥á¥Ã¥»¡¼¥¸¤Î¥«¡¼¥Ü¥ó¥³¥Ô¡¼¤ò¼õ¿®¤¹¤ë¥¢¥É¥ì¥¹¤òÆþÎϤ·¤Þ¤¹"
-
-#: composer/e-msg-composer-hdrs.c:394
-msgid "Bcc:"
-msgstr "Bcc:"
-
-#: composer/e-msg-composer-hdrs.c:395
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"¥á¥Ã¥»¡¼¥¸¤Î¼õ¿®¼Ô¥ê¥¹¥È¤ÎÃæ¤Ë¸½¤ì¤Ê¤¤¤Ç, "
-"¥á¥Ã¥»¡¼¥¸¤Î¥«¡¼¥Ü¥ó¥³¥Ô¡¼¤ò¼õ¿®¤¹¤ë¥¢¥É¥ì¥¹¤òÆþÎϤ·¤Þ¤¹"
-
-#: composer/evolution-composer.c:355
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-"¥á¡¼¥ë¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ë¤Þ¤À¹½À®¤µ¤ì¤Æ¤¤¤Ê¤¤¤¿¤á\n"
-"¥á¥Ã¥»¡¼¥¸ºîÀ®¥¦¥£¥ó¥É¥¦¤òºîÀ®¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: composer/evolution-composer.c:370
-msgid "Cannot initialize Evolution's composer."
-msgstr "Evolution ¥á¡¼¥ëºîÀ®¤Î½é´ü²½¤¬½ÐÍè¤Þ¤»¤ó"
-
-#: data/evolution.desktop.in.h:2
-msgid "The Evolution groupware suite"
-msgstr "Evolution ¥°¥ë¡¼¥×¥¦¥§¥¢¥¹¥¤¡¼¥È"
-
-#: data/evolution.keys.in.h:1
-msgid "address card"
-msgstr "¥¢¥É¥ì¥¹¥«¡¼¥É"
-
-#: data/evolution.keys.in.h:2
-msgid "calendar information"
-msgstr "¥«¥ì¥ó¥À¾ðÊó"
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:69 e-util/e-time-utils.c:117
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:477
-#: widgets/misc/e-dateedit.c:1284 widgets/misc/e-dateedit.c:1465
-msgid "%m/%d/%Y"
-msgstr "%Y/%m/%d"
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:87 e-util/e-time-utils.c:198
-msgid "%I:%M:%S %p%n"
-msgstr "%I:%M:%S %p%n"
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:90 e-util/e-time-utils.c:201
-msgid "%H:%M:%S%n"
-msgstr "%H:%M:%S%n"
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:94 e-util/e-time-utils.c:205
-msgid "%I:%M %p%n"
-msgstr "%I:%M %p%n"
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:97 e-util/e-time-utils.c:208
-msgid "%H:%M%n"
-msgstr "%H:%M%n"
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:269
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:473
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2505
-msgid "%a %m/%d/%Y"
-msgstr "%Y/%m/%d (%a)"
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:274
-msgid "%a %m/%d/%Y %H:%M"
-msgstr "%Y/%m/%d (%a) %H:%M"
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:283
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr "%Y/%m/%d (%a) %p %I:%M"
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:312 widgets/misc/e-dateedit.c:1259
-#: widgets/misc/e-dateedit.c:1318 widgets/misc/e-dateedit.c:1497
-msgid "%H:%M"
-msgstr "%H:%M"
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:315
-msgid "%H:%M:%S"
-msgstr "%H:%M:%S"
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:320 widgets/misc/e-dateedit.c:1262
-#: widgets/misc/e-dateedit.c:1321 widgets/misc/e-dateedit.c:1500
-msgid "%I:%M %p"
-msgstr "%p %I:%M"
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:323
-msgid "%I:%M:%S %p"
-msgstr "%I:%M:%S %p"
-
-#: executive-summary/component/component-factory.c:152
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr "Evolution ¼Â¹Ô¥µ¥Þ¥ê¡¼¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î½é´ü²½¤¬½ÐÍè¤Þ¤»¤ó"
-
-#: executive-summary/component/e-summary.c:926
-#, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"HTML ¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤»¤ó:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:940
-#, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr ""
-"¥Ç¡¼¥¿±Ó¤ß¹þ¤ßÃæ¤Ë¥¨¥é¡¼:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:958
-msgid "File does not have a place for the services.\n"
-msgstr "¥Õ¥¡¥¤¥ë¤Ï¥µ¡¼¥Ó¥¹¤Î¾ì½ê¤ò»ý¤Ã¤Æ¤¤¤Þ¤»¤ó\n"
-
-#: executive-summary/component/e-summary-callbacks.c:126
-msgid "Select a service"
-msgstr "¥µ¡¼¥Ó¥¹¤òÁªÂò"
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-"¼Â¹Ô¥µ¥Þ¥ê¡¼¤ÎÇØ·ÊËè¤ËÊÌ¡¹¤ÎHTML¥Ú¡¼¥¸¤òÁªÂò¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹\n"
-"\n"
-"¥Ç¥Õ¥©¥ë¥È¤Ï¶õÇò¤Ç¤¹"
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr "¥Ç¥Õ¥©¥ë¥È¤ÎGNOME¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç %s ¤ò³«¤¯"
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr "¥Ç¥Õ¥©¥ë¥È¤ÎGNOME¥¦¥§¥Ö¥Ö¥é¥¦¥¶¤Ç %s ¤ò³«¤¯"
-
-#: executive-summary/component/e-summary-url.c:71
-#, c-format
-msgid "Send an email to %s"
-msgstr "%s ¤«¤é¥á¡¼¥ë¤òÁ÷¿®"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr "%s ¤Ø¥Ó¥å¡¼¤òÊѹ¹"
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr "%s ¤ò¼Â¹Ô"
-
-#: executive-summary/component/e-summary-url.c:75
-#, c-format
-msgid "Close %s"
-msgstr "%s ¤òÊĤ¸¤ë"
-
-#: executive-summary/component/e-summary-url.c:76
-#, c-format
-msgid "Move %s to the left"
-msgstr "º¸¤Ø %s ¤ò°ÜÆ°"
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr "±¦¤Ø %s ¤ò°ÜÆ°"
-
-#: executive-summary/component/e-summary-url.c:78
-#, c-format
-msgid "Move %s into the previous row"
-msgstr "Á°¤ÎÎó¤ÎÃæ¤Ø %s ¤ò°ÜÆ°"
-
-#: executive-summary/component/e-summary-url.c:79
-#, c-format
-msgid "Move %s into the next row"
-msgstr "¼¡¤ÎÎó¤ÎÃæ¤Ø %s ¤ò°ÜÆ°"
-
-#: executive-summary/component/e-summary-url.c:80
-#, c-format
-msgid "Configure %s"
-msgstr "%s ¤ÎÀßÄê"
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr "³°´Ñ"
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr "ÇØ·Ê:"
-
-#: executive-summary/component/main.c:62
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-"¼Â¹Ô¥µ¥Þ¥ê¡¼¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ï Bonobo ¤ò½é´ü²½½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿\n"
-"¤â¤· RootPOA ¤Ë¤Ä¤¤¤Æ¤Î·Ù¹ð¥á¥Ã¥»¡¼¥¸¤¬¤¢¤ë¤Ê¤é¡¤¤¿¤Ö¤ó OAF ¤ÎÂå¤ï¤ê¤Ë\n"
-"GOAD ¤ò»È¤Ã¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤¿¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹"
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-msgid "Evolution component for the executive summary."
-msgstr "¼Â¹Ô¥µ¥Þ¥ê¤Î¤¿¤á¤Î Evolution ¥³¥ó¥Ý¡¼¥Í¥ó¥È"
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-msgid "Factory for the Evolution executive summary component."
-msgstr "Evolution ¼Â¹Ô¥µ¥Þ¥ê¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¤¿¤á¤Î¥Õ¥¡¥¯¥È¥ê"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr "RDF ¥µ¥Þ¥ê¤Î¤¿¤á¤Î¥Õ¥¡¥¯¥È¥ê"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-msgid "RDF Summary"
-msgstr "RDF ¥µ¥Þ¥ê"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-msgid "Factory for the test bonobo component."
-msgstr "¥Æ¥¹¥È Bonobo ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¤¿¤á¤Î¥Õ¥¡¥¯¥È¥ê"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-msgid "Factory for the test component."
-msgstr "¥Æ¥¹¥È¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¤¿¤á¤Î¥Õ¥¡¥¯¥È¥ê"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr "¥Æ¥¹¥È Bonobo ¥µ¡¼¥Ó¥¹"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr "¥Æ¥¹¥È¥µ¡¼¥Ó¥¹"
-
-#: executive-summary/test-service/rdf-summary.c:512
-#: executive-summary/test-service/rdf-summary.c:549
-#: executive-summary/test-service/rdf-summary.c:594
-#: widgets/misc/e-messagebox.c:166
-msgid "Error"
-msgstr "¥¨¥é¡¼"
-
-#: executive-summary/test-service/rdf-summary.c:775
-msgid "Update automatically"
-msgstr "¼«Æ°Åª¤Ë¹¹¿·"
-
-#: executive-summary/test-service/rdf-summary.c:785
-msgid "Update now"
-msgstr "º£¤¹¤°¹¹¿·"
-
-#: executive-summary/test-service/rdf-summary.c:795
-msgid "Update every "
-msgstr "¤¹¤Ù¤Æ¹¹¿· "
-
-#: executive-summary/test-service/rdf-summary.c:806
-#: filter/filter-datespec.c:83
-msgid "minutes"
-msgstr "ʬ"
-
-#: filter/filter-datespec.c:78
-msgid "year"
-msgstr "ǯ"
-
-#: filter/filter-datespec.c:78
-msgid "years"
-msgstr "ǯ"
-
-#: filter/filter-datespec.c:79
-msgid "month"
-msgstr "·î"
-
-#: filter/filter-datespec.c:79
-msgid "months"
-msgstr "·î"
-
-#: filter/filter-datespec.c:80
-msgid "week"
-msgstr "½µ"
-
-#: filter/filter-datespec.c:80
-msgid "weeks"
-msgstr "½µ"
-
-#: filter/filter-datespec.c:81
-msgid "days"
-msgstr "Æü"
-
-#: filter/filter-datespec.c:82
-msgid "hour"
-msgstr "»þ"
-
-#: filter/filter-datespec.c:82
-msgid "hours"
-msgstr "»þ"
-
-#: filter/filter-datespec.c:83
-msgid "minute"
-msgstr "ʬ"
-
-#: filter/filter-datespec.c:84
-msgid "second"
-msgstr " ÉÃ"
-
-#: filter/filter-datespec.c:84
-msgid "seconds"
-msgstr " ÉÃ"
-
-#: filter/filter-datespec.c:199
-msgid "Oops. You have forgotten to choose a date."
-msgstr "ÆüÉÕ¤ÎÁªÂò¤ò˺¤ì¤Æ¤¤¤Þ¤¹"
-
-#: filter/filter-datespec.c:201
-msgid "Oops. You have chosen an invalid date."
-msgstr "̵¸ú¤ÊÆüÉÕ¤òÁªÂò¤·¤Æ¤¤¤Þ¤¹"
-
-#: filter/filter-datespec.c:276
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-"¥Õ¥£¥ë¥¿¤¬¼Â¹Ô¤µ¤ì¤ë¡¤¤Þ¤¿¤Ï²¾ÁÛ¥Õ¥©¥ë¥À¤¬\n"
-"³«¤«¤ì¤ë»þ¡¤¥á¥Ã¥»¡¼¥¸¤ÎÆüÉդϤɤó¤Ê»þ´Ö¤Ë\n"
-"ÂФ·¤Æ¤Ç¤âÈæ³Ó¤µ¤ì¤ë¤Ç¤·¤ç¤¦"
-
-#: filter/filter-datespec.c:299
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-"¥á¥Ã¥»¡¼¥¸¤ÎÆüÉդϤ³¤³¤Ç»ØÄꤹ¤ë»þ´Ö¤ËÂФ·¤Æ\n"
-"Èæ³Ó¤µ¤ì¤ë¤Ç¤·¤ç¤¦"
-
-#: filter/filter-datespec.c:339
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-"¥á¥Ã¥»¡¼¥¸¤ÎÆüÉդϥե£¥ë¥¿¤¬¼Â¹Ô¤µ¤ì¤ë»þ¤È\n"
-"´ØÏ¢¤·¤Æ¤¤¤ë»þ´Ö¤ËÂФ·¤ÆÈæ³Ó¤µ¤ì¤ë¤Ç¤·¤ç¤¦;\n"
-"Î㤨¤Ð¡¤\"°ì½µ´ÖÁ°\""
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:374
-msgid "the current time"
-msgstr "¸½ºß»þ¹ï"
-
-#: filter/filter-datespec.c:374
-msgid "a time you specify"
-msgstr "»ØÄꤹ¤ë»þ´Ö"
-
-#: filter/filter-datespec.c:375
-msgid "a time relative to the current time"
-msgstr "¸½ºß»þ¹ï¤Ø¤ÎÁêÂлþ´Ö"
-
-#. The label
-#: filter/filter-datespec.c:433
-msgid "Compare against"
-msgstr "µÕÈæ³Ó"
-
-#: filter/filter-datespec.c:550 filter/filter-datespec.c:710
-msgid "now"
-msgstr "º£"
-
-#: filter/filter-datespec.c:707
-msgid "<click here to select a date>"
-msgstr "<ÆüÉÕ¤òÁªÂò¤¹¤ë¤¿¤á¤Ë¤³¤³¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤>"
-
-#: filter/filter-editor.c:132 filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr "¥Õ¥£¥ë¥¿¥ë¡¼¥ë"
-
-#. and now for the action area
-#: filter/filter-filter.c:452
-msgid "Then"
-msgstr "¤½¤Î·ë²Ì"
-
-#: filter/filter-filter.c:466
-msgid "Add action"
-msgstr "Æ°ºî¤òÄɲÃ"
-
-#: filter/filter-folder.c:147
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-"¥Õ¥©¥ë¥À¤ÎÁªÂò¤ò˺¤ì¤Æ¤¤¤Þ¤¹\n"
-"Ìá¤Ã¤Æ¥á¡¼¥ë¤òÇÛÁ÷¤¹¤ëÍ­¸ú¤Ê¥Õ¥©¥ë¥À¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤"
-
-#: filter/filter-folder.c:225 filter/vfolder-rule.c:285
-#: mail/mail-account-gui.c:682
-msgid "Select Folder"
-msgstr "¥Õ¥©¥ë¥À¤òÁªÂò"
-
-#: filter/filter-folder.c:250
-msgid "Enter folder URI"
-msgstr "¥Õ¥©¥ë¥À URI ¤ÎÆþÎÏ"
-
-#: filter/filter-folder.c:296
-msgid "<click here to select a folder>"
-msgstr "<¥Õ¥©¥ë¥À¤òÁªÂò¤¹¤ë¤¿¤á¤Ë¤³¤³¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤>"
-
-#: filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr "¥Õ¥£¥ë¥¿¤òÊÔ½¸"
-
-#: filter/filter.glade.h:5
-msgid "Edit VFolders"
-msgstr "²¾ÁÛ¥Õ¥©¥ë¥À¤ÎÊÔ½¸"
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr "ÆþÎÏ"
-
-#: filter/filter.glade.h:8
-msgid "Outgoing"
-msgstr "½ÐÎÏ"
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:130
-msgid "Virtual Folders"
-msgstr "²¾ÁÛ¥Õ¥©¥ë¥À"
-
-#: filter/filter.glade.h:11
-msgid "specific folders only"
-msgstr "»ØÄê¥Õ¥©¥ë¥À¤À¤±"
-
-#: filter/filter.glade.h:12
-msgid "vFolder Sources"
-msgstr "²¾ÁÛ¥Õ¥©¥ë¥À¤Î¥½¡¼¥¹"
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr "¤¹¤Ù¤Æ¤ÎÍ­¸ú¤Ê¥ê¥â¡¼¥È¥Õ¥©¥ë¥À"
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr "¤¹¤Ù¤Æ¤Î¥í¡¼¥«¥ë¤ÈÍ­¸ú¤Ê¥ê¥â¡¼¥È¥Õ¥©¥ë¥À"
-
-#: filter/filter.glade.h:15
-msgid "with all local folders"
-msgstr "¤¹¤Ù¤Æ¤Î¥í¡¼¥«¥ë¥Õ¥©¥ë¥À"
-
-#: filter/filter-input.c:193
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-"Àµµ¬É½¸½ '%s' ¤Ç¥¨¥é¡¼¤Ç¤¹:\n"
-"%s"
-
-#: filter/filter-part.c:488
-msgid "Test"
-msgstr "¥Æ¥¹¥È"
-
-#: filter/filter-rule.c:626
-msgid "Rule name: "
-msgstr "¥ë¡¼¥ë̾: "
-
-#: filter/filter-rule.c:630
-msgid "Untitled"
-msgstr "¥¿¥¤¥È¥ë¤Ê¤·"
-
-#: filter/filter-rule.c:646
-msgid "If"
-msgstr "¤â¤·"
-
-#: filter/filter-rule.c:664
-msgid "Execute actions"
-msgstr "¼¡¤Î¾ò·ï¤ÇÆ°ºî¤ò¼Â¹Ô:"
-
-#: filter/filter-rule.c:668
-msgid "if all criteria are met"
-msgstr "¤¹¤Ù¤Æ¤Î´ð½à¤¬¹ç¤Ã¤¿»þ"
-
-#: filter/filter-rule.c:673
-msgid "if any criteria are met"
-msgstr "¤¤¤¯¤Ä¤«¤Î´ð½à¤¬¹ç¤Ã¤¿»þ"
-
-#: filter/filter-rule.c:684
-msgid "Add criterion"
-msgstr "´ð½à¤òÄɲÃ"
-
-#: filter/filter-rule.c:770
-msgid "incoming"
-msgstr "ÆþÎÏ"
-
-#: filter/filter-rule.c:770
-msgid "outgoing"
-msgstr "½ÐÎÏ"
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Colour"
-msgstr ""
-
-#: filter/libfilter-i18n.h:4
-msgid "Assign Score"
-msgstr ""
-
-#: filter/libfilter-i18n.h:5
-msgid "Attachments"
-msgstr "źÉÕ"
-
-#: filter/libfilter-i18n.h:7
-msgid "contains"
-msgstr "¤¬¼¡¤Î¤â¤Î¤ò´Þ¤à"
-
-#: filter/libfilter-i18n.h:8
-msgid "Copy to Folder"
-msgstr "¥Õ¥©¥ë¥À¤Ø¥³¥Ô¡¼"
-
-#: filter/libfilter-i18n.h:9
-msgid "Date received"
-msgstr "¼õ¿®Æü"
-
-#: filter/libfilter-i18n.h:10
-msgid "Date sent"
-msgstr "Á÷¿®Æü"
-
-#: filter/libfilter-i18n.h:12
-msgid "Deleted"
-msgstr "ºï½ü"
-
-#: filter/libfilter-i18n.h:13
-msgid "does not contain"
-msgstr "¤¬¼¡¤Î¤â¤Î¤ò´Þ¤Þ¤Ê¤¤"
-
-#: filter/libfilter-i18n.h:14
-msgid "does not end with"
-msgstr "¤¬¼¡¤Î¤â¤Î¤Ç½ª¤é¤Ê¤¤"
-
-#: filter/libfilter-i18n.h:15
-msgid "does not exist"
-msgstr "¤¬Â¸ºß¤·¤Ê¤¤"
-
-#: filter/libfilter-i18n.h:16
-msgid "does not sound like"
-msgstr "¤¬¼¡¤Î¤â¤Î¤Î¤è¤¦¤Ç¤Ê¤¤"
-
-#: filter/libfilter-i18n.h:17
-msgid "does not start with"
-msgstr "¤¬¼¡¤Î¤â¤Î¤Ç»Ï¤Þ¤é¤Ê¤¤"
-
-#: filter/libfilter-i18n.h:18
-msgid "Do Not Exist"
-msgstr "¤¬Â¸ºß¤·¤Ê¤¤"
-
-#: filter/libfilter-i18n.h:19
-msgid "Draft"
-msgstr "Áð°Æ"
-
-#: filter/libfilter-i18n.h:20
-msgid "ends with"
-msgstr "¤¬¼¡¤Î¤â¤Î¤Ç½ª¤ï¤ë"
-
-#: filter/libfilter-i18n.h:21
-msgid "Exist"
-msgstr "¤¬Â¸ºß¤¹¤ë"
-
-#: filter/libfilter-i18n.h:22
-msgid "exists"
-msgstr "¤¬Â¸ºß¤¹¤ë"
-
-#: filter/libfilter-i18n.h:23
-msgid "Expression"
-msgstr "ɽ¸½"
-
-#: filter/libfilter-i18n.h:24
-msgid "Forward to Address"
-msgstr "¥¢¥É¥ì¥¹¤ØžÁ÷"
-
-#: filter/libfilter-i18n.h:25
-msgid "Important"
-msgstr "½ÅÍ×"
-
-#: filter/libfilter-i18n.h:26
-msgid "is"
-msgstr "¤¬¼¡¤Î¤â¤Î¤È°ìÃפ¹¤ë"
-
-#: filter/libfilter-i18n.h:27
-msgid "is greater than"
-msgstr "¤¬¼¡¤Î¤â¤Î¤è¤êÂ礭¤¤"
-
-#: filter/libfilter-i18n.h:28
-msgid "is less than"
-msgstr "¤¬¼¡¤Î¤â¤Î¤è¤ê¾®¤µ¤¤"
-
-#: filter/libfilter-i18n.h:29
-msgid "is not"
-msgstr "¤¬¼¡¤Î¤â¤Î¤Ç¤Ï¤Ê¤¤"
-
-#: filter/libfilter-i18n.h:30
-msgid "Mailing list"
-msgstr "¥á¡¼¥ê¥ó¥°¥ê¥¹¥È"
-
-#: filter/libfilter-i18n.h:31
-msgid "Message Body"
-msgstr "¥á¥Ã¥»¡¼¥¸ËÜÂÎ"
-
-#: filter/libfilter-i18n.h:32
-msgid "Message Header"
-msgstr "¥á¥Ã¥»¡¼¥¸¥Ø¥Ã¥À"
-
-#: filter/libfilter-i18n.h:33
-msgid "Message was received"
-msgstr "¼õ¿®¤·¤¿¥á¥Ã¥»¡¼¥¸"
-
-#: filter/libfilter-i18n.h:34
-msgid "Message was sent"
-msgstr "Á÷¿®¤·¤¿¥á¥Ã¥»¡¼¥¸"
-
-#: filter/libfilter-i18n.h:35
-msgid "Move to Folder"
-msgstr "¥Õ¥©¥ë¥À¤Ø°ÜÆ°"
-
-#: filter/libfilter-i18n.h:36
-msgid "on or after"
-msgstr ""
-
-#: filter/libfilter-i18n.h:37
-msgid "on or before"
-msgstr ""
-
-#: filter/libfilter-i18n.h:38
-msgid "Read"
-msgstr "´ûÆÉ"
-
-#: filter/libfilter-i18n.h:39
-msgid "Recipients"
-msgstr "¼õ¿®¼Ô"
-
-#: filter/libfilter-i18n.h:40
-msgid "Regex Match"
-msgstr "Àµµ¬É½¸½¤È°ìÃ×"
-
-#: filter/libfilter-i18n.h:41
-msgid "Replied to"
-msgstr ""
-
-#: filter/libfilter-i18n.h:42 filter/score-rule.c:204 filter/score-rule.c:206
-#: mail/message-list.c:1081
-msgid "Score"
-msgstr "µ­Ï¿"
-
-#: filter/libfilter-i18n.h:43
-msgid "Sender"
-msgstr "Á÷¿®¼Ô"
-
-#: filter/libfilter-i18n.h:44
-msgid "Set Status"
-msgstr "¥¹¥Æ¡¼¥¿¥¹ÀßÄê"
-
-#: filter/libfilter-i18n.h:45
-msgid "sounds like"
-msgstr "¤¬¼¡¤Î¤â¤Î¤Î¤è¤¦¤Ë¸«¤¨¤ë"
-
-#: filter/libfilter-i18n.h:46
-msgid "Source Account"
-msgstr "¥½¡¼¥¹¥¢¥«¥¦¥ó¥È"
-
-#: filter/libfilter-i18n.h:47
-msgid "Specific header"
-msgstr "»ØÄê¤Î¥Ø¥Ã¥À"
-
-#: filter/libfilter-i18n.h:48
-msgid "starts with"
-msgstr "¤¬¼¡¤Î¤â¤Î¤Ç³«»Ï¤¹¤ë"
-
-#: filter/libfilter-i18n.h:50
-msgid "Stop Processing"
-msgstr "½èÍýÄä»ß"
-
-#: filter/libfilter-i18n.h:51 mail/mail-format.c:767 mail/message-list.c:1082
-msgid "Subject"
-msgstr "·ï̾"
-
-#: filter/libfilter-i18n.h:52
-msgid "was after"
-msgstr "¤¬¼¡¤Î¤â¤Î¤è¤ê¸å"
-
-#: filter/libfilter-i18n.h:53
-msgid "was before"
-msgstr "¤¬¼¡¤Î¤â¤Î¤è¤êÁ°"
-
-#: filter/rule-editor.c:147
-msgid "Rules"
-msgstr "¥ë¡¼¥ë"
-
-#: filter/rule-editor.c:240
-msgid "Add Rule"
-msgstr "¥ë¡¼¥ë¤òÄɲÃ"
-
-#: filter/rule-editor.c:299
-msgid "Edit Rule"
-msgstr "¥ë¡¼¥ë¤òÊÔ½¸"
-
-#: filter/score-editor.c:130
-msgid "Score Rules"
-msgstr "¥¹¥³¥¢¥ë¡¼¥ë"
-
-#: importers/elm-importer.c:512 importers/netscape-importer.c:780
-#: importers/pine-importer.c:646 shell/e-shell-importer.c:655
-#: shell/importer/import.glade.h:4
-msgid "Import"
-msgstr "¥¤¥ó¥Ý¡¼¥È"
-
-#: importers/elm-importer.c:517 importers/netscape-importer.c:785
-#: importers/pine-importer.c:651
-msgid "Mail"
-msgstr "¥á¡¼¥ë"
-
-#: importers/elm-importer.c:521
-msgid "Elm Aliases"
-msgstr "Elm ¥¨¥¤¥ê¥¢¥¹"
-
-#: importers/elm-importer.c:528 importers/netscape-importer.c:807
-#: importers/pine-importer.c:668
-msgid "Don't ask me again"
-msgstr "¤³¤Î¥á¥Ã¥»¡¼¥¸¤òÆóÅÙ¤Èɽ¼¨¤·¤Ê¤¤"
-
-#: importers/elm-importer.c:561
-msgid ""
-"Evolution has found Elm mail files\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-"Evolution ¤Ï Elm ¥á¡¼¥ë¥Õ¥¡¥¤¥ë¤òȯ¸«¤·¤Þ¤·¤¿\n"
-"Evolution ¤Ø¥¤¥ó¥Ý¡¼¥È¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?"
-
-#: importers/elm-importer.c:579
-msgid "Elm mail"
-msgstr "Elm ¥á¡¼¥ë"
-
-#: importers/netscape-importer.c:790 importers/pine-importer.c:656
-msgid "Settings"
-msgstr "ÀßÄê"
-
-#: importers/netscape-importer.c:795 mail/mail-callbacks.c:1359
-msgid "Filters"
-msgstr "¥Õ¥£¥ë¥¿"
-
-#: importers/netscape-importer.c:800
-msgid "Addressbooks"
-msgstr "¥¢¥É¥ì¥¹Ä¢"
-
-#: importers/netscape-importer.c:847
-msgid ""
-"Evolution has found Netscape mail files.\n"
-"Would you like them to be imported into Evolution?"
-msgstr ""
-"Evolution ¤Ï Netscape ¥á¡¼¥ë¥Õ¥¡¥¤¥ë¤òȯ¸«¤·¤Þ¤·¤¿\n"
-"Evolution ¤Ø¥¤¥ó¥Ý¡¼¥È¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?"
-
-#: importers/pine-importer.c:661
-msgid "Addressbook"
-msgstr "¥¢¥É¥ì¥¹Ä¢"
-
-#: importers/pine-importer.c:705
-msgid ""
-"Evolution has found Pine mail files.\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-"Evolution ¤Ï Pine ¥á¡¼¥ë¥Õ¥¡¥¤¥ë¤òȯ¸«¤·¤Þ¤·¤¿\n"
-"Evolution ¤Ø¥¤¥ó¥Ý¡¼¥È¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?"
-
-#: importers/pine-importer.c:723
-msgid "Pine mail"
-msgstr "Pine ¥á¡¼¥ë"
-
-#: mail/component-factory.c:337
-msgid "Cannot initialize Evolution's mail component."
-msgstr "Evolution ¥á¡¼¥ë¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î½é´ü²½¤¬½ÐÍè¤Þ¤»¤ó"
-
-#: mail/component-factory.c:410
-msgid "Cannot register storage with shell"
-msgstr "¥·¥§¥ë¤Ç¥¹¥È¥ì¡¼¥¸¤òÅÐÏ¿½ÐÍè¤Þ¤»¤ó"
-
-#: mail/folder-browser.c:329
-msgid "Store search as vFolder"
-msgstr ""
-
-#: mail/folder-browser.c:653
-msgid "VFolder on _Subject"
-msgstr "·ï̾¤Î²¾ÁÛ¥Õ¥©¥ë¥À(_S)"
-
-#: mail/folder-browser.c:656
-msgid "VFolder on Se_nder"
-msgstr "Á÷¿®¼Ô¤Î²¾ÁÛ¥Õ¥©¥ë¥À(_n)"
-
-#: mail/folder-browser.c:659
-msgid "VFolder on _Recipients"
-msgstr "¼õ¿®¼Ô¤Î²¾ÁÛ¥Õ¥©¥ë¥À(_R)"
-
-#: mail/folder-browser.c:662
-msgid "VFolder on Mailing _List"
-msgstr "¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Î²¾ÁÛ¥Õ¥©¥ë¥À(_L)"
-
-#: mail/folder-browser.c:668
-msgid "Filter on Sub_ject"
-msgstr "·ï̾¤Î¥Õ¥£¥ë¥¿(_j)"
-
-#: mail/folder-browser.c:671
-msgid "Filter on Sen_der"
-msgstr "Á÷¿®¼Ô¤Î¥Õ¥£¥ë¥¿(_d)"
-
-#: mail/folder-browser.c:674
-msgid "Filter on Re_cipients"
-msgstr "¼õ¿®¼Ô¤Î¥Õ¥£¥ë¥¿(_c)"
-
-#: mail/folder-browser.c:677
-msgid "Filter on _Mailing List"
-msgstr "¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Î¥Õ¥£¥ë¥¿(_M)"
-
-#: mail/folder-browser.c:686
-msgid "_Open"
-msgstr "³«¤¯(_O)"
-
-#: mail/folder-browser.c:688
-msgid "Resend"
-msgstr "ºÆÁ÷¿®"
-
-#: mail/folder-browser.c:690 ui/evolution-calendar.xml.h:43
-#: ui/evolution-mail.xml.h:118 ui/evolution-tasks.xml.h:8
-msgid "_Save As..."
-msgstr "ÊÌ̾¤ÇÊݸ(_S)..."
-
-#: mail/folder-browser.c:692 ui/evolution-event-editor.xml.h:69
-#: ui/evolution-task-editor-dialog.xml.h:82 ui/evolution-tasks.xml.h:7
-msgid "_Print"
-msgstr "°õºþ(_P)"
-
-#: mail/folder-browser.c:697 ui/evolution-mail.xml.h:117
-msgid "_Reply to Sender"
-msgstr "Á÷¿®¼Ô¤ØÊÖ¿®(_R)"
-
-#: mail/folder-browser.c:699 ui/evolution-mail.xml.h:72
-msgid "Reply to _All"
-msgstr "Á´°÷¤ØÊÖ¿®(_A)"
-
-#: mail/folder-browser.c:701
-msgid "_Forward"
-msgstr "žÁ÷(_F)"
-
-#: mail/folder-browser.c:704
-msgid "Mar_k as Read"
-msgstr "´ûÆɤȤ·¤Æ¥Þ¡¼¥¯(_k)"
-
-#: mail/folder-browser.c:706
-msgid "Mark as U_nread"
-msgstr "̤ÆɤȤ·¤Æ¥Þ¡¼¥¯(_n)"
-
-#: mail/folder-browser.c:711
-msgid "_Move to Folder..."
-msgstr "¥Õ¥©¥ë¥À¤Ø°ÜÆ°(_M)..."
-
-#: mail/folder-browser.c:713
-msgid "_Copy to Folder..."
-msgstr "¥Õ¥©¥ë¥À¤Ø¥³¥Ô¡¼(_C)..."
-
-#: mail/folder-browser.c:717 ui/evolution-mail.xml.h:121
-msgid "_Undelete"
-msgstr "ºï½ü¼è¾Ã(_U)"
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:727
-msgid "Apply Filters"
-msgstr "¥Õ¥£¥ë¥¿Å¬ÍÑ"
-
-#: mail/folder-browser.c:731
-msgid "Create Ru_le From Message"
-msgstr "¥á¥Ã¥»¡¼¥¸¤«¤é¥ë¡¼¥ë¤òºîÀ®(_l)"
-
-#: mail/folder-browser.c:870
-msgid "Filter on Mailing List"
-msgstr "¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Î¥Õ¥£¥ë¥¿"
-
-#: mail/folder-browser.c:871
-msgid "VFolder on Mailing List"
-msgstr "¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Î²¾ÁÛ¥Õ¥©¥ë¥À"
-
-#: mail/folder-browser.c:873
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr "¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Î¥Õ¥£¥ë¥¿ (%s)"
-
-#: mail/folder-browser.c:874
-#, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr "¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Î²¾ÁÛ¥Õ¥©¥ë¥À (%s)"
-
-#: mail/folder-browser-factory.c:196
-#, c-format
-msgid "Properties for \"%s\""
-msgstr "\"%s\" ¤Î¥×¥í¥Ñ¥Æ¥£"
-
-#: mail/folder-browser-factory.c:198 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-msgid "Properties"
-msgstr "¥×¥í¥Ñ¥Æ¥£"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr "¥á¡¼¥ë¤ò°·¤¦¤¿¤á¤Î Evolution ¥³¥ó¥Ý¡¼¥Í¥ó¥È"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-msgid "Evolution mail composer."
-msgstr "Evolution ¥á¡¼¥ë¥³¥ó¥Ý¡¼¥¶"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-msgid "Evolution mail executive summary component."
-msgstr "Evolution ¥á¡¼¥ë¼Â¹Ô¥µ¥Þ¥ê¥³¥ó¥Ý¡¼¥Í¥ó¥È"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-msgid "Evolution mail folder display component."
-msgstr "Evolution ¥á¡¼¥ë¥Õ¥©¥ë¥À¥Ç¥£¥¹¥×¥ì¥¤¥³¥ó¥Ý¡¼¥Í¥ó¥È"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-msgid "Evolution mail folder factory component."
-msgstr "Evolutgion ¥á¡¼¥ë¥Õ¥©¥ë¥À¥Õ¥¡¥¯¥È¥ê¥³¥ó¥Ý¡¼¥Í¥ó¥È"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-msgid "Factory for the Evolution composer."
-msgstr "Evolution ¥³¥ó¥Ý¡¼¥¶¤Î¤¿¤á¤Î¥Õ¥¡¥¯¥È¥ê"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-msgid "Factory for the Evolution mail component."
-msgstr "Evolution ¥á¡¼¥ë¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¤¿¤á¤Î¥Õ¥¡¥¯¥È¥ê"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-msgid "Factory for the Mail Summary component."
-msgstr "¥á¡¼¥ë¥µ¥Þ¥ê¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¤¿¤á¤Î¥Õ¥¡¥¯¥È¥ê"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:9
-msgid "Mail configuration interface"
-msgstr "¥á¡¼¥ëÀßÄê¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:1
-msgid "Factory to import mbox into Evolution"
-msgstr "Evolution ¤Ø mbox ¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ë¥Õ¥¡¥¯¥È¥ê"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:2
-msgid "Imports mbox files into Evolution"
-msgstr "Evolution ¤Ø mbox ¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥Ý¡¼¥È"
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:1
-msgid "Factory to import Outlook Express 4 mails into Evolution"
-msgstr "Evolution ¤Ø Outlook Express 4 ¥á¡¼¥ë¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ë¥Õ¥¡¥¯¥È¥ê"
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:2
-msgid "Imports Outlook Express 4 files into Evolution"
-msgstr "Evolution ¤Ø Outlook Express 4 ¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥Ý¡¼¥È"
-
-#: mail/local-config.glade.h:1
-msgid "Current store format:"
-msgstr "¸½ºß¤ÎÊݸ·Á¼°:"
-
-#: mail/local-config.glade.h:2
-msgid "Mailbox Format"
-msgstr "¥á¡¼¥ë¥Ü¥Ã¥¯¥¹¤Î·Á¼°"
-
-#: mail/local-config.glade.h:3
-msgid "New store format:"
-msgstr "¿·µ¬Êݸ·Á¼°:"
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-"Ãí°Õ: mailbox ¥Õ¥©¡¼¥Þ¥Ã¥È´Ö¤ÎÊÑ´¹Ãæ¤Ë, ¼ºÇԤϼ«Æ°Åª¤Ë\n"
-"²óÉü¤·¤Ê¤¤¤«¤â¤·¤ì¤Þ¤»¤ó (Î㤨¤Ð¥Ç¥£¥¹¥¯¥¹¥Ú¡¼¥¹¤¬Â­¤ê¤Ê¤¤)\n"
-"Ãí°Õ¤·¤Æ¤³¤Îµ¡Ç½¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤"
-
-#: mail/local-config.glade.h:7
-msgid "maildir"
-msgstr "maildir"
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr "mbox"
-
-#: mail/local-config.glade.h:9
-msgid "mh"
-msgstr "mh"
-
-#: mail/mail-account-editor.c:105
-msgid "You have not filled in all of the required information."
-msgstr "ɬÍפʾðÊó¤Î¤¹¤Ù¤Æ¤òËä¤á¤Æ¤¤¤Þ¤»¤ó"
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:173
-msgid "Evolution Account Editor"
-msgstr "Evolution ¥¢¥«¥¦¥ó¥È¥¨¥Ç¥£¥¿"
-
-#: mail/mail-accounts.c:121 mail/mail-accounts.c:165
-msgid " (default)"
-msgstr " (¥Ç¥Õ¥©¥ë¥È)"
-
-#: mail/mail-accounts.c:197
-msgid "Disable"
-msgstr "̵¸ú"
-
-#: mail/mail-accounts.c:199 mail/mail-config.glade.h:30
-msgid "Enable"
-msgstr "Í­¸ú"
-
-#: mail/mail-accounts.c:280 mail/mail-accounts.c:284
-msgid "Are you sure you want to delete this account?"
-msgstr "ËÜÅö¤Ë¤³¤Î¥¢¥«¥¦¥ó¥È¤òºï½ü¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?"
-
-#: mail/mail-accounts.c:418 mail/mail-accounts.c:422
-msgid "Are you sure you want to delete this news account?"
-msgstr "ËÜÅö¤Ë news ¥¢¥«¥¦¥ó¥È¤òºï½ü¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:568
-msgid "Evolution Account Manager"
-msgstr "Evolution ¥¢¥«¥¦¥ó¥È¥Þ¥Í¡¼¥¸¥ã"
-
-#: mail/mail-autofilter.c:70
-#, c-format
-msgid "Mail to %s"
-msgstr "%s ¤Ø¥á¡¼¥ë"
-
-#: mail/mail-autofilter.c:213
-#, c-format
-msgid "Subject is %s"
-msgstr "·ï̾¤Ï %s ¤Ç¤¹"
-
-#: mail/mail-autofilter.c:229
-#, c-format
-msgid "Mail from %s"
-msgstr "%s ¤«¤é¥á¡¼¥ë"
-
-#: mail/mail-autofilter.c:285
-#, c-format
-msgid "%s mailing list"
-msgstr "%s ¥á¡¼¥ê¥ó¥°¥ê¥¹¥È"
-
-#: mail/mail-autofilter.c:335 mail/mail-autofilter.c:356
-msgid "Add Filter Rule"
-msgstr "¥Õ¥£¥ë¥¿¥ë¡¼¥ë¤òÄɲÃ"
-
-#: mail/mail-callbacks.c:93
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-"¥á¡¼¥ë¥¯¥é¥¤¥¢¥ó¥È¤ÎÀßÄ꤬¤¢¤ê¤Þ¤»¤ó\n"
-"Á÷¼õ¿®¡¤¥á¡¼¥ë¤ÎºîÀ®¤ò¤¹¤ëÁ°¤ËÀßÄꤹ¤ë\n"
-"ɬÍפ¬¤¢¤ê¤Þ¤¹\n"
-"º£ÀßÄꤷ¤Þ¤¹¤«?"
-
-#: mail/mail-callbacks.c:146
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-"¤¢¤Ê¤¿¤Ï¥á¡¼¥ë¤òºîÀ®¤¹¤ëÁ°¤Ë¿È¸µ¤Î\n"
-"ÀßÄê¤ò¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹"
-
-#: mail/mail-callbacks.c:158
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-"¤¢¤Ê¤¿¤Ï¥á¡¼¥ë¤òºîÀ®¤¹¤ëÁ°¤Ë¥á¡¼¥ë\n"
-"ÇÛÁ÷¤ÎÀßÄê¤ò¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹"
-
-#: mail/mail-callbacks.c:202
-msgid "You have not set a mail transport method"
-msgstr "¥á¡¼¥ëžÁ÷¥á¥½¥Ã¥É¤ÎÀßÄ꤬¤¢¤ê¤Þ¤»¤ó"
-
-#: mail/mail-callbacks.c:235
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-"¤³¤Î¥á¥Ã¥»¡¼¥¸¤Ï·ï̾¤¬¤¢¤ê¤Þ¤»¤ó\n"
-"ËÜÅö¤ËÁ÷¿®¤·¤Þ¤¹¤«?"
-
-#: mail/mail-callbacks.c:308
-msgid "You must specify recipients in order to send this message."
-msgstr "¤³¤Î¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤¹¤ëŬÀڤʼõ¿®¼Ô¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
-
-#: mail/mail-callbacks.c:351
-msgid "You must configure an account before you can send this email."
-msgstr "¤³¤Î¥á¡¼¥ë¤òÁ÷¿®¤¹¤ëÁ°¤Ë¥¢¥«¥¦¥ó¥È¤òÀßÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
-
-#: mail/mail-callbacks.c:594
-#, c-format
-msgid "On %s, %s wrote:"
-msgstr "On %s, %s wrote:"
-
-#: mail/mail-callbacks.c:756
-msgid "Forwarded message:\n"
-msgstr "¥á¥Ã¥»¡¼¥¸¤òžÁ÷:\n"
-
-#: mail/mail-callbacks.c:850
-msgid "Move message(s) to"
-msgstr "¥á¥Ã¥»¡¼¥¸¤ò°ÜÆ°¤·¤Þ¤¹: "
-
-#: mail/mail-callbacks.c:852
-msgid "Copy message(s) to"
-msgstr "¥á¥Ã¥»¡¼¥¸¤ò¥³¥Ô¡¼¤·¤Þ¤¹: "
-
-#: mail/mail-callbacks.c:1017
-#, c-format
-msgid "Are you sure you want to edit all %d messages?"
-msgstr "ËÜÅö¤Ë %d ¥á¥Ã¥»¡¼¥¸¤òÊÔ½¸¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?"
-
-#: mail/mail-callbacks.c:1039
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-"¥É¥é¥Õ¥È¥Õ¥©¥ë¥ÀÆâ¤ËÊݸ¤µ¤ì¤¿\n"
-"¥á¥Ã¥»¡¼¥¸¤À¤±¤òÊÔ½¸¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹"
-
-#: mail/mail-callbacks.c:1073
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-"Á÷¿®¥Õ¥©¥ë¥À¤Î¥á¥Ã¥»¡¼¥¸¤À¤±\n"
-"ºÆÁ÷¿®¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹"
-
-#: mail/mail-callbacks.c:1085
-#, c-format
-msgid "Are you sure you want to resend all %d messages?"
-msgstr "ËÜÅö¤Ë %d ¥á¥Ã¥»¡¼¥¸¤òºÆÁ÷¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?"
-
-#: mail/mail-callbacks.c:1106
-msgid "No Message Selected"
-msgstr "ÁªÂò¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: mail/mail-callbacks.c:1140 mail/mail-display.c:92
-msgid "Overwrite file?"
-msgstr "¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­¤·¤Þ¤¹¤«?"
-
-#: mail/mail-callbacks.c:1144 mail/mail-display.c:96
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-"¤½¤Î̾Á°¤Î¥Õ¥¡¥¤¥ë¤Ï¤¹¤Ç¤Ë¸ºß¤·¤Þ¤¹\n"
-"¾å½ñ¤­¤·¤Þ¤¹¤«?"
-
-#: mail/mail-callbacks.c:1188
-msgid "Save Message As..."
-msgstr "¥á¥Ã¥»¡¼¥¸¤òÊÌ̾¤ÇÊݸ..."
-
-#: mail/mail-callbacks.c:1190
-msgid "Save Messages As..."
-msgstr "¥á¥Ã¥»¡¼¥¸¤òÊÌ̾¤ÇÊݸ..."
-
-#: mail/mail-callbacks.c:1349
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-"¥Õ¥£¥ë¥¿¾ðÊó¤Î¥í¡¼¥ÉÃæ¤Ë¥¨¥é¡¼:\n"
-"%s"
-
-#: mail/mail-callbacks.c:1407
-msgid "Print Message"
-msgstr "¥á¥Ã¥»¡¼¥¸¤ò°õºþ"
-
-#: mail/mail-callbacks.c:1454
-msgid "Printing of message failed"
-msgstr "¥á¥Ã¥»¡¼¥¸¤Î°õºþ¤Ë¼ºÇÔ¤·¤Þ¤·¤¿"
-
-#: mail/mail-callbacks.c:1549
-#, c-format
-msgid "Are you sure you want to open all %d messages in separate windows?"
-msgstr "ËÜÅö¤Ë %d ¥á¥Ã¥»¡¼¥¸¤òÊÌ¥¦¥£¥ó¥É¥¦¤Ç³«¤¤¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«?"
-
-#: mail/mail-config.c:1213 mail/mail-config.c:1216
-msgid "Connecting to server..."
-msgstr "¥µ¡¼¥Ð¤ØÀܳÃæ..."
-
-#: mail/mail-config-druid.c:99
-msgid ""
-"Please enter your name and email address below. The \"optional\" fields "
-"below do not need to be filled in, unless you wish to include this "
-"information in email you send."
-msgstr ""
-
-#: mail/mail-config-druid.c:101
-msgid ""
-"Please enter information about your incoming mail server below. If you don't "
-"know what kind of server you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-
-#: mail/mail-config-druid.c:105
-msgid ""
-"Please enter information about your outgoing mail protocol below. If you "
-"don't know which protocol you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-
-#: mail/mail-config-druid.c:107
-msgid ""
-"You are almost done with the mail configuration process. The identity, "
-"incoming mail server and outgoing mail transport method which you provided "
-"will be grouped together to make an Evolution mail account. Please enter a "
-"name for this account in the space below. This name will be used for display "
-"purposes only."
-msgstr ""
-
-#. set window title
-#: mail/mail-config-druid.c:445
-msgid "Evolution Account Wizard"
-msgstr "Evolution ¥¢¥«¥¦¥ó¥È¥¦¥£¥¶¡¼¥É"
-
-#: mail/mail-config.glade.h:1
-msgid " Check for supported types "
-msgstr "¥µ¥Ý¡¼¥È¤µ¤ì¤¿¼ïÊ̤ò¥Á¥§¥Ã¥¯"
-
-#: mail/mail-config.glade.h:2
-msgid " color"
-msgstr " ¥«¥é¡¼"
-
-#: mail/mail-config.glade.h:3
-msgid "Account"
-msgstr "¥¢¥«¥¦¥ó¥È"
-
-#: mail/mail-config.glade.h:4
-msgid "Account Information"
-msgstr "¥¢¥«¥¦¥ó¥È¾ðÊó"
-
-#: mail/mail-config.glade.h:5
-msgid "Account Management"
-msgstr "¥¢¥«¥¦¥ó¥È´ÉÍý"
-
-#: mail/mail-config.glade.h:6
-msgid "Accounts"
-msgstr "¥¢¥«¥¦¥ó¥È"
-
-#: mail/mail-config.glade.h:8
-msgid "Always load images off the net"
-msgstr ""
-
-#: mail/mail-config.glade.h:10
-msgid "Authentication"
-msgstr "ǧ¾Ú"
-
-#: mail/mail-config.glade.h:11
-msgid "Authentication Type: "
-msgstr "ǧ¾Ú¼ïÊÌ: "
-
-#: mail/mail-config.glade.h:12
-msgid "Automatically check for new mail every"
-msgstr "¿·Ãå¥á¡¼¥ë¤ò¼«Æ°Åª¤Ë¥Á¥§¥Ã¥¯¤¹¤ë"
-
-#: mail/mail-config.glade.h:14
-msgid "Composer"
-msgstr "¥á¡¼¥ëºîÀ®"
-
-#: mail/mail-config.glade.h:15
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-"¤ª¤á¤Ç¤È¤¦¤´¤¶¤¤¤Þ¤¹, ¤¢¤Ê¤¿¤Î¥á¡¼¥ë¤ÎÀßÄê¤Ï´°Î»¤·¤Þ¤·¤¿\n"
-"\n"
-"º£¤¹¤° Evolution ¤ò»È¤Ã¤Æ¥á¡¼¥ë¤ÎÁ÷¼õ¿®¤ò¤¹¤ë\n"
-"½àÈ÷¤¬À°¤¤¤Þ¤·¤¿\n"
-"\n"
-"\"´°Î»\" ¤ò¥¯¥ê¥Ã¥¯¤·¤ÆÀßÄê¤òÊݸ¤·¤Æ¤¯¤À¤µ¤¤"
-
-#: mail/mail-config.glade.h:21
-msgid "De_fault"
-msgstr "¥Ç¥Õ¥©¥ë¥È(_f)"
-
-#: mail/mail-config.glade.h:22
-msgid "Default \"Forward\" style is: "
-msgstr "¥Ç¥Õ¥©¥ë¥È¤Î \"žÁ÷\" ÊýË¡: "
-
-#: mail/mail-config.glade.h:25
-msgid "Done"
-msgstr "´°Î»"
-
-#: mail/mail-config.glade.h:26
-msgid "Drafts"
-msgstr "Áð°Æ"
-
-#: mail/mail-config.glade.h:27
-msgid "Drafts folder:"
-msgstr "Áð°Æ¥Õ¥©¥ë¥À:"
-
-#: mail/mail-config.glade.h:29
-msgid "Email Address:"
-msgstr "¥á¡¼¥ë¥¢¥É¥ì¥¹:"
-
-#: mail/mail-config.glade.h:31
-msgid "Full Name:"
-msgstr "¥Õ¥ë¥Í¡¼¥à:"
-
-#: mail/mail-config.glade.h:32
-msgid "Highlight citations with"
-msgstr "°úÍѤò¶¯Ä´¤¹¤ë"
-
-#: mail/mail-config.glade.h:34
-msgid "IMAPv4 "
-msgstr "IMAPv4 "
-
-#: mail/mail-config.glade.h:35
-msgid "Identity"
-msgstr "¿È¸µ"
-
-#: mail/mail-config.glade.h:36
-msgid "In HTML mail"
-msgstr ""
-
-#: mail/mail-config.glade.h:37
-msgid "Inline"
-msgstr "¥¤¥ó¥é¥¤¥ó"
-
-#: mail/mail-config.glade.h:38
-msgid "Kerberos "
-msgstr "Kerberos "
-
-#: mail/mail-config.glade.h:39
-msgid "Load images if sender is in addressbook"
-msgstr ""
-
-#: mail/mail-config.glade.h:40
-msgid "Mail Configuration"
-msgstr "¥á¡¼¥ë¤ÎÀßÄê"
-
-#: mail/mail-config.glade.h:41
-msgid "Make this my default account"
-msgstr "¥Ç¥Õ¥©¥ë¥È¥¢¥«¥¦¥ó¥È¤òºî¤ë"
-
-#: mail/mail-config.glade.h:42
-msgid "Mark messages as \"Read\" after:"
-msgstr "»ØÄê»þ´Ö¸å¤Ë¥á¥Ã¥»¡¼¥¸¤ò \"´ûÆÉ\" ¤È¤·¤Æ¥Þ¡¼¥¯:"
-
-#: mail/mail-config.glade.h:44
-msgid "Never load images off the net"
-msgstr ""
-
-#: mail/mail-config.glade.h:45
-msgid "News"
-msgstr "¥Ë¥å¡¼¥¹"
-
-#: mail/mail-config.glade.h:47
-msgid "Optional Information"
-msgstr "ÉղþðÊó"
-
-#: mail/mail-config.glade.h:48
-msgid "Organization:"
-msgstr "ÁÈ¿¥:"
-
-#: mail/mail-config.glade.h:49
-msgid "PGP"
-msgstr "PGP"
-
-#: mail/mail-config.glade.h:50
-msgid "PGP binary path:"
-msgstr "PGP ¥×¥í¥°¥é¥à¤Î¥Ñ¥¹:"
-
-#: mail/mail-config.glade.h:55
-msgid "Qmail maildir "
-msgstr "Qmail maildir "
-
-#: mail/mail-config.glade.h:56
-msgid "Quoted"
-msgstr "°úÍÑ"
-
-#: mail/mail-config.glade.h:57
-msgid "Receiving Email"
-msgstr "¥á¡¼¥ë¤Î¼õ¿®Ãæ"
-
-#: mail/mail-config.glade.h:58
-msgid "Receiving Mail"
-msgstr "¥á¡¼¥ë¤Î¼õ¿®"
-
-#: mail/mail-config.glade.h:59
-msgid "Receiving Options"
-msgstr "¼õ¿®¥ª¥×¥·¥ç¥ó"
-
-#: mail/mail-config.glade.h:61
-msgid "Required Information"
-msgstr "ɬ¿Ü¾ðÊó"
-
-#: mail/mail-config.glade.h:63
-msgid "Select PGP binary"
-msgstr "PGP ¥×¥í¥°¥é¥à¤òÁªÂò"
-
-#: mail/mail-config.glade.h:64
-msgid "Send mail in HTML format by default."
-msgstr "¥Ç¥Õ¥©¥ë¥È¤Ç HTML ·Á¼°¤Î¥á¡¼¥ë¤òÁ÷¿®¤¹¤ë"
-
-#: mail/mail-config.glade.h:65
-msgid "Sending Email"
-msgstr "¥á¡¼¥ë¤òÁ÷¿®Ãæ"
-
-#: mail/mail-config.glade.h:66
-msgid "Sending Mail"
-msgstr "¥á¡¼¥ë¤ÎÁ÷¿®"
-
-#: mail/mail-config.glade.h:68
-msgid "Sent"
-msgstr "Á÷¿®ºÑ"
-
-#: mail/mail-config.glade.h:69
-msgid "Sent and Draft Messages"
-msgstr "Á÷¿®ºÑ¤ÈÁð°Æ¥á¥Ã¥»¡¼¥¸"
-
-#: mail/mail-config.glade.h:70
-msgid "Sent messages folder:"
-msgstr "Á÷¿®ºÑ¥á¥Ã¥»¡¼¥¸¥Õ¥©¥ë¥À:"
-
-#: mail/mail-config.glade.h:71
-msgid "Server Configuration"
-msgstr "¥µ¡¼¥Ð¤ÎÀßÄê"
-
-#: mail/mail-config.glade.h:72
-msgid "Server Type: "
-msgstr "¥µ¡¼¥Ð¼ïÊÌ:"
-
-#: mail/mail-config.glade.h:73
-msgid "Server requires authentication"
-msgstr "¥µ¡¼¥Ð¤Ïǧ¾Ú¤¬É¬Í×"
-
-#: mail/mail-config.glade.h:74
-msgid "Signature file:"
-msgstr "½ð̾¥Õ¥¡¥¤¥ë:"
-
-#: mail/mail-config.glade.h:75
-msgid "Sources"
-msgstr "¥½¡¼¥¹"
-
-#: mail/mail-config.glade.h:76
-msgid "Special Folders"
-msgstr "ÆÃÊ̤ʥե©¥ë¥À"
-
-#: mail/mail-config.glade.h:77
-msgid "Standard Unix mbox"
-msgstr "ɸ½àŪ¤Ê UNIX ¤Î mbox ¥Õ¥¡¥¤¥ë"
-
-#: mail/mail-config.glade.h:78
-msgid "Type"
-msgstr "¼ïÊÌ"
-
-#: mail/mail-config.glade.h:79
-msgid "Use secure connection (SSL)"
-msgstr "¥»¥­¥å¥¢Àܳ (SSL) ¤ò»È¤¦"
-
-#: mail/mail-config.glade.h:80
-msgid "Username:"
-msgstr "¥æ¡¼¥¶Ì¾:"
-
-#: mail/mail-config.glade.h:81
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-"Evolution ¥á¡¼¥ëÀßÄê¥É¥ë¥¤¥É¤Ø¤è¤¦¤³¤½\n"
-"\n"
-"\"¼¡\" ¤ò¥¯¥ê¥Ã¥¯¤·¤Æ»Ï¤á¤Æ¤¯¤À¤µ¤¤"
-
-#: mail/mail-config.glade.h:86 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:45 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:48
-msgid "_Edit"
-msgstr "ÊÔ½¸(_E)"
-
-#: mail/mail-crypto.c:59
-msgid "Could not create a PGP signature context."
-msgstr "PGP ½ð̾¥³¥ó¥Æ¥­¥¹¥È¤òºîÀ®½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: mail/mail-crypto.c:84
-msgid "Could not create a PGP verification context."
-msgstr "PGP ¸¡¾Ú¥³¥ó¥Æ¥­¥¹¥È¤òºîÀ®½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: mail/mail-crypto.c:113
-msgid "Could not create a PGP encryption context."
-msgstr "PGP °Å¹æ¥³¥ó¥Æ¥­¥¹¥È¤òºîÀ®½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: mail/mail-crypto.c:138
-msgid "Could not create a PGP decryption context."
-msgstr "PGP Éü¹æ¥³¥ó¥Æ¥­¥¹¥È¤òºîÀ®½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: mail/mail-crypto.c:169
-msgid "Could not create a S/MIME signature context."
-msgstr ""
-
-#: mail/mail-crypto.c:195
-msgid "Could not create a S/MIME verification context."
-msgstr ""
-
-#: mail/mail-crypto.c:225
-msgid "Could not create a S/MIME encryption context."
-msgstr ""
-
-#: mail/mail-crypto.c:251
-msgid "Could not create a S/MIME decryption context."
-msgstr ""
-
-#: mail/mail-display.c:196
-msgid "Save Attachment"
-msgstr "źÉÕ¤ÎÊݸ"
-
-#: mail/mail-display.c:236
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr "ºî¶È¥Ç¥£¥ì¥¯¥È¥ê¤òºîÀ®½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: mail/mail-display.c:297
-msgid "Save to Disk..."
-msgstr "¥Ç¥£¥¹¥¯¤ØÊݸ..."
-
-#: mail/mail-display.c:299
-#, c-format
-msgid "Open in %s..."
-msgstr "%s ¤Ë³«¤¯..."
-
-#: mail/mail-display.c:301
-msgid "View Inline"
-msgstr "¥¤¥ó¥é¥¤¥óɽ¼¨"
-
-#: mail/mail-display.c:336
-msgid "External Viewer"
-msgstr "³°Éô¥Ó¥å¡¼¥¢"
-
-#: mail/mail-display.c:359
-#, c-format
-msgid "View Inline (via %s)"
-msgstr "¥¤¥ó¥é¥¤¥óɽ¼¨ (%s·Ðͳ)"
-
-#: mail/mail-display.c:363
-msgid "Hide"
-msgstr "±£¤¹"
-
-#: mail/mail-display.c:962
-msgid "Loading message content"
-msgstr "¥á¥Ã¥»¡¼¥¸¤ÎÆâÍƤòÆɤ߹þ¤ßÃæ"
-
-#: mail/mail-display.c:1256
-msgid "Open link in browser"
-msgstr "¥Ö¥é¥¦¥¶¤Ç¥ê¥ó¥¯¤ò³«¤¯"
-
-#: mail/mail-display.c:1258
-msgid "Save as (FIXME)"
-msgstr "ÊÌ̾¤ÇÊݸ (FIXME)"
-
-#: mail/mail-display.c:1260
-msgid "Copy location (FIXME)"
-msgstr "¾ì½ê¤ò¥³¥Ô¡¼ (FIXME)"
-
-#: mail/mail-format.c:527
-#, c-format
-msgid "%s attachment"
-msgstr "%s ¤òźÉÕ"
-
-#: mail/mail-format.c:573
-msgid "Could not parse MIME message. Displaying as source."
-msgstr "MIME ¥á¥Ã¥»¡¼¥¸¤ò²òÀϽÐÍè¤Þ¤»¤ó¤Ç¤·¤¿, ¥½¡¼¥¹¤òɽ¼¨¤·¤Þ¤¹"
-
-#: mail/mail-format.c:640 mail/message-list.c:1082
-msgid "Date"
-msgstr "ÆüÉÕ"
-
-#: mail/mail-format.c:756 mail/message-list.c:1082
-msgid "From"
-msgstr "º¹½Ð¿Í"
-
-#: mail/mail-format.c:759
-msgid "Reply-To"
-msgstr "ÊÖ¿®Àè"
-
-#: mail/mail-format.c:762 mail/message-list.c:1083
-msgid "To"
-msgstr "°¸Àè"
-
-#: mail/mail-format.c:765
-msgid "Cc"
-msgstr "Cc"
-
-#: mail/mail-format.c:1075
-msgid "No GPG/PGP program configured."
-msgstr "GPG/PGP ¥×¥í¥°¥é¥à¤ÎÀßÄ꤬¤¢¤ê¤Þ¤»¤ó"
-
-#: mail/mail-format.c:1090
-msgid "Encrypted message not displayed"
-msgstr "°Å¹æ²½¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤Ïɽ¼¨¤·¤Þ¤»¤ó"
-
-#: mail/mail-format.c:1096
-msgid "Encrypted message"
-msgstr "°Å¹æ²½¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸"
-
-#: mail/mail-format.c:1097
-msgid "Click icon to decrypt."
-msgstr "¥¢¥¤¥³¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤ÆÉü¹æ²½¤·¤Æ¤¯¤À¤µ¤¤"
-
-#: mail/mail-format.c:1153
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr "¤³¤Î¥á¥Ã¥»¡¼¥¸¤Ï¥Ç¥¸¥¿¥ë½ð̾¤µ¤ì¿®Íê¤Ç¤­¤ë¤â¤Î¤Ç¤¹"
-
-#: mail/mail-format.c:1161
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr "¤³¤Î¥á¥Ã¥»¡¼¥¸¤Ï¥Ç¥¸¥¿¥ë½ð̾¤µ¤ì¤¿¤â¤Î¤Ç¤¹¤¬, ¿®Íê¤ò¾ÚÌÀ½ÐÍè¤Þ¤»¤ó"
-
-#: mail/mail-format.c:1787
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr "FTP ¥µ¥¤¥È (%s) ¤ò»Ø¤·¤Æ¤¤¤Þ¤¹"
-
-#: mail/mail-format.c:1799
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr ""
-
-#: mail/mail-format.c:1803
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr "¥í¡¼¥«¥ë¥Õ¥¡¥¤¥ë (%s) ¤ò»Ø¤·¤Æ¤¤¤Þ¤¹"
-
-#: mail/mail-format.c:1837
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr "̤ÃΤγ°Éô¥Ç¡¼¥¿ (\"%s\" ¥¿¥¤¥×) ¤ò»Ø¤·¤Æ¤¤¤Þ¤¹"
-
-#: mail/mail-format.c:1842
-msgid "Malformed external-body part."
-msgstr ""
-
-#: mail/mail-local.c:505
-#, c-format
-msgid "Opening '%s'"
-msgstr "'%s' ¤ò¥ª¡¼¥×¥óÃæ"
-
-#: mail/mail-local.c:785
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr "¥Õ¥©¥ë¥À \"%s\" ¤ò \"%s\" ·Á¼°¤ØÊѹ¹¤·¤Æ¤¤¤Þ¤¹"
-
-#: mail/mail-local.c:789
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr "¥Õ¥©¥ë¥À \"%s\" ¤ò \"%s\" ·Á¼°¤ØÊѹ¹¤·¤Þ¤¹"
-
-#: mail/mail-local.c:812
-msgid "Reconfiguring folder"
-msgstr "¥Õ¥©¥ë¥À¤ÎºÆ¹½À®Ãæ"
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:841
-msgid "Closing current folder"
-msgstr "¸½ºß¤Î¥Õ¥©¥ë¥À¤ò¥¯¥í¡¼¥ºÃæ"
-
-#: mail/mail-local.c:873
-msgid "Renaming old folder and opening"
-msgstr "¸Å¤¤¥Õ¥©¥ë¥À¤ò¥ê¥Í¡¼¥à¤·¤Æ¥ª¡¼¥×¥óÃæ"
-
-#: mail/mail-local.c:891
-msgid "Creating new folder"
-msgstr "¿·µ¬¥Õ¥©¥ë¥À¤òºîÀ®Ãæ"
-
-#: mail/mail-local.c:905
-msgid "Copying messages"
-msgstr "¥á¥Ã¥»¡¼¥¸¤ò¥³¥Ô¡¼Ãæ"
-
-#: mail/mail-local.c:922
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-"¥Õ¥©¥ë¥À¤Î¥á¥¿¾ðÊó¤òÊݸ½ÐÍè¤Þ¤»¤ó; ¤â¤Ï¤ä¤³¤Î¥Õ¥©¥ë¥À¤ò³«¤¯\n"
-"¤³¤È¤¬½ÐÍè¤Ê¤¤¤È¤¿¤Ö¤óµ¤¤Å¤¤¤¿¤Î¤Ç¤·¤ç¤¦: %s"
-
-#: mail/mail-local.c:961
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-"¤â¤·¤³¤Î¥á¡¼¥ë¥Ü¥Ã¥¯¥¹¤ò³«¤¯¤³¤È¤Ï¤Ê¤¤¤Ê¤é\n"
-"¼êÆ°¤Ç²óÉü¤µ¤»¤ëɬÍפ¬¤¢¤ë¤«¤â¤·¤ì¤Þ¤»¤ó"
-
-#: mail/mail-mt.c:190
-#, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-"'%s' ¤ÎºÝ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿:\n"
-"%s"
-
-#: mail/mail-mt.c:193
-#, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-"Áàºî¤Î½àÈ÷¤·¤Æ¤¤¤ë´Ö¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿:\n"
-"%s"
-
-#: mail/mail-mt.c:516 mail/mail-mt.c:545 mail/mail-mt.c:880
-msgid "Working"
-msgstr "ºî¶ÈÃæ"
-
-#: mail/mail-mt.c:862
-msgid "Evolution progress"
-msgstr "Evolution ¿Ê¹Ô"
-
-#: mail/mail-ops.c:599
-#, c-format
-msgid "Sending \"%s\""
-msgstr "\"%s\" ¤òÁ÷¿®Ãæ"
-
-#: mail/mail-ops.c:603
-msgid "Sending message"
-msgstr "¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®Ãæ"
-
-#: mail/mail-ops.c:718
-#, c-format
-msgid "Sending message %d of %d"
-msgstr "¥á¥Ã¥»¡¼¥¸ %d / %d ¤òÁ÷¿®Ãæ"
-
-#: mail/mail-ops.c:737
-#, c-format
-msgid "Failed on message %d of %d"
-msgstr "¥á¥Ã¥»¡¼¥¸ %d / %d ¤Ï¼ºÇÔ¤·¤Þ¤·¤¿"
-
-#: mail/mail-ops.c:739 mail/mail-send-recv.c:475
-msgid "Complete."
-msgstr "´°Î»¤·¤Þ¤·¤¿"
-
-#: mail/mail-ops.c:825
-msgid "Saving message to folder"
-msgstr "¥Õ¥©¥ë¥À¤Ø¥á¥Ã¥»¡¼¥¸¤òÊݸÃæ"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Moving messages to %s"
-msgstr "%s ¤Ø¥á¥Ã¥»¡¼¥¸¤ò°ÜÆ°Ãæ"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Copying messages to %s"
-msgstr "%s ¤Ø¥á¥Ã¥»¡¼¥¸¤ò¥³¥Ô¡¼Ãæ"
-
-#: mail/mail-ops.c:914
-msgid "Moving"
-msgstr "°ÜÆ°Ãæ"
-
-#: mail/mail-ops.c:917
-msgid "Copying"
-msgstr "¥³¥Ô¡¼Ãæ"
-
-#: mail/mail-ops.c:992
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr "\"%s\" ¤ÎÃæ¤Î¥Õ¥©¥ë¥À¤òÁöººÃæ"
-
-#: mail/mail-ops.c:1154
-msgid "Forwarded messages"
-msgstr "¥á¥Ã¥»¡¼¥¸¤òžÁ÷"
-
-#: mail/mail-ops.c:1195 mail/mail-ops.c:1333
-#, c-format
-msgid "Opening folder %s"
-msgstr "\"%s\" ¤ÎÃæ¤Î¥Õ¥©¥ë¥À¤ò¥ª¡¼¥×¥óÃæ"
-
-#: mail/mail-ops.c:1262
-#, c-format
-msgid "Opening store %s"
-msgstr "Êݸ¤µ¤ì¤¿ %s ¤ò¥ª¡¼¥×¥óÃæ"
-
-#: mail/mail-ops.c:1449
-msgid "Expunging folder"
-msgstr "¥Õ¥©¥ë¥À¤òºï½üÃæ"
-
-#: mail/mail-ops.c:1498
-#, c-format
-msgid "Retrieving message %s"
-msgstr "¥á¥Ã¥»¡¼¥¸ %s ¤ò¼èÆÀÃæ"
-
-#: mail/mail-ops.c:1565
-msgid "Retrieving messages"
-msgstr "¥á¥Ã¥»¡¼¥¸¤ò¼èÆÀÃæ"
-
-#: mail/mail-ops.c:1575
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr "¥á¥Ã¥»¡¼¥¸ÈÖ¹æ %d / %d (uid \"%s\") ¤ò¼èÆÀÃæ"
-
-#: mail/mail-ops.c:1649
-msgid "Saving messages"
-msgstr "¥á¥Ã¥»¡¼¥¸¤òÊݸÃæ"
-
-#: mail/mail-ops.c:1728
-#, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr ""
-"½ÐÎÏ¥Õ¥¡¥¤¥ë¤òºîÀ®½ÐÍè¤Þ¤»¤ó: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1741
-#, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr "¥á¥Ã¥»¡¼¥¸ %d / %d (uid \"%s\") ¤òÊݸÃæ"
-
-#: mail/mail-ops.c:1755
-#, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr ""
-"¥Õ¥¡¥¤¥ë¤ÎÊݸÃæ¤Ë¥¨¥é¡¼: %s:\n"
-" %s"
-
-#: mail/mail-ops.c:1829
-msgid "Saving attachment"
-msgstr "źÉÕ¤òÊݸÃæ"
-
-#: mail/mail-ops.c:1844
-#, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr ""
-"½ÐÎÏ¥Õ¥¡¥¤¥ë¤òºîÀ®½ÐÍè¤Þ¤»¤ó: %s:\n"
-" %s"
-
-#: mail/mail-ops.c:1872
-#, c-format
-msgid "Could not write data: %s"
-msgstr "¥Ç¡¼¥¿¤ò½ñ¤­½Ð¤¹¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: mail/mail-ops.c:1939
-#, c-format
-msgid "Disconnecting from %s"
-msgstr "%s ¤È¤ÎÀܳ¤òÀڤäƤ¤¤Þ¤¹"
-
-#: mail/mail-search.c:138
-msgid "(Untitled Message)"
-msgstr "(¥¿¥¤¥È¥ë¤Ê¤·¥á¥Ã¥»¡¼¥¸)"
-
-#: mail/mail-search.c:268
-msgid "Find in Message"
-msgstr "¥á¥Ã¥»¡¼¥¸¤ò¸¡º÷"
-
-#: mail/mail-search.c:298
-msgid "Case Sensitive"
-msgstr ""
-
-#: mail/mail-search.c:299
-msgid "Search Forward"
-msgstr "Á°Êý¸¡º÷"
-
-#: mail/mail-search.c:316
-msgid "Find:"
-msgstr "¸¡º÷:"
-
-#: mail/mail-search.c:319
-msgid "Matches:"
-msgstr ""
-
-#: mail/mail-search-dialogue.c:113
-msgid "_Search"
-msgstr "¸¡º÷(_S)"
-
-#: mail/mail-send-recv.c:138
-msgid "Cancelling..."
-msgstr "¥­¥ã¥ó¥»¥ëÃæ..."
-
-#: mail/mail-send-recv.c:233
-msgid "Send & Receive mail"
-msgstr "¥á¡¼¥ë¤ÎÁ÷¼õ¿®"
-
-#: mail/mail-send-recv.c:236
-msgid "Receiving"
-msgstr "¼õ¿®Ãæ"
-
-#: mail/mail-send-recv.c:285
-msgid "Updating..."
-msgstr "¹¹¿·Ãæ..."
-
-#: mail/mail-send-recv.c:287 mail/mail-send-recv.c:333
-msgid "Waiting..."
-msgstr "ÂÔµ¡Ãæ..."
-
-#: mail/mail-send-recv.c:306
-msgid "Sending"
-msgstr "Á÷¿®Ãæ"
-
-#: mail/mail-send-recv.c:471
-msgid "Cancelled."
-msgstr "¥­¥ã¥ó¥»¥ë¤·¤Þ¤·¤¿"
-
-#: mail/mail-summary.c:110
-msgid "Incomplete message written on pipe!"
-msgstr "¥Ñ¥¤¥×¾å¤ËÉÔ´°Á´¤Ê¥á¥Ã¥»¡¼¥¸¤¬½ñ¤«¤ì¤Þ¤·¤¿!"
-
-#: mail/mail-summary.c:468
-msgid "Mail Summary"
-msgstr "¥á¡¼¥ë¥µ¥Þ¥ê"
-
-#: mail/mail-tools.c:145
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr "¥Æ¥ó¥Ý¥é¥ê mbox '%s' ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿: %s"
-
-#: mail/mail-tools.c:192
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr "[%s] (¥á¥Ã¥»¡¼¥¸¤òžÁ÷)"
-
-#: mail/mail-tools.c:202
-msgid "Fwd: (no subject)"
-msgstr "Fwd: (·ï̾¤Ê¤·)"
-
-#: mail/mail-tools.c:219
-#, c-format
-msgid "Forwarded message - %s"
-msgstr "¥á¥Ã¥»¡¼¥¸¤òžÁ÷¤·¤Þ¤·¤¿ - %s"
-
-#: mail/mail-tools.c:221
-msgid "Forwarded message (no subject)"
-msgstr "¥á¥Ã¥»¡¼¥¸¤òžÁ÷¤·¤Þ¤·¤¿ (·ï̾¤Ê¤·)"
-
-#: mail/mail-tools.c:428
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-msgstr ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-
-#: mail/mail-vfolder.c:249
-msgid "VFolders"
-msgstr "²¾ÁÛ¥Õ¥©¥ë¥À"
-
-#: mail/mail-vfolder.c:438
-msgid "New VFolder"
-msgstr "¿·µ¬²¾ÁÛ¥Õ¥©¥ë¥À"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/message-browser.c:188 ui/evolution-mail.xml.h:70
-msgid "Reply"
-msgstr "ÊÖ¿®"
-
-#: mail/message-browser.c:188
-msgid "Reply to the sender of this message"
-msgstr "¥á¥Ã¥»¡¼¥¸¤ÎÁ÷¿®¼Ô¤ØÊÖ¿®¤·¤Þ¤¹"
-
-#: mail/message-browser.c:191 ui/evolution-mail.xml.h:71
-msgid "Reply to All"
-msgstr "Á´°÷¤ØÊÖ¿®"
-
-#: mail/message-browser.c:191
-msgid "Reply to all recipients of this message"
-msgstr "¤³¤Î¥á¥Ã¥»¡¼¥¸¤Î¼õ¿®¼ÔÁ´°÷¤ØÊÖ¿®¤·¤Þ¤¹"
-
-#: mail/message-browser.c:194 ui/evolution-mail.xml.h:33
-msgid "Forward"
-msgstr "žÁ÷"
-
-#: mail/message-browser.c:194
-msgid "Forward this message"
-msgstr "¤³¤Î¥á¥Ã¥»¡¼¥¸¤òžÁ÷¤·¤Þ¤¹"
-
-#: mail/message-browser.c:199
-msgid "Print the selected message"
-msgstr "ÁªÂò¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤ò°õºþ¤·¤Þ¤¹"
-
-#: mail/message-browser.c:202
-msgid "Delete this message"
-msgstr "¤³¤Î¥á¥Ã¥»¡¼¥¸¤òºï½ü¤·¤Þ¤¹"
-
-#: mail/message-browser.c:207 ui/evolution-event-editor.xml.h:33
-#: ui/evolution-mail.xml.h:64 ui/evolution-task-editor-dialog.xml.h:36
-msgid "Previous"
-msgstr "Á°"
-
-#: mail/message-browser.c:207
-msgid "Previous message"
-msgstr "Á°¤Î¥á¥Ã¥»¡¼¥¸¤Ø°ÜÆ°¤·¤Þ¤¹"
-
-#: mail/message-browser.c:210 ui/evolution-calendar.xml.h:18
-#: ui/evolution-event-editor.xml.h:29 ui/evolution-mail.xml.h:57
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "Next"
-msgstr "¼¡"
-
-#: mail/message-browser.c:210
-msgid "Next message"
-msgstr "¼¡¤Î¥á¥Ã¥»¡¼¥¸¤Ø°ÜÆ°¤·¤Þ¤¹"
-
-#: mail/message-list.c:677
-msgid "Unseen"
-msgstr "̤ÆÉ"
-
-#: mail/message-list.c:678
-msgid "Seen"
-msgstr "´ûÆÉ"
-
-#: mail/message-list.c:679
-msgid "Answered"
-msgstr "ÊÖÅúºÑ¤ß"
-
-#: mail/message-list.c:680
-msgid "Multiple Unseen Messages"
-msgstr "Ê£¿ô¤Î̤ÆÉ¥á¥Ã¥»¡¼¥¸"
-
-#: mail/message-list.c:681
-msgid "Multiple Messages"
-msgstr "Ê£¿ô¤Î¥á¥Ã¥»¡¼¥¸"
-
-#: mail/message-list.c:685
-msgid "Lowest"
-msgstr "ºÇ¤âÄ㤤"
-
-#: mail/message-list.c:686
-msgid "Lower"
-msgstr "Ä㤤"
-
-#: mail/message-list.c:690
-msgid "Higher"
-msgstr "¹â¤¤"
-
-#: mail/message-list.c:691
-msgid "Highest"
-msgstr "ºÇ¤â¹â¤¤"
-
-#: mail/message-list.c:941
-msgid "?"
-msgstr "?"
-
-#: mail/message-list.c:948
-msgid "Today %l:%M %p"
-msgstr "º£Æü¤Î %p %l:%M"
-
-#: mail/message-list.c:957
-msgid "Yesterday %l:%M %p"
-msgstr "ºòÆü¤Î %p %l:%M"
-
-#: mail/message-list.c:969
-msgid "%a %l:%M %p"
-msgstr "%p %l:%M (%a)"
-
-#: mail/message-list.c:977
-msgid "%b %d %l:%M %p"
-msgstr "%m·î %dÆü %p %l:%M"
-
-#: mail/message-list.c:979
-msgid "%b %d %Y"
-msgstr "%Yǯ %m·î %dÆü"
-
-#: mail/message-list.c:1081
-msgid "Flagged"
-msgstr "¥Õ¥é¥°"
-
-#: mail/message-list.c:1082
-msgid "Received"
-msgstr ""
-
-#: mail/message-list.c:1083
-msgid "Size"
-msgstr "¥µ¥¤¥º"
-
-#: mail/mail-session.c:161
-msgid "User canceled operation."
-msgstr ""
-
-#: mail/subscribe-dialog.c:76 shell/e-storage-set-view.c:48
-msgid "Folder"
-msgstr "¥Õ¥©¥ë¥À"
-
-#: mail/subscribe-dialog.c:77
-msgid "Store"
-msgstr "µ­Ï¿"
-
-#: mail/subscribe-dialog.c:138
-msgid "Display folders starting with:"
-msgstr "ɽ¼¨¤¹¤ë¥Õ¥©¥ë¥À¤ò³«»Ï¤¹¤ë:"
-
-#: mail/subscribe-dialog.c:168
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr "\"%s\" ¤Îµ­Ï¿¤ò¼èÆÀÃæ"
-
-#: mail/subscribe-dialog.c:271
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr "¥Õ¥©¥ë¥À \"%s\" ¤ò¹ØÆÉÃæ"
-
-#: mail/subscribe-dialog.c:273
-#, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr "¥Õ¥©¥ë¥À \"%s\" ¤Î¹ØÆɲò½üÃæ"
-
-#. Construct the app
-#: mail/subscribe-dialog.c:873
-msgid "Manage Subscriptions"
-msgstr "¹ØÆÉ´ÉÍý"
-
-#: shell/e-setup.c:118 shell/e-setup.c:191
-msgid "Evolution installation"
-msgstr "Evolution ¤Î¥¤¥ó¥¹¥È¡¼¥ë"
-
-#: shell/e-setup.c:122
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-"¤³¤Î Evolution ¤Î¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤Ï¤¢¤Ê¤¿¤Î¥Ñ¡¼¥½¥Ê¥ë Evolution\n"
-"¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¤ËÉղåե¡¥¤¥ë¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹"
-
-#: shell/e-setup.c:123
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr "\"OK\" ¤Ç¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¹¥È¡¼¥ë, ¤Þ¤¿¤Ï \"¥­¥ã¥ó¥»¥ë\" ¤Ç½ªÎ»¤·¤Þ¤¹"
-
-#: shell/e-setup.c:163
-msgid "Could not update files correctly"
-msgstr "Àµ¤·¤¯¥Õ¥¡¥¤¥ë¤ò¹¹¿·½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: shell/e-setup.c:166 shell/e-setup.c:234
-msgid "Evolution files successfully installed."
-msgstr "Evolution ¤Î¥Õ¥¡¥¤¥ë¤ÏÀµ¤·¤¯¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤·¤¿"
-
-#: shell/e-setup.c:195
-msgid "This seems to be the first time you are running Evolution."
-msgstr "¤³¤ì¤Ï Evolution ¤ò¼Â¹Ô¤·¤¿ºÇ½é¤Î¤è¤¦¤Ë»×¤ï¤ì¤Þ¤¹"
-
-#: shell/e-setup.c:196
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr ""
-"Evolution ¥æ¡¼¥¶¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤¹¤Î¤Ç \"OK\" ¤ò¥¯¥ê¥Ã¥¯¤·¤Æ²¼¤µ¤¤"
-
-#: shell/e-setup.c:215
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®½ÐÍè¤Þ¤»¤ó\n"
-"\n"
-"¥¨¥é¡¼: %s"
-
-#: shell/e-setup.c:230
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-"'%s' ¤ÎÃæ¤Ë¥Õ¥¡¥¤¥ë¤ò\n"
-"¥³¥Ô¡¼½ÐÍè¤Þ¤»¤ó"
-
-#: shell/e-setup.c:255
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-"¥Õ¥¡¥¤¥ë '%s' ¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó\n"
-"Evolution ¥æ¡¼¥¶¥Õ¥¡¥¤¥ë¤Î¥¤¥ó¥¹¥È¡¼¥ë¤ò\n"
-"µöÍƤ¹¤ë¤¿¤á¤Ë°ÜÆ°¤·¤Æ²¼¤µ¤¤"
-
-#: shell/e-setup.c:267
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-"¥Ç¥£¥ì¥¯¥È¥ê '%s' ¤Ï¸ºß¤·¤Æ¤Þ¤¹¤¬¡¤Evolution\n"
-"¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥Evolution ¥æ¡¼¥¶\n"
-"¥Õ¥¡¥¤¥ë¤Î¥¤¥ó¥¹¥È¡¼¥ë¤òµöÍƤ¹¤ë¤¿¤á¤Ë°ÜÆ°¤·¤Æ²¼¤µ¤¤"
-
-#: shell/e-shell.c:388
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr "¶ÉÉôµ­²±ÁõÃ֤Υ»¥Ã¥È¥¢¥Ã¥×¤¬½ÐÍè¤Þ¤»¤ó -- %s"
-
-#: shell/e-shell.c:1268
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-"`%s' ¥Ó¥å¡¼¤ÏÆÍÁ³»àË´¤·¤Þ¤·¤¿ :-(\n"
-"¤³¤ì¤Ï¤¿¤Ö¤ó %s ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¥¯¥é¥Ã¥·¥å¤·¤¿¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹"
-
-#: shell/e-shell-folder-creation-dialog.c:99
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-"»ØÄꤵ¤ì¤¿¥Õ¥©¥ë¥À¤òºîÀ®¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó:\n"
-"%s"
-
-#: shell/e-shell-folder-creation-dialog.c:156
-msgid "The specified folder name is not valid."
-msgstr "»ØÄꤵ¤ì¤¿¥Õ¥©¥ë¥À̾¤ÏÍ­¸ú¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: shell/e-shell-folder-creation-dialog.c:263
-msgid "Evolution - Create new folder"
-msgstr "Evolution - ¿·µ¬¥Õ¥©¥ë¥À¤ÎºîÀ®"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-"ÁªÂò¤·¤¿¥Õ¥©¥ë¥À¤Î¼ïÊ̤ÏÍ׵ᤵ¤ì¤¿Áàºî¤Î¤¿¤á¤Ë\n"
-"Í­¸ú¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: shell/e-shell-folder-selection-dialog.c:321
-msgid "New..."
-msgstr "¿·µ¬..."
-
-#: shell/e-shell-folder-title-bar.c:459 shell/e-shell-folder-title-bar.c:460
-msgid "(Untitled)"
-msgstr "(¥¿¥¤¥È¥ë¤Ê¤·)"
-
-#: shell/e-shell-importer.c:97
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/e-shell-importer.c:192
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-"%s ¤ò¥¤¥ó¥Ý¡¼¥ÈÃæ\n"
-"¥¤¥ó¥Ý¡¼¥¿¤Î½àÈ÷¤¬½ÐÍè¤Æ¤¤¤Þ¤»¤ó\n"
-"5ÉÃÂԤäƺÆÅٻ¤Æ¤¯¤À¤µ¤¤"
-
-#: shell/e-shell-importer.c:212 shell/e-shell-importer.c:243
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-"%s ¤ò¥¤¥ó¥Ý¡¼¥ÈÃæ\n"
-"¥¢¥¤¥Æ¥à %d ¤ò¥¤¥ó¥Ý¡¼¥ÈÃæ"
-
-#: shell/e-shell-importer.c:353
-#, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr ""
-"°·¤¦¤³¤È¤¬½ÐÍè¤ë¥¤¥ó¥Ý¡¼¥È¤¬¤¢¤ê¤Þ¤»¤ó\n"
-"%s"
-
-#: shell/e-shell-importer.c:363
-msgid "Importing"
-msgstr "¥¤¥ó¥Ý¡¼¥ÈÃæ"
-
-#: shell/e-shell-importer.c:371
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-"%s ¤ò¥¤¥ó¥Ý¡¼¥ÈÃæ\n"
-"%s ¤ò³«»Ï¤·¤Þ¤¹"
-
-#: shell/e-shell-importer.c:384
-#, c-format
-msgid "Error starting %s"
-msgstr "%s ¤Î³«»ÏÃæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿"
-
-#: shell/e-shell-importer.c:404
-#, c-format
-msgid "Error loading %s"
-msgstr "%s ¤Î¥í¡¼¥ÉÃæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿"
-
-#: shell/e-shell-importer.c:419
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-"%s ¤ò¥¤¥ó¥Ý¡¼¥ÈÃæ\n"
-"¥¢¥¤¥Æ¥à 1 ¤ò¥¤¥ó¥Ý¡¼¥ÈÃæ"
-
-#: shell/e-shell-importer.c:490
-msgid "Automatic"
-msgstr "¼«Æ¯"
-
-#: shell/e-shell-importer.c:540
-msgid "Filename:"
-msgstr "¥Õ¥¡¥¤¥ë̾:"
-
-#: shell/e-shell-importer.c:545 shell/importer/import.glade.h:5
-msgid "Select a file"
-msgstr "¥Õ¥¡¥¤¥ë¤òÁªÂò"
-
-#: shell/e-shell-importer.c:555
-msgid "File type:"
-msgstr "¥Õ¥¡¥¤¥ë¼ïÊÌ:"
-
-#: shell/e-shell-importer.c:601
-msgid "Select folder"
-msgstr "¥Õ¥©¥ë¥À¤òÁªÂò"
-
-#: shell/e-shell-offline-handler.c:554
-msgid "Closing connections..."
-msgstr "Àܳ¤òÊĤ¸¤Æ¤¤¤Þ¤¹..."
-
-#: shell/e-shell-view.c:149
-msgid "(No folder displayed)"
-msgstr "(ɽ¼¨¤·¤¿¥Õ¥©¥ë¥À¤Ï¤¢¤ê¤Þ¤»¤ó)"
-
-#: shell/e-shell-view.c:1203
-#, c-format
-msgid "%s - Evolution %s"
-msgstr "%s - Evolution - %s"
-
-#: shell/e-shell-view.c:1205
-#, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "%s - Evolution %s [%s]"
-
-#: shell/e-shell-view-menu.c:175
-msgid "Bug buddy was not found in your $PATH."
-msgstr "Bug buddy ¤Ï¤¢¤Ê¤¿¤Î $PATH ¤Ë¤Ï¸«¤Ä¤«¤ê¤Þ¤»¤ó"
-
-#: shell/e-shell-view-menu.c:181
-msgid "Bug buddy could not be run."
-msgstr "Bug buddy ¤Ï¼Â¹Ô¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: shell/e-shell-view-menu.c:226
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Copyright 1999, 2000, 2001 Ximian, Inc."
-
-#: shell/e-shell-view-menu.c:228
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-"Evolution ¤Ï GNOME ¥Ç¥¹¥¯¥È¥Ã¥×\n"
-"´Ä¶­¤Ç¤Î¥á¡¼¥ë¡¤¥«¥ì¥ó¥À¡¤¤½¤·¤Æ\n"
-"¥³¥ó¥¿¥¯¥È¥Þ¥Í¡¼¥¸¥á¥ó¥È¤Î¤¿¤á¤Î\n"
-"¥°¥ë¡¼¥×¥¦¥§¥¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î\n"
-"¥Ñ¥Ã¥±¡¼¥¸¥½¥Õ¥È¤Ç¤¹"
-
-#: shell/e-shell-view-menu.c:392
-msgid "Go to folder..."
-msgstr "¥Õ¥©¥ë¥À¤Ø°ÜÆ°..."
-
-#: shell/e-shell-view-menu.c:576
-msgid "Work online"
-msgstr "¥ª¥ó¥é¥¤¥óºî¶È"
-
-#: shell/e-shell-view-menu.c:588 shell/e-shell-view-menu.c:600
-msgid "Work offline"
-msgstr "¥ª¥Õ¥é¥¤¥óºî¶È"
-
-#: shell/e-shortcuts.c:381
-msgid "Error saving shortcuts."
-msgstr "¥·¥ç¡¼¥È¥«¥Ã¥È¤ÎÊݸÃæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿"
-
-#: shell/e-shortcuts-view.c:134
-msgid "Create new shortcut group"
-msgstr "¿·µ¬¥·¥ç¡¼¥È¥«¥Ã¥È¥°¥ë¡¼¥×¤òºîÀ®¤·¤Þ¤¹"
-
-#: shell/e-shortcuts-view.c:137
-msgid "Group name:"
-msgstr "¥°¥ë¡¼¥×̾:"
-
-#: shell/e-shortcuts-view.c:260
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-"ËÜÅö¤Ë¥·¥ç¡¼¥È¥«¥Ã¥È¥Ð¡¼¤«¤é¥°¥ë¡¼¥×\n"
-"`%s' ¤òºï½ü¤·¤¿¤¤¤Ç¤¹¤«?"
-
-#: shell/e-shortcuts-view.c:265
-msgid "Don't remove"
-msgstr "ºï½ü¤·¤Þ¤»¤ó"
-
-#: shell/e-shortcuts-view.c:276
-msgid "_Small Icons"
-msgstr "¾®¤µ¤¤¥¢¥¤¥³¥ó(_S)"
-
-#: shell/e-shortcuts-view.c:277
-msgid "Show the shortcuts as small icons"
-msgstr "¾®¤µ¤¤¥¢¥¤¥³¥ó¤Ç¥·¥ç¡¼¥È¥«¥Ã¥È¤òɽ¼¨¤·¤Þ¤¹"
-
-#: shell/e-shortcuts-view.c:279
-msgid "_Large Icons"
-msgstr "Â礭¤¤¥¢¥¤¥³¥ó(_L)"
-
-#: shell/e-shortcuts-view.c:280
-msgid "Show the shortcuts as large icons"
-msgstr "Â礭¤¤¥¢¥¤¥³¥ó¤Ç¥·¥ç¡¼¥È¥«¥Ã¥È¤òɽ¼¨¤·¤Þ¤¹"
-
-#: shell/e-shortcuts-view.c:291
-msgid "_New Group..."
-msgstr "¿·µ¬¥°¥ë¡¼¥×(_N)..."
-
-#: shell/e-shortcuts-view.c:292
-msgid "Create a new shortcut group"
-msgstr "¿·µ¬¥·¥ç¡¼¥È¥«¥Ã¥È¥°¥ë¡¼¥×¤òºîÀ®¤·¤Þ¤¹"
-
-#: shell/e-shortcuts-view.c:294
-msgid "_Remove This Group..."
-msgstr "¤³¤Î¥°¥ë¡¼¥×¤òºï½ü(_R)..."
-
-#: shell/e-shortcuts-view.c:295
-msgid "Remove this shortcut group"
-msgstr "¤³¤Î¥·¥ç¡¼¥È¥«¥Ã¥È¥°¥ë¡¼¥×¤òºï½ü¤·¤Þ¤¹"
-
-#: shell/e-shortcuts-view.c:300
-msgid "_Hide the Shortcut Bar"
-msgstr "¥·¥ç¡¼¥È¥«¥Ã¥È¥Ð¡¼¤ò±£¤¹(_H)"
-
-#: shell/e-shortcuts-view.c:301
-msgid "Hide the shortcut bar"
-msgstr "¥·¥ç¡¼¥È¥«¥Ã¥È¥Ð¡¼¤ò±£¤·¤Þ¤¹"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate"
-msgstr "¥¢¥¯¥Æ¥£¥Ö"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate this shortcut"
-msgstr "¤³¤Î¥·¥ç¡¼¥È¥«¥Ã¥È¤ò¥¢¥¯¥Æ¥£¥Ö¤Ë¤·¤Þ¤¹"
-
-#: shell/e-shortcuts-view.c:388
-msgid "Remove this shortcut from the shortcut bar"
-msgstr "¥·¥ç¡¼¥È¥«¥Ã¥È¥Ð¡¼¤«¤é¤³¤Î¥·¥ç¡¼¥È¥«¥Ã¥È¤òºï½ü¤·¤Þ¤¹"
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr "(̾Á°¤Ê¤·)"
-
-#: shell/e-storage.c:459
-msgid "No error"
-msgstr "¥¨¥é¡¼¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: shell/e-storage.c:461
-msgid "Generic error"
-msgstr "°ìÈÌŪ¤Ê¥¨¥é¡¼"
-
-#: shell/e-storage.c:463
-msgid "A folder with the same name already exists"
-msgstr "Ʊ¤¸Ì¾Á°¤Î¥Õ¥©¥ë¥À¤¬¤¹¤Ç¤Ë¸ºß¤·¤Æ¤¤¤Þ¤¹"
-
-#: shell/e-storage.c:465
-msgid "The specified folder type is not valid"
-msgstr "»ØÄꤵ¤ì¤¿¥Õ¥©¥ë¥À¼ïÊ̤ÏÍ­¸ú¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-#: shell/e-storage.c:467
-msgid "I/O error"
-msgstr "I/O ¥¨¥é¡¼"
-
-#: shell/e-storage.c:469
-msgid "Not enough space to create the folder"
-msgstr "¥Õ¥©¥ë¥À¤òºîÀ®¤¹¤ë½½Ê¬¤Ê¶õ¤­¤¬¤¢¤ê¤Þ¤»¤ó"
-
-#: shell/e-storage.c:471
-msgid "The specified folder was not found"
-msgstr "»ØÄꤵ¤ì¤¿¥Õ¥©¥ë¥À¤Ï¸«ÉÕ¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: shell/e-storage.c:473
-msgid "Function not implemented in this storage"
-msgstr "µ¡Ç½¤Ï¤³¤Îµ­²±ÁõÃ֤ǤϼÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
-
-#: shell/e-storage.c:475
-msgid "Permission denied"
-msgstr "µö²Ä¤¬¤¢¤ê¤Þ¤»¤ó"
-
-#: shell/e-storage.c:477
-msgid "Operation not supported"
-msgstr "Áàºî¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
-
-#: shell/e-storage.c:479
-msgid "The specified type is not supported in this storage"
-msgstr "»ØÄꤵ¤ì¤¿¼ïÊ̤Ϥ³¤Îµ­²±ÁõÃ֤Ǥϥµ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-msgid "Folder name:"
-msgstr "¥Õ¥©¥ë¥À̾:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-msgid "Folder type:"
-msgstr "¥Õ¥©¥ë¥À¼ïÊÌ:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-msgid "Specify where to create the folder:"
-msgstr "¥Õ¥©¥ë¥À¤òºîÀ®¤¹¤ë¾ì½ê¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤:"
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-msgid "The Evolution shell."
-msgstr "Evolution ¥·¥§¥ë"
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr ""
-"\"¥¤¥ó¥Ý¡¼¥È\" ¤ò¥¯¥ê¥Ã¥¯¤·¤Æ Evolution "
-"¤Ø¥Õ¥¡¥¤¥ë¤Î¥¤¥ó¥Ý¡¼¥È¤ò³«»Ï¤·¤Æ¤¯¤À¤µ¤¤"
-
-#: shell/importer/import.glade.h:2
-msgid "Evolution Import Utility"
-msgstr "Evolution ¥¤¥ó¥Ý¡¼¥È¥æ¡¼¥Æ¥£¥ê¥Æ¥£"
-
-#: shell/importer/import.glade.h:3
-msgid "Evolution Importer Utility"
-msgstr "Evolution ¥¤¥ó¥Ý¡¼¥È¥æ¡¼¥Æ¥£¥ê¥Æ¥£"
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-"¤è¤¦¤³¤½, Evolution ¥¤¥ó¥Ý¡¼¥È¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Ø\n"
-"¤³¤Î¥¦¥£¥¶¡¼¥É¤Ç¤Ï Evolution ¤ÎÃæ¤Ë³°Éô¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥Ý¡¼¥È\n"
-"¤¹¤ë½èÍý¤òÄ̤·¤Æ°ÆÆ⤷¤Þ¤¹"
-
-#: shell/importer/intelligent.c:186
-msgid "Importers"
-msgstr "¥¤¥ó¥Ý¡¼¥È"
-
-#: shell/main.c:82
-#, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-"¤ä¤¢¡¤Evolution ¥°¥ë¡¼¥×¥¦¥§¥¢¥¹¥¤¡¼¥È¤Î¤³¤Î PREVIEW RELEASE ¤Î\n"
-"¥À¥¦¥ó¥í¡¼¥É¤Ë»þ´Ö¤ò³ä¤¤¤Æ¤¯¤ì¤Æ¤¢¤ê¤¬¤È¤¦\n"
-"\n"
-"Evolution ¤Ï̤´°À®¤Ç¤¹. ¤½¤ì¤Ï¶áÉÕ¤¤¤Æ¤¤¤Þ¤¹¤¬, ÆÃħ¤¬¤Ê¤¤¤«ºî¶È\n"
-"ÅÓÃæ¤Î½ê¤¬¤¢¤ë¤È¤¤¤¦¤³¤È¤Ç¤¹. ¤â¤·²¿¤«¤ò¤¹¤ëÊýË¡¤ò»×¤¤ÉÕ¤¯¤³¤È¤¬\n"
-"½ÐÍè¤Ê¤¤¤Ê¤é¤Ð, ¤¿¤Ö¤ó¤Þ¤À¤½¤ì¤ò¤¹¤ëÊýË¡¤¬¤Ê¤¤¤¿¤á¤Ç¤¹! :)\n"
-"\n"
-"²æ¡¹¤Ï Evolution ¤¬Í­ÍѤʤâ¤Î¤Ë¤Ê¤ë¤³¤È¤ò˾¤ó¤Ç¤¤¤Þ¤¹¤¬, ¤Þ¤À¼¡\n"
-"¤Î¤³¤È¤ËÂФ·¤ÆÃí°Õ¤¹¤ëɬÍפ¬¤¢¤ë¤è¤¦¤Ë´¶¤¸¤Þ¤¹: ¥¯¥é¥Ã¥·¥å¤·¤¿¤ê\n"
-"¥á¡¼¥ë¤òʶ¼º¤·¤¿¤ê, Æ°ºî¤·¤¿¥×¥í¥»¥¹¤¬»Ä¤Ã¤¿¤ê, CPU ¥Ñ¥ï¡¼¤ò 100%\n"
-"¾ÃÈñ¤·¤¿¤ê, ¥µ¡¼¥Ð¤ØÂбþ¤·¤Æ¤¤¤Ê¤¤¥³¥Þ¥ó¥É¤òÁ÷¿®¤·¤Æ, ¤¢¤Ê¤¿¤Î\n"
-"ͧ¿Í¤ä»Å»öÃç´Ö¤ÎÁ°¤Çº¤¤é¤»¤¿¤ê¤¹¤ë¤«¤â¤·¤ì¤Þ¤»¤ó.\n"
-"\n"
-"²æ¡¹¤Ï¤¢¤Ê¤¿¤¬²æ¡¹¤ÎÀ®²Ì¤ò³Ú¤·¤à¤³¤È¤ò˾¤ó¤Ç¤¤¤Þ¤¹¡¥¤½¤·¤Æ²æ¡¹¤Ï\n"
-"Ç®¿´¤Ë¤¢¤Ê¤¿¤Î¹×¸¥¤òÂÔ¤Á¼õ¤±¤Æ¤¤¤Þ¤¹!\n"
-
-#: shell/main.c:107
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-"¤¢¤ê¤¬¤È¤¦\n"
-"Evolution ¥Á¡¼¥à\n"
-
-#: shell/main.c:138
-msgid "Cannot initialize the Evolution shell."
-msgstr "Evolution ¥·¥§¥ë¤Î½é´ü²½¤¬½ÐÍè¤Þ¤»¤ó"
-
-#: shell/main.c:184
-msgid "Disable splash screen"
-msgstr "¥¹¥×¥é¥Ã¥·¥å²èÌ̤ò̵¸ú¤Ë¤¹¤ë"
-
-#: shell/main.c:185
-msgid "Send the debugging output of all components to a file."
-msgstr "¤¹¤Ù¤Æ¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¥Ç¥Ð¥Ã¥°½ÐÎϤò¥Õ¥¡¥¤¥ë¤ØÁ÷¤ë"
-
-#: shell/main.c:217
-msgid "Cannot initialize the Bonobo component system."
-msgstr "Bonobo ¥³¥ó¥Ý¡¼¥Í¥ó¥È¥·¥¹¥Æ¥à¤ò½é´ü²½½ÐÍè¤Þ¤»¤ó"
-
-#: ui/evolution-addressbook.xml.h:2
-msgid "Create new contact"
-msgstr "¿·µ¬¥³¥ó¥¿¥¯¥È¤òºîÀ®¤·¤Þ¤¹"
-
-#: ui/evolution-addressbook.xml.h:4
-msgid "Delete a contact"
-msgstr "¥³¥ó¥¿¥¯¥È¤òºï½ü¤·¤Þ¤¹"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-msgid "Find"
-msgstr "¸¡º÷"
-
-#: ui/evolution-addressbook.xml.h:6
-msgid "Find a contact"
-msgstr "¥³¥ó¥¿¥¯¥È¤ò¸¡º÷¤·¤Þ¤¹"
-
-#: ui/evolution-addressbook.xml.h:7
-msgid "New contact"
-msgstr "¿·µ¬¥³¥ó¥¿¥¯¥È"
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-mail.xml.h:63
-msgid "Previews the message to be printed"
-msgstr "°õºþ¤µ¤ì¤ë¥á¥Ã¥»¡¼¥¸¤Î¥×¥ì¥Ó¥å¡¼¤òɽ¼¨¤·¤Þ¤¹"
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "Print contacts"
-msgstr "¥³¥ó¥¿¥¯¥È¤ò°õºþ¤·¤Þ¤¹"
-
-#: ui/evolution-addressbook.xml.h:12
-msgid "Stop"
-msgstr "Ää»ß"
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "Stop Loading"
-msgstr "±Ó¤ß¹þ¤ß¤òÄä»ß¤·¤Þ¤¹"
-
-#: ui/evolution-addressbook.xml.h:14
-msgid "View All"
-msgstr "¤¹¤Ù¤Æɽ¼¨"
-
-#: ui/evolution-addressbook.xml.h:15
-msgid "View all contacts"
-msgstr "¤¹¤Ù¤Æ¤Î¥³¥ó¥¿¥¯¥È¤òɽ¼¨¤·¤Þ¤¹"
-
-#: ui/evolution-addressbook.xml.h:16
-msgid "_Addressbook Sources..."
-msgstr "¥¢¥É¥ì¥¹Ä¢¤Î¥½¡¼¥¹(_A)..."
-
-#: ui/evolution-addressbook.xml.h:17
-msgid "_Contact"
-msgstr "¥³¥ó¥¿¥¯¥È(_C)"
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-msgid "_Print..."
-msgstr "°õºþ(_P)..."
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr "¥³¥ó¥¿¥¯¥È¤Î¸¡º÷(_S)"
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-task-editor-dialog.xml.h:88
-#: ui/evolution.xml.h:64
-msgid "_Tools"
-msgstr "¥Ä¡¼¥ë(_T)"
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr "5 Æü"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-msgid "Alter preferences"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:4
-msgid "Create a new all day Event"
-msgstr "¿·µ¬¤ËËèÆü¤Î¥¤¥Ù¥ó¥È¤òºîÀ®¤·¤Þ¤¹"
-
-#: ui/evolution-calendar.xml.h:5
-msgid "Create a new appointment"
-msgstr "¿·µ¬Ìó«¤òºîÀ®¤·¤Þ¤¹"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr "¿·µ¬¥«¥ì¥ó¥À¤òºîÀ®¤·¤Þ¤¹"
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr "Æü"
-
-#: ui/evolution-calendar.xml.h:8
-msgid "Go To"
-msgstr "°ÜÆ°"
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr "»þ´Ö¤òÌᤷ¤Þ¤¹"
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go forward in time"
-msgstr "»þ´Ö¤ò¿Ê¤á¤Þ¤¹"
-
-#: ui/evolution-calendar.xml.h:11
-msgid "Go to _Date"
-msgstr "»ØÄêÆü¤Ë°ÜÆ°(_D)"
-
-#: ui/evolution-calendar.xml.h:12
-msgid "Go to _Today"
-msgstr "º£Æü¤Ø°ÜÆ°(_T)"
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr "»ØÄêÆü¤Ë°ÜÆ°¤·¤Þ¤¹"
-
-#: ui/evolution-calendar.xml.h:14
-msgid "Go to present time"
-msgstr "¸½ºß¤Î»þ´Ö¤Ø°ÜÆ°¤·¤Þ¤¹"
-
-#: ui/evolution-calendar.xml.h:15
-msgid "Month"
-msgstr "·î"
-
-#: ui/evolution-calendar.xml.h:17
-msgid "New _Event"
-msgstr "¿·µ¬¥¤¥Ù¥ó¥È(_E)"
-
-#: ui/evolution-calendar.xml.h:20
-msgid "Open Calendar"
-msgstr "¥«¥ì¥ó¥À¤ò³«¤¯"
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Prev"
-msgstr "Á°"
-
-#: ui/evolution-calendar.xml.h:22
-msgid "Previews the calendar to be printed"
-msgstr "°õºþ¤µ¤ì¤ë¥«¥ì¥ó¥À¤Î¥×¥ì¥Ó¥å¡¼¤òɽ¼¨¤·¤Þ¤¹"
-
-#: ui/evolution-calendar.xml.h:25
-msgid "Print calendar"
-msgstr "¥«¥ì¥ó¥À¤Î°õºþ"
-
-#: ui/evolution-calendar.xml.h:26
-msgid "Print this Calendar"
-msgstr "¤³¤Î¥«¥ì¥ó¥À¤Î°õºþ¤·¤Þ¤¹"
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:18
-msgid "Save As"
-msgstr "ÊÌ̾¤ÇÊݸ"
-
-#: ui/evolution-calendar.xml.h:28
-msgid "Save calendar as something else"
-msgstr "Ê̤Τâ¤Î¤È¤·¤Æ¥«¥ì¥ó¥À¤òÊݸ¤·¤Þ¤¹"
-
-#: ui/evolution-calendar.xml.h:30
-msgid "Show 1 day"
-msgstr "1 Æü¤òɽ¼¨¤·¤Þ¤¹"
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr "1 ¥ö·î¤òɽ¼¨¤·¤Þ¤¹"
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr "1 ½µ´Ö¤òɽ¼¨¤·¤Þ¤¹"
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr "½µ´ÖϫƯ»þ´Ö¤òɽ¼¨¤·¤Þ¤¹"
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:229
-#: widgets/misc/e-dateedit.c:424
-msgid "Today"
-msgstr "º£Æü"
-
-#: ui/evolution-calendar.xml.h:35
-msgid "W_ork Week"
-msgstr "½µ´ÖϫƯ»þ´Ö(_o)"
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr "½µ"
-
-#: ui/evolution-calendar.xml.h:37
-msgid "_Appointment"
-msgstr "Ìó«(_A)"
-
-#: ui/evolution-calendar.xml.h:38
-msgid "_Day"
-msgstr "Æü(_D)"
-
-#: ui/evolution-calendar.xml.h:39
-msgid "_Month"
-msgstr "·î(_M)"
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:58
-msgid "_New"
-msgstr "¿·µ¬(_N)"
-
-#: ui/evolution-calendar.xml.h:41
-msgid "_Open Calendar"
-msgstr "¥«¥ì¥ó¥À¤ò³«¤¯(_O)"
-
-#: ui/evolution-calendar.xml.h:45
-msgid "_Week"
-msgstr "½µ(_W)"
-
-#: ui/evolution-contact-editor.xml.h:2
-msgid "Delete this item"
-msgstr "¤³¤Î¥¢¥¤¥Æ¥à¤òºï½ü¤·¤Þ¤¹"
-
-#: ui/evolution-contact-editor.xml.h:3
-msgid "Delete..."
-msgstr "ºï½ü..."
-
-#: ui/evolution-contact-editor.xml.h:4
-msgid "Help"
-msgstr "¥Ø¥ë¥×"
-
-#: ui/evolution-contact-editor.xml.h:5
-msgid "Print En_velope..."
-msgstr "ɽ»æ¤ò°õºþ(_v)..."
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-msgid "Print this item"
-msgstr "¤³¤Î¥¢¥¤¥Æ¥à¤ò°õºþ"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:41
-msgid "Print..."
-msgstr "°õºþ..."
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:19
-#: ui/evolution-task-editor-dialog.xml.h:51
-msgid "Save _As..."
-msgstr "ÊÌ̾¤ÇÊݸ(_A)..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-msgid "Save and Close"
-msgstr "Êݸ¤ÈÊĤ¸¤ë"
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr "¥³¥ó¥¿¥¯¥È¤òÊݸ¤·¤Æ¤³¤Î¥À¥¤¥¢¥í¥°¥Ü¥Ã¥¯¥¹¤òÊĤ¸¤Þ¤¹"
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr "¾¤Ø¥³¥ó¥¿¥¯¥È¤òÁ÷¿®(_n)..."
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr "¥ª¥ó¥é¥¤¥ó¥Ø¥ë¥×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤"
-
-#: ui/evolution-contact-editor.xml.h:13
-msgid "Send _message to contact..."
-msgstr "¥³¥ó¥¿¥¯¥È¤Ø¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®(_m)..."
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:46 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:49
-msgid "_File"
-msgstr "¥Õ¥¡¥¤¥ë(_F)"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:53
-#: ui/evolution-task-editor-dialog.xml.h:85
-msgid "_Save"
-msgstr "Êݸ(_S)"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr "¤³¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ"
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr "¾ðÊó..."
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-msgid "Actio_ns"
-msgstr "Æ°ºî(_n)"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-msgid "Address _Book... (FIXME)"
-msgstr "¥¢¥É¥ì¥¹Ä¢(_B)... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-msgid "C_lear"
-msgstr "¥¯¥ê¥¢(_l)"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-msgid "C_ut"
-msgstr "ÀÚ¤ê¼è¤ê(_u)"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-msgid "Chec_k Names (FIXME)"
-msgstr "̾Á°¤Î¥Á¥§¥Ã¥¯ (_k) (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-msgid "Clear"
-msgstr "¥¯¥ê¥¢"
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-msgid "Clear the selection"
-msgstr "ÁªÂò¤µ¤ì¤¿¤â¤Î¤ò¥¯¥ê¥¢¤·¤Þ¤¹"
-
-#: ui/evolution-event-editor.xml.h:11
-msgid "Close this appointment"
-msgstr "¤³¤ÎÌó«¤òÊĤ¸¤Þ¤¹"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "¥Õ¥©¥ë¥À¤Ø¥³¥Ô¡¼(_y)... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:8
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "¥³¥Ô¡¼"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-msgid "Copy the selection"
-msgstr "ÁªÂò¤µ¤ì¤¿¤â¤Î¤ò¥³¥Ô¡¼¤·¤Þ¤¹"
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr "ÀÚ¤ê¼è¤ê"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Cut the selection"
-msgstr "ÁªÂò¤µ¤ì¤¿¤â¤Î¤òÀÚ¤ê¼è¤ê¤Þ¤¹"
-
-#: ui/evolution-event-editor.xml.h:18
-msgid "Delete this appointment"
-msgstr "¤³¤ÎÌó«¤òºï½ü"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr "XML¤Î¥À¥ó¥×"
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr "UI XML ¤Îµ­½Ò¤ò¥À¥ó¥×¤·¤Þ¤¹"
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr "¥Õ¥©¥ë¥À¤ÎºÇ½é¤Î¥¢¥¤¥Æ¥à(_r) (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-msgid "For_ward (FIXME)"
-msgstr "žÁ÷(_w) (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr "vCalender¤È¤·¤ÆžÁ÷(_C) (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-msgid "Go to the next item"
-msgstr "¼¡¤Î¥¢¥¤¥Æ¥à¤Ø°ÜÆ°¤·¤Þ¤¹"
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-msgid "Go to the previous item"
-msgstr "Á°¤Î¥¢¥¤¥Æ¥à¤Ø°ÜÆ°¤·¤Þ¤¹"
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-msgid "In_complete Task (FIXME)"
-msgstr "̤´°Î»¥¿¥¹¥¯(_c) (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-msgid "Modify the file's properties"
-msgstr "¥Õ¥¡¥¤¥ë¤Î¥×¥í¥Ñ¥Æ¥£¤ò½¤Àµ¤·¤Þ¤¹"
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-msgid "N_ext"
-msgstr "¼¡(_e)"
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-msgid "Paste"
-msgstr "Ž¤êÉÕ¤±"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-msgid "Paste the clipboard"
-msgstr "¥¯¥ê¥Ã¥×¥Ü¡¼¥É¤ØŽ¤êÉÕ¤±¤Þ¤¹"
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr "Á°(_v)"
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-msgid "Print Pre_view"
-msgstr "°õºþ¥×¥ì¥Ó¥å¡¼(_v)"
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-msgid "Print S_etup..."
-msgstr "¥×¥ê¥ó¥¿¤ÎÀßÄê(_e)..."
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-msgid "Print Setup"
-msgstr "¥×¥ê¥ó¥¿¤ÎÀßÄê"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:17
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:241
-msgid "Save"
-msgstr "Êݸ"
-
-#: ui/evolution-event-editor.xml.h:43
-msgid "Save the appointment and close the dialog box"
-msgstr "Ìó«¤òÊݸ¤·¤Æ¥À¥¤¥¢¥í¥°¥Ü¥Ã¥¯¥¹¤òÊĤ¸¤Þ¤¹"
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:23
-#: ui/evolution-task-editor-dialog.xml.h:53
-msgid "Save the current file"
-msgstr "¸½ºß¤Î¥Õ¥¡¥¤¥ë¤òÊݸ¤·¤Þ¤¹"
-
-#: ui/evolution-event-editor.xml.h:46
-msgid "Schedule _Meeting"
-msgstr "Âǹ礻¤Î¥¹¥±¥¸¥å¡¼¥ë(_M)"
-
-#: ui/evolution-event-editor.xml.h:47
-msgid "Schedule some sort of a meeting"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-task-editor-dialog.xml.h:57
-msgid "Select All"
-msgstr "¤¹¤Ù¤ÆÁªÂò"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-msgid "Select everything"
-msgstr "¤¹¤Ù¤Æ¤Î¤â¤Î¤òÁªÂò¤·¤Þ¤¹"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr "¸½ºß¤Î¥×¥ê¥ó¥¿¤Î¥Ú¡¼¥¸ÀßÄê¤ò¹Ô¤¤¤Þ¤¹"
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-msgid "Task _Request (FIXME)"
-msgstr "¥¿¥¹¥¯Í×µá(_R) (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-task-editor-dialog.xml.h:63
-msgid "_About..."
-msgstr "¾ðÊó(_A)..."
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:43
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:43
-msgid "_Close"
-msgstr "ÊĤ¸¤ë(_C)"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:44
-msgid "_Contact (FIXME)"
-msgstr "¥³¥ó¥¿¥¯¥È(_C) (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-msgid "_Copy"
-msgstr "¥³¥Ô¡¼(_C)"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:44
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr "¥Ç¥Ð¥Ã¥°(_D)"
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:48
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:53
-msgid "_Help"
-msgstr "¥Ø¥ë¥×(_H)"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-msgid "_Item (FIXME)"
-msgstr "¥¢¥¤¥Æ¥à(_I) (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-msgid "_Journal Entry (FIXME)"
-msgstr "»ÅÌõµ­Æþ(_J) (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-msgid "_Last Item in Folder (FIXME)"
-msgstr "¥Õ¥©¥ë¥À¤ÎºÇ¸å¤Î¥¢¥¤¥Æ¥à(_L) (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-msgid "_Mail Message (FIXME)"
-msgstr "¥á¥Ã¥»¡¼¥¸¤ò¥á¡¼¥ë(_M) (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-msgid "_Move to Folder... (FIXME)"
-msgstr "¥Õ¥©¥ë¥À¤Ø°ÜÆ°(_M)... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-msgid "_Note (FIXME)"
-msgstr "¥Î¡¼¥È(_N) (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-msgid "_Paste"
-msgstr "Ž¤êÉÕ¤±(_P)"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:115
-#: ui/evolution-task-editor-dialog.xml.h:83 ui/evolution.xml.h:60
-msgid "_Properties..."
-msgstr "¥×¥í¥Ñ¥Æ¥£(_P)..."
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-msgid "_Select All"
-msgstr "¤¹¤Ù¤ÆÁªÂò(_A)"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:63
-msgid "_Task (FIXME)"
-msgstr "¥¿¥¹¥¯(_T) (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-msgid "_Unread Item (FIXME)"
-msgstr "̤ÆÉ¥¢¥¤¥Æ¥à(_U) (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:76 ui/evolution-message-composer.xml.h:55
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:65
-msgid "_View"
-msgstr "ɽ¼¨(_V)"
-
-#: ui/evolution-executive-summary.xml.h:1
-msgid "Add Service"
-msgstr "¥µ¡¼¥Ó¥¹¤ÎÄɲÃ"
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr "¼Â¹Ô¥µ¥Þ¥ê¡¼¤Ø¿·µ¬¥µ¡¼¥Ó¥¹¤òÄɲä·¤Þ¤¹"
-
-#: ui/evolution-executive-summary.xml.h:3
-msgid "Create a new email"
-msgstr "¿·µ¬¥á¡¼¥ë¤òºîÀ®¤·¤Þ¤¹"
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr "¼Â¹Ô¥µ¥Þ¥ê¡¼¤ÎÀßÄê..."
-
-#: ui/evolution-executive-summary.xml.h:5
-msgid "New Mail"
-msgstr "¿·µ¬¥á¡¼¥ë"
-
-#: ui/evolution-mail.xml.h:1
-msgid "Apply filter rules to the selected messages"
-msgstr "ÁªÂò¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤Ø¥Õ¥£¥ë¥¿¥ë¡¼¥ë¤òŬÍѤ·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:2
-msgid "Cancel"
-msgstr "¥­¥ã¥ó¥»¥ë¤·¤Þ¤·¤¿"
-
-#: ui/evolution-mail.xml.h:3
-msgid "Cancel the current mail operation"
-msgstr "¸½ºß¤Î¥á¡¼¥ëÁàºî¤ò¥­¥ã¥ó¥»¥ë¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:4
-msgid "Change the properties of this folder"
-msgstr "¤³¤Î¥Õ¥©¥ë¥À¤ÎÀßÄê¤òÊѹ¹¤¹¤ë"
-
-#: ui/evolution-mail.xml.h:5
-msgid "Compose"
-msgstr "ºîÀ®"
-
-#: ui/evolution-mail.xml.h:6
-msgid "Compose a reply to all of the recipients of the selected message"
-msgstr "ÁªÂò¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤Î¼õ¿®¼ÔÁ´°÷¤Ø¤ÎÊÖ¿®¤òºîÀ®¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:7
-msgid "Compose a reply to the sender of the selected message"
-msgstr "ÁªÂò¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤ÎÁ÷¿®¼Ô¤Ø¤ÎÊÖ¿®¤òºîÀ®¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:9
-msgid "Copy selected messages to another folder"
-msgstr "Ê̤Υե©¥ë¥À¤ØÁªÂò¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤ò¥³¥Ô¡¼¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:10
-msgid "Create _Virtual Folder From Message"
-msgstr "¥á¥Ã¥»¡¼¥¸¤«¤é²¾ÁÛ¥Õ¥©¥ë¥À¤òºîÀ®(_V)"
-
-#: ui/evolution-mail.xml.h:11
-msgid "Create a rule to filter messages from this sender"
-msgstr "¤³¤ÎÁ÷¿®¼Ô¤«¤é¤Î¥á¥Ã¥»¡¼¥¸¤ò¥Õ¥£¥ë¥¿¤¹¤ë¥ë¡¼¥ë¤òºîÀ®¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:12
-msgid "Create a rule to filter messages to these recipients"
-msgstr "¤³¤ì¤é¤Î¼õ¿®¼Ô¤Ø¤Î¥á¥Ã¥»¡¼¥¸¤ò¥Õ¥£¥ë¥¿¤¹¤ë¥ë¡¼¥ë¤òºîÀ®¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:13
-msgid "Create a rule to filter messages to this mailing list"
-msgstr "¤³¤Î¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Ø¤Î¥á¥Ã¥»¡¼¥¸¤ò¥Õ¥£¥ë¥¿¤¹¤ë¥ë¡¼¥ë¤òºîÀ®¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:14
-msgid "Create a rule to filter messages with this subject"
-msgstr "¤³¤Î·ï̾¤Î¥á¥Ã¥»¡¼¥¸¤ò¥Õ¥£¥ë¥¿¤¹¤ë¥ë¡¼¥ë¤òºîÀ®¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:15
-msgid "Create a virtual folder for these recipients"
-msgstr "¤³¤ì¤é¤Î¼õ¿®¼Ô¤Î¤¿¤á¤Î²¾ÁÛ¥Õ¥©¥ë¥À¤òºîÀ®¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:16
-msgid "Create a virtual folder for this mailing list"
-msgstr "¤³¤Î¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Î¤¿¤á¤Î²¾ÁÛ¥Õ¥©¥ë¥À¤òºîÀ®¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:17
-msgid "Create a virtual folder for this sender"
-msgstr "¤³¤ÎÁ÷¿®¼Ô¤Î¤¿¤á¤Î²¾ÁÛ¥Õ¥©¥ë¥À¤òºîÀ®¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:18
-msgid "Create a virtual folder for this subject"
-msgstr "¤³¤Î·ï̾¤Î¤¿¤á¤Î²¾ÁÛ¥Õ¥©¥ë¥À¤òºîÀ®¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:19
-msgid "Create or edit mail accounts and other preferences"
-msgstr "¥á¡¼¥ë¥¢¥«¥¦¥ó¥È¤È¾¤ÎÀßÄê¤òºîÀ®/ÊÔ½¸¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:20
-msgid "Create or edit rules for filtering new mail"
-msgstr "¿·µ¬¥á¡¼¥ë¤ò¥Õ¥£¥ë¥¿¤¹¤ë¥ë¡¼¥ë¤ÎºîÀ®/ÊÔ½¸¤ò¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:21
-msgid "Create or edit virtual folder definitions"
-msgstr "²¾ÁÛ¥Õ¥©¥ë¥À¤ÎÄêµÁ¤òºîÀ®/ÊÔ½¸¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:23
-msgid "Display the next message"
-msgstr "¼¡¤Î¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:24
-msgid "Display the previous message"
-msgstr "Á°¤Î¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:25
-msgid "Empty _Trash"
-msgstr "¥´¥ßÈ¢¤ò¶õ¤Ë¤¹¤ë(_T)"
-
-#: ui/evolution-mail.xml.h:26
-msgid "Filter on Mailing _List"
-msgstr "¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Î¥Õ¥£¥ë¥¿(_L)"
-
-#: ui/evolution-mail.xml.h:27
-msgid "Filter on Se_nder"
-msgstr "Á÷¿®¼Ô¤Î¥Õ¥£¥ë¥¿(_n)"
-
-#: ui/evolution-mail.xml.h:28
-msgid "Filter on _Recipients"
-msgstr "¼õ¿®¼Ô¤Î¥Õ¥£¥ë¥¿(_R)"
-
-#: ui/evolution-mail.xml.h:29
-msgid "Filter on _Subject"
-msgstr "·ï̾¤Î¥Õ¥£¥ë¥¿(_S)"
-
-#: ui/evolution-mail.xml.h:30
-msgid "Force images in HTML mail to be loaded"
-msgstr "¶¯À©Åª¤Ë HTML ¥á¡¼¥ë¤Î²èÁü¤òÆɤ߹þ¤à"
-
-#: ui/evolution-mail.xml.h:31
-msgid "Forget _Passwords"
-msgstr "¥Ñ¥¹¥ï¡¼¥É¤Îʶ¼º(_P)"
-
-#: ui/evolution-mail.xml.h:32
-msgid "Forget remembered passwords so you will be prompted for them again"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:34
-msgid "Forward As"
-msgstr "žÁ÷"
-
-#: ui/evolution-mail.xml.h:35
-msgid "Forward _Attached"
-msgstr "źÉÕ¤·¤ÆžÁ÷(_A)"
-
-#: ui/evolution-mail.xml.h:36
-msgid "Forward _Inline"
-msgstr "¥¤¥ó¥é¥¤¥ó¤ÇžÁ÷(_I)"
-
-#: ui/evolution-mail.xml.h:37
-msgid "Forward _Quoted"
-msgstr "°úÍѤ·¤ÆžÁ÷(_Q)"
-
-#: ui/evolution-mail.xml.h:38
-msgid "Forward the selected message in the body of a new message"
-msgstr "¿·µ¬¥á¥Ã¥»¡¼¥¸¤ÎËÜʸ¤ÎÃæ¤ËÁªÂò¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤òžÁ÷¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:39
-msgid "Forward the selected message quoted like a reply"
-msgstr "°úÍѤ·¤ÆÁªÂò¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤òžÁ÷¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:40
-msgid "Forward the selected message to someone"
-msgstr "狼¤ØÁªÂò¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤òžÁ÷¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:41
-msgid "Forward the selected message to someone as an attachment"
-msgstr "źÉդȤ·¤Æ狼¤ØÁªÂò¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤òžÁ÷¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:42
-msgid "Hide S_elected Messages"
-msgstr "ÁªÂò¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤ò±£¤¹(_e)"
-
-#: ui/evolution-mail.xml.h:43
-msgid "Hide _Deleted Messages"
-msgstr "ºï½ü¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤ò±£¤¹(_D)"
-
-#: ui/evolution-mail.xml.h:44
-msgid "Hide _Read messages"
-msgstr "´ûÆÉ¥á¥Ã¥»¡¼¥¸¤ò±£¤¹(_R)"
-
-#: ui/evolution-mail.xml.h:45
-msgid ""
-"Hide deleted messages rather than displaying them with a line through them"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:46
-msgid "Load _Images"
-msgstr "²èÁü¤òÆɤ߹þ¤à(_I)"
-
-#: ui/evolution-mail.xml.h:47
-msgid "Manage _Subscriptions..."
-msgstr "Äê´ü¹ØÆÉ´ÉÍý(_S)..."
-
-#: ui/evolution-mail.xml.h:48
-msgid "Mar_k As Read"
-msgstr "´ûÆɤȤ·¤Æ¥Þ¡¼¥¯(_k)"
-
-#: ui/evolution-mail.xml.h:49
-msgid "Mark All as R_ead"
-msgstr "´ûÆɤȤ·¤Æ¤¹¤Ù¤Æ¥Þ¡¼¥¯(_e)"
-
-#: ui/evolution-mail.xml.h:50
-msgid "Mark As U_nread"
-msgstr "̤ÆɤȤ·¤Æ¥Þ¡¼¥¯(_n)"
-
-#: ui/evolution-mail.xml.h:51
-msgid "Mark all visible messages as read"
-msgstr "´ûÆɤȤ·¤Æ¤¹¤Ù¤Æ¤Î¥á¥Ã¥»¡¼¥¸¤ò¥Þ¡¼¥¯¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:52
-msgid "Mark the selected messages as having been read"
-msgstr "´ûÆɤȤ·¤ÆÁªÂò¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤ò¥Þ¡¼¥¯¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:53
-msgid "Mark the selected messages as not having been read"
-msgstr "̤ÆɤȤ·¤ÆÁªÂò¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤ò¥Þ¡¼¥¯¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:54
-msgid "Mark the selected messages for deletion"
-msgstr "ÁªÂò¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤Ëºï½ü¥Þ¡¼¥¯¤ò¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:55
-msgid "Move"
-msgstr "°ÜÆ°"
-
-#: ui/evolution-mail.xml.h:56
-msgid "Move selected messages to another folder"
-msgstr "Ê̤Υե©¥ë¥À¤ØÁªÂò¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤ò°ÜÆ°¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:58
-msgid "Open a window for composing a mail message"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:59
-msgid "Open the selected message in a new window"
-msgstr "¿·µ¬¥¦¥£¥ó¥É¥¦¤ÇÁªÂò¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤ò³«¤­¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:60
-#, fuzzy
-msgid "Open the selected message in the composer to re-send it"
-msgstr "´ûÆɤȤ·¤ÆÁªÂò¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤ò¥Þ¡¼¥¯¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:61
-msgid "Permanently remove all deleted messages from all folders"
-msgstr "¤¹¤Ù¤Æ¤Î¥Õ¥©¥ë¥À¤«¤éºï½ü¥Þ¡¼¥¯¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤ò±Êµ×Ū¤Ëºï½ü¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:62
-msgid "Permanently remove all deleted messages from this folder"
-msgstr "¸Ä¤Î¥Õ¥©¥ë¥À¤«¤éºï½ü¥Þ¡¼¥¯¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤ò±Êµ×Ū¤Ëºï½ü¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:66
-msgid "Print Message..."
-msgstr "¥á¥Ã¥»¡¼¥¸¤ò°õºþ..."
-
-#: ui/evolution-mail.xml.h:67
-msgid "Print Preview..."
-msgstr "°õºþ¥×¥ì¥Ó¥å¡¼..."
-
-#: ui/evolution-mail.xml.h:68
-msgid "Print message to the printer"
-msgstr "¥á¥Ã¥»¡¼¥¸¤ò¥×¥ê¥ó¥¿¤Ø°õºþ¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:69
-msgid "Redirect (FIXME: implement me)"
-msgstr "°¸Ì¾¤ò½ñ¤­´¹¤¨¤ë (FIXME: ¼ÂÁõ¤·¤Æ¤¯¤À¤µ¤¤)"
-
-#: ui/evolution-mail.xml.h:73
-msgid "S_earch Message"
-msgstr "¥á¥Ã¥»¡¼¥¸¤ò¸¡º÷(_e)"
-
-#: ui/evolution-mail.xml.h:74
-msgid "Save the message as a text file"
-msgstr "¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Ø¥á¥Ã¥»¡¼¥¸¤òÊݸ¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:75
-msgid "Search for text in the body of the displayed message"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:76 ui/evolution-subscribe.xml.h:7
-msgid "Select _All"
-msgstr "¤¹¤Ù¤ÆÁªÂò(_A)"
-
-#: ui/evolution-mail.xml.h:77
-msgid "Select _Thread"
-msgstr "¥¹¥ì¥Ã¥É¤òÁªÂò(_T)"
-
-#: ui/evolution-mail.xml.h:78
-msgid "Select all and only the messages that are not currently selected"
-msgstr "¸½ºßÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¥á¥Ã¥»¡¼¥¸¤À¤±¤ò¤¹¤Ù¤ÆÁªÂò¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:79
-msgid "Select all messages in the same thread as the selected message"
-msgstr "ÁªÂò¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤ÈƱ¤¸¥¹¥ì¥Ã¥É¤Î¥á¥Ã¥»¡¼¥¸¤ò¤¹¤Ù¤ÆÁªÂò¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:80
-msgid "Select all visible messages"
-msgstr "¤¹¤Ù¤Æ¤Î¥á¥Ã¥»¡¼¥¸¤òÁªÂò¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:81
-msgid "Send / Receive"
-msgstr "Á÷¼õ¿®"
-
-#: ui/evolution-mail.xml.h:82
-msgid "Send queued mail and retrieve new mail"
-msgstr "¥­¥å¡¼¤Ë¤¢¤ë¥á¡¼¥ë¤òÁ÷¿®¤·¤Æ¿·µ¬¥á¡¼¥ë¤ò¼èÆÀ¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:83
-msgid "Show Email _Source"
-msgstr "¥á¡¼¥ë¤Î¥½¡¼¥¹¤òɽ¼¨(_S)"
-
-#: ui/evolution-mail.xml.h:84
-msgid "Show Full _Headers"
-msgstr "¤¹¤Ù¤Æ¤Î¥Ø¥Ã¥À¤òɽ¼¨(_H)"
-
-#: ui/evolution-mail.xml.h:85
-msgid "Show _All"
-msgstr "¤¹¤Ù¤Æɽ¼¨(_A)"
-
-#: ui/evolution-mail.xml.h:86
-msgid "Show message in the normal style"
-msgstr "Ä̾ï¤Î¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:87
-msgid "Show message with all email headers"
-msgstr "¤¹¤Ù¤Æ¤Î¥á¡¼¥ë¥Ø¥Ã¥À¤â´Þ¤á¤Æ¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:88
-msgid "Show messages that have been temporarily hidden"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:89
-msgid "Show the raw email source of the message"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:90
-msgid "Subscribe or unsubscribe to folders on remote servers"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:91
-#, fuzzy
-msgid "Temporarily hide all messages that have already been read"
-msgstr "´ûÆɤȤ·¤ÆÁªÂò¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤ò¥Þ¡¼¥¯¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:92
-#, fuzzy
-msgid "Temporarily hide the selected messages"
-msgstr "ÁªÂò¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤òºï½ü¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:93
-msgid "Threaded Message list"
-msgstr "¥á¥Ã¥»¡¼¥¸¥ê¥¹¥È¤ò¥¹¥ì¥Ã¥É²½¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:94
-msgid "Un-delete the selected messages"
-msgstr "ÁªÂò¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸ºï½ü¤ò¼è¤ê¾Ã¤·¤Þ¤¹"
-
-#: ui/evolution-mail.xml.h:95
-msgid "VFolder on Mailing _List..."
-msgstr "¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Î²¾ÁÛ¥Õ¥©¥ë¥À(_L)..."
-
-#: ui/evolution-mail.xml.h:96
-msgid "VFolder on Se_nder..."
-msgstr "Á÷¿®¼Ô¤Î²¾ÁÛ¥Õ¥©¥ë¥À(_n)..."
-
-#: ui/evolution-mail.xml.h:97
-msgid "VFolder on _Recipients..."
-msgstr "¼õ¿®¼Ô¤Î²¾ÁÛ¥Õ¥©¥ë¥À(_R)..."
-
-#: ui/evolution-mail.xml.h:98
-msgid "VFolder on _Subject..."
-msgstr "·ï̾¤Î²¾ÁÛ¥Õ¥©¥ë¥À(_S)..."
-
-#: ui/evolution-mail.xml.h:99
-msgid "Virtual Folder _Editor..."
-msgstr "²¾ÁÛ¥Õ¥©¥ë¥À¥¨¥Ç¥£¥¿(_E)..."
-
-#: ui/evolution-mail.xml.h:100
-msgid "_Apply Filters"
-msgstr "¥Õ¥£¥ë¥¿Å¬ÍÑ(_A)"
-
-#: ui/evolution-mail.xml.h:101
-msgid "_Copy to Folder"
-msgstr "¥Õ¥©¥ë¥À¤Ø¥³¥Ô¡¼(_C)"
-
-#: ui/evolution-mail.xml.h:102
-msgid "_Create Filter From Message"
-msgstr "¥á¥Ã¥»¡¼¥¸¤«¤é¥Õ¥£¥ë¥¿¤òºîÀ®(_C)"
-
-#: ui/evolution-mail.xml.h:104
-msgid "_Expunge"
-msgstr "Ëõ¾Ã(_E)"
-
-#: ui/evolution-mail.xml.h:105
-msgid "_Filters..."
-msgstr "¥Õ¥£¥ë¥¿(_F)..."
-
-#: ui/evolution-mail.xml.h:106 ui/evolution.xml.h:50
-msgid "_Folder"
-msgstr "¥Õ¥©¥ë¥À(_F)"
-
-#: ui/evolution-mail.xml.h:107
-msgid "_Forward Message"
-msgstr "¥á¥Ã¥»¡¼¥¸¤òžÁ÷(_F)"
-
-#: ui/evolution-mail.xml.h:108 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr "ÁªÂò¤òȿž(_I)"
-
-#: ui/evolution-mail.xml.h:109
-msgid "_Mail Message"
-msgstr "¥á¥Ã¥»¡¼¥¸¤ò¥á¡¼¥ë(_M)"
-
-#: ui/evolution-mail.xml.h:110
-msgid "_Mail Settings..."
-msgstr "¥á¡¼¥ëÀßÄê(_M)..."
-
-#: ui/evolution-mail.xml.h:111
-msgid "_Message Display"
-msgstr "¥á¥Ã¥»¡¼¥¸É½¼¨(_M)"
-
-#: ui/evolution-mail.xml.h:112
-msgid "_Move to Folder"
-msgstr "¥Õ¥©¥ë¥À¤Ø°ÜÆ°(_M)"
-
-#: ui/evolution-mail.xml.h:113
-msgid "_Normal Display"
-msgstr "Ä̾ïɽ¼¨(_N)"
-
-#: ui/evolution-mail.xml.h:114
-msgid "_Open Message"
-msgstr "¥á¥Ã¥»¡¼¥¸¤ò³«¤¯(_O)"
-
-#: ui/evolution-mail.xml.h:116
-msgid "_Re-send Message"
-msgstr "¥á¥Ã¥»¡¼¥¸¤òºÆÁ÷¿®(_R)"
-
-#: ui/evolution-mail.xml.h:119
-msgid "_Send / Receive"
-msgstr "Á÷¼õ¿®(_S)"
-
-#: ui/evolution-mail.xml.h:120
-msgid "_Threaded Message List"
-msgstr "¥á¥Ã¥»¡¼¥¸¥ê¥¹¥È¤ò¥¹¥ì¥Ã¥É²½(_T)"
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr "źÉÕ"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-msgid "Close the current file"
-msgstr "¸½ºß¤Î¥Õ¥¡¥¤¥ë¤òÊĤ¸¤Þ¤¹"
-
-#: ui/evolution-message-composer.xml.h:5
-msgid "Encrypt this message with PGP"
-msgstr "PGP ¤Ç¤³¤Î¥á¥Ã¥»¡¼¥¸¤ò°Å¹æ²½¤·¤Þ¤¹"
-
-#: ui/evolution-message-composer.xml.h:6
-msgid "Encrypt this message with your S/MIME Encryption Cetificate"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "F_ormat"
-msgstr "¥Õ¥©¡¼¥Þ¥Ã¥È(_o)"
-
-#: ui/evolution-message-composer.xml.h:8
-msgid "HTML"
-msgstr "HTML"
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert a file as text into the message"
-msgstr "¥á¥Ã¥»¡¼¥¸¤Ø¥Æ¥­¥¹¥È¤È¤·¤Æ¥Õ¥¡¥¤¥ë¤òÁÞÆþ¤·¤Þ¤¹"
-
-#: ui/evolution-message-composer.xml.h:10
-msgid "Insert text file..."
-msgstr "¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤ÎÁÞÆþ..."
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "Open a file"
-msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤¯"
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Encrypt"
-msgstr "PGP ¤Ë¤è¤ë°Å¹æ²½"
-
-#: ui/evolution-message-composer.xml.h:14
-msgid "PGP Sign"
-msgstr "PGP ¥µ¥¤¥ó"
-
-#: ui/evolution-message-composer.xml.h:15
-msgid "S/MIME Encrypt"
-msgstr "S/MIME ¤Ë¤è¤ë°Å¹æ²½"
-
-#: ui/evolution-message-composer.xml.h:16
-msgid "S/MIME Sign"
-msgstr "S/MIME ½ð̾"
-
-#: ui/evolution-message-composer.xml.h:20
-msgid "Save _Draft"
-msgstr "Áð°Æ¤òÊݸ(_D)"
-
-#: ui/evolution-message-composer.xml.h:21
-msgid "Save in _folder... (FIXME)"
-msgstr "¥Õ¥©¥ë¥À¤ØÊݸ... (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:22
-msgid "Save in folder..."
-msgstr "¥Õ¥©¥ë¥À¤ØÊݸ..."
-
-#: ui/evolution-message-composer.xml.h:24
-msgid "Save the current file with a different name"
-msgstr "¸½ºß¤Î¥Õ¥¡¥¤¥ë¤òÊÌ̾¤ÇÊݸ¤·¤Þ¤¹"
-
-#: ui/evolution-message-composer.xml.h:25
-msgid "Save the message in a specified folder"
-msgstr "»ØÄê¤Î¥Õ¥©¥ë¥À¤Ø¥á¥Ã¥»¡¼¥¸¤òÊݸ¤·¤Þ¤¹"
-
-#: ui/evolution-message-composer.xml.h:26
-msgid "Send"
-msgstr "Á÷¿®"
-
-#: ui/evolution-message-composer.xml.h:27
-msgid "Send _Later"
-msgstr "¸å¤ÇÁ÷¿®(_L)"
-
-#: ui/evolution-message-composer.xml.h:28
-msgid "Send _later"
-msgstr "¸å¤ÇÁ÷¿®(_l)"
-
-#: ui/evolution-message-composer.xml.h:29
-msgid "Send the mail in HTML format"
-msgstr "HTML·Á¼°¤Ç¥á¡¼¥ë¤òÁ÷¿®¤·¤Þ¤¹"
-
-#: ui/evolution-message-composer.xml.h:30
-msgid "Send the message later"
-msgstr "¸å¤Ç¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤·¤Þ¤¹"
-
-#: ui/evolution-message-composer.xml.h:31
-msgid "Send this message now"
-msgstr "º£¤¹¤°¤³¤Î¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤·¤Þ¤¹"
-
-#: ui/evolution-message-composer.xml.h:32
-msgid "Show / hide attachments"
-msgstr "źÉÕ¤Îɽ¼¨/Èóɽ¼¨"
-
-#: ui/evolution-message-composer.xml.h:33
-msgid "Show _attachments"
-msgstr "źÉÕ¤òɽ¼¨(_a)"
-
-#: ui/evolution-message-composer.xml.h:34
-msgid "Show attachments"
-msgstr "źÉÕ¤òɽ¼¨"
-
-#: ui/evolution-message-composer.xml.h:35
-msgid "Sign this message with your PGP key"
-msgstr "PGP¸°¤Ç¤³¤Î¥á¥Ã¥»¡¼¥¸¤Ë¥µ¥¤¥ó¤·¤Þ¤¹"
-
-#: ui/evolution-message-composer.xml.h:36
-msgid "Sign this message with your S/MIME Signature Certificate"
-msgstr "S/MIME ½ð̾¾ÚÌÀ½ñ¤Ç¤³¤Î¥á¥Ã¥»¡¼¥¸¤Ë¥µ¥¤¥ó¤·¤Þ¤¹"
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the BCC field is displayed"
-msgstr "BCC ¥Õ¥£¡¼¥ë¥É¤òɽ¼¨¤¹¤ë¤«¤É¤¦¤«ÀÚÂؤ¨¤Þ¤¹"
-
-#: ui/evolution-message-composer.xml.h:38
-msgid "Toggles whether the CC field is displayed"
-msgstr "CC ¥Õ¥£¡¼¥ë¥É¤òɽ¼¨¤¹¤ë¤«¤É¤¦¤«ÀÚÂؤ¨¤Þ¤¹"
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "Toggles whether the From chooser is displayed"
-msgstr "º¹½Ð¿Í¤ÎÁªÂò¤òɽ¼¨¤¹¤ë¤«¤É¤¦¤«ÀÚÂؤ¨¤Þ¤¹"
-
-#: ui/evolution-message-composer.xml.h:40
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr "ÊÖ¿®Àè¥Õ¥£¡¼¥ë¥É¤òɽ¼¨¤¹¤ë¤«¤É¤¦¤«ÀÚÂؤ¨¤Þ¤¹"
-
-#: ui/evolution-message-composer.xml.h:41
-msgid "_Bcc Field"
-msgstr "Bcc ¥Õ¥£¡¼¥ë¥É(_B)"
-
-#: ui/evolution-message-composer.xml.h:42
-msgid "_Cc Field"
-msgstr "Cc ¥Õ¥£¡¼¥ë¥É(_C)"
-
-#: ui/evolution-message-composer.xml.h:47
-msgid "_From Field"
-msgstr "º¹½Ð¿Í¥Õ¥£¡¼¥ë¥É(_F)"
-
-#: ui/evolution-message-composer.xml.h:49
-msgid "_Insert"
-msgstr "ÁÞÆþ(_I)"
-
-#: ui/evolution-message-composer.xml.h:50
-msgid "_Insert text file... (FIXME)"
-msgstr "¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤ÎÁÞÆþ(_I)... (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:51
-msgid "_Open..."
-msgstr "³«¤¯(_O)..."
-
-#: ui/evolution-message-composer.xml.h:52
-msgid "_Reply-To Field"
-msgstr "ÊÖ¿®Àè¥Õ¥£¡¼¥ë¥É(_R)"
-
-#: ui/evolution-message-composer.xml.h:54
-msgid "_Security"
-msgstr "¥»¥­¥å¥ê¥Æ¥£(_S)"
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr "¹ØÆÉ¥Õ¥©¥ë¥À¤Î¥ê¥¹¥È¤Ø¥Õ¥©¥ë¥À¤òÄɲÃ"
-
-#: ui/evolution-subscribe.xml.h:3
-msgid "F_older"
-msgstr "¥Õ¥©¥ë¥À(_o)"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr "¥ê¥¹¥È¤ò¹¹¿·"
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr "¥Õ¥©¥ë¥À¥ê¥¹¥È¤ò¹¹¿·"
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr "¹ØÆÉ¥Õ¥©¥ë¥À¤Î¥ê¥¹¥È¤«¤é¥Õ¥©¥ë¥À¤òºï½ü"
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr "¹ØÆÉ"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr "¹ØÆɲò½ü"
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-msgid "Assig_n Task (FIXME)"
-msgstr "¥¿¥¹¥¯¤Î³äÅö¤Æ(_n) (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr "ºÆ¸¡º÷"
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-msgid "Meeting Re_quest (FIXME)"
-msgstr "Âǹ礻Í×µá(_q) (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-msgid "Redo"
-msgstr "¤ä¤êľ¤·"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-msgid "Redo the undone action"
-msgstr "̤´°Î»¤ÎÆ°ºî¤ò¤ä¤êľ¤·¤Þ¤¹"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-msgid "Replace"
-msgstr "ÃÖ´¹"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-msgid "Replace a string"
-msgstr "ʸ»ú¤òÃÖ´¹¤·¤Þ¤¹"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-msgid "Reply to A_ll (FIXME)"
-msgstr "Á´°÷¤ØÊÖ¿®(_l) (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-msgid "S_end Status Report (FIXME)"
-msgstr "Á÷¿®¥¹¥Æ¡¼¥¿¥¹¥ì¥Ý¡¼¥È(_e) (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr "½ÐÍè»ö¤ò¥¹¥­¥Ã¥×(_k) (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-msgid "Save the task and close the dialog box"
-msgstr "¥¿¥¹¥¯¤òÊݸ¤·¤Æ¥À¥¤¥¢¥í¥°¥Ü¥Ã¥¯¥¹¤òÊĤ¸¤Þ¤¹"
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "Search again for the same string"
-msgstr "Ʊ¤¸Ê¸»úÎó¤ÇºÆ¸¡º÷¤ò¹Ô¤¤¤Þ¤¹"
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-msgid "Search for a string"
-msgstr "ʸ»úÎó¤Ç¸¡º÷¤·¤Þ¤¹"
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr "¸µ¤ËÌ᤹"
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-msgid "Undo the last action"
-msgstr "ºÇ¸å¤ÎÆ°ºî¤ò¸µ¤ËÌᤷ¤Þ¤¹"
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:42
-msgid "_Appointment (FIXME)"
-msgstr "Ìó«(_A) (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-msgid "_Mark Complete (FIXME)"
-msgstr "´°Î»¤ò¥Þ¡¼¥¯ (_M) (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-msgid "_Reply (FIXME)"
-msgstr "ÊÖ¿®(_R) (FIXME)"
-
-#: ui/evolution-tasks.xml.h:2
-msgid "Create a new task"
-msgstr "¿·µ¬¥¿¥¹¥¯¤òºîÀ®¤·¤Þ¤¹"
-
-#: ui/evolution-tasks.xml.h:3
-msgid "New Task"
-msgstr "¿·µ¬¥¿¥¹¥¯"
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr "Ê̤Τâ¤Î¤È¤·¤Æ¥¿¥¹¥¯¤òÊݸ¤·¤Þ¤¹"
-
-#: ui/evolution-tasks.xml.h:6
-msgid "Tasks Preferences..."
-msgstr "¥¿¥¹¥¯¤ÎÀßÄê..."
-
-#: ui/evolution-tasks.xml.h:9
-msgid "_Task"
-msgstr "¥¿¥¹¥¯(_T)"
-
-#: ui/evolution.xml.h:1
-msgid "About Evolution..."
-msgstr "Evolution ¤Ë¤Ä¤¤¤Æ..."
-
-#: ui/evolution.xml.h:2
-msgid "Add to _Shortcut Bar"
-msgstr "¥·¥ç¡¼¥È¥«¥Ã¥È¥Ð¡¼¤ËÄɲÃ(_S)"
-
-#: ui/evolution.xml.h:3
-msgid "Change the name of this folder"
-msgstr "¤³¤Î¥Õ¥©¥ë¥À¤Î̾Á°¤òÊѹ¹¤·¤Þ¤¹"
-
-#: ui/evolution.xml.h:4
-msgid "Change the properties for this folder"
-msgstr "¤³¤Î¥Õ¥©¥ë¥À¤ÎÀßÄê¤òÊѹ¹¤·¤Þ¤¹"
-
-#: ui/evolution.xml.h:6
-msgid "Close this window"
-msgstr "¤³¤Î¥¦¥£¥ó¥É¥¦¤òÊĤ¸¤Þ¤¹"
-
-#: ui/evolution.xml.h:7
-msgid "Copy this folder"
-msgstr "¥Õ¥©¥ë¥À¤ò¥³¥Ô¡¼¤·¤Þ¤¹"
-
-#: ui/evolution.xml.h:8
-msgid "Create _New Folder..."
-msgstr "¿·µ¬¥Õ¥©¥ë¥À¤òºîÀ®(_N)..."
-
-#: ui/evolution.xml.h:9
-msgid "Create a link to this folder in the shortcut bar"
-msgstr "¥·¥ç¡¼¥È¥«¥Ã¥È¥Ð¡¼¤Ë¤³¤Î¥Õ¥©¥ë¥À¤Î¥ê¥ó¥¯¤òºîÀ®¤·¤Þ¤¹"
-
-#: ui/evolution.xml.h:10
-msgid "Create a new folder"
-msgstr "¿·µ¬¥Õ¥©¥ë¥À¤òºîÀ®¤·¤Þ¤¹"
-
-#: ui/evolution.xml.h:11
-msgid "Customi_ze Toolbars..."
-msgstr "¥Ä¡¼¥ë¥Ð¡¼¤Î¥«¥¹¥¿¥Þ¥¤¥º(_z)..."
-
-#: ui/evolution.xml.h:12
-msgid "Customize"
-msgstr "¥«¥¹¥¿¥Þ¥¤¥º"
-
-#: ui/evolution.xml.h:13
-msgid "Customize toolbars"
-msgstr "¥Ä¡¼¥ë¥Ð¡¼¤ò¥«¥¹¥¿¥Þ¥¤¥º¤·¤Þ¤¹"
-
-#: ui/evolution.xml.h:14
-msgid "Display a different folder"
-msgstr "Ê̤Υե©¥ë¥À¤òɽ¼¨¤·¤Þ¤¹"
-
-#: ui/evolution.xml.h:15
-msgid "E_xit"
-msgstr "½ªÎ»(_x)"
-
-#: ui/evolution.xml.h:16
-msgid "Evolution _FAQ"
-msgstr "Evolution FAQ(_F)"
-
-#: ui/evolution.xml.h:17
-msgid "Evolution _Window"
-msgstr "Evolution ¥¦¥£¥ó¥É¥¦(_W)"
-
-#: ui/evolution.xml.h:18
-msgid "Evolution bar _shortcut"
-msgstr "Evolution ¥Ð¡¼¥·¥ç¡¼¥È¥«¥Ã¥È(_s)"
-
-#: ui/evolution.xml.h:19
-msgid "Exit the program"
-msgstr "¥×¥í¥°¥é¥à¤ò½ªÎ»¤·¤Þ¤¹"
-
-#: ui/evolution.xml.h:20
-msgid "Getting _Started"
-msgstr "»Ï¤á¤Ë(_S)"
-
-#: ui/evolution.xml.h:21
-msgid "Import an external file format"
-msgstr "³°Éô¥Õ¥¡¥¤¥ë·Á¼°¤ò¥¤¥ó¥Ý¡¼¥È¤·¤Þ¤¹"
-
-#: ui/evolution.xml.h:22
-msgid "Main toolbar"
-msgstr "¥á¥¤¥ó¥Ä¡¼¥ë¥Ð¡¼"
-
-#: ui/evolution.xml.h:23
-msgid "Move this folder to another place"
-msgstr "Ê̤ξì½ê¤Ø¤³¤Î¥Õ¥©¥ë¥À¤ò°ÜÆ°¤·¤Þ¤¹"
-
-#: ui/evolution.xml.h:24
-msgid "Open in New Window"
-msgstr "¿·µ¬¥¦¥£¥ó¥É¥¦¤Ç³«¤¯"
-
-#: ui/evolution.xml.h:25
-msgid "Open in New _Window"
-msgstr "¿·µ¬¥¦¥£¥ó¥É¥¦¤Ç³«¤¯(_W)"
-
-#: ui/evolution.xml.h:26
-msgid "Open this folder in an other window"
-msgstr "Ê̤Υ¦¥£¥ó¥É¥¦¤Ç¤³¤Î¥Õ¥©¥ë¥À¤ò³«¤­¤Þ¤¹"
-
-#: ui/evolution.xml.h:27
-msgid "Show information about Evolution"
-msgstr "Evolution ¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤òɽ¼¨¤·¤Þ¤¹"
-
-#: ui/evolution.xml.h:28
-msgid "Submit Bug Report"
-msgstr "ÉÔ¶ñ¹çÊó¹ð¤ÎÄó½Ð"
-
-#: ui/evolution.xml.h:29
-msgid "Submit _Bug Report"
-msgstr "ÉÔ¶ñ¹çÊó¹ð¤ÎÄó½Ð(_B)"
-
-#: ui/evolution.xml.h:30
-msgid "Submit bug report using Bug Buddy."
-msgstr "Bug Buddy¤ò»È¤Ã¤ÆÉÔ¶ñ¹çÊó¹ð¤òÄó½Ð¤·¤Þ¤¹"
-
-#: ui/evolution.xml.h:31
-msgid "Toggle"
-msgstr "ÀÚÂؤ¨"
-
-#: ui/evolution.xml.h:32
-msgid "Toggle whether to show the folder bar"
-msgstr "¥Õ¥©¥ë¥À¥Ð¡¼¤òɽ¼¨¤¹¤ë¤«¤É¤¦¤«ÀÚÂؤ¨¤Þ¤¹"
-
-#: ui/evolution.xml.h:33
-msgid "Toggle whether to show the shortcut bar"
-msgstr "¥·¥ç¡¼¥È¥«¥Ã¥È¥Ð¡¼¤òɽ¼¨¤¹¤ë¤«¤É¤¦¤«ÀÚÂؤ¨¤Þ¤¹"
-
-#: ui/evolution.xml.h:34
-msgid "Toggle whether we are working offline."
-msgstr "¥ª¥Õ¥é¥¤¥óºî¶È¤«¤É¤¦¤«¤òÀÚÂؤ¨¤Þ¤¹"
-
-#: ui/evolution.xml.h:35
-msgid "Using the C_ontact Manager"
-msgstr "¥³¥ó¥¿¥¯¥È¥Þ¥Í¡¼¥¸¥ã¤ò»È¤¦(_o)"
-
-#: ui/evolution.xml.h:36
-msgid "Using the _Calendar"
-msgstr "¥«¥ì¥ó¥À¤ò»È¤¦(_C)"
-
-#: ui/evolution.xml.h:37
-msgid "Using the _Mailer"
-msgstr "¥á¡¼¥é¤ò»È¤¦(_M)"
-
-#: ui/evolution.xml.h:38
-msgid "View the selected folder"
-msgstr "ÁªÂò¤µ¤ì¤¿¥Õ¥©¥ë¥À¤òɽ¼¨¤·¤Þ¤¹"
-
-#: ui/evolution.xml.h:39
-msgid "Work Offline"
-msgstr "¥ª¥Õ¥é¥¤¥óºî¶È"
-
-#: ui/evolution.xml.h:40
-msgid "_About Evolution..."
-msgstr "Evolution ¤Ë¤Ä¤¤¤Æ(_A)..."
-
-#: ui/evolution.xml.h:41
-msgid "_Actions"
-msgstr "Æ°ºî(_A)"
-
-#: ui/evolution.xml.h:45
-msgid "_Copy..."
-msgstr "¥³¥Ô¡¼(_C)..."
-
-#: ui/evolution.xml.h:47
-msgid "_Delete this folder"
-msgstr "¤³¤Î¥Õ¥©¥ë¥À¤òºï½ü(_D)"
-
-#: ui/evolution.xml.h:51
-msgid "_Folder Bar"
-msgstr "¥Õ¥©¥ë¥À¥Ð¡¼(_F)"
-
-#: ui/evolution.xml.h:52
-msgid "_Go to Folder..."
-msgstr "¥Õ¥©¥ë¥À¤Ø°ÜÆ°(_G)..."
-
-#: ui/evolution.xml.h:54
-msgid "_Import file..."
-msgstr "¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥Ý¡¼¥È(_I)..."
-
-#: ui/evolution.xml.h:55
-msgid "_Index"
-msgstr "¥¤¥ó¥Ç¥Ã¥¯¥¹(_I)"
-
-#: ui/evolution.xml.h:56
-msgid "_Mail message"
-msgstr "¥á¥Ã¥»¡¼¥¸¤ò¥á¡¼¥ë(_M)"
-
-#: ui/evolution.xml.h:57
-msgid "_Move..."
-msgstr "°ÜÆ°(_M)..."
-
-#: ui/evolution.xml.h:59
-msgid "_New Folder"
-msgstr "¿·µ¬¥Õ¥©¥ë¥À(_N)"
-
-#: ui/evolution.xml.h:61
-msgid "_Rename..."
-msgstr "¥ê¥Í¡¼¥à(_R)..."
-
-#: ui/evolution.xml.h:62
-msgid "_Shortcut Bar"
-msgstr "¥·¥ç¡¼¥È¥«¥Ã¥È¥Ð¡¼(_S)"
-
-#: ui/evolution.xml.h:66
-msgid "_Work Offline"
-msgstr "¥ª¥Õ¥é¥¤¥óºî¶È(_W)"
-
-#: views/addressbook/galview.xml.h:1
-msgid "Adress Cards"
-msgstr "¥¢¥É¥ì¥¹¥«¡¼¥É"
-
-#: views/addressbook/galview.xml.h:2
-msgid "By Company"
-msgstr "²ñ¼Ò"
-
-#: views/addressbook/galview.xml.h:3
-msgid "Phone List"
-msgstr "ÅÅÏåꥹ¥È"
-
-#: views/mail/galview.xml.h:1
-msgid "By Sender"
-msgstr "Á÷¿®¼Ô"
-
-#: views/mail/galview.xml.h:2
-msgid "By Status"
-msgstr "¥¹¥Æ¡¼¥¿¥¹"
-
-#: views/mail/galview.xml.h:3
-msgid "By Subject"
-msgstr "·ï̾"
-
-#: views/mail/galview.xml.h:4
-msgid "Messages"
-msgstr "¥á¥Ã¥»¡¼¥¸"
-
-#: views/tasks/galview.xml.h:2
-msgid "With Category"
-msgstr "¥«¥Æ¥´¥ê"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:392
-msgid "Tentative"
-msgstr "»ÃÄê"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:393
-msgid "Busy"
-msgstr "¥Ó¥¸¡¼"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:394
-msgid "Out of Office"
-msgstr "¥ª¥Õ¥£¥¹¤Î³°"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:395
-msgid "No Information"
-msgstr "¾ðÊó¤Ê¤·"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:411
-msgid "_Invite Others..."
-msgstr "¾¤Î¾·ÂÔ(_I)..."
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:431
-msgid "_Options"
-msgstr "¥ª¥×¥·¥ç¥ó(_O)"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:448
-msgid "Show _Only Working Hours"
-msgstr "»Å»öÃæ¤Î»þ´Ö¤À¤±É½¼¨(_O)"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:461
-msgid "Show _Zoomed Out"
-msgstr "½Ì¾®¤·¤Æɽ¼¨(_Z)"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:479
-msgid "_Update Free/Busy"
-msgstr "¥Õ¥ê¡¼/¥Ó¥¸¡¼ ¤Î¹¹¿·(_U)"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:497
-msgid "_<<"
-msgstr "<<(_<)"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:514
-msgid "_Autopick"
-msgstr "¼«Æ°¥Ô¥Ã¥¯¥¢¥Ã¥×(_A)"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:528
-msgid ">_>"
-msgstr ">>(_>)"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:545
-msgid "_All People and Resources"
-msgstr "¤¹¤Ù¤Æ¤Î¿Í¡¹¤È¥ê¥½¡¼¥¹(_A)"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:558
-msgid "All _People and One Resource"
-msgstr "¤¹¤Ù¤Æ¤Î¿Í¡¹¤È¤Ò¤È¤Ä¤Î¥ê¥½¡¼¥¹(_P)"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:571
-msgid "_Required People"
-msgstr "¿Í¡¹¤¬É¬Í×(_R)"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:584
-msgid "Required People and _One Resource"
-msgstr "¿Í¡¹¤È¤Ò¤È¤Ä¤Î¥ê¥½¡¼¥¹¤¬É¬Í×(_O)"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:607
-msgid "Meeting _start time:"
-msgstr "²ñµÄ³«»Ï»þ´Ö(_s):"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:631
-msgid "Meeting _end time:"
-msgstr "²ñµÄ½ªÎ»»þ´Ö(_e):"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:744
-msgid "All Attendees"
-msgstr "¤¹¤Ù¤Æ¤ÎÉÕ¤­Åº¤¤"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:469
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2477
-msgid "%A, %B %d, %Y"
-msgstr "%Yǯ %m·î %dÆü %A"
-
-#: widgets/menus/gal-view-menus.c:176
-msgid "_Current View"
-msgstr "¸½ºß¤Îɽ¼¨(_C)"
-
-#: widgets/menus/gal-view-menus.c:202
-msgid "Define Views"
-msgstr "ɽ¼¨¤òÄêµÁ"
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:422
-msgid "MTWTFSS"
-msgstr "MTWTFSS"
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1061 widgets/misc/e-calendar-item.c:2756
-msgid "%B %Y"
-msgstr "%Y %B"
-
-#: widgets/misc/e-cell-date-edit.c:221 widgets/misc/e-dateedit.c:418
-msgid "Now"
-msgstr "º£"
-
-#: widgets/misc/e-cell-date-edit.c:245
-msgid "OK"
-msgstr "OK"
-
-#: widgets/misc/e-cell-date-edit.c:726
-#, c-format
-msgid "The time must be in the format: %s"
-msgstr "»þ´Ö¤Ï¥Õ¥©¡¼¥Þ¥Ã¥È¤ËÆþ¤ì¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó: %s"
-
-#: widgets/misc/e-clipped-label.c:112
-msgid "..."
-msgstr "..."
-
-#: widgets/misc/e-filter-bar.c:168
-msgid "Save Search"
-msgstr "¸¡º÷¤òÊݸ"
-
-#: widgets/misc/e-filter-bar.c:239
-msgid "Advanced Search"
-msgstr "¾åµé¸¡º÷"
-
-#: widgets/misc/e-filter-bar.h:101
-msgid "Save As..."
-msgstr "ÊÌ̾¤ÇÊݸ..."
-
-#: widgets/misc/e-filter-bar.h:102
-msgid "Show All"
-msgstr "¤¹¤Ù¤Æɽ¼¨"
-
-#: widgets/misc/e-filter-bar.h:103
-msgid "Edit..."
-msgstr "ÊÔ½¸..."
-
-#: widgets/misc/e-filter-bar.h:104
-msgid "Advanced..."
-msgstr "¾ÜºÙ..."
-
-#: widgets/misc/e-messagebox.c:152
-msgid "Information"
-msgstr "¾ðÊó"
-
-#: widgets/misc/e-messagebox.c:159
-msgid "Warning"
-msgstr "·Ù¹ð"
-
-#: widgets/misc/e-messagebox.c:173
-msgid "Question"
-msgstr "¼ÁÌä"
-
-#: widgets/misc/e-messagebox.c:180
-msgid "Message"
-msgstr "¥á¥Ã¥»¡¼¥¸"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:224
-msgid "Don't show this message again."
-msgstr "¤³¤Î¥á¥Ã¥»¡¼¥¸¤òÆóÅÙ¤Èɽ¼¨¤·¤Ê¤¤"
-
-#: widgets/misc/e-search-bar.c:155
-msgid "Sear_ch"
-msgstr "¸¡º÷(_c)"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-msgid "The Personal Addressbook Server"
-msgstr "¥Ñ¡¼¥½¥Ê¥ë¥¢¥É¥ì¥¹Ä¢¥µ¡¼¥Ð"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr "¥Ñ¡¼¥½¥Ê¥ë¥«¥ì¥ó¥À¥µ¡¼¥Ð; ¥«¥ì¥ó¥À¥Õ¥¡¥¯¥È¥ê"
-
-#: wombat/wombat.c:173
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr "setup_vfs(): GNOME-VFS¤ò½é´ü²½¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: wombat/wombat.c:185
-msgid "init_corba(): could not initialize GNOME"
-msgstr "init_corba(): GNOME ¤ò½é´ü²½¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
-
-#: wombat/wombat.c:198
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "init_bonobo(): Bonobo ¤ò½é´ü²½¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿"
diff --git a/po/ko.po b/po/ko.po
deleted file mode 100644
index 115a7e4390..0000000000
--- a/po/ko.po
+++ /dev/null
@@ -1,8055 +0,0 @@
-# evolution ko.po
-# Copyright (C) 2000 Free Software Foundation, Inc.
-# Young-Ho, Cha <ganadist@dacome.co.kr>, 2000.
-# update by Sung-Hyun Nam 2000/09/08
-# update by ChiDeok Hwang <hwang@mizi.co.kr> 2001/03/12
-# update by ChiDeok Hwang <hwang@mizi.co.kr> 2001/03/15
-# update by ChiDeok Hwang <hwang@mizi.co.kr> 2001/03/23
-msgid ""
-msgstr ""
-"Project-Id-Version: evolution 0.9\n"
-"POT-Creation-Date: 2001-03-23 01:31+0900\n"
-"PO-Revision-Date: 2001-03-23 02:12+0900\n"
-"Last-Translator: ChiDeok, Hwang <hwang@mizi.co.kr>\n"
-"Language-Team: korean <ko@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=euc-kr\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: addressbook/backend/ebook/e-card.c:3255
-msgid "Card: "
-msgstr "Ä«µå: "
-
-#: addressbook/backend/ebook/e-card.c:3257
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-"\n"
-"À̸§: "
-
-#: addressbook/backend/ebook/e-card.c:3258
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3259
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3260
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3261
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3262
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3276
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-"\n"
-"»ýÀÏ: "
-
-#: addressbook/backend/ebook/e-card.c:3287
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-"\n"
-"ÁÖ¼Ò:"
-
-#: addressbook/backend/ebook/e-card.c:3289
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3290
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3291
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3292
-msgid ""
-"\n"
-" City: "
-msgstr ""
-"\n"
-" ½Ã/µµ: "
-
-#: addressbook/backend/ebook/e-card.c:3293
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-"\n"
-" Áö¿ª: "
-
-#: addressbook/backend/ebook/e-card.c:3294
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-"\n"
-" ¿ìÆí ¹øÈ£: "
-
-#: addressbook/backend/ebook/e-card.c:3295
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-"\n"
-" ±¹°¡: "
-
-#: addressbook/backend/ebook/e-card.c:3308
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3320
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-"\n"
-"ÀüÈ­¹øÈ£:\n"
-
-#: addressbook/backend/ebook/e-card.c:3323
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-"\n"
-"ÀüÈ­¹øÈ£:"
-
-#: addressbook/backend/ebook/e-card.c:3347
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-"\n"
-"ÀüÀÚ¿ìÆí:\n"
-
-#: addressbook/backend/ebook/e-card.c:3350
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-"\n"
-"ÀüÀÚ¿ìÆí:"
-
-#: addressbook/backend/ebook/e-card.c:3369
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3375
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-"\n"
-"½Ã°£´ë: "
-
-#: addressbook/backend/ebook/e-card.c:3383
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-"\n"
-"Áö¸®Àû À§Ä¡: "
-
-#: addressbook/backend/ebook/e-card.c:3387
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-"\n"
-"Á÷Àå Á÷ÇÔ: "
-
-#: addressbook/backend/ebook/e-card.c:3399
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-"\n"
-"±â°ü: "
-
-#: addressbook/backend/ebook/e-card.c:3400
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-"\n"
-" À̸§: "
-
-#: addressbook/backend/ebook/e-card.c:3401
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3402
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3403
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3404
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3408
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-"\n"
-"¸ñ·Ï: "
-
-#: addressbook/backend/ebook/e-card.c:3409
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-"\n"
-"ÁÖ¼®: "
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3422
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3425
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-"\n"
-"°ø¿ë Å°: "
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:1
-msgid "Factory to import GnomeCard files into Evolution."
-msgstr ""
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:2
-msgid "Imports GnomeCard files into Evolution."
-msgstr "GnomeCard ÆÄÀÏÀ» EvolutionÀ¸·Î °¡Á®¿É´Ï´Ù"
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:16
-#: addressbook/backend/ebook/load-pine-addressbook.c:17
-#: addressbook/backend/ebook/test-client-list.c:18
-#: addressbook/backend/ebook/test-client.c:29
-#: addressbook/conduit/address-conduit.c:1089
-#: addressbook/gui/component/addressbook-factory.c:39
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:68 calendar/gui/main.c:54
-msgid "Could not initialize Bonobo"
-msgstr "Bonobo¸¦ ÃʱâÈ­ ÇÒ¼ö ¾ø½À´Ï´Ù"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:651
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr "wombat ¼­¹ö¸¦ ½ÃÀÛÇÒ ¼ö°¡ ¾ø½À´Ï´Ù"
-
-#: addressbook/conduit/address-conduit.c:652
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr "wombatÀ» ½ÃÀÛÇÒ¼ö ¾ø½À´Ï´Ù"
-
-#: addressbook/conduit/address-conduit.c:684
-#: addressbook/conduit/address-conduit.c:687
-msgid "Could not read pilot's Address application block"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:5
-msgid "Add"
-msgstr "Ãß°¡"
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr "±â³äÀÏ(_v):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr "Á÷Àå(_u)"
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr "Á÷Àå Æѽº(_F)"
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-msgid "C_ontacts..."
-msgstr "¿¬¶ôó(_C)..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr "¸ñ·Ï(_t)..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-msgid "Contact Editor"
-msgstr "¿¬¶ôó ÆíÁý±â"
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr "ÀÚ¼¼È÷"
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr "ÆÄÀÏ·Î ÀúÀå:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-#: mail/mail-config.glade.h:28
-msgid "General"
-msgstr "ÀÏ¹Ý Á¤º¸"
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr "»õ ÀüÈ­ ÇüÅÂ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-msgid "No_tes:"
-msgstr "³ëÆ®(_t):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr "ÀüÈ­ ÇüÅÂ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1271
-msgid "Primary Email"
-msgstr "À̸ÞÀÏ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr "HTMLÇü½Ä ÆíÁö »ç¿ë(_H)"
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr "ȨÆäÀÌÁö ÁÖ¼Ò:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:82
-msgid "_Add"
-msgstr "Ãß°¡(_A)"
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr "ÁÖ¼Ò(_A)..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr "Á¶¼ö À̸§(_A):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr "»ýÀÏ(_B):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr "Á÷Àå(_B)"
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-msgid "_Company:"
-msgstr "ȸ»ç(_C):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/mail-config.glade.h:83 ui/evolution-event-editor.xml.h:57
-#: ui/evolution-mail.xml.h:59 ui/evolution-task-editor-dialog.xml.h:69
-msgid "_Delete"
-msgstr "»èÁ¦(_D)"
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr "ºÎ¼­(_D):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr "Àüü À̸§(_F)..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-msgid "_Home"
-msgstr "Áý(_H)"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-msgid "_Job title:"
-msgstr "Á÷ÇÔ(_J):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr "¸Å´ÏÀú À̸§(_M):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-msgid "_Mobile"
-msgstr "ÈÞ´ëÀüÈ­(_M)"
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr "º°¸í(_N):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr "»ç¹«½Ç(_O):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr "Á÷¾÷(_P):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr "¹è¿ìÀÚ(_S):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr "ÀÌ°ÍÀº ÀüÀÚ¿ìÆí ÁÖ¼ÒÀÔ´Ï´Ù(_T)"
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-msgid "Delete Contact?"
-msgstr "¿¬¶ôó¸¦ »èÁ¦ÇÒ±î¿ä?"
-
-#: addressbook/contact-editor/e-contact-editor.c:590
-msgid "This contact belongs to these categories:"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1229
-#: addressbook/gui/widgets/e-addressbook-view.c:628
-msgid "Assistant"
-msgstr "Á¶¼ö"
-
-#: addressbook/contact-editor/e-contact-editor.c:1230
-#: addressbook/contact-editor/e-contact-editor.c:1297
-#: addressbook/gui/widgets/e-addressbook-view.c:608
-msgid "Business"
-msgstr "Á÷Àå"
-
-#: addressbook/contact-editor/e-contact-editor.c:1231
-#: addressbook/gui/widgets/e-addressbook-view.c:615
-msgid "Business 2"
-msgstr "Á÷Àå 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1232
-#: addressbook/gui/widgets/e-addressbook-view.c:613
-msgid "Business Fax"
-msgstr "Á÷Àå Æѽº"
-
-#: addressbook/contact-editor/e-contact-editor.c:1233
-msgid "Callback"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1234
-#: addressbook/gui/widgets/e-addressbook-view.c:612
-msgid "Car"
-msgstr "ÀÚµ¿Â÷"
-
-#: addressbook/contact-editor/e-contact-editor.c:1235
-msgid "Company"
-msgstr "ȸ»ç"
-
-#: addressbook/contact-editor/e-contact-editor.c:1236
-#: addressbook/contact-editor/e-contact-editor.c:1298
-#: addressbook/gui/widgets/e-addressbook-view.c:609
-msgid "Home"
-msgstr "Áý"
-
-#: addressbook/contact-editor/e-contact-editor.c:1237
-#: addressbook/gui/widgets/e-addressbook-view.c:616
-msgid "Home 2"
-msgstr "Áý 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1238
-#: addressbook/gui/widgets/e-addressbook-view.c:614
-msgid "Home Fax"
-msgstr "Áý Æѽº"
-
-#: addressbook/contact-editor/e-contact-editor.c:1239
-#: addressbook/gui/widgets/e-addressbook-view.c:617
-msgid "ISDN"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1240
-#: addressbook/gui/widgets/e-addressbook-view.c:611
-msgid "Mobile"
-msgstr "ÈÞ´ëÀüÈ­"
-
-#: addressbook/contact-editor/e-contact-editor.c:1241
-#: addressbook/contact-editor/e-contact-editor.c:1299
-#: addressbook/gui/widgets/e-addressbook-view.c:618
-#: calendar/gui/e-meeting-dialog.glade.h:14 mail/mail-config.glade.h:48
-msgid "Other"
-msgstr "±âŸ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-msgid "Other Fax"
-msgstr "±âŸ Æѽº"
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/gui/widgets/e-addressbook-view.c:619
-msgid "Pager"
-msgstr "ȧȧ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-#: addressbook/gui/widgets/e-addressbook-view.c:607
-msgid "Primary"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-msgid "Radio"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Telex"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "TTY/TDD"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1272
-#: addressbook/gui/widgets/e-addressbook-view.c:620
-msgid "Email 2"
-msgstr "À̸ÞÀÏ 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1273
-#: addressbook/gui/widgets/e-addressbook-view.c:621
-msgid "Email 3"
-msgstr "À̸ÞÀÏ 3"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:215
-msgid "Contact Quick-Add"
-msgstr "¿¬¶ôó Quick Ãß°¡"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:217
-msgid "Edit Full"
-msgstr "Á¤½Ä À̸§ ÆíÁý"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:254
-msgid "Full Name"
-msgstr "Á¤½Ä À̸§"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:260
-msgid "E-mail"
-msgstr "À̸ÞÀÏ"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr "ÁÖ¼Ò _2:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr "ij³ª´Ù"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr "ÁÖ¼Ò È®ÀÎ"
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr "±¹°¡(_y):"
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr "Çɶõµå"
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr "¹Ì±¹"
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr "ÁÖ¼Ò(_A):"
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-msgid "_City:"
-msgstr "½Ã(_C):"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr "Àüü À̸§ È®ÀÎ"
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:4
-msgid "I"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:8
-msgid "Miss"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr "¼º(_F):"
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr "À̸§(_L):"
-
-#: addressbook/contact-editor/fullname.glade.h:15
-msgid "_Middle:"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr "Á¦¸ñ(_T):"
-
-#: addressbook/gui/component/addressbook.c:237
-msgid "As _Minicards"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:243
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:413
-#, c-format
-msgid "Enter password for %s"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:441
-msgid "Unable to open addressbook"
-msgstr "ÁÖ¼Ò·ÏÀ» ¿­¼ö°¡ ¾ø½À´Ï´Ù"
-
-#: addressbook/gui/component/addressbook.c:446
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or have tried\n"
-"to access an LDAP server and don't have LDAP support\n"
-"compiled in. If you've entered a URI, check the URI for\n"
-"correctness and reenter. If not, you probably have\n"
-"attempted to access an LDAP server. If you wish to be\n"
-"able to use LDAP, you'll need to download and install\n"
-"OpenLDAP and recompile and install Evolution.\n"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:569
-msgid "Show All"
-msgstr "¸ðµÎ º¸±â"
-
-#: addressbook/gui/component/addressbook.c:571
-msgid "Advanced..."
-msgstr "°í±Þ..."
-
-#: addressbook/gui/component/addressbook.c:601
-msgid "Any field contains"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:602
-msgid "Name contains"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:603
-msgid "Email contains"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:746
-msgid "The URI that the Folder Browser will display"
-msgstr "Æú´õ Ž»ö±â°¡ Ç¥½ÃÇÒ URI"
-
-#: addressbook/gui/component/addressbook-storage.c:95
-msgid "Other Contacts"
-msgstr "´Ù¸¥ ¿¬¶ôó"
-
-#: addressbook/gui/component/addressbook-config.c:143
-msgid "LDAP Server"
-msgstr "LDAP ¼­¹ö"
-
-#: addressbook/gui/component/addressbook-config.c:145
-msgid "File"
-msgstr "ÆÄÀÏ"
-
-#: addressbook/gui/component/addressbook-config.c:148
-msgid "Unknown addressbook type"
-msgstr "¾Ë¼ö¾ø´Â ÁÖ¼Ò·Ï Çü½Ä"
-
-#: addressbook/gui/component/addressbook-config.c:158
-msgid "None (anonymous mode)"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:160
-#: camel/providers/imap/camel-imap-provider.c:75
-#: camel/providers/nntp/camel-nntp-store.c:293
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid "Password"
-msgstr "ºñ¹Ð¹øÈ£"
-
-#: addressbook/gui/component/addressbook-config.c:162
-msgid "SASL"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:165
-msgid "Unknown auth type"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:174
-msgid "Base"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:176
-msgid "One"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:178
-msgid "Subtree"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "Unknown scope type"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:348
-msgid "Bind DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:349
-msgid "FIXME Bind DN Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:351
-msgid "Remember this password"
-msgstr "ÀÌ ºñ¹Ð¹øÈ£ ±â¾ï"
-
-#: addressbook/gui/component/addressbook-config.c:401
-#: mail/mail-config.glade.h:30
-msgid "Host:"
-msgstr "È£½ºÆ®:"
-
-#: addressbook/gui/component/addressbook-config.c:402
-msgid "FIXME Host help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:404
-msgid "Port:"
-msgstr "Æ÷Æ®:"
-
-#: addressbook/gui/component/addressbook-config.c:405
-msgid "FIXME Port help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:409
-msgid "Root DN:"
-msgstr "·çÆ® DN:"
-
-#: addressbook/gui/component/addressbook-config.c:410
-msgid "FIXME Root DN help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:430
-msgid "Search Scope:"
-msgstr "°Ë»ö ¹üÀ§:"
-
-#: addressbook/gui/component/addressbook-config.c:484
-#: mail/mail-config.glade.h:9
-msgid "Authentication:"
-msgstr "ÀÎÁõ:"
-
-#: addressbook/gui/component/addressbook-config.c:502
-#: mail/mail-config-druid.c:517 mail/mail-config.glade.h:51
-msgid "Path:"
-msgstr "°æ·Î:"
-
-#: addressbook/gui/component/addressbook-config.c:503
-msgid "FIXME Path Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:508
-msgid "Create path if it doesn't exist."
-msgstr "°æ·Î°¡ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é ¸¸µì´Ï´Ù."
-
-#: addressbook/gui/component/addressbook-config.c:642
-msgid "Edit Addressbook"
-msgstr "ÁÖ¼Ò·Ï ÆíÁý"
-
-#: addressbook/gui/component/addressbook-config.c:644
-msgid "Add Addressbook"
-msgstr "ÁÖ¼Ò·Ï Ãß°¡"
-
-#: addressbook/gui/component/addressbook-config.c:660
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:666
-#: mail/mail-config.glade.h:43
-msgid "Name:"
-msgstr "À̸§:"
-
-#: addressbook/gui/component/addressbook-config.c:667
-msgid "FIXME Name help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:669
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr "¼³¸í:"
-
-#: addressbook/gui/component/addressbook-config.c:670
-msgid "FIXME Description help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-msgid "Addressbook Sources"
-msgstr "ÁÖ¼Ò·Ï ¼Ò½º"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:11 mail/folder-browser.c:574
-#: mail/mail-config.glade.h:21 mail/mail-view.c:150
-#: ui/evolution-addressbook.xml.h:3 ui/evolution-event-editor.xml.h:17
-#: ui/evolution-mail.xml.h:6 ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr "»èÁ¦"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:23
-msgid "Edit"
-msgstr "ÆíÁý"
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-#: addressbook/gui/widgets/e-addressbook-view.c:605
-msgid "Name"
-msgstr "À̸§"
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-msgid "URI"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:366
-msgid "Disable Queries"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:366
-msgid "Enable Queries (Dangerous!)"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:389
-#: addressbook/gui/component/select-names/e-select-names-popup.c:200
-msgid "Edit Contact Info"
-msgstr "¿¬¶ôó Á¤º¸ ÆíÁý"
-
-#: addressbook/gui/component/e-address-widget.c:425
-#: addressbook/gui/component/select-names/e-select-names-popup.c:259
-msgid "Add to Contacts"
-msgstr "¿¬¶ôó¿¡ Ãß°¡"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-msgid "A Bonobo control for displaying an address."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-msgid "Evolution Addressbook minicard viewer"
-msgstr "Evolution ÁÖ¼Ò·Ï minicard º¸±â"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-msgid "Evolution component for handling contacts."
-msgstr "¿¬¶ôó¸¦ ó¸®ÇÏ´Â Evolution ÄÄÆ÷³ÍÆ®"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-msgid "Factory for the Addressbook Minicard control"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-msgid "Factory for the Addressbook's address displayer"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-msgid "Factory for the Evolution addressbook component."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-msgid "Factory for the sample Addressbook control"
-msgstr "ÁÖ¼Ò·Ï"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-msgid "Evolution's addressbook name selection interface."
-msgstr "Evolution ÁÖ¼Ò·Ï À̸§ ¼±Åà ÀÎÅÍÆäÀ̽º"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr "ÁÖ¼Ò·Ï À̸§ ¼±Åà ÀÎÅÍÆäÀ̽º¸¦ À§ÇÑ ÆÑÅ丮"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:121
-#: composer/e-msg-composer-attachment-bar.c:460 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:254 shell/e-shortcuts-view.c:377
-msgid "Remove"
-msgstr "Á¦°Å"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:136
-msgid "Remove All"
-msgstr "ÀüºÎ Á¦°Å"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr "ã±â..."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-msgid "Message Recipients"
-msgstr "¹Þ´Â»ç¶÷ ¸ñ·Ï"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-msgid "Select Names"
-msgstr "¼±ÅÃÇÑ À̸§"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-msgid "Select name from:"
-msgstr "À̸§À» ¼±ÅÃÇÒ °÷:"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:150
-msgid "Search"
-msgstr "°Ë»ö"
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-msgid "o"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-msgid "r"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:508
-#: addressbook/gui/widgets/e-minicard.c:450
-msgid "Save as VCard"
-msgstr "VCard·Î ÀúÀå"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:604
-msgid "* Click here to add a contact *"
-msgstr "* ¿¬¶ôó¿¡ Ãß°¡Çϱâ *"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:606
-msgid "Email"
-msgstr "À̸ÞÀÏ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:610
-msgid "Organization"
-msgstr "Á¶Á÷"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:622
-msgid "Web Site"
-msgstr "À¥ »çÀÌÆ®"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:623
-msgid "Department"
-msgstr "ºÎ¼­"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:624
-msgid "Office"
-msgstr "»ç¹«½Ç"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:625
-msgid "Title"
-msgstr "Á¦¸ñ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:626
-msgid "Profession"
-msgstr "Á÷¾÷"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:627
-msgid "Manager"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:629
-msgid "Nickname"
-msgstr "º°¸í"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:630
-msgid "Spouse"
-msgstr "¹è¿ìÀÚ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:631
-msgid "Note"
-msgstr "³ëÆ®"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:632
-msgid "Free-busy URL"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:633
-msgid "Click here to add a contact"
-msgstr "¿¬¶ôó¿¡ Ãß°¡Çϱâ"
-
-#: addressbook/gui/widgets/e-minicard-control.c:280
-msgid "Save in addressbook"
-msgstr "ÁÖ¼Ò·Ï¿¡ ÀúÀå"
-
-#: addressbook/gui/widgets/e-minicard-view.c:145
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:25
-msgid "Card View"
-msgstr "Ä«µå: "
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr "10 Æ÷ÀÎÆ® Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr "8 Æ÷ÀÎÆ® Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr "³¡´Ü ºñ¿ì±â:"
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr "º»¹®"
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr "¾Æ·¡:"
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr "Å©±â:"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr "±Û²Ã..."
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr "±Û²Ã"
-
-#: addressbook/printing/e-contact-print.glade.h:9
-msgid "Footer:"
-msgstr "²¿¸®¸»:"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr "Çü½Ä"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-msgid "Header"
-msgstr "¸Ó¸®¸»:"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr "¸Ó¸®¸»/²¿¸®¸»"
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr "¸Ó¸´¸»"
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr "°¢ À帶´Ù Ç¥Á¦´Þ±â"
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr "³ôÀÌ:"
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr "°¢°¢À» À̾ Ç¥½Ã"
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr "Æ÷ÇÔ:"
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr "°¡·Î"
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr "¿ÞÂÊ:"
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr "¿©¹é"
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr "¿­ ¼ö:"
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr "¼³Á¤"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr "¹æÇâ"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr "ÂÊ"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-msgid "Page Setup:"
-msgstr "ÂÊ ¼³Á¤:"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr "Á¾ÀÌ"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr "±ÞÁö¹æ¹ý:"
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr "¼¼·Î"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr "¹Ì¸®º¸±â:"
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr "ȸ»ö ¸í¾ÏÀ¸·Î Àμâ"
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr "¦¼ö ÂÊ µÚÁý±â"
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr "¿À¸¥ÂÊ:"
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr "¼½¼Ç:"
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr "¸í¾Ï"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-msgid "Size:"
-msgstr "Å©±â:"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr "»õ ÂÊÀ» ½ÃÀÛÇÕ´Ï´Ù"
-
-#: addressbook/printing/e-contact-print.glade.h:38
-msgid "Style name:"
-msgstr "Çü½Ä À̸§:"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr "ˤ:"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-msgid "Type:"
-msgstr "ÇüÅÂ:"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr "Æø:"
-
-#: addressbook/printing/e-contact-print.glade.h:42
-msgid "label26"
-msgstr ""
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr ""
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr ""
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr ""
-
-#: calendar/gui/calendar-commands.c:258
-msgid "File not found"
-msgstr "ÆÄÀÏÀÌ ¹ß°ßµÇÁö ¾Ê¾Ò½À´Ï´Ù"
-
-#: calendar/gui/calendar-commands.c:282
-msgid "Open calendar"
-msgstr "´Þ·Â ¿­±â"
-
-#: calendar/gui/calendar-commands.c:324
-msgid "Save calendar"
-msgstr "´Þ·Â ÀúÀå"
-
-#: calendar/gui/calendar-commands.c:478
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:901
-#: calendar/gui/e-calendar-table.c:329
-msgid "Public"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/calendar-model.c:903
-#: calendar/gui/e-calendar-table.c:330
-msgid "Private"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:372 calendar/gui/calendar-model.c:905
-#: calendar/gui/e-calendar-table.c:331
-msgid "Confidential"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:375 calendar/gui/event-editor.c:1590
-#: calendar/gui/event-editor.c:1617
-#: camel/providers/smtp/camel-smtp-transport.c:199
-msgid "Unknown"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:463
-msgid "N"
-msgstr "ºÏ"
-
-#: calendar/gui/calendar-model.c:463
-msgid "S"
-msgstr "³²"
-
-#: calendar/gui/calendar-model.c:465
-msgid "E"
-msgstr "µ¿"
-
-#: calendar/gui/calendar-model.c:465
-msgid "W"
-msgstr "¼­"
-
-#: calendar/gui/calendar-model.c:503 calendar/gui/calendar-model.c:1069
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:351 mail/message-list.c:626
-msgid "High"
-msgstr "³ôÀÌ"
-
-#: calendar/gui/calendar-model.c:505 calendar/gui/calendar-model.c:1071
-#: calendar/gui/calendar-model.c:1596
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:352 mail/message-list.c:625
-msgid "Normal"
-msgstr "º¸Åë"
-
-#: calendar/gui/calendar-model.c:507 calendar/gui/calendar-model.c:1073
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:353 mail/message-list.c:624
-msgid "Low"
-msgstr "³·°Ô"
-
-#: calendar/gui/calendar-model.c:543 calendar/gui/calendar-model.c:1125
-#: calendar/gui/e-calendar-table.c:405
-msgid "Transparent"
-msgstr "Åõ¸í"
-
-#: calendar/gui/calendar-model.c:546 calendar/gui/calendar-model.c:1127
-#: calendar/gui/e-calendar-table.c:404
-msgid "Opaque"
-msgstr "ºÒÅõ¸í"
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1179
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:425
-msgid "Not Started"
-msgstr "½ÃÀÛ ¾ÈÇÔ"
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1181
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:426
-msgid "In Progress"
-msgstr "ÁøÇàÁß"
-
-#: calendar/gui/calendar-model.c:647 calendar/gui/calendar-model.c:1183
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:427
-msgid "Completed"
-msgstr "¿Ï·áµÊ"
-
-#: calendar/gui/calendar-model.c:650 calendar/gui/calendar-model.c:1185
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:428
-msgid "Cancelled"
-msgstr "Ãë¼ÒµÊ"
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:797 e-util/e-time-utils.c:277
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr ""
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:800 e-util/e-time-utils.c:286
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:805
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:885
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr ""
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:899 calendar/gui/calendar-model.c:1123
-#: calendar/gui/calendar-model.c:1177 calendar/gui/e-calendar-table.c:328
-#: calendar/gui/e-calendar-table.c:403 mail/mail-account-editor.c:770
-#: mail/mail-account-editor.c:772 mail/mail-account-editor.c:863
-#: mail/mail-accounts.c:115 mail/mail-config-druid.c:1090
-#: mail/mail-config.glade.h:45 shell/e-shell-view.c:1120
-#: widgets/misc/e-cell-date-edit.c:231 widgets/misc/e-dateedit.c:421
-#: widgets/misc/e-dateedit.c:1330 widgets/misc/e-dateedit.c:1445
-msgid "None"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:973
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1013
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1054
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr ""
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1067
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:354
-msgid "Undefined"
-msgstr "Á¤ÀǾȵÊ"
-
-#: calendar/gui/calendar-model.c:1108
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1598
-msgid "Recurring"
-msgstr "¹Ýº¹µÊ"
-
-#: calendar/gui/calendar-model.c:1600
-msgid "Assigned"
-msgstr "¿¹¾àµÊ"
-
-#: calendar/gui/calendar-model.c:1606
-msgid "Yes"
-msgstr "¿¹"
-
-#: calendar/gui/calendar-model.c:1606
-msgid "No"
-msgstr "¾Æ´Ï¿À"
-
-#: calendar/gui/calendar-summary.c:196
-msgid "%A, %e %B %Y"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:239 calendar/gui/calendar-summary.c:245
-msgid "%I:%M%p"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:437
-msgid "<b>Error loading calendar</b>"
-msgstr "<b>´Þ·Â¸¦ ÀдÂÁß ¿À·ù</b>"
-
-#: calendar/gui/calendar-summary.c:449
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr "<b>´Þ·Â¸¦ Àд Áß ¿À·ù:<br>Áö¿øµÇÁö¾Ê´Â ¹æ¹ý"
-
-#: calendar/gui/calendar-summary.c:616
-msgid "Display"
-msgstr "Ç¥½Ã"
-
-#: calendar/gui/calendar-summary.c:621
-msgid "Show appointments"
-msgstr "¾à¼Ó º¸±â"
-
-#: calendar/gui/calendar-summary.c:629
-msgid "Show tasks"
-msgstr "¾÷¹«"
-
-#: calendar/gui/calendar-summary.c:715 calendar/gui/e-itip-control.glade.h:7
-msgid "Loading Calendar"
-msgstr "´Þ·Â ºÒ·¯µéÀ̱â"
-
-#: calendar/gui/control-factory.c:126
-msgid "The URI that the calendar will display"
-msgstr "´Þ·ÂÀÌ Ç¥½ÃÇÒ URI"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr "¾à¼ÓÀ» ¾Ë·ÁÁÙ ½Ã°£"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-msgid "Snooze"
-msgstr ""
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr "È®ÀÎ"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr "¾Ë¶÷ ±â´É"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-msgid "Factory for the alarm notification service"
-msgstr "¾Ë¶÷ ±â´ÉÀ» À§ÇÑ ÆÑÅ丮"
-
-#: calendar/gui/alarm-notify/notify-main.c:63 calendar/gui/main.c:49
-msgid "Could not initialize GNOME"
-msgstr "±×³ðÀ» ÃʱâÈ­ ÇÒ¼ö ¾ø½À´Ï´Ù"
-
-#: calendar/gui/alarm-notify/notify-main.c:73
-msgid "Could not create the alarm notify service factory"
-msgstr "¾Ë¶÷ ±â´É ÆÑÅ丮¸¦ ¸¸µé¼ö°¡ ¾ø½À´Ï´Ù"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:184
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr "%A %b %d %Y %H:%M¿¡ ¾Ë¶÷"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:191
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr "%A %b %d %Y %H:%M¿¡ ¾à¼Ó ½Ã°£ ¾Ë¸²"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:202
-msgid "No summary available."
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:2
-msgid "Close"
-msgstr "´Ý±â"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-msgid "Edit appointment"
-msgstr "¾à¼ÓÀ» ¼öÁ¤Çϱâ"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-msgid "Calendar"
-msgstr "´Þ·Â"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr "´Þ·Â ¼³Á¤"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "»ö»ó"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-msgid "Defaults"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr "º¸±â ¿É¼Ç"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:161
-msgid "Due Date"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr "ÇÏ·çÀÇ ³¡:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr "ÀÏÁÖÀÏÀÇ Ã¹Â°³¯:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr "±Ý"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:479
-msgid "Friday"
-msgstr "±Ý¿äÀÏ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr "°­Á¶"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr "¿ù"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:475
-msgid "Monday"
-msgstr "¿ù¿äÀÏ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:52
-msgid "Pick a color"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:164
-msgid "Priority"
-msgstr "¿ì¼±¼øÀ§"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-msgid "Remind me of all appointments"
-msgstr "¸ðµç ¾à¼ÓÀ» »ó±â½ÃÅ°±â"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-msgid "Reminders"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr "Åä"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:480
-msgid "Saturday"
-msgstr "Åä¿äÀÏ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr "º¸±â"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-msgid "Show appointment end times"
-msgstr "¾à¼Ó ³¡½Ã°£ º¸±â"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr "ÀÏ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:481
-msgid "Sunday"
-msgstr "ÀÏ¿äÀÏ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-msgid "TaskPad"
-msgstr "ÀÛ¾÷Æеå"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr "¸ñ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:478
-msgid "Thursday"
-msgstr "¸ñ¿äÀÏ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr "È­"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:476
-msgid "Tuesday"
-msgstr "È­¿äÀÏ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr "¼ö"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:477
-msgid "Wednesday"
-msgstr "¼ö¿äÀÏ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:86
-msgid "seconds."
-msgstr "ÃÊ."
-
-#: calendar/gui/dialogs/delete-comp.c:68
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr "Á¤¸»·Î ¾à¼Ó `%s'À» Áö¿ì±â¸¦ ¿øÇϽʴϱî"
-
-#: calendar/gui/dialogs/delete-comp.c:71
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr "Á¤¸»·Î ÀÌ Á¦¸ñ¾ø´Â ¾à¼ÓÀ» Áö¿ì±â¸¦ ¿øÇϽʴϱî"
-
-#: calendar/gui/dialogs/delete-comp.c:77
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr "Á¤¸»·Î ÀÛ¾÷ `%s'¸¦ Áö¿ì±â¸¦ ¿øÇϽʴϱî"
-
-#: calendar/gui/dialogs/delete-comp.c:80
-msgid "Are you sure you want to delete this untitled task?"
-msgstr "Á¤¸»·Î ÀÌ Á¦¸ñ¾ø´Â ÀÛ¾÷À» Áö¿ì±â¸¦ ¿øÇϽʴϱî"
-
-#: calendar/gui/dialogs/delete-comp.c:86
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr "Á¤¸»·Î ¿©ÇàÀÏÁ¤ `%s'À» Áö¿ì±â¸¦ ¿øÇϽʴϱî"
-
-#: calendar/gui/dialogs/delete-comp.c:89
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr "Á¤¸»·Î ÀÌ Á¦¸ñ¾ø´Â ¿©ÇàÀÏÁ¤À» Áö¿ì±â¸¦ ¿øÇϽʴϱî"
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr "º¯°æµÈ°ÍÀ» ÀúÀå ÇÏ±æ ¿øÇϽʴϱî?"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr "% ¿Ï·á(_p):"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:157
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr "ºÐ·ù"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-msgid "Date &amp; Time"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr "¿Ï·áµÈ ³¯Â¥:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-msgid "Pri_vate"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-msgid "Progress"
-msgstr "ÁøÇàÁß"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr "°ø¿ë Å°(_b)"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-msgid "Sta_rt Date:"
-msgstr "½ÃÀÛ ³¯Â¥(_r):"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-msgid "Su_mmary:"
-msgstr "¿ä¾à(_u):"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr "ÀÛ¾÷"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-msgid "URL:"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Contacts..."
-msgstr "¿¬¶ôó(_C)..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-msgid "_Due Date:"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-msgid "_Priority:"
-msgstr "¿ì¼±¼øÀ§(_P):"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "_Status:"
-msgstr "»óÅÂ(_S):"
-
-#: calendar/gui/dialogs/task-editor.c:689
-msgid "Edit Task"
-msgstr "ÀÛ¾÷ ÆíÁý"
-
-#: calendar/gui/dialogs/task-editor.c:695 calendar/gui/event-editor.c:377
-msgid "No summary"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor.c:701 calendar/gui/event-editor.c:383
-#, c-format
-msgid "Appointment - %s"
-msgstr "¾à¼Ó - %s"
-
-#: calendar/gui/dialogs/task-editor.c:704 calendar/gui/event-editor.c:386
-#, c-format
-msgid "Task - %s"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor.c:707 calendar/gui/event-editor.c:389
-#, c-format
-msgid "Journal entry - %s"
-msgstr "¿©Çà ÀÏÁ¤ - %s"
-
-#: calendar/gui/e-calendar-table.c:156
-msgid "Categories"
-msgstr "¸ñ·Ï"
-
-#: calendar/gui/e-calendar-table.c:158
-msgid "Completion Date"
-msgstr "¿Ï·á ³¯Â¥"
-
-#: calendar/gui/e-calendar-table.c:159
-msgid "End Date"
-msgstr "¸¶Áö¸· ³¯"
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "Start Date"
-msgstr "½ÃÀÛÇÑ ³¯"
-
-#: calendar/gui/e-calendar-table.c:162
-msgid "Geographical Position"
-msgstr "Áö¸®ÇÐÀû À§Ä¡"
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Percent complete"
-msgstr "ÆÛ¼¾Æ® ¿Ï·á"
-
-#: calendar/gui/e-calendar-table.c:165
-msgid "Summary"
-msgstr "¿ä¾à"
-
-#: calendar/gui/e-calendar-table.c:166
-msgid "Transparency"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:167
-msgid "URL"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:168
-msgid "Alarms"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:169
-msgid "Click here to add a task"
-msgstr "ÀÛ¾÷¸ñ·Ï¿¡ Ãß°¡Çϱâ"
-
-#: calendar/gui/e-calendar-table.c:373
-#, c-format
-msgid "0%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "10%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "20%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "30%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "40%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:378
-#, c-format
-msgid "50%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:379
-#, c-format
-msgid "60%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:380
-#, c-format
-msgid "70%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:381
-#, c-format
-msgid "80%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:382
-#, c-format
-msgid "90%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:383
-#, c-format
-msgid "100%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:550
-msgid "Mark Complete"
-msgstr "¿Ï·á Ç¥½Ã"
-
-#: calendar/gui/e-calendar-table.c:551
-msgid "Mark the task complete"
-msgstr "ÀÛ¾÷ÀÌ ¿Ï·áµÇ¾úÀ½À» Ç¥½Ã"
-
-#: calendar/gui/e-calendar-table.c:556
-msgid "Edit this task..."
-msgstr "ÀÌ ÀÏÁ¤À» ¼öÁ¤..."
-
-#: calendar/gui/e-calendar-table.c:557
-msgid "Edit the task"
-msgstr "ÀÏÁ¤ ÆíÁý"
-
-#: calendar/gui/e-calendar-table.c:559
-#: ui/evolution-task-editor-dialog.xml.h:19
-msgid "Delete this task"
-msgstr "ÀÌ ÀÏÁ¤¸¦ »èÁ¦ÇÕ´Ï´Ù"
-
-#: calendar/gui/e-calendar-table.c:560
-msgid "Delete the task"
-msgstr "ÀÌ ÀÏÁ¤¸¦ »èÁ¦ÇÕ´Ï´Ù"
-
-#: calendar/gui/e-day-view-time-item.c:516
-#, c-format
-msgid "%02i minute divisions"
-msgstr ""
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:271 calendar/gui/e-day-view.c:1281
-#: calendar/gui/e-week-view-main-item.c:321
-msgid "%A %d %B"
-msgstr ""
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:275 calendar/gui/e-day-view.c:1295
-#: calendar/gui/e-week-view-main-item.c:330
-msgid "%a %d %b"
-msgstr ""
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:279 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:344
-msgid "%d %b"
-msgstr ""
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:563 calendar/gui/e-week-view.c:297
-#: calendar/gui/print.c:613
-msgid "am"
-msgstr "¿ÀÀü"
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:566 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:612
-msgid "pm"
-msgstr "¿ÀÈÄ"
-
-#: calendar/gui/e-day-view.c:3027 ui/evolution-calendar.xml.h:16
-msgid "New Appointment"
-msgstr "»õ ¾à¼Ó"
-
-#: calendar/gui/e-day-view.c:3029 calendar/gui/e-week-view.c:3237
-msgid "New All Day Event"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3034 calendar/gui/e-week-view.c:3242
-msgid "Go to Today"
-msgstr "¿À´Ã·Î À̵¿"
-
-#: calendar/gui/e-day-view.c:3036 calendar/gui/e-week-view.c:3244
-msgid "Go to Date..."
-msgstr "³¯Â¥·Î À̵¿..."
-
-#: calendar/gui/e-day-view.c:3043 calendar/gui/e-week-view.c:3250
-#: mail/folder-browser.c:543 ui/evolution-calendar.xml.h:19
-#: ui/evolution-message-composer.xml.h:10
-msgid "Open"
-msgstr "¿­±â"
-
-#: calendar/gui/e-day-view.c:3045 calendar/gui/e-week-view.c:3252
-msgid "Delete this Appointment"
-msgstr "ÀÌ ¾à¼ÓÀ» »èÁ¦ÇÕ´Ï´Ù"
-
-#: calendar/gui/e-day-view.c:3047 calendar/gui/e-week-view.c:3254
-#: ui/evolution-event-editor.xml.h:45
-msgid "Schedule Meeting"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3056 calendar/gui/e-week-view.c:3267
-msgid "Make this Occurrence Movable"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3058 calendar/gui/e-week-view.c:3269
-msgid "Delete this Occurrence"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3060
-msgid "Delete all Occurrences"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:153
-msgid "I couldn't update your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:159 calendar/gui/e-itip-control.c:502
-msgid "Component successfully updated."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:165
-msgid "There was an error loading the calendar file."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:189
-msgid "I couldn't open your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:450 calendar/gui/e-itip-control.c:521
-msgid "I couldn't load your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:462
-msgid "I couldn't read your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:475
-msgid "This is a reply from someone who was uninvited!"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:491
-msgid "I couldn't update your calendar store."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:532
-msgid "I couldn't delete the calendar component!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:542
-msgid "Component successfully deleted."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:686
-msgid "I don't recognize this type of calendar component."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:772
-msgid "Add to Calendar"
-msgstr "´Þ·Â¿¡ Ãß°¡"
-
-#: calendar/gui/e-itip-control.c:806
-msgid "Accept"
-msgstr "½ÂÀÎ"
-
-#: calendar/gui/e-itip-control.c:807
-msgid "Decline"
-msgstr "¹Ý´ë"
-
-#: calendar/gui/e-itip-control.c:808
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:386
-msgid "Tentative"
-msgstr "ÀáÁ¤Àû"
-
-#: calendar/gui/e-itip-control.c:852
-msgid "Update Calendar"
-msgstr "´Þ·Â °»½Å"
-
-#: calendar/gui/e-itip-control.c:875
-msgid "Cancel Meeting"
-msgstr "¹ÌÆà Ãë¼Ò"
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, no-c-format
-msgid "%P %%"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:4
-msgid "Calendar Message"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:5 mail/mail-format.c:598
-msgid "Date:"
-msgstr "³¯Â¥:"
-
-#: calendar/gui/e-itip-control.glade.h:8
-msgid "Loading calendar..."
-msgstr "´Þ·Â ºÒ·¯¿À±â..."
-
-#: calendar/gui/e-itip-control.glade.h:9
-msgid "Organizer:"
-msgstr "Á¶Á÷:"
-
-#: calendar/gui/e-itip-control.glade.h:10 filter/libfilter-i18n.h:43
-msgid "Sender"
-msgstr "º¸³½ÀÌ"
-
-#: calendar/gui/e-itip-control.glade.h:11
-msgid "Summary:"
-msgstr "¿ä¾à"
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:13
-msgid "date-start"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-msgid "Attendee"
-msgstr "Âü¼®ÀÚ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-msgid "Attendee address"
-msgstr "Âü¼®ÀÚ ÁÖ¼Ò"
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-msgid "Attendees: "
-msgstr "Âü¼®ÀÚ:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-msgid "Chair"
-msgstr "ÁËÀå"
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-msgid "Meeting Invitations"
-msgstr "ȸÀÇ ½ÃÀÛ:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-msgid "Organizer: "
-msgstr "±âȹÀÚ:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:15
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid "RSVP"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:18
-msgid ""
-"Request\n"
-"Meeting"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-msgid "Required Participant"
-msgstr "ÇÊ Âü¼®ÀÚ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-msgid "Role"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:22
-msgid ""
-"Schedule\n"
-"Time"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:24 filter/libfilter-i18n.h:48
-#: mail/message-list.c:1014
-msgid "Status"
-msgstr "»óÅÂ"
-
-#: calendar/gui/e-tasks.c:148 calendar/gui/e-tasks.c:468
-#: calendar/gui/e-tasks.c:501
-msgid "All"
-msgstr "¸ðµÎ"
-
-#: calendar/gui/e-tasks.c:154
-msgid "Category:"
-msgstr "¸ñ·Ï:"
-
-#: calendar/gui/e-tasks.c:297
-#, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr ""
-
-#: calendar/gui/e-tasks.c:309
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr ""
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:338
-msgid "%d %B"
-msgstr ""
-
-#: calendar/gui/e-week-view.c:3235 calendar/gui/e-week-view.c:3258
-msgid "New Appointment..."
-msgstr "»õ ¾à¼Ó..."
-
-#: calendar/gui/e-week-view.c:3271
-msgid "Delete All Occurrences"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-msgid "Appointment"
-msgstr "¾à¼Ó"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-msgid "Appointment Basics"
-msgstr "¾à¼Ó ±âº»"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-msgid "Custom recurrence"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-msgid "Exceptions"
-msgstr "¿¹¿Ü"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-msgid "Modify"
-msgstr "¼öÁ¤"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-msgid "No recurrence"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1577
-msgid "Play a sound"
-msgstr "¼Ò¸® ¿¬ÁÖ"
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-msgid "Preview"
-msgstr "¹Ì¸®º¸±â"
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Recurrence"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-msgid "Recurrence Rule"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-msgid "Reminder"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1586
-msgid "Run a program"
-msgstr "ÇÁ·Î±×·¥À» ±¸µ¿ÇÕ´Ï´Ù"
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1583
-msgid "Send an email"
-msgstr "À̸ÞÀÏ º¸³»±â"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-msgid "Settings..."
-msgstr "¼³Á¤..."
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1580
-msgid "Show a dialog"
-msgstr "´ÙÀ̾ó·Î±â º¸±â"
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-msgid "_End time:"
-msgstr "³¡¸¶Ä¡´Â ½Ã°£(_E):"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Start time:"
-msgstr "½ÃÀÛ ½Ã°£(_S):"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Starting date:"
-msgstr "½ÃÀÛ ³¯Â¥(_S):"
-
-#. Automatically generated. Do not edit.
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:2
-msgid "after"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:6
-msgid "before"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "day(s)"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-msgid "end of appointment"
-msgstr "¾à¼Ó ³¡"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "for"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-msgid "hour(s)"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:40
-msgid "label21"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "label55"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:42
-msgid "minute(s)"
-msgstr "ºÐ"
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-msgid "month(s)"
-msgstr "°³¿ù"
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "start of appointment"
-msgstr "¾à¼ÓÀÇ ½ÃÀÛ"
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "until"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:46
-msgid "week(s)"
-msgstr "ÁÖ"
-
-#: calendar/gui/event-editor-dialog.glade.h:47
-msgid "year(s)"
-msgstr "³â"
-
-#: calendar/gui/event-editor.c:371
-msgid "Edit Appointment"
-msgstr "¾à¼ÓÀ» ¼öÁ¤ÇÑ´Ù"
-
-#: calendar/gui/event-editor.c:449
-msgid "on"
-msgstr ""
-
-#: calendar/gui/event-editor.c:474 filter/filter-datespec.c:65
-msgid "day"
-msgstr ""
-
-#: calendar/gui/event-editor.c:601
-msgid "on the"
-msgstr ""
-
-#: calendar/gui/event-editor.c:608
-msgid "th"
-msgstr ""
-
-#: calendar/gui/event-editor.c:754
-msgid "occurrences"
-msgstr ""
-
-#: calendar/gui/event-editor.c:871
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr ""
-
-#: calendar/gui/event-editor.c:1532
-#, c-format
-msgid " %d days"
-msgstr " %d ³¯¾¿"
-
-#: calendar/gui/event-editor.c:1534
-msgid " 1 day"
-msgstr "ÇϷ羿"
-
-#: calendar/gui/event-editor.c:1537
-#, c-format
-msgid " %d weeks"
-msgstr " %d ÁÖ¾¿"
-
-#: calendar/gui/event-editor.c:1539
-msgid " 1 week"
-msgstr " ÇÑÁÖ¾¿"
-
-#: calendar/gui/event-editor.c:1542
-#, c-format
-msgid " %d hours"
-msgstr " %d ½Ã°£¾¿"
-
-#: calendar/gui/event-editor.c:1544
-msgid " 1 hour"
-msgstr " Çѽ𣾿"
-
-#: calendar/gui/event-editor.c:1547
-#, c-format
-msgid " %d minutes"
-msgstr " %d ºÐ¸¶´Ù"
-
-#: calendar/gui/event-editor.c:1549
-msgid " 1 minute"
-msgstr "ÀϺи¶´Ù"
-
-#: calendar/gui/event-editor.c:1552
-#, c-format
-msgid " %d seconds"
-msgstr " %d Ãʸ¶´Ù"
-
-#: calendar/gui/event-editor.c:1554
-msgid " 1 second"
-msgstr " 1 Ãʸ¶´Ù"
-
-#: calendar/gui/event-editor.c:1601
-msgid " before start of appointment"
-msgstr "¾à¼Ó½ÃÀÛÀü"
-
-#: calendar/gui/event-editor.c:1603
-msgid " after start of appointment"
-msgstr "¾à¼Ó ½ÃÀÛÈÄ"
-
-#: calendar/gui/event-editor.c:1611
-msgid " before end of appointment"
-msgstr "¾à¼Ó ³¡³ª±âÀü"
-
-#: calendar/gui/event-editor.c:1613
-msgid " after end of appointment"
-msgstr "¾à¼Ó ³¡³­ ÈÄ"
-
-#: calendar/gui/event-editor.c:3113 calendar/gui/print.c:1093
-#: calendar/gui/print.c:1095 calendar/gui/print.c:1096
-msgid "%a %b %d %Y"
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-msgid "Evolution calendar executive summary component."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-msgid "Factory for the Calendar Summary component."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-msgid "Factory for the Evolution calendar component."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-msgid "Factory for the calendar iTip view control"
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-msgid "Factory for the sample Calendar control"
-msgstr ""
-
-#: calendar/gui/gnome-cal.c:695
-#, c-format
-msgid "Could not open the folder in `%s'"
-msgstr "`%s'¿¡ÀÖ´Â Æú´õ¸¦ ¿­¼ö°¡ ¾ø½À´Ï´Ù"
-
-#: calendar/gui/gnome-cal.c:706
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:1
-msgid "April"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:2
-msgid "August"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:3
-msgid "December"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:4
-msgid "February"
-msgstr "ÀÌ¿ù"
-
-#: calendar/gui/goto-dialog.glade.h:5
-msgid "Go To Date"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:6
-msgid "Go To Today"
-msgstr "¿À´Ã·Î À̵¿"
-
-#: calendar/gui/goto-dialog.glade.h:7
-msgid "January"
-msgstr "ÀÏ¿ù"
-
-#: calendar/gui/goto-dialog.glade.h:8
-msgid "July"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:9
-msgid "June"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:10
-msgid "March"
-msgstr "»ï¿ù"
-
-#: calendar/gui/goto-dialog.glade.h:11
-msgid "May"
-msgstr "¿À¿ù"
-
-#: calendar/gui/goto-dialog.glade.h:12
-msgid "November"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:13
-msgid "October"
-msgstr "½Ã¿ù"
-
-#: calendar/gui/goto-dialog.glade.h:14
-msgid "September"
-msgstr "±¸¿ù"
-
-#: calendar/gui/print.c:296
-msgid "1st"
-msgstr ""
-
-#: calendar/gui/print.c:296
-msgid "2nd"
-msgstr ""
-
-#: calendar/gui/print.c:296
-msgid "3rd"
-msgstr ""
-
-#: calendar/gui/print.c:296
-msgid "4th"
-msgstr ""
-
-#: calendar/gui/print.c:296
-msgid "5th"
-msgstr ""
-
-#: calendar/gui/print.c:297
-msgid "6th"
-msgstr ""
-
-#: calendar/gui/print.c:297
-msgid "7th"
-msgstr ""
-
-#: calendar/gui/print.c:297
-msgid "8th"
-msgstr ""
-
-#: calendar/gui/print.c:297
-msgid "9th"
-msgstr ""
-
-#: calendar/gui/print.c:297
-msgid "10th"
-msgstr ""
-
-#: calendar/gui/print.c:298
-msgid "11th"
-msgstr ""
-
-#: calendar/gui/print.c:298
-msgid "12th"
-msgstr ""
-
-#: calendar/gui/print.c:298
-msgid "13th"
-msgstr ""
-
-#: calendar/gui/print.c:298
-msgid "14th"
-msgstr ""
-
-#: calendar/gui/print.c:298
-msgid "15th"
-msgstr ""
-
-#: calendar/gui/print.c:299
-msgid "16th"
-msgstr ""
-
-#: calendar/gui/print.c:299
-msgid "17th"
-msgstr ""
-
-#: calendar/gui/print.c:299
-msgid "18th"
-msgstr ""
-
-#: calendar/gui/print.c:299
-msgid "19th"
-msgstr ""
-
-#: calendar/gui/print.c:299
-msgid "20th"
-msgstr ""
-
-#: calendar/gui/print.c:300
-msgid "21st"
-msgstr ""
-
-#: calendar/gui/print.c:300
-msgid "22nd"
-msgstr ""
-
-#: calendar/gui/print.c:300
-msgid "23rd"
-msgstr ""
-
-#: calendar/gui/print.c:300
-msgid "24th"
-msgstr ""
-
-#: calendar/gui/print.c:300
-msgid "25th"
-msgstr ""
-
-#: calendar/gui/print.c:301
-msgid "26th"
-msgstr ""
-
-#: calendar/gui/print.c:301
-msgid "27th"
-msgstr ""
-
-#: calendar/gui/print.c:301
-msgid "28th"
-msgstr ""
-
-#: calendar/gui/print.c:301
-msgid "29th"
-msgstr ""
-
-#: calendar/gui/print.c:301
-msgid "30th"
-msgstr ""
-
-#: calendar/gui/print.c:302
-msgid "31st"
-msgstr ""
-
-#: calendar/gui/print.c:358
-msgid "Su"
-msgstr ""
-
-#: calendar/gui/print.c:358
-msgid "Mo"
-msgstr ""
-
-#: calendar/gui/print.c:358
-msgid "Tu"
-msgstr ""
-
-#: calendar/gui/print.c:358
-msgid "We"
-msgstr ""
-
-#: calendar/gui/print.c:358
-msgid "Th"
-msgstr ""
-
-#: calendar/gui/print.c:358
-msgid "Fr"
-msgstr ""
-
-#: calendar/gui/print.c:358
-msgid "Sa"
-msgstr ""
-
-#: calendar/gui/print.c:944
-msgid "Tasks"
-msgstr "ÀÛ¾÷"
-
-#. Day
-#: calendar/gui/print.c:1074
-msgid "Current day (%a %b %d %Y)"
-msgstr ""
-
-#: calendar/gui/print.c:1088 calendar/gui/print.c:1092
-msgid "%a %b %d"
-msgstr ""
-
-#: calendar/gui/print.c:1089
-msgid "%a %d %Y"
-msgstr ""
-
-#: calendar/gui/print.c:1100
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr ""
-
-#. Month
-#: calendar/gui/print.c:1108
-msgid "Current month (%b %Y)"
-msgstr ""
-
-#. Year
-#: calendar/gui/print.c:1115
-msgid "Current year (%Y)"
-msgstr ""
-
-#: calendar/gui/print.c:1152
-msgid "Print Calendar"
-msgstr ""
-
-#: calendar/gui/print.c:1317 mail/mail-callbacks.c:1334
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:24
-#: ui/evolution-mail.xml.h:29
-msgid "Print Preview"
-msgstr "Àμ⠹̸®º¸±â"
-
-#: calendar/gui/tasks-control.c:105
-msgid "The URI of the tasks folder to display"
-msgstr "Ç¥½ÃÇÒ ÀÛ¾÷ Æú´õÀÇ URI URI"
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-
-#: calendar/gui/weekday-picker.c:313 calendar/gui/weekday-picker.c:408
-msgid "SMTWTFS"
-msgstr ""
-
-#: camel/camel-filter-driver.c:848
-#, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr "ÇÊÅÍ ºÐ¼®Áß ¿À·ù: %s: %s"
-
-#: camel/camel-filter-driver.c:853
-#, c-format
-msgid "Error executing filter: %s: %s"
-msgstr "ÇÊÅÍ ½ÇÇàÁß ¿À·ù: %s: %s"
-
-#: camel/camel-filter-search.c:426 camel/camel-filter-search.c:432
-#, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr "ÇÊÅÍ Ã£±â ½ÇÇàÁß ¿À·ù: %s: %s"
-
-#: camel/camel-folder-search.c:323
-#, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-folder-search.c:333
-#, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr ""
-"ã±â¸¦ ¼öÇ൵Áß ¿À·ù: %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:480 camel/camel-folder-search.c:508
-msgid "(match-all) requires a single bool result"
-msgstr ""
-
-#: camel/camel-folder-search.c:554
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr ""
-
-#: camel/camel-folder-search.c:663 camel/camel-folder-search.c:700
-msgid "Invalid type in body-contains, expecting string"
-msgstr ""
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:90 camel/camel-lock.c:109 camel/camel-movemail.c:136
-#: camel/camel-movemail.c:183
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "`%s'¿ë Àá±ÝÆÄÀÏÀ» »ý¼ºÇÒ ¼ö ¾ø½À´Ï´Ù: %s"
-
-#: camel/camel-lock.c:149 camel/camel-movemail.c:217
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr ""
-
-#: camel/camel-lock.c:199
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr ""
-
-#: camel/camel-lock.c:253
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr ""
-
-#: camel/camel-movemail.c:99
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:146
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:156
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:197
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:243
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr "¸ÞÀÏÆÄÀÏÀ» ÀдÂÁß ¿À·ù ¹ß»ý: %s"
-
-#: camel/camel-movemail.c:254
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr "¸ÞÀÏ ÀÓ½ÃÆÄÀÏÀ» ¾²´ÂÁß ¿À·ù¹ß»ý: %s"
-
-#: camel/camel-movemail.c:272
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:304
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:316
-#, c-format
-msgid "Could not fork: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:354
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:355
-msgid "(Unknown error)"
-msgstr "(¾Ë¼ö¾ø´Â ¿À·ù)"
-
-#: camel/camel-provider.c:137
-#, c-format
-msgid "Could not load %s: %s"
-msgstr ""
-
-#: camel/camel-provider.c:145
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr ""
-
-#: camel/camel-remote-store.c:170
-#, c-format
-msgid "%s server %s"
-msgstr "%s ´º½º ¼­¹ö %s"
-
-#: camel/camel-remote-store.c:174
-#, c-format
-msgid "%s service for %s on %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:221
-msgid "Connection cancelled"
-msgstr "¿¬°áÀÌ Ãë¼ÒµÊ"
-
-#: camel/camel-remote-store.c:224
-#: camel/providers/smtp/camel-smtp-transport.c:243
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:225
-msgid "(unknown host)"
-msgstr "(¸ð¸£´Â È£½ºÆ®)"
-
-#: camel/camel-remote-store.c:306 camel/camel-remote-store.c:368
-#: camel/camel-remote-store.c:439
-#: camel/providers/imap/camel-imap-command.c:289
-msgid "Operation cancelled"
-msgstr "ÀÛ¾÷ Ãë¼Ò"
-
-#: camel/camel-remote-store.c:445
-msgid "Server unexpectedly disconnected"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:97 camel/camel-sasl-plain.c:84
-msgid "Authentication failed."
-msgstr "ÀÎÁõ ½ÇÆÐ."
-
-#: camel/camel-sasl-anonymous.c:106
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:118
-#, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:130
-#, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-cram-md5.c:32 mail/mail-config.glade.h:11
-msgid "CRAM-MD5"
-msgstr ""
-
-#: camel/camel-sasl-cram-md5.c:34
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:37 mail/mail-config.glade.h:19
-msgid "DIGEST-MD5"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:39
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:761
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:770
-msgid "Server challenge invalid\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:776
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:798
-msgid "Server response did not contain authorization data\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:816
-msgid "Server response contained incomplete authorization data\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:826
-msgid "Server response does not match\n"
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:38
-msgid "Kerberos 4"
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:158
-#, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:215
-#: camel/providers/imap/camel-imap-store.c:418
-msgid "Bad authentication response from server."
-msgstr ""
-
-#: camel/camel-sasl-plain.c:29
-msgid "PLAIN"
-msgstr ""
-
-#: camel/camel-sasl-plain.c:31
-msgid ""
-"This option will connect to the server using a the PLAIN SASL mechanism if "
-"the server supports it."
-msgstr ""
-
-#: camel/camel-search-private.c:105
-#, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr ""
-
-#: camel/camel-service.c:139
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr ""
-
-#: camel/camel-service.c:147
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr ""
-
-#: camel/camel-service.c:155
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr ""
-
-#: camel/camel-service.c:478
-#, c-format
-msgid "No such host %s."
-msgstr ""
-
-#: camel/camel-service.c:481
-#, c-format
-msgid "Temporarily unable to look up hostname %s."
-msgstr ""
-
-#: camel/camel-session.c:54
-msgid "Virtual folder email provider"
-msgstr ""
-
-#: camel/camel-session.c:56
-msgid "For reading mail as a query of another set of folders"
-msgstr ""
-
-#: camel/camel-session.c:320
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr ""
-
-#: camel/camel-session.c:415
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"%s µð·ºÅ丮¸¦ »ý¼ºÇÒ ¼ö°¡ ¾ø½À´Ï´Ù:\n"
-"%s"
-
-#. Fill in the new fields
-#: camel/camel-store.c:382 mail/mail-ops.c:941 mail/mail-ops.c:948
-#: mail/mail-ops.c:966 mail/mail-ops.c:967
-msgid "Trash"
-msgstr ""
-
-#: camel/camel-url.c:77
-#, c-format
-msgid "URL string `%s' contains no protocol"
-msgstr ""
-
-#: camel/camel-url.c:92
-#, c-format
-msgid "URL string `%s' contains an invalid protocol"
-msgstr "URL `%s'ÀÌ Á¦´ë·ÎµÈ ÇÁ·ÎÅäÄÝÀ» °¡Áö°í ÀÖÁö¾Ê½À´Ï´Ù"
-
-#: camel/camel-url.c:152
-#, c-format
-msgid "Port number in URL `%s' is non-numeric"
-msgstr "URL `%s'¿¡ÀÖ´Â Æ÷Æ® ¹øÈ£°¡ ¼ýÀÚ°¡ ¾Æ´Õ´Ï´Ù"
-
-#: camel/camel-vee-folder.c:962
-#, c-format
-msgid "No such message: %s"
-msgstr "±×·± ¸Þ¼¼Áö ¾øÀ½: %s"
-
-#: camel/providers/imap/camel-imap-command.c:234
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "IMAP server·ÎºÎÅÍ ¿¹»óÄ¡¸øÇÑ ´äº¯: %s"
-
-#: camel/providers/imap/camel-imap-command.c:242
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr "IMAP ¸í·ÉÀÌ ½ÇÆÐ: %s"
-
-#: camel/providers/imap/camel-imap-command.c:243 shell/e-storage.c:451
-msgid "Unknown error"
-msgstr "¾Ë ¼ö¾ø´Â ¿¡·¯"
-
-#: camel/providers/imap/camel-imap-command.c:297
-msgid "Server response ended too soon."
-msgstr "¼­¹öÀÇ ´äº¯ÀÌ ³Ê¹« ÀÏÂï ³¡³µ½À´Ï´Ù."
-
-#: camel/providers/imap/camel-imap-command.c:433
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr "IMAP ¼­¹öÀÇ ´äº¯¿¡ %s Á¤º¸°¡ ´ã°ÜÀÖÁö¾Ê½À´Ï´Ù"
-
-#: camel/providers/imap/camel-imap-command.c:469
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr "IMAP ¼­¹ö·ÎºÎÅÍ ¿¹°ßÄ¡¸øÇÑ OK´äº¯ÀÌ ¿È: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:176
-#, c-format
-msgid "Could not load summary for %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-folder.c:345
-msgid "Scanning IMAP folder"
-msgstr "IMAP Æú´õ¸¦ »ìÆ캾´Ï´Ù"
-
-#: camel/providers/imap/camel-imap-folder.c:946
-#: camel/providers/imap/camel-imap-folder.c:1143
-msgid "This message is not currently available"
-msgstr "ÀÌ ¸Þ½ÃÁö´Â ÇöÀç º¸¿©ÁÙ ¼ö°¡ ¾ø½À´Ï´Ù"
-
-#: camel/providers/imap/camel-imap-folder.c:976
-#: camel/providers/imap/camel-imap-folder.c:1177
-msgid "Could not find message body in FETCH response."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:40
-msgid "IMAPv4"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:42
-msgid "For reading and storing mail on IMAP servers."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:58
-msgid "Secure IMAPv4"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:60
-msgid "For reading and storing mail on IMAP servers over an SSL connection."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:77
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:441
-#, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:451
-#, c-format
-msgid "No support for authentication type %s"
-msgstr "%s ŸÀÔ ÀÎÁõÀ» Áö¿ø ¾ÈÇÔ"
-
-#: camel/providers/imap/camel-imap-store.c:476
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:491
-#: camel/providers/smtp/camel-smtp-transport.c:374
-msgid "You didn't enter a password."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:519
-#: camel/providers/smtp/camel-smtp-transport.c:382
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:871
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:1328
-msgid "You must be working online to complete this operation"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:36
-msgid "MH-format mail directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:37
-msgid "For storing local mail in MH-like mail directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:46
-msgid "Standard Unix mailbox file"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:47
-msgid "For storing local mail in standard mbox format"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:56
-msgid "Qmail maildir-format mail files"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:57
-msgid "For storing local mail in qmail maildir directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:128
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:135
-#, c-format
-msgid "Store root %s is not a regular directory"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:143
-#: camel/providers/local/camel-local-store.c:159
-#, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "Æú´õ¸¦ ¾òÀ»¼ö ¾ø½À´Ï´Ù: %s: %s"
-
-#: camel/providers/local/camel-local-store.c:174
-msgid "Local stores do not have an inbox"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:184
-#, c-format
-msgid "Local mail file %s"
-msgstr "·ÎÄÃ ¸ÞÀÏ ÆÄÀÏ %s"
-
-#: camel/providers/local/camel-local-store.c:240
-#, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:282
-#, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:292
-#, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-folder.c:148
-#: camel/providers/local/camel-maildir-folder.c:156
-#: camel/providers/local/camel-maildir-folder.c:167
-#, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr "¸ÞÀÏÆú´õ¿¡ ¸Þ¼¼Áö¸¦ µ¡ºÙÀϼö ¾ø½À´Ï´Ù: %s: %s"
-
-#: camel/providers/local/camel-maildir-folder.c:195
-#: camel/providers/local/camel-maildir-folder.c:207
-#: camel/providers/local/camel-maildir-folder.c:215
-#: camel/providers/local/camel-mbox-folder.c:317
-#: camel/providers/local/camel-mh-folder.c:183
-#: camel/providers/local/camel-mh-folder.c:192
-#: camel/providers/local/camel-mh-folder.c:200
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-"¸Þ¼¼Áö¸¦ ¾òÀ»¼ö ¾øÀ½: %s\n"
-" %s"
-
-#: camel/providers/local/camel-maildir-folder.c:195
-#: camel/providers/local/camel-mbox-folder.c:317
-#: camel/providers/local/camel-mh-folder.c:183
-msgid "No such message"
-msgstr "±×·± ¸Þ¼¼Áö ¾øÀ½"
-
-#: camel/providers/local/camel-maildir-folder.c:216
-#: camel/providers/local/camel-mh-folder.c:201
-msgid "Invalid message contents"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:94
-#: camel/providers/local/camel-mh-store.c:88
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:98
-#: camel/providers/local/camel-mbox-store.c:99
-#: camel/providers/local/camel-mh-store.c:95
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr "Æú´õ `%s'´Â Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù."
-
-#: camel/providers/local/camel-maildir-store.c:105
-#: camel/providers/local/camel-mh-store.c:101
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-"Æú´õ `%s'¸¦ ¸¸µé¼ö ¾øÀ½:\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:120
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:149
-#: camel/providers/local/camel-maildir-store.c:186
-#: camel/providers/local/camel-mh-store.c:125
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:150
-msgid "not a maildir directory"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:201
-#, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:257
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:333
-#: camel/providers/local/camel-mbox-folder.c:365
-#: camel/providers/local/camel-mbox-folder.c:378
-#, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-"¸Þ¼¼Áö¸¦ ¾òÀ»¼ö ¾øÀ½: %2$s Æú´õ¿¡¼­ %1$s\n"
-" %3$s"
-
-#: camel/providers/local/camel-mbox-folder.c:366
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:379
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:92
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:108
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:117
-#: camel/providers/local/camel-mbox-store.c:144
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:136
-#: camel/providers/local/camel-mbox-store.c:159
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:151
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr ""
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:240
-msgid "Summarising folder"
-msgstr "Æú´õ¸¦ ¿ä¾à"
-
-#: camel/providers/local/camel-mbox-summary.c:245
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:287
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:362
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:493
-#: camel/providers/local/camel-mbox-summary.c:694 mail/mail-ops.c:1327
-msgid "Synchronising folder"
-msgstr "Æú´õ µ¿±âÈ­"
-
-#: camel/providers/local/camel-mbox-summary.c:498
-#: camel/providers/local/camel-mbox-summary.c:699
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:515
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:540
-#: camel/providers/local/camel-mbox-summary.c:548
-#: camel/providers/local/camel-mbox-summary.c:737
-#: camel/providers/local/camel-mbox-summary.c:745
-msgid "Summary and folder mismatch, even after a sync"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:591
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:608
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:626
-#: camel/providers/local/camel-mbox-summary.c:795
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:635
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr "Àӽà Æú´õ¸¦ ´ÝÀ»¼ö ¾øÀ½: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:646
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:870
-#, c-format
-msgid "Unknown error: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mh-folder.c:147
-#: camel/providers/local/camel-mh-folder.c:155
-#, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mh-store.c:108
-#, c-format
-msgid "`%s' is not a directory."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:41
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:62
-msgid "Server rejected username"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:68
-msgid "Failed to send username to server"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:77
-msgid "Server rejected username/password"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr "¸Þ¼¼Áö %s¸¦ ãÀ»¼ö ¾øÀ½."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr "¼­¹ö¿¡¼­ ±×·ì¸ñ·ÏÀ» ¾òÀ»¼ö ¾øÀ½."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-provider.c:38
-msgid "USENET news"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-provider.c:40
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:226
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:288
-#, c-format
-msgid "USENET News via %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:295
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:327
-#: camel/providers/nntp/camel-nntp-store.c:490
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-msgid "Retrieving POP summary"
-msgstr "POP ¿ä¾àÀ» °¡Á®¿È"
-
-#: camel/providers/pop3/camel-pop3-folder.c:192
-msgid "Could not open folder: message listing was incomplete."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:286
-#, c-format
-msgid "No message with uid %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:290
-#, c-format
-msgid "Retrieving POP message %d"
-msgstr "POP ¸Þ¼¼Áö %d¸¦ °¡Á®¿È"
-
-#: camel/providers/pop3/camel-pop3-folder.c:308
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:34
-msgid "POP"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:36
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:52
-msgid "Secure POP"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:54
-msgid ""
-"For connecting to POP servers over an SSL connection. The POP protocol can "
-"also be used to retrieve mail from certain web mail providers and "
-"proprietary email systems."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:71
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:81
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:93
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:181
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr "KPOP ¼­¹ö¿¡¼­ ÀÎÁõÇÒ¼ö ¾øÀ½: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:298
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:337
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:356
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:359
-#: camel/providers/pop3/camel-pop3-store.c:396
-msgid "(Unknown)"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:386
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:394
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:503
-#, c-format
-msgid "No such folder `%s'."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:34
-#: mail/mail-config.glade.h:64
-msgid "Sendmail"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:36
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:105
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:122
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:148
-#, c-format
-msgid "Could not send message: %s"
-msgstr "¸Þ¼¼Áö¸¦ º¸³¾¼ö ¾øÀ½: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:161
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:168
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:173
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:192
-msgid "Could not find 'From' address in message"
-msgstr "¸Þ¼¼Áö¿¡¼­ º¸³½ »ç¶÷À» ¾Ë¾Æ³¾¼ö°¡ ¾øÀ½"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:245
-msgid "sendmail"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "Mail delivery via the sendmail program"
-msgstr "sendmailÀ» ÅëÇÑ ¸ÞÀÏ Àü´Þ"
-
-#: camel/providers/smtp/camel-smtp-provider.c:35 mail/mail-config.glade.h:58
-msgid "SMTP"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-provider.c:37
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-provider.c:52
-msgid "Secure SMTP"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-provider.c:54
-msgid ""
-"For delivering mail by connecting to a remote mailhub using SMTP over an SSL "
-"connection.\n"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:146
-msgid "Syntax error, command unrecognized"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:148
-msgid "Syntax error in parameters or arguments"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:150
-msgid "Command not implemented"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:152
-msgid "Command parameter not implemented"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:154
-msgid "System status, or system help reply"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:156
-msgid "Help message"
-msgstr "µµ¿ò¸»"
-
-#: camel/providers/smtp/camel-smtp-transport.c:158
-msgid "Service ready"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:160
-msgid "Service closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:162
-msgid "Service not available, closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:164
-msgid "Requested mail action okay, completed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:166
-msgid "User not local; will forward to <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:168
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:170
-msgid "Requested action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:172
-msgid "Requested action aborted: error in processing"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:174
-msgid "User not local; please try <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:176
-msgid "Requested action not taken: insufficient system storage"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:178
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:180
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:182
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:184
-msgid "Transaction failed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:188
-msgid "A password transition is needed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:190
-msgid "Authentication mechanism is too weak"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:192
-msgid "Encryption required for requested authentication mechanism"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:194
-msgid "Temporary authentication failure"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:196
-msgid "Authentication required"
-msgstr "ÀÎÁõÀÌ ÇÊ¿äÇÔ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:287
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:359
-#, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:494
-#, c-format
-msgid "SMTP server %s"
-msgstr "SMTP ¼­¹ö %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:496
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:521
-msgid "Cannot send message: sender address not defined."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:528
-msgid "Cannot send message: sender address not valid."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:542
-msgid "Cannot send message: no recipients defined."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:636
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:655
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:690
-#: camel/providers/smtp/camel-smtp-transport.c:702
-#, c-format
-msgid "AUTH request timed out: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:760
-msgid "Bad authentication response from server.\n"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:785
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:804
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:829
-#, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:848
-#, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:879
-#, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:898
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:913
-#: camel/providers/smtp/camel-smtp-transport.c:931
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:950
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:974
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:993
-#, c-format
-msgid "RSET response error: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1016
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1035
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:87
-msgid "1 byte"
-msgstr "1 ¹ÙÀÌÆ®"
-
-#: composer/e-msg-composer-attachment-bar.c:89
-#, c-format
-msgid "%u bytes"
-msgstr "%u ¹ÙÀÌÆ®"
-
-#: composer/e-msg-composer-attachment-bar.c:96
-#, c-format
-msgid "%.1fK"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:100
-#, c-format
-msgid "%.1fM"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fG"
-msgstr ""
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:324 mail/mail-display.c:113
-msgid "attachment"
-msgstr "÷ºÎ"
-
-#: composer/e-msg-composer-attachment-bar.c:413
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr "ÆÄÀÏÀ» ÷ºÎÇÕ´Ï´Ù"
-
-#: composer/e-msg-composer-attachment-bar.c:461
-msgid "Remove selected items from the attachment list"
-msgstr "÷ºÎÆÄÀÏ ¸ñ·Ï¿¡¼­ ¼±ÅÃÇÑ Ç׸ñÀ» Á¦°ÅÇÕ´Ï´Ù"
-
-#: composer/e-msg-composer-attachment-bar.c:492
-msgid "Add attachment..."
-msgstr "÷ºÎÆÄÀÏ Ãß°¡..."
-
-#: composer/e-msg-composer-attachment-bar.c:493
-msgid "Attach a file to the message"
-msgstr "¸Þ¼¼Áö¿¡ ÆÄÀÏÀ» ÷ºÎÇÕ´Ï´Ù"
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/message-list.c:1014
-msgid "Attachment"
-msgstr "÷ºÎ"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr "÷ºÎ ¼Ó¼º"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr "ÆÄÀÏ À̸§:"
-
-#: composer/e-msg-composer-attachment.glade.h:5
-msgid "Inline attachment"
-msgstr "÷ºÎ"
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr "MIME Çü½Ä:"
-
-#: composer/e-msg-composer-attachment.glade.h:7
-msgid "Send as:"
-msgstr ""
-
-#: composer/e-msg-composer-hdrs.c:314
-msgid "Click here for the address book"
-msgstr "ÁÖ¼Ò·Ï"
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:345 mail/mail-format.c:696
-msgid "From:"
-msgstr "º¸³½ »ç¶÷:"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:351 mail/mail-format.c:698
-msgid "Reply-To:"
-msgstr "ȸ½Å ÁÖ¼Ò:"
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:362 mail/mail-format.c:618
-msgid "Subject:"
-msgstr "Á¦¸ñ:"
-
-#: composer/e-msg-composer-hdrs.c:376 mail/mail-format.c:700
-msgid "To:"
-msgstr "¹Þ´Â »ç¶÷:"
-
-#: composer/e-msg-composer-hdrs.c:377
-msgid "Enter the recipients of the message"
-msgstr "¸Þ¼¼Áö¸¦ ¹ÞÀ» »ç¶÷À» ÀÔ·ÂÇϼ¼¿ä"
-
-#: composer/e-msg-composer-hdrs.c:380 mail/mail-format.c:702
-msgid "Cc:"
-msgstr "ÂüÁ¶:"
-
-#: composer/e-msg-composer-hdrs.c:381
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "¸Þ¼¼ÁöÀÇ »çº»À» ¹ÞÀ» »ç¶÷ÀÇ ÁÖ¼Ò¸¦ ÀÔ·ÂÇϼ¼¿ä"
-
-#: composer/e-msg-composer-hdrs.c:384
-msgid "Bcc:"
-msgstr "¼ûÀº ÂüÁ¶:"
-
-#: composer/e-msg-composer-hdrs.c:385
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr "ÂüÁ¶ ¸ñ·Ï¿¡´Â ¾øÁö¸¸ ¸Þ¼¼ÁöÀÇ »çº»À» ¹ÞÀ» »ç¶÷µéÀÇ ÁÖ¼Ò¸¦ ÀÔ·ÂÇϼ¼¿ä"
-
-#: composer/e-msg-composer.c:518
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-"¼­¸í ÆÄÀÏ %sÀ» ¿­ ¼ö°¡ ¾ø½À´Ï´Ù:\n"
-"%s"
-
-#: composer/e-msg-composer.c:706
-msgid "Save as..."
-msgstr "´Ù¸¥ À̸§À¸·Î ÀúÀå..."
-
-#: composer/e-msg-composer.c:717
-#, c-format
-msgid "Error saving file: %s"
-msgstr "ÆÄÀÏ ÀúÀåÁß ¿À·ù ¹ß»ý: %s"
-
-#: composer/e-msg-composer.c:737
-#, c-format
-msgid "Error loading file: %s"
-msgstr "ÆÄÀÏÀ» ÀдÂÁß ¿À·ù ¹ß»ý: %s"
-
-#: composer/e-msg-composer.c:818 shell/e-shell-view-menu.c:193
-msgid "Evolution"
-msgstr ""
-
-#: composer/e-msg-composer.c:824
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-"ÀÌ ¸Þ½ÃÁö´Â º¸³»ÁöÁö¾Ê¾Ò½À´Ï´Ù.\n"
-"\n"
-"º¯°æµÈ ³»¿ëÀ» ÀúÀåÇϽðڽÀ´Ï±î?"
-
-#: composer/e-msg-composer.c:849
-msgid "Open file"
-msgstr "ÆÄÀÏ ¿­±â"
-
-#: composer/e-msg-composer.c:975
-msgid "That file does not exist."
-msgstr "±× ÆÄÀÏÀº Á¸ÀçÇÏÁö¾Ê½À´Ï´Ù"
-
-#: composer/e-msg-composer.c:985
-msgid "That is not a regular file."
-msgstr "¿ä°ÅÀÌ º¸Åë ÆÄÀÏÀÌ ¾Æ´Ï³×¿ä."
-
-#: composer/e-msg-composer.c:995
-msgid "That file exists but is not readable."
-msgstr "ÆÄÀÏÀÌ ÀÖ±â´ÂÇѵ¥ ÀÐÀ» ¼ö°¡ ¾ø³×¿ä."
-
-#: composer/e-msg-composer.c:1005
-msgid "That file appeared accesible but open(2) failed."
-msgstr "ÆÄÀÏÀÌ ÀÐÀ»¼ö ÀÖ´Â °Å°°±â´ÂÇѵ¥ ¿­ ¼ö°¡ ¾ø½À´Ï´Ù."
-
-#: composer/e-msg-composer.c:1027
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-"ÆÄÀÏÀÌ ¾ÆÁÖ Å©³×¿ä(100kµµ ³ÑÀ½).\n"
-"»ðÀÔÇÏ°í ½ÍÀ¸½Å°Å ¸Â³ª¿ä?"
-
-#: composer/e-msg-composer.c:1048
-msgid "An error occurred while reading the file."
-msgstr "ÆÄÀÏÀ» Àд µµÁß ¿¡·¯ ¹ß»ý"
-
-#: composer/e-msg-composer.c:1354 composer/e-msg-composer.c:1686
-msgid "Compose a message"
-msgstr "¸ÞÀÏ ¸Þ¼¼Áö¸¦ ÀÛ¼ºÇÕ´Ï´Ù"
-
-#: composer/e-msg-composer.c:1770
-msgid "Could not create composer window."
-msgstr "¸Þ½ÃÁö ÀÛ¼º âÀ» ¸¸µé ¼ö°¡ ¾ø½À´Ï´Ù"
-
-#: composer/evolution-composer.c:352
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-"¾ÆÁ÷ ½Å»ó Á¤º¸°¡ ÀÔ·ÂÀÌ µÇ¾îÀÖÁö ¾Ê¾Ò±â¶§¹®¿¡\n"
-"¸Þ½ÃÁö ÀÛ¼ºÃ¢À» ¸¸µé ¼ö°¡ ¾ø½À´Ï´Ù."
-
-#: composer/evolution-composer.c:367
-msgid "Cannot initialize Evolution's composer."
-msgstr "Evolution ÀÛ¼º±â°¡ ÃʱâÈ­µÇÁö ¾Ê¾Ò½À´Ï´Ù."
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:68 e-util/e-time-utils.c:116
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:471
-#: widgets/misc/e-dateedit.c:1273 widgets/misc/e-dateedit.c:1454
-msgid "%m/%d/%Y"
-msgstr "%Y/%m/%d"
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:86 e-util/e-time-utils.c:197
-msgid "%I:%M:%S %p%n"
-msgstr ""
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:89 e-util/e-time-utils.c:200
-msgid "%H:%M:%S%n"
-msgstr ""
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:93 e-util/e-time-utils.c:204
-msgid "%I:%M %p%n"
-msgstr ""
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:96 e-util/e-time-utils.c:207
-msgid "%H:%M%n"
-msgstr ""
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:268
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:467
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2499
-msgid "%a %m/%d/%Y"
-msgstr ""
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:273
-msgid "%a %m/%d/%Y %H:%M"
-msgstr "%a %Y/%m/%d %H:%M"
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:282
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr "%a %Y/%m/%d %I:%M %p"
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:311 widgets/misc/e-dateedit.c:1248
-#: widgets/misc/e-dateedit.c:1307 widgets/misc/e-dateedit.c:1486
-msgid "%H:%M"
-msgstr ""
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:314
-msgid "%H:%M:%S"
-msgstr ""
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:319 widgets/misc/e-dateedit.c:1251
-#: widgets/misc/e-dateedit.c:1310 widgets/misc/e-dateedit.c:1489
-msgid "%I:%M %p"
-msgstr ""
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:322
-msgid "%I:%M:%S %p"
-msgstr ""
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-msgid "Evolution component for the executive summary."
-msgstr ""
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-msgid "Factory for the Evolution executive summary component."
-msgstr ""
-
-#: executive-summary/component/component-factory.c:152
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr ""
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr "±âº» ±×³ð ÇÁ·Î±×·¥À¸·Î %sÀ» ¿­±â"
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr "±âº» ±×³ð ºê¶ó¿ìÁ®·Î %s¸¦ ¿­±â"
-
-#: executive-summary/component/e-summary-url.c:71
-#, c-format
-msgid "Send an email to %s"
-msgstr "%s·Î À̸ÞÀÏ º¸³»±â"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr "ºä¸¦ %s·Î º¯°æ"
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr "%s ½ÇÇà"
-
-#: executive-summary/component/e-summary-url.c:75
-#, c-format
-msgid "Close %s"
-msgstr "%s ´Ý±â"
-
-#: executive-summary/component/e-summary-url.c:76
-#, c-format
-msgid "Move %s to the left"
-msgstr "%sÀ»(¸¦) ¿ÞÂÊÀ¸·Î À̵¿"
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:78
-#, c-format
-msgid "Move %s into the previous row"
-msgstr "%sÀ»(¸¦) ÀÌÀü ÁÙ·Î À̵¿"
-
-#: executive-summary/component/e-summary-url.c:79
-#, c-format
-msgid "Move %s into the next row"
-msgstr "%sÀ»(¸¦) ´ÙÀ½ ÁÙ·Î À̵¿"
-
-#: executive-summary/component/e-summary-url.c:80
-#, c-format
-msgid "Configure %s"
-msgstr "%s ¼³Á¤"
-
-#: executive-summary/component/e-summary.c:918
-#, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"HTML ÆÄÀÏÀ» ¿­ ¼ö°¡ ¾ø½À´Ï´Ù:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:932
-#, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr ""
-"ÀÚ·áÀ» ÀдÂÁß ¿À·ù ¹ß»ý:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:950
-msgid "File does not have a place for the services.\n"
-msgstr ""
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr ""
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr ""
-
-#: executive-summary/component/main.c:60
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-msgid "RDF Summary"
-msgstr "RDF ¿ä¾à"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-msgid "Factory for the test bonobo component."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-msgid "Factory for the test component."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:509
-#: executive-summary/test-service/rdf-summary.c:546
-#: executive-summary/test-service/rdf-summary.c:591
-#: widgets/misc/e-messagebox.c:155
-msgid "Error"
-msgstr "¿¡·¯"
-
-#: executive-summary/test-service/rdf-summary.c:765
-msgid "Update automatically"
-msgstr "ÀÚµ¿À¸·Î °»½Å"
-
-#: executive-summary/test-service/rdf-summary.c:775
-msgid "Update now"
-msgstr "Áö±Ý °»½Å"
-
-#: executive-summary/test-service/rdf-summary.c:785
-msgid "Update every "
-msgstr "°»½Å ÁÖ±â"
-
-#: executive-summary/test-service/rdf-summary.c:793
-#: filter/filter-datespec.c:67
-msgid "minutes"
-msgstr "ºÐ"
-
-#: filter/filter-datespec.c:62
-msgid "year"
-msgstr "¿¬µµ"
-
-#: filter/filter-datespec.c:62
-msgid "years"
-msgstr "¿¬µµ"
-
-#: filter/filter-datespec.c:63
-msgid "month"
-msgstr "´Þ"
-
-#: filter/filter-datespec.c:63
-msgid "months"
-msgstr "´Þ"
-
-#: filter/filter-datespec.c:64
-msgid "week"
-msgstr "ÁÖ"
-
-#: filter/filter-datespec.c:64
-msgid "weeks"
-msgstr "ÁÖ"
-
-#: filter/filter-datespec.c:65
-msgid "days"
-msgstr "³¯"
-
-#: filter/filter-datespec.c:66
-msgid "hour"
-msgstr "½Ã"
-
-#: filter/filter-datespec.c:66
-msgid "hours"
-msgstr "½Ã"
-
-#: filter/filter-datespec.c:67
-msgid "minute"
-msgstr "ºÐ"
-
-#: filter/filter-datespec.c:68
-msgid "second"
-msgstr "ÃÊ"
-
-#: filter/filter-datespec.c:68
-msgid "seconds"
-msgstr "ÃÊ"
-
-#: filter/filter-datespec.c:183
-msgid "Oops. You have forgotten to choose a date."
-msgstr "Çì. ³¯Â¥ ¼±ÅÃÇØ¾ß ÇÏ´Â°É ÀØÀ¸¼ÌÁÒ:-)"
-
-#: filter/filter-datespec.c:185
-msgid "Oops. You have chosen an invalid date."
-msgstr "ÂÁ. °í¸¥ ³¯Â¥°¡ ÀûÇÕÇÏÁö¾Ê³×¿ä."
-
-#: filter/filter-datespec.c:259
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-
-#: filter/filter-datespec.c:282
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-
-#: filter/filter-datespec.c:322
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:357
-msgid "the current time"
-msgstr "ÇöÀç ½Ã°¢"
-
-#: filter/filter-datespec.c:357
-msgid "a time you specify"
-msgstr ""
-
-#: filter/filter-datespec.c:358
-msgid "a time relative to the current time"
-msgstr ""
-
-#. The label
-#: filter/filter-datespec.c:416
-msgid "Compare against"
-msgstr ""
-
-#: filter/filter-datespec.c:533 filter/filter-datespec.c:693
-msgid "now"
-msgstr "ÇöÀç"
-
-#: filter/filter-datespec.c:690
-msgid "<click here to select a date>"
-msgstr "<³¯Â¥¸¦ ¼±ÅÃÇÒ·Á¸é ¿©±æ ´©¸£¼¼¿ä>"
-
-#: filter/filter-editor.c:126 filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr "°Å¸£°³ ±ÔÄ¢"
-
-#. and now for the action area
-#: filter/filter-filter.c:424
-msgid "Then"
-msgstr "µ¿ÀÛ ¼±ÅÃ"
-
-#: filter/filter-filter.c:437
-msgid "Add action"
-msgstr "µ¿ÀÛ Ãß°¡"
-
-#: filter/filter-filter.c:443
-msgid "Remove action"
-msgstr "µ¿ÀÛ Á¦°Å"
-
-#: filter/filter-folder.c:143
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-"ÂÁ, Æú´õ °í¸£´Â °ÍÀ» ÀØÀ¸¼Ì³×¿ä.\n"
-"µÚ·Î µ¹¾Æ°¡ ¸ÞÀÏÀ» ¹è´ÞÇÒ Æú´õ¸¦ ÁöÁ¤Çϼ¼¿ä."
-
-#: filter/filter-folder.c:218 filter/vfolder-rule.c:279
-msgid "Select Folder"
-msgstr "Æú´õ ¼±ÅÃ"
-
-#: filter/filter-folder.c:243
-msgid "Enter folder URI"
-msgstr "Æú´õ URI¸¦ ÁöÁ¤Çϼ¼¿ä"
-
-#: filter/filter-folder.c:289
-msgid "<click here to select a folder>"
-msgstr "<Æú´õ¸¦ °í¸¦·Á¸é ¿©±æ ´©¸£¼¼¿ä>"
-
-#: filter/filter-input.c:189
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-"Á¤±Ô½Ä '%s'¿¡¼­ ¿¡·¯:\n"
-"%s"
-
-#: filter/filter-part.c:467
-msgid "Test"
-msgstr "Å×½ºÆ®"
-
-#: filter/filter-rule.c:598
-msgid "Rule name: "
-msgstr "±ÔÄ¢ À̸§: "
-
-#: filter/filter-rule.c:602
-msgid "Untitled"
-msgstr "Á¦¸ñ¾øÀ½"
-
-#: filter/filter-rule.c:618
-msgid "If"
-msgstr "Á¶°Ç ¼±ÅÃ"
-
-#: filter/filter-rule.c:635
-msgid "Execute actions"
-msgstr "µ¿ÀÛ ¼±ÅÃ"
-
-#: filter/filter-rule.c:639
-msgid "if all criteria are met"
-msgstr "¸ðµç Á¶°ÇÀÌ ´Ù ÃæÁ·µÉ ¶§"
-
-#: filter/filter-rule.c:644
-msgid "if any criteria are met"
-msgstr "¾î¶² Á¶°ÇÀÌ¶óµµ ÃæÁ·µÉ ¶§"
-
-#: filter/filter-rule.c:655
-msgid "Add criterion"
-msgstr "Á¶°Ç Ãß°¡"
-
-#: filter/filter-rule.c:661
-msgid "Remove criterion"
-msgstr "Á¶°Ç »èÁ¦"
-
-#: filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr "°Å¸£°Ô ÆíÁý"
-
-#: filter/filter.glade.h:5
-msgid "Edit VFolders"
-msgstr "°¡»óÆú´õ ÆíÁý"
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr "µé¾î¿À´Â°Å"
-
-#: filter/filter.glade.h:8
-msgid "Outgoing"
-msgstr "³ª°¡´Â°Å"
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:126
-msgid "Virtual Folders"
-msgstr "°¡»ó Æú´õ"
-
-#: filter/filter.glade.h:11
-msgid "specific folders only"
-msgstr "ÁöÁ¤µÈ Æú´õ¸¸"
-
-#: filter/filter.glade.h:12
-msgid "vFolder Sources"
-msgstr "°¡»ó Æú´õ ¼Ò½º"
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr ""
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr ""
-
-#: filter/filter.glade.h:15
-msgid "with all local folders"
-msgstr ""
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Colour"
-msgstr ""
-
-#: filter/libfilter-i18n.h:4
-msgid "Assign Score"
-msgstr ""
-
-#: filter/libfilter-i18n.h:5
-msgid "Attachments"
-msgstr "÷ºÎ"
-
-#: filter/libfilter-i18n.h:7
-msgid "contains"
-msgstr "Æ÷ÇÔ"
-
-#: filter/libfilter-i18n.h:8
-msgid "Copy to Folder"
-msgstr "Æú´õ·Î º¹»ç"
-
-#: filter/libfilter-i18n.h:9
-msgid "Date received"
-msgstr "¹ÞÀº ³¯Â¥"
-
-#: filter/libfilter-i18n.h:10
-msgid "Date sent"
-msgstr "º¸³½ ³¯Â¥"
-
-#: filter/libfilter-i18n.h:12
-msgid "Deleted"
-msgstr "»èÁ¦µÊ"
-
-#: filter/libfilter-i18n.h:13
-msgid "does not contain"
-msgstr "Æ÷ÇÔÇÏÁö¾ÊÀ½"
-
-#: filter/libfilter-i18n.h:14
-msgid "does not end with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:15
-msgid "does not exist"
-msgstr "Á¸ÀçÇÏÁö ¾ÊÀ½"
-
-#: filter/libfilter-i18n.h:16
-msgid "does not sound like"
-msgstr ""
-
-#: filter/libfilter-i18n.h:17
-msgid "does not start with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:18
-msgid "Do Not Exist"
-msgstr "Á¸ÀçÇÏÁö ¾ÊÀ½"
-
-#: filter/libfilter-i18n.h:19
-msgid "Draft"
-msgstr "ÃÊ°í"
-
-#: filter/libfilter-i18n.h:20
-msgid "ends with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:21
-msgid "Exist"
-msgstr ""
-
-#: filter/libfilter-i18n.h:22
-msgid "exists"
-msgstr ""
-
-#: filter/libfilter-i18n.h:23
-msgid "Expression"
-msgstr "Ç¥Çö"
-
-#: filter/libfilter-i18n.h:24
-msgid "Forward to Address"
-msgstr "Àü´ÞÇÒ ÁÖ¼Ò"
-
-#: filter/libfilter-i18n.h:25
-msgid "Important"
-msgstr "Áß¿ä"
-
-#: filter/libfilter-i18n.h:26
-msgid "is"
-msgstr ""
-
-#: filter/libfilter-i18n.h:27
-msgid "is greater than"
-msgstr ""
-
-#: filter/libfilter-i18n.h:28
-msgid "is less than"
-msgstr ""
-
-#: filter/libfilter-i18n.h:29
-msgid "is not"
-msgstr ""
-
-#: filter/libfilter-i18n.h:30
-msgid "Mailing list"
-msgstr ""
-
-#: filter/libfilter-i18n.h:31
-msgid "Message Body"
-msgstr ""
-
-#: filter/libfilter-i18n.h:32
-msgid "Message Header"
-msgstr "¸Þ¼¼Áö ¸Ó¸®¸»"
-
-#: filter/libfilter-i18n.h:33
-msgid "Message was received"
-msgstr "¸Þ¼¼Áö¸¦ ¹Þ¾Ò½À´Ï´Ù"
-
-#: filter/libfilter-i18n.h:34
-msgid "Message was sent"
-msgstr "¸Þ¼¼Áö¸¦ º¸³Â½À´Ï´Ù"
-
-#: filter/libfilter-i18n.h:35
-msgid "Move to Folder"
-msgstr "Æú´õ·Î À̵¿"
-
-#: filter/libfilter-i18n.h:36
-msgid "on or after"
-msgstr ""
-
-#: filter/libfilter-i18n.h:37
-msgid "on or before"
-msgstr ""
-
-#: filter/libfilter-i18n.h:38
-msgid "Read"
-msgstr "ÀÐÀ½"
-
-#: filter/libfilter-i18n.h:39
-msgid "Recipients"
-msgstr "¹Þ´Â »ç¶÷"
-
-#: filter/libfilter-i18n.h:40
-msgid "Regex Match"
-msgstr ""
-
-#: filter/libfilter-i18n.h:41
-msgid "Replied to"
-msgstr "ȸ½Å"
-
-#: filter/libfilter-i18n.h:42 filter/score-rule.c:192 filter/score-rule.c:194
-#: mail/message-list.c:1014
-msgid "Score"
-msgstr ""
-
-#: filter/libfilter-i18n.h:44
-msgid "Set Status"
-msgstr "»óÅ ¼³Á¤"
-
-#: filter/libfilter-i18n.h:45
-msgid "sounds like"
-msgstr ""
-
-#: filter/libfilter-i18n.h:46
-msgid "Specific header"
-msgstr ""
-
-#: filter/libfilter-i18n.h:47
-msgid "starts with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:49
-msgid "Stop Processing"
-msgstr ""
-
-#: filter/libfilter-i18n.h:50 mail/message-list.c:1015
-msgid "Subject"
-msgstr "Á¦¸ñ"
-
-#: filter/libfilter-i18n.h:51
-msgid "was after"
-msgstr ""
-
-#: filter/libfilter-i18n.h:52
-msgid "was before"
-msgstr ""
-
-#: filter/score-editor.c:126
-msgid "Score Rules"
-msgstr ""
-
-#: mail/component-factory.c:319
-msgid "Cannot initialize Evolution's mail component."
-msgstr ""
-
-#: mail/component-factory.c:392
-msgid "Cannot register storage with shell"
-msgstr ""
-
-#: mail/folder-browser-factory.c:244
-#, c-format
-msgid "Properties for \"%s\""
-msgstr "\"%s\"¿¡´ëÇÑ ¼³Á¤"
-
-#: mail/folder-browser-factory.c:246 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-msgid "Properties"
-msgstr "¼³Á¤"
-
-#: mail/folder-browser.c:219
-msgid "Store search as vFolder"
-msgstr "°¡»ó Æú´õ·Î ã±â¸¦ ÀúÀå"
-
-#: mail/folder-browser.c:510
-msgid "VFolder on Subject"
-msgstr ""
-
-#: mail/folder-browser.c:513
-msgid "VFolder on Sender"
-msgstr ""
-
-#: mail/folder-browser.c:516
-msgid "VFolder on Recipients"
-msgstr ""
-
-#: mail/folder-browser.c:519 mail/folder-browser.c:710
-msgid "VFolder on Mailing List"
-msgstr ""
-
-#: mail/folder-browser.c:525
-msgid "Filter on Subject"
-msgstr ""
-
-#: mail/folder-browser.c:528
-msgid "Filter on Sender"
-msgstr ""
-
-#: mail/folder-browser.c:531
-msgid "Filter on Recipients"
-msgstr ""
-
-#: mail/folder-browser.c:534 mail/folder-browser.c:709
-msgid "Filter on Mailing List"
-msgstr "¸ÞÀϸµ ¸®½ºÆ®¿¡´ëÇÑ ÇÊÅÍ"
-
-#: mail/folder-browser.c:545
-msgid "Resend"
-msgstr "´Ù½Ã º¸³¿"
-
-#: mail/folder-browser.c:547
-msgid "Save As..."
-msgstr "´Ù¸¥ À̸§À¸·Î ÀúÀå..."
-
-#: mail/folder-browser.c:549 mail/mail-view.c:148
-#: ui/evolution-addressbook.xml.h:9 ui/evolution-calendar.xml.h:23
-#: ui/evolution-mail.xml.h:28 ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr "Àμâ"
-
-#: mail/folder-browser.c:554
-msgid "Reply to Sender"
-msgstr "º¸³½ »ç¶÷¿¡°Ô ȸ½Å"
-
-#: mail/folder-browser.c:556 mail/mail-view.c:141 ui/evolution-mail.xml.h:35
-msgid "Reply to All"
-msgstr "Àüü ȸ½Å"
-
-#: mail/folder-browser.c:558 mail/mail-view.c:144 ui/evolution-mail.xml.h:14
-msgid "Forward"
-msgstr "Àü´Þ"
-
-#: mail/folder-browser.c:560
-msgid "Forward inline"
-msgstr ""
-
-#: mail/folder-browser.c:563
-msgid "Mark as Read"
-msgstr "ÀÐÀº °ÍÀ¸·Î Ç¥½Ã"
-
-#: mail/folder-browser.c:565
-msgid "Mark as Unread"
-msgstr "ÀÐÁö ¾ÊÀº °ÍÀ¸·Î Ç¥½Ã"
-
-#: mail/folder-browser.c:570
-msgid "Move to Folder..."
-msgstr "Æú´õ·Î À̵¿..."
-
-#: mail/folder-browser.c:572
-msgid "Copy to Folder..."
-msgstr "Æú´õ·Î º¹»ç..."
-
-#: mail/folder-browser.c:576
-msgid "Undelete"
-msgstr "µÇ»ì¸²"
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:586
-msgid "Apply Filters"
-msgstr "°Å¸£°³ Àû¿ë"
-
-#: mail/folder-browser.c:590
-msgid "Create Rule From Message"
-msgstr ""
-
-#: mail/folder-browser.c:712
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr ""
-
-#: mail/folder-browser.c:713
-#, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-msgid "Evolution mail composer."
-msgstr "Evolution ¸ÞÀÏ ÀÛ¼º±â."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-msgid "Evolution mail executive summary component."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-msgid "Evolution mail folder display component."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-msgid "Evolution mail folder factory component."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-msgid "Factory for the Evolution composer."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-msgid "Factory for the Evolution mail component."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-msgid "Factory for the Mail Summary component."
-msgstr ""
-
-#: mail/local-config.glade.h:1
-msgid "Current store format:"
-msgstr "ÇöÀç ÀúÀå Æ÷¸ä:"
-
-#: mail/local-config.glade.h:2
-msgid "Mailbox Format"
-msgstr "¸ÞÀϹڽº Çü½Ä"
-
-#: mail/local-config.glade.h:3
-msgid "New store format:"
-msgstr "»õ ÀúÀå Çü½Ä:"
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-
-#: mail/local-config.glade.h:7
-msgid "maildir"
-msgstr ""
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr ""
-
-#: mail/local-config.glade.h:9
-msgid "mh"
-msgstr ""
-
-#: mail/mail-accounts.c:116
-msgid " (default)"
-msgstr ""
-
-#: mail/mail-accounts.c:224 mail/mail-accounts.c:228
-msgid "Are you sure you want to delete this account?"
-msgstr "Á¤¸»·Î ÀÌ °èÁ¤À» Áö¿ì±â¸¦ ¿øÇϽʴϱî?"
-
-#: mail/mail-accounts.c:334 mail/mail-accounts.c:338
-msgid "Are you sure you want to delete this news account?"
-msgstr "Á¤¸»·Î ÀÌ »õ °èÁ¤À» Áö¿ì±â¸¦ ¿øÇϽʴϱî?"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:452
-msgid "Evolution Account Manager"
-msgstr ""
-
-#: mail/mail-account-editor.c:301
-msgid ""
-"One or more of your servers are not configured correctly.\n"
-"Do you wish to save anyway?"
-msgstr ""
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:720
-msgid "Evolution Account Editor"
-msgstr ""
-
-#: mail/mail-account-editor.c:741
-msgid "Unspecified"
-msgstr ""
-
-#: mail/mail-autofilter.c:71
-#, c-format
-msgid "Mail to %s"
-msgstr ""
-
-#: mail/mail-autofilter.c:214
-#, c-format
-msgid "Subject is %s"
-msgstr ""
-
-#: mail/mail-autofilter.c:230
-#, c-format
-msgid "Mail from %s"
-msgstr ""
-
-#: mail/mail-autofilter.c:286
-#, c-format
-msgid "%s mailing list"
-msgstr ""
-
-#: mail/mail-autofilter.c:336 mail/mail-autofilter.c:358
-msgid "Add Filter Rule"
-msgstr "°Å¸£°Ô ±ÔÄ¢À» Ãß°¡"
-
-#: mail/mail-callbacks.c:85
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-
-#: mail/mail-callbacks.c:138
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-
-#: mail/mail-callbacks.c:150
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-
-#: mail/mail-callbacks.c:194
-msgid "You have not set a mail transport method"
-msgstr ""
-
-#: mail/mail-callbacks.c:227
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-
-#: mail/mail-callbacks.c:296
-msgid "You must configure an account before you can send this email."
-msgstr ""
-
-#: mail/mail-callbacks.c:318
-msgid "You must specify recipients in order to send this message."
-msgstr ""
-
-#: mail/mail-callbacks.c:583
-#, c-format
-msgid "On %s, %s wrote:\n"
-msgstr ""
-
-#: mail/mail-callbacks.c:765
-msgid "Forwarded message:\n"
-msgstr "Àü´ÞµÈ ¸Þ½ÃÁö:\n"
-
-#: mail/mail-callbacks.c:868
-msgid "Move message(s) to"
-msgstr ""
-
-#: mail/mail-callbacks.c:870
-msgid "Copy message(s) to"
-msgstr ""
-
-#: mail/mail-callbacks.c:1011
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-
-#: mail/mail-callbacks.c:1048
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-
-#: mail/mail-callbacks.c:1081 mail/mail-display.c:83
-msgid "Overwrite file?"
-msgstr ""
-
-#: mail/mail-callbacks.c:1085 mail/mail-display.c:87
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-
-#: mail/mail-callbacks.c:1129
-msgid "Save Message As..."
-msgstr "´Ù¸¥À̸§À¸·Î ¸Þ¼¼Áö ÀúÀå..."
-
-#: mail/mail-callbacks.c:1131
-msgid "Save Messages As..."
-msgstr "´Ù¸¥À̸§À¸·Î ¸Þ¼¼Áö ÀúÀå..."
-
-#: mail/mail-callbacks.c:1245
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-
-#: mail/mail-callbacks.c:1294
-msgid "Print Message"
-msgstr "¸Þ¼¼Áö Àμâ"
-
-#: mail/mail-callbacks.c:1341
-msgid "Printing of message failed"
-msgstr "¸Þ¼¼Áö ÀμâÁß ½ÇÆÐ"
-
-#: mail/mail-config.glade.h:1
-msgid " color"
-msgstr "»ö»ó"
-
-#: mail/mail-config.glade.h:2
-msgid "Account"
-msgstr "°èÁ¤"
-
-#: mail/mail-config.glade.h:3
-msgid "Account Information"
-msgstr "°èÁ¤ Á¤º¸"
-
-#: mail/mail-config.glade.h:4
-msgid "Account Management"
-msgstr "°èÁ¤ °ü¸®"
-
-#: mail/mail-config.glade.h:6
-msgid "Advanced"
-msgstr "°í±Þ"
-
-#: mail/mail-config.glade.h:7
-msgid "Authentication"
-msgstr "ÀÎÁõ:"
-
-#: mail/mail-config.glade.h:8
-msgid "Authentication Type:"
-msgstr "ÀÎÁõ Á¾·ù:"
-
-#: mail/mail-config.glade.h:10
-msgid "Automatically check mail every"
-msgstr ""
-
-#: mail/mail-config.glade.h:12
-msgid "Check settings"
-msgstr ""
-
-#: mail/mail-config.glade.h:13
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-
-#: mail/mail-config.glade.h:20
-msgid "De_fault"
-msgstr ""
-
-#: mail/mail-config.glade.h:22
-msgid "Done"
-msgstr "¿Ï·á"
-
-#: mail/mail-config.glade.h:24
-msgid "Email Address:"
-msgstr "ÀüÀÚ¿ìÆí ÁÖ¼Ò:"
-
-#: mail/mail-config.glade.h:25
-msgid "Email address:"
-msgstr "ÀüÀÚ¿ìÆí ÁÖ¼Ò:"
-
-#: mail/mail-config.glade.h:26
-msgid "Evolution Mail Configuration"
-msgstr "¸ÞÀÏ ¼³Á¤"
-
-#: mail/mail-config.glade.h:27
-msgid "Full Name:"
-msgstr "ÀüüÀ̸§:"
-
-#: mail/mail-config.glade.h:29
-msgid "Highlight citations with "
-msgstr ""
-
-#: mail/mail-config.glade.h:31
-msgid "Hostname:"
-msgstr "È£½ºÆ®:"
-
-#: mail/mail-config.glade.h:32
-msgid "IMAP"
-msgstr ""
-
-#: mail/mail-config.glade.h:33
-msgid "Identity"
-msgstr ""
-
-#: mail/mail-config.glade.h:34
-msgid "Include this account when receiving mail"
-msgstr ""
-
-#: mail/mail-config.glade.h:35
-msgid "Keep mail on server"
-msgstr "¼­¹ö¿¡ ¸ÞÀÏ ³²±â±â"
-
-#: mail/mail-config.glade.h:36
-msgid "Kerberos"
-msgstr ""
-
-#: mail/mail-config.glade.h:37
-msgid "Mail"
-msgstr "ÆíÁö"
-
-#: mail/mail-config.glade.h:38
-msgid "Mail Account"
-msgstr ""
-
-#: mail/mail-config.glade.h:39
-msgid "Mail Configuration"
-msgstr "¸ÞÀÏ ¼³Á¤"
-
-#: mail/mail-config.glade.h:40
-msgid "Mail Configuration Druid"
-msgstr "¸ÞÀÏ ¼³Á¤ Druid"
-
-#: mail/mail-config.glade.h:41
-msgid "Make this my default account"
-msgstr "±âº» °èÁ¤À¸·Î Çϱâ"
-
-#: mail/mail-config.glade.h:42
-msgid "Mark messages as \"Read\" after:"
-msgstr ""
-
-#: mail/mail-config.glade.h:44
-msgid "News"
-msgstr "´º½º"
-
-#: mail/mail-config.glade.h:46
-msgid "Optional"
-msgstr ""
-
-#: mail/mail-config.glade.h:47
-msgid "Organization:"
-msgstr "Á¶Á÷:"
-
-#: mail/mail-config.glade.h:49
-msgid "PGP binary path:"
-msgstr "PGP °æ·Î"
-
-#: mail/mail-config.glade.h:50
-msgid "Password:"
-msgstr "ºñ¹Ð¹øÈ£:"
-
-#: mail/mail-config.glade.h:53
-msgid "Plain Text"
-msgstr ""
-
-#: mail/mail-config.glade.h:54
-msgid "Receiving Email"
-msgstr "ÆíÁö¸¦ ¹ÞÀ½"
-
-#: mail/mail-config.glade.h:55
-msgid "Remember my password"
-msgstr "ÀÌ ºñ¹Ð¹øÈ£ ±â¾ï"
-
-#: mail/mail-config.glade.h:56
-msgid "Reply address:"
-msgstr "ȸ½Å ÁÖ¼Ò:"
-
-#: mail/mail-config.glade.h:57
-msgid "Required"
-msgstr ""
-
-#: mail/mail-config.glade.h:59
-msgid "Save password"
-msgstr "¾ÏÈ£ ÀúÀå"
-
-#: mail/mail-config.glade.h:60
-msgid "Select PGP binary"
-msgstr "PGP ÇÁ·Î±×·¥ ÆÄÀÏÀ» ¼±ÅÃ"
-
-#: mail/mail-config.glade.h:61
-msgid "Select signature file"
-msgstr "¼­¸í ÆÄÀÏÀ» °í¸£¼¼¿ä"
-
-#: mail/mail-config.glade.h:62
-msgid "Send mail in HTML format by default."
-msgstr "±âº»À¸·Î ÆíÁö¸¦ HTMLÇü½ÄÀ¸·Î º¸³¿"
-
-#: mail/mail-config.glade.h:63
-msgid "Sending Email"
-msgstr "ÆíÁö¸¦ º¸³¿"
-
-#: mail/mail-config.glade.h:65
-msgid "Server Configuration"
-msgstr "¼­¹ö ¼³Á¤"
-
-#: mail/mail-config.glade.h:66
-msgid "Server Type: "
-msgstr "¼­¹ö Á¾·ù: "
-
-#: mail/mail-config.glade.h:67
-msgid "Server requires authentication"
-msgstr "¼­¹ö°¡ ÀÎÁõÀ» ¿ä±¸ÇÕ´Ï´Ù"
-
-#: mail/mail-config.glade.h:68
-msgid "Server type:"
-msgstr "¼­¹ö Á¾·ù::"
-
-#: mail/mail-config.glade.h:69
-msgid "Signature file:"
-msgstr "¼­¸í ÆÄÀÏ:"
-
-#: mail/mail-config.glade.h:70
-msgid "Signature:"
-msgstr "¼­¸í:"
-
-#: mail/mail-config.glade.h:71
-msgid "Source"
-msgstr ""
-
-#: mail/mail-config.glade.h:72
-msgid "Sources"
-msgstr ""
-
-#: mail/mail-config.glade.h:73
-msgid "Transport"
-msgstr ""
-
-#: mail/mail-config.glade.h:74
-msgid "Transport Authentication"
-msgstr ""
-
-#: mail/mail-config.glade.h:75
-msgid "Type"
-msgstr ""
-
-#: mail/mail-config.glade.h:76
-msgid ""
-"Type the name by which you would like to refer to these servers. For "
-"example: \"Work\" or \"Home\"."
-msgstr "ÀÌ ¼­¹ö¸¦ °¡¸£Å³ À̸§À» ÁöÁ¤Çϼ¼¿ä.°¡·É \"Á÷Àå\"À̳ª ¶Ç´Â \"Áý\"."
-
-#: mail/mail-config.glade.h:77
-msgid "User Information"
-msgstr "»ç¿ëÀÚ Á¤º¸"
-
-#: mail/mail-config.glade.h:78
-msgid "Username:"
-msgstr "»ç¿ëÀÚÀ̸§:"
-
-#: mail/mail-config.glade.h:79
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-
-#: mail/mail-config.glade.h:84 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:43 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:29
-msgid "_Edit"
-msgstr "¼öÁ¤(_E)"
-
-#: mail/mail-config.glade.h:85
-msgid "minutes."
-msgstr "ºÐ"
-
-#: mail/mail-config-druid.c:421
-#, c-format
-msgid ""
-"Failed to verify the incoming mail configuration.\n"
-"You may experience problems retrieving your mail from %s"
-msgstr ""
-
-#: mail/mail-config-druid.c:515
-msgid "Namespace:"
-msgstr ""
-
-#: mail/mail-config-druid.c:708
-#, c-format
-msgid ""
-"Failed to verify the outgoing mail configuration.\n"
-"You may experience problems sending your mail using %s"
-msgstr ""
-
-#. set window title
-#: mail/mail-config-druid.c:1215
-msgid "Evolution Account Wizard"
-msgstr "Evolution °èÁ¤ ¸¶¹ý»ç"
-
-#: mail/mail-display.c:189
-msgid "Save Attachment"
-msgstr "÷ºÎÆÄÀÏ ÀúÀå"
-
-#: mail/mail-display.c:229
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr "Àӽà µð·ºÅ丮¸¦ ¸¸µé ¼ö°¡ ¾ø½À´Ï´Ù: %s"
-
-#: mail/mail-display.c:290
-msgid "Save to Disk..."
-msgstr "µð½ºÅ©·Î ÀúÀå..."
-
-#: mail/mail-display.c:292
-#, c-format
-msgid "Open in %s..."
-msgstr "%s¿¡¼­ ¿­±â..."
-
-#: mail/mail-display.c:294
-msgid "View Inline"
-msgstr ""
-
-#: mail/mail-display.c:323
-msgid "External Viewer"
-msgstr ""
-
-#: mail/mail-display.c:346
-#, c-format
-msgid "View Inline (via %s)"
-msgstr ""
-
-#: mail/mail-display.c:350
-msgid "Hide"
-msgstr "¼û±è"
-
-#: mail/mail-format.c:506
-#, c-format
-msgid "%s attachment"
-msgstr "%s ÷ºÎ"
-
-#: mail/mail-format.c:723
-msgid "Loading message content"
-msgstr "¸Þ½ÃÁö ³»¿ëÀ» Àоîµå¸²"
-
-#: mail/mail-format.c:1012
-msgid "Encrypted message not displayed"
-msgstr "¾ÏȣȭµÈ ¸Þ½ÃÁö´Â º¸ÀÌÁö¾ÊÀ½"
-
-#: mail/mail-format.c:1018
-msgid "Encrypted message"
-msgstr "¾ÏȣȭµÈ ¸Þ¼¼Áö"
-
-#: mail/mail-format.c:1019
-msgid "Click icon to decrypt."
-msgstr ""
-
-#: mail/mail-format.c:1088 mail/mail-format.c:1475
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr ""
-
-#: mail/mail-format.c:1096 mail/mail-format.c:1483
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr ""
-
-#: mail/mail-format.c:1696
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr ""
-
-#: mail/mail-format.c:1708
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr ""
-
-#: mail/mail-format.c:1712
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr ""
-
-#: mail/mail-format.c:1746
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr ""
-
-#: mail/mail-format.c:1751
-msgid "Malformed external-body part."
-msgstr ""
-
-#: mail/mail-local.c:335
-#, c-format
-msgid "No such folder %s"
-msgstr "%s°°Àº Æú´õ°¡ ¾øÀ½"
-
-#: mail/mail-local.c:508
-#, c-format
-msgid "Opening '%s'"
-msgstr "`%s'À»(¸¦) ¿­±â"
-
-#: mail/mail-local.c:786
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr "\"%s\" Æú´õ¸¦ \"%s\" Æ÷¸äÀ¸·Î ¹Ù²Ù±â"
-
-#: mail/mail-local.c:790
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr "\"%s\" Æú´õ¸¦ \"%s\" Æ÷¸äÀ¸·Î ¹Ù²Ù±â"
-
-#: mail/mail-local.c:814
-msgid "Reconfiguring folder"
-msgstr "Æú´õ Àç¼³Á¤"
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:843
-msgid "Closing current folder"
-msgstr "ÇöÀç Æú´õ ´Ý´ÂÁß"
-
-#: mail/mail-local.c:875
-msgid "Renaming old folder and opening"
-msgstr "¿¹Àü Æú´õ¸¦ ´Ù¸¥ À̸§À¸·Î ¹Ù²Ù¾î¼­ ¿­±â"
-
-#: mail/mail-local.c:893
-msgid "Creating new folder"
-msgstr "»õ Æú´õ¸¦ »ý¼º"
-
-#: mail/mail-local.c:907
-msgid "Copying messages"
-msgstr "¸Þ¼¼Áö º¹»ç"
-
-#: mail/mail-local.c:928
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-
-#: mail/mail-local.c:967
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-
-#: mail/mail-mt.c:181
-#, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-
-#: mail/mail-mt.c:183
-#, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-"ÀÛ¾÷ ¼öÇàÁß ¿¡·¯°¡ ¹ß»ýÇß½À´Ï´Ù:\n"
-"%s"
-
-#: mail/mail-mt.c:506 mail/mail-mt.c:535 mail/mail-mt.c:882
-msgid "Working"
-msgstr ""
-
-#: mail/mail-mt.c:670 mail/session.c:91
-msgid "Do you accept?"
-msgstr "¹Þ¾ÆµéÀÌ°Ú½À´Ï±î?"
-
-#: mail/mail-mt.c:864
-msgid "Evolution progress"
-msgstr ""
-
-#: mail/mail-ops.c:518
-#, c-format
-msgid "Sending \"%s\""
-msgstr "\"%s\" º¸³»´Â Áß"
-
-#: mail/mail-ops.c:520
-msgid "Sending message"
-msgstr "¸Þ¼¼Áö¸¦ º¸³¿"
-
-#: mail/mail-ops.c:751
-msgid "Saving message to folder"
-msgstr "¸Þ¼¼Áö¸¦ Æú´õ·Î ÀúÀå"
-
-#: mail/mail-ops.c:824
-#, c-format
-msgid "Moving messages to %s"
-msgstr "¸Þ½ÃÁöµéÀ» %s·Î À̵¿"
-
-#: mail/mail-ops.c:824
-#, c-format
-msgid "Copying messages to %s"
-msgstr "¸Þ½ÃÁöµéÀ» %s·Î º¹»ç"
-
-#: mail/mail-ops.c:841
-msgid "Moving"
-msgstr "À̵¿Áß"
-
-#: mail/mail-ops.c:844
-msgid "Copying"
-msgstr "º¹»çÁß"
-
-#: mail/mail-ops.c:855
-#, c-format
-msgid "%s message %d of %d (uid \"%s\")"
-msgstr ""
-
-#: mail/mail-ops.c:926
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr ""
-
-#: mail/mail-ops.c:1084
-msgid "Forwarded messages"
-msgstr "Àü´ÞµÈ ¸Þ½ÃÁö"
-
-#: mail/mail-ops.c:1125 mail/mail-ops.c:1263
-#, c-format
-msgid "Opening folder %s"
-msgstr "%s Æú´õ¸¦ ¿­±â"
-
-#: mail/mail-ops.c:1192
-#, c-format
-msgid "Opening store %s"
-msgstr ""
-
-#: mail/mail-ops.c:1379
-msgid "Expunging folder"
-msgstr "Æú´õ ºñ¿ì±â"
-
-#: mail/mail-ops.c:1428
-#, c-format
-msgid "Retrieving message %s"
-msgstr "¸Þ¼¼Áö %s¸¦ °¡Á®¿À±â"
-
-#: mail/mail-ops.c:1495
-msgid "Retrieving messages"
-msgstr "¸Þ¼¼ÁöµéÀ» °¡Á®¿À±â"
-
-#: mail/mail-ops.c:1505
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr ""
-
-#: mail/mail-ops.c:1579
-msgid "Saving messages"
-msgstr "¸Þ½ÃÁöµéÀ» ÀúÀå"
-
-#: mail/mail-ops.c:1658
-#, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr ""
-"Ãâ·ÂÆÄÀÏÀ» »ý¼ºÇÒ ¼ö°¡ ¾ø½À´Ï´Ù: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1671
-#, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr "%2$dÁß %1$d¸Þ½ÃÁö ÀúÀå (uid \"%3$s\")"
-
-#: mail/mail-ops.c:1685
-#, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr ""
-"%s·Î ¸Þ½ÃÁö ÀúÀåÁß ¿À·ù ¹ß»ý:\n"
-" %s"
-
-#: mail/mail-ops.c:1759
-msgid "Saving attachment"
-msgstr "÷ºÎ ÀúÀå"
-
-#: mail/mail-ops.c:1774
-#, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr ""
-"Ãâ·Â ÆÄÀÏÀ» ¸¸µé¼ö ¾øÀ½: %s:\n"
-" %s"
-
-#: mail/mail-ops.c:1802
-#, c-format
-msgid "Could not write data: %s"
-msgstr "µ¥ÀÌŸ¸¦ ¾µ ¼ö°¡ ¾ø½À´Ï´Ù: %s"
-
-#: mail/mail-search-dialogue.c:107
-msgid "_Search"
-msgstr "°Ë»ö(_S)"
-
-#: mail/mail-send-recv.c:136
-msgid "Cancelling ..."
-msgstr "Ãë¼ÒÇÏ´Â Áß..."
-
-#: mail/mail-send-recv.c:231
-msgid "Send & Receive mail"
-msgstr "ÆíÁö ÁÖ°í¹Þ±â"
-
-#: mail/mail-send-recv.c:234
-msgid "Receiving"
-msgstr "¹Þ¾ÒÀ½"
-
-#: mail/mail-send-recv.c:283
-msgid "Updating ..."
-msgstr "°»½ÅÁß ..."
-
-#: mail/mail-send-recv.c:285 mail/mail-send-recv.c:331
-msgid "Waiting ..."
-msgstr "±â´Ù¸®´Â Áß ..."
-
-#: mail/mail-send-recv.c:304
-msgid "Sending"
-msgstr "º¸³»´Â Áß"
-
-#: mail/mail-send-recv.c:469
-msgid "Cancelled."
-msgstr "Ãë¼ÒµÊ."
-
-#: mail/mail-send-recv.c:473
-msgid "Complete."
-msgstr "¿Ï·áµÊ"
-
-#: mail/mail-summary.c:111
-msgid "Incomplete message written on pipe!"
-msgstr ""
-
-#: mail/mail-tools.c:138
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr "Àӽà mbox `%s'¸¦ ¸¸µé¼ö°¡ ¾ø½À´Ï´Ù: %s"
-
-#: mail/mail-tools.c:185
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr "[%s] (Àü´ÞµÈ ¸Þ½ÃÁö)"
-
-#: mail/mail-tools.c:195
-msgid "Fwd: (no subject)"
-msgstr "Àü´Þ: (Á¦¸ñ ¾øÀ½)"
-
-#: mail/mail-tools.c:212
-#, c-format
-msgid "Forwarded message - %s"
-msgstr "Àü´ÞµÈ ¸Þ½ÃÁö - %s"
-
-#: mail/mail-tools.c:214
-msgid "Forwarded message (no subject)"
-msgstr "Àü´ÞµÈ ¸Þ½ÃÁö (Á¦¸ñ ¾øÀ½)"
-
-#: mail/mail-tools.c:411
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-msgstr ""
-"-----Àü´Þ ¸Þ½ÃÁö-----<br><b>º¸³½ »ç¶÷:</b> %s<br><b>¹Þ´Â »ç¶÷:</b> "
-"%s<br><b>Á¦¸ñ:</b> %s<br>"
-
-#: mail/mail-vfolder.c:248
-msgid "VFolders"
-msgstr "°¡»ó Æú´õ"
-
-#: mail/mail-vfolder.c:426
-msgid "New VFolder"
-msgstr "»õ °¡»óÆú´õ"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/mail-view.c:138 ui/evolution-mail.xml.h:34
-msgid "Reply"
-msgstr "ȸ½Å"
-
-#: mail/mail-view.c:138 ui/evolution-mail.xml.h:38
-msgid "Reply to the sender of this message"
-msgstr "ÀÌ ¸Þ¼¼Áö¸¦ º¸³½»ç¶÷¿¡°Ô ȸ½ÅÀ» ÇÕ´Ï´Ù"
-
-#: mail/mail-view.c:141 ui/evolution-mail.xml.h:37
-msgid "Reply to all recipients of this message"
-msgstr "ÀÌ ¸Þ¼¼Áö¸¦ ¹ÞÀº ¸ðµç »ç¶÷¿¡°Ô ȸ½ÅÀ» ÇÕ´Ï´Ù"
-
-#: mail/mail-view.c:144 ui/evolution-mail.xml.h:16
-msgid "Forward this message"
-msgstr "ÀÌ ¸Þ¼¼Áö¸¦ ´Ù¸¥»ç¶÷¿¡°Ô Àü´ÞÇÕ´Ï´Ù"
-
-#: mail/mail-view.c:148 ui/evolution-mail.xml.h:31
-msgid "Print the selected message"
-msgstr "¼±ÅÃÇÑ ¸Þ¼¼Áö¸¦ ÀμâÇÕ´Ï´Ù"
-
-#: mail/mail-view.c:150 ui/evolution-mail.xml.h:7
-msgid "Delete this message"
-msgstr "ÀÌ ¸Þ¼¼Áö¸¦ »èÁ¦ÇÕ´Ï´Ù"
-
-#: mail/message-list.c:614
-msgid "Unseen"
-msgstr ""
-
-#: mail/message-list.c:615
-msgid "Seen"
-msgstr ""
-
-#: mail/message-list.c:616
-msgid "Answered"
-msgstr ""
-
-#: mail/message-list.c:617
-msgid "Multiple Unseen Messages"
-msgstr "¿©·¯°³ÀÇ º¸Áö¾ÊÀº ¸Þ¼¼Áö"
-
-#: mail/message-list.c:618
-msgid "Multiple Messages"
-msgstr ""
-
-#: mail/message-list.c:622
-msgid "Lowest"
-msgstr ""
-
-#: mail/message-list.c:623
-msgid "Lower"
-msgstr ""
-
-#: mail/message-list.c:627
-msgid "Higher"
-msgstr ""
-
-#: mail/message-list.c:628
-msgid "Highest"
-msgstr ""
-
-#: mail/message-list.c:878
-msgid "?"
-msgstr ""
-
-#: mail/message-list.c:885
-msgid "Today %l:%M %p"
-msgstr "¿À´Ã %l:%M %p"
-
-#: mail/message-list.c:894
-msgid "Yesterday %l:%M %p"
-msgstr "¾îÁ¦ %l:%M %p"
-
-#: mail/message-list.c:906
-msgid "%a %l:%M %p"
-msgstr ""
-
-#: mail/message-list.c:914
-msgid "%b %d %l:%M %p"
-msgstr ""
-
-#: mail/message-list.c:916
-msgid "%b %d %Y"
-msgstr ""
-
-#: mail/message-list.c:1014
-msgid "Flagged"
-msgstr ""
-
-#: mail/message-list.c:1015
-msgid "From"
-msgstr "º¸³½ÀÌ"
-
-#: mail/message-list.c:1015
-msgid "Date"
-msgstr "³¯Â¥"
-
-#: mail/message-list.c:1015
-msgid "Received"
-msgstr "¹Þ¾ÒÀ½"
-
-#: mail/message-list.c:1016
-msgid "To"
-msgstr "¹Þ´Â»ç¶÷"
-
-#: mail/message-list.c:1016
-msgid "Size"
-msgstr "Å©±â"
-
-#: mail/openpgp-utils.c:89
-#, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr ""
-
-#: mail/openpgp-utils.c:92
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr ""
-
-#: mail/openpgp-utils.c:452 mail/openpgp-utils.c:558 mail/openpgp-utils.c:760
-#: mail/openpgp-utils.c:913 mail/openpgp-utils.c:1071
-msgid "No GPG/PGP program available."
-msgstr "GPG/PGP ÇÁ·Î±×·¥ÀÌ ¾ø½À´Ï´Ù."
-
-#: mail/openpgp-utils.c:459 mail/openpgp-utils.c:567 mail/openpgp-utils.c:767
-#: mail/openpgp-utils.c:920
-msgid "No password provided."
-msgstr "¾ÏÈ£¸¦ ÁöÁ¤ÇÏÁö¾Ê¾Ò½À´Ï´Ù."
-
-#: mail/openpgp-utils.c:467 mail/openpgp-utils.c:574 mail/openpgp-utils.c:773
-#: mail/openpgp-utils.c:928 mail/openpgp-utils.c:1077
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr ""
-
-#: mail/openpgp-utils.c:588
-msgid "No recipients specified"
-msgstr "¼ö½ÅÀÚ°¡ ÁöÁ¤µÇÁö¾ÊÀ½"
-
-#: mail/openpgp-utils.c:1088
-#, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "Àӽà ÆÄÀÏÀ» ¸¸µé¼ö ¾øÀ½: %s"
-
-#: mail/subscribe-dialog.c:73 shell/e-storage-set-view.c:46
-msgid "Folder"
-msgstr "Æú´õ"
-
-#: mail/subscribe-dialog.c:74
-msgid "Store"
-msgstr ""
-
-#: mail/subscribe-dialog.c:156
-msgid "Display folders starting with:"
-msgstr ""
-
-#: mail/subscribe-dialog.c:186
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:289
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:291
-#, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr ""
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-msgid "Folder name:"
-msgstr "Æú´õ À̸§:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-msgid "Folder type:"
-msgstr "Æú´õ Á¾·ù:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-msgid "Specify where to create the folder:"
-msgstr "Æú´õ ¸¸µé °÷À» ÁöÁ¤Çϼ¼¿ä:"
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/importer/importer.c:157
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-
-#: shell/importer/importer.c:175 shell/importer/importer.c:202
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-"%s¸¦ °¡Á®¿À´Â Áß\n"
-"¾ÆÀÌÅÛ %d¸¦ °¡Á®¿È."
-
-#: shell/importer/importer.c:309
-#, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr ""
-"´ÙÀ½À» °¡Á®¿Ã ¼öÀÖ´Â µµ±¸°¡ ¾ø½À´Ï´Ù\n"
-"%s"
-
-#: shell/importer/importer.c:319
-msgid "Importing"
-msgstr "°¡Á®¿À±â"
-
-#: shell/importer/importer.c:327
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-"%sÀ» °¡Á®¿À±â.\n"
-"%s¸¦ ½ÃÀÛÇÕ´Ï´Ù"
-
-#: shell/importer/importer.c:342
-#, c-format
-msgid "Error loading %s"
-msgstr "%sÀ»(¸¦) ÀдÂÁß ¿À·ù ¹ß»ý"
-
-#: shell/importer/importer.c:357
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-"%s¸¦ °¡Á®¿À´Â Áß\n"
-"¾ÆÀÌÅÛ 1À» °¡Á®¿È."
-
-#: shell/importer/importer.c:428
-msgid "Automatic"
-msgstr "ÀÚµ¿"
-
-#: shell/importer/importer.c:478
-msgid "Filename:"
-msgstr "ÆÄÀÏ À̸§:"
-
-#: shell/importer/import.glade.h:5 shell/importer/importer.c:483
-msgid "Select a file"
-msgstr "ÆÄÀÏÀ» °í¸£¼¼¿ä"
-
-#: shell/importer/importer.c:493
-msgid "File type:"
-msgstr "ÆÄÀÏ Á¾·ù:"
-
-#: shell/importer/import.glade.h:4 shell/importer/importer.c:574
-msgid "Import"
-msgstr "°¡Á®¿À±â"
-
-#: shell/importer/importer.c:609
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr "EvolutionÀ¸·Î ÆÄÀÏÀ» °¡Á®¿À½Ç·Á¸é \"°¡Á®¿À±â\"¸¦ ´©¸£¼¼¿ä."
-
-#: shell/importer/import.glade.h:2
-msgid "Evolution Import Utility"
-msgstr ""
-
-#: shell/importer/import.glade.h:3
-msgid "Evolution Importer Utility"
-msgstr ""
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-
-#: shell/e-setup.c:112 shell/e-setup.c:185
-msgid "Evolution installation"
-msgstr "Evolution ¼³Ä¡"
-
-#: shell/e-setup.c:116
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-
-#: shell/e-setup.c:117
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr "ÆÄÀÏÀ» ¼³Ä¡ÇÒ·Á¸é \"È®ÀÎ\", ³¡³¾·Á¸é \"Ãë¼Ò\"¸¦ ´©¸£¼¼¿ä."
-
-#: shell/e-setup.c:157
-msgid "Could not update files correctly"
-msgstr "Á¦´ë·Î ÆÄÀϵéÀ» °»½ÅÇÒ ¼ö°¡ ¾ø½À´Ï´Ù"
-
-#: shell/e-setup.c:160 shell/e-setup.c:228
-msgid "Evolution files successfully installed."
-msgstr "Evolution ÆÄÀϵéÀÌ Á¦´ë·Î ¼³Ä¡µÇ¾úµÇ¾ú½À´Ï´Ù."
-
-#: shell/e-setup.c:189
-msgid "This seems to be the first time you are running Evolution."
-msgstr "À̹øÀÌ evolutionÀ» óÀ½À¸·Î ¾²½Ã´Â °ÅÁö¿ä?"
-
-#: shell/e-setup.c:190
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr "Evolution »ç¿ëÀÚ ÆÄÀÏÀ» ´ÙÀ½¿¡ ¼³Ä¡ÇϽǷÁ¸é \"È®ÀÎ\"À» ´©¸£¼¼¿ä"
-
-#: shell/e-setup.c:209
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"%s µð·ºÅ丮¸¦\n"
-"»ý¼ºÇÒ ¼ö°¡ ¾ø½À´Ï´Ù¿¡·¯: %s"
-
-#: shell/e-setup.c:224
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-"`%s'·Î ÆÄÀÏÀ»\n"
-"º¹»çÇÒ ¼ö°¡ ¾ø½À´Ï´Ù."
-
-#: shell/e-setup.c:249
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-
-#: shell/e-setup.c:261
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-
-#: shell/e-shell-folder-creation-dialog.c:96
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-"¸í½ÃµÈ Æú´õ¸¦ »ý¼ºÇÒ ¼ö ¾ø½À´Ï´Ù:\n"
-"%s"
-
-#: shell/e-shell-folder-creation-dialog.c:153
-msgid "The specified folder name is not valid."
-msgstr "ÁöÁ¤ÇϽŠÆú´õÀÇ À̸§ÀÌ ÀûÀýÇÏÁö¾Ê½À´Ï´Ù"
-
-#: shell/e-shell-folder-creation-dialog.c:245
-msgid "Evolution - Create new folder"
-msgstr "Evolution - »õ Æú´õ »ý¼º"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-
-#: shell/e-shell-folder-selection-dialog.c:318
-msgid "New..."
-msgstr "»õ·Î¿î..."
-
-#: shell/e-shell-folder-title-bar.c:451 shell/e-shell-folder-title-bar.c:452
-msgid "(Untitled)"
-msgstr "(Á¦¸ñ¾øÀ½)"
-
-#: shell/e-shell-view-menu.c:160
-msgid "Bug buddy was not found in your $PATH."
-msgstr "½Ã½ºÅÛÀÇ °æ·Î¿¡ Bug buddy¸¦ ãÀ»¼ö ¾ø½À´Ï´Ù."
-
-#: shell/e-shell-view-menu.c:166
-msgid "Bug buddy could not be run."
-msgstr "Bug buddy¸¦ ½ÇÇàÇÒ¼ö ¾ø½À´Ï´Ù."
-
-#: shell/e-shell-view-menu.c:195
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr ""
-
-#: shell/e-shell-view-menu.c:197
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-"Evolution Àº ±×³ð µ¥½ºÅ©Å¾ ȯ°æ¿¡¼­ ÀüÀÚ¿ìÆí, \n"
-"ÀÏÁ¤, ¿¬¶ôó °ü¸®¸¦ ÇÏ´Â ±×·ì¿þ¾î ÀÀ¿ëÇÁ·Î±×·¥\n"
-"¸ðÀ½ ÀÔ´Ï´Ù."
-
-#: shell/e-shell-view-menu.c:361
-msgid "Go to folder..."
-msgstr "Æú´õ À̵¿..."
-
-#: shell/e-shell-view.c:143
-msgid "(No folder displayed)"
-msgstr "(Ç¥½ÃµÈ Æú´õ°¡ ¾øÀ½)"
-
-#: shell/e-shell-view.c:474
-msgid "Folders"
-msgstr "Æú´õ"
-
-#: shell/e-shell-view.c:1125
-#, c-format
-msgid "%s - Evolution %s"
-msgstr ""
-
-#: shell/e-shell-view.c:1127
-#, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr ""
-
-#: shell/e-shell.c:372
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr "½Ã½ºÅÛ ÀúÀåÀåÄ¡¸¦ ÁöÁ¤ÇÒ¼ö ¾ø½À´Ï´Ù -- %s"
-
-#: shell/e-shell.c:1242
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-"ÂÁ!! `%s' ºä°¡ ¸»µµ ¾øÀÌ Á×¾ú³×¿ä :-(\n"
-"%s ÄÄÆ÷³ÍÆ®°¡ »ç¸ÁÇϽŰŠ°°½À´Ï´Ù."
-
-#: shell/e-shortcuts-view.c:123
-msgid "Create new shortcut group"
-msgstr "»õ ´ÜÃà±×·ìÀ» »ý¼º"
-
-#: shell/e-shortcuts-view.c:126
-msgid "Group name:"
-msgstr "±×·ì À̸§:"
-
-#: shell/e-shortcuts-view.c:249
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-"´ÜÃà ¸·´ë·ÎºÎÅÍ `%s'±×·ìÀ»\n"
-"Á¤¸»·Î Áö¿ì½Ã°Ú½À´Ï±î?"
-
-#: shell/e-shortcuts-view.c:254
-msgid "Don't remove"
-msgstr "Áö¿ìÁö¸¶¼¼¿ä"
-
-#: shell/e-shortcuts-view.c:265
-msgid "_Small Icons"
-msgstr "ÀÛÀº ¾ÆÀÌÄÜ(_S)"
-
-#: shell/e-shortcuts-view.c:266
-msgid "Show the shortcuts as small icons"
-msgstr "ÀÛÀº ¾ÆÀÌÄÜÀ¸·Î ´ÜÃื´ë º¸±â"
-
-#: shell/e-shortcuts-view.c:268
-msgid "_Large Icons"
-msgstr "Å« ¾ÆÀÌÄÜ(_L)"
-
-#: shell/e-shortcuts-view.c:269
-msgid "Show the shortcuts as large icons"
-msgstr "Å« ¾ÆÀÌÄÜÀ¸·Î ´ÜÃื´ë º¸±â"
-
-#: shell/e-shortcuts-view.c:280
-msgid "_New Group..."
-msgstr "»õ ±×·ì(_N)..."
-
-#: shell/e-shortcuts-view.c:281
-msgid "Create a new shortcut group"
-msgstr "»õ ´ÜÃà±×·ìÀ» »ý¼º"
-
-#: shell/e-shortcuts-view.c:283
-msgid "_Remove This Group..."
-msgstr ""
-
-#: shell/e-shortcuts-view.c:284
-msgid "Remove this shortcut group"
-msgstr "ÀÌ ´ÜÃà±×·ìÀ» Á¦°Å"
-
-#: shell/e-shortcuts-view.c:289
-msgid "_Hide the Shortcut Bar"
-msgstr "´ÜÃà ¸·´ë °¨Ãß±â(_H)"
-
-#: shell/e-shortcuts-view.c:290
-msgid "Hide the shortcut bar"
-msgstr "´ÜÃà ¸·´ë¸¦ °¨Ãã´Ï´Ù"
-
-#: shell/e-shortcuts-view.c:374
-msgid "Activate"
-msgstr "È°¼º"
-
-#: shell/e-shortcuts-view.c:374
-msgid "Activate this shortcut"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:377
-msgid "Remove this shortcut from the shortcut bar"
-msgstr ""
-
-#: shell/e-shortcuts.c:375
-msgid "Error saving shortcuts."
-msgstr ""
-
-#: shell/e-storage-set-view.c:617 ui/evolution-event-editor.xml.h:76
-#: ui/evolution-message-composer.xml.h:53
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:43
-msgid "_View"
-msgstr "º¸±â(_V)"
-
-#: shell/e-storage-set-view.c:617
-msgid "View the selected folder"
-msgstr "¼±ÅÃµÈ Æú´õ º¸±â"
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr "(À̸§ ¾øÀ½)"
-
-#: shell/e-storage.c:429
-msgid "No error"
-msgstr "¿¡·¯ ¾øÀ½"
-
-#: shell/e-storage.c:431
-msgid "Generic error"
-msgstr "ÀÏ¹Ý ¿À·ù"
-
-#: shell/e-storage.c:433
-msgid "A folder with the same name already exists"
-msgstr "°°Àº À̸§ÀÇ Æú´õ°¡ ÀÌ¹Ì Á¸ÀçÇÕ´Ï´Ù"
-
-#: shell/e-storage.c:435
-msgid "The specified folder type is not valid"
-msgstr "ÁöÁ¤µÈ ÆúÅÍ Çü½ÄÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù"
-
-#: shell/e-storage.c:437
-msgid "I/O error"
-msgstr "ÀÔÃâ·Â ¿À·ù"
-
-#: shell/e-storage.c:439
-msgid "Not enough space to create the folder"
-msgstr "Æú´õ¸¦ ¸¸µé±â¿¡ ÃæºÐÇÑ °ø°£ÀÌ ¾øÀ½"
-
-#: shell/e-storage.c:441
-msgid "The specified folder was not found"
-msgstr "ÁöÁ¤µÈ Æú´õ¸¦ ãÀ»¼ö ¾ø½À´Ï´Ù"
-
-#: shell/e-storage.c:443
-msgid "Function not implemented in this storage"
-msgstr ""
-
-#: shell/e-storage.c:445
-msgid "Permission denied"
-msgstr "Çã°¡±Ç °ÅºÎ"
-
-#: shell/e-storage.c:447
-msgid "Operation not supported"
-msgstr "ÀÛµ¿ÀÌ Áö¿øµÇÁö ¾ÊÀ½"
-
-#: shell/e-storage.c:449
-msgid "The specified type is not supported in this storage"
-msgstr "ÀÌ ÀúÀå¸Åü¿¡ ÁöÁ¤µÈ Çü½ÄÀÌ Áö¿øµÇÁö ¾Ê½À´Ï´Ù"
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-msgid "The Evolution shell."
-msgstr "Evolution ½©."
-
-#: shell/main.c:74
-#, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-
-#: shell/main.c:99
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-"°¨»çÇÕ´Ï´Ù\n"
-"Evolution ÆÀ\n"
-
-#: shell/main.c:130
-msgid "Cannot initialize the Evolution shell."
-msgstr "Evolution ½©À» ÃʱâÈ­ ÇÒ¼ö ¾ø½À´Ï´Ù."
-
-#: shell/main.c:176
-msgid "Disable."
-msgstr ""
-
-#: shell/main.c:196
-msgid "Cannot initialize the Bonobo component system."
-msgstr "º¸³ëº¸ ÄÄÆ÷³ÍÆ® ½Ã½ºÅÛÀ» ÃʱâÈ­ ÇÒ¼ö ¾ø½À´Ï´Ù."
-
-#: ui/evolution-addressbook.xml.h:2
-msgid "Create new contact"
-msgstr "»õ·Î¿î ¿¬¶ôó¸¦ ¸¸µç´Ù"
-
-#: ui/evolution-addressbook.xml.h:4
-msgid "Delete a contact"
-msgstr "¿¬¶ôó¸¦ Áö¿î´Ù"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-msgid "Find"
-msgstr "ã±â"
-
-#: ui/evolution-addressbook.xml.h:6
-msgid "Find a contact"
-msgstr "¿¬¶ôó ã¾Æº»´Ù"
-
-#: ui/evolution-addressbook.xml.h:7
-msgid "New contact"
-msgstr "»õ ¿¬¶ôó"
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-calendar.xml.h:22
-#: ui/evolution-mail.xml.h:27
-msgid "Previews the message to be printed"
-msgstr "ÀμâµÉ ¸Þ½ÃÁö¸¦ ¹Ì¸®º¾´Ï´Ù"
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "Print contacts"
-msgstr "¿¬¶ôó¸¦ ÀμâÇÕ´Ï´Ù"
-
-#: ui/evolution-addressbook.xml.h:12 ui/evolution-mail.xml.h:47
-msgid "Stop"
-msgstr "ÁßÁö"
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "Stop Loading"
-msgstr "Ãë¼Ò"
-
-#: ui/evolution-addressbook.xml.h:14
-msgid "View All"
-msgstr "¸ðµÎ º¸±â"
-
-#: ui/evolution-addressbook.xml.h:15
-msgid "View all contacts"
-msgstr "¸ðµç ¿¬¶ôó º¸±â"
-
-#: ui/evolution-addressbook.xml.h:16
-msgid "_Addressbook Sources..."
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:17
-msgid "_Contact"
-msgstr "¿¬¶ôó(_C)"
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-msgid "_Print..."
-msgstr "Àμâ(_P)..."
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr "¿¬¶ôó ã±â(_S)"
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-mail.xml.h:77
-#: ui/evolution-task-editor-dialog.xml.h:88 ui/evolution.xml.h:42
-msgid "_Tools"
-msgstr "µµ±¸(_T)"
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr "´å»õ¾¿"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-msgid "Alter preferences"
-msgstr "¼³Á¤À» º¯°æÇÕ´Ï´Ù"
-
-#: ui/evolution-calendar.xml.h:4
-msgid "Create a new all day Event"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:5
-msgid "Create a new appointment"
-msgstr "»õ·Î¿î ¾à¼Ó¸¦ ¸¸µç´Ù"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr "»õ ´Þ·ÂÀ» ¸¸µì´Ï´Ù"
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:8
-msgid "Go To"
-msgstr "°¡±â"
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr "½Ã°£»óÀ¸·Î µÚ·Î °¡±â"
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go forward in time"
-msgstr "½Ã°£»óÀ¸·Î ¾ÕÀ¸·Î °¡±â"
-
-#: ui/evolution-calendar.xml.h:11
-msgid "Go to _Date"
-msgstr "³¯Â¥·Î À̵¿(_D)"
-
-#: ui/evolution-calendar.xml.h:12
-msgid "Go to _Today"
-msgstr "¿À´Ã·Î À̵¿(_T)"
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr "ÁöÁ¤ÇÑ ³¯·Î °¡±â"
-
-#: ui/evolution-calendar.xml.h:14
-msgid "Go to present time"
-msgstr "ÇöÀç ½Ã°£À¸·Î À̵¿"
-
-#: ui/evolution-calendar.xml.h:15
-msgid "Month"
-msgstr "´Þ"
-
-#: ui/evolution-calendar.xml.h:17
-msgid "New _Event"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:18 ui/evolution-event-editor.xml.h:29
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "Next"
-msgstr "´ÙÀ½"
-
-#: ui/evolution-calendar.xml.h:20
-msgid "Open Calendar"
-msgstr "´Þ·Â ¿­±â"
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Prev"
-msgstr "ÀÌÀü"
-
-#: ui/evolution-calendar.xml.h:25
-msgid "Print calendar"
-msgstr "´Þ·Â ÀμâÇϱâ"
-
-#: ui/evolution-calendar.xml.h:26
-msgid "Print this Calendar"
-msgstr "ÇöÀçÀÇ ´Þ·ÂÀ» ÀμâÇÕ´Ï´Ù"
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:15
-msgid "Save As"
-msgstr "´Ù¸¥À̸§À¸·Î ÀúÀå"
-
-#: ui/evolution-calendar.xml.h:28
-msgid "Save calendar as something else"
-msgstr "´Þ·ÂÀ» ´Ù¸¥ °ÍÀ¸·Î ÀúÀåÇÕ´Ï´Ù"
-
-#: ui/evolution-calendar.xml.h:30
-msgid "Show 1 day"
-msgstr "ÇϷ羿 º¸±â"
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr "ÇÑ´Þ¾¿ º¸±â"
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr "ÇÑÁÖ¾¿ º¸±â"
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:223
-#: widgets/misc/e-dateedit.c:413
-msgid "Today"
-msgstr "¿À´Ã"
-
-#: ui/evolution-calendar.xml.h:35
-msgid "W_ork Week"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr "ÁÖ"
-
-#: ui/evolution-calendar.xml.h:37
-msgid "_Appointment"
-msgstr "¾à¼Ó(_A)"
-
-#: ui/evolution-calendar.xml.h:38
-msgid "_Day"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:39
-msgid "_Month"
-msgstr "´Þ(_M)"
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:38
-msgid "_New"
-msgstr "»õ·Î¿î(_N)"
-
-#: ui/evolution-calendar.xml.h:41
-msgid "_Open Calendar"
-msgstr "´Þ·Â ¿­±â(_O)"
-
-#: ui/evolution-calendar.xml.h:43 ui/evolution-mail.xml.h:74
-#: ui/evolution-tasks.xml.h:8
-msgid "_Save As..."
-msgstr "´Ù¸¥À̸§À¸·Î ÀúÀå(_S)..."
-
-#: ui/evolution-calendar.xml.h:45
-msgid "_Week"
-msgstr "ÁÖ(_W)"
-
-#: ui/evolution-contact-editor.xml.h:2
-msgid "Delete this item"
-msgstr "ÀÌ Ç׸ñ¸¦ »èÁ¦ÇÕ´Ï´Ù"
-
-#: ui/evolution-contact-editor.xml.h:3
-msgid "Delete..."
-msgstr "»èÁ¦..."
-
-#: ui/evolution-contact-editor.xml.h:4
-msgid "Help"
-msgstr "µµ¿ò¸»"
-
-#: ui/evolution-contact-editor.xml.h:5
-msgid "Print En_velope..."
-msgstr "ºÀÅõ Àμâ(_v)..."
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-msgid "Print this item"
-msgstr "ÀÌ Ç׸ñÀ» Àμâ"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-mail.xml.h:32 ui/evolution-task-editor-dialog.xml.h:41
-msgid "Print..."
-msgstr "Àμâ..."
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:16
-#: ui/evolution-task-editor-dialog.xml.h:51
-msgid "Save _As..."
-msgstr "´Ù¸¥À̸§À¸·Î ÀúÀå(_A)..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-msgid "Save and Close"
-msgstr "ÀúÀåÈÄ ¸¶Ä§"
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr "¾à¼ÓÀ» ÀúÀåÇÑÈÄ ´ÙÀ̾ó·Î±×¸¦ ´Ý´Â´Ù"
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr "¿Â¶óÀÎ µµ¿ò¸»À» º¸¿©ÁØ´Ù"
-
-#: ui/evolution-contact-editor.xml.h:13
-msgid "Send _message to contact..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:44 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:30
-msgid "_File"
-msgstr "ÆÄÀÏ(_F)"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:51
-#: ui/evolution-task-editor-dialog.xml.h:85
-msgid "_Save"
-msgstr "ÀúÀå(_S)"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr "ÀÌ ÀÀ¿ëÇÁ·Î±×·¥¿¡ ´ëÇÏ¿©"
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr "ÀÌ ÇÁ·Î±×·¥Àº..."
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-msgid "Actio_ns"
-msgstr "Çൿ(_n)"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-msgid "Address _Book... (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-msgid "C_lear"
-msgstr "ºñ¿ò(_l)"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-msgid "C_ut"
-msgstr "ÀÚ¸£±â(_u)"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-msgid "Chec_k Names (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-msgid "Clear"
-msgstr "ºñ¿ò"
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-msgid "Clear the selection"
-msgstr "¼±ÅÃÇÑ ºÎºÐ ºñ¿ò"
-
-#: ui/evolution-event-editor.xml.h:11
-msgid "Close this appointment"
-msgstr "ÀÌ ¾à¼ÓÀ» ´Ý½À´Ï´Ù"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "Æú´õ·Î º¹»ç..."
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:3
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "º¹»ç"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-msgid "Copy the selection"
-msgstr "¼±ÅÃÇÑ°Í º¹»ç"
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr "ÀÚ¸£±â"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Cut the selection"
-msgstr "¼±ÅÃÇÑ°Í ÀÚ¸§"
-
-#: ui/evolution-event-editor.xml.h:18
-msgid "Delete this appointment"
-msgstr "ÀÌ ¾à¼ÓÀ» »èÁ¦ÇÕ´Ï´Ù"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr "XML·Î ´ýÇÁ"
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr "°íÄ¥¿¹Á¤: Æú´õÀÇ Ã¹Â°Ç׸ñ(_r)"
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-msgid "For_ward (FIXME)"
-msgstr "ÀÛ¾÷(_T) (°íÄ¥¿¹Á¤)"
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-msgid "Go to the next item"
-msgstr "´ÙÀ½ Ç׸ñÀ¸·Î À̵¿"
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-msgid "Go to the previous item"
-msgstr "ÀÌÀü Ç׸ñÀ¸·Î À̵¿"
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-msgid "In_complete Task (FIXME)"
-msgstr "ÀÛ¾÷(_T) (°íÄ¥¿¹Á¤)"
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-msgid "Modify the file's properties"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-msgid "N_ext"
-msgstr "´ÙÀ½(_e)"
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-msgid "Paste"
-msgstr "ºÙÀ̱â"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-msgid "Paste the clipboard"
-msgstr "Ŭ¸³º¸µå¿¡¼­ ºÙ¿©³Ö±â"
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr "ÀÌÀü(_v)"
-
-#: ui/evolution-event-editor.xml.h:33 ui/evolution-task-editor-dialog.xml.h:36
-msgid "Previous"
-msgstr "ÀÌÀü"
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-msgid "Print Pre_view"
-msgstr "Àμ⠹̸®º¸±â(_v)"
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-msgid "Print S_etup..."
-msgstr "Àμ⠼³Á¤(_e)..."
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-msgid "Print Setup"
-msgstr "Àμ⠼³Á¤"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:14
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:233
-msgid "Save"
-msgstr "ÀúÀå"
-
-#: ui/evolution-event-editor.xml.h:43
-msgid "Save the appointment and close the dialog box"
-msgstr "¾à¼ÓÀ» ÀúÀåÇÑÈÄ ´ÙÀ̾ó·Î±×¸¦ ´Ý´Â´Ù"
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:20
-#: ui/evolution-task-editor-dialog.xml.h:53
-msgid "Save the current file"
-msgstr "ÇöÀç ÆÄÀÏÀ» ÀúÀå"
-
-#: ui/evolution-event-editor.xml.h:46
-msgid "Schedule _Meeting"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:47
-msgid "Schedule some sort of a meeting"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-task-editor-dialog.xml.h:57
-msgid "Select All"
-msgstr "ÀüºÎ ¼±ÅÃ"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-msgid "Select everything"
-msgstr "Àüü¸¦ ¼±ÅÃÇÕ´Ï´Ù"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-msgid "Task _Request (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-message-composer.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:63
-msgid "_About..."
-msgstr "ÀÌ ÇÁ·Î±×·¥Àº(_A)..."
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:41
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:27
-msgid "_Close"
-msgstr "´Ý±â(_C)"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:28
-msgid "_Contact (FIXME)"
-msgstr "¿¬°á(_C) (°íÄ¥¿¹Á¤)"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-msgid "_Copy"
-msgstr "º¹»ç(_C)"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr "µð¹ö±ë(_D)"
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:46
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:34
-msgid "_Help"
-msgstr "µµ¿ò¸»(_H)"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-msgid "_Item (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-msgid "_Journal Entry (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-msgid "_Last Item in Folder (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-msgid "_Mail Message (FIXME)"
-msgstr "ÆíÁö ¸Þ½ÃÁö(_M) (¼ö¸®Áß)"
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-msgid "_Move to Folder... (FIXME)"
-msgstr "Æú´õ·Î À̵¿(_M)..."
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-msgid "_Note (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-msgid "_Paste"
-msgstr "ºÙÀ̱â(_P)"
-
-#: ui/evolution-event-editor.xml.h:69 ui/evolution-task-editor-dialog.xml.h:82
-#: ui/evolution-tasks.xml.h:7
-msgid "_Print"
-msgstr "Àμâ(_P)"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:70
-#: ui/evolution-task-editor-dialog.xml.h:83
-msgid "_Properties..."
-msgstr "¼³Á¤(_P)..."
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-msgid "_Select All"
-msgstr "ÀüºÎ ¼±ÅÃ(_S)"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:41
-msgid "_Task (FIXME)"
-msgstr "ÀÛ¾÷(_T) (°íÄ¥¿¹Á¤)"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-msgid "_Unread Item (FIXME)"
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:1
-msgid "Add Service"
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:3
-msgid "Create a new email"
-msgstr "»õ ÆíÁö¸¦ ÀÛ¼ºÇÕ´Ï´Ù"
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:5
-msgid "New Mail"
-msgstr "»õ ÆíÁö"
-
-#: ui/evolution-mail.xml.h:1
-msgid "Compose"
-msgstr "ÆíÁö ÀÛ¼º"
-
-#: ui/evolution-mail.xml.h:2
-msgid "Compose a new message"
-msgstr "»õ ¸Þ¼¼Áö¸¦ ÀÛ¼ºÇÕ´Ï´Ù"
-
-#: ui/evolution-mail.xml.h:4
-msgid "Copy message to a new folder"
-msgstr "¸Þ¼¼Áö¸¦ »õ Æú´õ·Î º¹»çÇÕ´Ï´Ù"
-
-#: ui/evolution-mail.xml.h:5
-msgid "Create _Virtual Folder From Message"
-msgstr "¸Þ½ÃÁö·ÎºÎÅÍ °¡»ó Æú´õ »ý¼º(_V)"
-
-#: ui/evolution-mail.xml.h:8
-msgid "Display all of the message headers"
-msgstr "¸ðµç ¸Þ½ÃÁö Çì´õ º¸À̱â"
-
-#: ui/evolution-mail.xml.h:9
-msgid "Empty _Trash"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:10
-msgid "Filter on Se_nder"
-msgstr "¹ß¼ÛÀο¡´ëÇÑ °Å¸£°Ô(_n)"
-
-#: ui/evolution-mail.xml.h:11
-msgid "Filter on _Recipients"
-msgstr "¼ö½ÅÀο¡´ëÇÑ °Å¸£°Ô(_R)"
-
-#: ui/evolution-mail.xml.h:12
-msgid "Filter on _Subject"
-msgstr "Á¦¸ñ¿¡´ëÇÑ °Å¸£°Ô(_S)"
-
-#: ui/evolution-mail.xml.h:13
-msgid "Forget _Passwords"
-msgstr "±â¾ïµÈ ¾ÏÈ£ ¹ö¸®±â"
-
-#: ui/evolution-mail.xml.h:15
-msgid "Forward As"
-msgstr "´Ù¸¥ ÁÖ¼Ò·Î Àü´Þ"
-
-#: ui/evolution-mail.xml.h:17
-msgid "Full _Headers"
-msgstr "¸ðµç Çì´õ º¸±â(_H)"
-
-#: ui/evolution-mail.xml.h:18
-msgid "Hide S_elected Messages"
-msgstr "¼±ÅÃµÈ ¸Þ¼¼Áö ¼û±è(_S)"
-
-#: ui/evolution-mail.xml.h:19
-msgid "Hide _Deleted Messages"
-msgstr "»èÁ¦µÈ ¸Þ¼¼Áö ¼û±è(_D)"
-
-#: ui/evolution-mail.xml.h:20
-msgid "Hide _Read messages"
-msgstr "ÀÐÀº ¸Þ¼¼Áö ¼û±è(_R)"
-
-#: ui/evolution-mail.xml.h:21
-msgid "Manage _Subscriptions..."
-msgstr "±¸µ¶ °ü¸®(_S)..."
-
-#: ui/evolution-mail.xml.h:22
-msgid "Mar_k as Read"
-msgstr "ÀÐÀº °ÍÀ¸·Î Ç¥½Ã(_k)"
-
-#: ui/evolution-mail.xml.h:23
-msgid "Mark All as R_ead"
-msgstr "ÀüºÎ¸¦ ÀÐÀº °ÍÀ¸·Î Ç¥½Ã(_e)"
-
-#: ui/evolution-mail.xml.h:24
-msgid "Mark as U_nread"
-msgstr "ÀÐÁö ¾ÊÀº °ÍÀ¸·Î Ç¥½Ã(_n)"
-
-#: ui/evolution-mail.xml.h:25
-msgid "Move"
-msgstr "À̵¿"
-
-#: ui/evolution-mail.xml.h:26
-msgid "Move message to a new folder"
-msgstr "¸Þ¼¼Áö¸¦ »õ Æú´õ·Î À̵¿ÇÕ´Ï´Ù"
-
-#: ui/evolution-mail.xml.h:30
-msgid "Print message to the printer"
-msgstr "¸Þ½ÃÁö Àμâ"
-
-#: ui/evolution-mail.xml.h:33
-msgid "Redirect (FIXME: implement me)"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:36
-msgid "Reply to _All"
-msgstr "Àüü ȸ½Å(_A)"
-
-#: ui/evolution-mail.xml.h:39
-msgid "S_ource"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:40 ui/evolution-subscribe.xml.h:7
-msgid "Select _All"
-msgstr "ÀüºÎ ¼±ÅÃ(_A)"
-
-#: ui/evolution-mail.xml.h:41
-msgid "Select _Thread"
-msgstr "±ÛŸ·¡ ¼±ÅÃ(_T)"
-
-#: ui/evolution-mail.xml.h:42
-msgid "Send / Receive"
-msgstr "º¸³»°í ¹Þ±â"
-
-#: ui/evolution-mail.xml.h:43
-msgid ""
-"Send queued mail\n"
-" and retrieve new mail"
-msgstr ""
-"¹Ð¸° ÆíÁö¸¦ º¸³»°í\n"
-" »õ ÆíÁö¸¦ °¡Á®¿Â´Ù"
-
-#: ui/evolution-mail.xml.h:45
-msgid "Send queued mail and retrieve new mail"
-msgstr "¹Ð¸° ÆíÁö¸¦ º¸³»°í »õ ÆíÁö¸¦ °¡Á®¿Â´Ù"
-
-#: ui/evolution-mail.xml.h:46
-msgid "Show _All"
-msgstr "¸ðµÎ º¸±â(_A)"
-
-#: ui/evolution-mail.xml.h:48
-msgid "Threaded Message list"
-msgstr "¿¬°üµÈ ¸Þ¼¼Áö ¸ñ·Ï"
-
-#: ui/evolution-mail.xml.h:49
-msgid "VFolder on Se_nder"
-msgstr "¹ß¼ÛÀÚ¿¡µû¸¥ °¡»óÆú´õ(_n)"
-
-#: ui/evolution-mail.xml.h:50
-msgid "VFolder on _Recipients"
-msgstr "¼ö½ÅÀÚ¿¡µû¸¥ °¡»óÆú´õ(_R)"
-
-#: ui/evolution-mail.xml.h:51
-msgid "VFolder on _Subject"
-msgstr "Á¦¸ñ¿¡µû¸¥ °¡»óÆú´õ(_S)"
-
-#: ui/evolution-mail.xml.h:52
-msgid "View Raw Message Source"
-msgstr "Raw ¸Þ½ÃÁö º¸±â"
-
-#: ui/evolution-mail.xml.h:53
-msgid "Virtual Folder _Editor..."
-msgstr "°¡»ó Æú´õ ÆíÁý±â(_E)..."
-
-#: ui/evolution-mail.xml.h:54
-msgid "_Apply Filters"
-msgstr "°Å¸£°³ Àû¿ë(_A)"
-
-#: ui/evolution-mail.xml.h:55
-msgid "_Attachment"
-msgstr "÷ºÎ(_A)"
-
-#: ui/evolution-mail.xml.h:56
-msgid "_Compose"
-msgstr "ÆíÁý(_C)"
-
-#: ui/evolution-mail.xml.h:57
-msgid "_Copy to Folder..."
-msgstr "Æú´õ·Î º¹»ç(_C)..."
-
-#: ui/evolution-mail.xml.h:58
-msgid "_Create Filter From Message"
-msgstr "¸Þ½ÃÁö·ÎºÎÅÍ °Å¸£°Ô »ý¼º(_C)"
-
-#: ui/evolution-mail.xml.h:60
-msgid "_Expunge"
-msgstr "Á¦°Å(_E)"
-
-#: ui/evolution-mail.xml.h:61
-msgid "_Filters..."
-msgstr "ÆíÁö °Å¸£°³(_F)..."
-
-#: ui/evolution-mail.xml.h:62 ui/evolution.xml.h:31
-msgid "_Folder"
-msgstr "Æú´õ(_F)"
-
-#: ui/evolution-mail.xml.h:63
-msgid "_Forward"
-msgstr "Àü´Þ(_F)"
-
-#: ui/evolution-mail.xml.h:64
-msgid "_Inline"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:65 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr "¼±Åà ¹ÝÀü(_I)"
-
-#: ui/evolution-mail.xml.h:66
-msgid "_Mail Message"
-msgstr "ÆíÁö ¸Þ¼¼Áö(_M)"
-
-#: ui/evolution-mail.xml.h:67
-msgid "_Mail Settings..."
-msgstr "¸ÞÀÏ ¼³Á¤(_M)..."
-
-#: ui/evolution-mail.xml.h:68
-msgid "_Move to Folder..."
-msgstr "Æú´õ·Î À̵¿(_M)..."
-
-#: ui/evolution-mail.xml.h:69
-msgid "_Open Selected Items"
-msgstr "¼±ÅÃµÈ ¸Þ¼¼Áö ¿­±â(_S)"
-
-#: ui/evolution-mail.xml.h:71
-msgid "_Quoted"
-msgstr "Àοë(_Q)"
-
-#: ui/evolution-mail.xml.h:72
-msgid "_Reply"
-msgstr "ȸ½Å(_R)"
-
-#: ui/evolution-mail.xml.h:73
-msgid "_Resend Messages"
-msgstr "¸Þ¼¼ÁöµéÀ» ´Ù½Ã º¸³»±â(_R)"
-
-#: ui/evolution-mail.xml.h:75
-msgid "_Send / Receive"
-msgstr "º¸³»°í ¹Þ±â(_S)"
-
-#: ui/evolution-mail.xml.h:76
-msgid "_Threaded"
-msgstr "¾²·¹µå Ç¥½Ã(_T)"
-
-#: ui/evolution-mail.xml.h:78
-msgid "_Undelete"
-msgstr "µÇ»ì¸²(_U)"
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr "÷ºÎ"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-msgid "Close the current file"
-msgstr "ÇöÀç ÆÄÀÏ ´ÝÀ½"
-
-#: ui/evolution-message-composer.xml.h:5
-msgid "Encrypt this message with PGP"
-msgstr "ÀÌ ¸Þ¼¼Áö¸¦ PGP·Î ¾ÏȣȭÇÕ´Ï´Ù"
-
-#: ui/evolution-message-composer.xml.h:6
-msgid "F_ormat"
-msgstr "Çü½Ä(_o)"
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "HTML"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:8
-msgid "Insert a file as text into the message"
-msgstr "¸Þ¼¼Áö¿¡ ÅؽºÆ®·Î ÆÄÀÏÀ» »ðÀÔÇÕ´Ï´Ù"
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert text file..."
-msgstr "ÅؽºÆ® ÆÄÀÏ »ðÀÔ"
-
-#: ui/evolution-message-composer.xml.h:11
-msgid "Open a file"
-msgstr "ÆÄÀÏÀ» ¿±´Ï´Ù"
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "PGP Encrypt"
-msgstr "PGP ¾Ïȣȭ"
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Sign"
-msgstr "PGP ¼­¸í"
-
-#: ui/evolution-message-composer.xml.h:17
-msgid "Save _Draft"
-msgstr "ÃÊ°í¸¦ ÀúÀå(_D)"
-
-#: ui/evolution-message-composer.xml.h:18
-msgid "Save in _folder... (FIXME)"
-msgstr "Æú´õ·Î ÀúÀå(_f)... (°íÄ¥¿¹Á¤)"
-
-#: ui/evolution-message-composer.xml.h:19
-msgid "Save in folder..."
-msgstr "Æú´õ·Î ÀúÀå..."
-
-#: ui/evolution-message-composer.xml.h:21
-msgid "Save the current file with a different name"
-msgstr "ÇöÀç ÆÄÀÏÀ» ´Ù¸¥À̸§À¸·Î ÀúÀåÇÕ´Ï´Ù"
-
-#: ui/evolution-message-composer.xml.h:22
-msgid "Save the message in a specified folder"
-msgstr "¸Þ¼¼Áö¸¦ ÁöÁ¤ÇÑ Æú´õ·Î ÀúÀåÇÕ´Ï´Ù"
-
-#: ui/evolution-message-composer.xml.h:23
-msgid "Send"
-msgstr "º¸³¿"
-
-#: ui/evolution-message-composer.xml.h:24
-msgid "Send _Later"
-msgstr "³ªÁß¿¡ º¸³¿(_L)"
-
-#: ui/evolution-message-composer.xml.h:25
-msgid "Send _later"
-msgstr "³ªÁß¿¡ º¸³¿(_L)"
-
-#: ui/evolution-message-composer.xml.h:26
-msgid "Send the mail in HTML format"
-msgstr "ÆíÁö¸¦ HTMLÇü½ÄÀ¸·Î º¸³¿"
-
-#: ui/evolution-message-composer.xml.h:27
-msgid "Send the message later"
-msgstr "³ªÁß¿¡ ¸Þ¼¼Áö¸¦ º¸³À´Ï´Ù"
-
-#: ui/evolution-message-composer.xml.h:28
-msgid "Send the message now"
-msgstr "Áö±Ý ¸Þ¼¼Áö¸¦ º¸³À´Ï´Ù"
-
-#: ui/evolution-message-composer.xml.h:29
-msgid "Send this message now"
-msgstr "ÀÌ ¸Þ¼¼Áö¸¦ Áö±Ý º¸³À´Ï´Ù"
-
-#: ui/evolution-message-composer.xml.h:30
-msgid "Show / hide attachments"
-msgstr "÷ºÎ¹° º¸ÀÓ/¼û±è"
-
-#: ui/evolution-message-composer.xml.h:31
-msgid "Show _attachments"
-msgstr "÷ºÎ¹° º¸±â(_a)"
-
-#: ui/evolution-message-composer.xml.h:32
-msgid "Show attachments"
-msgstr "÷ºÎ¹° º¸±â"
-
-#: ui/evolution-message-composer.xml.h:33
-msgid "Sign this message with your PGP key"
-msgstr "ÀÌ ¸Þ¼¼Áö¿¡ PGPÅ°·Î ¼­¸íÇÔ"
-
-#: ui/evolution-message-composer.xml.h:34
-msgid "Toggles whether the BCC field is displayed"
-msgstr "¼ûÀº ÂüÁ¶C Ç׸ñÀ» º¸¿©ÁÙ °ÍÀÎÁö¸¦ °áÁ¤"
-
-#: ui/evolution-message-composer.xml.h:35
-msgid "Toggles whether the CC field is displayed"
-msgstr "ÂüÁ¶ Ç׸ñÀ» º¸¿©ÁÙ °ÍÀÎÁö¸¦ °áÁ¤"
-
-#: ui/evolution-message-composer.xml.h:36
-msgid "Toggles whether the From chooser is displayed"
-msgstr "¹ß½Å Ç׸ñÀ» º¸¿©ÁÙ °ÍÀÎÁö¸¦ °áÁ¤"
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr "ȸ½Å ÁÖ¼Ò Ç׸ñÀ» º¸¿©ÁÙ °ÍÀÎÁö¸¦ °áÁ¤"
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "_Bcc Field"
-msgstr "¼ûÀº ÂüÁ¶ Ç׸ñ(_B)"
-
-#: ui/evolution-message-composer.xml.h:40
-msgid "_Cc Field"
-msgstr "ÂüÁ¶ Ç׸ñ(_C)"
-
-#: ui/evolution-message-composer.xml.h:45
-msgid "_From Field"
-msgstr "¹ß½Å Ç׸ñ(_F)"
-
-#: ui/evolution-message-composer.xml.h:47
-msgid "_Insert"
-msgstr "»ðÀÔ(_I)"
-
-#: ui/evolution-message-composer.xml.h:48
-msgid "_Insert text file... (FIXME)"
-msgstr "ÅؽºÆ® ÆÄÀÏ »ðÀÔ(_I)... (°íÄ¥ ¿¹Á¤)"
-
-#: ui/evolution-message-composer.xml.h:49
-msgid "_Open..."
-msgstr "¿­±â(_O)..."
-
-#: ui/evolution-message-composer.xml.h:50
-msgid "_Reply-To Field"
-msgstr "ȸ½Å ÁÖ¼Ò Ç׸ñ(_R)"
-
-#: ui/evolution-message-composer.xml.h:52
-msgid "_Security"
-msgstr "º¸¾È(_S)"
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:3
-msgid "F_older"
-msgstr "Æú´õ(_o)"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr "±¸µ¶"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr "±¸µ¶ ÁßÁö"
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-msgid "Assig_n Task (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr "´Ù½Ã ã±â"
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-msgid "Meeting Re_quest (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-msgid "Redo"
-msgstr "Àç½ÇÇà"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-msgid "Redo the undone action"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-msgid "Replace"
-msgstr "¹Ù²Ù±â"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-msgid "Replace a string"
-msgstr "¹Ù²Ù±â"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-msgid "Reply to A_ll (FIXME)"
-msgstr "Àüü ȸ½Å(_l) (°íÄ¥ ¿¹Á¤)"
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-msgid "S_end Status Report (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-msgid "Save the task and close the dialog box"
-msgstr "ÀÛ¾÷À» ÀúÀåÇÑÈÄ ´ÙÀ̾ó·Î±×¸¦ ´Ý´Â´Ù"
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "Search again for the same string"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-msgid "Search for a string"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr "½ÇÇàÃë¼Ò"
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-msgid "Undo the last action"
-msgstr "¸¶Áö¸· ½ÇÇà Ãë¼Ò"
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:26
-msgid "_Appointment (FIXME)"
-msgstr "¾à¼Ó(_A) (°íÄ¥¿¹Á¤)"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-msgid "_Mark Complete (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-msgid "_Reply (FIXME)"
-msgstr ""
-
-#: ui/evolution-tasks.xml.h:2
-msgid "Create a new task"
-msgstr ""
-
-#: ui/evolution-tasks.xml.h:3
-msgid "New Task"
-msgstr ""
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr ""
-
-#: ui/evolution-tasks.xml.h:6
-msgid "Tasks Preferences..."
-msgstr ""
-
-#: ui/evolution-tasks.xml.h:9
-msgid "_Task"
-msgstr ""
-
-#: ui/evolution.xml.h:1
-msgid "About Evolution..."
-msgstr "Evolution˼..."
-
-#: ui/evolution.xml.h:3
-msgid "Close this window"
-msgstr "ÀÌ Ã¢À» ´Ý½À´Ï´Ù"
-
-#: ui/evolution.xml.h:4
-msgid "Customi_ze Toolbars..."
-msgstr ""
-
-#: ui/evolution.xml.h:5
-msgid "Customize"
-msgstr ""
-
-#: ui/evolution.xml.h:6
-msgid "Customize toolbars"
-msgstr ""
-
-#: ui/evolution.xml.h:7
-msgid "Display a different folder"
-msgstr "´Ù¸¥ Æú´õ¸¦ Ç¥½Ã"
-
-#: ui/evolution.xml.h:8
-msgid "E_xit"
-msgstr "Á¾·á(_x)"
-
-#: ui/evolution.xml.h:9
-msgid "Evolution bar _shortcut"
-msgstr "Evolution ´ÜÃà ¸·´ë(_s)"
-
-#: ui/evolution.xml.h:10
-msgid "Exit the program"
-msgstr "ÇÁ·Î±×·¥À» ¸¶Ä¨´Ï´Ù"
-
-#: ui/evolution.xml.h:11
-msgid "Getting _Started"
-msgstr "½ÃÀÛÇϱâ"
-
-#: ui/evolution.xml.h:12
-msgid "Import an external file format"
-msgstr ""
-
-#: ui/evolution.xml.h:13
-msgid "Main toolbar"
-msgstr ""
-
-#: ui/evolution.xml.h:14
-msgid "Show information about Evolution"
-msgstr "EvolutionÀÇ Á¤º¸ º¸±â"
-
-#: ui/evolution.xml.h:15
-msgid "Submit Bug Report"
-msgstr "¹ö±× Á¦º¸"
-
-#: ui/evolution.xml.h:16
-msgid "Submit _Bug Report"
-msgstr "¹ö±× Á¦º¸(_B)"
-
-#: ui/evolution.xml.h:17
-msgid "Submit bug report using Bug Buddy."
-msgstr "Bug Buddy·Î ¹ö±×Á¦º¸¸¦ ÇÕ´Ï´Ù"
-
-#: ui/evolution.xml.h:18
-msgid "Toggle whether to show the folder bar"
-msgstr ""
-
-#: ui/evolution.xml.h:19
-msgid "Toggle whether to show the shortcut bar"
-msgstr ""
-
-#: ui/evolution.xml.h:20
-msgid "Using the C_ontact Manager"
-msgstr ""
-
-#: ui/evolution.xml.h:21
-msgid "Using the _Calendar"
-msgstr "´Þ·Â »ç¿ëÇϱâ(_C)"
-
-#: ui/evolution.xml.h:22
-msgid "Using the _Mailer"
-msgstr ""
-
-#: ui/evolution.xml.h:23
-msgid "Work Offline"
-msgstr "¿ÀÇÁ¶óÀο¡¼­ ÀÛ¾÷"
-
-#: ui/evolution.xml.h:24
-msgid "_About Evolution..."
-msgstr "Evolution˼(_A)..."
-
-#: ui/evolution.xml.h:25
-msgid "_Actions"
-msgstr "Çൿ(_A)"
-
-#: ui/evolution.xml.h:32
-msgid "_Folder Bar"
-msgstr ""
-
-#: ui/evolution.xml.h:33
-msgid "_Go to Folder..."
-msgstr "Æú´õ·Î °¡±â(_G)..."
-
-#: ui/evolution.xml.h:35
-msgid "_Import file..."
-msgstr ""
-
-#: ui/evolution.xml.h:36
-msgid "_Index"
-msgstr "»öÀÎ(_I)"
-
-#: ui/evolution.xml.h:37
-msgid "_Mail message"
-msgstr "ÆíÁö ¸Þ¼¼Áö(_M)"
-
-#: ui/evolution.xml.h:39
-msgid "_New Folder"
-msgstr "»õ °¡»óÆú´õ(_N)"
-
-#: ui/evolution.xml.h:40
-msgid "_Shortcut Bar"
-msgstr "´ÜÃà ¸·´ë(_S)"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:463
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2471
-msgid "%A, %B %d, %Y"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:387
-msgid "Busy"
-msgstr "¹Ù»Ý"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:388
-msgid "Out of Office"
-msgstr "»ç¹«½Ç ¶°³²"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:389
-msgid "No Information"
-msgstr "Á¤º¸ ¾øÀ½"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:405
-msgid "_Invite Others..."
-msgstr "´Ù¸¥ À̵éÀ» ÃÊ´ë(_I)..."
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:425
-msgid "_Options"
-msgstr "¼³Á¤(_O)"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:442
-msgid "Show _Only Working Hours"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:455
-msgid "Show _Zoomed Out"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:473
-msgid "_Update Free/Busy"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:491
-msgid "_<<"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:508
-msgid "_Autopick"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:522
-msgid ">_>"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:539
-msgid "_All People and Resources"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:552
-msgid "All _People and One Resource"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:565
-msgid "_Required People"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:578
-msgid "Required People and _One Resource"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:601
-msgid "Meeting _start time:"
-msgstr "ȸÀÇ ½ÃÀÛ ½Ã°£(_s):"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:625
-msgid "Meeting _end time:"
-msgstr "ȸÀÇ Á¾·á ½Ã°£(_e):"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:738
-msgid "All Attendees"
-msgstr "¸ðµç Âü¼®ÀÚ"
-
-#: widgets/menus/gal-view-menus.c:171
-msgid "_Current View"
-msgstr ""
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:421
-msgid "MTWTFSS"
-msgstr ""
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1060 widgets/misc/e-calendar-item.c:2755
-msgid "%B %Y"
-msgstr ""
-
-#: widgets/misc/e-cell-date-edit.c:215 widgets/misc/e-dateedit.c:407
-msgid "Now"
-msgstr "ÇöÀç"
-
-#: widgets/misc/e-cell-date-edit.c:239
-msgid "OK"
-msgstr "È®ÀÎ"
-
-#: widgets/misc/e-cell-date-edit.c:720
-#, c-format
-msgid "The time must be in the format: %s"
-msgstr ""
-
-#: widgets/misc/e-clipped-label.c:107
-msgid "..."
-msgstr ""
-
-#: widgets/misc/e-filter-bar.c:160
-msgid "Save Search"
-msgstr ""
-
-#: widgets/misc/e-filter-bar.c:231
-msgid "Advanced Search"
-msgstr "°í±Þ °Ë»ö"
-
-#: widgets/misc/e-filter-bar.c:311
-msgid "Advanced ..."
-msgstr "°í±Þ..."
-
-#: widgets/misc/e-messagebox.c:141
-msgid "Information"
-msgstr "Á¤º¸"
-
-#: widgets/misc/e-messagebox.c:148
-msgid "Warning"
-msgstr "°æ°í"
-
-#: widgets/misc/e-messagebox.c:162
-msgid "Question"
-msgstr "Áú¹®"
-
-#: widgets/misc/e-messagebox.c:169
-msgid "Message"
-msgstr "¸Þ¼¼Áö"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:213
-msgid "Don't show this message again."
-msgstr "ÀÌ ¸Þ¼¼Áö¸¦ ´Ù½Ã º¼ ¼ö ¾ø½À´Ï´Ù"
-
-#: widgets/misc/e-search-bar.c:140
-msgid "Sear_ch"
-msgstr "°Ë»ö(_c)"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-msgid "The Personal Addressbook Server"
-msgstr "°³Àοë ÁÖ¼Ò·Ï ¼­¹ö"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr ""
-
-#: wombat/wombat.c:165
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr "setup_vfs(): GNOME-VFS¸¦ ÃʱâÈ­ ÇÒ ¼ö ¾ø½À´Ï´Ù"
-
-#: wombat/wombat.c:177
-msgid "init_corba(): could not initialize GNOME"
-msgstr "init_corba(): ±×³ðÀ» ÃʱâÈ­ ÇÒ ¼ö ¾ø½À´Ï´Ù"
-
-#: wombat/wombat.c:190
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "init_bonobo(): Bonobo¸¦ ÃʱâÈ­ ÇÒ ¼ö ¾ø½À´Ï´Ù"
-
-
diff --git a/po/lt.po b/po/lt.po
deleted file mode 100644
index 4722f09b6a..0000000000
--- a/po/lt.po
+++ /dev/null
@@ -1,9234 +0,0 @@
-# Lithuanian translation of Evolution
-# Copyright (C) 2000-2001 Free Software Foundation, Inc.
-# Gediminas Paulauskas <menesis@delfi.lt>, 2000-2001.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: evolution 0.10\n"
-"POT-Creation-Date: 2001-05-05 17:29+0200\n"
-"PO-Revision-Date: 2001-05-05 01:02+0200\n"
-"Last-Translator: Gediminas Paulauskas <menesis@delfi.lt>\n"
-"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-13\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: addressbook/backend/ebook/e-card.c:3209
-msgid "Card: "
-msgstr "Kortelë: "
-
-#: addressbook/backend/ebook/e-card.c:3211
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-"\n"
-"Vardas: "
-
-#: addressbook/backend/ebook/e-card.c:3212
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-"\n"
-" Prieðdëlis: "
-
-#: addressbook/backend/ebook/e-card.c:3213
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-"\n"
-" Vardas: "
-
-#: addressbook/backend/ebook/e-card.c:3214
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-"\n"
-" Papildomas: "
-
-#: addressbook/backend/ebook/e-card.c:3215
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-"\n"
-" Pavardë: "
-
-#: addressbook/backend/ebook/e-card.c:3216
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-"\n"
-" Galûnë: "
-
-#: addressbook/backend/ebook/e-card.c:3230
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-"\n"
-"Gimimo data:"
-
-#: addressbook/backend/ebook/e-card.c:3241
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-"\n"
-"Adresas:"
-
-#: addressbook/backend/ebook/e-card.c:3243
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-"\n"
-" Paðto dëþë: "
-
-#: addressbook/backend/ebook/e-card.c:3244
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3245
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-"\n"
-" Gatvë: "
-
-#: addressbook/backend/ebook/e-card.c:3246
-msgid ""
-"\n"
-" City: "
-msgstr ""
-"\n"
-" Miestas: "
-
-#: addressbook/backend/ebook/e-card.c:3247
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-"\n"
-" Regionas: "
-
-#: addressbook/backend/ebook/e-card.c:3248
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-"\n"
-" Paðto kodas: "
-
-#: addressbook/backend/ebook/e-card.c:3249
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-"\n"
-" Valstybë: "
-
-#: addressbook/backend/ebook/e-card.c:3262
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3274
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-"\n"
-"Telefonai:\n"
-
-#: addressbook/backend/ebook/e-card.c:3277
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-"\n"
-"Telefonas:"
-
-#: addressbook/backend/ebook/e-card.c:3301
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-"\n"
-"El. paðtas:\n"
-
-#: addressbook/backend/ebook/e-card.c:3304
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-"\n"
-"El. paðtas:"
-
-#: addressbook/backend/ebook/e-card.c:3323
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-"\n"
-"Paðto programa: "
-
-#: addressbook/backend/ebook/e-card.c:3329
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-"\n"
-"Laiko juosta: "
-
-#: addressbook/backend/ebook/e-card.c:3337
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-"\n"
-"Geogr. vietovë: "
-
-#: addressbook/backend/ebook/e-card.c:3341
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-"\n"
-"Verslo padëtis: "
-
-#: addressbook/backend/ebook/e-card.c:3353
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-"\n"
-"Organizacija: "
-
-#: addressbook/backend/ebook/e-card.c:3354
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-"\n"
-" Vardas: "
-
-#: addressbook/backend/ebook/e-card.c:3355
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3356
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3357
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3358
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3362
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-"\n"
-"Kategorijos: "
-
-#: addressbook/backend/ebook/e-card.c:3363
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-"\n"
-"Komentaras: "
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3376
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-"\n"
-"Unikali eilutë: "
-
-#: addressbook/backend/ebook/e-card.c:3379
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-"\n"
-"Vieðas raktas: "
-
-#: addressbook/backend/ebook/e-destination.c:232
-msgid "???"
-msgstr "???"
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:1
-msgid "Factory to import GnomeCard files into Evolution."
-msgstr "Gamykla importuoti GnomeCard byloms á Evolution."
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:2
-msgid "Imports GnomeCard files into Evolution."
-msgstr "Importuoja GnomeCard bylas á Evolution."
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:21
-#: addressbook/backend/ebook/load-pine-addressbook.c:22
-#: addressbook/backend/ebook/test-client-list.c:23
-#: addressbook/backend/ebook/test-client.c:33
-#: addressbook/conduit/address-conduit.c:1092
-#: addressbook/gui/component/addressbook-factory.c:42
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:98 calendar/gui/main.c:57
-msgid "Could not initialize Bonobo"
-msgstr "Negalëjau inicializuoti Bonobo"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr "Nepavyko ákelti þymeklio\n"
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr "EBook neákelta\n"
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr "Negalëjau paleisti wombat serverio"
-
-#: addressbook/conduit/address-conduit.c:655
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr "Negalëjau paleisti wombat"
-
-#: addressbook/conduit/address-conduit.c:687
-#: addressbook/conduit/address-conduit.c:690
-msgid "Could not read pilot's Address application block"
-msgstr "Nepavyko perskaityti piloto Address programos bloko"
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:7
-msgid "Add"
-msgstr "Pridëti"
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr "_Jubiliejus:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr "V_erslo"
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr "Verslo _faksas"
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-msgid "C_ontacts..."
-msgstr "K_ontaktai..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr "Ka_tegorijos..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-msgid "Contact Editor"
-msgstr "Kontakto redaktorius"
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr "Detalës"
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr "Byloje kaip:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-msgid "General"
-msgstr "Paprastas"
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr "Naujas telefono tipas"
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-msgid "No_tes:"
-msgstr "Pas_tabos:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr "Telefonø tipai"
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1284
-msgid "Primary Email"
-msgstr "Pagrindinis el. paðtas"
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr "Nori gauti _HTML laiðkus"
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr "Tinklapio adresas:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:74
-msgid "_Add"
-msgstr "_Pridëti"
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr "_Adresas..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr "_Asistento vardas:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr "_Gimtadienis:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr "_Verslo"
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-msgid "_Company:"
-msgstr "_Kompanija:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/folder-browser.c:639 mail/mail-config.glade.h:75
-#: ui/evolution-event-editor.xml.h:57 ui/evolution-mail.xml.h:98
-#: ui/evolution-task-editor-dialog.xml.h:69
-msgid "_Delete"
-msgstr "_Iðtrinti"
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr "_Departamentas:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr "_Pilnas vardas..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-msgid "_Home"
-msgstr "_Namø"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-msgid "_Job title:"
-msgstr "_Pareigos:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr "_Vadybininko vardas:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-msgid "_Mobile"
-msgstr "_Mobilus"
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr "_Slapyvardis:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr "_Ofisas:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr "_Profesija:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr "S_utuoktinis:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr "_Tai yra paðto adresas"
-
-#: addressbook/contact-editor/e-contact-editor.c:603
-msgid "This contact belongs to these categories:"
-msgstr "Ðis kontaktas priklauso ðioms kategorijoms:"
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-#: addressbook/gui/widgets/e-addressbook-view.c:676
-msgid "Assistant"
-msgstr "Asistento"
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/contact-editor/e-contact-editor.c:1310
-msgid "Business"
-msgstr "Verslo"
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-msgid "Business 2"
-msgstr "Verslo 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#: addressbook/gui/widgets/e-addressbook-view.c:656
-msgid "Business Fax"
-msgstr "Verslo faksas"
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Callback"
-msgstr "Atsakiklis"
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "Car"
-msgstr "Automobilio"
-
-#: addressbook/contact-editor/e-contact-editor.c:1248
-msgid "Company"
-msgstr "Kompanijos"
-
-#: addressbook/contact-editor/e-contact-editor.c:1249
-#: addressbook/contact-editor/e-contact-editor.c:1311
-msgid "Home"
-msgstr "Namø"
-
-#: addressbook/contact-editor/e-contact-editor.c:1250
-msgid "Home 2"
-msgstr "Namø 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1251
-#: addressbook/gui/widgets/e-addressbook-view.c:657
-msgid "Home Fax"
-msgstr "Namø faksas"
-
-#: addressbook/contact-editor/e-contact-editor.c:1252
-#: addressbook/gui/widgets/e-addressbook-view.c:660
-msgid "ISDN"
-msgstr "ISDN"
-
-#: addressbook/contact-editor/e-contact-editor.c:1253
-msgid "Mobile"
-msgstr "Mobilus"
-
-#: addressbook/contact-editor/e-contact-editor.c:1254
-#: addressbook/contact-editor/e-contact-editor.c:1312
-#: mail/mail-config.glade.h:40
-msgid "Other"
-msgstr "Kitas"
-
-#: addressbook/contact-editor/e-contact-editor.c:1255
-#: addressbook/gui/widgets/e-addressbook-view.c:662
-msgid "Other Fax"
-msgstr "Kitas faksas"
-
-#: addressbook/contact-editor/e-contact-editor.c:1256
-#: addressbook/gui/widgets/e-addressbook-view.c:663
-msgid "Pager"
-msgstr "Ieðkas"
-
-#: addressbook/contact-editor/e-contact-editor.c:1257
-msgid "Primary"
-msgstr "Pagrindinis"
-
-#: addressbook/contact-editor/e-contact-editor.c:1258
-#: addressbook/gui/widgets/e-addressbook-view.c:664
-msgid "Radio"
-msgstr "Radio"
-
-#: addressbook/contact-editor/e-contact-editor.c:1259
-#: addressbook/gui/widgets/e-addressbook-view.c:665
-msgid "Telex"
-msgstr "Teleksas"
-
-#: addressbook/contact-editor/e-contact-editor.c:1260
-msgid "TTY/TDD"
-msgstr "TTY/TDD"
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:668
-msgid "Email 2"
-msgstr "El. paðtas 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/gui/widgets/e-addressbook-view.c:669
-msgid "Email 3"
-msgstr "El. paðtas 3"
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-msgid "Delete Contact?"
-msgstr "Iðtrinti kontaktà?"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:233
-msgid "Contact Quick-Add"
-msgstr "Kontakto greitas pridëjimas"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:235
-msgid "Edit Full"
-msgstr "Redaguoti visà"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:276
-#: addressbook/gui/widgets/e-addressbook-view.c:643
-msgid "Full Name"
-msgstr "Pilnas vardas"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:282
-msgid "E-mail"
-msgstr "El. paðtas"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr "Adresas _2:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr "Kanada"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr "Patikrinti adresà"
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr "Valst_ybë:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr "Suomija"
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr "JAV"
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr "_Adresas:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-msgid "_City:"
-msgstr "_Miestas:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr "_PO Box:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr "_Valstija/Provincija:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr "_ZIP/Paðto kodas:"
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr "Tikrinti pilnà vardà"
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr "Dr."
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:4
-msgid "I"
-msgstr "I"
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr "II"
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr "III"
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:8
-msgid "Miss"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr "_Vardas:"
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr "_Pavardë:"
-
-#: addressbook/contact-editor/fullname.glade.h:15
-msgid "_Middle:"
-msgstr "Vi_durinis:"
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr "_Galûnë:"
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr "_Titulas:"
-
-#: addressbook/gui/component/addressbook.c:241
-msgid "As _Minicards"
-msgstr "Rodyti _maþas korteles"
-
-#: addressbook/gui/component/addressbook.c:247
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr "Rodyti _lentelæ"
-
-#: addressbook/gui/component/addressbook.c:407
-#, c-format
-msgid "Enter password for %s"
-msgstr "Ávesk %s slaptaþodá"
-
-#: addressbook/gui/component/addressbook.c:435
-msgid "Unable to open addressbook"
-msgstr "Negaliu atidaryti adresø knygelës"
-
-#: addressbook/gui/component/addressbook.c:440
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or have tried\n"
-"to access an LDAP server and don't have LDAP support\n"
-"compiled in. If you've entered a URI, check the URI for\n"
-"correctness and reenter. If not, you probably have\n"
-"attempted to access an LDAP server. If you wish to be\n"
-"able to use LDAP, you'll need to download and install\n"
-"OpenLDAP and recompile and install Evolution.\n"
-msgstr ""
-"Mes negalëjome atidaryti ðios adresø knygelës. Tai\n"
-"reiðkia arba tai, kad tu ávedei neteisingà URI, arba \n"
-"bandei prieiti prie LDAP serverio, bet neturi \n"
-"ákompiliuoto LDAP palaikymo. Jei tu ávedei URI, \n"
-"pasitikrink URI teisingumà ir ávesk ið naujo. Jei ne, \n"
-"tikriausiai bandei prieiti prie LDAP serverio. Jei nori\n"
-"naudoti LDAP, tu turi parsisiøsti ir ádiegti OpenLDAP,\n"
-"o tada perkompiliuoti ir ádiegti Evolution.\n"
-
-#: addressbook/gui/component/addressbook.c:563
-msgid "Show All"
-msgstr "Rodyti visus"
-
-#: addressbook/gui/component/addressbook.c:565
-msgid "Advanced..."
-msgstr "Iðsami..."
-
-#: addressbook/gui/component/addressbook.c:595 calendar/gui/gnome-cal.c:236
-msgid "Any field contains"
-msgstr "Bet kuriame lauke yra"
-
-#: addressbook/gui/component/addressbook.c:596
-msgid "Name contains"
-msgstr "Varde yra"
-
-#: addressbook/gui/component/addressbook.c:597
-msgid "Email contains"
-msgstr "El. paðte yra"
-
-#: addressbook/gui/component/addressbook.c:740
-msgid "The URI that the Folder Browser will display"
-msgstr "URI, kurá rodys Aplankø narðyklë"
-
-#: addressbook/gui/component/addressbook-config.c:148
-msgid "LDAP Server"
-msgstr "LDAP serveris"
-
-#: addressbook/gui/component/addressbook-config.c:150
-msgid "File"
-msgstr "Byla"
-
-#: addressbook/gui/component/addressbook-config.c:153
-msgid "Unknown addressbook type"
-msgstr "Neþinomas adresø knygelës tipas"
-
-#: addressbook/gui/component/addressbook-config.c:163
-msgid "None (anonymous mode)"
-msgstr "Jokio (anoniminis reþimas)"
-
-#: addressbook/gui/component/addressbook-config.c:165
-#: camel/camel-sasl-plain.c:32 camel/providers/imap/camel-imap-provider.c:80
-#: camel/providers/nntp/camel-nntp-store.c:291
-#: camel/providers/pop3/camel-pop3-provider.c:67 mail/mail-config.glade.h:43
-msgid "Password"
-msgstr "Slaptaþodis"
-
-#: addressbook/gui/component/addressbook-config.c:167
-msgid "SASL"
-msgstr "SASL"
-
-#: addressbook/gui/component/addressbook-config.c:170
-msgid "Unknown auth type"
-msgstr "Neþinomas auth tipas"
-
-#: addressbook/gui/component/addressbook-config.c:179
-msgid "Base"
-msgstr "Pagrindas"
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "One"
-msgstr "Vienas"
-
-#: addressbook/gui/component/addressbook-config.c:183
-msgid "Subtree"
-msgstr "Submedis"
-
-#: addressbook/gui/component/addressbook-config.c:186
-msgid "Unknown scope type"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:353
-msgid "Bind DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:354
-msgid "FIXME Bind DN Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:356
-#: mail/mail-config.glade.h:50
-msgid "Remember this password"
-msgstr "Prisiminti ðá slaptaþodá"
-
-#: addressbook/gui/component/addressbook-config.c:406
-#: mail/mail-config.glade.h:28
-msgid "Host:"
-msgstr "Hostas:"
-
-#: addressbook/gui/component/addressbook-config.c:407
-msgid "FIXME Host help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:409
-msgid "Port:"
-msgstr "Prievadas:"
-
-#: addressbook/gui/component/addressbook-config.c:410
-msgid "FIXME Port help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:414
-msgid "Root DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:415
-msgid "FIXME Root DN help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:435
-msgid "Search Scope:"
-msgstr "Paieðkos sritis:"
-
-#: addressbook/gui/component/addressbook-config.c:489
-msgid "Authentication:"
-msgstr "Autentikacija:"
-
-#: addressbook/gui/component/addressbook-config.c:507
-#: mail/mail-config.glade.h:44
-msgid "Path:"
-msgstr "Kelias:"
-
-#: addressbook/gui/component/addressbook-config.c:508
-msgid "FIXME Path Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:513
-msgid "Create path if it doesn't exist."
-msgstr "Sukurti kelià jei jis neegzistuoja."
-
-#: addressbook/gui/component/addressbook-config.c:647
-msgid "Edit Addressbook"
-msgstr "Redaguoti adresø knygelæ"
-
-#: addressbook/gui/component/addressbook-config.c:649
-msgid "Add Addressbook"
-msgstr "Pridëti adresø knygelæ"
-
-#: addressbook/gui/component/addressbook-config.c:665
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-"Pasirink tavo turimos adresø knygelës tipà, ir ávesk reikiamà informacijà "
-"apie jà."
-
-#: addressbook/gui/component/addressbook-config.c:671
-#: mail/mail-config.glade.h:35
-msgid "Name:"
-msgstr "Vardas:"
-
-#: addressbook/gui/component/addressbook-config.c:672
-msgid "FIXME Name help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:674
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr "Apraðymas:"
-
-#: addressbook/gui/component/addressbook-config.c:675
-msgid "FIXME Description help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-msgid "Addressbook Sources"
-msgstr "Adresø knygelës ðaltinis"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: addressbook/gui/widgets/e-addressbook-view.c:578
-#: addressbook/gui/widgets/e-minicard.c:673
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:11 mail/mail-config.glade.h:19
-#: mail/message-browser.c:203 ui/evolution-addressbook.xml.h:3
-#: ui/evolution-event-editor.xml.h:17 ui/evolution-mail.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr "Iðtrinti"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:23
-msgid "Edit"
-msgstr "Keisti"
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-msgid "Name"
-msgstr "Vardas"
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-msgid "URI"
-msgstr "URI"
-
-#: addressbook/gui/component/addressbook-storage.c:99
-msgid "Other Contacts"
-msgstr "Kiti kontaktai"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Disable Queries"
-msgstr "Uþdrausti uþklausas"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Enable Queries (Dangerous!)"
-msgstr "Leisti uþklausas (Pavojinga!)"
-
-#: addressbook/gui/component/e-address-widget.c:388
-#: addressbook/gui/component/select-names/e-select-names-popup.c:210
-msgid "Edit Contact Info"
-msgstr "Keisti kontakto informacijà"
-
-#: addressbook/gui/component/e-address-widget.c:424
-#: addressbook/gui/component/select-names/e-select-names-popup.c:269
-msgid "Add to Contacts"
-msgstr "Pridëti prie kontaktø"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-msgid "A Bonobo control for an address popup."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A Bonobo control for displaying an address."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-#, fuzzy
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr "Evolution adresø knygelës konduito konfigûravimo árankis\n"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-msgid "Evolution Addressbook minicard viewer"
-msgstr "Evolution adresø knygelës maþø korteliø vaizduoklë"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-msgid "Evolution component for handling contacts."
-msgstr "Evolution kontaktø tvarkymo komponentas."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-msgid "Factory for the Addressbook Minicard control"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-msgid "Factory for the Addressbook's address displayer"
-msgstr "Adresø knygelës adreso vaizduoklës gamykla"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-#, fuzzy
-msgid "Factory for the Addressbook's address popup"
-msgstr "Adresø knygelës adreso ???? gamykla"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:10
-msgid "Factory for the Evolution addressbook component."
-msgstr "Evolution adresø knygelës komponento gamykla."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:11
-#, fuzzy
-msgid "Factory for the sample Addressbook control"
-msgstr "Paspausk èia, jei reikia adresø knygelës"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:131
-#: composer/e-msg-composer-attachment-bar.c:468 filter/filter-filter.c:401
-#: filter/filter-rule.c:549 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:265 shell/e-shortcuts-view.c:388
-msgid "Remove"
-msgstr "Paðalinti"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:146
-msgid "Remove All"
-msgstr "Paðalinti visus"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-msgid "Evolution's addressbook name selection interface."
-msgstr "Evolution adresø knygelës vardø pasirinkimo sàsaja."
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr "Adresø knygelës vardø pasirinkimo sàsajos gamykla"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr "Rasti..."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-msgid "Message Recipients"
-msgstr "Laiðko gavëjai"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-msgid "Select Names"
-msgstr "Pasirink vardus"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-msgid "Select name from:"
-msgstr "Pasirink vardà ið:"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:158
-msgid "Search"
-msgstr "Paieðka"
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr "123"
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr "a"
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr "b"
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr "c"
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr "d"
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr "e"
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr "f"
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr "g"
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr "h"
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr "i"
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr "j"
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr "k"
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr "l"
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr "m"
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr "n"
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-msgid "o"
-msgstr "o"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr "p"
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr "q"
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-msgid "r"
-msgstr "r"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr "s"
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr "t"
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr "u"
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr "v"
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr "w"
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr "x"
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr "y"
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr "z"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:513
-#: addressbook/gui/widgets/e-addressbook-view.c:573
-#: addressbook/gui/widgets/e-minicard.c:466
-#: addressbook/gui/widgets/e-minicard.c:668
-msgid "Save as VCard"
-msgstr "Iðsaugoti kaip vCard"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:574
-#: addressbook/gui/widgets/e-minicard.c:669
-msgid "Send contact to other"
-msgstr "Siøsti kontaktà kitam"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:575
-#: addressbook/gui/widgets/e-minicard.c:670
-msgid "Send message to contact"
-msgstr "Siøsti laiðkà kontaktui"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:576
-#: addressbook/gui/widgets/e-minicard.c:671 mail/message-browser.c:200
-#: ui/evolution-addressbook.xml.h:9 ui/evolution-calendar.xml.h:23
-#: ui/evolution-mail.xml.h:55 ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr "Spausdinti"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:577
-#: addressbook/gui/widgets/e-minicard.c:672
-msgid "Print Envelope"
-msgstr "Spausdinti vokà"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:641
-msgid "* Click here to add a contact *"
-msgstr "* Spausk èia, kad pridëtum kontaktà *"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:642
-msgid "File As"
-msgstr "Byloje kaip"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:644
-msgid "Email"
-msgstr "El. paðtas"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:645
-msgid "Primary Phone"
-msgstr "Pagrindinis telefonas"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:646
-msgid "Assistant Phone"
-msgstr "Asistento telefonas"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:647
-msgid "Business Phone"
-msgstr "Verslo telefonas"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:648
-msgid "Callback Phone"
-msgstr "Atsakiklio telefonas"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:649
-msgid "Company Phone"
-msgstr "Kompanijos telefonas"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:650
-msgid "Home Phone"
-msgstr "Namø telefonas"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:651
-msgid "Organization"
-msgstr "Organizacija"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:652
-msgid "Business Address"
-msgstr "Verslo adresas"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:653
-msgid "Home Address"
-msgstr "Namø adresas"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:654
-msgid "Mobile Phone"
-msgstr "Mobilus telefonas"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:655
-msgid "Car Phone"
-msgstr "Automobilio telefonas"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:658
-msgid "Business Phone 2"
-msgstr "Verslo telefonas 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:659
-msgid "Home Phone 2"
-msgstr "Namø telefonas 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:661
-msgid "Other Phone"
-msgstr "Kitas telefonas"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:666
-msgid "TTY"
-msgstr "TTY"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:667
-msgid "Other Address"
-msgstr "Kitas adresas"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:670
-msgid "Web Site"
-msgstr "Tinklapis"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:671
-msgid "Department"
-msgstr "Departamentas"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:672
-msgid "Office"
-msgstr "Ofisas"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:673
-msgid "Title"
-msgstr "Titulas"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:674
-msgid "Profession"
-msgstr "Profesija"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:675
-msgid "Manager"
-msgstr "Vadybininkas"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:677
-msgid "Nickname"
-msgstr "Pravardë"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:678
-msgid "Spouse"
-msgstr "Sutuoktinis"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:679
-msgid "Note"
-msgstr "Pastaba"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:680
-msgid "Free-busy URL"
-msgstr "Laisvas-uþsiëmæs URL"
-
-#: addressbook/gui/widgets/e-minicard-control.c:282
-msgid "Save in addressbook"
-msgstr "Iðsaugoti á adresø knygelæ"
-
-#: addressbook/gui/widgets/e-minicard-view.c:166
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-"\n"
-"\n"
-"Ðiame vaizde nëra nieko, kà bûtø galima parodyti.\n"
-"\n"
-"Dukart spragtelëk, kad sukurtum naujà Kontaktà."
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:26
-msgid "Card View"
-msgstr "Korteliø vaizdas"
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr "10 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr "8 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:3
-#, fuzzy
-msgid "Blank forms at end:"
-msgstr "Tuðèios formos gale:"
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr "Tekstas"
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr "Apaèioje:"
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr "Iðmatavimai:"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr "Ðriftas..."
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr "Ðriftai"
-
-#: addressbook/printing/e-contact-print.glade.h:9
-msgid "Footer:"
-msgstr "Poraðtë:"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr "Formatas"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-msgid "Header"
-msgstr "Antraðtë"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr "Antraðtë/Poraðtë"
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr "Antraðtës"
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr "Antraðtës kiekvienam laiðkui"
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr "Aukðtis:"
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr "Seka iðkart vienas po kito"
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr "Átraukti:"
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr "Gulsèias lapas"
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr "Kairëje:"
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr "Laiðkø kortelës ðone"
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr "Paraðtës"
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr "Stulpeliø skaièius:"
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr "Parinktys"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr "Orientacija"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr "Puslapis"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-msgid "Page Setup:"
-msgstr "Puslapio nuostatos:"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr "Popierius"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr "Popieriaus ðaltinis:"
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr "Staèias lapas"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr "Perþiûra:"
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr "Spausdinti naudojant pilkus pustonius"
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr "Apversti lyginiuose puslapiuose"
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr "Deðinëje:"
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr "Skyriai:"
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr "Pustoniai"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-msgid "Size:"
-msgstr "Dydis:"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr "Prasideda naujame puslapyje"
-
-#: addressbook/printing/e-contact-print.glade.h:38
-msgid "Style name:"
-msgstr "Stiliaus vardas:"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr "Virðuje:"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-msgid "Type:"
-msgstr "Tipas:"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr "Plotis:"
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr "Ávyko klaida, bendraujant su kalendoriaus serveriu"
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr "Nepavyko perskaityti piloto Calendar programos bloko"
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr "Negalëjau perskaityti piloto ToDo programos bloko"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr "Priminti man apie ávyká "
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-msgid "Snooze"
-msgstr "Uþtildyti"
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr "Gerai"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr ""
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-msgid "Factory for the alarm notification service"
-msgstr ""
-
-#: calendar/gui/alarm-notify/notify-main.c:56
-#, c-format
-msgid ""
-"It is %s. The Unix time is %ld right now. We just thought you may like to "
-"know."
-msgstr ""
-
-#: calendar/gui/alarm-notify/notify-main.c:93 calendar/gui/main.c:52
-msgid "Could not initialize GNOME"
-msgstr "Negalëjau inicializuoti GNOME"
-
-#: calendar/gui/alarm-notify/notify-main.c:108
-#, fuzzy
-msgid "Could not create the alarm notify service factory"
-msgstr "Negalëjau sukurti laikino katalogo: %s"
-
-#: calendar/gui/calendar-commands.c:266
-msgid "File not found"
-msgstr "Byla nerasta"
-
-#: calendar/gui/calendar-commands.c:290
-msgid "Open calendar"
-msgstr "Atidaryti kalendoriø"
-
-#: calendar/gui/calendar-commands.c:332
-msgid "Save calendar"
-msgstr "Iðsaugoti kalendoriø"
-
-#: calendar/gui/calendar-commands.c:468
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-"Negalëjau sukurti kalendoriaus rodinio. Patikrink, ar gerai ádiegti ORBit ir "
-"OAF."
-
-#: calendar/gui/calendar-model.c:360 calendar/gui/calendar-model.c:898
-#: calendar/gui/e-calendar-table.c:330
-msgid "Public"
-msgstr "Vieðas"
-
-#: calendar/gui/calendar-model.c:363 calendar/gui/calendar-model.c:900
-#: calendar/gui/e-calendar-table.c:331
-msgid "Private"
-msgstr "Asmeniðkas"
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:902
-#: calendar/gui/e-calendar-table.c:332
-msgid "Confidential"
-msgstr "Slaptas"
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/event-editor.c:1606
-#: calendar/gui/event-editor.c:1633
-#: camel/providers/smtp/camel-smtp-transport.c:218
-msgid "Unknown"
-msgstr "Neþinomas"
-
-#: calendar/gui/calendar-model.c:457
-msgid "N"
-msgstr "Ð"
-
-#: calendar/gui/calendar-model.c:457
-msgid "S"
-msgstr "P"
-
-#: calendar/gui/calendar-model.c:459
-msgid "E"
-msgstr "R"
-
-#: calendar/gui/calendar-model.c:459
-msgid "W"
-msgstr "V"
-
-#: calendar/gui/calendar-model.c:497 calendar/gui/calendar-model.c:1066
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:352 mail/message-list.c:691
-msgid "High"
-msgstr "Aukðtas"
-
-#: calendar/gui/calendar-model.c:499 calendar/gui/calendar-model.c:1068
-#: calendar/gui/calendar-model.c:1574
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:353 mail/message-list.c:690
-msgid "Normal"
-msgstr "Normalus"
-
-#: calendar/gui/calendar-model.c:501 calendar/gui/calendar-model.c:1070
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:354 mail/message-list.c:689
-msgid "Low"
-msgstr "Þemas"
-
-#: calendar/gui/calendar-model.c:537 calendar/gui/calendar-model.c:1122
-#: calendar/gui/e-calendar-table.c:406
-msgid "Transparent"
-msgstr "Skaidrus"
-
-#: calendar/gui/calendar-model.c:540 calendar/gui/calendar-model.c:1124
-#: calendar/gui/e-calendar-table.c:405
-msgid "Opaque"
-msgstr "Neskaidrus"
-
-#: calendar/gui/calendar-model.c:638 calendar/gui/calendar-model.c:1176
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:426
-msgid "Not Started"
-msgstr "Nepradëta"
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1178
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:427
-msgid "In Progress"
-msgstr "Vykdoma"
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1180
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:428
-msgid "Completed"
-msgstr "Uþbaigta"
-
-#: calendar/gui/calendar-model.c:647 calendar/gui/calendar-model.c:1182
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:429 camel/camel-service.c:544
-#: camel/camel-service.c:580
-msgid "Cancelled"
-msgstr "Nutraukta"
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:794 e-util/e-time-utils.c:278
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr "%a %Y-%m-%d %H:%M:%S"
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:797 e-util/e-time-utils.c:287
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr "%a %Y-%m-%d %I:%M:%S %p"
-
-#: calendar/gui/calendar-model.c:802
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-"Data turi bûti ávesta formatu:\n"
-"\n"
-"%s"
-
-#: calendar/gui/calendar-model.c:882
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr "Klasifikacija turi bûti ¥Vieðas´, ¥Asmeniðkas´, ¥Slaptas´ arba ¥Joks´"
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:896 calendar/gui/calendar-model.c:1120
-#: calendar/gui/calendar-model.c:1174 calendar/gui/e-calendar-table.c:329
-#: calendar/gui/e-calendar-table.c:404 mail/mail-account-gui.c:973
-#: mail/mail-accounts.c:120 mail/mail-accounts.c:164
-#: mail/mail-config.glade.h:37 shell/e-shell-view.c:1198
-#: widgets/misc/e-cell-date-edit.c:237 widgets/misc/e-dateedit.c:432
-#: widgets/misc/e-dateedit.c:1341 widgets/misc/e-dateedit.c:1456
-msgid "None"
-msgstr "Joks"
-
-#: calendar/gui/calendar-model.c:970
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-"Geografinë vietovë turi bûti ávesta formatu:\n"
-"\n"
-"45.436845,125.862501"
-
-#: calendar/gui/calendar-model.c:1010
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr "Procentinë reikðmë turi bûti tarp 0 ir 100 imtinai"
-
-#: calendar/gui/calendar-model.c:1051
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr ""
-"Prioritetas turi bûti ¥Aukðtas´, ¥Normalus´, ¥Þemas´ arba ¥Neapibrëþtas´."
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1064
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:355
-msgid "Undefined"
-msgstr "Neapibrëþtas"
-
-#: calendar/gui/calendar-model.c:1105
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr "Skaidrumas turi bûti ¥Skaidrus´, ¥Neskaidrus´ arba ¥Joks´"
-
-#: calendar/gui/calendar-model.c:1576
-#, fuzzy
-msgid "Recurring"
-msgstr "Pasikartojimas"
-
-#: calendar/gui/calendar-model.c:1578
-msgid "Assigned"
-msgstr "Priskirtas"
-
-#: calendar/gui/calendar-model.c:1584
-msgid "Yes"
-msgstr "Taip"
-
-#: calendar/gui/calendar-model.c:1584
-msgid "No"
-msgstr "Ne"
-
-#: calendar/gui/calendar-summary.c:198
-msgid "%A, %e %B %Y"
-msgstr "%A, %Y m. %B %e d."
-
-#: calendar/gui/calendar-summary.c:207
-msgid "Appointments"
-msgstr "Ávykiai"
-
-#: calendar/gui/calendar-summary.c:245 calendar/gui/calendar-summary.c:251
-msgid "%I:%M%p"
-msgstr "%H:%M"
-
-#: calendar/gui/calendar-summary.c:275 calendar/gui/print.c:948
-#: views/tasks/galview.xml.h:1
-msgid "Tasks"
-msgstr "Uþduotys"
-
-#: calendar/gui/calendar-summary.c:443
-msgid "<b>Error loading calendar</b>"
-msgstr "<b>Klaida ákeliant kalendoriø</b>"
-
-#: calendar/gui/calendar-summary.c:455
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr "<b>Klaida ákeliant kalendoriø:</b>Metodas nepalaikomas"
-
-#: calendar/gui/calendar-summary.c:622
-msgid "Display"
-msgstr "Vaizdavimas"
-
-#: calendar/gui/calendar-summary.c:627
-msgid "Show appointments"
-msgstr "Rodyti ávykius"
-
-#: calendar/gui/calendar-summary.c:635
-msgid "Show tasks"
-msgstr "Rodyti uþduotis"
-
-#: calendar/gui/calendar-summary.c:690
-msgid "Things to do"
-msgstr "Kà reikia nuveikti"
-
-#: calendar/gui/calendar-summary.c:721 calendar/gui/e-itip-control.glade.h:7
-msgid "Loading Calendar"
-msgstr "Ákeliamas kalendorius"
-
-#: calendar/gui/control-factory.c:126
-msgid "The URI that the calendar will display"
-msgstr "URI, kurá rodys kalendorius"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:189
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr "Perspëjimas bus %A, %Y %b %d, %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:196
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr "Praneðimas apie tavo ávyká %A, %Y %b %d, %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:207
-msgid "No summary available."
-msgstr "Nëra jokios apþvalgos."
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:2
-msgid "Close"
-msgstr "Uþdaryti"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-msgid "Edit appointment"
-msgstr "Keisti ávyká"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr "Uþtildymo laikas (minutëmis)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr "05 minutës"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr "10 minuèiø"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr "12 valandø (am/pm)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr "15 minuèiø"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr "24 valandø"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr "30 minuèiø"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr "60 minuèiø"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr "Perspëjimai baigiasi po"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr "Perspëjimai garsu"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr "Pyptelëti, kai atsiranda aliarmo langai."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-msgid "Calendar"
-msgstr "Kalendorius"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr "Kalendoriaus nuostatos"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "Spalvos"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr "Suspausti savaitgalius"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr "Datø navigatorius parinktys"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-msgid "Defaults"
-msgstr "Áprastai"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr "Vaizdavimo parinktys"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:162
-msgid "Due Date"
-msgstr "Kada reikia"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr "Leisti uþtildymà"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr "Dienos pabaiga:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr "Pirma savaitës diena:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr "Pen"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:484
-msgid "Friday"
-msgstr "Penktadienis"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr "Paryðkinti"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr "Ðiandienos ávykius"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr "Ðiandienos ávykiai:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr "Ávykius, kurie dar ne ðiandien"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr "Ávykiai, kurie dar ne ðiandien:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr "Pir"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:480
-msgid "Monday"
-msgstr "Pirmadienis"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr "Praëjusius ávykius"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr "Praëjæ ávykiai:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:45
-msgid "Pick a color"
-msgstr "Pasirink spalvà"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:165
-msgid "Priority"
-msgstr "Svarbumas"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-msgid "Remind me of all appointments"
-msgstr "Priminti man apie visus ávykius"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-msgid "Reminders"
-msgstr "Priminimas"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr "Ðeð"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:485
-msgid "Saturday"
-msgstr "Ðeðtadienis"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr "Rodyti"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-msgid "Show appointment end times"
-msgstr "Rodyti ávykiø pabaigos laikus"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr "Rodyti savaièiø numerius"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr "Dienos pradþia:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr "Sek"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:486
-msgid "Sunday"
-msgstr "Sekmadienis"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-msgid "TaskPad"
-msgstr "Uþduotys"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr "Ket"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:483
-msgid "Thursday"
-msgstr "Ketvirtadienis"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr "Likæs laikas"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr "Laiko dalijimas:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr "Laiko formatas:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr "Ant"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:481
-msgid "Tuesday"
-msgstr "Antradienis"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr "Perspëjimai vaizdu"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr "Tre"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:482
-msgid "Wednesday"
-msgstr "Treèiadienis"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr "Darbo savaitë"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr "minutes prieð jiems ávykstant."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:78
-msgid "seconds."
-msgstr "sekundþiø."
-
-#: calendar/gui/dialogs/delete-comp.c:70
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr "Ar tu tikrai nori iðtrinti ávyká ¥%s´?"
-
-#: calendar/gui/dialogs/delete-comp.c:73
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr "Ar tu tikrai nori iðtrinti ðá bevardá ávyká?"
-
-#: calendar/gui/dialogs/delete-comp.c:79
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr "Ar tu tikrai nori iðtrinti uþduotá ¥%s´?"
-
-#: calendar/gui/dialogs/delete-comp.c:82
-msgid "Are you sure you want to delete this untitled task?"
-msgstr "Ar tu tikrai nori iðtrinti ðià bevardæ uþduotá?"
-
-#: calendar/gui/dialogs/delete-comp.c:88
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr "Ar tu tikrai nori iðtrinti þurnalo áraðà ¥%s´?"
-
-#: calendar/gui/dialogs/delete-comp.c:91
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr "Ar tu tikrai nori iðtrinti ðá bevardá þurnalo áraðà?"
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr "Ar nori iðsaugoti pakeitimus?"
-
-#: calendar/gui/dialogs/task-editor.c:707
-msgid "Edit Task"
-msgstr "Keisti uþduotá"
-
-#: calendar/gui/dialogs/task-editor.c:713 calendar/gui/event-editor.c:382
-msgid "No summary"
-msgstr "Nëra apþvalgos"
-
-#: calendar/gui/dialogs/task-editor.c:719 calendar/gui/event-editor.c:388
-#, c-format
-msgid "Appointment - %s"
-msgstr "Ávykis -- %s"
-
-#: calendar/gui/dialogs/task-editor.c:722 calendar/gui/event-editor.c:391
-#, c-format
-msgid "Task - %s"
-msgstr "Uþduotis -- %s"
-
-#: calendar/gui/dialogs/task-editor.c:725 calendar/gui/event-editor.c:394
-#, c-format
-msgid "Journal entry - %s"
-msgstr "Þurnalo áraðas -- %s"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr "% uþ_baigta:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:158
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr "Klasifikacija"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-msgid "Date & Time"
-msgstr "Data ir laikas"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr "Uþbaigimo data:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-msgid "Pri_vate"
-msgstr "As_meniðkas"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-msgid "Progress"
-msgstr "Paþanga"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr "_Vieðas"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-msgid "Sta_rt Date:"
-msgstr "P_radþios data:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-msgid "Su_mmary:"
-msgstr "Sa_ntrauka:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr "Uþduotis"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-msgid "URL:"
-msgstr "URL:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr "_Slaptas"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Contacts..."
-msgstr "_Kontaktai..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-msgid "_Due Date:"
-msgstr "_Kada reikia:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-msgid "_Priority:"
-msgstr "_Svarbumas:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "_Status:"
-msgstr "_Bûsena:"
-
-#: calendar/gui/e-calendar-table.c:157
-msgid "Categories"
-msgstr "Kategorijos"
-
-#: calendar/gui/e-calendar-table.c:159
-msgid "Completion Date"
-msgstr "Uþbaigimo data"
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "End Date"
-msgstr "Pabaigos data"
-
-#: calendar/gui/e-calendar-table.c:161
-msgid "Start Date"
-msgstr "Pradþios data"
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Geographical Position"
-msgstr "Geografinë vietovë"
-
-#: calendar/gui/e-calendar-table.c:164
-msgid "Percent complete"
-msgstr "Procentø uþbaigta"
-
-#: calendar/gui/e-calendar-table.c:166
-msgid "Summary"
-msgstr "Apþvalga"
-
-#: calendar/gui/e-calendar-table.c:167
-msgid "Transparency"
-msgstr "Skaidrumas"
-
-#: calendar/gui/e-calendar-table.c:168
-msgid "URL"
-msgstr "URL"
-
-#: calendar/gui/e-calendar-table.c:169
-msgid "Alarms"
-msgstr "Perspëjimai"
-
-#: calendar/gui/e-calendar-table.c:170
-msgid "Click here to add a task"
-msgstr "Spausk èia, kad pridëtum uþduotá"
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "0%"
-msgstr "0%"
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "10%"
-msgstr "10%"
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "20%"
-msgstr "20%"
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "30%"
-msgstr "30%"
-
-#: calendar/gui/e-calendar-table.c:378
-#, c-format
-msgid "40%"
-msgstr "40%"
-
-#: calendar/gui/e-calendar-table.c:379
-#, c-format
-msgid "50%"
-msgstr "50%"
-
-#: calendar/gui/e-calendar-table.c:380
-#, c-format
-msgid "60%"
-msgstr "60%"
-
-#: calendar/gui/e-calendar-table.c:381
-#, c-format
-msgid "70%"
-msgstr "70%"
-
-#: calendar/gui/e-calendar-table.c:382
-#, c-format
-msgid "80%"
-msgstr "80%"
-
-#: calendar/gui/e-calendar-table.c:383
-#, c-format
-msgid "90%"
-msgstr "90%"
-
-#: calendar/gui/e-calendar-table.c:384
-#, c-format
-msgid "100%"
-msgstr "100%"
-
-#: calendar/gui/e-calendar-table.c:551
-msgid "Mark Complete"
-msgstr "Paþymëti uþbaigta"
-
-#: calendar/gui/e-calendar-table.c:552
-msgid "Mark the task complete"
-msgstr "Paþymëti, jog uþduotis uþbaigta"
-
-#: calendar/gui/e-calendar-table.c:557
-msgid "Edit this task..."
-msgstr "Keisti ðià uþduotá..."
-
-#: calendar/gui/e-calendar-table.c:558
-msgid "Edit the task"
-msgstr "Keisti ðià uþduotá"
-
-#: calendar/gui/e-calendar-table.c:560
-#: ui/evolution-task-editor-dialog.xml.h:19
-msgid "Delete this task"
-msgstr "Iðtrinti ðià uþduotá"
-
-#: calendar/gui/e-calendar-table.c:561
-msgid "Delete the task"
-msgstr "Iðtrinti uþduotá"
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:570 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:617
-msgid "am"
-msgstr "am"
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:573 calendar/gui/e-week-view.c:303
-#: calendar/gui/print.c:616
-msgid "pm"
-msgstr "pm"
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:274 calendar/gui/e-day-view.c:1294
-#: calendar/gui/e-week-view-main-item.c:325
-msgid "%A %d %B"
-msgstr "%A, %B %e"
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:278 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:334
-msgid "%a %d %b"
-msgstr "%a, %b %d"
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:282 calendar/gui/e-day-view.c:1321
-#: calendar/gui/e-week-view-main-item.c:348
-msgid "%d %b"
-msgstr "%b %d"
-
-#: calendar/gui/e-day-view.c:3146 ui/evolution-calendar.xml.h:16
-msgid "New Appointment"
-msgstr "Naujas ávykis"
-
-#: calendar/gui/e-day-view.c:3148 calendar/gui/e-week-view.c:3280
-msgid "New All Day Event"
-msgstr "Naujas visos dienos ávykis"
-
-#: calendar/gui/e-day-view.c:3153 calendar/gui/e-week-view.c:3285
-msgid "Go to Today"
-msgstr "Eiti á ðiandienà"
-
-#: calendar/gui/e-day-view.c:3155 calendar/gui/e-week-view.c:3287
-msgid "Go to Date..."
-msgstr "Eiti á datà..."
-
-#: calendar/gui/e-day-view.c:3162 calendar/gui/e-week-view.c:3293
-#: ui/evolution-calendar.xml.h:19 ui/evolution-message-composer.xml.h:10
-msgid "Open"
-msgstr "Atidaryti"
-
-#: calendar/gui/e-day-view.c:3164 calendar/gui/e-week-view.c:3295
-msgid "Delete this Appointment"
-msgstr "Iðtrinti ðá ávyká"
-
-#: calendar/gui/e-day-view.c:3166 calendar/gui/e-week-view.c:3297
-#: ui/evolution-event-editor.xml.h:45
-msgid "Schedule Meeting"
-msgstr "Áraðyti susitikimà á dienotvarkæ"
-
-#: calendar/gui/e-day-view.c:3175 calendar/gui/e-week-view.c:3310
-msgid "Make this Occurrence Movable"
-msgstr "Leisti perkelti ðá pasitaikymà"
-
-#: calendar/gui/e-day-view.c:3177 calendar/gui/e-week-view.c:3312
-msgid "Delete this Occurrence"
-msgstr "Iðtrinti ðá pasitaikymà"
-
-#: calendar/gui/e-day-view.c:3179
-msgid "Delete all Occurrences"
-msgstr "Iðtrinti visus pasitaikymus"
-
-#: calendar/gui/e-day-view-time-item.c:519
-#, c-format
-msgid "%02i minute divisions"
-msgstr "%02i minuèiø padalos"
-
-#: calendar/gui/e-itip-control.c:161
-msgid "I couldn't update your calendar file!\n"
-msgstr "Að negalëjau atnaujinti tavo kalendoriaus bylos!\n"
-
-#: calendar/gui/e-itip-control.c:167 calendar/gui/e-itip-control.c:510
-msgid "Component successfully updated."
-msgstr "Komponentas sëkmingai atnaujintas."
-
-#: calendar/gui/e-itip-control.c:173
-msgid "There was an error loading the calendar file."
-msgstr "Buvo klaida ákeliant kalendoriaus bylà."
-
-#: calendar/gui/e-itip-control.c:197
-msgid "I couldn't open your calendar file!\n"
-msgstr "Að negalëjau atidaryti tavo kalendoriaus bylos!\n"
-
-#: calendar/gui/e-itip-control.c:458 calendar/gui/e-itip-control.c:529
-msgid "I couldn't load your calendar file!\n"
-msgstr "Að negalëjau ákelti tavo kalendoriaus bylos!\n"
-
-#: calendar/gui/e-itip-control.c:470
-msgid "I couldn't read your calendar file!\n"
-msgstr "Að negalëjau skaityti tavo kalendoriaus bylos!\n"
-
-#: calendar/gui/e-itip-control.c:483
-msgid "This is a reply from someone who was uninvited!"
-msgstr "Tai atsakymas ið kaþko, kas nebuvo pakviestas!"
-
-#: calendar/gui/e-itip-control.c:499
-msgid "I couldn't update your calendar store."
-msgstr "Negalëjau atnaujinti kalendoriaus saugyklos."
-
-#: calendar/gui/e-itip-control.c:540
-msgid "I couldn't delete the calendar component!\n"
-msgstr "Að negalëjau iðtrinti kalendoriaus komponento!\n"
-
-#: calendar/gui/e-itip-control.c:550
-msgid "Component successfully deleted."
-msgstr "Komponentas sëkmingai iðtrintas."
-
-#: calendar/gui/e-itip-control.c:694
-msgid "I don't recognize this type of calendar component."
-msgstr "Að nepaþástu tokio kalendoriaus komponento tipo."
-
-#: calendar/gui/e-itip-control.c:780
-msgid "Add to Calendar"
-msgstr "Pridëti á kalendoriø"
-
-#: calendar/gui/e-itip-control.c:814
-msgid " Accept "
-msgstr " Priimti "
-
-#: calendar/gui/e-itip-control.c:815
-msgid " Decline "
-msgstr " Atmesti "
-
-#: calendar/gui/e-itip-control.c:816
-msgid " Tentative "
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:860
-msgid "Update Calendar"
-msgstr "Atnaujinti kalendoriø"
-
-#: calendar/gui/e-itip-control.c:883
-msgid "Cancel Meeting"
-msgstr "Atðaukti susitikimà"
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, fuzzy, no-c-format
-msgid "%P %%"
-msgstr "%P %%"
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr "--kam--"
-
-#: calendar/gui/e-itip-control.glade.h:4
-msgid "Calendar Message"
-msgstr "Kalendoriaus þinutë"
-
-#: calendar/gui/e-itip-control.glade.h:5 mail/mail-format.c:623
-msgid "Date:"
-msgstr "Data:"
-
-#: calendar/gui/e-itip-control.glade.h:8
-msgid "Loading calendar..."
-msgstr "Ákeliamas kalendorius..."
-
-#: calendar/gui/e-itip-control.glade.h:9
-msgid "Organizer:"
-msgstr "Organizatorius:"
-
-#: calendar/gui/e-itip-control.glade.h:10
-msgid "Server Message:"
-msgstr "Serverio þinutë:"
-
-#: calendar/gui/e-itip-control.glade.h:11
-msgid "Summary:"
-msgstr "Apþvalga:"
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr "pabaigos-data"
-
-#: calendar/gui/e-itip-control.glade.h:13
-msgid "date-start"
-msgstr "pradþios-data"
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-msgid "Attendee"
-msgstr "Dalyvis"
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-msgid "Attendee address"
-msgstr "Dalyvio adresas"
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-msgid "Attendees: "
-msgstr "Dalyviai: "
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr ""
-"Atðaukti\n"
-"susitikimà"
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-msgid "Chair"
-msgstr "Pirmininkas"
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-msgid "Meeting Invitations"
-msgstr "Susitikimo pakvietimai"
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr "Ne dalyvis"
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr "Nebûtinas dalyvis"
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-msgid "Organizer: "
-msgstr "Organizatorius: "
-
-#: calendar/gui/e-meeting-dialog.glade.h:14
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-"Skelbti\n"
-"ávyká"
-
-#: calendar/gui/e-meeting-dialog.glade.h:16
-msgid "RSVP"
-msgstr "RSVP"
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid ""
-"Request\n"
-"Meeting"
-msgstr ""
-"Papraðyti\n"
-"susitikimo"
-
-#: calendar/gui/e-meeting-dialog.glade.h:19
-msgid "Required Participant"
-msgstr "Bûtinas dalyvis"
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-msgid "Role"
-msgstr "Rolë"
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-msgid ""
-"Schedule\n"
-"Time"
-msgstr ""
-"Laikas\n"
-"dienotvarkëje"
-
-#: calendar/gui/e-meeting-dialog.glade.h:23 filter/libfilter-i18n.h:49
-#: mail/message-list.c:1083
-msgid "Status"
-msgstr "Bûsena"
-
-#: calendar/gui/e-tasks.c:149 calendar/gui/e-tasks.c:469
-#: calendar/gui/e-tasks.c:502
-msgid "All"
-msgstr "Visi"
-
-#: calendar/gui/e-tasks.c:155
-msgid "Category:"
-msgstr "Kategorija:"
-
-#: calendar/gui/e-tasks.c:298
-#, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "Negalëjau ákelti uþduoèiø á ¥%s´"
-
-#: calendar/gui/e-tasks.c:310
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr "Metodas, reikalingas ákelti ¥%s´, nepalaikomas"
-
-#: calendar/gui/event-editor.c:376
-msgid "Edit Appointment"
-msgstr "Keisti ávyká"
-
-#: calendar/gui/event-editor.c:454
-msgid "on"
-msgstr "lygiai"
-
-#: calendar/gui/event-editor.c:479 filter/filter-datespec.c:81
-msgid "day"
-msgstr "diena"
-
-#: calendar/gui/event-editor.c:606
-msgid "on the"
-msgstr " "
-
-#: calendar/gui/event-editor.c:613
-msgid "th"
-msgstr "-à"
-
-#: calendar/gui/event-editor.c:759
-msgid "occurrences"
-msgstr "kartà(us) pasitaikys"
-
-#: calendar/gui/event-editor.c:876
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr "Ðiame ávykyje yra pasikartojimø, kuriø Evolution negali keisti."
-
-#: calendar/gui/event-editor.c:1548
-#, c-format
-msgid " %d days"
-msgstr " %d dienø"
-
-#: calendar/gui/event-editor.c:1550
-msgid " 1 day"
-msgstr " 1 diena"
-
-#: calendar/gui/event-editor.c:1553
-#, c-format
-msgid " %d weeks"
-msgstr " %d savaièiø"
-
-#: calendar/gui/event-editor.c:1555
-msgid " 1 week"
-msgstr " 1 savaitë"
-
-#: calendar/gui/event-editor.c:1558
-#, c-format
-msgid " %d hours"
-msgstr " %d valandø"
-
-#: calendar/gui/event-editor.c:1560
-msgid " 1 hour"
-msgstr " 1 valanda"
-
-#: calendar/gui/event-editor.c:1563
-#, c-format
-msgid " %d minutes"
-msgstr " %d minuèiø"
-
-#: calendar/gui/event-editor.c:1565
-msgid " 1 minute"
-msgstr " 1 minutë"
-
-#: calendar/gui/event-editor.c:1568
-#, c-format
-msgid " %d seconds"
-msgstr " %d sekundþiø"
-
-#: calendar/gui/event-editor.c:1570
-msgid " 1 second"
-msgstr " 1 sekundë"
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1593
-msgid "Play a sound"
-msgstr "Groti garsà"
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1596
-msgid "Show a dialog"
-msgstr "Rodyti dialogà"
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1599
-msgid "Send an email"
-msgstr "Pasiøsti laiðkà"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1602
-msgid "Run a program"
-msgstr "Paleisti programà"
-
-#: calendar/gui/event-editor.c:1617
-msgid " before start of appointment"
-msgstr " prieð ávykio pradþià"
-
-#: calendar/gui/event-editor.c:1619
-msgid " after start of appointment"
-msgstr " po ávykio pradþios"
-
-#: calendar/gui/event-editor.c:1627
-msgid " before end of appointment"
-msgstr " prieð ávykio pabaigà"
-
-#: calendar/gui/event-editor.c:1629
-msgid " after end of appointment"
-msgstr " po ávykio pabaigos"
-
-#: calendar/gui/event-editor.c:3137 calendar/gui/print.c:1097
-#: calendar/gui/print.c:1099 calendar/gui/print.c:1100
-msgid "%a %b %d %Y"
-msgstr "%a, %Y %b %d"
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr "Vis_os dienos ávykis"
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-msgid "Appointment"
-msgstr "Ávykis"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-msgid "Appointment Basics"
-msgstr "Ávykio pagrindai"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-msgid "Custom recurrence"
-msgstr "Kitoks pakartojimas"
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr "Kas"
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-msgid "Exceptions"
-msgstr "Iðimtys"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-msgid "Modify"
-msgstr "Keisti"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-msgid "No recurrence"
-msgstr "Jokio pakartojimo"
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-msgid "Preview"
-msgstr "Perþiûra"
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Recurrence"
-msgstr "Pasikartojimas"
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-msgid "Recurrence Rule"
-msgstr "Pakartojimo taisyklë"
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-msgid "Reminder"
-msgstr "Priminimas"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-msgid "Settings..."
-msgstr "Nuostatos..."
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr "Paprastas pakartojimas"
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-msgid "_End time:"
-msgstr "P_abaigos laikas:"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Start time:"
-msgstr "_Pradþios laikas:"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Starting date:"
-msgstr "_Pradþios data:"
-
-#. Automatically generated. Do not edit.
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:2
-msgid "after"
-msgstr "po"
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:6
-msgid "before"
-msgstr "prieð"
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "day(s)"
-msgstr "dienà(as)"
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-msgid "end of appointment"
-msgstr "ávykio pabaigà"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "for"
-msgstr "kol"
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr "amþinai"
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-msgid "hour(s)"
-msgstr "valandà(as)"
-
-#: calendar/gui/event-editor-dialog.glade.h:40 mail/mail-config.glade.h:77
-msgid "minute(s)"
-msgstr "minutæ(es)"
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "month(s)"
-msgstr "mënesá(ius)"
-
-#: calendar/gui/event-editor-dialog.glade.h:42
-msgid "start of appointment"
-msgstr "ávykio pradþià"
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-msgid "until"
-msgstr "iki"
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "week(s)"
-msgstr "savaitæ(es)"
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "year(s)"
-msgstr "metus"
-
-#: calendar/gui/e-week-view.c:3278 calendar/gui/e-week-view.c:3301
-msgid "New Appointment..."
-msgstr "Naujas ávykis..."
-
-#: calendar/gui/e-week-view.c:3314
-msgid "Delete All Occurrences"
-msgstr "Iðtrinti visus pasitaikymus"
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:342
-msgid "%d %B"
-msgstr "%B %e"
-
-#: calendar/gui/gnome-cal.c:223
-msgid "Show all "
-msgstr "Rodyti visus "
-
-#: calendar/gui/gnome-cal.c:237
-msgid "Summary contains"
-msgstr "Santraukoje yra"
-
-#: calendar/gui/gnome-cal.c:238
-msgid "Description contains"
-msgstr "Apraðyme yra"
-
-#: calendar/gui/gnome-cal.c:239
-msgid "Comment contains"
-msgstr "Komentare yra"
-
-#: calendar/gui/gnome-cal.c:240
-msgid "Has category"
-msgstr "Turi kategorijà"
-
-#: calendar/gui/gnome-cal.c:843
-#, c-format
-msgid "Could not open the folder in `%s'"
-msgstr "Negalëjau atidaryti aplanko su ¥%s´"
-
-#: calendar/gui/gnome-cal.c:854
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr "Metodas, reikalingas atidaryti ¥%s´, nepalaikomas"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-#, fuzzy
-msgid "Evolution calendar executive summary component."
-msgstr "Evolution paðto komponento."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr "Evolution kalendoriaus iTip/iMip vaizduoklë"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr "Evolution komponentas tvarkyti kalendoriui."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-msgid "Factory for the Calendar Summary component."
-msgstr "Kalendoriaus apþvalgos komponento gamykla."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-msgid "Factory for the Evolution calendar component."
-msgstr "Evolution kalendoriaus komponento gamykla."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-msgid "Factory for the calendar iTip view control"
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-msgid "Factory for the sample Calendar control"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:1
-msgid "April"
-msgstr "Balandis"
-
-#: calendar/gui/goto-dialog.glade.h:2
-msgid "August"
-msgstr "Rugpjûtis"
-
-#: calendar/gui/goto-dialog.glade.h:3
-msgid "December"
-msgstr "Gruodis"
-
-#: calendar/gui/goto-dialog.glade.h:4
-msgid "February"
-msgstr "Vasaris"
-
-#: calendar/gui/goto-dialog.glade.h:5
-msgid "Go To Date"
-msgstr "Eiti á datà"
-
-#: calendar/gui/goto-dialog.glade.h:6
-msgid "Go To Today"
-msgstr "Eiti á ðiandienà"
-
-#: calendar/gui/goto-dialog.glade.h:7
-msgid "January"
-msgstr "Sausis"
-
-#: calendar/gui/goto-dialog.glade.h:8
-msgid "July"
-msgstr "Liepa"
-
-#: calendar/gui/goto-dialog.glade.h:9
-msgid "June"
-msgstr "Birþelis"
-
-#: calendar/gui/goto-dialog.glade.h:10
-msgid "March"
-msgstr "Kovas"
-
-#: calendar/gui/goto-dialog.glade.h:11
-msgid "May"
-msgstr "Geguþë"
-
-#: calendar/gui/goto-dialog.glade.h:12
-msgid "November"
-msgstr "Lapkritis"
-
-#: calendar/gui/goto-dialog.glade.h:13
-msgid "October"
-msgstr "Spalis"
-
-#: calendar/gui/goto-dialog.glade.h:14
-msgid "September"
-msgstr "Rugsëjis"
-
-#: calendar/gui/print.c:300
-msgid "1st"
-msgstr "1-a"
-
-#: calendar/gui/print.c:300
-msgid "2nd"
-msgstr "2-a"
-
-#: calendar/gui/print.c:300
-msgid "3rd"
-msgstr "3-a"
-
-#: calendar/gui/print.c:300
-msgid "4th"
-msgstr "4-a"
-
-#: calendar/gui/print.c:300
-msgid "5th"
-msgstr "5-a"
-
-#: calendar/gui/print.c:301
-msgid "6th"
-msgstr "6-ta"
-
-#: calendar/gui/print.c:301
-msgid "7th"
-msgstr "7-ta"
-
-#: calendar/gui/print.c:301
-msgid "8th"
-msgstr "8-ta"
-
-#: calendar/gui/print.c:301
-msgid "9th"
-msgstr "9-ta"
-
-#: calendar/gui/print.c:301
-msgid "10th"
-msgstr "10-ta"
-
-#: calendar/gui/print.c:302
-msgid "11th"
-msgstr "11-ta"
-
-#: calendar/gui/print.c:302
-msgid "12th"
-msgstr "12-ta"
-
-#: calendar/gui/print.c:302
-msgid "13th"
-msgstr "13-ta"
-
-#: calendar/gui/print.c:302
-msgid "14th"
-msgstr "14-ta"
-
-#: calendar/gui/print.c:302
-msgid "15th"
-msgstr "15-ta"
-
-#: calendar/gui/print.c:303
-msgid "16th"
-msgstr "16-ta"
-
-#: calendar/gui/print.c:303
-msgid "17th"
-msgstr "17-ta"
-
-#: calendar/gui/print.c:303
-msgid "18th"
-msgstr "18-ta"
-
-#: calendar/gui/print.c:303
-msgid "19th"
-msgstr "19-ta"
-
-#: calendar/gui/print.c:303
-msgid "20th"
-msgstr "20-ta"
-
-#: calendar/gui/print.c:304
-msgid "21st"
-msgstr "21-a"
-
-#: calendar/gui/print.c:304
-msgid "22nd"
-msgstr "22-a"
-
-#: calendar/gui/print.c:304
-msgid "23rd"
-msgstr "23-a"
-
-#: calendar/gui/print.c:304
-msgid "24th"
-msgstr "24-ta"
-
-#: calendar/gui/print.c:304
-msgid "25th"
-msgstr "25-ta"
-
-#: calendar/gui/print.c:305
-msgid "26th"
-msgstr "26-ta"
-
-#: calendar/gui/print.c:305
-msgid "27th"
-msgstr "27-ta"
-
-#: calendar/gui/print.c:305
-msgid "28th"
-msgstr "28-ta"
-
-#: calendar/gui/print.c:305
-msgid "29th"
-msgstr "29-ta"
-
-#: calendar/gui/print.c:305
-msgid "30th"
-msgstr "30-ta"
-
-#: calendar/gui/print.c:306
-msgid "31st"
-msgstr "31-a"
-
-#: calendar/gui/print.c:362
-msgid "Su"
-msgstr "Sk"
-
-#: calendar/gui/print.c:362
-msgid "Mo"
-msgstr "Pr"
-
-#: calendar/gui/print.c:362
-msgid "Tu"
-msgstr "An"
-
-#: calendar/gui/print.c:362
-msgid "We"
-msgstr "Tr"
-
-#: calendar/gui/print.c:362
-msgid "Th"
-msgstr "Kt"
-
-#: calendar/gui/print.c:362
-msgid "Fr"
-msgstr "Pn"
-
-#: calendar/gui/print.c:362
-msgid "Sa"
-msgstr "Ðt"
-
-#. Day
-#: calendar/gui/print.c:1078
-msgid "Current day (%a %b %d %Y)"
-msgstr "Esama diena (%a, %Y %d %b)"
-
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1096
-msgid "%a %b %d"
-msgstr "%a %b %d"
-
-#: calendar/gui/print.c:1093
-msgid "%a %d %Y"
-msgstr "%a %d %Y"
-
-#: calendar/gui/print.c:1104
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr "Esama savaitë (%s - %s)"
-
-#. Month
-#: calendar/gui/print.c:1112
-msgid "Current month (%b %Y)"
-msgstr "Esamas mënuo (%Y %b)"
-
-#. Year
-#: calendar/gui/print.c:1119
-msgid "Current year (%Y)"
-msgstr "Esami metai (%Y)"
-
-#: calendar/gui/print.c:1156
-msgid "Print Calendar"
-msgstr "Spausdinti kalendoriø"
-
-#: calendar/gui/print.c:1321 mail/mail-callbacks.c:1524
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:24
-#: ui/evolution-mail.xml.h:57
-msgid "Print Preview"
-msgstr "Spaudinio perþiûra"
-
-#: calendar/gui/tasks-control.c:108
-msgid "The URI of the tasks folder to display"
-msgstr "Vaizduojamo uþduoèiø aplanko URI"
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-
-#: calendar/gui/weekday-picker.c:315 calendar/gui/weekday-picker.c:410
-msgid "SMTWTFS"
-msgstr "SPATKPÐ"
-
-#: camel/camel-cipher-context.c:169
-#, fuzzy
-msgid "Signing is not supported by this cipher"
-msgstr "Nurodytas tipas ðioje saugykloje nepalaikomas"
-
-#: camel/camel-cipher-context.c:209
-#, fuzzy
-msgid "Clearsigning is not supported by this cipher"
-msgstr "Nurodytas tipas ðioje saugykloje nepalaikomas"
-
-#: camel/camel-cipher-context.c:249
-#, fuzzy
-msgid "Verifying is not supported by this cipher"
-msgstr "Nurodytas tipas ðioje saugykloje nepalaikomas"
-
-#: camel/camel-cipher-context.c:292
-#, fuzzy
-msgid "Encryption is not supported by this cipher"
-msgstr "Nurodytas tipas ðioje saugykloje nepalaikomas"
-
-#: camel/camel-cipher-context.c:334
-#, fuzzy
-msgid "Decryption is not supported by this cipher"
-msgstr "Nurodytas tipas ðioje saugykloje nepalaikomas"
-
-#: camel/camel-filter-driver.c:534 camel/camel-filter-driver.c:543
-msgid "Syncing folders"
-msgstr "Sinchronizuojami aplankai"
-
-#: camel/camel-filter-driver.c:643
-msgid "Unable to open spool folder"
-msgstr "Negaliu atidaryti kaupo aplanko"
-
-#: camel/camel-filter-driver.c:652
-#, fuzzy
-msgid "Unable to process spool folder"
-msgstr "Negaliu procesinti kaupo aplanko"
-
-#: camel/camel-filter-driver.c:666
-msgid "Getting message %d (%d%%)"
-msgstr "Gaunamas laiðkas %d (%d%%)"
-
-#: camel/camel-filter-driver.c:670 camel/camel-filter-driver.c:679
-#, c-format
-msgid "Failed message %d"
-msgstr "Nepavyko laiðkas %d"
-
-#: camel/camel-filter-driver.c:671
-msgid "Cannot open message"
-msgstr "Negaliu atidaryti laiðko"
-
-#: camel/camel-filter-driver.c:690 camel/camel-filter-driver.c:788
-msgid "Syncing folder"
-msgstr "Sinchronizuojamas aplankas"
-
-#: camel/camel-filter-driver.c:694 camel/camel-filter-driver.c:793
-msgid "Complete"
-msgstr "Uþbaigta"
-
-#: camel/camel-filter-driver.c:748
-#, c-format
-msgid "Getting message %d of %d"
-msgstr "Gaunamas laiðkas %d ið %d"
-
-#: camel/camel-filter-driver.c:753 camel/camel-filter-driver.c:771
-#, c-format
-msgid "Failed at message %d of %d"
-msgstr "Nesëkmë ties laiðku %d ið %d"
-
-#: camel/camel-filter-driver.c:866
-#, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr "Klaida nagrinëjant filtrà: %s: %s"
-
-#: camel/camel-filter-driver.c:871
-#, c-format
-msgid "Error executing filter: %s: %s"
-msgstr "Klaida vykdant filtrà: %s: %s"
-
-#: camel/camel-filter-search.c:439 camel/camel-filter-search.c:445
-#, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr "Klaida vykdant filtro paieðkà: %s: %s"
-
-#: camel/camel-folder-search.c:328
-#, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-"Negaliu iðnagrinëti paieðkos iðraiðkos: %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:338
-#, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr ""
-"Klaida vykdant paieðkos iðraiðkà ¥%s´:\n"
-"%s"
-
-#: camel/camel-folder-search.c:485 camel/camel-folder-search.c:513
-msgid "(match-all) requires a single bool result"
-msgstr "(match-all) reikalauja vienintelio loginio rezultato"
-
-#: camel/camel-folder-search.c:559
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr "Vykdoma uþklausa neþinomai antraðtei: %s"
-
-#: camel/camel-folder-search.c:670 camel/camel-folder-search.c:714
-msgid "Invalid type in body-contains, expecting string"
-msgstr ""
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:92 camel/camel-lock.c:111 camel/camel-movemail.c:138
-#: camel/camel-movemail.c:185
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "Negalëjau sukurti %s uþrakto bylos: %s"
-
-#: camel/camel-lock.c:151 camel/camel-movemail.c:219
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr "Baigësi laikas, belaukiant %s uþrakto bylos. Bandyk vëliau."
-
-#: camel/camel-lock.c:201
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr "Nepavyko gauti uþrakto naudojant fcntl(2): %s"
-
-#: camel/camel-lock.c:255
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr "Nepavyko gauti uþrakto naudojant flock(2): %s"
-
-#: camel/camel-movemail.c:101
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr "Negalëjau patikrinti paðto bylos %s: %s"
-
-#: camel/camel-movemail.c:148
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr "Negalëjau atidaryti paðto bylos %s: %s"
-
-#: camel/camel-movemail.c:158
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr "Negalëjau atidaryti laikinos paðto bylos %s: %s"
-
-#: camel/camel-movemail.c:199
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr "Negalëjau patikrinti %s uþrakto bylos: %s"
-
-#: camel/camel-movemail.c:245
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr "Klaida skaitant paðto bylà: %s"
-
-#: camel/camel-movemail.c:256
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr "Klaida áraðant laikinà paðto bylà: %s"
-
-#: camel/camel-movemail.c:274
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr "Nepavyko áraðyti laiðkø á laikinà bylà %s: %s"
-
-#: camel/camel-movemail.c:306
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr "Negalëjau sukurti pipe: %s"
-
-#: camel/camel-movemail.c:318
-#, c-format
-msgid "Could not fork: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:356
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr "Nepavyko programa Movemail: %s"
-
-#: camel/camel-movemail.c:357
-msgid "(Unknown error)"
-msgstr "(Neþinoma klaida)"
-
-#: camel/camel-movemail.c:587
-#, c-format
-msgid "Error copying mail temp file: %s"
-msgstr "Klaida kopijuojant laikinà paðto bylà: %s"
-
-#: camel/camel-pgp-context.c:188
-#, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr "Praðau ávesti tavo %s slaptaþodá dël %s"
-
-#: camel/camel-pgp-context.c:191
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr "Praðau ávesti tavo %s slaptaþodá"
-
-#: camel/camel-pgp-context.c:509
-msgid "No plaintext to sign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:516 camel/camel-pgp-context.c:688
-#: camel/camel-pgp-context.c:1055 camel/camel-pgp-context.c:1267
-msgid "No password provided."
-msgstr "Nepateiktas slaptaþodis."
-
-#: camel/camel-pgp-context.c:522 camel/camel-pgp-context.c:694
-#: camel/camel-pgp-context.c:877 camel/camel-pgp-context.c:1062
-#: camel/camel-pgp-context.c:1274
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr ""
-
-#: camel/camel-pgp-context.c:681
-msgid "No plaintext to clearsign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:871
-msgid "No plaintext to verify."
-msgstr ""
-
-#: camel/camel-pgp-context.c:888
-#, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "Negalëjau sukurti laikinos bylos: %s"
-
-#: camel/camel-pgp-context.c:1045
-#, fuzzy
-msgid "No plaintext to encrypt."
-msgstr "Paspausk ant ikonos, kad iððifruotum."
-
-#: camel/camel-pgp-context.c:1071
-msgid "No recipients specified"
-msgstr "Nenurodyti jokie gavëjai"
-
-#: camel/camel-pgp-context.c:1259
-msgid "No ciphertext to decrypt."
-msgstr ""
-
-#: camel/camel-provider.c:131
-#, c-format
-msgid "Could not load %s: Module loading not supported on this system."
-msgstr ""
-
-#: camel/camel-provider.c:140
-#, c-format
-msgid "Could not load %s: %s"
-msgstr "Nepavyko ákelti %s: %s"
-
-#: camel/camel-provider.c:148
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr "Nepavyko ákelti %s: Modulyje nëra inicializacijos kodo."
-
-#: camel/camel-remote-store.c:186
-#, c-format
-msgid "%s server %s"
-msgstr "%s serveris %s"
-
-#: camel/camel-remote-store.c:190
-#, c-format
-msgid "%s service for %s on %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:240
-msgid "Connection cancelled"
-msgstr "Jungtis nutraukta"
-
-#: camel/camel-remote-store.c:243
-#: camel/providers/smtp/camel-smtp-transport.c:261
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr "Negalëjau prisijungti prie %s (prievadas %d): %s"
-
-#: camel/camel-remote-store.c:244
-msgid "(unknown host)"
-msgstr "(neþinomas hostas)"
-
-#: camel/camel-remote-store.c:325 camel/camel-remote-store.c:387
-#: camel/camel-remote-store.c:458
-#: camel/providers/imap/camel-imap-command.c:287
-msgid "Operation cancelled"
-msgstr "Veiksmas nutrauktas"
-
-#: camel/camel-remote-store.c:464
-msgid "Server unexpectedly disconnected"
-msgstr "Serveris netikëtai atsijungë"
-
-#: camel/camel-sasl-anonymous.c:33
-msgid "Anonymous"
-msgstr "Anoniminis"
-
-#: camel/camel-sasl-anonymous.c:35
-msgid "This option will connect to the server using an anonymous login."
-msgstr "Su ðia parinktimi prie serverio bus·jungiamasi·anonimiðkai"
-
-#: camel/camel-sasl-anonymous.c:110 camel/camel-sasl-plain.c:87
-msgid "Authentication failed."
-msgstr "Autentikacija nepavyko."
-
-#: camel/camel-sasl-anonymous.c:119
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:131
-#, fuzzy, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr ""
-"Klaida, ákeliant filtro informacijà:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:143
-#, fuzzy, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr "kalendoriaus informacija"
-
-#: camel/camel-sasl-cram-md5.c:35
-msgid "CRAM-MD5"
-msgstr "CRAM-MD5"
-
-#: camel/camel-sasl-cram-md5.c:37
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-"Su ðia parinktimi prie serverio bus jungiamasi naudojant saugø CRAM-MD5 "
-"slaptaþodá, jei serveris tai palaiko."
-
-#: camel/camel-sasl-digest-md5.c:43
-msgid "DIGEST-MD5"
-msgstr "DIGEST-MD5"
-
-#: camel/camel-sasl-digest-md5.c:45
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-"Su ðia parinktimi prie serverio bus jungiamasi naudojant saugø CRAM-MD5 "
-"slaptaþodá, jei serveris tai palaiko."
-
-#: camel/camel-sasl-digest-md5.c:810
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:819
-msgid "Server challenge invalid\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:825
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:847
-msgid "Server response did not contain authorization data\n"
-msgstr "Serverio atsakyme nebuvo autorizacijos duomenø\n"
-
-#: camel/camel-sasl-digest-md5.c:865
-msgid "Server response contained incomplete authorization data\n"
-msgstr "Serverio atsakyme buvo nepilni autorizacijos duomenys\n"
-
-#: camel/camel-sasl-digest-md5.c:875
-msgid "Server response does not match\n"
-msgstr "Serverio atsakymas netenkina\n"
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "Kerberos 4"
-msgstr "Kerberos 4"
-
-#: camel/camel-sasl-kerberos4.c:42
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr ""
-"Su ðia parinktimi jungiantis prie serverio bus naudojama Kerberos 4 "
-"autentikacija."
-
-#: camel/camel-sasl-kerberos4.c:161
-#, fuzzy, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr "Negalëjau sukurti pipe: %s"
-
-#: camel/camel-sasl-kerberos4.c:218
-#: camel/providers/imap/camel-imap-store.c:431
-msgid "Bad authentication response from server."
-msgstr "Blogas autentikacijos atsakymas ið serverio."
-
-#: camel/camel-sasl-login.c:32
-msgid "NT Login"
-msgstr ""
-
-#: camel/camel-sasl-login.c:34 camel/camel-sasl-plain.c:34
-msgid "This option will connect to the server using a simple password."
-msgstr ""
-"Su ðia parinktimi jungiantis prie serverio bus naudojamaspaprastas "
-"slaptaþodis."
-
-#: camel/camel-sasl-login.c:127
-msgid "Unknown authentication state."
-msgstr "Neþinoma autentikacijos bûsena."
-
-#: camel/camel-search-private.c:111
-#, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr "Nepavyko sukompiliuoti reguliarios iðraiðkos: %s: %s"
-
-#: camel/camel-service.c:154
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr "URL ¥%s´ turi bûti su vartotojo vardu"
-
-#: camel/camel-service.c:162
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr "URL ¥%s´ turi bûti su hostu"
-
-#: camel/camel-service.c:170
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr "URL ¥%s´ turi bûti su keliu"
-
-#: camel/camel-service.c:548
-#, c-format
-msgid "Resolving: %s"
-msgstr ""
-
-#: camel/camel-service.c:575
-#, c-format
-msgid "Failure in name lookup: %s"
-msgstr ""
-
-#: camel/camel-service.c:600
-#, c-format
-msgid "Host lookup failed: %s: host not found"
-msgstr ""
-
-#: camel/camel-service.c:602
-#, c-format
-msgid "Host lookup failed: %s: unknown reason"
-msgstr ""
-
-#: camel/camel-session.c:68
-msgid "Virtual folder email provider"
-msgstr "Virtualiø aplankø paðto tiekëjas."
-
-#: camel/camel-session.c:70
-msgid "For reading mail as a query of another set of folders"
-msgstr "Paðto skaitymui naudojant uþklausà ið kitø aplankø aibës"
-
-#: camel/camel-session.c:294 camel/camel-session.c:363
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr "Protokolui ¥%s´ nëra tiekëjo."
-
-#: camel/camel-session.c:478
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"Negalëjau sukurti katalogo %s:\n"
-"%s"
-
-#. Fill in the new fields
-#: camel/camel-store.c:378 mail/mail-ops.c:1007 mail/mail-ops.c:1014
-#: mail/mail-ops.c:1032 mail/mail-ops.c:1033
-msgid "Trash"
-msgstr "Ðiukðlës"
-
-#: camel/camel-tcp-stream-ssl.c:348
-#, c-format
-msgid ""
-"EMail: %s\n"
-"Common Name: %s\n"
-"Organization Unit: %s\n"
-"Organization: %s\n"
-"Locality: %s\n"
-"State: %s\n"
-"Country: %s"
-msgstr ""
-"El. paðtas: %s\n"
-"Bendras vardas: %s\n"
-"Organizacinis vienetas: %s\n"
-"Organizacija: %s\n"
-"Lokalumas: %s\n"
-"Valstija: %s\n"
-"Valstybë: %s"
-
-#. construct our user prompt
-#: camel/camel-tcp-stream-ssl.c:364
-#, c-format
-msgid ""
-"Bad certificate from %s:\n"
-"\n"
-"%s\n"
-"\n"
-"Do you wish to accept anyway?"
-msgstr ""
-
-#: camel/camel-url.c:289
-#, c-format
-msgid "Could not parse URL `%s'"
-msgstr "Negalëjau iðnagrinëti URL ¥%s´"
-
-#: camel/camel-vee-folder.c:451
-#, c-format
-msgid "No such message %s in %s"
-msgstr "Nëra tokio laiðko %s aplanke %s"
-
-#: camel/camel-vee-folder.c:546
-#, c-format
-msgid "No such message: %s"
-msgstr "Nëra tokio laiðko: %s"
-
-#: camel/camel-vtrash-folder.c:109
-msgid "You cannot copy messages from this trash folder."
-msgstr "Tu negali kopijuoti laiðkø ið ðio ðiukðliø aplanko."
-
-#: camel/providers/imap/camel-imap-message-cache.c:150
-#, fuzzy, c-format
-msgid "Could not open cache directory: %s"
-msgstr "Negalëjau sukurti katalogo %s: %s"
-
-#: camel/providers/imap/camel-imap-command.c:232
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "Netikëtas atsakymas ið IMAP serverio: %s"
-
-#: camel/providers/imap/camel-imap-command.c:240
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr "Nepavyko IMAP komanda: %s"
-
-#: camel/providers/imap/camel-imap-command.c:241 shell/e-storage.c:481
-msgid "Unknown error"
-msgstr "Neþinoma klaida"
-
-#: camel/providers/imap/camel-imap-command.c:295
-msgid "Server response ended too soon."
-msgstr "Serverio atsakymas baigësi per anksti."
-
-#: camel/providers/imap/camel-imap-command.c:487
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr "IMAP serverio atsakyme nebuvo %s informacijos"
-
-#: camel/providers/imap/camel-imap-command.c:524
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr "Netikëtas atsakymas OK ið IMAP serverio: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:170
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr "Negalëjau sukurti katalogo %s: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:189
-#, c-format
-msgid "Could not load summary for %s"
-msgstr "Nepavyko ákelti %s santraukos"
-
-#: camel/providers/imap/camel-imap-folder.c:362
-msgid "Scanning IMAP folder"
-msgstr "Skanuojamas IMAP aplankas"
-
-#: camel/providers/imap/camel-imap-folder.c:1043
-#: camel/providers/imap/camel-imap-folder.c:1265
-msgid "This message is not currently available"
-msgstr "Ðis laiðkas ðiuo metu nepasiekiamas"
-
-#: camel/providers/imap/camel-imap-folder.c:1071
-#: camel/providers/imap/camel-imap-folder.c:1298
-msgid "Could not find message body in FETCH response."
-msgstr "Negalëjau rasti laiðko teksto FETCH atsakyme"
-
-#: camel/providers/imap/camel-imap-provider.c:43 mail/mail-config.glade.h:11
-msgid "Checking for new mail"
-msgstr "Tikrinama, ar yra naujø laiðkø"
-
-#: camel/providers/imap/camel-imap-provider.c:45
-msgid "Check for new messages in all folders"
-msgstr "Patikrinti, ar yra naujø laiðkø visuose aplankuose"
-
-#: camel/providers/imap/camel-imap-provider.c:48 shell/e-shell-view.c:551
-msgid "Folders"
-msgstr "Aplankai"
-
-#: camel/providers/imap/camel-imap-provider.c:50
-msgid "Show only subscribed folders"
-msgstr "Rodyti tik uþsakytus aplankus"
-
-#: camel/providers/imap/camel-imap-provider.c:52
-msgid "Override server-supplied folder namespace"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:54
-msgid "Namespace"
-msgstr "Vardø zona"
-
-#: camel/providers/imap/camel-imap-provider.c:57
-msgid "Apply filters to new messages in INBOX on this server"
-msgstr "Pritaikyti filtrus naujiems laiðkams ðio serverio INBOX aplanke"
-
-#: camel/providers/imap/camel-imap-provider.c:63
-msgid "IMAPv4"
-msgstr "IMAPv4"
-
-#: camel/providers/imap/camel-imap-provider.c:65
-msgid "For reading and storing mail on IMAP servers."
-msgstr "Paðto skaitymui ir raðymui IMAP serveriuose."
-
-#: camel/providers/imap/camel-imap-provider.c:82
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr ""
-"Su ðia parinktimi jungiantis prie IMAP serverio bus naudojamas paprasto "
-"teksto slaptaþodis."
-
-#: camel/providers/imap/camel-imap-store.c:454
-#, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr "IMAP serveris %s nepalaiko praðyto autentikacijos tipo %s"
-
-#: camel/providers/imap/camel-imap-store.c:464
-#: camel/providers/smtp/camel-smtp-transport.c:358
-#, c-format
-msgid "No support for authentication type %s"
-msgstr "Nepalaikoma %s tipo autentikacija"
-
-#: camel/providers/imap/camel-imap-store.c:488
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr "%sPraðom ávesti IMAP slaptaþodá dël %s@%s"
-
-#: camel/providers/imap/camel-imap-store.c:503
-#: camel/providers/smtp/camel-smtp-transport.c:402
-msgid "You didn't enter a password."
-msgstr "Tu neávedei slaptaþodþio."
-
-#: camel/providers/imap/camel-imap-store.c:529
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Negalëjau autentikuotis á IMAP serverá.\n"
-"%s\n"
-
-#: camel/providers/imap/camel-imap-store.c:788 mail/mail-local.c:337
-#, c-format
-msgid "No such folder %s"
-msgstr "Nëra tokio aplanko %s"
-
-#: camel/providers/local/camel-local-provider.c:39
-msgid "MH-format mail directories"
-msgstr "MH formato paðto katalogai"
-
-#: camel/providers/local/camel-local-provider.c:40
-msgid "For storing local mail in MH-like mail directories"
-msgstr "Paðto laikymui MH tipo paðto kataloguose"
-
-#: camel/providers/local/camel-local-provider.c:49
-msgid "Standard Unix mailbox file"
-msgstr "Standartinë Unix mailbox byla"
-
-#: camel/providers/local/camel-local-provider.c:50
-msgid "For storing local mail in standard mbox format"
-msgstr "Vietinio paðto laikymui standartiniu mbox formatu"
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "Qmail maildir-format mail files"
-msgstr "Qmail maildir formato paðto bylos"
-
-#: camel/providers/local/camel-local-provider.c:60
-msgid "For storing local mail in qmail maildir directories"
-msgstr "Vietinio paðto laikymui qmail maildir kataloguose"
-
-#: camel/providers/local/camel-local-store.c:127
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr "Saugyklos ðaknis %s nëra absoliutus kelias"
-
-#: camel/providers/local/camel-local-store.c:134
-#, c-format
-msgid "Store root %s is not a regular directory"
-msgstr "Saugyklos ðaknis %s nëra nëra paprastas katalogas"
-
-#: camel/providers/local/camel-local-store.c:142
-#: camel/providers/local/camel-local-store.c:158
-#, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "Negalëjau gauti aplanko ¥%s´: %s"
-
-#: camel/providers/local/camel-local-store.c:173
-msgid "Local stores do not have an inbox"
-msgstr "Vietinëse saugyklose nëra inbox"
-
-#: camel/providers/local/camel-local-store.c:183
-#, c-format
-msgid "Local mail file %s"
-msgstr "Vietinë paðto byla %s"
-
-#: camel/providers/local/camel-local-store.c:237
-#, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr "Negalëjau pervadinti aplanko ¥%s´ á %s: %s"
-
-#: camel/providers/local/camel-local-store.c:279
-#, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr "Negalëjau iðtrinti aplanko santraukos bylos ¥%s´: %s"
-
-#: camel/providers/local/camel-local-store.c:289
-#, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr "Negalëjau iðtrinti aplanko indekso bylos ¥%s´: %s"
-
-#: camel/providers/local/camel-local-summary.c:404
-msgid "Unable to add message to summary: unknown reason"
-msgstr "Nepavyko pridëti laiðko á santraukà: neþinoma prieþastis"
-
-#: camel/providers/local/camel-maildir-folder.c:150
-#: camel/providers/local/camel-maildir-folder.c:158
-#: camel/providers/local/camel-maildir-folder.c:169
-#, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr "Negalëjau pridurti laiðko prie maildir aplanko: %s: %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-maildir-folder.c:209
-#: camel/providers/local/camel-maildir-folder.c:217
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#: camel/providers/local/camel-mh-folder.c:194
-#: camel/providers/local/camel-mh-folder.c:202
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-"Negaliu gauti laiðko: %s\n"
-" %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-msgid "No such message"
-msgstr "Nëra tokio laiðko"
-
-#: camel/providers/local/camel-maildir-folder.c:218
-#: camel/providers/local/camel-mh-folder.c:203
-msgid "Invalid message contents"
-msgstr "Blogas laiðko turinys"
-
-#: camel/providers/local/camel-maildir-store.c:96
-#: camel/providers/local/camel-mh-store.c:90
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-"Negalëjau atidaryti aplanko ¥%s´:\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:100
-#: camel/providers/local/camel-mbox-store.c:101
-#: camel/providers/local/camel-mh-store.c:97
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr "Nëra tokio aplanko ¥%s´."
-
-#: camel/providers/local/camel-maildir-store.c:107
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-"Negalëjau sukurti aplanko: ¥%s´:\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:122
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr "¥%s´ nëra maildir katalogas."
-
-#: camel/providers/local/camel-maildir-store.c:151
-#: camel/providers/local/camel-maildir-store.c:188
-#: camel/providers/local/camel-mh-store.c:127
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr "Negalëjau iðtrinti aplanko ¥%s´: %s"
-
-#: camel/providers/local/camel-maildir-store.c:152
-msgid "not a maildir directory"
-msgstr "ne maildir katalogas"
-
-#: camel/providers/local/camel-maildir-summary.c:405
-#: camel/providers/local/camel-maildir-summary.c:526
-#, c-format
-msgid "Cannot open maildir directory path: %s: %s"
-msgstr "Negaliu atidaryti maildir katalogo kelio: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:152
-#, c-format
-msgid "Cannot create folder lock on %s: %s"
-msgstr "Negaliu sukurti aplanko uþrakto ant %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:203
-#, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr "Negaliu atidaryti paðto dëþutës: %s: %s\n"
-
-#: camel/providers/local/camel-mbox-folder.c:259
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr "Negaliu pridurti laiðko prie mbox bylos: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:335
-#: camel/providers/local/camel-mbox-folder.c:367
-#: camel/providers/local/camel-mbox-folder.c:380
-#, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-"Negaliu gauti laiðko: %s ið aplanko %s\n"
-" %s"
-
-#: camel/providers/local/camel-mbox-folder.c:368
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr "Atrodo, jog aplankas yra neatkuriamai sugadintas."
-
-#: camel/providers/local/camel-mbox-folder.c:381
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr "Nepavyko sukurti laiðko: Sugadinta paðto dëþutë?"
-
-#: camel/providers/local/camel-mbox-store.c:94
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-"Negalëjau atidaryti bylos ¥%s´: \n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:110
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-"Negalëjau sukurti bylos ¥%s´:\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:119
-#: camel/providers/local/camel-mbox-store.c:146
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr "¥%s´ nëra paprasta byla."
-
-#: camel/providers/local/camel-mbox-store.c:138
-#: camel/providers/local/camel-mbox-store.c:161
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-"Negalëjau iðtrinti aplanko ¥%s´:\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr "Aplankas ¥%s´ nëra tuðèias. Neiðtryniau."
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:249
-msgid "Summarising folder"
-msgstr "Daroma aplanko santrauka"
-
-#: camel/providers/local/camel-mbox-summary.c:254
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr "Negalëjau atidaryti aplanko: %s: daroma santrauka nuo vietos %ld: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:296
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:371
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr "Negalëjau padaryti aplanko santraukos: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:502
-#: camel/providers/local/camel-mbox-summary.c:703 mail/mail-ops.c:1397
-msgid "Synchronising folder"
-msgstr "Sinchronizuojamas aplankas"
-
-#: camel/providers/local/camel-mbox-summary.c:507
-#: camel/providers/local/camel-mbox-summary.c:708
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr "Negalëjau atidaryti aplanko santraukos darymui: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:524
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr "Negalëjau atidaryti laikinos paðto bylos: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:549
-#: camel/providers/local/camel-mbox-summary.c:557
-#: camel/providers/local/camel-mbox-summary.c:746
-#: camel/providers/local/camel-mbox-summary.c:754
-msgid "Summary and folder mismatch, even after a sync"
-msgstr "Santrauka ir aplankas nesutampa net po sinchronizavimo"
-
-#: camel/providers/local/camel-mbox-summary.c:600
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr "Klaida raðant á laikinà paðto dëþutæ: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:617
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr "Nepavyko raðyti á laikinà paðto dëþutæ: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:635
-#: camel/providers/local/camel-mbox-summary.c:804
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr "Negalëjau uþdaryti ðaltinio aplanko %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:644
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr "Negalëjau uþdaryti laikino aplanko: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:655
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr "Negalëjau pervadinti aplanko: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:879
-#, c-format
-msgid "Unknown error: %s"
-msgstr "Neþinoma klaida: %s"
-
-#: camel/providers/local/camel-mh-folder.c:149
-#: camel/providers/local/camel-mh-folder.c:157
-#, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr "Negalëjau pridurti laiðko prie mh aplanko: %s: %s"
-
-#: camel/providers/local/camel-mh-store.c:110
-#, c-format
-msgid "`%s' is not a directory."
-msgstr "¥%s´ nëra katalogas."
-
-#: camel/providers/local/camel-mh-summary.c:218
-#, c-format
-msgid "Cannot open MH directory path: %s: %s"
-msgstr "Negaliu atidaryti MH katalogo kelio: %s: %s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:45
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr "Praðom ávesti NNTP slaptaþodá vartotojui %s@%s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:66
-msgid "Server rejected username"
-msgstr "Serveris atmetë vartotojo vardà"
-
-#: camel/providers/nntp/camel-nntp-auth.c:72
-msgid "Failed to send username to server"
-msgstr "Nepavyko serveriui nusiøsti vartotojo vardo"
-
-#: camel/providers/nntp/camel-nntp-auth.c:81
-msgid "Server rejected username/password"
-msgstr "Serveris atmetë vartotojo vardà/slaptaþodá"
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr "Laiðkas %s nerastas."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr "Negalëjau gauti grupiø sàraðo ið serverio."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr "Negaliu ákelti grupiø sàraðo bylos dël %s: %s"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr "Negaliu iðsaugoti grupiø sàraðo bylos dël %s: %s"
-
-#: camel/providers/nntp/camel-nntp-provider.c:42
-msgid "USENET news"
-msgstr "USENET naujienos"
-
-#: camel/providers/nntp/camel-nntp-provider.c:44
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr "Tai tiekëjas, naudojamas skaitant ir raðant á USENET naujienø grupes."
-
-#: camel/providers/nntp/camel-nntp-store.c:224
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr "Negalëjau atidaryti katalogo naujienø serveriui: %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:286
-#, c-format
-msgid "USENET News via %s"
-msgstr "USENET naujienos per %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:293
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-"Su ðia parinktimi NNTP serveryje bus autentikuojamasi paprasto teksto "
-"slaptaþodþiu."
-
-#: camel/providers/nntp/camel-nntp-store.c:325
-#: camel/providers/nntp/camel-nntp-store.c:488
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr "Negalëjau atidaryti ar sukurti .newsrc bylos dël %s: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-msgid "Retrieving POP summary"
-msgstr "Parsiunèiama POP santrauka"
-
-#: camel/providers/pop3/camel-pop3-folder.c:155
-#, c-format
-msgid "Could not check POP server for new messages: %s"
-msgstr "Negalëjau patikrinti, ar POP serveryje yra naujø laiðkø: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:199
-msgid "Could not open folder: message listing was incomplete."
-msgstr "Negalëjau atidaryti aplanko: laiðkø sàraðas buvo nepilnas."
-
-#: camel/providers/pop3/camel-pop3-folder.c:292
-#, c-format
-msgid "No message with uid %s"
-msgstr "Nëra laiðko su uid %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:296
-#, c-format
-msgid "Retrieving POP message %d"
-msgstr "Parsiunèiamas POP laiðkas %d"
-
-#: camel/providers/pop3/camel-pop3-folder.c:303
-#, c-format
-msgid "Could not fetch message: %s"
-msgstr "Negalëjau parsiøsti laiðko: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:320
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr "Negalëjau parsiøsti laiðko ið POP serverio %s: %s"
-
-#: camel/providers/pop3/camel-pop3-provider.c:37
-msgid "Message storage"
-msgstr "Laiðkø saugojimas"
-
-#: camel/providers/pop3/camel-pop3-provider.c:39
-msgid "Leave messages on server"
-msgstr "Palikti laiðkus serveryje"
-
-#: camel/providers/pop3/camel-pop3-provider.c:41
-#, c-format
-msgid "Delete after %s day(s)"
-msgstr "Iðtrinti po %s dienos(ø)"
-
-#: camel/providers/pop3/camel-pop3-provider.c:48 mail/mail-config.glade.h:42
-msgid "POP"
-msgstr "POP"
-
-#: camel/providers/pop3/camel-pop3-provider.c:50
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-"Jungimuisi prie POP serveriø. POP protokolas taip pat gali bûti naudojamas "
-"parsiøsti paðtui ið kai kuriø web paðto tiekëjø."
-
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-"Su ðia parinktimi jungiantis prie POP serverio bus naudojamas paprasto "
-"teksto slaptaþodis. Tai vienintelë parinktis, palaikoma daugelio POP "
-"serveriø."
-
-#: camel/providers/pop3/camel-pop3-provider.c:79
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-"Su ðia parinktimi jungiantis prie POP serverio bus naudojamas uþðifruotas "
-"slaptaþodis per APOP protokolà. Tai gali veikti ne visiems vartotojams netgi "
-"serveriuose, kurie teigia, jog já palaiko."
-
-#: camel/providers/pop3/camel-pop3-provider.c:91
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-"Tai prisijungs prie POP serverio ir naudos Kerberos 4, kad autentikuotøsi á "
-"já."
-
-#: camel/providers/pop3/camel-pop3-store.c:199
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr "Negalëjau autentikuotis á KPOP serverá: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:215
-#, c-format
-msgid "Could not connect to server: %s"
-msgstr "Negalëjau prisijungti prie serverio: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:322
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr "Negalëjau prisijungti prie POP serverio %s."
-
-#: camel/providers/pop3/camel-pop3-store.c:361
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr "%sPraðom ávesti POP3 slaptaþodá dël %s@%s"
-
-#: camel/providers/pop3/camel-pop3-store.c:379
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-"Negalëjau prisijungti prie POP serverio.\n"
-"Klaida siunèiant vartotojo vardà: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:382
-#: camel/providers/pop3/camel-pop3-store.c:419
-msgid "(Unknown)"
-msgstr "(Neþinoma)"
-
-#: camel/providers/pop3/camel-pop3-store.c:409
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-"Negaliu prisijungti prie POP serverio.\n"
-"Jis nepalaiko praðyto autentikacijos mechanizmo."
-
-#: camel/providers/pop3/camel-pop3-store.c:417
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-"Negalëjau prisijungti prie POP serverio.\n"
-"Klaida siunèiant slaptaþodá: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:484
-#, c-format
-msgid "No such folder `%s'."
-msgstr "Nëra tokio aplanko ¥%s´."
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:37
-#: mail/mail-config.glade.h:57
-msgid "Sendmail"
-msgstr "Sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:39
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-"Paðto siuntimui, perleidþiant já vietinës sistemos ¥sendmail´ programai."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:107
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr "Negalëjau sukurti pipe á sendmail: %s: paðtas neiðsiøstas"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:124
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:150
-#, c-format
-msgid "Could not send message: %s"
-msgstr "Negalëjau iðsiøsti laiðko: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:163
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr "sendmail'as baigë darbà signalu %s: paðtas neiðsiøstas."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:170
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr "Negalëjau paleisti %s: paðtas neiðsiøstas."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:175
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr "sendmail'as baigë darbà bûsena %d: paðtas neiðsiøstas."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:194
-msgid "Could not find 'From' address in message"
-msgstr "Negalëjau rasti ¥Nuo´ adreso laiðke"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "sendmail"
-msgstr "sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:249
-msgid "Mail delivery via the sendmail program"
-msgstr "Paðto siuntimas per sendmail programà"
-
-#: camel/providers/smtp/camel-smtp-provider.c:38 mail/mail-config.glade.h:52
-msgid "SMTP"
-msgstr "SMTP"
-
-#: camel/providers/smtp/camel-smtp-provider.c:40
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr ""
-"Paðto siuntimui, prisijungiant prie nutolusio paðto serverio naudojant "
-"SMTP.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:165
-msgid "Syntax error, command unrecognized"
-msgstr "Sintaksës klaida, komanda neatpaþinta"
-
-#: camel/providers/smtp/camel-smtp-transport.c:167
-msgid "Syntax error in parameters or arguments"
-msgstr "Sintakses klaida parametruose arba argumentuose"
-
-#: camel/providers/smtp/camel-smtp-transport.c:169
-msgid "Command not implemented"
-msgstr "Komanda neágyvendinta"
-
-#: camel/providers/smtp/camel-smtp-transport.c:171
-msgid "Command parameter not implemented"
-msgstr "Komandos parametras neágyvendintas"
-
-#: camel/providers/smtp/camel-smtp-transport.c:173
-msgid "System status, or system help reply"
-msgstr "Sistemos bûsena, arba sistemos pagalbos atsakymas"
-
-#: camel/providers/smtp/camel-smtp-transport.c:175
-msgid "Help message"
-msgstr "Pagalbos þinutë"
-
-#: camel/providers/smtp/camel-smtp-transport.c:177
-msgid "Service ready"
-msgstr "Paslauga pasiruoðusi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:179
-#, fuzzy
-msgid "Service closing transmission channel"
-msgstr "Paslauga uþdaro"
-
-#: camel/providers/smtp/camel-smtp-transport.c:181
-msgid "Service not available, closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:183
-msgid "Requested mail action okay, completed"
-msgstr "Praðytas paðto veiksmas pavyko, uþbaigtas"
-
-#: camel/providers/smtp/camel-smtp-transport.c:185
-msgid "User not local; will forward to <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:187
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr "Praðytas paðto veiksmas neávykdytas: paðto dëþutë neprieinama"
-
-#: camel/providers/smtp/camel-smtp-transport.c:189
-msgid "Requested action not taken: mailbox unavailable"
-msgstr "Praðytas veiksmas neávykdytas: paðto dëþutë neprieinama"
-
-#: camel/providers/smtp/camel-smtp-transport.c:191
-msgid "Requested action aborted: error in processing"
-msgstr "Praðytas veiksmas nutrauktas: klaida vykdant"
-
-#: camel/providers/smtp/camel-smtp-transport.c:193
-msgid "User not local; please try <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:195
-msgid "Requested action not taken: insufficient system storage"
-msgstr "Praðytas veiksmas neávykdytas: trûksta vietos sistemoje"
-
-#: camel/providers/smtp/camel-smtp-transport.c:197
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr "Praðytas veiksmas neávykdytas: perþengta vietos saugykloje riba"
-
-#: camel/providers/smtp/camel-smtp-transport.c:199
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr "Praðytas veiksmas neávykdytas: paðto dëþutës vardas neleistinas"
-
-#: camel/providers/smtp/camel-smtp-transport.c:201
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:203
-msgid "Transaction failed"
-msgstr "Tranzakcija nepavyko"
-
-#: camel/providers/smtp/camel-smtp-transport.c:207
-#, fuzzy
-msgid "A password transition is needed"
-msgstr "Nepateiktas slaptaþodis."
-
-#: camel/providers/smtp/camel-smtp-transport.c:209
-msgid "Authentication mechanism is too weak"
-msgstr "Autentikacijos mechanizmas per silpnas"
-
-#: camel/providers/smtp/camel-smtp-transport.c:211
-msgid "Encryption required for requested authentication mechanism"
-msgstr "Praðytam autentikacijos mechanizmui bûtinas ðifravimas"
-
-#: camel/providers/smtp/camel-smtp-transport.c:213
-msgid "Temporary authentication failure"
-msgstr "Laikina autentikacijos nesëkmë"
-
-#: camel/providers/smtp/camel-smtp-transport.c:215
-msgid "Authentication required"
-msgstr "Autentikacija bûtina"
-
-#: camel/providers/smtp/camel-smtp-transport.c:305
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr "Atsakymo á pasisveikinimà klaida: %s: galbût nelemtinga"
-
-#: camel/providers/smtp/camel-smtp-transport.c:348
-#, c-format
-msgid "SMTP server %s does not support requested authentication type %s"
-msgstr "SMTP serveris %s nepalaiko praðyto autentikacijos tipo %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:387
-#, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr "%sPraðom ávesti SMTP slaptaþodá dël %s@%s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:410
-#, c-format
-msgid ""
-"Unable to authenticate to SMTP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Negalëjau autentikuotis á SMTP serverá.\n"
-"%s\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:526
-#, c-format
-msgid "SMTP server %s"
-msgstr "SMTP serveris %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:528
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr "SMTP paðto siuntimas per %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:553
-msgid "Cannot send message: sender address not defined."
-msgstr "Negaliu siøsti laiðko: siuntëjo adresas neapibrëþtas."
-
-#: camel/providers/smtp/camel-smtp-transport.c:560
-msgid "Cannot send message: sender address not valid."
-msgstr "Negaliu siøsti laiðko: siuntëjo adresas neteisingas."
-
-#: camel/providers/smtp/camel-smtp-transport.c:574
-msgid "Cannot send message: no recipients defined."
-msgstr "Negaliu siøsti laiðko: neapibrëþti jokie gavëjai."
-
-#: camel/providers/smtp/camel-smtp-transport.c:668
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr "Baigësi HELO uþklausos laiko riba: %s: nelemtinga"
-
-#: camel/providers/smtp/camel-smtp-transport.c:687
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr "HELO atsakymo klaida: %s: nelemtinga"
-
-#: camel/providers/smtp/camel-smtp-transport.c:720
-msgid "Error creating SASL authentication object."
-msgstr "Klaida sukuriant SASL autentikacijos objektà."
-
-#: camel/providers/smtp/camel-smtp-transport.c:735
-#: camel/providers/smtp/camel-smtp-transport.c:747
-#, c-format
-msgid "AUTH request timed out: %s"
-msgstr "Baigësi AUTH uþklausos laiko riba: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:797
-msgid "Bad authentication response from server.\n"
-msgstr "Blogas autentikacijos atsakymas ið serverio.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:823
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr "Baigësi MAIL FROM uþklausos laiko riba: %s: paðtas neiðsiøstas"
-
-#: camel/providers/smtp/camel-smtp-transport.c:842
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr "MAIL FROM atsakymo klaida: %s: paðtas neiðsiøstas"
-
-#: camel/providers/smtp/camel-smtp-transport.c:867
-#, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr "Baigësi RCPT TO uþklausos laiko riba: %s: paðtas neiðsiøstas"
-
-#: camel/providers/smtp/camel-smtp-transport.c:886
-#, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr "RCPT TO atsakymo klaida: %s: paðtas neiðsiøstas"
-
-#: camel/providers/smtp/camel-smtp-transport.c:917
-#, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr "Baigësi DATA uþklausos laiko riba: %s: paðtas neiðsiøstas"
-
-#: camel/providers/smtp/camel-smtp-transport.c:936
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr "DATA atsakymo klaida: %s: paðtas neiðsiøstas"
-
-#: camel/providers/smtp/camel-smtp-transport.c:951
-#: camel/providers/smtp/camel-smtp-transport.c:969
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr ""
-"Baigësi DATA siuntimo laiko riba: laiðko nutraukimas: %s: paðtas neiðsiøstas"
-
-#: camel/providers/smtp/camel-smtp-transport.c:988
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr "DATA atsakymo klaida: laiðko nutraukimas: %s: paðtas neiðsiøstas"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1012
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr "Baigësi RSET uþklausos laiko riba: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1031
-#, c-format
-msgid "RSET response error: %s"
-msgstr "RSET atsakymo klaida: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1054
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr "Baigësi QUIT uþklausos laiko riba: %s: nelemtinga"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1073
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr "QUIT atsakymo klaida: %s: nelemtinga"
-
-#: composer/e-msg-composer-attachment-bar.c:95
-msgid "1 byte"
-msgstr "1 baitas"
-
-#: composer/e-msg-composer-attachment-bar.c:97
-#, c-format
-msgid "%u bytes"
-msgstr "%u baitø"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fK"
-
-#: composer/e-msg-composer-attachment-bar.c:108
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fM"
-
-#: composer/e-msg-composer-attachment-bar.c:112
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fG"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:332 mail/mail-display.c:120
-msgid "attachment"
-msgstr "priedas"
-
-#: composer/e-msg-composer-attachment-bar.c:421
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr "Prisegti bylà"
-
-#: composer/e-msg-composer-attachment-bar.c:469
-msgid "Remove selected items from the attachment list"
-msgstr "Paðalinti paþymëtus elementus ið priedø sàraðo"
-
-#: composer/e-msg-composer-attachment-bar.c:500
-msgid "Add attachment..."
-msgstr "Prisegti priedà..."
-
-#: composer/e-msg-composer-attachment-bar.c:501
-msgid "Attach a file to the message"
-msgstr "Prisegti bylà prie ðio laiðko"
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/message-list.c:1083
-msgid "Attachment"
-msgstr "Priedas"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr "Priedo savybës"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr "Bylos vardas:"
-
-#: composer/e-msg-composer-attachment.glade.h:5
-msgid "Inline attachment"
-msgstr "Vidinis priedas"
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr "MIME tipas:"
-
-#: composer/e-msg-composer-attachment.glade.h:7
-msgid "Send as:"
-msgstr "Siøsti kaip:"
-
-#: composer/e-msg-composer.c:529
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-"Negalëjau atidaryti paraðo bylos %s: \n"
-"%s"
-
-#: composer/e-msg-composer.c:702
-msgid "Save as..."
-msgstr "Iðsaugoti kaip..."
-
-#: composer/e-msg-composer.c:713
-#, c-format
-msgid "Error saving file: %s"
-msgstr "Klaida iðsaugant bylà: %s"
-
-#: composer/e-msg-composer.c:733
-#, c-format
-msgid "Error loading file: %s"
-msgstr "Klaida ákeliant bylà: %s"
-
-#: composer/e-msg-composer.c:805
-msgid ""
-"Unable to open the drafts folder for this account.\n"
-"Would you like to use the default drafts folder?"
-msgstr ""
-"Nepavyko atidaryti ðios sàskaitos juodraðèiø aplanko.\n"
-"Ar norëtum naudoti áprastiná juodraðèiø aplankà?"
-
-#: composer/e-msg-composer.c:863 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:206
-msgid "Evolution"
-msgstr "Evolution"
-
-#: composer/e-msg-composer.c:869
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-"Ðis laiðkas nebuvo iðsiøstas.\n"
-"\n"
-"Ar norëtum iðsaugoti jo pakeitimus?"
-
-#: composer/e-msg-composer.c:894
-msgid "Open file"
-msgstr "Atidaryti bylà"
-
-#: composer/e-msg-composer.c:1020
-msgid "That file does not exist."
-msgstr "Tokios bylos nëra."
-
-#: composer/e-msg-composer.c:1030
-msgid "That is not a regular file."
-msgstr "Tai nëra paprasta byla."
-
-#: composer/e-msg-composer.c:1040
-msgid "That file exists but is not readable."
-msgstr "Byla yra, bet jos neámanoma perskaityti."
-
-#: composer/e-msg-composer.c:1050
-msgid "That file appeared accesible but open(2) failed."
-msgstr "Ta byla atrodë pasiekiama, bet open(2) nepavyko."
-
-#: composer/e-msg-composer.c:1072
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-"Byla yra labai didelë (virð 100K).\n"
-"Ar tu tikrai nori jà áterpti?"
-
-#: composer/e-msg-composer.c:1093
-msgid "An error occurred while reading the file."
-msgstr "Ávyko klaida, beskaitant bylà."
-
-#: composer/e-msg-composer.c:1394 composer/e-msg-composer.c:1737
-msgid "Compose a message"
-msgstr "Sukurti laiðkà"
-
-#: composer/e-msg-composer.c:1828
-msgid "Could not create composer window."
-msgstr "Negalëjau sukurti raðyklës lango."
-
-#: composer/e-msg-composer-hdrs.c:323
-msgid "Click here for the address book"
-msgstr "Paspausk èia, jei reikia adresø knygelës"
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:354 mail/mail-format.c:744
-msgid "From:"
-msgstr "Nuo:"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:360 mail/mail-format.c:746
-msgid "Reply-To:"
-msgstr "Atsakyti-kam:"
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:371 mail/mail-format.c:643
-msgid "Subject:"
-msgstr "Tema:"
-
-#: composer/e-msg-composer-hdrs.c:385 mail/mail-format.c:748
-msgid "To:"
-msgstr "Kam:"
-
-#: composer/e-msg-composer-hdrs.c:386
-msgid "Enter the recipients of the message"
-msgstr "Ávesk laiðko gavëjus"
-
-#: composer/e-msg-composer-hdrs.c:389 mail/mail-format.c:750
-msgid "Cc:"
-msgstr "Cc:"
-
-#: composer/e-msg-composer-hdrs.c:390
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "Ávesk adresus, kurie gaus ðio laiðko carbon copy"
-
-#: composer/e-msg-composer-hdrs.c:393
-msgid "Bcc:"
-msgstr "Bcc:"
-
-#: composer/e-msg-composer-hdrs.c:394
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"Ávesk adresus, kurie gaus ðio laiðko carbon copy, bet jø nesimatys laiðko "
-"gavëjø sàraðe."
-
-#: composer/evolution-composer.c:355
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-"Negalëjau sukurti raðyklës lango, nes tu dar nenurodei\n"
-"jokios asmenybës paðto komponente."
-
-#: composer/evolution-composer.c:370
-msgid "Cannot initialize Evolution's composer."
-msgstr "Negalëjau inicializuoti Evolution raðyklës."
-
-#: data/evolution.desktop.in.h:2
-msgid "The Evolution groupware suite"
-msgstr ""
-
-#: data/evolution.keys.in.h:1
-msgid "address card"
-msgstr "adreso kortelë"
-
-#: data/evolution.keys.in.h:2
-msgid "calendar information"
-msgstr "kalendoriaus informacija"
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:69 e-util/e-time-utils.c:117
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:477
-#: widgets/misc/e-dateedit.c:1284 widgets/misc/e-dateedit.c:1465
-msgid "%m/%d/%Y"
-msgstr "%Y-%m-%d"
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:87 e-util/e-time-utils.c:198
-msgid "%I:%M:%S %p%n"
-msgstr "%I:%M:%S %p%n"
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:90 e-util/e-time-utils.c:201
-msgid "%H:%M:%S%n"
-msgstr "%H:%M:%S%n"
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:94 e-util/e-time-utils.c:205
-msgid "%I:%M %p%n"
-msgstr "%I:%M %p%n"
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:97 e-util/e-time-utils.c:208
-msgid "%H:%M%n"
-msgstr "%H:%M%n"
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:269
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:473
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2505
-msgid "%a %m/%d/%Y"
-msgstr "%a %Y-%m-%d"
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:274
-msgid "%a %m/%d/%Y %H:%M"
-msgstr "%a %Y-%m-%d %H:%M"
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:283
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr "%a %Y-%m-%d %H:%M"
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:312 widgets/misc/e-dateedit.c:1259
-#: widgets/misc/e-dateedit.c:1318 widgets/misc/e-dateedit.c:1497
-msgid "%H:%M"
-msgstr "%H:%M"
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:315
-msgid "%H:%M:%S"
-msgstr "%H:%M:%S"
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:320 widgets/misc/e-dateedit.c:1262
-#: widgets/misc/e-dateedit.c:1321 widgets/misc/e-dateedit.c:1500
-msgid "%I:%M %p"
-msgstr "%H:%M"
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:323
-msgid "%I:%M:%S %p"
-msgstr "%H:%M:%S"
-
-#: executive-summary/component/component-factory.c:152
-#, fuzzy
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr "Negaliu inicializuoti Evolution paðto komponento."
-
-#: executive-summary/component/e-summary.c:926
-#, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"Negaliu atidaryti HTML bylos:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:940
-#, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr ""
-"Klaida skaitant duomenis:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:958
-msgid "File does not have a place for the services.\n"
-msgstr ""
-
-#: executive-summary/component/e-summary-callbacks.c:126
-msgid "Select a service"
-msgstr "Pasirink paslaugà"
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-"Tu gali pasirinkti kità HTML puslapá Executive Summary fonui.\n"
-"\n"
-"Tiesiog palik tuðèià, jei tenkina áprastinis fonas"
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr "Atidaryti %s su áprasta GNOME programa"
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr "Atidaryti %s su áprasta GNOME narðykle"
-
-#: executive-summary/component/e-summary-url.c:71
-#, c-format
-msgid "Send an email to %s"
-msgstr "Siøsti laiðkà á %s"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr "Pakeisti rodiná á %s"
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr "Paleisti %s"
-
-#: executive-summary/component/e-summary-url.c:75
-#, c-format
-msgid "Close %s"
-msgstr "Uþdaryti %s"
-
-#: executive-summary/component/e-summary-url.c:76
-#, c-format
-msgid "Move %s to the left"
-msgstr "Perkelti %s kairën"
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr "Perkelti %s deðinën"
-
-#: executive-summary/component/e-summary-url.c:78
-#, c-format
-msgid "Move %s into the previous row"
-msgstr "Perkelti %s á praeità eilutæ"
-
-#: executive-summary/component/e-summary-url.c:79
-#, c-format
-msgid "Move %s into the next row"
-msgstr "Perkelti %s á kità eilutæ"
-
-#: executive-summary/component/e-summary-url.c:80
-#, c-format
-msgid "Configure %s"
-msgstr "Konfigûruoti %s"
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr "Iðvaizda"
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr "Fonas:"
-
-#: executive-summary/component/main.c:62
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-msgid "Evolution component for the executive summary."
-msgstr ""
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-msgid "Factory for the Evolution executive summary component."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr "RDF apþvalgos gamykla."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-msgid "RDF Summary"
-msgstr "RDF apþvalga"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-msgid "Factory for the test bonobo component."
-msgstr "Testinio bonobo komponento gamykla."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-msgid "Factory for the test component."
-msgstr "Testinio komponento gamykla."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr "Testinë bonobo paslauga"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr "Testinë paslauga"
-
-#: executive-summary/test-service/rdf-summary.c:512
-#: executive-summary/test-service/rdf-summary.c:549
-#: executive-summary/test-service/rdf-summary.c:594
-#: widgets/misc/e-messagebox.c:166
-msgid "Error"
-msgstr "Klaida"
-
-#: executive-summary/test-service/rdf-summary.c:768
-msgid "Update automatically"
-msgstr "Atnaujinti automatiðkai"
-
-#: executive-summary/test-service/rdf-summary.c:778
-msgid "Update now"
-msgstr "Atnaujinti dabar"
-
-#: executive-summary/test-service/rdf-summary.c:788
-msgid "Update every "
-msgstr "Atnaujinti kas "
-
-#: executive-summary/test-service/rdf-summary.c:796
-#: filter/filter-datespec.c:83
-msgid "minutes"
-msgstr "minuèiø"
-
-#: filter/filter-datespec.c:78
-msgid "year"
-msgstr "metai"
-
-#: filter/filter-datespec.c:78
-msgid "years"
-msgstr "metø"
-
-#: filter/filter-datespec.c:79
-msgid "month"
-msgstr "mënesis"
-
-#: filter/filter-datespec.c:79
-msgid "months"
-msgstr "mënesiø"
-
-#: filter/filter-datespec.c:80
-msgid "week"
-msgstr "savaitë"
-
-#: filter/filter-datespec.c:80
-msgid "weeks"
-msgstr "savaièiø"
-
-#: filter/filter-datespec.c:81
-msgid "days"
-msgstr "dienø"
-
-#: filter/filter-datespec.c:82
-msgid "hour"
-msgstr "valanda"
-
-#: filter/filter-datespec.c:82
-msgid "hours"
-msgstr "valandø"
-
-#: filter/filter-datespec.c:83
-msgid "minute"
-msgstr "minutë"
-
-#: filter/filter-datespec.c:84
-msgid "second"
-msgstr "sekundë"
-
-#: filter/filter-datespec.c:84
-msgid "seconds"
-msgstr "sekundþiø"
-
-#: filter/filter-datespec.c:199
-msgid "Oops. You have forgotten to choose a date."
-msgstr "Vaje. Tu uþmirðai pasirinkti datà."
-
-#: filter/filter-datespec.c:201
-msgid "Oops. You have chosen an invalid date."
-msgstr "Vaje. Tu pasirinkai blogà datà."
-
-#: filter/filter-datespec.c:276
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-"Laiðko data bus palyginta su esamu laiku, kai\n"
-"paleidþiamas filtras ar atidaromas vAplankas."
-
-#: filter/filter-datespec.c:299
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-"Laiðko data bus palyginta su laiku,\n"
-"kurá tu nurodai èia."
-
-#: filter/filter-datespec.c:339
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-"Laiðko data bus palyginta su laiku, santykiniu\n"
-"filtro paleidimo laikui;\n"
-"pavyzdþiui, ¥prieð savaitæ´."
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:374
-msgid "the current time"
-msgstr "esamas laikas"
-
-#: filter/filter-datespec.c:374
-msgid "a time you specify"
-msgstr "tavo nurodytas laikas"
-
-#: filter/filter-datespec.c:375
-msgid "a time relative to the current time"
-msgstr "laikas, santykinis esamam laikui"
-
-#. The label
-#: filter/filter-datespec.c:433
-msgid "Compare against"
-msgstr "Palyginti su"
-
-#: filter/filter-datespec.c:550 filter/filter-datespec.c:710
-msgid "now"
-msgstr "dabar"
-
-#: filter/filter-datespec.c:707
-msgid "<click here to select a date>"
-msgstr "<spausk èia, kad pasirinktum datà>"
-
-#: filter/filter-editor.c:132 filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr "Filtravimo taisyklës"
-
-#. and now for the action area
-#: filter/filter-filter.c:452
-msgid "Then"
-msgstr "Tada"
-
-#: filter/filter-filter.c:466
-msgid "Add action"
-msgstr "Pridëti veiksmà"
-
-#: filter/filter-folder.c:147
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-"Vaje, tu pamirðai pasirinkti aplankà.\n"
-"Praðau, gráþk atgal ir nurodyk tikrà aplankà, á kurá perkelti laiðkus."
-
-#: filter/filter-folder.c:225 filter/vfolder-rule.c:285
-#: mail/mail-account-gui.c:682
-msgid "Select Folder"
-msgstr "Pasirink aplankà"
-
-#: filter/filter-folder.c:250
-msgid "Enter folder URI"
-msgstr "Ávesk aplanko URI"
-
-#: filter/filter-folder.c:296
-msgid "<click here to select a folder>"
-msgstr "<spausk èia, kad pasirinktum aplankà>"
-
-#: filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr "Keisti filtrus"
-
-#: filter/filter.glade.h:5
-msgid "Edit VFolders"
-msgstr "Keisti vAplankus"
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr "Gaunamas"
-
-#: filter/filter.glade.h:8
-msgid "Outgoing"
-msgstr "Siunèiamas"
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:130
-msgid "Virtual Folders"
-msgstr "Virtualûs aplankai"
-
-#: filter/filter.glade.h:11
-msgid "specific folders only"
-msgstr "tik nurodyti aplankai"
-
-#: filter/filter.glade.h:12
-msgid "vFolder Sources"
-msgstr "vAplankø ðaltiniai"
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr "su visais aktyviais nutolusiais aplankais"
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr "su visais vietiniais ir aktyviais nutolusiais aplankais"
-
-#: filter/filter.glade.h:15
-msgid "with all local folders"
-msgstr "su visais vietiniais aplankais"
-
-#: filter/filter-input.c:193
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-"Klaida reguliarioje iðraiðkoje ¥%s´:\n"
-"%s"
-
-#: filter/filter-part.c:488
-msgid "Test"
-msgstr "Bandyti"
-
-#: filter/filter-rule.c:626
-msgid "Rule name: "
-msgstr "Taisyklës pavadinimas:"
-
-#: filter/filter-rule.c:630
-msgid "Untitled"
-msgstr "Bevardë"
-
-#: filter/filter-rule.c:646
-msgid "If"
-msgstr "Jeigu"
-
-#: filter/filter-rule.c:664
-msgid "Execute actions"
-msgstr "Ávykdyti veiksmus"
-
-#: filter/filter-rule.c:668
-msgid "if all criteria are met"
-msgstr "jei visos sàlygos tenkinamos"
-
-#: filter/filter-rule.c:673
-msgid "if any criteria are met"
-msgstr "jei kuri nors sàlyga tenkinama"
-
-#: filter/filter-rule.c:684
-msgid "Add criterion"
-msgstr "Pridëti sàlygà"
-
-#: filter/filter-rule.c:770
-msgid "incoming"
-msgstr "gaunamas"
-
-#: filter/filter-rule.c:770
-msgid "outgoing"
-msgstr "siunèiamas"
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Colour"
-msgstr "Priskirti spalvà"
-
-#: filter/libfilter-i18n.h:4
-msgid "Assign Score"
-msgstr "Priskirti ávertá"
-
-#: filter/libfilter-i18n.h:5
-msgid "Attachments"
-msgstr "Priedai"
-
-#: filter/libfilter-i18n.h:7
-msgid "contains"
-msgstr "turi savyje"
-
-#: filter/libfilter-i18n.h:8
-msgid "Copy to Folder"
-msgstr "Kopijuoti á aplankà"
-
-#: filter/libfilter-i18n.h:9
-msgid "Date received"
-msgstr "Gavimo data"
-
-#: filter/libfilter-i18n.h:10
-msgid "Date sent"
-msgstr "Siuntimo data"
-
-#: filter/libfilter-i18n.h:12
-msgid "Deleted"
-msgstr "Iðtrintas"
-
-#: filter/libfilter-i18n.h:13
-msgid "does not contain"
-msgstr "neturi savyje"
-
-#: filter/libfilter-i18n.h:14
-msgid "does not end with"
-msgstr "nesibaigia"
-
-#: filter/libfilter-i18n.h:15
-msgid "does not exist"
-msgstr "neegzistuoja"
-
-#: filter/libfilter-i18n.h:16
-msgid "does not sound like"
-msgstr "neskamba panaðiai á"
-
-#: filter/libfilter-i18n.h:17
-msgid "does not start with"
-msgstr "neprasideda su"
-
-#: filter/libfilter-i18n.h:18
-msgid "Do Not Exist"
-msgstr "neegzistuoja"
-
-#: filter/libfilter-i18n.h:19
-msgid "Draft"
-msgstr "Juodraðtis"
-
-#: filter/libfilter-i18n.h:20
-msgid "ends with"
-msgstr "baigiasi su"
-
-#: filter/libfilter-i18n.h:21
-msgid "Exist"
-msgstr "Egzistuoja"
-
-#: filter/libfilter-i18n.h:22
-msgid "exists"
-msgstr "egzistuoja"
-
-#: filter/libfilter-i18n.h:23
-msgid "Expression"
-msgstr "Iðraiðka"
-
-#: filter/libfilter-i18n.h:24
-msgid "Forward to Address"
-msgstr "Persiøsti adresu"
-
-#: filter/libfilter-i18n.h:25
-msgid "Important"
-msgstr "Svarbus"
-
-#: filter/libfilter-i18n.h:26
-msgid "is"
-msgstr "yra"
-
-#: filter/libfilter-i18n.h:27
-msgid "is greater than"
-msgstr "yra didesnis uþ"
-
-#: filter/libfilter-i18n.h:28
-msgid "is less than"
-msgstr "yra maþesnis uþ"
-
-#: filter/libfilter-i18n.h:29
-msgid "is not"
-msgstr "nëra"
-
-#: filter/libfilter-i18n.h:30
-msgid "Mailing list"
-msgstr "Konferencija"
-
-#: filter/libfilter-i18n.h:31
-msgid "Message Body"
-msgstr "Laiðko tekstas"
-
-#: filter/libfilter-i18n.h:32
-msgid "Message Header"
-msgstr "Laiðko antraðtë"
-
-#: filter/libfilter-i18n.h:33
-msgid "Message was received"
-msgstr "Laiðkas buvo gautas"
-
-#: filter/libfilter-i18n.h:34
-msgid "Message was sent"
-msgstr "Laiðkas buvo iðsiøstas"
-
-#: filter/libfilter-i18n.h:35
-msgid "Move to Folder"
-msgstr "Perkelti á aplankà"
-
-#: filter/libfilter-i18n.h:36
-msgid "on or after"
-msgstr "tuo metu arba po"
-
-#: filter/libfilter-i18n.h:37
-msgid "on or before"
-msgstr "tuo metu ar prieð"
-
-#: filter/libfilter-i18n.h:38
-msgid "Read"
-msgstr "Skaitytas"
-
-#: filter/libfilter-i18n.h:39
-msgid "Recipients"
-msgstr "Gavëjai"
-
-#: filter/libfilter-i18n.h:40
-msgid "Regex Match"
-msgstr "Regex tenkina"
-
-#: filter/libfilter-i18n.h:41
-msgid "Replied to"
-msgstr "Atsakytas"
-
-#: filter/libfilter-i18n.h:42 filter/score-rule.c:204 filter/score-rule.c:206
-#: mail/message-list.c:1083
-msgid "Score"
-msgstr "Ávertis"
-
-#: filter/libfilter-i18n.h:43
-msgid "Sender"
-msgstr "Siuntëjas"
-
-#: filter/libfilter-i18n.h:44
-msgid "Set Status"
-msgstr "Priskirti bûsenà"
-
-#: filter/libfilter-i18n.h:45
-msgid "sounds like"
-msgstr "skamba panaðiai á"
-
-#: filter/libfilter-i18n.h:46
-msgid "Source Account"
-msgstr "Ðaltinio sàskaita"
-
-#: filter/libfilter-i18n.h:47
-msgid "Specific header"
-msgstr "Savita antraðtë"
-
-#: filter/libfilter-i18n.h:48
-msgid "starts with"
-msgstr "prasideda su"
-
-#: filter/libfilter-i18n.h:50
-msgid "Stop Processing"
-msgstr "Sustabdyti vykdymà"
-
-#: filter/libfilter-i18n.h:51 mail/message-list.c:1084
-msgid "Subject"
-msgstr "Tema"
-
-#: filter/libfilter-i18n.h:52
-msgid "was after"
-msgstr "buvo po"
-
-#: filter/libfilter-i18n.h:53
-msgid "was before"
-msgstr "buvo prieð"
-
-#: filter/rule-editor.c:147
-msgid "Rules"
-msgstr "Taisyklës"
-
-#: filter/rule-editor.c:240
-msgid "Add Rule"
-msgstr "Pridëti taisyklæ"
-
-#: filter/rule-editor.c:299
-msgid "Edit Rule"
-msgstr "Keisti taisyklæ"
-
-#: filter/score-editor.c:130
-msgid "Score Rules"
-msgstr "Áverèio taisyklës"
-
-#: mail/component-factory.c:329
-msgid "Cannot initialize Evolution's mail component."
-msgstr "Negaliu inicializuoti Evolution paðto komponento."
-
-#: mail/component-factory.c:402
-msgid "Cannot register storage with shell"
-msgstr "Negaliu uþregistruoti saugyklos apvalkale"
-
-#: mail/folder-browser.c:267
-msgid "Store search as vFolder"
-msgstr "Áraðyti paieðkà kaip vAplankà"
-
-#: mail/folder-browser.c:575 ui/evolution-mail.xml.h:91
-msgid "VFolder on _Subject"
-msgstr "vAplankas pagal _Temà"
-
-#: mail/folder-browser.c:578 ui/evolution-mail.xml.h:89
-msgid "VFolder on Se_nder"
-msgstr "vAplankas pagal Siu_ntëjà"
-
-#: mail/folder-browser.c:581 ui/evolution-mail.xml.h:90
-msgid "VFolder on _Recipients"
-msgstr "vAplankas pagal _Gavëjus"
-
-#: mail/folder-browser.c:584 ui/evolution-mail.xml.h:88
-msgid "VFolder on Mailing _List"
-msgstr "vAplankas pagal _Konferencijà"
-
-#: mail/folder-browser.c:590
-msgid "Filter on Sub_ject"
-msgstr "Filtras pagal T_emà"
-
-#: mail/folder-browser.c:593
-msgid "Filter on Sen_der"
-msgstr "Filtras pagal Si_untëjà"
-
-#: mail/folder-browser.c:596
-msgid "Filter on Re_cipients"
-msgstr "Filtras pagal Ga_vëjus"
-
-#: mail/folder-browser.c:599
-msgid "Filter on _Mailing List"
-msgstr "Filtras pagal K_onferencijà"
-
-#: mail/folder-browser.c:608
-msgid "_Open"
-msgstr "Ati_daryti"
-
-#: mail/folder-browser.c:610
-msgid "Resend"
-msgstr "Dar kartà siøsti"
-
-#: mail/folder-browser.c:612 ui/evolution-calendar.xml.h:43
-#: ui/evolution-mail.xml.h:113 ui/evolution-tasks.xml.h:8
-msgid "_Save As..."
-msgstr "Ið_saugoti kaip..."
-
-#: mail/folder-browser.c:614 ui/evolution-event-editor.xml.h:69
-#: ui/evolution-task-editor-dialog.xml.h:82 ui/evolution-tasks.xml.h:7
-msgid "_Print"
-msgstr "S_pausdinti"
-
-#: mail/folder-browser.c:619
-msgid "_Reply to Sender"
-msgstr "_Atsakyti siuntëjui"
-
-#: mail/folder-browser.c:621 ui/evolution-mail.xml.h:66
-msgid "Reply to _All"
-msgstr "Atsakyti _visiems"
-
-#: mail/folder-browser.c:623 ui/evolution-mail.xml.h:102
-msgid "_Forward"
-msgstr "P_ersiøsti"
-
-#: mail/folder-browser.c:625
-msgid "Forward _inline"
-msgstr "Persiøsti v_iduje"
-
-#: mail/folder-browser.c:628 ui/evolution-mail.xml.h:40
-msgid "Mar_k as Read"
-msgstr "Paþymëti s_kaitytu"
-
-#: mail/folder-browser.c:630 ui/evolution-mail.xml.h:44
-msgid "Mark as U_nread"
-msgstr "Paþymëti _neskaitytu"
-
-#: mail/folder-browser.c:635 ui/evolution-mail.xml.h:107
-msgid "_Move to Folder..."
-msgstr "Pe_rkelti á aplankà..."
-
-#: mail/folder-browser.c:637 ui/evolution-mail.xml.h:96
-msgid "_Copy to Folder..."
-msgstr "K_opijuoti á aplankà..."
-
-#: mail/folder-browser.c:641 ui/evolution-mail.xml.h:118
-msgid "_Undelete"
-msgstr "S_ugràþinti"
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:651 ui/evolution-mail.xml.h:1
-msgid "Apply Filters"
-msgstr "Pritaikyti filtrus"
-
-#: mail/folder-browser.c:655
-msgid "Create Ru_le From Message"
-msgstr "Sukurti _taisyklæ ið laiðko"
-
-#: mail/folder-browser.c:794
-msgid "Filter on Mailing List"
-msgstr "Filtras pagal Konferencijà"
-
-#: mail/folder-browser.c:795
-msgid "VFolder on Mailing List"
-msgstr "vAplankas pagal Konferencijà"
-
-#: mail/folder-browser.c:797
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr "Filtras pagal Konferencijà (%s)"
-
-#: mail/folder-browser.c:798
-#, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr "vAplankas pagal Konferencijà (%s)"
-
-#: mail/folder-browser-factory.c:213
-#, c-format
-msgid "Properties for \"%s\""
-msgstr "¥%s´ savybës"
-
-#: mail/folder-browser-factory.c:215 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-msgid "Properties"
-msgstr "Savybës"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr "Evolution komponentas paðtui tvarkyti."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-msgid "Evolution mail composer."
-msgstr "Evolution paðto raðyklë."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-#, fuzzy
-msgid "Evolution mail executive summary component."
-msgstr "Evolution paðto komponento."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-msgid "Evolution mail folder display component."
-msgstr "Evolution paðto aplanko vaizdavimo komponentas."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-msgid "Evolution mail folder factory component."
-msgstr "Evolution paðto aplanko gamyklos komponentas."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-msgid "Factory for the Evolution composer."
-msgstr "Evolution raðyklës komponento gamykla."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-msgid "Factory for the Evolution mail component."
-msgstr "Evolution paðto komponento gamykla."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-msgid "Factory for the Mail Summary component."
-msgstr "Paðto apþvalgos komponento gamykla."
-
-#: mail/importers/elm-importer.c:420
-msgid ""
-"Evolution has found Elm mail files.\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-"Evolution rado Elm paðto bylø.\n"
-"Ar norëtum jas importuoti á Evolution?"
-
-#: mail/importers/elm-importer.c:430
-msgid "Elm mail"
-msgstr "Elm paðtas"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:1
-msgid "Factory to import mbox into Evolution"
-msgstr "Gamykla importuoti mbox byloms á Evolution"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:2
-msgid "Imports mbox files into Evolution"
-msgstr "Importuoja mbox bylas á Evolution"
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:1
-msgid "Factory to import Outlook Express 4 mails into Evolution"
-msgstr "Gamykla importuoti Outlook Express 4 byloms á Evolution"
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:2
-msgid "Imports Outlook Express 4 files into Evolution"
-msgstr "Importuoja Outlook Express 4 bylas á Evolution"
-
-#: mail/importers/netscape-importer.c:440
-msgid ""
-"Evolution has found Netscape mail files.\n"
-"Would you like them to be imported into Evolution?"
-msgstr ""
-"Evolution rado Netscape paðto bylø.\n"
-"Ar norëtum jas importuoti á Evolution?"
-
-#: mail/importers/pine-importer.c:385
-msgid ""
-"Evolution has found Pine mail files.\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-"Evolution rado Pine paðto bylø.\n"
-"Ar norëtum jas importuoti á Evolution?"
-
-#: mail/importers/pine-importer.c:395
-msgid "Pine mail"
-msgstr "Pine paðtas"
-
-#: mail/local-config.glade.h:1
-msgid "Current store format:"
-msgstr "Esamas saugyklos formatas:"
-
-#: mail/local-config.glade.h:2
-msgid "Mailbox Format"
-msgstr "Paðto dëþutës formatas"
-
-#: mail/local-config.glade.h:3
-msgid "New store format:"
-msgstr "Naujas saugyklos formatas:"
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-"Pastaba: Konvertuojant tarp paðto dëþutës formatø, nesëkmë\n"
-"(tokia kaip vietos diske trûkumas) negali bûti savaime\n"
-"atstatoma. Naudok ðià priemonæ atsargiai."
-
-#: mail/local-config.glade.h:7
-msgid "maildir"
-msgstr "maildir"
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr "mbox"
-
-#: mail/local-config.glade.h:9
-msgid "mh"
-msgstr "mh"
-
-#: mail/mail-account-editor.c:105
-msgid "You have not filled in all of the required information."
-msgstr "Tu neávedei visos bûtinos informacijos."
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:173
-msgid "Evolution Account Editor"
-msgstr "Evolution sàskaitø tvarkyklë"
-
-#: mail/mail-accounts.c:121 mail/mail-accounts.c:165
-msgid " (default)"
-msgstr " (áprasta)"
-
-#: mail/mail-accounts.c:197
-msgid "Disable"
-msgstr "Iðjungti"
-
-#: mail/mail-accounts.c:199 mail/mail-config.glade.h:25
-msgid "Enable"
-msgstr "Ájungti"
-
-#: mail/mail-accounts.c:280 mail/mail-accounts.c:284
-msgid "Are you sure you want to delete this account?"
-msgstr "Ar tu tikrai nori iðtrinti ðià sàskaità?"
-
-#: mail/mail-accounts.c:418 mail/mail-accounts.c:422
-msgid "Are you sure you want to delete this news account?"
-msgstr "Ar tu tikrai nori iðtrinti ðià naujienø sàskaità?"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:536
-msgid "Evolution Account Manager"
-msgstr "Evolution sàskaitø tvarkyklë"
-
-#: mail/mail-autofilter.c:70
-#, c-format
-msgid "Mail to %s"
-msgstr "Laiðkai á %s"
-
-#: mail/mail-autofilter.c:213
-#, c-format
-msgid "Subject is %s"
-msgstr "Tema yra %s"
-
-#: mail/mail-autofilter.c:229
-#, c-format
-msgid "Mail from %s"
-msgstr "Laiðkai nuo %s"
-
-#: mail/mail-autofilter.c:285
-#, c-format
-msgid "%s mailing list"
-msgstr "%s konferencija"
-
-#: mail/mail-autofilter.c:335 mail/mail-autofilter.c:356
-msgid "Add Filter Rule"
-msgstr "Pridëti filtro taisyklæ"
-
-#: mail/mail-callbacks.c:96
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-"Tu dar nesutvarkei paðto kliento.\n"
-"Tik kai padarysi tai, tu galësi siøsti,\n"
-"gauti ir raðyti laiðkus.\n"
-"Ar norëtum sutvarkyti já dabar?"
-
-#: mail/mail-callbacks.c:149
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-"Tu turi susitvarkyti asmenybæ,\n"
-"tik tada galësi kurti laiðkus."
-
-#: mail/mail-callbacks.c:161
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-"Tu turi sutvarkyti paðto siuntimà,\n"
-"tik tada galësi kurti laiðkus."
-
-#: mail/mail-callbacks.c:205
-msgid "You have not set a mail transport method"
-msgstr "Tu nenustatei paðto siuntimo metodo"
-
-#: mail/mail-callbacks.c:238
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-"Ðis laiðkas neturi temos.\n"
-"Tikrai siøsti?"
-
-#: mail/mail-callbacks.c:311
-msgid "You must specify recipients in order to send this message."
-msgstr "Tu turi nurodyti gavëjus, kad galëtum iðsiøsti ðá laiðkà."
-
-#: mail/mail-callbacks.c:354
-msgid "You must configure an account before you can send this email."
-msgstr "Tu turi susitvarkyti sàskaità, tik tada galësi iðsiøsti ðá laiðkà."
-
-#: mail/mail-callbacks.c:593
-#, c-format
-msgid "On %s, %s wrote:"
-msgstr ""
-
-#: mail/mail-callbacks.c:774
-msgid "Forwarded message:\n"
-msgstr "Persiøstas laiðkas:\n"
-
-#: mail/mail-callbacks.c:877
-msgid "Move message(s) to"
-msgstr "Perkelti laiðkà(us) á"
-
-#: mail/mail-callbacks.c:879
-msgid "Copy message(s) to"
-msgstr "Kopijuoti laiðkà(us) á"
-
-#: mail/mail-callbacks.c:1156
-#, c-format
-msgid "Are you sure you want to edit all %d messages?"
-msgstr "Ar tu tikrai nori taisyti visus %d laiðkus?"
-
-#: mail/mail-callbacks.c:1170
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-"Tu gali taisyti tik laiðkus, esanèius \n"
-"Juodraðèiø aplanke."
-
-#: mail/mail-callbacks.c:1202
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-"Tu gali ið naujo pasiøsti laiðkus\n"
-"tik ið Sent aplanko."
-
-#: mail/mail-callbacks.c:1224
-msgid "No Message Selected"
-msgstr "Joks laiðkas nepaþymëtas"
-
-#: mail/mail-callbacks.c:1250 mail/mail-display.c:90
-msgid "Overwrite file?"
-msgstr "Uþraðyti bylà?"
-
-#: mail/mail-callbacks.c:1254 mail/mail-display.c:94
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-"Byla tokiu vardu jau yra.\n"
-"Uþraðyti jà?"
-
-#: mail/mail-callbacks.c:1298
-msgid "Save Message As..."
-msgstr "Iðsaugoti laiðkà kaip..."
-
-#: mail/mail-callbacks.c:1300
-msgid "Save Messages As..."
-msgstr "Iðsaugoti laiðkus kaip..."
-
-#: mail/mail-callbacks.c:1435
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-"Klaida, ákeliant filtro informacijà:\n"
-"%s"
-
-#: mail/mail-callbacks.c:1484 ui/evolution-mail.xml.h:56
-msgid "Print Message"
-msgstr "Spausdinti laiðkà"
-
-#: mail/mail-callbacks.c:1531
-msgid "Printing of message failed"
-msgstr "Nepavyko atspausdinti laiðko"
-
-#: mail/mail-callbacks.c:1609
-#, c-format
-msgid "Are you sure you want to open all %d messages in separate windows?"
-msgstr "Ar tu tikrai nori atidaryti visus %d laiðkus atskiruose languose?"
-
-#: mail/mail-config.c:1121 mail/mail-config.c:1124
-msgid "Connecting to server..."
-msgstr "Jungiamasi prie serverio..."
-
-#: mail/mail-config-druid.c:99
-msgid ""
-"Please enter your name and email address below. The \"optional\" fields "
-"below do not need to be filled in, unless you wish to include this "
-"information in email you send."
-msgstr ""
-"Praðau ávesti savo vardà ir elektroninio paðto adresà þemiau. \"Nebûtini\" "
-"laukai þemiau gali likti tuðti, nebent jei norëtum átraukti ðià informacijà "
-"tavo siunèiamame paðte."
-
-#: mail/mail-config-druid.c:101
-msgid ""
-"Please enter information about your incoming mail server below. If you don't "
-"know what kind of server you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"Praðom þemiau ávesti informacijà apie tavo gaunamo paðto serverá. Jei tu "
-"neþinai, kokios rûðies serverá naudoji, paklausk savo sistemos "
-"administratoriaus arba interneto paslaugø teikëjo."
-
-#: mail/mail-config-druid.c:105
-msgid ""
-"Please enter information about your outgoing mail protocol below. If you "
-"don't know which protocol you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"Praðom þemiau ávesti informacijà apie tavo siunèiamo paðto serverá. Jei tu "
-"neþinai, kurá protokolà naudoji, paklausk savo sistemos administratoriaus "
-"arba interneto paslaugø teikëjo."
-
-#: mail/mail-config-druid.c:107
-msgid ""
-"You are almost done with the mail configuration process. The identity, "
-"incoming mail server and outgoing mail transport method which you provided "
-"will be grouped together to make an Evolution mail account. Please enter a "
-"name for this account in the space below. This name will be used for display "
-"purposes only."
-msgstr ""
-"Tu jau beveik baigei konfigûruoti savo paðtà. Asmenybë, gaunamo paðto "
-"serversi bei paðto siuntimo metodas bus sugrupuoti á vienà sàskaità. Praðom "
-"ávesti ðios sàskaitos pavadinimà þemiau esanèiame laukelyje. Ðis pavadinimas "
-"bus naudojamas tik vaizdavimui."
-
-#. set window title
-#: mail/mail-config-druid.c:445
-msgid "Evolution Account Wizard"
-msgstr "Evolution sàskaitø meistras"
-
-#: mail/mail-config.glade.h:1
-msgid " Check for supported types "
-msgstr " Patikrinti, kokie tipai palaikomi "
-
-#: mail/mail-config.glade.h:2
-msgid " color"
-msgstr " spalva"
-
-#: mail/mail-config.glade.h:3
-msgid "Account"
-msgstr "Sàskaita"
-
-#: mail/mail-config.glade.h:4
-msgid "Account Information"
-msgstr "Sàskaitos informacija"
-
-#: mail/mail-config.glade.h:5
-msgid "Account Management"
-msgstr "Sàskaitos tvarkymas"
-
-#: mail/mail-config.glade.h:6
-msgid "Accounts"
-msgstr "Sàskaitos"
-
-#: mail/mail-config.glade.h:8
-msgid "Authentication"
-msgstr "Autentikacija"
-
-#: mail/mail-config.glade.h:9
-msgid "Authentication Type: "
-msgstr "Autentikacijos tipas: "
-
-#: mail/mail-config.glade.h:10
-msgid "Automatically check for new mail every"
-msgstr "Automatiðkai tikrinti paðtà kas"
-
-#: mail/mail-config.glade.h:12
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-"Sveikinu, tavo paðto konfigûravimas uþbaigtas.\n"
-"\n"
-"Tu jau gali siøsti ir gauti laiðkus, naudodamasis Evolution.\n"
-"\n"
-"Paspausk ¥Baigti´, kad iðsaugotum nuostatas."
-
-#: mail/mail-config.glade.h:18
-msgid "De_fault"
-msgstr "Áp_rastas"
-
-#: mail/mail-config.glade.h:20
-msgid "Done"
-msgstr "Baigta"
-
-#: mail/mail-config.glade.h:21
-msgid "Drafts"
-msgstr "Juodraðèiai"
-
-#: mail/mail-config.glade.h:22
-msgid "Drafts folder:"
-msgstr "Juodraðèiø aplankas:"
-
-#: mail/mail-config.glade.h:24
-msgid "Email Address:"
-msgstr "El. paðto adresas:"
-
-#: mail/mail-config.glade.h:26
-msgid "Full Name:"
-msgstr "Pilnas vardas:"
-
-#: mail/mail-config.glade.h:27
-msgid "Highlight citations with "
-msgstr "Paryðkinti citatas su "
-
-#: mail/mail-config.glade.h:29
-msgid "IMAPv4 "
-msgstr "IMAPv4 "
-
-#: mail/mail-config.glade.h:30
-msgid "Identity"
-msgstr "Asmenybë"
-
-#: mail/mail-config.glade.h:31
-msgid "Kerberos "
-msgstr "Kerberos "
-
-#: mail/mail-config.glade.h:32
-msgid "Mail Configuration"
-msgstr "Paðto nustatymas"
-
-#: mail/mail-config.glade.h:33
-msgid "Make this my default account"
-msgstr "Padaryti ðià sàskaità áprastine"
-
-#: mail/mail-config.glade.h:34
-msgid "Mark messages as \"Read\" after:"
-msgstr "Paþymëti laiðkus skaitytais po:"
-
-#: mail/mail-config.glade.h:36
-msgid "News"
-msgstr "Naujienos"
-
-#: mail/mail-config.glade.h:38
-msgid "Optional Information"
-msgstr "Nebûtina informacija"
-
-#: mail/mail-config.glade.h:39
-msgid "Organization:"
-msgstr "Organizacija:"
-
-#: mail/mail-config.glade.h:41
-msgid "PGP binary path:"
-msgstr ""
-
-#: mail/mail-config.glade.h:46
-msgid "Qmail maildir "
-msgstr "Qmail maildir "
-
-#: mail/mail-config.glade.h:47
-msgid "Receiving Email"
-msgstr "Paðto gavimas"
-
-#: mail/mail-config.glade.h:48
-msgid "Receiving Mail"
-msgstr "Paðto gavimas"
-
-#: mail/mail-config.glade.h:49
-msgid "Receiving Options"
-msgstr "Gavimo nuostatos"
-
-#: mail/mail-config.glade.h:51
-msgid "Required Information"
-msgstr "Bûtina informacija"
-
-#: mail/mail-config.glade.h:53
-#, fuzzy
-msgid "Select PGP binary"
-msgstr "Pasirink PGP"
-
-#: mail/mail-config.glade.h:54
-msgid "Send mail in HTML format by default."
-msgstr "Áprastai siøsti laiðkus HTML formatu."
-
-#: mail/mail-config.glade.h:55
-msgid "Sending Email"
-msgstr "Paðto siuntimas"
-
-#: mail/mail-config.glade.h:56
-msgid "Sending Mail"
-msgstr "Paðto siuntimas"
-
-#: mail/mail-config.glade.h:58
-msgid "Sent"
-msgstr "Iðsiøsta"
-
-#: mail/mail-config.glade.h:59
-msgid "Sent and Draft Messages"
-msgstr "Iðsiøsti laiðkai ir juodraðèiai"
-
-#: mail/mail-config.glade.h:60
-msgid "Sent messages folder:"
-msgstr "Iðsiøstø laiðkø aplankas:"
-
-#: mail/mail-config.glade.h:61
-msgid "Server Configuration"
-msgstr "Serverio nustatymas"
-
-#: mail/mail-config.glade.h:62
-msgid "Server Type: "
-msgstr "Serverio tipas:"
-
-#: mail/mail-config.glade.h:63
-msgid "Server requires authentication"
-msgstr "Serveris reikalauja autentikacijos"
-
-#: mail/mail-config.glade.h:64
-msgid "Signature file:"
-msgstr "Paraðo byla:"
-
-#: mail/mail-config.glade.h:65
-msgid "Sources"
-msgstr "Ðaltiniai"
-
-#: mail/mail-config.glade.h:66
-msgid "Special Folders"
-msgstr "Ypatingi aplankai"
-
-#: mail/mail-config.glade.h:67
-msgid "Standard Unix mbox"
-msgstr "Standartinë Unix mbox"
-
-#: mail/mail-config.glade.h:68
-msgid "Type"
-msgstr "Tipas"
-
-#: mail/mail-config.glade.h:69
-msgid "Use secure connection (SSL)"
-msgstr "Naudoti saugià jungtá (SSL)"
-
-#: mail/mail-config.glade.h:70
-msgid "Username:"
-msgstr "Vartotojo vardas:"
-
-#: mail/mail-config.glade.h:71
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-"Sveikas patekæs á Evolution paðto nustatymo meistrà.\n"
-"\n"
-"Spausk ¥Tolyn´, kad pradëtum."
-
-#: mail/mail-config.glade.h:76 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:43 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:30
-msgid "_Edit"
-msgstr "K_eisti"
-
-#: mail/mail-display.c:194
-msgid "Save Attachment"
-msgstr "Iðsaugoti priedà"
-
-#: mail/mail-display.c:234
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr "Negalëjau sukurti laikino katalogo: %s"
-
-#: mail/mail-display.c:295
-msgid "Save to Disk..."
-msgstr "Iðsaugoti á diskà..."
-
-#: mail/mail-display.c:297
-#, c-format
-msgid "Open in %s..."
-msgstr "Atidaryti su %s..."
-
-#: mail/mail-display.c:299
-msgid "View Inline"
-msgstr "Þiûrëti viduje"
-
-#: mail/mail-display.c:334
-msgid "External Viewer"
-msgstr "Iðorinë þiûryklë"
-
-#: mail/mail-display.c:357
-#, c-format
-msgid "View Inline (via %s)"
-msgstr "Þiûrëti viduje (per %s)"
-
-#: mail/mail-display.c:361
-msgid "Hide"
-msgstr "Slëpti"
-
-#: mail/mail-display.c:1107
-msgid "Open link in browser"
-msgstr "Nuorodà atidaryti narðyklëje"
-
-#: mail/mail-display.c:1109
-msgid "Save as (FIXME)"
-msgstr "Iðsaugoti kaip (FIXME)"
-
-#: mail/mail-display.c:1111
-msgid "Copy location (FIXME)"
-msgstr "Kopijuoti adresà (FIXME)"
-
-#: mail/mail-format.c:522
-#, c-format
-msgid "%s attachment"
-msgstr "%s priedas"
-
-#: mail/mail-format.c:564
-msgid "Could not parse MIME message. Displaying as source."
-msgstr "Negalëjau iðnagrinëti MIME laiðko. Rodomas ðaltinis."
-
-#: mail/mail-format.c:771
-msgid "Loading message content"
-msgstr "Ákeliamas laiðko turinys"
-
-#: mail/mail-format.c:1080
-#, fuzzy
-msgid "No GPG/PGP program configured."
-msgstr "Nëra jokios PGP/GPG programos."
-
-#: mail/mail-format.c:1095
-msgid "Encrypted message not displayed"
-msgstr "Uþðifruotas laiðkas neparodytas"
-
-#: mail/mail-format.c:1101
-msgid "Encrypted message"
-msgstr "Uþðifruotas laiðkas"
-
-#: mail/mail-format.c:1102
-msgid "Click icon to decrypt."
-msgstr "Paspausk ant ikonos, kad iððifruotum."
-
-#: mail/mail-format.c:1192 mail/mail-format.c:1580
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr ""
-"Ðis laiðkas yra pasiraðytas skaitmeniniu paraðu, patikrinus nustatyta, kad "
-"jis autentiðkas"
-
-#: mail/mail-format.c:1200 mail/mail-format.c:1588
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr ""
-"Ðis laiðkas yra pasiraðytas skaitmeniniu paraðu, bet neina patikrinti, ar "
-"jis autentiðkas"
-
-#: mail/mail-format.c:1801
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr "Rodyklë á FTP svetainæ (%s)"
-
-#: mail/mail-format.c:1813
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr "Rodyklë á vietinæ bylà (%s), galiojanti svetainëje ¥%s´"
-
-#: mail/mail-format.c:1817
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr "Rodyklë á vietinæ bylà (%s)"
-
-#: mail/mail-format.c:1851
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr "Rodyklë á neþinomus iðorinius duomenis (¥%s´ tipo)"
-
-#: mail/mail-format.c:1856
-#, fuzzy
-msgid "Malformed external-body part."
-msgstr "Blogai suformuota iðorinio kûno dalis."
-
-#: mail/mail-local.c:509
-#, c-format
-msgid "Opening '%s'"
-msgstr "Atidaromas ¥%s´"
-
-#: mail/mail-local.c:787
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr "Keièiamas aplanko ¥%s´ formatas á ¥%s´"
-
-#: mail/mail-local.c:791
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr "Pakeisti aplanko ¥%s´ formatà á ¥%s´"
-
-#: mail/mail-local.c:814
-msgid "Reconfiguring folder"
-msgstr "Perkonfigûruojamas aplankas"
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:843
-msgid "Closing current folder"
-msgstr "Uþdaromas esamas aplankas"
-
-#: mail/mail-local.c:875
-msgid "Renaming old folder and opening"
-msgstr "Pervadinamas senas aplankas ir atidaromas"
-
-#: mail/mail-local.c:893
-msgid "Creating new folder"
-msgstr "Kuriamas naujas aplankas"
-
-#: mail/mail-local.c:907
-msgid "Copying messages"
-msgstr "Kopijuojami laiðkai"
-
-#: mail/mail-local.c:924
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-"Negaliu iðsaugoti metainfo. Tikriausiai tau daugiau\n"
-"nebepavyks atidaryti ðio aplanko: %s"
-
-#: mail/mail-local.c:963
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-"Jei tu nebegali daugiau atidaryti ðios paðto\n"
-"dëþutës, tau teks sutaisyti jà rankutëmis."
-
-#: mail/mail-mt.c:190
-#, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-"Klaida ¥%s´ metu:\n"
-"%s"
-
-#: mail/mail-mt.c:193
-#, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-"Klaida vykdant veiksmà:\n"
-"%s"
-
-#: mail/mail-mt.c:516 mail/mail-mt.c:545 mail/mail-mt.c:880
-msgid "Working"
-msgstr "Dirbama"
-
-#: mail/mail-mt.c:862
-msgid "Evolution progress"
-msgstr "Evolution paþanga"
-
-#: mail/mail-ops.c:599
-#, c-format
-msgid "Sending \"%s\""
-msgstr "Siunèiamas ¥%s´"
-
-#: mail/mail-ops.c:603
-msgid "Sending message"
-msgstr "Siunèiamas laiðkas"
-
-#: mail/mail-ops.c:718
-#, c-format
-msgid "Sending message %d of %d"
-msgstr "Siunèiamas laiðkas %d ið %d"
-
-#: mail/mail-ops.c:737
-#, c-format
-msgid "Failed on message %d of %d"
-msgstr "Nesëkmë ties laiðku %d ið %d"
-
-#: mail/mail-ops.c:739 mail/mail-send-recv.c:475
-msgid "Complete."
-msgstr "Uþbaigta."
-
-#: mail/mail-ops.c:825
-msgid "Saving message to folder"
-msgstr "Laiðkas iðsaugomas á aplankà"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Moving messages to %s"
-msgstr "Laiðkai perkeliami á %s"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Copying messages to %s"
-msgstr "Laiðkai kopijuojami á %s"
-
-#: mail/mail-ops.c:914
-msgid "Moving"
-msgstr "Perkeliama"
-
-#: mail/mail-ops.c:917
-msgid "Copying"
-msgstr "Kopijuojama"
-
-#: mail/mail-ops.c:992
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr "Skanuojami aplankas, esantys ¥%s´"
-
-#: mail/mail-ops.c:1154
-msgid "Forwarded messages"
-msgstr "Persiøsti laiðkai"
-
-#: mail/mail-ops.c:1195 mail/mail-ops.c:1333
-#, c-format
-msgid "Opening folder %s"
-msgstr "Atidaromas aplankas %s"
-
-#: mail/mail-ops.c:1262
-#, c-format
-msgid "Opening store %s"
-msgstr "Atidaroma saugykla %s"
-
-#: mail/mail-ops.c:1449
-msgid "Expunging folder"
-msgstr "Iðvalomas aplankas"
-
-#: mail/mail-ops.c:1498
-#, c-format
-msgid "Retrieving message %s"
-msgstr "Gaunamas laiðkas %s"
-
-#: mail/mail-ops.c:1565
-msgid "Retrieving messages"
-msgstr "Gaunami laiðkai"
-
-#: mail/mail-ops.c:1575
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr "Gaunamas laiðkas numeris %d ið %d (uid ¥%s´)"
-
-#: mail/mail-ops.c:1649
-msgid "Saving messages"
-msgstr "Iðsaugomi laiðkai"
-
-#: mail/mail-ops.c:1728
-#, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr ""
-"Negaliu sukurti iðvesties bylos: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1741
-#, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr "Iðsaugomas laiðkas %d ið %d (uid ¥%s´)"
-
-#: mail/mail-ops.c:1755
-#, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr ""
-"Klaida iðsaugant laiðkus á: %s:\n"
-" %s"
-
-#: mail/mail-ops.c:1829
-msgid "Saving attachment"
-msgstr "Iðsaugomas priedas"
-
-#: mail/mail-ops.c:1844
-#, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr ""
-"Negaliu sukurti iðvesties bylos: %s:\n"
-" %s"
-
-#: mail/mail-ops.c:1872
-#, c-format
-msgid "Could not write data: %s"
-msgstr "Negalëjau áraðyti duomenø: %s"
-
-#: mail/mail-search-dialogue.c:113
-msgid "_Search"
-msgstr "_Ieðkoti"
-
-#: mail/mail-send-recv.c:138
-msgid "Cancelling..."
-msgstr "Nutraukiama..."
-
-#: mail/mail-send-recv.c:233
-msgid "Send & Receive mail"
-msgstr "Siunèiamas ir gaunamas paðtas"
-
-#: mail/mail-send-recv.c:236
-msgid "Receiving"
-msgstr "Gaunamas"
-
-#: mail/mail-send-recv.c:285
-msgid "Updating..."
-msgstr "Atnaujinama..."
-
-#: mail/mail-send-recv.c:287 mail/mail-send-recv.c:333
-msgid "Waiting..."
-msgstr "Laukiama..."
-
-#: mail/mail-send-recv.c:306
-msgid "Sending"
-msgstr "Siunèiamas"
-
-#: mail/mail-send-recv.c:471
-msgid "Cancelled."
-msgstr "Nutraukta."
-
-#: mail/mail-summary.c:110
-msgid "Incomplete message written on pipe!"
-msgstr "Nepilnas laiðkas suraðytas á pipe!"
-
-#: mail/mail-summary.c:468
-msgid "Mail Summary"
-msgstr "Paðto apþvalga"
-
-#: mail/mail-tools.c:141
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr "Negalëjau sukurti laikinos mbox ¥%s´: %s"
-
-#: mail/mail-tools.c:188
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr "[%s] (persiøstas laiðkas)"
-
-#: mail/mail-tools.c:198
-msgid "Fwd: (no subject)"
-msgstr "Fwd: (be temos)"
-
-#: mail/mail-tools.c:215
-#, c-format
-msgid "Forwarded message - %s"
-msgstr "Persiøstas laiðkas - %s"
-
-#: mail/mail-tools.c:217
-msgid "Forwarded message (no subject)"
-msgstr "Persiøstas laiðkas (be temos)"
-
-#: mail/mail-tools.c:415
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-msgstr ""
-
-#: mail/mail-vfolder.c:249
-msgid "VFolders"
-msgstr "vAplankai"
-
-#: mail/mail-vfolder.c:426
-msgid "New VFolder"
-msgstr "Naujas vAplankas"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/message-browser.c:189 ui/evolution-mail.xml.h:64
-msgid "Reply"
-msgstr "Atsakyti"
-
-#: mail/message-browser.c:189 ui/evolution-mail.xml.h:70
-msgid "Reply to the sender of this message"
-msgstr "Atsakyti ðio laiðko siuntëjui"
-
-#: mail/message-browser.c:192 ui/evolution-mail.xml.h:65
-msgid "Reply to All"
-msgstr "Atsakyti visiems"
-
-#: mail/message-browser.c:192 ui/evolution-mail.xml.h:68
-msgid "Reply to all recipients of this message"
-msgstr "Atsakyti visiems ðio laiðko gavëjams"
-
-#: mail/message-browser.c:195 ui/evolution-mail.xml.h:25
-msgid "Forward"
-msgstr "Persiøsti"
-
-#: mail/message-browser.c:195 ui/evolution-mail.xml.h:29
-msgid "Forward this message"
-msgstr "Persiøsti ðá laiðkà"
-
-#: mail/message-browser.c:200 ui/evolution-mail.xml.h:61
-msgid "Print the selected message"
-msgstr "Spausdinti parinktà laiðkà"
-
-#: mail/message-browser.c:203 ui/evolution-mail.xml.h:13
-msgid "Delete this message"
-msgstr "Iðtrinti ðá laiðkà"
-
-#: mail/message-browser.c:208 ui/evolution-event-editor.xml.h:33
-#: ui/evolution-mail.xml.h:54 ui/evolution-task-editor-dialog.xml.h:36
-msgid "Previous"
-msgstr "Praeitas"
-
-#: mail/message-browser.c:208
-msgid "Previous message"
-msgstr "Praeitas laiðkas"
-
-#: mail/message-browser.c:211 ui/evolution-calendar.xml.h:18
-#: ui/evolution-event-editor.xml.h:29 ui/evolution-mail.xml.h:50
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "Next"
-msgstr "Kitas"
-
-#: mail/message-browser.c:211
-msgid "Next message"
-msgstr "Kitas laiðkas"
-
-#: mail/message-list.c:679
-msgid "Unseen"
-msgstr "Nematytas"
-
-#: mail/message-list.c:680
-msgid "Seen"
-msgstr "Matytas"
-
-#: mail/message-list.c:681
-msgid "Answered"
-msgstr "Atsakytas"
-
-#: mail/message-list.c:682
-msgid "Multiple Unseen Messages"
-msgstr "Keletas nematytø laiðkø"
-
-#: mail/message-list.c:683
-msgid "Multiple Messages"
-msgstr "Keletas laiðkø"
-
-#: mail/message-list.c:687
-msgid "Lowest"
-msgstr "Þemiausias"
-
-#: mail/message-list.c:688
-msgid "Lower"
-msgstr "Þemesnis"
-
-#: mail/message-list.c:692
-msgid "Higher"
-msgstr "Aukðtesnis"
-
-#: mail/message-list.c:693
-msgid "Highest"
-msgstr "Aukðèiausias"
-
-#: mail/message-list.c:943
-msgid "?"
-msgstr "?"
-
-#: mail/message-list.c:950
-msgid "Today %l:%M %p"
-msgstr "Ðiandien %H:%M"
-
-#: mail/message-list.c:959
-msgid "Yesterday %l:%M %p"
-msgstr "Vakar %H:%M"
-
-#: mail/message-list.c:971
-msgid "%a %l:%M %p"
-msgstr "%a %H:%M"
-
-#: mail/message-list.c:979
-msgid "%b %d %l:%M %p"
-msgstr "%b %d %H:%M"
-
-#: mail/message-list.c:981
-msgid "%b %d %Y"
-msgstr "%Y %b %d"
-
-#: mail/message-list.c:1083
-msgid "Flagged"
-msgstr ""
-
-#: mail/message-list.c:1084
-msgid "From"
-msgstr "Nuo"
-
-#: mail/message-list.c:1084
-msgid "Date"
-msgstr "Data"
-
-#: mail/message-list.c:1084
-msgid "Received"
-msgstr "Gautas"
-
-#: mail/message-list.c:1085
-msgid "To"
-msgstr "Kam"
-
-#: mail/message-list.c:1085
-msgid "Size"
-msgstr "Dydis"
-
-#: mail/mail-session.c:161
-msgid "User canceled operation."
-msgstr "Vartotojas nutraukë veiksmà."
-
-#: mail/subscribe-dialog.c:76 shell/e-storage-set-view.c:47
-msgid "Folder"
-msgstr "Aplankas"
-
-#: mail/subscribe-dialog.c:77
-msgid "Store"
-msgstr "Saugykla"
-
-#: mail/subscribe-dialog.c:138
-msgid "Display folders starting with:"
-msgstr "Rodyti aplankus, prasidedanèius:"
-
-#: mail/subscribe-dialog.c:168
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr "Gaunama saugykla dël ¥%s´"
-
-#: mail/subscribe-dialog.c:271
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr "Uþsakomas aplankas ¥%s´"
-
-#: mail/subscribe-dialog.c:273
-#, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr "Atsisakoma aplanko ¥%s´"
-
-#. Construct the app
-#: mail/subscribe-dialog.c:873
-msgid "Manage Subscriptions"
-msgstr "Tvarkyti uþsakymus"
-
-#: shell/e-setup.c:118 shell/e-setup.c:191
-msgid "Evolution installation"
-msgstr "Evolution ádiegimas"
-
-#: shell/e-setup.c:122
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-"Ðiai naujai Evolution versijai reikia ádiegti papildomø bylø\n"
-"á tavo asmeniná Evolution katalogà"
-
-#: shell/e-setup.c:123
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr ""
-"Praðau, paspausk ¥Gerai´, kad ádiegtum bylas, arba ¥Atðaukti´, kad iðeitum."
-
-#: shell/e-setup.c:163
-msgid "Could not update files correctly"
-msgstr "Negalëjau tvarkingai atnaujinti bylø"
-
-#: shell/e-setup.c:166 shell/e-setup.c:234
-msgid "Evolution files successfully installed."
-msgstr "Evolution bylos sëkmingai ádiegtos."
-
-#: shell/e-setup.c:195
-msgid "This seems to be the first time you are running Evolution."
-msgstr "Atrodo, kad tai pirmas kartas, kai tu pasileidai Evolution."
-
-#: shell/e-setup.c:196
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr "Praðom paspausti ¥Gerai´, kad ádiegtum Evolution vartotojo bylas á"
-
-#: shell/e-setup.c:215
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"Negaliu sukurti katalogo\n"
-"%s\n"
-"Klaida: %s"
-
-#: shell/e-setup.c:230
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-"Negaliu kopijuoti bylø á\n"
-"¥%s´."
-
-#: shell/e-setup.c:255
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-"Byla ¥%s´ yra ne katalogas.\n"
-"Praðau, perkelk já, kad galëèiau ádiegti\n"
-"Evolution vartotojo bylas."
-
-#: shell/e-setup.c:267
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-"Katalogas ¥%s´ egzistuoja, bet jis nëra\n"
-"Evolution katalogas. Praðau, perkelk já, kad \n"
-"galëèiau ádiegti Evolution vartotojo bylas."
-
-#: shell/e-shell.c:388
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr ""
-
-#: shell/e-shell.c:1273
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-"Vaje! ¥%s´ rodinys netikëtai numirë. :-(\n"
-"Tikriausiai tai reiðkia, kad %s komponentas nulûþo."
-
-#: shell/e-shell-folder-creation-dialog.c:99
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-"Negaliu sukurti nurodyto aplanko:\n"
-"%s"
-
-#: shell/e-shell-folder-creation-dialog.c:156
-msgid "The specified folder name is not valid."
-msgstr "Nurodytas aplanko vardas yra negalimas."
-
-#: shell/e-shell-folder-creation-dialog.c:263
-msgid "Evolution - Create new folder"
-msgstr "Evolution -- Sukurti naujà aplankà"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-"Pasirinkto aplanko tipas yra netinkamas\n"
-"praðytàjam veiksmui."
-
-#: shell/e-shell-folder-selection-dialog.c:321
-msgid "New..."
-msgstr "Naujas..."
-
-#: shell/e-shell-folder-title-bar.c:459 shell/e-shell-folder-title-bar.c:460
-msgid "(Untitled)"
-msgstr "(Bevardis)"
-
-#: shell/e-shell-view.c:148
-msgid "(No folder displayed)"
-msgstr "(Joks aplankas nerodomas)"
-
-#: shell/e-shell-view.c:1203
-#, c-format
-msgid "%s - Evolution %s"
-msgstr "%s - Evolution %s"
-
-#: shell/e-shell-view.c:1205
-#, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "%s - Evolution %s [%s]"
-
-#: shell/e-shell-view-menu.c:173
-msgid "Bug buddy was not found in your $PATH."
-msgstr "Bug buddy nerastas tavo kelyje ($PATH)."
-
-#: shell/e-shell-view-menu.c:179
-msgid "Bug buddy could not be run."
-msgstr "Bug buddy negalëjo bûti paleistas."
-
-#: shell/e-shell-view-menu.c:208
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Copyright 1999, 2000, 2001 Ximian, Inc."
-
-#: shell/e-shell-view-menu.c:210
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-"Evolution yra rinkinys grupiniø aplikacijø\n"
-"paðtui, kalendoriams ir kontaktø tvarkymui\n"
-"GNOME darbo aplinkoje."
-
-#: shell/e-shell-view-menu.c:374
-msgid "Go to folder..."
-msgstr "Eiti á aplankà..."
-
-#: shell/e-shell-view-menu.c:562
-msgid "Work online"
-msgstr "Dirbti prisijungus"
-
-#: shell/e-shell-view-menu.c:574 shell/e-shell-view-menu.c:586
-msgid "Work offline"
-msgstr "Dirbti atsijungus"
-
-#: shell/e-shortcuts.c:381
-msgid "Error saving shortcuts."
-msgstr "Klaida iðsaugant trumpes."
-
-#: shell/e-shortcuts-view.c:134
-msgid "Create new shortcut group"
-msgstr "Sukurti naujà trumpiø grupæ"
-
-#: shell/e-shortcuts-view.c:137
-msgid "Group name:"
-msgstr "Grupës pavadinimas:"
-
-#: shell/e-shortcuts-view.c:260
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-"Ar tu tikrai nori paðalinti grupæ\n"
-"¥%s´ ið trumpiø juostos?"
-
-#: shell/e-shortcuts-view.c:265
-msgid "Don't remove"
-msgstr "Nepaðalinti"
-
-#: shell/e-shortcuts-view.c:276
-msgid "_Small Icons"
-msgstr "_Maþos ikonos"
-
-#: shell/e-shortcuts-view.c:277
-msgid "Show the shortcuts as small icons"
-msgstr "Rodyti trumpes kaip maþas ikonas"
-
-#: shell/e-shortcuts-view.c:279
-msgid "_Large Icons"
-msgstr "_Didelës ikonos"
-
-#: shell/e-shortcuts-view.c:280
-msgid "Show the shortcuts as large icons"
-msgstr "Rodyti trumpes kaip dideles ikonas"
-
-#: shell/e-shortcuts-view.c:291
-msgid "_New Group..."
-msgstr "_Nauja grupë..."
-
-#: shell/e-shortcuts-view.c:292
-msgid "Create a new shortcut group"
-msgstr "Sukurti naujà trumpiø grupæ"
-
-#: shell/e-shortcuts-view.c:294
-msgid "_Remove This Group..."
-msgstr "_Paðalinti ðià grupæ..."
-
-#: shell/e-shortcuts-view.c:295
-msgid "Remove this shortcut group"
-msgstr "Paðalinti ðià trumpiø grupæ"
-
-#: shell/e-shortcuts-view.c:300
-msgid "_Hide the Shortcut Bar"
-msgstr "_Paslëpti trumpiø juostà"
-
-#: shell/e-shortcuts-view.c:301
-msgid "Hide the shortcut bar"
-msgstr "Paslëpti trumpiø juostà"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate"
-msgstr "Suþadinti"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate this shortcut"
-msgstr "Suþadinti ðià trumpæ"
-
-#: shell/e-shortcuts-view.c:388
-msgid "Remove this shortcut from the shortcut bar"
-msgstr "Paðalinti ðià trumpæ ið trumpiø juostos"
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr "(Be pavadinimo)"
-
-#: shell/e-storage.c:459
-msgid "No error"
-msgstr "Nëra klaidø"
-
-#: shell/e-storage.c:461
-msgid "Generic error"
-msgstr "Bendroji klaida"
-
-#: shell/e-storage.c:463
-msgid "A folder with the same name already exists"
-msgstr "Jau yra aplankas su tokiu pat pavadinimu"
-
-#: shell/e-storage.c:465
-msgid "The specified folder type is not valid"
-msgstr "Nurodytas aplanko tipas yra blogas"
-
-#: shell/e-storage.c:467
-msgid "I/O error"
-msgstr "I/O klaida"
-
-#: shell/e-storage.c:469
-msgid "Not enough space to create the folder"
-msgstr "Neuþtenka vietos aplankui sukurti"
-
-#: shell/e-storage.c:471
-msgid "The specified folder was not found"
-msgstr "Nurodytas aplankas nerastas"
-
-#: shell/e-storage.c:473
-msgid "Function not implemented in this storage"
-msgstr "Funkcija neágyvendinta ðioje saugykloje"
-
-#: shell/e-storage.c:475
-msgid "Permission denied"
-msgstr "Priëjimas uþdraustas"
-
-#: shell/e-storage.c:477
-msgid "Operation not supported"
-msgstr "Veiksmas nepalaikomas"
-
-#: shell/e-storage.c:479
-msgid "The specified type is not supported in this storage"
-msgstr "Nurodytas tipas ðioje saugykloje nepalaikomas"
-
-#: shell/e-storage-set-view.c:650 ui/evolution-event-editor.xml.h:76
-#: ui/evolution-message-composer.xml.h:53
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:44
-msgid "_View"
-msgstr "_Rodinys"
-
-#: shell/e-storage-set-view.c:650
-msgid "View the selected folder"
-msgstr "Rodyti parinktà aplankà"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-msgid "Folder name:"
-msgstr "Aplanko pavadinimas:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-msgid "Folder type:"
-msgstr "Aplanko tipas:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-msgid "Specify where to create the folder:"
-msgstr "Nurodyk, kur sukurti aplankà:"
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-msgid "The Evolution shell."
-msgstr "Evolution apvalkalas."
-
-#: shell/importer/importer.c:87
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-"Pasirink bylà, kurià nori importuoti á Evolution, ir pasirink jos tipà ið "
-"sàraðo.\n"
-"\n"
-"Gali pasirinkti ¥Automatiðkas´ jei tu neþinai, ir Evolution bandys "
-"susigaudyti pati."
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/importer/importer.c:182
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-"Importuojama %s\n"
-"Importeris nepasiruoðæs.\n"
-"Laukiu 5 sekundes kol bandysiu vël."
-
-#: shell/importer/importer.c:202 shell/importer/importer.c:233
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-"Importuojama %s\n"
-"Importuojamas elementas %d."
-
-#: shell/importer/importer.c:341
-#, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr ""
-"Nëra importerio, kuris galëtø suprasti\n"
-"%s"
-
-#: shell/importer/importer.c:351
-msgid "Importing"
-msgstr "Importuojama"
-
-#: shell/importer/importer.c:359
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-"Importuojama %s.\n"
-"Pradedama %s"
-
-#: shell/importer/importer.c:372
-#, c-format
-msgid "Error starting %s"
-msgstr "Klaida pradedant %s"
-
-#: shell/importer/importer.c:387
-#, c-format
-msgid "Error loading %s"
-msgstr "Klaida ákeliant %s"
-
-#: shell/importer/importer.c:402
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-"Importuojama %s\n"
-"Importuojamas elementas 1."
-
-#: shell/importer/importer.c:473
-msgid "Automatic"
-msgstr "Automatiðkas"
-
-#: shell/importer/importer.c:523
-msgid "Filename:"
-msgstr "Bylos vardas:"
-
-#: shell/importer/import.glade.h:5 shell/importer/importer.c:528
-msgid "Select a file"
-msgstr "Pasirink bylà"
-
-#: shell/importer/importer.c:538
-msgid "File type:"
-msgstr "Bylos tipas:"
-
-#: shell/importer/import.glade.h:4 shell/importer/importer.c:619
-msgid "Import"
-msgstr "Importuoti"
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr "Spausk ¥Import´, kad pradëtum importuoti bylà á Evolution."
-
-#: shell/importer/import.glade.h:2
-msgid "Evolution Import Utility"
-msgstr "Evolution importavimo priemonë"
-
-#: shell/importer/import.glade.h:3
-msgid "Evolution Importer Utility"
-msgstr "Evolution importavimo priemonë"
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-"Sveikas atvykæs á Evolution importavimo priemonæ.\n"
-"Ðis meistras padës tau importuojant iðorines bylas á Evolution."
-
-#: shell/importer/intelligent.c:143
-msgid "Don't ask me again"
-msgstr "Kità kartà nebeklausti"
-
-#: shell/main.c:82
-#, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-"Sveiki. Aèiû uþ laikà, sugaaiðtà parsisiøsti ðià Evolution\n"
-"grupinio darbo rinkinio PERÞIÛROS LAIDÀ.\n"
-"\n"
-"Evolution dar nëra baigta. Ji artëja prie to, taèiau yra vietø,\n"
-"kur ypatybiø trûksta arba jos tik pusiau veikia. Jei tu negali\n"
-"suprasti, kaip kà nors padaryti, tai galbût todël, kad dar nëra\n"
-"bûdo tai padaryti! :-)\n"
-"\n"
-"Mes tikimës, kad Evolution bus tinkama naudoti tau, bet vis dar\n"
-"jauèiame pareigà áspëti, kad ji gali: lûþti, prarasti tavo paðtà,\n"
-"palikti veikianèius nenaudojamus procesus, naudoti 100% CPU,\n"
-"siøsti nesiderinanèias komandas á serverius, ir apskritai\n"
-"sugëdinti tave tavo draugø ir bendradarbiø akivaizdoje. Naudoti\n"
-"tik pagal nurodymus.\n"
-"\n"
-"Mes tikimës, kad tau patiks mûsø sunkaus darbo vaisiai, ir\n"
-"laukiame tavo prisidëjimo!\n"
-
-#: shell/main.c:107
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-"Aèiû\n"
-"Evolution komanda\n"
-
-#: shell/main.c:138
-msgid "Cannot initialize the Evolution shell."
-msgstr "Negalëjau inicializuoti Evolution apvalkalo."
-
-#: shell/main.c:184
-#, fuzzy
-msgid "Disable splash screen"
-msgstr "Uþdrausti "
-
-#: shell/main.c:185
-msgid "Send the debugging output of all components to a file."
-msgstr "Siøsti visø komponentø derinimo iðvestá á bylà."
-
-#: shell/main.c:217
-msgid "Cannot initialize the Bonobo component system."
-msgstr "Negaliu inicializuoti Bonobo komponentø sistemos."
-
-#: ui/evolution-addressbook.xml.h:2
-msgid "Create new contact"
-msgstr "Sukurti naujà kontaktà"
-
-#: ui/evolution-addressbook.xml.h:4
-msgid "Delete a contact"
-msgstr "Iðtrinti kontaktà"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-msgid "Find"
-msgstr "Rasti"
-
-#: ui/evolution-addressbook.xml.h:6
-msgid "Find a contact"
-msgstr "Rasti kontaktà"
-
-#: ui/evolution-addressbook.xml.h:7
-msgid "New contact"
-msgstr "Naujas kontaktas"
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-mail.xml.h:53
-msgid "Previews the message to be printed"
-msgstr "Perþiûrëti laiðkà prieð spausdinant"
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "Print contacts"
-msgstr "Spausdinti kontaktus"
-
-#: ui/evolution-addressbook.xml.h:12 ui/evolution-mail.xml.h:84
-msgid "Stop"
-msgstr "Stop"
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "Stop Loading"
-msgstr "Sustabdyti ákëlimà"
-
-#: ui/evolution-addressbook.xml.h:14
-msgid "View All"
-msgstr "Rodyti visus"
-
-#: ui/evolution-addressbook.xml.h:15
-msgid "View all contacts"
-msgstr "Rodyti visus kontaktus"
-
-#: ui/evolution-addressbook.xml.h:16
-msgid "_Addressbook Sources..."
-msgstr "_Adresø knygelës ðaltiniai..."
-
-#: ui/evolution-addressbook.xml.h:17
-msgid "_Contact"
-msgstr "_Kontaktas"
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-msgid "_Print..."
-msgstr "S_pausdinti..."
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr "_Ieðkoti kontaktø"
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-mail.xml.h:117
-#: ui/evolution-task-editor-dialog.xml.h:88 ui/evolution.xml.h:43
-msgid "_Tools"
-msgstr "Áran_kiai"
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr "5 Dienos"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-msgid "Alter preferences"
-msgstr "Sutvarkyti kalendoriø"
-
-#: ui/evolution-calendar.xml.h:4
-msgid "Create a new all day Event"
-msgstr "Sukurti naujà visos dienos ávyká"
-
-#: ui/evolution-calendar.xml.h:5
-msgid "Create a new appointment"
-msgstr "Sukurti naujà ávyká"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr "Sukurti naujà kalendoriø"
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr "Diena"
-
-#: ui/evolution-calendar.xml.h:8
-msgid "Go To"
-msgstr "Eiti á"
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr "Eiti á ankstesná laikà"
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go forward in time"
-msgstr "Eiti á ateities laikà"
-
-#: ui/evolution-calendar.xml.h:11
-msgid "Go to _Date"
-msgstr "Eiti á _datà"
-
-#: ui/evolution-calendar.xml.h:12
-msgid "Go to _Today"
-msgstr "Eiti á ðia_ndienà"
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr "Eiti á nurodytà datà"
-
-#: ui/evolution-calendar.xml.h:14
-msgid "Go to present time"
-msgstr "Eiti á dabartiná laikà"
-
-#: ui/evolution-calendar.xml.h:15
-msgid "Month"
-msgstr "Mënesis"
-
-#: ui/evolution-calendar.xml.h:17
-msgid "New _Event"
-msgstr "Naujas á_vykis"
-
-#: ui/evolution-calendar.xml.h:20
-msgid "Open Calendar"
-msgstr "Atidaryti kalendoriø"
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Prev"
-msgstr "Praeitas"
-
-#: ui/evolution-calendar.xml.h:22
-msgid "Previews the calendar to be printed"
-msgstr "Perþiûrëti kalendoriø prieð spausdinant"
-
-#: ui/evolution-calendar.xml.h:25
-msgid "Print calendar"
-msgstr "Spausdinti kalendoriø"
-
-#: ui/evolution-calendar.xml.h:26
-msgid "Print this Calendar"
-msgstr "Spausdinti ðá kalendoriø"
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:15
-msgid "Save As"
-msgstr "Iðsaugoti kaip"
-
-#: ui/evolution-calendar.xml.h:28
-msgid "Save calendar as something else"
-msgstr "Iðsaugoti kalendoriø kaip kaþkà kità"
-
-#: ui/evolution-calendar.xml.h:30
-msgid "Show 1 day"
-msgstr "Rodyti 1 dienà"
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr "Rodyti 1 mënesá"
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr "Rodyti 1 savaitæ"
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr "Rodyti darbo savaitæ"
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:229
-#: widgets/misc/e-dateedit.c:424
-msgid "Today"
-msgstr "Dabar"
-
-#: ui/evolution-calendar.xml.h:35
-msgid "W_ork Week"
-msgstr "Darb_o savaitë"
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr "Savaitë"
-
-#: ui/evolution-calendar.xml.h:37
-msgid "_Appointment"
-msgstr "Á_vykis"
-
-#: ui/evolution-calendar.xml.h:38
-msgid "_Day"
-msgstr "_Diena"
-
-#: ui/evolution-calendar.xml.h:39
-msgid "_Month"
-msgstr "_Mënesis"
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:39
-msgid "_New"
-msgstr "_Naujas"
-
-#: ui/evolution-calendar.xml.h:41
-msgid "_Open Calendar"
-msgstr "_Atidaryti kalendoriø"
-
-#: ui/evolution-calendar.xml.h:45
-msgid "_Week"
-msgstr "_Savaitë"
-
-#: ui/evolution-contact-editor.xml.h:2
-msgid "Delete this item"
-msgstr "Iðtrinti ðá elementà"
-
-#: ui/evolution-contact-editor.xml.h:3
-msgid "Delete..."
-msgstr "Iðtrinti..."
-
-#: ui/evolution-contact-editor.xml.h:4
-msgid "Help"
-msgstr "Pagalba"
-
-#: ui/evolution-contact-editor.xml.h:5
-msgid "Print En_velope..."
-msgstr "Spausdinti _vokà..."
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-msgid "Print this item"
-msgstr "Spausdinti ðá elementà"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-mail.xml.h:62 ui/evolution-task-editor-dialog.xml.h:41
-msgid "Print..."
-msgstr "Spausdinti..."
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:16
-#: ui/evolution-task-editor-dialog.xml.h:51
-msgid "Save _As..."
-msgstr "Iðsaugoti _kaip..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-msgid "Save and Close"
-msgstr "Iðsaugoti ir uþdaryti"
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr "Iðsaugoti kontaktà ir uþdaryti dialogo langà"
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr "Siøsti ko_ntaktà kitam..."
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr "Rodyti þinynà"
-
-#: ui/evolution-contact-editor.xml.h:13
-msgid "Send _message to contact..."
-msgstr "Siøsti _laiðkà kontaktui..."
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:44 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:31
-msgid "_File"
-msgstr "_Byla"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:51
-#: ui/evolution-task-editor-dialog.xml.h:85
-msgid "_Save"
-msgstr "Ið_saugoti"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr "Apie ðià programà"
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr "Apie..."
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-msgid "Actio_ns"
-msgstr "Veiksm_ai"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-msgid "Address _Book... (FIXME)"
-msgstr "_Adresø knygelë... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-msgid "C_lear"
-msgstr "Iðva_lyti"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-msgid "C_ut"
-msgstr "_Iðkirpti"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-msgid "Chec_k Names (FIXME)"
-msgstr "Ti_krinti vardus (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-msgid "Clear"
-msgstr "Iðvalyti"
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-msgid "Clear the selection"
-msgstr "Iðvalyti paþymëjimà"
-
-#: ui/evolution-event-editor.xml.h:11
-msgid "Close this appointment"
-msgstr "Uþdaryti ðá ávyká"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "_Kopijuoti á aplankà... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:7
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "Kopijuoti"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-msgid "Copy the selection"
-msgstr "Kopijuoti paþymëjimà"
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr "Iðkirpti"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Cut the selection"
-msgstr "Iðkirpti paþymëjimà"
-
-#: ui/evolution-event-editor.xml.h:18
-msgid "Delete this appointment"
-msgstr "Iðtrinti ðá ávyká"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr "_Pirmas elementas aplanke (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-msgid "For_ward (FIXME)"
-msgstr "_Persiøsti (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr "Persiøsti kaip v_Calendar (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-msgid "Go to the next item"
-msgstr "Eiti á tolesná elementà"
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-msgid "Go to the previous item"
-msgstr "Eiti á ankstesná elementà"
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-msgid "In_complete Task (FIXME)"
-msgstr "_Neuþbaigta uþduotis (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-msgid "Modify the file's properties"
-msgstr "Pakeisti bylos savybes"
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-msgid "N_ext"
-msgstr "_Kitas"
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-msgid "Paste"
-msgstr "Ádëti"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-msgid "Paste the clipboard"
-msgstr "Ádëti ið krepðio"
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr "_Praeitas"
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-msgid "Print Pre_view"
-msgstr "Spa_udinio perþiûra"
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-msgid "Print S_etup..."
-msgstr "Spausdinimo _nuostatos..."
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-msgid "Print Setup"
-msgstr "Spausdinimo nuostatos"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:14
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:239
-msgid "Save"
-msgstr "Iðsaugoti"
-
-#: ui/evolution-event-editor.xml.h:43
-msgid "Save the appointment and close the dialog box"
-msgstr "Iðsaugoti ávyká ir uþdaryti dialogo langà"
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:20
-#: ui/evolution-task-editor-dialog.xml.h:53
-msgid "Save the current file"
-msgstr "Iðsaugoti esamà bylà"
-
-#: ui/evolution-event-editor.xml.h:46
-msgid "Schedule _Meeting"
-msgstr "Átraukti s_usitikimà á dienotvarkæ"
-
-#: ui/evolution-event-editor.xml.h:47
-msgid "Schedule some sort of a meeting"
-msgstr "Áraðyti á dienotvarkæ kaþkoká susitikimà"
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-mail.xml.h:74
-#: ui/evolution-task-editor-dialog.xml.h:57
-msgid "Select All"
-msgstr "Paþymëti visus"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-msgid "Select everything"
-msgstr "Paþymëti viskà"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr "Nustatyti puslapio parinktis tavo esamam spausdintuvui"
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-msgid "Task _Request (FIXME)"
-msgstr "Uþduoties p_raðymas (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-message-composer.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:63
-msgid "_About..."
-msgstr "_Apie..."
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:41
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:28
-msgid "_Close"
-msgstr "_Uþdaryti"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:29
-msgid "_Contact (FIXME)"
-msgstr "_Kontaktas (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-msgid "_Copy"
-msgstr "_Kopijuoti"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr "_Derinti"
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:46
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:35
-msgid "_Help"
-msgstr "_Pagalba"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-msgid "_Item (FIXME)"
-msgstr "_Elementas (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-msgid "_Journal Entry (FIXME)"
-msgstr "Þu_rnalo áraðas (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-msgid "_Last Item in Folder (FIXME)"
-msgstr "P_askutinis elementas aplanke (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-msgid "_Mail Message (FIXME)"
-msgstr "_Paðto laiðkas (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-msgid "_Move to Folder... (FIXME)"
-msgstr "Per_kelti á aplankà... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-msgid "_Note (FIXME)"
-msgstr "_Pastaba (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-msgid "_Paste"
-msgstr "Á_dëti"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:109
-#: ui/evolution-task-editor-dialog.xml.h:83
-msgid "_Properties..."
-msgstr "_Savybës..."
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-msgid "_Select All"
-msgstr "Paþymëti _viskà"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:42
-msgid "_Task (FIXME)"
-msgstr "_Uþduotis (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-msgid "_Unread Item (FIXME)"
-msgstr "_Neskaitytas elementas (FIXME)"
-
-#: ui/evolution-executive-summary.xml.h:1
-msgid "Add Service"
-msgstr "Pridëti paslaugà"
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr "Pridëti naujà paslaugà á Executive Summary"
-
-#: ui/evolution-executive-summary.xml.h:3
-msgid "Create a new email"
-msgstr "Sukurti naujà laiðkà"
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:5
-msgid "New Mail"
-msgstr "Naujas laiðkas"
-
-#: ui/evolution-mail.xml.h:2
-msgid "Apply any new filters to the mail in this box"
-msgstr "Pritaikyti visus naujus filtrus laiðkams ðioje dëþutëje"
-
-#: ui/evolution-mail.xml.h:3
-msgid "Change the properties of this folder"
-msgstr "Keisti ðio aplanko savybes"
-
-#: ui/evolution-mail.xml.h:4
-msgid "Compose"
-msgstr "Sukurti"
-
-#: ui/evolution-mail.xml.h:5
-msgid "Compose a new message"
-msgstr "Sukurti naujà laiðkà"
-
-#: ui/evolution-mail.xml.h:6
-msgid "Configure Folder..."
-msgstr "Konfigûruoti aplankà..."
-
-#: ui/evolution-mail.xml.h:8
-msgid "Copy message to a new folder"
-msgstr "Kopijuoti laiðkà á naujà aplankà"
-
-#: ui/evolution-mail.xml.h:9
-msgid "Copy selected messages to another folder"
-msgstr "Kopijuoti paþymëtus laiðkus á kità aplankà"
-
-#: ui/evolution-mail.xml.h:10
-msgid "Create _Virtual Folder From Message"
-msgstr "Sukurti _virtualø aplankà ið laiðko"
-
-#: ui/evolution-mail.xml.h:12
-msgid "Delete the selected messages"
-msgstr "Iðtrinti paþymëtus laiðkus"
-
-#: ui/evolution-mail.xml.h:14
-msgid "Display all of the message headers"
-msgstr "Rodyti visas laiðko antraðtes"
-
-#: ui/evolution-mail.xml.h:15
-msgid "Edit Message"
-msgstr "Taisyti laiðkà"
-
-#: ui/evolution-mail.xml.h:16
-msgid "Edit the current message"
-msgstr "Taisyti esamà laiðkà"
-
-#: ui/evolution-mail.xml.h:17
-msgid "Empty _Trash"
-msgstr "Iðtuðtinti _ðiukðlinæ"
-
-#: ui/evolution-mail.xml.h:18
-msgid "Expunge"
-msgstr "Iðvalyti"
-
-#: ui/evolution-mail.xml.h:19
-msgid "Filter on Mailing _List"
-msgstr "Filtras pagal _Konferencijà"
-
-#: ui/evolution-mail.xml.h:20
-msgid "Filter on Se_nder"
-msgstr "Filtras pagal Siu_ntëjà"
-
-#: ui/evolution-mail.xml.h:21
-msgid "Filter on _Recipients"
-msgstr "Filtras pagal _Gavëjus"
-
-#: ui/evolution-mail.xml.h:22
-msgid "Filter on _Subject"
-msgstr "Filtras pagal _Temà"
-
-#: ui/evolution-mail.xml.h:23
-msgid "Finaly remove all mails tagged for deletion"
-msgstr "Visiðkai iðtrinti visus laiðkus, paþymëtus iðtrintais"
-
-#: ui/evolution-mail.xml.h:24
-msgid "Forget _Passwords"
-msgstr "Pa_mirðti slaptaþodþius"
-
-#: ui/evolution-mail.xml.h:26
-msgid "Forward As"
-msgstr "Persiøsti kaip"
-
-#: ui/evolution-mail.xml.h:27
-msgid "Forward inline"
-msgstr "Persiøsti viduje"
-
-#: ui/evolution-mail.xml.h:28
-msgid "Forward the selected mail to someone"
-msgstr "Persiøsti paþymëtà laiðkà kaþkam"
-
-#: ui/evolution-mail.xml.h:30
-msgid "Forward this message in-line with your mail, so you can edit it"
-msgstr ""
-"Persiøsti paþymëtà laiðkà viduje tavo laiðko, taip kad tu já gali pakeisti"
-
-#: ui/evolution-mail.xml.h:31
-msgid "Full _Headers"
-msgstr "Pilnos _antraðtës"
-
-#: ui/evolution-mail.xml.h:32
-msgid "Go to the next message"
-msgstr "Eiti á kità laiðkà"
-
-#: ui/evolution-mail.xml.h:33
-msgid "Go to the previous message"
-msgstr "Eiti á praeità laiðkà"
-
-#: ui/evolution-mail.xml.h:34
-msgid "Hide Deleted Messages"
-msgstr "Paslëpti iðtrintus laiðkus"
-
-#: ui/evolution-mail.xml.h:35
-msgid "Hide S_elected Messages"
-msgstr "Paslëpti paþy_mëtus laiðkus"
-
-#: ui/evolution-mail.xml.h:36
-msgid "Hide _Deleted Messages"
-msgstr "Paslëpti ið_trintus laiðkus"
-
-#: ui/evolution-mail.xml.h:37
-msgid "Hide _Read messages"
-msgstr "Paslëpti _skaitytus laiðkus"
-
-#: ui/evolution-mail.xml.h:38
-msgid "Invert Selection"
-msgstr "Invertuoti þymëjimà"
-
-#: ui/evolution-mail.xml.h:39
-msgid "Manage _Subscriptions..."
-msgstr "Tvarkyti uþ_sakymus..."
-
-#: ui/evolution-mail.xml.h:41
-msgid "Mark All as R_ead"
-msgstr "Paþymëti _visus skaitytais"
-
-#: ui/evolution-mail.xml.h:42
-msgid "Mark As Read"
-msgstr "Paþymëti skaitytu"
-
-#: ui/evolution-mail.xml.h:43
-msgid "Mark As U_nread"
-msgstr "Paþymëti _neskaitytu"
-
-#: ui/evolution-mail.xml.h:45
-msgid "Mark the selected messages as having been read"
-msgstr "Pasirinktus laiðkus paþymëti lyg jie buvo perskaityti"
-
-#: ui/evolution-mail.xml.h:46
-msgid "Mark the selected messages as not having been read"
-msgstr "Pasirinktus laiðkus paþymëti lyg jie nebuvo perskaityti"
-
-#: ui/evolution-mail.xml.h:47
-msgid "Move"
-msgstr "Perkelti"
-
-#: ui/evolution-mail.xml.h:48
-msgid "Move message to a new folder"
-msgstr "Perkelti laiðkà á naujà aplankà"
-
-#: ui/evolution-mail.xml.h:49
-msgid "Move selected messages to another folder"
-msgstr "Perkelti paþymëtus laiðkus á kità aplankà"
-
-#: ui/evolution-mail.xml.h:51
-msgid "Open in New Window"
-msgstr "Atidaryti naujame lange"
-
-#: ui/evolution-mail.xml.h:52
-msgid "Open the current message in a new window"
-msgstr "Atidaryti esamà laiðkà naujame lange"
-
-#: ui/evolution-mail.xml.h:58
-msgid "Print Preview of message..."
-msgstr "Laiðko spaudinio perþiûra..."
-
-#: ui/evolution-mail.xml.h:59
-msgid "Print message to the printer"
-msgstr "Spausdinti laiðkà spausdintuvu"
-
-#: ui/evolution-mail.xml.h:60
-msgid "Print message..."
-msgstr "Spausdinti laiðkà..."
-
-#: ui/evolution-mail.xml.h:63
-msgid "Redirect (FIXME: implement me)"
-msgstr "Nukreipti (FIXME)"
-
-#: ui/evolution-mail.xml.h:67
-msgid "Reply to all"
-msgstr "Atsakyti visiems"
-
-#: ui/evolution-mail.xml.h:69
-msgid "Reply to sender"
-msgstr "Atsakyti siuntëjui"
-
-#: ui/evolution-mail.xml.h:71
-msgid "S_earch Message"
-msgstr "I_eðkoti laiðke"
-
-#: ui/evolution-mail.xml.h:72
-msgid "S_ource"
-msgstr "Ð_altinis"
-
-#: ui/evolution-mail.xml.h:73
-msgid "Save the message into a new file"
-msgstr "Iðsaugoti laiðkà á naujà bylà"
-
-#: ui/evolution-mail.xml.h:75 ui/evolution-subscribe.xml.h:7
-msgid "Select _All"
-msgstr "Paþymëti _visus"
-
-#: ui/evolution-mail.xml.h:76
-msgid "Select _Thread"
-msgstr "Paþymëti _gijà"
-
-#: ui/evolution-mail.xml.h:77
-msgid "Send / Receive"
-msgstr "Siøsti / Gauti"
-
-#: ui/evolution-mail.xml.h:78
-msgid "Send a reply to the person who sent you this mail"
-msgstr "Siøsti atsakymà asmeniui, kuris tau atsiuntë ðá laiðkà"
-
-#: ui/evolution-mail.xml.h:79
-msgid "Send a single mail in reply to all the selected mail"
-msgstr "Siøsti vienà laiðkà, kaip atsakymà á visus paþymëtus laiðkus"
-
-#: ui/evolution-mail.xml.h:80
-msgid ""
-"Send queued mail\n"
-" and retrieve new mail"
-msgstr ""
-"Iðsiøsti laukiantá paðtà\n"
-" ir parsiøsti naujà paðtà"
-
-#: ui/evolution-mail.xml.h:82
-msgid "Send queued mail and retrieve new mail"
-msgstr "Iðsiøsti laukiantá paðtà ir parsiøsti naujà paðtà"
-
-#: ui/evolution-mail.xml.h:83
-msgid "Show _All"
-msgstr "Rodyti _visus"
-
-#: ui/evolution-mail.xml.h:85
-msgid "Threaded Message list"
-msgstr "Gijomis suskirstytas laiðkø sàraðas"
-
-#: ui/evolution-mail.xml.h:86
-msgid "Un-delete the selected messages"
-msgstr "Sugràþinti paþymëtus laiðkus"
-
-#: ui/evolution-mail.xml.h:87
-msgid "Undelete"
-msgstr "Sugràþinti"
-
-#: ui/evolution-mail.xml.h:92
-msgid "View Raw Message Source"
-msgstr "Rodyti neapdorotà laiðko ðaltiná"
-
-#: ui/evolution-mail.xml.h:93
-msgid "Virtual Folder _Editor..."
-msgstr "_Virtualiø aplankø taisymas..."
-
-#: ui/evolution-mail.xml.h:94
-msgid "_Apply Filters"
-msgstr "_Pritaikyti filtrus"
-
-#: ui/evolution-mail.xml.h:95
-msgid "_Attachment"
-msgstr "_Priedas"
-
-#: ui/evolution-mail.xml.h:97
-msgid "_Create Filter From Message"
-msgstr "_Sukurti filtrà ið laiðko"
-
-#: ui/evolution-mail.xml.h:99
-msgid "_Expunge"
-msgstr "Ið_valyti"
-
-#: ui/evolution-mail.xml.h:100
-msgid "_Filters..."
-msgstr "_Filtrai..."
-
-#: ui/evolution-mail.xml.h:101 ui/evolution.xml.h:32
-msgid "_Folder"
-msgstr "_Aplankas"
-
-#: ui/evolution-mail.xml.h:103
-msgid "_Inline"
-msgstr "_Viduje"
-
-#: ui/evolution-mail.xml.h:104 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr "_Invertuoti paþymëjimà"
-
-#: ui/evolution-mail.xml.h:105
-msgid "_Mail Message"
-msgstr "_Paðto laiðkas"
-
-#: ui/evolution-mail.xml.h:106
-msgid "_Mail Settings..."
-msgstr "_Paðto nuostatos..."
-
-#: ui/evolution-mail.xml.h:108
-msgid "_Open Selected Items"
-msgstr "_Atidaryti paþymëtus laiðkus"
-
-#: ui/evolution-mail.xml.h:110
-msgid "_Quoted"
-msgstr "_Cituojant"
-
-#: ui/evolution-mail.xml.h:111
-msgid "_Reply"
-msgstr "_Atsakyti"
-
-#: ui/evolution-mail.xml.h:112
-msgid "_Resend Messages"
-msgstr "_Vël pasiøsti laiðkus"
-
-#: ui/evolution-mail.xml.h:114
-msgid "_Save Message As..."
-msgstr "Ið_saugoti laiðkà kaip..."
-
-#: ui/evolution-mail.xml.h:115
-msgid "_Send / Receive"
-msgstr "_Siøsti / Gauti"
-
-#: ui/evolution-mail.xml.h:116
-msgid "_Threaded"
-msgstr "_Gijomis"
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr "Prisegti"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-msgid "Close the current file"
-msgstr "Uþdaryti esamà bylà"
-
-#: ui/evolution-message-composer.xml.h:5
-msgid "Encrypt this message with PGP"
-msgstr "Uþðifruoti ðá laiðkà su PGP"
-
-#: ui/evolution-message-composer.xml.h:6
-msgid "F_ormat"
-msgstr "F_ormatas"
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "HTML"
-msgstr "HTML"
-
-#: ui/evolution-message-composer.xml.h:8
-msgid "Insert a file as text into the message"
-msgstr "Áterpti bylà á laiðkà kaip tekstà"
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert text file..."
-msgstr "Áterpti tekstinæ bylà..."
-
-#: ui/evolution-message-composer.xml.h:11
-msgid "Open a file"
-msgstr "Atidaryti bylà"
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "PGP Encrypt"
-msgstr "PGP uþðifruoti"
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Sign"
-msgstr "PGP pasiraðyti"
-
-#: ui/evolution-message-composer.xml.h:17
-msgid "Save _Draft"
-msgstr "Iðsaugoti juo_draðtá"
-
-#: ui/evolution-message-composer.xml.h:18
-msgid "Save in _folder... (FIXME)"
-msgstr "Iðsaugoti á _aplankà... (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:19
-msgid "Save in folder..."
-msgstr "Iðsaugoti á aplankà..."
-
-#: ui/evolution-message-composer.xml.h:21
-msgid "Save the current file with a different name"
-msgstr "Iðsaugoti esamà bylà kitokiu vardu"
-
-#: ui/evolution-message-composer.xml.h:22
-msgid "Save the message in a specified folder"
-msgstr "Iðsaugoti laiðkà á nurodytà aplankà"
-
-#: ui/evolution-message-composer.xml.h:23
-msgid "Send"
-msgstr "Siøsti"
-
-#: ui/evolution-message-composer.xml.h:24
-msgid "Send _Later"
-msgstr "Siøsti vë_liau"
-
-#: ui/evolution-message-composer.xml.h:25
-msgid "Send _later"
-msgstr "Siøsti vë_liau"
-
-#: ui/evolution-message-composer.xml.h:26
-msgid "Send the mail in HTML format"
-msgstr "Siøsti laiðkà HTML formatu"
-
-#: ui/evolution-message-composer.xml.h:27
-msgid "Send the message later"
-msgstr "Siøsti laiðkà vëliau"
-
-#: ui/evolution-message-composer.xml.h:28
-msgid "Send the message now"
-msgstr "Siøsti laiðkà dabar"
-
-#: ui/evolution-message-composer.xml.h:29
-msgid "Send this message now"
-msgstr "Siøsti ðá laiðkà dabar"
-
-#: ui/evolution-message-composer.xml.h:30
-msgid "Show / hide attachments"
-msgstr "Rodyti/slëpti priedus"
-
-#: ui/evolution-message-composer.xml.h:31
-msgid "Show _attachments"
-msgstr "Rodyti _priedus"
-
-#: ui/evolution-message-composer.xml.h:32
-msgid "Show attachments"
-msgstr "Rodyti priedus"
-
-#: ui/evolution-message-composer.xml.h:33
-msgid "Sign this message with your PGP key"
-msgstr "Pasiraðyti ðá laiðkà tavo PGP raktu"
-
-#: ui/evolution-message-composer.xml.h:34
-msgid "Toggles whether the BCC field is displayed"
-msgstr "Perjungia, ar BCC laukas yra rodomas"
-
-#: ui/evolution-message-composer.xml.h:35
-msgid "Toggles whether the CC field is displayed"
-msgstr "Perjungia, ar CC laukas yra rodomas"
-
-#: ui/evolution-message-composer.xml.h:36
-msgid "Toggles whether the From chooser is displayed"
-msgstr "Perjungia, ar Nuo pasirinkimas yra rodomas"
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr "Perjungia, ar Atsakyti kam laukas yra rodomas"
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "_Bcc Field"
-msgstr "_Bcc laukas"
-
-#: ui/evolution-message-composer.xml.h:40
-msgid "_Cc Field"
-msgstr "_Cc laukas"
-
-#: ui/evolution-message-composer.xml.h:45
-msgid "_From Field"
-msgstr "_Nuo laukas"
-
-#: ui/evolution-message-composer.xml.h:47
-msgid "_Insert"
-msgstr "Áterpt_i"
-
-#: ui/evolution-message-composer.xml.h:48
-msgid "_Insert text file... (FIXME)"
-msgstr "Áterpt_i tekstinæ bylà... (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:49
-msgid "_Open..."
-msgstr "_Atidaryti..."
-
-#: ui/evolution-message-composer.xml.h:50
-msgid "_Reply-To Field"
-msgstr "_Atsakyti-kam laukas"
-
-#: ui/evolution-message-composer.xml.h:52
-msgid "_Security"
-msgstr "_Saugumas"
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr "Pridëti aplankà á uþsakytø aplankø sàraðà"
-
-#: ui/evolution-subscribe.xml.h:3
-msgid "F_older"
-msgstr "_Aplankas"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr "Atnaujinti sàraðà"
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr "Atnaujinti aplankø sàraðà"
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr "Paðalinti aplankà ið uþsakytø aplankø sàraðo"
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr "Uþsakyti"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr "Atsisakyti"
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-msgid "Assig_n Task (FIXME)"
-msgstr "Priski_rti uþduotá (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr "Rasti vël"
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-msgid "Meeting Re_quest (FIXME)"
-msgstr "Susitikimo _praðymas (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-msgid "Redo"
-msgstr "Pakartoti"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-msgid "Redo the undone action"
-msgstr "Pakartoti atðauktà veiksmà"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-msgid "Replace"
-msgstr "Pakeisti"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-msgid "Replace a string"
-msgstr "Pakeisti eilutæ"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-msgid "Reply to A_ll (FIXME)"
-msgstr "Atsakyti _visiems (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-msgid "S_end Status Report (FIXME)"
-msgstr "Siøs_ti bûsenos ataskaità (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr "Praleisti pasi_kartojimà (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-msgid "Save the task and close the dialog box"
-msgstr "Iðsaugoti uþduotá ir uþdaryti dialogo langà"
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "Search again for the same string"
-msgstr "Vël ieðkoti tos paèios eilutës"
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-msgid "Search for a string"
-msgstr "Ieðkoti eilutës"
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr "Atðaukti"
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-msgid "Undo the last action"
-msgstr "Atðaukti paskutiná veiksmà"
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:27
-msgid "_Appointment (FIXME)"
-msgstr "Á_vykis (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-msgid "_Mark Complete (FIXME)"
-msgstr "_Paþymëti uþbaigta (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-msgid "_Reply (FIXME)"
-msgstr "_Atsakyti (FIXME)"
-
-#: ui/evolution-tasks.xml.h:2
-msgid "Create a new task"
-msgstr "Sukurti naujà uþduotá"
-
-#: ui/evolution-tasks.xml.h:3
-msgid "New Task"
-msgstr "Nauja uþduotis"
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr "Iðsaugoti uþduotá kaip kaþkà kità"
-
-#: ui/evolution-tasks.xml.h:6
-msgid "Tasks Preferences..."
-msgstr "Uþduoèiø nuostatos..."
-
-#: ui/evolution-tasks.xml.h:9
-msgid "_Task"
-msgstr "_Uþduotis"
-
-#: ui/evolution.xml.h:1
-msgid "About Evolution..."
-msgstr "Apie Evolution..."
-
-#: ui/evolution.xml.h:3
-msgid "Close this window"
-msgstr "Uþdaryti ðá langà"
-
-#: ui/evolution.xml.h:4
-msgid "Customi_ze Toolbars..."
-msgstr "Prisitai_kyti árankines..."
-
-#: ui/evolution.xml.h:5
-msgid "Customize"
-msgstr "Prisitaikyti"
-
-#: ui/evolution.xml.h:6
-msgid "Customize toolbars"
-msgstr "Prisitaikyti árankines"
-
-#: ui/evolution.xml.h:7
-msgid "Display a different folder"
-msgstr "Parodyti kità aplankà"
-
-#: ui/evolution.xml.h:8
-msgid "E_xit"
-msgstr "I_ðeiti"
-
-#: ui/evolution.xml.h:9
-msgid "Evolution _Window"
-msgstr "Evolution _Langas"
-
-#: ui/evolution.xml.h:10
-msgid "Evolution bar _shortcut"
-msgstr "Evolution juostos _trumpë"
-
-#: ui/evolution.xml.h:11
-msgid "Exit the program"
-msgstr "Iðeiti ið programos"
-
-#: ui/evolution.xml.h:12
-msgid "Getting _Started"
-msgstr "_Susipaþinimas"
-
-#: ui/evolution.xml.h:13
-msgid "Import an external file format"
-msgstr "Importuoti iðorinæ bylà"
-
-#: ui/evolution.xml.h:14
-msgid "Main toolbar"
-msgstr "Pagrindinë árankinë"
-
-#: ui/evolution.xml.h:15
-msgid "Show information about Evolution"
-msgstr "Rodyti informacijà apie Evolution"
-
-#: ui/evolution.xml.h:16
-msgid "Submit Bug Report"
-msgstr "Iðsiøsti klaidos praneðimà"
-
-#: ui/evolution.xml.h:17
-msgid "Submit _Bug Report"
-msgstr "Ið_siøsti klaidos praneðimà"
-
-#: ui/evolution.xml.h:18
-msgid "Submit bug report using Bug Buddy."
-msgstr "Praneðti apie klaidà, naudojant Bug Buddy."
-
-#: ui/evolution.xml.h:19
-msgid "Toggle whether to show the folder bar"
-msgstr "Perjungti, ar rodyti aplankø juostà"
-
-#: ui/evolution.xml.h:20
-msgid "Toggle whether to show the shortcut bar"
-msgstr "Perjungti, ar rodyti trumpiø juostà"
-
-#: ui/evolution.xml.h:21
-msgid "Using the C_ontact Manager"
-msgstr "K_ontaktø menedþerio naudojimas"
-
-#: ui/evolution.xml.h:22
-msgid "Using the _Calendar"
-msgstr "_Kalendoriaus vartojimas"
-
-#: ui/evolution.xml.h:23
-msgid "Using the _Mailer"
-msgstr "_Paðto programos naudojimas"
-
-#: ui/evolution.xml.h:24
-msgid "Work Offline"
-msgstr "Dirbti atsijungus"
-
-#: ui/evolution.xml.h:25
-msgid "_About Evolution..."
-msgstr "_Apie Evolution..."
-
-#: ui/evolution.xml.h:26
-msgid "_Actions"
-msgstr "_Veiksmai"
-
-#: ui/evolution.xml.h:33
-msgid "_Folder Bar"
-msgstr "_Aplankø juosta"
-
-#: ui/evolution.xml.h:34
-msgid "_Go to Folder..."
-msgstr "_Eiti á aplankà..."
-
-#: ui/evolution.xml.h:36
-msgid "_Import file..."
-msgstr "_Importuoti bylà..."
-
-#: ui/evolution.xml.h:37
-msgid "_Index"
-msgstr "_Indeksas"
-
-#: ui/evolution.xml.h:38
-msgid "_Mail message"
-msgstr "_Paðto laiðkas"
-
-#: ui/evolution.xml.h:40
-msgid "_New Folder"
-msgstr "_Naujas aplankas"
-
-#: ui/evolution.xml.h:41
-msgid "_Shortcut Bar"
-msgstr "_Trumpiø juosta"
-
-#: views/addressbook/galview.xml.h:1
-msgid "Adress Cards"
-msgstr "Adresø kortelës"
-
-#: views/addressbook/galview.xml.h:2
-msgid "By Company"
-msgstr "Pagal kompanijà"
-
-#: views/addressbook/galview.xml.h:3
-msgid "Phone List"
-msgstr "Telefonø sàraðas"
-
-#: views/mail/galview.xml.h:1
-msgid "By Sender"
-msgstr "Pagal siuntëjà"
-
-#: views/mail/galview.xml.h:2
-msgid "By Status"
-msgstr "Pagal bûsenà"
-
-#: views/mail/galview.xml.h:3
-msgid "By Subject"
-msgstr "Pagal temà"
-
-#: views/mail/galview.xml.h:4
-msgid "Messages"
-msgstr "Laiðkai"
-
-#: views/tasks/galview.xml.h:2
-msgid "With Category"
-msgstr "Su kategorija"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:392
-msgid "Tentative"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:393
-msgid "Busy"
-msgstr "Uþimtas"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:394
-msgid "Out of Office"
-msgstr "Nesu darbe"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:395
-msgid "No Information"
-msgstr "Nëra informacijos"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:411
-msgid "_Invite Others..."
-msgstr "Pakv_iesti kitus..."
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:431
-msgid "_Options"
-msgstr "_Parinktys"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:448
-msgid "Show _Only Working Hours"
-msgstr "Rodyti tik _darbo valandas"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:461
-msgid "Show _Zoomed Out"
-msgstr "Rodyti _atitrauktà"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:479
-msgid "_Update Free/Busy"
-msgstr "_Atnaujinti Laisvas/Uþimtas"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:497
-msgid "_<<"
-msgstr "_<<"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:514
-msgid "_Autopick"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:528
-msgid ">_>"
-msgstr ">_>"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:545
-msgid "_All People and Resources"
-msgstr "_Visi þmonës ir resursai"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:558
-msgid "All _People and One Resource"
-msgstr "Visi þ_monës ir vienas resursas"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:571
-msgid "_Required People"
-msgstr "_Bûtini þmonës"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:584
-msgid "Required People and _One Resource"
-msgstr "Bûtini þmonës ir _vienas resursas"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:607
-msgid "Meeting _start time:"
-msgstr "Susitikimo _pradþios laikas:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:631
-msgid "Meeting _end time:"
-msgstr "Susitikimo pa_baigos laikas:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:744
-msgid "All Attendees"
-msgstr "Visi dalyviai"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:469
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2477
-msgid "%A, %B %d, %Y"
-msgstr "%A, %Y m. %B %e"
-
-#: widgets/menus/gal-view-menus.c:176
-msgid "_Current View"
-msgstr "_Esamas vaizdas"
-
-#: widgets/menus/gal-view-menus.c:202
-msgid "Define Views"
-msgstr "Apibrëþti vaizdus"
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:422
-msgid "MTWTFSS"
-msgstr "PATKPÐS"
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1061 widgets/misc/e-calendar-item.c:2756
-msgid "%B %Y"
-msgstr "%Y %B"
-
-#: widgets/misc/e-cell-date-edit.c:221 widgets/misc/e-dateedit.c:418
-msgid "Now"
-msgstr "Dabar"
-
-#: widgets/misc/e-cell-date-edit.c:245
-msgid "OK"
-msgstr "Gerai"
-
-#: widgets/misc/e-cell-date-edit.c:726
-#, c-format
-msgid "The time must be in the format: %s"
-msgstr "Data turi bûti ávesta formatu: %s"
-
-#: widgets/misc/e-clipped-label.c:112
-msgid "..."
-msgstr "..."
-
-#: widgets/misc/e-filter-bar.c:166
-msgid "Save Search"
-msgstr "Iðsaugoti paieðkà"
-
-#: widgets/misc/e-filter-bar.c:237
-msgid "Advanced Search"
-msgstr "Iðsami paieðka"
-
-#: widgets/misc/e-filter-bar.c:317
-msgid "Advanced ..."
-msgstr "Iðsami..."
-
-#: widgets/misc/e-messagebox.c:152
-msgid "Information"
-msgstr "Informacija"
-
-#: widgets/misc/e-messagebox.c:159
-msgid "Warning"
-msgstr "Áspëjimas"
-
-#: widgets/misc/e-messagebox.c:173
-msgid "Question"
-msgstr "Klausimas"
-
-#: widgets/misc/e-messagebox.c:180
-msgid "Message"
-msgstr "Þinutë"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:224
-msgid "Don't show this message again."
-msgstr "Kità kartà neberodyti ðios þinutës."
-
-#: widgets/misc/e-search-bar.c:148
-msgid "Sear_ch"
-msgstr "Pai_eðka"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-msgid "The Personal Addressbook Server"
-msgstr "Asmeninis Adresø knygelës serveris"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr ""
-
-#: wombat/wombat.c:173
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr "setup_vfs(): negalëjau inicializuoti GNOME-VFS"
-
-#: wombat/wombat.c:185
-msgid "init_corba(): could not initialize GNOME"
-msgstr "init_corba(): negalëjau inicializuoti GNOME"
-
-#: wombat/wombat.c:198
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "init_bonobo(): negalëjau inicializuoti Bonobo"
-
-#~ msgid "You must be working online to complete this operation"
-#~ msgstr "Tu turi dirbti prisijungæs, kad uþbaigtum ðá veiksmà"
-
-#~ msgid "Body contains"
-#~ msgstr "Tekstas savyje turi"
-
-#~ msgid "Body does not contain"
-#~ msgstr "Tekstas savyje neturi"
-
-#~ msgid "Body or subject contains"
-#~ msgstr "Tekstas ar tema savyje turi"
-
-#~ msgid "Sender contains"
-#~ msgstr "Siuntëjas savyje turi"
-
-#~ msgid "Subject contains"
-#~ msgstr "Tema savyje turi"
-
-#~ msgid "Subject does not contain"
-#~ msgstr "Tema savyje neturi"
-
-#~ msgid "VFolder on Subject"
-#~ msgstr "vAplankas pagal Temà"
-
-#~ msgid "VFolder on Sender"
-#~ msgstr "vAplankas pagal Siuntëjà"
-
-#~ msgid "VFolder on Recipients"
-#~ msgstr "vAplankas pagal Gavëjus"
-
-#~ msgid "Save As..."
-#~ msgstr "Iðsaugoti kaip..."
-
-#~ msgid "Mark as Read"
-#~ msgstr "Paþymëti skaitytu"
-
-#~ msgid "Mark as Unread"
-#~ msgstr "Paþymëti neskaitytu"
-
-#~ msgid "Move to Folder..."
-#~ msgstr "Perkelti á aplankà..."
-
-#~ msgid "Copy to Folder..."
-#~ msgstr "Kopijuoti á aplankà..."
-
-#~ msgid "Do you accept?"
-#~ msgstr "Ar tu pritari?"
-
-#~ msgid "_Compose"
-#~ msgstr "_Sukurti"
-
-#~ msgid "Click here to add a contact"
-#~ msgstr "Spausk èia, kad pridëtum kontaktà"
-
-#~ msgid "Remove action"
-#~ msgstr "Paðalinti veiksmà"
-
-#~ msgid "Remove criterion"
-#~ msgstr "Paðalinti sàlygà"
-
-#~ msgid ""
-#~ "This option will connect to the server using a the PLAIN SASL mechanism if "
-#~ "the server supports it."
-#~ msgstr ""
-#~ "Su ðia parinktimi jungiantis prie serverio bus naudojamas PLAIN SASL "
-#~ "mechanizmas, jei serveris já palaiko."
-
-#~ msgid "Edit Filter Rule"
-#~ msgstr "Keisti filtro taisyklæ"
-
-#~ msgid "Source"
-#~ msgstr "Ðaltinis"
-
-#~ msgid "Add VFolder Rule"
-#~ msgstr "Pridëti vAplanko taisyklæ"
-
-#~ msgid "Edit VFolder Rule"
-#~ msgstr "Keisti vAplanko taisyklæ"
-
-#~ msgid ""
-#~ "One or more of your servers are not configured correctly.\n"
-#~ "Do you wish to save anyway?"
-#~ msgstr ""
-#~ "Vienas ar daugiau tavo serveriø nëra teisingai sutvarkytas.\n"
-#~ "Ar vis tiek nori iðsaugoti?"
-
-#~ msgid "Unspecified"
-#~ msgstr "Nenurodyta"
-
-#~ msgid "Check settings"
-#~ msgstr "Tikrinti nuostatas"
-
-#~ msgid "Email address:"
-#~ msgstr "El. paðto adresas:"
-
-#~ msgid "Evolution Mail Configuration"
-#~ msgstr "Evolution paðto nustatymas"
-
-#~ msgid "Hostname:"
-#~ msgstr "Hosto vardas:"
-
-#~ msgid "IMAP"
-#~ msgstr "IMAP"
-
-#~ msgid "Include this account when receiving mail"
-#~ msgstr "Átraukti ðià sàskaità parsiunèiant paðtà"
-
-#~ msgid "Kerberos"
-#~ msgstr "Kerberos"
-
-#~ msgid "Mail"
-#~ msgstr "Paðtas"
-
-#~ msgid "Mail Account"
-#~ msgstr "Paðto sàskaita"
-
-#~ msgid "Mail Configuration Druid"
-#~ msgstr "Paðto nustatymo meistras"
-
-#~ msgid "Optional"
-#~ msgstr "Nebûtinas"
-
-#~ msgid "Password:"
-#~ msgstr "Slaptaþodis:"
-
-#~ msgid "Remember my password"
-#~ msgstr "Prisiminti mano slaptaþodá"
-
-#~ msgid "Reply address:"
-#~ msgstr "Atsakymo adresas:"
-
-#~ msgid "Required"
-#~ msgstr "Reikalingas"
-
-#~ msgid "Save password"
-#~ msgstr "Iðsaugoti slaptaþodá"
-
-#~ msgid "Select signature file"
-#~ msgstr "Pasirink paraðo bylà"
-
-#~ msgid "Server type:"
-#~ msgstr "Serverio tipas:"
-
-#~ msgid "Signature:"
-#~ msgstr "Paraðas:"
-
-#~ msgid "Transport"
-#~ msgstr "Siuntimas"
-
-#~ msgid "Transport Authentication"
-#~ msgstr "Siuntimo autentikacija"
-
-#~ msgid ""
-#~ "Type the name by which you would like to refer to these servers. For "
-#~ "example: \"Work\" or \"Home\"."
-#~ msgstr ""
-#~ "Pasirink pavadinimà, kuriuo norëtum vadinti ðiuos serverius. Pavyzdþiui, "
-#~ "¥Namai´ ar ¥Darbas´."
-
-#~ msgid "minutes."
-#~ msgstr "minutes."
-
-#~ msgid "<unknown>"
-#~ msgstr "<neþinomas>"
-
-#~ msgid "Message _Display"
-#~ msgstr "Laiðko ro_dymas"
-
-#~ msgid "_Message Hiding"
-#~ msgstr "_Laiðkø slëpimas"
-
-#~ msgid "The time is invalid"
-#~ msgstr "Laikas netaisyklingas"
-
-#~ msgid "Disabled"
-#~ msgstr "Iðjungtas"
-
-#~ msgid "Synchronize"
-#~ msgstr "Sinchronizuoti"
-
-#~ msgid "Copy From Pilot"
-#~ msgstr "Kopijuoti ið Pilot"
-
-#~ msgid "Copy To Pilot"
-#~ msgstr "Kopijuoti á Pilot"
-
-#~ msgid "Merge From Pilot"
-#~ msgstr "Sulieti ið Pilot"
-
-#~ msgid "Merge To Pilot"
-#~ msgstr "Sulieti á Pilot"
-
-#~ msgid "Evolution Addressbook Conduit"
-#~ msgstr "Evolution adresø knygelës konduitas"
-
-#~ msgid "(C) 1998-2000 the Free Software Foundation and Helix Code"
-#~ msgstr "(C) 1998-2000 the Free Software Foundation and Helix Code"
-
-#~ msgid "Configuration utility for the evolution addressbook conduit.\n"
-#~ msgstr "Evolution adresø knygelës konduito konfigûravimo árankis\n"
-
-#~ msgid "Synchronize Action"
-#~ msgstr "Sinchronizuoti veiksmà"
-
-#~ msgid "Conduit state"
-#~ msgstr "Konduito bûsena"
-
-#~ msgid ""
-#~ "No pilot configured, please choose the\n"
-#~ "'Pilot Link Properties' capplet first."
-#~ msgstr ""
-#~ "Nëra sukonfigûruoto Piloto, praðau pirmiausia\n"
-#~ "Pasirinkti ¥Ryðio su Pilotu savybës´ capplet'à."
-
-#~ msgid "Not connected to the gnome-pilot daemon"
-#~ msgstr "Neprisijungta prie gnome-pilot demono"
-
-#~ msgid ""
-#~ "An error occured when trying to fetch\n"
-#~ "pilot list from the gnome-pilot daemon"
-#~ msgstr ""
-#~ "Ávyko klaida, bandant gauti pilotø\n"
-#~ "sàraðà ið gnome-pilot demono"
-
-#~ msgid "Configure the address conduit"
-#~ msgstr "Konfigûruoti adresø konduità"
-
-#~ msgid "Evolution Address conduit "
-#~ msgstr "Evolution Adresø konduitas "
-
-#~ msgid "Evolution Calendar Conduit"
-#~ msgstr "Evolution Kalendoriaus konduitas"
-
-#~ msgid "Configuration utility for the evolution calendar conduit.\n"
-#~ msgstr "Evolution kalendoriaus konduito konfigûravimo árankis.\n"
-
-#~ msgid "Configure the Evolution Calendar conduit"
-#~ msgstr "Konfigûruoti Evolution Kalendoriaus konduità"
-
-#~ msgid "Configure the Evolution ToDo conduit"
-#~ msgstr "Konfigûruoti Evolution ToDo konduità"
-
-#~ msgid "Evolution ToDo Conduit"
-#~ msgstr "Evolution ToDo konduitas"
-
-#~ msgid "Configuration utility for the evolution todo conduit.\n"
-#~ msgstr "Evolution ToDo konduito konfigûravimo árankis.\n"
-
-#~ msgid "The priority must be between 1 and 9, inclusive"
-#~ msgstr "Svarbumas turi bûti tarp 1 ir 9 imtinai"
-
-#~ msgid "Edit this appointment..."
-#~ msgstr "Taisyti ðá ávyká..."
-
-#~ msgid "Synchronising IMAP folder"
-#~ msgstr "Sinchronizuojamas IMAP aplankas"
-
-#~ msgid "Enter the identity you wish to send this message from"
-#~ msgstr "Ávesk asmenybæ, ið kurios nori iðsiøsti ðá laiðkà"
-
-#~ msgid "Enter the subject of the mail"
-#~ msgstr "Ávesk laiðko temà"
-
-#~ msgid "Account Properties"
-#~ msgstr "Sàskaitos savybës"
-
-#~ msgid "E-Mail Address:"
-#~ msgstr "El. paðto adresas:"
-
-#~ msgid "Include in \"Get Mail\" operations."
-#~ msgstr "Átraukti á ¥Gauti paðtà´ veiksmus."
-
-#~ msgid "Incoming Mail Server"
-#~ msgstr "Gaunamo paðto serveris"
-
-#~ msgid "Miscellaneous"
-#~ msgstr "Ávairûs"
-
-#~ msgid "Outgoing Mail Server"
-#~ msgstr "Siunèiamo paðto serveris"
-
-#~ msgid "Servers"
-#~ msgstr "Serveriai"
-
-#~ msgid "_Addressbook Configuration..."
-#~ msgstr "_Adresø knygelës konfigûravimas..."
-
-#~ msgid "_Print Contacts..."
-#~ msgstr "S_pausdinti kontaktus..."
-
-#~ msgid "Ca_lendar"
-#~ msgstr "Ka_lendorius"
-
-#~ msgid "Calendar Preferences..."
-#~ msgstr "Kalendoriaus nuostatos..."
-
-#~ msgid "_Print this calendar"
-#~ msgstr "S_pausdinti ðá kalendoriø"
-
-#~ msgid "Create Rule"
-#~ msgstr "Sukurti taisyklæ"
-
-#~ msgid "Fi_lter on Sender"
-#~ msgstr "Fi_ltras pagal Siuntëjà"
-
-#~ msgid "Filter on Rec_ipients"
-#~ msgstr "Filtras pagal _Gavëjus"
-
-#~ msgid "Get Mail"
-#~ msgstr "Gauti paðtà"
-
-#~ msgid "Reply to _Sender"
-#~ msgstr "Atsakyti _siuntëjui"
-
-#~ msgid "Show _All Messages"
-#~ msgstr "Rodyti _visus laiðkus"
-
-#~ msgid "_Filter on Subject"
-#~ msgstr "_Filtras pagal Temà"
-
-#~ msgid "_Mail Configuration..."
-#~ msgstr "_Paðto nustatymas...."
-
-#~ msgid "_Print Message"
-#~ msgstr "S_pausdinti laiðkà"
-
-#~ msgid "_VFolder on Subject"
-#~ msgstr "_vAplankas pagal Temà"
-
-#~ msgid "New"
-#~ msgstr "Nauja"
-
-#~ msgid "Customi_ze..."
-#~ msgstr "Prisi_taikyti..."
-
-#~ msgid "Show the _Folder Bar"
-#~ msgstr "Rodyti _Aplankø juostà"
-
-#~ msgid "Show the _Shortcut Bar"
-#~ msgstr "Rodyti _Trumpiø juostà"
-
-#~ msgid "_Settings"
-#~ msgstr "_Nuostatos"
diff --git a/po/nl.po b/po/nl.po
deleted file mode 100644
index 0f963dadd7..0000000000
--- a/po/nl.po
+++ /dev/null
@@ -1,11105 +0,0 @@
-# Evolution - Dutch translation
-# Copyright (C) 2000 Free Software Foundation, Inc.
-# Dirk-Jan C. Binnema <dirkjan@gnome.org>, 2001
-# Arjan Scherpenisse <acscherp@wins.uva.nl>, 2000
-# Gerard Oskamp <gerard@linuxfreak.nl>, 2000
-# Dennis Smit <synap@area101.penguin.nl>, 2000
-# Almer S. Tigelaar <almer@gnome.org>, 2000, 2001
-msgid ""
-msgstr ""
-"Project-Id-Version: Evolution CVS\n"
-"POT-Creation-Date: 2001-05-02 13:16+0200\n"
-"PO-Revision-Date: 2001-04-16 22:12+0100\n"
-"Last-Translator: Dirk-Jan C. Binnema <dirkjan@gnome.org>\n"
-"Language-Team: Dutch <nl@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: addressbook/backend/ebook/e-card.c:3209
-msgid "Card: "
-msgstr "Kaart: "
-
-#: addressbook/backend/ebook/e-card.c:3211
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-"\n"
-"Naam: "
-
-#: addressbook/backend/ebook/e-card.c:3212
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-"\n"
-" Voorvoegsel: "
-
-#: addressbook/backend/ebook/e-card.c:3213
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-"\n"
-" Gegeven: "
-
-#: addressbook/backend/ebook/e-card.c:3214
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-"\n"
-" Extra: "
-
-#: addressbook/backend/ebook/e-card.c:3215
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-"\n"
-" Familie: "
-
-#: addressbook/backend/ebook/e-card.c:3216
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-"\n"
-" Achtervoegsel: "
-
-#: addressbook/backend/ebook/e-card.c:3230
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-"\n"
-"Geboortedatum: "
-
-#: addressbook/backend/ebook/e-card.c:3241
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-"\n"
-"Adres:"
-
-#: addressbook/backend/ebook/e-card.c:3243
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-"\n"
-" Postbus: "
-
-#: addressbook/backend/ebook/e-card.c:3244
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-"\n"
-" Ext: "
-
-#: addressbook/backend/ebook/e-card.c:3245
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-"\n"
-" Straat: "
-
-#: addressbook/backend/ebook/e-card.c:3246
-msgid ""
-"\n"
-" City: "
-msgstr ""
-"\n"
-" Plaats: "
-
-#: addressbook/backend/ebook/e-card.c:3247
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-"\n"
-" Regio: "
-
-#: addressbook/backend/ebook/e-card.c:3248
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-"\n"
-" Postcode: "
-
-#: addressbook/backend/ebook/e-card.c:3249
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-"\n"
-" Land: "
-
-#: addressbook/backend/ebook/e-card.c:3262
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-"\n"
-"Afleveringslabel: "
-
-#: addressbook/backend/ebook/e-card.c:3274
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-"\n"
-"Telefoons:\n"
-
-#: addressbook/backend/ebook/e-card.c:3277
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-"\n"
-"Telefoon:"
-
-#: addressbook/backend/ebook/e-card.c:3301
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-"\n"
-"E-mail:\n"
-
-#: addressbook/backend/ebook/e-card.c:3304
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-"\n"
-"E-mail:"
-
-#: addressbook/backend/ebook/e-card.c:3323
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-"\n"
-"Mailer: "
-
-#: addressbook/backend/ebook/e-card.c:3329
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-"\n"
-"Tijdzone: "
-
-#: addressbook/backend/ebook/e-card.c:3337
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-"\n"
-"Geografische Locatie: "
-
-#: addressbook/backend/ebook/e-card.c:3341
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-"\n"
-"Bedrijfsrol: "
-
-#: addressbook/backend/ebook/e-card.c:3353
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-"\n"
-"Org: "
-
-#: addressbook/backend/ebook/e-card.c:3354
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-"\n"
-" Naam: "
-
-#: addressbook/backend/ebook/e-card.c:3355
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-"\n"
-" Eenheid: "
-
-#: addressbook/backend/ebook/e-card.c:3356
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-"\n"
-" Eenheid2: "
-
-#: addressbook/backend/ebook/e-card.c:3357
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-"\n"
-" Eenheid3: "
-
-#: addressbook/backend/ebook/e-card.c:3358
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-"\n"
-" Eenheid4: "
-
-#: addressbook/backend/ebook/e-card.c:3362
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-"\n"
-"Categorieën: "
-
-#: addressbook/backend/ebook/e-card.c:3363
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-"\n"
-"Opmerking: "
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3376
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-"\n"
-"Unieke Tekenreeks: "
-
-#: addressbook/backend/ebook/e-card.c:3379
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-"\n"
-"Publieke Sleutel: "
-
-#: addressbook/backend/ebook/e-destination.c:232
-msgid "???"
-msgstr ""
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:1
-msgid "Factory to import GnomeCard files into Evolution."
-msgstr "Factory om GnomeCard bestanden importeren in Evolution."
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:2
-msgid "Imports GnomeCard files into Evolution."
-msgstr "Importeert GnomeCard bestanden naar Evolution."
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:21
-#: addressbook/backend/ebook/load-pine-addressbook.c:22
-#: addressbook/backend/ebook/test-client-list.c:23
-#: addressbook/backend/ebook/test-client.c:33
-#: addressbook/conduit/address-conduit.c:1092
-#: addressbook/gui/component/addressbook-factory.c:42
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:98 calendar/gui/main.c:57
-msgid "Could not initialize Bonobo"
-msgstr "Kon Bonobo niet initialiseren"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr "Cursor kon niet worden geladen\n"
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr "EBook niet geladen\n"
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr "Kon \"wombat\" server niet starten"
-
-#: addressbook/conduit/address-conduit.c:655
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr "Kon \"wombat\" niet starten"
-
-#: addressbook/conduit/address-conduit.c:687
-#: addressbook/conduit/address-conduit.c:690
-msgid "Could not read pilot's Address application block"
-msgstr "Kon de adresgegevens niet uit de pilot lezen"
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:7
-msgid "Add"
-msgstr "Toevoegen"
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr "_Verjaardag:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr "_Bedrijf"
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr "Bedrijfs_fax"
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-msgid "C_ontacts..."
-msgstr "C_ontacten..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr "Ca_tegorieën..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-msgid "Contact Editor"
-msgstr "Contacten Bewerken"
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr "Details"
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr "Opslaan Als:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-msgid "General"
-msgstr "Algemeen"
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr "Nieuw telefoontype"
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-msgid "No_tes:"
-msgstr "Aa_ntekeningen:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr "Telefoontypes"
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1284
-msgid "Primary Email"
-msgstr "Primaire E-mail"
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr "Bij voorkeur _HTML-berichten"
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr "Homepage:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:74
-msgid "_Add"
-msgstr "_Toevoegen"
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr "_Adres..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr "_Assistent:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr "Ge_boortedatum:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr "_Werk"
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-msgid "_Company:"
-msgstr "_Bedrijf:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/folder-browser.c:639 mail/mail-config.glade.h:75
-#: ui/evolution-event-editor.xml.h:57 ui/evolution-mail.xml.h:98
-#: ui/evolution-task-editor-dialog.xml.h:69
-msgid "_Delete"
-msgstr "_Verwijderen"
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr "Af_deling:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr "_Volledige Naam..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-msgid "_Home"
-msgstr "Privé"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-msgid "_Job title:"
-msgstr "_Functie:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr "_Manager:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-msgid "_Mobile"
-msgstr "_Mobiele Telefoon"
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr "_Bijnaam:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr "Kant_oor:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr "_Beroep:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr "_Echtgeno(o)t(e):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr "Dit is een email-adres"
-
-#: addressbook/contact-editor/e-contact-editor.c:603
-msgid "This contact belongs to these categories:"
-msgstr "Dit contact behoort tot deze categoriëen:"
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-#: addressbook/gui/widgets/e-addressbook-view.c:676
-msgid "Assistant"
-msgstr "Assistent"
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/contact-editor/e-contact-editor.c:1310
-msgid "Business"
-msgstr "Zakelijk"
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-msgid "Business 2"
-msgstr "Bedrijf 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#: addressbook/gui/widgets/e-addressbook-view.c:656
-msgid "Business Fax"
-msgstr "Bedrijfsfax"
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Callback"
-msgstr "Terugbel"
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "Car"
-msgstr "Auto"
-
-#: addressbook/contact-editor/e-contact-editor.c:1248
-msgid "Company"
-msgstr "Bedrijf"
-
-#: addressbook/contact-editor/e-contact-editor.c:1249
-#: addressbook/contact-editor/e-contact-editor.c:1311
-msgid "Home"
-msgstr "Thuis"
-
-#: addressbook/contact-editor/e-contact-editor.c:1250
-msgid "Home 2"
-msgstr "Thuis 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1251
-#: addressbook/gui/widgets/e-addressbook-view.c:657
-msgid "Home Fax"
-msgstr "Fax Thuis"
-
-#: addressbook/contact-editor/e-contact-editor.c:1252
-#: addressbook/gui/widgets/e-addressbook-view.c:660
-msgid "ISDN"
-msgstr "ISDN Nummer"
-
-#: addressbook/contact-editor/e-contact-editor.c:1253
-msgid "Mobile"
-msgstr "Mobiele Telefoon"
-
-#: addressbook/contact-editor/e-contact-editor.c:1254
-#: addressbook/contact-editor/e-contact-editor.c:1312
-#: mail/mail-config.glade.h:40
-msgid "Other"
-msgstr "Overige"
-
-#: addressbook/contact-editor/e-contact-editor.c:1255
-#: addressbook/gui/widgets/e-addressbook-view.c:662
-msgid "Other Fax"
-msgstr "Andere Fax"
-
-#: addressbook/contact-editor/e-contact-editor.c:1256
-#: addressbook/gui/widgets/e-addressbook-view.c:663
-msgid "Pager"
-msgstr "Pieper"
-
-#: addressbook/contact-editor/e-contact-editor.c:1257
-msgid "Primary"
-msgstr "Eerste"
-
-#: addressbook/contact-editor/e-contact-editor.c:1258
-#: addressbook/gui/widgets/e-addressbook-view.c:664
-msgid "Radio"
-msgstr "Radio"
-
-#: addressbook/contact-editor/e-contact-editor.c:1259
-#: addressbook/gui/widgets/e-addressbook-view.c:665
-msgid "Telex"
-msgstr "Telex"
-
-#: addressbook/contact-editor/e-contact-editor.c:1260
-msgid "TTY/TDD"
-msgstr "TTY/TDD"
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:668
-msgid "Email 2"
-msgstr "E-mail 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/gui/widgets/e-addressbook-view.c:669
-msgid "Email 3"
-msgstr "E-mail 3"
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-msgid "Delete Contact?"
-msgstr "Contact verwijderen?"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:233
-msgid "Contact Quick-Add"
-msgstr "Contact snel toevoegen"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:235
-msgid "Edit Full"
-msgstr "Volledig bewerken"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:276
-#: addressbook/gui/widgets/e-addressbook-view.c:643
-msgid "Full Name"
-msgstr "Volledige Naam:"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:282
-msgid "E-mail"
-msgstr "E-mail"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr "Adres _2:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr "Canada"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr "Controleer Adres"
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr "_Land:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr "Finland"
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr "Verenigde Staten"
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr "_Adres:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-msgid "_City:"
-msgstr "_Plaats:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr "_Postbus:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr "_Staat/Provincie:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr "_Postcode:"
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr "Controleer Volledige Naam"
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr "Dr."
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr "Dhr."
-
-#: addressbook/contact-editor/fullname.glade.h:4
-msgid "I"
-msgstr "I"
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr "II"
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr "III"
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr "Jr."
-
-#: addressbook/contact-editor/fullname.glade.h:8
-msgid "Miss"
-msgstr "Mjfr."
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr "Dhr."
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr "Mevr."
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr "Mevr."
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr "Dhr."
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr "_Voornaam:"
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr "_Achternaam:"
-
-#: addressbook/contact-editor/fullname.glade.h:15
-msgid "_Middle:"
-msgstr "_Tweede Naa_m:"
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr "Achtervoeg_sel:"
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr "_Titel:"
-
-#: addressbook/gui/component/addressbook.c:241
-msgid "As _Minicards"
-msgstr "Als _Minikaarten"
-
-#: addressbook/gui/component/addressbook.c:247
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr "Als _Tabel"
-
-#: addressbook/gui/component/addressbook.c:399
-#, c-format
-msgid "Enter password for %s"
-msgstr "Voer het wachtwoord voor %s in"
-
-#: addressbook/gui/component/addressbook.c:427
-msgid "Unable to open addressbook"
-msgstr "Kan het adresboek niet openen"
-
-#: addressbook/gui/component/addressbook.c:432
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or have tried\n"
-"to access an LDAP server and don't have LDAP support\n"
-"compiled in. If you've entered a URI, check the URI for\n"
-"correctness and reenter. If not, you probably have\n"
-"attempted to access an LDAP server. If you wish to be\n"
-"able to use LDAP, you'll need to download and install\n"
-"OpenLDAP and recompile and install Evolution.\n"
-msgstr ""
-"Het is niet gelukt om dit adresboek te openen. Dit betekent\n"
-"dat u een verkeerde URI hebt opgegeven, of geprobeerd hebt een\n"
-"LDAP server te gebruiken terwijl er geen LDAP-ondersteuning ingecompi-\n"
-"leerd is. Als u een URI hebt opgegeven, controleer die dan en\n"
-"probeer het opnieuw. Als dat niet zo is, hebt u waarschijnlijk\n"
-"een LDAP server gebruikt. Als u LDAP wilt gebruiken, moet u\n"
-"OpenLDAP downloaden en installeren en Evolution hercompileren\n"
-"en opnieuw installeren.\n"
-
-#: addressbook/gui/component/addressbook.c:555
-msgid "Show All"
-msgstr "Allen Weergeven"
-
-#: addressbook/gui/component/addressbook.c:557
-msgid "Advanced..."
-msgstr "Uitgebreid..."
-
-#: addressbook/gui/component/addressbook.c:587 calendar/gui/gnome-cal.c:236
-msgid "Any field contains"
-msgstr "Elk veld bevat"
-
-#: addressbook/gui/component/addressbook.c:588
-msgid "Name contains"
-msgstr "Naam bevat"
-
-#: addressbook/gui/component/addressbook.c:589
-msgid "Email contains"
-msgstr "E-mail bevat"
-
-#: addressbook/gui/component/addressbook.c:732
-msgid "The URI that the Folder Browser will display"
-msgstr "De URI die de Mapbladeraar zal laten zien"
-
-#: addressbook/gui/component/addressbook-config.c:148
-msgid "LDAP Server"
-msgstr "LDAP Server"
-
-#: addressbook/gui/component/addressbook-config.c:150
-msgid "File"
-msgstr "Bestand"
-
-#: addressbook/gui/component/addressbook-config.c:153
-msgid "Unknown addressbook type"
-msgstr "Onbekend adresboek type"
-
-#: addressbook/gui/component/addressbook-config.c:163
-msgid "None (anonymous mode)"
-msgstr "Geen (anonieme modus)"
-
-#: addressbook/gui/component/addressbook-config.c:165
-#: camel/camel-sasl-plain.c:32 camel/providers/imap/camel-imap-provider.c:80
-#: camel/providers/nntp/camel-nntp-store.c:291
-#: camel/providers/pop3/camel-pop3-provider.c:67 mail/mail-config.glade.h:43
-msgid "Password"
-msgstr "Wachtwoord"
-
-#: addressbook/gui/component/addressbook-config.c:167
-msgid "SASL"
-msgstr "SASL"
-
-#: addressbook/gui/component/addressbook-config.c:170
-msgid "Unknown auth type"
-msgstr "Onbekende aanmeldingstype"
-
-#: addressbook/gui/component/addressbook-config.c:179
-msgid "Base"
-msgstr "Basis"
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "One"
-msgstr "Een"
-
-#: addressbook/gui/component/addressbook-config.c:183
-msgid "Subtree"
-msgstr "Subboom"
-
-#: addressbook/gui/component/addressbook-config.c:186
-msgid "Unknown scope type"
-msgstr "Onbekend bereiktype"
-
-#: addressbook/gui/component/addressbook-config.c:353
-msgid "Bind DN:"
-msgstr "Bind DN:"
-
-#: addressbook/gui/component/addressbook-config.c:354
-msgid "FIXME Bind DN Help text here"
-msgstr "FIXME Verbindings DN Help tekst hier"
-
-#: addressbook/gui/component/addressbook-config.c:356
-#: mail/mail-config.glade.h:50
-msgid "Remember this password"
-msgstr "Onthoud dit wachtwoord"
-
-#: addressbook/gui/component/addressbook-config.c:406
-#: mail/mail-config.glade.h:28
-msgid "Host:"
-msgstr "Computernaam:"
-
-#: addressbook/gui/component/addressbook-config.c:407
-msgid "FIXME Host help text here."
-msgstr "FIXME Computernaam help tekst hier."
-
-#: addressbook/gui/component/addressbook-config.c:409
-msgid "Port:"
-msgstr "Poort:"
-
-#: addressbook/gui/component/addressbook-config.c:410
-msgid "FIXME Port help text here."
-msgstr "FIXME Poort help tekst hier."
-
-#: addressbook/gui/component/addressbook-config.c:414
-msgid "Root DN:"
-msgstr "Stam DN:"
-
-#: addressbook/gui/component/addressbook-config.c:415
-msgid "FIXME Root DN help text here."
-msgstr "FIXME Stam DN help tekst hier."
-
-#: addressbook/gui/component/addressbook-config.c:435
-msgid "Search Scope:"
-msgstr "Zoekbereik:"
-
-#: addressbook/gui/component/addressbook-config.c:489
-msgid "Authentication:"
-msgstr "Aanmelding:"
-
-#: addressbook/gui/component/addressbook-config.c:507
-#: mail/mail-config.glade.h:44
-msgid "Path:"
-msgstr "Pad:"
-
-#: addressbook/gui/component/addressbook-config.c:508
-msgid "FIXME Path Help text here"
-msgstr "FIXME Pad Help tekst hier"
-
-#: addressbook/gui/component/addressbook-config.c:513
-msgid "Create path if it doesn't exist."
-msgstr "Maak pad als het niet bestaat."
-
-#: addressbook/gui/component/addressbook-config.c:647
-msgid "Edit Addressbook"
-msgstr "Bewerk Adresboek"
-
-#: addressbook/gui/component/addressbook-config.c:649
-msgid "Add Addressbook"
-msgstr "Adresboek Toevoegen"
-
-#: addressbook/gui/component/addressbook-config.c:665
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-"Selecteer het soort adresboek dat u hebt en voer de relevante informatie "
-"erover in."
-
-#: addressbook/gui/component/addressbook-config.c:671
-#: mail/mail-config.glade.h:35
-msgid "Name:"
-msgstr "Naam:"
-
-#: addressbook/gui/component/addressbook-config.c:672
-msgid "FIXME Name help text here"
-msgstr "FIXME Naam help tekst hier"
-
-#: addressbook/gui/component/addressbook-config.c:674
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr "Omschrijving:"
-
-#: addressbook/gui/component/addressbook-config.c:675
-msgid "FIXME Description help text here"
-msgstr "FIXME Beschrijving help tekst hier"
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-msgid "Addressbook Sources"
-msgstr "Adresboekbronnen"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: addressbook/gui/widgets/e-addressbook-view.c:578
-#: addressbook/gui/widgets/e-minicard.c:673
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:11 mail/mail-config.glade.h:19
-#: mail/message-browser.c:203 ui/evolution-addressbook.xml.h:3
-#: ui/evolution-event-editor.xml.h:17 ui/evolution-mail.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr "Verwijderen"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:23
-msgid "Edit"
-msgstr "Bewerken"
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-msgid "Name"
-msgstr "Naam"
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-msgid "URI"
-msgstr "URI"
-
-#: addressbook/gui/component/addressbook-storage.c:99
-msgid "Other Contacts"
-msgstr "Andere Contacten"
-
-#: addressbook/gui/component/e-address-widget.c:365
-#, fuzzy
-msgid "Disable Queries"
-msgstr "Beschikbare Categorieën:"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Enable Queries (Dangerous!)"
-msgstr ""
-
-#: addressbook/gui/component/e-address-widget.c:388
-#: addressbook/gui/component/select-names/e-select-names-popup.c:210
-msgid "Edit Contact Info"
-msgstr "Bewerk Contactinformatie"
-
-#: addressbook/gui/component/e-address-widget.c:424
-#: addressbook/gui/component/select-names/e-select-names-popup.c:269
-msgid "Add to Contacts"
-msgstr "Toevoegen aan contacten"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-#, fuzzy
-msgid "A Bonobo control for an address popup."
-msgstr "Een Bonobo control dat een adresboek weergeeft."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A Bonobo control for displaying an address."
-msgstr "Een Bonobo control dat een adresboek weergeeft."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr "Een voorbeeld Bonobo control dat een adresboek weergeeft."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr "Control dat een Evolution minikaart adresboek weergeeft."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-msgid "Evolution Addressbook minicard viewer"
-msgstr "Evolution Adresboek minikaartbekijker"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-msgid "Evolution component for handling contacts."
-msgstr "Een component voor het afhandelen van contacten."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-msgid "Factory for the Addressbook Minicard control"
-msgstr "Fabriek voor het Adresboek Minikaart control"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-msgid "Factory for the Addressbook's address displayer"
-msgstr "Fabriek voor de naam selectie interface van het Adresboek"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-#, fuzzy
-msgid "Factory for the Addressbook's address popup"
-msgstr "Fabriek voor de naam selectie interface van het Adresboek"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:10
-msgid "Factory for the Evolution addressbook component."
-msgstr "Fabriek voor het Evolution adresboek component."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:11
-msgid "Factory for the sample Addressbook control"
-msgstr "Fabriek voor het voorbeeld Adresboekcontrol"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:131
-#: composer/e-msg-composer-attachment-bar.c:468 filter/filter-filter.c:401
-#: filter/filter-rule.c:549 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:265 shell/e-shortcuts-view.c:388
-msgid "Remove"
-msgstr "Verwijderen"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:146
-msgid "Remove All"
-msgstr "Alle Verwijderen"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-msgid "Evolution's addressbook name selection interface."
-msgstr "De adresboeknaam-selectie-interface van Evolution."
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr "Factory voor de naamselectie-interface van het Adresboek"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr "Zoek..."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-msgid "Message Recipients"
-msgstr "Geaddresseerden"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-msgid "Select Names"
-msgstr "Selecteer namen"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-msgid "Select name from:"
-msgstr "Selecteer naam van:"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:158
-msgid "Search"
-msgstr "Zoeken"
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr "123"
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr "a"
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr "b"
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr "c"
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr "d"
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr "e"
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr "f"
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr "g"
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr "h"
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr "i"
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr "j"
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr "k"
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr "l"
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr "m"
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr "n"
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-msgid "o"
-msgstr "o"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr "p"
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr "q"
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-msgid "r"
-msgstr "r"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr "s"
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr "t"
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr "u"
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr "v"
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr "w"
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr "x"
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr "y"
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr "z"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:513
-#: addressbook/gui/widgets/e-addressbook-view.c:573
-#: addressbook/gui/widgets/e-minicard.c:466
-#: addressbook/gui/widgets/e-minicard.c:668
-msgid "Save as VCard"
-msgstr "Opslaan als VCard"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:574
-#: addressbook/gui/widgets/e-minicard.c:669
-#, fuzzy
-msgid "Send contact to other"
-msgstr "Stu_ur contact naar ander..."
-
-#: addressbook/gui/widgets/e-addressbook-view.c:575
-#: addressbook/gui/widgets/e-minicard.c:670
-#, fuzzy
-msgid "Send message to contact"
-msgstr "Stuur _bericht aan contact..."
-
-#: addressbook/gui/widgets/e-addressbook-view.c:576
-#: addressbook/gui/widgets/e-minicard.c:671 mail/message-browser.c:200
-#: ui/evolution-addressbook.xml.h:9 ui/evolution-calendar.xml.h:23
-#: ui/evolution-mail.xml.h:55 ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr "Afdrukken"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:577
-#: addressbook/gui/widgets/e-minicard.c:672
-#, fuzzy
-msgid "Print Envelope"
-msgstr "En_velop Afdrukken..."
-
-#: addressbook/gui/widgets/e-addressbook-view.c:641
-msgid "* Click here to add a contact *"
-msgstr "* Klik hier om een contact toe te voegen *"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:642
-#, fuzzy
-msgid "File As"
-msgstr "Opslaan Als:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:644
-msgid "Email"
-msgstr "E-mail"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:645
-#, fuzzy
-msgid "Primary Phone"
-msgstr "Eerste"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:646
-#, fuzzy
-msgid "Assistant Phone"
-msgstr "Assistent"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:647
-#, fuzzy
-msgid "Business Phone"
-msgstr "Bedrijf 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:648
-#, fuzzy
-msgid "Callback Phone"
-msgstr "Terugbel"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:649
-#, fuzzy
-msgid "Company Phone"
-msgstr "Bedrijf"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:650
-#, fuzzy
-msgid "Home Phone"
-msgstr "Thuis 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:651
-msgid "Organization"
-msgstr "Organisatie"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:652
-#, fuzzy
-msgid "Business Address"
-msgstr "Bedrijf 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:653
-#, fuzzy
-msgid "Home Address"
-msgstr "Controleer Adres"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:654
-#, fuzzy
-msgid "Mobile Phone"
-msgstr "Mobiele Telefoon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:655
-msgid "Car Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:658
-#, fuzzy
-msgid "Business Phone 2"
-msgstr "Bedrijf 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:659
-#, fuzzy
-msgid "Home Phone 2"
-msgstr "Thuis 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:661
-#, fuzzy
-msgid "Other Phone"
-msgstr "Andere Contacten"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:666
-#, fuzzy
-msgid "TTY"
-msgstr "TTY/TDD"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:667
-#, fuzzy
-msgid "Other Address"
-msgstr "Controleer Adres"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:670
-msgid "Web Site"
-msgstr "Website"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:671
-msgid "Department"
-msgstr "Afdeling:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:672
-msgid "Office"
-msgstr "Kantoor:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:673
-msgid "Title"
-msgstr "Functie"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:674
-msgid "Profession"
-msgstr "Beroep"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:675
-msgid "Manager"
-msgstr "Manager"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:677
-msgid "Nickname"
-msgstr "Bijnaam"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:678
-msgid "Spouse"
-msgstr "Echtgenoot/Echtgenote"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:679
-msgid "Note"
-msgstr "Opmerkingen"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:680
-msgid "Free-busy URL"
-msgstr "Vrij/Bezet URL"
-
-#: addressbook/gui/widgets/e-minicard-control.c:282
-msgid "Save in addressbook"
-msgstr "Opslaan in het adresboek"
-
-#: addressbook/gui/widgets/e-minicard-view.c:166
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-"\n"
-"\n"
-"Er zijn geen items om weer te geven\n"
-"\n"
-"Dubbelklik hier om een nieuw Contact te maken."
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:26
-msgid "Card View"
-msgstr "Kaartweergave"
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr "10 punts Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr "8 punts Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr "Lege formulieren aan het eind:"
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr "Inhoud"
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr "Onderzijde:"
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr "Afmetingen:"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr "Lettertype..."
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr "Lettertypen"
-
-#: addressbook/printing/e-contact-print.glade.h:9
-msgid "Footer:"
-msgstr "Voet:"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr "Formaat"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-msgid "Header"
-msgstr "Kop"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr "Koptekst/Voettekst"
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr "Koppen"
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr "Koppen voor elke letter"
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr "Hoogte:"
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr "Elkaar direct opvolgend"
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr "Insluiten:"
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr "Liggend"
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr "Links:"
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr "Lettertabs aan de zijkant"
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr "Marges"
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr "Aantal kolommen:"
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr "Opties"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr "Oriëntatie"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr "Pagina"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-msgid "Page Setup:"
-msgstr "Pagina-instellingen:"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr "Papier"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr "Papierbron:"
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr "Staand"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr "Voorbeeld:"
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr "Druk af met grijstinten"
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr "Omgedraaid afdrukken op even pagina's"
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr "Rechts:"
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr "Secties:"
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr "Schaduw"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-msgid "Size:"
-msgstr "Grootte:"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr "Begin op een nieuwe pagina"
-
-#: addressbook/printing/e-contact-print.glade.h:38
-msgid "Style name:"
-msgstr "Stijlnaam:"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr "Bovenzijde:"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-msgid "Type:"
-msgstr "Type:"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr "Breedte:"
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr "Fout tijdens communiceren met kalenderserver"
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr "Kon Kalendergegevens niet uit de pilot lezen"
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr "Kon actielijstgegevens niet uit de pilot lezen"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr "Herinnering van uw afspraak op "
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-msgid "Snooze"
-msgstr "Sluimeren"
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr "Ok"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr "Alarmnotificatie-dienst"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-msgid "Factory for the alarm notification service"
-msgstr "Factory voor de Alarmnotificatie-dienst."
-
-#: calendar/gui/alarm-notify/notify-main.c:56
-#, c-format
-msgid ""
-"It is %s. The Unix time is %ld right now. We just thought you may like to "
-"know."
-msgstr ""
-
-#: calendar/gui/alarm-notify/notify-main.c:93 calendar/gui/main.c:52
-msgid "Could not initialize GNOME"
-msgstr "Kon GNOME niet initialiseren"
-
-#: calendar/gui/alarm-notify/notify-main.c:108
-msgid "Could not create the alarm notify service factory"
-msgstr "Creëeren van de alarmnotificatie-dienst is mislukt: %s"
-
-#: calendar/gui/calendar-commands.c:266
-msgid "File not found"
-msgstr "Bestand niet gevonden"
-
-#: calendar/gui/calendar-commands.c:290
-msgid "Open calendar"
-msgstr "Open kalender"
-
-#: calendar/gui/calendar-commands.c:332
-msgid "Save calendar"
-msgstr "Kalender opslaan"
-
-#: calendar/gui/calendar-commands.c:468
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr "Kalenderweergave mislukt. Controleer uw ORBit en OAF instellingen."
-
-#: calendar/gui/calendar-model.c:360 calendar/gui/calendar-model.c:898
-#: calendar/gui/e-calendar-table.c:330
-msgid "Public"
-msgstr "Openbaar"
-
-#: calendar/gui/calendar-model.c:363 calendar/gui/calendar-model.c:900
-#: calendar/gui/e-calendar-table.c:331
-msgid "Private"
-msgstr "Privé"
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:902
-#: calendar/gui/e-calendar-table.c:332
-msgid "Confidential"
-msgstr "Vertrouwelijk"
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/event-editor.c:1606
-#: calendar/gui/event-editor.c:1633
-#: camel/providers/smtp/camel-smtp-transport.c:218
-msgid "Unknown"
-msgstr "Onbekend"
-
-#: calendar/gui/calendar-model.c:457
-msgid "N"
-msgstr "N"
-
-#: calendar/gui/calendar-model.c:457
-msgid "S"
-msgstr "S"
-
-#: calendar/gui/calendar-model.c:459
-msgid "E"
-msgstr "E"
-
-#: calendar/gui/calendar-model.c:459
-msgid "W"
-msgstr "W"
-
-#: calendar/gui/calendar-model.c:497 calendar/gui/calendar-model.c:1066
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:352 mail/message-list.c:690
-msgid "High"
-msgstr "Hoog"
-
-#: calendar/gui/calendar-model.c:499 calendar/gui/calendar-model.c:1068
-#: calendar/gui/calendar-model.c:1572
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:353 mail/message-list.c:689
-msgid "Normal"
-msgstr "Normaal"
-
-#: calendar/gui/calendar-model.c:501 calendar/gui/calendar-model.c:1070
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:354 mail/message-list.c:688
-msgid "Low"
-msgstr "Laag"
-
-#: calendar/gui/calendar-model.c:537 calendar/gui/calendar-model.c:1122
-#: calendar/gui/e-calendar-table.c:406
-msgid "Transparent"
-msgstr "Doorzichtig"
-
-#: calendar/gui/calendar-model.c:540 calendar/gui/calendar-model.c:1124
-#: calendar/gui/e-calendar-table.c:405
-msgid "Opaque"
-msgstr "Ondoorzichtig"
-
-#: calendar/gui/calendar-model.c:638 calendar/gui/calendar-model.c:1176
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:426
-msgid "Not Started"
-msgstr "Niet Gestart"
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1178
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:427
-msgid "In Progress"
-msgstr "In Uitvoer"
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1180
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:428
-msgid "Completed"
-msgstr "Voltooid"
-
-#: calendar/gui/calendar-model.c:647 calendar/gui/calendar-model.c:1182
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:429 camel/camel-service.c:544
-#: camel/camel-service.c:580
-msgid "Cancelled"
-msgstr "Geannuleerd"
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:794 e-util/e-time-utils.c:278
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr "%a %d-%m-%Y %H:%M:%S"
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:797 e-util/e-time-utils.c:287
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr "%a %d-%m-%Y %I:%M:%S %p"
-
-#: calendar/gui/calendar-model.c:802
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-"De datum moet ingevoerd worden in het formaat: \n"
-"\n"
-"%s"
-
-#: calendar/gui/calendar-model.c:882
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr ""
-"De classificering moet 'Openbaar', 'Privé', 'Vertrouwelijk', of 'Geen' zijn"
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:896 calendar/gui/calendar-model.c:1120
-#: calendar/gui/calendar-model.c:1174 calendar/gui/e-calendar-table.c:329
-#: calendar/gui/e-calendar-table.c:404 mail/mail-account-gui.c:973
-#: mail/mail-accounts.c:120 mail/mail-accounts.c:164
-#: mail/mail-config.glade.h:37 shell/e-shell-view.c:1179
-#: widgets/misc/e-cell-date-edit.c:237 widgets/misc/e-dateedit.c:432
-#: widgets/misc/e-dateedit.c:1341 widgets/misc/e-dateedit.c:1456
-msgid "None"
-msgstr "Geen"
-
-#: calendar/gui/calendar-model.c:970
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-"De geografische positie moet ingevoerd worden in het formaat: \n"
-"\n"
-"45.436845,125.862501"
-
-#: calendar/gui/calendar-model.c:1010
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr "Het percentage mag niet kleiner zijn dan 0 en niet groter dan 100"
-
-#: calendar/gui/calendar-model.c:1051
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr "De prioriteit moet 'Hoog', 'Normaal', 'Laag' of 'Ongedefinieerd' zijn"
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1064
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:355
-msgid "Undefined"
-msgstr "Ongedefinieerd"
-
-#: calendar/gui/calendar-model.c:1105
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr "De doorzichtigheid moet 'Doorzichtig', 'Ondoorzichtig' of 'Geen' zijn."
-
-#: calendar/gui/calendar-model.c:1574
-msgid "Recurring"
-msgstr "Herhalend"
-
-#: calendar/gui/calendar-model.c:1576
-msgid "Assigned"
-msgstr "Toegewezen"
-
-#: calendar/gui/calendar-model.c:1582
-msgid "Yes"
-msgstr "Ja"
-
-#: calendar/gui/calendar-model.c:1582
-msgid "No"
-msgstr "Nee"
-
-#: calendar/gui/calendar-summary.c:198
-msgid "%A, %e %B %Y"
-msgstr "%A, %e %B, %Y"
-
-#: calendar/gui/calendar-summary.c:207
-#, fuzzy
-msgid "Appointments"
-msgstr "Afspraak"
-
-#: calendar/gui/calendar-summary.c:245 calendar/gui/calendar-summary.c:251
-msgid "%I:%M%p"
-msgstr "%I:%M%p"
-
-#: calendar/gui/calendar-summary.c:275 calendar/gui/print.c:948
-#: views/tasks/galview.xml.h:1
-msgid "Tasks"
-msgstr "Taken"
-
-#: calendar/gui/calendar-summary.c:443
-msgid "<b>Error loading calendar</b>"
-msgstr "<b>Fout bij laden van kalender</b>"
-
-#: calendar/gui/calendar-summary.c:455
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr "<b>Fout bij laden kalender:<br>Methode niet ondersteund"
-
-#: calendar/gui/calendar-summary.c:622
-msgid "Display"
-msgstr "Weergave"
-
-#: calendar/gui/calendar-summary.c:627
-msgid "Show appointments"
-msgstr "Toon afspraken"
-
-#: calendar/gui/calendar-summary.c:635
-msgid "Show tasks"
-msgstr "Toon taken"
-
-#: calendar/gui/calendar-summary.c:690
-msgid "Things to do"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:721 calendar/gui/e-itip-control.glade.h:7
-msgid "Loading Calendar"
-msgstr "Bezig met laden Kalender"
-
-#: calendar/gui/control-factory.c:126
-msgid "The URI that the calendar will display"
-msgstr "De URI die de kalender zal tonen"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:189
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr "Alarm op %A %b %d %Y %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:196
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr "Herinnering aan uw afspraak op %A %b %d %Y %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:207
-msgid "No summary available."
-msgstr "Geen samenvatting beschikbaar."
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:2
-msgid "Close"
-msgstr "Sluiten"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-msgid "Edit appointment"
-msgstr "Afspraak bewerken"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr "Sluimertijd (minuten)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr "05 minuten"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr "10 minuten"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr "12-uurs (am/pm)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr "15 minuten"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr "24-uurs"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr "30 minuten"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr "60 minuten"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr "Alarm stopt na"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr "Geluidsalarmen"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr "Piep als het alarm venster verschijnt."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-msgid "Calendar"
-msgstr "Kalender"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr "Kalender Instellingen"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "Kleuren"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr "Weekeinden comprimeren"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr "Datumnavigator instellingen"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-msgid "Defaults"
-msgstr "Standaardinstellingen"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr "Weergave-instellingen"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:162
-msgid "Due Date"
-msgstr "Verloop Datum"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr "Maak sluimeren mogelijk voor"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr "Eind van dag:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr "Eerste dag van de week:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr "Vrij"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:484
-msgid "Friday"
-msgstr "Vrijdag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr "Markeer"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr "Items die vandaag verlopen"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr "Items die vandaag verlopen:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr "Items die nog niet zijn verlopen"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr "Items die nog niet zijn verlopen:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr "Maa"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:480
-msgid "Monday"
-msgstr "Maandag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr "Verlopen items"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr "Verlopen items:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:45
-msgid "Pick a color"
-msgstr "Kies een kleur"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:165
-msgid "Priority"
-msgstr "Prioriteit"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-msgid "Remind me of all appointments"
-msgstr "Herinner me aan alle afspraken"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-msgid "Reminders"
-msgstr "Herinneringen"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr "Zat"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:485
-msgid "Saturday"
-msgstr "Zaterdag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr "Weergeven"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-msgid "Show appointment end times"
-msgstr "Toon afspraak-eindtijden"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr "Toon weeknummers"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr "Begin van dag:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr "Zon"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:486
-msgid "Sunday"
-msgstr "Zondag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-msgid "TaskPad"
-msgstr "TaakBlad"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr "Don"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:483
-msgid "Thursday"
-msgstr "Donderdag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr "Tijd Tot Verlooptijd"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr "Tijddelingen:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr "Tijdsformaat:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr "Din"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:481
-msgid "Tuesday"
-msgstr "Dinsdag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr "Visuele Alarmen"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr "Woe"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:482
-msgid "Wednesday"
-msgstr "Woensdag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr "Werkweek"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr "minuten voordat ze plaatsvinden."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:78
-msgid "seconds."
-msgstr "seconden."
-
-#: calendar/gui/dialogs/delete-comp.c:70
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr "Weet u zeker dat u afspraak `%s' wilt verwijderen?"
-
-#: calendar/gui/dialogs/delete-comp.c:73
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr "Weet u zeker dat u deze naamloze afspraak wilt verwijderen?"
-
-#: calendar/gui/dialogs/delete-comp.c:79
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr "Weet u zeker dat u de taak `%s' wilt verwijderen?"
-
-#: calendar/gui/dialogs/delete-comp.c:82
-msgid "Are you sure you want to delete this untitled task?"
-msgstr "Weet u zeker dat u deze naamloze taak wilt verwijderen?"
-
-#: calendar/gui/dialogs/delete-comp.c:88
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr "Weet u zeker dat u dagboek entry `%s' wilt verwijderen?"
-
-#: calendar/gui/dialogs/delete-comp.c:91
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr "Weet u zeker dat u dit naamloze dagboekelement wilt verwijderen?"
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr "Wilt u de wijzingen opslaan?"
-
-#: calendar/gui/dialogs/task-editor.c:707
-msgid "Edit Task"
-msgstr "Taak Bewerken"
-
-#: calendar/gui/dialogs/task-editor.c:713 calendar/gui/event-editor.c:382
-msgid "No summary"
-msgstr "Geen samenvatting"
-
-#: calendar/gui/dialogs/task-editor.c:719 calendar/gui/event-editor.c:388
-#, c-format
-msgid "Appointment - %s"
-msgstr "Afspraak - %s"
-
-#: calendar/gui/dialogs/task-editor.c:722 calendar/gui/event-editor.c:391
-#, c-format
-msgid "Task - %s"
-msgstr "Taak - %s"
-
-#: calendar/gui/dialogs/task-editor.c:725 calendar/gui/event-editor.c:394
-#, c-format
-msgid "Journal entry - %s"
-msgstr "Dagboekelement - %s"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr "% Vo_ltooid:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:158
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr "Classificatie"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-msgid "Date & Time"
-msgstr "Datum & Tijd"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr "Voltooiingsdatum:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-msgid "Pri_vate"
-msgstr "Pri_vé"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-msgid "Progress"
-msgstr "Voortgang"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr "Open_baar"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-msgid "Sta_rt Date:"
-msgstr "Be_gindatum:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-msgid "Su_mmary:"
-msgstr "Sa_menvatting:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr "_Taak"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-msgid "URL:"
-msgstr "URL:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr "_Vertrouwelijk"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Contacts..."
-msgstr "C_ontacten..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-msgid "_Due Date:"
-msgstr "_Verloopdatum:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-msgid "_Priority:"
-msgstr "_Prioriteit:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "_Status:"
-msgstr "_Status:"
-
-#: calendar/gui/e-calendar-table.c:157
-msgid "Categories"
-msgstr "Categorieën"
-
-#: calendar/gui/e-calendar-table.c:159
-msgid "Completion Date"
-msgstr "Voltooiingsdatum"
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "End Date"
-msgstr "Einddatum"
-
-#: calendar/gui/e-calendar-table.c:161
-msgid "Start Date"
-msgstr "Begindatum"
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Geographical Position"
-msgstr "Geografische Positie"
-
-#: calendar/gui/e-calendar-table.c:164
-msgid "Percent complete"
-msgstr "Percentage voltooid"
-
-#: calendar/gui/e-calendar-table.c:166
-msgid "Summary"
-msgstr "Samenvatting"
-
-#: calendar/gui/e-calendar-table.c:167
-msgid "Transparency"
-msgstr "Transparantie"
-
-#: calendar/gui/e-calendar-table.c:168
-msgid "URL"
-msgstr "URL"
-
-#: calendar/gui/e-calendar-table.c:169
-msgid "Alarms"
-msgstr "Alarmen"
-
-#: calendar/gui/e-calendar-table.c:170
-msgid "Click here to add a task"
-msgstr "Klik hier om een taak toe te voegen"
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "0%"
-msgstr "0%"
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "10%"
-msgstr "10%"
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "20%"
-msgstr "20%"
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "30%"
-msgstr "30%"
-
-#: calendar/gui/e-calendar-table.c:378
-#, c-format
-msgid "40%"
-msgstr "40%"
-
-#: calendar/gui/e-calendar-table.c:379
-#, c-format
-msgid "50%"
-msgstr "50%"
-
-#: calendar/gui/e-calendar-table.c:380
-#, c-format
-msgid "60%"
-msgstr "60%"
-
-#: calendar/gui/e-calendar-table.c:381
-#, c-format
-msgid "70%"
-msgstr "70%"
-
-#: calendar/gui/e-calendar-table.c:382
-#, c-format
-msgid "80%"
-msgstr "80%"
-
-#: calendar/gui/e-calendar-table.c:383
-#, c-format
-msgid "90%"
-msgstr "90%"
-
-#: calendar/gui/e-calendar-table.c:384
-#, c-format
-msgid "100%"
-msgstr "100%"
-
-#: calendar/gui/e-calendar-table.c:551
-msgid "Mark Complete"
-msgstr "Markeer als Voltooid"
-
-#: calendar/gui/e-calendar-table.c:552
-msgid "Mark the task complete"
-msgstr "Markeer de taak als voltooid"
-
-#: calendar/gui/e-calendar-table.c:557
-msgid "Edit this task..."
-msgstr "Bewerk deze taak..."
-
-#: calendar/gui/e-calendar-table.c:558
-msgid "Edit the task"
-msgstr "Taak Bewerken"
-
-#: calendar/gui/e-calendar-table.c:560
-#: ui/evolution-task-editor-dialog.xml.h:19
-msgid "Delete this task"
-msgstr "Verwijder deze taak"
-
-#: calendar/gui/e-calendar-table.c:561
-msgid "Delete the task"
-msgstr "Verwijder de taak"
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:570 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:617
-msgid "am"
-msgstr "am"
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:573 calendar/gui/e-week-view.c:303
-#: calendar/gui/print.c:616
-msgid "pm"
-msgstr "pm"
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:274 calendar/gui/e-day-view.c:1294
-#: calendar/gui/e-week-view-main-item.c:325
-msgid "%A %d %B"
-msgstr "%A %d %B"
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:278 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:334
-msgid "%a %d %b"
-msgstr "%a %d %b"
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:282 calendar/gui/e-day-view.c:1321
-#: calendar/gui/e-week-view-main-item.c:348
-msgid "%d %b"
-msgstr "%d %b"
-
-#: calendar/gui/e-day-view.c:3146 ui/evolution-calendar.xml.h:16
-msgid "New Appointment"
-msgstr "Nieuwe afspraak"
-
-#: calendar/gui/e-day-view.c:3148 calendar/gui/e-week-view.c:3280
-#, fuzzy
-msgid "New All Day Event"
-msgstr "_Gebeurtenis die de gehele dag plaatsvindt"
-
-#: calendar/gui/e-day-view.c:3153 calendar/gui/e-week-view.c:3285
-#, fuzzy
-msgid "Go to Today"
-msgstr "Ga Naar Vandaag"
-
-#: calendar/gui/e-day-view.c:3155 calendar/gui/e-week-view.c:3287
-#, fuzzy
-msgid "Go to Date..."
-msgstr "Ga Naar Datum"
-
-#: calendar/gui/e-day-view.c:3162 calendar/gui/e-week-view.c:3293
-#: ui/evolution-calendar.xml.h:19 ui/evolution-message-composer.xml.h:10
-msgid "Open"
-msgstr "Openen"
-
-#: calendar/gui/e-day-view.c:3164 calendar/gui/e-week-view.c:3295
-msgid "Delete this Appointment"
-msgstr "Verwijder deze afspraak"
-
-#: calendar/gui/e-day-view.c:3166 calendar/gui/e-week-view.c:3297
-#: ui/evolution-event-editor.xml.h:45
-msgid "Schedule Meeting"
-msgstr "Bijeenkomst plannen"
-
-#: calendar/gui/e-day-view.c:3175 calendar/gui/e-week-view.c:3310
-msgid "Make this Occurrence Movable"
-msgstr "Maak deze Gebeurtenis Verplaatsbaar"
-
-#: calendar/gui/e-day-view.c:3177 calendar/gui/e-week-view.c:3312
-msgid "Delete this Occurrence"
-msgstr "Verwijder deze Gebeurtenis"
-
-#: calendar/gui/e-day-view.c:3179
-msgid "Delete all Occurrences"
-msgstr "Verwijder alle Gebeurtenissen"
-
-#: calendar/gui/e-day-view-time-item.c:519
-#, c-format
-msgid "%02i minute divisions"
-msgstr "%02i minuten delingen"
-
-#: calendar/gui/e-itip-control.c:161
-msgid "I couldn't update your calendar file!\n"
-msgstr "Kon uw kalender bestand niet updaten!\n"
-
-#: calendar/gui/e-itip-control.c:167 calendar/gui/e-itip-control.c:510
-msgid "Component successfully updated."
-msgstr "Component successvol geactualiseerd."
-
-#: calendar/gui/e-itip-control.c:173
-msgid "There was an error loading the calendar file."
-msgstr "Er is een fout opgetreden tijdens het laden van het kalender bestand."
-
-#: calendar/gui/e-itip-control.c:197
-msgid "I couldn't open your calendar file!\n"
-msgstr "Kon uw kalender bestand niet openen!\n"
-
-#: calendar/gui/e-itip-control.c:458 calendar/gui/e-itip-control.c:529
-msgid "I couldn't load your calendar file!\n"
-msgstr "Kon uw kalender bestand niet laden!\n"
-
-#: calendar/gui/e-itip-control.c:470
-msgid "I couldn't read your calendar file!\n"
-msgstr "Kon uw kalender bestand niet lezen!\n"
-
-#: calendar/gui/e-itip-control.c:483
-msgid "This is a reply from someone who was uninvited!"
-msgstr "Dit is een antwoord van iemand die niet was uitgenodigd!"
-
-#: calendar/gui/e-itip-control.c:499
-msgid "I couldn't update your calendar store."
-msgstr "Kon uw kalenderopslag niet actualiseren."
-
-#: calendar/gui/e-itip-control.c:540
-msgid "I couldn't delete the calendar component!\n"
-msgstr "Ik kon het kalender component niet verwijderen!\n"
-
-#: calendar/gui/e-itip-control.c:550
-msgid "Component successfully deleted."
-msgstr "Component successvol verwijderd."
-
-#: calendar/gui/e-itip-control.c:694
-msgid "I don't recognize this type of calendar component."
-msgstr "Type kalendercomponent niet herkend."
-
-#: calendar/gui/e-itip-control.c:780
-msgid "Add to Calendar"
-msgstr "Toevoegen aan Kalender"
-
-#: calendar/gui/e-itip-control.c:814
-#, fuzzy
-msgid " Accept "
-msgstr "Accepteer"
-
-#: calendar/gui/e-itip-control.c:815
-#, fuzzy
-msgid " Decline "
-msgstr "Weiger"
-
-#: calendar/gui/e-itip-control.c:816
-#, fuzzy
-msgid " Tentative "
-msgstr "Voorlopig"
-
-#: calendar/gui/e-itip-control.c:860
-msgid "Update Calendar"
-msgstr "Kalender actualiseren"
-
-#: calendar/gui/e-itip-control.c:883
-msgid "Cancel Meeting"
-msgstr "Afspraak annuleren"
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, no-c-format
-msgid "%P %%"
-msgstr "%P %%"
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr "--naar--"
-
-#: calendar/gui/e-itip-control.glade.h:4
-msgid "Calendar Message"
-msgstr "Kalenderbericht"
-
-#: calendar/gui/e-itip-control.glade.h:5 mail/mail-format.c:623
-msgid "Date:"
-msgstr "Datum:"
-
-#: calendar/gui/e-itip-control.glade.h:8
-msgid "Loading calendar..."
-msgstr "Bezig met laden kalender..."
-
-#: calendar/gui/e-itip-control.glade.h:9
-msgid "Organizer:"
-msgstr "Coördinator:"
-
-#: calendar/gui/e-itip-control.glade.h:10
-#, fuzzy
-msgid "Server Message:"
-msgstr "Bericht Verplaatsen"
-
-#: calendar/gui/e-itip-control.glade.h:11
-msgid "Summary:"
-msgstr "Samenvatting:"
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr "einddatum"
-
-#: calendar/gui/e-itip-control.glade.h:13
-msgid "date-start"
-msgstr "begindatum"
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-msgid "Attendee"
-msgstr "Aanwezige"
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-msgid "Attendee address"
-msgstr "Adres aanwezige"
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-msgid "Attendees: "
-msgstr "Aanwezigen: "
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr ""
-"Annuleer\n"
-"Bijeenkomst"
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-msgid "Chair"
-msgstr "Voorzitter"
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-msgid "Meeting Invitations"
-msgstr "Uitnodigingen voor de bijeenkomst"
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr "Niet-Deelnemer"
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr "Optionele Deelnemer"
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-msgid "Organizer: "
-msgstr "Coördinator: "
-
-#: calendar/gui/e-meeting-dialog.glade.h:14
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-"Publiceren\n"
-"Gebeurtenis"
-
-#: calendar/gui/e-meeting-dialog.glade.h:16
-msgid "RSVP"
-msgstr "RSVP"
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid ""
-"Request\n"
-"Meeting"
-msgstr ""
-"Verzoek\n"
-"Bijeenkomst"
-
-#: calendar/gui/e-meeting-dialog.glade.h:19
-msgid "Required Participant"
-msgstr "Vereiste Deelnemer"
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-msgid "Role"
-msgstr "Rol"
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-msgid ""
-"Schedule\n"
-"Time"
-msgstr ""
-"Plan\n"
-"Tijd"
-
-#: calendar/gui/e-meeting-dialog.glade.h:23 filter/libfilter-i18n.h:49
-#: mail/message-list.c:1082
-msgid "Status"
-msgstr "Status"
-
-#: calendar/gui/e-tasks.c:149 calendar/gui/e-tasks.c:469
-#: calendar/gui/e-tasks.c:502
-msgid "All"
-msgstr "Allen"
-
-#: calendar/gui/e-tasks.c:155
-msgid "Category:"
-msgstr "Categorie:"
-
-#: calendar/gui/e-tasks.c:298
-#, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "Kon de taken in `%s' niet laden"
-
-#: calendar/gui/e-tasks.c:310
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr "De methode die nodig is om `%s' te laden wordt niet ondersteund"
-
-#: calendar/gui/event-editor.c:376
-msgid "Edit Appointment"
-msgstr "Afspraak Bewerken"
-
-#: calendar/gui/event-editor.c:454
-msgid "on"
-msgstr "op"
-
-#: calendar/gui/event-editor.c:479 filter/filter-datespec.c:81
-msgid "day"
-msgstr "dag"
-
-#: calendar/gui/event-editor.c:606
-msgid "on the"
-msgstr "op de"
-
-#: calendar/gui/event-editor.c:613
-msgid "th"
-msgstr "e"
-
-#: calendar/gui/event-editor.c:759
-msgid "occurrences"
-msgstr "gebeurtenissen"
-
-#: calendar/gui/event-editor.c:876
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr "Deze afspraak bevat herhalingen die Evolution niet kan bewerken."
-
-#: calendar/gui/event-editor.c:1548
-#, c-format
-msgid " %d days"
-msgstr " %d dagen"
-
-#: calendar/gui/event-editor.c:1550
-msgid " 1 day"
-msgstr " 1 dag"
-
-#: calendar/gui/event-editor.c:1553
-#, c-format
-msgid " %d weeks"
-msgstr " %d weken"
-
-#: calendar/gui/event-editor.c:1555
-msgid " 1 week"
-msgstr " 1 week"
-
-#: calendar/gui/event-editor.c:1558
-#, c-format
-msgid " %d hours"
-msgstr " %d uren"
-
-#: calendar/gui/event-editor.c:1560
-msgid " 1 hour"
-msgstr " 1 uur"
-
-#: calendar/gui/event-editor.c:1563
-#, c-format
-msgid " %d minutes"
-msgstr " %d minuten"
-
-#: calendar/gui/event-editor.c:1565
-msgid " 1 minute"
-msgstr " 1 minuut"
-
-#: calendar/gui/event-editor.c:1568
-#, c-format
-msgid " %d seconds"
-msgstr " %d seconden"
-
-#: calendar/gui/event-editor.c:1570
-msgid " 1 second"
-msgstr " 1 seconde"
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1593
-msgid "Play a sound"
-msgstr "Speel een geluid af"
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1596
-msgid "Show a dialog"
-msgstr "Toon een dialoogvenster"
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1599
-msgid "Send an email"
-msgstr "Verstuur een e-mail"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1602
-msgid "Run a program"
-msgstr "Start een programma"
-
-#: calendar/gui/event-editor.c:1617
-msgid " before start of appointment"
-msgstr " voor het begin van een afspraak"
-
-#: calendar/gui/event-editor.c:1619
-msgid " after start of appointment"
-msgstr " na het begin van een afspraak"
-
-#: calendar/gui/event-editor.c:1627
-msgid " before end of appointment"
-msgstr " voor het eind van een afspraak"
-
-#: calendar/gui/event-editor.c:1629
-msgid " after end of appointment"
-msgstr " na het eind van een afspraak"
-
-#: calendar/gui/event-editor.c:3137 calendar/gui/print.c:1097
-#: calendar/gui/print.c:1099 calendar/gui/print.c:1100
-msgid "%a %b %d %Y"
-msgstr "%a %b %d %Y"
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr "_Gebeurtenis die de gehele dag plaatsvindt"
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-msgid "Appointment"
-msgstr "Afspraak"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-msgid "Appointment Basics"
-msgstr "Afspraak Basisgegevens:"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-msgid "Custom recurrence"
-msgstr "Aangepaste herhaling"
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr "Elke"
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-msgid "Exceptions"
-msgstr "Uitzonderingen"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-msgid "Modify"
-msgstr "Aanpassen"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-msgid "No recurrence"
-msgstr "Geen herhaling"
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-msgid "Preview"
-msgstr "Voorbeeld"
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Recurrence"
-msgstr "Herhaling"
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-msgid "Recurrence Rule"
-msgstr "Herhalingsregel"
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-msgid "Reminder"
-msgstr "Herinnering"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-msgid "Settings..."
-msgstr "Instellingen..."
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr "Eenvoudige herhaling"
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-msgid "_End time:"
-msgstr "_Eindtijd:"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Start time:"
-msgstr "_Begintijd:"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Starting date:"
-msgstr "_Begindatum:"
-
-#. Automatically generated. Do not edit.
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:2
-msgid "after"
-msgstr "na"
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:6
-msgid "before"
-msgstr "voor"
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "day(s)"
-msgstr "dag(en)"
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-msgid "end of appointment"
-msgstr "einde van afspraak"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "for"
-msgstr "voor"
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr "eeuwig"
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-msgid "hour(s)"
-msgstr "u(u)r(en)"
-
-#: calendar/gui/event-editor-dialog.glade.h:40 mail/mail-config.glade.h:77
-msgid "minute(s)"
-msgstr "minu(u)t(en)"
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "month(s)"
-msgstr "maand(en)"
-
-#: calendar/gui/event-editor-dialog.glade.h:42
-msgid "start of appointment"
-msgstr "begin van afspraak"
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-msgid "until"
-msgstr "tot"
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "week(s)"
-msgstr "we(e)k(en)"
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "year(s)"
-msgstr "ja(a)r(en)"
-
-#: calendar/gui/e-week-view.c:3278 calendar/gui/e-week-view.c:3301
-msgid "New Appointment..."
-msgstr "Nieuwe Afspraak..."
-
-#: calendar/gui/e-week-view.c:3314
-msgid "Delete All Occurrences"
-msgstr "Verwijder alle Gebeurtenissen"
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:342
-msgid "%d %B"
-msgstr "%d %B"
-
-#: calendar/gui/gnome-cal.c:223
-#, fuzzy
-msgid "Show all "
-msgstr "Allen Weergeven"
-
-#: calendar/gui/gnome-cal.c:237
-#, fuzzy
-msgid "Summary contains"
-msgstr "E-mail bevat"
-
-#: calendar/gui/gnome-cal.c:238
-#, fuzzy
-msgid "Description contains"
-msgstr "Omschrijving:"
-
-#: calendar/gui/gnome-cal.c:239
-#, fuzzy
-msgid "Comment contains"
-msgstr "Naam bevat"
-
-#: calendar/gui/gnome-cal.c:240
-#, fuzzy
-msgid "Has category"
-msgstr "Categorie:"
-
-#: calendar/gui/gnome-cal.c:843
-#, c-format
-msgid "Could not open the folder in `%s'"
-msgstr "Kon de map in `%s' niet openen"
-
-#: calendar/gui/gnome-cal.c:854
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr "De methode die nodig is om `%s' te openen word niet ondersteund"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr "Een voorbeeld Bonobo-control dat een kalender toont."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-msgid "Evolution calendar executive summary component."
-msgstr "Evolution kalender-samenvatting-component"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr "Evolution kalender iTip/iMip bekijker"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr "Evolution component voor het afhandelen van de kalender."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-msgid "Factory for the Calendar Summary component."
-msgstr "Fabriek voor het Kalender Samenvattings component."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-msgid "Factory for the Evolution calendar component."
-msgstr "Fabriek voor het Evolution kalender component."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-msgid "Factory for the calendar iTip view control"
-msgstr "Fabriek voor het kalender iTip bekijk control"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-msgid "Factory for the sample Calendar control"
-msgstr "Fabriek voor het voorbeeld Kalender control"
-
-#: calendar/gui/goto-dialog.glade.h:1
-msgid "April"
-msgstr "April"
-
-#: calendar/gui/goto-dialog.glade.h:2
-msgid "August"
-msgstr "Augustus"
-
-#: calendar/gui/goto-dialog.glade.h:3
-msgid "December"
-msgstr "December"
-
-#: calendar/gui/goto-dialog.glade.h:4
-msgid "February"
-msgstr "Februari"
-
-#: calendar/gui/goto-dialog.glade.h:5
-msgid "Go To Date"
-msgstr "Ga Naar Datum"
-
-#: calendar/gui/goto-dialog.glade.h:6
-msgid "Go To Today"
-msgstr "Ga Naar Vandaag"
-
-#: calendar/gui/goto-dialog.glade.h:7
-msgid "January"
-msgstr "Januari"
-
-#: calendar/gui/goto-dialog.glade.h:8
-msgid "July"
-msgstr "Juli"
-
-#: calendar/gui/goto-dialog.glade.h:9
-msgid "June"
-msgstr "Juni"
-
-#: calendar/gui/goto-dialog.glade.h:10
-msgid "March"
-msgstr "Maart"
-
-#: calendar/gui/goto-dialog.glade.h:11
-msgid "May"
-msgstr "Mei"
-
-#: calendar/gui/goto-dialog.glade.h:12
-msgid "November"
-msgstr "November"
-
-#: calendar/gui/goto-dialog.glade.h:13
-msgid "October"
-msgstr "Oktober"
-
-#: calendar/gui/goto-dialog.glade.h:14
-msgid "September"
-msgstr "September"
-
-#: calendar/gui/print.c:300
-msgid "1st"
-msgstr "1e"
-
-#: calendar/gui/print.c:300
-msgid "2nd"
-msgstr "2e"
-
-#: calendar/gui/print.c:300
-msgid "3rd"
-msgstr "3e"
-
-#: calendar/gui/print.c:300
-msgid "4th"
-msgstr "4e"
-
-#: calendar/gui/print.c:300
-msgid "5th"
-msgstr "5e"
-
-#: calendar/gui/print.c:301
-msgid "6th"
-msgstr "6e"
-
-#: calendar/gui/print.c:301
-msgid "7th"
-msgstr "7e"
-
-#: calendar/gui/print.c:301
-msgid "8th"
-msgstr "8e"
-
-#: calendar/gui/print.c:301
-msgid "9th"
-msgstr "9e"
-
-#: calendar/gui/print.c:301
-msgid "10th"
-msgstr "10e"
-
-#: calendar/gui/print.c:302
-msgid "11th"
-msgstr "11e"
-
-#: calendar/gui/print.c:302
-msgid "12th"
-msgstr "12e"
-
-#: calendar/gui/print.c:302
-msgid "13th"
-msgstr "13e"
-
-#: calendar/gui/print.c:302
-msgid "14th"
-msgstr "14e"
-
-#: calendar/gui/print.c:302
-msgid "15th"
-msgstr "15e"
-
-#: calendar/gui/print.c:303
-msgid "16th"
-msgstr "16e"
-
-#: calendar/gui/print.c:303
-msgid "17th"
-msgstr "17e"
-
-#: calendar/gui/print.c:303
-msgid "18th"
-msgstr "18e"
-
-#: calendar/gui/print.c:303
-msgid "19th"
-msgstr "19e"
-
-#: calendar/gui/print.c:303
-msgid "20th"
-msgstr "20e"
-
-#: calendar/gui/print.c:304
-msgid "21st"
-msgstr "21e"
-
-#: calendar/gui/print.c:304
-msgid "22nd"
-msgstr "22e"
-
-#: calendar/gui/print.c:304
-msgid "23rd"
-msgstr "23e"
-
-#: calendar/gui/print.c:304
-msgid "24th"
-msgstr "24ste"
-
-#: calendar/gui/print.c:304
-msgid "25th"
-msgstr "25e"
-
-#: calendar/gui/print.c:305
-msgid "26th"
-msgstr "26e"
-
-#: calendar/gui/print.c:305
-msgid "27th"
-msgstr "27e"
-
-#: calendar/gui/print.c:305
-msgid "28th"
-msgstr "28e"
-
-#: calendar/gui/print.c:305
-msgid "29th"
-msgstr "29e"
-
-#: calendar/gui/print.c:305
-msgid "30th"
-msgstr "30e"
-
-#: calendar/gui/print.c:306
-msgid "31st"
-msgstr "31e"
-
-#: calendar/gui/print.c:362
-msgid "Su"
-msgstr "Zo"
-
-#: calendar/gui/print.c:362
-msgid "Mo"
-msgstr "Ma"
-
-#: calendar/gui/print.c:362
-msgid "Tu"
-msgstr "Di"
-
-#: calendar/gui/print.c:362
-msgid "We"
-msgstr "Wo"
-
-#: calendar/gui/print.c:362
-msgid "Th"
-msgstr "Do"
-
-#: calendar/gui/print.c:362
-msgid "Fr"
-msgstr "Vr"
-
-#: calendar/gui/print.c:362
-msgid "Sa"
-msgstr "Za"
-
-#. Day
-#: calendar/gui/print.c:1078
-msgid "Current day (%a %b %d %Y)"
-msgstr "Dag van vandaag (%a %b %d %Y)"
-
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1096
-msgid "%a %b %d"
-msgstr "%a %b %d"
-
-#: calendar/gui/print.c:1093
-msgid "%a %d %Y"
-msgstr "%a %d %Y"
-
-#: calendar/gui/print.c:1104
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr "Huidige week (%s - %s)"
-
-#. Month
-#: calendar/gui/print.c:1112
-msgid "Current month (%b %Y)"
-msgstr "Huidige maand (%b %Y)"
-
-#. Year
-#: calendar/gui/print.c:1119
-msgid "Current year (%Y)"
-msgstr "Huidig jaar (%Y)"
-
-#: calendar/gui/print.c:1156
-msgid "Print Calendar"
-msgstr "Druk Kalender af"
-
-#: calendar/gui/print.c:1321 mail/mail-callbacks.c:1524
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:24
-#: ui/evolution-mail.xml.h:57
-msgid "Print Preview"
-msgstr "Afdrukvoorbeeld"
-
-#: calendar/gui/tasks-control.c:108
-msgid "The URI of the tasks folder to display"
-msgstr "De URI van de te tonen takenmap"
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-"Evolution heeft de taken in uw kalendermap automatisch verplaatst naar de "
-"nieuwe takenmap."
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-"Evolution heeft getracht de taken in uw kalendermap te verplaatsen naar de "
-"nieuwe takenmap.\n"
-"Enkele van de taken konden niet verplaatst worden, dus dit proces kan de "
-"toekomst nogmaals geprobeerd worden."
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-"Kon '%s' niet openen; er worden geen taken uit uw kalendermap verplaatst "
-"naar de takenmap."
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-"De methode die nodig is om '%s' te laden, wordt niet ondersteund; er "
-"wordengeen taken verplaatst van de kalendermap naar de takenmap."
-
-#: calendar/gui/weekday-picker.c:315 calendar/gui/weekday-picker.c:410
-msgid "SMTWTFS"
-msgstr "ZMDWDVZ"
-
-#: camel/camel-cipher-context.c:169
-#, fuzzy
-msgid "Signing is not supported by this cipher"
-msgstr "Het gespecificeerde type word niet ondersteund door deze opslag"
-
-#: camel/camel-cipher-context.c:209
-#, fuzzy
-msgid "Clearsigning is not supported by this cipher"
-msgstr "Het gespecificeerde type word niet ondersteund door deze opslag"
-
-#: camel/camel-cipher-context.c:249
-#, fuzzy
-msgid "Verifying is not supported by this cipher"
-msgstr "Het gespecificeerde type word niet ondersteund door deze opslag"
-
-#: camel/camel-cipher-context.c:292
-#, fuzzy
-msgid "Encryption is not supported by this cipher"
-msgstr "Het gespecificeerde type word niet ondersteund door deze opslag"
-
-#: camel/camel-cipher-context.c:334
-#, fuzzy
-msgid "Decryption is not supported by this cipher"
-msgstr "Het gespecificeerde type word niet ondersteund door deze opslag"
-
-#: camel/camel-filter-driver.c:534 camel/camel-filter-driver.c:543
-#, fuzzy
-msgid "Syncing folders"
-msgstr "Bezig met synchroniseren map"
-
-#: camel/camel-filter-driver.c:643
-#, fuzzy
-msgid "Unable to open spool folder"
-msgstr "Kan het adresboek niet openen"
-
-#: camel/camel-filter-driver.c:652
-#, fuzzy
-msgid "Unable to process spool folder"
-msgstr "Fout bij het opslaan van het groepenlijst bestand voor %s: %s"
-
-#: camel/camel-filter-driver.c:666
-#, fuzzy
-msgid "Getting message %d (%d%%)"
-msgstr "Bezig met wegschrijven bericht %d van %d"
-
-#: camel/camel-filter-driver.c:670 camel/camel-filter-driver.c:679
-#, fuzzy, c-format
-msgid "Failed message %d"
-msgstr "_Bericht versturen"
-
-#: camel/camel-filter-driver.c:671
-#, fuzzy
-msgid "Cannot open message"
-msgstr "Kan bericht niet vergaren: %s"
-
-#: camel/camel-filter-driver.c:690 camel/camel-filter-driver.c:788
-#, fuzzy
-msgid "Syncing folder"
-msgstr "Bezig met synchroniseren map"
-
-#: camel/camel-filter-driver.c:694 camel/camel-filter-driver.c:793
-#, fuzzy
-msgid "Complete"
-msgstr "Voltooid"
-
-#: camel/camel-filter-driver.c:748
-#, fuzzy, c-format
-msgid "Getting message %d of %d"
-msgstr "Bezig met wegschrijven bericht %d van %d"
-
-#: camel/camel-filter-driver.c:753 camel/camel-filter-driver.c:771
-#, fuzzy, c-format
-msgid "Failed at message %d of %d"
-msgstr "Bezig met wegschrijven bericht %d van %d"
-
-#: camel/camel-filter-driver.c:866
-#, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr "Fout bij interpreten bestand: %s: %s"
-
-#: camel/camel-filter-driver.c:871
-#, c-format
-msgid "Error executing filter: %s: %s"
-msgstr "Fout bij uitvoeren filter: %s: %s"
-
-#: camel/camel-filter-search.c:439 camel/camel-filter-search.c:445
-#, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr "Fout bij uitvoeren filterzoekactie: %s: %s"
-
-#: camel/camel-folder-search.c:328
-#, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-"Kan zoekexpressie niet interpreteren: %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:338
-#, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr ""
-"Fout bij uitvoeren zoekexpressie: %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:485 camel/camel-folder-search.c:513
-msgid "(match-all) requires a single bool result"
-msgstr "(past-allen) vereist enkelvoudig booleaans resultaat"
-
-#: camel/camel-folder-search.c:559
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr "Bezig met uitvoeren van zoekopdracht op onbekende kop: %s"
-
-#: camel/camel-folder-search.c:670 camel/camel-folder-search.c:714
-msgid "Invalid type in body-contains, expecting string"
-msgstr "Ongeldig type in bericht-bevat, verwacht een tekenreeks"
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:92 camel/camel-lock.c:111 camel/camel-movemail.c:138
-#: camel/camel-movemail.c:185
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "Kon vergrendelingsbestand voor %s niet maken: %s"
-
-#: camel/camel-lock.c:151 camel/camel-movemail.c:219
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr ""
-"Maximale wachttijd overschreden tijdens het wachten op exclusieve toegang "
-"tot bestand %s. Probeer het later opnieuw."
-
-#: camel/camel-lock.c:201
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr "Verkrijgen van vergrendeling met fcntl(2) mislukt: %s"
-
-#: camel/camel-lock.c:255
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr "Verkrijgen van vergrendeling met flock(2) mislukt: %s"
-
-#: camel/camel-movemail.c:101
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr "Kon postbusbestand %s niet controleren: %s"
-
-#: camel/camel-movemail.c:148
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr "Kon postbusbestand %s niet openen: %s"
-
-#: camel/camel-movemail.c:158
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr "Kon tijdelijk postbusbestand %s niet openen: %s"
-
-#: camel/camel-movemail.c:199
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr "Kon het vergrendelingsbestand voor %s niet testen: %s"
-
-#: camel/camel-movemail.c:245
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr "Fout bij het lezen van postbusbestand: %s"
-
-#: camel/camel-movemail.c:256
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr "Fout bij opslaan van tijdelijk postbusbestand: %s"
-
-#: camel/camel-movemail.c:274
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr "Fout bij opslaan post in tijdelijk bestand %s: %s"
-
-#: camel/camel-movemail.c:306
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr "Kon de pijp niet maken: %s"
-
-#: camel/camel-movemail.c:318
-#, c-format
-msgid "Could not fork: %s"
-msgstr "Kon niet starten: %s"
-
-#: camel/camel-movemail.c:356
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr "Movemail programma mislukt: %s"
-
-#: camel/camel-movemail.c:357
-msgid "(Unknown error)"
-msgstr "(Onbekende fout)"
-
-#: camel/camel-movemail.c:587
-#, fuzzy, c-format
-msgid "Error copying mail temp file: %s"
-msgstr "Fout bij opslaan van tijdelijk postbusbestand: %s"
-
-#: camel/camel-pgp-context.c:188
-#, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr "Voer uw %s passphrase voor %s in"
-
-#: camel/camel-pgp-context.c:191
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr "Voer uw %s passphrase in."
-
-#: camel/camel-pgp-context.c:509
-msgid "No plaintext to sign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:516 camel/camel-pgp-context.c:688
-#: camel/camel-pgp-context.c:1055 camel/camel-pgp-context.c:1267
-msgid "No password provided."
-msgstr "Geen wachtwoord ingevoerd."
-
-#: camel/camel-pgp-context.c:522 camel/camel-pgp-context.c:694
-#: camel/camel-pgp-context.c:877 camel/camel-pgp-context.c:1062
-#: camel/camel-pgp-context.c:1274
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr "Kon de pijp naar GPG/PGP niet maken: %s"
-
-#: camel/camel-pgp-context.c:681
-msgid "No plaintext to clearsign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:871
-msgid "No plaintext to verify."
-msgstr ""
-
-#: camel/camel-pgp-context.c:888
-#, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "Kon tijdelijk bestand niet maken: %s"
-
-#: camel/camel-pgp-context.c:1045
-#, fuzzy
-msgid "No plaintext to encrypt."
-msgstr "Klik op het pictogram om te ontsleutelen."
-
-#: camel/camel-pgp-context.c:1071
-msgid "No recipients specified"
-msgstr "Geen ontvangers gespecifieerd"
-
-#: camel/camel-pgp-context.c:1259
-msgid "No ciphertext to decrypt."
-msgstr ""
-
-#: camel/camel-provider.c:131
-#, c-format
-msgid "Could not load %s: Module loading not supported on this system."
-msgstr ""
-
-#: camel/camel-provider.c:140
-#, c-format
-msgid "Could not load %s: %s"
-msgstr "Kon %s niet laden: %s"
-
-#: camel/camel-provider.c:148
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr "Kon %s niet laden: Geen initialisatie code in de module."
-
-#: camel/camel-remote-store.c:186
-#, c-format
-msgid "%s server %s"
-msgstr "%s server %s"
-
-#: camel/camel-remote-store.c:190
-#, c-format
-msgid "%s service for %s on %s"
-msgstr "%s dienst voor %s op %s"
-
-#: camel/camel-remote-store.c:240
-msgid "Connection cancelled"
-msgstr "Verbinding geannuleerd"
-
-#: camel/camel-remote-store.c:243
-#: camel/providers/smtp/camel-smtp-transport.c:261
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr "Kon niet verbinden met %s (poort %d): %s"
-
-#: camel/camel-remote-store.c:244
-msgid "(unknown host)"
-msgstr "(onbekende machine)"
-
-#: camel/camel-remote-store.c:325 camel/camel-remote-store.c:387
-#: camel/camel-remote-store.c:458
-#: camel/providers/imap/camel-imap-command.c:287
-msgid "Operation cancelled"
-msgstr "Operatie geannuleerd"
-
-#: camel/camel-remote-store.c:464
-msgid "Server unexpectedly disconnected"
-msgstr "Server verbrak onverwacht de verbinding"
-
-#: camel/camel-sasl-anonymous.c:33
-msgid "Anonymous"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:35
-#, fuzzy
-msgid "This option will connect to the server using an anonymous login."
-msgstr ""
-"Deze optie zal bij het verbinden met de IMAP-server het wachtwoord versturen "
-"als platte tekst."
-
-#: camel/camel-sasl-anonymous.c:110 camel/camel-sasl-plain.c:87
-msgid "Authentication failed."
-msgstr "Aanmelding mislukt"
-
-#: camel/camel-sasl-anonymous.c:119
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-"Ongeldig trace-informatie voor e-mailadres:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:131
-#, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr ""
-"Ongeldige opaque trace-informatie:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:143
-#, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr ""
-"Ongeldige trace-informatie:\n"
-"%s"
-
-#: camel/camel-sasl-cram-md5.c:35
-msgid "CRAM-MD5"
-msgstr "CRAM-MD5"
-
-#: camel/camel-sasl-cram-md5.c:37
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-"Deze optie zal verbinding maken met de server met een veilig CRAM-MD5 "
-"wachtwoord, indien de server dat ondersteund."
-
-#: camel/camel-sasl-digest-md5.c:43
-msgid "DIGEST-MD5"
-msgstr "DIGEST-MD5"
-
-#: camel/camel-sasl-digest-md5.c:45
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-"Deze optie zal verbinding maken met de server met een veilig DIGEST-MD5 "
-"wachtwoord, indien de server dat ondersteund."
-
-#: camel/camel-sasl-digest-md5.c:810
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr "Server 'challenge' te lang (>2048 octets)\n"
-
-#: camel/camel-sasl-digest-md5.c:819
-msgid "Server challenge invalid\n"
-msgstr "Server 'challenge' ongeldig\n"
-
-#: camel/camel-sasl-digest-md5.c:825
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr "Server 'challenge' bevat ongeldig 'Quality of Protection'-teken\n"
-
-#: camel/camel-sasl-digest-md5.c:847
-msgid "Server response did not contain authorization data\n"
-msgstr "Het serverantwoord bevatte geen authorisatiegegevens\n"
-
-#: camel/camel-sasl-digest-md5.c:865
-msgid "Server response contained incomplete authorization data\n"
-msgstr "Het serverantwoord bevatte onvolledige authorisatiegegevens\n"
-
-#: camel/camel-sasl-digest-md5.c:875
-msgid "Server response does not match\n"
-msgstr "Het serverantwoord is onbegrijpelijk\n"
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "Kerberos 4"
-msgstr "Kerberos 4"
-
-#: camel/camel-sasl-kerberos4.c:42
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr ""
-"Deze optie zal bij het verbinden met de server gebruik maken van "
-"Kerberos-4-aanmelding."
-
-#: camel/camel-sasl-kerberos4.c:161
-#, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr ""
-"Kon Kerberos ticket niet verkrijgen:\n"
-"%s"
-
-#: camel/camel-sasl-kerberos4.c:218
-#: camel/providers/imap/camel-imap-store.c:429
-msgid "Bad authentication response from server."
-msgstr "Fout aanmeldingsantwoord van server."
-
-#: camel/camel-sasl-login.c:32
-msgid "NT Login"
-msgstr ""
-
-#: camel/camel-sasl-login.c:34 camel/camel-sasl-plain.c:34
-#, fuzzy
-msgid "This option will connect to the server using a simple password."
-msgstr ""
-"Deze optie zal bij het verbinden met de IMAP-server het wachtwoord versturen "
-"als platte tekst."
-
-#: camel/camel-sasl-login.c:127
-#, fuzzy
-msgid "Unknown authentication state."
-msgstr "Aanmelding mislukt"
-
-#: camel/camel-search-private.c:111
-#, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr "Compileren van reguliere expressie mislukt: %s: %s"
-
-#: camel/camel-service.c:154
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr "URL '%s' heeft een gebruikersnaamcomponent nodig"
-
-#: camel/camel-service.c:162
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr "URL '%s' heeft een machinenaamcomponent nodig"
-
-#: camel/camel-service.c:170
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr "URL '%s' heeft een padcomponent nodig"
-
-#: camel/camel-service.c:548
-#, fuzzy, c-format
-msgid "Resolving: %s"
-msgstr "Bezig met Testen \"%s\""
-
-#: camel/camel-service.c:575
-#, c-format
-msgid "Failure in name lookup: %s"
-msgstr ""
-
-#: camel/camel-service.c:600
-#, c-format
-msgid "Host lookup failed: %s: host not found"
-msgstr ""
-
-#: camel/camel-service.c:602
-#, c-format
-msgid "Host lookup failed: %s: unknown reason"
-msgstr ""
-
-#: camel/camel-session.c:68
-msgid "Virtual folder email provider"
-msgstr "Virtuele map e-mail-aanbieder"
-
-#: camel/camel-session.c:70
-msgid "For reading mail as a query of another set of folders"
-msgstr "Voor het lezen van post als een zoekopdracht op een verzameling mappen"
-
-#: camel/camel-session.c:294 camel/camel-session.c:363
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr "Geen aanbieder beschikbaar voor protocol `%s'"
-
-#: camel/camel-session.c:478
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"Kon de directory %s niet aanmaken:\n"
-"%s"
-
-#. Fill in the new fields
-#: camel/camel-store.c:380 mail/mail-ops.c:1007 mail/mail-ops.c:1014
-#: mail/mail-ops.c:1032 mail/mail-ops.c:1033
-msgid "Trash"
-msgstr "Prullenbak"
-
-#: camel/camel-tcp-stream-ssl.c:348
-#, c-format
-msgid ""
-"EMail: %s\n"
-"Common Name: %s\n"
-"Organization Unit: %s\n"
-"Organization: %s\n"
-"Locality: %s\n"
-"State: %s\n"
-"Country: %s"
-msgstr ""
-
-#. construct our user prompt
-#: camel/camel-tcp-stream-ssl.c:364
-#, c-format
-msgid ""
-"Bad certificate from %s:\n"
-"\n"
-"%s\n"
-"\n"
-"Do you wish to accept anyway?"
-msgstr ""
-
-#: camel/camel-url.c:289
-#, fuzzy, c-format
-msgid "Could not parse URL `%s'"
-msgstr ""
-"Kon bestand `%s' niet openen:\n"
-"%s"
-
-#: camel/camel-vee-folder.c:451
-#, fuzzy, c-format
-msgid "No such message %s in %s"
-msgstr "Een dergelijk bericht bestaat niet: %s"
-
-#: camel/camel-vee-folder.c:546
-#, c-format
-msgid "No such message: %s"
-msgstr "Een dergelijk bericht bestaat niet: %s"
-
-#: camel/camel-vtrash-folder.c:109
-#, fuzzy
-msgid "You cannot copy messages from this trash folder."
-msgstr ""
-"U kunt alleen berichten bewerken die opgeslagen zijn\n"
-"in de Kladmap."
-
-#: camel/providers/imap/camel-imap-message-cache.c:150
-#, fuzzy, c-format
-msgid "Could not open cache directory: %s"
-msgstr "Kon directory %s niet maken: %s"
-
-#: camel/providers/imap/camel-imap-command.c:232
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "Onverwacht antwoord van IMAP-server: %s"
-
-#: camel/providers/imap/camel-imap-command.c:240
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr "IMAP-commando mislukt: %s"
-
-#: camel/providers/imap/camel-imap-command.c:241 shell/e-storage.c:481
-msgid "Unknown error"
-msgstr "Onbekende fout"
-
-#: camel/providers/imap/camel-imap-command.c:295
-msgid "Server response ended too soon."
-msgstr "Het antwoord van de server eindigde te snel."
-
-#: camel/providers/imap/camel-imap-command.c:487
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr "Het antwoord van de IMAP-server bevatte geen %s informatie"
-
-#: camel/providers/imap/camel-imap-command.c:524
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr "De IMAP-server gaf onverwacht een 'OK' antwoord: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:170
-#, c-format
-msgid "Could not load summary for %s"
-msgstr "Kon samenvatting voor %s niet laden"
-
-#: camel/providers/imap/camel-imap-folder.c:352
-msgid "Scanning IMAP folder"
-msgstr "Bezig met scannen IMAP-map"
-
-#: camel/providers/imap/camel-imap-folder.c:1020
-#: camel/providers/imap/camel-imap-folder.c:1240
-#, fuzzy
-msgid "This message is not currently available"
-msgstr ""
-"Dit bericht heeft geen onderwerp.\n"
-"Weet u zeker dat u het wilt versturen?"
-
-#: camel/providers/imap/camel-imap-folder.c:1048
-#: camel/providers/imap/camel-imap-folder.c:1272
-msgid "Could not find message body in FETCH response."
-msgstr "Kon bericht inhoud niet vinden in FETCH-antwoord."
-
-#: camel/providers/imap/camel-imap-provider.c:43 mail/mail-config.glade.h:11
-#, fuzzy
-msgid "Checking for new mail"
-msgstr "Controleer op nieuwe mail"
-
-#: camel/providers/imap/camel-imap-provider.c:45
-#, fuzzy
-msgid "Check for new messages in all folders"
-msgstr "Controleer op nieuwe mail"
-
-#: camel/providers/imap/camel-imap-provider.c:48 shell/e-shell-view.c:534
-msgid "Folders"
-msgstr "Mappen"
-
-#: camel/providers/imap/camel-imap-provider.c:50
-#, fuzzy
-msgid "Show only subscribed folders"
-msgstr "Aanmelden bij map \"%s\""
-
-#: camel/providers/imap/camel-imap-provider.c:52
-msgid "Override server-supplied folder namespace"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:54
-#, fuzzy
-msgid "Namespace"
-msgstr "Naamruimte:"
-
-#: camel/providers/imap/camel-imap-provider.c:57
-msgid "Apply filters to new messages in INBOX on this server"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:63
-msgid "IMAPv4"
-msgstr "IMAPv4"
-
-#: camel/providers/imap/camel-imap-provider.c:65
-msgid "For reading and storing mail on IMAP servers."
-msgstr "Voor het lezen en opslaan van post op IMAP servers."
-
-#: camel/providers/imap/camel-imap-provider.c:82
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr ""
-"Deze optie zal bij het verbinden met de IMAP-server het wachtwoord versturen "
-"als platte tekst."
-
-#: camel/providers/imap/camel-imap-store.c:452
-#, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr "IMAP-server %s ondersteunt het gevraagde aanmeldingstype %s niet"
-
-#: camel/providers/imap/camel-imap-store.c:462
-#: camel/providers/smtp/camel-smtp-transport.c:358
-#, c-format
-msgid "No support for authentication type %s"
-msgstr "Geen ondersteuning voor aanmeldingstype %s"
-
-#: camel/providers/imap/camel-imap-store.c:486
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr "%sVoer het IMAP-wachtwoord voor %s@%s in"
-
-#: camel/providers/imap/camel-imap-store.c:501
-#: camel/providers/smtp/camel-smtp-transport.c:402
-msgid "You didn't enter a password."
-msgstr "U heeft geen wachtwoord ingevoerd"
-
-#: camel/providers/imap/camel-imap-store.c:527
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Fout bij het aanmelden bij de IMAP-server.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/imap/camel-imap-store.c:864
-#, fuzzy, c-format
-msgid "%s is not a selectable folder"
-msgstr "Toon de geselecteerde map"
-
-#: camel/providers/imap/camel-imap-store.c:879
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr "Kon directory %s niet maken: %s"
-
-#: camel/providers/imap/camel-imap-store.c:1364
-msgid "You must be working online to complete this operation"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:39
-msgid "MH-format mail directories"
-msgstr "MH-formaat postbussen"
-
-#: camel/providers/local/camel-local-provider.c:40
-msgid "For storing local mail in MH-like mail directories"
-msgstr "Voor het opslaan van lokale post in MH-achtige postbos"
-
-#: camel/providers/local/camel-local-provider.c:49
-msgid "Standard Unix mailbox file"
-msgstr "Standaard Unix mailboxbestand"
-
-#: camel/providers/local/camel-local-provider.c:50
-msgid "For storing local mail in standard mbox format"
-msgstr "Voor het opslaan van lokale post in standaard mbox-formaat"
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "Qmail maildir-format mail files"
-msgstr "qmail maildir-formaat postbusbestanden"
-
-#: camel/providers/local/camel-local-provider.c:60
-msgid "For storing local mail in qmail maildir directories"
-msgstr "Voor het opslaan van lokale post in qmail-maildir-postbussen"
-
-#: camel/providers/local/camel-local-store.c:129
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr "Opslaglocatie %s is geen absoluut pad"
-
-#: camel/providers/local/camel-local-store.c:136
-#, c-format
-msgid "Store root %s is not a regular directory"
-msgstr "Opslag `%s' is geen normale directory"
-
-#: camel/providers/local/camel-local-store.c:144
-#: camel/providers/local/camel-local-store.c:160
-#, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "Kan map niet verkrijgen: %s: %s"
-
-#: camel/providers/local/camel-local-store.c:175
-msgid "Local stores do not have an inbox"
-msgstr "Lokale opslaglocaties hebben geen postbus-in"
-
-#: camel/providers/local/camel-local-store.c:185
-#, c-format
-msgid "Local mail file %s"
-msgstr "Lokaal postbusbestand %s"
-
-#: camel/providers/local/camel-local-store.c:241
-#, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr "Kon de naam van map %s niet wijzigen naar %s: %s"
-
-#: camel/providers/local/camel-local-store.c:283
-#, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr "Kon samenvattingsbestand van map `%s' niet verwijderen: %s"
-
-#: camel/providers/local/camel-local-store.c:293
-#, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr "Kon indexbestand van map `%s' niet verwijderen: %s"
-
-#: camel/providers/local/camel-local-summary.c:404
-msgid "Unable to add message to summary: unknown reason"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-folder.c:150
-#: camel/providers/local/camel-maildir-folder.c:158
-#: camel/providers/local/camel-maildir-folder.c:169
-#, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr "Kan bericht niet toevoegen aan maildir-map: %s: %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-maildir-folder.c:209
-#: camel/providers/local/camel-maildir-folder.c:217
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#: camel/providers/local/camel-mh-folder.c:194
-#: camel/providers/local/camel-mh-folder.c:202
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-"Kan bericht niet verkrijgen: %s\n"
-" %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-msgid "No such message"
-msgstr "Een dergelijk bericht bestaat niet"
-
-#: camel/providers/local/camel-maildir-folder.c:218
-#: camel/providers/local/camel-mh-folder.c:203
-msgid "Invalid message contents"
-msgstr "Ongeldige berichtinhoud"
-
-#: camel/providers/local/camel-maildir-store.c:96
-#: camel/providers/local/camel-mh-store.c:90
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-"Kon map `%s' niet openen:\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:100
-#: camel/providers/local/camel-mbox-store.c:101
-#: camel/providers/local/camel-mh-store.c:97
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr "Map `%s' bestaat niet."
-
-#: camel/providers/local/camel-maildir-store.c:107
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-"Kon map `%s' niet maken:\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:122
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr "`%s' is geen maildir-directory."
-
-#: camel/providers/local/camel-maildir-store.c:151
-#: camel/providers/local/camel-maildir-store.c:188
-#: camel/providers/local/camel-mh-store.c:127
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr "Kon map `%s' niet verwijderen: %s"
-
-#: camel/providers/local/camel-maildir-store.c:152
-msgid "not a maildir directory"
-msgstr "geen maildir-directory"
-
-#: camel/providers/local/camel-maildir-summary.c:405
-#: camel/providers/local/camel-maildir-summary.c:526
-#, fuzzy, c-format
-msgid "Cannot open maildir directory path: %s: %s"
-msgstr "Kon postbus niet openen: %s: %s\n"
-
-#: camel/providers/local/camel-mbox-folder.c:152
-#, fuzzy, c-format
-msgid "Cannot create folder lock on %s: %s"
-msgstr "Kan map niet verkrijgen: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:203
-#, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr "Kon postbus niet openen: %s: %s\n"
-
-#: camel/providers/local/camel-mbox-folder.c:259
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr "Kan bericht niet aan mbox-bestand toevoegen: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:335
-#: camel/providers/local/camel-mbox-folder.c:367
-#: camel/providers/local/camel-mbox-folder.c:380
-#, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-"Kan bericht %s uit folder %s niet verkrijgen\n"
-" %s"
-
-#: camel/providers/local/camel-mbox-folder.c:368
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr "De map lijkt onherstelbaar beschadigd te zijn."
-
-#: camel/providers/local/camel-mbox-folder.c:381
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr "Opbouwen bericht mislukt: Beschadigde mailbox?"
-
-#: camel/providers/local/camel-mbox-store.c:94
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-"Kon bestand `%s' niet openen:\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:110
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-"Kon bestand `%s' niet aanmaken:\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:119
-#: camel/providers/local/camel-mbox-store.c:146
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr "`%s' is geen normaal bestand."
-
-#: camel/providers/local/camel-mbox-store.c:138
-#: camel/providers/local/camel-mbox-store.c:161
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-"Kon map `%s' niet verwijderen:\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr "Map `%s' is niet leeg. Niet verwijderd."
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:249
-msgid "Summarising folder"
-msgstr "Bezig met samenvatten map"
-
-#: camel/providers/local/camel-mbox-summary.c:254
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr "Kon map %s niet openen: er zal worden samengevat vanaf positie %ld: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:296
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr "Fatale e-mail-interpreatiefout op positie %ld in map %s"
-
-#: camel/providers/local/camel-mbox-summary.c:371
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr "Kon map niet samenvatten: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:502
-#: camel/providers/local/camel-mbox-summary.c:703 mail/mail-ops.c:1395
-msgid "Synchronising folder"
-msgstr "Bezig met synchroniseren map"
-
-#: camel/providers/local/camel-mbox-summary.c:507
-#: camel/providers/local/camel-mbox-summary.c:708
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr "Kon map %s niet openen voor genereren van samenvatting: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:524
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr "Kon tijdelijke postbus niet openen: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:549
-#: camel/providers/local/camel-mbox-summary.c:557
-#: camel/providers/local/camel-mbox-summary.c:746
-#: camel/providers/local/camel-mbox-summary.c:754
-msgid "Summary and folder mismatch, even after a sync"
-msgstr "Samenvatting en map niet gelijk, zelfs na synchronisatie"
-
-#: camel/providers/local/camel-mbox-summary.c:600
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr "Fout bij het schrijven naar tijdelijke postbus: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:617
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr "Fout bij het schrijven naar tijdelijk postbus %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:635
-#: camel/providers/local/camel-mbox-summary.c:804
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr "Kon de bronmap %s niet sluiten: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:644
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr "Kon de tijdelijke map niet sluiten: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:655
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr "Kon de naam van de map niet wijzigen: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:879
-#, c-format
-msgid "Unknown error: %s"
-msgstr "Onbekende fout: %s"
-
-#: camel/providers/local/camel-mh-folder.c:149
-#: camel/providers/local/camel-mh-folder.c:157
-#, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr "Kan bericht niet toevoegen aan mh map %s: %s"
-
-#: camel/providers/local/camel-mh-store.c:110
-#, c-format
-msgid "`%s' is not a directory."
-msgstr "`%s' is geen directory."
-
-#: camel/providers/local/camel-mh-summary.c:218
-#, fuzzy, c-format
-msgid "Cannot open MH directory path: %s: %s"
-msgstr "Kon postbus niet openen: %s: %s\n"
-
-#: camel/providers/nntp/camel-nntp-auth.c:45
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr "Voer het NNTP-wachtwoord voor %s@%s in"
-
-#: camel/providers/nntp/camel-nntp-auth.c:66
-msgid "Server rejected username"
-msgstr "De server weigerde de gebruikersnaam"
-
-#: camel/providers/nntp/camel-nntp-auth.c:72
-msgid "Failed to send username to server"
-msgstr "Versturen van de gebruikersnaam naar de server mislukt"
-
-#: camel/providers/nntp/camel-nntp-auth.c:81
-msgid "Server rejected username/password"
-msgstr "De server weigerde de gebruikernaam en/of het wachtwoord"
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr "Bericht %s kon niet worden gevonden."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr "Kon groepenlijst niet van server ophalen."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr "Fout bij het laden van het groepenlijstbestand voor %s: %s"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr "Fout bij het opslaan van het groepenlijstbestand voor %s: %s"
-
-#: camel/providers/nntp/camel-nntp-provider.c:42
-msgid "USENET news"
-msgstr "USENET-nieuws"
-
-#: camel/providers/nntp/camel-nntp-provider.c:44
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr ""
-"Dit is een provider voor het lezen van en versturen naar USENET "
-"nieuwsgroepen."
-
-#: camel/providers/nntp/camel-nntp-store.c:224
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr "Kon directory voor nieuwsservers niet openen: %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:286
-#, c-format
-msgid "USENET News via %s"
-msgstr "USENET-Nieuws via %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:293
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-"Deze optie zal aanmelden bij de NNTP-server met een wachtwoord platte tekst."
-
-#: camel/providers/nntp/camel-nntp-store.c:325
-#: camel/providers/nntp/camel-nntp-store.c:488
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr "Het .newsrc-bestand kon niet geopend of gemaakt worden voor %s: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-msgid "Retrieving POP summary"
-msgstr "POP-samenvatting aan het ophalen"
-
-#: camel/providers/pop3/camel-pop3-folder.c:155
-#, fuzzy, c-format
-msgid "Could not check POP server for new messages: %s"
-msgstr "Kon niet verbinden met POP-server op %s."
-
-#: camel/providers/pop3/camel-pop3-folder.c:199
-msgid "Could not open folder: message listing was incomplete."
-msgstr "Kon map niet openen: berichtenlijst was onvolledig."
-
-#: camel/providers/pop3/camel-pop3-folder.c:292
-#, c-format
-msgid "No message with uid %s"
-msgstr "Geen bericht met uid %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:296
-#, c-format
-msgid "Retrieving POP message %d"
-msgstr "Bezig met ophalen POP-bericht %d"
-
-#: camel/providers/pop3/camel-pop3-folder.c:303
-#, fuzzy, c-format
-msgid "Could not fetch message: %s"
-msgstr "Kon bericht niet versturen: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:320
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr "Kon bericht niet van POP server %s halen: %s"
-
-#: camel/providers/pop3/camel-pop3-provider.c:37
-#, fuzzy
-msgid "Message storage"
-msgstr "Berichtkop"
-
-#: camel/providers/pop3/camel-pop3-provider.c:39
-#, fuzzy
-msgid "Leave messages on server"
-msgstr "Verwijder de berichten niet van de server"
-
-#: camel/providers/pop3/camel-pop3-provider.c:41
-#, fuzzy, c-format
-msgid "Delete after %s day(s)"
-msgstr "Verwijder de taak"
-
-#: camel/providers/pop3/camel-pop3-provider.c:48 mail/mail-config.glade.h:42
-msgid "POP"
-msgstr "POP"
-
-#: camel/providers/pop3/camel-pop3-provider.c:50
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-"Voor het verbinden met POP-servers. Het POP-protocol kan ook gebruikt worden "
-"om post te halen van bepaalde 'web mail'-providers en gesloten postsystemen."
-
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-"Bij het verbinden met de POP-server het wachtwoord versturen in "
-"platte-tekst-vorm. Deze optie is de enige die wordt ondersteund door de "
-"meeste POP servers."
-
-#: camel/providers/pop3/camel-pop3-provider.c:79
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-"Bij het verbinden met de POP-server word gebruik gemaakt van een versleuteld "
-"wachtwoord via het APOP-protocol. Deze optie zal niet werken voor alle "
-"gebruikers, zelfs niet op servers die beweren het te ondersteunen."
-
-#: camel/providers/pop3/camel-pop3-provider.c:91
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-"Dit zal verbinden met de POP-server en gebruikmaken van Kerberos 4 bij het "
-"aanmelden."
-
-#: camel/providers/pop3/camel-pop3-store.c:209
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr "Kon niet aanmelden bij KPOP-server: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:225
-#, fuzzy, c-format
-msgid "Could not connect to server: %s"
-msgstr "Kon niet verbinden met POP-server op %s."
-
-#: camel/providers/pop3/camel-pop3-store.c:329
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr "Kon niet verbinden met POP-server op %s."
-
-#: camel/providers/pop3/camel-pop3-store.c:368
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr "%sVoer het POP3-wachtwoord voor %s@%s in"
-
-#: camel/providers/pop3/camel-pop3-store.c:386
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-"Fout bij het verbinden met de POP server.\n"
-"Fout bij versturen van gebruikersnaam: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:389
-#: camel/providers/pop3/camel-pop3-store.c:426
-msgid "(Unknown)"
-msgstr "(Onbekend)"
-
-#: camel/providers/pop3/camel-pop3-store.c:416
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-"Fout bij verbinden met de POP-server.\n"
-"Geen ondersteuning voor de ingestelde aanmeldingsmethode."
-
-#: camel/providers/pop3/camel-pop3-store.c:424
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-"Fout bij verbinden met de POP-server.\n"
-"Fout bij het versturen van het wachtwoord: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:491
-#, c-format
-msgid "No such folder `%s'."
-msgstr "Map `%s' bestaat niet."
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:37
-#: mail/mail-config.glade.h:57
-msgid "Sendmail"
-msgstr "Sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:39
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-"Het afleveren van post zal afgehandeld worden door het \"sendmail\" "
-"programma op het lokale systeem."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:107
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr "Kon verbinding met sendmail niet maken: %s: bericht niet verstuurd"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:124
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr "Kon sendmail niet starten: %s: bericht niet verstuurd"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:150
-#, c-format
-msgid "Could not send message: %s"
-msgstr "Kon bericht niet versturen: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:163
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr "sendmail stopte met signaal %s: bericht niet verstuurd."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:170
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr "Kon %s niet uitvoeren: bericht niet verstuurd."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:175
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr "sendmail stopte met staat %d: bericht niet verstuurd."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:194
-msgid "Could not find 'From' address in message"
-msgstr "Kon 'Van'-adres niet vinden in berichtinhoud"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "sendmail"
-msgstr "sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:249
-msgid "Mail delivery via the sendmail program"
-msgstr "Postaflevering via het sendmail programma"
-
-#: camel/providers/smtp/camel-smtp-provider.c:38 mail/mail-config.glade.h:52
-msgid "SMTP"
-msgstr "SMTP"
-
-#: camel/providers/smtp/camel-smtp-provider.c:40
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr ""
-"Voor het afleveren van post doormiddel van het verbinden met een mailhub op "
-"afstand, gebruik makend van SMTP.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:165
-msgid "Syntax error, command unrecognized"
-msgstr "Syntactische fout, commando niet herkend"
-
-#: camel/providers/smtp/camel-smtp-transport.c:167
-msgid "Syntax error in parameters or arguments"
-msgstr "Syntactische fout in parameters of argumenten"
-
-#: camel/providers/smtp/camel-smtp-transport.c:169
-msgid "Command not implemented"
-msgstr "Commando niet geïmplementeerd"
-
-#: camel/providers/smtp/camel-smtp-transport.c:171
-msgid "Command parameter not implemented"
-msgstr "Commando-parameter niet geïmplementeerd"
-
-#: camel/providers/smtp/camel-smtp-transport.c:173
-msgid "System status, or system help reply"
-msgstr "Systeem-status, of systeem-help-antwoord"
-
-#: camel/providers/smtp/camel-smtp-transport.c:175
-msgid "Help message"
-msgstr "Helpbericht"
-
-#: camel/providers/smtp/camel-smtp-transport.c:177
-msgid "Service ready"
-msgstr "Dienst is gereed"
-
-#: camel/providers/smtp/camel-smtp-transport.c:179
-msgid "Service closing transmission channel"
-msgstr "Dienst heeft transmissiekanaal gesloten"
-
-#: camel/providers/smtp/camel-smtp-transport.c:181
-msgid "Service not available, closing transmission channel"
-msgstr "Dienst niet beschikbaar, transmissiekanaal gesloten"
-
-#: camel/providers/smtp/camel-smtp-transport.c:183
-msgid "Requested mail action okay, completed"
-msgstr "Postopdracht geslaagd, voltooid"
-
-#: camel/providers/smtp/camel-smtp-transport.c:185
-msgid "User not local; will forward to <forward-path>"
-msgstr "Gebruiker niet lokaal; zal doorsturen naar <doorstuur-pad>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:187
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr "Postopdracht niet uitgevoerd: postbus niet beschikbaar"
-
-#: camel/providers/smtp/camel-smtp-transport.c:189
-msgid "Requested action not taken: mailbox unavailable"
-msgstr "Opdracht niet uitgevoerd: postbus niet beschikbaar"
-
-#: camel/providers/smtp/camel-smtp-transport.c:191
-msgid "Requested action aborted: error in processing"
-msgstr "Verzochte actie afgebroken: fout tijdens verwerken"
-
-#: camel/providers/smtp/camel-smtp-transport.c:193
-msgid "User not local; please try <forward-path>"
-msgstr "Gebruiker niet lokaal; probeer <doorstuur-pad>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:195
-msgid "Requested action not taken: insufficient system storage"
-msgstr "Opdracht niet uitgevoerd: onvoldoende ruimte op systeem"
-
-#: camel/providers/smtp/camel-smtp-transport.c:197
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr "Postopdracht afgebroken: gebruikt teveel ruimte"
-
-#: camel/providers/smtp/camel-smtp-transport.c:199
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr "Opdracht niet uitgevoerd: postbusnaam niet toegestaan"
-
-#: camel/providers/smtp/camel-smtp-transport.c:201
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr "Start postinvoer; eindig met <CRLF>.<CRLF>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:203
-msgid "Transaction failed"
-msgstr "Transactie mislukt"
-
-#: camel/providers/smtp/camel-smtp-transport.c:207
-msgid "A password transition is needed"
-msgstr "Veranderen van wachtwoord is vereist"
-
-#: camel/providers/smtp/camel-smtp-transport.c:209
-msgid "Authentication mechanism is too weak"
-msgstr "Aanmeldingsmechanisme te zwak"
-
-#: camel/providers/smtp/camel-smtp-transport.c:211
-msgid "Encryption required for requested authentication mechanism"
-msgstr "Versleuteling vereist voor gewenst aanmeldingsmechanisme"
-
-#: camel/providers/smtp/camel-smtp-transport.c:213
-msgid "Temporary authentication failure"
-msgstr "Tijdelijke aanmeldingsfout"
-
-#: camel/providers/smtp/camel-smtp-transport.c:215
-msgid "Authentication required"
-msgstr "Aanmelding is vereist"
-
-#: camel/providers/smtp/camel-smtp-transport.c:305
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr "'Welkom respons'-fout: %s: waarschijnlijk niet-fataal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:348
-#, fuzzy, c-format
-msgid "SMTP server %s does not support requested authentication type %s"
-msgstr "IMAP-server %s ondersteunt het gevraagde aanmeldingstype %s niet"
-
-#: camel/providers/smtp/camel-smtp-transport.c:387
-#, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr "%sVoer het SMTP wachtwoord in voor %s@%s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:410
-#, fuzzy, c-format
-msgid ""
-"Unable to authenticate to SMTP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Fout bij het aanmelden bij de IMAP-server.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:526
-#, c-format
-msgid "SMTP server %s"
-msgstr "SMTP-server %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:528
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr "Postaflevering via %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:553
-msgid "Cannot send message: sender address not defined."
-msgstr "Kan bericht niet versturen: afzender niet gedefiniëerd."
-
-#: camel/providers/smtp/camel-smtp-transport.c:560
-msgid "Cannot send message: sender address not valid."
-msgstr "Kan berichten niet versturen: afzender niet geldig."
-
-#: camel/providers/smtp/camel-smtp-transport.c:574
-msgid "Cannot send message: no recipients defined."
-msgstr "Kan bericht niet versturen: Geen ontvangers gespecificeerd."
-
-#: camel/providers/smtp/camel-smtp-transport.c:668
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr "Time-out tijdens HELO verzoek: %s: niet-fataal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:687
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr "'HELO respons'- fout: %s: niet-fataal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:720
-msgid "Error creating SASL authentication object."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:735
-#: camel/providers/smtp/camel-smtp-transport.c:747
-#, c-format
-msgid "AUTH request timed out: %s"
-msgstr "Time-out tijdens AUTH-verzoek: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:797
-msgid "Bad authentication response from server.\n"
-msgstr "Fout aanmeldingsantwoord van server.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:823
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr "Time-out tijdens 'MAIL FROM'-verzoek: %s: bericht niet verzonden"
-
-#: camel/providers/smtp/camel-smtp-transport.c:842
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr "Fout bij 'MAIL FROM'-respons: %s: bericht niet verzonden"
-
-#: camel/providers/smtp/camel-smtp-transport.c:867
-#, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr "Time-out tijdens 'RCPT TO'-verzoek: %s: bericht niet verzonden"
-
-#: camel/providers/smtp/camel-smtp-transport.c:886
-#, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr "Fout bij 'RCPT TO'-respons: %s: bericht niet verzonden"
-
-#: camel/providers/smtp/camel-smtp-transport.c:917
-#, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr "Time-out tijdens DATA-verzoek: %s: bericht niet verstuurd"
-
-#: camel/providers/smtp/camel-smtp-transport.c:936
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr "Fout bij DATA-respons: %s: bericht niet verstuurd"
-
-#: camel/providers/smtp/camel-smtp-transport.c:951
-#: camel/providers/smtp/camel-smtp-transport.c:969
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr ""
-"Time-out tijdens het versturen van DATA: bericht afgebroken: %s: bericht "
-"niet verstuurd"
-
-#: camel/providers/smtp/camel-smtp-transport.c:988
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr "Fout bij DATA-respons: bericht afgebroken: %s: bericht niet verstuurd"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1012
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr "Time-out tijdens RSET-verzoek: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1031
-#, c-format
-msgid "RSET response error: %s"
-msgstr "Fout bij RSET-respons: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1054
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr "Time-out tijdens QUIT-verzoek: %s: niet-fataal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1073
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr "Fout bij QUIT-respons: %s: niet-fataal"
-
-#: composer/e-msg-composer-attachment-bar.c:95
-msgid "1 byte"
-msgstr "1 byte"
-
-#: composer/e-msg-composer-attachment-bar.c:97
-#, c-format
-msgid "%u bytes"
-msgstr "%u bytes"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fK"
-
-#: composer/e-msg-composer-attachment-bar.c:108
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fM"
-
-#: composer/e-msg-composer-attachment-bar.c:112
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fG"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:332 mail/mail-display.c:120
-msgid "attachment"
-msgstr "bijlage"
-
-#: composer/e-msg-composer-attachment-bar.c:421
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr "Voeg een bestand toe als bijlage"
-
-#: composer/e-msg-composer-attachment-bar.c:469
-msgid "Remove selected items from the attachment list"
-msgstr "Verwijder het geselecteerde bestand uit de lijst van bijlages"
-
-#: composer/e-msg-composer-attachment-bar.c:500
-msgid "Add attachment..."
-msgstr "Bestand bijvoegen..."
-
-#: composer/e-msg-composer-attachment-bar.c:501
-msgid "Attach a file to the message"
-msgstr "Voeg een bestand bij het bericht"
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/message-list.c:1082
-msgid "Attachment"
-msgstr "Bijlage"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr "Bijlage-eigenschappen"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr "Bestandsnaam:"
-
-#: composer/e-msg-composer-attachment.glade.h:5
-msgid "Inline attachment"
-msgstr "Ingebonden bijlage"
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr "MIME type:"
-
-#: composer/e-msg-composer-attachment.glade.h:7
-msgid "Send as:"
-msgstr "Verstuur als:"
-
-#: composer/e-msg-composer.c:529
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-"Kon handtekeningsbestand %s niet openen:\n"
-"%s"
-
-#: composer/e-msg-composer.c:699
-msgid "Save as..."
-msgstr "Opslaan als..."
-
-#: composer/e-msg-composer.c:710
-#, c-format
-msgid "Error saving file: %s"
-msgstr "Fout bij opslaan bestand: %s"
-
-#: composer/e-msg-composer.c:730
-#, c-format
-msgid "Error loading file: %s"
-msgstr "Fout bij openen bestand: %s"
-
-#: composer/e-msg-composer.c:802
-msgid ""
-"Unable to open the drafts folder for this account.\n"
-"Would you like to use the default drafts folder?"
-msgstr ""
-
-#: composer/e-msg-composer.c:860 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:206
-msgid "Evolution"
-msgstr "Evolution"
-
-#: composer/e-msg-composer.c:866
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-"Dit bericht is nog niet verstuurd.\n"
-"\n"
-"Wilt u de wijzingen opslaan?"
-
-#: composer/e-msg-composer.c:891
-msgid "Open file"
-msgstr "Bestand openen"
-
-#: composer/e-msg-composer.c:1017
-msgid "That file does not exist."
-msgstr "Het bestand bestaat niet."
-
-#: composer/e-msg-composer.c:1027
-msgid "That is not a regular file."
-msgstr "Het is geen gewoon bestand."
-
-#: composer/e-msg-composer.c:1037
-msgid "That file exists but is not readable."
-msgstr "Het bestand bestaat maar is niet leesbaar."
-
-#: composer/e-msg-composer.c:1047
-msgid "That file appeared accesible but open(2) failed."
-msgstr "Het bestand is toegankelijk maar open(2) mislukte."
-
-#: composer/e-msg-composer.c:1069
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-"Het bestand is zeer groot (groter dan 100K).\n"
-"Weet u zeker dat u deze wilt invoegen?"
-
-#: composer/e-msg-composer.c:1090
-msgid "An error occurred while reading the file."
-msgstr "Een fout trad op tijdens het openen van het bestand."
-
-#: composer/e-msg-composer.c:1391 composer/e-msg-composer.c:1734
-msgid "Compose a message"
-msgstr "Stel een nieuw bericht op"
-
-#: composer/e-msg-composer.c:1825
-msgid "Could not create composer window."
-msgstr ""
-"Kon het dialoog venster voor het opstellen van een nieuw bericht niet "
-"aanmaken."
-
-#: composer/e-msg-composer-hdrs.c:323
-msgid "Click here for the address book"
-msgstr "Klik hier voor het adresboek"
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:354 mail/mail-format.c:744
-msgid "From:"
-msgstr "Van:"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:360 mail/mail-format.c:746
-msgid "Reply-To:"
-msgstr "Antwoordadres:"
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:371 mail/mail-format.c:643
-msgid "Subject:"
-msgstr "Onderwerp:"
-
-#: composer/e-msg-composer-hdrs.c:385 mail/mail-format.c:748
-msgid "To:"
-msgstr "Aan:"
-
-#: composer/e-msg-composer-hdrs.c:386
-msgid "Enter the recipients of the message"
-msgstr "Geef de geadresseerden"
-
-#: composer/e-msg-composer-hdrs.c:389 mail/mail-format.c:750
-msgid "Cc:"
-msgstr "Cc:"
-
-#: composer/e-msg-composer-hdrs.c:390
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "Geef de adressen die een kopie van het bericht moeten krijgen"
-
-#: composer/e-msg-composer-hdrs.c:393
-msgid "Bcc:"
-msgstr "Bcc:"
-
-#: composer/e-msg-composer-hdrs.c:394
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"Geef de adressen die een kopie van het bericht moeten krijgen zonder dat ze "
-"op de geadresseerden-lijst van het bericht verschijnen."
-
-#: composer/evolution-composer.c:355
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-"Aanmaken van het dialoogvenster voor het opstellen van een nieuw bericht is "
-"mislukt, want u heeft nog geen identiteitsgegevens geconfigureerd in het "
-"mail-component."
-
-#: composer/evolution-composer.c:370
-msgid "Cannot initialize Evolution's composer."
-msgstr "Kan de berichtenopsteller van Evolution niet initialiseren."
-
-#: data/evolution.desktop.in.h:2
-msgid "The Evolution groupware suite"
-msgstr "De Evolution werkgroep suite"
-
-#: data/evolution.keys.in.h:1
-msgid "address card"
-msgstr "adreskaart"
-
-#: data/evolution.keys.in.h:2
-msgid "calendar information"
-msgstr "kalenderinformatie"
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:69 e-util/e-time-utils.c:117
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:477
-#: widgets/misc/e-dateedit.c:1284 widgets/misc/e-dateedit.c:1465
-msgid "%m/%d/%Y"
-msgstr "%d-%m-%Y"
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:87 e-util/e-time-utils.c:198
-msgid "%I:%M:%S %p%n"
-msgstr "%I:%M:%S %p%n"
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:90 e-util/e-time-utils.c:201
-msgid "%H:%M:%S%n"
-msgstr "%H:%M:%S%n"
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:94 e-util/e-time-utils.c:205
-msgid "%I:%M %p%n"
-msgstr "%I:%M %p%n"
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:97 e-util/e-time-utils.c:208
-msgid "%H:%M%n"
-msgstr "%H:%M%n"
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:269
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:473
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2505
-msgid "%a %m/%d/%Y"
-msgstr "%a %d-%m-%Y"
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:274
-msgid "%a %m/%d/%Y %H:%M"
-msgstr "%a %d-%m-%Y %H:%M:%S"
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:283
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr "%a %d-%m-%Y %I:%M:%S %p"
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:312 widgets/misc/e-dateedit.c:1259
-#: widgets/misc/e-dateedit.c:1318 widgets/misc/e-dateedit.c:1497
-msgid "%H:%M"
-msgstr "%H:%M"
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:315
-msgid "%H:%M:%S"
-msgstr "%H:%M:%S%n"
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:320 widgets/misc/e-dateedit.c:1262
-#: widgets/misc/e-dateedit.c:1321 widgets/misc/e-dateedit.c:1500
-msgid "%I:%M %p"
-msgstr "%I:%M %p"
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:323
-msgid "%I:%M:%S %p"
-msgstr "%I:%M:%S %p%n"
-
-#: executive-summary/component/component-factory.c:152
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr "Kan het Samenvattingscomponent van Evolution niet initializeren"
-
-#: executive-summary/component/e-summary.c:924
-#, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"Kan HTML-bestand niet openen:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:938
-#, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr ""
-"Fout bij lezen gegevens:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:956
-msgid "File does not have a place for the services.\n"
-msgstr "Bestand heeft geen plaats voor de diensten.\n"
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-"U kunt een andere HTML-pagina kiezen voor de achtergrond van de "
-"Samenvatting. \n"
-"U kunt het leeg laten indien u de standaardwaarde wilt"
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr "Open %s met de standaard GNOME-applicatie"
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr "Open %s met de standaard GNOME- webbladeraar"
-
-#: executive-summary/component/e-summary-url.c:71
-#, c-format
-msgid "Send an email to %s"
-msgstr "Verstuur een bericht naar %s"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr "Verander de weergave in %s"
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr "Start %s"
-
-#: executive-summary/component/e-summary-url.c:75
-#, c-format
-msgid "Close %s"
-msgstr "Sluiten %s"
-
-#: executive-summary/component/e-summary-url.c:76
-#, c-format
-msgid "Move %s to the left"
-msgstr "Verplaats %s naar links"
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr "Verplaats %s naar rechts"
-
-#: executive-summary/component/e-summary-url.c:78
-#, c-format
-msgid "Move %s into the previous row"
-msgstr "Verplaats %s naar de vorige rij"
-
-#: executive-summary/component/e-summary-url.c:79
-#, c-format
-msgid "Move %s into the next row"
-msgstr "Verplaats %s naar de volgende rij"
-
-#: executive-summary/component/e-summary-url.c:80
-#, c-format
-msgid "Configure %s"
-msgstr "Configureer %s"
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr "Verschijningsvorm"
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr "Achtergrond:"
-
-#: executive-summary/component/main.c:62
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-"Samenvattingscomponent kon Bonobo niet initialiseren.\n"
-"Als er een waarschuwingsbericht was over de RootPOA, dan geeft dit\n"
-"waarschijnlijk aan dat u Bonobo gecompileerd hebt tegen GOAD in plaats van "
-"OAF."
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-msgid "Evolution component for the executive summary."
-msgstr "Evolution-component voor de samenvatting."
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-msgid "Factory for the Evolution executive summary component."
-msgstr "Fabriek voor het Evolution-samenvattingscomponent."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr "Fabriek voor de RDF-samenvatting."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-msgid "RDF Summary"
-msgstr "RDF-Samenvatting"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-msgid "Factory for the test bonobo component."
-msgstr "Fabriek voor het bonobo test-component."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-msgid "Factory for the test component."
-msgstr "Fabriek voor het Evolution kalender kanaal."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr "Test bonobodienst"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr "Test dienst"
-
-#: executive-summary/test-service/rdf-summary.c:512
-#: executive-summary/test-service/rdf-summary.c:549
-#: executive-summary/test-service/rdf-summary.c:594
-#: widgets/misc/e-messagebox.c:166
-msgid "Error"
-msgstr "Fout"
-
-#: executive-summary/test-service/rdf-summary.c:768
-msgid "Update automatically"
-msgstr "Actualiseer automatisch"
-
-#: executive-summary/test-service/rdf-summary.c:778
-msgid "Update now"
-msgstr "Actualiseer nu"
-
-#: executive-summary/test-service/rdf-summary.c:788
-msgid "Update every "
-msgstr "Actualiseer elke "
-
-#: executive-summary/test-service/rdf-summary.c:796
-#: filter/filter-datespec.c:83
-msgid "minutes"
-msgstr "minuten"
-
-#: filter/filter-datespec.c:78
-msgid "year"
-msgstr "jaar"
-
-#: filter/filter-datespec.c:78
-msgid "years"
-msgstr "jaren"
-
-#: filter/filter-datespec.c:79
-msgid "month"
-msgstr "maand"
-
-#: filter/filter-datespec.c:79
-msgid "months"
-msgstr "maanden"
-
-#: filter/filter-datespec.c:80
-msgid "week"
-msgstr "week"
-
-#: filter/filter-datespec.c:80
-msgid "weeks"
-msgstr "weken"
-
-#: filter/filter-datespec.c:81
-msgid "days"
-msgstr "dagen"
-
-#: filter/filter-datespec.c:82
-msgid "hour"
-msgstr "uur"
-
-#: filter/filter-datespec.c:82
-msgid "hours"
-msgstr "uren"
-
-#: filter/filter-datespec.c:83
-msgid "minute"
-msgstr "minuut"
-
-#: filter/filter-datespec.c:84
-msgid "second"
-msgstr "seconde"
-
-#: filter/filter-datespec.c:84
-msgid "seconds"
-msgstr "seconden"
-
-#: filter/filter-datespec.c:199
-msgid "Oops. You have forgotten to choose a date."
-msgstr "Oops. Je bent vergeten een datum te kiezen."
-
-#: filter/filter-datespec.c:201
-msgid "Oops. You have chosen an invalid date."
-msgstr "Oops. U hebt een ongeldige datum gekozen."
-
-#: filter/filter-datespec.c:276
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-"De datum van het bericht zal vergeleken worden met\n"
-"de tijd die het is op het moment dat de filter gestart\n"
-"wordt, of een vfolder wordt geopend."
-
-#: filter/filter-datespec.c:299
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-"De datum van het bericht zal vergeleken worden met\n"
-"de tijd die u hier invoert."
-
-#: filter/filter-datespec.c:339
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-"De datum van het bericht zal vergeleken worden met\n"
-"een tijd relatief aan het moment dat de filter wordt gestart;\n"
-"\"een week geleden\", bijvoorbeeld."
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:374
-msgid "the current time"
-msgstr "de huidige tijd"
-
-#: filter/filter-datespec.c:374
-msgid "a time you specify"
-msgstr "Een tijd die u specificeert"
-
-#: filter/filter-datespec.c:375
-msgid "a time relative to the current time"
-msgstr "Een tijd relatief aan de huidige tijd"
-
-#. The label
-#: filter/filter-datespec.c:433
-msgid "Compare against"
-msgstr "Vergelijk tegen"
-
-#: filter/filter-datespec.c:550 filter/filter-datespec.c:710
-msgid "now"
-msgstr "nu"
-
-#: filter/filter-datespec.c:707
-msgid "<click here to select a date>"
-msgstr "<klik hier om een datum te selecteren>"
-
-#: filter/filter-editor.c:132 filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr "Filterregels"
-
-#. and now for the action area
-#: filter/filter-filter.c:452
-msgid "Then"
-msgstr "Dan"
-
-#: filter/filter-filter.c:466
-msgid "Add action"
-msgstr "Actie Toevoegen"
-
-#: filter/filter-folder.c:147
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-"Oops, u bent vergeten een map te kiezen.\n"
-"Ga terug en specificeer een geldige map om mail in af te leveren."
-
-#: filter/filter-folder.c:225 filter/vfolder-rule.c:285
-#: mail/mail-account-gui.c:682
-msgid "Select Folder"
-msgstr "Selecteer Map"
-
-#: filter/filter-folder.c:250
-msgid "Enter folder URI"
-msgstr "Voer een Map-URI in"
-
-#: filter/filter-folder.c:296
-msgid "<click here to select a folder>"
-msgstr "<klik hier om een map te selecteren>"
-
-#: filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr "Filters Bewerken"
-
-#: filter/filter.glade.h:5
-msgid "Edit VFolders"
-msgstr "Bewerk VMappen"
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr "Inkomend"
-
-#: filter/filter.glade.h:8
-msgid "Outgoing"
-msgstr "Uitgaand"
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:130
-msgid "Virtual Folders"
-msgstr "Virtuele Mappen"
-
-#: filter/filter.glade.h:11
-msgid "specific folders only"
-msgstr "alleen specifieke mappen"
-
-#: filter/filter.glade.h:12
-msgid "vFolder Sources"
-msgstr "VMap-bronnen"
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr "met alle actieve niet-lokale mappen"
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr "met alle lokale en actieve niet-lokale mappen"
-
-#: filter/filter.glade.h:15
-msgid "with all local folders"
-msgstr "met alle lokale folders"
-
-#: filter/filter-input.c:193
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-"Fout in reguliere expressie '%s':\n"
-"%s"
-
-#: filter/filter-part.c:488
-msgid "Test"
-msgstr "Test"
-
-#: filter/filter-rule.c:626
-msgid "Rule name: "
-msgstr "Regel naam: "
-
-#: filter/filter-rule.c:630
-msgid "Untitled"
-msgstr "Geen Titel"
-
-#: filter/filter-rule.c:646
-msgid "If"
-msgstr "Als"
-
-#: filter/filter-rule.c:664
-msgid "Execute actions"
-msgstr "Acties uitvoeren"
-
-#: filter/filter-rule.c:668
-msgid "if all criteria are met"
-msgstr "als aan alle criteria wordt voldaan"
-
-#: filter/filter-rule.c:673
-msgid "if any criteria are met"
-msgstr "als aan een van de criteria wordt voldaan"
-
-#: filter/filter-rule.c:684
-msgid "Add criterion"
-msgstr "Criteria toevoegen"
-
-#: filter/filter-rule.c:770
-msgid "incoming"
-msgstr "inkomend"
-
-#: filter/filter-rule.c:770
-msgid "outgoing"
-msgstr "uitgaand"
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Colour"
-msgstr "Geef Kleur"
-
-#: filter/libfilter-i18n.h:4
-msgid "Assign Score"
-msgstr "Geef Score"
-
-#: filter/libfilter-i18n.h:5
-msgid "Attachments"
-msgstr "Bijlages"
-
-#: filter/libfilter-i18n.h:7
-msgid "contains"
-msgstr "bevat"
-
-#: filter/libfilter-i18n.h:8
-msgid "Copy to Folder"
-msgstr "Kopieer naar Map"
-
-#: filter/libfilter-i18n.h:9
-msgid "Date received"
-msgstr "Ontvangstdatum"
-
-#: filter/libfilter-i18n.h:10
-msgid "Date sent"
-msgstr "Verzendingsdatum"
-
-#: filter/libfilter-i18n.h:12
-msgid "Deleted"
-msgstr "Verwijderd"
-
-#: filter/libfilter-i18n.h:13
-msgid "does not contain"
-msgstr "bevat niet"
-
-#: filter/libfilter-i18n.h:14
-msgid "does not end with"
-msgstr "eindigt niet op"
-
-#: filter/libfilter-i18n.h:15
-msgid "does not exist"
-msgstr "bestaat niet"
-
-#: filter/libfilter-i18n.h:16
-msgid "does not sound like"
-msgstr "klinkt niet als"
-
-#: filter/libfilter-i18n.h:17
-msgid "does not start with"
-msgstr "begint niet met"
-
-#: filter/libfilter-i18n.h:18
-msgid "Do Not Exist"
-msgstr "bestaat niet"
-
-#: filter/libfilter-i18n.h:19
-msgid "Draft"
-msgstr "Klad"
-
-#: filter/libfilter-i18n.h:20
-msgid "ends with"
-msgstr "eindigt op"
-
-#: filter/libfilter-i18n.h:21
-msgid "Exist"
-msgstr "Bestaat"
-
-#: filter/libfilter-i18n.h:22
-msgid "exists"
-msgstr "bestaat"
-
-#: filter/libfilter-i18n.h:23
-msgid "Expression"
-msgstr "Expressie"
-
-#: filter/libfilter-i18n.h:24
-msgid "Forward to Address"
-msgstr "Doorsturen naar Adres"
-
-#: filter/libfilter-i18n.h:25
-msgid "Important"
-msgstr "Belangrijk"
-
-#: filter/libfilter-i18n.h:26
-msgid "is"
-msgstr "is"
-
-#: filter/libfilter-i18n.h:27
-msgid "is greater than"
-msgstr "is groter dan"
-
-#: filter/libfilter-i18n.h:28
-msgid "is less than"
-msgstr "is kleiner dan"
-
-#: filter/libfilter-i18n.h:29
-msgid "is not"
-msgstr "is niet"
-
-#: filter/libfilter-i18n.h:30
-msgid "Mailing list"
-msgstr "Mailinglijst"
-
-#: filter/libfilter-i18n.h:31
-msgid "Message Body"
-msgstr "Berichtinhoud"
-
-#: filter/libfilter-i18n.h:32
-msgid "Message Header"
-msgstr "Berichtkop"
-
-#: filter/libfilter-i18n.h:33
-msgid "Message was received"
-msgstr "Bericht werd ontvangen"
-
-#: filter/libfilter-i18n.h:34
-msgid "Message was sent"
-msgstr "Bericht werd verzonden"
-
-#: filter/libfilter-i18n.h:35
-msgid "Move to Folder"
-msgstr "Verplaats naar Map"
-
-#: filter/libfilter-i18n.h:36
-msgid "on or after"
-msgstr "op of na"
-
-#: filter/libfilter-i18n.h:37
-msgid "on or before"
-msgstr "op of voor"
-
-#: filter/libfilter-i18n.h:38
-msgid "Read"
-msgstr "Gelezen"
-
-#: filter/libfilter-i18n.h:39
-msgid "Recipients"
-msgstr "Geadresseerden"
-
-#: filter/libfilter-i18n.h:40
-msgid "Regex Match"
-msgstr "Overeenkomende Regex"
-
-#: filter/libfilter-i18n.h:41
-msgid "Replied to"
-msgstr "Beantwoord aan"
-
-#: filter/libfilter-i18n.h:42 filter/score-rule.c:204 filter/score-rule.c:206
-#: mail/message-list.c:1082
-msgid "Score"
-msgstr "Score"
-
-#: filter/libfilter-i18n.h:43
-msgid "Sender"
-msgstr "Afzender"
-
-#: filter/libfilter-i18n.h:44
-msgid "Set Status"
-msgstr "Stel Status in"
-
-#: filter/libfilter-i18n.h:45
-msgid "sounds like"
-msgstr "klinkt als"
-
-#: filter/libfilter-i18n.h:46
-#, fuzzy
-msgid "Source Account"
-msgstr "Account"
-
-#: filter/libfilter-i18n.h:47
-msgid "Specific header"
-msgstr "Specifieke kop"
-
-#: filter/libfilter-i18n.h:48
-msgid "starts with"
-msgstr "begint met"
-
-#: filter/libfilter-i18n.h:50
-msgid "Stop Processing"
-msgstr "Stop met Verwerken"
-
-#: filter/libfilter-i18n.h:51 mail/message-list.c:1083
-msgid "Subject"
-msgstr "Onderwerp"
-
-#: filter/libfilter-i18n.h:52
-msgid "was after"
-msgstr "was na"
-
-#: filter/libfilter-i18n.h:53
-msgid "was before"
-msgstr "was voor"
-
-#: filter/rule-editor.c:147
-#, fuzzy
-msgid "Rules"
-msgstr "Rol"
-
-#: filter/rule-editor.c:240
-msgid "Add Rule"
-msgstr "Regel Toevoegen"
-
-#: filter/rule-editor.c:299
-#, fuzzy
-msgid "Edit Rule"
-msgstr "Volledig bewerken"
-
-#: filter/score-editor.c:130
-msgid "Score Rules"
-msgstr "Bewerk Scoreregel"
-
-#: mail/component-factory.c:329
-msgid "Cannot initialize Evolution's mail component."
-msgstr "Kan het Evolution Mail-component niet initialiseren."
-
-#: mail/component-factory.c:402
-msgid "Cannot register storage with shell"
-msgstr "Kan opslag niet registreren met shell"
-
-#: mail/folder-browser.c:267
-msgid "Store search as vFolder"
-msgstr "Sla op als VMap"
-
-#: mail/folder-browser.c:575 ui/evolution-mail.xml.h:91
-msgid "VFolder on _Subject"
-msgstr "VMap op _Onderwerp"
-
-#: mail/folder-browser.c:578 ui/evolution-mail.xml.h:89
-msgid "VFolder on Se_nder"
-msgstr "VMap op Afze_nder"
-
-#: mail/folder-browser.c:581 ui/evolution-mail.xml.h:90
-msgid "VFolder on _Recipients"
-msgstr "VMap op _Geadresseerden"
-
-#: mail/folder-browser.c:584 ui/evolution-mail.xml.h:88
-#, fuzzy
-msgid "VFolder on Mailing _List"
-msgstr "VFolder op Mailinglijst"
-
-#: mail/folder-browser.c:590
-#, fuzzy
-msgid "Filter on Sub_ject"
-msgstr "Filter op Onderwerp"
-
-#: mail/folder-browser.c:593
-#, fuzzy
-msgid "Filter on Sen_der"
-msgstr "Filter op Afzender"
-
-#: mail/folder-browser.c:596
-#, fuzzy
-msgid "Filter on Re_cipients"
-msgstr "Filter op Geadresseerden"
-
-#: mail/folder-browser.c:599
-#, fuzzy
-msgid "Filter on _Mailing List"
-msgstr "Filter op Mailinglijst"
-
-#: mail/folder-browser.c:608
-msgid "_Open"
-msgstr "_Openen"
-
-#: mail/folder-browser.c:610
-#, fuzzy
-msgid "Resend"
-msgstr "seconde"
-
-#: mail/folder-browser.c:612 ui/evolution-calendar.xml.h:43
-#: ui/evolution-mail.xml.h:113 ui/evolution-tasks.xml.h:8
-msgid "_Save As..."
-msgstr "_Opslaan Als..."
-
-#: mail/folder-browser.c:614 ui/evolution-event-editor.xml.h:69
-#: ui/evolution-task-editor-dialog.xml.h:82 ui/evolution-tasks.xml.h:7
-msgid "_Print"
-msgstr "_Afdrukken"
-
-#: mail/folder-browser.c:619
-#, fuzzy
-msgid "_Reply to Sender"
-msgstr "Afzender beantwoorden"
-
-#: mail/folder-browser.c:621 ui/evolution-mail.xml.h:66
-msgid "Reply to _All"
-msgstr "Iedereen Be_antwoorden"
-
-#: mail/folder-browser.c:623 ui/evolution-mail.xml.h:102
-msgid "_Forward"
-msgstr "_Doorsturen"
-
-#: mail/folder-browser.c:625
-#, fuzzy
-msgid "Forward _inline"
-msgstr "Ingebonden doorsturen"
-
-#: mail/folder-browser.c:628 ui/evolution-mail.xml.h:40
-msgid "Mar_k as Read"
-msgstr "Markeer Als Gelezen"
-
-#: mail/folder-browser.c:630 ui/evolution-mail.xml.h:44
-msgid "Mark as U_nread"
-msgstr "Markeer Als Ongelezen"
-
-#: mail/folder-browser.c:635 ui/evolution-mail.xml.h:107
-msgid "_Move to Folder..."
-msgstr "_Verplaatsen naar Map..."
-
-#: mail/folder-browser.c:637 ui/evolution-mail.xml.h:96
-msgid "_Copy to Folder..."
-msgstr "_Kopiëren naar Map..."
-
-#: mail/folder-browser.c:641 ui/evolution-mail.xml.h:118
-msgid "_Undelete"
-msgstr "_Herstellen"
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:651 ui/evolution-mail.xml.h:1
-msgid "Apply Filters"
-msgstr "Filters Toepassen"
-
-#: mail/folder-browser.c:655
-#, fuzzy
-msgid "Create Ru_le From Message"
-msgstr "Maak Regel Van Bericht"
-
-#: mail/folder-browser.c:794
-msgid "Filter on Mailing List"
-msgstr "Filter op Mailinglijst"
-
-#: mail/folder-browser.c:795
-msgid "VFolder on Mailing List"
-msgstr "VFolder op Mailinglijst"
-
-#: mail/folder-browser.c:797
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr "Filter op Mailinglijst (%s)"
-
-#: mail/folder-browser.c:798
-#, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr "VMap op Mailinglijst (%s)"
-
-#: mail/folder-browser-factory.c:213
-#, c-format
-msgid "Properties for \"%s\""
-msgstr "Eigenschappen voor \"%s\""
-
-#: mail/folder-browser-factory.c:215 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-msgid "Properties"
-msgstr "Eigenschappen"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr "Evolution-component voor het afhandelen van post"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-msgid "Evolution mail composer."
-msgstr "Evolution bericht-opsteller."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-msgid "Evolution mail executive summary component."
-msgstr "Evolution post-samenvattingscomponent."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-msgid "Evolution mail folder display component."
-msgstr "Evolution postmap-weergavecomponent."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-msgid "Evolution mail folder factory component."
-msgstr "Evolution postmap-factorycomponent."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-msgid "Factory for the Evolution composer."
-msgstr "Fabriek voor de Evolution opsteller."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-msgid "Factory for the Evolution mail component."
-msgstr "Fabriek voor het Evolution post component."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-msgid "Factory for the Mail Summary component."
-msgstr "Fabriek voor het post-samenvattingscomponent."
-
-#: mail/importers/elm-importer.c:420
-msgid ""
-"Evolution has found Elm mail files.\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-
-#: mail/importers/elm-importer.c:430
-#, fuzzy
-msgid "Elm mail"
-msgstr "E-mail"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:1
-msgid "Factory to import mbox into Evolution"
-msgstr "Fabriek voor het importeren van mbox bestanden naar Evolution"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:2
-msgid "Imports mbox files into Evolution"
-msgstr "Importeert mbox bestanden naar Evolution"
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:1
-msgid "Factory to import Outlook Express 4 mails into Evolution"
-msgstr ""
-"Fabriek voor het importeren van Outlook Express 4 berichten naar Evolution"
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:2
-msgid "Imports Outlook Express 4 files into Evolution"
-msgstr "Importeert Outlook Express 4 bestanden naar Evolution"
-
-#: mail/importers/netscape-importer.c:440
-msgid ""
-"Evolution has found Netscape mail files.\n"
-"Would you like them to be imported into Evolution?"
-msgstr ""
-
-#: mail/importers/pine-importer.c:385
-msgid ""
-"Evolution has found Pine mail files.\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-
-#: mail/importers/pine-importer.c:395
-#, fuzzy
-msgid "Pine mail"
-msgstr "Primaire E-mail"
-
-#: mail/local-config.glade.h:1
-msgid "Current store format:"
-msgstr "Huidig opslagformaat:"
-
-#: mail/local-config.glade.h:2
-msgid "Mailbox Format"
-msgstr "Mailbox Formaat"
-
-#: mail/local-config.glade.h:3
-msgid "New store format:"
-msgstr "Nieuw opslagformaat:"
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-"Opmerking: Bij het converteren tussen mailbox formaten zal een fout,\n"
-"zoals te weinig diskruimte, wellicht niet automatisch herstelbaar zijn.\n"
-"Wees voorzichtig met het gebruiken van deze optie."
-
-#: mail/local-config.glade.h:7
-msgid "maildir"
-msgstr "maildir"
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr "mbox"
-
-#: mail/local-config.glade.h:9
-msgid "mh"
-msgstr "mh"
-
-#: mail/mail-account-editor.c:105
-msgid "You have not filled in all of the required information."
-msgstr ""
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:173
-msgid "Evolution Account Editor"
-msgstr "Evolution Accountbewerker"
-
-#: mail/mail-accounts.c:121 mail/mail-accounts.c:165
-msgid " (default)"
-msgstr " (standaard)"
-
-#: mail/mail-accounts.c:197
-#, fuzzy
-msgid "Disable"
-msgstr "Uitzetten."
-
-#: mail/mail-accounts.c:199 mail/mail-config.glade.h:25
-msgid "Enable"
-msgstr ""
-
-#: mail/mail-accounts.c:280 mail/mail-accounts.c:284
-msgid "Are you sure you want to delete this account?"
-msgstr "Weet u zeker dat u deze account wilt verwijderen?"
-
-#: mail/mail-accounts.c:418 mail/mail-accounts.c:422
-msgid "Are you sure you want to delete this news account?"
-msgstr "Weet u zeker dat u dit nieuws-account wilt verwijderen?"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:536
-msgid "Evolution Account Manager"
-msgstr "Evolution Accountbeheer"
-
-#: mail/mail-autofilter.c:70
-#, c-format
-msgid "Mail to %s"
-msgstr "Post versturen naar %s"
-
-#: mail/mail-autofilter.c:213
-#, c-format
-msgid "Subject is %s"
-msgstr "Onderwerp is %s"
-
-#: mail/mail-autofilter.c:229
-#, c-format
-msgid "Mail from %s"
-msgstr "Post ophalen van %s"
-
-#: mail/mail-autofilter.c:285
-#, c-format
-msgid "%s mailing list"
-msgstr "%s mailinglijst"
-
-#: mail/mail-autofilter.c:335 mail/mail-autofilter.c:356
-msgid "Add Filter Rule"
-msgstr "Filterregel Toevoegen"
-
-#: mail/mail-callbacks.c:96
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-"U hebt het e-mail nog niet geconfigureerd.\n"
-"Dit moet gebeuren voordat u e-mail kunt opstellen, versturen,\n"
-"of ontvangen.\n"
-"Wil u nu e-mail nu configureren?"
-
-#: mail/mail-callbacks.c:149
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-"U dient een identiteit te configuren\n"
-"voordat u post kunt versturen."
-
-#: mail/mail-callbacks.c:161
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-"U moet een post-transport configureren\n"
-"voordat u e-mail kunt versturen."
-
-#: mail/mail-callbacks.c:205
-msgid "You have not set a mail transport method"
-msgstr "Er is geen post-transportmethode ingesteld"
-
-#: mail/mail-callbacks.c:238
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-"Dit bericht heeft geen onderwerp.\n"
-"Weet u zeker dat u het wilt versturen?"
-
-#: mail/mail-callbacks.c:311
-msgid "You must specify recipients in order to send this message."
-msgstr ""
-"De geadresseerde moeten worden gespecificeerd om dit bericht te versturen."
-
-#: mail/mail-callbacks.c:354
-msgid "You must configure an account before you can send this email."
-msgstr "U moet een account configureren voordat u deze e-mail kunt versturen."
-
-#: mail/mail-callbacks.c:593
-#, fuzzy, c-format
-msgid "On %s, %s wrote:"
-msgstr "Op %s, %s schreef:\n"
-
-#: mail/mail-callbacks.c:774
-msgid "Forwarded message:\n"
-msgstr "Doorgestuurd bericht:\n"
-
-#: mail/mail-callbacks.c:877
-msgid "Move message(s) to"
-msgstr "Verplaats bericht(en) naar"
-
-#: mail/mail-callbacks.c:879
-msgid "Copy message(s) to"
-msgstr "Kopieer bericht(en) naar"
-
-#: mail/mail-callbacks.c:1156
-#, fuzzy, c-format
-msgid "Are you sure you want to edit all %d messages?"
-msgstr "Weet u zeker dat u de taak `%s' wilt verwijderen?"
-
-#: mail/mail-callbacks.c:1170
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-"U kunt alleen berichten bewerken die opgeslagen zijn\n"
-"in de Kladmap."
-
-#: mail/mail-callbacks.c:1202
-#, fuzzy
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-"U kunt alleen berichten bewerken die opgeslagen zijn\n"
-"in de Kladmap."
-
-#: mail/mail-callbacks.c:1224
-#, fuzzy
-msgid "No Message Selected"
-msgstr "Bericht werd ontvangen"
-
-#: mail/mail-callbacks.c:1250 mail/mail-display.c:90
-msgid "Overwrite file?"
-msgstr "Bestand overschrijven?"
-
-#: mail/mail-callbacks.c:1254 mail/mail-display.c:94
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-"Er bestaat al een bestand met die naam.\n"
-"Overschrijven?"
-
-#: mail/mail-callbacks.c:1298
-msgid "Save Message As..."
-msgstr "Bericht Opslaan Als..."
-
-#: mail/mail-callbacks.c:1300
-msgid "Save Messages As..."
-msgstr "Berichten Opslaan Als..."
-
-#: mail/mail-callbacks.c:1435
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-"Fout bij het laden van filterinformatie:\n"
-"%s"
-
-#: mail/mail-callbacks.c:1484 ui/evolution-mail.xml.h:56
-msgid "Print Message"
-msgstr "Bericht Afdrukken"
-
-#: mail/mail-callbacks.c:1531
-msgid "Printing of message failed"
-msgstr "Afdrukken van bericht mislukt"
-
-#: mail/mail-callbacks.c:1609
-#, fuzzy, c-format
-msgid "Are you sure you want to open all %d messages in separate windows?"
-msgstr "Weet u zeker dat u dit nieuws-account wilt verwijderen?"
-
-#: mail/mail-config.c:1121 mail/mail-config.c:1124
-#, fuzzy
-msgid "Connecting to server..."
-msgstr "Kon niet verbinden met POP server op %s."
-
-#: mail/mail-config-druid.c:99
-#, fuzzy
-msgid ""
-"Please enter your name and email address below. The \"optional\" fields "
-"below do not need to be filled in, unless you wish to include this "
-"information in email you send."
-msgstr ""
-"Voer je naam en e-mail adres beneden in. De &quot;optional&quot; velden "
-"beneden doen niet "
-
-#: mail/mail-config-druid.c:101
-#, fuzzy
-msgid ""
-"Please enter information about your incoming mail server below. If you don't "
-"know what kind of server you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"Voer informatie over je inkomende e-mail server in. Als je niet weet wat"
-
-#: mail/mail-config-druid.c:105
-#, fuzzy
-msgid ""
-"Please enter information about your outgoing mail protocol below. If you "
-"don't know which protocol you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"Voer informatie omtrent je uitgaand e-mail protocol beneden in. Als je niet "
-"weet "
-
-#: mail/mail-config-druid.c:107
-msgid ""
-"You are almost done with the mail configuration process. The identity, "
-"incoming mail server and outgoing mail transport method which you provided "
-"will be grouped together to make an Evolution mail account. Please enter a "
-"name for this account in the space below. This name will be used for display "
-"purposes only."
-msgstr ""
-
-#. set window title
-#: mail/mail-config-druid.c:445
-msgid "Evolution Account Wizard"
-msgstr "Evolution Accountwizard"
-
-#: mail/mail-config.glade.h:1
-#, fuzzy
-msgid " Check for supported types "
-msgstr "Detecteer ondersteunde types..."
-
-#: mail/mail-config.glade.h:2
-#, fuzzy
-msgid " color"
-msgstr "Kleuren"
-
-#: mail/mail-config.glade.h:3
-msgid "Account"
-msgstr "Account"
-
-#: mail/mail-config.glade.h:4
-msgid "Account Information"
-msgstr "Accountinformatie"
-
-#: mail/mail-config.glade.h:5
-msgid "Account Management"
-msgstr "Accountbeheer"
-
-#: mail/mail-config.glade.h:6
-#, fuzzy
-msgid "Accounts"
-msgstr "Account"
-
-#: mail/mail-config.glade.h:8
-msgid "Authentication"
-msgstr "Aanmelding"
-
-#: mail/mail-config.glade.h:9
-#, fuzzy
-msgid "Authentication Type: "
-msgstr "Aanmeldingstype:"
-
-#: mail/mail-config.glade.h:10
-#, fuzzy
-msgid "Automatically check for new mail every"
-msgstr "Automatisch controleren op nieuwe post elke"
-
-#: mail/mail-config.glade.h:12
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-"Gefeliciteerd, uw mailconfiguratie is voltooid.\n"
-"\n"
-"U kunt nu e-mails versturen en ontvangen\n"
-"gebruik makend van Evolution.\n"
-"\n"
-"Klik op \"Voltooien\" om uw instellingen op te slaan."
-
-#: mail/mail-config.glade.h:18
-msgid "De_fault"
-msgstr "Standaard"
-
-#: mail/mail-config.glade.h:20
-msgid "Done"
-msgstr "Klaar"
-
-#: mail/mail-config.glade.h:21
-#, fuzzy
-msgid "Drafts"
-msgstr "Klad"
-
-#: mail/mail-config.glade.h:22
-#, fuzzy
-msgid "Drafts folder:"
-msgstr "Bezig met aanmaken van nieuwe map"
-
-#: mail/mail-config.glade.h:24
-msgid "Email Address:"
-msgstr "E-mailadres:"
-
-#: mail/mail-config.glade.h:26
-msgid "Full Name:"
-msgstr "Volledige Naam:"
-
-#: mail/mail-config.glade.h:27
-#, fuzzy
-msgid "Highlight citations with "
-msgstr "Markeer items die vandaag verlopen"
-
-#: mail/mail-config.glade.h:29
-#, fuzzy
-msgid "IMAPv4 "
-msgstr "IMAPv4"
-
-#: mail/mail-config.glade.h:30
-msgid "Identity"
-msgstr "Identiteit"
-
-#: mail/mail-config.glade.h:31
-#, fuzzy
-msgid "Kerberos "
-msgstr "Kerberos 4"
-
-#: mail/mail-config.glade.h:32
-msgid "Mail Configuration"
-msgstr "Postconfiguratie"
-
-#: mail/mail-config.glade.h:33
-msgid "Make this my default account"
-msgstr "Stel dit in als standaardaccount"
-
-#: mail/mail-config.glade.h:34
-msgid "Mark messages as \"Read\" after:"
-msgstr "Markeer berichten als \"Gelezen\" na: "
-
-#: mail/mail-config.glade.h:36
-msgid "News"
-msgstr "Nieuws"
-
-#: mail/mail-config.glade.h:38
-#, fuzzy
-msgid "Optional Information"
-msgstr "Geen informatie"
-
-#: mail/mail-config.glade.h:39
-msgid "Organization:"
-msgstr "Organisatie:"
-
-#: mail/mail-config.glade.h:41
-msgid "PGP binary path:"
-msgstr "Locatie van PGP:"
-
-#: mail/mail-config.glade.h:46
-#, fuzzy
-msgid "Qmail maildir "
-msgstr "maildir"
-
-#: mail/mail-config.glade.h:47
-msgid "Receiving Email"
-msgstr "Berichten aan het ontvangen"
-
-#: mail/mail-config.glade.h:48
-#, fuzzy
-msgid "Receiving Mail"
-msgstr "Berichten aan het ontvangen"
-
-#: mail/mail-config.glade.h:49
-#, fuzzy
-msgid "Receiving Options"
-msgstr "Aan het ontvangen"
-
-#: mail/mail-config.glade.h:51
-#, fuzzy
-msgid "Required Information"
-msgstr "Gebruikersinformatie"
-
-#: mail/mail-config.glade.h:53
-msgid "Select PGP binary"
-msgstr "Selecteer lokatie PGP"
-
-#: mail/mail-config.glade.h:54
-msgid "Send mail in HTML format by default."
-msgstr "Stuur post standaard in HTML-formaat."
-
-#: mail/mail-config.glade.h:55
-msgid "Sending Email"
-msgstr "Berichten aan het versturen"
-
-#: mail/mail-config.glade.h:56
-msgid "Sending Mail"
-msgstr "Bezig met versturen Post"
-
-#: mail/mail-config.glade.h:58
-#, fuzzy
-msgid "Sent"
-msgstr "Gelezen"
-
-#: mail/mail-config.glade.h:59
-#, fuzzy
-msgid "Sent and Draft Messages"
-msgstr "Kalenderbericht"
-
-#: mail/mail-config.glade.h:60
-#, fuzzy
-msgid "Sent messages folder:"
-msgstr "Bezig met opslaan bericht in map"
-
-#: mail/mail-config.glade.h:61
-msgid "Server Configuration"
-msgstr "Serverconfiguratie"
-
-#: mail/mail-config.glade.h:62
-msgid "Server Type: "
-msgstr "Servertype: "
-
-#: mail/mail-config.glade.h:63
-msgid "Server requires authentication"
-msgstr "Server vereist aanmelding"
-
-#: mail/mail-config.glade.h:64
-msgid "Signature file:"
-msgstr "Handtekeningbestand:"
-
-#: mail/mail-config.glade.h:65
-msgid "Sources"
-msgstr "Bronnen"
-
-#: mail/mail-config.glade.h:66
-#, fuzzy
-msgid "Special Folders"
-msgstr "Virtuele Mappen"
-
-#: mail/mail-config.glade.h:67
-#, fuzzy
-msgid "Standard Unix mbox"
-msgstr "Standaard Unix mailboxbestand"
-
-#: mail/mail-config.glade.h:68
-msgid "Type"
-msgstr "Type"
-
-#: mail/mail-config.glade.h:69
-#, fuzzy
-msgid "Use secure connection (SSL)"
-msgstr "Deze server vereist een beveiligde verbinding (SSL)"
-
-#: mail/mail-config.glade.h:70
-msgid "Username:"
-msgstr "Gebruikersnaam:"
-
-#: mail/mail-config.glade.h:71
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-"Welkom bij de Evolution Postconfiguratie-Druïde.\n"
-"\n"
-"Klik op \"Volgende\" om te beginnen."
-
-#: mail/mail-config.glade.h:76 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:43 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:30
-msgid "_Edit"
-msgstr "B_ewerken..."
-
-#: mail/mail-display.c:194
-msgid "Save Attachment"
-msgstr "Bijlage Opslaan"
-
-#: mail/mail-display.c:234
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr "Kon tijdelijke directory niet maken: %s"
-
-#: mail/mail-display.c:295
-msgid "Save to Disk..."
-msgstr "Opslaan op Schijf..."
-
-#: mail/mail-display.c:297
-#, c-format
-msgid "Open in %s..."
-msgstr "Openen in %s..."
-
-#: mail/mail-display.c:299
-msgid "View Inline"
-msgstr "Geef Ingebonden Weer"
-
-#: mail/mail-display.c:334
-msgid "External Viewer"
-msgstr "Extern Weergave Programma"
-
-#: mail/mail-display.c:357
-#, c-format
-msgid "View Inline (via %s)"
-msgstr "Geef Ingebonden Weer (via %s)"
-
-#: mail/mail-display.c:361
-msgid "Hide"
-msgstr "Verbergen"
-
-#: mail/mail-display.c:1107
-#, fuzzy
-msgid "Open link in browser"
-msgstr "Open in Nieuw Venster"
-
-#: mail/mail-display.c:1109
-#, fuzzy
-msgid "Save as (FIXME)"
-msgstr "_Taak (FIXME)"
-
-#: mail/mail-display.c:1111
-#, fuzzy
-msgid "Copy location (FIXME)"
-msgstr "_Contact (FIXME)"
-
-#: mail/mail-format.c:522
-#, c-format
-msgid "%s attachment"
-msgstr "%s bijlage"
-
-#: mail/mail-format.c:564
-#, fuzzy
-msgid "Could not parse MIME message. Displaying as source."
-msgstr "Kon map niet openen: berichtenlijst was onvolledig."
-
-#: mail/mail-format.c:771
-msgid "Loading message content"
-msgstr "Bezig met laden berichtinhoud"
-
-#: mail/mail-format.c:1078
-#, fuzzy
-msgid "No GPG/PGP program configured."
-msgstr "Geen GPG/PGP programma beschikbaar."
-
-#: mail/mail-format.c:1093
-msgid "Encrypted message not displayed"
-msgstr "Versleutelde berichten worden niet weergegeven"
-
-#: mail/mail-format.c:1099
-msgid "Encrypted message"
-msgstr "Versleuteld bericht"
-
-#: mail/mail-format.c:1100
-msgid "Click icon to decrypt."
-msgstr "Klik op het pictogram om te ontsleutelen."
-
-#: mail/mail-format.c:1190 mail/mail-format.c:1578
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr "Dit bericht is digitaal ondertekend en is authentiek."
-
-#: mail/mail-format.c:1198 mail/mail-format.c:1586
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr ""
-"Dit bericht is digitaal ondertekend, maar er kan niet worden aangetoond dat "
-"het authentiek is."
-
-#: mail/mail-format.c:1799
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr "Verwijzing naar FTP site (%s)"
-
-#: mail/mail-format.c:1811
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr "Verwijzing naar lokaal bestand (%s) geldig bij site \"%s\""
-
-#: mail/mail-format.c:1815
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr "Verwijzing naar lokaal bestand (%s)"
-
-#: mail/mail-format.c:1849
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr "Verwijzing naar onbekende externe gegevens (\"%s\" type)"
-
-#: mail/mail-format.c:1854
-msgid "Malformed external-body part."
-msgstr "Misvormd extern-berichtgedeelte"
-
-#: mail/mail-local.c:337
-#, c-format
-msgid "No such folder %s"
-msgstr "Map `%s' bestaat niet."
-
-#: mail/mail-local.c:509
-#, c-format
-msgid "Opening '%s'"
-msgstr "Bezig met openen '%s'"
-
-#: mail/mail-local.c:787
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr "Bezig met veranderen mapformaat van \"%s\" naar \"%s\""
-
-#: mail/mail-local.c:791
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr "Verander map van \"%s\" naar \"%s\" formaat"
-
-#: mail/mail-local.c:814
-msgid "Reconfiguring folder"
-msgstr "Map wordt geherconfigureerd"
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:843
-msgid "Closing current folder"
-msgstr "Huidige map wordt gesloten"
-
-#: mail/mail-local.c:875
-msgid "Renaming old folder and opening"
-msgstr "Naam oude map wordt gewijzigd en map geopend"
-
-#: mail/mail-local.c:893
-msgid "Creating new folder"
-msgstr "Bezig met aanmaken van nieuwe map"
-
-#: mail/mail-local.c:907
-msgid "Copying messages"
-msgstr "Bezig met het kopiëren van berichten"
-
-#: mail/mail-local.c:924
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-"Kan map-metainfo niet opslaan: deze map kan waarschijnlijk niet\n"
-"meer worden geopend: %s"
-
-#: mail/mail-local.c:963
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-"Als deze map niet meer kan worden geopend, dan is\n"
-"het wellicht noodzakelijk om deze handmatig te repareren."
-
-#: mail/mail-mt.c:190
-#, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-"Fout tijdens '%s':\n"
-"%s"
-
-#: mail/mail-mt.c:193
-#, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-"Fout tijden het uitvoeren van bewerking:\n"
-"%s"
-
-#: mail/mail-mt.c:516 mail/mail-mt.c:545 mail/mail-mt.c:880
-msgid "Working"
-msgstr "Bezig"
-
-#: mail/mail-mt.c:862
-msgid "Evolution progress"
-msgstr "Evolution voortgang"
-
-#: mail/mail-ops.c:599
-#, c-format
-msgid "Sending \"%s\""
-msgstr "Bezig met verzenden \"%s\""
-
-#: mail/mail-ops.c:603
-msgid "Sending message"
-msgstr "Bezig met versturen bericht"
-
-#: mail/mail-ops.c:718
-#, fuzzy, c-format
-msgid "Sending message %d of %d"
-msgstr "Bezig met wegschrijven bericht %d van %d"
-
-#: mail/mail-ops.c:737
-#, fuzzy, c-format
-msgid "Failed on message %d of %d"
-msgstr "Bezig met markeren bericht %d van %d"
-
-#: mail/mail-ops.c:739 mail/mail-send-recv.c:475
-msgid "Complete."
-msgstr "Voltooid."
-
-#: mail/mail-ops.c:825
-msgid "Saving message to folder"
-msgstr "Bezig met opslaan bericht in map"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Moving messages to %s"
-msgstr "Bezig met verplaatsen van berichten naar %s"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Copying messages to %s"
-msgstr "Bezig met het kopiëren van berichten naar %s"
-
-#: mail/mail-ops.c:914
-msgid "Moving"
-msgstr "Bezig met verplaatsen"
-
-#: mail/mail-ops.c:917
-msgid "Copying"
-msgstr "Bezig met kopiëren"
-
-#: mail/mail-ops.c:992
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr "Bezig met scannen van mappen in \"%s\""
-
-#: mail/mail-ops.c:1152
-msgid "Forwarded messages"
-msgstr "Doorgestuurde berichten"
-
-#: mail/mail-ops.c:1193 mail/mail-ops.c:1331
-#, c-format
-msgid "Opening folder %s"
-msgstr "Bezig met openen map %s"
-
-#: mail/mail-ops.c:1260
-#, c-format
-msgid "Opening store %s"
-msgstr "Bezig met openen van opslag %s"
-
-#: mail/mail-ops.c:1447
-msgid "Expunging folder"
-msgstr "Bezig met legen map"
-
-#: mail/mail-ops.c:1496
-#, c-format
-msgid "Retrieving message %s"
-msgstr "Bezig met ophalen bericht %s"
-
-#: mail/mail-ops.c:1563
-msgid "Retrieving messages"
-msgstr "Bezig met ophalen berichten"
-
-#: mail/mail-ops.c:1573
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr "Bezig met ophalen bericht %d van %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1647
-msgid "Saving messages"
-msgstr "Bezig met het opslaan van berichten"
-
-#: mail/mail-ops.c:1726
-#, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr ""
-"Kon uitvoerbestand niet maken: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1739
-#, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr "Bezig met opslaan bericht %d van %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1753
-#, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr ""
-"Fout bij opslaan berichten in: %s:\n"
-" %s"
-
-#: mail/mail-ops.c:1827
-msgid "Saving attachment"
-msgstr "Bezig met opslaan bijlage"
-
-#: mail/mail-ops.c:1842
-#, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr ""
-"Kan uitvoerbestand niet maken: %s:\n"
-" %s"
-
-#: mail/mail-ops.c:1870
-#, c-format
-msgid "Could not write data: %s"
-msgstr "Kon gegevens niet wegschrijven: %s"
-
-#: mail/mail-search-dialogue.c:113
-msgid "_Search"
-msgstr "_Zoeken"
-
-#: mail/mail-send-recv.c:138
-msgid "Cancelling ..."
-msgstr "Bezig met annuleren ..."
-
-#: mail/mail-send-recv.c:233
-msgid "Send & Receive mail"
-msgstr "Versturen en ontvangen van berichten"
-
-#: mail/mail-send-recv.c:236
-msgid "Receiving"
-msgstr "Aan het ontvangen"
-
-#: mail/mail-send-recv.c:285
-msgid "Updating ..."
-msgstr "Aan het Actualiseren ..."
-
-#: mail/mail-send-recv.c:287 mail/mail-send-recv.c:333
-msgid "Waiting ..."
-msgstr "Aan het Wachten ..."
-
-#: mail/mail-send-recv.c:306
-msgid "Sending"
-msgstr "Aan het Verzenden"
-
-#: mail/mail-send-recv.c:471
-msgid "Cancelled."
-msgstr "Geannuleerd."
-
-#: mail/mail-summary.c:110
-msgid "Incomplete message written on pipe!"
-msgstr "Onafgemaakt bericht naar pijp geschreven!"
-
-#: mail/mail-summary.c:468
-#, fuzzy
-msgid "Mail Summary"
-msgstr "Samenvatting"
-
-#: mail/mail-tools.c:141
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr "Kon tijdelijke mbox `%s' niet maken: %s"
-
-#: mail/mail-tools.c:188
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr "[%s] (doorgestuurd bericht)"
-
-#: mail/mail-tools.c:198
-msgid "Fwd: (no subject)"
-msgstr "Fwd: (geen onderwerp)"
-
-#: mail/mail-tools.c:215
-#, c-format
-msgid "Forwarded message - %s"
-msgstr "Doorgestuurd bericht - %s"
-
-#: mail/mail-tools.c:217
-msgid "Forwarded message (no subject)"
-msgstr "Doorgestuurd bericht (geen onderwerp)"
-
-#: mail/mail-tools.c:415
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-msgstr ""
-"-----Doorgestuurd Bericht-----<br><b>Van:</b> %s<br><b>Aan:</b> "
-"%s<br><b>Onderwerp:</b> %s<br>"
-
-#: mail/mail-vfolder.c:249
-msgid "VFolders"
-msgstr "VMappen"
-
-#: mail/mail-vfolder.c:426
-msgid "New VFolder"
-msgstr "Nieuwe VMap"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/message-browser.c:189 ui/evolution-mail.xml.h:64
-msgid "Reply"
-msgstr "Beantwoorden"
-
-#: mail/message-browser.c:189 ui/evolution-mail.xml.h:70
-msgid "Reply to the sender of this message"
-msgstr "Beantwoord dit bericht"
-
-#: mail/message-browser.c:192 ui/evolution-mail.xml.h:65
-msgid "Reply to All"
-msgstr "Iedereen beantwoorden"
-
-#: mail/message-browser.c:192 ui/evolution-mail.xml.h:68
-msgid "Reply to all recipients of this message"
-msgstr "Stuur antwoord naar alle geadresseerden van dit bericht"
-
-#: mail/message-browser.c:195 ui/evolution-mail.xml.h:25
-msgid "Forward"
-msgstr "Doorsturen"
-
-#: mail/message-browser.c:195 ui/evolution-mail.xml.h:29
-msgid "Forward this message"
-msgstr "Dit bericht doorsturen"
-
-#: mail/message-browser.c:200 ui/evolution-mail.xml.h:61
-msgid "Print the selected message"
-msgstr "Druk dit bericht af"
-
-#: mail/message-browser.c:203 ui/evolution-mail.xml.h:13
-msgid "Delete this message"
-msgstr "Verwijder dit bericht"
-
-#: mail/message-browser.c:208 ui/evolution-event-editor.xml.h:33
-#: ui/evolution-mail.xml.h:54 ui/evolution-task-editor-dialog.xml.h:36
-msgid "Previous"
-msgstr "Vorige"
-
-#: mail/message-browser.c:208
-#, fuzzy
-msgid "Previous message"
-msgstr "Bericht Afdrukken"
-
-#: mail/message-browser.c:211 ui/evolution-calendar.xml.h:18
-#: ui/evolution-event-editor.xml.h:29 ui/evolution-mail.xml.h:50
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "Next"
-msgstr "Volgende"
-
-#: mail/message-browser.c:211
-#, fuzzy
-msgid "Next message"
-msgstr "Helpbericht"
-
-#: mail/message-list.c:678
-msgid "Unseen"
-msgstr "Ongelezen"
-
-#: mail/message-list.c:679
-msgid "Seen"
-msgstr "Gelezen"
-
-#: mail/message-list.c:680
-msgid "Answered"
-msgstr "Beantwoord"
-
-#: mail/message-list.c:681
-msgid "Multiple Unseen Messages"
-msgstr "Meerdere Ongelezen Berichten"
-
-#: mail/message-list.c:682
-msgid "Multiple Messages"
-msgstr "Meerdere Berichten"
-
-#: mail/message-list.c:686
-#, fuzzy
-msgid "Lowest"
-msgstr "Laag"
-
-#: mail/message-list.c:687
-#, fuzzy
-msgid "Lower"
-msgstr "Laag"
-
-#: mail/message-list.c:691
-#, fuzzy
-msgid "Higher"
-msgstr "Hoog"
-
-#: mail/message-list.c:692
-#, fuzzy
-msgid "Highest"
-msgstr "Hoog"
-
-#: mail/message-list.c:942
-msgid "?"
-msgstr "?"
-
-#: mail/message-list.c:949
-msgid "Today %l:%M %p"
-msgstr "Vandaag %l:%M %p"
-
-#: mail/message-list.c:958
-msgid "Yesterday %l:%M %p"
-msgstr "Gisteren %l:%M %p"
-
-#: mail/message-list.c:970
-msgid "%a %l:%M %p"
-msgstr "%a %l:%M %p"
-
-#: mail/message-list.c:978
-msgid "%b %d %l:%M %p"
-msgstr "%b %d %l:%M %p"
-
-#: mail/message-list.c:980
-msgid "%b %d %Y"
-msgstr "%b %d %Y"
-
-#: mail/message-list.c:1082
-msgid "Flagged"
-msgstr "Gevlagd"
-
-#: mail/message-list.c:1083
-msgid "From"
-msgstr "Van"
-
-#: mail/message-list.c:1083
-msgid "Date"
-msgstr "Datum"
-
-#: mail/message-list.c:1083
-msgid "Received"
-msgstr "Ontvangen"
-
-#: mail/message-list.c:1084
-msgid "To"
-msgstr "Aan"
-
-#: mail/message-list.c:1084
-msgid "Size"
-msgstr "Grootte"
-
-#: mail/mail-session.c:161
-#, fuzzy
-msgid "User canceled operation."
-msgstr "Gebruiker heeft vraag afgebroken."
-
-#: mail/subscribe-dialog.c:76 shell/e-storage-set-view.c:47
-msgid "Folder"
-msgstr "Map"
-
-#: mail/subscribe-dialog.c:77
-msgid "Store"
-msgstr "Opslag"
-
-#: mail/subscribe-dialog.c:138
-msgid "Display folders starting with:"
-msgstr "Geef mappen weer die beginnen met:"
-
-#: mail/subscribe-dialog.c:168
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr "Bezig met verkrijgen opslag voor \"%s\""
-
-#: mail/subscribe-dialog.c:271
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr "Bezig met aanmelden bij map \"%s\""
-
-#: mail/subscribe-dialog.c:273
-#, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr "Bezig met afmelden van map \"%s\""
-
-#. Construct the app
-#: mail/subscribe-dialog.c:873
-#, fuzzy
-msgid "Manage Subscriptions"
-msgstr "Beheer Postbusabonnementen..."
-
-#: shell/e-setup.c:118 shell/e-setup.c:191
-msgid "Evolution installation"
-msgstr "Evolution-installatie"
-
-#: shell/e-setup.c:122
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-"Deze nieuwe versie van Evolution moet enkele extra bestanden installeren\n"
-"in uw persoonlijke Evolution-directory"
-
-#: shell/e-setup.c:123
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr ""
-"Klik op \"OK\" om de bestanden te installeren, of \"Annuleren\" om af te "
-"breken."
-
-#: shell/e-setup.c:163
-msgid "Could not update files correctly"
-msgstr "Kon bestanden niet correct actualiseren"
-
-#: shell/e-setup.c:166 shell/e-setup.c:234
-msgid "Evolution files successfully installed."
-msgstr "Evolution bestanden succesvol geïnstalleerd."
-
-#: shell/e-setup.c:195
-msgid "This seems to be the first time you are running Evolution."
-msgstr "Het lijkt erop dat dit de eerste keer is dat u Evolution start."
-
-#: shell/e-setup.c:196
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr "Klik op \"OK\" om de Evolution-bestanden te installeren in"
-
-#: shell/e-setup.c:215
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"Kon de directory niet aanmaken\n"
-"%s\n"
-"Fout: %s"
-
-#: shell/e-setup.c:230
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-"Kan de bestanden niet kopiëren naar\n"
-"`%s'."
-
-#: shell/e-setup.c:255
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-"Het bestand `%s' is geen directory.\n"
-"Verplaats het om de installatie van de Evolution\n"
-"bestanden af te maken."
-
-#: shell/e-setup.c:267
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-"Het bestand `%s' is geen directory.\n"
-"Verplaats het om de installatie van de Evolution\n"
-"bestanden af te maken."
-
-#: shell/e-shell.c:379
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr "Kan de lokale opslag niet opzetten -- %s"
-
-#: shell/e-shell.c:1249
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-"Oops! De weergave voor `%s' is onverwacht gestopt. :-(\n"
-"Dit betekent waarschijnlijk dat het %s component is gecrasht"
-
-#: shell/e-shell-folder-creation-dialog.c:99
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-"Kan de gespecificeerde map niet aanmaken:\n"
-"%s"
-
-#: shell/e-shell-folder-creation-dialog.c:156
-msgid "The specified folder name is not valid."
-msgstr "De opgegeven mapnaam is niet geldig."
-
-#: shell/e-shell-folder-creation-dialog.c:263
-msgid "Evolution - Create new folder"
-msgstr "Evolution - Nieuwe map maken"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-"Het type van de geselecteerde map is niet geldig\n"
-"voor de opdracht."
-
-#: shell/e-shell-folder-selection-dialog.c:321
-msgid "New..."
-msgstr "Nieuw..."
-
-#: shell/e-shell-folder-title-bar.c:459 shell/e-shell-folder-title-bar.c:460
-msgid "(Untitled)"
-msgstr "(Naamloos)"
-
-#: shell/e-shell-view.c:148
-msgid "(No folder displayed)"
-msgstr "(Geen map weergegeven)"
-
-#: shell/e-shell-view.c:1184
-#, c-format
-msgid "%s - Evolution %s"
-msgstr "%s - Evolution %s"
-
-#: shell/e-shell-view.c:1186
-#, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "%s - Evolution %s [%s]"
-
-#: shell/e-shell-view-menu.c:173
-msgid "Bug buddy was not found in your $PATH."
-msgstr "Bug-buddy kon niet worden gevonden in het $PATH."
-
-#: shell/e-shell-view-menu.c:179
-msgid "Bug buddy could not be run."
-msgstr "Bug-buddy kon niet worden gestart."
-
-#: shell/e-shell-view-menu.c:208
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Copyright 1999, 2000, 2001 Ximian, Inc."
-
-#: shell/e-shell-view-menu.c:210
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-"Evolution is een een verzameling van groupware\n"
-"programma's voor post, planning en contactbeheer\n"
-"in de GNOME werkomgeving."
-
-#: shell/e-shell-view-menu.c:374
-msgid "Go to folder..."
-msgstr "Ga naar map..."
-
-#: shell/e-shortcuts.c:381
-msgid "Error saving shortcuts."
-msgstr "Fout bij opslaan van snelkoppelingen."
-
-#: shell/e-shortcuts-view.c:134
-msgid "Create new shortcut group"
-msgstr "Nieuwe snelkoppelingsgroep aanmaken"
-
-#: shell/e-shortcuts-view.c:137
-msgid "Group name:"
-msgstr "Groep:"
-
-#: shell/e-shortcuts-view.c:260
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-"Wil u echt de groep `%s' verwijderen\n"
-"van de snelkoppelingsbalk?"
-
-#: shell/e-shortcuts-view.c:265
-msgid "Don't remove"
-msgstr "Niet verwijderen"
-
-#: shell/e-shortcuts-view.c:276
-msgid "_Small Icons"
-msgstr "_Kleine Pictogrammen"
-
-#: shell/e-shortcuts-view.c:277
-msgid "Show the shortcuts as small icons"
-msgstr "Toont de snelkoppelingen als kleine pictogrammen"
-
-#: shell/e-shortcuts-view.c:279
-msgid "_Large Icons"
-msgstr "_Grote Pictogrammen"
-
-#: shell/e-shortcuts-view.c:280
-msgid "Show the shortcuts as large icons"
-msgstr "Toont de snelkoppelingen als grote pictogrammen"
-
-#: shell/e-shortcuts-view.c:291
-msgid "_New Group..."
-msgstr "_Nieuwe Groep..."
-
-#: shell/e-shortcuts-view.c:292
-msgid "Create a new shortcut group"
-msgstr "Maakt een nieuwe snelkoppelingsgroep aan"
-
-#: shell/e-shortcuts-view.c:294
-msgid "_Remove This Group..."
-msgstr "Deze Groep _Verwijderen..."
-
-#: shell/e-shortcuts-view.c:295
-msgid "Remove this shortcut group"
-msgstr "Verwijder deze snelkoppelingsgroep"
-
-#: shell/e-shortcuts-view.c:300
-msgid "_Hide the Shortcut Bar"
-msgstr "_Verberg de Snelkoppelingsbalk"
-
-#: shell/e-shortcuts-view.c:301
-msgid "Hide the shortcut bar"
-msgstr "Verberg de snelkoppelingenbalk"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate"
-msgstr "Activeren"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate this shortcut"
-msgstr "Activeer deze snelkoppeling"
-
-#: shell/e-shortcuts-view.c:388
-msgid "Remove this shortcut from the shortcut bar"
-msgstr "Verwijder deze snelkoppeling van de snelkoppelingenbalk"
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr "(Geen naam)"
-
-#: shell/e-storage.c:459
-msgid "No error"
-msgstr "Geen fout"
-
-#: shell/e-storage.c:461
-msgid "Generic error"
-msgstr "Generieke fout"
-
-#: shell/e-storage.c:463
-msgid "A folder with the same name already exists"
-msgstr "Een folder met die naam bestaat reeds"
-
-#: shell/e-storage.c:465
-msgid "The specified folder type is not valid"
-msgstr "Het gespecificeerde foldertype is niet geldig"
-
-#: shell/e-storage.c:467
-msgid "I/O error"
-msgstr "I/O fout"
-
-#: shell/e-storage.c:469
-msgid "Not enough space to create the folder"
-msgstr "Niet genoeg ruimte vrij om de folder te maken"
-
-#: shell/e-storage.c:471
-msgid "The specified folder was not found"
-msgstr "De opgegeven folder is niet gevonden"
-
-#: shell/e-storage.c:473
-msgid "Function not implemented in this storage"
-msgstr "Functie niet geïmplementeerd voor deze opslag"
-
-#: shell/e-storage.c:475
-msgid "Permission denied"
-msgstr "Operatie niet toegestaan"
-
-#: shell/e-storage.c:477
-msgid "Operation not supported"
-msgstr "Operatie niet ondersteund"
-
-#: shell/e-storage.c:479
-msgid "The specified type is not supported in this storage"
-msgstr "Het gespecificeerde type word niet ondersteund door deze opslag"
-
-#: shell/e-storage-set-view.c:650 ui/evolution-event-editor.xml.h:76
-#: ui/evolution-message-composer.xml.h:53
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:44
-msgid "_View"
-msgstr "Weerga_ve"
-
-#: shell/e-storage-set-view.c:650
-msgid "View the selected folder"
-msgstr "Toon de geselecteerde map"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-msgid "Folder name:"
-msgstr "Mapnaam:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-msgid "Folder type:"
-msgstr "Maptype:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-msgid "Specify where to create the folder:"
-msgstr "Specificeer waar de map gemaakt moet worden:"
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-msgid "The Evolution shell."
-msgstr "De Evolution schil."
-
-#: shell/importer/importer.c:87
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-"Kies het bestand dat u wilt importeren in Evolution, en kies het "
-"bijbehorende bestandstype uit de lijst.\n"
-"\n"
-"U kunt \"Automatisch\" kiezen als u het niet weet; Evolution probeert het "
-"dan voor u uit te zoeken."
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/importer/importer.c:182
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-"Importeren %s\n"
-"Importeerfunctie niet klaar.\n"
-"Wacht 5 seconden en probeer het opnieuw."
-
-#: shell/importer/importer.c:202 shell/importer/importer.c:233
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-"Importeren %s\n"
-"Bezig met importeren item %d."
-
-#: shell/importer/importer.c:341
-#, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr ""
-"Er is geen importeerfunctie die het volgende kan afhandelen\n"
-"%s"
-
-#: shell/importer/importer.c:351
-msgid "Importing"
-msgstr "Bezig met importeren"
-
-#: shell/importer/importer.c:359
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-"Importeren %s.\n"
-"Beginnen %s"
-
-#: shell/importer/importer.c:372
-#, fuzzy, c-format
-msgid "Error starting %s"
-msgstr "Fout bij laden %s"
-
-#: shell/importer/importer.c:387
-#, c-format
-msgid "Error loading %s"
-msgstr "Fout bij laden %s"
-
-#: shell/importer/importer.c:402
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-"Importeren %s\n"
-"Bezig met importeren item 1."
-
-#: shell/importer/importer.c:473
-msgid "Automatic"
-msgstr "Automatisch"
-
-#: shell/importer/importer.c:523
-msgid "Filename:"
-msgstr "Bestandsnaam:"
-
-#: shell/importer/import.glade.h:5 shell/importer/importer.c:528
-msgid "Select a file"
-msgstr "Selecteer een bestand"
-
-#: shell/importer/importer.c:538
-msgid "File type:"
-msgstr "Bestandstype:"
-
-#: shell/importer/import.glade.h:4 shell/importer/importer.c:619
-msgid "Import"
-msgstr "Importeer"
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr ""
-"Klik op \"Importeren\" om te beginnen met het importeren van het bestand in "
-"Evolution."
-
-#: shell/importer/import.glade.h:2
-msgid "Evolution Import Utility"
-msgstr "Evolution Import"
-
-#: shell/importer/import.glade.h:3
-msgid "Evolution Importer Utility"
-msgstr "Evolution Import"
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-"Welkom bij Evolution Import.\n"
-"Deze wizard helpt u bij het importeren\n"
-"van externe bestanden in Evolution."
-
-#: shell/importer/intelligent.c:143
-#, fuzzy
-msgid "Don't ask me again"
-msgstr "Dit bericht niet meer weergeven."
-
-#: shell/main.c:82
-#, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-"Hallo. Bedankt voor de moeite voor het downloaden van deze VOORUITBLIK\n"
-"op de Evolution werkgroep suite.\n"
-"\n"
-"Evolution is nog niet voltooid. Het komt in de buurt, maar er zijn\n"
-"plekken waar dingen ontbreken of slechts half werken. Als u niet kunt\n"
-"uitvinden hoe iets voor elkaar te krijgen, dan komt dat waarschijnlijk\n"
-"omdat het nog niet mogelijk is! ;-)\n"
-"We hopen dat Evolution bruikbaar is voor u, maar we moeten u nog steeds\n"
-"waarschuwen dat 'ie kan: crashen, uw mail kwijtraken, processen achterlaten, "
-"\n"
-"100% van uw CPU gebruiken, niet-gestandaardiseerde commando's versturen naar "
-"\n"
-"uw servers, en in het algemeen u belachelijk maken bij vrienden en "
-"collega's.\n"
-"Gebruik alleen zoals aangegeven\n"
-"\n"
-"We hopen dat u de vruchten van ons harde werk waardeert, en we wachten met\n"
-"smart op uw bijdragen!\n"
-
-#: shell/main.c:107
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-"Bedankt\n"
-"Het Evolution-Team\n"
-
-#: shell/main.c:138
-msgid "Cannot initialize the Evolution shell."
-msgstr "Kan de Evolution-schil niet initialiseren."
-
-#: shell/main.c:184
-msgid "Disable splash screen"
-msgstr ""
-
-#: shell/main.c:185
-msgid "Send the debugging output of all components to a file."
-msgstr ""
-
-#: shell/main.c:217
-msgid "Cannot initialize the Bonobo component system."
-msgstr "Kan het Bonobo-componentensysteem niet initializeren"
-
-#: ui/evolution-addressbook.xml.h:2
-msgid "Create new contact"
-msgstr "Nieuw contact maken"
-
-#: ui/evolution-addressbook.xml.h:4
-msgid "Delete a contact"
-msgstr "Verwijder een contact"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-msgid "Find"
-msgstr "Zoek"
-
-#: ui/evolution-addressbook.xml.h:6
-msgid "Find a contact"
-msgstr "Zoek een contact"
-
-#: ui/evolution-addressbook.xml.h:7
-msgid "New contact"
-msgstr "Nieuw contact"
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-mail.xml.h:53
-msgid "Previews the message to be printed"
-msgstr "Geeft een afdrukvoorbeeld van het bericht"
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "Print contacts"
-msgstr "Druk contacten af"
-
-#: ui/evolution-addressbook.xml.h:12 ui/evolution-mail.xml.h:84
-msgid "Stop"
-msgstr "Stoppen"
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "Stop Loading"
-msgstr "Stop met Laden"
-
-#: ui/evolution-addressbook.xml.h:14
-msgid "View All"
-msgstr "Allen Weergeven"
-
-#: ui/evolution-addressbook.xml.h:15
-msgid "View all contacts"
-msgstr "Geef alle contacten weer"
-
-#: ui/evolution-addressbook.xml.h:16
-msgid "_Addressbook Sources..."
-msgstr "_Adresboekbronnen"
-
-#: ui/evolution-addressbook.xml.h:17
-msgid "_Contact"
-msgstr "C_ontacten..."
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-msgid "_Print..."
-msgstr "_Afdrukken..."
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr "_Zoek naar contacten"
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-mail.xml.h:117
-#: ui/evolution-task-editor-dialog.xml.h:88 ui/evolution.xml.h:43
-msgid "_Tools"
-msgstr "_Gereedschap"
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr "5 Dagen"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-msgid "Alter preferences"
-msgstr "Instellingen Wijzigen"
-
-#: ui/evolution-calendar.xml.h:4
-#, fuzzy
-msgid "Create a new all day Event"
-msgstr "Maak een nieuwe kalender"
-
-#: ui/evolution-calendar.xml.h:5
-msgid "Create a new appointment"
-msgstr "Maak een nieuwe afspraak"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr "Maak een nieuwe kalender"
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr "Dag"
-
-#: ui/evolution-calendar.xml.h:8
-msgid "Go To"
-msgstr "Ga naar"
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr "Ga terug in de tijd"
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go forward in time"
-msgstr "Ga vooruit in de tijd"
-
-#: ui/evolution-calendar.xml.h:11
-#, fuzzy
-msgid "Go to _Date"
-msgstr "Ga Naar Datum"
-
-#: ui/evolution-calendar.xml.h:12
-#, fuzzy
-msgid "Go to _Today"
-msgstr "Ga Naar Vandaag"
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr "Ga naar een specifieke datum"
-
-#: ui/evolution-calendar.xml.h:14
-msgid "Go to present time"
-msgstr "Ga naar het heden"
-
-#: ui/evolution-calendar.xml.h:15
-msgid "Month"
-msgstr "Maand"
-
-#: ui/evolution-calendar.xml.h:17
-#, fuzzy
-msgid "New _Event"
-msgstr "Nieuwe Ka_lender"
-
-#: ui/evolution-calendar.xml.h:20
-msgid "Open Calendar"
-msgstr "Open Kalender"
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Prev"
-msgstr "Vorige"
-
-#: ui/evolution-calendar.xml.h:22
-#, fuzzy
-msgid "Previews the calendar to be printed"
-msgstr "Geeft een afdrukvoorbeeld van het bericht"
-
-#: ui/evolution-calendar.xml.h:25
-msgid "Print calendar"
-msgstr "Druk Kalender af"
-
-#: ui/evolution-calendar.xml.h:26
-msgid "Print this Calendar"
-msgstr "Druk deze Kalender af"
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:15
-msgid "Save As"
-msgstr "Opslaan Als"
-
-#: ui/evolution-calendar.xml.h:28
-msgid "Save calendar as something else"
-msgstr "Kalender bewaren als iets anders"
-
-#: ui/evolution-calendar.xml.h:30
-msgid "Show 1 day"
-msgstr "Toon 1 dag"
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr "Toon 1 maand"
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr "Toon 1 week"
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr "Toon de werkweek"
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:229
-#: widgets/misc/e-dateedit.c:424
-msgid "Today"
-msgstr "Vandaag"
-
-#: ui/evolution-calendar.xml.h:35
-#, fuzzy
-msgid "W_ork Week"
-msgstr "Werkweek"
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr "Week"
-
-#: ui/evolution-calendar.xml.h:37
-msgid "_Appointment"
-msgstr "_Afspraak"
-
-#: ui/evolution-calendar.xml.h:38
-#, fuzzy
-msgid "_Day"
-msgstr "Dag"
-
-#: ui/evolution-calendar.xml.h:39
-#, fuzzy
-msgid "_Month"
-msgstr "Maand"
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:39
-msgid "_New"
-msgstr "_Nieuw"
-
-#: ui/evolution-calendar.xml.h:41
-msgid "_Open Calendar"
-msgstr "Open Ka_lender"
-
-#: ui/evolution-calendar.xml.h:45
-#, fuzzy
-msgid "_Week"
-msgstr "Week"
-
-#: ui/evolution-contact-editor.xml.h:2
-msgid "Delete this item"
-msgstr "Verwijder dit item"
-
-#: ui/evolution-contact-editor.xml.h:3
-msgid "Delete..."
-msgstr "Verwijderen..."
-
-#: ui/evolution-contact-editor.xml.h:4
-msgid "Help"
-msgstr "Help"
-
-#: ui/evolution-contact-editor.xml.h:5
-msgid "Print En_velope..."
-msgstr "En_velop Afdrukken..."
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-msgid "Print this item"
-msgstr "Item afdrukken"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-mail.xml.h:62 ui/evolution-task-editor-dialog.xml.h:41
-msgid "Print..."
-msgstr "Afdrukken..."
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:16
-#: ui/evolution-task-editor-dialog.xml.h:51
-msgid "Save _As..."
-msgstr "Opslaan _Als..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-msgid "Save and Close"
-msgstr "Opslaan en Sluiten"
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr "Bewaar dit contact en sluit het dialoogvenster"
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr "Stu_ur contact naar ander..."
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr "Zie help"
-
-#: ui/evolution-contact-editor.xml.h:13
-msgid "Send _message to contact..."
-msgstr "Stuur _bericht aan contact..."
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:44 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:31
-msgid "_File"
-msgstr "_Bestand"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:51
-#: ui/evolution-task-editor-dialog.xml.h:85
-msgid "_Save"
-msgstr "_Opslaan"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr "Over deze applicatie"
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr "Over..."
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-msgid "Actio_ns"
-msgstr "Ac_ties"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-msgid "Address _Book... (FIXME)"
-msgstr "Adres_boek... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-msgid "C_lear"
-msgstr "W_issen"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-msgid "C_ut"
-msgstr "K_nippen"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-msgid "Chec_k Names (FIXME)"
-msgstr "Contro_leer Namen (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-msgid "Clear"
-msgstr "Wissen"
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-msgid "Clear the selection"
-msgstr "Selectie wissen"
-
-#: ui/evolution-event-editor.xml.h:11
-msgid "Close this appointment"
-msgstr "Deze afspraak sluiten"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "Kopieer naar Map... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:7
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "Kopiëren"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-msgid "Copy the selection"
-msgstr "Kopieer de selectie"
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr "Knippen"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Cut the selection"
-msgstr "Knip de selectie"
-
-#: ui/evolution-event-editor.xml.h:18
-msgid "Delete this appointment"
-msgstr "Verwijder deze afspraak"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr "XML Dumpen"
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr "Dump de UI Xml omschrijving"
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr "Ee_rste Item in Folder (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-msgid "For_ward (FIXME)"
-msgstr "_Doorsturen (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr "Doorsturen als v_Calendar (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-msgid "Go to the next item"
-msgstr "Ga naar het volgende item"
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-msgid "Go to the previous item"
-msgstr "Ga naar het vorige item"
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-msgid "In_complete Task (FIXME)"
-msgstr "On_voltooide Taak (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-msgid "Modify the file's properties"
-msgstr "De bestandseigenschappen wijzigen"
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-msgid "N_ext"
-msgstr "V_olgende"
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-msgid "Paste"
-msgstr "Plakken"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-msgid "Paste the clipboard"
-msgstr "Plak het klembord"
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr "_Vorige"
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-msgid "Print Pre_view"
-msgstr "Afdruk_voorbeeld"
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-msgid "Print S_etup..."
-msgstr "Afdrukin_stellingen..."
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-msgid "Print Setup"
-msgstr "Printerinstellingen"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:14
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:239
-msgid "Save"
-msgstr "Opslaan"
-
-#: ui/evolution-event-editor.xml.h:43
-msgid "Save the appointment and close the dialog box"
-msgstr "Bewaar de afspraak en sluit dit venster"
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:20
-#: ui/evolution-task-editor-dialog.xml.h:53
-msgid "Save the current file"
-msgstr "Huidig bestand opslaan"
-
-#: ui/evolution-event-editor.xml.h:46
-msgid "Schedule _Meeting"
-msgstr "_Bijeenkomst Plannen"
-
-#: ui/evolution-event-editor.xml.h:47
-msgid "Schedule some sort of a meeting"
-msgstr "Een bijeenkomst plannen"
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-mail.xml.h:74
-#: ui/evolution-task-editor-dialog.xml.h:57
-msgid "Select All"
-msgstr "Alles Selecteren"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-msgid "Select everything"
-msgstr "Selecteer alles"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr "Stel de pagina instellingen in voor de huidige printer"
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-msgid "Task _Request (FIXME)"
-msgstr "Taakve_rzoek (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-message-composer.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:63
-msgid "_About..."
-msgstr "_Over..."
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:41
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:28
-msgid "_Close"
-msgstr "_Sluiten"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:29
-msgid "_Contact (FIXME)"
-msgstr "_Contact (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-msgid "_Copy"
-msgstr "_Kopiëren"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr "_Debug"
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:46
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:35
-msgid "_Help"
-msgstr "_Help"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-msgid "_Item (FIXME)"
-msgstr "_Item (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-msgid "_Journal Entry (FIXME)"
-msgstr "_Dagboekelement (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-msgid "_Last Item in Folder (FIXME)"
-msgstr "_Laatste Item in Map (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-msgid "_Mail Message (FIXME)"
-msgstr "_Bericht Versturen (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-msgid "_Move to Folder... (FIXME)"
-msgstr "_Verplaatsen naar Map... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-msgid "_Note (FIXME)"
-msgstr "_Notitie (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-msgid "_Paste"
-msgstr "_Plakken"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:109
-#: ui/evolution-task-editor-dialog.xml.h:83
-msgid "_Properties..."
-msgstr "_Eigenschappen..."
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-msgid "_Select All"
-msgstr "Alles _Selecteren"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:42
-msgid "_Task (FIXME)"
-msgstr "_Taak (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-msgid "_Unread Item (FIXME)"
-msgstr "_Ongelezen Item (FIXME)"
-
-#: ui/evolution-executive-summary.xml.h:1
-msgid "Add Service"
-msgstr "Dienst Toevoegen"
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr "Voeg een nieuwe dienst toe aan de Samenvatting"
-
-#: ui/evolution-executive-summary.xml.h:3
-msgid "Create a new email"
-msgstr "Nieuwe e-mail opstellen"
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr "Samenvattingsinstellingen..."
-
-#: ui/evolution-executive-summary.xml.h:5
-msgid "New Mail"
-msgstr "Nieuwe Berichten"
-
-#: ui/evolution-mail.xml.h:2
-msgid "Apply any new filters to the mail in this box"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:3
-msgid "Change the properties of this folder"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:4
-msgid "Compose"
-msgstr "Opstellen"
-
-#: ui/evolution-mail.xml.h:5
-msgid "Compose a new message"
-msgstr "Stel een nieuw bericht op"
-
-#: ui/evolution-mail.xml.h:6
-#, fuzzy
-msgid "Configure Folder..."
-msgstr "_Configureer Map..."
-
-#: ui/evolution-mail.xml.h:8
-msgid "Copy message to a new folder"
-msgstr "Kopieer het bericht naar een nieuwe map"
-
-#: ui/evolution-mail.xml.h:9
-#, fuzzy
-msgid "Copy selected messages to another folder"
-msgstr "Kopieer het bericht naar een nieuwe map"
-
-#: ui/evolution-mail.xml.h:10
-msgid "Create _Virtual Folder From Message"
-msgstr "Maak VMap Van Bericht"
-
-#: ui/evolution-mail.xml.h:12
-#, fuzzy
-msgid "Delete the selected messages"
-msgstr "Druk dit bericht af"
-
-#: ui/evolution-mail.xml.h:14
-msgid "Display all of the message headers"
-msgstr "Toon alle berichtkoppen"
-
-#: ui/evolution-mail.xml.h:15
-#, fuzzy
-msgid "Edit Message"
-msgstr "Bericht _Bewerken"
-
-#: ui/evolution-mail.xml.h:16
-#, fuzzy
-msgid "Edit the current message"
-msgstr "de huidige tijd"
-
-#: ui/evolution-mail.xml.h:17
-#, fuzzy
-msgid "Empty _Trash"
-msgstr "Leeg Prullenbak"
-
-#: ui/evolution-mail.xml.h:18
-#, fuzzy
-msgid "Expunge"
-msgstr "_Wissen"
-
-#: ui/evolution-mail.xml.h:19
-#, fuzzy
-msgid "Filter on Mailing _List"
-msgstr "Filter op Mailinglijst"
-
-#: ui/evolution-mail.xml.h:20
-msgid "Filter on Se_nder"
-msgstr "Filter op _Afzender"
-
-#: ui/evolution-mail.xml.h:21
-msgid "Filter on _Recipients"
-msgstr "Filter op _Geadresseerden"
-
-#: ui/evolution-mail.xml.h:22
-msgid "Filter on _Subject"
-msgstr "Filter op _Onderwerp"
-
-#: ui/evolution-mail.xml.h:23
-msgid "Finaly remove all mails tagged for deletion"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:24
-msgid "Forget _Passwords"
-msgstr "Wachtwoorden _Vergeten"
-
-#: ui/evolution-mail.xml.h:26
-msgid "Forward As"
-msgstr "Doorsturen Als"
-
-#: ui/evolution-mail.xml.h:27
-msgid "Forward inline"
-msgstr "Ingebonden doorsturen"
-
-#: ui/evolution-mail.xml.h:28
-msgid "Forward the selected mail to someone"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:30
-#, fuzzy
-msgid "Forward this message in-line with your mail, so you can edit it"
-msgstr "Stuur een bericht door zonder onderwerp"
-
-#: ui/evolution-mail.xml.h:31
-#, fuzzy
-msgid "Full _Headers"
-msgstr "Alle berichtkoppen"
-
-#: ui/evolution-mail.xml.h:32
-#, fuzzy
-msgid "Go to the next message"
-msgstr "Ga naar het volgende item"
-
-#: ui/evolution-mail.xml.h:33
-#, fuzzy
-msgid "Go to the previous message"
-msgstr "Ga naar het vorige item"
-
-#: ui/evolution-mail.xml.h:34
-#, fuzzy
-msgid "Hide Deleted Messages"
-msgstr "Verberg Verwij_derde Berichten"
-
-#: ui/evolution-mail.xml.h:35
-msgid "Hide S_elected Messages"
-msgstr "Verberg G_eselecteerde Berichten"
-
-#: ui/evolution-mail.xml.h:36
-msgid "Hide _Deleted Messages"
-msgstr "Verberg Verwij_derde Berichten"
-
-#: ui/evolution-mail.xml.h:37
-msgid "Hide _Read messages"
-msgstr "Verberg _Gelezen Berichten"
-
-#: ui/evolution-mail.xml.h:38
-#, fuzzy
-msgid "Invert Selection"
-msgstr "Selectie _Inverteren"
-
-#: ui/evolution-mail.xml.h:39
-msgid "Manage _Subscriptions..."
-msgstr "Beheer Postbusabonnementen..."
-
-#: ui/evolution-mail.xml.h:41
-msgid "Mark All as R_ead"
-msgstr "Markeer Als Gelezen"
-
-#: ui/evolution-mail.xml.h:42
-#, fuzzy
-msgid "Mark As Read"
-msgstr "_Markeer Als Gelezen"
-
-#: ui/evolution-mail.xml.h:43
-msgid "Mark As U_nread"
-msgstr "Markeer Als _Ongelezen"
-
-#: ui/evolution-mail.xml.h:45
-#, fuzzy
-msgid "Mark the selected messages as having been read"
-msgstr "Druk dit bericht af"
-
-#: ui/evolution-mail.xml.h:46
-msgid "Mark the selected messages as not having been read"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:47
-msgid "Move"
-msgstr "Verplaatsen"
-
-#: ui/evolution-mail.xml.h:48
-msgid "Move message to a new folder"
-msgstr "Sla het bericht op in een bepaalde folder"
-
-#: ui/evolution-mail.xml.h:49
-#, fuzzy
-msgid "Move selected messages to another folder"
-msgstr "Sla het bericht op in een bepaalde folder"
-
-#: ui/evolution-mail.xml.h:51
-msgid "Open in New Window"
-msgstr "Open in Nieuw Venster"
-
-#: ui/evolution-mail.xml.h:52
-#, fuzzy
-msgid "Open the current message in a new window"
-msgstr "Dit bericht nu versturen"
-
-#: ui/evolution-mail.xml.h:58
-msgid "Print Preview of message..."
-msgstr "Afdrukvoorbeeld van bericht..."
-
-#: ui/evolution-mail.xml.h:59
-msgid "Print message to the printer"
-msgstr "Bericht afdrukken naar de printer"
-
-#: ui/evolution-mail.xml.h:60
-msgid "Print message..."
-msgstr "Bericht afdrukken..."
-
-#: ui/evolution-mail.xml.h:63
-msgid "Redirect (FIXME: implement me)"
-msgstr "Omleiden (FIXME: implementeer mij)"
-
-#: ui/evolution-mail.xml.h:67
-#, fuzzy
-msgid "Reply to all"
-msgstr "Iedereen beantwoorden"
-
-#: ui/evolution-mail.xml.h:69
-#, fuzzy
-msgid "Reply to sender"
-msgstr "Afzender beantwoorden"
-
-#: ui/evolution-mail.xml.h:71
-#, fuzzy
-msgid "S_earch Message"
-msgstr "_Bericht versturen"
-
-#: ui/evolution-mail.xml.h:72
-msgid "S_ource"
-msgstr "Br_on"
-
-#: ui/evolution-mail.xml.h:73
-#, fuzzy
-msgid "Save the message into a new file"
-msgstr "Sla het bericht op in een bepaalde folder"
-
-#: ui/evolution-mail.xml.h:75 ui/evolution-subscribe.xml.h:7
-msgid "Select _All"
-msgstr "_Alles Selecteren"
-
-#: ui/evolution-mail.xml.h:76
-msgid "Select _Thread"
-msgstr "Selecteer _Gerelateerde Berichten"
-
-#: ui/evolution-mail.xml.h:77
-#, fuzzy
-msgid "Send / Receive"
-msgstr "Verstuur en Ontvang"
-
-#: ui/evolution-mail.xml.h:78
-msgid "Send a reply to the person who sent you this mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:79
-msgid "Send a single mail in reply to all the selected mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:80
-#, fuzzy
-msgid ""
-"Send queued mail\n"
-" and retrieve new mail"
-msgstr "Post in de wachtrij versturen en nieuwe post ophalen"
-
-#: ui/evolution-mail.xml.h:82
-msgid "Send queued mail and retrieve new mail"
-msgstr "Post in de wachtrij versturen en nieuwe post ophalen"
-
-#: ui/evolution-mail.xml.h:83
-msgid "Show _All"
-msgstr "Toon _Alle Berichten"
-
-#: ui/evolution-mail.xml.h:85
-msgid "Threaded Message list"
-msgstr "Berichtenlijst met Weergave van Relateerde Berichten"
-
-#: ui/evolution-mail.xml.h:86
-#, fuzzy
-msgid "Un-delete the selected messages"
-msgstr "Druk dit bericht af"
-
-#: ui/evolution-mail.xml.h:87
-msgid "Undelete"
-msgstr "Terughalen"
-
-#: ui/evolution-mail.xml.h:92
-msgid "View Raw Message Source"
-msgstr "Bekijk Rauwe Berichtbron"
-
-#: ui/evolution-mail.xml.h:93
-msgid "Virtual Folder _Editor..."
-msgstr "_Virtuele-Mapbewerker..."
-
-#: ui/evolution-mail.xml.h:94
-msgid "_Apply Filters"
-msgstr "Filters _Toepassen"
-
-#: ui/evolution-mail.xml.h:95
-#, fuzzy
-msgid "_Attachment"
-msgstr "Bijlage"
-
-#: ui/evolution-mail.xml.h:97
-msgid "_Create Filter From Message"
-msgstr "Maak Filter Van Bericht"
-
-#: ui/evolution-mail.xml.h:99
-msgid "_Expunge"
-msgstr "_Wissen"
-
-#: ui/evolution-mail.xml.h:100
-msgid "_Filters..."
-msgstr "_Filters..."
-
-#: ui/evolution-mail.xml.h:101 ui/evolution.xml.h:32
-msgid "_Folder"
-msgstr "_Map"
-
-#: ui/evolution-mail.xml.h:103
-#, fuzzy
-msgid "_Inline"
-msgstr "Ingebonden"
-
-#: ui/evolution-mail.xml.h:104 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr "Selectie _Inverteren"
-
-#: ui/evolution-mail.xml.h:105
-msgid "_Mail Message"
-msgstr "_Bericht versturen"
-
-#: ui/evolution-mail.xml.h:106
-msgid "_Mail Settings..."
-msgstr "Postinstellingen..."
-
-#: ui/evolution-mail.xml.h:108
-msgid "_Open Selected Items"
-msgstr "_Open Geselecteerde Items"
-
-#: ui/evolution-mail.xml.h:110
-#, fuzzy
-msgid "_Quoted"
-msgstr "Geciteerd"
-
-#: ui/evolution-mail.xml.h:111
-#, fuzzy
-msgid "_Reply"
-msgstr "Beantwoorden"
-
-#: ui/evolution-mail.xml.h:112
-#, fuzzy
-msgid "_Resend Messages"
-msgstr "Bericht _Bewerken"
-
-#: ui/evolution-mail.xml.h:114
-msgid "_Save Message As..."
-msgstr "Bericht Op_slaan als..."
-
-#: ui/evolution-mail.xml.h:115
-#, fuzzy
-msgid "_Send / Receive"
-msgstr "Verstuur en _Ontvang"
-
-#: ui/evolution-mail.xml.h:116
-msgid "_Threaded"
-msgstr "Rela_ties weergeven"
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr "Bijlage invoegen"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-msgid "Close the current file"
-msgstr "Huidig bestand sluiten"
-
-#: ui/evolution-message-composer.xml.h:5
-msgid "Encrypt this message with PGP"
-msgstr "Versleutel dit bericht met PGP"
-
-#: ui/evolution-message-composer.xml.h:6
-msgid "F_ormat"
-msgstr "_Opmaak"
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "HTML"
-msgstr "HTML"
-
-#: ui/evolution-message-composer.xml.h:8
-msgid "Insert a file as text into the message"
-msgstr "Voeg een bestand bij het bericht"
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert text file..."
-msgstr "Tekstbestand invoegen..."
-
-#: ui/evolution-message-composer.xml.h:11
-msgid "Open a file"
-msgstr "Bestand openen"
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "PGP Encrypt"
-msgstr "Versleutelen met PGP"
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Sign"
-msgstr "Signeren met PGP"
-
-#: ui/evolution-message-composer.xml.h:17
-msgid "Save _Draft"
-msgstr "Kla_d Opslaan"
-
-#: ui/evolution-message-composer.xml.h:18
-msgid "Save in _folder... (FIXME)"
-msgstr "Opslaan in _map... (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:19
-msgid "Save in folder..."
-msgstr "Opslaan in _map..."
-
-#: ui/evolution-message-composer.xml.h:21
-msgid "Save the current file with a different name"
-msgstr "Sla het huidige bestand op onder een andere naam"
-
-#: ui/evolution-message-composer.xml.h:22
-msgid "Save the message in a specified folder"
-msgstr "Sla het bericht op in een bepaalde folder"
-
-#: ui/evolution-message-composer.xml.h:23
-msgid "Send"
-msgstr "Versturen"
-
-#: ui/evolution-message-composer.xml.h:24
-msgid "Send _Later"
-msgstr "_Later Versturen"
-
-#: ui/evolution-message-composer.xml.h:25
-msgid "Send _later"
-msgstr "_Later versturen"
-
-#: ui/evolution-message-composer.xml.h:26
-msgid "Send the mail in HTML format"
-msgstr "Stuur het bericht in HTML-formaat"
-
-#: ui/evolution-message-composer.xml.h:27
-msgid "Send the message later"
-msgstr "Dit bericht later versturen"
-
-#: ui/evolution-message-composer.xml.h:28
-msgid "Send the message now"
-msgstr "Dit bericht nu versturen"
-
-#: ui/evolution-message-composer.xml.h:29
-msgid "Send this message now"
-msgstr "Dit bericht nu versturen"
-
-#: ui/evolution-message-composer.xml.h:30
-msgid "Show / hide attachments"
-msgstr "Toon/Verberg Bijlages"
-
-#: ui/evolution-message-composer.xml.h:31
-msgid "Show _attachments"
-msgstr "Toon _Bijlages"
-
-#: ui/evolution-message-composer.xml.h:32
-msgid "Show attachments"
-msgstr "Toon Bijlages"
-
-#: ui/evolution-message-composer.xml.h:33
-msgid "Sign this message with your PGP key"
-msgstr "Signeer dit bericht met uw PGP-sleutel"
-
-#: ui/evolution-message-composer.xml.h:34
-msgid "Toggles whether the BCC field is displayed"
-msgstr "Schakel BCC-weergave aan/uit"
-
-#: ui/evolution-message-composer.xml.h:35
-msgid "Toggles whether the CC field is displayed"
-msgstr "Schakel CC-weergave aan/uit"
-
-#: ui/evolution-message-composer.xml.h:36
-msgid "Toggles whether the From chooser is displayed"
-msgstr "Schakel de Afzenderkiezer-weergave aan/uit"
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr "Schakel Antwoordadres-weergave aan/uit"
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "_Bcc Field"
-msgstr "_Bcc-veld"
-
-#: ui/evolution-message-composer.xml.h:40
-msgid "_Cc Field"
-msgstr "_Cc-veld"
-
-#: ui/evolution-message-composer.xml.h:45
-msgid "_From Field"
-msgstr "_Van-veld"
-
-#: ui/evolution-message-composer.xml.h:47
-msgid "_Insert"
-msgstr "_Invoegen"
-
-#: ui/evolution-message-composer.xml.h:48
-msgid "_Insert text file... (FIXME)"
-msgstr "Voeg tekstbestand _in... (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:49
-msgid "_Open..."
-msgstr "_Openen..."
-
-#: ui/evolution-message-composer.xml.h:50
-msgid "_Reply-To Field"
-msgstr "Antwoordadres-veld:"
-
-#: ui/evolution-message-composer.xml.h:52
-msgid "_Security"
-msgstr "_Beveiliging"
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr "Neem abonnement op deze map"
-
-#: ui/evolution-subscribe.xml.h:3
-msgid "F_older"
-msgstr "_Map"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr "Lijst Verversen"
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr "Lijst of Mappen Verversen"
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr "Beeindig abonnement op deze map"
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr "Abonneren"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr "Afmelden"
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-msgid "Assig_n Task (FIXME)"
-msgstr "Taak Toewijze_n (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr "Opnieuw Zoeken"
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-msgid "Meeting Re_quest (FIXME)"
-msgstr "Ve_rzoek Bijeenkomst (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-msgid "Redo"
-msgstr "Herhalen"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-msgid "Redo the undone action"
-msgstr "De laatst ongedaan gemaakte bewerking opnieuw uitvoeren"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-msgid "Replace"
-msgstr "Vervangen"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-msgid "Replace a string"
-msgstr "Tekenreeks vervangen"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-msgid "Reply to A_ll (FIXME)"
-msgstr "Iedereen _beantwoorden (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-msgid "S_end Status Report (FIXME)"
-msgstr "Verstuur een _status rapport (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr "Sla Gebeurtenis over (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-msgid "Save the task and close the dialog box"
-msgstr "Bewaar deze taak en sluit het dialoogvenster"
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "Search again for the same string"
-msgstr "Probeer dezelfde tekenreeks nogmaals te vinden"
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-msgid "Search for a string"
-msgstr "Zoek naar een tekenreeks"
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr "Ongedaan maken"
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-msgid "Undo the last action"
-msgstr "Maak de laatste bewerking ongedaan"
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:27
-msgid "_Appointment (FIXME)"
-msgstr "_Afspraak (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-msgid "_Mark Complete (FIXME)"
-msgstr "_Markeer als Gedaan (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-msgid "_Reply (FIXME)"
-msgstr "_Beantwoorden (FIXME)"
-
-#: ui/evolution-tasks.xml.h:2
-msgid "Create a new task"
-msgstr "Nieuwe taak aanmaken"
-
-#: ui/evolution-tasks.xml.h:3
-msgid "New Task"
-msgstr "Nieuwe Taak"
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr "Bewaar taak als iets anders"
-
-#: ui/evolution-tasks.xml.h:6
-msgid "Tasks Preferences..."
-msgstr "Taakvoorkeuren..."
-
-#: ui/evolution-tasks.xml.h:9
-msgid "_Task"
-msgstr "_Taak"
-
-#: ui/evolution.xml.h:1
-msgid "About Evolution..."
-msgstr "Over Evolution..."
-
-#: ui/evolution.xml.h:3
-msgid "Close this window"
-msgstr "Dit venster sluiten"
-
-#: ui/evolution.xml.h:4
-msgid "Customi_ze Toolbars..."
-msgstr "Gereedschapsbalken _Aanpassen"
-
-#: ui/evolution.xml.h:5
-msgid "Customize"
-msgstr "Aanpassen"
-
-#: ui/evolution.xml.h:6
-msgid "Customize toolbars"
-msgstr "Gereedschapsbalken aanpassen"
-
-#: ui/evolution.xml.h:7
-msgid "Display a different folder"
-msgstr "Toon een andere map"
-
-#: ui/evolution.xml.h:8
-msgid "E_xit"
-msgstr "_Afsluiten"
-
-#: ui/evolution.xml.h:9
-#, fuzzy
-msgid "Evolution _Window"
-msgstr "Evolution"
-
-#: ui/evolution.xml.h:10
-msgid "Evolution bar _shortcut"
-msgstr "Evolutionbalk _snelkoppeling"
-
-#: ui/evolution.xml.h:11
-msgid "Exit the program"
-msgstr "Programma verlaten"
-
-#: ui/evolution.xml.h:12
-msgid "Getting _Started"
-msgstr "_Beginnen"
-
-#: ui/evolution.xml.h:13
-msgid "Import an external file format"
-msgstr "Importeer een extern bestandsformaat"
-
-#: ui/evolution.xml.h:14
-msgid "Main toolbar"
-msgstr "Hoofdgereedschapsbalk"
-
-#: ui/evolution.xml.h:15
-msgid "Show information about Evolution"
-msgstr "Toon informatie over Evolution"
-
-#: ui/evolution.xml.h:16
-msgid "Submit Bug Report"
-msgstr "Bug-Report Insturen"
-
-#: ui/evolution.xml.h:17
-msgid "Submit _Bug Report"
-msgstr "_Bug Report Insturen"
-
-#: ui/evolution.xml.h:18
-msgid "Submit bug report using Bug Buddy."
-msgstr "Bug Report insturen met Bug Buddy."
-
-#: ui/evolution.xml.h:19
-msgid "Toggle whether to show the folder bar"
-msgstr "Toont de mappenbalk"
-
-#: ui/evolution.xml.h:20
-msgid "Toggle whether to show the shortcut bar"
-msgstr "Toont de snelkoppelingenbalk"
-
-#: ui/evolution.xml.h:21
-msgid "Using the C_ontact Manager"
-msgstr "Gebruik van de Cont_actbeheerder"
-
-#: ui/evolution.xml.h:22
-msgid "Using the _Calendar"
-msgstr "Gebruik van de _Kalender"
-
-#: ui/evolution.xml.h:23
-msgid "Using the _Mailer"
-msgstr "Gebruik van het _Mailcomponent"
-
-#: ui/evolution.xml.h:24
-msgid "Work Offline"
-msgstr "Werk zonder netwerk"
-
-#: ui/evolution.xml.h:25
-msgid "_About Evolution..."
-msgstr "_Over Evolution..."
-
-#: ui/evolution.xml.h:26
-msgid "_Actions"
-msgstr "_Acties"
-
-#: ui/evolution.xml.h:33
-msgid "_Folder Bar"
-msgstr "_Mappenbalk"
-
-#: ui/evolution.xml.h:34
-msgid "_Go to Folder..."
-msgstr "_Ga naar Map..."
-
-#: ui/evolution.xml.h:36
-msgid "_Import file..."
-msgstr "_Importeer bestand..."
-
-#: ui/evolution.xml.h:37
-msgid "_Index"
-msgstr "_Index"
-
-#: ui/evolution.xml.h:38
-msgid "_Mail message"
-msgstr "_Bericht versturen"
-
-#: ui/evolution.xml.h:40
-msgid "_New Folder"
-msgstr "_Nieuwe Map"
-
-#: ui/evolution.xml.h:41
-msgid "_Shortcut Bar"
-msgstr "_Snelkoppelingsbalk"
-
-#: views/addressbook/galview.xml.h:1
-#, fuzzy
-msgid "Adress Cards"
-msgstr "adreskaart"
-
-#: views/addressbook/galview.xml.h:2
-#, fuzzy
-msgid "By Company"
-msgstr "Bedrijf"
-
-#: views/addressbook/galview.xml.h:3
-#, fuzzy
-msgid "Phone List"
-msgstr "Telefoontypes"
-
-#: views/mail/galview.xml.h:1
-#, fuzzy
-msgid "By Sender"
-msgstr "Afzender"
-
-#: views/mail/galview.xml.h:2
-#, fuzzy
-msgid "By Status"
-msgstr "Status"
-
-#: views/mail/galview.xml.h:3
-#, fuzzy
-msgid "By Subject"
-msgstr "Onderwerp"
-
-#: views/mail/galview.xml.h:4
-#, fuzzy
-msgid "Messages"
-msgstr "Bericht"
-
-#: views/tasks/galview.xml.h:2
-#, fuzzy
-msgid "With Category"
-msgstr "Categorie:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:392
-msgid "Tentative"
-msgstr "Voorlopig"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:393
-msgid "Busy"
-msgstr "Bezig"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:394
-msgid "Out of Office"
-msgstr "Afwezig"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:395
-msgid "No Information"
-msgstr "Geen informatie"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:411
-msgid "_Invite Others..."
-msgstr "Nod_ig anderen uit..."
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:431
-msgid "_Options"
-msgstr "_Opties"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:448
-msgid "Show _Only Working Hours"
-msgstr "T_oon alleen kantooruren"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:461
-msgid "Show _Zoomed Out"
-msgstr "Toon Uitge_zoomd"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:479
-msgid "_Update Free/Busy"
-msgstr "_Actualiseer Vrij/Bezet"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:497
-msgid "_<<"
-msgstr "_<<"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:514
-msgid "_Autopick"
-msgstr "_Automatisch uitzoeken"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:528
-msgid ">_>"
-msgstr ">_>"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:545
-msgid "_All People and Resources"
-msgstr "_Alle Mensen en Hulpbronnen"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:558
-msgid "All _People and One Resource"
-msgstr "Alle _mensen en één Hulpbron"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:571
-msgid "_Required People"
-msgstr "_Vereiste Mensen"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:584
-msgid "Required People and _One Resource"
-msgstr "Vereiste mensen en één Hulpbr_on"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:607
-msgid "Meeting _start time:"
-msgstr "Aanvang _bijeenkomst:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:631
-msgid "Meeting _end time:"
-msgstr "_Einde bijeenkomst:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:744
-msgid "All Attendees"
-msgstr "Alle Aanwezigen"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:469
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2477
-msgid "%A, %B %d, %Y"
-msgstr "%A, %d %B, %Y"
-
-#: widgets/menus/gal-view-menus.c:177
-msgid "_Current View"
-msgstr "_Huidige Weergave"
-
-#: widgets/menus/gal-view-menus.c:196
-msgid "Define Views"
-msgstr ""
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:422
-msgid "MTWTFSS"
-msgstr "MDWDVZZ"
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1061 widgets/misc/e-calendar-item.c:2756
-msgid "%B %Y"
-msgstr "%B %Y"
-
-#: widgets/misc/e-cell-date-edit.c:221 widgets/misc/e-dateedit.c:418
-msgid "Now"
-msgstr "Nu"
-
-#: widgets/misc/e-cell-date-edit.c:245
-msgid "OK"
-msgstr "OK"
-
-#: widgets/misc/e-cell-date-edit.c:726
-#, fuzzy, c-format
-msgid "The time must be in the format: %s"
-msgstr ""
-"De datum moet ingevoerd worden in het formaat: \n"
-"\n"
-"%s"
-
-#: widgets/misc/e-clipped-label.c:112
-msgid "..."
-msgstr "..."
-
-#: widgets/misc/e-filter-bar.c:166
-msgid "Save Search"
-msgstr "Bewaar zoekopdracht"
-
-#: widgets/misc/e-filter-bar.c:237
-msgid "Advanced Search"
-msgstr "Uitgebreid zoeken"
-
-#: widgets/misc/e-filter-bar.c:317
-msgid "Advanced ..."
-msgstr "Uitgebreid..."
-
-#: widgets/misc/e-messagebox.c:152
-msgid "Information"
-msgstr "Informatie"
-
-#: widgets/misc/e-messagebox.c:159
-msgid "Warning"
-msgstr "Waarschuwing"
-
-#: widgets/misc/e-messagebox.c:173
-msgid "Question"
-msgstr "Vraag"
-
-#: widgets/misc/e-messagebox.c:180
-msgid "Message"
-msgstr "Bericht"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:224
-msgid "Don't show this message again."
-msgstr "Dit bericht niet meer weergeven."
-
-#: widgets/misc/e-search-bar.c:148
-msgid "Sear_ch"
-msgstr "_Zoeken"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-msgid "The Personal Addressbook Server"
-msgstr "De Persoonlijke Adresboekserver"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr "De Persoonlijke Kalenderserver; kalender fabriek"
-
-#: wombat/wombat.c:173
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr "setup_vfs(): kon Gnome-VFS niet initializeren"
-
-#: wombat/wombat.c:185
-msgid "init_corba(): could not initialize GNOME"
-msgstr "init_corba(): kon Gnome niet initializeren"
-
-#: wombat/wombat.c:198
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "init_bonobo(): kon Bonobo niet initializeren"
-
-#~ msgid "Click here to add a contact"
-#~ msgstr "Klik hier om een contact toe te voegen"
-
-#~ msgid "PLAIN"
-#~ msgstr "PLAIN"
-
-#~ msgid ""
-#~ "This option will connect to the server using a the PLAIN SASL mechanism if "
-#~ "the server supports it."
-#~ msgstr ""
-#~ "Deze optie zal bij het verbinden met de server het "
-#~ "PLAIN-SASL-mechanismegebruiken, indien de server dat ondersteunt."
-
-#~ msgid "No such host %s."
-#~ msgstr "Machine %s niet gevonden."
-
-#~ msgid "Temporarily unable to look up hostname %s."
-#~ msgstr "Kan machinenaam %s tijdelijk niet opzoeken"
-
-#~ msgid "URL string `%s' contains no protocol"
-#~ msgstr "URL `%s' bevat geen protocol"
-
-#~ msgid "URL string `%s' contains an invalid protocol"
-#~ msgstr "URL `%s' bevat een ongeldig protocol"
-
-#~ msgid "Port number in URL `%s' is non-numeric"
-#~ msgstr "Poortnummer in URL `%s' is niet numeriek"
-
-#~ msgid "Secure IMAPv4"
-#~ msgstr "Beveiligde IMAPv4"
-
-#~ msgid "For reading and storing mail on IMAP servers over an SSL connection."
-#~ msgstr ""
-#~ "Voor het lezen en opslaan van post op IMAP servers via een SSL-verbinding."
-
-#~ msgid "Secure POP"
-#~ msgstr "Beveiligde POP"
-
-#
-#~ msgid ""
-#~ "For connecting to POP servers over an SSL connection. The POP protocol can "
-#~ "also be used to retrieve mail from certain web mail providers and "
-#~ "proprietary email systems."
-#~ msgstr ""
-#~ "Voor het verbinden met POP-servers via een SSL-verbinding. Het POP-protocol "
-#~ "kan ook gebruikt worden om post te halen van bepaalde 'web mail'-providers "
-#~ "en gesloten postsystemen."
-
-#~ msgid "Secure SMTP"
-#~ msgstr "Beveiligde SMTP"
-
-#~ msgid ""
-#~ "For delivering mail by connecting to a remote mailhub using SMTP over an SSL "
-#~ "connection.\n"
-#~ msgstr ""
-#~ "Voor het versturen van post via een SMTP-server over een SSL-verbinding.\n"
-
-#~ msgid "No authentication required"
-#~ msgstr "Geen aanmelding vereist"
-
-#~ msgid ""
-#~ "This option will connect to the SMTP server without using any kind of "
-#~ "authentication. This should be fine for connecting to most SMTP servers."
-#~ msgstr ""
-#~ "Deze optie zal verbinden met de SMTP-server zonder enige vorm van aanmelding "
-#~ "Dit werkt prima met de meeste SMTP-servers."
-
-#~ msgid "Remove action"
-#~ msgstr "Deze Actie Verwijderen"
-
-#~ msgid "Remove criterion"
-#~ msgstr "Deze criteria verwijderen"
-
-#~ msgid "Source"
-#~ msgstr "Bron"
-
-#~ msgid "VFolder on Subject"
-#~ msgstr "VMap op Onderwerp"
-
-#~ msgid "VFolder on Sender"
-#~ msgstr "VMap op Afzender"
-
-#~ msgid "VFolder on Recipients"
-#~ msgstr "VMap op Geadresseerden"
-
-#~ msgid "Save As..."
-#~ msgstr "Opslaan Als..."
-
-#~ msgid "Mark as Read"
-#~ msgstr "Markeer Als Gelezen"
-
-#~ msgid "Mark as Unread"
-#~ msgstr "Markeer Als Ongelezen"
-
-#~ msgid "Move to Folder..."
-#~ msgstr "Verplaats naar Map..."
-
-#~ msgid "Copy to Folder..."
-#~ msgstr "Kopieer naar Map..."
-
-#~ msgid ""
-#~ "One or more of your servers are not configured correctly.\n"
-#~ "Do you wish to save anyway?"
-#~ msgstr ""
-#~ "Een of meer servers zijn niet correct geconfigureerd.\n"
-#~ "Wil u toch opslaan?"
-
-#~ msgid "Unspecified"
-#~ msgstr "Ongedefinieerd"
-
-#~ msgid "Advanced"
-#~ msgstr "Uitgebreid"
-
-#~ msgid "Check settings"
-#~ msgstr "Test instellingen"
-
-#~ msgid "Email address:"
-#~ msgstr "E-mailadres:"
-
-#~ msgid "Evolution Mail Configuration"
-#~ msgstr "Evolution Postconfiguratie"
-
-#~ msgid "Hostname:"
-#~ msgstr "Computernaam:"
-
-#~ msgid "IMAP"
-#~ msgstr "IMAP"
-
-#~ msgid "Include this account when receiving mail"
-#~ msgstr "Neem dit account mee bij het ontvangen vna post"
-
-#~ msgid "Keep mail on server"
-#~ msgstr "Bewaar e-mails op de server"
-
-#~ msgid "Kerberos"
-#~ msgstr "Kerberos"
-
-#~ msgid "Mail"
-#~ msgstr "Post"
-
-#~ msgid "Mail Account"
-#~ msgstr "Postaccount"
-
-#~ msgid "Mail Configuration Druid"
-#~ msgstr "Postconfiguratie-druïde"
-
-#~ msgid "Optional"
-#~ msgstr "Optioneel"
-
-#~ msgid "Password:"
-#~ msgstr "Wachtwoord:"
-
-#~ msgid "Plain Text"
-#~ msgstr "Platte Tekst"
-
-#~ msgid "Remember my password"
-#~ msgstr "Onthoud mijn wachtwoord"
-
-#~ msgid "Reply address:"
-#~ msgstr "Antwoordadres:"
-
-#~ msgid "Required"
-#~ msgstr "Vereist"
-
-#~ msgid "Save password"
-#~ msgstr "Wachtwoord opslaan"
-
-#~ msgid "Select signature file"
-#~ msgstr "Selecteer handtekeningbestand"
-
-#~ msgid "Server type:"
-#~ msgstr "Servertype: "
-
-#~ msgid "Signature:"
-#~ msgstr "Handtekening:"
-
-#~ msgid "Transport"
-#~ msgstr "Transport"
-
-#~ msgid "Transport Authentication"
-#~ msgstr "Transportaanmelding"
-
-#~ msgid ""
-#~ "Type the name by which you would like to refer to these servers. For "
-#~ "example: \"Work\" or \"Home\"."
-#~ msgstr ""
-#~ "Type de naam die u wilt gebruiken voor deze servers. Bijvoorbeeld: \"Thuis\" "
-#~ "of \"Werk\"."
-
-#~ msgid "minutes."
-#~ msgstr "minuten."
-
-#~ msgid ""
-#~ "Failed to verify the incoming mail configuration.\n"
-#~ "You may experience problems retrieving your mail from %s"
-#~ msgstr ""
-#~ "Fout bij het verifiëren van de inkomende-postconfiguratie.\n"
-#~ "U zou problemen kunnen ondervinden bij het ophalen van je post van %s"
-
-#~ msgid ""
-#~ "Failed to verify the outgoing mail configuration.\n"
-#~ "You may experience problems sending your mail using %s"
-#~ msgstr ""
-#~ "Fout bij het verifiëren van de uitgaande-postconfiguratie.\n"
-#~ "U zou problemen kunnen ondervinden bij het versturen van je post via %s"
-
-#~ msgid "Do you accept?"
-#~ msgstr "Accepteert u?"
-
-#~ msgid "%s message %d of %d (uid \"%s\")"
-#~ msgstr "%s bericht %d van %d (uid \"%s\")"
-
-#~ msgid "[ %s ]"
-#~ msgstr "[ %s ]"
-
-#~ msgid "%s, et al."
-#~ msgstr "%s, enz."
-
-#~ msgid "<unknown>"
-#~ msgstr "<onbekend>"
-
-#~ msgid "Message _Display"
-#~ msgstr "Berichten_weergave"
-
-#~ msgid "_Compose"
-#~ msgstr "_Opstellen"
-
-#~ msgid "_Message Hiding"
-#~ msgstr "_Berichten verbergen"
-
-#~ msgid "The time is invalid"
-#~ msgstr "De tijd is ongeldig"
-
-#~ msgid "Disabled"
-#~ msgstr "Uitgeschakeld"
-
-#~ msgid "Synchronize"
-#~ msgstr "Synchroniseren"
-
-#~ msgid "Copy From Pilot"
-#~ msgstr "Kopiëren Uit Pilot"
-
-#~ msgid "Copy To Pilot"
-#~ msgstr "Kopiëren Naar Pilot"
-
-#~ msgid "Merge From Pilot"
-#~ msgstr "Mengen Uit Pilot"
-
-#~ msgid "Merge To Pilot"
-#~ msgstr "Mengen Naar Pilot"
-
-#~ msgid "JP Rosevear <jpr@helixcode.com>"
-#~ msgstr "JP Rosevear <jpr@helixcode.com>"
-
-#~ msgid "Original Author:"
-#~ msgstr "Originele Auteur:"
-
-#~ msgid "Eskil Heyn Olsen <deity@eskil.dk>"
-#~ msgstr "Eskil Heyn Olsen <deity@eskil.dk>"
-
-#~ msgid "Evolution Addressbook Conduit"
-#~ msgstr "Evolution Adresboekkanaal"
-
-#~ msgid "(C) 1998-2000 the Free Software Foundation and Helix Code"
-#~ msgstr "(C) 1998-2000 the Free Software Foundation en Helix Code"
-
-#~ msgid "Configuration utility for the evolution addressbook conduit.\n"
-#~ msgstr "Configuratie programma voor het evolution adresboekkanaal.\n"
-
-#~ msgid "gnome-unknown.xpm"
-#~ msgstr "gnome-unknown.xpm"
-
-#~ msgid "Synchronize Action"
-#~ msgstr "Actie Synchronizeren"
-
-#~ msgid "Conduit state"
-#~ msgstr "Kanaalstatus"
-
-#~ msgid ""
-#~ "No pilot configured, please choose the\n"
-#~ "'Pilot Link Properties' capplet first."
-#~ msgstr ""
-#~ "Geen pilot geconfigureerd, start eerst de 'Pilot-Link-Eigenschappen' capplet"
-
-#~ msgid "Not connected to the gnome-pilot daemon"
-#~ msgstr "Niet verbonden met de gnome-pilot daemon"
-
-#~ msgid ""
-#~ "An error occured when trying to fetch\n"
-#~ "pilot list from the gnome-pilot daemon"
-#~ msgstr "Fout bij het ophalen van de pilot list van de gnome-pilot daemon"
-
-#~ msgid "Configure the address conduit"
-#~ msgstr "Configureer het adres kanaal"
-
-#~ msgid "Evolution Address conduit "
-#~ msgstr "Evolution Adres kanaal"
-
-#~ msgid "label26"
-#~ msgstr "label26"
-
-#~ msgid "Evolution Calendar Conduit"
-#~ msgstr "Evolution Kalender Kanaal"
-
-#~ msgid "Configuration utility for the evolution calendar conduit.\n"
-#~ msgstr "Configuratie programma voor het evolution kalender kanaal.\n"
-
-#~ msgid "Configure the GnomeCal conduit"
-#~ msgstr "Configureer het GnomeCal kanaal"
-
-#~ msgid "Evolution Calendar conduit"
-#~ msgstr "Evolution Kalender kanaal"
-
-#~ msgid "Configure the todo conduit"
-#~ msgstr "Configureer het to-do kanaal"
-
-#~ msgid "Evolution ToDo conduit "
-#~ msgstr "Evolution ToDo kanaal"
-
-#~ msgid "Evolution ToDo Conduit"
-#~ msgstr "Evolution ToDo Kanaal"
-
-#~ msgid "Configuration utility for the evolution todo conduit.\n"
-#~ msgstr "Configuratie programma voor het evolution to-do kanaal.\n"
-
-#~ msgid "The priority must be between 1 and 9, inclusive"
-#~ msgstr "De prioriteit mag niet kleiner zijn dan 1 en niet groter dan 9"
-
-#~ msgid "Schedule meeting"
-#~ msgstr "Afspraak Plannen"
-
-#~ msgid "Edit this appointment..."
-#~ msgstr "Bewerk deze afspraak..."
-
-#~ msgid "label21"
-#~ msgstr "label21"
-
-#~ msgid "label55"
-#~ msgstr "label55"
-
-#~ msgid "Synchronising IMAP folder"
-#~ msgstr "Bezig met Synchronizeren IMAP map"
-
-#~ msgid "Enter the identity you wish to send this message from"
-#~ msgstr "Geef de identiteit waarvan je dit bericht wilt versturen"
-
-#~ msgid "Enter the subject of the mail"
-#~ msgstr "Geef het onderwerp van het bericht"
-
-#~ msgid "Edit Filter Rule"
-#~ msgstr "Bewerk VMap Regel"
-
-#~ msgid "Set Flag"
-#~ msgstr "Stel Vlag in"
-
-#~ msgid "matches regex"
-#~ msgstr "is gelijk aan reguliere expressie"
-
-#~ msgid "Add VFolder Rule"
-#~ msgstr "VMap Regel Toevoegen"
-
-#~ msgid "Edit VFolder Rule"
-#~ msgstr "Bewerk VMap Regel"
-
-#~ msgid "Body or subject contains"
-#~ msgstr "Bericht of onderwerp bevat"
-
-#~ msgid "Body contains"
-#~ msgstr "Bericht bevat"
-
-#~ msgid "Subject contains"
-#~ msgstr "Onderwerp bevat"
-
-#~ msgid "Body does not contain"
-#~ msgstr "Bericht bevat niet"
-
-#~ msgid "Subject does not contain"
-#~ msgstr "Onderwerp bevat niet"
-
-#~ msgid "Sender contains"
-#~ msgstr "Afzender bevat"
-
-#~ msgid "Account Properties"
-#~ msgstr "Account Eigenschappen"
-
-#~ msgid "E-Mail Address:"
-#~ msgstr "E-Mail Adres:"
-
-#~ msgid "Include in \"Get Mail\" operations."
-#~ msgstr "Opnemen in \"Get Mail\" bewerkingen."
-
-#~ msgid "Incoming Mail Server"
-#~ msgstr "Inkomende E-Mail Server"
-
-#~ msgid "Miscellaneous"
-#~ msgstr "Andere"
-
-#~ msgid "Outgoing Mail Server"
-#~ msgstr "Uitgaande E-Mail Server"
-
-#~ msgid "Servers"
-#~ msgstr "Servers"
-
-#~ msgid ""
-#~ "Cannot open location `%s':\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Kan locatie `%s' niet openen:\n"
-#~ "%s"
-
-#~ msgid "_Addressbook Configuration..."
-#~ msgstr "_Adresboek Configuratie..."
-
-#~ msgid "_Print Contacts..."
-#~ msgstr "_Druk Kontakten af..."
-
-#~ msgid "Ca_lendar"
-#~ msgstr "Ka_lender"
-
-#~ msgid "Calendar Preferences..."
-#~ msgstr "Kalender Instellingen..."
-
-#~ msgid "_Print this calendar"
-#~ msgstr "_Druk deze kalender af"
-
-#~ msgid "Create Rule"
-#~ msgstr "Maak Regel"
-
-#~ msgid "Fi_lter on Sender"
-#~ msgstr "Filteren op Afzender"
-
-#~ msgid "Filter on Rec_ipients"
-#~ msgstr "Filteren op Geadresseerden"
-
-#~ msgid "Get Mail"
-#~ msgstr "Post Ophalen"
-
-#~ msgid "Reply to _Sender"
-#~ msgstr "Af_zender beantwoorden"
-
-#~ msgid "Show _All Messages"
-#~ msgstr "Geef _Alle Berichten weer"
-
-#~ msgid "_Filter on Subject"
-#~ msgstr "_Filteren op Onderwerp"
-
-#~ msgid "_Mail Configuration..."
-#~ msgstr "_Mail Configuratie..."
-
-#~ msgid "_Open in New Window"
-#~ msgstr "_Openen in Nieuw Venster"
-
-#~ msgid "_Print Message"
-#~ msgstr "Bericht A_fdrukken"
-
-#~ msgid "_VFolder on Subject"
-#~ msgstr "_VMap op Onderwerp"
-
-#~ msgid "New"
-#~ msgstr "Nieuw"
-
-#~ msgid "Customi_ze..."
-#~ msgstr "Aan_passen..."
-
-#~ msgid "Show the _Folder Bar"
-#~ msgstr "_Mapbalk Tonen"
-
-#~ msgid "Show the _Shortcut Bar"
-#~ msgstr "_Snelkoppelingsbalk Tonen"
-
-#~ msgid "_Settings"
-#~ msgstr "In_stellingen:"
-
-#~ msgid "Reflow Test"
-#~ msgstr "Reflow Test"
-
-#~ msgid "Copyright (C) 2000, Helix Code, Inc."
-#~ msgstr "Copyright (C) 2000, Helix Code, Inc."
-
-#~ msgid "This should test the reflow canvas item"
-#~ msgstr "Dit zou het 'reflow' canvas item moeten testen"
-
-#~ msgid "UNIX mbox-format mail files"
-#~ msgstr "UNIX mbox-formaat post bestanden"
-
-#~ msgid ""
-#~ "For reading mail delivered by the local system, and for storing mail on "
-#~ "local disk."
-#~ msgstr ""
-#~ "Voor het lezen van post die is afgeleverd door het lokale systeem en voor "
-#~ "het opslaan van post op de lokale schijf."
-
-#~ msgid "Cannot initialize Evolution's notes component."
-#~ msgstr "Kan het notitie gedeelte van Evolution niet initialiseren."
-
-#~ msgid "Notes Component: Could not initialize bonobo"
-#~ msgstr "Notitie gedeelte: Kon Bonobo niet initializeren"
-
-#~ msgid ""
-#~ "\n"
-#~ "Mr.\n"
-#~ "Mrs.\n"
-#~ "Ms.\n"
-#~ "Miss\n"
-#~ "Dr.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Mr.\n"
-#~ "Mvr.\n"
-#~ "Dr.\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Sr.\n"
-#~ "Jr.\n"
-#~ "I\n"
-#~ "II\n"
-#~ "III\n"
-#~ "Esq.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Sr.\n"
-#~ "Jr.\n"
-#~ "de eerste\n"
-#~ "de tweede\n"
-#~ "de derde\n"
-#~ "Esq.\n"
-
-#~ msgid "Open..."
-#~ msgstr "_Openen"
-
-#~ msgid "Local stores do not have a default folder"
-#~ msgstr "Lokale opslag locaties hebben geen standaard map"
-
-#~ msgid "Local folders may not be nested."
-#~ msgstr "Lokale mappen mogen niet recursief in elkaar worden opgenomen."
-
-#~ msgid "Saving changes to message..."
-#~ msgstr "Bezig met opslaan wijzigingen aan bericht..."
-
-#~ msgid "Save changes to message..."
-#~ msgstr "Wijzigingen aan bericht opslaan..."
-
-#~ msgid "Error saving composition to 'Drafts': %s"
-#~ msgstr "Fout bij het opslaan van de compositie naar 'Klad': %s"
-
-#~ msgid "Failed to perform regex search on message header: %s"
-#~ msgstr "Fout bij het uitoefenen van regex zoekactie op bericht kop: %s"
-
-#~ msgid "You have no Outbox configured"
-#~ msgstr "Er is geen \"Postvak uit\" geconfigureerd"
-
-#~ msgid ""
-#~ "Could not open file %s:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Kon bestand %s niet openen:\n"
-#~ "%s"
-
-#~ msgid "Registering local folder"
-#~ msgstr "Bezig met registreren lokale map"
-
-#~ msgid "Fetching email from %s"
-#~ msgstr "Bezig met ophalen post van %s"
-
-#~ msgid "Fetch email from %s"
-#~ msgstr "Post ophalen van %s"
-
-#~ msgid "Filtering email on demand"
-#~ msgstr "Bezig met op verzoek filteren van post"
-
-#~ msgid "Filter email on demand"
-#~ msgstr "Filter post op verzoek"
-
-#~ msgid "Sending queue"
-#~ msgstr "Bezig met verzenden wachtrij"
-
-#~ msgid "Send queue"
-#~ msgstr "Verzendings wachtrij"
-
-#~ msgid "Appending \"%s\""
-#~ msgstr "Bezig met toevoegen \"%s\""
-
-#~ msgid "Appending a message without a subject"
-#~ msgstr "Bezig met toevoegen van een bericht zonder onderwerp"
-
-#~ msgid "Moving messages from \"%s\" into \"%s\""
-#~ msgstr "Bezig met Verplaatsen berichten van \"%s\" naar \"%s\""
-
-#~ msgid "Copying messages from \"%s\" into \"%s\""
-#~ msgstr "Bezig met kopiëren berichten van \"%s\" naar \"%s\""
-
-#~ msgid "Move messages from \"%s\" into \"%s\""
-#~ msgstr "Verplaats berichten van \"%s\" naar \"%s\""
-
-#~ msgid "Copy messages from \"%s\" into \"%s\""
-#~ msgstr "Kopiëer berichten van \"%s\" naar \"%s\""
-
-#~ msgid "(No description)"
-#~ msgstr "(Geen beschrijving)"
-
-#~ msgid "Loading %s Folder for %s"
-#~ msgstr "Bezig met laden %s Map"
-
-#~ msgid "Load %s Folder for %s"
-#~ msgstr "Laad \"%s\" Map"
-
-#~ msgid ""
-#~ "Error while preparing to %s:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Fout tijden het preparen van %s:\n"
-#~ "%s"
-
-#~ msgid ""
-#~ "Error while `%s':\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Fout tijdens `%s':\n"
-#~ "%s"
-
-#~ msgid "Error reading commands from dispatching thread."
-#~ msgstr ""
-#~ "Fout tijdens het lezen van commando's van het verzendende parallele proces"
-
-#~ msgid "Corrupted message from dispatching thread?"
-#~ msgstr "Verminkt bericht van het verzend parallel proces?"
-
-#~ msgid "Could not create dialog box."
-#~ msgstr "Kon dialoog venster niet aanmaken."
-
-#~ msgid "Examining %s"
-#~ msgstr "Bezig met Bestuderen %s"
-
-#~ msgid ""
-#~ "Could not read UID cache file \"%s\". You may receive duplicate messages."
-#~ msgstr ""
-#~ "Kon UID cache bestand \"%s\" niet lezen. Je zou dubbele berichten kunnen "
-#~ "ontvangen."
-
-#~ msgid "Retrieving message %d of %d"
-#~ msgstr "Bezig met ophalen bericht %d van %d"
-
-#~ msgid "Saving changes to %s"
-#~ msgstr "Bezig met opslaan wijzingen aan %s"
-
-#~ msgid "Get store for \"%s\""
-#~ msgstr "Bezig met vergaren opslag voor \"%s\""
-
-#~ msgid "Unsubscribe from folder \"%s\""
-#~ msgstr "Afmelden bij map \"%s\""
-
-#~ msgid "FIXME: _Appointment"
-#~ msgstr "FIXME: _Afspraak"
-
-#~ msgid "FIXME: Meeting Re_quest"
-#~ msgstr "FIXME: Verzoek tot Vergadering"
-
-#~ msgid "FIXME: _Mail Message"
-#~ msgstr "FIXME: _Mail bericht"
-
-#~ msgid "FIXME: _Contact"
-#~ msgstr "FIXME: _Contact"
-
-#~ msgid "FIXME: _Task"
-#~ msgstr "FIXME: _Taak"
-
-#~ msgid "FIXME: Task _Request"
-#~ msgstr "FIXME: Taak Verzoek"
-
-#~ msgid "FIXME: _Journal Entry"
-#~ msgstr "FIXME: Dagboek Item"
-
-#~ msgid "FIXME: _Note"
-#~ msgstr "FIXME: Aanteke_ning"
-
-#~ msgid "FIXME: Ch_oose Form..."
-#~ msgstr "FIXME: Seleecteer F_ormulier"
-
-#~ msgid "FIXME: _Memo Style"
-#~ msgstr "FIXME: _Memo Stijl"
-
-#~ msgid "FIXME: Define Print _Styles..."
-#~ msgstr "FIXME: Definiëer Print _Stijlen..."
-
-#~ msgid "FIXME: S_end"
-#~ msgstr "FIXME: V_ersturen"
-
-#~ msgid "FIXME: Save Attac_hments..."
-#~ msgstr "FIXME: Aanhangels Opslaan..."
-
-#~ msgid "FIXME: _Move to Folder..."
-#~ msgstr "FIXME: Verplaats naar Folder..."
-
-#~ msgid "FIXME: Cop_y to Folder..."
-#~ msgstr "FIXME: Kopieer naar Folder..."
-
-#~ msgid "Page Set_up"
-#~ msgstr "Pagina instellingen"
-
-#~ msgid "FIXME: Print Pre_view"
-#~ msgstr "FIXME: Afdruk_voorbeeld"
-
-#~ msgid "FIXME: Paste _Special..."
-#~ msgstr "FIXME: Plakken _Speciaal..."
-
-#~ msgid "FIXME: Mark as U_nread"
-#~ msgstr "Markeer Als Ongelezen"
-
-#~ msgid "_Object"
-#~ msgstr "_Object"
-
-#~ msgid "FIXME: _Item"
-#~ msgstr "FIXME: _Item"
-
-#~ msgid "FIXME: _Unread Item"
-#~ msgstr "FIXME: Ongelezen Item"
-
-#~ msgid "FIXME: _Standard"
-#~ msgstr "FIXME: _Standaard"
-
-#~ msgid "FIXME: __Formatting"
-#~ msgstr "FIXME: Opmaak"
-
-#~ msgid "Ne_xt"
-#~ msgstr "Volgende"
-
-#~ msgid "_Toolbars"
-#~ msgstr "_Werkbalk"
-
-#~ msgid "FIXME: _File..."
-#~ msgstr "FIXME: Bestand..."
-
-#~ msgid "FIXME: It_em..."
-#~ msgstr "FIXME: It_em..."
-
-#~ msgid "FIXME: _Object..."
-#~ msgstr "FIXME: _Object..."
-
-#~ msgid "FIXME: _Font..."
-#~ msgstr "FIXME: _Font..."
-
-#~ msgid "FIXME: _Paragraph..."
-#~ msgstr "FIXME: _Paragraaf..."
-
-#~ msgid "FIXME: Desi_gn This Form"
-#~ msgstr "FIXME: Ontwerp dit Formulier"
-
-#~ msgid "FIXME: D_esign a Form..."
-#~ msgstr "FIXME: Ontw_erp een Formulier..."
-
-#~ msgid "FIXME: Publish _Form..."
-#~ msgstr "FIXME: Publiceer een _Formulier..."
-
-#~ msgid "FIXME: Pu_blish Form As..."
-#~ msgstr "FIXME: Pu_bliceer een Formulier als..."
-
-#~ msgid "FIXME: Script _Debugger"
-#~ msgstr "FIXME: Script _Debugger"
-
-#~ msgid "FIXME: _Spelling..."
-#~ msgstr "FIXME: _Spelling..."
-
-#~ msgid "_Forms"
-#~ msgstr "_Formulier"
-
-#~ msgid "FIXME: _New Contact"
-#~ msgstr "FIXME: _Nieuw Contact"
-
-#~ msgid "FIXME: New _Contact from Same Company"
-#~ msgstr "FIXME: Nieuw _Contact van Zelfde Bedrijf"
-
-#~ msgid "FIXME: New _Letter to Contact"
-#~ msgstr "FIXME: Nieuwe Brief naar Contact"
-
-#~ msgid "FIXME: New _Message to Contact"
-#~ msgstr "FIXME: Nieuwe Brief naar Contact"
-
-#~ msgid "FIXME: New Meetin_g with Contact"
-#~ msgstr "FIXME: Nieuwe Afspraak met Contact"
-
-#~ msgid "FIXME: _Plan a Meeting..."
-#~ msgstr "FIXME: Een Afspraak _Plannen..."
-
-#~ msgid "FIXME: New _Task for Contact"
-#~ msgstr "FIXME: Nieuwe _Taak for contact"
-
-#~ msgid "FIXME: New _Journal Entry for Contact"
-#~ msgstr "FIXME: Nieuwe Dagboek "
-
-#~ msgid "FIXME: _Flag for Follow Up..."
-#~ msgstr "FIXME: _Vlag voor Vervolg..."
-
-#~ msgid "FIXME: _Display Map of Address"
-#~ msgstr "FIXME: Toon Folder met Adressen"
-
-#~ msgid "FIXME: _Open Web Page"
-#~ msgstr "FIXME: Pagina Bekijken"
-
-#~ msgid "FIXME: Forward as _vCard"
-#~ msgstr "FIXME: Doorsturen als _vCard"
-
-#~ msgid "FIXME: For_ward"
-#~ msgstr "FIXME: Doorsturen"
-
-#~ msgid "FIXME: Previous"
-#~ msgstr "FIXME: Vorige"
-
-#~ msgid "FIXME: Next"
-#~ msgstr "FIXME: Volgende"
-
-#~ msgid "Group %i"
-#~ msgstr "Group %i"
-
-#~ msgid "C_lassification:"
-#~ msgstr "C_lassificatie:"
-
-#~ msgid "task-editor-dialog"
-#~ msgstr "taak-bewerkings-dialoogvenster"
-
-#~ msgid "Days"
-#~ msgstr "Dagen"
-
-#~ msgid "Hours"
-#~ msgstr "Uren"
-
-#~ msgid "Mail _to:"
-#~ msgstr "Post _naar:"
-
-#~ msgid "Minutes"
-#~ msgstr "Minuten"
-
-#~ msgid "Time"
-#~ msgstr "Resterende tijd"
-
-#~ msgid "_Audio"
-#~ msgstr "_Geluid"
-
-#~ msgid "_Mail"
-#~ msgstr "_Post"
-
-#~ msgid "_Program"
-#~ msgstr "_Programma"
-
-#~ msgid "event-editor-dialog"
-#~ msgstr "gebeurtenis-bewerkings-dialoog"
-
-#~ msgid "UNIX MH-format mail directories (CamelLocal version)"
-#~ msgstr "UNIX MH-formaat post directories (CamelLocal versie)"
-
-#~ msgid "UNIX mbox-format mail files (CamelLocal version)"
-#~ msgstr "UNIX mbox-formaat post bestanden (CamelLocal versie)"
-
-#~ msgid "UNIX qmail maildir-format mail files (CamelLocal version)"
-#~ msgstr "UNIX qmail maildir-formaat e-mail bestanden (CamelLocal versie)"
-
-#~ msgid "Show all hidden"
-#~ msgstr "Allen Weergeven"
-
-#~ msgid "Hide selected"
-#~ msgstr "Verwijderd"
-
-#~ msgid "Hide deleted"
-#~ msgstr "Verwijderd"
-
-#~ msgid "Hide Subject"
-#~ msgstr "Onderwerp"
-
-#~ msgid "Hide from Sender"
-#~ msgstr "Filter op Afzender"
-
-#~ msgid "Hide Subject \"%s\""
-#~ msgstr "Onderwerp is %s"
-
-#~ msgid "You have no mail sources configured"
-#~ msgstr "Je hebt geen post bronnen geconfigureerd"
-
-#~ msgid "Congratulations, your mail configuration is complete.\n"
-#~ msgstr "Gefeliciteerd, je e-mail configuratie is compleet."
-
-#~ msgid "Reply-to:"
-#~ msgstr "Antwoord-naar:"
-
-#~ msgid "Server Timeouts"
-#~ msgstr "Server Type: "
-
-#~ msgid ""
-#~ "Enter your name and email address to be used in outgoing mail. You may also, "
-#~ "optionally, enter the name of your organization, and the name of a file to "
-#~ "read your signature from."
-#~ msgstr ""
-#~ "Geef de naam en e-mail adres op voor uitgaande mail. Je kan ook de naam van "
-#~ "het het bedrijf oppgeven, en de naam van het bestand waar je signature in "
-#~ "staat."
-
-#~ msgid "Full name:"
-#~ msgstr "Volledige naam:"
-
-#~ msgid "Signature File"
-#~ msgstr "Signatuur Bestand"
-
-#~ msgid "Server:"
-#~ msgstr "Server:"
-
-#~ msgid "Mail source type:"
-#~ msgstr "Post bron type:"
-
-#~ msgid ""
-#~ "Select the kind of mail server you have, and enter the relevant information "
-#~ "about it.\n"
-#~ "\n"
-#~ "If the server requires authentication, you can click the \"Detect supported "
-#~ "types...\" button after entering the other information."
-#~ msgstr ""
-#~ "Selecteer het soort postserver, en de overige benodigde infomatie.\n"
-#~ "\n"
-#~ "Als de server authenticatie vereist, kan je op \"Detecteer ondersteunde "
-#~ "types...\" klikken nadat je de overige informatie hebt ingevuld."
-
-#~ msgid "News source type:"
-#~ msgstr "Nieuws bron type:"
-
-#~ msgid ""
-#~ "Select the kind of news server you have, and enter the relevant information "
-#~ "about it.\n"
-#~ "\n"
-#~ "If the server requires authentication, you can click the \"Detect supported "
-#~ "types...\" button after entering the other information."
-#~ msgstr ""
-#~ "Selecteer het soort mailserver, en de overige benodigde informatie.\n"
-#~ "\n"
-#~ "Als de server authenticatie vereist, kan je op \"Detecteer ondersteunde "
-#~ "types...\" klikken nadat je de overige informatie hebt ingevuld."
-
-#~ msgid "Mail transport type:"
-#~ msgstr "Mail transport type:"
-
-#~ msgid ""
-#~ "Select the kind of mail server you have, and enter the relevant information "
-#~ "about it.\n"
-#~ "If the server requires authentication, you can click the \"Detect supported "
-#~ "types...\" button after entering the other information."
-#~ msgstr ""
-#~ "Selecteer het soort postserver, en de overige benodigde infomatie.\n"
-#~ "\n"
-#~ "Als de server authenticatie vereist, kan je op \"Detecteer ondersteunde "
-#~ "types...\" klikken nadat je de overige informatie hebt ingevuld."
-
-#~ msgid "Add Identity"
-#~ msgstr "Identiteit Toevoegen"
-
-#~ msgid "Edit Identity"
-#~ msgstr "Identiteit Bewerken"
-
-#~ msgid "Edit Source"
-#~ msgstr "Bron Bewerken"
-
-#~ msgid "Add News Server"
-#~ msgstr "Nieuwe Nieuws Server Toevoegen"
-
-#~ msgid "Edit News Server"
-#~ msgstr "Bewerk Nieuws Server"
-
-#~ msgid "The connection was successful!"
-#~ msgstr "De verbinding was successvol!"
-
-#~ msgid "Querying authorization capabilities of \"%s\""
-#~ msgstr "Bezig met uitzoeken van aanmeldings mogelijkheden van \"%s\""
-
-#~ msgid "Query authorization at \"%s\""
-#~ msgstr "Aanmeldings mogelijkheden van \"%s\" onderzoeken"
-
-#~ msgid "Identities"
-#~ msgstr "Identiteiten"
-
-#~ msgid "Mail Sources"
-#~ msgstr "Post Bronnen"
-
-#~ msgid "Mail Transport"
-#~ msgstr "Post Transport"
-
-#~ msgid "News Servers"
-#~ msgstr "Nieuws Servers"
-
-#~ msgid "News Sources"
-#~ msgstr "Nieuws Bronnen"
-
-#~ msgid "Send messages in HTML format"
-#~ msgstr "Stuur berichten in HTML formaat"
-
-#~ msgid "No GPG/PGP support available in this copy of Evolution."
-#~ msgstr ""
-#~ "Geen GPG/PGP ondersteuning beschikbaar in deze versie van Evolution."
-
-#~ msgid "Open a calendar"
-#~ msgstr "Open een kalender"
-
-#~ msgid "FIXME: Chec_k Names"
-#~ msgstr "FIXME: Controleer Namen"
-
-#~ msgid "FIXME: Help"
-#~ msgstr "FIXME: Help"
-
-#~ msgid "FIXME: In_complete Task"
-#~ msgstr "FIXME: Niet complete taak"
-
-#~ msgid "FIXME: Insert File"
-#~ msgstr "FIXME: Bestand Bijvoegen"
-
-#~ msgid "FIXME: Rec_urrence..."
-#~ msgstr "FIXME: _Herhaling..."
-
-#~ msgid "FIXME: _Formatting"
-#~ msgstr "FIXME: _Opmaak"
-
-#~ msgid "FIXME: _New Appointment"
-#~ msgstr "FIXME: _Nieuwe Afspraak"
-
-#~ msgid "Find _Again"
-#~ msgstr "Opnieuw _Vinden"
-
-#~ msgid "_Find..."
-#~ msgstr "_Vind..."
-
-#~ msgid "_Redo"
-#~ msgstr "_Herhalen"
-
-#~ msgid "_Replace..."
-#~ msgstr "Ve_rvangen..."
-
-#~ msgid "_Undo"
-#~ msgstr "_Ongedaan maken"
-
-#~ msgid "_Source"
-#~ msgstr "_Bron"
-
-#~ msgid "External Directories"
-#~ msgstr "Externe Directories"
-
-#~ msgid "Port Number:"
-#~ msgstr "Poort:"
-
-#~ msgid "Outline:"
-#~ msgstr "Buitenlijn:"
-
-#~ msgid "Headings:"
-#~ msgstr "Koppen:"
-
-#~ msgid "Highlighted day:"
-#~ msgstr "Gemarkeerde dag:"
-
-#~ msgid "Day numbers:"
-#~ msgstr "Dag nummers:"
-
-#~ msgid "Current day's number:"
-#~ msgstr "Nummer van vandaag:"
-
-#~ msgid "To-Do item that is not yet due:"
-#~ msgstr "To-Do item dat nog niet verlopen is:"
-
-#~ msgid "To-Do item that is due today:"
-#~ msgstr "To-Do item dat vandaag af moet:"
-
-#~ msgid "To-Do item that is overdue:"
-#~ msgstr "To-Do item dat af moest zijn:"
-
-#~ msgid "may"
-#~ msgstr "may"
-
-#~ msgid "sept"
-#~ msgstr "sept"
-
-#~ msgid "sunday"
-#~ msgstr "zondag"
-
-#~ msgid "monday"
-#~ msgstr "maandag"
-
-#~ msgid "tuesday"
-#~ msgstr "dinsdag"
-
-#~ msgid "tues"
-#~ msgstr "di"
-
-#~ msgid "wednesday"
-#~ msgstr "woensdag"
-
-#~ msgid "wednes"
-#~ msgstr "woe"
-
-#~ msgid "thursday"
-#~ msgstr "donderdag"
-
-#~ msgid "thur"
-#~ msgstr "do"
-
-#~ msgid "thurs"
-#~ msgstr "don"
-
-#~ msgid "friday"
-#~ msgstr "vrijdag"
-
-#~ msgid "saturday"
-#~ msgstr "zaterdag"
-
-#~ msgid "fortnight"
-#~ msgstr "twee weken"
-
-#~ msgid "min"
-#~ msgstr "min"
-
-#~ msgid "sec"
-#~ msgstr "sec"
-
-#~ msgid "tomorrow"
-#~ msgstr "morgen"
-
-#~ msgid "yesterday"
-#~ msgstr "gisteren"
-
-#~ msgid "today"
-#~ msgstr "vandaag"
-
-#~ msgid "last"
-#~ msgstr "afgelopen"
-
-#~ msgid "this"
-#~ msgstr "deze"
-
-#~ msgid "next"
-#~ msgstr "volgende"
-
-#~ msgid "first"
-#~ msgstr "eerste"
-
-#~ msgid "third"
-#~ msgstr "derde"
-
-#~ msgid "fourth"
-#~ msgstr "vierde"
-
-#~ msgid "fifth"
-#~ msgstr "vijfde"
-
-#~ msgid "sixth"
-#~ msgstr "zesde"
-
-#~ msgid "seventh"
-#~ msgstr "sevende"
-
-#~ msgid "eighth"
-#~ msgstr "achtste"
-
-#~ msgid "ninth"
-#~ msgstr "negende"
-
-#~ msgid "tenth"
-#~ msgstr "tiende"
-
-#~ msgid "eleventh"
-#~ msgstr "elfde"
-
-#~ msgid "twelfth"
-#~ msgstr "twaalfde"
-
-#~ msgid "ago"
-#~ msgstr "geleden"
-
-#~ msgid "Year:"
-#~ msgstr "Jaar:"
-
-#~ msgid ""
-#~ "Please select the date you want to go to.\n"
-#~ "When you click on a day, you will be taken\n"
-#~ "to that date."
-#~ msgstr ""
-#~ "Selecteer de datum waar je naar toe wil.\n"
-#~ "Wanneer op je die dag klikt, ga je naar die\n"
-#~ "dag toe."
-
-#~ msgid "Mail Source"
-#~ msgstr "Post Bron"
-
-#~ msgid "Send a message without a subject"
-#~ msgstr "Stuur een bericht zonder onderwerp"
-
-#~ msgid "Expunge \"%s\""
-#~ msgstr "Legen \"%s\""
-
-#~ msgid "Marking messages in folder \"%s\""
-#~ msgstr "Bezig met Markeren berichten in map \"%s\""
-
-#~ msgid "Mark messages in folder \"%s\""
-#~ msgstr "Markeer berichten in map \"%s\""
-
-#~ msgid "Scan folders in \"%s\""
-#~ msgstr "Scan mappen in \"%s\""
-
-#~ msgid "Attaching messages from folder \"%s\""
-#~ msgstr "Bezig met bijvoegen berichten uit map \"%s\""
-
-#~ msgid "Attach messages from \"%s\""
-#~ msgstr "Voeg berichten van \"%s\" bij"
-
-#~ msgid "Forwarding messages \"%s\""
-#~ msgstr "Bezig met Doorsturen berichten \"%s\""
-
-#~ msgid "Forwarding a message without a subject"
-#~ msgstr "Bezig met doorsturen berichten zonder onderwerp"
-
-#~ msgid "Forward message \"%s\""
-#~ msgstr "Bericht \"%s\" doorsturen"
-
-#~ msgid ""
-#~ "Failed to generate mime part from message while generating forwarded message."
-#~ msgstr ""
-#~ "Fout bij genereren mime deel van bericht tijden het genereren van het door "
-#~ "te sturen bericht."
-
-#~ msgid "Loading \"%s\""
-#~ msgstr "Bezig met laden \"%s\""
-
-#~ msgid "Load \"%s\""
-#~ msgstr "Laden \"%s\""
-
-#~ msgid "Creating \"%s\""
-#~ msgstr "Bezig met Maken \"%s\""
-
-#~ msgid "Create \"%s\""
-#~ msgstr "Maken \"%s\""
-
-#~ msgid "Exception while reporting result to shell component listener."
-#~ msgstr ""
-#~ "Uitzondering tijdens het rapporteren van het resultaat aan de 'shell "
-#~ "component listener'."
-
-#~ msgid "Synchronize \"%s\""
-#~ msgstr "Synchronizeren \"%s\""
-
-#~ msgid "Displaying message UID \"%s\""
-#~ msgstr "Bezig met weergeven UID van bericht \"%s\""
-
-#~ msgid "Clearing message display"
-#~ msgstr "Bezig met leegmaken berichtweergave"
-
-#~ msgid "Display message UID \"%s\""
-#~ msgstr "Geef UID van bericht \"%s\" weer"
-
-#~ msgid "Opening messages from folder \"%s\""
-#~ msgstr "Bezig met openen berichten uit map \"%s\""
-
-#~ msgid "Open messages from \"%s\""
-#~ msgstr "Open berichten van \"%s\""
-
-#~ msgid "Viewing messages from folder \"%s\""
-#~ msgstr "Bezig met bekijken berichten uit map \"%s\""
-
-#~ msgid "View messages from \"%s\""
-#~ msgstr "Bekijk berichten uit \"%s\""
-
-#~ msgid "Retrieving message %d of %d (uid \"%s\")"
-#~ msgstr "Bezig met ophalen bericht %d van %d (uid \"%s\")"
-
-#~ msgid "Save messages from folder \"%s\""
-#~ msgstr "Bezig met opslaan berichten uit map \"%s\""
-
-#~ msgid "Rebuilding message view"
-#~ msgstr "Bezig met herstructureren van bericht weergave"
-
-#~ msgid "Rebuild message view"
-#~ msgstr "Herstructureer bericht weergave"
-
-#~ msgid "N_ew Directory Server"
-#~ msgstr "Ni_euwe Directory Server"
-
-#~ msgid "_Save Calendar As"
-#~ msgstr "_Bewaar Kalender Als"
-
-#~ msgid "_Mail Configuration"
-#~ msgstr "_Post Configuratie"
-
-#~ msgid "Could not create summary"
-#~ msgstr "Kon samenvatting niet maken"
-
-#~ msgid "Could not rename folder %s to %s: destination exists"
-#~ msgstr ""
-#~ "Kon de naam van de map niet wijzigen van %s naar %s: de map bestaat al"
-
-#~ msgid "Mbox folders may not be nested."
-#~ msgstr "Mbox mappen mogen niet recursief in elkaar worden opgenomen."
-
-#~ msgid "Could not open summary %s"
-#~ msgstr "Kon samenvatting %s niet openen"
-
-#~ msgid "Summary mismatch, aborting sync"
-#~ msgstr "Samenvattingen niet gelijk, synchroniseren word afgebroken"
-
-#~ msgid "Summary mismatch, X-Evolution header missing"
-#~ msgstr "Samenvattingen niet gelijk, X-Evolution kop ontbreekt"
-
-#~ msgid "Cannot copy data to output file: %s"
-#~ msgstr "Kan de gegevens niet naar het uitvoerbestand kopiëren: %s"
-
-#~ msgid "Could not load or create summary"
-#~ msgstr "Kon samenvatting niet aanmaken of laden"
-
-#~ msgid "Cannot append message to mh folder: %s"
-#~ msgstr "Kan bericht niet toevoegen aan mh map: %s"
-
-#~ msgid "Could not rename folder `%s': %s"
-#~ msgstr "Kon de naam van map `%s' niet wijzigen: %s"
-
-#~ msgid "Could not rename folder `%s': %s exists"
-#~ msgstr "Kon de naam van map `%s' niet wijzigen: %s bestaat al"
-
-#~ msgid "MH folders may not be nested."
-#~ msgstr "MH mappen mogen niet recursief in elkaar worden opgenomen."
-
-#~ msgid "Local mail directory %s"
-#~ msgstr "Directory voor lokale post %s"
-
-#~ msgid "Cannot initialize Evolution's mail storage hash."
-#~ msgstr ""
-#~ "Kan het post \"hash\" opslag gedeelte van Evolution niet initialiseren."
-
-#~ msgid "Forward as Attachment"
-#~ msgstr "Bekijk als Bijvoegsel"
-
-#~ msgid "Couldn't create pipe to %s: %s"
-#~ msgstr "Kon de kanaal naar %s niet maken: %s"
-
-#~ msgid "Could not execute %s: %s\n"
-#~ msgstr "Kon %s niet uitvoeren: %s\n"
-
-#~ msgid "Cannot fork %s: %s"
-#~ msgstr "Kan %s niet starten: %s"
-
-#~ msgid "Bold"
-#~ msgstr "Vet"
-
-#~ msgid "Sets something as bold"
-#~ msgstr "Stelt iets in als vet"
-
-#~ msgid "window2"
-#~ msgstr "venster2"
-
-#~ msgid "does not match regex"
-#~ msgstr "niet gelijk aan reguliere expressie"
-
-#~ msgid "Add Optional Fields..."
-#~ msgstr "Optionele Velden Toevoegen..."
-
-#~ msgid "Additional Identity Fields"
-#~ msgstr "Optionele Identiteits Velden"
-
-#~ msgid "Browse..."
-#~ msgstr "Bladeren..."
-
-#~ msgid "Edit Mail Configuration Settings"
-#~ msgstr "Bewerk Post Configuratie Instellingen"
-
-#~ msgid "Preferred type: "
-#~ msgstr "Voorkeurstype:"
-
-#~ msgid ""
-#~ "You are almost done with the mail configuration process. The identity, "
-#~ "incoming"
-#~ msgstr ""
-#~ "Je bent bijna klaar met het post configuratie proces. De indentiteit, "
-#~ "inkomend"
-
-#~ msgid ""
-#~ "Your mail server supports the following types of authentication. Please"
-#~ msgstr ""
-#~ "Je mail server ondersteund de volgende authenticatie typen. Alsjeblieft"
-
-#~ msgid "_New appointment..."
-#~ msgstr "_Nieuwe Afspraak..."
-
-#~ msgid "_Create New Folder..."
-#~ msgstr "Nieu_we map aanmaken..."
-
-#~ msgid "Create to-do item"
-#~ msgstr "Maak een To-Do item aan"
-
-#~ msgid "Edit to-do item"
-#~ msgstr "Bewerk To-Do item"
-
-#~ msgid "Due Date:"
-#~ msgstr "Verloop Datum:"
-
-#~ msgid "Priority:"
-#~ msgstr "Prioriteit:"
-
-#~ msgid "Item Comments:"
-#~ msgstr "Item Commentaar:"
-
-#~ msgid "Time display"
-#~ msgstr "Tijd weergave"
-
-#~ msgid "Time format"
-#~ msgstr "Tijdsformaat"
-
-#~ msgid "12-hour (AM/PM)"
-#~ msgstr "12-uurs (AM/PM)"
-
-#~ msgid "24-hour"
-#~ msgstr "24-uurs"
-
-#~ msgid "Weeks start on"
-#~ msgstr "Week begint op"
-
-#~ msgid "Day range"
-#~ msgstr "Dag bereik"
-
-#~ msgid ""
-#~ "Please select the start and end hours you want\n"
-#~ "to be displayed in the day view and week view.\n"
-#~ "Times outside this range will not be displayed\n"
-#~ "by default."
-#~ msgstr ""
-#~ "Selecteer de begin en eind uren die je wilt weergeven\n"
-#~ "in het dag en week overzicht. Tijden buiten dit bereik\n"
-#~ "zullen niet automatisch worden weergegeven."
-
-#~ msgid "Day end:"
-#~ msgstr "Einddag:"
-
-#~ msgid "Colors for display"
-#~ msgstr "Kleuren voor beeld"
-
-#~ msgid "Show on TODO List:"
-#~ msgstr "Weergeven op To-Do Lijst:"
-
-#~ msgid "To Do List style options:"
-#~ msgstr "To-Do lijst stijl opties:"
-
-#~ msgid "Highlight overdue items"
-#~ msgstr "Markeer items die zijn verlopen"
-
-#~ msgid "Highlight not yet due items"
-#~ msgstr "Markeer items die nog niet zijn verlopen"
-
-#~ msgid "To Do List Properties"
-#~ msgstr "To-Do lijst Eigenschappen"
-
-#~ msgid "To Do List"
-#~ msgstr "To-Do Lijst"
-
-#~ msgid "Preferences"
-#~ msgstr "Instellingen"
-
-#~ msgid "Alarm Properties"
-#~ msgstr "Alarm Eigenschappen"
-
-#~ msgid "Beep on display alarms"
-#~ msgstr "Piep bij weergave alarm"
-
-#~ msgid "Audio alarms timeout after"
-#~ msgstr "Geluid alarm stopt na"
-
-#~ msgid "Enable snoozing for "
-#~ msgstr "Maak sluimeren mogelijk voor "
-
-#~ msgid "Viewing message sources from folder \"%s\""
-#~ msgstr "Bezig met bekijken bericht bronnen uit map \"%s\""
-
-#~ msgid "View message sources from \"%s\""
-#~ msgstr "Bekijk bericht bronnen uit \"%s\""
-
-#~ msgid "Threading message list"
-#~ msgstr "Bezig met weergeven van onderlinge relaties in berichtenlijst"
-
-#~ msgid "Thread message list"
-#~ msgstr "Berichtenlijst weergeven met onderlinge relaties"
-
-#~ msgid "BLARG\n"
-#~ msgstr "BLARG\n"
-
-#~ msgid "Quick Search"
-#~ msgstr "Snel Zoeken"
-
-#~ msgid "Recur on the"
-#~ msgstr "Herhaal op de"
-
-#~ msgid "th day of the month"
-#~ msgstr "de dag van de maand"
-
-#~ msgid ""
-#~ "This appointment has custom recurrence rules that cannot be edited by "
-#~ "Evolution.\n"
-#~ "\n"
-#~ "However, the appointment will recur at the appropriate time and will be "
-#~ "displayed properly in the calendar views."
-#~ msgstr ""
-#~ "Deze afspraak heeft aangepaste herhalings regels die niet kunnen worden "
-#~ "bewerkt door \n"
-#~ "Evolution.\n"
-#~ "\n"
-#~ "Maar, deze afspraak zal zich wel herhalen op de juiste tijd en zal juist "
-#~ "worden \n"
-#~ "weergegeven op de kalender."
-
-#~ msgid "Bad storage URL (no server): %s"
-#~ msgstr "Slechte opslag URL (geen server): %s"
-
-#~ msgid "Custom search"
-#~ msgstr "Aangepast zoeken"
-
-#~ msgid ""
-#~ "Welcome to the Evolution Mail configuration wizard!\n"
-#~ "By filling in some information about your email\n"
-#~ "settings, you can start sending and receiving email\n"
-#~ "right away. Click Next to continue."
-#~ msgstr ""
-#~ "Welkom bij de Evolutie Post configuratie wizard!\n"
-#~ "Door het invullen van wat informatie over je email\n"
-#~ "instellingen kun je direct e-mail versturen en ontvangen.\n"
-#~ "Klik op Volgende om verder te gaan."
-
-#~ msgid " (XXX unread)"
-#~ msgstr " (XXX ongelezen)"
-
-#~ msgid "Don't know protocol to open URI `%s'"
-#~ msgstr "Geen protocol om URI `%s' te openen"
-
-#~ msgid "Forward Message"
-#~ msgstr "Bericht Doorsturen"
-
-#~ msgid "Copy Message"
-#~ msgstr "Bericht Kopiëren"
-
-#~ msgid "Gpilotd address conduit"
-#~ msgstr "Gpilotd adres kanaal"
-
-#~ msgid "(C) 1998 the Free Software Foundation"
-#~ msgstr "(C) 1998 the Free Software Foundation"
-
-#~ msgid "Address holds %ld address entries"
-#~ msgstr "Address bevat %ld adressen"
-
-#~ msgid "Error while communicating with address server"
-#~ msgstr "Fout bij communiceren met adres server"
-
-#~ msgid "FIXME: _New Task"
-#~ msgstr "FIXME: _Nieuwe Taak"
-
-#~ msgid "FIXME: _Mark Complete"
-#~ msgstr "FIXME: _Markeer Volledig"
-
-#~ msgid "FIXME: Assig_n Task"
-#~ msgstr "FIXME: Ken Taak Toe"
-
-#~ msgid "FIXME: _Reply"
-#~ msgstr "FIXME: Beantwoorden"
-
-#~ msgid "FIXME: Reply to A_ll"
-#~ msgstr "FIXME: Iedereen beantwoorden"
-
-#~ msgid "FIXME: Print..."
-#~ msgstr "FIXME: Afdrukken"
-
-#~ msgid "Insert a file as an attachment"
-#~ msgstr "Bestand als attachmente invoegen"
-
-#~ msgid "FIXME: Assign Task..."
-#~ msgstr "FIXME: Ken Taak Toe..."
-
-#~ msgid "Assign the task to someone"
-#~ msgstr "Ken de taak aan iemand toe"
-
-#~ msgid "FIXME: Ca_lendar..."
-#~ msgstr "FIXME: Ka_lender..."
-
-#~ msgid "Save and close this appointment"
-#~ msgstr "Deze afspraak opslaan en sluiten"
-
-#~ msgid "Invite attendees to a meeting"
-#~ msgstr "Nodig gasten uit op een afspraak"
-
-#~ msgid "_Summary:"
-#~ msgstr "_Samenvatting:"
-
-#~ msgid ""
-#~ "Minutes\n"
-#~ "Hours\n"
-#~ "Days\n"
-#~ msgstr ""
-#~ "Minutes\n"
-#~ "Uren\n"
-#~ "Dagen\n"
-
-#~ msgid "Daily"
-#~ msgstr "Dagelijks"
-
-#~ msgid "Weekly"
-#~ msgstr "Weekelijks"
-
-#~ msgid "Monthly"
-#~ msgstr "Maandelijks"
-
-#~ msgid "Yearly"
-#~ msgstr "Jaarlijks"
-
-#~ msgid "label23"
-#~ msgstr "label23"
-
-#~ msgid "Every "
-#~ msgstr "Elke "
-
-#~ msgid "label24"
-#~ msgstr "label24"
-
-#~ msgid ""
-#~ "1st\n"
-#~ "2nd\n"
-#~ "3rd\n"
-#~ "4th\n"
-#~ "5th\n"
-#~ msgstr ""
-#~ "eerste\n"
-#~ "tweede\n"
-#~ "derde\n"
-#~ "vierde\n"
-#~ "vijfde\n"
-
-#~ msgid ""
-#~ "Monday\n"
-#~ "Tuesday\n"
-#~ "Wednesday\n"
-#~ "Thursday\n"
-#~ "Friday\n"
-#~ "Saturday\n"
-#~ "Sunday\n"
-#~ msgstr ""
-#~ "Maandag\n"
-#~ "Dindag\n"
-#~ "Woensdag\n"
-#~ "Donderdag\n"
-#~ "Vrijdag\n"
-#~ "Zaterdag\n"
-#~ "Zondag\n"
-
-#~ msgid "label27"
-#~ msgstr "label27"
-
-#~ msgid "Ending date"
-#~ msgstr "Eind datum"
-
-#~ msgid "Change"
-#~ msgstr "Veranderen"
-
-#~ msgid "Cut selected item into clipboard"
-#~ msgstr "Knip het geselecteerde item naar het klembord"
-
-#~ msgid "Copy selected item into clipboard"
-#~ msgstr "Kopieer het geselecteerde item naar het klembord"
-
-#~ msgid "Select recipients' addresses"
-#~ msgstr "Selecteer de geadresseerden"
-
-#~ msgid "Search..."
-#~ msgstr "Zoeken..."
-
-#~ msgid "To: >>"
-#~ msgstr "Aan: >>"
-
-#~ msgid "Cc: >>"
-#~ msgstr "Cc: >>"
-
-#~ msgid "Bcc: >>"
-#~ msgstr "Bcc: >>"
-
-#~ msgid "label9"
-#~ msgstr "label9"
-
-#~ msgid "label7"
-#~ msgstr "label7"
-
-#~ msgid "label8"
-#~ msgstr "label8"
-
-#~ msgid "Load a previously saved message"
-#~ msgstr "Laad een eerder opgeslagen bericht"
-
-#~ msgid "Send _Now"
-#~ msgstr "_Nu Versturen"
-
-#~ msgid "Quit the message composer"
-#~ msgstr "Sluit het bericht venster"
-
-#~ msgid "More criterion"
-#~ msgstr "Meer criteria:"
-
-#~ msgid "Fewer criterion"
-#~ msgstr "Minder criteria"
-
-#~ msgid "Run filter \"%s\""
-#~ msgstr "Start filter \"%s\""
-
-#~ msgid "Could not read pilot's DateBook application block"
-#~ msgstr "Kon het 'Datebook' applicatie blok niet uit de pilot lezen"
-
-#~ msgid "Gnome Calendar"
-#~ msgstr "Gnome Kalender"
-
-#~ msgid "The GNOME personal calendar and schedule manager."
-#~ msgstr "Het GNOME persoonlijke kalender en rooster beheer."
-
-#~ msgid "Year"
-#~ msgstr "Jaar"
-
-#~ msgid "Show 1 year"
-#~ msgstr "Toon 1 jaar"
-
-#~ msgid "%s%s"
-#~ msgstr "%s%s"
-
-#~ msgid "'s calendar"
-#~ msgstr "'s zijn kalender"
-
-#~ msgid "FIXME: _Delete"
-#~ msgstr "FIXME: Verwij_deren"
-
-#~ msgid "FIXME: Save and Close"
-#~ msgstr "FIXME: Opslaan en sluiten"
-
-#~ msgid "FIXME: Recurrence..."
-#~ msgstr "FIXME: Herhaling..."
-
-#~ msgid "Configure recurrence rules"
-#~ msgstr "Configureer herhalings regels"
-
-#~ msgid "FIXME: Delete"
-#~ msgstr "FIXME: Verwijderen"
-
-#~ msgid "S_ubject:"
-#~ msgstr "Onderwerp:"
-
-#~ msgid ""
-#~ "Not Started\n"
-#~ "In Progress\n"
-#~ "Completed\n"
-#~ "Cancelled\n"
-#~ msgstr ""
-#~ "Niet Gestart\n"
-#~ "Onderweg\n"
-#~ "Klaar\n"
-#~ "Afgebroken\n"
-
-#~ msgid ""
-#~ "High\n"
-#~ "Normal\n"
-#~ "Low\n"
-#~ msgstr ""
-#~ "Hoog\n"
-#~ "Normaal\n"
-#~ "Laag\n"
-
-#~ msgid "Resources:"
-#~ msgstr "Bronnen:"
-
-#~ msgid "Due date"
-#~ msgstr "Verloop Datum"
-
-#~ msgid "FIXME: Invite _Attendees..."
-#~ msgstr "FIXME: Nodig _Gasten Uit..."
-
-#~ msgid "FIXME: C_ancel Invitation..."
-#~ msgstr "FIXME: _Annuleer Uitnodiging..."
-
-#~ msgid "Time Left"
-#~ msgstr "Resterende tijd"
-
-#~ msgid "To-do list"
-#~ msgstr "To-Do lijst"
-
-#~ msgid "Edit..."
-#~ msgstr "Bewerken..."
-
-#~ msgid "Weeks"
-#~ msgstr "Weken"
-
-#~ msgid "Hour"
-#~ msgstr "Uur"
-
-#~ msgid "Minute"
-#~ msgstr "Minuut"
-
-#~ msgid "Seconds"
-#~ msgstr "Seconden"
-
-#~ msgid "Second"
-#~ msgstr "Seconde"
-
-#~ msgid "TODO Items"
-#~ msgstr "TODO Items"
-
-#~ msgid "%a"
-#~ msgstr "%a"
-
-#~ msgid "%b"
-#~ msgstr "%b"
-
-#~ msgid "Current week (%s %s %d - %s %s %d %d)"
-#~ msgstr "Current week (%s %s %d - %s %s %d %d)"
-
-#~ msgid "Current week (%s %s %d %d - %s %s %d %d)"
-#~ msgstr "Current week (%s %s %d %d - %s %s %d %d)"
-
-#~ msgid "_Format"
-#~ msgstr "_Formaat"
-
-#~ msgid "Less"
-#~ msgstr "Minder"
-
-#~ msgid ""
-#~ "You need to configure the mail client\n"
-#~ "before you can compose mail."
-#~ msgstr ""
-#~ "Je moet het mail programma configuren\n"
-#~ "voordat je mail kunt versturen."
-
-#~ msgid "Bad folder passed to fetch_mail"
-#~ msgstr "Slechte map gepasseerd naar fetch_mail"
-
-#~ msgid "Loading Draftbox"
-#~ msgstr "Bezig met laden Kladvak"
-
-#~ msgid "Load Draftbox"
-#~ msgstr "Laden Kladvak"
-
-#~ msgid "The component now claims that it doesn't support PersistStream!"
-#~ msgstr "Het component claimt nu dat het geen PersistStream ondersteund!"
-
-#~ msgid ""
-#~ "An exception occured while trying to load data into the component with "
-#~ "PersistStream"
-#~ msgstr ""
-#~ "Een uitzondering trad op tijdens het proberen van het laden van het "
-#~ "component\n"
-#~ "in PersistStream"
-
-#~ msgid "The %s component doesn't support PersistStream!\n"
-#~ msgstr "Het %s component ondersteund geen PersistStream!\n"
-
-#~ msgid "Open Mime Message"
-#~ msgstr "Open Mime Bericht"
-
-#~ msgid "Grouping"
-#~ msgstr "Groeperen"
-
-#~ msgid "Filter"
-#~ msgstr "Filter"
-
-#~ msgid "Field Chooser"
-#~ msgstr "Veld Kiezer"
-
-#~ msgid ""
-#~ "To add a column to your table, drag it into\n"
-#~ "the location in which you want it to appear."
-#~ msgstr ""
-#~ "Om een kolom toe te voegen in de tabel, moet je\n"
-#~ "het slepen naar de plaats waar je de kolum wilt."
-
-#~ msgid "window1"
-#~ msgstr "window1"
-
-#~ msgid "Available fields"
-#~ msgstr "Beschikbare velden"
-
-#~ msgid "Show in this order"
-#~ msgstr "Toon in deze volgorde"
-
-#~ msgid "label2"
-#~ msgstr "label2"
-
-#~ msgid "Add >>"
-#~ msgstr "Toevoegen >>"
-
-#~ msgid "<< Remove"
-#~ msgstr "<< Verwijderen"
-
-#~ msgid "Sort Ascending"
-#~ msgstr "Sorteer Oplopend"
-
-#~ msgid "Sort Descending"
-#~ msgstr "Sorteer Aflopend"
-
-#~ msgid "Unsort"
-#~ msgstr "Sortering Opheffen"
-
-#~ msgid "Group By This Field"
-#~ msgstr "Groeperen Op Dit Veld"
-
-#~ msgid "Group By Box"
-#~ msgstr "Grouperen Per Vak"
-
-#~ msgid "Alignment"
-#~ msgstr "Uitlijning:"
-
-#~ msgid "Best Fit"
-#~ msgstr "Meest Passend"
-
-#~ msgid "Format Columns..."
-#~ msgstr "Kolom Opmaak..."
-
-#~ msgid "New appointment for _today..."
-#~ msgstr "Nieuwe afspraak voor vandaag..."
-
-#~ msgid "Create a new appointment for today"
-#~ msgstr "Maak een nieuwe afspraak voor vandaag"
-
-#~ msgid "Cut selected region into the clipboard"
-#~ msgstr "Knip het geselecteerde gebied naar het klembord"
-
-#~ msgid "Copy selected region into the clipboard"
-#~ msgstr "Kopieer het geselecteerde gebied naar het klembord"
-
-#~ msgid "Paste selected region into the clipboard"
-#~ msgstr "Plak het geselecteerde gebied vanuit het klembord"
-
-#~ msgid "Back"
-#~ msgstr "Terug"
-
-#~ msgid "Finish"
-#~ msgstr "Afmaken"
-
-#~ msgid "Apply"
-#~ msgstr "Toepassen"
-
-#~ msgid ""
-#~ "<h2>Create Filtering Rule</h2><p>Select one of the base rules above, then "
-#~ "continue forwards to customise it.</p>"
-#~ msgstr ""
-#~ "<h2>Cre-eer Filter Regel</h2><p>Selecteer een van de basis-regels hierboven, "
-#~ "en ga dan door om hem aan te passen.</p>"
-
-#~ msgid "_Filter Druid ..."
-#~ msgstr "_Filter Wizard..."
-
-#~ msgid "Test these values before continuing"
-#~ msgstr "Controleer deze waarden voordat je doorgaat"
-
-#~ msgid "Select the method you would like to use to deliver your mail."
-#~ msgstr "Selecteer de methode die je wil gebruiken om de mail te bezorgen."
-
-#~ msgid "Enter the hostname of the News Server you have."
-#~ msgstr "Geef de hostname van uw News Server."
-
-#~ msgid "Currently pending operations:"
-#~ msgstr "Opdrachten die nog uitgevoerd moeten worden:"
-
-#~ msgid "Composes a new mail message"
-#~ msgstr "Stelt een nieuw bericht op"
-
-#~ msgid "Cannot initialize the configuration system."
-#~ msgstr "Kan het configuratie-systeem niet initialiseren."
-
-#~ msgid "Evolution can not create its local folders"
-#~ msgstr "Evolution kan zijn lokale mappen niet maken"
-
-#~ msgid "We are sorry, Evolution's Folder Browser can not be initialized."
-#~ msgstr "Het spijt ons, Evolution's Map Bladeraar kon niet worden geladen."
-
-#~ msgid "Whether a message preview should be shown"
-#~ msgstr "Of een voorbeeld-bericht getoond moet worden"
-
-#~ msgid "Clos_e All Items"
-#~ msgstr "Alle Items _Sluiten"
-
-#~ msgid "Closes all the open items"
-#~ msgstr "Sluit alle geopende items"
-
-#~ msgid "Show _Treeview"
-#~ msgstr "_Boomoverzicht Tonen"
-
-#~ msgid ""
-#~ "This is a development version of Evolution.\n"
-#~ "Using the mail component on your mail files\n"
-#~ "is extremely hazardous.\n"
-#~ "\n"
-#~ "Do not run this program on your real mail\n"
-#~ " and do not give it access to your real mail server.\n"
-#~ "\n"
-#~ "You have been warned\n"
-#~ msgstr ""
-#~ "Dit is een ontwikkel-versie van Evolution.\n"
-#~ "Het gebruik van het email-gedeelte op uw mail bestanden\n"
-#~ "is erg af te raden.\n"
-#~ "\n"
-#~ "Gebruik dit programma niet om uw echte email mee\n"
-#~ "te lezen en geef het geen toegang tot uw echte mail server.\n"
-#~ "\n"
-#~ "U bent gewaarschuwd\n"
-
-#~ msgid "A folder containing mail items"
-#~ msgstr "Een map die de mail items bevat"
-
-#~ msgid "A folder containing calendar entries"
-#~ msgstr "Een map die kalender entries bevat"
-
-#~ msgid "A service containing mail items"
-#~ msgstr "Een dienst die mail items bevat"
-
-#~ msgid "A service containing contacts"
-#~ msgstr "Een dienst die contacten bevat"
-
-#~ msgid "A service containing calendar entries"
-#~ msgstr "Een dienst die kalender entries bevat"
-
-#~ msgid "A service containing tasks"
-#~ msgstr "Een dienst die taken bevat"
-
-#~ msgid "Rename Group"
-#~ msgstr "Naam Wijzigen Groep"
-
-#~ msgid "Advanced Find"
-#~ msgstr "Geavanceerd Zoeken"
-
-#~ msgid "Rename Shortcut"
-#~ msgstr "Naam Wijzigen Snelkoppeling"
-
-#~ msgid "Tasks list"
-#~ msgstr "Taaklisjt"
-
-#~ msgid "Enables some debugging functions"
-#~ msgstr "Zet wat debugging functies aan"
-
-#~ msgid "LEVEL"
-#~ msgstr "LEVEL"
-
-#~ msgid ""
-#~ "It was not possible to setup the Evolution startup files. Please\n"
-#~ "fix the problem, and restart Evolution"
-#~ msgstr ""
-#~ "Het was niet mogelijk om de Evolution opstartbestanden de installeren.\n"
-#~ "Repareer het probleem, en start Evolution overnieuw."
diff --git a/po/nn.po b/po/nn.po
deleted file mode 100644
index 69f2983339..0000000000
--- a/po/nn.po
+++ /dev/null
@@ -1,9970 +0,0 @@
-# Norwegian (Nynorsk) KDE translation.
-# Copyright (C) 2000 Gaute Hvoslef Kvalnes.
-# Gaute Hvoslef Kvalnes <ai98ghk@stud.hib.no>, 2000.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: KDE PIM/abbrowser\n"
-"POT-Creation-Date: 2001-03-15 11:10+0100\n"
-"PO-Revision-Date: 2000-09-07 20:17+02:00\n"
-"Last-Translator: Gaute Hvoslef Kvalnes <ai98ghk@stud.hib.no>\n"
-"Language-Team: Norwegian (Nynorsk)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: addressbook/backend/ebook/e-card.c:3053
-#, fuzzy
-msgid "Card: "
-msgstr "Teikn"
-
-#: addressbook/backend/ebook/e-card.c:3055
-#, fuzzy
-msgid ""
-"\n"
-"Name: "
-msgstr "Navn:"
-
-#: addressbook/backend/ebook/e-card.c:3056
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3057
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3058
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3059
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3060
-#, fuzzy
-msgid ""
-"\n"
-" Suffix: "
-msgstr "Etterstaving"
-
-#: addressbook/backend/ebook/e-card.c:3074
-#, fuzzy
-msgid ""
-"\n"
-"Birth Date: "
-msgstr "Start-dato:"
-
-#: addressbook/backend/ebook/e-card.c:3085
-#, fuzzy
-msgid ""
-"\n"
-"Address:"
-msgstr "Adresse"
-
-#: addressbook/backend/ebook/e-card.c:3087
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3088
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3089
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3090
-msgid ""
-"\n"
-" City: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3091
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3092
-#, fuzzy
-msgid ""
-"\n"
-" Postal Code: "
-msgstr "ZIP/Postnummer"
-
-#: addressbook/backend/ebook/e-card.c:3093
-#, fuzzy
-msgid ""
-"\n"
-" Country: "
-msgstr "Land:"
-
-#: addressbook/backend/ebook/e-card.c:3106
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3118
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3121
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3145
-#, fuzzy
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr "E-post 2"
-
-#: addressbook/backend/ebook/e-card.c:3148
-#, fuzzy
-msgid ""
-"\n"
-"E-mail:"
-msgstr "E-post 2"
-
-#: addressbook/backend/ebook/e-card.c:3167
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3173
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3181
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3185
-#, fuzzy
-msgid ""
-"\n"
-"Business Role: "
-msgstr "Firma"
-
-#: addressbook/backend/ebook/e-card.c:3197
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3198
-#, fuzzy
-msgid ""
-"\n"
-" Name: "
-msgstr "Navn:"
-
-#: addressbook/backend/ebook/e-card.c:3199
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3200
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3201
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3202
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3206
-#, fuzzy
-msgid ""
-"\n"
-"Categories: "
-msgstr "Kategoriar"
-
-#: addressbook/backend/ebook/e-card.c:3207
-#, fuzzy
-msgid ""
-"\n"
-"Comment: "
-msgstr "Kommentar:"
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3220
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3223
-#, fuzzy
-msgid ""
-"\n"
-"Public Key: "
-msgstr "Praksis"
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:1
-msgid "Factory to import GnomeCard files into Evolution."
-msgstr ""
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:2
-msgid "Imports GnomeCard files into Evolution."
-msgstr ""
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:16
-#: addressbook/backend/ebook/load-pine-addressbook.c:17
-#: addressbook/backend/ebook/test-client-list.c:18
-#: addressbook/backend/ebook/test-client.c:29
-#: addressbook/conduit/address-conduit.c:1089
-#: addressbook/gui/component/addressbook-factory.c:39
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:68 calendar/gui/main.c:54
-msgid "Could not initialize Bonobo"
-msgstr "Kunne ikkje initiere Bonobo"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:651
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-#, fuzzy
-msgid "Could not start wombat server"
-msgstr "Kunne ikkje starta underprosess."
-
-#: addressbook/conduit/address-conduit.c:652
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-#, fuzzy
-msgid "Could not start wombat"
-msgstr "Kunne ikkje starta %1."
-
-#: addressbook/conduit/address-conduit.c:684
-#: addressbook/conduit/address-conduit.c:687
-msgid "Could not read pilot's Address application block"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:4
-msgid "Add"
-msgstr "Legg til"
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-#, fuzzy
-msgid "Anni_versary:"
-msgstr "Merkedag"
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-#, fuzzy
-msgid "B_usiness"
-msgstr "Firma"
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-#, fuzzy
-msgid "Business _Fax"
-msgstr "Firma-fax"
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-#, fuzzy
-msgid "C_ontacts..."
-msgstr "&Innhald ..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-#, fuzzy
-msgid "Ca_tegories..."
-msgstr "Kategoriar ..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-#, fuzzy
-msgid "Contact Editor"
-msgstr "Comment=X-redigering"
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr "Detaljar"
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-#, fuzzy
-msgid "File As:"
-msgstr "Arkiver som"
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-#: mail/mail-config.glade.h:27
-msgid "General"
-msgstr "Generelt"
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-#, fuzzy
-msgid "New phone type"
-msgstr "&Ny type"
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-#, fuzzy
-msgid "No_tes:"
-msgstr "Notat:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-#, fuzzy
-msgid "Phone Types"
-msgstr "Kjende typar"
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1271
-#, fuzzy
-msgid "Primary Email"
-msgstr "Primær&oppsett"
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-#, fuzzy
-msgid "Web page address:"
-msgstr "&WINS-adresse:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:80
-#, fuzzy
-msgid "_Add"
-msgstr "Legg til"
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-#, fuzzy
-msgid "_Address..."
-msgstr "Adresse"
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-#, fuzzy
-msgid "_Assistant's name:"
-msgstr "&Namn på assistent:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-#, fuzzy
-msgid "_Birthday:"
-msgstr "Fødselsdag:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-#, fuzzy
-msgid "_Business"
-msgstr "Firma"
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-#, fuzzy
-msgid "_Company:"
-msgstr "Firma:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/mail-config.glade.h:81 ui/evolution-event-editor.xml.h:57
-#: ui/evolution-mail.xml.h:61 ui/evolution-task-editor-dialog.xml.h:69
-#, fuzzy
-msgid "_Delete"
-msgstr "Slett"
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-#, fuzzy
-msgid "_Department:"
-msgstr "Avdeling:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-#, fuzzy
-msgid "_Full Name..."
-msgstr "Fullt namn"
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-#, fuzzy
-msgid "_Home"
-msgstr "Heim"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-#, fuzzy
-msgid "_Job title:"
-msgstr "Jobb-tittel"
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-#, fuzzy
-msgid "_Manager's Name:"
-msgstr "Namn på sjef"
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-#, fuzzy
-msgid "_Mobile"
-msgstr "Mobil:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-#, fuzzy
-msgid "_Nickname:"
-msgstr "Kallenamn:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-#, fuzzy
-msgid "_Office:"
-msgstr "K&ontor:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-#, fuzzy
-msgid "_Profession:"
-msgstr "&Yrke:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-#, fuzzy
-msgid "_Spouse:"
-msgstr "Ektefelle"
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-#, fuzzy
-msgid "_This is the mailing address"
-msgstr "Rediger e-post-adresser"
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-#, fuzzy
-msgid "Delete Contact?"
-msgstr "Slett kolonne"
-
-#: addressbook/contact-editor/e-contact-editor.c:590
-msgid "This contact belongs to these categories:"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1229
-#: addressbook/gui/widgets/e-addressbook-view.c:601
-#, fuzzy
-msgid "Assistant"
-msgstr "Namn på assistent"
-
-#: addressbook/contact-editor/e-contact-editor.c:1230
-#: addressbook/contact-editor/e-contact-editor.c:1297
-#: addressbook/gui/widgets/e-addressbook-view.c:581
-msgid "Business"
-msgstr "Firma"
-
-#: addressbook/contact-editor/e-contact-editor.c:1231
-#: addressbook/gui/widgets/e-addressbook-view.c:588
-#, fuzzy
-msgid "Business 2"
-msgstr "Firma"
-
-#: addressbook/contact-editor/e-contact-editor.c:1232
-#: addressbook/gui/widgets/e-addressbook-view.c:586
-msgid "Business Fax"
-msgstr "Firma-fax"
-
-#: addressbook/contact-editor/e-contact-editor.c:1233
-msgid "Callback"
-msgstr "Ring tilbake"
-
-#: addressbook/contact-editor/e-contact-editor.c:1234
-#: addressbook/gui/widgets/e-addressbook-view.c:585
-#, fuzzy
-msgid "Car"
-msgstr "Teikn"
-
-#: addressbook/contact-editor/e-contact-editor.c:1235
-msgid "Company"
-msgstr "Firma"
-
-#: addressbook/contact-editor/e-contact-editor.c:1236
-#: addressbook/contact-editor/e-contact-editor.c:1298
-#: addressbook/gui/widgets/e-addressbook-view.c:582
-msgid "Home"
-msgstr "Heim"
-
-#: addressbook/contact-editor/e-contact-editor.c:1237
-#: addressbook/gui/widgets/e-addressbook-view.c:589
-#, fuzzy
-msgid "Home 2"
-msgstr "Heim"
-
-#: addressbook/contact-editor/e-contact-editor.c:1238
-#: addressbook/gui/widgets/e-addressbook-view.c:587
-msgid "Home Fax"
-msgstr "Heime-faks"
-
-#: addressbook/contact-editor/e-contact-editor.c:1239
-#: addressbook/gui/widgets/e-addressbook-view.c:590
-msgid "ISDN"
-msgstr "ISDN"
-
-#: addressbook/contact-editor/e-contact-editor.c:1240
-#: addressbook/gui/widgets/e-addressbook-view.c:584
-#, fuzzy
-msgid "Mobile"
-msgstr "Mobil:"
-
-#: addressbook/contact-editor/e-contact-editor.c:1241
-#: addressbook/contact-editor/e-contact-editor.c:1299
-#: addressbook/gui/widgets/e-addressbook-view.c:591
-#: calendar/gui/e-meeting-dialog.glade.h:14 mail/mail-config.glade.h:46
-msgid "Other"
-msgstr "Anna"
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-msgid "Other Fax"
-msgstr "Alternativ faks"
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/gui/widgets/e-addressbook-view.c:592
-msgid "Pager"
-msgstr "Personsøkjar"
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-#: addressbook/gui/widgets/e-addressbook-view.c:580
-#, fuzzy
-msgid "Primary"
-msgstr "Privat"
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#, fuzzy
-msgid "Radio"
-msgstr "Tilfeldig"
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Telex"
-msgstr "Telex"
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-#, fuzzy
-msgid "TTY/TDD"
-msgstr "TTY/TDD-telefon"
-
-#: addressbook/contact-editor/e-contact-editor.c:1272
-#: addressbook/gui/widgets/e-addressbook-view.c:593
-#, fuzzy
-msgid "Email 2"
-msgstr "E-post 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1273
-#: addressbook/gui/widgets/e-addressbook-view.c:594
-#, fuzzy
-msgid "Email 3"
-msgstr "E-post 3"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:214
-msgid "Contact Quick-Add"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-quick-add.c:216
-#, fuzzy
-msgid "Edit Full"
-msgstr "Rediger fil"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:253
-#, fuzzy
-msgid "Full Name"
-msgstr "Fullt namn"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:259
-#, fuzzy
-msgid "E-mail"
-msgstr "E-post 2"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-#, fuzzy
-msgid "Address _2:"
-msgstr "Adresse"
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-#, fuzzy
-msgid "Canada"
-msgstr "Skriv ut alle"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-#, fuzzy
-msgid "Check Address"
-msgstr "Alternativ adresse"
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-#, fuzzy
-msgid "Countr_y:"
-msgstr "Land:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-#, fuzzy
-msgid "Finland"
-msgstr "Finn ..."
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr ""
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-#, fuzzy
-msgid "_Address:"
-msgstr "Adresse"
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-#, fuzzy
-msgid "_City:"
-msgstr "Stad:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-#, fuzzy
-msgid "_PO Box:"
-msgstr "Postboks"
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-#, fuzzy
-msgid "_State/Province:"
-msgstr "Stat/provins"
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-#, fuzzy
-msgid "_ZIP Code:"
-msgstr "ZIP/Postnummer"
-
-#: addressbook/contact-editor/fullname.glade.h:1
-#, fuzzy
-msgid "Check Full Name"
-msgstr "Fullt namn"
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:4
-#, fuzzy
-msgid "I"
-msgstr "I"
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:8
-#, fuzzy
-msgid "Miss"
-msgstr "er"
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:13
-#, fuzzy
-msgid "_First:"
-msgstr "Førenamn"
-
-#: addressbook/contact-editor/fullname.glade.h:14
-#, fuzzy
-msgid "_Last:"
-msgstr "Etternamn"
-
-#: addressbook/contact-editor/fullname.glade.h:15
-#, fuzzy
-msgid "_Middle:"
-msgstr "Midt på:"
-
-#: addressbook/contact-editor/fullname.glade.h:16
-#, fuzzy
-msgid "_Suffix:"
-msgstr "Etterstaving"
-
-#: addressbook/contact-editor/fullname.glade.h:17
-#, fuzzy
-msgid "_Title:"
-msgstr "Tittel:"
-
-#: addressbook/gui/component/addressbook.c:237
-#, fuzzy
-msgid "As _Minicards"
-msgstr "Bruk jokerteikn"
-
-#: addressbook/gui/component/addressbook.c:243
-#: ui/evolution-addressbook.xml.h:1
-#, fuzzy
-msgid "As _Table"
-msgstr "Tabell"
-
-#: addressbook/gui/component/addressbook.c:412
-#, c-format
-msgid "Enter password for %s"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:440
-#, fuzzy
-msgid "Unable to open addressbook"
-msgstr "Kan ikkje opna adresseboka."
-
-#: addressbook/gui/component/addressbook.c:445
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or have tried\n"
-"to access an LDAP server and don't have LDAP support\n"
-"compiled in. If you've entered a URI, check the URI for\n"
-"correctness and reenter. If not, you probably have\n"
-"attempted to access an LDAP server. If you wish to be\n"
-"able to use LDAP, you'll need to download and install\n"
-"OpenLDAP and recompile and install Evolution.\n"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:568
-msgid "Show All"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:570
-#, fuzzy
-msgid "Advanced..."
-msgstr "Legg til ..."
-
-#: addressbook/gui/component/addressbook.c:600
-msgid "Any field contains"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:601
-msgid "Name contains"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:602
-#, fuzzy
-msgid "Email contains"
-msgstr "Små ikon"
-
-#: addressbook/gui/component/addressbook.c:745
-msgid "The URI that the Folder Browser will display"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-storage.c:95
-#, fuzzy
-msgid "Other Contacts"
-msgstr "Slett kolonne"
-
-#: addressbook/gui/component/addressbook-config.c:143
-#, fuzzy
-msgid "LDAP Server"
-msgstr "Tenar:"
-
-#: addressbook/gui/component/addressbook-config.c:145
-#, fuzzy
-msgid "File"
-msgstr "Fil"
-
-#: addressbook/gui/component/addressbook-config.c:148
-#, fuzzy
-msgid "Unknown addressbook type"
-msgstr "Kan ikkje opna adresseboka."
-
-#: addressbook/gui/component/addressbook-config.c:158
-msgid "None (anonymous mode)"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:160
-#: camel/providers/imap/camel-imap-store.c:261
-#: camel/providers/nntp/camel-nntp-store.c:293
-#: camel/providers/pop3/camel-pop3-store.c:145
-msgid "Password"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:162
-msgid "SASL"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:165
-#, fuzzy
-msgid "Unknown auth type"
-msgstr "Ukjend feil"
-
-#: addressbook/gui/component/addressbook-config.c:174
-#, fuzzy
-msgid "Base"
-msgstr "Lim inn"
-
-#: addressbook/gui/component/addressbook-config.c:176
-msgid "One"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:178
-#, fuzzy
-msgid "Subtree"
-msgstr "Kjelder"
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "Unknown scope type"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:348
-msgid "Bind DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:349
-msgid "FIXME Bind DN Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:351
-msgid "Remember this password"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:401
-#: mail/mail-config.glade.h:28
-#, fuzzy
-msgid "Host:"
-msgstr "time/timar"
-
-#: addressbook/gui/component/addressbook-config.c:402
-msgid "FIXME Host help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:404
-#, fuzzy
-msgid "Port:"
-msgstr "Prioritet:"
-
-#: addressbook/gui/component/addressbook-config.c:405
-msgid "FIXME Port help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:409
-#, fuzzy
-msgid "Root DN:"
-msgstr "Rot"
-
-#: addressbook/gui/component/addressbook-config.c:410
-msgid "FIXME Root DN help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:430
-#, fuzzy
-msgid "Search Scope:"
-msgstr "Søk"
-
-#: addressbook/gui/component/addressbook-config.c:484
-#: mail/mail-config.glade.h:8
-msgid "Authentication:"
-msgstr "Autentisering:"
-
-#: addressbook/gui/component/addressbook-config.c:502
-#: mail/mail-config-druid.c:517 mail/mail-config.glade.h:49
-msgid "Path:"
-msgstr "Sti:"
-
-#: addressbook/gui/component/addressbook-config.c:503
-msgid "FIXME Path Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:508
-#, fuzzy
-msgid "Create path if it doesn't exist."
-msgstr "Fila finst ikkje\n"
-
-#: addressbook/gui/component/addressbook-config.c:642
-#, fuzzy
-msgid "Edit Addressbook"
-msgstr "KDE adressebok"
-
-#: addressbook/gui/component/addressbook-config.c:644
-#, fuzzy
-msgid "Add Addressbook"
-msgstr "KDE adressebok"
-
-#: addressbook/gui/component/addressbook-config.c:660
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:666
-#: mail/mail-config.glade.h:41
-msgid "Name:"
-msgstr "Navn:"
-
-#: addressbook/gui/component/addressbook-config.c:667
-msgid "FIXME Name help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:669
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr "Skildring:"
-
-#: addressbook/gui/component/addressbook-config.c:670
-msgid "FIXME Description help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-#, fuzzy
-msgid "Addressbook Sources"
-msgstr "Kjelde:"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:11 mail/folder-browser.c:571
-#: mail/mail-config.glade.h:20 mail/mail-view.c:150
-#: ui/evolution-addressbook.xml.h:3 ui/evolution-event-editor.xml.h:17
-#: ui/evolution-mail.xml.h:7 ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr "Slett"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:22
-msgid "Edit"
-msgstr "Rediger"
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-#: addressbook/gui/widgets/e-addressbook-view.c:578
-msgid "Name"
-msgstr "Namn"
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-#, fuzzy
-msgid "URI"
-msgstr "URL"
-
-#: addressbook/gui/component/e-address-widget.c:259
-#: addressbook/gui/component/select-names/e-select-names-popup.c:259
-#, fuzzy
-msgid "Add to Contacts"
-msgstr "Slett kolonne"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-msgid "A Bonobo control for displaying an address."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-#, fuzzy
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr "Oppsettfil lasta på nytt."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-#, fuzzy
-msgid "Evolution Addressbook minicard viewer"
-msgstr "Gpilotd adressekomponent"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-msgid "Evolution component for handling contacts."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-#, fuzzy
-msgid "Factory for the Addressbook Minicard control"
-msgstr "Øydelagd oppsettfil."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-msgid "Factory for the Addressbook's address displayer"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-#, fuzzy
-msgid "Factory for the Evolution addressbook component."
-msgstr "Øydelagd oppsettfil."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-#, fuzzy
-msgid "Factory for the sample Addressbook control"
-msgstr "Legg adresse til adresseboka"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-#, fuzzy
-msgid "Evolution's addressbook name selection interface."
-msgstr "Gpilotd adressekomponent"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr ""
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:121
-#: composer/e-msg-composer-attachment-bar.c:460 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:254 shell/e-shortcuts-view.c:377
-msgid "Remove"
-msgstr "Fjern"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:136
-#, fuzzy
-msgid "Remove All"
-msgstr "Fjern"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:200
-msgid "Edit Contact Info"
-msgstr ""
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr "Finn ..."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-#, fuzzy
-msgid "Message Recipients"
-msgstr "Melding motteken"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-#, fuzzy
-msgid "Select Names"
-msgstr "Merk område"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-#, fuzzy
-msgid "Select name from:"
-msgstr "Vel ei gruppe først."
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:150
-msgid "Search"
-msgstr "Søk"
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-#, fuzzy
-msgid "a"
-msgstr "am"
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-#, fuzzy
-msgid "b"
-msgstr "av"
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-#, fuzzy
-msgid "c"
-msgstr "cm"
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-#, fuzzy
-msgid "d"
-msgstr "Id"
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-#, fuzzy
-msgid "e"
-msgstr "Ons"
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-#, fuzzy
-msgid "f"
-msgstr "I"
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-#, fuzzy
-msgid "g"
-msgstr "gs"
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-#, fuzzy
-msgid "h"
-msgstr "4."
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-#, fuzzy
-msgid "i"
-msgstr "er"
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-#, fuzzy
-msgid "k"
-msgstr "Ok"
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-#, fuzzy
-msgid "m"
-msgstr "ms"
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-#, fuzzy
-msgid "n"
-msgstr "PÃ¥"
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-#, fuzzy
-msgid "o"
-msgstr "Nei"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-#, fuzzy
-msgid "p"
-msgstr "pm"
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-#, fuzzy
-msgid "r"
-msgstr "Dr"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr "s"
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-#, fuzzy
-msgid "t"
-msgstr "Qt"
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-#, fuzzy
-msgid "u"
-msgstr "Sum"
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr ""
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-#, fuzzy
-msgid "x"
-msgstr "Tx"
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-#, fuzzy
-msgid "y"
-msgstr "av"
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-#, fuzzy
-msgid "z"
-msgstr "Hz"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:481
-#: addressbook/gui/widgets/e-minicard.c:435
-#, fuzzy
-msgid "Save as VCard"
-msgstr "Lagra som"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:577
-#, fuzzy
-msgid "* Click here to add a contact *"
-msgstr "Trykk her for å leggja til ein ny virtuell vert."
-
-#: addressbook/gui/widgets/e-addressbook-view.c:579
-#, fuzzy
-msgid "Email"
-msgstr "E-post 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:583
-#, fuzzy
-msgid "Organization"
-msgstr "Organisasjon:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:595
-msgid "Web Site"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:596
-#, fuzzy
-msgid "Department"
-msgstr "Avdeling:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:597
-#, fuzzy
-msgid "Office"
-msgstr "K&ontor:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:598
-#, fuzzy
-msgid "Title"
-msgstr "Tittel:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:599
-#, fuzzy
-msgid "Profession"
-msgstr "&Yrke:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:600
-#, fuzzy
-msgid "Manager"
-msgstr "Personsøkjar"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:602
-#, fuzzy
-msgid "Nickname"
-msgstr "Kallenamn:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:603
-#, fuzzy
-msgid "Spouse"
-msgstr "Ektefelle"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:604
-#, fuzzy
-msgid "Note"
-msgstr "Ingen"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:605
-msgid "Free-busy URL"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:606
-#, fuzzy
-msgid "Click here to add a contact"
-msgstr "Trykk her for å leggja til ein ny virtuell vert."
-
-#: addressbook/gui/widgets/e-minicard-control.c:280
-#, fuzzy
-msgid "Save in addressbook"
-msgstr "KDE adressebok"
-
-#: addressbook/gui/widgets/e-minicard-view.c:141
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:25
-#, fuzzy
-msgid "Card View"
-msgstr "Teikn"
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr "Kropp"
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr "Botn:"
-
-#: addressbook/printing/e-contact-print.glade.h:6
-#, fuzzy
-msgid "Dimensions:"
-msgstr "Dimensjonar"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr "Skrifttype ..."
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr "Skrifttypar"
-
-#: addressbook/printing/e-contact-print.glade.h:9
-#, fuzzy
-msgid "Footer:"
-msgstr "Botntekst"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr "Format"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-msgid "Header"
-msgstr "Dekl."
-
-#: addressbook/printing/e-contact-print.glade.h:12
-#, fuzzy
-msgid "Header/Footer"
-msgstr "&Topp-/botntekst ..."
-
-#: addressbook/printing/e-contact-print.glade.h:13
-#, fuzzy
-msgid "Headings"
-msgstr "Les"
-
-#: addressbook/printing/e-contact-print.glade.h:14
-#, fuzzy
-msgid "Headings for each letter"
-msgstr "Les mapper"
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr "Høgd:"
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:17
-#, fuzzy
-msgid "Include:"
-msgstr "Inkluder fil"
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr "Liggjande"
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr "Venstre:"
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:21
-#, fuzzy
-msgid "Margins"
-msgstr "&Marg"
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-#, fuzzy
-msgid "Number of columns:"
-msgstr "Tal på kolonnar:"
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr "Val"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr "Retning"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr "Side"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-#, fuzzy
-msgid "Page Setup:"
-msgstr "Speloppsett"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr "Papir"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-#, fuzzy
-msgid "Paper source:"
-msgstr "Papir&storleik:"
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr "Ståande"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr "Førehandsvising:"
-
-#: addressbook/printing/e-contact-print.glade.h:31
-#, fuzzy
-msgid "Print using gray shading"
-msgstr "Skriv med grånyansar"
-
-#: addressbook/printing/e-contact-print.glade.h:32
-#, fuzzy
-msgid "Reverse on even pages"
-msgstr "Merk partal-sider"
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr "Høgre:"
-
-#: addressbook/printing/e-contact-print.glade.h:34
-#, fuzzy
-msgid "Sections:"
-msgstr "Del:"
-
-#: addressbook/printing/e-contact-print.glade.h:35
-#, fuzzy
-msgid "Shading"
-msgstr "Lagring"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-msgid "Size:"
-msgstr "Storleik:"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-#, fuzzy
-msgid "Start on a new page"
-msgstr "Startar nytt spel ..."
-
-#: addressbook/printing/e-contact-print.glade.h:38
-#, fuzzy
-msgid "Style name:"
-msgstr "Typenamn:"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr "Topp:"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-msgid "Type:"
-msgstr "Type:"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr "Breidd:"
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-#, fuzzy
-msgid "Error while communicating with calendar server"
-msgstr "Feil ved tilkopling til tenar."
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-#, fuzzy
-msgid "Could not read pilot's Calendar application block"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr ""
-
-#: calendar/gui/calendar-commands.c:233
-msgid "File not found"
-msgstr "Fann ikkje fil"
-
-#: calendar/gui/calendar-commands.c:257
-#, fuzzy
-msgid "Open calendar"
-msgstr "Feil ved opning"
-
-#: calendar/gui/calendar-commands.c:299
-#, fuzzy
-msgid "Save calendar"
-msgstr "Ny kalender"
-
-#: calendar/gui/calendar-commands.c:451
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:901
-#: calendar/gui/e-calendar-table.c:329
-#, fuzzy
-msgid "Public"
-msgstr "Praksis"
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/calendar-model.c:903
-#: calendar/gui/e-calendar-table.c:330
-msgid "Private"
-msgstr "Privat"
-
-#: calendar/gui/calendar-model.c:372 calendar/gui/calendar-model.c:905
-#: calendar/gui/e-calendar-table.c:331
-#, fuzzy
-msgid "Confidential"
-msgstr "Eksponentiell"
-
-#: calendar/gui/calendar-model.c:375 calendar/gui/event-editor.c:1590
-#: calendar/gui/event-editor.c:1617
-#: camel/providers/smtp/camel-smtp-transport.c:200
-msgid "Unknown"
-msgstr "Ukjend"
-
-#: calendar/gui/calendar-model.c:463
-#, fuzzy
-msgid "N"
-msgstr "Nr"
-
-#: calendar/gui/calendar-model.c:463
-msgid "S"
-msgstr "S"
-
-#: calendar/gui/calendar-model.c:465
-msgid "E"
-msgstr "E"
-
-#: calendar/gui/calendar-model.c:465
-#, fuzzy
-msgid "W"
-msgstr "RW"
-
-#: calendar/gui/calendar-model.c:503 calendar/gui/calendar-model.c:1069
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:351
-#, fuzzy
-msgid "High"
-msgstr "Høgd"
-
-#: calendar/gui/calendar-model.c:505 calendar/gui/calendar-model.c:1071
-#: calendar/gui/calendar-model.c:1596
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:352
-msgid "Normal"
-msgstr "Normal"
-
-#: calendar/gui/calendar-model.c:507 calendar/gui/calendar-model.c:1073
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:353
-#, fuzzy
-msgid "Low"
-msgstr "Senk"
-
-#: calendar/gui/calendar-model.c:543 calendar/gui/calendar-model.c:1125
-#: calendar/gui/e-calendar-table.c:405
-#, fuzzy
-msgid "Transparent"
-msgstr "Gjennomsiktig "
-
-#: calendar/gui/calendar-model.c:546 calendar/gui/calendar-model.c:1127
-#: calendar/gui/e-calendar-table.c:404
-#, fuzzy
-msgid "Opaque"
-msgstr "Opna"
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1179
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:425
-#, fuzzy
-msgid "Not Started"
-msgstr "Starta"
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1181
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:426
-#, fuzzy
-msgid "In Progress"
-msgstr "Framgong:"
-
-#: calendar/gui/calendar-model.c:647 calendar/gui/calendar-model.c:1183
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:427
-msgid "Completed"
-msgstr "Ferdig"
-
-#: calendar/gui/calendar-model.c:650 calendar/gui/calendar-model.c:1185
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:428
-#, fuzzy
-msgid "Cancelled"
-msgstr "Avbroten."
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:797 e-util/e-time-utils.c:276
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr ""
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:800 e-util/e-time-utils.c:285
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:805
-#, fuzzy, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr "Ein bandindeks må vera valt i treet."
-
-#: calendar/gui/calendar-model.c:885
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr ""
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:899 calendar/gui/calendar-model.c:1123
-#: calendar/gui/calendar-model.c:1177 calendar/gui/e-calendar-table.c:328
-#: calendar/gui/e-calendar-table.c:403 mail/mail-account-editor.c:756
-#: mail/mail-account-editor.c:758 mail/mail-account-editor.c:853
-#: mail/mail-accounts.c:115 mail/mail-config-druid.c:1090
-#: mail/mail-config.glade.h:43 shell/e-shell-view.c:1119
-#: widgets/misc/e-cell-date-edit.c:231 widgets/misc/e-dateedit.c:421
-#: widgets/misc/e-dateedit.c:1330 widgets/misc/e-dateedit.c:1445
-msgid "None"
-msgstr "Ingen"
-
-#: calendar/gui/calendar-model.c:973
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1013
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1054
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr ""
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1067
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:354
-msgid "Undefined"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1108
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1598
-#, fuzzy
-msgid "Recurring"
-msgstr "Repetering"
-
-#: calendar/gui/calendar-model.c:1600
-msgid "Assigned"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1606
-msgid "Yes"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1606
-#, fuzzy
-msgid "No"
-msgstr "&No"
-
-#: calendar/gui/calendar-summary.c:196
-#, fuzzy
-msgid "%A, %e %B %Y"
-msgstr "%1 bit %2 %3"
-
-#: calendar/gui/calendar-summary.c:239 calendar/gui/calendar-summary.c:245
-#, fuzzy
-msgid "%I:%M%p"
-msgstr "%H:%M"
-
-#: calendar/gui/calendar-summary.c:437
-#, fuzzy
-msgid "<b>Error loading calendar</b>"
-msgstr ""
-"Feil ved nedlasting av fil:\n"
-"%1"
-
-#: calendar/gui/calendar-summary.c:449
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:616
-#, fuzzy
-msgid "Display"
-msgstr "Vis"
-
-#: calendar/gui/calendar-summary.c:621
-#, fuzzy
-msgid "Show appointments"
-msgstr "Avtale"
-
-#: calendar/gui/calendar-summary.c:629
-#, fuzzy
-msgid "Show tasks"
-msgstr "Vedlegg"
-
-#: calendar/gui/calendar-summary.c:715 calendar/gui/e-itip-control.glade.h:7
-#, fuzzy
-msgid "Loading Calendar"
-msgstr "Skriv ut alle"
-
-#: calendar/gui/control-factory.c:126
-#, fuzzy
-msgid "The URI that the calendar will display"
-msgstr "Viser korleis datoverdiar vert viste."
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr ""
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-#, fuzzy
-msgid "Snooze"
-msgstr "Spooler"
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr "Ok"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr ""
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-msgid "Factory for the alarm notification service"
-msgstr ""
-
-#: calendar/gui/alarm-notify/notify-main.c:63 calendar/gui/main.c:49
-#, fuzzy
-msgid "Could not initialize GNOME"
-msgstr "Kunne ikkje initiere Bonobo"
-
-#: calendar/gui/alarm-notify/notify-main.c:73
-#, fuzzy
-msgid "Could not create the alarm notify service factory"
-msgstr ""
-"Kunne ikkje laga mellombels fil\n"
-"%1:\n"
-"%2"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:184
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:191
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:202
-#, fuzzy
-msgid "No summary available."
-msgstr "Ingen bilete tilgjengeleg."
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:2
-#, fuzzy
-msgid "Close"
-msgstr "Lukk"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-#, fuzzy
-msgid "Edit appointment"
-msgstr "&Endra avtale ..."
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-#, fuzzy
-msgid "Snooze time (minutes)"
-msgstr "LÃ¥g grense (minutt):"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-#, fuzzy
-msgid "05 minutes"
-msgstr "minutt"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-#, fuzzy
-msgid "10 minutes"
-msgstr "minutt"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-#, fuzzy
-msgid "15 minutes"
-msgstr "minutt"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-#, fuzzy
-msgid "24 hour"
-msgstr "time/timar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-#, fuzzy
-msgid "30 minutes"
-msgstr "minutt"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-#, fuzzy
-msgid "60 minutes"
-msgstr "minutt"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-#, fuzzy
-msgid "Audio Alarms"
-msgstr "Alarm"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-#, fuzzy
-msgid "Calendar"
-msgstr "Skriv ut alle"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-#, fuzzy
-msgid "Calendar Preferences"
-msgstr "Innstillingar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "Fargar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-msgid "Defaults"
-msgstr "Standard"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-#, fuzzy
-msgid "Display options"
-msgstr "Vis"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:161
-msgid "Due Date"
-msgstr "Forfallsdato"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-#, fuzzy
-msgid "End of day:"
-msgstr "Slutt trekk"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr "Fre"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:479
-#, fuzzy
-msgid "Friday"
-msgstr "Fredag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-#, fuzzy
-msgid "Highlight"
-msgstr "Opplysing:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-#, fuzzy
-msgid "Items Due Today"
-msgstr "&Opplys syntaks"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-#, fuzzy
-msgid "Items Due Today:"
-msgstr "&Opplys syntaks"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr "MÃ¥n"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:475
-msgid "Monday"
-msgstr "MÃ¥ndag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-#, fuzzy
-msgid "Overdue Items"
-msgstr "&Syntaksmerkingsmodusar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-#, fuzzy
-msgid "Overdue Items:"
-msgstr "&Syntaksmerkingsmodusar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-msgid "Pick a color"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:164
-msgid "Priority"
-msgstr "Prioritet"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-#, fuzzy
-msgid "Remind me of all appointments"
-msgstr "&Slett avtale"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-#, fuzzy
-msgid "Reminders"
-msgstr "PÃ¥minning:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr "Lau"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:480
-#, fuzzy
-msgid "Saturday"
-msgstr "Laurdag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-#, fuzzy
-msgid "Show appointment end times"
-msgstr "Avtale"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-#, fuzzy
-msgid "Show week numbers"
-msgstr "Vis %1"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-#, fuzzy
-msgid "Start of day:"
-msgstr "Start-dato"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr "Sun"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:481
-msgid "Sunday"
-msgstr "Sundag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-#, fuzzy
-msgid "TaskPad"
-msgstr "Oppgåve"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr "Tor"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:478
-#, fuzzy
-msgid "Thursday"
-msgstr "Torsdag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-#, fuzzy
-msgid "Time Until Due"
-msgstr "Tid og dato"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-#, fuzzy
-msgid "Time divisions:"
-msgstr "Dimensjonar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-#, fuzzy
-msgid "Time format:"
-msgstr "Tidsformat:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr "Tys"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:476
-#, fuzzy
-msgid "Tuesday"
-msgstr "Tysdag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-#, fuzzy
-msgid "Visual Alarms"
-msgstr "Alarm"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr "Ons"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:477
-#, fuzzy
-msgid "Wednesday"
-msgstr "Onsdag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-#, fuzzy
-msgid "Work week"
-msgstr "Veke"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:84
-#, fuzzy
-msgid "seconds."
-msgstr "sekund"
-
-#: calendar/gui/dialogs/delete-comp.c:68
-#, fuzzy, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr "Er du sikker på at du vil sletta denne klassen?"
-
-#: calendar/gui/dialogs/delete-comp.c:71
-#, fuzzy
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr "Er du sikker på at du vil sletta denne klassen?"
-
-#: calendar/gui/dialogs/delete-comp.c:77
-#, fuzzy, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr "Er du sikker på at du vil sletta denne klassen?"
-
-#: calendar/gui/dialogs/delete-comp.c:80
-#, fuzzy
-msgid "Are you sure you want to delete this untitled task?"
-msgstr "Er du sikker på at du vil sletta denne klassen?"
-
-#: calendar/gui/dialogs/delete-comp.c:86
-#, fuzzy, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr "Er du sikker på at du vil sletta denne klassen?"
-
-#: calendar/gui/dialogs/delete-comp.c:89
-#, fuzzy
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr "Er du sikker på at du vil sletta denne klassen?"
-
-#: calendar/gui/dialogs/save-comp.c:51
-#, fuzzy
-msgid "Do you want to save changes?"
-msgstr "I ferd med å senda e-post ..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, fuzzy, no-c-format
-msgid "% Comp_lete:"
-msgstr "Ferdig"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:157
-#: calendar/gui/event-editor-dialog.glade.h:6
-#, fuzzy
-msgid "Classification"
-msgstr "&Forstørring"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-#, fuzzy
-msgid "Date & Time"
-msgstr "Dato"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-#, fuzzy
-msgid "Date Completed:"
-msgstr "Ferdig"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-#, fuzzy
-msgid "Pri_vate"
-msgstr "Privat"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-#, fuzzy
-msgid "Progress"
-msgstr "Framgong:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-#, fuzzy
-msgid "Pu_blic"
-msgstr "Praksis"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-#, fuzzy
-msgid "Sta_rt Date:"
-msgstr "Start-dato:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-#, fuzzy
-msgid "Su_mmary:"
-msgstr "Samandrag:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr "Oppgåve"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-#, fuzzy
-msgid "URL:"
-msgstr "URL:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-#, fuzzy
-msgid "_Confidential"
-msgstr "Eksponentiell"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-#, fuzzy
-msgid "_Contacts..."
-msgstr "&Innhald ..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-#, fuzzy
-msgid "_Due Date:"
-msgstr "Forfallsdato:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-#, fuzzy
-msgid "_Priority:"
-msgstr "Prioritet:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-#, fuzzy
-msgid "_Status:"
-msgstr "Status:"
-
-#: calendar/gui/dialogs/task-editor.c:689
-msgid "Edit Task"
-msgstr "Rediger oppgåve"
-
-#: calendar/gui/dialogs/task-editor.c:695 calendar/gui/event-editor.c:377
-#, fuzzy
-msgid "No summary"
-msgstr "oppsummering"
-
-#: calendar/gui/dialogs/task-editor.c:701 calendar/gui/event-editor.c:383
-#, fuzzy, c-format
-msgid "Appointment - %s"
-msgstr "Avtale"
-
-#: calendar/gui/dialogs/task-editor.c:704 calendar/gui/event-editor.c:386
-#, fuzzy, c-format
-msgid "Task - %s"
-msgstr "Oppgåver"
-
-#: calendar/gui/dialogs/task-editor.c:707 calendar/gui/event-editor.c:389
-#, c-format
-msgid "Journal entry - %s"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:156
-#, fuzzy
-msgid "Categories"
-msgstr "Kategoriar"
-
-#: calendar/gui/e-calendar-table.c:158
-#, fuzzy
-msgid "Completion Date"
-msgstr "Fullføring"
-
-#: calendar/gui/e-calendar-table.c:159
-#, fuzzy
-msgid "End Date"
-msgstr "Slutt-dato"
-
-#: calendar/gui/e-calendar-table.c:160
-#, fuzzy
-msgid "Start Date"
-msgstr "Start-dato:"
-
-#: calendar/gui/e-calendar-table.c:162
-#, fuzzy
-msgid "Geographical Position"
-msgstr "Etikettplassering"
-
-#: calendar/gui/e-calendar-table.c:163
-#, fuzzy
-msgid "Percent complete"
-msgstr "Prosentformat"
-
-#: calendar/gui/e-calendar-table.c:165
-msgid "Summary"
-msgstr "Samandrag"
-
-#: calendar/gui/e-calendar-table.c:166
-#, fuzzy
-msgid "Transparency"
-msgstr "Gjennomsiktig "
-
-#: calendar/gui/e-calendar-table.c:167
-#, fuzzy
-msgid "URL"
-msgstr "URL:"
-
-#: calendar/gui/e-calendar-table.c:168
-#, fuzzy
-msgid "Alarms"
-msgstr "Alarm"
-
-#: calendar/gui/e-calendar-table.c:169
-#, fuzzy
-msgid "Click here to add a task"
-msgstr "Trykk her for å leggja til ein ny virtuell vert."
-
-#: calendar/gui/e-calendar-table.c:373
-#, c-format
-msgid "0%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "10%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "20%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "30%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "40%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:378
-#, c-format
-msgid "50%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:379
-#, c-format
-msgid "60%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:380
-#, c-format
-msgid "70%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:381
-#, c-format
-msgid "80%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:382
-#, c-format
-msgid "90%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:383
-#, c-format
-msgid "100%"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:550
-#, fuzzy
-msgid "Mark Complete"
-msgstr "Ferdig"
-
-#: calendar/gui/e-calendar-table.c:551
-#, fuzzy
-msgid "Mark the task complete"
-msgstr "Marker alle som l&esne"
-
-#: calendar/gui/e-calendar-table.c:556
-#, fuzzy
-msgid "Edit this task..."
-msgstr "&Endra avtale ..."
-
-#: calendar/gui/e-calendar-table.c:557
-#, fuzzy
-msgid "Edit the task"
-msgstr "Rediger oppgåve"
-
-#: calendar/gui/e-calendar-table.c:559
-#: ui/evolution-task-editor-dialog.xml.h:19
-#, fuzzy
-msgid "Delete this task"
-msgstr "Slett denne adressa"
-
-#: calendar/gui/e-calendar-table.c:560
-#, fuzzy
-msgid "Delete the task"
-msgstr "Slett denne adressa"
-
-#: calendar/gui/e-day-view-time-item.c:516
-#, c-format
-msgid "%02i minute divisions"
-msgstr ""
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:271 calendar/gui/e-day-view.c:1274
-#: calendar/gui/e-week-view-main-item.c:321
-msgid "%A %d %B"
-msgstr ""
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:275 calendar/gui/e-day-view.c:1288
-#: calendar/gui/e-week-view-main-item.c:330
-msgid "%a %d %b"
-msgstr ""
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:279 calendar/gui/e-day-view.c:1301
-#: calendar/gui/e-week-view-main-item.c:344
-#, fuzzy
-msgid "%d %b"
-msgstr "%1 %2"
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:556 calendar/gui/e-week-view.c:290
-#: calendar/gui/print.c:613
-msgid "am"
-msgstr "am"
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:559 calendar/gui/e-week-view.c:293
-#: calendar/gui/print.c:612
-msgid "pm"
-msgstr "pm"
-
-#: calendar/gui/e-day-view.c:3020 calendar/gui/e-day-view.c:3034
-#: calendar/gui/e-week-view.c:3228 calendar/gui/e-week-view.c:3242
-#, fuzzy
-msgid "New Appointment..."
-msgstr "&Vis avtale ..."
-
-#: calendar/gui/e-day-view.c:3026 calendar/gui/e-week-view.c:3234
-#: mail/folder-browser.c:542 ui/evolution-calendar.xml.h:15
-#: ui/evolution-message-composer.xml.h:10
-#, fuzzy
-msgid "Open"
-msgstr "Opna ..."
-
-#: calendar/gui/e-day-view.c:3028 calendar/gui/e-week-view.c:3236
-#, fuzzy
-msgid "Delete this Appointment"
-msgstr "&Slett avtale"
-
-#: calendar/gui/e-day-view.c:3030 calendar/gui/e-week-view.c:3238
-#: ui/evolution-event-editor.xml.h:45
-#, fuzzy
-msgid "Schedule Meeting"
-msgstr "Køyreplan ..."
-
-#: calendar/gui/e-day-view.c:3043 calendar/gui/e-week-view.c:3251
-#, fuzzy
-msgid "Make this Occurrence Movable"
-msgstr "Se&nd avtale"
-
-#: calendar/gui/e-day-view.c:3045 calendar/gui/e-week-view.c:3253
-#, fuzzy
-msgid "Delete this Occurrence"
-msgstr "Erstatt denne førekomsten?"
-
-#: calendar/gui/e-day-view.c:3047
-#, fuzzy
-msgid "Delete all Occurrences"
-msgstr "Slettar klassen"
-
-#: calendar/gui/e-itip-control.c:153
-#, fuzzy
-msgid "I couldn't update your calendar file!\n"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: calendar/gui/e-itip-control.c:159 calendar/gui/e-itip-control.c:502
-#, fuzzy
-msgid "Component successfully updated."
-msgstr "Alle filer vart sletta."
-
-#: calendar/gui/e-itip-control.c:165
-msgid "There was an error loading the calendar file."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:189
-msgid "I couldn't open your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:450 calendar/gui/e-itip-control.c:521
-msgid "I couldn't load your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:462
-#, fuzzy
-msgid "I couldn't read your calendar file!\n"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: calendar/gui/e-itip-control.c:475
-msgid "This is a reply from someone who was uninvited!"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:491
-#, fuzzy
-msgid "I couldn't update your calendar store."
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: calendar/gui/e-itip-control.c:532
-msgid "I couldn't delete the calendar component!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:542
-#, fuzzy
-msgid "Component successfully deleted."
-msgstr "Alle filer vart sletta."
-
-#: calendar/gui/e-itip-control.c:686
-#, fuzzy
-msgid "I don't recognize this type of calendar component."
-msgstr "Øydelagd oppsettfil."
-
-#: calendar/gui/e-itip-control.c:772
-#, fuzzy
-msgid "Add to Calendar"
-msgstr "Skriv ut alle"
-
-#: calendar/gui/e-itip-control.c:806
-#, fuzzy
-msgid "Accept"
-msgstr "Nullstill"
-
-#: calendar/gui/e-itip-control.c:807
-#, fuzzy
-msgid "Decline"
-msgstr "Slett"
-
-#: calendar/gui/e-itip-control.c:808
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:386
-msgid "Tentative"
-msgstr "Mellombels"
-
-#: calendar/gui/e-itip-control.c:852
-#, fuzzy
-msgid "Update Calendar"
-msgstr "Feil ved opning"
-
-#: calendar/gui/e-itip-control.c:875
-#, fuzzy
-msgid "Cancel Meeting"
-msgstr "Køyreplan ..."
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, fuzzy, no-c-format
-msgid "%P %%"
-msgstr "%1 bit %2 %3"
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:4
-#, fuzzy
-msgid "Calendar Message"
-msgstr "Skriv ut alle"
-
-#: calendar/gui/e-itip-control.glade.h:5
-#, fuzzy
-msgid "Date:"
-msgstr "Forfallsdato"
-
-#: calendar/gui/e-itip-control.glade.h:8
-#, fuzzy
-msgid "Loading calendar..."
-msgstr "Skriv ut alle"
-
-#: calendar/gui/e-itip-control.glade.h:9
-#, fuzzy
-msgid "Organizer:"
-msgstr "Organisasjon:"
-
-#: calendar/gui/e-itip-control.glade.h:10 filter/libfilter-i18n.h:38
-#, fuzzy
-msgid "Sender"
-msgstr "Send"
-
-#: calendar/gui/e-itip-control.glade.h:11
-#, fuzzy
-msgid "Summary:"
-msgstr "Samandrag:"
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:13
-#, fuzzy
-msgid "date-start"
-msgstr " start"
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-#, fuzzy
-msgid "Attendee"
-msgstr "Kontaktar"
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-#, fuzzy
-msgid "Attendee address"
-msgstr "Gateadresse"
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-#, fuzzy
-msgid "Attendees: "
-msgstr "Kontaktar"
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-#, fuzzy
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr "Køyreplan ..."
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-#, fuzzy
-msgid "Chair"
-msgstr "Teikn"
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-#, fuzzy
-msgid "Meeting Invitations"
-msgstr "&Helsingstekst:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-#, fuzzy
-msgid "Organizer: "
-msgstr "Organisasjon:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:15
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid "RSVP"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:18
-#, fuzzy
-msgid ""
-"Request\n"
-"Meeting"
-msgstr "Køyreplan ..."
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-msgid "Required Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-#, fuzzy
-msgid "Role"
-msgstr "Mobil:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:22
-#, fuzzy
-msgid ""
-"Schedule\n"
-"Time"
-msgstr "Køyreplan ..."
-
-#: calendar/gui/e-meeting-dialog.glade.h:24 filter/libfilter-i18n.h:44
-#: mail/message-list.c:1171
-#, fuzzy
-msgid "Status"
-msgstr "Status:"
-
-#: calendar/gui/e-tasks.c:148 calendar/gui/e-tasks.c:468
-#: calendar/gui/e-tasks.c:501
-msgid "All"
-msgstr ""
-
-#: calendar/gui/e-tasks.c:154
-#, fuzzy
-msgid "Category:"
-msgstr "Kategoriar"
-
-#: calendar/gui/e-tasks.c:297
-#, fuzzy, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: calendar/gui/e-tasks.c:309
-#, fuzzy, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr "Metoden %1 er ikkje støtta."
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:338
-#, fuzzy
-msgid "%d %B"
-msgstr "%1 %2"
-
-#: calendar/gui/e-week-view.c:3255
-#, fuzzy
-msgid "Delete All Occurrences"
-msgstr "Slettar klassen"
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-#, fuzzy
-msgid "Appointment"
-msgstr "Avtale"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-#, fuzzy
-msgid "Appointment Basics"
-msgstr "Avtale"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-#, fuzzy
-msgid "Custom recurrence"
-msgstr "Repetering"
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-#, fuzzy
-msgid "Every"
-msgstr "kvar"
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-msgid "Exceptions"
-msgstr "Unntak"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-#, fuzzy
-msgid "Modify"
-msgstr "MÃ¥ndag"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-#, fuzzy
-msgid "No recurrence"
-msgstr "Repetering"
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1577
-msgid "Play a sound"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-#, fuzzy
-msgid "Preview"
-msgstr "Førehandsvising:"
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Recurrence"
-msgstr "Repetering"
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-#, fuzzy
-msgid "Recurrence Rule"
-msgstr "Regel for repetering"
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-#, fuzzy
-msgid "Reminder"
-msgstr "PÃ¥minning:"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1586
-#, fuzzy
-msgid "Run a program"
-msgstr "Terminalprogram:"
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1583
-#, fuzzy
-msgid "Send an email"
-msgstr "Hentar data frå %1"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:25
-#, fuzzy
-msgid "Settings..."
-msgstr "Skriftinnstillingar"
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1580
-#, fuzzy
-msgid "Show a dialog"
-msgstr "Vis dato"
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-#, fuzzy
-msgid "Simple recurrence"
-msgstr "Repetering"
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-#, fuzzy
-msgid "_End time:"
-msgstr "Slutt-tid:"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-#, fuzzy
-msgid "_Start time:"
-msgstr "Start-tid:"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-#, fuzzy
-msgid "_Starting date:"
-msgstr "Start-dato"
-
-#. Automatically generated. Do not edit.
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:2
-#, fuzzy
-msgid "after"
-msgstr "Slutt etter"
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:6
-msgid "before"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "day(s)"
-msgstr "dag(ar)"
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-#, fuzzy
-msgid "end of appointment"
-msgstr "&Slett avtale"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-#, fuzzy
-msgid "for"
-msgstr "Munnar"
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-#, fuzzy
-msgid "forever"
-msgstr "Repeterer for alltid"
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-#, fuzzy
-msgid "hour(s)"
-msgstr "time/timar"
-
-#: calendar/gui/event-editor-dialog.glade.h:40
-#, fuzzy
-msgid "minute(s)"
-msgstr "minutt"
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "month(s)"
-msgstr "månad(er)"
-
-#: calendar/gui/event-editor-dialog.glade.h:42
-#, fuzzy
-msgid "start of appointment"
-msgstr "&Endra avtale ..."
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-#, fuzzy
-msgid "until"
-msgstr "utan tittel"
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-#, fuzzy
-msgid "week(s)"
-msgstr "veke(r) på:"
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "year(s)"
-msgstr "Ã¥r"
-
-#: calendar/gui/event-editor.c:371
-#, fuzzy
-msgid "Edit Appointment"
-msgstr "&Endra avtale ..."
-
-#: calendar/gui/event-editor.c:449
-#, fuzzy
-msgid "on"
-msgstr "MÃ¥n"
-
-#: calendar/gui/event-editor.c:474 filter/filter-datespec.c:65
-msgid "day"
-msgstr "dagen"
-
-#: calendar/gui/event-editor.c:601
-#, fuzzy
-msgid "on the"
-msgstr "MÃ¥nad"
-
-#: calendar/gui/event-editor.c:608
-#, fuzzy
-msgid "th"
-msgstr "4."
-
-#: calendar/gui/event-editor.c:754
-#, fuzzy
-msgid "occurrences"
-msgstr "gong(ar)"
-
-#: calendar/gui/event-editor.c:871
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr ""
-
-#: calendar/gui/event-editor.c:1532
-#, fuzzy, c-format
-msgid " %d days"
-msgstr " dag"
-
-#: calendar/gui/event-editor.c:1534
-#, fuzzy
-msgid " 1 day"
-msgstr "Vis dato"
-
-#: calendar/gui/event-editor.c:1537
-#, fuzzy, c-format
-msgid " %d weeks"
-msgstr "Veke"
-
-#: calendar/gui/event-editor.c:1539
-#, fuzzy
-msgid " 1 week"
-msgstr "Vis %1"
-
-#: calendar/gui/event-editor.c:1542
-#, fuzzy, c-format
-msgid " %d hours"
-msgstr "time/timar"
-
-#: calendar/gui/event-editor.c:1544
-#, fuzzy
-msgid " 1 hour"
-msgstr "time/timar"
-
-#: calendar/gui/event-editor.c:1547
-#, fuzzy, c-format
-msgid " %d minutes"
-msgstr "minutt"
-
-#: calendar/gui/event-editor.c:1549
-#, fuzzy
-msgid " 1 minute"
-msgstr "minutt"
-
-#: calendar/gui/event-editor.c:1552
-#, fuzzy, c-format
-msgid " %d seconds"
-msgstr "sekund"
-
-#: calendar/gui/event-editor.c:1554
-#, fuzzy
-msgid " 1 second"
-msgstr "sekund"
-
-#: calendar/gui/event-editor.c:1601
-#, fuzzy
-msgid " before start of appointment"
-msgstr "&Slett avtale"
-
-#: calendar/gui/event-editor.c:1603
-#, fuzzy
-msgid " after start of appointment"
-msgstr "&Slett avtale"
-
-#: calendar/gui/event-editor.c:1611
-#, fuzzy
-msgid " before end of appointment"
-msgstr "&Slett avtale"
-
-#: calendar/gui/event-editor.c:1613
-#, fuzzy
-msgid " after end of appointment"
-msgstr "&Slett avtale"
-
-#: calendar/gui/event-editor.c:3113 calendar/gui/print.c:1093
-#: calendar/gui/print.c:1095 calendar/gui/print.c:1096
-#, fuzzy
-msgid "%a %b %d %Y"
-msgstr "%1 bit %2 %3"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-#, fuzzy
-msgid "Evolution calendar executive summary component."
-msgstr "Kan ikkje initialisera lokale variablar"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-#, fuzzy
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr "Tilgjengelege lenkjer:"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-#, fuzzy
-msgid "Factory for the Calendar Summary component."
-msgstr "Øydelagd oppsettfil."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-#, fuzzy
-msgid "Factory for the Evolution calendar component."
-msgstr "Øydelagd oppsettfil."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-#, fuzzy
-msgid "Factory for the calendar iTip view control"
-msgstr "Øydelagd oppsettfil."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-#, fuzzy
-msgid "Factory for the sample Calendar control"
-msgstr "Øydelagd oppsettfil."
-
-#: calendar/gui/gnome-cal.c:695
-#, fuzzy, c-format
-msgid "Could not open the folder in `%s'"
-msgstr ""
-"Kan ikkje fjerna post frå\n"
-"postboksen '%1':\n"
-"%2"
-
-#: calendar/gui/gnome-cal.c:706
-#, fuzzy, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr "Metoden %1 er ikkje støtta."
-
-#: calendar/gui/goto-dialog.glade.h:1
-#, fuzzy
-msgid "April"
-msgstr "April"
-
-#: calendar/gui/goto-dialog.glade.h:2
-#, fuzzy
-msgid "August"
-msgstr "August"
-
-#: calendar/gui/goto-dialog.glade.h:3
-#, fuzzy
-msgid "December"
-msgstr "Desember"
-
-#: calendar/gui/goto-dialog.glade.h:4
-#, fuzzy
-msgid "February"
-msgstr "Februar"
-
-#: calendar/gui/goto-dialog.glade.h:5
-#, fuzzy
-msgid "Go To Date"
-msgstr "GÃ¥ til side"
-
-#: calendar/gui/goto-dialog.glade.h:6
-#, fuzzy
-msgid "Go To Today"
-msgstr "GÃ¥ til &i dag"
-
-#: calendar/gui/goto-dialog.glade.h:7
-#, fuzzy
-msgid "January"
-msgstr "Januar"
-
-#: calendar/gui/goto-dialog.glade.h:8
-#, fuzzy
-msgid "July"
-msgstr "Juli"
-
-#: calendar/gui/goto-dialog.glade.h:9
-#, fuzzy
-msgid "June"
-msgstr "Juni"
-
-#: calendar/gui/goto-dialog.glade.h:10
-#, fuzzy
-msgid "March"
-msgstr "Mars"
-
-#: calendar/gui/goto-dialog.glade.h:11
-#, fuzzy
-msgid "May"
-msgstr "MÃ¥ndag"
-
-#: calendar/gui/goto-dialog.glade.h:12
-#, fuzzy
-msgid "November"
-msgstr "November"
-
-#: calendar/gui/goto-dialog.glade.h:13
-#, fuzzy
-msgid "October"
-msgstr "Oktober"
-
-#: calendar/gui/goto-dialog.glade.h:14
-#, fuzzy
-msgid "September"
-msgstr "September"
-
-#: calendar/gui/print.c:296
-msgid "1st"
-msgstr "1."
-
-#: calendar/gui/print.c:296
-msgid "2nd"
-msgstr "2."
-
-#: calendar/gui/print.c:296
-msgid "3rd"
-msgstr "3."
-
-#: calendar/gui/print.c:296
-msgid "4th"
-msgstr "4."
-
-#: calendar/gui/print.c:296
-msgid "5th"
-msgstr "5."
-
-#: calendar/gui/print.c:297
-msgid "6th"
-msgstr "6."
-
-#: calendar/gui/print.c:297
-msgid "7th"
-msgstr "7."
-
-#: calendar/gui/print.c:297
-msgid "8th"
-msgstr "8."
-
-#: calendar/gui/print.c:297
-msgid "9th"
-msgstr "9."
-
-#: calendar/gui/print.c:297
-msgid "10th"
-msgstr "10."
-
-#: calendar/gui/print.c:298
-msgid "11th"
-msgstr "11."
-
-#: calendar/gui/print.c:298
-msgid "12th"
-msgstr "12."
-
-#: calendar/gui/print.c:298
-msgid "13th"
-msgstr "13."
-
-#: calendar/gui/print.c:298
-msgid "14th"
-msgstr "14."
-
-#: calendar/gui/print.c:298
-msgid "15th"
-msgstr "15."
-
-#: calendar/gui/print.c:299
-msgid "16th"
-msgstr "16."
-
-#: calendar/gui/print.c:299
-msgid "17th"
-msgstr "17."
-
-#: calendar/gui/print.c:299
-msgid "18th"
-msgstr "18."
-
-#: calendar/gui/print.c:299
-msgid "19th"
-msgstr "19."
-
-#: calendar/gui/print.c:299
-msgid "20th"
-msgstr "20."
-
-#: calendar/gui/print.c:300
-msgid "21st"
-msgstr "21."
-
-#: calendar/gui/print.c:300
-msgid "22nd"
-msgstr "22."
-
-#: calendar/gui/print.c:300
-msgid "23rd"
-msgstr "23."
-
-#: calendar/gui/print.c:300
-msgid "24th"
-msgstr "24."
-
-#: calendar/gui/print.c:300
-msgid "25th"
-msgstr "25."
-
-#: calendar/gui/print.c:301
-msgid "26th"
-msgstr "26."
-
-#: calendar/gui/print.c:301
-msgid "27th"
-msgstr "27."
-
-#: calendar/gui/print.c:301
-msgid "28th"
-msgstr "28."
-
-#: calendar/gui/print.c:301
-msgid "29th"
-msgstr "29."
-
-#: calendar/gui/print.c:301
-msgid "30th"
-msgstr "30."
-
-#: calendar/gui/print.c:302
-msgid "31st"
-msgstr "31."
-
-#: calendar/gui/print.c:358
-#, fuzzy
-msgid "Su"
-msgstr "Sum"
-
-#: calendar/gui/print.c:358
-#, fuzzy
-msgid "Mo"
-msgstr "MÃ¥n"
-
-#: calendar/gui/print.c:358
-#, fuzzy
-msgid "Tu"
-msgstr "Tys"
-
-#: calendar/gui/print.c:358
-#, fuzzy
-msgid "We"
-msgstr "Ons"
-
-#: calendar/gui/print.c:358
-#, fuzzy
-msgid "Th"
-msgstr "Tor"
-
-#: calendar/gui/print.c:358
-#, fuzzy
-msgid "Fr"
-msgstr "Fre"
-
-#: calendar/gui/print.c:358
-#, fuzzy
-msgid "Sa"
-msgstr "Lau"
-
-#: calendar/gui/print.c:944
-msgid "Tasks"
-msgstr "Oppgåver"
-
-#. Day
-#: calendar/gui/print.c:1074
-msgid "Current day (%a %b %d %Y)"
-msgstr ""
-
-#: calendar/gui/print.c:1088 calendar/gui/print.c:1092
-msgid "%a %b %d"
-msgstr ""
-
-#: calendar/gui/print.c:1089
-msgid "%a %d %Y"
-msgstr ""
-
-#: calendar/gui/print.c:1100
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr ""
-
-#. Month
-#: calendar/gui/print.c:1108
-#, fuzzy
-msgid "Current month (%b %Y)"
-msgstr "Denne månaden"
-
-#. Year
-#: calendar/gui/print.c:1115
-#, fuzzy
-msgid "Current year (%Y)"
-msgstr "Gjeldande: %1"
-
-#: calendar/gui/print.c:1152
-#, fuzzy
-msgid "Print Calendar"
-msgstr "Skriv ut alle"
-
-#: calendar/gui/print.c:1317 mail/mail-callbacks.c:1293
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:20
-#: ui/evolution-mail.xml.h:32
-#, fuzzy
-msgid "Print Preview"
-msgstr "&Førehandsvising ..."
-
-#: calendar/gui/tasks-control.c:105
-#, fuzzy
-msgid "The URI of the tasks folder to display"
-msgstr "Viser korleis datoverdiar vert viste."
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-
-#: calendar/gui/weekday-picker.c:313 calendar/gui/weekday-picker.c:408
-msgid "SMTWTFS"
-msgstr ""
-
-#: camel/camel-filter-driver.c:790
-#, fuzzy, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr ""
-"Feil ved lesing a fil:\n"
-"%1"
-
-#: camel/camel-filter-driver.c:795
-#, fuzzy, c-format
-msgid "Error executing filter: %s: %s"
-msgstr ""
-"Feil ved lesing a fil:\n"
-"%1"
-
-#: camel/camel-filter-search.c:426 camel/camel-filter-search.c:432
-#, fuzzy, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr ""
-"Feil ved lesing a fil:\n"
-"%1"
-
-#: camel/camel-folder-search.c:323
-#, fuzzy, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-"Feil ved lesing av fil:\n"
-"%s"
-
-#: camel/camel-folder-search.c:333
-#, fuzzy, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr ""
-"Feil ved lesing av fil:\n"
-"%s"
-
-#: camel/camel-folder-search.c:480 camel/camel-folder-search.c:508
-msgid "(match-all) requires a single bool result"
-msgstr ""
-
-#: camel/camel-folder-search.c:554
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr ""
-
-#: camel/camel-folder-search.c:663 camel/camel-folder-search.c:700
-msgid "Invalid type in body-contains, expecting string"
-msgstr ""
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:90 camel/camel-lock.c:109 camel/camel-movemail.c:136
-#: camel/camel-movemail.c:183
-#, fuzzy, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: camel/camel-lock.c:149 camel/camel-movemail.c:217
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr ""
-
-#: camel/camel-lock.c:199
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr ""
-
-#: camel/camel-lock.c:253
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr ""
-
-#: camel/camel-movemail.c:99
-#, fuzzy, c-format
-msgid "Could not check mail file %s: %s"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: camel/camel-movemail.c:146
-#, fuzzy, c-format
-msgid "Could not open mail file %s: %s"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: camel/camel-movemail.c:156
-#, fuzzy, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr ""
-"Kunne ikkje laga mellombels fil\n"
-"%1:\n"
-"%2"
-
-#: camel/camel-movemail.c:197
-#, fuzzy, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: camel/camel-movemail.c:243
-#, fuzzy, c-format
-msgid "Error reading mail file: %s"
-msgstr ""
-"Feil ved nedlasting av fil:\n"
-"%1"
-
-#: camel/camel-movemail.c:254
-#, fuzzy, c-format
-msgid "Error writing mail temp file: %s"
-msgstr ""
-"Feil ved lesing a fil:\n"
-"%1"
-
-#: camel/camel-movemail.c:272
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:304
-#, fuzzy, c-format
-msgid "Could not create pipe: %s"
-msgstr "Kunne ikkje laga katalog\n"
-
-#: camel/camel-movemail.c:316
-#, fuzzy, c-format
-msgid "Could not fork: %s"
-msgstr "Kunne ikkje starta %1."
-
-#: camel/camel-movemail.c:354
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:355
-#, fuzzy
-msgid "(Unknown error)"
-msgstr "Ukjend feil"
-
-#: camel/camel-provider.c:137
-#, fuzzy, c-format
-msgid "Could not load %s: %s"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: camel/camel-provider.c:145
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr ""
-
-#: camel/camel-remote-store.c:181
-#, fuzzy, c-format
-msgid "%s server %s"
-msgstr "Diskusjonsgruppetenarar"
-
-#: camel/camel-remote-store.c:185
-#, c-format
-msgid "%s service for %s on %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:232
-#, fuzzy
-msgid "Connection cancelled"
-msgstr "Avbroten."
-
-#: camel/camel-remote-store.c:235
-#: camel/providers/smtp/camel-smtp-transport.c:244
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:236
-msgid "(unknown host)"
-msgstr ""
-
-#: camel/camel-remote-store.c:317 camel/camel-remote-store.c:379
-#: camel/camel-remote-store.c:448
-#: camel/providers/imap/camel-imap-command.c:289
-#, fuzzy
-msgid "Operation cancelled"
-msgstr "Feil ved opning"
-
-#: camel/camel-remote-store.c:453
-msgid "Server unexpectedly disconnected"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:97 camel/camel-sasl-plain.c:84
-#, fuzzy
-msgid "Authentication failed."
-msgstr "Autentisering:"
-
-#: camel/camel-sasl-anonymous.c:106
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:118
-#, fuzzy, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr "Les filinformasjon"
-
-#: camel/camel-sasl-anonymous.c:130
-#, fuzzy, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr "Les filinformasjon"
-
-#: camel/camel-sasl-cram-md5.c:32 mail/mail-config.glade.h:10
-msgid "CRAM-MD5"
-msgstr ""
-
-#: camel/camel-sasl-cram-md5.c:34
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:37 mail/mail-config.glade.h:18
-msgid "DIGEST-MD5"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:39
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:761
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:770
-msgid "Server challenge invalid\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:776
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:798
-msgid "Server response did not contain authorization data\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:816
-msgid "Server response contained incomplete authorization data\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:826
-msgid "Server response does not match\n"
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:38
-msgid "Kerberos 4"
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:158
-#, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:215
-#: camel/providers/imap/camel-imap-store.c:381
-msgid "Bad authentication response from server."
-msgstr ""
-
-#: camel/camel-sasl-plain.c:29
-msgid "PLAIN"
-msgstr ""
-
-#: camel/camel-sasl-plain.c:31
-msgid ""
-"This option will connect to the server using a the PLAIN SASL mechanism if "
-"the server supports it."
-msgstr ""
-
-#: camel/camel-search-private.c:105
-#, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr ""
-
-#: camel/camel-service.c:142
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr ""
-
-#: camel/camel-service.c:151
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr ""
-
-#: camel/camel-service.c:160
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr ""
-
-#: camel/camel-service.c:512
-#, c-format
-msgid "No such host %s."
-msgstr ""
-
-#: camel/camel-service.c:515
-#, c-format
-msgid "Temporarily unable to look up hostname %s."
-msgstr ""
-
-#: camel/camel-session.c:54
-msgid "Virtual folder email provider"
-msgstr ""
-
-#: camel/camel-session.c:56
-msgid "For reading mail as a query of another set of folders"
-msgstr ""
-
-#: camel/camel-session.c:322
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr ""
-
-#: camel/camel-session.c:417
-#, fuzzy, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"Kan ikkje laga heimekatalog\n"
-"Feil: %1"
-
-#. Fill in the new fields
-#: camel/camel-store.c:382 mail/mail-ops.c:942 mail/mail-ops.c:949
-#: mail/mail-ops.c:967 mail/mail-ops.c:968
-#, fuzzy
-msgid "Trash"
-msgstr "Oppgåve"
-
-#: camel/camel-url.c:77
-#, c-format
-msgid "URL string `%s' contains no protocol"
-msgstr ""
-
-#: camel/camel-url.c:92
-#, c-format
-msgid "URL string `%s' contains an invalid protocol"
-msgstr ""
-
-#: camel/camel-url.c:152
-#, c-format
-msgid "Port number in URL `%s' is non-numeric"
-msgstr ""
-
-#: camel/camel-vee-folder.c:960
-#, fuzzy, c-format
-msgid "No such message: %s"
-msgstr "Vidaresendt melding"
-
-#: camel/providers/imap/camel-imap-command.c:234
-#, fuzzy, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "Slett e-post frå tenaren"
-
-#: camel/providers/imap/camel-imap-command.c:242
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:243 shell/e-storage.c:451
-msgid "Unknown error"
-msgstr "Ukjend feil"
-
-#: camel/providers/imap/camel-imap-command.c:297
-msgid "Server response ended too soon."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:433
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:469
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-folder.c:199
-#, fuzzy, c-format
-msgid "Could not load summary for %s"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: camel/providers/imap/camel-imap-folder.c:329
-#, fuzzy
-msgid "Scanning IMAP folder"
-msgstr "Leitar etter tilleggsmodular"
-
-#: camel/providers/imap/camel-imap-folder.c:837
-#: camel/providers/imap/camel-imap-folder.c:999
-msgid "Could not find message body in FETCH response."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:39
-msgid "IMAPv4"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:41
-msgid "For reading and storing mail on IMAP servers."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:59
-msgid "Secure IMAPv4"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:61
-msgid "For reading and storing mail on IMAP servers over an SSL connection."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:263
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:415
-#, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:426
-#, fuzzy, c-format
-msgid "No support for authentication type %s"
-msgstr "Autentisering:"
-
-#: camel/providers/imap/camel-imap-store.c:454
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:469
-#: camel/providers/smtp/camel-smtp-transport.c:373
-msgid "You didn't enter a password."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:498
-#: camel/providers/smtp/camel-smtp-transport.c:381
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:772
-#, fuzzy, c-format
-msgid "Could not create directory %s: %s"
-msgstr ""
-"Kan ikkje laga heimekatalog\n"
-"Feil: %1"
-
-#: camel/providers/local/camel-local-provider.c:36
-#, fuzzy
-msgid "MH-format mail directories"
-msgstr "Separate katalogar"
-
-#: camel/providers/local/camel-local-provider.c:37
-msgid "For storing local mail in MH-like mail directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:47
-msgid "Standard Unix mailbox file"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:48
-msgid "For storing local mail in standard mbox format"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:58
-msgid "Qmail maildir-format mail files"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "For storing local mail in qmail maildir directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:128
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:135
-#, fuzzy, c-format
-msgid "Store root %s is not a regular directory"
-msgstr "er ei vanleg fil"
-
-#: camel/providers/local/camel-local-store.c:143
-#: camel/providers/local/camel-local-store.c:159
-#, fuzzy, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "Leitar etter tilleggsmodular"
-
-#: camel/providers/local/camel-local-store.c:174
-msgid "Local stores do not have an inbox"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:184
-#, fuzzy, c-format
-msgid "Local mail file %s"
-msgstr ""
-"Feil ved lesing a fil:\n"
-"%1"
-
-#: camel/providers/local/camel-local-store.c:240
-#, fuzzy, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr ""
-"Kunne ikkje laga mellombels fil\n"
-"%1:\n"
-"%2"
-
-#: camel/providers/local/camel-local-store.c:282
-#, fuzzy, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr ""
-"Kunne ikkje laga mellombels fil\n"
-"%1:\n"
-"%2"
-
-#: camel/providers/local/camel-local-store.c:292
-#, fuzzy, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: camel/providers/local/camel-maildir-folder.c:148
-#: camel/providers/local/camel-maildir-folder.c:156
-#: camel/providers/local/camel-maildir-folder.c:167
-#, fuzzy, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr "Mottek meldingar frå %1"
-
-#: camel/providers/local/camel-maildir-folder.c:195
-#: camel/providers/local/camel-maildir-folder.c:207
-#: camel/providers/local/camel-maildir-folder.c:215
-#: camel/providers/local/camel-mbox-folder.c:317
-#: camel/providers/local/camel-mh-folder.c:183
-#: camel/providers/local/camel-mh-folder.c:192
-#: camel/providers/local/camel-mh-folder.c:200
-#, fuzzy, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr "Kan ikkje setja blokkstorleik for band."
-
-#: camel/providers/local/camel-maildir-folder.c:195
-#: camel/providers/local/camel-mbox-folder.c:317
-#: camel/providers/local/camel-mh-folder.c:183
-#, fuzzy
-msgid "No such message"
-msgstr "Vidaresendt melding"
-
-#: camel/providers/local/camel-maildir-folder.c:216
-#: camel/providers/local/camel-mh-folder.c:201
-msgid "Invalid message contents"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:94
-#: camel/providers/local/camel-mh-store.c:88
-#, fuzzy, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-"Kan ikkje fjerna post frå\n"
-"postboksen '%1':\n"
-"%2"
-
-#: camel/providers/local/camel-maildir-store.c:98
-#: camel/providers/local/camel-mbox-store.c:99
-#: camel/providers/local/camel-mh-store.c:95
-#, fuzzy, c-format
-msgid "Folder `%s' does not exist."
-msgstr "Fila finst ikkje\n"
-
-#: camel/providers/local/camel-maildir-store.c:105
-#: camel/providers/local/camel-mh-store.c:101
-#, fuzzy, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: camel/providers/local/camel-maildir-store.c:120
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:149
-#: camel/providers/local/camel-maildir-store.c:186
-#: camel/providers/local/camel-mh-store.c:125
-#, fuzzy, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: camel/providers/local/camel-maildir-store.c:150
-msgid "not a maildir directory"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:201
-#, fuzzy, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr ""
-"Kan ikkje fjerna post frå\n"
-"postboksen '%1':\n"
-"%2"
-
-#: camel/providers/local/camel-mbox-folder.c:257
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:333
-#: camel/providers/local/camel-mbox-folder.c:365
-#: camel/providers/local/camel-mbox-folder.c:378
-#, fuzzy, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr "Mottek meldingar frå %1"
-
-#: camel/providers/local/camel-mbox-folder.c:366
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:379
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:92
-#, fuzzy, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-"Kan ikkje fjerna post frå\n"
-"postboksen '%1':\n"
-"%2"
-
-#: camel/providers/local/camel-mbox-store.c:108
-#, fuzzy, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: camel/providers/local/camel-mbox-store.c:117
-#: camel/providers/local/camel-mbox-store.c:144
-#, fuzzy, c-format
-msgid "`%s' is not a regular file."
-msgstr "er ei vanleg fil"
-
-#: camel/providers/local/camel-mbox-store.c:136
-#: camel/providers/local/camel-mbox-store.c:159
-#, fuzzy, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: camel/providers/local/camel-mbox-store.c:151
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr ""
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:240
-#, fuzzy
-msgid "Summarising folder"
-msgstr "Synkroniser"
-
-#: camel/providers/local/camel-mbox-summary.c:245
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:287
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:362
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:493
-#: camel/providers/local/camel-mbox-summary.c:694 mail/mail-ops.c:1328
-#, fuzzy
-msgid "Synchronising folder"
-msgstr "Synkroniser"
-
-#: camel/providers/local/camel-mbox-summary.c:498
-#: camel/providers/local/camel-mbox-summary.c:699
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:515
-#, fuzzy, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr ""
-"Kunne ikkje laga mellombels fil\n"
-"%1:\n"
-"%2"
-
-#: camel/providers/local/camel-mbox-summary.c:540
-#: camel/providers/local/camel-mbox-summary.c:548
-#: camel/providers/local/camel-mbox-summary.c:737
-#: camel/providers/local/camel-mbox-summary.c:745
-msgid "Summary and folder mismatch, even after a sync"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:591
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:608
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:626
-#: camel/providers/local/camel-mbox-summary.c:795
-#, fuzzy, c-format
-msgid "Could not close source folder %s: %s"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: camel/providers/local/camel-mbox-summary.c:635
-#, fuzzy, c-format
-msgid "Could not close temp folder: %s"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: camel/providers/local/camel-mbox-summary.c:646
-#, fuzzy, c-format
-msgid "Could not rename folder: %s"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: camel/providers/local/camel-mbox-summary.c:870
-#, fuzzy, c-format
-msgid "Unknown error: %s"
-msgstr "Ukjend feil"
-
-#: camel/providers/local/camel-mh-folder.c:147
-#: camel/providers/local/camel-mh-folder.c:155
-#, fuzzy, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr "Mottek meldingar frå %1"
-
-#: camel/providers/local/camel-mh-store.c:108
-#, c-format
-msgid "`%s' is not a directory."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:41
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:62
-msgid "Server rejected username"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:68
-msgid "Failed to send username to server"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:77
-msgid "Server rejected username/password"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, fuzzy, c-format
-msgid "Message %s not found."
-msgstr "Fann ikkje fil"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-#, fuzzy
-msgid "Could not get group list from server."
-msgstr "Kunne ikkje starta underprosess."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-provider.c:38
-msgid "USENET news"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-provider.c:40
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:226
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:288
-#, c-format
-msgid "USENET News via %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:295
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:327
-#: camel/providers/nntp/camel-nntp-store.c:490
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:145
-#, fuzzy
-msgid "Retrieving POP summary"
-msgstr "Mottek meldingar frå %1"
-
-#: camel/providers/pop3/camel-pop3-folder.c:188
-msgid "Could not open folder: message listing was incomplete."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:282
-#, fuzzy, c-format
-msgid "No message with uid %s"
-msgstr "Lag meldingar og slå saman"
-
-#: camel/providers/pop3/camel-pop3-folder.c:286
-#, fuzzy, c-format
-msgid "Retrieving POP message %d"
-msgstr "Mottek meldingar frå %1"
-
-#: camel/providers/pop3/camel-pop3-folder.c:304
-#, fuzzy, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr "Slett e-post frå tenaren"
-
-#: camel/providers/pop3/camel-pop3-provider.c:34
-msgid "POP"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:36
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:54
-msgid "Secure POP"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:56
-msgid ""
-"For connecting to POP servers over an SSL connection. The POP protocol can "
-"also be used to retrieve mail from certain web mail providers and "
-"proprietary email systems."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:147
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:157
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:169
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:214
-#, fuzzy, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr "Kunne ikkje starta underprosess."
-
-#: camel/providers/pop3/camel-pop3-store.c:331
-#, fuzzy, c-format
-msgid "Could not connect to POP server on %s."
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: camel/providers/pop3/camel-pop3-store.c:378
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:397
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:400
-#: camel/providers/pop3/camel-pop3-store.c:437
-#, fuzzy
-msgid "(Unknown)"
-msgstr "Ukjend"
-
-#: camel/providers/pop3/camel-pop3-store.c:427
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:435
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:543
-#, c-format
-msgid "No such folder `%s'."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:34
-#: mail/mail-config.glade.h:61
-#, fuzzy
-msgid "Sendmail"
-msgstr "Send"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:36
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:105
-#, fuzzy, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:122
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:148
-#, fuzzy, c-format
-msgid "Could not send message: %s"
-msgstr "Vidaresendt melding frå %1"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:161
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:168
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:173
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:192
-#, fuzzy
-msgid "Could not find 'From' address in message"
-msgstr "Vidaresendt melding frå %1"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:245
-msgid "sendmail"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "Mail delivery via the sendmail program"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-provider.c:34 mail/mail-config.glade.h:55
-msgid "SMTP"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-provider.c:36
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-provider.c:53
-msgid "Secure SMTP"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-provider.c:55
-msgid ""
-"For delivering mail by connecting to a remote mailhub using SMTP over an SSL "
-"connection.\n"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:147
-msgid "Syntax error, command unrecognized"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:149
-msgid "Syntax error in parameters or arguments"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:151
-msgid "Command not implemented"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:153
-msgid "Command parameter not implemented"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:155
-msgid "System status, or system help reply"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:157
-#, fuzzy
-msgid "Help message"
-msgstr "Lagra melding"
-
-#: camel/providers/smtp/camel-smtp-transport.c:159
-#, fuzzy
-msgid "Service ready"
-msgstr "Skjul"
-
-#: camel/providers/smtp/camel-smtp-transport.c:161
-msgid "Service closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:163
-msgid "Service not available, closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:165
-msgid "Requested mail action okay, completed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:167
-msgid "User not local; will forward to <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:169
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:171
-msgid "Requested action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:173
-msgid "Requested action aborted: error in processing"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:175
-msgid "User not local; please try <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:177
-msgid "Requested action not taken: insufficient system storage"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:179
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:181
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:183
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:185
-msgid "Transaction failed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:189
-#, fuzzy
-msgid "A password transition is needed"
-msgstr "Ingen passord oppgitt."
-
-#: camel/providers/smtp/camel-smtp-transport.c:191
-msgid "Authentication mechanism is too weak"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:193
-msgid "Encryption required for requested authentication mechanism"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:195
-#, fuzzy
-msgid "Temporary authentication failure"
-msgstr "Autentisering:"
-
-#: camel/providers/smtp/camel-smtp-transport.c:197
-#, fuzzy
-msgid "Authentication required"
-msgstr "Autentisering:"
-
-#: camel/providers/smtp/camel-smtp-transport.c:286
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:358
-#, fuzzy, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr "Oppgi ditt OpenPGP-passord"
-
-#: camel/providers/smtp/camel-smtp-transport.c:466
-#, fuzzy
-msgid "No authentication required"
-msgstr "Autentisering:"
-
-#: camel/providers/smtp/camel-smtp-transport.c:468
-msgid ""
-"This option will connect to the SMTP server without using any kind of "
-"authentication. This should be fine for connecting to most SMTP servers."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:511
-#, fuzzy, c-format
-msgid "SMTP server %s"
-msgstr "Diskusjonsgruppetenarar"
-
-#: camel/providers/smtp/camel-smtp-transport.c:513
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:538
-msgid "Cannot send message: sender address not defined."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:545
-msgid "Cannot send message: sender address not valid."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:559
-msgid "Cannot send message: no recipients defined."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:653
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:672
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:707
-#: camel/providers/smtp/camel-smtp-transport.c:719
-#, fuzzy, c-format
-msgid "AUTH request timed out: %s"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:777
-msgid "Bad authentication response from server.\n"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:802
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:821
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:846
-#, fuzzy, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:865
-#, fuzzy, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:896
-#, fuzzy, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:915
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:930
-#: camel/providers/smtp/camel-smtp-transport.c:948
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:967
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:991
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1010
-#, fuzzy, c-format
-msgid "RSET response error: %s"
-msgstr "Ukjend feil"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1033
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1052
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:87
-#, fuzzy
-msgid "1 byte"
-msgstr "%1 byte"
-
-#: composer/e-msg-composer-attachment-bar.c:89
-#, fuzzy, c-format
-msgid "%u bytes"
-msgstr "%1 byte ="
-
-#: composer/e-msg-composer-attachment-bar.c:96
-#, fuzzy, c-format
-msgid "%.1fK"
-msgstr "%1 KB"
-
-#: composer/e-msg-composer-attachment-bar.c:100
-#, fuzzy, c-format
-msgid "%.1fM"
-msgstr "%1 MB"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, fuzzy, c-format
-msgid "%.1fG"
-msgstr "%1 GB"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:324 mail/mail-display.c:113
-#, fuzzy
-msgid "attachment"
-msgstr "Vedlegg"
-
-#: composer/e-msg-composer-attachment-bar.c:413
-#: ui/evolution-message-composer.xml.h:2
-#, fuzzy
-msgid "Attach a file"
-msgstr "Legg ved fil"
-
-#: composer/e-msg-composer-attachment-bar.c:461
-#, fuzzy
-msgid "Remove selected items from the attachment list"
-msgstr "Fjern det valte programmet frå lista"
-
-#: composer/e-msg-composer-attachment-bar.c:492
-#, fuzzy
-msgid "Add attachment..."
-msgstr "Vedlegg"
-
-#: composer/e-msg-composer-attachment-bar.c:493
-#, fuzzy
-msgid "Attach a file to the message"
-msgstr "Kunne ikkje lagra melding(ar)."
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/message-list.c:1171
-#: ui/evolution-mail.xml.h:1
-#, fuzzy
-msgid "Attachment"
-msgstr "Vedlegg"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-#, fuzzy
-msgid "Attachment properties"
-msgstr "Vedleggseigenskapar"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr "Filnamn:"
-
-#: composer/e-msg-composer-attachment.glade.h:5
-#, fuzzy
-msgid "Inline attachment"
-msgstr "Vedlegg"
-
-#: composer/e-msg-composer-attachment.glade.h:6
-#, fuzzy
-msgid "MIME type:"
-msgstr "MIME-type"
-
-#: composer/e-msg-composer-attachment.glade.h:7
-#, fuzzy
-msgid "Send as:"
-msgstr "Lagra: %s"
-
-#: composer/e-msg-composer-hdrs.c:314
-#, fuzzy
-msgid "Click here for the address book"
-msgstr "Legg adresse til adresseboka"
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:345 mail/mail-format.c:679
-msgid "From:"
-msgstr "Frå:"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:351 mail/mail-format.c:681
-#, fuzzy
-msgid "Reply-To:"
-msgstr "Svar"
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:362 mail/mail-format.c:601
-msgid "Subject:"
-msgstr "Emne:"
-
-#: composer/e-msg-composer-hdrs.c:376 mail/mail-format.c:683
-msgid "To:"
-msgstr "Til:"
-
-#: composer/e-msg-composer-hdrs.c:377
-#, fuzzy
-msgid "Enter the recipients of the message"
-msgstr "Oppgi eit nytt namn på meldinga."
-
-#: composer/e-msg-composer-hdrs.c:380 mail/mail-format.c:685
-#, fuzzy
-msgid "Cc:"
-msgstr "&CC:"
-
-#: composer/e-msg-composer-hdrs.c:381
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr ""
-
-#: composer/e-msg-composer-hdrs.c:384
-#, fuzzy
-msgid "Bcc:"
-msgstr "&Bcc:"
-
-#: composer/e-msg-composer-hdrs.c:385
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-
-#: composer/e-msg-composer.c:518
-#, fuzzy, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-"Kan ikkje fjerna post frå\n"
-"postboksen '%1':\n"
-"%2"
-
-#: composer/e-msg-composer.c:706
-msgid "Save as..."
-msgstr "Lagra som ..."
-
-#: composer/e-msg-composer.c:717
-#, fuzzy, c-format
-msgid "Error saving file: %s"
-msgstr ""
-"Feil ved lesing a fil:\n"
-"%1"
-
-#: composer/e-msg-composer.c:737
-#, fuzzy, c-format
-msgid "Error loading file: %s"
-msgstr ""
-"Feil ved nedlasting av fil:\n"
-"%1"
-
-#: composer/e-msg-composer.c:818 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:192
-#, fuzzy
-msgid "Evolution"
-msgstr "Oppløysing"
-
-#: composer/e-msg-composer.c:824
-#, fuzzy
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-"Dette er siste trekk.\n"
-"Vil du leggja til fleire trekk?"
-
-#: composer/e-msg-composer.c:849
-msgid "Open file"
-msgstr "Opna fil"
-
-#: composer/e-msg-composer.c:975
-#, fuzzy
-msgid "That file does not exist."
-msgstr "Fila finst ikkje\n"
-
-#: composer/e-msg-composer.c:985
-#, fuzzy
-msgid "That is not a regular file."
-msgstr "er ei vanleg fil"
-
-#: composer/e-msg-composer.c:995
-#, fuzzy
-msgid "That file exists but is not readable."
-msgstr "%1 finst, men er inga vanleg fil"
-
-#: composer/e-msg-composer.c:1005
-msgid "That file appeared accesible but open(2) failed."
-msgstr ""
-
-#: composer/e-msg-composer.c:1027
-#, fuzzy
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr "Det finst ulagra endringar. Er du sikker på at du vil avslutta?"
-
-#: composer/e-msg-composer.c:1048
-#, fuzzy
-msgid "An error occurred while reading the file."
-msgstr "Feil ved opning av fil."
-
-#: composer/e-msg-composer.c:1349 composer/e-msg-composer.c:1681
-#, fuzzy
-msgid "Compose a message"
-msgstr "Lukk melding"
-
-#: composer/e-msg-composer.c:1765
-#, fuzzy
-msgid "Could not create composer window."
-msgstr "Kan ikkje laga nytt vindauge.\n"
-
-#: composer/evolution-composer.c:352
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-
-#: composer/evolution-composer.c:367
-#, fuzzy
-msgid "Cannot initialize Evolution's composer."
-msgstr "Kan ikkje initialisera lokale variablar"
-
-#: data/evolution.desktop.in.h:2
-#, fuzzy
-msgid "The Evolution groupware suite"
-msgstr "Evalueringsfeil"
-
-#: data/evolution.keys.in.h:1
-#, fuzzy
-msgid "address card"
-msgstr "Adresse"
-
-#: data/evolution.keys.in.h:2
-#, fuzzy
-msgid "calendar information"
-msgstr "Informasjon"
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:68 e-util/e-time-utils.c:116
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:471
-#: widgets/misc/e-dateedit.c:1273 widgets/misc/e-dateedit.c:1454
-msgid "%m/%d/%Y"
-msgstr ""
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:86 e-util/e-time-utils.c:197
-msgid "%I:%M:%S %p%n"
-msgstr ""
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:89 e-util/e-time-utils.c:200
-msgid "%H:%M:%S%n"
-msgstr ""
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:93 e-util/e-time-utils.c:204
-msgid "%I:%M %p%n"
-msgstr ""
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:96 e-util/e-time-utils.c:207
-#, fuzzy
-msgid "%H:%M%n"
-msgstr "%H:%M"
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:267
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:467
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2499
-msgid "%a %m/%d/%Y"
-msgstr ""
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:272
-msgid "%a %m/%d/%Y %H:%M"
-msgstr ""
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:281
-#, fuzzy
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr "%H:%M"
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-#, fuzzy
-msgid "Evolution component for the executive summary."
-msgstr "Kan ikkje initialisera lokale variablar"
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-#, fuzzy
-msgid "Factory for the Evolution executive summary component."
-msgstr "Øydelagd oppsettfil."
-
-#: executive-summary/component/component-factory.c:152
-#, fuzzy
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr "Kan ikkje initialisera lokale variablar"
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:71
-#, fuzzy, c-format
-msgid "Send an email to %s"
-msgstr "Hentar data frå %1"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:75
-#, fuzzy, c-format
-msgid "Close %s"
-msgstr "Lukk"
-
-#: executive-summary/component/e-summary-url.c:76
-#, fuzzy, c-format
-msgid "Move %s to the left"
-msgstr "Flytt til mappe"
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:78
-#, fuzzy, c-format
-msgid "Move %s into the previous row"
-msgstr "GÃ¥ til neste som treng ettersyn"
-
-#: executive-summary/component/e-summary-url.c:79
-#, fuzzy, c-format
-msgid "Move %s into the next row"
-msgstr "Ikkje vis den overskytande teksten"
-
-#: executive-summary/component/e-summary-url.c:80
-#, c-format
-msgid "Configure %s"
-msgstr ""
-
-#: executive-summary/component/e-summary.c:918
-#, fuzzy, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"Kan ikkje fjerna post frå\n"
-"postboksen '%1':\n"
-"%2"
-
-#: executive-summary/component/e-summary.c:932
-#, fuzzy, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr ""
-"Feil ved nedlasting av fil:\n"
-"%1"
-
-#: executive-summary/component/e-summary.c:950
-msgid "File does not have a place for the services.\n"
-msgstr ""
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr ""
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr ""
-
-#: executive-summary/component/main.c:60
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-#, fuzzy
-msgid "RDF Summary"
-msgstr "Samandrag"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-#, fuzzy
-msgid "Factory for the test bonobo component."
-msgstr "Øydelagd oppsettfil."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-#, fuzzy
-msgid "Factory for the test component."
-msgstr "Øydelagd oppsettfil."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:509
-#: executive-summary/test-service/rdf-summary.c:546
-#: executive-summary/test-service/rdf-summary.c:591
-#: widgets/misc/e-messagebox.c:155
-#, fuzzy
-msgid "Error"
-msgstr "Ingen feil."
-
-#: executive-summary/test-service/rdf-summary.c:765
-msgid "Update automatically"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:775
-msgid "Update now"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:785
-#, fuzzy
-msgid "Update every "
-msgstr "Oppdateringsfrekvens"
-
-#: executive-summary/test-service/rdf-summary.c:793
-#: filter/filter-datespec.c:67
-msgid "minutes"
-msgstr "minutt"
-
-#: filter/filter-datespec.c:62
-#, fuzzy
-msgid "year"
-msgstr "Ã…r"
-
-#: filter/filter-datespec.c:62
-#, fuzzy
-msgid "years"
-msgstr "Ã¥r"
-
-#: filter/filter-datespec.c:63
-#, fuzzy
-msgid "month"
-msgstr "MÃ¥nad"
-
-#: filter/filter-datespec.c:63
-#, fuzzy
-msgid "months"
-msgstr "månad(er)"
-
-#: filter/filter-datespec.c:64
-#, fuzzy
-msgid "week"
-msgstr "Veke"
-
-#: filter/filter-datespec.c:64
-#, fuzzy
-msgid "weeks"
-msgstr "Veke"
-
-#: filter/filter-datespec.c:65
-#, fuzzy
-msgid "days"
-msgstr " dag"
-
-#: filter/filter-datespec.c:66
-#, fuzzy
-msgid "hour"
-msgstr "time/timar"
-
-#: filter/filter-datespec.c:66
-#, fuzzy
-msgid "hours"
-msgstr "time/timar"
-
-#: filter/filter-datespec.c:67
-#, fuzzy
-msgid "minute"
-msgstr "minutt"
-
-#: filter/filter-datespec.c:68
-#, fuzzy
-msgid "second"
-msgstr "sekund"
-
-#: filter/filter-datespec.c:68
-msgid "seconds"
-msgstr "sekund"
-
-#: filter/filter-datespec.c:183
-msgid "Oops. You have forgotten to choose a date."
-msgstr ""
-
-#: filter/filter-datespec.c:185
-msgid "Oops. You have chosen an invalid date."
-msgstr ""
-
-#: filter/filter-datespec.c:259
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-
-#: filter/filter-datespec.c:282
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-
-#: filter/filter-datespec.c:322
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:357
-#, fuzzy
-msgid "the current time"
-msgstr "tid no"
-
-#: filter/filter-datespec.c:357
-msgid "a time you specify"
-msgstr ""
-
-#: filter/filter-datespec.c:358
-#, fuzzy
-msgid "a time relative to the current time"
-msgstr "Vis hendingane for denne dagen"
-
-#. The label
-#: filter/filter-datespec.c:416
-#, fuzzy
-msgid "Compare against"
-msgstr "Kompilatoråtvaringar"
-
-#: filter/filter-datespec.c:533 filter/filter-datespec.c:693
-#, fuzzy
-msgid "now"
-msgstr "nei"
-
-#: filter/filter-datespec.c:690
-#, fuzzy
-msgid "<click here to select a date>"
-msgstr "Trykk for å velja ein skrifttype"
-
-#: filter/filter-editor.c:126 filter/filter.glade.h:6
-#, fuzzy
-msgid "Filter Rules"
-msgstr "Filter-reglar"
-
-#. and now for the action area
-#: filter/filter-filter.c:424
-#, fuzzy
-msgid "Then"
-msgstr "Tiaren"
-
-#: filter/filter-filter.c:437
-#, fuzzy
-msgid "Add action"
-msgstr "&Legg til handling"
-
-#: filter/filter-filter.c:443
-#, fuzzy
-msgid "Remove action"
-msgstr "Fjern ein kolonne"
-
-#: filter/filter-folder.c:143
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-
-#: filter/filter-folder.c:218 filter/vfolder-rule.c:279
-#, fuzzy
-msgid "Select Folder"
-msgstr "Vel mappe"
-
-#: filter/filter-folder.c:243
-msgid "Enter folder URI"
-msgstr ""
-
-#: filter/filter-folder.c:289
-#, fuzzy
-msgid "<click here to select a folder>"
-msgstr "Trykk for å velja ein skrifttype"
-
-#: filter/filter-input.c:189
-#, fuzzy, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-"Feil ved lesing av fil:\n"
-"%s"
-
-#: filter/filter-part.c:467
-msgid "Test"
-msgstr "Test"
-
-#: filter/filter-rule.c:597
-#, fuzzy
-msgid "Rule name: "
-msgstr "Filnamn:"
-
-#: filter/filter-rule.c:601
-#, fuzzy
-msgid "Untitled"
-msgstr "Utan tittel"
-
-#: filter/filter-rule.c:617
-#, fuzzy
-msgid "If"
-msgstr "I"
-
-#: filter/filter-rule.c:634
-#, fuzzy
-msgid "Execute actions"
-msgstr "Køyr autorun.sh"
-
-#: filter/filter-rule.c:638
-msgid "if all criteria are met"
-msgstr ""
-
-#: filter/filter-rule.c:643
-msgid "if any criteria are met"
-msgstr ""
-
-#: filter/filter-rule.c:654
-#, fuzzy
-msgid "Add criterion"
-msgstr "Legg til kriterium"
-
-#: filter/filter-rule.c:660
-#, fuzzy
-msgid "Remove criterion"
-msgstr "Fjern element"
-
-#: filter/filter-system-flag.c:67
-#, fuzzy
-msgid "Replied to"
-msgstr "Svar til alle:"
-
-#. { N_("Deleted"), "Deleted" },
-#. { N_("Draft"), "Draft" },
-#: filter/filter-system-flag.c:70
-msgid "Important"
-msgstr ""
-
-#: filter/filter-system-flag.c:71
-#, fuzzy
-msgid "Read"
-msgstr "Tilfeldig"
-
-#: filter/filter.glade.h:4
-#, fuzzy
-msgid "Edit Filters"
-msgstr "Rediger fil"
-
-#: filter/filter.glade.h:5
-#, fuzzy
-msgid "Edit VFolders"
-msgstr "Rediger filterreglar"
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr ""
-
-#: filter/filter.glade.h:8
-#, fuzzy
-msgid "Outgoing"
-msgstr "Oversikt"
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:126
-#, fuzzy
-msgid "Virtual Folders"
-msgstr "Mapper"
-
-#: filter/filter.glade.h:11
-#, fuzzy
-msgid "specific folders only"
-msgstr "Den oppgitte fila finst ikkje"
-
-#: filter/filter.glade.h:12
-#, fuzzy
-msgid "vFolder Sources"
-msgstr "Kjelder"
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr ""
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr ""
-
-#: filter/filter.glade.h:15
-msgid "with all local folders"
-msgstr ""
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Colour"
-msgstr ""
-
-#: filter/libfilter-i18n.h:4
-msgid "Assign Score"
-msgstr ""
-
-#: filter/libfilter-i18n.h:5
-#, fuzzy
-msgid "Attachments"
-msgstr "Vedlegg"
-
-#: filter/libfilter-i18n.h:7
-#, fuzzy
-msgid "contains"
-msgstr "Handlingar"
-
-#: filter/libfilter-i18n.h:8
-#, fuzzy
-msgid "Copy to Folder"
-msgstr "Kopier til mappe"
-
-#: filter/libfilter-i18n.h:9
-#, fuzzy
-msgid "Date received"
-msgstr "Motta"
-
-#: filter/libfilter-i18n.h:10
-#, fuzzy
-msgid "Date sent"
-msgstr "Dato"
-
-#: filter/libfilter-i18n.h:12
-msgid "does not contain"
-msgstr ""
-
-#: filter/libfilter-i18n.h:13
-msgid "does not end with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:14
-#, fuzzy
-msgid "does not exist"
-msgstr "Fila finst ikkje\n"
-
-#: filter/libfilter-i18n.h:15
-#, fuzzy
-msgid "does not sound like"
-msgstr "Fann ikkje fil"
-
-#: filter/libfilter-i18n.h:16
-#, fuzzy
-msgid "does not start with"
-msgstr "Kunne ikkje starta %1."
-
-#: filter/libfilter-i18n.h:17
-#, fuzzy
-msgid "Do Not Exist"
-msgstr "Fila finst ikkje\n"
-
-#: filter/libfilter-i18n.h:18
-msgid "ends with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:19
-#, fuzzy
-msgid "Exist"
-msgstr "Avslutt"
-
-#: filter/libfilter-i18n.h:20
-#, fuzzy
-msgid "exists"
-msgstr "Neste"
-
-#: filter/libfilter-i18n.h:21
-#, fuzzy
-msgid "Expression"
-msgstr "&Yrke:"
-
-#: filter/libfilter-i18n.h:22
-#, fuzzy
-msgid "Forward to Address"
-msgstr "Vidaresendt melding"
-
-#: filter/libfilter-i18n.h:23
-#, fuzzy
-msgid "is"
-msgstr "er"
-
-#: filter/libfilter-i18n.h:24
-msgid "is greater than"
-msgstr ""
-
-#: filter/libfilter-i18n.h:25
-msgid "is less than"
-msgstr ""
-
-#: filter/libfilter-i18n.h:26
-msgid "is not"
-msgstr ""
-
-#: filter/libfilter-i18n.h:27
-#, fuzzy
-msgid "Mailing list"
-msgstr "E-post&liste for språket:"
-
-#: filter/libfilter-i18n.h:28
-#, fuzzy
-msgid "Message Body"
-msgstr "Flytta alle meldingar til papirkorga"
-
-#: filter/libfilter-i18n.h:29
-#, fuzzy
-msgid "Message Header"
-msgstr "Melding motteken"
-
-#: filter/libfilter-i18n.h:30
-#, fuzzy
-msgid "Message was received"
-msgstr "Melding motteken"
-
-#: filter/libfilter-i18n.h:31
-#, fuzzy
-msgid "Message was sent"
-msgstr "Lag meldingar og slå saman"
-
-#: filter/libfilter-i18n.h:32
-#, fuzzy
-msgid "Move to Folder"
-msgstr "Flytt til mappe"
-
-#: filter/libfilter-i18n.h:33
-#, fuzzy
-msgid "on or after"
-msgstr "Slutt etter"
-
-#: filter/libfilter-i18n.h:34
-msgid "on or before"
-msgstr ""
-
-#: filter/libfilter-i18n.h:35
-#, fuzzy
-msgid "Recipients"
-msgstr "Nyleg brukte fargar"
-
-#: filter/libfilter-i18n.h:36
-msgid "Regex Match"
-msgstr ""
-
-#: filter/libfilter-i18n.h:37 filter/score-rule.c:192 filter/score-rule.c:194
-#: mail/message-list.c:1171
-msgid "Score"
-msgstr "Poengsum"
-
-#: filter/libfilter-i18n.h:39
-#, fuzzy
-msgid "Set Status"
-msgstr "Status:"
-
-#: filter/libfilter-i18n.h:40
-msgid "sounds like"
-msgstr ""
-
-#: filter/libfilter-i18n.h:41 mail/mail-config.glade.h:68
-#, fuzzy
-msgid "Source"
-msgstr "Kjelder"
-
-#: filter/libfilter-i18n.h:42
-msgid "Specific header"
-msgstr ""
-
-#: filter/libfilter-i18n.h:43
-msgid "starts with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:45
-msgid "Stop Processing"
-msgstr ""
-
-#: filter/libfilter-i18n.h:46 mail/message-list.c:1172
-msgid "Subject"
-msgstr "Emne"
-
-#: filter/libfilter-i18n.h:47
-#, fuzzy
-msgid "was after"
-msgstr "Slutt etter"
-
-#: filter/libfilter-i18n.h:48
-msgid "was before"
-msgstr ""
-
-#: filter/score-editor.c:126
-#, fuzzy
-msgid "Score Rules"
-msgstr "Rediger filterreglar"
-
-#: mail/component-factory.c:306
-#, fuzzy
-msgid "Cannot initialize Evolution's mail component."
-msgstr "Kan ikkje initialisera lokale variablar"
-
-#: mail/component-factory.c:379
-msgid "Cannot register storage with shell"
-msgstr ""
-
-#: mail/folder-browser-factory.c:237
-#, fuzzy, c-format
-msgid "Properties for \"%s\""
-msgstr "Eigenskapar ..."
-
-#: mail/folder-browser-factory.c:239 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-#, fuzzy
-msgid "Properties"
-msgstr "Eigenskapar ..."
-
-#: mail/folder-browser.c:219
-#, fuzzy
-msgid "Store search as vFolder"
-msgstr "Vel mappe"
-
-#: mail/folder-browser.c:509
-#, fuzzy
-msgid "VFolder on Subject"
-msgstr "Ingen emne"
-
-#: mail/folder-browser.c:512
-#, fuzzy
-msgid "VFolder on Sender"
-msgstr "Mappenamn:"
-
-#: mail/folder-browser.c:515
-#, fuzzy
-msgid "VFolder on Recipients"
-msgstr "Mappa finst: "
-
-#: mail/folder-browser.c:518 mail/folder-browser.c:702
-#, fuzzy
-msgid "VFolder on Mailing List"
-msgstr "Fil alt i liste"
-
-#: mail/folder-browser.c:524
-#, fuzzy
-msgid "Filter on Subject"
-msgstr "Ingen emne"
-
-#: mail/folder-browser.c:527
-#, fuzzy
-msgid "Filter on Sender"
-msgstr "Fil under:"
-
-#: mail/folder-browser.c:530
-#, fuzzy
-msgid "Filter on Recipients"
-msgstr "Skriv ut filer"
-
-#: mail/folder-browser.c:533 mail/folder-browser.c:701
-#, fuzzy
-msgid "Filter on Mailing List"
-msgstr "Fil alt i liste"
-
-#: mail/folder-browser.c:544
-#, fuzzy
-msgid "Save As..."
-msgstr "Lagra som ..."
-
-#: mail/folder-browser.c:546 mail/mail-view.c:148
-#: ui/evolution-addressbook.xml.h:9 ui/evolution-calendar.xml.h:19
-#: ui/evolution-mail.xml.h:31 ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr "Skriv ut"
-
-#: mail/folder-browser.c:551
-#, fuzzy
-msgid "Reply to Sender"
-msgstr "Svar til avsendar:"
-
-#: mail/folder-browser.c:553 mail/mail-view.c:141 ui/evolution-mail.xml.h:39
-#, fuzzy
-msgid "Reply to All"
-msgstr "Svar til alle:"
-
-#: mail/folder-browser.c:555 mail/mail-view.c:144 ui/evolution-mail.xml.h:15
-msgid "Forward"
-msgstr "Fram"
-
-#: mail/folder-browser.c:557
-#, fuzzy
-msgid "Forward inline"
-msgstr "Fram"
-
-#: mail/folder-browser.c:560
-#, fuzzy
-msgid "Mark as Read"
-msgstr "Mar&ker som ulesen"
-
-#: mail/folder-browser.c:562
-#, fuzzy
-msgid "Mark as Unread"
-msgstr "Mar&ker som ulesen"
-
-#: mail/folder-browser.c:567
-#, fuzzy
-msgid "Move to Folder..."
-msgstr "Flytt til mappe"
-
-#: mail/folder-browser.c:569
-#, fuzzy
-msgid "Copy to Folder..."
-msgstr "Flytt til mappe"
-
-#: mail/folder-browser.c:573
-#, fuzzy
-msgid "Undelete"
-msgstr "Slett"
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:583
-msgid "Apply Filters"
-msgstr ""
-
-#: mail/folder-browser.c:587
-msgid "Create Rule From Message"
-msgstr ""
-
-#: mail/folder-browser.c:704
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr ""
-
-#: mail/folder-browser.c:705
-#, fuzzy, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr "Fil alt i liste"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-#, fuzzy
-msgid "Evolution mail composer."
-msgstr "Kan ikkje initialisera lokale variablar"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-#, fuzzy
-msgid "Evolution mail executive summary component."
-msgstr "Kan ikkje initialisera lokale variablar"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-#, fuzzy
-msgid "Evolution mail folder display component."
-msgstr "Kan ikkje initialisera lokale variablar"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-#, fuzzy
-msgid "Evolution mail folder factory component."
-msgstr "Kan ikkje initialisera lokale variablar"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-#, fuzzy
-msgid "Factory for the Evolution composer."
-msgstr "Øydelagd oppsettfil."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-#, fuzzy
-msgid "Factory for the Evolution mail component."
-msgstr "Øydelagd oppsettfil."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-#, fuzzy
-msgid "Factory for the Mail Summary component."
-msgstr "Øydelagd oppsettfil."
-
-#: mail/local-config.glade.h:1
-#, fuzzy
-msgid "Current store format:"
-msgstr "Kunne ikkje starta %1."
-
-#: mail/local-config.glade.h:2
-#, fuzzy
-msgid "Mailbox Format"
-msgstr "Format"
-
-#: mail/local-config.glade.h:3
-#, fuzzy
-msgid "New store format:"
-msgstr "&Ny type"
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-
-#: mail/local-config.glade.h:7
-#, fuzzy
-msgid "maildir"
-msgstr "E-post 2"
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr ""
-
-#: mail/local-config.glade.h:9
-#, fuzzy
-msgid "mh"
-msgstr "ms"
-
-#: mail/mail-accounts.c:116
-#, fuzzy
-msgid " (default)"
-msgstr "Standard"
-
-#: mail/mail-accounts.c:224 mail/mail-accounts.c:228
-#, fuzzy
-msgid "Are you sure you want to delete this account?"
-msgstr "Er du sikker på at du vil sletta denne klassen?"
-
-#: mail/mail-accounts.c:334 mail/mail-accounts.c:338
-#, fuzzy
-msgid "Are you sure you want to delete this news account?"
-msgstr "Er du sikker på at du vil sletta denne klassen?"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:423
-msgid "Evolution Account Manager"
-msgstr ""
-
-#: mail/mail-account-editor.c:307
-msgid ""
-"One or more of your servers are not configured correctly.\n"
-"Do you wish to save anyway?"
-msgstr ""
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:706
-#, fuzzy
-msgid "Evolution Account Editor"
-msgstr "KDeelop-installering"
-
-#: mail/mail-account-editor.c:727
-msgid "Unspecified"
-msgstr ""
-
-#: mail/mail-autofilter.c:71
-#, fuzzy, c-format
-msgid "Mail to %s"
-msgstr "Postkasse: %1"
-
-#: mail/mail-autofilter.c:214
-#, fuzzy, c-format
-msgid "Subject is %s"
-msgstr "Emne"
-
-#: mail/mail-autofilter.c:230
-#, fuzzy, c-format
-msgid "Mail from %s"
-msgstr "Melding frå %s"
-
-#: mail/mail-autofilter.c:286
-#, fuzzy, c-format
-msgid "%s mailing list"
-msgstr "E-post&liste for språket:"
-
-#: mail/mail-autofilter.c:336 mail/mail-autofilter.c:358
-#, fuzzy
-msgid "Add Filter Rule"
-msgstr "Filter-reglar"
-
-#: mail/mail-callbacks.c:85
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-
-#: mail/mail-callbacks.c:138
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-
-#: mail/mail-callbacks.c:150
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-
-#: mail/mail-callbacks.c:194
-msgid "You have not set a mail transport method"
-msgstr ""
-
-#: mail/mail-callbacks.c:227
-#, fuzzy
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr "Meldinga har ingen sendar"
-
-#: mail/mail-callbacks.c:294
-msgid "You must configure an account before you can send this email."
-msgstr ""
-
-#: mail/mail-callbacks.c:316
-msgid "You must specify recipients in order to send this message."
-msgstr ""
-
-#: mail/mail-callbacks.c:579
-#, c-format
-msgid "On %s, %s wrote:\n"
-msgstr ""
-
-#: mail/mail-callbacks.c:761
-#, fuzzy
-msgid "Forwarded message:\n"
-msgstr "Vidaresendt melding frå %1"
-
-#: mail/mail-callbacks.c:864
-#, fuzzy
-msgid "Move message(s) to"
-msgstr "Flytta alle meldingar til papirkorga"
-
-#: mail/mail-callbacks.c:866
-#, fuzzy
-msgid "Copy message(s) to"
-msgstr "&Kopier bileteplassering"
-
-#: mail/mail-callbacks.c:1007
-#, fuzzy
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr "Vil du lagra denne artikkelen i Kladd-mappa?"
-
-#: mail/mail-callbacks.c:1040 mail/mail-display.c:83
-#, fuzzy
-msgid "Overwrite file?"
-msgstr "Overskriv filer"
-
-#: mail/mail-callbacks.c:1044 mail/mail-display.c:87
-#, fuzzy
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr "Ei fil med det namnet finst alt. Vil du skriva over den?"
-
-#: mail/mail-callbacks.c:1088
-#, fuzzy
-msgid "Save Message As..."
-msgstr "Lagra melding"
-
-#: mail/mail-callbacks.c:1090
-#, fuzzy
-msgid "Save Messages As..."
-msgstr "Lagra melding"
-
-#: mail/mail-callbacks.c:1204
-#, fuzzy, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr "Les filinformasjon"
-
-#: mail/mail-callbacks.c:1253
-#, fuzzy
-msgid "Print Message"
-msgstr "Private meldingar"
-
-#: mail/mail-callbacks.c:1300
-#, fuzzy
-msgid "Printing of message failed"
-msgstr "Feil ved skriving av band-ID."
-
-#: mail/mail-config.glade.h:1
-#, fuzzy
-msgid "Account"
-msgstr "Små ikon"
-
-#: mail/mail-config.glade.h:2
-#, fuzzy
-msgid "Account Information"
-msgstr "Informasjon"
-
-#: mail/mail-config.glade.h:3
-msgid "Account Management"
-msgstr ""
-
-#: mail/mail-config.glade.h:5
-#, fuzzy
-msgid "Advanced"
-msgstr "Legg til ..."
-
-#: mail/mail-config.glade.h:6
-#, fuzzy
-msgid "Authentication"
-msgstr "Autentisering:"
-
-#: mail/mail-config.glade.h:7
-#, fuzzy
-msgid "Authentication Type:"
-msgstr "Autentisering:"
-
-#: mail/mail-config.glade.h:9
-msgid "Automatically check mail every"
-msgstr ""
-
-#: mail/mail-config.glade.h:11
-#, fuzzy
-msgid "Check settings"
-msgstr "Skriftinnstillingar"
-
-#: mail/mail-config.glade.h:12
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-
-#: mail/mail-config.glade.h:19
-#, fuzzy
-msgid "De_fault"
-msgstr "Standard"
-
-#: mail/mail-config.glade.h:21
-#, fuzzy
-msgid "Done"
-msgstr "Ingen"
-
-#: mail/mail-config.glade.h:23
-#, fuzzy
-msgid "Email Address:"
-msgstr "E-post-adresse:"
-
-#: mail/mail-config.glade.h:24
-msgid "Email address:"
-msgstr "E-post-adresse:"
-
-#: mail/mail-config.glade.h:25
-#, fuzzy
-msgid "Evolution Mail Configuration"
-msgstr "Oppsett"
-
-#: mail/mail-config.glade.h:26
-#, fuzzy
-msgid "Full Name:"
-msgstr "Fullt namn"
-
-#: mail/mail-config.glade.h:29
-#, fuzzy
-msgid "Hostname:"
-msgstr "Brukarnamn:"
-
-#: mail/mail-config.glade.h:30
-msgid "IMAP"
-msgstr ""
-
-#: mail/mail-config.glade.h:31
-msgid "Identity"
-msgstr "Identitet"
-
-#: mail/mail-config.glade.h:32
-msgid "Include this account when receiving mail"
-msgstr ""
-
-#: mail/mail-config.glade.h:33
-#, fuzzy
-msgid "Keep mail on server"
-msgstr "Slett e-post frå tenaren"
-
-#: mail/mail-config.glade.h:34
-#, fuzzy
-msgid "Kerberos"
-msgstr "Tenar:"
-
-#: mail/mail-config.glade.h:35
-#, fuzzy
-msgid "Mail"
-msgstr "Send"
-
-#: mail/mail-config.glade.h:36
-#, fuzzy
-msgid "Mail Account"
-msgstr "Små ikon"
-
-#: mail/mail-config.glade.h:37
-#, fuzzy
-msgid "Mail Configuration"
-msgstr "Oppsett"
-
-#: mail/mail-config.glade.h:38
-#, fuzzy
-msgid "Mail Configuration Druid"
-msgstr "Oppsett"
-
-#: mail/mail-config.glade.h:39
-msgid "Make this my default account"
-msgstr ""
-
-#: mail/mail-config.glade.h:40
-#, fuzzy
-msgid "Mark messages as \"Read\" after:"
-msgstr "Lag meldingar og slå saman"
-
-#: mail/mail-config.glade.h:42
-#, fuzzy
-msgid "News"
-msgstr "Ny ..."
-
-#: mail/mail-config.glade.h:44
-#, fuzzy
-msgid "Optional"
-msgstr "Val"
-
-#: mail/mail-config.glade.h:45
-msgid "Organization:"
-msgstr "Organisasjon:"
-
-#: mail/mail-config.glade.h:47
-msgid "PGP binary path:"
-msgstr ""
-
-#: mail/mail-config.glade.h:48
-#, fuzzy
-msgid "Password:"
-msgstr "Lagra som"
-
-#: mail/mail-config.glade.h:50
-msgid "Plain Text"
-msgstr ""
-
-#: mail/mail-config.glade.h:51
-#, fuzzy
-msgid "Receiving Email"
-msgstr "Send"
-
-#: mail/mail-config.glade.h:52
-#, fuzzy
-msgid "Remember my password"
-msgstr "Lagra som"
-
-#: mail/mail-config.glade.h:53
-#, fuzzy
-msgid "Reply address:"
-msgstr "E-post-adresse:"
-
-#: mail/mail-config.glade.h:54
-#, fuzzy
-msgid "Required"
-msgstr "Motta"
-
-#: mail/mail-config.glade.h:56
-#, fuzzy
-msgid "Save password"
-msgstr "Lagra som"
-
-#: mail/mail-config.glade.h:57
-msgid "Select PGP binary"
-msgstr ""
-
-#: mail/mail-config.glade.h:58
-#, fuzzy
-msgid "Select signature file"
-msgstr "Signaturfil:"
-
-#: mail/mail-config.glade.h:59
-#, fuzzy
-msgid "Send mail in HTML format by default."
-msgstr "Send meldingar:"
-
-#: mail/mail-config.glade.h:60
-#, fuzzy
-msgid "Sending Email"
-msgstr "Send"
-
-#: mail/mail-config.glade.h:62
-#, fuzzy
-msgid "Server Configuration"
-msgstr "Oppsett"
-
-#: mail/mail-config.glade.h:63
-#, fuzzy
-msgid "Server Type: "
-msgstr "Tenar:"
-
-#: mail/mail-config.glade.h:64
-msgid "Server requires authentication"
-msgstr ""
-
-#: mail/mail-config.glade.h:65
-#, fuzzy
-msgid "Server type:"
-msgstr "Tenar:"
-
-#: mail/mail-config.glade.h:66
-#, fuzzy
-msgid "Signature file:"
-msgstr "Signaturfil:"
-
-#: mail/mail-config.glade.h:67
-#, fuzzy
-msgid "Signature:"
-msgstr "Signaturfil:"
-
-#: mail/mail-config.glade.h:69
-msgid "Sources"
-msgstr "Kjelder"
-
-#: mail/mail-config.glade.h:70
-msgid "This server requires a secure connection (SSL)"
-msgstr ""
-
-#: mail/mail-config.glade.h:71
-#, fuzzy
-msgid "Transport"
-msgstr "Gjennomsiktig "
-
-#: mail/mail-config.glade.h:72
-#, fuzzy
-msgid "Transport Authentication"
-msgstr "Autentisering:"
-
-#: mail/mail-config.glade.h:73
-#, fuzzy
-msgid "Type"
-msgstr "Type:"
-
-#: mail/mail-config.glade.h:74
-msgid ""
-"Type the name by which you would like to refer to these servers. For "
-"example: \"Work\" or \"Home\"."
-msgstr ""
-
-#: mail/mail-config.glade.h:75
-#, fuzzy
-msgid "User Information"
-msgstr "Informasjon"
-
-#: mail/mail-config.glade.h:76
-msgid "Username:"
-msgstr "Brukarnamn:"
-
-#: mail/mail-config.glade.h:77
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-
-#: mail/mail-config.glade.h:82 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:43 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:28
-#, fuzzy
-msgid "_Edit"
-msgstr "Rediger"
-
-#: mail/mail-config.glade.h:83
-#, fuzzy
-msgid "minutes."
-msgstr "minutt"
-
-#: mail/mail-config-druid.c:421
-#, c-format
-msgid ""
-"Failed to verify the incoming mail configuration.\n"
-"You may experience problems retrieving your mail from %s"
-msgstr ""
-
-#: mail/mail-config-druid.c:515
-#, fuzzy
-msgid "Namespace:"
-msgstr "Navn:"
-
-#: mail/mail-config-druid.c:708
-#, c-format
-msgid ""
-"Failed to verify the outgoing mail configuration.\n"
-"You may experience problems sending your mail using %s"
-msgstr ""
-
-#. set window title
-#: mail/mail-config-druid.c:1215
-msgid "Evolution Account Wizard"
-msgstr ""
-
-#: mail/mail-display.c:189
-#, fuzzy
-msgid "Save Attachment"
-msgstr "Smarte vedlegg"
-
-#: mail/mail-display.c:229
-#, fuzzy, c-format
-msgid "Could not create temporary directory: %s"
-msgstr ""
-"Kunne ikkje laga mellombels fil\n"
-"%1:\n"
-"%2"
-
-#: mail/mail-display.c:290
-#, fuzzy
-msgid "Save to Disk..."
-msgstr "Lagra til disk"
-
-#: mail/mail-display.c:292
-#, fuzzy, c-format
-msgid "Open in %s..."
-msgstr "Opnar URL ..."
-
-#: mail/mail-display.c:294
-#, fuzzy
-msgid "View Inline"
-msgstr "Vinkel"
-
-#: mail/mail-display.c:323
-#, fuzzy
-msgid "External Viewer"
-msgstr "Hendingsvisar"
-
-#: mail/mail-display.c:346
-#, c-format
-msgid "View Inline (via %s)"
-msgstr ""
-
-#: mail/mail-display.c:350
-msgid "Hide"
-msgstr "Skjul"
-
-#: mail/mail-format.c:506
-#, fuzzy, c-format
-msgid "%s attachment"
-msgstr "Vedlegg"
-
-#: mail/mail-format.c:704
-#, fuzzy
-msgid "Loading message content"
-msgstr "Markerer meldingar"
-
-#: mail/mail-format.c:993
-#, fuzzy
-msgid "Encrypted message not displayed"
-msgstr "Endra tidsvising"
-
-#: mail/mail-format.c:999
-#, fuzzy
-msgid "Encrypted message"
-msgstr "Lagra melding"
-
-#: mail/mail-format.c:1000
-msgid "Click icon to decrypt."
-msgstr ""
-
-#: mail/mail-format.c:1069 mail/mail-format.c:1456
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr ""
-
-#: mail/mail-format.c:1077 mail/mail-format.c:1464
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr ""
-
-#: mail/mail-format.c:1677
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr ""
-
-#: mail/mail-format.c:1689
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr ""
-
-#: mail/mail-format.c:1693
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr ""
-
-#: mail/mail-format.c:1727
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr ""
-
-#: mail/mail-format.c:1732
-msgid "Malformed external-body part."
-msgstr ""
-
-#: mail/mail-local.c:335
-#, fuzzy, c-format
-msgid "No such folder %s"
-msgstr "Vidaresendt melding"
-
-#: mail/mail-local.c:508
-#, fuzzy, c-format
-msgid "Opening '%s'"
-msgstr "Opnar URL ..."
-
-#: mail/mail-local.c:786
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr ""
-
-#: mail/mail-local.c:790
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr ""
-
-#: mail/mail-local.c:814
-msgid "Reconfiguring folder"
-msgstr ""
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:843
-msgid "Closing current folder"
-msgstr ""
-
-#: mail/mail-local.c:875
-msgid "Renaming old folder and opening"
-msgstr ""
-
-#: mail/mail-local.c:893
-#, fuzzy
-msgid "Creating new folder"
-msgstr "Lagar ei ny mappe"
-
-#: mail/mail-local.c:907
-#, fuzzy
-msgid "Copying messages"
-msgstr "Melding"
-
-#: mail/mail-local.c:928
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-
-#: mail/mail-local.c:967
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-
-#: mail/mail-mt.c:177
-#, fuzzy, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-"Feil ved laging av fil '%1':\n"
-"%2"
-
-#: mail/mail-mt.c:179
-#, fuzzy, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-"Feil ved lesing av fil:\n"
-"%s"
-
-#: mail/mail-mt.c:502 mail/mail-mt.c:531 mail/mail-mt.c:878
-#, fuzzy
-msgid "Working"
-msgstr "Flyttar"
-
-#: mail/mail-mt.c:666 mail/session.c:91
-msgid "Do you accept?"
-msgstr ""
-
-#: mail/mail-mt.c:860
-#, fuzzy
-msgid "Evolution progress"
-msgstr "Oppløysing"
-
-#: mail/mail-ops.c:516
-#, fuzzy, c-format
-msgid "Sending \"%s\""
-msgstr "Sender %1"
-
-#: mail/mail-ops.c:518
-#, fuzzy
-msgid "Sending message"
-msgstr "Sen melding"
-
-#: mail/mail-ops.c:752
-#, fuzzy
-msgid "Saving message to folder"
-msgstr "Mottek meldingar frå %1"
-
-#: mail/mail-ops.c:825
-#, fuzzy, c-format
-msgid "Moving messages to %s"
-msgstr "Flytta alle meldingar til papirkorga"
-
-#: mail/mail-ops.c:825
-#, fuzzy, c-format
-msgid "Copying messages to %s"
-msgstr "Melding"
-
-#: mail/mail-ops.c:842
-msgid "Moving"
-msgstr "Flyttar"
-
-#: mail/mail-ops.c:845
-msgid "Copying"
-msgstr "Kopierer"
-
-#: mail/mail-ops.c:856
-#, c-format
-msgid "%s message %d of %d (uid \"%s\")"
-msgstr ""
-
-#: mail/mail-ops.c:927
-#, fuzzy, c-format
-msgid "Scanning folders in \"%s\""
-msgstr "Leitar etter tilleggsmodular"
-
-#: mail/mail-ops.c:1085
-#, fuzzy
-msgid "Forwarded messages"
-msgstr "Vidaresendt melding frå %1"
-
-#: mail/mail-ops.c:1126 mail/mail-ops.c:1264
-#, fuzzy, c-format
-msgid "Opening folder %s"
-msgstr "Leitar etter tilleggsmodular"
-
-#: mail/mail-ops.c:1193
-#, fuzzy, c-format
-msgid "Opening store %s"
-msgstr "Leitar etter tilleggsmodular"
-
-#: mail/mail-ops.c:1380
-#, fuzzy
-msgid "Expunging folder"
-msgstr "Forventar %1"
-
-#: mail/mail-ops.c:1429
-#, fuzzy, c-format
-msgid "Retrieving message %s"
-msgstr "Mottek meldingar frå %1"
-
-#: mail/mail-ops.c:1496
-#, fuzzy
-msgid "Retrieving messages"
-msgstr "Mottek meldingar frå %1"
-
-#: mail/mail-ops.c:1506
-#, fuzzy, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr "Mottek meldingar frå %1"
-
-#: mail/mail-ops.c:1580
-#, fuzzy
-msgid "Saving messages"
-msgstr "Melding"
-
-#: mail/mail-ops.c:1659
-#, fuzzy, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: mail/mail-ops.c:1672
-#, fuzzy, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr "Mottek meldingar frå %1"
-
-#: mail/mail-ops.c:1686
-#, fuzzy, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr ""
-"Feil ved lesing a fil:\n"
-"%1"
-
-#: mail/mail-ops.c:1760
-#, fuzzy
-msgid "Saving attachment"
-msgstr "Smarte vedlegg"
-
-#: mail/mail-ops.c:1775
-#, fuzzy, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#: mail/mail-ops.c:1803
-#, fuzzy, c-format
-msgid "Could not write data: %s"
-msgstr "Kunne ikkje laga kio-jobb.\n"
-
-#: mail/mail-search-dialogue.c:107
-#, fuzzy
-msgid "_Search"
-msgstr "Søk"
-
-#: mail/mail-send-recv.c:136
-#, fuzzy
-msgid "Cancelling ..."
-msgstr "Avbroten."
-
-#: mail/mail-send-recv.c:231
-#, fuzzy
-msgid "Send & Receive mail"
-msgstr "Send"
-
-#: mail/mail-send-recv.c:234
-#, fuzzy
-msgid "Receiving"
-msgstr "Motta"
-
-#: mail/mail-send-recv.c:283
-msgid "Updating ..."
-msgstr ""
-
-#: mail/mail-send-recv.c:285 mail/mail-send-recv.c:331
-msgid "Waiting ..."
-msgstr ""
-
-#: mail/mail-send-recv.c:304
-#, fuzzy
-msgid "Sending"
-msgstr "Sender %1"
-
-#: mail/mail-send-recv.c:469
-#, fuzzy
-msgid "Cancelled."
-msgstr "Avbroten."
-
-#: mail/mail-send-recv.c:473
-#, fuzzy
-msgid "Complete."
-msgstr "Ferdig"
-
-#: mail/mail-summary.c:111
-#, fuzzy
-msgid "Incomplete message written on pipe!"
-msgstr "<ferdig melding>"
-
-#: mail/mail-tools.c:138
-#, fuzzy, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr ""
-"Kunne ikkje laga mellombels fil\n"
-"%1:\n"
-"%2"
-
-#: mail/mail-tools.c:185
-#, fuzzy, c-format
-msgid "[%s] (forwarded message)"
-msgstr "Vidaresendt melding"
-
-#: mail/mail-tools.c:195
-msgid "Fwd: (no subject)"
-msgstr "Fwd: (ingen emne)"
-
-#: mail/mail-tools.c:212
-#, fuzzy, c-format
-msgid "Forwarded message - %s"
-msgstr "Vidaresendt melding frå %1"
-
-#: mail/mail-tools.c:214
-#, fuzzy
-msgid "Forwarded message (no subject)"
-msgstr "Vidaresendt melding frå %1"
-
-#: mail/mail-tools.c:411
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-msgstr ""
-
-#: mail/mail-vfolder.c:248
-#, fuzzy
-msgid "VFolders"
-msgstr "Mapper"
-
-#: mail/mail-vfolder.c:426
-#, fuzzy
-msgid "New VFolder"
-msgstr "Ny mappe"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/mail-view.c:138 ui/evolution-mail.xml.h:38
-msgid "Reply"
-msgstr "Svar"
-
-#: mail/mail-view.c:138 ui/evolution-mail.xml.h:42
-#, fuzzy
-msgid "Reply to the sender of this message"
-msgstr "Fann ikkje sendaren av denne meldinga"
-
-#: mail/mail-view.c:141 ui/evolution-mail.xml.h:41
-#, fuzzy
-msgid "Reply to all recipients of this message"
-msgstr "Fann ikkje sendaren av denne meldinga"
-
-#: mail/mail-view.c:144 ui/evolution-mail.xml.h:17
-#, fuzzy
-msgid "Forward this message"
-msgstr "Vidaresendt melding"
-
-#: mail/mail-view.c:148 ui/evolution-mail.xml.h:34
-#, fuzzy
-msgid "Print the selected message"
-msgstr "Sentrer dei valte elementa"
-
-#: mail/mail-view.c:150 ui/evolution-mail.xml.h:8
-#, fuzzy
-msgid "Delete this message"
-msgstr "Slett denne adressa"
-
-#: mail/message-list.c:618
-#, fuzzy
-msgid "Unseen"
-msgstr "partalssider"
-
-#: mail/message-list.c:621
-#, fuzzy
-msgid "Seen"
-msgstr "Send"
-
-#: mail/message-list.c:624
-msgid "Answered"
-msgstr ""
-
-#: mail/message-list.c:627
-#, fuzzy
-msgid "Multiple Unseen Messages"
-msgstr "Vidaresendt melding frå %1"
-
-#: mail/message-list.c:630
-#, fuzzy
-msgid "Multiple Messages"
-msgstr "Lagra melding"
-
-#: mail/message-list.c:952
-#, c-format
-msgid "[ %s ]"
-msgstr ""
-
-#. well, we could scan more children, build up a (more accurate) list, but this should do ok
-#: mail/message-list.c:964 mail/message-list.c:980
-#, c-format
-msgid "%s, et al."
-msgstr ""
-
-#: mail/message-list.c:967 mail/message-list.c:983
-#, fuzzy
-msgid "<unknown>"
-msgstr "Ukjend"
-
-#: mail/message-list.c:1035
-msgid "?"
-msgstr ""
-
-#: mail/message-list.c:1042
-#, fuzzy
-msgid "Today %l:%M %p"
-msgstr "%H:%M"
-
-#: mail/message-list.c:1051
-msgid "Yesterday %l:%M %p"
-msgstr ""
-
-#: mail/message-list.c:1063
-#, fuzzy
-msgid "%a %l:%M %p"
-msgstr "%H:%M"
-
-#: mail/message-list.c:1071
-#, fuzzy
-msgid "%b %d %l:%M %p"
-msgstr "%H:%M"
-
-#: mail/message-list.c:1073
-#, fuzzy
-msgid "%b %d %Y"
-msgstr "%1 bit %2 %3"
-
-#: mail/message-list.c:1171
-msgid "Flagged"
-msgstr ""
-
-#: mail/message-list.c:1172
-msgid "From"
-msgstr "Frå"
-
-#: mail/message-list.c:1172
-#, fuzzy
-msgid "Date"
-msgstr "Forfallsdato"
-
-#: mail/message-list.c:1172
-#, fuzzy
-msgid "Received"
-msgstr "Motta"
-
-#: mail/message-list.c:1173
-msgid "To"
-msgstr "Til"
-
-#: mail/message-list.c:1173
-msgid "Size"
-msgstr "Storleik"
-
-#: mail/openpgp-utils.c:89
-#, fuzzy, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr "Oppgi ditt OpenPGP-passord"
-
-#: mail/openpgp-utils.c:92
-#, fuzzy, c-format
-msgid "Please enter your %s passphrase"
-msgstr "Oppgi ditt OpenPGP-passord"
-
-#: mail/openpgp-utils.c:452 mail/openpgp-utils.c:558 mail/openpgp-utils.c:760
-#: mail/openpgp-utils.c:913 mail/openpgp-utils.c:1071
-#, fuzzy
-msgid "No GPG/PGP program available."
-msgstr "Ingen bilete tilgjengeleg."
-
-#: mail/openpgp-utils.c:459 mail/openpgp-utils.c:567 mail/openpgp-utils.c:767
-#: mail/openpgp-utils.c:920
-#, fuzzy
-msgid "No password provided."
-msgstr "Ingen passord oppgitt."
-
-#: mail/openpgp-utils.c:467 mail/openpgp-utils.c:574 mail/openpgp-utils.c:773
-#: mail/openpgp-utils.c:928 mail/openpgp-utils.c:1077
-#, fuzzy, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr "Kunne ikkje laga katalog\n"
-
-#: mail/openpgp-utils.c:588
-msgid "No recipients specified"
-msgstr ""
-
-#: mail/openpgp-utils.c:1088
-#, fuzzy, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "Kunne ikkje laga katalog\n"
-
-#: mail/subscribe-dialog.c:64 shell/e-storage-set-view.c:44
-#, fuzzy
-msgid "Folder"
-msgstr "Mapper"
-
-#: mail/subscribe-dialog.c:65
-#, fuzzy
-msgid "Store"
-msgstr "Poengsum"
-
-#: mail/subscribe-dialog.c:147
-msgid "Display folders starting with:"
-msgstr ""
-
-#: mail/subscribe-dialog.c:177
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:280
-#, fuzzy, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr "Leitar etter tilleggsmodular"
-
-#: mail/subscribe-dialog.c:282
-#, fuzzy, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr "Mottek meldingar frå %1"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-#, fuzzy
-msgid "Folder name:"
-msgstr "Filnamn:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-#, fuzzy
-msgid "Folder type:"
-msgstr "Mapper"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-#, fuzzy
-msgid "Specify where to create the folder:"
-msgstr "Ikkje nok skip å senda."
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/importer/importer.c:157
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-
-#: shell/importer/importer.c:175 shell/importer/importer.c:202
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-
-#: shell/importer/importer.c:309
-#, fuzzy, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr "Det er ikkje band i stasjonen."
-
-#: shell/importer/importer.c:319
-#, fuzzy
-msgid "Importing"
-msgstr "Flyttar"
-
-#: shell/importer/importer.c:327
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-
-#: shell/importer/importer.c:342
-#, fuzzy, c-format
-msgid "Error loading %s"
-msgstr ""
-"Feil ved nedlasting av fil:\n"
-"%1"
-
-#: shell/importer/importer.c:357
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-
-#: shell/importer/importer.c:428
-#, fuzzy
-msgid "Automatic"
-msgstr "Automatisk"
-
-#: shell/importer/importer.c:478
-#, fuzzy
-msgid "Filename:"
-msgstr "Filnamn:"
-
-#: shell/importer/import.glade.h:5 shell/importer/importer.c:483
-#, fuzzy
-msgid "Select a file"
-msgstr "Signaturfil:"
-
-#: shell/importer/importer.c:493
-#, fuzzy
-msgid "File type:"
-msgstr "Filnamn:"
-
-#: shell/importer/import.glade.h:4 shell/importer/importer.c:574
-msgid "Import"
-msgstr ""
-
-#: shell/importer/importer.c:609
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr ""
-
-#: shell/importer/import.glade.h:2
-#, fuzzy
-msgid "Evolution Import Utility"
-msgstr "KDeelop-installering"
-
-#: shell/importer/import.glade.h:3
-#, fuzzy
-msgid "Evolution Importer Utility"
-msgstr "KDeelop-installering"
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-
-#: shell/e-setup.c:112 shell/e-setup.c:185
-#, fuzzy
-msgid "Evolution installation"
-msgstr "KDeelop-installering"
-
-#: shell/e-setup.c:116
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-
-#: shell/e-setup.c:117
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr ""
-
-#: shell/e-setup.c:157
-#, fuzzy
-msgid "Could not update files correctly"
-msgstr "Kunne ikkje laga kio-jobb.\n"
-
-#: shell/e-setup.c:160 shell/e-setup.c:228
-#, fuzzy
-msgid "Evolution files successfully installed."
-msgstr "Alle filer vart sletta."
-
-#: shell/e-setup.c:189
-#, fuzzy
-msgid "This seems to be the first time you are running Evolution."
-msgstr ""
-"Dette er første nivå\n"
-"i denne samlinga."
-
-#: shell/e-setup.c:190
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr ""
-
-#: shell/e-setup.c:209
-#, fuzzy, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"Kan ikkje laga heimekatalog\n"
-"Feil: %1"
-
-#: shell/e-setup.c:224
-#, fuzzy, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr "kan ikkje opna fila %1"
-
-#: shell/e-setup.c:249
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-
-#: shell/e-setup.c:261
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-
-#: shell/e-shell-folder-creation-dialog.c:96
-#, fuzzy, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-"Kan ikkje laga fila\n"
-"\""
-
-#: shell/e-shell-folder-creation-dialog.c:153
-#, fuzzy
-msgid "The specified folder name is not valid."
-msgstr "Arkivfilnamnet er ikkje gyldig.\n"
-
-#: shell/e-shell-folder-creation-dialog.c:245
-#, fuzzy
-msgid "Evolution - Create new folder"
-msgstr "Lagar ei ny mappe"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-
-#: shell/e-shell-folder-selection-dialog.c:318
-msgid "New..."
-msgstr "Ny ..."
-
-#: shell/e-shell-folder-title-bar.c:451 shell/e-shell-folder-title-bar.c:452
-#, fuzzy
-msgid "(Untitled)"
-msgstr "Utan tittel"
-
-#: shell/e-shell-view-menu.c:159
-msgid "Bug buddy was not found in your $PATH."
-msgstr ""
-
-#: shell/e-shell-view-menu.c:165
-#, fuzzy
-msgid "Bug buddy could not be run."
-msgstr "Kunne ikkje lagra adresseboka."
-
-#: shell/e-shell-view-menu.c:194
-#, fuzzy
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Opphavsrett (c), %1 1997-2000"
-
-#: shell/e-shell-view-menu.c:196
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-
-#: shell/e-shell-view-menu.c:360
-#, fuzzy
-msgid "Go to folder..."
-msgstr "Flytt til mappe"
-
-#: shell/e-shell-view.c:143
-msgid "(No folder displayed)"
-msgstr ""
-
-#: shell/e-shell-view.c:474
-msgid "Folders"
-msgstr "Mapper"
-
-#: shell/e-shell-view.c:1124
-#, fuzzy, c-format
-msgid "%s - Evolution %s"
-msgstr "Evalueringsfeil"
-
-#: shell/e-shell-view.c:1126
-#, fuzzy, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "Evalueringsfeil"
-
-#: shell/e-shell.c:372
-#, fuzzy, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr "Kan ikkje setja blokkstorleik for band."
-
-#: shell/e-shell.c:1242
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-
-#: shell/e-shortcuts-view.c:123
-#, fuzzy
-msgid "Create new shortcut group"
-msgstr "Endra snarveg for:"
-
-#: shell/e-shortcuts-view.c:126
-msgid "Group name:"
-msgstr "Gruppenamn:"
-
-#: shell/e-shortcuts-view.c:249
-#, fuzzy, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr "Vil du verkeleg leggja '%1' i papirkorga?"
-
-#: shell/e-shortcuts-view.c:254
-#, fuzzy
-msgid "Don't remove"
-msgstr "fjern"
-
-#: shell/e-shortcuts-view.c:265
-#, fuzzy
-msgid "_Small Icons"
-msgstr "Små ikon"
-
-#: shell/e-shortcuts-view.c:266
-msgid "Show the shortcuts as small icons"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:268
-#, fuzzy
-msgid "_Large Icons"
-msgstr "Ordna ikon"
-
-#: shell/e-shortcuts-view.c:269
-msgid "Show the shortcuts as large icons"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:280
-#, fuzzy
-msgid "_New Group..."
-msgstr "Ny gruppe ..."
-
-#: shell/e-shortcuts-view.c:281
-#, fuzzy
-msgid "Create a new shortcut group"
-msgstr "Lagar eit nytt dokument"
-
-#: shell/e-shortcuts-view.c:283
-#, fuzzy
-msgid "_Remove This Group..."
-msgstr "Fjern gruppe"
-
-#: shell/e-shortcuts-view.c:284
-#, fuzzy
-msgid "Remove this shortcut group"
-msgstr "Fjern denne oppføringa"
-
-#: shell/e-shortcuts-view.c:289
-msgid "_Hide the Shortcut Bar"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:290
-#, fuzzy
-msgid "Hide the shortcut bar"
-msgstr "&Programsnøggtastar"
-
-#: shell/e-shortcuts-view.c:374
-msgid "Activate"
-msgstr "Aktiver"
-
-#: shell/e-shortcuts-view.c:374
-#, fuzzy
-msgid "Activate this shortcut"
-msgstr "&Programsnøggtastar"
-
-#: shell/e-shortcuts-view.c:377
-msgid "Remove this shortcut from the shortcut bar"
-msgstr ""
-
-#: shell/e-shortcuts.c:375
-#, fuzzy
-msgid "Error saving shortcuts."
-msgstr "Feil ved lagring av innstillingar."
-
-#: shell/e-storage-set-view.c:468 ui/evolution-event-editor.xml.h:76
-#: ui/evolution-message-composer.xml.h:53
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:42
-#, fuzzy
-msgid "_View"
-msgstr "Vis"
-
-#: shell/e-storage-set-view.c:468
-#, fuzzy
-msgid "View the selected folder"
-msgstr "Slettar den valte fila"
-
-#: shell/e-storage.c:178
-#, fuzzy
-msgid "(No name)"
-msgstr "Ingen namn"
-
-#: shell/e-storage.c:429
-#, fuzzy
-msgid "No error"
-msgstr "Ingen feil."
-
-#: shell/e-storage.c:431
-#, fuzzy
-msgid "Generic error"
-msgstr "Generell feil"
-
-#: shell/e-storage.c:433
-#, fuzzy
-msgid "A folder with the same name already exists"
-msgstr "Ein tabell med det namnet finst alt."
-
-#: shell/e-storage.c:435
-#, fuzzy
-msgid "The specified folder type is not valid"
-msgstr "Den oppgitte fila finst ikkje"
-
-#: shell/e-storage.c:437
-#, fuzzy
-msgid "I/O error"
-msgstr "IU-feil"
-
-#: shell/e-storage.c:439
-#, fuzzy
-msgid "Not enough space to create the folder"
-msgstr "Ikkje nok skip å senda."
-
-#: shell/e-storage.c:441
-#, fuzzy
-msgid "The specified folder was not found"
-msgstr "Den oppgitte fila finst ikkje"
-
-#: shell/e-storage.c:443
-#, fuzzy
-msgid "Function not implemented in this storage"
-msgstr "Kommando ikkje støtta på tenar"
-
-#: shell/e-storage.c:445
-msgid "Permission denied"
-msgstr "Nekta tilgang"
-
-#: shell/e-storage.c:447
-#, fuzzy
-msgid "Operation not supported"
-msgstr "Operasjonen vart stoppa"
-
-#: shell/e-storage.c:449
-#, fuzzy
-msgid "The specified type is not supported in this storage"
-msgstr "Den oppgitte fila finst ikkje"
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-#, fuzzy
-msgid "The Evolution shell."
-msgstr "Kan ikkje initialisera adresseboka"
-
-#: shell/main.c:73
-#, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-
-#: shell/main.c:98
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-
-#: shell/main.c:129
-#, fuzzy
-msgid "Cannot initialize the Evolution shell."
-msgstr "Kan ikkje initialisera adresseboka"
-
-#: shell/main.c:175
-#, fuzzy
-msgid "Disable."
-msgstr "Deaktivert"
-
-#: shell/main.c:195
-#, fuzzy
-msgid "Cannot initialize the Bonobo component system."
-msgstr "Kan ikkje initialisera adresseboka"
-
-#: ui/evolution-addressbook.xml.h:2
-#, fuzzy
-msgid "Create new contact"
-msgstr "Lagar eit nytt dokument"
-
-#: ui/evolution-addressbook.xml.h:4
-#, fuzzy
-msgid "Delete a contact"
-msgstr "Slett kolonne"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-#, fuzzy
-msgid "Find"
-msgstr "Finn ..."
-
-#: ui/evolution-addressbook.xml.h:6
-#, fuzzy
-msgid "Find a contact"
-msgstr "Slett kolonne"
-
-#: ui/evolution-addressbook.xml.h:7
-#, fuzzy
-msgid "New contact"
-msgstr "Se&nd avtale"
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-calendar.xml.h:18
-#: ui/evolution-mail.xml.h:30
-#, fuzzy
-msgid "Previews the message to be printed"
-msgstr "Sen melding"
-
-#: ui/evolution-addressbook.xml.h:11
-#, fuzzy
-msgid "Print contacts"
-msgstr "&Innhald ..."
-
-#: ui/evolution-addressbook.xml.h:12 ui/evolution-mail.xml.h:49
-#, fuzzy
-msgid "Stop"
-msgstr "Poengsum"
-
-#: ui/evolution-addressbook.xml.h:13
-#, fuzzy
-msgid "Stop Loading"
-msgstr "Lagring"
-
-#: ui/evolution-addressbook.xml.h:14
-#, fuzzy
-msgid "View All"
-msgstr "Vinkel"
-
-#: ui/evolution-addressbook.xml.h:15
-#, fuzzy
-msgid "View all contacts"
-msgstr "Slett kolonne"
-
-#: ui/evolution-addressbook.xml.h:16
-#, fuzzy
-msgid "_Addressbook Sources..."
-msgstr "Kjelde:"
-
-#: ui/evolution-addressbook.xml.h:17
-#, fuzzy
-msgid "_Contact"
-msgstr "&Innhald ..."
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:35
-#: ui/evolution-contact-editor.xml.h:15
-#, fuzzy
-msgid "_Print..."
-msgstr "Skriv ut"
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr ""
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:37
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-mail.xml.h:76
-#: ui/evolution-task-editor-dialog.xml.h:88 ui/evolution.xml.h:41
-#, fuzzy
-msgid "_Tools"
-msgstr "Verktøy"
-
-#: ui/evolution-calendar.xml.h:1
-#, fuzzy
-msgid "5 Days"
-msgstr " dag"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-#, fuzzy
-msgid "Alter preferences"
-msgstr "Innstillingar"
-
-#: ui/evolution-calendar.xml.h:4
-#, fuzzy
-msgid "Create a new appointment"
-msgstr "&Slett avtale"
-
-#: ui/evolution-calendar.xml.h:5
-#, fuzzy
-msgid "Create a new calendar"
-msgstr "Feil ved opning"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Day"
-msgstr "Dag"
-
-#: ui/evolution-calendar.xml.h:7
-#, fuzzy
-msgid "Go To"
-msgstr "GÃ¥ til side"
-
-#: ui/evolution-calendar.xml.h:8
-#, fuzzy
-msgid "Go back in time"
-msgstr "Ikkje vis den overskytande teksten"
-
-#: ui/evolution-calendar.xml.h:9
-#, fuzzy
-msgid "Go forward in time"
-msgstr "Fram"
-
-#: ui/evolution-calendar.xml.h:10
-#, fuzzy
-msgid "Go to a specific date"
-msgstr "GÃ¥ til side"
-
-#: ui/evolution-calendar.xml.h:11
-#, fuzzy
-msgid "Go to present time"
-msgstr "Ikkje vis den overskytande teksten"
-
-#: ui/evolution-calendar.xml.h:12
-msgid "Month"
-msgstr "MÃ¥nad"
-
-#: ui/evolution-calendar.xml.h:13
-#, fuzzy
-msgid "New Appointment"
-msgstr "&Vis avtale ..."
-
-#: ui/evolution-calendar.xml.h:14 ui/evolution-event-editor.xml.h:29
-#: ui/evolution-task-editor-dialog.xml.h:32
-#, fuzzy
-msgid "Next"
-msgstr "Neste"
-
-#: ui/evolution-calendar.xml.h:16
-#, fuzzy
-msgid "Open Calendar"
-msgstr "Feil ved opning"
-
-#: ui/evolution-calendar.xml.h:17
-#, fuzzy
-msgid "Prev"
-msgstr "Førehandsvising:"
-
-#: ui/evolution-calendar.xml.h:21
-#, fuzzy
-msgid "Print calendar"
-msgstr "Skriv ut alle"
-
-#: ui/evolution-calendar.xml.h:22
-#, fuzzy
-msgid "Print this Calendar"
-msgstr "Skriv ut alle"
-
-#: ui/evolution-calendar.xml.h:23 ui/evolution-message-composer.xml.h:15
-#, fuzzy
-msgid "Save As"
-msgstr "Lagra"
-
-#: ui/evolution-calendar.xml.h:24
-msgid "Save calendar as something else"
-msgstr ""
-
-#: ui/evolution-calendar.xml.h:26
-#, fuzzy
-msgid "Show 1 day"
-msgstr "Vis dato"
-
-#: ui/evolution-calendar.xml.h:27
-#, fuzzy
-msgid "Show 1 month"
-msgstr "Vis metodar"
-
-#: ui/evolution-calendar.xml.h:28
-#, fuzzy
-msgid "Show 1 week"
-msgstr "Vis %1"
-
-#: ui/evolution-calendar.xml.h:29
-#, fuzzy
-msgid "Show the working week"
-msgstr "Vis hovudvindauget"
-
-#: ui/evolution-calendar.xml.h:30 widgets/misc/e-cell-date-edit.c:223
-#: widgets/misc/e-dateedit.c:413
-#, fuzzy
-msgid "Today"
-msgstr "i dag"
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Week"
-msgstr "Veke"
-
-#: ui/evolution-calendar.xml.h:32
-#, fuzzy
-msgid "_Appointment"
-msgstr "Avtale"
-
-#: ui/evolution-calendar.xml.h:33 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:37
-#, fuzzy
-msgid "_New"
-msgstr "Vis"
-
-#: ui/evolution-calendar.xml.h:34
-#, fuzzy
-msgid "_Open Calendar"
-msgstr "Feil ved opning"
-
-#: ui/evolution-calendar.xml.h:36 ui/evolution-mail.xml.h:73
-#: ui/evolution-tasks.xml.h:8
-#, fuzzy
-msgid "_Save As..."
-msgstr "Lagra som ..."
-
-#: ui/evolution-contact-editor.xml.h:2
-#, fuzzy
-msgid "Delete this item"
-msgstr "Slett denne adressa"
-
-#: ui/evolution-contact-editor.xml.h:3
-#, fuzzy
-msgid "Delete..."
-msgstr "Slett"
-
-#: ui/evolution-contact-editor.xml.h:4
-#, fuzzy
-msgid "Help"
-msgstr "Heim"
-
-#: ui/evolution-contact-editor.xml.h:5
-#, fuzzy
-msgid "Print En_velope..."
-msgstr "Private meldingar"
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-#, fuzzy
-msgid "Print this item"
-msgstr "Skriv til fil"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-mail.xml.h:35 ui/evolution-task-editor-dialog.xml.h:41
-#, fuzzy
-msgid "Print..."
-msgstr "Skriv ut"
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:16
-#: ui/evolution-task-editor-dialog.xml.h:51
-#, fuzzy
-msgid "Save _As..."
-msgstr "Lagra som ..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-#, fuzzy
-msgid "Save and Close"
-msgstr "Lagra ei fil"
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:12
-#, fuzzy
-msgid "See online help"
-msgstr "Me er tilkopla!"
-
-#: ui/evolution-contact-editor.xml.h:13
-#, fuzzy
-msgid "Send _message to contact..."
-msgstr "Sender ei melding til ein nettverksspelar"
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:44 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:29
-#, fuzzy
-msgid "_File"
-msgstr "Fil"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:51
-#: ui/evolution-task-editor-dialog.xml.h:85
-#, fuzzy
-msgid "_Save"
-msgstr "Lagra"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-#, fuzzy
-msgid "About this application"
-msgstr "Autentisering:"
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-#, fuzzy
-msgid "About..."
-msgstr "Skrifttype ..."
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-#, fuzzy
-msgid "Actio_ns"
-msgstr "Handlingar"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-#, fuzzy
-msgid "Address _Book... (FIXME)"
-msgstr "Adresse&bok ..."
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-#, fuzzy
-msgid "C_lear"
-msgstr "Teikn"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-#, fuzzy
-msgid "C_ut"
-msgstr "Klipp ut"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-msgid "Chec_k Names (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-#, fuzzy
-msgid "Clear"
-msgstr "Teikn"
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-#, fuzzy
-msgid "Clear the selection"
-msgstr "Slettar den valte fila"
-
-#: ui/evolution-event-editor.xml.h:11
-#, fuzzy
-msgid "Close this appointment"
-msgstr "&Slett avtale"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-#, fuzzy
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "Flytt til mappe"
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "Kopier"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-#, fuzzy
-msgid "Copy the selection"
-msgstr "Slettar den valte fila"
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr "Klipp ut"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-#, fuzzy
-msgid "Cut the selection"
-msgstr "Slettar den valte fila"
-
-#: ui/evolution-event-editor.xml.h:18
-#, fuzzy
-msgid "Delete this appointment"
-msgstr "&Slett avtale"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-#, fuzzy
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr "Lagrar fil ..."
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-#, fuzzy
-msgid "For_ward (FIXME)"
-msgstr "Comment=X-redigering"
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-#, fuzzy
-msgid "Go to the next item"
-msgstr "Ikkje vis den overskytande teksten"
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-#, fuzzy
-msgid "Go to the previous item"
-msgstr "GÃ¥ til neste som treng ettersyn"
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-#, fuzzy
-msgid "In_complete Task (FIXME)"
-msgstr "Comment=X-redigering"
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-#, fuzzy
-msgid "Modify the file's properties"
-msgstr "Linjeeigenskapar"
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-#, fuzzy
-msgid "N_ext"
-msgstr "Neste"
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-msgid "Paste"
-msgstr "Lim inn"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-#, fuzzy
-msgid "Paste the clipboard"
-msgstr "Limer inn ..."
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-#, fuzzy
-msgid "Pre_vious"
-msgstr "Førre"
-
-#: ui/evolution-event-editor.xml.h:33 ui/evolution-task-editor-dialog.xml.h:36
-#, fuzzy
-msgid "Previous"
-msgstr "Førre"
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-#, fuzzy
-msgid "Print Pre_view"
-msgstr "&Førehandsvising ..."
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-#, fuzzy
-msgid "Print S_etup..."
-msgstr "Speloppsett"
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-#, fuzzy
-msgid "Print Setup"
-msgstr "Speloppsett"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:14
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:233
-msgid "Save"
-msgstr "Lagra"
-
-#: ui/evolution-event-editor.xml.h:43
-msgid "Save the appointment and close the dialog box"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:20
-#: ui/evolution-task-editor-dialog.xml.h:53
-#, fuzzy
-msgid "Save the current file"
-msgstr "tid no"
-
-#: ui/evolution-event-editor.xml.h:46
-#, fuzzy
-msgid "Schedule _Meeting"
-msgstr "Køyreplan ..."
-
-#: ui/evolution-event-editor.xml.h:47
-#, fuzzy
-msgid "Schedule some sort of a meeting"
-msgstr "Køyreplan ..."
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-task-editor-dialog.xml.h:57
-#, fuzzy
-msgid "Select All"
-msgstr "Vel mappe"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-#, fuzzy
-msgid "Select everything"
-msgstr "Vel mappe"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-msgid "Task _Request (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-message-composer.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:63
-#, fuzzy
-msgid "_About..."
-msgstr "Skrifttype ..."
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:41
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:26
-#, fuzzy
-msgid "_Close"
-msgstr "Lukk"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:27
-#, fuzzy
-msgid "_Contact (FIXME)"
-msgstr "Comment=X-redigering"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-#, fuzzy
-msgid "_Copy"
-msgstr "Kopier"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:46
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:33
-#, fuzzy
-msgid "_Help"
-msgstr "Heim"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-#, fuzzy
-msgid "_Item (FIXME)"
-msgstr "Comment=X-redigering"
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-#, fuzzy
-msgid "_Journal Entry (FIXME)"
-msgstr "Comment=X-redigering"
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-#, fuzzy
-msgid "_Last Item in Folder (FIXME)"
-msgstr "Lagrar fil ..."
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-msgid "_Mail Message (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-#, fuzzy
-msgid "_Move to Folder... (FIXME)"
-msgstr "Flytt til mappe"
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-#, fuzzy
-msgid "_Note (FIXME)"
-msgstr "Comment=X-redigering"
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-#, fuzzy
-msgid "_Paste"
-msgstr "Lim inn"
-
-#: ui/evolution-event-editor.xml.h:69 ui/evolution-task-editor-dialog.xml.h:82
-#: ui/evolution-tasks.xml.h:7
-#, fuzzy
-msgid "_Print"
-msgstr "Skriv ut"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:72
-#: ui/evolution-task-editor-dialog.xml.h:83
-#, fuzzy
-msgid "_Properties..."
-msgstr "Eigenskapar ..."
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-#, fuzzy
-msgid "_Select All"
-msgstr "Vel mappe"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:40
-#, fuzzy
-msgid "_Task (FIXME)"
-msgstr "Comment=X-redigering"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-#, fuzzy
-msgid "_Unread Item (FIXME)"
-msgstr "Comment=X-redigering"
-
-#: ui/evolution-executive-summary.xml.h:1
-#, fuzzy
-msgid "Add Service"
-msgstr "Kjelde:"
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:3
-#, fuzzy
-msgid "Create a new email"
-msgstr "Lagar eit nytt dokument"
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:5
-#, fuzzy
-msgid "New Mail"
-msgstr "Detaljar"
-
-#: ui/evolution-mail.xml.h:2
-#, fuzzy
-msgid "Compose"
-msgstr "Lukk"
-
-#: ui/evolution-mail.xml.h:3
-#, fuzzy
-msgid "Compose a new message"
-msgstr "Lukk melding"
-
-#: ui/evolution-mail.xml.h:5
-#, fuzzy
-msgid "Copy message to a new folder"
-msgstr "&Kopier bileteplassering"
-
-#: ui/evolution-mail.xml.h:6
-#, fuzzy
-msgid "Create _Virtual Folder From Message"
-msgstr "Mapper"
-
-#: ui/evolution-mail.xml.h:9
-msgid "Display all of the message headers"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:10
-#, fuzzy
-msgid "Empty Trash"
-msgstr " dag"
-
-#: ui/evolution-mail.xml.h:11
-#, fuzzy
-msgid "Filter on Se_nder"
-msgstr "Fil under:"
-
-#: ui/evolution-mail.xml.h:12
-#, fuzzy
-msgid "Filter on _Recipients"
-msgstr "Skriv ut filer"
-
-#: ui/evolution-mail.xml.h:13
-#, fuzzy
-msgid "Filter on _Subject"
-msgstr "Ingen emne"
-
-#: ui/evolution-mail.xml.h:14
-#, fuzzy
-msgid "Forget _Passwords"
-msgstr "Lagra som"
-
-#: ui/evolution-mail.xml.h:16
-#, fuzzy
-msgid "Forward As"
-msgstr "Fram"
-
-#: ui/evolution-mail.xml.h:18
-#, fuzzy
-msgid "Full Headers"
-msgstr "Dekl."
-
-#: ui/evolution-mail.xml.h:19
-#, fuzzy
-msgid "Hide S_elected Messages"
-msgstr "Sentrer dei valte elementa"
-
-#: ui/evolution-mail.xml.h:20
-#, fuzzy
-msgid "Hide _Deleted Messages"
-msgstr "Neste melding"
-
-#: ui/evolution-mail.xml.h:21
-#, fuzzy
-msgid "Hide _Read messages"
-msgstr "Vidaresendt melding frå %1"
-
-#: ui/evolution-mail.xml.h:22
-#, fuzzy
-msgid "Inline"
-msgstr "Vinkel"
-
-#: ui/evolution-mail.xml.h:23
-#, fuzzy
-msgid "Manage _Subscriptions..."
-msgstr "Skildring:"
-
-#: ui/evolution-mail.xml.h:24
-#, fuzzy
-msgid "Mar_k as Read"
-msgstr "Mar&ker som ulesen"
-
-#: ui/evolution-mail.xml.h:25
-#, fuzzy
-msgid "Mark All as R_ead"
-msgstr "Mar&ker som ulesen"
-
-#: ui/evolution-mail.xml.h:26
-#, fuzzy
-msgid "Mark as U_nread"
-msgstr "Mar&ker som ulesen"
-
-#: ui/evolution-mail.xml.h:27
-#, fuzzy
-msgid "Message _Display"
-msgstr "Endra tidsvising"
-
-#: ui/evolution-mail.xml.h:28
-#, fuzzy
-msgid "Move"
-msgstr "MÃ¥n"
-
-#: ui/evolution-mail.xml.h:29
-#, fuzzy
-msgid "Move message to a new folder"
-msgstr "Lagra side til ascii-fil"
-
-#: ui/evolution-mail.xml.h:33
-#, fuzzy
-msgid "Print message to the printer"
-msgstr "Sen melding"
-
-#: ui/evolution-mail.xml.h:36
-#, fuzzy
-msgid "Quoted"
-msgstr "Ingen"
-
-#: ui/evolution-mail.xml.h:37
-msgid "Redirect (FIXME: implement me)"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:40
-#, fuzzy
-msgid "Reply to _All"
-msgstr "Svar til alle:"
-
-#: ui/evolution-mail.xml.h:43
-#, fuzzy
-msgid "S_ource"
-msgstr "Kjelder"
-
-#: ui/evolution-mail.xml.h:44 ui/evolution-subscribe.xml.h:7
-#, fuzzy
-msgid "Select _All"
-msgstr "Vel mappe"
-
-#: ui/evolution-mail.xml.h:45
-#, fuzzy
-msgid "Select _Thread"
-msgstr "Vel mappe"
-
-#: ui/evolution-mail.xml.h:46
-msgid "Send and Receive"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:47
-msgid "Send queued mail and retrieve new mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:48
-#, fuzzy
-msgid "Show _All"
-msgstr "Vidaresendt melding frå %1"
-
-#: ui/evolution-mail.xml.h:50
-#, fuzzy
-msgid "Threaded Message list"
-msgstr "Vidaresendt melding frå %1"
-
-#: ui/evolution-mail.xml.h:51
-#, fuzzy
-msgid "VFolder on Se_nder"
-msgstr "Mappenamn:"
-
-#: ui/evolution-mail.xml.h:52
-#, fuzzy
-msgid "VFolder on _Recipients"
-msgstr "Mappa finst: "
-
-#: ui/evolution-mail.xml.h:53
-#, fuzzy
-msgid "VFolder on _Subject"
-msgstr "Ingen emne"
-
-#: ui/evolution-mail.xml.h:54
-msgid "View Raw Message Source"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:55
-#, fuzzy
-msgid "Virtual Folder _Editor..."
-msgstr "Mapper"
-
-#: ui/evolution-mail.xml.h:56
-#, fuzzy
-msgid "_Actions"
-msgstr "Handlingar"
-
-#: ui/evolution-mail.xml.h:57
-#, fuzzy
-msgid "_Apply Filters"
-msgstr "Rediger fil"
-
-#: ui/evolution-mail.xml.h:58
-#, fuzzy
-msgid "_Compose"
-msgstr "Lukk"
-
-#: ui/evolution-mail.xml.h:59
-#, fuzzy
-msgid "_Copy to Folder..."
-msgstr "Kopier til mappe"
-
-#: ui/evolution-mail.xml.h:60
-msgid "_Create Filter From Message"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:62
-msgid "_Expunge"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:63
-#, fuzzy
-msgid "_Filters..."
-msgstr "E-post:"
-
-#: ui/evolution-mail.xml.h:64 ui/evolution.xml.h:30
-#, fuzzy
-msgid "_Folder"
-msgstr "Mapper"
-
-#: ui/evolution-mail.xml.h:65
-#, fuzzy
-msgid "_Forward"
-msgstr "Fram"
-
-#: ui/evolution-mail.xml.h:66 ui/evolution-subscribe.xml.h:12
-#, fuzzy
-msgid "_Invert Selection"
-msgstr "Slettar den valte fila"
-
-#: ui/evolution-mail.xml.h:67
-#, fuzzy
-msgid "_Mail Message"
-msgstr "Legg til melding"
-
-#: ui/evolution-mail.xml.h:68
-#, fuzzy
-msgid "_Mail Settings..."
-msgstr "Skriftinnstillingar"
-
-#: ui/evolution-mail.xml.h:69
-#, fuzzy
-msgid "_Message Hiding"
-msgstr "Legg til melding"
-
-#: ui/evolution-mail.xml.h:70
-#, fuzzy
-msgid "_Move to Folder..."
-msgstr "Flytt til mappe"
-
-#: ui/evolution-mail.xml.h:71
-#, fuzzy
-msgid "_Open Selected Items"
-msgstr "Opna med %1"
-
-#: ui/evolution-mail.xml.h:74
-msgid "_Send and Receive"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:75
-msgid "_Threaded"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:77
-#, fuzzy
-msgid "_Undelete"
-msgstr "Slett"
-
-#: ui/evolution-message-composer.xml.h:1
-#, fuzzy
-msgid "Attach"
-msgstr "&Legg ved"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-#, fuzzy
-msgid "Close the current file"
-msgstr "tid no"
-
-#: ui/evolution-message-composer.xml.h:5
-#, fuzzy
-msgid "Encrypt this message with PGP"
-msgstr "Lagra melding"
-
-#: ui/evolution-message-composer.xml.h:6
-#, fuzzy
-msgid "F_ormat"
-msgstr "Format"
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "HTML"
-msgstr "HTML"
-
-#: ui/evolution-message-composer.xml.h:8
-#, fuzzy
-msgid "Insert a file as text into the message"
-msgstr "Oppgi eit nytt namn på meldinga."
-
-#: ui/evolution-message-composer.xml.h:9
-#, fuzzy
-msgid "Insert text file..."
-msgstr "Sett inn fil ..."
-
-#: ui/evolution-message-composer.xml.h:11
-#, fuzzy
-msgid "Open a file"
-msgstr "Opna fil"
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "PGP Encrypt"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Sign"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:17
-msgid "Save _Draft"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:18
-#, fuzzy
-msgid "Save in _folder... (FIXME)"
-msgstr "Lagrar fil ..."
-
-#: ui/evolution-message-composer.xml.h:19
-#, fuzzy
-msgid "Save in folder..."
-msgstr "Lagrar fil ..."
-
-#: ui/evolution-message-composer.xml.h:21
-#, fuzzy
-msgid "Save the current file with a different name"
-msgstr "Sender ei melding til ein nettverksspelar"
-
-#: ui/evolution-message-composer.xml.h:22
-#, fuzzy
-msgid "Save the message in a specified folder"
-msgstr "Lagra side til ascii-fil"
-
-#: ui/evolution-message-composer.xml.h:23
-msgid "Send"
-msgstr "Send"
-
-#: ui/evolution-message-composer.xml.h:24
-#, fuzzy
-msgid "Send _Later"
-msgstr "Send &seinare"
-
-#: ui/evolution-message-composer.xml.h:25
-#, fuzzy
-msgid "Send _later"
-msgstr "Send &seinare"
-
-#: ui/evolution-message-composer.xml.h:26
-#, fuzzy
-msgid "Send the mail in HTML format"
-msgstr "Send meldingar:"
-
-#: ui/evolution-message-composer.xml.h:27
-#, fuzzy
-msgid "Send the message later"
-msgstr "Sen melding"
-
-#: ui/evolution-message-composer.xml.h:28
-#, fuzzy
-msgid "Send the message now"
-msgstr "Sen melding"
-
-#: ui/evolution-message-composer.xml.h:29
-#, fuzzy
-msgid "Send this message now"
-msgstr "Sen melding"
-
-#: ui/evolution-message-composer.xml.h:30
-#, fuzzy
-msgid "Show / hide attachments"
-msgstr "Vedlegg som ikon"
-
-#: ui/evolution-message-composer.xml.h:31
-#, fuzzy
-msgid "Show _attachments"
-msgstr "Vedlegg"
-
-#: ui/evolution-message-composer.xml.h:32
-#, fuzzy
-msgid "Show attachments"
-msgstr "Vedlegg"
-
-#: ui/evolution-message-composer.xml.h:33
-#, fuzzy
-msgid "Sign this message with your PGP key"
-msgstr "Sender meldingar til %1"
-
-#: ui/evolution-message-composer.xml.h:34
-msgid "Toggles whether the BCC field is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:35
-msgid "Toggles whether the CC field is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:36
-msgid "Toggles whether the From chooser is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "_Bcc Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:40
-msgid "_Cc Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:45
-msgid "_From Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:47
-#, fuzzy
-msgid "_Insert"
-msgstr "Set inn"
-
-#: ui/evolution-message-composer.xml.h:48
-#, fuzzy
-msgid "_Insert text file... (FIXME)"
-msgstr "Sett inn fil ..."
-
-#: ui/evolution-message-composer.xml.h:49
-#, fuzzy
-msgid "_Open..."
-msgstr "Opna ..."
-
-#: ui/evolution-message-composer.xml.h:50
-#, fuzzy
-msgid "_Reply-To Field"
-msgstr "Svar"
-
-#: ui/evolution-message-composer.xml.h:52
-msgid "_Security"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:3
-#, fuzzy
-msgid "F_older"
-msgstr "Mapper"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:8
-#, fuzzy
-msgid "Subscribe"
-msgstr "Kjelder"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-#, fuzzy
-msgid "Assig_n Task (FIXME)"
-msgstr "Comment=X-redigering"
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-#, fuzzy
-msgid "Meeting Re_quest (FIXME)"
-msgstr "&Førehandsvising ..."
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-#, fuzzy
-msgid "Redo"
-msgstr "Tilfeldig"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-#, fuzzy
-msgid "Redo the undone action"
-msgstr "Fjern ein kolonne"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-#, fuzzy
-msgid "Replace"
-msgstr "Svar"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-#, fuzzy
-msgid "Replace a string"
-msgstr "Svar"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-#, fuzzy
-msgid "Reply to A_ll (FIXME)"
-msgstr "Svar til alle:"
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-#, fuzzy
-msgid "S_end Status Report (FIXME)"
-msgstr "Comment=X-redigering"
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-#, fuzzy
-msgid "S_kip Occurrence (FIXME)"
-msgstr "Førekomst"
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-msgid "Save the task and close the dialog box"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "Search again for the same string"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-msgid "Search for a string"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-#, fuzzy
-msgid "Undo the last action"
-msgstr "Fjern ein kolonne"
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:25
-#, fuzzy
-msgid "_Appointment (FIXME)"
-msgstr "Avtale"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-#, fuzzy
-msgid "_Mark Complete (FIXME)"
-msgstr "Ferdig"
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-#, fuzzy
-msgid "_Reply (FIXME)"
-msgstr "Comment=X-redigering"
-
-#: ui/evolution-tasks.xml.h:2
-#, fuzzy
-msgid "Create a new task"
-msgstr "Lagar eit nytt dokument"
-
-#: ui/evolution-tasks.xml.h:3
-#, fuzzy
-msgid "New Task"
-msgstr "Oppgåve"
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr ""
-
-#: ui/evolution-tasks.xml.h:6
-#, fuzzy
-msgid "Tasks Preferences..."
-msgstr "Innstillingar"
-
-#: ui/evolution-tasks.xml.h:9
-#, fuzzy
-msgid "_Task"
-msgstr "Oppgåve"
-
-#: ui/evolution.xml.h:1
-#, fuzzy
-msgid "About Evolution..."
-msgstr "Oppløysing"
-
-#: ui/evolution.xml.h:3
-#, fuzzy
-msgid "Close this window"
-msgstr "&Slett avtale"
-
-#: ui/evolution.xml.h:4
-msgid "Customi_ze Toolbars..."
-msgstr ""
-
-#: ui/evolution.xml.h:5
-#, fuzzy
-msgid "Customize"
-msgstr "Tilpass ..."
-
-#: ui/evolution.xml.h:6
-msgid "Customize toolbars"
-msgstr ""
-
-#: ui/evolution.xml.h:7
-msgid "Display a different folder"
-msgstr ""
-
-#: ui/evolution.xml.h:8
-#, fuzzy
-msgid "E_xit"
-msgstr "Avslutt"
-
-#: ui/evolution.xml.h:9
-#, fuzzy
-msgid "Evolution bar _shortcut"
-msgstr "Evalueringsfeil"
-
-#: ui/evolution.xml.h:10
-msgid "Exit the program"
-msgstr ""
-
-#: ui/evolution.xml.h:11
-#, fuzzy
-msgid "Getting _Started"
-msgstr "Starta"
-
-#: ui/evolution.xml.h:12
-msgid "Import an external file format"
-msgstr ""
-
-#: ui/evolution.xml.h:13
-msgid "Main toolbar"
-msgstr ""
-
-#: ui/evolution.xml.h:14
-msgid "Show information about Evolution"
-msgstr ""
-
-#: ui/evolution.xml.h:15
-msgid "Submit Bug Report"
-msgstr ""
-
-#: ui/evolution.xml.h:16
-msgid "Submit _Bug Report"
-msgstr ""
-
-#: ui/evolution.xml.h:17
-msgid "Submit bug report using Bug Buddy."
-msgstr ""
-
-#: ui/evolution.xml.h:18
-msgid "Toggle whether to show the folder bar"
-msgstr ""
-
-#: ui/evolution.xml.h:19
-#, fuzzy
-msgid "Toggle whether to show the shortcut bar"
-msgstr "&Programsnøggtastar"
-
-#: ui/evolution.xml.h:20
-#, fuzzy
-msgid "Using the C_ontact Manager"
-msgstr "Skriv ut alle"
-
-#: ui/evolution.xml.h:21
-#, fuzzy
-msgid "Using the _Calendar"
-msgstr "Skriv ut alle"
-
-#: ui/evolution.xml.h:22
-#, fuzzy
-msgid "Using the _Mailer"
-msgstr "Skriv ut alle"
-
-#: ui/evolution.xml.h:23
-#, fuzzy
-msgid "Work Offline"
-msgstr "Flyttar"
-
-#: ui/evolution.xml.h:24
-#, fuzzy
-msgid "_About Evolution..."
-msgstr "Oppløysing"
-
-#: ui/evolution.xml.h:31
-#, fuzzy
-msgid "_Folder Bar"
-msgstr "Mapper"
-
-#: ui/evolution.xml.h:32
-#, fuzzy
-msgid "_Go to Folder..."
-msgstr "Flytt til mappe"
-
-#: ui/evolution.xml.h:34
-#, fuzzy
-msgid "_Import file..."
-msgstr "Sett inn fil ..."
-
-#: ui/evolution.xml.h:35
-#, fuzzy
-msgid "_Index"
-msgstr "Set inn"
-
-#: ui/evolution.xml.h:36
-#, fuzzy
-msgid "_Mail message"
-msgstr "Legg til melding"
-
-#: ui/evolution.xml.h:38
-#, fuzzy
-msgid "_New Folder"
-msgstr "Ny mappe"
-
-#: ui/evolution.xml.h:39
-msgid "_Shortcut Bar"
-msgstr ""
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:463
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2471
-msgid "%A, %B %d, %Y"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:387
-msgid "Busy"
-msgstr "Oppteke"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:388
-#, fuzzy
-msgid "Out of Office"
-msgstr "Kontor"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:389
-#, fuzzy
-msgid "No Information"
-msgstr "Informasjon"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:405
-#, fuzzy
-msgid "_Invite Others..."
-msgstr "Andre ..."
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:425
-#, fuzzy
-msgid "_Options"
-msgstr "Val"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:442
-msgid "Show _Only Working Hours"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:455
-#, fuzzy
-msgid "Show _Zoomed Out"
-msgstr "Forminsk"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:473
-#, fuzzy
-msgid "_Update Free/Busy"
-msgstr "Oppdateringsfrekvens"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:491
-#, fuzzy
-msgid "_<<"
-msgstr "<<"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:508
-#, fuzzy
-msgid "_Autopick"
-msgstr "Automatisk"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:522
-#, fuzzy
-msgid ">_>"
-msgstr ">>"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:539
-#, fuzzy
-msgid "_All People and Resources"
-msgstr "Alle filer og katalogar"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:552
-msgid "All _People and One Resource"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:565
-msgid "_Required People"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:578
-msgid "Required People and _One Resource"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:601
-#, fuzzy
-msgid "Meeting _start time:"
-msgstr "&Helsingstekst:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:625
-msgid "Meeting _end time:"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:738
-#, fuzzy
-msgid "All Attendees"
-msgstr "Kontaktar"
-
-#: widgets/menus/gal-view-menus.c:171
-#, fuzzy
-msgid "_Current View"
-msgstr "tid no"
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:421
-msgid "MTWTFSS"
-msgstr ""
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1060 widgets/misc/e-calendar-item.c:2755
-#, fuzzy
-msgid "%B %Y"
-msgstr "%1 %2"
-
-#: widgets/misc/e-cell-date-edit.c:215 widgets/misc/e-dateedit.c:407
-#, fuzzy
-msgid "Now"
-msgstr "&No"
-
-#: widgets/misc/e-cell-date-edit.c:239
-msgid "OK"
-msgstr ""
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: widgets/misc/e-cell-date-edit.c:456 widgets/misc/e-cell-date-edit.c:672
-#: widgets/misc/e-dateedit.c:1248 widgets/misc/e-dateedit.c:1307
-#: widgets/misc/e-dateedit.c:1486
-#, fuzzy
-msgid "%H:%M"
-msgstr "%H:%M"
-
-#. strftime format of a time in 24-hour format.
-#.
-#: widgets/misc/e-cell-date-edit.c:460
-#, fuzzy
-msgid "%H:%M:%S"
-msgstr "%H:%M"
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: widgets/misc/e-cell-date-edit.c:465 widgets/misc/e-cell-date-edit.c:675
-#: widgets/misc/e-dateedit.c:1251 widgets/misc/e-dateedit.c:1310
-#: widgets/misc/e-dateedit.c:1489
-#, fuzzy
-msgid "%I:%M %p"
-msgstr "%H:%M"
-
-#. strftime format of a time in 12-hour format.
-#.
-#: widgets/misc/e-cell-date-edit.c:469
-#, fuzzy
-msgid "%I:%M:%S %p"
-msgstr "%H:%M"
-
-#. FIXME: Better message needed.
-#: widgets/misc/e-cell-date-edit.c:736
-msgid "The time is invalid"
-msgstr ""
-
-#: widgets/misc/e-clipped-label.c:107
-msgid "..."
-msgstr " ..."
-
-#: widgets/misc/e-filter-bar.c:160
-#, fuzzy
-msgid "Save Search"
-msgstr "Søk"
-
-#: widgets/misc/e-filter-bar.c:231
-#, fuzzy
-msgid "Advanced Search"
-msgstr "Legg til ..."
-
-#: widgets/misc/e-filter-bar.c:311
-#, fuzzy
-msgid "Advanced ..."
-msgstr "Legg til ..."
-
-#: widgets/misc/e-messagebox.c:141
-#, fuzzy
-msgid "Information"
-msgstr "Informasjon"
-
-#: widgets/misc/e-messagebox.c:148
-#, fuzzy
-msgid "Warning"
-msgstr "Flyttar"
-
-#: widgets/misc/e-messagebox.c:162
-#, fuzzy
-msgid "Question"
-msgstr "Skildring:"
-
-#: widgets/misc/e-messagebox.c:169
-#, fuzzy
-msgid "Message"
-msgstr "Legg til melding"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:213
-#, fuzzy
-msgid "Don't show this message again."
-msgstr "Sen melding"
-
-#: widgets/misc/e-search-bar.c:140
-#, fuzzy
-msgid "Sear_ch"
-msgstr "Søk"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-#, fuzzy
-msgid "The Personal Addressbook Server"
-msgstr ""
-"Kunne ikkje starta prosess\n"
-"%1"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr ""
-
-#: wombat/wombat.c:153
-#, fuzzy
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr "Kunne ikkje initiere Bonobo"
-
-#: wombat/wombat.c:165
-#, fuzzy
-msgid "init_corba(): could not initialize GNOME"
-msgstr "Kunne ikkje initiere Bonobo"
-
-#: wombat/wombat.c:178
-#, fuzzy
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "Kunne ikkje initiere Bonobo"
-
-#, fuzzy
-#~ msgid "Copyright (C) 2000, Helix Code, Inc."
-#~ msgstr "Opphavsrett (c), %1 1997-2000"
-
-#, fuzzy
-#~ msgid "Connecting to server"
-#~ msgstr "Sambandet er brote."
-
-#, fuzzy
-#~ msgid "Connect to server"
-#~ msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#, fuzzy
-#~ msgid "New"
-#~ msgstr "Ny ..."
-
-#, fuzzy
-#~ msgid "Cannot initialize Evolution's notes component."
-#~ msgstr "Kan ikkje initialisera lokale variablar"
-
-#, fuzzy
-#~ msgid "Notes Component: Could not initialize bonobo"
-#~ msgstr "Kunne ikkje initiere Bonobo"
-
-#~ msgid "Disabled"
-#~ msgstr "Deaktivert"
-
-#~ msgid "Merge From Pilot"
-#~ msgstr "Flett fra pilot"
-
-#~ msgid "Merge To Pilot"
-#~ msgstr "Flett til pilot"
-
-#, fuzzy
-#~ msgid "Original Author:"
-#~ msgstr "Opprinneleg forfattar"
-
-#~ msgid "Eskil Heyn Olsen <deity@eskil.dk>"
-#~ msgstr "Eskil Heyn Olsen <deity@eskil.dk>"
-
-#, fuzzy
-#~ msgid "Synchronize Action"
-#~ msgstr "Synkroniser"
-
-#, fuzzy
-#~ msgid "Conduit state"
-#~ msgstr "&Lenkjer"
-
-#, fuzzy
-#~ msgid "Not connected to the gnome-pilot daemon"
-#~ msgstr "Kan ikkje kopla til daemon"
-
-#, fuzzy
-#~ msgid ""
-#~ "An error occured when trying to fetch\n"
-#~ "pilot list from the gnome-pilot daemon"
-#~ msgstr "Feil under opning av dette dokumentet"
-
-#, fuzzy
-#~ msgid "Evolution Calendar Conduit"
-#~ msgstr "Tilgjengelege lenkjer:"
-
-#, fuzzy
-#~ msgid "Configuration utility for the evolution calendar conduit.\n"
-#~ msgstr "Øydelagd oppsettfil."
-
-#, fuzzy
-#~ msgid "The priority must be between 1 and 9, inclusive"
-#~ msgstr "Prioriteten må vera i området 1-99"
-
-#~ msgid "Open..."
-#~ msgstr "Opna ..."
-
-#, fuzzy
-#~ msgid "Enter the subject of the mail"
-#~ msgstr "Oppgi typen til medlemsvariabelen her."
-
-#, fuzzy
-#~ msgid "Saving changes to message..."
-#~ msgstr "Lagrar alle endra filer ..."
-
-#, fuzzy
-#~ msgid "Save changes to message..."
-#~ msgstr "Lagrar alle endra filer ..."
-
-#, fuzzy
-#~ msgid "Edit Filter Rule"
-#~ msgstr "Rediger filterreglar"
-
-#, fuzzy
-#~ msgid "Add Rule"
-#~ msgstr "Legg til fil"
-
-#, fuzzy
-#~ msgid "Add VFolder Rule"
-#~ msgstr "Rediger filterreglar"
-
-#, fuzzy
-#~ msgid "Edit VFolder Rule"
-#~ msgstr "Rediger filterreglar"
-
-#, fuzzy
-#~ msgid "Subject contains"
-#~ msgstr "Emne"
-
-#, fuzzy
-#~ msgid ""
-#~ "Could not open file %s:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Kan ikkje fjerna post frå\n"
-#~ "postboksen '%1':\n"
-#~ "%2"
-
-#, fuzzy
-#~ msgid ""
-#~ "Unable to register folder '%s':\n"
-#~ "%s"
-#~ msgstr "Kunne ikkje lasta kalender '%1'.\n"
-
-#, fuzzy
-#~ msgid "Fetching email from %s"
-#~ msgstr "Hentar data frå %1"
-
-#, fuzzy
-#~ msgid "Fetch email from %s"
-#~ msgstr "Slett e-post frå tenaren"
-
-#, fuzzy
-#~ msgid "Filtering email on demand"
-#~ msgstr "Ring ved førespurnad"
-
-#, fuzzy
-#~ msgid "Filter email on demand"
-#~ msgstr "Ring ved førespurnad"
-
-#, fuzzy
-#~ msgid "Sending queue"
-#~ msgstr "&Send meldingane i køen"
-
-#, fuzzy
-#~ msgid "Send queue"
-#~ msgstr "&Send meldingane i køen"
-
-#, fuzzy
-#~ msgid "Appending \"%s\""
-#~ msgstr "Sender %1"
-
-#, fuzzy
-#~ msgid "Appending a message without a subject"
-#~ msgstr "Sender meldingar til %1"
-
-#, fuzzy
-#~ msgid "Moving messages from \"%s\" into \"%s\""
-#~ msgstr "Mottek meldingar frå %1"
-
-#, fuzzy
-#~ msgid "Copying messages from \"%s\" into \"%s\""
-#~ msgstr "Mottek meldingar frå %1"
-
-#, fuzzy
-#~ msgid "Move messages from \"%s\" into \"%s\""
-#~ msgstr "Flytta alle meldingar til papirkorga"
-
-#, fuzzy
-#~ msgid "(No description)"
-#~ msgstr "Inga skildring"
-
-#, fuzzy
-#~ msgid "Loading %s Folder for %s"
-#~ msgstr "Les mapper"
-
-#, fuzzy
-#~ msgid "Load %s Folder for %s"
-#~ msgstr "Endra mappe"
-
-#, fuzzy
-#~ msgid ""
-#~ "Error while preparing to %s:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Feil ved lesing av fil:\n"
-#~ "%s"
-
-#, fuzzy
-#~ msgid ""
-#~ "Error while `%s':\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Feil ved laging av fil '%1':\n"
-#~ "%2"
-
-#, fuzzy
-#~ msgid "Could not create dialog box."
-#~ msgstr "Kunne ikkje laga kio-jobb.\n"
-
-#, fuzzy
-#~ msgid "User cancelled query."
-#~ msgstr ""
-#~ "Brukaren avbraut handling\n"
-#~ "%1"
-
-#, fuzzy
-#~ msgid "Examining %s"
-#~ msgstr "Forventar %1"
-
-#, fuzzy
-#~ msgid "Retrieving message %d of %d"
-#~ msgstr "Mottek meldingar frå %1"
-
-#, fuzzy
-#~ msgid "Writing message %d of %d"
-#~ msgstr "Mottek meldingar frå %1"
-
-#, fuzzy
-#~ msgid "Saving changes to %s"
-#~ msgstr "Lagrar alle endra filer ..."
-
-#, fuzzy
-#~ msgid ""
-#~ "Cannot open location `%s':\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Kan ikkje fjerna post frå\n"
-#~ "postboksen '%1':\n"
-#~ "%2"
-
-#, fuzzy
-#~ msgid "Subscribe to folder \"%s\""
-#~ msgstr "Lag ny mappe i %1"
-
-#, fuzzy
-#~ msgid "Unsubscribe from folder \"%s\""
-#~ msgstr "Mottek meldingar frå %1"
-
-#, fuzzy
-#~ msgid "FIXME: _Appointment"
-#~ msgstr "Avtale"
-
-#, fuzzy
-#~ msgid "FIXME: _Memo Style"
-#~ msgstr "Elementstil"
-
-#, fuzzy
-#~ msgid "FIXME: Define Print _Styles..."
-#~ msgstr "&Førehandsvising ..."
-
-#, fuzzy
-#~ msgid "FIXME: Save Attac_hments..."
-#~ msgstr "Smarte vedlegg"
-
-#, fuzzy
-#~ msgid "FIXME: _Move to Folder..."
-#~ msgstr "Flytt til mappe"
-
-#, fuzzy
-#~ msgid "FIXME: Cop_y to Folder..."
-#~ msgstr "Kopier til mappe"
-
-#, fuzzy
-#~ msgid "Page Set_up"
-#~ msgstr "Speloppsett"
-
-#, fuzzy
-#~ msgid "FIXME: Print Pre_view"
-#~ msgstr "&Førehandsvising ..."
-
-#, fuzzy
-#~ msgid "FIXME: Paste _Special..."
-#~ msgstr "Lim inn spesiell ..."
-
-#, fuzzy
-#~ msgid "FIXME: Mark as U_nread"
-#~ msgstr "Mar&ker som ulesen"
-
-#, fuzzy
-#~ msgid "_Object"
-#~ msgstr "Objekt"
-
-#, fuzzy
-#~ msgid "FIXME: _Standard"
-#~ msgstr "Standard"
-
-#, fuzzy
-#~ msgid "FIXME: __Formatting"
-#~ msgstr "Tekstformatering"
-
-#, fuzzy
-#~ msgid "_Toolbars"
-#~ msgstr "Verktøylinjer"
-
-#, fuzzy
-#~ msgid "FIXME: _File..."
-#~ msgstr "Sett inn fil ..."
-
-#, fuzzy
-#~ msgid "FIXME: _Object..."
-#~ msgstr "&Objekt ..."
-
-#, fuzzy
-#~ msgid "FIXME: _Font..."
-#~ msgstr "Skrifttype ..."
-
-#, fuzzy
-#~ msgid "FIXME: _Paragraph..."
-#~ msgstr "&Avsnitt ..."
-
-#, fuzzy
-#~ msgid "FIXME: _Spelling..."
-#~ msgstr "&Stavekontroll ..."
-
-#, fuzzy
-#~ msgid "_Forms"
-#~ msgstr "Forum"
-
-#, fuzzy
-#~ msgid "FIXME: _Plan a Meeting..."
-#~ msgstr "&Stavekontroll ..."
-
-#, fuzzy
-#~ msgid "FIXME: New _Task for Contact"
-#~ msgstr "Ny oppgåve"
-
-#, fuzzy
-#~ msgid "FIXME: _Flag for Follow Up..."
-#~ msgstr "Kopier til mappe"
-
-#, fuzzy
-#~ msgid "FIXME: _Open Web Page"
-#~ msgstr "&Stavekontroll ..."
-
-#, fuzzy
-#~ msgid "FIXME: Forward as _vCard"
-#~ msgstr "Fort framover"
-
-#, fuzzy
-#~ msgid "FIXME: For_ward"
-#~ msgstr "Fort framover"
-
-#, fuzzy
-#~ msgid "FIXME: Previous"
-#~ msgstr "Førre"
-
-#, fuzzy
-#~ msgid "FIXME: Next"
-#~ msgstr "Finn neste"
-
-#, fuzzy
-#~ msgid "Group %i"
-#~ msgstr "Gruppe %1"
-
-#, fuzzy
-#~ msgid "label26"
-#~ msgstr "Etikett"
-
-#, fuzzy
-#~ msgid "C_lassification:"
-#~ msgstr "&Forstørring"
-
-#, fuzzy
-#~ msgid "S_ummary"
-#~ msgstr "Samandrag"
-
-#, fuzzy
-#~ msgid "Days"
-#~ msgstr "Dag"
-
-#, fuzzy
-#~ msgid "Hours"
-#~ msgstr "time/timar"
-
-#, fuzzy
-#~ msgid "Mail _to:"
-#~ msgstr "E-post:"
-
-#, fuzzy
-#~ msgid "Minutes"
-#~ msgstr "minutt"
-
-#~ msgid "Time"
-#~ msgstr "Tid"
-
-#, fuzzy
-#~ msgid "_Audio"
-#~ msgstr "Lyd"
-
-#, fuzzy
-#~ msgid "_Mail"
-#~ msgstr "Send"
-
-#, fuzzy
-#~ msgid "_Program"
-#~ msgstr "Program"
-
-#, fuzzy
-#~ msgid "event-editor-dialog"
-#~ msgstr "Opnar angrehistoriedialogen"
-
-#, fuzzy
-#~ msgid "label21"
-#~ msgstr "Etikett"
-
-#, fuzzy
-#~ msgid "Hide deleted"
-#~ msgstr "Slett"
-
-#, fuzzy
-#~ msgid "Hide Subject"
-#~ msgstr "Emne"
-
-#, fuzzy
-#~ msgid "Hide from Sender"
-#~ msgstr "Fil under:"
-
-#, fuzzy
-#~ msgid "Hide Subject \"%s\""
-#~ msgstr "Emne"
-
-#, fuzzy
-#~ msgid "Account Properties"
-#~ msgstr "Vedleggseigenskapar"
-
-#, fuzzy
-#~ msgid "E-Mail Address:"
-#~ msgstr "E-post-adresse:"
-
-#, fuzzy
-#~ msgid "Reply-to:"
-#~ msgstr "Svar"
-
-#, fuzzy
-#~ msgid "Full name:"
-#~ msgstr "Fullt namn"
-
-#, fuzzy
-#~ msgid "Signature File"
-#~ msgstr "Signaturfil:"
-
-#~ msgid "Server:"
-#~ msgstr "Tenar:"
-
-#, fuzzy
-#~ msgid "Detect supported types..."
-#~ msgstr "Vel modemtype ..."
-
-#, fuzzy
-#~ msgid "Don't delete messages from server"
-#~ msgstr "Slett e-post frå tenaren"
-
-#, fuzzy
-#~ msgid "Mail source type:"
-#~ msgstr "E-post-&transport:"
-
-#, fuzzy
-#~ msgid "News source type:"
-#~ msgstr "&Ny type"
-
-#, fuzzy
-#~ msgid "Mail transport type:"
-#~ msgstr "E-post-&transport:"
-
-#, fuzzy
-#~ msgid "Add Identity"
-#~ msgstr " Identitet"
-
-#, fuzzy
-#~ msgid "Edit Identity"
-#~ msgstr " Identitet"
-
-#, fuzzy
-#~ msgid "Edit Source"
-#~ msgstr "Endra teneste"
-
-#, fuzzy
-#~ msgid "Add News Server"
-#~ msgstr "Legg til tenar"
-
-#, fuzzy
-#~ msgid "Edit News Server"
-#~ msgstr "R&ediger tenarar"
-
-#, fuzzy
-#~ msgid "Testing \"%s\""
-#~ msgstr "Lagar"
-
-#, fuzzy
-#~ msgid "The connection was successful!"
-#~ msgstr "Sambandet er brote."
-
-#, fuzzy
-#~ msgid "Identities"
-#~ msgstr "Identifikator"
-
-#, fuzzy
-#~ msgid "Mail Sources"
-#~ msgstr "Kjelder"
-
-#, fuzzy
-#~ msgid "Mail Transport"
-#~ msgstr "&E-post-transport"
-
-#, fuzzy
-#~ msgid "News Servers"
-#~ msgstr "Diskusjonsgruppetenarar"
-
-#, fuzzy
-#~ msgid "News Sources"
-#~ msgstr "Kjelder"
-
-#, fuzzy
-#~ msgid "_Addressbook Configuration..."
-#~ msgstr "Oppsett"
-
-#, fuzzy
-#~ msgid "Ca_lendar"
-#~ msgstr "Skriv ut alle"
-
-#, fuzzy
-#~ msgid "Open a calendar"
-#~ msgstr "Feil ved opning"
-
-#, fuzzy
-#~ msgid "_Print this calendar"
-#~ msgstr "Skriv ut alle"
-
-#, fuzzy
-#~ msgid "FIXME: Help"
-#~ msgstr "&KDE-hjelp"
-
-#, fuzzy
-#~ msgid "FIXME: Insert File"
-#~ msgstr "Sett inn fil ..."
-
-#, fuzzy
-#~ msgid "FIXME: Rec_urrence..."
-#~ msgstr "Repetering"
-
-#, fuzzy
-#~ msgid "_Find..."
-#~ msgstr "Finn ..."
-
-#, fuzzy
-#~ msgid "_Redo"
-#~ msgstr "Tilfeldig"
-
-#, fuzzy
-#~ msgid "_Replace..."
-#~ msgstr "Opna ..."
-
-#, fuzzy
-#~ msgid "Fi_lter on Sender"
-#~ msgstr "Fil under:"
-
-#, fuzzy
-#~ msgid "Filter on Rec_ipients"
-#~ msgstr "Skriv ut filer"
-
-#, fuzzy
-#~ msgid "Mark As U_nread"
-#~ msgstr "Mar&ker som ulesen"
-
-#, fuzzy
-#~ msgid "Print Preview of message..."
-#~ msgstr "&Førehandsvising ..."
-
-#, fuzzy
-#~ msgid "Reply to _Sender"
-#~ msgstr "Svar til avsendar:"
-
-#, fuzzy
-#~ msgid "_Filter on Subject"
-#~ msgstr "Ingen emne"
-
-#, fuzzy
-#~ msgid "_Mail Configuration..."
-#~ msgstr "Oppsett"
-
-#, fuzzy
-#~ msgid "_Open in New Window"
-#~ msgstr "&Opna i eige vindauge"
-
-#, fuzzy
-#~ msgid "_Print Message"
-#~ msgstr "Private meldingar"
-
-#, fuzzy
-#~ msgid "_Save Message As..."
-#~ msgstr "Lagra melding"
-
-#, fuzzy
-#~ msgid "_Source"
-#~ msgstr "Kjelder"
-
-#, fuzzy
-#~ msgid "_VFolder on Subject"
-#~ msgstr "Ingen emne"
-
-#, fuzzy
-#~ msgid "Available Categories:"
-#~ msgstr "Tilgjengelege kategoriar"
-
-#~ msgid "Port Number:"
-#~ msgstr "Portnummer:"
-
-#, fuzzy
-#~ msgid "Outline:"
-#~ msgstr "Oversikt"
-
-#, fuzzy
-#~ msgid "Headings:"
-#~ msgstr "Overskrift:"
-
-#, fuzzy
-#~ msgid "Highlighted day:"
-#~ msgstr "Opplysing:"
-
-#, fuzzy
-#~ msgid "Day numbers:"
-#~ msgstr "Høgste tal"
-
-#, fuzzy
-#~ msgid "Current day's number:"
-#~ msgstr "Noverande namn:"
-
-#, fuzzy
-#~ msgid "To-Do item that is overdue:"
-#~ msgstr "Element i hugselista:"
-
-#, fuzzy
-#~ msgid "may"
-#~ msgstr "Mai"
-
-#, fuzzy
-#~ msgid "sunday"
-#~ msgstr "Sundag"
-
-#, fuzzy
-#~ msgid "monday"
-#~ msgstr "MÃ¥ndag"
-
-#, fuzzy
-#~ msgid "tuesday"
-#~ msgstr "Tysdag"
-
-#, fuzzy
-#~ msgid "tues"
-#~ msgstr "sann"
-
-#, fuzzy
-#~ msgid "wednesday"
-#~ msgstr "Onsdag"
-
-#, fuzzy
-#~ msgid "wednes"
-#~ msgstr "Sverige"
-
-#, fuzzy
-#~ msgid "thursday"
-#~ msgstr "Torsdag"
-
-#, fuzzy
-#~ msgid "thur"
-#~ msgstr "Anna"
-
-#, fuzzy
-#~ msgid "thurs"
-#~ msgstr "Andre"
-
-#, fuzzy
-#~ msgid "friday"
-#~ msgstr "Fredag"
-
-#, fuzzy
-#~ msgid "saturday"
-#~ msgstr "Laurdag"
-
-#, fuzzy
-#~ msgid "fortnight"
-#~ msgstr "høgre"
-
-#, fuzzy
-#~ msgid "min"
-#~ msgstr " min"
-
-#, fuzzy
-#~ msgid "sec"
-#~ msgstr " sek"
-
-#, fuzzy
-#~ msgid "tomorrow"
-#~ msgstr "Comoros"
-
-#, fuzzy
-#~ msgid "yesterday"
-#~ msgstr "kvar dag"
-
-#~ msgid "today"
-#~ msgstr "i dag"
-
-#, fuzzy
-#~ msgid "last"
-#~ msgstr "Etternamn"
-
-#, fuzzy
-#~ msgid "this"
-#~ msgstr "er"
-
-#, fuzzy
-#~ msgid "next"
-#~ msgstr "Neste"
-
-#, fuzzy
-#~ msgid "first"
-#~ msgstr "Førenamn"
-
-#, fuzzy
-#~ msgid "third"
-#~ msgstr "Anna"
-
-#, fuzzy
-#~ msgid "fourth"
-#~ msgstr "Munnar"
-
-#, fuzzy
-#~ msgid "fifth"
-#~ msgstr "Shift"
-
-#, fuzzy
-#~ msgid "sixth"
-#~ msgstr "Høgre"
-
-#, fuzzy
-#~ msgid "seventh"
-#~ msgstr "partalssider"
-
-#, fuzzy
-#~ msgid "eighth"
-#~ msgstr "høgd"
-
-#, fuzzy
-#~ msgid "ninth"
-#~ msgstr "int"
-
-#, fuzzy
-#~ msgid "tenth"
-#~ msgstr "1 tidel"
-
-#, fuzzy
-#~ msgid "eleventh"
-#~ msgstr "partalssider"
-
-#, fuzzy
-#~ msgid "ago"
-#~ msgstr "Tag"
-
-#~ msgid "Year:"
-#~ msgstr "Ã…r:"
-
-#, fuzzy
-#~ msgid "Mail Source"
-#~ msgstr "E-posttenar"
-
-#, fuzzy
-#~ msgid "Send a message without a subject"
-#~ msgstr "Sender ei melding til ein nettverksspelar"
-
-#, fuzzy
-#~ msgid "Marking messages in folder \"%s\""
-#~ msgstr "Markerer meldingar"
-
-#, fuzzy
-#~ msgid "Mark messages in folder \"%s\""
-#~ msgstr "Lag meldingar og slå saman"
-
-#, fuzzy
-#~ msgid "Marking message %d of %d"
-#~ msgstr "Markerer meldingar"
-
-#, fuzzy
-#~ msgid "Scan folders in \"%s\""
-#~ msgstr "Lag ny mappe i %1"
-
-#, fuzzy
-#~ msgid "Attaching messages from folder \"%s\""
-#~ msgstr "Mottek meldingar frå %1"
-
-#, fuzzy
-#~ msgid "Attach messages from \"%s\""
-#~ msgstr "Melding frå %s"
-
-#, fuzzy
-#~ msgid "Forwarding a message without a subject"
-#~ msgstr "advarsel: denne meldinga er ikkje brukt"
-
-#, fuzzy
-#~ msgid "Forward message \"%s\""
-#~ msgstr "Vidaresendt melding"
-
-#, fuzzy
-#~ msgid "Forward a message without a subject"
-#~ msgstr "Vidaresendt melding frå %1"
-
-#, fuzzy
-#~ msgid "Loading \"%s\""
-#~ msgstr "Lastar meldingar"
-
-#, fuzzy
-#~ msgid "Load \"%s\""
-#~ msgstr "Last inn"
-
-#, fuzzy
-#~ msgid "Creating \"%s\""
-#~ msgstr "Lagar"
-
-#, fuzzy
-#~ msgid "Create \"%s\""
-#~ msgstr "Laga"
-
-#, fuzzy
-#~ msgid "Synchronize \"%s\""
-#~ msgstr "Synkroniser"
-
-#, fuzzy
-#~ msgid "Displaying message UID \"%s\""
-#~ msgstr "Vis meldingstorleik"
-
-#, fuzzy
-#~ msgid "Clearing message display"
-#~ msgstr "Markerer meldingar"
-
-#, fuzzy
-#~ msgid "Display message UID \"%s\""
-#~ msgstr "Vis meldingstorleik"
-
-#, fuzzy
-#~ msgid "Opening messages from folder \"%s\""
-#~ msgstr "Mottek meldingar frå %1"
-
-#, fuzzy
-#~ msgid "Open messages from \"%s\""
-#~ msgstr "Melding frå %s"
-
-#, fuzzy
-#~ msgid "Viewing messages from folder \"%s\""
-#~ msgstr "Mottek meldingar frå %1"
-
-#, fuzzy
-#~ msgid "View messages from \"%s\""
-#~ msgstr "Melding frå %s"
-
-#, fuzzy
-#~ msgid "Retrieving message %d of %d (uid \"%s\")"
-#~ msgstr "Mottek meldingar frå %1"
-
-#, fuzzy
-#~ msgid "Save messages from folder \"%s\""
-#~ msgstr "Mottek meldingar frå %1"
-
-#, fuzzy
-#~ msgid "Rebuilding message view"
-#~ msgstr "Feil ved skriving av band-ID."
-
-#, fuzzy
-#~ msgid "Rebuild message view"
-#~ msgstr "Sen melding"
-
-#, fuzzy
-#~ msgid "N_ew Directory Server"
-#~ msgstr "Diskusjonsgruppetenarar"
-
-#, fuzzy
-#~ msgid "_Save Calendar As"
-#~ msgstr "Ny kalender"
-
-#~ msgid "(C) 1998 the Free Software Foundation"
-#~ msgstr "(C) 1998 the Free Software Foundation"
-
-#, fuzzy
-#~ msgid "Error while communicating with address server"
-#~ msgstr "Feil ved tilkopling til tenar."
-
-#, fuzzy
-#~ msgid "window2"
-#~ msgstr "Vindauge"
-
-#, fuzzy
-#~ msgid "Could not start gnomecal server"
-#~ msgstr ""
-#~ "Kunne ikkje starta prosess\n"
-#~ "%1"
-
-#, fuzzy
-#~ msgid "Year"
-#~ msgstr "Ã…r"
-
-#, fuzzy
-#~ msgid "Show 1 year"
-#~ msgstr "Vis topptekst"
-
-#, fuzzy
-#~ msgid "FIXME: Reply to A_ll"
-#~ msgstr "Svar til alle:"
-
-#, fuzzy
-#~ msgid "FIXME: Print..."
-#~ msgstr "Skriv &ut ..."
-
-#, fuzzy
-#~ msgid "Insert a file as an attachment"
-#~ msgstr "Meldinga har vedlegg"
-
-#, fuzzy
-#~ msgid "Due date"
-#~ msgstr "Forfallsdato"
-
-#, fuzzy
-#~ msgid "FIXME: Ca_lendar..."
-#~ msgstr "&Slå saman kalender ..."
-
-#, fuzzy
-#~ msgid "_Summary:"
-#~ msgstr "Samandrag:"
-
-#~ msgid "Daily"
-#~ msgstr "Dagleg"
-
-#~ msgid "Weekly"
-#~ msgstr "Kvar veke"
-
-#~ msgid "Monthly"
-#~ msgstr "Kvar månad"
-
-#~ msgid "Yearly"
-#~ msgstr "Kvart år"
-
-#, fuzzy
-#~ msgid "label23"
-#~ msgstr "Etikett"
-
-#, fuzzy
-#~ msgid "Every "
-#~ msgstr "kvar"
-
-#, fuzzy
-#~ msgid "label24"
-#~ msgstr "Etikett"
-
-#, fuzzy
-#~ msgid "label25"
-#~ msgstr "Etikett"
-
-#~ msgid "Recur on the"
-#~ msgstr "Repeter på den"
-
-#, fuzzy
-#~ msgid "th day of the month"
-#~ msgstr "Dagar i månaden"
-
-#, fuzzy
-#~ msgid "label27"
-#~ msgstr "Nivå 27"
-
-#, fuzzy
-#~ msgid "Ending date"
-#~ msgstr "Ingen slutt-dato"
-
-#~ msgid "Change"
-#~ msgstr "Endra"
-
-#, fuzzy
-#~ msgid "Create to-do item"
-#~ msgstr "Lag mappe"
-
-#, fuzzy
-#~ msgid "Edit to-do item"
-#~ msgstr "Rediger punkt"
-
-#~ msgid "Due Date:"
-#~ msgstr "Forfallsdato:"
-
-#, fuzzy
-#~ msgid "Time display"
-#~ msgstr "Endra tidsvising"
-
-#, fuzzy
-#~ msgid "Weeks start on"
-#~ msgstr " start"
-
-#, fuzzy
-#~ msgid "Day range"
-#~ msgstr "Dato-område"
-
-#, fuzzy
-#~ msgid "Day end:"
-#~ msgstr "Dag:"
-
-#, fuzzy
-#~ msgid "Colors for display"
-#~ msgstr "Farge eller pixmap"
-
-#, fuzzy
-#~ msgid "Show on TODO List:"
-#~ msgstr "Vis lang gruppeliste"
-
-#, fuzzy
-#~ msgid "Highlight not yet due items"
-#~ msgstr "&Syntaksmerkingsmodusar"
-
-#, fuzzy
-#~ msgid "To Do List"
-#~ msgstr "Hugseliste"
-
-#, fuzzy
-#~ msgid "Alarm Properties"
-#~ msgstr "Rammeeigenskapar ..."
-
-#, fuzzy
-#~ msgid "Cut selected item into clipboard"
-#~ msgstr "Kopierer utvalet til utklippstavla"
-
-#, fuzzy
-#~ msgid "Copy selected item into clipboard"
-#~ msgstr "Kopierer utvalet til utklippstavla"
-
-#, fuzzy
-#~ msgid "Select recipients' addresses"
-#~ msgstr "Slett denne adressa"
-
-#~ msgid "Search..."
-#~ msgstr "Søk ..."
-
-#, fuzzy
-#~ msgid "To: >>"
-#~ msgstr "Til:"
-
-#, fuzzy
-#~ msgid "Cc: >>"
-#~ msgstr "Cc:"
-
-#, fuzzy
-#~ msgid "Bcc: >>"
-#~ msgstr "Bcc:"
-
-#, fuzzy
-#~ msgid "label9"
-#~ msgstr "Etikett"
-
-#, fuzzy
-#~ msgid "label7"
-#~ msgstr "Etikett"
-
-#, fuzzy
-#~ msgid "label8"
-#~ msgstr "Etikett"
-
-#, fuzzy
-#~ msgid "Load a previously saved message"
-#~ msgstr "Førre melding"
-
-#, fuzzy
-#~ msgid "_Save..."
-#~ msgstr "Lagra ..."
-
-#, fuzzy
-#~ msgid "Send _Now"
-#~ msgstr "Send &no"
-
-#, fuzzy
-#~ msgid "_Close..."
-#~ msgstr "Fargar ..."
-
-#, fuzzy
-#~ msgid "Quit the message composer"
-#~ msgstr "Comment=E-postredigering"
-
-#, fuzzy
-#~ msgid "Run filter \"%s\""
-#~ msgstr "Inga slik fil \"%s\"!"
-
-#, fuzzy
-#~ msgid "Forward Message"
-#~ msgstr "Vidaresendt melding"
diff --git a/po/no.po b/po/no.po
deleted file mode 100644
index 10f9c85ea6..0000000000
--- a/po/no.po
+++ /dev/null
@@ -1,11223 +0,0 @@
-# Norwegian (bokmål) translation of evolution.
-# Copyright (C) 2000 Free Software Foundation, Inc.
-# Kjartan Maraas <kmaraas@gnome.org>, 2000.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: evolution 0.8\n"
-"POT-Creation-Date: 2001-05-21 14:50+0200\n"
-"PO-Revision-Date: 2001-05-21 14:51+02:00\n"
-"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
-"Language-Team: Norwegian <no@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
-"Content-Transfer-Encoding: 8-bit\n"
-
-#: addressbook/backend/ebook/e-card.c:3314
-msgid "Card: "
-msgstr "Kort: "
-
-#: addressbook/backend/ebook/e-card.c:3316
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-"\n"
-"Navn:"
-
-#: addressbook/backend/ebook/e-card.c:3317
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-"\n"
-"Prefiks: "
-
-#: addressbook/backend/ebook/e-card.c:3318
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-"\n"
-"Oppgitt: "
-
-#: addressbook/backend/ebook/e-card.c:3319
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-"\n"
-"Tillegg: "
-
-#: addressbook/backend/ebook/e-card.c:3320
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-"\n"
-"Familie: "
-
-#: addressbook/backend/ebook/e-card.c:3321
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-"\n"
-"Suffiks: "
-
-#: addressbook/backend/ebook/e-card.c:3335
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-"\n"
-"Fødselsdato: "
-
-#: addressbook/backend/ebook/e-card.c:3346
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-"\n"
-"Adresse:"
-
-#: addressbook/backend/ebook/e-card.c:3348
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-"\n"
-"Postboks: "
-
-#: addressbook/backend/ebook/e-card.c:3349
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-"\n"
-"Linje: "
-
-#: addressbook/backend/ebook/e-card.c:3350
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-"\n"
-"Gate: "
-
-#: addressbook/backend/ebook/e-card.c:3351
-msgid ""
-"\n"
-" City: "
-msgstr ""
-"\n"
-"By: "
-
-#: addressbook/backend/ebook/e-card.c:3352
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-"\n"
-"Region: "
-
-#: addressbook/backend/ebook/e-card.c:3353
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-"\n"
-"Postnummer: "
-
-#: addressbook/backend/ebook/e-card.c:3354
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-"\n"
-"Land: "
-
-#: addressbook/backend/ebook/e-card.c:3367
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-"\n"
-"Leveringsetikett: "
-
-#: addressbook/backend/ebook/e-card.c:3379
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-"\n"
-"Telefoner:\n"
-
-#: addressbook/backend/ebook/e-card.c:3382
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-"\n"
-"Telefon:"
-
-#: addressbook/backend/ebook/e-card.c:3406
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-"\n"
-"E-post:\n"
-
-#: addressbook/backend/ebook/e-card.c:3409
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-"\n"
-"E-post:"
-
-#: addressbook/backend/ebook/e-card.c:3428
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-"\n"
-"E-post program: "
-
-#: addressbook/backend/ebook/e-card.c:3434
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-"\n"
-"Tidssone: "
-
-#: addressbook/backend/ebook/e-card.c:3442
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-"\n"
-"Geografisk lokasjon: "
-
-#: addressbook/backend/ebook/e-card.c:3446
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-"\n"
-"Stilling: "
-
-#: addressbook/backend/ebook/e-card.c:3458
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-"\n"
-"Org: "
-
-#: addressbook/backend/ebook/e-card.c:3459
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-"\n"
-"Navn: "
-
-#: addressbook/backend/ebook/e-card.c:3460
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-"\n"
-"Enhet: "
-
-#: addressbook/backend/ebook/e-card.c:3461
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-"\n"
-"Enhet2: "
-
-#: addressbook/backend/ebook/e-card.c:3462
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-"\n"
-"Enhet3: "
-
-#: addressbook/backend/ebook/e-card.c:3463
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-"\n"
-"Enhet4: "
-
-#: addressbook/backend/ebook/e-card.c:3467
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-"\n"
-"Kategorier: "
-
-#: addressbook/backend/ebook/e-card.c:3468
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-"\n"
-"Kommentar: "
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3481
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-"\n"
-"Unik streng: "
-
-#: addressbook/backend/ebook/e-card.c:3484
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-"\n"
-"Offentlig nøkkel: "
-
-#: addressbook/backend/ebook/e-card.c:3745
-msgid "Multiple VCards"
-msgstr "Flere VCard"
-
-#: addressbook/backend/ebook/e-card.c:3753
-#, c-format
-msgid "VCard for %s"
-msgstr "VCard for %s"
-
-#: addressbook/backend/ebook/e-destination.c:244
-msgid "???"
-msgstr "???"
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_VCard_Importer.oaf.in.h:1
-msgid "Factory to import VCard files into Evolution."
-msgstr "Factory for import av VCard-filer til Evolution."
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_VCard_Importer.oaf.in.h:2
-msgid "Imports VCard files into Evolution."
-msgstr "Importerer VCard-filer til Evolution."
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:21
-#: addressbook/backend/ebook/load-pine-addressbook.c:22
-#: addressbook/backend/ebook/test-client-list.c:23
-#: addressbook/backend/ebook/test-client.c:33
-#: addressbook/conduit/address-conduit.c:1092
-#: addressbook/gui/component/addressbook-factory.c:42
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:98 calendar/gui/main.c:57
-#: executive-summary/test-service/rdf-summary.c:981
-msgid "Could not initialize Bonobo"
-msgstr "Kunne ikke initialisere Bonobo"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr "Markøren kunne ikke lokaliseres\n"
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr "EBook ikke lastet\n"
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr "Kunne ikke starte wombat tjener"
-
-#: addressbook/conduit/address-conduit.c:655
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr "Kunne ikke starte wombat"
-
-#: addressbook/conduit/address-conduit.c:687
-#: addressbook/conduit/address-conduit.c:690
-msgid "Could not read pilot's Address application block"
-msgstr "Kunne ikke lese pilotens adresseapplikasjonsblokk"
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:7
-msgid "Add"
-msgstr "Legg til"
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr "Br_yllupsdag:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr "A_rbeid"
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr "_Faks på arbeid"
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-msgid "C_ontacts..."
-msgstr "K_ontakter..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr "Ka_tegorier..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-msgid "Contact Editor"
-msgstr "Kontaktredigering"
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr "Detaljer"
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr "Lagre som:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-msgid "General"
-msgstr "Generelt"
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr "Ny telefontype"
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-msgid "No_tes:"
-msgstr "No_tater:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr "Telefontyper"
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1284
-msgid "Primary Email"
-msgstr "Primær e-post"
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr "Vil motta _HTML e-post"
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr "Hjemmeside-adresse:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:84
-msgid "_Add"
-msgstr "_Legg til"
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr "_Adresse..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr "Assistents navn"
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr "Fø_dselsdag:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr "Ar_beid"
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-msgid "_Company:"
-msgstr "_Firma:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/folder-browser.c:715 mail/mail-config.glade.h:85
-#: ui/evolution-event-editor.xml.h:57 ui/evolution-mail.xml.h:103
-#: ui/evolution-task-editor-dialog.xml.h:69 ui/evolution.xml.h:46
-msgid "_Delete"
-msgstr "_Slett"
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr "Av_deling:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr ":Fullt navn..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-msgid "_Home"
-msgstr "_Hjemme"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-msgid "_Job title:"
-msgstr "_Jobbtittel:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr "_Leders navn:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-msgid "_Mobile"
-msgstr "_Mobil"
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr "Kalle_navn:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr "Kont_or:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr "_Yrke:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr "Ekte_felle:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr "De_tte er postadressen"
-
-#: addressbook/contact-editor/e-contact-editor.c:603
-msgid "This contact belongs to these categories:"
-msgstr "Denne kontakten hører til disse kategoriene:"
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-#: addressbook/gui/widgets/e-addressbook-view.c:733
-msgid "Assistant"
-msgstr "Assistent"
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/contact-editor/e-contact-editor.c:1310
-msgid "Business"
-msgstr "Arbeid"
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-msgid "Business 2"
-msgstr "Arbeid 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#: addressbook/gui/widgets/e-addressbook-view.c:713
-msgid "Business Fax"
-msgstr "Faks på arbeid"
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Callback"
-msgstr "Tilbakering"
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "Car"
-msgstr "Bil"
-
-#: addressbook/contact-editor/e-contact-editor.c:1248
-msgid "Company"
-msgstr "Firma"
-
-#: addressbook/contact-editor/e-contact-editor.c:1249
-#: addressbook/contact-editor/e-contact-editor.c:1311
-msgid "Home"
-msgstr "Hjemme"
-
-#: addressbook/contact-editor/e-contact-editor.c:1250
-msgid "Home 2"
-msgstr "Hjemme 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1251
-#: addressbook/gui/widgets/e-addressbook-view.c:714
-msgid "Home Fax"
-msgstr "Faks hjemme"
-
-#: addressbook/contact-editor/e-contact-editor.c:1252
-#: addressbook/gui/widgets/e-addressbook-view.c:717
-msgid "ISDN"
-msgstr "ISDN"
-
-#: addressbook/contact-editor/e-contact-editor.c:1253
-msgid "Mobile"
-msgstr "Mobil"
-
-#: addressbook/contact-editor/e-contact-editor.c:1254
-#: addressbook/contact-editor/e-contact-editor.c:1312
-msgid "Other"
-msgstr "Annet"
-
-#: addressbook/contact-editor/e-contact-editor.c:1255
-#: addressbook/gui/widgets/e-addressbook-view.c:719
-msgid "Other Fax"
-msgstr "Annen faks"
-
-#: addressbook/contact-editor/e-contact-editor.c:1256
-#: addressbook/gui/widgets/e-addressbook-view.c:720
-msgid "Pager"
-msgstr "Personsøker"
-
-#: addressbook/contact-editor/e-contact-editor.c:1257
-msgid "Primary"
-msgstr "Primær"
-
-#: addressbook/contact-editor/e-contact-editor.c:1258
-#: addressbook/gui/widgets/e-addressbook-view.c:721
-msgid "Radio"
-msgstr "Radio"
-
-#: addressbook/contact-editor/e-contact-editor.c:1259
-#: addressbook/gui/widgets/e-addressbook-view.c:722
-msgid "Telex"
-msgstr "Teleks"
-
-#: addressbook/contact-editor/e-contact-editor.c:1260
-msgid "TTY/TDD"
-msgstr "TTY/TTD"
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:725
-msgid "Email 2"
-msgstr "E-post 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/gui/widgets/e-addressbook-view.c:726
-msgid "Email 3"
-msgstr "E-post 3"
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-msgid "Delete Contact?"
-msgstr "Slett kontakt?"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:233
-msgid "Contact Quick-Add"
-msgstr "Hurtigkontakt"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:235
-msgid "Edit Full"
-msgstr "Rediger alt"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:276
-#: addressbook/gui/widgets/e-addressbook-view.c:700
-msgid "Full Name"
-msgstr "Fullt navn"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:282
-msgid "E-mail"
-msgstr "E-post"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr "Adresse _2:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr "Kanada"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr "Sjekk adresse"
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr "Lan_d:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr "Finland"
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr "USA"
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr "_Adresse:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-msgid "_City:"
-msgstr "_By:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr "_Postboks:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr "_Stat/Provins:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr "_ZIP/Postnummer:"
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr "Sjekk fullt navn:"
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr "Dr."
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr "Esq."
-
-#: addressbook/contact-editor/fullname.glade.h:4
-msgid "I"
-msgstr "I"
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr "II"
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr "III"
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr "Jr."
-
-#: addressbook/contact-editor/fullname.glade.h:8
-msgid "Miss"
-msgstr "Frk"
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr "Hr."
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr "Fru"
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr "Frk."
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr "Sr."
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr "_Fornavn:"
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr "_Etternavn:"
-
-#: addressbook/contact-editor/fullname.glade.h:15
-msgid "_Middle:"
-msgstr "_Mellomnavn:"
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr "_Suffiks:"
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr "_Tittel:"
-
-#: addressbook/gui/component/addressbook.c:244
-msgid "As _Minicards"
-msgstr "Som _minikort"
-
-#: addressbook/gui/component/addressbook.c:250
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr "Som _tabell"
-
-#: addressbook/gui/component/addressbook.c:410
-#, c-format
-msgid "Enter password for %s"
-msgstr "Skriv inn passord for %s"
-
-#: addressbook/gui/component/addressbook.c:438
-msgid "Unable to open addressbook"
-msgstr "Kunne ikke åpne adresseboken"
-
-#: addressbook/gui/component/addressbook.c:445
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or the LDAP server\n"
-"is down"
-msgstr ""
-"Kunne ikke åpne denne adresseboken. Dette betyr enten\n"
-"at du har skrevet inn en ugyldig URI, eller at LDAP-tjeneren\n"
-"er nede"
-
-#: addressbook/gui/component/addressbook.c:450
-msgid ""
-"This version of Evolution does not have LDAP support\n"
-"compiled in to it. If you want to use LDAP in Evolution\n"
-"you must compile the program from the CVS sources after\n"
-"retrieving OpenLDAP from the link below.\n"
-msgstr ""
-"Denne versjonen av Evolution har ikke LDAP-støtte\n"
-"kompilert inn. Hvis du ønsker å bruke LDAP i Evolution\n"
-"må du kompilere programmet fra kildekoden i CVS etter å\n"
-"ha hentet OpenLDAP fra lenken under.\n"
-
-#: addressbook/gui/component/addressbook.c:458
-msgid ""
-"We were unable to open this addressbook. Please check that the\n"
-"path exists and that you have permission to access it."
-msgstr ""
-"Kunne ikke åpne denne adresseboken. Vennligst sjekk at stien\n"
-"eksisterer og at du har rettigheter til å aksessere den."
-
-#: addressbook/gui/component/addressbook.c:618 calendar/gui/gnome-cal.c:233
-msgid "Any field contains"
-msgstr "Et felt inneholder"
-
-#: addressbook/gui/component/addressbook.c:619
-msgid "Name contains"
-msgstr "Navn inneholder"
-
-#: addressbook/gui/component/addressbook.c:620
-msgid "Email contains"
-msgstr "E-post inneholder"
-
-#: addressbook/gui/component/addressbook.c:763
-msgid "The URI that the Folder Browser will display"
-msgstr "URIen som mappeutforskeren vil vise"
-
-#: addressbook/gui/component/addressbook-config.c:148
-msgid "LDAP Server"
-msgstr "LDAP-tjener"
-
-#: addressbook/gui/component/addressbook-config.c:150
-msgid "File"
-msgstr "Fil"
-
-#: addressbook/gui/component/addressbook-config.c:153
-msgid "Unknown addressbook type"
-msgstr "Ukjent type adressebok"
-
-#: addressbook/gui/component/addressbook-config.c:163
-msgid "None (anonymous mode)"
-msgstr "Ingen (anonym modus)"
-
-#: addressbook/gui/component/addressbook-config.c:165
-#: camel/camel-sasl-plain.c:32 camel/providers/imap/camel-imap-provider.c:80
-#: camel/providers/nntp/camel-nntp-store.c:291
-#: camel/providers/pop3/camel-pop3-provider.c:67 mail/mail-config.glade.h:52
-msgid "Password"
-msgstr "Passord"
-
-#: addressbook/gui/component/addressbook-config.c:168
-msgid "Unknown auth type"
-msgstr "Ukjent autentiseringstype"
-
-#: addressbook/gui/component/addressbook-config.c:177
-msgid "Base"
-msgstr "Basis"
-
-#: addressbook/gui/component/addressbook-config.c:179
-msgid "One"
-msgstr "En"
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "Subtree"
-msgstr "Undertre"
-
-#: addressbook/gui/component/addressbook-config.c:184
-msgid "Unknown scope type"
-msgstr "Ukjent type område"
-
-#: addressbook/gui/component/addressbook-config.c:349
-msgid "Bind DN:"
-msgstr "Bind DN:"
-
-#: addressbook/gui/component/addressbook-config.c:350
-msgid "FIXME Bind DN Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:352
-#: mail/mail-config.glade.h:60
-msgid "Remember this password"
-msgstr "Husk dette passordet"
-
-#: addressbook/gui/component/addressbook-config.c:403
-#: mail/mail-config.glade.h:33
-msgid "Host:"
-msgstr "Vert:"
-
-#: addressbook/gui/component/addressbook-config.c:404
-msgid "FIXME Host help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:406
-msgid "Root DN:"
-msgstr "Rot DN:"
-
-#: addressbook/gui/component/addressbook-config.c:407
-msgid "FIXME Root DN help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:411
-msgid "Port:"
-msgstr "Port:"
-
-#: addressbook/gui/component/addressbook-config.c:412
-msgid "FIXME Port help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:432
-msgid "Search Scope:"
-msgstr "Søkeområde:"
-
-#: addressbook/gui/component/addressbook-config.c:479
-msgid "Authentication:"
-msgstr "Autentisering:"
-
-#: addressbook/gui/component/addressbook-config.c:501
-msgid "Advanced LDAP Options"
-msgstr "Avanserte LDAP-alternativer"
-
-#: addressbook/gui/component/addressbook-config.c:522
-#: mail/mail-config.glade.h:53
-msgid "Path:"
-msgstr "Sti:"
-
-#: addressbook/gui/component/addressbook-config.c:523
-msgid "FIXME Path Help text here"
-msgstr "Hjelp for stier her?"
-
-#: addressbook/gui/component/addressbook-config.c:528
-msgid "Create path if it doesn't exist."
-msgstr "Opprett sti hvis den ikke eksisterer."
-
-#: addressbook/gui/component/addressbook-config.c:662
-msgid "Edit Addressbook"
-msgstr "Rediger adressebok"
-
-#: addressbook/gui/component/addressbook-config.c:664
-msgid "Add Addressbook"
-msgstr "Legg til adressebok"
-
-#: addressbook/gui/component/addressbook-config.c:682
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr "Velg type adressebok du har, og skriv inn relevant informasjon om den."
-
-#: addressbook/gui/component/addressbook-config.c:688
-#: mail/mail-config.glade.h:43
-msgid "Name:"
-msgstr "Navn:"
-
-#: addressbook/gui/component/addressbook-config.c:689
-msgid "FIXME Name help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:691
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr "Beskrivelse:"
-
-#: addressbook/gui/component/addressbook-config.c:692
-msgid "FIXME Description help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-msgid "Addressbook Sources"
-msgstr "Adressebok-kilder"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:235
-#: addressbook/gui/widgets/e-addressbook-view.c:616
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:11 mail/mail-config.glade.h:23
-#: mail/message-browser.c:202 ui/evolution-addressbook.xml.h:3
-#: ui/evolution-event-editor.xml.h:17 ui/evolution-mail.xml.h:22
-#: ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr "Slett"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:28
-msgid "Edit"
-msgstr "Rediger"
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-msgid "Name"
-msgstr "Navn"
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-msgid "URI"
-msgstr "URI"
-
-#: addressbook/gui/component/addressbook-storage.c:99
-msgid "Other Contacts"
-msgstr "Andre kontakter"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Disable Queries"
-msgstr "Deaktiver spørringer"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Enable Queries (Dangerous!)"
-msgstr "Aktiver spørringer (Farlig!)"
-
-#: addressbook/gui/component/e-address-widget.c:388
-#: addressbook/gui/component/select-names/e-select-names-popup.c:281
-msgid "Edit Contact Info"
-msgstr "Rediger kontaktinfo"
-
-#: addressbook/gui/component/e-address-widget.c:424
-#: addressbook/gui/component/select-names/e-select-names-popup.c:347
-msgid "Add to Contacts"
-msgstr "Legg til i kontakter"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-msgid "A Bonobo control for an address popup."
-msgstr "En Bonobo-kontroll for visning av en adresse."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A Bonobo control for displaying an address."
-msgstr "En Bonobo-kontroll for visning av en adresse."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr "Eksempel på Bonobo-kontroll som viser en adressebok."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr "Kontroll som viser et minikort for Evolutions adressebok."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-msgid "Evolution Addressbook minicard viewer"
-msgstr "Evolution adressebok minikort visning"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-msgid "Evolution component for handling contacts."
-msgstr "Evolution komponent for håndtering av kontakter."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-msgid "Factory for the Addressbook Minicard control"
-msgstr "Factory for minikort kontroll for adressebok"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-msgid "Factory for the Addressbook's address displayer"
-msgstr "Factory for adressebokens adressevisning"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-msgid "Factory for the Addressbook's address popup"
-msgstr "Factory for adressebokens adressevisning"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:10
-msgid "Factory for the Evolution addressbook component."
-msgstr "Factory for Evolution adressebok-komponent."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:11
-msgid "Factory for the sample Addressbook control"
-msgstr "Factory for eksempelkontroll for adressebok"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:161
-#: composer/e-msg-composer-attachment-bar.c:468 filter/filter-filter.c:401
-#: filter/filter-rule.c:549 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:265 shell/e-shortcuts-view.c:388
-msgid "Remove"
-msgstr "Fjern"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:176
-msgid "Remove All"
-msgstr "Fjern alle"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:200
-msgid "Send HTML Mail?"
-msgstr "Send HTML e-post?"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-msgid "Evolution's addressbook name selection interface."
-msgstr "Evolution adressebok-komponent"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr "Factory for adressebokens grensesnitt for navnevalg"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr "Finn..."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-msgid "Message Recipients"
-msgstr "Meldingsmottakere:"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-msgid "Select Names"
-msgstr "Velg navn"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-msgid "Select name from:"
-msgstr "Velg navn fra:"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:158
-#: mail/mail-search.c:242
-msgid "Search"
-msgstr "Søk"
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr "123"
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr "a"
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr "b"
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr "c"
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr "d"
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr "e"
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr "f"
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr "g"
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr "h"
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr "i"
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr "j"
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr "k"
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr "l"
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr "m"
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr "n"
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-msgid "o"
-msgstr "o"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr "p"
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr "q"
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-msgid "r"
-msgstr "r"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr "s"
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr "t"
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr "u"
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr "v"
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr "w"
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr "x"
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr "y"
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr "z"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:135
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:230
-#: addressbook/gui/widgets/e-addressbook-view.c:551
-#: addressbook/gui/widgets/e-addressbook-view.c:611
-msgid "Save as VCard"
-msgstr "Lagre som VCard"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:231
-#: addressbook/gui/widgets/e-addressbook-view.c:612
-msgid "Send contact to other"
-msgstr "Send kontakt til andre"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:232
-#: addressbook/gui/widgets/e-addressbook-view.c:613
-msgid "Send message to contact"
-msgstr "Send melding til kontakt"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:233
-#: addressbook/gui/widgets/e-addressbook-view.c:614 mail/message-browser.c:199
-#: ui/evolution-addressbook.xml.h:9 ui/evolution-calendar.xml.h:23
-#: ui/evolution-mail.xml.h:65 ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr "Skriv ut"
-
-#: addressbook/gui/widgets/e-addressbook-reflow-adapter.c:234
-#: addressbook/gui/widgets/e-addressbook-view.c:615
-msgid "Print Envelope"
-msgstr "Skriv ut konvolutt"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:698
-msgid "* Click here to add a contact *"
-msgstr "* Klikk her for å legge til en kontakt *"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:699
-msgid "File As"
-msgstr "Lagre som"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:701
-msgid "Email"
-msgstr "E-post"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:702
-msgid "Primary Phone"
-msgstr "Primær telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:703
-msgid "Assistant Phone"
-msgstr "Assistents telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:704
-msgid "Business Phone"
-msgstr "Arbeidstelefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:705
-msgid "Callback Phone"
-msgstr "Telefon for tilbakeringing"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:706
-msgid "Company Phone"
-msgstr "Firmatelefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:707
-msgid "Home Phone"
-msgstr "Hjemmetelefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:708
-msgid "Organization"
-msgstr "Organisasjon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:709
-msgid "Business Address"
-msgstr "Arbeidsadresse"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:710
-msgid "Home Address"
-msgstr "Hjemmeadresse"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:711
-msgid "Mobile Phone"
-msgstr "Mobiltelefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:712
-msgid "Car Phone"
-msgstr "Biltelefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:715
-msgid "Business Phone 2"
-msgstr "Arbeidstelefon 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:716
-msgid "Home Phone 2"
-msgstr "Hjemmetelefon 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:718
-msgid "Other Phone"
-msgstr "Annen telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:723
-msgid "TTY"
-msgstr "TTY"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:724
-msgid "Other Address"
-msgstr "Annen adresse"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:727
-msgid "Web Site"
-msgstr "Nettside"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:728
-msgid "Department"
-msgstr "Avdeling"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:729
-msgid "Office"
-msgstr "Kontor"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:730
-msgid "Title"
-msgstr "Tittel"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:731
-msgid "Profession"
-msgstr "Yrke"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:732
-msgid "Manager"
-msgstr "Leder"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:734
-msgid "Nickname"
-msgstr "Kallenavn"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:735
-msgid "Spouse"
-msgstr "Ektefelle"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:736
-msgid "Note"
-msgstr "Kommentar"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:737
-msgid "Free-busy URL"
-msgstr "Fri-ledig URL"
-
-#: addressbook/gui/widgets/e-minicard-control.c:282
-msgid "Save in addressbook"
-msgstr "Lagre i adressebok"
-
-#: addressbook/gui/widgets/e-minicard-view.c:216
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-"\n"
-"\n"
-"Ingen oppføringer i denne visningen\n"
-"\n"
-"Dobbelklikk her for å opprette en ny kontakt."
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:26
-msgid "Card View"
-msgstr "Kortvisning"
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr "10 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr "8 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr "Blanke skjema på slutten:"
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr "Kropp"
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr "Bunn:"
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr "Dimensjoner:"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr "Skrifttype..."
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr "Skrifttyper"
-
-#: addressbook/printing/e-contact-print.glade.h:9
-msgid "Footer:"
-msgstr "Bunntekst:"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr "Format"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-msgid "Header"
-msgstr "Topptekst"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr "Topp-/bunntekst"
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr "Topptekster"
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr "Topptekst for hver bokstav"
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr "Høyde:"
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr "Rett etter hverandre"
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr "Inkluder:"
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr "Landskap"
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr "Venstre:"
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr "Bokstavfaner på siden"
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr "Marger"
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr "Antall kolonner:"
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr "Alternativer"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr "Orientering"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr "Side"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-msgid "Page Setup:"
-msgstr "Sideoppsett"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr "Papir"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr "Papirkilde:"
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr "Portrett"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr "Forhåndsvis:"
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr "Skriv ut med gråtoner"
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr "Motsatt på like sider"
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr "Høyre:"
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr "Seksjoner:"
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr "Skyggelegging"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-msgid "Size:"
-msgstr "Størrelse:"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr "Start på en ny side"
-
-#: addressbook/printing/e-contact-print.glade.h:38
-msgid "Style name:"
-msgstr "Stilnavn:"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr "Topp:"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-msgid "Type:"
-msgstr "Type:"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr "Bredde:"
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr "Feil under kommunikasjon med kalendertjeneren"
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr "Kunne ikke lese pilotens kalender-applikasjonsblokk"
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr "Kunne ikke lese pilotens applikasjonsblokk for oppgaveliste"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr "Påminnelse om din avtale "
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-msgid "Snooze"
-msgstr "Utsett"
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr "Ok"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr "Alarm-tjeneste"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-msgid "Factory for the alarm notification service"
-msgstr "Factory for alarm-tjenesten"
-
-#: calendar/gui/alarm-notify/notify-main.c:56
-#, c-format
-msgid ""
-"It is %s. The Unix time is %ld right now. We just thought you may like to "
-"know."
-msgstr ""
-"Det er %s. Unix tiden er %ld akkurat nå. Vi bare tenkte du ville vite det."
-
-#: calendar/gui/alarm-notify/notify-main.c:93 calendar/gui/main.c:52
-msgid "Could not initialize GNOME"
-msgstr "Kunne ikke initiere GNOME"
-
-#: calendar/gui/alarm-notify/notify-main.c:108
-msgid "Could not create the alarm notify service factory"
-msgstr "Kunne ikke opprette factory for alarm-tjenesten"
-
-#: calendar/gui/calendar-commands.c:266
-msgid "File not found"
-msgstr "Fil ikke funnet"
-
-#: calendar/gui/calendar-commands.c:290
-msgid "Open calendar"
-msgstr "Åpne kalender"
-
-#: calendar/gui/calendar-commands.c:332
-msgid "Save calendar"
-msgstr "Lagre kalender"
-
-#: calendar/gui/calendar-commands.c:468
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-"Kunne ikke opprette kalendervisning. Vennligst sjekk din ORBit og OAF "
-"konfigurasjon."
-
-#: calendar/gui/calendar-model.c:360 calendar/gui/calendar-model.c:898
-#: calendar/gui/e-calendar-table.c:323
-msgid "Public"
-msgstr "Offentlig"
-
-#: calendar/gui/calendar-model.c:363 calendar/gui/calendar-model.c:900
-#: calendar/gui/e-calendar-table.c:324
-msgid "Private"
-msgstr "Privat"
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:902
-#: calendar/gui/e-calendar-table.c:325
-msgid "Confidential"
-msgstr "Konfidensiell"
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/event-editor.c:1601
-#: calendar/gui/event-editor.c:1628
-#: camel/providers/smtp/camel-smtp-transport.c:221
-msgid "Unknown"
-msgstr "Ukjent"
-
-#: calendar/gui/calendar-model.c:457
-msgid "N"
-msgstr "N"
-
-#: calendar/gui/calendar-model.c:457
-msgid "S"
-msgstr "S"
-
-#: calendar/gui/calendar-model.c:459
-msgid "E"
-msgstr "Ø"
-
-#: calendar/gui/calendar-model.c:459
-msgid "W"
-msgstr "V"
-
-#: calendar/gui/calendar-model.c:497 calendar/gui/calendar-model.c:1066
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:345 mail/message-list.c:689
-msgid "High"
-msgstr "Høy"
-
-#: calendar/gui/calendar-model.c:499 calendar/gui/calendar-model.c:1068
-#: calendar/gui/calendar-model.c:1574
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:346 mail/message-list.c:688
-msgid "Normal"
-msgstr "Normal"
-
-#: calendar/gui/calendar-model.c:501 calendar/gui/calendar-model.c:1070
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:347 mail/message-list.c:687
-msgid "Low"
-msgstr "Lav"
-
-#: calendar/gui/calendar-model.c:537 calendar/gui/calendar-model.c:1122
-#: calendar/gui/e-calendar-table.c:399
-msgid "Transparent"
-msgstr "Gjennomsiktig"
-
-#: calendar/gui/calendar-model.c:540 calendar/gui/calendar-model.c:1124
-#: calendar/gui/e-calendar-table.c:398
-msgid "Opaque"
-msgstr "Ugjennomsiktig"
-
-#: calendar/gui/calendar-model.c:638 calendar/gui/calendar-model.c:1176
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:419
-msgid "Not Started"
-msgstr "Ikke startet"
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1178
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:420
-msgid "In Progress"
-msgstr "Under arbeid"
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1180
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:421
-msgid "Completed"
-msgstr "Fullført"
-
-#: calendar/gui/calendar-model.c:647 calendar/gui/calendar-model.c:1182
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:422 camel/camel-service.c:544
-#: camel/camel-service.c:580
-msgid "Cancelled"
-msgstr "Avbrutt"
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:794 e-util/e-time-utils.c:278
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr "%a %d.%m.%Y %H:%M:%S"
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:797 e-util/e-time-utils.c:287
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr "%a %d.%m.%Y %H:%M:%S %p"
-
-#: calendar/gui/calendar-model.c:802
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-"Datoen må skrives inn på formatet: \n"
-"\n"
-"%s"
-
-#: calendar/gui/calendar-model.c:882
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr ""
-"Klassifikasjonen må være en av 'Offentlig', 'Privat', \"Konfidensiell' eller "
-"'Ingen'"
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:896 calendar/gui/calendar-model.c:1120
-#: calendar/gui/calendar-model.c:1174 calendar/gui/e-calendar-table.c:322
-#: calendar/gui/e-calendar-table.c:397 mail/mail-account-gui.c:976
-#: mail/mail-accounts.c:120 mail/mail-accounts.c:164
-#: mail/mail-config.glade.h:46 shell/e-shell-view.c:1312
-#: widgets/misc/e-cell-date-edit.c:237 widgets/misc/e-dateedit.c:432
-#: widgets/misc/e-dateedit.c:1341 widgets/misc/e-dateedit.c:1456
-msgid "None"
-msgstr "Ingen"
-
-#: calendar/gui/calendar-model.c:970
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-"Den geografiske posisjonen må skrives inn på formatet: \n"
-"\n"
-"45.436845,125.862501"
-
-#: calendar/gui/calendar-model.c:1010
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr "Prosentverdien må være mellom 0 og 100, inklusive"
-
-#: calendar/gui/calendar-model.c:1051
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr "Prioriteten må være en av 'Høy', 'Normal', 'Lav' eller 'Udefinert'."
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1064
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:348
-msgid "Undefined"
-msgstr "Udefinert"
-
-#: calendar/gui/calendar-model.c:1105
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr ""
-"Gjennomsiktigheten må være en av 'Gjennomsiktig', 'Ugjennomsiktig' eller "
-"\"Ingen'."
-
-#: calendar/gui/calendar-model.c:1576
-msgid "Recurring"
-msgstr "Gjeninntreffer"
-
-#: calendar/gui/calendar-model.c:1578
-msgid "Assigned"
-msgstr "Tildelt"
-
-#: calendar/gui/calendar-model.c:1584
-msgid "Yes"
-msgstr "Ja"
-
-#: calendar/gui/calendar-model.c:1584
-msgid "No"
-msgstr "Nei"
-
-#: calendar/gui/calendar-summary.c:198
-msgid "%A, %e %B %Y"
-msgstr "%A, %e %B %Y"
-
-#: calendar/gui/calendar-summary.c:207
-msgid "Appointments"
-msgstr "Avtaler"
-
-#: calendar/gui/calendar-summary.c:245 calendar/gui/calendar-summary.c:251
-msgid "%I:%M%p"
-msgstr "%I:%M%p"
-
-#: calendar/gui/calendar-summary.c:275 calendar/gui/print.c:948
-#: views/tasks/galview.xml.h:1
-msgid "Tasks"
-msgstr "Oppgaver"
-
-#: calendar/gui/calendar-summary.c:443
-msgid "<b>Error loading calendar</b>"
-msgstr "<b>Feil under lasting av kalender</b>"
-
-#: calendar/gui/calendar-summary.c:455
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr "<b>Feil under lasting av kalender:<br>Metoden er ikke støttet"
-
-#: calendar/gui/calendar-summary.c:622 mail/mail-config.glade.h:24
-msgid "Display"
-msgstr "Vis"
-
-#: calendar/gui/calendar-summary.c:627
-msgid "Show appointments"
-msgstr "Vis avtaler"
-
-#: calendar/gui/calendar-summary.c:635
-msgid "Show tasks"
-msgstr "Vis oppgaver"
-
-#: calendar/gui/calendar-summary.c:690
-msgid "Things to do"
-msgstr "Ting som skal gjøres"
-
-#: calendar/gui/calendar-summary.c:721 calendar/gui/e-itip-control.glade.h:7
-msgid "Loading Calendar"
-msgstr "Laster kalender"
-
-#: calendar/gui/control-factory.c:126
-msgid "The URI that the calendar will display"
-msgstr "URIen som kalenderen skal vise"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:189
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr "Alarm på %A %b %d %Y %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:196
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr "Melding om din avtale på %A %b %d %Y %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:207
-msgid "No summary available."
-msgstr "Ingen sammendrag tilgjengelig."
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:5
-msgid "Close"
-msgstr "Lukk"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-msgid "Edit appointment"
-msgstr "Rediger avtale:"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr "Utsett-tid (minutter)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr "5 minutter"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr "10 minutter"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr "12 timer (am/pm)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr "15 minutter"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr "24 timer"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr "30 minutter"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr "60 minutter"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr "Tidsavbrudd for alarm etter"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr "Lyd-alarmer"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr "Pip når alarmvinduet kommer til syne."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-msgid "Calendar"
-msgstr "Kalender"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr "Brukervalg for kalender"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "Farger"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr "Komprimer helger"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr "Alternativer for datonavigator"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-msgid "Defaults"
-msgstr "Forvalg"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr "Vis alternativer"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:155
-msgid "Due Date"
-msgstr "Ferdig-dato"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr "Slå på utsetting for "
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr "Dagen slutter:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr "Første dag i uken:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr "Fre"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:479
-msgid "Friday"
-msgstr "Fredag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr "Marker"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr "Oppføringer som går ut idag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr "Oppføringer som går ut i dag:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr "Oppføringer som ikke har gått ut"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr "Oppføringer som ikke har gått ut:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr "Man"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:475
-msgid "Monday"
-msgstr "Mandag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr "Utgåtte oppføringer"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr "Utgåtte oppføringer:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:54
-msgid "Pick a color"
-msgstr "Velg en farge"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:158
-msgid "Priority"
-msgstr "Prioritet"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-msgid "Remind me of all appointments"
-msgstr "Påminnelse om alle avtaler"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-msgid "Reminders"
-msgstr "Påminnelser"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr "Lør"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:480
-msgid "Saturday"
-msgstr "Lørdag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr "Vis"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-msgid "Show appointment end times"
-msgstr "Vis tid for avtalers slutt"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr "Vis ukenummer"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr "Dagen starter:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr "Søn"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:481
-msgid "Sunday"
-msgstr "Søndag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-msgid "TaskPad"
-msgstr "Oppgaveblokk"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr "Tor"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:478
-msgid "Thursday"
-msgstr "Torsdag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr "Tid før den går ut"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr "Oppdeling av tid:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr "Tidformat:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr "Tir"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:476
-msgid "Tuesday"
-msgstr "Tirsdag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr "Visuelle alarmer"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr "Ons"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:477
-msgid "Wednesday"
-msgstr "Onsdag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr "Arbeidsuke"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr "minutter i forveien."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:88
-msgid "seconds."
-msgstr "sekunder"
-
-#: calendar/gui/dialogs/delete-comp.c:84
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr "Er du sikker på at du vil slette avtalen `%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:87
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr "Er du sikker på at du vil slette denne avtalen uten tittel?"
-
-#: calendar/gui/dialogs/delete-comp.c:93
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr "Er du sikker på at du vil slette oppgaven `%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:96
-msgid "Are you sure you want to delete this untitled task?"
-msgstr "Er du sikker på at du vil slette denne oppgaven uten tittel?"
-
-#: calendar/gui/dialogs/delete-comp.c:102
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr "Er du sikker på at du vil slette journaloppføringen `%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:105
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr "Er du sikker på at du vil slette denne journaloppføringen uten tittel?"
-
-#: calendar/gui/dialogs/delete-comp.c:120
-#, c-format
-msgid "Are you sure you want to delete %d appointments?"
-msgstr "Er du sikker på at du vil slette %d avtaler?"
-
-#: calendar/gui/dialogs/delete-comp.c:125
-#, c-format
-msgid "Are you sure you want to delete %d tasks?"
-msgstr "Er du sikker på at du vil slette %d oppgaver?"
-
-#: calendar/gui/dialogs/delete-comp.c:130
-#, c-format
-msgid "Are you sure you want to delete %d journal entries?"
-msgstr "Er du sikker på at du vil slette %d journaloppføringer?"
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr "Vil du lagre endringene?"
-
-#: calendar/gui/dialogs/task-editor.c:709
-msgid "Edit Task"
-msgstr "Rediger oppgave"
-
-#: calendar/gui/dialogs/task-editor.c:714 calendar/gui/event-editor.c:382
-#, c-format
-msgid "Appointment - %s"
-msgstr "Avtale - %s"
-
-#: calendar/gui/dialogs/task-editor.c:717 calendar/gui/event-editor.c:385
-#, c-format
-msgid "Task - %s"
-msgstr "Oppgave - %s"
-
-#: calendar/gui/dialogs/task-editor.c:720 calendar/gui/event-editor.c:388
-#, c-format
-msgid "Journal entry - %s"
-msgstr "Journaloppføring - %s"
-
-#: calendar/gui/dialogs/task-editor.c:734 calendar/gui/event-editor.c:402
-msgid "No summary"
-msgstr "Ingen sammendrag"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr "% ferdi_g:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:151
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr "Klassifisering"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-msgid "Date & Time"
-msgstr "Dato & klokke"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr "Fullført dato:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-msgid "Pri_vate"
-msgstr "Pri_vat"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-msgid "Progress"
-msgstr "Fremgang"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr "Of_fentlig"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-msgid "Sta_rt Date:"
-msgstr "Sta_rt dato:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-msgid "Su_mmary:"
-msgstr "Sa_mmendrag:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr "Oppgave"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-msgid "URL:"
-msgstr "URL:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr "_Konfidensiell"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Contacts..."
-msgstr "_Kontakter..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-msgid "_Due Date:"
-msgstr "Fer_dig-dato:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-msgid "_Priority:"
-msgstr "_Prioritet:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "_Status:"
-msgstr "_Status:"
-
-#: calendar/gui/e-calendar-table.c:150
-msgid "Categories"
-msgstr "Kategorier"
-
-#: calendar/gui/e-calendar-table.c:152
-msgid "Completion Date"
-msgstr "Fullført dato"
-
-#: calendar/gui/e-calendar-table.c:153
-msgid "End Date"
-msgstr "Sluttdato"
-
-#: calendar/gui/e-calendar-table.c:154
-msgid "Start Date"
-msgstr "Startdato"
-
-#: calendar/gui/e-calendar-table.c:156
-msgid "Geographical Position"
-msgstr "Geografisk plassering"
-
-#: calendar/gui/e-calendar-table.c:157
-msgid "Percent complete"
-msgstr "Prosent fullført"
-
-#: calendar/gui/e-calendar-table.c:159
-msgid "Summary"
-msgstr "Sammendrag"
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "Transparency"
-msgstr "Gjennomsiktighet"
-
-#: calendar/gui/e-calendar-table.c:161
-msgid "URL"
-msgstr "URL"
-
-#: calendar/gui/e-calendar-table.c:162
-msgid "Alarms"
-msgstr "Alarmer"
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Click here to add a task"
-msgstr "Klikk her for å legge til en oppgave"
-
-#: calendar/gui/e-calendar-table.c:367
-#, c-format
-msgid "0%"
-msgstr "0%"
-
-#: calendar/gui/e-calendar-table.c:368
-#, c-format
-msgid "10%"
-msgstr "10%"
-
-#: calendar/gui/e-calendar-table.c:369
-#, c-format
-msgid "20%"
-msgstr "20%"
-
-#: calendar/gui/e-calendar-table.c:370
-#, c-format
-msgid "30%"
-msgstr "30%"
-
-#: calendar/gui/e-calendar-table.c:371
-#, c-format
-msgid "40%"
-msgstr "40%"
-
-#: calendar/gui/e-calendar-table.c:372
-#, c-format
-msgid "50%"
-msgstr "50%"
-
-#: calendar/gui/e-calendar-table.c:373
-#, c-format
-msgid "60%"
-msgstr "60%"
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "70%"
-msgstr "70%"
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "80%"
-msgstr "80%"
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "90%"
-msgstr "90%"
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "100%"
-msgstr "100%"
-
-#: calendar/gui/e-calendar-table.c:705
-msgid "Edit this task"
-msgstr "Rediger denne oppgaven"
-
-#: calendar/gui/e-calendar-table.c:707
-msgid "Mark as complete"
-msgstr "Merk som fullført"
-
-#: calendar/gui/e-calendar-table.c:708
-#: ui/evolution-task-editor-dialog.xml.h:19
-msgid "Delete this task"
-msgstr "Slett denne oppgaven"
-
-#: calendar/gui/e-calendar-table.c:713
-msgid "Mark tasks as complete"
-msgstr "Merk oppgaven som fullført"
-
-#: calendar/gui/e-calendar-table.c:714
-msgid "Delete selected tasks"
-msgstr "Slett valgte oppgaver"
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:570 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:617
-msgid "am"
-msgstr "am"
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:573 calendar/gui/e-week-view.c:303
-#: calendar/gui/print.c:616
-msgid "pm"
-msgstr "pm"
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:274 calendar/gui/e-day-view.c:1294
-#: calendar/gui/e-week-view-main-item.c:325
-msgid "%A %d %B"
-msgstr "%A %d %B"
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:278 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:334
-msgid "%a %d %b"
-msgstr "%a %d %b"
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:282 calendar/gui/e-day-view.c:1321
-#: calendar/gui/e-week-view-main-item.c:348
-msgid "%d %b"
-msgstr "%d %b"
-
-#: calendar/gui/e-day-view.c:3146 ui/evolution-calendar.xml.h:16
-msgid "New Appointment"
-msgstr "Ny avtale"
-
-#: calendar/gui/e-day-view.c:3148 calendar/gui/e-week-view.c:3279
-msgid "New All Day Event"
-msgstr "Ny avtale som varer hele dagen"
-
-#: calendar/gui/e-day-view.c:3153 calendar/gui/e-week-view.c:3284
-msgid "Go to Today"
-msgstr "Gå til idag"
-
-#: calendar/gui/e-day-view.c:3155 calendar/gui/e-week-view.c:3286
-msgid "Go to Date..."
-msgstr "Gå til dato..."
-
-#: calendar/gui/e-day-view.c:3162 calendar/gui/e-week-view.c:3292
-#: ui/evolution-calendar.xml.h:19 ui/evolution-message-composer.xml.h:11
-msgid "Open"
-msgstr "Åpne"
-
-#: calendar/gui/e-day-view.c:3164 calendar/gui/e-week-view.c:3294
-msgid "Delete this Appointment"
-msgstr "Slett denne avtalen"
-
-#: calendar/gui/e-day-view.c:3166 calendar/gui/e-week-view.c:3296
-#: ui/evolution-event-editor.xml.h:45
-msgid "Schedule Meeting"
-msgstr "Sett opp møte"
-
-#: calendar/gui/e-day-view.c:3175 calendar/gui/e-week-view.c:3309
-msgid "Make this Occurrence Movable"
-msgstr "Gjør denne avtalen flyttbar"
-
-#: calendar/gui/e-day-view.c:3177 calendar/gui/e-week-view.c:3311
-msgid "Delete this Occurrence"
-msgstr "Slett denne oppføringen"
-
-#: calendar/gui/e-day-view.c:3179
-msgid "Delete all Occurrences"
-msgstr "Slett alle oppføringer"
-
-#: calendar/gui/e-day-view-time-item.c:519
-#, c-format
-msgid "%02i minute divisions"
-msgstr "%02i minutters oppdeling"
-
-#: calendar/gui/e-itip-control.c:161
-msgid "I couldn't update your calendar file!\n"
-msgstr "Kunne ikke oppdatere din kalenderfil!\n"
-
-#: calendar/gui/e-itip-control.c:167 calendar/gui/e-itip-control.c:510
-msgid "Component successfully updated."
-msgstr "Oppdatering av komponent fullført."
-
-#: calendar/gui/e-itip-control.c:173
-msgid "There was an error loading the calendar file."
-msgstr "Det oppsto en feil under lasting av kalenderfilen."
-
-#: calendar/gui/e-itip-control.c:197
-msgid "I couldn't open your calendar file!\n"
-msgstr "Kunne ikke åpne din kalenderfil!\n"
-
-#: calendar/gui/e-itip-control.c:458 calendar/gui/e-itip-control.c:529
-msgid "I couldn't load your calendar file!\n"
-msgstr "Kunne ikke laste din kalenderfil!\n"
-
-#: calendar/gui/e-itip-control.c:470
-msgid "I couldn't read your calendar file!\n"
-msgstr "Kunne ikke lese din kalenderfil!\n"
-
-#: calendar/gui/e-itip-control.c:483
-msgid "This is a reply from someone who was uninvited!"
-msgstr "Dette er et svar fra noen som ikke er invitert!"
-
-#: calendar/gui/e-itip-control.c:499
-msgid "I couldn't update your calendar store."
-msgstr "Kunne ikke oppdatere ditt kalenderlager."
-
-#: calendar/gui/e-itip-control.c:540
-msgid "I couldn't delete the calendar component!\n"
-msgstr "Kunne ikke slette kalenderkomponenten!\n"
-
-#: calendar/gui/e-itip-control.c:550
-msgid "Component successfully deleted."
-msgstr "Sletting av komponent fullført."
-
-#: calendar/gui/e-itip-control.c:694
-msgid "I don't recognize this type of calendar component."
-msgstr "Kan ikke kjenne igjen denne typen kalenderkomponent."
-
-#: calendar/gui/e-itip-control.c:780
-msgid "Add to Calendar"
-msgstr "Legg til i kalenderen"
-
-#: calendar/gui/e-itip-control.c:814
-msgid " Accept "
-msgstr " Godta "
-
-#: calendar/gui/e-itip-control.c:815
-msgid " Decline "
-msgstr " Avslå "
-
-#: calendar/gui/e-itip-control.c:816
-msgid " Tentative "
-msgstr " Tentativ "
-
-#: calendar/gui/e-itip-control.c:860
-msgid "Update Calendar"
-msgstr "Oppdater kalender"
-
-#: calendar/gui/e-itip-control.c:883
-msgid "Cancel Meeting"
-msgstr "Alys møte"
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, no-c-format
-msgid "%P %%"
-msgstr "%P %%"
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr "--til--"
-
-#: calendar/gui/e-itip-control.glade.h:4
-msgid "Calendar Message"
-msgstr "Kalendermelding"
-
-#: calendar/gui/e-itip-control.glade.h:5
-msgid "Date:"
-msgstr "Dato:"
-
-#: calendar/gui/e-itip-control.glade.h:8
-msgid "Loading calendar..."
-msgstr "Laster kalender..."
-
-#: calendar/gui/e-itip-control.glade.h:9
-msgid "Organizer:"
-msgstr "Organisator:"
-
-#: calendar/gui/e-itip-control.glade.h:10
-msgid "Server Message:"
-msgstr "Tjenermelding:"
-
-#: calendar/gui/e-itip-control.glade.h:11
-msgid "Summary:"
-msgstr "Sammendrag:"
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr "slutt-dato"
-
-#: calendar/gui/e-itip-control.glade.h:13
-msgid "date-start"
-msgstr "start-dato"
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-msgid "Attendee"
-msgstr "Deltaker"
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-msgid "Attendee address"
-msgstr "Deltakers adresse"
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-msgid "Attendees: "
-msgstr "Deltakere: "
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr ""
-"Avlys\n"
-"møte"
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-msgid "Chair"
-msgstr "Stol"
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-msgid "Meeting Invitations"
-msgstr "Møteinvitasjoner"
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr "Ikke-deltaker"
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr "Valgfri deltaker"
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-msgid "Organizer: "
-msgstr "Organisator: "
-
-#: calendar/gui/e-meeting-dialog.glade.h:14
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-"Publiser\n"
-"hendelse"
-
-#: calendar/gui/e-meeting-dialog.glade.h:16
-msgid "RSVP"
-msgstr "RSVP"
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid ""
-"Request\n"
-"Meeting"
-msgstr ""
-"Forespør\n"
-"møte"
-
-#: calendar/gui/e-meeting-dialog.glade.h:19
-msgid "Required Participant"
-msgstr ""
-"Obligatorisk\n"
-"deltaker"
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-msgid "Role"
-msgstr "Rolle"
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-msgid ""
-"Schedule\n"
-"Time"
-msgstr ""
-"Sett av\n"
-"tid"
-
-#: calendar/gui/e-meeting-dialog.glade.h:23 filter/libfilter-i18n.h:49
-#: mail/message-list.c:1081
-msgid "Status"
-msgstr "Status"
-
-#: calendar/gui/e-tasks.c:149 calendar/gui/e-tasks.c:469
-#: calendar/gui/e-tasks.c:502
-msgid "All"
-msgstr "Alle"
-
-#: calendar/gui/e-tasks.c:155
-msgid "Category:"
-msgstr "Kategori:"
-
-#: calendar/gui/e-tasks.c:298
-#, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "Kunne ikke laste oppgavene i `%s'"
-
-#: calendar/gui/e-tasks.c:310
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr "Metoden som er nødvendig for å laste `%s' er ikke støttet"
-
-#: calendar/gui/event-editor.c:377
-msgid "Edit Appointment"
-msgstr "Rediger avtale"
-
-#: calendar/gui/event-editor.c:449
-msgid "on"
-msgstr "på"
-
-#: calendar/gui/event-editor.c:474 filter/filter-datespec.c:81
-msgid "day"
-msgstr "dag"
-
-#: calendar/gui/event-editor.c:601
-msgid "on the"
-msgstr "den"
-
-#: calendar/gui/event-editor.c:608
-msgid "th"
-msgstr "de"
-
-#: calendar/gui/event-editor.c:754
-msgid "occurrences"
-msgstr "gjentakelser"
-
-#: calendar/gui/event-editor.c:871
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr ""
-"Denne avtalen har gjeninntreffelser som ikke kan redigeres av Evolution."
-
-#: calendar/gui/event-editor.c:1543
-#, c-format
-msgid " %d days"
-msgstr " %d dager"
-
-#: calendar/gui/event-editor.c:1545
-msgid " 1 day"
-msgstr " 1 dag"
-
-#: calendar/gui/event-editor.c:1548
-#, c-format
-msgid " %d weeks"
-msgstr " %d uker"
-
-#: calendar/gui/event-editor.c:1550
-msgid " 1 week"
-msgstr " 1 uke"
-
-#: calendar/gui/event-editor.c:1553
-#, c-format
-msgid " %d hours"
-msgstr " %d timer"
-
-#: calendar/gui/event-editor.c:1555
-msgid " 1 hour"
-msgstr " 1 time"
-
-#: calendar/gui/event-editor.c:1558
-#, c-format
-msgid " %d minutes"
-msgstr " %d minutter"
-
-#: calendar/gui/event-editor.c:1560
-msgid " 1 minute"
-msgstr " 1 minutt"
-
-#: calendar/gui/event-editor.c:1563
-#, c-format
-msgid " %d seconds"
-msgstr " %d sekunder"
-
-#: calendar/gui/event-editor.c:1565
-msgid " 1 second"
-msgstr " 1 sekund"
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1588
-msgid "Play a sound"
-msgstr "Spill en lyd"
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1591
-msgid "Show a dialog"
-msgstr "Vis en dialog"
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1594
-msgid "Send an email"
-msgstr "Send en melding"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1597
-msgid "Run a program"
-msgstr "Kjør et program"
-
-#: calendar/gui/event-editor.c:1612
-msgid " before start of appointment"
-msgstr " før avtalen starter"
-
-#: calendar/gui/event-editor.c:1614
-msgid " after start of appointment"
-msgstr " etter avtalens start"
-
-#: calendar/gui/event-editor.c:1622
-msgid " before end of appointment"
-msgstr " før avtalens slutt"
-
-#: calendar/gui/event-editor.c:1624
-msgid " after end of appointment"
-msgstr " etter avtalens slutt"
-
-#: calendar/gui/event-editor.c:3132 calendar/gui/print.c:1097
-#: calendar/gui/print.c:1099 calendar/gui/print.c:1100
-msgid "%a %b %d %Y"
-msgstr "%a %b %d %Y"
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr "Varer he_le dagen"
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-msgid "Appointment"
-msgstr "Avtale"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-msgid "Appointment Basics"
-msgstr "Grunnleggende om avtaler"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-msgid "Custom recurrence"
-msgstr "Egendefinert gjeninntreffelse"
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr "Hver"
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-msgid "Exceptions"
-msgstr "Unntak"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-msgid "Modify"
-msgstr "Endre"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-msgid "No recurrence"
-msgstr "Ingen gjeninntreffelse"
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-msgid "Preview"
-msgstr "Forhåndsvis"
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Recurrence"
-msgstr "Gjeninntreffelse"
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-msgid "Recurrence Rule"
-msgstr "Regel for gjenintreffelse"
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-msgid "Reminder"
-msgstr "Påminnelse"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-msgid "Settings..."
-msgstr "Innstillinger..."
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr "Enkel gjeninntreffelse"
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-msgid "_End time:"
-msgstr "S_lutt-tid:"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Start time:"
-msgstr "_Start-tid:"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Starting date:"
-msgstr "_Start dato:"
-
-#. Automatically generated. Do not edit.
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:2
-msgid "after"
-msgstr "etter"
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:6
-msgid "before"
-msgstr "før"
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "day(s)"
-msgstr "dag(er)"
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-msgid "end of appointment"
-msgstr "slutt på avtale"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "for"
-msgstr "for"
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr "for alltid"
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-msgid "hour(s)"
-msgstr "time(r)"
-
-#: calendar/gui/event-editor-dialog.glade.h:40 mail/mail-config.glade.h:87
-msgid "minute(s)"
-msgstr "minutt(er)"
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "month(s)"
-msgstr "måned(er)"
-
-#: calendar/gui/event-editor-dialog.glade.h:42
-msgid "start of appointment"
-msgstr "start på avtale"
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-msgid "until"
-msgstr "til"
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "week(s)"
-msgstr "uke(r)"
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "year(s)"
-msgstr "år"
-
-#: calendar/gui/e-week-view.c:3277 calendar/gui/e-week-view.c:3300
-msgid "New Appointment..."
-msgstr "Ny avtale..."
-
-#: calendar/gui/e-week-view.c:3313
-msgid "Delete All Occurrences"
-msgstr "Slett alle oppføringer"
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:342
-msgid "%d %B"
-msgstr "%d %B"
-
-#: calendar/gui/gnome-cal.c:234
-msgid "Summary contains"
-msgstr "Sammendrag inneholder"
-
-#: calendar/gui/gnome-cal.c:235
-msgid "Description contains"
-msgstr "Beskrivelse inneholder"
-
-#: calendar/gui/gnome-cal.c:236
-msgid "Comment contains"
-msgstr "Kommentar inneholder"
-
-#: calendar/gui/gnome-cal.c:237
-msgid "Has category"
-msgstr "Har kategori"
-
-#: calendar/gui/gnome-cal.c:840
-#, c-format
-msgid "Could not open the folder in `%s'"
-msgstr "Kunne ikke åpne mappen i `%s'"
-
-#: calendar/gui/gnome-cal.c:851
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr "Metoden som er nødvendig for å åpne `%s' er ikke støttet"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr "Eksempel på Bonobo-kontroll som viser en kalender."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-msgid "Evolution calendar executive summary component."
-msgstr "Evolution komponent for kalendersammendrag."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr "Evolution kalender iTip/iMip-visning"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr "Evolution komponent for håndtering av kalenderen."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-msgid "Factory for the Calendar Summary component."
-msgstr "Factory for kalenderens sammendragskomponent."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-msgid "Factory for the Evolution calendar component."
-msgstr "Factory for Evolution kalender-komponent."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-msgid "Factory for the calendar iTip view control"
-msgstr "Factory for kalenderens iTip visningskontroll"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-msgid "Factory for the sample Calendar control"
-msgstr "Factory for eksempelkontroll for kalender"
-
-#: calendar/gui/goto-dialog.glade.h:1
-msgid "April"
-msgstr "April"
-
-#: calendar/gui/goto-dialog.glade.h:2
-msgid "August"
-msgstr "August"
-
-#: calendar/gui/goto-dialog.glade.h:3
-msgid "December"
-msgstr "Desember"
-
-#: calendar/gui/goto-dialog.glade.h:4
-msgid "February"
-msgstr "Februar"
-
-#: calendar/gui/goto-dialog.glade.h:5
-msgid "Go To Date"
-msgstr "Gå til dato"
-
-#: calendar/gui/goto-dialog.glade.h:6
-msgid "Go To Today"
-msgstr "Gå til idag"
-
-#: calendar/gui/goto-dialog.glade.h:7
-msgid "January"
-msgstr "Januar"
-
-#: calendar/gui/goto-dialog.glade.h:8
-msgid "July"
-msgstr "Juli"
-
-#: calendar/gui/goto-dialog.glade.h:9
-msgid "June"
-msgstr "Juni"
-
-#: calendar/gui/goto-dialog.glade.h:10
-msgid "March"
-msgstr "Mars"
-
-#: calendar/gui/goto-dialog.glade.h:11
-msgid "May"
-msgstr "Mai"
-
-#: calendar/gui/goto-dialog.glade.h:12
-msgid "November"
-msgstr "November"
-
-#: calendar/gui/goto-dialog.glade.h:13
-msgid "October"
-msgstr "Oktober"
-
-#: calendar/gui/goto-dialog.glade.h:14
-msgid "September"
-msgstr "September"
-
-#: calendar/gui/print.c:300
-msgid "1st"
-msgstr "1"
-
-#: calendar/gui/print.c:300
-msgid "2nd"
-msgstr "2"
-
-#: calendar/gui/print.c:300
-msgid "3rd"
-msgstr "3"
-
-#: calendar/gui/print.c:300
-msgid "4th"
-msgstr "4"
-
-#: calendar/gui/print.c:300
-msgid "5th"
-msgstr "5"
-
-#: calendar/gui/print.c:301
-msgid "6th"
-msgstr "6"
-
-#: calendar/gui/print.c:301
-msgid "7th"
-msgstr "7"
-
-#: calendar/gui/print.c:301
-msgid "8th"
-msgstr "8"
-
-#: calendar/gui/print.c:301
-msgid "9th"
-msgstr "9"
-
-#: calendar/gui/print.c:301
-msgid "10th"
-msgstr "10"
-
-#: calendar/gui/print.c:302
-msgid "11th"
-msgstr "11"
-
-#: calendar/gui/print.c:302
-msgid "12th"
-msgstr "12"
-
-#: calendar/gui/print.c:302
-msgid "13th"
-msgstr "13"
-
-#: calendar/gui/print.c:302
-msgid "14th"
-msgstr "14"
-
-#: calendar/gui/print.c:302
-msgid "15th"
-msgstr "15"
-
-#: calendar/gui/print.c:303
-msgid "16th"
-msgstr "16"
-
-#: calendar/gui/print.c:303
-msgid "17th"
-msgstr "17"
-
-#: calendar/gui/print.c:303
-msgid "18th"
-msgstr "18"
-
-#: calendar/gui/print.c:303
-msgid "19th"
-msgstr "19"
-
-#: calendar/gui/print.c:303
-msgid "20th"
-msgstr "20"
-
-#: calendar/gui/print.c:304
-msgid "21st"
-msgstr "21"
-
-#: calendar/gui/print.c:304
-msgid "22nd"
-msgstr "22"
-
-#: calendar/gui/print.c:304
-msgid "23rd"
-msgstr "23"
-
-#: calendar/gui/print.c:304
-msgid "24th"
-msgstr "24"
-
-#: calendar/gui/print.c:304
-msgid "25th"
-msgstr "25"
-
-#: calendar/gui/print.c:305
-msgid "26th"
-msgstr "26"
-
-#: calendar/gui/print.c:305
-msgid "27th"
-msgstr "27"
-
-#: calendar/gui/print.c:305
-msgid "28th"
-msgstr "28"
-
-#: calendar/gui/print.c:305
-msgid "29th"
-msgstr "29"
-
-#: calendar/gui/print.c:305
-msgid "30th"
-msgstr "30"
-
-#: calendar/gui/print.c:306
-msgid "31st"
-msgstr "31"
-
-#: calendar/gui/print.c:362
-msgid "Su"
-msgstr "Søn"
-
-#: calendar/gui/print.c:362
-msgid "Mo"
-msgstr "Man"
-
-#: calendar/gui/print.c:362
-msgid "Tu"
-msgstr "Tir"
-
-#: calendar/gui/print.c:362
-msgid "We"
-msgstr "Ons"
-
-#: calendar/gui/print.c:362
-msgid "Th"
-msgstr "Tor"
-
-#: calendar/gui/print.c:362
-msgid "Fr"
-msgstr "Fre"
-
-#: calendar/gui/print.c:362
-msgid "Sa"
-msgstr "Lør"
-
-#. Day
-#: calendar/gui/print.c:1078
-msgid "Current day (%a %b %d %Y)"
-msgstr "I dag (%a %b %d %Y)"
-
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1096
-msgid "%a %b %d"
-msgstr "%a %b %d"
-
-#: calendar/gui/print.c:1093
-msgid "%a %d %Y"
-msgstr "%a %d %Y"
-
-#: calendar/gui/print.c:1104
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr "Denne uken (%s - %s)"
-
-#. Month
-#: calendar/gui/print.c:1112
-msgid "Current month (%b %Y)"
-msgstr "Denne måneden (%b %Y)"
-
-#. Year
-#: calendar/gui/print.c:1119
-msgid "Current year (%Y)"
-msgstr "Dette året (%Y)"
-
-#: calendar/gui/print.c:1156
-msgid "Print Calendar"
-msgstr "Skriv ut kalender"
-
-#: calendar/gui/print.c:1321 mail/mail-callbacks.c:1447
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:24
-msgid "Print Preview"
-msgstr "Forhåndsvisning av utskrift"
-
-#: calendar/gui/tasks-control.c:108
-msgid "The URI of the tasks folder to display"
-msgstr "URIen til oppgavemappen skal vises"
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-"Evolution har utført automatisk migrasjon av oppgavene fra din kalendermappe "
-"til den nye oppgaver-mappen."
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-"Evolution har forsøkt å migrere oppgavene som var i din kalendermappe til "
-"den nye oppgavemappen.\n"
-"Noen av oppgavene kunne ikke migreres, så denne prosessen vil kunne forsøkes "
-"igjen i fremtiden."
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-"Kunne ikke åpne `%s'; ingen oppføringer fra kalendermappen vil flyttes til "
-"oppgavemappen."
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-"Metoden som kreves for å laste `%s' er ikke støttet; ingen oppføringer fra "
-"kalendermappen vil bli migrert til oppgavemappen."
-
-#: calendar/gui/weekday-picker.c:315 calendar/gui/weekday-picker.c:410
-msgid "SMTWTFS"
-msgstr "SMTOTFL"
-
-#: calendar/pcs/query.c:218
-msgid "time-now expects 0 arguments"
-msgstr "tid-nå forventer 0 argumenter"
-
-#: calendar/pcs/query.c:242
-msgid "make-time expects 1 argument"
-msgstr "lag-tid forventer 1 argument"
-
-#: calendar/pcs/query.c:247
-msgid "make-time expects argument 1 to be a string"
-msgstr "lag-tid forventer at argument 1 er en streng"
-
-#: calendar/pcs/query.c:255
-msgid "make-time argument 1 must be an ISO 8601 date/time string"
-msgstr ""
-
-#: calendar/pcs/query.c:281
-msgid "time-add-day expects 2 arguments"
-msgstr ""
-
-#: calendar/pcs/query.c:286
-msgid "time-add-day expects argument 1 to be a time_t"
-msgstr ""
-
-#: calendar/pcs/query.c:293
-msgid "time-add-day expects argument 2 to be an integer"
-msgstr ""
-
-#: calendar/pcs/query.c:318
-msgid "time-day-begin expects 1 argument"
-msgstr ""
-
-#: calendar/pcs/query.c:323
-msgid "time-day-begin expects argument 1 to be a time_t"
-msgstr ""
-
-#: calendar/pcs/query.c:348
-msgid "time-day-end expects 1 argument"
-msgstr ""
-
-#: calendar/pcs/query.c:353
-msgid "time-day-end expects argument 1 to be a time_t"
-msgstr ""
-
-#: calendar/pcs/query.c:389
-msgid "get-vtype expects 0 arguments"
-msgstr ""
-
-#: calendar/pcs/query.c:472
-msgid "occur-in-time-range? expects 2 arguments"
-msgstr ""
-
-#: calendar/pcs/query.c:477
-msgid "occur-in-time-range? expects argument 1 to be a time_t"
-msgstr ""
-
-#: calendar/pcs/query.c:484
-msgid "occur-in-time-range? expects argument 2 to be a time_t"
-msgstr ""
-
-#: calendar/pcs/query.c:611
-msgid "contains? expects 2 arguments"
-msgstr "inneholder? forventer 2 argumenter"
-
-#: calendar/pcs/query.c:616
-msgid "contains? expects argument 1 to be a string"
-msgstr ""
-
-#: calendar/pcs/query.c:623
-msgid "contains? expects argument 2 to be a string"
-msgstr ""
-
-#: calendar/pcs/query.c:640
-msgid ""
-"contains? expects argument 1 to be one of \"any\", \"summary\", "
-"\"description\""
-msgstr ""
-
-#: calendar/pcs/query.c:678
-msgid "has-categories? expects at least 1 argument"
-msgstr ""
-
-#: calendar/pcs/query.c:684
-msgid "has-categories? expects all arguments to be strings"
-msgstr ""
-
-#: calendar/pcs/query.c:932
-msgid "Evaluation of the search expression did not yield a boolean value"
-msgstr "Evaluering av søkeuttrykket ga ikke en boolsk verdi"
-
-#: camel/camel-cipher-context.c:171
-msgid "Signing is not supported by this cipher"
-msgstr "Signering er ikke støttet av dette cipheret"
-
-#: camel/camel-cipher-context.c:211
-msgid "Clearsigning is not supported by this cipher"
-msgstr "\"Clearsigning\" er ikke støttet av dette cipheret"
-
-#: camel/camel-cipher-context.c:251
-msgid "Verifying is not supported by this cipher"
-msgstr "Verifisering er ikke støttet av dette cipheret"
-
-#: camel/camel-cipher-context.c:294
-msgid "Encryption is not supported by this cipher"
-msgstr "Kryptering er ikke støttet av dette cipheret"
-
-#: camel/camel-cipher-context.c:336
-msgid "Decryption is not supported by this cipher"
-msgstr "Dekryptering er ikke støttet av dette cipheret"
-
-#: camel/camel-disco-store.c:271
-msgid "You must be working online to complete this operation"
-msgstr "Du må arbeide tilknyttet for å fullføre denne operasjonen"
-
-#: camel/camel-filter-driver.c:534 camel/camel-filter-driver.c:543
-msgid "Syncing folders"
-msgstr "Synkroniserer mapper"
-
-#: camel/camel-filter-driver.c:643
-msgid "Unable to open spool folder"
-msgstr "Kunne ikke åpne spool-mappen"
-
-#: camel/camel-filter-driver.c:652
-msgid "Unable to process spool folder"
-msgstr "Kan ikke prosessere spool-mappen"
-
-#: camel/camel-filter-driver.c:666
-msgid "Getting message %d (%d%%)"
-msgstr "Henter melding %d (%d%%)"
-
-#: camel/camel-filter-driver.c:670 camel/camel-filter-driver.c:679
-#, c-format
-msgid "Failed message %d"
-msgstr "Feilet melding %d"
-
-#: camel/camel-filter-driver.c:671
-msgid "Cannot open message"
-msgstr "Kan ikke åpne melding"
-
-#: camel/camel-filter-driver.c:690 camel/camel-filter-driver.c:788
-msgid "Syncing folder"
-msgstr "Synkroniserer mappe"
-
-#: camel/camel-filter-driver.c:694 camel/camel-filter-driver.c:793
-msgid "Complete"
-msgstr "Fullført"
-
-#: camel/camel-filter-driver.c:748
-#, c-format
-msgid "Getting message %d of %d"
-msgstr "Henter melding %d av %d"
-
-#: camel/camel-filter-driver.c:753 camel/camel-filter-driver.c:771
-#, c-format
-msgid "Failed at message %d of %d"
-msgstr "Feilet på melding %d av %d"
-
-#: camel/camel-filter-driver.c:866
-#, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr "Feil under lesing av filter: %s: %s"
-
-#: camel/camel-filter-driver.c:871
-#, c-format
-msgid "Error executing filter: %s: %s"
-msgstr "Feil under kjøring av filter: %s: %s"
-
-#: camel/camel-filter-search.c:439 camel/camel-filter-search.c:445
-#, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr "Feil under lagring av filtersøk: %s: %s"
-
-#: camel/camel-folder-search.c:328
-#, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-"Kan ikke tolke uttrykket: %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:338
-#, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr ""
-"Feil under kjøring av søkeuttrykket %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:485 camel/camel-folder-search.c:513
-msgid "(match-all) requires a single bool result"
-msgstr "(treff-alle) krever et enkelt bolsk resultat"
-
-#: camel/camel-folder-search.c:559
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr "Utfører spørring på ukjent header: %s"
-
-#: camel/camel-folder-search.c:670 camel/camel-folder-search.c:714
-msgid "Invalid type in body-contains, expecting string"
-msgstr "Ugyldig type i kropp-inneholder, forventer streng"
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:92 camel/camel-lock.c:111 camel/camel-movemail.c:138
-#: camel/camel-movemail.c:185
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "Kunne ikke opprette låsfil for %s: %s"
-
-#: camel/camel-lock.c:151 camel/camel-movemail.c:219
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr "Tidsavbrudd under venting på låsfil for %s. Prøv igjen senere."
-
-#: camel/camel-lock.c:201
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr "Feil under låsing ved bruk av fcntl(2): %s"
-
-#: camel/camel-lock.c:255
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr "Feil under låsing ved bruk av flock(2): %s"
-
-#: camel/camel-movemail.c:101
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr "Kunne ikke sjekke e-post fil %s: %s"
-
-#: camel/camel-movemail.c:148
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr "Kunne ikke åpne postfil %s: %s"
-
-#: camel/camel-movemail.c:158
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr "Kunne ikke åpne midlertidig postfil %s: %s"
-
-#: camel/camel-movemail.c:199
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr "Kunne ikke sjekke låsfil for %s: %s"
-
-#: camel/camel-movemail.c:245
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr "Feil under lesing av postfil: %s"
-
-#: camel/camel-movemail.c:256
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr "Feil under skriving av midlertidig fil: %s"
-
-#: camel/camel-movemail.c:274
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr "Kunne ikke lagre post i midlertidig fil %s: %s"
-
-#: camel/camel-movemail.c:306
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr "Kunne ikke opprette rør: %s"
-
-#: camel/camel-movemail.c:318
-#, c-format
-msgid "Could not fork: %s"
-msgstr "Kunne ikke kjøre fork: %s"
-
-#: camel/camel-movemail.c:356
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr "Movemail-programmet feilet: %s"
-
-#: camel/camel-movemail.c:357
-msgid "(Unknown error)"
-msgstr "(Ukjent feil)"
-
-#: camel/camel-movemail.c:587
-#, c-format
-msgid "Error copying mail temp file: %s"
-msgstr "Feil under kopiering midlertidig meldingsfil: %s"
-
-#: camel/camel-pgp-context.c:190
-#, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr "Vennligst skriv inn din %s passphrase for %s"
-
-#: camel/camel-pgp-context.c:193
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr "Vennligst skriv inn din %s passphrase"
-
-#: camel/camel-pgp-context.c:511
-msgid "No plaintext to sign."
-msgstr "Ingen klartekst å signere."
-
-#: camel/camel-pgp-context.c:518 camel/camel-pgp-context.c:690
-#: camel/camel-pgp-context.c:1057 camel/camel-pgp-context.c:1269
-msgid "No password provided."
-msgstr "Ingen passord gitt."
-
-#: camel/camel-pgp-context.c:524 camel/camel-pgp-context.c:696
-#: camel/camel-pgp-context.c:879 camel/camel-pgp-context.c:1064
-#: camel/camel-pgp-context.c:1276
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr "Kunne ikke opprette rør til GPG/PGP: %s"
-
-#: camel/camel-pgp-context.c:683
-msgid "No plaintext to clearsign."
-msgstr "Ingen klartekst å kjøre \"plainsign\" på."
-
-#: camel/camel-pgp-context.c:873
-msgid "No plaintext to verify."
-msgstr "Ingen klartekst å verifisere."
-
-#: camel/camel-pgp-context.c:890
-#, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "Kunne ikke opprette midlertidig fil: %s"
-
-#: camel/camel-pgp-context.c:1047
-msgid "No plaintext to encrypt."
-msgstr "Ingen klartekst å kryptere."
-
-#: camel/camel-pgp-context.c:1073
-msgid "No recipients specified"
-msgstr "Ingen mottakere spesifisert"
-
-#: camel/camel-pgp-context.c:1261
-msgid "No ciphertext to decrypt."
-msgstr "Ingen ciphertekst å dekryptere."
-
-#: camel/camel-provider.c:131
-#, c-format
-msgid "Could not load %s: Module loading not supported on this system."
-msgstr "Kunne ikke laste %s: Modullasting er ikke støttet på dette systemet."
-
-#: camel/camel-provider.c:140
-#, c-format
-msgid "Could not load %s: %s"
-msgstr "Kunne ikke laste %s: %s"
-
-#: camel/camel-provider.c:148
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr "Kunne ikke laste %s: Ingen initieringskode i modulen."
-
-#: camel/camel-remote-store.c:191
-#, c-format
-msgid "%s server %s"
-msgstr "%s-tjener %s"
-
-#: camel/camel-remote-store.c:195
-#, c-format
-msgid "%s service for %s on %s"
-msgstr "%s-tjeneste for %s på %s"
-
-#: camel/camel-remote-store.c:252
-msgid "Connection cancelled"
-msgstr "Tilkobling avbrutt"
-
-#: camel/camel-remote-store.c:255
-#: camel/providers/smtp/camel-smtp-transport.c:269
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr "Kunne ikke koble til %s (port %d): %s"
-
-#: camel/camel-remote-store.c:256
-msgid "(unknown host)"
-msgstr "(ukjent vert)"
-
-#: camel/camel-remote-store.c:337 camel/camel-remote-store.c:399
-#: camel/camel-remote-store.c:470
-#: camel/providers/imap/camel-imap-command.c:287
-msgid "Operation cancelled"
-msgstr "Opreasjon avbrutt"
-
-#: camel/camel-remote-store.c:476
-msgid "Server unexpectedly disconnected"
-msgstr "Tjener koblet fra uventet."
-
-#: camel/camel-sasl-anonymous.c:33
-msgid "Anonymous"
-msgstr "Anonym"
-
-#: camel/camel-sasl-anonymous.c:35
-msgid "This option will connect to the server using an anonymous login."
-msgstr "Dette valget vil koble til tjeneren med anonym pålogging."
-
-#: camel/camel-sasl-anonymous.c:110 camel/camel-sasl-plain.c:87
-msgid "Authentication failed."
-msgstr "Autentisering feilet."
-
-#: camel/camel-sasl-anonymous.c:119
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-"Ugyldig informasjon i sporing av e-postadresse:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:131
-#, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr ""
-"Ugyldig ugjennomsiktig sporingsinformasjon:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:143
-#, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr ""
-"Ugyldig sporingsinformasjon:\n"
-"%s"
-
-#: camel/camel-sasl-cram-md5.c:35
-msgid "CRAM-MD5"
-msgstr "CRAM-MD5"
-
-#: camel/camel-sasl-cram-md5.c:37
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-"Dette alternativet kobler til tjeneren med bruk av CRAM-MD5-passord, hvis "
-"tjeneren støtter det."
-
-#: camel/camel-sasl-digest-md5.c:43
-msgid "DIGEST-MD5"
-msgstr "DIGEST-MD5"
-
-#: camel/camel-sasl-digest-md5.c:45
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-"Dette alternativet kobler til tjeneren med bruk av DIGEST-MD5-passord, hvis "
-"tjeneren støtter det."
-
-#: camel/camel-sasl-digest-md5.c:810
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr "Spørring fra tjener for lang (>2048 oktetter)\n"
-
-#: camel/camel-sasl-digest-md5.c:819
-msgid "Server challenge invalid\n"
-msgstr "Ugyldig spørring fra tjener\n"
-
-#: camel/camel-sasl-digest-md5.c:825
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr ""
-"Spørring fra tjener inneholdt ugyldig tegn for \"Kvalitet for beskyttelse\"\n"
-
-#: camel/camel-sasl-digest-md5.c:847
-msgid "Server response did not contain authorization data\n"
-msgstr "Svar fra tjener inneholdt ikke autorisasjonsdata\n"
-
-#: camel/camel-sasl-digest-md5.c:865
-msgid "Server response contained incomplete authorization data\n"
-msgstr "Svar fra tjener inneholdt ukomplette autorisasjonsdata\n"
-
-#: camel/camel-sasl-digest-md5.c:875
-msgid "Server response does not match\n"
-msgstr "Svar fra tjener er ikke likt\n"
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "Kerberos 4"
-msgstr "Kerberos 4"
-
-#: camel/camel-sasl-kerberos4.c:42
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr ""
-"Dette alternativet kobler til tjeneren med bruk av Kerberos 4-autentisering."
-
-#: camel/camel-sasl-kerberos4.c:161
-#, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr ""
-"Fikk ikke Kerberos \"ticket\":\n"
-"%s"
-
-#: camel/camel-sasl-kerberos4.c:218
-#: camel/providers/imap/camel-imap-store.c:433
-msgid "Bad authentication response from server."
-msgstr "Ugyldig svar på autentisering fra tjener."
-
-#: camel/camel-sasl-login.c:32
-msgid "NT Login"
-msgstr "NT-pålogging"
-
-#: camel/camel-sasl-login.c:34 camel/camel-sasl-plain.c:34
-msgid "This option will connect to the server using a simple password."
-msgstr "Dette valget vil koble til tjeneren ved bruk av et passord."
-
-#: camel/camel-sasl-login.c:127
-msgid "Unknown authentication state."
-msgstr "Ukjent autentiseringstilstand."
-
-#: camel/camel-search-private.c:111
-#, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr "Kompilering av regulært uttrykk feilet: %s: %s"
-
-#: camel/camel-service.c:154
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr "URL '%s' må inneholde et brukernavn"
-
-#: camel/camel-service.c:162
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr "URL '%s' må inneholde et vertsnavn"
-
-#: camel/camel-service.c:170
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr "URL '%s' må inneholde en sti"
-
-#: camel/camel-service.c:548
-#, c-format
-msgid "Resolving: %s"
-msgstr "Finner: \"%s\""
-
-#: camel/camel-service.c:575
-#, c-format
-msgid "Failure in name lookup: %s"
-msgstr "Feil i navneoppslag: %s"
-
-#: camel/camel-service.c:600
-#, c-format
-msgid "Host lookup failed: %s: host not found"
-msgstr "Vertsoppslag feilet: %s: vert ikke funnet"
-
-#: camel/camel-service.c:602
-#, c-format
-msgid "Host lookup failed: %s: unknown reason"
-msgstr "Vertsoppslag feilet: %s: ukjent årsak"
-
-#: camel/camel-session.c:68
-msgid "Virtual folder email provider"
-msgstr "E-post-tilbyder for virtuelle mapper"
-
-#: camel/camel-session.c:70
-msgid "For reading mail as a query of another set of folders"
-msgstr "For lesing av e-post som en spørring på et annet sett med mapper"
-
-#: camel/camel-session.c:295 camel/camel-session.c:364
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr "Ingen tilbyder tilgjengelig for protokoll `%s'"
-
-#: camel/camel-session.c:479
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"Kan ikke opprette katalog %s:\n"
-"%s"
-
-#: camel/camel-smime-context.c:194
-#, c-format
-msgid "Please enter your password for %s"
-msgstr "Vennligst skriv inn ditt passord for %s"
-
-#: camel/camel-smime-context.c:210
-msgid "Error hashing password."
-msgstr "Feil under hashing av passord."
-
-#: camel/camel-smime-context.c:219
-msgid "Invalid password."
-msgstr "Ugyldig passord"
-
-#: camel/camel-smime-context.c:327
-#, c-format
-msgid "Could not sign: certificate not found for \"%s\"."
-msgstr "Kunne ikke signere: sertifikat ikke funnet for \"%s\"."
-
-#: camel/camel-smime-context.c:343
-msgid "Could not sign: failed to create content info."
-msgstr "Kan ikke signere: klarte ikke å opprette innholdsinformasjon."
-
-#: camel/camel-smime-context.c:350
-msgid "Could not sign: failed to create signing context."
-msgstr "Kunne ikke signere: klarte ikke å opprette signeringskontekst."
-
-#: camel/camel-smime-context.c:356
-msgid "Could not sign: failed to create signature."
-msgstr "Kunne ikke signere: klarte ikke å opprette signatur."
-
-#: camel/camel-smime-context.c:383
-msgid "'clearsign' is not supported by S/MIME."
-msgstr "'klarsignering' er ikke støttet av dette S/MIME."
-
-#: camel/camel-smime-context.c:528
-msgid "Could not encrypt: failed to create enveloped data."
-msgstr "Kunne ikke kryptere: feil under oppretting av konvolutert data."
-
-#: camel/camel-smime-context.c:535
-msgid "Could not encrypt: failed to create encryption context."
-msgstr "Kunne ikke kryptere: klarte ikke å opprette krypteringskontekst."
-
-#: camel/camel-smime-context.c:570
-#, c-format
-msgid "Could not encrypt data: invalid user key: \"%s\"."
-msgstr "Kunne ikke kryptere data: ugyldig nøkkel for bruker: \"%s\"."
-
-#: camel/camel-smime-context.c:576
-msgid "Could not encrypt: encoding failed."
-msgstr "Kunne ikke kryptere: koding feilet."
-
-#: camel/camel-smime-context.c:626
-msgid "Failed to decrypt: Unknown"
-msgstr "Klarte ikke å dekryptere: Ukjent"
-
-#. Fill in the new fields
-#: camel/camel-store.c:378 mail/mail-ops.c:1007 mail/mail-ops.c:1014
-#: mail/mail-ops.c:1032 mail/mail-ops.c:1033
-msgid "Trash"
-msgstr "Søppel"
-
-#: camel/camel-tcp-stream-ssl.c:348
-#, c-format
-msgid ""
-"EMail: %s\n"
-"Common Name: %s\n"
-"Organization Unit: %s\n"
-"Organization: %s\n"
-"Locality: %s\n"
-"State: %s\n"
-"Country: %s"
-msgstr ""
-"E-post: %s\n"
-"Vanlig navn: %s\n"
-"Organisasjonsenhet: %s\n"
-"Organisasjon: %s\n"
-"Lokasjon: %s\n"
-"Stat: %s\n"
-"Land: %s"
-
-#. construct our user prompt
-#: camel/camel-tcp-stream-openssl.c:428 camel/camel-tcp-stream-ssl.c:364
-#, c-format
-msgid ""
-"Bad certificate from %s:\n"
-"\n"
-"%s\n"
-"\n"
-"Do you wish to accept anyway?"
-msgstr ""
-"Ugyldig sertifikat fra %s:\n"
-"\n"
-"%s\n"
-"\n"
-"Vil du akseptere likevel?"
-
-#: camel/camel-tcp-stream-openssl.c:423
-#, c-format
-msgid ""
-"Issuer: %s\n"
-"Subject: %s"
-msgstr ""
-"Utsteder: %s\n"
-"Emne: %s"
-
-#: camel/camel-url.c:289
-#, c-format
-msgid "Could not parse URL `%s'"
-msgstr "Kunne ikke tolke URL `%s'"
-
-#: camel/camel-vee-folder.c:451
-#, c-format
-msgid "No such message %s in %s"
-msgstr "Ingen slik melding %s i %s"
-
-#: camel/camel-vee-folder.c:546
-#, c-format
-msgid "No such message: %s"
-msgstr "Ingen slik melding: %s"
-
-#: camel/camel-vtrash-folder.c:109
-msgid "You cannot copy messages from this trash folder."
-msgstr "Du kan ikke kopiere meldinger fra denne søppel-katalogen."
-
-#: camel/providers/imap/camel-imap-message-cache.c:150
-#, c-format
-msgid "Could not open cache directory: %s"
-msgstr "Kan ikke åpne cache-katalog: %s"
-
-#: camel/providers/imap/camel-imap-command.c:232
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "Uventet svar fra IMAP-tjener: %s"
-
-#: camel/providers/imap/camel-imap-command.c:240
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr "IMAP-kommando feilet: %s"
-
-#: camel/providers/imap/camel-imap-command.c:241 shell/e-storage.c:481
-msgid "Unknown error"
-msgstr "Ukjent feil"
-
-#: camel/providers/imap/camel-imap-command.c:295
-msgid "Server response ended too soon."
-msgstr "Svar fra tjener ble avsluttet for tidlig."
-
-#: camel/providers/imap/camel-imap-command.c:487
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr "Svar fra IMAP-tjener inneholdt ikke %s-informasjon"
-
-#: camel/providers/imap/camel-imap-command.c:524
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr "Uventet svar 'OK' fra IMAP-tjener: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:172
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr "Kan ikke opprette katalog %s: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:191
-#, c-format
-msgid "Could not load summary for %s"
-msgstr "Kunne ikke laste sammendrag for %s"
-
-#: camel/providers/imap/camel-imap-folder.c:364
-msgid "Scanning IMAP folder"
-msgstr "Skanner IMAP-mappe"
-
-#: camel/providers/imap/camel-imap-folder.c:1047
-#: camel/providers/imap/camel-imap-folder.c:1281
-msgid "This message is not currently available"
-msgstr "Denne meldingen er ikke tilgjengelig"
-
-#: camel/providers/imap/camel-imap-folder.c:1075
-#: camel/providers/imap/camel-imap-folder.c:1314
-msgid "Could not find message body in FETCH response."
-msgstr "Kunne ikke finne meldingskropp i FETCH-svar."
-
-#: camel/providers/imap/camel-imap-provider.c:43 mail/mail-config.glade.h:13
-msgid "Checking for new mail"
-msgstr "Ser etter nye meldinger"
-
-#: camel/providers/imap/camel-imap-provider.c:45
-msgid "Check for new messages in all folders"
-msgstr "Se etter nye meldinger i alle mapper"
-
-#: camel/providers/imap/camel-imap-provider.c:48 shell/e-shell-view.c:598
-msgid "Folders"
-msgstr "Mapper"
-
-#: camel/providers/imap/camel-imap-provider.c:50
-msgid "Show only subscribed folders"
-msgstr "Vis kun abonnerte mapper"
-
-#: camel/providers/imap/camel-imap-provider.c:52
-msgid "Override server-supplied folder namespace"
-msgstr "Overstyr tjeners navneområde for mapper"
-
-#: camel/providers/imap/camel-imap-provider.c:54
-msgid "Namespace"
-msgstr "Navneområde"
-
-#: camel/providers/imap/camel-imap-provider.c:57
-msgid "Apply filters to new messages in INBOX on this server"
-msgstr "Bruk filtre for nye meldinger i INNBOKS på denne tjeneren"
-
-#: camel/providers/imap/camel-imap-provider.c:63
-msgid "IMAPv4"
-msgstr "IMAPv4"
-
-#: camel/providers/imap/camel-imap-provider.c:65
-msgid "For reading and storing mail on IMAP servers."
-msgstr "For lesing og lagring av e-post på IMAP-tjenere."
-
-#: camel/providers/imap/camel-imap-provider.c:82
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr ""
-"Dette valget vil la deg koble til en IMAP-tjener ved å bruke et "
-"klartekst-passord."
-
-#: camel/providers/imap/camel-imap-store.c:456
-#, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr "IMAP-tjener %s støtter ikke etterspurt autentiseringstype %s"
-
-#: camel/providers/imap/camel-imap-store.c:466
-#: camel/providers/smtp/camel-smtp-transport.c:366
-#, c-format
-msgid "No support for authentication type %s"
-msgstr "Ingen støtte for autentiseringstype %s"
-
-#: camel/providers/imap/camel-imap-store.c:490
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr "%sVennligst skriv inn IMAP-passord for %s@%s"
-
-#: camel/providers/imap/camel-imap-store.c:505
-#: camel/providers/smtp/camel-smtp-transport.c:410
-msgid "You didn't enter a password."
-msgstr "Du skrev ikke inn et passord."
-
-#: camel/providers/imap/camel-imap-store.c:531
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Kunne ikke autentisere mot IMAP-tjener.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/imap/camel-imap-store.c:803 mail/mail-local.c:334
-#, c-format
-msgid "No such folder %s"
-msgstr "Mappen %s eksisterer ikke"
-
-#: camel/providers/local/camel-local-provider.c:39
-msgid "MH-format mail directories"
-msgstr "E-postkataloger i MH-format"
-
-#: camel/providers/local/camel-local-provider.c:40
-msgid "For storing local mail in MH-like mail directories"
-msgstr "For lagring av lokal e-post i MH-lignende meldingskataloger "
-
-#: camel/providers/local/camel-local-provider.c:49
-msgid "Standard Unix mailbox file"
-msgstr "Standard Unix postboksfil"
-
-#: camel/providers/local/camel-local-provider.c:50
-msgid "For storing local mail in standard mbox format"
-msgstr "For lagring av lokal e-post i standard mbox format"
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "Qmail maildir-format mail files"
-msgstr "Qmail e-post filer i maildir-format"
-
-#: camel/providers/local/camel-local-provider.c:60
-msgid "For storing local mail in qmail maildir directories"
-msgstr "For lagring av lokal e-post i qmail meldingskataloger"
-
-#: camel/providers/local/camel-local-store.c:127
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr "Lagerrot %s er ikke en absolutt sti"
-
-#: camel/providers/local/camel-local-store.c:134
-#, c-format
-msgid "Store root %s is not a regular directory"
-msgstr "Lagerrot %s er ikke en vanlig katalog"
-
-#: camel/providers/local/camel-local-store.c:142
-#: camel/providers/local/camel-local-store.c:158
-#, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "Finner ikke mappe: %s: %s"
-
-#: camel/providers/local/camel-local-store.c:173
-msgid "Local stores do not have an inbox"
-msgstr "Lokalt lager har ikke en innboks"
-
-#: camel/providers/local/camel-local-store.c:183
-#, c-format
-msgid "Local mail file %s"
-msgstr "Lokal e-post-fil %s"
-
-#: camel/providers/local/camel-local-store.c:237
-#, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr "Kunne ikke endre navn på mappe %s til %s: %s"
-
-#: camel/providers/local/camel-local-store.c:279
-#, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr "Kunne ikke slette sammendragsfil for mappe `%s': %s"
-
-#: camel/providers/local/camel-local-store.c:289
-#, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr "Kunne ikke slette indeksfil for mappe `%s': %s"
-
-#: camel/providers/local/camel-local-summary.c:404
-msgid "Unable to add message to summary: unknown reason"
-msgstr "Kunne ikke legge til melding i sammendraget: ukjent grunn"
-
-#: camel/providers/local/camel-maildir-folder.c:150
-#: camel/providers/local/camel-maildir-folder.c:158
-#: camel/providers/local/camel-maildir-folder.c:169
-#, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr "Kan ikke legge til melding i maildir mappe: %s: %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-maildir-folder.c:209
-#: camel/providers/local/camel-maildir-folder.c:217
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#: camel/providers/local/camel-mh-folder.c:194
-#: camel/providers/local/camel-mh-folder.c:202
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-"Kan ikke hente melding: %s\n"
-" %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-msgid "No such message"
-msgstr "Ingen slik melding"
-
-#: camel/providers/local/camel-maildir-folder.c:218
-#: camel/providers/local/camel-mh-folder.c:203
-msgid "Invalid message contents"
-msgstr "Ugyldig meldingsinnhold"
-
-#: camel/providers/local/camel-maildir-store.c:96
-#: camel/providers/local/camel-mh-store.c:90
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-"Kan ikke åpne mappe `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:100
-#: camel/providers/local/camel-mbox-store.c:101
-#: camel/providers/local/camel-mh-store.c:97
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr "Mappen `%s' eksisterer ikke."
-
-#: camel/providers/local/camel-maildir-store.c:107
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-"Kunne ikke opprette mappe `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:122
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr "`%s' er ikke en maildir katalog."
-
-#: camel/providers/local/camel-maildir-store.c:151
-#: camel/providers/local/camel-maildir-store.c:188
-#: camel/providers/local/camel-mh-store.c:127
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr "Kunne ikke slette mappe `%s': %s"
-
-#: camel/providers/local/camel-maildir-store.c:152
-msgid "not a maildir directory"
-msgstr "ikke en maildir katalog"
-
-#: camel/providers/local/camel-maildir-summary.c:405
-#: camel/providers/local/camel-maildir-summary.c:526
-#, c-format
-msgid "Cannot open maildir directory path: %s: %s"
-msgstr "Kan ikke åpne maildir katalogsti: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:152
-#, c-format
-msgid "Cannot create folder lock on %s: %s"
-msgstr "Kan ikke opprette mappelås på: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:203
-#, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr "Kan ikke åpne postboks: %s: %s\n"
-
-#: camel/providers/local/camel-mbox-folder.c:259
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr "Kan ikke legge til melding i mbox-filen: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:335
-#: camel/providers/local/camel-mbox-folder.c:367
-#: camel/providers/local/camel-mbox-folder.c:380
-#, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-"Kan ikke hente melding: %s fra mappe %s\n"
-" %s"
-
-#: camel/providers/local/camel-mbox-folder.c:368
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr "Mappen ser ut til å ha blitt korrupt og kan ikke repareres."
-
-#: camel/providers/local/camel-mbox-folder.c:381
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr "Oppbygging av melding feilet: Korrupt postboks?"
-
-#: camel/providers/local/camel-mbox-store.c:94
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-"Kunne ikke åpne fil `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:110
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-"Kunne ikke opprette fil `%s'\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:119
-#: camel/providers/local/camel-mbox-store.c:146
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr "`%s' er ikke en vanlig fil."
-
-#: camel/providers/local/camel-mbox-store.c:138
-#: camel/providers/local/camel-mbox-store.c:161
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-"Kunne ikke slette mappen `%s'\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr "MAppen `%s' er ikke tom. Ikke slettet."
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:249
-msgid "Summarising folder"
-msgstr "Lager sammendrag for mappe"
-
-#: camel/providers/local/camel-mbox-summary.c:254
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr "Kunne ikke åpne mappe: %s: lager sammendrag fra posisjon %ld: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:296
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr "Fatal feil i lesing av postboksen nær posisjon %ld i mappe %s"
-
-#: camel/providers/local/camel-mbox-summary.c:371
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr "Kan ikke lage sammendrag for mappe: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:502
-#: camel/providers/local/camel-mbox-summary.c:703 mail/mail-ops.c:1397
-msgid "Synchronising folder"
-msgstr "Synkroniserer mappe"
-
-#: camel/providers/local/camel-mbox-summary.c:507
-#: camel/providers/local/camel-mbox-summary.c:708
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr "Kan ikke åpne mappe for å lage sammendrag: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:524
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr "Kan ikke åpne midlertidig postboks: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:549
-#: camel/providers/local/camel-mbox-summary.c:557
-#: camel/providers/local/camel-mbox-summary.c:746
-#: camel/providers/local/camel-mbox-summary.c:754
-msgid "Summary and folder mismatch, even after a sync"
-msgstr "Feil i sammendrag og mappe, selv etter synkronisering"
-
-#: camel/providers/local/camel-mbox-summary.c:600
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr "Feil under skriving til midlertidig postboks: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:617
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr "Skriving til midlertidig postboks feilet: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:635
-#: camel/providers/local/camel-mbox-summary.c:804
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr "Kunne ikke lukke kildemappe %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:644
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr "Kunne ikke lukke midlertidig mappe: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:655
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr "Kunne ikke endre navn på mappe: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:879
-#, c-format
-msgid "Unknown error: %s"
-msgstr "Ukjent feil: %s"
-
-#: camel/providers/local/camel-mh-folder.c:149
-#: camel/providers/local/camel-mh-folder.c:157
-#, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr "Kan ikke legge til melding i mh-mappe: %s: %s"
-
-#: camel/providers/local/camel-mh-store.c:110
-#, c-format
-msgid "`%s' is not a directory."
-msgstr "`%s' er ikke en katalog."
-
-#: camel/providers/local/camel-mh-summary.c:218
-#, c-format
-msgid "Cannot open MH directory path: %s: %s"
-msgstr "Kan ikke åpne MH-katalogsti: %s: %s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:45
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr "Vennligst skriv inn NNTP-passord for %s@%s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:66
-msgid "Server rejected username"
-msgstr "Tjeneren godtok ikke brukernavn"
-
-#: camel/providers/nntp/camel-nntp-auth.c:72
-msgid "Failed to send username to server"
-msgstr "Feil under sending av brukernavn til tjener"
-
-#: camel/providers/nntp/camel-nntp-auth.c:81
-msgid "Server rejected username/password"
-msgstr "Tjeneren godtok ikke brukernavn/passord"
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr "Melding %s ikke funnet"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr "Kunne ikke hente gruppeliste fra tjeneren."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr "Kunne ikke laste gruppelistefil for %s: %s"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr "Kunne ikke lagre gruppelistefil for %s: %s"
-
-#: camel/providers/nntp/camel-nntp-provider.c:42
-msgid "USENET news"
-msgstr "USENET news"
-
-#: camel/providers/nntp/camel-nntp-provider.c:44
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr ""
-"Dette er en tilbyder for lesing av og posting av innlegg til USENET "
-"nyhetsgrupper."
-
-#: camel/providers/nntp/camel-nntp-store.c:224
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr "Kunne ikke åpne katalog for news-tjener: %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:286
-#, c-format
-msgid "USENET News via %s"
-msgstr "USENET News via %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:293
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-"Dette alternativet vil autentisere mot NNTP-tjeneren ved bruk av klartekst "
-"passord."
-
-#: camel/providers/nntp/camel-nntp-store.c:325
-#: camel/providers/nntp/camel-nntp-store.c:488
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr "Kunne ikke åpne eller opprette .newsrc-fil for %s: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-msgid "Retrieving POP summary"
-msgstr "Henter POP-sammendrag"
-
-#: camel/providers/pop3/camel-pop3-folder.c:155
-#, c-format
-msgid "Could not check POP server for new messages: %s"
-msgstr "Kunne ikke sjekke POP-tjener etter nye meldinger: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:199
-msgid "Could not open folder: message listing was incomplete."
-msgstr "Kunne ikke åpne mappe: meldingslisten var ikke komplett."
-
-#: camel/providers/pop3/camel-pop3-folder.c:292
-#, c-format
-msgid "No message with uid %s"
-msgstr "Ingen melding med uid %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:296
-#, c-format
-msgid "Retrieving POP message %d"
-msgstr "Henter POP-melding %d"
-
-#: camel/providers/pop3/camel-pop3-folder.c:303
-#, c-format
-msgid "Could not fetch message: %s"
-msgstr "Kunne ikke hente melding: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:320
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr "Kunne ikke hente melding fra POP-tjener %s: %s"
-
-#: camel/providers/pop3/camel-pop3-provider.c:37
-msgid "Message storage"
-msgstr "Meldingslager"
-
-#: camel/providers/pop3/camel-pop3-provider.c:39
-msgid "Leave messages on server"
-msgstr "Behold meldinger på tjeneren"
-
-#: camel/providers/pop3/camel-pop3-provider.c:41
-#, c-format
-msgid "Delete after %s day(s)"
-msgstr "Slett etter %s dag(er)"
-
-#: camel/providers/pop3/camel-pop3-provider.c:48 mail/mail-config.glade.h:51
-msgid "POP"
-msgstr "POP"
-
-#: camel/providers/pop3/camel-pop3-provider.c:50
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-"For tilkobling til POP-tjenere. POP-protokollen kan også brukes for å hente "
-"e-post fra enkelte e-posttilbydere via web i tillegg til proprietære "
-"e-postsystemer."
-
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-"Dette alternativet lar deg koble til POP-tjeneren ved bruk av passord i "
-"klartekst. Dette er det eneste alternativet som er støttet av mange "
-"POP-tjenere."
-
-#: camel/providers/pop3/camel-pop3-provider.c:79
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-"Dette alternativet lar deg koble til POP-tjenere ved bruk av krypterte "
-"passord via APOP-protokollen. Dette vil kanskje ikke virke for alle brukere "
-"selv på tjenere som hevder å støtte det."
-
-#: camel/providers/pop3/camel-pop3-provider.c:91
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-"Dette lar deg koble til POP-tjeneren ved å bruke Kerberos 4 som "
-"autentisering."
-
-#: camel/providers/pop3/camel-pop3-store.c:199
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr "Kunne ikke autentisere mot KPOP-tjener: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:215
-#, c-format
-msgid "Could not connect to server: %s"
-msgstr "Kunne ikke koble til tjener: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:322
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr "Kunne ikke koble til POP-tjener på %s."
-
-#: camel/providers/pop3/camel-pop3-store.c:361
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr "%sVennligst skriv inn POP3-passord for %s@%s"
-
-#: camel/providers/pop3/camel-pop3-store.c:379
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-"Kunne ikke koble til POP-tjener.\n"
-"Feil under oversending av brukernavn: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:382
-#: camel/providers/pop3/camel-pop3-store.c:419
-msgid "(Unknown)"
-msgstr "(Ukjent)"
-
-#: camel/providers/pop3/camel-pop3-store.c:409
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-"Kunne ikke koble til POP-tjeneren.\n"
-"Ingen støtte for forespurt autentiseringsmekanisme."
-
-#: camel/providers/pop3/camel-pop3-store.c:417
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-"Kunne ikke koble til POP-tjener.\n"
-"Feil ved oversending av passord: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:484
-#, c-format
-msgid "No such folder `%s'."
-msgstr "Ingen slik mappe `%s'."
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:37
-#: mail/mail-config.glade.h:67
-msgid "Sendmail"
-msgstr "Sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:39
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-"For levering av e-post ved å videresende den til \"sendmail\"-programmet på "
-"det lokale systemet."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:107
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr "Kunne ikke opprette rør til sendmail: %s: melding ikke sendt"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:124
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr "Kunne ikke kjøre fork på sendmail: %s: melding ikke sendt"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:150
-#, c-format
-msgid "Could not send message: %s"
-msgstr "Kunne ikke sende meldingen: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:163
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr "sendmail avsluttet med signal %s: melding ikke sendt."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:170
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr "Kunne ikke kjøre %s: melding ikke sendt."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:175
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr "sendmail avsluttet med status %d: melding ikke sendt."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:194
-msgid "Could not find 'From' address in message"
-msgstr "Kunne ikke finne 'Fra'-adresse i melding"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "sendmail"
-msgstr "sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:249
-msgid "Mail delivery via the sendmail program"
-msgstr "Levering av e-post via sendmail programmet"
-
-#: camel/providers/smtp/camel-smtp-provider.c:38 mail/mail-config.glade.h:62
-msgid "SMTP"
-msgstr "SMTP"
-
-#: camel/providers/smtp/camel-smtp-provider.c:40
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr "For levering av e-post via en ekstern e-posttjener med SMTP.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:168
-msgid "Syntax error, command unrecognized"
-msgstr "Syntaksfeil, kommando ikke gjenkjent"
-
-#: camel/providers/smtp/camel-smtp-transport.c:170
-msgid "Syntax error in parameters or arguments"
-msgstr "Syntaksfeil i parametere eller argumenter"
-
-#: camel/providers/smtp/camel-smtp-transport.c:172
-msgid "Command not implemented"
-msgstr "Kommando ikke implementert"
-
-#: camel/providers/smtp/camel-smtp-transport.c:174
-msgid "Command parameter not implemented"
-msgstr "Kommandoparameter ikke implementert"
-
-#: camel/providers/smtp/camel-smtp-transport.c:176
-msgid "System status, or system help reply"
-msgstr "Systemstatus, eller svar på systemhjelp"
-
-#: camel/providers/smtp/camel-smtp-transport.c:178
-msgid "Help message"
-msgstr "Hjelp-melding"
-
-#: camel/providers/smtp/camel-smtp-transport.c:180
-msgid "Service ready"
-msgstr "Tjeneste klar"
-
-#: camel/providers/smtp/camel-smtp-transport.c:182
-msgid "Service closing transmission channel"
-msgstr "Tjenesten lukker sendekanalen"
-
-#: camel/providers/smtp/camel-smtp-transport.c:184
-msgid "Service not available, closing transmission channel"
-msgstr "Tjenesten er ikke tilgjengelig, lukker sendekanalen"
-
-#: camel/providers/smtp/camel-smtp-transport.c:186
-msgid "Requested mail action okay, completed"
-msgstr "Forespurt e-post handling er ok, fullført"
-
-#: camel/providers/smtp/camel-smtp-transport.c:188
-msgid "User not local; will forward to <forward-path>"
-msgstr "Ikke lokal bruker; videresender til <forward-path>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:190
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr "Forespurt e-post handling er ikke utført: postboks ikke tilgjengelig"
-
-#: camel/providers/smtp/camel-smtp-transport.c:192
-msgid "Requested action not taken: mailbox unavailable"
-msgstr "Forespurt handling ikke utført: postboks ikke tilgjengelig"
-
-#: camel/providers/smtp/camel-smtp-transport.c:194
-msgid "Requested action aborted: error in processing"
-msgstr "Forespurt handling avbrutt: feil i prosessering"
-
-#: camel/providers/smtp/camel-smtp-transport.c:196
-msgid "User not local; please try <forward-path>"
-msgstr "Ikke lokal bruker; vennligst prøv <forward-path>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:198
-msgid "Requested action not taken: insufficient system storage"
-msgstr "Forespurt handling ikke utført: utilstrekkelig lagringsplass"
-
-#: camel/providers/smtp/camel-smtp-transport.c:200
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr "Forespurt e-post handling avbrutt: lagringsallokering oversteget"
-
-#: camel/providers/smtp/camel-smtp-transport.c:202
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr "Forespurt handling ikke utført: postboksnavn ikke tillatt"
-
-#: camel/providers/smtp/camel-smtp-transport.c:204
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr "Start e-post input; slutt med <CRLF>.<CRLF>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:206
-msgid "Transaction failed"
-msgstr "Transaksjonen feilet"
-
-#: camel/providers/smtp/camel-smtp-transport.c:210
-msgid "A password transition is needed"
-msgstr "Passordoverføring kreves"
-
-#: camel/providers/smtp/camel-smtp-transport.c:212
-msgid "Authentication mechanism is too weak"
-msgstr "Autentiseringsmekanismen er for svak"
-
-#: camel/providers/smtp/camel-smtp-transport.c:214
-msgid "Encryption required for requested authentication mechanism"
-msgstr "Kryptering kreves for forespurt autentiseringsmekanisme."
-
-#: camel/providers/smtp/camel-smtp-transport.c:216
-msgid "Temporary authentication failure"
-msgstr "Midlertidig autentiseringsfeil"
-
-#: camel/providers/smtp/camel-smtp-transport.c:218
-msgid "Authentication required"
-msgstr "Autentisering kreves"
-
-#: camel/providers/smtp/camel-smtp-transport.c:313
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr "Feil ved Welcome-svar: %s: mulig ikke-fatal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:356
-#, c-format
-msgid "SMTP server %s does not support requested authentication type %s"
-msgstr "SMTP-tjener %s støtter ikke etterspurt autentiseringstype %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:395
-#, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr "%sVennligst skriv inn SMTP-passord for %s@%s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:418
-#, c-format
-msgid ""
-"Unable to authenticate to SMTP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Kunne ikke autentisere mot SMTP-tjener.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:534
-#, c-format
-msgid "SMTP server %s"
-msgstr "SMTP-tjener %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:536
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr "SMTP e-postlevering via %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:561
-msgid "Cannot send message: sender address not defined."
-msgstr "Kan ikke sende melding: senderadresse ikke definert."
-
-#: camel/providers/smtp/camel-smtp-transport.c:568
-msgid "Cannot send message: sender address not valid."
-msgstr "Kan ikke sende melding: senderadresse ikke gyldig."
-
-#: camel/providers/smtp/camel-smtp-transport.c:582
-msgid "Cannot send message: no recipients defined."
-msgstr "Kan ikke sende melding: ingen mottakere definert."
-
-#: camel/providers/smtp/camel-smtp-transport.c:676
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr "Tidsavbrudd for HELO-forespørsel: %s: ikke-fatal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:695
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr "Feil ved HELO-svar: %s: ikke-fatal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:728
-msgid "Error creating SASL authentication object."
-msgstr "Feil under oppretting av SASL-autentiseringsobjekt."
-
-#: camel/providers/smtp/camel-smtp-transport.c:743
-#: camel/providers/smtp/camel-smtp-transport.c:755
-#, c-format
-msgid "AUTH request timed out: %s"
-msgstr "Tidsavbrudd for AUTH-forespørsel: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:764
-msgid "AUTH request failed."
-msgstr "AUTH-forespørsel feilet."
-
-#: camel/providers/smtp/camel-smtp-transport.c:809
-msgid "Bad authentication response from server.\n"
-msgstr "Ugyldig svar på autentisering fra tjener.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:835
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr "Tidsavbrudd for \"MAIL FROM\"-forespørsel: %s: melding ikke sendt"
-
-#: camel/providers/smtp/camel-smtp-transport.c:854
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr "Feil ved \"MAIL FROM\"-forespørsel: %s: melding ikke sendt"
-
-#: camel/providers/smtp/camel-smtp-transport.c:879
-#, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr "Tidsavbrudd for \"RCPT TO\"-forespørsel: %s: melding ikke sendt"
-
-#: camel/providers/smtp/camel-smtp-transport.c:898
-#, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr "Feil ved \"RCPT TO\"-svar: %s: melding ikke sendt."
-
-#: camel/providers/smtp/camel-smtp-transport.c:929
-#, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr "Tidsavbrudd for DATA-forespørsel: %s: melding ikke sendt."
-
-#: camel/providers/smtp/camel-smtp-transport.c:948
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr "Feil ved DATA-svar: %s: melding ikke sendt"
-
-#: camel/providers/smtp/camel-smtp-transport.c:963
-#: camel/providers/smtp/camel-smtp-transport.c:981
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr ""
-"Tidsavbrudd for DATA-send: meldingsterminering: %s: melding ikke sendt."
-
-#: camel/providers/smtp/camel-smtp-transport.c:1000
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr "Feil ved DATA-svar: meldingsterminering: %s: melding ikke sendt"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1024
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr "Tidsavbrudd for RSET-forespørsel: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1043
-#, c-format
-msgid "RSET response error: %s"
-msgstr "Feil ved RSET-svar: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1066
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr "Tidsavbrudd for QUIT-forespørsel: %s: ikke-fatal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1085
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr "Feil ved QUIT-svar: %s: ikke-fatal"
-
-#: composer/e-msg-composer-attachment-bar.c:95
-msgid "1 byte"
-msgstr "1 byte"
-
-#: composer/e-msg-composer-attachment-bar.c:97
-#, c-format
-msgid "%u bytes"
-msgstr "%u bytes"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fK"
-
-#: composer/e-msg-composer-attachment-bar.c:108
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fM"
-
-#: composer/e-msg-composer-attachment-bar.c:112
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fG"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:332 mail/mail-display.c:122
-msgid "attachment"
-msgstr "vedlegg"
-
-#: composer/e-msg-composer-attachment-bar.c:421
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr "Legg ved en fil"
-
-#: composer/e-msg-composer-attachment-bar.c:469
-msgid "Remove selected items from the attachment list"
-msgstr "Fjern valgte oppføringer fra vedleggslisten"
-
-#: composer/e-msg-composer-attachment-bar.c:500
-msgid "Add attachment..."
-msgstr "Legg til vedlegg..."
-
-#: composer/e-msg-composer-attachment-bar.c:501
-msgid "Attach a file to the message"
-msgstr "Legg en fil ved meldingen"
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/mail-config.glade.h:9
-#: mail/message-list.c:1081
-msgid "Attachment"
-msgstr "Vedlegg"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr "Egenskaper for vedlegg"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr "Filnavn:"
-
-#: composer/e-msg-composer-attachment.glade.h:5
-msgid "Inline attachment"
-msgstr "Inline vedlegg"
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr "MIME-type:"
-
-#: composer/e-msg-composer-attachment.glade.h:7
-msgid "Send as:"
-msgstr "Send som:"
-
-#: composer/e-msg-composer.c:546
-#, c-format
-msgid ""
-"This version of Evolution was not built with support for S/MIME.\n"
-"You may wish to instead use PGP to %s your document."
-msgstr ""
-"Denne versjonen av Evolution er ikke bygget med støtte for S/MIME.\n"
-"Du vil kanskje bruke PGP til å %s ditt dokument."
-
-#: composer/e-msg-composer.c:548
-msgid "sign and encrypt"
-msgstr "signer og krypter"
-
-#: composer/e-msg-composer.c:549
-msgid "sign"
-msgstr "signer"
-
-#: composer/e-msg-composer.c:549
-msgid "encrypt"
-msgstr "krypter"
-
-#: composer/e-msg-composer.c:601
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-"Kunne ikke åpne signaturfilen %s:\n"
-"%s"
-
-#: composer/e-msg-composer.c:774
-msgid "Save as..."
-msgstr "Lagre som..."
-
-#: composer/e-msg-composer.c:785
-#, c-format
-msgid "Error saving file: %s"
-msgstr "Feil under lagring av fil: %s"
-
-#: composer/e-msg-composer.c:805
-#, c-format
-msgid "Error loading file: %s"
-msgstr "Feil under lasting av fil: %s"
-
-#: composer/e-msg-composer.c:877
-msgid ""
-"Unable to open the drafts folder for this account.\n"
-"Would you like to use the default drafts folder?"
-msgstr ""
-"Kunne ikke åpne skisse-mappen for denne kontoen.\n"
-"Vil du bruke standard skisse-mappe?"
-
-#: composer/e-msg-composer.c:935 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:228
-msgid "Evolution"
-msgstr "Evolution"
-
-#: composer/e-msg-composer.c:941
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-"Denne meldingen er ikke sendt.\n"
-"\n"
-"Vil du lagre endringene?"
-
-#: composer/e-msg-composer.c:966
-msgid "Open file"
-msgstr "Åpne fil"
-
-#: composer/e-msg-composer.c:1092
-msgid "That file does not exist."
-msgstr "Filen eksisterer ikke."
-
-#: composer/e-msg-composer.c:1102
-msgid "That is not a regular file."
-msgstr "Er ikke en vanlig fil."
-
-#: composer/e-msg-composer.c:1112
-msgid "That file exists but is not readable."
-msgstr "Filen eksisterer men er ikke lesbar."
-
-#: composer/e-msg-composer.c:1122
-msgid "That file appeared accesible but open(2) failed."
-msgstr "Filen ser ut til å være tilgjengelig men open(2) feilet."
-
-#: composer/e-msg-composer.c:1144
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-"File en meget stor (mer enn 100K).\n"
-"Er du sikker på at du vil sette den inn?"
-
-#: composer/e-msg-composer.c:1165
-msgid "An error occurred while reading the file."
-msgstr "En feil oppsto under lesing fra filen."
-
-#: composer/e-msg-composer.c:1526 composer/e-msg-composer.c:1871
-msgid "Compose a message"
-msgstr "Skriv en melding"
-
-#: composer/e-msg-composer.c:1962
-msgid "Could not create composer window."
-msgstr "Kan ikke opprette komponeringsvinduet."
-
-#: composer/e-msg-composer-hdrs.c:324
-msgid "Click here for the address book"
-msgstr "Klikk her for å få opp adresseboken"
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:355
-msgid "From:"
-msgstr "Fra:"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:361
-msgid "Reply-To:"
-msgstr "Svar-til:"
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:372
-msgid "Subject:"
-msgstr "Emne:"
-
-#: composer/e-msg-composer-hdrs.c:386
-msgid "To:"
-msgstr "Til:"
-
-#: composer/e-msg-composer-hdrs.c:387
-msgid "Enter the recipients of the message"
-msgstr "Skriv inn mottakerene for meldingen"
-
-#: composer/e-msg-composer-hdrs.c:390
-msgid "Cc:"
-msgstr "Cc:"
-
-#: composer/e-msg-composer-hdrs.c:391
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "Skriv inn adressene som skal motta en kopi av meldingen"
-
-#: composer/e-msg-composer-hdrs.c:394
-msgid "Bcc:"
-msgstr "Bcc:"
-
-#: composer/e-msg-composer-hdrs.c:395
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"Skriv inn adressene som skal motta en kopi av meldingen uten å komme til "
-"syne i mottakerlisten for meldingen."
-
-#: composer/evolution-composer.c:355
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-"Kunne ikke opprette skrivevindu fordi du ikke har satt\n"
-"opp en identitet i e-post-komponenten."
-
-#: composer/evolution-composer.c:370
-msgid "Cannot initialize Evolution's composer."
-msgstr "Kan ikke initiere Evolutions composer."
-
-#: data/evolution.desktop.in.h:2
-msgid "The Evolution groupware suite"
-msgstr "Gruppevaresuiten Evolution"
-
-#: data/evolution.keys.in.h:1
-msgid "address card"
-msgstr "adressekort"
-
-#: data/evolution.keys.in.h:2
-msgid "calendar information"
-msgstr "kalenderinformasjon"
-
-#: default_user/searches.xml.h:1
-msgid "Body contains"
-msgstr "Kropp inneholder"
-
-#: default_user/searches.xml.h:2
-msgid "Body does not contain"
-msgstr "Kropp inneholder ikke"
-
-#: default_user/searches.xml.h:3
-msgid "Body or subject contains"
-msgstr "Kropp eller emne inneholder"
-
-#: default_user/searches.xml.h:4
-msgid "Sender contains"
-msgstr "Sender inneholder"
-
-#: default_user/searches.xml.h:5
-msgid "Subject contains"
-msgstr "Emne inneholder"
-
-#: default_user/searches.xml.h:6
-msgid "Subject does not contain"
-msgstr "Emne inneholder ikke"
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:69 e-util/e-time-utils.c:117
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:477
-#: widgets/misc/e-dateedit.c:1284 widgets/misc/e-dateedit.c:1465
-msgid "%m/%d/%Y"
-msgstr "%d.%m.%Y"
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:87 e-util/e-time-utils.c:198
-msgid "%I:%M:%S %p%n"
-msgstr "%I:%M:%S %p%n"
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:90 e-util/e-time-utils.c:201
-msgid "%H:%M:%S%n"
-msgstr "%H:%M:%S%n"
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:94 e-util/e-time-utils.c:205
-msgid "%I:%M %p%n"
-msgstr "%I:%M %p%n"
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:97 e-util/e-time-utils.c:208
-msgid "%H:%M%n"
-msgstr "%H:%M%n"
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:269
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:473
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2505
-msgid "%a %m/%d/%Y"
-msgstr "%a %d.%m.%Y"
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:274
-msgid "%a %m/%d/%Y %H:%M"
-msgstr "%a %m/%d/%Y %H:%M"
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:283
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr "%a %m/%d/%Y %I:%M %p"
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:312 widgets/misc/e-dateedit.c:1259
-#: widgets/misc/e-dateedit.c:1318 widgets/misc/e-dateedit.c:1497
-msgid "%H:%M"
-msgstr "%H:%M"
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:315
-msgid "%H:%M:%S"
-msgstr "%H:%M:%S"
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:320 widgets/misc/e-dateedit.c:1262
-#: widgets/misc/e-dateedit.c:1321 widgets/misc/e-dateedit.c:1500
-msgid "%I:%M %p"
-msgstr "%I:%M %p"
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:323
-msgid "%I:%M:%S %p"
-msgstr "%I:%M:%S %p"
-
-#: executive-summary/component/component-factory.c:152
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr "Kan ikke initiere Evolutions sammendragskomponent."
-
-#: executive-summary/component/e-summary.c:926
-#, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"Kan ikke åpne HTML-fil:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:940
-#, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr ""
-"Feil under lesing av data:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:958
-msgid "File does not have a place for the services.\n"
-msgstr "Filen har ikke en plass til tjenestene.\n"
-
-#: executive-summary/component/e-summary-callbacks.c:126
-msgid "Select a service"
-msgstr "Velg en tjeneste"
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-"Du kan velge en annen HTML-side som bakgrunn for sammendraget.\n"
-"\n"
-"Bare la den være blank som standard"
-
-#: executive-summary/component/e-summary-url.c:70
-#: executive-summary/component/e-summary-url.c:75
-#: executive-summary/component/e-summary-url.c:82
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr "Åpne %s med standard GNOME applikasjon"
-
-#: executive-summary/component/e-summary-url.c:71
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr "Åpne %s med standard GNOME nettleser"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Send an email to %s"
-msgstr "Send en melding til %s"
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Change the view to %s"
-msgstr "Endre visning til %s"
-
-#: executive-summary/component/e-summary-url.c:74
-#, c-format
-msgid "Run %s"
-msgstr "Kjør %s"
-
-#: executive-summary/component/e-summary-url.c:76
-#, c-format
-msgid "Close %s"
-msgstr "Lukk %s"
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the left"
-msgstr "Flytt %s til venstre"
-
-#: executive-summary/component/e-summary-url.c:78
-#, c-format
-msgid "Move %s to the right"
-msgstr "Flytt %s til høyre"
-
-#: executive-summary/component/e-summary-url.c:79
-#, c-format
-msgid "Move %s into the previous row"
-msgstr "Flytt %s til forrige rad"
-
-#: executive-summary/component/e-summary-url.c:80
-#, c-format
-msgid "Move %s into the next row"
-msgstr "Flytt %s til neste rad"
-
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Configure %s"
-msgstr "Konfigurer %s"
-
-#: executive-summary/component/e-summary-url.c:554
-msgid "page"
-msgstr "side"
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr "Utseende"
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr "Bakgrunn:"
-
-#: executive-summary/component/main.c:62
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-"Sammendragskomponenten kunne ikke initiere Bonobo.\n"
-"Hvis du så en advarsel angående RootPOA, betyr dette sannsynligvis\n"
-"at du kompilerte Bonobo mot GOAD i stedet for OAF."
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-msgid "Evolution component for the executive summary."
-msgstr "Evolution-komponent for sammendrag."
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-msgid "Factory for the Evolution executive summary component."
-msgstr "Factory for Evolutions sammendrag-komponent."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr "Factory RDF-sammendrag."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-msgid "RDF Summary"
-msgstr "RDF-sammendrag"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-msgid "Factory for the test bonobo component."
-msgstr "Factory for test bonobo-komponent."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-msgid "Factory for the test component."
-msgstr "Factory for test-komponent."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr "Test bonobo-tjeneste"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr "Test-tjeneste"
-
-#: executive-summary/test-service/rdf-summary.c:514
-#: executive-summary/test-service/rdf-summary.c:554
-#: executive-summary/test-service/rdf-summary.c:599
-#: widgets/misc/e-messagebox.c:166
-msgid "Error"
-msgstr "Feil"
-
-#: executive-summary/test-service/rdf-summary.c:522
-#: executive-summary/test-service/rdf-summary.c:561
-#: executive-summary/test-service/rdf-summary.c:606
-#, c-format
-msgid "<b>Cannot open location:<br>%s</b>"
-msgstr "<b>Kan ikke åpne lokasjon: <br>%s</b>"
-
-#: executive-summary/test-service/rdf-summary.c:626
-msgid "<b>Loading RDF file. . .<br>Please wait</b>"
-msgstr "<b>Laster RDF-fil. . .<br>Vennligst vent</b>"
-
-#: executive-summary/test-service/rdf-summary.c:731
-msgid "Location:"
-msgstr "Lokasjon:"
-
-#: executive-summary/test-service/rdf-summary.c:747
-msgid "Maximum number of entries:"
-msgstr "Maksimalt antall oppføringer:"
-
-#. FIXME: Do this better?
-#: executive-summary/test-service/rdf-summary.c:763
-msgid "Show window title"
-msgstr "Vis vindustittel"
-
-#: executive-summary/test-service/rdf-summary.c:780
-msgid "Update automatically"
-msgstr "Oppdater automatisk"
-
-#: executive-summary/test-service/rdf-summary.c:790
-msgid "Update now"
-msgstr "Oppdater nå"
-
-#: executive-summary/test-service/rdf-summary.c:800
-msgid "Update every "
-msgstr "Oppdater hver(t) "
-
-#: executive-summary/test-service/rdf-summary.c:811
-#: filter/filter-datespec.c:83
-msgid "minutes"
-msgstr "minutter"
-
-#: executive-summary/test-service/rdf-summary.c:856
-#, c-format
-msgid "HELP: Page %d!\n"
-msgstr "HJELP: Side %d!\n"
-
-#: executive-summary/test-service/rdf-summary.c:877
-msgid "Downloading..."
-msgstr "Laster ned..."
-
-#: executive-summary/test-service/rdf-summary.c:962
-msgid "Cannot initialize factory"
-msgstr "Kan ikke initiere factory"
-
-#: filter/filter-datespec.c:78
-msgid "year"
-msgstr "år"
-
-#: filter/filter-datespec.c:78
-msgid "years"
-msgstr "år"
-
-#: filter/filter-datespec.c:79
-msgid "month"
-msgstr "måned"
-
-#: filter/filter-datespec.c:79
-msgid "months"
-msgstr "måneder"
-
-#: filter/filter-datespec.c:80
-msgid "week"
-msgstr "uke"
-
-#: filter/filter-datespec.c:80
-msgid "weeks"
-msgstr "uker"
-
-#: filter/filter-datespec.c:81
-msgid "days"
-msgstr "dager"
-
-#: filter/filter-datespec.c:82
-msgid "hour"
-msgstr "time"
-
-#: filter/filter-datespec.c:82
-msgid "hours"
-msgstr "timer"
-
-#: filter/filter-datespec.c:83
-msgid "minute"
-msgstr "minutt"
-
-#: filter/filter-datespec.c:84
-msgid "second"
-msgstr "sekund"
-
-#: filter/filter-datespec.c:84
-msgid "seconds"
-msgstr " sekunder"
-
-#: filter/filter-datespec.c:199
-msgid "Oops. You have forgotten to choose a date."
-msgstr "Du har glemt å velge en dato."
-
-#: filter/filter-datespec.c:201
-msgid "Oops. You have chosen an invalid date."
-msgstr "Du har valgt en ugyldig dato."
-
-#: filter/filter-datespec.c:276
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-"Meldingens dato vil bli sammenlignet med tiden\n"
-"når filteret kjøres eller tiden når vfolderen\n"
-"åpnes."
-
-#: filter/filter-datespec.c:299
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-"Meldingens dato vil bli sammenlignet med\n"
-"tiden du spesifiserer her."
-
-#: filter/filter-datespec.c:339
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-"Meldingens dato vil bli sammenlignet med\n"
-"en tid relativ til når filteret blir kjørt;\n"
-"for eksempel \"for en uke siden\"."
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:374
-msgid "the current time"
-msgstr "tiden nå"
-
-#: filter/filter-datespec.c:374
-msgid "a time you specify"
-msgstr "en tid du spesifiserer"
-
-#: filter/filter-datespec.c:375
-msgid "a time relative to the current time"
-msgstr "en tid relativ til tiden nå"
-
-#. The label
-#: filter/filter-datespec.c:433
-msgid "Compare against"
-msgstr "Sammenligne med"
-
-#: filter/filter-datespec.c:550 filter/filter-datespec.c:710
-msgid "now"
-msgstr "nå"
-
-#: filter/filter-datespec.c:707
-msgid "<click here to select a date>"
-msgstr "<klikk her for å velge en dato>"
-
-#: filter/filter-editor.c:132 filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr "Filterregler"
-
-#. and now for the action area
-#: filter/filter-filter.c:452
-msgid "Then"
-msgstr "Så"
-
-#: filter/filter-filter.c:466
-msgid "Add action"
-msgstr "Legg til handling"
-
-#: filter/filter-folder.c:147
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-"Du glemte å velge en meppe.\n"
-"Vennligst gå tilbake og spesifiser en gyldig mappe for levering av e-post."
-
-#: filter/filter-folder.c:225 filter/vfolder-rule.c:285
-#: mail/mail-account-gui.c:682
-msgid "Select Folder"
-msgstr "Velg mappe"
-
-#: filter/filter-folder.c:250
-msgid "Enter folder URI"
-msgstr "Skriv inn URI for mappen"
-
-#: filter/filter-folder.c:296
-msgid "<click here to select a folder>"
-msgstr "<klikk her for å velge en mappe>"
-
-#: filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr "Rediger filtre"
-
-#: filter/filter.glade.h:5
-msgid "Edit VFolders"
-msgstr "Rediger VFoldere"
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr "Innkommende"
-
-#: filter/filter.glade.h:8
-msgid "Outgoing"
-msgstr "Utgående"
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:130
-msgid "Virtual Folders"
-msgstr "Virtuelle mapper"
-
-#: filter/filter.glade.h:11
-msgid "specific folders only"
-msgstr "kun spesifikke mapper"
-
-#: filter/filter.glade.h:12
-msgid "vFolder Sources"
-msgstr "vFolder kilder"
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr "med alle aktive eksterne mapper"
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr "med alle lokaleog aktive eksterne mapper"
-
-#: filter/filter.glade.h:15
-msgid "with all local folders"
-msgstr "med alle lokale mapper"
-
-#: filter/filter-input.c:193
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-"Feil i regulært uttrykk '%s':\n"
-"%s"
-
-#: filter/filter-part.c:488
-msgid "Test"
-msgstr "Test"
-
-#: filter/filter-rule.c:626
-msgid "Rule name: "
-msgstr "Regelnavn: "
-
-#: filter/filter-rule.c:630
-msgid "Untitled"
-msgstr "Uten navn"
-
-#: filter/filter-rule.c:646
-msgid "If"
-msgstr "Hvis"
-
-#: filter/filter-rule.c:664
-msgid "Execute actions"
-msgstr "Utfør handlinger"
-
-#: filter/filter-rule.c:668
-msgid "if all criteria are met"
-msgstr "hvis alle kriterier er møtt"
-
-#: filter/filter-rule.c:673
-msgid "if any criteria are met"
-msgstr "hvis et kriterie er møtt"
-
-#: filter/filter-rule.c:684
-msgid "Add criterion"
-msgstr "Legg til kriterie"
-
-#: filter/filter-rule.c:770
-msgid "incoming"
-msgstr "innkommende"
-
-#: filter/filter-rule.c:770
-msgid "outgoing"
-msgstr "utgående"
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Colour"
-msgstr "Gi farge"
-
-#: filter/libfilter-i18n.h:4
-msgid "Assign Score"
-msgstr "Gi poeng"
-
-#: filter/libfilter-i18n.h:5
-msgid "Attachments"
-msgstr "Vedlegg"
-
-#: filter/libfilter-i18n.h:7
-msgid "contains"
-msgstr "inneholder"
-
-#: filter/libfilter-i18n.h:8
-msgid "Copy to Folder"
-msgstr "Kopier til mappe"
-
-#: filter/libfilter-i18n.h:9
-msgid "Date received"
-msgstr "Dato mottatt"
-
-#: filter/libfilter-i18n.h:10
-msgid "Date sent"
-msgstr "Dato sendt"
-
-#: filter/libfilter-i18n.h:12
-msgid "Deleted"
-msgstr "Slettet"
-
-#: filter/libfilter-i18n.h:13
-msgid "does not contain"
-msgstr "inneholder ikke"
-
-#: filter/libfilter-i18n.h:14
-msgid "does not end with"
-msgstr "slutter ikke med"
-
-#: filter/libfilter-i18n.h:15
-msgid "does not exist"
-msgstr "eksisterer ikke"
-
-#: filter/libfilter-i18n.h:16
-msgid "does not sound like"
-msgstr "ligner ikke"
-
-#: filter/libfilter-i18n.h:17
-msgid "does not start with"
-msgstr "starter ikke med"
-
-#: filter/libfilter-i18n.h:18
-msgid "Do Not Exist"
-msgstr "Eksisterer ikke"
-
-#: filter/libfilter-i18n.h:19
-msgid "Draft"
-msgstr "Skisse"
-
-#: filter/libfilter-i18n.h:20
-msgid "ends with"
-msgstr "slutter med"
-
-#: filter/libfilter-i18n.h:21
-msgid "Exist"
-msgstr "Eksisterer"
-
-#: filter/libfilter-i18n.h:22
-msgid "exists"
-msgstr "eksisterer"
-
-#: filter/libfilter-i18n.h:23
-msgid "Expression"
-msgstr "Uttrykk"
-
-#: filter/libfilter-i18n.h:24
-msgid "Forward to Address"
-msgstr "Videresend til adresse"
-
-#: filter/libfilter-i18n.h:25
-msgid "Important"
-msgstr "Viktig"
-
-#: filter/libfilter-i18n.h:26
-msgid "is"
-msgstr "er"
-
-#: filter/libfilter-i18n.h:27
-msgid "is greater than"
-msgstr "er større enn"
-
-#: filter/libfilter-i18n.h:28
-msgid "is less than"
-msgstr "er mindre enn"
-
-#: filter/libfilter-i18n.h:29
-msgid "is not"
-msgstr "er ikke"
-
-#: filter/libfilter-i18n.h:30
-msgid "Mailing list"
-msgstr "E-postliste"
-
-#: filter/libfilter-i18n.h:31
-msgid "Message Body"
-msgstr "Meldingskropp"
-
-#: filter/libfilter-i18n.h:32
-msgid "Message Header"
-msgstr "Meldingshode"
-
-#: filter/libfilter-i18n.h:33
-msgid "Message was received"
-msgstr "Meldingen ble mottatt"
-
-#: filter/libfilter-i18n.h:34
-msgid "Message was sent"
-msgstr "Meldingen ble sendt"
-
-#: filter/libfilter-i18n.h:35
-msgid "Move to Folder"
-msgstr "Flytt til mappe"
-
-#: filter/libfilter-i18n.h:36
-msgid "on or after"
-msgstr "på eller etter"
-
-#: filter/libfilter-i18n.h:37
-msgid "on or before"
-msgstr "på eller før"
-
-#: filter/libfilter-i18n.h:38
-msgid "Read"
-msgstr "Les"
-
-#: filter/libfilter-i18n.h:39
-msgid "Recipients"
-msgstr "Mottakere"
-
-#: filter/libfilter-i18n.h:40
-msgid "Regex Match"
-msgstr "Treff på vanlig uttrykk"
-
-#: filter/libfilter-i18n.h:41
-msgid "Replied to"
-msgstr "Svart til"
-
-#: filter/libfilter-i18n.h:42 filter/score-rule.c:204 filter/score-rule.c:206
-#: mail/message-list.c:1081
-msgid "Score"
-msgstr "Poenggi"
-
-#: filter/libfilter-i18n.h:43
-msgid "Sender"
-msgstr "Avsender"
-
-#: filter/libfilter-i18n.h:44
-msgid "Set Status"
-msgstr "Sett status"
-
-#: filter/libfilter-i18n.h:45
-msgid "sounds like"
-msgstr "lyder som"
-
-#: filter/libfilter-i18n.h:46
-msgid "Source Account"
-msgstr "Kildekonto"
-
-#: filter/libfilter-i18n.h:47
-msgid "Specific header"
-msgstr "Spesifikk header"
-
-#: filter/libfilter-i18n.h:48
-msgid "starts with"
-msgstr "starter med"
-
-#: filter/libfilter-i18n.h:50
-msgid "Stop Processing"
-msgstr "Stopp behandling"
-
-#: filter/libfilter-i18n.h:51 mail/mail-format.c:767 mail/message-list.c:1082
-msgid "Subject"
-msgstr "Emne"
-
-#: filter/libfilter-i18n.h:52
-msgid "was after"
-msgstr "var etter"
-
-#: filter/libfilter-i18n.h:53
-msgid "was before"
-msgstr "var før"
-
-#: filter/rule-editor.c:147
-msgid "Rules"
-msgstr "Regler"
-
-#: filter/rule-editor.c:240
-msgid "Add Rule"
-msgstr "Legg til regel"
-
-#: filter/rule-editor.c:299
-msgid "Edit Rule"
-msgstr "Rediger regel"
-
-#: filter/score-editor.c:130
-msgid "Score Rules"
-msgstr "Poengregler"
-
-#: importers/elm-importer.c:512 importers/evolution-gnomecard-importer.c:238
-#: importers/netscape-importer.c:780 importers/pine-importer.c:646
-#: shell/e-shell-importer.c:653 shell/importer/import.glade.h:4
-msgid "Import"
-msgstr "Importer"
-
-#: importers/elm-importer.c:517 importers/netscape-importer.c:785
-#: importers/pine-importer.c:651
-msgid "Mail"
-msgstr "E-post"
-
-#: importers/elm-importer.c:521
-msgid "Elm Aliases"
-msgstr "Elm alias"
-
-#: importers/elm-importer.c:528 importers/evolution-gnomecard-importer.c:250
-#: importers/netscape-importer.c:807 importers/pine-importer.c:668
-msgid "Don't ask me again"
-msgstr "Ikke spør meg igjen"
-
-#: importers/elm-importer.c:561
-msgid ""
-"Evolution has found Elm mail files\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-"Evolution har funnet Elm e-post filer.\n"
-"Vil du importere dem til Evolution?"
-
-#: importers/elm-importer.c:579
-msgid "Elm mail"
-msgstr "Elm e-post"
-
-#: importers/evolution-gnomecard-importer.c:243 importers/pine-importer.c:661
-msgid "Addressbook"
-msgstr "Adressebok"
-
-#: importers/evolution-gnomecard-importer.c:275
-msgid ""
-"Evolution has found GnomeCard files.\n"
-"Would you like them to be imported into Evolution?"
-msgstr ""
-"Evolution har funnet GnomeCard filer.\n"
-"Vil du importere dem til Evolution?"
-
-#: importers/netscape-importer.c:790 importers/pine-importer.c:656
-msgid "Settings"
-msgstr "Innstillinger"
-
-#: importers/netscape-importer.c:795 mail/mail-callbacks.c:1359
-msgid "Filters"
-msgstr "Filtre"
-
-#: importers/netscape-importer.c:800
-msgid "Addressbooks"
-msgstr "Adressebøker"
-
-#: importers/netscape-importer.c:847
-msgid ""
-"Evolution has found Netscape mail files.\n"
-"Would you like them to be imported into Evolution?"
-msgstr ""
-"Evolution har funnet Netscape e-post filer.\n"
-"Vil du importere dem til Evolution?"
-
-#: importers/pine-importer.c:705
-msgid ""
-"Evolution has found Pine mail files.\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-"Evolution har funnet Pine e-post filer.\n"
-"Vil du importere dem til Evolution?"
-
-#: importers/pine-importer.c:723
-msgid "Pine mail"
-msgstr "Pine e-post"
-
-#: mail/component-factory.c:337
-msgid "Cannot initialize Evolution's mail component."
-msgstr "Kan ikke initiere Evolutions e-postkomponent."
-
-#: mail/component-factory.c:410
-msgid "Cannot register storage with shell"
-msgstr "Kan ikke registrere lagring i skallet"
-
-#: mail/folder-browser.c:329
-msgid "Store search as vFolder"
-msgstr "Lagre søk som vMappe"
-
-#: mail/folder-browser.c:653
-msgid "VFolder on _Subject"
-msgstr "VFolder på e_mne"
-
-#: mail/folder-browser.c:656
-msgid "VFolder on Se_nder"
-msgstr "VFolder for se_nder"
-
-#: mail/folder-browser.c:659
-msgid "VFolder on _Recipients"
-msgstr "VFolder for mottake_re"
-
-#: mail/folder-browser.c:662
-msgid "VFolder on Mailing _List"
-msgstr "VFolder på e-post_liste"
-
-#: mail/folder-browser.c:668
-msgid "Filter on Sub_ject"
-msgstr "Filtrer på em_ne"
-
-#: mail/folder-browser.c:671
-msgid "Filter on Sen_der"
-msgstr "Filtrer på sen_der"
-
-#: mail/folder-browser.c:674
-msgid "Filter on Re_cipients"
-msgstr "Filtrer på motta_ker"
-
-#: mail/folder-browser.c:677
-msgid "Filter on _Mailing List"
-msgstr "Filtrer på e-_postliste"
-
-#: mail/folder-browser.c:686
-msgid "_Open"
-msgstr "_Åpne"
-
-#: mail/folder-browser.c:688
-msgid "Resend"
-msgstr "Send på nytt"
-
-#: mail/folder-browser.c:690 ui/evolution-calendar.xml.h:43
-#: ui/evolution-mail.xml.h:118 ui/evolution-tasks.xml.h:8
-msgid "_Save As..."
-msgstr "Lagre _som..."
-
-#: mail/folder-browser.c:692 ui/evolution-event-editor.xml.h:69
-#: ui/evolution-task-editor-dialog.xml.h:82 ui/evolution-tasks.xml.h:7
-msgid "_Print"
-msgstr "S_kriv ut"
-
-#: mail/folder-browser.c:697 ui/evolution-mail.xml.h:117
-msgid "_Reply to Sender"
-msgstr "Sva_r til sender"
-
-#: mail/folder-browser.c:699 ui/evolution-mail.xml.h:72
-msgid "Reply to _All"
-msgstr "Svar til _alle"
-
-#: mail/folder-browser.c:701
-msgid "_Forward"
-msgstr "_Videresend"
-
-#: mail/folder-browser.c:704
-msgid "Mar_k as Read"
-msgstr "Mer_k som lest"
-
-#: mail/folder-browser.c:706
-msgid "Mark as U_nread"
-msgstr "Merk som u_lest"
-
-#: mail/folder-browser.c:711
-msgid "_Move to Folder..."
-msgstr "F_lytt til mappe..."
-
-#: mail/folder-browser.c:713
-msgid "_Copy to Folder..."
-msgstr "_Kopier til mappe..."
-
-#: mail/folder-browser.c:717 ui/evolution-mail.xml.h:121
-msgid "_Undelete"
-msgstr "A_ngre slett"
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:727
-msgid "Apply Filters"
-msgstr "Påfør filtre"
-
-#: mail/folder-browser.c:731
-msgid "Create Ru_le From Message"
-msgstr "Lage rege_l fra melding"
-
-#: mail/folder-browser.c:870
-msgid "Filter on Mailing List"
-msgstr "Filtrer etter e-postliste"
-
-#: mail/folder-browser.c:871
-msgid "VFolder on Mailing List"
-msgstr "VFolder på e-postliste"
-
-#: mail/folder-browser.c:873
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr "Filtrer etter e-postliste (%s)"
-
-#: mail/folder-browser.c:874
-#, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr "VFolder på e-postliste (%s)"
-
-#: mail/folder-browser-factory.c:196
-#, c-format
-msgid "Properties for \"%s\""
-msgstr "Egenskaper for \"%s\""
-
-#: mail/folder-browser-factory.c:198 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-msgid "Properties"
-msgstr "Egenskaper"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr "Evolution komponent for håndtering av e-post."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-msgid "Evolution mail composer."
-msgstr "Evolutions e-postredigering."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-msgid "Evolution mail executive summary component."
-msgstr "Evolution e-post komponent for sammendrag."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-msgid "Evolution mail folder display component."
-msgstr "Evolution komponent for e-post mappevisning."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-msgid "Evolution mail folder factory component."
-msgstr "Evolution komponent for e-postmappe factory."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-msgid "Factory for the Evolution composer."
-msgstr "Factory for Evolution meldingsredigering."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-msgid "Factory for the Evolution mail component."
-msgstr "Factory for Evolution e-post komponent."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-msgid "Factory for the Mail Summary component."
-msgstr "Factory for e-post sammendrag komponent."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:9
-msgid "Mail configuration interface"
-msgstr "Grensesnitt for e-post-konfigurasjon"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:1
-msgid "Factory to import mbox into Evolution"
-msgstr "Factory for å importere mbox til Evolution"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:2
-msgid "Imports mbox files into Evolution"
-msgstr "Importerer mbox-filer til Evolution"
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:1
-msgid "Factory to import Outlook Express 4 mails into Evolution"
-msgstr "Factory for å importere Outlook Express 4-meldinger til Evolution"
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:2
-msgid "Imports Outlook Express 4 files into Evolution"
-msgstr "Importerer Outlook Express 4-filer til Evolution"
-
-#: mail/local-config.glade.h:1
-msgid "Current store format:"
-msgstr "Aktivt lagringsformat:"
-
-#: mail/local-config.glade.h:2
-msgid "Mailbox Format"
-msgstr "Format for postboks"
-
-#: mail/local-config.glade.h:3
-msgid "New store format:"
-msgstr "Nytt lagringsformat:"
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-"Merk: Ved konvertering mellom postboksformater, kan en feil\n"
-"(slik som mangel på diskplass) ikke nødvendigvis rettes opp\n"
-"igjen. Vennligst bruk denne funksjonen med forsiktighet."
-
-#: mail/local-config.glade.h:7
-msgid "maildir"
-msgstr "maildir"
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr "mbox"
-
-#: mail/local-config.glade.h:9
-msgid "mh"
-msgstr "mh"
-
-#: mail/mail-account-editor.c:105
-msgid "You have not filled in all of the required information."
-msgstr "Du har ikke fylt ut all nødvendig informasjon."
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:173
-msgid "Evolution Account Editor"
-msgstr "Kontoredigering for Evolution"
-
-#: mail/mail-accounts.c:121 mail/mail-accounts.c:165
-msgid " (default)"
-msgstr " (forvalgt)"
-
-#: mail/mail-accounts.c:197
-msgid "Disable"
-msgstr "Deaktiver"
-
-#: mail/mail-accounts.c:199 mail/mail-config.glade.h:30
-msgid "Enable"
-msgstr "Aktiver"
-
-#: mail/mail-accounts.c:280 mail/mail-accounts.c:284
-msgid "Are you sure you want to delete this account?"
-msgstr "Er du sikker på at du vil slette denne kontoen?"
-
-#: mail/mail-accounts.c:418 mail/mail-accounts.c:422
-msgid "Are you sure you want to delete this news account?"
-msgstr "Er du sikker på at du vil slette denne diskusjonsgruppekontoen?"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:568
-msgid "Evolution Account Manager"
-msgstr "Kontohåndtering for Evolution"
-
-#: mail/mail-autofilter.c:70
-#, c-format
-msgid "Mail to %s"
-msgstr "Send til %s"
-
-#: mail/mail-autofilter.c:213
-#, c-format
-msgid "Subject is %s"
-msgstr "Emne er %s"
-
-#: mail/mail-autofilter.c:229
-#, c-format
-msgid "Mail from %s"
-msgstr "E-post fra %s"
-
-#: mail/mail-autofilter.c:285
-#, c-format
-msgid "%s mailing list"
-msgstr "%s e-postliste"
-
-#: mail/mail-autofilter.c:335 mail/mail-autofilter.c:356
-msgid "Add Filter Rule"
-msgstr "Legg til filterregel"
-
-#: mail/mail-callbacks.c:93
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-"Du har ikke konfigurert e-postklienten.\n"
-"Du må gjøre dette før du kan sende,\n"
-"motta eller skrive meldinger.\n"
-"Vil du konfigurere den nå?"
-
-#: mail/mail-callbacks.c:146
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-"Du må konfigurere en identitet\n"
-"før du kan skrive e-post."
-
-#: mail/mail-callbacks.c:158
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-"Du må konfigurere en e-post-transport\n"
-"før du kan skrive e-post."
-
-#: mail/mail-callbacks.c:202
-msgid "You have not set a mail transport method"
-msgstr "Du har ikke satt en transportmetode for e-post"
-
-#: mail/mail-callbacks.c:235
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-"Denne meldingen har ikke emne.\n"
-"Send likevel?"
-
-#: mail/mail-callbacks.c:308
-msgid "You must specify recipients in order to send this message."
-msgstr "Du må spesifisere mottakere for å kunne sende denne meldingen."
-
-#: mail/mail-callbacks.c:351
-msgid "You must configure an account before you can send this email."
-msgstr "Du må konfigurere en konto før du kan sender denne meldingen."
-
-#: mail/mail-callbacks.c:594
-#, c-format
-msgid "On %s, %s wrote:"
-msgstr "Den %s, skrev %s:"
-
-#: mail/mail-callbacks.c:756
-msgid "Forwarded message:\n"
-msgstr "Videresendt melding:\n"
-
-#: mail/mail-callbacks.c:850
-msgid "Move message(s) to"
-msgstr "Flytt melding(er) til"
-
-#: mail/mail-callbacks.c:852
-msgid "Copy message(s) to"
-msgstr "Kopier melding(er) til"
-
-#: mail/mail-callbacks.c:1017
-#, c-format
-msgid "Are you sure you want to edit all %d messages?"
-msgstr "Er du sikker på at du vil redigere alle %d meldingene?"
-
-#: mail/mail-callbacks.c:1039
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-"Du kan kun redigere meldinger lagret\n"
-"i Skisser-katalogen."
-
-#: mail/mail-callbacks.c:1073
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-"Du kan kun sende meldinger på nytt\n"
-"som er lagret i sendt-katalogen."
-
-#: mail/mail-callbacks.c:1085
-#, c-format
-msgid "Are you sure you want to resend all %d messages?"
-msgstr "Er du sikker på at du vil sende alle %d meldingene på nytt?"
-
-#: mail/mail-callbacks.c:1106
-msgid "No Message Selected"
-msgstr "Ingen melding valgt"
-
-#: mail/mail-callbacks.c:1140 mail/mail-display.c:92
-msgid "Overwrite file?"
-msgstr "Overskriv fil?"
-
-#: mail/mail-callbacks.c:1144 mail/mail-display.c:96
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-"En fil med samme navn eksisterer allerede.\n"
-"Overskriv den?"
-
-#: mail/mail-callbacks.c:1188
-msgid "Save Message As..."
-msgstr "Lagre melding som..."
-
-#: mail/mail-callbacks.c:1190
-msgid "Save Messages As..."
-msgstr "Lagre meldinger som..."
-
-#: mail/mail-callbacks.c:1349
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-"Feil under lasting av filter-informasjon:\n"
-"%s"
-
-#: mail/mail-callbacks.c:1407
-msgid "Print Message"
-msgstr "Skriv ut melding"
-
-#: mail/mail-callbacks.c:1454
-msgid "Printing of message failed"
-msgstr "Feil under utskrift av melding"
-
-#: mail/mail-callbacks.c:1549
-#, c-format
-msgid "Are you sure you want to open all %d messages in separate windows?"
-msgstr "Er du sikker på at du vil åpne alle %d meldingene i separate vinduer?"
-
-#: mail/mail-config.c:1213 mail/mail-config.c:1216
-msgid "Connecting to server..."
-msgstr "Kobler til tjener..."
-
-#: mail/mail-config-druid.c:99
-msgid ""
-"Please enter your name and email address below. The \"optional\" fields "
-"below do not need to be filled in, unless you wish to include this "
-"information in email you send."
-msgstr ""
-"Vennligst skriv inn ditt navn og din e-post adresse under. De \"valgfrie\" "
-"feltene under må ikke nødvendigvis fylles ut, hvis du ikke ønsker å "
-"inkludere denne informasjonen i e-post du sender."
-
-#: mail/mail-config-druid.c:101
-msgid ""
-"Please enter information about your incoming mail server below. If you don't "
-"know what kind of server you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"Vennligst skriv inn informasjon om din tjener for innkommende e-post under. "
-"Hvis du ikke vet hvilken type tjener du bruker, kontakt din "
-"systemadministrator eller Internett tjenestetilbyder."
-
-#: mail/mail-config-druid.c:105
-msgid ""
-"Please enter information about your outgoing mail protocol below. If you "
-"don't know which protocol you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"Vennligst skriv inn informasjon om protokoll for utgående e-post under. Hvis "
-"du ikke vet hvilken protokoll du bruker, kontakt din systemadministrator "
-"eller Internett tjenestetilbyder."
-
-#: mail/mail-config-druid.c:107
-msgid ""
-"You are almost done with the mail configuration process. The identity, "
-"incoming mail server and outgoing mail transport method which you provided "
-"will be grouped together to make an Evolution mail account. Please enter a "
-"name for this account in the space below. This name will be used for display "
-"purposes only."
-msgstr ""
-"Du er nesten ferdig med konfigurasjonsprosessen. Verdiene for identitet, "
-"inkommende e-post-tjener og metode for utgående e-post-transport du har "
-"oppgitt vil grupperes sammen til en Evolution e-post-konto. Vennligst oppgi "
-"et navn for denne kontoen i feltet under. Dette navnet blir kun brukt for "
-"visning på skjermen."
-
-#. set window title
-#: mail/mail-config-druid.c:445
-msgid "Evolution Account Wizard"
-msgstr "Evolution kontoveiviser"
-
-#: mail/mail-config.glade.h:1
-msgid " Check for supported types "
-msgstr "Søk etter støttede typer..."
-
-#: mail/mail-config.glade.h:2
-msgid " color"
-msgstr " farge"
-
-#: mail/mail-config.glade.h:3
-msgid "Account"
-msgstr "Konto"
-
-#: mail/mail-config.glade.h:4
-msgid "Account Information"
-msgstr "Kontoinformasjon"
-
-#: mail/mail-config.glade.h:5
-msgid "Account Management"
-msgstr "Håndtering av konti"
-
-#: mail/mail-config.glade.h:6
-msgid "Accounts"
-msgstr "Kontoer"
-
-#: mail/mail-config.glade.h:8
-msgid "Always load images off the net"
-msgstr "Alltid last bilder fra nettet"
-
-#: mail/mail-config.glade.h:10
-msgid "Authentication"
-msgstr "Autentisering"
-
-#: mail/mail-config.glade.h:11
-msgid "Authentication Type: "
-msgstr "Autentiseringstype: "
-
-#: mail/mail-config.glade.h:12
-msgid "Automatically check for new mail every"
-msgstr "Sjekk etter meldinger automatisk hver(t)"
-
-#: mail/mail-config.glade.h:14
-msgid "Composer"
-msgstr "Skriv"
-
-#: mail/mail-config.glade.h:15
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-"Gratulerer, din e-post-konfigurasjon er nå fullført.\n"
-"\n"
-"Du kan nå sende og motta e-post \n"
-"med Evolution.\n"
-"\n"
-"Klikk \"Fullfør\" for å lagre dine innstillinger"
-
-#: mail/mail-config.glade.h:21
-msgid "De_fault"
-msgstr "_Forvalgt"
-
-#: mail/mail-config.glade.h:22
-msgid "Default \"Forward\" style is: "
-msgstr "Standard videresendingsstil er: "
-
-#: mail/mail-config.glade.h:25
-msgid "Done"
-msgstr "Ferdig"
-
-#: mail/mail-config.glade.h:26
-msgid "Drafts"
-msgstr "Skisser"
-
-#: mail/mail-config.glade.h:27
-msgid "Drafts folder:"
-msgstr "Skissemappe:"
-
-#: mail/mail-config.glade.h:29
-msgid "Email Address:"
-msgstr "E-post adresse:"
-
-#: mail/mail-config.glade.h:31
-msgid "Full Name:"
-msgstr "Fullt navn:"
-
-#: mail/mail-config.glade.h:32
-msgid "Highlight citations with"
-msgstr "Merk sitering med"
-
-#: mail/mail-config.glade.h:34
-msgid "IMAPv4 "
-msgstr "IMAPv4"
-
-#: mail/mail-config.glade.h:35
-msgid "Identity"
-msgstr "Identitet"
-
-#: mail/mail-config.glade.h:36
-msgid "In HTML mail"
-msgstr "I HTML e-post"
-
-#: mail/mail-config.glade.h:37
-msgid "Inline"
-msgstr "Inline"
-
-#: mail/mail-config.glade.h:38
-msgid "Kerberos "
-msgstr "Kerberos "
-
-#: mail/mail-config.glade.h:39
-msgid "Load images if sender is in addressbook"
-msgstr "Last bilder hvis avsender er i adresseboken"
-
-#: mail/mail-config.glade.h:40
-msgid "Mail Configuration"
-msgstr "E-post-konfigurasjon"
-
-#: mail/mail-config.glade.h:41
-msgid "Make this my default account"
-msgstr "Bruk denne som standard konto"
-
-#: mail/mail-config.glade.h:42
-msgid "Mark messages as \"Read\" after:"
-msgstr "Merk melding som \"Lest\" etter:"
-
-#: mail/mail-config.glade.h:44
-msgid "Never load images off the net"
-msgstr "Aldri last bilder fra nettet"
-
-#: mail/mail-config.glade.h:45
-msgid "News"
-msgstr "News"
-
-#: mail/mail-config.glade.h:47
-msgid "Optional Information"
-msgstr "Tilleggsinformasjon"
-
-#: mail/mail-config.glade.h:48
-msgid "Organization:"
-msgstr "Organisasjon:"
-
-#: mail/mail-config.glade.h:49
-msgid "PGP"
-msgstr "PGP"
-
-#: mail/mail-config.glade.h:50
-msgid "PGP binary path:"
-msgstr "Sti til PGP-binærfil:"
-
-#: mail/mail-config.glade.h:55
-msgid "Qmail maildir "
-msgstr "Qmail maildir"
-
-#: mail/mail-config.glade.h:56
-msgid "Quoted"
-msgstr "Sitert"
-
-#: mail/mail-config.glade.h:57
-msgid "Receiving Email"
-msgstr "Innkommende e-post"
-
-#: mail/mail-config.glade.h:58
-msgid "Receiving Mail"
-msgstr "Innkommende e-post"
-
-#: mail/mail-config.glade.h:59
-msgid "Receiving Options"
-msgstr "Alternativer innkommende"
-
-#: mail/mail-config.glade.h:61
-msgid "Required Information"
-msgstr "Nødvendig informasjon"
-
-#: mail/mail-config.glade.h:63
-msgid "Select PGP binary"
-msgstr "Velg PGP-binærfil"
-
-#: mail/mail-config.glade.h:64
-msgid "Send mail in HTML format by default."
-msgstr "Send meldinger i HTML-format som standard"
-
-#: mail/mail-config.glade.h:65
-msgid "Sending Email"
-msgstr "Utgående e-post"
-
-#: mail/mail-config.glade.h:66
-msgid "Sending Mail"
-msgstr "Utgående e-post"
-
-#: mail/mail-config.glade.h:68
-msgid "Sent"
-msgstr "Sendt"
-
-#: mail/mail-config.glade.h:69
-msgid "Sent and Draft Messages"
-msgstr "Sendte meldinger og skisser"
-
-#: mail/mail-config.glade.h:70
-msgid "Sent messages folder:"
-msgstr "Mappe for sendte meldinger:"
-
-#: mail/mail-config.glade.h:71
-msgid "Server Configuration"
-msgstr "Tjenerkonfigurasjon"
-
-#: mail/mail-config.glade.h:72
-msgid "Server Type: "
-msgstr "Tjenertype: "
-
-#: mail/mail-config.glade.h:73
-msgid "Server requires authentication"
-msgstr "Tjener krever autentisering"
-
-#: mail/mail-config.glade.h:74
-msgid "Signature file:"
-msgstr "Signaturfil:"
-
-#: mail/mail-config.glade.h:75
-msgid "Sources"
-msgstr "Kilder"
-
-#: mail/mail-config.glade.h:76
-msgid "Special Folders"
-msgstr "Spesielle mapper"
-
-#: mail/mail-config.glade.h:77
-msgid "Standard Unix mbox"
-msgstr "Standard Unix mbox"
-
-#: mail/mail-config.glade.h:78
-msgid "Type"
-msgstr "Type"
-
-#: mail/mail-config.glade.h:79
-msgid "Use secure connection (SSL)"
-msgstr "Bruk sikker forbindelse (SSL)"
-
-#: mail/mail-config.glade.h:80
-msgid "Username:"
-msgstr "Brukernavn:"
-
-#: mail/mail-config.glade.h:81
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-"Velkommen til konfigurasjonsdruiden for Evolution e-post.\n"
-"\n"
-"Klikk \"Neste\" for å begynne."
-
-#: mail/mail-config.glade.h:86 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:45 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:48
-msgid "_Edit"
-msgstr "R_ediger"
-
-#: mail/mail-crypto.c:59
-msgid "Could not create a PGP signature context."
-msgstr "Kunne ikke opprette PGP signaturkontekst."
-
-#: mail/mail-crypto.c:84
-msgid "Could not create a PGP verification context."
-msgstr "Kunne ikke opprette PGP verifiseringskontekst."
-
-#: mail/mail-crypto.c:113
-msgid "Could not create a PGP encryption context."
-msgstr "Kunne ikke opprette PGP krypteringskontekst."
-
-#: mail/mail-crypto.c:138
-msgid "Could not create a PGP decryption context."
-msgstr "Kunne ikke opprette PGP dekrypteringskontekst."
-
-#: mail/mail-crypto.c:169
-msgid "Could not create a S/MIME signature context."
-msgstr "Kunne ikke opprette S/MIME signaturkontekst."
-
-#: mail/mail-crypto.c:195
-msgid "Could not create a S/MIME verification context."
-msgstr "Kunne ikke opprette S/MIME verifiseringskontekst."
-
-#: mail/mail-crypto.c:225
-msgid "Could not create a S/MIME encryption context."
-msgstr "Kunne ikke opprette S/MIME krypteringskontekst."
-
-#: mail/mail-crypto.c:251
-msgid "Could not create a S/MIME decryption context."
-msgstr "Kunne ikke opprette S/MIME dekrypteringskontekst."
-
-#: mail/mail-display.c:196
-msgid "Save Attachment"
-msgstr "Lagre vedlegg"
-
-#: mail/mail-display.c:236
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr "Kunne ikke opprette midlertidig katalog: %s"
-
-#: mail/mail-display.c:297
-msgid "Save to Disk..."
-msgstr "Lagre til disk..."
-
-#: mail/mail-display.c:299
-#, c-format
-msgid "Open in %s..."
-msgstr "Åpne i %s..."
-
-#: mail/mail-display.c:301
-msgid "View Inline"
-msgstr "Vis \"inline\""
-
-#: mail/mail-display.c:336
-msgid "External Viewer"
-msgstr "Ekstern visning"
-
-#: mail/mail-display.c:359
-#, c-format
-msgid "View Inline (via %s)"
-msgstr "Vis \"inline\" (via %s)"
-
-#: mail/mail-display.c:363
-msgid "Hide"
-msgstr "Skjul"
-
-#: mail/mail-display.c:962
-msgid "Loading message content"
-msgstr "Laster meldingsinnhold"
-
-#: mail/mail-display.c:1256
-msgid "Open link in browser"
-msgstr "Åpne lenke i nettleser"
-
-#: mail/mail-display.c:1258
-msgid "Save as (FIXME)"
-msgstr "Lagre som"
-
-#: mail/mail-display.c:1260
-msgid "Copy location (FIXME)"
-msgstr "Kopier lokasjon"
-
-#: mail/mail-format.c:527
-#, c-format
-msgid "%s attachment"
-msgstr "%s-vedlegg"
-
-#: mail/mail-format.c:573
-msgid "Could not parse MIME message. Displaying as source."
-msgstr "Kunne ikke lese MIME-melding. Viser ren meldingstekst."
-
-#: mail/mail-format.c:640 mail/message-list.c:1082
-msgid "Date"
-msgstr "Dato"
-
-#: mail/mail-format.c:756 mail/message-list.c:1082
-msgid "From"
-msgstr "Fra"
-
-#: mail/mail-format.c:759
-msgid "Reply-To"
-msgstr "Svar-til"
-
-#: mail/mail-format.c:762 mail/message-list.c:1083
-msgid "To"
-msgstr "Til"
-
-#: mail/mail-format.c:765
-msgid "Cc"
-msgstr "Cc"
-
-#: mail/mail-format.c:1075
-msgid "No GPG/PGP program configured."
-msgstr "Ingen GPG/PGP-program konfigurert."
-
-#: mail/mail-format.c:1090
-msgid "Encrypted message not displayed"
-msgstr "Kryptert melding ikke vist"
-
-#: mail/mail-format.c:1096
-msgid "Encrypted message"
-msgstr "Kryptert melding"
-
-#: mail/mail-format.c:1097
-msgid "Click icon to decrypt."
-msgstr "Klikk på ikonet for å dekryptere."
-
-#: mail/mail-format.c:1153
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr "Denne meldingen er digitalt signert og er funnet autentisk."
-
-#: mail/mail-format.c:1161
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr "Denne meldingen er digitalt signert, men kan ikke finnes autentisk."
-
-#: mail/mail-format.c:1787
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr "Peker til FTP-tjener (%s)"
-
-#: mail/mail-format.c:1799
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr "Peker til lokal fil (%s) gyldig på nettsted \"%s\""
-
-#: mail/mail-format.c:1803
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr "Peker til lokal fil (%s)"
-
-#: mail/mail-format.c:1837
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr "Peker til ukjent ekstern data (\"%s\"-type)"
-
-#: mail/mail-format.c:1842
-msgid "Malformed external-body part."
-msgstr "Feilutformet del for ekstern-kropp."
-
-#: mail/mail-local.c:505
-#, c-format
-msgid "Opening '%s'"
-msgstr "Åpner '%s'"
-
-#: mail/mail-local.c:785
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr "Endrer mappe \"%s\" til \"%s\"-format"
-
-#: mail/mail-local.c:789
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr "Endre mappe \"%s\" til \"%s\"-format"
-
-#: mail/mail-local.c:812
-msgid "Reconfiguring folder"
-msgstr "Omkonfigurerer mappe"
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:841
-msgid "Closing current folder"
-msgstr "Lukker aktiv mappe"
-
-#: mail/mail-local.c:873
-msgid "Renaming old folder and opening"
-msgstr "Endrer navn på gammel mappe og gjenåpner"
-
-#: mail/mail-local.c:891
-msgid "Creating new folder"
-msgstr "Oppretter en ny mappe"
-
-#: mail/mail-local.c:905
-msgid "Copying messages"
-msgstr "Kopierer meldinger"
-
-#: mail/mail-local.c:922
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-"Kan ikke lagre metainformasjon for mappe; du vil sannsynligvis\n"
-"ikke kunne åpne denne mappen igjen: %s"
-
-#: mail/mail-local.c:961
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-"Hvis du ikke kan åpne denne postboksen igjen må\n"
-"du reparere den manuelt."
-
-#: mail/mail-local.c:1047
-#, c-format
-msgid "Reconfigure %s"
-msgstr "Omkonfigurer %s"
-
-#: mail/mail-mt.c:190
-#, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-"Feil under '%s':\n"
-"%s"
-
-#: mail/mail-mt.c:193
-#, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-"Feil under utføring av operasjon:\n"
-"%s"
-
-#: mail/mail-mt.c:516 mail/mail-mt.c:545 mail/mail-mt.c:880
-msgid "Working"
-msgstr "Arbeider"
-
-#: mail/mail-mt.c:862
-msgid "Evolution progress"
-msgstr "Evolution fremgang"
-
-#: mail/mail-ops.c:599
-#, c-format
-msgid "Sending \"%s\""
-msgstr "Sender \"%s\""
-
-#: mail/mail-ops.c:603
-msgid "Sending message"
-msgstr "Sender melding"
-
-#: mail/mail-ops.c:718
-#, c-format
-msgid "Sending message %d of %d"
-msgstr "Sender melding %d av %d"
-
-#: mail/mail-ops.c:737
-#, c-format
-msgid "Failed on message %d of %d"
-msgstr "Feilet på melding %d av %d"
-
-#: mail/mail-ops.c:739 mail/mail-send-recv.c:475
-msgid "Complete."
-msgstr "Fullført."
-
-#: mail/mail-ops.c:825
-msgid "Saving message to folder"
-msgstr "Lagrer melding til mappe"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Moving messages to %s"
-msgstr "Flytter melding(er) til %s"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Copying messages to %s"
-msgstr "Kopierer meldinger til %s"
-
-#: mail/mail-ops.c:914
-msgid "Moving"
-msgstr "Flytter"
-
-#: mail/mail-ops.c:917
-msgid "Copying"
-msgstr "Kopierer"
-
-#: mail/mail-ops.c:992
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr "Skanner mapper i \"%s\""
-
-#: mail/mail-ops.c:1154
-msgid "Forwarded messages"
-msgstr "Videresendte meldinger"
-
-#: mail/mail-ops.c:1195 mail/mail-ops.c:1333
-#, c-format
-msgid "Opening folder %s"
-msgstr "Åpner mappe %s"
-
-#: mail/mail-ops.c:1262
-#, c-format
-msgid "Opening store %s"
-msgstr "Åpner lager %s"
-
-#: mail/mail-ops.c:1449
-msgid "Expunging folder"
-msgstr "Tømmer mappe"
-
-#: mail/mail-ops.c:1498
-#, c-format
-msgid "Retrieving message %s"
-msgstr "Henter melding %s"
-
-#: mail/mail-ops.c:1565
-msgid "Retrieving messages"
-msgstr "Henter meldinger"
-
-#: mail/mail-ops.c:1575
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr "Henter melding nummer %d av %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1649
-msgid "Saving messages"
-msgstr "Lagrer meldinger"
-
-#: mail/mail-ops.c:1728
-#, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr ""
-"Kunne ikke opprette utdatafil: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1741
-#, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr "Lagrer melding %d av %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1755
-#, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr ""
-"Feil under lagring av av meldinger til: %s:\n"
-" %s"
-
-#: mail/mail-ops.c:1829
-msgid "Saving attachment"
-msgstr "Lagrer vedlegg"
-
-#: mail/mail-ops.c:1844
-#, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr ""
-"Kunne ikke opprette utdatafil: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1872
-#, c-format
-msgid "Could not write data: %s"
-msgstr "Kan ikke skrive data: %s"
-
-#: mail/mail-ops.c:1939
-#, c-format
-msgid "Disconnecting from %s"
-msgstr "Kobler fra %s"
-
-#: mail/mail-search.c:138
-msgid "(Untitled Message)"
-msgstr "(Melding uten tittel)"
-
-#: mail/mail-search.c:268
-msgid "Find in Message"
-msgstr "Finn i melding"
-
-#: mail/mail-search.c:298
-msgid "Case Sensitive"
-msgstr "Skill mellom store/små bokstaver"
-
-#: mail/mail-search.c:299
-msgid "Search Forward"
-msgstr "Søk fremover"
-
-#: mail/mail-search.c:316
-msgid "Find:"
-msgstr "Finn:"
-
-#: mail/mail-search.c:319
-msgid "Matches:"
-msgstr "Treff:"
-
-#: mail/mail-search-dialogue.c:113
-msgid "_Search"
-msgstr "_Søk"
-
-#: mail/mail-send-recv.c:138
-msgid "Cancelling..."
-msgstr "Avbryter..."
-
-#: mail/mail-send-recv.c:233
-msgid "Send & Receive mail"
-msgstr "Send & motta e-post"
-
-#: mail/mail-send-recv.c:236
-msgid "Receiving"
-msgstr "Mottar"
-
-#: mail/mail-send-recv.c:285
-msgid "Updating..."
-msgstr "Oppdaterer..."
-
-#: mail/mail-send-recv.c:287 mail/mail-send-recv.c:333
-msgid "Waiting..."
-msgstr "Venter..."
-
-#: mail/mail-send-recv.c:306
-msgid "Sending"
-msgstr "Sender"
-
-#: mail/mail-send-recv.c:471
-msgid "Cancelled."
-msgstr "Avbrutt"
-
-#: mail/mail-summary.c:110
-msgid "Incomplete message written on pipe!"
-msgstr "Uferdig melding skrevet på rør!"
-
-#: mail/mail-summary.c:468
-msgid "Mail Summary"
-msgstr "E-post sammendrag"
-
-#: mail/mail-tools.c:145
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr "Kunne ikke opprette midlertidig mbox `%s': %s"
-
-#: mail/mail-tools.c:192
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr "[%s] (videresendt melding)"
-
-#: mail/mail-tools.c:202
-msgid "Fwd: (no subject)"
-msgstr "Fwd: (uten emne)"
-
-#: mail/mail-tools.c:219
-#, c-format
-msgid "Forwarded message - %s"
-msgstr "Videresendt melding - %s"
-
-#: mail/mail-tools.c:221
-msgid "Forwarded message (no subject)"
-msgstr "Videresendt melding (uten emne)"
-
-#: mail/mail-tools.c:428
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-msgstr ""
-"-----Videresendt melding---<br><b>Fra:</b> %s<br><b>Til:</b> "
-"%s<br><b>Emne:</b> %s<br>"
-
-#: mail/mail-vfolder.c:249
-msgid "VFolders"
-msgstr "VMapper"
-
-#: mail/mail-vfolder.c:438
-msgid "New VFolder"
-msgstr "Ny VFolder"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/message-browser.c:188 ui/evolution-mail.xml.h:70
-msgid "Reply"
-msgstr "Svar"
-
-#: mail/message-browser.c:188
-msgid "Reply to the sender of this message"
-msgstr "Svar til avsender av denne meldingen"
-
-#: mail/message-browser.c:191 ui/evolution-mail.xml.h:71
-msgid "Reply to All"
-msgstr "Svar til alle"
-
-#: mail/message-browser.c:191
-msgid "Reply to all recipients of this message"
-msgstr "Svar til alle mottakere av denne meldingen"
-
-#: mail/message-browser.c:194 ui/evolution-mail.xml.h:33
-msgid "Forward"
-msgstr "Videresend"
-
-#: mail/message-browser.c:194
-msgid "Forward this message"
-msgstr "Videresend denne meldingen"
-
-#: mail/message-browser.c:199
-msgid "Print the selected message"
-msgstr "Skriv ut den valgte meldingen"
-
-#: mail/message-browser.c:202
-msgid "Delete this message"
-msgstr "Slett denne meldingen"
-
-#: mail/message-browser.c:207 ui/evolution-event-editor.xml.h:33
-#: ui/evolution-mail.xml.h:64 ui/evolution-task-editor-dialog.xml.h:36
-msgid "Previous"
-msgstr "Forrige"
-
-#: mail/message-browser.c:207
-msgid "Previous message"
-msgstr "Forrige melding"
-
-#: mail/message-browser.c:210 ui/evolution-calendar.xml.h:18
-#: ui/evolution-event-editor.xml.h:29 ui/evolution-mail.xml.h:57
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "Next"
-msgstr "Neste"
-
-#: mail/message-browser.c:210
-msgid "Next message"
-msgstr "Neste melding"
-
-#: mail/message-list.c:677
-msgid "Unseen"
-msgstr "Ulest"
-
-#: mail/message-list.c:678
-msgid "Seen"
-msgstr "Lest"
-
-#: mail/message-list.c:679
-msgid "Answered"
-msgstr "Besvart"
-
-#: mail/message-list.c:680
-msgid "Multiple Unseen Messages"
-msgstr "Flere uleste meldinger"
-
-#: mail/message-list.c:681
-msgid "Multiple Messages"
-msgstr "Flere meldinger"
-
-#: mail/message-list.c:685
-msgid "Lowest"
-msgstr "Lavest"
-
-#: mail/message-list.c:686
-msgid "Lower"
-msgstr "Lavere"
-
-#: mail/message-list.c:690
-msgid "Higher"
-msgstr "Høyere"
-
-#: mail/message-list.c:691
-msgid "Highest"
-msgstr "Høyest"
-
-#: mail/message-list.c:941
-msgid "?"
-msgstr "?"
-
-#: mail/message-list.c:948
-msgid "Today %l:%M %p"
-msgstr "Idag %l:%M %p"
-
-#: mail/message-list.c:957
-msgid "Yesterday %l:%M %p"
-msgstr "I går %l:%M %p"
-
-#: mail/message-list.c:969
-msgid "%a %l:%M %p"
-msgstr "%a %l:%M %p"
-
-#: mail/message-list.c:977
-msgid "%b %d %l:%M %p"
-msgstr "%b %d %l:%M %p"
-
-#: mail/message-list.c:979
-msgid "%b %d %Y"
-msgstr "%b %d %Y"
-
-#: mail/message-list.c:1081
-msgid "Flagged"
-msgstr "Merket"
-
-#: mail/message-list.c:1082
-msgid "Received"
-msgstr "Mottatt"
-
-#: mail/message-list.c:1083
-msgid "Size"
-msgstr "Størrelse"
-
-#: mail/mail-session.c:161
-msgid "User canceled operation."
-msgstr "Operasjon avbrutt av bruker."
-
-#: mail/subscribe-dialog.c:76 shell/e-storage-set-view.c:48
-msgid "Folder"
-msgstr "Mappe"
-
-#: mail/subscribe-dialog.c:77
-msgid "Store"
-msgstr "Lager"
-
-#: mail/subscribe-dialog.c:138
-msgid "Display folders starting with:"
-msgstr "Vis mapper som som starter med:"
-
-#: mail/subscribe-dialog.c:168
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr "Henter lager for \"%s\""
-
-#: mail/subscribe-dialog.c:271
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr "Abonnerer på mappe \"%s\""
-
-#: mail/subscribe-dialog.c:273
-#, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr "Fjerner abonnement på mappe \"%s\""
-
-#. Construct the app
-#: mail/subscribe-dialog.c:873
-msgid "Manage Subscriptions"
-msgstr "Håndter abonnement"
-
-#: shell/e-setup.c:118 shell/e-setup.c:191
-msgid "Evolution installation"
-msgstr "Evolution installasjon"
-
-#: shell/e-setup.c:122
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-"Denne nye versjonen av Evolution må installere tilleggsfiler i\n"
-"din personlige Evolution-katalog"
-
-#: shell/e-setup.c:123
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr ""
-"Vennligst klikk \"OK\" for å installere filene, eller \"Avbryt\" for å "
-"avslutte."
-
-#: shell/e-setup.c:163
-msgid "Could not update files correctly"
-msgstr "Kunne ikke oppdatere filene."
-
-#: shell/e-setup.c:166 shell/e-setup.c:234
-msgid "Evolution files successfully installed."
-msgstr "Evolutions filer ble installert."
-
-#: shell/e-setup.c:195
-msgid "This seems to be the first time you are running Evolution."
-msgstr "Dette ser ut til å være første gang du kjører Evolution."
-
-#: shell/e-setup.c:196
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr "Vennligst klikk \"OK\" for å installere Evolutions brukerfiler under"
-
-#: shell/e-setup.c:215
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"Kan ikke opprette katalogen\n"
-"%s\n"
-"Feil: %s"
-
-#: shell/e-setup.c:230
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-"Kan ikke kopiere filer til\n"
-"`%s'."
-
-#: shell/e-setup.c:255
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-"Filen '%s' er ikke en katalog.\n"
-"Venligst flytt denne for å tillate installasjon\n"
-"av Evolution's brukerfiler."
-
-#: shell/e-setup.c:267
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-"Katalogen `%s' eksisterer men er ikke.\n"
-"Evolution-katalogen. Venligst flytt den for å \n"
-"tillate installasjon av Evolution's brukerfiler."
-
-#: shell/e-shell.c:392
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr "Kan ikke sette opp lokal lagring -- %s"
-
-#: shell/e-shell.c:1272
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-"Ops! Visningen for `%s' døde uventet. :-(\n"
-"Dette betyr sannsynligvis at komponenten %s har krasjet."
-
-#: shell/e-shell-folder-commands.c:238
-#, c-format
-msgid "Specify a folder to copy folder \"%s\" into:"
-msgstr "Spesifiser en mappe som mappen \"%s\" skal kopieres til:"
-
-#: shell/e-shell-folder-commands.c:243
-msgid "Copy folder"
-msgstr "Kopier mappe"
-
-#: shell/e-shell-folder-commands.c:280
-#, c-format
-msgid "Specify a folder to move folder \"%s\" into:"
-msgstr "Spesifiser en mappe å flytte mappen \"%s\" til:"
-
-#: shell/e-shell-folder-commands.c:285
-msgid "Move folder"
-msgstr "Flytt mappe"
-
-#: shell/e-shell-folder-creation-dialog.c:99
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-"Kan ikke opprette spesifisert katalog:\n"
-"%s"
-
-#: shell/e-shell-folder-creation-dialog.c:156
-msgid "The specified folder name is not valid."
-msgstr "Spesifisert mappe er ikke gyldig."
-
-#: shell/e-shell-folder-creation-dialog.c:263
-msgid "Evolution - Create new folder"
-msgstr "Evolution - Lag ny mappe"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-"Typen for valgt mappe er ikke gyldig for den\n"
-"forespurte operasjonen."
-
-#: shell/e-shell-folder-selection-dialog.c:328
-msgid "New..."
-msgstr "Ny..."
-
-#: shell/e-shell-folder-title-bar.c:459 shell/e-shell-folder-title-bar.c:460
-msgid "(Untitled)"
-msgstr "(Uten navn)"
-
-#: shell/e-shell-importer.c:97
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-"Velg filen du ønsker å importere til Evolution og velg hvilken type fil det "
-"er fra listen.\n"
-"\n"
-"Du kan velge \"Automatisk\" hvis du ikke vet, så vil Evolution prøve å finne "
-"ut hvilken type det er for deg."
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/e-shell-importer.c:192
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-"Importerer %s\n"
-"Importerer ikke klar.\n"
-"Venter 5 sekunder før nytt forsøk."
-
-#: shell/e-shell-importer.c:212 shell/e-shell-importer.c:243
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-"Importerer %s\n"
-"Importerer oppføring %d."
-
-#: shell/e-shell-importer.c:353
-#, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr ""
-"Ingen importerer som kan håndtere\n"
-"%s"
-
-#: shell/e-shell-importer.c:363
-msgid "Importing"
-msgstr "Importerer"
-
-#: shell/e-shell-importer.c:371
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-"Importerer %s.\n"
-"Starter %s"
-
-#: shell/e-shell-importer.c:384
-#, c-format
-msgid "Error starting %s"
-msgstr "Feil under start av %s"
-
-#: shell/e-shell-importer.c:404
-#, c-format
-msgid "Error loading %s"
-msgstr "Feil under lasting av %s"
-
-#: shell/e-shell-importer.c:419
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-"Importerer %s\n"
-"Importerer oppføring 1."
-
-#: shell/e-shell-importer.c:490
-msgid "Automatic"
-msgstr "Automatisk"
-
-#: shell/e-shell-importer.c:540
-msgid "Filename:"
-msgstr "Filnavn:"
-
-#: shell/e-shell-importer.c:545 shell/importer/import.glade.h:5
-msgid "Select a file"
-msgstr "Velg en fil"
-
-#: shell/e-shell-importer.c:555
-msgid "File type:"
-msgstr "Filtype:"
-
-#: shell/e-shell-importer.c:601
-msgid "Select folder"
-msgstr "Velg mappe"
-
-#: shell/e-shell-importer.c:602
-msgid "Select a destination folder for importing this data"
-msgstr "Velg en målmappe for å importere data"
-
-#: shell/e-shell-offline-handler.c:554
-msgid "Closing connections..."
-msgstr "Lukker forbindelser..."
-
-#: shell/e-shell-view.c:166
-msgid "(No folder displayed)"
-msgstr "(Ingen mappe vist)"
-
-#: shell/e-shell-view.c:1317
-#, c-format
-msgid "%s - Evolution %s"
-msgstr "%s - Evolution %s"
-
-#: shell/e-shell-view.c:1319
-#, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "%s - Evolution - %s [%s]"
-
-#: shell/e-shell-view.c:1357
-msgid "Evolution is currently online. Click on this button to work offline."
-msgstr ""
-"Evolution er koblet til. Klikk på denne knappen for å arbeide frakoblet."
-
-#: shell/e-shell-view.c:1364
-msgid "Evolution is in the process of going offline."
-msgstr "Evolution er i ferd med å koble fra."
-
-#: shell/e-shell-view.c:1370
-msgid "Evolution is currently offline. Click on this button to work online."
-msgstr ""
-"Evolution er frakoblet. Klikk på denne knappen for å arbeide tilkoblet."
-
-#: shell/e-shell-view-menu.c:179
-msgid "Bug buddy was not found in your $PATH."
-msgstr "Bug buddy ble ikke funnet i din $PATH."
-
-#: shell/e-shell-view-menu.c:185
-msgid "Bug buddy could not be run."
-msgstr "Bug buddy kunne ikke kjøres."
-
-#: shell/e-shell-view-menu.c:230
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Copyright 1999, 2000, 2001 Ximian, Inc."
-
-#: shell/e-shell-view-menu.c:232
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-"Evolution er en suite av gruppevareapplikasjoner\n"
-"for e-post, kalender og kontaktdatabaser for\n"
-"GNOME skrivebordsmiljøet."
-
-#: shell/e-shell-view-menu.c:421
-msgid "Go to folder..."
-msgstr "Gå til mappe..."
-
-#: shell/e-shell-view-menu.c:422
-msgid "Select the folder that you want to open"
-msgstr "Velg mappen du ønsker å åpne"
-
-#: shell/e-shell-view-menu.c:602
-msgid "Work online"
-msgstr "Arbeid \"online\""
-
-#: shell/e-shell-view-menu.c:614 shell/e-shell-view-menu.c:626
-msgid "Work offline"
-msgstr "Arbeid \"offline\""
-
-#: shell/e-shortcuts.c:381
-msgid "Error saving shortcuts."
-msgstr "Feil under lagring av snarveier."
-
-#: shell/e-shortcuts-view.c:134
-msgid "Create new shortcut group"
-msgstr "Opprett ny snarveigruppe"
-
-#: shell/e-shortcuts-view.c:137
-msgid "Group name:"
-msgstr "Gruppenavn:"
-
-#: shell/e-shortcuts-view.c:260
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-"Vil du virkelig fjerne gruppen\n"
-"`%s' fra snarveilinjen?"
-
-#: shell/e-shortcuts-view.c:265
-msgid "Don't remove"
-msgstr "Ikke fjern"
-
-#: shell/e-shortcuts-view.c:276
-msgid "_Small Icons"
-msgstr "_Små ikoner"
-
-#: shell/e-shortcuts-view.c:277
-msgid "Show the shortcuts as small icons"
-msgstr "Vis snarveier som små ikoner"
-
-#: shell/e-shortcuts-view.c:279
-msgid "_Large Icons"
-msgstr "Store i_koner"
-
-#: shell/e-shortcuts-view.c:280
-msgid "Show the shortcuts as large icons"
-msgstr "Vis snarveier som store ikoner"
-
-#: shell/e-shortcuts-view.c:291
-msgid "_New Group..."
-msgstr "_Ny gruppe..."
-
-#: shell/e-shortcuts-view.c:292
-msgid "Create a new shortcut group"
-msgstr "Opprett en ny snarveigruppe"
-
-#: shell/e-shortcuts-view.c:294
-msgid "_Remove This Group..."
-msgstr "Fje_rn denne gruppen..."
-
-#: shell/e-shortcuts-view.c:295
-msgid "Remove this shortcut group"
-msgstr "Fjern denne snarveigruppen"
-
-#: shell/e-shortcuts-view.c:300
-msgid "_Hide the Shortcut Bar"
-msgstr "Sk_jul snarveilinjen"
-
-#: shell/e-shortcuts-view.c:301
-msgid "Hide the shortcut bar"
-msgstr "Skjul snarveilinjen"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate"
-msgstr "Aktiver"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate this shortcut"
-msgstr "Aktiver denne snarveien"
-
-#: shell/e-shortcuts-view.c:388
-msgid "Remove this shortcut from the shortcut bar"
-msgstr "Fjern denne snarveien fra snarveilinjen"
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr "(Uten navn)"
-
-#: shell/e-storage.c:459
-msgid "No error"
-msgstr "Ingen feil"
-
-#: shell/e-storage.c:461
-msgid "Generic error"
-msgstr "Vanlig feil"
-
-#: shell/e-storage.c:463
-msgid "A folder with the same name already exists"
-msgstr "En mappe med samme navn eksisterer allerede"
-
-#: shell/e-storage.c:465
-msgid "The specified folder type is not valid"
-msgstr "Spesifisert mappetype er ikke gyldig"
-
-#: shell/e-storage.c:467
-msgid "I/O error"
-msgstr "I/U-feil"
-
-#: shell/e-storage.c:469
-msgid "Not enough space to create the folder"
-msgstr "Ikke nok plass til å opprette mappen"
-
-#: shell/e-storage.c:471
-msgid "The specified folder was not found"
-msgstr "Spesifisert mappe ble ikke funnet"
-
-#: shell/e-storage.c:473
-msgid "Function not implemented in this storage"
-msgstr "Funksjonen er ikke implementert i dette lageret"
-
-#: shell/e-storage.c:475
-msgid "Permission denied"
-msgstr "Tilgang nektet"
-
-#: shell/e-storage.c:477
-msgid "Operation not supported"
-msgstr "Operasjonen er ikke støttet"
-
-#: shell/e-storage.c:479
-msgid "The specified type is not supported in this storage"
-msgstr "Spesifisert type er ikke støttet for dette lageret"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-msgid "Folder name:"
-msgstr "Mappenavn:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-msgid "Folder type:"
-msgstr "Mappetype:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-msgid "Specify where to create the folder:"
-msgstr "Spesifiser hvor mappen skal opprettes:"
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-msgid "The Evolution shell."
-msgstr "Evolution skallet."
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr "Klikk \"Importer\" for å starte import av filen til Evolution."
-
-#: shell/importer/import.glade.h:2
-msgid "Evolution Import Utility"
-msgstr "Importverktøy for Evolution"
-
-#: shell/importer/import.glade.h:3
-msgid "Evolution Importer Utility"
-msgstr "Importverktøy for Evolution"
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-"Velkommen til Evolutions importverktøy.\n"
-"Gjennom denne veiviseren vil du ledes gjennom import av\n"
-"eksterne filer til Evolution."
-
-#: shell/importer/intelligent.c:186
-msgid "Importers"
-msgstr "Importerere"
-
-#: shell/main.c:82
-#, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-"Hei. Takk for at du har tatt deg tid til å laste ned denne prøveversjonen\n"
-"av Evolution gruppevare-suiten.\n"
-"\n"
-"Evolution er ikke ferdig. Det nærmer seg, men deler av funksjonaliteten\n"
-"mangler eller er ikke fullført. Hvis du ikke finner ut hvordan ting\n"
-"virker, er grunnen sannsynligvis bare at dette ikke er lagt til i koden\n"
-"ennå.\n"
-"\n"
-"Vi håper at Evolution vil være nyttig for deg, men vi føler fremdeles\n"
-"behov for å advare deg om følgende: Evolution vil: krasje, miste din e-post\n"
-"når du ikke vil at det skal skje, etterlate seg vilfarne prosesser som \n"
-"spiser 100% av din CPU-tid, låse seg, sende e-post i HTML-format til\n"
-"tilfeldige e-postlister, og tabbe deg ut foran dine venner og kolleger.\n"
-"Bruk kun etter anvisninger.\n"
-"\n"
-"Vi håper at du nyter resultatene av vårt harde arbeid, og vi venter i\n"
-"spenning på at du tilbyr din hjelp!\n"
-
-#: shell/main.c:107
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-"Takk\n"
-"Evolution utviklerene\n"
-
-#: shell/main.c:138
-msgid "Cannot initialize the Evolution shell."
-msgstr "Kan ikke initialisere Evolution skallet."
-
-#: shell/main.c:184
-msgid "Disable splash screen"
-msgstr "Deaktiver splash"
-
-#: shell/main.c:185
-msgid "Send the debugging output of all components to a file."
-msgstr "Send feilsøkingsutskrift for alle komponentene til en fil."
-
-#: shell/main.c:217
-msgid "Cannot initialize the Bonobo component system."
-msgstr "Kunne ikke initialisere Bonobo komponentsystemet."
-
-#: ui/evolution-addressbook.xml.h:2
-msgid "Create new contact"
-msgstr "Opprett en ny kontakt"
-
-#: ui/evolution-addressbook.xml.h:4
-msgid "Delete a contact"
-msgstr "Slett en kontakt"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-msgid "Find"
-msgstr "Finn"
-
-#: ui/evolution-addressbook.xml.h:6
-msgid "Find a contact"
-msgstr "Finn en kontakt"
-
-#: ui/evolution-addressbook.xml.h:7
-msgid "New contact"
-msgstr "Ny kontakt"
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-mail.xml.h:63
-msgid "Previews the message to be printed"
-msgstr "Viser forhåndsvisning av meldingen som skal skrives ut"
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "Print contacts"
-msgstr "Skriv ut kontakter"
-
-#: ui/evolution-addressbook.xml.h:12
-msgid "Stop"
-msgstr "Stopp"
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "Stop Loading"
-msgstr "Stopp innlesing"
-
-#: ui/evolution-addressbook.xml.h:14
-msgid "View All"
-msgstr "Vis alle"
-
-#: ui/evolution-addressbook.xml.h:15
-msgid "View all contacts"
-msgstr "Vis alle kontakter"
-
-#: ui/evolution-addressbook.xml.h:16
-msgid "_Addressbook Sources..."
-msgstr "_Adressebok-kilder..."
-
-#: ui/evolution-addressbook.xml.h:17
-msgid "_Contact"
-msgstr "_Kontakt"
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-msgid "_Print..."
-msgstr "S_kriv ut..."
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr "_Søk etter kontakter"
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-task-editor-dialog.xml.h:88
-#: ui/evolution.xml.h:64
-msgid "_Tools"
-msgstr "_Verktøy"
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr "5 dager"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-msgid "Alter preferences"
-msgstr "Endre brukervalg"
-
-#: ui/evolution-calendar.xml.h:4
-msgid "Create a new all day Event"
-msgstr "Opprett en ny avtale for hele dagen"
-
-#: ui/evolution-calendar.xml.h:5
-msgid "Create a new appointment"
-msgstr "Opprett en ny avtale"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr "Opprett en ny kalender"
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr "Dag"
-
-#: ui/evolution-calendar.xml.h:8
-msgid "Go To"
-msgstr "Gå til"
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr "Gå tilbake i tid"
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go forward in time"
-msgstr "Gå fremover i tid"
-
-#: ui/evolution-calendar.xml.h:11
-msgid "Go to _Date"
-msgstr "Gå til _dato"
-
-#: ui/evolution-calendar.xml.h:12
-msgid "Go to _Today"
-msgstr "Gå _til idag"
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr "Gå til en spesifikk dato"
-
-#: ui/evolution-calendar.xml.h:14
-msgid "Go to present time"
-msgstr "Gå til i dag"
-
-#: ui/evolution-calendar.xml.h:15
-msgid "Month"
-msgstr "Måned"
-
-#: ui/evolution-calendar.xml.h:17
-msgid "New _Event"
-msgstr "Ny avtal_e"
-
-#: ui/evolution-calendar.xml.h:20
-msgid "Open Calendar"
-msgstr "Åpne kalender"
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Prev"
-msgstr "Forrige"
-
-#: ui/evolution-calendar.xml.h:22
-msgid "Previews the calendar to be printed"
-msgstr "Forhåndsviser av kalenderen som skal skrives ut"
-
-#: ui/evolution-calendar.xml.h:25
-msgid "Print calendar"
-msgstr "Skriv ut kalender"
-
-#: ui/evolution-calendar.xml.h:26
-msgid "Print this Calendar"
-msgstr "Skriv ut denne kalenderen"
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:18
-msgid "Save As"
-msgstr "Lagre som"
-
-#: ui/evolution-calendar.xml.h:28
-msgid "Save calendar as something else"
-msgstr "Lagre kalender som noe annet"
-
-#: ui/evolution-calendar.xml.h:30
-msgid "Show 1 day"
-msgstr "Vis 1 dag"
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr "Vis 1 måned"
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr "Vis 1 uke"
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr "Vis arbeidsuken"
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:229
-#: widgets/misc/e-dateedit.c:424
-msgid "Today"
-msgstr "Idag"
-
-#: ui/evolution-calendar.xml.h:35
-msgid "W_ork Week"
-msgstr "Arbeids_uke"
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr "Uke"
-
-#: ui/evolution-calendar.xml.h:37
-msgid "_Appointment"
-msgstr "_Avtale"
-
-#: ui/evolution-calendar.xml.h:38
-msgid "_Day"
-msgstr "_Dag"
-
-#: ui/evolution-calendar.xml.h:39
-msgid "_Month"
-msgstr "_Måned"
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:58
-msgid "_New"
-msgstr "_Ny"
-
-#: ui/evolution-calendar.xml.h:41
-msgid "_Open Calendar"
-msgstr "_Åpne kalender"
-
-#: ui/evolution-calendar.xml.h:45
-msgid "_Week"
-msgstr "_Uke"
-
-#: ui/evolution-contact-editor.xml.h:2
-msgid "Delete this item"
-msgstr "Slett denne oppføringen"
-
-#: ui/evolution-contact-editor.xml.h:3
-msgid "Delete..."
-msgstr "Slett..."
-
-#: ui/evolution-contact-editor.xml.h:4
-msgid "Help"
-msgstr "Hjelp"
-
-#: ui/evolution-contact-editor.xml.h:5
-msgid "Print En_velope..."
-msgstr "Skriv ut konvolutt..."
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-msgid "Print this item"
-msgstr "Skriv ut denne oppføringen"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:41
-msgid "Print..."
-msgstr "Skriv ut..."
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:19
-#: ui/evolution-task-editor-dialog.xml.h:51
-msgid "Save _As..."
-msgstr "L_agre som..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-msgid "Save and Close"
-msgstr "Lagre og lukk"
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr "Lagre kontakten og lukk dialogboksen"
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr "Se_nd kontakt til andre..."
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr "Se hjelp"
-
-#: ui/evolution-contact-editor.xml.h:13
-msgid "Send _message to contact..."
-msgstr "Send _melding til kontakt..."
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:46 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:49
-msgid "_File"
-msgstr "_Fil"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:53
-#: ui/evolution-task-editor-dialog.xml.h:85
-msgid "_Save"
-msgstr "_Lagre"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr "Om denne applikasjonen"
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr "Om..."
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-msgid "Actio_ns"
-msgstr "Ha_ndlinger"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-msgid "Address _Book... (FIXME)"
-msgstr "Addresse_bok..."
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-msgid "C_lear"
-msgstr "T_øm"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-msgid "C_ut"
-msgstr "Klipp _ut"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-msgid "Chec_k Names (FIXME)"
-msgstr "Sje_kk navn"
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-msgid "Clear"
-msgstr "Tøm"
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-msgid "Clear the selection"
-msgstr "Tøm utvalget"
-
-#: ui/evolution-event-editor.xml.h:11
-msgid "Close this appointment"
-msgstr "Lukk denne avtalen"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "Kop_ier til mappe..."
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:8
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "Kopier"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-msgid "Copy the selection"
-msgstr "Kopier utvalget"
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr "Klipp ut"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Cut the selection"
-msgstr "Klipp ut utvalget"
-
-#: ui/evolution-event-editor.xml.h:18
-msgid "Delete this appointment"
-msgstr "Slett denne avtalen"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr "Dump XML"
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr "Dump beskrivelse av grensesnittet som XML"
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr "Fø_rste oppføring i mappen"
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-msgid "For_ward (FIXME)"
-msgstr "_Videresend"
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr "Videresend som v_Calendar"
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-msgid "Go to the next item"
-msgstr "Gå til neste oppføring"
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-msgid "Go to the previous item"
-msgstr "Gå til forrige oppføring"
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-msgid "In_complete Task (FIXME)"
-msgstr "U_komplett oppgave"
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-msgid "Modify the file's properties"
-msgstr "Endre filens egenskaper"
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-msgid "N_ext"
-msgstr "N_este"
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-msgid "Paste"
-msgstr "Lim inn"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-msgid "Paste the clipboard"
-msgstr "Lim inn fra utklippstavlen"
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr "Forri_ge"
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-msgid "Print Pre_view"
-msgstr "Forhåndsvisning av utskrift"
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-msgid "Print S_etup..."
-msgstr "Skriveropps_ett..."
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-msgid "Print Setup"
-msgstr "Skriveroppsett"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:17
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:241
-msgid "Save"
-msgstr "Lagre"
-
-#: ui/evolution-event-editor.xml.h:43
-msgid "Save the appointment and close the dialog box"
-msgstr "Lagre avtalen og lukk dialogboksen"
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:23
-#: ui/evolution-task-editor-dialog.xml.h:53
-msgid "Save the current file"
-msgstr "Lagre aktiv fil"
-
-#: ui/evolution-event-editor.xml.h:46
-msgid "Schedule _Meeting"
-msgstr "Sett opp _møte"
-
-#: ui/evolution-event-editor.xml.h:47
-msgid "Schedule some sort of a meeting"
-msgstr "Sett opp ett eller annet møte"
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-task-editor-dialog.xml.h:57
-msgid "Select All"
-msgstr "Velg alle"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-msgid "Select everything"
-msgstr "Velg alt"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr "Rediger sideinnstillinger for aktiv skriver"
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-msgid "Task _Request (FIXME)"
-msgstr "_Oppgaveforespørsel"
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-task-editor-dialog.xml.h:63
-msgid "_About..."
-msgstr "_Om..."
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:43
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:43
-msgid "_Close"
-msgstr "L_ukk"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:44
-msgid "_Contact (FIXME)"
-msgstr "_Kontakt"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-msgid "_Copy"
-msgstr "_Kopier"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:44
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr "_Feilsøk"
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:48
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:53
-msgid "_Help"
-msgstr "_Hjelp"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-msgid "_Item (FIXME)"
-msgstr "_Oppføring"
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-msgid "_Journal Entry (FIXME)"
-msgstr "_Journaloppføring"
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-msgid "_Last Item in Folder (FIXME)"
-msgstr "_Siste oppføring i mappen"
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-msgid "_Mail Message (FIXME)"
-msgstr "Send _melding"
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-msgid "_Move to Folder... (FIXME)"
-msgstr "Flytt til _mappe..."
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-msgid "_Note (FIXME)"
-msgstr "_Notis"
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-msgid "_Paste"
-msgstr "_Lim inn"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:115
-#: ui/evolution-task-editor-dialog.xml.h:83 ui/evolution.xml.h:60
-msgid "_Properties..."
-msgstr "Egenska_per..."
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-msgid "_Select All"
-msgstr "_Velg alle"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:63
-msgid "_Task (FIXME)"
-msgstr "_Oppgave"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-msgid "_Unread Item (FIXME)"
-msgstr "_Ulest oppføring"
-
-#: ui/evolution-event-editor.xml.h:76 ui/evolution-message-composer.xml.h:55
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:65
-msgid "_View"
-msgstr "_Vis"
-
-#: ui/evolution-executive-summary.xml.h:1
-msgid "Add Service"
-msgstr "Legg til tjeneste"
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr "Legg til en ny tjeneste i sammendraget"
-
-#: ui/evolution-executive-summary.xml.h:3
-msgid "Create a new email"
-msgstr "Skriv ny melding"
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr "Innstillinger for sammendrag..."
-
-#: ui/evolution-executive-summary.xml.h:5
-msgid "New Mail"
-msgstr "Ny melding"
-
-#: ui/evolution-mail.xml.h:1
-msgid "Apply filter rules to the selected messages"
-msgstr "Aktiver filterregler på de valgte meldingene"
-
-#: ui/evolution-mail.xml.h:2
-msgid "Cancel"
-msgstr "Avbryt"
-
-#: ui/evolution-mail.xml.h:3
-msgid "Cancel the current mail operation"
-msgstr "Avbryt aktiv e-postoperasjon"
-
-#: ui/evolution-mail.xml.h:4
-msgid "Change the properties of this folder"
-msgstr "Endre egenskaper for denne mappen"
-
-#: ui/evolution-mail.xml.h:5
-msgid "Compose"
-msgstr "Skriv"
-
-#: ui/evolution-mail.xml.h:6
-msgid "Compose a reply to all of the recipients of the selected message"
-msgstr "Skriv et svar til alle mottakere av den valgte meldingen"
-
-#: ui/evolution-mail.xml.h:7
-msgid "Compose a reply to the sender of the selected message"
-msgstr "Skriv et svar til avsender av den valgte meldingen"
-
-#: ui/evolution-mail.xml.h:9
-msgid "Copy selected messages to another folder"
-msgstr "Kopier valgte meldinger til en annen mappe"
-
-#: ui/evolution-mail.xml.h:10
-msgid "Create _Virtual Folder From Message"
-msgstr "Lage _virtuell mappe fra melding"
-
-#: ui/evolution-mail.xml.h:11
-msgid "Create a rule to filter messages from this sender"
-msgstr "Lag en regel for å filtrere meldinger fra denne avsenderen"
-
-#: ui/evolution-mail.xml.h:12
-msgid "Create a rule to filter messages to these recipients"
-msgstr "Lag en regel for å filtrere meldinger til disse mottakerene"
-
-#: ui/evolution-mail.xml.h:13
-msgid "Create a rule to filter messages to this mailing list"
-msgstr "Lag en regel for å filtrere meldinger til denne meldingslisten"
-
-#: ui/evolution-mail.xml.h:14
-msgid "Create a rule to filter messages with this subject"
-msgstr "Lag en regel for filtrering av meldinger med dette emnet"
-
-#: ui/evolution-mail.xml.h:15
-msgid "Create a virtual folder for these recipients"
-msgstr "Lag en virtuell mappe for disse mottakerene"
-
-#: ui/evolution-mail.xml.h:16
-msgid "Create a virtual folder for this mailing list"
-msgstr "Lag en virtuell mappe for denne e-postlisten"
-
-#: ui/evolution-mail.xml.h:17
-msgid "Create a virtual folder for this sender"
-msgstr "Lag en virtuell mappe for denne avsenderen"
-
-#: ui/evolution-mail.xml.h:18
-msgid "Create a virtual folder for this subject"
-msgstr "Lag en virtuell mappe for dette emnet"
-
-#: ui/evolution-mail.xml.h:19
-msgid "Create or edit mail accounts and other preferences"
-msgstr "Opprett eller rediger e-post kontoer og andre brukervalg"
-
-#: ui/evolution-mail.xml.h:20
-msgid "Create or edit rules for filtering new mail"
-msgstr "Opprett eller rediger regler for filtrering av ny e-post"
-
-#: ui/evolution-mail.xml.h:21
-msgid "Create or edit virtual folder definitions"
-msgstr "Opprett eller rediger definisjoner av virtuelle mapper"
-
-#: ui/evolution-mail.xml.h:23
-msgid "Display the next message"
-msgstr "Vis neste melding"
-
-#: ui/evolution-mail.xml.h:24
-msgid "Display the previous message"
-msgstr "Vis forrige melding"
-
-#: ui/evolution-mail.xml.h:25
-msgid "Empty _Trash"
-msgstr "_Tøm søppelkurven"
-
-#: ui/evolution-mail.xml.h:26
-msgid "Filter on Mailing _List"
-msgstr "Filtrer etter e-post_liste"
-
-#: ui/evolution-mail.xml.h:27
-msgid "Filter on Se_nder"
-msgstr "Filtrer etter se_nder"
-
-#: ui/evolution-mail.xml.h:28
-msgid "Filter on _Recipients"
-msgstr "Filtrer på mottake_re"
-
-#: ui/evolution-mail.xml.h:29
-msgid "Filter on _Subject"
-msgstr "Filtrer på e_mne"
-
-#: ui/evolution-mail.xml.h:30
-msgid "Force images in HTML mail to be loaded"
-msgstr "Tvungen lasting av bilder i HTML e-post"
-
-#: ui/evolution-mail.xml.h:31
-msgid "Forget _Passwords"
-msgstr "Glem _passord"
-
-#: ui/evolution-mail.xml.h:32
-msgid "Forget remembered passwords so you will be prompted for them again"
-msgstr "Glem alle passord slik at du vil bli spurt om å oppgi dem igjen"
-
-#: ui/evolution-mail.xml.h:34
-msgid "Forward As"
-msgstr "Videresend som"
-
-#: ui/evolution-mail.xml.h:35
-msgid "Forward _Attached"
-msgstr "Videresend vedl_agt"
-
-#: ui/evolution-mail.xml.h:36
-msgid "Forward _Inline"
-msgstr "Videresend \"_inline\""
-
-#: ui/evolution-mail.xml.h:37
-msgid "Forward _Quoted"
-msgstr "Videresend si_tert"
-
-#: ui/evolution-mail.xml.h:38
-msgid "Forward the selected message in the body of a new message"
-msgstr "Videresend den valgte meldingen i kroppen av en ny melding"
-
-#: ui/evolution-mail.xml.h:39
-msgid "Forward the selected message quoted like a reply"
-msgstr "Videresend den valgte meldingen sitert som et svar"
-
-#: ui/evolution-mail.xml.h:40
-msgid "Forward the selected message to someone"
-msgstr "Videresend den valgte meldingen til noen"
-
-#: ui/evolution-mail.xml.h:41
-msgid "Forward the selected message to someone as an attachment"
-msgstr "Videresend den valgte meldingen til noen som et vedlegg"
-
-#: ui/evolution-mail.xml.h:42
-msgid "Hide S_elected Messages"
-msgstr "Skjul valgt_e meldinger"
-
-#: ui/evolution-mail.xml.h:43
-msgid "Hide _Deleted Messages"
-msgstr "Skjul slette_de meldinger"
-
-#: ui/evolution-mail.xml.h:44
-msgid "Hide _Read messages"
-msgstr "Skjul le_ste meldinger"
-
-#: ui/evolution-mail.xml.h:45
-msgid ""
-"Hide deleted messages rather than displaying them with a line through them"
-msgstr "Skjul slettede meldinger heller enn å vise dem gjennomstreket"
-
-#: ui/evolution-mail.xml.h:46
-msgid "Load _Images"
-msgstr "Last b_ilder"
-
-#: ui/evolution-mail.xml.h:47
-msgid "Manage _Subscriptions..."
-msgstr "_Håndter abonnement..."
-
-#: ui/evolution-mail.xml.h:48
-msgid "Mar_k As Read"
-msgstr "Mer_k som lest"
-
-#: ui/evolution-mail.xml.h:49
-msgid "Mark All as R_ead"
-msgstr "Merk alle som l_est"
-
-#: ui/evolution-mail.xml.h:50
-msgid "Mark As U_nread"
-msgstr "Merk som _ulest"
-
-#: ui/evolution-mail.xml.h:51
-msgid "Mark all visible messages as read"
-msgstr "Merk alle synlige meldinger som lest"
-
-#: ui/evolution-mail.xml.h:52
-msgid "Mark the selected messages as having been read"
-msgstr "Merk valgte meldinger som lest"
-
-#: ui/evolution-mail.xml.h:53
-msgid "Mark the selected messages as not having been read"
-msgstr "Merk valgte meldinger som ikke lest"
-
-#: ui/evolution-mail.xml.h:54
-msgid "Mark the selected messages for deletion"
-msgstr "Merk valgte meldinger for sletting"
-
-#: ui/evolution-mail.xml.h:55
-msgid "Move"
-msgstr "Flytt"
-
-#: ui/evolution-mail.xml.h:56
-msgid "Move selected messages to another folder"
-msgstr "Flytt valgte meldinger til en annen mappe"
-
-#: ui/evolution-mail.xml.h:58
-msgid "Open a window for composing a mail message"
-msgstr "Åpne et vindu for å skrive en e-post melding"
-
-#: ui/evolution-mail.xml.h:59
-msgid "Open the selected message in a new window"
-msgstr "Åpne valgt melding i et nytt vindu"
-
-#: ui/evolution-mail.xml.h:60
-msgid "Open the selected message in the composer to re-send it"
-msgstr "Åpne valgt melding i redigeringsvinduet for å sende den på nytt"
-
-#: ui/evolution-mail.xml.h:61
-msgid "Permanently remove all deleted messages from all folders"
-msgstr "Fjern alle slettede meldinger fra alle mapper permanent"
-
-#: ui/evolution-mail.xml.h:62
-msgid "Permanently remove all deleted messages from this folder"
-msgstr "Fjern alle slettede meldinger fra denne mappen permanent"
-
-#: ui/evolution-mail.xml.h:66
-msgid "Print Message..."
-msgstr "Skriv ut melding..."
-
-#: ui/evolution-mail.xml.h:67
-msgid "Print Preview..."
-msgstr "Forhåndsvisning av utskrift"
-
-#: ui/evolution-mail.xml.h:68
-msgid "Print message to the printer"
-msgstr "Skriv ut denne meldingen på skriveren"
-
-#: ui/evolution-mail.xml.h:69
-msgid "Redirect (FIXME: implement me)"
-msgstr "Omdiriger"
-
-#: ui/evolution-mail.xml.h:73
-msgid "S_earch Message"
-msgstr "Søk i m_elding"
-
-#: ui/evolution-mail.xml.h:74
-msgid "Save the message as a text file"
-msgstr "Lagre meldingen som en tekstfil"
-
-#: ui/evolution-mail.xml.h:75
-msgid "Search for text in the body of the displayed message"
-msgstr "Søk etter tekst i kroppen av vist melding"
-
-#: ui/evolution-mail.xml.h:76 ui/evolution-subscribe.xml.h:7
-msgid "Select _All"
-msgstr "Velg _alle"
-
-#: ui/evolution-mail.xml.h:77
-msgid "Select _Thread"
-msgstr "Velg _tråd"
-
-#: ui/evolution-mail.xml.h:78
-msgid "Select all and only the messages that are not currently selected"
-msgstr "Velg alle og bare meldinger som ikke allerede er valgt"
-
-#: ui/evolution-mail.xml.h:79
-msgid "Select all messages in the same thread as the selected message"
-msgstr "Velg alle meldinger i samme tråd som den valgte meldingen"
-
-#: ui/evolution-mail.xml.h:80
-msgid "Select all visible messages"
-msgstr "Velg alle synlige meldinger"
-
-#: ui/evolution-mail.xml.h:81
-msgid "Send / Receive"
-msgstr "Send / motta"
-
-#: ui/evolution-mail.xml.h:82
-msgid "Send queued mail and retrieve new mail"
-msgstr "Send kølagt e-post og hent ny e-post"
-
-#: ui/evolution-mail.xml.h:83
-msgid "Show Email _Source"
-msgstr "Vis e-post-kilde"
-
-#: ui/evolution-mail.xml.h:84
-msgid "Show Full _Headers"
-msgstr "Vis fulle _headere"
-
-#: ui/evolution-mail.xml.h:85
-msgid "Show _All"
-msgstr "Vis _alle"
-
-#: ui/evolution-mail.xml.h:86
-msgid "Show message in the normal style"
-msgstr "Vis melding i normal stil"
-
-#: ui/evolution-mail.xml.h:87
-msgid "Show message with all email headers"
-msgstr "Vis melding med fulle e-post headere"
-
-#: ui/evolution-mail.xml.h:88
-msgid "Show messages that have been temporarily hidden"
-msgstr "Vis meldinger som er midlertidig skjult"
-
-#: ui/evolution-mail.xml.h:89
-msgid "Show the raw email source of the message"
-msgstr "Vis e-post meldingen i sin råe form"
-
-#: ui/evolution-mail.xml.h:90
-msgid "Subscribe or unsubscribe to folders on remote servers"
-msgstr "Abboner eller fjern abonnement på mapper på eksterne tjenere"
-
-#: ui/evolution-mail.xml.h:91
-msgid "Temporarily hide all messages that have already been read"
-msgstr "Skjul alle leste meldinger midlertidig"
-
-#: ui/evolution-mail.xml.h:92
-msgid "Temporarily hide the selected messages"
-msgstr "Skjul valgte meldinger midlertidig"
-
-#: ui/evolution-mail.xml.h:93
-msgid "Threaded Message list"
-msgstr "Meldingsliste med tråder"
-
-#: ui/evolution-mail.xml.h:94
-msgid "Un-delete the selected messages"
-msgstr "Angre slett av den valgte meldingen"
-
-#: ui/evolution-mail.xml.h:95
-msgid "VFolder on Mailing _List..."
-msgstr "VFolder på e-post_liste..."
-
-#: ui/evolution-mail.xml.h:96
-msgid "VFolder on Se_nder..."
-msgstr "VFolder for se_nder..."
-
-#: ui/evolution-mail.xml.h:97
-msgid "VFolder on _Recipients..."
-msgstr "VFolder for mottake_re..."
-
-#: ui/evolution-mail.xml.h:98
-msgid "VFolder on _Subject..."
-msgstr "VFolder på e_mne..."
-
-#: ui/evolution-mail.xml.h:99
-msgid "Virtual Folder _Editor..."
-msgstr "R_edigering av virtuelle mapper..."
-
-#: ui/evolution-mail.xml.h:100
-msgid "_Apply Filters"
-msgstr "_Påfør filtre"
-
-#: ui/evolution-mail.xml.h:101
-msgid "_Copy to Folder"
-msgstr "_Kopier til mappe"
-
-#: ui/evolution-mail.xml.h:102
-msgid "_Create Filter From Message"
-msgstr "La_g filter fra melding"
-
-#: ui/evolution-mail.xml.h:104
-msgid "_Expunge"
-msgstr "_Tøm"
-
-#: ui/evolution-mail.xml.h:105
-msgid "_Filters..."
-msgstr "_Filtre..."
-
-#: ui/evolution-mail.xml.h:106 ui/evolution.xml.h:50
-msgid "_Folder"
-msgstr "_Mappe"
-
-#: ui/evolution-mail.xml.h:107
-msgid "_Forward Message"
-msgstr "_Videresend melding"
-
-#: ui/evolution-mail.xml.h:108 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr "Re_verser utvalg"
-
-#: ui/evolution-mail.xml.h:109
-msgid "_Mail Message"
-msgstr "Send _melding"
-
-#: ui/evolution-mail.xml.h:110
-msgid "_Mail Settings..."
-msgstr "Innstillinger for e-post..."
-
-#: ui/evolution-mail.xml.h:111
-msgid "_Message Display"
-msgstr "_Meldingsvisning"
-
-#: ui/evolution-mail.xml.h:112
-msgid "_Move to Folder"
-msgstr "_Flytt til mappe"
-
-#: ui/evolution-mail.xml.h:113
-msgid "_Normal Display"
-msgstr "_Normal visning"
-
-#: ui/evolution-mail.xml.h:114
-msgid "_Open Message"
-msgstr "_Åpne melding"
-
-#: ui/evolution-mail.xml.h:116
-msgid "_Re-send Message"
-msgstr "_Send melding på nytt"
-
-#: ui/evolution-mail.xml.h:119
-msgid "_Send / Receive"
-msgstr "_Send / motta"
-
-#: ui/evolution-mail.xml.h:120
-msgid "_Threaded Message List"
-msgstr "Meldingsliste med _tråder"
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr "Legg ved"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-msgid "Close the current file"
-msgstr "Lukk aktiv fil"
-
-#: ui/evolution-message-composer.xml.h:5
-msgid "Encrypt this message with PGP"
-msgstr "Krypter denne meldingen med PGP"
-
-#: ui/evolution-message-composer.xml.h:6
-msgid "Encrypt this message with your S/MIME Encryption Cetificate"
-msgstr "Krypter denne meldingen med ditt S/MIME krypteringssertifikat"
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "F_ormat"
-msgstr "F_ormat"
-
-#: ui/evolution-message-composer.xml.h:8
-msgid "HTML"
-msgstr "HTML"
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert a file as text into the message"
-msgstr "Sett inn en tekstfil i meldingen"
-
-#: ui/evolution-message-composer.xml.h:10
-msgid "Insert text file..."
-msgstr "Sett inn tekstfil..."
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "Open a file"
-msgstr "Åpne en fil"
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Encrypt"
-msgstr "Krypter med PGP"
-
-#: ui/evolution-message-composer.xml.h:14
-msgid "PGP Sign"
-msgstr "Signer med PGP"
-
-#: ui/evolution-message-composer.xml.h:15
-msgid "S/MIME Encrypt"
-msgstr "Krypter med S/MIME"
-
-#: ui/evolution-message-composer.xml.h:16
-msgid "S/MIME Sign"
-msgstr "Signer med S/MIME"
-
-#: ui/evolution-message-composer.xml.h:20
-msgid "Save _Draft"
-msgstr "L_agre utkast"
-
-#: ui/evolution-message-composer.xml.h:21
-msgid "Save in _folder... (FIXME)"
-msgstr "Lagre i _mappe..."
-
-#: ui/evolution-message-composer.xml.h:22
-msgid "Save in folder..."
-msgstr "Lagre i mappe..."
-
-#: ui/evolution-message-composer.xml.h:24
-msgid "Save the current file with a different name"
-msgstr "Lagre aktiv fil med et nytt navn"
-
-#: ui/evolution-message-composer.xml.h:25
-msgid "Save the message in a specified folder"
-msgstr "Lagre meldingen i en spesifisert mappe"
-
-#: ui/evolution-message-composer.xml.h:26
-msgid "Send"
-msgstr "Send"
-
-#: ui/evolution-message-composer.xml.h:27
-msgid "Send _Later"
-msgstr "Send se_nere"
-
-#: ui/evolution-message-composer.xml.h:28
-msgid "Send _later"
-msgstr "Send se_nere"
-
-#: ui/evolution-message-composer.xml.h:29
-msgid "Send the mail in HTML format"
-msgstr "Send meldingen i HTML-format"
-
-#: ui/evolution-message-composer.xml.h:30
-msgid "Send the message later"
-msgstr "Send meldingen senere"
-
-#: ui/evolution-message-composer.xml.h:31
-msgid "Send this message now"
-msgstr "Send denne meldingen nå"
-
-#: ui/evolution-message-composer.xml.h:32
-msgid "Show / hide attachments"
-msgstr "Vis/skjul vedlegg"
-
-#: ui/evolution-message-composer.xml.h:33
-msgid "Show _attachments"
-msgstr "Vis _vedlegg"
-
-#: ui/evolution-message-composer.xml.h:34
-msgid "Show attachments"
-msgstr "Vis vedlegg"
-
-#: ui/evolution-message-composer.xml.h:35
-msgid "Sign this message with your PGP key"
-msgstr "Signer denne meldingen med din PGP-nøkkel"
-
-#: ui/evolution-message-composer.xml.h:36
-msgid "Sign this message with your S/MIME Signature Certificate"
-msgstr "Signer denne meldingen med ditt S/MIME signatursertifikat"
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the BCC field is displayed"
-msgstr "Slå av/på visning av BCC-feltet"
-
-#: ui/evolution-message-composer.xml.h:38
-msgid "Toggles whether the CC field is displayed"
-msgstr "Slå av/på visning av CC-feltet"
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "Toggles whether the From chooser is displayed"
-msgstr "Slå av/på visning av Fra-feltet"
-
-#: ui/evolution-message-composer.xml.h:40
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr "Slå av/på visning av Svar-til feltet"
-
-#: ui/evolution-message-composer.xml.h:41
-msgid "_Bcc Field"
-msgstr "_Bcc-felt"
-
-#: ui/evolution-message-composer.xml.h:42
-msgid "_Cc Field"
-msgstr "_Cc-felt"
-
-#: ui/evolution-message-composer.xml.h:47
-msgid "_From Field"
-msgstr "_Fra-felt"
-
-#: ui/evolution-message-composer.xml.h:49
-msgid "_Insert"
-msgstr "Sett _inn"
-
-#: ui/evolution-message-composer.xml.h:50
-msgid "_Insert text file... (FIXME)"
-msgstr "Sett _inn tekstfil..."
-
-#: ui/evolution-message-composer.xml.h:51
-msgid "_Open..."
-msgstr "_Åpne..."
-
-#: ui/evolution-message-composer.xml.h:52
-msgid "_Reply-To Field"
-msgstr "Svar-til felt"
-
-#: ui/evolution-message-composer.xml.h:54
-msgid "_Security"
-msgstr "_Sikkerhet"
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr "Legg til mappe på listen over abonnerte mapper"
-
-#: ui/evolution-subscribe.xml.h:3
-msgid "F_older"
-msgstr "M_appe"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr "Les listen på nytt"
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr "Les mappelisten på nytt"
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr "Fjern mappe fra din liste over abbonerte mapper"
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr "Abonner"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr "Fjern abonnement"
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-msgid "Assig_n Task (FIXME)"
-msgstr "_Tildel oppgave"
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr "Finn igjen"
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-msgid "Meeting Re_quest (FIXME)"
-msgstr "Møteforesp_ørsel"
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-msgid "Redo"
-msgstr "Gjenopprett"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-msgid "Redo the undone action"
-msgstr "Gjenopprett angret handling"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-msgid "Replace"
-msgstr "Erstatt"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-msgid "Replace a string"
-msgstr "Erstattt en streng"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-msgid "Reply to A_ll (FIXME)"
-msgstr "Svar til a_lle"
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-msgid "S_end Status Report (FIXME)"
-msgstr "S_end statusrapport"
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr "Hopp over gjenta_kelse"
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-msgid "Save the task and close the dialog box"
-msgstr "Lagre oppgaven og lukk dialogboksen"
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "Search again for the same string"
-msgstr "Søk etter samme streng på nytt"
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-msgid "Search for a string"
-msgstr "Søk etter en streng"
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr "Angre"
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-msgid "Undo the last action"
-msgstr "Angre siste handling"
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:42
-msgid "_Appointment (FIXME)"
-msgstr "_Avtale"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-msgid "_Mark Complete (FIXME)"
-msgstr "_Merk som fullført"
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-msgid "_Reply (FIXME)"
-msgstr "Sva_r"
-
-#: ui/evolution-tasks.xml.h:2
-msgid "Create a new task"
-msgstr "Opprett en ny oppgave"
-
-#: ui/evolution-tasks.xml.h:3
-msgid "New Task"
-msgstr "Ny oppgave"
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr "Lagre oppgave som noe annet"
-
-#: ui/evolution-tasks.xml.h:6
-msgid "Tasks Preferences..."
-msgstr "Brukervalg for oppgaver..."
-
-#: ui/evolution-tasks.xml.h:9
-msgid "_Task"
-msgstr "_Oppgave"
-
-#: ui/evolution.xml.h:1
-msgid "About Evolution..."
-msgstr "Om Evolution..."
-
-#: ui/evolution.xml.h:2
-msgid "Add to _Shortcut Bar"
-msgstr "Legg til på _snarveilinje"
-
-#: ui/evolution.xml.h:3
-msgid "Change the name of this folder"
-msgstr "Endre navn på denne mappen"
-
-#: ui/evolution.xml.h:4
-msgid "Change the properties for this folder"
-msgstr "Endre egenskaper for denne mappen"
-
-#: ui/evolution.xml.h:6
-msgid "Close this window"
-msgstr "Lukk dette vinduet"
-
-#: ui/evolution.xml.h:7
-msgid "Copy this folder"
-msgstr "Kopier denne mappen"
-
-#: ui/evolution.xml.h:8
-msgid "Create _New Folder..."
-msgstr "Opprett _ny mappe..."
-
-#: ui/evolution.xml.h:9
-msgid "Create a link to this folder in the shortcut bar"
-msgstr "Lag en lenke til denne mappen på snarveilinjen"
-
-#: ui/evolution.xml.h:10
-msgid "Create a new folder"
-msgstr "Opprett en ny mappe"
-
-#: ui/evolution.xml.h:11
-msgid "Customi_ze Toolbars..."
-msgstr "Til_pass verktøylinjer..."
-
-#: ui/evolution.xml.h:12
-msgid "Customize"
-msgstr "Tilpass"
-
-#: ui/evolution.xml.h:13
-msgid "Customize toolbars"
-msgstr "Tilpass verktøylinjer"
-
-#: ui/evolution.xml.h:14
-msgid "Display a different folder"
-msgstr "Vis en annen mappe"
-
-#: ui/evolution.xml.h:15
-msgid "E_xit"
-msgstr "A_vslutt"
-
-#: ui/evolution.xml.h:16
-msgid "Evolution _FAQ"
-msgstr "Evolution _OBS"
-
-#: ui/evolution.xml.h:17
-msgid "Evolution _Window"
-msgstr "Evolution vindu"
-
-#: ui/evolution.xml.h:18
-msgid "Evolution bar _shortcut"
-msgstr "Evolution-linje _snarvei"
-
-#: ui/evolution.xml.h:19
-msgid "Exit the program"
-msgstr "Avslutt programmet"
-
-#: ui/evolution.xml.h:20
-msgid "Getting _Started"
-msgstr "Kom _igang"
-
-#: ui/evolution.xml.h:21
-msgid "Import an external file format"
-msgstr "Importer et eksternt filformat"
-
-#: ui/evolution.xml.h:22
-msgid "Main toolbar"
-msgstr "Hovedverktøylinje"
-
-#: ui/evolution.xml.h:23
-msgid "Move this folder to another place"
-msgstr "Flytt denne mappen til et annet sted"
-
-#: ui/evolution.xml.h:24
-msgid "Open in New Window"
-msgstr "Åpne i nytt vindu"
-
-#: ui/evolution.xml.h:25
-msgid "Open in New _Window"
-msgstr "Åpne i nytt _vindu"
-
-#: ui/evolution.xml.h:26
-msgid "Open this folder in an other window"
-msgstr "Åpne denne mappen i et annet vindu"
-
-#: ui/evolution.xml.h:27
-msgid "Show information about Evolution"
-msgstr "Vis informasjon om Evolution"
-
-#: ui/evolution.xml.h:28
-msgid "Submit Bug Report"
-msgstr "Send inn feilrapport"
-
-#: ui/evolution.xml.h:29
-msgid "Submit _Bug Report"
-msgstr "Sen_d inn feilrapport"
-
-#: ui/evolution.xml.h:30
-msgid "Submit bug report using Bug Buddy."
-msgstr "Send inn feilrapport ved bruk av Bug Buddy."
-
-#: ui/evolution.xml.h:31
-msgid "Toggle"
-msgstr "Bytt"
-
-#: ui/evolution.xml.h:32
-msgid "Toggle whether to show the folder bar"
-msgstr "Slå av/på visning av mappelinjen"
-
-#: ui/evolution.xml.h:33
-msgid "Toggle whether to show the shortcut bar"
-msgstr "Slå av/på visning av snarveilinjen"
-
-#: ui/evolution.xml.h:34
-msgid "Toggle whether we are working offline."
-msgstr "Skift til \"offline\" arbeidsmodus."
-
-#: ui/evolution.xml.h:35
-msgid "Using the C_ontact Manager"
-msgstr "Bruk av k_ontaktdatabasen"
-
-#: ui/evolution.xml.h:36
-msgid "Using the _Calendar"
-msgstr "Bruk av _kalenderen"
-
-#: ui/evolution.xml.h:37
-msgid "Using the _Mailer"
-msgstr "Bruk av e-_postprogrammet"
-
-#: ui/evolution.xml.h:38
-msgid "View the selected folder"
-msgstr "Vis den valgte mappen"
-
-#: ui/evolution.xml.h:39
-msgid "Work Offline"
-msgstr "Arbeid \"offline\""
-
-#: ui/evolution.xml.h:40
-msgid "_About Evolution..."
-msgstr "_Om Evolution..."
-
-#: ui/evolution.xml.h:41
-msgid "_Actions"
-msgstr "H_andlinger"
-
-#: ui/evolution.xml.h:45
-msgid "_Copy..."
-msgstr "_Kopier..."
-
-#: ui/evolution.xml.h:47
-msgid "_Delete this folder"
-msgstr "_Slett denne mappen"
-
-#: ui/evolution.xml.h:51
-msgid "_Folder Bar"
-msgstr "_Mappelinje"
-
-#: ui/evolution.xml.h:52
-msgid "_Go to Folder..."
-msgstr "_Gå til mappe..."
-
-#: ui/evolution.xml.h:54
-msgid "_Import file..."
-msgstr "_Importer fil..."
-
-#: ui/evolution.xml.h:55
-msgid "_Index"
-msgstr "_Indeks"
-
-#: ui/evolution.xml.h:56
-msgid "_Mail message"
-msgstr "Send _melding"
-
-#: ui/evolution.xml.h:57
-msgid "_Move..."
-msgstr "_Flytt..."
-
-#: ui/evolution.xml.h:59
-msgid "_New Folder"
-msgstr "_Ny mappe"
-
-#: ui/evolution.xml.h:61
-msgid "_Rename..."
-msgstr "_Gi nytt navn..."
-
-#: ui/evolution.xml.h:62
-msgid "_Shortcut Bar"
-msgstr "_Snarveilinje"
-
-#: ui/evolution.xml.h:66
-msgid "_Work Offline"
-msgstr "Ar_beid \"offline\""
-
-#: views/addressbook/galview.xml.h:1
-msgid "Adress Cards"
-msgstr "Adressekort"
-
-#: views/addressbook/galview.xml.h:2
-msgid "By Company"
-msgstr "Etter firma"
-
-#: views/addressbook/galview.xml.h:3
-msgid "Phone List"
-msgstr "Telefonliste"
-
-#: views/mail/galview.xml.h:1
-msgid "By Sender"
-msgstr "Etter avsender"
-
-#: views/mail/galview.xml.h:2
-msgid "By Status"
-msgstr "Etter status"
-
-#: views/mail/galview.xml.h:3
-msgid "By Subject"
-msgstr "Etter emne"
-
-#: views/mail/galview.xml.h:4
-msgid "Messages"
-msgstr "Meldinger"
-
-#: views/tasks/galview.xml.h:2
-msgid "With Category"
-msgstr "Med kategori"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:392
-msgid "Tentative"
-msgstr "Tentativ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:393
-msgid "Busy"
-msgstr "Opptatt"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:394
-msgid "Out of Office"
-msgstr "Ute"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:395
-msgid "No Information"
-msgstr "Ingen informasjon"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:411
-msgid "_Invite Others..."
-msgstr "_Inviter andre..."
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:431
-msgid "_Options"
-msgstr "_Alternativer"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:448
-msgid "Show _Only Working Hours"
-msgstr "Vis k_un arbeidstid"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:461
-msgid "Show _Zoomed Out"
-msgstr "Vis _zoomet ut"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:479
-msgid "_Update Free/Busy"
-msgstr "_Oppdater fri/ledig"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:497
-msgid "_<<"
-msgstr "_<<"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:514
-msgid "_Autopick"
-msgstr "_Autovelg"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:528
-msgid ">_>"
-msgstr ">_>"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:545
-msgid "_All People and Resources"
-msgstr "_Alle mennesker og ressurser"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:558
-msgid "All _People and One Resource"
-msgstr "Alle _mennesker og en ressurs"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:571
-msgid "_Required People"
-msgstr "_Nødvendige mennesker"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:584
-msgid "Required People and _One Resource"
-msgstr "Nødvendige mennesker _og en ressurs"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:607
-msgid "Meeting _start time:"
-msgstr "Tid for møtets _start:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:631
-msgid "Meeting _end time:"
-msgstr "Tid for møtets slutt:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:744
-msgid "All Attendees"
-msgstr "Alle deltakere"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:469
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2477
-msgid "%A, %B %d, %Y"
-msgstr "%A, %B %d, %Y"
-
-#: widgets/menus/gal-view-menus.c:176
-msgid "_Current View"
-msgstr "_Aktiv visning"
-
-#: widgets/menus/gal-view-menus.c:202
-msgid "Define Views"
-msgstr "Definer visninger"
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:422
-msgid "MTWTFSS"
-msgstr "MTOTFLS"
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1061 widgets/misc/e-calendar-item.c:2756
-msgid "%B %Y"
-msgstr "%B %Y"
-
-#: widgets/misc/e-cell-date-edit.c:221 widgets/misc/e-dateedit.c:418
-msgid "Now"
-msgstr "nå"
-
-#: widgets/misc/e-cell-date-edit.c:245
-msgid "OK"
-msgstr "OK"
-
-#: widgets/misc/e-cell-date-edit.c:726
-#, c-format
-msgid "The time must be in the format: %s"
-msgstr "Datoen må skrives inn på formatet: %s"
-
-#: widgets/misc/e-clipped-label.c:112
-msgid "..."
-msgstr "..."
-
-#: widgets/misc/e-filter-bar.c:168
-msgid "Save Search"
-msgstr "Lagre søk"
-
-#: widgets/misc/e-filter-bar.c:239
-msgid "Advanced Search"
-msgstr "Avansert søk"
-
-#: widgets/misc/e-filter-bar.h:101
-msgid "Save As..."
-msgstr "Lagre som..."
-
-#: widgets/misc/e-filter-bar.h:102
-msgid "Show All"
-msgstr "Vis alle"
-
-#: widgets/misc/e-filter-bar.h:103
-msgid "Edit..."
-msgstr "Rediger..."
-
-#: widgets/misc/e-filter-bar.h:104
-msgid "Advanced..."
-msgstr "Avansert..."
-
-#: widgets/misc/e-messagebox.c:152
-msgid "Information"
-msgstr "Informasjon"
-
-#: widgets/misc/e-messagebox.c:159
-msgid "Warning"
-msgstr "Advarsel"
-
-#: widgets/misc/e-messagebox.c:173
-msgid "Question"
-msgstr "Spørsmål"
-
-#: widgets/misc/e-messagebox.c:180
-msgid "Message"
-msgstr "Melding"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:224
-msgid "Don't show this message again."
-msgstr "Ikke vis denne meldingen igjen."
-
-#: widgets/misc/e-search-bar.c:155
-msgid "Sear_ch"
-msgstr "Sø_k"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-msgid "The Personal Addressbook Server"
-msgstr "Personlig adressebok-tjener"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr "Personlig adressebok-tjener; factory"
-
-#: wombat/wombat.c:173
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr "setup_vfs(): kunne ikke initiere GNOME-VFS"
-
-#: wombat/wombat.c:185
-msgid "init_corba(): could not initialize GNOME"
-msgstr "init_corba(): kunne ikke initiere GNOME"
-
-#: wombat/wombat.c:198
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "init_bonobo(): kunne ikke initialisere Bonobo"
-
-#~ msgid "Mark Complete"
-#~ msgstr "Merk som fullført"
-
-#~ msgid "Edit the task"
-#~ msgstr "Rediger oppgaven"
-
-#~ msgid "Could not clearsign: certificate not found for \"%s\"."
-#~ msgstr "Kunne ikke klarsignere: sertifikat ikke funnet for \"%s\"."
-
-#~ msgid "Send the message now"
-#~ msgstr "Send meldingen nå"
-
-#~ msgid ""
-#~ "Evolution has found Elm mail files in ~/Mail.\n"
-#~ "Would you like to import them into Evolution?"
-#~ msgstr ""
-#~ "Evolution har funnet Elm e-post filer i ~/Mail.\n"
-#~ "Vil du importere dem til Evolution?"
-
-#~ msgid "Apply any new filters to the mail in this box"
-#~ msgstr "Bruk alle nye filtre på meldinger i denne mappen"
-
-#~ msgid "Compose a new message"
-#~ msgstr "Komponer en ny melding"
-
-#~ msgid "Configure Folder..."
-#~ msgstr "Konfigurer mappe..."
-
-#~ msgid "Copy message to a new folder"
-#~ msgstr "Kopier meldingen til en ny mappe"
-
-#~ msgid "Display all of the message headers"
-#~ msgstr "Vis komplette meldingshoder"
-
-#~ msgid "Edit Message"
-#~ msgstr "Rediger melding"
-
-#~ msgid "Edit the current message"
-#~ msgstr "Rediger aktiv melding"
-
-#~ msgid "Expunge"
-#~ msgstr "Tøm"
-
-#~ msgid "Finaly remove all mails tagged for deletion"
-#~ msgstr "Fjern alle meldinger som er merket for sletting"
-
-#~ msgid "Forward inline"
-#~ msgstr "Videresend \"inline\""
-
-#~ msgid "Forward this message in-line with your mail, so you can edit it"
-#~ msgstr ""
-#~ "Videresend denne meldingen \"in-line\" med din e-post, så du kan redigere den"
-
-#~ msgid "Hide Deleted Messages"
-#~ msgstr "Skjul slettede meldinger"
-
-#~ msgid "Invert Selection"
-#~ msgstr "Reverser utvalg"
-
-#~ msgid "Move message to a new folder"
-#~ msgstr "Flytt meldingen til en ny mappe"
-
-#~ msgid "Print Preview of message..."
-#~ msgstr "Vis forhåndsvisning av melding..."
-
-#~ msgid "Reply to all"
-#~ msgstr "Svar til alle"
-
-#~ msgid "Reply to sender"
-#~ msgstr "Svar til sender"
-
-#~ msgid "S_ource"
-#~ msgstr "K_ilde"
-
-#~ msgid "Send a reply to the person who sent you this mail"
-#~ msgstr "Send et svar til personen som sendte deg denne meldingen"
-
-#~ msgid "Send a single mail in reply to all the selected mail"
-#~ msgstr "Send en enkelt melding i svar til alle valgte meldinger"
-
-#~ msgid ""
-#~ "Send queued mail\n"
-#~ " and retrieve new mail"
-#~ msgstr ""
-#~ "Send kølagt e-post\n"
-#~ " og hent ny e-post"
-
-#~ msgid "Undelete"
-#~ msgstr "Angre slett"
-
-#~ msgid "View Raw Message Source"
-#~ msgstr "Vis rå meldingskode"
-
-#~ msgid "_Open Selected Items"
-#~ msgstr "_Åpne valgte oppføringer"
-
-#~ msgid "_Reply"
-#~ msgstr "Sva_r"
-
-#~ msgid "_Save Message As..."
-#~ msgstr "Lagre melding _som..."
-
-#~ msgid "_Threaded"
-#~ msgstr "Med _tråder"
-
-#~ msgid "Search \"%s\""
-#~ msgstr "Søk \"%s\""
-
-#~ msgid "_Attachment"
-#~ msgstr "_Vedlegg"
-
-#~ msgid "SASL"
-#~ msgstr "SASL"
-
-#~ msgid ""
-#~ "We were unable to open this addressbook. This either\n"
-#~ "means you have entered an incorrect URI, or have tried\n"
-#~ "to access an LDAP server and don't have LDAP support\n"
-#~ "compiled in. If you've entered a URI, check the URI for\n"
-#~ "correctness and reenter. If not, you probably have\n"
-#~ "attempted to access an LDAP server. If you wish to be\n"
-#~ "able to use LDAP, you'll need to download and install\n"
-#~ "OpenLDAP and recompile and install Evolution.\n"
-#~ msgstr ""
-#~ "Kunne ikke åpne denne adresseboken. Dette beyr at du\n"
-#~ "har skrevet inn en ugyldig URI, eller at du har forsøkt\n"
-#~ "å aksessere en LDAP-tjener og ikke har støtte for LDAP\n"
-#~ "kompilert inn. Hvis du skrev inn en URI, vær vennlig\n"
-#~ "og sjekk om denne er korrekt, og skriv den inn på nytt.\n"
-#~ "Hvis ikke har du sannsynligvis forsøkt å bruke en LDAP-\n"
-#~ "tjener. Hvis du ønsker å bruke LDAP må du laste ned og\n"
-#~ "installere OpenLDAP, deretter må du kompilere og\n"
-#~ "installere Evolution på nytt.\n"
-
-#~ msgid "Show all "
-#~ msgstr "Vis alle "
-
-#~ msgid "Advanced ..."
-#~ msgstr "Avansert..."
-
-#~ msgid "Save As ..."
-#~ msgstr "Lagre som..."
-
-#~ msgid "%s is not a selectable folder"
-#~ msgstr "%s er ikke en valgbar mappe"
-
-#~ msgid "VFolder on Subject"
-#~ msgstr "VFolder for emne"
-
-#~ msgid "VFolder on Sender"
-#~ msgstr "VFolder for sender"
-
-#~ msgid "VFolder on Recipients"
-#~ msgstr "VFolder for mottakere"
-
-#~ msgid "Mark as Read"
-#~ msgstr "Marker som lest"
-
-#~ msgid "Mark as Unread"
-#~ msgstr "Merk som ulest"
-
-#~ msgid "Move to Folder..."
-#~ msgstr "Flytt til mappe..."
-
-#~ msgid "Copy to Folder..."
-#~ msgstr "Kopier til mappe..."
-
-#~ msgid "Do you accept?"
-#~ msgstr "Aksepterer du?"
-
-#~ msgid "Click here to add a contact"
-#~ msgstr "Klikk her for å legge til en kontakt"
-
-#~ msgid "_Compose"
-#~ msgstr "_Skriv"
-
-#~ msgid "No such host %s."
-#~ msgstr "Ingen vert %s."
-
-#~ msgid "Temporarily unable to look up hostname %s."
-#~ msgstr "Midlertidig ute av stand til å slå opp vertsnavn %s."
-
-#~ msgid "Remove action"
-#~ msgstr "Fjern handling"
-
-#~ msgid "Remove criterion"
-#~ msgstr "Fjern kriterie"
-
-#~ msgid "Disable."
-#~ msgstr "Slå av."
-
-#~ msgid "PLAIN"
-#~ msgstr "PLAIN"
-
-#~ msgid ""
-#~ "This option will connect to the server using a the PLAIN SASL mechanism if "
-#~ "the server supports it."
-#~ msgstr ""
-#~ "Dette alternativet kobler til tjeneren med bruk av PLAIN SASL-mekanismen "
-#~ "hvis tjeneren støtter det."
-
-#~ msgid "URL string `%s' contains no protocol"
-#~ msgstr "URL-streng `%s' inneholder ikke protokoll"
-
-#~ msgid "URL string `%s' contains an invalid protocol"
-#~ msgstr "URL-streng `%s' inneholder en ugyldig protokoll"
-
-#~ msgid "Port number in URL `%s' is non-numeric"
-#~ msgstr "Portnummer i URL `%s' er ikke-numerisk"
-
-#~ msgid "Secure IMAPv4"
-#~ msgstr "Sikker IMAPv4"
-
-#~ msgid "For reading and storing mail on IMAP servers over an SSL connection."
-#~ msgstr ""
-#~ "For lesing og lagring av e-post på IMAP-tjenere over en SSL-forbindelse."
-
-#~ msgid "Secure POP"
-#~ msgstr "Sikker POP"
-
-#~ msgid ""
-#~ "For connecting to POP servers over an SSL connection. The POP protocol can "
-#~ "also be used to retrieve mail from certain web mail providers and "
-#~ "proprietary email systems."
-#~ msgstr ""
-#~ "For tilkobling til POP-tjenere over en SSL-forbindelse. POP-protokollen kan "
-#~ "også brukes for å hente e-post fra enkelte e-posttilbydere via web i tillegg "
-#~ "til proprietære e-postsystemer."
-
-#~ msgid "Secure SMTP"
-#~ msgstr "Sikker SMTP"
-
-#~ msgid ""
-#~ "For delivering mail by connecting to a remote mailhub using SMTP over an SSL "
-#~ "connection.\n"
-#~ msgstr ""
-#~ "For levering av e-post via en ekstern e-posttjener med SMTP over en "
-#~ "SSL-forbindelse.\n"
-
-#~ msgid ""
-#~ "One or more of your servers are not configured correctly.\n"
-#~ "Do you wish to save anyway?"
-#~ msgstr ""
-#~ "En eller flere av dine tjenere er ikke korrekt konfigurert.\n"
-#~ "Vil du lagre likevel?"
-
-#~ msgid "Unspecified"
-#~ msgstr "Uspesifisert"
-
-#~ msgid "Advanced"
-#~ msgstr "Avansert"
-
-#~ msgid "Check settings"
-#~ msgstr "Sjekk innstillinger"
-
-#~ msgid "Email address:"
-#~ msgstr "E-post adresse:"
-
-#~ msgid "Evolution Mail Configuration"
-#~ msgstr "Evolution e-post-konfigurasjon"
-
-#~ msgid "Hostname:"
-#~ msgstr "Vertsnavn:"
-
-#~ msgid "IMAP"
-#~ msgstr "IMAP"
-
-#~ msgid "Include this account when receiving mail"
-#~ msgstr "Ta med denne kontoen når du mottar e-post"
-
-#~ msgid "Keep mail on server"
-#~ msgstr "Behold e-post på tjener"
-
-#~ msgid "Kerberos"
-#~ msgstr "Kerberos"
-
-#~ msgid "Mail Account"
-#~ msgstr "E-post konto"
-
-#~ msgid "Mail Configuration Druid"
-#~ msgstr "E-post-konfigurasjonsdruide"
-
-#~ msgid "Optional"
-#~ msgstr "Valgfri"
-
-#~ msgid "Password:"
-#~ msgstr "Passord:"
-
-#~ msgid "Plain Text"
-#~ msgstr "Vanlig tekst"
-
-#~ msgid "Remember my password"
-#~ msgstr "Husk mitt passord"
-
-#~ msgid "Reply address:"
-#~ msgstr "Svaradresse:"
-
-#~ msgid "Required"
-#~ msgstr "Nødvendige"
-
-#~ msgid "Select signature file"
-#~ msgstr "Velg signaturfil"
-
-#~ msgid "Server type:"
-#~ msgstr "Tjenertype:"
-
-#~ msgid "Signature:"
-#~ msgstr "Signatur:"
-
-#~ msgid "Source"
-#~ msgstr "Kilde"
-
-#~ msgid "Transport"
-#~ msgstr "Transport"
-
-#~ msgid "Transport Authentication"
-#~ msgstr "Autentisering for transport"
-
-#~ msgid ""
-#~ "Type the name by which you would like to refer to these servers. For "
-#~ "example: \"Work\" or \"Home\"."
-#~ msgstr ""
-#~ "Skriv inn et referansenavn for disse tjenerene. For eksempel: \"Arbeid\" "
-#~ "eller \"Hjemme\"."
-
-#~ msgid "minutes."
-#~ msgstr "minutter."
-
-#~ msgid ""
-#~ "Failed to verify the incoming mail configuration.\n"
-#~ "You may experience problems retrieving your mail from %s"
-#~ msgstr ""
-#~ "Feil under verifisering av konfigurasjon av innkommende\n"
-#~ "post. Du vil kunne oppleve problemer ved henting av e-post fra %s"
-
-#~ msgid ""
-#~ "Failed to verify the outgoing mail configuration.\n"
-#~ "You may experience problems sending your mail using %s"
-#~ msgstr ""
-#~ "Feil under verifisering av konfigurasjon av utgående e-post.\n"
-#~ "Du vil kunne oppleve problemer ved sending av e-post gjennom %s"
-
-#~ msgid "Add to addressbook (FIXME)"
-#~ msgstr "Legg til i addressebok"
-
-#~ msgid "Open in addressbook (FIXME)"
-#~ msgstr "Åpne i adressebok"
-
-#~ msgid "%s message %d of %d (uid \"%s\")"
-#~ msgstr "%s melding %d av %d (uid \"%s\")"
-
-#~ msgid "No authentication required"
-#~ msgstr "Ingen autentisering nødvendig"
-
-#~ msgid ""
-#~ "This option will connect to the SMTP server without using any kind of "
-#~ "authentication. This should be fine for connecting to most SMTP servers."
-#~ msgstr ""
-#~ "Dette alternativet lar deg koble til SMTP-tjeneren uten bruk av "
-#~ "autentisering. Dette bør fungere for de fleste SMTP-tjenerene."
-
-#~ msgid "[ %s ]"
-#~ msgstr "[ %s ]"
-
-#~ msgid "%s, et al."
-#~ msgstr "%s, et al."
-
-#~ msgid "<unknown>"
-#~ msgstr "<ukjent>"
-
-#~ msgid "_Message Hiding"
-#~ msgstr "_Meldingsskjuling"
-
-#~ msgid "The time is invalid"
-#~ msgstr "Tide er gyldig"
-
-#~ msgid "Edit Filter Rule"
-#~ msgstr "Rediger filterregel"
-
-#~ msgid "Add VFolder Rule"
-#~ msgstr "Legg til regel for VFolder"
-
-#~ msgid "Edit VFolder Rule"
-#~ msgstr "Rediger VFolder regel"
-
-#~ msgid "Disabled"
-#~ msgstr "Slått av"
-
-#~ msgid "Synchronize"
-#~ msgstr "Synkroniser"
-
-#~ msgid "Copy From Pilot"
-#~ msgstr "Kopier fra Pilot"
-
-#~ msgid "Copy To Pilot"
-#~ msgstr "Kopier til Pilot"
-
-#~ msgid "Merge From Pilot"
-#~ msgstr "Flett fra Pilot"
-
-#~ msgid "Merge To Pilot"
-#~ msgstr "Flett til Pilot"
-
-#~ msgid "JP Rosevear <jpr@helixcode.com>"
-#~ msgstr "JP Rosevar <jpr@helixcode.com>"
-
-#~ msgid "Original Author:"
-#~ msgstr "Opprinnelig forfatter:"
-
-#~ msgid "Eskil Heyn Olsen <deity@eskil.dk>"
-#~ msgstr "Eskil Heyn Olsen <deity@eskil.dk>"
-
-#~ msgid "Evolution Addressbook Conduit"
-#~ msgstr "Evolution adressebok-komponent"
-
-#~ msgid "(C) 1998-2000 the Free Software Foundation and Helix Code"
-#~ msgstr "© 1998-2000 the Free Software Foundation og Helix Code"
-
-#~ msgid "Configuration utility for the evolution addressbook conduit.\n"
-#~ msgstr "Konfigurasjonsverktøy for evolutions adressebok-komponent.\n"
-
-#~ msgid "gnome-unknown.xpm"
-#~ msgstr "gnome-unknown.xpm"
-
-#~ msgid "Synchronize Action"
-#~ msgstr "Synkroniseringshandling"
-
-#~ msgid "Conduit state"
-#~ msgstr "Komponent-tilstand"
-
-#~ msgid ""
-#~ "No pilot configured, please choose the\n"
-#~ "'Pilot Link Properties' capplet first."
-#~ msgstr ""
-#~ "Ingen pilot er konfigurert, vennligst\n"
-#~ "velg cappleten 'Egenskaper for pilot link' først."
-
-#~ msgid "Not connected to the gnome-pilot daemon"
-#~ msgstr "Ikke tilkoblet gnome-pilot daemon"
-
-#~ msgid ""
-#~ "An error occured when trying to fetch\n"
-#~ "pilot list from the gnome-pilot daemon"
-#~ msgstr ""
-#~ "En feil oppsto under forsøk på å hente\n"
-#~ "pilot-listen fra gnome-pilot daemonen"
-
-#~ msgid "Configure the address conduit"
-#~ msgstr "Konfigurer oppgavelisten"
-
-#~ msgid "Evolution Address conduit "
-#~ msgstr "Oppgaver"
-
-#~ msgid "Evolution Calendar Conduit"
-#~ msgstr "Evolution kalender-komponent"
-
-#~ msgid "Configuration utility for the evolution calendar conduit.\n"
-#~ msgstr "Konfigurasjonsverktøy for evolutions kalender-komponent.\n"
-
-#~ msgid "Configure the GnomeCal conduit"
-#~ msgstr "Konfigurer GnomeCal-komponent"
-
-#~ msgid "Evolution Calendar conduit"
-#~ msgstr "Evolution kalender-komponent"
-
-#~ msgid "Configure the todo conduit"
-#~ msgstr "Konfigurer oppgavelistekomponenten"
-
-#~ msgid "Evolution ToDo conduit "
-#~ msgstr "Oppgaver"
-
-#~ msgid "Evolution ToDo Conduit"
-#~ msgstr "Evolution oppgaveliste-komponent"
-
-#~ msgid "Configuration utility for the evolution todo conduit.\n"
-#~ msgstr "Konfigurasjonsverktøy for evolutions oppgavelistekomponent.\n"
-
-#~ msgid "Set Flag"
-#~ msgstr "Sett flagg"
-
-#~ msgid "matches regex"
-#~ msgstr "er lik regex"
-
-#~ msgid "Opening Trash folder for %s"
-#~ msgstr "Åpner søppel-mappe for %s"
-
-#~ msgid "Getting matches"
-#~ msgstr "Finner treff"
-
-#~ msgid "Attachment (FIXME: implement me)"
-#~ msgstr "Vedlegg"
-
-#~ msgid "Quoted (FIXME: implement me)"
-#~ msgstr "Sitert"
-
-#~ msgid "Enter the identity you wish to send this message from"
-#~ msgstr ""
-#~ "Skriv inn identiteten du ønsker å bruke ved sending av denne meldingen"
-
-#~ msgid "Enter the subject of the mail"
-#~ msgstr "Skriv inn emnet for meldingen"
-
-#~ msgid "Account Properties"
-#~ msgstr "Egenskaper for konto"
-
-#~ msgid "E-Mail Address:"
-#~ msgstr "E-post adresse:"
-
-#~ msgid "Include in \"Get Mail\" operations."
-#~ msgstr "Ta med i \"Hent e-post\"-operasjoner."
-
-#~ msgid "Incoming Mail Server"
-#~ msgstr "E-posttjener for innkommende post"
-
-#~ msgid "Miscellaneous"
-#~ msgstr "Forskjellig"
-
-#~ msgid "Outgoing Mail Server"
-#~ msgstr "E-posttjener for utgående post"
-
-#~ msgid "Servers"
-#~ msgstr "Tjenere"
-
-#~ msgid "_Addressbook Configuration..."
-#~ msgstr "Konfigurasjon av adressebok..."
-
-#~ msgid "_Print Contacts..."
-#~ msgstr "S_kriv ut kontakter..."
-
-#~ msgid "Ca_lendar"
-#~ msgstr "Ka_lender"
-
-#~ msgid "Calendar Preferences..."
-#~ msgstr "Brukervalg for kalender..."
-
-#~ msgid "_Print this calendar"
-#~ msgstr "S_kriv ut denne kalenderen"
-
-#~ msgid "Create Rule"
-#~ msgstr "Lag regel"
-
-#~ msgid "Fi_lter on Sender"
-#~ msgstr "Fi_ltrer etter sender"
-
-#~ msgid "Filter on Rec_ipients"
-#~ msgstr "F_iltrer etter mottaker"
-
-#~ msgid "Get Mail"
-#~ msgstr "Hent e-post"
-
-#~ msgid "Reply to _Sender"
-#~ msgstr "Svar til _sender"
-
-#~ msgid "Show _All Messages"
-#~ msgstr "Vis _alle meldinger"
-
-#~ msgid "_Filter on Subject"
-#~ msgstr "_Filtrer etter emne"
-
-#~ msgid "_Mail Configuration..."
-#~ msgstr "_E-post konfigurasjon..."
-
-#~ msgid "_Open in New Window"
-#~ msgstr "_Åpne i nytt vindu"
-
-#~ msgid "_Print Message"
-#~ msgstr "S_kriv ut melding"
-
-#~ msgid "_VFolder on Subject"
-#~ msgstr "_VFolder for emne"
-
-#~ msgid "Customi_ze..."
-#~ msgstr "_Tilpass..."
-
-#~ msgid "Show the _Folder Bar"
-#~ msgstr "Vis _mappelinjen"
-
-#~ msgid "Show the _Shortcut Bar"
-#~ msgstr "Vis _snarveilinjen"
-
-#~ msgid "The priority must be between 1 and 9, inclusive"
-#~ msgstr "Prioriteten må være mellom 0 og 9, inklusive"
-
-#~ msgid "Schedule meeting"
-#~ msgstr "Sett opp møte"
-
-#~ msgid "Edit this appointment..."
-#~ msgstr "Rediger denne avtalen..."
-
-#~ msgid "New"
-#~ msgstr "Ny"
-
-#~ msgid "Saving changes to message..."
-#~ msgstr "Lagre endringer i meldingen..."
-
-#~ msgid "Save changes to message..."
-#~ msgstr "Lagre endringer til meldingen..."
-
-#~ msgid "Error saving composition to 'Drafts': %s"
-#~ msgstr "Feil under lagring av brevet i 'Skisser': %s"
-
-#~ msgid "Connect to server"
-#~ msgstr "Koble til tjener"
-
-#~ msgid "Registering local folder"
-#~ msgstr "Registrerer lokal mappe"
-
-#~ msgid "Appending \"%s\""
-#~ msgstr "Legger til \"%s\""
-
-#~ msgid "Appending a message without a subject"
-#~ msgstr "Legger til en melding uten emne"
-
-#~ msgid "Moving messages from \"%s\" into \"%s\""
-#~ msgstr "Flytter meldinger fra \"%s\" til \"%s\""
-
-#~ msgid "Copying messages from \"%s\" into \"%s\""
-#~ msgstr "Kopierer meldinger fra \"%s\" til \"%s\""
-
-#~ msgid "Move messages from \"%s\" into \"%s\""
-#~ msgstr "Flytt meldinger fra \"%s\" til \"%s\""
-
-#~ msgid "Copy messages from \"%s\" into \"%s\""
-#~ msgstr "Kopier meldinger fra \"%s\" til \"%s\""
-
-#~ msgid "(No description)"
-#~ msgstr "(Ingen beskrivelse)"
-
-#~ msgid "Loading %s Folder for %s"
-#~ msgstr "Laster %s-mappe for %s"
-
-#~ msgid "Load %s Folder for %s"
-#~ msgstr "Last %s-mappe for %s"
-
-#~ msgid ""
-#~ "Error while preparing to %s:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Feil under forberedelser til %s:\n"
-#~ "%s"
-
-#~ msgid ""
-#~ "Error while `%s':\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Feil under `%s':\n"
-#~ "%s"
-
-#~ msgid "Error reading commands from dispatching thread."
-#~ msgstr "Feil under lesing av kommandoer fra utsender-tråd."
-
-#~ msgid "Corrupted message from dispatching thread?"
-#~ msgstr "Korrupt melding fra utsender-tråd?"
-
-#~ msgid "Get store for \"%s\""
-#~ msgstr "Hent lager for \"%s\""
-
-#~ msgid "Unsubscribe from folder \"%s\""
-#~ msgstr "Slett abonnement på mappe \"%s\""
-
-#~ msgid "All Folders"
-#~ msgstr "Alle mapper"
-
-#~ msgid "Display folders whose name contain:"
-#~ msgstr "Vis mapper som inneholder:"
-
-#~ msgid "Query"
-#~ msgstr "Spør"
-
-#~ msgid "Subscribed"
-#~ msgstr "Abonnert"
-
-#~ msgid "Local stores do not have a default folder"
-#~ msgstr "Lokale lager har ikke en standardmappe"
-
-#~ msgid "Local folders may not be nested."
-#~ msgstr "Lokale mapper kan ikke være rekursive."
-
-#~ msgid "Page Set_up"
-#~ msgstr "Sideoppsett"
-
-#~ msgid "_Object"
-#~ msgstr "_Objekt"
-
-#~ msgid "Ne_xt"
-#~ msgstr "Nes_te"
-
-#~ msgid "_Toolbars"
-#~ msgstr "Verk_tøylinjer"
-
-#~ msgid "_Forms"
-#~ msgstr "Sk_jemaer"
-
-#~ msgid "Configure the Evolution Calendar conduit"
-#~ msgstr "Konfigurasjon av Evolution kalenderkomponent"
-
-#~ msgid "Configure the Evolution ToDo conduit"
-#~ msgstr "Konfigurasjon av Evolution oppgavelistekomponent"
-
-#~ msgid "C_lassification:"
-#~ msgstr "K_lassifisering"
-
-#~ msgid "Su_mmary"
-#~ msgstr "Sa_mmendrag"
-
-#~ msgid "Time"
-#~ msgstr "Tid"
-
-#~ msgid "description"
-#~ msgstr "beskrivelse"
-
-#~ msgid "Evolution shell factory"
-#~ msgstr "Factory for Evolution skall"
-
-#~ msgid ""
-#~ "\n"
-#~ "Mr.\n"
-#~ "Mrs.\n"
-#~ "Ms.\n"
-#~ "Miss\n"
-#~ "Dr.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Hr.\n"
-#~ "Fru.\n"
-#~ "Frk.\n"
-#~ "Frøken\n"
-#~ "Dr.\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Sr.\n"
-#~ "Jr.\n"
-#~ "I\n"
-#~ "II\n"
-#~ "III\n"
-#~ "Esq.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Sr.\n"
-#~ "Jr.\n"
-#~ "I\n"
-#~ "II\n"
-#~ "III\n"
-#~ "Esq.\n"
-
-#~ msgid "task-editor-dialog"
-#~ msgstr "task-editor-dialog"
-
-#~ msgid "event-editor-dialog"
-#~ msgstr "event-editor-dialog"
-
-#~ msgid "S_ummary"
-#~ msgstr "Sa_mmendrag"
-
-#~ msgid "Open..."
-#~ msgstr "Åpne..."
-
-#~ msgid "Days"
-#~ msgstr "Dager"
-
-#~ msgid "Hours"
-#~ msgstr "Timer"
-
-#~ msgid "Mail _to:"
-#~ msgstr "Send _til:"
-
-#~ msgid "Minutes"
-#~ msgstr "Minutter"
-
-#~ msgid "_Audio"
-#~ msgstr "_Lyd"
-
-#~ msgid "_Mail"
-#~ msgstr "_E-post"
-
-#~ msgid "_Program"
-#~ msgstr "_Program"
-
-#~ msgid "Open a calendar"
-#~ msgstr "Åpne en kalender"
-
-#~ msgid "Failed to perform regex search on message header: %s"
-#~ msgstr "Feil under utførelse av søk etter vanlig uttrykk i meldingshode: %s"
-
-#~ msgid "You have no Outbox configured"
-#~ msgstr "Du har ikke konfigurert en utboks"
-
-#~ msgid ""
-#~ "Could not open file %s:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Kan ikke åpne fil %s:\n"
-#~ "%s"
-
-#~ msgid "Fetch email from %s"
-#~ msgstr "Hent e-post fra %s"
-
-#~ msgid "Filtering email on demand"
-#~ msgstr "Filtrering av post etter behov"
-
-#~ msgid "Filter email on demand"
-#~ msgstr "Fi_ltrer e-post ved behov"
-
-#~ msgid "Sending queue"
-#~ msgstr "Sender kø"
-
-#~ msgid "Send queue"
-#~ msgstr "Send kø"
-
-#~ msgid "Examining %s"
-#~ msgstr "Undersøker %s"
-
-#~ msgid ""
-#~ "Could not read UID cache file \"%s\". You may receive duplicate messages."
-#~ msgstr ""
-#~ "Kunne ikke lese bufferfil for UID \"%s\". Du kan motta dupliserte meldinger."
-
-#~ msgid "Retrieving message %d of %d"
-#~ msgstr "Henter melding %d av %d"
-
-#~ msgid "Saving changes to %s"
-#~ msgstr "Lagrer endringer til %s"
-
-#~ msgid "_Find..."
-#~ msgstr "_Finn..."
-
-#~ msgid "_Redo"
-#~ msgstr "Gjenopp_rett"
-
-#~ msgid "_Undo"
-#~ msgstr "_Angre"
-
-#~ msgid "Group %i"
-#~ msgstr "Gruppe %i"
-
-#~ msgid "<b>Error loading calendar:<br>Calendar in use."
-#~ msgstr "<b>Feil under lasting av kalender:<br>Kalender i bruk."
-
-#~ msgid "Could not create a tasks file in `%s'"
-#~ msgstr "Kunne ikke opprette oppgavefil i `%s'"
-
-#~ msgid "Could not create a folder in `%s'"
-#~ msgstr "Kunne ikke opprette mappe i `%s'"
-
-#~ msgid " for "
-#~ msgstr " for "
-
-#~ msgid "Show all hidden"
-#~ msgstr "Vis alle skjulte"
-
-#~ msgid "Hide selected"
-#~ msgstr "Skjul valgte"
-
-#~ msgid "Hide deleted"
-#~ msgstr "Skjul slettede"
-
-#~ msgid "Hide Subject"
-#~ msgstr "Skjul emne"
-
-#~ msgid "Hide from Sender"
-#~ msgstr "Skjul fra sender"
-
-#~ msgid "Hide from Sender <%s>"
-#~ msgstr "Skjul fra sender <%s>"
-
-#~ msgid "_Source"
-#~ msgstr "_Kildekode"
-
-#~ msgid "UNIX MH-format mail directories (CamelLocal version)"
-#~ msgstr "UNIX e-postkataloger i MH-format (CamelLocal versjon)"
-
-#~ msgid "UNIX mbox-format mail files (CamelLocal version)"
-#~ msgstr "UNIX e-post filer i mbox-format (CamelLocal versjon)"
-
-#~ msgid "UNIX qmail maildir-format mail files (CamelLocal version)"
-#~ msgstr "UNIX qmail maildir format postfiler (CamelLocal versjon)"
-
-#~ msgid "You have no mail sources configured"
-#~ msgstr "Du har ikke konfigurert e-postkilder"
-
-#~ msgid "Reply-to:"
-#~ msgstr "Svar-til:"
-
-#~ msgid "Calendar Repository"
-#~ msgstr "Kalenderlager"
-
-#~ msgid "Congratulations, your mail configuration is complete.\n"
-#~ msgstr "Gratulerer, konfigurasjon av e-post er fullført.\n"
-
-#~ msgid ""
-#~ "Enter your name and email address to be used in outgoing mail. You may also, "
-#~ "optionally, enter the name of your organization, and the name of a file to "
-#~ "read your signature from."
-#~ msgstr ""
-#~ "Skriv inn ditt navn og din e-post adresse for bruk i utgående post. Du kan "
-#~ "også skrive inn navnet på din organisasjon, og navnet på en signaturfil."
-
-#~ msgid "Full name:"
-#~ msgstr "Fullt navn:"
-
-#~ msgid "Signature File"
-#~ msgstr "Signaturfil"
-
-#~ msgid "Server:"
-#~ msgstr "Tjener:"
-
-#~ msgid "Mail source type:"
-#~ msgstr "Type e-post-kilde:"
-
-#~ msgid ""
-#~ "Select the kind of mail server you have, and enter the relevant information "
-#~ "about it.\n"
-#~ "\n"
-#~ "If the server requires authentication, you can click the \"Detect supported "
-#~ "types...\" button after entering the other information."
-#~ msgstr ""
-#~ "Velg hvilken type e-post tjener du har, og skriv inn relevant informasjon om "
-#~ "denne.\n"
-#~ "\n"
-#~ "Hvis tjeneren trenger autentisering, kan du klikke på \"Søk etter støttede "
-#~ "typer...\" knappen etter at du har skrevet inn resten av informasjonen."
-
-#~ msgid "News source type:"
-#~ msgstr "Type news-kilde:"
-
-#~ msgid ""
-#~ "Select the kind of news server you have, and enter the relevant information "
-#~ "about it.\n"
-#~ "\n"
-#~ "If the server requires authentication, you can click the \"Detect supported "
-#~ "types...\" button after entering the other information."
-#~ msgstr ""
-#~ "Velg hvilken type news-tjener du har, og skriv inn relevant informasjon om "
-#~ "denne.\n"
-#~ "\n"
-#~ "Hvis tjeneren trenger autentisering, kan du klikke på \"Søk etter støttede "
-#~ "typer...\"-knappen etter at du har skrevet inn resten av informasjonen."
-
-#~ msgid "Mail transport type:"
-#~ msgstr "Type e-post-transport"
-
-#~ msgid ""
-#~ "Select the kind of mail server you have, and enter the relevant information "
-#~ "about it.\n"
-#~ "If the server requires authentication, you can click the \"Detect supported "
-#~ "types...\" button after entering the other information."
-#~ msgstr ""
-#~ "Velg hvilken type e-post tjener du har, og skriv inn relevant informasjon om "
-#~ "denne.\n"
-#~ "Hvis tjeneren trenger autentisering, kan du klikke på \"Søk etter støttede "
-#~ "typer...\" knappen etter at du har skrevet inn resten av informasjonen."
-
-#~ msgid "Add Identity"
-#~ msgstr "Legg til identitet"
-
-#~ msgid "Edit Identity"
-#~ msgstr "Rediger identitet"
-
-#~ msgid "Edit Source"
-#~ msgstr "Rediger kilde"
-
-#~ msgid "Add News Server"
-#~ msgstr "Legg til news-tjener"
-
-#~ msgid "Edit News Server"
-#~ msgstr "Rediger news-tjener"
-
-#~ msgid "The connection was successful!"
-#~ msgstr "Tilkoblingen var vellykket!"
-
-#~ msgid "Querying authorization capabilities of \"%s\""
-#~ msgstr "Spør etter autorisasjonsegenskaper for \"%s\""
-
-#~ msgid "Query authorization at \"%s\""
-#~ msgstr "Spør etter autorisasjon hos \"%s\""
-
-#~ msgid "Identities"
-#~ msgstr "Identiteter"
-
-#~ msgid "Mail Sources"
-#~ msgstr "E-post-kilder"
-
-#~ msgid "Mail Transport"
-#~ msgstr "E-post-transport"
-
-#~ msgid "News Servers"
-#~ msgstr "News-tjenere"
-
-#~ msgid "News Sources"
-#~ msgstr "News-kilder"
-
-#~ msgid "No GPG/PGP support available in this copy of Evolution."
-#~ msgstr "Ingen GPG/PGP-støtte tilgjengelig i denne versjonen av Evolution."
-
-#~ msgid "Server Timeouts"
-#~ msgstr "Tidsavbrudd for tjener"
-
-#~ msgid "Sending a message without a subject"
-#~ msgstr "Sender en melding uten emne"
-
-#~ msgid "Mark messages in folder \"%s\""
-#~ msgstr "Merk meldinger i mappe \"%s\""
-
-#~ msgid "Scan folders in \"%s\""
-#~ msgstr "Skann foldere i \"%s\""
-
-#~ msgid "Attaching messages from folder \"%s\""
-#~ msgstr "Legger ved meldinger fra mappe \"%s\""
-
-#~ msgid "Attach messages from \"%s\""
-#~ msgstr "Legg ved meldinger fra \"%s\""
-
-#~ msgid "Forwarding messages \"%s\""
-#~ msgstr "Videresender meldinger \"%s\""
-
-#~ msgid "Forwarding a message without a subject"
-#~ msgstr "Videresender en melding uten emne"
-
-#~ msgid "Forward message \"%s\""
-#~ msgstr "Videresend meldingen \"%s\""
-
-#~ msgid ""
-#~ "Failed to generate mime part from message while generating forwarded message."
-#~ msgstr ""
-#~ "Kunne ikke generere MIME-del fra melding under generering av videresendt "
-#~ "melding."
-
-#~ msgid "Creating \"%s\""
-#~ msgstr "Oppretter \"%s\""
-
-#~ msgid "Exception while reporting result to shell component listener."
-#~ msgstr "Unntak under rapportering av resultat til skallkomponentens lytter."
-
-#~ msgid "Save messages from folder \"%s\""
-#~ msgstr "Lagre meldinger fra mappe \"%s\""
-
-#~ msgid "Rebuilding message view"
-#~ msgstr "Bygger opp meldingsvisningen på nytt"
-
-#~ msgid "Rebuild message view"
-#~ msgstr "Gjenoppbygg meldingsvisningen"
-
-#~ msgid "Note: When converting between mailbox formats, a failure\n"
-#~ msgstr "Merk: Ved konvertering mellom postboksformater, kan en feil\n"
-
-#~ msgid "External Directories"
-#~ msgstr "Eksterne kataloger"
-
-#~ msgid "Port Number:"
-#~ msgstr "Portnummer:"
-
-#~ msgid "Outline:"
-#~ msgstr "Omriss:"
-
-#~ msgid "Headings:"
-#~ msgstr "Topptekster:"
-
-#~ msgid "Highlighted day:"
-#~ msgstr "Merket dag:"
-
-#~ msgid "Day numbers:"
-#~ msgstr "Dagnummer:"
-
-#~ msgid "Current day's number:"
-#~ msgstr "Nummer for idag:"
-
-#~ msgid "To-Do item that is not yet due:"
-#~ msgstr "Oppgavelisteoppføring som ikke har gått ut ennå:"
-
-#~ msgid "To-Do item that is due today:"
-#~ msgstr "Oppgavelisteoppføring som går ut idag:"
-
-#~ msgid "To-Do item that is overdue:"
-#~ msgstr "Oppgavelisteoppføring som har gått ut:"
-
-#~ msgid "Expunging \"%s\""
-#~ msgstr "Fjerner \"%s\""
-
-#~ msgid "Expunge \"%s\""
-#~ msgstr "Tøm \"%s\""
-
-#~ msgid "Loading \"%s\""
-#~ msgstr "Laster \"%s\""
-
-#~ msgid "Load \"%s\""
-#~ msgstr "Last \"%s\""
-
-#~ msgid "Synchronizing \"%s\""
-#~ msgstr "Synkroniserer \"%s\""
-
-#~ msgid "Synchronize \"%s\""
-#~ msgstr "Synkroniser \"%s\""
-
-#~ msgid "Displaying message UID \"%s\""
-#~ msgstr "Viser melding-UID \"%s\""
-
-#~ msgid "Clearing message display"
-#~ msgstr "Tømmer meldingsvisning"
-
-#~ msgid "Display message UID \"%s\""
-#~ msgstr "Vis meldings-UID \"%s\""
-
-#~ msgid "Opening messages from folder \"%s\""
-#~ msgstr "Åpner meldinger fra mappe \"%s\""
-
-#~ msgid "Open messages from \"%s\""
-#~ msgstr "Åpne meldinger fra \"%s\""
-
-#~ msgid "Viewing messages from folder \"%s\""
-#~ msgstr "Viser meldinger fra mappe \"%s\""
-
-#~ msgid "View messages from \"%s\""
-#~ msgstr "Vis meldinger fra \"%s\""
-
-#~ msgid "Retrieving message %d of %d (uid \"%s\")"
-#~ msgstr "Henter melding %d av %d (uid \"%s\")"
-
-#~ msgid "N_ew Directory Server"
-#~ msgstr "Ny katalog-tj_ener"
-
-#~ msgid "appointment"
-#~ msgstr "avtaler"
-
-#~ msgid "task"
-#~ msgstr "oppgave"
-
-#~ msgid "journal entry"
-#~ msgstr "journaloppføring"
-
-#~ msgid "Year:"
-#~ msgstr "År:"
-
-#~ msgid ""
-#~ "Please select the date you want to go to.\n"
-#~ "When you click on a day, you will be taken\n"
-#~ "to that date."
-#~ msgstr ""
-#~ "Vennligst velg datoen du vil gå til.\n"
-#~ "Når du klikker på en dag vil du flytte\n"
-#~ "deg til denne datoen."
-
-#~ msgid "_Mail Configuration"
-#~ msgstr "E-post-ko_nfigurasjon"
-
-#~ msgid "_Save Calendar As"
-#~ msgstr "Lagre kalender _som"
-
-#~ msgid "may"
-#~ msgstr "mai"
-
-#~ msgid "sept"
-#~ msgstr "sept"
-
-#~ msgid "sunday"
-#~ msgstr "søndag"
-
-#~ msgid "monday"
-#~ msgstr "mandag"
-
-#~ msgid "tuesday"
-#~ msgstr "tirsdag"
-
-#~ msgid "tues"
-#~ msgstr "tirs"
-
-#~ msgid "wednesday"
-#~ msgstr "onsdag"
-
-#~ msgid "wednes"
-#~ msgstr "ons"
-
-#~ msgid "thursday"
-#~ msgstr "torsdag"
-
-#~ msgid "thur"
-#~ msgstr "tor"
-
-#~ msgid "thurs"
-#~ msgstr "tors"
-
-#~ msgid "friday"
-#~ msgstr "fredag"
-
-#~ msgid "saturday"
-#~ msgstr "lørdag"
-
-#~ msgid "fortnight"
-#~ msgstr "14-dager"
-
-#~ msgid "min"
-#~ msgstr "min"
-
-#~ msgid "sec"
-#~ msgstr "sek"
-
-#~ msgid "tomorrow"
-#~ msgstr "imorgen"
-
-#~ msgid "yesterday"
-#~ msgstr "igår"
-
-#~ msgid "today"
-#~ msgstr "idag"
-
-#~ msgid "last"
-#~ msgstr "forrige"
-
-#~ msgid "this"
-#~ msgstr "denne"
-
-#~ msgid "next"
-#~ msgstr "neste"
-
-#~ msgid "first"
-#~ msgstr "første"
-
-#~ msgid "third"
-#~ msgstr "tredje"
-
-#~ msgid "fourth"
-#~ msgstr "fjerde"
-
-#~ msgid "fifth"
-#~ msgstr "femte"
-
-#~ msgid "sixth"
-#~ msgstr "sjette"
-
-#~ msgid "seventh"
-#~ msgstr "syvende"
-
-#~ msgid "eighth"
-#~ msgstr "åttende"
-
-#~ msgid "ninth"
-#~ msgstr "niende"
-
-#~ msgid "tenth"
-#~ msgstr "tiende"
-
-#~ msgid "eleventh"
-#~ msgstr "ellevte"
-
-#~ msgid "twelfth"
-#~ msgstr "tolvte"
-
-#~ msgid "ago"
-#~ msgstr "siden"
-
-#~ msgid "Could not create summary"
-#~ msgstr "Kunne ikke opprette sammendrag"
-
-#~ msgid ""
-#~ "For reading mail delivered by the local system, and for storing mail on "
-#~ "local disk."
-#~ msgstr ""
-#~ "For lesing av e-post levert av det lokale systemet, og for lagring av e-post "
-#~ "på lokal disk."
-
-#~ msgid "Could not rename folder %s to %s: destination exists"
-#~ msgstr "Kunne ikke endre navn på mappe %s til %s: målet eksisterer"
-
-#~ msgid "Mbox folders may not be nested."
-#~ msgstr "Mbox-mapper kan ikke være rekursive."
-
-#~ msgid "Could not open summary %s"
-#~ msgstr "Kunne ikke åpne sammendrag %s"
-
-#~ msgid "Summary mismatch, aborting sync"
-#~ msgstr "Feil i sammendrag, avbryter synkronisering"
-
-#~ msgid "Summary mismatch, X-Evolution header missing"
-#~ msgstr "Feil i sammendrag, X-Evolution topptekst mangler"
-
-#~ msgid "Cannot copy data to output file: %s"
-#~ msgstr "Kan ikke kopiere data til utfil: %s"
-
-#~ msgid "Cannot append message to mh folder: %s"
-#~ msgstr "Kan ikke legge til melding i mh-mappe: %s"
-
-#~ msgid "Could not rename folder `%s': %s"
-#~ msgstr "Kunne ikke endre navn på mappe `%s': %s"
-
-#~ msgid "Could not rename folder `%s': %s exists"
-#~ msgstr "Kunne ikke endre navn på mappe `%s': %s eksisterer"
-
-#~ msgid "MH folders may not be nested."
-#~ msgstr "MH-mapper kan ikke være rekursive."
-
-#~ msgid "Local mail directory %s"
-#~ msgstr "Lokal e-postkatalog %s"
-
-#~ msgid "Bold"
-#~ msgstr "Uthevet"
-
-#~ msgid "Sets something as bold"
-#~ msgstr "Setter utvalg til uthevet"
-
-#~ msgid "Couldn't create pipe to %s: %s"
-#~ msgstr "Kunne ikke opprette rør til %s: %s"
-
-#~ msgid "Could not execute %s: %s\n"
-#~ msgstr "Kunne ikke kjøre %s: %s\n"
-
-#~ msgid "Cannot fork %s: %s"
-#~ msgstr "Kan ikke kjøre fork på %s: %s"
-
-#~ msgid "Cannot initialize Evolution's mail storage hash."
-#~ msgstr "Kan ikke initiere Evolutions e-postlagrings-hash."
-
-#~ msgid "_New appointment..."
-#~ msgstr "_Ny avtale..."
-
-#~ msgid "Monday\n"
-#~ msgstr "Mandag\n"
-
-#~ msgid "None\n"
-#~ msgstr "Ingen\n"
-
-#~ msgid ""
-#~ "Incoming\n"
-#~ "Outgoing"
-#~ msgstr ""
-#~ "Innkommende\n"
-#~ "Utgående"
-
-#~ msgid "window2"
-#~ msgstr "vindu2"
-
-#~ msgid ""
-#~ "This appointment has custom recurrence rules that cannot be edited by "
-#~ "Evolution.\n"
-#~ "\n"
-#~ "However, the appointment will recur at the appropriate time and will be "
-#~ "displayed properly in the calendar views."
-#~ msgstr ""
-#~ "Denne avtalen har egendefinerte regler for gjeninntreffelse som ikke kan "
-#~ "redigeres av Evolution.\n"
-#~ "\n"
-#~ "Avtalen vil uansett inntreffe til riktig tid og vil vises korrekt i "
-#~ "kalendervisningene."
-
-#~ msgid "Create to-do item"
-#~ msgstr "Opprett opgavelisteoppføring"
-
-#~ msgid "Edit to-do item"
-#~ msgstr "Rediger oppgavelisteoppføring"
-
-#~ msgid "Due Date:"
-#~ msgstr "Ferdig-dato:"
-
-#~ msgid "Item Comments:"
-#~ msgstr "Kommentarer for oppføring:"
-
-#~ msgid "Time display"
-#~ msgstr "Tidsvisning"
-
-#~ msgid "Time format"
-#~ msgstr "Tidsformat"
-
-#~ msgid "12-hour (AM/PM)"
-#~ msgstr "12 timer (AM/PM)"
-
-#~ msgid "24-hour"
-#~ msgstr "24 timer"
-
-#~ msgid "Weeks start on"
-#~ msgstr "Uken starter på"
-
-#~ msgid "Day range"
-#~ msgstr "Dagområde"
-
-#~ msgid ""
-#~ "Please select the start and end hours you want\n"
-#~ "to be displayed in the day view and week view.\n"
-#~ "Times outside this range will not be displayed\n"
-#~ "by default."
-#~ msgstr ""
-#~ "Vennligst velg start og slutt-tidene du ønsker\n"
-#~ "at skal vises i dagvisningen og ukevisningen.\n"
-#~ "Tider utenfor dette området vil ikke vises\n"
-#~ "som standard."
-
-#~ msgid "Day end:"
-#~ msgstr "Dagens slutt:"
-
-#~ msgid "Colors for display"
-#~ msgstr "Farger i visning"
-
-#~ msgid "Show on TODO List:"
-#~ msgstr "Vis på oppgavelisten:"
-
-#~ msgid "To Do List style options:"
-#~ msgstr "Alternativer for stil for oppgaveliste:"
-
-#~ msgid "Highlight overdue items"
-#~ msgstr "Merk utgåtte oppføringer"
-
-#~ msgid "Highlight not yet due items"
-#~ msgstr "Merk oppføringer som ikke har gått ut"
-
-#~ msgid "To Do List Properties"
-#~ msgstr "Egenskaper for oppgaveliste"
-
-#~ msgid "To Do List"
-#~ msgstr "Oppgaveliste"
-
-#~ msgid "Preferences"
-#~ msgstr "Brukervalg"
-
-#~ msgid "Alarm Properties"
-#~ msgstr "Egenskaper for alarmer"
-
-#~ msgid "Beep on display alarms"
-#~ msgstr "Pip ved visning av alarmer"
-
-#~ msgid "Audio alarms timeout after"
-#~ msgstr "Tidsavbrudd for lydalarmer"
-
-#~ msgid "Enable snoozing for "
-#~ msgstr "Slå på utsetting for "
-
-#~ msgid "does not match regex"
-#~ msgstr "er ulik regex"
-
-#~ msgid ""
-#~ "Welcome to the Evolution Mail configuration wizard!\n"
-#~ "By filling in some information about your email\n"
-#~ "settings, you can start sending and receiving email\n"
-#~ "right away. Click Next to continue."
-#~ msgstr ""
-#~ "Velkommen til Evolution E-post-konfigurasjonsdruiden!\n"
-#~ "Ved å fylle ut litt informasjon om dine e-post-\n"
-#~ "innstillinger kan du begynne å sende og motta e-post\n"
-#~ "med en gang. Klikk neste for å fortsette."
-
-#~ msgid "Add Optional Fields..."
-#~ msgstr "Legg til tillegsfelt..."
-
-#~ msgid "Additional Identity Fields"
-#~ msgstr "Ekstra identitetsfelt"
-
-#~ msgid "Browse..."
-#~ msgstr "Bla gjennom..."
-
-#~ msgid "Edit Mail Configuration Settings"
-#~ msgstr "Rediger innstillinger for e-post-konfigurasjon"
-
-#~ msgid "Preferred type: "
-#~ msgstr "Foretrukket type: "
-
-#~ msgid ""
-#~ "You are almost done with the mail configuration process. The identity, "
-#~ "incoming"
-#~ msgstr ""
-#~ "Du er nesten ferdig med konfigurasjonsprosessen for e-post. Identiteten, "
-#~ "innkommende"
-
-#~ msgid ""
-#~ "Your mail server supports the following types of authentication. Please"
-#~ msgstr "Din e-post tjener støtter følgende typer autentisering. Vennligst"
-
-#~ msgid "Threading message list"
-#~ msgstr "Utvider tråder for meldingsliste"
-
-#~ msgid "Thread message list"
-#~ msgstr "Vis tråder i meldingsliste"
-
-#~ msgid "_Submit Bug Report"
-#~ msgstr "_Send inn feilrapport"
-
-#~ msgid "Send _Now"
-#~ msgstr "Send _nå"
-
-#~ msgid "Custom search"
-#~ msgstr "Egendefinert søk"
-
-#~ msgid " (XXX unread)"
-#~ msgstr " (XXX ulest)"
-
-#~ msgid "Don't know protocol to open URI `%s'"
-#~ msgstr "Ingen protokoll for åpning av URI `%s'"
-
-#~ msgid "Recur on the"
-#~ msgstr "Gjeninntreff den"
-
-#~ msgid "th day of the month"
-#~ msgstr "de dagen i måneden"
-
-#~ msgid "Copy Message"
-#~ msgstr "Kopier melding"
-
-#~ msgid "Quick Search"
-#~ msgstr "Raskt søk"
-
-#~ msgid "BLARG\n"
-#~ msgstr "BLARG\n"
-
-#~ msgid "Bad storage URL (no server): %s"
-#~ msgstr "Ugyldig URL for lagring (ingen tjener): %s"
-
-#~ msgid "Family Name"
-#~ msgstr "Etternavn"
-
-#~ msgid "Prim"
-#~ msgstr "Pri"
-
-#~ msgid "Could not connect to IMAP server on %s."
-#~ msgstr "Kunne ikke koble til IMAP-tjener på %s."
-
-#~ msgid "_Summary:"
-#~ msgstr "_Sammendrag:"
-
-#~ msgid ""
-#~ "Minutes\n"
-#~ "Hours\n"
-#~ "Days\n"
-#~ msgstr ""
-#~ "Minutter\n"
-#~ "Timer\n"
-#~ "Dager\n"
-
-#~ msgid "Daily"
-#~ msgstr "Daglig"
-
-#~ msgid "Weekly"
-#~ msgstr "Ukentlig"
-
-#~ msgid "Monthly"
-#~ msgstr "Månedlig"
-
-#~ msgid "Yearly"
-#~ msgstr "Årlig"
-
-#~ msgid "Every "
-#~ msgstr "Hver"
-
-#~ msgid ""
-#~ "1st\n"
-#~ "2nd\n"
-#~ "3rd\n"
-#~ "4th\n"
-#~ "5th\n"
-#~ msgstr ""
-#~ "1ste\n"
-#~ "2dre\n"
-#~ "3dje\n"
-#~ "4de\n"
-#~ "5te\n"
-
-#~ msgid ""
-#~ "Monday\n"
-#~ "Tuesday\n"
-#~ "Wednesday\n"
-#~ "Thursday\n"
-#~ "Friday\n"
-#~ "Saturday\n"
-#~ "Sunday\n"
-#~ msgstr ""
-#~ "Mandag\n"
-#~ "Tirsdag\n"
-#~ "Onsdag\n"
-#~ "Torsdag\n"
-#~ "Fredag\n"
-#~ "Lørdag\n"
-#~ "Søndag\n"
-
-#~ msgid "Ending date"
-#~ msgstr "Sluttdato"
-
-#~ msgid "End on "
-#~ msgstr "Slutt på "
-
-#~ msgid "Change"
-#~ msgstr "Endre"
-
-#~ msgid "_Unselect All"
-#~ msgstr "_Velg bort alt"
-
-#~ msgid "FIXME: Print..."
-#~ msgstr "Skriv ut..."
-
-#~ msgid "Insert a file as an attachment"
-#~ msgstr "Sett inn en fil som vedlegg"
-
-#~ msgid "FIXME: Assign Task..."
-#~ msgstr "Tildel oppgave..."
-
-#~ msgid "Assign the task to someone"
-#~ msgstr "Tildel oppgaven til noen"
-
-#~ msgid "FIXME: Ca_lendar..."
-#~ msgstr "Ka_lender..."
-
-#~ msgid "Save and close this appointment"
-#~ msgstr "Lagre og lukk denne avtalen"
-
-#~ msgid "Invite attendees to a meeting"
-#~ msgstr "Inviter deltakere til et møte"
-
-#~ msgid "Cut selected item into clipboard"
-#~ msgstr "Klipp ut valgt oppføring til utklippstavlen"
-
-#~ msgid "Copy selected item into clipboard"
-#~ msgstr "Kopier valgt oppføring til utklippstavlen"
-
-#~ msgid "Select recipients' addresses"
-#~ msgstr "Velg mottakerenes adresser"
-
-#~ msgid "Search..."
-#~ msgstr "Søk..."
-
-#~ msgid "To: >>"
-#~ msgstr "Til: >>"
-
-#~ msgid "Cc: >>"
-#~ msgstr "Cc: >>"
-
-#~ msgid "Bcc: >>"
-#~ msgstr "Bcc: >>"
-
-#~ msgid "label9"
-#~ msgstr "etikett9"
-
-#~ msgid "label7"
-#~ msgstr "etikett7"
-
-#~ msgid "label8"
-#~ msgstr "etikett8"
-
-#~ msgid "Load a previously saved message"
-#~ msgstr "Les en tidligere lagret melding"
-
-#~ msgid "Quit the message composer"
-#~ msgstr "Avslutt meldingsredigering"
-
-#~ msgid "More criteria"
-#~ msgstr "Flere kriterier"
-
-#~ msgid "Fewer criteria"
-#~ msgstr "Færre kriterier"
-
-#~ msgid "Run filter \"%s\""
-#~ msgstr "Kjør filter \"%s\""
diff --git a/po/pl.po b/po/pl.po
deleted file mode 100644
index 21a8726832..0000000000
--- a/po/pl.po
+++ /dev/null
@@ -1,6711 +0,0 @@
-#: camel/providers/smtp/camel-smtp-transport.c:285
-msgid ""
-msgstr ""
-"Project-Id-Version: evolution\n"
-"POT-Creation-Date: 2001-01-17 18:47-0500\n"
-"PO-Revision-Date: 2000-11-30 14:00+0100\n"
-"Last-Translator: GNOME PL Team <translators@gnome.pl>\n"
-"Language-Team: Polish <pl@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-2\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: executive-summary/component/component-factory.c:152
-#, fuzzy
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr "Nie mo¿na zainicjowaæ komponentu pocztowego Evlution."
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:16
-#: addressbook/backend/ebook/load-pine-addressbook.c:17
-#: addressbook/backend/ebook/test-client-list.c:18
-#: addressbook/backend/ebook/test-client.c:29
-#: addressbook/conduit/address-conduit.c:1090
-#: addressbook/gui/component/addressbook-factory.c:38
-#: addressbook/gui/widgets/test-minicard-view.c:45
-#: calendar/conduits/calendar/calendar-conduit.c:1150
-#: calendar/conduits/todo/todo-conduit.c:965 calendar/gui/main.c:55
-msgid "Could not initialize Bonobo"
-msgstr "Nie mo¿na zainicjowaæ Bonobo"
-
-#: addressbook/gui/widgets/test-minicard-view.c:100
-msgid "Reflow Test"
-msgstr ""
-
-#: addressbook/gui/widgets/test-minicard-view.c:101
-#, fuzzy
-msgid "Copyright (C) 2000, Helix Code, Inc."
-msgstr "Copyright 1999, 2000 Helix Code, Inc."
-
-#: addressbook/gui/widgets/test-minicard-view.c:103
-msgid "This should test the reflow canvas item"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-provider.c:34
-#, fuzzy
-msgid "UNIX mbox-format mail files"
-msgstr "Pliki z listami w uniksowym formacie mbox"
-
-#: camel/providers/local/camel-mbox-provider.c:36
-msgid ""
-"For reading mail delivered by the local system, and for storing mail on "
-"local disk."
-msgstr ""
-
-#: camel/providers/vee/camel-vee-folder.c:604
-#, fuzzy, c-format
-msgid "No such message: %s"
-msgstr "Nie ma komputera o nazwie %s."
-
-#: executive-summary/component/e-summary-callbacks.c:267
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:61
-#: executive-summary/component/e-summary-url.c:66
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:62
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:63
-#, fuzzy, c-format
-msgid "Send an email to %s"
-msgstr "Sendmail"
-
-#: executive-summary/component/e-summary-url.c:64
-#, c-format
-msgid "Change the view to %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:65
-#, c-format
-msgid "Run %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:67
-#, fuzzy, c-format
-msgid "Close %s"
-msgstr "Zamknij"
-
-#: executive-summary/component/e-summary-url.c:68
-#, fuzzy, c-format
-msgid "Move %s to the left"
-msgstr "Przenie¶ do foldera"
-
-#: executive-summary/component/e-summary-url.c:69
-#, c-format
-msgid "Move %s to the right"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:70
-#, fuzzy, c-format
-msgid "Move %s into the previous row"
-msgstr "Przechodzi do poprzedniego elementu"
-
-#: executive-summary/component/e-summary-url.c:71
-#, fuzzy, c-format
-msgid "Move %s into the next row"
-msgstr "Przechodzi do nastêpnego elementu"
-
-#: executive-summary/component/e-summary-url.c:72
-#, fuzzy, c-format
-msgid "Configure %s"
-msgstr "_Skonfiguruj folder"
-
-#: executive-summary/component/e-summary.c:919
-#, fuzzy, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"Nie mo¿na otworzyæ pliku %s:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:933
-#, fuzzy, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr "B³±d przy odczycie pliku z listem: %s"
-
-#: executive-summary/component/e-summary.c:951
-msgid "File does not have a place for the services.\n"
-msgstr ""
-
-#: executive-summary/component/main.c:59
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:443
-#: executive-summary/test-service/rdf-summary.c:479
-#: executive-summary/test-service/rdf-summary.c:524
-#, fuzzy
-msgid "Error"
-msgstr "bez b³êdu"
-
-#: mail/mail-config.c:799
-msgid "Connecting to server"
-msgstr ""
-
-#: mail/mail-config.c:801
-#, fuzzy
-msgid "Connect to server"
-msgstr "Nie mo¿na nawi±zaæ po³±czenia z serwerem POP pod adresem %s."
-
-#: notes/component-factory.c:27
-msgid "New"
-msgstr "Nowy"
-
-#: notes/component-factory.c:27
-#, fuzzy
-msgid "Create a new note"
-msgstr "Tworzy nowy folder"
-
-#: notes/component-factory.c:152
-#, fuzzy
-msgid "Cannot initialize Evolution's notes component."
-msgstr "Nie mo¿na zainicjowaæ komponentu pocztowego Evlution."
-
-#: notes/main.c:30
-#, fuzzy
-msgid "Notes Component: Could not initialize bonobo"
-msgstr "Nie mo¿na zainicjowaæ Bonobo"
-
-#: addressbook/backend/ebook/e-card.c:3049
-msgid "Card: "
-msgstr "Karta: "
-
-#: addressbook/backend/ebook/e-card.c:3051
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-"\n"
-"Nazwa: "
-
-#: addressbook/backend/ebook/e-card.c:3052
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-"\n"
-" Przedrostek: "
-
-#: addressbook/backend/ebook/e-card.c:3053
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3054
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3055
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3056
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-"\n"
-" Przyrostek: "
-
-#: addressbook/backend/ebook/e-card.c:3070
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-"\n"
-"Data urodzenia: "
-
-#: addressbook/backend/ebook/e-card.c:3081
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-"\n"
-"Adres:"
-
-#: addressbook/backend/ebook/e-card.c:3083
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-"\n"
-" Skrzynka pocztowa: "
-
-#: addressbook/backend/ebook/e-card.c:3084
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3085
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-"\n"
-" Ulica: "
-
-#: addressbook/backend/ebook/e-card.c:3086
-msgid ""
-"\n"
-" City: "
-msgstr ""
-"\n"
-" Miasto: "
-
-#: addressbook/backend/ebook/e-card.c:3087
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3088
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-"\n"
-" Kod pocztowy: "
-
-#: addressbook/backend/ebook/e-card.c:3089
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-"\n"
-" Kraj: "
-
-#: addressbook/backend/ebook/e-card.c:3102
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3114
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-"\n"
-"Telefony:\n"
-
-#: addressbook/backend/ebook/e-card.c:3117
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-"\n"
-"Telefon:"
-
-#: addressbook/backend/ebook/e-card.c:3141
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-"\n"
-"E-mail:\n"
-
-#: addressbook/backend/ebook/e-card.c:3144
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-"\n"
-"E-mail:"
-
-#: addressbook/backend/ebook/e-card.c:3163
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3169
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-"\n"
-"Strefa czasowa: "
-
-#: addressbook/backend/ebook/e-card.c:3177
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-"\n"
-"Po³o¿enie geograficzne: "
-
-#: addressbook/backend/ebook/e-card.c:3181
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-"\n"
-"Stanowisko s³u¿bowe: "
-
-#: addressbook/backend/ebook/e-card.c:3193
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3194
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-"\n"
-" Nazwa: "
-
-#: addressbook/backend/ebook/e-card.c:3195
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-"\n"
-" Jednostka: "
-
-#: addressbook/backend/ebook/e-card.c:3196
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-"\n"
-" Jednostka2: "
-
-#: addressbook/backend/ebook/e-card.c:3197
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-"\n"
-" Jednostka3: "
-
-#: addressbook/backend/ebook/e-card.c:3198
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-"\n"
-" Jednostka4: "
-
-#: addressbook/backend/ebook/e-card.c:3202
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-"\n"
-"Kategorie: "
-
-#: addressbook/backend/ebook/e-card.c:3203
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-"\n"
-"Komentarz: "
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3216
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3219
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-"\n"
-"Klucz publiczny: "
-
-#. This array must be in the same order as enumerations
-#. in GnomePilotConduitSyncType as they are used as index.
-#. Custom type implies Disabled state.
-#.
-#: addressbook/conduit/address-conduit-control-applet.c:77
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:77
-#: calendar/conduits/todo/todo-conduit-control-applet.c:77
-msgid "Disabled"
-msgstr "Nieaktywne"
-
-#: addressbook/conduit/address-conduit-control-applet.c:78
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:78
-#: calendar/conduits/todo/todo-conduit-control-applet.c:78
-msgid "Synchronize"
-msgstr "Zsynchronizuj"
-
-#: addressbook/conduit/address-conduit-control-applet.c:79
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:79
-#: calendar/conduits/todo/todo-conduit-control-applet.c:79
-msgid "Copy From Pilot"
-msgstr "Skopiuj z pilota"
-
-#: addressbook/conduit/address-conduit-control-applet.c:80
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:80
-#: calendar/conduits/todo/todo-conduit-control-applet.c:80
-msgid "Copy To Pilot"
-msgstr "Skopiuj na pilota"
-
-#: addressbook/conduit/address-conduit-control-applet.c:81
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:81
-#: calendar/conduits/todo/todo-conduit-control-applet.c:81
-msgid "Merge From Pilot"
-msgstr ""
-
-#: addressbook/conduit/address-conduit-control-applet.c:82
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:82
-#: calendar/conduits/todo/todo-conduit-control-applet.c:82
-msgid "Merge To Pilot"
-msgstr ""
-
-#: addressbook/conduit/address-conduit-control-applet.c:121
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:121
-#: calendar/conduits/todo/todo-conduit-control-applet.c:121
-msgid "JP Rosevear <jpr@helixcode.com>"
-msgstr "JP Rosevear <jpr@helixcode.com>"
-
-#: addressbook/conduit/address-conduit-control-applet.c:122
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:122
-#: calendar/conduits/todo/todo-conduit-control-applet.c:122
-msgid "Original Author:"
-msgstr "Oryginalny autor:"
-
-#: addressbook/conduit/address-conduit-control-applet.c:123
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:123
-#: calendar/conduits/todo/todo-conduit-control-applet.c:123
-msgid "Eskil Heyn Olsen <deity@eskil.dk>"
-msgstr "Eskil Heyn Olsen <deity@eskil.dk>"
-
-#: addressbook/conduit/address-conduit-control-applet.c:127
-msgid "Evolution Addressbook Conduit"
-msgstr ""
-
-#: addressbook/conduit/address-conduit-control-applet.c:128
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:128
-#: calendar/conduits/todo/todo-conduit-control-applet.c:128
-msgid "(C) 1998-2000 the Free Software Foundation and Helix Code"
-msgstr "(C) 1998-2000 the Free Software Foundation oraz Helix Code"
-
-#: addressbook/conduit/address-conduit-control-applet.c:130
-msgid "Configuration utility for the evolution addressbook conduit.\n"
-msgstr ""
-
-#: addressbook/conduit/address-conduit-control-applet.c:131
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:131
-#: calendar/conduits/todo/todo-conduit-control-applet.c:131
-msgid "gnome-unknown.xpm"
-msgstr "gnome-unknown.xpm"
-
-#: addressbook/conduit/address-conduit-control-applet.c:162
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:162
-#: calendar/conduits/todo/todo-conduit-control-applet.c:162
-msgid "Synchronize Action"
-msgstr "Czynno¶æ synchronizacji"
-
-#: addressbook/conduit/address-conduit-control-applet.c:214
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:215
-#: calendar/conduits/todo/todo-conduit-control-applet.c:214
-msgid "Conduit state"
-msgstr "Stan po³±czenia"
-
-#: addressbook/conduit/address-conduit-control-applet.c:266
-#: addressbook/conduit/address-conduit-control-applet.c:279
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:267
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:280
-#: calendar/conduits/todo/todo-conduit-control-applet.c:266
-#: calendar/conduits/todo/todo-conduit-control-applet.c:279
-msgid ""
-"No pilot configured, please choose the\n"
-"'Pilot Link Properties' capplet first."
-msgstr ""
-
-#: addressbook/conduit/address-conduit-control-applet.c:285
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:286
-#: calendar/conduits/todo/todo-conduit-control-applet.c:285
-msgid "Not connected to the gnome-pilot daemon"
-msgstr "Brak po³±czenia z demonem gnome-pilot"
-
-#: addressbook/conduit/address-conduit-control-applet.c:290
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:291
-#: calendar/conduits/todo/todo-conduit-control-applet.c:290
-msgid ""
-"An error occured when trying to fetch\n"
-"pilot list from the gnome-pilot daemon"
-msgstr ""
-"Podczas próby pobrania listy pilotów od demona\n"
-"gnome-pilot wyst±pi³ b³±d"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:653
-#: calendar/conduits/calendar/calendar-conduit.c:729
-#: calendar/conduits/todo/todo-conduit.c:544
-msgid "Could not start wombat server"
-msgstr "Nie mo¿na uruchomiæ serwera wombat"
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:730
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat"
-msgstr "Nie mo¿na uruchomiæ wombata"
-
-#: addressbook/conduit/address-conduit.c:686
-#: addressbook/conduit/address-conduit.c:689
-msgid "Could not read pilot's Address application block"
-msgstr ""
-
-#.
-#. * Translatable strings file generated by Glade.
-#. * Add this file to your project's POTFILES.in.
-#. * DO NOT compile it as part of your application.
-#.
-#: addressbook/contact-editor/e-contact-editor-strings.h:7
-msgid "_Add"
-msgstr "_Dodaj"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:8
-#: ui/evolution-contact-editor.xml:37
-msgid "_Delete"
-msgstr "_Usuñ"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:9
-msgid "Phone Types"
-msgstr "Typy telefonów"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:10
-#: addressbook/contact-editor/e-contact-editor-strings.h:12
-msgid "New phone type"
-msgstr "Nowy typ telefonu"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:11
-msgid "Add"
-msgstr "Dodaj"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:13
-msgid "Contact Editor"
-msgstr "Edytor kontaktów"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:14
-msgid "_Full Name..."
-msgstr "_Pe³na nazwa..."
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:15
-msgid "File As:"
-msgstr "Zapisz jako:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:16
-msgid "Web page address:"
-msgstr "Adres strony WWW:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:17
-msgid "Wants to receive _HTML mail"
-msgstr "Chce otrzymywaæ listy w HTML-u"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:18
-msgid "_Business"
-msgstr "_Praca"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:19
-msgid "_Home"
-msgstr "_Dom"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:20
-msgid "Business _Fax"
-msgstr "_Faks s³u¿bowy"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:21
-msgid "_Mobile"
-msgstr "P_rzeno¶ny"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:22
-#: addressbook/contact-editor/e-contact-editor.c:1336
-msgid "Primary Email"
-msgstr "G³ówny e-mail"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:23
-msgid "B_usiness"
-msgstr "_Praca"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:24
-msgid "_This is the mailing address"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:25
-msgid "C_ontacts..."
-msgstr "_Kontakty..."
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:26
-msgid "Ca_tegories..."
-msgstr "K_ategorie..."
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:27
-msgid "_Job title:"
-msgstr "Tytu³ _s³u¿bowy:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:28
-msgid "_Company:"
-msgstr "_Firma:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:29
-msgid "_Address..."
-msgstr "_Adres..."
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:30
-msgid "General"
-msgstr "Ogólne"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:31
-msgid "_Department:"
-msgstr "_Oddzia³:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:32
-msgid "_Office:"
-msgstr "_Biuro:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:33
-msgid "_Profession:"
-msgstr "_Zawód:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:34
-msgid "_Nickname:"
-msgstr "_Przydomek:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:35
-msgid "_Spouse:"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:36
-msgid "_Birthday:"
-msgstr "_Urodziny:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:37
-msgid "_Assistant's name:"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:38
-msgid "_Manager's Name:"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:39
-msgid "Anni_versary:"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:40
-msgid "No_tes:"
-msgstr "_Notatki:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:41
-msgid "Details"
-msgstr "Szczegó³y"
-
-#: addressbook/contact-editor/e-contact-editor.c:1274
-#: addressbook/gui/widgets/e-addressbook-view.c:588
-msgid "Assistant"
-msgstr "Asystent"
-
-#: addressbook/contact-editor/e-contact-editor.c:1275
-#: addressbook/contact-editor/e-contact-editor.c:1379
-#: addressbook/gui/widgets/e-addressbook-view.c:568
-msgid "Business"
-msgstr "Praca"
-
-#: addressbook/contact-editor/e-contact-editor.c:1276
-#: addressbook/gui/widgets/e-addressbook-view.c:575
-msgid "Business 2"
-msgstr "Praca 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1277
-#: addressbook/gui/widgets/e-addressbook-view.c:573
-msgid "Business Fax"
-msgstr "Faks s³u¿bowy"
-
-#: addressbook/contact-editor/e-contact-editor.c:1278
-msgid "Callback"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1279
-#: addressbook/gui/widgets/e-addressbook-view.c:572
-msgid "Car"
-msgstr "Samochód"
-
-#: addressbook/contact-editor/e-contact-editor.c:1280
-msgid "Company"
-msgstr "Firma"
-
-#: addressbook/contact-editor/e-contact-editor.c:1281
-#: addressbook/contact-editor/e-contact-editor.c:1380
-#: addressbook/gui/widgets/e-addressbook-view.c:569
-msgid "Home"
-msgstr "Dom"
-
-#: addressbook/contact-editor/e-contact-editor.c:1282
-#: addressbook/gui/widgets/e-addressbook-view.c:576
-msgid "Home 2"
-msgstr "Dom 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1283
-#: addressbook/gui/widgets/e-addressbook-view.c:574
-msgid "Home Fax"
-msgstr "Faks w domu"
-
-#: addressbook/contact-editor/e-contact-editor.c:1284
-#: addressbook/gui/widgets/e-addressbook-view.c:577
-msgid "ISDN"
-msgstr "ISDN"
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:571
-msgid "Mobile"
-msgstr "Przeno¶ny"
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/contact-editor/e-contact-editor.c:1381
-#: addressbook/gui/widgets/e-addressbook-view.c:578
-msgid "Other"
-msgstr "Inne"
-
-#: addressbook/contact-editor/e-contact-editor.c:1287
-msgid "Other Fax"
-msgstr "Inny faks"
-
-#: addressbook/contact-editor/e-contact-editor.c:1288
-#: addressbook/gui/widgets/e-addressbook-view.c:579
-msgid "Pager"
-msgstr "Pager"
-
-#: addressbook/contact-editor/e-contact-editor.c:1289
-#: addressbook/gui/widgets/e-addressbook-view.c:567
-msgid "Primary"
-msgstr "G³ówny"
-
-#: addressbook/contact-editor/e-contact-editor.c:1290
-msgid "Radio"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1291
-msgid "Telex"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1292
-msgid "TTY/TDD"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1337
-#: addressbook/gui/widgets/e-addressbook-view.c:580
-msgid "Email 2"
-msgstr "E-mail 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1338
-#: addressbook/gui/widgets/e-addressbook-view.c:581
-msgid "Email 3"
-msgstr "E-mail 3"
-
-#.
-#. * Translatable strings file generated by Glade.
-#. * Add this file to your project's POTFILES.in.
-#. * DO NOT compile it as part of your application.
-#.
-#: addressbook/contact-editor/fullname-strings.h:7
-msgid "Check Full Name"
-msgstr ""
-
-#: addressbook/contact-editor/fullname-strings.h:8
-#, fuzzy
-msgid ""
-"\n"
-"Mr.\n"
-"Mrs.\n"
-"Ms.\n"
-"Miss\n"
-"Dr.\n"
-msgstr ""
-"\n"
-"Pan\n"
-"Pani\n"
-"Dr\n"
-
-#: addressbook/contact-editor/fullname-strings.h:15
-msgid ""
-"\n"
-"Sr.\n"
-"Jr.\n"
-"I\n"
-"II\n"
-"III\n"
-"Esq.\n"
-msgstr ""
-
-#: addressbook/contact-editor/fullname-strings.h:23
-msgid "_First:"
-msgstr ""
-
-#: addressbook/contact-editor/fullname-strings.h:24
-msgid "_Title:"
-msgstr "_Tytu³:"
-
-#: addressbook/contact-editor/fullname-strings.h:25
-msgid "_Middle:"
-msgstr ""
-
-#: addressbook/contact-editor/fullname-strings.h:26
-msgid "_Last:"
-msgstr ""
-
-#: addressbook/contact-editor/fullname-strings.h:27
-msgid "_Suffix:"
-msgstr "_Przyrostek:"
-
-#: addressbook/gui/component/addressbook.c:231
-msgid "As _Minicards"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:237
-msgid "As _Table"
-msgstr "Jako _tabela"
-
-#: addressbook/gui/component/addressbook.c:374
-#, fuzzy, c-format
-msgid "Enter password for %s"
-msgstr "Wprowad¼ has³o NNTP dla %s@%s"
-
-#: addressbook/gui/component/addressbook.c:402
-msgid "Unable to open addressbook"
-msgstr "Nie mo¿na otworzyæ ksi±¿ki adresowej"
-
-#: addressbook/gui/component/addressbook.c:407
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or have tried\n"
-"to access an LDAP server and don't have LDAP support\n"
-"compiled in. If you've entered a URI, check the URI for\n"
-"correctness and reenter. If not, you probably have\n"
-"attempted to access an LDAP server. If you wish to be\n"
-"able to use LDAP, you'll need to download and install\n"
-"OpenLDAP and recompile and install Evolution.\n"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:530 mail/folder-browser.c:221
-msgid "Show All"
-msgstr "Wy¶wietl wszystkie"
-
-#: addressbook/gui/component/addressbook.c:532 mail/folder-browser.c:223
-msgid "Advanced..."
-msgstr "Zaawansowane..."
-
-#: addressbook/gui/component/addressbook.c:562
-msgid "Any field contains"
-msgstr "Jakiekolwiek pole zawiera"
-
-#: addressbook/gui/component/addressbook.c:563
-msgid "Name contains"
-msgstr "Nazwa zawiera"
-
-#: addressbook/gui/component/addressbook.c:564
-msgid "Email contains"
-msgstr "E-mail zawiera"
-
-#: addressbook/gui/component/addressbook.c:707
-msgid "The URI that the Folder Browser will display"
-msgstr "URI które ma wy¶wietliæ przegl±darka katalogów"
-
-#: addressbook/gui/component/addressbook-storage.c:95
-#, fuzzy
-msgid "Other Contacts"
-msgstr "_Nowy Kontakt"
-
-#: addressbook/gui/component/addressbook-config.c:139
-#, fuzzy
-msgid "LDAP Server"
-msgstr "Serwer LDAP:"
-
-#: addressbook/gui/component/addressbook-config.c:141
-#, fuzzy
-msgid "File"
-msgstr "_Plik"
-
-#: addressbook/gui/component/addressbook-config.c:144
-#, fuzzy
-msgid "Unknown addressbook type"
-msgstr "Nie mo¿na otworzyæ ksi±¿ki adresowej"
-
-#: addressbook/gui/component/addressbook-config.c:153
-msgid "None (anonymous mode)"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:155
-#: camel/providers/imap/camel-imap-store.c:249
-#: camel/providers/nntp/camel-nntp-store.c:293
-#: camel/providers/pop3/camel-pop3-store.c:146
-msgid "Password"
-msgstr "Has³o"
-
-#: addressbook/gui/component/addressbook-config.c:157
-msgid "SASL"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:160
-#, fuzzy
-msgid "Unknown auth type"
-msgstr "Nieznany b³±d"
-
-#: addressbook/gui/component/addressbook-config.c:169
-#, fuzzy
-msgid "Base"
-msgstr "Wklej"
-
-#: addressbook/gui/component/addressbook-config.c:171
-msgid "One"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:173
-#, fuzzy
-msgid "Subtree"
-msgstr "Zapisz"
-
-#: addressbook/gui/component/addressbook-config.c:176
-msgid "Unknown scope type"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:309
-msgid "Bind DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:311
-msgid "Remember this password"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:360
-#, fuzzy
-msgid "Host:"
-msgstr "Godziny"
-
-#: addressbook/gui/component/addressbook-config.c:361
-#, fuzzy
-msgid "Port:"
-msgstr "_Priorytety:"
-
-#: addressbook/gui/component/addressbook-config.c:364
-msgid "Root DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:384
-#, fuzzy
-msgid "Search Scope:"
-msgstr "Wyszukiwanie"
-
-#: addressbook/gui/component/addressbook-config.c:438
-msgid "Authentication:"
-msgstr "Uwierzytelnianie:"
-
-#: addressbook/gui/component/addressbook-config.c:455
-msgid "Path:"
-msgstr "¦cie¿ka:"
-
-#: addressbook/gui/component/addressbook-config.c:460
-#, fuzzy
-msgid "Create path if it doesn't exist."
-msgstr "Podany plik nie istnieje."
-
-#: addressbook/gui/component/addressbook-config.c:593
-#, fuzzy
-msgid "Edit Addressbook"
-msgstr "Zapisz w ksi±¿ce adresowej"
-
-#: addressbook/gui/component/addressbook-config.c:595
-#, fuzzy
-msgid "Add Addressbook"
-msgstr "Zapisz w ksi±¿ce adresowej"
-
-#: addressbook/gui/component/addressbook-config.c:611
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:616
-msgid "Name:"
-msgstr "Nazwa:"
-
-#: addressbook/gui/component/addressbook-config.c:617
-msgid "Description:"
-msgstr "Opis:"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:147
-#: mail/mail-search-dialogue.c:104
-msgid "Search"
-msgstr "Wyszukiwanie"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:469
-#: addressbook/gui/widgets/e-minicard.c:374
-msgid "Save as VCard"
-msgstr "Zapisz jako VCard"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:565
-#, fuzzy
-msgid "Name"
-msgstr "Nazwa:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:566
-#, fuzzy
-msgid "Email"
-msgstr "E-mail 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:570
-msgid "Organization"
-msgstr "Organizacja"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:582
-msgid "Web Site"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:583
-#, fuzzy
-msgid "Department"
-msgstr "_Oddzia³:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:584
-#, fuzzy
-msgid "Office"
-msgstr "_Biuro:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:585
-#, fuzzy
-msgid "Title"
-msgstr "_Tytu³:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:586
-#, fuzzy
-msgid "Profession"
-msgstr "_Zawód:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:587
-#, fuzzy
-msgid "Manager"
-msgstr "Pager"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:589
-#, fuzzy
-msgid "Nickname"
-msgstr "_Przydomek:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:590
-#, fuzzy
-msgid "Spouse"
-msgstr "¬ród³o"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:591
-#, fuzzy
-msgid "Note"
-msgstr "Brak"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:592
-msgid "Free-busy URL"
-msgstr ""
-
-#: addressbook/gui/widgets/e-minicard-control.c:280
-msgid "Save in addressbook"
-msgstr "Zapisz w ksi±¿ce adresowej"
-
-#: addressbook/gui/widgets/e-minicard-view.c:129
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:127
-msgid "Evolution Calendar Conduit"
-msgstr ""
-
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:130
-msgid "Configuration utility for the evolution calendar conduit.\n"
-msgstr ""
-
-#: calendar/conduits/calendar/calendar-conduit.c:685
-#: calendar/conduits/todo/todo-conduit.c:500
-msgid "Error while communicating with calendar server"
-msgstr "B³±d przy komunikacji z serwerem terminarza"
-
-#: calendar/conduits/calendar/calendar-conduit.c:784
-#: calendar/conduits/calendar/calendar-conduit.c:787
-msgid "Could not read pilot's Calendar application block"
-msgstr ""
-
-#: calendar/conduits/todo/todo-conduit-control-applet.c:127
-msgid "Evolution ToDo Conduit"
-msgstr ""
-
-#: calendar/conduits/todo/todo-conduit-control-applet.c:130
-msgid "Configuration utility for the evolution todo conduit.\n"
-msgstr ""
-
-#: calendar/conduits/todo/todo-conduit.c:599
-#: calendar/conduits/todo/todo-conduit.c:602
-msgid "Could not read pilot's ToDo application block"
-msgstr ""
-
-#: calendar/gui/alarm-notify.c:585 calendar/gui/alarm-notify.c:884
-#: calendar/gui/alarm-notify.c:940
-msgid "Reminder of your appointment at "
-msgstr "Przypomnienie o terminie "
-
-#: calendar/gui/alarm-notify.c:876
-msgid "Snooze"
-msgstr ""
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify.c:889 calendar/gui/alarm-notify.c:944
-#: mail/mail-search-dialogue.c:104
-msgid "Ok"
-msgstr "Ok"
-
-#: calendar/gui/calendar-commands.c:245
-msgid "File not found"
-msgstr "Nie odnaleziono pliku"
-
-#: calendar/gui/calendar-commands.c:269
-msgid "Open calendar"
-msgstr "Otwórz terminarz"
-
-#: calendar/gui/calendar-commands.c:311
-msgid "Save calendar"
-msgstr "Zapisz terminarz"
-
-#: calendar/gui/calendar-commands.c:448
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-
-#. strftime format of a weekday and a date.
-#: calendar/gui/calendar-model.c:332
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:467
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2499
-msgid "%a %m/%d/%Y"
-msgstr "%a %m/%d/%Y"
-
-#. strftime format of a weekday, a date and a time,
-#. in 24-hour format.
-#: calendar/gui/calendar-model.c:336 calendar/gui/calendar-model.c:766
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr "%a %m/%d/%Y %H:%M:%S"
-
-#. strftime format of a weekday, a date and a time,
-#. in 12-hour format.
-#: calendar/gui/calendar-model.c:340 calendar/gui/calendar-model.c:769
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr "%a %m/%d/%Y %I:%M:%S %p"
-
-#: calendar/gui/calendar-model.c:374
-msgid "Public"
-msgstr "Publiczny"
-
-#: calendar/gui/calendar-model.c:377
-msgid "Private"
-msgstr "Prywatny"
-
-#: calendar/gui/calendar-model.c:380
-msgid "Confidential"
-msgstr "Tajny"
-
-#: calendar/gui/calendar-model.c:383 calendar/gui/calendar-model.c:551
-msgid "Unknown"
-msgstr "Nieznany"
-
-#: calendar/gui/calendar-model.c:471
-msgid "N"
-msgstr "N"
-
-#: calendar/gui/calendar-model.c:471
-msgid "S"
-msgstr "S"
-
-#: calendar/gui/calendar-model.c:473
-msgid "E"
-msgstr "E"
-
-#: calendar/gui/calendar-model.c:473
-msgid "W"
-msgstr "W"
-
-#: calendar/gui/calendar-model.c:545
-msgid "Transparent"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:548
-msgid "Opaque"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:774
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-"Data musi byæ podana w formacie: \n"
-"\n"
-"%s"
-
-#. strptime format for a date.
-#: calendar/gui/calendar-model.c:875 calendar/gui/calendar-model.c:923
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:471
-#: widgets/misc/e-dateedit.c:1273 widgets/misc/e-dateedit.c:1454
-msgid "%m/%d/%Y"
-msgstr "%d/%m/%Y"
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: calendar/gui/calendar-model.c:893
-msgid "%I:%M:%S %p%n"
-msgstr "%I:%M:%S %p%n"
-
-#. strptime format for a time of day, in 24-hour format.
-#: calendar/gui/calendar-model.c:896
-msgid "%H:%M:%S%n"
-msgstr "%H:%M:%S%n"
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: calendar/gui/calendar-model.c:900
-msgid "%I:%M %p%n"
-msgstr "%I:%M %p%n"
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: calendar/gui/calendar-model.c:903
-msgid "%H:%M%n"
-msgstr "%H:%M%n"
-
-#: calendar/gui/calendar-model.c:1023
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-"Po³o¿enie geograficzne musi byæ podane w formacie: \n"
-"\n"
-"45.436845,125.862501"
-
-#: calendar/gui/calendar-model.c:1063
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr "Warto¶æ procentowa musi siê zawieraæ w przedziale od 0 do 100 w³±cznie"
-
-#: calendar/gui/calendar-model.c:1103
-msgid "The priority must be between 1 and 9, inclusive"
-msgstr "Priorytet musi siê zawieraæ w przedziale od 1 do 9 w³±cznie"
-
-#: calendar/gui/calendar-summary.c:97
-#, fuzzy
-msgid "%A, %e %B %Y"
-msgstr "%A, %B %d, %Y"
-
-#: calendar/gui/calendar-summary.c:138 calendar/gui/calendar-summary.c:144
-#, fuzzy
-msgid "%I:%M%p"
-msgstr "%I:%M %p"
-
-#: calendar/gui/calendar-summary.c:302
-#, fuzzy
-msgid "<b>Error loading calendar</b>"
-msgstr "B³±d przy odczycie pliku : %s"
-
-#: calendar/gui/calendar-summary.c:314
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:484
-#, fuzzy
-msgid "Display"
-msgstr "_Wy¶wietlanie"
-
-#: calendar/gui/calendar-summary.c:489
-#, fuzzy
-msgid "Show appointments"
-msgstr "Wy¶wietlanie czasu koñca terminu"
-
-#: calendar/gui/calendar-summary.c:497
-#, fuzzy
-msgid "Show tasks"
-msgstr "Prze³±cza wy¶wietlanie za³±czników"
-
-#: calendar/gui/calendar-summary.c:583
-#, fuzzy
-msgid "Loading Calendar"
-msgstr "Drukuj terminarz"
-
-#: calendar/gui/control-factory.c:127
-msgid "The URI that the calendar will display"
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:184
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:191
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:202
-msgid "No summary available."
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:63
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:66
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:72
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:75
-msgid "Are you sure you want to delete this untitled task?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:81
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:84
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor.c:690
-msgid "Edit Task"
-msgstr "Modyfikuj zadanie"
-
-#: calendar/gui/dialogs/task-editor.c:696 calendar/gui/event-editor.c:337
-msgid "No summary"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor.c:702 calendar/gui/event-editor.c:343
-#, c-format
-msgid "Appointment - %s"
-msgstr "Termin - %s"
-
-#: calendar/gui/dialogs/task-editor.c:705 calendar/gui/event-editor.c:346
-#, c-format
-msgid "Task - %s"
-msgstr "Zadanie - %s"
-
-#: calendar/gui/dialogs/task-editor.c:708 calendar/gui/event-editor.c:349
-#, c-format
-msgid "Journal entry - %s"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor.c:1293 calendar/gui/event-editor.c:3270
-msgid "Do you want to save changes?"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:154
-#, fuzzy
-msgid "Categories"
-msgstr "kategorie"
-
-#: calendar/gui/e-calendar-table.c:155
-msgid "Classification"
-msgstr "Klasyfikacja"
-
-#: calendar/gui/e-calendar-table.c:156
-#, fuzzy
-msgid "Completion Date"
-msgstr "% _zakoñczenia:"
-
-#: calendar/gui/e-calendar-table.c:157
-#, fuzzy
-msgid "End Date"
-msgstr "Czas _zakoñczenia"
-
-#: calendar/gui/e-calendar-table.c:158
-#, fuzzy
-msgid "Start Date"
-msgstr "Czas _rozpoczêcia:"
-
-#: calendar/gui/e-calendar-table.c:159
-msgid "Due Date"
-msgstr "Data wykonania"
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "Geographical Position"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:161
-#, fuzzy
-msgid "Precent complete"
-msgstr "Oznacza zadanie jako zakoñczone"
-
-#: calendar/gui/e-calendar-table.c:162
-msgid "Priority"
-msgstr "Priorytet"
-
-#: calendar/gui/e-calendar-table.c:163
-#, fuzzy
-msgid "Summary"
-msgstr "Z_estawienie:"
-
-#: calendar/gui/e-calendar-table.c:164
-msgid "Transparency"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:165
-#, fuzzy
-msgid "URL"
-msgstr "URL:"
-
-#: calendar/gui/e-calendar-table.c:166
-#, fuzzy
-msgid "Alarms"
-msgstr "Alarmy d¼wiêkowe"
-
-#: calendar/gui/e-calendar-table.c:397
-msgid "Open..."
-msgstr "Otwórz..."
-
-#: calendar/gui/e-calendar-table.c:398
-msgid "Open the task"
-msgstr "Otwiera zadanie"
-
-#: calendar/gui/e-calendar-table.c:400
-msgid "Mark Complete"
-msgstr "Oznacz jako zakoñczone"
-
-#: calendar/gui/e-calendar-table.c:401
-msgid "Mark the task complete"
-msgstr "Oznacza zadanie jako zakoñczone"
-
-#: calendar/gui/e-calendar-table.c:403 filter/libfilter-i18n.h:7
-#: mail/folder-browser.c:673 mail/mail-view.c:150
-msgid "Delete"
-msgstr "Usuñ"
-
-#: calendar/gui/e-calendar-table.c:404
-msgid "Delete the task"
-msgstr "Usuwa zadanie"
-
-#: calendar/gui/e-day-view-time-item.c:517
-#, c-format
-msgid "%02i minute divisions"
-msgstr ""
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:271 calendar/gui/e-day-view.c:1271
-#: calendar/gui/e-week-view-main-item.c:321
-msgid "%A %d %B"
-msgstr "%A %d %B"
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:275 calendar/gui/e-day-view.c:1285
-#: calendar/gui/e-week-view-main-item.c:330
-msgid "%a %d %b"
-msgstr "%a %d %b"
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:279 calendar/gui/e-day-view.c:1298
-#: calendar/gui/e-week-view-main-item.c:344
-msgid "%d %b"
-msgstr "%d %b"
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:553 calendar/gui/e-week-view.c:287
-#: calendar/gui/print.c:610
-msgid "am"
-msgstr "am"
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:556 calendar/gui/e-week-view.c:290
-#: calendar/gui/print.c:609
-msgid "pm"
-msgstr "pm"
-
-#: calendar/gui/e-day-view.c:3008 calendar/gui/e-day-view.c:3015
-#: calendar/gui/e-day-view.c:3024 calendar/gui/e-week-view.c:3211
-#: calendar/gui/e-week-view.c:3218 calendar/gui/e-week-view.c:3227
-msgid "New appointment..."
-msgstr "Nowy termin..."
-
-#: calendar/gui/e-day-view.c:3012 calendar/gui/e-day-view.c:3019
-#: calendar/gui/e-week-view.c:3215 calendar/gui/e-week-view.c:3222
-msgid "Edit this appointment..."
-msgstr "Modyfikuj termin..."
-
-#: calendar/gui/e-day-view.c:3013 calendar/gui/e-week-view.c:3216
-msgid "Delete this appointment"
-msgstr "Usuñ termin"
-
-#: calendar/gui/e-day-view.c:3020 calendar/gui/e-week-view.c:3223
-msgid "Make this appointment movable"
-msgstr "Przekszta³æ ten termin w przesuwalny"
-
-#: calendar/gui/e-day-view.c:3021 calendar/gui/e-week-view.c:3224
-msgid "Delete this occurrence"
-msgstr "Usuñ to wyst±pienie"
-
-#: calendar/gui/e-day-view.c:3022 calendar/gui/e-week-view.c:3225
-msgid "Delete all occurrences"
-msgstr "Usuñ wszystkie wyst±pienia"
-
-#: calendar/gui/e-tasks.c:140 calendar/gui/e-tasks.c:457
-#: calendar/gui/e-tasks.c:492
-msgid "All"
-msgstr ""
-
-#: calendar/gui/e-tasks.c:146
-#, fuzzy
-msgid "Category:"
-msgstr ""
-"\n"
-"Kategorie: "
-
-#: calendar/gui/e-tasks.c:285
-#, fuzzy, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "Nie mo¿na wczytaæ terminarza w \"%s\""
-
-#: calendar/gui/e-tasks.c:297
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr ""
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:338
-msgid "%d %B"
-msgstr "%d %B"
-
-#: calendar/gui/event-editor.c:331
-msgid "Edit Appointment"
-msgstr "Modyfikuj termin"
-
-#: calendar/gui/event-editor.c:409
-msgid "on"
-msgstr ""
-
-#: calendar/gui/event-editor.c:434 filter/filter-datespec.c:65
-msgid "day"
-msgstr "dzieñ"
-
-#: calendar/gui/event-editor.c:435
-msgid "Monday"
-msgstr "Poniedzia³ek"
-
-#: calendar/gui/event-editor.c:436
-msgid "Tuesday"
-msgstr "Wtorek"
-
-#: calendar/gui/event-editor.c:437
-msgid "Wednesday"
-msgstr "¦roda"
-
-#: calendar/gui/event-editor.c:438
-msgid "Thursday"
-msgstr "Czwartek"
-
-#: calendar/gui/event-editor.c:439
-msgid "Friday"
-msgstr "Pi±tek"
-
-#: calendar/gui/event-editor.c:440
-msgid "Saturday"
-msgstr "Sobota"
-
-#: calendar/gui/event-editor.c:441
-msgid "Sunday"
-msgstr "Niedziela"
-
-#: calendar/gui/event-editor.c:561
-msgid "on the"
-msgstr ""
-
-#: calendar/gui/event-editor.c:568
-msgid "th"
-msgstr "."
-
-#: calendar/gui/event-editor.c:722
-msgid "occurrences"
-msgstr "powtórzenia"
-
-#: calendar/gui/event-editor.c:839
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr ""
-
-#: calendar/gui/event-editor.c:3093 calendar/gui/print.c:1090
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1093
-msgid "%a %b %d %Y"
-msgstr "%a %d %b %Y"
-
-#: calendar/gui/gnome-cal.c:696
-#, fuzzy, c-format
-msgid "Could not open the folder in `%s'"
-msgstr ""
-"Nie mo¿na otworzyæ foldera \"%s\":\n"
-"%s"
-
-#: calendar/gui/gnome-cal.c:707
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr ""
-
-#. Initialize by default to three-letter day names
-#: calendar/gui/gnome-month-item.c:736
-msgid "Sun"
-msgstr "Nie"
-
-#: calendar/gui/gnome-month-item.c:737
-msgid "Mon"
-msgstr "Pon"
-
-#: calendar/gui/gnome-month-item.c:738
-msgid "Tue"
-msgstr "Wto"
-
-#: calendar/gui/gnome-month-item.c:739
-msgid "Wed"
-msgstr "¦ro"
-
-#: calendar/gui/gnome-month-item.c:740
-msgid "Thu"
-msgstr "Czw"
-
-#: calendar/gui/gnome-month-item.c:741
-msgid "Fri"
-msgstr "Pi±"
-
-#: calendar/gui/gnome-month-item.c:742
-msgid "Sat"
-msgstr "Sob"
-
-#: calendar/gui/main.c:50
-#, fuzzy
-msgid "Could not initialize GNOME"
-msgstr "Nie mo¿na zainicjowaæ Bonobo"
-
-#: calendar/gui/print.c:293
-msgid "1st"
-msgstr "1."
-
-#: calendar/gui/print.c:293
-msgid "2nd"
-msgstr "2."
-
-#: calendar/gui/print.c:293
-msgid "3rd"
-msgstr "3."
-
-#: calendar/gui/print.c:293
-msgid "4th"
-msgstr "4."
-
-#: calendar/gui/print.c:293
-msgid "5th"
-msgstr "5."
-
-#: calendar/gui/print.c:294
-msgid "6th"
-msgstr "6."
-
-#: calendar/gui/print.c:294
-msgid "7th"
-msgstr "7."
-
-#: calendar/gui/print.c:294
-msgid "8th"
-msgstr "8."
-
-#: calendar/gui/print.c:294
-msgid "9th"
-msgstr "9."
-
-#: calendar/gui/print.c:294
-msgid "10th"
-msgstr "10."
-
-#: calendar/gui/print.c:295
-msgid "11th"
-msgstr "11."
-
-#: calendar/gui/print.c:295
-msgid "12th"
-msgstr "12."
-
-#: calendar/gui/print.c:295
-msgid "13th"
-msgstr "13."
-
-#: calendar/gui/print.c:295
-msgid "14th"
-msgstr "14."
-
-#: calendar/gui/print.c:295
-msgid "15th"
-msgstr "15."
-
-#: calendar/gui/print.c:296
-msgid "16th"
-msgstr "16."
-
-#: calendar/gui/print.c:296
-msgid "17th"
-msgstr "17."
-
-#: calendar/gui/print.c:296
-msgid "18th"
-msgstr "18."
-
-#: calendar/gui/print.c:296
-msgid "19th"
-msgstr "19."
-
-#: calendar/gui/print.c:296
-msgid "20th"
-msgstr "20."
-
-#: calendar/gui/print.c:297
-msgid "21st"
-msgstr "21."
-
-#: calendar/gui/print.c:297
-msgid "22nd"
-msgstr "22."
-
-#: calendar/gui/print.c:297
-msgid "23rd"
-msgstr "23."
-
-#: calendar/gui/print.c:297
-msgid "24th"
-msgstr "24."
-
-#: calendar/gui/print.c:297
-msgid "25th"
-msgstr "25."
-
-#: calendar/gui/print.c:298
-msgid "26th"
-msgstr "26."
-
-#: calendar/gui/print.c:298
-msgid "27th"
-msgstr "27."
-
-#: calendar/gui/print.c:298
-msgid "28th"
-msgstr "28."
-
-#: calendar/gui/print.c:298
-msgid "29th"
-msgstr "29."
-
-#: calendar/gui/print.c:298
-msgid "30th"
-msgstr "30."
-
-#: calendar/gui/print.c:299
-msgid "31st"
-msgstr "31."
-
-#: calendar/gui/print.c:355
-msgid "Su"
-msgstr "Ni"
-
-#: calendar/gui/print.c:355
-msgid "Mo"
-msgstr "Po"
-
-#: calendar/gui/print.c:355
-msgid "Tu"
-msgstr "Wt"
-
-#: calendar/gui/print.c:355
-msgid "We"
-msgstr "¦r"
-
-#: calendar/gui/print.c:355
-msgid "Th"
-msgstr "Cz"
-
-#: calendar/gui/print.c:355
-msgid "Fr"
-msgstr "Pt"
-
-#: calendar/gui/print.c:355
-msgid "Sa"
-msgstr "So"
-
-#: calendar/gui/print.c:941
-msgid "Tasks"
-msgstr "Zadania"
-
-#. Day
-#: calendar/gui/print.c:1071
-msgid "Current day (%a %b %d %Y)"
-msgstr "Bie¿±cy dzieñ (%a %b %d %Y)"
-
-#: calendar/gui/print.c:1085 calendar/gui/print.c:1089
-msgid "%a %b %d"
-msgstr "%a %b %d"
-
-#: calendar/gui/print.c:1086
-msgid "%a %d %Y"
-msgstr "%a %d %Y"
-
-#: calendar/gui/print.c:1097
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr "Bie¿±cy tydzieñ (%s - %s)"
-
-#. Month
-#: calendar/gui/print.c:1105
-msgid "Current month (%b %Y)"
-msgstr "Bie¿±cy miesi±æ (%b %Y)"
-
-#. Year
-#: calendar/gui/print.c:1112
-msgid "Current year (%Y)"
-msgstr "Bie¿±cy rok (%Y)"
-
-#: calendar/gui/print.c:1149
-msgid "Print Calendar"
-msgstr "Drukuj terminarz"
-
-#: calendar/gui/print.c:1314 mail/mail-callbacks.c:1068
-msgid "Print Preview"
-msgstr "Podgl±d wydruku"
-
-#: calendar/gui/tasks-control.c:105
-#, fuzzy
-msgid "The URI of the tasks folder to display"
-msgstr "URI które ma wy¶wietliæ przegl±darka katalogów"
-
-#: calendar/gui/weekday-picker.c:311 calendar/gui/weekday-picker.c:406
-msgid "SMTWTFS"
-msgstr ""
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:90 camel/camel-lock.c:109 camel/camel-movemail.c:136
-#: camel/camel-movemail.c:183
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "Nie mo¿na utworzuæ pliku blokady dla %s: %s"
-
-#: camel/camel-lock.c:149 camel/camel-movemail.c:217
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr ""
-
-#: camel/camel-lock.c:199
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr ""
-
-#: camel/camel-lock.c:253
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr ""
-
-#: camel/camel-movemail.c:99
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr "Nie mo¿na sprawdziæ pliku z listami %s: %s"
-
-#: camel/camel-movemail.c:146
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr "Nie mo¿na otworzyæ pliku z listami %s: %s"
-
-#: camel/camel-movemail.c:156
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr "Nie mo¿na otworzyæ tymczasowego pliku z listami %s: %s"
-
-#: camel/camel-movemail.c:197
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:243
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr "B³±d przy odczycie pliku z listem: %s"
-
-#: camel/camel-movemail.c:254
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr "B³±d przy zapisie do tymczasowego pliku z listami: %s"
-
-#: camel/camel-movemail.c:272
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr "Zapisanie listu w pliku tymczasowym %s nie powiod³o siê: %s"
-
-#: camel/camel-movemail.c:304
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr "Utworzenie potoku nie powiod³o siê: %s"
-
-#: camel/camel-movemail.c:316
-#, c-format
-msgid "Could not fork: %s"
-msgstr "Nie mo¿na utworzyæ procesu: %s"
-
-#: camel/camel-movemail.c:354
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:355
-msgid "(Unknown error)"
-msgstr "(Nieznany b³±d)"
-
-#: camel/camel-provider.c:133
-#, c-format
-msgid "Could not load %s: %s"
-msgstr "Nie mo¿na wczytaæ %s: %s"
-
-#: camel/camel-provider.c:141
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr "Nie mo¿na wczytaæ %s: Brak kodu inicjuj±cego w module."
-
-#: camel/camel-remote-store.c:184
-#, c-format
-msgid "%s server %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:188
-#, c-format
-msgid "%s service for %s on %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:318
-#, fuzzy
-msgid "Connection cancelled"
-msgstr "Anuluj"
-
-#: camel/camel-remote-store.c:321 camel/camel-remote-store.c:334
-#: camel/providers/smtp/camel-smtp-transport.c:160
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr "Nie mo¿na nawi±zañ po³±czenia z %s (port %d): %s"
-
-#: camel/camel-remote-store.c:322 camel/camel-remote-store.c:335
-msgid "(unknown host)"
-msgstr "(nieznany komputer)"
-
-#: camel/camel-remote-store.c:426 camel/camel-remote-store.c:488
-#: camel/camel-remote-store.c:556
-#: camel/providers/imap/camel-imap-command.c:289
-#, fuzzy
-msgid "Operation cancelled"
-msgstr "Otwórz terminarz"
-
-#: camel/camel-service.c:137
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr "W URL-u \"%s\" wymagana jest nazwa u¿ytkownika"
-
-#: camel/camel-service.c:146
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr "W URL-u \"%s\" wymagana jest nazwa komputera"
-
-#: camel/camel-service.c:155
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr "W URL-u \"%s\" wymagana jest ¶cie¿ka"
-
-#: camel/camel-service.c:520
-#, c-format
-msgid "No such host %s."
-msgstr "Nie ma komputera o nazwie %s."
-
-#: camel/camel-service.c:523
-#, c-format
-msgid "Temporarily unable to look up hostname %s."
-msgstr ""
-
-#: camel/camel-session.c:299
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr "Brak dostarczyciela dla protoko³u \"%s\""
-
-#: camel/camel-session.c:390
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"Nie mo¿na utworzyæ katalogu %s:\n"
-"%s"
-
-#: camel/camel-url.c:75
-#, c-format
-msgid "URL string `%s' contains no protocol"
-msgstr "URL \"%s\" nie zawiera nazwy protoko³u"
-
-#: camel/camel-url.c:90
-#, c-format
-msgid "URL string `%s' contains an invalid protocol"
-msgstr "URL \"%s\" nie zawiera niepoprawn± nazwê protoko³u"
-
-#: camel/camel-url.c:150
-#, c-format
-msgid "Port number in URL `%s' is non-numeric"
-msgstr "Numer portu w URL-u \"%s\" nie jest numeryczny"
-
-#: camel/providers/imap/camel-imap-auth.c:133
-#, fuzzy, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr "Utworzenie potoku nie powiod³o siê: %s"
-
-#: camel/providers/imap/camel-imap-auth.c:205
-#, fuzzy
-msgid "Bad authentication response from server."
-msgstr "Nieoczekiwana odpowied¼ od serwera IMAP: %s"
-
-#: camel/providers/imap/camel-imap-command.c:234
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "Nieoczekiwana odpowied¼ od serwera IMAP: %s"
-
-#: camel/providers/imap/camel-imap-command.c:242
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr "Nie powiod³o siê polecenie IMAP: %s"
-
-#: camel/providers/imap/camel-imap-command.c:243 shell/e-storage.c:411
-msgid "Unknown error"
-msgstr "Nieznany b³±d"
-
-#: camel/providers/imap/camel-imap-command.c:297
-msgid "Server response ended too soon."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:433
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:469
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr "Nieoczekiwana odpowied¼ OK od serwera IMAP: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:198
-#, c-format
-msgid "Could not load summary for %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-folder.c:697
-#: camel/providers/imap/camel-imap-folder.c:859
-msgid "Could not find message body in FETCH response."
-msgstr "Nie mo¿na odnale¼æ tre¶ci listu w odpowiedzi na FETCH."
-
-#: camel/providers/imap/camel-imap-provider.c:39
-msgid "IMAPv4"
-msgstr "IMAPv4"
-
-#: camel/providers/imap/camel-imap-provider.c:41
-msgid "For reading and storing mail on IMAP servers."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:251
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr ""
-"Przy tej opcji nast±pi po³±czenie z serwerem IMAP z u¿yciem hase³ w postaci "
-"czystego tekstu."
-
-#: camel/providers/imap/camel-imap-store.c:260
-msgid "Kerberos 4"
-msgstr "Kerberos 4"
-
-#: camel/providers/imap/camel-imap-store.c:262
-msgid ""
-"This option will connect to the IMAP server using Kerberos 4 authentication."
-msgstr ""
-"Przy tej opcji nast±pi po³±czenie z serwerem IMAP z wykorzystaniem "
-"uwierzytelniania Kerberos 4."
-
-#: camel/providers/imap/camel-imap-store.c:361
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr "%sWprowad¼ has³o IMAP dla %s@%s"
-
-#: camel/providers/imap/camel-imap-store.c:389
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Nie mo¿na dokonaæ uwierzytelnienia na serwerze IMAP.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/imap/camel-imap-store.c:645
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr "Nie mo¿na utworzyæ katalogu %s: %s"
-
-#: camel/providers/local/camel-local-provider.c:36
-#, fuzzy
-msgid "MH-format mail directories"
-msgstr "Lokalny katalog z listami %s"
-
-#: camel/providers/local/camel-local-provider.c:37
-msgid "For storing local mail in MH-like mail directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:47
-msgid "Standard Unix mailbox file"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:48
-msgid "For storing local mail in standard mbox format"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:58
-msgid "Qmail maildir-format mail files"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "For storing local mail in qmail maildir directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:122
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:129
-#, fuzzy, c-format
-msgid "Store root %s is not a regular directory"
-msgstr "\"%s\" nie jest zwyk³ym plikiem."
-
-#: camel/providers/local/camel-local-store.c:137
-#: camel/providers/local/camel-local-store.c:153
-#, fuzzy, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "Nie mo¿na utworzyæ procesu dla %s: %s"
-
-#: camel/providers/local/camel-local-store.c:168
-msgid "Local stores do not have a root folder"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:176
-msgid "Local stores do not have a default folder"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:186
-#, fuzzy
-msgid "Local folders may not be nested."
-msgstr "Foldery mbox nie mog± byæ zagnie¿d¿one."
-
-#: camel/providers/local/camel-local-store.c:200
-#, c-format
-msgid "Local mail file %s"
-msgstr "Lokalny plik z listami %s"
-
-#: camel/providers/local/camel-local-store.c:256
-#, fuzzy, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr "Nie mo¿na zmieniæ nazwy foldera \"%s\": %s"
-
-#: camel/providers/local/camel-local-store.c:297
-#, fuzzy, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr "Nie mo¿na usun±æ foldera \"%s\": %s"
-
-#: camel/providers/local/camel-local-store.c:306
-#, fuzzy, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr "Nie mo¿na usun±æ foldera \"%s\": %s"
-
-#: camel/providers/local/camel-maildir-folder.c:148
-#: camel/providers/local/camel-maildir-folder.c:156
-#: camel/providers/local/camel-maildir-folder.c:167
-#, fuzzy, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr "Nie mo¿na do³±czyæ listu do foldera mh: %s"
-
-#: camel/providers/local/camel-maildir-folder.c:195
-#: camel/providers/local/camel-maildir-folder.c:207
-#: camel/providers/local/camel-maildir-folder.c:215
-#: camel/providers/local/camel-mbox-folder.c:317
-#: camel/providers/local/camel-mh-folder.c:183
-#: camel/providers/local/camel-mh-folder.c:192
-#: camel/providers/local/camel-mh-folder.c:200
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-"Nie mo¿na pobraæ listu: %s\n"
-" %s"
-
-#: camel/providers/local/camel-maildir-folder.c:195
-#: camel/providers/local/camel-mbox-folder.c:317
-#: camel/providers/local/camel-mh-folder.c:183
-#, fuzzy
-msgid "No such message"
-msgstr "Nie ma komputera o nazwie %s."
-
-#: camel/providers/local/camel-maildir-folder.c:216
-#: camel/providers/local/camel-mh-folder.c:201
-#, fuzzy
-msgid "Invalid message contents"
-msgstr "Wy¶lij _list do kontaktu..."
-
-#: camel/providers/local/camel-maildir-store.c:102
-#: camel/providers/local/camel-mh-store.c:96
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-"Nie mo¿na otworzyæ foldera \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:106
-#: camel/providers/local/camel-mbox-store.c:108
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr "Folder \"%s\" nie istnieje."
-
-# y, c-format
-#: camel/providers/local/camel-maildir-store.c:113
-#: camel/providers/local/camel-mh-store.c:109
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-"Nie mo¿na utworzyæ foldera \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:128
-#, fuzzy, c-format
-msgid "`%s' is not a maildir directory."
-msgstr "\"%s\" nie jest katalogiem."
-
-#: camel/providers/local/camel-maildir-store.c:157
-#: camel/providers/local/camel-maildir-store.c:194
-#: camel/providers/local/camel-mh-store.c:133
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr "Nie mo¿na usun±æ foldera \"%s\": %s"
-
-#: camel/providers/local/camel-maildir-store.c:158
-#, fuzzy
-msgid "not a maildir directory"
-msgstr "Lokalny katalog z listami %s"
-
-#: camel/providers/local/camel-mbox-folder.c:201
-#, fuzzy, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr "Nie mo¿na otworzyæ tymczasowej skrzynki: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:257
-#, fuzzy, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr "Nie mo¿na do³±czyæ listu do pliku mbox: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:333
-#: camel/providers/local/camel-mbox-folder.c:365
-#: camel/providers/local/camel-mbox-folder.c:378
-#, fuzzy, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-"Nie mo¿na pobraæ listu: %s\n"
-" %s"
-
-#: camel/providers/local/camel-mbox-folder.c:366
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:379
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:101
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-"Nie mo¿na otworzyæ pliku \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:117
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-"Nie mo¿na utworzyæ pliku \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:126
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr "\"%s\" nie jest zwyk³ym plikiem."
-
-#: camel/providers/local/camel-mbox-store.c:145
-#: camel/providers/local/camel-mbox-store.c:168
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-"Nie mo¿na usun±æ foldera \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:160
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr "Folder \"%s\" nie jest pusty. Nie zosta³ usuniêty."
-
-#: camel/providers/local/camel-mbox-summary.c:234
-#, fuzzy, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr "Nie mo¿na otworzyæ foldera: spis listów by³ niekompletny."
-
-#: camel/providers/local/camel-mbox-summary.c:268
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:343
-#, fuzzy, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr "Nie mo¿na utworzyæ procesu dla %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:477
-#: camel/providers/local/camel-mbox-summary.c:668
-#, fuzzy, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr ""
-"Nie mo¿na otworzyæ foldera \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-summary.c:493
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr "Nie mo¿na otworzyæ tymczasowej skrzynki: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:514
-#: camel/providers/local/camel-mbox-summary.c:522
-#: camel/providers/local/camel-mbox-summary.c:701
-#: camel/providers/local/camel-mbox-summary.c:709
-msgid "Summary and folder mismatch, even after a sync"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:565
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:582
-#, fuzzy, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr "Nie mo¿na otworzyæ pliku z listami %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:600
-#: camel/providers/local/camel-mbox-summary.c:759
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr "Nie mo¿na zamkn±æ foldera ¼ród³owego %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:609
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr "Nie mo¿na zamkn±æ foldera tymczasowego: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:620
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr "Nie mo¿na zmieniæ nazwy foldera: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:830
-#, c-format
-msgid "Unknown error: %s"
-msgstr "Nieznany b³±d: %s"
-
-#: camel/providers/local/camel-mh-folder.c:147
-#: camel/providers/local/camel-mh-folder.c:155
-#, fuzzy, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr "Nie mo¿na do³±czyæ listu do foldera mh: %s"
-
-#: camel/providers/local/camel-mh-store.c:116
-#, c-format
-msgid "`%s' is not a directory."
-msgstr "\"%s\" nie jest katalogiem."
-
-#: camel/providers/nntp/camel-nntp-auth.c:41
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr "Wprowad¼ has³o NNTP dla %s@%s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:62
-msgid "Server rejected username"
-msgstr "Swerwer odrzuci³ nazwê u¿ytkownika"
-
-#: camel/providers/nntp/camel-nntp-auth.c:68
-msgid "Failed to send username to server"
-msgstr "Wys³anie nazwy u¿ytkownika do serwera nie powiod³o siê"
-
-#: camel/providers/nntp/camel-nntp-auth.c:77
-msgid "Server rejected username/password"
-msgstr "Serwer odrzuci³ nazwê u¿ytkownika/has³o"
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr "Nie odnaleziono listu %s."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-provider.c:38
-msgid "USENET news"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-provider.c:40
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:226
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:288
-#, c-format
-msgid "USENET News via %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:295
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:327
-#: camel/providers/nntp/camel-nntp-store.c:490
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr "Nie mo¿na otworzyæ lub utworzyæ pliku .newsrc dla %s: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:180
-msgid "Could not open folder: message listing was incomplete."
-msgstr "Nie mo¿na otworzyæ foldera: spis listów by³ niekompletny."
-
-#: camel/providers/pop3/camel-pop3-folder.c:274
-#, c-format
-msgid "No message with uid %s"
-msgstr "Brak listu o warto¶ci uid %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:288
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr "Nie mo¿na pobraæ listu z serwera POP %s: %s"
-
-#: camel/providers/pop3/camel-pop3-provider.c:34
-msgid "POP"
-msgstr "POP"
-
-#: camel/providers/pop3/camel-pop3-provider.c:36
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:148
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:158
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:170
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:215
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr "Nie mo¿na przeprowadziæ uwierzytelnienia na serwerze KPOP: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:335
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr "Nie mo¿na nawi±zaæ po³±czenia z serwerem POP pod adresem %s."
-
-#: camel/providers/pop3/camel-pop3-store.c:375
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr "%sWprowad¼ has³o POP3 dla %s@%s"
-
-#: camel/providers/pop3/camel-pop3-store.c:394
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-"Nie mo¿na nawi±zaæ po³±czenia z serwerem POP.\n"
-"Wyst±pi³ b³±d przy wysy³aniu nazwy u¿ytkownika: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:397
-#: camel/providers/pop3/camel-pop3-store.c:434
-msgid "(Unknown)"
-msgstr "(Nieznane)"
-
-#: camel/providers/pop3/camel-pop3-store.c:424
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:432
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-"Nie mo¿na nawi±zaæ po³±czenia z serwerem POP.\n"
-"Wyst±pi³ b³±d przy wysy³aniu has³a: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:541
-#, c-format
-msgid "No such folder `%s'."
-msgstr "Folder \"%s\" nie istnieje."
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:34
-msgid "Sendmail"
-msgstr "Sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:36
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:105
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr ""
-"Nie mo¿na utworzyæ potoku do programu sendmail: %s: poczta nie zosta³a "
-"wys³ana"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:122
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr ""
-"Nie mo¿na utworzyæ procesu dla programu sendmail: %s: poczta nie zosta³a "
-"wys³ana"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:148
-#, c-format
-msgid "Could not send message: %s"
-msgstr "Nie mo¿na wys³aæ listu: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:161
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr ""
-"Program sendmail zosta³ przerwany przez sygna³ %s: poczta nie zosta³a "
-"wys³ana."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:168
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr "Nie mo¿na wykonaæ %s: poczta nie zosta³a wys³ana."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:173
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr ""
-"Program sendmail zosta³ zakoñczony z kodem stanu %d: poczta nie zosta³a "
-"wys³ana."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:220
-msgid "sendmail"
-msgstr "sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:222
-msgid "Mail delivery via the sendmail program"
-msgstr "Wysy³anie listów za pomoc± programu sendmail"
-
-#: camel/providers/smtp/camel-smtp-provider.c:36
-msgid "For delivering mail by connecting to a remote mailhub using SMTP."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:185
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:279
-#, fuzzy
-msgid "No authentication required"
-msgstr "Uwierzytelnianie:"
-
-#: camel/providers/smtp/camel-smtp-transport.c:281
-msgid ""
-"This option will connect to the SMTP server without using any kind of "
-"authentication. This should be fine for connecting to most SMTP servers."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:290
-#: camel/providers/smtp/camel-smtp-transport.c:295
-msgid "CRAM-MD5"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:292
-#, fuzzy
-msgid ""
-"This option will connect to the SMTP server using CRAM-MD5 authentication."
-msgstr ""
-"Przy tej opcji nast±pi po³±czenie z serwerem IMAP z wykorzystaniem "
-"uwierzytelniania Kerberos 4."
-
-#: camel/providers/smtp/camel-smtp-transport.c:320
-#, c-format
-msgid "SMTP server %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:322
-#, fuzzy, c-format
-msgid "SMTP mail delivery via %s"
-msgstr "Wysy³anie listów za pomoc± programu sendmail"
-
-#: camel/providers/smtp/camel-smtp-transport.c:347
-msgid "Cannot send message: sender address not defined."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:354
-msgid "Cannot send message: sender address not valid."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:368
-msgid "Cannot send message: no recipients defined."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:462
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:478
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:517
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:533
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:558
-#, fuzzy, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr ""
-"Nie mo¿na utworzyæ potoku do programu sendmail: %s: poczta nie zosta³a "
-"wys³ana"
-
-#: camel/providers/smtp/camel-smtp-transport.c:574
-#, fuzzy
-msgid "RCPT TO response error: mail not sent"
-msgstr "Nie mo¿na wykonaæ %s: poczta nie zosta³a wys³ana."
-
-#: camel/providers/smtp/camel-smtp-transport.c:604
-#, fuzzy, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr "Nie mo¿na wykonaæ %s: poczta nie zosta³a wys³ana."
-
-#: camel/providers/smtp/camel-smtp-transport.c:620
-#, fuzzy, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr ""
-"Nie mo¿na utworzyæ procesu dla programu sendmail: %s: poczta nie zosta³a "
-"wys³ana"
-
-#: camel/providers/smtp/camel-smtp-transport.c:635
-#: camel/providers/smtp/camel-smtp-transport.c:653
-#, fuzzy, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr ""
-"Program sendmail zosta³ przerwany przez sygna³ %s: poczta nie zosta³a "
-"wys³ana."
-
-#: camel/providers/smtp/camel-smtp-transport.c:669
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:693
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:709
-#, fuzzy, c-format
-msgid "RSET response error: %s"
-msgstr "Nieznany b³±d: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:732
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:748
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/vee/camel-vee-provider.c:30
-msgid "Virtual folder email provider"
-msgstr ""
-
-#: camel/providers/vee/camel-vee-provider.c:32
-msgid "For reading mail as a query of another set of folders"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:87
-msgid "1 byte"
-msgstr "1 bajt"
-
-#: composer/e-msg-composer-attachment-bar.c:89
-#, c-format
-msgid "%u bytes"
-msgstr "%u bajtów"
-
-#: composer/e-msg-composer-attachment-bar.c:96
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fk"
-
-#: composer/e-msg-composer-attachment-bar.c:100
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fM"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fG"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:324 mail/mail-display.c:155
-msgid "attachment"
-msgstr "za³±cznik"
-
-#: composer/e-msg-composer-attachment-bar.c:413
-msgid "Attach a file"
-msgstr "Za³±czenie pliku"
-
-#: composer/e-msg-composer-attachment-bar.c:460 shell/e-shortcuts-view.c:254
-#: shell/e-shortcuts-view.c:377
-msgid "Remove"
-msgstr "Usuñ"
-
-#: composer/e-msg-composer-attachment-bar.c:461
-msgid "Remove selected items from the attachment list"
-msgstr "Usuwa wybrane elementy z listy za³±czników"
-
-#: composer/e-msg-composer-attachment-bar.c:492
-msgid "Add attachment..."
-msgstr "Dodaj za³±cznik..."
-
-#: composer/e-msg-composer-attachment-bar.c:493
-msgid "Attach a file to the message"
-msgstr "Za³±cza plik do listu"
-
-#: composer/e-msg-composer-hdrs.c:147 composer/e-msg-composer-hdrs.c:312
-#: mail/mail-format.c:624
-msgid "From:"
-msgstr "Od:"
-
-#: composer/e-msg-composer-hdrs.c:257
-msgid "Click here for the address book"
-msgstr "Kliknij tu aby otworzyæ ksi±¿kê adresow±"
-
-#: composer/e-msg-composer-hdrs.c:313
-msgid "Enter the identity you wish to send this message from"
-msgstr ""
-
-#: composer/e-msg-composer-hdrs.c:317 mail/mail-format.c:628
-msgid "To:"
-msgstr "Dla:"
-
-#: composer/e-msg-composer-hdrs.c:318
-msgid "Enter the recipients of the message"
-msgstr "Podaj adres odbiorcy listu"
-
-#: composer/e-msg-composer-hdrs.c:322 mail/mail-format.c:630
-msgid "Cc:"
-msgstr "Cc:"
-
-#: composer/e-msg-composer-hdrs.c:323
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "Podaj adresy, pod które zostanie przes³ana kopia listu"
-
-#: composer/e-msg-composer-hdrs.c:328
-msgid "Bcc:"
-msgstr "Bcc:"
-
-#: composer/e-msg-composer-hdrs.c:329
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"Podaj adresy, pod które zostanie przes³ana kopia listu bez listy odbiorców."
-
-#: composer/e-msg-composer-hdrs.c:335 mail/mail-format.c:632
-msgid "Subject:"
-msgstr "Temat:"
-
-#: composer/e-msg-composer-hdrs.c:336
-msgid "Enter the subject of the mail"
-msgstr "Podaj temat listu"
-
-#: composer/e-msg-composer.c:430
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-
-#: composer/e-msg-composer.c:598
-msgid "Save as..."
-msgstr "Zapisz jako..."
-
-#: composer/e-msg-composer.c:609
-#, c-format
-msgid "Error saving file: %s"
-msgstr "B³±d przy zapisie pliku: %s"
-
-#: composer/e-msg-composer.c:629
-#, c-format
-msgid "Error loading file: %s"
-msgstr "B³±d przy odczycie pliku : %s"
-
-#: composer/e-msg-composer.c:651
-msgid "Saving changes to message..."
-msgstr "Zapisywanie zmian listu..."
-
-#: composer/e-msg-composer.c:653
-msgid "Save changes to message..."
-msgstr "Zapisz zmiany listu..."
-
-#: composer/e-msg-composer.c:694
-#, c-format
-msgid "Error saving composition to 'Drafts': %s"
-msgstr ""
-
-#: composer/e-msg-composer.c:752 shell/e-shell-view-menu.c:170
-msgid "Evolution"
-msgstr "Evolution"
-
-#: composer/e-msg-composer.c:758
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-"List nie zosta³ wys³any.\n"
-"\n"
-"Czy chcesz zapisaæ zmiany?"
-
-#: composer/e-msg-composer.c:783
-msgid "Open file"
-msgstr "Otwiera plik"
-
-#: composer/e-msg-composer.c:909
-msgid "That file does not exist."
-msgstr "Podany plik nie istnieje."
-
-#: composer/e-msg-composer.c:919
-msgid "That is not a regular file."
-msgstr "Podany plik nie jest zwyk³ym plikiem."
-
-#: composer/e-msg-composer.c:929
-msgid "That file exists but is not readable."
-msgstr "Podany plik istnieje, lecz nie mo¿na go odczytaæ."
-
-#: composer/e-msg-composer.c:939
-msgid "That file appeared accesible but open(2) failed."
-msgstr ""
-"Podany plik wydaje siê byæ odczytywalny, lecz funkcja open(2) nie powiod³a "
-"siê."
-
-#: composer/e-msg-composer.c:961
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-"Plik jest bardzo du¿y (wiêkszy ni¿ 100K).\n"
-"Czy na pewno chcesz go wstawiæ?"
-
-#: composer/e-msg-composer.c:982
-msgid "An error occurred while reading the file."
-msgstr "Podczas odczytu pliku wyst±pi³ b³±d."
-
-#: composer/e-msg-composer.c:1362
-msgid "Compose a message"
-msgstr "Tworzenie listu"
-
-#: composer/e-msg-composer.c:1439
-msgid "Could not create composer window."
-msgstr ""
-
-#: composer/evolution-composer.c:346
-msgid "Cannot initialize Evolution's composer."
-msgstr ""
-
-#: filter/filter-datespec.c:62
-msgid "year"
-msgstr "rok"
-
-#: filter/filter-datespec.c:62
-msgid "years"
-msgstr "lat"
-
-#: filter/filter-datespec.c:63
-msgid "month"
-msgstr "miesi±c"
-
-#: filter/filter-datespec.c:63
-msgid "months"
-msgstr "miesiêcy"
-
-#: filter/filter-datespec.c:64
-msgid "week"
-msgstr "tydzieñ"
-
-#: filter/filter-datespec.c:64
-msgid "weeks"
-msgstr "tygodni"
-
-#: filter/filter-datespec.c:65
-msgid "days"
-msgstr "dni"
-
-#: filter/filter-datespec.c:66
-msgid "hour"
-msgstr "godzina"
-
-#: filter/filter-datespec.c:66
-msgid "hours"
-msgstr "godzin"
-
-#: filter/filter-datespec.c:67
-msgid "minute"
-msgstr "minuta"
-
-#: filter/filter-datespec.c:67
-msgid "minutes"
-msgstr "minut"
-
-#: filter/filter-datespec.c:68
-msgid "second"
-msgstr "sekunda"
-
-#: filter/filter-datespec.c:68
-msgid "seconds"
-msgstr "sekund"
-
-#: filter/filter-datespec.c:183
-msgid "Oops. You have forgotten to choose a date."
-msgstr ""
-
-#: filter/filter-datespec.c:185
-msgid "Oops. You have chosen an invalid date."
-msgstr ""
-
-#: filter/filter-datespec.c:259
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-"Data listu bêdzie porównywana z czasem\n"
-"zastosowania filtra."
-
-#: filter/filter-datespec.c:282
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-"Data listu bêdzie porównywana z czasem podanym\n"
-"poni¿ej."
-
-#: filter/filter-datespec.c:322
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-"Data listu bêdzie porównywana z czasem podanym\n"
-"jako wzglêdny do czasu zastosowania filtra, np.\n"
-"\"tydzieñ temu\"."
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:357
-msgid "the current time"
-msgstr "bie¿±cym czasem"
-
-#: filter/filter-datespec.c:357
-msgid "a time you specify"
-msgstr "podanym czasem"
-
-#: filter/filter-datespec.c:358
-msgid "a time relative to the current time"
-msgstr "czasem podanym wzglêdem bie¿±cego"
-
-#. The label
-#: filter/filter-datespec.c:416
-msgid "Compare against"
-msgstr "Porównanie z"
-
-#: filter/filter-datespec.c:533 filter/filter-datespec.c:693
-msgid "now"
-msgstr "teraz"
-
-#: filter/filter-datespec.c:690
-msgid "<click here to select a date>"
-msgstr "<kliknij, aby wybraæ datê>"
-
-#: filter/filter-editor.c:160 mail/mail-autofilter.c:286
-#: mail/mail-autofilter.c:335
-msgid "Add Filter Rule"
-msgstr "Dodanie regu³y filtra"
-
-#: filter/filter-editor.c:233
-msgid "Edit Filter Rule"
-msgstr "Zmodyfikuj regu³ê filtra"
-
-#: filter/filter-editor.c:433
-msgid "incoming"
-msgstr ""
-
-#. "demand",
-#: filter/filter-editor.c:435
-msgid "outgoing"
-msgstr ""
-
-#: filter/filter-editor.c:456
-msgid "Edit Filters"
-msgstr ""
-
-#. and now for the action area
-#: filter/filter-filter.c:401
-msgid "Then"
-msgstr "Podejmowane czynno¶ci"
-
-#: filter/filter-filter.c:414
-msgid "Add action"
-msgstr "Dodaj czynno¶æ"
-
-#: filter/filter-filter.c:420
-msgid "Remove action"
-msgstr "Usuñ czynno¶æ"
-
-#: filter/filter-folder.c:143
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-
-#: filter/filter-folder.c:218 filter/vfolder-rule.c:271
-msgid "Select Folder"
-msgstr "Wybór foldera"
-
-#: filter/filter-folder.c:243
-msgid "Enter folder URI"
-msgstr "Wprowad¼ URI foldera"
-
-#: filter/filter-folder.c:289
-msgid "<click here to select a folder>"
-msgstr "<kliknij, aby wybraæ folder> "
-
-#: filter/filter-input.c:185
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-"B³±d w wyra¿eniu regularnym \"%s\":\n"
-"%s"
-
-#: filter/filter-message-search.c:380 filter/filter-message-search.c:448
-#, c-format
-msgid "Failed to perform regex search on message header: %s"
-msgstr ""
-
-#: filter/filter-part.c:467
-msgid "Test"
-msgstr ""
-
-#: filter/filter-rule.c:530
-msgid "Rule name: "
-msgstr "Nazwa regu³y: "
-
-#: filter/filter-rule.c:534
-msgid "Untitled"
-msgstr "Bez nazwy"
-
-#: filter/filter-rule.c:550
-msgid "If"
-msgstr "Lista warunków"
-
-#: filter/filter-rule.c:567
-msgid "Execute actions"
-msgstr "Wykonywanie czynno¶ci"
-
-#: filter/filter-rule.c:571
-msgid "if all criteria are met"
-msgstr "przy spe³nieniu wszystkich kryteriów"
-
-#: filter/filter-rule.c:576
-msgid "if any criteria are met"
-msgstr "przy spe³nieniu któregokolwiek z kryteriów"
-
-#: filter/filter-rule.c:587
-msgid "Add criterion"
-msgstr "Dodaj kryterium"
-
-#: filter/filter-rule.c:593
-msgid "Remove criterion"
-msgstr "Usuñ kryterium"
-
-#: filter/filter-system-flag.c:63
-#, fuzzy
-msgid "Replied to"
-msgstr "Wszystkim"
-
-#. { _("Deleted"), "Deleted" },
-#. { _("Draft"), "Draft" },
-#: filter/filter-system-flag.c:66
-msgid "Important"
-msgstr ""
-
-#: filter/filter-system-flag.c:67
-#, fuzzy
-msgid "Read"
-msgstr "Ponów"
-
-#. Automatically generated. Do not edit.
-#: filter/libfilter-i18n.h:2
-msgid "Assign Colour"
-msgstr "Przypisz kolor"
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Score"
-msgstr ""
-
-#: filter/libfilter-i18n.h:4
-msgid "Copy to Folder"
-msgstr "Kopiuj do foldera"
-
-#: filter/libfilter-i18n.h:5
-msgid "Date received"
-msgstr "Data otrzymania"
-
-#: filter/libfilter-i18n.h:6
-msgid "Date sent"
-msgstr "Data wys³ania"
-
-#: filter/libfilter-i18n.h:8
-msgid "Expression"
-msgstr "Wyra¿enie"
-
-#: filter/libfilter-i18n.h:9
-msgid "Forward to Address"
-msgstr "Prze¶lij na adres"
-
-#: filter/libfilter-i18n.h:10
-msgid "Message Body"
-msgstr "Tre¶æ listu"
-
-#: filter/libfilter-i18n.h:11
-msgid "Message Header"
-msgstr "Nag³ówek listu"
-
-#: filter/libfilter-i18n.h:12
-msgid "Message was received"
-msgstr "List zosta³ otrzymany"
-
-#: filter/libfilter-i18n.h:13
-msgid "Message was sent"
-msgstr "List zosta³ wys³any"
-
-#: filter/libfilter-i18n.h:14
-msgid "Move to Folder"
-msgstr "Przenie¶ do foldera"
-
-#: filter/libfilter-i18n.h:15
-msgid "Recipients"
-msgstr "Lista odbiorców"
-
-#: filter/libfilter-i18n.h:16
-msgid "Regex Match"
-msgstr ""
-
-#: filter/libfilter-i18n.h:17 filter/score-rule.c:192 filter/score-rule.c:194
-#: mail/message-list.c:1109
-msgid "Score"
-msgstr ""
-
-#: filter/libfilter-i18n.h:18
-msgid "Sender"
-msgstr "Nadawca"
-
-#: filter/libfilter-i18n.h:19
-#, fuzzy
-msgid "Set Status"
-msgstr "_Stan:"
-
-#: filter/libfilter-i18n.h:20
-msgid "Source"
-msgstr "¬ród³o"
-
-#: filter/libfilter-i18n.h:21
-msgid "Specific header"
-msgstr "Okre¶lony nag³ówek"
-
-#: filter/libfilter-i18n.h:22 mail/message-list.c:1109
-#, fuzzy
-msgid "Status"
-msgstr "_Stan:"
-
-#: filter/libfilter-i18n.h:23
-msgid "Stop Processing"
-msgstr "Zatrzymanie przetwarzania"
-
-#: filter/libfilter-i18n.h:24 mail/message-list.c:1110
-msgid "Subject"
-msgstr "Temat"
-
-#: filter/libfilter-i18n.h:25
-msgid "after"
-msgstr "po"
-
-#: filter/libfilter-i18n.h:26
-msgid "before"
-msgstr "przed"
-
-#: filter/libfilter-i18n.h:27
-msgid "contains"
-msgstr "zawiera"
-
-#: filter/libfilter-i18n.h:28
-msgid "does not contain"
-msgstr "nie zawiera"
-
-#: filter/libfilter-i18n.h:29
-msgid "does not end with"
-msgstr "nie koñczy siê na"
-
-#: filter/libfilter-i18n.h:30
-msgid "does not exist"
-msgstr "nie istnieje"
-
-#: filter/libfilter-i18n.h:31
-msgid "does not sound like"
-msgstr ""
-
-#: filter/libfilter-i18n.h:32
-msgid "does not start with"
-msgstr "nie rozpoczyna siê od"
-
-#: filter/libfilter-i18n.h:33
-msgid "ends with"
-msgstr "koñczy siê na"
-
-#: filter/libfilter-i18n.h:34
-msgid "exists"
-msgstr "istnieje"
-
-#: filter/libfilter-i18n.h:35
-msgid "is greater than"
-msgstr "jest wiêkszy ni¿"
-
-#: filter/libfilter-i18n.h:36
-msgid "is less than"
-msgstr "jest mniejszy ni¿"
-
-#: filter/libfilter-i18n.h:37
-msgid "is not"
-msgstr "nie jest"
-
-#: filter/libfilter-i18n.h:38
-msgid "is"
-msgstr "jest"
-
-#: filter/libfilter-i18n.h:39
-msgid "on or after"
-msgstr "w lub po"
-
-#: filter/libfilter-i18n.h:40
-msgid "on or before"
-msgstr "w lub przed"
-
-#: filter/libfilter-i18n.h:41
-msgid "sounds like"
-msgstr ""
-
-#: filter/libfilter-i18n.h:42
-msgid "starts with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:43
-msgid "was after"
-msgstr "jest po"
-
-#: filter/libfilter-i18n.h:44
-msgid "was before"
-msgstr "jest przed"
-
-#: filter/score-editor.c:127
-msgid "Add Rule"
-msgstr "Dodaj regu³ê"
-
-#: filter/score-editor.c:166
-msgid "Edit Score Rule"
-msgstr ""
-
-#: filter/vfolder-editor.c:155
-msgid "Add VFolder Rule"
-msgstr "Dodaj regu³ê VFoldera"
-
-#: filter/vfolder-editor.c:204
-msgid "Edit VFolder Rule"
-msgstr "Zmodyfikuj regu³ê VFoldera"
-
-#: mail/component-factory.c:284
-msgid "Cannot initialize Evolution's mail component."
-msgstr "Nie mo¿na zainicjowaæ komponentu pocztowego Evlution."
-
-#: mail/component-factory.c:320
-msgid "Cannot register storage with shell"
-msgstr ""
-
-#: mail/folder-browser.c:225
-#, fuzzy
-msgid "Store search as vFolder"
-msgstr "Wybór foldera"
-
-#: mail/folder-browser.c:238
-msgid "Body or subject contains"
-msgstr "Tre¶æ lub temat zawiera"
-
-#: mail/folder-browser.c:239
-msgid "Body contains"
-msgstr "Tre¶æ zawiera"
-
-#: mail/folder-browser.c:240
-msgid "Subject contains"
-msgstr "Temat zawiera"
-
-#: mail/folder-browser.c:241
-msgid "Body does not contain"
-msgstr "Tre¶æ nie zawiera"
-
-#: mail/folder-browser.c:242
-msgid "Subject does not contain"
-msgstr "Temat nie zawiera"
-
-#: mail/folder-browser.c:645
-msgid "VFolder on Subject"
-msgstr "Utwórz VFolder w oparciu o temat"
-
-#: mail/folder-browser.c:646
-msgid "VFolder on Sender"
-msgstr "Utwórz VFolder w oparciu o nadawcê"
-
-#: mail/folder-browser.c:647
-msgid "VFolder on Recipients"
-msgstr "Utwórz VFolder w oparciu o odbiorców"
-
-#: mail/folder-browser.c:649
-msgid "Filter on Subject"
-msgstr "Utwórz filtr w oparciu o temat"
-
-#: mail/folder-browser.c:650
-msgid "Filter on Sender"
-msgstr "Utwórz filtr w oparciu o nadawcê"
-
-#: mail/folder-browser.c:651
-msgid "Filter on Recipients"
-msgstr "Utwórz filtr w oparciu o odbiorców"
-
-#: mail/folder-browser.c:652 mail/folder-browser.c:766
-msgid "Filter on Mailing List"
-msgstr "Utwórz filtr w oparciu o listê dyskusyjn±"
-
-#: mail/folder-browser.c:658
-msgid "Open"
-msgstr "Otwórz"
-
-#: mail/folder-browser.c:659
-msgid "Edit"
-msgstr "Edycja"
-
-#: mail/folder-browser.c:660
-#, fuzzy
-msgid "Save As..."
-msgstr "Zapisz j_ako..."
-
-#: mail/folder-browser.c:661 mail/mail-view.c:148
-msgid "Print"
-msgstr "Drukuj"
-
-#: mail/folder-browser.c:663
-msgid "Reply to Sender"
-msgstr "Odpowiedz nadawcy"
-
-#: mail/folder-browser.c:664 mail/mail-view.c:141
-msgid "Reply to All"
-msgstr "Wszystkim"
-
-#: mail/folder-browser.c:665 mail/mail-view.c:144
-msgid "Forward"
-msgstr "Prze¶lij"
-
-#: mail/folder-browser.c:666
-#, fuzzy
-msgid "Forward inline"
-msgstr "Przemieszcza w czasie do przodu"
-
-#: mail/folder-browser.c:668
-msgid "Mark as Read"
-msgstr "Oznacz jako przeczytany"
-
-#: mail/folder-browser.c:669
-msgid "Mark as Unread"
-msgstr "Oznacz jako nieprzeczytany"
-
-#: mail/folder-browser.c:671
-msgid "Move to Folder..."
-msgstr "Przenie¶ do foldera..."
-
-#: mail/folder-browser.c:672
-msgid "Copy to Folder..."
-msgstr "Kopiuj do foldera..."
-
-#: mail/folder-browser.c:674
-msgid "Undelete"
-msgstr "Cofnij usuniêcie"
-
-#. { _("Add Sender to Address Book"), NULL, GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL, GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:678
-msgid "Apply Filters"
-msgstr "Zastosuj filtry"
-
-#: mail/folder-browser.c:680
-msgid "Create Rule From Message"
-msgstr "Utwórz regu³ê na podstawie listu"
-
-#: mail/folder-browser.c:768
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr "Utwórz filtr w oparciu o listê dyskusyjn± (%s)"
-
-#. add a "None" option to the stores menu
-#: mail/mail-account-editor.c:683 mail/mail-account-editor.c:685
-#: mail/mail-account-editor.c:734 mail/mail-accounts.c:114
-#: mail/mail-config-druid.c:844 shell/e-shell-view.c:1093
-#: widgets/misc/e-dateedit.c:421 widgets/misc/e-dateedit.c:1330
-#: widgets/misc/e-dateedit.c:1445
-msgid "None"
-msgstr "Brak"
-
-#: mail/mail-accounts.c:115
-#, fuzzy
-msgid " (default)"
-msgstr "Domy¶lne"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:347
-msgid "Evolution Account Manager"
-msgstr ""
-
-#: mail/mail-account-editor.c:274
-msgid ""
-"One or more of your servers are not configured correctly.\n"
-"Do you wish to save anyway?"
-msgstr ""
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:634
-#, fuzzy
-msgid "Evolution Account Editor"
-msgstr "Instalacja Evolution"
-
-#: mail/mail-autofilter.c:71
-#, c-format
-msgid "Mail to %s"
-msgstr ""
-
-#: mail/mail-autofilter.c:214
-#, c-format
-msgid "Subject is %s"
-msgstr ""
-
-#: mail/mail-autofilter.c:230
-#, c-format
-msgid "Mail from %s"
-msgstr ""
-
-#: mail/mail-autofilter.c:331
-#, c-format
-msgid "%s mailing list"
-msgstr "lista dyskusyjna %s"
-
-#: mail/mail-callbacks.c:83
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-
-#: mail/mail-callbacks.c:136
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-
-#: mail/mail-callbacks.c:148
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-
-#: mail/mail-callbacks.c:223
-msgid "You have not set a mail transport method"
-msgstr ""
-
-#: mail/mail-callbacks.c:232
-msgid "You have no Outbox configured"
-msgstr "Nie zosta³ skonfigurowany folder Poczta wychodz±ca"
-
-#: mail/mail-callbacks.c:279
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-"List nie zawiera tematu.\n"
-"Naprawdê wys³aæ?"
-
-#: mail/mail-callbacks.c:345
-msgid "You must configure an account before you can send this email."
-msgstr ""
-
-#: mail/mail-callbacks.c:365
-msgid "You must specify recipients in order to send this message."
-msgstr ""
-
-#: mail/mail-callbacks.c:594
-msgid "Forwarded message:\n"
-msgstr "Przes³any list:\n"
-
-#: mail/mail-callbacks.c:675
-msgid "Move message(s) to"
-msgstr "Przenoszenie listów do foldera"
-
-#: mail/mail-callbacks.c:677
-msgid "Copy message(s) to"
-msgstr "Kopiowanie listów do foldera"
-
-#: mail/mail-callbacks.c:812
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-"Mo¿liwe jest redagowanie wy³±cznie\n"
-"listów zapisanych w folderze Poczta robocza."
-
-#: mail/mail-callbacks.c:845 mail/mail-display.c:79
-msgid "Overwrite file?"
-msgstr "Nadpisaæ plik?"
-
-#: mail/mail-callbacks.c:849 mail/mail-display.c:83
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-"Plik o tej nazwie ju¿ istnieje.\n"
-"Nadpisaæ go?"
-
-#: mail/mail-callbacks.c:893
-#, fuzzy
-msgid "Save Message As..."
-msgstr "Zapisz jako..."
-
-#: mail/mail-callbacks.c:895
-#, fuzzy
-msgid "Save Messages As..."
-msgstr "Zapisz jako..."
-
-#: mail/mail-callbacks.c:979
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-"B³±d przy wczytywaniu informacji o filtrze:\n"
-"%s"
-
-#: mail/mail-callbacks.c:1028
-msgid "Print Message"
-msgstr "Wydrukuj list"
-
-#: mail/mail-callbacks.c:1075
-msgid "Printing of message failed"
-msgstr "Wydrukowanie listu nie powiod³o siê"
-
-#: mail/mail-config-druid.c:363
-#, c-format
-msgid ""
-"Failed to verify the incoming mail configuration.\n"
-"You may experience problems retrieving your mail from %s"
-msgstr ""
-
-#: mail/mail-config-druid.c:629
-#, c-format
-msgid ""
-"Failed to verify the outgoing mail configuration.\n"
-"You may experience problems sending your mail using %s"
-msgstr ""
-
-#. set window title
-#: mail/mail-config-druid.c:949
-msgid "Evolution Account Wizard"
-msgstr ""
-
-#: mail/mail-display.c:98
-#, c-format
-msgid ""
-"Could not open file %s:\n"
-"%s"
-msgstr ""
-"Nie mo¿na otworzyæ pliku %s:\n"
-"%s"
-
-#: mail/mail-display.c:131
-#, c-format
-msgid "Could not write data: %s"
-msgstr "Nie mo¿na zapisaæ danych: %s"
-
-#: mail/mail-display.c:229
-msgid "Save Attachment"
-msgstr "Zapis za³±cznika"
-
-#: mail/mail-display.c:269
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr "Nie mo¿na utworzyæ katalogu tymczasowego: %s"
-
-#: mail/mail-display.c:311
-msgid "Save to Disk..."
-msgstr "Zapisz na dysk..."
-
-#: mail/mail-display.c:313
-#, c-format
-msgid "Open in %s..."
-msgstr "Otwórz za pomoc± programu %s..."
-
-#: mail/mail-display.c:315
-msgid "View Inline"
-msgstr "Wy¶wietl na miejscu"
-
-#: mail/mail-display.c:342
-msgid "External Viewer"
-msgstr "Zewnêtrzna przegl±darka"
-
-#: mail/mail-display.c:365
-#, c-format
-msgid "View Inline (via %s)"
-msgstr "Wy¶wietl na miejscu (za pomoc± programu %s)"
-
-#: mail/mail-display.c:369
-msgid "Hide"
-msgstr "Ukryj"
-
-#: mail/mail-format.c:504
-#, c-format
-msgid "%s attachment"
-msgstr "Za³±cznik %s"
-
-#: mail/mail-format.c:626
-msgid "Reply-To:"
-msgstr ""
-
-#: mail/mail-format.c:856
-msgid "Encrypted message not displayed"
-msgstr ""
-
-#: mail/mail-format.c:862
-msgid "Encrypted message"
-msgstr "List zaszyfrowany"
-
-#: mail/mail-format.c:863
-msgid "Click icon to decrypt."
-msgstr "Kliknij ikonê aby rozszyfrowaæ."
-
-#: mail/mail-format.c:1438
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr "Wska¼nik do witryny FTP (%s)"
-
-#: mail/mail-format.c:1450
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr ""
-
-#: mail/mail-format.c:1454
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr "Wska¼nik do lokalnego pliku (%s)"
-
-#: mail/mail-format.c:1488
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr ""
-
-#: mail/mail-format.c:1493
-msgid "Malformed external-body part."
-msgstr ""
-
-#: mail/mail-format.c:1663
-#, c-format
-msgid "On %s, %s wrote:\n"
-msgstr ""
-
-#: mail/mail-local.c:204
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr "Konwertowanie foldera \"%s\" na format \"%s\""
-
-#: mail/mail-local.c:208
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr "Przekonwertuj folder \"%s\" na format \"%s\""
-
-#: mail/mail-local.c:251
-#, fuzzy
-msgid "Reconfiguring folder"
-msgstr "_Skonfiguruj folder"
-
-#: mail/mail-local.c:269
-msgid "Closing current folder"
-msgstr "Zamykanie bie¿±cego foldera"
-
-#: mail/mail-local.c:295
-msgid "Renaming old folder and opening"
-msgstr ""
-
-#: mail/mail-local.c:313
-msgid "Creating new folder"
-msgstr "Tworzenie nowego foldera"
-
-#: mail/mail-local.c:327
-msgid "Copying messages"
-msgstr "Kopiowanie listów"
-
-#: mail/mail-local.c:348
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-
-#: mail/mail-local.c:379
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-
-#: mail/mail-local.c:787
-msgid "Registering local folder"
-msgstr "Rejestrowanie lokalnego foldera"
-
-#: mail/mail-local.c:789
-msgid "Register local folder"
-msgstr "Zarejestruj lokalny folder"
-
-# y, c-format
-#: mail/mail-local.c:893
-#, fuzzy, c-format
-msgid ""
-"Unable to register folder '%s':\n"
-"%s"
-msgstr ""
-"Nie mo¿na utworzyæ foldera \"%s\":\n"
-"%s"
-
-#: mail/mail-mt.c:85
-#, fuzzy, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-"B³±d podczas \"%s\":\n"
-"%s"
-
-#: mail/mail-mt.c:87
-#, fuzzy, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-"B³±d przy wczytywaniu informacji o filtrze:\n"
-"%s"
-
-#: mail/mail-mt.c:356 mail/mail-mt.c:385
-#, fuzzy
-msgid "Working"
-msgstr "Przenoszenie"
-
-#: mail/mail-ops.c:107
-#, c-format
-msgid "Fetching email from %s"
-msgstr ""
-
-#: mail/mail-ops.c:109
-#, c-format
-msgid "Fetch email from %s"
-msgstr ""
-
-#: mail/mail-ops.c:359
-#, c-format
-msgid "There is no new mail at %s."
-msgstr ""
-
-#: mail/mail-ops.c:430
-msgid "Filtering email on demand"
-msgstr "Filtrowanie listu na ¿±danie"
-
-#: mail/mail-ops.c:432
-msgid "Filter email on demand"
-msgstr "Filtruj list na ¿±danie"
-
-#: mail/mail-ops.c:563
-#, c-format
-msgid "Sending \"%s\""
-msgstr "Wysy³anie \"%s\""
-
-#: mail/mail-ops.c:565
-#, fuzzy
-msgid "Sending message"
-msgstr "Natychmiast wysy³a wiadomo¶æ"
-
-#: mail/mail-ops.c:682
-msgid "Sending queue"
-msgstr "Wysy³anie kolejki"
-
-#: mail/mail-ops.c:684
-msgid "Send queue"
-msgstr "Wy¶lij kolejkê"
-
-#: mail/mail-ops.c:819 mail/mail-ops.c:826
-#, c-format
-msgid "Appending \"%s\""
-msgstr "Do³±czanie \"%s\""
-
-#: mail/mail-ops.c:823 mail/mail-ops.c:829
-msgid "Appending a message without a subject"
-msgstr "Do³±czanie listu bez tematu"
-
-#: mail/mail-ops.c:912
-#, c-format
-msgid "Moving messages from \"%s\" into \"%s\""
-msgstr "Przenoszenie listów z \"%s\" do \"%s\""
-
-#: mail/mail-ops.c:914
-#, c-format
-msgid "Copying messages from \"%s\" into \"%s\""
-msgstr "Kopiowanie listów z \"%s\" do \"%s\""
-
-#: mail/mail-ops.c:917
-#, c-format
-msgid "Move messages from \"%s\" into \"%s\""
-msgstr "Przenie¶ listy z \"%s\" do \"%s\""
-
-#: mail/mail-ops.c:919
-#, c-format
-msgid "Copy messages from \"%s\" into \"%s\""
-msgstr "Skopiuj listy z \"%s\" do \"%s\""
-
-#: mail/mail-ops.c:950
-msgid "Moving"
-msgstr "Przenoszenie"
-
-#: mail/mail-ops.c:953
-msgid "Copying"
-msgstr "Kopiowanie"
-
-#: mail/mail-ops.c:973
-#, c-format
-msgid "%s message %d of %d (uid \"%s\")"
-msgstr ""
-
-#: mail/mail-ops.c:1048
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr ""
-
-#: mail/mail-ops.c:1114 mail/subscribe-dialog.c:347
-msgid "(No description)"
-msgstr "(Brak opisu)"
-
-#: mail/mail-ops.c:1179
-#, fuzzy
-msgid "Forwarded messages"
-msgstr "Przes³any list:\n"
-
-#: mail/mail-ops.c:1220 mail/mail-ops.c:1289
-#, fuzzy, c-format
-msgid "Opening folder %s"
-msgstr "Nie mo¿na utworzyæ procesu dla %s: %s"
-
-#: mail/mail-ops.c:1351
-#, fuzzy
-msgid "Synchronising folder"
-msgstr "Synchronizowanie \"%s\""
-
-#: mail/mail-ops.c:1401
-#, fuzzy
-msgid "Expunging folder"
-msgstr "Czyszczenie \"%s\""
-
-#: mail/mail-ops.c:1450
-#, fuzzy, c-format
-msgid "Retrieving message %s"
-msgstr "Pobieranie listu %d z %d"
-
-#: mail/mail-ops.c:1517
-#, fuzzy
-msgid "Retrieving messages"
-msgstr "Pobieranie listu %d z %d"
-
-#: mail/mail-ops.c:1527
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr ""
-
-#: mail/mail-ops.c:1675
-#, fuzzy, c-format
-msgid "Loading %s Folder for %s"
-msgstr "Wczytywanie foldera %s"
-
-#: mail/mail-ops.c:1677
-#, fuzzy, c-format
-msgid "Load %s Folder for %s"
-msgstr "Wczytywanie foldera %s"
-
-#: mail/mail-ops.c:1843
-#, fuzzy
-msgid "Saving messages"
-msgstr "Kopiowanie listów"
-
-#: mail/mail-ops.c:1922
-#, fuzzy, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr "Nie mo¿na otworzyæ lub utworzyæ pliku .newsrc dla %s: %s"
-
-#: mail/mail-ops.c:1935
-#, fuzzy, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr "Zaznaczanie listu %d z %d"
-
-#: mail/mail-ops.c:1949
-#, fuzzy, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr "B³±d przy zapisie pliku: %s"
-
-#: mail/mail-search-dialogue.c:104
-msgid "Cancel"
-msgstr "Anuluj"
-
-#: mail/mail-summary.c:111 mail/mail-threads.c:729
-msgid "Incomplete message written on pipe!"
-msgstr ""
-
-#: mail/mail-threads.c:302
-#, c-format
-msgid ""
-"Error while preparing to %s:\n"
-"%s"
-msgstr ""
-
-#: mail/mail-threads.c:676
-#, c-format
-msgid ""
-"Error while `%s':\n"
-"%s"
-msgstr ""
-"B³±d podczas \"%s\":\n"
-"%s"
-
-#: mail/mail-threads.c:733
-msgid "Error reading commands from dispatching thread."
-msgstr ""
-
-#: mail/mail-threads.c:798
-msgid "Corrupted message from dispatching thread?"
-msgstr ""
-
-#: mail/mail-threads.c:917
-msgid "Could not create dialog box."
-msgstr "Nie mo¿na utworzyæ okna dialogowego."
-
-#: mail/mail-threads.c:928
-msgid "User cancelled query."
-msgstr ""
-
-#: mail/mail-tools.c:189
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr ""
-
-#. Get all uids of source
-#: mail/mail-tools.c:241
-#, c-format
-msgid "Examining %s"
-msgstr ""
-
-#: mail/mail-tools.c:271
-#, c-format
-msgid ""
-"Could not read UID cache file \"%s\". You may receive duplicate messages."
-msgstr ""
-
-#: mail/mail-tools.c:300
-#, c-format
-msgid "Retrieving message %d of %d"
-msgstr "Pobieranie listu %d z %d"
-
-#. Append it to dest
-#: mail/mail-tools.c:315
-#, c-format
-msgid "Writing message %d of %d"
-msgstr "Zapisywanie listu %d z %d"
-
-#: mail/mail-tools.c:347
-#, c-format
-msgid "Saving changes to %s"
-msgstr "Zapisywanie zmian do %s"
-
-#: mail/mail-tools.c:381
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr "[%s] (przes³any list)"
-
-#: mail/mail-tools.c:391
-msgid "Fwd: (no subject)"
-msgstr ""
-
-#: mail/mail-tools.c:427
-#, c-format
-msgid "Forwarded message - %s"
-msgstr "Przes³any list - %s"
-
-#: mail/mail-tools.c:429
-msgid "Forwarded message (no subject)"
-msgstr "Przes³any list (bez tematu)"
-
-#: mail/mail-tools.c:530
-#, c-format
-msgid ""
-"Cannot open location `%s':\n"
-"%s"
-msgstr ""
-
-#: mail/mail-vfolder.c:149
-msgid "VFolders"
-msgstr "VFoldery"
-
-#: mail/mail-vfolder.c:298
-msgid "New VFolder"
-msgstr "Nowy VFolder"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/mail-view.c:138
-msgid "Reply"
-msgstr "Odpowiedz"
-
-#: mail/mail-view.c:138
-msgid "Reply to the sender of this message"
-msgstr "Odpowiada nadawcy listu"
-
-#: mail/mail-view.c:141
-msgid "Reply to all recipients of this message"
-msgstr "Odpowiada wszystkim odbiorcom listu"
-
-#: mail/mail-view.c:144
-msgid "Forward this message"
-msgstr "Przesy³a list dalej"
-
-#: mail/mail-view.c:148
-msgid "Print the selected message"
-msgstr "Drukuje list"
-
-#: mail/mail-view.c:150
-msgid "Delete this message"
-msgstr "Usuwa list"
-
-#: mail/message-list.c:599
-msgid "Unseen"
-msgstr "Niewidziany"
-
-#: mail/message-list.c:602
-msgid "Seen"
-msgstr "Widziany"
-
-#: mail/message-list.c:605
-msgid "Answered"
-msgstr ""
-
-#: mail/message-list.c:890
-#, c-format
-msgid "[ %s ]"
-msgstr ""
-
-#. well, we could scan more children, build up a (more accurate) list, but this should do ok
-#: mail/message-list.c:902 mail/message-list.c:918
-#, c-format
-msgid "%s, et al."
-msgstr ""
-
-#: mail/message-list.c:905 mail/message-list.c:921
-#, fuzzy
-msgid "<unknown>"
-msgstr "Nieznany"
-
-#: mail/message-list.c:973
-msgid "?"
-msgstr ""
-
-#: mail/message-list.c:980
-#, fuzzy
-msgid "Today %l:%M %p"
-msgstr "%I:%M %p"
-
-#: mail/message-list.c:989
-msgid "Yesterday %l:%M %p"
-msgstr ""
-
-#: mail/message-list.c:1001
-#, fuzzy
-msgid "%a %l:%M %p"
-msgstr "%I:%M %p"
-
-#: mail/message-list.c:1009
-#, fuzzy
-msgid "%b %d %l:%M %p"
-msgstr "%a %m/%d/%Y %I:%M:%S %p"
-
-#: mail/message-list.c:1011
-#, fuzzy
-msgid "%b %d %Y"
-msgstr "%a %d %Y"
-
-#: mail/message-list.c:1109
-msgid "Flagged"
-msgstr "Oznaczony"
-
-#: mail/message-list.c:1109
-#, fuzzy
-msgid "Attachment"
-msgstr "za³±cznik"
-
-#: mail/message-list.c:1110
-#, fuzzy
-msgid "From"
-msgstr "Od:"
-
-#: mail/message-list.c:1110
-#, fuzzy
-msgid "Date"
-msgstr "Data wykonania"
-
-#: mail/message-list.c:1110
-#, fuzzy
-msgid "Received"
-msgstr "Data otrzymania"
-
-#: mail/message-list.c:1111
-#, fuzzy
-msgid "To"
-msgstr "Dla:"
-
-#: mail/message-list.c:1111
-#, fuzzy
-msgid "Size"
-msgstr "Rozmiar:"
-
-#: mail/openpgp-utils.c:78
-#, fuzzy, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr "Wprowad¼ has³o NNTP dla %s@%s"
-
-#: mail/openpgp-utils.c:81
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr ""
-
-#: mail/openpgp-utils.c:435 mail/openpgp-utils.c:538 mail/openpgp-utils.c:742
-#: mail/openpgp-utils.c:891 mail/openpgp-utils.c:1048
-msgid "No GPG/PGP program available."
-msgstr "Brak dostêpnego programu GPG/PGP."
-
-#: mail/openpgp-utils.c:442 mail/openpgp-utils.c:547 mail/openpgp-utils.c:749
-#: mail/openpgp-utils.c:898
-msgid "No password provided."
-msgstr "Nie podano has³a."
-
-#: mail/openpgp-utils.c:448 mail/openpgp-utils.c:555 mail/openpgp-utils.c:756
-#: mail/openpgp-utils.c:905 mail/openpgp-utils.c:1054
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr "Nie mo¿na utworzyæ potoku do GPG/PGP: %s"
-
-#: mail/openpgp-utils.c:566 mail/openpgp-utils.c:611 mail/openpgp-utils.c:650
-msgid "No recipients specified"
-msgstr ""
-
-#: mail/openpgp-utils.c:1065
-#, fuzzy, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "Utworzenie potoku nie powiod³o siê: %s"
-
-#: mail/subscribe-dialog.c:62 shell/e-storage-set-view.c:44
-#, fuzzy
-msgid "Folder"
-msgstr "Foldery"
-
-#: mail/subscribe-dialog.c:63
-#, fuzzy
-msgid "Store"
-msgstr "¬ród³o"
-
-#: mail/subscribe-dialog.c:145
-msgid "Display folders starting with:"
-msgstr ""
-
-#: mail/subscribe-dialog.c:178
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:181
-#, c-format
-msgid "Get store for \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:289
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:293
-#, c-format
-msgid "Unsubscribing from folder \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:297
-#, c-format
-msgid "Subscribe to folder \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:300
-#, c-format
-msgid "Unsubscribe from folder \"%s\""
-msgstr ""
-
-#: shell/e-setup.c:112 shell/e-setup.c:185
-msgid "Evolution installation"
-msgstr "Instalacja Evolution"
-
-#: shell/e-setup.c:116
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-
-#: shell/e-setup.c:117
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr "Kliknij \"OK\" aby zainstalowaæ pliki lub \"Anuluj\" aby zakoñczyæ."
-
-#: shell/e-setup.c:157
-msgid "Could not update files correctly"
-msgstr ""
-
-#: shell/e-setup.c:160 shell/e-setup.c:228
-msgid "Evolution files successfully installed."
-msgstr ""
-
-#: shell/e-setup.c:189
-msgid "This seems to be the first time you run Evolution."
-msgstr ""
-
-#: shell/e-setup.c:190
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr ""
-
-#: shell/e-setup.c:209
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"Nie mo¿na utworzyæ katalogu\n"
-"%s\n"
-"B³±d: %s"
-
-#: shell/e-setup.c:224
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-"Nie mo¿na skopiowaæ plików do\n"
-"\"%s\"."
-
-#: shell/e-setup.c:249
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-
-#: shell/e-setup.c:261
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-
-#: shell/e-shell-folder-creation-dialog.c:82
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-"Nie mo¿na utworzyæ podanego foldera:\n"
-"%s"
-
-#: shell/e-shell-folder-creation-dialog.c:134
-msgid "The specified folder name is not valid."
-msgstr ""
-
-#: shell/e-shell-folder-creation-dialog.c:225
-msgid "Evolution - Create new folder"
-msgstr ""
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-
-#: shell/e-shell-folder-selection-dialog.c:297
-msgid "New..."
-msgstr "Nowy..."
-
-#: shell/e-shell-folder-title-bar.c:451 shell/e-shell-folder-title-bar.c:452
-msgid "(Untitled)"
-msgstr ""
-
-#: shell/e-shell-view-menu.c:114
-msgid "Bug buddy was not found in your $PATH."
-msgstr "Bug buddy nie znajduje siê w ¶cie¿ce."
-
-#: shell/e-shell-view-menu.c:120
-msgid "Bug buddy could not be run."
-msgstr "Nie mo¿na uruchomiæ Bug buddy."
-
-#: shell/e-shell-view-menu.c:172
-#, fuzzy
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Copyright 1999, 2000 Helix Code, Inc."
-
-#: shell/e-shell-view-menu.c:174
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-"Evolution to pakiet aplikacji do\n"
-"komunikacji grupowej przez pocztê\n"
-"elektroniczn±, wspólny terminarz\n"
-"i zarz±dzanie kontaktami w\n"
-"¶rodowisku GNOME."
-
-#: shell/e-shell-view-menu.c:334
-msgid "Go to folder..."
-msgstr ""
-
-#: shell/e-shell-view.c:140
-msgid "(No folder displayed)"
-msgstr ""
-
-#: shell/e-shell-view.c:468
-msgid "Folders"
-msgstr "Foldery"
-
-#: shell/e-shell-view.c:1098
-#, fuzzy, c-format
-msgid "%s - Evolution %s"
-msgstr "Evolution - %s"
-
-#: shell/e-shell-view.c:1100
-#, fuzzy, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "Evolution - %s"
-
-#: shell/e-shell.c:372
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr "Nie mo¿na ustawiæ lokalnego pojemnika -- %s"
-
-#: shell/e-shell.c:1212
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-
-#: shell/e-shortcuts-view.c:123
-msgid "Create new shortcut group"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:126
-msgid "Group name:"
-msgstr "Nazwa grupy:"
-
-#: shell/e-shortcuts-view.c:249
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:254
-msgid "Don't remove"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:265
-msgid "_Small Icons"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:266
-msgid "Show the shortcuts as small icons"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:268
-msgid "_Large Icons"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:269
-msgid "Show the shortcuts as large icons"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:280
-msgid "_New Group..."
-msgstr "_Nowa grupa..."
-
-#: shell/e-shortcuts-view.c:281
-msgid "Create a new shortcut group"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:283
-msgid "_Remove This Group..."
-msgstr ""
-
-#: shell/e-shortcuts-view.c:284
-msgid "Remove this shortcut group"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:289
-#, fuzzy
-msgid "_Hide the Shortcut Bar"
-msgstr "Wy¶wietlanie paska _skrótów"
-
-#: shell/e-shortcuts-view.c:290
-#, fuzzy
-msgid "Hide the shortcut bar"
-msgstr "Wy¶wietlanie paska _skrótów"
-
-#: shell/e-shortcuts-view.c:374
-msgid "Activate"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:374
-msgid "Activate this shortcut"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:377
-msgid "Remove this shortcut from the shortcut bar"
-msgstr ""
-
-#: shell/e-shortcuts.c:358
-msgid "Error saving shortcuts."
-msgstr ""
-
-#: shell/e-storage-set-view.c:338
-msgid "_View"
-msgstr "_Widok"
-
-#: shell/e-storage-set-view.c:338
-msgid "View the selected folder"
-msgstr "Wy¶wietla zaznaczony folder"
-
-#: shell/e-storage.c:138
-msgid "(No name)"
-msgstr "(Bez nazwy)"
-
-#: shell/e-storage.c:389
-msgid "No error"
-msgstr "bez b³êdu"
-
-#: shell/e-storage.c:391
-msgid "Generic error"
-msgstr ""
-
-#: shell/e-storage.c:393
-msgid "A folder with the same name already exists"
-msgstr ""
-
-#: shell/e-storage.c:395
-msgid "The specified folder type is not valid"
-msgstr ""
-
-#: shell/e-storage.c:397
-msgid "I/O error"
-msgstr "B³±d We/Wy"
-
-#: shell/e-storage.c:399
-msgid "Not enough space to create the folder"
-msgstr "Brak miejsca na utworzenie foldera"
-
-#: shell/e-storage.c:401
-msgid "The specified folder was not found"
-msgstr "Nie odnaleziono okre¶lonego foldera"
-
-#: shell/e-storage.c:403
-msgid "Function not implemented in this storage"
-msgstr ""
-
-#: shell/e-storage.c:405
-msgid "Permission denied"
-msgstr "Brak uprawnieñ"
-
-#: shell/e-storage.c:407
-msgid "Operation not supported"
-msgstr ""
-
-#: shell/e-storage.c:409
-msgid "The specified type is not supported in this storage"
-msgstr ""
-
-#: shell/main.c:74
-#, fuzzy
-msgid ""
-"Hi. Thanks for taking the time to download this preview release\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Over the time since the past release, our focus has been on making\n"
-"Evolution usable. Many of the Evolution developers are now using\n"
-"Evolution to read their mail full time. You could too. (Just\n"
-"be sure to keep a backup.)\n"
-"\n"
-"But while we have fixed many bugs affecting its stability and\n"
-"security, you still get the disclaimer: Evolution will: crash,\n"
-"lose your mail when you don't want it to, refuse to delete your\n"
-"mail when you do want it to, leave stray processes running,\n"
-"consume 100% CPU, race, lock, send HTML mail to random mailing\n"
-"lists, and embarass you in front of your friends and co-workers.\n"
-"Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we eagerly\n"
-"await your contributions!\n"
-msgstr ""
-"Cze¶æ. Dziêki za poswiêcenie chwili na ¶ci±gniêcie tej wersji\n"
-"wstêpnej pakietu do komunikacji grupowej Evolution.\n"
-"\n"
-"Zespó³ Evolution ciê¿ko pracowa³ nad stworzeniem tego programu\n"
-"tak rozszerzalnym, ³adnym, szybkim i dopasowanym do potrzeb\n"
-"zagorza³ych uzytkowników Internetu, jak to tylko mo¿liwe. Jeste¶my\n"
-"bardzo zmêczeni. Ale to jeszcze nie koniec -- jeszcze nie.\n"
-"Podczas odkrywania Evolution nale¿y pamiêtaæ, ¿e wiêkszo¶æ naszej pracy\n"
-"zosta³a po¶wiêcona silnikowi napêdzaj±cemu system, a nie interfejsowi\n"
-"u¿ytkownika. W ka¿dym razie od tej pory bêdziemy wk³adaæ wiêkszo¶æ\n"
-"naszej mi³o¶ci i troski w³a¶nie w interfejs. Ale przynajmniej wiadomo,\n"
-"¿e to nie jest demo.\n"
-"Pora na umycie r±czek. Evolution bêdzie: przewracaæ siê, gubiæ przesy³ki,\n"
-"mno¿yæ procesy, zjadaæ 100 mocy procesora, zawieszaæ siê, wysy³aæ\n"
-"przesy³ki w HTML-u na losowe listy dyskusyjne i zawstydzaæ Ciê\n"
-"przed Twoimi przyjació³mi i wspó³pracownikami. U¿ywaj na w³asn±\n"
-"odpowiedzialno¶æ.\n"
-"Mamy nadzieje, ¿e spodoba Ci siê efekt naszej ciê¿kiej pracy\n"
-"i niecierpliwie oczekujemy Twojej pomocy!\n"
-
-#: shell/main.c:101
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-"Dziêki\n"
-"Zespó³ Evolution\n"
-
-#: shell/main.c:132
-msgid "Cannot initialize the Evolution shell."
-msgstr "Nie mo¿na uruchomiæ pow³oki Evlution."
-
-#: shell/main.c:178
-msgid "Disable."
-msgstr ""
-
-#: shell/main.c:198
-msgid "Cannot initialize the Bonobo component system."
-msgstr "Nie mo¿na zainicjowaæ systemu komponentów Bonobo."
-
-#: ui/evolution-contact-editor.xml:7
-#, fuzzy
-msgid "FIXME: _Appointment"
-msgstr "_Nowy termin"
-
-#: ui/evolution-contact-editor.xml:8
-msgid "FIXME: Meeting Re_quest"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:10
-msgid "FIXME: _Mail Message"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:11
-msgid "FIXME: _Contact"
-msgstr "_Kontakt"
-
-#: ui/evolution-contact-editor.xml:12
-msgid "FIXME: _Task"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:13
-msgid "FIXME: Task _Request"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:14
-msgid "FIXME: _Journal Entry"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:15
-msgid "FIXME: _Note"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:17 ui/evolution-contact-editor.xml:122
-msgid "FIXME: Ch_oose Form..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:22
-msgid "FIXME: _Memo Style"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:24
-msgid "FIXME: Define Print _Styles..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:31
-msgid "FIXME: S_end"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:35
-msgid "FIXME: Save Attac_hments..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:38
-msgid "FIXME: _Move to Folder..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:39
-msgid "FIXME: Cop_y to Folder..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:41
-#, fuzzy
-msgid "Page Set_up"
-msgstr "Ustawienia strony:"
-
-#: ui/evolution-contact-editor.xml:42
-msgid "FIXME: Print Pre_view"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:63
-#, fuzzy
-msgid "FIXME: Paste _Special..."
-msgstr "P_isownia..."
-
-#: ui/evolution-contact-editor.xml:68
-#, fuzzy
-msgid "FIXME: Mark as U_nread"
-msgstr "Oznacz jako nieprzeczytany"
-
-#: ui/evolution-contact-editor.xml:72
-msgid "_Object"
-msgstr "_Obiekt"
-
-#: ui/evolution-contact-editor.xml:77 ui/evolution-contact-editor.xml:84
-msgid "FIXME: _Item"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:78 ui/evolution-contact-editor.xml:85
-msgid "FIXME: _Unread Item"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:79
-msgid "FIXME: Fi_rst Item in Folder"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:86
-msgid "FIXME: _Last Item in Folder"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:91
-msgid "FIXME: _Standard"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:93
-#, fuzzy
-msgid "FIXME: __Formatting"
-msgstr "_Kontakt"
-
-#: ui/evolution-contact-editor.xml:96
-msgid "FIXME: _Customize..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:101
-msgid "Pre_vious"
-msgstr "_Poprzedni"
-
-#: ui/evolution-contact-editor.xml:102
-#, fuzzy
-msgid "Ne_xt"
-msgstr "Nastêpny"
-
-#: ui/evolution-contact-editor.xml:104
-msgid "_Toolbars"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:109
-msgid "FIXME: _File..."
-msgstr "_Plik..."
-
-#: ui/evolution-contact-editor.xml:110
-msgid "FIXME: It_em..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:111
-msgid "FIXME: _Object..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:116
-msgid "FIXME: _Font..."
-msgstr "_Czcionka..."
-
-#: ui/evolution-contact-editor.xml:117
-msgid "FIXME: _Paragraph..."
-msgstr "_Akapit..."
-
-#: ui/evolution-contact-editor.xml:124
-msgid "FIXME: Desi_gn This Form"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:125
-msgid "FIXME: D_esign a Form..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:127
-msgid "FIXME: Publish _Form..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:128
-msgid "FIXME: Pu_blish Form As..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:130
-msgid "FIXME: Script _Debugger"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:135
-msgid "FIXME: _Spelling..."
-msgstr "P_isownia..."
-
-#: ui/evolution-contact-editor.xml:137
-msgid "_Forms"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:142
-#, fuzzy
-msgid "FIXME: _New Contact"
-msgstr "_Kontakt"
-
-#: ui/evolution-contact-editor.xml:143
-msgid "FIXME: New _Contact from Same Company"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:145
-#, fuzzy
-msgid "FIXME: New _Letter to Contact"
-msgstr "_Kontakt"
-
-#: ui/evolution-contact-editor.xml:146
-#, fuzzy
-msgid "FIXME: New _Message to Contact"
-msgstr "Wy¶lij _list do kontaktu..."
-
-#: ui/evolution-contact-editor.xml:147
-#, fuzzy
-msgid "FIXME: New Meetin_g with Contact"
-msgstr "_Kontakt"
-
-#: ui/evolution-contact-editor.xml:148
-#, fuzzy
-msgid "FIXME: _Plan a Meeting..."
-msgstr "P_isownia..."
-
-#: ui/evolution-contact-editor.xml:149
-#, fuzzy
-msgid "FIXME: New _Task for Contact"
-msgstr "_Kontakt"
-
-#: ui/evolution-contact-editor.xml:150
-msgid "FIXME: New _Journal Entry for Contact"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:152
-#, fuzzy
-msgid "FIXME: _Flag for Follow Up..."
-msgstr "_Akapit..."
-
-#: ui/evolution-contact-editor.xml:153
-msgid "FIXME: _Display Map of Address"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:154
-#, fuzzy
-msgid "FIXME: _Open Web Page"
-msgstr "P_isownia..."
-
-#: ui/evolution-contact-editor.xml:156
-msgid "FIXME: Forward as _vCard"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:157
-msgid "FIXME: For_ward"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:169
-msgid "_Insert"
-msgstr "_Wstaw"
-
-#: ui/evolution-contact-editor.xml:170
-msgid "F_ormat"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:171
-msgid "_Tools"
-msgstr "_Narzêdzia"
-
-#: ui/evolution-contact-editor.xml:172
-msgid "Actio_ns"
-msgstr "_Czynno¶ci"
-
-#: ui/evolution-contact-editor.xml:246
-#, fuzzy
-msgid "FIXME: Previous"
-msgstr "Poprzedni"
-
-#: ui/evolution-contact-editor.xml:247
-msgid "Go to the previous item"
-msgstr "Przechodzi do poprzedniego elementu"
-
-#: ui/evolution-contact-editor.xml:249
-#, fuzzy
-msgid "FIXME: Next"
-msgstr "_Kontakt"
-
-#: ui/evolution-contact-editor.xml:250
-msgid "Go to the next item"
-msgstr "Przechodzi do nastêpnego elementu"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:463
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2471
-msgid "%A, %B %d, %Y"
-msgstr "%A, %B %d, %Y"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:386
-msgid "Tentative"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:387
-msgid "Busy"
-msgstr "Zajêty"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:388
-msgid "Out of Office"
-msgstr "Poza biurem"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:389
-msgid "No Information"
-msgstr "Brak informacji"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:405
-msgid "_Invite Others..."
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:425
-msgid "_Options"
-msgstr "_Opcje"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:442
-msgid "Show _Only Working Hours"
-msgstr "Wy¶wietlanie _tylko godzin roboczych"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:455
-msgid "Show _Zoomed Out"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:473
-msgid "_Update Free/Busy"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:491
-msgid "_<<"
-msgstr "_<<"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:508
-msgid "_Autopick"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:522
-msgid ">_>"
-msgstr ">_>"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:539
-msgid "_All People and Resources"
-msgstr "_Wszyscy ludzie i zasoby"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:552
-msgid "All _People and One Resource"
-msgstr "Wszyscy _ludzie i jeden zasób"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:565
-msgid "_Required People"
-msgstr "_Wymagani ludzie"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:578
-msgid "Required People and _One Resource"
-msgstr "Wymagani ludzie i j_eden zasób"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:601
-msgid "Meeting _start time:"
-msgstr "Czas p_ocz±tku spotkania:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:625
-msgid "Meeting _end time:"
-msgstr "Czas _koñca spotkania:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:738
-msgid "All Attendees"
-msgstr ""
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:421
-msgid "MTWTFSS"
-msgstr ""
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1053 widgets/misc/e-calendar-item.c:2734
-msgid "%B %Y"
-msgstr "%B %Y"
-
-#: widgets/misc/e-clipped-label.c:107
-msgid "..."
-msgstr "..."
-
-#: widgets/misc/e-dateedit.c:407
-msgid "Now"
-msgstr "Teraz"
-
-#: widgets/misc/e-dateedit.c:413
-msgid "Today"
-msgstr "Dzi¶"
-
-#. This is a strftime() format. %H = hour (0-23), %M = minute.
-#: widgets/misc/e-dateedit.c:1248 widgets/misc/e-dateedit.c:1307
-#: widgets/misc/e-dateedit.c:1486
-msgid "%H:%M"
-msgstr "%H:%M"
-
-#. This is a strftime() format. %I = hour (1-12), %M = minute, %p = am/pm string.
-#: widgets/misc/e-dateedit.c:1251 widgets/misc/e-dateedit.c:1310
-#: widgets/misc/e-dateedit.c:1489
-msgid "%I:%M %p"
-msgstr "%I:%M %p"
-
-#: widgets/misc/e-search-bar.c:176
-msgid "Sear_ch"
-msgstr "_Wyszukiwanie"
-
-#: widgets/shortcut-bar/e-group-bar.c:632
-#, c-format
-msgid "Group %i"
-msgstr "Grupa %i"
-
-#~ msgid "Delete Contact?"
-#~ msgstr "Usun±æ kontakt?"
-
-#~ msgid "Address _2:"
-#~ msgstr "Adres _2:"
-
-#, fuzzy
-#~ msgid "Canada"
-#~ msgstr "Terminarz"
-
-#~ msgid "Countr_y:"
-#~ msgstr "_Kraj:"
-
-#, fuzzy
-#~ msgid "Finland"
-#~ msgstr "Znajd¼"
-
-#~ msgid "_Address:"
-#~ msgstr "_Adres:"
-
-#~ msgid "_City:"
-#~ msgstr "_Miasto:"
-
-#~ msgid "_State/Province:"
-#~ msgstr "_Stan/Prowincja:"
-
-#, fuzzy
-#~ msgid "Addressbook Sources"
-#~ msgstr "Dodaj ¼ród³o"
-
-#~ msgid "Find..."
-#~ msgstr "Znajd¼..."
-
-#~ msgid "Message Recipients"
-#~ msgstr "Odbiorcy listu"
-
-#~ msgid "Select Names"
-#~ msgstr "Wybierz nazw"
-
-#, fuzzy
-#~ msgid "Select name from:"
-#~ msgstr "Wybierz nazwê z listy:"
-
-#~ msgid "123"
-#~ msgstr "123"
-
-#, fuzzy
-#~ msgid "a"
-#~ msgstr "am"
-
-#, fuzzy
-#~ msgid "e"
-#~ msgstr "¦r"
-
-#, fuzzy
-#~ msgid "f"
-#~ msgstr "Lista warunków"
-
-#~ msgid "h"
-#~ msgstr "h"
-
-#, fuzzy
-#~ msgid "i"
-#~ msgstr "jest"
-
-#, fuzzy
-#~ msgid "k"
-#~ msgstr "Ok"
-
-#, fuzzy
-#~ msgid "m"
-#~ msgstr "am"
-
-#, fuzzy
-#~ msgid "o"
-#~ msgstr "Po"
-
-#, fuzzy
-#~ msgid "p"
-#~ msgstr "pm"
-
-#, fuzzy
-#~ msgid "r"
-#~ msgstr "Pt"
-
-#, fuzzy
-#~ msgid "s"
-#~ msgstr "jest"
-
-#, fuzzy
-#~ msgid "t"
-#~ msgstr "."
-
-#, fuzzy
-#~ msgid "u"
-#~ msgstr "Ni"
-
-#~ msgid "10 pt. Tahoma"
-#~ msgstr "10-punktowa Tahoma"
-
-#~ msgid "8 pt. Tahoma"
-#~ msgstr "8-ounktowa Tahoma"
-
-#~ msgid "Body"
-#~ msgstr "Tre¶æ"
-
-#~ msgid "Bottom:"
-#~ msgstr "Dó³:"
-
-#~ msgid "Dimensions:"
-#~ msgstr "Wymiary:"
-
-#~ msgid "Font..."
-#~ msgstr "Czcionka..."
-
-#~ msgid "Fonts"
-#~ msgstr "Czcionki"
-
-#~ msgid "Footer:"
-#~ msgstr "Stopka:"
-
-#~ msgid "Header"
-#~ msgstr "G³ówka"
-
-#~ msgid "Header/Footer"
-#~ msgstr "G³ówka/Stopka"
-
-#~ msgid "Height:"
-#~ msgstr "Wysoko¶æ:"
-
-#~ msgid "Landscape"
-#~ msgstr "Pejza¿"
-
-#~ msgid "Left:"
-#~ msgstr "Lewy:"
-
-#~ msgid "Letter tabs on side"
-#~ msgstr "Zak³adki liter z boku"
-
-#~ msgid "Margins"
-#~ msgstr "Marginesy"
-
-#~ msgid "Number of columns:"
-#~ msgstr "Liczba kolumn:"
-
-#~ msgid "Options"
-#~ msgstr "Opcje"
-
-#~ msgid "Orientation"
-#~ msgstr "U³o¿enie"
-
-#~ msgid "Page"
-#~ msgstr "Strona"
-
-#~ msgid "Paper"
-#~ msgstr "Papier"
-
-#~ msgid "Paper source:"
-#~ msgstr "¬ród³o papieru:"
-
-#~ msgid "Portrait"
-#~ msgstr "Portret"
-
-#~ msgid "Preview:"
-#~ msgstr "Podgl±d:"
-
-#~ msgid "Reverse on even pages"
-#~ msgstr "Odwrotnie na stronach parzystych"
-
-#~ msgid "Right:"
-#~ msgstr "Prawy:"
-
-#~ msgid "Sections:"
-#~ msgstr "Sekcje:"
-
-#~ msgid "Start on a new page"
-#~ msgstr "Rozpoczynanie na nowej stronie"
-
-#~ msgid "Style name:"
-#~ msgstr "Nazwa stylu:"
-
-#~ msgid "Top:"
-#~ msgstr "Góra:"
-
-#~ msgid "Type:"
-#~ msgstr "Typ:"
-
-#~ msgid "Width:"
-#~ msgstr "Szeroko¶æ:"
-
-#~ msgid "label26"
-#~ msgstr "etykieta26"
-
-#, fuzzy
-#~ msgid "Calendar Server"
-#~ msgstr "Terminarz"
-
-#, fuzzy
-#~ msgid "Factory for the Evolution calendar component."
-#~ msgstr "Nie mo¿na zainicjowaæ komponentu pocztowego Evlution."
-
-#~ msgid "Edit appointment"
-#~ msgstr "Modyfikuj termin"
-
-#, fuzzy
-#~ msgid "05 minutes"
-#~ msgstr "minut"
-
-#, fuzzy
-#~ msgid "10 minutes"
-#~ msgstr "minut"
-
-#~ msgid "12 hour (am/pm)"
-#~ msgstr "12-godzinny (am/pm)"
-
-#, fuzzy
-#~ msgid "15 minutes"
-#~ msgstr "minut"
-
-#~ msgid "24 hour"
-#~ msgstr "24-godzinny"
-
-#, fuzzy
-#~ msgid "30 minutes"
-#~ msgstr "minut"
-
-#, fuzzy
-#~ msgid "60 minutes"
-#~ msgstr "minut"
-
-#~ msgid "Beep when alarm windows appear."
-#~ msgstr "Sygna³ d¼wiêkowy przy pojawianiu siê okien alarmu."
-
-#~ msgid "Calendar"
-#~ msgstr "Terminarz"
-
-#~ msgid "Calendar Preferences"
-#~ msgstr "Ustawienia termiarza"
-
-#~ msgid "Colors"
-#~ msgstr "Kolory"
-
-#~ msgid "Compress weekends"
-#~ msgstr "Kompresowanie weekendów"
-
-#~ msgid "Date navigator options"
-#~ msgstr "Opcje wyboru daty"
-
-#~ msgid "Defaults"
-#~ msgstr "Domy¶lne"
-
-#~ msgid "Display options"
-#~ msgstr "Opcje wy¶wietlania"
-
-#~ msgid "End of day:"
-#~ msgstr "Koniec dnia:"
-
-#~ msgid "First day of week:"
-#~ msgstr "Pierwszy dzieñ tygodnia:"
-
-#~ msgid "Pick a color"
-#~ msgstr "Wybór koloru"
-
-#~ msgid "Show week numbers"
-#~ msgstr "Wy¶wietlanie numerów tygodni"
-
-#~ msgid "Start of day:"
-#~ msgstr "Pocz±tek dnia:"
-
-#~ msgid "Time divisions:"
-#~ msgstr "Przedzia³y czasu:"
-
-#~ msgid "Time format:"
-#~ msgstr "Format czasu:"
-
-#~ msgid "Visual Alarms"
-#~ msgstr "Alarmy wizualne"
-
-#~ msgid "Work week"
-#~ msgstr "Tydzieñ roboczy"
-
-#~ msgid "% Comp_lete:"
-#~ msgstr "% _zakoñczenia:"
-
-#~ msgid "Date Completed:"
-#~ msgstr "Data zakoñczenia:"
-
-#, fuzzy
-#~ msgid "High"
-#~ msgstr "Wysoko¶æ:"
-
-#, fuzzy
-#~ msgid "Low"
-#~ msgstr "teraz"
-
-#, fuzzy
-#~ msgid "Not Started"
-#~ msgstr "_Rozpoczynanie"
-
-#~ msgid "Task"
-#~ msgstr "Zadanie"
-
-#~ msgid "_Contacts..."
-#~ msgstr "_Kontakty..."
-
-#~ msgid "_Priority:"
-#~ msgstr "_Priorytety:"
-
-#~ msgid "_Status:"
-#~ msgstr "_Stan:"
-
-#~ msgid "A_ll day event"
-#~ msgstr "Wydarzenie _ca³odniowe"
-
-#~ msgid "Appointment Basics"
-#~ msgstr "Podstawowe elementy"
-
-#~ msgid "Custom recurrence"
-#~ msgstr "Dowolna powtarzalno¶æ"
-
-#~ msgid "Days"
-#~ msgstr "Dni"
-
-#~ msgid "Exceptions"
-#~ msgstr "Wyj±tki"
-
-#~ msgid "Hours"
-#~ msgstr "Godziny"
-
-#~ msgid "Mail _to:"
-#~ msgstr "_Adresat listu:"
-
-#~ msgid "Minutes"
-#~ msgstr "Minuty"
-
-#~ msgid "Modify"
-#~ msgstr "Zmieñ"
-
-#~ msgid "No recurrence"
-#~ msgstr "Brak powtarzalno¶ci"
-
-#~ msgid "Preview"
-#~ msgstr "Podgl±d"
-
-#~ msgid "Pri_vate"
-#~ msgstr "P_rywatny"
-
-#~ msgid "Pu_blic"
-#~ msgstr "Pu_bliczny"
-
-#~ msgid "Recurrence"
-#~ msgstr "Powtarzalno¶æ"
-
-#~ msgid "Recurrence Rule"
-#~ msgstr "Regu³a powtarzalno¶ci"
-
-#~ msgid "Reminder"
-#~ msgstr "Przypominanie"
-
-#~ msgid "Simple recurrence"
-#~ msgstr "Prosta powtarzalno¶æ"
-
-#~ msgid "Time"
-#~ msgstr "Czas"
-
-#~ msgid "_Audio"
-#~ msgstr "_D¼wiêk"
-
-#~ msgid "_Confidential"
-#~ msgstr "_Tajny"
-
-#~ msgid "_Mail"
-#~ msgstr "_List"
-
-#~ msgid "_Program"
-#~ msgstr "_Program"
-
-#~ msgid "_Run program:"
-#~ msgstr "U_ruchomiany program:"
-
-#~ msgid "_Start time:"
-#~ msgstr "Czas _rozpoczêcia:"
-
-#~ msgid "_Starting date:"
-#~ msgstr "Czas _rozpoczêcia:"
-
-#~ msgid "day(s)"
-#~ msgstr "dzieñ/dni"
-
-#~ msgid "event-editor-dialog"
-#~ msgstr "event-editor-dialog"
-
-#~ msgid "label21"
-#~ msgstr "etykieta21"
-
-#~ msgid "month(s)"
-#~ msgstr "miesiêcy"
-
-#~ msgid "week(s)"
-#~ msgstr "tygodni"
-
-#~ msgid "year(s)"
-#~ msgstr "lat"
-
-#~ msgid "Could not create a calendar in `%s'"
-#~ msgstr "Nie mo¿na wczytaæ terminarza w \"%s\""
-
-#, fuzzy
-#~ msgid "April"
-#~ msgstr "kwiecieñ"
-
-#, fuzzy
-#~ msgid "August"
-#~ msgstr "sierpieñ"
-
-#, fuzzy
-#~ msgid "December"
-#~ msgstr "grudzieñ"
-
-#, fuzzy
-#~ msgid "February"
-#~ msgstr "luty"
-
-#, fuzzy
-#~ msgid "Go To Date"
-#~ msgstr "Przejd¼ do daty:"
-
-#, fuzzy
-#~ msgid "Go To Today"
-#~ msgstr "Przejd¼ do dnia dzisiejszego"
-
-#, fuzzy
-#~ msgid "January"
-#~ msgstr "styczeñ"
-
-#, fuzzy
-#~ msgid "July"
-#~ msgstr "lipiec"
-
-#, fuzzy
-#~ msgid "June"
-#~ msgstr "czerwiec"
-
-#, fuzzy
-#~ msgid "March"
-#~ msgstr "marzec"
-
-#, fuzzy
-#~ msgid "May"
-#~ msgstr "Poniedzia³ek"
-
-#, fuzzy
-#~ msgid "November"
-#~ msgstr "listopad"
-
-#, fuzzy
-#~ msgid "October"
-#~ msgstr "pa¼dziernik"
-
-#, fuzzy
-#~ msgid "September"
-#~ msgstr "wrzesieñ"
-
-#~ msgid "Attachment properties"
-#~ msgstr "W³a¶ciwo¶ci za³±cznika"
-
-#~ msgid "File name:"
-#~ msgstr "Nazwa pliku:"
-
-#~ msgid "MIME type:"
-#~ msgstr "Typ MIME:"
-
-#~ msgid "Edit VFolders"
-#~ msgstr "Modyfikacja VFolderów"
-
-#~ msgid "Filter Rules"
-#~ msgstr "Regu³y filtrów"
-
-#, fuzzy
-#~ msgid "Outgoing"
-#~ msgstr "Obrys:"
-
-#~ msgid "Virtual Folders"
-#~ msgstr "Wirtualne foldery"
-
-#~ msgid "vFolder Sources"
-#~ msgstr "¬ród³a VFolderów"
-
-#~ msgid "Save"
-#~ msgstr "Zapisz"
-
-#, fuzzy
-#~ msgid "Show all hidden"
-#~ msgstr "Wy¶wietl wszystkie"
-
-#, fuzzy
-#~ msgid "Hide selected"
-#~ msgstr "Usuniêty"
-
-#, fuzzy
-#~ msgid "Hide read"
-#~ msgstr "Ukryj"
-
-#, fuzzy
-#~ msgid "Hide deleted"
-#~ msgstr "Usuniêty"
-
-#, fuzzy
-#~ msgid "Hide Subject"
-#~ msgstr "Temat"
-
-#, fuzzy
-#~ msgid "Hide from Sender"
-#~ msgstr "Utwórz filtr w oparciu o nadawcê"
-
-#, fuzzy
-#~ msgid "Hide Messages"
-#~ msgstr "Wydrukuj list"
-
-#, fuzzy
-#~ msgid "Current store format:"
-#~ msgstr "Nie mo¿na uruchomiæ wombata"
-
-#, fuzzy
-#~ msgid "New store format:"
-#~ msgstr "Format czasu:"
-
-#, fuzzy
-#~ msgid "mh"
-#~ msgstr "h"
-
-#~ msgid "You have no mail sources configured"
-#~ msgstr "Nie skonfigurowano ¿adnych ¼róde³ listów"
-
-#, fuzzy
-#~ msgid "Account Information"
-#~ msgstr "Brak informacji"
-
-#, fuzzy
-#~ msgid "Account Properties"
-#~ msgstr "W³a¶ciwo¶ci za³±cznika"
-
-#, fuzzy
-#~ msgid "Advanced"
-#~ msgstr "Zaawansowane..."
-
-#, fuzzy
-#~ msgid "Authentication"
-#~ msgstr "Uwierzytelnianie:"
-
-#, fuzzy
-#~ msgid "Authentication Type:"
-#~ msgstr "Uwierzytelnianie:"
-
-#, fuzzy
-#~ msgid "Delete mail from server"
-#~ msgstr "bez usuwania listów z serwera"
-
-#, fuzzy
-#~ msgid "Done"
-#~ msgstr "Brak"
-
-#, fuzzy
-#~ msgid "E-Mail Address:"
-#~ msgstr "Adres e-mail:"
-
-#, fuzzy
-#~ msgid "Email Address:"
-#~ msgstr "Adres e-mail:"
-
-#, fuzzy
-#~ msgid "Evolution Mail Configuration"
-#~ msgstr "Konfiguracja poczty"
-
-#, fuzzy
-#~ msgid "Full Name:"
-#~ msgstr "Pe³na nazwa:"
-
-#, fuzzy
-#~ msgid "Hostname:"
-#~ msgstr "nazwa u¿ytkownika:"
-
-#, fuzzy
-#~ msgid "IMAP"
-#~ msgstr "IMAPv4"
-
-#~ msgid "Identity"
-#~ msgstr "Dane osobowe"
-
-#, fuzzy
-#~ msgid "Kerberos"
-#~ msgstr "Kerberos 4"
-
-#, fuzzy
-#~ msgid "Mail"
-#~ msgstr "_List"
-
-#, fuzzy
-#~ msgid "Mail Account"
-#~ msgstr "E-mail zawiera"
-
-#~ msgid "Mail Configuration"
-#~ msgstr "Konfiguracja poczty"
-
-#, fuzzy
-#~ msgid "Mail Configuration Druid"
-#~ msgstr "Konfiguracja poczty"
-
-#, fuzzy
-#~ msgid "News"
-#~ msgstr "Nowy"
-
-#, fuzzy
-#~ msgid "Optional"
-#~ msgstr "Opcje"
-
-#~ msgid "Organization:"
-#~ msgstr "Organizacja:"
-
-#, fuzzy
-#~ msgid "Password:"
-#~ msgstr "Has³o"
-
-#, fuzzy
-#~ msgid "Reply-to:"
-#~ msgstr "Odpowiedz"
-
-#, fuzzy
-#~ msgid "Required"
-#~ msgstr "_Wymagani ludzie"
-
-#, fuzzy
-#~ msgid "Save password"
-#~ msgstr "Zapisz jako VCard"
-
-#, fuzzy
-#~ msgid "Select signature file"
-#~ msgstr "Plik z podpisem:"
-
-#, fuzzy
-#~ msgid "Server Configuration"
-#~ msgstr "Konfiguracja poczty"
-
-#, fuzzy
-#~ msgid "Server Type: "
-#~ msgstr "Serwer:"
-
-#, fuzzy
-#~ msgid "Servers"
-#~ msgstr "Serwer:"
-
-#~ msgid "Signature file:"
-#~ msgstr "Plik z podpisem:"
-
-#, fuzzy
-#~ msgid "Signature:"
-#~ msgstr "Plik z podpisem:"
-
-#~ msgid "Sources"
-#~ msgstr "¬ród³a"
-
-#, fuzzy
-#~ msgid "Type"
-#~ msgstr "Typ:"
-
-#, fuzzy
-#~ msgid "User Information"
-#~ msgstr "Brak informacji"
-
-#~ msgid "Username:"
-#~ msgstr "nazwa u¿ytkownika:"
-
-#, fuzzy
-#~ msgid "minute(s)"
-#~ msgstr "minut"
-
-#~ msgid "Full name:"
-#~ msgstr "Pe³na nazwa:"
-
-#~ msgid "Email address:"
-#~ msgstr "Adres e-mail:"
-
-#~ msgid "Signature File"
-#~ msgstr "Plik z podpisem"
-
-#~ msgid "Server:"
-#~ msgstr "Serwer:"
-
-#~ msgid "Detect supported types..."
-#~ msgstr "Wykryj obs³ugiwane typy..."
-
-#~ msgid "Don't delete messages from server"
-#~ msgstr "bez usuwania listów z serwera"
-
-#~ msgid "Test Settings"
-#~ msgstr "Przetestuj ustawienia"
-
-#~ msgid "Mail source type:"
-#~ msgstr "Typ ¼ród³a listów:"
-
-#~ msgid "Add Source"
-#~ msgstr "Dodaj ¼ród³o"
-
-#~ msgid "Edit Source"
-#~ msgstr "Zmodyfikuj ¼ród³o"
-
-#~ msgid "Testing \"%s\""
-#~ msgstr "Testowanie \"%s\""
-
-#~ msgid "The connection was successful!"
-#~ msgstr "Po³±czenie zakoñczy³o siê powodzeniem!"
-
-#~ msgid "Address"
-#~ msgstr "Adres"
-
-#~ msgid "Mail Sources"
-#~ msgstr "¬ród³a listów"
-
-#~ msgid "Mark message as seen [ms]: "
-#~ msgstr "Opó¼nienie oznaczania listu jako widzianego [ms]: "
-
-#~ msgid "Send messages in HTML format"
-#~ msgstr "Wysy³anie listów w formacie HTML"
-
-#~ msgid "No GPG/PGP support available in this copy of Evolution."
-#~ msgstr "W tej kopii Evolution nie jest dostêpna obs³uga GPG/PGP"
-
-#~ msgid "Create a new contact"
-#~ msgstr "Tworzy nowy kontakt"
-
-#~ msgid "Delete a contact"
-#~ msgstr "Usuñ kontakt"
-
-#~ msgid "Find"
-#~ msgstr "Znajd¼"
-
-#~ msgid "Find a contact"
-#~ msgstr "Odnajduje kontakt"
-
-#~ msgid "Print contacts"
-#~ msgstr "Drukuj kontakty"
-
-#~ msgid "Stop"
-#~ msgstr "Zatrzymaj"
-
-#~ msgid "Stop Loading"
-#~ msgstr "Zatrzymuje wczytywanie"
-
-#~ msgid "View All"
-#~ msgstr "Wy¶wietl wszystkie"
-
-#~ msgid "View all contacts"
-#~ msgstr "Wy¶wietla wszystkie kontakty"
-
-#, fuzzy
-#~ msgid "_Addressbook Configuration..."
-#~ msgstr "Konfiguracja _listów"
-
-#~ msgid "_Print Contacts..."
-#~ msgstr "_Drukuj kontakty..."
-
-#~ msgid "_Search for contacts"
-#~ msgstr "_Szukaj kontaktów"
-
-#~ msgid "5 Days"
-#~ msgstr "5 dni"
-
-#, fuzzy
-#~ msgid "Ca_lendar"
-#~ msgstr "Terminarz"
-
-#~ msgid "Calendar Preferences..."
-#~ msgstr "Ustawienia terminarza..."
-
-#~ msgid "Create a new appointment"
-#~ msgstr "Tworzy nowy termin"
-
-#~ msgid "Create a new calendar"
-#~ msgstr "Tworzy nowy termianrz"
-
-#~ msgid "Day"
-#~ msgstr "Dzieñ"
-
-#~ msgid "Go back in time"
-#~ msgstr "Przemieszcza w czasie do ty³u"
-
-#~ msgid "Go forward in time"
-#~ msgstr "Przemieszcza w czasie do przodu"
-
-#~ msgid "Go to"
-#~ msgstr "Przejd¼"
-
-#~ msgid "Go to a specific date"
-#~ msgstr "Przemieszcza do podanej daty"
-
-#~ msgid "Go to present time"
-#~ msgstr "Przemieszcza do bie¿±cego czasu"
-
-#~ msgid "Month"
-#~ msgstr "Miesi±c"
-
-#~ msgid "Open a calendar"
-#~ msgstr "Otwiera terminarz"
-
-#~ msgid "Prev"
-#~ msgstr "Poprzedni"
-
-#~ msgid "Print this calendar"
-#~ msgstr "Drukuje terminarz"
-
-#~ msgid "Save calendar as something else"
-#~ msgstr "Zapisuje terminarz w innej formie"
-
-#~ msgid "Show 1 day"
-#~ msgstr "Wy¶wietla jeden dzieñ"
-
-#~ msgid "Show 1 month"
-#~ msgstr "Wy¶wietla jeden miesi±c"
-
-#~ msgid "Show 1 week"
-#~ msgstr "Wy¶wietla jeden tydzieñ"
-
-#~ msgid "Show the working week"
-#~ msgstr "Wy¶wietla tydzieñ roboczy"
-
-#~ msgid "Week"
-#~ msgstr "Tydzieñ"
-
-#~ msgid "_New"
-#~ msgstr "_Nowy"
-
-#~ msgid "_Open Calendar"
-#~ msgstr "_Otwórz terminarz"
-
-#, fuzzy
-#~ msgid "_Save As..."
-#~ msgstr "Zapisz j_ako..."
-
-#~ msgid "Delete this item"
-#~ msgstr "Usuwa bie¿±cy element"
-
-#~ msgid "Delete..."
-#~ msgstr "Usuñ..."
-
-#~ msgid "Help"
-#~ msgstr "Pomoc"
-
-#~ msgid "Print this item"
-#~ msgstr "Drukuje bie¿±cy element"
-
-#~ msgid "Print..."
-#~ msgstr "Drukuj..."
-
-#~ msgid "Save _As..."
-#~ msgstr "Zapisz j_ako..."
-
-#~ msgid "Save and Close"
-#~ msgstr "Zapisz i zamknij"
-
-#~ msgid "Save the contact and close the dialog box"
-#~ msgstr "Zapisuje kontakt i zamyka okno dialogowe"
-
-#~ msgid "_File"
-#~ msgstr "_Plik"
-
-#~ msgid "_Print..."
-#~ msgstr "_Drukuj..."
-
-#~ msgid "_Save"
-#~ msgstr "_Zapisz"
-
-#~ msgid "About this application"
-#~ msgstr "Informacje o aplikacji"
-
-#~ msgid "About..."
-#~ msgstr "Informacje o..."
-
-#~ msgid "C_lear"
-#~ msgstr "Wyc_zy¶æ"
-
-#~ msgid "C_ut"
-#~ msgstr "_Wytnij"
-
-#~ msgid "Clear"
-#~ msgstr "Wyczy¶æ"
-
-#~ msgid "Clear the selection"
-#~ msgstr "Czy¶ci zaznaczenie"
-
-#~ msgid "Close this appointment"
-#~ msgstr "Zamyka termin"
-
-#~ msgid "Copy"
-#~ msgstr "Kopiuj"
-
-#~ msgid "Copy the selection"
-#~ msgstr "Kopiuje zaznaczenie"
-
-#~ msgid "Cut"
-#~ msgstr "Wytnij"
-
-#~ msgid "Cut the selection"
-#~ msgstr "Wycina zaznaczenie"
-
-#~ msgid "Dump XML"
-#~ msgstr "Wypisz XML"
-
-#~ msgid "Dump the UI Xml description"
-#~ msgstr "Wypisuje opis interfejsu u¿ytkownika w XML-u"
-
-#~ msgid "Find Again"
-#~ msgstr "Znajd¼ ponownie"
-
-#~ msgid "Find _Again"
-#~ msgstr "Znajd¼ p_onownie"
-
-#~ msgid "Modify the file's properties"
-#~ msgstr "Modyfikuje w³a¶ciwo¶ci pliku"
-
-#~ msgid "N_ext"
-#~ msgstr "_Nastêpny"
-
-#~ msgid "Paste"
-#~ msgstr "Wklej"
-
-#~ msgid "Paste the clipboard"
-#~ msgstr "Wkleja zawarto¶æ schowka"
-
-#~ msgid "Print S_etup..."
-#~ msgstr "Ustawienia _wydruku..."
-
-#~ msgid "Print Setup"
-#~ msgstr "Ustawienia wydruku"
-
-#~ msgid "Properties"
-#~ msgstr "W³a¶ciwo¶ci"
-
-#~ msgid "Redo"
-#~ msgstr "Ponów"
-
-#~ msgid "Redo the undone action"
-#~ msgstr "Ponawia cofniêt± czynno¶æ"
-
-#~ msgid "Replace"
-#~ msgstr "Zast±p"
-
-#~ msgid "Replace a string"
-#~ msgstr "Zastêpuje napis"
-
-#~ msgid "Save the appointment and close the dialog box"
-#~ msgstr "Zapisuje termin i zamyka okno"
-
-#~ msgid "Save the current file"
-#~ msgstr "Zapisuje bie¿±cy plik"
-
-#~ msgid "Search again for the same string"
-#~ msgstr "Ponownie wyszukuje ten sam napis"
-
-#~ msgid "Search for a string"
-#~ msgstr "Wyszukuje napis"
-
-#~ msgid "Select All"
-#~ msgstr "Zaznacz wszystkie"
-
-#~ msgid "Select everything"
-#~ msgstr "Zaznacza wszystko"
-
-#~ msgid "Undo"
-#~ msgstr "Cofnij"
-
-#~ msgid "Undo the last action"
-#~ msgstr "Cofa ostatni± czynno¶æ"
-
-#~ msgid "_About..."
-#~ msgstr "_Informacje o..."
-
-#~ msgid "_Close"
-#~ msgstr "_Zamknij"
-
-#~ msgid "_Copy"
-#~ msgstr "_Kopiuj"
-
-#~ msgid "_Edit"
-#~ msgstr "_Edycja"
-
-#~ msgid "_Find..."
-#~ msgstr "_Znajd¼..."
-
-#~ msgid "_Help"
-#~ msgstr "Pomo_c"
-
-#~ msgid "_Paste"
-#~ msgstr "Wk_lej"
-
-#~ msgid "_Print"
-#~ msgstr "_Drukuj"
-
-#~ msgid "_Properties..."
-#~ msgstr "_W³a¶ciwo¶ci..."
-
-#~ msgid "_Redo"
-#~ msgstr "_Ponów"
-
-#~ msgid "_Replace..."
-#~ msgstr "_Zast±p..."
-
-#~ msgid "_Undo"
-#~ msgstr "_Cofnij"
-
-#~ msgid "Compose"
-#~ msgstr "Utwórz"
-
-#~ msgid "Compose a new message"
-#~ msgstr "Tworzy nowy list"
-
-#~ msgid "Copy message to a new folder"
-#~ msgstr "Kopiuje list do nowego foldera"
-
-#~ msgid "F_older"
-#~ msgstr "_Folder"
-
-#~ msgid "Fi_lter on Sender"
-#~ msgstr "Utwórz filtr w oparciu o n_adawcê"
-
-#~ msgid "Filter on Rec_ipients"
-#~ msgstr "Utwórz filtr w oparciu o o_dbiorców"
-
-#~ msgid "Forget _Passwords"
-#~ msgstr "Zapomnij _has³a"
-
-#~ msgid "Get Mail"
-#~ msgstr "Pobierz"
-
-#, fuzzy
-#~ msgid "Hide _Deleted messages"
-#~ msgstr "Drukuje list"
-
-#, fuzzy
-#~ msgid "Hide _Read messages"
-#~ msgstr "Przes³any list:\n"
-
-#, fuzzy
-#~ msgid "Hide _Selected messages"
-#~ msgstr "Drukuje list"
-
-#, fuzzy
-#~ msgid "Mail _Filters..."
-#~ msgstr "_Filtry listów..."
-
-#, fuzzy
-#~ msgid "Manage Subscriptions..."
-#~ msgstr "Opis:"
-
-#~ msgid "Mar_k As Read"
-#~ msgstr "Oznacz jako p_rzeczytany"
-
-#~ msgid "Mark As U_nread"
-#~ msgstr "Oznacz jako _nieprzeczytany"
-
-#~ msgid "Move"
-#~ msgstr "Przenie¶"
-
-#~ msgid "Move message to a new folder"
-#~ msgstr "Przenosi list do nowego foldera"
-
-#~ msgid "Print Preview of message..."
-#~ msgstr "Podgl±d wydruku listu..."
-
-#~ msgid "Print message to the printer"
-#~ msgstr "Drukuje list na drukarce"
-
-#~ msgid "Print message..."
-#~ msgstr "Wydrukuj list..."
-
-#~ msgid "Reply to _All"
-#~ msgstr "Odpowiedz _wszystkim"
-
-#~ msgid "Reply to _Sender"
-#~ msgstr "Odpowiedz _nadawcy"
-
-#~ msgid "Select _All"
-#~ msgstr "Zaznacz _wszystkie"
-
-#~ msgid "Send queued mail and retrieve new mail"
-#~ msgstr "Wysy³a listy w kolejce i pobiera nowe"
-
-#, fuzzy
-#~ msgid "Show _All messages"
-#~ msgstr "Wy¶wietl wszystkie"
-
-#~ msgid "Threaded Message list"
-#~ msgstr "Wy¶wietlanie listów z wyodrêbnieniem w±tków"
-
-#~ msgid "VFolder on Se_nder"
-#~ msgstr "Utwórz VFolder w oparciu o _nadawcê"
-
-#~ msgid "VFolder on _Recipients"
-#~ msgstr "Utwórz VFolder w oparciu o _odbiorców"
-
-#~ msgid "_Apply Filters"
-#~ msgstr "_Zastosuj filtry"
-
-#~ msgid "_Copy to Folder..."
-#~ msgstr "_Skopiuj do foldera..."
-
-#~ msgid "_Edit Message"
-#~ msgstr "_Zredaguj list"
-
-#~ msgid "_Expunge"
-#~ msgstr "_Wyczy¶æ"
-
-#~ msgid "_Filter on Subject"
-#~ msgstr "Utwórz filtr w oparciu o t_emat"
-
-#~ msgid "_Forward"
-#~ msgstr "_Prze¶lij"
-
-#~ msgid "_Invert Selection"
-#~ msgstr "_Odwróæ zaznaczenie"
-
-#~ msgid "_Mail Configuration..."
-#~ msgstr "Konfiguracja _listów"
-
-#~ msgid "_Message"
-#~ msgstr "_List"
-
-#~ msgid "_Move to Folder..."
-#~ msgstr "P_rzenie¶ do foldera..."
-
-#~ msgid "_Open in New Window"
-#~ msgstr "_Otwórz w nowym oknie"
-
-#~ msgid "_Print Message"
-#~ msgstr "_Drukuj list"
-
-#, fuzzy
-#~ msgid "_Save Message As..."
-#~ msgstr "Zapisz jako..."
-
-#~ msgid "_Source"
-#~ msgstr "¬_ród³o"
-
-#~ msgid "_Threaded"
-#~ msgstr "Z _w±tkami"
-
-#~ msgid "_Undelete"
-#~ msgstr "_Cofnij usuniêcie"
-
-#~ msgid "_VFolder on Subject"
-#~ msgstr "Utwórz VFolder w oparciu o _temat"
-
-#, fuzzy
-#~ msgid "_Virtual Folder Editor..."
-#~ msgstr "Edytor _wirtualnych folderów..."
-
-#~ msgid "Attach"
-#~ msgstr "Za³±cz"
-
-#~ msgid "Close the current file"
-#~ msgstr "Zamyka bie¿±cy plik"
-
-#, fuzzy
-#~ msgid "Encrypt this message with PGP"
-#~ msgstr "List zaszyfrowany"
-
-#~ msgid "HTML"
-#~ msgstr "HTML"
-
-#~ msgid "Insert a file as text into the message"
-#~ msgstr "Wstawia zawarto¶æ pliku jako tekst do listu"
-
-#~ msgid "Insert text file..."
-#~ msgstr "Wstaw plik tekstowy.."
-
-#~ msgid "Open a file"
-#~ msgstr "Otwiera plik"
-
-#~ msgid "Save As"
-#~ msgstr "Zapisz jako"
-
-#~ msgid "Save in folder..."
-#~ msgstr "Zapisz do foldera..."
-
-#~ msgid "Save the message in a specified folder"
-#~ msgstr "Zapisuje list w podanym folderze"
-
-#~ msgid "Send"
-#~ msgstr "Wy¶lij"
-
-#~ msgid "Send _Later"
-#~ msgstr "Wy¶lij pó¼_niej"
-
-#~ msgid "Send _later"
-#~ msgstr "Wy¶lij pó¼_niej"
-
-#~ msgid "Send this message now"
-#~ msgstr "Natychmiast wysy³a wiadomo¶æ"
-
-#~ msgid "Show / hide attachments"
-#~ msgstr "Wy¶wietla / ukrywa za³±czniki"
-
-#~ msgid "Show _attachments"
-#~ msgstr "Wy¶wietlanie _za³±czników"
-
-#, fuzzy
-#~ msgid "Sign this message with your PGP key"
-#~ msgstr "Wysy³anie listu bez tematu"
-
-#~ msgid "_Open..."
-#~ msgstr "_Otwórz..."
-
-#~ msgid "Refresh List"
-#~ msgstr "Od¶wie¿ listê"
-
-#~ msgid "Refresh List of Folders"
-#~ msgstr "Od¶wie¿a listê folderów"
-
-#~ msgid "Subscribe"
-#~ msgstr "Zapisz"
-
-#~ msgid "Unsubscribe"
-#~ msgstr "Wypisz"
-
-#~ msgid "Display a different folder"
-#~ msgstr "Wy¶wietla inny folder"
-
-#~ msgid "E_xit"
-#~ msgstr "Za_koñcz"
-
-#~ msgid "Exit the program"
-#~ msgstr "Koñczy pracê programu"
-
-#~ msgid "Getting _Started"
-#~ msgstr "_Rozpoczynanie"
-
-#~ msgid "Show information about Evolution"
-#~ msgstr "Wy¶wietla informacje o Evolution"
-
-#~ msgid "Show the _Folder Bar"
-#~ msgstr "Wy¶wietlanie paska f_olderów"
-
-#~ msgid "Submit _Bug Report"
-#~ msgstr "Wy¶lij zg³oszenie _b³êdu"
-
-#, fuzzy
-#~ msgid "Submit bug report using Bug Buddy."
-#~ msgstr "Wysy³a zg³oszenie b³êdu za pomoc± Bug Buddy"
-
-#~ msgid "Toggle whether to show the folder bar"
-#~ msgstr "Prze³±cza wy¶wietlanie paska folderów"
-
-#~ msgid "Toggle whether to show the shortcut bar"
-#~ msgstr "Prze³±cza wy¶wietlanie paska skrótów"
-
-#~ msgid "_About Evolution..."
-#~ msgstr "_Informacje o Evolution..."
-
-#~ msgid "_Appointment (FIXME)"
-#~ msgstr "_Termin (FIXME)"
-
-#~ msgid "_Contact (FIXME)"
-#~ msgstr "_Kontakt (FIXME)"
-
-#~ msgid "_Folder"
-#~ msgstr "_Folder"
-
-#~ msgid "_Go to Folder..."
-#~ msgstr "_Przejd¼ do foldera..."
-
-#~ msgid "_Index"
-#~ msgstr "_Indeks"
-
-#~ msgid "_Settings"
-#~ msgstr "_Ustawienia"
-
-#~ msgid "_Task (FIXME)"
-#~ msgstr "_Zadanie (FIXME)"
-
-#~ msgid "Item(s) belong to these categories:"
-#~ msgstr "Elementy nale¿±ce do tych kategorii:"
-
-#~ msgid "Available Categories:"
-#~ msgstr "Dostêpne kategorie:"
-
-#~ msgid "External Directories"
-#~ msgstr "Zewnêtrzne katalogi"
-
-#~ msgid "Port Number:"
-#~ msgstr "Numer portu:"
-
-#~ msgid "Outline:"
-#~ msgstr "Obrys:"
-
-#~ msgid "Headings:"
-#~ msgstr "Nag³ówki:"
-
-#~ msgid "Empty days:"
-#~ msgstr "Puste dni:"
-
-#~ msgid "Appointments:"
-#~ msgstr "Terminy:"
-
-#~ msgid "Highlighted day:"
-#~ msgstr "Pod¶wietlenie dnia"
-
-#~ msgid "Day numbers:"
-#~ msgstr "Numery dni:"
-
-#~ msgid "Current day's number:"
-#~ msgstr "Numer bie¿±cego dnia:"
-
-#~ msgid "may"
-#~ msgstr "maj"
-
-#~ msgid "sept"
-#~ msgstr "wrz"
-
-#~ msgid "sunday"
-#~ msgstr "niedziela"
-
-#~ msgid "monday"
-#~ msgstr "poniedzia³ek"
-
-#~ msgid "tuesday"
-#~ msgstr "wtorek"
-
-#~ msgid "tues"
-#~ msgstr "wto"
-
-#~ msgid "wednesday"
-#~ msgstr "¶roda"
-
-#~ msgid "wednes"
-#~ msgstr "¶ro"
-
-#~ msgid "thursday"
-#~ msgstr "czwartek"
-
-#~ msgid "thur"
-#~ msgstr "czw"
-
-#~ msgid "thurs"
-#~ msgstr "czw"
-
-#~ msgid "friday"
-#~ msgstr "pi±tek"
-
-#~ msgid "saturday"
-#~ msgstr "sobota"
-
-#~ msgid "fortnight"
-#~ msgstr "dwa tygodnie"
-
-#~ msgid "min"
-#~ msgstr "min"
-
-#~ msgid "sec"
-#~ msgstr "sek"
-
-#~ msgid "tomorrow"
-#~ msgstr "jutro"
-
-#~ msgid "yesterday"
-#~ msgstr "wczoraj"
-
-#~ msgid "today"
-#~ msgstr "dzi¶"
-
-#~ msgid "last"
-#~ msgstr "ostatni"
-
-#~ msgid "this"
-#~ msgstr "ten"
-
-#~ msgid "next"
-#~ msgstr "nastêpny"
-
-#~ msgid "first"
-#~ msgstr "pierwszy"
-
-#~ msgid "third"
-#~ msgstr "trzeci"
-
-#~ msgid "fourth"
-#~ msgstr "czwarty"
-
-#~ msgid "fifth"
-#~ msgstr "pi±ty"
-
-#~ msgid "sixth"
-#~ msgstr "szósty"
-
-#~ msgid "seventh"
-#~ msgstr "siódmy"
-
-#~ msgid "eighth"
-#~ msgstr "ósmy"
-
-#~ msgid "ninth"
-#~ msgstr "dziewi±ty"
-
-#~ msgid "tenth"
-#~ msgstr "dziesi±ty"
-
-#~ msgid "eleventh"
-#~ msgstr "jedenasty"
-
-#~ msgid "twelfth"
-#~ msgstr "dwunasty"
-
-#~ msgid "ago"
-#~ msgstr "temu"
-
-#~ msgid "Year:"
-#~ msgstr "Rok:"
-
-#~ msgid ""
-#~ "Please select the date you want to go to.\n"
-#~ "When you click on a day, you will be taken\n"
-#~ "to that date."
-#~ msgstr ""
-#~ "Wybierz datê, do której chcesz przej¶æ.\n"
-#~ "Klikniêcie na dniu spowoduje przej¶cie\n"
-#~ "do wybranego dnia."
-
-#~ msgid "Mail Source"
-#~ msgstr "¬ród³o listów"
-
-#~ msgid ""
-#~ "Your email configuration is now complete.\n"
-#~ "Click \"Finish\" to save your new settings"
-#~ msgstr ""
-#~ "Konfiguracja poczta zosta³a zakoñczona.\n"
-#~ "Kliknij \"Zakoñcz\", aby zapisaæ nowe ustawienia."
-
-#~ msgid "Send \"%s\""
-#~ msgstr "Wy¶lij \"%s\""
-
-#~ msgid "Send a message without a subject"
-#~ msgstr "Wy¶lij list bez tematu"
-
-#~ msgid "Expunge \"%s\""
-#~ msgstr "Wyczy¶æ \"%s\""
-
-#~ msgid "Marking message %d of %d"
-#~ msgstr "Zaznaczanie listu %d z %d"
-
-#~ msgid "Forwarding messages \"%s\""
-#~ msgstr "Przesy³anie listów \"%s\""
-
-#~ msgid "Forwarding a message without a subject"
-#~ msgstr "Przesy³anie listu bez tematu"
-
-#~ msgid "Forward message \"%s\""
-#~ msgstr "Prze¶lij list \"%s\""
-
-#~ msgid "Forward a message without a subject"
-#~ msgstr "Prze¶lij list bez tematu"
-
-#~ msgid "Loading \"%s\""
-#~ msgstr "Wczytywanie \"%s\""
-
-#~ msgid "Creating \"%s\""
-#~ msgstr "Tworzenie \"%s\""
-
-#~ msgid "Create \"%s\""
-#~ msgstr "Utwórz \"%s\""
-
-#~ msgid "Synchronize \"%s\""
-#~ msgstr "Zsynchronizuj \"%s\""
-
-#~ msgid "Saving messages from folder \"%s\""
-#~ msgstr "Zapisywanie listów z foldera \"%s\""
-
-#, fuzzy
-#~ msgid "Save messages from folder \"%s\""
-#~ msgstr "Zapisywanie listów z foldera \"%s\""
-
-#~ msgid "Rebuilding message view"
-#~ msgstr "Przebudowywanie widoku listu"
-
-#~ msgid "Rebuild message view"
-#~ msgstr "Przebudowywanie widoku listu"
-
-#~ msgid "N_ew Directory Server"
-#~ msgstr "_Nowy serwer katalogowy"
-
-#~ msgid "_Actions"
-#~ msgstr "_Czynno¶ci"
-
-#~ msgid "_Save Calendar As"
-#~ msgstr "_Zapisz terminarz jako"
-
-#, fuzzy
-#~ msgid "_Mail Configuration"
-#~ msgstr "Konfiguracja poczty"
-
-#~ msgid "window2"
-#~ msgstr "okno2"
-
-#~ msgid "Cannot get message: %s"
-#~ msgstr "Nie mo¿na pobraæ listu: %s"
-
-#~ msgid "Could not rename folder %s to %s: destination exists"
-#~ msgstr ""
-#~ "Nie mo¿na zmieniæ nazwy foldera %s na %s: folder o nazwie docelowej istnieje"
-
-#~ msgid "Cannot copy data to output file: %s"
-#~ msgstr "Nie mo¿na skopiowaæ danych do pliku wyj¶ciowego: %s"
-
-#~ msgid "Could not rename folder `%s': %s exists"
-#~ msgstr "Nie mo¿na zmieniæ nazwy foldera \"%s\": %s istnieje"
-
-#~ msgid "MH folders may not be nested."
-#~ msgstr "Foldery MH nie mog± byæ zagnie¿d¿one"
-
-#~ msgid "Draft"
-#~ msgstr "Roboczy"
-
-#~ msgid "Set Flag"
-#~ msgstr "Oznacz"
-
-#~ msgid "Forward as Attachment"
-#~ msgstr "Prze¶lij jako za³±cznik"
-
-#~ msgid "Couldn't create pipe to %s: %s"
-#~ msgstr "Nie mo¿na utworzyæ potoku do %s: %s"
-
-#~ msgid "Could not execute %s: %s\n"
-#~ msgstr "Nie mo¿na wykonaæ %s: %s\n"
-
-#~ msgid "Saving messages from \"%s\""
-#~ msgstr "Zapisywanie listów z \"%s\""
-
-#~ msgid "New Ca_lendar"
-#~ msgstr "Nowy _terminarz"
-
-#~ msgid "_New appointment..."
-#~ msgstr "_Nowy termin..."
-
-#~ msgid "_Open"
-#~ msgstr "_Otwórz"
-
-#~ msgid "Bold"
-#~ msgstr "Pogrubienie"
-
-#~ msgid "Sets something as bold"
-#~ msgstr "Pogrubia co¶"
-
-#~ msgid "_Create New Folder..."
-#~ msgstr "_Utwórz nowy folder..."
diff --git a/po/pt.po b/po/pt.po
deleted file mode 100644
index d807b4803a..0000000000
--- a/po/pt.po
+++ /dev/null
@@ -1,6392 +0,0 @@
-# Portuguese translation of evolution.
-# Copyright (C) 2000 Free Software Foundation, Inc.
-# Tiago Antão <tiagoantao@bigfoot.com>, 2000.
-#
-#: camel/providers/smtp/camel-smtp-transport.c:285
-msgid ""
-msgstr ""
-"Project-Id-Version: evolution 0.1\n"
-"POT-Creation-Date: 2001-01-17 18:47-0500\n"
-"PO-Revision-Date: 2000-04-16 16:33+01:00\n"
-"Last-Translator: Tiago Antão <tiagoantao@bigfoot.com>\n"
-"Language-Team: Gnome Portuguese <gnome@poli.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
-"Content-Transfer-Encoding: 8-bit\n"
-
-#: executive-summary/component/component-factory.c:152
-#, fuzzy
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr "Não consigo inicializar o componente de mail do Evolution."
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:16
-#: addressbook/backend/ebook/load-pine-addressbook.c:17
-#: addressbook/backend/ebook/test-client-list.c:18
-#: addressbook/backend/ebook/test-client.c:29
-#: addressbook/conduit/address-conduit.c:1090
-#: addressbook/gui/component/addressbook-factory.c:38
-#: addressbook/gui/widgets/test-minicard-view.c:45
-#: calendar/conduits/calendar/calendar-conduit.c:1150
-#: calendar/conduits/todo/todo-conduit.c:965 calendar/gui/main.c:55
-msgid "Could not initialize Bonobo"
-msgstr "Não se consegui inicializar Bonobo"
-
-#: addressbook/gui/widgets/test-minicard-view.c:100
-msgid "Reflow Test"
-msgstr ""
-
-#: addressbook/gui/widgets/test-minicard-view.c:101
-#, fuzzy
-msgid "Copyright (C) 2000, Helix Code, Inc."
-msgstr "Copyright 1999, 2000 Helix Code, Inc."
-
-#: addressbook/gui/widgets/test-minicard-view.c:103
-msgid "This should test the reflow canvas item"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-provider.c:34
-msgid "UNIX mbox-format mail files"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-provider.c:36
-msgid ""
-"For reading mail delivered by the local system, and for storing mail on "
-"local disk."
-msgstr ""
-
-#: camel/providers/vee/camel-vee-folder.c:604
-#, fuzzy, c-format
-msgid "No such message: %s"
-msgstr "Enviar a mensagem"
-
-#: executive-summary/component/e-summary-callbacks.c:267
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:61
-#: executive-summary/component/e-summary-url.c:66
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:62
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:63
-#, fuzzy, c-format
-msgid "Send an email to %s"
-msgstr "Enviar"
-
-#: executive-summary/component/e-summary-url.c:64
-#, c-format
-msgid "Change the view to %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:65
-#, c-format
-msgid "Run %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:67
-#, fuzzy, c-format
-msgid "Close %s"
-msgstr "Cores"
-
-#: executive-summary/component/e-summary-url.c:68
-#, fuzzy, c-format
-msgid "Move %s to the left"
-msgstr "Ir para a _pasta..."
-
-#: executive-summary/component/e-summary-url.c:69
-#, c-format
-msgid "Move %s to the right"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:70
-#, fuzzy, c-format
-msgid "Move %s into the previous row"
-msgstr "Ir para o item anterior"
-
-#: executive-summary/component/e-summary-url.c:71
-#, fuzzy, c-format
-msgid "Move %s into the next row"
-msgstr "Ir para o próximo item"
-
-#: executive-summary/component/e-summary-url.c:72
-#, fuzzy, c-format
-msgid "Configure %s"
-msgstr "_Nova pasta"
-
-#: executive-summary/component/e-summary.c:919
-#, fuzzy, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr "Não consigo abrir a localização: %s"
-
-#: executive-summary/component/e-summary.c:933
-#, fuzzy, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr "Erro a gravar os atalhos."
-
-#: executive-summary/component/e-summary.c:951
-msgid "File does not have a place for the services.\n"
-msgstr ""
-
-#: executive-summary/component/main.c:59
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:443
-#: executive-summary/test-service/rdf-summary.c:479
-#: executive-summary/test-service/rdf-summary.c:524
-msgid "Error"
-msgstr ""
-
-#: mail/mail-config.c:799
-msgid "Connecting to server"
-msgstr ""
-
-#: mail/mail-config.c:801
-msgid "Connect to server"
-msgstr ""
-
-#: notes/component-factory.c:27
-msgid "New"
-msgstr "Novo"
-
-#: notes/component-factory.c:27
-#, fuzzy
-msgid "Create a new note"
-msgstr "Criar um novo contacto"
-
-#: notes/component-factory.c:152
-#, fuzzy
-msgid "Cannot initialize Evolution's notes component."
-msgstr "Não consigo inicializar o componente de mail do Evolution."
-
-#: notes/main.c:30
-#, fuzzy
-msgid "Notes Component: Could not initialize bonobo"
-msgstr "Component de correio: Não consegui inicializar Bonobo"
-
-#: addressbook/backend/ebook/e-card.c:3049
-#, fuzzy
-msgid "Card: "
-msgstr "Carro"
-
-#: addressbook/backend/ebook/e-card.c:3051
-#, fuzzy
-msgid ""
-"\n"
-"Name: "
-msgstr "Nome"
-
-#: addressbook/backend/ebook/e-card.c:3052
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3053
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3054
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3055
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3056
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3070
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3081
-#, fuzzy
-msgid ""
-"\n"
-"Address:"
-msgstr "Endereço"
-
-#: addressbook/backend/ebook/e-card.c:3083
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3084
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3085
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3086
-msgid ""
-"\n"
-" City: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3087
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3088
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3089
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3102
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3114
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3117
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3141
-#, fuzzy
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr "Correio electrónico 2"
-
-#: addressbook/backend/ebook/e-card.c:3144
-#, fuzzy
-msgid ""
-"\n"
-"E-mail:"
-msgstr "Correio electrónico 2"
-
-#: addressbook/backend/ebook/e-card.c:3163
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3169
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3177
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3181
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3193
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3194
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3195
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3196
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3197
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3198
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3202
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3203
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3216
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3219
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-
-#. This array must be in the same order as enumerations
-#. in GnomePilotConduitSyncType as they are used as index.
-#. Custom type implies Disabled state.
-#.
-#: addressbook/conduit/address-conduit-control-applet.c:77
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:77
-#: calendar/conduits/todo/todo-conduit-control-applet.c:77
-msgid "Disabled"
-msgstr ""
-
-#: addressbook/conduit/address-conduit-control-applet.c:78
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:78
-#: calendar/conduits/todo/todo-conduit-control-applet.c:78
-msgid "Synchronize"
-msgstr "Sincronizar"
-
-#: addressbook/conduit/address-conduit-control-applet.c:79
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:79
-#: calendar/conduits/todo/todo-conduit-control-applet.c:79
-msgid "Copy From Pilot"
-msgstr ""
-
-#: addressbook/conduit/address-conduit-control-applet.c:80
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:80
-#: calendar/conduits/todo/todo-conduit-control-applet.c:80
-msgid "Copy To Pilot"
-msgstr ""
-
-#: addressbook/conduit/address-conduit-control-applet.c:81
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:81
-#: calendar/conduits/todo/todo-conduit-control-applet.c:81
-msgid "Merge From Pilot"
-msgstr ""
-
-#: addressbook/conduit/address-conduit-control-applet.c:82
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:82
-#: calendar/conduits/todo/todo-conduit-control-applet.c:82
-msgid "Merge To Pilot"
-msgstr ""
-
-#: addressbook/conduit/address-conduit-control-applet.c:121
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:121
-#: calendar/conduits/todo/todo-conduit-control-applet.c:121
-msgid "JP Rosevear <jpr@helixcode.com>"
-msgstr ""
-
-#: addressbook/conduit/address-conduit-control-applet.c:122
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:122
-#: calendar/conduits/todo/todo-conduit-control-applet.c:122
-msgid "Original Author:"
-msgstr ""
-
-#: addressbook/conduit/address-conduit-control-applet.c:123
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:123
-#: calendar/conduits/todo/todo-conduit-control-applet.c:123
-msgid "Eskil Heyn Olsen <deity@eskil.dk>"
-msgstr ""
-
-#: addressbook/conduit/address-conduit-control-applet.c:127
-msgid "Evolution Addressbook Conduit"
-msgstr ""
-
-#: addressbook/conduit/address-conduit-control-applet.c:128
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:128
-#: calendar/conduits/todo/todo-conduit-control-applet.c:128
-#, fuzzy
-msgid "(C) 1998-2000 the Free Software Foundation and Helix Code"
-msgstr "(C) 1998 Free Software Foundation"
-
-#: addressbook/conduit/address-conduit-control-applet.c:130
-msgid "Configuration utility for the evolution addressbook conduit.\n"
-msgstr ""
-
-#: addressbook/conduit/address-conduit-control-applet.c:131
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:131
-#: calendar/conduits/todo/todo-conduit-control-applet.c:131
-msgid "gnome-unknown.xpm"
-msgstr "gnome-unknown.xpm"
-
-#: addressbook/conduit/address-conduit-control-applet.c:162
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:162
-#: calendar/conduits/todo/todo-conduit-control-applet.c:162
-msgid "Synchronize Action"
-msgstr ""
-
-#: addressbook/conduit/address-conduit-control-applet.c:214
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:215
-#: calendar/conduits/todo/todo-conduit-control-applet.c:214
-msgid "Conduit state"
-msgstr ""
-
-#: addressbook/conduit/address-conduit-control-applet.c:266
-#: addressbook/conduit/address-conduit-control-applet.c:279
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:267
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:280
-#: calendar/conduits/todo/todo-conduit-control-applet.c:266
-#: calendar/conduits/todo/todo-conduit-control-applet.c:279
-msgid ""
-"No pilot configured, please choose the\n"
-"'Pilot Link Properties' capplet first."
-msgstr ""
-
-#: addressbook/conduit/address-conduit-control-applet.c:285
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:286
-#: calendar/conduits/todo/todo-conduit-control-applet.c:285
-msgid "Not connected to the gnome-pilot daemon"
-msgstr ""
-
-#: addressbook/conduit/address-conduit-control-applet.c:290
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:291
-#: calendar/conduits/todo/todo-conduit-control-applet.c:290
-#, fuzzy
-msgid ""
-"An error occured when trying to fetch\n"
-"pilot list from the gnome-pilot daemon"
-msgstr ""
-"Um excepção ocorreu enquanto se tentava carregar dados no componente com "
-"PersistStream"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:653
-#: calendar/conduits/calendar/calendar-conduit.c:729
-#: calendar/conduits/todo/todo-conduit.c:544
-msgid "Could not start wombat server"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:730
-#: calendar/conduits/todo/todo-conduit.c:545
-#, fuzzy
-msgid "Could not start wombat"
-msgstr "Não se consegui inicializar Bonobo"
-
-#: addressbook/conduit/address-conduit.c:686
-#: addressbook/conduit/address-conduit.c:689
-msgid "Could not read pilot's Address application block"
-msgstr ""
-
-#.
-#. * Translatable strings file generated by Glade.
-#. * Add this file to your project's POTFILES.in.
-#. * DO NOT compile it as part of your application.
-#.
-#: addressbook/contact-editor/e-contact-editor-strings.h:7
-#, fuzzy
-msgid "_Add"
-msgstr "Adicionar"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:8
-#: ui/evolution-contact-editor.xml:37
-#, fuzzy
-msgid "_Delete"
-msgstr "Apagar"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:9
-msgid "Phone Types"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:10
-#: addressbook/contact-editor/e-contact-editor-strings.h:12
-msgid "New phone type"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:11
-msgid "Add"
-msgstr "Adicionar"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:13
-#, fuzzy
-msgid "Contact Editor"
-msgstr "_Contacto"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:14
-#, fuzzy
-msgid "_Full Name..."
-msgstr "Nome completo:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:15
-msgid "File As:"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:16
-#, fuzzy
-msgid "Web page address:"
-msgstr "Endereço de correio:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:17
-msgid "Wants to receive _HTML mail"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:18
-msgid "_Business"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:19
-#, fuzzy
-msgid "_Home"
-msgstr "Casa"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:20
-msgid "Business _Fax"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:21
-#, fuzzy
-msgid "_Mobile"
-msgstr "Telemóvel"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:22
-#: addressbook/contact-editor/e-contact-editor.c:1336
-msgid "Primary Email"
-msgstr "Endereço principal de correio electrónico"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:23
-msgid "B_usiness"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:24
-msgid "_This is the mailing address"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:25
-#, fuzzy
-msgid "C_ontacts..."
-msgstr "_Contacto"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:26
-msgid "Ca_tegories..."
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:27
-msgid "_Job title:"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:28
-#, fuzzy
-msgid "_Company:"
-msgstr "Empresa"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:29
-#, fuzzy
-msgid "_Address..."
-msgstr "Endereço"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:30
-msgid "General"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:31
-msgid "_Department:"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:32
-msgid "_Office:"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:33
-msgid "_Profession:"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:34
-msgid "_Nickname:"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:35
-msgid "_Spouse:"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:36
-msgid "_Birthday:"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:37
-msgid "_Assistant's name:"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:38
-msgid "_Manager's Name:"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:39
-msgid "Anni_versary:"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:40
-#, fuzzy
-msgid "No_tes:"
-msgstr "_Nota"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:41
-msgid "Details"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1274
-#: addressbook/gui/widgets/e-addressbook-view.c:588
-msgid "Assistant"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1275
-#: addressbook/contact-editor/e-contact-editor.c:1379
-#: addressbook/gui/widgets/e-addressbook-view.c:568
-msgid "Business"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1276
-#: addressbook/gui/widgets/e-addressbook-view.c:575
-msgid "Business 2"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1277
-#: addressbook/gui/widgets/e-addressbook-view.c:573
-msgid "Business Fax"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1278
-msgid "Callback"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1279
-#: addressbook/gui/widgets/e-addressbook-view.c:572
-msgid "Car"
-msgstr "Carro"
-
-#: addressbook/contact-editor/e-contact-editor.c:1280
-msgid "Company"
-msgstr "Empresa"
-
-#: addressbook/contact-editor/e-contact-editor.c:1281
-#: addressbook/contact-editor/e-contact-editor.c:1380
-#: addressbook/gui/widgets/e-addressbook-view.c:569
-msgid "Home"
-msgstr "Casa"
-
-#: addressbook/contact-editor/e-contact-editor.c:1282
-#: addressbook/gui/widgets/e-addressbook-view.c:576
-msgid "Home 2"
-msgstr "Casa 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1283
-#: addressbook/gui/widgets/e-addressbook-view.c:574
-msgid "Home Fax"
-msgstr "Fax de casa"
-
-#: addressbook/contact-editor/e-contact-editor.c:1284
-#: addressbook/gui/widgets/e-addressbook-view.c:577
-msgid "ISDN"
-msgstr "RDIS"
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:571
-msgid "Mobile"
-msgstr "Telemóvel"
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/contact-editor/e-contact-editor.c:1381
-#: addressbook/gui/widgets/e-addressbook-view.c:578
-msgid "Other"
-msgstr "Outro"
-
-#: addressbook/contact-editor/e-contact-editor.c:1287
-msgid "Other Fax"
-msgstr "Outro Fax"
-
-#: addressbook/contact-editor/e-contact-editor.c:1288
-#: addressbook/gui/widgets/e-addressbook-view.c:579
-msgid "Pager"
-msgstr "Bip"
-
-#: addressbook/contact-editor/e-contact-editor.c:1289
-#: addressbook/gui/widgets/e-addressbook-view.c:567
-msgid "Primary"
-msgstr "Primário"
-
-#: addressbook/contact-editor/e-contact-editor.c:1290
-msgid "Radio"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1291
-msgid "Telex"
-msgstr "Telex"
-
-#: addressbook/contact-editor/e-contact-editor.c:1292
-msgid "TTY/TDD"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1337
-#: addressbook/gui/widgets/e-addressbook-view.c:580
-msgid "Email 2"
-msgstr "Correio electrónico 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1338
-#: addressbook/gui/widgets/e-addressbook-view.c:581
-msgid "Email 3"
-msgstr "Correio electrónico 3"
-
-#.
-#. * Translatable strings file generated by Glade.
-#. * Add this file to your project's POTFILES.in.
-#. * DO NOT compile it as part of your application.
-#.
-#: addressbook/contact-editor/fullname-strings.h:7
-#, fuzzy
-msgid "Check Full Name"
-msgstr "Nome completo:"
-
-#: addressbook/contact-editor/fullname-strings.h:8
-msgid ""
-"\n"
-"Mr.\n"
-"Mrs.\n"
-"Ms.\n"
-"Miss\n"
-"Dr.\n"
-msgstr ""
-
-#: addressbook/contact-editor/fullname-strings.h:15
-msgid ""
-"\n"
-"Sr.\n"
-"Jr.\n"
-"I\n"
-"II\n"
-"III\n"
-"Esq.\n"
-msgstr ""
-
-#: addressbook/contact-editor/fullname-strings.h:23
-#, fuzzy
-msgid "_First:"
-msgstr "_Pasta"
-
-#: addressbook/contact-editor/fullname-strings.h:24
-msgid "_Title:"
-msgstr ""
-
-#: addressbook/contact-editor/fullname-strings.h:25
-#, fuzzy
-msgid "_Middle:"
-msgstr "_Correio"
-
-#: addressbook/contact-editor/fullname-strings.h:26
-msgid "_Last:"
-msgstr ""
-
-#: addressbook/contact-editor/fullname-strings.h:27
-msgid "_Suffix:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:231
-msgid "As _Minicards"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:237
-msgid "As _Table"
-msgstr "Como _Tabela"
-
-#: addressbook/gui/component/addressbook.c:374
-#, c-format
-msgid "Enter password for %s"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:402
-msgid "Unable to open addressbook"
-msgstr "Impossível abrir o livro de endereços"
-
-#: addressbook/gui/component/addressbook.c:407
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or have tried\n"
-"to access an LDAP server and don't have LDAP support\n"
-"compiled in. If you've entered a URI, check the URI for\n"
-"correctness and reenter. If not, you probably have\n"
-"attempted to access an LDAP server. If you wish to be\n"
-"able to use LDAP, you'll need to download and install\n"
-"OpenLDAP and recompile and install Evolution.\n"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:530 mail/folder-browser.c:221
-msgid "Show All"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:532 mail/folder-browser.c:223
-#, fuzzy
-msgid "Advanced..."
-msgstr "Adicionar..."
-
-#: addressbook/gui/component/addressbook.c:562
-#, fuzzy
-msgid "Any field contains"
-msgstr "Uma pasta contendo tarefas"
-
-#: addressbook/gui/component/addressbook.c:563
-msgid "Name contains"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:564
-#, fuzzy
-msgid "Email contains"
-msgstr "Ícone_s pequenos"
-
-#: addressbook/gui/component/addressbook.c:707
-msgid "The URI that the Folder Browser will display"
-msgstr "O URI que o navegador de pastas mostrará"
-
-#: addressbook/gui/component/addressbook-storage.c:95
-#, fuzzy
-msgid "Other Contacts"
-msgstr "_Novo Contacto"
-
-#: addressbook/gui/component/addressbook-config.c:139
-#, fuzzy
-msgid "LDAP Server"
-msgstr "Servidor:"
-
-#: addressbook/gui/component/addressbook-config.c:141
-#, fuzzy
-msgid "File"
-msgstr "_Pasta"
-
-#: addressbook/gui/component/addressbook-config.c:144
-#, fuzzy
-msgid "Unknown addressbook type"
-msgstr "Impossível abrir o livro de endereços"
-
-#: addressbook/gui/component/addressbook-config.c:153
-msgid "None (anonymous mode)"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:155
-#: camel/providers/imap/camel-imap-store.c:249
-#: camel/providers/nntp/camel-nntp-store.c:293
-#: camel/providers/pop3/camel-pop3-store.c:146
-#, fuzzy
-msgid "Password"
-msgstr "Esquecer _Senhas"
-
-#: addressbook/gui/component/addressbook-config.c:157
-msgid "SASL"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:160
-msgid "Unknown auth type"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:169
-#, fuzzy
-msgid "Base"
-msgstr "Colar"
-
-#: addressbook/gui/component/addressbook-config.c:171
-msgid "One"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:173
-#, fuzzy
-msgid "Subtree"
-msgstr "Fontes"
-
-#: addressbook/gui/component/addressbook-config.c:176
-msgid "Unknown scope type"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:309
-msgid "Bind DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:311
-msgid "Remember this password"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:360
-#, fuzzy
-msgid "Host:"
-msgstr "Horas"
-
-#: addressbook/gui/component/addressbook-config.c:361
-#, fuzzy
-msgid "Port:"
-msgstr "Prioridade:"
-
-#: addressbook/gui/component/addressbook-config.c:364
-msgid "Root DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:384
-#, fuzzy
-msgid "Search Scope:"
-msgstr "Ano"
-
-#: addressbook/gui/component/addressbook-config.c:438
-msgid "Authentication:"
-msgstr "Autenticação"
-
-#: addressbook/gui/component/addressbook-config.c:455
-msgid "Path:"
-msgstr "Caminho"
-
-#: addressbook/gui/component/addressbook-config.c:460
-msgid "Create path if it doesn't exist."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:593
-#, fuzzy
-msgid "Edit Addressbook"
-msgstr "Impossível abrir o livro de endereços"
-
-#: addressbook/gui/component/addressbook-config.c:595
-#, fuzzy
-msgid "Add Addressbook"
-msgstr "Impossível abrir o livro de endereços"
-
-#: addressbook/gui/component/addressbook-config.c:611
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:616
-#, fuzzy
-msgid "Name:"
-msgstr "Nome"
-
-#: addressbook/gui/component/addressbook-config.c:617
-#, fuzzy
-msgid "Description:"
-msgstr "Nenhuma descrição"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:147
-#: mail/mail-search-dialogue.c:104
-#, fuzzy
-msgid "Search"
-msgstr "Ano"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:469
-#: addressbook/gui/widgets/e-minicard.c:374
-msgid "Save as VCard"
-msgstr "Gravar como VCard"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:565
-#, fuzzy
-msgid "Name"
-msgstr "Nome"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:566
-#, fuzzy
-msgid "Email"
-msgstr "Correio electrónico 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:570
-msgid "Organization"
-msgstr "Organização"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:582
-msgid "Web Site"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:583
-#, fuzzy
-msgid "Department"
-msgstr "Data"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:584
-#, fuzzy
-msgid "Office"
-msgstr "Fora do escritório"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:585
-#, fuzzy
-msgid "Title"
-msgstr "_Pasta"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:586
-msgid "Profession"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:587
-#, fuzzy
-msgid "Manager"
-msgstr "Bip"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:589
-#, fuzzy
-msgid "Nickname"
-msgstr "Nome"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:590
-#, fuzzy
-msgid "Spouse"
-msgstr "Fontes"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:591
-#, fuzzy
-msgid "Note"
-msgstr "Nenhuma"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:592
-msgid "Free-busy URL"
-msgstr ""
-
-#: addressbook/gui/widgets/e-minicard-control.c:280
-#, fuzzy
-msgid "Save in addressbook"
-msgstr "Impossível abrir o livro de endereços"
-
-#: addressbook/gui/widgets/e-minicard-view.c:129
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:127
-#, fuzzy
-msgid "Evolution Calendar Conduit"
-msgstr "Atalho para _barra do Evolution"
-
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:130
-msgid "Configuration utility for the evolution calendar conduit.\n"
-msgstr ""
-
-#: calendar/conduits/calendar/calendar-conduit.c:685
-#: calendar/conduits/todo/todo-conduit.c:500
-msgid "Error while communicating with calendar server"
-msgstr ""
-
-#: calendar/conduits/calendar/calendar-conduit.c:784
-#: calendar/conduits/calendar/calendar-conduit.c:787
-msgid "Could not read pilot's Calendar application block"
-msgstr ""
-
-#: calendar/conduits/todo/todo-conduit-control-applet.c:127
-#, fuzzy
-msgid "Evolution ToDo Conduit"
-msgstr "Atalho para _barra do Evolution"
-
-#: calendar/conduits/todo/todo-conduit-control-applet.c:130
-msgid "Configuration utility for the evolution todo conduit.\n"
-msgstr ""
-
-#: calendar/conduits/todo/todo-conduit.c:599
-#: calendar/conduits/todo/todo-conduit.c:602
-msgid "Could not read pilot's ToDo application block"
-msgstr ""
-
-#: calendar/gui/alarm-notify.c:585 calendar/gui/alarm-notify.c:884
-#: calendar/gui/alarm-notify.c:940
-msgid "Reminder of your appointment at "
-msgstr ""
-
-#: calendar/gui/alarm-notify.c:876
-#, fuzzy
-msgid "Snooze"
-msgstr "Tamanho"
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify.c:889 calendar/gui/alarm-notify.c:944
-#: mail/mail-search-dialogue.c:104
-msgid "Ok"
-msgstr "Ok"
-
-#: calendar/gui/calendar-commands.c:245
-msgid "File not found"
-msgstr "Ficheiro não encontrado"
-
-#: calendar/gui/calendar-commands.c:269
-msgid "Open calendar"
-msgstr "Abrir calendário"
-
-#: calendar/gui/calendar-commands.c:311
-msgid "Save calendar"
-msgstr "Gravar calendário"
-
-#: calendar/gui/calendar-commands.c:448
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-
-#. strftime format of a weekday and a date.
-#: calendar/gui/calendar-model.c:332
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:467
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2499
-msgid "%a %m/%d/%Y"
-msgstr ""
-
-#. strftime format of a weekday, a date and a time,
-#. in 24-hour format.
-#: calendar/gui/calendar-model.c:336 calendar/gui/calendar-model.c:766
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr ""
-
-#. strftime format of a weekday, a date and a time,
-#. in 12-hour format.
-#: calendar/gui/calendar-model.c:340 calendar/gui/calendar-model.c:769
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:374
-msgid "Public"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:377
-#, fuzzy
-msgid "Private"
-msgstr "Imprimir"
-
-#: calendar/gui/calendar-model.c:380
-msgid "Confidential"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:383 calendar/gui/calendar-model.c:551
-msgid "Unknown"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:471
-msgid "N"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:471
-#, fuzzy
-msgid "S"
-msgstr "Do"
-
-#: calendar/gui/calendar-model.c:473
-msgid "E"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:473
-#, fuzzy
-msgid "W"
-msgstr "Qa"
-
-#: calendar/gui/calendar-model.c:545
-#, fuzzy
-msgid "Transparent"
-msgstr "Transportes"
-
-#: calendar/gui/calendar-model.c:548
-msgid "Opaque"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:774
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-
-#. strptime format for a date.
-#: calendar/gui/calendar-model.c:875 calendar/gui/calendar-model.c:923
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:471
-#: widgets/misc/e-dateedit.c:1273 widgets/misc/e-dateedit.c:1454
-msgid "%m/%d/%Y"
-msgstr ""
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: calendar/gui/calendar-model.c:893
-msgid "%I:%M:%S %p%n"
-msgstr ""
-
-#. strptime format for a time of day, in 24-hour format.
-#: calendar/gui/calendar-model.c:896
-msgid "%H:%M:%S%n"
-msgstr ""
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: calendar/gui/calendar-model.c:900
-msgid "%I:%M %p%n"
-msgstr ""
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: calendar/gui/calendar-model.c:903
-msgid "%H:%M%n"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1023
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1063
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1103
-msgid "The priority must be between 1 and 9, inclusive"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:97
-msgid "%A, %e %B %Y"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:138 calendar/gui/calendar-summary.c:144
-msgid "%I:%M%p"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:302
-msgid "<b>Error loading calendar</b>"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:314
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:484
-#, fuzzy
-msgid "Display"
-msgstr "Dia"
-
-#: calendar/gui/calendar-summary.c:489
-#, fuzzy
-msgid "Show appointments"
-msgstr "Compromisso - %s"
-
-#: calendar/gui/calendar-summary.c:497
-#, fuzzy
-msgid "Show tasks"
-msgstr "Ver _anexos"
-
-#: calendar/gui/calendar-summary.c:583
-#, fuzzy
-msgid "Loading Calendar"
-msgstr "Imprimir calendário"
-
-#: calendar/gui/control-factory.c:127
-msgid "The URI that the calendar will display"
-msgstr "O URI que o calendário mostrará"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:184
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:191
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:202
-#, fuzzy
-msgid "No summary available."
-msgstr "Nenhum sumário"
-
-#: calendar/gui/dialogs/delete-comp.c:63
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:66
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:72
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:75
-msgid "Are you sure you want to delete this untitled task?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:81
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr ""
-
-#: calendar/gui/dialogs/delete-comp.c:84
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor.c:690
-msgid "Edit Task"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor.c:696 calendar/gui/event-editor.c:337
-msgid "No summary"
-msgstr "Nenhum sumário"
-
-#: calendar/gui/dialogs/task-editor.c:702 calendar/gui/event-editor.c:343
-#, c-format
-msgid "Appointment - %s"
-msgstr "Compromisso - %s"
-
-#: calendar/gui/dialogs/task-editor.c:705 calendar/gui/event-editor.c:346
-#, c-format
-msgid "Task - %s"
-msgstr "Tarefa - %s"
-
-#: calendar/gui/dialogs/task-editor.c:708 calendar/gui/event-editor.c:349
-#, fuzzy, c-format
-msgid "Journal entry - %s"
-msgstr "_Entrada diária?"
-
-#: calendar/gui/dialogs/task-editor.c:1293 calendar/gui/event-editor.c:3270
-msgid "Do you want to save changes?"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:154
-msgid "Categories"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:155
-msgid "Classification"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:156
-msgid "Completion Date"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:157
-#, fuzzy
-msgid "End Date"
-msgstr "Hora de _fim de _encontro"
-
-#: calendar/gui/e-calendar-table.c:158
-#, fuzzy
-msgid "Start Date"
-msgstr "Hora de ín_icio de encontro"
-
-#: calendar/gui/e-calendar-table.c:159
-msgid "Due Date"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "Geographical Position"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:161
-msgid "Precent complete"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:162
-msgid "Priority"
-msgstr "Prioridade"
-
-#: calendar/gui/e-calendar-table.c:163
-#, fuzzy
-msgid "Summary"
-msgstr "Sumário"
-
-#: calendar/gui/e-calendar-table.c:164
-#, fuzzy
-msgid "Transparency"
-msgstr "Transportes"
-
-#: calendar/gui/e-calendar-table.c:165
-msgid "URL"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:166
-#, fuzzy
-msgid "Alarms"
-msgstr "Alarmes"
-
-#: calendar/gui/e-calendar-table.c:397
-#, fuzzy
-msgid "Open..."
-msgstr "_Abrir"
-
-#: calendar/gui/e-calendar-table.c:398
-msgid "Open the task"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:400
-msgid "Mark Complete"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:401
-msgid "Mark the task complete"
-msgstr ""
-
-#: calendar/gui/e-calendar-table.c:403 filter/libfilter-i18n.h:7
-#: mail/folder-browser.c:673 mail/mail-view.c:150
-msgid "Delete"
-msgstr "Apagar"
-
-#: calendar/gui/e-calendar-table.c:404
-#, fuzzy
-msgid "Delete the task"
-msgstr "Apagar este item"
-
-#: calendar/gui/e-day-view-time-item.c:517
-#, c-format
-msgid "%02i minute divisions"
-msgstr ""
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:271 calendar/gui/e-day-view.c:1271
-#: calendar/gui/e-week-view-main-item.c:321
-msgid "%A %d %B"
-msgstr ""
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:275 calendar/gui/e-day-view.c:1285
-#: calendar/gui/e-week-view-main-item.c:330
-msgid "%a %d %b"
-msgstr ""
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:279 calendar/gui/e-day-view.c:1298
-#: calendar/gui/e-week-view-main-item.c:344
-msgid "%d %b"
-msgstr ""
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:553 calendar/gui/e-week-view.c:287
-#: calendar/gui/print.c:610
-msgid "am"
-msgstr "am"
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:556 calendar/gui/e-week-view.c:290
-#: calendar/gui/print.c:609
-msgid "pm"
-msgstr "pm"
-
-#: calendar/gui/e-day-view.c:3008 calendar/gui/e-day-view.c:3015
-#: calendar/gui/e-day-view.c:3024 calendar/gui/e-week-view.c:3211
-#: calendar/gui/e-week-view.c:3218 calendar/gui/e-week-view.c:3227
-msgid "New appointment..."
-msgstr "Novo compromisso"
-
-#: calendar/gui/e-day-view.c:3012 calendar/gui/e-day-view.c:3019
-#: calendar/gui/e-week-view.c:3215 calendar/gui/e-week-view.c:3222
-msgid "Edit this appointment..."
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3013 calendar/gui/e-week-view.c:3216
-msgid "Delete this appointment"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3020 calendar/gui/e-week-view.c:3223
-msgid "Make this appointment movable"
-msgstr ""
-
-#: calendar/gui/e-day-view.c:3021 calendar/gui/e-week-view.c:3224
-msgid "Delete this occurrence"
-msgstr "Apagar esta ocurrência"
-
-#: calendar/gui/e-day-view.c:3022 calendar/gui/e-week-view.c:3225
-msgid "Delete all occurrences"
-msgstr "Apagar todas as ocurrências"
-
-#: calendar/gui/e-tasks.c:140 calendar/gui/e-tasks.c:457
-#: calendar/gui/e-tasks.c:492
-msgid "All"
-msgstr ""
-
-#: calendar/gui/e-tasks.c:146
-msgid "Category:"
-msgstr ""
-
-#: calendar/gui/e-tasks.c:285
-#, fuzzy, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "Criar um novo calendário"
-
-#: calendar/gui/e-tasks.c:297
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr ""
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:338
-msgid "%d %B"
-msgstr ""
-
-#: calendar/gui/event-editor.c:331
-msgid "Edit Appointment"
-msgstr "_Editar Compromisso"
-
-#: calendar/gui/event-editor.c:409
-#, fuzzy
-msgid "on"
-msgstr "Seg"
-
-#: calendar/gui/event-editor.c:434 filter/filter-datespec.c:65
-#, fuzzy
-msgid "day"
-msgstr "Hoje"
-
-#: calendar/gui/event-editor.c:435
-msgid "Monday"
-msgstr "Segunda-feira"
-
-#: calendar/gui/event-editor.c:436
-#, fuzzy
-msgid "Tuesday"
-msgstr "Hoje"
-
-#: calendar/gui/event-editor.c:437
-msgid "Wednesday"
-msgstr ""
-
-#: calendar/gui/event-editor.c:438
-#, fuzzy
-msgid "Thursday"
-msgstr "Hoje"
-
-#: calendar/gui/event-editor.c:439
-#, fuzzy
-msgid "Friday"
-msgstr "Sex"
-
-#: calendar/gui/event-editor.c:440
-#, fuzzy
-msgid "Saturday"
-msgstr "Domingo"
-
-#: calendar/gui/event-editor.c:441
-msgid "Sunday"
-msgstr "Domingo"
-
-#: calendar/gui/event-editor.c:561
-#, fuzzy
-msgid "on the"
-msgstr "Mês"
-
-#: calendar/gui/event-editor.c:568
-#, fuzzy
-msgid "th"
-msgstr "h"
-
-#: calendar/gui/event-editor.c:722
-#, fuzzy
-msgid "occurrences"
-msgstr "Apagar todas as ocurrências"
-
-#: calendar/gui/event-editor.c:839
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr ""
-
-#: calendar/gui/event-editor.c:3093 calendar/gui/print.c:1090
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1093
-msgid "%a %b %d %Y"
-msgstr ""
-
-#: calendar/gui/gnome-cal.c:696
-#, fuzzy, c-format
-msgid "Could not open the folder in `%s'"
-msgstr "Criar um novo calendário"
-
-#: calendar/gui/gnome-cal.c:707
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr ""
-
-#. Initialize by default to three-letter day names
-#: calendar/gui/gnome-month-item.c:736
-msgid "Sun"
-msgstr "Dom"
-
-#: calendar/gui/gnome-month-item.c:737
-msgid "Mon"
-msgstr "Seg"
-
-#: calendar/gui/gnome-month-item.c:738
-msgid "Tue"
-msgstr "Ter"
-
-#: calendar/gui/gnome-month-item.c:739
-msgid "Wed"
-msgstr "Qua"
-
-#: calendar/gui/gnome-month-item.c:740
-msgid "Thu"
-msgstr "Qui"
-
-#: calendar/gui/gnome-month-item.c:741
-msgid "Fri"
-msgstr "Sex"
-
-#: calendar/gui/gnome-month-item.c:742
-msgid "Sat"
-msgstr "Sáb"
-
-#: calendar/gui/main.c:50
-#, fuzzy
-msgid "Could not initialize GNOME"
-msgstr "Não se consegui inicializar Bonobo"
-
-#: calendar/gui/print.c:293
-msgid "1st"
-msgstr ""
-
-#: calendar/gui/print.c:293
-msgid "2nd"
-msgstr ""
-
-#: calendar/gui/print.c:293
-msgid "3rd"
-msgstr ""
-
-#: calendar/gui/print.c:293
-msgid "4th"
-msgstr ""
-
-#: calendar/gui/print.c:293
-msgid "5th"
-msgstr ""
-
-#: calendar/gui/print.c:294
-msgid "6th"
-msgstr ""
-
-#: calendar/gui/print.c:294
-msgid "7th"
-msgstr ""
-
-#: calendar/gui/print.c:294
-msgid "8th"
-msgstr ""
-
-#: calendar/gui/print.c:294
-msgid "9th"
-msgstr ""
-
-#: calendar/gui/print.c:294
-msgid "10th"
-msgstr ""
-
-#: calendar/gui/print.c:295
-msgid "11th"
-msgstr ""
-
-#: calendar/gui/print.c:295
-msgid "12th"
-msgstr ""
-
-#: calendar/gui/print.c:295
-msgid "13th"
-msgstr ""
-
-#: calendar/gui/print.c:295
-msgid "14th"
-msgstr ""
-
-#: calendar/gui/print.c:295
-msgid "15th"
-msgstr ""
-
-#: calendar/gui/print.c:296
-msgid "16th"
-msgstr ""
-
-#: calendar/gui/print.c:296
-msgid "17th"
-msgstr ""
-
-#: calendar/gui/print.c:296
-msgid "18th"
-msgstr ""
-
-#: calendar/gui/print.c:296
-msgid "19th"
-msgstr ""
-
-#: calendar/gui/print.c:296
-msgid "20th"
-msgstr ""
-
-#: calendar/gui/print.c:297
-msgid "21st"
-msgstr ""
-
-#: calendar/gui/print.c:297
-msgid "22nd"
-msgstr ""
-
-#: calendar/gui/print.c:297
-msgid "23rd"
-msgstr ""
-
-#: calendar/gui/print.c:297
-msgid "24th"
-msgstr ""
-
-#: calendar/gui/print.c:297
-msgid "25th"
-msgstr ""
-
-#: calendar/gui/print.c:298
-msgid "26th"
-msgstr "26º"
-
-#: calendar/gui/print.c:298
-msgid "27th"
-msgstr "27º"
-
-#: calendar/gui/print.c:298
-msgid "28th"
-msgstr "28º"
-
-#: calendar/gui/print.c:298
-msgid "29th"
-msgstr "29º"
-
-#: calendar/gui/print.c:298
-msgid "30th"
-msgstr "30º"
-
-#: calendar/gui/print.c:299
-msgid "31st"
-msgstr "31º"
-
-#: calendar/gui/print.c:355
-msgid "Su"
-msgstr "Do"
-
-#: calendar/gui/print.c:355
-msgid "Mo"
-msgstr "Sg"
-
-#: calendar/gui/print.c:355
-msgid "Tu"
-msgstr "Te"
-
-#: calendar/gui/print.c:355
-msgid "We"
-msgstr "Qa"
-
-#: calendar/gui/print.c:355
-msgid "Th"
-msgstr "Qi"
-
-#: calendar/gui/print.c:355
-msgid "Fr"
-msgstr "Sx"
-
-#: calendar/gui/print.c:355
-msgid "Sa"
-msgstr "Sá"
-
-#: calendar/gui/print.c:941
-#, fuzzy
-msgid "Tasks"
-msgstr "_Tarefa"
-
-#. Day
-#: calendar/gui/print.c:1071
-msgid "Current day (%a %b %d %Y)"
-msgstr ""
-
-#: calendar/gui/print.c:1085 calendar/gui/print.c:1089
-msgid "%a %b %d"
-msgstr ""
-
-#: calendar/gui/print.c:1086
-msgid "%a %d %Y"
-msgstr ""
-
-#: calendar/gui/print.c:1097
-#, fuzzy, c-format
-msgid "Current week (%s - %s)"
-msgstr "Ano corrente (%Y)"
-
-#. Month
-#: calendar/gui/print.c:1105
-#, fuzzy
-msgid "Current month (%b %Y)"
-msgstr "Mês corrente (%a %Y)"
-
-#. Year
-#: calendar/gui/print.c:1112
-msgid "Current year (%Y)"
-msgstr "Ano corrente (%Y)"
-
-#: calendar/gui/print.c:1149
-msgid "Print Calendar"
-msgstr "Imprimir calendário"
-
-#: calendar/gui/print.c:1314 mail/mail-callbacks.c:1068
-msgid "Print Preview"
-msgstr "Prever impressão"
-
-#: calendar/gui/tasks-control.c:105
-#, fuzzy
-msgid "The URI of the tasks folder to display"
-msgstr "O URI que o calendário mostrará"
-
-#: calendar/gui/weekday-picker.c:311 calendar/gui/weekday-picker.c:406
-msgid "SMTWTFS"
-msgstr ""
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:90 camel/camel-lock.c:109 camel/camel-movemail.c:136
-#: camel/camel-movemail.c:183
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr ""
-
-#: camel/camel-lock.c:149 camel/camel-movemail.c:217
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr ""
-
-#: camel/camel-lock.c:199
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr ""
-
-#: camel/camel-lock.c:253
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr ""
-
-#: camel/camel-movemail.c:99
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:146
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:156
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:197
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:243
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:254
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:272
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:304
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:316
-#, c-format
-msgid "Could not fork: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:354
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:355
-msgid "(Unknown error)"
-msgstr ""
-
-#: camel/camel-provider.c:133
-#, c-format
-msgid "Could not load %s: %s"
-msgstr ""
-
-#: camel/camel-provider.c:141
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr ""
-
-#: camel/camel-remote-store.c:184
-#, c-format
-msgid "%s server %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:188
-#, c-format
-msgid "%s service for %s on %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:318
-msgid "Connection cancelled"
-msgstr ""
-
-#: camel/camel-remote-store.c:321 camel/camel-remote-store.c:334
-#: camel/providers/smtp/camel-smtp-transport.c:160
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:322 camel/camel-remote-store.c:335
-msgid "(unknown host)"
-msgstr ""
-
-#: camel/camel-remote-store.c:426 camel/camel-remote-store.c:488
-#: camel/camel-remote-store.c:556
-#: camel/providers/imap/camel-imap-command.c:289
-#, fuzzy
-msgid "Operation cancelled"
-msgstr "Abrir calendário"
-
-#: camel/camel-service.c:137
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr ""
-
-#: camel/camel-service.c:146
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr ""
-
-#: camel/camel-service.c:155
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr ""
-
-#: camel/camel-service.c:520
-#, c-format
-msgid "No such host %s."
-msgstr ""
-
-#: camel/camel-service.c:523
-#, c-format
-msgid "Temporarily unable to look up hostname %s."
-msgstr ""
-
-#: camel/camel-session.c:299
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr ""
-
-#: camel/camel-session.c:390
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-url.c:75
-#, c-format
-msgid "URL string `%s' contains no protocol"
-msgstr ""
-
-#: camel/camel-url.c:90
-#, c-format
-msgid "URL string `%s' contains an invalid protocol"
-msgstr ""
-
-#: camel/camel-url.c:150
-#, c-format
-msgid "Port number in URL `%s' is non-numeric"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-auth.c:133
-#, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-auth.c:205
-msgid "Bad authentication response from server."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:234
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:242
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:243 shell/e-storage.c:411
-msgid "Unknown error"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:297
-msgid "Server response ended too soon."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:433
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:469
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-folder.c:198
-#, c-format
-msgid "Could not load summary for %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-folder.c:697
-#: camel/providers/imap/camel-imap-folder.c:859
-msgid "Could not find message body in FETCH response."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:39
-msgid "IMAPv4"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:41
-msgid "For reading and storing mail on IMAP servers."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:251
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:260
-msgid "Kerberos 4"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:262
-msgid ""
-"This option will connect to the IMAP server using Kerberos 4 authentication."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:361
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:389
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:645
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:36
-msgid "MH-format mail directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:37
-msgid "For storing local mail in MH-like mail directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:47
-msgid "Standard Unix mailbox file"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:48
-msgid "For storing local mail in standard mbox format"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:58
-msgid "Qmail maildir-format mail files"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "For storing local mail in qmail maildir directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:122
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:129
-#, c-format
-msgid "Store root %s is not a regular directory"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:137
-#: camel/providers/local/camel-local-store.c:153
-#, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:168
-msgid "Local stores do not have a root folder"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:176
-msgid "Local stores do not have a default folder"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:186
-msgid "Local folders may not be nested."
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:200
-#, c-format
-msgid "Local mail file %s"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:256
-#, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:297
-#, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:306
-#, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-folder.c:148
-#: camel/providers/local/camel-maildir-folder.c:156
-#: camel/providers/local/camel-maildir-folder.c:167
-#, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-folder.c:195
-#: camel/providers/local/camel-maildir-folder.c:207
-#: camel/providers/local/camel-maildir-folder.c:215
-#: camel/providers/local/camel-mbox-folder.c:317
-#: camel/providers/local/camel-mh-folder.c:183
-#: camel/providers/local/camel-mh-folder.c:192
-#: camel/providers/local/camel-mh-folder.c:200
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-folder.c:195
-#: camel/providers/local/camel-mbox-folder.c:317
-#: camel/providers/local/camel-mh-folder.c:183
-#, fuzzy
-msgid "No such message"
-msgstr "Enviar a mensagem"
-
-#: camel/providers/local/camel-maildir-folder.c:216
-#: camel/providers/local/camel-mh-folder.c:201
-msgid "Invalid message contents"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:102
-#: camel/providers/local/camel-mh-store.c:96
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:106
-#: camel/providers/local/camel-mbox-store.c:108
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:113
-#: camel/providers/local/camel-mh-store.c:109
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:128
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:157
-#: camel/providers/local/camel-maildir-store.c:194
-#: camel/providers/local/camel-mh-store.c:133
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:158
-msgid "not a maildir directory"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:201
-#, fuzzy, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr "Não consigo abrir a localização: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:257
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:333
-#: camel/providers/local/camel-mbox-folder.c:365
-#: camel/providers/local/camel-mbox-folder.c:378
-#, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:366
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr ""
-
-#: camel/providers/local/camel-mbox-folder.c:379
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:101
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:117
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:126
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:145
-#: camel/providers/local/camel-mbox-store.c:168
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:160
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:234
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:268
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:343
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:477
-#: camel/providers/local/camel-mbox-summary.c:668
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:493
-#, fuzzy, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr "Não consigo abrir a localização: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:514
-#: camel/providers/local/camel-mbox-summary.c:522
-#: camel/providers/local/camel-mbox-summary.c:701
-#: camel/providers/local/camel-mbox-summary.c:709
-msgid "Summary and folder mismatch, even after a sync"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:565
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:582
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:600
-#: camel/providers/local/camel-mbox-summary.c:759
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:609
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:620
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:830
-#, c-format
-msgid "Unknown error: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mh-folder.c:147
-#: camel/providers/local/camel-mh-folder.c:155
-#, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mh-store.c:116
-#, c-format
-msgid "`%s' is not a directory."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:41
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:62
-msgid "Server rejected username"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:68
-msgid "Failed to send username to server"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-auth.c:77
-msgid "Server rejected username/password"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, fuzzy, c-format
-msgid "Message %s not found."
-msgstr "Ficheiro não encontrado"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-provider.c:38
-msgid "USENET news"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-provider.c:40
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:226
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:288
-#, c-format
-msgid "USENET News via %s"
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:295
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:327
-#: camel/providers/nntp/camel-nntp-store.c:490
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:180
-msgid "Could not open folder: message listing was incomplete."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:274
-#, c-format
-msgid "No message with uid %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:288
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:34
-msgid "POP"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:36
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:148
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:158
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:170
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:215
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:335
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:375
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:394
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:397
-#: camel/providers/pop3/camel-pop3-store.c:434
-msgid "(Unknown)"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:424
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:432
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:541
-#, c-format
-msgid "No such folder `%s'."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:34
-#, fuzzy
-msgid "Sendmail"
-msgstr "Enviar"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:36
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:105
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:122
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:148
-#, fuzzy, c-format
-msgid "Could not send message: %s"
-msgstr "Criar uma nova mensagem"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:161
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:168
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:173
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:220
-msgid "sendmail"
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:222
-msgid "Mail delivery via the sendmail program"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-provider.c:36
-msgid "For delivering mail by connecting to a remote mailhub using SMTP."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:185
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:279
-#, fuzzy
-msgid "No authentication required"
-msgstr "Autenticação"
-
-#: camel/providers/smtp/camel-smtp-transport.c:281
-msgid ""
-"This option will connect to the SMTP server without using any kind of "
-"authentication. This should be fine for connecting to most SMTP servers."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:290
-#: camel/providers/smtp/camel-smtp-transport.c:295
-msgid "CRAM-MD5"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:292
-msgid ""
-"This option will connect to the SMTP server using CRAM-MD5 authentication."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:320
-#, c-format
-msgid "SMTP server %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:322
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:347
-msgid "Cannot send message: sender address not defined."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:354
-msgid "Cannot send message: sender address not valid."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:368
-msgid "Cannot send message: no recipients defined."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:462
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:478
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:517
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:533
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:558
-#, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:574
-msgid "RCPT TO response error: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:604
-#, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:620
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:635
-#: camel/providers/smtp/camel-smtp-transport.c:653
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:669
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:693
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:709
-#, c-format
-msgid "RSET response error: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:732
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:748
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/vee/camel-vee-provider.c:30
-msgid "Virtual folder email provider"
-msgstr ""
-
-#: camel/providers/vee/camel-vee-provider.c:32
-msgid "For reading mail as a query of another set of folders"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:87
-msgid "1 byte"
-msgstr "1 byte"
-
-#: composer/e-msg-composer-attachment-bar.c:89
-#, c-format
-msgid "%u bytes"
-msgstr "%u bytes"
-
-#: composer/e-msg-composer-attachment-bar.c:96
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fK"
-
-#: composer/e-msg-composer-attachment-bar.c:100
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fM"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fG"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:324 mail/mail-display.c:155
-#, fuzzy
-msgid "attachment"
-msgstr "Anexo"
-
-#: composer/e-msg-composer-attachment-bar.c:413
-msgid "Attach a file"
-msgstr "Anexar um ficheiro"
-
-#: composer/e-msg-composer-attachment-bar.c:460 shell/e-shortcuts-view.c:254
-#: shell/e-shortcuts-view.c:377
-msgid "Remove"
-msgstr "Remover"
-
-#: composer/e-msg-composer-attachment-bar.c:461
-msgid "Remove selected items from the attachment list"
-msgstr "Remover items seleccionados da lista de anexos"
-
-#: composer/e-msg-composer-attachment-bar.c:492
-msgid "Add attachment..."
-msgstr "Adicionar anexo..."
-
-#: composer/e-msg-composer-attachment-bar.c:493
-msgid "Attach a file to the message"
-msgstr "Anexar um ficheiro à mensagem"
-
-#: composer/e-msg-composer-hdrs.c:147 composer/e-msg-composer-hdrs.c:312
-#: mail/mail-format.c:624
-#, fuzzy
-msgid "From:"
-msgstr "De"
-
-#: composer/e-msg-composer-hdrs.c:257
-msgid "Click here for the address book"
-msgstr "Pressione aqui para o livro de endereços"
-
-#: composer/e-msg-composer-hdrs.c:313
-#, fuzzy
-msgid "Enter the identity you wish to send this message from"
-msgstr "Introduza os receptores da mensagem"
-
-#: composer/e-msg-composer-hdrs.c:317 mail/mail-format.c:628
-msgid "To:"
-msgstr "Para:"
-
-#: composer/e-msg-composer-hdrs.c:318
-msgid "Enter the recipients of the message"
-msgstr "Introduza os receptores da mensagem"
-
-#: composer/e-msg-composer-hdrs.c:322 mail/mail-format.c:630
-msgid "Cc:"
-msgstr "Cc:"
-
-#: composer/e-msg-composer-hdrs.c:323
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "Entre os endereços que irão receber uma cópia da mensagem"
-
-#: composer/e-msg-composer-hdrs.c:328
-msgid "Bcc:"
-msgstr "Bcc:"
-
-#: composer/e-msg-composer-hdrs.c:329
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"Entre os endereços que irão receber uma cópia da mensagem sem conhecimento "
-"do receptor"
-
-#: composer/e-msg-composer-hdrs.c:335 mail/mail-format.c:632
-msgid "Subject:"
-msgstr "Assunto:"
-
-#: composer/e-msg-composer-hdrs.c:336
-msgid "Enter the subject of the mail"
-msgstr "Introduza o assunto da carta"
-
-#: composer/e-msg-composer.c:430
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-
-#: composer/e-msg-composer.c:598
-#, fuzzy
-msgid "Save as..."
-msgstr "Gravar como VCard"
-
-#: composer/e-msg-composer.c:609
-#, fuzzy, c-format
-msgid "Error saving file: %s"
-msgstr "Erro a gravar os atalhos."
-
-#: composer/e-msg-composer.c:629
-#, c-format
-msgid "Error loading file: %s"
-msgstr ""
-
-#: composer/e-msg-composer.c:651
-#, fuzzy
-msgid "Saving changes to message..."
-msgstr "Enviar uma nova mensagem"
-
-#: composer/e-msg-composer.c:653
-#, fuzzy
-msgid "Save changes to message..."
-msgstr "Enviar uma nova mensagem"
-
-#: composer/e-msg-composer.c:694
-#, c-format
-msgid "Error saving composition to 'Drafts': %s"
-msgstr ""
-
-#: composer/e-msg-composer.c:752 shell/e-shell-view-menu.c:170
-msgid "Evolution"
-msgstr "Evolution"
-
-#: composer/e-msg-composer.c:758
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-
-#: composer/e-msg-composer.c:783
-msgid "Open file"
-msgstr "Abrir ficheiro"
-
-#: composer/e-msg-composer.c:909
-msgid "That file does not exist."
-msgstr ""
-
-#: composer/e-msg-composer.c:919
-msgid "That is not a regular file."
-msgstr ""
-
-#: composer/e-msg-composer.c:929
-msgid "That file exists but is not readable."
-msgstr ""
-
-#: composer/e-msg-composer.c:939
-msgid "That file appeared accesible but open(2) failed."
-msgstr ""
-
-#: composer/e-msg-composer.c:961
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-
-#: composer/e-msg-composer.c:982
-msgid "An error occurred while reading the file."
-msgstr ""
-
-#: composer/e-msg-composer.c:1362
-msgid "Compose a message"
-msgstr "Criar uma nova mensagem"
-
-#: composer/e-msg-composer.c:1439
-msgid "Could not create composer window."
-msgstr ""
-
-#: composer/evolution-composer.c:346
-#, fuzzy
-msgid "Cannot initialize Evolution's composer."
-msgstr "Não consigo inicializar o componente de mail do Evolution."
-
-#: filter/filter-datespec.c:62
-#, fuzzy
-msgid "year"
-msgstr "Ano"
-
-#: filter/filter-datespec.c:62
-#, fuzzy
-msgid "years"
-msgstr "Ano"
-
-#: filter/filter-datespec.c:63
-#, fuzzy
-msgid "month"
-msgstr "Mês"
-
-#: filter/filter-datespec.c:63
-#, fuzzy
-msgid "months"
-msgstr "Mês"
-
-#: filter/filter-datespec.c:64
-#, fuzzy
-msgid "week"
-msgstr "Semana"
-
-#: filter/filter-datespec.c:64
-#, fuzzy
-msgid "weeks"
-msgstr "Semanas"
-
-#: filter/filter-datespec.c:65
-#, fuzzy
-msgid "days"
-msgstr "DiasRascunhos"
-
-#: filter/filter-datespec.c:66
-#, fuzzy
-msgid "hour"
-msgstr "Hora"
-
-#: filter/filter-datespec.c:66
-#, fuzzy
-msgid "hours"
-msgstr "Horas"
-
-#: filter/filter-datespec.c:67
-#, fuzzy
-msgid "minute"
-msgstr "Minuto"
-
-#: filter/filter-datespec.c:67
-#, fuzzy
-msgid "minutes"
-msgstr "Minutos"
-
-#: filter/filter-datespec.c:68
-#, fuzzy
-msgid "second"
-msgstr " segundos"
-
-#: filter/filter-datespec.c:68
-#, fuzzy
-msgid "seconds"
-msgstr " segundos"
-
-#: filter/filter-datespec.c:183
-msgid "Oops. You have forgotten to choose a date."
-msgstr ""
-
-#: filter/filter-datespec.c:185
-msgid "Oops. You have chosen an invalid date."
-msgstr ""
-
-#: filter/filter-datespec.c:259
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-
-#: filter/filter-datespec.c:282
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-
-#: filter/filter-datespec.c:322
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:357
-msgid "the current time"
-msgstr ""
-
-#: filter/filter-datespec.c:357
-msgid "a time you specify"
-msgstr ""
-
-#: filter/filter-datespec.c:358
-msgid "a time relative to the current time"
-msgstr ""
-
-#. The label
-#: filter/filter-datespec.c:416
-msgid "Compare against"
-msgstr ""
-
-#: filter/filter-datespec.c:533 filter/filter-datespec.c:693
-msgid "now"
-msgstr ""
-
-#: filter/filter-datespec.c:690
-msgid "<click here to select a date>"
-msgstr ""
-
-#: filter/filter-editor.c:160 mail/mail-autofilter.c:286
-#: mail/mail-autofilter.c:335
-msgid "Add Filter Rule"
-msgstr ""
-
-#: filter/filter-editor.c:233
-msgid "Edit Filter Rule"
-msgstr ""
-
-#: filter/filter-editor.c:433
-msgid "incoming"
-msgstr ""
-
-#. "demand",
-#: filter/filter-editor.c:435
-msgid "outgoing"
-msgstr ""
-
-#: filter/filter-editor.c:456
-msgid "Edit Filters"
-msgstr ""
-
-#. and now for the action area
-#: filter/filter-filter.c:401
-#, fuzzy
-msgid "Then"
-msgstr "Qi"
-
-#: filter/filter-filter.c:414
-#, fuzzy
-msgid "Add action"
-msgstr "_Acções"
-
-#: filter/filter-filter.c:420
-#, fuzzy
-msgid "Remove action"
-msgstr "Remover grupo"
-
-#: filter/filter-folder.c:143
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-
-#: filter/filter-folder.c:218 filter/vfolder-rule.c:271
-#, fuzzy
-msgid "Select Folder"
-msgstr "_Nova pasta"
-
-#: filter/filter-folder.c:243
-msgid "Enter folder URI"
-msgstr ""
-
-#: filter/filter-folder.c:289
-msgid "<click here to select a folder>"
-msgstr ""
-
-#: filter/filter-input.c:185
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-
-#: filter/filter-message-search.c:380 filter/filter-message-search.c:448
-#, c-format
-msgid "Failed to perform regex search on message header: %s"
-msgstr ""
-
-#: filter/filter-part.c:467
-msgid "Test"
-msgstr ""
-
-#: filter/filter-rule.c:530
-#, fuzzy
-msgid "Rule name: "
-msgstr "Nome completo:"
-
-#: filter/filter-rule.c:534
-#, fuzzy
-msgid "Untitled"
-msgstr "(Sem título)"
-
-#: filter/filter-rule.c:550
-msgid "If"
-msgstr ""
-
-#: filter/filter-rule.c:567
-msgid "Execute actions"
-msgstr ""
-
-#: filter/filter-rule.c:571
-msgid "if all criteria are met"
-msgstr ""
-
-#: filter/filter-rule.c:576
-msgid "if any criteria are met"
-msgstr ""
-
-#: filter/filter-rule.c:587
-msgid "Add criterion"
-msgstr ""
-
-#: filter/filter-rule.c:593
-#, fuzzy
-msgid "Remove criterion"
-msgstr "Remover grupo"
-
-#: filter/filter-system-flag.c:63
-#, fuzzy
-msgid "Replied to"
-msgstr "Reponder para todos"
-
-#. { _("Deleted"), "Deleted" },
-#. { _("Draft"), "Draft" },
-#: filter/filter-system-flag.c:66
-msgid "Important"
-msgstr ""
-
-#: filter/filter-system-flag.c:67
-#, fuzzy
-msgid "Read"
-msgstr "Remover"
-
-#. Automatically generated. Do not edit.
-#: filter/libfilter-i18n.h:2
-msgid "Assign Colour"
-msgstr ""
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Score"
-msgstr ""
-
-#: filter/libfilter-i18n.h:4
-#, fuzzy
-msgid "Copy to Folder"
-msgstr "Ir para a _pasta..."
-
-#: filter/libfilter-i18n.h:5
-#, fuzzy
-msgid "Date received"
-msgstr "Receber"
-
-#: filter/libfilter-i18n.h:6
-#, fuzzy
-msgid "Date sent"
-msgstr "Data"
-
-#: filter/libfilter-i18n.h:8
-msgid "Expression"
-msgstr ""
-
-#: filter/libfilter-i18n.h:9
-#, fuzzy
-msgid "Forward to Address"
-msgstr "Enviar esta mensagem"
-
-#: filter/libfilter-i18n.h:10
-#, fuzzy
-msgid "Message Body"
-msgstr "Situação das mensagens"
-
-#: filter/libfilter-i18n.h:11
-#, fuzzy
-msgid "Message Header"
-msgstr "Situação das mensagens"
-
-#: filter/libfilter-i18n.h:12
-msgid "Message was received"
-msgstr ""
-
-#: filter/libfilter-i18n.h:13
-#, fuzzy
-msgid "Message was sent"
-msgstr "Situação das mensagens"
-
-#: filter/libfilter-i18n.h:14
-#, fuzzy
-msgid "Move to Folder"
-msgstr "Ir para a _pasta..."
-
-#: filter/libfilter-i18n.h:15
-msgid "Recipients"
-msgstr ""
-
-#: filter/libfilter-i18n.h:16
-msgid "Regex Match"
-msgstr ""
-
-#: filter/libfilter-i18n.h:17 filter/score-rule.c:192 filter/score-rule.c:194
-#: mail/message-list.c:1109
-#, fuzzy
-msgid "Score"
-msgstr "Fontes"
-
-#: filter/libfilter-i18n.h:18
-#, fuzzy
-msgid "Sender"
-msgstr "Enviar"
-
-#: filter/libfilter-i18n.h:19
-#, fuzzy
-msgid "Set Status"
-msgstr "Situação online"
-
-#: filter/libfilter-i18n.h:20
-#, fuzzy
-msgid "Source"
-msgstr "Fontes"
-
-#: filter/libfilter-i18n.h:21
-msgid "Specific header"
-msgstr ""
-
-#: filter/libfilter-i18n.h:22 mail/message-list.c:1109
-#, fuzzy
-msgid "Status"
-msgstr "Sáb"
-
-#: filter/libfilter-i18n.h:23
-msgid "Stop Processing"
-msgstr ""
-
-#: filter/libfilter-i18n.h:24 mail/message-list.c:1110
-msgid "Subject"
-msgstr "Assunto"
-
-#: filter/libfilter-i18n.h:25
-#, fuzzy
-msgid "after"
-msgstr "Data"
-
-#: filter/libfilter-i18n.h:26
-msgid "before"
-msgstr ""
-
-#: filter/libfilter-i18n.h:27
-#, fuzzy
-msgid "contains"
-msgstr "_Acções"
-
-#: filter/libfilter-i18n.h:28
-msgid "does not contain"
-msgstr ""
-
-#: filter/libfilter-i18n.h:29
-msgid "does not end with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:30
-msgid "does not exist"
-msgstr ""
-
-#: filter/libfilter-i18n.h:31
-#, fuzzy
-msgid "does not sound like"
-msgstr "Ficheiro não encontrado"
-
-#: filter/libfilter-i18n.h:32
-msgid "does not start with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:33
-msgid "ends with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:34
-msgid "exists"
-msgstr ""
-
-#: filter/libfilter-i18n.h:35
-msgid "is greater than"
-msgstr ""
-
-#: filter/libfilter-i18n.h:36
-msgid "is less than"
-msgstr ""
-
-#: filter/libfilter-i18n.h:37
-msgid "is not"
-msgstr ""
-
-#: filter/libfilter-i18n.h:38
-msgid "is"
-msgstr ""
-
-#: filter/libfilter-i18n.h:39
-msgid "on or after"
-msgstr ""
-
-#: filter/libfilter-i18n.h:40
-msgid "on or before"
-msgstr ""
-
-#: filter/libfilter-i18n.h:41
-msgid "sounds like"
-msgstr ""
-
-#: filter/libfilter-i18n.h:42
-msgid "starts with"
-msgstr ""
-
-#: filter/libfilter-i18n.h:43
-msgid "was after"
-msgstr ""
-
-#: filter/libfilter-i18n.h:44
-msgid "was before"
-msgstr ""
-
-#: filter/score-editor.c:127
-#, fuzzy
-msgid "Add Rule"
-msgstr "Adicionar Fonte"
-
-#: filter/score-editor.c:166
-msgid "Edit Score Rule"
-msgstr ""
-
-#: filter/vfolder-editor.c:155
-msgid "Add VFolder Rule"
-msgstr ""
-
-#: filter/vfolder-editor.c:204
-msgid "Edit VFolder Rule"
-msgstr ""
-
-#: mail/component-factory.c:284
-msgid "Cannot initialize Evolution's mail component."
-msgstr "Não consigo inicializar o componente de mail do Evolution."
-
-#: mail/component-factory.c:320
-msgid "Cannot register storage with shell"
-msgstr ""
-
-#: mail/folder-browser.c:225
-#, fuzzy
-msgid "Store search as vFolder"
-msgstr "_Nova pasta"
-
-#: mail/folder-browser.c:238
-msgid "Body or subject contains"
-msgstr ""
-
-#: mail/folder-browser.c:239
-msgid "Body contains"
-msgstr ""
-
-#: mail/folder-browser.c:240
-#, fuzzy
-msgid "Subject contains"
-msgstr "Assunto"
-
-#: mail/folder-browser.c:241
-msgid "Body does not contain"
-msgstr ""
-
-#: mail/folder-browser.c:242
-msgid "Subject does not contain"
-msgstr ""
-
-#: mail/folder-browser.c:645
-msgid "VFolder on Subject"
-msgstr ""
-
-#: mail/folder-browser.c:646
-msgid "VFolder on Sender"
-msgstr ""
-
-#: mail/folder-browser.c:647
-msgid "VFolder on Recipients"
-msgstr ""
-
-#: mail/folder-browser.c:649
-msgid "Filter on Subject"
-msgstr ""
-
-#: mail/folder-browser.c:650
-#, fuzzy
-msgid "Filter on Sender"
-msgstr "Ficheiro não encontrado"
-
-#: mail/folder-browser.c:651
-msgid "Filter on Recipients"
-msgstr ""
-
-#: mail/folder-browser.c:652 mail/folder-browser.c:766
-msgid "Filter on Mailing List"
-msgstr ""
-
-#: mail/folder-browser.c:658
-#, fuzzy
-msgid "Open"
-msgstr "_Abrir"
-
-#: mail/folder-browser.c:659
-msgid "Edit"
-msgstr ""
-
-#: mail/folder-browser.c:660
-msgid "Save As..."
-msgstr ""
-
-#: mail/folder-browser.c:661 mail/mail-view.c:148
-msgid "Print"
-msgstr "Imprimir"
-
-#: mail/folder-browser.c:663
-#, fuzzy
-msgid "Reply to Sender"
-msgstr "Reponder para todos"
-
-#: mail/folder-browser.c:664 mail/mail-view.c:141
-msgid "Reply to All"
-msgstr "Reponder para todos"
-
-#: mail/folder-browser.c:665 mail/mail-view.c:144
-msgid "Forward"
-msgstr ""
-
-#: mail/folder-browser.c:666
-msgid "Forward inline"
-msgstr ""
-
-#: mail/folder-browser.c:668
-msgid "Mark as Read"
-msgstr ""
-
-#: mail/folder-browser.c:669
-msgid "Mark as Unread"
-msgstr ""
-
-#: mail/folder-browser.c:671
-#, fuzzy
-msgid "Move to Folder..."
-msgstr "Ir para a _pasta..."
-
-#: mail/folder-browser.c:672
-#, fuzzy
-msgid "Copy to Folder..."
-msgstr "Ir para a _pasta..."
-
-#: mail/folder-browser.c:674
-#, fuzzy
-msgid "Undelete"
-msgstr "Apagar"
-
-#. { _("Add Sender to Address Book"), NULL, GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL, GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:678
-msgid "Apply Filters"
-msgstr ""
-
-#: mail/folder-browser.c:680
-#, fuzzy
-msgid "Create Rule From Message"
-msgstr "Mensagens de correio em rascunho"
-
-#: mail/folder-browser.c:768
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr ""
-
-#. add a "None" option to the stores menu
-#: mail/mail-account-editor.c:683 mail/mail-account-editor.c:685
-#: mail/mail-account-editor.c:734 mail/mail-accounts.c:114
-#: mail/mail-config-druid.c:844 shell/e-shell-view.c:1093
-#: widgets/misc/e-dateedit.c:421 widgets/misc/e-dateedit.c:1330
-#: widgets/misc/e-dateedit.c:1445
-msgid "None"
-msgstr "Nenhuma"
-
-#: mail/mail-accounts.c:115
-#, fuzzy
-msgid " (default)"
-msgstr "Apagar"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:347
-msgid "Evolution Account Manager"
-msgstr ""
-
-#: mail/mail-account-editor.c:274
-msgid ""
-"One or more of your servers are not configured correctly.\n"
-"Do you wish to save anyway?"
-msgstr ""
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:634
-#, fuzzy
-msgid "Evolution Account Editor"
-msgstr "Atalho para _barra do Evolution"
-
-#: mail/mail-autofilter.c:71
-#, fuzzy, c-format
-msgid "Mail to %s"
-msgstr "Fontes de correio"
-
-#: mail/mail-autofilter.c:214
-#, fuzzy, c-format
-msgid "Subject is %s"
-msgstr "Assunto"
-
-#: mail/mail-autofilter.c:230
-#, c-format
-msgid "Mail from %s"
-msgstr ""
-
-#: mail/mail-autofilter.c:331
-#, c-format
-msgid "%s mailing list"
-msgstr ""
-
-#: mail/mail-callbacks.c:83
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-
-#: mail/mail-callbacks.c:136
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-
-#: mail/mail-callbacks.c:148
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-
-#: mail/mail-callbacks.c:223
-msgid "You have not set a mail transport method"
-msgstr ""
-
-#: mail/mail-callbacks.c:232
-msgid "You have no Outbox configured"
-msgstr ""
-
-#: mail/mail-callbacks.c:279
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-
-#: mail/mail-callbacks.c:345
-msgid "You must configure an account before you can send this email."
-msgstr ""
-
-#: mail/mail-callbacks.c:365
-msgid "You must specify recipients in order to send this message."
-msgstr ""
-
-#: mail/mail-callbacks.c:594
-#, fuzzy
-msgid "Forwarded message:\n"
-msgstr "Enviar esta mensagem"
-
-#: mail/mail-callbacks.c:675
-msgid "Move message(s) to"
-msgstr ""
-
-#: mail/mail-callbacks.c:677
-#, fuzzy
-msgid "Copy message(s) to"
-msgstr "Criar uma nova mensagem"
-
-#: mail/mail-callbacks.c:812
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-
-#: mail/mail-callbacks.c:845 mail/mail-display.c:79
-msgid "Overwrite file?"
-msgstr ""
-
-#: mail/mail-callbacks.c:849 mail/mail-display.c:83
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-
-#: mail/mail-callbacks.c:893
-msgid "Save Message As..."
-msgstr ""
-
-#: mail/mail-callbacks.c:895
-msgid "Save Messages As..."
-msgstr ""
-
-#: mail/mail-callbacks.c:979
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-
-#: mail/mail-callbacks.c:1028
-#, fuzzy
-msgid "Print Message"
-msgstr "Encontrar mensagens"
-
-#: mail/mail-callbacks.c:1075
-msgid "Printing of message failed"
-msgstr ""
-
-#: mail/mail-config-druid.c:363
-#, c-format
-msgid ""
-"Failed to verify the incoming mail configuration.\n"
-"You may experience problems retrieving your mail from %s"
-msgstr ""
-
-#: mail/mail-config-druid.c:629
-#, c-format
-msgid ""
-"Failed to verify the outgoing mail configuration.\n"
-"You may experience problems sending your mail using %s"
-msgstr ""
-
-#. set window title
-#: mail/mail-config-druid.c:949
-msgid "Evolution Account Wizard"
-msgstr ""
-
-#: mail/mail-display.c:98
-#, c-format
-msgid ""
-"Could not open file %s:\n"
-"%s"
-msgstr ""
-
-#: mail/mail-display.c:131
-#, c-format
-msgid "Could not write data: %s"
-msgstr ""
-
-#: mail/mail-display.c:229
-#, fuzzy
-msgid "Save Attachment"
-msgstr "Anexo"
-
-#: mail/mail-display.c:269
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr ""
-
-#: mail/mail-display.c:311
-msgid "Save to Disk..."
-msgstr ""
-
-#: mail/mail-display.c:313
-#, c-format
-msgid "Open in %s..."
-msgstr ""
-
-#: mail/mail-display.c:315
-msgid "View Inline"
-msgstr ""
-
-#: mail/mail-display.c:342
-msgid "External Viewer"
-msgstr ""
-
-#: mail/mail-display.c:365
-#, c-format
-msgid "View Inline (via %s)"
-msgstr ""
-
-#: mail/mail-display.c:369
-msgid "Hide"
-msgstr ""
-
-#: mail/mail-format.c:504
-#, fuzzy, c-format
-msgid "%s attachment"
-msgstr "Adicionar anexo"
-
-#: mail/mail-format.c:626
-#, fuzzy
-msgid "Reply-To:"
-msgstr "Responder"
-
-#: mail/mail-format.c:856
-msgid "Encrypted message not displayed"
-msgstr ""
-
-#: mail/mail-format.c:862
-#, fuzzy
-msgid "Encrypted message"
-msgstr "Enviar a mensagem"
-
-#: mail/mail-format.c:863
-msgid "Click icon to decrypt."
-msgstr ""
-
-#: mail/mail-format.c:1438
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr ""
-
-#: mail/mail-format.c:1450
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr ""
-
-#: mail/mail-format.c:1454
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr ""
-
-#: mail/mail-format.c:1488
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr ""
-
-#: mail/mail-format.c:1493
-msgid "Malformed external-body part."
-msgstr ""
-
-#: mail/mail-format.c:1663
-#, c-format
-msgid "On %s, %s wrote:\n"
-msgstr ""
-
-#: mail/mail-local.c:204
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr ""
-
-#: mail/mail-local.c:208
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr ""
-
-#: mail/mail-local.c:251
-#, fuzzy
-msgid "Reconfiguring folder"
-msgstr "_Nova pasta"
-
-#: mail/mail-local.c:269
-#, fuzzy
-msgid "Closing current folder"
-msgstr "Fechar o calendário corrente"
-
-#: mail/mail-local.c:295
-msgid "Renaming old folder and opening"
-msgstr ""
-
-#: mail/mail-local.c:313
-#, fuzzy
-msgid "Creating new folder"
-msgstr "Criar um novo calendário"
-
-#: mail/mail-local.c:327
-#, fuzzy
-msgid "Copying messages"
-msgstr "Encontrar mensagens"
-
-#: mail/mail-local.c:348
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-
-#: mail/mail-local.c:379
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-
-#: mail/mail-local.c:787
-msgid "Registering local folder"
-msgstr ""
-
-#: mail/mail-local.c:789
-msgid "Register local folder"
-msgstr ""
-
-#: mail/mail-local.c:893
-#, c-format
-msgid ""
-"Unable to register folder '%s':\n"
-"%s"
-msgstr ""
-
-#: mail/mail-mt.c:85
-#, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-
-#: mail/mail-mt.c:87
-#, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-
-#: mail/mail-mt.c:356 mail/mail-mt.c:385
-#, fuzzy
-msgid "Working"
-msgstr "Seg"
-
-#: mail/mail-ops.c:107
-#, c-format
-msgid "Fetching email from %s"
-msgstr ""
-
-#: mail/mail-ops.c:109
-#, c-format
-msgid "Fetch email from %s"
-msgstr ""
-
-#: mail/mail-ops.c:359
-#, c-format
-msgid "There is no new mail at %s."
-msgstr ""
-
-#: mail/mail-ops.c:430
-msgid "Filtering email on demand"
-msgstr ""
-
-#: mail/mail-ops.c:432
-msgid "Filter email on demand"
-msgstr ""
-
-#: mail/mail-ops.c:563
-#, c-format
-msgid "Sending \"%s\""
-msgstr ""
-
-#: mail/mail-ops.c:565
-#, fuzzy
-msgid "Sending message"
-msgstr "Mensagens enviadas"
-
-#: mail/mail-ops.c:682
-msgid "Sending queue"
-msgstr ""
-
-#: mail/mail-ops.c:684
-msgid "Send queue"
-msgstr ""
-
-#: mail/mail-ops.c:819 mail/mail-ops.c:826
-#, c-format
-msgid "Appending \"%s\""
-msgstr ""
-
-#: mail/mail-ops.c:823 mail/mail-ops.c:829
-msgid "Appending a message without a subject"
-msgstr ""
-
-#: mail/mail-ops.c:912
-#, c-format
-msgid "Moving messages from \"%s\" into \"%s\""
-msgstr ""
-
-#: mail/mail-ops.c:914
-#, c-format
-msgid "Copying messages from \"%s\" into \"%s\""
-msgstr ""
-
-#: mail/mail-ops.c:917
-#, c-format
-msgid "Move messages from \"%s\" into \"%s\""
-msgstr ""
-
-#: mail/mail-ops.c:919
-#, c-format
-msgid "Copy messages from \"%s\" into \"%s\""
-msgstr ""
-
-#: mail/mail-ops.c:950
-#, fuzzy
-msgid "Moving"
-msgstr "Seg"
-
-#: mail/mail-ops.c:953
-#, fuzzy
-msgid "Copying"
-msgstr "Copiar"
-
-#: mail/mail-ops.c:973
-#, c-format
-msgid "%s message %d of %d (uid \"%s\")"
-msgstr ""
-
-#: mail/mail-ops.c:1048
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr ""
-
-#: mail/mail-ops.c:1114 mail/subscribe-dialog.c:347
-#, fuzzy
-msgid "(No description)"
-msgstr "Nenhuma descrição"
-
-#: mail/mail-ops.c:1179
-#, fuzzy
-msgid "Forwarded messages"
-msgstr "Enviar esta mensagem"
-
-#: mail/mail-ops.c:1220 mail/mail-ops.c:1289
-#, fuzzy, c-format
-msgid "Opening folder %s"
-msgstr "Abrir ficheiro"
-
-#: mail/mail-ops.c:1351
-#, fuzzy
-msgid "Synchronising folder"
-msgstr "Sincronizar"
-
-#: mail/mail-ops.c:1401
-msgid "Expunging folder"
-msgstr ""
-
-#: mail/mail-ops.c:1450
-#, fuzzy, c-format
-msgid "Retrieving message %s"
-msgstr "Enviar esta mensagem"
-
-#: mail/mail-ops.c:1517
-#, fuzzy
-msgid "Retrieving messages"
-msgstr "Encontrar mensagens"
-
-#: mail/mail-ops.c:1527
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr ""
-
-#: mail/mail-ops.c:1675
-#, c-format
-msgid "Loading %s Folder for %s"
-msgstr ""
-
-#: mail/mail-ops.c:1677
-#, c-format
-msgid "Load %s Folder for %s"
-msgstr ""
-
-#: mail/mail-ops.c:1843
-#, fuzzy
-msgid "Saving messages"
-msgstr "Encontrar mensagens"
-
-#: mail/mail-ops.c:1922
-#, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr ""
-
-#: mail/mail-ops.c:1935
-#, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr ""
-
-#: mail/mail-ops.c:1949
-#, fuzzy, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr "Erro a gravar os atalhos."
-
-#: mail/mail-search-dialogue.c:104
-msgid "Cancel"
-msgstr ""
-
-#: mail/mail-summary.c:111 mail/mail-threads.c:729
-msgid "Incomplete message written on pipe!"
-msgstr ""
-
-#: mail/mail-threads.c:302
-#, c-format
-msgid ""
-"Error while preparing to %s:\n"
-"%s"
-msgstr ""
-
-#: mail/mail-threads.c:676
-#, c-format
-msgid ""
-"Error while `%s':\n"
-"%s"
-msgstr ""
-
-#: mail/mail-threads.c:733
-msgid "Error reading commands from dispatching thread."
-msgstr ""
-
-#: mail/mail-threads.c:798
-msgid "Corrupted message from dispatching thread?"
-msgstr ""
-
-#: mail/mail-threads.c:917
-#, fuzzy
-msgid "Could not create dialog box."
-msgstr "Não se consegui inicializar Bonobo"
-
-#: mail/mail-threads.c:928
-msgid "User cancelled query."
-msgstr ""
-
-#: mail/mail-tools.c:189
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr ""
-
-#. Get all uids of source
-#: mail/mail-tools.c:241
-#, c-format
-msgid "Examining %s"
-msgstr ""
-
-#: mail/mail-tools.c:271
-#, c-format
-msgid ""
-"Could not read UID cache file \"%s\". You may receive duplicate messages."
-msgstr ""
-
-#: mail/mail-tools.c:300
-#, c-format
-msgid "Retrieving message %d of %d"
-msgstr ""
-
-#. Append it to dest
-#: mail/mail-tools.c:315
-#, c-format
-msgid "Writing message %d of %d"
-msgstr ""
-
-#: mail/mail-tools.c:347
-#, c-format
-msgid "Saving changes to %s"
-msgstr ""
-
-#: mail/mail-tools.c:381
-#, fuzzy, c-format
-msgid "[%s] (forwarded message)"
-msgstr "Enviar esta mensagem"
-
-#: mail/mail-tools.c:391
-msgid "Fwd: (no subject)"
-msgstr ""
-
-#: mail/mail-tools.c:427
-#, fuzzy, c-format
-msgid "Forwarded message - %s"
-msgstr "Enviar esta mensagem"
-
-#: mail/mail-tools.c:429
-#, fuzzy
-msgid "Forwarded message (no subject)"
-msgstr "Enviar esta mensagem"
-
-#: mail/mail-tools.c:530
-#, fuzzy, c-format
-msgid ""
-"Cannot open location `%s':\n"
-"%s"
-msgstr "Não consigo abrir a localização: %s"
-
-#: mail/mail-vfolder.c:149
-#, fuzzy
-msgid "VFolders"
-msgstr "_Pastas"
-
-#: mail/mail-vfolder.c:298
-#, fuzzy
-msgid "New VFolder"
-msgstr "_Nova pasta"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/mail-view.c:138
-msgid "Reply"
-msgstr "Responder"
-
-#: mail/mail-view.c:138
-#, fuzzy
-msgid "Reply to the sender of this message"
-msgstr "Responder ao emissor desta mensagem"
-
-#: mail/mail-view.c:141
-msgid "Reply to all recipients of this message"
-msgstr "Reponder a todos receptores da mensagem"
-
-#: mail/mail-view.c:144
-#, fuzzy
-msgid "Forward this message"
-msgstr "Enviar esta mensagem"
-
-#: mail/mail-view.c:148
-#, fuzzy
-msgid "Print the selected message"
-msgstr "Imprimir a mensagem seleccionada"
-
-#: mail/mail-view.c:150
-#, fuzzy
-msgid "Delete this message"
-msgstr "Enviar esta mensagem"
-
-#: mail/message-list.c:599
-msgid "Unseen"
-msgstr ""
-
-#: mail/message-list.c:602
-#, fuzzy
-msgid "Seen"
-msgstr "Enviar"
-
-#: mail/message-list.c:605
-msgid "Answered"
-msgstr ""
-
-#: mail/message-list.c:890
-#, c-format
-msgid "[ %s ]"
-msgstr ""
-
-#. well, we could scan more children, build up a (more accurate) list, but this should do ok
-#: mail/message-list.c:902 mail/message-list.c:918
-#, c-format
-msgid "%s, et al."
-msgstr ""
-
-#: mail/message-list.c:905 mail/message-list.c:921
-msgid "<unknown>"
-msgstr ""
-
-#: mail/message-list.c:973
-msgid "?"
-msgstr "?"
-
-#: mail/message-list.c:980
-msgid "Today %l:%M %p"
-msgstr ""
-
-#: mail/message-list.c:989
-msgid "Yesterday %l:%M %p"
-msgstr ""
-
-#: mail/message-list.c:1001
-msgid "%a %l:%M %p"
-msgstr ""
-
-#: mail/message-list.c:1009
-msgid "%b %d %l:%M %p"
-msgstr ""
-
-#: mail/message-list.c:1011
-msgid "%b %d %Y"
-msgstr ""
-
-#: mail/message-list.c:1109
-msgid "Flagged"
-msgstr ""
-
-#: mail/message-list.c:1109
-#, fuzzy
-msgid "Attachment"
-msgstr "Anexo"
-
-#: mail/message-list.c:1110
-#, fuzzy
-msgid "From"
-msgstr "De"
-
-#: mail/message-list.c:1110
-#, fuzzy
-msgid "Date"
-msgstr "Data"
-
-#: mail/message-list.c:1110
-#, fuzzy
-msgid "Received"
-msgstr "Receber"
-
-#: mail/message-list.c:1111
-#, fuzzy
-msgid "To"
-msgstr "Para:"
-
-#: mail/message-list.c:1111
-#, fuzzy
-msgid "Size"
-msgstr "Tamanho"
-
-#: mail/openpgp-utils.c:78
-#, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr ""
-
-#: mail/openpgp-utils.c:81
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr ""
-
-#: mail/openpgp-utils.c:435 mail/openpgp-utils.c:538 mail/openpgp-utils.c:742
-#: mail/openpgp-utils.c:891 mail/openpgp-utils.c:1048
-msgid "No GPG/PGP program available."
-msgstr ""
-
-#: mail/openpgp-utils.c:442 mail/openpgp-utils.c:547 mail/openpgp-utils.c:749
-#: mail/openpgp-utils.c:898
-msgid "No password provided."
-msgstr ""
-
-#: mail/openpgp-utils.c:448 mail/openpgp-utils.c:555 mail/openpgp-utils.c:756
-#: mail/openpgp-utils.c:905 mail/openpgp-utils.c:1054
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr ""
-
-#: mail/openpgp-utils.c:566 mail/openpgp-utils.c:611 mail/openpgp-utils.c:650
-msgid "No recipients specified"
-msgstr ""
-
-#: mail/openpgp-utils.c:1065
-#, fuzzy, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "Criar um novo calendário"
-
-#: mail/subscribe-dialog.c:62 shell/e-storage-set-view.c:44
-#, fuzzy
-msgid "Folder"
-msgstr "_Pastas"
-
-#: mail/subscribe-dialog.c:63
-#, fuzzy
-msgid "Store"
-msgstr "Fontes"
-
-#: mail/subscribe-dialog.c:145
-msgid "Display folders starting with:"
-msgstr ""
-
-#: mail/subscribe-dialog.c:178
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:181
-#, c-format
-msgid "Get store for \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:289
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:293
-#, c-format
-msgid "Unsubscribing from folder \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:297
-#, c-format
-msgid "Subscribe to folder \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:300
-#, c-format
-msgid "Unsubscribe from folder \"%s\""
-msgstr ""
-
-#: shell/e-setup.c:112 shell/e-setup.c:185
-msgid "Evolution installation"
-msgstr "Instalação do Evolution"
-
-#: shell/e-setup.c:116
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-
-#: shell/e-setup.c:117
-#, fuzzy
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr ""
-"Carregue em \\\"OK\\\" para instalar os ficheiros de utilizador do Evolution "
-"em"
-
-#: shell/e-setup.c:157
-msgid "Could not update files correctly"
-msgstr ""
-
-#: shell/e-setup.c:160 shell/e-setup.c:228
-msgid "Evolution files successfully installed."
-msgstr "Ficheiros do Evolution instalados com sucesso"
-
-#: shell/e-setup.c:189
-msgid "This seems to be the first time you run Evolution."
-msgstr "Esta parece ser a primeira vez que está a correr o Evolution."
-
-#: shell/e-setup.c:190
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr ""
-"Carregue em \\\"OK\\\" para instalar os ficheiros de utilizador do Evolution "
-"em"
-
-#: shell/e-setup.c:209
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-
-#: shell/e-setup.c:224
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-
-#: shell/e-setup.c:249
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-
-#: shell/e-setup.c:261
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-
-#: shell/e-shell-folder-creation-dialog.c:82
-#, fuzzy, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr "Gravar a mensagem na pasta especificada"
-
-#: shell/e-shell-folder-creation-dialog.c:134
-msgid "The specified folder name is not valid."
-msgstr ""
-
-#: shell/e-shell-folder-creation-dialog.c:225
-#, fuzzy
-msgid "Evolution - Create new folder"
-msgstr "O Evolution não consegue criar as suas pastas locais"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-
-#: shell/e-shell-folder-selection-dialog.c:297
-#, fuzzy
-msgid "New..."
-msgstr "Novo"
-
-#: shell/e-shell-folder-title-bar.c:451 shell/e-shell-folder-title-bar.c:452
-msgid "(Untitled)"
-msgstr "(Sem título)"
-
-#: shell/e-shell-view-menu.c:114
-msgid "Bug buddy was not found in your $PATH."
-msgstr "O Bug buddy não foi encontrado no seu $PATH."
-
-#: shell/e-shell-view-menu.c:120
-msgid "Bug buddy could not be run."
-msgstr "Não consegui correr o Bub buddy"
-
-#: shell/e-shell-view-menu.c:172
-#, fuzzy
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Copyright 1999, 2000 Helix Code, Inc."
-
-#: shell/e-shell-view-menu.c:174
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-
-#: shell/e-shell-view-menu.c:334
-msgid "Go to folder..."
-msgstr "Ir para a _pasta..."
-
-#: shell/e-shell-view.c:140
-msgid "(No folder displayed)"
-msgstr "(Nenhuma pasta mostrada)"
-
-#: shell/e-shell-view.c:468
-msgid "Folders"
-msgstr "_Pastas"
-
-#: shell/e-shell-view.c:1098
-#, fuzzy, c-format
-msgid "%s - Evolution %s"
-msgstr "Evolution - %s"
-
-#: shell/e-shell-view.c:1100
-#, fuzzy, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "Evolution - %s"
-
-#: shell/e-shell.c:372
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr ""
-
-#: shell/e-shell.c:1212
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-
-#: shell/e-shortcuts-view.c:123
-#, fuzzy
-msgid "Create new shortcut group"
-msgstr "Criar um novo contacto"
-
-#: shell/e-shortcuts-view.c:126
-#, fuzzy
-msgid "Group name:"
-msgstr "Nome completo:"
-
-#: shell/e-shortcuts-view.c:249
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:254
-msgid "Don't remove"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:265
-#, fuzzy
-msgid "_Small Icons"
-msgstr "Ícone_s pequenos"
-
-#: shell/e-shortcuts-view.c:266
-msgid "Show the shortcuts as small icons"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:268
-#, fuzzy
-msgid "_Large Icons"
-msgstr "Ícones _grandes"
-
-#: shell/e-shortcuts-view.c:269
-msgid "Show the shortcuts as large icons"
-msgstr "Mostrar atalhos co ícones grandes"
-
-#: shell/e-shortcuts-view.c:280
-#, fuzzy
-msgid "_New Group..."
-msgstr "Novo grupo"
-
-#: shell/e-shortcuts-view.c:281
-#, fuzzy
-msgid "Create a new shortcut group"
-msgstr "Criar um novo contacto"
-
-#: shell/e-shortcuts-view.c:283
-#, fuzzy
-msgid "_Remove This Group..."
-msgstr "Remover grupo"
-
-#: shell/e-shortcuts-view.c:284
-#, fuzzy
-msgid "Remove this shortcut group"
-msgstr "Remover este atalho da barra de atalhos"
-
-#: shell/e-shortcuts-view.c:289
-#, fuzzy
-msgid "_Hide the Shortcut Bar"
-msgstr "Mostrar a barra de atalhos"
-
-#: shell/e-shortcuts-view.c:290
-#, fuzzy
-msgid "Hide the shortcut bar"
-msgstr "Mostrar barra de atalho_s"
-
-#: shell/e-shortcuts-view.c:374
-msgid "Activate"
-msgstr "Activar"
-
-#: shell/e-shortcuts-view.c:374
-msgid "Activate this shortcut"
-msgstr "Activar este atalho"
-
-#: shell/e-shortcuts-view.c:377
-msgid "Remove this shortcut from the shortcut bar"
-msgstr "Remover este atalho da barra de atalhos"
-
-#: shell/e-shortcuts.c:358
-msgid "Error saving shortcuts."
-msgstr "Erro a gravar os atalhos."
-
-#: shell/e-storage-set-view.c:338
-#, fuzzy
-msgid "_View"
-msgstr "_Novo"
-
-#: shell/e-storage-set-view.c:338
-#, fuzzy
-msgid "View the selected folder"
-msgstr "Imprimir a mensagem seleccionada"
-
-#: shell/e-storage.c:138
-#, fuzzy
-msgid "(No name)"
-msgstr "Nome"
-
-#: shell/e-storage.c:389
-msgid "No error"
-msgstr ""
-
-#: shell/e-storage.c:391
-msgid "Generic error"
-msgstr ""
-
-#: shell/e-storage.c:393
-msgid "A folder with the same name already exists"
-msgstr ""
-
-#: shell/e-storage.c:395
-msgid "The specified folder type is not valid"
-msgstr ""
-
-#: shell/e-storage.c:397
-msgid "I/O error"
-msgstr ""
-
-#: shell/e-storage.c:399
-msgid "Not enough space to create the folder"
-msgstr ""
-
-#: shell/e-storage.c:401
-msgid "The specified folder was not found"
-msgstr ""
-
-#: shell/e-storage.c:403
-msgid "Function not implemented in this storage"
-msgstr ""
-
-#: shell/e-storage.c:405
-msgid "Permission denied"
-msgstr ""
-
-#: shell/e-storage.c:407
-msgid "Operation not supported"
-msgstr ""
-
-#: shell/e-storage.c:409
-msgid "The specified type is not supported in this storage"
-msgstr ""
-
-#: shell/main.c:74
-msgid ""
-"Hi. Thanks for taking the time to download this preview release\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Over the time since the past release, our focus has been on making\n"
-"Evolution usable. Many of the Evolution developers are now using\n"
-"Evolution to read their mail full time. You could too. (Just\n"
-"be sure to keep a backup.)\n"
-"\n"
-"But while we have fixed many bugs affecting its stability and\n"
-"security, you still get the disclaimer: Evolution will: crash,\n"
-"lose your mail when you don't want it to, refuse to delete your\n"
-"mail when you do want it to, leave stray processes running,\n"
-"consume 100% CPU, race, lock, send HTML mail to random mailing\n"
-"lists, and embarass you in front of your friends and co-workers.\n"
-"Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we eagerly\n"
-"await your contributions!\n"
-msgstr ""
-
-#: shell/main.c:101
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-
-#: shell/main.c:132
-msgid "Cannot initialize the Evolution shell."
-msgstr ""
-
-#: shell/main.c:178
-msgid "Disable."
-msgstr ""
-
-#: shell/main.c:198
-msgid "Cannot initialize the Bonobo component system."
-msgstr "Falhou a inicialização do sistema de componentes Bonobo."
-
-#: ui/evolution-contact-editor.xml:7
-#, fuzzy
-msgid "FIXME: _Appointment"
-msgstr "_Compromisso"
-
-#: ui/evolution-contact-editor.xml:8
-#, fuzzy
-msgid "FIXME: Meeting Re_quest"
-msgstr "Pedido de _encontro"
-
-#: ui/evolution-contact-editor.xml:10
-#, fuzzy
-msgid "FIXME: _Mail Message"
-msgstr "Mensagem de _correio"
-
-#: ui/evolution-contact-editor.xml:11
-#, fuzzy
-msgid "FIXME: _Contact"
-msgstr "_Contacto"
-
-#: ui/evolution-contact-editor.xml:12
-msgid "FIXME: _Task"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:13
-#, fuzzy
-msgid "FIXME: Task _Request"
-msgstr "_Pedido de tarefa"
-
-#: ui/evolution-contact-editor.xml:14
-#, fuzzy
-msgid "FIXME: _Journal Entry"
-msgstr "_Entrada diária?"
-
-#: ui/evolution-contact-editor.xml:15
-msgid "FIXME: _Note"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:17 ui/evolution-contact-editor.xml:122
-msgid "FIXME: Ch_oose Form..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:22
-msgid "FIXME: _Memo Style"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:24
-#, fuzzy
-msgid "FIXME: Define Print _Styles..."
-msgstr "Pedido de _encontro"
-
-#: ui/evolution-contact-editor.xml:31
-msgid "FIXME: S_end"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:35
-#, fuzzy
-msgid "FIXME: Save Attac_hments..."
-msgstr "Adicionar anexo..."
-
-#: ui/evolution-contact-editor.xml:38
-msgid "FIXME: _Move to Folder..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:39
-msgid "FIXME: Cop_y to Folder..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:41
-#, fuzzy
-msgid "Page Set_up"
-msgstr "Imprimir"
-
-#: ui/evolution-contact-editor.xml:42
-msgid "FIXME: Print Pre_view"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:63
-msgid "FIXME: Paste _Special..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:68
-msgid "FIXME: Mark as U_nread"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:72
-msgid "_Object"
-msgstr "_Objecto"
-
-#: ui/evolution-contact-editor.xml:77 ui/evolution-contact-editor.xml:84
-msgid "FIXME: _Item"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:78 ui/evolution-contact-editor.xml:85
-msgid "FIXME: _Unread Item"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:79
-msgid "FIXME: Fi_rst Item in Folder"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:86
-msgid "FIXME: _Last Item in Folder"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:91
-msgid "FIXME: _Standard"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:93
-#, fuzzy
-msgid "FIXME: __Formatting"
-msgstr "_Contacto"
-
-#: ui/evolution-contact-editor.xml:96
-msgid "FIXME: _Customize..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:101
-msgid "Pre_vious"
-msgstr "An_terior"
-
-#: ui/evolution-contact-editor.xml:102
-#, fuzzy
-msgid "Ne_xt"
-msgstr "Pró_ximo"
-
-#: ui/evolution-contact-editor.xml:104
-msgid "_Toolbars"
-msgstr "_Ferramentas"
-
-#: ui/evolution-contact-editor.xml:109
-msgid "FIXME: _File..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:110
-msgid "FIXME: It_em..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:111
-msgid "FIXME: _Object..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:116
-msgid "FIXME: _Font..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:117
-msgid "FIXME: _Paragraph..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:124
-msgid "FIXME: Desi_gn This Form"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:125
-msgid "FIXME: D_esign a Form..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:127
-msgid "FIXME: Publish _Form..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:128
-msgid "FIXME: Pu_blish Form As..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:130
-msgid "FIXME: Script _Debugger"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:135
-msgid "FIXME: _Spelling..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:137
-#, fuzzy
-msgid "_Forms"
-msgstr "_Pasta"
-
-#: ui/evolution-contact-editor.xml:142
-#, fuzzy
-msgid "FIXME: _New Contact"
-msgstr "_Contacto"
-
-#: ui/evolution-contact-editor.xml:143
-msgid "FIXME: New _Contact from Same Company"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:145
-#, fuzzy
-msgid "FIXME: New _Letter to Contact"
-msgstr "_Contacto"
-
-#: ui/evolution-contact-editor.xml:146
-#, fuzzy
-msgid "FIXME: New _Message to Contact"
-msgstr "Enviar mensagem em formato HTML"
-
-#: ui/evolution-contact-editor.xml:147
-#, fuzzy
-msgid "FIXME: New Meetin_g with Contact"
-msgstr "_Contacto"
-
-#: ui/evolution-contact-editor.xml:148
-#, fuzzy
-msgid "FIXME: _Plan a Meeting..."
-msgstr "_Contacto"
-
-#: ui/evolution-contact-editor.xml:149
-#, fuzzy
-msgid "FIXME: New _Task for Contact"
-msgstr "_Contacto"
-
-#: ui/evolution-contact-editor.xml:150
-#, fuzzy
-msgid "FIXME: New _Journal Entry for Contact"
-msgstr "_Entrada diária?"
-
-#: ui/evolution-contact-editor.xml:152
-msgid "FIXME: _Flag for Follow Up..."
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:153
-#, fuzzy
-msgid "FIXME: _Display Map of Address"
-msgstr "Mensagem de _correio"
-
-#: ui/evolution-contact-editor.xml:154
-#, fuzzy
-msgid "FIXME: _Open Web Page"
-msgstr "Mensagem de _correio"
-
-#: ui/evolution-contact-editor.xml:156
-msgid "FIXME: Forward as _vCard"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:157
-msgid "FIXME: For_ward"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml:169
-msgid "_Insert"
-msgstr "_Inserir"
-
-#: ui/evolution-contact-editor.xml:170
-msgid "F_ormat"
-msgstr "F_ormato"
-
-#: ui/evolution-contact-editor.xml:171
-msgid "_Tools"
-msgstr "_Ferramentas"
-
-#: ui/evolution-contact-editor.xml:172
-msgid "Actio_ns"
-msgstr "_Acções"
-
-#: ui/evolution-contact-editor.xml:246
-#, fuzzy
-msgid "FIXME: Previous"
-msgstr "An_terior"
-
-#: ui/evolution-contact-editor.xml:247
-msgid "Go to the previous item"
-msgstr "Ir para o item anterior"
-
-#: ui/evolution-contact-editor.xml:249
-#, fuzzy
-msgid "FIXME: Next"
-msgstr "_Contacto"
-
-#: ui/evolution-contact-editor.xml:250
-msgid "Go to the next item"
-msgstr "Ir para o próximo item"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:463
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2471
-msgid "%A, %B %d, %Y"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:386
-msgid "Tentative"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:387
-msgid "Busy"
-msgstr "Ocupado"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:388
-msgid "Out of Office"
-msgstr "Fora do escritório"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:389
-msgid "No Information"
-msgstr "Nenhuma Informação"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:405
-msgid "_Invite Others..."
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:425
-msgid "_Options"
-msgstr "_Opções"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:442
-msgid "Show _Only Working Hours"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:455
-msgid "Show _Zoomed Out"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:473
-msgid "_Update Free/Busy"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:491
-msgid "_<<"
-msgstr "_<<"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:508
-msgid "_Autopick"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:522
-msgid ">_>"
-msgstr ">_>"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:539
-msgid "_All People and Resources"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:552
-msgid "All _People and One Resource"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:565
-msgid "_Required People"
-msgstr "Pessoas _Necessãrias"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:578
-msgid "Required People and _One Resource"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:601
-msgid "Meeting _start time:"
-msgstr "Hora de ín_icio de encontro"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:625
-msgid "Meeting _end time:"
-msgstr "Hora de _fim de _encontro"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:738
-msgid "All Attendees"
-msgstr ""
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:421
-msgid "MTWTFSS"
-msgstr ""
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1053 widgets/misc/e-calendar-item.c:2734
-msgid "%B %Y"
-msgstr ""
-
-#: widgets/misc/e-clipped-label.c:107
-msgid "..."
-msgstr "..."
-
-#: widgets/misc/e-dateedit.c:407
-#, fuzzy
-msgid "Now"
-msgstr "Novo"
-
-#: widgets/misc/e-dateedit.c:413
-msgid "Today"
-msgstr "Hoje"
-
-#. This is a strftime() format. %H = hour (0-23), %M = minute.
-#: widgets/misc/e-dateedit.c:1248 widgets/misc/e-dateedit.c:1307
-#: widgets/misc/e-dateedit.c:1486
-msgid "%H:%M"
-msgstr ""
-
-#. This is a strftime() format. %I = hour (1-12), %M = minute, %p = am/pm string.
-#: widgets/misc/e-dateedit.c:1251 widgets/misc/e-dateedit.c:1310
-#: widgets/misc/e-dateedit.c:1489
-msgid "%I:%M %p"
-msgstr ""
-
-#: widgets/misc/e-search-bar.c:176
-msgid "Sear_ch"
-msgstr ""
-
-#: widgets/shortcut-bar/e-group-bar.c:632
-#, c-format
-msgid "Group %i"
-msgstr "Grupo %i"
-
-#, fuzzy
-#~ msgid "Delete Contact?"
-#~ msgstr "Apagar um contacto"
-
-#, fuzzy
-#~ msgid "Address _2:"
-#~ msgstr "Endereço"
-
-#, fuzzy
-#~ msgid "Check Address"
-#~ msgstr "Endereço"
-
-#, fuzzy
-#~ msgid "Finland"
-#~ msgstr "Encontrar"
-
-#, fuzzy
-#~ msgid "_Address:"
-#~ msgstr "Endereço"
-
-#, fuzzy
-#~ msgid "Addressbook Sources"
-#~ msgstr "Adicionar Fonte"
-
-#, fuzzy
-#~ msgid "Find..."
-#~ msgstr "Encontrar"
-
-#, fuzzy
-#~ msgid "Message Recipients"
-#~ msgstr "Situação das mensagens"
-
-#, fuzzy
-#~ msgid "Select Names"
-#~ msgstr "_Items seleccionados"
-
-#, fuzzy
-#~ msgid "Select name from:"
-#~ msgstr "_Items seleccionados"
-
-#, fuzzy
-#~ msgid "a"
-#~ msgstr "am"
-
-#, fuzzy
-#~ msgid "b"
-#~ msgstr "%b"
-
-#, fuzzy
-#~ msgid "c"
-#~ msgstr "Cc"
-
-#, fuzzy
-#~ msgid "e"
-#~ msgstr "Qa"
-
-#~ msgid "h"
-#~ msgstr "h"
-
-#, fuzzy
-#~ msgid "k"
-#~ msgstr "Ok"
-
-#, fuzzy
-#~ msgid "m"
-#~ msgstr "am"
-
-#, fuzzy
-#~ msgid "o"
-#~ msgstr "Para"
-
-#, fuzzy
-#~ msgid "p"
-#~ msgstr "pm"
-
-#, fuzzy
-#~ msgid "r"
-#~ msgstr "Sx"
-
-#, fuzzy
-#~ msgid "u"
-#~ msgstr "Do"
-
-#, fuzzy
-#~ msgid "Body"
-#~ msgstr "Hoje"
-
-#, fuzzy
-#~ msgid "Font..."
-#~ msgstr "Imprimir..."
-
-#, fuzzy
-#~ msgid "Fonts"
-#~ msgstr "Mês"
-
-#, fuzzy
-#~ msgid "Format"
-#~ msgstr "F_ormato"
-
-#, fuzzy
-#~ msgid "Header"
-#~ msgstr "Ano"
-
-#, fuzzy
-#~ msgid "Headings"
-#~ msgstr "Cabeçalhos:"
-
-#, fuzzy
-#~ msgid "Height:"
-#~ msgstr "Cabeçalhos:"
-
-#, fuzzy
-#~ msgid "Margins"
-#~ msgstr "Ícones _grandes"
-
-#, fuzzy
-#~ msgid "Options"
-#~ msgstr "_Opções"
-
-#, fuzzy
-#~ msgid "Orientation"
-#~ msgstr "Organização"
-
-#, fuzzy
-#~ msgid "Page"
-#~ msgstr "Bip"
-
-#, fuzzy
-#~ msgid "Paper"
-#~ msgstr "Bip"
-
-#, fuzzy
-#~ msgid "Paper source:"
-#~ msgstr "Fontes de correio"
-
-#, fuzzy
-#~ msgid "Portrait"
-#~ msgstr "Prioridade"
-
-#, fuzzy
-#~ msgid "Preview:"
-#~ msgstr "Prever impressão"
-
-#, fuzzy
-#~ msgid "Sections:"
-#~ msgstr "Segundos"
-
-#, fuzzy
-#~ msgid "Shading"
-#~ msgstr "Cabeçalhos:"
-
-#, fuzzy
-#~ msgid "Start on a new page"
-#~ msgstr "Enviar uma nova mensagem"
-
-#, fuzzy
-#~ msgid "Style name:"
-#~ msgstr "Nome completo:"
-
-#, fuzzy
-#~ msgid "Top:"
-#~ msgstr "Para:"
-
-#, fuzzy
-#~ msgid "Calendar Server"
-#~ msgstr "Novo Ca_lendário"
-
-#, fuzzy
-#~ msgid "Evolution calendar iTip/iMip viewer"
-#~ msgstr "Atalho para _barra do Evolution"
-
-#, fuzzy
-#~ msgid "Factory for the Evolution calendar component."
-#~ msgstr "Não consigo inicializar o componente de mail do Evolution."
-
-#, fuzzy
-#~ msgid "Edit appointment"
-#~ msgstr "_Editar Compromisso"
-
-#, fuzzy
-#~ msgid "05 minutes"
-#~ msgstr "Minutos"
-
-#, fuzzy
-#~ msgid "10 minutes"
-#~ msgstr "Minutos"
-
-#, fuzzy
-#~ msgid "12 hour (am/pm)"
-#~ msgstr "12 horas (AM/PM)"
-
-#, fuzzy
-#~ msgid "15 minutes"
-#~ msgstr "Minutos"
-
-#, fuzzy
-#~ msgid "24 hour"
-#~ msgstr "24 horas"
-
-#, fuzzy
-#~ msgid "30 minutes"
-#~ msgstr "Minutos"
-
-#, fuzzy
-#~ msgid "60 minutes"
-#~ msgstr "Minutos"
-
-#, fuzzy
-#~ msgid "Calendar"
-#~ msgstr "Novo Ca_lendário"
-
-#, fuzzy
-#~ msgid "Calendar Preferences"
-#~ msgstr "Preferências"
-
-#~ msgid "Colors"
-#~ msgstr "Cores"
-
-#, fuzzy
-#~ msgid "Show week numbers"
-#~ msgstr "Mostrar 1 semana"
-
-#, fuzzy
-#~ msgid "TaskPad"
-#~ msgstr "_Tarefa"
-
-#, fuzzy
-#~ msgid "Visual Alarms"
-#~ msgstr "Alarmes"
-
-#, fuzzy
-#~ msgid "Work week"
-#~ msgstr "Semana"
-
-#, fuzzy
-#~ msgid "seconds."
-#~ msgstr " segundos"
-
-#, fuzzy
-#~ msgid "Normal"
-#~ msgstr "F_ormato"
-
-#, fuzzy
-#~ msgid "Not Started"
-#~ msgstr "_Começando"
-
-#, fuzzy
-#~ msgid "Task"
-#~ msgstr "_Tarefa"
-
-#, fuzzy
-#~ msgid "_Contacts..."
-#~ msgstr "_Contacto"
-
-#, fuzzy
-#~ msgid "_Priority:"
-#~ msgstr "Prioridade:"
-
-#, fuzzy
-#~ msgid "Appointment Basics"
-#~ msgstr "Compromissos:"
-
-#~ msgid "Days"
-#~ msgstr "DiasRascunhos"
-
-#, fuzzy
-#~ msgid "Exceptions"
-#~ msgstr "_Acções"
-
-#~ msgid "Hours"
-#~ msgstr "Horas"
-
-#, fuzzy
-#~ msgid "Mail _to:"
-#~ msgstr "atalhos principais"
-
-#~ msgid "Minutes"
-#~ msgstr "Minutos"
-
-#, fuzzy
-#~ msgid "Modify"
-#~ msgstr "Segunda-feira"
-
-#, fuzzy
-#~ msgid "Preview"
-#~ msgstr "Prever impressão"
-
-#, fuzzy
-#~ msgid "Pri_vate"
-#~ msgstr "Activar"
-
-#, fuzzy
-#~ msgid "Su_mmary:"
-#~ msgstr "Sumário:"
-
-#~ msgid "_Mail"
-#~ msgstr "_Correio"
-
-#, fuzzy
-#~ msgid "day(s)"
-#~ msgstr "DiasRascunhos"
-
-#, fuzzy
-#~ msgid "month(s)"
-#~ msgstr "Mês"
-
-#, fuzzy
-#~ msgid "week(s)"
-#~ msgstr "Semanas"
-
-#, fuzzy
-#~ msgid "April"
-#~ msgstr "_Correio"
-
-#, fuzzy
-#~ msgid "Go To Today"
-#~ msgstr "Hoje"
-
-#, fuzzy
-#~ msgid "March"
-#~ msgstr "Ano"
-
-#, fuzzy
-#~ msgid "May"
-#~ msgstr "Segunda-feira"
-
-#, fuzzy
-#~ msgid "October"
-#~ msgstr "Outro"
-
-#, fuzzy
-#~ msgid "Attachment properties"
-#~ msgstr "Propriedades do alarme"
-
-#, fuzzy
-#~ msgid "File name:"
-#~ msgstr "Nome completo:"
-
-#, fuzzy
-#~ msgid "Edit VFolders"
-#~ msgstr "_Pastas"
-
-#, fuzzy
-#~ msgid "Virtual Folders"
-#~ msgstr "_Pastas"
-
-#, fuzzy
-#~ msgid "vFolder Sources"
-#~ msgstr "Adicionar Fonte"
-
-#, fuzzy
-#~ msgid "Save"
-#~ msgstr "Sá"
-
-#, fuzzy
-#~ msgid "Hide deleted"
-#~ msgstr "Apagar"
-
-#, fuzzy
-#~ msgid "Hide Subject"
-#~ msgstr "Assunto"
-
-#, fuzzy
-#~ msgid "Hide from Sender"
-#~ msgstr "Ficheiro não encontrado"
-
-#, fuzzy
-#~ msgid "Hide Messages"
-#~ msgstr "Encontrar mensagens"
-
-#, fuzzy
-#~ msgid "Hide Subject \"%s\""
-#~ msgstr "Assunto"
-
-#, fuzzy
-#~ msgid "Current store format:"
-#~ msgstr "Não se consegui inicializar Bonobo"
-
-#, fuzzy
-#~ msgid "Mailbox Format"
-#~ msgstr "F_ormato"
-
-#, fuzzy
-#~ msgid "mbox"
-#~ msgstr "Correio novo"
-
-#, fuzzy
-#~ msgid "mh"
-#~ msgstr "h"
-
-#, fuzzy
-#~ msgid "Account Information"
-#~ msgstr "Nenhuma Informação"
-
-#, fuzzy
-#~ msgid "Account Properties"
-#~ msgstr "Propriedades do alarme"
-
-#, fuzzy
-#~ msgid "Advanced"
-#~ msgstr "Adicionar..."
-
-#, fuzzy
-#~ msgid "Authentication"
-#~ msgstr "Autenticação"
-
-#, fuzzy
-#~ msgid "Authentication Type:"
-#~ msgstr "Autenticação"
-
-#, fuzzy
-#~ msgid "Done"
-#~ msgstr "Nenhuma"
-
-#, fuzzy
-#~ msgid "E-Mail Address:"
-#~ msgstr "Endereço de correio:"
-
-#, fuzzy
-#~ msgid "Email Address:"
-#~ msgstr "Endereço de correio:"
-
-#, fuzzy
-#~ msgid "Evolution Mail Configuration"
-#~ msgstr "Configuração do correio"
-
-#, fuzzy
-#~ msgid "Full Name:"
-#~ msgstr "Nome completo:"
-
-#, fuzzy
-#~ msgid "Hostname:"
-#~ msgstr "Utilizador:"
-
-#, fuzzy
-#~ msgid "Mail"
-#~ msgstr "_Correio"
-
-#, fuzzy
-#~ msgid "Mail Account"
-#~ msgstr "Ícone_s pequenos"
-
-#~ msgid "Mail Configuration"
-#~ msgstr "Configuração do correio"
-
-#, fuzzy
-#~ msgid "Mail Configuration Druid"
-#~ msgstr "Configuração do correio"
-
-#, fuzzy
-#~ msgid "News"
-#~ msgstr "Novo"
-
-#, fuzzy
-#~ msgid "Optional"
-#~ msgstr "_Opções"
-
-#~ msgid "Organization:"
-#~ msgstr "Organização:"
-
-#, fuzzy
-#~ msgid "Password:"
-#~ msgstr "Esquecer _Senhas"
-
-#, fuzzy
-#~ msgid "Reply-to:"
-#~ msgstr "Responder"
-
-#, fuzzy
-#~ msgid "Required"
-#~ msgstr "Pessoas _Necessãrias"
-
-#, fuzzy
-#~ msgid "Save password"
-#~ msgstr "Gravar como VCard"
-
-#, fuzzy
-#~ msgid "Select signature file"
-#~ msgstr "Ficheiro com assinatura:"
-
-#, fuzzy
-#~ msgid "Server Configuration"
-#~ msgstr "Configuração do correio"
-
-#, fuzzy
-#~ msgid "Server Type: "
-#~ msgstr "Servidor:"
-
-#, fuzzy
-#~ msgid "Servers"
-#~ msgstr "Servidor:"
-
-#~ msgid "Signature file:"
-#~ msgstr "Ficheiro com assinatura:"
-
-#, fuzzy
-#~ msgid "Signature:"
-#~ msgstr "Ficheiro com assinatura:"
-
-#~ msgid "Sources"
-#~ msgstr "Fontes"
-
-#, fuzzy
-#~ msgid "User Information"
-#~ msgstr "Nenhuma Informação"
-
-#~ msgid "Username:"
-#~ msgstr "Utilizador:"
-
-#, fuzzy
-#~ msgid "minute(s)"
-#~ msgstr "Minutos"
-
-#~ msgid "Full name:"
-#~ msgstr "Nome completo:"
-
-#~ msgid "Email address:"
-#~ msgstr "Endereço de correio:"
-
-#~ msgid "Server:"
-#~ msgstr "Servidor:"
-
-#, fuzzy
-#~ msgid "Mail source type:"
-#~ msgstr "Fontes de correio"
-
-#, fuzzy
-#~ msgid "Mail transport type:"
-#~ msgstr "Transporte de correio"
-
-#~ msgid "Add Source"
-#~ msgstr "Adicionar Fonte"
-
-#, fuzzy
-#~ msgid "Add News Server"
-#~ msgstr "Adicionar novo grupo"
-
-#~ msgid "Address"
-#~ msgstr "Endereço"
-
-#, fuzzy
-#~ msgid "Mail Sources"
-#~ msgstr "atalhos principais"
-
-#~ msgid "Mail Transport"
-#~ msgstr "Transporte de correio"
-
-#, fuzzy
-#~ msgid "News Servers"
-#~ msgstr "Servidor:"
-
-#, fuzzy
-#~ msgid "News Sources"
-#~ msgstr "Fontes"
-
-#~ msgid "Send messages in HTML format"
-#~ msgstr "Enviar mensagem em formato HTML"
-
-#~ msgid "Delete a contact"
-#~ msgstr "Apagar um contacto"
-
-#~ msgid "Find"
-#~ msgstr "Encontrar"
-
-#~ msgid "Find a contact"
-#~ msgstr "Encontrar um contacto"
-
-#~ msgid "Print contacts"
-#~ msgstr "Imprimir contactos"
-
-#, fuzzy
-#~ msgid "View all contacts"
-#~ msgstr "Encontrar um contacto"
-
-#, fuzzy
-#~ msgid "_Addressbook Configuration..."
-#~ msgstr "Configuração do co_rreio..."
-
-#, fuzzy
-#~ msgid "_Print Contacts..."
-#~ msgstr "Imprimir contactos"
-
-#~ msgid "5 Days"
-#~ msgstr "5 Dias"
-
-#, fuzzy
-#~ msgid "Alter preferences"
-#~ msgstr "Preferências"
-
-#, fuzzy
-#~ msgid "Ca_lendar"
-#~ msgstr "Novo Ca_lendário"
-
-#, fuzzy
-#~ msgid "Calendar Preferences..."
-#~ msgstr "Preferências"
-
-#~ msgid "Create a new calendar"
-#~ msgstr "Criar um novo calendário"
-
-#~ msgid "Go to"
-#~ msgstr "Ir para"
-
-#~ msgid "Go to a specific date"
-#~ msgstr "Ir para uma data específica"
-
-#~ msgid "Month"
-#~ msgstr "Mês"
-
-#~ msgid "Open a calendar"
-#~ msgstr "Abrir um calendário"
-
-#~ msgid "Print this calendar"
-#~ msgstr "Imprimir este calendário"
-
-#~ msgid "Show 1 day"
-#~ msgstr "Mostrar 1 dia"
-
-#~ msgid "Show 1 month"
-#~ msgstr "Mostrar 1 mês"
-
-#~ msgid "Show 1 week"
-#~ msgstr "Mostrar 1 semana"
-
-#~ msgid "Show the working week"
-#~ msgstr "Mostrar a semana de trabalho"
-
-#~ msgid "Week"
-#~ msgstr "Semana"
-
-#~ msgid "_New"
-#~ msgstr "_Novo"
-
-#, fuzzy
-#~ msgid "_Open Calendar"
-#~ msgstr "Abrir Ca_lendário"
-
-#, fuzzy
-#~ msgid "_Print this calendar"
-#~ msgstr "Imprimir este calendário"
-
-#, fuzzy
-#~ msgid "_Save As..."
-#~ msgstr "Gravar na _pasta..."
-
-#~ msgid "Delete this item"
-#~ msgstr "Apagar este item"
-
-#, fuzzy
-#~ msgid "Delete..."
-#~ msgstr "Apagar"
-
-#, fuzzy
-#~ msgid "Print En_velope..."
-#~ msgstr "Imprimir..."
-
-#~ msgid "Print this item"
-#~ msgstr "Imprimir este item"
-
-#~ msgid "Print..."
-#~ msgstr "Imprimir..."
-
-#, fuzzy
-#~ msgid "Save _As..."
-#~ msgstr "Gravar na _pasta..."
-
-#, fuzzy
-#~ msgid "Save and Close"
-#~ msgstr "Guardar Calendário como"
-
-#, fuzzy
-#~ msgid "_File"
-#~ msgstr "_Pasta"
-
-#, fuzzy
-#~ msgid "_Print..."
-#~ msgstr "Imprimir..."
-
-#, fuzzy
-#~ msgid "C_lear"
-#~ msgstr "Carro"
-
-#, fuzzy
-#~ msgid "C_ut"
-#~ msgstr "Cortar"
-
-#, fuzzy
-#~ msgid "Clear"
-#~ msgstr "Carro"
-
-#, fuzzy
-#~ msgid "Close this appointment"
-#~ msgstr "Novo compromisso"
-
-#~ msgid "Copy"
-#~ msgstr "Copiar"
-
-#~ msgid "Cut"
-#~ msgstr "Cortar"
-
-#, fuzzy
-#~ msgid "FIXME: _New Appointment"
-#~ msgstr "_Compromisso"
-
-#, fuzzy
-#~ msgid "Modify the file's properties"
-#~ msgstr "Propriedades"
-
-#~ msgid "Paste"
-#~ msgstr "Colar"
-
-#, fuzzy
-#~ msgid "Paste the clipboard"
-#~ msgstr "Colar item da área de transferência"
-
-#, fuzzy
-#~ msgid "Print S_etup..."
-#~ msgstr "Imprimir..."
-
-#, fuzzy
-#~ msgid "Properties"
-#~ msgstr "Propriedades do alarme"
-
-#, fuzzy
-#~ msgid "Redo"
-#~ msgstr "Remover"
-
-#, fuzzy
-#~ msgid "Replace"
-#~ msgstr "Responder"
-
-#, fuzzy
-#~ msgid "Save the current file"
-#~ msgstr "Ficheiro com assinatura:"
-
-#, fuzzy
-#~ msgid "Select All"
-#~ msgstr "Reponder para todos"
-
-#~ msgid "Undo"
-#~ msgstr "Anular"
-
-#, fuzzy
-#~ msgid "Undo the last action"
-#~ msgstr "Anular a última operação"
-
-#, fuzzy
-#~ msgid "_Close"
-#~ msgstr "Cores"
-
-#, fuzzy
-#~ msgid "_Copy"
-#~ msgstr "Copiar"
-
-#, fuzzy
-#~ msgid "_Edit"
-#~ msgstr "Editar..."
-
-#, fuzzy
-#~ msgid "_Find..."
-#~ msgstr "Encontrar"
-
-#, fuzzy
-#~ msgid "_Paste"
-#~ msgstr "Colar"
-
-#, fuzzy
-#~ msgid "_Print"
-#~ msgstr "Imprimir"
-
-#, fuzzy
-#~ msgid "_Properties..."
-#~ msgstr "Propriedades do alarme"
-
-#, fuzzy
-#~ msgid "_Undo"
-#~ msgstr "Anular"
-
-#, fuzzy
-#~ msgid "Compose"
-#~ msgstr "Cores"
-
-#, fuzzy
-#~ msgid "Compose a new message"
-#~ msgstr "Criar uma nova mensagem"
-
-#, fuzzy
-#~ msgid "Copy message to a new folder"
-#~ msgstr "Gravar a mensagem na pasta especificada"
-
-#, fuzzy
-#~ msgid "F_older"
-#~ msgstr "_Pastas"
-
-#~ msgid "Forget _Passwords"
-#~ msgstr "Esquecer _Senhas"
-
-#, fuzzy
-#~ msgid "Get Mail"
-#~ msgstr "_Correio"
-
-#, fuzzy
-#~ msgid "Hide _Deleted messages"
-#~ msgstr "Imprimir a mensagem seleccionada"
-
-#, fuzzy
-#~ msgid "Hide _Read messages"
-#~ msgstr "Novas mensagens de correio"
-
-#, fuzzy
-#~ msgid "Hide _Selected messages"
-#~ msgstr "Imprimir a mensagem seleccionada"
-
-#, fuzzy
-#~ msgid "Mail _Filters..."
-#~ msgstr "Druída dos _filtros"
-
-#, fuzzy
-#~ msgid "Move"
-#~ msgstr "Sg"
-
-#, fuzzy
-#~ msgid "Move message to a new folder"
-#~ msgstr "Gravar a mensagem na pasta especificada"
-
-#, fuzzy
-#~ msgid "Print Preview of message..."
-#~ msgstr "Prever impressão"
-
-#, fuzzy
-#~ msgid "Print message..."
-#~ msgstr "Encontrar mensagens"
-
-#, fuzzy
-#~ msgid "Reply to _All"
-#~ msgstr "Reponder para todos"
-
-#, fuzzy
-#~ msgid "Reply to _Sender"
-#~ msgstr "Reponder para todos"
-
-#, fuzzy
-#~ msgid "Select _All"
-#~ msgstr "Reponder para todos"
-
-#, fuzzy
-#~ msgid "Show _All messages"
-#~ msgstr "Novas mensagens de correio"
-
-#, fuzzy
-#~ msgid "_Copy to Folder..."
-#~ msgstr "Ir para a _pasta..."
-
-#, fuzzy
-#~ msgid "_Edit Message"
-#~ msgstr "Mensagem de _correio"
-
-#, fuzzy
-#~ msgid "_Mail Configuration..."
-#~ msgstr "Configuração do co_rreio..."
-
-#, fuzzy
-#~ msgid "_Message"
-#~ msgstr "Mensagem de _correio"
-
-#, fuzzy
-#~ msgid "_Move to Folder..."
-#~ msgstr "Ir para a _pasta..."
-
-#, fuzzy
-#~ msgid "_Open in New Window"
-#~ msgstr "Åbrir em nova janela"
-
-#, fuzzy
-#~ msgid "_Print Message"
-#~ msgstr "Encontrar mensagens"
-
-#, fuzzy
-#~ msgid "_Source"
-#~ msgstr "Fontes"
-
-#, fuzzy
-#~ msgid "_Undelete"
-#~ msgstr "Apagar"
-
-#, fuzzy
-#~ msgid "_Virtual Folder Editor..."
-#~ msgstr "_Pastas"
-
-#~ msgid "Attach"
-#~ msgstr "Anexar"
-
-#, fuzzy
-#~ msgid "Close the current file"
-#~ msgstr "Fechar o calendário corrente"
-
-#, fuzzy
-#~ msgid "Encrypt this message with PGP"
-#~ msgstr "Enviar a mensagem"
-
-#, fuzzy
-#~ msgid "Insert a file as text into the message"
-#~ msgstr "Anexar um ficheiro à mensagem"
-
-#, fuzzy
-#~ msgid "Open a file"
-#~ msgstr "Abrir ficheiro"
-
-#, fuzzy
-#~ msgid "Save As"
-#~ msgstr "Guardar Calendário como"
-
-#, fuzzy
-#~ msgid "Save in _folder... (FIXME)"
-#~ msgstr "Gravar na _pasta..."
-
-#, fuzzy
-#~ msgid "Save in folder..."
-#~ msgstr "Gravar na _pasta..."
-
-#~ msgid "Save the message in a specified folder"
-#~ msgstr "Gravar a mensagem na pasta especificada"
-
-#~ msgid "Send"
-#~ msgstr "Enviar"
-
-#, fuzzy
-#~ msgid "Send the mail in HTML format"
-#~ msgstr "Enviar mensagem em formato HTML"
-
-#, fuzzy
-#~ msgid "Send the message later"
-#~ msgstr "Enviar a mensagem"
-
-#, fuzzy
-#~ msgid "Send the message now"
-#~ msgstr "Enviar a mensagem"
-
-#, fuzzy
-#~ msgid "Send this message now"
-#~ msgstr "Enviar esta mensagem"
-
-#, fuzzy
-#~ msgid "Show / hide attachments"
-#~ msgstr "Ver/esconder anexos"
-
-#, fuzzy
-#~ msgid "Show _attachments"
-#~ msgstr "Ver _anexos"
-
-#, fuzzy
-#~ msgid "Sign this message with your PGP key"
-#~ msgstr "Enviar esta mensagem"
-
-#, fuzzy
-#~ msgid "_Open..."
-#~ msgstr "_Abrir"
-
-#~ msgid "Display a different folder"
-#~ msgstr "Mostrar uma pasta diferente"
-
-#, fuzzy
-#~ msgid "E_xit"
-#~ msgstr "Pró_ximo"
-
-#, fuzzy
-#~ msgid "Evolution bar _shortcut"
-#~ msgstr "Atalho para _barra do Evolution"
-
-#~ msgid "Getting _Started"
-#~ msgstr "_Começando"
-
-#, fuzzy
-#~ msgid "Show the _Folder Bar"
-#~ msgstr "Mostrar a barra de pastas"
-
-#, fuzzy
-#~ msgid "Toggle whether to show the folder bar"
-#~ msgstr "Mostrar a barra de pastas"
-
-#, fuzzy
-#~ msgid "Toggle whether to show the shortcut bar"
-#~ msgstr "Mostrar a barra de atalhos"
-
-#, fuzzy
-#~ msgid "Using the C_ontact Manager"
-#~ msgstr "Usando o programa de C_orreio"
-
-#~ msgid "Using the _Calendar"
-#~ msgstr "Usando o _Calendário"
-
-#~ msgid "Using the _Mailer"
-#~ msgstr "Usando o programa de C_orreio"
-
-#, fuzzy
-#~ msgid "_About Evolution..."
-#~ msgstr "Evolution"
-
-#, fuzzy
-#~ msgid "_Appointment (FIXME)"
-#~ msgstr "_Compromisso"
-
-#, fuzzy
-#~ msgid "_Contact (FIXME)"
-#~ msgstr "_Contacto"
-
-#~ msgid "_Folder"
-#~ msgstr "_Pasta"
-
-#, fuzzy
-#~ msgid "_Go to Folder..."
-#~ msgstr "Ir para a _pasta..."
-
-#, fuzzy
-#~ msgid "_Index"
-#~ msgstr "Índ_ice de ajuda"
-
-#, fuzzy
-#~ msgid "_Mail message (FIXME)"
-#~ msgstr "Mensagem de _correio"
-
-#~ msgid "Headings:"
-#~ msgstr "Cabeçalhos:"
-
-#~ msgid "Empty days:"
-#~ msgstr "Dias vazios:"
-
-#~ msgid "Appointments:"
-#~ msgstr "Compromissos:"
-
-#, fuzzy
-#~ msgid "may"
-#~ msgstr "Dia"
-
-#, fuzzy
-#~ msgid "sunday"
-#~ msgstr "Domingo"
-
-#, fuzzy
-#~ msgid "monday"
-#~ msgstr "Segunda-feira"
-
-#, fuzzy
-#~ msgid "tuesday"
-#~ msgstr "Domingo"
-
-#, fuzzy
-#~ msgid "thur"
-#~ msgstr "Outro"
-
-#, fuzzy
-#~ msgid "thurs"
-#~ msgstr "Outro"
-
-#, fuzzy
-#~ msgid "friday"
-#~ msgstr "Primário"
-
-#, fuzzy
-#~ msgid "today"
-#~ msgstr "Hoje"
-
-#, fuzzy
-#~ msgid "last"
-#~ msgstr "Colar"
-
-#, fuzzy
-#~ msgid "next"
-#~ msgstr "Pró_ximo"
-
-#, fuzzy
-#~ msgid "third"
-#~ msgstr "Outro"
-
-#, fuzzy
-#~ msgid "fourth"
-#~ msgstr "Hora"
-
-#, fuzzy
-#~ msgid "ninth"
-#~ msgstr "Imprimir"
-
-#, fuzzy
-#~ msgid "tenth"
-#~ msgstr "Enviar"
-
-#~ msgid "Year:"
-#~ msgstr "Ano:"
-
-#, fuzzy
-#~ msgid "Mail Source"
-#~ msgstr "atalhos principais"
-
-#, fuzzy
-#~ msgid "Send \"%s\""
-#~ msgstr "Segundos"
-
-#, fuzzy
-#~ msgid "Forward message \"%s\""
-#~ msgstr "Enviar esta mensagem"
-
-#, fuzzy
-#~ msgid "Synchronize \"%s\""
-#~ msgstr "Sincronizar"
-
-#, fuzzy
-#~ msgid "Save messages from folder \"%s\""
-#~ msgstr "Gravar a mensagem na pasta especificada"
-
-#, fuzzy
-#~ msgid "Rebuild message view"
-#~ msgstr "Encontrar mensagens"
-
-#~ msgid "_Actions"
-#~ msgstr "_Acções"
-
-#, fuzzy
-#~ msgid "_Save Calendar As"
-#~ msgstr "Guardar Calendário como"
-
-#, fuzzy
-#~ msgid "_Mail Configuration"
-#~ msgstr "Configuração do correio"
-
-#~ msgid "Insert a file as an attachment"
-#~ msgstr "Inserir ficheiro como anexo"
-
-#~ msgid "Gnome Calendar"
-#~ msgstr "Calendário do Gnome"
-
-#~ msgid "Show 1 year"
-#~ msgstr "Mostrar 1 ano"
-
-#~ msgid "_Close Calendar"
-#~ msgstr "_Fechar Calendário"
-
-#~ msgid "_New appointment..."
-#~ msgstr "_Novo compromisso..."
-
-#~ msgid "New appointment for _today..."
-#~ msgstr "Novo compromisso para _hoje..."
-
-#~ msgid "Create a new appointment for today"
-#~ msgstr "Criar um novo compromisso para hoje"
-
-#~ msgid "About Calendar"
-#~ msgstr "Sobre o calendário"
-
-#~ msgid "%s%s"
-#~ msgstr "%s%s"
-
-#, fuzzy
-#~ msgid "'s calendar"
-#~ msgstr "O seu calendário"
-
-#~ msgid "Syncing with the pilot..."
-#~ msgstr "Sincronizando com o pilot..."
-
-#~ msgid "Edit this item..."
-#~ msgstr "Editar este item..."
-
-#, fuzzy
-#~ msgid "To-do list"
-#~ msgstr "_Ferramentas"
-
-#~ msgid "Second"
-#~ msgstr "Segundo"
-
-#~ msgid "Cut selected item into clipboard"
-#~ msgstr "Cortar item seleccionado para a área de transferência"
-
-#~ msgid "Copy selected item into clipboard"
-#~ msgstr "Copiar item seleccionada para a área de transferência"
-
-#~ msgid "Select recipients' addresses"
-#~ msgstr "Seleccionar o endereço dos receptores"
-
-#~ msgid "Discard this message?"
-#~ msgstr "Descartar esta mensagem?"
-
-#~ msgid "Cut selected region into the clipboard"
-#~ msgstr "Cortar a região seleccionada para a área de transferência"
-
-#~ msgid "Copy selected region into the clipboard"
-#~ msgstr "Copiar a região seleccionada para a área de transferência"
-
-#~ msgid "Paste selected region into the clipboard"
-#~ msgstr "Colar a região seleccionada para a área de transferência"
-
-#~ msgid "Check for new mail"
-#~ msgstr "Verificar novo correio"
-
-#~ msgid "Composes a new mail message"
-#~ msgstr "Criar uma nova mensagem"
-
-#~ msgid "Task _Request"
-#~ msgstr "_Pedido de tarefa"
-
-#~ msgid "_Journal Entry"
-#~ msgstr "_Entrada diária?"
-
-#~ msgid "Clos_e All Items"
-#~ msgstr "_Fechar todos os items"
-
-#~ msgid "Closes all the open items"
-#~ msgstr "Fecha todos os items abertos"
-
-#~ msgid "Show _folder bar"
-#~ msgstr "Motrar barra de _pastas"
-
-#~ msgid ""
-#~ "Evolution detected that the file `%s' is a not a directory.\n"
-#~ "\n"
-#~ "Evolution can rename the file, delete the file or shutdown and\n"
-#~ "let you fix the problem."
-#~ msgstr ""
-#~ "O Evolution detectou que o ficheiro '%s' não é um directório.\n"
-#~ "\n"
-#~ "O Evolution pode mudar o nome ou apagar o ficheiro ou então desligue\n"
-#~ "e resolva o problema."
-
-#~ msgid ""
-#~ "This is a development version of Evolution.\n"
-#~ " Using the mail component on your mail files\n"
-#~ " is extremely hazardous.\n"
-#~ "Please backup all your mails before trying\n"
-#~ " this program. \n"
-#~ " You have been warned\n"
-#~ msgstr ""
-#~ "Esta verão do Evolution é de desenvolvimento.\n"
-#~ " Usar o componente de correio nos seus ficheiros\n"
-#~ " é extremamente perigoso.\n"
-#~ "Por favor faça uma cópia de segurança antes de usar\n"
-#~ " o programa.\n"
-#~ " Foi avisado\n"
-
-#~ msgid "We are sorry, Evolution's Folder Browser can not be initialized."
-#~ msgstr ""
-#~ "Pedimos desculpa. O navegador de pastas do Evolution não pode ser "
-#~ "inicializado."
-
-#~ msgid "Whether a message preview should be shown"
-#~ msgstr "Se uma previsão da mensagem deve ser mostrada"
-
-#~ msgid "The %s component doesn't support PersistStream!\n"
-#~ msgstr "O componente %s não suporta PersistStream!\n"
-
-#~ msgid "A folder containing mail items"
-#~ msgstr "Uma pasta contendo items de correio"
-
-#~ msgid "A folder containing contacts"
-#~ msgstr "Uma pasta contendo contactos"
-
-#~ msgid "A folder containing calendar entries"
-#~ msgstr "Uma pasta contendo entradas de calendário"
-
-#~ msgid "A service containing mail items"
-#~ msgstr "Um serviço contendo items de correio"
-
-#~ msgid "A service containing contacts"
-#~ msgstr "Um serviço contendo contactos"
-
-#~ msgid "A service containing calendar entries"
-#~ msgstr "Um serviço contendo entradas de calendário"
-
-#~ msgid "A service containing tasks"
-#~ msgstr "Um serviço contendo tarefas"
-
-#~ msgid "Rename Group"
-#~ msgstr "Mudar nome de grupo"
-
-#~ msgid "Advanced Find"
-#~ msgstr "Encontrar avançado"
-
-#~ msgid "Rename Shortcut"
-#~ msgstr "Mudar nome de atalho"
-
-#~ msgid "Executive Summary"
-#~ msgstr "Sumário executivo"
-
-#~ msgid "Your contacts list"
-#~ msgstr "A sua lista de contactos"
-
-#~ msgid "Tasks list"
-#~ msgstr "Lista de tarefas"
-
-#~ msgid "Enables some debugging functions"
-#~ msgstr "Liga algumas funções de deupração"
-
-#~ msgid "LEVEL"
-#~ msgstr "NÍVEL"
diff --git a/po/pt_BR.po b/po/pt_BR.po
deleted file mode 100644
index b27e463cb5..0000000000
--- a/po/pt_BR.po
+++ /dev/null
@@ -1,7328 +0,0 @@
-# Brazilian Translation of Evolution.
-# Copyright (C) 2000-2001 Free Software Foundation, Inc.
-# Gustavo Maciel Dias Vieira <gdvieira@zaz.com.br>, 2000-2001.
-#
-#: camel/providers/smtp/camel-smtp-transport.c:343
-msgid ""
-msgstr ""
-"Project-Id-Version: evolution 0.8\n"
-"POT-Creation-Date: 2001-01-26 17:19-0200\n"
-"PO-Revision-Date: 2001-01-26 17:42-02:00\n"
-"Last-Translator: Gustavo Maciel Dias Vieira <gdvieira@zaz.com.br>\n"
-"Language-Team: Brazilian Portuguese <ldp-br@bazar.conectiva.com.br>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ui/evolution-executive-summary.xml.h:1
-msgid "Add Service"
-msgstr "Adicionar serviço"
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr "Adicionar um novo serviço ao Executive Summary"
-
-#: ui/evolution-executive-summary.xml.h:3
-msgid "Create a new email"
-msgstr "Criar um novo correio eletrônico"
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr "Configurações do Executive Summary..."
-
-#: ui/evolution-executive-summary.xml.h:5
-msgid "New Mail"
-msgstr "Nova mensagem"
-
-#: executive-summary/component/component-factory.c:159
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr "Não é possível iniciar o componente Executive Summary do Evolution."
-
-#: camel/providers/vee/camel-vee-folder.c:604
-#, c-format
-msgid "No such message: %s"
-msgstr "Não existe tal mensagem: %s"
-
-#: executive-summary/component/e-summary-callbacks.c:285
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-"Você pode selecionar uma página HTML diferente para o fundo do Executive "
-"Summary.\n"
-"\n"
-"Apenas deixe-o vazio para o padrão"
-
-#: executive-summary/component/e-summary-url.c:61
-#: executive-summary/component/e-summary-url.c:66
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr "Abrir %s com o aplicativo Gnome padrão"
-
-#: executive-summary/component/e-summary-url.c:62
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr "Abrir %s com o navegador web Gnome padrão"
-
-#: executive-summary/component/e-summary-url.c:63
-#, c-format
-msgid "Send an email to %s"
-msgstr "Enviar uma mensagem para %s"
-
-#: executive-summary/component/e-summary-url.c:64
-#, c-format
-msgid "Change the view to %s"
-msgstr "Mudar a visualização para %s"
-
-#: executive-summary/component/e-summary-url.c:65
-#, c-format
-msgid "Run %s"
-msgstr "Executar %s"
-
-#: executive-summary/component/e-summary-url.c:67
-#, c-format
-msgid "Close %s"
-msgstr "Fechar %s"
-
-#: executive-summary/component/e-summary-url.c:68
-#, c-format
-msgid "Move %s to the left"
-msgstr "Mover %s para a esquerda"
-
-#: executive-summary/component/e-summary-url.c:69
-#, c-format
-msgid "Move %s to the right"
-msgstr "Mover %s para a direita"
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Move %s into the previous row"
-msgstr "Mover %s para a linha anterior"
-
-#: executive-summary/component/e-summary-url.c:71
-#, c-format
-msgid "Move %s into the next row"
-msgstr "Mover %s para a próxima linha"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Configure %s"
-msgstr "Configurar %s"
-
-#: executive-summary/component/e-summary.c:916
-#, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"Não é possível abrir o arquivo HTML:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:930
-#, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr ""
-"Erro ao ler dados:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:948
-msgid "File does not have a place for the services.\n"
-msgstr "Arquivo não possui um lugar para os serviços.\n"
-
-#: executive-summary/component/main.c:59
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-"O componente Executive Summary não pode iniciar o Bonobo.\n"
-"Se ocorreu uma mensagem de alerta sobre o RootPOA, isto provavelmente\n"
-"significa você compilou Bonobo com GOAD no lugar de OAF."
-
-#: executive-summary/test-service/rdf-summary.c:455
-#: executive-summary/test-service/rdf-summary.c:491
-#: executive-summary/test-service/rdf-summary.c:536
-msgid "Error"
-msgstr "Erro"
-
-#: mail/mail-config.c:799
-msgid "Connecting to server"
-msgstr "Conectando ao servidor"
-
-#: mail/mail-config.c:801
-msgid "Connect to server"
-msgstr "Conectar ao servidor"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr "Sobre este aplicativo"
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr "Sobre..."
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-msgid "Actio_ns"
-msgstr "_Ações"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-msgid "C_lear"
-msgstr "_Limpar"
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:5
-msgid "C_ut"
-msgstr "Recor_tar"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:6
-msgid "Clear"
-msgstr "Limpar"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:7
-msgid "Clear the selection"
-msgstr "Limpar a seleção"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:8
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:8 ui/evolution.xml.h:2
-msgid "Close"
-msgstr "Fechar"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:9
-msgid "Close the current file"
-msgstr "Fechar o arquivo atual"
-
-#: ui/evolution-event-editor.xml.h:10 ui/evolution-mail.xml.h:3
-#: ui/evolution-task-editor-dialog.xml.h:10
-msgid "Copy"
-msgstr "Copiar"
-
-#: ui/evolution-event-editor.xml.h:11 ui/evolution-task-editor-dialog.xml.h:11
-msgid "Copy the selection"
-msgstr "Copiar a seleção"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:12
-msgid "Cut"
-msgstr "Recortar"
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-task-editor-dialog.xml.h:13
-msgid "Cut the selection"
-msgstr "Recortar a seleção"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: calendar/gui/e-calendar-table.c:403
-#: calendar/gui/event-editor-dialog.glade.h:8 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:7 mail/folder-browser.c:684
-#: mail/mail-config.glade.h:19 mail/mail-view.c:150
-#: ui/evolution-addressbook.xml.h:3 ui/evolution-event-editor.xml.h:14
-#: ui/evolution-mail.xml.h:6 ui/evolution-task-editor-dialog.xml.h:14
-msgid "Delete"
-msgstr "Excluir"
-
-#: ui/evolution-task-editor-dialog.xml.h:15
-msgid "Delete this task"
-msgstr "Excluir esta tarefa"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Dump XML"
-msgstr "Descarregar XML"
-
-#: ui/evolution-event-editor.xml.h:17 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Dump the UI Xml description"
-msgstr "Descarregar a descrição de IU XML"
-
-#: ui/evolution-event-editor.xml.h:18 ui/evolution-task-editor-dialog.xml.h:18
-msgid "FIXME: Address _Book..."
-msgstr "FIXME: _Catálogo de endereços..."
-
-#: ui/evolution-task-editor-dialog.xml.h:19
-msgid "FIXME: Assig_n Task"
-msgstr "FIXME: Atri_buir tarefa"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "FIXME: Ch_oose Form..."
-msgstr "FIXME: Escolher _formulário..."
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "FIXME: Chec_k Names"
-msgstr "FIXME: _Verificar nomes"
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-msgid "FIXME: Cop_y to Folder..."
-msgstr "FIXME: _Copiar para pasta..."
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:23
-msgid "FIXME: D_esign a Form..."
-msgstr "FIXME: _Projetar um formulário..."
-
-#: ui/evolution-event-editor.xml.h:23 ui/evolution-task-editor-dialog.xml.h:24
-msgid "FIXME: Define Print _Styles"
-msgstr "FIXME: Definir estilos de _impressão"
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:25
-msgid "FIXME: Desi_gn This Form"
-msgstr "FIXME: Pro_jetar este formulário"
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:26
-msgid "FIXME: Fi_rst Item in Folder"
-msgstr "FIXME: P_rimeiro item na pasta"
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:27
-msgid "FIXME: For_ward"
-msgstr "FIXME: E_ncaminhar"
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:28
-msgid "FIXME: Help"
-msgstr "FIXME: Ajuda"
-
-#: ui/evolution-event-editor.xml.h:29 ui/evolution-task-editor-dialog.xml.h:29
-msgid "FIXME: In_complete Task"
-msgstr "FIXME: Tarefa imcom_pleta"
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:30
-msgid "FIXME: Insert File"
-msgstr "FIXME: Inserir arquivo"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:31
-msgid "FIXME: It_em..."
-msgstr "FIXME: It_em..."
-
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "FIXME: Meeting Re_quest"
-msgstr "FIXME: _Pedido de reunião"
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:33
-msgid "FIXME: Paste _Special... "
-msgstr "FIXME: Colar e_special..."
-
-#: ui/evolution-event-editor.xml.h:33 ui/evolution-task-editor-dialog.xml.h:34
-msgid "FIXME: Print Pre_view"
-msgstr "FIXME: Visuali_zar impressão"
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:35
-msgid "FIXME: Pu_blish Form As..."
-msgstr "FIXME: Pu_blicar formulário como..."
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:36
-msgid "FIXME: Publish _Form..."
-msgstr "FIXME: Publicar _formulário..."
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:37
-msgid "FIXME: Rec_urrence..."
-msgstr "FIXME: _Repetição..."
-
-#: ui/evolution-task-editor-dialog.xml.h:38
-msgid "FIXME: Reply to A_ll"
-msgstr "FIXME: Responder a _todos"
-
-#: ui/evolution-event-editor.xml.h:37 ui/evolution-task-editor-dialog.xml.h:39
-msgid "FIXME: S_end"
-msgstr "FIXME: En_viar"
-
-#: ui/evolution-task-editor-dialog.xml.h:40
-msgid "FIXME: S_end Status Report"
-msgstr "FIXME: En_viar relatório de estado"
-
-#: ui/evolution-task-editor-dialog.xml.h:41
-msgid "FIXME: S_kip Occurrence"
-msgstr "FIXME: Pu_lar ocorrência"
-
-#: ui/evolution-event-editor.xml.h:38 ui/evolution-task-editor-dialog.xml.h:42
-msgid "FIXME: Save Attac_hments..."
-msgstr "FIXME: Salvar ane_xo..."
-
-#: ui/evolution-event-editor.xml.h:39 ui/evolution-task-editor-dialog.xml.h:43
-msgid "FIXME: Script _Debugger"
-msgstr "FIXME: _Depurador de scripts"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-task-editor-dialog.xml.h:44
-msgid "FIXME: Task _Request"
-msgstr "FIXME: _Pedido de tarefa"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-msgid "FIXME: _Appointment"
-msgstr "FIXME: _Compromisso"
-
-#: ui/evolution-event-editor.xml.h:41 ui/evolution-task-editor-dialog.xml.h:46
-msgid "FIXME: _Contact"
-msgstr "FIXME: _Contato"
-
-#: ui/evolution-event-editor.xml.h:42 ui/evolution-task-editor-dialog.xml.h:47
-msgid "FIXME: _Customize..."
-msgstr "FIXME: _Personalizar..."
-
-#: ui/evolution-event-editor.xml.h:43 ui/evolution-task-editor-dialog.xml.h:48
-msgid "FIXME: _File..."
-msgstr "FIXME: _Arquivo..."
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-task-editor-dialog.xml.h:49
-msgid "FIXME: _Font..."
-msgstr "FIXME: _Fonte..."
-
-#: ui/evolution-event-editor.xml.h:45 ui/evolution-task-editor-dialog.xml.h:50
-msgid "FIXME: _Formatting"
-msgstr "FIXME: _Formatação"
-
-#: ui/evolution-event-editor.xml.h:46 ui/evolution-task-editor-dialog.xml.h:51
-msgid "FIXME: _Item"
-msgstr "FIXME: _Item"
-
-#: ui/evolution-event-editor.xml.h:47 ui/evolution-task-editor-dialog.xml.h:52
-msgid "FIXME: _Journal Entry"
-msgstr "FIXME: Item de _diário"
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-task-editor-dialog.xml.h:53
-msgid "FIXME: _Last Item in Folder"
-msgstr "FIXME: Úl_timo item na pasta"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:54
-msgid "FIXME: _Mail Message"
-msgstr "FIXME: _Mensagem de correio"
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "FIXME: _Mark Complete"
-msgstr "FIXME: _Marcar como cumprida"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:56
-msgid "FIXME: _Memo Style"
-msgstr "FIXME: Estilo de _memorando"
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:57
-msgid "FIXME: _Move to Folder..."
-msgstr "FIXME: _Mover para pasta..."
-
-#: ui/evolution-task-editor-dialog.xml.h:58
-msgid "FIXME: _New Task"
-msgstr "FIXME: _Nova tarefa"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:59
-msgid "FIXME: _Object..."
-msgstr "FIXME: _Objeto..."
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:60
-msgid "FIXME: _Paragraph..."
-msgstr "FIXME: _Parágrafo..."
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "FIXME: _Reply"
-msgstr "FIXME: _Responder"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-task-editor-dialog.xml.h:62
-msgid "FIXME: _Spelling..."
-msgstr "FIXME: _Ortografia..."
-
-#: ui/evolution-event-editor.xml.h:57 ui/evolution-task-editor-dialog.xml.h:63
-msgid "FIXME: _Standard"
-msgstr "FIXME: _Padrão"
-
-#: ui/evolution-event-editor.xml.h:58 ui/evolution-task-editor-dialog.xml.h:64
-msgid "FIXME: _Task"
-msgstr "FIXME: _Tarefa"
-
-#: ui/evolution-event-editor.xml.h:59 ui/evolution-task-editor-dialog.xml.h:65
-msgid "FIXME: _Unread Item"
-msgstr "FIXME: Item _não lido"
-
-#: ui/evolution-task-editor-dialog.xml.h:66
-msgid "FIXME: _note"
-msgstr "FIXME: _nota"
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-task-editor-dialog.xml.h:67
-msgid "FIXME: what goes here?"
-msgstr "FIXME: o que vai aqui?"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-message-composer.xml.h:6
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "F_ormat"
-msgstr "F_ormato"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-event-editor.xml.h:62
-#: ui/evolution-task-editor-dialog.xml.h:69
-msgid "Find"
-msgstr "Localizar"
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:70
-msgid "Find Again"
-msgstr "Localizar novamente"
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:71
-msgid "Find _Again"
-msgstr "Localizar _novamente"
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:72
-msgid "Go to the next item"
-msgstr "Vai para o próximo item"
-
-#: ui/evolution-event-editor.xml.h:66 ui/evolution-task-editor-dialog.xml.h:73
-msgid "Go to the previous item"
-msgstr "Vai para o item anterior"
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:74
-msgid "Modify the file's properties"
-msgstr "Modificar as propriedades do arquivo"
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:75
-msgid "N_ext"
-msgstr "P_róximo"
-
-#: ui/evolution-calendar.xml.h:15 ui/evolution-event-editor.xml.h:69
-#: ui/evolution-task-editor-dialog.xml.h:76
-msgid "Next"
-msgstr "Próximo"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-task-editor-dialog.xml.h:77
-msgid "Paste"
-msgstr "Colar"
-
-#: ui/evolution-event-editor.xml.h:71 ui/evolution-task-editor-dialog.xml.h:78
-msgid "Paste the clipboard"
-msgstr "Colar a área de transferência"
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:79
-msgid "Pre_vious"
-msgstr "An_terior"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:80
-msgid "Previous"
-msgstr "Anterior"
-
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-task-editor-dialog.xml.h:81
-msgid "Print S_etup..."
-msgstr "Configurar i_mpressão..."
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:82
-msgid "Print Setup"
-msgstr "Configurar impressão..."
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:76
-#: ui/evolution-task-editor-dialog.xml.h:83
-msgid "Print this item"
-msgstr "Imprime este item"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:77
-#: ui/evolution-task-editor-dialog.xml.h:84
-msgid "Print..."
-msgstr "Imprimir..."
-
-#: ui/evolution-event-editor.xml.h:78 ui/evolution-task-editor-dialog.xml.h:85
-msgid "Properties"
-msgstr "Propriedades"
-
-#: ui/evolution-event-editor.xml.h:79 ui/evolution-task-editor-dialog.xml.h:86
-msgid "Redo"
-msgstr "Refazer"
-
-#: ui/evolution-event-editor.xml.h:80 ui/evolution-task-editor-dialog.xml.h:87
-msgid "Redo the undone action"
-msgstr "Refazer a ação desfeita"
-
-#: ui/evolution-event-editor.xml.h:81 ui/evolution-task-editor-dialog.xml.h:88
-msgid "Replace"
-msgstr "Substituir"
-
-#: ui/evolution-event-editor.xml.h:82 ui/evolution-task-editor-dialog.xml.h:89
-msgid "Replace a string"
-msgstr "Substituir uma expressão"
-
-#: ui/evolution-event-editor.xml.h:83 ui/evolution-message-composer.xml.h:14
-#: ui/evolution-task-editor-dialog.xml.h:90
-msgid "Save"
-msgstr "Salvar"
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:84
-#: ui/evolution-message-composer.xml.h:16
-#: ui/evolution-task-editor-dialog.xml.h:91
-msgid "Save _As..."
-msgstr "Salvar _como..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:85
-#: ui/evolution-task-editor-dialog.xml.h:92
-msgid "Save and Close"
-msgstr "Salvar e fechar"
-
-#: ui/evolution-event-editor.xml.h:87 ui/evolution-message-composer.xml.h:20
-#: ui/evolution-task-editor-dialog.xml.h:93
-msgid "Save the current file"
-msgstr "Salvar o arquivo atual"
-
-#: ui/evolution-task-editor-dialog.xml.h:94
-msgid "Save the task and close the dialog box"
-msgstr "Salva a tarefa e fecha a caixa de diálogo"
-
-#: ui/evolution-event-editor.xml.h:91 ui/evolution-task-editor-dialog.xml.h:95
-msgid "Search again for the same string"
-msgstr "Buscar novamente pela mesma espressão"
-
-#: ui/evolution-event-editor.xml.h:92 ui/evolution-task-editor-dialog.xml.h:96
-msgid "Search for a string"
-msgstr "Buscar por uma expressão"
-
-#: ui/evolution-contact-editor.xml.h:12 ui/evolution-event-editor.xml.h:93
-#: ui/evolution-task-editor-dialog.xml.h:97
-msgid "See online help"
-msgstr "Ver ajuda on-line"
-
-#: ui/evolution-event-editor.xml.h:94 ui/evolution-task-editor-dialog.xml.h:98
-msgid "Select All"
-msgstr "Selecionar todos"
-
-#: ui/evolution-event-editor.xml.h:95 ui/evolution-task-editor-dialog.xml.h:99
-msgid "Select everything"
-msgstr "Selecionar tudo"
-
-#: ui/evolution-event-editor.xml.h:96
-#: ui/evolution-task-editor-dialog.xml.h:100
-msgid "Setup the page settings for your current printer"
-msgstr "Configurar a página para a sua impressora atual"
-
-#: ui/evolution-event-editor.xml.h:97
-#: ui/evolution-task-editor-dialog.xml.h:101
-msgid "Undo"
-msgstr "Desfazer"
-
-#: ui/evolution-event-editor.xml.h:98
-#: ui/evolution-task-editor-dialog.xml.h:102
-msgid "Undo the last action"
-msgstr "Desfazer a última ação"
-
-#: ui/evolution-event-editor.xml.h:99 ui/evolution-message-composer.xml.h:34
-#: ui/evolution-task-editor-dialog.xml.h:103
-msgid "_About..."
-msgstr "_Sobre..."
-
-#: ui/evolution-event-editor.xml.h:100 ui/evolution-message-composer.xml.h:35
-#: ui/evolution-task-editor-dialog.xml.h:104 ui/evolution.xml.h:28
-msgid "_Close"
-msgstr "_Fechar"
-
-#: ui/evolution-event-editor.xml.h:101
-#: ui/evolution-task-editor-dialog.xml.h:105
-msgid "_Copy"
-msgstr "_Copiar"
-
-#: ui/evolution-event-editor.xml.h:102 ui/evolution-message-composer.xml.h:36
-#: ui/evolution-task-editor-dialog.xml.h:106
-msgid "_Debug"
-msgstr "_Depurar"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:8
-#: ui/evolution-event-editor.xml.h:103 ui/evolution-mail.xml.h:49
-#: ui/evolution-task-editor-dialog.xml.h:107
-msgid "_Delete"
-msgstr "_Excluir"
-
-#: ui/evolution-event-editor.xml.h:104 ui/evolution-message-composer.xml.h:37
-#: ui/evolution-subscribe.xml.h:10 ui/evolution-task-editor-dialog.xml.h:108
-#: ui/evolution.xml.h:30
-msgid "_Edit"
-msgstr "_Editar"
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:105
-#: ui/evolution-message-composer.xml.h:38 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:109 ui/evolution.xml.h:31
-msgid "_File"
-msgstr "_Arquivo"
-
-#: ui/evolution-event-editor.xml.h:106
-#: ui/evolution-task-editor-dialog.xml.h:110
-msgid "_Find..."
-msgstr "_Localizar..."
-
-#: ui/evolution-event-editor.xml.h:107
-#: ui/evolution-task-editor-dialog.xml.h:111
-msgid "_Forms"
-msgstr "_Formulários"
-
-#: ui/evolution-event-editor.xml.h:108 ui/evolution-message-composer.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:112 ui/evolution.xml.h:34
-msgid "_Help"
-msgstr "Aj_uda"
-
-#: ui/evolution-event-editor.xml.h:109
-#: ui/evolution-task-editor-dialog.xml.h:113
-msgid "_Insert"
-msgstr "_Inserir"
-
-#: ui/evolution-event-editor.xml.h:110
-#: ui/evolution-task-editor-dialog.xml.h:114
-msgid "_Object"
-msgstr "_Objeto"
-
-#: ui/evolution-event-editor.xml.h:111
-#: ui/evolution-task-editor-dialog.xml.h:115
-msgid "_Paste"
-msgstr "C_olar"
-
-#: ui/evolution-event-editor.xml.h:112
-#: ui/evolution-task-editor-dialog.xml.h:116 ui/evolution-tasks.xml.h:7
-msgid "_Print"
-msgstr "_Imprimir"
-
-#: ui/evolution-event-editor.xml.h:113
-#: ui/evolution-task-editor-dialog.xml.h:117
-msgid "_Properties..."
-msgstr "_Propriedades..."
-
-#: ui/evolution-event-editor.xml.h:114
-#: ui/evolution-task-editor-dialog.xml.h:118
-msgid "_Redo"
-msgstr "_Refazer"
-
-#: ui/evolution-event-editor.xml.h:115
-#: ui/evolution-task-editor-dialog.xml.h:119
-msgid "_Replace..."
-msgstr "_Substituir..."
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:116
-#: ui/evolution-message-composer.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:120
-msgid "_Save"
-msgstr "_Salvar"
-
-#: ui/evolution-event-editor.xml.h:117
-#: ui/evolution-task-editor-dialog.xml.h:121
-msgid "_Toolbars"
-msgstr "_Barras de ferramentas"
-
-#: ui/evolution-addressbook.xml.h:17 ui/evolution-event-editor.xml.h:118
-#: ui/evolution-task-editor-dialog.xml.h:122
-msgid "_Tools"
-msgstr "_Ferramentas"
-
-#: ui/evolution-event-editor.xml.h:119
-#: ui/evolution-task-editor-dialog.xml.h:123
-msgid "_Undo"
-msgstr "_Desfazer"
-
-#: shell/e-storage-set-view.c:338 ui/evolution-event-editor.xml.h:120
-#: ui/evolution-message-composer.xml.h:44
-#: ui/evolution-task-editor-dialog.xml.h:124 ui/evolution.xml.h:41
-msgid "_View"
-msgstr "_Visualizar"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-msgid "Alter preferences"
-msgstr "Mudar preferências"
-
-#: ui/evolution-tasks.xml.h:2
-msgid "Create a new task"
-msgstr "Criar uma nova tarefa"
-
-#: ui/evolution-tasks.xml.h:3
-msgid "New"
-msgstr "Novo"
-
-#: mail/folder-browser.c:672 mail/mail-view.c:148
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-calendar.xml.h:18
-#: ui/evolution-mail.xml.h:26 ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr "Imprimir"
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr "Salvar tarefa como outra coisa"
-
-#: ui/evolution-tasks.xml.h:6
-msgid "Tasks Preferences..."
-msgstr "Preferências da tarefa..."
-
-#: ui/evolution-calendar.xml.h:30 ui/evolution-tasks.xml.h:8
-msgid "_Save As..."
-msgstr "Salvar _como..."
-
-#: addressbook/backend/ebook/e-card.c:3049
-msgid "Card: "
-msgstr "Cartão: "
-
-#: addressbook/backend/ebook/e-card.c:3051
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-"\n"
-"Nome: "
-
-#: addressbook/backend/ebook/e-card.c:3052
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-"\n"
-" Prefixo: "
-
-#: addressbook/backend/ebook/e-card.c:3053
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-"\n"
-" Dado: "
-
-#: addressbook/backend/ebook/e-card.c:3054
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-"\n"
-" Adicional: "
-
-#: addressbook/backend/ebook/e-card.c:3055
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-"\n"
-" Família: "
-
-#: addressbook/backend/ebook/e-card.c:3056
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-"\n"
-" Sufixo: "
-
-#: addressbook/backend/ebook/e-card.c:3070
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-"\n"
-"Data de nascimento: "
-
-#: addressbook/backend/ebook/e-card.c:3081
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-"\n"
-"Endereço:"
-
-#: addressbook/backend/ebook/e-card.c:3083
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-"\n"
-" Caixa postal:"
-
-#: addressbook/backend/ebook/e-card.c:3084
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-"\n"
-" Ext: "
-
-#: addressbook/backend/ebook/e-card.c:3085
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-"\n"
-" Rua: "
-
-#: addressbook/backend/ebook/e-card.c:3086
-msgid ""
-"\n"
-" City: "
-msgstr ""
-"\n"
-" Cidade: "
-
-#: addressbook/backend/ebook/e-card.c:3087
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-"\n"
-" Região: "
-
-#: addressbook/backend/ebook/e-card.c:3088
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-"\n"
-" Código postal:"
-
-#: addressbook/backend/ebook/e-card.c:3089
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-"\n"
-" País: "
-
-#: addressbook/backend/ebook/e-card.c:3102
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-"\n"
-"Rótulo de entrega: "
-
-#: addressbook/backend/ebook/e-card.c:3114
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-"\n"
-"Telefones:\n"
-
-#: addressbook/backend/ebook/e-card.c:3117
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-"\n"
-"Telefone:"
-
-#: addressbook/backend/ebook/e-card.c:3141
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-"\n"
-"E-mail:\n"
-
-#: addressbook/backend/ebook/e-card.c:3144
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-"\n"
-"E-mail:"
-
-#: addressbook/backend/ebook/e-card.c:3163
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-"\n"
-"Agente de correio: "
-
-#: addressbook/backend/ebook/e-card.c:3169
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-"\n"
-"Fuso horário: "
-
-#: addressbook/backend/ebook/e-card.c:3177
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-"\n"
-"Localização geográfica: "
-
-#: addressbook/backend/ebook/e-card.c:3181
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-"\n"
-"Cargo comercial: "
-
-#: addressbook/backend/ebook/e-card.c:3193
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-"\n"
-"Org: "
-
-#: addressbook/backend/ebook/e-card.c:3194
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-"\n"
-" Nome: "
-
-#: addressbook/backend/ebook/e-card.c:3195
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-"\n"
-" Unidade: "
-
-#: addressbook/backend/ebook/e-card.c:3196
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-"\n"
-" Unidade2: "
-
-#: addressbook/backend/ebook/e-card.c:3197
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-"\n"
-" Unidade3: "
-
-#: addressbook/backend/ebook/e-card.c:3198
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-"\n"
-" Unidade4: "
-
-#: addressbook/backend/ebook/e-card.c:3202
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-"\n"
-"Categorias: "
-
-#: addressbook/backend/ebook/e-card.c:3203
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-"\n"
-"Comentários: "
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3216
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-"\n"
-"String única: "
-
-#: addressbook/backend/ebook/e-card.c:3219
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-"\n"
-"Chave pública: "
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:16
-#: addressbook/backend/ebook/load-pine-addressbook.c:17
-#: addressbook/backend/ebook/test-client-list.c:18
-#: addressbook/backend/ebook/test-client.c:29
-#: addressbook/conduit/address-conduit.c:1089
-#: addressbook/gui/component/addressbook-factory.c:38
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965 calendar/gui/main.c:55
-msgid "Could not initialize Bonobo"
-msgstr "Não foi possível iniciar Bonobo"
-
-#. This array must be in the same order as enumerations
-#. in GnomePilotConduitSyncType as they are used as index.
-#. Custom type implies Disabled state.
-#.
-#: addressbook/conduit/address-conduit-control-applet.c:77
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:77
-#: calendar/conduits/todo/todo-conduit-control-applet.c:77
-msgid "Disabled"
-msgstr "Desativado"
-
-#: addressbook/conduit/address-conduit-control-applet.c:78
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:78
-#: calendar/conduits/todo/todo-conduit-control-applet.c:78
-msgid "Synchronize"
-msgstr "Sincronizar"
-
-#: addressbook/conduit/address-conduit-control-applet.c:79
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:79
-#: calendar/conduits/todo/todo-conduit-control-applet.c:79
-msgid "Copy From Pilot"
-msgstr "Copiar a partir do pilot"
-
-#: addressbook/conduit/address-conduit-control-applet.c:80
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:80
-#: calendar/conduits/todo/todo-conduit-control-applet.c:80
-msgid "Copy To Pilot"
-msgstr "Copiar para o pilot"
-
-#: addressbook/conduit/address-conduit-control-applet.c:81
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:81
-#: calendar/conduits/todo/todo-conduit-control-applet.c:81
-msgid "Merge From Pilot"
-msgstr "Mesclar a partir do pilot"
-
-#: addressbook/conduit/address-conduit-control-applet.c:82
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:82
-#: calendar/conduits/todo/todo-conduit-control-applet.c:82
-msgid "Merge To Pilot"
-msgstr "Mesclar para o pilot"
-
-#: addressbook/conduit/address-conduit-control-applet.c:121
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:121
-#: calendar/conduits/todo/todo-conduit-control-applet.c:121
-msgid "JP Rosevear <jpr@helixcode.com>"
-msgstr "JP Rosevear <jpr@helixcode.com>"
-
-#: addressbook/conduit/address-conduit-control-applet.c:122
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:122
-#: calendar/conduits/todo/todo-conduit-control-applet.c:122
-msgid "Original Author:"
-msgstr "Autor original:"
-
-#: addressbook/conduit/address-conduit-control-applet.c:123
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:123
-#: calendar/conduits/todo/todo-conduit-control-applet.c:123
-msgid "Eskil Heyn Olsen <deity@eskil.dk>"
-msgstr "Eskil Heyn Olsen <deity@eskil.dk>"
-
-#: addressbook/conduit/address-conduit-control-applet.c:127
-msgid "Evolution Addressbook Conduit"
-msgstr "Canal para catálogo de endereços do Evolution"
-
-#: addressbook/conduit/address-conduit-control-applet.c:128
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:128
-#: calendar/conduits/todo/todo-conduit-control-applet.c:128
-msgid "(C) 1998-2000 the Free Software Foundation and Helix Code"
-msgstr "(C) 1998-2000 the Free Software Foundation and Helix Code"
-
-#: addressbook/conduit/address-conduit-control-applet.c:130
-msgid "Configuration utility for the evolution addressbook conduit.\n"
-msgstr ""
-"Utilitário de configuração do canal para catálogo de endereços do "
-"Evolution.\n"
-
-#: addressbook/conduit/address-conduit-control-applet.c:131
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:131
-#: calendar/conduits/todo/todo-conduit-control-applet.c:131
-msgid "gnome-unknown.xpm"
-msgstr "gnome-unknown.xpm"
-
-#: addressbook/conduit/address-conduit-control-applet.c:162
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:162
-#: calendar/conduits/todo/todo-conduit-control-applet.c:162
-msgid "Synchronize Action"
-msgstr "Ação ao sincronizar"
-
-#: addressbook/conduit/address-conduit-control-applet.c:214
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:215
-#: calendar/conduits/todo/todo-conduit-control-applet.c:214
-msgid "Conduit state"
-msgstr "Estado do canal"
-
-#: addressbook/conduit/address-conduit-control-applet.c:266
-#: addressbook/conduit/address-conduit-control-applet.c:279
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:267
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:280
-#: calendar/conduits/todo/todo-conduit-control-applet.c:266
-#: calendar/conduits/todo/todo-conduit-control-applet.c:279
-msgid ""
-"No pilot configured, please choose the\n"
-"'Pilot Link Properties' capplet first."
-msgstr ""
-"Nenhum pilot configurado, por favor visite primeiramente\n"
-"o painel Pilot Link na central de controle."
-
-#: addressbook/conduit/address-conduit-control-applet.c:285
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:286
-#: calendar/conduits/todo/todo-conduit-control-applet.c:285
-msgid "Not connected to the gnome-pilot daemon"
-msgstr "Não conectado ao daemon Gnome Pilot"
-
-#: addressbook/conduit/address-conduit-control-applet.c:290
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:291
-#: calendar/conduits/todo/todo-conduit-control-applet.c:290
-msgid ""
-"An error occured when trying to fetch\n"
-"pilot list from the gnome-pilot daemon"
-msgstr ""
-"Ocorreu um erro ao tentar ler a lista de\n"
-"pilots a partir do daemon Gnome Pilot"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr "Não foi possível carregar cursor\n"
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr "EBook não foi carregado\n"
-
-#: addressbook/conduit/address-conduit.c:651
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr "Não foi possível iniciar o servidor wombat"
-
-#: addressbook/conduit/address-conduit.c:652
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr "Não foi possível iniciar wombat"
-
-#: addressbook/conduit/address-conduit.c:684
-#: addressbook/conduit/address-conduit.c:687
-msgid "Could not read pilot's Address application block"
-msgstr "Não foi possível ler os dados do aplicativo de endereços do pilot"
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-msgid "Delete Contact?"
-msgstr "Excluir contato?"
-
-#.
-#. * Translatable strings file generated by Glade.
-#. * Add this file to your project's POTFILES.in.
-#. * DO NOT compile it as part of your application.
-#.
-#: addressbook/contact-editor/e-contact-editor-strings.h:7
-msgid "_Add"
-msgstr "_Incluir"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:9
-msgid "Phone Types"
-msgstr "Tipos de telefone"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:10
-#: addressbook/contact-editor/e-contact-editor-strings.h:12
-msgid "New phone type"
-msgstr "Novo tipo de telefone"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:11
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:5
-msgid "Add"
-msgstr "Incluir"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:13
-msgid "Contact Editor"
-msgstr "Editor de contatos"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:14
-msgid "_Full Name..."
-msgstr "Nome _completo..."
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:15
-msgid "File As:"
-msgstr "Arquivar como:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:16
-msgid "Web page address:"
-msgstr "Endereço de página web:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:17
-msgid "Wants to receive _HTML mail"
-msgstr "Deseja receber correio _HTML"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:18
-msgid "_Business"
-msgstr "_Comercial"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:19
-msgid "_Home"
-msgstr "_Residencial"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:20
-msgid "Business _Fax"
-msgstr "_Fax comercial"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:21
-msgid "_Mobile"
-msgstr "Cel_ular"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:22
-#: addressbook/contact-editor/e-contact-editor.c:1336
-msgid "Primary Email"
-msgstr "E-mail principal"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:23
-msgid "B_usiness"
-msgstr "C_omercial"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:24
-msgid "_This is the mailing address"
-msgstr "E_ste é o endereço de correspondência"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:25
-msgid "C_ontacts..."
-msgstr "Co_ntatos..."
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:26
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/event-editor-dialog.glade.h:4
-msgid "Ca_tegories..."
-msgstr "Ca_tegorias..."
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:27
-msgid "_Job title:"
-msgstr "C_argo:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:28
-msgid "_Company:"
-msgstr "E_mpresa:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:29
-msgid "_Address..."
-msgstr "_Endereço..."
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:30
-#: calendar/gui/event-editor-dialog.glade.h:11 mail/mail-config.glade.h:26
-msgid "General"
-msgstr "Geral"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:31
-msgid "_Department:"
-msgstr "_Departamento:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:32
-msgid "_Office:"
-msgstr "_Escritório:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:33
-msgid "_Profession:"
-msgstr "_Profissão:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:34
-msgid "_Nickname:"
-msgstr "_Apelido:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:35
-msgid "_Spouse:"
-msgstr "_Cônjuge:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:36
-msgid "_Birthday:"
-msgstr "Ani_versário:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:37
-msgid "_Assistant's name:"
-msgstr "Nome do a_ssistente:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:38
-msgid "_Manager's Name:"
-msgstr "Nome do _gerente:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:39
-msgid "Anni_versary:"
-msgstr "_Bodas:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:40
-msgid "No_tes:"
-msgstr "_Notas:"
-
-#: addressbook/contact-editor/e-contact-editor-strings.h:41
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr "Detalhes"
-
-#: addressbook/contact-editor/e-contact-editor.c:1274
-#: addressbook/gui/widgets/e-addressbook-view.c:588
-msgid "Assistant"
-msgstr "Assistente:"
-
-#: addressbook/contact-editor/e-contact-editor.c:1275
-#: addressbook/contact-editor/e-contact-editor.c:1379
-#: addressbook/gui/widgets/e-addressbook-view.c:568
-msgid "Business"
-msgstr "Comercial"
-
-#: addressbook/contact-editor/e-contact-editor.c:1276
-#: addressbook/gui/widgets/e-addressbook-view.c:575
-msgid "Business 2"
-msgstr "Comercial 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1277
-#: addressbook/gui/widgets/e-addressbook-view.c:573
-msgid "Business Fax"
-msgstr "Fax comercial"
-
-#: addressbook/contact-editor/e-contact-editor.c:1278
-msgid "Callback"
-msgstr "Callback"
-
-#: addressbook/contact-editor/e-contact-editor.c:1279
-#: addressbook/gui/widgets/e-addressbook-view.c:572
-msgid "Car"
-msgstr "Carro"
-
-#: addressbook/contact-editor/e-contact-editor.c:1280
-msgid "Company"
-msgstr "Empresa"
-
-#: addressbook/contact-editor/e-contact-editor.c:1281
-#: addressbook/contact-editor/e-contact-editor.c:1380
-#: addressbook/gui/widgets/e-addressbook-view.c:569
-msgid "Home"
-msgstr "Residencial"
-
-#: addressbook/contact-editor/e-contact-editor.c:1282
-#: addressbook/gui/widgets/e-addressbook-view.c:576
-msgid "Home 2"
-msgstr "Residencial 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1283
-#: addressbook/gui/widgets/e-addressbook-view.c:574
-msgid "Home Fax"
-msgstr "Fax residencial"
-
-#: addressbook/contact-editor/e-contact-editor.c:1284
-#: addressbook/gui/widgets/e-addressbook-view.c:577
-msgid "ISDN"
-msgstr "ISDN"
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:571
-msgid "Mobile"
-msgstr "Celular"
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/contact-editor/e-contact-editor.c:1381
-#: addressbook/gui/widgets/e-addressbook-view.c:578
-#: mail/mail-config.glade.h:45
-msgid "Other"
-msgstr "Outro"
-
-#: addressbook/contact-editor/e-contact-editor.c:1287
-msgid "Other Fax"
-msgstr "Outro fax"
-
-#: addressbook/contact-editor/e-contact-editor.c:1288
-#: addressbook/gui/widgets/e-addressbook-view.c:579
-msgid "Pager"
-msgstr "Pager"
-
-#: addressbook/contact-editor/e-contact-editor.c:1289
-#: addressbook/gui/widgets/e-addressbook-view.c:567
-msgid "Primary"
-msgstr "Principal"
-
-#: addressbook/contact-editor/e-contact-editor.c:1290
-msgid "Radio"
-msgstr "Rádio"
-
-#: addressbook/contact-editor/e-contact-editor.c:1291
-msgid "Telex"
-msgstr "Telex"
-
-#: addressbook/contact-editor/e-contact-editor.c:1292
-msgid "TTY/TDD"
-msgstr "TTY/TDD"
-
-#: addressbook/contact-editor/e-contact-editor.c:1337
-#: addressbook/gui/widgets/e-addressbook-view.c:580
-msgid "Email 2"
-msgstr "E-mail 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1338
-#: addressbook/gui/widgets/e-addressbook-view.c:581
-msgid "Email 3"
-msgstr "E-mail 3"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr "Endereço _2:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr "Canadá"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr "Verificar endereço"
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr "_País:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr "Finlândia"
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr "EUA"
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr "_Endereço:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-msgid "_City:"
-msgstr "_Cidade:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr "Cai_xa postal:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr "E_stado:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr "CEP/Códi_go postal:"
-
-#.
-#. * Translatable strings file generated by Glade.
-#. * Add this file to your project's POTFILES.in.
-#. * DO NOT compile it as part of your application.
-#.
-#: addressbook/contact-editor/fullname-strings.h:7
-msgid "Check Full Name"
-msgstr "Verificar nome completo"
-
-#: addressbook/contact-editor/fullname-strings.h:8
-msgid ""
-"\n"
-"Mr.\n"
-"Mrs.\n"
-"Ms.\n"
-"Miss\n"
-"Dr.\n"
-msgstr ""
-"\n"
-"Sr.\n"
-"Sra.\n"
-"Srta.\n"
-"Senhorita\n"
-"Dr.\n"
-
-#: addressbook/contact-editor/fullname-strings.h:15
-msgid ""
-"\n"
-"Sr.\n"
-"Jr.\n"
-"I\n"
-"II\n"
-"III\n"
-"Esq.\n"
-msgstr ""
-"\n"
-"Sr.\n"
-"Jr.\n"
-"I\n"
-"II\n"
-"III\n"
-"Esq.\n"
-
-#: addressbook/contact-editor/fullname-strings.h:23
-msgid "_First:"
-msgstr "_Nome:"
-
-#: addressbook/contact-editor/fullname-strings.h:24
-msgid "_Title:"
-msgstr "_Tratamento:"
-
-#: addressbook/contact-editor/fullname-strings.h:25
-msgid "_Middle:"
-msgstr "Nome do _meio:"
-
-#: addressbook/contact-editor/fullname-strings.h:26
-msgid "_Last:"
-msgstr "_Sobrenome:"
-
-#: addressbook/contact-editor/fullname-strings.h:27
-msgid "_Suffix:"
-msgstr "S_ufixo:"
-
-#: addressbook/gui/component/addressbook.c:231
-msgid "As _Minicards"
-msgstr "Como _minicartões"
-
-#: addressbook/gui/component/addressbook.c:237
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr "Como _tabela"
-
-#: addressbook/gui/component/addressbook.c:406
-#, c-format
-msgid "Enter password for %s"
-msgstr "Entre senha para %s"
-
-#: addressbook/gui/component/addressbook.c:434
-msgid "Unable to open addressbook"
-msgstr "Não é possível abrir o catálogo de endereços"
-
-#: addressbook/gui/component/addressbook.c:439
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or have tried\n"
-"to access an LDAP server and don't have LDAP support\n"
-"compiled in. If you've entered a URI, check the URI for\n"
-"correctness and reenter. If not, you probably have\n"
-"attempted to access an LDAP server. If you wish to be\n"
-"able to use LDAP, you'll need to download and install\n"
-"OpenLDAP and recompile and install Evolution.\n"
-msgstr ""
-"Não foi possível abrir este catálogo de endereços. Isto \n"
-"significa que você forneceu uma URI incorreta ou tentou\n"
-"acessar um servidor LDAP sem que o suporte para LDAP esteja\n"
-"compilado. Se você entrou uma URI, verifique a URI e tente \n"
-"novamente. Caso contrário, você provavelmente tentou\n"
-"acessar um servidor LDAP. Se você quiser usar LDAP, você\n"
-"vai precisar baixar e instalar OpenLDAP e recompilar e\n"
-"instalar Evolution.\n"
-
-#: addressbook/gui/component/addressbook.c:562 mail/folder-browser.c:221
-msgid "Show All"
-msgstr "Exibir todos"
-
-#: addressbook/gui/component/addressbook.c:564 mail/folder-browser.c:223
-msgid "Advanced..."
-msgstr "Avançado..."
-
-#: addressbook/gui/component/addressbook.c:594
-msgid "Any field contains"
-msgstr "Qualquer campo contém"
-
-#: addressbook/gui/component/addressbook.c:595
-msgid "Name contains"
-msgstr "Nome contém"
-
-#: addressbook/gui/component/addressbook.c:596
-msgid "Email contains"
-msgstr "E-mail contém"
-
-#: addressbook/gui/component/addressbook.c:739
-msgid "The URI that the Folder Browser will display"
-msgstr "A URI que o navegador de pastas vai exibir"
-
-#: addressbook/gui/component/addressbook-storage.c:95
-msgid "Other Contacts"
-msgstr "Outros contatos"
-
-#: addressbook/gui/component/addressbook-config.c:139
-msgid "LDAP Server"
-msgstr "Servidor LDAP"
-
-#: addressbook/gui/component/addressbook-config.c:141
-msgid "File"
-msgstr "Arquivo"
-
-#: addressbook/gui/component/addressbook-config.c:144
-msgid "Unknown addressbook type"
-msgstr "Tipo de catálogo de endereços desconhecido"
-
-#: addressbook/gui/component/addressbook-config.c:153
-msgid "None (anonymous mode)"
-msgstr "Nenhum (modo anônimo)"
-
-#: addressbook/gui/component/addressbook-config.c:155
-#: camel/providers/imap/camel-imap-store.c:249
-#: camel/providers/nntp/camel-nntp-store.c:293
-#: camel/providers/pop3/camel-pop3-store.c:146
-msgid "Password"
-msgstr "Senha"
-
-#: addressbook/gui/component/addressbook-config.c:157
-msgid "SASL"
-msgstr "SASL"
-
-#: addressbook/gui/component/addressbook-config.c:160
-msgid "Unknown auth type"
-msgstr "Tipo de autenticação desconhecido"
-
-#: addressbook/gui/component/addressbook-config.c:169
-msgid "Base"
-msgstr "Base"
-
-#: addressbook/gui/component/addressbook-config.c:171
-msgid "One"
-msgstr "Um"
-
-#: addressbook/gui/component/addressbook-config.c:173
-msgid "Subtree"
-msgstr "Subárvore"
-
-#: addressbook/gui/component/addressbook-config.c:176
-msgid "Unknown scope type"
-msgstr "Tipo de escopo desconhecido"
-
-#: addressbook/gui/component/addressbook-config.c:309
-msgid "Bind DN:"
-msgstr "Vincular DN:"
-
-#: addressbook/gui/component/addressbook-config.c:311
-msgid "Remember this password"
-msgstr "Lembrar esta senha"
-
-#: addressbook/gui/component/addressbook-config.c:360
-#: mail/mail-config.glade.h:27
-msgid "Host:"
-msgstr "Máquina:"
-
-#: addressbook/gui/component/addressbook-config.c:361
-msgid "Port:"
-msgstr "Porta:"
-
-#: addressbook/gui/component/addressbook-config.c:364
-msgid "Root DN:"
-msgstr "DN raiz:"
-
-#: addressbook/gui/component/addressbook-config.c:384
-msgid "Search Scope:"
-msgstr "Escopo de busca:"
-
-#: addressbook/gui/component/addressbook-config.c:438
-#: mail/mail-config.glade.h:9
-msgid "Authentication:"
-msgstr "Autenticação:"
-
-#: addressbook/gui/component/addressbook-config.c:455
-#: mail/mail-config-druid.c:460 mail/mail-config.glade.h:48
-msgid "Path:"
-msgstr "Caminho:"
-
-#: addressbook/gui/component/addressbook-config.c:460
-msgid "Create path if it doesn't exist."
-msgstr "Criar caminho se ele não existir."
-
-#: addressbook/gui/component/addressbook-config.c:593
-msgid "Edit Addressbook"
-msgstr "Editar catálogo de endereços"
-
-#: addressbook/gui/component/addressbook-config.c:595
-msgid "Add Addressbook"
-msgstr "Incluir catálogo de endereços"
-
-#: addressbook/gui/component/addressbook-config.c:611
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-"Selecione o tipo de catálogo de endereços você possui e entre os dados sobre "
-"ele."
-
-#: addressbook/gui/component/addressbook-config.c:616
-#: mail/mail-config.glade.h:40
-msgid "Name:"
-msgstr "Nome:"
-
-#: addressbook/gui/component/addressbook-config.c:617
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr "Descrição"
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-msgid "Addressbook Sources"
-msgstr "Fontes de catálogos de endereços"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: filter/filter.glade.h:3 mail/folder-browser.c:670
-#: mail/mail-config.glade.h:22
-msgid "Edit"
-msgstr "Editar"
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-#: addressbook/gui/widgets/e-addressbook-view.c:565
-msgid "Name"
-msgstr "Nome"
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-msgid "URI"
-msgstr "URI"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr "Localizar..."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-msgid "Message Recipients"
-msgstr "Destinatários da mensagem"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-msgid "Select Names"
-msgstr "Selecionar nomes"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-msgid "Select name from:"
-msgstr "Selecionar nome de:"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:151
-#: mail/mail-search-dialogue.c:104
-msgid "Search"
-msgstr "Buscar"
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr "123"
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr "a"
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr "b"
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr "c"
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr "d"
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr "e"
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr "f"
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr "g"
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr "h"
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr "i"
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr "j"
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr "k"
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr "l"
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr "m"
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr "n"
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-msgid "o"
-msgstr "o"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr "p"
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr "q"
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-msgid "r"
-msgstr "r"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr "s"
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr "t"
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr "u"
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr "v"
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr "w"
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr "x"
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr "y"
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr "z"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:469
-#: addressbook/gui/widgets/e-minicard.c:374
-msgid "Save as VCard"
-msgstr "Salvar como vCard"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:566
-msgid "Email"
-msgstr "E-mail"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:570
-msgid "Organization"
-msgstr "Empresa"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:582
-msgid "Web Site"
-msgstr "Site web"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:583
-msgid "Department"
-msgstr "Departamento"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:584
-msgid "Office"
-msgstr "Escritório"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:585
-msgid "Title"
-msgstr "Tratamento"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:586
-msgid "Profession"
-msgstr "Profissão"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:587
-msgid "Manager"
-msgstr "Gerente"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:589
-msgid "Nickname"
-msgstr "Apelido"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:590
-msgid "Spouse"
-msgstr "Cônjuge"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:591
-msgid "Note"
-msgstr "Nota"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:592
-msgid "Free-busy URL"
-msgstr "URL livre-ocupado"
-
-#: addressbook/gui/widgets/e-minicard-control.c:280
-msgid "Save in addressbook"
-msgstr "Salvar no catálogo de endereços"
-
-#: addressbook/gui/widgets/e-minicard-view.c:129
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-"\n"
-"\n"
-"Não há itens neste modo de exibição\n"
-"\n"
-"Clique duas vezes aqui para criar um novo contato."
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr "10 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr "8 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr "Formulários vazios no fim:"
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr "Corpo"
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr "Inferior:"
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr "Tamanho:"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr "Fonte..."
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr "Fontes"
-
-#: addressbook/printing/e-contact-print.glade.h:9
-msgid "Footer:"
-msgstr "Rodapé:"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr "Formato"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-msgid "Header"
-msgstr "Cabeçalho"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr "Cabeçalho/rodapé"
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr "Cabeçalhos"
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr "Cabeçalhos para cada carta"
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr "Altura:"
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr "Aparecem uma após a outra"
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr "Incluir:"
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr "Paisagem"
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr "Esquerda:"
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr "Tabulações ao lado"
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr "Margens"
-
-#: addressbook/printing/e-contact-print.glade.h:22
-msgid "Number of columns:"
-msgstr "Número de colunas:"
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr "Opções"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr "Orientação"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr "Página"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-msgid "Page Setup:"
-msgstr "Configuração de página:"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr "Papel"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr "Fonte de papel:"
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr "Retrato"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr "Visualizar:"
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr "Imprimir usando sombreamento"
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr "Inverter nas páginas pares"
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr "Direita:"
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr "Seções:"
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr "Sombreamento"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-msgid "Size:"
-msgstr "Tamanho:"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr "Começam em uma nova página"
-
-#: addressbook/printing/e-contact-print.glade.h:38
-msgid "Style name:"
-msgstr "Nome do estilo:"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr "Superior:"
-
-#: addressbook/printing/e-contact-print.glade.h:40 mail/mail-config.glade.h:70
-msgid "Type:"
-msgstr "Tipo:"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr "Largura:"
-
-#: addressbook/printing/e-contact-print.glade.h:42
-msgid "label26"
-msgstr "label26"
-
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:127
-msgid "Evolution Calendar Conduit"
-msgstr "Canal para agenda do Evolution"
-
-#: calendar/conduits/calendar/calendar-conduit-control-applet.c:130
-msgid "Configuration utility for the evolution calendar conduit.\n"
-msgstr "Utilitário de configuração do canal para agenda do Evolution.\n"
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr "Erro ao comunicar com o servidor de agenda"
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr "Não foi possível ler os dados do aplicativo de agenda do pilot"
-
-#: calendar/conduits/todo/todo-conduit-control-applet.c:127
-msgid "Evolution ToDo Conduit"
-msgstr "Canal para tarefas do Evolution"
-
-#: calendar/conduits/todo/todo-conduit-control-applet.c:130
-msgid "Configuration utility for the evolution todo conduit.\n"
-msgstr "Utilitário de configuração do canal para tarefas do Evolution.\n"
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr "Não foi possível ler os dados do aplicativo de tarefas do pilot"
-
-#: calendar/gui/calendar-commands.c:245
-msgid "File not found"
-msgstr "Arquivo não encontrado"
-
-#: calendar/gui/calendar-commands.c:269
-msgid "Open calendar"
-msgstr "Abrir agenda"
-
-#: calendar/gui/calendar-commands.c:311
-msgid "Save calendar"
-msgstr "Salvar agenda"
-
-#: calendar/gui/calendar-commands.c:448
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-"Não foi possível criar a visualização da agenda. Por favor verifique a "
-"configuração do seu ORBit e OAF."
-
-#. strftime format of a weekday and a date.
-#: calendar/gui/calendar-model.c:332
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:467
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2499
-msgid "%a %m/%d/%Y"
-msgstr "%a %d/%m/%Y"
-
-#. strftime format of a weekday, a date and a time,
-#. in 24-hour format.
-#: calendar/gui/calendar-model.c:336 calendar/gui/calendar-model.c:766
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr "%a %d/%m/%Y %H:%M:%S"
-
-#. strftime format of a weekday, a date and a time,
-#. in 12-hour format.
-#: calendar/gui/calendar-model.c:340 calendar/gui/calendar-model.c:769
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr "%a %d/%m/%Y %I:%M:%S %p"
-
-#: calendar/gui/calendar-model.c:374
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-msgid "Public"
-msgstr "Público"
-
-#: calendar/gui/calendar-model.c:377
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-msgid "Private"
-msgstr "Particular"
-
-#: calendar/gui/calendar-model.c:380
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-msgid "Confidential"
-msgstr "Confidencial"
-
-#: calendar/gui/calendar-model.c:383 calendar/gui/calendar-model.c:551
-#: camel/providers/smtp/camel-smtp-transport.c:181
-msgid "Unknown"
-msgstr "Desconhecido"
-
-#: calendar/gui/calendar-model.c:471
-msgid "N"
-msgstr "N"
-
-#: calendar/gui/calendar-model.c:471
-msgid "S"
-msgstr "S"
-
-#: calendar/gui/calendar-model.c:473
-msgid "E"
-msgstr "L"
-
-#: calendar/gui/calendar-model.c:473
-msgid "W"
-msgstr "O"
-
-#: calendar/gui/calendar-model.c:545
-msgid "Transparent"
-msgstr "Transparente"
-
-#: calendar/gui/calendar-model.c:548
-msgid "Opaque"
-msgstr "Opaco"
-
-#: calendar/gui/calendar-model.c:774
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-"A data deve ser fornecida no formato: \n"
-"\n"
-"%s"
-
-#. strptime format for a date.
-#: calendar/gui/calendar-model.c:875 calendar/gui/calendar-model.c:923
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:471
-#: widgets/misc/e-dateedit.c:1273 widgets/misc/e-dateedit.c:1454
-msgid "%m/%d/%Y"
-msgstr "%d/%m/%Y"
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: calendar/gui/calendar-model.c:893
-msgid "%I:%M:%S %p%n"
-msgstr "%I:%M:%S %p%n"
-
-#. strptime format for a time of day, in 24-hour format.
-#: calendar/gui/calendar-model.c:896
-msgid "%H:%M:%S%n"
-msgstr "%H:%M:%S%n"
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: calendar/gui/calendar-model.c:900
-msgid "%I:%M %p%n"
-msgstr "%I:%M %p%n"
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: calendar/gui/calendar-model.c:903
-msgid "%H:%M%n"
-msgstr "%H:%M%n"
-
-#: calendar/gui/calendar-model.c:1023
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-"A posição geográfica deve ser fornecida no formato: \n"
-"\n"
-"45.436845,125.862501"
-
-#: calendar/gui/calendar-model.c:1063
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr "O valor percentual deve estar entre 0 e 100, inclusive"
-
-#: calendar/gui/calendar-model.c:1103
-msgid "The priority must be between 1 and 9, inclusive"
-msgstr "A prioridade deve estar entre 1 e 9, inclusive"
-
-#: calendar/gui/calendar-summary.c:97
-msgid "%A, %e %B %Y"
-msgstr "%A, %e de %B de %Y"
-
-#: calendar/gui/calendar-summary.c:138 calendar/gui/calendar-summary.c:144
-msgid "%I:%M%p"
-msgstr "%H:%M"
-
-#: calendar/gui/calendar-summary.c:302
-msgid "<b>Error loading calendar</b>"
-msgstr "<b>Erro ao carregar agenda</b>"
-
-#: calendar/gui/calendar-summary.c:314
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr "<b>Erro ao carregar agenda:<br>Método não suportado"
-
-#: calendar/gui/calendar-summary.c:484
-msgid "Display"
-msgstr "Exibição"
-
-#: calendar/gui/calendar-summary.c:489
-msgid "Show appointments"
-msgstr "Exibir compromissos"
-
-#: calendar/gui/calendar-summary.c:497
-msgid "Show tasks"
-msgstr "Exibir tarefas"
-
-#: calendar/gui/calendar-summary.c:583
-msgid "Loading Calendar"
-msgstr "Carregando agenda"
-
-#: calendar/gui/control-factory.c:127
-msgid "The URI that the calendar will display"
-msgstr "A URI que a agenda vai exibir"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:184
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr "Alarme em %A %d %b %Y %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:191
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr "Notificação sobre seu compromisso em %A %d %b %Y %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:202
-msgid "No summary available."
-msgstr "Sem resumo disponível."
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-msgid "Edit appointment"
-msgstr "Editar compromisso"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-msgid "Snooze"
-msgstr "Adiar"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr "Tempo de adiamento (minutos)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr "05 minutos"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr "10 minutos"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr "12 horas (AM/PM)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr "15 minutos"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr "24 horas"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr "30 minutos"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr "60 minutos"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr "Alarmes param após"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr "Alarmes audíveis"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr "Soe um bip quando janelas de alarme aparecerem."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-msgid "Calendar"
-msgstr "Agenda"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr "Preferências da agenda"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "Cores"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr "Comprimir fins de semana"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr "Opções do navegador de datas"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-msgid "Defaults"
-msgstr "Padrões"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr "Opções de exibição"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:159
-msgid "Due Date"
-msgstr "Prazo de conclusão"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr "Permitir adiamento por"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr "Término do dia:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr "Primeiro dia da semana:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr "sex"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:440
-msgid "Friday"
-msgstr "Sexta-feira"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr "Realçar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr "Tarefas com prazo para hoje"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr "Tarefas com prazo para hoje"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr "Tarefas com prazo ainda não vencido"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr "Tarefas com prazo ainda não vencido"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr "seg"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:436
-msgid "Monday"
-msgstr "Segunda-feira"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr "Tarefas atrasadas"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr "Tarefas atrasadas"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-msgid "Pick a color"
-msgstr "Escolha uma cor"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:162
-msgid "Priority"
-msgstr "Prioridade"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-msgid "Remind me of all appointments"
-msgstr "Lembre-me de todos os compromissos"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-msgid "Reminders"
-msgstr "Lembretes"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr "sáb"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:441
-msgid "Saturday"
-msgstr "Sábado"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr "Exibir"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-msgid "Show appointment end times"
-msgstr "Exibir hora de término de compromissos"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr "Exibir números das semanas"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr "Início do dia:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr "dom"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:442
-msgid "Sunday"
-msgstr "Domigo"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-msgid "TaskPad"
-msgstr "Tarefas"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr "qui"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:439
-msgid "Thursday"
-msgstr "Quinta-feira"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr "Tempo até o prazo"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr "Unidades de tempo:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr "Formato da hora:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr "ter"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:437
-msgid "Tuesday"
-msgstr "Terça-feira"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr "Alarmes visuais"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr "qua"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:438
-msgid "Wednesday"
-msgstr "Quarta-feira"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr "Semana útil"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr "minutos antes que ocorram."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:76
-msgid "seconds."
-msgstr "segundos."
-
-#: calendar/gui/dialogs/delete-comp.c:63
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr "Você tem certeza que deseja excluir o comprimisso `%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:66
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr "Você tem certeza que deseja excluir este comprimisso sem título?"
-
-#: calendar/gui/dialogs/delete-comp.c:72
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr "Você tem certeza que deseja excluir a tarefa `%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:75
-msgid "Are you sure you want to delete this untitled task?"
-msgstr "Você tem certeza que deseja excluir esta tarefa sem título?"
-
-#: calendar/gui/dialogs/delete-comp.c:81
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr "Você tem certeza que deseja excluir o item de diário `%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:84
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr "Você tem certeza que deseja excluir este item de diário sem título?"
-
-#: calendar/gui/dialogs/save-comp.c:46
-msgid "Do you want to save changes?"
-msgstr "Você deseja salvar as modificações?"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr "% Cu_mprida:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-msgid "C_lassification:"
-msgstr "C_lassificação:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-msgid "Cancelled"
-msgstr "Cancelada"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-msgid "Completed"
-msgstr "Cumprida"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr "Cumprida em:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-msgid "High"
-msgstr "Alta"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-msgid "In Progress"
-msgstr "Em progresso"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-msgid "Low"
-msgstr "Baixa"
-
-#. add a "None" option to the stores menu
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: mail/mail-account-editor.c:674 mail/mail-account-editor.c:676
-#: mail/mail-account-editor.c:725 mail/mail-accounts.c:114
-#: mail/mail-config-druid.c:872 mail/mail-config.glade.h:42
-#: shell/e-shell-view.c:1116 widgets/misc/e-dateedit.c:421
-#: widgets/misc/e-dateedit.c:1330 widgets/misc/e-dateedit.c:1445
-msgid "None"
-msgstr "Nenhum"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-msgid "Normal"
-msgstr "Normal"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-msgid "Not Started"
-msgstr "Não iniciada"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-msgid "S_ummary"
-msgstr "_Resumo"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-msgid "Sta_rt Date:"
-msgstr "Data de _início:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr "Tarefa"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-msgid "URL:"
-msgstr "URL:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-msgid "Undefined"
-msgstr "Indefinido"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-msgid "_Contacts..."
-msgstr "Co_ntatos..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-msgid "_Due Date:"
-msgstr "Prazo de _conclusão:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-msgid "_Priority:"
-msgstr "_Prioridade:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-msgid "_Status:"
-msgstr "_Estado:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "task-editor-dialog"
-msgstr "task-editor-dialog"
-
-#: calendar/gui/dialogs/task-editor.c:692
-msgid "Edit Task"
-msgstr "Editar tarefa"
-
-#: calendar/gui/dialogs/task-editor.c:698 calendar/gui/event-editor.c:338
-msgid "No summary"
-msgstr "Sem resumo"
-
-#: calendar/gui/dialogs/task-editor.c:704 calendar/gui/event-editor.c:344
-#, c-format
-msgid "Appointment - %s"
-msgstr "Compromisso - %s"
-
-#: calendar/gui/dialogs/task-editor.c:707 calendar/gui/event-editor.c:347
-#, c-format
-msgid "Task - %s"
-msgstr "Tarefa - %s"
-
-#: calendar/gui/dialogs/task-editor.c:710 calendar/gui/event-editor.c:350
-#, c-format
-msgid "Journal entry - %s"
-msgstr "Item de diário - %s"
-
-#: calendar/gui/e-calendar-table.c:154
-msgid "Categories"
-msgstr "Categorias"
-
-#: calendar/gui/e-calendar-table.c:155
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Classification"
-msgstr "Classificação"
-
-#: calendar/gui/e-calendar-table.c:156
-msgid "Completion Date"
-msgstr "Data cumprida"
-
-#: calendar/gui/e-calendar-table.c:157
-msgid "End Date"
-msgstr "Data de término"
-
-#: calendar/gui/e-calendar-table.c:158
-msgid "Start Date"
-msgstr "Data de início"
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "Geographical Position"
-msgstr "Posição geográfica"
-
-#: calendar/gui/e-calendar-table.c:161
-msgid "Precent complete"
-msgstr "Porcentagem cumprida"
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Summary"
-msgstr "Resumo"
-
-#: calendar/gui/e-calendar-table.c:164
-msgid "Transparency"
-msgstr "Transparência"
-
-#: calendar/gui/e-calendar-table.c:165
-msgid "URL"
-msgstr "URL"
-
-#: calendar/gui/e-calendar-table.c:166
-msgid "Alarms"
-msgstr "Alarmes"
-
-#: calendar/gui/e-calendar-table.c:397
-msgid "Open..."
-msgstr "Abrir..."
-
-#: calendar/gui/e-calendar-table.c:398
-msgid "Open the task"
-msgstr "Abre a tarefa"
-
-#: calendar/gui/e-calendar-table.c:400
-msgid "Mark Complete"
-msgstr "Marcar como cumprida"
-
-#: calendar/gui/e-calendar-table.c:401
-msgid "Mark the task complete"
-msgstr "Marca a tarefa como cumprida"
-
-#: calendar/gui/e-calendar-table.c:404
-msgid "Delete the task"
-msgstr "Exclui a tarefa"
-
-#: calendar/gui/e-day-view-time-item.c:517
-#, c-format
-msgid "%02i minute divisions"
-msgstr "%02i frações de minuto"
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:271 calendar/gui/e-day-view.c:1271
-#: calendar/gui/e-week-view-main-item.c:321
-msgid "%A %d %B"
-msgstr "%A %d %B"
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:275 calendar/gui/e-day-view.c:1285
-#: calendar/gui/e-week-view-main-item.c:330
-msgid "%a %d %b"
-msgstr "%a %d %b"
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:279 calendar/gui/e-day-view.c:1298
-#: calendar/gui/e-week-view-main-item.c:344
-msgid "%d %b"
-msgstr "%d %b"
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:553 calendar/gui/e-week-view.c:287
-#: calendar/gui/print.c:610
-msgid "am"
-msgstr "am"
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:556 calendar/gui/e-week-view.c:290
-#: calendar/gui/print.c:609
-msgid "pm"
-msgstr "pm"
-
-#: calendar/gui/e-day-view.c:3008 calendar/gui/e-day-view.c:3015
-#: calendar/gui/e-day-view.c:3024 calendar/gui/e-week-view.c:3211
-#: calendar/gui/e-week-view.c:3218 calendar/gui/e-week-view.c:3227
-msgid "New appointment..."
-msgstr "Novo compromisso..."
-
-#: calendar/gui/e-day-view.c:3012 calendar/gui/e-day-view.c:3019
-#: calendar/gui/e-week-view.c:3215 calendar/gui/e-week-view.c:3222
-msgid "Edit this appointment..."
-msgstr "Editar este compromisso..."
-
-#: calendar/gui/e-day-view.c:3013 calendar/gui/e-week-view.c:3216
-#: ui/evolution-event-editor.xml.h:15
-msgid "Delete this appointment"
-msgstr "Excluir este compromisso"
-
-#: calendar/gui/e-day-view.c:3020 calendar/gui/e-week-view.c:3223
-msgid "Make this appointment movable"
-msgstr "Tornar este compromisso móvel"
-
-#: calendar/gui/e-day-view.c:3021 calendar/gui/e-week-view.c:3224
-msgid "Delete this occurrence"
-msgstr "Excluir esta ocorrência"
-
-#: calendar/gui/e-day-view.c:3022 calendar/gui/e-week-view.c:3225
-msgid "Delete all occurrences"
-msgstr "Excluir todas as ocorrências"
-
-#: calendar/gui/e-tasks.c:140 calendar/gui/e-tasks.c:454
-#: calendar/gui/e-tasks.c:487
-msgid "All"
-msgstr "Todos"
-
-#: calendar/gui/e-tasks.c:146
-msgid "Category:"
-msgstr "Categoria:"
-
-#: calendar/gui/e-tasks.c:284
-#, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "Não foi possível carregar as tarefas em `%s'"
-
-#: calendar/gui/e-tasks.c:296
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr "O método necessário para carregar `%s' não é suportado"
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:338
-msgid "%d %B"
-msgstr "%d %B"
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr "Dia _inteiro"
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-msgid "Appointment Basics"
-msgstr "Básico do compromisso"
-
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Custom recurrence"
-msgstr "Repetição personalizada"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-msgid "Days"
-msgstr "Dias"
-
-#: calendar/gui/event-editor-dialog.glade.h:9
-msgid "Every"
-msgstr "A cada"
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Exceptions"
-msgstr "Exceções"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-msgid "Hours"
-msgstr "Horas"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-msgid "Mail _to:"
-msgstr "Co_rreio para:"
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-msgid "Minutes"
-msgstr "Minutos"
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-msgid "Modify"
-msgstr "Modificar"
-
-#: calendar/gui/event-editor-dialog.glade.h:16
-msgid "No recurrence"
-msgstr "Sem repetição"
-
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Preview"
-msgstr "Visualizar"
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Pri_vate"
-msgstr "Pa_rticular"
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-msgid "Pu_blic"
-msgstr "Pú_blico"
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-msgid "Recurrence"
-msgstr "Repetição"
-
-#: calendar/gui/event-editor-dialog.glade.h:21
-msgid "Recurrence Rule"
-msgstr "Regra de repetição"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-msgid "Reminder"
-msgstr "Lembrete"
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-msgid "Simple recurrence"
-msgstr "Repetição simples"
-
-#: calendar/gui/event-editor-dialog.glade.h:24
-msgid "Su_mmary:"
-msgstr "R_esumo:"
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-msgid "Time"
-msgstr "Tempo"
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "_Audio"
-msgstr "_Audio"
-
-#: calendar/gui/event-editor-dialog.glade.h:27
-msgid "_Confidential"
-msgstr "_Confidencial"
-
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Contacts"
-msgstr "Co_ntatos"
-
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Display"
-msgstr "_Exibição"
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-msgid "_End time:"
-msgstr "Hora de _término:"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Mail"
-msgstr "_Correio"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Program"
-msgstr "_Programa"
-
-#: calendar/gui/event-editor-dialog.glade.h:33
-msgid "_Run program:"
-msgstr "E_xecutar programa:"
-
-#: calendar/gui/event-editor-dialog.glade.h:34
-msgid "_Start time:"
-msgstr "Hora de _início:"
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "_Starting date:"
-msgstr "Data de _início:"
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-msgid "day(s)"
-msgstr "dia(s)"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "event-editor-dialog"
-msgstr "event-editor-dialog"
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "for"
-msgstr "por"
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-msgid "forever"
-msgstr "para sempre"
-
-#: calendar/gui/event-editor-dialog.glade.h:40
-msgid "label21"
-msgstr "label21"
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "month(s)"
-msgstr "mês(es)"
-
-#: calendar/gui/event-editor-dialog.glade.h:42
-msgid "until"
-msgstr "até"
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-msgid "week(s)"
-msgstr "semana(s)"
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "year(s)"
-msgstr "ano(s)"
-
-#: calendar/gui/event-editor.c:332
-msgid "Edit Appointment"
-msgstr "Editar compromisso"
-
-#: calendar/gui/event-editor.c:410
-msgid "on"
-msgstr "no"
-
-#: calendar/gui/event-editor.c:435 filter/filter-datespec.c:65
-msgid "day"
-msgstr "dia"
-
-#: calendar/gui/event-editor.c:562
-msgid "on the"
-msgstr "no"
-
-#: calendar/gui/event-editor.c:569
-msgid "th"
-msgstr "º"
-
-#: calendar/gui/event-editor.c:723
-msgid "occurrences"
-msgstr "ocorrências"
-
-#: calendar/gui/event-editor.c:840
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr "Este compromisso possui repetições que o Evolution não pode editar."
-
-#: calendar/gui/event-editor.c:3092 calendar/gui/print.c:1090
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1093
-msgid "%a %b %d %Y"
-msgstr "%a %d %b %Y"
-
-#: calendar/gui/gnome-cal.c:696
-#, c-format
-msgid "Could not open the folder in `%s'"
-msgstr "Não foi possível abrir pasta em `%s'"
-
-#: calendar/gui/gnome-cal.c:707
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr "O método necessário para abrir `%s' não é suportado"
-
-#: calendar/gui/goto-dialog.glade.h:1
-msgid "April"
-msgstr "Abril"
-
-#: calendar/gui/goto-dialog.glade.h:2
-msgid "August"
-msgstr "Agosto"
-
-#: calendar/gui/goto-dialog.glade.h:3
-msgid "December"
-msgstr "Dezembro"
-
-#: calendar/gui/goto-dialog.glade.h:4
-msgid "February"
-msgstr "Fevereiro"
-
-#: calendar/gui/goto-dialog.glade.h:5
-msgid "Go To Date"
-msgstr "Ir para data"
-
-#: calendar/gui/goto-dialog.glade.h:6
-msgid "Go To Today"
-msgstr "Ir para hoje"
-
-#: calendar/gui/goto-dialog.glade.h:7
-msgid "January"
-msgstr "Janeiro"
-
-#: calendar/gui/goto-dialog.glade.h:8
-msgid "July"
-msgstr "Julho"
-
-#: calendar/gui/goto-dialog.glade.h:9
-msgid "June"
-msgstr "Junho"
-
-#: calendar/gui/goto-dialog.glade.h:10
-msgid "March"
-msgstr "Março"
-
-#: calendar/gui/goto-dialog.glade.h:11
-msgid "May"
-msgstr "Maio"
-
-#: calendar/gui/goto-dialog.glade.h:12
-msgid "November"
-msgstr "Novembro"
-
-#: calendar/gui/goto-dialog.glade.h:13
-msgid "October"
-msgstr "Outubro"
-
-#: calendar/gui/goto-dialog.glade.h:14
-msgid "September"
-msgstr "Setembro"
-
-#: calendar/gui/main.c:50
-msgid "Could not initialize GNOME"
-msgstr "Não foi possível iniciar Gnome"
-
-#: calendar/gui/print.c:293
-msgid "1st"
-msgstr "1º"
-
-#: calendar/gui/print.c:293
-msgid "2nd"
-msgstr "2º"
-
-#: calendar/gui/print.c:293
-msgid "3rd"
-msgstr "3º"
-
-#: calendar/gui/print.c:293
-msgid "4th"
-msgstr "4º"
-
-#: calendar/gui/print.c:293
-msgid "5th"
-msgstr "5º"
-
-#: calendar/gui/print.c:294
-msgid "6th"
-msgstr "6º"
-
-#: calendar/gui/print.c:294
-msgid "7th"
-msgstr "7º"
-
-#: calendar/gui/print.c:294
-msgid "8th"
-msgstr "8º"
-
-#: calendar/gui/print.c:294
-msgid "9th"
-msgstr "9º"
-
-#: calendar/gui/print.c:294
-msgid "10th"
-msgstr "10º"
-
-#: calendar/gui/print.c:295
-msgid "11th"
-msgstr "11º"
-
-#: calendar/gui/print.c:295
-msgid "12th"
-msgstr "12º"
-
-#: calendar/gui/print.c:295
-msgid "13th"
-msgstr "13º"
-
-#: calendar/gui/print.c:295
-msgid "14th"
-msgstr "14º"
-
-#: calendar/gui/print.c:295
-msgid "15th"
-msgstr "15º"
-
-#: calendar/gui/print.c:296
-msgid "16th"
-msgstr "16º"
-
-#: calendar/gui/print.c:296
-msgid "17th"
-msgstr "17º"
-
-#: calendar/gui/print.c:296
-msgid "18th"
-msgstr "18º"
-
-#: calendar/gui/print.c:296
-msgid "19th"
-msgstr "19º"
-
-#: calendar/gui/print.c:296
-msgid "20th"
-msgstr "20º"
-
-#: calendar/gui/print.c:297
-msgid "21st"
-msgstr "21º"
-
-#: calendar/gui/print.c:297
-msgid "22nd"
-msgstr "22º"
-
-#: calendar/gui/print.c:297
-msgid "23rd"
-msgstr "23º"
-
-#: calendar/gui/print.c:297
-msgid "24th"
-msgstr "24º"
-
-#: calendar/gui/print.c:297
-msgid "25th"
-msgstr "25º"
-
-#: calendar/gui/print.c:298
-msgid "26th"
-msgstr "26º"
-
-#: calendar/gui/print.c:298
-msgid "27th"
-msgstr "27º"
-
-#: calendar/gui/print.c:298
-msgid "28th"
-msgstr "28º"
-
-#: calendar/gui/print.c:298
-msgid "29th"
-msgstr "29º"
-
-#: calendar/gui/print.c:298
-msgid "30th"
-msgstr "30º"
-
-#: calendar/gui/print.c:299
-msgid "31st"
-msgstr "31º"
-
-#: calendar/gui/print.c:355
-msgid "Su"
-msgstr "do"
-
-#: calendar/gui/print.c:355
-msgid "Mo"
-msgstr "se"
-
-#: calendar/gui/print.c:355
-msgid "Tu"
-msgstr "te"
-
-#: calendar/gui/print.c:355
-msgid "We"
-msgstr "qu"
-
-#: calendar/gui/print.c:355
-msgid "Th"
-msgstr "qu"
-
-#: calendar/gui/print.c:355
-msgid "Fr"
-msgstr "se"
-
-#: calendar/gui/print.c:355
-msgid "Sa"
-msgstr "sá"
-
-#: calendar/gui/print.c:941
-msgid "Tasks"
-msgstr "Tarefas"
-
-#. Day
-#: calendar/gui/print.c:1071
-msgid "Current day (%a %b %d %Y)"
-msgstr "Dia atual (%a %d %b %Y)"
-
-#: calendar/gui/print.c:1085 calendar/gui/print.c:1089
-msgid "%a %b %d"
-msgstr "%a %d %b"
-
-#: calendar/gui/print.c:1086
-msgid "%a %d %Y"
-msgstr "%a %d %Y"
-
-#: calendar/gui/print.c:1097
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr "Semana atual (%s - %s)"
-
-#. Month
-#: calendar/gui/print.c:1105
-msgid "Current month (%b %Y)"
-msgstr "Mês atual (%b %Y)"
-
-#. Year
-#: calendar/gui/print.c:1112
-msgid "Current year (%Y)"
-msgstr "Ano atual (%Y)"
-
-#: calendar/gui/print.c:1149
-msgid "Print Calendar"
-msgstr "Imprimir agenda"
-
-#: calendar/gui/print.c:1314 mail/mail-callbacks.c:1035
-msgid "Print Preview"
-msgstr "Visualizar impressão"
-
-#: calendar/gui/tasks-control.c:105
-msgid "The URI of the tasks folder to display"
-msgstr "A URI da pasta de tarefas a ser exibida"
-
-#: calendar/gui/weekday-picker.c:313 calendar/gui/weekday-picker.c:408
-msgid "SMTWTFS"
-msgstr "DSTQQSS"
-
-#: camel/camel-filter-search.c:420 camel/camel-filter-search.c:426
-#, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr "Erro ao executar busca por filtro: %s: %s"
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:90 camel/camel-lock.c:109 camel/camel-movemail.c:136
-#: camel/camel-movemail.c:183
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "Não foi possível criar arquivo de bloqueio para %s: %s"
-
-#: camel/camel-lock.c:149 camel/camel-movemail.c:217
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr ""
-"Tempo esgotado ao tentar obter arquivo de bloqueio em %s. Tente novamente "
-"mais tarde."
-
-#: camel/camel-lock.c:199
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr "Falha ao obter bloqueio usando fcntl(2): %s"
-
-#: camel/camel-lock.c:253
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr "Falha ao obter bloqueio usando flock(2): %s"
-
-#: camel/camel-movemail.c:99
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr "Não foi possível verificar arquivo de correio %s: %s"
-
-#: camel/camel-movemail.c:146
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr "Não foi possível abrir arquivo de correio %s: %s"
-
-#: camel/camel-movemail.c:156
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr "Não foi possível abrir arquivo de correio temporário %s: %s"
-
-#: camel/camel-movemail.c:197
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr "Não foi possível testar arquivo de bloqueio para %s: %s"
-
-#: camel/camel-movemail.c:243
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr "Erro ao ler arquivo de correio: %s"
-
-#: camel/camel-movemail.c:254
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr "Erro ao escrever arquivo de correio temporário: %s"
-
-#: camel/camel-movemail.c:272
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr "Falha ao armazenar correio no arquivo temporário %s: %s"
-
-#: camel/camel-movemail.c:304
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr "Não foi possível criar pipe: %s"
-
-#: camel/camel-movemail.c:316
-#, c-format
-msgid "Could not fork: %s"
-msgstr "Não foi possível executar fork: %s"
-
-#: camel/camel-movemail.c:354
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr "Falha no programa Movemail: %s"
-
-#: camel/camel-movemail.c:355
-msgid "(Unknown error)"
-msgstr "(Erro desconhecido)"
-
-#: camel/camel-provider.c:133
-#, c-format
-msgid "Could not load %s: %s"
-msgstr "Não foi possível carregar %s: %s"
-
-#: camel/camel-provider.c:141
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr "Não foi possível carregar %s: Sem código de inicialização no módulo."
-
-#: camel/camel-remote-store.c:184
-#, c-format
-msgid "%s server %s"
-msgstr "%s servidor %s"
-
-#: camel/camel-remote-store.c:188
-#, c-format
-msgid "%s service for %s on %s"
-msgstr "%s serviço para %s em %s"
-
-#: camel/camel-remote-store.c:318
-msgid "Connection cancelled"
-msgstr "Conexão cancelada"
-
-#: camel/camel-remote-store.c:321 camel/camel-remote-store.c:334
-#: camel/providers/smtp/camel-smtp-transport.c:214
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr "Não foi possível conectar à %s (porta %d): %s."
-
-#: camel/camel-remote-store.c:322 camel/camel-remote-store.c:335
-msgid "(unknown host)"
-msgstr "(máquina desconhecida)"
-
-#: camel/camel-remote-store.c:426 camel/camel-remote-store.c:488
-#: camel/camel-remote-store.c:556
-#: camel/providers/imap/camel-imap-command.c:289
-msgid "Operation cancelled"
-msgstr "Operação cancelada"
-
-#: camel/camel-service.c:137
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr "A URL '%s' precisa de um componente nome do usuário"
-
-#: camel/camel-service.c:146
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr "A URL '%s' precisa de um componente máquina"
-
-#: camel/camel-service.c:155
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr "A URL '%s' precisa de um componente caminho"
-
-#: camel/camel-service.c:520
-#, c-format
-msgid "No such host %s."
-msgstr "Não existe a máquina %s."
-
-#: camel/camel-service.c:523
-#, c-format
-msgid "Temporarily unable to look up hostname %s."
-msgstr "Não é possível temporariamente procurar nome de máquina %s."
-
-#: camel/camel-session.c:299
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr "Não existe provedor disponível para o protocolo `%s'"
-
-#: camel/camel-session.c:390
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"Não foi possível criar diretório %s:\n"
-"%s"
-
-#: camel/camel-url.c:75
-#, c-format
-msgid "URL string `%s' contains no protocol"
-msgstr "A URL `%s' não possui um protocolo"
-
-#: camel/camel-url.c:90
-#, c-format
-msgid "URL string `%s' contains an invalid protocol"
-msgstr "A URL `%s' contém um protocolo inválido"
-
-#: camel/camel-url.c:150
-#, c-format
-msgid "Port number in URL `%s' is non-numeric"
-msgstr "Número de porta na URL `%s' não é númerico"
-
-#: camel/providers/imap/camel-imap-auth.c:133
-#, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr ""
-"Não foi possível obter ticket do Kerberos:\n"
-"%s"
-
-#: camel/providers/imap/camel-imap-auth.c:205
-msgid "Bad authentication response from server."
-msgstr "Resposta de autenticação inválida do servidor."
-
-#: camel/providers/imap/camel-imap-command.c:234
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "Resposta inesperada do servidor IMAP: %s"
-
-#: camel/providers/imap/camel-imap-command.c:242
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr "Falhou o comando IMAP: %s"
-
-#: camel/providers/imap/camel-imap-command.c:243 shell/e-storage.c:433
-msgid "Unknown error"
-msgstr "Erro desconhecido"
-
-#: camel/providers/imap/camel-imap-command.c:297
-msgid "Server response ended too soon."
-msgstr "Resposta do servidor terminou cedo demais."
-
-#: camel/providers/imap/camel-imap-command.c:433
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr "Resposta do servidor IMAP não contém informação de %s"
-
-#: camel/providers/imap/camel-imap-command.c:469
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr "Resposta OK inesperada do servidor IMAP: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:198
-#, c-format
-msgid "Could not load summary for %s"
-msgstr "Não foi possível carregar resumo para %s"
-
-#: camel/providers/imap/camel-imap-folder.c:697
-#: camel/providers/imap/camel-imap-folder.c:859
-msgid "Could not find message body in FETCH response."
-msgstr "Não foi possível localizar corpo da mensagem na resposta FETCH."
-
-#: camel/providers/imap/camel-imap-provider.c:39
-msgid "IMAPv4"
-msgstr "IMAPv4"
-
-#: camel/providers/imap/camel-imap-provider.c:41
-msgid "For reading and storing mail on IMAP servers."
-msgstr "Para ler e armazenar correio em servidores IMAP."
-
-#: camel/providers/imap/camel-imap-store.c:251
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr "Esta opção conectará ao servidor IMAP usando uma senha em texto claro."
-
-#: camel/providers/imap/camel-imap-store.c:260
-msgid "Kerberos 4"
-msgstr "Kerberos 4"
-
-#: camel/providers/imap/camel-imap-store.c:262
-msgid ""
-"This option will connect to the IMAP server using Kerberos 4 authentication."
-msgstr "Esta opção conectará ao servidor IMAP usando autenticação Kerberos 4."
-
-#: camel/providers/imap/camel-imap-store.c:361
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr "%sPor favor entre a senha IMAP para %s@%s"
-
-#: camel/providers/imap/camel-imap-store.c:389
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Não é possível autenticar com o servidor IMAP.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/imap/camel-imap-store.c:645
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr "Não foi possível criar o diretório %s: %s"
-
-#: camel/providers/local/camel-local-provider.c:36
-msgid "MH-format mail directories"
-msgstr "Diretórios de correio no formato MH"
-
-#: camel/providers/local/camel-local-provider.c:37
-msgid "For storing local mail in MH-like mail directories"
-msgstr "Para armazenar correio local em diretórios de correio do tipo MH"
-
-#: camel/providers/local/camel-local-provider.c:47
-msgid "Standard Unix mailbox file"
-msgstr "Arquivo mbox padrão do Unix"
-
-#: camel/providers/local/camel-local-provider.c:48
-msgid "For storing local mail in standard mbox format"
-msgstr "Para armazenar correio local no formato padrão mbox"
-
-#: camel/providers/local/camel-local-provider.c:58
-msgid "Qmail maildir-format mail files"
-msgstr "Arquivos de correio no formato qmail maildir"
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "For storing local mail in qmail maildir directories"
-msgstr "Para armazenar correio local em diretórios no formato qmail maildir"
-
-#: camel/providers/local/camel-local-store.c:122
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr "Raiz de armazenagem %s não é um caminho absoluto"
-
-#: camel/providers/local/camel-local-store.c:129
-#, c-format
-msgid "Store root %s is not a regular directory"
-msgstr "Raiz de armazenagem %s não é um diretório comum"
-
-#: camel/providers/local/camel-local-store.c:137
-#: camel/providers/local/camel-local-store.c:153
-#, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "Não é possível obter pasta: %s: %s"
-
-#: camel/providers/local/camel-local-store.c:168
-msgid "Local stores do not have a root folder"
-msgstr "Repositórios locais não possuem uma pasta raiz"
-
-#: camel/providers/local/camel-local-store.c:176
-msgid "Local stores do not have a default folder"
-msgstr "Repositórios locais não possuem uma pasta padrão"
-
-#: camel/providers/local/camel-local-store.c:186
-msgid "Local folders may not be nested."
-msgstr "Pastas locais não podem ser aninhadas."
-
-#: camel/providers/local/camel-local-store.c:200
-#, c-format
-msgid "Local mail file %s"
-msgstr "Arquivo de correio local %s"
-
-#: camel/providers/local/camel-local-store.c:256
-#, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr "Não foi possível renomear pasta %s para %s: %s"
-
-#: camel/providers/local/camel-local-store.c:297
-#, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr "Não foi possível excluir arquivo de resumo de pasta `%s': %s"
-
-#: camel/providers/local/camel-local-store.c:306
-#, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr "Não foi possível excluir arquivo de índice de pasta `%s': %s"
-
-#: camel/providers/local/camel-maildir-folder.c:148
-#: camel/providers/local/camel-maildir-folder.c:156
-#: camel/providers/local/camel-maildir-folder.c:167
-#, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr "Não é possível acrescentar mensagem à pasta maildir: %s: %s"
-
-#: camel/providers/local/camel-maildir-folder.c:195
-#: camel/providers/local/camel-maildir-folder.c:207
-#: camel/providers/local/camel-maildir-folder.c:215
-#: camel/providers/local/camel-mbox-folder.c:317
-#: camel/providers/local/camel-mh-folder.c:183
-#: camel/providers/local/camel-mh-folder.c:192
-#: camel/providers/local/camel-mh-folder.c:200
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-"Não é possível obter mensagem: %s\n"
-" %s"
-
-#: camel/providers/local/camel-maildir-folder.c:195
-#: camel/providers/local/camel-mbox-folder.c:317
-#: camel/providers/local/camel-mh-folder.c:183
-msgid "No such message"
-msgstr "Não existe tal mensagem"
-
-#: camel/providers/local/camel-maildir-folder.c:216
-#: camel/providers/local/camel-mh-folder.c:201
-msgid "Invalid message contents"
-msgstr "Conteúdo de mensagem inválido"
-
-#: camel/providers/local/camel-maildir-store.c:102
-#: camel/providers/local/camel-mh-store.c:96
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-"Não foi possível abrir pasta `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:106
-#: camel/providers/local/camel-mbox-store.c:108
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr "Pasta `%s' não existe."
-
-#: camel/providers/local/camel-maildir-store.c:113
-#: camel/providers/local/camel-mh-store.c:109
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-"Não foi possível criar pasta `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:128
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr "`%s' não é um diretório maildir."
-
-#: camel/providers/local/camel-maildir-store.c:157
-#: camel/providers/local/camel-maildir-store.c:194
-#: camel/providers/local/camel-mh-store.c:133
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr "Não foi possível excluir a pasta `%s': %s"
-
-#: camel/providers/local/camel-maildir-store.c:158
-msgid "not a maildir directory"
-msgstr "não é um diretório maildir"
-
-#: camel/providers/local/camel-mbox-folder.c:201
-#, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr "Não é possível abrir mbox: %s: %s\n"
-
-#: camel/providers/local/camel-mbox-folder.c:257
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr "Não é possível acrescentar mensagem ao arquivo mbox: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:333
-#: camel/providers/local/camel-mbox-folder.c:365
-#: camel/providers/local/camel-mbox-folder.c:378
-#, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-"Não é possível obter mensagem: %s da pasta %s\n"
-" %s"
-
-#: camel/providers/local/camel-mbox-folder.c:366
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr "A pasta aparenta estar corrompida de modo irrecuperável."
-
-#: camel/providers/local/camel-mbox-folder.c:379
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr "Falha ao construir a mensagem: mbox corrompida?"
-
-#: camel/providers/local/camel-mbox-store.c:101
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-"Não foi possível abrir arquivo `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:117
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-"Não foi possível criar arquivo `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:126
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr "`%s' não é um arquivo comum."
-
-#: camel/providers/local/camel-mbox-store.c:145
-#: camel/providers/local/camel-mbox-store.c:168
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-"Não foi possível excluir pasta `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:160
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr "Pasta `%s' não está vazia. Ela não foi excluída."
-
-#: camel/providers/local/camel-mbox-summary.c:240
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr "Não foi possível abrir pasta: %s: resumindo da posição %ld: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:274
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr "Erro fatal do analisador de correio próximo à posição %ld na pasta %s"
-
-#: camel/providers/local/camel-mbox-summary.c:349
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr "Não é possível resumir a pasta: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:483
-#: camel/providers/local/camel-mbox-summary.c:674
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr "Não foi possível abrir pasta para resumir: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:499
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr "Não é possível abrir mbox temporário: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:520
-#: camel/providers/local/camel-mbox-summary.c:528
-#: camel/providers/local/camel-mbox-summary.c:707
-#: camel/providers/local/camel-mbox-summary.c:715
-msgid "Summary and folder mismatch, even after a sync"
-msgstr "O resumo e a pasta não coincidem, mesmo após uma sincronização"
-
-#: camel/providers/local/camel-mbox-summary.c:571
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr "Erro ao escrever para o mbox temporário: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:588
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr "Falha ao escrever para o mbox temporário: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:606
-#: camel/providers/local/camel-mbox-summary.c:765
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr "Não foi possível fechar pasta fonte %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:615
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr "Não foi possível fechar pasta temporária: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:626
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr "Não foi possível renomear pasta: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:836
-#, c-format
-msgid "Unknown error: %s"
-msgstr "Erro desconhecido: %s"
-
-#: camel/providers/local/camel-mh-folder.c:147
-#: camel/providers/local/camel-mh-folder.c:155
-#, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr "Não é possível acrescentar mensagem a pasta MH: %s: %s"
-
-#: camel/providers/local/camel-mh-store.c:116
-#, c-format
-msgid "`%s' is not a directory."
-msgstr "`%s' não é um diretório."
-
-#: camel/providers/nntp/camel-nntp-auth.c:41
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr "Por favor entre a senha NNTP para %s@%s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:62
-msgid "Server rejected username"
-msgstr "O servidor rejeitou o nome do usuário"
-
-#: camel/providers/nntp/camel-nntp-auth.c:68
-msgid "Failed to send username to server"
-msgstr "Falha ao enviar nome do usuário ao servidor"
-
-#: camel/providers/nntp/camel-nntp-auth.c:77
-msgid "Server rejected username/password"
-msgstr "Servidor rejeitou nome do usuário/senha"
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr "Mensagem %s não encontrada."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr "Não foi possível obter a lista de grupos do servidor."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr "Não é possível carregar o arquivo de lista de grupos para %s: %s"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr "Não é possível salvar o arquivo de lista de grupos para %s: %s"
-
-#: camel/providers/nntp/camel-nntp-provider.c:38
-msgid "USENET news"
-msgstr "Notícias USENET"
-
-#: camel/providers/nntp/camel-nntp-provider.c:40
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr ""
-"Este é um provedor para ler e publicar em grupos de notícias da USENET."
-
-#: camel/providers/nntp/camel-nntp-store.c:226
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr "Não foi possível abrir diretório para servidor de notícias: %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:288
-#, c-format
-msgid "USENET News via %s"
-msgstr "Notícias USENET via %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:295
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-"Esta opção autenticará com o servidor NNTP usando uma senha em texto claro."
-
-#: camel/providers/nntp/camel-nntp-store.c:327
-#: camel/providers/nntp/camel-nntp-store.c:490
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr "Não é possível abrir ou criar o arquivo .newsrc para %s: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:180
-msgid "Could not open folder: message listing was incomplete."
-msgstr ""
-"Não foi possível abrir pasta: a listagem das mensagens estava incompleta."
-
-#: camel/providers/pop3/camel-pop3-folder.c:274
-#, c-format
-msgid "No message with uid %s"
-msgstr "Não existe mensagem com uid %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:288
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr "Não foi possível recuperar mensagem do servidor POP %s: %s"
-
-#: camel/providers/pop3/camel-pop3-provider.c:34
-msgid "POP"
-msgstr "POP"
-
-#: camel/providers/pop3/camel-pop3-provider.c:36
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-"Para conectar à servidores POP. O protocolo POP também pode ser usado para "
-"recuperar correio a partir de certos provedores de correio web e sistemas de "
-"correio proprietários."
-
-#: camel/providers/pop3/camel-pop3-store.c:148
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-"Esta opção conectará ao servidor POP usando uma senha em texto claro. Esta é "
-"a única opção suportada por vários servidores POP."
-
-#: camel/providers/pop3/camel-pop3-store.c:158
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-"Esta opção conectará ao servidor POP usando uma senha cifrada usando o "
-"protocolo APOP. Isto pode não funcionar para todos os usuários mesmo em "
-"servidores que alegam suportar o protocolo."
-
-#: camel/providers/pop3/camel-pop3-store.c:170
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-"Esta opção conectará ao servidor POP usando Kerberos 4 para autenticação."
-
-#: camel/providers/pop3/camel-pop3-store.c:215
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr "Não foi possível autenticar o servidor KPOP: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:335
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr "Não foi possível conectar ao servidor POP em %s."
-
-#: camel/providers/pop3/camel-pop3-store.c:375
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr "%sPor favor entre a senha POP3 para %s@%s"
-
-#: camel/providers/pop3/camel-pop3-store.c:394
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-"Não é possível conectar ao servidor POP.\n"
-"Erro ao enviar nome do usuário: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:397
-#: camel/providers/pop3/camel-pop3-store.c:434
-msgid "(Unknown)"
-msgstr "(Desconhecido)"
-
-#: camel/providers/pop3/camel-pop3-store.c:424
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-"Não é possível conectar ao servidor POP.\n"
-"Não existe suporte para o mecanismo de autenticação pedido."
-
-#: camel/providers/pop3/camel-pop3-store.c:432
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-"Não é possível conectar ao servidor POP.\n"
-"Erro ao enviar senha: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:541
-#, c-format
-msgid "No such folder `%s'."
-msgstr "Não existe a pasta `%s'."
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:34
-#: mail/mail-config.glade.h:59
-msgid "Sendmail"
-msgstr "Sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:36
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-"Para entregar correio passando-o para o programa \"sendmail\" no sistema "
-"local."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:105
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr ""
-"Não foi possível criar pipe para o sendmail: %s: a mensagem não foi enviada"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:122
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr ""
-"Não foi possível executar fork para o sendmail: %s: a mensagem não foi "
-"enviada"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:148
-#, c-format
-msgid "Could not send message: %s"
-msgstr "Não foi possível enviar a mensagem: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:161
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr "sendmail terminou com sinal %s: a mensagem não foi enviada."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:168
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr "Não foi possível executar %s: a mensagem não foi enviada"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:173
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr "sendmail terminou com estado %d: a mensagem não foi enviada."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:220
-msgid "sendmail"
-msgstr "sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:222
-msgid "Mail delivery via the sendmail program"
-msgstr "Entrega de correio usando o programa sendmail"
-
-#: camel/providers/smtp/camel-smtp-provider.c:34 mail/mail-config.glade.h:54
-msgid "SMTP"
-msgstr "SMTP"
-
-#: camel/providers/smtp/camel-smtp-provider.c:36
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr "Para entregar correio conectando à um servidor remoto usando SMTP.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:141
-msgid "Syntax error, command unrecognized"
-msgstr "Erro de sintaxe, comando não reconhecido"
-
-#: camel/providers/smtp/camel-smtp-transport.c:143
-msgid "Syntax error in parameters or arguments"
-msgstr "Erro de sintaxe nos parâmetros ou argumentos"
-
-#: camel/providers/smtp/camel-smtp-transport.c:145
-msgid "Command not implemented"
-msgstr "Comando não implementado"
-
-#: camel/providers/smtp/camel-smtp-transport.c:147
-msgid "Command parameter not implemented"
-msgstr "Parâmetro de comando não implementado"
-
-#: camel/providers/smtp/camel-smtp-transport.c:149
-msgid "System status, or system help reply"
-msgstr "Estado do sistema ou resposta de ajuda do sistema"
-
-#: camel/providers/smtp/camel-smtp-transport.c:151
-msgid "Help message"
-msgstr "Mensagem de ajuda"
-
-#: camel/providers/smtp/camel-smtp-transport.c:153
-msgid "Service ready"
-msgstr "Serviço pronto"
-
-#: camel/providers/smtp/camel-smtp-transport.c:155
-msgid "Service closing transmission channel"
-msgstr "Serviço fechando canal de transmissão"
-
-#: camel/providers/smtp/camel-smtp-transport.c:157
-msgid "Service not available, closing transmission channel"
-msgstr "Serviço indisponível, fechando canal de transmissão"
-
-#: camel/providers/smtp/camel-smtp-transport.c:159
-msgid "Requested mail action okay, completed"
-msgstr "Ação de correio pedida OK, terminada"
-
-#: camel/providers/smtp/camel-smtp-transport.c:161
-msgid "User not local; will forward to <forward-path>"
-msgstr "O usuário não é local; irei encaminhar para <forward-path>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:163
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr "Ação de correio pedida não executada: caixa postal indisponível"
-
-#: camel/providers/smtp/camel-smtp-transport.c:165
-msgid "Requested action not taken: mailbox unavailable"
-msgstr "Ação pedida não executada: caixa postal indisponível"
-
-#: camel/providers/smtp/camel-smtp-transport.c:167
-msgid "Requested action aborted: error in processing"
-msgstr "Ação pedida abortada: erro no processamento"
-
-#: camel/providers/smtp/camel-smtp-transport.c:169
-msgid "User not local; please try <forward-path>"
-msgstr "O usuário não é local; por favor tente <forward-path>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:171
-msgid "Requested action not taken: insufficient system storage"
-msgstr "Ação pedida não executada: espaço no sistema insuficiente"
-
-#: camel/providers/smtp/camel-smtp-transport.c:173
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr "Ação de correio pedida abortada: espaço alocado excedido"
-
-#: camel/providers/smtp/camel-smtp-transport.c:175
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr "Ação pedida não executada: nome da caixa postal não permitido"
-
-#: camel/providers/smtp/camel-smtp-transport.c:177
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr "Inicie entrada da mensagem; termine com <CRLF>.<CRLF>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:179
-msgid "Transaction failed"
-msgstr "A transação falhou"
-
-#: camel/providers/smtp/camel-smtp-transport.c:243
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr "Erro na resposta de boas-vindas: %s: possivelmente não-fatal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:337
-msgid "No authentication required"
-msgstr "Não é necessária autenticação"
-
-#: camel/providers/smtp/camel-smtp-transport.c:339
-msgid ""
-"This option will connect to the SMTP server without using any kind of "
-"authentication. This should be fine for connecting to most SMTP servers."
-msgstr ""
-"Esta opção conectará ao servidor SMTP sem usar qualquer tipo de "
-"autenticação. Isto deve ser adequado para conectar à maioria dos servidores "
-"SMTP."
-
-#: camel/providers/smtp/camel-smtp-transport.c:348
-#: camel/providers/smtp/camel-smtp-transport.c:353 mail/mail-config.glade.h:10
-msgid "CRAM-MD5"
-msgstr "CRAM-MD5"
-
-#: camel/providers/smtp/camel-smtp-transport.c:350
-msgid ""
-"This option will connect to the SMTP server using CRAM-MD5 authentication."
-msgstr "Esta opção conectará ao servidor SMTP usando autenticação CRAM-MD5."
-
-#: camel/providers/smtp/camel-smtp-transport.c:378
-#, c-format
-msgid "SMTP server %s"
-msgstr "Servidor SMTP %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:380
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr "Entrega de correio SMTP via %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:405
-msgid "Cannot send message: sender address not defined."
-msgstr ""
-"Não é possível enviar mensagem: endereço do remetente não foi definido."
-
-#: camel/providers/smtp/camel-smtp-transport.c:412
-msgid "Cannot send message: sender address not valid."
-msgstr "Não é possível enviar mensagem: endereço do remetente não é válido."
-
-#: camel/providers/smtp/camel-smtp-transport.c:426
-msgid "Cannot send message: no recipients defined."
-msgstr "Não é possível enviar mensagem: não foram definido destinatários."
-
-#: camel/providers/smtp/camel-smtp-transport.c:520
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr "Tempo excedido no pedido HELO: %s: não-fatal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:539
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr "Erro na resposta de HELO: %s: não-fatal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:578
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr "Tempo excedido no pedido MAIL FROM: %s: a mensagem não foi enviada"
-
-#: camel/providers/smtp/camel-smtp-transport.c:597
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr "Erro na resposta de MAIL FROM: %s: a mensagem não foi enviada"
-
-#: camel/providers/smtp/camel-smtp-transport.c:622
-#, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr "Tempo excedido no pedido RCPT TO: %s: a mensagem não foi enviada"
-
-#: camel/providers/smtp/camel-smtp-transport.c:641
-#, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr "Erro na resposta de RCPT TO: %s: a mensagem não foi enviada"
-
-#: camel/providers/smtp/camel-smtp-transport.c:672
-#, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr "Tempo excedido no pedido DATA: %s: a mensagem não foi enviada"
-
-#: camel/providers/smtp/camel-smtp-transport.c:691
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr "Erro na resposta de DATA: %s: a mensagem não foi enviada"
-
-#: camel/providers/smtp/camel-smtp-transport.c:706
-#: camel/providers/smtp/camel-smtp-transport.c:724
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr ""
-"Tempo excedido no envio de DATA: terminação de mensagem: %s: a mensagem não "
-"foi enviada"
-
-#: camel/providers/smtp/camel-smtp-transport.c:743
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr ""
-"Erro na resposta de DATA: terminação de mensagem: %s: a mensagem não foi "
-"enviada"
-
-#: camel/providers/smtp/camel-smtp-transport.c:767
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr "Tempo excedido no pedido RSET: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:786
-#, c-format
-msgid "RSET response error: %s"
-msgstr "Erro na resposta de RSET: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:809
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr "Tempo excedido no pedido QUIT: %s: não-fatal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:828
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr "Erro na resposta de QUIT: %s: não-fatal"
-
-#: camel/providers/vee/camel-vee-provider.c:30
-msgid "Virtual folder email provider"
-msgstr "Provedor de correio em pastas virtuais"
-
-#: camel/providers/vee/camel-vee-provider.c:32
-msgid "For reading mail as a query of another set of folders"
-msgstr "Para ler correio como uma consulta a um outro conjunto de pastas"
-
-#: composer/e-msg-composer-attachment-bar.c:87
-msgid "1 byte"
-msgstr "1 byte"
-
-#: composer/e-msg-composer-attachment-bar.c:89
-#, c-format
-msgid "%u bytes"
-msgstr "%u bytes"
-
-#: composer/e-msg-composer-attachment-bar.c:96
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fK"
-
-#: composer/e-msg-composer-attachment-bar.c:100
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fM"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fG"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:324 mail/mail-display.c:154
-msgid "attachment"
-msgstr "anexo"
-
-#: composer/e-msg-composer-attachment-bar.c:413
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr "Anexar um arquivo"
-
-#: composer/e-msg-composer-attachment-bar.c:460 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:254 shell/e-shortcuts-view.c:377
-msgid "Remove"
-msgstr "Remover"
-
-#: composer/e-msg-composer-attachment-bar.c:461
-msgid "Remove selected items from the attachment list"
-msgstr "Remover itens selecionados da lista de anexos"
-
-#: composer/e-msg-composer-attachment-bar.c:492
-msgid "Add attachment..."
-msgstr "Incluir anexo..."
-
-#: composer/e-msg-composer-attachment-bar.c:493
-msgid "Attach a file to the message"
-msgstr "Anexar um arquivo à mensagem"
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/message-list.c:1109
-msgid "Attachment"
-msgstr "Anexo"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr "Propriedades do anexo"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr "Nome do arquivo:"
-
-#: composer/e-msg-composer-attachment.glade.h:5
-msgid "Inline attachment"
-msgstr "Anexo embutido"
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr "Tipo MIME:"
-
-#: composer/e-msg-composer-attachment.glade.h:7
-msgid "Send as:"
-msgstr "Enviar como:"
-
-#: composer/e-msg-composer-hdrs.c:149 composer/e-msg-composer-hdrs.c:353
-#: mail/mail-format.c:626
-msgid "From:"
-msgstr "De:"
-
-#: composer/e-msg-composer-hdrs.c:297
-msgid "Click here for the address book"
-msgstr "Clique aqui para o catálogo de endereços"
-
-#: composer/e-msg-composer-hdrs.c:354
-msgid "Enter the identity you wish to send this message from"
-msgstr "Entre a identidade com a qual você deseja enviar esta mensagem"
-
-#: composer/e-msg-composer-hdrs.c:358 mail/mail-format.c:630
-msgid "To:"
-msgstr "Para:"
-
-#: composer/e-msg-composer-hdrs.c:359
-msgid "Enter the recipients of the message"
-msgstr "Entre os destinatários da mensagem"
-
-#: composer/e-msg-composer-hdrs.c:363 mail/mail-format.c:632
-msgid "Cc:"
-msgstr "Cc:"
-
-#: composer/e-msg-composer-hdrs.c:364
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "Entre os endereços que receberão uma cópia da mensagem"
-
-#: composer/e-msg-composer-hdrs.c:369
-msgid "Bcc:"
-msgstr "Bcc:"
-
-#: composer/e-msg-composer-hdrs.c:370
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"Entre os endereços que receberão uma cópia da mensagem sem aparecer na lista "
-"de destinatários da mensagem"
-
-#: composer/e-msg-composer-hdrs.c:376 mail/mail-format.c:634
-msgid "Subject:"
-msgstr "Assunto:"
-
-#: composer/e-msg-composer-hdrs.c:377
-msgid "Enter the subject of the mail"
-msgstr "Entre o assunto da correspondência"
-
-#: composer/e-msg-composer.c:497
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-"Não foi possível abrir arquivo de assinatura %s:\n"
-"%s"
-
-#: composer/e-msg-composer.c:665
-msgid "Save as..."
-msgstr "Salvar como..."
-
-#: composer/e-msg-composer.c:676
-#, c-format
-msgid "Error saving file: %s"
-msgstr "Erro ao salvar arquivo: %s"
-
-#: composer/e-msg-composer.c:696
-#, c-format
-msgid "Error loading file: %s"
-msgstr "Erro ao carregar arquivo: %s"
-
-#: composer/e-msg-composer.c:718
-msgid "Saving changes to message..."
-msgstr "Salvando modificações à mensagem..."
-
-#: composer/e-msg-composer.c:720
-msgid "Save changes to message..."
-msgstr "Salvar modificações à mensagem..."
-
-#: composer/e-msg-composer.c:761
-#, c-format
-msgid "Error saving composition to 'Drafts': %s"
-msgstr "Erro ao salvar mensagem para 'Drafts': %s"
-
-#: composer/e-msg-composer.c:819 shell/e-shell-view-menu.c:183
-msgid "Evolution"
-msgstr "Evolution"
-
-#: composer/e-msg-composer.c:825
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-"Esta mensagem não foi enviada.\n"
-"\n"
-"Você deseja salvar as suas modificações?"
-
-#: composer/e-msg-composer.c:850
-msgid "Open file"
-msgstr "Abrir arquivo"
-
-#: composer/e-msg-composer.c:976
-msgid "That file does not exist."
-msgstr "Este arquivo não existe."
-
-#: composer/e-msg-composer.c:986
-msgid "That is not a regular file."
-msgstr "Este não é um arquivo comum."
-
-#: composer/e-msg-composer.c:996
-msgid "That file exists but is not readable."
-msgstr "Este arquivo existe mas não é legível."
-
-#: composer/e-msg-composer.c:1006
-msgid "That file appeared accesible but open(2) failed."
-msgstr "Este arquivo aparenta ser acessível mas open(2) falhou."
-
-#: composer/e-msg-composer.c:1028
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-"O arquivo é muito grande (mais que 100K).\n"
-"Você tem certeza que deseja inserí-lo?"
-
-#: composer/e-msg-composer.c:1049
-msgid "An error occurred while reading the file."
-msgstr "Um erro ocorreu ao ler o arquivo."
-
-#: composer/e-msg-composer.c:1292 composer/e-msg-composer.c:1527
-msgid "Compose a message"
-msgstr "Redigir uma mensagem"
-
-#: composer/e-msg-composer.c:1608
-msgid "Could not create composer window."
-msgstr "Não foi possível criar janela de redação."
-
-#: composer/evolution-composer.c:360
-msgid "Cannot initialize Evolution's composer."
-msgstr "Não é possível iniciar o redator do Evolution."
-
-#: filter/filter-datespec.c:62
-msgid "year"
-msgstr "ano"
-
-#: filter/filter-datespec.c:62
-msgid "years"
-msgstr "anos"
-
-#: filter/filter-datespec.c:63
-msgid "month"
-msgstr "mês"
-
-#: filter/filter-datespec.c:63
-msgid "months"
-msgstr "meses"
-
-#: filter/filter-datespec.c:64
-msgid "week"
-msgstr "semana"
-
-#: filter/filter-datespec.c:64
-msgid "weeks"
-msgstr "semanas"
-
-#: filter/filter-datespec.c:65
-msgid "days"
-msgstr "dias"
-
-#: filter/filter-datespec.c:66
-msgid "hour"
-msgstr "hora"
-
-#: filter/filter-datespec.c:66
-msgid "hours"
-msgstr "horas"
-
-#: filter/filter-datespec.c:67
-msgid "minute"
-msgstr "minuto"
-
-#: filter/filter-datespec.c:67
-msgid "minutes"
-msgstr "minutos"
-
-#: filter/filter-datespec.c:68
-msgid "second"
-msgstr "segundo"
-
-#: filter/filter-datespec.c:68
-msgid "seconds"
-msgstr "segundos"
-
-#: filter/filter-datespec.c:183
-msgid "Oops. You have forgotten to choose a date."
-msgstr "Oops. Você esqueceu de escolher uma data."
-
-#: filter/filter-datespec.c:185
-msgid "Oops. You have chosen an invalid date."
-msgstr "Oops. Você escolheu uma data inválida."
-
-#: filter/filter-datespec.c:259
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-"A data da mensagem será comparada em relação\n"
-"ao instante quando o filtro é executado ou\n"
-"a pasta virtual é aberta."
-
-#: filter/filter-datespec.c:282
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-"A data da mensagem será comparada em relação\n"
-"ao instante que você especificou aqui."
-
-#: filter/filter-datespec.c:322
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-"A data da mensagem será comparada em relação a um\n"
-"instante relativo a quando o filtro é executado;\n"
-"\"uma semana atrás\", por exemplo."
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:357
-msgid "the current time"
-msgstr "o instante atual"
-
-#: filter/filter-datespec.c:357
-msgid "a time you specify"
-msgstr "um instante especificado"
-
-#: filter/filter-datespec.c:358
-msgid "a time relative to the current time"
-msgstr "um instante relativo ao instante atual"
-
-#. The label
-#: filter/filter-datespec.c:416
-msgid "Compare against"
-msgstr "Comparar em relação a"
-
-#: filter/filter-datespec.c:533 filter/filter-datespec.c:693
-msgid "now"
-msgstr "agora"
-
-#: filter/filter-datespec.c:690
-msgid "<click here to select a date>"
-msgstr "<clique aqui para selecionar uma data>"
-
-#: filter/filter-editor.c:160 mail/mail-autofilter.c:286
-#: mail/mail-autofilter.c:335
-msgid "Add Filter Rule"
-msgstr "Incluir regra de filtro"
-
-#: filter/filter-editor.c:233
-msgid "Edit Filter Rule"
-msgstr "Editar regra de filtro"
-
-#: filter/filter-editor.c:433
-msgid "incoming"
-msgstr "de entrada"
-
-#. "demand",
-#: filter/filter-editor.c:435
-msgid "outgoing"
-msgstr "de saída"
-
-#: filter/filter-editor.c:456 filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr "Editar filtros"
-
-#. and now for the action area
-#: filter/filter-filter.c:403
-msgid "Then"
-msgstr "Então"
-
-#: filter/filter-filter.c:416
-msgid "Add action"
-msgstr "Incluir ação"
-
-#: filter/filter-filter.c:422
-msgid "Remove action"
-msgstr "Excluir ação"
-
-#: filter/filter-folder.c:143
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-"Oops, você esqueceu de escolher uma pasta.\n"
-"Por favor volte e especifique uma pasta válida para onde entregar correio."
-
-#: filter/filter-folder.c:218 filter/vfolder-rule.c:271
-msgid "Select Folder"
-msgstr "Selecionar pasta"
-
-#: filter/filter-folder.c:243
-msgid "Enter folder URI"
-msgstr "Entre URI da pasta"
-
-#: filter/filter-folder.c:289
-msgid "<click here to select a folder>"
-msgstr "<clique aqui para selecionar uma pasta>"
-
-#: filter/filter-input.c:185
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-"Erro na expressão regular '%s':\n"
-"%s"
-
-#: filter/filter-part.c:467
-msgid "Test"
-msgstr "Teste"
-
-#: filter/filter-rule.c:530
-msgid "Rule name: "
-msgstr "Nome da regra: "
-
-#: filter/filter-rule.c:534
-msgid "Untitled"
-msgstr "Sem título"
-
-#: filter/filter-rule.c:550
-msgid "If"
-msgstr "Se"
-
-#: filter/filter-rule.c:567
-msgid "Execute actions"
-msgstr "Executar ações"
-
-#: filter/filter-rule.c:571
-msgid "if all criteria are met"
-msgstr "se todos os critérios forem atendidos"
-
-#: filter/filter-rule.c:576
-msgid "if any criteria are met"
-msgstr "se algum critério for atendido"
-
-#: filter/filter-rule.c:587
-msgid "Add criterion"
-msgstr "Adicionar critério"
-
-#: filter/filter-rule.c:593
-msgid "Remove criterion"
-msgstr "Remover critério"
-
-#: filter/filter-system-flag.c:63
-msgid "Replied to"
-msgstr "Em resposta a"
-
-#. { _("Deleted"), "Deleted" },
-#. { _("Draft"), "Draft" },
-#: filter/filter-system-flag.c:66
-msgid "Important"
-msgstr "Importante"
-
-#: filter/filter-system-flag.c:67
-msgid "Read"
-msgstr "Lida"
-
-#: filter/filter.glade.h:5
-msgid "Edit VFolders"
-msgstr "Editar pastas virtuais"
-
-#: filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr "Regras de filtro"
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr "De entrada"
-
-#: filter/filter.glade.h:8
-msgid "Outgoing"
-msgstr "De saída"
-
-#: filter/filter.glade.h:10
-msgid "Virtual Folders"
-msgstr "Pastas virtuais"
-
-#: filter/filter.glade.h:11
-msgid "vFolder Sources"
-msgstr "Fontes de pastas virtuais"
-
-#. Automatically generated. Do not edit.
-#: filter/libfilter-i18n.h:2
-msgid "Assign Colour"
-msgstr "Atribuir cor"
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Score"
-msgstr "Atribuir pontuação"
-
-#: filter/libfilter-i18n.h:4
-msgid "Copy to Folder"
-msgstr "Copiar para pasta"
-
-#: filter/libfilter-i18n.h:5
-msgid "Date received"
-msgstr "Data de recebimento"
-
-#: filter/libfilter-i18n.h:6
-msgid "Date sent"
-msgstr "Data de envio"
-
-#: filter/libfilter-i18n.h:8
-msgid "Expression"
-msgstr "Expressão"
-
-#: filter/libfilter-i18n.h:9
-msgid "Forward to Address"
-msgstr "Encaminhar para endereço"
-
-#: filter/libfilter-i18n.h:10
-msgid "Message Body"
-msgstr "Corpo da mensagem"
-
-#: filter/libfilter-i18n.h:11
-msgid "Message Header"
-msgstr "Cabeçalho da mensagem"
-
-#: filter/libfilter-i18n.h:12
-msgid "Message was received"
-msgstr "Mensagem foi recebida"
-
-#: filter/libfilter-i18n.h:13
-msgid "Message was sent"
-msgstr "Mensagem foi enviada"
-
-#: filter/libfilter-i18n.h:14
-msgid "Move to Folder"
-msgstr "Mover para pasta"
-
-#: filter/libfilter-i18n.h:15
-msgid "Recipients"
-msgstr "Destinatários"
-
-#: filter/libfilter-i18n.h:16
-msgid "Regex Match"
-msgstr "Correspondência com expressão regular"
-
-#: filter/libfilter-i18n.h:17 filter/score-rule.c:192 filter/score-rule.c:194
-#: mail/message-list.c:1109
-msgid "Score"
-msgstr "Pontuação"
-
-#: filter/libfilter-i18n.h:18
-msgid "Sender"
-msgstr "Remetente"
-
-#: filter/libfilter-i18n.h:19
-msgid "Set Status"
-msgstr "Atribuir estado"
-
-#: filter/libfilter-i18n.h:20
-msgid "Source"
-msgstr "Fonte"
-
-#: filter/libfilter-i18n.h:21
-msgid "Specific header"
-msgstr "Cabeçalho específico"
-
-#: filter/libfilter-i18n.h:22 mail/message-list.c:1109
-msgid "Status"
-msgstr "Estado"
-
-#: filter/libfilter-i18n.h:23
-msgid "Stop Processing"
-msgstr "Parar o processamento"
-
-#: filter/libfilter-i18n.h:24 mail/message-list.c:1110
-msgid "Subject"
-msgstr "Assunto"
-
-#: filter/libfilter-i18n.h:25
-msgid "after"
-msgstr "após"
-
-#: filter/libfilter-i18n.h:26
-msgid "before"
-msgstr "antes"
-
-#: filter/libfilter-i18n.h:27
-msgid "contains"
-msgstr "contém"
-
-#: filter/libfilter-i18n.h:28
-msgid "does not contain"
-msgstr "não contém"
-
-#: filter/libfilter-i18n.h:29
-msgid "does not end with"
-msgstr "não termina com"
-
-#: filter/libfilter-i18n.h:30
-msgid "does not exist"
-msgstr "não existe"
-
-#: filter/libfilter-i18n.h:31
-msgid "does not sound like"
-msgstr "não soa como"
-
-#: filter/libfilter-i18n.h:32
-msgid "does not start with"
-msgstr "não começa com"
-
-#: filter/libfilter-i18n.h:33
-msgid "ends with"
-msgstr "termina com"
-
-#: filter/libfilter-i18n.h:34
-msgid "exists"
-msgstr "existe"
-
-#: filter/libfilter-i18n.h:35
-msgid "is greater than"
-msgstr "é maior que"
-
-#: filter/libfilter-i18n.h:36
-msgid "is less than"
-msgstr "é menor que"
-
-#: filter/libfilter-i18n.h:37
-msgid "is not"
-msgstr "não é"
-
-#: filter/libfilter-i18n.h:38
-msgid "is"
-msgstr "é"
-
-#: filter/libfilter-i18n.h:39
-msgid "on or after"
-msgstr "em ou após"
-
-#: filter/libfilter-i18n.h:40
-msgid "on or before"
-msgstr "em ou antes"
-
-#: filter/libfilter-i18n.h:41
-msgid "sounds like"
-msgstr "soa como"
-
-#: filter/libfilter-i18n.h:42
-msgid "starts with"
-msgstr "começa com"
-
-#: filter/libfilter-i18n.h:43
-msgid "was after"
-msgstr "foi após"
-
-#: filter/libfilter-i18n.h:44
-msgid "was before"
-msgstr "foi antes"
-
-#: filter/score-editor.c:127
-msgid "Add Rule"
-msgstr "Adicionar regra"
-
-#: filter/score-editor.c:166
-msgid "Edit Score Rule"
-msgstr "Editar regra de pontuação"
-
-#: filter/vfolder-editor.c:155
-msgid "Add VFolder Rule"
-msgstr "Adicionar regra de pasta virtual"
-
-#: filter/vfolder-editor.c:204
-msgid "Edit VFolder Rule"
-msgstr "Editar regra de pasta virtual"
-
-#: mail/component-factory.c:294
-msgid "Cannot initialize Evolution's mail component."
-msgstr "Não é possível iniciar o componente de correio do Evolution."
-
-#: mail/component-factory.c:320
-msgid "Cannot register storage with shell"
-msgstr "Não é possível registrar repositório com a shell."
-
-#: mail/folder-browser.c:225
-msgid "Store search as vFolder"
-msgstr "Armazenar busca como pasta virtual"
-
-#: mail/folder-browser.c:239
-msgid "Body or subject contains"
-msgstr "Corpo ou assunto contém"
-
-#: mail/folder-browser.c:240
-msgid "Body contains"
-msgstr "Corpo contém"
-
-#: mail/folder-browser.c:241
-msgid "Subject contains"
-msgstr "Assunto contém"
-
-#: mail/folder-browser.c:242
-msgid "Body does not contain"
-msgstr "Corpo não contém"
-
-#: mail/folder-browser.c:243
-msgid "Subject does not contain"
-msgstr "Assunto não contém"
-
-#: mail/folder-browser.c:244
-msgid "Sender contains"
-msgstr "Remetente contém"
-
-#: mail/folder-browser.c:656
-msgid "VFolder on Subject"
-msgstr "Pasta virtual por assunto"
-
-#: mail/folder-browser.c:657
-msgid "VFolder on Sender"
-msgstr "Pasta virtual por remetente"
-
-#: mail/folder-browser.c:658
-msgid "VFolder on Recipients"
-msgstr "Pasta virtual por destinatários"
-
-#: mail/folder-browser.c:660
-msgid "Filter on Subject"
-msgstr "Filtro por assunto"
-
-#: mail/folder-browser.c:661
-msgid "Filter on Sender"
-msgstr "Filtro por remetente"
-
-#: mail/folder-browser.c:662
-msgid "Filter on Recipients"
-msgstr "Filtro por destinatários"
-
-#: mail/folder-browser.c:663 mail/folder-browser.c:777
-msgid "Filter on Mailing List"
-msgstr "Filtro por lista de discussão"
-
-#: mail/folder-browser.c:669 ui/evolution-message-composer.xml.h:10
-msgid "Open"
-msgstr "Abrir"
-
-#: mail/folder-browser.c:671
-msgid "Save As..."
-msgstr "Salvar como..."
-
-#: mail/folder-browser.c:674
-msgid "Reply to Sender"
-msgstr "Responder ao remetente"
-
-#: mail/folder-browser.c:675 mail/mail-view.c:141 ui/evolution-mail.xml.h:32
-msgid "Reply to All"
-msgstr "Responder a todos"
-
-#: mail/folder-browser.c:676 mail/mail-view.c:144 ui/evolution-mail.xml.h:12
-msgid "Forward"
-msgstr "Encaminhar"
-
-#: mail/folder-browser.c:677 ui/evolution-mail.xml.h:13
-msgid "Forward inline"
-msgstr "Encaminhar embutido"
-
-#: mail/folder-browser.c:679
-msgid "Mark as Read"
-msgstr "Marcar como lida"
-
-#: mail/folder-browser.c:680
-msgid "Mark as Unread"
-msgstr "Marcar como não lida"
-
-#: mail/folder-browser.c:682
-msgid "Move to Folder..."
-msgstr "Mover para pasta..."
-
-#: mail/folder-browser.c:683
-msgid "Copy to Folder..."
-msgstr "Copiar para pasta..."
-
-#: mail/folder-browser.c:685
-msgid "Undelete"
-msgstr "Desfazer exclusão"
-
-#. { _("Add Sender to Address Book"), NULL, GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL, GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:689
-msgid "Apply Filters"
-msgstr "Aplicar filtros"
-
-#: mail/folder-browser.c:691
-msgid "Create Rule From Message"
-msgstr "Criar regra a partir da mensagem"
-
-#: mail/folder-browser.c:779
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr "Filtro por lista de discussão (%s)"
-
-#: mail/local-config.glade.h:1
-msgid "Current store format:"
-msgstr "Formato do repositório corrente:"
-
-#: mail/local-config.glade.h:2
-msgid "Mailbox Format"
-msgstr "Formato da caixa de correio"
-
-#: mail/local-config.glade.h:3
-msgid "New store format:"
-msgstr "Novo formato do repositório:"
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-"Nota: Ao converter entre formatos de caixa postal, uma falha\n"
-"(como falta de espaço em disco) pode não ser recuperável\n"
-"automaticamente. Por favor use esta função com cuidado."
-
-#: mail/local-config.glade.h:7
-msgid "maildir"
-msgstr "maildir"
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr "mbox"
-
-#: mail/local-config.glade.h:9
-msgid "mh"
-msgstr "mh"
-
-#: mail/mail-accounts.c:115
-msgid " (default)"
-msgstr " (padrão)"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:367
-msgid "Evolution Account Manager"
-msgstr "Gerenciador de contas do Evolution"
-
-#: mail/mail-account-editor.c:265
-msgid ""
-"One or more of your servers are not configured correctly.\n"
-"Do you wish to save anyway?"
-msgstr ""
-"Um ou mais dos seus servidores não estão configurados corretamente.\n"
-"Você deseja salvar de qualquer forma?"
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:625
-msgid "Evolution Account Editor"
-msgstr "Editor de contas do Evolution"
-
-#: mail/mail-autofilter.c:71
-#, c-format
-msgid "Mail to %s"
-msgstr "Correio para %s"
-
-#: mail/mail-autofilter.c:214
-#, c-format
-msgid "Subject is %s"
-msgstr "Assunto é %s"
-
-#: mail/mail-autofilter.c:230
-#, c-format
-msgid "Mail from %s"
-msgstr "Correio de %s"
-
-#: mail/mail-autofilter.c:331
-#, c-format
-msgid "%s mailing list"
-msgstr "Lista de discussão %s"
-
-#: mail/mail-callbacks.c:82
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-"Você não configurou o cliente de correio.\n"
-"Você deve fazê-lo antes de poder enviar,\n"
-"receber ou redigir mensagens.\n"
-"Você desejaria configurá-lo agora?"
-
-#: mail/mail-callbacks.c:135
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-"Você deve configurar uma identidade\n"
-"antes de poder redigir uma mensagem."
-
-#: mail/mail-callbacks.c:147
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-"Você deve configurar um transporte de correio\n"
-"antes de poder redigir uma mensagem."
-
-#: mail/mail-callbacks.c:191
-msgid "You have not set a mail transport method"
-msgstr "Você não estabeleceu um método de transporte de correio"
-
-#: mail/mail-callbacks.c:224
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-"Esta mensagem não possui um assunto.\n"
-"Enviar mesmo assim?"
-
-#: mail/mail-callbacks.c:290
-msgid "You must configure an account before you can send this email."
-msgstr "Você deve configurar uma conta antes de poder enviar esta mensagem."
-
-#: mail/mail-callbacks.c:310
-msgid "You must specify recipients in order to send this message."
-msgstr "Você deve especificar destinatários para poder enviar esta mensagem."
-
-#: mail/mail-callbacks.c:535
-msgid "Forwarded message:\n"
-msgstr "Mensagem encaminhada:\n"
-
-#: mail/mail-callbacks.c:618
-msgid "Move message(s) to"
-msgstr "Mover mensagem(ns) para"
-
-#: mail/mail-callbacks.c:620
-msgid "Copy message(s) to"
-msgstr "Copiar mensagem(ns) para"
-
-#: mail/mail-callbacks.c:755
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-"Você pode apenas editar mensagens salvas\n"
-"na pasta Drafts."
-
-#: mail/mail-callbacks.c:788 mail/mail-display.c:78
-msgid "Overwrite file?"
-msgstr "Sobrescrever arquivo?"
-
-#: mail/mail-callbacks.c:792 mail/mail-display.c:82
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-"Já existe um arquivo com este nome.\n"
-"Sobrescrevê-lo?"
-
-#: mail/mail-callbacks.c:836
-msgid "Save Message As..."
-msgstr "Salvar mensagem como..."
-
-#: mail/mail-callbacks.c:838
-msgid "Save Messages As..."
-msgstr "Salvar mensagens como..."
-
-#: mail/mail-callbacks.c:946
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-"Erro ao carregar inforação do filtro:\n"
-"%s"
-
-#: mail/mail-callbacks.c:995
-msgid "Print Message"
-msgstr "Imprimir mensagem"
-
-#: mail/mail-callbacks.c:1042
-msgid "Printing of message failed"
-msgstr "Falhou a impressão da mensagem"
-
-#: mail/mail-config.glade.h:1
-msgid "Account"
-msgstr "Conta"
-
-#: mail/mail-config.glade.h:2
-msgid "Account Information"
-msgstr "Informação de conta"
-
-#: mail/mail-config.glade.h:3
-msgid "Account Management"
-msgstr "Gerência de conta"
-
-#: mail/mail-config.glade.h:4
-msgid "Account Properties"
-msgstr "Propriedades de conta"
-
-#: mail/mail-config.glade.h:6
-msgid "Advanced"
-msgstr "Avançado"
-
-#: mail/mail-config.glade.h:7
-msgid "Authentication"
-msgstr "Autenticação"
-
-#: mail/mail-config.glade.h:8
-msgid "Authentication Type:"
-msgstr "Tipo de autenticação:"
-
-#: mail/mail-config.glade.h:11
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-"Parabéns, sua configuração de correio está completa.\n"
-"\n"
-"Você está pronto agora para enviar e receber correio\n"
-"eletrônico usando o Evolution. \n"
-"\n"
-"Pressione \"Concluir\" para salvar suas configurações."
-
-#: mail/mail-config.glade.h:17
-msgid "DIGEST-MD5"
-msgstr "DIGEST-MD5"
-
-#: mail/mail-config.glade.h:18
-msgid "Default"
-msgstr "Padrão"
-
-#: mail/mail-config.glade.h:20
-msgid "Done"
-msgstr "Terminado"
-
-#: mail/mail-config.glade.h:21
-msgid "E-Mail Address:"
-msgstr "Endereço eletrônico:"
-
-#: mail/mail-config.glade.h:23
-msgid "Email Address:"
-msgstr "Endereço eletrônico:"
-
-#: mail/mail-config.glade.h:24
-msgid "Evolution Mail Configuration"
-msgstr "Configuração de correio do Evolution"
-
-#: mail/mail-config.glade.h:25
-msgid "Full Name:"
-msgstr "Nome completo:"
-
-#: mail/mail-config.glade.h:28
-msgid "Hostname:"
-msgstr "Nome da máquina:"
-
-#: mail/mail-config.glade.h:29
-msgid "Identity"
-msgstr "Identidade"
-
-#: mail/mail-config.glade.h:30
-msgid "Incoming Mail Server"
-msgstr "Servidor de correio de entrada"
-
-#: mail/mail-config.glade.h:31
-msgid "Keep mail on server"
-msgstr "Manter correio no servidor"
-
-#: mail/mail-config.glade.h:32
-msgid "Kerberos"
-msgstr "Kerberos"
-
-#: mail/mail-config.glade.h:33
-msgid "Mail"
-msgstr "Correio"
-
-#: mail/mail-config.glade.h:34
-msgid "Mail Account"
-msgstr "Conta de correio"
-
-#: mail/mail-config.glade.h:35
-msgid "Mail Configuration"
-msgstr "Configuração de correio"
-
-#: mail/mail-config.glade.h:36
-msgid "Mail Configuration Druid"
-msgstr "Assitente de configuração de correio"
-
-#: mail/mail-config.glade.h:37
-msgid "Make this my default account"
-msgstr "Torne esta a minha conta padrão"
-
-#: mail/mail-config.glade.h:38
-msgid "Mark messages as \"Read\" after:"
-msgstr "Marcar mensagens como \"Lida\" após:"
-
-#: mail/mail-config.glade.h:39
-msgid "Miscellaneous"
-msgstr "Diversos"
-
-#: mail/mail-config.glade.h:41
-msgid "News"
-msgstr "Notícias"
-
-#: mail/mail-config.glade.h:43
-msgid "Optional"
-msgstr "Opcional"
-
-#: mail/mail-config.glade.h:44
-msgid "Organization:"
-msgstr "Empresa:"
-
-#: mail/mail-config.glade.h:46
-msgid "Outgoing Mail Server"
-msgstr "Servidor de correio de saída"
-
-#: mail/mail-config.glade.h:47
-msgid "Password:"
-msgstr "Senha:"
-
-#: mail/mail-config.glade.h:49
-msgid "Plain Text"
-msgstr "Texto claro"
-
-#: mail/mail-config.glade.h:50
-msgid "Receiving Email"
-msgstr "Recebendo mensagem"
-
-#: mail/mail-config.glade.h:51
-msgid "Remember my password"
-msgstr "Lembre a minha senha"
-
-#: mail/mail-config.glade.h:52 mail/mail-format.c:628
-msgid "Reply-To:"
-msgstr "Responder-a:"
-
-#: mail/mail-config.glade.h:53
-msgid "Required"
-msgstr "Exigido"
-
-#: mail/mail-config.glade.h:55
-msgid "Save password"
-msgstr "Salvar senha"
-
-#: mail/mail-config.glade.h:56
-msgid "Select signature file"
-msgstr "Selecionar arquivo de assinatura"
-
-#: mail/mail-config.glade.h:57
-msgid "Send mail in HTML format by default."
-msgstr "Enviar mensagens em formato HTML como padrão."
-
-#: mail/mail-config.glade.h:58
-msgid "Sending Email"
-msgstr "Enviando mensagem"
-
-#: mail/mail-config.glade.h:60
-msgid "Server Configuration"
-msgstr "Configuração do servidor"
-
-#: mail/mail-config.glade.h:61
-msgid "Server Type: "
-msgstr "Tipo do servidor: "
-
-#: mail/mail-config.glade.h:62
-msgid "Server requires authentication"
-msgstr "Servidor requer autenticação"
-
-#: mail/mail-config.glade.h:63
-msgid "Servers"
-msgstr "Servidores"
-
-#: mail/mail-config.glade.h:64
-msgid "Signature file:"
-msgstr "Arquivo de assinatura:"
-
-#: mail/mail-config.glade.h:65
-msgid "Signature:"
-msgstr "Assinatura:"
-
-#: mail/mail-config.glade.h:66
-msgid "Sources"
-msgstr "Fontes"
-
-#: mail/mail-config.glade.h:67
-msgid "This server requires a secure connection (SSL)"
-msgstr "Este servidor requer uma conexão segura (SSL)"
-
-#: mail/mail-config.glade.h:68
-msgid "Type"
-msgstr "Tipo"
-
-#: mail/mail-config.glade.h:69
-msgid ""
-"Type the name by which you would like to refer to these servers. For "
-"example: \"Work\" or \"Home\"."
-msgstr ""
-"Digite o nome com o qual deseja identificar estes servidores. Por exemplo: "
-"\"Trabalho\" ou \"Casa\"."
-
-#: mail/mail-config.glade.h:71
-msgid "User Information"
-msgstr "Informação do usuário"
-
-#: mail/mail-config.glade.h:72
-msgid "Username:"
-msgstr "Nome do usuário:"
-
-#: mail/mail-config.glade.h:73
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-"Bem-vindo ao assistente de configuração de correio do Evolution.\n"
-"\n"
-"Pressione \"Próximo\" para começar. "
-
-#: mail/mail-config-druid.c:363
-#, c-format
-msgid ""
-"Failed to verify the incoming mail configuration.\n"
-"You may experience problems retrieving your mail from %s"
-msgstr ""
-"Falha ao verificar a configuração de recebimento de correio.\n"
-"Você pode enfrentar problemas ao recuperar mensagens de %s"
-
-#: mail/mail-config-druid.c:458
-msgid "Namespace:"
-msgstr "Espaço de nomes:"
-
-#: mail/mail-config-druid.c:643
-#, c-format
-msgid ""
-"Failed to verify the outgoing mail configuration.\n"
-"You may experience problems sending your mail using %s"
-msgstr ""
-"Falha ao verificar a configuração de envio de correio.\n"
-"Você pode enfrentar problemas ao enviar mensagens usando %s"
-
-#. set window title
-#: mail/mail-config-druid.c:992
-msgid "Evolution Account Wizard"
-msgstr "Assitente de contas do Evolution"
-
-#: mail/mail-display.c:97
-#, c-format
-msgid ""
-"Could not open file %s:\n"
-"%s"
-msgstr ""
-"Não foi possível abrir arquivo %s:\n"
-"%s"
-
-#: mail/mail-display.c:130
-#, c-format
-msgid "Could not write data: %s"
-msgstr "Não foi possível escrever dados: %s"
-
-#: mail/mail-display.c:228
-msgid "Save Attachment"
-msgstr "Salvar anexo"
-
-#: mail/mail-display.c:268
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr "Não foi possível criar diretório temporário: %s"
-
-#: mail/mail-display.c:310
-msgid "Save to Disk..."
-msgstr "Salvar para o disco..."
-
-#: mail/mail-display.c:312
-#, c-format
-msgid "Open in %s..."
-msgstr "Abrir em %s..."
-
-#: mail/mail-display.c:314
-msgid "View Inline"
-msgstr "Visualizar embutido"
-
-#: mail/mail-display.c:341
-msgid "External Viewer"
-msgstr "Visualizador externo"
-
-#: mail/mail-display.c:364
-#, c-format
-msgid "View Inline (via %s)"
-msgstr "Visualizar embutido (via %s)"
-
-#: mail/mail-display.c:368
-msgid "Hide"
-msgstr "Esconder"
-
-#: mail/mail-format.c:505
-#, c-format
-msgid "%s attachment"
-msgstr "anexo %s"
-
-#: mail/mail-format.c:653
-msgid "Loading message content"
-msgstr "Carregando conteúdo da mensagem"
-
-#: mail/mail-format.c:941
-msgid "Encrypted message not displayed"
-msgstr "Mensagem cifrada não exibida"
-
-#: mail/mail-format.c:947
-msgid "Encrypted message"
-msgstr "Mensagem cifrada"
-
-#: mail/mail-format.c:948
-msgid "Click icon to decrypt."
-msgstr "Clique no ícone para decifrar."
-
-#: mail/mail-format.c:1350
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr "Esta mensagem está assinada digitalmente e é autêntica."
-
-#: mail/mail-format.c:1358
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr "Esta mensagem está assinada digitalmente mas não é possível estabelecer sua autenticidade."
-
-#: mail/mail-format.c:1562
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr "Apontador para site FTP (%s)"
-
-#: mail/mail-format.c:1574
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr "Apontador para arquivo local (%s) válido no site \"%s\""
-
-#: mail/mail-format.c:1578
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr "Apontador para arquivo local (%s)"
-
-#: mail/mail-format.c:1612
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr "Apontador para dados externos desconhecidos (tipo \"%s\")"
-
-#: mail/mail-format.c:1617
-msgid "Malformed external-body part."
-msgstr "Parte external-body malformada."
-
-#: mail/mail-format.c:1788
-#, c-format
-msgid "On %s, %s wrote:\n"
-msgstr "Em %s, %s escreveu:\n"
-
-#: mail/mail-local.c:204
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr "Alterando pasta \"%s\" para o formato \"%s\""
-
-#: mail/mail-local.c:208
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr "Alterar pasta \"%s\" para o formato \"%s\""
-
-#: mail/mail-local.c:251
-msgid "Reconfiguring folder"
-msgstr "Reconfigurando pasta"
-
-#: mail/mail-local.c:269
-msgid "Closing current folder"
-msgstr "Fechando pasta atual"
-
-#: mail/mail-local.c:295
-msgid "Renaming old folder and opening"
-msgstr "Renomeando pasta antiga e abrindo"
-
-#: mail/mail-local.c:313
-msgid "Creating new folder"
-msgstr "Criando nova pasta"
-
-#: mail/mail-local.c:327
-msgid "Copying messages"
-msgstr "Copiando mensagens"
-
-#: mail/mail-local.c:348
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-"Não é possível salvar metainfo da pasta; você provavelmente descobrirá que "
-"não pode mais abrir esta pasta: %s"
-
-#: mail/mail-local.c:379
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-"Se você não pode mais abrir esta caixa postal\n"
-"então você precisar repará-la manualmente."
-
-#: mail/mail-local.c:787
-msgid "Registering local folder"
-msgstr "Registrando pasta local"
-
-#: mail/mail-local.c:789
-msgid "Register local folder"
-msgstr "Registrar pasta local"
-
-#: mail/mail-local.c:893
-#, c-format
-msgid ""
-"Unable to register folder '%s':\n"
-"%s"
-msgstr ""
-"Não é possível registrar a pasta '%s':\n"
-"%s"
-
-#: mail/mail-mt.c:87
-#, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-"Erro enquanto '%s':\n"
-"%s"
-
-#: mail/mail-mt.c:89
-#, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-"Erro ao executar operação:\n"
-"%s"
-
-#: mail/mail-mt.c:372 mail/mail-mt.c:401
-msgid "Working"
-msgstr "Trabalhando"
-
-#: mail/mail-ops.c:510
-#, c-format
-msgid "Sending \"%s\""
-msgstr "Enviando \"%s\""
-
-#: mail/mail-ops.c:512
-msgid "Sending message"
-msgstr "Enviando mensagem"
-
-#: mail/mail-ops.c:740 mail/mail-ops.c:747
-#, c-format
-msgid "Appending \"%s\""
-msgstr "Concatenando \"%s\""
-
-#: mail/mail-ops.c:744 mail/mail-ops.c:750
-msgid "Appending a message without a subject"
-msgstr "Concatenando uma mensagem sem um assunto"
-
-#: mail/mail-ops.c:833
-#, c-format
-msgid "Moving messages from \"%s\" into \"%s\""
-msgstr "Movendo mensagens de \"%s\" para \"%s\""
-
-#: mail/mail-ops.c:835
-#, c-format
-msgid "Copying messages from \"%s\" into \"%s\""
-msgstr "Copiando mensagens de \"%s\" para \"%s\""
-
-#: mail/mail-ops.c:838
-#, c-format
-msgid "Move messages from \"%s\" into \"%s\""
-msgstr "Mover mensagens de \"%s\" para \"%s\""
-
-#: mail/mail-ops.c:840
-#, c-format
-msgid "Copy messages from \"%s\" into \"%s\""
-msgstr "Copiar mensagens de \"%s\" para \"%s\""
-
-#: mail/mail-ops.c:871
-msgid "Moving"
-msgstr "Movendo"
-
-#: mail/mail-ops.c:874
-msgid "Copying"
-msgstr "Copiando"
-
-#: mail/mail-ops.c:894
-#, c-format
-msgid "%s message %d of %d (uid \"%s\")"
-msgstr "%s mensagem %d de %d (uid \"%s\")"
-
-#: mail/mail-ops.c:969
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr "Varrendo pastas em \"%s\""
-
-#: mail/mail-ops.c:1035 mail/subscribe-dialog.c:356
-msgid "(No description)"
-msgstr "(Sem descrição)"
-
-#: mail/mail-ops.c:1100
-msgid "Forwarded messages"
-msgstr "Mensagens encaminhadas"
-
-#: mail/mail-ops.c:1141 mail/mail-ops.c:1210
-#, c-format
-msgid "Opening folder %s"
-msgstr "Abrindo pasta %s"
-
-#: mail/mail-ops.c:1272
-msgid "Synchronising folder"
-msgstr "Sincronizando pasta"
-
-#: mail/mail-ops.c:1322
-msgid "Expunging folder"
-msgstr "Excluindo permanentemente pasta"
-
-#: mail/mail-ops.c:1371
-#, c-format
-msgid "Retrieving message %s"
-msgstr "Recuperando mensagem %s"
-
-#: mail/mail-ops.c:1438
-msgid "Retrieving messages"
-msgstr "Recuperando mensagens"
-
-#: mail/mail-ops.c:1448
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr "Recuperando mensagem número %d de %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1596
-#, c-format
-msgid "Loading %s Folder for %s"
-msgstr "Carregando pasta %s para %s"
-
-#: mail/mail-ops.c:1598
-#, c-format
-msgid "Load %s Folder for %s"
-msgstr "Carregar pasta %s para %s"
-
-#: mail/mail-ops.c:1764
-msgid "Saving messages"
-msgstr "Salvando mensagens"
-
-#: mail/mail-ops.c:1843
-#, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr ""
-"Não é possível criar arquivo de saída: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1856
-#, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr "Salvando mensagem %d de %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1870
-#, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr ""
-"Erro ao salvar mensagens para: %s:\n"
-" %s"
-
-#: mail/mail-search-dialogue.c:104
-msgid "Ok"
-msgstr "Ok"
-
-#: mail/mail-search-dialogue.c:104
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: mail/mail-summary.c:111 mail/mail-threads.c:729
-msgid "Incomplete message written on pipe!"
-msgstr "Mensagem incompleta escrita no pipe!"
-
-#: mail/mail-threads.c:302
-#, c-format
-msgid ""
-"Error while preparing to %s:\n"
-"%s"
-msgstr ""
-"Erro ao preparar para %s:\n"
-"%s"
-
-#: mail/mail-threads.c:676
-#, c-format
-msgid ""
-"Error while `%s':\n"
-"%s"
-msgstr ""
-"Erro enquanto `%s':\n"
-"%s"
-
-#: mail/mail-threads.c:733
-msgid "Error reading commands from dispatching thread."
-msgstr "Erro ao ler comandos da thread de envio."
-
-#: mail/mail-threads.c:798
-msgid "Corrupted message from dispatching thread?"
-msgstr "Mensagem corrompida da thread de envio?"
-
-#: mail/mail-threads.c:917
-msgid "Could not create dialog box."
-msgstr "Não foi possível criar caixa de diálogo."
-
-#: mail/mail-threads.c:928
-msgid "User cancelled query."
-msgstr "O usuário cancelou a consulta."
-
-#: mail/mail-tools.c:192
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr "Não foi possível criar mbox temporário `%s': %s"
-
-#: mail/mail-tools.c:250
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr "[%s] (mensagem encaminhada)"
-
-#: mail/mail-tools.c:260
-msgid "Fwd: (no subject)"
-msgstr "Enc: (sem assunto)"
-
-#: mail/mail-tools.c:277
-#, c-format
-msgid "Forwarded message - %s"
-msgstr "Mensagem encaminhada - %s"
-
-#: mail/mail-tools.c:279
-msgid "Forwarded message (no subject)"
-msgstr "Mensagem encaminhada (sem assunto)"
-
-#: mail/mail-tools.c:380
-#, c-format
-msgid ""
-"Cannot open location `%s':\n"
-"%s"
-msgstr ""
-"Não é possível abrir local `%s':\n"
-"%s"
-
-#: mail/mail-vfolder.c:150
-msgid "VFolders"
-msgstr "Pastas virtuais"
-
-#: mail/mail-vfolder.c:302
-msgid "New VFolder"
-msgstr "Nova pasta virtual"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/mail-view.c:138 ui/evolution-mail.xml.h:31
-msgid "Reply"
-msgstr "Responder"
-
-#: mail/mail-view.c:138 ui/evolution-mail.xml.h:36
-msgid "Reply to the sender of this message"
-msgstr "Responder ao remetente desta mensagem"
-
-#: mail/mail-view.c:141 ui/evolution-mail.xml.h:35
-msgid "Reply to all recipients of this message"
-msgstr "Responder a todos os destinatários desta mensagem"
-
-#: mail/mail-view.c:144 ui/evolution-mail.xml.h:14
-msgid "Forward this message"
-msgstr "Encaminhar esta mensagem"
-
-#: mail/mail-view.c:148 ui/evolution-mail.xml.h:30
-msgid "Print the selected message"
-msgstr "Imprime a mensagem selecionada"
-
-#: mail/mail-view.c:150 ui/evolution-mail.xml.h:7
-msgid "Delete this message"
-msgstr "Exclui esta mensagem"
-
-#: mail/message-list.c:599
-msgid "Unseen"
-msgstr "Não vista"
-
-#: mail/message-list.c:602
-msgid "Seen"
-msgstr "Vista"
-
-#: mail/message-list.c:605
-msgid "Answered"
-msgstr "Respondida"
-
-#: mail/message-list.c:890
-#, c-format
-msgid "[ %s ]"
-msgstr "[ %s ]"
-
-#. well, we could scan more children, build up a (more accurate) list, but this should do ok
-#: mail/message-list.c:902 mail/message-list.c:918
-#, c-format
-msgid "%s, et al."
-msgstr "%s, et al."
-
-#: mail/message-list.c:905 mail/message-list.c:921
-msgid "<unknown>"
-msgstr "<desconhecido>"
-
-#: mail/message-list.c:973
-msgid "?"
-msgstr "?"
-
-#: mail/message-list.c:980
-msgid "Today %l:%M %p"
-msgstr "Hoje %k:%M"
-
-#: mail/message-list.c:989
-msgid "Yesterday %l:%M %p"
-msgstr "Ontem %k:%M"
-
-#: mail/message-list.c:1001
-msgid "%a %l:%M %p"
-msgstr "%a %k:%M"
-
-#: mail/message-list.c:1009
-msgid "%b %d %l:%M %p"
-msgstr "%d %b %k:%M"
-
-#: mail/message-list.c:1011
-msgid "%b %d %Y"
-msgstr "%d %b %Y"
-
-#: mail/message-list.c:1109
-msgid "Flagged"
-msgstr "Marcada"
-
-#: mail/message-list.c:1110
-msgid "From"
-msgstr "De"
-
-#: mail/message-list.c:1110
-msgid "Date"
-msgstr "Data"
-
-#: mail/message-list.c:1110
-msgid "Received"
-msgstr "Recebida"
-
-#: mail/message-list.c:1111
-msgid "To"
-msgstr "Para"
-
-#: mail/message-list.c:1111
-msgid "Size"
-msgstr "Tamanho"
-
-#: mail/openpgp-utils.c:77
-#, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr "Por favor, entre a sua frase-senha de %s para %s"
-
-#: mail/openpgp-utils.c:80
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr "Por favor, entre a sua frase-senha de %s"
-
-#: mail/openpgp-utils.c:431 mail/openpgp-utils.c:534 mail/openpgp-utils.c:738
-#: mail/openpgp-utils.c:887 mail/openpgp-utils.c:1043
-msgid "No GPG/PGP program available."
-msgstr "Sem programa GPG/PGP disponível."
-
-#: mail/openpgp-utils.c:438 mail/openpgp-utils.c:543 mail/openpgp-utils.c:745
-#: mail/openpgp-utils.c:894
-msgid "No password provided."
-msgstr "Não foi fornecida uma senha."
-
-#: mail/openpgp-utils.c:444 mail/openpgp-utils.c:551 mail/openpgp-utils.c:752
-#: mail/openpgp-utils.c:901 mail/openpgp-utils.c:1049
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr "Não foi possível criar pipe para GPG/PGP: %s"
-
-#: mail/openpgp-utils.c:562 mail/openpgp-utils.c:607 mail/openpgp-utils.c:646
-msgid "No recipients specified"
-msgstr "Sem destinatários especificados"
-
-#: mail/openpgp-utils.c:1060
-#, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "Não foi possível criar arquivo temporário: %s"
-
-#: mail/subscribe-dialog.c:62 shell/e-storage-set-view.c:44
-msgid "Folder"
-msgstr "Pasta"
-
-#: mail/subscribe-dialog.c:63
-msgid "Store"
-msgstr "Repositório"
-
-#: mail/subscribe-dialog.c:145
-msgid "Display folders starting with:"
-msgstr "Exibir pastas começando com:"
-
-#: mail/subscribe-dialog.c:178
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr "Obtendo repositório para \"%s\""
-
-#: mail/subscribe-dialog.c:181
-#, c-format
-msgid "Get store for \"%s\""
-msgstr "Obter repositório para \"%s\""
-
-#: mail/subscribe-dialog.c:289
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr "Assinando a pasta \"%s\""
-
-#: mail/subscribe-dialog.c:293
-#, c-format
-msgid "Unsubscribing from folder \"%s\""
-msgstr "Cancelando assinatura da pasta \"%s\""
-
-#: mail/subscribe-dialog.c:297
-#, c-format
-msgid "Subscribe to folder \"%s\""
-msgstr "Assinar a pasta \"%s\""
-
-#: mail/subscribe-dialog.c:300
-#, c-format
-msgid "Unsubscribe from folder \"%s\""
-msgstr "Cancelar a assinatura da pasta \"%s\""
-
-#: shell/e-setup.c:112 shell/e-setup.c:185
-msgid "Evolution installation"
-msgstr "Instalação do Evolution"
-
-#: shell/e-setup.c:116
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-"Esta nova versão do Evolution precisa instalar arquivos adicionais\n"
-"no seu diretório pessoal do Evolution"
-
-#: shell/e-setup.c:117
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr ""
-"Por favor clique \"OK\" para instalar os arquivos ou \"Cancelar\" para sair."
-
-#: shell/e-setup.c:157
-msgid "Could not update files correctly"
-msgstr "Não foi possível atualizar os arquivos corretamente"
-
-#: shell/e-setup.c:160 shell/e-setup.c:228
-msgid "Evolution files successfully installed."
-msgstr "Arquivos do Evolution instalados com sucesso."
-
-#: shell/e-setup.c:189
-msgid "This seems to be the first time you run Evolution."
-msgstr "Esta parece ser a primeira vez que você executa o Evolution."
-
-#: shell/e-setup.c:190
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr "Por favor clique \"OK\" para instalar os arquivos do Evolution em"
-
-#: shell/e-setup.c:209
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"Não é possível criar o diretório\n"
-"%s\n"
-"Erro: %s"
-
-#: shell/e-setup.c:224
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-"Não é possível copiar arquivos em\n"
-"`%s'."
-
-#: shell/e-setup.c:249
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-"O arquivo `%s' não é um diretório.\n"
-"Por favor o mova para permitir a instalação\n"
-"dos arquivos de usuário do Evolution."
-
-#: shell/e-setup.c:261
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-"O diretório `%s' existe mas não é o diretório\n"
-"do Evolution. Por favor, o mova para permitir\n"
-"a instalação dos arquivos de usuário do Evolution."
-
-#: shell/e-shell-folder-creation-dialog.c:82
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-"Não é possível criar a pasta especificada:\n"
-"%s"
-
-#: shell/e-shell-folder-creation-dialog.c:134
-msgid "The specified folder name is not valid."
-msgstr "O nome especificado para a pasta é inválido."
-
-#: shell/e-shell-folder-creation-dialog.c:225
-msgid "Evolution - Create new folder"
-msgstr "Evolution - Criar nova pasta"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-"O tipo da pasta selecionada não é válido para\n"
-"a operação desejada."
-
-#: shell/e-shell-folder-selection-dialog.c:297
-msgid "New..."
-msgstr "Novo..."
-
-#: shell/e-shell-folder-title-bar.c:451 shell/e-shell-folder-title-bar.c:452
-msgid "(Untitled)"
-msgstr "(Sem nome)"
-
-#: shell/e-shell-view-menu.c:127
-msgid "Bug buddy was not found in your $PATH."
-msgstr "Bug buddy não foi encontrado em seu $PATH."
-
-#: shell/e-shell-view-menu.c:133
-msgid "Bug buddy could not be run."
-msgstr "Bug buddy não pôde ser executado."
-
-#: shell/e-shell-view-menu.c:185
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Copyright 1999, 2000, 2001 Ximian, Inc."
-
-#: shell/e-shell-view-menu.c:187
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-"Evolution é um conjunto de aplicativos de 'groupware'\n"
-"para correio, agenda e gerenciamento de contatos\n"
-"dentro do ambiente GNOME."
-
-#: shell/e-shell-view-menu.c:347
-msgid "Go to folder..."
-msgstr "Ir para a pasta..."
-
-#: shell/e-shell-view.c:143
-msgid "(No folder displayed)"
-msgstr "(Nenhuma pasta exibida)"
-
-#: shell/e-shell-view.c:471
-msgid "Folders"
-msgstr "Pastas"
-
-#: shell/e-shell-view.c:1121
-#, c-format
-msgid "%s - Evolution %s"
-msgstr "%s - Evolution %s"
-
-#: shell/e-shell-view.c:1123
-#, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "%s - Evolution %s [%s]"
-
-#: shell/e-shell.c:372
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr "Não é possível definir repositório local -- %s"
-
-#: shell/e-shell.c:1238
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-"Ooops! A visualização para `%s' terminou inesperadamente. :-(\n"
-"Isto provavelmente significa que o componente %s falhou."
-
-#: shell/e-shortcuts-view.c:123
-msgid "Create new shortcut group"
-msgstr "Criar um novo grupo de atalhos"
-
-#: shell/e-shortcuts-view.c:126
-msgid "Group name:"
-msgstr "Nome do grupo:"
-
-#: shell/e-shortcuts-view.c:249
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-"Você deseja realmente excluir o grupo\n"
-"`%s' da barra de atalhos?"
-
-#: shell/e-shortcuts-view.c:254
-msgid "Don't remove"
-msgstr "Não remover"
-
-#: shell/e-shortcuts-view.c:265
-msgid "_Small Icons"
-msgstr "Ícones _pequenos"
-
-#: shell/e-shortcuts-view.c:266
-msgid "Show the shortcuts as small icons"
-msgstr "Exibe os atalhos como ícones pequenos"
-
-#: shell/e-shortcuts-view.c:268
-msgid "_Large Icons"
-msgstr "Ícones _grandes"
-
-#: shell/e-shortcuts-view.c:269
-msgid "Show the shortcuts as large icons"
-msgstr "Exibe os atalhos como ícones grandes"
-
-#: shell/e-shortcuts-view.c:280
-msgid "_New Group..."
-msgstr "_Novo group..."
-
-#: shell/e-shortcuts-view.c:281
-msgid "Create a new shortcut group"
-msgstr "Criar um novo grupo de atalhos"
-
-#: shell/e-shortcuts-view.c:283
-msgid "_Remove This Group..."
-msgstr "_Excluir este grupo..."
-
-#: shell/e-shortcuts-view.c:284
-msgid "Remove this shortcut group"
-msgstr "Exclui este atalho da barra de atalhos"
-
-#: shell/e-shortcuts-view.c:289
-msgid "_Hide the Shortcut Bar"
-msgstr "Es_conder a barra de atalhos"
-
-#: shell/e-shortcuts-view.c:290
-msgid "Hide the shortcut bar"
-msgstr "Esconder a barra de atalhos"
-
-#: shell/e-shortcuts-view.c:374
-msgid "Activate"
-msgstr "Ativar"
-
-#: shell/e-shortcuts-view.c:374
-msgid "Activate this shortcut"
-msgstr "Ativa este atalho"
-
-#: shell/e-shortcuts-view.c:377
-msgid "Remove this shortcut from the shortcut bar"
-msgstr "Remove este atalho da barra de atalhos"
-
-#: shell/e-shortcuts.c:375
-msgid "Error saving shortcuts."
-msgstr "Erro ao salvar atalhos."
-
-#: shell/e-storage-set-view.c:338
-msgid "View the selected folder"
-msgstr "Visualizar a pasta selecionada"
-
-#: shell/e-storage.c:160
-msgid "(No name)"
-msgstr "(Sem nome)"
-
-#: shell/e-storage.c:411
-msgid "No error"
-msgstr "Sem erro"
-
-#: shell/e-storage.c:413
-msgid "Generic error"
-msgstr "Erro genérico"
-
-#: shell/e-storage.c:415
-msgid "A folder with the same name already exists"
-msgstr "Já existe uma pasta com o mesmo nome"
-
-#: shell/e-storage.c:417
-msgid "The specified folder type is not valid"
-msgstr "O tipo de pasta especificado não é válido"
-
-#: shell/e-storage.c:419
-msgid "I/O error"
-msgstr "Erro de E/S"
-
-#: shell/e-storage.c:421
-msgid "Not enough space to create the folder"
-msgstr "Não há espaço suficiente para criar a pasta"
-
-#: shell/e-storage.c:423
-msgid "The specified folder was not found"
-msgstr "A pasta especificada não foi achada"
-
-#: shell/e-storage.c:425
-msgid "Function not implemented in this storage"
-msgstr "Função não implementada neste repositório"
-
-#: shell/e-storage.c:427
-msgid "Permission denied"
-msgstr "Permissão negada"
-
-#: shell/e-storage.c:429
-msgid "Operation not supported"
-msgstr "Operação não suportada"
-
-#: shell/e-storage.c:431
-msgid "The specified type is not supported in this storage"
-msgstr "O tipo especificado não é suportado neste repositório"
-
-#: shell/main.c:74
-msgid ""
-"Hi. Thanks for taking the time to download this preview release\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Over the time since the past release, our focus has been on making\n"
-"Evolution usable. Many of the Evolution developers are now using\n"
-"Evolution to read their mail full time. You could too. (Just\n"
-"be sure to keep a backup.)\n"
-"\n"
-"But while we have fixed many bugs affecting its stability and\n"
-"security, you still get the disclaimer: Evolution will: crash,\n"
-"lose your mail when you don't want it to, refuse to delete your\n"
-"mail when you do want it to, leave stray processes running,\n"
-"consume 100% CPU, race, lock, send HTML mail to random mailing\n"
-"lists, and embarass you in front of your friends and co-workers.\n"
-"Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we eagerly\n"
-"await your contributions!\n"
-msgstr ""
-"Hi. Thanks for taking the time to download this preview release\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Over the time since the past release, our focus has been on making\n"
-"Evolution usable. Many of the Evolution developers are now using\n"
-"Evolution to read their mail full time. You could too. (Just\n"
-"be sure to keep a backup.)\n"
-"\n"
-"But while we have fixed many bugs affecting its stability and\n"
-"security, you still get the disclaimer: Evolution will: crash,\n"
-"lose your mail when you don't want it to, refuse to delete your\n"
-"mail when you do want it to, leave stray processes running,\n"
-"consume 100% CPU, race, lock, send HTML mail to random mailing\n"
-"lists, and embarass you in front of your friends and co-workers.\n"
-"Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we eagerly\n"
-"await your contributions!\n"
-
-#: shell/main.c:101
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-"Obrigado\n"
-"The Evolution Team\n"
-
-#: shell/main.c:132
-msgid "Cannot initialize the Evolution shell."
-msgstr "Não é possível iniciar o Evolution."
-
-#: shell/main.c:178
-msgid "Disable."
-msgstr "Desativar."
-
-#: shell/main.c:198
-msgid "Cannot initialize the Bonobo component system."
-msgstr "Não é possível iniciar o sistema de componentes Bonobo."
-
-#: ui/evolution-addressbook.xml.h:2
-msgid "Create new contact"
-msgstr "Criar novo contato"
-
-#: ui/evolution-addressbook.xml.h:4
-msgid "Delete a contact"
-msgstr "Apagar um contato"
-
-#: ui/evolution-addressbook.xml.h:6
-msgid "Find a contact"
-msgstr "Localizar um contato"
-
-#: ui/evolution-addressbook.xml.h:7
-msgid "New contact"
-msgstr "Novo contato"
-
-#: ui/evolution-addressbook.xml.h:9
-msgid "Print contacts"
-msgstr "Imprimir contatos"
-
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-mail.xml.h:41
-msgid "Stop"
-msgstr "Parar"
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "Stop Loading"
-msgstr "Parar a carga"
-
-#: ui/evolution-addressbook.xml.h:12
-msgid "View All"
-msgstr "Visualizar todos"
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "View all contacts"
-msgstr "Visualizar todos os contatos"
-
-#: ui/evolution-addressbook.xml.h:14
-msgid "_Addressbook Configuration..."
-msgstr "Configuração do catálogo de _endereços..."
-
-#: ui/evolution-addressbook.xml.h:15
-msgid "_Print Contacts..."
-msgstr "_Imprimir contatos..."
-
-#: ui/evolution-addressbook.xml.h:16
-msgid "_Search for contacts"
-msgstr "_Busca por contatos"
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr "5 dias"
-
-#: ui/evolution-calendar.xml.h:3
-msgid "Ca_lendar"
-msgstr "A_genda"
-
-#: ui/evolution-calendar.xml.h:4
-msgid "Calendar Preferences..."
-msgstr "Preferências da agenda..."
-
-#: ui/evolution-calendar.xml.h:5
-msgid "Create a new appointment"
-msgstr "Criar um novo compromisso"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr "Criar uma nova agenda"
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr "Dia"
-
-#: ui/evolution-calendar.xml.h:8
-msgid "Go back in time"
-msgstr "Voltar no tempo"
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go forward in time"
-msgstr "Avançar no tempo"
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go to"
-msgstr "Ir para"
-
-#: ui/evolution-calendar.xml.h:11
-msgid "Go to a specific date"
-msgstr "Ir para uma data específica"
-
-#: ui/evolution-calendar.xml.h:12
-msgid "Go to present time"
-msgstr "Ir para o presente"
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Month"
-msgstr "Mês"
-
-#: ui/evolution-calendar.xml.h:14
-msgid "New appointment"
-msgstr "Novo compromisso"
-
-#: ui/evolution-calendar.xml.h:16
-msgid "Open a calendar"
-msgstr "Abrir uma agenda"
-
-#: ui/evolution-calendar.xml.h:17
-msgid "Prev"
-msgstr "Ant"
-
-#: ui/evolution-calendar.xml.h:19
-msgid "Print this calendar"
-msgstr "Imprimir esta agenda"
-
-#: ui/evolution-calendar.xml.h:20
-msgid "Save calendar as something else"
-msgstr "Salvar agenda como outra coisa"
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Show 1 day"
-msgstr "Exibe 1 dia"
-
-#: ui/evolution-calendar.xml.h:22
-msgid "Show 1 month"
-msgstr "Exibe 1 mês"
-
-#: ui/evolution-calendar.xml.h:23
-msgid "Show 1 week"
-msgstr "Exibe 1 semana"
-
-#: ui/evolution-calendar.xml.h:24
-msgid "Show the working week"
-msgstr "Exibe a semana útil"
-
-#: ui/evolution-calendar.xml.h:25 widgets/misc/e-dateedit.c:413
-msgid "Today"
-msgstr "Hoje"
-
-#: ui/evolution-calendar.xml.h:26
-msgid "Week"
-msgstr "Semana"
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution.xml.h:38
-msgid "_New"
-msgstr "_Novo"
-
-#: ui/evolution-calendar.xml.h:28
-msgid "_Open Calendar"
-msgstr "_Abrir agenda"
-
-#: ui/evolution-calendar.xml.h:29
-msgid "_Print this calendar"
-msgstr "_Imprimir esta agenda"
-
-#: ui/evolution-contact-editor.xml.h:2
-msgid "Delete this item"
-msgstr "Exclui este item"
-
-#: ui/evolution-contact-editor.xml.h:3
-msgid "Delete..."
-msgstr "Excluir..."
-
-#: ui/evolution-contact-editor.xml.h:4
-msgid "Help"
-msgstr "Ajuda"
-
-#: ui/evolution-contact-editor.xml.h:5
-msgid "Print En_velope..."
-msgstr "Imprimir en_velope..."
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr "Salva o contato e fecha a caixa de diálogo"
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr "E_nviar o contato a outro..."
-
-#: ui/evolution-contact-editor.xml.h:13
-msgid "Send _message to contact..."
-msgstr "Enviar _mensagem ao contato..."
-
-#: ui/evolution-contact-editor.xml.h:15
-msgid "_Print..."
-msgstr "_Imprimir..."
-
-#: ui/evolution-event-editor.xml.h:9
-msgid "Close this appointment"
-msgstr "Fechar este compromisso"
-
-#: ui/evolution-event-editor.xml.h:27
-msgid "FIXME: Forward as v_Calendar"
-msgstr "FIXME: Encaminar como vCa_lendar"
-
-#: ui/evolution-event-editor.xml.h:52
-msgid "FIXME: _New Appointment"
-msgstr "FIXME: _Novo compromisso"
-
-#: ui/evolution-event-editor.xml.h:53
-msgid "FIXME: _Note"
-msgstr "FIXME: _Nota"
-
-#: ui/evolution-event-editor.xml.h:86
-msgid "Save the appointment and close the dialog box"
-msgstr "Salva o compromisso e fecha a caixa de diálogo"
-
-#: ui/evolution-event-editor.xml.h:88
-msgid "Schedule Meeting"
-msgstr "Agendar reunião"
-
-#: ui/evolution-event-editor.xml.h:89
-msgid "Schedule _Meeting"
-msgstr "Agendar _reunião"
-
-#: ui/evolution-event-editor.xml.h:90
-msgid "Schedule some sort of a meeting"
-msgstr "Agendar algum tipo de reunião"
-
-#: ui/evolution-mail.xml.h:1
-msgid "Compose"
-msgstr "Redigir"
-
-#: ui/evolution-mail.xml.h:2
-msgid "Compose a new message"
-msgstr "Redigir uma nova mensagem"
-
-#: ui/evolution-mail.xml.h:4
-msgid "Copy message to a new folder"
-msgstr "Copiar mensagem para uma nova pasta"
-
-#: ui/evolution-mail.xml.h:5
-msgid "Create Rule"
-msgstr "Criar regra"
-
-#: ui/evolution-mail.xml.h:8 ui/evolution-subscribe.xml.h:3
-msgid "F_older"
-msgstr "_Pasta"
-
-#: ui/evolution-mail.xml.h:9
-msgid "Fi_lter on Sender"
-msgstr "Filtro por _remetente"
-
-#: ui/evolution-mail.xml.h:10
-msgid "Filter on Rec_ipients"
-msgstr "Filtro por _destinatários"
-
-#: ui/evolution-mail.xml.h:11
-msgid "Forget _Passwords"
-msgstr "Esquecer _senhas"
-
-#: ui/evolution-mail.xml.h:15
-msgid "Get Mail"
-msgstr "Pegar correio"
-
-#: ui/evolution-mail.xml.h:16
-msgid "Hide S_elected Messages"
-msgstr "Esconder mensagens _selecionadas"
-
-#: ui/evolution-mail.xml.h:17
-msgid "Hide _Deleted Messages"
-msgstr "Esconder mensagens _excluídas"
-
-#: ui/evolution-mail.xml.h:18
-msgid "Hide _Read messages"
-msgstr "Esconder mensagens _lidas"
-
-#: ui/evolution-mail.xml.h:19
-msgid "Mail _Filters..."
-msgstr "_Filtros de correio..."
-
-#: ui/evolution-mail.xml.h:20
-msgid "Manage Subscriptions..."
-msgstr "Gerenciar assinaturas..."
-
-#: ui/evolution-mail.xml.h:21
-msgid "Mar_k As Read"
-msgstr "Marcar como _lida"
-
-#: ui/evolution-mail.xml.h:22
-msgid "Mark As U_nread"
-msgstr "Marcar como _não lida"
-
-#: ui/evolution-mail.xml.h:23
-msgid "Move"
-msgstr "Mover"
-
-#: ui/evolution-mail.xml.h:24
-msgid "Move message to a new folder"
-msgstr "Mover a mensagem para uma nova pasta"
-
-#: ui/evolution-mail.xml.h:25
-msgid "Previews the message to be printed"
-msgstr "Visualiza a impressão da mensagem a ser impressa"
-
-#: ui/evolution-mail.xml.h:27
-msgid "Print Preview of message..."
-msgstr "Visualizar impressão da mensagem..."
-
-#: ui/evolution-mail.xml.h:28
-msgid "Print message to the printer"
-msgstr "Imprime a mensagem na impressora"
-
-#: ui/evolution-mail.xml.h:29
-msgid "Print message..."
-msgstr "Imprimir mensagem..."
-
-#: ui/evolution-mail.xml.h:33
-msgid "Reply to _All"
-msgstr "Responder a _todos"
-
-#: ui/evolution-mail.xml.h:34
-msgid "Reply to _Sender"
-msgstr "Responder ao _remetente"
-
-#: ui/evolution-mail.xml.h:37
-msgid "S_ource"
-msgstr "_Fonte"
-
-#: ui/evolution-mail.xml.h:38 ui/evolution-subscribe.xml.h:7
-msgid "Select _All"
-msgstr "Selecionar _todos"
-
-#: ui/evolution-mail.xml.h:39
-msgid "Send queued mail and retrieve new mail"
-msgstr "Enviar mensagens na fila de saída e recuperar novas mensagens"
-
-#: ui/evolution-mail.xml.h:40
-msgid "Show _All Messages"
-msgstr "Exibir _todas as mensagens"
-
-#: ui/evolution-mail.xml.h:42
-msgid "Threaded Message list"
-msgstr "Lista de mensagens encadeadas"
-
-#: ui/evolution-mail.xml.h:43
-msgid "VFolder on Se_nder"
-msgstr "Pasta virtual por _remetente"
-
-#: ui/evolution-mail.xml.h:44
-msgid "VFolder on _Recipients"
-msgstr "Pasta virtual por _destinatários"
-
-#: ui/evolution-mail.xml.h:45
-msgid "View Raw Message Source"
-msgstr "Ver o código fonte da mensagem"
-
-#: ui/evolution-mail.xml.h:46
-msgid "_Apply Filters"
-msgstr "_Aplicar filtros"
-
-#: ui/evolution-mail.xml.h:47
-msgid "_Configure Folder..."
-msgstr "_Configurar pasta..."
-
-#: ui/evolution-mail.xml.h:48
-msgid "_Copy to Folder..."
-msgstr "_Copiar para pasta..."
-
-#: ui/evolution-mail.xml.h:50
-msgid "_Edit Message"
-msgstr "_Editar mensagem"
-
-#: ui/evolution-mail.xml.h:51
-msgid "_Expunge"
-msgstr "_Excluir permanentemente"
-
-#: ui/evolution-mail.xml.h:52
-msgid "_Filter on Subject"
-msgstr "_Filtro por assunto"
-
-#: ui/evolution-mail.xml.h:53
-msgid "_Forward"
-msgstr "_Encaminhar"
-
-#: ui/evolution-mail.xml.h:54 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr "_Inverter seleção"
-
-#: ui/evolution-mail.xml.h:55
-msgid "_Mail Configuration..."
-msgstr "_Configuração de correio..."
-
-#: ui/evolution-mail.xml.h:56
-msgid "_Message"
-msgstr "_Mensagem"
-
-#: ui/evolution-mail.xml.h:57
-msgid "_Move to Folder..."
-msgstr "_Mover para pasta..."
-
-#: ui/evolution-mail.xml.h:58
-msgid "_Open in New Window"
-msgstr "_Abrir em uma nova janela"
-
-#: ui/evolution-mail.xml.h:59
-msgid "_Print Message"
-msgstr "_Imprimir mensagem"
-
-#: ui/evolution-mail.xml.h:60
-msgid "_Save Message As..."
-msgstr "_Salvar mensagem como..."
-
-#: ui/evolution-mail.xml.h:61
-msgid "_Threaded"
-msgstr "_Encadeado"
-
-#: ui/evolution-mail.xml.h:62
-msgid "_Undelete"
-msgstr "Des_fazer exclusão"
-
-#: ui/evolution-mail.xml.h:63
-msgid "_VFolder on Subject"
-msgstr "_Pasta virtual por assunto"
-
-#: ui/evolution-mail.xml.h:64
-msgid "_Virtual Folder Editor..."
-msgstr "Editor de pastas _virtuais..."
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr "Anexar"
-
-#: ui/evolution-message-composer.xml.h:5
-msgid "Encrypt this message with PGP"
-msgstr "Cifrar esta mensagem com PGP"
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "HTML"
-msgstr "HTML"
-
-#: ui/evolution-message-composer.xml.h:8
-msgid "Insert a file as text into the message"
-msgstr "Inserir um arquivo como texto na mensagem"
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert text file..."
-msgstr "Inserir arquivo texto..."
-
-#: ui/evolution-message-composer.xml.h:11
-msgid "Open a file"
-msgstr "Abrir um arquivo"
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "PGP Encrypt"
-msgstr "Cifrar com PGP"
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Sign"
-msgstr "Assinar com PGP"
-
-#: ui/evolution-message-composer.xml.h:15
-msgid "Save As"
-msgstr "Salvar como"
-
-#: ui/evolution-message-composer.xml.h:17
-msgid "Save _Draft"
-msgstr "Salvar _rascunho"
-
-#: ui/evolution-message-composer.xml.h:18
-msgid "Save in _folder... (FIXME)"
-msgstr "Salvar na _pasta... (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:19
-msgid "Save in folder..."
-msgstr "Salvar na pasta..."
-
-#: ui/evolution-message-composer.xml.h:21
-msgid "Save the current file with a different name"
-msgstr "Salvar o arquivo atual com um nome diferente"
-
-#: ui/evolution-message-composer.xml.h:22
-msgid "Save the message in a specified folder"
-msgstr "Salvar a mensagem em uma pasta especificada"
-
-#: ui/evolution-message-composer.xml.h:23
-msgid "Send"
-msgstr "Enviar"
-
-#: ui/evolution-message-composer.xml.h:24
-msgid "Send _Later"
-msgstr "Enviar mais _tarde"
-
-#: ui/evolution-message-composer.xml.h:25
-msgid "Send _later"
-msgstr "Enviar mais _tarde"
-
-#: ui/evolution-message-composer.xml.h:26
-msgid "Send the mail in HTML format"
-msgstr "Enviar as mensagens em formato HTML"
-
-#: ui/evolution-message-composer.xml.h:27
-msgid "Send the message later"
-msgstr "Enviar a mensagem mais tarde"
-
-#: ui/evolution-message-composer.xml.h:28
-msgid "Send the message now"
-msgstr "Enviar a mensagem agora"
-
-#: ui/evolution-message-composer.xml.h:29
-msgid "Send this message now"
-msgstr "Enviar esta mensagem agora"
-
-#: ui/evolution-message-composer.xml.h:30
-msgid "Show / hide attachments"
-msgstr "Exibir / esconder anexos"
-
-#: ui/evolution-message-composer.xml.h:31
-msgid "Show _attachments"
-msgstr "Exibir _anexos"
-
-#: ui/evolution-message-composer.xml.h:32
-msgid "Show attachments"
-msgstr "Exibir anexos"
-
-#: ui/evolution-message-composer.xml.h:33
-msgid "Sign this message with your PGP key"
-msgstr "Assinar esta mensagem com a sua chave PGP"
-
-#: ui/evolution-message-composer.xml.h:40
-msgid "_Insert text file... (FIXME)"
-msgstr "_Inserir arquivo texto... (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:41
-msgid "_Open..."
-msgstr "_Abrir..."
-
-#: ui/evolution-message-composer.xml.h:43
-msgid "_Security"
-msgstr "_Segurança"
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr "Adicionar pasta em sua lista de pastas assinadas"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr "Atualizar lista"
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr "Atualizar lista de pastas"
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr "Remover pasta de sua lista de pastas assinadas"
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr "Assinar"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr "Cancelar a assinatura"
-
-#: ui/evolution.xml.h:1
-msgid "About Evolution..."
-msgstr "Sobre o Evolution..."
-
-#: ui/evolution.xml.h:3
-msgid "Close this window"
-msgstr "Fechar esta janela"
-
-#: ui/evolution.xml.h:4
-msgid "Customi_ze..."
-msgstr "_Personalizar..."
-
-#: ui/evolution.xml.h:5
-msgid "Customize"
-msgstr "Personalizar"
-
-#: ui/evolution.xml.h:6
-msgid "Customize toolbars"
-msgstr "Personalizar barras de ferramentas"
-
-#: ui/evolution.xml.h:7
-msgid "Display a different folder"
-msgstr "Exibir uma pasta diferente"
-
-#: ui/evolution.xml.h:8
-msgid "E_xit"
-msgstr "Sai_r"
-
-#: ui/evolution.xml.h:9
-msgid "Evolution bar _shortcut"
-msgstr "Barra de _atalhos do Evolution"
-
-#: ui/evolution.xml.h:10
-msgid "Exit"
-msgstr "Sair"
-
-#: ui/evolution.xml.h:11
-msgid "Exit the program"
-msgstr "Sair do programa"
-
-#: ui/evolution.xml.h:12
-msgid "Getting _Started"
-msgstr "Primeiros passos"
-
-#: ui/evolution.xml.h:13
-msgid "Import an external file format"
-msgstr "Importar um formato de arquivo externo"
-
-#: ui/evolution.xml.h:14
-msgid "Main toolbar"
-msgstr "Barra de tarefas principal"
-
-#: ui/evolution.xml.h:15
-msgid "Show information about Evolution"
-msgstr "Exibir informação sobre o Evolution"
-
-#: ui/evolution.xml.h:16
-msgid "Show the _Folder Bar"
-msgstr "Exibir a barra de _pastas"
-
-#: ui/evolution.xml.h:17
-msgid "Show the _Shortcut Bar"
-msgstr "Exibir a barra de _atalhos"
-
-#: ui/evolution.xml.h:18
-msgid "Submit Bug Report"
-msgstr "Enviar relatório de erro"
-
-#: ui/evolution.xml.h:19
-msgid "Submit _Bug Report"
-msgstr "Enviar relatório de _erro"
-
-#: ui/evolution.xml.h:20
-msgid "Submit bug report using Bug Buddy."
-msgstr "Enviar relatório de erro usando o Bug Buddy."
-
-#: ui/evolution.xml.h:21
-msgid "Toggle whether to show the folder bar"
-msgstr "Alternar a exibição da barra de pastas"
-
-#: ui/evolution.xml.h:22
-msgid "Toggle whether to show the shortcut bar"
-msgstr "Alternar a exibição da barra de atalhos"
-
-#: ui/evolution.xml.h:23
-msgid "Using the C_ontact Manager"
-msgstr "Usando o gerenciador de _contatos"
-
-#: ui/evolution.xml.h:24
-msgid "Using the _Calendar"
-msgstr "Usando a _agenda"
-
-#: ui/evolution.xml.h:25
-msgid "Using the _Mailer"
-msgstr "Usando o _correio"
-
-#: ui/evolution.xml.h:26
-msgid "_About Evolution..."
-msgstr "_Sobre o Evolution"
-
-#: ui/evolution.xml.h:27
-msgid "_Appointment (FIXME)"
-msgstr "_Compromisso (FIXME)"
-
-#: ui/evolution.xml.h:29
-msgid "_Contact (FIXME)"
-msgstr "_Contato (FIXME)"
-
-#: ui/evolution.xml.h:32
-msgid "_Folder"
-msgstr "_Pasta"
-
-#: ui/evolution.xml.h:33
-msgid "_Go to Folder..."
-msgstr "_Ir para pasta..."
-
-#: ui/evolution.xml.h:35
-msgid "_Import file..."
-msgstr "_Importar arquivo..."
-
-#: ui/evolution.xml.h:36
-msgid "_Index"
-msgstr "_Indexar"
-
-#: ui/evolution.xml.h:37
-msgid "_Mail message"
-msgstr "_Mensagem de correio"
-
-#: ui/evolution.xml.h:39
-msgid "_Settings"
-msgstr "_Configurações"
-
-#: ui/evolution.xml.h:40
-msgid "_Task (FIXME)"
-msgstr "_Tarefa (FIXME)"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:463
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2471
-msgid "%A, %B %d, %Y"
-msgstr "%A, %d de %B, %Y"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:386
-msgid "Tentative"
-msgstr "Preliminar"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:387
-msgid "Busy"
-msgstr "Ocupado"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:388
-msgid "Out of Office"
-msgstr "Fora do escritório"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:389
-msgid "No Information"
-msgstr "Sem informação"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:405
-msgid "_Invite Others..."
-msgstr "_Convidar outros..."
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:425
-msgid "_Options"
-msgstr "_Opções"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:442
-msgid "Show _Only Working Hours"
-msgstr "Exibir apenas _horas do expediente"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:455
-msgid "Show _Zoomed Out"
-msgstr "Exibir com _menos ampliação"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:473
-msgid "_Update Free/Busy"
-msgstr "_Atualizar livre/ocupado"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:491
-msgid "_<<"
-msgstr "_<<"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:508
-msgid "_Autopick"
-msgstr "_Autoescolher"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:522
-msgid ">_>"
-msgstr ">_>"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:539
-msgid "_All People and Resources"
-msgstr "_Todas as pessoas e recursos"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:552
-msgid "All _People and One Resource"
-msgstr "Todas as _pessoas e um recurso"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:565
-msgid "_Required People"
-msgstr "Pessoas _necessárias"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:578
-msgid "Required People and _One Resource"
-msgstr "Pessoas necessárias e _um recurso"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:601
-msgid "Meeting _start time:"
-msgstr "Hora de _início da reunião:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:625
-msgid "Meeting _end time:"
-msgstr "Hora de _término da reunião:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:738
-msgid "All Attendees"
-msgstr "Todos os participantes"
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:421
-msgid "MTWTFSS"
-msgstr "STQQSSD"
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1060 widgets/misc/e-calendar-item.c:2755
-msgid "%B %Y"
-msgstr "%B %Y"
-
-#: widgets/misc/e-clipped-label.c:107
-msgid "..."
-msgstr "..."
-
-#: widgets/misc/e-dateedit.c:407
-msgid "Now"
-msgstr "Agora"
-
-#. This is a strftime() format. %H = hour (0-23), %M = minute.
-#: widgets/misc/e-dateedit.c:1248 widgets/misc/e-dateedit.c:1307
-#: widgets/misc/e-dateedit.c:1486
-msgid "%H:%M"
-msgstr "%H:%M"
-
-#. This is a strftime() format. %I = hour (1-12), %M = minute, %p = am/pm string.
-#: widgets/misc/e-dateedit.c:1251 widgets/misc/e-dateedit.c:1310
-#: widgets/misc/e-dateedit.c:1489
-msgid "%I:%M %p"
-msgstr "%I:%M %p"
-
-#: widgets/misc/e-search-bar.c:176
-msgid "Sear_ch"
-msgstr "_Buscar"
-
-#: widgets/shortcut-bar/e-group-bar.c:632
-#, c-format
-msgid "Group %i"
-msgstr "Grupo %i"
-
-#: evolution.desktop.in:4
-msgid "The Evolution groupware suite"
-msgstr "Suíte do grupo Evolution"
diff --git a/po/ru.po b/po/ru.po
deleted file mode 100644
index 378b4a4d25..0000000000
--- a/po/ru.po
+++ /dev/null
@@ -1,8974 +0,0 @@
-# Copyright (C) 2000 Free Software Foundation, Inc.
-# Valek Filippov <frob@df.ru>, 2000.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: E-volution\n"
-"POT-Creation-Date: 2001-05-08 12:41+0400\n"
-"PO-Revision-Date: 2001-05-08 13:15+04:00\n"
-"Last-Translator: Valek Filippov <frob@df.ru>\n"
-"Language-Team: Russian <ru@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=koi8-r\n"
-"Content-Transfer-Encoding: 8-bit\n"
-
-#: addressbook/backend/ebook/e-card.c:3278
-msgid "Card: "
-msgstr "ëÁÒÔÏÞËÁ: "
-
-#: addressbook/backend/ebook/e-card.c:3280
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-"\n"
-"éÍÑ: "
-
-#: addressbook/backend/ebook/e-card.c:3281
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-"\n"
-" ðÒÅÆÉËÓ: "
-
-#: addressbook/backend/ebook/e-card.c:3282
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-"\n"
-" éÍÑ: "
-
-#: addressbook/backend/ebook/e-card.c:3283
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-"\n"
-" äÏÂÁ×ÏÞÎÙÊ: "
-
-#: addressbook/backend/ebook/e-card.c:3284
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-"\n"
-" æÁÍÉÌÉÑ: "
-
-#: addressbook/backend/ebook/e-card.c:3285
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-"\n"
-" óÕÆÆÉËÓ: "
-
-#: addressbook/backend/ebook/e-card.c:3299
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-"\n"
-"äÁÔÁ ÒÏÖÄÅÎÉÑ: "
-
-#: addressbook/backend/ebook/e-card.c:3310
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-"\n"
-"áÄÒÅÓ:"
-
-#: addressbook/backend/ebook/e-card.c:3312
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-"\n"
-"ðÏÞÔÏ×ÙÊ ÑÝÉË: "
-
-#: addressbook/backend/ebook/e-card.c:3313
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-"\n"
-" òÁÓÛ.: "
-
-#: addressbook/backend/ebook/e-card.c:3314
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-"\n"
-" õÌÉÃÁ: "
-
-#: addressbook/backend/ebook/e-card.c:3315
-msgid ""
-"\n"
-" City: "
-msgstr ""
-"\n"
-" çÏÒÏÄ: "
-
-#: addressbook/backend/ebook/e-card.c:3316
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-"\n"
-" ïÂÌÁÓÔØ: "
-
-#: addressbook/backend/ebook/e-card.c:3317
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-"\n"
-" ðÏÞÔÏ×ÙÊ ËÏÄ: "
-
-#: addressbook/backend/ebook/e-card.c:3318
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-"\n"
-" óÔÒÁÎÁ: "
-
-#: addressbook/backend/ebook/e-card.c:3331
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-"\n"
-"íÅÔËÁ ÄÌÑ ÄÏÓÔÁ×ËÉ:"
-
-#: addressbook/backend/ebook/e-card.c:3343
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-"\n"
-"ôÅÌÅÆÏÎÙ:\n"
-
-#: addressbook/backend/ebook/e-card.c:3346
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-"\n"
-"ôÅÌÅÆÏÎ:"
-
-#: addressbook/backend/ebook/e-card.c:3370
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-"\n"
-"üÌ.ÁÄÒÅÓ:\n"
-
-#: addressbook/backend/ebook/e-card.c:3373
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-"\n"
-"üÌ.ÁÄÒÅÓ:"
-
-#: addressbook/backend/ebook/e-card.c:3392
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-"\n"
-"ðÏÞÔÏ×ÙÊ ËÌÉÅÎÔ: "
-
-#: addressbook/backend/ebook/e-card.c:3398
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-"\n"
-"þÁÓÏ×ÏÊ ÐÏÑÓ: "
-
-#: addressbook/backend/ebook/e-card.c:3406
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-"\n"
-"çÅÏÇÒ.ÐÏÌÏÖÅÎÉÅ: "
-
-#: addressbook/backend/ebook/e-card.c:3410
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-"\n"
-"äÏÌÖÎÏÓÔØ: "
-
-#: addressbook/backend/ebook/e-card.c:3422
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-"\n"
-"ïÒÇ.:"
-
-#: addressbook/backend/ebook/e-card.c:3423
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-"\n"
-" éÍÑ: "
-
-#: addressbook/backend/ebook/e-card.c:3424
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-"\n"
-"åÄÉÎÉÃÁ: "
-
-#: addressbook/backend/ebook/e-card.c:3425
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-"\n"
-"åÄÉÎÉÃÁ2: "
-
-#: addressbook/backend/ebook/e-card.c:3426
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-"\n"
-"åÄÉÎÉÃÁ3: "
-
-#: addressbook/backend/ebook/e-card.c:3427
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-"\n"
-"åÄÉÎÉÃÁ4: "
-
-#: addressbook/backend/ebook/e-card.c:3431
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-"\n"
-"ëÁÔÅÇÏÒÉÉ: "
-
-#: addressbook/backend/ebook/e-card.c:3432
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-"\n"
-"ëÏÍÍÅÎÔÁÒÉÉ: "
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3445
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-"\n"
-"õÎÉËÁÌØÎÁÑ ÓÔÒÏËÁ: "
-
-#: addressbook/backend/ebook/e-card.c:3448
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-"\n"
-"ðÕÂÌÉÞÎÙÊ ËÌÀÞ: "
-
-#: addressbook/backend/ebook/e-card.c:3709
-msgid "Multiple VCards"
-msgstr "íÎÏÖÅÓÔ×Ï VCards"
-
-#: addressbook/backend/ebook/e-card.c:3717
-#, c-format
-msgid "VCard for %s"
-msgstr "VCard ÄÌÑ %s"
-
-#: addressbook/backend/ebook/e-destination.c:232
-msgid "???"
-msgstr "???"
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:1
-msgid "Factory to import GnomeCard files into Evolution."
-msgstr "æÁÂÒÉËÁ ÄÌÑ ÉÍÐÏÒÔÁ ÆÁÊÌÏ× GnomeCard × Evolution."
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:2
-msgid "Imports GnomeCard files into Evolution."
-msgstr "éÍÐÏÒÔÉÒÕÅÔ ÆÁÊÌÙ GnomeCard × Evolution."
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:21
-#: addressbook/backend/ebook/load-pine-addressbook.c:22
-#: addressbook/backend/ebook/test-client-list.c:23
-#: addressbook/backend/ebook/test-client.c:33
-#: addressbook/conduit/address-conduit.c:1092
-#: addressbook/gui/component/addressbook-factory.c:42
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:98 calendar/gui/main.c:57
-msgid "Could not initialize Bonobo"
-msgstr "îÅ ÕÄÁÌÏÓØ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ Bonobo"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr "ëÕÒÓÏÒ ÎÅ ÍÏÖÅÔ ÂÙÔØ ÚÁÇÒÕÖÅÎ\n"
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr "EBook ÎÅ ÚÁÇÒÕÖÅÎÁ\n"
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr "îÅ ÕÄÁÌÏÓØ ÚÁÐÕÓÔÉÔØ ÓÅÒ×ÅÒ wombat"
-
-#: addressbook/conduit/address-conduit.c:655
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr "îÅ ÕÄÁÌÏÓØ ÚÁÐÕÓÔÉÔØ wombat"
-
-#: addressbook/conduit/address-conduit.c:687
-#: addressbook/conduit/address-conduit.c:690
-msgid "Could not read pilot's Address application block"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÒÏÞÅÓÔØ ÂÌÏË ÐÒÉÌÏÖÅÎÉÑ ÁÄÒÅÓÏ× ðÉÌÏÔÁ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:7
-msgid "Add"
-msgstr "äÏÂÁ×ÉÔØ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr "çÏÄÏ×ÝÉÎÁ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr "òÁÂÏÞÉÊ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr "òÁÂÏÞÉÊ ÆÁËÓ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-msgid "C_ontacts..."
-msgstr "ëÏÎÔÁËÔÙ..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr "ëÁÔÅÇÏÒÉÉ..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-msgid "Contact Editor"
-msgstr "òÅÄÁËÔÏÒ ËÏÎÔÁËÔÏ×"
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr "äÅÔÁÌÉ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr "æÁÊÌ ËÁË:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-msgid "General"
-msgstr "ïÂÝÅÅ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr "îÏ×ÙÊ ÔÉÐ ÔÅÌÅÆÏÎÁ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-msgid "No_tes:"
-msgstr "úÁÍÅÔËÉ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr "ôÉÐ ÔÅÌÅÆÏÎÁ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1284
-msgid "Primary Email"
-msgstr "ðÅÒ×ÙÊ ÜÌ.ÁÄÒÅÓ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr "èÏÞÅÔ ÐÏÌÕÞÁÔØ ÐÏÞÔÕ × HTML"
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr "áÄÒÅÓ web-ÓÔÒÁÎÉÃÙ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:74
-msgid "_Add"
-msgstr "äÏÂÁ×ÉÔØ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr "áÄÒÅÓ..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr "éÍÑ ÐÏÍÏÝÎÉËÁ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr "äÅÎØ ÒÏÖÄÅÎÉÑ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr "òÁÂÏÞÉÊ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-msgid "_Company:"
-msgstr "ëÏÍÐÁÎÉÑ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/folder-browser.c:640 mail/mail-config.glade.h:75
-#: ui/evolution-event-editor.xml.h:57 ui/evolution-mail.xml.h:98
-#: ui/evolution-task-editor-dialog.xml.h:69
-msgid "_Delete"
-msgstr "õÄÁÌÉÔØ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr "ïÔÄÅÌ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr "ðÏÌÎÏÅ ÉÍÑ..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-msgid "_Home"
-msgstr "äÏÍÁÛÎÉÊ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-msgid "_Job title:"
-msgstr "äÏÌÖÎÏÓÔØ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr "éÍÑ ÍÅÎÅÄÖÅÒÁ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-msgid "_Mobile"
-msgstr "íÏÂÉÌØÎÙÊ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr "ðÓÅ×ÄÏÎÉÍ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr "ïÆÉÓ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr "ðÒÏÆÅÓÓÉÑ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr "óÕÐÒÕÇ(Á):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr "üÔÏ ÐÏÞÔÏ×ÙÊ ÁÄÒÅÓ"
-
-#: addressbook/contact-editor/e-contact-editor.c:603
-msgid "This contact belongs to these categories:"
-msgstr "üÔÏÔ ËÏÎÔÁËÔ ÐÒÉÎÁÄÌÅÖÉÔ ÓÌÅÄÕÀÝÉÍ ËÁÔÅÇÏÒÉÑÍ:"
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-#: addressbook/gui/widgets/e-addressbook-view.c:676
-msgid "Assistant"
-msgstr "ðÏÍÏÝÎÉË"
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/contact-editor/e-contact-editor.c:1310
-msgid "Business"
-msgstr "òÁÂÏÞÉÊ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-msgid "Business 2"
-msgstr "òÁÂÏÞÉÊ 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#: addressbook/gui/widgets/e-addressbook-view.c:656
-msgid "Business Fax"
-msgstr "òÁÂÏÞÉÊ ÆÁËÓ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Callback"
-msgstr "ïÂÒÁÔÎÙÊ ÏÔÚ×ÏÎ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "Car"
-msgstr "íÁÛÉÎÁ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1248
-msgid "Company"
-msgstr "ëÏÍÐÁÎÉÑ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1249
-#: addressbook/contact-editor/e-contact-editor.c:1311
-msgid "Home"
-msgstr "äÏÍÁÛÎÉÊ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1250
-msgid "Home 2"
-msgstr "äÏÍÁÛÎÉÊ 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1251
-#: addressbook/gui/widgets/e-addressbook-view.c:657
-msgid "Home Fax"
-msgstr "äÏÍÁÛÎÉÊ æÁËÓ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1252
-#: addressbook/gui/widgets/e-addressbook-view.c:660
-msgid "ISDN"
-msgstr "ISDN"
-
-#: addressbook/contact-editor/e-contact-editor.c:1253
-msgid "Mobile"
-msgstr "íÏÂÉÌØÎÙÊ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1254
-#: addressbook/contact-editor/e-contact-editor.c:1312
-#: mail/mail-config.glade.h:40
-msgid "Other"
-msgstr "äÒÕÇÏÊ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1255
-#: addressbook/gui/widgets/e-addressbook-view.c:662
-msgid "Other Fax"
-msgstr "äÒÕÇÏÊ ÆÁËÓ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1256
-#: addressbook/gui/widgets/e-addressbook-view.c:663
-msgid "Pager"
-msgstr "ðÜÊÄÖÅÒ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1257
-msgid "Primary"
-msgstr "ðÅÒ×ÙÊ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1258
-#: addressbook/gui/widgets/e-addressbook-view.c:664
-msgid "Radio"
-msgstr "òÁÄÉÏ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1259
-#: addressbook/gui/widgets/e-addressbook-view.c:665
-msgid "Telex"
-msgstr "ôÅÌÅËÓ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1260
-msgid "TTY/TDD"
-msgstr "TTY/TDD"
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:668
-msgid "Email 2"
-msgstr "üÌ.ÁÄÒÅÓ 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/gui/widgets/e-addressbook-view.c:669
-msgid "Email 3"
-msgstr "üÌ.ÁÄÒÅÓ 3"
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-msgid "Delete Contact?"
-msgstr "õÄÁÌÉÔØ ËÏÎÔÁËÔ?"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:233
-msgid "Contact Quick-Add"
-msgstr "âÙÓÔÒÏÅ ÄÏÂÁ×ÌÅÎÉÅ ËÏÎÔÁËÔÁ"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:235
-msgid "Edit Full"
-msgstr "ðÒÁ×ËÁ ÐÏÌÎÏÇÏ ÉÍÅÎÉ"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:276
-#: addressbook/gui/widgets/e-addressbook-view.c:643
-msgid "Full Name"
-msgstr "ðÏÌÎÏÅ ÉÍÑ:"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:282
-msgid "E-mail"
-msgstr "üÌ.ÁÄÒÅÓ"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr "áÄÒÅÓ 2:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr "ëÁÎÁÄÁ"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr "ðÒÏ×ÅÒÉÔØ ÁÄÒÅÓ"
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr "óÔÒÁÎÁ:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr "æÉÎÌÑÎÄÉÑ"
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr "óûá"
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr "áÄÒÅÓ:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-msgid "_City:"
-msgstr "çÏÒÏÄ:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr "áÂ.ÑÝÉË:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr "ïÂÌÁÓÔØ/òÁÊÏÎ (ûÔÁÔ/ðÒÏ×ÉÎÃÉÑ):"
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr "ðÏÞÔÏ×ÙÊ ÉÎÄÅËÓ:"
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr "ðÒÏ×ÅÒÉÔØ ÐÏÌÎÏÅ ÉÍÑ"
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr "äÒ."
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr "üÓË×."
-
-#: addressbook/contact-editor/fullname.glade.h:4
-msgid "I"
-msgstr "I"
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr "II"
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr "III"
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr "ÍÌ."
-
-#: addressbook/contact-editor/fullname.glade.h:8
-msgid "Miss"
-msgstr "íÉÓÓ"
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr "Mr."
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr "Mrs."
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr "Ms."
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr "Sr."
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr "éÍÑ:"
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr "æÁÍÉÌÉÑ:"
-
-#: addressbook/contact-editor/fullname.glade.h:15
-msgid "_Middle:"
-msgstr "ïÔÞÅÓÔ×Ï:"
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr "óÕÆÆÉËÓ:"
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr "úÁÇÏÌÏ×ÏË:"
-
-#: addressbook/gui/component/addressbook.c:242
-msgid "As _Minicards"
-msgstr "ëÁË ÍÉÎÉËÁÒÔÏÞËÉ"
-
-#: addressbook/gui/component/addressbook.c:248
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr "ëÁË ÔÁÂÌÉÃÁ"
-
-#: addressbook/gui/component/addressbook.c:408
-#, c-format
-msgid "Enter password for %s"
-msgstr "÷×ÅÄÉÔÅ ÐÁÒÏÌØ ÄÌÑ %s"
-
-#: addressbook/gui/component/addressbook.c:436
-msgid "Unable to open addressbook"
-msgstr "îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ÁÄÒÅÓÎÕÀ ËÎÉÇÕ"
-
-#: addressbook/gui/component/addressbook.c:443
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or the LDAP server\n"
-"is down"
-msgstr ""
-"îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ÜÔÕ ÁÄÒÅÓÎÕÀ ËÎÉÇÕ. üÔÏ ÚÎÁÞÉÔ,\n"
-"ÞÔÏ ÌÉÂÏ ×Ù ××ÅÌÉ ÎÅÐÒÁ×ÉÌØÎÙÊ URI, ÌÉÂÏ LDAP\n"
-"ÓÅÒ×ÅÒ ÎÅ ÏÔ×ÅÞÁÅÔ"
-
-#: addressbook/gui/component/addressbook.c:448
-msgid ""
-"This version of Evolution does not have LDAP support\n"
-"compiled in to it. If you want to use LDAP in Evolution\n"
-"you must compile the program from the CVS sources after\n"
-"retrieving OpenLDAP from the link below.\n"
-msgstr ""
-"üÔÁ ×ÅÒÓÉÑ Evolution ÎÅ ÉÍÅÅÔ ×ÓÔÒÏÅÎÎÏÊ ÐÏÄÄÅÒÖËÉ LDAP.\n"
-"åÓÌÉ ×Ù ÈÏÔÉÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ LDAP × Evolution, ×Ù ÄÏÌÖÎÙ\n"
-"ÐÅÒÅËÏÍÐÉÌÉÒÏ×ÁÔØ ÐÒÏÇÒÁÍÍÕ ÉÚ ÉÓÈÏÄÎÙÈ ÔÅËÓÔÏ× × CVS ÐÏÓÌÅ\n"
-"ÕÓÔÁÎÏ×ËÉ OpenLDAP ÐÏÌÕÞÅÎÎÏÇÏ ÐÏ ÐÒÉ×ÅÄ£ÎÎÏÊ ÎÉÖÅ ÓÓÙÌËÅ.\n"
-
-#: addressbook/gui/component/addressbook.c:456
-msgid ""
-"We were unable to open this addressbook. Please check that the\n"
-"path exists and that you have permission to access it."
-msgstr ""
-"îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ÜÔÕ ÁÄÒÅÓÎÕÀ ËÎÉÇÕ. ðÒÏ×ÅÒØÔÅ, ÞÔÏ ÐÕÔØ ÓÕÝÅÓÔ×ÕÅÔ\n"
-"É ÞÔÏ Õ ×ÁÓ ÅÓÔØ ÎÅÏÂÈÏÄÉÍÙÅ ÐÒÁ×Á ÄÏÓÔÕÐÁ."
-
-#: addressbook/gui/component/addressbook.c:607 calendar/gui/gnome-cal.c:233
-msgid "Any field contains"
-msgstr "ìÀÂÏÅ ÐÏÌÅ ÓÏÄÅÒÖÉÔ"
-
-#: addressbook/gui/component/addressbook.c:608
-msgid "Name contains"
-msgstr "éÍÑ ÓÏÄÅÒÖÉÔ"
-
-#: addressbook/gui/component/addressbook.c:609
-msgid "Email contains"
-msgstr "üÌ.ÁÄÒÅÓ ÓÏÄÅÒÖÉÔ"
-
-#: addressbook/gui/component/addressbook.c:752
-msgid "The URI that the Folder Browser will display"
-msgstr "URI, ËÏÔÏÒÙÊ ÂÕÄÅÔ ÐÏËÁÚÙ×ÁÔØ ÐÒÏÇÒÁÍÍÁ ÐÒÏÓÍÏÔÒÁ ÐÁÐÏË"
-
-#: addressbook/gui/component/addressbook-config.c:148
-msgid "LDAP Server"
-msgstr "óÅÒ×ÅÒ LDAP"
-
-#: addressbook/gui/component/addressbook-config.c:150
-msgid "File"
-msgstr "æÁÊÌ"
-
-#: addressbook/gui/component/addressbook-config.c:153
-msgid "Unknown addressbook type"
-msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ ÁÄÒÅÓÎÏÊ ËÎÉÇÉ"
-
-#: addressbook/gui/component/addressbook-config.c:163
-msgid "None (anonymous mode)"
-msgstr "îÅÔ (ÁÎÏÎÉÍÎÙÊ ÒÅÖÉÍ)"
-
-#: addressbook/gui/component/addressbook-config.c:165
-#: camel/camel-sasl-plain.c:32 camel/providers/imap/camel-imap-provider.c:80
-#: camel/providers/nntp/camel-nntp-store.c:291
-#: camel/providers/pop3/camel-pop3-provider.c:67 mail/mail-config.glade.h:43
-msgid "Password"
-msgstr "ðÁÒÏÌØ"
-
-#: addressbook/gui/component/addressbook-config.c:167
-msgid "SASL"
-msgstr "SASL"
-
-#: addressbook/gui/component/addressbook-config.c:170
-msgid "Unknown auth type"
-msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÔÉÐ Á×ÔÏÒÉÚÁÃÉÉ"
-
-#: addressbook/gui/component/addressbook-config.c:179
-msgid "Base"
-msgstr "ïÓÎÏ×Á"
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "One"
-msgstr "ïÄÉÎ"
-
-#: addressbook/gui/component/addressbook-config.c:183
-msgid "Subtree"
-msgstr "ðÏÄÄÅÒÅ×Ï"
-
-#: addressbook/gui/component/addressbook-config.c:186
-msgid "Unknown scope type"
-msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ ÏÂÌÁÓÔÉ ÄÅÊÓÔ×ÉÑ"
-
-#: addressbook/gui/component/addressbook-config.c:353
-msgid "Bind DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:354
-msgid "FIXME Bind DN Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:356
-#: mail/mail-config.glade.h:50
-msgid "Remember this password"
-msgstr "úÁÐÏÍÎÉÔØ ÜÔÏÔ ÐÁÒÏÌØ"
-
-#: addressbook/gui/component/addressbook-config.c:406
-#: mail/mail-config.glade.h:28
-msgid "Host:"
-msgstr "èÏÓÔ:"
-
-#: addressbook/gui/component/addressbook-config.c:407
-msgid "FIXME Host help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:409
-msgid "Port:"
-msgstr "ðÏÒÔ:"
-
-#: addressbook/gui/component/addressbook-config.c:410
-msgid "FIXME Port help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:414
-msgid "Root DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:415
-msgid "FIXME Root DN help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:435
-msgid "Search Scope:"
-msgstr "ðÏÉÓË ÏÂÌÁÓÔÉ ÄÅÊÓÔ×ÉÑ:"
-
-#: addressbook/gui/component/addressbook-config.c:489
-msgid "Authentication:"
-msgstr "éÄÅÎÔÉÆÉËÁÃÉÑ:"
-
-#: addressbook/gui/component/addressbook-config.c:507
-#: mail/mail-config.glade.h:44
-msgid "Path:"
-msgstr "ðÕÔØ:"
-
-#: addressbook/gui/component/addressbook-config.c:508
-msgid "FIXME Path Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:513
-msgid "Create path if it doesn't exist."
-msgstr "óÏÚÄÁÔØ ÐÕÔØ, ÅÓÌÉ ÏÎ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ."
-
-#: addressbook/gui/component/addressbook-config.c:647
-msgid "Edit Addressbook"
-msgstr "ðÒÁ×ËÁ ÁÄÒÅÓÎÏÊ ËÎÉÇÉ"
-
-#: addressbook/gui/component/addressbook-config.c:649
-msgid "Add Addressbook"
-msgstr "äÏÂÁ×ÉÔØ ÁÄÒÅÓÎÕÀ ËÎÉÇÕ"
-
-#: addressbook/gui/component/addressbook-config.c:665
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-"÷ÙÂÅÒÉÔÅ ×ÉÄ ×ÁÛÅÊ ÁÄÒÅÓÎÏÊ ËÎÉÇÉ É ××ÅÄÉÔÅ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÕÀ ÉÎÆÏÒÍÁÃÉÀ Ï ÎÅÊ."
-
-#: addressbook/gui/component/addressbook-config.c:671
-#: mail/mail-config.glade.h:35
-msgid "Name:"
-msgstr "éÍÑ:"
-
-#: addressbook/gui/component/addressbook-config.c:672
-msgid "FIXME Name help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:674
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr "ïÐÉÓÁÎÉÅ:"
-
-#: addressbook/gui/component/addressbook-config.c:675
-msgid "FIXME Description help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-msgid "Addressbook Sources"
-msgstr "éÓÔÏÞÎÉËÉ ÁÄÒÅÓÎÙÈ ËÎÉÇ"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: addressbook/gui/widgets/e-addressbook-view.c:578
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:11 mail/mail-config.glade.h:19
-#: mail/message-browser.c:203 ui/evolution-addressbook.xml.h:3
-#: ui/evolution-event-editor.xml.h:17 ui/evolution-mail.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr "õÄÁÌÉÔØ"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:23
-msgid "Edit"
-msgstr "ðÒÁ×ËÁ"
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-msgid "Name"
-msgstr "éÍÑ"
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-msgid "URI"
-msgstr "URI"
-
-#: addressbook/gui/component/addressbook-storage.c:99
-msgid "Other Contacts"
-msgstr "äÒÕÇÉÅ ËÏÎÔÁËÔÙ"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Disable Queries"
-msgstr "ïÔËÌÀÞÉÔØ ÏÞÅÒÅÄÉ"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Enable Queries (Dangerous!)"
-msgstr "÷ËÌÀÞÉÔØ ÏÞÅÒÅÄÉ (ïÐÁÓÎÏ!)"
-
-#: addressbook/gui/component/e-address-widget.c:388
-#: addressbook/gui/component/select-names/e-select-names-popup.c:210
-msgid "Edit Contact Info"
-msgstr "ðÒÁ×ËÁ ËÏÎÔÁËÔÎÏÊ ÉÎÆÏÒÍÁÃÉÉ"
-
-#: addressbook/gui/component/e-address-widget.c:424
-#: addressbook/gui/component/select-names/e-select-names-popup.c:269
-msgid "Add to Contacts"
-msgstr "äÏÂÁ×ÉÔØ Ë ËÏÎÔÁËÔÁÍ"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-msgid "A Bonobo control for an address popup."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A Bonobo control for displaying an address."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr "þÔÏ ÐÏËÁÚÙ×ÁÔØ × ÍÉÎÉËÁÒÔÏÞËÁÈ ÁÄÒÅÓÎÏÊ ËÎÉÇÉ Evolution."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-msgid "Evolution Addressbook minicard viewer"
-msgstr "ðÒÏÓÍÏÔÒÝÉË ÍÉÎÉËÁÒÔÏÞÅË ÁÄÒÅÓÎÏÊ ËÎÉÇÉ Evolution"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-msgid "Evolution component for handling contacts."
-msgstr "ëÏÍÐÏÎÅÎÔ Evolution ÄÌÑ ÏÂÒÁÂÏÔËÉ ËÏÎÔÁËÔÏ×."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-msgid "Factory for the Addressbook Minicard control"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-msgid "Factory for the Addressbook's address displayer"
-msgstr "æÁÂÒÉËÁ ÄÌÑ ÏÔÏÂÒÁÖÁÔÅÌÑ ÁÄÒÅÓÁ ÉÚ ÁÄÒÅÓÎÏÊ ËÎÉÇÉ"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-#, fuzzy
-msgid "Factory for the Addressbook's address popup"
-msgstr "æÁÂÒÉËÁ ÄÌÑ ÏÔÏÂÒÁÖÁÔÅÌÑ ÁÄÒÅÓÁ ÉÚ ÁÄÒÅÓÎÏÊ ËÎÉÇÉ"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:10
-msgid "Factory for the Evolution addressbook component."
-msgstr "æÁÂÒÉËÁ ËÏÍÐÏÎÅÎÔÁ ÁÄÒÅÓÎÏÊ ËÎÉÇÉ Evolution."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:11
-#, fuzzy
-msgid "Factory for the sample Addressbook control"
-msgstr "ýÅÌËÎÉÔÅ ÚÄÅÓØ ÄÌÑ ÁÄÒÅÓÎÏÊ ËÎÉÇÉ"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:131
-#: composer/e-msg-composer-attachment-bar.c:468 filter/filter-filter.c:401
-#: filter/filter-rule.c:549 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:265 shell/e-shortcuts-view.c:388
-msgid "Remove"
-msgstr "õÄÁÌÉÔØ"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:146
-msgid "Remove All"
-msgstr "õÄÁÌÉÔØ ×ÓÅ"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-msgid "Evolution's addressbook name selection interface."
-msgstr "éÎÔÅÒÆÅÊÓ ×ÙÂÏÒÁ ÉÍÅÎÉ × ÁÄÒÅÓÎÏÊ ËÎÉÇÅ Evolution."
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr ""
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr "îÁÊÔÉ..."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-msgid "Message Recipients"
-msgstr "ðÏÌÕÞÁÔÅÌÉ ÓÏÏÂÝÅÎÉÑ"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-msgid "Select Names"
-msgstr "÷ÙÂÒÁÔØ ÉÍÅÎÁ"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-msgid "Select name from:"
-msgstr "÷ÙÂÒÁÔØ ÉÍÅÎÁ ÉÚ:"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:158
-#: mail/mail-search.c:148
-msgid "Search"
-msgstr "ðÏÉÓË"
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr "123"
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr "a"
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr "b"
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr "c"
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr "d"
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr "e"
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr "f"
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr "g"
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr "h"
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr "i"
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr "j"
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr "k"
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr "l"
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr "m"
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr "n"
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-msgid "o"
-msgstr "o"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr "p"
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr "q"
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-msgid "r"
-msgstr "r"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr "s"
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr "t"
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr "u"
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr "v"
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr "w"
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr "x"
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr "y"
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr "z"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:513
-#: addressbook/gui/widgets/e-addressbook-view.c:573
-msgid "Save as VCard"
-msgstr "óÏÈÒÁÎÉÔØ ËÁË VCard"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:574
-msgid "Send contact to other"
-msgstr "ðÏÓÌÁÔØ ËÏÎÔÁËÔ ÄÒÕÇÏÍÕ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:575
-msgid "Send message to contact"
-msgstr "ðÏÓÌÁÔØ ÓÏÏÂÝÅÎÉÅ Ë ËÏÎÔÁËÔÕ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:576 mail/message-browser.c:200
-#: ui/evolution-addressbook.xml.h:9 ui/evolution-calendar.xml.h:23
-#: ui/evolution-mail.xml.h:55 ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr "ðÅÞÁÔØ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:577
-msgid "Print Envelope"
-msgstr "ðÅÞÁÔØ ËÏÎ×ÅÒÔÁ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:641
-msgid "* Click here to add a contact *"
-msgstr "* ýÅÌËÎÉÔÅ ÚÄÅÓØ ÄÌÑ ÄÏÂÁ×ÌÅÎÉÑ ËÏÎÔÁËÔÁ *"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:642
-msgid "File As"
-msgstr "æÁÊÌ ËÁË"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:644
-msgid "Email"
-msgstr "üÌ.ÁÄÒÅÓ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:645
-msgid "Primary Phone"
-msgstr "ðÅÒ×ÙÊ ÔÅÌÅÆÏÎ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:646
-msgid "Assistant Phone"
-msgstr "ôÅÌÅÆÏÎ ÐÏÍÏÝÎÉËÁ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:647
-msgid "Business Phone"
-msgstr "òÁÂÏÞÉÊ ÔÅÌÅÆÏÎ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:648
-msgid "Callback Phone"
-msgstr "ïÂÒÁÔÎÙÊ ÏÔÚ×ÏÎ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:649
-msgid "Company Phone"
-msgstr "ôÅÌÅÆÏÎ ËÏÍÐÁÎÉÉ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:650
-msgid "Home Phone"
-msgstr "äÏÍÁÛÎÉÊ ÔÅÌÅÆÏÎ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:651
-msgid "Organization"
-msgstr "ïÒÇÁÎÉÚÁÃÉÑ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:652
-msgid "Business Address"
-msgstr "òÁÂÏÞÉÊ ÁÄÒÅÓ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:653
-msgid "Home Address"
-msgstr "äÏÍÁÛÎÉÊ ÁÄÒÅÓ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:654
-msgid "Mobile Phone"
-msgstr "íÏÂÉÌØÎÙÊ ÔÅÌÅÆÏÎ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:655
-msgid "Car Phone"
-msgstr "ôÅÌÅÆÏÎ × ÍÁÛÉÎÅ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:658
-msgid "Business Phone 2"
-msgstr "òÁÂÏÞÉÊ ÔÅÌÅÆÏÎ 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:659
-msgid "Home Phone 2"
-msgstr "äÏÍÁÛÎÉÊ ÔÅÌÅÆÏÎ 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:661
-msgid "Other Phone"
-msgstr "äÒÕÇÉÅ ÔÅÌÅÆÏÎÙ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:666
-msgid "TTY"
-msgstr "TTY"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:667
-msgid "Other Address"
-msgstr "äÒÕÇÉÅ ÁÄÒÅÓÁ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:670
-msgid "Web Site"
-msgstr "óÁÊÔ × éÎÔÅÒÎÅÔ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:671
-msgid "Department"
-msgstr "ïÔÄÅÌ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:672
-msgid "Office"
-msgstr "ïÆÉÓ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:673
-msgid "Title"
-msgstr "úÁÇÏÌÏ×ÏË"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:674
-msgid "Profession"
-msgstr "ðÒÏÆÅÓÓÉÑ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:675
-msgid "Manager"
-msgstr "õÐÒÁ×ÌÑÀÝÉÊ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:677
-msgid "Nickname"
-msgstr "ðÓÅ×ÄÏÎÉÍ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:678
-msgid "Spouse"
-msgstr "óÕÐÒÕÇ(Á)"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:679
-msgid "Note"
-msgstr "úÁÍÅÔËÁ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:680
-msgid "Free-busy URL"
-msgstr ""
-
-#: addressbook/gui/widgets/e-minicard-control.c:282
-msgid "Save in addressbook"
-msgstr "óÏÈÒÁÎÉÔØ × ÁÄÒÅÓÎÏÊ ËÎÉÇÅ"
-
-#: addressbook/gui/widgets/e-minicard-view.c:469
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-"\n"
-"\n"
-"îÅÔ ÜÌÅÍÅÎÔÏ× ÄÌÑ ÏÔÏÂÒÁÖÅÎÉÑ × ÜÔÏÍ ÏËÎÅ\n"
-"\n"
-"ä×ÁÖÄÙ ÝÅÌËÎÉÔÅ ÚÄÅÓØ ÄÌÑ ÓÏÚÄÁÎÉÑ ÎÏ×ÏÇÏ ËÏÎÔÁËÔÁ."
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:26
-msgid "Card View"
-msgstr "ðÒÏÓÍÏÔÒ ËÁÒÔÏÞÅË"
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr "10 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr "8 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr "ðÕÓÔÁÑ ÆÏÒÍÁ × ËÏÎÃÅ:"
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr "ôÅÌÏ"
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr "óÎÉÚÕ:"
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr "òÁÚÍÅÒÙ:"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr "ûÒÉÆÔ..."
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr "ûÒÉÆÔÙ..."
-
-#: addressbook/printing/e-contact-print.glade.h:9
-msgid "Footer:"
-msgstr "óÎÏÓËÁ:"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr "æÏÒÍÁÔ"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-msgid "Header"
-msgstr "úÁÇÏÌÏ×ÏË"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr "úÁÇÏÌÏ×ÏË/óÎÏÓËÁ"
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr "úÁÇÏÌÏ×ËÉ"
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr "úÁÇÏÌÏ×ËÉ ÄÌÑ ËÁÖÄÏÊ ÂÕË×Ù"
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr "÷ÙÓÏÔÁ:"
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr "ïÄÉÎ ÚÁ ÄÒÕÇÉÍ"
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr "÷ËÌÀÞÉÔØ:"
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr "âÌÏËÎÏÔ"
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr "óÌÅ×Á:"
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr "úÁËÌÁÄËÉ ÂÕË× ÓÂÏËÕ"
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr "ðÏÌÑ"
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr "þÉÓÌÏ ÓÔÏÌÂÃÏ×:"
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr "ðÁÒÁÍÅÔÒÙ"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr "ïÒÉÅÎÔÁÃÉÑ"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr "óÔÒÁÎÉÃÁ"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-msgid "Page Setup:"
-msgstr "îÁÓÔÒÏÊËÁ ÓÔÒÁÎÉÃÙ:"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr "âÕÍÁÇÁ"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr "éÓÔÏÞÎÉË ÂÕÍÁÇÉ:"
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr "ðÏÒÔÒÅÔ"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr "ðÒÏÓÍÏÔÒ:"
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr "ðÅÞÁÔØ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÏÌÕÔÏÎÏ×"
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr "ïÂÒÁÝÁÔØ ÎÁ ÞÅÔÎÙÈ ÓÔÒÁÎÉÃÁÈ"
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr "óÐÒÁ×Á:"
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr "òÁÚÄÅÌÙ:"
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr "ðÏÌÕÔÏÎÁ"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-msgid "Size:"
-msgstr "òÁÚÍÅÒ:"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr "îÁÞÉÎÁÔØ Ó ÎÏ×ÏÊ ÓÔÒÁÎÉÃÙ"
-
-#: addressbook/printing/e-contact-print.glade.h:38
-msgid "Style name:"
-msgstr "îÁÚ×ÁÎÉÅ ÓÔÉÌÑ:"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr "ó×ÅÒÈÕ:"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-msgid "Type:"
-msgstr "ôÉÐ:"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr "ûÉÒÉÎÁ:"
-
-#: addressbook/printing/e-contact-print.glade.h:42
-msgid "label26"
-msgstr "ÍÅÔËÁ26"
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr "ïÛÉÂËÁ ÐÒÉ ÐÏÄËÌÀÞÅÎÉÉ Ë ÓÅÒ×ÅÒÕ ËÁÌÅÎÄÁÒÑ"
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÒÏÞÅÓÔØ ÂÌÏË ÐÒÉÌÏÖÅÎÉÑ ËÁÌÅÎÄÁÒØ ðÉÌÏÔÁ"
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÒÏÞÅÓÔØ ÂÌÏË ÐÒÉÌÏÖÅÎÉÑ ÚÁÄÁÎÉÊ ðÉÌÏÔÁ"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr "îÁÐÏÍÉÎÁÔØ ÏÂÏ ×ÓÅÈ ×ÓÔÒÅÞÁÈ"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-msgid "Snooze"
-msgstr "ëÏÒÏÔËÉÊ ÓÏÎ"
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr "Ok"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr ""
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-#, fuzzy
-msgid "Factory for the alarm notification service"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÒÅÄÁËÔÏÒ ÐÏÞÔÙ Evolution."
-
-#: calendar/gui/alarm-notify/notify-main.c:56
-#, c-format
-msgid ""
-"It is %s. The Unix time is %ld right now. We just thought you may like to "
-"know."
-msgstr "üÔÏ %s. óÅÊÞÁÓ %ld. íÙ ÐÒÏÓÔÏ ÐÏÄÕÍÁÌÉ, ÞÔÏ ×Ù ÈÏÔÉÔÅ ÜÔÏ ÚÎÁÔØ."
-
-#: calendar/gui/alarm-notify/notify-main.c:93 calendar/gui/main.c:52
-msgid "Could not initialize GNOME"
-msgstr "îÅ ÕÄÁÌÏÓØ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ GNOME"
-
-#: calendar/gui/alarm-notify/notify-main.c:108
-#, fuzzy
-msgid "Could not create the alarm notify service factory"
-msgstr "îÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ×ÒÅÍÅÎÎÙÊ ËÁÔÁÌÏÇ: %s"
-
-#: calendar/gui/calendar-commands.c:266
-msgid "File not found"
-msgstr "æÁÊÌ ÎÅ ÎÁÊÄÅÎ"
-
-#: calendar/gui/calendar-commands.c:290
-msgid "Open calendar"
-msgstr "ïÔËÒÙÔØ ËÁÌÅÎÄÁÒØ"
-
-#: calendar/gui/calendar-commands.c:332
-msgid "Save calendar"
-msgstr "óÏÈÒÁÎÉÔØ ËÁÌÅÎÄÁÒØ"
-
-#: calendar/gui/calendar-commands.c:468
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-"îÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ÏËÎÏ ËÁÌÅÎÄÁÒÑ. ðÏÖÁÌÕÊÓÔÁ ÐÒÏ×ÅÒØÔÅ ×ÁÛÕ ÕÓÔÁÎÏ×ËÕ ORBit "
-"É OAF."
-
-#: calendar/gui/calendar-model.c:360 calendar/gui/calendar-model.c:898
-#: calendar/gui/e-calendar-table.c:330
-msgid "Public"
-msgstr "ïÂÝÅÅ"
-
-#: calendar/gui/calendar-model.c:363 calendar/gui/calendar-model.c:900
-#: calendar/gui/e-calendar-table.c:331
-msgid "Private"
-msgstr "ìÉÞÎÏÅ"
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:902
-#: calendar/gui/e-calendar-table.c:332
-msgid "Confidential"
-msgstr "ëÏÎÆÉÄÅÎÃÉÁÌØÎÏÅ"
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/event-editor.c:1601
-#: calendar/gui/event-editor.c:1628
-#: camel/providers/smtp/camel-smtp-transport.c:221
-msgid "Unknown"
-msgstr "îÅÉÚ×ÅÓÔÎÏÅ"
-
-#: calendar/gui/calendar-model.c:457
-msgid "N"
-msgstr "ó"
-
-#: calendar/gui/calendar-model.c:457
-msgid "S"
-msgstr "à"
-
-#: calendar/gui/calendar-model.c:459
-msgid "E"
-msgstr "÷"
-
-#: calendar/gui/calendar-model.c:459
-msgid "W"
-msgstr "ú"
-
-#: calendar/gui/calendar-model.c:497 calendar/gui/calendar-model.c:1066
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:352 mail/message-list.c:694
-msgid "High"
-msgstr "÷ÙÓÏËÉÊ"
-
-#: calendar/gui/calendar-model.c:499 calendar/gui/calendar-model.c:1068
-#: calendar/gui/calendar-model.c:1574
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:353 mail/message-list.c:693
-msgid "Normal"
-msgstr "îÏÒÍÁÌØÎÙÊ"
-
-#: calendar/gui/calendar-model.c:501 calendar/gui/calendar-model.c:1070
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:354 mail/message-list.c:692
-msgid "Low"
-msgstr "îÉÚËÉÊ"
-
-#: calendar/gui/calendar-model.c:537 calendar/gui/calendar-model.c:1122
-#: calendar/gui/e-calendar-table.c:406
-msgid "Transparent"
-msgstr "ðÒÏÚÒÁÞÎÙÊ"
-
-#: calendar/gui/calendar-model.c:540 calendar/gui/calendar-model.c:1124
-#: calendar/gui/e-calendar-table.c:405
-msgid "Opaque"
-msgstr "îÅÐÒÏÚÒÁÞÎÙÊ"
-
-#: calendar/gui/calendar-model.c:638 calendar/gui/calendar-model.c:1176
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:426
-msgid "Not Started"
-msgstr "îÅ ÎÁÞÁÔÏ"
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1178
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:427
-msgid "In Progress"
-msgstr "÷ ÐÒÏÃÅÓÓÅ"
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1180
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:428
-msgid "Completed"
-msgstr "÷ÙÐÏÌÎÅÎÏ"
-
-#: calendar/gui/calendar-model.c:647 calendar/gui/calendar-model.c:1182
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:429 camel/camel-service.c:544
-#: camel/camel-service.c:580
-msgid "Cancelled"
-msgstr "ïÔÍÅÎÅÎÏ"
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:794 e-util/e-time-utils.c:278
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr "%a %m/%d/%Y %H:%M:%S"
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:797 e-util/e-time-utils.c:287
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr "%a %m/%d/%Y %I:%M:%S %p"
-
-#: calendar/gui/calendar-model.c:802
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-"äÁÔÁ ÄÏÌÖÎÁ ÂÙÔØ ××ÅÄÅÎÁ × ÆÏÒÍÁÔÅ:\n"
-"\n"
-"%s"
-
-#: calendar/gui/calendar-model.c:882
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr ""
-"ëÌÁÓÓÉÆÉËÁÃÉÑ ÄÏÌÖÎÁ ÂÙÔØ \"ðÕÂÌÉÞÎÙÊ\", \"þÁÓÔÎÙÊ\", \"ëÏÎÆÉÄÅÎÃÉÁÌØÎÙÊ\" "
-"ÉÌÉ \"îÉËÁËÏÊ\""
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:896 calendar/gui/calendar-model.c:1120
-#: calendar/gui/calendar-model.c:1174 calendar/gui/e-calendar-table.c:329
-#: calendar/gui/e-calendar-table.c:404 mail/mail-account-gui.c:973
-#: mail/mail-accounts.c:120 mail/mail-accounts.c:164
-#: mail/mail-config.glade.h:37 shell/e-shell-view.c:1198
-#: widgets/misc/e-cell-date-edit.c:237 widgets/misc/e-dateedit.c:432
-#: widgets/misc/e-dateedit.c:1341 widgets/misc/e-dateedit.c:1456
-msgid "None"
-msgstr "îÅÔ"
-
-#: calendar/gui/calendar-model.c:970
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-"çÅÏÇÒÁÆÉÞÅÓËÏÅ ÐÏÌÏÖÅÎÉÅ ÄÏÌÖÎÏ ÂÙÔØ ××ÅÄÅÎÏ × ÆÏÒÍÁÔÅ:\n"
-"\n"
-"45.436845,125.862501"
-
-#: calendar/gui/calendar-model.c:1010
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr "úÎÁÞÅÎÉÅ ÐÒÏÃÅÎÔÁ ÄÏÌÖÎÏ ÂÙÔØ ÍÅÖÄÕ 0 É 100, ×ËÌÀÞÉÔÅÌØÎÏ"
-
-#: calendar/gui/calendar-model.c:1051
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr ""
-"ðÒÉÏÒÉÔÅÔ ÄÏÌÖÅÎ ÂÙÔØ \"÷ÙÓÏËÉÊ\", \"îÏÒÍÁÌØÎÙÊ\", \"îÉÚËÉÊ\" ÉÌÉ "
-"\"îÅÏÐÒÅÄÅÌÅÎÎÙÊ\"."
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1064
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:355
-msgid "Undefined"
-msgstr "îÅÏÐÒÅÄÅÌÅÎÎÏÅ"
-
-#: calendar/gui/calendar-model.c:1105
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr ""
-"ðÒÏÚÒÁÞÎÏÓÔØ ÄÏÌÖÎÁ ÂÙÔØ \"ðÒÏÚÒÁÞÎÏÅ\", \"îÅÐÒÏÚÒÁÞÎÏÅ\" ÉÌÉ \"îÉËÁËÏÅ\"."
-
-#: calendar/gui/calendar-model.c:1576
-msgid "Recurring"
-msgstr "ðÏ×ÔÏÒÅÎÉÅ"
-
-#: calendar/gui/calendar-model.c:1578
-msgid "Assigned"
-msgstr "ó×ÑÚÁÎÎÏÅ"
-
-#: calendar/gui/calendar-model.c:1584
-msgid "Yes"
-msgstr "äÁ"
-
-#: calendar/gui/calendar-model.c:1584
-msgid "No"
-msgstr "îÅÔ"
-
-#: calendar/gui/calendar-summary.c:198
-msgid "%A, %e %B %Y"
-msgstr "%A, %e %B %Y"
-
-#: calendar/gui/calendar-summary.c:207
-msgid "Appointments"
-msgstr "÷ÓÔÒÅÞÉ"
-
-#: calendar/gui/calendar-summary.c:245 calendar/gui/calendar-summary.c:251
-msgid "%I:%M%p"
-msgstr "%I:%M%p"
-
-#: calendar/gui/calendar-summary.c:275 calendar/gui/print.c:948
-#: views/tasks/galview.xml.h:1
-msgid "Tasks"
-msgstr "úÁÄÁÎÉÑ"
-
-#: calendar/gui/calendar-summary.c:443
-msgid "<b>Error loading calendar</b>"
-msgstr "<b>ïÛÉÂËÁ ÐÒÉ ÚÁÇÒÕÚËÅ ËÁÌÅÎÄÁÒÑ</b>"
-
-#: calendar/gui/calendar-summary.c:455
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr "<b>ïÛÉÂËÁ ÚÁÇÒÕÚËÉ ËÁÌÅÎÄÁÒÑ:<br>íÅÔÏÄ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
-
-#: calendar/gui/calendar-summary.c:622
-msgid "Display"
-msgstr "ïÔÏÂÒÁÚÉÔØ"
-
-#: calendar/gui/calendar-summary.c:627
-msgid "Show appointments"
-msgstr "ðÏËÁÚÁÔØ ×ÓÔÒÅÞÉ"
-
-#: calendar/gui/calendar-summary.c:635
-msgid "Show tasks"
-msgstr "ðÏËÁÚÁÔØ ÚÁÄÁÎÉÑ"
-
-#: calendar/gui/calendar-summary.c:690
-msgid "Things to do"
-msgstr "úÁÄÁÎÉÑ"
-
-#: calendar/gui/calendar-summary.c:721 calendar/gui/e-itip-control.glade.h:7
-msgid "Loading Calendar"
-msgstr "úÁÇÒÕÚËÁ ËÁÌÅÎÄÁÒÑ"
-
-#: calendar/gui/control-factory.c:126
-msgid "The URI that the calendar will display"
-msgstr "URI, ËÏÔÏÒÙÊ ÂÕÄÅÔ ÐÏËÁÚÙ×ÁÔØ ËÁÌÅÎÄÁÒØ"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:189
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr "ôÁÊÍÅÒ ÎÁ %A %b %d %Y %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:196
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr "õ×ÅÄÏÍÌÅÎÉÅ Ï ×ÁÛÅÊ ×ÓÔÒÅÞÅ × %A %b %d %Y %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:207
-msgid "No summary available."
-msgstr "éÔÏÇ ÎÅ ÄÏÓÔÕÐÅÎ."
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:2
-msgid "Close"
-msgstr "úÁËÒÙÔØ"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-msgid "Edit appointment"
-msgstr "ðÒÁ×ËÁ ×ÓÔÒÅÞÉ"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr "÷ÒÅÍÑ ÄÒÅÍÁÎÉÑ (ÍÉÎÕÔ)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr "05 ÍÉÎÕÔ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr "10 ÍÉÎÕÔ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr "12-ÞÁÓÏ×ÏÊ (äð/ðð)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr "15 ÍÉÎÕÔ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr "24-ÞÁÓÏ×ÏÊ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr "30 ÍÉÎÕÔ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr "60 ÍÉÎÕÔ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr "úÁÄÅÒÖËÁ ÔÁÊÍÅÒÁ ÎÁ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr "áÕÄÉÏ ôÁÊÍÅÒÙ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr "çÕÄÏË ÐÒÉ ×ÏÚÎÉËÎÏ×ÅÎÉÉ ÏËÎÁ ÔÁÊÍÅÒÁ."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-msgid "Calendar"
-msgstr "ëÁÌÅÎÄÁÒØ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr "îÁÓÔÒÏÊËÉ ËÁÌÅÎÄÁÒÑ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "ã×ÅÔÁ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr "óÖÁÔØ ×ÙÈÏÄÎÙÅ ÄÎÉ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr "ðÁÒÁÍÅÔÒÙ ÎÁ×ÉÇÁÔÏÒÁ ÄÁÔ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-msgid "Defaults"
-msgstr "éÓÈ.ÚÎÁÞÅÎÉÑ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr "ïÔÏÂÒÁÚÉÔØ ÐÁÒÁÍÅÔÒÙ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:162
-msgid "Due Date"
-msgstr "õÓÌÏ×ÌÅÎÎÁÑ ÄÁÔÁ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr "òÁÚÒÅÛÉÔØ ËÒÁÔËÉÊ ÓÏÎ ÄÌÑ "
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr "ëÏÎÅà ÄÎÑ:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr "ðÅÒ×ÙÊ ÄÅÎØ ÎÅÄÅÌÉ:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr "ðÑÔ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:479
-msgid "Friday"
-msgstr "ðÑÔÎÉÃÁ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr "ðÏÄÓ×ÅÞÅÎÎÙÅ ÄÎÉ:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr "úÁÄÁÎÉÑ ÕÓÔÁÎÏ×ÌÅÎÎÙÅ ÎÁ ÓÅÇÏÄÎÑ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr "úÁÄÁÎÉÑ ÕÓÔÁÎÏ×ÌÅÎÎÙÅ ÎÁ ÓÅÇÏÄÎÑ:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr "åÝÅ ÎÅ ÐÒÏÓÒÏÞÅÎÎÙÅ ÚÁÄÁÎÉÑ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr "åÝÅ ÎÅ ÐÒÏÓÒÏÞÅÎÎÙÅ ÚÁÄÁÎÉÑ:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr "ðÏÎ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:475
-msgid "Monday"
-msgstr "ðÏÎÅÄÅÌØÎÉË"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr "ðÒÏÓÒÏÞÅÎÎÙÅ ÚÁÄÁÎÉÑ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr "ðÒÏÓÒÏÞÅÎÎÙÅ ÚÁÄÁÎÉÑ:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:45
-msgid "Pick a color"
-msgstr "÷ÙÂÒÁÔØ Ã×ÅÔ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:165
-msgid "Priority"
-msgstr "ðÒÉÏÒÉÔÅÔ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-msgid "Remind me of all appointments"
-msgstr "îÁÐÏÍÉÎÁÔØ ÏÂÏ ×ÓÅÈ ×ÓÔÒÅÞÁÈ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-msgid "Reminders"
-msgstr "îÁÐÏÍÉÎÁÎÉÑ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr "óÕÂ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:480
-msgid "Saturday"
-msgstr "óÕÂÂÏÔÁ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr "ðÏËÁÚÁÔØ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-msgid "Show appointment end times"
-msgstr "ðÏËÁÚÁÔØ ×ÒÅÍÑ ÏËÏÎÞÁÎÉÉ ×ÓÔÒÅÞÉ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr "ðÏËÁÚÁÔØ ÎÏÍÅÒÁ ÎÅÄÅÌØ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr "îÁÞÁÌÏ ÄÎÑ:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr "÷ÓË"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:481
-msgid "Sunday"
-msgstr "÷ÏÓËÒÅÓÅÎØÅ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-msgid "TaskPad"
-msgstr "ðÁÎÅÌØ ÚÁÄÁÎÉÊ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr "þÔ×"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:478
-msgid "Thursday"
-msgstr "þÅÔ×ÅÒÇ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr "÷ÒÅÍÑ ÄÏ ÕÓÌÏ×ÌÅÎÎÏÇÏ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr "òÁÚÄÅÌÉÔÅÌÉ ×ÒÅÍÅÎÉ:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr "æÏÒÍÁÔ ×ÒÅÍÅÎÉ:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr "÷ÔÒ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:476
-msgid "Tuesday"
-msgstr "÷ÔÏÒÎÉË"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr "÷ÉÄÉÍÙÅ ÔÁÊÍÅÒÙ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr "óÒÄ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:477
-msgid "Wednesday"
-msgstr "óÒÅÄÁ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr "òÁÂÏÞÁÑ ÎÅÄÅÌÑ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr "ÍÉÎÕÔ ÄÏ ÎÁÚÎÁÞÅÎÎÏÇÏ ×ÒÅÍÅÎÉ."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:78
-msgid "seconds."
-msgstr "ÓÅËÕÎÄ."
-
-#: calendar/gui/dialogs/delete-comp.c:70
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr "÷Ù Õ×ÅÒÅÎÙ ÞÔÏ ×Ù ÈÏÔÉÔÅ ÕÄÁÌÉÔØ ×ÓÔÒÅÞÕ \"%s\"?"
-
-#: calendar/gui/dialogs/delete-comp.c:73
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr "÷Ù Õ×ÅÒÅÎÙ ÞÔÏ ÈÏÔÉÔÅ ÕÄÁÌÉÔØ ÜÔÕ ÎÅÏÚÁÇÌÁ×ÌÅÎÎÕÀ ×ÓÔÒÅÞÕ?"
-
-#: calendar/gui/dialogs/delete-comp.c:79
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr "÷Ù Õ×ÅÒÅÎÙ ÞÔÏ ×Ù ÈÏÔÉÔÅ ÕÄÁÌÉÔØ ÚÁÄÁÎÉÅ \"%s\"?"
-
-#: calendar/gui/dialogs/delete-comp.c:82
-msgid "Are you sure you want to delete this untitled task?"
-msgstr "÷Ù Õ×ÅÒÅÎÙ ÞÔÏ ÈÏÔÉÔÅ ÕÄÁÌÉÔØ ÜÔÏ ÎÅÏÚÁÇÌÁ×ÌÅÎÎÏÅ ÚÁÄÁÎÉÅ?"
-
-#: calendar/gui/dialogs/delete-comp.c:88
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr "÷Ù Õ×ÅÒÅÎÙ ÞÔÏ ×Ù ÈÏÔÉÔÅ ÕÄÁÌÉÔØ ÖÕÒÎÁÌØÎÕÀ ÚÁÐÉÓØ \"%s\"?"
-
-#: calendar/gui/dialogs/delete-comp.c:91
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr "÷Ù Õ×ÅÒÅÎÙ ÞÔÏ ÈÏÔÉÔÅ ÕÄÁÌÉÔØ ÜÔÕ ÎÅÏÚÁÇÌÁ×ÌÅÎÎÕÀ ÖÕÒÎÁÌØÎÕÀ ÚÁÐÉÓØ?"
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr "èÏÔÉÔÅ ÓÏÈÒÁÎÉÔØ ÉÚÍÅÎÅÎÉÑ?"
-
-#: calendar/gui/dialogs/task-editor.c:709
-msgid "Edit Task"
-msgstr "ðÒÁ×ËÁ ÚÁÄÁÎÉÑ"
-
-#: calendar/gui/dialogs/task-editor.c:714 calendar/gui/event-editor.c:382
-#, c-format
-msgid "Appointment - %s"
-msgstr "÷ÓÔÒÅÞÁ - %s"
-
-#: calendar/gui/dialogs/task-editor.c:717 calendar/gui/event-editor.c:385
-#, c-format
-msgid "Task - %s"
-msgstr "úÁÄÁÎÉÅ - %s"
-
-#: calendar/gui/dialogs/task-editor.c:720 calendar/gui/event-editor.c:388
-#, c-format
-msgid "Journal entry - %s"
-msgstr "öÕÒÎÁÌØÎÁÑ ÚÁÐÉÓØ - %s"
-
-#: calendar/gui/dialogs/task-editor.c:734 calendar/gui/event-editor.c:402
-msgid "No summary"
-msgstr "îÅÔ ÉÔÏÇÁ"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr "% ÷ÙÐÏÌÎÅÎÉÑ:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:158
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr "ëÌÁÓÓÉÆÉËÁÃÉÑ"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-msgid "Date & Time"
-msgstr "äÁÔÁ É ×ÒÅÍÑ"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr "äÁÔÁ ×ÙÐÏÌÎÅÎÉÑ:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-msgid "Pri_vate"
-msgstr "ìÉÞÎÏÅ"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-msgid "Progress"
-msgstr "ðÒÏÄ×ÉÖÅÎÉÅ"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr "ïÂÝÅÅ"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-msgid "Sta_rt Date:"
-msgstr "äÁÔÁ ÎÁÞÁÌÁ:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-msgid "Su_mmary:"
-msgstr "éÔÏÇ:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr "úÁÄÁÎÉÅ"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-msgid "URL:"
-msgstr "URL:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr "ëÏÎÆÉÄÅÎÃÉÁÌØÎÏÅ"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Contacts..."
-msgstr "ëÏÎÔÁËÔÙ..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-msgid "_Due Date:"
-msgstr "õÓÌÏ×ÌÅÎÎÁÑ ÄÁÔÁ:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-msgid "_Priority:"
-msgstr "ðÒÉÏÒÉÔÅÔ:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "_Status:"
-msgstr "óÏÓÔÏÑÎÉÅ:"
-
-#: calendar/gui/e-calendar-table.c:157
-msgid "Categories"
-msgstr "ëÁÔÅÇÏÒÉÉ"
-
-#: calendar/gui/e-calendar-table.c:159
-msgid "Completion Date"
-msgstr "äÁÔÁ ×ÙÐÏÌÎÅÎÅÎÉÑ"
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "End Date"
-msgstr "äÁÔÁ ÏËÏÎÞÁÎÉÑ"
-
-#: calendar/gui/e-calendar-table.c:161
-msgid "Start Date"
-msgstr "äÁÔÁ ÎÁÞÁÌÁ"
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Geographical Position"
-msgstr "çÅÏÇÒÁÆÉÞÅÓËÏÅ ÒÁÓÐÏÌÏÖÅÎÉÅ"
-
-#: calendar/gui/e-calendar-table.c:164
-msgid "Percent complete"
-msgstr "ðÒÏÃÅÎÔ ×ÙÐÏÌÎÅÎÎÏÇÏ"
-
-#: calendar/gui/e-calendar-table.c:166
-msgid "Summary"
-msgstr "éÔÏÇ"
-
-#: calendar/gui/e-calendar-table.c:167
-msgid "Transparency"
-msgstr "ðÒÏÚÒÁÞÎÏÓÔØ"
-
-#: calendar/gui/e-calendar-table.c:168
-msgid "URL"
-msgstr "URL"
-
-#: calendar/gui/e-calendar-table.c:169
-msgid "Alarms"
-msgstr "áÕÄÉÏ ôÁÊÍÅÒÙ"
-
-#: calendar/gui/e-calendar-table.c:170
-msgid "Click here to add a task"
-msgstr "ýÅÌËÎÉÔÅ ÚÄÅÓØ ÄÌÑ ÄÏÂÁ×ÌÅÎÉÑ ÚÁÄÁÞÉ"
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "0%"
-msgstr "0%"
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "10%"
-msgstr "10%"
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "20%"
-msgstr "20%"
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "30%"
-msgstr "30%"
-
-#: calendar/gui/e-calendar-table.c:378
-#, c-format
-msgid "40%"
-msgstr "40%"
-
-#: calendar/gui/e-calendar-table.c:379
-#, c-format
-msgid "50%"
-msgstr "50%"
-
-#: calendar/gui/e-calendar-table.c:380
-#, c-format
-msgid "60%"
-msgstr "60%"
-
-#: calendar/gui/e-calendar-table.c:381
-#, c-format
-msgid "70%"
-msgstr "70%"
-
-#: calendar/gui/e-calendar-table.c:382
-#, c-format
-msgid "80%"
-msgstr "80%"
-
-#: calendar/gui/e-calendar-table.c:383
-#, c-format
-msgid "90%"
-msgstr "90%"
-
-#: calendar/gui/e-calendar-table.c:384
-#, c-format
-msgid "100%"
-msgstr "100%"
-
-#: calendar/gui/e-calendar-table.c:551
-msgid "Mark Complete"
-msgstr "ðÏÍÅÔÉÔØ ËÁË ×ÙÐÏÌÎÅÎÎÏÅ"
-
-#: calendar/gui/e-calendar-table.c:552
-msgid "Mark the task complete"
-msgstr "ðÏÍÅÔÉÔØ ÚÁÄÁÎÉÅ ËÁË ×ÙÐÏÌÎÅÎÎÏÅ"
-
-#: calendar/gui/e-calendar-table.c:557
-msgid "Edit this task..."
-msgstr "ðÒÁ×ËÁ ÜÔÏÇÏ ÚÁÄÁÎÉÑ..."
-
-#: calendar/gui/e-calendar-table.c:558
-msgid "Edit the task"
-msgstr "ðÒÁ×ËÁ ÚÁÄÁÎÉÑ"
-
-#: calendar/gui/e-calendar-table.c:560
-#: ui/evolution-task-editor-dialog.xml.h:19
-msgid "Delete this task"
-msgstr "õÄÁÌÉÔØ ÜÔÏ ÚÁÄÁÎÉÅ"
-
-#: calendar/gui/e-calendar-table.c:561
-msgid "Delete the task"
-msgstr "õÄÁÌÉÔØ ÚÁÄÁÎÉÅ"
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:570 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:617
-msgid "am"
-msgstr "Ä.Ð."
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:573 calendar/gui/e-week-view.c:303
-#: calendar/gui/print.c:616
-msgid "pm"
-msgstr "Ð.Ð."
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:274 calendar/gui/e-day-view.c:1294
-#: calendar/gui/e-week-view-main-item.c:325
-msgid "%A %d %B"
-msgstr "%A %d %B"
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:278 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:334
-msgid "%a %d %b"
-msgstr "%a %d %b"
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:282 calendar/gui/e-day-view.c:1321
-#: calendar/gui/e-week-view-main-item.c:348
-msgid "%d %b"
-msgstr "%d %b"
-
-#: calendar/gui/e-day-view.c:3146 ui/evolution-calendar.xml.h:16
-msgid "New Appointment"
-msgstr "îÏ×ÁÑ ×ÓÔÒÅÞÁ"
-
-#: calendar/gui/e-day-view.c:3148 calendar/gui/e-week-view.c:3280
-msgid "New All Day Event"
-msgstr "îÏ×ÙÅ ÅÖÅÄÎÅ×ÎÏÅ ÓÏÂÙÔÉÅ"
-
-#: calendar/gui/e-day-view.c:3153 calendar/gui/e-week-view.c:3285
-msgid "Go to Today"
-msgstr "óÅÇÏÄÎÑ"
-
-#: calendar/gui/e-day-view.c:3155 calendar/gui/e-week-view.c:3287
-msgid "Go to Date..."
-msgstr "ðÅÒÅÊÔÉ Ë ÄÁÔÅ..."
-
-#: calendar/gui/e-day-view.c:3162 calendar/gui/e-week-view.c:3293
-#: ui/evolution-calendar.xml.h:19 ui/evolution-message-composer.xml.h:10
-msgid "Open"
-msgstr "ïÔËÒÙÔØ"
-
-#: calendar/gui/e-day-view.c:3164 calendar/gui/e-week-view.c:3295
-msgid "Delete this Appointment"
-msgstr "õÄÁÌÉÔØ ÜÔÕ ×ÓÔÒÅÞÕ"
-
-#: calendar/gui/e-day-view.c:3166 calendar/gui/e-week-view.c:3297
-#: ui/evolution-event-editor.xml.h:45
-msgid "Schedule Meeting"
-msgstr "÷ÓÔÁ×ÉÔØ ×ÓÔÒÅÞÕ × ÒÁÓÐÉÓÁÎÉÅ"
-
-#: calendar/gui/e-day-view.c:3175 calendar/gui/e-week-view.c:3310
-msgid "Make this Occurrence Movable"
-msgstr "óÄÅÌÁÔØ ÜÔÕ ×ÓÔÒÅÞÕ ÐÅÒÅÍÅÝÁÅÍÏÊ"
-
-#: calendar/gui/e-day-view.c:3177 calendar/gui/e-week-view.c:3312
-msgid "Delete this Occurrence"
-msgstr "õÄÁÌÉÔØ ÜÔÏ ×ÈÏÖÄÅÎÉÅ"
-
-#: calendar/gui/e-day-view.c:3179
-msgid "Delete all Occurrences"
-msgstr "õÄÁÌÉÔØ ×ÓÅ ×ÈÏÖÄÅÎÉÑ"
-
-#: calendar/gui/e-day-view-time-item.c:519
-#, c-format
-msgid "%02i minute divisions"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:161
-msgid "I couldn't update your calendar file!\n"
-msgstr "îÅ ÕÄÁÌÏÓØ ÏÂÎÏ×ÉÔØ ×ÁÛ ÆÁÊÌ ËÁÌÅÎÄÁÒÑ!\n"
-
-#: calendar/gui/e-itip-control.c:167 calendar/gui/e-itip-control.c:510
-msgid "Component successfully updated."
-msgstr "ëÏÍÐÏÎÅÎÔ ÕÓÐÅÛÎÏ ÏÂÎÏ×ÌÅÎ."
-
-#: calendar/gui/e-itip-control.c:173
-msgid "There was an error loading the calendar file."
-msgstr "ðÒÉ ÚÁÇÒÕÚËÅ ÆÁÊÌÁ ËÁÌÅÎÄÁÒÑ ×ÏÚÎÉËÌÁ ÏÛÉÂËÁ."
-
-#: calendar/gui/e-itip-control.c:197
-msgid "I couldn't open your calendar file!\n"
-msgstr "îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ×ÁÛ ÆÁÊÌ ËÁÌÅÎÄÁÒÑ!\n"
-
-#: calendar/gui/e-itip-control.c:458 calendar/gui/e-itip-control.c:529
-msgid "I couldn't load your calendar file!\n"
-msgstr "îÅ ÕÄÁÌÏÓØ ÚÁÇÒÕÚÉÔØ ×ÁÛ ÆÁÊÌ ËÁÌÅÎÄÁÒÑ!\n"
-
-#: calendar/gui/e-itip-control.c:470
-msgid "I couldn't read your calendar file!\n"
-msgstr "îÅ ÕÄÁÌÏÓØ ÐÒÏÞÅÓÔØ ×ÁÛ ÆÁÊÌ ËÁÌÅÎÄÁÒÑ!\n"
-
-#: calendar/gui/e-itip-control.c:483
-msgid "This is a reply from someone who was uninvited!"
-msgstr "üÔÏ ÏÔ×ÅÔ ÏÔ ËÏÇÏ-ÔÏ ËÔÏ ÎÅ ÂÙÌ ÐÒÉÇÌÁÛÅÎ!"
-
-#: calendar/gui/e-itip-control.c:499
-msgid "I couldn't update your calendar store."
-msgstr "îÅ ÕÄÁÌÏÓØ ÏÂÎÏ×ÉÔØ ÈÒÁÎÉÌÉÝÅ ×ÁÛÅÇÏ ËÁÌÅÎÄÁÒÑ."
-
-#: calendar/gui/e-itip-control.c:540
-msgid "I couldn't delete the calendar component!\n"
-msgstr "îÅ ÕÄÁÌÏÓØ ÕÄÁÌÉÔØ ËÏÍÐÏÎÅÎÔ ËÁÌÅÎÄÁÒÑ!\n"
-
-#: calendar/gui/e-itip-control.c:550
-msgid "Component successfully deleted."
-msgstr "ëÏÍÐÏÎÅÎÔ ÕÓÐÅÛÎÏ ÕÄÁÌÅÎ."
-
-#: calendar/gui/e-itip-control.c:694
-msgid "I don't recognize this type of calendar component."
-msgstr "îÅ ÒÁÓÐÏÚÎÁÎ ÜÔÏÔ ÔÉÐ ËÏÍÐÏÎÅÎÔÁ ËÁÌÅÎÄÁÒÑ."
-
-#: calendar/gui/e-itip-control.c:780
-msgid "Add to Calendar"
-msgstr "äÏÂÁ×ÉÔØ Ë ËÁÌÅÎÄÁÒÀ"
-
-#: calendar/gui/e-itip-control.c:814
-msgid " Accept "
-msgstr " ðÒÉÎÑÔØ "
-
-#: calendar/gui/e-itip-control.c:815
-msgid " Decline "
-msgstr " ïÔËÌÏÎÉÔØ "
-
-#: calendar/gui/e-itip-control.c:816
-#, fuzzy
-msgid " Tentative "
-msgstr "üËÓÐÅÒÉÍÅÎÔÁÌØÎÙÊ"
-
-#: calendar/gui/e-itip-control.c:860
-msgid "Update Calendar"
-msgstr "ïÂÎÏ×ÉÔØ ËÁÌÅÎÄÁÒØ"
-
-#: calendar/gui/e-itip-control.c:883
-msgid "Cancel Meeting"
-msgstr "ïÔÍÅÎÉÔØ ×ÓÔÒÅÞÕ"
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, no-c-format
-msgid "%P %%"
-msgstr "%P %%"
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:4
-msgid "Calendar Message"
-msgstr "óÏÏÂÝÅÎÉÅ ËÁÌÅÎÄÁÒÑ"
-
-#: calendar/gui/e-itip-control.glade.h:5 mail/mail-format.c:623
-msgid "Date:"
-msgstr "äÁÔÁ:"
-
-#: calendar/gui/e-itip-control.glade.h:8
-msgid "Loading calendar..."
-msgstr "úÁÇÒÕÚËÁ ËÁÌÅÎÄÁÒÑ..."
-
-#: calendar/gui/e-itip-control.glade.h:9
-msgid "Organizer:"
-msgstr "ïÒÇÁÎÉÚÁÔÏÒ:"
-
-#: calendar/gui/e-itip-control.glade.h:10
-msgid "Server Message:"
-msgstr "óÏÏÂÝÅÎÉÅ ÓÅÒ×ÅÒÁ:"
-
-#: calendar/gui/e-itip-control.glade.h:11
-msgid "Summary:"
-msgstr "éÔÏÇ:"
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr "ÄÁÔÁ-ÚÁ×ÅÒÛÅÎÉÑ"
-
-#: calendar/gui/e-itip-control.glade.h:13
-msgid "date-start"
-msgstr "ÄÁÔÁ-ÎÁÞÁÌÁ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-msgid "Attendee"
-msgstr "óÏÐÒÏ×ÏÖÄÅÎÉÅ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-msgid "Attendee address"
-msgstr "áÄÒÅÓ ÓÏÐÒÏ×ÏÖÄÅÎÉÑ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-msgid "Attendees: "
-msgstr "óÏÐÒÏ×ÏÖÄÅÎÉÅ:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr ""
-"ïÔÍÅÎÉÔØ\n"
-"×ÓÔÒÅÞÕ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-msgid "Chair"
-msgstr "ðÒÅÄÓÅÄÁÔÅÌØ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-msgid "Meeting Invitations"
-msgstr "ðÒÉÇÌÁÛÅÎÉÅ ÎÁ ×ÓÔÒÅÞÕ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr "äÏÐÏÌÎÉÔÅÌØÎÙÅ ÕÞÁÓÔÎÉËÉ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-msgid "Organizer: "
-msgstr "ïÒÇÁÎÉÚÁÔÏÒ:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:14
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:16
-msgid "RSVP"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid ""
-"Request\n"
-"Meeting"
-msgstr ""
-"úÁÐÒÏÓÉÔØ\n"
-"×ÓÔÒÅÞÕ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:19
-msgid "Required Participant"
-msgstr "ôÒÅÂÕÅÍÙÅ ÕÞÁÓÔÎÉËÉ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-msgid "Role"
-msgstr "òÏÌØ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-msgid ""
-"Schedule\n"
-"Time"
-msgstr ""
-"÷ÓÔÁ×ÉÔØ ×ÓÔÒÅÞÕ\n"
-"× ÒÁÓÐÉÓÁÎÉÅ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:23 filter/libfilter-i18n.h:49
-#: mail/message-list.c:1086
-msgid "Status"
-msgstr "óÏÓÔÏÑÎÉÅ"
-
-#: calendar/gui/e-tasks.c:149 calendar/gui/e-tasks.c:469
-#: calendar/gui/e-tasks.c:502
-msgid "All"
-msgstr "÷ÓÅ"
-
-#: calendar/gui/e-tasks.c:155
-msgid "Category:"
-msgstr "ëÁÔÅÇÏÒÉÉ:"
-
-#: calendar/gui/e-tasks.c:298
-#, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÚÁÇÒÕÚÉÔØ ÚÁÄÁÎÉÅ × \"%s\""
-
-#: calendar/gui/e-tasks.c:310
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr "íÅÔÏÄ ÎÅÏÂÈÏÄÉÍÙÊ ÄÌÑ ÚÁÇÒÕÚËÉ \"%s\" ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
-
-#: calendar/gui/event-editor.c:377
-msgid "Edit Appointment"
-msgstr "ðÒÁ×ËÁ ×ÓÔÒÅÞÉ"
-
-#: calendar/gui/event-editor.c:449
-msgid "on"
-msgstr "×"
-
-#: calendar/gui/event-editor.c:474 filter/filter-datespec.c:81
-msgid "day"
-msgstr "ÄÅÎØ"
-
-#: calendar/gui/event-editor.c:601
-msgid "on the"
-msgstr ""
-
-#: calendar/gui/event-editor.c:608
-msgid "th"
-msgstr "ÙÊ"
-
-#: calendar/gui/event-editor.c:754
-msgid "occurrences"
-msgstr "ÓÌÕÞÁÉ"
-
-#: calendar/gui/event-editor.c:871
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr ""
-"üÔÁ ×ÓÔÒÅÞÁ ÉÍÅÅÔ ÐÒÁ×ÉÌÁ ÐÏ×ÔÏÒÅÎÉÑ, ËÏÔÏÒÙÅ ÎÅ ÍÏÇÕÔ ÂÙÔØ ÏÔÒÅÄÁËÔÉÒÏ×ÁÎÙ "
-"× Evolution."
-
-#: calendar/gui/event-editor.c:1543
-#, c-format
-msgid " %d days"
-msgstr "%d ÄÎÅÊ"
-
-#: calendar/gui/event-editor.c:1545
-msgid " 1 day"
-msgstr " 1 ÄÅÎØ"
-
-#: calendar/gui/event-editor.c:1548
-#, c-format
-msgid " %d weeks"
-msgstr " %d ÎÅÄÅÌØ"
-
-#: calendar/gui/event-editor.c:1550
-msgid " 1 week"
-msgstr " 1 ÎÅÄÅÌÑ"
-
-#: calendar/gui/event-editor.c:1553
-#, c-format
-msgid " %d hours"
-msgstr " %d ÞÁÓÏ×"
-
-#: calendar/gui/event-editor.c:1555
-msgid " 1 hour"
-msgstr " 1 ÞÁÓ"
-
-#: calendar/gui/event-editor.c:1558
-#, c-format
-msgid " %d minutes"
-msgstr " %d ÍÉÎÕÔ"
-
-#: calendar/gui/event-editor.c:1560
-msgid " 1 minute"
-msgstr " 1 ÍÉÎÕÔÁ"
-
-#: calendar/gui/event-editor.c:1563
-#, c-format
-msgid " %d seconds"
-msgstr " %d ÓÅËÕÎÄ"
-
-#: calendar/gui/event-editor.c:1565
-msgid " 1 second"
-msgstr " 1 ÓÅËÕÎÄÁ"
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1588
-msgid "Play a sound"
-msgstr "÷ÏÓÐÒÏÉÚ×ÅÓÔÉ Ú×ÕË"
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1591
-msgid "Show a dialog"
-msgstr "ðÏËÁÚÁÔØ ÄÉÁÌÏÇ"
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1594
-msgid "Send an email"
-msgstr "ïÔÐÒÁ×ÉÔØ ÐÏÞÔÕ"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1597
-msgid "Run a program"
-msgstr "úÁÐÕÓÔÉÔØ ÐÒÏÇÒÁÍÍÕ"
-
-#: calendar/gui/event-editor.c:1612
-msgid " before start of appointment"
-msgstr " ÄÏ ÎÁÞÁÌÁ ×ÓÔÒÅÞÉ"
-
-#: calendar/gui/event-editor.c:1614
-msgid " after start of appointment"
-msgstr " ÐÏÓÌÅ ÎÁÞÁÌÁ ×ÓÔÒÅÞÉ"
-
-#: calendar/gui/event-editor.c:1622
-msgid " before end of appointment"
-msgstr " ÐÅÒÅÄ ÏËÏÎÞÁÎÉÅÍ ×ÓÔÒÅÞÉ"
-
-#: calendar/gui/event-editor.c:1624
-msgid " after end of appointment"
-msgstr " ÐÏÓÌÅ ÏËÏÎÞÁÎÉÑ ×ÓÔÒÅÞÉ"
-
-#: calendar/gui/event-editor.c:3132 calendar/gui/print.c:1097
-#: calendar/gui/print.c:1099 calendar/gui/print.c:1100
-msgid "%a %b %d %Y"
-msgstr "%a %b %d %Y"
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr "÷ÓÅ ÓÏÂÙÔÉÑ ÄÎÑ"
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-msgid "Appointment"
-msgstr "÷ÓÔÒÅÞÁ"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-msgid "Appointment Basics"
-msgstr "ïÓÎÏ×ÁÎÉÑ ×ÓÔÒÅÞÉ"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-msgid "Custom recurrence"
-msgstr "äÒÕÇÏÅ ÐÏ×ÔÏÒÅÎÉÅ"
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr "ëÁÖÄÙÊ"
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-msgid "Exceptions"
-msgstr "éÓËÌÀÞÅÎÉÑ"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-msgid "Modify"
-msgstr "éÚÍÅÎÉÔØ"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-msgid "No recurrence"
-msgstr "âÅÚ ÐÏ×ÔÏÒÅÎÉÑ"
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-msgid "Preview"
-msgstr "ðÒÏÓÍÏÔÒ"
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Recurrence"
-msgstr "ðÏ×ÔÏÒÅÎÉÅ"
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-msgid "Recurrence Rule"
-msgstr "ðÒÁ×ÉÌÏ ÐÏ×ÔÏÒÅÎÉÑ"
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-msgid "Reminder"
-msgstr "îÁÐÏÍÉÎÁÎÉÅ"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-msgid "Settings..."
-msgstr "õÓÔÁÎÏ×ËÉ..."
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr "ðÒÏÓÔÏÅ ÐÏ×ÔÏÒÅÎÉÅ"
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-msgid "_End time:"
-msgstr "÷ÒÅÍÑ ÏËÏÎÞÁÎÉÑ:"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Start time:"
-msgstr "÷ÒÅÍÑ ÎÁÞÁÌÁ:"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Starting date:"
-msgstr "äÁÔÁ ÎÁÞÁÌÁ:"
-
-#. Automatically generated. Do not edit.
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:2
-msgid "after"
-msgstr "ÐÏÓÌÅ"
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:6
-msgid "before"
-msgstr "ÄÏ"
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "day(s)"
-msgstr "ÄÅÎØ"
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-msgid "end of appointment"
-msgstr "ÚÁ×ÅÒÛÅÎÉÅ ×ÓÔÒÅÞÉ"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "for"
-msgstr "×"
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr "×ÓÅÇÄÁ"
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-msgid "hour(s)"
-msgstr "ÞÁÓÙ"
-
-#: calendar/gui/event-editor-dialog.glade.h:40
-msgid "label21"
-msgstr "ÍÅÔËÁ26"
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "label55"
-msgstr "ÍÅÔËÁ26"
-
-#: calendar/gui/event-editor-dialog.glade.h:42 mail/mail-config.glade.h:77
-msgid "minute(s)"
-msgstr "ÍÉÎÕÔÙ"
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-msgid "month(s)"
-msgstr "ÍÅÓÑÃÙ"
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "start of appointment"
-msgstr "ÎÁÞÁÌÏ ×ÓÔÒÅÞÉ"
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "until"
-msgstr "ÄÏ"
-
-#: calendar/gui/event-editor-dialog.glade.h:46
-msgid "week(s)"
-msgstr "ÎÅÄÅÌÑ"
-
-#: calendar/gui/event-editor-dialog.glade.h:47
-msgid "year(s)"
-msgstr "ÇÏÄ"
-
-#: calendar/gui/e-week-view.c:3278 calendar/gui/e-week-view.c:3301
-msgid "New Appointment..."
-msgstr "îÏ×ÁÑ ×ÓÔÒÅÞÁ..."
-
-#: calendar/gui/e-week-view.c:3314
-msgid "Delete All Occurrences"
-msgstr "õÄÁÌÉÔØ ×ÓÅ ×ÈÏÖÄÅÎÉÑ"
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:342
-msgid "%d %B"
-msgstr "%d %B"
-
-#: calendar/gui/gnome-cal.c:234
-msgid "Summary contains"
-msgstr "éÔÏÇ ÓÏÄÅÒÖÉÔ"
-
-#: calendar/gui/gnome-cal.c:235
-msgid "Description contains"
-msgstr "ïÐÉÓÁÎÉÅ ÓÏÄÅÒÖÉÔ"
-
-#: calendar/gui/gnome-cal.c:236
-msgid "Comment contains"
-msgstr "ëÏÍÅÎÔÁÒÉÊ ÓÏÄÅÒÖÉÔ"
-
-#: calendar/gui/gnome-cal.c:237
-msgid "Has category"
-msgstr "éÍÅÅÔ ËÁÔÅÇÏÒÉÀ"
-
-#: calendar/gui/gnome-cal.c:840
-#, c-format
-msgid "Could not open the folder in `%s'"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÐÁÐËÕ \"%s\""
-
-#: calendar/gui/gnome-cal.c:851
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr "íÅÔÏÄ ÎÅÏÂÈÏÄÉÍÙÊ ÄÌÑ ÏÔËÒÙÔÉÑ \"%s\" ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-msgid "Evolution calendar executive summary component."
-msgstr "ëÏÍÐÏÎÅÎÔ Executive Summary ÐÒÏÇÒÁÍÍÙ Evolution."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr "ðÒÏÓÍÏÔÒÝÉË iTip/iMip ËÁÌÅÎÄÁÒÑ Evolution"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr "ëÏÍÐÏÎÅÎÔ Evolution ÄÌÑ ÏÂÒÁÂÏÔËÉ ËÁÌÅÎÄÁÒÑ."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-msgid "Factory for the Calendar Summary component."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-msgid "Factory for the Evolution calendar component."
-msgstr "æÁÂÒÉËÁ ËÏÍÐÏÎÅÎÔÁ ËÁÌÅÎÄÁÒÑ Evolution."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-msgid "Factory for the calendar iTip view control"
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-msgid "Factory for the sample Calendar control"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:1
-msgid "April"
-msgstr "áÐÒÅÌØ"
-
-#: calendar/gui/goto-dialog.glade.h:2
-msgid "August"
-msgstr "á×ÇÕÓÔ"
-
-#: calendar/gui/goto-dialog.glade.h:3
-msgid "December"
-msgstr "äÅËÁÂÒØ"
-
-#: calendar/gui/goto-dialog.glade.h:4
-msgid "February"
-msgstr "æÅ×ÒÁÌØ"
-
-#: calendar/gui/goto-dialog.glade.h:5
-msgid "Go To Date"
-msgstr "ðÅÒÅÊÔÉ Ë ÄÁÔÅ"
-
-#: calendar/gui/goto-dialog.glade.h:6
-msgid "Go To Today"
-msgstr "óÅÇÏÄÎÑ"
-
-#: calendar/gui/goto-dialog.glade.h:7
-msgid "January"
-msgstr "ñÎ×ÁÒØ"
-
-#: calendar/gui/goto-dialog.glade.h:8
-msgid "July"
-msgstr "éÀÌØ"
-
-#: calendar/gui/goto-dialog.glade.h:9
-msgid "June"
-msgstr "éÀÎØ"
-
-#: calendar/gui/goto-dialog.glade.h:10
-msgid "March"
-msgstr "íÁÒÔ"
-
-#: calendar/gui/goto-dialog.glade.h:11
-msgid "May"
-msgstr "íÁÊ"
-
-#: calendar/gui/goto-dialog.glade.h:12
-msgid "November"
-msgstr "îÏÑÂÒØ"
-
-#: calendar/gui/goto-dialog.glade.h:13
-msgid "October"
-msgstr "ïËÔÑÂÒØ"
-
-#: calendar/gui/goto-dialog.glade.h:14
-msgid "September"
-msgstr "óÅÎÔÑÂÒØ"
-
-#: calendar/gui/print.c:300
-msgid "1st"
-msgstr "1-ÙÊ"
-
-#: calendar/gui/print.c:300
-msgid "2nd"
-msgstr "2-ÏÊ"
-
-#: calendar/gui/print.c:300
-msgid "3rd"
-msgstr "3-ÉÊ"
-
-#: calendar/gui/print.c:300
-msgid "4th"
-msgstr "4-ÙÊ"
-
-#: calendar/gui/print.c:300
-msgid "5th"
-msgstr "5-ÙÊ"
-
-#: calendar/gui/print.c:301
-msgid "6th"
-msgstr "6-ÏÊ"
-
-#: calendar/gui/print.c:301
-msgid "7th"
-msgstr "7-ÏÊ"
-
-#: calendar/gui/print.c:301
-msgid "8th"
-msgstr "8-ÏÊ"
-
-#: calendar/gui/print.c:301
-msgid "9th"
-msgstr "9-ÙÊ"
-
-#: calendar/gui/print.c:301
-msgid "10th"
-msgstr "10-ÙÊ"
-
-#: calendar/gui/print.c:302
-msgid "11th"
-msgstr "11-ÙÊ"
-
-#: calendar/gui/print.c:302
-msgid "12th"
-msgstr "12-ÙÊ"
-
-#: calendar/gui/print.c:302
-msgid "13th"
-msgstr "13-ÙÊ"
-
-#: calendar/gui/print.c:302
-msgid "14th"
-msgstr "14-ÙÊ"
-
-#: calendar/gui/print.c:302
-msgid "15th"
-msgstr "15-ÙÊ"
-
-#: calendar/gui/print.c:303
-msgid "16th"
-msgstr "16-ÙÊ"
-
-#: calendar/gui/print.c:303
-msgid "17th"
-msgstr "17-ÙÊ"
-
-#: calendar/gui/print.c:303
-msgid "18th"
-msgstr "18-ÙÊ"
-
-#: calendar/gui/print.c:303
-msgid "19th"
-msgstr "19-ÙÊ"
-
-#: calendar/gui/print.c:303
-msgid "20th"
-msgstr "20-ÙÊ"
-
-#: calendar/gui/print.c:304
-msgid "21st"
-msgstr "21-ÙÊ"
-
-#: calendar/gui/print.c:304
-msgid "22nd"
-msgstr "22-ÏÊ"
-
-#: calendar/gui/print.c:304
-msgid "23rd"
-msgstr "23-ÉÊ"
-
-#: calendar/gui/print.c:304
-msgid "24th"
-msgstr "24-ÙÊ"
-
-#: calendar/gui/print.c:304
-msgid "25th"
-msgstr "25-ÙÊ"
-
-#: calendar/gui/print.c:305
-msgid "26th"
-msgstr "26-ÏÊ"
-
-#: calendar/gui/print.c:305
-msgid "27th"
-msgstr "27-ÏÊ"
-
-#: calendar/gui/print.c:305
-msgid "28th"
-msgstr "28-ÏÊ"
-
-#: calendar/gui/print.c:305
-msgid "29th"
-msgstr "29-ÙÊ"
-
-#: calendar/gui/print.c:305
-msgid "30th"
-msgstr "30-ÙÊ"
-
-#: calendar/gui/print.c:306
-msgid "31st"
-msgstr "31-ÙÊ"
-
-#: calendar/gui/print.c:362
-msgid "Su"
-msgstr "÷Ó"
-
-#: calendar/gui/print.c:362
-msgid "Mo"
-msgstr "ðÎ"
-
-#: calendar/gui/print.c:362
-msgid "Tu"
-msgstr "÷Ô"
-
-#: calendar/gui/print.c:362
-msgid "We"
-msgstr "óÒ"
-
-#: calendar/gui/print.c:362
-msgid "Th"
-msgstr "þÔ"
-
-#: calendar/gui/print.c:362
-msgid "Fr"
-msgstr "ðÔ"
-
-#: calendar/gui/print.c:362
-msgid "Sa"
-msgstr "CÂ"
-
-#. Day
-#: calendar/gui/print.c:1078
-msgid "Current day (%a %b %d %Y)"
-msgstr "ôÅËÕÝÉÊ ÄÅÎØ (%a %b %d %Y)"
-
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1096
-msgid "%a %b %d"
-msgstr "%a %b %d"
-
-#: calendar/gui/print.c:1093
-msgid "%a %d %Y"
-msgstr "%a %d %Y"
-
-#: calendar/gui/print.c:1104
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr "ôÅËÕÝÁÑ ÎÅÄÅÌÑ (%s - %s)"
-
-#. Month
-#: calendar/gui/print.c:1112
-msgid "Current month (%b %Y)"
-msgstr "ôÅËÕÝÉÊ ÍÅÓÑÃ (%b %Y)"
-
-#. Year
-#: calendar/gui/print.c:1119
-msgid "Current year (%Y)"
-msgstr "ôÅËÕÝÉÊ ÇÏÄ (%Y)"
-
-#: calendar/gui/print.c:1156
-msgid "Print Calendar"
-msgstr "îÁÐÅÞÁÔÁÔØ ËÁÌÅÎÄÁÒØ"
-
-#: calendar/gui/print.c:1321 mail/mail-callbacks.c:1524
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:24
-#: ui/evolution-mail.xml.h:57
-msgid "Print Preview"
-msgstr "ðÒÏÓÍÏÔÒ ÐÅÞÁÔÉ"
-
-#: calendar/gui/tasks-control.c:108
-msgid "The URI of the tasks folder to display"
-msgstr "URI, ËÏÔÏÒÙÊ ÂÕÄÅÔ ÐÏËÁÚÁÎ × ÐÁÐËÅ ÚÁÄÁÎÉÊ "
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-"íÅÔÏÄ ÔÒÅÂÕÅÍÙÊ ÄÌÑ ÚÁÇÒÕÚËÉ \"%s\" ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ, ÎÅÔ ÜÌÅÍÅÎÔÏ× ÉÚ "
-"ÐÁÐËÉ ËÁÌÅÎÄÁÒÑ ÄÌÑ ÐÅÒÅÎÏÓÁ ÉÚ ÐÁÐËÉ ÚÁÄÁÎÉÊ."
-
-#: calendar/gui/weekday-picker.c:315 calendar/gui/weekday-picker.c:410
-msgid "SMTWTFS"
-msgstr "ð÷óþðó÷"
-
-#: camel/camel-cipher-context.c:169
-msgid "Signing is not supported by this cipher"
-msgstr "ðÏÄÐÉÓÙ×ÁÎÉÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÜÔÉÍ ÛÉÆÒÏÍ"
-
-#: camel/camel-cipher-context.c:209
-#, fuzzy
-msgid "Clearsigning is not supported by this cipher"
-msgstr "õËÁÚÁÎÎÙÊ ÔÉÐ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÄÌÑ ÜÔÏÇÏ ÎÏÓÉÔÅÌÑ"
-
-#: camel/camel-cipher-context.c:249
-msgid "Verifying is not supported by this cipher"
-msgstr "ðÒÏ×ÅÒËÁ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÜÔÉÍ ÛÉÆÒÏÍ"
-
-#: camel/camel-cipher-context.c:292
-msgid "Encryption is not supported by this cipher"
-msgstr "ûÉÆÒÏ×ÁÎÉÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÜÔÉÍ ÛÉÆÒÏÍ"
-
-#: camel/camel-cipher-context.c:334
-msgid "Decryption is not supported by this cipher"
-msgstr "òÁÓÛÉÆÒÏ×ËÁ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÜÔÉÍ ÛÉÆÒÏÍ"
-
-#: camel/camel-filter-driver.c:534 camel/camel-filter-driver.c:543
-msgid "Syncing folders"
-msgstr "óÉÎÈÒÏÎÉÚÁÃÉÑ ÐÁÐÏË"
-
-#: camel/camel-filter-driver.c:643
-msgid "Unable to open spool folder"
-msgstr "îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ÐÁÐËÕ ÓÐÕÌÁ"
-
-#: camel/camel-filter-driver.c:652
-msgid "Unable to process spool folder"
-msgstr "îÅ ÕÄÁÌÏÓØ ÏÂÒÁÂÏÔÁÔØ ÐÁÐËÕ ÓÐÕÌÁ"
-
-#: camel/camel-filter-driver.c:666
-msgid "Getting message %d (%d%%)"
-msgstr "ðÏÌÕÞÅÎÉÅ ÓÏÏÂÝÅÎÉÑ %s"
-
-#: camel/camel-filter-driver.c:670 camel/camel-filter-driver.c:679
-#, c-format
-msgid "Failed message %d"
-msgstr "óÂÏÊÎÏÅ ÓÏÏÂÝÅÎÉÅ %d"
-
-#: camel/camel-filter-driver.c:671
-msgid "Cannot open message"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÓÏÏÂÝÅÎÉÅ"
-
-#: camel/camel-filter-driver.c:690 camel/camel-filter-driver.c:788
-msgid "Syncing folder"
-msgstr "óÉÎÈÒÏÎÉÚÁÃÉÑ ÐÁÐËÉ"
-
-#: camel/camel-filter-driver.c:694 camel/camel-filter-driver.c:793
-msgid "Complete"
-msgstr "÷ÙÐÏÌÎÅÎÏ"
-
-#: camel/camel-filter-driver.c:748
-#, c-format
-msgid "Getting message %d of %d"
-msgstr "ðÏÌÕÞÅÎÉÅ ÓÏÏÂÝÅÎÉÑ %d ÉÚ %d"
-
-#: camel/camel-filter-driver.c:753 camel/camel-filter-driver.c:771
-#, c-format
-msgid "Failed at message %d of %d"
-msgstr "óÂÏÊ ÎÁ ÓÏÏÂÝÅÎÉÉ %d ÉÚ %d"
-
-#: camel/camel-filter-driver.c:866
-#, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr "ïÛÉÂËÁ ÁÎÁÌÉÚÁ ÆÉÌØÔÒÁ: %s: %s"
-
-#: camel/camel-filter-driver.c:871
-#, c-format
-msgid "Error executing filter: %s: %s"
-msgstr "ïÛÉÂËÁ ×ÙÐÏÌÎÅÎÉÑ ÆÉÌØÔÒÁ: %s: %s"
-
-#: camel/camel-filter-search.c:439 camel/camel-filter-search.c:445
-#, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr "ïÛÉÂËÁ ×ÙÐÏÌÎÅÎÉÑ ÐÏÉÓËÁ ÆÉÌØÔÒÁ: %s: %s"
-
-#: camel/camel-folder-search.c:328
-#, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-"ïÛÉÂËÁ × ÒÅÇÕÌÑÒÎÏÍ ×ÙÒÁÖÅÎÉÉ \"%s\":\n"
-"%s"
-
-#: camel/camel-folder-search.c:338
-#, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr ""
-"ïÛÉÂËÁ ÐÒÉ ×ÙÐÏÌÎÅÎÉÉ ×ÙÒÁÖÅÎÉÑ ÐÏÉÓËÁ \"%s\":\n"
-"%s"
-
-#: camel/camel-folder-search.c:485 camel/camel-folder-search.c:513
-msgid "(match-all) requires a single bool result"
-msgstr "(ÓÏ×ÐÁÄÁÅÔ ×ÓÅ) ÔÒÅÂÕÅÔ ÅÄÉÎÓÔ×ÅÎÎÏÇÏ ÌÏÇÉÞÅÓËÏÇÏ ÒÅÚÕÌØÔÁÔÁ"
-
-#: camel/camel-folder-search.c:559
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr "óÏ×ÅÒÛÅÎÉÅ ÚÁÐÒÏÓÁ ÎÁ ÎÅÉÚ×ÅÓÔÎÏÍ ÚÁÇÏÌÏ×ËÅ: %s"
-
-#: camel/camel-folder-search.c:670 camel/camel-folder-search.c:714
-msgid "Invalid type in body-contains, expecting string"
-msgstr "îÅÄÏÐÕÓÔÉÍÙÊ ÔÉÐ × ÔÅÌÏ-ÓÏÄÅÒÖÉÔ, ÏÖÉÄÁÅÔÓÑ ÓÔÒÏËÁ"
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:92 camel/camel-lock.c:111 camel/camel-movemail.c:138
-#: camel/camel-movemail.c:185
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ÆÁÊÌ ÂÌÏËÉÒÏ×ËÉ ÄÌÑ %s: %s"
-
-#: camel/camel-lock.c:151 camel/camel-movemail.c:219
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr ""
-"ðÒÅ×ÙÛÅÎÉÅ ×ÒÅÍÅÎÉ ÐÒÉ ÐÏÐÙÔËÅ ÚÁÂÌÏËÉÒÏ×ÁÔØ ÆÁÊÌ %s. ðÏÐÒÏÂÕÊÔÅ ÅÝÅ ÒÁÚ "
-"ÐÏÚÖÅ."
-
-#: camel/camel-lock.c:201
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ lock ÉÓÐÏÌØÚÕÑ fcntl(2): %s"
-
-#: camel/camel-lock.c:255
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ lock ÉÓÐÏÌØÚÕÑ flock(2): %s"
-
-#: camel/camel-movemail.c:101
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÐÒÏ×ÅÒÉÔØ ÐÏÞÔÏ×ÙÊ ÆÁÊÌ %s: %s"
-
-#: camel/camel-movemail.c:148
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÐÏÞÔÏ×ÙÊ ÆÁÊÌ %s: %s"
-
-#: camel/camel-movemail.c:158
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÒÅÍÅÎÎÙÊ ÐÏÞÔÏ×ÙÊ ÆÁÊÌ %s: %s"
-
-#: camel/camel-movemail.c:199
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÒÏ×ÅÒÉÔØ ÆÁÊÌ ÂÌÏËÉÒÏ×ËÉ ÄÌÑ %s: %s"
-
-#: camel/camel-movemail.c:245
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr "ïÛÉÂËÁ ÐÒÉ ÞÔÅÎÉÉ ÐÏÞÔÏ×ÏÇÏ ÆÁÊÌÁ: %s"
-
-#: camel/camel-movemail.c:256
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr "ïÛÉÂËÁ ÓÏÈÒÁÎÅÎÉÑ ×ÒÅÍÅÎÎÏÇÏ ÐÏÞÔÏ×ÏÇÏ ÆÁÊÌÁ: %s"
-
-#: camel/camel-movemail.c:274
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr "óÂÏÊ ÐÒÉ ÓÏÈÒÁÎÅÎÉÉ ÐÏÞÔÙ ×Ï ×ÒÅÍÅÎÎÏÍ ÆÁÊÌÅ %s: %s"
-
-#: camel/camel-movemail.c:306
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ËÁÎÁÌ: %s"
-
-#: camel/camel-movemail.c:318
-#, c-format
-msgid "Could not fork: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÒÁÚ×ÅÔ×ÉÔØ: %s"
-
-#: camel/camel-movemail.c:356
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr "óÂÏÊ ÐÒÏÇÒÁÍÍÙ ÐÅÒÅÍÅÝÅÎÉÑ ÐÏÞÔÙ: %s"
-
-#: camel/camel-movemail.c:357
-msgid "(Unknown error)"
-msgstr "(îÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ)"
-
-#: camel/camel-movemail.c:587
-#, c-format
-msgid "Error copying mail temp file: %s"
-msgstr "ïÛÉÂËÁ ËÏÐÉÒÏ×ÁÎÉÑ ×ÒÅÍÅÎÎÏÇÏ ÐÏÞÔÏ×ÏÇÏ ÆÁÊÌÁ: %s"
-
-#: camel/camel-pgp-context.c:188
-#, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr "ðÏÖÁÌÕÊÓÔÁ ××ÅÄÉÔÅ ×ÁÛÕ %s ÐÁÒÏÌØÎÕÀ ÆÒÁÚÕ ÄÌÑ %s"
-
-#: camel/camel-pgp-context.c:191
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr "ðÏÖÁÌÕÊÓÔÁ ××ÅÄÉÔÅ ×ÁÛÕ %s ÐÁÒÏÌØÎÕÀ ÆÒÁÚÕ."
-
-#: camel/camel-pgp-context.c:509
-msgid "No plaintext to sign."
-msgstr "îÅÔ ÔÅËÓÔÁ ÄÌÑ ÐÏÄÐÉÓÉ."
-
-#: camel/camel-pgp-context.c:516 camel/camel-pgp-context.c:688
-#: camel/camel-pgp-context.c:1055 camel/camel-pgp-context.c:1267
-msgid "No password provided."
-msgstr "ðÁÒÏÌØ ÎÅ ÐÒÅÄÏÓÔÁ×ÌÅÎ."
-
-#: camel/camel-pgp-context.c:522 camel/camel-pgp-context.c:694
-#: camel/camel-pgp-context.c:877 camel/camel-pgp-context.c:1062
-#: camel/camel-pgp-context.c:1274
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ËÁÎÁÌ Ë GPG/PGP: %s"
-
-#: camel/camel-pgp-context.c:681
-msgid "No plaintext to clearsign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:871
-msgid "No plaintext to verify."
-msgstr "îÅÔ ÔÅËÓÔÁ ÄÌÑ ÐÒÏ×ÅÒËÉ."
-
-#: camel/camel-pgp-context.c:888
-#, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ×ÒÅÍÅÎÎÙÊ ÆÁÊÌ: %s"
-
-#: camel/camel-pgp-context.c:1045
-msgid "No plaintext to encrypt."
-msgstr "îÅÔ ÔÅËÓÔÁ ÄÌÑ ÛÉÆÒÏ×ÁÎÉÑ."
-
-#: camel/camel-pgp-context.c:1071
-msgid "No recipients specified"
-msgstr "îÅ ÕËÁÚÁÎÙ ÐÏÌÕÞÁÔÅÌÉ"
-
-#: camel/camel-pgp-context.c:1259
-msgid "No ciphertext to decrypt."
-msgstr "îÅÔ ÛÉÆÒÁ ÄÌÑ ÄÅÛÉÆÒÁÃÉÉ."
-
-#: camel/camel-provider.c:131
-#, c-format
-msgid "Could not load %s: Module loading not supported on this system."
-msgstr ""
-"îÅ ÕÄÁÌÏÓØ ÚÁÇÒÕÚÉÔØ %s: úÁÇÒÕÚËÁ ÍÏÄÕÌÅÊ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ × ÜÔÏÊ ÓÉÓÔÅÍÅ."
-
-#: camel/camel-provider.c:140
-#, c-format
-msgid "Could not load %s: %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÚÁÇÒÕÚÉÔØ %s: %s"
-
-#: camel/camel-provider.c:148
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÚÁÇÒÕÚÉÔØ %s: ÎÅÔ ÉÎÉÃÉÁÌÉÚÁÃÉÏÎÎÏÇÏ ËÏÄÁ × ÍÏÄÕÌÅ."
-
-#: camel/camel-remote-store.c:191
-#, c-format
-msgid "%s server %s"
-msgstr "%s ÓÅÒ×ÅÒ %s"
-
-#: camel/camel-remote-store.c:195
-#, c-format
-msgid "%s service for %s on %s"
-msgstr "%s ÓÅÒ×ÉÓ ÄÌÑ %s ÎÁ %s"
-
-#: camel/camel-remote-store.c:252
-msgid "Connection cancelled"
-msgstr "óÏÅÄÉÎÅÎÉÅ ÏÔÍÅÎÅÎÏ"
-
-#: camel/camel-remote-store.c:255
-#: camel/providers/smtp/camel-smtp-transport.c:269
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÐÏÄËÌÀÞÉÔØÓÑ Ë %s (ÐÏÒÔ %d): %s"
-
-#: camel/camel-remote-store.c:256
-msgid "(unknown host)"
-msgstr "(ÎÅÉÚ×ÅÓÔÎÙÊ ÈÏÓÔ)"
-
-#: camel/camel-remote-store.c:337 camel/camel-remote-store.c:399
-#: camel/camel-remote-store.c:470
-#: camel/providers/imap/camel-imap-command.c:287
-msgid "Operation cancelled"
-msgstr "ïÐÅÒÁÃÉÑ ÏÔÍÅÎÅÎÁ"
-
-#: camel/camel-remote-store.c:476
-msgid "Server unexpectedly disconnected"
-msgstr "óÅÒ×ÅÒ ÎÅÏÖÉÄÁÎÎÏ ÏÔËÌÀÞÉÌÓÑ"
-
-#: camel/camel-sasl-anonymous.c:33
-msgid "Anonymous"
-msgstr "Anonymous"
-
-#: camel/camel-sasl-anonymous.c:35
-msgid "This option will connect to the server using an anonymous login."
-msgstr "âÕÄÅÔ ÐÒÏÉÚ×ÏÄÉÔØÓÑ ÁÎÏÎÉÍÎÏÅ (anonymous) ÐÏÄËÌÀÞÅÎÉÅ Ë ÓÅÒ×ÅÒÕ"
-
-#: camel/camel-sasl-anonymous.c:110 camel/camel-sasl-plain.c:87
-msgid "Authentication failed."
-msgstr "óÂÏÊ ÉÄÅÎÔÉÆÉËÁÃÉÉ."
-
-#: camel/camel-sasl-anonymous.c:119
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-"îÅ×ÅÒÎÁÑ ÔÒÁÓÓÉÒÏ×ÏÞÎÁÑ ÉÎÆÏÒÍÁÃÉÑ ÜÌ.ÁÄÒÅÓÁ:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:131
-#, fuzzy, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr ""
-"ïÛÉÂËÁ ÐÒÉ ÚÁÇÒÕÚËÅ ÉÎÆÏÒÍÁÃÉÉ ÆÉÌØÔÒÁ:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:143
-#, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr ""
-"îÅÐÒÁ×ÉÌØÎÁÑ ÔÒÁÓÓÉÒÏ×ÏÞÎÁÑ ÉÎÆÏÒÍÁÃÉÑ:\n"
-"%s"
-
-#: camel/camel-sasl-cram-md5.c:35
-msgid "CRAM-MD5"
-msgstr "CRAM-MD5"
-
-#: camel/camel-sasl-cram-md5.c:37
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-"ðÏÄËÌÀÞÅÎÉÅ Ë ÓÅÒ×ÅÒÕ ÂÕÄÅÔ ÐÒÏÉÚ×ÏÄÉÔØÓÑ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÄÌÑ ÉÄÅÎÔÉÆÉËÁÃÉÉ "
-"ÐÒÏÔÏËÏÌÁ CRAM-MD5, ÅÓÌÉ ÓÅÒ×ÅÒ ÅÇÏ ÐÏÄÄÅÒÖÉ×ÁÅÔ."
-
-#: camel/camel-sasl-digest-md5.c:43
-msgid "DIGEST-MD5"
-msgstr "DIGEST-MD5"
-
-#: camel/camel-sasl-digest-md5.c:45
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-"ðÏÄËÌÀÞÅÎÉÅ Ë ÓÅÒ×ÅÒÕ ÂÕÄÅÔ ÐÒÏÉÚ×ÏÄÉÔØÓÑ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÚÁÛÉÆÒÏ×ÁÎÎÏÇÏ "
-"ÐÁÒÏÌÑ DIGEST-MD5, ÅÓÌÉ ÓÅÒ×ÅÒ ÅÇÏ ÐÏÄÄÅÒÖÉ×ÁÅÔ."
-
-#: camel/camel-sasl-digest-md5.c:810
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr "ïÔ×ÅÔ ÓÅÒ×ÅÒÁ ÓÌÉÛËÏÍ ÄÌÉÎÎÙÊ (>2048 ÏËÔÅÔÏ×)\n"
-
-#: camel/camel-sasl-digest-md5.c:819
-msgid "Server challenge invalid\n"
-msgstr "îÅÄÏÐÕÓÔÉÍÙÊ ÏÔ×ÅÔ ÓÅÒ×ÅÒÁ\n"
-
-#: camel/camel-sasl-digest-md5.c:825
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr "ïÔ×ÅÔ ÓÅÒ×ÅÒÁ ÓÏÄÅÒÖÉÔ ÎÅÄÏÐÕÓÔÉÍÙÊ ÖÅÔÏÎ \"ëÁÞÅÓÔ×Ï ÚÁÝÉÔÙ\"\n"
-
-#: camel/camel-sasl-digest-md5.c:847
-msgid "Server response did not contain authorization data\n"
-msgstr "ïÔ×ÅÔ ÓÅÒ×ÅÒÁ ÎÅ ÓÏÄÅÒÖÉÔ ÉÎÆÏÒÍÁÃÉÉ Ï Á×ÔÏÒÉÚÁÃÉÉ\n"
-
-#: camel/camel-sasl-digest-md5.c:865
-msgid "Server response contained incomplete authorization data\n"
-msgstr "ïÔ×ÅÔ ÓÅÒ×ÅÒÁ ÓÏÄÅÒÖÉÔ ÎÅÐÏÌÎÕÀ ÉÎÆÏÒÍÁÃÉÀ Ï Á×ÔÏÒÉÚÁÃÉÉ\n"
-
-#: camel/camel-sasl-digest-md5.c:875
-#, fuzzy
-msgid "Server response does not match\n"
-msgstr "ïÔ×ÅÔ ÓÅÒ×ÅÒÁ ÚÁËÏÎÞÉÌÓÑ ÓÌÉÛËÏÍ ÒÁÎÏ."
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "Kerberos 4"
-msgstr "Kerberos 4"
-
-#: camel/camel-sasl-kerberos4.c:42
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr ""
-"ðÏÄËÌÀÞÅÎÉÅ Ë ÓÅÒ×ÅÒÕ ÂÕÄÅÔ ÐÒÏÉÚ×ÏÄÉÔØÓÑ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÄÌÑ ÉÄÅÎÔÉÆÉËÁÃÉÉ "
-"ÐÒÏÔÏËÏÌÁ Kerberos 4."
-
-#: camel/camel-sasl-kerberos4.c:161
-#, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr ""
-"îÅ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ ÂÉÌÅÔ Kerberos:\n"
-"%s"
-
-#: camel/camel-sasl-kerberos4.c:218
-#: camel/providers/imap/camel-imap-store.c:431
-msgid "Bad authentication response from server."
-msgstr "ïÔÒÉÃÁÔÅÌØÎÙÊ ÏÔ×ÅÔ ÉÄÅÎÔÉÆÉËÁÃÉÉ ÏÔ ÓÅÒ×ÅÒÁ."
-
-#: camel/camel-sasl-login.c:32
-msgid "NT Login"
-msgstr ""
-
-#: camel/camel-sasl-login.c:34 camel/camel-sasl-plain.c:34
-msgid "This option will connect to the server using a simple password."
-msgstr ""
-"ðÏÄËÌÀÞÅÎÉÅ Ë ÓÅÒ×ÅÒÕ ÂÕÄÅÔ ÐÒÏÉÚ×ÏÄÉÔØÓÑ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÎÅÚÁÛÉÆÒÏ×ÁÎÎÏÇÏ "
-"ÐÁÒÏÌÑ."
-
-#: camel/camel-sasl-login.c:127
-msgid "Unknown authentication state."
-msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÓÏÓÔÏÉÎÉÅ ÉÄÅÎÔÉÆÉËÁÃÉÉ."
-
-#: camel/camel-search-private.c:111
-#, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr "óÂÏÊ ËÏÍÐÉÌÑÃÉÉ ÒÅÇÕÌÑÒÎÏÇÏ ×ÙÒÁÖÅÎÉÑ: %s: %s"
-
-#: camel/camel-service.c:154
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr "URL \"%s\" ÎÕÖÄÁÅÔÓÑ × ËÏÍÐÏÎÅÎÔÅ ÉÍÅÎÉ ÐÏÌØÚÏ×ÁÔÅÌÑ"
-
-#: camel/camel-service.c:162
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr "URL \\\"%s\\\" ÎÕÖÄÁÅÔÓÑ × ËÏÍÐÏÎÅÎÔÅ ÈÏÓÔÁ"
-
-#: camel/camel-service.c:170
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr "URL \\\"%s\\\" ÎÕÖÄÁÅÔÓÑ × ËÏÍÐÏÎÅÎÔÅ ÐÕÔÉ"
-
-#: camel/camel-service.c:548
-#, c-format
-msgid "Resolving: %s"
-msgstr "òÁÓÐÏÚÎÁ×ÁÎÉÅ: %s"
-
-#: camel/camel-service.c:575
-#, c-format
-msgid "Failure in name lookup: %s"
-msgstr "ïÛÉÂËÁ × ÒÁÚÒÅÛÅÎÉÉ ÉÍÅÎÉ: %s"
-
-#: camel/camel-service.c:600
-#, c-format
-msgid "Host lookup failed: %s: host not found"
-msgstr "óÂÏÊ ÐÏÉÓËÁ ÈÏÓÔÁ: %s: ÈÏÓÔ ÎÅ ÎÁÊÄÅÎ"
-
-#: camel/camel-service.c:602
-#, c-format
-msgid "Host lookup failed: %s: unknown reason"
-msgstr "óÂÏÊ ÐÏÉÓËÁ ÈÏÓÔÁ: %s: ÐÒÉÞÉÎÁ ÎÅÉÚ×ÅÓÔÎÁ"
-
-#: camel/camel-session.c:68
-msgid "Virtual folder email provider"
-msgstr "ðÒÏ×ÁÊÄÅÒ ×ÉÒÔÕÁÌØÎÙÈ ÐÁÐÏË ÜÌÅËÔÒÏÎÎÏÊ ÐÏÞÔÙ"
-
-#: camel/camel-session.c:70
-msgid "For reading mail as a query of another set of folders"
-msgstr "äÌÑ ÞÔÅÎÉÑ ÐÏÞÔÙ ÐÏ ÚÁÐÒÏÓÕ Ë ÄÒÕÇÏÍÕ ÎÁÂÏÒÕ ÐÁÐÏË"
-
-#: camel/camel-session.c:294 camel/camel-session.c:363
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr "ðÒÏ×ÁÊÄÅÒ ÄÌÑ ÐÒÏÔÏËÏÌÁ \"%s\" ÎÅ ÄÏÓÔÕÐÅÎ"
-
-#: camel/camel-session.c:478
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ËÁÔÁÌÏÇ %s:\n"
-"%s"
-
-#. Fill in the new fields
-#: camel/camel-store.c:378 mail/mail-ops.c:1007 mail/mail-ops.c:1014
-#: mail/mail-ops.c:1032 mail/mail-ops.c:1033
-msgid "Trash"
-msgstr "íÕÓÏÒÎÁÑ ËÏÒÚÉÎÁ"
-
-#: camel/camel-tcp-stream-ssl.c:348
-#, c-format
-msgid ""
-"EMail: %s\n"
-"Common Name: %s\n"
-"Organization Unit: %s\n"
-"Organization: %s\n"
-"Locality: %s\n"
-"State: %s\n"
-"Country: %s"
-msgstr ""
-"üÌ.ÁÄÒÅÓ: %s\n"
-"éÍÑ: %s\n"
-"ðÏÄÒÁÚÄÅÌÅÎÉÅ: %s\n"
-"ïÒÇÁÎÉÚÁÃÉÑ: %s\n"
-"òÁÓÐÏÌÏÖÅÎÉÅ: %s\n"
-"ïÂÌÁÓÔØ: %s\n"
-"óÔÒÁÎÁ: %s"
-
-#. construct our user prompt
-#: camel/camel-tcp-stream-ssl.c:364
-#, c-format
-msgid ""
-"Bad certificate from %s:\n"
-"\n"
-"%s\n"
-"\n"
-"Do you wish to accept anyway?"
-msgstr ""
-"ðÌÏÈÏÊ ÓÅÒÔÉÆÉËÁÔ ÏÔ %s:\n"
-"\n"
-"%s\n"
-"\n"
-"÷Ó£ ÒÁ×ÎÏ ÐÒÉÎÑÔØ?"
-
-#: camel/camel-url.c:289
-#, c-format
-msgid "Could not parse URL `%s'"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÒÏÁÎÁÌÉÚÉÒÏ×ÁÔØ URL \"%s\""
-
-#: camel/camel-vee-folder.c:451
-#, c-format
-msgid "No such message %s in %s"
-msgstr "îÅÔ ÓÏÏÂÝÅÎÉÑ %s × %s"
-
-#: camel/camel-vee-folder.c:546
-#, c-format
-msgid "No such message: %s"
-msgstr "îÅÔ ÔÁËÏÇÏ ÓÏÏÂÝÅÎÉÑ: %s"
-
-#: camel/camel-vtrash-folder.c:109
-msgid "You cannot copy messages from this trash folder."
-msgstr "÷Ù ÎÅ ÍÏÖÅÔÅ ÓËÏÐÉÒÏ×ÁÔØ ÓÏÏÂÝÅÎÉÑ ÉÚ ÜÔÏÊ ÐÁÐËÉ ÄÌÑ ÍÕÓÏÒÁ."
-
-#: camel/providers/imap/camel-imap-message-cache.c:150
-#, c-format
-msgid "Could not open cache directory: %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ËÁÔÁÌÏÇ ËÜÛ: %s"
-
-#: camel/providers/imap/camel-imap-command.c:232
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "îÅÏÖÉÄÁÎÎÙÊ ÏÔ×ÅÔ ÏÔ ÓÅÒ×ÅÒÁ IMAP: %s"
-
-#: camel/providers/imap/camel-imap-command.c:240
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr "óÂÏÊ ËÏÍÁÎÄÙ IMAP: %s"
-
-#: camel/providers/imap/camel-imap-command.c:241 shell/e-storage.c:481
-msgid "Unknown error"
-msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ"
-
-#: camel/providers/imap/camel-imap-command.c:295
-msgid "Server response ended too soon."
-msgstr "ïÔ×ÅÔ ÓÅÒ×ÅÒÁ ÚÁËÏÎÞÉÌÓÑ ÓÌÉÛËÏÍ ÒÁÎÏ."
-
-#: camel/providers/imap/camel-imap-command.c:487
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr "ïÔ×ÅÔ IMAP ÓÅÒ×ÅÒÁ ÎÅ ÓÏÄÅÒÖÉÔ ÉÎÆÏÒÍÁÃÉÉ Ï %s"
-
-#: camel/providers/imap/camel-imap-command.c:524
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr "îÅÏÖÉÄÁÎÎÙÊ ÏÔ×ÅÔ \"OK\" ÏÔ IMAP ÓÅÒ×ÅÒÁ: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:170
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ËÁÔÁÌÏÇ %s: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:189
-#, c-format
-msgid "Could not load summary for %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÚÁÇÒÕÚÉÔØ ÉÔÏÇ ÄÌÑ %s"
-
-#: camel/providers/imap/camel-imap-folder.c:362
-msgid "Scanning IMAP folder"
-msgstr "óËÁÎÉÒÏ×ÁÎÉÅ ÐÁÐÏË IMAP"
-
-#: camel/providers/imap/camel-imap-folder.c:1043
-#: camel/providers/imap/camel-imap-folder.c:1265
-msgid "This message is not currently available"
-msgstr "üÔÏ ÓÏÏÂÝÅÎÉÅ × ÎÁÓÔÏÑÝÉÊ ÍÏÍÅÎÔ ÎÅ ÄÏÓÔÕÐÎÏ"
-
-#: camel/providers/imap/camel-imap-folder.c:1071
-#: camel/providers/imap/camel-imap-folder.c:1298
-msgid "Could not find message body in FETCH response."
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ ÔÅÌÏ ÓÏÏÂÝÅÎÉÑ × ÏÔ×ÅÔÅ FETCH."
-
-#: camel/providers/imap/camel-imap-provider.c:43 mail/mail-config.glade.h:11
-msgid "Checking for new mail"
-msgstr "ðÒÏ×ÅÒËÁ ÎÏ×ÏÅ ÐÏÞÔÙ"
-
-#: camel/providers/imap/camel-imap-provider.c:45
-msgid "Check for new messages in all folders"
-msgstr "ðÒÏ×ÅÒËÁ ÎÏ×ÏÊ ÐÏÞÔÙ ×Ï ×ÓÅÈ ÐÁÐËÁÈ"
-
-#: camel/providers/imap/camel-imap-provider.c:48 shell/e-shell-view.c:551
-msgid "Folders"
-msgstr "ðÁÐËÉ"
-
-#: camel/providers/imap/camel-imap-provider.c:50
-msgid "Show only subscribed folders"
-msgstr "ðÏËÁÚÙ×ÁÔØ ÔÏÌØËÏ ÚÁÐÒÏÛÅÎÎÙÅ ÐÁÐËÉ"
-
-#: camel/providers/imap/camel-imap-provider.c:52
-msgid "Override server-supplied folder namespace"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:54
-msgid "Namespace"
-msgstr "ðÒÏÓÔÒÁÎÓÔ×Ï ÉÍÅÎ"
-
-#: camel/providers/imap/camel-imap-provider.c:57
-msgid "Apply filters to new messages in INBOX on this server"
-msgstr ""
-"ðÒÉÍÅÎÉÔØ ÆÉÌØÔÒÙ ËÏ ×ÓÅÍ ÎÏ×ÙÍ ÓÏÏÂÝÅÎÉÑÍ × ÐÁÐËÅ \"÷ÈÏÄÑÝÉÅ\" (INBOX) ÎÁ "
-"ÜÔÏÍ ÓÅÒ×ÅÒÅ"
-
-#: camel/providers/imap/camel-imap-provider.c:63
-msgid "IMAPv4"
-msgstr "IMAPv4"
-
-#: camel/providers/imap/camel-imap-provider.c:65
-msgid "For reading and storing mail on IMAP servers."
-msgstr "äÌÑ ÞÔÅÎÉÑ É ÈÒÁÎÅÎÉÑ ÐÏÞÔÙ ÎÁ ÓÅÒ×ÅÒÁÈ IMAP."
-
-#: camel/providers/imap/camel-imap-provider.c:82
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr ""
-"ðÏÄËÌÀÞÅÎÉÅ Ë IMAP ÓÅÒ×ÅÒÕ ÂÕÄÅÔ ÐÒÏÉÚ×ÏÄÉÔØÓÑ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ "
-"ÎÅÚÁÛÉÆÒÏ×ÁÎÎÏÇÏ ÐÁÒÏÌÑ."
-
-#: camel/providers/imap/camel-imap-store.c:454
-#, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr "IMAP ÓÅÒ×ÅÒ %s ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÚÁÔÒÅÂÏ×ÁÎÎÙÊ ÔÉÐ ÉÄÅÎÔÉÆÉËÁÃÉÉ %s"
-
-#: camel/providers/imap/camel-imap-store.c:464
-#: camel/providers/smtp/camel-smtp-transport.c:366
-#, c-format
-msgid "No support for authentication type %s"
-msgstr "éÄÅÎÔÉÆÉËÁÃÉÑ ÔÉÐÁ %s ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
-
-#: camel/providers/imap/camel-imap-store.c:488
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr "%sðÏÖÁÌÕÊÓÔÁ, ××ÅÄÉÔÅ ÐÁÒÏÌØ IMAP ÄÌÑ %s@%s"
-
-#: camel/providers/imap/camel-imap-store.c:503
-#: camel/providers/smtp/camel-smtp-transport.c:410
-msgid "You didn't enter a password."
-msgstr "÷Ù ÎÅ ××ÅÌÉ ÐÁÒÏÌØ."
-
-#: camel/providers/imap/camel-imap-store.c:529
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"îÅ×ÏÚÍÏÖÎÏ ÉÄÅÎÔÉÆÉÃÉÒÏ×ÁÔØÓÑ ÎÁ ÓÅÒ×ÅÒÅ IMAP.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/imap/camel-imap-store.c:788 mail/mail-local.c:337
-#, c-format
-msgid "No such folder %s"
-msgstr "îÅÔ ÔÁËÏÊ ÐÁÐËÉ %s"
-
-#: camel/providers/local/camel-local-provider.c:39
-msgid "MH-format mail directories"
-msgstr "ðÏÞÔÏ×ÙÅ ËÁÔÁÌÏÇÉ × ÆÏÒÍÁÔÅ UNIX MH"
-
-#: camel/providers/local/camel-local-provider.c:40
-msgid "For storing local mail in MH-like mail directories"
-msgstr "äÌÑ ÈÒÁÎÅÎÉÑ ÌÏËÁÌØÎÏÊ ÐÏÞÔÙ × ÐÏÞÔÏ×ÙÈ ËÁÔÁÌÏÇÁÈ ÔÉÐÁ MH"
-
-#: camel/providers/local/camel-local-provider.c:49
-msgid "Standard Unix mailbox file"
-msgstr "óÔÁÎÄÁÒÔÎÙÊ ÆÁÊÌ Unix mailbox"
-
-#: camel/providers/local/camel-local-provider.c:50
-msgid "For storing local mail in standard mbox format"
-msgstr "äÌÑ ÈÒÁÎÅÎÉÑ ÌÏËÁÌØÎÏÊ ÐÏÞÔÙ × ÐÏÞÔÏ×ÙÈ ËÁÔÁÌÏÇÁÈ ÆÏÒÍÁÔÁ mbox"
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "Qmail maildir-format mail files"
-msgstr "ðÏÞÔÏ×ÙÅ ÆÁÊÌÙ × ÆÏÒÍÁÔÅ ÐÏÞÔÏ×ÙÈ ËÁÔÁÌÏÇÏ× qmail"
-
-#: camel/providers/local/camel-local-provider.c:60
-msgid "For storing local mail in qmail maildir directories"
-msgstr "äÌÑ ÈÒÁÎÅÎÉÑ ÌÏËÁÌØÎÏÊ ÐÏÞÔÙ × ÐÏÞÔÏ×ÙÈ ËÁÔÁÌÏÇÁÈ ÔÉÐÁ qmail"
-
-#: camel/providers/local/camel-local-store.c:127
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:134
-#, c-format
-msgid "Store root %s is not a regular directory"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:142
-#: camel/providers/local/camel-local-store.c:158
-#, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ ÐÁÐËÕ: %s: %s"
-
-#: camel/providers/local/camel-local-store.c:173
-msgid "Local stores do not have an inbox"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:183
-#, c-format
-msgid "Local mail file %s"
-msgstr "ìÏËÁÌØÎÙÊ ÐÏÞÔÏ×ÙÊ ÆÁÊÌ %s"
-
-#: camel/providers/local/camel-local-store.c:237
-#, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÐÅÒÅÉÍÅÎÏ×ÁÔØ ÐÁÐËÕ %s × %s: %s"
-
-#: camel/providers/local/camel-local-store.c:279
-#, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÕÄÁÌÉÔØ ÉÔÏÇÏ×ÙÊ ÆÁÊÌ ÐÁÐËÉ \"%s\": %s"
-
-#: camel/providers/local/camel-local-store.c:289
-#, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÕÄÁÌÉÔØ ÉÎÄÅËÓÎÙÊ ÆÁÊÌ ÐÁÐËÉ \"%s\": %s"
-
-#: camel/providers/local/camel-local-summary.c:404
-msgid "Unable to add message to summary: unknown reason"
-msgstr "îÅ ÕÄÁÌÏÓØ ÄÏÂÁ×ÉÔØ ÓÏÏÂÝÅÎÉÅ Ë ÉÔÏÇÕ: ÐÒÉÞÉÎÁ ÎÅÉÚ×ÅÓÔÎÁ"
-
-#: camel/providers/local/camel-maildir-folder.c:150
-#: camel/providers/local/camel-maildir-folder.c:158
-#: camel/providers/local/camel-maildir-folder.c:169
-#, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÄÏÂÁ×ÉÔØ ÓÏÏÂÝÅÎÉÅ Ë ÐÁÐËÅ ÐÏÞÔÏ×ÏÇÏ ËÁÔÁÌÏÇÁ: %s: %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-maildir-folder.c:209
-#: camel/providers/local/camel-maildir-folder.c:217
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#: camel/providers/local/camel-mh-folder.c:194
-#: camel/providers/local/camel-mh-folder.c:202
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-"îÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÓÏÏÂÝÅÎÉÅ: %s\n"
-" %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-msgid "No such message"
-msgstr "îÅÔ ÔÁËÏÇÏ ÓÏÏÂÝÅÎÉÑ"
-
-#: camel/providers/local/camel-maildir-folder.c:218
-#: camel/providers/local/camel-mh-folder.c:203
-msgid "Invalid message contents"
-msgstr "îÅÐÒÁ×ÉÌØÎÏÅ ÓÏÄÅÒÖÉÍÏÅ ÓÏÏÂÝÅÎÉÑ"
-
-#: camel/providers/local/camel-maildir-store.c:96
-#: camel/providers/local/camel-mh-store.c:90
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-"îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÐÁÐËÕ \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:100
-#: camel/providers/local/camel-mbox-store.c:101
-#: camel/providers/local/camel-mh-store.c:97
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr "ðÁÐËÁ \"%s\" ÎÅ ÓÕÝÅÓÔ×ÕÅÔ."
-
-#: camel/providers/local/camel-maildir-store.c:107
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-"îÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ÐÁÐËÕ \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:122
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr "\"%s\" ÎÅ Ñ×ÌÑÅÔÓÑ ÐÏÞÔÏ×ÙÍ ËÁÔÁÌÏÇÏÍ."
-
-#: camel/providers/local/camel-maildir-store.c:151
-#: camel/providers/local/camel-maildir-store.c:188
-#: camel/providers/local/camel-mh-store.c:127
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr ""
-"îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÐÁÐËÕ \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:152
-msgid "not a maildir directory"
-msgstr "ÎÅ Ñ×ÌÑÅÔÓÑ ÐÏÞÔÏ×ÙÍ ËÁÔÁÌÏÇ"
-
-#: camel/providers/local/camel-maildir-summary.c:405
-#: camel/providers/local/camel-maildir-summary.c:526
-#, fuzzy, c-format
-msgid "Cannot open maildir directory path: %s: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ÐÏÞÔÏ×ÙÊ ÑÝÉË: %s: %s\n"
-
-#: camel/providers/local/camel-mbox-folder.c:152
-#, fuzzy, c-format
-msgid "Cannot create folder lock on %s: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ ÐÁÐËÕ: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:203
-#, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr "îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ÐÏÞÔÏ×ÙÊ ÑÝÉË: %s: %s\n"
-
-#: camel/providers/local/camel-mbox-folder.c:259
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÒÉÓÏÅÄÉÎÉÔØ ÓÏÏÂÝÅÎÉÅ Ë ÆÁÊÌÕ mbox: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:335
-#: camel/providers/local/camel-mbox-folder.c:367
-#: camel/providers/local/camel-mbox-folder.c:380
-#, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-"îÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÓÏÏÂÝÅÎÉÅ: %s ÉÚ ÐÁÐËÉ %s\n"
-" %s"
-
-#: camel/providers/local/camel-mbox-folder.c:368
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr "÷ÉÄÉÍÏ ÐÁÐËÁ ÎÅ×ÏÓÔÁÎÏ×ÉÍÏ ÉÓÐÏÒÞÅÎÁ."
-
-#: camel/providers/local/camel-mbox-folder.c:381
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr "óÂÏÊ × ËÏÎÓÔÒÕËÃÉÉ ÓÏÏÂÝÅÎÉÑ: ÐÏÞÔÏ×ÙÊ ÑÝÉË ÐÏ×ÒÅÖÄÅÎ?"
-
-#: camel/providers/local/camel-mbox-store.c:94
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-"îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:110
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-"îÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ÆÁÊÌ \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:119
-#: camel/providers/local/camel-mbox-store.c:146
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr "%s ÎÅ Ñ×ÌÑÅÔÓÑ ÏÂÙÞÎÙÍ ÆÁÊÌÏÍ."
-
-#: camel/providers/local/camel-mbox-store.c:138
-#: camel/providers/local/camel-mbox-store.c:161
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-"îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÐÁÐËÕ \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr "ðÁÐËÁ \"%s\" ÎÅ ÐÕÓÔÁ. îÅ ÕÄÁÌÅÎÁ."
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:249
-msgid "Summarising folder"
-msgstr "óÕÍÍÁÒÉÚÁÃÉÑ ÐÁÐËÉ"
-
-#: camel/providers/local/camel-mbox-summary.c:254
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ÐÁÐËÕ: %s: ÉÔÏÇ Ó ÐÏÚÉÃÉÉ %ld: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:296
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr "æÁÔÁÌØÎÁÑ ÏÛÉÂËÁ ÐÏÞÔÏ×ÏÇÏ ÁÎÁÌÉÚÁÔÏÒÁ ×ÏÚÌÅ ÐÏÚÉÃÉÉ %ld × ÐÁÐËÅ %s"
-
-#: camel/providers/local/camel-mbox-summary.c:371
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÓÕÍÍÉÒÏ×ÁÔØ ÐÁÐËÕ: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:502
-#: camel/providers/local/camel-mbox-summary.c:703 mail/mail-ops.c:1397
-msgid "Synchronising folder"
-msgstr "óÉÎÈÒÏÎÉÚÁÃÉÑ ÐÁÐËÉ"
-
-#: camel/providers/local/camel-mbox-summary.c:507
-#: camel/providers/local/camel-mbox-summary.c:708
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ÐÁÐËÕ ÄÌÑ ÓÕÍÍÁÒÉÚÁÃÉÉ: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:524
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ×ÒÅÍÅÎÎÙÊ ÐÏÞÔÏ×ÙÊ ÑÝÉË: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:549
-#: camel/providers/local/camel-mbox-summary.c:557
-#: camel/providers/local/camel-mbox-summary.c:746
-#: camel/providers/local/camel-mbox-summary.c:754
-msgid "Summary and folder mismatch, even after a sync"
-msgstr "îÅÓÏ×ÐÁÄÅÎÉÅ ÐÁÐËÉ É ÉÔÏÇÁ, ÄÁÖÅ ÐÏÓÌÅ ÓÉÎÈÒÏÎÉÚÁÃÉÉ"
-
-#: camel/providers/local/camel-mbox-summary.c:600
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr "ïÛÉÂËÁ ÚÁÐÉÓÉ ×Ï ×ÒÅÍÅÎÎÙÊ ÐÏÞÔÏ×ÙÊ ÑÝÉË: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:617
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr "óÂÏÊ ÚÁÐÉÓÉ ×Ï ×ÒÅÍÅÎÎÙÊ ÐÏÞÔÏ×ÙÊ ÑÝÉË: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:635
-#: camel/providers/local/camel-mbox-summary.c:804
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÚÁËÒÙÔØ ÉÓÈÏÄÎÕÀ ÐÁÐËÕ %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:644
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÚÁËÒÙÔØ ×ÒÅÍÅÎÎÕÀ ÐÁÐËÕ: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:655
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÐÅÒÅÉÍÅÎÏ×ÁÔØ ÐÁÐËÕ: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:879
-#, c-format
-msgid "Unknown error: %s"
-msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ: %s"
-
-#: camel/providers/local/camel-mh-folder.c:149
-#: camel/providers/local/camel-mh-folder.c:157
-#, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÄÏÂÁ×ÉÔØ ÓÏÏÂÝÅÎÉÅ Ë ÐÁÐËÅ mh: %s: %s"
-
-#: camel/providers/local/camel-mh-store.c:110
-#, c-format
-msgid "`%s' is not a directory."
-msgstr "\"%s\" ÎÅ Ñ×ÌÑÅÔÓÑ ËÁÔÁÌÏÇÏÍ."
-
-#: camel/providers/local/camel-mh-summary.c:218
-#, fuzzy, c-format
-msgid "Cannot open MH directory path: %s: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ÐÏÞÔÏ×ÙÊ ÑÝÉË: %s: %s\n"
-
-#: camel/providers/nntp/camel-nntp-auth.c:45
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr "ðÏÖÁÌÕÊÓÔÁ, ××ÅÄÉÔÅ ÐÁÒÏÌØ NNTP ÄÌÑ %s@%s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:66
-msgid "Server rejected username"
-msgstr "óÅÒ×ÅÒ ÏÔÂÒÏÓÉÌ ÉÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ"
-
-#: camel/providers/nntp/camel-nntp-auth.c:72
-msgid "Failed to send username to server"
-msgstr "óÂÏÊ ÐÒÉ ÏÔÐÒÁ×ËÅ ÉÍÅÎÉ ÐÏÌØÚÏ×ÁÔÅÌÑ ÎÁ ÓÅÒ×ÅÒ"
-
-#: camel/providers/nntp/camel-nntp-auth.c:81
-msgid "Server rejected username/password"
-msgstr "óÅÒ×ÅÒ ÏÔÂÒÏÓÉÌ ÉÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ/ÐÁÒÏÌØ"
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr "óÏÏÂÝÅÎÉÅ %s ÎÅ ÎÁÊÄÅÎÏ."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr "îÅ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ Ó ÓÅÒ×ÅÒÁ ÓÐÉÓÏË ÇÒÕÐÐ."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÚÁÇÒÕÚÉÔØ ÆÁÊÌ ÓÐÉÓËÁ ÇÒÕÐÐ ÄÌÑ %s: %s"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÓÏÈÒÁÎÉÔØ ÆÁÊÌ ÓÐÉÓËÁ ÇÒÕÐÐ ÄÌÑ %s: %s"
-
-#: camel/providers/nntp/camel-nntp-provider.c:42
-msgid "USENET news"
-msgstr "îÏ×ÏÓÔÉ USENET"
-
-#: camel/providers/nntp/camel-nntp-provider.c:44
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr ""
-"üÔÏ ÐÒÏ×ÁÊÄÅÒ ÄÌÑ ÞÔÅÎÉÑ É ÏÔÐÒÁ×ËÉ ÓÏÏÂÝÅÎÉÊ × ÇÒÕÐÐÙ ÎÏ×ÏÓÔÅÊ USENET."
-
-#: camel/providers/nntp/camel-nntp-store.c:224
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ËÁÔÁÌÏÇ ÄÌÑ ÓÅÒ×ÅÒÁ ÎÏ×ÏÓÔÅÊ: %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:286
-#, c-format
-msgid "USENET News via %s"
-msgstr "îÏ×ÏÓÔÉ USENET ÞÅÒÅÚ %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:293
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-"ðÏÄËÌÀÞÅÎÉÅ Ë NNTP ÓÅÒ×ÅÒÕ ÂÕÄÅÔ ÐÒÏÉÚ×ÏÄÉÔØÓÑ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ "
-"ÎÅÚÁÛÉÆÒÏ×ÁÎÎÏÇÏ ÐÁÒÏÌÑ."
-
-#: camel/providers/nntp/camel-nntp-store.c:325
-#: camel/providers/nntp/camel-nntp-store.c:488
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ÉÌÉ ÓÏÚÄÁÔØ ÆÁÊÌ .newsrc ÄÌÑ %s: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-msgid "Retrieving POP summary"
-msgstr "ðÏÌÕÞÅÎÉÅ ÉÔÏÇÁ POP"
-
-#: camel/providers/pop3/camel-pop3-folder.c:155
-#, c-format
-msgid "Could not check POP server for new messages: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÐÒÏ×ÅÒÉÔØ ÎÁÌÉÞÉÅ ÎÏ×ÙÈ ÓÏÏÂÝÅÎÉÊ ÎÁ POP ÓÅÒ×ÅÒÅ: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:199
-msgid "Could not open folder: message listing was incomplete."
-msgstr "îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ÐÁÐËÕ: ÓÐÉÓÏË ÓÏÏÂÝÅÎÉÊ ÂÙÌ ÎÅÐÏÌÏÎ."
-
-#: camel/providers/pop3/camel-pop3-folder.c:292
-#, c-format
-msgid "No message with uid %s"
-msgstr "îÅÔ ÓÏÏÂÝÅÎÉÑ Ó uid %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:296
-#, c-format
-msgid "Retrieving POP message %d"
-msgstr "ðÏÌÕÞÅÎÉÅ ÓÏÏÂÝÅÎÉÑ %d ÐÏ POP"
-
-#: camel/providers/pop3/camel-pop3-folder.c:303
-#, c-format
-msgid "Could not fetch message: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ ÓÏÏÂÝÅÎÉÅ: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:320
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ ÓÏÏÂÝÅÎÉÅ Ó POP ÓÅÒ×ÅÒÁ %s: %s"
-
-#: camel/providers/pop3/camel-pop3-provider.c:37
-msgid "Message storage"
-msgstr "èÒÁÎÉÌÉÝÅ ÓÏÏÂÝÅÎÉÊ"
-
-#: camel/providers/pop3/camel-pop3-provider.c:39
-msgid "Leave messages on server"
-msgstr "óÏÈÒÁÎÑÔØ ÓÏÏÂÝÅÎÉÑ ÎÁ ÓÅÒ×ÅÒÅ"
-
-#: camel/providers/pop3/camel-pop3-provider.c:41
-#, c-format
-msgid "Delete after %s day(s)"
-msgstr "õÄÁÌÑÔØ ÞÅÒÅÚ %s ÄÎÅÊ"
-
-#: camel/providers/pop3/camel-pop3-provider.c:48 mail/mail-config.glade.h:42
-msgid "POP"
-msgstr "POP"
-
-#: camel/providers/pop3/camel-pop3-provider.c:50
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-"äÌÑ ÐÏÄËÌÀÞÅÎÉÑ Ë POP ÓÅÒ×ÅÒÁÍ. POP ÐÒÏÔÏËÏÌ ÍÏÖÅÔ ÂÙÔØ ÔÁËÖÅ ÉÓÐÏÌØÚÏ×ÁÎ "
-"ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÐÏÞÔÙ ÏÔ ÏÂÙÞÎÙÈ ÐÒÏ×ÁÊÄÅÒÏ× Web-ÐÏÞÔÙ É ÓÐÅÃÉÆÉÞÅÓËÉÈ ÓÉÓÔÅÍ "
-"ÜÌÅËÔÒÏÎÎÏÊ ÐÏÞÔÙ."
-
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-"ðÏÄËÌÀÞÅÎÉÅ Ë POP ÓÅÒ×ÅÒÕ ÂÕÄÅÔ ÐÒÏÉÚ×ÏÄÉÔØÓÑ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ "
-"ÎÅÚÁÛÉÆÒÏ×ÁÎÎÏÇÏ ÐÁÒÏÌÑ. âÏÌØÛÉÎÓÔ×ÏÍ POP ÓÅÒ×ÅÒÏ× ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÔÏÌØËÏ "
-"ÜÔÏÔ ×ÁÒÉÁÎÔ."
-
-#: camel/providers/pop3/camel-pop3-provider.c:79
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-"ðÏÄËÌÀÞÅÎÉÅ Ë POP ÓÅÒ×ÅÒÕ ÂÕÄÅÔ ÐÒÏÉÚ×ÏÄÉÔØÓÑ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÛÉÆÒÏ×ÁÎÎÏÇÏ "
-"ÐÁÒÏÌÑ ÐÏ ÐÒÏÔÏËÏÌÕ APOP. üÔÏ ÍÏÖÅÔ ÒÁÂÏÔÁÔØ ÎÅ ÄÌÑ ×ÓÅÈ ÐÏÌØÚÏ×ÁÔÅÌÅÊ ÄÁÖÅ "
-"ÎÁ ÓÅÒ×ÅÒÁÈ, ËÏÔÏÒÙÅ ÑËÏÂÙ ÐÏÄÄÅÒÖÉ×ÁÀÔ ÜÔÏ."
-
-#: camel/providers/pop3/camel-pop3-provider.c:91
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-"ðÏÄËÌÀÞÅÎÉÅ Ë POP ÓÅÒ×ÅÒÕ ÂÕÄÅÔ ÐÒÏÉÚ×ÏÄÉÔØÓÑ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ Kerberos 4 "
-"ÄÌÑ ÉÄÅÎÔÉÆÉËÁÃÉÉ."
-
-#: camel/providers/pop3/camel-pop3-store.c:199
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÉÄÅÎÔÉÆÉÃÉÒÏ×ÁÔØÓÑ ÎÁ KPOP ÓÅÒ×ÅÒÅ: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:215
-#, c-format
-msgid "Could not connect to server: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÐÏÄËÌÀÞÉÔØÓÑ Ë ÓÅÒ×ÅÒÕ: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:322
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr "îÅ ÕÄÁÌÏÓØ ÐÏÄËÌÀÞÉÔØÓÑ Ë POP ÓÅÒ×ÅÒÕ ÎÁ %s."
-
-#: camel/providers/pop3/camel-pop3-store.c:361
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr "%sðÏÖÁÌÕÊÓÔÁ, ××ÅÄÉÔÅ POP3 ÐÁÒÏÌØ ÄÌÑ %s@%s"
-
-#: camel/providers/pop3/camel-pop3-store.c:379
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-"îÅ ÕÄÁÌÏÓØ ÐÏÄËÌÀÞÉÔØÓÑ Ë POP ÓÅÒ×ÅÒÕ.\n"
-"ïÛÉÂËÁ ÏÔÐÒÁ×ËÉ ÉÍÅÎÉ ÐÏÌØÚÏ×ÁÔÅÌÑ: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:382
-#: camel/providers/pop3/camel-pop3-store.c:419
-msgid "(Unknown)"
-msgstr "(îÅÉÚ×ÅÓÔÎÏÅ)"
-
-#: camel/providers/pop3/camel-pop3-store.c:409
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-"îÅ ÕÄÁÌÏÓØ ÐÏÄËÌÀÞÉÔØÓÑ Ë POP ÓÅÒ×ÅÒÕ.\n"
-"îÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÚÁÔÒÅÂÏ×ÁÎÎÙÊ ÍÅÈÁÎÉÚÍ ÉÄÅÎÔÉÆÉËÁÃÉÉ."
-
-#: camel/providers/pop3/camel-pop3-store.c:417
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-"îÅ ÕÄÁÌÏÓØ ÐÏÄËÌÀÞÉÔØÓÑ Ë POP ÓÅÒ×ÅÒÕ.\n"
-"ïÛÉÂËÁ ÏÔÐÒÁ×ËÉ ÐÁÒÏÌÑ: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:484
-#, c-format
-msgid "No such folder `%s'."
-msgstr "îÅÔ ÔÁËÏÊ ÐÁÐËÉ \"%s\""
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:37
-#: mail/mail-config.glade.h:57
-msgid "Sendmail"
-msgstr "Sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:39
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-"äÌÑ ÄÏÓÔÁ×ËÉ ÐÏÞÔÙ ÐÅÒÅÄÁÞÅÊ Å£ ÐÒÏÇÒÁÍÍÅ \"Sendmail\" ÎÁ ÌÏËÁÌØÎÏÊ ÓÉÓÔÅÍÅ."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:107
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr "îÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ËÁÎÁÌ Ë Sendmail: %s: ÐÏÞÔÁ ÎÅ ÏÔÐÒÁ×ÌÅÎÁ"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:124
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr "îÅ ÕÄÁÌÏÓØ ÒÁÚ×ÅÔ×ÉÔØ Sendmail: %s: ÐÏÞÔÁ ÎÅ ÏÔÐÒÁ×ÌÅÎÁ"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:150
-#, c-format
-msgid "Could not send message: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÏÔÐÒÁ×ÉÔØ ÓÏÏÂÝÅÎÉÅ: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:163
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr "Sendmail ÚÁ×ÅÒÛÉÌÁ ÒÁÂÏÔÕ Ó ÓÉÇÎÁÌÏÍ %s: ÐÏÞÔÁ ÎÅ ÏÔÐÒÁ×ÌÅÎÁ."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:170
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr "îÅ ÕÄÁÌÏÓØ ×ÙÐÏÌÎÉÔØ %s: ÐÏÞÔÁ ÎÅ ÏÔÐÒÁ×ÌÅÎÁ."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:175
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr "Sendmail ÚÁ×ÅÒÛÉÌÁ ÒÁÂÏÔÕ Ó ÓÏÓÔÏÑÎÉÅÍ %d: ÐÏÞÔÁ ÎÅ ÏÔÐÒÁ×ÌÅÎÁ."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:194
-msgid "Could not find 'From' address in message"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ ÁÄÒÅÓ \"ïÔ\" × ÓÏÏÂÝÅÎÉÉ"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "sendmail"
-msgstr "sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:249
-msgid "Mail delivery via the sendmail program"
-msgstr "äÏÓÔÁ×ËÁ ÐÏÞÔÙ ÞÅÒÅÚ ÐÒÏÇÒÁÍÍÕ sendmail"
-
-#: camel/providers/smtp/camel-smtp-provider.c:38 mail/mail-config.glade.h:52
-msgid "SMTP"
-msgstr "SMTP"
-
-#: camel/providers/smtp/camel-smtp-provider.c:40
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr ""
-"äÌÑ ÄÏÓÔÁ×ËÉ ÐÏÞÔÙ Ó ÐÏÍÏÝØÀ ÐÏÄËÌÀÞÅÎÉÑ Ë ÕÄÁÌÅÎÎÏÍÕ ÐÏÞÔÏ×ÏÍÕ ÕÚÌÕ ÐÏ "
-"ÐÒÏÔÏËÏÌÕ SMTP.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:168
-msgid "Syntax error, command unrecognized"
-msgstr "óÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ, ËÏÍÁÎÄÁ ÎÅ ÒÁÓÐÏÚÎÁÎÁ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:170
-msgid "Syntax error in parameters or arguments"
-msgstr "óÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ × ÐÁÒÁÍÅÔÒÁÈ ÉÌÉ ÁÒÇÕÍÅÎÔÁÈ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:172
-msgid "Command not implemented"
-msgstr "ëÏÍÁÎÄÁ ÎÅ ÒÅÁÌÉÚÏ×ÁÎÁ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:174
-msgid "Command parameter not implemented"
-msgstr "ðÁÒÁÍÅÔÒ ËÏÍÁÎÄÙ ÎÅ ÒÅÁÌÉÚÏ×ÁÎ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:176
-msgid "System status, or system help reply"
-msgstr "óÏÓÔÏÑÎÉÅ ÓÉÓÔÅÍÙ ÉÌÉ ÏÔ×ÅÔ ÓÐÒÁ×ËÉ ÓÉÓÔÅÍÙ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:178
-msgid "Help message"
-msgstr "óÐÒÁ×ÏÞÎÏÅ ÓÏÏÂÝÅÎÉÅ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:180
-msgid "Service ready"
-msgstr "óÅÒ×ÉÓ ÇÏÔÏ×"
-
-#: camel/providers/smtp/camel-smtp-transport.c:182
-msgid "Service closing transmission channel"
-msgstr "óÅÒ×ÉÓ ÚÁËÒÙ×ÁÅÔ ËÁÎÁÌ ÐÅÒÅÄÁÞÉ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:184
-msgid "Service not available, closing transmission channel"
-msgstr "óÅÒ×ÉÓ ÎÅ ÄÏÓÔÕÐÅÎ, ÚÁËÒÙÔÉÅ ËÁÎÁÌÁ ÐÅÒÅÄÁÞÉ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:186
-msgid "Requested mail action okay, completed"
-msgstr "úÁÐÒÏÛÅÎÎÏÅ ÐÏÞÔÏ×ÏÅ ÄÅÊÓÔ×ÉÅ ×ÙÐÏÌÎÅÎÏ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:188
-msgid "User not local; will forward to <forward-path>"
-msgstr "îÅ ÌÏËÁÌØÎÙÊ ÐÏÌØÚÏ×ÁÔÅÌØ; ÂÕÄÅÔ ÏÔÐÒÁ×ÌÅÎÏ Ë <ÐÕÔØ-ÏÔÐÒÁ×ËÉ>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:190
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr "úÁÐÒÏÛÅÎÎÏÅ ÄÅÊÓÔ×ÉÅ Ó ÐÏÞÔÏÊ ÎÅ ×ÙÐÏÌÎÅÎÏ: ÐÏÞÔÏ×ÙÊ ÑÝÉË ÎÅ ÄÏÓÔÕÐÅÎ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:192
-msgid "Requested action not taken: mailbox unavailable"
-msgstr "úÁÐÒÏÛÅÎÎÏÅ ÄÅÊÓÔ×ÉÅ ÎÅ ×ÙÐÏÌÎÅÎÏ: ÐÏÞÔÏ×ÙÊ ÑÝÉË ÎÅ ÄÏÓÔÕÐÅÎ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:194
-msgid "Requested action aborted: error in processing"
-msgstr "úÁÐÒÏÛÅÎÎÏÅ ÄÅÊÓÔ×ÉÅ ÏÔÍÅÎÅÎÏ: ÏÛÉÂËÁ ÐÒÉ ÏÂÒÁÂÏÔËÅ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:196
-msgid "User not local; please try <forward-path>"
-msgstr "ðÏÌØÚÏ×ÁÔÅÌØ ÎÅ ÌÏËÁÌØÎÙÊ; ÐÏÖÁÌÕÊÓÔÁ ÐÏÐÒÏÂÕÊÔÅ <ÐÕÔØ-ÐÅÒÅÓÙÌËÉ>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:198
-msgid "Requested action not taken: insufficient system storage"
-msgstr "úÁÐÒÏÛÅÎÎÏÅ ÄÅÊÓÔ×ÉÅ ÎÅ ×ÙÐÏÌÎÅÎÏ: ÎÅÄÏÓÔÁÔÏÞÎÏ ÓÉÓÔÅÍÎÏÇÏ ÈÒÁÎÉÌÉÝÁ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:200
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:202
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr ""
-"úÁÐÒÏÛÅÎÎÏÅ ÄÅÊÓÔ×ÉÅ ÎÅ ×ÙÐÏÌÎÅÎÏ: ÎÁÚ×ÁÎÉÅ ÐÏÞÔÏ×ÏÇÏ ÑÝÉËÁ ÎÅÄÏÐÕÓÔÉÍÏ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:204
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr "îÁÞÁÌÏ ××ÏÄÁ ÐÏÞÔÙ; ÏËÏÎÞÁÎÉÅ ÐÏÓÌÅ <CRLF>.<CRLF>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:206
-msgid "Transaction failed"
-msgstr "óÂÏÊ ÔÒÁÎÚÁËÃÉÉ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:210
-msgid "A password transition is needed"
-msgstr "îÅÏÂÈÏÄÉÍÁ ÐÅÒÅÄÁÞÁ ÐÁÒÏÌÑ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:212
-msgid "Authentication mechanism is too weak"
-msgstr "óÌÉÛËÏÍ ÓÌÁÂÙÊ ÍÅÈÁÎÉÚÍ ÉÄÅÎÔÉÆÉËÁÃÉÉ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:214
-msgid "Encryption required for requested authentication mechanism"
-msgstr "äÌÑ ÚÁÐÒÏÛÅÎÎÏÇÏ ÍÅÈÁÎÉÚÍÁ ÉÄÅÎÔÉÆÉËÁÃÉÉ ÔÒÅÂÕÅÔÓÑ ÛÉÆÒÏ×ÁÎÉÅ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:216
-msgid "Temporary authentication failure"
-msgstr "÷ÒÅÍÅÎÎÙÊ ÓÂÏÊ ÉÄÅÎÔÉÆÉËÁÃÉÉ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:218
-msgid "Authentication required"
-msgstr "éÄÅÎÔÉÆÉËÁÃÉÑ ÔÒÅÂÕÅÔÓÑ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:313
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:356
-#, c-format
-msgid "SMTP server %s does not support requested authentication type %s"
-msgstr "SMTP ÓÅÒ×ÅÒ %s ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÚÁÔÒÅÂÏ×ÁÎÎÙÊ ÔÉÐ ÉÄÅÎÔÉÆÉËÁÃÉÉ %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:395
-#, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr "%sðÏÖÁÌÕÊÓÔÁ, ××ÅÄÉÔÅ ÐÁÒÏÌØ SMTP ÄÌÑ %s@%s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:418
-#, c-format
-msgid ""
-"Unable to authenticate to SMTP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"îÅ×ÏÚÍÏÖÎÏ ÉÄÅÎÔÉÆÉÃÉÒÏ×ÁÔØÓÑ ÎÁ ÓÅÒ×ÅÒÅ SMTP.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:534
-#, c-format
-msgid "SMTP server %s"
-msgstr "SMTP ÓÅÒ×ÅÒ %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:536
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr "äÏÓÔÁ×ËÁ SMTP ÐÏÞÔÙ ÞÅÒÅÚ %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:561
-msgid "Cannot send message: sender address not defined."
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔÐÒÁ×ÉÔØ ÓÏÏÂÝÅÎÉÅ: ÎÅ ÏÐÒÅÄÅÌÅÎ ÁÄÒÅÓ ÏÔÐÒÁ×ÉÔÅÌÑ."
-
-#: camel/providers/smtp/camel-smtp-transport.c:568
-msgid "Cannot send message: sender address not valid."
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔÐÒÁ×ÉÔØ ÓÏÏÂÝÅÎÉÅ: ÎÅÐÒÁ×ÉÌØÎÙÊ ÁÄÒÅÓ ÏÔÐÒÁ×ÉÔÅÌÑ."
-
-#: camel/providers/smtp/camel-smtp-transport.c:582
-msgid "Cannot send message: no recipients defined."
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔÐÒÁ×ÉÔØ ÓÏÏÂÝÅÎÉÅ: ÎÅ ÏÐÒÅÄÅÌÅÎÙ ÐÏÌÕÞÁÔÅÌÉ."
-
-#: camel/providers/smtp/camel-smtp-transport.c:676
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr "ðÒÅ×ÙÛÅÎÏ ×ÒÅÍÑ ÏÖÉÄÁÎÉÑ ÏÔ×ÅÔÁ ÎÁ HELO: %s: ÎÅ ÆÁÔÁÌØÎÏ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:695
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr "ïÛÉÂËÁ ÏÔ×ÅÔÁ HELO: %s: ÎÅ ÆÁÔÁÌØÎÏ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:728
-msgid "Error creating SASL authentication object."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:743
-#: camel/providers/smtp/camel-smtp-transport.c:755
-#, c-format
-msgid "AUTH request timed out: %s"
-msgstr "ðÒÅ×ÙÛÅÎÏ ×ÒÅÍÑ ÏÖÉÄÁÎÉÑ ÏÔ×ÅÔÁ ÎÁ ÚÁÐÒÏÓ AUTH: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:805
-msgid "Bad authentication response from server.\n"
-msgstr "ïÔÒÉÃÁÔÅÌØÎÙÊ ÏÔ×ÅÔ ÉÄÅÎÔÉÆÉËÁÃÉÉ ÏÔ ÓÅÒ×ÅÒÁ.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:831
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr "ðÒÅ×ÙÛÅÎÏ ×ÒÅÍÑ ÏÖÉÄÁÎÉÑ ÏÔ×ÅÔÁ ÎÁ MAIL FROM: %s: ÐÏÞÔÁ ÎÅ ÏÔÐÒÁ×ÌÅÎÁ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:850
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr "ïÛÉÂËÁ ÏÔ×ÅÔÁ MAIL FROM: %s: ÐÏÞÔÁ ÎÅ ÏÔÐÒÁ×ÌÅÎÁ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:875
-#, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr "ðÒÅ×ÙÛÅÎÏ ×ÒÅÍÑ ÏÖÉÄÁÎÉÑ ÏÔ×ÅÔÁ ÎÁ RCPT TO: %s: ÐÏÞÔÁ ÎÅ ÏÔÐÒÁ×ÌÅÎÁ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:894
-#, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr "ïÛÉÂËÁ ÏÔ×ÅÔÁ RCPT TO: %s: ÐÏÞÔÁ ÎÅ ÏÔÐÒÁ×ÌÅÎÁ."
-
-#: camel/providers/smtp/camel-smtp-transport.c:925
-#, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr "ðÒÅ×ÙÛÅÎÏ ×ÒÅÍÑ ÏÖÉÄÁÎÉÑ ÏÔ×ÅÔÁ ÎÁ DATA: %s: ÐÏÞÔÁ ÎÅ ÏÔÐÒÁ×ÌÅÎÁ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:944
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr "ïÛÉÂËÁ ÏÔ×ÅÔÁ DATA: %s: ÐÏÞÔÁ ÎÅ ÏÔÐÒÁ×ÌÅÎÁ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:959
-#: camel/providers/smtp/camel-smtp-transport.c:977
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr ""
-"ðÒÅ×ÙÛÅÎÏ ×ÒÅÍÑ ÏÔÐÒÁ×ËÉ DATA: ÓÏÏÂÝÅÎÉÅ ÐÒÅÒ×ÁÎÏ: %s: ÐÏÞÔÁ ÎÅ ÏÔÐÒÁ×ÌÅÎÁ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:996
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr "ïÛÉÂËÁ ÏÔ×ÅÔÁ DATA: ÓÏÏÂÝÅÎÉÅ ÐÒÅÒ×ÁÎÏ: %s: ÐÏÞÔÁ ÎÅ ÏÔÐÒÁ×ÌÅÎÁ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1020
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr "ðÒÅ×ÙÛÅÎÏ ×ÒÅÍÑ ÏÖÉÄÁÎÉÑ ÏÔ×ÅÔÁ ÎÁ RSET: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1039
-#, c-format
-msgid "RSET response error: %s"
-msgstr "ïÛÉÂËÁ ÏÔ×ÅÔÁ RSET: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1062
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr "ðÒÅ×ÙÛÅÎÏ ×ÒÅÍÑ ÏÖÉÄÁÎÉÑ ÏÔ×ÅÔÁ ÎÁ QUIT: %s: ÎÅ ÆÁÔÁÌØÎÏ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1081
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr "ïÛÉÂËÁ ÏÔ×ÅÔÁ QUIT: %s: ÎÅ ÆÁÔÁÌØÎÏ"
-
-#: composer/e-msg-composer-attachment-bar.c:95
-msgid "1 byte"
-msgstr "1 ÂÁÊÔ"
-
-#: composer/e-msg-composer-attachment-bar.c:97
-#, c-format
-msgid "%u bytes"
-msgstr "%u ÂÁÊÔ"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fë"
-
-#: composer/e-msg-composer-attachment-bar.c:108
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fM"
-
-#: composer/e-msg-composer-attachment-bar.c:112
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fG"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:332 mail/mail-display.c:120
-msgid "attachment"
-msgstr "×ÌÏÖÅÎÉÅ"
-
-#: composer/e-msg-composer-attachment-bar.c:421
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr "ðÒÉÓÏÅÄÉÎÉÔØ ÆÁÊÌ"
-
-#: composer/e-msg-composer-attachment-bar.c:469
-msgid "Remove selected items from the attachment list"
-msgstr "õÄÁÌÉÔØ ×ÙÂÒÁÎÎÙÅ ÜÌÅÍÅÎÔÙ ÉÚ ÓÐÉÓËÁ ×ÌÏÖÅÎÉÊ"
-
-#: composer/e-msg-composer-attachment-bar.c:500
-msgid "Add attachment..."
-msgstr "äÏÂÁ×ÉÔØ ×ÌÏÖÅÎÉÅ..."
-
-#: composer/e-msg-composer-attachment-bar.c:501
-msgid "Attach a file to the message"
-msgstr "ðÒÉÓÏÅÄÉÎÉÔØ ÆÁÊÌ Ë ÓÏÏÂÝÅÎÉÀ"
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/message-list.c:1086
-msgid "Attachment"
-msgstr "÷ÌÏÖÅÎÉÅ"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr "ó×ÏÊÓÔ×Á ×ÌÏÖÅÎÉÑ"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr "éÍÑ ÆÁÊÌÁ:"
-
-#: composer/e-msg-composer-attachment.glade.h:5
-msgid "Inline attachment"
-msgstr "÷ÓÔÒÏÅÎÎÏÅ ×ÌÏÖÅÎÉÅ"
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr "ôÉÐ MIME:"
-
-#: composer/e-msg-composer-attachment.glade.h:7
-msgid "Send as:"
-msgstr "ïÔÐÒÁ×ÉÔØ ËÁË:"
-
-#: composer/e-msg-composer.c:529
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-"îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ ÐÏÄÐÉÓÉ %s:\n"
-"%s"
-
-#: composer/e-msg-composer.c:702
-msgid "Save as..."
-msgstr "óÏÈÒÁÎÉÔØ ËÁË..."
-
-#: composer/e-msg-composer.c:713
-#, c-format
-msgid "Error saving file: %s"
-msgstr "ïÛÉÂËÁ ÓÏÈÒÁÎÅÎÉÑ ÆÁÊÌÁ: %s"
-
-#: composer/e-msg-composer.c:733
-#, c-format
-msgid "Error loading file: %s"
-msgstr "ïÛÉÂËÁ ÐÒÉ ÚÁÇÒÕÚËÅ ÆÁÊÌÁ: %s"
-
-#: composer/e-msg-composer.c:805
-msgid ""
-"Unable to open the drafts folder for this account.\n"
-"Would you like to use the default drafts folder?"
-msgstr ""
-"îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ÐÁÐËÕ ÞÅÒÎÏ×ÉËÏ× ÄÌÑ ÜÔÏÇÏ ÓÞ£ÔÁ.\n"
-"èÏÔÉÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÁÐËÕ ÞÅÒÎÏ×ÉËÏ× ÐÏ ÕÍÏÌÞÁÎÉÀ?"
-
-#: composer/e-msg-composer.c:863 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:206
-msgid "Evolution"
-msgstr "Evolution"
-
-#: composer/e-msg-composer.c:869
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-"üÔÏ ÓÏÏÂÝÅÎÉÅ ÎÅ ÂÙÌÏ ÏÔÐÒÁ×ÌÅÎÏ.\n"
-"\n"
-"÷Ù ÈÏÔÉÔÅ ÓÏÈÒÁÎÉÔØ ÉÚÍÅÎÅÎÉÑ?"
-
-#: composer/e-msg-composer.c:894
-msgid "Open file"
-msgstr "ïÔËÒÙÔØ ÆÁÊÌ"
-
-#: composer/e-msg-composer.c:1020
-msgid "That file does not exist."
-msgstr "üÔÏÔ ÆÁÊÌ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ."
-
-#: composer/e-msg-composer.c:1030
-msgid "That is not a regular file."
-msgstr "üÔÏ ÎÅ ÏÂÙÞÎÙÊ ÆÁÊÌ."
-
-#: composer/e-msg-composer.c:1040
-msgid "That file exists but is not readable."
-msgstr "üÔÏÔ ÆÁÊÌ ÓÕÝÅÓÔ×ÕÅÔ, ÎÏ ÎÅ ÞÉÔÁÅÔÓÑ."
-
-#: composer/e-msg-composer.c:1050
-msgid "That file appeared accesible but open(2) failed."
-msgstr "æÁÊÌ ×ÙÇÌÑÄÉÔ ÄÏÓÔÕÐÎÙÍ, ÎÏ ÐÒÏÉÚÏÛÅÌ ÓÂÏÊ open(2)."
-
-#: composer/e-msg-composer.c:1072
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-"æÁÊÌ ÏÞÅÎØ ÂÏÌØÛÏÊ (ÂÏÌØÛÅ 100ë).\n"
-"÷Ù Õ×ÅÒÅÎÙ, ÞÔÏ ÈÏÔÉÔÅ ×ÓÔÁ×ÉÔØ ÅÇÏ?"
-
-#: composer/e-msg-composer.c:1093
-msgid "An error occurred while reading the file."
-msgstr "ðÒÉ ÞÔÅÎÉÉ ÆÁÊÌÁ ×ÏÚÎÉËÌÁ ÏÛÉÂËÁ."
-
-#: composer/e-msg-composer.c:1394 composer/e-msg-composer.c:1737
-msgid "Compose a message"
-msgstr "óÏÚÄÁÔØ ÓÏÏÂÝÅÎÉÅ"
-
-#: composer/e-msg-composer.c:1828
-msgid "Could not create composer window."
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÏËÎÏ ÒÅÄÁËÔÏÒÁ."
-
-#: composer/e-msg-composer-hdrs.c:323
-msgid "Click here for the address book"
-msgstr "ýÅÌËÎÉÔÅ ÚÄÅÓØ ÄÌÑ ÁÄÒÅÓÎÏÊ ËÎÉÇÉ"
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:354 mail/mail-format.c:744
-msgid "From:"
-msgstr "ïÔ:"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:360 mail/mail-format.c:746
-msgid "Reply-To:"
-msgstr "ïÔ×ÅÔÉÔØ:"
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:371 mail/mail-format.c:643
-msgid "Subject:"
-msgstr "ôÅÍÁ:"
-
-#: composer/e-msg-composer-hdrs.c:385 mail/mail-format.c:748
-msgid "To:"
-msgstr "ëÏÍÕ:"
-
-#: composer/e-msg-composer-hdrs.c:386
-msgid "Enter the recipients of the message"
-msgstr "÷×ÅÄÉÔÅ ÐÏÌÕÞÁÔÅÌÅÊ ÓÏÏÂÝÅÎÉÑ"
-
-#: composer/e-msg-composer-hdrs.c:389 mail/mail-format.c:750
-msgid "Cc:"
-msgstr "ëÏÐÉÑ:"
-
-#: composer/e-msg-composer-hdrs.c:390
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "÷×ÅÄÉÔÅ ÁÄÒÅÓÁÔÏ×, ËÏÔÏÒÙÅ ÐÏÌÕÞÁÔ ËÏÐÉÀ ÓÏÏÂÝÅÎÉÑ"
-
-#: composer/e-msg-composer-hdrs.c:393
-msgid "Bcc:"
-msgstr "óËÒ.ËÏÐÉÑ:"
-
-#: composer/e-msg-composer-hdrs.c:394
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"÷×ÅÄÉÔÅ ÁÄÒÅÓÁÔÏ×, ËÏÔÏÒÙÅ ÐÏÌÕÞÁÔ ËÏÐÉÀ ÓÏÏÂÝÅÎÉÑ ÎÅ ÐÏÐÁ× × ÓÐÉÓÏË "
-"ÐÏÌÕÞÁÔÅÌÅÊ."
-
-#: composer/evolution-composer.c:355
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-"îÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ÏËÎÏ ÒÅÄÁËÔÏÒÁ, ÐÏÔÏÍÕ ÞÔÏ ×Ù ÅÝÅ ÎÅ ÎÁÓÔÒÏÊÌÉ\n"
-"ÎÉ ÏÄÎÏÊ ÌÉÞÎÏÓÔÉ × ÐÏÞÔÏ×ÏÍ ËÏÍÐÏÎÅÎÔÅ."
-
-#: composer/evolution-composer.c:370
-msgid "Cannot initialize Evolution's composer."
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÒÅÄÁËÔÏÒ ÐÏÞÔÙ Evolution."
-
-#: data/evolution.desktop.in.h:2
-msgid "The Evolution groupware suite"
-msgstr "îÁÂÏÒ ÐÒÉÌÏÖÅÎÉÊ ÇÒÕÐÐÏ×ÏÊ ÒÁÂÏÔÙ Evolution"
-
-#: data/evolution.keys.in.h:1
-msgid "address card"
-msgstr "×ÉÚÉÔÎÁÑ ËÁÒÔÏÞËÁ"
-
-#: data/evolution.keys.in.h:2
-msgid "calendar information"
-msgstr "ÉÎÆÏÒÍÁÃÉÑ ËÁÌÅÎÄÁÒÑ"
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:69 e-util/e-time-utils.c:117
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:477
-#: widgets/misc/e-dateedit.c:1284 widgets/misc/e-dateedit.c:1465
-msgid "%m/%d/%Y"
-msgstr "%m/%d/%Y"
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:87 e-util/e-time-utils.c:198
-msgid "%I:%M:%S %p%n"
-msgstr "%I:%M:%S %p%n"
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:90 e-util/e-time-utils.c:201
-msgid "%H:%M:%S%n"
-msgstr "%H:%M:%S%n"
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:94 e-util/e-time-utils.c:205
-msgid "%I:%M %p%n"
-msgstr "%I:%M %p%n"
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:97 e-util/e-time-utils.c:208
-msgid "%H:%M%n"
-msgstr "%H:%M%n"
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:269
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:473
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2505
-msgid "%a %m/%d/%Y"
-msgstr "%a %m/%d/%Y"
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:274
-msgid "%a %m/%d/%Y %H:%M"
-msgstr "%a %m/%d/%Y %H:%M"
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:283
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr "%a %m/%d/%Y %I:%M %p"
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:312 widgets/misc/e-dateedit.c:1259
-#: widgets/misc/e-dateedit.c:1318 widgets/misc/e-dateedit.c:1497
-msgid "%H:%M"
-msgstr "%H:%M"
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:315
-msgid "%H:%M:%S"
-msgstr "%H:%M:%S"
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:320 widgets/misc/e-dateedit.c:1262
-#: widgets/misc/e-dateedit.c:1321 widgets/misc/e-dateedit.c:1500
-msgid "%I:%M %p"
-msgstr "%I:%M %p"
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:323
-msgid "%I:%M:%S %p"
-msgstr "%I:%M:%S %p"
-
-#: executive-summary/component/component-factory.c:152
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr ""
-"îÅ×ÏÚÍÏÖÎÏ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ËÏÍÐÏÎÅÎÔ Executive Summary ÐÒÏÇÒÁÍÍÙ Evolution."
-
-#: executive-summary/component/e-summary.c:926
-#, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ HTML ÆÁÊÌ:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:940
-#, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr ""
-"ïÛÉÂËÁ ÐÒÉ ÞÔÅÎÉÉ ÄÁÎÎÙÈ:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:958
-msgid "File does not have a place for the services.\n"
-msgstr ""
-
-#: executive-summary/component/e-summary-callbacks.c:126
-msgid "Select a service"
-msgstr "÷ÙÂÒÁÔØ ÓÅÒ×ÉÓ"
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr "ïÔËÒÙÔØ %s Ó ÐÏÍÏÝØÀ ÐÏÄÈÏÄÑÝÅÇÏ ÐÒÉÌÏÖÅÎÉÑ GNOME"
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr "ïÔËÒÙÔØ %s Ó ÐÏÍÏÝØÀ ÐÒÏÇÒÁÍÍÙ ÐÒÏÓÍÏÔÒÁ web ÄÌÑ GNOME"
-
-#: executive-summary/component/e-summary-url.c:71
-#, c-format
-msgid "Send an email to %s"
-msgstr "ïÔÐÒÁ×ÉÔØ ÐÏÞÔÕ %s"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr "éÚÍÅÎÉÔØ ×ÉÄ ÎÁ %s"
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr "úÁÐÕÓÔÉÔØ %s"
-
-#: executive-summary/component/e-summary-url.c:75
-#, c-format
-msgid "Close %s"
-msgstr "úÁËÒÙÔØ %s"
-
-#: executive-summary/component/e-summary-url.c:76
-#, c-format
-msgid "Move %s to the left"
-msgstr "ðÅÒÅÍÅÓÔÉÔØ %s ×ÌÅ×Ï"
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr "ðÅÒÅÍÅÓÔÉÔØ %s ×ÐÒÁ×Ï"
-
-#: executive-summary/component/e-summary-url.c:78
-#, c-format
-msgid "Move %s into the previous row"
-msgstr "ðÅÒÅÍÅÓÔÉÔØ %s × ÐÒÅÄÙÄÕÝÕÀ ÓÔÒÏËÕ"
-
-#: executive-summary/component/e-summary-url.c:79
-#, c-format
-msgid "Move %s into the next row"
-msgstr "ðÅÒÅÍÅÓÔÉÔØ %s × ÓÌÅÄÕÀÝÕÀ ÓÔÒÏËÕ"
-
-#: executive-summary/component/e-summary-url.c:80
-#, c-format
-msgid "Configure %s"
-msgstr "îÁÓÔÒÏÉÔØ %s"
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr "÷ÎÅÛÎÉÊ ×ÉÄ"
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr "æÏÎ:"
-
-#: executive-summary/component/main.c:62
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-msgid "Evolution component for the executive summary."
-msgstr "ëÏÍÐÏÎÅÎÔ Evolution ÄÌÑ Executive Summary."
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-msgid "Factory for the Evolution executive summary component."
-msgstr "æÁÂÒÉËÁ ÄÌÑ ËÏÍÐÏÎÅÎÔÁ Executive Summary ÐÒÏÇÒÁÍÍÙ Evolution."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr "æÁÂÒÉËÁ ÄÌÑ ÉÔÏÇÁ RDF."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-msgid "RDF Summary"
-msgstr "éÔÏÇ RDF"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-msgid "Factory for the test bonobo component."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-msgid "Factory for the test component."
-msgstr "æÁÂÒÉËÁ ÄÌÑ ÔÅÓÔÏ×ÏÇÏ ËÏÍÐÏÎÅÎÔÁ."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr "ðÒÏ×ÅÒÉÔØ ÓÅÒ×ÉÓ bonobo"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr "ðÒÏ×ÅÒÉÔØ ÓÅÒ×ÉÓ"
-
-#: executive-summary/test-service/rdf-summary.c:512
-#: executive-summary/test-service/rdf-summary.c:549
-#: executive-summary/test-service/rdf-summary.c:594
-#: widgets/misc/e-messagebox.c:166
-msgid "Error"
-msgstr "ïÛÉÂËÁ"
-
-#: executive-summary/test-service/rdf-summary.c:768
-msgid "Update automatically"
-msgstr "ïÂÎÏ×ÌÑÔØ Á×ÔÏÍÁÔÉÞÅÓËÉ"
-
-#: executive-summary/test-service/rdf-summary.c:778
-msgid "Update now"
-msgstr "ïÂÎÏ×ÉÔØ ÓÅÊÞÁÓ"
-
-#: executive-summary/test-service/rdf-summary.c:788
-msgid "Update every "
-msgstr "ïÂÎÏ×ÌÑÔØ ËÁÖÄÙÅ "
-
-#: executive-summary/test-service/rdf-summary.c:796
-#: filter/filter-datespec.c:83
-msgid "minutes"
-msgstr "ÍÉÎÕÔÙ"
-
-#: filter/filter-datespec.c:78
-msgid "year"
-msgstr "ÇÏÄ"
-
-#: filter/filter-datespec.c:78
-msgid "years"
-msgstr "ÇÏÄÙ"
-
-#: filter/filter-datespec.c:79
-msgid "month"
-msgstr "ÍÅÓÑÃ"
-
-#: filter/filter-datespec.c:79
-msgid "months"
-msgstr "ÍÅÓÑÃÙ"
-
-#: filter/filter-datespec.c:80
-msgid "week"
-msgstr "ÎÅÄÅÌÑ"
-
-#: filter/filter-datespec.c:80
-msgid "weeks"
-msgstr "ÎÅÄÅÌÉ"
-
-#: filter/filter-datespec.c:81
-msgid "days"
-msgstr "ÄÎÉ"
-
-#: filter/filter-datespec.c:82
-msgid "hour"
-msgstr "ÞÁÓ"
-
-#: filter/filter-datespec.c:82
-msgid "hours"
-msgstr "ÞÁÓÙ"
-
-#: filter/filter-datespec.c:83
-msgid "minute"
-msgstr "ÍÉÎÕÔÁ"
-
-#: filter/filter-datespec.c:84
-msgid "second"
-msgstr "ÓÅËÕÎÄÁ"
-
-#: filter/filter-datespec.c:84
-msgid "seconds"
-msgstr "ÓÅËÕÎÄÙ"
-
-#: filter/filter-datespec.c:199
-msgid "Oops. You have forgotten to choose a date."
-msgstr "ïÐ-ÌÑ! ÷Ù ÚÁÂÙÌÉ ×ÙÂÒÁÔØ ÄÁÔÕ."
-
-#: filter/filter-datespec.c:201
-msgid "Oops. You have chosen an invalid date."
-msgstr "ïÐ-ÌÑ! ÷Ù ×ÙÂÒÁÌÉ ÎÅÐÒÁ×ÉÌØÎÕÀ ÄÁÔÕ."
-
-#: filter/filter-datespec.c:276
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-"äÁÔÁ ÓÏÏÂÝÅÎÉÑ ÂÕÄÅÔ ÓÒÁ×ÎÉ×ÁÔØÓÑ ÌÉÂÏ\n"
-"ÓÏ ×ÒÅÍÅÎÅÍ ÚÁÐÕÓËÁ ÆÉÌØÔÒÁ, ÌÉÂÏ \n"
-"ÏÔËÒÙÔÉÑ ×ÉÒÔ.ÐÁÐËÉ."
-
-#: filter/filter-datespec.c:299
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-"äÁÔÁ ÓÏÏÂÝÅÎÉÑ ÂÕÄÅÔ ÓÒÁ×ÎÉ×ÁÔØÓÑ Ó ÄÁÔÏÊ,\n"
-"ËÏÔÏÒÕÀ ×Ù ÕËÁÚÁÌÉ ÚÄÅÓØ."
-
-#: filter/filter-datespec.c:339
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-"äÁÔÁ ÓÏÏÂÝÅÎÉÑ ÂÕÄÅÔ ÓÒÁ×ÎÉ×ÁÔØÓÑ ÓÏ\n"
-"×ÒÅÍÅÎÅÍ ÏÔÎÏÓÉÔÅÌØÎÏ ÚÁÐÕÓËÁ ÆÉÌØÔÒÁ;\n"
-"ÎÁÐÒÉÍÅÒ \"ÎÅÄÅÌÀ ÎÁÚÁÄ\"."
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:374
-msgid "the current time"
-msgstr "ÔÅËÕÝÅÅ ×ÒÅÍÑ"
-
-#: filter/filter-datespec.c:374
-msgid "a time you specify"
-msgstr "ÕËÁÚÁÎÎÏÅ ×ÁÍÉ ×ÒÅÍÑ"
-
-#: filter/filter-datespec.c:375
-msgid "a time relative to the current time"
-msgstr "×ÒÅÍÑ ÏÔÎÏÓÉÔÅÌØÎÏ ÔÅËÕÝÅÇÏ"
-
-#. The label
-#: filter/filter-datespec.c:433
-msgid "Compare against"
-msgstr "óÒÁ×ÎÉ×ÁÔØ Ó"
-
-#: filter/filter-datespec.c:550 filter/filter-datespec.c:710
-msgid "now"
-msgstr "ÓÅÊÞÁÓ"
-
-#: filter/filter-datespec.c:707
-msgid "<click here to select a date>"
-msgstr "<ÝÅÌËÎÉÔÅ ÚÄÅÓØ ÄÌÑ ×ÙÂÏÒÁ ÄÁÔÙ>"
-
-#: filter/filter-editor.c:132 filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr "ðÒÁ×ÉÌÁ ÆÉÌØÔÒÁ"
-
-#. and now for the action area
-#: filter/filter-filter.c:452
-msgid "Then"
-msgstr "ôÏÇÄÁ"
-
-#: filter/filter-filter.c:466
-msgid "Add action"
-msgstr "äÏÂÁ×ÉÔØ ÄÅÊÓÔ×ÉÅ"
-
-#: filter/filter-folder.c:147
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-"ïÐ-ÌÑ... ÷Ù ÚÁÂÙÌÉ ×ÙÂÒÁÔØ ÐÁÐËÕ.\n"
-"ðÏÖÁÌÕÊÓÔÁ, ×ÅÒÎÉÔÅÓØ É ÕËÁÖÉÔÅ ÐÒÁ×ÉÌØÎÕÀ ÐÁÐËÕ ÄÌÑ ÄÏÓÔÁ×ËÉ ÐÏÞÔÙ."
-
-#: filter/filter-folder.c:225 filter/vfolder-rule.c:285
-#: mail/mail-account-gui.c:682
-msgid "Select Folder"
-msgstr "÷ÙÂÒÁÔØ ÐÁÐËÕ"
-
-#: filter/filter-folder.c:250
-msgid "Enter folder URI"
-msgstr "÷×ÅÓÔÉ URI ÐÁÐËÉ"
-
-#: filter/filter-folder.c:296
-msgid "<click here to select a folder>"
-msgstr "<ÝÅÌËÎÉÔÅ ÚÄÅÓØ ÄÌÑ ×ÙÂÏÒÁ ÐÁÐËÉ>"
-
-#: filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr "ðÒÁ×ËÁ ÆÉÌØÔÒÏ×"
-
-#: filter/filter.glade.h:5
-msgid "Edit VFolders"
-msgstr "ðÒÁ×ËÁ ×ÉÒÔ.ÐÁÐÏË"
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr "÷ÈÏÄÑÝÉÅ"
-
-#: filter/filter.glade.h:8
-msgid "Outgoing"
-msgstr "éÓÈÏÄÑÝÉÅ"
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:130
-msgid "Virtual Folders"
-msgstr "÷ÉÒÔÕÁÌØÎÙÅ ÐÁÐËÉ"
-
-#: filter/filter.glade.h:11
-msgid "specific folders only"
-msgstr "ÔÏÌØËÏ ÕËÁÚÁÎÎÙÅ ÐÁÐËÉ"
-
-#: filter/filter.glade.h:12
-msgid "vFolder Sources"
-msgstr "éÓÔÏÞÎÉËÉ ×ÉÒÔ.ÐÁÐËÉ"
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr "ÓÏ ×ÓÅÍÉ ÁËÔÉ×ÎÙÍÉ ÕÄÁÌ£ÎÎÙÍÉ ÐÁÐËÁÍÉ"
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr "ÓÏ ×ÓÅÍÉ ÌÏËÁÌØÎÙÍÉ É ÁËÔÉ×ÎÙÍÉ ÕÄÁÌ£ÎÎÙÍÉ ÐÁÐËÁÍÉ"
-
-#: filter/filter.glade.h:15
-msgid "with all local folders"
-msgstr "ÓÏ ×ÓÅÍÉ ÌÏËÁÌØÎÙÍÉ ÐÁÐËÁÍÉ"
-
-#: filter/filter-input.c:193
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-"ïÛÉÂËÁ × ÒÅÇÕÌÑÒÎÏÍ ×ÙÒÁÖÅÎÉÉ \"%s\":\n"
-"%s"
-
-#: filter/filter-part.c:488
-msgid "Test"
-msgstr "ðÒÏ×ÅÒËÁ"
-
-#: filter/filter-rule.c:626
-msgid "Rule name: "
-msgstr "îÁÚ×ÁÎÉÅ ÆÉÌØÔÒÁ: "
-
-#: filter/filter-rule.c:630
-msgid "Untitled"
-msgstr "îÅÏÚÁÇÌÁ×ÌÅÎÎÏÅ"
-
-#: filter/filter-rule.c:646
-msgid "If"
-msgstr "åÓÌÉ"
-
-#: filter/filter-rule.c:664
-msgid "Execute actions"
-msgstr "÷ÙÐÏÌÎÉÔØ ÄÅÊÓÔ×ÉÑ"
-
-#: filter/filter-rule.c:668
-msgid "if all criteria are met"
-msgstr "ÅÓÌÉ ÕÄÏ×ÌÅÔ×ÏÒÑÅÔ ×ÓÅÍ ËÒÉÔÅÒÉÑÍ"
-
-#: filter/filter-rule.c:673
-msgid "if any criteria are met"
-msgstr "ÅÓÌÉ ÕÄÏ×ÌÅÔ×ÏÒÑÅÔ ÌÀÂÏÍÕ ÉÚ ËÒÉÔÅÒÉÅ×"
-
-#: filter/filter-rule.c:684
-msgid "Add criterion"
-msgstr "äÏÂÁ×ÉÔØ ËÒÉÔÅÒÉÊ"
-
-#: filter/filter-rule.c:770
-msgid "incoming"
-msgstr "×ÈÏÄÑÝÉÅ"
-
-#: filter/filter-rule.c:770
-msgid "outgoing"
-msgstr "ÉÓÈÏÄÑÝÉÅ"
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Colour"
-msgstr "ó×ÑÚÁÔØ Ã×ÅÔ"
-
-#: filter/libfilter-i18n.h:4
-msgid "Assign Score"
-msgstr "ó×ÑÚÁÔØ ÐÏÄÓÞÅÔ"
-
-#: filter/libfilter-i18n.h:5
-msgid "Attachments"
-msgstr "÷ÌÏÖÅÎÉÑ"
-
-#: filter/libfilter-i18n.h:7
-msgid "contains"
-msgstr "ÓÏÄÅÒÖÉÔ"
-
-#: filter/libfilter-i18n.h:8
-msgid "Copy to Folder"
-msgstr "óËÏÐÉÒÏ×ÁÔØ × ÐÁÐËÕ"
-
-#: filter/libfilter-i18n.h:9
-msgid "Date received"
-msgstr "äÁÔÁ ÐÏÌÕÞÅÎÉÑ"
-
-#: filter/libfilter-i18n.h:10
-msgid "Date sent"
-msgstr "äÁÔÁ ÏÔÐÒÁ×ËÉ"
-
-#: filter/libfilter-i18n.h:12
-msgid "Deleted"
-msgstr "õÄÁÌÅÎÎÏÅ"
-
-#: filter/libfilter-i18n.h:13
-msgid "does not contain"
-msgstr "ÎÅ ÓÏÄÅÒÖÉÔ"
-
-#: filter/libfilter-i18n.h:14
-msgid "does not end with"
-msgstr "ÎÅ ÚÁËÁÎÞÉ×ÁÅÔÓÑ ÎÁ"
-
-#: filter/libfilter-i18n.h:15
-msgid "does not exist"
-msgstr "ÎÅ ÓÕÝÅÓÔ×ÕÅÔ."
-
-#: filter/libfilter-i18n.h:16
-msgid "does not sound like"
-msgstr "Ú×ÕÞÉÔ ÎÅ ËÁË"
-
-#: filter/libfilter-i18n.h:17
-msgid "does not start with"
-msgstr "ÎÅ ÎÁÞÉÎÁÅÔÓÑ Ó"
-
-#: filter/libfilter-i18n.h:18
-msgid "Do Not Exist"
-msgstr "îÅ ÓÕÝÅÓÔ×ÕÅÔ"
-
-#: filter/libfilter-i18n.h:19
-msgid "Draft"
-msgstr "þÅÒÎÏ×ÉË"
-
-#: filter/libfilter-i18n.h:20
-msgid "ends with"
-msgstr "ÚÁËÁÎÞÉ×ÁÅÔÓÑ ÎÁ"
-
-#: filter/libfilter-i18n.h:21
-msgid "Exist"
-msgstr "óÕÝÅÓÔ×ÕÅÔ"
-
-#: filter/libfilter-i18n.h:22
-msgid "exists"
-msgstr "cÕÝÅÓÔ×ÕÀÔ"
-
-#: filter/libfilter-i18n.h:23
-msgid "Expression"
-msgstr "÷ÙÒÁÖÅÎÉÅ"
-
-#: filter/libfilter-i18n.h:24
-msgid "Forward to Address"
-msgstr "ðÅÒÅÓÌÁÔØ ÐÏ ÁÄÒÅÓÕ"
-
-#: filter/libfilter-i18n.h:25
-msgid "Important"
-msgstr "÷ÁÖÎÏÅ"
-
-#: filter/libfilter-i18n.h:26
-msgid "is"
-msgstr "Ñ×ÌÑÅÔÓÑ"
-
-#: filter/libfilter-i18n.h:27
-msgid "is greater than"
-msgstr "ÂÏÌØÛÅ ÞÅÍ"
-
-#: filter/libfilter-i18n.h:28
-msgid "is less than"
-msgstr "ÍÅÎØÛÅ ÞÅÍ"
-
-#: filter/libfilter-i18n.h:29
-msgid "is not"
-msgstr "ÎÅ Ñ×ÌÑÅÔÓÑ"
-
-#: filter/libfilter-i18n.h:30
-msgid "Mailing list"
-msgstr "óÐÉÓÏË ÒÁÓÓÙÌËÉ"
-
-#: filter/libfilter-i18n.h:31
-msgid "Message Body"
-msgstr "ôÅÌÏ ÓÏÏÂÝÅÎÉÑ"
-
-#: filter/libfilter-i18n.h:32
-msgid "Message Header"
-msgstr "úÁÇÏÌÏ×ÏË ÓÏÏÂÝÅÎÉÑ"
-
-#: filter/libfilter-i18n.h:33
-msgid "Message was received"
-msgstr "óÏÏÂÝÅÎÉÅ ÂÙÌÏ ÐÏÌÕÞÅÎÏ"
-
-#: filter/libfilter-i18n.h:34
-msgid "Message was sent"
-msgstr "óÏÏÂÝÅÎÉÅ ÂÙÌÏ ÏÔÐÒÁ×ÌÅÎÏ"
-
-#: filter/libfilter-i18n.h:35
-msgid "Move to Folder"
-msgstr "ðÅÒÅÍÅÓÔÉÔØ × ÐÁÐËÕ"
-
-#: filter/libfilter-i18n.h:36
-msgid "on or after"
-msgstr "ÎÁ ÉÌÉ ÐÏÓÌÅ"
-
-#: filter/libfilter-i18n.h:37
-msgid "on or before"
-msgstr "ÎÁ ÉÌÉ ÄÏ"
-
-#: filter/libfilter-i18n.h:38
-msgid "Read"
-msgstr "ðÒÏÞÉÔÁÎÎÏÅ"
-
-#: filter/libfilter-i18n.h:39
-msgid "Recipients"
-msgstr "ðÏÌÕÞÁÔÅÌÉ"
-
-#: filter/libfilter-i18n.h:40
-msgid "Regex Match"
-msgstr "óÏ×ÐÁÄÅÎÉÅ ÒÅÇ.×ÙÒÁÖÅÎÉÑ"
-
-#: filter/libfilter-i18n.h:41
-msgid "Replied to"
-msgstr "ïÔ×ÅÔÉÔØ"
-
-#: filter/libfilter-i18n.h:42 filter/score-rule.c:204 filter/score-rule.c:206
-#: mail/message-list.c:1086
-msgid "Score"
-msgstr "ðÏÄÓÞÅÔ"
-
-#: filter/libfilter-i18n.h:43
-msgid "Sender"
-msgstr "ïÔÐÒÁ×ÉÔÅÌØ"
-
-#: filter/libfilter-i18n.h:44
-msgid "Set Status"
-msgstr "õÓÔÁÎÏ×ÉÔØ ÓÏÓÔÏÑÎÉÅ"
-
-#: filter/libfilter-i18n.h:45
-msgid "sounds like"
-msgstr "Ú×ÕÞÉÔ ËÁË"
-
-#: filter/libfilter-i18n.h:46
-msgid "Source Account"
-msgstr "éÓÈÏÄÎÙÊ ÓÞÅÔ"
-
-#: filter/libfilter-i18n.h:47
-msgid "Specific header"
-msgstr "óÐÅÃÉÆÉÞÅÓËÉÊ ÚÁÇÏÌÏ×ÏË"
-
-#: filter/libfilter-i18n.h:48
-msgid "starts with"
-msgstr "ÎÁÞÉÎÁÅÔÓÑ Ó"
-
-#: filter/libfilter-i18n.h:50
-msgid "Stop Processing"
-msgstr "ïÓÔÁÎÏ×ÉÔØ ÏÂÒÁÂÏÔËÕ"
-
-#: filter/libfilter-i18n.h:51 mail/message-list.c:1087
-msgid "Subject"
-msgstr "ôÅÍÁ"
-
-#: filter/libfilter-i18n.h:52
-msgid "was after"
-msgstr "ÂÙÌÏ ÐÏÓÌÅ"
-
-#: filter/libfilter-i18n.h:53
-msgid "was before"
-msgstr "ÂÙÌÏ ÄÏ"
-
-#: filter/rule-editor.c:147
-msgid "Rules"
-msgstr "ðÒÁ×ÉÌÁ"
-
-#: filter/rule-editor.c:240
-msgid "Add Rule"
-msgstr "äÏÂÁ×ÉÔØ ÐÒÁ×ÉÌÏ"
-
-#: filter/rule-editor.c:299
-msgid "Edit Rule"
-msgstr "ðÒÁ×ËÁ ÐÒÁ×ÉÌÁ"
-
-#: filter/score-editor.c:130
-msgid "Score Rules"
-msgstr "ðÒÁ×ÉÌÁ ÐÏÄÓÞÅÔÁ"
-
-#: mail/component-factory.c:329
-msgid "Cannot initialize Evolution's mail component."
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÐÏÞÔÏ×ÙÊ ËÏÍÐÏÎÅÎÔ \"ü×ÏÌÀÃÉÉ\"."
-
-#: mail/component-factory.c:402
-msgid "Cannot register storage with shell"
-msgstr "îÅ ÕÄÁÌÏÓØ ÚÁÒÅÇÉÓÔÒÉÒÏ×ÁÔØ ÈÒÁÎÉÌÉÝÅ Ó ÐÏÍÏÝØÀ ÏÂÏÌÏÞËÉ"
-
-#: mail/folder-browser.c:268
-msgid "Store search as vFolder"
-msgstr "óÏÈÒÁÎÉÔØ ÒÅÚÕÌØÔÁÔÙ ÐÏÉÓËÁ × ×ÉÒÔÕÁÌØÎÏÊ ÐÁÐËÅ"
-
-#: mail/folder-browser.c:576 ui/evolution-mail.xml.h:91
-msgid "VFolder on _Subject"
-msgstr "÷ÉÒÔ.ÐÁÐËÁ ÐÏ ÔÅÍÅ"
-
-#: mail/folder-browser.c:579 ui/evolution-mail.xml.h:89
-msgid "VFolder on Se_nder"
-msgstr "÷ÉÒÔ.ÐÁÐËÁ ÐÏ ÏÔÐÒÁ×ÉÔÅÌÀ"
-
-#: mail/folder-browser.c:582 ui/evolution-mail.xml.h:90
-msgid "VFolder on _Recipients"
-msgstr "÷ÉÒÔ.ÐÁÐËÁ ÐÏ ÐÏÌÕÞÁÔÅÌÀ"
-
-#: mail/folder-browser.c:585 ui/evolution-mail.xml.h:88
-msgid "VFolder on Mailing _List"
-msgstr "÷ÉÒÔ.ÐÁÐËÁ ÐÏ ÓÐÉÓËÕ ÒÁÓÓÙÌËÉ"
-
-#: mail/folder-browser.c:591
-msgid "Filter on Sub_ject"
-msgstr "æÉÌØÔÒ ÐÏ ÔÅÍÅ"
-
-#: mail/folder-browser.c:594
-msgid "Filter on Sen_der"
-msgstr "æÉÌØÔÒ ÐÏ ÏÔÐÒÁ×ÉÔÅÌÀ"
-
-#: mail/folder-browser.c:597
-msgid "Filter on Re_cipients"
-msgstr "æÉÌØÔÒ ÐÏ ÐÏÌÕÞÁÔÅÌÑÍ"
-
-#: mail/folder-browser.c:600
-msgid "Filter on _Mailing List"
-msgstr "æÉÌØÔÒ ÐÏ ÓÐÉÓËÕ ÒÁÓÓÙÌËÉ"
-
-#: mail/folder-browser.c:609
-msgid "_Open"
-msgstr "ïÔËÒÙÔØ"
-
-#: mail/folder-browser.c:611
-msgid "Resend"
-msgstr "ðÅÒÅÐÏÓÌÁÔØ"
-
-#: mail/folder-browser.c:613 ui/evolution-calendar.xml.h:43
-#: ui/evolution-mail.xml.h:113 ui/evolution-tasks.xml.h:8
-msgid "_Save As..."
-msgstr "óÏÈÒÁÎÉÔØ ËÁË..."
-
-#: mail/folder-browser.c:615 ui/evolution-event-editor.xml.h:69
-#: ui/evolution-task-editor-dialog.xml.h:82 ui/evolution-tasks.xml.h:7
-msgid "_Print"
-msgstr "ðÅÞÁÔØ"
-
-#: mail/folder-browser.c:620
-msgid "_Reply to Sender"
-msgstr "ïÔ×ÅÔÉÔØ ÏÔÐÒÁ×ÉÔÅÌÀ"
-
-#: mail/folder-browser.c:622 ui/evolution-mail.xml.h:66
-msgid "Reply to _All"
-msgstr "ïÔ×ÅÔÉÔØ ×ÓÅÍ"
-
-#: mail/folder-browser.c:624 ui/evolution-mail.xml.h:102
-msgid "_Forward"
-msgstr "ðÅÒÅÓÌÁÔØ"
-
-#: mail/folder-browser.c:626
-msgid "Forward _inline"
-msgstr "ðÅÒÅÓÌÁÔØ ×ÓÔÒÏÅÎÎÏÅ"
-
-#: mail/folder-browser.c:629 ui/evolution-mail.xml.h:40
-msgid "Mar_k as Read"
-msgstr "ðÏÍÅÔÉÔØ ËÁË ÐÒÏÞÉÔÁÎÎÏÅ"
-
-#: mail/folder-browser.c:631 ui/evolution-mail.xml.h:44
-msgid "Mark as U_nread"
-msgstr "ðÏÍÅÔÉÔØ ËÁË ÎÅÐÒÏÞÔÅÎÎÏÅ"
-
-#: mail/folder-browser.c:636 ui/evolution-mail.xml.h:107
-msgid "_Move to Folder..."
-msgstr "ðÅÒÅÍÅÓÔÉÔØ × ÐÁÐËÕ..."
-
-#: mail/folder-browser.c:638 ui/evolution-mail.xml.h:96
-msgid "_Copy to Folder..."
-msgstr "óËÏÐÉÒÏ×ÁÔØ × ÐÁÐËÕ..."
-
-#: mail/folder-browser.c:642 ui/evolution-mail.xml.h:118
-msgid "_Undelete"
-msgstr "÷ÏÓÓÔÁÎÏ×ÉÔØ"
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:652 ui/evolution-mail.xml.h:1
-msgid "Apply Filters"
-msgstr "ðÒÉÍÅÎÉÔØ ÆÉÌØÔÒÙ"
-
-#: mail/folder-browser.c:656
-msgid "Create Ru_le From Message"
-msgstr "óÏÚÄÁÔØ ÐÒÁ×ÉÌÏ ÉÚ ÓÏÏÂÝÅÎÉÑ"
-
-#: mail/folder-browser.c:795
-msgid "Filter on Mailing List"
-msgstr "æÉÌØÔÒ ÐÏ ÓÐÉÓËÕ ÒÁÓÓÙÌËÉ"
-
-#: mail/folder-browser.c:796
-msgid "VFolder on Mailing List"
-msgstr "÷ÉÒÔ.ÐÁÐËÁ ÐÏ ÓÐÉÓËÕ ÒÁÓÓÙÌËÉ"
-
-#: mail/folder-browser.c:798
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr "æÉÌØÔÒ ÐÏ ÓÐÉÓËÕ ÒÁÓÓÙÌËÉ (%s)"
-
-#: mail/folder-browser.c:799
-#, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr "÷ÉÒÔ.ÐÁÐËÁ ÐÏ ÓÐÉÓËÕ ÒÁÓÓÙÌËÉ (%s)"
-
-#: mail/folder-browser-factory.c:213
-#, c-format
-msgid "Properties for \"%s\""
-msgstr "ó×ÏÊÓÔ×Á ÄÌÑ \"%s\""
-
-#: mail/folder-browser-factory.c:215 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-msgid "Properties"
-msgstr "ó×ÏÊÓÔ×Á"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr "ëÏÍÐÏÎÅÎÔ Evolution ÄÌÑ ÏÂÒÁÂÏÔËÉ ÐÏÞÔÙ."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-msgid "Evolution mail composer."
-msgstr "ëÏÍÐÏÎÅÎÔ ÒÅÄÁËÔÏÒÁ ÐÉÓÅÍ Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-msgid "Evolution mail executive summary component."
-msgstr "ëÏÍÐÏÎÅÎÔ Executive Summary ÐÒÏÇÒÁÍÍÙ Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-msgid "Evolution mail folder display component."
-msgstr "ëÏÍÐÏÎÅÎÔ ÏÔÏÂÒÁÖÅÎÉÑ ÐÏÞÔÏ×ÏÊ ÐÁÐËÉ Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-msgid "Evolution mail folder factory component."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-msgid "Factory for the Evolution composer."
-msgstr "æÁÂÒÉËÁ ÄÌÑ ÒÅÄÁËÔÏÒÁ ÐÏÞÔÙ Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-msgid "Factory for the Evolution mail component."
-msgstr "æÁÂÒÉËÁ ÄÌÑ ÐÏÞÔÏ×ÏÇÏ ËÏÍÐÏÎÅÎÔÁ Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-msgid "Factory for the Mail Summary component."
-msgstr ""
-
-#: mail/importers/elm-importer.c:420
-msgid ""
-"Evolution has found Elm mail files.\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-"Evolution ÎÁÛÌÁ ÐÏÞÔÏ×ÙÅ ÆÁÊÌÙ Elm.\n"
-"èÏÔÉÔÅ ÉÍÐÏÒÔÉÒÏ×ÁÔØ ÉÈ × Evolution?"
-
-#: mail/importers/elm-importer.c:430
-msgid "Elm mail"
-msgstr "ðÏÞÔÁ Elm"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:1
-msgid "Factory to import mbox into Evolution"
-msgstr "æÁÂÒÉËÁ ÄÌÑ ÉÍÐÏÒÔÁ ÆÁÊÌÏ× mbox × Evolution"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:2
-msgid "Imports mbox files into Evolution"
-msgstr "éÍÐÏÒÔÉÒÕÅÔ ÆÁÊÌÙ mbox × Evolution"
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:1
-msgid "Factory to import Outlook Express 4 mails into Evolution"
-msgstr "æÁÂÒÉËÁ ÄÌÑ ÉÍÐÏÒÔÁ ÆÁÊÌÏ× Outlook Express 4 × Evolution"
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:2
-msgid "Imports Outlook Express 4 files into Evolution"
-msgstr "éÍÐÏÒÔÉÒÕÅÔ ÆÁÊÌÙ Outlook Express 4 × Evolution"
-
-#: mail/importers/netscape-importer.c:440
-msgid ""
-"Evolution has found Netscape mail files.\n"
-"Would you like them to be imported into Evolution?"
-msgstr ""
-"Evolution ÎÁÛÌÁ ÐÏÞÔÏ×ÙÅ ÆÁÊÌÙ Netscape.\n"
-"èÏÔÉÔÅ ÉÍÐÏÒÔÉÒÏ×ÁÔØ ÉÈ × Evolution?"
-
-#: mail/importers/pine-importer.c:385
-msgid ""
-"Evolution has found Pine mail files.\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-"Evolution ÎÁÛÌÁ ÐÏÞÔÏ×ÙÅ ÆÁÊÌÙ Pine.\n"
-"èÏÔÉÔÅ ÉÍÐÏÒÔÉÒÏ×ÁÔØ ÉÈ × Evolution?"
-
-#: mail/importers/pine-importer.c:395
-msgid "Pine mail"
-msgstr "ðÏÞÔÁ Pine"
-
-#: mail/local-config.glade.h:1
-msgid "Current store format:"
-msgstr "ôÅËÕÝÉÊ ÆÏÒÍÁÔ ÈÒÁÎÅÎÉÑ:"
-
-#: mail/local-config.glade.h:2
-msgid "Mailbox Format"
-msgstr "æÏÒÍÁÔ ÐÏÞÔÏ×ÏÇÏ ÑÝÉËÁ"
-
-#: mail/local-config.glade.h:3
-msgid "New store format:"
-msgstr "îÏ×ÙÊ ÆÏÒÍÁÔ ÈÒÁÎÅÎÉÑ:"
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-"÷ÎÉÍÁÎÉÅ: ÐÒÉ ËÏÎ×ÅÒÔÉÒÏ×ÁÎÉÉ ÍÅÖÄÕ ÆÏÒÍÁÔÁÍÉ ÐÏÞÔÏ×ÙÈ ÑÝÉËÏ× ÓÂÏÊ\n"
-"(ÔÁËÏÊ ËÁË ÎÅÈ×ÁÔËÁ ÄÉÓËÏ×ÏÇÏ ÐÒÏÓÔÒÁÎÓÔ×Á) ÍÏÖÅÔ ÎÅ ÂÙÔØ Á×ÔÏÍÁÔÉÞÅÓËÉ\n"
-"×ÏÓÓÔÁÎÁ×ÌÉ×ÁÅÍÙÍ. éÓÐÏÌØÚÕÊÔÅ ÜÔÕ ×ÏÚÍÏÖÎÏÓÔØ Ó ÏÓÔÏÒÏÖÎÏÓÔØÀ."
-
-#: mail/local-config.glade.h:7
-msgid "maildir"
-msgstr "maildir"
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr "mbox"
-
-#: mail/local-config.glade.h:9
-msgid "mh"
-msgstr "mh"
-
-#: mail/mail-account-editor.c:105
-msgid "You have not filled in all of the required information."
-msgstr "÷Ù ÎÅ ××ÅÌÉ ×ÓÀ ÎÅÏÂÈÏÄÉÍÕÀ ÉÎÆÏÒÍÁÃÉÀ."
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:173
-msgid "Evolution Account Editor"
-msgstr "òÅÄÁËÔÏÒ ÓÞÅÔÏ× Evolution"
-
-#: mail/mail-accounts.c:121 mail/mail-accounts.c:165
-msgid " (default)"
-msgstr "(éÓÈ.ÚÎÁÞÅÎÉÑ)"
-
-#: mail/mail-accounts.c:197
-msgid "Disable"
-msgstr "ïÔËÌÀÞÉÔØ"
-
-#: mail/mail-accounts.c:199 mail/mail-config.glade.h:25
-msgid "Enable"
-msgstr "÷ËÌÀÞÉÔØ"
-
-#: mail/mail-accounts.c:280 mail/mail-accounts.c:284
-msgid "Are you sure you want to delete this account?"
-msgstr "÷Ù Õ×ÅÒÅÎÙ ÞÔÏ ÈÏÔÉÔÅ ÕÄÁÌÉÔØ ÜÔÏÔ ÓÞÅÔ?"
-
-#: mail/mail-accounts.c:418 mail/mail-accounts.c:422
-msgid "Are you sure you want to delete this news account?"
-msgstr "÷Ù Õ×ÅÒÅÎÙ ÞÔÏ ÈÏÔÉÔÅ ÕÄÁÌÉÔØ ÜÔÏÔ ÎÏ×ÙÊ ÓÞÅÔ?"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:536
-msgid "Evolution Account Manager"
-msgstr "äÉÓÐÅÔÞÅÒ ÓÞÅÔÏ× Evolution"
-
-#: mail/mail-autofilter.c:70
-#, c-format
-msgid "Mail to %s"
-msgstr "ðÏÞÔÁ ÄÌÑ %s"
-
-#: mail/mail-autofilter.c:213
-#, c-format
-msgid "Subject is %s"
-msgstr "ôÅÍÁ -- %s"
-
-#: mail/mail-autofilter.c:229
-#, c-format
-msgid "Mail from %s"
-msgstr "ðÏÞÔÁ ÏÔ %s"
-
-#: mail/mail-autofilter.c:285
-#, c-format
-msgid "%s mailing list"
-msgstr "%s ÓÐÉÓÏË ÒÁÓÓÙÌËÉ"
-
-#: mail/mail-autofilter.c:335 mail/mail-autofilter.c:356
-msgid "Add Filter Rule"
-msgstr "äÏÂÁ×ÉÔØ ÐÒÁ×ÉÌÏ ÆÉÌØÔÒÁ"
-
-#: mail/mail-callbacks.c:96
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-"÷Ù ÎÅ ÎÁÓÔÒÏÉÌÉ ÐÏÞÔÏ×ÙÊ ËÌÉÅÎÔ.\n"
-"÷ÁÍ ÎÁÄÏ ÓÄÅÌÁÔØ ÜÔÏ ÄÏ ÔÏÇÏ ËÁË ×Ù ÓÍÏÖÅÔÅ\n"
-"ÏÔÐÒÁ×ÌÑÔØ, ÐÒÉÎÉÍÁÔØ ÉÌÉ ÒÅÄÁËÔÉÒÏ×ÁÔØ ÐÏÞÔÕ.\n"
-"÷Ù ÈÏÔÉÔÅ ÎÁÓÔÒÏÉÔØ ÜÔÏ ÓÅÊÞÁÓ?"
-
-#: mail/mail-callbacks.c:149
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-"÷Ù ÄÏÌÖÎÙ ÎÁÓÔÒÏÉÔØ ÐÏÌØÚÏ×ÁÔÅÌÑ\n"
-"ÄÏ ÔÏÇÏ ËÁË ×Ù ÓÍÏÖÅÔÅ ÐÏÓÌÁÔØ ÐÏÞÔÕ."
-
-#: mail/mail-callbacks.c:161
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-"÷Ù ÄÏÌÖÎÙ ÎÁÓÔÒÏÉÔØ ÐÅÒÅÄÁÞÕ ÐÏÞÔÙ\n"
-"ÄÏ ÔÏÇÏ ËÁË ×Ù ÓÍÏÖÅÔÅ ÐÏÓÌÁÔØ ÐÏÞÔÕ."
-
-#: mail/mail-callbacks.c:205
-msgid "You have not set a mail transport method"
-msgstr "÷Ù ÎÅ ÕÓÔÁÎÏ×ÉÌÉ ÍÅÔÏÄ ÔÒÁÎÓÐÏÒÔÉÒÏ×ËÉ ÐÏÞÔÙ"
-
-#: mail/mail-callbacks.c:238
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-"üÔÏ ÓÏÏÂÝÅÎÉÅ ÎÅ ÉÍÅÅÔ ÔÅÍÙ.\n"
-"ðÏÓÌÁÔØ ÅÇÏ?"
-
-#: mail/mail-callbacks.c:311
-msgid "You must specify recipients in order to send this message."
-msgstr "÷Ù ÄÏÌÖÎÙ ÕËÁÚÁÔØ ÐÏÌÕÞÁÔÅÌÅÊ, ÞÔÏÂÙ ÏÔÐÒÁ×ÉÔØ ÜÔÏ ÓÏÏÂÝÅÎÉÅ."
-
-#: mail/mail-callbacks.c:354
-msgid "You must configure an account before you can send this email."
-msgstr "÷Ù ÄÏÌÖÎÙ ÎÁÓÔÒÏÉÔØ ÓÞÅÔ ÄÏ ÔÏÇÏ ËÁË ×Ù ÓÍÏÖÅÔÅ ÐÏÓÌÁÔØ ÐÏÞÔÕ."
-
-#: mail/mail-callbacks.c:593
-#, c-format
-msgid "On %s, %s wrote:"
-msgstr "%s, %s ÎÁÐÉÓÁÌ:"
-
-#: mail/mail-callbacks.c:774
-msgid "Forwarded message:\n"
-msgstr "ðÅÒÅÓÌÁÎÎÏÅ ÓÏÏÂÝÅÎÉÅ:\n"
-
-#: mail/mail-callbacks.c:877
-msgid "Move message(s) to"
-msgstr "ðÅÒÅÍÅÓÔÉÔØ ÓÏÏÂÝÅÎÉÅ ×"
-
-#: mail/mail-callbacks.c:879
-msgid "Copy message(s) to"
-msgstr "óËÏÐÉÒÏ×ÁÔØ ÓÏÏÂÝÅÎÉÑ ×"
-
-#: mail/mail-callbacks.c:1156
-#, c-format
-msgid "Are you sure you want to edit all %d messages?"
-msgstr "÷Ù Õ×ÅÒÅÎÙ ÞÔÏ ×Ù ÈÏÔÉÔÅ ÐÒÁ×ÉÔØ ×ÓÅ %d ÓÏÏÂÝÅÎÉÊ?"
-
-#: mail/mail-callbacks.c:1170
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-"÷Ù ÍÏÖÅÔÅ ÐÒÁ×ÉÔØ ÔÏÌØËÏ ÓÏÏÂÝÅÎÉÑ\n"
-"ÓÏÈÒÁÎÅÎÎÙÅ × ÐÁÐËÅ \"þÅÒÎÏ×ÉËÉ\"."
-
-#: mail/mail-callbacks.c:1202
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-"÷Ù ÍÏÖÅÔÅ ÔÏÌØËÏ ÐÅÒÅÐÏÓÌÁÔØ ÓÏÏÂÝÅÎÉÑ\n"
-"ÉÚ ÐÁÐËÉ \"ïÔÐÒÁ×ÌÅÎÎÙÅ\"."
-
-#: mail/mail-callbacks.c:1224
-msgid "No Message Selected"
-msgstr "óÏÏÂÝÅÎÉÅ ÎÅ ×ÙÂÒÁÎÏ"
-
-#: mail/mail-callbacks.c:1250 mail/mail-display.c:90
-msgid "Overwrite file?"
-msgstr "ðÅÒÅÐÉÓÁÔØ ÆÁÊÌ?"
-
-#: mail/mail-callbacks.c:1254 mail/mail-display.c:94
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-"æÁÊÌ Ó ÔÁËÉÍ ÎÁÚ×ÁÎÉÅÍ ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ.\n"
-"ðÅÒÅÐÉÓÁÔØ ÅÇÏ?"
-
-#: mail/mail-callbacks.c:1298
-msgid "Save Message As..."
-msgstr "óÏÈÒÁÎÉÔØ ÓÏÏÂÝÅÎÉÅ ËÁË..."
-
-#: mail/mail-callbacks.c:1300
-msgid "Save Messages As..."
-msgstr "óÏÈÒÁÎÉÔØ ÓÏÏÂÝÅÎÉÑ ËÁË..."
-
-#: mail/mail-callbacks.c:1435
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-"ïÛÉÂËÁ ÐÒÉ ÚÁÇÒÕÚËÅ ÉÎÆÏÒÍÁÃÉÉ ÆÉÌØÔÒÁ:\n"
-"%s"
-
-#: mail/mail-callbacks.c:1484 ui/evolution-mail.xml.h:56
-msgid "Print Message"
-msgstr "ðÅÞÁÔØ ÓÏÏÂÝÅÎÉÑ"
-
-#: mail/mail-callbacks.c:1531
-msgid "Printing of message failed"
-msgstr "óÂÏÊ ÐÅÞÁÔÉ ÓÏÏÂÝÅÎÉÑ"
-
-#: mail/mail-callbacks.c:1609
-#, c-format
-msgid "Are you sure you want to open all %d messages in separate windows?"
-msgstr "÷Ù Õ×ÅÒÅÎÙ ÞÔÏ ÈÏÔÉÔÅ ÏÔËÒÙÔØ ×ÓÅ %d ÓÏÏÂÝÅÎÉÊ × ÏÔÄÅÌØÎÙÈ ÏËÎÁÈ?"
-
-#: mail/mail-config.c:1121 mail/mail-config.c:1124
-msgid "Connecting to server..."
-msgstr "ðÏÄËÌÀÞÅÎÉÅ Ë ÓÅÒ×ÅÒÕ..."
-
-#: mail/mail-config-druid.c:99
-msgid ""
-"Please enter your name and email address below. The \"optional\" fields "
-"below do not need to be filled in, unless you wish to include this "
-"information in email you send."
-msgstr ""
-"ðÏÖÁÌÕÊÓÔÁ, ××ÅÄÉÔÅ ×ÁÛÅ ÉÍÑ É ÜÌ.ÁÄÒÅÓ ÎÉÖÅ. \"äÏÐÏÌÎÉÔÅÌØÎÙÅ\" ÐÏÌÑ ÎÅ "
-"ÏÂÑÚÁÔÅÌØÎÙ ÄÌÑ ÚÁÐÏÌÎÅÎÉÑ, ÅÓÌÉ ÔÏÌØËÏ ×Ù ÎÅ ÈÏÔÉÔÅ ×ËÌÀÞÁÔØ ÜÔÕ ÉÎÆÏÒÍÁÃÉÀ "
-"× ÏÔÐÒÁ×ÌÑÅÍÕÀ ×ÁÍÉ ÐÏÞÔÕ."
-
-#: mail/mail-config-druid.c:101
-msgid ""
-"Please enter information about your incoming mail server below. If you don't "
-"know what kind of server you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"ðÏÖÁÌÕÊÓÔÁ, ××ÅÄÉÔÅ ÎÉÖÅ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÁÛÅÍ ÓÅÒ×ÅÒÅ ×ÈÏÄÑÝÅÊ ÐÏÞÔÙ. åÓÌÉ ×Ù "
-"ÎÅ ÚÎÁÅÔÅ ËÁËÏÇÏ ÔÉÐÁ ÓÅÒ×ÅÒ ×Ù ÉÓÐÏÌØÚÕÅÔÅ, Ó×ÑÖÉÔÅÓØ Ó ×ÁÛÉÍ ÓÉÓÔÅÍÎÙÍ "
-"ÁÄÍÉÎÉÓÔÒÁÔÏÒÏÍ ÉÌÉ ÐÒÏ×ÁÊÄÅÒÏÍ ÕÓÌÕÇ éÎÔÅÒÎÅÔ."
-
-#: mail/mail-config-druid.c:105
-msgid ""
-"Please enter information about your outgoing mail protocol below. If you "
-"don't know which protocol you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"ðÏÖÁÌÕÊÓÔÁ, ××ÅÄÉÔÅ ÎÉÖÅ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÁÛÅÍ ÓÅÒ×ÅÒÅ ÉÓÈÏÄÑÝÅÊ ÐÏÞÔÙ. åÓÌÉ ×Ù "
-"ÎÅ ÚÎÁÅÔÅ ËÁËÏÊ ÐÒÏÔÏËÏÌ ×Ù ÉÓÐÏÌØÚÕÅÔÅ, Ó×ÑÖÉÔÅÓØ Ó ×ÁÛÉÍ ÓÉÓÔÅÍÎÙÍ "
-"ÁÄÍÉÎÉÓÔÒÁÔÏÒÏÍ ÉÌÉ ÐÒÏ×ÁÊÄÅÒÏÍ ÕÓÌÕÇ éÎÔÅÒÎÅÔ."
-
-#: mail/mail-config-druid.c:107
-msgid ""
-"You are almost done with the mail configuration process. The identity, "
-"incoming mail server and outgoing mail transport method which you provided "
-"will be grouped together to make an Evolution mail account. Please enter a "
-"name for this account in the space below. This name will be used for display "
-"purposes only."
-msgstr ""
-"÷Ù ÐÏÞÔÉ ÚÁËÏÎÞÉÌÉ ÐÒÏÃÅÓÓ ÎÁÓÔÒÏÊËÉ ÐÏÞÔÙ. îÁÉÍÅÎÏ×ÁÎÉÅ, ÓÅÒ×ÅÒ ×ÈÏÄÑÝÅÊ "
-"ÐÏÞÔÙ É ÍÅÔÏÄ ÐÅÒÅÄÁÞÉ ÉÓÈÏÄÑÝÅÊ ÐÏÞÔÙ, ËÏÔÏÒÙÅ ×Ù ÐÒÅÄÏÓÔÁ×ÉÌÉ ÂÕÄÕÔ "
-"ÏÂßÅÄÉÎÅÎÙ ÄÌÑ ÓÏÚÄÁÎÉÑ ÐÏÞÔÏ×ÏÇÏ ÓÞ£ÔÁ Evolution. ðÏÖÁÌÕÊÓÔÁ, ××ÅÄÉÔÅ "
-"ÎÁÚ×ÁÎÉÅ ÄÌÑ ÜÔÏÇÏ ÓÞ£ÔÁ × ÓÔÒÏËÅ ÎÉÖÅ. üÔÏ ÎÁÚ×ÁÎÉÅ ÉÓÐÏÌØÚÕÅÔÓÑ ÔÏÌØËÏ ÄÌÑ "
-"ÏÔÏÂÒÁÖÅÎÉÑ."
-
-#. set window title
-#: mail/mail-config-druid.c:445
-msgid "Evolution Account Wizard"
-msgstr "ðÏÍÏÝÎÉË ÐÏ ÓÞÅÔÁÍ Evolution"
-
-#: mail/mail-config.glade.h:1
-msgid " Check for supported types "
-msgstr " ðÒÏ×ÅÒËÁ ÐÏÄÄÅÒÖÉ×ÁÅÍÙÈ ÔÉÐÏ× "
-
-#: mail/mail-config.glade.h:2
-msgid " color"
-msgstr " Ã×ÅÔ"
-
-#: mail/mail-config.glade.h:3
-msgid "Account"
-msgstr "óÞÅÔ"
-
-#: mail/mail-config.glade.h:4
-msgid "Account Information"
-msgstr "éÎÆÏÒÍÁÃÉÑ Ï ÓÞÅÔÅ"
-
-#: mail/mail-config.glade.h:5
-msgid "Account Management"
-msgstr "õÐÒÁ×ÌÅÎÉÅ ÓÞÅÔÁÍÉ"
-
-#: mail/mail-config.glade.h:6
-msgid "Accounts"
-msgstr "óÞÅÔÁ"
-
-#: mail/mail-config.glade.h:8
-msgid "Authentication"
-msgstr "éÄÅÎÔÉÆÉËÁÃÉÑ"
-
-#: mail/mail-config.glade.h:9
-msgid "Authentication Type: "
-msgstr "ôÉÐ ÉÄÅÎÔÉÆÉËÁÃÉÉ: "
-
-#: mail/mail-config.glade.h:10
-msgid "Automatically check for new mail every"
-msgstr "á×ÔÏÍÁÔÉÞÅÓËÉ ÐÒÏ×ÅÒÑÔØ ÐÏÞÔÕ ËÁÖÄÙÅ"
-
-#: mail/mail-config.glade.h:12
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-"ðÏÚÄÒÁ×ÌÑÅÍ, ×ÁÛÉ ÐÏÞÔÏ×ÙÅ ÎÁÓÔÒÏÊËÉ ÚÁ×ÅÒÛÅÎÙ.\n"
-"\n"
-"÷Ù ÇÏÔÏ×Ù Ë ÏÔÐÒÁ×ËÅ É ÐÒÉÅÍÕ ÜÌ.ÐÏÞÔÙ\n"
-"Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ Evolution.\n"
-"\n"
-"îÁÖÍÉÔÅ \"úÁ×ÅÒÛÉÔØ\", ÞÔÏÂÙ ÓÏÈÒÁÎÉÔØ ×ÁÛÉ ÎÁÓÔÒÏÊËÉ."
-
-#: mail/mail-config.glade.h:18
-msgid "De_fault"
-msgstr "éÓÈ.ÚÎÁÞÅÎÉÑ"
-
-#: mail/mail-config.glade.h:20
-msgid "Done"
-msgstr "óÄÅÌÁÎÏ"
-
-#: mail/mail-config.glade.h:21
-msgid "Drafts"
-msgstr "þÅÒÎÏ×ÉËÉ"
-
-#: mail/mail-config.glade.h:22
-msgid "Drafts folder:"
-msgstr "ðÁÐËÁ ÞÅÒÎÏ×ÉËÏ×:"
-
-#: mail/mail-config.glade.h:24
-msgid "Email Address:"
-msgstr "üÌ.ÁÄÒÅÓ:"
-
-#: mail/mail-config.glade.h:26
-msgid "Full Name:"
-msgstr "ðÏÌÎÏÅ ÉÍÑ:"
-
-#: mail/mail-config.glade.h:27
-msgid "Highlight citations with "
-msgstr "ðÏÄÓ×ÅÞÉ×ÁÔØ ÃÉÔÁÔÙ "
-
-#: mail/mail-config.glade.h:29
-msgid "IMAPv4 "
-msgstr "IMAPv4"
-
-#: mail/mail-config.glade.h:30
-msgid "Identity"
-msgstr "éÍÅÎÏ×ÁÎÉÅ"
-
-#: mail/mail-config.glade.h:31
-msgid "Kerberos "
-msgstr "Kerberos "
-
-#: mail/mail-config.glade.h:32
-msgid "Mail Configuration"
-msgstr "îÁÓÔÒÏÊËÁ ÐÏÞÔÙ"
-
-#: mail/mail-config.glade.h:33
-msgid "Make this my default account"
-msgstr "óÄÅÌÁÔØ ÍÏÉÍ ÓÞÅÔÏÍ ÐÏ ÕÍÏÌÞÁÎÉÀ"
-
-#: mail/mail-config.glade.h:34
-msgid "Mark messages as \"Read\" after:"
-msgstr "ðÏÍÅÞÁÔØ ÓÏÏÂÝÅÎÉÑ ËÁË \"ðÒÏÞÉÔÁÎÎÙÅ\" ÐÏÓÌÅ:"
-
-#: mail/mail-config.glade.h:36
-msgid "News"
-msgstr "îÏ×ÙÅ"
-
-#: mail/mail-config.glade.h:38
-msgid "Optional Information"
-msgstr "äÏÐÏÌÎÉÔÅÌØÎÁÑ ÉÎÆÏÒÍÁÃÉÑ"
-
-#: mail/mail-config.glade.h:39
-msgid "Organization:"
-msgstr "ïÒÇÁÎÉÚÁÃÉÑ:"
-
-#: mail/mail-config.glade.h:41
-msgid "PGP binary path:"
-msgstr "ðÕÔØ Ë ÐÒÏÇÒÁÍÍÅ PGP:"
-
-#: mail/mail-config.glade.h:46
-msgid "Qmail maildir "
-msgstr "ðÏÞÔÏ×ÙÊ ËÁÔÁÌÏÇ Qmail "
-
-#: mail/mail-config.glade.h:47
-msgid "Receiving Email"
-msgstr "ðÏÌÕÞÅÎÉÅ ÜÌ.ÐÏÞÔÙ"
-
-#: mail/mail-config.glade.h:48
-msgid "Receiving Mail"
-msgstr "ðÏÌÕÞÅÎÉÅ ÜÌ.ÐÏÞÔÙ"
-
-#: mail/mail-config.glade.h:49
-msgid "Receiving Options"
-msgstr "ðÏÌÕÞÅÎÉÅ ÐÁÒÁÍÅÔÒÏ×"
-
-#: mail/mail-config.glade.h:51
-msgid "Required Information"
-msgstr "îÅÏÂÈÏÄÉÍÁÑ ÉÎÆÏÒÍÁÃÉÑ"
-
-#: mail/mail-config.glade.h:53
-msgid "Select PGP binary"
-msgstr "÷ÙÂÒÁÔØ ÐÒÏÇÒÁÍÍÕ PGP"
-
-#: mail/mail-config.glade.h:54
-msgid "Send mail in HTML format by default."
-msgstr "ðÏ ÕÍÏÌÞÁÎÉÀ ÏÔÐÒÁ×ÌÑÔØ ÐÏÞÔÕ × ÆÏÒÍÁÔÅ HTML."
-
-#: mail/mail-config.glade.h:55
-msgid "Sending Email"
-msgstr "ïÔÐÒÁ×ËÁ ÜÌ.ÐÏÞÔÙ"
-
-#: mail/mail-config.glade.h:56
-msgid "Sending Mail"
-msgstr "ïÔÐÒÁ×ËÁ ÜÌ.ÐÏÞÔÙ"
-
-#: mail/mail-config.glade.h:58
-msgid "Sent"
-msgstr "ïÔÐÒÁ×ÌÅÎÎÏÅ"
-
-#: mail/mail-config.glade.h:59
-msgid "Sent and Draft Messages"
-msgstr "ïÔÐÒÁ×ÌÅÎÎÙÅ ÓÏÏÂÝÅÎÉÑ É ÞÅÒÎÏ×ÉËÉ"
-
-#: mail/mail-config.glade.h:60
-msgid "Sent messages folder:"
-msgstr "ðÁÐËÁ ÏÔÐÒÁ×ÌÅÎÎÙÈ ÓÏÏÂÝÅÎÉÊ:"
-
-#: mail/mail-config.glade.h:61
-msgid "Server Configuration"
-msgstr "îÁÓÔÒÏÊËÁ ÓÅÒ×ÅÒÁ"
-
-#: mail/mail-config.glade.h:62
-msgid "Server Type: "
-msgstr "ôÉÐ ÓÅÒ×ÅÒÁ:"
-
-#: mail/mail-config.glade.h:63
-msgid "Server requires authentication"
-msgstr "óÅÒ×ÅÒ ÔÒÅÂÕÅÔ ÉÄÅÎÔÉÆÉËÁÃÉÉ"
-
-#: mail/mail-config.glade.h:64
-msgid "Signature file:"
-msgstr "æÁÊÌ ÐÏÄÐÉÓÉ:"
-
-#: mail/mail-config.glade.h:65
-msgid "Sources"
-msgstr "éÓÔÏÞÎÉËÉ"
-
-#: mail/mail-config.glade.h:66
-msgid "Special Folders"
-msgstr "óÐÅÃÉÁÌØÎÙÅ ÐÁÐËÉ"
-
-#: mail/mail-config.glade.h:67
-msgid "Standard Unix mbox"
-msgstr "óÔÁÎÄÁÒÔÎÙÊ ÆÁÊÌ Unix mbox"
-
-#: mail/mail-config.glade.h:68
-msgid "Type"
-msgstr "ôÉÐ"
-
-#: mail/mail-config.glade.h:69
-msgid "Use secure connection (SSL)"
-msgstr "éÓÐÏÌØÚÏ×ÁÔØ ÚÁÝÉÝÅÎÎÏÅ ÐÏÄËÌÀÞÅÎÉÅ (SSL)"
-
-#: mail/mail-config.glade.h:70
-msgid "Username:"
-msgstr "éÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ:"
-
-#: mail/mail-config.glade.h:71
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-"äÏÂÒÏ ÐÏÖÁÌÏ×ÁÔØ Ë ÐÏÍÏÝÎÉËÕ ÐÏ ÎÁÓÔÒÏÊËÅ ÐÏÞÔÙ × Evolution.\n"
-"\n"
-"îÁÖÍÉÔÅ \"óÌÅÄ.\" ÄÌÑ ÎÁÞÁÌÁ."
-
-#: mail/mail-config.glade.h:76 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:43 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:32
-msgid "_Edit"
-msgstr "ðÒÁ×ËÁ"
-
-#: mail/mail-display.c:194
-msgid "Save Attachment"
-msgstr "óÏÈÒÁÎÉÔØ ×ÌÏÖÅÎÉÅ"
-
-#: mail/mail-display.c:234
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ×ÒÅÍÅÎÎÙÊ ËÁÔÁÌÏÇ: %s"
-
-#: mail/mail-display.c:295
-msgid "Save to Disk..."
-msgstr "óÏÈÒÁÎÉÔØ ÎÁ ÄÉÓËÅ..."
-
-#: mail/mail-display.c:297
-#, c-format
-msgid "Open in %s..."
-msgstr "ïÔËÒÙÔØ × %s..."
-
-#: mail/mail-display.c:299
-msgid "View Inline"
-msgstr "÷ÓÔÒÏÅÎÎÙÊ ÐÒÏÓÍÏÔÒ"
-
-#: mail/mail-display.c:334
-msgid "External Viewer"
-msgstr "÷ÎÅÛÎÑÑ ÐÒÏÇÒÁÍÍÁ ÐÒÏÓÍÏÔÒÁ"
-
-#: mail/mail-display.c:357
-#, c-format
-msgid "View Inline (via %s)"
-msgstr "÷ÓÔÒÏÅÎÎÙÊ ÐÒÏÓÍÏÔÒ (ÞÅÒÅÚ %s)"
-
-#: mail/mail-display.c:361
-msgid "Hide"
-msgstr "óËÒÙÔØ"
-
-#: mail/mail-display.c:1107
-msgid "Open link in browser"
-msgstr "ïÔËÒÙÔØ ÓÓÙÌËÕ × ÂÒÁÕÚÅÒÅ"
-
-#: mail/mail-display.c:1109
-msgid "Save as (FIXME)"
-msgstr "óÏÈÒÁÎÉÔØ ËÁË (FIXME)"
-
-#: mail/mail-display.c:1111
-msgid "Copy location (FIXME)"
-msgstr "óËÏÐÉÒÏ×ÁÔØ ÐÏÌÏÖÅÎÉÅ (FIXME)"
-
-#: mail/mail-format.c:522
-#, c-format
-msgid "%s attachment"
-msgstr "%s ×ÌÏÖÅÎÉÅ"
-
-#: mail/mail-format.c:564
-msgid "Could not parse MIME message. Displaying as source."
-msgstr "îÅ ÕÄÁÌÏÓØ ÒÁÚÏÂÒÁÔØ ÓÏÏÂÝÅÎÉÅ MIME. ïÔÏÂÒÁÖÁÅÔÓÑ ËÁË ÅÓÔØ."
-
-#: mail/mail-format.c:771
-msgid "Loading message content"
-msgstr "úÁÇÒÕÚËÁ ÓÏÄÅÒÖÉÍÏÇÏ ÓÏÏÂÝÅÎÉÑ"
-
-#: mail/mail-format.c:1080
-msgid "No GPG/PGP program configured."
-msgstr "ðÒÏÇÒÁÍÍÁ GPG/PGP ÎÅ ÎÁÓÔÒÏÅÎÁ."
-
-#: mail/mail-format.c:1095
-msgid "Encrypted message not displayed"
-msgstr "úÁÛÉÆÒÏ×ÁÎÎÏÅ ÓÏÏÂÝÅÎÉÅ ÎÅ ÏÔÏÂÒÁÖÁÅÔÓÑ"
-
-#: mail/mail-format.c:1101
-msgid "Encrypted message"
-msgstr "úÁÛÉÆÒÏ×ÁÎÎÏÅ ÓÏÏÂÝÅÎÉÅ"
-
-#: mail/mail-format.c:1102
-msgid "Click icon to decrypt."
-msgstr "ýÅÌËÎÉÔÅ ÎÁ ÐÉËÔÏÇÒÁÍÍÅ ÄÌÑ ÄÅÛÉÆÒÁÃÉÉ."
-
-#: mail/mail-format.c:1192 mail/mail-format.c:1580
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr ""
-"üÔÏ ÓÏÏÂÝÅÎÉÅ Ó ÃÉÆÒÏ×ÏÊ ÐÏÄÐÉÓØÀ, ËÏÔÏÒÁÑ ÐÒÏÛÌÁ ÐÒÏ×ÅÒËÕ ÉÄÅÎÔÉÞÎÏÓÔÉ."
-
-#: mail/mail-format.c:1200 mail/mail-format.c:1588
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr ""
-"üÔÏ ÓÏÏÂÝÅÎÉÅ Ó ÃÉÆÒÏ×ÏÊ ÐÏÄÐÉÓØÀ, ËÏÔÏÒÁÑ ÎÅ ÍÏÖÅÔ ÂÙÔØ ÐÒÏ×ÅÒÅÎÁ ÎÁ "
-"ÉÄÅÎÔÉÞÎÏÓÔØ."
-
-#: mail/mail-format.c:1801
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr "õËÁÚÁÔÅÌØ ÎÁ FTP ÓÁÊÔ (%s)"
-
-#: mail/mail-format.c:1813
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr ""
-
-#: mail/mail-format.c:1817
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr "õËÁÚÁÔÅÌØ ÎÁ ÌÏËÁÌØÎÙÊ ÆÁÊÌ (%s)"
-
-#: mail/mail-format.c:1851
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr "õËÁÚÁÔÅÌØ ÎÁ ÎÅÉÚ×ÅÓÔÎÙÅ ×ÎÅÛÎÉÅ ÄÁÎÎÙÅ (ÔÉÐÁ \"%s\")"
-
-#: mail/mail-format.c:1856
-msgid "Malformed external-body part."
-msgstr ""
-
-#: mail/mail-local.c:509
-#, c-format
-msgid "Opening '%s'"
-msgstr "ïÔËÒÙÔÉÅ \"%s\""
-
-#: mail/mail-local.c:787
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr "éÚÍÅÎÅÎÉÅ ÐÁÐËÉ \"%s\" × ÆÏÒÍÁÔ \"%s\""
-
-#: mail/mail-local.c:791
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr "éÚÍÅÎÉÔØ ÐÁÐËÕ \"%s\" × ÆÏÒÍÁÔ \"%s\""
-
-#: mail/mail-local.c:814
-msgid "Reconfiguring folder"
-msgstr "ðÅÒÅÎÁÓÔÒÏÊËÁ ÐÁÐËÉ"
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:843
-msgid "Closing current folder"
-msgstr "úÁËÒÙÔÉÅ ÔÅËÕÝÅÊ ÐÁÐËÉ"
-
-#: mail/mail-local.c:875
-msgid "Renaming old folder and opening"
-msgstr "ðÅÒÅÉÍÅÎÏ×ÁÎÉÅ ÓÔÁÒÏÊ ÐÁÐËÉ É ÏÔËÒÙÔÉÅ"
-
-#: mail/mail-local.c:893
-msgid "Creating new folder"
-msgstr "óÏÚÄÁÎÉÅ ÎÏ×ÏÊ ÐÁÐËÉ"
-
-#: mail/mail-local.c:907
-msgid "Copying messages"
-msgstr "ëÏÐÉÒÏ×ÁÎÉÅ ÓÏÏÂÝÅÎÉÊ"
-
-#: mail/mail-local.c:924
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-
-#: mail/mail-local.c:963
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-
-#: mail/mail-mt.c:190
-#, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-"ïÛÉÂËÁ ÐÒÉ \"%s\":\n"
-"%s"
-
-#: mail/mail-mt.c:193
-#, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-"ïÛÉÂËÁ ÐÒÉ ×ÙÐÏÌÎÅÎÉÉ ÏÐÅÒÁÃÉÉ:\n"
-"%s"
-
-#: mail/mail-mt.c:516 mail/mail-mt.c:545 mail/mail-mt.c:880
-msgid "Working"
-msgstr "ïÂÒÁÂÏÔËÁ"
-
-#: mail/mail-mt.c:862
-msgid "Evolution progress"
-msgstr "ðÒÏÄ×ÉÖÅÎÉÅ Evolution"
-
-#: mail/mail-ops.c:599
-#, c-format
-msgid "Sending \"%s\""
-msgstr "ïÔÐÒÁ×ËÁ \"%s\""
-
-#: mail/mail-ops.c:603
-msgid "Sending message"
-msgstr "ïÔÐÒÁ×ËÁ ÓÏÏÂÝÅÎÉÑ"
-
-#: mail/mail-ops.c:718
-#, c-format
-msgid "Sending message %d of %d"
-msgstr "ïÔÐÒÁ×ËÁ ÓÏÏÂÝÅÎÉÑ %d ÉÚ %d"
-
-#: mail/mail-ops.c:737
-#, c-format
-msgid "Failed on message %d of %d"
-msgstr "óÂÏÊ ÎÁ ÓÏÏÂÝÅÎÉÉ %d ÉÚ %d"
-
-#: mail/mail-ops.c:739 mail/mail-send-recv.c:475
-msgid "Complete."
-msgstr "÷ÙÐÏÌÎÅÎÏ."
-
-#: mail/mail-ops.c:825
-msgid "Saving message to folder"
-msgstr "óÏÈÒÁÎÅÎÉÅ ÓÏÏÂÝÅÎÉÑ × ÐÁÐËÅ"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Moving messages to %s"
-msgstr "ðÅÒÅÍÅÝÅÎÉÅ ÓÏÏÂÝÅÎÉÊ × %s"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Copying messages to %s"
-msgstr "ëÏÐÉÒÏ×ÁÎÉÅ ÓÏÏÂÝÅÎÉÊ × %s"
-
-#: mail/mail-ops.c:914
-msgid "Moving"
-msgstr "ðÅÒÅÍÅÝÅÎÉÅ"
-
-#: mail/mail-ops.c:917
-msgid "Copying"
-msgstr "ëÏÐÉÒÏ×ÁÎÉÅ"
-
-#: mail/mail-ops.c:992
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr "óÞÉÔÙ×ÁÎÉÅ ÐÁÐÏË × \"%s\""
-
-#: mail/mail-ops.c:1154
-msgid "Forwarded messages"
-msgstr "ðÅÒÅÓÌÁÎÎÙÅ ÓÏÏÂÝÅÎÉÑ"
-
-#: mail/mail-ops.c:1195 mail/mail-ops.c:1333
-#, c-format
-msgid "Opening folder %s"
-msgstr "ïÔËÒÙÔÉÅ ÐÁÐËÉ \"%s\""
-
-#: mail/mail-ops.c:1262
-#, c-format
-msgid "Opening store %s"
-msgstr "ïÔËÒÙÔÉÅ ÈÒÁÎÉÌÉÝÁ %s"
-
-#: mail/mail-ops.c:1449
-msgid "Expunging folder"
-msgstr "÷ÙÞÅÒËÉ×ÁÎÉÅ ÐÁÐËÉ"
-
-#: mail/mail-ops.c:1498
-#, c-format
-msgid "Retrieving message %s"
-msgstr "ðÏÌÕÞÅÎÉÅ ÓÏÏÂÝÅÎÉÑ %s"
-
-#: mail/mail-ops.c:1565
-msgid "Retrieving messages"
-msgstr "ðÏÌÕÞÅÎÉÅ ÓÏÏÂÝÅÎÉÊ"
-
-#: mail/mail-ops.c:1575
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr "ðÅÒÅÍÅÝÅÎÉÅ ÓÏÏÂÝÅÎÉÑ ÎÏÍÅÒ %d ÉÚ %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1649
-msgid "Saving messages"
-msgstr "óÏÈÒÁÎÅÎÉÅ ÓÏÏÂÝÅÎÉÊ"
-
-#: mail/mail-ops.c:1728
-#, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr ""
-"îÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ÆÁÊÌ ×Ù×ÏÄÁ: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1741
-#, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr "óÏÈÒÁÎÅÎÉÅ ÓÏÏÂÝÅÎÉÑ %d ÉÚ %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1755
-#, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr ""
-"ïÛÉÂËÁ ÓÏÈÒÁÎÅÎÉÑ ÓÏÏÂÝÅÎÉÊ ×: %s:\n"
-" %s"
-
-#: mail/mail-ops.c:1829
-msgid "Saving attachment"
-msgstr "óÏÈÒÁÎÅÎÉÅ ×ÌÏÖÅÎÉÑ"
-
-#: mail/mail-ops.c:1844
-#, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr ""
-"îÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ÆÁÊÌ ×Ù×ÏÄÁ: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1872
-#, c-format
-msgid "Could not write data: %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÚÁÐÉÓÁÔØ ÄÁÎÎÙÅ: %s"
-
-#: mail/mail-search-dialogue.c:113
-msgid "_Search"
-msgstr "ðÏÉÓË"
-
-#: mail/mail-search.c:167
-#, c-format
-msgid "Search \"%s\""
-msgstr "ðÏÉÓË \"%s\""
-
-#: mail/mail-search.c:169
-msgid "Search Untitled Message"
-msgstr "ðÏÉÓË ÎÅÏÚÁÇÌÁ×ÌÅÎÎÏÇÏ ÓÏÏÂÝÅÎÉÑ"
-
-#: mail/mail-search.c:184
-msgid "Case Sensitive"
-msgstr "õÞÉÔÙ×ÁÔØ ÒÅÇÉÓÔÒ"
-
-#: mail/mail-search.c:185
-msgid "Search Forward"
-msgstr "ðÏÉÓË ×ÐÅÒ£Ä"
-
-#: mail/mail-search.c:192
-msgid "Find:"
-msgstr "ðÏÉÓË:"
-
-#: mail/mail-send-recv.c:138
-msgid "Cancelling..."
-msgstr "ïÔÍÅÎÁ..."
-
-#: mail/mail-send-recv.c:233
-msgid "Send & Receive mail"
-msgstr "ðÏÌÕÞÅÎÉÅ É ÏÔÐÒÁ×ËÁ ÐÏÞÔÙ"
-
-#: mail/mail-send-recv.c:236
-msgid "Receiving"
-msgstr "ðÏÌÕÞÅÎÉÅ"
-
-#: mail/mail-send-recv.c:285
-msgid "Updating..."
-msgstr "ïÂÎÏ×ÌÅÎÉÅ..."
-
-#: mail/mail-send-recv.c:287 mail/mail-send-recv.c:333
-msgid "Waiting..."
-msgstr "ïÖÉÄÁÎÉÅ..."
-
-#: mail/mail-send-recv.c:306
-msgid "Sending"
-msgstr "ïÔÐÒÁ×ËÁ"
-
-#: mail/mail-send-recv.c:471
-msgid "Cancelled."
-msgstr "ïÔÍÅÎÅÎÏ."
-
-#: mail/mail-summary.c:110
-msgid "Incomplete message written on pipe!"
-msgstr "îÅÐÏÌÎÏÅ ÓÏÏÂÝÅÎÉÅ ÚÁÐÉÓÁÎÏ × ËÁÎÁÌ!"
-
-#: mail/mail-summary.c:468
-msgid "Mail Summary"
-msgstr "éÔÏÇ ÐÏÞÔÙ"
-
-#: mail/mail-tools.c:141
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr "îÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ×ÒÅÍÅÎÎÙÊ mbox \"%s\": %s"
-
-#: mail/mail-tools.c:188
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr "[%s] (ÐÅÒÅÓÌÁÎÎÏÅ ÓÏÏÂÝÅÎÉÅ)"
-
-#: mail/mail-tools.c:198
-msgid "Fwd: (no subject)"
-msgstr "ðÅÒÅÓÌ.: (ÎÅÔ ÔÅÍÙ)"
-
-#: mail/mail-tools.c:215
-#, c-format
-msgid "Forwarded message - %s"
-msgstr "ðÅÒÅÓÌÁÎÎÏÅ ÓÏÏÂÝÅÎÉÅ - %s"
-
-#: mail/mail-tools.c:217
-msgid "Forwarded message (no subject)"
-msgstr "ðÅÒÅÓÌÁÎÎÏÅ ÓÏÏÂÝÅÎÉÅ (ÂÅÚ ÔÅÍÙ)"
-
-#: mail/mail-tools.c:415
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-msgstr ""
-"-----ðÅÒÅÓÙÌÁÅÍÏÅ ÓÏÏÂÝÅÎÉÅ-----<br><b>ïÔ:</b> %s<br><b>ëÏÍÕ:</b> \"\n"
-"\"%s<br><b>ôÅÍÁ:</b> %s<br>"
-
-#: mail/mail-vfolder.c:249
-msgid "VFolders"
-msgstr "÷ÉÒÔ.ÐÁÐËÉ"
-
-#: mail/mail-vfolder.c:426
-msgid "New VFolder"
-msgstr "îÏ×ÁÑ ×ÉÒÔ.ÐÁÐËÁ"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/message-browser.c:189 ui/evolution-mail.xml.h:64
-msgid "Reply"
-msgstr "ïÔ×ÅÔÉÔØ"
-
-#: mail/message-browser.c:189 ui/evolution-mail.xml.h:70
-msgid "Reply to the sender of this message"
-msgstr "ïÔ×ÅÔÉÔØ ÏÔÐÒÁ×ÉÔÅÌÀ ÜÔÏÇÏ ÓÏÏÂÝÅÎÉÑ"
-
-#: mail/message-browser.c:192 ui/evolution-mail.xml.h:65
-msgid "Reply to All"
-msgstr "ïÔ×ÅÔÉÔØ ×ÓÅÍ"
-
-#: mail/message-browser.c:192 ui/evolution-mail.xml.h:68
-msgid "Reply to all recipients of this message"
-msgstr "ïÔ×ÅÔÉÔØ ×ÓÅÍ ÐÏÌÕÞÁÔÅÌÑÍ ÜÔÏÇÏ ÓÏÏÂÝÅÎÉÑ"
-
-#: mail/message-browser.c:195 ui/evolution-mail.xml.h:25
-msgid "Forward"
-msgstr "ðÅÒÅÓÌÁÔØ"
-
-#: mail/message-browser.c:195 ui/evolution-mail.xml.h:29
-msgid "Forward this message"
-msgstr "ðÅÒÅÓÌÁÔØ ÜÔÏ ÓÏÏÂÝÅÎÉÅ"
-
-#: mail/message-browser.c:200 ui/evolution-mail.xml.h:61
-msgid "Print the selected message"
-msgstr "òÁÓÐÅÞÁÔÁÔØ ×ÙÄÅÌÅÎÎÏÅ ÓÏÏÂÝÅÎÉÅ"
-
-#: mail/message-browser.c:203 ui/evolution-mail.xml.h:13
-msgid "Delete this message"
-msgstr "õÄÁÌÉÔØ ÜÔÏ ÓÏÏÂÝÅÎÉÅ"
-
-#: mail/message-browser.c:208 ui/evolution-event-editor.xml.h:33
-#: ui/evolution-mail.xml.h:54 ui/evolution-task-editor-dialog.xml.h:36
-msgid "Previous"
-msgstr "ðÒÅÄ."
-
-#: mail/message-browser.c:208
-msgid "Previous message"
-msgstr "ðÒÅÄÙÄÕÝÅÅ ÓÏÏÂÝÅÎÉÅ"
-
-#: mail/message-browser.c:211 ui/evolution-calendar.xml.h:18
-#: ui/evolution-event-editor.xml.h:29 ui/evolution-mail.xml.h:50
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "Next"
-msgstr "óÌÅÄ."
-
-#: mail/message-browser.c:211
-msgid "Next message"
-msgstr "óÌÅÄÕÀÝÅÅ ÓÏÏÂÝÅÎÉÅ"
-
-#: mail/message-list.c:682
-msgid "Unseen"
-msgstr "îÅÐÒÏÞÉÔÁÎÎÏÅ"
-
-#: mail/message-list.c:683
-msgid "Seen"
-msgstr "ðÒÏÞÉÔÁÎÎÏÅ"
-
-#: mail/message-list.c:684
-msgid "Answered"
-msgstr "ïÔ×ÅÞÅÎÏ"
-
-#: mail/message-list.c:685
-msgid "Multiple Unseen Messages"
-msgstr "íÎÏÖÅÓÔ×Ï ÎÅÐÒÏÓÍÏÔÒÅÎÎÙÈ ÓÏÏÂÝÅÎÉÊ"
-
-#: mail/message-list.c:686
-msgid "Multiple Messages"
-msgstr "íÎÏÖÅÓÔ×Ï ÓÏÏÂÝÅÎÉÊ"
-
-#: mail/message-list.c:690
-msgid "Lowest"
-msgstr "óÁÍÙÊ ÎÉÚËÉÊ"
-
-#: mail/message-list.c:691
-msgid "Lower"
-msgstr "îÉÚËÉÊ"
-
-#: mail/message-list.c:695
-msgid "Higher"
-msgstr "÷ÙÓÏËÉÊ"
-
-#: mail/message-list.c:696
-msgid "Highest"
-msgstr "óÁÍÙÊ ×ÙÓÏËÉÊ"
-
-#: mail/message-list.c:946
-msgid "?"
-msgstr "?"
-
-#: mail/message-list.c:953
-msgid "Today %l:%M %p"
-msgstr "óÅÇÏÄÎÑ %I:%M %p"
-
-#: mail/message-list.c:962
-msgid "Yesterday %l:%M %p"
-msgstr "÷ÞÅÒÁ %l:%M %p"
-
-#: mail/message-list.c:974
-msgid "%a %l:%M %p"
-msgstr "%a %l:%M %p"
-
-#: mail/message-list.c:982
-msgid "%b %d %l:%M %p"
-msgstr "%b %d %l:%M %p"
-
-#: mail/message-list.c:984
-msgid "%b %d %Y"
-msgstr "%b %d %Y"
-
-#: mail/message-list.c:1086
-msgid "Flagged"
-msgstr "ïÔÍÅÞÅÎÎÏÅ"
-
-#: mail/message-list.c:1087
-msgid "From"
-msgstr "ïÔ"
-
-#: mail/message-list.c:1087
-msgid "Date"
-msgstr "äÁÔÁ"
-
-#: mail/message-list.c:1087
-msgid "Received"
-msgstr "ðÏÌÕÞÅÎÉÑ"
-
-#: mail/message-list.c:1088
-msgid "To"
-msgstr "ëÏÍÕ"
-
-#: mail/message-list.c:1088
-msgid "Size"
-msgstr "òÁÚÍÅÒ"
-
-#: mail/mail-session.c:161
-msgid "User canceled operation."
-msgstr ""
-
-#: mail/subscribe-dialog.c:76 shell/e-storage-set-view.c:47
-msgid "Folder"
-msgstr "ðÁÐËÁ"
-
-#: mail/subscribe-dialog.c:77
-msgid "Store"
-msgstr "èÒÁÎÉÔØ"
-
-#: mail/subscribe-dialog.c:138
-msgid "Display folders starting with:"
-msgstr "ðÏËÁÚÁÔØ ÐÁÐËÉ ÎÁÞÉÎÁÀÝÉÅÓÑ Ó:"
-
-#: mail/subscribe-dialog.c:168
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:271
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr "ðÏÄÐÉÓÙ×ÁÎÉÅ ÎÁ ÐÁÐËÕ \"%s\""
-
-#: mail/subscribe-dialog.c:273
-#, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr "ïÔÐÉÓÙ×ÁÎÉÅ ÏÔ ÐÁÐËÉ \"%s\""
-
-#. Construct the app
-#: mail/subscribe-dialog.c:873
-msgid "Manage Subscriptions"
-msgstr "õÐÒÁ×ÌÅÎÉÅ ÐÏÄÐÉÓËÁÍÉ"
-
-#: shell/e-setup.c:118 shell/e-setup.c:191
-msgid "Evolution installation"
-msgstr "õÓÔÁÎÏ×ËÁ Evolution"
-
-#: shell/e-setup.c:122
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-"üÔÏÊ ÎÏ×ÏÊ ×ÅÒÓÉÉ Evolution ÔÒÅÂÕÅÔÓÑ ÕÓÔÁÎÏ×ÉÔØ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÆÁÊÌÙ\n"
-"× ×ÁÛ ÌÉÞÎÙÊ ËÁÔÁÌÏÇ Evolution"
-
-#: shell/e-setup.c:123
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr ""
-"ðÏÖÁÌÕÊÓÔÁ ÎÁÖÍÉÔÅ \"ïË\", ÞÔÏÂÙ ÕÓÔÁÎÏ×ÉÔØ ÆÁÊÌÙ ÉÌÉ \"ïÔÍÅÎÁ\" ÄÌÑ ×ÙÈÏÄÁ."
-
-#: shell/e-setup.c:163
-msgid "Could not update files correctly"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÂÎÏ×ÉÔØ ÆÁÊÌÙ ËÏÒÒÅËÔÎÏ"
-
-#: shell/e-setup.c:166 shell/e-setup.c:234
-msgid "Evolution files successfully installed."
-msgstr "æÁÊÌÙ Evolution ÕÓÐÅÛÎÏ ÕÓÔÁÎÏ×ÌÅÎÙ."
-
-#: shell/e-setup.c:195
-msgid "This seems to be the first time you are running Evolution."
-msgstr "ðÏÈÏÖÅ ×Ù ÚÁÐÕÓÔÉÌÉ Evolution × ÐÅÒ×ÙÊ ÒÁÚ."
-
-#: shell/e-setup.c:196
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr ""
-"ðÏÖÁÌÕÊÓÔÁ ÎÁÖÍÉÔÅ \"ïË\", ÞÔÏÂÙ ÕÓÔÁÎÏ×ÉÔØ ÐÏÌØÚÏ×ÁÔÅÌØÓËÉÅ ÆÁÊÌÙ Evolution "
-"×"
-
-#: shell/e-setup.c:215
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ËÁÔÁÌÏÇ\n"
-"%s\n"
-"ïÛÉÂËÁ: %s"
-
-#: shell/e-setup.c:230
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-"îÅ×ÏÚÍÏÖÎÏ ÓËÏÐÉÒÏ×ÁÔØ ÆÁÊÌÙ ×\n"
-"\"%s\"."
-
-#: shell/e-setup.c:255
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-"æÁÊÌ \"%s\" ÎÅ Ñ×ÌÑÅÔÓÑ ËÁÔÁÌÏÇÏÍ.\n"
-"ðÏÖÁÌÕÊÓÔÁ, ÐÅÒÅÍÅÓÔÉÔÅ ÅÇÏ, ÞÔÏÂÙ ÐÏÚ×ÏÌÉÔØ\n"
-"ÕÓÔÁÎÏ×ÉÔØ ÆÁÊÌÙ ÐÏÌØÚÏ×ÁÔÅÌÑ Evolution."
-
-#: shell/e-setup.c:267
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-"æÁÊÌ \"%s\" ÎÅ Ñ×ÌÑÅÔÓÑ ËÁÔÁÌÏÇÏÍ Evolution.\n"
-"ðÏÖÁÌÕÊÓÔÁ, ÕÄÁÌÉÔÅ ÅÇÏ, ÞÔÏÂÙ ÐÏÚ×ÏÌÉÔØ\n"
-"ÕÓÔÁÎÏ×ÉÔØ ÆÁÊÌÙ ÐÏÌØÚÏ×ÁÔÅÌÑ Evolution."
-
-#: shell/e-shell.c:388
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÌÏËÁÌØÎÏÅ ÈÒÁÎÉÌÉÝÅ -- %s"
-
-#: shell/e-shell.c:1273
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-"ïÐ-ÌÑ! ïËÎÏ ÄÌÑ \"%s\" ÎÅÏÖÉÄÁÎÎÏ ÕÍÅÒÌÏ. :-(\n"
-"÷ÏÚÍÏÖÎÏ ÜÔÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ËÏÍÐÏÎÅÎÔ %s ÒÕÈÎÕÌ."
-
-#: shell/e-shell-folder-creation-dialog.c:99
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-"îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÕËÁÚÁÎÎÕÀ ÐÁÐËÕ:\n"
-"%s"
-
-#: shell/e-shell-folder-creation-dialog.c:156
-msgid "The specified folder name is not valid."
-msgstr "õËÁÚÁÎÎÏÅ ÉÍÑ ÐÁÐËÉ ÎÅ ÄÏÐÕÓÔÉÍÏ."
-
-#: shell/e-shell-folder-creation-dialog.c:263
-msgid "Evolution - Create new folder"
-msgstr "ü×ÏÌÀÃÉÑ - óÏÚÄÁÔØ ÎÏ×ÕÀ ÐÁÐËÕ"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-"ôÉÐ ×ÙÂÒÁÎÎÏÊ ÐÁÐËÉ ÎÅ ÐÏÄÈÏÄÉÔ ÄÌÑ\n"
-"ÚÁÐÒÏÛÅÎÎÏÇÏ ÄÅÊÓÔ×ÉÑ."
-
-#: shell/e-shell-folder-selection-dialog.c:321
-msgid "New..."
-msgstr "îÏ×ÁÑ..."
-
-#: shell/e-shell-folder-title-bar.c:459 shell/e-shell-folder-title-bar.c:460
-msgid "(Untitled)"
-msgstr "(âÅÚ ÚÁÇÏÌÏ×ËÁ)"
-
-#: shell/e-shell-view.c:148
-msgid "(No folder displayed)"
-msgstr "(ðÁÐËÉ ÎÅ ÐÏËÁÚÁÎÙ)"
-
-#: shell/e-shell-view.c:1203
-#, c-format
-msgid "%s - Evolution %s"
-msgstr "%s - Evolution %s"
-
-#: shell/e-shell-view.c:1205
-#, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "%s - Evolution %s [%s]"
-
-#: shell/e-shell-view-menu.c:173
-msgid "Bug buddy was not found in your $PATH."
-msgstr "Bug-buddy ÎÅ ÂÙÌ ÎÁÊÄÅÎ × ×ÁÛÅÍ $PATH."
-
-#: shell/e-shell-view-menu.c:179
-msgid "Bug buddy could not be run."
-msgstr "Bug-buddy ÎÅ ÍÏÖÅÔ ÂÙÔØ ÚÁÐÕÝÅÎ."
-
-#: shell/e-shell-view-menu.c:208
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Copyright (C) 1999-2001 Ximian, Inc."
-
-#: shell/e-shell-view-menu.c:210
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-"\"ü×ÏÌÀÃÉÑ\" ÜÔÏ ÎÁÂÏÒ ÐÒÉÌÏÖÅÎÉÊ ÜÌÅËÔÒÏÎÎÏÊ ÐÏÞÔÙ,\n"
-"×ÅÄÅÎÉÑ ËÁÌÅÎÄÁÒÅÊ É ËÏÎÔÁËÔÎÏÊ ÉÎÆÏÒÍÁÃÉÉ ÄÌÑ\n"
-"ÇÒÕÐÐÏ×ÏÊ ÒÁÂÏÔÙ × ÓÒÅÄÅ GNOME."
-
-#: shell/e-shell-view-menu.c:374
-msgid "Go to folder..."
-msgstr "ðÅÒÅÊÔÉ Ë ÐÁÐËÅ..."
-
-#: shell/e-shell-view-menu.c:562
-msgid "Work online"
-msgstr "òÁÂÏÔÁÔØ × ÓÅÔÉ"
-
-#: shell/e-shell-view-menu.c:574 shell/e-shell-view-menu.c:586
-msgid "Work offline"
-msgstr "òÁÂÏÔÁÔØ ×ÎÅ ÓÅÔÉ"
-
-#: shell/e-shortcuts.c:381
-msgid "Error saving shortcuts."
-msgstr "ïÛÉÂËÁ ÓÏÈÒÁÎÅÎÉÑ ÚÁËÌÁÄÏË."
-
-#: shell/e-shortcuts-view.c:134
-msgid "Create new shortcut group"
-msgstr "óÏÚÄÁÔØ ÎÏ×ÕÀ ÇÒÕÐÐÕ ÚÁËÌÁÄÏË"
-
-#: shell/e-shortcuts-view.c:137
-msgid "Group name:"
-msgstr "îÁÚ×ÁÎÉÅ ÇÒÕÐÐÙ:"
-
-#: shell/e-shortcuts-view.c:260
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-"÷Ù ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÈÏÔÉÔÅ ÕÄÁÌÉÔØ ÇÒÕÐÐÕ\n"
-"\"%s\" ÉÚ ÐÁÎÅÌÉ ÚÁËÌÁÄÏË?"
-
-#: shell/e-shortcuts-view.c:265
-msgid "Don't remove"
-msgstr "îÅ ÕÄÁÌÑÔØ"
-
-#: shell/e-shortcuts-view.c:276
-msgid "_Small Icons"
-msgstr "íÁÌÅÎØËÉÅ ÐÉËÔÏÇÒÁÍÍÙ"
-
-#: shell/e-shortcuts-view.c:277
-msgid "Show the shortcuts as small icons"
-msgstr "ðÏËÁÚÁÔØ ÚÁËÌÁÄËÉ ËÁË ÍÁÌÅÎØËÉÅ ÐÉËÔÏÇÒÁÍÍÙ"
-
-#: shell/e-shortcuts-view.c:279
-msgid "_Large Icons"
-msgstr "âÏÌØÛÉÅ ÐÉËÔÏÇÒÁÍÍÙ"
-
-#: shell/e-shortcuts-view.c:280
-msgid "Show the shortcuts as large icons"
-msgstr "ðÏËÁÚÁÔØ ÚÁËÌÁÄËÉ ËÁË ÂÏÌØÛÉÅ ÐÉËÔÏÇÒÁÍÍÙ"
-
-#: shell/e-shortcuts-view.c:291
-msgid "_New Group..."
-msgstr "îÏ×ÁÑ ÇÒÕÐÐÁ..."
-
-#: shell/e-shortcuts-view.c:292
-msgid "Create a new shortcut group"
-msgstr "óÏÚÄÁÔØ ÎÏ×ÕÀ ÇÒÕÐÐÕ ÚÁËÌÁÄÏË"
-
-#: shell/e-shortcuts-view.c:294
-msgid "_Remove This Group..."
-msgstr "õÄÁÌÉÔØ ÜÔÕ ÇÒÕÐÐÕ..."
-
-#: shell/e-shortcuts-view.c:295
-msgid "Remove this shortcut group"
-msgstr "õÄÁÌÉÔØ ÜÔÕ ÇÒÕÐÐÕ ÚÁËÌÁÄÏË"
-
-#: shell/e-shortcuts-view.c:300
-msgid "_Hide the Shortcut Bar"
-msgstr "óËÒÙÔØ ÓÔÒÏËÕ ÚÁËÌÁÄÏË"
-
-#: shell/e-shortcuts-view.c:301
-msgid "Hide the shortcut bar"
-msgstr "óËÒÙÔØ ÓÔÒÏËÕ ÚÁËÌÁÄÏË"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate"
-msgstr "áËÔÉ×ÉÒÏ×ÁÔØ"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate this shortcut"
-msgstr "áËÔÉ×ÉÒÏ×ÁÔØ ÜÔÕ ÚÁËÌÁÄËÕ"
-
-#: shell/e-shortcuts-view.c:388
-msgid "Remove this shortcut from the shortcut bar"
-msgstr "õÄÁÌÉÔØ ÜÔÕ ÚÁËÌÁÄËÕ ÉÚ ÓÔÒÏËÉ ÚÁËÌÁÄÏË"
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr "(âÅÚ ÉÍÅÎÉ)"
-
-#: shell/e-storage.c:459
-msgid "No error"
-msgstr "îÅÔ ÏÛÉÂËÉ"
-
-#: shell/e-storage.c:461
-msgid "Generic error"
-msgstr "ïÂÙÞÎÁÑ ÏÛÉÂËÁ"
-
-#: shell/e-storage.c:463
-msgid "A folder with the same name already exists"
-msgstr "ðÁÐËÁ Ó ÔÁËÉÍ ÎÁÚ×ÁÎÉÅÍ ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ"
-
-#: shell/e-storage.c:465
-msgid "The specified folder type is not valid"
-msgstr "õËÁÚÁÎÎÙÊ ÔÉÐ ÐÁÐËÉ ÎÅ ÄÏÐÕÓÔÉÍ"
-
-#: shell/e-storage.c:467
-msgid "I/O error"
-msgstr "ïÛÉÂËÁ ××ÏÄÁ/×Ù×ÏÄÁ"
-
-#: shell/e-storage.c:469
-msgid "Not enough space to create the folder"
-msgstr "îÅÄÏÓÔÁÔÏÞÎÏ ÍÅÓÔÁ ÄÌÑ ÓÏÚÄÁÎÉÑ ÐÁÐËÉ"
-
-#: shell/e-storage.c:471
-msgid "The specified folder was not found"
-msgstr "õËÁÚÁÎÎÁÑ ÐÁÐËÁ ÎÅ ÎÁÊÄÅÎÁ"
-
-#: shell/e-storage.c:473
-msgid "Function not implemented in this storage"
-msgstr "æÕÎËÃÉÑ ÎÅ ÒÅÁÌÉÚÏ×ÁÎÁ ÄÌÑ ÜÔÏÇÏ ÎÏÓÉÔÅÌÑ"
-
-#: shell/e-storage.c:475
-msgid "Permission denied"
-msgstr "ïÔËÁÚ × ÄÏÓÔÕÐÅ"
-
-#: shell/e-storage.c:477
-msgid "Operation not supported"
-msgstr "ïÐÅÒÁÃÉÑ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
-
-#: shell/e-storage.c:479
-msgid "The specified type is not supported in this storage"
-msgstr "õËÁÚÁÎÎÙÊ ÔÉÐ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÄÌÑ ÜÔÏÇÏ ÎÏÓÉÔÅÌÑ"
-
-#: shell/e-storage-set-view.c:650 ui/evolution-event-editor.xml.h:76
-#: ui/evolution-message-composer.xml.h:53
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:46
-msgid "_View"
-msgstr "ðÒÏÓÍÏÔÒ"
-
-#: shell/e-storage-set-view.c:650
-msgid "View the selected folder"
-msgstr "ðÒÏÓÍÏÔÒ ×ÙÂÒÁÎÎÏÊ ÐÁÐËÉ"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-msgid "Folder name:"
-msgstr "îÁÚ×ÁÎÉÅ ÐÁÐËÉ:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-msgid "Folder type:"
-msgstr "ôÉÐ ÐÁÐËÉ:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-msgid "Specify where to create the folder:"
-msgstr "õËÁÚÁÔØ ÇÄÅ ÓÏÚÄÁÔØ ÐÁÐËÕ:"
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-msgid "The Evolution shell."
-msgstr "ïÂÏÌÏÞËÁ Evolution."
-
-#: shell/importer/importer.c:87
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-"÷ÙÂÅÒÉÔÅ ÆÁÊÌ, ËÏÔÏÒÙÊ ×Ù ÈÏÔÉÔÅ ÉÍÐÏÒÔÉÒÏ×ÁÔØ × Evolution É ×ÙÂÅÒÉÔÅ ÔÉÐ "
-"ÆÁÊÌÁ ÉÚ ÓÐÉÓËÁ.\n"
-"\n"
-"÷Ù ÍÏÖÅÔÅ ×ÙÂÒÁÔØ \"á×ÔÏÍÁÔÉÞÅÓËÉÊ\" ÅÓÌÉ ×Ù ÎÅ ÚÎÁÅÔÅ É Evolution "
-"ÐÏÐÙÔÁÅÔÓÑ ÏÐÏÚÎÁÔØ ÅÇÏ."
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/importer/importer.c:182
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-"éÍÐÏÒÔÉÒÏ×ÁÎÉÅ %s\n"
-"éÍÐÏÒÔÅÒ ÎÅ ÇÏÔÏ×.\n"
-"5 ÓÅËÕÎÄ ÏÖÉÄÁÎÉÑ ÐÅÒÅÄ ÐÏ×ÔÏÒÏÍ."
-
-#: shell/importer/importer.c:202 shell/importer/importer.c:233
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-"éÍÐÏÒÔÉÒÏ×ÁÎÉÅ %s\n"
-"éÍÐÏÒÔÉÒÏ×ÁÎÉÅ ÜÌÅÍÅÎÔÁ %d."
-
-#: shell/importer/importer.c:341
-#, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr ""
-"îÅÔ ÉÍÐÏÒÔÅÒÁ, ËÏÔÏÒÙÊ ÓÐÏÓÏÂÅÎ ÏÂÒÁÂÏÔÁÔØ\n"
-"%s"
-
-#: shell/importer/importer.c:351
-msgid "Importing"
-msgstr "éÍÐÏÒÔÉÒÏ×ÁÎÉÅ"
-
-#: shell/importer/importer.c:359
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-"éÍÐÏÒÔÉÒÏ×ÁÎÉÅ %s.\n"
-"îÁÞÁÔÏ %s"
-
-#: shell/importer/importer.c:372
-#, c-format
-msgid "Error starting %s"
-msgstr "ïÛÉÂËÁ ÐÒÉ ÚÁÇÒÕÚËÅ %s"
-
-#: shell/importer/importer.c:387
-#, c-format
-msgid "Error loading %s"
-msgstr "ïÛÉÂËÁ ÐÒÉ ÚÁÇÒÕÚËÅ %s"
-
-#: shell/importer/importer.c:402
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-"éÍÐÏÒÔÉÒÏ×ÁÎÉÅ %s\n"
-"éÍÐÏÒÔÉÒÏ×ÁÎÉÅ ÜÌÅÍÅÎÔÁ 1."
-
-#: shell/importer/importer.c:473
-msgid "Automatic"
-msgstr "á×ÔÏÍÁÔÉÞÅÓËÏÅ"
-
-#: shell/importer/importer.c:523
-msgid "Filename:"
-msgstr "éÍÑ ÆÁÊÌÁ:"
-
-#: shell/importer/import.glade.h:5 shell/importer/importer.c:528
-msgid "Select a file"
-msgstr "÷ÙÂÒÁÔØ ÆÁÊÌ"
-
-#: shell/importer/importer.c:538
-msgid "File type:"
-msgstr "ôÉÐ ÆÁÊÌÁ:"
-
-#: shell/importer/import.glade.h:4 shell/importer/importer.c:619
-msgid "Import"
-msgstr "éÍÐÏÒÔÉÒÏ×ÁÔØ"
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr ""
-"îÁÖÍÉÔÅ \"éÍÐÏÒÔÉÒÏ×ÁÔØ\" ÄÌÑ ÎÁÞÁÌÁ ÉÍÐÏÒÔÉÒÏ×ÁÎÉÑ ÆÁÊÌÏ× × Evolution."
-
-#: shell/importer/import.glade.h:2
-msgid "Evolution Import Utility"
-msgstr "óÒÅÄÓÔ×Ï ÉÍÐÏÒÔÉÒÏ×ÁÎÉÑ Evolution"
-
-#: shell/importer/import.glade.h:3
-msgid "Evolution Importer Utility"
-msgstr "óÒÅÄÓÔ×Ï ÉÍÐÏÒÔÉÒÏ×ÁÎÉÑ Evolution"
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-"óÒÅÄÓÔ×Ï ÉÍÐÏÒÔÉÒÏ×ÁÎÉÑ Evolution.\n"
-"üÔÏÔ ÐÏÍÏÝÎÉË ÐÒÏ×ÅÄÅÔ ×ÁÓ ÞÅÒÅÚ ÐÒÏÃÅÓÓ ÉÍÐÏÒÔÁ\n"
-"×ÎÅÛÎÉÈ ÆÁÊÌÏ× × Evolution."
-
-#: shell/importer/intelligent.c:143
-msgid "Don't ask me again"
-msgstr "îÅ ÓÐÒÁÛÉ×ÁÔØ ÓÎÏ×Á"
-
-#: shell/main.c:82
-#, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-"ðÒÉ×ÅÔ! óÐÁÓÉÂÏ, ÞÔÏ ÎÁÛÌÉ ×ÒÅÍÑ ÓËÁÞÁÔØ ÜÔÕ ÐÒÅÄ×ÁÒÉÔÅÌØÎÕÀ ×ÅÒÓÉÀ\n"
-"ÎÁÂÏÒÁ ÇÒÕÐÐÏ×ÙÈ ÐÒÉÌÏÖÅÎÉÊ \"Evolution\".\n"
-"\n"
-"Evolution ÅÝÅ ÎÅ ÚÁ×ÅÒÛÅÎÁ. îÅËÏÔÏÒÙÅ Ó×ÏÊÓÔ×Á ÐÏÞÔÉ ÒÁÂÏÔÁÀÔ, ÎÏ × "
-"ÎÅËÏÔÏÒÙÈ\n"
-"ÓÌÕÞÁÑÈ ÎÅ ÐÒÁ×ÉÌØÎÏ ÉÌÉ ÔÏÌØËÏ ÎÁÐÏÌÏ×ÉÎÕ. åÓÌÉ ×Ù ÎÅ ÍÏÖÅÔÅ ÐÏÎÑÔØ ËÁË\n"
-"ÓÄÅÌÁÔØ ÞÔÏ-ÎÉÂÕÄØ, ×ÏÚÍÏÖÎÏ ÜÔÏ ÐÏÔÏÍÕ, ÞÔÏ ÜÔÏ ÎÅ×ÏÚÍÏÖÎÏ =)\n"
-"\n"
-"íÙ ÎÁÄÅÅÍÓÑ, ÞÔÏ Evolution ÏËÁÖÅÔÓÑ ÐÏÌÅÚÎÏÊ ÄÌÑ ×ÁÓ, ÎÏ ×ÓÅ ÅÝÅ ÄÏÌÖÎÙ\n"
-"ÐÒÅÄÕÐÒÅÖÄÁÔØ ×ÁÓ Ï ÔÏÍ, ÞÔÏ Evolution ÍÏÖÅÔ: ÐÁÄÁÔØ, ÕÎÉÞÔÏÖÁÔØ\n"
-"×ÁÛÕ ÐÏÞÔÕ, ÏÓÔÁ×ÌÑÔØ ÚÁÐÕÝÅÎÎÙÍÉ ÚÁÂÌÕÄÉ×ÛÉÅÓÑ ÐÒÏÃÅÓÓÙ, ÐÏÇÌÏÝÁÔØ 100%\n"
-"ãðõ, ÚÁ×ÉÓÁÔØ, ÏÔÐÒÁ×ÌÑÔØ HTML-ÐÏÞÔÕ × ÓÌÕÞÁÊÎÙÅ ÓÐÉÓËÉ ÒÁÓÓÙÌËÉ É ÓÔÁ×ÉÔØ\n"
-"×ÁÓ × ÎÅÌÏ×ËÏÅ ÐÏÌÏÖÅÎÉÅ ÐÅÒÅÄ ÄÒÕÚØÑÍÉ É ËÏÌÌÅÇÁÍÉ. éÓÐÏÌØÚÕÊÔÅ ÎÁ Ó×ÏÊ\n"
-"ÓÔÒÁÈ É ÒÉÓË.\n"
-"\n"
-"íÙ ÎÁÄÅÅÍÓÑ, ÞÔÏ ×ÁÍ ÐÏÎÒÁ×ÑÔÓÑ ÒÅÚÕÌØÔÁÔÙ ÎÁÛÅÊ ÕÐÏÒÎÏÊ ÒÁÂÏÔÙ É ÍÙ\n"
-"ÒÁÓÓÞÉÔÙ×ÁÅÍ ÎÁ ×ÁÛÅ ÕÞÁÓÔÉÅ!\n"
-
-#: shell/main.c:107
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-"ó ÂÌÁÇÏÄÁÒÎÏÓÔØÀ\n"
-"ëÏÍÁÎÄÁ Evolution\n"
-
-#: shell/main.c:138
-msgid "Cannot initialize the Evolution shell."
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÏÂÏÌÏÞËÕ \"ü×ÏÌÀÃÉÉ\"."
-
-#: shell/main.c:184
-msgid "Disable splash screen"
-msgstr "ïÔËÌÀÞÉÔØ ÚÁÓÔÁ×ËÕ"
-
-#: shell/main.c:185
-msgid "Send the debugging output of all components to a file."
-msgstr "úÁÐÉÓÙ×ÁÔØ ÏÔÌÁÄÏÞÎÙÊ ×Ù×ÏÄ ×ÓÅÈ ËÏÍÐÏÎÅÎÔÏ× × ÆÁÊÌ."
-
-#: shell/main.c:217
-msgid "Cannot initialize the Bonobo component system."
-msgstr "îÅ ÕÄÁÌÏÓØ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ËÏÍÐÏÎÅÎÔÎÕÀ ÓÉÓÔÅÍÕ Bonobo."
-
-#: ui/evolution-addressbook.xml.h:2
-msgid "Create new contact"
-msgstr "óÏÚÄÁÔØ ÎÏ×ÙÊ ËÏÎÔÁËÔ"
-
-#: ui/evolution-addressbook.xml.h:4
-msgid "Delete a contact"
-msgstr "õÄÁÌÉÔØ ËÏÎÔÁËÔ"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-msgid "Find"
-msgstr "ðÏÉÓË"
-
-#: ui/evolution-addressbook.xml.h:6
-msgid "Find a contact"
-msgstr "ðÏÉÓË ËÏÎÔÁËÔÁ"
-
-#: ui/evolution-addressbook.xml.h:7
-msgid "New contact"
-msgstr "îÏ×ÙÊ ËÏÎÔÁËÔ"
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-mail.xml.h:53
-msgid "Previews the message to be printed"
-msgstr "ðÒÏÓÍÏÔÒ ÐÅÞÁÔÁÅÍÙÈ ÓÏÏÂÝÅÎÉÊ"
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "Print contacts"
-msgstr "ðÅÞÁÔØ ËÏÎÔÁËÔÏ×"
-
-#: ui/evolution-addressbook.xml.h:12 ui/evolution-mail.xml.h:84
-msgid "Stop"
-msgstr "óÔÏÐ"
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "Stop Loading"
-msgstr "ïÓÔÁÎÏ×ÉÔØ ÚÁÇÒÕÚËÕ"
-
-#: ui/evolution-addressbook.xml.h:14
-msgid "View All"
-msgstr "ðÒÏÓÍÏÔÒÅÔØ ×ÓÅ"
-
-#: ui/evolution-addressbook.xml.h:15
-msgid "View all contacts"
-msgstr "ðÒÏÓÍÏÔÒÅÔØ ×ÓÅ ËÏÎÔÁËÔÙ"
-
-#: ui/evolution-addressbook.xml.h:16
-msgid "_Addressbook Sources..."
-msgstr "éÓÔÏÞÎÉËÉ ÁÄÒÅÓÎÙÈ ËÎÉÇ..."
-
-#: ui/evolution-addressbook.xml.h:17
-msgid "_Contact"
-msgstr "ëÏÎÔÁËÔÙ"
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-msgid "_Print..."
-msgstr "ðÅÞÁÔØ..."
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr "ðÏÉÓË ËÏÎÔÁËÔÏ×"
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-mail.xml.h:117
-#: ui/evolution-task-editor-dialog.xml.h:88 ui/evolution.xml.h:45
-msgid "_Tools"
-msgstr "éÎÓÔÒÕÍÅÎÔÙ"
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr "5 ÄÎÅÊ"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-msgid "Alter preferences"
-msgstr "äÒÕÇÉÅ ÎÁÓÔÒÏÊËÉ"
-
-#: ui/evolution-calendar.xml.h:4
-msgid "Create a new all day Event"
-msgstr "óÏÚÄÁÔØ ÎÏ×ÏÅ ÅÖÅÄÎÅ×ÎÏÅ ÓÏÂÙÔÉÅ"
-
-#: ui/evolution-calendar.xml.h:5
-msgid "Create a new appointment"
-msgstr "óÏÚÄÁÔØ ÎÏ×ÕÀ ×ÓÔÒÅÞÕ"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr "óÏÚÄÁÔØ ÎÏ×ÙÊ ËÁÌÅÎÄÁÒØ"
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr "äÅÎØ"
-
-#: ui/evolution-calendar.xml.h:8
-msgid "Go To"
-msgstr "ðÅÒÅÊÔÉ Ë"
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr "ðÅÒÅÊÔÉ × ÐÒÏÛÌÏÅ"
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go forward in time"
-msgstr "ðÅÒÅÊÔÉ × ÂÕÄÕÝÅÅ"
-
-#: ui/evolution-calendar.xml.h:11
-msgid "Go to _Date"
-msgstr "ðÅÒÅÊÔÉ Ë ÄÁÔÅ"
-
-#: ui/evolution-calendar.xml.h:12
-msgid "Go to _Today"
-msgstr "ðÅÒÅÊÔÉ Ë ÓÅÇÏÄÎÑÛÎÅÍÕ ÄÎÀ"
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr "ðÅÒÅÊÔÉ Ë ÕËÁÚÁÎÎÏÊ ÄÁÔÅ"
-
-#: ui/evolution-calendar.xml.h:14
-msgid "Go to present time"
-msgstr "ðÅÒÅÊÔÉ Ë ÎÁÓÔÏÑÝÅÍÕ ×ÒÅÍÅÎÉ"
-
-#: ui/evolution-calendar.xml.h:15
-msgid "Month"
-msgstr "íÅÓÑÃ"
-
-#: ui/evolution-calendar.xml.h:17
-msgid "New _Event"
-msgstr "îÏ×ÏÅ ÓÏÂÙÔÉÅ"
-
-#: ui/evolution-calendar.xml.h:20
-msgid "Open Calendar"
-msgstr "ïÔËÒÙÔØ ËÁÌÅÎÄÁÒØ"
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Prev"
-msgstr "ðÒÅÄ."
-
-#: ui/evolution-calendar.xml.h:22
-msgid "Previews the calendar to be printed"
-msgstr "ðÒÏÓÍÏÔÒ ÐÅÞÁÔÁÅÍÏÇÏ ËÁÌÅÎÄÁÒÑ"
-
-#: ui/evolution-calendar.xml.h:25
-msgid "Print calendar"
-msgstr "îÁÐÅÞÁÔÁÔØ ËÁÌÅÎÄÁÒØ"
-
-#: ui/evolution-calendar.xml.h:26
-msgid "Print this Calendar"
-msgstr "îÁÐÅÞÁÔÁÔØ ÜÔÏÔ ËÁÌÅÎÄÁÒØ"
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:15
-msgid "Save As"
-msgstr "óÏÈÒÁÎÉÔØ ËÁË"
-
-#: ui/evolution-calendar.xml.h:28
-msgid "Save calendar as something else"
-msgstr "óÏÈÒÁÎÉÔØ ËÁÌÅÎÄÁÒØ ËÁË ÞÔÏ-ÎÉÂÕÄØ ÅÝÅ"
-
-#: ui/evolution-calendar.xml.h:30
-msgid "Show 1 day"
-msgstr "ðÏËÁÚÁÔØ 1 ÄÅÎØ"
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr "ðÏËÁÚÁÔØ 1 ÍÅÓÑÃ"
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr "ðÏËÁÚÁÔØ 1 ÎÅÄÅÌÀ"
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr "ðÏËÁÚÁÔØ ÒÁÂÏÞÕÀ ÎÅÄÅÌÀ"
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:229
-#: widgets/misc/e-dateedit.c:424
-msgid "Today"
-msgstr "óÅÇÏÄÎÑ"
-
-#: ui/evolution-calendar.xml.h:35
-msgid "W_ork Week"
-msgstr "òÁÂÏÞÁÑ ÎÅÄÅÌÑ"
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr "îÅÄÅÌÑ"
-
-#: ui/evolution-calendar.xml.h:37
-msgid "_Appointment"
-msgstr "÷ÓÔÒÅÞÁ"
-
-#: ui/evolution-calendar.xml.h:38
-msgid "_Day"
-msgstr "äÅÎØ"
-
-#: ui/evolution-calendar.xml.h:39
-msgid "_Month"
-msgstr "íÅÓÑÃ"
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:41
-msgid "_New"
-msgstr "îÏ×ÙÊ"
-
-#: ui/evolution-calendar.xml.h:41
-msgid "_Open Calendar"
-msgstr "ïÔËÒÙÔØ ËÁÌÅÎÄÁÒØ"
-
-#: ui/evolution-calendar.xml.h:45
-msgid "_Week"
-msgstr "îÅÄÅÌÑ"
-
-#: ui/evolution-contact-editor.xml.h:2
-msgid "Delete this item"
-msgstr "õÄÁÌÉÔØ ÜÔÏÔ ÜÌÅÍÅÎÔ"
-
-#: ui/evolution-contact-editor.xml.h:3
-msgid "Delete..."
-msgstr "õÄÁÌÉÔØ..."
-
-#: ui/evolution-contact-editor.xml.h:4
-msgid "Help"
-msgstr "óÐÒÁ×ËÁ"
-
-#: ui/evolution-contact-editor.xml.h:5
-msgid "Print En_velope..."
-msgstr "ðÅÞÁÔØ ËÏÎ×ÅÒÔÁ..."
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-msgid "Print this item"
-msgstr "ðÅÞÁÔØ ÜÔÏÇÏ ÜÌÅÍÅÎÔÁ"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-mail.xml.h:62 ui/evolution-task-editor-dialog.xml.h:41
-msgid "Print..."
-msgstr "ðÅÞÁÔØ..."
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:16
-#: ui/evolution-task-editor-dialog.xml.h:51
-msgid "Save _As..."
-msgstr "óÏÈÒÁÎÉÔØ ËÁË..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-msgid "Save and Close"
-msgstr "óÏÈÒÁÎÉÔØ É ÚÁËÒÙÔØ"
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr "óÏÈÒÁÎÉÔØ ÚÁÄÁÎÉÅ É ÚÁËÒÙÔØ ÏËÎÏ ÄÉÁÌÏÇÁ"
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr "ðÏÓÌÁÔØ ËÏÎÔÁËÔ ÄÒÕÇÏÍÕ..."
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr "ðÒÏÓÍÏÔÒ ÏÎÌÁÊÎÏ×ÏÊ ÓÐÒÁ×ËÉ"
-
-#: ui/evolution-contact-editor.xml.h:13
-msgid "Send _message to contact..."
-msgstr "ðÏÓÌÁÔØ ÓÏÏÂÝÅÎÉÅ Ë ËÏÎÔÁËÔÕ..."
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:44 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:33
-msgid "_File"
-msgstr "æÁÊÌ"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:51
-#: ui/evolution-task-editor-dialog.xml.h:85
-msgid "_Save"
-msgstr "óÏÈÒÁÎÉÔØ"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr "ï ÜÔÏÊ ÐÒÏÇÒÁÍÍÅ"
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr "ï ÐÒÏÇÒÁÍÍÅ..."
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-msgid "Actio_ns"
-msgstr "äÅÊÓÔ×ÉÑ"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-msgid "Address _Book... (FIXME)"
-msgstr "áÄÒÅÓÎÁÑ ËÎÉÇÁ... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-msgid "C_lear"
-msgstr "ïÞÉÓÔÉÔØ"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-msgid "C_ut"
-msgstr "÷ÙÒÅÚÁÔØ"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-msgid "Chec_k Names (FIXME)"
-msgstr "ðÒÏ×ÅÒÉÔØ ÉÍÅÎÁ (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-msgid "Clear"
-msgstr "ïÞÉÓÔÉÔØ"
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-msgid "Clear the selection"
-msgstr "ïÞÉÓÔÉÔØ ×ÙÄÅÌÅÎÉÅ"
-
-#: ui/evolution-event-editor.xml.h:11
-msgid "Close this appointment"
-msgstr "úÁËÒÙÔØ ÜÔÕ ×ÓÔÒÅÞÕ"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "óËÏÐÉÒÏ×ÁÔØ × ÐÁÐËÕ... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:7
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "óËÏÐÉÒÏ×ÁÔØ"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-msgid "Copy the selection"
-msgstr "óËÏÐÉÒÏ×ÁÔØ ×ÙÄÅÌÅÎÉÅ"
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr "÷ÙÒÅÚÁÔØ"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Cut the selection"
-msgstr "÷ÙÒÅÚÁÔØ ×ÙÄÅÌÅÎÉÅ"
-
-#: ui/evolution-event-editor.xml.h:18
-msgid "Delete this appointment"
-msgstr "õÄÁÌÉÔØ ÜÔÕ ×ÓÔÒÅÞÕ"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr "äÁÍÐ XML"
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr "äÁÍÐ XML ÏÐÉÓÁÎÉÑ ÉÎÔÅÒÆÅÊÓÁ"
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr "ðÅÒ×ÙÊ ÜÌÅÍÅÎÔ × ÐÁÐËÅ (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-msgid "For_ward (FIXME)"
-msgstr "ðÅÒÅÓÌÁÔØ (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr "ðÅÒÅÓÌÁÔØ ËÁË v_Calendar (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-msgid "Go to the next item"
-msgstr "ðÅÒÅÊÔÉ Ë ÓÌÅÄÕÀÝÅÍÕ ÜÌÅÍÅÎÔÕ"
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-msgid "Go to the previous item"
-msgstr "ðÅÒÅÊÔÉ Ë ÐÒÅÄÙÄÕÝÅÍÕ ÜÌÅÍÅÎÔÕ"
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-msgid "In_complete Task (FIXME)"
-msgstr "îÅÚÁ×ÅÒÛÅÎÎÏÅ ÚÁÄÁÎÉÅ (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-msgid "Modify the file's properties"
-msgstr "éÚÍÅÎÉÔØ Ó×ÏÊÓÔ×Á ÆÁÊÌÁ"
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-msgid "N_ext"
-msgstr "óÌÅÄ."
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-msgid "Paste"
-msgstr "÷ÓÔÁ×ÉÔØ"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-msgid "Paste the clipboard"
-msgstr "÷ÓÔÁ×ÉÔØ ×ÙÄÅÌÅÎÉÅ"
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr "ðÒÅÄ."
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-msgid "Print Pre_view"
-msgstr "ðÒÏÓÍÏÔÒ ÐÅÞÁÔÉ"
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-msgid "Print S_etup..."
-msgstr "îÁÓÔÒÏÊËÁ ÐÅÞÁÔÉ..."
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-msgid "Print Setup"
-msgstr "îÁÓÔÒÏÊËÁ ÓÔÒÁÎÉÃÙ"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:14
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:241
-msgid "Save"
-msgstr "óÏÈÒÁÎÉÔØ"
-
-#: ui/evolution-event-editor.xml.h:43
-msgid "Save the appointment and close the dialog box"
-msgstr "óÏÈÒÁÎÉÔØ ×ÓÔÒÅÞÕ É ÚÁËÒÙÔØ ÏËÎÏ ÄÉÁÌÏÇÁ"
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:20
-#: ui/evolution-task-editor-dialog.xml.h:53
-msgid "Save the current file"
-msgstr "óÏÈÒÁÎÉÔØ ÔÅËÕÝÉÊ ÆÁÊÌ"
-
-#: ui/evolution-event-editor.xml.h:46
-msgid "Schedule _Meeting"
-msgstr "÷ÓÔÁ×ÉÔØ ×ÓÔÒÅÞÕ × ÒÁÓÐÉÓÁÎÉÅ"
-
-#: ui/evolution-event-editor.xml.h:47
-msgid "Schedule some sort of a meeting"
-msgstr "÷ÓÔÁ×ÉÔØ × ÒÁÓÐÉÓÁÎÉÅ ×ÓÔÒÅÞÕ ÎÅËÏÔÏÒÏÇÏ ÔÉÐÁ"
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-mail.xml.h:74
-#: ui/evolution-task-editor-dialog.xml.h:57
-msgid "Select All"
-msgstr "÷ÙÂÒÁÔØ ×ÓÅ"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-msgid "Select everything"
-msgstr "÷ÙÂÒÁÔØ ×ÓÅ"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr "îÁÓÔÒÏÊËÉ ÓÔÒÁÎÉÃÙ ÄÌÑ ×ÁÛÅÇÏ ÔÅËÕÝÅÇÏ ÐÒÉÎÔÅÒÁ"
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-msgid "Task _Request (FIXME)"
-msgstr "úÁÐÒÏÓ ÚÁÄÁÎÉÑ (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-message-composer.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:63
-msgid "_About..."
-msgstr "ï ÐÒÏÇÒÁÍÍÅ..."
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:41
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:30
-msgid "_Close"
-msgstr "úÁËÒÙÔØ"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:31
-msgid "_Contact (FIXME)"
-msgstr "ëÏÎÔÁËÔ (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-msgid "_Copy"
-msgstr "óËÏÐÉÒÏ×ÁÔØ"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr "ïÔÌÁÄËÁ"
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:46
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:37
-msgid "_Help"
-msgstr "óÐÒÁ×ËÁ"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-msgid "_Item (FIXME)"
-msgstr "üÌÅÍÅÎÔ (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-msgid "_Journal Entry (FIXME)"
-msgstr "öÕÒÎÁÌØÎÁÑ ÚÁÐÉÓØ (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-msgid "_Last Item in Folder (FIXME)"
-msgstr "ðÏÓÌÅÄÎÉÊ ÜÌÅÍÅÎÔ × ÐÁÐËÅ (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-msgid "_Mail Message (FIXME)"
-msgstr "ðÏÞÔÏ×ÏÅ ÓÏÏÂÝÅÎÉÅ (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-msgid "_Move to Folder... (FIXME)"
-msgstr "ðÅÒÅÍÅÓÔÉÔØ × ÐÁÐËÕ... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-msgid "_Note (FIXME)"
-msgstr "úÁÍÅÔËÁ (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-msgid "_Paste"
-msgstr "÷ÓÔÁ×ÉÔØ"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:109
-#: ui/evolution-task-editor-dialog.xml.h:83
-msgid "_Properties..."
-msgstr "ó×ÏÊÓÔ×Á..."
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-msgid "_Select All"
-msgstr "÷ÙÂÒÁÔØ ×ÓÅ"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:44
-msgid "_Task (FIXME)"
-msgstr "úÁÄÁÎÉÅ (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-msgid "_Unread Item (FIXME)"
-msgstr "îÅÐÒÏÞÉÔÁÎÎÙÊ ÜÌÅÍÅÎÔ (FIXME)"
-
-#: ui/evolution-executive-summary.xml.h:1
-msgid "Add Service"
-msgstr "äÏÂÁ×ÉÔØ ÓÅÒ×ÉÓ"
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr "äÏÂÁ×ÉÔØ ÎÏ×ÙÊ ÓÅÒ×ÉÓ Ë Executive Summary"
-
-#: ui/evolution-executive-summary.xml.h:3
-msgid "Create a new email"
-msgstr "óÏÚÄÁÔØ ÎÏ×ÏÅ ÓÏÏÂÝÅÎÉÅ"
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr "õÓÔÁÎÏ×ËÉ Executive Summary"
-
-#: ui/evolution-executive-summary.xml.h:5
-msgid "New Mail"
-msgstr "îÏ×ÏÅ ÓÏÏÂÝÅÎÉÅ"
-
-#: ui/evolution-mail.xml.h:2
-msgid "Apply any new filters to the mail in this box"
-msgstr "ðÒÉÍÅÎÉÔØ ×ÓÅ ÎÏ×ÙÅ ÆÉÌØÔÒÙ Ë ÐÏÞÔÅ × ÜÔÏÍ ÑÝÉËÅ"
-
-#: ui/evolution-mail.xml.h:3
-msgid "Change the properties of this folder"
-msgstr "éÚÍÅÎÉÔØ Ó×ÏÊÓÔ×Á ÜÔÏÊ ÐÁÐËÉ"
-
-#: ui/evolution-mail.xml.h:4
-msgid "Compose"
-msgstr "óÏÚÄÁÔØ"
-
-#: ui/evolution-mail.xml.h:5
-msgid "Compose a new message"
-msgstr "óÏÚÄÁÔØ ÎÏ×ÏÅ ÓÏÏÂÝÅÎÉÅ"
-
-#: ui/evolution-mail.xml.h:6
-msgid "Configure Folder..."
-msgstr "îÁÓÔÒÏÉÔØ ÐÁÐËÕ..."
-
-#: ui/evolution-mail.xml.h:8
-msgid "Copy message to a new folder"
-msgstr "óËÏÐÉÒÏ×ÁÔØ ÓÏÏÂÝÅÎÉÅ × ÎÏ×ÕÀ ÐÁÐËÕ"
-
-#: ui/evolution-mail.xml.h:9
-msgid "Copy selected messages to another folder"
-msgstr "óËÏÐÉÒÏ×ÁÔØ ×ÙÂÒÁÎÎÙÅ ÓÏÏÂÝÅÎÉÑ × ÄÒÕÇÕÀ ÐÁÐËÕ"
-
-#: ui/evolution-mail.xml.h:10
-msgid "Create _Virtual Folder From Message"
-msgstr "óÏÚÄÁÔØ ×ÉÒÔ.ÐÁÐËÕ ÉÚ ÓÏÏÂÝÅÎÉÑ"
-
-#: ui/evolution-mail.xml.h:12
-msgid "Delete the selected messages"
-msgstr "õÄÁÌÉÔØ ×ÙÂÒÁÎÎÙÅ ÓÏÏÂÝÅÎÉÑ"
-
-#: ui/evolution-mail.xml.h:14
-msgid "Display all of the message headers"
-msgstr "ðÏËÁÚÁÔØ ×ÓÅ ÚÁÇÏÌÏ×ËÉ ÓÏÏÂÝÅÎÉÑ"
-
-#: ui/evolution-mail.xml.h:15
-msgid "Edit Message"
-msgstr "ðÒÁ×ËÁ ÓÏÏÂÝÅÎÉÑ"
-
-#: ui/evolution-mail.xml.h:16
-msgid "Edit the current message"
-msgstr "ðÒÁ×ËÁ ÔÅËÕÝÅÇÏ ÓÏÏÂÝÅÎÉÑ"
-
-#: ui/evolution-mail.xml.h:17
-msgid "Empty _Trash"
-msgstr "ïÞÉÓÔÉÔØ ËÏÒÚÉÎÕ"
-
-#: ui/evolution-mail.xml.h:18
-msgid "Expunge"
-msgstr "÷ÙÞÅÒËÎÕÔØ"
-
-#: ui/evolution-mail.xml.h:19
-msgid "Filter on Mailing _List"
-msgstr "æÉÌØÔÒ ÐÏ ÓÐÉÓËÕ ÒÁÓÓÙÌËÉ"
-
-#: ui/evolution-mail.xml.h:20
-msgid "Filter on Se_nder"
-msgstr "æÉÌØÔÒ ÐÏ ÏÔÐÒÁ×ÉÔÅÌÀ"
-
-#: ui/evolution-mail.xml.h:21
-msgid "Filter on _Recipients"
-msgstr "æÉÌØÔÒ ÐÏ ÐÏÌÕÞÁÔÅÌÀ"
-
-#: ui/evolution-mail.xml.h:22
-msgid "Filter on _Subject"
-msgstr "æÉÌØÔÒ ÐÏ ÔÅÍÅ"
-
-#: ui/evolution-mail.xml.h:23
-msgid "Finaly remove all mails tagged for deletion"
-msgstr "ïËÏÎÞÁÔÅÌØÎÏ ÕÄÁÌÉÔØ ×ÓÀ ÐÏÞÔÕ ÐÏÍÅÞÅÎÎÕÀ ÄÌÑ ÕÄÁÌÅÎÉÑ"
-
-#: ui/evolution-mail.xml.h:24
-msgid "Forget _Passwords"
-msgstr "úÁÂÙÔØ ÐÁÒÏÌÉ"
-
-#: ui/evolution-mail.xml.h:26
-msgid "Forward As"
-msgstr "ðÅÒÅÓÌÁÔØ ËÁË"
-
-#: ui/evolution-mail.xml.h:27
-msgid "Forward inline"
-msgstr "ðÅÒÅÓÌÁÔØ ×ÓÔÒÏÅÎÎÏÅ"
-
-#: ui/evolution-mail.xml.h:28
-msgid "Forward the selected mail to someone"
-msgstr "ðÅÒÅÓÌÁÔØ ×ÙÂÒÁÎÎÕÀ ÐÏÞÔÕ ËÏÍÕ-ÔÏ"
-
-#: ui/evolution-mail.xml.h:30
-msgid "Forward this message in-line with your mail, so you can edit it"
-msgstr ""
-"ðÅÒÅÓÌÁÔØ ÜÔÏ ÓÏÏÂÝÅÎÉÅ ×ÓÔÁ×ÌÅÎÎÙÍ × ×ÁÛÅ ÐÉÓØÍÏ, ÞÔÏÂÙ ×Ù ÍÏÇÌÉ ÐÒÁ×ÉÔØ ÅÇÏ"
-
-#: ui/evolution-mail.xml.h:31
-msgid "Full _Headers"
-msgstr "ðÏÌÎÙÅ ÚÁÇÏÌÏ×ËÉ"
-
-#: ui/evolution-mail.xml.h:32
-msgid "Go to the next message"
-msgstr "ðÅÒÅÊÔÉ Ë ÓÌÅÄÕÀÝÅÍÕ ÓÏÏÂÝÅÎÉÀ"
-
-#: ui/evolution-mail.xml.h:33
-msgid "Go to the previous message"
-msgstr "ðÅÒÅÊÔÉ Ë ÐÒÅÄÙÄÕÝÅÍÕ ÓÏÏÂÝÅÎÉÀ"
-
-#: ui/evolution-mail.xml.h:34
-msgid "Hide Deleted Messages"
-msgstr "óËÒÙÔØ ÕÄÁÌÅÎÎÙÅ ÓÏÏÂÝÅÎÉÑ"
-
-#: ui/evolution-mail.xml.h:35
-msgid "Hide S_elected Messages"
-msgstr "óËÒÙÔØ ×ÙÄÅÌÅÎÎÙÅ ÓÏÏÂÝÅÎÉÑ"
-
-#: ui/evolution-mail.xml.h:36
-msgid "Hide _Deleted Messages"
-msgstr "óËÒÙÔØ ÕÄÁÌÅÎÎÙÅ ÓÏÏÂÝÅÎÉÑ"
-
-#: ui/evolution-mail.xml.h:37
-msgid "Hide _Read messages"
-msgstr "óËÒÙÔØ ÐÒÏÞÉÔÁÎÎÙÅ ÓÏÏÂÝÅÎÉÑ"
-
-#: ui/evolution-mail.xml.h:38
-msgid "Invert Selection"
-msgstr "ïÂÒÁÔÉÔØ ×ÙÄÅÌÅÎÉÅ"
-
-#: ui/evolution-mail.xml.h:39
-msgid "Manage _Subscriptions..."
-msgstr "õÐÒÁ×ÌÅÎÉÅ ÐÏÄÐÉÓËÁÍÉ..."
-
-#: ui/evolution-mail.xml.h:41
-msgid "Mark All as R_ead"
-msgstr "ðÏÍÅÔÉÔØ ×ÓÅ ËÁË ÐÒÏÞÉÔÁÎÎÏÅ"
-
-#: ui/evolution-mail.xml.h:42
-msgid "Mark As Read"
-msgstr "ðÏÍÅÔÉÔØ ËÁË ÐÒÏÞÉÔÁÎÎÏÅ"
-
-#: ui/evolution-mail.xml.h:43
-msgid "Mark As U_nread"
-msgstr "ðÏÍÅÔÉÔØ ËÁË ÎÅÐÒÏÞÉÔÁÎÎÏÅ"
-
-#: ui/evolution-mail.xml.h:45
-msgid "Mark the selected messages as having been read"
-msgstr "ðÏÍÅÔÉÔØ ×ÙÂÒÁÎÎÙÅ ÓÏÏÂÝÅÎÉÑ ËÁË ÕÖÅ ÐÒÏÞÉÔÁÎÎÙÅ"
-
-#: ui/evolution-mail.xml.h:46
-msgid "Mark the selected messages as not having been read"
-msgstr "ðÏÍÅÔÉÔØ ×ÙÂÒÁÎÎÙÅ ÓÏÏÂÝÅÎÉÑ ËÁË ÅÝ£ ÎÅ ÐÒÏÞÉÔÁÎÎÙÅ"
-
-#: ui/evolution-mail.xml.h:47
-msgid "Move"
-msgstr "ðÅÒÅÍÅÓÔÉÔØ"
-
-#: ui/evolution-mail.xml.h:48
-msgid "Move message to a new folder"
-msgstr "ðÅÒÅÍÅÓÔÉÔØ ÓÏÏÂÝÅÎÉÅ × ÎÏ×ÕÀ ÐÁÐËÕ"
-
-#: ui/evolution-mail.xml.h:49
-msgid "Move selected messages to another folder"
-msgstr "ðÅÒÅÍÅÓÔÉÔØ ×ÙÂÒÁÎÎÙÅ ÓÏÏÂÝÅÎÉÑ × ÄÒÕÇÕÀ ÐÁÐËÕ"
-
-#: ui/evolution-mail.xml.h:51
-msgid "Open in New Window"
-msgstr "ïÔËÒÙÔØ × ÎÏ×ÏÍ ÏËÎÅ"
-
-#: ui/evolution-mail.xml.h:52
-msgid "Open the current message in a new window"
-msgstr "ïÔÐÒÁ×ÉÔØ ÔÅËÕÝÅÅ ÓÏÏÂÝÅÎÉÅ × ÎÏ×ÏÍ ÏËÎÅ"
-
-#: ui/evolution-mail.xml.h:58
-msgid "Print Preview of message..."
-msgstr "ðÒÏÓÍÏÔÒ ÐÅÞÁÔÉ ÓÏÏÂÝÅÎÉÑ..."
-
-#: ui/evolution-mail.xml.h:59
-msgid "Print message to the printer"
-msgstr "òÁÓÐÅÞÁÔÁÔØ ÓÏÏÂÝÅÎÉÅ ÎÁ ÐÒÉÎÔÅÒÅ"
-
-#: ui/evolution-mail.xml.h:60
-msgid "Print message..."
-msgstr "ðÅÞÁÔØ ÓÏÏÂÝÅÎÉÑ..."
-
-#: ui/evolution-mail.xml.h:63
-msgid "Redirect (FIXME: implement me)"
-msgstr "ðÅÒÅÎÁÐÒÁ×ÉÔØ (FIXME: ÎÅ ÒÅÁÌÉÚÏ×ÁÎÏ)"
-
-#: ui/evolution-mail.xml.h:67
-msgid "Reply to all"
-msgstr "ïÔ×ÅÔÉÔØ ×ÓÅÍ"
-
-#: ui/evolution-mail.xml.h:69
-msgid "Reply to sender"
-msgstr "ïÔ×ÅÔÉÔØ ÏÔÐÒÁ×ÉÔÅÌÀ"
-
-#: ui/evolution-mail.xml.h:71
-msgid "S_earch Message"
-msgstr "ðÏÉÓË ÓÏÏÂÝÅÎÉÑ"
-
-#: ui/evolution-mail.xml.h:72
-msgid "S_ource"
-msgstr "éÓÔÏÞÎÉË"
-
-#: ui/evolution-mail.xml.h:73
-msgid "Save the message into a new file"
-msgstr "óÏÈÒÁÎÉÔØ ÓÏÏÂÝÅÎÉÅ × ÎÏ×ÏÍ ÆÁÊÌÅ"
-
-#: ui/evolution-mail.xml.h:75 ui/evolution-subscribe.xml.h:7
-msgid "Select _All"
-msgstr "÷ÙÂÒÁÔØ ×ÓÅ"
-
-#: ui/evolution-mail.xml.h:76
-msgid "Select _Thread"
-msgstr "÷ÙÂÒÁÔØ ÐÏÄÛÉ×ËÕ"
-
-#: ui/evolution-mail.xml.h:77
-msgid "Send / Receive"
-msgstr "ðÏÌÕÞÅÎÉÅ É ÏÔÐÒÁ×ËÁ"
-
-#: ui/evolution-mail.xml.h:78
-msgid "Send a reply to the person who sent you this mail"
-msgstr "ðÏÓÌÁÔØ ÏÔ×ÅÔ ÔÏÍÕ ËÔÏ ÐÒÉÓÌÁÌ ÜÔÏ ÓÏÏÂÝÅÎÉÅ"
-
-#: ui/evolution-mail.xml.h:79
-msgid "Send a single mail in reply to all the selected mail"
-msgstr "ðÏÓÌÁÔØ ÏÄÎÏ ÐÉÓØÍÏ × ÏÔ×ÅÔ ÎÁ ×ÓÅ ×ÙÂÒÁÎÎÙÅ ÓÏÏÂÝÅÎÉÑ"
-
-#: ui/evolution-mail.xml.h:80
-msgid ""
-"Send queued mail\n"
-" and retrieve new mail"
-msgstr ""
-"ïÔÐÒÁ×ÉÔØ ÐÏÞÔÕ ÉÚ ÏÞÅÒÅÄÉ\n"
-" É ÐÏÌÕÞÉÔØ ÎÏ×ÕÀ ÐÏÞÔÕ"
-
-#: ui/evolution-mail.xml.h:82
-msgid "Send queued mail and retrieve new mail"
-msgstr "ïÔÐÒÁ×ÉÔØ ÐÏÞÔÕ ÉÚ ÏÞÅÒÅÄÉ É ÐÏÌÕÞÉÔØ ÎÏ×ÕÀ ÐÏÞÔÕ"
-
-#: ui/evolution-mail.xml.h:83
-msgid "Show _All"
-msgstr "ðÏËÁÚÁÔØ ×ÓÅ"
-
-#: ui/evolution-mail.xml.h:85
-msgid "Threaded Message list"
-msgstr "óÐÉÓÏË ÐÏÄÛÉÔÙÈ ÓÏÏÂÝÅÎÉÊ"
-
-#: ui/evolution-mail.xml.h:86
-msgid "Un-delete the selected messages"
-msgstr "÷ÅÒÎÕÔØ ÕÄÁÌ£ÎÎÙÅ ×ÙÄÅÌÅÎÎÙÅ ÓÏÏÂÝÅÎÉÑ"
-
-#: ui/evolution-mail.xml.h:87
-msgid "Undelete"
-msgstr "÷ÏÓÓÔÁÎÏ×ÉÔØ"
-
-#: ui/evolution-mail.xml.h:92
-msgid "View Raw Message Source"
-msgstr "ðÒÏÓÍÏÔÒ ÉÓÈÏÄÎÏÇÏ ÔÅËÓÔÁ ÓÏÏÂÝÅÎÉÑ"
-
-#: ui/evolution-mail.xml.h:93
-msgid "Virtual Folder _Editor..."
-msgstr "òÅÄÁËÔÏÒ ×ÉÒÔÕÁÌØÎÙÈ ÐÁÐÏË..."
-
-#: ui/evolution-mail.xml.h:94
-msgid "_Apply Filters"
-msgstr "ðÒÉÍÅÎÉÔØ ÆÉÌØÔÒÙ"
-
-#: ui/evolution-mail.xml.h:95
-msgid "_Attachment"
-msgstr "÷ÌÏÖÅÎÉÅ"
-
-#: ui/evolution-mail.xml.h:97
-msgid "_Create Filter From Message"
-msgstr "óÏÚÄÁÔØ ÆÉÌØÔÒ ÉÚ ÓÏÏÂÝÅÎÉÑ"
-
-#: ui/evolution-mail.xml.h:99
-msgid "_Expunge"
-msgstr "÷ÙÞÅÒËÎÕÔØ"
-
-#: ui/evolution-mail.xml.h:100
-msgid "_Filters..."
-msgstr "æÉÌØÔÒÙ..."
-
-#: ui/evolution-mail.xml.h:101 ui/evolution.xml.h:34
-msgid "_Folder"
-msgstr "ðÁÐËÁ"
-
-#: ui/evolution-mail.xml.h:103
-msgid "_Inline"
-msgstr "÷ÓÔÒÏÅÎÎÏÅ"
-
-#: ui/evolution-mail.xml.h:104 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr "ïÂÒÁÔÉÔØ ×ÙÄÅÌÅÎÉÅ"
-
-#: ui/evolution-mail.xml.h:105
-msgid "_Mail Message"
-msgstr "ðÏÞÔÏ×ÏÅ ÓÏÏÂÝÅÎÉÅ"
-
-#: ui/evolution-mail.xml.h:106
-msgid "_Mail Settings..."
-msgstr "õÓÔÁÎÏ×ËÉ ÐÏÞÔÙ..."
-
-#: ui/evolution-mail.xml.h:108
-msgid "_Open Selected Items"
-msgstr "ïÔËÒÙÔØ ×ÙÄÅÌÅÎÎÙÅ ÜÌÅÍÅÎÔÙ"
-
-#: ui/evolution-mail.xml.h:110
-msgid "_Quoted"
-msgstr "ðÒÏÃÉÔÉÒÏ×ÁÎÎÏÅ"
-
-#: ui/evolution-mail.xml.h:111
-msgid "_Reply"
-msgstr "ïÔ×ÅÔÉÔØ"
-
-#: ui/evolution-mail.xml.h:112
-msgid "_Resend Messages"
-msgstr "ðÅÒÅÐÏÓÌÁÔØ ÓÏÏÂÝÅÎÉÑ"
-
-#: ui/evolution-mail.xml.h:114
-msgid "_Save Message As..."
-msgstr "óÏÈÒÁÎÉÔØ ÓÏÏÂÝÅÎÉÅ ËÁË..."
-
-#: ui/evolution-mail.xml.h:115
-msgid "_Send / Receive"
-msgstr "ðÏÌÕÞÉÔØ É ÏÔÐÒÁ×ÉÔØ"
-
-#: ui/evolution-mail.xml.h:116
-msgid "_Threaded"
-msgstr "ðÏÄÛÉÔÙÅ"
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr "ðÒÉÓÏÅÄÉÎÉÔØ"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-msgid "Close the current file"
-msgstr "úÁËÒÙÔØ ÔÅËÕÝÉÊ ÆÁÊÌ"
-
-#: ui/evolution-message-composer.xml.h:5
-msgid "Encrypt this message with PGP"
-msgstr "úÁÛÉÆÒÏ×ÁÔØ ÜÔÏ ÓÏÏÂÝÅÎÉÅ Ó ÐÏÍÏÝØÀ PGP"
-
-#: ui/evolution-message-composer.xml.h:6
-msgid "F_ormat"
-msgstr "æÏÒÍÁÔ"
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "HTML"
-msgstr "HTML"
-
-#: ui/evolution-message-composer.xml.h:8
-msgid "Insert a file as text into the message"
-msgstr "÷ÓÔÁ×ÉÔØ ÆÁÊÌ ËÁË ÔÅËÓÔ × ÓÏÏÂÝÅÎÉÅ"
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert text file..."
-msgstr "÷ÓÔÁ×ÉÔØ ÔÅËÓÔÏ×ÙÊ ÆÁÊÌ..."
-
-#: ui/evolution-message-composer.xml.h:11
-msgid "Open a file"
-msgstr "ïÔËÒÙÔØ ÆÁÊÌ"
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "PGP Encrypt"
-msgstr "ûÉÆÒÏ×ÁÎÉÅ PGP"
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Sign"
-msgstr "ðÏÄÐÉÓØ PGP"
-
-#: ui/evolution-message-composer.xml.h:17
-msgid "Save _Draft"
-msgstr "óÏÈÒÁÎÉÔØ ÞÅÒÎÏ×ÉË"
-
-#: ui/evolution-message-composer.xml.h:18
-msgid "Save in _folder... (FIXME)"
-msgstr "óÏÈÒÁÎÉÔØ × ÐÁÐËÅ... (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:19
-msgid "Save in folder..."
-msgstr "óÏÈÒÁÎÉÔØ × ÐÁÐËÅ..."
-
-#: ui/evolution-message-composer.xml.h:21
-msgid "Save the current file with a different name"
-msgstr "óÏÈÒÁÎÉÔØ ÔÅËÕÝÉÊ ÆÁÊÌ ÐÏÄ ÄÒÕÇÉÍ ÉÍÅÎÅÍ"
-
-#: ui/evolution-message-composer.xml.h:22
-msgid "Save the message in a specified folder"
-msgstr "óÏÈÒÁÎÉÔØ ÓÏÏÂÝÅÎÉÅ × ÕËÁÚÁÎÎÏÊ ÐÁÐËÅ"
-
-#: ui/evolution-message-composer.xml.h:23
-msgid "Send"
-msgstr "ïÔÐÒÁ×ÉÔØ"
-
-#: ui/evolution-message-composer.xml.h:24
-msgid "Send _Later"
-msgstr "ïÔÐÒÁ×ÉÔØ ÐÏÚÖÅ"
-
-#: ui/evolution-message-composer.xml.h:25
-msgid "Send _later"
-msgstr "ïÔÐÒÁ×ÉÔØ ÐÏÚÖÅ"
-
-#: ui/evolution-message-composer.xml.h:26
-msgid "Send the mail in HTML format"
-msgstr "ïÔÐÒÁ×ÉÔØ ÐÏÞÔÕ × ÆÏÒÍÁÔÅ HTML"
-
-#: ui/evolution-message-composer.xml.h:27
-msgid "Send the message later"
-msgstr "ïÔÐÒÁ×ÉÔØ ÓÏÏÂÝÅÎÉÅ ÐÏÚÖÅ"
-
-#: ui/evolution-message-composer.xml.h:28
-msgid "Send the message now"
-msgstr "ïÔÐÒÁ×ÉÔØ ÓÏÏÂÝÅÎÉÅ ÓÅÊÞÁÓ"
-
-#: ui/evolution-message-composer.xml.h:29
-msgid "Send this message now"
-msgstr "ïÔÐÒÁ×ÉÔØ ÜÔÏ ÓÏÏÂÝÅÎÉÅ ÓÅÊÞÁÓ"
-
-#: ui/evolution-message-composer.xml.h:30
-msgid "Show / hide attachments"
-msgstr "ðÏËÁÚÁÔØ/óËÒÙÔØ ×ÌÏÖÅÎÉÑ"
-
-#: ui/evolution-message-composer.xml.h:31
-msgid "Show _attachments"
-msgstr "ðÏËÁÚÁÔØ ×ÌÏÖÅÎÉÑ"
-
-#: ui/evolution-message-composer.xml.h:32
-msgid "Show attachments"
-msgstr "ðÏËÁÚÁÔØ ×ÌÏÖÅÎÉÑ"
-
-#: ui/evolution-message-composer.xml.h:33
-msgid "Sign this message with your PGP key"
-msgstr "ðÏÄÐÉÓÁÔØ ÜÔÏ ÓÏÏÂÝÅÎÉÅ Ó ×ÁÛÉÍ PGP-ËÌÀÞÏÍ"
-
-#: ui/evolution-message-composer.xml.h:34
-msgid "Toggles whether the BCC field is displayed"
-msgstr "ðÅÒÅËÌÀÞÉÔØ ÏÔÏÂÒÁÖÅÎÉÅ ÐÏÌÑ ÓËÒÙÔÏÊ ËÏÐÉÉ"
-
-#: ui/evolution-message-composer.xml.h:35
-msgid "Toggles whether the CC field is displayed"
-msgstr "ðÅÒÅËÌÀÞÉÔØ ÏÔÏÂÒÁÖÅÎÉÅ ÐÏÌÑ ËÏÐÉÉ"
-
-#: ui/evolution-message-composer.xml.h:36
-msgid "Toggles whether the From chooser is displayed"
-msgstr "ðÅÒÅËÌÀÞÉÔØ ÏÔÏÂÒÁÖÅÎÉÅ ×ÙÂÏÒÁ ÄÌÑ ÐÏÌÑ \"ïÔ\""
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr "ðÅÒÅËÌÀÞÉÔØ ÏÔÏÂÒÁÖÅÎÉÅ ÐÏÌÑ \"ïÔ×ÅÔ\""
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "_Bcc Field"
-msgstr "ðÏÌÅ ÓËÒÙÔÏÊ ËÏÐÉÉ"
-
-#: ui/evolution-message-composer.xml.h:40
-msgid "_Cc Field"
-msgstr "ðÏÌÅ ËÏÐÉÉ"
-
-#: ui/evolution-message-composer.xml.h:45
-msgid "_From Field"
-msgstr "ðÏÌÅ \"ïÔ\""
-
-#: ui/evolution-message-composer.xml.h:47
-msgid "_Insert"
-msgstr "÷ÓÔÁ×ÉÔØ"
-
-#: ui/evolution-message-composer.xml.h:48
-msgid "_Insert text file... (FIXME)"
-msgstr "÷ÓÔÁ×ÉÔØ ÔÅËÓÔÏ×ÙÊ ÆÁÊÌ... (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:49
-msgid "_Open..."
-msgstr "ïÔËÒÙÔØ..."
-
-#: ui/evolution-message-composer.xml.h:50
-msgid "_Reply-To Field"
-msgstr "ðÏÌÅ \"ïÔ×ÅÔ\""
-
-#: ui/evolution-message-composer.xml.h:52
-msgid "_Security"
-msgstr "âÅÚÏÐÁÓÎÏÓÔØ"
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr "äÏÂÁ×ÉÔØ ÐÁÐËÕ Ë ×ÁÛÅÍÕ ÓÐÉÓËÕ ÐÁÐÏË ÐÏÄÐÉÓÏË"
-
-#: ui/evolution-subscribe.xml.h:3
-msgid "F_older"
-msgstr "ðÁÐËÁ"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr "ïÂÎÏ×ÉÔØ ÓÐÉÓÏË"
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr "ïÂÎÏ×ÉÔØ ÓÐÉÓÏË ÐÁÐÏË"
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr "õÄÁÌÉÔØ ÐÁÐËÕ ÉÚ ×ÁÛÅÇÏ ÓÐÉÓËÁ ÐÁÐÏË ÐÏÄÐÉÓÏË"
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr "ðÏÄÐÉÓÁÔØÓÑ"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr "ïÔËÁÚÁÔØÓÑ"
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-msgid "Assig_n Task (FIXME)"
-msgstr "îÁÚÎÁÞÉÔØ ÚÁÄÁÎÉÅ (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr "ðÏ×ÔÏÒÎÙÊ ÐÏÉÓË"
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-msgid "Meeting Re_quest (FIXME)"
-msgstr "úÁÐÒÏÓ ×ÓÔÒÅÞÉ (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-msgid "Redo"
-msgstr "÷ÏÚ×ÒÁÔ"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-msgid "Redo the undone action"
-msgstr "ðÏ×ÔÏÒÉÔØ ÏÔÍÅÎÅÎÎÏÅ ÄÅÊÓÔ×ÉÅ"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-msgid "Replace"
-msgstr "úÁÍÅÎÉÔØ"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-msgid "Replace a string"
-msgstr "úÁÍÅÎÉÔØ ÓÔÒÏËÕ"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-msgid "Reply to A_ll (FIXME)"
-msgstr "ïÔ×ÅÔÉÔØ ×ÓÅÍ (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-msgid "S_end Status Report (FIXME)"
-msgstr "ðÏÓÌÁÔØ ÏÔÞÅÔ Ï ÓÏÓÔÏÑÎÉÉ (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr "ðÒÏÐÕÓÔÉÔØ ÐÏ×ÔÏÒÙ (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-msgid "Save the task and close the dialog box"
-msgstr "óÏÈÒÁÎÉÔØ ÚÁÄÁÎÉÅ É ÚÁËÒÙÔØ ÏËÎÏ ÄÉÁÌÏÇÁ"
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "Search again for the same string"
-msgstr "éÓËÁÔØ ÔÕ ÖÅ ÓÔÒÏËÕ ÅÝÅ ÒÁÚ"
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-msgid "Search for a string"
-msgstr "ðÏÉÓË ÓÔÒÏËÉ"
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr "ïÔËÁÔ"
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-msgid "Undo the last action"
-msgstr "ïÔÍÅÎÉÔØ ÐÏÓÌÅÄÎÅÅ ÄÅÊÓÔ×ÉÅ"
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:29
-msgid "_Appointment (FIXME)"
-msgstr "÷ÓÔÒÅÞÁ (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-msgid "_Mark Complete (FIXME)"
-msgstr "ðÏÍÅÔÉÔØ ËÁË ×ÙÐÏÌÎÅÎÎÏÅ (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-msgid "_Reply (FIXME)"
-msgstr "ïÔ×ÅÔÉÔØ (FIXME)"
-
-#: ui/evolution-tasks.xml.h:2
-msgid "Create a new task"
-msgstr "óÏÚÄÁÔØ ÎÏ×ÏÅ ÚÁÄÁÎÉÅ"
-
-#: ui/evolution-tasks.xml.h:3
-msgid "New Task"
-msgstr "îÏ×ÏÅ ÚÁÄÁÎÉÅ"
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr "óÏÈÒÁÎÉÔØ ÚÁÄÁÎÉÅ ËÁË ÞÔÏ-ÎÉÂÕÄØ ÅÝÅ"
-
-#: ui/evolution-tasks.xml.h:6
-msgid "Tasks Preferences..."
-msgstr "îÁÓÔÒÏÊËÉ ÚÁÄÁÎÉÊ..."
-
-#: ui/evolution-tasks.xml.h:9
-msgid "_Task"
-msgstr "úÁÄÁÎÉÅ"
-
-#: ui/evolution.xml.h:1
-msgid "About Evolution..."
-msgstr "ï ÐÒÏÇÒÁÍÍÅ..."
-
-#: ui/evolution.xml.h:3
-msgid "Close this window"
-msgstr "úÁËÒÙÔØ ÜÔÏ ÏËÎÏ"
-
-#: ui/evolution.xml.h:4
-msgid "Customi_ze Toolbars..."
-msgstr "îÁÓÔÒÏÉÔØ ÐÁÎÅÌÉ ÉÎÓÔÒÕÍÅÎÔÏ×..."
-
-#: ui/evolution.xml.h:5
-msgid "Customize"
-msgstr "îÁÓÔÒÏÉÔØ"
-
-#: ui/evolution.xml.h:6
-msgid "Customize toolbars"
-msgstr "îÁÓÔÒÏÉÔØ ÐÁÎÅÌÉ ÉÎÓÔÒÕÍÅÎÔÏ×"
-
-#: ui/evolution.xml.h:7
-msgid "Display a different folder"
-msgstr "ðÏËÁÚÁÔØ ÄÒÕÇÕÀ ÐÁÐËÕ"
-
-#: ui/evolution.xml.h:8
-msgid "E_xit"
-msgstr "÷ÙÈÏÄ"
-
-#: ui/evolution.xml.h:9
-msgid "Evolution _Window"
-msgstr "ïËÎÏ Evolution"
-
-#: ui/evolution.xml.h:10
-msgid "Evolution bar _shortcut"
-msgstr "óÔÒÏËÁ ÑÒÌÙËÏ× Evolution"
-
-#: ui/evolution.xml.h:11
-msgid "Exit the program"
-msgstr "÷ÙÊÔÉ ÉÚ ÐÒÏÇÒÁÍÍÙ"
-
-#: ui/evolution.xml.h:12
-msgid "Getting _Started"
-msgstr "ëÒÁÔËÏÅ ÒÕËÏ×ÏÄÓÔ×Ï"
-
-#: ui/evolution.xml.h:13
-msgid "Import an external file format"
-msgstr "éÍÐÏÒÔÉÒÏ×ÁÔØ ×Ï ×ÎÅÛÎÉÊ ÆÏÒÍÁÔ ÆÁÊÌÁ"
-
-#: ui/evolution.xml.h:14
-msgid "Main toolbar"
-msgstr "çÌÁ×ÎÁÑ ÐÁÎÅÌØ ÉÎÓÔÒÕÍÅÎÔÏ×"
-
-#: ui/evolution.xml.h:15
-msgid "Show information about Evolution"
-msgstr "ðÏËÁÚÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ÐÒÏÇÒÁÍÍÅ Evolution"
-
-#: ui/evolution.xml.h:16
-msgid "Submit Bug Report"
-msgstr "ïÔÐÒÁ×ÉÔØ ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ"
-
-#: ui/evolution.xml.h:17
-msgid "Submit _Bug Report"
-msgstr "ïÔÐÒÁ×ÉÔØ ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ"
-
-#: ui/evolution.xml.h:18
-msgid "Submit bug report using Bug Buddy."
-msgstr "ïÔÐÒÁ×ÉÔØ ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ ÉÓÐÏÌØÚÕÑ Bug Buddy."
-
-#: ui/evolution.xml.h:19
-msgid "Toggle"
-msgstr "ðÅÒÅËÌÀÞÉÔØ"
-
-#: ui/evolution.xml.h:20
-msgid "Toggle whether to show the folder bar"
-msgstr "ðÅÒÅËÌÀÞÉÔØ ÏÔÏÂÒÁÖÅÎÉÅ ÓÔÒÏËÉ ÐÁÐÏË"
-
-#: ui/evolution.xml.h:21
-msgid "Toggle whether to show the shortcut bar"
-msgstr "ðÅÒÅËÌÀÞÉÔØ ÏÔÏÂÒÁÖÅÎÉÅ ÓÔÒÏËÉ ÚÁËÌÁÄÏË"
-
-#: ui/evolution.xml.h:22
-msgid "Toggle whether we are working offline."
-msgstr "ðÅÒÅËÌÀÞÉÔØ ÒÁÂÏÔÕ ×/×ÎÅ ÓÅÔÉ."
-
-#: ui/evolution.xml.h:23
-msgid "Using the C_ontact Manager"
-msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ ÄÉÓÐÅÔÞÅÒÁ ËÏÎÔÁËÔÏ×"
-
-#: ui/evolution.xml.h:24
-msgid "Using the _Calendar"
-msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ ËÁÌÅÎÄÁÒÑ"
-
-#: ui/evolution.xml.h:25
-msgid "Using the _Mailer"
-msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ ÐÏÞÔÙ"
-
-#: ui/evolution.xml.h:26
-msgid "Work Offline"
-msgstr "òÁÂÏÔÁÔØ ×ÎÅ ÓÅÔÉ"
-
-#: ui/evolution.xml.h:27
-msgid "_About Evolution..."
-msgstr "ï ÐÒÏÇÒÁÍÍÅ..."
-
-#: ui/evolution.xml.h:28
-msgid "_Actions"
-msgstr "äÅÊÓÔ×ÉÑ"
-
-#: ui/evolution.xml.h:35
-msgid "_Folder Bar"
-msgstr "óÔÒÏËÁ ÐÁÐËÉ"
-
-#: ui/evolution.xml.h:36
-msgid "_Go to Folder..."
-msgstr "ðÅÒÅÊÔÉ Ë ÐÁÐËÅ..."
-
-#: ui/evolution.xml.h:38
-msgid "_Import file..."
-msgstr "éÍÐÏÒÔÉÒÏ×ÁÔØ ÆÁÊÌ..."
-
-#: ui/evolution.xml.h:39
-msgid "_Index"
-msgstr "éÎÄÅËÓ"
-
-#: ui/evolution.xml.h:40
-msgid "_Mail message"
-msgstr "ðÏÞÔÏ×ÏÅ ÓÏÏÂÝÅÎÉÅ"
-
-#: ui/evolution.xml.h:42
-msgid "_New Folder"
-msgstr "îÏ×ÁÑ ÐÁÐËÁ"
-
-#: ui/evolution.xml.h:43
-msgid "_Shortcut Bar"
-msgstr "óÔÒÏËÁ ÚÁËÌÁÄÏË"
-
-#: ui/evolution.xml.h:47
-msgid "_Work Offline"
-msgstr "òÁÂÏÔÁÔØ ×ÎÅ ÓÅÔÉ"
-
-#: views/addressbook/galview.xml.h:1
-msgid "Adress Cards"
-msgstr "÷ÉÚÉÔÎÁÑ ËÁÒÔÏÞËÁ"
-
-#: views/addressbook/galview.xml.h:2
-msgid "By Company"
-msgstr "ðÏ ËÏÍÐÁÎÉÉ"
-
-#: views/addressbook/galview.xml.h:3
-msgid "Phone List"
-msgstr "óÐÉÓÏË ÔÅÌÅÆÏÎÏ×"
-
-#: views/mail/galview.xml.h:1
-msgid "By Sender"
-msgstr "ðÏ ÏÔÐÒÁ×ÉÔÅÌÀ"
-
-#: views/mail/galview.xml.h:2
-msgid "By Status"
-msgstr "ðÏ ÓÏÓÔÏÑÎÉÀ"
-
-#: views/mail/galview.xml.h:3
-msgid "By Subject"
-msgstr "ðÏ ÔÅÍÅ"
-
-#: views/mail/galview.xml.h:4
-msgid "Messages"
-msgstr "óÏÏÂÝÅÎÉÑ"
-
-#: views/tasks/galview.xml.h:2
-msgid "With Category"
-msgstr "C ËÁÔÅÇÏÒÉÅÊ:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:392
-msgid "Tentative"
-msgstr "üËÓÐÅÒÉÍÅÎÔÁÌØÎÙÊ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:393
-msgid "Busy"
-msgstr "úÁÎÑÔ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:394
-msgid "Out of Office"
-msgstr "÷ÎÅ ÏÆÉÓÁ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:395
-msgid "No Information"
-msgstr "îÅÔ ÉÎÆÏÒÍÁÃÉÉ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:411
-msgid "_Invite Others..."
-msgstr "ðÒÉÇÌÁÓÉÔØ ÄÒÕÇÉÈ..."
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:431
-msgid "_Options"
-msgstr "ðÁÒÁÍÅÔÒÙ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:448
-msgid "Show _Only Working Hours"
-msgstr "ðÏËÁÚÙ×ÁÔØ ÔÏÌØËÏ ÒÁÂÏÞÉÅ ÞÁÓÙ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:461
-msgid "Show _Zoomed Out"
-msgstr "ðÏËÁÚÙ×ÁÔØ ÕÍÅÎØÛÅÎÎÙÅ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:479
-msgid "_Update Free/Busy"
-msgstr "ïÂÎÏ×ÉÔØ ó×ÏÂÏÄÅÎ/úÁÎÑÔ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:497
-msgid "_<<"
-msgstr "<<"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:514
-msgid "_Autopick"
-msgstr "á×ÔÏ×ÙÂÏÒ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:528
-msgid ">_>"
-msgstr ">>"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:545
-msgid "_All People and Resources"
-msgstr "÷ÓÅ ÌÀÄÉ É ÒÅÓÕÒÓÙ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:558
-msgid "All _People and One Resource"
-msgstr "÷ÓÅ ÌÀÄÉ É ÏÄÉÎ ÒÅÓÕÒÓ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:571
-msgid "_Required People"
-msgstr "ôÒÅÂÕÅÍÙÅ ÌÀÄÉ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:584
-msgid "Required People and _One Resource"
-msgstr "ôÒÅÂÕÅÍÙÅ ÌÀÄÉ É ÏÄÉÎ ÒÅÓÕÒÓ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:607
-msgid "Meeting _start time:"
-msgstr "÷ÒÅÍÑ ÎÁÞÁÌÁ ÓÏÂÒÁÎÉÑ:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:631
-msgid "Meeting _end time:"
-msgstr "÷ÒÅÍÑ ÚÁ×ÅÒÛÅÎÉÑ ÓÏÂÒÁÎÉÑ:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:744
-msgid "All Attendees"
-msgstr "÷ÓÅ ÓÏÐÒÏ×ÏÖÄÅÎÉÅ"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:469
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2477
-msgid "%A, %B %d, %Y"
-msgstr "%A, %B %d, %Y"
-
-#: widgets/menus/gal-view-menus.c:176
-msgid "_Current View"
-msgstr "ôÅËÕÝÉÊ ÐÒÏÓÍÏÔÒ"
-
-#: widgets/menus/gal-view-menus.c:202
-msgid "Define Views"
-msgstr "ïÐÒÅÄÅÌÉÔØ ÏËÎÁ ÐÒÏÓÍÏÔÒÁ"
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:422
-msgid "MTWTFSS"
-msgstr "ð÷óþðó÷"
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1061 widgets/misc/e-calendar-item.c:2756
-msgid "%B %Y"
-msgstr "%B %Y"
-
-#: widgets/misc/e-cell-date-edit.c:221 widgets/misc/e-dateedit.c:418
-msgid "Now"
-msgstr "óÅÊÞÁÓ"
-
-#: widgets/misc/e-cell-date-edit.c:245
-msgid "OK"
-msgstr "ïË"
-
-#: widgets/misc/e-cell-date-edit.c:726
-#, c-format
-msgid "The time must be in the format: %s"
-msgstr "÷ÒÅÍÑ ÄÏÌÖÎÏ ÂÙÔØ × ÆÏÒÍÁÔÅ: %s"
-
-#: widgets/misc/e-clipped-label.c:112
-msgid "..."
-msgstr "..."
-
-#: widgets/misc/e-filter-bar.c:168
-msgid "Save Search"
-msgstr "óÏÈÒÁÎÉÔØ ÒÅÚÕÌØÔÁÔÙ ÐÏÉÓËÁ"
-
-#: widgets/misc/e-filter-bar.c:239
-msgid "Advanced Search"
-msgstr "òÁÓÛÉÒÅÎÎÙÊ ÐÏÉÓË"
-
-#: widgets/misc/e-filter-bar.h:101
-msgid "Save As..."
-msgstr "óÏÈÒÁÎÉÔØ ËÁË..."
-
-#: widgets/misc/e-filter-bar.h:102
-msgid "Show All"
-msgstr "ðÏËÁÚÁÔØ ×ÓÅ"
-
-#: widgets/misc/e-filter-bar.h:103
-msgid "Edit..."
-msgstr "ðÒÁ×ËÁ..."
-
-#: widgets/misc/e-filter-bar.h:104
-msgid "Advanced..."
-msgstr "òÁÓÛÉÒÅÎÎÙÅ..."
-
-#: widgets/misc/e-messagebox.c:152
-msgid "Information"
-msgstr "éÎÆÏÒÍÁÃÉÑ"
-
-#: widgets/misc/e-messagebox.c:159
-msgid "Warning"
-msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ"
-
-#: widgets/misc/e-messagebox.c:173
-msgid "Question"
-msgstr "÷ÏÐÒÏÓ"
-
-#: widgets/misc/e-messagebox.c:180
-msgid "Message"
-msgstr "óÏÏÂÝÅÎÉÅ"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:224
-msgid "Don't show this message again."
-msgstr "îÅ ÐÏËÁÚÙ×ÁÔØ ÜÔÏ ÓÏÏÂÝÅÎÉÅ ÓÎÏ×Á."
-
-#: widgets/misc/e-search-bar.c:155
-msgid "Sear_ch"
-msgstr "ðÏÉÓË"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-msgid "The Personal Addressbook Server"
-msgstr "óÅÒ×ÅÒ ÐÅÒÓÏÎÁÌØÎÙÈ ÁÄÒÅÓÎÙÈ ËÎÉÇ"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr "ðÅÒÓÏÎÁÌØÎÙÊ ËÁÌÅÎÄÁÒÎÙÊ ÓÅÒ×ÅÒ; ÆÁÂÒÉËÁ ËÁÌÅÎÄÁÒÑ"
-
-#: wombat/wombat.c:173
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr "setup_vfs(): îÅ ÕÄÁÌÏÓØ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ GNOME-VFS"
-
-#: wombat/wombat.c:185
-msgid "init_corba(): could not initialize GNOME"
-msgstr "init_corba(): îÅ ÕÄÁÌÏÓØ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ GNOME"
-
-#: wombat/wombat.c:198
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "init_bonobo(): îÅ ÕÄÁÌÏÓØ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ Bonobo"
diff --git a/po/sk.po b/po/sk.po
deleted file mode 100644
index 4074dc4148..0000000000
--- a/po/sk.po
+++ /dev/null
@@ -1,9206 +0,0 @@
-# evolution Slovak translation.
-# Copyright (C) 2001 Free Software Foundation, Inc.
-# Stanislav Visnovsky <visnovsky@nenya.ms.mff.cuni.cz>, 2001.
-msgid ""
-msgstr ""
-"Project-Id-Version: evolution 0.10\n"
-"POT-Creation-Date: 2001-05-15 13:50+0200\n"
-"PO-Revision-Date: 2001-05-15 14:39CET\n"
-"Last-Translator: Stanislav Visnovsky <visnovsky@nenya.ms.mff.cuni.cz>\n"
-"Language-Team: Slovak <sk-i18n@rak.isternet.sk>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-2\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 0.9\n"
-
-#: addressbook/backend/ebook/e-card.c:3314
-msgid "Card: "
-msgstr "Karta: "
-
-#: addressbook/backend/ebook/e-card.c:3316
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-"\n"
-"Meno: "
-
-#: addressbook/backend/ebook/e-card.c:3317
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-"\n"
-" Predpona: "
-
-#: addressbook/backend/ebook/e-card.c:3318
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-"\n"
-" Krstné: "
-
-#: addressbook/backend/ebook/e-card.c:3319
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-"\n"
-" Ïal¹ie: "
-
-#: addressbook/backend/ebook/e-card.c:3320
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-"\n"
-" Priezvisko: "
-
-#: addressbook/backend/ebook/e-card.c:3321
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-"\n"
-" Prípona: "
-
-#: addressbook/backend/ebook/e-card.c:3335
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-"\n"
-"Dátum narodenia:"
-
-#: addressbook/backend/ebook/e-card.c:3346
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-"\n"
-"Adresa:"
-
-#: addressbook/backend/ebook/e-card.c:3348
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-"\n"
-"Po¹tová schránka:"
-
-#: addressbook/backend/ebook/e-card.c:3349
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-"\n"
-" Príp: "
-
-#: addressbook/backend/ebook/e-card.c:3350
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-"\n"
-" Ulica: "
-
-#: addressbook/backend/ebook/e-card.c:3351
-msgid ""
-"\n"
-" City: "
-msgstr ""
-"\n"
-" Mesto: "
-
-#: addressbook/backend/ebook/e-card.c:3352
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-"\n"
-" Región: "
-
-#: addressbook/backend/ebook/e-card.c:3353
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-"\n"
-" PSÈ: "
-
-#: addressbook/backend/ebook/e-card.c:3354
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-"\n"
-" Krajina: "
-
-#: addressbook/backend/ebook/e-card.c:3367
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-"\n"
-"Dodacie ozn:"
-
-#: addressbook/backend/ebook/e-card.c:3379
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-"\n"
-"Telefóny:\n"
-
-#: addressbook/backend/ebook/e-card.c:3382
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-"\n"
-" Telefón: "
-
-#: addressbook/backend/ebook/e-card.c:3406
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-"\n"
-"E-mail:\n"
-
-#: addressbook/backend/ebook/e-card.c:3409
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-"\n"
-"E-mail:"
-
-#: addressbook/backend/ebook/e-card.c:3428
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-"\n"
-"Po¹t.klient:"
-
-#: addressbook/backend/ebook/e-card.c:3434
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-"\n"
-"Èasová zóna:"
-
-#: addressbook/backend/ebook/e-card.c:3442
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-"\n"
-"Miesto: "
-
-#: addressbook/backend/ebook/e-card.c:3446
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-"\n"
-"Pozícia: "
-
-#: addressbook/backend/ebook/e-card.c:3458
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-"\n"
-"Org: "
-
-#: addressbook/backend/ebook/e-card.c:3459
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-"\n"
-" Meno: "
-
-#: addressbook/backend/ebook/e-card.c:3460
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-"\n"
-" Vlastné:"
-
-#: addressbook/backend/ebook/e-card.c:3461
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-"\n"
-" Vlastné2: "
-
-#: addressbook/backend/ebook/e-card.c:3462
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-"\n"
-" Vlastné3: "
-
-#: addressbook/backend/ebook/e-card.c:3463
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-"\n"
-" Vlastné4: "
-
-#: addressbook/backend/ebook/e-card.c:3467
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-"\n"
-"Kategórie: "
-
-#: addressbook/backend/ebook/e-card.c:3468
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-"\n"
-"Poznámka "
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3481
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-"\n"
-"Unikátny re»azec:"
-
-#: addressbook/backend/ebook/e-card.c:3484
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-"\n"
-"Verejný kµúè:"
-
-#: addressbook/backend/ebook/e-card.c:3745
-msgid "Multiple VCards"
-msgstr "Viacero VKariet"
-
-#: addressbook/backend/ebook/e-card.c:3753
-#, c-format
-msgid "VCard for %s"
-msgstr "VKartapre %s"
-
-#: addressbook/backend/ebook/e-destination.c:232
-msgid "???"
-msgstr "???"
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_VCard_Importer.oaf.in.h:1
-msgid "Factory to import VCard files into Evolution."
-msgstr "Vytváracie rozhranie pre import súborov VCard do Evolution."
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_VCard_Importer.oaf.in.h:2
-msgid "Imports VCard files into Evolution."
-msgstr "Importuje súbory VCard do Evolution."
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:21
-#: addressbook/backend/ebook/load-pine-addressbook.c:22
-#: addressbook/backend/ebook/test-client-list.c:23
-#: addressbook/backend/ebook/test-client.c:33
-#: addressbook/conduit/address-conduit.c:1092
-#: addressbook/gui/component/addressbook-factory.c:42
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:98 calendar/gui/main.c:57
-msgid "Could not initialize Bonobo"
-msgstr "Nie je mo¾né inicializova» Bonobo"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr "Kurzor nie je mo¾né naèíta»\n"
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr "EBook nenaèítaný\n"
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr "Nie je mo¾né spusti» server wombat"
-
-#: addressbook/conduit/address-conduit.c:655
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr "Nie je mo¾né spusti» wombat"
-
-#: addressbook/conduit/address-conduit.c:687
-#: addressbook/conduit/address-conduit.c:690
-msgid "Could not read pilot's Address application block"
-msgstr "Nie je mo¾né preèíta» blok aplikácie Adresa z pilota"
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:7
-msgid "Add"
-msgstr "Prida»"
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr "_Výroèie:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr "Do _práce"
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr "_Fax do práce"
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-msgid "C_ontacts..."
-msgstr "_Kontakty..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr "Ka_tegórie..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-msgid "Contact Editor"
-msgstr "Editor kontaktov"
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr "Detaily"
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr "Ulo¾i» ako:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-msgid "General"
-msgstr "V¹eobecné"
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr "Nový typ telefónu"
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-msgid "No_tes:"
-msgstr "_Poznámky:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr "Typy telefónov"
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1284
-msgid "Primary Email"
-msgstr "Primárny e-mail"
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr "Chce prijíma» po¹tu ako _HTML"
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr "Adresa WWW stránky:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:84
-msgid "_Add"
-msgstr "_Prida»"
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr "_Adresa..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr "Meno _asistenta:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr "Dátum na_rodenia:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr "_Práca"
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-msgid "_Company:"
-msgstr "_Firma:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/folder-browser.c:649 mail/mail-config.glade.h:85
-#: ui/evolution-event-editor.xml.h:57 ui/evolution-mail.xml.h:101
-#: ui/evolution-task-editor-dialog.xml.h:69
-msgid "_Delete"
-msgstr "_Odstráni»"
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr "O_ddelenie:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr "_Celé meno..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-msgid "_Home"
-msgstr "_Domov"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-msgid "_Job title:"
-msgstr "Èinnos»/po_zícia:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr "Meno _vedúceho:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-msgid "_Mobile"
-msgstr "_Mobil"
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr "Pre_zývka:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr "Prac_ovisko:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr "_Povolanie:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr "Ma_n¾el(ka):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr "_Toto je e-mailová adresa"
-
-#: addressbook/contact-editor/e-contact-editor.c:603
-msgid "This contact belongs to these categories:"
-msgstr "Tento kontakt patrí do týchto kategórií:"
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-#: addressbook/gui/widgets/e-addressbook-view.c:676
-msgid "Assistant"
-msgstr "Asistent"
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/contact-editor/e-contact-editor.c:1310
-msgid "Business"
-msgstr "Práca"
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-msgid "Business 2"
-msgstr "Práca 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#: addressbook/gui/widgets/e-addressbook-view.c:656
-msgid "Business Fax"
-msgstr "Pracovný fax"
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Callback"
-msgstr "Spätné volanie"
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "Car"
-msgstr "Auto"
-
-#: addressbook/contact-editor/e-contact-editor.c:1248
-msgid "Company"
-msgstr "Firma"
-
-#: addressbook/contact-editor/e-contact-editor.c:1249
-#: addressbook/contact-editor/e-contact-editor.c:1311
-msgid "Home"
-msgstr "Domov"
-
-#: addressbook/contact-editor/e-contact-editor.c:1250
-msgid "Home 2"
-msgstr "Domov 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1251
-#: addressbook/gui/widgets/e-addressbook-view.c:657
-msgid "Home Fax"
-msgstr "Domáci fax"
-
-#: addressbook/contact-editor/e-contact-editor.c:1252
-#: addressbook/gui/widgets/e-addressbook-view.c:660
-msgid "ISDN"
-msgstr "ISDN"
-
-#: addressbook/contact-editor/e-contact-editor.c:1253
-msgid "Mobile"
-msgstr "Mobil"
-
-#: addressbook/contact-editor/e-contact-editor.c:1254
-#: addressbook/contact-editor/e-contact-editor.c:1312
-msgid "Other"
-msgstr "Iné"
-
-#: addressbook/contact-editor/e-contact-editor.c:1255
-#: addressbook/gui/widgets/e-addressbook-view.c:662
-msgid "Other Fax"
-msgstr "Ïal¹í fax"
-
-#: addressbook/contact-editor/e-contact-editor.c:1256
-#: addressbook/gui/widgets/e-addressbook-view.c:663
-msgid "Pager"
-msgstr "Pager"
-
-#: addressbook/contact-editor/e-contact-editor.c:1257
-msgid "Primary"
-msgstr "Primárny"
-
-#: addressbook/contact-editor/e-contact-editor.c:1258
-#: addressbook/gui/widgets/e-addressbook-view.c:664
-msgid "Radio"
-msgstr "Rádio"
-
-#: addressbook/contact-editor/e-contact-editor.c:1259
-#: addressbook/gui/widgets/e-addressbook-view.c:665
-msgid "Telex"
-msgstr "Telex"
-
-#: addressbook/contact-editor/e-contact-editor.c:1260
-msgid "TTY/TDD"
-msgstr "TTY/TDD"
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:668
-msgid "Email 2"
-msgstr "E-mail 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/gui/widgets/e-addressbook-view.c:669
-msgid "Email 3"
-msgstr "E-mail 3"
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-msgid "Delete Contact?"
-msgstr "Odstráni» kontakt?"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:233
-msgid "Contact Quick-Add"
-msgstr "Rýchly kontakt"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:235
-msgid "Edit Full"
-msgstr "Upravi» celé"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:276
-#: addressbook/gui/widgets/e-addressbook-view.c:643
-msgid "Full Name"
-msgstr "Celé meno"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:282
-msgid "E-mail"
-msgstr "E-mail"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr "Adresa _2:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr "Kanada"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr "Skontrolova» adresu"
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr "Kra_jina:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr "Fínsko"
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr "USA"
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr "_Adresa:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-msgid "_City:"
-msgstr "_Mesto:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr "_PO Box:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr "_©tát/Provincia:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr "_PSÈ:"
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr "Skontrolova» celé meno"
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr "Dr. "
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr "Esq."
-
-#: addressbook/contact-editor/fullname.glade.h:4
-msgid "I"
-msgstr "I"
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr "II"
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr "III"
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr "Ml."
-
-#: addressbook/contact-editor/fullname.glade.h:8
-msgid "Miss"
-msgstr "Sleèna"
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr "Pán"
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr "Pani"
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr "Sl."
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr "St."
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr "_Krstné:"
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr "_Priezvisko:"
-
-#: addressbook/contact-editor/fullname.glade.h:15
-msgid "_Middle:"
-msgstr "_Stredné:"
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr "_Prípona:"
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr "_Titul:"
-
-#: addressbook/gui/component/addressbook.c:242
-msgid "As _Minicards"
-msgstr "Ako _minikarty"
-
-#: addressbook/gui/component/addressbook.c:248
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr "Ako _tabuµku"
-
-#: addressbook/gui/component/addressbook.c:408
-#, c-format
-msgid "Enter password for %s"
-msgstr "Zadajte heslo pre %s"
-
-#: addressbook/gui/component/addressbook.c:436
-msgid "Unable to open addressbook"
-msgstr "Nie je mo¾né otvori» adresár"
-
-#: addressbook/gui/component/addressbook.c:443
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or the LDAP server\n"
-"is down"
-msgstr ""
-"Nebolo mo¾né otvori» tento adresár. To buï znamená, ¾e ste\n"
-"zadali neplatné URI, alebo LDAP server nefunguje."
-
-#: addressbook/gui/component/addressbook.c:448
-msgid ""
-"This version of Evolution does not have LDAP support\n"
-"compiled in to it. If you want to use LDAP in Evolution\n"
-"you must compile the program from the CVS sources after\n"
-"retrieving OpenLDAP from the link below.\n"
-msgstr ""
-"Táto verzia Evolution nemá zakompilovanú podporu LDAP.\n"
-"Ak chcete LDAP v Evolution pou¾íva», musíte ho prekompilova»\n"
-"z CVS po získaní OpenLDAP z tohto odkazu.\n"
-
-#: addressbook/gui/component/addressbook.c:456
-msgid ""
-"We were unable to open this addressbook. Please check that the\n"
-"path exists and that you have permission to access it."
-msgstr ""
-"Nebolo mo¾né otvori» tento adresár. Prosím, overte, ¾e cesta\n"
-"existuje a ¾e máte dostatoèné práva."
-
-#: addressbook/gui/component/addressbook.c:616 calendar/gui/gnome-cal.c:233
-msgid "Any field contains"
-msgstr "¥ubovoµné pole obsahuje"
-
-#: addressbook/gui/component/addressbook.c:617
-msgid "Name contains"
-msgstr "Meno obsahuje"
-
-#: addressbook/gui/component/addressbook.c:618
-msgid "Email contains"
-msgstr "E-mail obsahuje"
-
-#: addressbook/gui/component/addressbook.c:761
-msgid "The URI that the Folder Browser will display"
-msgstr "URI, ktoré zobrazí prehliadaè prieèinku"
-
-#: addressbook/gui/component/addressbook-config.c:148
-msgid "LDAP Server"
-msgstr "LDAP Server"
-
-#: addressbook/gui/component/addressbook-config.c:150
-msgid "File"
-msgstr "Súbor"
-
-#: addressbook/gui/component/addressbook-config.c:153
-msgid "Unknown addressbook type"
-msgstr "Neznámy typ adresára"
-
-#: addressbook/gui/component/addressbook-config.c:163
-msgid "None (anonymous mode)"
-msgstr "®iadny (anonymný mód)"
-
-#: addressbook/gui/component/addressbook-config.c:165
-#: camel/camel-sasl-plain.c:32 camel/providers/imap/camel-imap-provider.c:80
-#: camel/providers/nntp/camel-nntp-store.c:291
-#: camel/providers/pop3/camel-pop3-provider.c:67 mail/mail-config.glade.h:52
-msgid "Password"
-msgstr "Heslo"
-
-#: addressbook/gui/component/addressbook-config.c:168
-msgid "Unknown auth type"
-msgstr "Neznámy typ overenia"
-
-#: addressbook/gui/component/addressbook-config.c:177
-msgid "Base"
-msgstr "Sústava"
-
-#: addressbook/gui/component/addressbook-config.c:179
-msgid "One"
-msgstr "Jeden"
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "Subtree"
-msgstr "Podstrom"
-
-#: addressbook/gui/component/addressbook-config.c:184
-msgid "Unknown scope type"
-msgstr "Neznámy typ rozsahu"
-
-#: addressbook/gui/component/addressbook-config.c:349
-msgid "Bind DN:"
-msgstr "Pripájacie DN:"
-
-#: addressbook/gui/component/addressbook-config.c:350
-msgid "FIXME Bind DN Help text here"
-msgstr "FIXME Pomocník pre Bind DN"
-
-#: addressbook/gui/component/addressbook-config.c:352
-#: mail/mail-config.glade.h:60
-msgid "Remember this password"
-msgstr "Ulo¾i» toto heslo"
-
-#: addressbook/gui/component/addressbook-config.c:401
-#: mail/mail-config.glade.h:33
-msgid "Host:"
-msgstr "Hostiteµ:"
-
-#: addressbook/gui/component/addressbook-config.c:402
-msgid "FIXME Host help text here."
-msgstr "FIXME Pomocník pre Host"
-
-#: addressbook/gui/component/addressbook-config.c:404
-msgid "Root DN:"
-msgstr "Koreòové DN:"
-
-#: addressbook/gui/component/addressbook-config.c:405
-msgid "FIXME Root DN help text here."
-msgstr "FIXME Pomocník pre Root DN"
-
-#: addressbook/gui/component/addressbook-config.c:409
-msgid "Port:"
-msgstr "Port:"
-
-#: addressbook/gui/component/addressbook-config.c:410
-msgid "FIXME Port help text here."
-msgstr "FIXME Pomocník pre Port"
-
-#: addressbook/gui/component/addressbook-config.c:430
-msgid "Search Scope:"
-msgstr "Oblas» hµadania:"
-
-#: addressbook/gui/component/addressbook-config.c:477
-msgid "Authentication:"
-msgstr "Overenie:"
-
-#: addressbook/gui/component/addressbook-config.c:499
-msgid "Advanced LDAP Options"
-msgstr "Pokroèilé mo¾nosti LDAP"
-
-#: addressbook/gui/component/addressbook-config.c:520
-#: mail/mail-config.glade.h:53
-msgid "Path:"
-msgstr "Cesta:"
-
-#: addressbook/gui/component/addressbook-config.c:521
-msgid "FIXME Path Help text here"
-msgstr "FIXME Pomocník pre Path"
-
-#: addressbook/gui/component/addressbook-config.c:526
-msgid "Create path if it doesn't exist."
-msgstr "Vytvori» cestu, ak e¹te neexistuje."
-
-#: addressbook/gui/component/addressbook-config.c:660
-msgid "Edit Addressbook"
-msgstr "Upravi» adresár"
-
-#: addressbook/gui/component/addressbook-config.c:662
-msgid "Add Addressbook"
-msgstr "Prida» adresár"
-
-#: addressbook/gui/component/addressbook-config.c:680
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr "Vyberte typ adresára, ktorý máte, a zadajte po¾adované informácie."
-
-#: addressbook/gui/component/addressbook-config.c:686
-#: mail/mail-config.glade.h:43
-msgid "Name:"
-msgstr "Meno:"
-
-#: addressbook/gui/component/addressbook-config.c:687
-msgid "FIXME Name help text here"
-msgstr "FIXME Pomocník pre Name"
-
-#: addressbook/gui/component/addressbook-config.c:689
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr "Popis:"
-
-#: addressbook/gui/component/addressbook-config.c:690
-msgid "FIXME Description help text here"
-msgstr "FIXME Pomocník pre Description"
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-msgid "Addressbook Sources"
-msgstr "Zdroje adresára"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: addressbook/gui/widgets/e-addressbook-view.c:578
-#: addressbook/gui/widgets/e-minicard-view-model.c:253
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:11 mail/mail-config.glade.h:23
-#: mail/message-browser.c:202 ui/evolution-addressbook.xml.h:3
-#: ui/evolution-event-editor.xml.h:17 ui/evolution-mail.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr "Odstráni»"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:28
-msgid "Edit"
-msgstr "Upravi»"
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-msgid "Name"
-msgstr "Meno"
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-msgid "URI"
-msgstr "URI"
-
-#: addressbook/gui/component/addressbook-storage.c:99
-msgid "Other Contacts"
-msgstr "Iné kontakty"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Disable Queries"
-msgstr "Zakáza» otázky"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Enable Queries (Dangerous!)"
-msgstr "Povoli» otázky (nebezpeèné)"
-
-#: addressbook/gui/component/e-address-widget.c:388
-#: addressbook/gui/component/select-names/e-select-names-popup.c:210
-msgid "Edit Contact Info"
-msgstr "Upravi» kontakt"
-
-#: addressbook/gui/component/e-address-widget.c:424
-#: addressbook/gui/component/select-names/e-select-names-popup.c:269
-msgid "Add to Contacts"
-msgstr "Prida» do kontaktov"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-msgid "A Bonobo control for an address popup."
-msgstr "Ovládací prvok Bonobo pre adresy."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A Bonobo control for displaying an address."
-msgstr "Ovládací prvok Bonobo, ktorý zobrazuje adresy."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr "Uká¾kový ovládací prvok Bonobo, ktorý zobrazuje adresár."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr "Ovládací prvok pre zobrazenie minikariet adresára Evolution."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-msgid "Evolution Addressbook minicard viewer"
-msgstr "Prehliadaè minikariet adresára Evolution"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-msgid "Evolution component for handling contacts."
-msgstr "Komponent Evolution pre prácu s kontaktami."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-msgid "Factory for the Addressbook Minicard control"
-msgstr "Vytváracie rozhranie pre ovládací prvok minikariet adresára."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-msgid "Factory for the Addressbook's address displayer"
-msgstr "Vytváracie rozhranie pre zobrazovaè adries Adresára"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-msgid "Factory for the Addressbook's address popup"
-msgstr "Vytváracie rozhranie pre rozhranie adresu z Adresára."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:10
-msgid "Factory for the Evolution addressbook component."
-msgstr "Vytváracie rozhranie pre komponent adresára Evolution."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:11
-msgid "Factory for the sample Addressbook control"
-msgstr "Vytváracie rozhranie pre uká¾kový ovládací prvok Adresár"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:131
-#: composer/e-msg-composer-attachment-bar.c:468 filter/filter-filter.c:401
-#: filter/filter-rule.c:549 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:265 shell/e-shortcuts-view.c:388
-msgid "Remove"
-msgstr "Odstráni»"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:146
-msgid "Remove All"
-msgstr "Odstráni» v¹etky"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-msgid "Evolution's addressbook name selection interface."
-msgstr "Rozhranie pre výber mena adresára Evolution."
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr "Vytváracie rozhranie pre rozhranie pre výber mena adresára."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr "Nájs»..."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-msgid "Message Recipients"
-msgstr "Adresáti správy"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-msgid "Select Names"
-msgstr "Výber mien"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-msgid "Select name from:"
-msgstr "Vybra» meno z:"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:158
-#: mail/mail-search.c:213
-msgid "Search"
-msgstr "Hµada»"
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr "123"
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr "a"
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr "b"
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr "c"
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr "d"
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr "e"
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr "f"
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr "g"
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr "h"
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr "i"
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr "j"
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr "k"
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr "l"
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr "m"
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr "n"
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-msgid "o"
-msgstr "o"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr "p"
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr "q"
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-msgid "r"
-msgstr "r"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr "s"
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr "t"
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr "u"
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr "v"
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr "w"
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr "x"
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr "y"
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr "z"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:513
-#: addressbook/gui/widgets/e-addressbook-view.c:573
-#: addressbook/gui/widgets/e-minicard-view-model.c:152
-#: addressbook/gui/widgets/e-minicard-view-model.c:248
-msgid "Save as VCard"
-msgstr "Ulo¾i» ako vKartu"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:574
-#: addressbook/gui/widgets/e-minicard-view-model.c:249
-msgid "Send contact to other"
-msgstr "Posla» kontakt inému"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:575
-#: addressbook/gui/widgets/e-minicard-view-model.c:250
-msgid "Send message to contact"
-msgstr "Posla» správu kontaktu"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:576
-#: addressbook/gui/widgets/e-minicard-view-model.c:251
-#: mail/message-browser.c:199 ui/evolution-addressbook.xml.h:9
-#: ui/evolution-calendar.xml.h:23 ui/evolution-mail.xml.h:59
-#: ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr "Tlaèi»"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:577
-#: addressbook/gui/widgets/e-minicard-view-model.c:252
-msgid "Print Envelope"
-msgstr "Tlaèi» obálku"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:641
-msgid "* Click here to add a contact *"
-msgstr "* kliknutím pridáte kontakt *"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:642
-msgid "File As"
-msgstr "Ulo¾i» ako"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:644
-msgid "Email"
-msgstr "E-mail"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:645
-msgid "Primary Phone"
-msgstr "Primárny telefón"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:646
-msgid "Assistant Phone"
-msgstr "Asistentov telefón"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:647
-msgid "Business Phone"
-msgstr "Telefón do zamestania"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:648
-msgid "Callback Phone"
-msgstr "Spätné volanie"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:649
-msgid "Company Phone"
-msgstr "Firemný felefón"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:650
-msgid "Home Phone"
-msgstr "Telefón domov"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:651
-msgid "Organization"
-msgstr "Organizácia"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:652
-msgid "Business Address"
-msgstr "Adresa zamestania"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:653
-msgid "Home Address"
-msgstr "Adresa domov"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:654
-msgid "Mobile Phone"
-msgstr "Mobil"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:655
-msgid "Car Phone"
-msgstr "Telefón v aute"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:658
-msgid "Business Phone 2"
-msgstr "Telefón do zamestnania 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:659
-msgid "Home Phone 2"
-msgstr "Telefón domov 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:661
-msgid "Other Phone"
-msgstr "Iný telefón"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:666
-msgid "TTY"
-msgstr "TTY"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:667
-msgid "Other Address"
-msgstr "Iná adresa"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:670
-msgid "Web Site"
-msgstr "WWW stránka"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:671
-msgid "Department"
-msgstr "Oddelenie"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:672
-msgid "Office"
-msgstr "Pracovisko"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:673
-msgid "Title"
-msgstr "Titul"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:674
-msgid "Profession"
-msgstr "Povolanie"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:675
-msgid "Manager"
-msgstr "Vedúci"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:677
-msgid "Nickname"
-msgstr "Prezývka"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:678
-msgid "Spouse"
-msgstr "Man¾el(ka)"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:679
-msgid "Note"
-msgstr "Poznámka"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:680
-msgid "Free-busy URL"
-msgstr "Voµno/zaneprázdnený URL"
-
-#: addressbook/gui/widgets/e-minicard-control.c:282
-msgid "Save in addressbook"
-msgstr "Ulo¾i» do adresára"
-
-#: addressbook/gui/widgets/e-minicard-view.c:507
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-"\n"
-"\n"
-"V tomto pohµade nie je èo ukáza»\n"
-"\n"
-"Dvojitým kliknutím vytvoríte nový kontakt."
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:26
-msgid "Card View"
-msgstr "Karta"
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr "10 bd. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr "8 bd. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr "Prázdnych strán na konci:"
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr "Telo"
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr "Spodný:"
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr "Rozmery:"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr "Písmo..."
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr "Písma"
-
-#: addressbook/printing/e-contact-print.glade.h:9
-msgid "Footer:"
-msgstr "Pätièka:"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr "Formát"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-msgid "Header"
-msgstr "Hlavièka"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr "Hlavièka/Pätièka"
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr "Hlavièky"
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr "Hlavièky pre ka¾dý list"
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr "Vý¹ka:"
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr "Okam¾ite jeden za druhým"
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr "Vlo¾i»:"
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr "Na ¹írku"
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr "¥avý:"
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr "Zálo¾ky písmen na okraji"
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr "Okraje"
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr "Poèet ståpcov:"
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr "Nastavenie"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr "Orientácia"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr "Strana"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-msgid "Page Setup:"
-msgstr "Nastavenie stránky:"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr "Papier"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr "Zdroj papiera:"
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr "Na vý¹ku"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr "Náhµad:"
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr "Tlaèi» v stupòoch ¹edej"
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr "Opaène na párnych stránkach"
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr "Pravý:"
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr "Èasti:"
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr "Tieòovanie"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-msgid "Size:"
-msgstr "Veµkos»:"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr "Zaèa» na novej stránke"
-
-#: addressbook/printing/e-contact-print.glade.h:38
-msgid "Style name:"
-msgstr "Meno ¹týlu:"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr "Vrchný:"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-msgid "Type:"
-msgstr "Typ:"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr "©írka:"
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr "Chyba pri komunikácii s kalendárovým serverom"
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr "Nie je mo¾né preèíta» blok aplikácie Calendar pilota"
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr "Nie je mo¾né preèíta» blok aplikácie ToDo pilota"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr "Pripomenú» schôdzku o "
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-msgid "Snooze"
-msgstr "Opakova»"
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr "Ok"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr "Slu¾ba upozoròovania na poplachy"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-msgid "Factory for the alarm notification service"
-msgstr "Vytváracie rozhranie pre slu¾bu na upozornenie na poplach"
-
-#: calendar/gui/alarm-notify/notify-main.c:56
-#, c-format
-msgid ""
-"It is %s. The Unix time is %ld right now. We just thought you may like to "
-"know."
-msgstr "Je to %s. Práve teraz je unixový èas %ld. Mo¾no ste to chceli vedie»."
-
-#: calendar/gui/alarm-notify/notify-main.c:93 calendar/gui/main.c:52
-msgid "Could not initialize GNOME"
-msgstr "Nie je mo¾né inicializova» GNOME"
-
-#: calendar/gui/alarm-notify/notify-main.c:108
-msgid "Could not create the alarm notify service factory"
-msgstr "Nie je mo¾né vytvori» vytváracie rozhranie pre slu¾bu upozoròovania"
-
-#: calendar/gui/calendar-commands.c:266
-msgid "File not found"
-msgstr "Súbor nenájdený"
-
-#: calendar/gui/calendar-commands.c:290
-msgid "Open calendar"
-msgstr "Otvori» kalendár"
-
-#: calendar/gui/calendar-commands.c:332
-msgid "Save calendar"
-msgstr "Ulo¾i» kalendár"
-
-#: calendar/gui/calendar-commands.c:468
-msgid "Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-"Nie je mo¾né vytvori» kalendárový pohµad. Prosím, overte nastavenie ORBit a "
-"OAF."
-
-#: calendar/gui/calendar-model.c:360 calendar/gui/calendar-model.c:898
-#: calendar/gui/e-calendar-table.c:330
-msgid "Public"
-msgstr "Verejný"
-
-#: calendar/gui/calendar-model.c:363 calendar/gui/calendar-model.c:900
-#: calendar/gui/e-calendar-table.c:331
-msgid "Private"
-msgstr "Súkromný"
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:902
-#: calendar/gui/e-calendar-table.c:332
-msgid "Confidential"
-msgstr "Tajný"
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/event-editor.c:1601
-#: calendar/gui/event-editor.c:1628
-#: camel/providers/smtp/camel-smtp-transport.c:221
-msgid "Unknown"
-msgstr "Neznámy"
-
-#: calendar/gui/calendar-model.c:457
-msgid "N"
-msgstr "S"
-
-#: calendar/gui/calendar-model.c:457
-msgid "S"
-msgstr "J"
-
-#: calendar/gui/calendar-model.c:459
-msgid "E"
-msgstr "V"
-
-#: calendar/gui/calendar-model.c:459
-msgid "W"
-msgstr "Z"
-
-#: calendar/gui/calendar-model.c:497 calendar/gui/calendar-model.c:1066
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:352 mail/message-list.c:689
-msgid "High"
-msgstr "Vysoká"
-
-#: calendar/gui/calendar-model.c:499 calendar/gui/calendar-model.c:1068
-#: calendar/gui/calendar-model.c:1574
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:353 mail/message-list.c:688
-msgid "Normal"
-msgstr "Normálny"
-
-#: calendar/gui/calendar-model.c:501 calendar/gui/calendar-model.c:1070
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:354 mail/message-list.c:687
-msgid "Low"
-msgstr "Nízka"
-
-#: calendar/gui/calendar-model.c:537 calendar/gui/calendar-model.c:1122
-#: calendar/gui/e-calendar-table.c:406
-msgid "Transparent"
-msgstr "Priehµadné"
-
-#: calendar/gui/calendar-model.c:540 calendar/gui/calendar-model.c:1124
-#: calendar/gui/e-calendar-table.c:405
-msgid "Opaque"
-msgstr "Nepriehµadné"
-
-#: calendar/gui/calendar-model.c:638 calendar/gui/calendar-model.c:1176
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:426
-msgid "Not Started"
-msgstr "Nezaèal"
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1178
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:427
-msgid "In Progress"
-msgstr "Prebieha"
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1180
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:428
-msgid "Completed"
-msgstr "Dokonèený"
-
-#: calendar/gui/calendar-model.c:647 calendar/gui/calendar-model.c:1182
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:429 camel/camel-service.c:544
-#: camel/camel-service.c:580
-msgid "Cancelled"
-msgstr "Zru¹ený"
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:794 e-util/e-time-utils.c:278
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr "%a %d/%m/%Y %H:%M:%S"
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:797 e-util/e-time-utils.c:287
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr "%a %d/%m/%Y %I:%M:%S %p"
-
-#: calendar/gui/calendar-model.c:802
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-"Dátum musí by» vo formáte:\n"
-"\n"
-"%s"
-
-#: calendar/gui/calendar-model.c:882
-msgid "The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr "Klasifikácia musí by» 'Verejné', 'Súkromné', 'Tajné' alebo '®iadna'"
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:896 calendar/gui/calendar-model.c:1120
-#: calendar/gui/calendar-model.c:1174 calendar/gui/e-calendar-table.c:329
-#: calendar/gui/e-calendar-table.c:404 mail/mail-account-gui.c:976
-#: mail/mail-accounts.c:120 mail/mail-accounts.c:164
-#: mail/mail-config.glade.h:46 shell/e-shell-view.c:1199
-#: widgets/misc/e-cell-date-edit.c:237 widgets/misc/e-dateedit.c:432
-#: widgets/misc/e-dateedit.c:1341 widgets/misc/e-dateedit.c:1456
-msgid "None"
-msgstr "®iadna"
-
-#: calendar/gui/calendar-model.c:970
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-"Geografické miesto musí by» zadané vo formáte:\n"
-"\n"
-"45.436845,125.862501"
-
-#: calendar/gui/calendar-model.c:1010
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr "Percentuálna hodnota musí by» medzi 0 a¾ 100"
-
-#: calendar/gui/calendar-model.c:1051
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr "Priorita musí by» 'Vysoká', 'Normálna', 'Nízka' alebo 'Nedefinovaná'."
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1064
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:355
-msgid "Undefined"
-msgstr "Nedefinovaná"
-
-#: calendar/gui/calendar-model.c:1105
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr "Priehµadnos» musí by» 'Priehµadné', 'Nepriehµadné' alebo '®iadne'."
-
-#: calendar/gui/calendar-model.c:1576
-msgid "Recurring"
-msgstr "Opakovanie"
-
-#: calendar/gui/calendar-model.c:1578
-msgid "Assigned"
-msgstr "Priradené"
-
-#: calendar/gui/calendar-model.c:1584
-msgid "Yes"
-msgstr "Áno"
-
-#: calendar/gui/calendar-model.c:1584
-msgid "No"
-msgstr "Nie"
-
-#: calendar/gui/calendar-summary.c:198
-msgid "%A, %e %B %Y"
-msgstr "%A, %e %B %Y"
-
-#: calendar/gui/calendar-summary.c:207
-msgid "Appointments"
-msgstr "Schôdzky"
-
-#: calendar/gui/calendar-summary.c:245 calendar/gui/calendar-summary.c:251
-msgid "%I:%M%p"
-msgstr "%I:%M%p"
-
-#: calendar/gui/calendar-summary.c:275 calendar/gui/print.c:948
-#: views/tasks/galview.xml.h:1
-msgid "Tasks"
-msgstr "Úlohy"
-
-#: calendar/gui/calendar-summary.c:443
-msgid "<b>Error loading calendar</b>"
-msgstr "<b> Chyba naèítavania kalendára</b>"
-
-#: calendar/gui/calendar-summary.c:455
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr "<b> Chyba naèítavania kalendára</b>Metóda nepodporovaná"
-
-#: calendar/gui/calendar-summary.c:622 mail/mail-config.glade.h:24
-msgid "Display"
-msgstr "Zobrazenie"
-
-#: calendar/gui/calendar-summary.c:627
-msgid "Show appointments"
-msgstr "Zobrazi» schôdzky"
-
-#: calendar/gui/calendar-summary.c:635
-msgid "Show tasks"
-msgstr "Zobrazi» úlohy"
-
-#: calendar/gui/calendar-summary.c:690
-msgid "Things to do"
-msgstr "Èo je treba urobi»"
-
-#: calendar/gui/calendar-summary.c:721 calendar/gui/e-itip-control.glade.h:7
-msgid "Loading Calendar"
-msgstr "Naèítavam kalendár"
-
-#: calendar/gui/control-factory.c:126
-msgid "The URI that the calendar will display"
-msgstr "URI, ktoré bude kalendár zobrazova»"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:189
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr "Poplach o %A %b %d %Y %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:196
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr "Upozornenie na schôdzku o %A %b %d %Y %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:207
-msgid "No summary available."
-msgstr "Súhrn nie je k dispozícii."
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:2
-msgid "Close"
-msgstr "Zavrie»"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-msgid "Edit appointment"
-msgstr "Upravi» schôdzku"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr "Èas opakovania (minúty)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr "05 minút"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr "10 minút"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr "12-hodinový (am/pm)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr "15 minút"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr "24 hodín"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr "30 minút"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr "60 minút"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr "Alarm vypr¹í po"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr "Zvukové alarmy"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr "Pípnu» pri zobrazení okna alarmu."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-msgid "Calendar"
-msgstr "Kalendár"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr "Nastavenie kalendára"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "Farby"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr "Zhustené víkendy"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr "Mo¾nosti navigácie dátumov"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-msgid "Defaults"
-msgstr "©tandard"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr "Mo¾nosti zobrazenia"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:162
-msgid "Due Date"
-msgstr "Termín"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr "Povoli» opakovanie na"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr "Koniec dòa:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr "Prvý deò tý¾dòa:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr "Pia"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:479
-msgid "Friday"
-msgstr "Piatok"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr "Zvýraznenie"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr "Dne¹né termíny"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr "Dne¹né termíny:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr "E¹te pred termínom"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr "E¹te pred termínom:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr "Pon"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:475
-msgid "Monday"
-msgstr "Pondelok"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr "Po termíne"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr "Po termíne:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:54
-msgid "Pick a color"
-msgstr "Vyberte farbu"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:165
-msgid "Priority"
-msgstr "Priorita"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-msgid "Remind me of all appointments"
-msgstr "Pripomenú» v¹etky schôdzky"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-msgid "Reminders"
-msgstr "Pripomenutia"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr "So"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:480
-msgid "Saturday"
-msgstr "Sobota"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr "Ukáza»"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-msgid "Show appointment end times"
-msgstr "Zobrazi» koncové èasy schôdzok"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr "Zobrazi» èísla tý¾dòov"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr "Zaèiatok dòa:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr "Ne"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:481
-msgid "Sunday"
-msgstr "Nedeµa"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-msgid "TaskPad"
-msgstr "Zoznam úloh"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr "©tv"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:478
-msgid "Thursday"
-msgstr "©tvrtok"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr "Èas do termínu"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr "Rozdelenie èas:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr "Formát èasu:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr "Ut"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:476
-msgid "Tuesday"
-msgstr "Utorok"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr "Vizuálne alarmy"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr "Str"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:477
-msgid "Wednesday"
-msgstr "Streda"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr "Pracovný tý¾deò"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr "minút predtým, ne¾ nastanú."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:88
-msgid "seconds."
-msgstr "sekúnd."
-
-#: calendar/gui/dialogs/delete-comp.c:70
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr "Naozaj chcete odstráni» schôdzku `%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:73
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr "Naozaj chcete odstráni» túto schôdzku bez mena?"
-
-#: calendar/gui/dialogs/delete-comp.c:79
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr "Naozaj chcete odstráni» úlohu `%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:82
-msgid "Are you sure you want to delete this untitled task?"
-msgstr "Naozaj chcete odstráni» úlohu bez mena?"
-
-#: calendar/gui/dialogs/delete-comp.c:88
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr "Naozaj chcete odstráni» polo¾ku denníka `%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:91
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr "Naozaj chcete odstráni» polo¾ku denníka bez mena?"
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr "Chcete ulo¾i» zmeny?"
-
-#: calendar/gui/dialogs/task-editor.c:709
-msgid "Edit Task"
-msgstr "Upravi» úlohu"
-
-#: calendar/gui/dialogs/task-editor.c:714 calendar/gui/event-editor.c:382
-#, c-format
-msgid "Appointment - %s"
-msgstr "Schôdzka - %s"
-
-#: calendar/gui/dialogs/task-editor.c:717 calendar/gui/event-editor.c:385
-#, c-format
-msgid "Task - %s"
-msgstr "Úloha - %s"
-
-#: calendar/gui/dialogs/task-editor.c:720 calendar/gui/event-editor.c:388
-#, c-format
-msgid "Journal entry - %s"
-msgstr "Polo¾ka denníku - %s"
-
-#: calendar/gui/dialogs/task-editor.c:734 calendar/gui/event-editor.c:402
-msgid "No summary"
-msgstr "®iadny súhrn"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr "% _Hotových:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:158
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr "Klasifikácia"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-msgid "Date & Time"
-msgstr "Dátum a èas"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr "Dátum dokonèenia:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-msgid "Pri_vate"
-msgstr "_Súkromné"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-msgid "Progress"
-msgstr "Priebeh"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr "_Verejné"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-msgid "Sta_rt Date:"
-msgstr "_Poèiatoèný dátum:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-msgid "Su_mmary:"
-msgstr "_Súhrn:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr "Úloha"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-msgid "URL:"
-msgstr "URL:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr "_Tajné"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Contacts..."
-msgstr "_Kontakty..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-msgid "_Due Date:"
-msgstr "_Termín:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-msgid "_Priority:"
-msgstr "_Priorita:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "_Status:"
-msgstr "_Stav:"
-
-#: calendar/gui/e-calendar-table.c:157
-msgid "Categories"
-msgstr "Kategórie"
-
-#: calendar/gui/e-calendar-table.c:159
-msgid "Completion Date"
-msgstr "Dátum dokonèenia"
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "End Date"
-msgstr "Dátum konca"
-
-#: calendar/gui/e-calendar-table.c:161
-msgid "Start Date"
-msgstr "Dátum ¹tartu"
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Geographical Position"
-msgstr "Geografické umiestnenie"
-
-#: calendar/gui/e-calendar-table.c:164
-msgid "Percent complete"
-msgstr "Hotových percent"
-
-#: calendar/gui/e-calendar-table.c:166
-msgid "Summary"
-msgstr "Súhrn"
-
-#: calendar/gui/e-calendar-table.c:167
-msgid "Transparency"
-msgstr "Priesvitnos»"
-
-#: calendar/gui/e-calendar-table.c:168
-msgid "URL"
-msgstr "URL"
-
-#: calendar/gui/e-calendar-table.c:169
-msgid "Alarms"
-msgstr "Alarmy"
-
-#: calendar/gui/e-calendar-table.c:170
-msgid "Click here to add a task"
-msgstr "Kliknutím pridáte úlohu"
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "0%"
-msgstr "0%"
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "10%"
-msgstr "10%"
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "20%"
-msgstr "20%"
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "30%"
-msgstr "30%"
-
-#: calendar/gui/e-calendar-table.c:378
-#, c-format
-msgid "40%"
-msgstr "40%"
-
-#: calendar/gui/e-calendar-table.c:379
-#, c-format
-msgid "50%"
-msgstr "50%"
-
-#: calendar/gui/e-calendar-table.c:380
-#, c-format
-msgid "60%"
-msgstr "60%"
-
-#: calendar/gui/e-calendar-table.c:381
-#, c-format
-msgid "70%"
-msgstr "70%"
-
-#: calendar/gui/e-calendar-table.c:382
-#, c-format
-msgid "80%"
-msgstr "80%"
-
-#: calendar/gui/e-calendar-table.c:383
-#, c-format
-msgid "90%"
-msgstr "90%"
-
-#: calendar/gui/e-calendar-table.c:384
-#, c-format
-msgid "100%"
-msgstr "100%"
-
-#: calendar/gui/e-calendar-table.c:551
-msgid "Mark Complete"
-msgstr "Oznaèi» ako dokonèenú"
-
-#: calendar/gui/e-calendar-table.c:552
-msgid "Mark the task complete"
-msgstr "Oznaèí úlohu ako dokonèenú"
-
-#: calendar/gui/e-calendar-table.c:557
-msgid "Edit this task..."
-msgstr "Upravi» túto úlohu..."
-
-#: calendar/gui/e-calendar-table.c:558
-msgid "Edit the task"
-msgstr "Upravi» úlohu"
-
-#: calendar/gui/e-calendar-table.c:560
-#: ui/evolution-task-editor-dialog.xml.h:19
-msgid "Delete this task"
-msgstr "Odstráni» túto úlohu"
-
-#: calendar/gui/e-calendar-table.c:561
-msgid "Delete the task"
-msgstr "Odstráni» úlohu"
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:570 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:617
-msgid "am"
-msgstr "dopoludnia"
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:573 calendar/gui/e-week-view.c:303
-#: calendar/gui/print.c:616
-msgid "pm"
-msgstr "popoludní"
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:274 calendar/gui/e-day-view.c:1294
-#: calendar/gui/e-week-view-main-item.c:325
-msgid "%A %d %B"
-msgstr "%A %d %B"
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:278 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:334
-msgid "%a %d %b"
-msgstr "%a %d %b"
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:282 calendar/gui/e-day-view.c:1321
-#: calendar/gui/e-week-view-main-item.c:348
-msgid "%d %b"
-msgstr "%d %b"
-
-#: calendar/gui/e-day-view.c:3146 ui/evolution-calendar.xml.h:16
-msgid "New Appointment"
-msgstr "Nová schôdzka"
-
-#: calendar/gui/e-day-view.c:3148 calendar/gui/e-week-view.c:3280
-msgid "New All Day Event"
-msgstr "Nová celodenná udalos»"
-
-#: calendar/gui/e-day-view.c:3153 calendar/gui/e-week-view.c:3285
-msgid "Go to Today"
-msgstr "Prejs» na dne¹ný dátum"
-
-#: calendar/gui/e-day-view.c:3155 calendar/gui/e-week-view.c:3287
-msgid "Go to Date..."
-msgstr "Prejs» na dátum..."
-
-#: calendar/gui/e-day-view.c:3162 calendar/gui/e-week-view.c:3293
-#: ui/evolution-calendar.xml.h:19 ui/evolution-message-composer.xml.h:10
-msgid "Open"
-msgstr "Otvori»"
-
-#: calendar/gui/e-day-view.c:3164 calendar/gui/e-week-view.c:3295
-msgid "Delete this Appointment"
-msgstr "Odstráni» túto schôdzku"
-
-#: calendar/gui/e-day-view.c:3166 calendar/gui/e-week-view.c:3297
-#: ui/evolution-event-editor.xml.h:45
-msgid "Schedule Meeting"
-msgstr "Naplánova» stretnutie"
-
-#: calendar/gui/e-day-view.c:3175 calendar/gui/e-week-view.c:3310
-msgid "Make this Occurrence Movable"
-msgstr "Nastavi» tento výskyt ako presunuteµný"
-
-#: calendar/gui/e-day-view.c:3177 calendar/gui/e-week-view.c:3312
-msgid "Delete this Occurrence"
-msgstr "Odstráni» tento výskyt"
-
-#: calendar/gui/e-day-view.c:3179
-msgid "Delete all Occurrences"
-msgstr "Odstráni» v¹etky výskyty"
-
-#: calendar/gui/e-day-view-time-item.c:519
-#, c-format
-msgid "%02i minute divisions"
-msgstr "%02i rozdelení minúty"
-
-#: calendar/gui/e-itip-control.c:161
-msgid "I couldn't update your calendar file!\n"
-msgstr "Nie je mo¾né aktualizova» vá¹ súbor s kalendárom!\n"
-
-#: calendar/gui/e-itip-control.c:167 calendar/gui/e-itip-control.c:510
-msgid "Component successfully updated."
-msgstr "Komponent úspe¹ne aktualizovaný."
-
-#: calendar/gui/e-itip-control.c:173
-msgid "There was an error loading the calendar file."
-msgstr "Nastala chyba poèas naèítavania súboru s kalendárom."
-
-#: calendar/gui/e-itip-control.c:197
-msgid "I couldn't open your calendar file!\n"
-msgstr "Nie je mo¾né otvori» vá¹ súbor s kalendárom!\n"
-
-#: calendar/gui/e-itip-control.c:458 calendar/gui/e-itip-control.c:529
-msgid "I couldn't load your calendar file!\n"
-msgstr "Nie je mo¾né naèíta» vá¹ súbor s kalendárom!\n"
-
-#: calendar/gui/e-itip-control.c:470
-msgid "I couldn't read your calendar file!\n"
-msgstr "Nie je mo¾né èíta» vá¹ súbor s kalendárom!\n"
-
-#: calendar/gui/e-itip-control.c:483
-msgid "This is a reply from someone who was uninvited!"
-msgstr "Toto je odpoveï od niekoho nepozvaného!"
-
-#: calendar/gui/e-itip-control.c:499
-msgid "I couldn't update your calendar store."
-msgstr "Nie je mo¾né aktualizova» kalendár."
-
-#: calendar/gui/e-itip-control.c:540
-msgid "I couldn't delete the calendar component!\n"
-msgstr "Nie je mo¾né odstráni» komponent kalendára!\n"
-
-#: calendar/gui/e-itip-control.c:550
-msgid "Component successfully deleted."
-msgstr "Komponent úspe¹ne zmazaný."
-
-#: calendar/gui/e-itip-control.c:694
-msgid "I don't recognize this type of calendar component."
-msgstr "Nie je mo¾né rozozna» typ komponentu kalendára."
-
-#: calendar/gui/e-itip-control.c:780
-msgid "Add to Calendar"
-msgstr "Prida» do kalendára"
-
-#: calendar/gui/e-itip-control.c:814
-msgid " Accept "
-msgstr "Akceptova»"
-
-#: calendar/gui/e-itip-control.c:815
-msgid " Decline "
-msgstr "Odmietnu»"
-
-#: calendar/gui/e-itip-control.c:816
-msgid " Tentative "
-msgstr "Predbe¾ný"
-
-#: calendar/gui/e-itip-control.c:860
-msgid "Update Calendar"
-msgstr "Aktualizova» kalendár"
-
-#: calendar/gui/e-itip-control.c:883
-msgid "Cancel Meeting"
-msgstr "Zru¹i» stretnutie"
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, no-c-format
-msgid "%P %%"
-msgstr "%P %%"
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr "--do--"
-
-#: calendar/gui/e-itip-control.glade.h:4
-msgid "Calendar Message"
-msgstr "Správa kalendára"
-
-#: calendar/gui/e-itip-control.glade.h:5 mail/mail-format.c:632
-msgid "Date:"
-msgstr "Dátum:"
-
-#: calendar/gui/e-itip-control.glade.h:8
-msgid "Loading calendar..."
-msgstr "Naèítavam kalendár..."
-
-#: calendar/gui/e-itip-control.glade.h:9
-msgid "Organizer:"
-msgstr "Organizátor:"
-
-#: calendar/gui/e-itip-control.glade.h:10
-msgid "Server Message:"
-msgstr "Správa serveru:"
-
-#: calendar/gui/e-itip-control.glade.h:11
-msgid "Summary:"
-msgstr "Súhrn:"
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr "dátum konca"
-
-#: calendar/gui/e-itip-control.glade.h:13
-msgid "date-start"
-msgstr "dátum zaèiatku"
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-msgid "Attendee"
-msgstr "Úèastník"
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-msgid "Attendee address"
-msgstr "Adresa úèastníka"
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-msgid "Attendees: "
-msgstr "Úèastníci:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr ""
-"Zru¹i»\n"
-"stretnutie"
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-msgid "Chair"
-msgstr "Predseda"
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-msgid "Meeting Invitations"
-msgstr "Pozvánky na stretnutie"
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr "Nie-úèastník"
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr "Nepovinný úèastník"
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-msgid "Organizer: "
-msgstr "Organizátor:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:14
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-"Publikova»\n"
-"udalos»"
-
-#: calendar/gui/e-meeting-dialog.glade.h:16
-msgid "RSVP"
-msgstr "RSVP"
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid ""
-"Request\n"
-"Meeting"
-msgstr ""
-"Po¾adova»\n"
-"stretnutie"
-
-#: calendar/gui/e-meeting-dialog.glade.h:19
-msgid "Required Participant"
-msgstr "Vy¾adovaný úèastník"
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-msgid "Role"
-msgstr "Rola"
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-msgid ""
-"Schedule\n"
-"Time"
-msgstr ""
-"Naplánova»\n"
-"èas"
-
-#: calendar/gui/e-meeting-dialog.glade.h:23 filter/libfilter-i18n.h:49
-#: mail/message-list.c:1081
-msgid "Status"
-msgstr "Stav"
-
-#: calendar/gui/e-tasks.c:149 calendar/gui/e-tasks.c:469
-#: calendar/gui/e-tasks.c:502
-msgid "All"
-msgstr "V¹etky"
-
-#: calendar/gui/e-tasks.c:155
-msgid "Category:"
-msgstr "Kategória:"
-
-#: calendar/gui/e-tasks.c:298
-#, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "Nepodarilo sa naèíta» úlohy v `%s'"
-
-#: calendar/gui/e-tasks.c:310
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr "Metódy potrebná pre naèítanie `%s' nie je podporovaná"
-
-#: calendar/gui/event-editor.c:377
-msgid "Edit Appointment"
-msgstr "Upravi» schôdzku"
-
-#: calendar/gui/event-editor.c:449
-msgid "on"
-msgstr "zapnutá"
-
-#: calendar/gui/event-editor.c:474 filter/filter-datespec.c:81
-msgid "day"
-msgstr "deò"
-
-#: calendar/gui/event-editor.c:601
-msgid "on the"
-msgstr " "
-
-#: calendar/gui/event-editor.c:608
-msgid "th"
-msgstr " "
-
-#: calendar/gui/event-editor.c:754
-msgid "occurrences"
-msgstr "výskytov"
-
-#: calendar/gui/event-editor.c:871
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr "Táto schôdzka obsahuje opakovanie, ktoré Evolution nedoká¾e upravi»."
-
-#: calendar/gui/event-editor.c:1543
-#, c-format
-msgid " %d days"
-msgstr " %d dní"
-
-#: calendar/gui/event-editor.c:1545
-msgid " 1 day"
-msgstr " 1 deò"
-
-#: calendar/gui/event-editor.c:1548
-#, c-format
-msgid " %d weeks"
-msgstr " %d tý¾dòov"
-
-#: calendar/gui/event-editor.c:1550
-msgid " 1 week"
-msgstr " 1 tý¾deò"
-
-#: calendar/gui/event-editor.c:1553
-#, c-format
-msgid " %d hours"
-msgstr " %d hodín"
-
-#: calendar/gui/event-editor.c:1555
-msgid " 1 hour"
-msgstr " 1 hodina"
-
-#: calendar/gui/event-editor.c:1558
-#, c-format
-msgid " %d minutes"
-msgstr " %d minút"
-
-#: calendar/gui/event-editor.c:1560
-msgid " 1 minute"
-msgstr " 1 minúta"
-
-#: calendar/gui/event-editor.c:1563
-#, c-format
-msgid " %d seconds"
-msgstr " %d sekúnd"
-
-#: calendar/gui/event-editor.c:1565
-msgid " 1 second"
-msgstr " 1 sekunda"
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1588
-msgid "Play a sound"
-msgstr "Prehra» zvuk"
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1591
-msgid "Show a dialog"
-msgstr "Zobrazi» dialóg"
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1594
-msgid "Send an email"
-msgstr "Posla» e-mail"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1597
-msgid "Run a program"
-msgstr "Spusti» program"
-
-#: calendar/gui/event-editor.c:1612
-msgid " before start of appointment"
-msgstr " pred zaèiatkom schôdzky"
-
-#: calendar/gui/event-editor.c:1614
-msgid " after start of appointment"
-msgstr " po zaèiatku schôdzky"
-
-#: calendar/gui/event-editor.c:1622
-msgid " before end of appointment"
-msgstr " pred koncom schôdzky"
-
-#: calendar/gui/event-editor.c:1624
-msgid " after end of appointment"
-msgstr " po konci schôdzky"
-
-#: calendar/gui/event-editor.c:3132 calendar/gui/print.c:1097
-#: calendar/gui/print.c:1099 calendar/gui/print.c:1100
-msgid "%a %b %d %Y"
-msgstr "%a %b %d %Y"
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr "_Celodenná udalos»"
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-msgid "Appointment"
-msgstr "Schôdzka"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-msgid "Appointment Basics"
-msgstr "Základy schôdzky"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-msgid "Custom recurrence"
-msgstr "Vlastné opakovanie"
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr "Ka¾dých"
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-msgid "Exceptions"
-msgstr "Výnimky"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-msgid "Modify"
-msgstr "Zmeni»"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-msgid "No recurrence"
-msgstr "Neopakova»"
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-msgid "Preview"
-msgstr "Uká¾ka"
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Recurrence"
-msgstr "Opakovanie"
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-msgid "Recurrence Rule"
-msgstr "Pravidlo opakovania"
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-msgid "Reminder"
-msgstr "Pripomenutie"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-msgid "Settings..."
-msgstr "Nastavenie..."
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr "Jednoduché opakovanie"
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-msgid "_End time:"
-msgstr "Èas _konca:"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Start time:"
-msgstr "Èas _zaèiatku:"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Starting date:"
-msgstr "Dátum _zaèiatku:"
-
-#. Automatically generated. Do not edit.
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:2
-msgid "after"
-msgstr "po"
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:6
-msgid "before"
-msgstr "pred"
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "day(s)"
-msgstr "dòa/í"
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-msgid "end of appointment"
-msgstr "koniec schôdzky"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "for"
-msgstr "poèas"
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr "nav¾dy"
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-msgid "hour(s)"
-msgstr "hodín"
-
-#: calendar/gui/event-editor-dialog.glade.h:40 mail/mail-config.glade.h:87
-msgid "minute(s)"
-msgstr "minút"
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "month(s)"
-msgstr "mesiaca/ov"
-
-#: calendar/gui/event-editor-dialog.glade.h:42
-msgid "start of appointment"
-msgstr "zaèiatok schôdzky"
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-msgid "until"
-msgstr "pokým"
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "week(s)"
-msgstr "tý¾dòov"
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "year(s)"
-msgstr "rokov"
-
-#: calendar/gui/e-week-view.c:3278 calendar/gui/e-week-view.c:3301
-msgid "New Appointment..."
-msgstr "Nová schôdzka..."
-
-#: calendar/gui/e-week-view.c:3314
-msgid "Delete All Occurrences"
-msgstr "Odstráni» v¹etky výskyty"
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:342
-msgid "%d %B"
-msgstr "%d %B"
-
-#: calendar/gui/gnome-cal.c:234
-msgid "Summary contains"
-msgstr "Súhrn obsahuje"
-
-#: calendar/gui/gnome-cal.c:235
-msgid "Description contains"
-msgstr "Popis obsahuje"
-
-#: calendar/gui/gnome-cal.c:236
-msgid "Comment contains"
-msgstr "Komentár obsahuje"
-
-#: calendar/gui/gnome-cal.c:237
-msgid "Has category"
-msgstr "Má kategóriu"
-
-#: calendar/gui/gnome-cal.c:840
-#, c-format
-msgid "Could not open the folder in `%s'"
-msgstr "Nie je mo¾né otvori» prieèinok v `%s'"
-
-#: calendar/gui/gnome-cal.c:851
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr "Metóda nutná k otvoreniu `%s' nie je podporovaná"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr "Uká¾kový ovládací prvok Bonobo pre zobrazenie kalendára."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-msgid "Evolution calendar executive summary component."
-msgstr "Komponent Súhrn kalendára Evolution."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr "Prehliadaè iTip/mTip kalendára Evolution"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr "Komponent Evolution pre prácu s kalendárom."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-msgid "Factory for the Calendar Summary component."
-msgstr "Vytváracie rozhranie pre komponent Súhrnu kalendára."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-msgid "Factory for the Evolution calendar component."
-msgstr "Vytváracie rozhranie pre komponent Kalendár Evolution."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-msgid "Factory for the calendar iTip view control"
-msgstr "Vytváracie rozhranie pre ovládací prvok pohµadu iTip kalendára"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-msgid "Factory for the sample Calendar control"
-msgstr "Vytváracie rozhranie pre uká¾kový ovládací prvok Kalendár."
-
-#: calendar/gui/goto-dialog.glade.h:1
-msgid "April"
-msgstr "Apríl"
-
-#: calendar/gui/goto-dialog.glade.h:2
-msgid "August"
-msgstr "August"
-
-#: calendar/gui/goto-dialog.glade.h:3
-msgid "December"
-msgstr "December"
-
-#: calendar/gui/goto-dialog.glade.h:4
-msgid "February"
-msgstr "Február"
-
-#: calendar/gui/goto-dialog.glade.h:5
-msgid "Go To Date"
-msgstr "Prejs» na dátum"
-
-#: calendar/gui/goto-dialog.glade.h:6
-msgid "Go To Today"
-msgstr "Prejs» na dne¹ný dátum"
-
-#: calendar/gui/goto-dialog.glade.h:7
-msgid "January"
-msgstr "Január"
-
-#: calendar/gui/goto-dialog.glade.h:8
-msgid "July"
-msgstr "Júl"
-
-#: calendar/gui/goto-dialog.glade.h:9
-msgid "June"
-msgstr "Jún"
-
-#: calendar/gui/goto-dialog.glade.h:10
-msgid "March"
-msgstr "Marec"
-
-#: calendar/gui/goto-dialog.glade.h:11
-msgid "May"
-msgstr "Máj"
-
-#: calendar/gui/goto-dialog.glade.h:12
-msgid "November"
-msgstr "November"
-
-#: calendar/gui/goto-dialog.glade.h:13
-msgid "October"
-msgstr "Október"
-
-#: calendar/gui/goto-dialog.glade.h:14
-msgid "September"
-msgstr "September"
-
-#: calendar/gui/print.c:300
-msgid "1st"
-msgstr "1."
-
-#: calendar/gui/print.c:300
-msgid "2nd"
-msgstr "2."
-
-#: calendar/gui/print.c:300
-msgid "3rd"
-msgstr "3."
-
-#: calendar/gui/print.c:300
-msgid "4th"
-msgstr "4."
-
-#: calendar/gui/print.c:300
-msgid "5th"
-msgstr "5."
-
-#: calendar/gui/print.c:301
-msgid "6th"
-msgstr "6."
-
-#: calendar/gui/print.c:301
-msgid "7th"
-msgstr "7."
-
-#: calendar/gui/print.c:301
-msgid "8th"
-msgstr "8."
-
-#: calendar/gui/print.c:301
-msgid "9th"
-msgstr "9."
-
-#: calendar/gui/print.c:301
-msgid "10th"
-msgstr "10."
-
-#: calendar/gui/print.c:302
-msgid "11th"
-msgstr "11."
-
-#: calendar/gui/print.c:302
-msgid "12th"
-msgstr "12."
-
-#: calendar/gui/print.c:302
-msgid "13th"
-msgstr "13."
-
-#: calendar/gui/print.c:302
-msgid "14th"
-msgstr "14."
-
-#: calendar/gui/print.c:302
-msgid "15th"
-msgstr "15."
-
-#: calendar/gui/print.c:303
-msgid "16th"
-msgstr "16."
-
-#: calendar/gui/print.c:303
-msgid "17th"
-msgstr "17."
-
-#: calendar/gui/print.c:303
-msgid "18th"
-msgstr "18."
-
-#: calendar/gui/print.c:303
-msgid "19th"
-msgstr "19."
-
-#: calendar/gui/print.c:303
-msgid "20th"
-msgstr "20."
-
-#: calendar/gui/print.c:304
-msgid "21st"
-msgstr "21."
-
-#: calendar/gui/print.c:304
-msgid "22nd"
-msgstr "22."
-
-#: calendar/gui/print.c:304
-msgid "23rd"
-msgstr "23."
-
-#: calendar/gui/print.c:304
-msgid "24th"
-msgstr "24."
-
-#: calendar/gui/print.c:304
-msgid "25th"
-msgstr "25."
-
-#: calendar/gui/print.c:305
-msgid "26th"
-msgstr "26."
-
-#: calendar/gui/print.c:305
-msgid "27th"
-msgstr "27."
-
-#: calendar/gui/print.c:305
-msgid "28th"
-msgstr "28."
-
-#: calendar/gui/print.c:305
-msgid "29th"
-msgstr "29."
-
-#: calendar/gui/print.c:305
-msgid "30th"
-msgstr "30."
-
-#: calendar/gui/print.c:306
-msgid "31st"
-msgstr "31."
-
-#: calendar/gui/print.c:362
-msgid "Su"
-msgstr "Ne"
-
-#: calendar/gui/print.c:362
-msgid "Mo"
-msgstr "Po"
-
-#: calendar/gui/print.c:362
-msgid "Tu"
-msgstr "Ut"
-
-#: calendar/gui/print.c:362
-msgid "We"
-msgstr "St"
-
-#: calendar/gui/print.c:362
-msgid "Th"
-msgstr "©t"
-
-#: calendar/gui/print.c:362
-msgid "Fr"
-msgstr "Pi"
-
-#: calendar/gui/print.c:362
-msgid "Sa"
-msgstr "So"
-
-#. Day
-#: calendar/gui/print.c:1078
-msgid "Current day (%a %b %d %Y)"
-msgstr "Dnes (%a %b %d %Y)"
-
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1096
-msgid "%a %b %d"
-msgstr "%a %b %d"
-
-#: calendar/gui/print.c:1093
-msgid "%a %d %Y"
-msgstr "%a %d %Y"
-
-#: calendar/gui/print.c:1104
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr "Tento tý¾deò (%s - %s)"
-
-#. Month
-#: calendar/gui/print.c:1112
-msgid "Current month (%b %Y)"
-msgstr "Tento mesiac (%b - %Y)"
-
-#. Year
-#: calendar/gui/print.c:1119
-msgid "Current year (%Y)"
-msgstr "Tento rok (%Y)"
-
-#: calendar/gui/print.c:1156
-msgid "Print Calendar"
-msgstr "Tlaèi» kalendár"
-
-#: calendar/gui/print.c:1321 mail/mail-callbacks.c:1552
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:24
-#: ui/evolution-mail.xml.h:61
-msgid "Print Preview"
-msgstr "Uká¾ka pred tlaèou"
-
-#: calendar/gui/tasks-control.c:108
-msgid "The URI of the tasks folder to display"
-msgstr "URI, ktoré bude zobrazova» prieèinok úloh"
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-"Evolution automaticky previedol úlohy z prieèinku kalendára do nového "
-"prieèinku úloh."
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-"Evolution sa pokúsil automaticky previes» úlohy z prieèinku kalendára do "
-"nového prieèinku úloh.\n"
-"Niektoré úlohy nebolo mo¾né prenies», tak¾e je mo¾né sa o to pokúsi» neskôr."
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-"Nie je mo¾né otvori» `%s'; ¾iadne údaje z prieèinku kalendára nebudú "
-"prevedené do prieèinku úloh."
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-"Metóda pre naèítanie `%s' nie je podporovaná, ¾iadne polo¾ky z prieèinku "
-"kalendára nebudú prenesené do prieèinku úloh."
-
-#: calendar/gui/weekday-picker.c:315 calendar/gui/weekday-picker.c:410
-msgid "SMTWTFS"
-msgstr "NPUS©PS"
-
-#: calendar/pcs/query.c:218
-msgid "time-now expects 0 arguments"
-msgstr "time-now neoèakáva ¾iadne argumenty"
-
-#: calendar/pcs/query.c:242
-msgid "make-time expects 1 argument"
-msgstr "make-time oèakáva 1 argument"
-
-#: calendar/pcs/query.c:247
-msgid "make-time expects argument 1 to be a string"
-msgstr "make-time oèakáva ako prvý argument re»azec"
-
-#: calendar/pcs/query.c:255
-msgid "make-time argument 1 must be an ISO 8601 date/time string"
-msgstr "make-time oèakáva prvý argument re»azec dátumu/èasu podµa ISO 8601"
-
-#: calendar/pcs/query.c:281
-msgid "time-add-day expects 2 arguments"
-msgstr "time-add-day oèakáva dva argumenty"
-
-#: calendar/pcs/query.c:286
-msgid "time-add-day expects argument 1 to be a time_t"
-msgstr "time-add-day oèakáva ako prvý argument time_t"
-
-#: calendar/pcs/query.c:293
-msgid "time-add-day expects argument 2 to be an integer"
-msgstr "time-add-day oèakáva ako druhý argument celé èíslo"
-
-#: calendar/pcs/query.c:318
-msgid "time-day-begin expects 1 argument"
-msgstr "time-day-begin oèakáva jeden argument"
-
-#: calendar/pcs/query.c:323
-msgid "time-day-begin expects argument 1 to be a time_t"
-msgstr "time-day-begin oèakáva ako prvý argument time_t"
-
-#: calendar/pcs/query.c:348
-msgid "time-day-end expects 1 argument"
-msgstr "time-day-end oèakáva jeden argument"
-
-#: calendar/pcs/query.c:353
-msgid "time-day-end expects argument 1 to be a time_t"
-msgstr "time-day-end oèakáva ako prvý argument time_t"
-
-#: calendar/pcs/query.c:389
-msgid "get-vtype expects 0 arguments"
-msgstr "get-vtype neoèakáva argumenty"
-
-#: calendar/pcs/query.c:472
-msgid "occur-in-time-range? expects 2 arguments"
-msgstr "occur-in-time-range? oèakáva dva argumenty"
-
-#: calendar/pcs/query.c:477
-msgid "occur-in-time-range? expects argument 1 to be a time_t"
-msgstr "occur-in-time-range? oèakáva ako druhý argument time_t"
-
-#: calendar/pcs/query.c:484
-msgid "occur-in-time-range? expects argument 2 to be a time_t"
-msgstr "oèakáva ako prvý argument time_t"
-
-#: calendar/pcs/query.c:611
-msgid "contains? expects 2 arguments"
-msgstr "contains? oèakáva dva argumenty"
-
-#: calendar/pcs/query.c:616
-msgid "contains? expects argument 1 to be a string"
-msgstr "contains? oèakáva ako prvý argument re»azec"
-
-#: calendar/pcs/query.c:623
-msgid "contains? expects argument 2 to be a string"
-msgstr "contains? oèakáva ako druhý argument re»azec"
-
-#: calendar/pcs/query.c:640
-msgid ""
-"contains? expects argument 1 to be one of \"any\", \"summary\", "
-"\"description\""
-msgstr ""
-"contains? oèakáva ako prvý argument \"any\", \"summary\" alebo "
-"\"description\""
-
-#: calendar/pcs/query.c:678
-msgid "has-categories? expects at least 1 argument"
-msgstr "has-categories? oèakáva aspoò jeden argument"
-
-#: calendar/pcs/query.c:684
-msgid "has-categories? expects all arguments to be strings"
-msgstr "has-categories? oèakáva v¹etky argumenty ako re»azce"
-
-#: calendar/pcs/query.c:932
-msgid "Evaluation of the search expression did not yield a boolean value"
-msgstr "Vyhodnotenie výrazu pre hµadanie neskonèilo pravdivostnou hodnotou"
-
-#: camel/camel-cipher-context.c:171
-msgid "Signing is not supported by this cipher"
-msgstr "Digitálny podpis nie je podporovaný touto ¹ifrou"
-
-#: camel/camel-cipher-context.c:211
-msgid "Clearsigning is not supported by this cipher"
-msgstr "Digitálny podpis v èistom texte nie je podporovaný touto ¹ifrou"
-
-#: camel/camel-cipher-context.c:251
-msgid "Verifying is not supported by this cipher"
-msgstr "Overenie podpisu nie je podporované touto ¹ifrou"
-
-#: camel/camel-cipher-context.c:294
-msgid "Encryption is not supported by this cipher"
-msgstr "©ifrovanie nie je podporované touto ¹ifrou"
-
-#: camel/camel-cipher-context.c:336
-msgid "Decryption is not supported by this cipher"
-msgstr "De¹ifrovanie nie je podporované touto ¹ifrou"
-
-#: camel/camel-disco-store.c:271
-msgid "You must be working online to complete this operation"
-msgstr "Pre dokonèenie tejto operácie musíte pracova» on-line"
-
-#: camel/camel-filter-driver.c:534 camel/camel-filter-driver.c:543
-msgid "Syncing folders"
-msgstr "Synchronizujem prieèinky"
-
-#: camel/camel-filter-driver.c:643
-msgid "Unable to open spool folder"
-msgstr "Nie je mo¾né otvori» prieèinok fronty"
-
-#: camel/camel-filter-driver.c:652
-msgid "Unable to process spool folder"
-msgstr "Nie je mo¾né spracova» prieèinok fronty"
-
-#: camel/camel-filter-driver.c:666
-msgid "Getting message %d (%d%%)"
-msgstr "Získavam správu %d (%d%%)"
-
-#: camel/camel-filter-driver.c:670 camel/camel-filter-driver.c:679
-#, c-format
-msgid "Failed message %d"
-msgstr "Zlyhala správa %d"
-
-#: camel/camel-filter-driver.c:671
-msgid "Cannot open message"
-msgstr "Nie je mo¾né otvori» správu"
-
-#: camel/camel-filter-driver.c:690 camel/camel-filter-driver.c:788
-msgid "Syncing folder"
-msgstr "Synchronizujem prieèinok"
-
-#: camel/camel-filter-driver.c:694 camel/camel-filter-driver.c:793
-msgid "Complete"
-msgstr "Hotovo"
-
-#: camel/camel-filter-driver.c:748
-#, c-format
-msgid "Getting message %d of %d"
-msgstr "Získavam správu %d z %d"
-
-#: camel/camel-filter-driver.c:753 camel/camel-filter-driver.c:771
-#, c-format
-msgid "Failed at message %d of %d"
-msgstr "Zlyhanie na správe %d z %d"
-
-#: camel/camel-filter-driver.c:866
-#, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr "Chyba pri spracovávaní filtra: %s: %s"
-
-#: camel/camel-filter-driver.c:871
-#, c-format
-msgid "Error executing filter: %s: %s"
-msgstr "Chyba pri vykonávaní filtra: %s: %s"
-
-#: camel/camel-filter-search.c:439 camel/camel-filter-search.c:445
-#, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr "Chyba pri vykonávaní hµadania filtra: %s: %s"
-
-#: camel/camel-folder-search.c:328
-#, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-"Nie je mo¾né spracova» hµadací výraz: %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:338
-#, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr ""
-"Chyba pri vykonávaní hµadacieho výrazu: %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:485 camel/camel-folder-search.c:513
-msgid "(match-all) requires a single bool result"
-msgstr "(odpovedá v¹etkému) vy¾aduje jeden pravdivostný výsledok"
-
-#: camel/camel-folder-search.c:559
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr "Vykonanie otázky na neznámej hlavièke: %s"
-
-#: camel/camel-folder-search.c:670 camel/camel-folder-search.c:714
-msgid "Invalid type in body-contains, expecting string"
-msgstr "Neplatný typ v body-contains, oèakávam re»azec"
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:92 camel/camel-lock.c:111 camel/camel-movemail.c:138
-#: camel/camel-movemail.c:185
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "Nie je mo¾né vytvori» súbor so zámkom pre %s: %s"
-
-#: camel/camel-lock.c:151 camel/camel-movemail.c:219
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr "Vypr¹al èas pri pokuse o získanie zámku na %s. Skúste to neskôr."
-
-#: camel/camel-lock.c:201
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr "Nepodarilo sa získa» zámok pomocou fcntl(2): %s"
-
-#: camel/camel-lock.c:255
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr "Nepodarilo sa získa» zámok pomocou flock(2): %s"
-
-#: camel/camel-movemail.c:101
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr "Nie je mo¾né skontrolova» súbor s po¹tou %s: %s"
-
-#: camel/camel-movemail.c:148
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr "Nie je mo¾né otvori» súbor s po¹tou %s: %s"
-
-#: camel/camel-movemail.c:158
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr "Nie je mo¾né otvori» doèasný súbor s po¹tou %s: %s"
-
-#: camel/camel-movemail.c:199
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr "Nepodarilo sa otestova» súbor so zámkom pre %s: %s"
-
-#: camel/camel-movemail.c:245
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr "Chyba pri èítaní súboru s po¹tou: %s"
-
-#: camel/camel-movemail.c:256
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr "Chyba pri zápise po¹ty do doèasného súboru: %s"
-
-#: camel/camel-movemail.c:274
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr "Nepodarilo sa ulo¾i» po¹tu v doèasnom súbore %s: %s"
-
-#: camel/camel-movemail.c:306
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr "Nie je mo¾né vytvori» rúru: %s"
-
-#: camel/camel-movemail.c:318
-#, c-format
-msgid "Could not fork: %s"
-msgstr "Nie je mo¾né vykona» fork: %s"
-
-#: camel/camel-movemail.c:356
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr "Program movemail zlyhal: %s"
-
-#: camel/camel-movemail.c:357
-msgid "(Unknown error)"
-msgstr "(Neznáma chyba)"
-
-#: camel/camel-movemail.c:587
-#, c-format
-msgid "Error copying mail temp file: %s"
-msgstr "Chyba kopírovaní doèasného súboru: po¹ty %s"
-
-#: camel/camel-pgp-context.c:190
-#, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr "Prosím, zadajte va¹e %s heslo pre %s"
-
-#: camel/camel-pgp-context.c:193
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr "Prosím, zadajte va¹e %s heslo"
-
-#: camel/camel-pgp-context.c:511
-msgid "No plaintext to sign."
-msgstr "®iadny èistý text na podpis."
-
-#: camel/camel-pgp-context.c:518 camel/camel-pgp-context.c:690
-#: camel/camel-pgp-context.c:1057 camel/camel-pgp-context.c:1269
-msgid "No password provided."
-msgstr "Nezadané heslo."
-
-#: camel/camel-pgp-context.c:524 camel/camel-pgp-context.c:696
-#: camel/camel-pgp-context.c:879 camel/camel-pgp-context.c:1064
-#: camel/camel-pgp-context.c:1276
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr "Nie je mo¾né vytvori» rúru do GPG/PGP: %s"
-
-#: camel/camel-pgp-context.c:683
-msgid "No plaintext to clearsign."
-msgstr "®iadny èistý text pre pridanie digitálneho podpisu do èistého textu."
-
-#: camel/camel-pgp-context.c:873
-msgid "No plaintext to verify."
-msgstr "®iadny èistý text pre overenie."
-
-#: camel/camel-pgp-context.c:890
-#, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "Nie je mo¾né vytvori» doèasný súbor: %s"
-
-#: camel/camel-pgp-context.c:1047
-msgid "No plaintext to encrypt."
-msgstr "®iadny èistý text na za¹ifrovanie."
-
-#: camel/camel-pgp-context.c:1073
-msgid "No recipients specified"
-msgstr "Neuvedený ¾iadni adresáti"
-
-#: camel/camel-pgp-context.c:1261
-msgid "No ciphertext to decrypt."
-msgstr "®iadny za¹ifrovaný text na odkódovanie."
-
-#: camel/camel-pkcs7-context.c:197 camel/camel-smime-context.c:205
-#, c-format
-msgid "Please enter your password for %s"
-msgstr "Prosím, zadajte va¹e heslo pre %s"
-
-#: camel/camel-pkcs7-context.c:213 camel/camel-smime-context.c:221
-msgid "Error hashing password."
-msgstr "Chyba pri hashovaní hesla."
-
-#: camel/camel-pkcs7-context.c:222 camel/camel-smime-context.c:230
-msgid "Invalid password."
-msgstr "Neplatné heslo."
-
-#: camel/camel-pkcs7-context.c:329 camel/camel-smime-context.c:338
-#, c-format
-msgid "Could not sign: certificate not found for \"%s\"."
-msgstr "Nie je mo¾né podpísa»: certifikát pre \"%s\" nebol nájdený."
-
-#: camel/camel-pkcs7-context.c:378
-#, c-format
-msgid "Could not clearsign: certificate not found for \"%s\"."
-msgstr "Nie je mo¾né podpísa» v èistom text: certifikát pre \"%s\" nebol nájdený."
-
-#: camel/camel-pkcs7-context.c:567 camel/camel-smime-context.c:539
-msgid "Could not encrypt: failed to create enveloped data."
-msgstr "Nepodarilo sa za¹ifrovanie: nepodarilo sa vytvori» dáta s obálkou."
-
-#: camel/camel-pkcs7-context.c:590 camel/camel-smime-context.c:546
-msgid "Could not encrypt: failed to create encryption context."
-msgstr "Nepodarilo sa za¹ifrovanie: nepodarilo sa vytvori» za¹ifrovaný obsah."
-
-#: camel/camel-pkcs7-context.c:620 camel/camel-smime-context.c:581
-#, c-format
-msgid "Could not encrypt data: invalid user key: \"%s\"."
-msgstr "Nepodarilo sa za¹ifrovanie: neplatný kµúè pou¾ívateµa: \"%s\"."
-
-#: camel/camel-pkcs7-context.c:626 camel/camel-smime-context.c:587
-msgid "Could not encrypt: encoding failed."
-msgstr "Nepodarilo sa za¹ifrovanie: kódovanie zlyhalo."
-
-#: camel/camel-pkcs7-context.c:677 camel/camel-smime-context.c:637
-msgid "Failed to decrypt: Unknown"
-msgstr "Nepodarilo sa de¹ifrovanie: Neznáme"
-
-#: camel/camel-provider.c:131
-#, c-format
-msgid "Could not load %s: Module loading not supported on this system."
-msgstr ""
-"Nie je mo¾né naèíta» %s: Naèítavanie modulov nie je na tomto systéme "
-"podporované."
-
-#: camel/camel-provider.c:140
-#, c-format
-msgid "Could not load %s: %s"
-msgstr "Nie je mo¾né naèíta» %s: %s"
-
-#: camel/camel-provider.c:148
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr "Nie je mo¾né naèíta» %s: V module nie je inicializaèný kód."
-
-#: camel/camel-remote-store.c:191
-#, c-format
-msgid "%s server %s"
-msgstr "%s server %s"
-
-#: camel/camel-remote-store.c:195
-#, c-format
-msgid "%s service for %s on %s"
-msgstr "%s slu¾ba pre %s na %s"
-
-#: camel/camel-remote-store.c:252
-msgid "Connection cancelled"
-msgstr "Spojenie zru¹ené"
-
-#: camel/camel-remote-store.c:255
-#: camel/providers/smtp/camel-smtp-transport.c:269
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr "Nie je mo¾né spojenie s %s (port %d): %s"
-
-#: camel/camel-remote-store.c:256
-msgid "(unknown host)"
-msgstr "(neznámy hostiteµ)"
-
-#: camel/camel-remote-store.c:337 camel/camel-remote-store.c:399
-#: camel/camel-remote-store.c:470
-#: camel/providers/imap/camel-imap-command.c:287
-msgid "Operation cancelled"
-msgstr "Operácia zru¹ená"
-
-#: camel/camel-remote-store.c:476
-msgid "Server unexpectedly disconnected"
-msgstr "Server neoèakávane zru¹il spojenie"
-
-#: camel/camel-sasl-anonymous.c:33
-msgid "Anonymous"
-msgstr "Anonymný"
-
-#: camel/camel-sasl-anonymous.c:35
-msgid "This option will connect to the server using an anonymous login."
-msgstr "Táto voµba pripojí na server pomocou anonymného prihlásenia."
-
-#: camel/camel-sasl-anonymous.c:110 camel/camel-sasl-plain.c:87
-msgid "Authentication failed."
-msgstr "Overenie zlyhalo."
-
-#: camel/camel-sasl-anonymous.c:119
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-"Neplatná informácia krokovania e-mailovej adresy:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:131
-#, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr ""
-"Neplatná informácia nepriehµadného krokovania:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:143
-#, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr ""
-"Neplatná informácia krokovania:\n"
-"%s"
-
-#: camel/camel-sasl-cram-md5.c:35
-msgid "CRAM-MD5"
-msgstr "CRAM-MD5"
-
-#: camel/camel-sasl-cram-md5.c:37
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-"Táto voµba vás pripojí k serveru pomocou hesla CRAM-MD5, ak ho podporuje "
-"server."
-
-#: camel/camel-sasl-digest-md5.c:43
-msgid "DIGEST-MD5"
-msgstr "DIGEST-MD5"
-
-#: camel/camel-sasl-digest-md5.c:45
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-"Táto voµba vás pripojí k serveru pomocou bezpeèného hesla DIGEST-MD5, ak ho "
-"podporuje server."
-
-#: camel/camel-sasl-digest-md5.c:810
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr "Správa challenge pre server príli¹ dlhá (>2048 bajtov)\n"
-
-#: camel/camel-sasl-digest-md5.c:819
-msgid "Server challenge invalid\n"
-msgstr "Správa challenge pre server neplatná\n"
-
-#: camel/camel-sasl-digest-md5.c:825
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr "Správa challenge pre server obsahovala neplatný prvok \"Kvalita ochrany\"\n"
-
-#: camel/camel-sasl-digest-md5.c:847
-msgid "Server response did not contain authorization data\n"
-msgstr "Odpoveï serveru neobsahovala informáciu o overení\n"
-
-#: camel/camel-sasl-digest-md5.c:865
-msgid "Server response contained incomplete authorization data\n"
-msgstr "Odpoveï serveru obsahovala neúplné údaje o overení\n"
-
-#: camel/camel-sasl-digest-md5.c:875
-msgid "Server response does not match\n"
-msgstr "Odpoveï serveru neodpovedá\n"
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "Kerberos 4"
-msgstr "Kerberos 4"
-
-#: camel/camel-sasl-kerberos4.c:42
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr "Táto voµba vás pripojí na server pomocou overenia Kerberos 4."
-
-#: camel/camel-sasl-kerberos4.c:161
-#, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr ""
-"Nie je mo¾né získa» Kerberos ticket:\n"
-"%s"
-
-#: camel/camel-sasl-kerberos4.c:218
-#: camel/providers/imap/camel-imap-store.c:433
-msgid "Bad authentication response from server."
-msgstr "Neplatná odpoveï na overenie od serveru."
-
-#: camel/camel-sasl-login.c:32
-msgid "NT Login"
-msgstr "Prihlásenie NT"
-
-#: camel/camel-sasl-login.c:34 camel/camel-sasl-plain.c:34
-msgid "This option will connect to the server using a simple password."
-msgstr "Táto voµba pripojí na server pomocou hesiel prená¹aných ako èistý text."
-
-#: camel/camel-sasl-login.c:127
-msgid "Unknown authentication state."
-msgstr "Neznámy stav overenia."
-
-#: camel/camel-search-private.c:111
-#, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr "Preklad regulárneho výrazu zlyhal: %s: %s"
-
-#: camel/camel-service.c:154
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr "URL '%s' vy¾aduje komponentu pou¾ívateµského mena"
-
-#: camel/camel-service.c:162
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr "URL '%s' vy¾aduje komponentu hostiteµa"
-
-#: camel/camel-service.c:170
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr "URL '%s' vy¾aduje komponentu cesty"
-
-#: camel/camel-service.c:548
-#, c-format
-msgid "Resolving: %s"
-msgstr "Zis»ujem adresu: %s"
-
-#: camel/camel-service.c:575
-#, c-format
-msgid "Failure in name lookup: %s"
-msgstr "Zlyhalo hµadanie mena: %s"
-
-#: camel/camel-service.c:600
-#, c-format
-msgid "Host lookup failed: %s: host not found"
-msgstr "Zlyhalo hµadanie hostiteµa: %s: hostiteµ nenájdený"
-
-#: camel/camel-service.c:602
-#, c-format
-msgid "Host lookup failed: %s: unknown reason"
-msgstr "Zlyhalo hµadanie hostiteµa: %s: neznámy dôvod"
-
-#: camel/camel-session.c:68
-msgid "Virtual folder email provider"
-msgstr "Poskytovateµ po¹ty pre virtuálny prieèinok"
-
-#: camel/camel-session.c:70
-msgid "For reading mail as a query of another set of folders"
-msgstr "Pre èítanie po¹ty ako otázky na inú mno¾inu prieèinkov"
-
-#: camel/camel-session.c:295 camel/camel-session.c:364
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr "Pre protokol `%s' nie je k dispozícii poskytovateµ"
-
-#: camel/camel-session.c:479
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"Nie je mo¾né vytvori» prieèinok %s:\n"
-"%s"
-
-#: camel/camel-smime-context.c:354
-msgid "Could not sign: failed to create content info."
-msgstr "Nie je mo¾né podpísa»: nepodarilos a vytvori» informáciu o obsahu."
-
-#: camel/camel-smime-context.c:361
-msgid "Could not sign: failed to create signing context."
-msgstr "Nie je mo¾né podpísa»: nepodarilo sa vytvori» kontext."
-
-#: camel/camel-smime-context.c:367
-msgid "Could not sign: failed to create signature."
-msgstr "Nie je mo¾né podpísa»: nepodarilo sa vytvori» signatúru."
-
-#: camel/camel-smime-context.c:394
-msgid "'clearsign' is not supported by S/MIME."
-msgstr "Digitálny podpis v èistom texte nie je podporovaný pre S/MIME."
-
-#. Fill in the new fields
-#: camel/camel-store.c:378 mail/mail-ops.c:1007 mail/mail-ops.c:1014
-#: mail/mail-ops.c:1032 mail/mail-ops.c:1033
-msgid "Trash"
-msgstr "Odpadky"
-
-#: camel/camel-tcp-stream-ssl.c:348
-#, c-format
-msgid ""
-"EMail: %s\n"
-"Common Name: %s\n"
-"Organization Unit: %s\n"
-"Organization: %s\n"
-"Locality: %s\n"
-"State: %s\n"
-"Country: %s"
-msgstr ""
-"E-mail: %s\n"
-"Normálne meno: %s\n"
-"Organizaèná jednotka: %s\n"
-"Organizácia: %s\n"
-"Umiestnenie: %s\n"
-"©tát: %s\n"
-"Krajina: %s"
-
-#. construct our user prompt
-#: camel/camel-tcp-stream-openssl.c:428 camel/camel-tcp-stream-ssl.c:364
-#, c-format
-msgid ""
-"Bad certificate from %s:\n"
-"\n"
-"%s\n"
-"\n"
-"Do you wish to accept anyway?"
-msgstr ""
-"Neplatný certifikát od %s.\n"
-"\n"
-"%s\n"
-"\n"
-"Chcete ho aj tak akceptova»?"
-
-#: camel/camel-tcp-stream-openssl.c:423
-#, c-format
-msgid ""
-"Issuer: %s\n"
-"Subject: %s"
-msgstr ""
-"Vydal: %s\n"
-"Pre: %s"
-
-#: camel/camel-url.c:289
-#, c-format
-msgid "Could not parse URL `%s'"
-msgstr "Nie je mo¾né spracova» URL `%s'"
-
-#: camel/camel-vee-folder.c:451
-#, c-format
-msgid "No such message %s in %s"
-msgstr "Taká správa neexistuje %s v %s"
-
-#: camel/camel-vee-folder.c:546
-#, c-format
-msgid "No such message: %s"
-msgstr "®iadna taká správa: %s"
-
-#: camel/camel-vtrash-folder.c:109
-msgid "You cannot copy messages from this trash folder."
-msgstr "Nemô¾ete skopírova» správy z tohto prieèinku s odpadkami."
-
-#: camel/providers/imap/camel-imap-message-cache.c:150
-#, c-format
-msgid "Could not open cache directory: %s"
-msgstr "Nie je mo¾né otvori» prieèinok pre vyrovnávaciu pamä»: %s"
-
-#: camel/providers/imap/camel-imap-command.c:232
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "Neoèakávaná odpoveï od IMAP serveru: %s"
-
-#: camel/providers/imap/camel-imap-command.c:240
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr "IMAP príkaz zlyhal: %s"
-
-#: camel/providers/imap/camel-imap-command.c:241 shell/e-storage.c:481
-msgid "Unknown error"
-msgstr "Neznáma chyba"
-
-#: camel/providers/imap/camel-imap-command.c:295
-msgid "Server response ended too soon."
-msgstr "Odpoveï serveru skonèila príli¹ skoro."
-
-#: camel/providers/imap/camel-imap-command.c:487
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr "Odpoveï IMAP serveru neobsahovala informáciu %s"
-
-#: camel/providers/imap/camel-imap-command.c:524
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr "Neoèakávaná odpoveï OK od IMAP serveru: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:172
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr "Nie je mo¾né vytvori» prieèinok %s: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:191
-#, c-format
-msgid "Could not load summary for %s"
-msgstr "Nie je mo¾né naèíta» súhrn pre %s"
-
-#: camel/providers/imap/camel-imap-folder.c:364
-msgid "Scanning IMAP folder"
-msgstr "Prechádzam prieèinok IMAP"
-
-#: camel/providers/imap/camel-imap-folder.c:1047
-#: camel/providers/imap/camel-imap-folder.c:1281
-msgid "This message is not currently available"
-msgstr "Táto správa momentálne nie je k dipozícii"
-
-#: camel/providers/imap/camel-imap-folder.c:1075
-#: camel/providers/imap/camel-imap-folder.c:1314
-msgid "Could not find message body in FETCH response."
-msgstr "Nie je mo¾né nájs» telo správy v odpovedi FETCH."
-
-#: camel/providers/imap/camel-imap-provider.c:43 mail/mail-config.glade.h:13
-msgid "Checking for new mail"
-msgstr "Kontrolujem novú po¹tu"
-
-#: camel/providers/imap/camel-imap-provider.c:45
-msgid "Check for new messages in all folders"
-msgstr "Kontrolujem novú po¹tu vo v¹etkých prieèinkoch"
-
-#: camel/providers/imap/camel-imap-provider.c:48 shell/e-shell-view.c:552
-msgid "Folders"
-msgstr "Prieèinky"
-
-#: camel/providers/imap/camel-imap-provider.c:50
-msgid "Show only subscribed folders"
-msgstr "Zobrazi» iba prihlásené prieèinky"
-
-#: camel/providers/imap/camel-imap-provider.c:52
-msgid "Override server-supplied folder namespace"
-msgstr "Predefinova» mená prieèinkov zo serveru"
-
-#: camel/providers/imap/camel-imap-provider.c:54
-msgid "Namespace"
-msgstr "Priestor mien"
-
-#: camel/providers/imap/camel-imap-provider.c:57
-msgid "Apply filters to new messages in INBOX on this server"
-msgstr "Aplikova» filtre na nové správy v prieèinku novej po¹ty na tomto serveri"
-
-#: camel/providers/imap/camel-imap-provider.c:63
-msgid "IMAPv4"
-msgstr "IMAPv4"
-
-#: camel/providers/imap/camel-imap-provider.c:65
-msgid "For reading and storing mail on IMAP servers."
-msgstr "Pre èítanie a ukladanie po¹ty na IMAP serveroch."
-
-#: camel/providers/imap/camel-imap-provider.c:82
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr "Táto voµba pripojí na IMAP server pomocou hesiel prená¹aných ako èistý text."
-
-#: camel/providers/imap/camel-imap-store.c:456
-#, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr "Po¾adovaný spôsob overenia %s nie je podporovaný IMAP serverom %s"
-
-#: camel/providers/imap/camel-imap-store.c:466
-#: camel/providers/smtp/camel-smtp-transport.c:366
-#, c-format
-msgid "No support for authentication type %s"
-msgstr "Overenie typu %s nie je podporované."
-
-#: camel/providers/imap/camel-imap-store.c:490
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr "%sProsím, zadajte IMAP heslo pre %s@%s"
-
-#: camel/providers/imap/camel-imap-store.c:505
-#: camel/providers/smtp/camel-smtp-transport.c:410
-msgid "You didn't enter a password."
-msgstr "Nezadali ste heslo."
-
-#: camel/providers/imap/camel-imap-store.c:531
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Nepodarilo sa overi» na IMAP serveri.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/imap/camel-imap-store.c:803 mail/mail-local.c:334
-#, c-format
-msgid "No such folder %s"
-msgstr "Prieèinok %s neexistuje"
-
-#: camel/providers/local/camel-local-provider.c:39
-msgid "MH-format mail directories"
-msgstr "Po¹tové prieèinky vo formáte MH"
-
-#: camel/providers/local/camel-local-provider.c:40
-msgid "For storing local mail in MH-like mail directories"
-msgstr "Pre ukladanie lokálnej po¹ty v po¹tových prieèinkoch typu MH"
-
-#: camel/providers/local/camel-local-provider.c:49
-msgid "Standard Unix mailbox file"
-msgstr "©tandardný Unixový súbor mailbox"
-
-#: camel/providers/local/camel-local-provider.c:50
-msgid "For storing local mail in standard mbox format"
-msgstr "Pre ukladanie lokálnej po¹ty v ¹tandardnom formáte mbox"
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "Qmail maildir-format mail files"
-msgstr "Po¹tové súbory vo formáte Qmail maildir"
-
-#: camel/providers/local/camel-local-provider.c:60
-msgid "For storing local mail in qmail maildir directories"
-msgstr "Pre ukladanie lokálnej po¹ty v prieèinkov vo formáte qmail"
-
-#: camel/providers/local/camel-local-store.c:127
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr "Koreò ukladania %s nie je absolútna cesta"
-
-#: camel/providers/local/camel-local-store.c:134
-#, c-format
-msgid "Store root %s is not a regular directory"
-msgstr "Koreò ukladania %s nie je normálny prieèinok"
-
-#: camel/providers/local/camel-local-store.c:142
-#: camel/providers/local/camel-local-store.c:158
-#, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "Nie je mo¾né získa» prieèinok: %s: %s"
-
-#: camel/providers/local/camel-local-store.c:173
-msgid "Local stores do not have an inbox"
-msgstr "Lokálne ukladanie nemá prieèinok pre novú po¹tu"
-
-#: camel/providers/local/camel-local-store.c:183
-#, c-format
-msgid "Local mail file %s"
-msgstr "Lokálny po¹tový súbor %s"
-
-#: camel/providers/local/camel-local-store.c:237
-#, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr "Nie je mo¾né premenova» prieèinok %s na %s: %s"
-
-#: camel/providers/local/camel-local-store.c:279
-#, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr "Nie je mo¾né odstráni» súbor súhrnu prieèinku `%s': %s"
-
-#: camel/providers/local/camel-local-store.c:289
-#, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr "Nie je mo¾né odstráni» indexový súbor prieèinku`%s': %s"
-
-#: camel/providers/local/camel-local-summary.c:404
-msgid "Unable to add message to summary: unknown reason"
-msgstr "Nie je mo¾né prida» správu do súhrnu: neznámy dôvod"
-
-#: camel/providers/local/camel-maildir-folder.c:150
-#: camel/providers/local/camel-maildir-folder.c:158
-#: camel/providers/local/camel-maildir-folder.c:169
-#, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr "Nie je mo¾né prida» správu do prieèinku maildir: %s: %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-maildir-folder.c:209
-#: camel/providers/local/camel-maildir-folder.c:217
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#: camel/providers/local/camel-mh-folder.c:194
-#: camel/providers/local/camel-mh-folder.c:202
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-"Nie je mo¾né získa» správu: %s\n"
-" %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-msgid "No such message"
-msgstr "Taká správa neexistuje"
-
-#: camel/providers/local/camel-maildir-folder.c:218
-#: camel/providers/local/camel-mh-folder.c:203
-msgid "Invalid message contents"
-msgstr "Neplatný obsah správy"
-
-#: camel/providers/local/camel-maildir-store.c:96
-#: camel/providers/local/camel-mh-store.c:90
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-"Nie je mo¾né otvori» prieèinok `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:100
-#: camel/providers/local/camel-mbox-store.c:101
-#: camel/providers/local/camel-mh-store.c:97
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr "Prieèinok `%s' neexistuje."
-
-#: camel/providers/local/camel-maildir-store.c:107
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-"Nie je mo¾né vytvori» prieèinok `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:122
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr "`%s' nie je prieèinok maildir."
-
-#: camel/providers/local/camel-maildir-store.c:151
-#: camel/providers/local/camel-maildir-store.c:188
-#: camel/providers/local/camel-mh-store.c:127
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr "Nie je mo¾né odstráni» prieèinok `%s': %s"
-
-#: camel/providers/local/camel-maildir-store.c:152
-msgid "not a maildir directory"
-msgstr "nie je prieèinok maildir"
-
-#: camel/providers/local/camel-maildir-summary.c:405
-#: camel/providers/local/camel-maildir-summary.c:526
-#, c-format
-msgid "Cannot open maildir directory path: %s: %s"
-msgstr "Nie je mo¾né otvori» cestu po¹tovej schránky: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:152
-#, c-format
-msgid "Cannot create folder lock on %s: %s"
-msgstr "Nie je mo¾né získa» zámok na prieèinok %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:203
-#, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr "Nie je mo¾né otvori» po¹tovú schránku: %s: %s\n"
-
-#: camel/providers/local/camel-mbox-folder.c:259
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr "Nie je mo¾né prida» správu do súboru mbox: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:335
-#: camel/providers/local/camel-mbox-folder.c:367
-#: camel/providers/local/camel-mbox-folder.c:380
-#, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-"Nie je mo¾né získa» správu: %s z prieèinku %s\n"
-" %s"
-
-#: camel/providers/local/camel-mbox-folder.c:368
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr "Prieèinok vyzerá ako nenapraviteµne po¹kodený."
-
-#: camel/providers/local/camel-mbox-folder.c:381
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr "Vytvorenie správy zlyhalo: Po¹kodená po¹tová schránka?"
-
-#: camel/providers/local/camel-mbox-store.c:94
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-"Nie je mo¾né otvori» súbor `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:110
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-"Nie je mo¾né vytvori» súbor `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:119
-#: camel/providers/local/camel-mbox-store.c:146
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr "`%s' nie je normálny súbor."
-
-#: camel/providers/local/camel-mbox-store.c:138
-#: camel/providers/local/camel-mbox-store.c:161
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-"Nie je mo¾né odstráni» prieèinok `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr "Prieèinok `%s' nie je prázdny. Neodstránený."
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:249
-msgid "Summarising folder"
-msgstr "Vytváram súhrn prieèinku"
-
-#: camel/providers/local/camel-mbox-summary.c:254
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr "Nie je mo¾né otvori» prieèinok: %s: vytváram súhrn od pozície %ld: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:296
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr "Kritická chyba spracovania správy na pozícii %ld v prieèinku %s"
-
-#: camel/providers/local/camel-mbox-summary.c:371
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr "Nie je mo¾né vytvori» súhrn: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:502
-#: camel/providers/local/camel-mbox-summary.c:703 mail/mail-ops.c:1397
-msgid "Synchronising folder"
-msgstr "Synchronizujem prieèinok"
-
-#: camel/providers/local/camel-mbox-summary.c:507
-#: camel/providers/local/camel-mbox-summary.c:708
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr "Nie je mo¾né otvori» prieèinok pre vytvorenie súhrnu: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:524
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr "Nie je mo¾né otvori» doèasnú po¹tovú schránku: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:549
-#: camel/providers/local/camel-mbox-summary.c:557
-#: camel/providers/local/camel-mbox-summary.c:746
-#: camel/providers/local/camel-mbox-summary.c:754
-msgid "Summary and folder mismatch, even after a sync"
-msgstr "Súhrn a prieèinok si neodpovedajú, ani po synchronizácii"
-
-#: camel/providers/local/camel-mbox-summary.c:600
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr "Chyba pri zápise do doèasnej schránky: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:617
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr "Zápis do doèasnej schránky zlyhal: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:635
-#: camel/providers/local/camel-mbox-summary.c:804
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr "Nie je mo¾né zatvori» zdrojový prieèinok: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:644
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr "Nie je mo¾né zatvori» doèasný prieèinok: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:655
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr "Nie je mo¾né premenova» prieèinok: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:879
-#, c-format
-msgid "Unknown error: %s"
-msgstr "Neznáma chyba: %s"
-
-#: camel/providers/local/camel-mh-folder.c:149
-#: camel/providers/local/camel-mh-folder.c:157
-#, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr "Nie je mo¾né prida» správu do prieèinok mh: %s: %s"
-
-#: camel/providers/local/camel-mh-store.c:110
-#, c-format
-msgid "`%s' is not a directory."
-msgstr "`%s' nie je prieèinok."
-
-#: camel/providers/local/camel-mh-summary.c:218
-#, c-format
-msgid "Cannot open MH directory path: %s: %s"
-msgstr "Nie je mo¾né otvori» cestu MH: %s: %s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:45
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr "Prosím, zadajte NNTP heslo pre %s@%s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:66
-msgid "Server rejected username"
-msgstr "Server odmietol pou¾ívateµské meno"
-
-#: camel/providers/nntp/camel-nntp-auth.c:72
-msgid "Failed to send username to server"
-msgstr "Nepodarilo sa posla» pou¾ívateµské meno na server"
-
-#: camel/providers/nntp/camel-nntp-auth.c:81
-msgid "Server rejected username/password"
-msgstr "Server odmietol pou¾ívateµské meno/heslo"
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr "Správa %s nenájdená."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr "Nie je mo¾né získa» zoznam skupín zo serveru."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr "Nie je mo¾né naèíta» súbor so zoznamom skupín pre %s: %s"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr "Nie je mo¾né ulo¾i» súbor so zoznamom skupín pre %s: %s"
-
-#: camel/providers/nntp/camel-nntp-provider.c:42
-msgid "USENET news"
-msgstr "Diskusné skupiny USENET"
-
-#: camel/providers/nntp/camel-nntp-provider.c:44
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr "Toto je prístup k èítaniu a posielaniu do Diskusných skupín USENET."
-
-#: camel/providers/nntp/camel-nntp-store.c:224
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr "Nie je mo¾né otvori» prieèinok pre server diskusných skupín: %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:286
-#, c-format
-msgid "USENET News via %s"
-msgstr "Diskusné skupiny USENET pomocou %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:293
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-"Táto mo¾nos» nastaví overenie na NNTP server pomocou poslania hesla ako "
-"èistého textu."
-
-#: camel/providers/nntp/camel-nntp-store.c:325
-#: camel/providers/nntp/camel-nntp-store.c:488
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr "Nie je mo¾né otvori» alebo vytvori» súbor .newsrc pre %s: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-msgid "Retrieving POP summary"
-msgstr "Získavam POP súhrn"
-
-#: camel/providers/pop3/camel-pop3-folder.c:155
-#, c-format
-msgid "Could not check POP server for new messages: %s"
-msgstr "Nie je mo¾né skontrolova» novú po¹tu na POP serveri: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:199
-msgid "Could not open folder: message listing was incomplete."
-msgstr "Nie je mo¾né otvori» prieèinok: zoznam správ nebol úplný."
-
-#: camel/providers/pop3/camel-pop3-folder.c:292
-#, c-format
-msgid "No message with uid %s"
-msgstr "®iadna správa s uid %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:296
-#, c-format
-msgid "Retrieving POP message %d"
-msgstr "Získavam POP správu %d"
-
-#: camel/providers/pop3/camel-pop3-folder.c:303
-#, c-format
-msgid "Could not fetch message: %s"
-msgstr "Nie je mo¾né získa» správu: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:320
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr "Nie je mo¾né získa» správu zo POP serveru %s: %s"
-
-#: camel/providers/pop3/camel-pop3-provider.c:37
-msgid "Message storage"
-msgstr "Sklad správ"
-
-#: camel/providers/pop3/camel-pop3-provider.c:39
-msgid "Leave messages on server"
-msgstr "Necha» po¹tu na serveri"
-
-#: camel/providers/pop3/camel-pop3-provider.c:41
-#, c-format
-msgid "Delete after %s day(s)"
-msgstr "Odstráni» po %s dòoch"
-
-#: camel/providers/pop3/camel-pop3-provider.c:48 mail/mail-config.glade.h:51
-msgid "POP"
-msgstr "POP"
-
-#: camel/providers/pop3/camel-pop3-provider.c:50
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-"Pre spojenie s POP serverami. Protokol POP je mo¾né pou¾i» aj pre získavanie "
-"po¹ty od rôznych poskytovateµov po¹ty pomocou WWW a proprietárnymi po¹tovými "
-"systémami."
-
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-"Táto voµba vás spojí s POP serverom pomocou hesla preneseného ako èistý "
-"text. To je èasto jediná mo¾nos», ktorú POP servery podporujú."
-
-#: camel/providers/pop3/camel-pop3-provider.c:79
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-"Táto voµba vás spojí s POP serverom pomocou ¹ifrovaného hesla protokolom "
-"APOP. Nemusí to fungova» pre v¹etkých pou¾ívateµov aj keï server tvrdí, ¾e "
-"tento protokol podporuje."
-
-#: camel/providers/pop3/camel-pop3-provider.c:91
-msgid "This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr "Táto voµba vás spojí s POP serverom pomocou overenia Kerberos 4."
-
-#: camel/providers/pop3/camel-pop3-store.c:199
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr "Nepodarilo sa overi» na KPOP serveri: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:215
-#, c-format
-msgid "Could not connect to server: %s"
-msgstr "Nie je mo¾né sa spoji» so serverom: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:322
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr "Nie je mo¾né sa spoji» s POP serverom na %s."
-
-#: camel/providers/pop3/camel-pop3-store.c:361
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr "%sProsím, zadajte POP3 heslo pre %s@%s"
-
-#: camel/providers/pop3/camel-pop3-store.c:379
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-"Nepodarilo sa pripoji» k POP serveru.\n"
-"Chyba pri posielaní pou¾ívateµského mena: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:382
-#: camel/providers/pop3/camel-pop3-store.c:419
-msgid "(Unknown)"
-msgstr "(Neznámy)"
-
-#: camel/providers/pop3/camel-pop3-store.c:409
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-"Nepodarilo sa pripoji» k POP serveru.\n"
-"Po¾adovaný spôsob overenia nie je podporovaný."
-
-#: camel/providers/pop3/camel-pop3-store.c:417
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-"Nepodarilo sa pripoji» k POP serveru.\n"
-"Chyba pri posielaní hesla: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:484
-#, c-format
-msgid "No such folder `%s'."
-msgstr "Prieèinok `%s' neexistuje."
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:37
-#: mail/mail-config.glade.h:67
-msgid "Sendmail"
-msgstr "Sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:39
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr "Pre doruèenie po¹ty programom \"sendmail\" na tomto poèítaèi."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:107
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr "Nie je mo¾né vytvori» rúru do sendmailu: %s: po¹ta neodoslaná"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:124
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr "Nie je mo¾né spusti» sendmail: %s: po¹ta neodoslaná"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:150
-#, c-format
-msgid "Could not send message: %s"
-msgstr "Nie je mo¾né posla» správu: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:163
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr "sendmail skonèil so signálom %s: po¹ta neodoslaná."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:170
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr "Nie je mo¾né vykona» %s: po¹ta neodoslaná."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:175
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr "sendmail skonèil so stavom %d: po¹ta neodoslaná."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:194
-msgid "Could not find 'From' address in message"
-msgstr "Nie je mo¾né nájs» v správe adresu 'Od'"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "sendmail"
-msgstr "sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:249
-msgid "Mail delivery via the sendmail program"
-msgstr "Prenos po¹ty pomocou programu sendmail"
-
-#: camel/providers/smtp/camel-smtp-provider.c:38 mail/mail-config.glade.h:62
-msgid "SMTP"
-msgstr "SMTP"
-
-#: camel/providers/smtp/camel-smtp-provider.c:40
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr "Pre doruèenie po¹ty spojením sa so vzdialeným serverom pomocou SMTP.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:168
-msgid "Syntax error, command unrecognized"
-msgstr "Syntaktická chyba, príkaz neznámy"
-
-#: camel/providers/smtp/camel-smtp-transport.c:170
-msgid "Syntax error in parameters or arguments"
-msgstr "Syntaktická chyba v parametroch alebo argumentoch"
-
-#: camel/providers/smtp/camel-smtp-transport.c:172
-msgid "Command not implemented"
-msgstr "Príkaz neimplementovaný"
-
-#: camel/providers/smtp/camel-smtp-transport.c:174
-msgid "Command parameter not implemented"
-msgstr "Parameter príkazu neimplementovaný"
-
-#: camel/providers/smtp/camel-smtp-transport.c:176
-msgid "System status, or system help reply"
-msgstr "Stav systému alebo odpoveï na pomoc"
-
-#: camel/providers/smtp/camel-smtp-transport.c:178
-msgid "Help message"
-msgstr "Správa pomocníka"
-
-#: camel/providers/smtp/camel-smtp-transport.c:180
-msgid "Service ready"
-msgstr "Slu¾ba pripravená"
-
-#: camel/providers/smtp/camel-smtp-transport.c:182
-msgid "Service closing transmission channel"
-msgstr "Slu¾ba zatvára prenosový kanál"
-
-#: camel/providers/smtp/camel-smtp-transport.c:184
-msgid "Service not available, closing transmission channel"
-msgstr "Slu¾ba nie je k dispozícii, zatváram prenosový kanál"
-
-#: camel/providers/smtp/camel-smtp-transport.c:186
-msgid "Requested mail action okay, completed"
-msgstr "Po¾adovaná po¹tová akcia v poriadku, dokonèená"
-
-#: camel/providers/smtp/camel-smtp-transport.c:188
-msgid "User not local; will forward to <forward-path>"
-msgstr "Pou¾ívateµ nie je lokálny, bude predaná podµa <forward-path>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:190
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr "Po¾adovaná po¹tová akcia nevykonaná, po¹tová schránka nie je k dispozícii"
-
-#: camel/providers/smtp/camel-smtp-transport.c:192
-msgid "Requested action not taken: mailbox unavailable"
-msgstr "Po¾adovaná akcia nevykonaná, po¹tová schránka nie je k dispozícii"
-
-#: camel/providers/smtp/camel-smtp-transport.c:194
-msgid "Requested action aborted: error in processing"
-msgstr "Po¾adovaná akcia zru¹ená: chyba pri spracovaní"
-
-#: camel/providers/smtp/camel-smtp-transport.c:196
-msgid "User not local; please try <forward-path>"
-msgstr "Pou¾ívateµ nie je lokálny, skúste <forward-path>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:198
-msgid "Requested action not taken: insufficient system storage"
-msgstr "Po¾adovaná akcia nevykonaná: nedostatok miesta v systéme"
-
-#: camel/providers/smtp/camel-smtp-transport.c:200
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr "Po¾adovaná po¹tová akcia preru¹ená: presiahnutá alokácia miesta"
-
-#: camel/providers/smtp/camel-smtp-transport.c:202
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr "Po¾adovaná akcia nevykonaná: meno po¹tovej schránky nepovolené"
-
-#: camel/providers/smtp/camel-smtp-transport.c:204
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr "Spusti» vstup po¹ty, konèí <CRLF>.<CRLF>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:206
-msgid "Transaction failed"
-msgstr "Prenos zlyhal"
-
-#: camel/providers/smtp/camel-smtp-transport.c:210
-msgid "A password transition is needed"
-msgstr "Vy¾adované heslo"
-
-#: camel/providers/smtp/camel-smtp-transport.c:212
-msgid "Authentication mechanism is too weak"
-msgstr "Mechanizmus overenia je príli¹ slabý"
-
-#: camel/providers/smtp/camel-smtp-transport.c:214
-msgid "Encryption required for requested authentication mechanism"
-msgstr "Po¾adované ¹ifrovanie pre po¾adovaný spôsob overenia"
-
-#: camel/providers/smtp/camel-smtp-transport.c:216
-msgid "Temporary authentication failure"
-msgstr "Doèasné zlyhanie overenia."
-
-#: camel/providers/smtp/camel-smtp-transport.c:218
-msgid "Authentication required"
-msgstr "Autentifikácia vy¾adovaná"
-
-#: camel/providers/smtp/camel-smtp-transport.c:313
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr "Chyba privítanie od serveru: %s : mo¾no nie kritické"
-
-#: camel/providers/smtp/camel-smtp-transport.c:356
-#, c-format
-msgid "SMTP server %s does not support requested authentication type %s"
-msgstr "Po¾adovaný spôsob overenia %s nie je podporovaný SMTP serverom %s."
-
-#: camel/providers/smtp/camel-smtp-transport.c:395
-#, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr "%sProsím, zadajte SMTP heslo pre %s@%s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:418
-#, c-format
-msgid ""
-"Unable to authenticate to SMTP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Nepodarilo sa overi» na SMTP serveri.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:534
-#, c-format
-msgid "SMTP server %s"
-msgstr "SMTP server %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:536
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr "Doruèenie po¹ty SMTP pomocou %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:561
-msgid "Cannot send message: sender address not defined."
-msgstr "Nie je mo¾né posla» správu: adresa odosielateµa nie je definovaná."
-
-#: camel/providers/smtp/camel-smtp-transport.c:568
-msgid "Cannot send message: sender address not valid."
-msgstr "Nie je mo¾né posla» správu: adresa odosielateµa nie je platná."
-
-#: camel/providers/smtp/camel-smtp-transport.c:582
-msgid "Cannot send message: no recipients defined."
-msgstr "Nie je mo¾né posla» správu: adresáti nie sú definovaní."
-
-#: camel/providers/smtp/camel-smtp-transport.c:676
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr "Vypr¹al èas odpovede HELO: %s: nie je kritická"
-
-#: camel/providers/smtp/camel-smtp-transport.c:695
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr "Chyba odpovede HELO: %s: nie je kritická"
-
-#: camel/providers/smtp/camel-smtp-transport.c:728
-msgid "Error creating SASL authentication object."
-msgstr "Chyba pri vytváraní overovacieho objektu SASL."
-
-#: camel/providers/smtp/camel-smtp-transport.c:743
-#: camel/providers/smtp/camel-smtp-transport.c:755
-#, c-format
-msgid "AUTH request timed out: %s"
-msgstr "Vypr¹al èas po¾iadavky AUTH: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:764
-msgid "AUTH request failed."
-msgstr "Po¾iadavka AUTH zlyhala."
-
-#: camel/providers/smtp/camel-smtp-transport.c:809
-msgid "Bad authentication response from server.\n"
-msgstr "Neplatná odpoveï na overenie od serveru.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:835
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr "Vypr¹al èas odpovede MAIL FROM: %s: po¹ta neodoslaná"
-
-#: camel/providers/smtp/camel-smtp-transport.c:854
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr "Chyba odpovede MAIL FROM: %s: po¹ta neodoslaná"
-
-#: camel/providers/smtp/camel-smtp-transport.c:879
-#, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr "Vypr¹al èas odpovede RCPT TO: %s: po¹ta neodoslaná"
-
-#: camel/providers/smtp/camel-smtp-transport.c:898
-#, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr "Chyba odpovede RCPT TO: %s: po¹ta neodoslaná"
-
-#: camel/providers/smtp/camel-smtp-transport.c:929
-#, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr "Vypr¹al èas posielania DATA: %s: po¹ta neodoslaná"
-
-#: camel/providers/smtp/camel-smtp-transport.c:948
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr "Chyba odpovede DATA: %s: po¹ta neodoslaná"
-
-#: camel/providers/smtp/camel-smtp-transport.c:963
-#: camel/providers/smtp/camel-smtp-transport.c:981
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr "Vypr¹al èas posielania DATA: koniec správy: %s: po¹ta neodoslaná"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1000
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr "Chyba odpovede DATA: koniec správy: %s: po¹ta neodoslaná"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1024
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr "Vypr¹al èas odpovede RSET: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1043
-#, c-format
-msgid "RSET response error: %s"
-msgstr "Chyba odpovede RSET: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1066
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr "Vypr¹al èas odpovede QUIT: %s: nie je kritická"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1085
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr "Chyba odpovede QUIT: %s: nie je kritická"
-
-#: composer/e-msg-composer-attachment-bar.c:95
-msgid "1 byte"
-msgstr "1 bajt"
-
-#: composer/e-msg-composer-attachment-bar.c:97
-#, c-format
-msgid "%u bytes"
-msgstr "%u bajtov"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fK"
-
-#: composer/e-msg-composer-attachment-bar.c:108
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fM"
-
-#: composer/e-msg-composer-attachment-bar.c:112
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fG"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:332 mail/mail-display.c:121
-msgid "attachment"
-msgstr "príloha"
-
-#: composer/e-msg-composer-attachment-bar.c:421
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr "Prilo¾i» súbor"
-
-#: composer/e-msg-composer-attachment-bar.c:469
-msgid "Remove selected items from the attachment list"
-msgstr "Odstráni vybrané polo¾ky zo zoznamu príloh"
-
-#: composer/e-msg-composer-attachment-bar.c:500
-msgid "Add attachment..."
-msgstr "Prida» prílohu..."
-
-#: composer/e-msg-composer-attachment-bar.c:501
-msgid "Attach a file to the message"
-msgstr "Prilo¾í súbor k správe"
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/mail-config.glade.h:9
-#: mail/message-list.c:1081
-msgid "Attachment"
-msgstr "Príloha"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr "Vlastnosti prílohy"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr "Meno súboru:"
-
-#: composer/e-msg-composer-attachment.glade.h:5
-msgid "Inline attachment"
-msgstr "Príloha v texte"
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr "Typ MIME:"
-
-#: composer/e-msg-composer-attachment.glade.h:7
-msgid "Send as:"
-msgstr "Posla» ako:"
-
-#: composer/e-msg-composer.c:536
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-"Nie je mo¾né otvori» súbor s podpisom %s:\n"
-"%s"
-
-#: composer/e-msg-composer.c:709
-msgid "Save as..."
-msgstr "Ulo¾i» ako..."
-
-#: composer/e-msg-composer.c:720
-#, c-format
-msgid "Error saving file: %s"
-msgstr "Chyba pri ukladaní súboru: %s"
-
-#: composer/e-msg-composer.c:740
-#, c-format
-msgid "Error loading file: %s"
-msgstr "Chyba pri naèítavaní súboru: %s"
-
-#: composer/e-msg-composer.c:812
-msgid ""
-"Unable to open the drafts folder for this account.\n"
-"Would you like to use the default drafts folder?"
-msgstr ""
-"Nei je mo¾né otvori» prieèinok na koncepty pre tento úèet.\n"
-"Chcete pou¾i» ¹tandardný prieèinok na koncepty?"
-
-#: composer/e-msg-composer.c:870 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:206
-msgid "Evolution"
-msgstr "Evolution"
-
-#: composer/e-msg-composer.c:876
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-"Táto správa nebola odoslaná.\n"
-"\n"
-"Chcete ulo¾i» zmeny?"
-
-#: composer/e-msg-composer.c:901
-msgid "Open file"
-msgstr "Otvori» súbor"
-
-#: composer/e-msg-composer.c:1027
-msgid "That file does not exist."
-msgstr "Súbor neexistuje."
-
-#: composer/e-msg-composer.c:1037
-msgid "That is not a regular file."
-msgstr "Toto nie je normálny súbor."
-
-#: composer/e-msg-composer.c:1047
-msgid "That file exists but is not readable."
-msgstr "Súbor existuje, ale nedá sa preèíta»."
-
-#: composer/e-msg-composer.c:1057
-msgid "That file appeared accesible but open(2) failed."
-msgstr "Súbor vyzerá ako dostupný, ale open(2) zlyhala."
-
-#: composer/e-msg-composer.c:1079
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-"Súbor je veµmi veµký (viac ako 100K)\n"
-"Naozaj ho chcete vlo¾i»?"
-
-#: composer/e-msg-composer.c:1100
-msgid "An error occurred while reading the file."
-msgstr "Nastala chyba poèas èítania súboru."
-
-#: composer/e-msg-composer.c:1401 composer/e-msg-composer.c:1744
-msgid "Compose a message"
-msgstr "Napísa» správu"
-
-#: composer/e-msg-composer.c:1835
-msgid "Could not create composer window."
-msgstr "Nie je mo¾né vytvori» okno editora správ."
-
-#: composer/e-msg-composer-hdrs.c:323
-msgid "Click here for the address book"
-msgstr "Kliknutím zobrazíte adresár"
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:354 mail/mail-format.c:753
-msgid "From:"
-msgstr "Od:"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:360 mail/mail-format.c:755
-msgid "Reply-To:"
-msgstr "Odpoveda» komu:"
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:371 mail/mail-format.c:652
-msgid "Subject:"
-msgstr "Predmet:"
-
-#: composer/e-msg-composer-hdrs.c:385 mail/mail-format.c:757
-msgid "To:"
-msgstr "Komu:"
-
-#: composer/e-msg-composer-hdrs.c:386
-msgid "Enter the recipients of the message"
-msgstr "Zadajte adresátov správy"
-
-#: composer/e-msg-composer-hdrs.c:389 mail/mail-format.c:759
-msgid "Cc:"
-msgstr "Cc:"
-
-#: composer/e-msg-composer-hdrs.c:390
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "Zadajte adresy, ktoré dostanú kópiu správy"
-
-#: composer/e-msg-composer-hdrs.c:393
-msgid "Bcc:"
-msgstr "Bcc:"
-
-#: composer/e-msg-composer-hdrs.c:394
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"Zadajte adresy, ktoré dostanú kópiu správy bez toho, aby boli v zozname "
-"adresátov správy."
-
-#: composer/evolution-composer.c:355
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-"Nie je mo¾né vytvori» okno pre písanie správ, preto¾e ste e¹te\n"
-"nenastavili ¾iadne identity pre po¹tový komponent."
-
-#: composer/evolution-composer.c:370
-msgid "Cannot initialize Evolution's composer."
-msgstr "Nie je mo¾né inicializova» editor správ Evolution."
-
-#: data/evolution.desktop.in.h:2
-msgid "The Evolution groupware suite"
-msgstr "Sada groupvérových nástrojov Evolution"
-
-#: data/evolution.keys.in.h:1
-msgid "address card"
-msgstr "karta adresára"
-
-#: data/evolution.keys.in.h:2
-msgid "calendar information"
-msgstr "informácie o kalendári"
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:69 e-util/e-time-utils.c:117
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:477
-#: widgets/misc/e-dateedit.c:1284 widgets/misc/e-dateedit.c:1465
-msgid "%m/%d/%Y"
-msgstr "%d/%m/%Y"
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:87 e-util/e-time-utils.c:198
-msgid "%I:%M:%S %p%n"
-msgstr "%I:%M:%S %p%n"
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:90 e-util/e-time-utils.c:201
-msgid "%H:%M:%S%n"
-msgstr "%H:%M:%S%n"
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:94 e-util/e-time-utils.c:205
-msgid "%I:%M %p%n"
-msgstr "%I:%M %p%n"
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:97 e-util/e-time-utils.c:208
-msgid "%H:%M%n"
-msgstr "%H:%M%n"
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:269
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:473
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2505
-msgid "%a %m/%d/%Y"
-msgstr "%a %d/%m/%Y"
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:274
-msgid "%a %m/%d/%Y %H:%M"
-msgstr "%a %d/%m/%Y %H:%M:%S"
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:283
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr "%a %d/%m/%Y %I:%M:%S %p"
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:312 widgets/misc/e-dateedit.c:1259
-#: widgets/misc/e-dateedit.c:1318 widgets/misc/e-dateedit.c:1497
-msgid "%H:%M"
-msgstr "%H:%M"
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:315
-msgid "%H:%M:%S"
-msgstr "%H:%M:%S"
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:320 widgets/misc/e-dateedit.c:1262
-#: widgets/misc/e-dateedit.c:1321 widgets/misc/e-dateedit.c:1500
-msgid "%I:%M %p"
-msgstr "%I:%M %p"
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:323
-msgid "%I:%M:%S %p"
-msgstr "%I:%M:%S %p"
-
-#: executive-summary/component/component-factory.c:152
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr "Nie je mo¾né inicializova» komponent Súhrn Evolution."
-
-#: executive-summary/component/e-summary.c:926
-#, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"Nie je mo¾né otvori» súbor HTML:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:940
-#, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr ""
-"Chyba pri èítaní dát:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:958
-msgid "File does not have a place for the services.\n"
-msgstr "Súbor nemá miesto pre slu¾by.\n"
-
-#: executive-summary/component/e-summary-callbacks.c:126
-msgid "Select a service"
-msgstr "Vyberte slu¾bu"
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-"Vybrali ste inú stránku HTML pre pozadie Súhrnu.\n"
-"\n"
-"Pre ¹tandardnú nevypåòajte niè."
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr "Otvori» %s pomocou ¹tandardnej aplikácie GNOME"
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr "Otvori» %s pomocou ¹tandardného prehliadaèa WWW GNOME"
-
-#: executive-summary/component/e-summary-url.c:71
-#, c-format
-msgid "Send an email to %s"
-msgstr "Posla» e-mail %s"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr "Zmeni» pohµad na %s"
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr "Spusti» %s"
-
-#: executive-summary/component/e-summary-url.c:75
-#, c-format
-msgid "Close %s"
-msgstr "Zavrie» %s"
-
-#: executive-summary/component/e-summary-url.c:76
-#, c-format
-msgid "Move %s to the left"
-msgstr "Presunú» %s doµava"
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr "Presunú» %s doprava"
-
-#: executive-summary/component/e-summary-url.c:78
-#, c-format
-msgid "Move %s into the previous row"
-msgstr "Presunú» %s do predchádzajúceho riadku"
-
-#: executive-summary/component/e-summary-url.c:79
-#, c-format
-msgid "Move %s into the next row"
-msgstr "Presunú» %s do nasledujúceho riadku"
-
-#: executive-summary/component/e-summary-url.c:80
-#, c-format
-msgid "Configure %s"
-msgstr "Nastavenie %s"
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr "Vzhµad"
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr "Pozadie:"
-
-#: executive-summary/component/main.c:62
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-"Komponent Súhrn nemohol inicializova» Bonobo.\n"
-"Ak bolo zobrazené nejaké varovanie o RootPOA, asi to\n"
-"znamená, ¾e ste prelo¾ili Bonobo s GOAD a nie s OAF."
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-msgid "Evolution component for the executive summary."
-msgstr "Komponent Evolution pre Súhrn."
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-msgid "Factory for the Evolution executive summary component."
-msgstr "Vytváracie rozhranie pre komponent Súhrn Evolution."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr "Vytváracie rozhranie pre súhrn RDF."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-msgid "RDF Summary"
-msgstr "Súhrn RDF"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-msgid "Factory for the test bonobo component."
-msgstr "Vytváracie rozhranie pre komponent testovacej slu¾by"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-msgid "Factory for the test component."
-msgstr "Vytváracie rozhranie pre testovaciu slu¾bu."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr "Testovacia slu¾ba Bonobo"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr "Testovacia slu¾ba"
-
-#: executive-summary/test-service/rdf-summary.c:512
-#: executive-summary/test-service/rdf-summary.c:549
-#: executive-summary/test-service/rdf-summary.c:594
-#: widgets/misc/e-messagebox.c:166
-msgid "Error"
-msgstr "Chyba"
-
-#: executive-summary/test-service/rdf-summary.c:775
-msgid "Update automatically"
-msgstr "Aktualizova» automaticky"
-
-#: executive-summary/test-service/rdf-summary.c:785
-msgid "Update now"
-msgstr "Aktualizova»"
-
-#: executive-summary/test-service/rdf-summary.c:795
-msgid "Update every "
-msgstr "Aktualizova» ka¾dých"
-
-#: executive-summary/test-service/rdf-summary.c:806
-#: filter/filter-datespec.c:83
-msgid "minutes"
-msgstr "minút"
-
-#: filter/filter-datespec.c:78
-msgid "year"
-msgstr "roku"
-
-#: filter/filter-datespec.c:78
-msgid "years"
-msgstr "rokov"
-
-#: filter/filter-datespec.c:79
-msgid "month"
-msgstr "mesiaca"
-
-#: filter/filter-datespec.c:79
-msgid "months"
-msgstr "mesiacov"
-
-#: filter/filter-datespec.c:80
-msgid "week"
-msgstr "tý¾dòa"
-
-#: filter/filter-datespec.c:80
-msgid "weeks"
-msgstr "tý¾dòov"
-
-#: filter/filter-datespec.c:81
-msgid "days"
-msgstr "dní"
-
-#: filter/filter-datespec.c:82
-msgid "hour"
-msgstr "hodiny"
-
-#: filter/filter-datespec.c:82
-msgid "hours"
-msgstr "hodín"
-
-#: filter/filter-datespec.c:83
-msgid "minute"
-msgstr "minúty"
-
-#: filter/filter-datespec.c:84
-msgid "second"
-msgstr "sekundy"
-
-#: filter/filter-datespec.c:84
-msgid "seconds"
-msgstr "sekúnd"
-
-#: filter/filter-datespec.c:199
-msgid "Oops. You have forgotten to choose a date."
-msgstr "Aj. Zabudli ste vybra» dátum."
-
-#: filter/filter-datespec.c:201
-msgid "Oops. You have chosen an invalid date."
-msgstr "Aj. Vybrali ste neplatný dátum."
-
-#: filter/filter-datespec.c:276
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-"Dátum správy bude porovnaný s èasom\n"
-"keï bol spustený filter alebo keï bol\n"
-"otvorený vprieèinok."
-
-#: filter/filter-datespec.c:299
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-"Dátum správy bude porovnaný\n"
-"s èasom, ktorý tu uvediete."
-
-#: filter/filter-datespec.c:339
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-"Dátum správy bude porovnaný\n"
-"s èas relatívnym k okam¾iku, keï bol\n"
-"filter spustený. Napr. \"pred tý¾dòom\".."
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:374
-msgid "the current time"
-msgstr "aktuálny tento"
-
-#: filter/filter-datespec.c:374
-msgid "a time you specify"
-msgstr "zadaný èas"
-
-#: filter/filter-datespec.c:375
-msgid "a time relative to the current time"
-msgstr "èas relatívny k aktuálnemu èasu"
-
-#. The label
-#: filter/filter-datespec.c:433
-msgid "Compare against"
-msgstr "Porovna» s"
-
-#: filter/filter-datespec.c:550 filter/filter-datespec.c:710
-msgid "now"
-msgstr "teraz"
-
-#: filter/filter-datespec.c:707
-msgid "<click here to select a date>"
-msgstr "<kliknutím vyberiete dátum>"
-
-#: filter/filter-editor.c:132 filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr "Pravidlá filtra"
-
-#. and now for the action area
-#: filter/filter-filter.c:452
-msgid "Then"
-msgstr "Potom"
-
-#: filter/filter-filter.c:466
-msgid "Add action"
-msgstr "Prida» akciu"
-
-#: filter/filter-folder.c:147
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-"Aj, zabudli ste vybra» prieèinok.\n"
-"Prosím, vrá»te sa a zadajte platný prieèinok, kam doruèi» po¹tu."
-
-#: filter/filter-folder.c:225 filter/vfolder-rule.c:285
-#: mail/mail-account-gui.c:682
-msgid "Select Folder"
-msgstr "Vybra» prieèinok"
-
-#: filter/filter-folder.c:250
-msgid "Enter folder URI"
-msgstr "Zadajte URI prieèinku"
-
-#: filter/filter-folder.c:296
-msgid "<click here to select a folder>"
-msgstr "<kliknutím vyberiete prieèinok>"
-
-#: filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr "Upravi» filtre"
-
-#: filter/filter.glade.h:5
-msgid "Edit VFolders"
-msgstr "Upravi» vprieèinky"
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr "Prijatá"
-
-#: filter/filter.glade.h:8
-msgid "Outgoing"
-msgstr "Odoslaná"
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:130
-msgid "Virtual Folders"
-msgstr "Virtuálne prieèinky"
-
-#: filter/filter.glade.h:11
-msgid "specific folders only"
-msgstr "iba ¹pecifické prieèinky"
-
-#: filter/filter.glade.h:12
-msgid "vFolder Sources"
-msgstr "Zdroje vprieèinkov"
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr "pre v¹etky aktívne vzdialené prieèinky"
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr "pre v¹etky lokálne a aktívne vzdialené prieèinky"
-
-#: filter/filter.glade.h:15
-msgid "with all local folders"
-msgstr "pre v¹etky lokálne prieèinky"
-
-#: filter/filter-input.c:193
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-"Chyba v regulárnom výraze '%s':\n"
-"%s"
-
-#: filter/filter-part.c:488
-msgid "Test"
-msgstr "Test"
-
-#: filter/filter-rule.c:626
-msgid "Rule name: "
-msgstr "Meno pravidla: "
-
-#: filter/filter-rule.c:630
-msgid "Untitled"
-msgstr "Bez mena"
-
-#: filter/filter-rule.c:646
-msgid "If"
-msgstr "Ak"
-
-#: filter/filter-rule.c:664
-msgid "Execute actions"
-msgstr "Spusti» akcie"
-
-#: filter/filter-rule.c:668
-msgid "if all criteria are met"
-msgstr "ak odpovedajú v¹etky kritériá"
-
-#: filter/filter-rule.c:673
-msgid "if any criteria are met"
-msgstr "ak odpovedá niektoré kritérium"
-
-#: filter/filter-rule.c:684
-msgid "Add criterion"
-msgstr "Prida» kritérium"
-
-#: filter/filter-rule.c:770
-msgid "incoming"
-msgstr "prijatá"
-
-#: filter/filter-rule.c:770
-msgid "outgoing"
-msgstr "odoslaná"
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Colour"
-msgstr "Priradi» farbu"
-
-#: filter/libfilter-i18n.h:4
-msgid "Assign Score"
-msgstr "Priradi» skóre"
-
-#: filter/libfilter-i18n.h:5
-msgid "Attachments"
-msgstr "Prílohy"
-
-#: filter/libfilter-i18n.h:7
-msgid "contains"
-msgstr "obsahuje"
-
-#: filter/libfilter-i18n.h:8
-msgid "Copy to Folder"
-msgstr "Kopírova» do prieèinku"
-
-#: filter/libfilter-i18n.h:9
-msgid "Date received"
-msgstr "Dátum prijatia"
-
-#: filter/libfilter-i18n.h:10
-msgid "Date sent"
-msgstr "Dátum odoslania"
-
-#: filter/libfilter-i18n.h:12
-msgid "Deleted"
-msgstr "Odstránené"
-
-#: filter/libfilter-i18n.h:13
-msgid "does not contain"
-msgstr "neobsahuje"
-
-#: filter/libfilter-i18n.h:14
-msgid "does not end with"
-msgstr "nekonèí na"
-
-#: filter/libfilter-i18n.h:15
-msgid "does not exist"
-msgstr "neexistuje"
-
-#: filter/libfilter-i18n.h:16
-msgid "does not sound like"
-msgstr "nevyzerá ako"
-
-#: filter/libfilter-i18n.h:17
-msgid "does not start with"
-msgstr "nezaèína na"
-
-#: filter/libfilter-i18n.h:18
-msgid "Do Not Exist"
-msgstr "Neexistuje"
-
-#: filter/libfilter-i18n.h:19
-msgid "Draft"
-msgstr "Návrh"
-
-#: filter/libfilter-i18n.h:20
-msgid "ends with"
-msgstr "konèí na"
-
-#: filter/libfilter-i18n.h:21
-msgid "Exist"
-msgstr "Existuje"
-
-#: filter/libfilter-i18n.h:22
-msgid "exists"
-msgstr "existuje"
-
-#: filter/libfilter-i18n.h:23
-msgid "Expression"
-msgstr "Výraz"
-
-#: filter/libfilter-i18n.h:24
-msgid "Forward to Address"
-msgstr "Preda» ïalej na adresu"
-
-#: filter/libfilter-i18n.h:25
-msgid "Important"
-msgstr "Dôle¾ité"
-
-#: filter/libfilter-i18n.h:26
-msgid "is"
-msgstr "je"
-
-#: filter/libfilter-i18n.h:27
-msgid "is greater than"
-msgstr "je viac ne¾"
-
-#: filter/libfilter-i18n.h:28
-msgid "is less than"
-msgstr "je menej ne¾"
-
-#: filter/libfilter-i18n.h:29
-msgid "is not"
-msgstr "nie je"
-
-#: filter/libfilter-i18n.h:30
-msgid "Mailing list"
-msgstr "Konferencia"
-
-#: filter/libfilter-i18n.h:31
-msgid "Message Body"
-msgstr "Telo správy"
-
-#: filter/libfilter-i18n.h:32
-msgid "Message Header"
-msgstr "Hlavièka správy"
-
-#: filter/libfilter-i18n.h:33
-msgid "Message was received"
-msgstr "Správa bola prijatá"
-
-#: filter/libfilter-i18n.h:34
-msgid "Message was sent"
-msgstr "Správa bola odoslaná"
-
-#: filter/libfilter-i18n.h:35
-msgid "Move to Folder"
-msgstr "Presunú» do prieèinku"
-
-#: filter/libfilter-i18n.h:36
-msgid "on or after"
-msgstr "dòa a po"
-
-#: filter/libfilter-i18n.h:37
-msgid "on or before"
-msgstr "dòa a pred"
-
-#: filter/libfilter-i18n.h:38
-msgid "Read"
-msgstr "Preèítaná"
-
-#: filter/libfilter-i18n.h:39
-msgid "Recipients"
-msgstr "Adresáti"
-
-#: filter/libfilter-i18n.h:40
-msgid "Regex Match"
-msgstr "Regul. výraz"
-
-#: filter/libfilter-i18n.h:41
-msgid "Replied to"
-msgstr "Odpovedaná"
-
-#: filter/libfilter-i18n.h:42 filter/score-rule.c:204 filter/score-rule.c:206
-#: mail/message-list.c:1081
-msgid "Score"
-msgstr "Skóre"
-
-#: filter/libfilter-i18n.h:43
-msgid "Sender"
-msgstr "Odosielateµ"
-
-#: filter/libfilter-i18n.h:44
-msgid "Set Status"
-msgstr "Nastavi» stav"
-
-#: filter/libfilter-i18n.h:45
-msgid "sounds like"
-msgstr "vyzerá ako"
-
-#: filter/libfilter-i18n.h:46
-msgid "Source Account"
-msgstr "Zdrojový úèet"
-
-#: filter/libfilter-i18n.h:47
-msgid "Specific header"
-msgstr "©pecifická hlavièka"
-
-#: filter/libfilter-i18n.h:48
-msgid "starts with"
-msgstr "zaèína na"
-
-#: filter/libfilter-i18n.h:50
-msgid "Stop Processing"
-msgstr "Zastavi» spracovanie"
-
-#: filter/libfilter-i18n.h:51 mail/message-list.c:1082
-msgid "Subject"
-msgstr "Predmet"
-
-#: filter/libfilter-i18n.h:52
-msgid "was after"
-msgstr "bolo po"
-
-#: filter/libfilter-i18n.h:53
-msgid "was before"
-msgstr "bolo pred"
-
-#: filter/rule-editor.c:147
-msgid "Rules"
-msgstr "Pravidlá"
-
-#: filter/rule-editor.c:240
-msgid "Add Rule"
-msgstr "Prida» pravidlo"
-
-#: filter/rule-editor.c:299
-msgid "Edit Rule"
-msgstr "Upravi» pravidlo"
-
-#: filter/score-editor.c:130
-msgid "Score Rules"
-msgstr "Pravidlá skóre"
-
-#: importers/elm-importer.c:512 importers/netscape-importer.c:780
-#: importers/pine-importer.c:646 shell/e-shell-importer.c:655
-#: shell/importer/import.glade.h:4
-msgid "Import"
-msgstr "Import"
-
-#: importers/elm-importer.c:517 importers/netscape-importer.c:785
-#: importers/pine-importer.c:651
-msgid "Mail"
-msgstr "Po¹ta"
-
-#: importers/elm-importer.c:521
-msgid "Elm Aliases"
-msgstr "Aliasy Elm"
-
-#: importers/elm-importer.c:528 importers/netscape-importer.c:807
-#: importers/pine-importer.c:668
-msgid "Don't ask me again"
-msgstr "Túto správu u¾ nezobrazova»"
-
-#: importers/elm-importer.c:561
-msgid ""
-"Evolution has found Elm mail files\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-"Evolution na¹iel po¹tové súbory Elm.\n"
-"Chcete ich naimportova» do Evolution?"
-
-#: importers/elm-importer.c:579
-msgid "Elm mail"
-msgstr "Po¹ta Elm"
-
-#: importers/evolution-gnomecard-importer.c:156
-msgid ""
-"Evolution has found GnomeCard files.\n"
-"Would you like them to be imported into Evolution?"
-msgstr ""
-"Evolution na¹iel súbory GnomeCard.\n"
-"Chcete ich naimportova» do Evolution?"
-
-#: importers/netscape-importer.c:790 importers/pine-importer.c:656
-msgid "Settings"
-msgstr "Nastavenie"
-
-#: importers/netscape-importer.c:795 mail/mail-callbacks.c:1464
-msgid "Filters"
-msgstr "Filtre"
-
-#: importers/netscape-importer.c:800
-msgid "Addressbooks"
-msgstr "Adresáre"
-
-#: importers/netscape-importer.c:847
-msgid ""
-"Evolution has found Netscape mail files.\n"
-"Would you like them to be imported into Evolution?"
-msgstr ""
-"Evolution na¹iel po¹tové súbory Netscape.\n"
-"Chcete ich naimportova» do Evolution?"
-
-#: importers/pine-importer.c:661
-msgid "Addressbook"
-msgstr "Adresár"
-
-#: importers/pine-importer.c:705
-msgid ""
-"Evolution has found Pine mail files.\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-"Evolution na¹iel po¹tové súbory Pine.\n"
-"Chcete ich naimportova» do Evolution?"
-
-#: importers/pine-importer.c:723
-msgid "Pine mail"
-msgstr "Po¹ta Pine"
-
-#: mail/component-factory.c:337
-msgid "Cannot initialize Evolution's mail component."
-msgstr "Nie je mo¾né inicializova» po¹tový komponent Evolution."
-
-#: mail/component-factory.c:410
-msgid "Cannot register storage with shell"
-msgstr "Nie je mo¾né zaregistrova» sklad u shellu"
-
-#: mail/folder-browser.c:270
-msgid "Store search as vFolder"
-msgstr "Ulo¾i» hµadanie ako vPrieèinok"
-
-#: mail/folder-browser.c:587 ui/evolution-mail.xml.h:95
-msgid "VFolder on _Subject"
-msgstr "Vprieèinok na _predmet"
-
-#: mail/folder-browser.c:590 ui/evolution-mail.xml.h:93
-msgid "VFolder on Se_nder"
-msgstr "Vprieèinok na _odosielateµa"
-
-#: mail/folder-browser.c:593 ui/evolution-mail.xml.h:94
-msgid "VFolder on _Recipients"
-msgstr "Vprieèinok na _adresátov"
-
-#: mail/folder-browser.c:596 ui/evolution-mail.xml.h:92
-msgid "VFolder on Mailing _List"
-msgstr "VPrieèinok na _konferenciu"
-
-#: mail/folder-browser.c:602
-msgid "Filter on Sub_ject"
-msgstr "Filter na _predmet"
-
-#: mail/folder-browser.c:605
-msgid "Filter on Sen_der"
-msgstr "Filter na o_dosielateµovi"
-
-#: mail/folder-browser.c:608
-msgid "Filter on Re_cipients"
-msgstr "Filter na _adresátoch"
-
-#: mail/folder-browser.c:611
-msgid "Filter on _Mailing List"
-msgstr "Filter na _konferenciu"
-
-#: mail/folder-browser.c:620
-msgid "_Open"
-msgstr "_Otvori»"
-
-#: mail/folder-browser.c:622
-msgid "Resend"
-msgstr "Znovuposla»"
-
-#: mail/folder-browser.c:624 ui/evolution-calendar.xml.h:43
-#: ui/evolution-mail.xml.h:114 ui/evolution-tasks.xml.h:8
-msgid "_Save As..."
-msgstr "Ulo¾i» _ako..."
-
-#: mail/folder-browser.c:626 ui/evolution-event-editor.xml.h:69
-#: ui/evolution-task-editor-dialog.xml.h:82 ui/evolution-tasks.xml.h:7
-msgid "_Print"
-msgstr "_Tlaèi»"
-
-#: mail/folder-browser.c:631
-msgid "_Reply to Sender"
-msgstr "_Odpoveda» odosielateµovi"
-
-#: mail/folder-browser.c:633 ui/evolution-mail.xml.h:70
-msgid "Reply to _All"
-msgstr "Odpoveda» _v¹etkým"
-
-#: mail/folder-browser.c:635 ui/evolution-mail.xml.h:105
-msgid "_Forward"
-msgstr "Posla» ï_alej"
-
-#: mail/folder-browser.c:638 ui/evolution-mail.xml.h:44
-msgid "Mar_k as Read"
-msgstr "Oznaèi» ako _preèítanú"
-
-#: mail/folder-browser.c:640 ui/evolution-mail.xml.h:48
-msgid "Mark as U_nread"
-msgstr "Oznaèi» ako _nepreèítanú"
-
-#: mail/folder-browser.c:645 ui/evolution-mail.xml.h:109
-msgid "_Move to Folder..."
-msgstr "Pre_sunú» do prieèinka..."
-
-#: mail/folder-browser.c:647 ui/evolution-mail.xml.h:99
-msgid "_Copy to Folder..."
-msgstr "_Kopírova» do prieèinku..."
-
-#: mail/folder-browser.c:651 ui/evolution-mail.xml.h:119
-msgid "_Undelete"
-msgstr "Obnovi» _zmazané"
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:661 ui/evolution-mail.xml.h:1
-msgid "Apply Filters"
-msgstr "Pou¾i» filtre"
-
-#: mail/folder-browser.c:665
-msgid "Create Ru_le From Message"
-msgstr "Vytvori» pra_vidlo zo správy"
-
-#: mail/folder-browser.c:804
-msgid "Filter on Mailing List"
-msgstr "Filter na konferenciu"
-
-#: mail/folder-browser.c:805
-msgid "VFolder on Mailing List"
-msgstr "VPrieèinok na konferenciu"
-
-#: mail/folder-browser.c:807
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr "Filter na konferenciu (%s)"
-
-#: mail/folder-browser.c:808
-#, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr "VPrieèinok na konferenciu (%s)"
-
-#: mail/folder-browser-factory.c:216
-#, c-format
-msgid "Properties for \"%s\""
-msgstr "Vlastnosti \"%s\""
-
-#: mail/folder-browser-factory.c:218 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-msgid "Properties"
-msgstr "Vlastnosti"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr "Komponent Evolution pre prácu s po¹tou."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-msgid "Evolution mail composer."
-msgstr "Po¹tový komponent Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-msgid "Evolution mail executive summary component."
-msgstr "Komponent Súhrn po¹ty Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-msgid "Evolution mail folder display component."
-msgstr "Komponent zobrazenia po¹tového prieèinku Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-msgid "Evolution mail folder factory component."
-msgstr "Vytváracie rozhranie pre komponent po¹tového prieèinku Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-msgid "Factory for the Evolution composer."
-msgstr "Vytváracie rozhranie pre editor správ Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-msgid "Factory for the Evolution mail component."
-msgstr "Vytváracie rozhranie pre po¹tový komponent Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-msgid "Factory for the Mail Summary component."
-msgstr "Vytváracie rozhranie pre komponent Súhrnu po¹ty Evolution."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:9
-msgid "Mail configuration interface"
-msgstr "Rozhranie pre nastavenie po¹ty"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:1
-msgid "Factory to import mbox into Evolution"
-msgstr "Vytváracie rozhranie pre import súborov mbox do Evolution"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:2
-msgid "Imports mbox files into Evolution"
-msgstr "Importuje súbory mbox do Evolution"
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:1
-msgid "Factory to import Outlook Express 4 mails into Evolution"
-msgstr "Vytváracie rozhranie pre import súborov Outlook Express 4 do Evolution"
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:2
-msgid "Imports Outlook Express 4 files into Evolution"
-msgstr "Importuje súbory Outlook Express 4 do Evolution"
-
-#: mail/local-config.glade.h:1
-msgid "Current store format:"
-msgstr "Súèasný formát ukladania:"
-
-#: mail/local-config.glade.h:2
-msgid "Mailbox Format"
-msgstr "Formát po¹tová schránky"
-
-#: mail/local-config.glade.h:3
-msgid "New store format:"
-msgstr "Nový formát ukladania:"
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-"Poznámka: Pri prevode medzi formátmi po¹tových schránok\n"
-"nie je mo¾ná automatická oprava pri zlyhaní (napr. nedostatku\n"
-"miesta na disku). Prosím, pou¾ívajte túto funkciu opatrne."
-
-#: mail/local-config.glade.h:7
-msgid "maildir"
-msgstr "maildir"
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr "mbox"
-
-#: mail/local-config.glade.h:9
-msgid "mh"
-msgstr "mh"
-
-#: mail/mail-account-editor.c:105
-msgid "You have not filled in all of the required information."
-msgstr "Nevyplnili ste v¹etky povinné informácie."
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:173
-msgid "Evolution Account Editor"
-msgstr "Editor úètov Evolution"
-
-#: mail/mail-accounts.c:121 mail/mail-accounts.c:165
-msgid " (default)"
-msgstr " (¹tandard)"
-
-#: mail/mail-accounts.c:197
-msgid "Disable"
-msgstr "Zakáza»"
-
-#: mail/mail-accounts.c:199 mail/mail-config.glade.h:30
-msgid "Enable"
-msgstr "Povoli»"
-
-#: mail/mail-accounts.c:280 mail/mail-accounts.c:284
-msgid "Are you sure you want to delete this account?"
-msgstr "Naozaj chcete odstráni» tento úèet?"
-
-#: mail/mail-accounts.c:418 mail/mail-accounts.c:422
-msgid "Are you sure you want to delete this news account?"
-msgstr "Naozaj chcete odstráni» tento úèet diskusných skupín?"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:568
-msgid "Evolution Account Manager"
-msgstr "Správca úètov Evolution"
-
-#: mail/mail-autofilter.c:70
-#, c-format
-msgid "Mail to %s"
-msgstr "Po¹ta pre %s"
-
-#: mail/mail-autofilter.c:213
-#, c-format
-msgid "Subject is %s"
-msgstr "Predmet je %s"
-
-#: mail/mail-autofilter.c:229
-#, c-format
-msgid "Mail from %s"
-msgstr "Po¹ta od %s"
-
-#: mail/mail-autofilter.c:285
-#, c-format
-msgid "%s mailing list"
-msgstr "%s konferencia"
-
-#: mail/mail-autofilter.c:335 mail/mail-autofilter.c:356
-msgid "Add Filter Rule"
-msgstr "Prida» pravidlo filtra"
-
-#: mail/mail-callbacks.c:96
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-"Nemáte nastaveného po¹tového klienta.\n"
-"To ale musíte urobi» predtým, ako budete\n"
-"posiela», prijíma» alebo písa» po¹tu.\n"
-"Chcete ho nastavi» teraz?"
-
-#: mail/mail-callbacks.c:149
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-"Predtým, ako zaènete písa» správu,\n"
-"musíte nastavi» identitu."
-
-#: mail/mail-callbacks.c:161
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-"Predtým, ako zaènete písa» správu,\n"
-"musíte nastavi» spôsob prenosu.."
-
-#: mail/mail-callbacks.c:205
-msgid "You have not set a mail transport method"
-msgstr "Nemáte nastavený spôsob prenosu po¹ty"
-
-#: mail/mail-callbacks.c:238
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-"Táto správa nemá predmet.\n"
-"Naozaj ju chcete posla»?"
-
-#: mail/mail-callbacks.c:311
-msgid "You must specify recipients in order to send this message."
-msgstr "Musíte zada» adresátov pre poslanie tejto správy."
-
-#: mail/mail-callbacks.c:354
-msgid "You must configure an account before you can send this email."
-msgstr "Musíte nastavi» úèet pred poslaním tejto správy."
-
-#: mail/mail-callbacks.c:593
-#, c-format
-msgid "On %s, %s wrote:"
-msgstr "V %s, %s zapísané:"
-
-#: mail/mail-callbacks.c:755
-msgid "Forwarded message:\n"
-msgstr "Predaná správa:\n"
-
-#: mail/mail-callbacks.c:849
-msgid "Move message(s) to"
-msgstr "Presunú» správu do"
-
-#: mail/mail-callbacks.c:851
-msgid "Copy message(s) to"
-msgstr "Kopírova» správu do"
-
-#: mail/mail-callbacks.c:1130
-#, c-format
-msgid "Are you sure you want to edit all %d messages?"
-msgstr "Naozaj chcete upravi» v¹etkých %d správ?"
-
-#: mail/mail-callbacks.c:1152
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-"Upravova» mô¾ete iba správy ulo¾ené\n"
-"v prieèinku Koncepty."
-
-#: mail/mail-callbacks.c:1186
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-"Iba správy z prieèinku Odoslané je mo¾né\n"
-"znovu posla»."
-
-#: mail/mail-callbacks.c:1198
-#, c-format
-msgid "Are you sure you want to resend all %d messages?"
-msgstr "Naozaj chcete znovu posla» v¹etkých %d správ?"
-
-#: mail/mail-callbacks.c:1219
-msgid "No Message Selected"
-msgstr "®iadna vybraná správa"
-
-#: mail/mail-callbacks.c:1245 mail/mail-display.c:91
-msgid "Overwrite file?"
-msgstr "Prepísa» súbor?"
-
-#: mail/mail-callbacks.c:1249 mail/mail-display.c:95
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-"Súbor s týmto menom u¾ existuje\n"
-"Prepísa» ho?"
-
-#: mail/mail-callbacks.c:1293
-msgid "Save Message As..."
-msgstr "Ulo¾i» správu ako..."
-
-#: mail/mail-callbacks.c:1295
-msgid "Save Messages As..."
-msgstr "Ulo¾i» správy ako..."
-
-#: mail/mail-callbacks.c:1454
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-"Chyba pri naèítavaní informácie o filtroch:\n"
-"%s"
-
-#: mail/mail-callbacks.c:1512 ui/evolution-mail.xml.h:60
-msgid "Print Message"
-msgstr "Tlaèi» správu"
-
-#: mail/mail-callbacks.c:1559
-msgid "Printing of message failed"
-msgstr "Tlaè správy zlyhala"
-
-#: mail/mail-callbacks.c:1654
-#, c-format
-msgid "Are you sure you want to open all %d messages in separate windows?"
-msgstr "Naozaj chcete otvori» v¹etkých %d správ v samostatných oknách?"
-
-#: mail/mail-config.c:1199 mail/mail-config.c:1202
-msgid "Connecting to server..."
-msgstr "Pripájam sa na server..."
-
-#: mail/mail-config-druid.c:99
-msgid ""
-"Please enter your name and email address below. The \"optional\" fields "
-"below do not need to be filled in, unless you wish to include this "
-"information in email you send."
-msgstr ""
-"Prosím, zadajte va¹e meno a e-mailovú adresu. \"Nepovinné\" informácie "
-"nemusíte zada», iba ak chcete, aby boli posielané vo va¹ich správach."
-
-#: mail/mail-config-druid.c:101
-msgid ""
-"Please enter information about your incoming mail server below. If you don't "
-"know what kind of server you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"Prosím, zadajte informácie o va¹om serveri pre prijímanú po¹tu. Ak neviete, "
-"ktorý typ serveru pou¾i», kontaktujte vá¹ho administrátora alebo "
-"poskytovateµa pripojenia na Internet."
-
-#: mail/mail-config-druid.c:105
-msgid ""
-"Please enter information about your outgoing mail protocol below. If you "
-"don't know which protocol you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"Prosím, zadajte informácie o protokole pre odosielanie po¹ty. Ak neviete, "
-"ktorý typ protokolu pou¾i», kontaktujte vá¹ho administrátora alebo "
-"poskytovateµa pripojenia na Internet."
-
-#: mail/mail-config-druid.c:107
-msgid ""
-"You are almost done with the mail configuration process. The identity, "
-"incoming mail server and outgoing mail transport method which you provided "
-"will be grouped together to make an Evolution mail account. Please enter a "
-"name for this account in the space below. This name will be used for display "
-"purposes only."
-msgstr ""
-"U¾ ste skoro na konci nastavenia po¹ty. Va¹e meno, server pre príjem po¹ty a "
-"spôsob odosielania budú pou¾ité pre vytvorenie po¹tového úètu Evolution. "
-"Prosím, zadajte meno pre tento úèet. Toto meno bude pou¾ívané iba pre "
-"zobrazenie."
-
-#. set window title
-#: mail/mail-config-druid.c:445
-msgid "Evolution Account Wizard"
-msgstr "Sprievodca úètom Evolution"
-
-#: mail/mail-config.glade.h:1
-msgid " Check for supported types "
-msgstr " Kontrolova» podporované typy"
-
-#: mail/mail-config.glade.h:2
-msgid " color"
-msgstr " farba"
-
-#: mail/mail-config.glade.h:3
-msgid "Account"
-msgstr "Úèet"
-
-#: mail/mail-config.glade.h:4
-msgid "Account Information"
-msgstr "Informácia o úète"
-
-#: mail/mail-config.glade.h:5
-msgid "Account Management"
-msgstr "Správa úètu"
-
-#: mail/mail-config.glade.h:6
-msgid "Accounts"
-msgstr "Úèty"
-
-#: mail/mail-config.glade.h:8
-msgid "Always load images off the net"
-msgstr "V¾dy naèítava» obrázky zo siete"
-
-#: mail/mail-config.glade.h:10
-msgid "Authentication"
-msgstr "Overenie"
-
-#: mail/mail-config.glade.h:11
-msgid "Authentication Type: "
-msgstr "Typ overenia:"
-
-#: mail/mail-config.glade.h:12
-msgid "Automatically check for new mail every"
-msgstr "Automaticky kontrolova» po¹tu ka¾dých"
-
-#: mail/mail-config.glade.h:14
-msgid "Composer"
-msgstr "Editor"
-
-#: mail/mail-config.glade.h:15
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-"Blaho¾eláme, nastavenie va¹ej po¹ty je hotové.\n"
-"\n"
-"Teraz mô¾ete zaèa» pou¾íva» Evolution\n"
-"pre posielanie a prijímanie po¹ty. \n"
-"\n"
-"Kliknutím na \"Dokonèi»\" ulo¾íte va¹e nastavenie."
-
-#: mail/mail-config.glade.h:21
-msgid "De_fault"
-msgstr "©_tandardné"
-
-#: mail/mail-config.glade.h:22
-msgid "Default \"Forward\" style is: "
-msgstr "©tandardný ¹týl \"Preda» ïalej\" je: "
-
-#: mail/mail-config.glade.h:25
-msgid "Done"
-msgstr "Hotovo"
-
-#: mail/mail-config.glade.h:26
-msgid "Drafts"
-msgstr "Koncepty"
-
-#: mail/mail-config.glade.h:27
-msgid "Drafts folder:"
-msgstr "Prieèinok konceptov:"
-
-#: mail/mail-config.glade.h:29
-msgid "Email Address:"
-msgstr "E-mailová adresa:"
-
-#: mail/mail-config.glade.h:31
-msgid "Full Name:"
-msgstr "Celé meno:"
-
-#: mail/mail-config.glade.h:32
-msgid "Highlight citations with"
-msgstr "Zvýrazni» citácie pomocou"
-
-#: mail/mail-config.glade.h:34
-msgid "IMAPv4 "
-msgstr "IMAPv4 "
-
-#: mail/mail-config.glade.h:35
-msgid "Identity"
-msgstr "Identita"
-
-#: mail/mail-config.glade.h:36
-msgid "In HTML mail"
-msgstr "v HTML po¹te"
-
-#: mail/mail-config.glade.h:37
-msgid "Inline"
-msgstr "v texte"
-
-#: mail/mail-config.glade.h:38
-msgid "Kerberos "
-msgstr "Kerberos "
-
-#: mail/mail-config.glade.h:39
-msgid "Load images if sender is in addressbook"
-msgstr "Naèíta» obrázky ak je odosielateµ v adresári"
-
-#: mail/mail-config.glade.h:40
-msgid "Mail Configuration"
-msgstr "Nastavenie po¹ty"
-
-#: mail/mail-config.glade.h:41
-msgid "Make this my default account"
-msgstr "Pou¾i» ho ako ¹tandardný úèet"
-
-#: mail/mail-config.glade.h:42
-msgid "Mark messages as \"Read\" after:"
-msgstr "Oznaèi» správy ako \"Preèítané\" po:"
-
-#: mail/mail-config.glade.h:44
-msgid "Never load images off the net"
-msgstr "Nikdy nenaèíta» obrázky zo siete"
-
-#: mail/mail-config.glade.h:45
-msgid "News"
-msgstr "Diskusné skupiny"
-
-#: mail/mail-config.glade.h:47
-msgid "Optional Information"
-msgstr "Nepovinné informácie"
-
-#: mail/mail-config.glade.h:48
-msgid "Organization:"
-msgstr "Organizácia:"
-
-#: mail/mail-config.glade.h:49
-msgid "PGP"
-msgstr "PGP"
-
-#: mail/mail-config.glade.h:50
-msgid "PGP binary path:"
-msgstr "Cesta k spustiteµnému súboru PGP:"
-
-#: mail/mail-config.glade.h:55
-msgid "Qmail maildir "
-msgstr "Qmail maildir "
-
-#: mail/mail-config.glade.h:56
-msgid "Quoted"
-msgstr "Citova»"
-
-#: mail/mail-config.glade.h:57
-msgid "Receiving Email"
-msgstr "Príjem po¹ty"
-
-#: mail/mail-config.glade.h:58
-msgid "Receiving Mail"
-msgstr "Prijímam po¹tu"
-
-#: mail/mail-config.glade.h:59
-msgid "Receiving Options"
-msgstr "Mo¾nosti príjmu"
-
-#: mail/mail-config.glade.h:61
-msgid "Required Information"
-msgstr "Povinné informácie"
-
-#: mail/mail-config.glade.h:63
-msgid "Select PGP binary"
-msgstr "Vyberte program PGP"
-
-#: mail/mail-config.glade.h:64
-msgid "Send mail in HTML format by default."
-msgstr "Posiela» ¹tandardne ako HTML."
-
-#: mail/mail-config.glade.h:65
-msgid "Sending Email"
-msgstr "Posielanie po¹ty"
-
-#: mail/mail-config.glade.h:66
-msgid "Sending Mail"
-msgstr "Posielanie po¹ty"
-
-#: mail/mail-config.glade.h:68
-msgid "Sent"
-msgstr "Odoslané"
-
-#: mail/mail-config.glade.h:69
-msgid "Sent and Draft Messages"
-msgstr "Odoslané a koncepty"
-
-#: mail/mail-config.glade.h:70
-msgid "Sent messages folder:"
-msgstr "Prieèinok pre odoslané správy:"
-
-#: mail/mail-config.glade.h:71
-msgid "Server Configuration"
-msgstr "Nastavenie serveru"
-
-#: mail/mail-config.glade.h:72
-msgid "Server Type: "
-msgstr "Typ serveru:"
-
-#: mail/mail-config.glade.h:73
-msgid "Server requires authentication"
-msgstr "Server vy¾aduje overenie"
-
-#: mail/mail-config.glade.h:74
-msgid "Signature file:"
-msgstr "Súbor s podpisom:"
-
-#: mail/mail-config.glade.h:75
-msgid "Sources"
-msgstr "Zdroje"
-
-#: mail/mail-config.glade.h:76
-msgid "Special Folders"
-msgstr "©peciálne prieèinky"
-
-#: mail/mail-config.glade.h:77
-msgid "Standard Unix mbox"
-msgstr "©tandardný Unixový súbor mbox"
-
-#: mail/mail-config.glade.h:78
-msgid "Type"
-msgstr "Typ"
-
-#: mail/mail-config.glade.h:79
-msgid "Use secure connection (SSL)"
-msgstr "Pou¾i» bezpeèné pripojenie (SSL)"
-
-#: mail/mail-config.glade.h:80
-msgid "Username:"
-msgstr "Meno pou¾ívateµa:"
-
-#: mail/mail-config.glade.h:81
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-"Vitajte v Sprievodcovi nastavením po¹ty Evolution.\n"
-"\n"
-"Kliknutím \"Ïal¹í\" zaèneme."
-
-#: mail/mail-config.glade.h:86 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:42 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:32
-msgid "_Edit"
-msgstr "_Upravi»"
-
-#: mail/mail-display.c:195
-msgid "Save Attachment"
-msgstr "Ulo¾i» prílohu"
-
-#: mail/mail-display.c:235
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr "Nie je mo¾né vytvori» doèasný prieèinok: %s"
-
-#: mail/mail-display.c:296
-msgid "Save to Disk..."
-msgstr "Ulo¾i» na disk..."
-
-#: mail/mail-display.c:298
-#, c-format
-msgid "Open in %s..."
-msgstr "Otvori» v %s..."
-
-#: mail/mail-display.c:300
-msgid "View Inline"
-msgstr "Zobrazi» v texte"
-
-#: mail/mail-display.c:335
-msgid "External Viewer"
-msgstr "Externý zobrazovaè"
-
-#: mail/mail-display.c:358
-#, c-format
-msgid "View Inline (via %s)"
-msgstr "Zobrazi» v text (pomocou %s)"
-
-#: mail/mail-display.c:362
-msgid "Hide"
-msgstr "Skry»"
-
-#: mail/mail-display.c:960
-msgid "Loading message content"
-msgstr "Naèítavam obsah správy"
-
-#: mail/mail-display.c:1239
-msgid "Open link in browser"
-msgstr "Otvori» odkaz v prehliadaèi"
-
-#: mail/mail-display.c:1241
-msgid "Save as (FIXME)"
-msgstr "Ulo¾i» ako"
-
-#: mail/mail-display.c:1243
-msgid "Copy location (FIXME)"
-msgstr "Kopírova» umiestnenie"
-
-#: mail/mail-format.c:527
-#, c-format
-msgid "%s attachment"
-msgstr "%s príloha"
-
-#: mail/mail-format.c:573
-msgid "Could not parse MIME message. Displaying as source."
-msgstr "Nie je mo¾né spracova» správu MIME. Zobrazujem ako zdrojový kód."
-
-#: mail/mail-format.c:1029
-msgid "No GPG/PGP program configured."
-msgstr "Nenastavený ¾iadny program GPG/PGP."
-
-#: mail/mail-format.c:1044
-msgid "Encrypted message not displayed"
-msgstr "Za¹ifrovaná správa nie je zobrazená"
-
-#: mail/mail-format.c:1050
-msgid "Encrypted message"
-msgstr "Za¹ifrovaná správa"
-
-#: mail/mail-format.c:1051
-msgid "Click icon to decrypt."
-msgstr "Kliknite na ikonu pre de¹ifrovanie."
-
-#: mail/mail-format.c:1141 mail/mail-format.c:1527
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr "Táto správa je digitálne podpísaná a podpis je platný."
-
-#: mail/mail-format.c:1149 mail/mail-format.c:1535
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr "Táto správa je digitálne podpísaná ale podpis nie je platný."
-
-#: mail/mail-format.c:1749
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr "Odkaz na FTP server (%s)"
-
-#: mail/mail-format.c:1761
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr "Odkaz na lokálny súbor (%s) platný na serveri \"%s\""
-
-#: mail/mail-format.c:1765
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr "Odkaz na lokálny súbor (%s)"
-
-#: mail/mail-format.c:1799
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr "Odkaz na neznáme externé dáta (typ \"%s\")"
-
-#: mail/mail-format.c:1804
-msgid "Malformed external-body part."
-msgstr "Nesprávna èas» externého tela."
-
-#: mail/mail-local.c:505
-#, c-format
-msgid "Opening '%s'"
-msgstr "Otváram '%s'"
-
-#: mail/mail-local.c:785
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr "Mení prieèinok \"%s\" na formát \"%s\""
-
-#: mail/mail-local.c:789
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr "Zmeni» prieèinok \"%s\" na formát \"%s\""
-
-#: mail/mail-local.c:812
-msgid "Reconfiguring folder"
-msgstr "Prenastavujem prieèinok"
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:841
-msgid "Closing current folder"
-msgstr "Zatváram aktuálny prieèinok"
-
-#: mail/mail-local.c:873
-msgid "Renaming old folder and opening"
-msgstr "Premenovávam starý prieèinok a otváram"
-
-#: mail/mail-local.c:891
-msgid "Creating new folder"
-msgstr "Vytváram nový prieèinok"
-
-#: mail/mail-local.c:905
-msgid "Copying messages"
-msgstr "Kopírujem správy"
-
-#: mail/mail-local.c:922
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-"Nie je mo¾né ulo¾i» metainformácie do prieèinku, asi zistíte,\n"
-"¾e ho nie je mo¾né ani otvori»: %s"
-
-#: mail/mail-local.c:961
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-"Ak nemô¾ete otvori» túto po¹tovú schránku, potom\n"
-"ju budete musie» opravi» ruène."
-
-#: mail/mail-mt.c:190
-#, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-"Chyba poèas '%s':\n"
-"%s"
-
-#: mail/mail-mt.c:193
-#, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-"Chyba pri vykonávaní operácie:\n"
-"%s"
-
-#: mail/mail-mt.c:516 mail/mail-mt.c:545 mail/mail-mt.c:880
-msgid "Working"
-msgstr "Pracujem"
-
-#: mail/mail-mt.c:862
-msgid "Evolution progress"
-msgstr "Priebeh Evolution"
-
-#: mail/mail-ops.c:599
-#, c-format
-msgid "Sending \"%s\""
-msgstr "Posielam \"%s\""
-
-#: mail/mail-ops.c:603
-msgid "Sending message"
-msgstr "Posielam správu"
-
-#: mail/mail-ops.c:718
-#, c-format
-msgid "Sending message %d of %d"
-msgstr "Posielam správu %d z %d"
-
-#: mail/mail-ops.c:737
-#, c-format
-msgid "Failed on message %d of %d"
-msgstr "Zlyhanie na správe %d z %d"
-
-#: mail/mail-ops.c:739 mail/mail-send-recv.c:475
-msgid "Complete."
-msgstr "Dokonèené."
-
-#: mail/mail-ops.c:825
-msgid "Saving message to folder"
-msgstr "Ukladám správu do prieèinku"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Moving messages to %s"
-msgstr "Presúvam správy do %s"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Copying messages to %s"
-msgstr "Kopírujem správy do %s"
-
-#: mail/mail-ops.c:914
-msgid "Moving"
-msgstr "Premiestòujem"
-
-#: mail/mail-ops.c:917
-msgid "Copying"
-msgstr "Kopírujem"
-
-#: mail/mail-ops.c:992
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr "Prechádzam prieèinky v \"%s\""
-
-#: mail/mail-ops.c:1154
-msgid "Forwarded messages"
-msgstr "Správy predané ïalej"
-
-#: mail/mail-ops.c:1195 mail/mail-ops.c:1333
-#, c-format
-msgid "Opening folder %s"
-msgstr "Otváram prieèinok %s"
-
-#: mail/mail-ops.c:1262
-#, c-format
-msgid "Opening store %s"
-msgstr "Otváram sklad %s"
-
-#: mail/mail-ops.c:1449
-msgid "Expunging folder"
-msgstr "Èistím prieèinok"
-
-#: mail/mail-ops.c:1498
-#, c-format
-msgid "Retrieving message %s"
-msgstr "Získavam správu %s"
-
-#: mail/mail-ops.c:1565
-msgid "Retrieving messages"
-msgstr "Získavam správy"
-
-#: mail/mail-ops.c:1575
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr "Získavam správu èíslo %d z %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1649
-msgid "Saving messages"
-msgstr "Ukladám správy"
-
-#: mail/mail-ops.c:1728
-#, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr ""
-"Nepodarilo sa vytvori» výstupný súbor: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1741
-#, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr "Ukladám správu %d z %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1755
-#, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr ""
-"Chyba pri ukladaní správ do `%s':\n"
-"%s"
-
-#: mail/mail-ops.c:1829
-msgid "Saving attachment"
-msgstr "Ukladám prílohu"
-
-#: mail/mail-ops.c:1844
-#, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr ""
-"Nepodarilo sa vytvori» výstupný súbor: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1872
-#, c-format
-msgid "Could not write data: %s"
-msgstr "Nie je mo¾né zapísa» dáta: %s"
-
-#: mail/mail-ops.c:1939
-#, c-format
-msgid "Disconnecting from %s"
-msgstr "Odpojujem sa od %s"
-
-#: mail/mail-search.c:196 mail/mail-search.c:248
-msgid "(Untitled Message)"
-msgstr "(Správa bez mena)"
-
-#: mail/mail-search.c:242
-msgid "Find in Message"
-msgstr "Nájs» v správe"
-
-#: mail/mail-search.c:284
-msgid "Case Sensitive"
-msgstr "Rozli¹ova» veµkos» písmen"
-
-#: mail/mail-search.c:285
-msgid "Search Forward"
-msgstr "Hµada» dopredu"
-
-#: mail/mail-search.c:300
-msgid "Find:"
-msgstr "Hµada»:"
-
-#: mail/mail-search.c:304
-msgid "Matches:"
-msgstr "Odpovedá:"
-
-#: mail/mail-search-dialogue.c:113
-msgid "_Search"
-msgstr "_Nájs»"
-
-#: mail/mail-send-recv.c:138
-msgid "Cancelling..."
-msgstr "Ru¹ím..."
-
-#: mail/mail-send-recv.c:233
-msgid "Send & Receive mail"
-msgstr "Príjem a odoslanie po¹ty"
-
-#: mail/mail-send-recv.c:236
-msgid "Receiving"
-msgstr "Príjímam"
-
-#: mail/mail-send-recv.c:285
-msgid "Updating..."
-msgstr "Obnovujem..."
-
-#: mail/mail-send-recv.c:287 mail/mail-send-recv.c:333
-msgid "Waiting..."
-msgstr "Èakám..."
-
-#: mail/mail-send-recv.c:306
-msgid "Sending"
-msgstr "Posielam"
-
-#: mail/mail-send-recv.c:471
-msgid "Cancelled."
-msgstr "Zru¹ené."
-
-#: mail/mail-summary.c:110
-msgid "Incomplete message written on pipe!"
-msgstr "Do rúry zapísaná neúplná správa!"
-
-#: mail/mail-summary.c:468
-msgid "Mail Summary"
-msgstr "Súhrn po¹ty"
-
-#: mail/mail-tools.c:145
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr "Nie je mo¾né vytvori» doèasnú po¹tovú schránku `%s': %s"
-
-#: mail/mail-tools.c:192
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr "[%s] (predaná správa)"
-
-#: mail/mail-tools.c:202
-msgid "Fwd: (no subject)"
-msgstr "Fwd: (¾iadny predmet)"
-
-#: mail/mail-tools.c:219
-#, c-format
-msgid "Forwarded message - %s"
-msgstr "Predaná správa - %s"
-
-#: mail/mail-tools.c:221
-msgid "Forwarded message (no subject)"
-msgstr "Predaná správa (bez predmetu)"
-
-#: mail/mail-tools.c:428
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-msgstr ""
-"-----Správa poslaná ïalej-----<br><b>Od:</b> %s<br><b>Komu:</b> "
-"%s<br><b>Predmet:</b> %s<br>"
-
-#: mail/mail-vfolder.c:249
-msgid "VFolders"
-msgstr "VPrieèinky"
-
-#: mail/mail-vfolder.c:438
-msgid "New VFolder"
-msgstr "Nový vPrieèinok"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/message-browser.c:188 ui/evolution-mail.xml.h:68
-msgid "Reply"
-msgstr "Odpoveda»"
-
-#: mail/message-browser.c:188 ui/evolution-mail.xml.h:74
-msgid "Reply to the sender of this message"
-msgstr "Odpoveda» odosielateµovi tejto správy"
-
-#: mail/message-browser.c:191 ui/evolution-mail.xml.h:69
-msgid "Reply to All"
-msgstr "Odpoveda» v¹etkým"
-
-#: mail/message-browser.c:191 ui/evolution-mail.xml.h:72
-msgid "Reply to all recipients of this message"
-msgstr "Odpoveda» v¹etkým adresátom tento správy"
-
-#: mail/message-browser.c:194 ui/evolution-mail.xml.h:25
-msgid "Forward"
-msgstr "Posla» ïalej"
-
-#: mail/message-browser.c:194 ui/evolution-mail.xml.h:32
-msgid "Forward this message"
-msgstr "Preda» túto správu ïalej"
-
-#: mail/message-browser.c:199 ui/evolution-mail.xml.h:65
-msgid "Print the selected message"
-msgstr "Tlaèi» vybranú správu"
-
-#: mail/message-browser.c:202 ui/evolution-mail.xml.h:13
-msgid "Delete this message"
-msgstr "Odstráni» túto správu"
-
-#: mail/message-browser.c:207 ui/evolution-event-editor.xml.h:33
-#: ui/evolution-mail.xml.h:58 ui/evolution-task-editor-dialog.xml.h:36
-msgid "Previous"
-msgstr "Predchádzajúca"
-
-#: mail/message-browser.c:207
-msgid "Previous message"
-msgstr "Predchádzajúca správa"
-
-#: mail/message-browser.c:210 ui/evolution-calendar.xml.h:18
-#: ui/evolution-event-editor.xml.h:29 ui/evolution-mail.xml.h:54
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "Next"
-msgstr "Nasl"
-
-#: mail/message-browser.c:210
-msgid "Next message"
-msgstr "Nasledujúca správa"
-
-#: mail/message-list.c:677
-msgid "Unseen"
-msgstr "Nevidené"
-
-#: mail/message-list.c:678
-msgid "Seen"
-msgstr "Videné"
-
-#: mail/message-list.c:679
-msgid "Answered"
-msgstr "Odpovedané"
-
-#: mail/message-list.c:680
-msgid "Multiple Unseen Messages"
-msgstr "Viacero nepreèítaných správ"
-
-#: mail/message-list.c:681
-msgid "Multiple Messages"
-msgstr "Viacero správ"
-
-#: mail/message-list.c:685
-msgid "Lowest"
-msgstr "Najni¾¹ia"
-
-#: mail/message-list.c:686
-msgid "Lower"
-msgstr "Ni¾¹ia"
-
-#: mail/message-list.c:690
-msgid "Higher"
-msgstr "Vy¹¹ia"
-
-#: mail/message-list.c:691
-msgid "Highest"
-msgstr "Najvy¹¹ia"
-
-#: mail/message-list.c:941
-msgid "?"
-msgstr "?"
-
-#: mail/message-list.c:948
-msgid "Today %l:%M %p"
-msgstr "Dnes %l:%M %p"
-
-#: mail/message-list.c:957
-msgid "Yesterday %l:%M %p"
-msgstr "Vèera %l:%M %p"
-
-#: mail/message-list.c:969
-msgid "%a %l:%M %p"
-msgstr "%a %l:%M %p"
-
-#: mail/message-list.c:977
-msgid "%b %d %l:%M %p"
-msgstr "%b %d %l:%M %p"
-
-#: mail/message-list.c:979
-msgid "%b %d %Y"
-msgstr "%b %d %Y"
-
-#: mail/message-list.c:1081
-msgid "Flagged"
-msgstr "Vyznaèené"
-
-#: mail/message-list.c:1082
-msgid "From"
-msgstr "Od"
-
-#: mail/message-list.c:1082
-msgid "Date"
-msgstr "Dátum"
-
-#: mail/message-list.c:1082
-msgid "Received"
-msgstr "Prijaté"
-
-#: mail/message-list.c:1083
-msgid "To"
-msgstr "Komu"
-
-#: mail/message-list.c:1083
-msgid "Size"
-msgstr "Veµkos»"
-
-#: mail/mail-session.c:161
-msgid "User canceled operation."
-msgstr "Pou¾ívateµ zru¹il operáciu."
-
-#: mail/subscribe-dialog.c:76 shell/e-storage-set-view.c:48
-msgid "Folder"
-msgstr "Prieèinok"
-
-#: mail/subscribe-dialog.c:77
-msgid "Store"
-msgstr "Ulo¾i»"
-
-#: mail/subscribe-dialog.c:138
-msgid "Display folders starting with:"
-msgstr "Zobrazi» prieèinky zaèínajúce na:"
-
-#: mail/subscribe-dialog.c:168
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr "Získavam miesto pre \"%s\""
-
-#: mail/subscribe-dialog.c:271
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr "Prihlasujem si prieèinok \"%s\""
-
-#: mail/subscribe-dialog.c:273
-#, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr "Odhlasujem sa z prieèinku \"%s\""
-
-#. Construct the app
-#: mail/subscribe-dialog.c:873
-msgid "Manage Subscriptions"
-msgstr "Správa prihlásení"
-
-#: shell/e-setup.c:118 shell/e-setup.c:191
-msgid "Evolution installation"
-msgstr "In¹talácia Evolution"
-
-#: shell/e-setup.c:122
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-"Táto nová verzia Evolution vy¾aduje in¹taláciu dodatoèných súborov\n"
-"do vá¹ho osobného prieèinku Evolution"
-
-#: shell/e-setup.c:123
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr "Prosím, stlaète \"OK\" pre in¹taláciu súborov, alebo \"Zru¹i»\" pre koniec."
-
-#: shell/e-setup.c:163
-msgid "Could not update files correctly"
-msgstr "Nepodarilo sa korektne aktualizova» súbory"
-
-#: shell/e-setup.c:166 shell/e-setup.c:234
-msgid "Evolution files successfully installed."
-msgstr "Súbory Evolution boli úspe¹ne nain¹talované."
-
-#: shell/e-setup.c:195
-msgid "This seems to be the first time you are running Evolution."
-msgstr "Vyzerá to, ¾e ste Evolution spustili prvýkrát."
-
-#: shell/e-setup.c:196
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr "Prosím, stlaète \"OK\" pre in¹taláciu súborov Evolution do"
-
-#: shell/e-setup.c:215
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"Nie je mo¾né vytvori» prieèinok\n"
-"%s\n"
-"Chyba: %s"
-
-#: shell/e-setup.c:230
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-"Nie je mo¾né skopírova» súbory do\n"
-"`%s'."
-
-#: shell/e-setup.c:255
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-"Súbor `%s' nie je prieèinok\n"
-"Prosím, presuòte ho, aby mohli\n"
-"by» nain¹talované súbory Evolution."
-
-#: shell/e-setup.c:267
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-"Prieèinok `%s' existuje, ale nie je\n"
-"to prieèinok Evolution. Prosím, presuòte ho,\n"
-"aby mohli by» nain¹talované súbory Evolution."
-
-#: shell/e-shell.c:388
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr "Nepodarilo sa vytvori» lokálny sklad -- %s"
-
-#: shell/e-shell.c:1268
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-"Aj! Pohµad pre `%s' neoèakávane spadol. :-(\n"
-"To asi znamená, ¾e komponent %s spadol."
-
-#: shell/e-shell-folder-creation-dialog.c:99
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-"Zadaný prieèinok sa nedá vytvori»:\n"
-"%s"
-
-#: shell/e-shell-folder-creation-dialog.c:156
-msgid "The specified folder name is not valid."
-msgstr "Zadané meno prieèinku nie je platné."
-
-#: shell/e-shell-folder-creation-dialog.c:263
-msgid "Evolution - Create new folder"
-msgstr "Evolution - Vytvori» nový prieèinok"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-"Typ vybraného prieèinku nie je platný\n"
-"pre po¾adovanú operáciu."
-
-#: shell/e-shell-folder-selection-dialog.c:321
-msgid "New..."
-msgstr "Nová..."
-
-#: shell/e-shell-folder-title-bar.c:459 shell/e-shell-folder-title-bar.c:460
-msgid "(Untitled)"
-msgstr "(Bez mena)"
-
-#: shell/e-shell-importer.c:97
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-"Vyberte súbor, ktorý chcete importova» do Evolution a jeho typ\n"
-"zo zoznamu.\n"
-"\n"
-"Pou¾ijte \"Automaticky\" ak typ nepoznáte a Evolution sa\n"
-"ho pokúsi urèi»."
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/e-shell-importer.c:192
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-"Importujem %s\n"
-"Importér nie je pripravený.\n"
-"Èakám 5 sekúnd a skúsim to znovu."
-
-#: shell/e-shell-importer.c:212 shell/e-shell-importer.c:243
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-"Importujem %s\n"
-"Importujem polo¾ku %d."
-
-#: shell/e-shell-importer.c:353
-#, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr ""
-"Pre spracovanie\n"
-"%s\n"
-"nie je k dispozícii importér."
-
-#: shell/e-shell-importer.c:363
-msgid "Importing"
-msgstr "Importujem"
-
-#: shell/e-shell-importer.c:371
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-"Importujem %s\n"
-"Zaèínam %s"
-
-#: shell/e-shell-importer.c:384
-#, c-format
-msgid "Error starting %s"
-msgstr "Chyba pri ¹tarte %s"
-
-#: shell/e-shell-importer.c:404
-#, c-format
-msgid "Error loading %s"
-msgstr "Chyba pri naèítavaní %s"
-
-#: shell/e-shell-importer.c:419
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-"Importujem %s\n"
-"Importujem polo¾ku 1."
-
-#: shell/e-shell-importer.c:490
-msgid "Automatic"
-msgstr "Automaticky"
-
-#: shell/e-shell-importer.c:540
-msgid "Filename:"
-msgstr "Meno súboru:"
-
-#: shell/e-shell-importer.c:545 shell/importer/import.glade.h:5
-msgid "Select a file"
-msgstr "Vyberte súbor"
-
-#: shell/e-shell-importer.c:555
-msgid "File type:"
-msgstr "Typ súboru:"
-
-#: shell/e-shell-importer.c:601
-msgid "Select folder"
-msgstr "Vybra» prieèinok"
-
-#: shell/e-shell-offline-handler.c:554
-msgid "Closing connections..."
-msgstr "Zatváram spojenia..."
-
-#: shell/e-shell-view.c:149
-msgid "(No folder displayed)"
-msgstr "(Nezobrazený ¾iadny prieèinok)"
-
-#: shell/e-shell-view.c:1204
-#, c-format
-msgid "%s - Evolution %s"
-msgstr "%s - Evolution %s"
-
-#: shell/e-shell-view.c:1206
-#, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "%s - Evolution %s [%s]"
-
-#: shell/e-shell-view-menu.c:173
-msgid "Bug buddy was not found in your $PATH."
-msgstr "Nástroj pre oznamovanie chýb nebol nájdený v $PATH."
-
-#: shell/e-shell-view-menu.c:179
-msgid "Bug buddy could not be run."
-msgstr "Nedá sa spusti» nástroj pre oznamovanie chýb"
-
-#: shell/e-shell-view-menu.c:208
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Copyright 1999, 2000, 2001 Ximian, Inc."
-
-#: shell/e-shell-view-menu.c:210
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-"Evolution je skupina groupwarových aplikácií\n"
-"pre elektronickú po¹tu, kalendár a správu kontaktov\n"
-"v rámci prostredia GNOME."
-
-#: shell/e-shell-view-menu.c:374
-msgid "Go to folder..."
-msgstr "Prejs» na prieèinku..."
-
-#: shell/e-shell-view-menu.c:562
-msgid "Work online"
-msgstr "Pracova» on-line"
-
-#: shell/e-shell-view-menu.c:574 shell/e-shell-view-menu.c:586
-msgid "Work offline"
-msgstr "Pracova» off-line"
-
-#: shell/e-shortcuts.c:381
-msgid "Error saving shortcuts."
-msgstr "Chyba pri ukladaní skratiek."
-
-#: shell/e-shortcuts-view.c:134
-msgid "Create new shortcut group"
-msgstr "Vytvori» novú skupinu skratiek"
-
-#: shell/e-shortcuts-view.c:137
-msgid "Group name:"
-msgstr "Meno skupiny:"
-
-#: shell/e-shortcuts-view.c:260
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-"Naozaj chcete odstráni» skupinu\n"
-"`%s' z panelu skratiek?"
-
-#: shell/e-shortcuts-view.c:265
-msgid "Don't remove"
-msgstr "Neodstraòova»"
-
-#: shell/e-shortcuts-view.c:276
-msgid "_Small Icons"
-msgstr "_Malé ikony"
-
-#: shell/e-shortcuts-view.c:277
-msgid "Show the shortcuts as small icons"
-msgstr "Zobrazi» skratky ako malé ikony"
-
-#: shell/e-shortcuts-view.c:279
-msgid "_Large Icons"
-msgstr "_Veµké ikony"
-
-#: shell/e-shortcuts-view.c:280
-msgid "Show the shortcuts as large icons"
-msgstr "Zobrazi» skratky ako veµké ikony"
-
-#: shell/e-shortcuts-view.c:291
-msgid "_New Group..."
-msgstr "_Nová skupina..."
-
-#: shell/e-shortcuts-view.c:292
-msgid "Create a new shortcut group"
-msgstr "Vytvori» novú skupinu skratiek"
-
-#: shell/e-shortcuts-view.c:294
-msgid "_Remove This Group..."
-msgstr "Odst_ráni» túto skupinu skratiek"
-
-#: shell/e-shortcuts-view.c:295
-msgid "Remove this shortcut group"
-msgstr "Odstráni» túto skupinu skratiek"
-
-#: shell/e-shortcuts-view.c:300
-msgid "_Hide the Shortcut Bar"
-msgstr "_Skry» panel skratiek"
-
-#: shell/e-shortcuts-view.c:301
-msgid "Hide the shortcut bar"
-msgstr "Skry» panel skratiek"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate"
-msgstr "Pou¾i»"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate this shortcut"
-msgstr "Pou¾i» túto skratku"
-
-#: shell/e-shortcuts-view.c:388
-msgid "Remove this shortcut from the shortcut bar"
-msgstr "Odstráni» túto skratku z panelu skratiek"
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr "(Bez mena)"
-
-#: shell/e-storage.c:459
-msgid "No error"
-msgstr "®iadna chyba"
-
-#: shell/e-storage.c:461
-msgid "Generic error"
-msgstr "V¹eobecná chyba"
-
-#: shell/e-storage.c:463
-msgid "A folder with the same name already exists"
-msgstr "Prieèinok s týmto menom u¾ existuje"
-
-#: shell/e-storage.c:465
-msgid "The specified folder type is not valid"
-msgstr "Uvedený typ prieèinku nie je platný"
-
-#: shell/e-storage.c:467
-msgid "I/O error"
-msgstr "Chyba V/V"
-
-#: shell/e-storage.c:469
-msgid "Not enough space to create the folder"
-msgstr "Nedostatok miesta pre vytvorenie prieèinku"
-
-#: shell/e-storage.c:471
-msgid "The specified folder was not found"
-msgstr "Uvedený prieèinok nebol nájdený"
-
-#: shell/e-storage.c:473
-msgid "Function not implemented in this storage"
-msgstr "Funkcia nie je v tomto sklade implementovaná"
-
-#: shell/e-storage.c:475
-msgid "Permission denied"
-msgstr "Prístup zamietnutý"
-
-#: shell/e-storage.c:477
-msgid "Operation not supported"
-msgstr "Operácia nepodporovaná"
-
-#: shell/e-storage.c:479
-msgid "The specified type is not supported in this storage"
-msgstr "Uvedený typ nie je podporovaný týmto skladom"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-msgid "Folder name:"
-msgstr "Meno prieèinku:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-msgid "Folder type:"
-msgstr "Typ prieèinku:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-msgid "Specify where to create the folder:"
-msgstr "Zadajte, kde vytvori» prieèinok"
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-msgid "The Evolution shell."
-msgstr "Shell Evolution."
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr "Kliknite na \"Importova\" pre spustenie importu súboru do Evolution."
-
-#: shell/importer/import.glade.h:2
-msgid "Evolution Import Utility"
-msgstr "Nástroj Evolution pre import"
-
-#: shell/importer/import.glade.h:3
-msgid "Evolution Importer Utility"
-msgstr "Nástroj Evolution pre import"
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-"Vitajte v Nástroji Evolution pre import.\n"
-"Tento sprievodca vám pomô¾e importova»\n"
-"externé súbory do Evolution."
-
-#: shell/importer/intelligent.c:186
-msgid "Importers"
-msgstr "Importy"
-
-#: shell/main.c:82
-#, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-"Vitajte. Vïaka za èas strávený s»ahovaním tejto uká¾ky\n"
-"groupwarového nástroja Evolution.\n"
-"\n"
-"Kedysi dávno sme sa pri vývoji sústreïovali hlavne na pou¾iteµnos»\n"
-"Evolution. Veµa vývojárov Evolution ho dnes pou¾íva ako\n"
-"hlavný nástroj pre elektronickú po¹tu. Vy mô¾ete tie¾. (Len si\n"
-"nezabudnite urobi» zálohu dát.)\n"
-"\n"
-"Ale zatiaµ èo sme opravili veµa chýb týkajúcich sa stability\n"
-"a bezpeènosti, stále tu zostáva vyhlásenie: Evolution vám: spadne,\n"
-"stratí v¹etku po¹tu keï to nechcete, odmietne odstráni» správy\n"
-"keï to chcete, nechá be¾a» stratené procesy,\n"
-"zaberie 100% CPU, zatuhne, po¹le po¹tu HTML do náhodných\n"
-"konferencií a zahanbí vás pred va¹imi priateµmi, priateµkami.\n"
-"a spolupracovníkmi. Pou¾ívajte ho len ako je to doporuèené.\n"
-"\n"
-"Dúfame, ¾e vás pote¹ia výsledky na¹ej »a¾kej práce a netrpezlivo\n"
-"èakáme na vá¹ príspevok!\n"
-
-#: shell/main.c:107
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-"Vïaka\n"
-"Tím Evolution\n"
-
-#: shell/main.c:138
-msgid "Cannot initialize the Evolution shell."
-msgstr "Nie je mo¾né inicializova» shell Evolution."
-
-#: shell/main.c:184
-msgid "Disable splash screen"
-msgstr "Zakáza» úvodné okno"
-
-#: shell/main.c:185
-msgid "Send the debugging output of all components to a file."
-msgstr "Posla» ladiaci výstup zo v¹etkých komponent od súboru."
-
-#: shell/main.c:217
-msgid "Cannot initialize the Bonobo component system."
-msgstr "Nie je mo¾né inicializova» komponentový systém Bonobo."
-
-#: ui/evolution-addressbook.xml.h:2
-msgid "Create new contact"
-msgstr "Vytvori» nový kontakt"
-
-#: ui/evolution-addressbook.xml.h:4
-msgid "Delete a contact"
-msgstr "Odstráni» kontakt"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-msgid "Find"
-msgstr "Nájs»"
-
-#: ui/evolution-addressbook.xml.h:6
-msgid "Find a contact"
-msgstr "Nájs» kontakt"
-
-#: ui/evolution-addressbook.xml.h:7
-msgid "New contact"
-msgstr "Nový kontakt"
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-mail.xml.h:57
-msgid "Previews the message to be printed"
-msgstr "Uká¾ka správy pred tlaèou"
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "Print contacts"
-msgstr "Tlaèi» kontakty"
-
-#: ui/evolution-addressbook.xml.h:12 ui/evolution-mail.xml.h:88
-msgid "Stop"
-msgstr "Zastavi»"
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "Stop Loading"
-msgstr "Zastavi» naèítavanie"
-
-#: ui/evolution-addressbook.xml.h:14
-msgid "View All"
-msgstr "Zobrazi» v¹etko"
-
-#: ui/evolution-addressbook.xml.h:15
-msgid "View all contacts"
-msgstr "Zobrazi» v¹etky kontakty"
-
-#: ui/evolution-addressbook.xml.h:16
-msgid "_Addressbook Sources..."
-msgstr "Zdroje _adresára..."
-
-#: ui/evolution-addressbook.xml.h:17
-msgid "_Contact"
-msgstr "_Kontakt"
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-msgid "_Print..."
-msgstr "_Tlaèi»..."
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr "_Hµada» kontakty"
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-mail.xml.h:118
-#: ui/evolution-task-editor-dialog.xml.h:88 ui/evolution.xml.h:45
-msgid "_Tools"
-msgstr "_Nástroje"
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr "5 dní"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-msgid "Alter preferences"
-msgstr "Zmeni» nastavenie"
-
-#: ui/evolution-calendar.xml.h:4
-msgid "Create a new all day Event"
-msgstr "Vytvori» novú celodennú udalos»"
-
-#: ui/evolution-calendar.xml.h:5
-msgid "Create a new appointment"
-msgstr "Vytvori» novú schôdzku"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr "Vytvori» nový kalendár"
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr "Deò"
-
-#: ui/evolution-calendar.xml.h:8
-msgid "Go To"
-msgstr "Prejs» na"
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr "Prejs» dozadu"
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go forward in time"
-msgstr "Prejs» dopredu"
-
-#: ui/evolution-calendar.xml.h:11
-msgid "Go to _Date"
-msgstr "Prejs» na _dátum"
-
-#: ui/evolution-calendar.xml.h:12
-msgid "Go to _Today"
-msgstr "Prejs» na d_ne¹ný dátum"
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr "Prejs» na zadaný dátum"
-
-#: ui/evolution-calendar.xml.h:14
-msgid "Go to present time"
-msgstr "Prejs» na aktuálny èas"
-
-#: ui/evolution-calendar.xml.h:15
-msgid "Month"
-msgstr "Mesiac"
-
-#: ui/evolution-calendar.xml.h:17
-msgid "New _Event"
-msgstr "Nová _udalos»"
-
-#: ui/evolution-calendar.xml.h:20
-msgid "Open Calendar"
-msgstr "Otvori» kalendár"
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Prev"
-msgstr "Pred"
-
-#: ui/evolution-calendar.xml.h:22
-msgid "Previews the calendar to be printed"
-msgstr "Uká¾ka kalendára pred tlaèou"
-
-#: ui/evolution-calendar.xml.h:25
-msgid "Print calendar"
-msgstr "Tlaèi» kalendár"
-
-#: ui/evolution-calendar.xml.h:26
-msgid "Print this Calendar"
-msgstr "Tlaèi» tento kalendár"
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:15
-msgid "Save As"
-msgstr "Ulo¾i» ako"
-
-#: ui/evolution-calendar.xml.h:28
-msgid "Save calendar as something else"
-msgstr "Ulo¾i» kalendár ako nieèo iné"
-
-#: ui/evolution-calendar.xml.h:30
-msgid "Show 1 day"
-msgstr "Zobrazi» jeden deò"
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr "Zobrazi» jeden mesiac"
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr "Zobrazi» jeden tý¾deò"
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr "Zobrazi» pracovný tý¾deò"
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:229
-#: widgets/misc/e-dateedit.c:424
-msgid "Today"
-msgstr "Dnes"
-
-#: ui/evolution-calendar.xml.h:35
-msgid "W_ork Week"
-msgstr "P_racovný tý¾deò"
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr "Tý¾deò"
-
-#: ui/evolution-calendar.xml.h:37
-msgid "_Appointment"
-msgstr "_Schôdzka"
-
-#: ui/evolution-calendar.xml.h:38
-msgid "_Day"
-msgstr "_Deò"
-
-#: ui/evolution-calendar.xml.h:39
-msgid "_Month"
-msgstr "_Mesiac"
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:41
-msgid "_New"
-msgstr "_Nový"
-
-#: ui/evolution-calendar.xml.h:41
-msgid "_Open Calendar"
-msgstr "_Otvori» kalendár"
-
-#: ui/evolution-calendar.xml.h:45
-msgid "_Week"
-msgstr "_Tý¾deò"
-
-#: ui/evolution-contact-editor.xml.h:2
-msgid "Delete this item"
-msgstr "Odstráni túto polo¾ku"
-
-#: ui/evolution-contact-editor.xml.h:3
-msgid "Delete..."
-msgstr "Odstráni»..."
-
-#: ui/evolution-contact-editor.xml.h:4
-msgid "Help"
-msgstr "Pomocník"
-
-#: ui/evolution-contact-editor.xml.h:5
-msgid "Print En_velope..."
-msgstr "Tlaèi» _obálku..."
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-msgid "Print this item"
-msgstr "Tlaèi» túto polo¾ku"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-mail.xml.h:66 ui/evolution-task-editor-dialog.xml.h:41
-msgid "Print..."
-msgstr "Tlaèi»..."
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:16
-#: ui/evolution-task-editor-dialog.xml.h:51
-msgid "Save _As..."
-msgstr "Ulo¾i» _ako..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-msgid "Save and Close"
-msgstr "Ulo¾i» a zavrie»"
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr "Ulo¾i» kontakt a zatvori» dialóg"
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr "Posla» kontakt _inému..."
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr "Zobrazi» pomocníka"
-
-#: ui/evolution-contact-editor.xml.h:13
-msgid "Send _message to contact..."
-msgstr "Posla» _správu kontaktu..."
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:43 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:33
-msgid "_File"
-msgstr "_Súbor"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:50
-#: ui/evolution-task-editor-dialog.xml.h:85
-msgid "_Save"
-msgstr "_Ulo¾i»"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr "O tejto aplikácii"
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr "O aplikácii..."
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-msgid "Actio_ns"
-msgstr "A_kcie"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-msgid "Address _Book... (FIXME)"
-msgstr "_Adresár..."
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-msgid "C_lear"
-msgstr "_Zmaza»"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-msgid "C_ut"
-msgstr "Vystri_hnú»"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-msgid "Chec_k Names (FIXME)"
-msgstr "_Kontrolova» mená"
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-msgid "Clear"
-msgstr "Zmaza»"
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-msgid "Clear the selection"
-msgstr "Zmaza» výber"
-
-#: ui/evolution-event-editor.xml.h:11
-msgid "Close this appointment"
-msgstr "Zavrie» túto schôdzku"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "_Kopírova» do prieèinku..."
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:7
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "Kopírova»"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-msgid "Copy the selection"
-msgstr "Skopíruje výber"
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr "Vystrihnú»"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Cut the selection"
-msgstr "Vystrihne výber"
-
-#: ui/evolution-event-editor.xml.h:18
-msgid "Delete this appointment"
-msgstr "Odstráni» túto schôdzku"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr "Vypísa» XML"
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr "Vypí¹e XML popis rozhrania"
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr "P_rvá polo¾ka v prieèinku"
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-msgid "For_ward (FIXME)"
-msgstr "Preda» ï_alej"
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr "Posla» ïalej ako v_Kalendár"
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-msgid "Go to the next item"
-msgstr "Prejs» na nasledujúcu polo¾ku"
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-msgid "Go to the previous item"
-msgstr "Prejs» na predchádzajúcu polo¾ku"
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-msgid "In_complete Task (FIXME)"
-msgstr "Ne_dokonèená úloha"
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-msgid "Modify the file's properties"
-msgstr "Zmeni» vlastnosti súboru"
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-msgid "N_ext"
-msgstr "_Nasledujúca"
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-msgid "Paste"
-msgstr "Vlo¾i»"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-msgid "Paste the clipboard"
-msgstr "Vlo¾í obsah schránky"
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr "_Predchádzajúca"
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-msgid "Print Pre_view"
-msgstr "U_ká¾ka pred tlaèou"
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-msgid "Print S_etup..."
-msgstr "Nastavenie _tlaèiarne..."
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-msgid "Print Setup"
-msgstr "Nastavenie tlaèiarne"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:14
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:241
-msgid "Save"
-msgstr "Ulo¾i»"
-
-#: ui/evolution-event-editor.xml.h:43
-msgid "Save the appointment and close the dialog box"
-msgstr "Ulo¾i» schôdzku a zavrie» tento dialóg"
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:20
-#: ui/evolution-task-editor-dialog.xml.h:53
-msgid "Save the current file"
-msgstr "Ulo¾i» aktuálny súbor"
-
-#: ui/evolution-event-editor.xml.h:46
-msgid "Schedule _Meeting"
-msgstr "Naplánova» _stretnutie"
-
-#: ui/evolution-event-editor.xml.h:47
-msgid "Schedule some sort of a meeting"
-msgstr "Naplánova» nieèo ako stretnutie"
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-mail.xml.h:78
-#: ui/evolution-task-editor-dialog.xml.h:57
-msgid "Select All"
-msgstr "Vybra» v¹etko"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-msgid "Select everything"
-msgstr "Vybra» v¹etko"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr "Nastaví stránku pre aktuálnu tlaèiareò"
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-msgid "Task _Request (FIXME)"
-msgstr "_Po¾iadavka na úlohu"
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-task-editor-dialog.xml.h:63
-msgid "_About..."
-msgstr "_O programe..."
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:40
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:30
-msgid "_Close"
-msgstr "_Zavrie»"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:31
-msgid "_Contact (FIXME)"
-msgstr "_Kontakt"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-msgid "_Copy"
-msgstr "_Kopírova»"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:41
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr "_Ladi»"
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:45
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:37
-msgid "_Help"
-msgstr "_Pomocník"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-msgid "_Item (FIXME)"
-msgstr "_Polo¾ka"
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-msgid "_Journal Entry (FIXME)"
-msgstr "Polo¾ka _denníka"
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-msgid "_Last Item in Folder (FIXME)"
-msgstr "Pos_ledná polo¾ka v prieèinku"
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-msgid "_Mail Message (FIXME)"
-msgstr "_Posla» správu"
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-msgid "_Move to Folder... (FIXME)"
-msgstr "Pre_sunú» do prieèinka..."
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-msgid "_Note (FIXME)"
-msgstr "_Poznámka"
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-msgid "_Paste"
-msgstr "_Vlo¾i»"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:111
-#: ui/evolution-task-editor-dialog.xml.h:83
-msgid "_Properties..."
-msgstr "_Vlastnosti..."
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-msgid "_Select All"
-msgstr "Vybra» _v¹etko"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:44
-msgid "_Task (FIXME)"
-msgstr "Ú_loha"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-msgid "_Unread Item (FIXME)"
-msgstr "_Nepreèítaná polo¾ka"
-
-#: ui/evolution-event-editor.xml.h:76 ui/evolution-message-composer.xml.h:52
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:46
-msgid "_View"
-msgstr "_Pohµad"
-
-#: ui/evolution-executive-summary.xml.h:1
-msgid "Add Service"
-msgstr "Nová slu¾ba"
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr "Pridá novú slu¾bu do Súhrnu"
-
-#: ui/evolution-executive-summary.xml.h:3
-msgid "Create a new email"
-msgstr "Vytvorí novú e-mailovú správu"
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr "Nastavenie Súhrnu..."
-
-#: ui/evolution-executive-summary.xml.h:5
-msgid "New Mail"
-msgstr "Nová správa"
-
-#: ui/evolution-mail.xml.h:2
-msgid "Apply any new filters to the mail in this box"
-msgstr "Aplikova» nové filtre na správy v tomto prieèinku"
-
-#: ui/evolution-mail.xml.h:3
-msgid "Change the properties of this folder"
-msgstr "Zmení vlastnosti tohto prieèinku"
-
-#: ui/evolution-mail.xml.h:4
-msgid "Compose"
-msgstr "Napísa»"
-
-#: ui/evolution-mail.xml.h:5
-msgid "Compose a new message"
-msgstr "Napísa» novú správu"
-
-#: ui/evolution-mail.xml.h:6
-msgid "Configure Folder..."
-msgstr "Nastavi» prieèinok..."
-
-#: ui/evolution-mail.xml.h:8
-msgid "Copy message to a new folder"
-msgstr "Kopírova» správu do nového prieèinka"
-
-#: ui/evolution-mail.xml.h:9
-msgid "Copy selected messages to another folder"
-msgstr "Kopírova» vybrané správy do iného prieèinka"
-
-#: ui/evolution-mail.xml.h:10
-msgid "Create _Virtual Folder From Message"
-msgstr "Vytvori» _virtuálny prieèinok zo správy"
-
-#: ui/evolution-mail.xml.h:12
-msgid "Delete the selected messages"
-msgstr "Zmaza» vybrané správy"
-
-#: ui/evolution-mail.xml.h:14
-msgid "Display all of the message headers"
-msgstr "Zobrazí v¹etky hlavièky správy"
-
-#: ui/evolution-mail.xml.h:15
-msgid "Edit Message"
-msgstr "Upravi» správu"
-
-#: ui/evolution-mail.xml.h:16
-msgid "Edit the current message"
-msgstr "Upraví aktuálnu správu"
-
-#: ui/evolution-mail.xml.h:17
-msgid "Empty _Trash"
-msgstr "Vyprázdni» _Odpadky"
-
-#: ui/evolution-mail.xml.h:18
-msgid "Expunge"
-msgstr "Vyèisti»"
-
-#: ui/evolution-mail.xml.h:19
-msgid "Filter on Mailing _List"
-msgstr "Filter na _konferenciu"
-
-#: ui/evolution-mail.xml.h:20
-msgid "Filter on Se_nder"
-msgstr "Filter na _odosielateµovi"
-
-#: ui/evolution-mail.xml.h:21
-msgid "Filter on _Recipients"
-msgstr "Filter na _adresátoch"
-
-#: ui/evolution-mail.xml.h:22
-msgid "Filter on _Subject"
-msgstr "Filter na _predmet"
-
-#: ui/evolution-mail.xml.h:23
-msgid "Finaly remove all mails tagged for deletion"
-msgstr "Úplne odstráni v¹etky správy oznaèené pre zmazanie"
-
-#: ui/evolution-mail.xml.h:24
-msgid "Forget _Passwords"
-msgstr "Zabudnú» _heslá"
-
-#: ui/evolution-mail.xml.h:26
-msgid "Forward As"
-msgstr "Posla» ïalej ako"
-
-#: ui/evolution-mail.xml.h:27
-msgid "Forward attached"
-msgstr "Preda» ïalej ako prílohu"
-
-#: ui/evolution-mail.xml.h:28
-msgid "Forward inline"
-msgstr "Preda» ïalej v tele"
-
-#: ui/evolution-mail.xml.h:29
-msgid "Forward quoted"
-msgstr "Posla» ïalej citované"
-
-#: ui/evolution-mail.xml.h:30
-msgid "Forward the selected mail to someone"
-msgstr "Predá niekomu vybranú správu"
-
-#: ui/evolution-mail.xml.h:31
-msgid "Forward the selected mail to someone as an attachment"
-msgstr "Predá vybranú správu niekomu ako prílohu"
-
-#: ui/evolution-mail.xml.h:33
-msgid "Forward this message in-line with your mail, so you can edit it"
-msgstr "Predá túto správu vlo¾enú do va¹ej správy, tak¾e ju mô¾ete upravi»"
-
-#: ui/evolution-mail.xml.h:34
-msgid "Forward this message quoted like a reply"
-msgstr "Predá túto správu vlo¾enú do va¹ej správy podobne ako pri odpovedi"
-
-#: ui/evolution-mail.xml.h:35
-msgid "Full _Headers"
-msgstr "Ú_plné hlavièky"
-
-#: ui/evolution-mail.xml.h:36
-msgid "Go to the next message"
-msgstr "Prejs» na nasledujúcu polo¾ku"
-
-#: ui/evolution-mail.xml.h:37
-msgid "Go to the previous message"
-msgstr "Prejs» na predchádzajúcu polo¾ku"
-
-#: ui/evolution-mail.xml.h:38
-msgid "Hide Deleted Messages"
-msgstr "Skry» zmazané správy"
-
-#: ui/evolution-mail.xml.h:39
-msgid "Hide S_elected Messages"
-msgstr "Skry» _vybrané správy"
-
-#: ui/evolution-mail.xml.h:40
-msgid "Hide _Deleted Messages"
-msgstr "Skry» _odstránené správy"
-
-#: ui/evolution-mail.xml.h:41
-msgid "Hide _Read messages"
-msgstr "Skry» _preèítané správy"
-
-#: ui/evolution-mail.xml.h:42
-msgid "Invert Selection"
-msgstr "Obráti» výber"
-
-#: ui/evolution-mail.xml.h:43
-msgid "Manage _Subscriptions..."
-msgstr "Správa _prihlásení..."
-
-#: ui/evolution-mail.xml.h:45
-msgid "Mark All as R_ead"
-msgstr "Oznaèi» _v¹etky ako preèítané"
-
-#: ui/evolution-mail.xml.h:46
-msgid "Mark As Read"
-msgstr "Oznaèi» ako preèítanú"
-
-#: ui/evolution-mail.xml.h:47
-msgid "Mark As U_nread"
-msgstr "Oznaèi» ako _nepreèítanú"
-
-#: ui/evolution-mail.xml.h:49
-msgid "Mark the selected messages as having been read"
-msgstr "Oznaèí vybrané správy ako u¾ preèítané"
-
-#: ui/evolution-mail.xml.h:50
-msgid "Mark the selected messages as not having been read"
-msgstr "Oznaèí vybrané správy ako nepreèítané"
-
-#: ui/evolution-mail.xml.h:51
-msgid "Move"
-msgstr "Presunú»"
-
-#: ui/evolution-mail.xml.h:52
-msgid "Move message to a new folder"
-msgstr "Presunú» správu do nového prieèinka"
-
-#: ui/evolution-mail.xml.h:53
-msgid "Move selected messages to another folder"
-msgstr "Presunú» vybrané správy do iného prieèinku"
-
-#: ui/evolution-mail.xml.h:55
-msgid "Open in New Window"
-msgstr "Otvori» v novom okne"
-
-#: ui/evolution-mail.xml.h:56
-msgid "Open the current message in a new window"
-msgstr "Otvorí aktuálnu správu v novom okne"
-
-#: ui/evolution-mail.xml.h:62
-msgid "Print Preview of message..."
-msgstr "Uká¾ka správy pred tlaèou..."
-
-#: ui/evolution-mail.xml.h:63
-msgid "Print message to the printer"
-msgstr "Tlaèi» správu na tlaèiarni"
-
-#: ui/evolution-mail.xml.h:64
-msgid "Print message..."
-msgstr "Tlaèi» správu..."
-
-#: ui/evolution-mail.xml.h:67
-msgid "Redirect (FIXME: implement me)"
-msgstr "Presmerova»"
-
-#: ui/evolution-mail.xml.h:71
-msgid "Reply to all"
-msgstr "Odpoveda» v¹etkým"
-
-#: ui/evolution-mail.xml.h:73
-msgid "Reply to sender"
-msgstr "Odpoveda» odosielateµovi"
-
-#: ui/evolution-mail.xml.h:75
-msgid "S_earch Message"
-msgstr "_Nájs» správu"
-
-#: ui/evolution-mail.xml.h:76
-msgid "S_ource"
-msgstr "_Zdroj"
-
-#: ui/evolution-mail.xml.h:77
-msgid "Save the message into a new file"
-msgstr "Ulo¾i» správu do nového súboru"
-
-#: ui/evolution-mail.xml.h:79 ui/evolution-subscribe.xml.h:7
-msgid "Select _All"
-msgstr "Vybra» _v¹etko"
-
-#: ui/evolution-mail.xml.h:80
-msgid "Select _Thread"
-msgstr "Vybra» _vlákno"
-
-#: ui/evolution-mail.xml.h:81
-msgid "Send / Receive"
-msgstr "Príjem / odoslanie"
-
-#: ui/evolution-mail.xml.h:82
-msgid "Send a reply to the person who sent you this mail"
-msgstr "Po¹le odpoveï osobe, ktorá vám túto správu poslala"
-
-#: ui/evolution-mail.xml.h:83
-msgid "Send a single mail in reply to all the selected mail"
-msgstr "Po¹le jednu odpoveï na v¹etky vybrané správy"
-
-#: ui/evolution-mail.xml.h:84
-msgid ""
-"Send queued mail\n"
-" and retrieve new mail"
-msgstr ""
-"Posla» neodoslanú po¹tu\n"
-" a prija» novú po¹tu"
-
-#: ui/evolution-mail.xml.h:86
-msgid "Send queued mail and retrieve new mail"
-msgstr "Posla» neodoslanú po¹tu a prija» novú po¹tu"
-
-#: ui/evolution-mail.xml.h:87
-msgid "Show _All"
-msgstr "Zobrazi» _v¹etko"
-
-#: ui/evolution-mail.xml.h:89
-msgid "Threaded Message list"
-msgstr "Zoznam vlákien"
-
-#: ui/evolution-mail.xml.h:90
-msgid "Un-delete the selected messages"
-msgstr "Obnovi» vybrané správy"
-
-#: ui/evolution-mail.xml.h:91
-msgid "Undelete"
-msgstr "Obnovi» zmazaný záznam"
-
-#: ui/evolution-mail.xml.h:96
-msgid "View Raw Message Source"
-msgstr "Zobrazi» èistý kód správy"
-
-#: ui/evolution-mail.xml.h:97
-msgid "Virtual Folder _Editor..."
-msgstr "_Editor virtuálneho prieèinku..."
-
-#: ui/evolution-mail.xml.h:98
-msgid "_Apply Filters"
-msgstr "_Pou¾i» filtre"
-
-#: ui/evolution-mail.xml.h:100
-msgid "_Create Filter From Message"
-msgstr "Vytvori» _filter zo správy"
-
-#: ui/evolution-mail.xml.h:102
-msgid "_Expunge"
-msgstr "_Vyèisti»"
-
-#: ui/evolution-mail.xml.h:103
-msgid "_Filters..."
-msgstr "_Filtre..."
-
-#: ui/evolution-mail.xml.h:104 ui/evolution.xml.h:34
-msgid "_Folder"
-msgstr "_Prieèinok"
-
-#: ui/evolution-mail.xml.h:106 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr "_Obráti» výber"
-
-#: ui/evolution-mail.xml.h:107
-msgid "_Mail Message"
-msgstr "_Posla» správu"
-
-#: ui/evolution-mail.xml.h:108
-msgid "_Mail Settings..."
-msgstr "Nastavenie _po¹ty..."
-
-#: ui/evolution-mail.xml.h:110
-msgid "_Open Selected Items"
-msgstr "_Otvori» vybrané polo¾ky"
-
-#: ui/evolution-mail.xml.h:112
-msgid "_Reply"
-msgstr "_Odpoveda»"
-
-#: ui/evolution-mail.xml.h:113
-msgid "_Resend Messages"
-msgstr "_Znovu posla» správy"
-
-#: ui/evolution-mail.xml.h:115
-msgid "_Save Message As..."
-msgstr "Ulo¾i» správu _ako..."
-
-#: ui/evolution-mail.xml.h:116
-msgid "_Send / Receive"
-msgstr "_Posla» / Prija»"
-
-#: ui/evolution-mail.xml.h:117
-msgid "_Threaded"
-msgstr "_Vlákna"
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr "Prilo¾i»"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-msgid "Close the current file"
-msgstr "Zavrie aktuálny súbor"
-
-#: ui/evolution-message-composer.xml.h:5
-msgid "Encrypt this message with PGP"
-msgstr "Za¹ifrova» túto správu pomocou PGP"
-
-#: ui/evolution-message-composer.xml.h:6
-msgid "F_ormat"
-msgstr "_Formát"
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "HTML"
-msgstr "HTML"
-
-#: ui/evolution-message-composer.xml.h:8
-msgid "Insert a file as text into the message"
-msgstr "Vlo¾i» súbor ako text do správy"
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert text file..."
-msgstr "Vlo¾i» textový súbor...."
-
-#: ui/evolution-message-composer.xml.h:11
-msgid "Open a file"
-msgstr "Otvorí súbor"
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "PGP Encrypt"
-msgstr "©ifrovanie PGP"
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Sign"
-msgstr "Podpis PGP"
-
-#: ui/evolution-message-composer.xml.h:17
-msgid "Save _Draft"
-msgstr "Ulo¾i» _koncept"
-
-#: ui/evolution-message-composer.xml.h:18
-msgid "Save in _folder... (FIXME)"
-msgstr "Ulo¾i» v _prieèinku..."
-
-#: ui/evolution-message-composer.xml.h:19
-msgid "Save in folder..."
-msgstr "Ulo¾i» v prieèinku..."
-
-#: ui/evolution-message-composer.xml.h:21
-msgid "Save the current file with a different name"
-msgstr "Ulo¾í aktuálny súbor pod iným menom"
-
-#: ui/evolution-message-composer.xml.h:22
-msgid "Save the message in a specified folder"
-msgstr "Ulo¾i» správu do daného prieèinku"
-
-#: ui/evolution-message-composer.xml.h:23
-msgid "Send"
-msgstr "Posla»"
-
-#: ui/evolution-message-composer.xml.h:24
-msgid "Send _Later"
-msgstr "Posla» _neskôr"
-
-#: ui/evolution-message-composer.xml.h:25
-msgid "Send _later"
-msgstr "Posla» _neskôr"
-
-#: ui/evolution-message-composer.xml.h:26
-msgid "Send the mail in HTML format"
-msgstr "Posla» správu vo formáte HTML"
-
-#: ui/evolution-message-composer.xml.h:27
-msgid "Send the message later"
-msgstr "Posla» správu neskôr"
-
-#: ui/evolution-message-composer.xml.h:28
-msgid "Send the message now"
-msgstr "Posla» správu hneï"
-
-#: ui/evolution-message-composer.xml.h:29
-msgid "Send this message now"
-msgstr "Posla» túto správu hneï"
-
-#: ui/evolution-message-composer.xml.h:30
-msgid "Show / hide attachments"
-msgstr "Zobrazi» / Skry» prílohy"
-
-#: ui/evolution-message-composer.xml.h:31
-msgid "Show _attachments"
-msgstr "Zobrazi» _prílohy"
-
-#: ui/evolution-message-composer.xml.h:32
-msgid "Show attachments"
-msgstr "Zobrazi» prílohy"
-
-#: ui/evolution-message-composer.xml.h:33
-msgid "Sign this message with your PGP key"
-msgstr "Podpísa» túto správu kµúèom PGP"
-
-#: ui/evolution-message-composer.xml.h:34
-msgid "Toggles whether the BCC field is displayed"
-msgstr "Prepne, èi má by» zobrazené pole BCC"
-
-#: ui/evolution-message-composer.xml.h:35
-msgid "Toggles whether the CC field is displayed"
-msgstr "Prepne, èi má by» zobrazené pole CC"
-
-#: ui/evolution-message-composer.xml.h:36
-msgid "Toggles whether the From chooser is displayed"
-msgstr "Prepne, èi má by» zobrazené pole pre výber odosielateµa"
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr "Prepne, èi má by» zobrazené pole Reply-to"
-
-#: ui/evolution-message-composer.xml.h:38
-msgid "_Bcc Field"
-msgstr "Pole _BCC"
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "_Cc Field"
-msgstr "Pole _CC"
-
-#: ui/evolution-message-composer.xml.h:44
-msgid "_From Field"
-msgstr "Pole _Od"
-
-#: ui/evolution-message-composer.xml.h:46
-msgid "_Insert"
-msgstr "_Vlo¾i»"
-
-#: ui/evolution-message-composer.xml.h:47
-msgid "_Insert text file... (FIXME)"
-msgstr "Vlo¾i» _textový súbor..."
-
-#: ui/evolution-message-composer.xml.h:48
-msgid "_Open..."
-msgstr "_Otvori»..."
-
-#: ui/evolution-message-composer.xml.h:49
-msgid "_Reply-To Field"
-msgstr "Pole _Reply-To"
-
-#: ui/evolution-message-composer.xml.h:51
-msgid "_Security"
-msgstr "Za_bezpeèenie"
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr "Prida» prieèinok do zoznamu prihlásených prieèinkov"
-
-#: ui/evolution-subscribe.xml.h:3
-msgid "F_older"
-msgstr "P_rieèinok"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr "Obnovi» zoznam"
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr "Obnovi» zoznam prieèinkov"
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr "Odstráni» prieèinok zo zoznamu prihlásených prieèinkov"
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr "Prihlási» si"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr "Odhlási»"
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-msgid "Assig_n Task (FIXME)"
-msgstr "P_riradi» úlohu"
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr "Hµada» znovu"
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-msgid "Meeting Re_quest (FIXME)"
-msgstr "Po¾ia_davka na stretnutie"
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-msgid "Redo"
-msgstr "Opakova»"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-msgid "Redo the undone action"
-msgstr "Opakova» vrátenú akciu"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-msgid "Replace"
-msgstr "Nahradi»"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-msgid "Replace a string"
-msgstr "Nahradi» re»azec"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-msgid "Reply to A_ll (FIXME)"
-msgstr "Odpoveda» _v¹etkým"
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-msgid "S_end Status Report (FIXME)"
-msgstr "Posla» informáciu o _stave"
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr "Pres_koèi» výskyt"
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-msgid "Save the task and close the dialog box"
-msgstr "Ulo¾i» úlohu a zavrie» dialóg"
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "Search again for the same string"
-msgstr "Hµada» znovu rovnaký re»azec"
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-msgid "Search for a string"
-msgstr "Nájs» re»azec"
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr "Vráti»"
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-msgid "Undo the last action"
-msgstr "Vráti spä» poslednú akciu"
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:29
-msgid "_Appointment (FIXME)"
-msgstr "S_chôdzka"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-msgid "_Mark Complete (FIXME)"
-msgstr "Oznaèi» ako _dokonèenú"
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-msgid "_Reply (FIXME)"
-msgstr "_Odpoveï"
-
-#: ui/evolution-tasks.xml.h:2
-msgid "Create a new task"
-msgstr "Vytvori» novú úlohu"
-
-#: ui/evolution-tasks.xml.h:3
-msgid "New Task"
-msgstr "Nová úloha"
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr "Ulo¾i» úlohu ako nieèo iné"
-
-#: ui/evolution-tasks.xml.h:6
-msgid "Tasks Preferences..."
-msgstr "Nastavenie úloh..."
-
-#: ui/evolution-tasks.xml.h:9
-msgid "_Task"
-msgstr "Ú_loha"
-
-#: ui/evolution.xml.h:1
-msgid "About Evolution..."
-msgstr "O Evolution..."
-
-#: ui/evolution.xml.h:3
-msgid "Close this window"
-msgstr "Zavrie toto okno"
-
-#: ui/evolution.xml.h:4
-msgid "Customi_ze Toolbars..."
-msgstr "Prispôsobi» pa_nely nástrojov..."
-
-#: ui/evolution.xml.h:5
-msgid "Customize"
-msgstr "Prispôsobi»"
-
-#: ui/evolution.xml.h:6
-msgid "Customize toolbars"
-msgstr "Prispôsobi» panely nástrojov"
-
-#: ui/evolution.xml.h:7
-msgid "Display a different folder"
-msgstr "Zobrazi» iný prieèinok"
-
-#: ui/evolution.xml.h:8
-msgid "E_xit"
-msgstr "_Koniec"
-
-#: ui/evolution.xml.h:9
-msgid "Evolution _Window"
-msgstr "_Okno Evolution"
-
-#: ui/evolution.xml.h:10
-msgid "Evolution bar _shortcut"
-msgstr "_Skratka pre panel Evolution"
-
-#: ui/evolution.xml.h:11
-msgid "Exit the program"
-msgstr "Ukonèí program"
-
-#: ui/evolution.xml.h:12
-msgid "Getting _Started"
-msgstr "_Zaèíname"
-
-#: ui/evolution.xml.h:13
-msgid "Import an external file format"
-msgstr "Importuje externý súbor"
-
-#: ui/evolution.xml.h:14
-msgid "Main toolbar"
-msgstr "Hlavný panel nástrojov"
-
-#: ui/evolution.xml.h:15
-msgid "Show information about Evolution"
-msgstr "Zobrazí informáciu o Evolution"
-
-#: ui/evolution.xml.h:16
-msgid "Submit Bug Report"
-msgstr "Po¹le správu o chybe"
-
-#: ui/evolution.xml.h:17
-msgid "Submit _Bug Report"
-msgstr "_Posla» správu o chybe"
-
-#: ui/evolution.xml.h:18
-msgid "Submit bug report using Bug Buddy."
-msgstr "Po¹le správu o chybe pomocou nástroja pre oznamovanie chýb."
-
-#: ui/evolution.xml.h:19
-msgid "Toggle"
-msgstr "Prepnú»"
-
-#: ui/evolution.xml.h:20
-msgid "Toggle whether to show the folder bar"
-msgstr "Prepne, èi sa má zobrazova» panel prieèinkov"
-
-#: ui/evolution.xml.h:21
-msgid "Toggle whether to show the shortcut bar"
-msgstr "Prepne, èi sa má zobrazova» panel skratiek"
-
-#: ui/evolution.xml.h:22
-msgid "Toggle whether we are working offline."
-msgstr "Prepne, èi pracujete on alebo off-line."
-
-#: ui/evolution.xml.h:23
-msgid "Using the C_ontact Manager"
-msgstr "Pomocou Správcu ko_ntaktov"
-
-#: ui/evolution.xml.h:24
-msgid "Using the _Calendar"
-msgstr "Pomocou _Kalendára"
-
-#: ui/evolution.xml.h:25
-msgid "Using the _Mailer"
-msgstr "Pomocou _Po¹ty "
-
-#: ui/evolution.xml.h:26
-msgid "Work Offline"
-msgstr "Pracova» off-line"
-
-#: ui/evolution.xml.h:27
-msgid "_About Evolution..."
-msgstr "O _Evolution..."
-
-#: ui/evolution.xml.h:28
-msgid "_Actions"
-msgstr "A_kcie"
-
-#: ui/evolution.xml.h:35
-msgid "_Folder Bar"
-msgstr "Pru_h prieèinkov"
-
-#: ui/evolution.xml.h:36
-msgid "_Go to Folder..."
-msgstr "_Prejs» do prieèinku..."
-
-#: ui/evolution.xml.h:38
-msgid "_Import file..."
-msgstr "_Importova» súbor..."
-
-#: ui/evolution.xml.h:39
-msgid "_Index"
-msgstr "_Index"
-
-#: ui/evolution.xml.h:40
-msgid "_Mail message"
-msgstr "_Posla» správu"
-
-#: ui/evolution.xml.h:42
-msgid "_New Folder"
-msgstr "Nový _prieèinok"
-
-#: ui/evolution.xml.h:43
-msgid "_Shortcut Bar"
-msgstr "_Panel skratiek"
-
-#: ui/evolution.xml.h:47
-msgid "_Work Offline"
-msgstr "_Pracova» off-line"
-
-#: views/addressbook/galview.xml.h:1
-msgid "Adress Cards"
-msgstr "Karta adresára"
-
-#: views/addressbook/galview.xml.h:2
-msgid "By Company"
-msgstr "Podµa firmy"
-
-#: views/addressbook/galview.xml.h:3
-msgid "Phone List"
-msgstr "Zoznam telefónov"
-
-#: views/mail/galview.xml.h:1
-msgid "By Sender"
-msgstr "Podµa odosielateµ"
-
-#: views/mail/galview.xml.h:2
-msgid "By Status"
-msgstr "Podµa stavu"
-
-#: views/mail/galview.xml.h:3
-msgid "By Subject"
-msgstr "Podµa predmetu"
-
-#: views/mail/galview.xml.h:4
-msgid "Messages"
-msgstr "Správy"
-
-#: views/tasks/galview.xml.h:2
-msgid "With Category"
-msgstr "S kategóriou"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:392
-msgid "Tentative"
-msgstr "Predbe¾ný"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:393
-msgid "Busy"
-msgstr "Zaneprázdnený"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:394
-msgid "Out of Office"
-msgstr "Mimo kancelárie"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:395
-msgid "No Information"
-msgstr "®iadna informácia"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:411
-msgid "_Invite Others..."
-msgstr "_Pozva» ostatných..."
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:431
-msgid "_Options"
-msgstr "_Nastavenie"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:448
-msgid "Show _Only Working Hours"
-msgstr "Zobrazi» _iba pracovné hodiny"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:461
-msgid "Show _Zoomed Out"
-msgstr "Ukáza» z_men¹ené"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:479
-msgid "_Update Free/Busy"
-msgstr "_Obnovi» voµno/zaneprázdnený"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:497
-msgid "_<<"
-msgstr "_<<"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:514
-msgid "_Autopick"
-msgstr "_Autovýber"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:528
-msgid ">_>"
-msgstr ">_>"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:545
-msgid "_All People and Resources"
-msgstr "_V¹etky osoby a zdroje"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:558
-msgid "All _People and One Resource"
-msgstr "V¹etky _osoby a jeden zdroj"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:571
-msgid "_Required People"
-msgstr "_Vy¾adované osoby"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:584
-msgid "Required People and _One Resource"
-msgstr "Vy¾adované osoby a _jeden zdroj"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:607
-msgid "Meeting _start time:"
-msgstr "_Zaèiatok stretnutia:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:631
-msgid "Meeting _end time:"
-msgstr "_Koniec stretnutia:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:744
-msgid "All Attendees"
-msgstr "V¹etci úèastníci"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:469
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2477
-msgid "%A, %B %d, %Y"
-msgstr "%A, %B %d, %Y"
-
-#: widgets/menus/gal-view-menus.c:176
-msgid "_Current View"
-msgstr "_Aktuálny pohµad"
-
-#: widgets/menus/gal-view-menus.c:202
-msgid "Define Views"
-msgstr "Definova» pohµady"
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:422
-msgid "MTWTFSS"
-msgstr "PUS©PSN"
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1061 widgets/misc/e-calendar-item.c:2756
-msgid "%B %Y"
-msgstr "%B %Y"
-
-#: widgets/misc/e-cell-date-edit.c:221 widgets/misc/e-dateedit.c:418
-msgid "Now"
-msgstr "Teraz"
-
-#: widgets/misc/e-cell-date-edit.c:245
-msgid "OK"
-msgstr "OK"
-
-#: widgets/misc/e-cell-date-edit.c:726
-#, c-format
-msgid "The time must be in the format: %s"
-msgstr "Èas musí by» vo formáte: %s"
-
-#: widgets/misc/e-clipped-label.c:112
-msgid "..."
-msgstr "..."
-
-#: widgets/misc/e-filter-bar.c:168
-msgid "Save Search"
-msgstr "Ulo¾i» hµadanie"
-
-#: widgets/misc/e-filter-bar.c:239
-msgid "Advanced Search"
-msgstr "Pokroèilé hµadanie"
-
-#: widgets/misc/e-filter-bar.h:101
-msgid "Save As..."
-msgstr "Ulo¾i» ako..."
-
-#: widgets/misc/e-filter-bar.h:102
-msgid "Show All"
-msgstr "Zobrazi» v¹etko"
-
-#: widgets/misc/e-filter-bar.h:103
-msgid "Edit..."
-msgstr "Upravi»..."
-
-#: widgets/misc/e-filter-bar.h:104
-msgid "Advanced..."
-msgstr "Pokroèilé..."
-
-#: widgets/misc/e-messagebox.c:152
-msgid "Information"
-msgstr "Informácia"
-
-#: widgets/misc/e-messagebox.c:159
-msgid "Warning"
-msgstr "Varovanie"
-
-#: widgets/misc/e-messagebox.c:173
-msgid "Question"
-msgstr "Otázka"
-
-#: widgets/misc/e-messagebox.c:180
-msgid "Message"
-msgstr "Správa"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:224
-msgid "Don't show this message again."
-msgstr "Túto správu u¾ nezobrazova»."
-
-#: widgets/misc/e-search-bar.c:155
-msgid "Sear_ch"
-msgstr "_Nájs»"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-msgid "The Personal Addressbook Server"
-msgstr "Osobný adresárový server"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr "Vytváracie rozhranie kalendára pre Osobný kalendárový server."
-
-#: wombat/wombat.c:173
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr "setup_vfs(): Nie je mo¾né inicializova» GNOME"
-
-#: wombat/wombat.c:185
-msgid "init_corba(): could not initialize GNOME"
-msgstr "init_corba(): Nie je mo¾né inicializova» GNOME"
-
-#: wombat/wombat.c:198
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "init_bonobo(): Nie je mo¾né inicializova» Bonobo"
-
diff --git a/po/sl.po b/po/sl.po
deleted file mode 100644
index 77fc9b8e5a..0000000000
--- a/po/sl.po
+++ /dev/null
@@ -1,10648 +0,0 @@
-# Slovenian translation file for Evolution.
-# Copyright (C) 2000 Free Software Foundation, Inc.
-# Andraz Tori <andraz.tori1@guest.arnes.si> 2000
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: evolution\n"
-"POT-Creation-Date: 2001-05-02 11:34+0200\n"
-"PO-Revision-Date: 2000-07-28 03:15+0200\n"
-"Last-Translator: Andraz Tori <andraz.tori1@guest.arnes.si>\n"
-"Language-Team: Slovenian <sl@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-2\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: addressbook/backend/ebook/e-card.c:3209
-msgid "Card: "
-msgstr "Vizitka: "
-
-#: addressbook/backend/ebook/e-card.c:3211
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-"\n"
-"Ime: "
-
-#: addressbook/backend/ebook/e-card.c:3212
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-"\n"
-" Predpona: "
-
-#: addressbook/backend/ebook/e-card.c:3213
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-"\n"
-" Dano: "
-
-#: addressbook/backend/ebook/e-card.c:3214
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-"\n"
-" Dodatno: "
-
-#: addressbook/backend/ebook/e-card.c:3215
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-"\n"
-" Dru¾insko: "
-
-#: addressbook/backend/ebook/e-card.c:3216
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-"\n"
-" Pripona: "
-
-#: addressbook/backend/ebook/e-card.c:3230
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-"\n"
-"Datum rojstva: "
-
-#: addressbook/backend/ebook/e-card.c:3241
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-"\n"
-"Naslov:"
-
-#: addressbook/backend/ebook/e-card.c:3243
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-"\n"
-" Po¹tni predal: "
-
-#: addressbook/backend/ebook/e-card.c:3244
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-"\n"
-" Interna: "
-
-#: addressbook/backend/ebook/e-card.c:3245
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-"\n"
-" Ulica: "
-
-#: addressbook/backend/ebook/e-card.c:3246
-msgid ""
-"\n"
-" City: "
-msgstr ""
-"\n"
-" Mesto: "
-
-#: addressbook/backend/ebook/e-card.c:3247
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-"\n"
-" Regija: "
-
-#: addressbook/backend/ebook/e-card.c:3248
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-"\n"
-" Po¹tna ¹tevilka: "
-
-#: addressbook/backend/ebook/e-card.c:3249
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-"\n"
-" Dr¾ava: "
-
-#: addressbook/backend/ebook/e-card.c:3262
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-"\n"
-"Dostavna oznaka: "
-
-#: addressbook/backend/ebook/e-card.c:3274
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-"\n"
-"Telefoni:\n"
-
-#: addressbook/backend/ebook/e-card.c:3277
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-"\n"
-"Telefon:"
-
-#: addressbook/backend/ebook/e-card.c:3301
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-"\n"
-"E-naslov:\n"
-
-#: addressbook/backend/ebook/e-card.c:3304
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-"\n"
-"E-naslov:"
-
-#: addressbook/backend/ebook/e-card.c:3323
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-"\n"
-"Po¹tni program: "
-
-#: addressbook/backend/ebook/e-card.c:3329
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-"\n"
-"Èasovni pas: "
-
-#: addressbook/backend/ebook/e-card.c:3337
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-"\n"
-"Geografski polo¾aj: "
-
-#: addressbook/backend/ebook/e-card.c:3341
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-"\n"
-"Poslovna vloga: "
-
-#: addressbook/backend/ebook/e-card.c:3353
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-"\n"
-"Organizacija: "
-
-#: addressbook/backend/ebook/e-card.c:3354
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-"\n"
-" Ime: "
-
-#: addressbook/backend/ebook/e-card.c:3355
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-"\n"
-" Enota: "
-
-#: addressbook/backend/ebook/e-card.c:3356
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-"\n"
-" Enota2: "
-
-#: addressbook/backend/ebook/e-card.c:3357
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-"\n"
-" Enota3: "
-
-#: addressbook/backend/ebook/e-card.c:3358
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-"\n"
-" Enota4: "
-
-#: addressbook/backend/ebook/e-card.c:3362
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-"\n"
-"Kategorije: "
-
-#: addressbook/backend/ebook/e-card.c:3363
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-"\n"
-"Komentar: "
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3376
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-"\n"
-"Enolièen niz: "
-
-#: addressbook/backend/ebook/e-card.c:3379
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-"\n"
-"Javni kljuè: "
-
-#: addressbook/backend/ebook/e-destination.c:232
-msgid "???"
-msgstr "???"
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:1
-msgid "Factory to import GnomeCard files into Evolution."
-msgstr "Tovarna uvozov datotek GnomeVizitka v Evolucijo."
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:2
-msgid "Imports GnomeCard files into Evolution."
-msgstr "Uvozi GnomeVizitka datoteke v Evolucijo. "
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:21
-#: addressbook/backend/ebook/load-pine-addressbook.c:22
-#: addressbook/backend/ebook/test-client-list.c:23
-#: addressbook/backend/ebook/test-client.c:33
-#: addressbook/conduit/address-conduit.c:1092
-#: addressbook/gui/component/addressbook-factory.c:42
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:98 calendar/gui/main.c:57
-msgid "Could not initialize Bonobo"
-msgstr "Nisem mogel inicializirati Bonoba"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr "Kazalec se ni mogel nalo¾iti\n"
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr "EKnjiga ni nalo¾ena\n"
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr "Nisem mogel pognati stre¾nika wombat"
-
-#: addressbook/conduit/address-conduit.c:655
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr "Nisem mogel pognati programa wombat"
-
-#: addressbook/conduit/address-conduit.c:687
-#: addressbook/conduit/address-conduit.c:690
-msgid "Could not read pilot's Address application block"
-msgstr "Nisem mogel prebrati Pilotovega adresarja"
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:7
-msgid "Add"
-msgstr "Dodaj"
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr "Ob_letnica:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr "V sl_u¾bi"
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr "Slu¾beni _faks"
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-msgid "C_ontacts..."
-msgstr "_Stiki..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr "Ka_tegorije..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-msgid "Contact Editor"
-msgstr "Urejevalnik stikov"
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr "Podrobnosti"
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr "Zavedi kot:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-msgid "General"
-msgstr "Splo¹no"
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr "Nov tip telefona"
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-msgid "No_tes:"
-msgstr "Opom_be:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr "Tipi telefonov"
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1284
-msgid "Primary Email"
-msgstr "prvi e-naslov"
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr "®eli dobivati _HTML e-po¹to"
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr "Naslov spletne strani:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:74
-msgid "_Add"
-msgstr "_Dodaj"
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr "_Naslov..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr "_Ime pomoènika:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr "_Rojstni dan:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr "_Slu¾beni"
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-msgid "_Company:"
-msgstr "_Podjetje:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/folder-browser.c:639 mail/mail-config.glade.h:75
-#: ui/evolution-event-editor.xml.h:57 ui/evolution-mail.xml.h:98
-#: ui/evolution-task-editor-dialog.xml.h:69
-msgid "_Delete"
-msgstr "_Zbri¹i"
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr "O_ddelek:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr "_Polno Ime..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-msgid "_Home"
-msgstr "_Doma"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-msgid "_Job title:"
-msgstr "Slu¾beni _naziv:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr "Ime _managerja:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-msgid "_Mobile"
-msgstr "_Prenosni telefon"
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr "_Vzdevek:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr "Pi_sarna:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr "_Poklic:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr "_Partner(ka):"
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr "_To je po¹tni naslov"
-
-#: addressbook/contact-editor/e-contact-editor.c:603
-msgid "This contact belongs to these categories:"
-msgstr "Stik pripada sledeèim kategorijam:"
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-#: addressbook/gui/widgets/e-addressbook-view.c:676
-msgid "Assistant"
-msgstr "Pomoènik"
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/contact-editor/e-contact-editor.c:1310
-msgid "Business"
-msgstr "Slu¾ba"
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-msgid "Business 2"
-msgstr "Slu¾ba"
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#: addressbook/gui/widgets/e-addressbook-view.c:656
-msgid "Business Fax"
-msgstr "Slu¾beni faks"
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Callback"
-msgstr "Povratni klic"
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "Car"
-msgstr "Avto"
-
-#: addressbook/contact-editor/e-contact-editor.c:1248
-msgid "Company"
-msgstr "Podjetje"
-
-#: addressbook/contact-editor/e-contact-editor.c:1249
-#: addressbook/contact-editor/e-contact-editor.c:1311
-msgid "Home"
-msgstr "Doma"
-
-#: addressbook/contact-editor/e-contact-editor.c:1250
-msgid "Home 2"
-msgstr "Doma 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1251
-#: addressbook/gui/widgets/e-addressbook-view.c:657
-msgid "Home Fax"
-msgstr "Domaèi faks"
-
-#: addressbook/contact-editor/e-contact-editor.c:1252
-#: addressbook/gui/widgets/e-addressbook-view.c:660
-msgid "ISDN"
-msgstr "ISDN"
-
-#: addressbook/contact-editor/e-contact-editor.c:1253
-msgid "Mobile"
-msgstr "Prenosni telefon"
-
-#: addressbook/contact-editor/e-contact-editor.c:1254
-#: addressbook/contact-editor/e-contact-editor.c:1312
-#: mail/mail-config.glade.h:40
-msgid "Other"
-msgstr "Drugo"
-
-#: addressbook/contact-editor/e-contact-editor.c:1255
-#: addressbook/gui/widgets/e-addressbook-view.c:662
-msgid "Other Fax"
-msgstr "Drugi faks"
-
-#: addressbook/contact-editor/e-contact-editor.c:1256
-#: addressbook/gui/widgets/e-addressbook-view.c:663
-msgid "Pager"
-msgstr "Pozivnik"
-
-#: addressbook/contact-editor/e-contact-editor.c:1257
-msgid "Primary"
-msgstr "Prvi"
-
-#: addressbook/contact-editor/e-contact-editor.c:1258
-#: addressbook/gui/widgets/e-addressbook-view.c:664
-msgid "Radio"
-msgstr "Radijo"
-
-#: addressbook/contact-editor/e-contact-editor.c:1259
-#: addressbook/gui/widgets/e-addressbook-view.c:665
-msgid "Telex"
-msgstr "Teleks"
-
-#: addressbook/contact-editor/e-contact-editor.c:1260
-msgid "TTY/TDD"
-msgstr "TTY/TDD"
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:668
-msgid "Email 2"
-msgstr "E-naslov 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/gui/widgets/e-addressbook-view.c:669
-msgid "Email 3"
-msgstr "E-naslov 3"
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-msgid "Delete Contact?"
-msgstr "Zbri¹i stik?"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:233
-msgid "Contact Quick-Add"
-msgstr "Hitro dodaj stik"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:235
-msgid "Edit Full"
-msgstr "Uredi celoto"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:276
-#: addressbook/gui/widgets/e-addressbook-view.c:643
-msgid "Full Name"
-msgstr "Polno ime"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:282
-msgid "E-mail"
-msgstr "E-po¹ta"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr "Naslov _2:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr "Kanada"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr "Preveri naslov"
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr "Dr¾a_va:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr "Finska"
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr "ZDA"
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr "_Naslov:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-msgid "_City:"
-msgstr "_Mesto:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr "_Po¹tni predal:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr "_Dr¾ava/Provinca:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr "_Po¹tna ¹tevilka:"
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr "Preveri polno ime"
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr "Dr."
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr "Ssq."
-
-#: addressbook/contact-editor/fullname.glade.h:4
-msgid "I"
-msgstr "I"
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr "II"
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr "III"
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr "Ml."
-
-#: addressbook/contact-editor/fullname.glade.h:8
-msgid "Miss"
-msgstr "Gdè."
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr "G."
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr "Ga."
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr "Ga."
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr "St."
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr "_Ime:"
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr "_Priimek:"
-
-#: addressbook/contact-editor/fullname.glade.h:15
-msgid "_Middle:"
-msgstr "_Drugo ime:"
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr "P_ripona:"
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr "_Naziv:"
-
-#: addressbook/gui/component/addressbook.c:241
-msgid "As _Minicards"
-msgstr "Kot _minivizitke"
-
-#: addressbook/gui/component/addressbook.c:247
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr "Kot tabelo"
-
-#: addressbook/gui/component/addressbook.c:399
-#, c-format
-msgid "Enter password for %s"
-msgstr "Vpi¹ite geslo za %s"
-
-#: addressbook/gui/component/addressbook.c:427
-msgid "Unable to open addressbook"
-msgstr "Kliknite tu za odprtje adresarja"
-
-#: addressbook/gui/component/addressbook.c:432
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or have tried\n"
-"to access an LDAP server and don't have LDAP support\n"
-"compiled in. If you've entered a URI, check the URI for\n"
-"correctness and reenter. If not, you probably have\n"
-"attempted to access an LDAP server. If you wish to be\n"
-"able to use LDAP, you'll need to download and install\n"
-"OpenLDAP and recompile and install Evolution.\n"
-msgstr ""
-"Adresarja ni bilo mogoèe odpreti. To lahko pomeni ali\n"
-"da ste vnesli napaèen URI, ali pa posku¹ali dostopati \n"
-"do LDAP stre¾nika brez prevedene LDAP podpore. Èe ste \n"
-"vnesli URI, preverite njegovo pravilnost in ga znova \n"
-"vnesite. Èe ne, ste verjetno posku¹ali dostopati do LDAP \n"
-"stre¾nika. Èe ¾elite uporabljalti LDAP morate nalo¾iti in \n"
-"namestiti OpenLDAP in ponovno prevesti in namestiti Evolucijo. \n"
-
-#: addressbook/gui/component/addressbook.c:555 widgets/misc/e-filter-bar.h:95
-msgid "Show All"
-msgstr "Ka¾i vse"
-
-#: addressbook/gui/component/addressbook.c:557
-msgid "Advanced..."
-msgstr "Napredno..."
-
-#: addressbook/gui/component/addressbook.c:587 calendar/gui/gnome-cal.c:236
-msgid "Any field contains"
-msgstr "Katerokoli polje vsebuje"
-
-#: addressbook/gui/component/addressbook.c:588
-msgid "Name contains"
-msgstr "Ime vsebuje"
-
-#: addressbook/gui/component/addressbook.c:589
-msgid "Email contains"
-msgstr "E-naslov vsebuje"
-
-#: addressbook/gui/component/addressbook.c:732
-msgid "The URI that the Folder Browser will display"
-msgstr "URI, ki naj ga prika¾e brskalnik map"
-
-#: addressbook/gui/component/addressbook-config.c:148
-msgid "LDAP Server"
-msgstr "LDAP stre¾nik"
-
-#: addressbook/gui/component/addressbook-config.c:150
-msgid "File"
-msgstr "Datoteka"
-
-#: addressbook/gui/component/addressbook-config.c:153
-msgid "Unknown addressbook type"
-msgstr "Neznan tip adresarja"
-
-#: addressbook/gui/component/addressbook-config.c:163
-msgid "None (anonymous mode)"
-msgstr "Brez (anonimni naèin)"
-
-#: addressbook/gui/component/addressbook-config.c:165
-#: camel/camel-sasl-plain.c:32 camel/providers/imap/camel-imap-provider.c:80
-#: camel/providers/nntp/camel-nntp-store.c:291
-#: camel/providers/pop3/camel-pop3-provider.c:67 mail/mail-config.glade.h:43
-msgid "Password"
-msgstr "Geslo"
-
-#: addressbook/gui/component/addressbook-config.c:167
-msgid "SASL"
-msgstr "SASL"
-
-#: addressbook/gui/component/addressbook-config.c:170
-msgid "Unknown auth type"
-msgstr "Neznan naèin avtentifikacije"
-
-#: addressbook/gui/component/addressbook-config.c:179
-msgid "Base"
-msgstr "Osnovno"
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "One"
-msgstr "Ena"
-
-#: addressbook/gui/component/addressbook-config.c:183
-msgid "Subtree"
-msgstr "Poddrevo"
-
-#: addressbook/gui/component/addressbook-config.c:186
-msgid "Unknown scope type"
-msgstr "Neznan tip dosega"
-
-#: addressbook/gui/component/addressbook-config.c:353
-msgid "Bind DN:"
-msgstr "Povezan z domeno:"
-
-#: addressbook/gui/component/addressbook-config.c:354
-msgid "FIXME Bind DN Help text here"
-msgstr "FIXME Bind DN Help text here"
-
-#: addressbook/gui/component/addressbook-config.c:356
-#: mail/mail-config.glade.h:50
-msgid "Remember this password"
-msgstr "Zapomni si geslo"
-
-#: addressbook/gui/component/addressbook-config.c:406
-#: mail/mail-config.glade.h:28
-msgid "Host:"
-msgstr "Gostitelj:"
-
-#: addressbook/gui/component/addressbook-config.c:407
-msgid "FIXME Host help text here."
-msgstr "FIXME Host help text here."
-
-#: addressbook/gui/component/addressbook-config.c:409
-msgid "Port:"
-msgstr "Vrata:"
-
-#: addressbook/gui/component/addressbook-config.c:410
-msgid "FIXME Port help text here."
-msgstr "FIXME Port help text here."
-
-#: addressbook/gui/component/addressbook-config.c:414
-msgid "Root DN:"
-msgstr "Kornsko ime domene:"
-
-#: addressbook/gui/component/addressbook-config.c:415
-msgid "FIXME Root DN help text here."
-msgstr "FIXME Root DN help text here."
-
-#: addressbook/gui/component/addressbook-config.c:435
-msgid "Search Scope:"
-msgstr "Doseg iskanja:"
-
-#: addressbook/gui/component/addressbook-config.c:489
-msgid "Authentication:"
-msgstr "Avtentifikacija:"
-
-#: addressbook/gui/component/addressbook-config.c:507
-#: mail/mail-config.glade.h:44
-msgid "Path:"
-msgstr "Pot:"
-
-#: addressbook/gui/component/addressbook-config.c:508
-msgid "FIXME Path Help text here"
-msgstr "FIXME Path help text here"
-
-#: addressbook/gui/component/addressbook-config.c:513
-msgid "Create path if it doesn't exist."
-msgstr "Èe pot ne obstaja jo ustvari."
-
-#: addressbook/gui/component/addressbook-config.c:647
-msgid "Edit Addressbook"
-msgstr "Uredi adresar"
-
-#: addressbook/gui/component/addressbook-config.c:649
-msgid "Add Addressbook"
-msgstr "Dodaj adresar"
-
-#: addressbook/gui/component/addressbook-config.c:665
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-"Izberite tip adresarja, ki ga imate in vnestite potrebne podatke o njem."
-
-#: addressbook/gui/component/addressbook-config.c:671
-#: mail/mail-config.glade.h:35
-msgid "Name:"
-msgstr "Ime:"
-
-#: addressbook/gui/component/addressbook-config.c:672
-msgid "FIXME Name help text here"
-msgstr "FIXME Name help text here"
-
-#: addressbook/gui/component/addressbook-config.c:674
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr "Opis:"
-
-#: addressbook/gui/component/addressbook-config.c:675
-msgid "FIXME Description help text here"
-msgstr "FIXME Description help text here"
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-msgid "Addressbook Sources"
-msgstr "Viri adresarja"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: addressbook/gui/widgets/e-addressbook-view.c:578
-#: addressbook/gui/widgets/e-minicard.c:673
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:11 mail/mail-config.glade.h:19
-#: mail/message-browser.c:203 ui/evolution-addressbook.xml.h:3
-#: ui/evolution-event-editor.xml.h:17 ui/evolution-mail.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr "Zbri¹i"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:23
-msgid "Edit"
-msgstr "Uredi"
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-msgid "Name"
-msgstr "Ime"
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-msgid "URI"
-msgstr "URI"
-
-#: addressbook/gui/component/addressbook-storage.c:99
-msgid "Other Contacts"
-msgstr "Drugo stiki"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Disable Queries"
-msgstr "Izkljuèi poizvedbe"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Enable Queries (Dangerous!)"
-msgstr "Vkljuèi poizvedbe (nevarno!)"
-
-#: addressbook/gui/component/e-address-widget.c:388
-#: addressbook/gui/component/select-names/e-select-names-popup.c:210
-msgid "Edit Contact Info"
-msgstr "Uredi podatke stika"
-
-#: addressbook/gui/component/e-address-widget.c:424
-#: addressbook/gui/component/select-names/e-select-names-popup.c:269
-msgid "Add to Contacts"
-msgstr "Dodaj k stikom"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-msgid "A Bonobo control for an address popup."
-msgstr "Kontrola Bonobo za vznik naslova."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A Bonobo control for displaying an address."
-msgstr "Kontrola Bonobo za prikaz naslova."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr "Vzorèna kontrola Bonobo, ki prika¾e adresar."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr "Kontrola, ki prika¾e mini vizitko iz Evolucijinega adresarja."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-msgid "Evolution Addressbook minicard viewer"
-msgstr "Evolucijin pregledovalnik mini vizitk adresarja"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-msgid "Evolution component for handling contacts."
-msgstr "Evolucijina komponenta za urejanje stikov."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-msgid "Factory for the Addressbook Minicard control"
-msgstr "Tovarna za orodje mini vizitk adresarja"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-msgid "Factory for the Addressbook's address displayer"
-msgstr "Tovarna za prikazovalnik adresarjeve adrese"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-msgid "Factory for the Addressbook's address popup"
-msgstr "Tovarna za Adresarjev vznik naslova"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:10
-msgid "Factory for the Evolution addressbook component."
-msgstr "Tovarna za Evolucijino komponento adresarja."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:11
-msgid "Factory for the sample Addressbook control"
-msgstr "Tovarna za vzorèno kontrolo adresarja"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:131
-#: composer/e-msg-composer-attachment-bar.c:468 filter/filter-filter.c:401
-#: filter/filter-rule.c:549 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:265 shell/e-shortcuts-view.c:388
-msgid "Remove"
-msgstr "Odstrani"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:146
-msgid "Remove All"
-msgstr "Odstrani vse"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-msgid "Evolution's addressbook name selection interface."
-msgstr "Evolucijin vmesnik za izibro imen iz adresarja."
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr "Tovarna Evolucijinih vmesnikov za izbiro imen iz adresarja"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr "Poi¹èi..."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-msgid "Message Recipients"
-msgstr "Prejemniki sporoèila"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-msgid "Select Names"
-msgstr "Izberi imena"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-msgid "Select name from:"
-msgstr "Izberi ime iz:"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:158
-msgid "Search"
-msgstr "Iskanje"
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr "123"
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr "a"
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr "b"
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr "c"
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr "d"
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr "e"
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr "f"
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr "g"
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr "h"
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr "i"
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr "j"
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr "k"
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr "l"
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr "m"
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr "n"
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-msgid "o"
-msgstr "o"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr "p"
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr "q"
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-msgid "r"
-msgstr "r"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr "s"
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr "t"
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr "u"
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr "v"
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr "w"
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr "x"
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr "y"
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr "z"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:513
-#: addressbook/gui/widgets/e-addressbook-view.c:573
-#: addressbook/gui/widgets/e-minicard.c:466
-#: addressbook/gui/widgets/e-minicard.c:668
-msgid "Save as VCard"
-msgstr "Shrani kot vVizitko"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:574
-#: addressbook/gui/widgets/e-minicard.c:669
-msgid "Send contact to other"
-msgstr "Po¹lji stik drugim"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:575
-#: addressbook/gui/widgets/e-minicard.c:670
-msgid "Send message to contact"
-msgstr "Stiku po¹lji sporoèilo"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:576
-#: addressbook/gui/widgets/e-minicard.c:671 mail/message-browser.c:200
-#: ui/evolution-addressbook.xml.h:9 ui/evolution-calendar.xml.h:23
-#: ui/evolution-mail.xml.h:55 ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr "Natisni"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:577
-#: addressbook/gui/widgets/e-minicard.c:672
-msgid "Print Envelope"
-msgstr "Natisni kuverto"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:641
-msgid "* Click here to add a contact *"
-msgstr "* Kliknite tu za dodajo stika *"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:642
-msgid "File As"
-msgstr "Zavedi kot"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:644
-msgid "Email"
-msgstr "E-po¹ta"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:645
-msgid "Primary Phone"
-msgstr "Osnovni telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:646
-msgid "Assistant Phone"
-msgstr "Pomo¾ni telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:647
-msgid "Business Phone"
-msgstr "Slu¾bebni telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:648
-msgid "Callback Phone"
-msgstr "Povratni telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:649
-msgid "Company Phone"
-msgstr "Telefon podjetja"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:650
-msgid "Home Phone"
-msgstr "Domaè telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:651
-msgid "Organization"
-msgstr "Organizacija"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:652
-msgid "Business Address"
-msgstr "Slu¾beni naslov"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:653
-msgid "Home Address"
-msgstr "Domaèi naslov"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:654
-msgid "Mobile Phone"
-msgstr "Prenosni telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:655
-msgid "Car Phone"
-msgstr "Telefon v avtu"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:658
-msgid "Business Phone 2"
-msgstr "Slu¾beni telefon 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:659
-msgid "Home Phone 2"
-msgstr "Domaè telefon 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:661
-msgid "Other Phone"
-msgstr "Drug telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:666
-msgid "TTY"
-msgstr "TTY"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:667
-msgid "Other Address"
-msgstr "Drug naslov"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:670
-msgid "Web Site"
-msgstr "Spletna stran"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:671
-msgid "Department"
-msgstr "Oddelek"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:672
-msgid "Office"
-msgstr "Pisarna"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:673
-msgid "Title"
-msgstr "Naziv"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:674
-msgid "Profession"
-msgstr "Poklic"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:675
-msgid "Manager"
-msgstr "Upravljalec"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:677
-msgid "Nickname"
-msgstr "Vzdevek"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:678
-msgid "Spouse"
-msgstr "Partner(ka)"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:679
-msgid "Note"
-msgstr "Opomba"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:680
-msgid "Free-busy URL"
-msgstr "URL zasedenosti"
-
-#: addressbook/gui/widgets/e-minicard-control.c:282
-msgid "Save in addressbook"
-msgstr "Shranite v adresarju"
-
-#: addressbook/gui/widgets/e-minicard-view.c:166
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-"\n"
-"\n"
-"V tem pogledu ni predmetov za prikaz\n"
-"\n"
-"Èe ¾elite ustvariti nov stik, dvojno kliknite tu.."
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:26
-msgid "Card View"
-msgstr "Pogled vizitke"
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr "10 pik Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr "8 pik Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr "Prazni obrazci na koncu:"
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr "Telo"
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr "Spodaj:"
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr "Mere:"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr "Pisava..."
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr "Pisave"
-
-#: addressbook/printing/e-contact-print.glade.h:9
-msgid "Footer:"
-msgstr "Noga:"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr "Oblika izpisa"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-msgid "Header"
-msgstr "Glava"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr "Glava/noga"
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr "Zaglavja"
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr "Zaglavja za vsako èrko"
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr "Vi¹ina:"
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr "Si sledijo takoj"
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr "Vkljuèi:"
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr "Le¾eèe"
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr "Levo:"
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr "Uhlji èrk ob strani"
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr "Robovi"
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr "©tevilo stolpcev:"
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr "Mo¾nosti"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr "Usmerjenost"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr "Stran"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-msgid "Page Setup:"
-msgstr "Nastavitev strani:"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr "Papir"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr "Vir papirja:"
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr "Pokonèno"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr "Predogled:"
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr "Tiskaj z uporabo sivinskega senèenja"
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr "Obratno na sodih straneh"
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr "Desno:"
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr "Sekcije:"
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr "Senèenje"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-msgid "Size:"
-msgstr "Velikost:"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr "Zaèni na novi strani"
-
-#: addressbook/printing/e-contact-print.glade.h:38
-msgid "Style name:"
-msgstr "Ime sloga:"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr "Zgoraj:"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-msgid "Type:"
-msgstr "Tip:"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr "©irina:"
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr "Napaka ob komuniciranju s stre¾nikom koledarja"
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr "Nisem mogel prebrati Pilotovega koledarja"
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr "Nisem mogel prebrati Pilotovega seznama za-opravit"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr "Opomin na zmenek ob "
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-msgid "Snooze"
-msgstr "Podalj¹ek spanja"
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr "V redu"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr "Storitev opozorilnega alarma"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-msgid "Factory for the alarm notification service"
-msgstr "Tovarna za storitev opozorlinega alarma"
-
-#: calendar/gui/alarm-notify/notify-main.c:56
-#, c-format
-msgid ""
-"It is %s. The Unix time is %ld right now. We just thought you may like to "
-"know."
-msgstr ""
-"Ura je %s. Trenutni Unix èas je %ld. Mislili smo, da bi vas lahko zanimalo."
-
-#: calendar/gui/alarm-notify/notify-main.c:93 calendar/gui/main.c:52
-msgid "Could not initialize GNOME"
-msgstr "Nisem mogel inicializirati GNOMEa"
-
-#: calendar/gui/alarm-notify/notify-main.c:108
-msgid "Could not create the alarm notify service factory"
-msgstr "Nisem mogel ustvariti tovarne opozorilnega alrama"
-
-#: calendar/gui/calendar-commands.c:266
-msgid "File not found"
-msgstr "Datoteke ni mogoèe najti"
-
-#: calendar/gui/calendar-commands.c:290
-msgid "Open calendar"
-msgstr "Odpri koledar"
-
-#: calendar/gui/calendar-commands.c:332
-msgid "Save calendar"
-msgstr "Shrani koledar"
-
-#: calendar/gui/calendar-commands.c:468
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-"Nisem mogel ustvariti pogleda koledarja. Prosim preverite nastavitve ORBit-a "
-"in OAF-a."
-
-#: calendar/gui/calendar-model.c:360 calendar/gui/calendar-model.c:898
-#: calendar/gui/e-calendar-table.c:330
-msgid "Public"
-msgstr "javno"
-
-#: calendar/gui/calendar-model.c:363 calendar/gui/calendar-model.c:900
-#: calendar/gui/e-calendar-table.c:331
-msgid "Private"
-msgstr "osebno"
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:902
-#: calendar/gui/e-calendar-table.c:332
-msgid "Confidential"
-msgstr "zaupno"
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/event-editor.c:1606
-#: calendar/gui/event-editor.c:1633
-#: camel/providers/smtp/camel-smtp-transport.c:218
-msgid "Unknown"
-msgstr "neznano"
-
-#: calendar/gui/calendar-model.c:457
-msgid "N"
-msgstr "N"
-
-#: calendar/gui/calendar-model.c:457
-msgid "S"
-msgstr "S"
-
-#: calendar/gui/calendar-model.c:459
-msgid "E"
-msgstr "E"
-
-#: calendar/gui/calendar-model.c:459
-msgid "W"
-msgstr "W"
-
-#: calendar/gui/calendar-model.c:497 calendar/gui/calendar-model.c:1066
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:352 mail/message-list.c:690
-msgid "High"
-msgstr "visoka"
-
-#: calendar/gui/calendar-model.c:499 calendar/gui/calendar-model.c:1068
-#: calendar/gui/calendar-model.c:1572
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:353 mail/message-list.c:689
-msgid "Normal"
-msgstr "obièajna"
-
-#: calendar/gui/calendar-model.c:501 calendar/gui/calendar-model.c:1070
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:354 mail/message-list.c:688
-msgid "Low"
-msgstr "nizka"
-
-#: calendar/gui/calendar-model.c:537 calendar/gui/calendar-model.c:1122
-#: calendar/gui/e-calendar-table.c:406
-msgid "Transparent"
-msgstr "Prozorno"
-
-#: calendar/gui/calendar-model.c:540 calendar/gui/calendar-model.c:1124
-#: calendar/gui/e-calendar-table.c:405
-msgid "Opaque"
-msgstr "Prosojno"
-
-#: calendar/gui/calendar-model.c:638 calendar/gui/calendar-model.c:1176
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:426
-msgid "Not Started"
-msgstr "ni prièeto"
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1178
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:427
-msgid "In Progress"
-msgstr "v teku"
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1180
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:428
-msgid "Completed"
-msgstr "konèano"
-
-#: calendar/gui/calendar-model.c:647 calendar/gui/calendar-model.c:1182
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:429 camel/camel-service.c:544
-#: camel/camel-service.c:580
-msgid "Cancelled"
-msgstr "preklicano"
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:794 e-util/e-time-utils.c:278
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr "%a %d/%m/%Y %H:%M:%S"
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:797 e-util/e-time-utils.c:287
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr "%a %d/%m/%Y %I:%M:%S %p"
-
-#: calendar/gui/calendar-model.c:802
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-"Datum mora biti vpisan v obliki: \n"
-"\n"
-"%s"
-
-#: calendar/gui/calendar-model.c:882
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr "Uvrstitev mora biti 'Javno', 'Zastebno', 'Zaupno' ali 'Brez'"
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:896 calendar/gui/calendar-model.c:1120
-#: calendar/gui/calendar-model.c:1174 calendar/gui/e-calendar-table.c:329
-#: calendar/gui/e-calendar-table.c:404 mail/mail-account-gui.c:973
-#: mail/mail-accounts.c:120 mail/mail-accounts.c:164
-#: mail/mail-config.glade.h:37 shell/e-shell-view.c:1179
-#: widgets/misc/e-cell-date-edit.c:237 widgets/misc/e-dateedit.c:432
-#: widgets/misc/e-dateedit.c:1341 widgets/misc/e-dateedit.c:1456
-msgid "None"
-msgstr "brez"
-
-#: calendar/gui/calendar-model.c:970
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-"Zemljepisna lega mora biti zapisana v obliki: \n"
-"\n"
-"45.436845,125.862501"
-
-#: calendar/gui/calendar-model.c:1010
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr "Vrednost v procentih mora biti med vkljuèno 0 in 100"
-
-#: calendar/gui/calendar-model.c:1051
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr "Prioriteta mora biti 'Visoka', 'Obièajna', 'Nizka' ali 'Nedefinirana'."
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1064
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:355
-msgid "Undefined"
-msgstr "ni definirana"
-
-#: calendar/gui/calendar-model.c:1105
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr "Prosojnost mora biti 'Prozorno', 'Prosojno' ali 'Brez'."
-
-#: calendar/gui/calendar-model.c:1574
-msgid "Recurring"
-msgstr "Ponovi se"
-
-#: calendar/gui/calendar-model.c:1576
-msgid "Assigned"
-msgstr "Doloèena"
-
-#: calendar/gui/calendar-model.c:1582
-msgid "Yes"
-msgstr "Da"
-
-#: calendar/gui/calendar-model.c:1582
-msgid "No"
-msgstr "Ne"
-
-#: calendar/gui/calendar-summary.c:198
-msgid "%A, %e %B %Y"
-msgstr "%A, %e %B %Y"
-
-#: calendar/gui/calendar-summary.c:207
-msgid "Appointments"
-msgstr "Zmeneki"
-
-#: calendar/gui/calendar-summary.c:245 calendar/gui/calendar-summary.c:251
-msgid "%I:%M%p"
-msgstr "%I:%M%p"
-
-#: calendar/gui/calendar-summary.c:275 calendar/gui/print.c:948
-#: views/tasks/galview.xml.h:1
-msgid "Tasks"
-msgstr "Naloge"
-
-#: calendar/gui/calendar-summary.c:443
-msgid "<b>Error loading calendar</b>"
-msgstr "<b>Napaka ob nalaganju koledarja</b>"
-
-#: calendar/gui/calendar-summary.c:455
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr "<b>Napaka ob nalaganju koledarja: <br>Postopek ni podprt"
-
-#: calendar/gui/calendar-summary.c:622
-msgid "Display"
-msgstr "Prikaz"
-
-#: calendar/gui/calendar-summary.c:627
-msgid "Show appointments"
-msgstr "Ka¾i zmenke"
-
-#: calendar/gui/calendar-summary.c:635
-msgid "Show tasks"
-msgstr "Ka¾i posle"
-
-#: calendar/gui/calendar-summary.c:690
-msgid "Things to do"
-msgstr "Stvari za opravit"
-
-#: calendar/gui/calendar-summary.c:721 calendar/gui/e-itip-control.glade.h:7
-msgid "Loading Calendar"
-msgstr "Nalagam koledar"
-
-#: calendar/gui/control-factory.c:126
-msgid "The URI that the calendar will display"
-msgstr "URI, ki naj ga prika¾e brskalnik map"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:189
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr "Alarm na %A %d %b %Y ob %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:196
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr "Obvestilo o va¹em zmenku na %A %d %b %Y ob %H:%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:207
-msgid "No summary available."
-msgstr "Povzetek ni na voljo."
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:2
-msgid "Close"
-msgstr "Zapri"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-msgid "Edit appointment"
-msgstr "Uredi zmenek"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr "Èas podalj¹ka spanja (minut)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr "05 minut"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr "10 minut"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr "12 urna (dop./pop.)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr "15 minut"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr "24 urna"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr "30 minut"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr "60 minut"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr "Alarmi preteèejo èez"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr "Zvoèni alarmi"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr "Pozvoni, ko se poka¾ejo okna alarmov."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-msgid "Calendar"
-msgstr "Koledar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr "Nastavitve koledarja"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "Barve"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr "Skrèi vikende"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr "Mo¾nosti navigatorja datumov"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-msgid "Defaults"
-msgstr "Privzeto"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr "Poka¾i mo¾nosti"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:162
-msgid "Due Date"
-msgstr "Do datuma"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr "Omogoèi podalj¹anje spanja za"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr "Konec dneva:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr "Prvi dan tedna:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr "pet"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:484
-msgid "Friday"
-msgstr "petek"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr "Osvetli"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr "Predmeti z dana¹njim rokom"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr "Predmeti z rokom danes:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr "Predmeti z rokom v prihodnosti"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr "Predmeti z rokom v prihodnosti:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr "pon"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:480
-msgid "Monday"
-msgstr "ponedeljek"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr "Predmeti s prekoraèenim rokom"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr "Predmeti s prekoraèenim rokom:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:45
-msgid "Pick a color"
-msgstr "Izberi barvo"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:165
-msgid "Priority"
-msgstr "Prioriteta"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-msgid "Remind me of all appointments"
-msgstr "Opomni me na vse zmenke"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-msgid "Reminders"
-msgstr "Opozorila"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr "sob"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:485
-msgid "Saturday"
-msgstr "sobota"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr "Ka¾i"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-msgid "Show appointment end times"
-msgstr "Ka¾i èase koncev zmenkov"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr "Ka¾i ¹tevilke tednov"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr "Zaèetek dneva:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr "ned"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:486
-msgid "Sunday"
-msgstr "nedeljo"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-msgid "TaskPad"
-msgstr "Naloge"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr "èet"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:483
-msgid "Thursday"
-msgstr "èetrtek"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr "Èas do preteka"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr "Èasovne delitve:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr "Oblika izpisa èasa:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr "tor"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:481
-msgid "Tuesday"
-msgstr "torek"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr "Vidni alarmi"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr "sre"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:482
-msgid "Wednesday"
-msgstr "sreda"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr "Delavni teden"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr "minut preden se zgodijo."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:78
-msgid "seconds."
-msgstr "sekund."
-
-#: calendar/gui/dialogs/delete-comp.c:70
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr "Ste preprièani, da ¾elite zbrisati ta zmenek `%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:73
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr "Ste preprièani, ¾elite zbrisati ta neimenovan zmenek?"
-
-#: calendar/gui/dialogs/delete-comp.c:79
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr "Ste preprièani, da ¾elite zbrisati posel `%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:82
-msgid "Are you sure you want to delete this untitled task?"
-msgstr "Ste preprièani, da ¾elite zbrisati ta neimenovan posel?"
-
-#: calendar/gui/dialogs/delete-comp.c:88
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr "Ste preprièani, da ¾elite zbrisati dnevni¹ki vpis `%s'?"
-
-#: calendar/gui/dialogs/delete-comp.c:91
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr "Ste preprièani, da ¾elite izbrisati ta neimenovan dnevni¹ki vpis?"
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr "®elite shraniti spremembe"
-
-#: calendar/gui/dialogs/task-editor.c:707
-msgid "Edit Task"
-msgstr "Uredi nalogo"
-
-#: calendar/gui/dialogs/task-editor.c:713 calendar/gui/event-editor.c:382
-msgid "No summary"
-msgstr "Ni povzetka"
-
-#: calendar/gui/dialogs/task-editor.c:719 calendar/gui/event-editor.c:388
-#, c-format
-msgid "Appointment - %s"
-msgstr "Zmenek - %s"
-
-#: calendar/gui/dialogs/task-editor.c:722 calendar/gui/event-editor.c:391
-#, c-format
-msgid "Task - %s"
-msgstr "Naloga - %s"
-
-#: calendar/gui/dialogs/task-editor.c:725 calendar/gui/event-editor.c:394
-#, c-format
-msgid "Journal entry - %s"
-msgstr "Vpis v dnevniku - %s"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr "% konèa_no:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:158
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr "Uvrstitev"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-msgid "Date & Time"
-msgstr "Datum in ura"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr "Konèano dne:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-msgid "Pri_vate"
-msgstr "Pri_vatno"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-msgid "Progress"
-msgstr "Napredek"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr "_Javno"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-msgid "Sta_rt Date:"
-msgstr "Datum _prièetka:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-msgid "Su_mmary:"
-msgstr "_Povzetek:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr "Naloga"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-msgid "URL:"
-msgstr "URL:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr "_Zaupno"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Contacts..."
-msgstr "_Stiki..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-msgid "_Due Date:"
-msgstr "_Do datuma:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-msgid "_Priority:"
-msgstr "_Prioriteta:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "_Status:"
-msgstr "_Stanje:"
-
-#: calendar/gui/e-calendar-table.c:157
-msgid "Categories"
-msgstr "kategorije"
-
-#: calendar/gui/e-calendar-table.c:159
-msgid "Completion Date"
-msgstr "Datum zakljuèka"
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "End Date"
-msgstr "Datum konca"
-
-#: calendar/gui/e-calendar-table.c:161
-msgid "Start Date"
-msgstr "Datum prièetka"
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Geographical Position"
-msgstr "Zemljepisna lega"
-
-#: calendar/gui/e-calendar-table.c:164
-msgid "Percent complete"
-msgstr "Procentov opravljeno"
-
-#: calendar/gui/e-calendar-table.c:166
-msgid "Summary"
-msgstr "Povzetek"
-
-#: calendar/gui/e-calendar-table.c:167
-msgid "Transparency"
-msgstr "Prosojnost"
-
-#: calendar/gui/e-calendar-table.c:168
-msgid "URL"
-msgstr "URL"
-
-#: calendar/gui/e-calendar-table.c:169
-msgid "Alarms"
-msgstr "Alarmi"
-
-#: calendar/gui/e-calendar-table.c:170
-msgid "Click here to add a task"
-msgstr "Kliknite tu za dodajo opravila"
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "0%"
-msgstr "0%"
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "10%"
-msgstr "10%"
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "20%"
-msgstr "20%"
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "30%"
-msgstr "30%"
-
-#: calendar/gui/e-calendar-table.c:378
-#, c-format
-msgid "40%"
-msgstr "40%"
-
-#: calendar/gui/e-calendar-table.c:379
-#, c-format
-msgid "50%"
-msgstr "50%"
-
-#: calendar/gui/e-calendar-table.c:380
-#, c-format
-msgid "60%"
-msgstr "60%"
-
-#: calendar/gui/e-calendar-table.c:381
-#, c-format
-msgid "70%"
-msgstr "70%"
-
-#: calendar/gui/e-calendar-table.c:382
-#, c-format
-msgid "80%"
-msgstr "80%"
-
-#: calendar/gui/e-calendar-table.c:383
-#, c-format
-msgid "90%"
-msgstr "90%"
-
-#: calendar/gui/e-calendar-table.c:384
-#, c-format
-msgid "100%"
-msgstr "100%"
-
-#: calendar/gui/e-calendar-table.c:551
-msgid "Mark Complete"
-msgstr "Oznaèi kot opravljeno"
-
-#: calendar/gui/e-calendar-table.c:552
-msgid "Mark the task complete"
-msgstr "Oznaèi nalogo kot opravljeno"
-
-#: calendar/gui/e-calendar-table.c:557
-msgid "Edit this task..."
-msgstr "Uredi to opravilo..."
-
-#: calendar/gui/e-calendar-table.c:558
-msgid "Edit the task"
-msgstr "Uredi opravilo"
-
-#: calendar/gui/e-calendar-table.c:560
-#: ui/evolution-task-editor-dialog.xml.h:19
-msgid "Delete this task"
-msgstr "Zbri¹i to nalogo"
-
-#: calendar/gui/e-calendar-table.c:561
-msgid "Delete the task"
-msgstr "Zbri¹i nalogo"
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:570 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:617
-msgid "am"
-msgstr "dop"
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:573 calendar/gui/e-week-view.c:303
-#: calendar/gui/print.c:616
-msgid "pm"
-msgstr "pop"
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:274 calendar/gui/e-day-view.c:1294
-#: calendar/gui/e-week-view-main-item.c:325
-msgid "%A %d %B"
-msgstr "%A %d %B"
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:278 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:334
-msgid "%a %d %b"
-msgstr "%a %d %b"
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:282 calendar/gui/e-day-view.c:1321
-#: calendar/gui/e-week-view-main-item.c:348
-msgid "%d %b"
-msgstr "%d %b"
-
-#: calendar/gui/e-day-view.c:3146 ui/evolution-calendar.xml.h:16
-msgid "New Appointment"
-msgstr "Nov zmenek"
-
-#: calendar/gui/e-day-view.c:3148 calendar/gui/e-week-view.c:3280
-msgid "New All Day Event"
-msgstr "Nov celodnevni dogodek"
-
-#: calendar/gui/e-day-view.c:3153 calendar/gui/e-week-view.c:3285
-msgid "Go to Today"
-msgstr "Pojdi na danes"
-
-#: calendar/gui/e-day-view.c:3155 calendar/gui/e-week-view.c:3287
-msgid "Go to Date..."
-msgstr "Pojdi na datum..."
-
-#: calendar/gui/e-day-view.c:3162 calendar/gui/e-week-view.c:3293
-#: ui/evolution-calendar.xml.h:19 ui/evolution-message-composer.xml.h:10
-msgid "Open"
-msgstr "Odpri"
-
-#: calendar/gui/e-day-view.c:3164 calendar/gui/e-week-view.c:3295
-msgid "Delete this Appointment"
-msgstr "Zbri¹i ta zmenek"
-
-#: calendar/gui/e-day-view.c:3166 calendar/gui/e-week-view.c:3297
-#: ui/evolution-event-editor.xml.h:45
-msgid "Schedule Meeting"
-msgstr "Naèrtuj sestanek"
-
-#: calendar/gui/e-day-view.c:3175 calendar/gui/e-week-view.c:3310
-msgid "Make this Occurrence Movable"
-msgstr "Naredi to pojavitev prestavljivo"
-
-#: calendar/gui/e-day-view.c:3177 calendar/gui/e-week-view.c:3312
-msgid "Delete this Occurrence"
-msgstr "Zbri¹i to pojavitev"
-
-#: calendar/gui/e-day-view.c:3179
-msgid "Delete all Occurrences"
-msgstr "Zbri¹i vse pojavitve"
-
-#: calendar/gui/e-day-view-time-item.c:519
-#, c-format
-msgid "%02i minute divisions"
-msgstr "%02i deljenj minute"
-
-#: calendar/gui/e-itip-control.c:161
-msgid "I couldn't update your calendar file!\n"
-msgstr "Nisem mogel posodobiti va¹ege datoteeke koledarja!\n"
-
-#: calendar/gui/e-itip-control.c:167 calendar/gui/e-itip-control.c:510
-msgid "Component successfully updated."
-msgstr "Komponenta je bila uspe¹no posodobljena."
-
-#: calendar/gui/e-itip-control.c:173
-msgid "There was an error loading the calendar file."
-msgstr "Napaka ob nalaganju datoteke koledarja."
-
-#: calendar/gui/e-itip-control.c:197
-msgid "I couldn't open your calendar file!\n"
-msgstr "Nisem mogel odpreti datoteke koledarja!\n"
-
-#: calendar/gui/e-itip-control.c:458 calendar/gui/e-itip-control.c:529
-msgid "I couldn't load your calendar file!\n"
-msgstr "Nisem mogel nalo¾iti va¹ege datoteke koledarja!\n"
-
-#: calendar/gui/e-itip-control.c:470
-msgid "I couldn't read your calendar file!\n"
-msgstr "Nisem mogel prebrati datoteke va¹ega koledarja!\n"
-
-#: calendar/gui/e-itip-control.c:483
-msgid "This is a reply from someone who was uninvited!"
-msgstr "To je odgovor nekoga, ki ni bil povabljen!"
-
-#: calendar/gui/e-itip-control.c:499
-msgid "I couldn't update your calendar store."
-msgstr "Nisem mogel posodobiti va¹e shrambe koledarja."
-
-#: calendar/gui/e-itip-control.c:540
-msgid "I couldn't delete the calendar component!\n"
-msgstr "Nisem mogel zbriati komponente koledarja!\n"
-
-#: calendar/gui/e-itip-control.c:550
-msgid "Component successfully deleted."
-msgstr "Komponenta uspe¹no zbrisana."
-
-#: calendar/gui/e-itip-control.c:694
-msgid "I don't recognize this type of calendar component."
-msgstr "Ne preoznam te vrste komponente koledarja."
-
-#: calendar/gui/e-itip-control.c:780
-msgid "Add to Calendar"
-msgstr "Dodaj _koledarju"
-
-#: calendar/gui/e-itip-control.c:814
-msgid " Accept "
-msgstr " Sprejmi "
-
-#: calendar/gui/e-itip-control.c:815
-msgid " Decline "
-msgstr " Zavrni "
-
-#: calendar/gui/e-itip-control.c:816
-msgid " Tentative "
-msgstr " Poskusno "
-
-#: calendar/gui/e-itip-control.c:860
-msgid "Update Calendar"
-msgstr "Posodobi koledar"
-
-#: calendar/gui/e-itip-control.c:883
-msgid "Cancel Meeting"
-msgstr "Preklièi sestanek"
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, no-c-format
-msgid "%P %%"
-msgstr "%P %%"
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr "--za--"
-
-#: calendar/gui/e-itip-control.glade.h:4
-msgid "Calendar Message"
-msgstr "Sporoèilo koledarja"
-
-#: calendar/gui/e-itip-control.glade.h:5 mail/mail-format.c:623
-msgid "Date:"
-msgstr "Datum:"
-
-#: calendar/gui/e-itip-control.glade.h:8
-msgid "Loading calendar..."
-msgstr "Nalagam koledar..."
-
-#: calendar/gui/e-itip-control.glade.h:9
-msgid "Organizer:"
-msgstr "Organizator:"
-
-#: calendar/gui/e-itip-control.glade.h:10
-msgid "Server Message:"
-msgstr "Sporoèilo stre¾nika:"
-
-#: calendar/gui/e-itip-control.glade.h:11
-msgid "Summary:"
-msgstr "Povzetek:"
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr "konèni-datum"
-
-#: calendar/gui/e-itip-control.glade.h:13
-msgid "date-start"
-msgstr "zaèetni-datum"
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-msgid "Attendee"
-msgstr "Udele¾en"
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-msgid "Attendee address"
-msgstr "Naslov udele¾enca"
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-msgid "Attendees: "
-msgstr "Udele¾eni:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr ""
-"Preklièi\n"
-"sestanek"
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-msgid "Chair"
-msgstr "Stol"
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-msgid "Meeting Invitations"
-msgstr "Povabila na sestanek"
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr "Ne-sodelujoèi"
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr "Mo¾ni sodelujoèi"
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-msgid "Organizer: "
-msgstr "Organizator: "
-
-#: calendar/gui/e-meeting-dialog.glade.h:14
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-"Objavi\n"
-"dogodek"
-
-#: calendar/gui/e-meeting-dialog.glade.h:16
-msgid "RSVP"
-msgstr "RSVP"
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid ""
-"Request\n"
-"Meeting"
-msgstr ""
-"Zahtevaj\n"
-"sestanek"
-
-#: calendar/gui/e-meeting-dialog.glade.h:19
-msgid "Required Participant"
-msgstr "Potrebni udele¾enci"
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-msgid "Role"
-msgstr "Vloga"
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-msgid ""
-"Schedule\n"
-"Time"
-msgstr ""
-"Naèrtuj\n"
-"èas"
-
-#: calendar/gui/e-meeting-dialog.glade.h:23 filter/libfilter-i18n.h:49
-#: mail/message-list.c:1082
-msgid "Status"
-msgstr "Stanje"
-
-#: calendar/gui/e-tasks.c:149 calendar/gui/e-tasks.c:469
-#: calendar/gui/e-tasks.c:502
-msgid "All"
-msgstr "Vse"
-
-#: calendar/gui/e-tasks.c:155
-msgid "Category:"
-msgstr "Kategorija:"
-
-#: calendar/gui/e-tasks.c:298
-#, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "Nisem mogel nalo¾iti poslov v `%s'"
-
-#: calendar/gui/e-tasks.c:310
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr "Postopek potreben za nalo¾itev `%s' ni podprt"
-
-#: calendar/gui/event-editor.c:376
-msgid "Edit Appointment"
-msgstr "Uredi zmenek"
-
-#: calendar/gui/event-editor.c:454
-msgid "on"
-msgstr "na"
-
-#: calendar/gui/event-editor.c:479 filter/filter-datespec.c:81
-msgid "day"
-msgstr "dan"
-
-#: calendar/gui/event-editor.c:606
-msgid "on the"
-msgstr "na"
-
-#: calendar/gui/event-editor.c:613
-msgid "th"
-msgstr "4."
-
-#: calendar/gui/event-editor.c:759
-msgid "occurrences"
-msgstr "pojavitve"
-
-#: calendar/gui/event-editor.c:876
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr "Ta zmenek vsebuje pojavitve, ki jih Evolucija ne zna urejati."
-
-#: calendar/gui/event-editor.c:1548
-#, c-format
-msgid " %d days"
-msgstr " %d dni"
-
-#: calendar/gui/event-editor.c:1550
-msgid " 1 day"
-msgstr " 1 dan"
-
-#: calendar/gui/event-editor.c:1553
-#, c-format
-msgid " %d weeks"
-msgstr " %d tedenov"
-
-#: calendar/gui/event-editor.c:1555
-msgid " 1 week"
-msgstr " 1 teden"
-
-#: calendar/gui/event-editor.c:1558
-#, c-format
-msgid " %d hours"
-msgstr " %d ur"
-
-#: calendar/gui/event-editor.c:1560
-msgid " 1 hour"
-msgstr " 1 ura"
-
-#: calendar/gui/event-editor.c:1563
-#, c-format
-msgid " %d minutes"
-msgstr " %d minut"
-
-#: calendar/gui/event-editor.c:1565
-msgid " 1 minute"
-msgstr " 1 minuta"
-
-#: calendar/gui/event-editor.c:1568
-#, c-format
-msgid " %d seconds"
-msgstr " %d sekund"
-
-#: calendar/gui/event-editor.c:1570
-msgid " 1 second"
-msgstr " 1 sekunda"
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1593
-msgid "Play a sound"
-msgstr "Predvajaj zvok"
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1596
-msgid "Show a dialog"
-msgstr "Ka¾i dialog"
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1599
-msgid "Send an email"
-msgstr "Po¹lji e-po¹to"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1602
-msgid "Run a program"
-msgstr "Po¾eni program"
-
-#: calendar/gui/event-editor.c:1617
-msgid " before start of appointment"
-msgstr " pred prièetkom zmenka"
-
-#: calendar/gui/event-editor.c:1619
-msgid " after start of appointment"
-msgstr " po prièetku zmenka"
-
-#: calendar/gui/event-editor.c:1627
-msgid " before end of appointment"
-msgstr " pred koncem zmenka"
-
-#: calendar/gui/event-editor.c:1629
-msgid " after end of appointment"
-msgstr " po koncu zmenka"
-
-#: calendar/gui/event-editor.c:3137 calendar/gui/print.c:1097
-#: calendar/gui/print.c:1099 calendar/gui/print.c:1100
-msgid "%a %b %d %Y"
-msgstr "%a %d %b %Y"
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr "_Celodnevni dogodek"
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-msgid "Appointment"
-msgstr "Zmenek"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-msgid "Appointment Basics"
-msgstr "Osnove zmenkov"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-msgid "Custom recurrence"
-msgstr "Ponovitev po meri"
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr "Vsak"
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-msgid "Exceptions"
-msgstr "Izjeme"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-msgid "Modify"
-msgstr "Spremeni"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-msgid "No recurrence"
-msgstr "Ni ponovitev"
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-msgid "Preview"
-msgstr "Predogled"
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Recurrence"
-msgstr "Ponovitev"
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-msgid "Recurrence Rule"
-msgstr "Pravilo ponovitev"
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-msgid "Reminder"
-msgstr "Opozorilo"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-msgid "Settings..."
-msgstr "Nastavitve..."
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr "Enostavna ponovitev"
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-msgid "_End time:"
-msgstr "_Èas konca:"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Start time:"
-msgstr "_Èas prièetka:"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Starting date:"
-msgstr "Datum _prièetka:"
-
-#. Automatically generated. Do not edit.
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:2
-msgid "after"
-msgstr "po"
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:6
-msgid "before"
-msgstr "pred"
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "day(s)"
-msgstr "dni"
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-msgid "end of appointment"
-msgstr "konec zmenka"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "for"
-msgstr "za"
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr "vseskozi"
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-msgid "hour(s)"
-msgstr "ur"
-
-#: calendar/gui/event-editor-dialog.glade.h:40 mail/mail-config.glade.h:77
-msgid "minute(s)"
-msgstr "minut"
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "month(s)"
-msgstr "mesec"
-
-#: calendar/gui/event-editor-dialog.glade.h:42
-msgid "start of appointment"
-msgstr "prièetek zmenka"
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-msgid "until"
-msgstr "do"
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "week(s)"
-msgstr "tednov"
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "year(s)"
-msgstr "let"
-
-#: calendar/gui/e-week-view.c:3278 calendar/gui/e-week-view.c:3301
-msgid "New Appointment..."
-msgstr "Nov zmenek..."
-
-#: calendar/gui/e-week-view.c:3314
-msgid "Delete All Occurrences"
-msgstr "Zbri¹i vse pojavitve"
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:342
-msgid "%d %B"
-msgstr "%d %B"
-
-#: calendar/gui/gnome-cal.c:223
-msgid "Show all "
-msgstr "Ka¾i vse "
-
-#: calendar/gui/gnome-cal.c:237
-msgid "Summary contains"
-msgstr "Povzetek vsebuje"
-
-#: calendar/gui/gnome-cal.c:238
-msgid "Description contains"
-msgstr "Opis vsebuje"
-
-#: calendar/gui/gnome-cal.c:239
-msgid "Comment contains"
-msgstr "Komentar vsebuje"
-
-#: calendar/gui/gnome-cal.c:240
-msgid "Has category"
-msgstr "Ima kategorijo"
-
-#: calendar/gui/gnome-cal.c:843
-#, c-format
-msgid "Could not open the folder in `%s'"
-msgstr "Nisem mogel odpreti imenika v `%s'"
-
-#: calendar/gui/gnome-cal.c:854
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr "Postopek potreben za nalo¾itev `%s' ni podprt"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr "Kontrola Bonobo, ki prika¾e koledar."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-msgid "Evolution calendar executive summary component."
-msgstr "Evolucijina komponenta za povzetke."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr "Evolucijin pregledovalnik iTip/iMip"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr "Komponenta Evolucije za urejanje koledarja."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-msgid "Factory for the Calendar Summary component."
-msgstr "Tovarna komponent za povzetke koledarja."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-msgid "Factory for the Evolution calendar component."
-msgstr "Tovarna komponent Evolucije za urejanje koledarja."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-msgid "Factory for the calendar iTip view control"
-msgstr "Tvoarna za orodje koledarja iTip"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-msgid "Factory for the sample Calendar control"
-msgstr "Vzorèna tovarna za kontrolo koledarja"
-
-#: calendar/gui/goto-dialog.glade.h:1
-msgid "April"
-msgstr "april"
-
-#: calendar/gui/goto-dialog.glade.h:2
-msgid "August"
-msgstr "avgust"
-
-#: calendar/gui/goto-dialog.glade.h:3
-msgid "December"
-msgstr "december"
-
-#: calendar/gui/goto-dialog.glade.h:4
-msgid "February"
-msgstr "februar"
-
-#: calendar/gui/goto-dialog.glade.h:5
-msgid "Go To Date"
-msgstr "Pojdi na datum"
-
-#: calendar/gui/goto-dialog.glade.h:6
-msgid "Go To Today"
-msgstr "Pojdi na danes"
-
-#: calendar/gui/goto-dialog.glade.h:7
-msgid "January"
-msgstr "januar"
-
-#: calendar/gui/goto-dialog.glade.h:8
-msgid "July"
-msgstr "julij"
-
-#: calendar/gui/goto-dialog.glade.h:9
-msgid "June"
-msgstr "junij"
-
-#: calendar/gui/goto-dialog.glade.h:10
-msgid "March"
-msgstr "marec"
-
-#: calendar/gui/goto-dialog.glade.h:11
-msgid "May"
-msgstr "maj"
-
-#: calendar/gui/goto-dialog.glade.h:12
-msgid "November"
-msgstr "november"
-
-#: calendar/gui/goto-dialog.glade.h:13
-msgid "October"
-msgstr "oktober"
-
-#: calendar/gui/goto-dialog.glade.h:14
-msgid "September"
-msgstr "september"
-
-#: calendar/gui/print.c:300
-msgid "1st"
-msgstr "1."
-
-#: calendar/gui/print.c:300
-msgid "2nd"
-msgstr "2."
-
-#: calendar/gui/print.c:300
-msgid "3rd"
-msgstr "3."
-
-#: calendar/gui/print.c:300
-msgid "4th"
-msgstr "4."
-
-#: calendar/gui/print.c:300
-msgid "5th"
-msgstr "5."
-
-#: calendar/gui/print.c:301
-msgid "6th"
-msgstr "6."
-
-#: calendar/gui/print.c:301
-msgid "7th"
-msgstr "7."
-
-#: calendar/gui/print.c:301
-msgid "8th"
-msgstr "8."
-
-#: calendar/gui/print.c:301
-msgid "9th"
-msgstr "9."
-
-#: calendar/gui/print.c:301
-msgid "10th"
-msgstr "10."
-
-#: calendar/gui/print.c:302
-msgid "11th"
-msgstr "11."
-
-#: calendar/gui/print.c:302
-msgid "12th"
-msgstr "12."
-
-#: calendar/gui/print.c:302
-msgid "13th"
-msgstr "13."
-
-#: calendar/gui/print.c:302
-msgid "14th"
-msgstr "14."
-
-#: calendar/gui/print.c:302
-msgid "15th"
-msgstr "15."
-
-#: calendar/gui/print.c:303
-msgid "16th"
-msgstr "16."
-
-#: calendar/gui/print.c:303
-msgid "17th"
-msgstr "17."
-
-#: calendar/gui/print.c:303
-msgid "18th"
-msgstr "18."
-
-#: calendar/gui/print.c:303
-msgid "19th"
-msgstr "19."
-
-#: calendar/gui/print.c:303
-msgid "20th"
-msgstr "20."
-
-#: calendar/gui/print.c:304
-msgid "21st"
-msgstr "21."
-
-#: calendar/gui/print.c:304
-msgid "22nd"
-msgstr "22."
-
-#: calendar/gui/print.c:304
-msgid "23rd"
-msgstr "23."
-
-#: calendar/gui/print.c:304
-msgid "24th"
-msgstr "24."
-
-#: calendar/gui/print.c:304
-msgid "25th"
-msgstr "25."
-
-#: calendar/gui/print.c:305
-msgid "26th"
-msgstr "26."
-
-#: calendar/gui/print.c:305
-msgid "27th"
-msgstr "27."
-
-#: calendar/gui/print.c:305
-msgid "28th"
-msgstr "28."
-
-#: calendar/gui/print.c:305
-msgid "29th"
-msgstr "29."
-
-#: calendar/gui/print.c:305
-msgid "30th"
-msgstr "30."
-
-#: calendar/gui/print.c:306
-msgid "31st"
-msgstr "31."
-
-#: calendar/gui/print.c:362
-msgid "Su"
-msgstr "ne"
-
-#: calendar/gui/print.c:362
-msgid "Mo"
-msgstr "po"
-
-#: calendar/gui/print.c:362
-msgid "Tu"
-msgstr "to"
-
-#: calendar/gui/print.c:362
-msgid "We"
-msgstr "sr"
-
-#: calendar/gui/print.c:362
-msgid "Th"
-msgstr "èe"
-
-#: calendar/gui/print.c:362
-msgid "Fr"
-msgstr "pe"
-
-#: calendar/gui/print.c:362
-msgid "Sa"
-msgstr "so"
-
-#. Day
-#: calendar/gui/print.c:1078
-msgid "Current day (%a %b %d %Y)"
-msgstr "Trenuten dan (%b %a %d %Y)"
-
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1096
-msgid "%a %b %d"
-msgstr "%a %d %b"
-
-#: calendar/gui/print.c:1093
-msgid "%a %d %Y"
-msgstr "%a %d %Y"
-
-#: calendar/gui/print.c:1104
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr "Trenutni teden (%s - %s)"
-
-#. Month
-#: calendar/gui/print.c:1112
-msgid "Current month (%b %Y)"
-msgstr "Trenutni mesec (%b %Y)"
-
-#. Year
-#: calendar/gui/print.c:1119
-msgid "Current year (%Y)"
-msgstr "Trenutno leto (%Y)"
-
-#: calendar/gui/print.c:1156
-msgid "Print Calendar"
-msgstr "Natisni koledar"
-
-#: calendar/gui/print.c:1321 mail/mail-callbacks.c:1524
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:24
-#: ui/evolution-mail.xml.h:57
-msgid "Print Preview"
-msgstr "Predogled tiskanja"
-
-#: calendar/gui/tasks-control.c:108
-msgid "The URI of the tasks folder to display"
-msgstr "URI mape poslov, ki naj se ka¾e"
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-"Evolucija je vzela posle, ki so bili v va¹i mapi koledarja in jih samodejno "
-"prenesla v novo mapo poslov."
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-"Evolucija je posku¹ala vzeti vse posle, ki so bili v va¹i mapi koledarja in "
-"jih prenesti v novo mapo poslov.\n"
-"Nekaterih poslov ni bilo mogoèe prenesti, zato bo ta proces v prihodnosti ¹e "
-"ponovljen."
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-"Ne morem odpreti `%s'; noben predmet iz mape koledarja ne bo prene¹en v mapo "
-"poslov."
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-"Metoda potrebna za nalo¾itev `%s' ni podprta; predmeti iz mape koledarja ne "
-"bodo prene¹eni v mapo poslov."
-
-#: calendar/gui/weekday-picker.c:315 calendar/gui/weekday-picker.c:410
-msgid "SMTWTFS"
-msgstr "NPTSÈPS"
-
-#: camel/camel-cipher-context.c:169
-msgid "Signing is not supported by this cipher"
-msgstr "Podpisovanje v tem kodirniku ni podprto"
-
-#: camel/camel-cipher-context.c:209
-msgid "Clearsigning is not supported by this cipher"
-msgstr "Èisto podpisovanje v tem kodirniku ni podprto"
-
-#: camel/camel-cipher-context.c:249
-msgid "Verifying is not supported by this cipher"
-msgstr "Preverjanje v tem kodirniku ni podprta"
-
-#: camel/camel-cipher-context.c:292
-msgid "Encryption is not supported by this cipher"
-msgstr "©ifriranje v tem kodirniku ni podprto"
-
-#: camel/camel-cipher-context.c:334
-msgid "Decryption is not supported by this cipher"
-msgstr "De¹ifriranje v tem kodirniku ni podprto"
-
-#: camel/camel-filter-driver.c:534 camel/camel-filter-driver.c:543
-msgid "Syncing folders"
-msgstr "Uskljajujem mape"
-
-#: camel/camel-filter-driver.c:643
-msgid "Unable to open spool folder"
-msgstr "Ne morem odpreti èakalne mape"
-
-#: camel/camel-filter-driver.c:652
-msgid "Unable to process spool folder"
-msgstr ""
-"Nisem mogel obdelati èakalne mape"
-
-#: camel/camel-filter-driver.c:666
-msgid "Getting message %d (%d%%)"
-msgstr "Dobivam sporoèilo %d (%d%%)"
-
-#: camel/camel-filter-driver.c:670 camel/camel-filter-driver.c:679
-msgid "Failed message %d"
-msgstr "Nauspelo sporoèilo %s"
-
-#: camel/camel-filter-driver.c:671
-msgid "Cannot open message"
-msgstr "Ne morem dobiti sporoèila"
-
-#: camel/camel-filter-driver.c:690 camel/camel-filter-driver.c:788
-msgid "Syncing folder"
-msgstr "Uskljajujem mapo"
-
-#: camel/camel-filter-driver.c:694 camel/camel-filter-driver.c:793
-msgid "Complete"
-msgstr "Konèano"
-
-#: camel/camel-filter-driver.c:748
-msgid "Getting message %d of %d"
-msgstr "Dobivam sporoèilo %d od %d"
-
-#: camel/camel-filter-driver.c:753 camel/camel-filter-driver.c:771
-msgid "Failed at message %d of %d"
-msgstr "Neuspeh pri sporoèilu %d od %d"
-
-#: camel/camel-filter-driver.c:866
-#, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr "Napaka ob razèlenjanju filtra: %s: %s"
-
-#: camel/camel-filter-driver.c:871
-#, c-format
-msgid "Error executing filter: %s: %s"
-msgstr "Napaka ob izvajanju filtra: %s: %s"
-
-#: camel/camel-filter-search.c:439 camel/camel-filter-search.c:445
-#, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr "Napaka ob izvajanju iskanja s filtrom: %s: %s"
-
-#: camel/camel-folder-search.c:328
-#, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-"Nisem mogel razèleniti iskalnega izraza %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:338
-#, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr ""
-"Napaka ob izvajanju iskalnega izraza %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:485 camel/camel-folder-search.c:513
-msgid "(match-all) requires a single bool result"
-msgstr "(match-all) zahteva enojen booleanov rezultat"
-
-#: camel/camel-folder-search.c:559
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr "Opravljam poizvedbo na neznani glavi: %s"
-
-#: camel/camel-folder-search.c:670 camel/camel-folder-search.c:714
-msgid "Invalid type in body-contains, expecting string"
-msgstr "Neveljaven tip v body-contains, prièakovan niz"
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:92 camel/camel-lock.c:111 camel/camel-movemail.c:138
-#: camel/camel-movemail.c:185
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "Nisem mogel ustvariti kljuèavniène datoteke za %s: %s"
-
-#: camel/camel-lock.c:151 camel/camel-movemail.c:219
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr ""
-"Ob pridobivanju kljuèavnice na %s je pretekla èasovna omejitev. Poskusite "
-"znova kasneje."
-
-#: camel/camel-lock.c:201
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr "Nisem uspel zakleniti s pomoèjo fcntl(2): %s"
-
-#: camel/camel-lock.c:255
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr "Nisem uspel zakleniti s pomoèjo flock(2): %s"
-
-#: camel/camel-movemail.c:101
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr "Nisem mogel preverti po¹tne datoteke %s: %s"
-
-#: camel/camel-movemail.c:148
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr "Nisem mogel odpreti po¹tne datoteke %s: %s"
-
-#: camel/camel-movemail.c:158
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr "Nisem mogel odpreti zaèasne po¹tne datoteke %s: %s"
-
-#: camel/camel-movemail.c:199
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr "Nisem mogel preveriti kljuèavniène datoteke %s: %s"
-
-#: camel/camel-movemail.c:245
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr "Napaka ob branju po¹tne datoteke: %s"
-
-#: camel/camel-movemail.c:256
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr "Napaka ob pisanju v zaèasno po¹tno datoteko: %s"
-
-#: camel/camel-movemail.c:274
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr "Nisem uspel shraniti po¹te v zaèasno datoteko %s: %s"
-
-#: camel/camel-movemail.c:306
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr "Nisem mogel ustvariti cevi: %s"
-
-#: camel/camel-movemail.c:318
-#, c-format
-msgid "Could not fork: %s"
-msgstr "Nisem se mogel razvejiti: %s"
-
-#: camel/camel-movemail.c:356
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr "Program movemail ni uspel: %s"
-
-#: camel/camel-movemail.c:357
-msgid "(Unknown error)"
-msgstr "(Neznana napaka)"
-
-#: camel/camel-movemail.c:587
-msgid "Error copying mail temp file: %s"
-msgstr "Napaka ob kopiranju zaèasne po¹tne datoteke: %s"
-
-#: camel/camel-pgp-context.c:188
-#, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr "Prosim vpi¹ite svoje %s geslo za %s"
-
-#: camel/camel-pgp-context.c:191
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr "Prosim vpi¹ite svoje %s geslo"
-
-#: camel/camel-pgp-context.c:509
-msgid "No plaintext to sign."
-msgstr "Ni besedila za podpis."
-
-#: camel/camel-pgp-context.c:516 camel/camel-pgp-context.c:688
-#: camel/camel-pgp-context.c:1055 camel/camel-pgp-context.c:1267
-msgid "No password provided."
-msgstr "Geslo ni bilo dano."
-
-#: camel/camel-pgp-context.c:522 camel/camel-pgp-context.c:694
-#: camel/camel-pgp-context.c:877 camel/camel-pgp-context.c:1062
-#: camel/camel-pgp-context.c:1274
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr "Nisem mogel ustvariti cevi do GPG/PGP: %s"
-
-#: camel/camel-pgp-context.c:681
-msgid "No plaintext to clearsign."
-msgstr "Ni besedila za èisti podpis."
-
-#: camel/camel-pgp-context.c:871
-msgid "No plaintext to verify."
-msgstr "Ni besedila za preverbo."
-
-#: camel/camel-pgp-context.c:888
-#, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "Nisem mogel ustvariti zaèasne datoteke: %s"
-
-#: camel/camel-pgp-context.c:1045
-msgid "No plaintext to encrypt."
-msgstr "Ni besedila za ¹ifriranje."
-
-#: camel/camel-pgp-context.c:1071
-msgid "No recipients specified"
-msgstr "Prejemniki niso navedeni"
-
-#: camel/camel-pgp-context.c:1259
-msgid "No ciphertext to decrypt."
-msgstr "Ni ¹ifriranega besedila za de¹ifriranje."
-
-#: camel/camel-provider.c:131
-#, c-format
-msgid "Could not load %s: Module loading not supported on this system."
-msgstr "Nisem mogel nalo¾iti %s: Nalaganje modulov na tem sistemu ni podprto."
-
-#: camel/camel-provider.c:140
-#, c-format
-msgid "Could not load %s: %s"
-msgstr "Nisem mogel nalo¾iti %s: %s"
-
-#: camel/camel-provider.c:148
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr "Nisem mogel nalo¾iti %s: V modulu ni inicializacijske kode."
-
-#: camel/camel-remote-store.c:186
-#, c-format
-msgid "%s server %s"
-msgstr "stre¾nik %s %s"
-
-#: camel/camel-remote-store.c:190
-#, c-format
-msgid "%s service for %s on %s"
-msgstr "storitev %s za %s na %s"
-
-#: camel/camel-remote-store.c:240
-msgid "Connection cancelled"
-msgstr "Povezava prekinjena"
-
-#: camel/camel-remote-store.c:243
-#: camel/providers/smtp/camel-smtp-transport.c:261
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr "Nisem se mogel povezati z %s (vrata %d): %s"
-
-#: camel/camel-remote-store.c:244
-msgid "(unknown host)"
-msgstr "(neznan gostitelj)"
-
-#: camel/camel-remote-store.c:325 camel/camel-remote-store.c:387
-#: camel/camel-remote-store.c:458
-#: camel/providers/imap/camel-imap-command.c:287
-msgid "Operation cancelled"
-msgstr "Operacija razveljavljena"
-
-#: camel/camel-remote-store.c:464
-msgid "Server unexpectedly disconnected"
-msgstr "Povezava s stre¾nikom je bila neprièakovano prekinjena"
-
-#: camel/camel-sasl-anonymous.c:33
-msgid "Anonymous"
-msgstr "Anonimno"
-
-#: camel/camel-sasl-anonymous.c:35
-msgid "This option will connect to the server using an anonymous login."
-msgstr "Ta mo¾nost narekuje povezavo s stre¾nikom z uporabo anonimne prijave."
-
-#: camel/camel-sasl-anonymous.c:110 camel/camel-sasl-plain.c:87
-msgid "Authentication failed."
-msgstr "Avtentifikacija ni usplea."
-
-#: camel/camel-sasl-anonymous.c:119
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-"Neveljavni podatki o izvoru e-po¹tnega naslova:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:131
-#, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr ""
-"Neveljavni podatki sledenja:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:143
-#, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr ""
-"Neveljavni podati sledenja:\n"
-"%s"
-
-#: camel/camel-sasl-cram-md5.c:35
-msgid "CRAM-MD5"
-msgstr "CRAM-MD5"
-
-#: camel/camel-sasl-cram-md5.c:37
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-"Ta mo¾nost narekuje povezavo s stre¾nikom z uporabo varnega CRAM-MD5 gesla, "
-"èe to podpira stre¾nik."
-
-#: camel/camel-sasl-digest-md5.c:43
-msgid "DIGEST-MD5"
-msgstr "DIGEST-MD5"
-
-#: camel/camel-sasl-digest-md5.c:45
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-"Ta mo¾nost narekuje povezavo s stre¾nikom z uporabo varnega DIGEST-MD5 "
-"gesla, èe to podpira stre¾nik."
-
-#: camel/camel-sasl-digest-md5.c:810
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr "Stre¾nikov izziv predolg (>2048 oktetov)\n"
-
-#: camel/camel-sasl-digest-md5.c:819
-msgid "Server challenge invalid\n"
-msgstr "Stre¾nikov izziv ni veljaven\n"
-
-#: camel/camel-sasl-digest-md5.c:825
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr ""
-"Stre¾nikov izziv je vseboval neveljaven èlen \"Quality of Protection"
-"\" (kvaliteta za¹èite)\n"
-
-#: camel/camel-sasl-digest-md5.c:847
-msgid "Server response did not contain authorization data\n"
-msgstr "Odziv stre¾nika ni vseboval podatkov o avtorizaciji\n"
-
-#: camel/camel-sasl-digest-md5.c:865
-msgid "Server response contained incomplete authorization data\n"
-msgstr "Odziv stre¾nika je vseboval nepopolne podatke o avtorizaciji\n"
-
-#: camel/camel-sasl-digest-md5.c:875
-msgid "Server response does not match\n"
-msgstr "Odziv stre¾nika ne ustreza\n"
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "Kerberos 4"
-msgstr "Kerberos 4"
-
-#: camel/camel-sasl-kerberos4.c:42
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr ""
-"Ta mo¾nost narekuje povezavo s stre¾nikom z uporabo avtentikacije Kerberos 4."
-
-#: camel/camel-sasl-kerberos4.c:161
-#, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr ""
-"Nisem mogel dobiti Kerberos vstopniice:\n"
-"%s"
-
-#: camel/camel-sasl-kerberos4.c:218
-#: camel/providers/imap/camel-imap-store.c:429
-msgid "Bad authentication response from server."
-msgstr "Stre¾nik je sporoèil slab odgovor avtentifikaciji."
-
-#: camel/camel-sasl-login.c:32
-msgid "NT Login"
-msgstr "Prijava na NT"
-
-#: camel/camel-sasl-login.c:34 camel/camel-sasl-plain.c:34
-msgid "This option will connect to the server using a simple password."
-msgstr "Ta mo¾nost narekuje povezavo s stre¾nikom z uporabo enostavnega gesla."
-
-#: camel/camel-sasl-login.c:127
-msgid "Unknown authentication state."
-msgstr "Neznano stanje avtentifikacije."
-
-#: camel/camel-search-private.c:111
-#, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr "Prevajanje regularnega izraza ni uspelo: %s: %s"
-
-#: camel/camel-service.c:154
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr "URL '%s' potrebuje komponento uporabni¹kega imena"
-
-#: camel/camel-service.c:162
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr "URL '%s' potrebuje komponento gostitelja"
-
-#: camel/camel-service.c:170
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr "URL '%s' potrebuje komponento poti"
-
-#: camel/camel-service.c:548
-msgid "Resolving: %s"
-msgstr "RazvozlujemÈ %s"
-
-#: camel/camel-service.c:575
-#, c-format
-msgid "Failure in name lookup: %s"
-msgstr "Napaka ob poizvedbi imena: %s"
-
-#: camel/camel-service.c:600
-#, c-format
-msgid "Host lookup failed: %s: host not found"
-msgstr "Poizvedba po gostitelju ni uspela: %s: gostitelj ni bil najden"
-
-#: camel/camel-service.c:602
-#, c-format
-msgid "Host lookup failed: %s: unknown reason"
-msgstr "Poizvedba po gostitelju ni uspela: %s: vzrok ni znan"
-
-#: camel/camel-session.c:68
-msgid "Virtual folder email provider"
-msgstr "Nuditelj virutalne mape e-po¹te"
-
-#: camel/camel-session.c:70
-msgid "For reading mail as a query of another set of folders"
-msgstr "Za branje po¹te kot poizvedbe po drugem sklopu map"
-
-#: camel/camel-session.c:294 camel/camel-session.c:363
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr "Noben nuditelj za protokol '%s' ni dostopen"
-
-#: camel/camel-session.c:478
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"Nisem mogel ustvariti imenika %s:\n"
-"%s"
-
-#. Fill in the new fields
-#: camel/camel-store.c:380 mail/mail-ops.c:1007 mail/mail-ops.c:1014
-#: mail/mail-ops.c:1032 mail/mail-ops.c:1033
-msgid "Trash"
-msgstr "Smeti"
-
-#: camel/camel-tcp-stream-ssl.c:348
-#, c-format
-msgid ""
-"EMail: %s\n"
-"Common Name: %s\n"
-"Organization Unit: %s\n"
-"Organization: %s\n"
-"Locality: %s\n"
-"State: %s\n"
-"Country: %s"
-msgstr ""
-"E-po¹ta: %s\n"
-"Obièajno ime: %s\n"
-"Organizacijska enota: %s\n"
-"Organizacija: %s\n"
-"Krajevnost: %s\n"
-"Regija/Zvezna dr¾ava: %s\n"
-"Dr¾ava: %s"
-
-#. construct our user prompt
-#: camel/camel-tcp-stream-ssl.c:364
-#, c-format
-msgid ""
-"Bad certificate from %s:\n"
-"\n"
-"%s\n"
-"\n"
-"Do you wish to accept anyway?"
-msgstr ""
-"Slab certifikat od %s:\n"
-"\n"
-"%s\n"
-"\n"
-"Ga ¾elite vseeno sprejeti?"
-
-#: camel/camel-url.c:289
-#, c-format
-msgid "Could not parse URL `%s'"
-msgstr "Ne morem odpreti razèleniti URLja '%s'"
-
-#: camel/camel-vee-folder.c:451
-msgid "No such message %s in %s"
-msgstr "Ni tak¹nega sporoèila %s v %s"
-
-#: camel/camel-vee-folder.c:546
-#, c-format
-msgid "No such message: %s"
-msgstr "Ni tak¹nega sporoèila: %s"
-
-#: camel/camel-vtrash-folder.c:109
-msgid "You cannot copy messages from this trash folder."
-msgstr ""
-"Ne morete kopirati sporoèil iz te mape smeti."
-
-#: camel/providers/imap/camel-imap-message-cache.c:150
-msgid "Could not open cache directory: %s"
-msgstr "Nisem mogel odpreti predpomnilni¹kega imenika: %s"
-
-#: camel/providers/imap/camel-imap-command.c:232
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "Neprièakovan odgovor stre¾nika IMAP: %s"
-
-#: camel/providers/imap/camel-imap-command.c:240
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr "IMAP ukaz ni uspel: %s"
-
-#: camel/providers/imap/camel-imap-command.c:241 shell/e-storage.c:481
-msgid "Unknown error"
-msgstr "Neznana napaka"
-
-#: camel/providers/imap/camel-imap-command.c:295
-msgid "Server response ended too soon."
-msgstr "Odgovor stre¾nika se je prehitro konèal."
-
-#: camel/providers/imap/camel-imap-command.c:487
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr "odgovor IMAP stre¾nika ni vseboval podatkov %s"
-
-#: camel/providers/imap/camel-imap-command.c:524
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr "Neprièakovan OK odgovor stre¾nika IMAP: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:170
-#, c-format
-msgid "Could not load summary for %s"
-msgstr "Nisem mogel nalo¾iti povzetka za %s"
-
-#: camel/providers/imap/camel-imap-folder.c:352
-msgid "Scanning IMAP folder"
-msgstr "Pregledujem mapo IMAP"
-
-#: camel/providers/imap/camel-imap-folder.c:1020
-#: camel/providers/imap/camel-imap-folder.c:1240
-msgid "This message is not currently available"
-msgstr "To sporoèilo trenutno ni na voljo"
-
-#: camel/providers/imap/camel-imap-folder.c:1048
-#: camel/providers/imap/camel-imap-folder.c:1272
-msgid "Could not find message body in FETCH response."
-msgstr "Nisem mogel najti telesa sporoèila v odgovoru FETCH."
-
-#: camel/providers/imap/camel-imap-provider.c:43 mail/mail-config.glade.h:11
-msgid "Checking for new mail"
-msgstr "Preverjam za novo po¹to"
-
-#: camel/providers/imap/camel-imap-provider.c:45
-msgid "Check for new messages in all folders"
-msgstr "Preveri za nova sporoèila v vseh mapah"
-
-#: camel/providers/imap/camel-imap-provider.c:48 shell/e-shell-view.c:534
-msgid "Folders"
-msgstr "Mape"
-
-#: camel/providers/imap/camel-imap-provider.c:50
-msgid "Show only subscribed folders"
-msgstr "Ka¾i le naroèene mape"
-
-#: camel/providers/imap/camel-imap-provider.c:52
-msgid "Override server-supplied folder namespace"
-msgstr "Povozi imenski prostor map, ki ga nudi stre¾nik"
-
-#: camel/providers/imap/camel-imap-provider.c:54
-msgid "Namespace"
-msgstr "Imenski prostor"
-
-#: camel/providers/imap/camel-imap-provider.c:57
-msgid "Apply filters to new messages in INBOX on this server"
-msgstr "Uveljavi filtre na novih sporoèiliv v mapi INBOX tega stre¾nika"
-
-#: camel/providers/imap/camel-imap-provider.c:63
-msgid "IMAPv4"
-msgstr "IMAPv4"
-
-#: camel/providers/imap/camel-imap-provider.c:65
-msgid "For reading and storing mail on IMAP servers."
-msgstr "Za branje in hranjenje po¹te na stre¾nikih IMAP."
-
-#: camel/providers/imap/camel-imap-provider.c:82
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr "Ta mo¾nost narekuje povezavo s stre¾nikom IMAP z ne¹ifriranim geslom."
-
-#: camel/providers/imap/camel-imap-store.c:452
-#, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr "Stre¾nik IMAP %s ne podpira zahtevanega naèina avtentifikacije %s"
-
-#: camel/providers/imap/camel-imap-store.c:462
-#: camel/providers/smtp/camel-smtp-transport.c:358
-#, c-format
-msgid "No support for authentication type %s"
-msgstr "Ni podpore za naèin avtentifikacije %s"
-
-#: camel/providers/imap/camel-imap-store.c:486
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr "%sProsim vpi¹ite geslo IMAP za %s@%s"
-
-#: camel/providers/imap/camel-imap-store.c:501
-#: camel/providers/smtp/camel-smtp-transport.c:402
-msgid "You didn't enter a password."
-msgstr "Nistve vpisali gesla."
-
-#: camel/providers/imap/camel-imap-store.c:527
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Stre¾niku IMAP se nisem mogel avtentificirati.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/imap/camel-imap-store.c:864
-msgid "%s is not a selectable folder"
-msgstr "%s ni mogoèe izbrati kot mapo"
-
-#: camel/providers/imap/camel-imap-store.c:879
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr "Nisem mogel ustvariti imenika %s: %s"
-
-#: camel/providers/imap/camel-imap-store.c:1364
-msgid "You must be working online to complete this operation"
-msgstr "Za dokonèanje te operacije morate delati z mre¾o"
-
-#: camel/providers/local/camel-local-provider.c:39
-msgid "MH-format mail directories"
-msgstr "Po¹tni imeniki tipa MH"
-
-#: camel/providers/local/camel-local-provider.c:40
-msgid "For storing local mail in MH-like mail directories"
-msgstr "Za shranjevanje krajevne po¹te v imenikih tipa MH"
-
-#: camel/providers/local/camel-local-provider.c:49
-msgid "Standard Unix mailbox file"
-msgstr "Obièajna Unix datoteka po¹tnega predala"
-
-#: camel/providers/local/camel-local-provider.c:50
-msgid "For storing local mail in standard mbox format"
-msgstr "Za shranjevanje krajevne po¹te v datoteki tipa mbox"
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "Qmail maildir-format mail files"
-msgstr "Po¹tne datoteke tipa Qmail"
-
-#: camel/providers/local/camel-local-provider.c:60
-msgid "For storing local mail in qmail maildir directories"
-msgstr "Za shranjevanje krajevne po¹te v imenikih tipa qmail"
-
-#: camel/providers/local/camel-local-store.c:129
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr "Korenski imenik shrambe %s ni absolutna pot"
-
-#: camel/providers/local/camel-local-store.c:136
-#, c-format
-msgid "Store root %s is not a regular directory"
-msgstr "Korenski imenik shrambe %s ni obièajnen imenik"
-
-#: camel/providers/local/camel-local-store.c:144
-#: camel/providers/local/camel-local-store.c:160
-#, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "Ne morem dobiti mape: %s: %s"
-
-#: camel/providers/local/camel-local-store.c:175
-msgid "Local stores do not have an inbox"
-msgstr "Krajevno shrambe nimajo vhodnega predala"
-
-#: camel/providers/local/camel-local-store.c:185
-#, c-format
-msgid "Local mail file %s"
-msgstr "Krajevna datoteka s po¹to %s"
-
-#: camel/providers/local/camel-local-store.c:241
-#, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr "Nisem mogel preimenovati mape %s v %s: %s"
-
-#: camel/providers/local/camel-local-store.c:283
-#, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr "Nisem mogel zbrisati datoteke povzetka mape `%s': %s"
-
-#: camel/providers/local/camel-local-store.c:293
-#, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr "Nisem mogel zbrisati datoteke kazala mape `%s': %s"
-
-#: camel/providers/local/camel-local-summary.c:404
-msgid "Unable to add message to summary: unknown reason"
-msgstr "Ne morem dodati sporoèila k povzetku: razlog neznan"
-
-#: camel/providers/local/camel-maildir-folder.c:150
-#: camel/providers/local/camel-maildir-folder.c:158
-#: camel/providers/local/camel-maildir-folder.c:169
-#, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr "Ne morem dodati sporoèila v mapo tipa maildir: %s: %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-maildir-folder.c:209
-#: camel/providers/local/camel-maildir-folder.c:217
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#: camel/providers/local/camel-mh-folder.c:194
-#: camel/providers/local/camel-mh-folder.c:202
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-"Ne morem dobiti sporoèila: %s\n"
-" %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-msgid "No such message"
-msgstr "Ni tak¹nega sporoèila"
-
-#: camel/providers/local/camel-maildir-folder.c:218
-#: camel/providers/local/camel-mh-folder.c:203
-msgid "Invalid message contents"
-msgstr "Neveljavna vsebina sporoèila"
-
-#: camel/providers/local/camel-maildir-store.c:96
-#: camel/providers/local/camel-mh-store.c:90
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-"Nisem mogel odpreti imenika `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:100
-#: camel/providers/local/camel-mbox-store.c:101
-#: camel/providers/local/camel-mh-store.c:97
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr "Mapa `%s' ne obstaja."
-
-#: camel/providers/local/camel-maildir-store.c:107
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-"Nisem mogel ustvariti mape `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:122
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr "`%s' ni imenik tipa maildir."
-
-#: camel/providers/local/camel-maildir-store.c:151
-#: camel/providers/local/camel-maildir-store.c:188
-#: camel/providers/local/camel-mh-store.c:127
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr "Nisem mogel zbrisati mape `%s': %s"
-
-#: camel/providers/local/camel-maildir-store.c:152
-msgid "not a maildir directory"
-msgstr "ni imenik tipa maildir"
-
-#: camel/providers/local/camel-maildir-summary.c:405
-#: camel/providers/local/camel-maildir-summary.c:526
-msgid "Cannot open maildir directory path: %s: %s"
-msgstr "Ne morem odpreti po¹tnega imenika maildir: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:152
-msgid "Cannot create folder lock on %s: %s"
-msgstr "Ne morem ustvariti kljuèavnice na mapi: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:203
-#, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr "Ne morem odpreti po¹tnega predala: %s: %s\n"
-
-#: camel/providers/local/camel-mbox-folder.c:259
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr "Ne morem pripeti sporoèila k datoteki tipa mbox: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:335
-#: camel/providers/local/camel-mbox-folder.c:367
-#: camel/providers/local/camel-mbox-folder.c:380
-#, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-"Ne morem dobiti sporoèila: %s iz mape %s\n"
-" %s"
-
-#: camel/providers/local/camel-mbox-folder.c:368
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr "Zdi se, da je mapa po¹kodovana in je ni mogoèe popraviti."
-
-#: camel/providers/local/camel-mbox-folder.c:381
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr "Konstrukcija sporoèila ni uspela: Naj pokvarim po¹tni predal?"
-
-#: camel/providers/local/camel-mbox-store.c:94
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-"Ne morem odpreti datoteke '%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:110
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-"Nisem mogel ustvariti datoteke `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:119
-#: camel/providers/local/camel-mbox-store.c:146
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr "`%s' ni obièajna datoteka."
-
-#: camel/providers/local/camel-mbox-store.c:138
-#: camel/providers/local/camel-mbox-store.c:161
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-"Nisem mogel zbrisati mape `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr "Mapa `%s' ni prazna. Ni zbrisana."
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:249
-msgid "Summarising folder"
-msgstr "Delam povzetek mape"
-
-#: camel/providers/local/camel-mbox-summary.c:254
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr "Nisem mogel odpreti mape: %s: povzetek delam od %ld dalje: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:296
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr "Usodna napaka razèlenjevanja po¹te na mestu %ld v mapi %s"
-
-#: camel/providers/local/camel-mbox-summary.c:371
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr "Ne morem narediti povzetka mape %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:502
-#: camel/providers/local/camel-mbox-summary.c:703 mail/mail-ops.c:1395
-msgid "Synchronising folder"
-msgstr "Uskljajujem mapo %s"
-
-#: camel/providers/local/camel-mbox-summary.c:507
-#: camel/providers/local/camel-mbox-summary.c:708
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr "Nisem mogel odpreti mape za izdelavo povzetka %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:524
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr "Nisem mogel odpreti zaèasnega po¹tnega predala: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:549
-#: camel/providers/local/camel-mbox-summary.c:557
-#: camel/providers/local/camel-mbox-summary.c:746
-#: camel/providers/local/camel-mbox-summary.c:754
-msgid "Summary and folder mismatch, even after a sync"
-msgstr "Povzetek se ne ujema z mapo, celo po uskladitvi"
-
-#: camel/providers/local/camel-mbox-summary.c:600
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr "Napaka ob pisanju v zaèasni po¹tni predal: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:617
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr "Pisanje v zaèasni po¹tni predal ni uspelo: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:635
-#: camel/providers/local/camel-mbox-summary.c:804
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr "Nisem mogel zapreti izvorne mape %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:644
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr "Nisem mogel zapreti zaèasne mape: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:655
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr "Nisem mogel preimenovati mape: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:879
-#, c-format
-msgid "Unknown error: %s"
-msgstr "Neznana napaka: %s"
-
-#: camel/providers/local/camel-mh-folder.c:149
-#: camel/providers/local/camel-mh-folder.c:157
-#, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr "Ne morem dodati sporoèila v mapo tipa mh: %s: %s"
-
-#: camel/providers/local/camel-mh-store.c:110
-#, c-format
-msgid "`%s' is not a directory."
-msgstr "`%s' ni imenik."
-
-#: camel/providers/local/camel-mh-summary.c:218
-msgid "Cannot open MH directory path: %s: %s"
-msgstr "Ne morem odpreti po¹tnega imenika MH: %s: %s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:45
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr "Prosim vpi¹ite geslo NNTP za %s@%s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:66
-msgid "Server rejected username"
-msgstr "Stre¾nik je zavrnil uporabni¹ko ime"
-
-#: camel/providers/nntp/camel-nntp-auth.c:72
-msgid "Failed to send username to server"
-msgstr "Nisem uspel poslati uporabni¹kega imena stre¾niku"
-
-#: camel/providers/nntp/camel-nntp-auth.c:81
-msgid "Server rejected username/password"
-msgstr "Stre¾nik je zavrnil uporabni¹ko ime/geslo"
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr "Sporoèilo %s ni bilo najdeno."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr "Nisem mogel dobiti seznama skupin s stre¾nika."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr "Nisem mogel nalo¾iti datoteke s seznamom skupin za %s: %s"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr "Nisem mogel shraniti datoteke s seznamom skupin za %s: %s"
-
-#: camel/providers/nntp/camel-nntp-provider.c:42
-msgid "USENET news"
-msgstr "USENET novièke"
-
-#: camel/providers/nntp/camel-nntp-provider.c:44
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr "To je nuditelj za branje in pisanje v novièkarske skupine USENET."
-
-#: camel/providers/nntp/camel-nntp-store.c:224
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr "Nisem mogel odpreti imenika za novièkarski stre¾nik: %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:286
-#, c-format
-msgid "USENET News via %s"
-msgstr "USNET Novièke preko %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:293
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-"Ta mo¾nost se bo avtentificirala pri stre¾niku NNTP z ne¹ifriranim geslom."
-
-#: camel/providers/nntp/camel-nntp-store.c:325
-#: camel/providers/nntp/camel-nntp-store.c:488
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr "Ne morem odpreti ali ustvariti .newsrc datoteke za %s: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-msgid "Retrieving POP summary"
-msgstr "Prena¹am povzetek POP"
-
-#: camel/providers/pop3/camel-pop3-folder.c:155
-msgid "Could not check POP server for new messages: %s"
-msgstr "Nisem mogel preveriti stre¾nika POP za nova sporoèila: %s."
-
-#: camel/providers/pop3/camel-pop3-folder.c:199
-msgid "Could not open folder: message listing was incomplete."
-msgstr "Nisem mogel odpreti mape: seznam sporoèil je bil nepopoln."
-
-#: camel/providers/pop3/camel-pop3-folder.c:292
-#, c-format
-msgid "No message with uid %s"
-msgstr "Ni sporoèila z uid %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:296
-#, c-format
-msgid "Retrieving POP message %d"
-msgstr "Prena¹am sporoèilo POP %d"
-
-#: camel/providers/pop3/camel-pop3-folder.c:303
-msgid "Could not fetch message: %s"
-msgstr "Nisem mogel dobiti sporoèila: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:320
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr "Nisem uspel prenesti sporoèila s stre¾nika POP %s: %s"
-
-#: camel/providers/pop3/camel-pop3-provider.c:37
-msgid "Message storage"
-msgstr "Hramba sporoèil"
-
-#: camel/providers/pop3/camel-pop3-provider.c:39
-msgid "Leave messages on server"
-msgstr "Pusti sporoèila na stre¾niku"
-
-#: camel/providers/pop3/camel-pop3-provider.c:41
-#, c-format
-msgid "Delete after %s day(s)"
-msgstr "Zbri¹i po %s dneh"
-
-#: camel/providers/pop3/camel-pop3-provider.c:48 mail/mail-config.glade.h:42
-msgid "POP"
-msgstr "POP"
-
-#: camel/providers/pop3/camel-pop3-provider.c:50
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-"Za povezovanje s stre¾niki POP. Protokol POP se lahko uporabi tudi za "
-"prena¹anje po¹te iz nekaterih spletnih nuditeljev po¹te in zaprtih sistemov "
-"e-po¹te."
-
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-"Ta mo¾nost narekuje povezavo s stre¾nikom POP z ne¹ifriranim geslom. To je v "
-"veèini edina mo¾nost, ki jo stre¾niki POP podpirajo."
-
-#: camel/providers/pop3/camel-pop3-provider.c:79
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-"Ta mo¾nost narekuje povezavo s stre¾nikom POP z uporabo ¹ifriranega gesla "
-"preko protokola APOP. To ni nujno, da bo delovalo za vse uporabnike in celo "
-"za stre¾nike, ki trdijo, da jo podpirajo."
-
-#: camel/providers/pop3/camel-pop3-provider.c:91
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-"To se bo povezalo s stre¾nikom POP in uporabilo Kerbos 4 za ustrezno "
-"avtentifikacijo."
-
-#: camel/providers/pop3/camel-pop3-store.c:209
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr "Stre¾niku KPOP se nisem mogel avtentificirati: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:225
-msgid "Could not connect to server: %s"
-msgstr "Nisem se mogel povezati s stre¾nikom: %s."
-
-#: camel/providers/pop3/camel-pop3-store.c:329
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr "Nisem se mogel povezati s stre¾nikom POP na %s."
-
-#: camel/providers/pop3/camel-pop3-store.c:368
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr "%sProsim vpi¹ite POP3 geslo za %s@%s"
-
-#: camel/providers/pop3/camel-pop3-store.c:386
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-"Nisem se mogel povezati s stre¾nikom POP.\n"
-"Napaka ob po¹iljanju uporabni¹kega imena: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:389
-#: camel/providers/pop3/camel-pop3-store.c:426
-msgid "(Unknown)"
-msgstr "(Neznana)"
-
-#: camel/providers/pop3/camel-pop3-store.c:416
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-"Ne morem se povezati s stre¾nikom POP.\n"
-"Ni podpore za zahtevan avtentifikacijski mehanizm."
-
-#: camel/providers/pop3/camel-pop3-store.c:424
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-"Nisem se mogel povezati s stre¾nikom POP.\n"
-"Napaka ob po¹iljanju gesla: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:491
-#, c-format
-msgid "No such folder `%s'."
-msgstr "Ni tak¹ne mape `%s'."
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:37
-#: mail/mail-config.glade.h:57
-msgid "Sendmail"
-msgstr "Program sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:39
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-"Za dostavljanjem po¹te preko programa \"sendmail\" na krajevnem sistemu."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:107
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr ""
-"Nisem mogel ustvariti cevi do programa sendmail: %s: po¹ta ni bila poslana"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:124
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr "Nisem mogel vejiti programa sendmail: %s: po¹ta ni bila poslana"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:150
-#, c-format
-msgid "Could not send message: %s"
-msgstr "Nisem mogel poslati sporoèila: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:163
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr "program sendmail je zakljuèil s signalom %s: po¹ta ni bila poslana."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:170
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr "Nisem mogel izvr¹iti %s: po¹ta ni bila poslana."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:175
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr "program sendmail je zakljuèil s stanjem %d: po¹ta ni bila poslana."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:194
-msgid "Could not find 'From' address in message"
-msgstr "V sporoèilu nisem na¹el naslova 'From' (po¹iljatelja)."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "sendmail"
-msgstr "program sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:249
-msgid "Mail delivery via the sendmail program"
-msgstr "Dostava po¹te preko programa sendmail"
-
-#: camel/providers/smtp/camel-smtp-provider.c:38 mail/mail-config.glade.h:52
-msgid "SMTP"
-msgstr "SMTP"
-
-#: camel/providers/smtp/camel-smtp-provider.c:40
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr ""
-"Za dostavo po¹te preko povezave z oddaljenim po¹tnim razdelilcem z uporabo "
-"SMTP.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:165
-msgid "Syntax error, command unrecognized"
-msgstr "Sintaktièna napaka, ukaz ni prepoznan"
-
-#: camel/providers/smtp/camel-smtp-transport.c:167
-msgid "Syntax error in parameters or arguments"
-msgstr "Sintaktièna napaka v parametrih ali argumentih"
-
-#: camel/providers/smtp/camel-smtp-transport.c:169
-msgid "Command not implemented"
-msgstr "Ukaz ni implementiran"
-
-#: camel/providers/smtp/camel-smtp-transport.c:171
-msgid "Command parameter not implemented"
-msgstr "Parameter ukaza ni implementiran"
-
-#: camel/providers/smtp/camel-smtp-transport.c:173
-msgid "System status, or system help reply"
-msgstr "Stanje sistema ali odgvor na pomoè"
-
-#: camel/providers/smtp/camel-smtp-transport.c:175
-msgid "Help message"
-msgstr "Sporèilo pomoèi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:177
-msgid "Service ready"
-msgstr "Storitev pripravljena"
-
-#: camel/providers/smtp/camel-smtp-transport.c:179
-msgid "Service closing transmission channel"
-msgstr "Storitev zapira kanal za prenos"
-
-#: camel/providers/smtp/camel-smtp-transport.c:181
-msgid "Service not available, closing transmission channel"
-msgstr "Storitev ni na voljo, zapiram kanal za prenos"
-
-#: camel/providers/smtp/camel-smtp-transport.c:183
-msgid "Requested mail action okay, completed"
-msgstr "Zahtevano dejanje v redu, opravljeno"
-
-#: camel/providers/smtp/camel-smtp-transport.c:185
-msgid "User not local; will forward to <forward-path>"
-msgstr "Uporabnik ni krajeven; bom posredoval na <forward-path>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:187
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr "Zahtevano po¹tno dejanje ni bilo izvedeno: po¹tni predal ni na voljo"
-
-#: camel/providers/smtp/camel-smtp-transport.c:189
-msgid "Requested action not taken: mailbox unavailable"
-msgstr "Zahtevano dejanje ni bilo izvedeno: po¹tni predal ni na voljo"
-
-#: camel/providers/smtp/camel-smtp-transport.c:191
-msgid "Requested action aborted: error in processing"
-msgstr "Zahtevano dejanje preklicano: napaka ob obdelavi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:193
-msgid "User not local; please try <forward-path>"
-msgstr "Uporabnik ni krajeven; prosimo poskusite <forward-path>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:195
-msgid "Requested action not taken: insufficient system storage"
-msgstr "Zahtevano dejanje ni bilo izvedeno: premalo prostora na disku"
-
-#: camel/providers/smtp/camel-smtp-transport.c:197
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr "Zahtevano dejanje preklicano: prekoraèena obremenitev diska"
-
-#: camel/providers/smtp/camel-smtp-transport.c:199
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr "Zahtevano dejanje ni bilo izvedeno: ime po¹tnega predala ni dovoljeno"
-
-#: camel/providers/smtp/camel-smtp-transport.c:201
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr "Zaèni z vpisom po¹te; konèaj z <ENTER>.<ENTER>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:203
-msgid "Transaction failed"
-msgstr "Transakcija ni uspela"
-
-#: camel/providers/smtp/camel-smtp-transport.c:207
-msgid "A password transition is needed"
-msgstr "Potreben je prenos gesla"
-
-#: camel/providers/smtp/camel-smtp-transport.c:209
-msgid "Authentication mechanism is too weak"
-msgstr "Mehanizem avtentifikacije je pre¹ibak"
-
-#: camel/providers/smtp/camel-smtp-transport.c:211
-msgid "Encryption required for requested authentication mechanism"
-msgstr "Za zahtevan mehanizem avtentifikacije je potrebno ¹ifriranje"
-
-#: camel/providers/smtp/camel-smtp-transport.c:213
-msgid "Temporary authentication failure"
-msgstr "Zaèasna napaka avtentifikacije"
-
-#: camel/providers/smtp/camel-smtp-transport.c:215
-msgid "Authentication required"
-msgstr "Potrebna je avtentifikacija"
-
-#: camel/providers/smtp/camel-smtp-transport.c:305
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr "Napaka pri pozdravu: %s: morda ni usodna"
-
-#: camel/providers/smtp/camel-smtp-transport.c:348
-msgid "SMTP server %s does not support requested authentication type %s"
-msgstr "Stre¾nik SMTP %s ne podpira zahtevanega naèina avtentifikacije %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:387
-#, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr "%sProsim vpi¹ite geslo SMTP za %s@%s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:410
-msgid ""
-"Unable to authenticate to SMTP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Stre¾niku SMTP se nisem mogel avtentificirati.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:526
-#, c-format
-msgid "SMTP server %s"
-msgstr "Stre¾nik SMTP %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:528
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr "Dostava po¹te s SMTP preko %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:553
-msgid "Cannot send message: sender address not defined."
-msgstr "Ne morem poslati sporoèila: naslov po¹iljatelja ni naveden."
-
-#: camel/providers/smtp/camel-smtp-transport.c:560
-msgid "Cannot send message: sender address not valid."
-msgstr "Ne morem poslati sporoèila: naslov po¹iljatelja ni veljaven."
-
-#: camel/providers/smtp/camel-smtp-transport.c:574
-msgid "Cannot send message: no recipients defined."
-msgstr "Ne morem poslati sporoèila: ni naslovnikov."
-
-#: camel/providers/smtp/camel-smtp-transport.c:668
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr "Zahtevek HELO je prekoraèil èasovno omejitev: %s: ni usodno"
-
-#: camel/providers/smtp/camel-smtp-transport.c:687
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr "Napaka v odgovoru na HELO: %s: ni usodno"
-
-#: camel/providers/smtp/camel-smtp-transport.c:720
-msgid "Error creating SASL authentication object."
-msgstr "Napak ob ustvarjanju avtentifikacijskega predmeta SASL."
-
-#: camel/providers/smtp/camel-smtp-transport.c:735
-#: camel/providers/smtp/camel-smtp-transport.c:747
-#, c-format
-msgid "AUTH request timed out: %s"
-msgstr "Zahtevek AUTH je prekoraèil èasovno omejitev: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:797
-msgid "Bad authentication response from server.\n"
-msgstr "Stre¾nik je sporoèil slab odgovor avtentifikacije.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:823
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr ""
-"Zahtevek MAIL FROM je prekoraèil èasovno omejitev: %s: po¹ta ni bila poslana"
-
-#: camel/providers/smtp/camel-smtp-transport.c:842
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr "Napaka v ogovoru na MAIL FROM: %s: po¹ta ni bila poslana"
-
-#: camel/providers/smtp/camel-smtp-transport.c:867
-#, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr ""
-"Zahtevek RCPT TO je prekoraèil èasovno omejitev: %s: po¹ta ni bila poslana"
-
-#: camel/providers/smtp/camel-smtp-transport.c:886
-#, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr "Napaka v ogovoru na RCPT TO: %s: po¹ta ni bila poslana"
-
-#: camel/providers/smtp/camel-smtp-transport.c:917
-#, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr ""
-"Zahtevek DATA je prekoraèil èasovno omejitev: %s: po¹ta ni bila poslana"
-
-#: camel/providers/smtp/camel-smtp-transport.c:936
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr "Napaka v ogovoru na DATA: %s: po¹ta ni bila poslana"
-
-#: camel/providers/smtp/camel-smtp-transport.c:951
-#: camel/providers/smtp/camel-smtp-transport.c:969
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr ""
-"Zahtevek DATA je prekoraèil èasovno omejitev: konec sporoèila: %s: po¹ta ni "
-"bila poslana"
-
-#: camel/providers/smtp/camel-smtp-transport.c:988
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr "Napaka v ogovoru na DATA: konec sporoèila: %s: po¹ta ni bila poslana"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1012
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr "Zahtevek RSET je prekoraèil èasovno omejitev: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1031
-#, c-format
-msgid "RSET response error: %s"
-msgstr "Napaka v odgovoru na RSET: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1054
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr "Zahtevek QUIT je prekoraèil èasovno omejitev: %s: ni usodno"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1073
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr "Napaka v odgovoru na QUIT: %s: ni usodno"
-
-#: composer/e-msg-composer-attachment-bar.c:95
-msgid "1 byte"
-msgstr "1 bajt"
-
-#: composer/e-msg-composer-attachment-bar.c:97
-#, c-format
-msgid "%u bytes"
-msgstr "%u bajtov"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fK"
-
-#: composer/e-msg-composer-attachment-bar.c:108
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fM"
-
-#: composer/e-msg-composer-attachment-bar.c:112
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fG"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:332 mail/mail-display.c:120
-msgid "attachment"
-msgstr "priloga"
-
-#: composer/e-msg-composer-attachment-bar.c:421
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr "Prilo¾i datoteko"
-
-#: composer/e-msg-composer-attachment-bar.c:469
-msgid "Remove selected items from the attachment list"
-msgstr "Odstrani izbrane predmete iz seznama prilog"
-
-#: composer/e-msg-composer-attachment-bar.c:500
-msgid "Add attachment..."
-msgstr "Dodaj prilogo..."
-
-#: composer/e-msg-composer-attachment-bar.c:501
-msgid "Attach a file to the message"
-msgstr "Prilo¾i datoteko k sporoèilu"
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/message-list.c:1082
-msgid "Attachment"
-msgstr "Priloga"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr "Lastnosti priloge"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr "Ime datoteke:"
-
-#: composer/e-msg-composer-attachment.glade.h:5
-msgid "Inline attachment"
-msgstr "Priloga kot del sporoèila"
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr "Tip MIME:"
-
-#: composer/e-msg-composer-attachment.glade.h:7
-msgid "Send as:"
-msgstr "Po¹lji kot:"
-
-#: composer/e-msg-composer.c:529
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-"Nisem mogel odpreti datoteke s podpisom %s:\n"
-"%s"
-
-#: composer/e-msg-composer.c:699
-msgid "Save as..."
-msgstr "Shrani kot..."
-
-#: composer/e-msg-composer.c:710
-#, c-format
-msgid "Error saving file: %s"
-msgstr "Napaka ob shranjevanju datoteke: %s"
-
-#: composer/e-msg-composer.c:730
-#, c-format
-msgid "Error loading file: %s"
-msgstr "Napaka ob nalaganju datoteke %s"
-
-#: composer/e-msg-composer.c:802
-msgid ""
-"Unable to open the drafts folder for this account.\n"
-"Would you like to use the default drafts folder?"
-msgstr ""
-"Ni mogoèe odpreti mape osnutkov za ta raèun.\n"
-"®elite uporabiti privzeto mapo osnutkov?"
-
-#: composer/e-msg-composer.c:860 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:206
-msgid "Evolution"
-msgstr "Evolucija"
-
-#: composer/e-msg-composer.c:866
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-"To sporoèilo ni bilo poslano.\n"
-"\n"
-"®elite shraniti spremembe?"
-
-#: composer/e-msg-composer.c:891
-msgid "Open file"
-msgstr "Odpri datoteko"
-
-#: composer/e-msg-composer.c:1017
-msgid "That file does not exist."
-msgstr "Datoteka ne obstaja."
-
-#: composer/e-msg-composer.c:1027
-msgid "That is not a regular file."
-msgstr "To ni obièajna datoteka."
-
-#: composer/e-msg-composer.c:1037
-msgid "That file exists but is not readable."
-msgstr "Ta datoteka obstaja a ni berljiva."
-
-#: composer/e-msg-composer.c:1047
-msgid "That file appeared accesible but open(2) failed."
-msgstr "Datoteka se je zdela dostopna a open(2) ni uspel."
-
-#: composer/e-msg-composer.c:1069
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-"Datoteka je zelo velika (èez 100K).\n"
-"Ste preprièani,da jo ¾elite vstaviti?"
-
-#: composer/e-msg-composer.c:1090
-msgid "An error occurred while reading the file."
-msgstr "Ob branju datoteke se je zgodila napaka."
-
-#: composer/e-msg-composer.c:1391 composer/e-msg-composer.c:1734
-msgid "Compose a message"
-msgstr "Sestavi novo sporoèilo"
-
-#: composer/e-msg-composer.c:1825
-msgid "Could not create composer window."
-msgstr "Nisem mogel ustvariti okna skladatelja."
-
-#: composer/e-msg-composer-hdrs.c:323
-msgid "Click here for the address book"
-msgstr "Kliknite tu za adresar"
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:354 mail/mail-format.c:744
-msgid "From:"
-msgstr "Od:"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:360 mail/mail-format.c:746
-msgid "Reply-To:"
-msgstr "Odgovori-na:"
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:371 mail/mail-format.c:643
-msgid "Subject:"
-msgstr "Zadeva:"
-
-#: composer/e-msg-composer-hdrs.c:385 mail/mail-format.c:748
-msgid "To:"
-msgstr "Za:"
-
-#: composer/e-msg-composer-hdrs.c:386
-msgid "Enter the recipients of the message"
-msgstr "Vnesite prejemnike sporoèila"
-
-#: composer/e-msg-composer-hdrs.c:389 mail/mail-format.c:750
-msgid "Cc:"
-msgstr "Cc:"
-
-#: composer/e-msg-composer-hdrs.c:390
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "Vnesite naslove, ki bodo prejeli, karbonske kopije sporoèila"
-
-#: composer/e-msg-composer-hdrs.c:393
-msgid "Bcc:"
-msgstr "Bcc:"
-
-#: composer/e-msg-composer-hdrs.c:394
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"Vnesite naslove, ki bodo prejeli karbonske kopije sporoèila, a se ne bodo "
-"pojavili v seznamu prejemnikov sporoèila."
-
-#: composer/evolution-composer.c:355
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-"Nisem mogel ustvariti okna skladatelja, ker ¹e niste nastavili\n"
-"identitet v komponenti po¹te."
-
-#: composer/evolution-composer.c:370
-msgid "Cannot initialize Evolution's composer."
-msgstr "Ne morem inicializirati Evolucijinega skladatelja."
-
-#: data/evolution.desktop.in.h:2
-msgid "The Evolution groupware suite"
-msgstr "Evolucijino programje za delo v skupini"
-
-#: data/evolution.keys.in.h:1
-msgid "address card"
-msgstr "vizitka"
-
-#: data/evolution.keys.in.h:2
-msgid "calendar information"
-msgstr "podatki o kodledarju"
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:69 e-util/e-time-utils.c:117
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:477
-#: widgets/misc/e-dateedit.c:1284 widgets/misc/e-dateedit.c:1465
-msgid "%m/%d/%Y"
-msgstr "%d/%m/%Y"
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:87 e-util/e-time-utils.c:198
-msgid "%I:%M:%S %p%n"
-msgstr "%I:%M:%S %p%n"
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:90 e-util/e-time-utils.c:201
-msgid "%H:%M:%S%n"
-msgstr "%H:%M:%S%n"
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:94 e-util/e-time-utils.c:205
-msgid "%I:%M %p%n"
-msgstr "%I:%M %p%n"
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:97 e-util/e-time-utils.c:208
-msgid "%H:%M%n"
-msgstr "%H:%M%n"
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:269
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:473
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2505
-msgid "%a %m/%d/%Y"
-msgstr "%a %d/%m/%Y"
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:274
-msgid "%a %m/%d/%Y %H:%M"
-msgstr "%a %d/%m/%Y %H:%M"
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:283
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr "%a %d/%m/%Y %I:%M %p"
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:312 widgets/misc/e-dateedit.c:1259
-#: widgets/misc/e-dateedit.c:1318 widgets/misc/e-dateedit.c:1497
-msgid "%H:%M"
-msgstr "%H:%M"
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:315
-msgid "%H:%M:%S"
-msgstr "%H:%M:%S"
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:320 widgets/misc/e-dateedit.c:1262
-#: widgets/misc/e-dateedit.c:1321 widgets/misc/e-dateedit.c:1500
-msgid "%I:%M %p"
-msgstr "%I:%M %p"
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:323
-msgid "%I:%M:%S %p"
-msgstr "%I:%M:%S %p"
-
-#: executive-summary/component/component-factory.c:152
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr "Ne morem inicializirati Evolucijine komponente za povzetke."
-
-#: executive-summary/component/e-summary.c:924
-#, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"Nisem mogel odpreti HTML datoteke:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:938
-#, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr ""
-"Napaka ob branju podatkov:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:956
-msgid "File does not have a place for the services.\n"
-msgstr "Datoteka nima mesta za storitve.\n"
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-"Za ozadje izvleèka lahko izberete drugaèno HTML stran.\n"
-"\n"
-"Pustite pravno za privzete nastavitve"
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr "Odpri %s s privzetim GNOMEovim programom"
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr "Odpri %s s privzetim GNOMEovim brskalnikom"
-
-#: executive-summary/component/e-summary-url.c:71
-#, c-format
-msgid "Send an email to %s"
-msgstr "Po¹lji e-po¹to %s"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr "Spremeni pogled na %s"
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr "Po¾eni %s"
-
-#: executive-summary/component/e-summary-url.c:75
-#, c-format
-msgid "Close %s"
-msgstr "Zapri %s"
-
-#: executive-summary/component/e-summary-url.c:76
-#, c-format
-msgid "Move %s to the left"
-msgstr "Premakni %s na levo"
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr "Premakni %s na desno"
-
-#: executive-summary/component/e-summary-url.c:78
-#, c-format
-msgid "Move %s into the previous row"
-msgstr "Premakni %s v pre¹njo vrstico"
-
-#: executive-summary/component/e-summary-url.c:79
-#, c-format
-msgid "Move %s into the next row"
-msgstr "Premakni %s v naslednjo vrstico"
-
-#: executive-summary/component/e-summary-url.c:80
-#, c-format
-msgid "Configure %s"
-msgstr "Nastavi %s"
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr "Videz"
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr "Ozadje:"
-
-#: executive-summary/component/main.c:62
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-"Komponenta Povzetek ni mogla inicializirati Bonoba.\n"
-"Èe se je pokazalo opozorilo o RootPOA, to verjetno pomeni,\n"
-"da ste prevedli Bonobo z GOAD-om namesto z OAF-om."
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-msgid "Evolution component for the executive summary."
-msgstr "Evolucijina komponenta za povzetke."
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-msgid "Factory for the Evolution executive summary component."
-msgstr "Tovarna za Evolucijine komponente za povzetke."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr "Tovarna za povzetke RDF."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-msgid "RDF Summary"
-msgstr "Povzetek RDF"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-msgid "Factory for the test bonobo component."
-msgstr "Tovarna za preizkusno komponento bonobo."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-msgid "Factory for the test component."
-msgstr "Tovarna za preizkusno komponento."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr "Preizkusi storitev bonobo"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr "Preizkusi storitev"
-
-#: executive-summary/test-service/rdf-summary.c:512
-#: executive-summary/test-service/rdf-summary.c:549
-#: executive-summary/test-service/rdf-summary.c:594
-#: widgets/misc/e-messagebox.c:166
-msgid "Error"
-msgstr "Napaka"
-
-#: executive-summary/test-service/rdf-summary.c:768
-msgid "Update automatically"
-msgstr "Samodejno posodobi"
-
-#: executive-summary/test-service/rdf-summary.c:778
-msgid "Update now"
-msgstr "Posodobi sedaj"
-
-#: executive-summary/test-service/rdf-summary.c:788
-msgid "Update every "
-msgstr "Posodobi vsakih"
-
-#: executive-summary/test-service/rdf-summary.c:796
-#: filter/filter-datespec.c:83
-msgid "minutes"
-msgstr "minut"
-
-#: filter/filter-datespec.c:78
-msgid "year"
-msgstr "leto"
-
-#: filter/filter-datespec.c:78
-msgid "years"
-msgstr "let"
-
-#: filter/filter-datespec.c:79
-msgid "month"
-msgstr "mesec"
-
-#: filter/filter-datespec.c:79
-msgid "months"
-msgstr "mesecev"
-
-#: filter/filter-datespec.c:80
-msgid "week"
-msgstr "teden"
-
-#: filter/filter-datespec.c:80
-msgid "weeks"
-msgstr "tedenov"
-
-#: filter/filter-datespec.c:81
-msgid "days"
-msgstr "dni"
-
-#: filter/filter-datespec.c:82
-msgid "hour"
-msgstr "ura"
-
-#: filter/filter-datespec.c:82
-msgid "hours"
-msgstr "ur"
-
-#: filter/filter-datespec.c:83
-msgid "minute"
-msgstr "minuta"
-
-#: filter/filter-datespec.c:84
-msgid "second"
-msgstr "sekunda"
-
-#: filter/filter-datespec.c:84
-msgid "seconds"
-msgstr " sekund"
-
-#: filter/filter-datespec.c:199
-msgid "Oops. You have forgotten to choose a date."
-msgstr "Opa. Pozabili ste izbrati datum."
-
-#: filter/filter-datespec.c:201
-msgid "Oops. You have chosen an invalid date."
-msgstr "Opa. Izbrali ste neveljaven datum."
-
-#: filter/filter-datespec.c:276
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-"Datum tega sporoèila bo primerjan s\n"
-"èasom ob katerem se bo pognal filter\n"
-"ali vmapa odprta."
-
-#: filter/filter-datespec.c:299
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-"Datum tega sporoèila bo primerjan s èasom,\n"
-"ki ga navedete tu."
-
-#: filter/filter-datespec.c:339
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-"Datum tega sporoèila bo primerjan s èasom\n"
-"relativnim glede na èas zagona filtra;\n"
-".na primer \"teden dni nazaj\"."
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:374
-msgid "the current time"
-msgstr "trenutni èas"
-
-#: filter/filter-datespec.c:374
-msgid "a time you specify"
-msgstr "èas, ki ga navedete"
-
-#: filter/filter-datespec.c:375
-msgid "a time relative to the current time"
-msgstr "èas, relatievn trenutnemu"
-
-#. The label
-#: filter/filter-datespec.c:433
-msgid "Compare against"
-msgstr "Primerjaj z"
-
-#: filter/filter-datespec.c:550 filter/filter-datespec.c:710
-msgid "now"
-msgstr "sedaj"
-
-#: filter/filter-datespec.c:707
-msgid "<click here to select a date>"
-msgstr "<kliknite tukaj za izbiro datuma>"
-
-#: filter/filter-editor.c:132 filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr "Pravila filtriranja"
-
-#. and now for the action area
-#: filter/filter-filter.c:452
-msgid "Then"
-msgstr "Potem"
-
-#: filter/filter-filter.c:466
-msgid "Add action"
-msgstr "Dodaj dejanje"
-
-#: filter/filter-folder.c:147
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-"Opa, pozabili ste izbrati mapo.\n"
-"Prosim pojdite nazaj in navedite veljavno mapo kamor naj se po¹ta dostavi."
-
-#: filter/filter-folder.c:225 filter/vfolder-rule.c:285
-#: mail/mail-account-gui.c:682
-msgid "Select Folder"
-msgstr "Izberi mapo"
-
-#: filter/filter-folder.c:250
-msgid "Enter folder URI"
-msgstr "Vnesite URI mape"
-
-#: filter/filter-folder.c:296
-msgid "<click here to select a folder>"
-msgstr "<kliknite tukaj za izbiro mape>"
-
-#: filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr "Uredi filtre"
-
-#: filter/filter.glade.h:5
-msgid "Edit VFolders"
-msgstr "Uredi vMape"
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr "Dohodna"
-
-#: filter/filter.glade.h:8
-msgid "Outgoing"
-msgstr "Odhodna"
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:130
-msgid "Virtual Folders"
-msgstr "Virtualne mape"
-
-#: filter/filter.glade.h:11
-msgid "specific folders only"
-msgstr "le izbrane mape"
-
-#: filter/filter.glade.h:12
-msgid "vFolder Sources"
-msgstr "Viri vMap"
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr "z vsemi aktivnimi oddaljenimi mapami"
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr "z vsemi krajevnimi in aktivnimi oddaljenimi mapami"
-
-#: filter/filter.glade.h:15
-msgid "with all local folders"
-msgstr "z vsemi krajevnimi mapami"
-
-#: filter/filter-input.c:193
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-"Napaka v regularnem izrazu '%s':\n"
-"%s"
-
-#: filter/filter-part.c:488
-msgid "Test"
-msgstr "Preizkus"
-
-#: filter/filter-rule.c:626
-msgid "Rule name: "
-msgstr "Ime pravila: "
-
-#: filter/filter-rule.c:630
-msgid "Untitled"
-msgstr "Neimenovan"
-
-#: filter/filter-rule.c:646
-msgid "If"
-msgstr "Èe"
-
-#: filter/filter-rule.c:664
-msgid "Execute actions"
-msgstr "Izvr¹i dejanja"
-
-#: filter/filter-rule.c:668
-msgid "if all criteria are met"
-msgstr "èe je zado¹èeno vsem pogojem"
-
-#: filter/filter-rule.c:673
-msgid "if any criteria are met"
-msgstr "èe je zado¹èeno kateremukoli pogoju"
-
-#: filter/filter-rule.c:684
-msgid "Add criterion"
-msgstr "Dodaj pogoj"
-
-#: filter/filter-rule.c:770
-msgid "incoming"
-msgstr "dohodna"
-
-#: filter/filter-rule.c:770
-msgid "outgoing"
-msgstr "odhodna"
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Colour"
-msgstr "Pripi¹i barvo"
-
-#: filter/libfilter-i18n.h:4
-msgid "Assign Score"
-msgstr "Pripi¹i toèke"
-
-#: filter/libfilter-i18n.h:5
-msgid "Attachments"
-msgstr "Priloge"
-
-#: filter/libfilter-i18n.h:7
-msgid "contains"
-msgstr "vsebuje"
-
-#: filter/libfilter-i18n.h:8
-msgid "Copy to Folder"
-msgstr "Kopiraj v mapo"
-
-#: filter/libfilter-i18n.h:9
-msgid "Date received"
-msgstr "Sprejeto dne"
-
-#: filter/libfilter-i18n.h:10
-msgid "Date sent"
-msgstr "Poslano dne"
-
-#: filter/libfilter-i18n.h:12
-msgid "Deleted"
-msgstr "Zbrisano"
-
-#: filter/libfilter-i18n.h:13
-msgid "does not contain"
-msgstr "ne vsebuje"
-
-#: filter/libfilter-i18n.h:14
-msgid "does not end with"
-msgstr "se ne konèa z"
-
-#: filter/libfilter-i18n.h:15
-msgid "does not exist"
-msgstr "ne obstaja"
-
-#: filter/libfilter-i18n.h:16
-msgid "does not sound like"
-msgstr "ne zveni kot"
-
-#: filter/libfilter-i18n.h:17
-msgid "does not start with"
-msgstr "se ne zaène z"
-
-#: filter/libfilter-i18n.h:18
-msgid "Do Not Exist"
-msgstr "ne obstaja"
-
-#: filter/libfilter-i18n.h:19
-msgid "Draft"
-msgstr "Osnutek"
-
-#: filter/libfilter-i18n.h:20
-msgid "ends with"
-msgstr "se konèa z"
-
-#: filter/libfilter-i18n.h:21
-msgid "Exist"
-msgstr "obstaja"
-
-#: filter/libfilter-i18n.h:22
-msgid "exists"
-msgstr "obstaja"
-
-#: filter/libfilter-i18n.h:23
-msgid "Expression"
-msgstr "Izraz"
-
-#: filter/libfilter-i18n.h:24
-msgid "Forward to Address"
-msgstr "Posreduj na naslove"
-
-#: filter/libfilter-i18n.h:25
-msgid "Important"
-msgstr "Pomembno"
-
-#: filter/libfilter-i18n.h:26
-msgid "is"
-msgstr "je"
-
-#: filter/libfilter-i18n.h:27
-msgid "is greater than"
-msgstr "je veèje"
-
-#: filter/libfilter-i18n.h:28
-msgid "is less than"
-msgstr "je manj¹e"
-
-#: filter/libfilter-i18n.h:29
-msgid "is not"
-msgstr "ni"
-
-#: filter/libfilter-i18n.h:30
-msgid "Mailing list"
-msgstr "Dopisni seznam"
-
-#: filter/libfilter-i18n.h:31
-msgid "Message Body"
-msgstr "Jedro sporoèila"
-
-#: filter/libfilter-i18n.h:32
-msgid "Message Header"
-msgstr "Glava sporoèila"
-
-#: filter/libfilter-i18n.h:33
-msgid "Message was received"
-msgstr "Sporoèilo je bilo sprejeto"
-
-#: filter/libfilter-i18n.h:34
-msgid "Message was sent"
-msgstr "Sporoèilo je bilo poslano"
-
-#: filter/libfilter-i18n.h:35
-msgid "Move to Folder"
-msgstr "Prestavi v mapo"
-
-#: filter/libfilter-i18n.h:36
-msgid "on or after"
-msgstr "na ali po"
-
-#: filter/libfilter-i18n.h:37
-msgid "on or before"
-msgstr "na ali pred"
-
-#: filter/libfilter-i18n.h:38
-msgid "Read"
-msgstr "Beri"
-
-#: filter/libfilter-i18n.h:39
-msgid "Recipients"
-msgstr "Prejemnik"
-
-#: filter/libfilter-i18n.h:40
-msgid "Regex Match"
-msgstr "Regularni izraz"
-
-#: filter/libfilter-i18n.h:41
-msgid "Replied to"
-msgstr "Odgovorjeno na"
-
-#: filter/libfilter-i18n.h:42 filter/score-rule.c:204 filter/score-rule.c:206
-#: mail/message-list.c:1082
-msgid "Score"
-msgstr "Toèke"
-
-#: filter/libfilter-i18n.h:43
-msgid "Sender"
-msgstr "Po¹iljatelj"
-
-#: filter/libfilter-i18n.h:44
-msgid "Set Status"
-msgstr "Nastavi stanje"
-
-#: filter/libfilter-i18n.h:45
-msgid "sounds like"
-msgstr "zveni kot"
-
-#: filter/libfilter-i18n.h:46
-msgid "Source Account"
-msgstr "Izvorni raèun"
-
-#: filter/libfilter-i18n.h:47
-msgid "Specific header"
-msgstr "Doloèena glava"
-
-#: filter/libfilter-i18n.h:48
-msgid "starts with"
-msgstr "se zaène z"
-
-#: filter/libfilter-i18n.h:50
-msgid "Stop Processing"
-msgstr "Prenehaj z obdelavo"
-
-#: filter/libfilter-i18n.h:51 mail/message-list.c:1083
-msgid "Subject"
-msgstr "Zadeva"
-
-#: filter/libfilter-i18n.h:52
-msgid "was after"
-msgstr "je bilo po"
-
-#: filter/libfilter-i18n.h:53
-msgid "was before"
-msgstr "je bilo pred"
-
-#: filter/rule-editor.c:147
-msgid "Rules"
-msgstr "Pravila"
-
-#: filter/rule-editor.c:240
-msgid "Add Rule"
-msgstr "Dodaj pravilo"
-
-#: filter/rule-editor.c:299
-msgid "Edit Rule"
-msgstr "Uredi pravilo"
-
-#: filter/score-editor.c:130
-msgid "Score Rules"
-msgstr "Toèke pravil"
-
-#: mail/component-factory.c:329
-msgid "Cannot initialize Evolution's mail component."
-msgstr "Ne morem inicializirati Evolucijine komponente za po¹to."
-
-#: mail/component-factory.c:402
-msgid "Cannot register storage with shell"
-msgstr "Ne morem registrirati shrambe z lupino"
-
-#: mail/folder-browser.c:267
-msgid "Store search as vFolder"
-msgstr "Shrani iskanje kot vMapo"
-
-#: mail/folder-browser.c:575 ui/evolution-mail.xml.h:91
-msgid "VFolder on _Subject"
-msgstr "vMapa glede na p_redmet"
-
-#: mail/folder-browser.c:578 ui/evolution-mail.xml.h:89
-msgid "VFolder on Se_nder"
-msgstr "vMapa glede na _po¹iljatelja"
-
-#: mail/folder-browser.c:581 ui/evolution-mail.xml.h:90
-msgid "VFolder on _Recipients"
-msgstr "vMapa glede na _sprejemnike"
-
-#: mail/folder-browser.c:584 ui/evolution-mail.xml.h:88
-msgid "VFolder on Mailing _List"
-msgstr "vMapa glede na po¹tni se_znam"
-
-#: mail/folder-browser.c:590
-msgid "Filter on Sub_ject"
-msgstr "Filter glede na za_devo"
-
-#: mail/folder-browser.c:593
-msgid "Filter on Sen_der"
-msgstr "Filter glede na po¹ilja_telja"
-
-#: mail/folder-browser.c:596
-msgid "Filter on Re_cipients"
-msgstr "Filter glede na preje_mnike"
-
-#: mail/folder-browser.c:599
-msgid "Filter on _Mailing List"
-msgstr "Filter glede na p_o¹tni seznam"
-
-#: mail/folder-browser.c:608
-msgid "_Open"
-msgstr "_Odpri"
-
-#: mail/folder-browser.c:610
-msgid "Resend"
-msgstr "Znova po¹lji"
-
-#: mail/folder-browser.c:612 ui/evolution-calendar.xml.h:43
-#: ui/evolution-mail.xml.h:113 ui/evolution-tasks.xml.h:8
-msgid "_Save As..."
-msgstr "_Shrani kot..."
-
-#: mail/folder-browser.c:614 ui/evolution-event-editor.xml.h:69
-#: ui/evolution-task-editor-dialog.xml.h:82 ui/evolution-tasks.xml.h:7
-msgid "_Print"
-msgstr "Na_tisni"
-
-#: mail/folder-browser.c:619
-msgid "_Reply to Sender"
-msgstr "_Odgovori po¹iljatelju"
-
-#: mail/folder-browser.c:621 ui/evolution-mail.xml.h:66
-msgid "Reply to _All"
-msgstr "Odgovori _vsem"
-
-#: mail/folder-browser.c:623 ui/evolution-mail.xml.h:102
-msgid "_Forward"
-msgstr "_Posreduj naprej"
-
-#: mail/folder-browser.c:625
-msgid "Forward _inline"
-msgstr "Posreduj naprej kot _del sporoèila"
-
-#: mail/folder-browser.c:628 ui/evolution-mail.xml.h:40
-msgid "Mar_k as Read"
-msgstr "Oznaèi kot _prebrano"
-
-#: mail/folder-browser.c:630 ui/evolution-mail.xml.h:44
-msgid "Mark as U_nread"
-msgstr "Oznaèi kot _neprebrano"
-
-#: mail/folder-browser.c:635 ui/evolution-mail.xml.h:107
-msgid "_Move to Folder..."
-msgstr "Prestavi v _mapo..."
-
-#: mail/folder-browser.c:637 ui/evolution-mail.xml.h:96
-msgid "_Copy to Folder..."
-msgstr "_Kopiraj v mapo..."
-
-#: mail/folder-browser.c:641 ui/evolution-mail.xml.h:118
-msgid "_Undelete"
-msgstr "_Odbri¹i"
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:651 ui/evolution-mail.xml.h:1
-msgid "Apply Filters"
-msgstr "Uveljavi filtre"
-
-#: mail/folder-browser.c:655
-msgid "Create Ru_le From Message"
-msgstr "Iz sporoèila ustvari _pravilo"
-
-#: mail/folder-browser.c:794
-msgid "Filter on Mailing List"
-msgstr "Filter glede na Po¹tni seznam"
-
-#: mail/folder-browser.c:795
-msgid "VFolder on Mailing List"
-msgstr "vMapa glede na Po¹tni seznam"
-
-#: mail/folder-browser.c:797
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr "Filter glede na Po¹tni seznam (%s)"
-
-#: mail/folder-browser.c:798
-#, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr "vMapa glede na Po¹tni seznam (%s)"
-
-#: mail/folder-browser-factory.c:213
-#, c-format
-msgid "Properties for \"%s\""
-msgstr "Lastnosti za \"%s\""
-
-#: mail/folder-browser-factory.c:215 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-msgid "Properties"
-msgstr "Lastnosti"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr "Evolucijina komponenta za obravnavo po¹te."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-msgid "Evolution mail composer."
-msgstr "Evolucijin setavljalnik po¹te."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-msgid "Evolution mail executive summary component."
-msgstr "Evolucijina komponenta za povzetke."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-msgid "Evolution mail folder display component."
-msgstr "Evolucijina komponenta za po¹tne mape."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-msgid "Evolution mail folder factory component."
-msgstr "Evolucijina komponenta za tovarne po¹tnih map."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-msgid "Factory for the Evolution composer."
-msgstr "Tovarna za Evolucijinega skladatelja."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-msgid "Factory for the Evolution mail component."
-msgstr "Tovarna za Evolucijino komponento po¹te."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-msgid "Factory for the Mail Summary component."
-msgstr "Tovarna za komponento povzetka po¹te."
-
-#: mail/importers/elm-importer.c:420
-msgid ""
-"Evolution has found Elm mail files.\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-"Evolucija je na¹la po¹tne datoteke programa Elm.\n"
-"Jih ¾elite uvoziti v Evolucijo?"
-
-#: mail/importers/elm-importer.c:430
-msgid "Elm mail"
-msgstr "Po¹tni program Elm"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:1
-msgid "Factory to import mbox into Evolution"
-msgstr "Tovarna za uvoz mbox predalov v Evolucijo"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:2
-msgid "Imports mbox files into Evolution"
-msgstr "Uvozi mbox daoteke v Evolucijo"
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:1
-msgid "Factory to import Outlook Express 4 mails into Evolution"
-msgstr "Tovarna za uvoz po¹te Outlook Express 4 v Evolucijo"
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:2
-msgid "Imports Outlook Express 4 files into Evolution"
-msgstr "Uvozi datoteke Outlook Express 4 v Evolucijo"
-
-#: mail/importers/netscape-importer.c:440
-msgid ""
-"Evolution has found Netscape mail files.\n"
-"Would you like them to be imported into Evolution?"
-msgstr ""
-"Evolucija je na¹la po¹tne datoteke programa Netscape.\n"
-"Jih ¾elite uvoziti v Evolucijo?"
-
-#: mail/importers/pine-importer.c:385
-msgid ""
-"Evolution has found Pine mail files.\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-"Evolucija je na¹la po¹tne datoteke programa Pine.\n"
-"Jih ¾elite uvoziti v Evolucijo?"
-
-
-#: mail/importers/pine-importer.c:395
-msgid "Pine mail"
-msgstr "Po¹tni program Pine"
-
-#: mail/local-config.glade.h:1
-msgid "Current store format:"
-msgstr "Trenutna oblika hranjenja:"
-
-#: mail/local-config.glade.h:2
-msgid "Mailbox Format"
-msgstr "Tip po¹tnega predala"
-
-#: mail/local-config.glade.h:3
-msgid "New store format:"
-msgstr "Nova oblika hranjenja:"
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-"Opomba: Ob pretvarjanju med razliènimi oblikami po¹tnih predalov\n"
-"napaka (na primer pomanjkanje prosotra na disku) ni nujno samodejno\n"
-" odpravljiva. Prosimo to mo¾nost uprabljajte pazljivo."
-
-#: mail/local-config.glade.h:7
-msgid "maildir"
-msgstr "maildir"
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr "mbox"
-
-#: mail/local-config.glade.h:9
-msgid "mh"
-msgstr "mh"
-
-#: mail/mail-account-editor.c:105
-msgid "You have not filled in all of the required information."
-msgstr "Niste vpisali vseh potrebnih podatkov."
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:173
-msgid "Evolution Account Editor"
-msgstr "Urejevalnik Evolucijinih raèunov"
-
-#: mail/mail-accounts.c:121 mail/mail-accounts.c:165
-msgid " (default)"
-msgstr " (privzeto)"
-
-#: mail/mail-accounts.c:197
-msgid "Disable"
-msgstr "Izkljuèi"
-
-#: mail/mail-accounts.c:199 mail/mail-config.glade.h:25
-msgid "Enable"
-msgstr "Vkljuèi"
-
-#: mail/mail-accounts.c:280 mail/mail-accounts.c:284
-msgid "Are you sure you want to delete this account?"
-msgstr "Ste preprièani, da ¾elite zbrisati ta raèun?"
-
-#: mail/mail-accounts.c:418 mail/mail-accounts.c:422
-msgid "Are you sure you want to delete this news account?"
-msgstr "Ste preprièani, ¾elite zbrisati ta novièarski raèun?"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:536
-msgid "Evolution Account Manager"
-msgstr "Upravljalnik Evolucijinih raèunov"
-
-#: mail/mail-autofilter.c:70
-#, c-format
-msgid "Mail to %s"
-msgstr "Po¹ta za %s"
-
-#: mail/mail-autofilter.c:213
-#, c-format
-msgid "Subject is %s"
-msgstr "Zadeva je %s"
-
-#: mail/mail-autofilter.c:229
-#, c-format
-msgid "Mail from %s"
-msgstr "Po¹ta od %s"
-
-#: mail/mail-autofilter.c:285
-#, c-format
-msgid "%s mailing list"
-msgstr "%s po¹tnih seznamov"
-
-#: mail/mail-autofilter.c:335 mail/mail-autofilter.c:356
-msgid "Add Filter Rule"
-msgstr "Filtru dodaj pravilo"
-
-#: mail/mail-callbacks.c:96
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-"Niste nastavili va¹ega odjemalca po¹te.\n"
-"To morate storiti preden lahko po¹iljate,\n"
-"ali skladate po¹to.\n"
-"Bi ga ¾eleli nastaviti sedaj?"
-
-#: mail/mail-callbacks.c:149
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-"Nastaviti morate sovjo identiteto\n"
-"preden lahko skladate po¹to."
-
-#: mail/mail-callbacks.c:161
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-"Nastaviti morate naèin prenosa po¹te\n"
-"preden lahko skladate po¹to."
-
-#: mail/mail-callbacks.c:205
-msgid "You have not set a mail transport method"
-msgstr "Niste nastavili postopka prena¹anja po¹te"
-
-#: mail/mail-callbacks.c:238
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-"To poroèilo nima 'zadeve'.\n"
-"Resnièno po¹lji?"
-
-#: mail/mail-callbacks.c:311
-msgid "You must specify recipients in order to send this message."
-msgstr "Navesti morate naslovnike, èe ¾eliti poslati sporoèilo."
-
-#: mail/mail-callbacks.c:354
-msgid "You must configure an account before you can send this email."
-msgstr "Nastaviti morate raèun preden lahko po¹ljete to e-po¹to."
-
-#: mail/mail-callbacks.c:593
-msgid "On %s, %s wrote:"
-msgstr "Na %s, je %s zapisal(a):"
-
-#: mail/mail-callbacks.c:774
-msgid "Forwarded message:\n"
-msgstr "Posredovano sporoèilo:\n"
-
-#: mail/mail-callbacks.c:877
-msgid "Move message(s) to"
-msgstr "Prestavi sporoèilo(a) v"
-
-#: mail/mail-callbacks.c:879
-msgid "Copy message(s) to"
-msgstr "Kopiraj sporoèilo(a) v"
-
-#: mail/mail-callbacks.c:1156
-msgid "Are you sure you want to edit all %d messages?"
-msgstr "Ste preprièani, da ¾elite urediti vseh %d sporoèil?"
-
-#: mail/mail-callbacks.c:1170
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-"Urejate lahko le sporoèila shranjena\n"
-"v mapi Osnutki."
-
-#: mail/mail-callbacks.c:1202
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-"Znova lahko po¹ljete le sporoèila\n"
-" iz mape Poslano."
-
-#: mail/mail-callbacks.c:1224
-msgid "No Message Selected"
-msgstr "Izbrano ni nilo nobeno sporoèilo"
-
-#: mail/mail-callbacks.c:1250 mail/mail-display.c:90
-msgid "Overwrite file?"
-msgstr "Prepi¹i datoteko?"
-
-#: mail/mail-callbacks.c:1254 mail/mail-display.c:94
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-"Datoteka z enakim imenom ¾e obstaja.\n"
-"Naj jo prepi¹em?"
-
-#: mail/mail-callbacks.c:1298
-msgid "Save Message As..."
-msgstr "Shrani sporoèilo kot..."
-
-#: mail/mail-callbacks.c:1300
-msgid "Save Messages As..."
-msgstr "Shrani sporoèila kot..."
-
-#: mail/mail-callbacks.c:1435
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-"Napaka ob nalaganju podatkov o filtrih:\n"
-"%s"
-
-#: mail/mail-callbacks.c:1484 ui/evolution-mail.xml.h:56
-msgid "Print Message"
-msgstr "Natisni sporoèilo"
-
-#: mail/mail-callbacks.c:1531
-msgid "Printing of message failed"
-msgstr "Tiskanje sporoèila ni uspelo"
-
-#: mail/mail-callbacks.c:1609
-msgid "Are you sure you want to open all %d messages in separate windows?"
-msgstr "Ste preprièani, ¾elite odpreti vseh %d sporoèil v loèenih oknih?"
-
-#: mail/mail-config.c:1121 mail/mail-config.c:1124
-msgid "Connecting to server..."
-msgstr "Vzpostavljam povezavo s stre¾nikom..."
-
-#: mail/mail-config-druid.c:99
-msgid ""
-"Please enter your name and email address below. The \"optional\" fields "
-"below do not need to be filled in, unless you wish to include this "
-"information in email you send."
-msgstr ""
-"Prosimo spodaj vpi¹ite svoje ime in e-po¹tni naslov. Polj \"po ¾elji\" ni "
-"potrebno izpolniti, razen, èe ne ¾elite vkljuèiti te podatke v e-po¹to, ki "
-"jo boste po¹iljali."
-
-#: mail/mail-config-druid.c:101
-msgid ""
-"Please enter information about your incoming mail server below. If you don't "
-"know what kind of server you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"Prosimo spodaj vpi¹ite podatke o va¹em stre¾niku dohodne po¹te. Èe ne veste "
-"katero vrsto stre¾nika uporabljate se obrnite na va¹ega sistemskega "
-"administratorja ali ponudnika internet dostopa."
-
-#: mail/mail-config-druid.c:105
-msgid ""
-"Please enter information about your outgoing mail protocol below. If you "
-"don't know which protocol you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"Prosimo spodaj vpi¹ite podatke o va¹em stre¾niku odhodne po¹te. Èe ne veste "
-"kater protokol uporabljatie se obrnite na va¹ega sistemskega administratorja "
-"ali ponudnika internet dostopa."
-
-#: mail/mail-config-druid.c:107
-msgid ""
-"You are almost done with the mail configuration process. The identity, "
-"incoming mail server and outgoing mail transport method which you provided "
-"will be grouped together to make an Evolution mail account. Please enter a "
-"name for this account in the space below. This name will be used for display "
-"purposes only."
-msgstr ""
-"Skoraj ste ¾e konèali z procesom nastavljanja po¹te. Identiteta, stre¾nik "
-"prihajajoèe po¹te in metoda po¹iljanja po¹te bodo zdru¾ene skupaj in tako bo "
-"ustvarjen raèun po¹te Evolucija. Prosimo v prostor spodaj vpi¹ite ime za ta "
-"raèun. Ime bo uporabljeno le za prikaz."
-
-#. set window title
-#: mail/mail-config-druid.c:445
-msgid "Evolution Account Wizard"
-msgstr "Evolucijin èarovnik za raèune"
-
-#: mail/mail-config.glade.h:1
-msgid " Check for supported types "
-msgstr " Preveri za podprte tipe"
-
-#: mail/mail-config.glade.h:2
-msgid " color"
-msgstr " barva"
-
-#: mail/mail-config.glade.h:3
-msgid "Account"
-msgstr "Raèun"
-
-#: mail/mail-config.glade.h:4
-msgid "Account Information"
-msgstr "Podatki o raèunu"
-
-#: mail/mail-config.glade.h:5
-msgid "Account Management"
-msgstr "Upravljanje z raèunom"
-
-#: mail/mail-config.glade.h:6
-msgid "Accounts"
-msgstr "Raèuni"
-
-#: mail/mail-config.glade.h:8
-msgid "Authentication"
-msgstr "Avtentifikacija"
-
-#: mail/mail-config.glade.h:9
-msgid "Authentication Type: "
-msgstr "Naèin avtentifikacije: "
-
-#: mail/mail-config.glade.h:10
-msgid "Automatically check for new mail every"
-msgstr "Samodejno preveri za novo po¹to vsakih"
-
-#: mail/mail-config.glade.h:12
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-"Èestitke, nastavljanje va¹e po¹te je konèano.\n"
-"\n"
-"Sedaj ste pripravljeni na sprejemanje in po¹iljanje po¹te \n"
-"s pomoèjo Evolucije. \n"
-"\n"
-"Kliknite \"Konèaj\" za shranitev va¹ih nastavitev."
-
-#: mail/mail-config.glade.h:18
-msgid "De_fault"
-msgstr "_Privzeto"
-
-#: mail/mail-config.glade.h:20
-msgid "Done"
-msgstr "Opravljeno"
-
-#: mail/mail-config.glade.h:21
-msgid "Drafts"
-msgstr "Osnutki"
-
-#: mail/mail-config.glade.h:22
-msgid "Drafts folder:"
-msgstr "Mapa osnutkov:"
-
-#: mail/mail-config.glade.h:24
-msgid "Email Address:"
-msgstr "E-po¹tni naslov:"
-
-#: mail/mail-config.glade.h:26
-msgid "Full Name:"
-msgstr "Polno ime:"
-
-#: mail/mail-config.glade.h:27
-msgid "Highlight citations with "
-msgstr "Osvetli citiranja z "
-
-#: mail/mail-config.glade.h:29
-msgid "IMAPv4 "
-msgstr "IMAPv4 "
-
-#: mail/mail-config.glade.h:30
-msgid "Identity"
-msgstr "Identiteta"
-
-#: mail/mail-config.glade.h:31
-msgid "Kerberos "
-msgstr "Kerberos "
-
-#: mail/mail-config.glade.h:32
-msgid "Mail Configuration"
-msgstr "Nastavitev po¹te"
-
-#: mail/mail-config.glade.h:33
-msgid "Make this my default account"
-msgstr "Naj bo to moj privzet raèun"
-
-#: mail/mail-config.glade.h:34
-msgid "Mark messages as \"Read\" after:"
-msgstr "Oznaèi sporoèila kot \"Prebrana\" po:"
-
-#: mail/mail-config.glade.h:36
-msgid "News"
-msgstr "Novice"
-
-#: mail/mail-config.glade.h:38
-msgid "Optional Information"
-msgstr "Podatki po ¾elji"
-
-#: mail/mail-config.glade.h:39
-msgid "Organization:"
-msgstr "Organizacija:"
-
-#: mail/mail-config.glade.h:41
-msgid "PGP binary path:"
-msgstr "Pot do izvr¹ljive datoteke PGP"
-
-#: mail/mail-config.glade.h:46
-msgid "Qmail maildir "
-msgstr "Po¹tni imenik Qmail"
-
-#: mail/mail-config.glade.h:47
-msgid "Receiving Email"
-msgstr "Sprejemanje e-po¹te"
-
-#: mail/mail-config.glade.h:48
-msgid "Receiving Mail"
-msgstr "Sprejemam po¹to"
-
-#: mail/mail-config.glade.h:49
-msgid "Receiving Options"
-msgstr "Sprejemam mo¾nosti"
-
-#: mail/mail-config.glade.h:51
-msgid "Required Information"
-msgstr "Potrebni podatki"
-
-#: mail/mail-config.glade.h:53
-msgid "Select PGP binary"
-msgstr "Izberi datoteko PGP"
-
-#: mail/mail-config.glade.h:54
-msgid "Send mail in HTML format by default."
-msgstr "Privzeto po¹lji po¹to v HTML obliki."
-
-#: mail/mail-config.glade.h:55
-msgid "Sending Email"
-msgstr "Po¹iljam e-po¹to"
-
-#: mail/mail-config.glade.h:56
-msgid "Sending Mail"
-msgstr "Po¹iljam po¹to"
-
-#: mail/mail-config.glade.h:58
-msgid "Sent"
-msgstr "Poslano"
-
-#: mail/mail-config.glade.h:59
-msgid "Sent and Draft Messages"
-msgstr "Poslana sporoèila in osnutki"
-
-#: mail/mail-config.glade.h:60
-msgid "Sent messages folder:"
-msgstr "Mapa poslanih sporoèil:"
-
-#: mail/mail-config.glade.h:61
-msgid "Server Configuration"
-msgstr "Nastavitev stre¾nika"
-
-#: mail/mail-config.glade.h:62
-msgid "Server Type: "
-msgstr "Vrsta stre¾nika:"
-
-#: mail/mail-config.glade.h:63
-msgid "Server requires authentication"
-msgstr "Stre¾nik zahteva avtentifikacijo"
-
-#: mail/mail-config.glade.h:64
-msgid "Signature file:"
-msgstr "Datoteka s podpisom:"
-
-#: mail/mail-config.glade.h:65
-msgid "Sources"
-msgstr "Viri"
-
-#: mail/mail-config.glade.h:66
-msgid "Special Folders"
-msgstr "Posebne mape"
-
-#: mail/mail-config.glade.h:67
-msgid "Standard Unix mbox"
-msgstr "Obièajnen Unix po¹tni predal"
-
-#: mail/mail-config.glade.h:68
-msgid "Type"
-msgstr "Vrsta"
-
-#: mail/mail-config.glade.h:69
-msgid "Use secure connection (SSL)"
-msgstr "Uporabi varno povezavo (SSL)"
-
-#: mail/mail-config.glade.h:70
-msgid "Username:"
-msgstr "Uporabni¹ko ime:"
-
-#: mail/mail-config.glade.h:71
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-"Dobrodo¹li v Evolucijinem druidu za nastavitev po¹te.\n"
-"\n"
-"Kliknite \"Naprej\" za zaèetek. "
-
-#: mail/mail-config.glade.h:76 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:43 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:30
-msgid "_Edit"
-msgstr "_Uredi"
-
-#: mail/mail-display.c:194
-msgid "Save Attachment"
-msgstr "Shrani prilogo"
-
-#: mail/mail-display.c:234
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr "Nisem mogel ustvariti zaèasnega imenika: %s"
-
-#: mail/mail-display.c:295
-msgid "Save to Disk..."
-msgstr "Shrani na disk..."
-
-#: mail/mail-display.c:297
-#, c-format
-msgid "Open in %s..."
-msgstr "Odpri v %s..."
-
-#: mail/mail-display.c:299
-msgid "View Inline"
-msgstr "Poglej vsebino"
-
-#: mail/mail-display.c:334
-msgid "External Viewer"
-msgstr "zunanjem pregledovalniku"
-
-#: mail/mail-display.c:357
-#, c-format
-msgid "View Inline (via %s)"
-msgstr "Poglej vsebino (z %s)"
-
-#: mail/mail-display.c:361
-msgid "Hide"
-msgstr "Skrij"
-
-#: mail/mail-display.c:1107
-msgid "Open link in browser"
-msgstr "Odpri povezavo v brskalniku"
-
-#: mail/mail-display.c:1109
-msgid "Save as (FIXME)"
-msgstr "Shrani kot (FIXME)"
-
-#: mail/mail-display.c:1111
-msgid "Copy location (FIXME)"
-msgstr "Kopiraj mesto (FIXME)"
-
-#: mail/mail-format.c:522
-#, c-format
-msgid "%s attachment"
-msgstr "%s priloga"
-
-#: mail/mail-format.c:564
-msgid "Could not parse MIME message. Displaying as source."
-msgstr "Nisem mogel razèleniti sporoèila MIME. Ka¾em izvorno besedilo."
-
-#: mail/mail-format.c:771
-msgid "Loading message content"
-msgstr "Nalagam vsebino sporoèila"
-
-#: mail/mail-format.c:1078
-msgid "No GPG/PGP program configured."
-msgstr "Program GPG/PGP ni nastavljen."
-
-#: mail/mail-format.c:1093
-msgid "Encrypted message not displayed"
-msgstr "©ifrirano sporoèilo ni prikazano"
-
-#: mail/mail-format.c:1099
-msgid "Encrypted message"
-msgstr "©ifrirano sporoèilo"
-
-#: mail/mail-format.c:1100
-msgid "Click icon to decrypt."
-msgstr "Kliknite ikono za de¹ifriranje."
-
-#: mail/mail-format.c:1190 mail/mail-format.c:1578
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr "To sporoèilo ima elektronski podpis in je ugotovljeno za avtentièno."
-
-#: mail/mail-format.c:1198 mail/mail-format.c:1586
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr ""
-"To sporoèilo ima elektronski podpis, a se ne da dokazati, da je avtentièno."
-
-#: mail/mail-format.c:1799
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr "Kazalec na FTP povezavo (%s)"
-
-#: mail/mail-format.c:1811
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr "Kazalec na krajevno datoteko (%s) veljaven na stre¾niku \"%s\""
-
-#: mail/mail-format.c:1815
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr "Kazalec na lokalno datoteko (%s)"
-
-#: mail/mail-format.c:1849
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr "Kazalec na neznane zunanje podatke (tip \"%s\")"
-
-#: mail/mail-format.c:1854
-msgid "Malformed external-body part."
-msgstr "Napaèno oblikovano dodatno telo sporoèila."
-
-#: mail/mail-local.c:337
-#, c-format
-msgid "No such folder %s"
-msgstr "Ni tak¹ne mape %s"
-
-#: mail/mail-local.c:509
-#, c-format
-msgid "Opening '%s'"
-msgstr "Odpiram '%s'"
-
-#: mail/mail-local.c:787
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr "Spreminjam obliko zapisa mape iz \"%s\" v \"%s\""
-
-#: mail/mail-local.c:791
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr "Spremeni obliko zapisa mape iz \"%s\" v \"%s\""
-
-#: mail/mail-local.c:814
-msgid "Reconfiguring folder"
-msgstr "Prenastavljam mapo"
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:843
-msgid "Closing current folder"
-msgstr "Zapiram trenutno mapo"
-
-#: mail/mail-local.c:875
-msgid "Renaming old folder and opening"
-msgstr "Preimenujem in odpiram staro mapo"
-
-#: mail/mail-local.c:893
-msgid "Creating new folder"
-msgstr "Ustvari novo mapo"
-
-#: mail/mail-local.c:907
-msgid "Copying messages"
-msgstr "Kopiram sporoèilo"
-
-#: mail/mail-local.c:924
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-"Nisem mogel shraniti meta podatkov mape; verjetno ne boste veè mogli odpreti "
-"te mape: %s"
-
-#: mail/mail-local.c:963
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-"Èe ne morete veè odpreti tega po¹tnega predala, potem\n"
-"ga boste morda morali popraviti roèno."
-
-#: mail/mail-mt.c:190
-#, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-"Napaka ob '%s':\n"
-"%s"
-
-#: mail/mail-mt.c:193
-#, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-"Napaka ob opravljanju dejanja:\n"
-"%s"
-
-#: mail/mail-mt.c:516 mail/mail-mt.c:545 mail/mail-mt.c:880
-msgid "Working"
-msgstr "Delam"
-
-#: mail/mail-mt.c:862
-msgid "Evolution progress"
-msgstr "Napredek evolucije"
-
-#: mail/mail-ops.c:599
-#, c-format
-msgid "Sending \"%s\""
-msgstr "Po¹iljam \"%s\""
-
-#: mail/mail-ops.c:603
-msgid "Sending message"
-msgstr "Po¹iljam sporoèilo"
-
-#: mail/mail-ops.c:718
-msgid "Sending message %d of %d"
-msgstr "Po¹iljam sporoèilo %d od %d"
-
-#: mail/mail-ops.c:737
-msgid "Failed on message %d of %d"
-msgstr "Neuspeh pri sporoèilu %d od %d"
-
-#: mail/mail-ops.c:739 mail/mail-send-recv.c:475
-msgid "Complete."
-msgstr "Konèano."
-
-#: mail/mail-ops.c:825
-msgid "Saving message to folder"
-msgstr "Shranjujem sporoèilo v mapo"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Moving messages to %s"
-msgstr "Prestavljam sporoèila v %s"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Copying messages to %s"
-msgstr "Kopiram sporoèia v %s"
-
-#: mail/mail-ops.c:914
-msgid "Moving"
-msgstr "Prestavljam"
-
-#: mail/mail-ops.c:917
-msgid "Copying"
-msgstr "Kopiram"
-
-#: mail/mail-ops.c:992
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr "Osve¾ujem mape v \"%s\""
-
-#: mail/mail-ops.c:1152
-msgid "Forwarded messages"
-msgstr "Posredovana sporoèila"
-
-#: mail/mail-ops.c:1193 mail/mail-ops.c:1331
-#, c-format
-msgid "Opening folder %s"
-msgstr "Odpiram mapo %s"
-
-#: mail/mail-ops.c:1260
-#, c-format
-msgid "Opening store %s"
-msgstr "Odpiram shrambo %s"
-
-#: mail/mail-ops.c:1447
-msgid "Expunging folder"
-msgstr "Unièujem mapo"
-
-#: mail/mail-ops.c:1496
-#, c-format
-msgid "Retrieving message %s"
-msgstr "Prena¹am sporoèilo %s"
-
-#: mail/mail-ops.c:1563
-msgid "Retrieving messages"
-msgstr "Prena¹am sporoèilo"
-
-#: mail/mail-ops.c:1573
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr "Prena¹am sporoèilo ¹tevilka %d od %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1647
-msgid "Saving messages"
-msgstr "Shranjujem sporoèila"
-
-#: mail/mail-ops.c:1726
-#, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr ""
-"Nisem mogel ustvariti izhodne datoteke: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1739
-#, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr "Shranjujem sporoèilo %d od %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1753
-#, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr ""
-"Napaka ob shranjevanju sporoèil v: %s:\n"
-" %s"
-
-#: mail/mail-ops.c:1827
-msgid "Saving attachment"
-msgstr "Shranjujem prilogo"
-
-#: mail/mail-ops.c:1842
-#, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr ""
-"Nisem mogel ustvariti izhodne datoteke: %s:\n"
-" %s"
-
-#: mail/mail-ops.c:1870
-#, c-format
-msgid "Could not write data: %s"
-msgstr "Nisem model pisati podatkov: %s"
-
-#: mail/mail-search-dialogue.c:113
-msgid "_Search"
-msgstr "I_skanje"
-
-#: mail/mail-send-recv.c:138
-msgid "Cancelling ..."
-msgstr "Preklicujem ..."
-
-#: mail/mail-send-recv.c:233
-msgid "Send & Receive mail"
-msgstr "Oddaja in sprejem po¹te"
-
-#: mail/mail-send-recv.c:236
-msgid "Receiving"
-msgstr "Sprejemam"
-
-#: mail/mail-send-recv.c:285
-msgid "Updating ..."
-msgstr "Posodabljam ..."
-
-#: mail/mail-send-recv.c:287 mail/mail-send-recv.c:333
-msgid "Waiting ..."
-msgstr "Èakam ..."
-
-#: mail/mail-send-recv.c:306
-msgid "Sending"
-msgstr "Po¹iljam"
-
-#: mail/mail-send-recv.c:471
-msgid "Cancelled."
-msgstr "Preklicano."
-
-#: mail/mail-summary.c:110
-msgid "Incomplete message written on pipe!"
-msgstr "V cev je bilo zapisano nepopolno sporoèilo!"
-
-#: mail/mail-summary.c:468
-msgid "Mail Summary"
-msgstr "Povzetek po¹te"
-
-#: mail/mail-tools.c:141
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr "Nisem mogel ustvariti zaèasnega po¹tnega predala `%s': %s"
-
-#: mail/mail-tools.c:188
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr "[%s] (posredovano sporoèilo)"
-
-#: mail/mail-tools.c:198
-msgid "Fwd: (no subject)"
-msgstr "Posreduj: (ni zadeve)"
-
-#: mail/mail-tools.c:215
-#, c-format
-msgid "Forwarded message - %s"
-msgstr "Posredovano sporoèilo %s"
-
-#: mail/mail-tools.c:217
-msgid "Forwarded message (no subject)"
-msgstr "Posredovano sporoèilo (brez navedene zadeve)"
-
-#: mail/mail-tools.c:415
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> %"
-"s<br><b>Subject:</b> %s<br>"
-msgstr ""
-"-----Posredovano sporoèilo-----<br><b>Od:</b> %s<br><b>Za:</b> %"
-"s<br><b>Predmet:</b> %s<br>"
-
-#: mail/mail-vfolder.c:249
-msgid "VFolders"
-msgstr "vMape"
-
-#: mail/mail-vfolder.c:426
-msgid "New VFolder"
-msgstr "Nova vMapa"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/message-browser.c:189 ui/evolution-mail.xml.h:64
-msgid "Reply"
-msgstr "Odgovori"
-
-#: mail/message-browser.c:189 ui/evolution-mail.xml.h:70
-msgid "Reply to the sender of this message"
-msgstr "Odgovori po¹iljatelju tega sporoèila"
-
-#: mail/message-browser.c:192 ui/evolution-mail.xml.h:65
-msgid "Reply to All"
-msgstr "Odgovori vsem"
-
-#: mail/message-browser.c:192 ui/evolution-mail.xml.h:68
-msgid "Reply to all recipients of this message"
-msgstr "Odgovori vsem prejemnikom tega sporoèila"
-
-#: mail/message-browser.c:195 ui/evolution-mail.xml.h:25
-msgid "Forward"
-msgstr "Posreduj naprej"
-
-#: mail/message-browser.c:195 ui/evolution-mail.xml.h:29
-msgid "Forward this message"
-msgstr "Sporoèilo posreduj naprej"
-
-#: mail/message-browser.c:200 ui/evolution-mail.xml.h:61
-msgid "Print the selected message"
-msgstr "Natisni izbrano sporoèilo"
-
-#: mail/message-browser.c:203 ui/evolution-mail.xml.h:13
-msgid "Delete this message"
-msgstr "Zbri¹i to sporèilo"
-
-#: mail/message-browser.c:208 ui/evolution-event-editor.xml.h:33
-#: ui/evolution-mail.xml.h:54 ui/evolution-task-editor-dialog.xml.h:36
-msgid "Previous"
-msgstr "Prej¹nji"
-
-#: mail/message-browser.c:208
-msgid "Previous message"
-msgstr "Prej¹nje sporoèilo"
-
-#: mail/message-browser.c:211 ui/evolution-calendar.xml.h:18
-#: ui/evolution-event-editor.xml.h:29 ui/evolution-mail.xml.h:50
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "Next"
-msgstr "Naprej"
-
-#: mail/message-browser.c:211
-msgid "Next message"
-msgstr "Naslednje sporoèilo"
-
-#: mail/message-list.c:678
-msgid "Unseen"
-msgstr "Nevideno"
-
-#: mail/message-list.c:679
-msgid "Seen"
-msgstr "Videno"
-
-#: mail/message-list.c:680
-msgid "Answered"
-msgstr "Odgovorjeno"
-
-#: mail/message-list.c:681
-msgid "Multiple Unseen Messages"
-msgstr "veè nevidenih sporoèil"
-
-#: mail/message-list.c:682
-msgid "Multiple Messages"
-msgstr "Veè sporoèil"
-
-#: mail/message-list.c:686
-msgid "Lowest"
-msgstr "najni¾ja"
-
-#: mail/message-list.c:687
-msgid "Lower"
-msgstr "nizka"
-
-#: mail/message-list.c:691
-msgid "Higher"
-msgstr "visoka"
-
-#: mail/message-list.c:692
-msgid "Highest"
-msgstr "najvi¹ja"
-
-#: mail/message-list.c:942
-msgid "?"
-msgstr "?"
-
-#: mail/message-list.c:949
-msgid "Today %l:%M %p"
-msgstr "Danes %l:%M %p"
-
-#: mail/message-list.c:958
-msgid "Yesterday %l:%M %p"
-msgstr "Vèeraj %l:%M %p"
-
-#: mail/message-list.c:970
-msgid "%a %l:%M %p"
-msgstr "%a %l:%M %p"
-
-#: mail/message-list.c:978
-msgid "%b %d %l:%M %p"
-msgstr "%d %b %l:%M %p"
-
-#: mail/message-list.c:980
-msgid "%b %d %Y"
-msgstr "%d %b %Y"
-
-#: mail/message-list.c:1082
-msgid "Flagged"
-msgstr "Oznaèeno"
-
-#: mail/message-list.c:1083
-msgid "From"
-msgstr "Od"
-
-#: mail/message-list.c:1083
-msgid "Date"
-msgstr "Datum"
-
-#: mail/message-list.c:1083
-msgid "Received"
-msgstr "Sprejeto"
-
-#: mail/message-list.c:1084
-msgid "To"
-msgstr "Za"
-
-#: mail/message-list.c:1084
-msgid "Size"
-msgstr "Velikost"
-
-#: mail/mail-session.c:161
-msgid "User canceled operation."
-msgstr "Uporabnik je dejanje preklical."
-
-#: mail/subscribe-dialog.c:76 shell/e-storage-set-view.c:47
-msgid "Folder"
-msgstr "Mapa"
-
-#: mail/subscribe-dialog.c:77
-msgid "Store"
-msgstr "Shramba"
-
-#: mail/subscribe-dialog.c:138
-msgid "Display folders starting with:"
-msgstr "Prika¾i mape, ki se zaènejo z:"
-
-#: mail/subscribe-dialog.c:168
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr "Dobivam shrambo za \"%s\""
-
-#: mail/subscribe-dialog.c:271
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr "Naroèam se na mapo \"%s\""
-
-#: mail/subscribe-dialog.c:273
-#, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr "Preklicujem naroènino na mapo \"%s\""
-
-#. Construct the app
-#: mail/subscribe-dialog.c:873
-msgid "Manage Subscriptions"
-msgstr "Uredi naroènine"
-
-#: shell/e-setup.c:118 shell/e-setup.c:191
-msgid "Evolution installation"
-msgstr "Namestitev Evolucije"
-
-#: shell/e-setup.c:122
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-"Ta razlièica Evolucije mora namestiti dodatne datoteke\n"
-"v va¹ osebni imenik Evolucije"
-
-#: shell/e-setup.c:123
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr ""
-"Prosim kliknite \"V redu\" za namestitev datotek ali \"Preklièi\" za izhod."
-
-#: shell/e-setup.c:163
-msgid "Could not update files correctly"
-msgstr "Nisem mogel pravilno prenoviti datotek"
-
-#: shell/e-setup.c:166 shell/e-setup.c:234
-msgid "Evolution files successfully installed."
-msgstr "Evolucijine datoteke so se uspe¹no namestile."
-
-#: shell/e-setup.c:195
-msgid "This seems to be the first time you are running Evolution."
-msgstr "Ka¾e, da je to va¹ prvi zagon Evolucije."
-
-#: shell/e-setup.c:196
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr ""
-"Prosim kliknite \"V redu\" za namestitev Evolucijinih uporabni¹kih datotek "
-"pod"
-
-#: shell/e-setup.c:215
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"Ne morem ustvariti imenika\n"
-"%s\n"
-"Napaka: %s"
-
-#: shell/e-setup.c:230
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-"Ne morem kopirati datotek v\n"
-"`%s'."
-
-#: shell/e-setup.c:255
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-"Datoteka `%s' ni imenik.\n"
-"Prosim premestite jo, da se lahko namestitev\n"
-"Evolucijinih uporabni¹kih datotek nadaljuje."
-
-#: shell/e-setup.c:267
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-"Datoteka `%s' obstaja a ni Evolucijin imenik.\n"
-"Prosim premestite jo, da se lahko namestitev\n"
-"Evolucijinih uporabni¹kih datotek nadaljuje."
-
-#: shell/e-shell.c:379
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr "Ne morem nastaviti krajevnega hranilnika -- %s"
-
-#: shell/e-shell.c:1249
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-"Opa! Pogled `%s' je neprièakovano umru. :-(\n"
-"To verjetno pomeni, da se je komponenta %s sesula."
-
-#: shell/e-shell-folder-creation-dialog.c:99
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-"Ne morem ustvariti izbrane mape:\n"
-"%s"
-
-#: shell/e-shell-folder-creation-dialog.c:156
-msgid "The specified folder name is not valid."
-msgstr "Izbrano ime mape ni veljavno."
-
-#: shell/e-shell-folder-creation-dialog.c:263
-msgid "Evolution - Create new folder"
-msgstr "Evolucija - Ustvar novo mapo"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-"Tip izbrane mape ni veljaven za zahtevano\n"
-"operacijo."
-
-#: shell/e-shell-folder-selection-dialog.c:321
-msgid "New..."
-msgstr "Nova..."
-
-#: shell/e-shell-folder-title-bar.c:459 shell/e-shell-folder-title-bar.c:460
-msgid "(Untitled)"
-msgstr "(Neimenovana)"
-
-#: shell/e-shell-view.c:148
-msgid "(No folder displayed)"
-msgstr "(Nobena mapa ni prikazana)"
-
-#: shell/e-shell-view.c:1184
-#, c-format
-msgid "%s - Evolution %s"
-msgstr "%s - Evolucija %s"
-
-#: shell/e-shell-view.c:1186
-#, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "%s - Evolucija %s [%s]"
-
-#: shell/e-shell-view-menu.c:173
-msgid "Bug buddy was not found in your $PATH."
-msgstr "Program 'Bug buddy' ni bil najden v va¹i poti ($PATH)."
-
-#: shell/e-shell-view-menu.c:179
-msgid "Bug buddy could not be run."
-msgstr "Programa 'Bug buddy' ni bilo mogoèe pognati."
-
-#: shell/e-shell-view-menu.c:208
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Avtorske pravice pridr¾ane 1999, 2000, 2001 Ximian, Inc."
-
-#: shell/e-shell-view-menu.c:210
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-"Evolucija je zbirka programov okolja \n"
-"GNOME za delo v skupinah, za po¹to, koledar in \n"
-"urejanje stikov."
-
-#: shell/e-shell-view-menu.c:374
-msgid "Go to folder..."
-msgstr "Pojdi v mapo..."
-
-#: shell/e-shortcuts.c:381
-msgid "Error saving shortcuts."
-msgstr "Napaka ob shranjevanju bli¾njic."
-
-#: shell/e-shortcuts-view.c:134
-msgid "Create new shortcut group"
-msgstr "Ustvari novo skupino bli¾njic"
-
-#: shell/e-shortcuts-view.c:137
-msgid "Group name:"
-msgstr "Ime skupine:"
-
-#: shell/e-shortcuts-view.c:260
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-"Zares ¾elite odstraniti skupino\n"
-"`%s' iz vrstice bli¾njic?"
-
-#: shell/e-shortcuts-view.c:265
-msgid "Don't remove"
-msgstr "Ne odstrani"
-
-#: shell/e-shortcuts-view.c:276
-msgid "_Small Icons"
-msgstr "_Majhne ikone"
-
-#: shell/e-shortcuts-view.c:277
-msgid "Show the shortcuts as small icons"
-msgstr "Ka¾i bli¾njice kot majhne ikone"
-
-#: shell/e-shortcuts-view.c:279
-msgid "_Large Icons"
-msgstr "_Velike ikone"
-
-#: shell/e-shortcuts-view.c:280
-msgid "Show the shortcuts as large icons"
-msgstr "Ka¾i bli¾njice kot velike ikone"
-
-#: shell/e-shortcuts-view.c:291
-msgid "_New Group..."
-msgstr "_Nova skupina..."
-
-#: shell/e-shortcuts-view.c:292
-msgid "Create a new shortcut group"
-msgstr "Ustvari novo skupino bli¾njic"
-
-#: shell/e-shortcuts-view.c:294
-msgid "_Remove This Group..."
-msgstr "_Odstrani to skupino..."
-
-#: shell/e-shortcuts-view.c:295
-msgid "Remove this shortcut group"
-msgstr "Odstrani to skupino bli¾njic"
-
-#: shell/e-shortcuts-view.c:300
-msgid "_Hide the Shortcut Bar"
-msgstr "_Skrij vrstico z bli¾njicami"
-
-#: shell/e-shortcuts-view.c:301
-msgid "Hide the shortcut bar"
-msgstr "Skrij vrstico z bli¾njicami"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate"
-msgstr "Aktiviraj"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate this shortcut"
-msgstr "Aktiviraj to bli¾njico"
-
-#: shell/e-shortcuts-view.c:388
-msgid "Remove this shortcut from the shortcut bar"
-msgstr "Odstrani to bli¾njico iz vrstice bli¾njic"
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr "(Brez imena)"
-
-#: shell/e-storage.c:459
-msgid "No error"
-msgstr "Brez napak"
-
-#: shell/e-storage.c:461
-msgid "Generic error"
-msgstr "Generièna napaka"
-
-#: shell/e-storage.c:463
-msgid "A folder with the same name already exists"
-msgstr "Mapa z enakim imenom ¾e obstaja"
-
-#: shell/e-storage.c:465
-msgid "The specified folder type is not valid"
-msgstr "Izbran tip mape ni veljaven"
-
-#: shell/e-storage.c:467
-msgid "I/O error"
-msgstr "V/I napaka"
-
-#: shell/e-storage.c:469
-msgid "Not enough space to create the folder"
-msgstr "Ni dovolj prostora za ustvaritev mape"
-
-#: shell/e-storage.c:471
-msgid "The specified folder was not found"
-msgstr "Izbrana mapa ni bila najdena"
-
-#: shell/e-storage.c:473
-msgid "Function not implemented in this storage"
-msgstr "Funkcija ni implementirana v tem hranilniku"
-
-#: shell/e-storage.c:475
-msgid "Permission denied"
-msgstr "Nimate dovoljenja"
-
-#: shell/e-storage.c:477
-msgid "Operation not supported"
-msgstr "Operacija ni podprta"
-
-#: shell/e-storage.c:479
-msgid "The specified type is not supported in this storage"
-msgstr "Izbran tip ni podprt v tem hranilniku"
-
-#: shell/e-storage-set-view.c:650 ui/evolution-event-editor.xml.h:76
-#: ui/evolution-message-composer.xml.h:53
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:44
-msgid "_View"
-msgstr "Po_gled"
-
-#: shell/e-storage-set-view.c:650
-msgid "View the selected folder"
-msgstr "Poglej izbrane mape"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-msgid "Folder name:"
-msgstr "Ime mape:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-msgid "Folder type:"
-msgstr "Vrsta mape:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-msgid "Specify where to create the folder:"
-msgstr "Navedi kje naj se ustvarimapa:"
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-msgid "The Evolution shell."
-msgstr "Evolucijina lupina."
-
-#: shell/importer/importer.c:87
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-"Izberite datoteko, ki jo ¾elite uvoziti v Evolucijo in izberite vrsto "
-"datoteke s seznama\n"
-"\n"
-"Èe ne veste, lahko izberete \"Samodejno\" in Evolucija bo poskusila "
-"ugotoviti."
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/importer/importer.c:182
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-"Uva¾am %s\n"
-"Uvoznik ni pripravljen.\n"
-"Èakam 5 sekund na nov poskus."
-
-#: shell/importer/importer.c:202 shell/importer/importer.c:233
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-"Uva¾am %s\n"
-"Uva¾am predmet %d."
-
-#: shell/importer/importer.c:341
-#, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr ""
-"Ni uvoznika, ki bi lahko obravnaval\n"
-" %s"
-
-#: shell/importer/importer.c:351
-msgid "Importing"
-msgstr "Uva¾am"
-
-#: shell/importer/importer.c:359
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-"Uva¾am %s.\n"
-"Prièenjam %s"
-
-#: shell/importer/importer.c:372
-msgid "Error starting %s"
-msgstr "Napaka ob zagonu %s"
-
-#: shell/importer/importer.c:387
-#, c-format
-msgid "Error loading %s"
-msgstr "Napaka ob nalaganju %s"
-
-#: shell/importer/importer.c:402
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-"Uva¾am %s\n"
-"Uva¾am predmet 1."
-
-#: shell/importer/importer.c:473
-msgid "Automatic"
-msgstr "Samodejno"
-
-#: shell/importer/importer.c:523
-msgid "Filename:"
-msgstr "Ime datoteke:"
-
-#: shell/importer/import.glade.h:5 shell/importer/importer.c:528
-msgid "Select a file"
-msgstr "Izberi datoteko"
-
-#: shell/importer/importer.c:538
-msgid "File type:"
-msgstr "Vrsta datoteke:"
-
-#: shell/importer/import.glade.h:4 shell/importer/importer.c:619
-msgid "Import"
-msgstr "Uvozi"
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr "Kliknite \"Uvozi\" za prièetek uvoza datoteke v Evolucijo. "
-
-#: shell/importer/import.glade.h:2
-msgid "Evolution Import Utility"
-msgstr "Evolucijino uvozno orodje"
-
-#: shell/importer/import.glade.h:3
-msgid "Evolution Importer Utility"
-msgstr "Evolucijino uvozno orodje"
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-"Dobrodo¹li v Evolucijinem uvnoznem orodju.\n"
-"S tem druidom boste vodeni skozi proces uvoza\n"
-"zunanjih datotek v Evolucijo."
-
-#: shell/importer/intelligent.c:143
-msgid "Don't ask me again"
-msgstr "Ne spra¹uj me veè"
-
-#: shell/main.c:82
-#, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-"Zdravo. Hvala, ker ste si vzeli èas za prenos te predogledne izdaje\n"
-"programja za delovne skupine Evolucija.\n"
-"\n"
-"Evolucija ¹e ni konèana. ©e vedno so kraji, kjer funkcionalnost manjka ali\n"
-"deluje le polovièno. Èe ne morete ugotoviti kako nekaj narediti, je to\n"
-"verjetno zato, ker tega zaenkrat ¹e ni mo¾no narediti. :-)\n"
-"\n"
-"Upamo, da vam bo Evolucija uporabna, a ¹e vedno vas moramo opozoriti, da se\n"
-"lahko: sesuje, izgubi va¹o po¹to, pusti teèi mrtve procese, porabi 100% "
-"va¹ega\n"
-"procesorskega èasa, po¹lje neveljavne ukaze na va¹e stre¾nike in vas na\n"
-"splo¹no osramoti pred prijatelji in sodelavci. Uporabljajte jo le tako \n"
-"kot je predvideno.\n"
-"\n"
-"Upamo, da boste u¾ivali sadove na¹ega trdega dela in nestrpno\n"
-"prièakujemo va¹e prispevke!\n"
-
-#: shell/main.c:107
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-"Hvala,\n"
-"skupina Evolucije\n"
-
-#: shell/main.c:138
-msgid "Cannot initialize the Evolution shell."
-msgstr "Ne morem inicializirati lupine Evolucije."
-
-#: shell/main.c:184
-msgid "Disable splash screen"
-msgstr "Izkljuèi zaèetni zaslon"
-
-#: shell/main.c:185
-msgid "Send the debugging output of all components to a file."
-msgstr "Po¹lji razhro¹èevalna sporoèila vseh komponent v datoteko."
-
-#: shell/main.c:217
-msgid "Cannot initialize the Bonobo component system."
-msgstr "Ne morem inicializirati komponentnega sistema Bonobo."
-
-#: ui/evolution-addressbook.xml.h:2
-msgid "Create new contact"
-msgstr "Ustvari nov stik"
-
-#: ui/evolution-addressbook.xml.h:4
-msgid "Delete a contact"
-msgstr "Zbri¹i stik"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-msgid "Find"
-msgstr "Poi¹èi"
-
-#: ui/evolution-addressbook.xml.h:6
-msgid "Find a contact"
-msgstr "Poi¹èi stik"
-
-#: ui/evolution-addressbook.xml.h:7
-msgid "New contact"
-msgstr "Nov stik"
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-mail.xml.h:53
-msgid "Previews the message to be printed"
-msgstr "Predogled sporoèika, ki bo natisnjeno"
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "Print contacts"
-msgstr "Natisni stike"
-
-#: ui/evolution-addressbook.xml.h:12 ui/evolution-mail.xml.h:84
-msgid "Stop"
-msgstr "Ustavi"
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "Stop Loading"
-msgstr "Ustavi nalaganje"
-
-#: ui/evolution-addressbook.xml.h:14
-msgid "View All"
-msgstr "Glej vse"
-
-#: ui/evolution-addressbook.xml.h:15
-msgid "View all contacts"
-msgstr "Glej vse stike"
-
-#: ui/evolution-addressbook.xml.h:16
-msgid "_Addressbook Sources..."
-msgstr "Viri _adresarja..."
-
-#: ui/evolution-addressbook.xml.h:17
-msgid "_Contact"
-msgstr "_Stik"
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-msgid "_Print..."
-msgstr "Na_tisni..."
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr "_I¹èi po kontaktih"
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-mail.xml.h:117
-#: ui/evolution-task-editor-dialog.xml.h:88 ui/evolution.xml.h:43
-msgid "_Tools"
-msgstr "_Orodja"
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr "5 dni"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-msgid "Alter preferences"
-msgstr "Alternativne nastavitve"
-
-#: ui/evolution-calendar.xml.h:4
-msgid "Create a new all day Event"
-msgstr "Ustvari nov celodnevni dogodek"
-
-#: ui/evolution-calendar.xml.h:5
-msgid "Create a new appointment"
-msgstr "Ustvari nov zmenek"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr "Ustvari nov koledar"
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr "Dan"
-
-#: ui/evolution-calendar.xml.h:8
-msgid "Go To"
-msgstr "Pojdi na"
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr "Pojdi po èasu nazaj"
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go forward in time"
-msgstr "Pojdi po èasu naprej"
-
-#: ui/evolution-calendar.xml.h:11
-msgid "Go to _Date"
-msgstr "Pojdi na _datum"
-
-#: ui/evolution-calendar.xml.h:12
-msgid "Go to _Today"
-msgstr "Pojdi na _danes"
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr "Pojdi na doloèen datum"
-
-#: ui/evolution-calendar.xml.h:14
-msgid "Go to present time"
-msgstr "Pojdi na sedanjost"
-
-#: ui/evolution-calendar.xml.h:15
-msgid "Month"
-msgstr "Mesec"
-
-#: ui/evolution-calendar.xml.h:17
-msgid "New _Event"
-msgstr "Nov _dogodek"
-
-#: ui/evolution-calendar.xml.h:20
-msgid "Open Calendar"
-msgstr "Odpri koledar"
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Prev"
-msgstr "Nazaj"
-
-#: ui/evolution-calendar.xml.h:22
-msgid "Previews the calendar to be printed"
-msgstr "Predogled koledarja, ki bo natisnjen"
-
-#: ui/evolution-calendar.xml.h:25
-msgid "Print calendar"
-msgstr "Natisni koledar"
-
-#: ui/evolution-calendar.xml.h:26
-msgid "Print this Calendar"
-msgstr "Natisni ta koledar"
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:15
-msgid "Save As"
-msgstr "Shrani kot"
-
-#: ui/evolution-calendar.xml.h:28
-msgid "Save calendar as something else"
-msgstr "Shrani koledar kot nekaj drugega"
-
-#: ui/evolution-calendar.xml.h:30
-msgid "Show 1 day"
-msgstr "Ka¾i en dan"
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr "Ka¾i en mesec"
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr "Ka¾i en teden"
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr "Poka¾i delavni teden"
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:229
-#: widgets/misc/e-dateedit.c:424
-msgid "Today"
-msgstr "Danes"
-
-#: ui/evolution-calendar.xml.h:35
-msgid "W_ork Week"
-msgstr "_Delavni teden"
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr "Teden"
-
-#: ui/evolution-calendar.xml.h:37
-msgid "_Appointment"
-msgstr "_Zmenek"
-
-#: ui/evolution-calendar.xml.h:38
-msgid "_Day"
-msgstr "_Dan"
-
-#: ui/evolution-calendar.xml.h:39
-msgid "_Month"
-msgstr "_Mesec"
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:39
-msgid "_New"
-msgstr "_Nova"
-
-#: ui/evolution-calendar.xml.h:41
-msgid "_Open Calendar"
-msgstr "Odpri ko_ledar"
-
-#: ui/evolution-calendar.xml.h:45
-msgid "_Week"
-msgstr "_Teden"
-
-#: ui/evolution-contact-editor.xml.h:2
-msgid "Delete this item"
-msgstr "Zbri¹i ta predmet"
-
-#: ui/evolution-contact-editor.xml.h:3
-msgid "Delete..."
-msgstr "Zbri¹i..."
-
-#: ui/evolution-contact-editor.xml.h:4
-msgid "Help"
-msgstr "Pomoè"
-
-#: ui/evolution-contact-editor.xml.h:5
-msgid "Print En_velope..."
-msgstr "Natisni kuverto..."
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-msgid "Print this item"
-msgstr "Natisni ta predmet"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-mail.xml.h:62 ui/evolution-task-editor-dialog.xml.h:41
-msgid "Print..."
-msgstr "Natisni..."
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:16
-#: ui/evolution-task-editor-dialog.xml.h:51
-msgid "Save _As..."
-msgstr "Shrani _kot..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-msgid "Save and Close"
-msgstr "Shrani in zapri"
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr "Shrani stik in zapri dialog"
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr "Po¹lji stik drugim..."
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr "Glej pomoè na liniji"
-
-#: ui/evolution-contact-editor.xml.h:13
-msgid "Send _message to contact..."
-msgstr "Po¹lji _sporoèilo stiku..."
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:44 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:31
-msgid "_File"
-msgstr "_Datoteka"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:51
-#: ui/evolution-task-editor-dialog.xml.h:85
-msgid "_Save"
-msgstr "_Shrani"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr "O tem programu"
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr "O programu..."
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-msgid "Actio_ns"
-msgstr "_Dejanja"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-msgid "Address _Book... (FIXME)"
-msgstr "A_dresar... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-msgid "C_lear"
-msgstr "Poè_isti"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-msgid "C_ut"
-msgstr "_Izre¾i"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-msgid "Chec_k Names (FIXME)"
-msgstr "_Preveri imena (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-msgid "Clear"
-msgstr "Poèisti"
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-msgid "Clear the selection"
-msgstr "Poèisti izbiro"
-
-#: ui/evolution-event-editor.xml.h:11
-msgid "Close this appointment"
-msgstr "Zapri ta zmenek"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "_Kopiraj v mapo... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:7
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "Kopiraj"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-msgid "Copy the selection"
-msgstr "Kopiraj izbrano"
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr "Izre¾i"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Cut the selection"
-msgstr "Izre¾i izbrano"
-
-#: ui/evolution-event-editor.xml.h:18
-msgid "Delete this appointment"
-msgstr "Zbri¹i ta zmenek"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr "Shrani kot XML"
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr "Shranio Xml opis uporabni¹kega vmesnika"
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr "P_rvi predmet v mapi (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-msgid "For_ward (FIXME)"
-msgstr "Posreduj (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr "Posreduj naprej kot v_Koledar (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-msgid "Go to the next item"
-msgstr "Pojdi na naslednji predmet"
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-msgid "Go to the previous item"
-msgstr "Pojdi na prej¹nji predmet"
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-msgid "In_complete Task (FIXME)"
-msgstr "Ne_popolna naloga (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-msgid "Modify the file's properties"
-msgstr "Spremeni lastnosti datoteke"
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-msgid "N_ext"
-msgstr "Napr_ej"
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-msgid "Paste"
-msgstr "Prilepi"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-msgid "Paste the clipboard"
-msgstr "Prilepi odlo¾i¹èe"
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr "P_rej¹nji"
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-msgid "Print Pre_view"
-msgstr "Predogled _tiskanja"
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-msgid "Print S_etup..."
-msgstr "Nas_tavitev tiskanja..."
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-msgid "Print Setup"
-msgstr "Nastavitev tiskanja"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:14
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:239
-msgid "Save"
-msgstr "Shrani"
-
-#: ui/evolution-event-editor.xml.h:43
-msgid "Save the appointment and close the dialog box"
-msgstr "Shrani zmenek in zapri dialog"
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:20
-#: ui/evolution-task-editor-dialog.xml.h:53
-msgid "Save the current file"
-msgstr "Shrani trenutno datoteko"
-
-#: ui/evolution-event-editor.xml.h:46
-msgid "Schedule _Meeting"
-msgstr "_Naèrtuj sestanek"
-
-#: ui/evolution-event-editor.xml.h:47
-msgid "Schedule some sort of a meeting"
-msgstr "Naèrtuj nek tip sestanka"
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-mail.xml.h:74
-#: ui/evolution-task-editor-dialog.xml.h:57
-msgid "Select All"
-msgstr "Izberi vse"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-msgid "Select everything"
-msgstr "Izberi vse"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr "Nastavi lastnosti strani za va¹ trenutni tiskalnik"
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-msgid "Task _Request (FIXME)"
-msgstr "Zahtevek opravila (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-message-composer.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:63
-msgid "_About..."
-msgstr "_O programu..."
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:41
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:28
-msgid "_Close"
-msgstr "_Zapri"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:29
-msgid "_Contact (FIXME)"
-msgstr "_Kontakt (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-msgid "_Copy"
-msgstr "_Kopiraj"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr "_Razhro¹èuj"
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:46
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:35
-msgid "_Help"
-msgstr "_Pomoè"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-msgid "_Item (FIXME)"
-msgstr "_Predmet (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-msgid "_Journal Entry (FIXME)"
-msgstr "_Dnevni¹ki zapis (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-msgid "_Last Item in Folder (FIXME)"
-msgstr "_Zadnji predmet v mapi (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-msgid "_Mail Message (FIXME)"
-msgstr "Po¹lji _sporoèilo (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-msgid "_Move to Folder... (FIXME)"
-msgstr "_Prestavi v mapo... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-msgid "_Note (FIXME)"
-msgstr "_Opomba (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-msgid "_Paste"
-msgstr "_Prilepi"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:109
-#: ui/evolution-task-editor-dialog.xml.h:83
-msgid "_Properties..."
-msgstr "_Lastnosti..."
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-msgid "_Select All"
-msgstr "_Izberi vse"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:42
-msgid "_Task (FIXME)"
-msgstr "_Naloga (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-msgid "_Unread Item (FIXME)"
-msgstr "_Predmet neprebran(FIXME)"
-
-#: ui/evolution-executive-summary.xml.h:1
-msgid "Add Service"
-msgstr "Dodaj storitev"
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr "Dodaj novo storitev v povzetek"
-
-#: ui/evolution-executive-summary.xml.h:3
-msgid "Create a new email"
-msgstr "Ustvari novo e-po¹to"
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr "Nastaviteve povzetka..."
-
-#: ui/evolution-executive-summary.xml.h:5
-msgid "New Mail"
-msgstr "Nova po¹ta"
-
-#: ui/evolution-mail.xml.h:2
-msgid "Apply any new filters to the mail in this box"
-msgstr "Uveljavi vse nove filtre po¹ti tega predala"
-
-#: ui/evolution-mail.xml.h:3
-msgid "Change the properties of this folder"
-msgstr "Spremeni lastnosti te mape"
-
-#: ui/evolution-mail.xml.h:4
-msgid "Compose"
-msgstr "Sestavi"
-
-#: ui/evolution-mail.xml.h:5
-msgid "Compose a new message"
-msgstr "Sestavi novo sporoèilo"
-
-#: ui/evolution-mail.xml.h:6
-msgid "Configure Folder..."
-msgstr "Nastavi mapo..."
-
-#: ui/evolution-mail.xml.h:8
-msgid "Copy message to a new folder"
-msgstr "Prestavi sporoèilo v novo mapo"
-
-#: ui/evolution-mail.xml.h:9
-msgid "Copy selected messages to another folder"
-msgstr "Kopiraj izbrana sporoèila v drugo mapo"
-
-#: ui/evolution-mail.xml.h:10
-msgid "Create _Virtual Folder From Message"
-msgstr "Iz sporoèila ustvari na_videzno mapo"
-
-#: ui/evolution-mail.xml.h:12
-msgid "Delete the selected messages"
-msgstr "Zbri¹i izbrana sporoèila"
-
-#: ui/evolution-mail.xml.h:14
-msgid "Display all of the message headers"
-msgstr "Ka¾i vse glave sporoèil"
-
-#: ui/evolution-mail.xml.h:15
-msgid "Edit Message"
-msgstr "Uredi sporoèilo"
-
-#: ui/evolution-mail.xml.h:16
-msgid "Edit the current message"
-msgstr "Uredi trenutno sporoèilo"
-
-#: ui/evolution-mail.xml.h:17
-msgid "Empty _Trash"
-msgstr "Sprazni smeti"
-
-#: ui/evolution-mail.xml.h:18
-msgid "Expunge"
-msgstr "Unièi"
-
-#: ui/evolution-mail.xml.h:19
-msgid "Filter on Mailing _List"
-msgstr "Filter glede na p_o¹tni seznam"
-
-#: ui/evolution-mail.xml.h:20
-msgid "Filter on Se_nder"
-msgstr "Filter glede na po¹ilja_telja"
-
-#: ui/evolution-mail.xml.h:21
-msgid "Filter on _Recipients"
-msgstr "Filter glede na preje_mnike"
-
-#: ui/evolution-mail.xml.h:22
-msgid "Filter on _Subject"
-msgstr "Filter glede na za_devo"
-
-#: ui/evolution-mail.xml.h:23
-msgid "Finaly remove all mails tagged for deletion"
-msgstr "Dokonèno odstrani vso po¹to oznaèeno za izbris"
-
-#: ui/evolution-mail.xml.h:24
-msgid "Forget _Passwords"
-msgstr "Pozabi _gesla"
-
-#: ui/evolution-mail.xml.h:26
-msgid "Forward As"
-msgstr "Posreduj kot"
-
-#: ui/evolution-mail.xml.h:27
-msgid "Forward inline"
-msgstr "Posreduj naprej kot del sporoèila"
-
-#: ui/evolution-mail.xml.h:28
-msgid "Forward the selected mail to someone"
-msgstr "Nekomu posreduj izbrano po¹to"
-
-#: ui/evolution-mail.xml.h:30
-msgid "Forward this message in-line with your mail, so you can edit it"
-msgstr "Posreduj to sporoèilo kot del va¹e po¹te, da ga lahko uredite"
-
-#: ui/evolution-mail.xml.h:31
-msgid "Full _Headers"
-msgstr "Celotne _glave"
-
-#: ui/evolution-mail.xml.h:32
-msgid "Go to the next message"
-msgstr "Pojdi na naslednje sporoèilo"
-
-#: ui/evolution-mail.xml.h:33
-msgid "Go to the previous message"
-msgstr "Pojdi na prej¹nje sporoèilo"
-
-#: ui/evolution-mail.xml.h:34
-msgid "Hide Deleted Messages"
-msgstr "Skrij zbrisana sporoèila"
-
-#: ui/evolution-mail.xml.h:35
-msgid "Hide S_elected Messages"
-msgstr "Skrij _izbrana sporoèila"
-
-#: ui/evolution-mail.xml.h:36
-msgid "Hide _Deleted Messages"
-msgstr "Skrij _zbrisana sporoèila"
-
-#: ui/evolution-mail.xml.h:37
-msgid "Hide _Read messages"
-msgstr "Skrij _prebrana sporoèila"
-
-#: ui/evolution-mail.xml.h:38
-msgid "Invert Selection"
-msgstr "Obrni izbor"
-
-#: ui/evolution-mail.xml.h:39
-msgid "Manage _Subscriptions..."
-msgstr "Uredi _naroènine..."
-
-#: ui/evolution-mail.xml.h:41
-msgid "Mark All as R_ead"
-msgstr "Oznaèi _vse kot prebrano"
-
-#: ui/evolution-mail.xml.h:42
-msgid "Mark As Read"
-msgstr "Oznaèi kot prebrano"
-
-#: ui/evolution-mail.xml.h:43
-msgid "Mark As U_nread"
-msgstr "Oznaèi kot _neprebrano"
-
-#: ui/evolution-mail.xml.h:45
-msgid "Mark the selected messages as having been read"
-msgstr "Oznaèi izbrana sporoèila kot prebrana"
-
-#: ui/evolution-mail.xml.h:46
-msgid "Mark the selected messages as not having been read"
-msgstr "Oznaèi izbrana sporoèila kot neprebrana"
-
-#: ui/evolution-mail.xml.h:47
-msgid "Move"
-msgstr "Prestavi"
-
-#: ui/evolution-mail.xml.h:48
-msgid "Move message to a new folder"
-msgstr "Prestavi sporoèilo v novo mapo"
-
-#: ui/evolution-mail.xml.h:49
-msgid "Move selected messages to another folder"
-msgstr "Prestavi izbrana sporoèila v drugo mapo"
-
-#: ui/evolution-mail.xml.h:51
-msgid "Open in New Window"
-msgstr "Odpri v novem oknu"
-
-#: ui/evolution-mail.xml.h:52
-msgid "Open the current message in a new window"
-msgstr "Odpri trenutno sporoèilo v novem oknu"
-
-#: ui/evolution-mail.xml.h:58
-msgid "Print Preview of message..."
-msgstr "Predogled tiskanja sporoèila..."
-
-#: ui/evolution-mail.xml.h:59
-msgid "Print message to the printer"
-msgstr "Natisni sporoèilo na tiskalniku"
-
-#: ui/evolution-mail.xml.h:60
-msgid "Print message..."
-msgstr "Natisni sporoèilo..."
-
-#: ui/evolution-mail.xml.h:63
-msgid "Redirect (FIXME: implement me)"
-msgstr "Preusmeri (FIXME: implementiraj me)"
-
-#: ui/evolution-mail.xml.h:67
-msgid "Reply to all"
-msgstr "Odgovori vsem"
-
-#: ui/evolution-mail.xml.h:69
-msgid "Reply to sender"
-msgstr "Odgovori po¹iljatelju"
-
-#: ui/evolution-mail.xml.h:71
-msgid "S_earch Message"
-msgstr "_I¹èi sporoèilo"
-
-#: ui/evolution-mail.xml.h:72
-msgid "S_ource"
-msgstr "_Vir"
-
-#: ui/evolution-mail.xml.h:73
-msgid "Save the message into a new file"
-msgstr "Shrani sporoèilo v novo datoteko"
-
-#: ui/evolution-mail.xml.h:75 ui/evolution-subscribe.xml.h:7
-msgid "Select _All"
-msgstr "Izberi _vse"
-
-#: ui/evolution-mail.xml.h:76
-msgid "Select _Thread"
-msgstr "Izberi _nit"
-
-#: ui/evolution-mail.xml.h:77
-msgid "Send / Receive"
-msgstr "Oddaja / sprejem"
-
-#: ui/evolution-mail.xml.h:78
-msgid "Send a reply to the person who sent you this mail"
-msgstr "Po¹lji odgovor osebi, ki vam je poslala to po¹to"
-
-#: ui/evolution-mail.xml.h:79
-msgid "Send a single mail in reply to all the selected mail"
-msgstr "Po¹lji en sam odgovor na vso izbrano po¹to"
-
-#: ui/evolution-mail.xml.h:80
-msgid ""
-"Send queued mail\n"
-" and retrieve new mail"
-msgstr ""
-"Po¹lji èakajoèo po¹to\n"
-" in sprejmi novo"
-
-#: ui/evolution-mail.xml.h:82
-msgid "Send queued mail and retrieve new mail"
-msgstr "Po¹lji po¹to v vrsti in sprejmi novo po¹to"
-
-#: ui/evolution-mail.xml.h:83
-msgid "Show _All"
-msgstr "Ka¾i _vse"
-
-#: ui/evolution-mail.xml.h:85
-msgid "Threaded Message list"
-msgstr "Niten seznam sporoèil"
-
-#: ui/evolution-mail.xml.h:86
-msgid "Un-delete the selected messages"
-msgstr "Odbri¹i izbrana sporoèila"
-
-#: ui/evolution-mail.xml.h:87
-msgid "Undelete"
-msgstr "Odbri¹i"
-
-#: ui/evolution-mail.xml.h:92
-msgid "View Raw Message Source"
-msgstr "Glej izvorno obliko sporoèila"
-
-#: ui/evolution-mail.xml.h:93
-msgid "Virtual Folder _Editor..."
-msgstr "Urejevalnik _virtualnih map..."
-
-#: ui/evolution-mail.xml.h:94
-msgid "_Apply Filters"
-msgstr "_Uveljavi filtre"
-
-#: ui/evolution-mail.xml.h:95
-msgid "_Attachment"
-msgstr "_Priloga"
-
-#: ui/evolution-mail.xml.h:97
-msgid "_Create Filter From Message"
-msgstr "Iz sporoèila ustvari _pravilo"
-
-#: ui/evolution-mail.xml.h:99
-msgid "_Expunge"
-msgstr "_Unièi"
-
-#: ui/evolution-mail.xml.h:100
-msgid "_Filters..."
-msgstr "_Filtri..."
-
-#: ui/evolution-mail.xml.h:101 ui/evolution.xml.h:32
-msgid "_Folder"
-msgstr "_Mapa"
-
-#: ui/evolution-mail.xml.h:103
-msgid "_Inline"
-msgstr "_Kot del sporoèila"
-
-#: ui/evolution-mail.xml.h:104 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr "_Obrni izbor"
-
-#: ui/evolution-mail.xml.h:105
-msgid "_Mail Message"
-msgstr "_Po¹lji sporoèilo"
-
-#: ui/evolution-mail.xml.h:106
-msgid "_Mail Settings..."
-msgstr "_Nastavive po¹te..."
-
-#: ui/evolution-mail.xml.h:108
-msgid "_Open Selected Items"
-msgstr "Odpri izbrane predmete"
-
-#: ui/evolution-mail.xml.h:110
-msgid "_Quoted"
-msgstr "_Citirano"
-
-#: ui/evolution-mail.xml.h:111
-msgid "_Reply"
-msgstr "_Odgovori"
-
-#: ui/evolution-mail.xml.h:112
-msgid "_Resend Messages"
-msgstr "_Znova po¹lji sporoèila"
-
-#: ui/evolution-mail.xml.h:114
-msgid "_Save Message As..."
-msgstr "_Shrani sporoèilo kot..."
-
-#: ui/evolution-mail.xml.h:115
-msgid "_Send / Receive"
-msgstr "_Oddaja / sprejem"
-
-#: ui/evolution-mail.xml.h:116
-msgid "_Threaded"
-msgstr "_Niteno"
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr "Prilo¾i"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-msgid "Close the current file"
-msgstr "Zapri trenutno datoteko"
-
-#: ui/evolution-message-composer.xml.h:5
-msgid "Encrypt this message with PGP"
-msgstr "©ifriraj sporoèilo s PGP"
-
-#: ui/evolution-message-composer.xml.h:6
-msgid "F_ormat"
-msgstr "O_blikuj izpis"
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "HTML"
-msgstr "HTML"
-
-#: ui/evolution-message-composer.xml.h:8
-msgid "Insert a file as text into the message"
-msgstr "Vstavi datoteko v sporoèilo kot besedilo"
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert text file..."
-msgstr "Vstavi datoteko z besedilom..."
-
-#: ui/evolution-message-composer.xml.h:11
-msgid "Open a file"
-msgstr "Odpri datoteko"
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "PGP Encrypt"
-msgstr "©ifriraj s PGP"
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Sign"
-msgstr "Podpis s PGP"
-
-#: ui/evolution-message-composer.xml.h:17
-msgid "Save _Draft"
-msgstr "Shrani osnutek"
-
-#: ui/evolution-message-composer.xml.h:18
-msgid "Save in _folder... (FIXME)"
-msgstr "Shrani v _mapo... (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:19
-msgid "Save in folder..."
-msgstr "Shrani v mapo..."
-
-#: ui/evolution-message-composer.xml.h:21
-msgid "Save the current file with a different name"
-msgstr "Shrani trenutno datoteko pod drugim imenom"
-
-#: ui/evolution-message-composer.xml.h:22
-msgid "Save the message in a specified folder"
-msgstr "Shrani sporoèilo v izbrano mapo"
-
-#: ui/evolution-message-composer.xml.h:23
-msgid "Send"
-msgstr "Po¹lji"
-
-#: ui/evolution-message-composer.xml.h:24
-msgid "Send _Later"
-msgstr "Po¹ilji _kaseneje"
-
-#: ui/evolution-message-composer.xml.h:25
-msgid "Send _later"
-msgstr "Po¹lji _kasneje"
-
-#: ui/evolution-message-composer.xml.h:26
-msgid "Send the mail in HTML format"
-msgstr "Po¹lji po¹to v HTML obliki"
-
-#: ui/evolution-message-composer.xml.h:27
-msgid "Send the message later"
-msgstr "Po¹lji sporoèilo kasneje"
-
-#: ui/evolution-message-composer.xml.h:28
-msgid "Send the message now"
-msgstr "Takoj po¹lji sporoèilo"
-
-#: ui/evolution-message-composer.xml.h:29
-msgid "Send this message now"
-msgstr "Takoj po¹lji to sporoèilo"
-
-#: ui/evolution-message-composer.xml.h:30
-msgid "Show / hide attachments"
-msgstr "Ka¾i / skrij priloge"
-
-#: ui/evolution-message-composer.xml.h:31
-msgid "Show _attachments"
-msgstr "Ka¾i priloge"
-
-#: ui/evolution-message-composer.xml.h:32
-msgid "Show attachments"
-msgstr "Ka¾i priloge"
-
-#: ui/evolution-message-composer.xml.h:33
-msgid "Sign this message with your PGP key"
-msgstr "Podpi¹i to sporoèilo s svojim PGP kljuèem"
-
-#: ui/evolution-message-composer.xml.h:34
-msgid "Toggles whether the BCC field is displayed"
-msgstr "Preklopi prikaz polja BCC"
-
-#: ui/evolution-message-composer.xml.h:35
-msgid "Toggles whether the CC field is displayed"
-msgstr "Preklopi prikaz polja CC"
-
-#: ui/evolution-message-composer.xml.h:36
-msgid "Toggles whether the From chooser is displayed"
-msgstr "Preklopi prikaz izbirnika Od"
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr "Preklopi prikaz polja Odgovori na"
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "_Bcc Field"
-msgstr "Polje _bcc"
-
-#: ui/evolution-message-composer.xml.h:40
-msgid "_Cc Field"
-msgstr "Polje _cc"
-
-#: ui/evolution-message-composer.xml.h:45
-msgid "_From Field"
-msgstr "Polje _od"
-
-#: ui/evolution-message-composer.xml.h:47
-msgid "_Insert"
-msgstr "_Vstavi"
-
-#: ui/evolution-message-composer.xml.h:48
-msgid "_Insert text file... (FIXME)"
-msgstr "_Vstavi datoteko z besedilom... (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:49
-msgid "_Open..."
-msgstr "_Odpri..."
-
-#: ui/evolution-message-composer.xml.h:50
-msgid "_Reply-To Field"
-msgstr "Polje _Odgovori-na:"
-
-#: ui/evolution-message-composer.xml.h:52
-msgid "_Security"
-msgstr "_Varnost"
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr "Dodaj mapo na seznam naroèenih map"
-
-#: ui/evolution-subscribe.xml.h:3
-msgid "F_older"
-msgstr "_Mapa"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr "Osve¾i seznam"
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr "Osve¾i seznam map"
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr "Odstrani mapo iz seznama naroèenih map"
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr "Naroèi"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr "Prekini naroènino"
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-msgid "Assig_n Task (FIXME)"
-msgstr "Dodali _nalogo (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr "Poi¹èi znova"
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-msgid "Meeting Re_quest (FIXME)"
-msgstr "Za_htevek po sestanku (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-msgid "Redo"
-msgstr "Obnovi"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-msgid "Redo the undone action"
-msgstr "Obnovi razveljavljeno dejanje"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-msgid "Replace"
-msgstr "Zamenjaj"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-msgid "Replace a string"
-msgstr "Zamenjaj niz"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-msgid "Reply to A_ll (FIXME)"
-msgstr "Odgovori _vsem (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-msgid "S_end Status Report (FIXME)"
-msgstr "Po¹lji poroèilo stanja (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr "Preskoèi ponovitev (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-msgid "Save the task and close the dialog box"
-msgstr "Shrani posel in zapri dialog"
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "Search again for the same string"
-msgstr "I¹èi enak niz znova"
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-msgid "Search for a string"
-msgstr "I¹èi niz"
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr "Razveljavi"
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-msgid "Undo the last action"
-msgstr "Razveljavi zadnje dejanje"
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:27
-msgid "_Appointment (FIXME)"
-msgstr "_Zmenek (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-msgid "_Mark Complete (FIXME)"
-msgstr "_Oznaèi kot opravljeno (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-msgid "_Reply (FIXME)"
-msgstr "_Odgovori (FIXME)"
-
-#: ui/evolution-tasks.xml.h:2
-msgid "Create a new task"
-msgstr "Ustvari nov posel"
-
-#: ui/evolution-tasks.xml.h:3
-msgid "New Task"
-msgstr "Nova naloga"
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr "Shrani posel kot nekaj drugega"
-
-#: ui/evolution-tasks.xml.h:6
-msgid "Tasks Preferences..."
-msgstr "Nastavitve poslov..."
-
-#: ui/evolution-tasks.xml.h:9
-msgid "_Task"
-msgstr "_Naloga"
-
-#: ui/evolution.xml.h:1
-msgid "About Evolution..."
-msgstr "_O Evoluciji..."
-
-#: ui/evolution.xml.h:3
-msgid "Close this window"
-msgstr "Zapri to okno"
-
-#: ui/evolution.xml.h:4
-msgid "Customi_ze Toolbars..."
-msgstr "_Prilagodi orodne vrstice..."
-
-#: ui/evolution.xml.h:5
-msgid "Customize"
-msgstr "Prilagodi"
-
-#: ui/evolution.xml.h:6
-msgid "Customize toolbars"
-msgstr "Prliagodi orodne vrstice"
-
-#: ui/evolution.xml.h:7
-msgid "Display a different folder"
-msgstr "Poka¾i drugo mapo"
-
-#: ui/evolution.xml.h:8
-msgid "E_xit"
-msgstr "Iz_hod"
-
-#: ui/evolution.xml.h:9
-msgid "Evolution _Window"
-msgstr "_Okno Evolucije"
-
-#: ui/evolution.xml.h:10
-msgid "Evolution bar _shortcut"
-msgstr "Evolucijina vrstica z _bli¾njicami"
-
-#: ui/evolution.xml.h:11
-msgid "Exit the program"
-msgstr "Izhod iz programa"
-
-#: ui/evolution.xml.h:12
-msgid "Getting _Started"
-msgstr "Kako _zaèeti"
-
-#: ui/evolution.xml.h:13
-msgid "Import an external file format"
-msgstr "Uvozi datoteko zunanje oblike"
-
-#: ui/evolution.xml.h:14
-msgid "Main toolbar"
-msgstr "Glavna orodna vrstica"
-
-#: ui/evolution.xml.h:15
-msgid "Show information about Evolution"
-msgstr "Ka¾i podatke o Evoluciji"
-
-#: ui/evolution.xml.h:16
-msgid "Submit Bug Report"
-msgstr "Po¹lji poroèilo o hro¹èu"
-
-#: ui/evolution.xml.h:17
-msgid "Submit _Bug Report"
-msgstr "_Po¹lji poroèilo o hro¹èu"
-
-#: ui/evolution.xml.h:18
-msgid "Submit bug report using Bug Buddy."
-msgstr "Po¹lji poroèilo o hro¹èu z uporabo progama Bug buddy."
-
-#: ui/evolution.xml.h:19
-msgid "Toggle whether to show the folder bar"
-msgstr "Preklopi prikaz vrstice z mapami"
-
-#: ui/evolution.xml.h:20
-msgid "Toggle whether to show the shortcut bar"
-msgstr "Preklopi prikaz vrstice z bli¾njicami"
-
-#: ui/evolution.xml.h:21
-msgid "Using the C_ontact Manager"
-msgstr "Uporaba upravljalnika _stikov"
-
-#: ui/evolution.xml.h:22
-msgid "Using the _Calendar"
-msgstr "Uporaba _koledarja"
-
-#: ui/evolution.xml.h:23
-msgid "Using the _Mailer"
-msgstr "Uporaba _po¹te"
-
-#: ui/evolution.xml.h:24
-msgid "Work Offline"
-msgstr "Delaj brez mre¾e"
-
-#: ui/evolution.xml.h:25
-msgid "_About Evolution..."
-msgstr "_O Evoluciji..."
-
-#: ui/evolution.xml.h:26
-msgid "_Actions"
-msgstr "_Dejanja"
-
-#: ui/evolution.xml.h:33
-msgid "_Folder Bar"
-msgstr "_Vrstica map"
-
-#: ui/evolution.xml.h:34
-msgid "_Go to Folder..."
-msgstr "Pojdi v _mapo..."
-
-#: ui/evolution.xml.h:36
-msgid "_Import file..."
-msgstr "_Uvozi datoteko..."
-
-#: ui/evolution.xml.h:37
-msgid "_Index"
-msgstr "_Kazalo"
-
-#: ui/evolution.xml.h:38
-msgid "_Mail message"
-msgstr "_Po¹lji sporoèilo"
-
-#: ui/evolution.xml.h:40
-msgid "_New Folder"
-msgstr "_Nova mapa"
-
-#: ui/evolution.xml.h:41
-msgid "_Shortcut Bar"
-msgstr "_Vrstica z blji¾njicami"
-
-#: views/addressbook/galview.xml.h:1
-msgid "Adress Cards"
-msgstr "Vizitke"
-
-#: views/addressbook/galview.xml.h:2
-msgid "By Company"
-msgstr "Po podjetju"
-
-#: views/addressbook/galview.xml.h:3
-msgid "Phone List"
-msgstr "Seznam telefonov"
-
-#: views/mail/galview.xml.h:1
-msgid "By Sender"
-msgstr "Po po¹iljatelju"
-
-#: views/mail/galview.xml.h:2
-msgid "By Status"
-msgstr "Po stanju"
-
-#: views/mail/galview.xml.h:3
-msgid "By Subject"
-msgstr "Po zadevi"
-
-#: views/mail/galview.xml.h:4
-msgid "Messages"
-msgstr "Sporoèila"
-
-#: views/tasks/galview.xml.h:2
-msgid "With Category"
-msgstr "S kategorijo"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:392
-msgid "Tentative"
-msgstr "Poskusno"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:393
-msgid "Busy"
-msgstr "Zaseden"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:394
-msgid "Out of Office"
-msgstr "Iz pisarne"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:395
-msgid "No Information"
-msgstr "Ni podatkov"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:411
-msgid "_Invite Others..."
-msgstr "_Povabi ostale..."
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:431
-msgid "_Options"
-msgstr "_Mo¾nosti"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:448
-msgid "Show _Only Working Hours"
-msgstr "Ka¾i le delavne ure"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:461
-msgid "Show _Zoomed Out"
-msgstr "Ka¾i poman_j¹ano"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:479
-msgid "_Update Free/Busy"
-msgstr "_Posodobi prosto/zasedeno"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:497
-msgid "_<<"
-msgstr "_<<"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:514
-msgid "_Autopick"
-msgstr "_Samodeno izberi"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:528
-msgid ">_>"
-msgstr ">_>"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:545
-msgid "_All People and Resources"
-msgstr "_Vsi ljudje in vsa sredstva"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:558
-msgid "All _People and One Resource"
-msgstr "Vsi ljudje in eno sredstvo"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:571
-msgid "_Required People"
-msgstr "_Potrebni ljudje"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:584
-msgid "Required People and _One Resource"
-msgstr "Potrebni ljudje in eno sredstvo"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:607
-msgid "Meeting _start time:"
-msgstr "Èas prièetka sestanka:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:631
-msgid "Meeting _end time:"
-msgstr "Èas zakljuèka sestanka:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:744
-msgid "All Attendees"
-msgstr "Vsi udele¾eni"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:469
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2477
-msgid "%A, %B %d, %Y"
-msgstr "%A, %d %B %Y"
-
-#: widgets/menus/gal-view-menus.c:177
-msgid "_Current View"
-msgstr "_Trenutni pogled"
-
-#: widgets/menus/gal-view-menus.c:196
-msgid "Define Views"
-msgstr "Doloèi poglede"
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:422
-msgid "MTWTFSS"
-msgstr "PTSÈPSN"
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1061 widgets/misc/e-calendar-item.c:2756
-msgid "%B %Y"
-msgstr "%B %Y"
-
-#: widgets/misc/e-cell-date-edit.c:221 widgets/misc/e-dateedit.c:418
-msgid "Now"
-msgstr "Sedaj"
-
-#: widgets/misc/e-cell-date-edit.c:245
-msgid "OK"
-msgstr "V redu"
-
-#: widgets/misc/e-cell-date-edit.c:726
-#, c-format
-msgid "The time must be in the format: %s"
-msgstr "Datum mora biti v obliki: %s"
-
-#: widgets/misc/e-clipped-label.c:112
-msgid "..."
-msgstr "..."
-
-#: widgets/misc/e-filter-bar.c:166
-msgid "Save Search"
-msgstr "Shrani iskanje"
-
-#: widgets/misc/e-filter-bar.c:237
-msgid "Advanced Search"
-msgstr "Napredno iskanje"
-
-#: widgets/misc/e-filter-bar.c:317 widgets/misc/e-filter-bar.h:97
-msgid "Advanced ..."
-msgstr "Napredno ..."
-
-#: widgets/misc/e-filter-bar.h:94
-msgid "Save As ..."
-msgstr "Shrani kot ..."
-
-#: widgets/misc/e-filter-bar.h:96
-msgid "Edit ..."
-msgstr "Uredi ..."
-
-#: widgets/misc/e-messagebox.c:152
-msgid "Information"
-msgstr "Podatki"
-
-#: widgets/misc/e-messagebox.c:159
-msgid "Warning"
-msgstr "Opozorilo"
-
-#: widgets/misc/e-messagebox.c:173
-msgid "Question"
-msgstr "Vpra¹anje"
-
-#: widgets/misc/e-messagebox.c:180
-msgid "Message"
-msgstr "Sporoèilo"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:224
-msgid "Don't show this message again."
-msgstr "Tega sporoèila ne ka¾i veè."
-
-#: widgets/misc/e-search-bar.c:148
-msgid "Sear_ch"
-msgstr "_Iskanje"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-msgid "The Personal Addressbook Server"
-msgstr "Stre¾nik osebnega adresarja"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr "Stre¾nik osebnega koledarja; tovarna koledarjal"
-
-#: wombat/wombat.c:173
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr "setup_vfs(): nisem mogel inicializirati GNOME-VFS"
-
-#: wombat/wombat.c:185
-msgid "init_corba(): could not initialize GNOME"
-msgstr "init_corba(): nisem mogel inicializirati GNOMEa"
-
-#: wombat/wombat.c:198
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "init_bonobo(): nisem mogel inicializirati Bonoba"
-
-#~ msgid "Click here to add a contact"
-#~ msgstr "Kliknite tu za dodajo stika"
-
-#~ msgid "No such host %s."
-#~ msgstr "Ni tak¹nega gostitelja %s."
-
-#~ msgid "Temporarily unable to look up hostname %s."
-#~ msgstr "Trenutno ne morem poizvedeti po gostitelju %s."
-
-#~ msgid "Remove action"
-#~ msgstr "Odstrani dejanje"
-
-#~ msgid "Remove criterion"
-#~ msgstr "Odstrani pogoj"
-
-#~ msgid "VFolder on Subject"
-#~ msgstr "vMapa glede na Zadevo"
-
-#~ msgid "VFolder on Sender"
-#~ msgstr "vMapa glede na Po¹iljatelja"
-
-#~ msgid "VFolder on Recipients"
-#~ msgstr "vMapa glede na Prejemnika"
-
-#~ msgid "Mark as Read"
-#~ msgstr "Oznaèi kot prebrano"
-
-#~ msgid "Mark as Unread"
-#~ msgstr "Oznaèi kot neprebrano"
-
-#~ msgid "Move to Folder..."
-#~ msgstr "Prestavi v mapo..."
-
-#~ msgid "Copy to Folder..."
-#~ msgstr "Kopiraj v mapo..."
-
-#~ msgid "Do you accept?"
-#~ msgstr "Sprejemate?"
-
-#~ msgid "Disable."
-#~ msgstr "Izkljuèeno."
-
-#~ msgid "_Compose"
-#~ msgstr "_Sestavi"
-
-#~ msgid "PLAIN"
-#~ msgstr "ÈISTO"
-
-#~ msgid ""
-#~ "This option will connect to the server using a the PLAIN SASL mechanism "
-#~ "if the server supports it."
-#~ msgstr ""
-#~ "Ta mo¾nost narekuje povezavo s stre¾nikom z uporabo ÈISTEGA SASL "
-#~ "mehanizma,èe stre¾nik to podpira."
-
-#~ msgid "URL string `%s' contains no protocol"
-#~ msgstr "URL niz '%s' ne vsebuje protokola"
-
-#~ msgid "URL string `%s' contains an invalid protocol"
-#~ msgstr "URL niz '%s' vsebuje neveljaven protokol"
-
-#~ msgid "Port number in URL `%s' is non-numeric"
-#~ msgstr "©tevilka vrat v URL '%s' ni numerièna"
-
-#~ msgid "Secure IMAPv4"
-#~ msgstr "Varni IMAPv4"
-
-#~ msgid "For reading and storing mail on IMAP servers over an SSL connection."
-#~ msgstr "Za branje in hranjenje po¹te na IMAP stre¾nikih preko povezave SSL."
-
-#~ msgid "Secure POP"
-#~ msgstr "Varni POP"
-
-#~ msgid ""
-#~ "For connecting to POP servers over an SSL connection. The POP protocol "
-#~ "can also be used to retrieve mail from certain web mail providers and "
-#~ "proprietary email systems."
-#~ msgstr ""
-#~ "Za povezovanje s stre¾niki POP preko povezave SSL. Protokol POP se lahko "
-#~ "uporabi tudi za prena¹anje po¹te iz nekaterih spletnih nuditeljev po¹te "
-#~ "in zaprtih sistemov e-po¹te."
-
-#~ msgid "Secure SMTP"
-#~ msgstr "Varni SMTP"
-
-#~ msgid ""
-#~ "For delivering mail by connecting to a remote mailhub using SMTP over an "
-#~ "SSL connection.\n"
-#~ msgstr ""
-#~ "Za dostavo po¹te preko povezave z oddaljenim po¹tnim razdelilcem z "
-#~ "uporabo SMTP preko povezave SSL.\n"
-
-#~ msgid ""
-#~ "One or more of your servers are not configured correctly.\n"
-#~ "Do you wish to save anyway?"
-#~ msgstr ""
-#~ "Eden ali veè stre¾nikov ni pravilno nastavljenih.\n"
-#~ "Vseeno shrani?"
-
-#~ msgid "Unspecified"
-#~ msgstr "Ni naveden"
-
-#~ msgid "Advanced"
-#~ msgstr "Napredno"
-
-#~ msgid "Check settings"
-#~ msgstr "Preveri nastavitve"
-
-#~ msgid "Email address:"
-#~ msgstr "E-po¹tni naslov:"
-
-#~ msgid "Evolution Mail Configuration"
-#~ msgstr "Nastavitev Evolucijine po¹te"
-
-#~ msgid "Hostname:"
-#~ msgstr "Ime gostitelja:"
-
-#~ msgid "IMAP"
-#~ msgstr "IMAP"
-
-#~ msgid "Include this account when receiving mail"
-#~ msgstr "Vkljuèi ta raèun ob sprejemanju po¹te"
-
-#~ msgid "Keep mail on server"
-#~ msgstr "Ohrani po¹to na stre¾niku"
-
-#~ msgid "Kerberos"
-#~ msgstr "Kerberos"
-
-#~ msgid "Mail"
-#~ msgstr "Po¹ta"
-
-#~ msgid "Mail Account"
-#~ msgstr "Po¹tni raèun"
-
-#~ msgid "Mail Configuration Druid"
-#~ msgstr "Druid za nastavitev po¹te"
-
-#~ msgid "Optional"
-#~ msgstr "Dodatno"
-
-#~ msgid "Password:"
-#~ msgstr "Geslo:"
-
-#~ msgid "Plain Text"
-#~ msgstr "Ne¹ifrirano"
-
-#~ msgid "Remember my password"
-#~ msgstr "Zapomni si geslo"
-
-#~ msgid "Reply address:"
-#~ msgstr "Povratni naslov:"
-
-#~ msgid "Required"
-#~ msgstr "Potrebno"
-
-#~ msgid "Save password"
-#~ msgstr "Shrani geslo"
-
-#~ msgid "Select signature file"
-#~ msgstr "Izberi datoteko s podpisom"
-
-#~ msgid "Server type:"
-#~ msgstr "Vrsta stre¾nika:"
-
-#~ msgid "Signature:"
-#~ msgstr "Podpis:"
-
-#~ msgid "Source"
-#~ msgstr "Izvorna koda"
-
-#~ msgid "Transport"
-#~ msgstr "Prenos"
-
-#~ msgid "Transport Authentication"
-#~ msgstr "Avtentifikacija prenosa"
-
-#~ msgid ""
-#~ "Type the name by which you would like to refer to these servers. For "
-#~ "example: \"Work\" or \"Home\"."
-#~ msgstr ""
-#~ "Vpi¹ite ime s katerimi ¾elite nazivati te stre¾nike. Na primer:\"slu¾beni"
-#~ "\" ali \"domaèi\"."
-
-#~ msgid "minutes."
-#~ msgstr "minut."
-
-#~ msgid ""
-#~ "Failed to verify the incoming mail configuration.\n"
-#~ "You may experience problems retrieving your mail from %s"
-#~ msgstr ""
-#~ "Nisem uspel preveriti nastavitve dohodne po¹te.\n"
-#~ "Morda boste naleteli na probleme ob dobivanju po¹te z %s"
-
-#~ msgid ""
-#~ "Failed to verify the outgoing mail configuration.\n"
-#~ "You may experience problems sending your mail using %s"
-#~ msgstr ""
-#~ "Nisem uspel preveriti nastavitve odhodne po¹te.\n"
-#~ "Morda boste naleteli na probleme ob po¹iljanju po¹te preko %s"
-
-#~ msgid "%s message %d of %d (uid \"%s\")"
-#~ msgstr "%s sporoèilo %d od %d (uid \"%s\")"
-
-#~ msgid "Disabled"
-#~ msgstr "Izkljuèeno"
-
-#~ msgid "Synchronize"
-#~ msgstr "Uskladi"
-
-#~ msgid "Copy From Pilot"
-#~ msgstr "Kopiraj iz Pilota"
-
-#~ msgid "Copy To Pilot"
-#~ msgstr "Kopiraj na Pilota"
-
-#~ msgid "Merge From Pilot"
-#~ msgstr "Zlij iz Pilota"
-
-#~ msgid "Merge To Pilot"
-#~ msgstr "Zlij na Pilota"
-
-#~ msgid "JP Rosevear <jpr@helixcode.com>"
-#~ msgstr "JP Rosevear <jpr@helixcode.com>"
-
-#~ msgid "Original Author:"
-#~ msgstr "Prvotni avtor:"
-
-#~ msgid "Eskil Heyn Olsen <deity@eskil.dk>"
-#~ msgstr "Eskil Heyn Olsen <deity@eskil.dk>"
-
-#~ msgid "Evolution Addressbook Conduit"
-#~ msgstr "Evolucijin adresarjev veznik"
-
-#~ msgid "(C) 1998-2000 the Free Software Foundation and Helix Code"
-#~ msgstr "(C) 1998-2000 Fundacija za prosto programje in Helix Code"
-
-#~ msgid "Configuration utility for the evolution addressbook conduit.\n"
-#~ msgstr "Nastavitveno orodje za Evolucijin adresarjev veznik.\n"
-
-#~ msgid "gnome-unknown.xpm"
-#~ msgstr "gnome-unknown.xpm"
-
-#~ msgid "Synchronize Action"
-#~ msgstr "Uskladi dejanje"
-
-#~ msgid "Conduit state"
-#~ msgstr "Stanje veznika"
-
-#~ msgid ""
-#~ "No pilot configured, please choose the\n"
-#~ "'Pilot Link Properties' capplet first."
-#~ msgstr ""
-#~ "Noben Pilot ni nastavljen, prosim najprej izberite\n"
-#~ "'Lastnosti povezave s Pilotom' nastavitveni vstavek."
-
-#~ msgid "Not connected to the gnome-pilot daemon"
-#~ msgstr "Nisem povezaqn z gnome-pilot daemonom"
-
-#~ msgid ""
-#~ "An error occured when trying to fetch\n"
-#~ "pilot list from the gnome-pilot daemon"
-#~ msgstr ""
-#~ "Ob prena¹anju seznama pilotov z gnome-pilot\n"
-#~ "daemona se je zgodila napaka"
-
-#~ msgid "Configure the address conduit"
-#~ msgstr "Nastavi veznik adresarja"
-
-#~ msgid "Evolution Address conduit "
-#~ msgstr "Evolucijin veznik adresarja "
-
-#~ msgid "label26"
-#~ msgstr "oznaèba26"
-
-#~ msgid "Evolution Calendar Conduit"
-#~ msgstr "Evolucijin veznik koledarja"
-
-#~ msgid "Configuration utility for the evolution calendar conduit.\n"
-#~ msgstr "Nastavitveno orodje za Evolucijin veznik koledarja.\n"
-
-#~ msgid "Configure the GnomeCal conduit"
-#~ msgstr "Nastavi veznik GnomeCal"
-
-#~ msgid "Evolution Calendar conduit"
-#~ msgstr "Evolucijin veznik Koledarja"
-
-#~ msgid "Configure the todo conduit"
-#~ msgstr "Nastavi veznik za-opravit"
-
-#~ msgid "Evolution ToDo conduit "
-#~ msgstr "Evolucijin veznik za-opravit"
-
-#~ msgid "Evolution ToDo Conduit"
-#~ msgstr "Evolucijin veznik za-opravit"
-
-#~ msgid "Configuration utility for the evolution todo conduit.\n"
-#~ msgstr "Nastavitveno orodje za Evolucijin za-opravit veznik.\n"
-
-#~ msgid "label21"
-#~ msgstr "oznaèba21"
-
-#~ msgid "label55"
-#~ msgstr "label55"
-
-#~ msgid "No authentication required"
-#~ msgstr "Avtentifikacija ni potrebna"
-
-#~ msgid ""
-#~ "This option will connect to the SMTP server without using any kind of "
-#~ "authentication. This should be fine for connecting to most SMTP servers."
-#~ msgstr ""
-#~ "Ta mo¾nost narekuje povezavo s stre¾nikom SMTP brez uporabe "
-#~ "avtentifikacije. To bi moralo biti v redu za povezavo z veèino stre¾niki "
-#~ "SMTP."
-
-#~ msgid "Edit Filter Rule"
-#~ msgstr "Uredi pravilo filtra"
-
-#~ msgid "Set Flag"
-#~ msgstr "Postavi oznaèbo"
-
-#~ msgid "matches regex"
-#~ msgstr "ustreza regularnemu izrazu"
-
-#~ msgid "Add VFolder Rule"
-#~ msgstr "Dodaj pravilo vMape"
-
-#~ msgid "Edit VFolder Rule"
-#~ msgstr "Uredi pravilo vMape"
-
-#~ msgid "[ %s ]"
-#~ msgstr "[ %s ]"
-
-#~ msgid "%s, et al."
-#~ msgstr "%s, et al."
-
-#~ msgid "<unknown>"
-#~ msgstr "<neznan>"
-
-#~ msgid "Message _Display"
-#~ msgstr "Prikaz _sporoèila"
-
-#~ msgid "_Message Hiding"
-#~ msgstr "_Skrivanje sporoèila"
-
-#~ msgid "The time is invalid"
-#~ msgstr "Èas ni veljaven"
-
-#~ msgid "The priority must be between 1 and 9, inclusive"
-#~ msgstr "Prioriteta mora biti med vkljuèno 1 in 9"
-
-#~ msgid "Schedule meeting"
-#~ msgstr "Naèrtuj sestanek"
-
-#~ msgid "Edit this appointment..."
-#~ msgstr "Uredi ta zmenek..."
-
-#~ msgid "Enter the identity you wish to send this message from"
-#~ msgstr "Vnesite identiteto s katero ¾elite poslati to sporoèilo"
-
-#~ msgid "Enter the subject of the mail"
-#~ msgstr "Vnesite zadevo sproèila"
-
-#~ msgid "Account Properties"
-#~ msgstr "Lastnosti raèuna"
-
-#~ msgid "E-Mail Address:"
-#~ msgstr "E-po¹tni naslov:"
-
-#~ msgid "Include in \"Get Mail\" operations."
-#~ msgstr "Vkljuèuj v operacije \"Dobi po¹to\"."
-
-#~ msgid "Incoming Mail Server"
-#~ msgstr "Stre¾nik dohodne po¹te"
-
-#~ msgid "Miscellaneous"
-#~ msgstr "Razno"
-
-#~ msgid "Outgoing Mail Server"
-#~ msgstr "Stre¾nik odhodne po¹te"
-
-#~ msgid "Servers"
-#~ msgstr "Stre¾niki"
-
-#~ msgid "_Addressbook Configuration..."
-#~ msgstr "Nastavitev _adresarja..."
-
-#~ msgid "_Print Contacts..."
-#~ msgstr "Na_tisni stike..."
-
-#~ msgid "Ca_lendar"
-#~ msgstr "Ko_ledar"
-
-#~ msgid "Calendar Preferences..."
-#~ msgstr "Nastavitve koledarja..."
-
-#~ msgid "_Print this calendar"
-#~ msgstr "Na_tisni ta koledar"
-
-#~ msgid "Create Rule"
-#~ msgstr "Ustvari pravilo"
-
-#~ msgid "Fi_lter on Sender"
-#~ msgstr "Filtriraj glede na Po¹iljatelja"
-
-#~ msgid "Filter on Rec_ipients"
-#~ msgstr "Filtriraj glede na Prejemnike"
-
-#~ msgid "Get Mail"
-#~ msgstr "Poberi po¹to"
-
-#~ msgid "Reply to _Sender"
-#~ msgstr "Odgovori _po¹iljatelju"
-
-#~ msgid "Show _All Messages"
-#~ msgstr "Ka¾i vsa sporoèila"
-
-#~ msgid "_Filter on Subject"
-#~ msgstr "Filtriraj glede na _Zadevo"
-
-#~ msgid "_Mail Configuration..."
-#~ msgstr "Nastavitev _Po¹te..."
-
-#~ msgid "_Open in New Window"
-#~ msgstr "_Odpri v novem oknu"
-
-#~ msgid "_Print Message"
-#~ msgstr "Na_tisni sporoèilo"
-
-#~ msgid "_VFolder on Subject"
-#~ msgstr "vMapa glede na _Zadevo"
-
-#~ msgid "New"
-#~ msgstr "Nov"
-
-#~ msgid "Customi_ze..."
-#~ msgstr "_Prilagodi..."
-
-#~ msgid "Show the _Folder Bar"
-#~ msgstr "Ka¾i vrstico z _mapami"
-
-#~ msgid "Show the _Shortcut Bar"
-#~ msgstr "Ka¾i vrstico z bli¾njicami"
-
-#~ msgid "_Settings"
-#~ msgstr "_Nastavitve"
-
-#~ msgid "Saving changes to message..."
-#~ msgstr "Shranjujem spremembe sporoèila..."
-
-#~ msgid "Save changes to message..."
-#~ msgstr "Shranjujem spremembe sporoèila..."
-
-#~ msgid "Error saving composition to 'Drafts': %s"
-#~ msgstr "Napaka ob shranjevanju kompozicije v 'Osnutki': %s"
-
-#~ msgid "Body or subject contains"
-#~ msgstr "Telo ali zadeva vsebuje"
-
-#~ msgid "Body contains"
-#~ msgstr "Telo vsebuje"
-
-#~ msgid "Subject contains"
-#~ msgstr "Zadeva vsebuje"
-
-#~ msgid "Body does not contain"
-#~ msgstr "Telo ne vsebuje"
-
-#~ msgid "Subject does not contain"
-#~ msgstr "Zadeva ne vsebuje"
-
-#~ msgid "Sender contains"
-#~ msgstr "Po¹iljatelj vsebuje"
-
-#~ msgid "Connect to server"
-#~ msgstr "Pove¾i se s stre¾nikom"
-
-#~ msgid "Registering local folder"
-#~ msgstr "Registriam krajevno mapo"
-
-#~ msgid "Appending \"%s\""
-#~ msgstr "Dodajam \"%s\""
-
-#~ msgid "Appending a message without a subject"
-#~ msgstr "Dodajam sporoèilo brez navedene zadeve"
-
-#~ msgid "Moving messages from \"%s\" into \"%s\""
-#~ msgstr "Prestavljam sporoèila iz \"%s\" v \"%s\""
-
-#~ msgid "Copying messages from \"%s\" into \"%s\""
-#~ msgstr "Kopiram sporoèila iz \"%s\" v \"%s\""
-
-#~ msgid "Move messages from \"%s\" into \"%s\""
-#~ msgstr "Prestavi sporoèilo iz \"%s\" v \"%s\""
-
-#~ msgid "Copy messages from \"%s\" into \"%s\""
-#~ msgstr "Kopiraj sporoèilo iz \"%s\" v \"%s\""
-
-#~ msgid "(No description)"
-#~ msgstr "(ni opisa)"
-
-#~ msgid "Opening Trash folder for %s"
-#~ msgstr "Odpiram mapo Smeti za %s"
-
-#~ msgid "Loading %s Folder for %s"
-#~ msgstr "Nalagam mapo %s za %s"
-
-#~ msgid "Load %s Folder for %s"
-#~ msgstr "Nalo¾i mapo %s za %s"
-
-#~ msgid ""
-#~ "Error while preparing to %s:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Napaka ob pripravljanju na %s:\n"
-#~ "%s"
-
-#~ msgid ""
-#~ "Error while `%s':\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Napaka ob '%s':\n"
-#~ "%s"
-
-#~ msgid "Error reading commands from dispatching thread."
-#~ msgstr "Napaka ob branju ukazov iz razpo¹iljalne niti."
-
-#~ msgid "Corrupted message from dispatching thread?"
-#~ msgstr "Prispelo pokvarjeno sporoèilo iz razpo¹iljalne niti?"
-
-#~ msgid "Could not create dialog box."
-#~ msgstr "Nisem mogel ustvariti dialoga."
-
-#~ msgid ""
-#~ "Cannot open location `%s':\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Nisem mogel odpreti URIja `%s':\n"
-#~ "%s"
-
-#~ msgid "Get store for \"%s\""
-#~ msgstr "Dobi shrambo za \"%s\""
-
-#~ msgid "Unsubscribe from folder \"%s\""
-#~ msgstr "Preklièi naroènino na mapo \"%s\""
-
-#~ msgid "All Folders"
-#~ msgstr "Vse mape"
-
-#~ msgid "Display folders whose name contain:"
-#~ msgstr "Prika¾i mape, katerih ime vsebuje:"
-
-#~ msgid "Query"
-#~ msgstr "Poizvedba"
-
-#~ msgid "Subscribed"
-#~ msgstr "Naroèen"
-
-#~ msgid ""
-#~ "\n"
-#~ "Mr.\n"
-#~ "Mrs.\n"
-#~ "Ms.\n"
-#~ "Miss\n"
-#~ "Dr.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "G.\n"
-#~ "Ga.\n"
-#~ "Ga.\n"
-#~ "Gdè.\n"
-#~ "Dr.\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Sr.\n"
-#~ "Jr.\n"
-#~ "I\n"
-#~ "II\n"
-#~ "III\n"
-#~ "Esq.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "St.\n"
-#~ "Ml.\n"
-#~ "I\n"
-#~ "II\n"
-#~ "III\n"
-#~ "Esq.\n"
-
-#~ msgid "Local stores do not have a default folder"
-#~ msgstr "Krajevno hranjenje nima privzete mape"
-
-#~ msgid "Local folders may not be nested."
-#~ msgstr "Krajevnih map ni mogoèe gnezditi."
-
-#~ msgid "Note: When converting between mailbox formats, a failure\n"
-#~ msgstr ""
-#~ "Opomba: Med pretvarjanjem med razliènimi oblikami po¹tnih predalov\n"
-
-#~ msgid "(such as lack of disk space) may not be automatically\n"
-#~ msgstr "napaka (kot pomanjkanje diska) ni nujno samodejno\n"
-
-#~ msgid "recoverable. Please use this feature with care."
-#~ msgstr "odpravljiva. Prosimo pazljivo uporabljajte to mo¾nost."
-
-#~ msgid "Congratulations, your mail configuration is complete.\n"
-#~ msgstr "Èestitamo, va¹a nastavitev po¹te je opravljena.\n"
-
-#~ msgid "\n"
-#~ msgstr "\n"
-
-#~ msgid "You are now ready to send and receive email \n"
-#~ msgstr "Sedaj ste pripravljeni za sprejemanje e-po¹te \n"
-
-#~ msgid "using Evolution. \n"
-#~ msgstr "z Evolucijo. \n"
-
-#~ msgid "Click \"Finish\" to save your settings."
-#~ msgstr "Kliknite \"Konèaj\" za shranitev va¹ih nastavitev."
-
-#~ msgid "Click \"Next\" to begin. "
-#~ msgstr "Kliknite \"Naprej\" za zaèetek. "
-
-#~ msgid "FIXME: Assig_n Task"
-#~ msgstr "FIXME: Dodali _nalogo"
-
-#~ msgid "FIXME: Ch_oose Form..."
-#~ msgstr "FIXME: Izberi izmed..."
-
-#~ msgid "FIXME: Chec_k Names"
-#~ msgstr "FIXME: Preve_ri imena"
-
-#~ msgid "FIXME: Cop_y to Folder..."
-#~ msgstr "FIXME: Kopiraj v mapo..."
-
-#~ msgid "FIXME: D_esign a Form..."
-#~ msgstr "FIXME: _Oblikuj obrazec..."
-
-#~ msgid "FIXME: Define Print _Styles"
-#~ msgstr "FIXME: Doloèi _sloge tiskanja"
-
-#~ msgid "FIXME: Desi_gn This Form"
-#~ msgstr "FIXME: Obli_kuj ta obrazec"
-
-#~ msgid "FIXME: For_ward"
-#~ msgstr "FIXME: _Posreduj naprej"
-
-#~ msgid "FIXME: Help"
-#~ msgstr "FIXME: Pomoè"
-
-#~ msgid "FIXME: In_complete Task"
-#~ msgstr "FIXME: Do_konèana naloga"
-
-#~ msgid "FIXME: Insert File"
-#~ msgstr "FIXME: Vstavi datoteko"
-
-#~ msgid "FIXME: It_em..."
-#~ msgstr "FIXME: Pr_edmet..."
-
-#~ msgid "FIXME: Paste _Special... "
-#~ msgstr "FIXME: Prilepi po_sebno..."
-
-#~ msgid "FIXME: Print Pre_view"
-#~ msgstr "FIXME: Predogled tiskanja"
-
-#~ msgid "FIXME: Pu_blish Form As..."
-#~ msgstr "FIXME: O_bjavi obrazec kot..."
-
-#~ msgid "FIXME: Publish _Form..."
-#~ msgstr "FIXME: Ob_javi obrazec..."
-
-#~ msgid "FIXME: Rec_urrence..."
-#~ msgstr "FIXME: Ponovitve..."
-
-#~ msgid "FIXME: Reply to A_ll"
-#~ msgstr "FIXME: Odgovori v_sem"
-
-#~ msgid "FIXME: S_end"
-#~ msgstr "FIXME: Po¹lji"
-
-#~ msgid "FIXME: Save Attac_hments..."
-#~ msgstr "FIXME: Dodaj prilogo..."
-
-#~ msgid "FIXME: Script _Debugger"
-#~ msgstr "FIXME: Razhro¹èevalnik skript"
-
-#~ msgid "FIXME: Task _Request"
-#~ msgstr "FIXME: Zahteva po _nalogi"
-
-#~ msgid "FIXME: _Appointment"
-#~ msgstr "FIXME: _Zmenek"
-
-#~ msgid "FIXME: _Contact"
-#~ msgstr "FIXME: _Stik"
-
-#~ msgid "FIXME: _Customize..."
-#~ msgstr "FIXME: _Prilagodi..."
-
-#~ msgid "FIXME: _File..."
-#~ msgstr "FIXME: _Datoteka..."
-
-#~ msgid "FIXME: _Font..."
-#~ msgstr "FIXME: _Pisava..."
-
-#~ msgid "FIXME: _Formatting"
-#~ msgstr "FIXME: _Oblikovanje"
-
-#~ msgid "FIXME: _Item"
-#~ msgstr "FIXME: _Predmet"
-
-#~ msgid "FIXME: _Journal Entry"
-#~ msgstr "FIXME: _Vpis v dnevniku"
-
-#~ msgid "FIXME: _Mail Message"
-#~ msgstr "FIXME: _Po¹lji sporoèilo"
-
-#~ msgid "FIXME: _Mark Complete"
-#~ msgstr "FIXME: _Oznaèi kot dokonèano"
-
-#~ msgid "FIXME: _Memo Style"
-#~ msgstr "FIXME: V slogu zabele¾ka"
-
-#~ msgid "FIXME: _Move to Folder..."
-#~ msgstr "FIXME: Prestavi v mapo..."
-
-#~ msgid "FIXME: _New Task"
-#~ msgstr "FIXME: _Nova naloga"
-
-#~ msgid "FIXME: _Object..."
-#~ msgstr "FIXME: _Zadeva..."
-
-#~ msgid "FIXME: _Paragraph..."
-#~ msgstr "FIXME: _Odstavek..."
-
-#~ msgid "FIXME: _Reply"
-#~ msgstr "FIXME: _Odgovori"
-
-#~ msgid "FIXME: _Spelling..."
-#~ msgstr "FIXME: _Èrkovanje..."
-
-#~ msgid "FIXME: _Standard"
-#~ msgstr "FIXME: _Obièajno"
-
-#~ msgid "FIXME: _Task"
-#~ msgstr "FIXME: _Naloga"
-
-#~ msgid "FIXME: _Unread Item"
-#~ msgstr "FIXME: _Neprebran predmet"
-
-#~ msgid "FIXME: _note"
-#~ msgstr "FIXME: _opomba"
-
-#~ msgid "Find _Again"
-#~ msgstr "Poi¹èi znova"
-
-#~ msgid "_Find..."
-#~ msgstr "_Poi¹èi..."
-
-#~ msgid "_Forms"
-#~ msgstr "_Obrazci"
-
-#~ msgid "_Object"
-#~ msgstr "_Predmet"
-
-#~ msgid "_Redo"
-#~ msgstr "Obnovi"
-
-#~ msgid "_Replace..."
-#~ msgstr "_Zamenjaj..."
-
-#~ msgid "_Toolbars"
-#~ msgstr "_Orodjarne"
-
-#~ msgid "_Undo"
-#~ msgstr "_Razveljavi"
-
-#~ msgid "C_lassification:"
-#~ msgstr "_Uvrstitev:"
-
-#~ msgid "S_ummary"
-#~ msgstr "_Povzetek"
-
-#~ msgid "task-editor-dialog"
-#~ msgstr "dialog-urejevalnik-dogodkov"
-
-#~ msgid "Open..."
-#~ msgstr "Odpri..."
-
-#~ msgid "Days"
-#~ msgstr "Dni"
-
-#~ msgid "Hours"
-#~ msgstr "Ur"
-
-#~ msgid "Mail _to:"
-#~ msgstr "Po¹lji po¹to _za:"
-
-#~ msgid "Minutes"
-#~ msgstr "Minut"
-
-#~ msgid "Time"
-#~ msgstr "Èas"
-
-#~ msgid "_Audio"
-#~ msgstr "_Zvok"
-
-#~ msgid "_Display"
-#~ msgstr "_Prikaz"
-
-#~ msgid "_Mail"
-#~ msgstr "_Po¹lji po¹to"
-
-#~ msgid "_Program"
-#~ msgstr "_Program"
-
-#~ msgid "event-editor-dialog"
-#~ msgstr "dialog-urejevalec-dogodkov"
-
-#~ msgid ""
-#~ "Could not open file %s:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Nisem mogel odpreti datoteke: %s:\n"
-#~ "%s"
-
-#~ msgid "Cancel"
-#~ msgstr "Preklièi"
-
-#~ msgid "Open a calendar"
-#~ msgstr "Odpri koledar"
-
-#~ msgid "FIXME: _New Appointment"
-#~ msgstr "FIXME: _Nov zmenek"
-
-#~ msgid "FIXME: _Note"
-#~ msgstr "FIXME: _Opomba"
-
-#~ msgid "Group %i"
-#~ msgstr "Skupina %i"
-
-#~ msgid "Failed to perform regex search on message header: %s"
-#~ msgstr ""
-#~ "Nisem uspel izvesti iskanja z regularnimi izrazi v glavah sporoèil: %s"
-
-#~ msgid "You have no Outbox configured"
-#~ msgstr "Nimate nastavljenega Izhodnega po¹tnega predala"
-
-#~ msgid "Fetching email from %s"
-#~ msgstr "Pobiram po¹to iz %s"
-
-#~ msgid "Fetch email from %s"
-#~ msgstr "Poberi po¹to iz %s"
-
-#~ msgid "Filtering email on demand"
-#~ msgstr "Filtriram po¹to na zahtevo"
-
-#~ msgid "Filter email on demand"
-#~ msgstr "Fitriraj po¹to na zahtevo"
-
-#~ msgid "Sending queue"
-#~ msgstr "Po¹iljam vrsto"
-
-#~ msgid "Send queue"
-#~ msgstr "Po¹lji vrsto"
-
-#~ msgid "Examining %s"
-#~ msgstr "Preuèujem %s"
-
-#~ msgid ""
-#~ "Could not read UID cache file \"%s\". You may receive duplicate messages."
-#~ msgstr ""
-#~ "Nisem mogel prebrati UID medpomnilne datoteke \"%s\". Morda boste "
-#~ "dobilipodvojeno sporoèilo."
-
-#~ msgid "Retrieving message %d of %d"
-#~ msgstr "Prena¹am sporoèilo %d od %d"
-
-#~ msgid "Saving changes to %s"
-#~ msgstr "Shranjujem spremembe pri %s"
-
-#~ msgid "Experimental/new code to get/receive mail"
-#~ msgstr "Eksperimentalna/nova koda za sprejem/po¹iljanje po¹te"
-
-#~ msgid "Get Mail (new)"
-#~ msgstr "Dobi po¹to (novo)"
-
-#~ msgid "External Directories"
-#~ msgstr "Zunanji imeniki"
-
-#~ msgid "Port Number:"
-#~ msgstr "©tevilka vrat:"
-
-#~ msgid "window2"
-#~ msgstr "okno2"
-
-#~ msgid "Headings:"
-#~ msgstr "Zaglavja:"
-
-#~ msgid "Highlighted day:"
-#~ msgstr "Osvetljen dan:"
-
-#~ msgid "Day numbers:"
-#~ msgstr "©tevilke dni:"
-
-#~ msgid "Current day's number:"
-#~ msgstr "©tevilka trenutnega dne:"
-
-#~ msgid "To-Do item that is not yet due:"
-#~ msgstr "Predmet za-opravit, ki ¹e ni na vrsti:"
-
-#~ msgid "To-Do item that is due today:"
-#~ msgstr "Predmet za-opravit, ki je na vrsti danes:"
-
-#~ msgid "To-Do item that is overdue:"
-#~ msgstr "Predmet za-opravit, ki je ¾e pretekel:"
-
-#~ msgid "Recur on the"
-#~ msgstr "Ponovitev na"
-
-#~ msgid "th day of the month"
-#~ msgstr "dan v mesecu"
-
-#~ msgid ""
-#~ "This appointment has custom recurrence rules that cannot be edited by "
-#~ "Evolution.\n"
-#~ "\n"
-#~ "However, the appointment will recur at the appropriate time and will be "
-#~ "displayed properly in the calendar views."
-#~ msgstr ""
-#~ "Ta zmenek ima pravila ponovitev po meri, ki ne morejo biti urejana "
-#~ "znotraj Evolucije.\n"
-#~ "\n"
-#~ "Vendar se bo zmenek ponovil pravoèasno in bo pravilno prikazan v pogledu "
-#~ "koledarja."
-
-#~ msgid "may"
-#~ msgstr "maj"
-
-#~ msgid "sept"
-#~ msgstr "sept"
-
-#~ msgid "sunday"
-#~ msgstr "nedelja"
-
-#~ msgid "monday"
-#~ msgstr "ponedeljek"
-
-#~ msgid "tuesday"
-#~ msgstr "torek"
-
-#~ msgid "wednesday"
-#~ msgstr "sreda"
-
-#~ msgid "wednes"
-#~ msgstr "sre"
-
-#~ msgid "thursday"
-#~ msgstr "èetrtek"
-
-#~ msgid "thur"
-#~ msgstr "èet"
-
-#~ msgid "thurs"
-#~ msgstr "èet"
-
-#~ msgid "friday"
-#~ msgstr "petek"
-
-#~ msgid "saturday"
-#~ msgstr "sobota"
-
-#~ msgid "fortnight"
-#~ msgstr "¹tirinajst dni"
-
-#~ msgid "min"
-#~ msgstr "min"
-
-#~ msgid "sec"
-#~ msgstr "sek"
-
-#~ msgid "tomorrow"
-#~ msgstr "jutri"
-
-#~ msgid "yesterday"
-#~ msgstr "vèeraj"
-
-#~ msgid "today"
-#~ msgstr "danes"
-
-#~ msgid "last"
-#~ msgstr "zadnji"
-
-#~ msgid "this"
-#~ msgstr "ta"
-
-#~ msgid "next"
-#~ msgstr "naslednji"
-
-#~ msgid "first"
-#~ msgstr "prvi"
-
-#~ msgid "third"
-#~ msgstr "tretji"
-
-#~ msgid "fourth"
-#~ msgstr "èetrti"
-
-#~ msgid "fifth"
-#~ msgstr "peti"
-
-#~ msgid "sixth"
-#~ msgstr "¹esti"
-
-#~ msgid "seventh"
-#~ msgstr "sedmi"
-
-#~ msgid "eighth"
-#~ msgstr "osmi"
-
-#~ msgid "ninth"
-#~ msgstr "deveti"
-
-#~ msgid "tenth"
-#~ msgstr "deseti"
-
-#~ msgid "eleventh"
-#~ msgstr "enajsti"
-
-#~ msgid "twelfth"
-#~ msgstr "dvanajsti"
-
-#~ msgid "ago"
-#~ msgstr "nazaj"
-
-#~ msgid "Create to-do item"
-#~ msgstr "Ustvari predmet za-opravit"
-
-#~ msgid "Edit to-do item"
-#~ msgstr "Uredi predemet za-opravit"
-
-#~ msgid "Due Date:"
-#~ msgstr "Do datuma:"
-
-#~ msgid "Item Comments:"
-#~ msgstr "Komentarji predmeta:"
-
-#~ msgid "Year:"
-#~ msgstr "Leto:"
-
-#~ msgid ""
-#~ "Please select the date you want to go to.\n"
-#~ "When you click on a day, you will be taken\n"
-#~ "to that date."
-#~ msgstr ""
-#~ "Prosim izberite datum na katerega hoèete iti.\n"
-#~ "Ko klikente na dan boste samodejno ¹li\n"
-#~ "na ta datum."
-
-#~ msgid "Time display"
-#~ msgstr "Prikaz èasa"
-
-#~ msgid "Time format"
-#~ msgstr "Oblika izpisa èasa"
-
-#~ msgid "12-hour (AM/PM)"
-#~ msgstr "12 urna (dop./pop.)"
-
-#~ msgid "24-hour"
-#~ msgstr "24 urna"
-
-#~ msgid "Weeks start on"
-#~ msgstr "Tedni se zaènejo v"
-
-#~ msgid "Day range"
-#~ msgstr "Razpon dni"
-
-#~ msgid ""
-#~ "Please select the start and end hours you want\n"
-#~ "to be displayed in the day view and week view.\n"
-#~ "Times outside this range will not be displayed\n"
-#~ "by default."
-#~ msgstr ""
-#~ "Prosim izberite ure zaèetka in konca dneva, ki naj\n"
-#~ "bodo prikazane v dnevnem in tedenskem pogledu.\n"
-#~ "Èasi izven tega razpona ne bodo samodejno prikazani"
-
-#~ msgid "Day end:"
-#~ msgstr "Konec dneva:"
-
-#~ msgid "Colors for display"
-#~ msgstr "Barve za prikaz"
-
-#~ msgid "Show on TODO List:"
-#~ msgstr "Poka¾i v seznamu za-opravit:"
-
-#~ msgid "To Do List style options:"
-#~ msgstr "Slog seznama za-opravit:"
-
-#~ msgid "Highlight overdue items"
-#~ msgstr "Osvetli preteèene predmete"
-
-#~ msgid "Highlight not yet due items"
-#~ msgstr "Osvetli ¹e nepreteèene predmete"
-
-#~ msgid "To Do List Properties"
-#~ msgstr "Lastnosti seznama Za-opravit"
-
-#~ msgid "To Do List"
-#~ msgstr "Seznam Za-opravit"
-
-#~ msgid "Preferences"
-#~ msgstr "Nastavitve"
-
-#~ msgid "Alarm Properties"
-#~ msgstr "Lastnosti alarma"
-
-#~ msgid "Beep on display alarms"
-#~ msgstr "Piskaj ob zaslonskih alarmih"
-
-#~ msgid "Audio alarms timeout after"
-#~ msgstr "Zvoèni alarmi preteèejo po"
-
-#~ msgid "Enable snoozing for "
-#~ msgstr "Omogoèi podalj¹anje spanja za "
-
-#~ msgid "Could not create summary"
-#~ msgstr "Nisem mogel ustvariti povzetka"
-
-#~ msgid ""
-#~ "For reading mail delivered by the local system, and for storing mail on "
-#~ "local disk."
-#~ msgstr ""
-#~ "Za branje po¹te dostavljene na krajevni sistem in za shranjevanje po¹te "
-#~ "na krajevni disk."
-
-#~ msgid "Could not rename folder %s to %s: destination exists"
-#~ msgstr "Nisem mogel preimenovati mape %s v %s: cilj ¾e obstaja"
-
-#~ msgid "Could not open summary %s"
-#~ msgstr "Nisem mogel odpreti povzetka %s"
-
-#~ msgid "Summary mismatch, X-Evolution header missing"
-#~ msgstr "Povzetek se ne ujema, X-Evolucije glava manjka"
-
-#~ msgid "Cannot copy data to output file: %s"
-#~ msgstr "Ne morem kopirati podatkov v izhodno datoteko: %s"
-
-#~ msgid "Could not load or create summary"
-#~ msgstr "Nisem mogel nalo¾iti ali ustvariti povzetka"
-
-#~ msgid "Could not rename folder `%s': %s exists"
-#~ msgstr "Nisem mogel preimenovati mape `%s': %s ¾e obstaja"
-
-#~ msgid "MH folders may not be nested."
-#~ msgstr "MH mape ne morejo biti gnezdene"
-
-#~ msgid "does not match regex"
-#~ msgstr "ne ustreza z regularnemu izrazu"
-
-#~ msgid "Cannot initialize Evolution's mail storage hash."
-#~ msgstr ""
-#~ "Ne morem inicializirati Evolucijine komponente za razpr¹eno shrambo."
-
-#~ msgid "Custom search"
-#~ msgstr "Iskanje po meri"
-
-#~ msgid "Forward Message"
-#~ msgstr "Sporoèilo posreduj naprej"
-
-#~ msgid "Copy Message"
-#~ msgstr "Kopiraj sporoèilo"
-
-#~ msgid "You have no mail sources configured"
-#~ msgstr "Nimate nastavljenih izvorov po¹te"
-
-#~ msgid ""
-#~ "Enter your name and email address to be used in outgoing mail. You may "
-#~ "also, optionally, enter the name of your organization, and the name of a "
-#~ "file to read your signature from."
-#~ msgstr ""
-#~ "Vnesite svoje ime in e-po¹tni naslov, ki naj se uporablja v izhodni po¹ti "
-#~ "Po ¾elji lahko vnesete tudi ime va¹e organizacije in ime datoteke iz "
-#~ "katere naj se prebere va¹ podpis."
-
-#~ msgid "Signature File"
-#~ msgstr "Datoteka s podpisom"
-
-#~ msgid "Mail source type:"
-#~ msgstr "Tip izvora po¹te:"
-
-#~ msgid ""
-#~ "Select the kind of mail server you have, and enter the relevant "
-#~ "information about it.\n"
-#~ "\n"
-#~ "If the server requires authentication, you can click the \"Detect "
-#~ "supported types...\" button after entering the other information."
-#~ msgstr ""
-#~ "Izberite vrsto po¹tnega stre¾nika, ki ga uporabljate, in nastavite zanj "
-#~ "potrebne podatke.\n"
-#~ "\n"
-#~ "Èe stre¾nik potrebuje avtentifikacijo, lako kliknete na gumb \"Ugotovi "
-#~ "podprte tipe...\" potem, ko boste vnesli ostale podatke."
-
-#~ msgid ""
-#~ "Select the kind of news server you have, and enter the relevant "
-#~ "information about it.\n"
-#~ "\n"
-#~ "If the server requires authentication, you can click the \"Detect "
-#~ "supported types...\" button after entering the other information."
-#~ msgstr ""
-#~ "Izberite vrsto po¹tnega stre¾nika, ki ga uporabljate, in nastavite zanj "
-#~ "potrebne podatke.\n"
-#~ "\n"
-#~ "Èe stre¾nik potrebuje avtentifikacijo, lako kliknete na gumb \"Ugotovi "
-#~ "podprte tipe...\", po tem ko boste vnesli ostale podatke."
-
-#~ msgid "Mail transport type:"
-#~ msgstr "Tip prenosa po¹te:"
-
-#~ msgid "Add Identity"
-#~ msgstr "Dodaj identiteto"
-
-#~ msgid "Edit Identity"
-#~ msgstr "Uredi identiteto"
-
-#~ msgid "Edit Source"
-#~ msgstr "Uredi izbor"
-
-#~ msgid "Add News Server"
-#~ msgstr "Dodaj novièarski stre¾nik"
-
-#~ msgid "Edit News Server"
-#~ msgstr "Uredi novièarski stre¾nik"
-
-#~ msgid "The connection was successful!"
-#~ msgstr "Povezava je bila uspe¹na!"
-
-#~ msgid "Querying authorization capabilities of \"%s\""
-#~ msgstr "Poizvedujem o mo¾nostih avtentifikacije pri \"%s\""
-
-#~ msgid "Query authorization at \"%s\""
-#~ msgstr "Poizvedi o mo¾nostih avtentifikacije pri \"%s\""
-
-#~ msgid ""
-#~ "Welcome to the Evolution Mail configuration wizard!\n"
-#~ "By filling in some information about your email\n"
-#~ "settings, you can start sending and receiving email\n"
-#~ "right away. Click Next to continue."
-#~ msgstr ""
-#~ "Dobrodo¹li v nastavitvenem èarovniku po¹te!\n"
-#~ "Z vpisom nekaterih podatkov o va¹ih nastavitvah e-po¹te\n"
-#~ "lahko takoj priènete po¹iljati in sprejemati po¹to\n"
-#~ "Kliknite naprej za nadaljevanje."
-
-#~ msgid "Mail Transport"
-#~ msgstr "Prenos Po¹te"
-
-#~ msgid "Identities"
-#~ msgstr "Identitete"
-
-#~ msgid "Mail Sources"
-#~ msgstr "Izvori po¹te"
-
-#~ msgid "News Servers"
-#~ msgstr "Novièarski stre¾niki"
-
-#~ msgid "News Sources"
-#~ msgstr "Viri novic"
-
-#~ msgid "Send messages in HTML format"
-#~ msgstr "Po¹iljaj sporoèila v HTML obliki"
-
-#~ msgid "Couldn't create pipe to %s: %s"
-#~ msgstr "Nisem mogel ustvariti cevi do %s: %s"
-
-#~ msgid "Could not execute %s: %s\n"
-#~ msgstr "Nisem mogel izvr¹iti %s: %s\n"
-
-#~ msgid "No GPG/PGP support available in this copy of Evolution."
-#~ msgstr "V tej razlièici Evolucije GPG/PGP podpora ni prisotna."
-
-#~ msgid " (XXX unread)"
-#~ msgstr " (XXX neprebran)"
-
-#~ msgid "Send a message without a subject"
-#~ msgstr "Po¹lji sporoèilo brez navedene zadeve"
-
-#~ msgid "Expunge \"%s\""
-#~ msgstr "Unièi \"%s\""
-
-#~ msgid "Marking messages in folder \"%s\""
-#~ msgstr "Izbiram sporoèila v mapi \"%s\""
-
-#~ msgid "Mark messages in folder \"%s\""
-#~ msgstr "Izberi sporoèila v mapi \"%s\""
-
-#~ msgid "Scan folders in \"%s\""
-#~ msgstr "Osve¾i mape v \"%s\""
-
-#~ msgid "Attaching messages from folder \"%s\""
-#~ msgstr "Prilagam sporoèilo iz mape \"%s\""
-
-#~ msgid "Attach messages from \"%s\""
-#~ msgstr "Prilo¾i sporoèilo iz mape \"%s\""
-
-#~ msgid "Forwarding messages \"%s\""
-#~ msgstr "Posredujem sporoèilo \"%s\""
-
-#~ msgid "Forwarding a message without a subject"
-#~ msgstr "Posredujem sporoèilo brez navedene zadeve"
-
-#~ msgid "Forward message \"%s\""
-#~ msgstr "Posreduj sporoèilo \"%s\""
-
-#~ msgid ""
-#~ "Failed to generate mime part from message while generating forwarded "
-#~ "message."
-#~ msgstr ""
-#~ "Nisem uspel generirati mime dela iz sporoèila med generiranjem "
-#~ "posredovanega sporoèila."
-
-#~ msgid "Loading \"%s\""
-#~ msgstr "Nalagam \"%s\""
-
-#~ msgid "Load \"%s\""
-#~ msgstr "Nalo¾i \"%s\""
-
-#~ msgid "Creating \"%s\""
-#~ msgstr "Ustvarjam \"%s\""
-
-#~ msgid "Exception while reporting result to shell component listener."
-#~ msgstr "Izjema med sporoèanjem rezultatov lupini"
-
-#~ msgid "Synchronize \"%s\""
-#~ msgstr "Uskladi \"%s\""
-
-#~ msgid "Displaying message UID \"%s\""
-#~ msgstr "Prikazujem sporoèilo z UID \"%s\""
-
-#~ msgid "Clearing message display"
-#~ msgstr "Èistim prikazano sporoèilo"
-
-#~ msgid "Display message UID \"%s\""
-#~ msgstr "Prika¾i sporoèilo z UID \"%s\""
-
-#~ msgid "Opening messages from folder \"%s\""
-#~ msgstr "Odpiram sporoèila iz mape \"%s\""
-
-#~ msgid "Open messages from \"%s\""
-#~ msgstr "Odpri sporoèilo iz \"%s\""
-
-#~ msgid "Viewing messages from folder \"%s\""
-#~ msgstr "Gledam sporoèilo iz mape \"%s\""
-
-#~ msgid "View messages from \"%s\""
-#~ msgstr "Glej sporoèilo iz \"%s\""
-
-#~ msgid "Don't know protocol to open URI `%s'"
-#~ msgstr "Ne poznam protokola za odpiranje URIja `%s'"
-
-#~ msgid "Rebuilding message view"
-#~ msgstr "Obnavljam pogled sporoèil"
-
-#~ msgid "Rebuild message view"
-#~ msgstr "Obnovi pogled sporoèil"
-
-#~ msgid "Threading message list"
-#~ msgstr "Nitim seznam sporoèil"
-
-#~ msgid "N_ew Directory Server"
-#~ msgstr "N_ov stre¾nik imenikov"
-
-#~ msgid "_New appointment..."
-#~ msgstr "_Nov zmenek..."
-
-#~ msgid "_Save Calendar As"
-#~ msgstr "_Shrani koledar kot"
-
-#~ msgid "_Create New Folder..."
-#~ msgstr "_Ustvari novo mapo..."
-
-#~ msgid "Quick Search"
-#~ msgstr "Hitro iskanje"
-
-#~ msgid "Bad storage URL (no server): %s"
-#~ msgstr "Neveljaven URL shrambe (ni stre¾nika): %s"
-
-#~ msgid "Ne_xt"
-#~ msgstr "_Naslednji"
-
-#~ msgid "FIXME: _New Contact"
-#~ msgstr "FIXME: _Nov stik"
-
-#~ msgid "FIXME: New _Contact from Same Company"
-#~ msgstr "FIXME: Nov _stik iz istega podjetja"
-
-#~ msgid "FIXME: New _Letter to Contact"
-#~ msgstr "FIXME: Novo _pismo za stik"
-
-#~ msgid "FIXME: New Meetin_g with Contact"
-#~ msgstr "FIXME: Nov sestanek s stikom"
-
-#~ msgid "FIXME: New _Task for Contact"
-#~ msgstr "FIXME: Nova na_loga za stik"
-
-#~ msgid "FIXME: New _Journal Entry for Contact"
-#~ msgstr "FIXME: Nov vpis v _dnevnik za stik"
-
-#~ msgid "FIXME: _Flag for Follow Up..."
-#~ msgstr "FIXME: _Zastavica za nadaljevanje..."
-
-#~ msgid "FIXME: _Display Map of Address"
-#~ msgstr "FIXME: _Poka¾i zemljevid naslova"
-
-#~ msgid "FIXME: _Open Web Page"
-#~ msgstr "FIXME: _Odpri spletno stran"
-
-#~ msgid "FIXME: Forward as _vCard"
-#~ msgstr "FIXME: Posreduj naprej kot _vVizitko"
-
-#~ msgid "Insert a file as an attachment"
-#~ msgstr "Vstavi datoteko kot prilogo"
-
-#~ msgid "FIXME: Previous"
-#~ msgstr "FIXME: Prej¹nji"
-
-#~ msgid "FIXME: Next"
-#~ msgstr "FIXME: Naslednji"
-
-#~ msgid "Gnome Calendar"
-#~ msgstr "Gnome Koledar"
-
-#~ msgid "The GNOME personal calendar and schedule manager."
-#~ msgstr "Gnome osebni koledar in urnik."
-
-#~ msgid "Year"
-#~ msgstr "Leto"
-
-#~ msgid "Show 1 year"
-#~ msgstr "Poka¾e vrstico z mapami"
-
-#~ msgid "New appointment for _today..."
-#~ msgstr "Nov zmenek za _danes..."
-
-#~ msgid "Create a new appointment for today"
-#~ msgstr "Ustvari nov zmenek za danes"
-
-#~ msgid "%s%s"
-#~ msgstr "%s%s"
-
-#~ msgid "'s calendar"
-#~ msgstr " koledar"
-
-#~ msgid "FIXME: _Delete"
-#~ msgstr "FIXME: _Zbri¹i"
-
-#~ msgid "FIXME: Save and Close"
-#~ msgstr "FIXME: Shrani in zapri"
-
-#~ msgid "FIXME: Print..."
-#~ msgstr "FIXME: Natisni..."
-
-#~ msgid "FIXME: Recurrence..."
-#~ msgstr "FIXME: Ponovitev..."
-
-#~ msgid "Configure recurrence rules"
-#~ msgstr "Nastavi pravila ponovitev"
-
-#~ msgid "FIXME: Assign Task..."
-#~ msgstr "FIXME: _Dodeli nalogo..."
-
-#~ msgid "Assign the task to someone"
-#~ msgstr "Nekomu dodeli nalogo"
-
-#~ msgid "FIXME: Delete"
-#~ msgstr "FIXME: Zbri¹i"
-
-#~ msgid "S_ubject:"
-#~ msgstr "Z_adeva:"
-
-#~ msgid ""
-#~ "Not Started\n"
-#~ "In Progress\n"
-#~ "Completed\n"
-#~ "Cancelled\n"
-#~ msgstr ""
-#~ "Ni prièeto\n"
-#~ "V delu\n"
-#~ "Konèano\n"
-#~ "Zavrnjeno\n"
-
-#~ msgid ""
-#~ "High\n"
-#~ "Normal\n"
-#~ "Low\n"
-#~ msgstr ""
-#~ "Visoka\n"
-#~ "Obièajna\n"
-#~ "Nizka\n"
-
-#~ msgid "Resources:"
-#~ msgstr "Viri:"
-
-#~ msgid "Last Modification Date"
-#~ msgstr "Datum zadnje spremembe"
-
-#~ msgid "Location"
-#~ msgstr "Lega"
-
-#~ msgid "% Complete"
-#~ msgstr "% konèano"
-
-#~ msgid "FIXME: Ca_lendar..."
-#~ msgstr "FIXME: Ko_kedar..."
-
-#~ msgid "FIXME: Invite _Attendees..."
-#~ msgstr "FIXME: Povabi udele¾ence..."
-
-#~ msgid "FIXME: C_ancel Invitation..."
-#~ msgstr "FIXME: Preklièi povabilo..."
-
-#~ msgid "FIXME: Invite Attendees..."
-#~ msgstr "FIXME: Povabi udele¾ence..."
-
-#~ msgid "Invite attendees to a meeting"
-#~ msgstr "Povabi udele¾ence na sestanek"
-
-#~ msgid "_Summary:"
-#~ msgstr "_Povzetek:"
-
-#~ msgid "_Owner:"
-#~ msgstr "_Lastnik:"
-
-#~ msgid ""
-#~ "Minutes\n"
-#~ "Hours\n"
-#~ "Days\n"
-#~ msgstr ""
-#~ "Minut\n"
-#~ "Ur\n"
-#~ "Dni\n"
-
-#~ msgid "Daily"
-#~ msgstr "Dnevne"
-
-#~ msgid "Weekly"
-#~ msgstr "Tedenske"
-
-#~ msgid "Monthly"
-#~ msgstr "Meseène"
-
-#~ msgid "Yearly"
-#~ msgstr "Letne"
-
-#~ msgid "label23"
-#~ msgstr "label23"
-
-#~ msgid "Every "
-#~ msgstr "Vsak "
-
-#~ msgid "label24"
-#~ msgstr "label24"
-
-#~ msgid ""
-#~ "1st\n"
-#~ "2nd\n"
-#~ "3rd\n"
-#~ "4th\n"
-#~ "5th\n"
-#~ msgstr ""
-#~ "1.\n"
-#~ "2.\n"
-#~ "3.\n"
-#~ "4.\n"
-#~ "5.\n"
-
-#~ msgid ""
-#~ "Monday\n"
-#~ "Tuesday\n"
-#~ "Wednesday\n"
-#~ "Thursday\n"
-#~ "Friday\n"
-#~ "Saturday\n"
-#~ "Sunday\n"
-#~ msgstr ""
-#~ "Ponedeljek\n"
-#~ "Torek\n"
-#~ "Sreda\n"
-#~ "Èetrtek\n"
-#~ "Petek\n"
-#~ "Sobota\n"
-#~ "Nedelja\n"
-
-#~ msgid "label27"
-#~ msgstr "oznaka27"
-
-#~ msgid "Ending date"
-#~ msgstr "Datum zakljuèka"
-
-#~ msgid "Add to-do item..."
-#~ msgstr "Dodaj predmet za-opravit..."
-
-#~ msgid "Time Left"
-#~ msgstr "Preostalo èasa"
-
-#~ msgid "To-do list"
-#~ msgstr "Seznam za opravit"
-
-#~ msgid "Weeks"
-#~ msgstr "Tednov"
-
-#~ msgid "Hour"
-#~ msgstr "Ura"
-
-#~ msgid "Minute"
-#~ msgstr "Minuta"
-
-#~ msgid "Second"
-#~ msgstr "Sekunda"
-
-#~ msgid "TODO Items"
-#~ msgstr "Predmeti za-opravit"
-
-#~ msgid "%a"
-#~ msgstr "%b"
-
-#~ msgid "%b"
-#~ msgstr "%a"
-
-#~ msgid "Current week (%s %s %d - %s %s %d %d)"
-#~ msgstr "Trenutni teden (%s %s %d - %s %s %d %d)"
-
-#~ msgid "Current week (%s %s %d %d - %s %s %d %d)"
-#~ msgstr "Trenutni teden (%s %s %d %d - %s %s %d %d)"
-
-#~ msgid "Cut selected item into clipboard"
-#~ msgstr "Izre¾i izbran predmet na odlo¾i¹èe"
-
-#~ msgid "Copy selected item into clipboard"
-#~ msgstr "Kopiraj izbran predmet na odlo¾i¹èe"
-
-#~ msgid "Select recipients' addresses"
-#~ msgstr "Izberi naslove prejemnikov"
-
-#~ msgid "To: >>"
-#~ msgstr "Za: >>"
-
-#~ msgid "Cc: >>"
-#~ msgstr "Cc: >>"
-
-#~ msgid "Bcc: >>"
-#~ msgstr "Bcc: >>"
-
-#~ msgid "label9"
-#~ msgstr "oznaka9"
-
-#~ msgid "label7"
-#~ msgstr "oznaka7"
-
-#~ msgid "label8"
-#~ msgstr "oznaka8"
-
-#~ msgid "Load a previously saved message"
-#~ msgstr "Nalo¾i prej shranjeno sporoèilo"
-
-#~ msgid "_Close..."
-#~ msgstr "_Zapri..."
-
-#~ msgid "_Format"
-#~ msgstr "_Oblika izpisa"
-
-#~ msgid "_vFolder Editor ..."
-#~ msgstr "Urejevalnik vMap ..."
-
-#~ msgid "Currently pending operations:"
-#~ msgstr "Trenutno èakajoèe operacije:"
-
-#~ msgid "Waiting for user to close error dialog"
-#~ msgstr "Èakam na uporabnika, da zapre dialog z napako"
-
-#~ msgid "Waiting for user to enter data"
-#~ msgstr "Èakam na uporabnika, da vpi¹e podatek"
-
-#~ msgid "Show _folder bar"
-#~ msgstr "Ka¾i vrstico z _mapami"
-
-#~ msgid "Help _index"
-#~ msgstr "Kazalo _pomoèi"
-
-#~ msgid "Sort"
-#~ msgstr "Sortiranje"
-
-#~ msgid "Field Chooser"
-#~ msgstr "Izbirnik polij"
-
-#~ msgid ""
-#~ "To add a column to your table, drag it into\n"
-#~ "the location in which you want it to appear."
-#~ msgstr ""
-#~ "Da bi dodali stolpec k va¹i tabeli, ga potegnite\n"
-#~ "do mesta kjer ¾elite, da se pojavi."
-
-#~ msgid "window1"
-#~ msgstr "okno1"
-
-#~ msgid "Available fields"
-#~ msgstr "Polja na voljo"
-
-#~ msgid "Show in this order"
-#~ msgstr "Ka¾i v tem vrstnem redu"
-
-#~ msgid "label2"
-#~ msgstr "label2"
-
-#~ msgid "Add >>"
-#~ msgstr "Dodaj >>"
-
-#~ msgid "<< Remove"
-#~ msgstr "<< odstrani"
-
-#~ msgid "Discard this message?"
-#~ msgstr "Zavrzi to sporoèilo"
-
-#~ msgid "Back"
-#~ msgstr "Prej¹nji"
-
-#~ msgid "Finish"
-#~ msgstr "Konèaj"
-
-#~ msgid "Apply"
-#~ msgstr "Uporabi"
-
-#~ msgid ""
-#~ "<h2>Create Filtering Rule</h2><p>Select one of the base rules above, then "
-#~ "continue forwards to customise it.</p>"
-#~ msgstr ""
-#~ "<h2>Ustvari pravilo filtriranja</h2><p>Izberite eno od osnovnih pravil "
-#~ "zgorajnato nadaljujte naprej, da ga prilagodite.</p>"
-
-#~ msgid "Test these values before continuing"
-#~ msgstr "Preveri te vrednosti pred nadaljevanjem"
-
-#~ msgid "Select the method you would like to use to deliver your mail."
-#~ msgstr "Izberite naèin na katerega ¾elite dostavljati va¹o po¹to."
-
-#~ msgid "Enter the hostname of the News Server you have."
-#~ msgstr "Vpi¹ite ime raèunalnika na katerem teèe novièarski stre¾nik."
-
-#~ msgid "Cannot initialize the configuration system."
-#~ msgstr "Ne morem inicializirati nastavitvenega sistema."
diff --git a/po/sv.po b/po/sv.po
deleted file mode 100644
index 6e673b86d0..0000000000
--- a/po/sv.po
+++ /dev/null
@@ -1,10390 +0,0 @@
-# Swedish translation of Evolution.
-# Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-# Andreas Hyden <a.hyden@cyberpoint.se>, 2000.
-# Richard Hult <rhult@codefactory.se>, 2000-2001.
-# Christian Rose <menthos@menthos.com>, 2000-2001.
-# Martin Norbäck <d95mback@dtek.chalmers.se>, 2001.
-#
-# $Id: sv.po,v 1.73 2001/05/10 01:58:19 menthos Exp $
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: evolution\n"
-"POT-Creation-Date: 2001-05-10 03:55+0200\n"
-"PO-Revision-Date: 2001-05-10 03:57+0200\n"
-"Last-Translator: Christian Rose <menthos@menthos.com>\n"
-"Language-Team: Swedish <sv@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: addressbook/backend/ebook/e-card.c:3278
-msgid "Card: "
-msgstr "Kort: "
-
-#: addressbook/backend/ebook/e-card.c:3280
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-"\n"
-"Namn: "
-
-#: addressbook/backend/ebook/e-card.c:3281
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-"\n"
-" Prefix: "
-
-#: addressbook/backend/ebook/e-card.c:3282
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-"\n"
-" Förnamn: "
-
-#: addressbook/backend/ebook/e-card.c:3283
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-"\n"
-" Andranamn: "
-
-#: addressbook/backend/ebook/e-card.c:3284
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-"\n"
-" Efternamn: "
-
-#: addressbook/backend/ebook/e-card.c:3285
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-"\n"
-" Suffix: "
-
-#: addressbook/backend/ebook/e-card.c:3299
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-"\n"
-"Födelsedatum: "
-
-#: addressbook/backend/ebook/e-card.c:3310
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-"\n"
-"Adress:"
-
-#: addressbook/backend/ebook/e-card.c:3312
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-"\n"
-" Box: "
-
-#: addressbook/backend/ebook/e-card.c:3313
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-"\n"
-" Anknytning: "
-
-#: addressbook/backend/ebook/e-card.c:3314
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-"\n"
-" Gatuadress: "
-
-#: addressbook/backend/ebook/e-card.c:3315
-msgid ""
-"\n"
-" City: "
-msgstr ""
-"\n"
-" Ort: "
-
-#: addressbook/backend/ebook/e-card.c:3316
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-"\n"
-" Region: "
-
-#: addressbook/backend/ebook/e-card.c:3317
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-"\n"
-" Postnummer: "
-
-#: addressbook/backend/ebook/e-card.c:3318
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-"\n"
-" Land: "
-
-#: addressbook/backend/ebook/e-card.c:3331
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-"\n"
-"Leveransetikett: "
-
-#: addressbook/backend/ebook/e-card.c:3343
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-"\n"
-"Telefoner:\n"
-
-#: addressbook/backend/ebook/e-card.c:3346
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-"\n"
-"Telefon:"
-
-#: addressbook/backend/ebook/e-card.c:3370
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-"\n"
-"E-post:\n"
-
-#: addressbook/backend/ebook/e-card.c:3373
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-"\n"
-"E-post:"
-
-#: addressbook/backend/ebook/e-card.c:3392
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-"\n"
-"E-postprogram: "
-
-#: addressbook/backend/ebook/e-card.c:3398
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-"\n"
-"Tidszon: "
-
-#: addressbook/backend/ebook/e-card.c:3406
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-"\n"
-"Geografisk plats: "
-
-#: addressbook/backend/ebook/e-card.c:3410
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-"\n"
-"Yrkesroll: "
-
-#: addressbook/backend/ebook/e-card.c:3422
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-"\n"
-"Org: "
-
-#: addressbook/backend/ebook/e-card.c:3423
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-"\n"
-" Namn: "
-
-#: addressbook/backend/ebook/e-card.c:3424
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-"\n"
-" Enhet: "
-
-#: addressbook/backend/ebook/e-card.c:3425
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-"\n"
-" Enhet 2: "
-
-#: addressbook/backend/ebook/e-card.c:3426
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-"\n"
-" Enhet 3: "
-
-#: addressbook/backend/ebook/e-card.c:3427
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-"\n"
-" Enhet 4: "
-
-#: addressbook/backend/ebook/e-card.c:3431
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-"\n"
-"Kategorier: "
-
-#: addressbook/backend/ebook/e-card.c:3432
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-"\n"
-"Kommentar: "
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3445
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-"\n"
-"Unik sträng: "
-
-#: addressbook/backend/ebook/e-card.c:3448
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-"\n"
-"Publik nyckel: "
-
-#: addressbook/backend/ebook/e-card.c:3709
-msgid "Multiple VCards"
-msgstr "Flera VCard"
-
-#: addressbook/backend/ebook/e-card.c:3717
-#, c-format
-msgid "VCard for %s"
-msgstr "VCard för %s"
-
-#: addressbook/backend/ebook/e-destination.c:232
-msgid "???"
-msgstr "???"
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_VCard_Importer.oaf.in.h:1
-msgid "Factory to import VCard files into Evolution."
-msgstr "Fabrik för import av VCard-filer till Evolution."
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_VCard_Importer.oaf.in.h:2
-msgid "Imports VCard files into Evolution."
-msgstr "Importerar VCard-filer till Evolution."
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:21
-#: addressbook/backend/ebook/load-pine-addressbook.c:22
-#: addressbook/backend/ebook/test-client-list.c:23
-#: addressbook/backend/ebook/test-client.c:33
-#: addressbook/conduit/address-conduit.c:1092
-#: addressbook/gui/component/addressbook-factory.c:42
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:98 calendar/gui/main.c:57
-msgid "Could not initialize Bonobo"
-msgstr "Kunde inte initiera Bonobo"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr "Markören kunde inte läsas in\n"
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr "EBook inte inläst\n"
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr "Kunde inte starta wombat-server"
-
-#: addressbook/conduit/address-conduit.c:655
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr "Kunde inte starta wombat"
-
-#: addressbook/conduit/address-conduit.c:687
-#: addressbook/conduit/address-conduit.c:690
-msgid "Could not read pilot's Address application block"
-msgstr "Kunde inte läsa pilotens adressprogramblock"
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:7
-msgid "Add"
-msgstr "Lägg till"
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr "_Jubileum:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr "F_öretag"
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr "Företags_fax"
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-msgid "C_ontacts..."
-msgstr "_Kontakter..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr "Ka_tegorier..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-msgid "Contact Editor"
-msgstr "_Kontakteditor"
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr "Detaljer"
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr "Spara som:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-msgid "General"
-msgstr "Allmänt"
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr "Ny telefontyp"
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-msgid "No_tes:"
-msgstr "An_teckningar:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr "Telefontyper"
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1284
-msgid "Primary Email"
-msgstr "Primär e-post"
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr "Vill ha _HTML-post"
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr "Webbsideadress:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:74
-msgid "_Add"
-msgstr "_Lägg till"
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr "_Adress..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr "_Assistentens namn:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr "_Födelsedag:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr "Företa_g"
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-msgid "_Company:"
-msgstr "_Företag:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/folder-browser.c:640 mail/mail-config.glade.h:75
-#: ui/evolution-event-editor.xml.h:57 ui/evolution-mail.xml.h:98
-#: ui/evolution-task-editor-dialog.xml.h:69
-msgid "_Delete"
-msgstr "_Ta bort"
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr "Av_delning:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr "_Fullständigt namn..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-msgid "_Home"
-msgstr "_Hem"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-msgid "_Job title:"
-msgstr "_Jobbtitel:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr "Chefens na_mn:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-msgid "_Mobile"
-msgstr "_Mobil"
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr "_Smeknamn:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr "K_ontor:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr "_Yrke:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr "Partne_r:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr "De_tta är postadressen"
-
-#: addressbook/contact-editor/e-contact-editor.c:603
-msgid "This contact belongs to these categories:"
-msgstr "Denna kontakt tillhör dessa kategorier:"
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-#: addressbook/gui/widgets/e-addressbook-view.c:676
-msgid "Assistant"
-msgstr "Assistent"
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/contact-editor/e-contact-editor.c:1310
-msgid "Business"
-msgstr "Företag"
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-msgid "Business 2"
-msgstr "Företag 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#: addressbook/gui/widgets/e-addressbook-view.c:656
-msgid "Business Fax"
-msgstr "Företagsfax"
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Callback"
-msgstr "Tillbakaringning"
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "Car"
-msgstr "Bil"
-
-#: addressbook/contact-editor/e-contact-editor.c:1248
-msgid "Company"
-msgstr "Företag"
-
-#: addressbook/contact-editor/e-contact-editor.c:1249
-#: addressbook/contact-editor/e-contact-editor.c:1311
-msgid "Home"
-msgstr "Hem"
-
-#: addressbook/contact-editor/e-contact-editor.c:1250
-msgid "Home 2"
-msgstr "Hem 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1251
-#: addressbook/gui/widgets/e-addressbook-view.c:657
-msgid "Home Fax"
-msgstr "Fax hem"
-
-#: addressbook/contact-editor/e-contact-editor.c:1252
-#: addressbook/gui/widgets/e-addressbook-view.c:660
-msgid "ISDN"
-msgstr "ISDN"
-
-#: addressbook/contact-editor/e-contact-editor.c:1253
-msgid "Mobile"
-msgstr "Mobil"
-
-#: addressbook/contact-editor/e-contact-editor.c:1254
-#: addressbook/contact-editor/e-contact-editor.c:1312
-#: mail/mail-config.glade.h:40
-msgid "Other"
-msgstr "Annat"
-
-#: addressbook/contact-editor/e-contact-editor.c:1255
-#: addressbook/gui/widgets/e-addressbook-view.c:662
-msgid "Other Fax"
-msgstr "Annan fax"
-
-#: addressbook/contact-editor/e-contact-editor.c:1256
-#: addressbook/gui/widgets/e-addressbook-view.c:663
-msgid "Pager"
-msgstr "Personsökare"
-
-#: addressbook/contact-editor/e-contact-editor.c:1257
-msgid "Primary"
-msgstr "Primär"
-
-#: addressbook/contact-editor/e-contact-editor.c:1258
-#: addressbook/gui/widgets/e-addressbook-view.c:664
-msgid "Radio"
-msgstr "Radio"
-
-#: addressbook/contact-editor/e-contact-editor.c:1259
-#: addressbook/gui/widgets/e-addressbook-view.c:665
-msgid "Telex"
-msgstr "Telex"
-
-#: addressbook/contact-editor/e-contact-editor.c:1260
-msgid "TTY/TDD"
-msgstr "TTY/TDD"
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:668
-msgid "Email 2"
-msgstr "E-post 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/gui/widgets/e-addressbook-view.c:669
-msgid "Email 3"
-msgstr "E-post 3"
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-msgid "Delete Contact?"
-msgstr "Ta bort kontakten?"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:233
-msgid "Contact Quick-Add"
-msgstr "Snabbinläggning av kontakt"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:235
-msgid "Edit Full"
-msgstr "Redigera fullständigt namn"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:276
-#: addressbook/gui/widgets/e-addressbook-view.c:643
-msgid "Full Name"
-msgstr "Fullständigt namn"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:282
-msgid "E-mail"
-msgstr "E-post"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr "Adress _2:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr "Kanada"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr "Kontrollera adress"
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr "_Land:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr "Finland"
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr "USA"
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr "_Adress:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-msgid "_City:"
-msgstr "_Ort:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr "_Box:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr "Del_stat/Provins:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr "_Postnummer:"
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr "Kontrollera fullständiga namnet"
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr "Dr."
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr "Herr"
-
-#: addressbook/contact-editor/fullname.glade.h:4
-msgid "I"
-msgstr "I"
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr "II"
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr "III"
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr "Jr."
-
-#: addressbook/contact-editor/fullname.glade.h:8
-msgid "Miss"
-msgstr "Fröken"
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr "Herr"
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr "Fru"
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr "Fröken"
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr "Sr."
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr "_Förnamn:"
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr "_Efternamn:"
-
-#: addressbook/contact-editor/fullname.glade.h:15
-msgid "_Middle:"
-msgstr "_Mellannamn:"
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr "_Suffix:"
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr "_Titel:"
-
-#: addressbook/gui/component/addressbook.c:242
-msgid "As _Minicards"
-msgstr "Som _minikort"
-
-#: addressbook/gui/component/addressbook.c:248
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr "Som _tabell"
-
-#: addressbook/gui/component/addressbook.c:408
-#, c-format
-msgid "Enter password for %s"
-msgstr "Ange lösenord för %s"
-
-#: addressbook/gui/component/addressbook.c:436
-msgid "Unable to open addressbook"
-msgstr "Kan inte öppna adressboken"
-
-#: addressbook/gui/component/addressbook.c:443
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or the LDAP server\n"
-"is down"
-msgstr ""
-"Vi kunde inte öppna denna adressbok. Detta betyder antingen\n"
-"att du har angett en felaktig URI eller att LDAP-servern är\n"
-"onåbar"
-
-#: addressbook/gui/component/addressbook.c:448
-msgid ""
-"This version of Evolution does not have LDAP support\n"
-"compiled in to it. If you want to use LDAP in Evolution\n"
-"you must compile the program from the CVS sources after\n"
-"retrieving OpenLDAP from the link below.\n"
-msgstr ""
-"Denna version av Evolution har inte LDAP-stöd inkompilerat.\n"
-"Om du vill använda LDAP i Evolution måste du kompilera\n"
-"programmet från CVS-källkod efter det att du har hämtat\n"
-"OpenLDAP från länken nedan.\n"
-
-#: addressbook/gui/component/addressbook.c:456
-msgid ""
-"We were unable to open this addressbook. Please check that the\n"
-"path exists and that you have permission to access it."
-msgstr ""
-"Vi kunde inte öppna denna adressbok. Kontrollera att sökvägen\n"
-"existerar och att du har rätt att komma åt den."
-
-#: addressbook/gui/component/addressbook.c:607 calendar/gui/gnome-cal.c:233
-msgid "Any field contains"
-msgstr "Något fält innehåller"
-
-#: addressbook/gui/component/addressbook.c:608
-msgid "Name contains"
-msgstr "Namnet innehåller"
-
-#: addressbook/gui/component/addressbook.c:609
-msgid "Email contains"
-msgstr "E-postadressen innehåller"
-
-#: addressbook/gui/component/addressbook.c:752
-msgid "The URI that the Folder Browser will display"
-msgstr "URI:n som mappbläddraren kommer att visa"
-
-#: addressbook/gui/component/addressbook-config.c:148
-msgid "LDAP Server"
-msgstr "LDAP-server"
-
-#: addressbook/gui/component/addressbook-config.c:150
-msgid "File"
-msgstr "Fil"
-
-#: addressbook/gui/component/addressbook-config.c:153
-msgid "Unknown addressbook type"
-msgstr "Okänd adressbokstyp"
-
-#: addressbook/gui/component/addressbook-config.c:163
-msgid "None (anonymous mode)"
-msgstr "Ingen (anonymt läge)"
-
-#: addressbook/gui/component/addressbook-config.c:165
-#: camel/camel-sasl-plain.c:32 camel/providers/imap/camel-imap-provider.c:80
-#: camel/providers/nntp/camel-nntp-store.c:291
-#: camel/providers/pop3/camel-pop3-provider.c:67 mail/mail-config.glade.h:43
-msgid "Password"
-msgstr "Lösenord"
-
-#: addressbook/gui/component/addressbook-config.c:167
-msgid "SASL"
-msgstr "SASL"
-
-#: addressbook/gui/component/addressbook-config.c:170
-msgid "Unknown auth type"
-msgstr "Okänd autentiseringstyp"
-
-#: addressbook/gui/component/addressbook-config.c:179
-msgid "Base"
-msgstr "Bas"
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "One"
-msgstr "En"
-
-#: addressbook/gui/component/addressbook-config.c:183
-msgid "Subtree"
-msgstr "Underträd"
-
-#: addressbook/gui/component/addressbook-config.c:186
-msgid "Unknown scope type"
-msgstr "Okänd omfattningstyp"
-
-#: addressbook/gui/component/addressbook-config.c:353
-msgid "Bind DN:"
-msgstr "Bind-DN:"
-
-#: addressbook/gui/component/addressbook-config.c:354
-msgid "FIXME Bind DN Help text here"
-msgstr "FIXME Bind DN-hjälptext här"
-
-#: addressbook/gui/component/addressbook-config.c:356
-#: mail/mail-config.glade.h:50
-msgid "Remember this password"
-msgstr "Kom ihåg detta lösenord"
-
-#: addressbook/gui/component/addressbook-config.c:406
-#: mail/mail-config.glade.h:28
-msgid "Host:"
-msgstr "Värd:"
-
-#: addressbook/gui/component/addressbook-config.c:407
-msgid "FIXME Host help text here."
-msgstr "FIXME Värd-hjälptext här."
-
-#: addressbook/gui/component/addressbook-config.c:409
-msgid "Port:"
-msgstr "Port:"
-
-#: addressbook/gui/component/addressbook-config.c:410
-msgid "FIXME Port help text here."
-msgstr "FIXME POrt-hjälptext här."
-
-#: addressbook/gui/component/addressbook-config.c:414
-msgid "Root DN:"
-msgstr "Rot-DN:"
-
-#: addressbook/gui/component/addressbook-config.c:415
-msgid "FIXME Root DN help text here."
-msgstr "FIXME Root DN-hjälptext här."
-
-#: addressbook/gui/component/addressbook-config.c:435
-msgid "Search Scope:"
-msgstr "Sökomfattning:"
-
-#: addressbook/gui/component/addressbook-config.c:489
-msgid "Authentication:"
-msgstr "Autentisering:"
-
-#: addressbook/gui/component/addressbook-config.c:507
-#: mail/mail-config.glade.h:44
-msgid "Path:"
-msgstr "Sökväg:"
-
-#: addressbook/gui/component/addressbook-config.c:508
-msgid "FIXME Path Help text here"
-msgstr "FIXME Sökvägshjälptext här"
-
-#: addressbook/gui/component/addressbook-config.c:513
-msgid "Create path if it doesn't exist."
-msgstr "Skapa sökvägen om den inte finns."
-
-#: addressbook/gui/component/addressbook-config.c:647
-msgid "Edit Addressbook"
-msgstr "Redigera adressbok"
-
-#: addressbook/gui/component/addressbook-config.c:649
-msgid "Add Addressbook"
-msgstr "Lägg till adressbok"
-
-#: addressbook/gui/component/addressbook-config.c:665
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-"Markera den typ av adressbok du har och ange den relevanta informationen om "
-"den."
-
-#: addressbook/gui/component/addressbook-config.c:671
-#: mail/mail-config.glade.h:35
-msgid "Name:"
-msgstr "Namn:"
-
-#: addressbook/gui/component/addressbook-config.c:672
-msgid "FIXME Name help text here"
-msgstr "FIXME Namnhjälptext här"
-
-#: addressbook/gui/component/addressbook-config.c:674
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr "Beskrivning:"
-
-#: addressbook/gui/component/addressbook-config.c:675
-msgid "FIXME Description help text here"
-msgstr "FIXME Beskrivningshjälptext här"
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-msgid "Addressbook Sources"
-msgstr "Adressbokskällor"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: addressbook/gui/widgets/e-addressbook-view.c:578
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:11 mail/mail-config.glade.h:19
-#: mail/message-browser.c:203 ui/evolution-addressbook.xml.h:3
-#: ui/evolution-event-editor.xml.h:17 ui/evolution-mail.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr "Ta bort"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:23
-msgid "Edit"
-msgstr "Redigera"
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-msgid "Name"
-msgstr "Namn"
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-msgid "URI"
-msgstr "URI"
-
-#: addressbook/gui/component/addressbook-storage.c:99
-msgid "Other Contacts"
-msgstr "Andra kontakter"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Disable Queries"
-msgstr "Använd inte frågor"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Enable Queries (Dangerous!)"
-msgstr "Använd frågor (farligt!)"
-
-#: addressbook/gui/component/e-address-widget.c:388
-#: addressbook/gui/component/select-names/e-select-names-popup.c:210
-msgid "Edit Contact Info"
-msgstr "Redigera kontaktinformation"
-
-#: addressbook/gui/component/e-address-widget.c:424
-#: addressbook/gui/component/select-names/e-select-names-popup.c:269
-msgid "Add to Contacts"
-msgstr "Lägg till i kontakter"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-msgid "A Bonobo control for an address popup."
-msgstr "En Bonobo-kontroll för en adress-popup."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A Bonobo control for displaying an address."
-msgstr "En Bonobo-kontroll för att visa en adress."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr "En Bonobo-testkontroll som visar en adressbok."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr "Kontroll som visar ett Evolution-adressboksvisitkort."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-msgid "Evolution Addressbook minicard viewer"
-msgstr "Visare för Evolution-adressboksvisitkort"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-msgid "Evolution component for handling contacts."
-msgstr "Evolutionkomponent för att hantera kontakter."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-msgid "Factory for the Addressbook Minicard control"
-msgstr "Fabrik för kontrollen för adressboksvisitkort"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-msgid "Factory for the Addressbook's address displayer"
-msgstr "Fabrik för adressbokens adressvisare"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-msgid "Factory for the Addressbook's address popup"
-msgstr "Fabrik för adressbokens adress-popup"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:10
-msgid "Factory for the Evolution addressbook component."
-msgstr "Fabrik för Evolutions adressbokskomponent."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:11
-msgid "Factory for the sample Addressbook control"
-msgstr "Fabrik för adressbokstestkontrollen"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:131
-#: composer/e-msg-composer-attachment-bar.c:468 filter/filter-filter.c:401
-#: filter/filter-rule.c:549 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:265 shell/e-shortcuts-view.c:388
-msgid "Remove"
-msgstr "Ta bort"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:146
-msgid "Remove All"
-msgstr "Ta bort alla"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-msgid "Evolution's addressbook name selection interface."
-msgstr "Evolutions adressboks namnvalsgränssnitt."
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr "Fabrik för adressbokens namnvalsgränssnitt"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr "Sök..."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-msgid "Message Recipients"
-msgstr "Mottagare"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-msgid "Select Names"
-msgstr "Markera namn"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-msgid "Select name from:"
-msgstr "Välj namn från:"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:158
-#: mail/mail-search.c:148
-msgid "Search"
-msgstr "Sök"
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr "123"
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr "a"
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr "b"
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr "c"
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr "d"
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr "e"
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr "f"
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr "g"
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr "h"
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr "i"
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr "j"
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr "k"
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr "l"
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr "m"
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr "n"
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-msgid "o"
-msgstr "o"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr "p"
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr "q"
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-msgid "r"
-msgstr "r"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr "s"
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr "t"
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr "u"
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr "v"
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr "w"
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr "x"
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr "y"
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr "z"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:513
-#: addressbook/gui/widgets/e-addressbook-view.c:573
-msgid "Save as VCard"
-msgstr "Spara som VCard"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:574
-msgid "Send contact to other"
-msgstr "Skicka kontakt till annan"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:575
-msgid "Send message to contact"
-msgstr "Skicka meddelande till kontakt"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:576 mail/message-browser.c:200
-#: ui/evolution-addressbook.xml.h:9 ui/evolution-calendar.xml.h:23
-#: ui/evolution-mail.xml.h:55 ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr "Skriv ut"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:577
-msgid "Print Envelope"
-msgstr "Skriv ut kuvert"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:641
-msgid "* Click here to add a contact *"
-msgstr "* Klicka här för att lägga till en kontakt *"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:642
-msgid "File As"
-msgstr "Arkivera som"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:644
-msgid "Email"
-msgstr "E-post"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:645
-msgid "Primary Phone"
-msgstr "Primär telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:646
-msgid "Assistant Phone"
-msgstr "Sekreterartelefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:647
-msgid "Business Phone"
-msgstr "Företagstelefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:648
-msgid "Callback Phone"
-msgstr "Tillbakaringningstelefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:649
-msgid "Company Phone"
-msgstr "Företagets telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:650
-msgid "Home Phone"
-msgstr "Hemtelefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:651
-msgid "Organization"
-msgstr "Organisation"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:652
-msgid "Business Address"
-msgstr "Företagsadress"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:653
-msgid "Home Address"
-msgstr "Hemadress"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:654
-msgid "Mobile Phone"
-msgstr "Mobiltelefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:655
-msgid "Car Phone"
-msgstr "Biltelefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:658
-msgid "Business Phone 2"
-msgstr "Företagstelefon 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:659
-msgid "Home Phone 2"
-msgstr "Hemtelefon 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:661
-msgid "Other Phone"
-msgstr "Annan telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:666
-msgid "TTY"
-msgstr "TTY"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:667
-msgid "Other Address"
-msgstr "Annan adress"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:670
-msgid "Web Site"
-msgstr "Webbsida"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:671
-msgid "Department"
-msgstr "Avdelning"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:672
-msgid "Office"
-msgstr "Kontor"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:673
-msgid "Title"
-msgstr "Titel"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:674
-msgid "Profession"
-msgstr "Yrke"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:675
-msgid "Manager"
-msgstr "Manager"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:677
-msgid "Nickname"
-msgstr "Smeknamn"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:678
-msgid "Spouse"
-msgstr "Partner"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:679
-msgid "Note"
-msgstr "Notering"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:680
-msgid "Free-busy URL"
-msgstr "Ledig/Upptagen-URL"
-
-#: addressbook/gui/widgets/e-minicard-control.c:282
-msgid "Save in addressbook"
-msgstr "Spara i adressboken"
-
-#: addressbook/gui/widgets/e-minicard-view.c:469
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-"\n"
-"\n"
-"Det finns inga objekt att visa i denna vy\n"
-"\n"
-"Dubbelklicka här för att skapa en ny kontakt."
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:26
-msgid "Card View"
-msgstr "Visitkortsvy"
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr "10 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr "8 pt. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr "Tomma blanketter vid slutet:"
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr "Meddelandetext"
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr "Underst:"
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr "Dimensioner:"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr "Typsnitt..."
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr "Typsnitt"
-
-#: addressbook/printing/e-contact-print.glade.h:9
-msgid "Footer:"
-msgstr "Sidfot:"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr "Format"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-msgid "Header"
-msgstr "Rubrik"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr "Rubrik/sidfot"
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr "Rubriker"
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr "Rubriker för varje brev"
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr "Höjd:"
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr "Följ omedelbart efter varandra"
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr "Inkludera:"
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr "Liggande"
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr "Vänster:"
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr "Brevflikar på sidan"
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr "Marginaler"
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr "Antal kolumner:"
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr "Alternativ"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr "Orientering"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr "Sida"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-msgid "Page Setup:"
-msgstr "Sidinställningar:"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr "Papper"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr "Papperskälla:"
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr "Stående"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr "Förhandsgranska:"
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr "Skriv ut med grå skuggning"
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr "Vänd jämna sidor"
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr "Höger:"
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr "Sektioner:"
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr "Skuggning"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-msgid "Size:"
-msgstr "Storlek:"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr "Börja på en ny sida"
-
-#: addressbook/printing/e-contact-print.glade.h:38
-msgid "Style name:"
-msgstr "Stil:"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr "Överst:"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-msgid "Type:"
-msgstr "Typ:"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr "Bredd:"
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr "Fel vid kommunikation med kalenderserver"
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr "Kunde inte läsa pilotens kalenderprogramblock"
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr "Kunde inte läsa pilotens att-göra-programblock"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr "Påminnelse om ditt möte klockan "
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-msgid "Snooze"
-msgstr "Slumra"
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr "Ok"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr "Alarmaviseringstjänst"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-msgid "Factory for the alarm notification service"
-msgstr "Fabrik för alarmavsieringstjänsten"
-
-#: calendar/gui/alarm-notify/notify-main.c:56
-#, c-format
-msgid ""
-"It is %s. The Unix time is %ld right now. We just thought you may like to "
-"know."
-msgstr "Det är %s. Unix-tiden är %ld just nu. Vi ville bara låta dig veta det."
-
-#: calendar/gui/alarm-notify/notify-main.c:93 calendar/gui/main.c:52
-msgid "Could not initialize GNOME"
-msgstr "Kunde inte initiera Gnome"
-
-#: calendar/gui/alarm-notify/notify-main.c:108
-msgid "Could not create the alarm notify service factory"
-msgstr "Kunde inte skapa fabriken för alarmaviseringstjänsten"
-
-#: calendar/gui/calendar-commands.c:266
-msgid "File not found"
-msgstr "Filen hittades inte"
-
-#: calendar/gui/calendar-commands.c:290
-msgid "Open calendar"
-msgstr "Öppna kalender"
-
-#: calendar/gui/calendar-commands.c:332
-msgid "Save calendar"
-msgstr "Spara kalender"
-
-#: calendar/gui/calendar-commands.c:468
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-"Kunde inte skapa kalendervyn. Var vänlig och kontrollera din ORBit- och "
-"OAF-installation."
-
-#: calendar/gui/calendar-model.c:360 calendar/gui/calendar-model.c:898
-#: calendar/gui/e-calendar-table.c:330
-msgid "Public"
-msgstr "Publikt"
-
-#: calendar/gui/calendar-model.c:363 calendar/gui/calendar-model.c:900
-#: calendar/gui/e-calendar-table.c:331
-msgid "Private"
-msgstr "Privat"
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:902
-#: calendar/gui/e-calendar-table.c:332
-msgid "Confidential"
-msgstr "Konfidentiellt"
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/event-editor.c:1601
-#: calendar/gui/event-editor.c:1628
-#: camel/providers/smtp/camel-smtp-transport.c:221
-msgid "Unknown"
-msgstr "Okänt"
-
-#: calendar/gui/calendar-model.c:457
-msgid "N"
-msgstr "N"
-
-#: calendar/gui/calendar-model.c:457
-msgid "S"
-msgstr "S"
-
-#: calendar/gui/calendar-model.c:459
-msgid "E"
-msgstr "Ö"
-
-#: calendar/gui/calendar-model.c:459
-msgid "W"
-msgstr "V"
-
-#: calendar/gui/calendar-model.c:497 calendar/gui/calendar-model.c:1066
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:352 mail/message-list.c:694
-msgid "High"
-msgstr "Hög"
-
-#: calendar/gui/calendar-model.c:499 calendar/gui/calendar-model.c:1068
-#: calendar/gui/calendar-model.c:1574
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:353 mail/message-list.c:693
-msgid "Normal"
-msgstr "Normal"
-
-#: calendar/gui/calendar-model.c:501 calendar/gui/calendar-model.c:1070
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:354 mail/message-list.c:692
-msgid "Low"
-msgstr "Låg"
-
-#: calendar/gui/calendar-model.c:537 calendar/gui/calendar-model.c:1122
-#: calendar/gui/e-calendar-table.c:406
-msgid "Transparent"
-msgstr "Genomskinlig"
-
-#: calendar/gui/calendar-model.c:540 calendar/gui/calendar-model.c:1124
-#: calendar/gui/e-calendar-table.c:405
-msgid "Opaque"
-msgstr "Ogenomskinlig"
-
-#: calendar/gui/calendar-model.c:638 calendar/gui/calendar-model.c:1176
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:426
-msgid "Not Started"
-msgstr "Inte startad"
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1178
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:427
-msgid "In Progress"
-msgstr "Pågår"
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1180
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:428
-msgid "Completed"
-msgstr "Färdigt"
-
-#: calendar/gui/calendar-model.c:647 calendar/gui/calendar-model.c:1182
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:429 camel/camel-service.c:544
-#: camel/camel-service.c:580
-msgid "Cancelled"
-msgstr "Avbruten"
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:794 e-util/e-time-utils.c:278
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr "%a %Y-%m-%d %H.%M.%S"
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:797 e-util/e-time-utils.c:287
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr "%a %Y-%m-%d %I.%M.%S %p"
-
-#: calendar/gui/calendar-model.c:802
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-"Datumet måste anges i formatet: \n"
-"\n"
-"%s"
-
-#: calendar/gui/calendar-model.c:882
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr ""
-"Klassificeringen måste vara \"Publikt\", \"Privat\", \"Konfidentiellt\" "
-"eller \"Ingen\""
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:896 calendar/gui/calendar-model.c:1120
-#: calendar/gui/calendar-model.c:1174 calendar/gui/e-calendar-table.c:329
-#: calendar/gui/e-calendar-table.c:404 mail/mail-account-gui.c:976
-#: mail/mail-accounts.c:120 mail/mail-accounts.c:164
-#: mail/mail-config.glade.h:37 shell/e-shell-view.c:1198
-#: widgets/misc/e-cell-date-edit.c:237 widgets/misc/e-dateedit.c:432
-#: widgets/misc/e-dateedit.c:1341 widgets/misc/e-dateedit.c:1456
-msgid "None"
-msgstr "Ingen"
-
-#: calendar/gui/calendar-model.c:970
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-"Den geografiska positionen måste anges i formatet: \n"
-"\n"
-"45.436845,125.862501"
-
-#: calendar/gui/calendar-model.c:1010
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr "Procentvärdet måste vara mellan 0 och 100"
-
-#: calendar/gui/calendar-model.c:1051
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr ""
-"Prioriteten måste vara \"Hög\", \"Normal\", \"Låg\" eller \"Odefinierad\"."
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1064
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:355
-msgid "Undefined"
-msgstr "Odefinierad"
-
-#: calendar/gui/calendar-model.c:1105
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr ""
-"Genomskinligheten måste vara \"Genomskinlig\", \"Ogenomskinlig\" eller "
-"\"Ingen\"."
-
-#: calendar/gui/calendar-model.c:1576
-msgid "Recurring"
-msgstr "Återkommande"
-
-#: calendar/gui/calendar-model.c:1578
-msgid "Assigned"
-msgstr "Tilldelad"
-
-#: calendar/gui/calendar-model.c:1584
-msgid "Yes"
-msgstr "Ja"
-
-#: calendar/gui/calendar-model.c:1584
-msgid "No"
-msgstr "Nej"
-
-#: calendar/gui/calendar-summary.c:198
-msgid "%A, %e %B %Y"
-msgstr "%A %e %B %Y"
-
-#: calendar/gui/calendar-summary.c:207
-msgid "Appointments"
-msgstr "Möten"
-
-#: calendar/gui/calendar-summary.c:245 calendar/gui/calendar-summary.c:251
-msgid "%I:%M%p"
-msgstr "%H.%M"
-
-#: calendar/gui/calendar-summary.c:275 calendar/gui/print.c:948
-#: views/tasks/galview.xml.h:1
-msgid "Tasks"
-msgstr "Uppgifter"
-
-#: calendar/gui/calendar-summary.c:443
-msgid "<b>Error loading calendar</b>"
-msgstr "<b>Fel vid inläsning av kalender</b>"
-
-#: calendar/gui/calendar-summary.c:455
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr "<b>Fel vid inläsning av kalender:<br>Stödjer inte metoden."
-
-#: calendar/gui/calendar-summary.c:622
-msgid "Display"
-msgstr "Visa"
-
-#: calendar/gui/calendar-summary.c:627
-msgid "Show appointments"
-msgstr "Visa möten"
-
-#: calendar/gui/calendar-summary.c:635
-msgid "Show tasks"
-msgstr "Visa uppgifter"
-
-#: calendar/gui/calendar-summary.c:690
-msgid "Things to do"
-msgstr "Saker att göra"
-
-#: calendar/gui/calendar-summary.c:721 calendar/gui/e-itip-control.glade.h:7
-msgid "Loading Calendar"
-msgstr "Läser in kalendern"
-
-#: calendar/gui/control-factory.c:126
-msgid "The URI that the calendar will display"
-msgstr "URI:n som kalendern kommer att visa"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:189
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr "Alarm på %A %d %b %Y %H.%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:196
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr "Avisering om ditt möte på %A %d %b %Y %H.%M"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:207
-msgid "No summary available."
-msgstr "Ingen sammanfattning finns tillgänglig."
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:2
-msgid "Close"
-msgstr "Stäng"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-msgid "Edit appointment"
-msgstr "Redigera möte"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr "Slumringstid (minuter)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr "05 minuter"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr "10 minuter"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr "12 timmar (fm/em)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr "15 minuter"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr "24 timmar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr "30 minuter"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr "60 minuter"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr "Ljudalarm stängs av efter"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr "Ljudalarm"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr "Pip när alarmfönster visas."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-msgid "Calendar"
-msgstr "Kalender"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr "Kalenderinställningar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "Färger"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr "Tryck ihop helger"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr "Alternativ för datumnavigerare"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-msgid "Defaults"
-msgstr "Standardvärden"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr "Visningsalternativ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:162
-msgid "Due Date"
-msgstr "Förfallodatum"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr "Aktivera slummer i"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr "Dagen slutar:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr "Första dagen i veckan:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr "fre"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:479
-msgid "Friday"
-msgstr "fredag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr "Markera"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr "Objekt som ska ha utförts idag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr "Objekt som ska ha utförts idag:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr "Objekt som inte ska utföras än"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr "Objekt som inte ska utföras än:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr "mån"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:475
-msgid "Monday"
-msgstr "måndag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr "objekt som skulle ha utförts"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr "Objekt som skulle ha utförts:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:45
-msgid "Pick a color"
-msgstr "Välj en färg"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:165
-msgid "Priority"
-msgstr "Prioritet"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-msgid "Remind me of all appointments"
-msgstr "Påminn mig om alla möten"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-msgid "Reminders"
-msgstr "Påminnare"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr "lör"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:480
-msgid "Saturday"
-msgstr "lördag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr "Visa"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-msgid "Show appointment end times"
-msgstr "Visa sluttiderna på möten"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr "Visa veckonummer"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr "Dagen startar:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr "sön"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:481
-msgid "Sunday"
-msgstr "söndag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-msgid "TaskPad"
-msgstr "Uppgiftsyta"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr "tor"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:478
-msgid "Thursday"
-msgstr "torsdag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr "Tid till förfallodatum"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr "Tidsdivisioner:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr "Tidsformat:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr "tis"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:476
-msgid "Tuesday"
-msgstr "tisdag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr "Visuella alarm"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr "ons"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:477
-msgid "Wednesday"
-msgstr "onsdag"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr "Arbetsvecka"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr "minuter innan de sker."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:78
-msgid "seconds."
-msgstr "sekunder."
-
-#: calendar/gui/dialogs/delete-comp.c:70
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr "Är du säker på att du vill ta bort mötet \"%s\""
-
-#: calendar/gui/dialogs/delete-comp.c:73
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr "Är du säker på att du vill ta bort detta namnlösa möte?"
-
-#: calendar/gui/dialogs/delete-comp.c:79
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr "Är du säker på att du vill ta bort uppgiften \"%s\"?"
-
-#: calendar/gui/dialogs/delete-comp.c:82
-msgid "Are you sure you want to delete this untitled task?"
-msgstr "Är du säker på att du vill ta bort denna namnlösa uppgift?"
-
-#: calendar/gui/dialogs/delete-comp.c:88
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr "Är du säker på att du vill ta bort dagboksposten \"%s\"?"
-
-#: calendar/gui/dialogs/delete-comp.c:91
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr "Är du säker på att du vill ta bort denna namnlösa dagbokspost?"
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr "Vill du spara ändringar?"
-
-#: calendar/gui/dialogs/task-editor.c:709
-msgid "Edit Task"
-msgstr "Redigera uppgift"
-
-#: calendar/gui/dialogs/task-editor.c:714 calendar/gui/event-editor.c:382
-#, c-format
-msgid "Appointment - %s"
-msgstr "Möte - %s"
-
-#: calendar/gui/dialogs/task-editor.c:717 calendar/gui/event-editor.c:385
-#, c-format
-msgid "Task - %s"
-msgstr "Uppgift - %s"
-
-#: calendar/gui/dialogs/task-editor.c:720 calendar/gui/event-editor.c:388
-#, c-format
-msgid "Journal entry - %s"
-msgstr "Dagbokspost - %s"
-
-#: calendar/gui/dialogs/task-editor.c:734 calendar/gui/event-editor.c:402
-msgid "No summary"
-msgstr "Ingen sammanfattning"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr "% färdig_t:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:158
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr "Klassifikation"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-msgid "Date & Time"
-msgstr "Datum och tid"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr "Datum utfört:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-msgid "Pri_vate"
-msgstr "Pri_vat"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-msgid "Progress"
-msgstr "Förlopp"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr "Pu_blikt"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-msgid "Sta_rt Date:"
-msgstr "Sta_rtdatum:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-msgid "Su_mmary:"
-msgstr "Sa_mmanfattning:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr "Uppgift"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-msgid "URL:"
-msgstr "URL:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr "_Konfidentiellt"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Contacts..."
-msgstr "_Kontakter..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-msgid "_Due Date:"
-msgstr "Förfallo_datum:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-msgid "_Priority:"
-msgstr "_Prioritet:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "_Status:"
-msgstr "_Status:"
-
-#: calendar/gui/e-calendar-table.c:157
-msgid "Categories"
-msgstr "Kategorier"
-
-#: calendar/gui/e-calendar-table.c:159
-msgid "Completion Date"
-msgstr "Färdigdatum"
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "End Date"
-msgstr "Slutdatum"
-
-#: calendar/gui/e-calendar-table.c:161
-msgid "Start Date"
-msgstr "Startdatum"
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Geographical Position"
-msgstr "Geografisk position"
-
-#: calendar/gui/e-calendar-table.c:164
-msgid "Percent complete"
-msgstr "Procent klar"
-
-#: calendar/gui/e-calendar-table.c:166
-msgid "Summary"
-msgstr "Sammanfattning"
-
-#: calendar/gui/e-calendar-table.c:167
-msgid "Transparency"
-msgstr "Genomskinlighet"
-
-#: calendar/gui/e-calendar-table.c:168
-msgid "URL"
-msgstr "URL"
-
-#: calendar/gui/e-calendar-table.c:169
-msgid "Alarms"
-msgstr "Alarm"
-
-#: calendar/gui/e-calendar-table.c:170
-msgid "Click here to add a task"
-msgstr "Klicka här för att lägga till en uppgift"
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "0%"
-msgstr "0%"
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "10%"
-msgstr "10%"
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "20%"
-msgstr "20%"
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "30%"
-msgstr "30%"
-
-#: calendar/gui/e-calendar-table.c:378
-#, c-format
-msgid "40%"
-msgstr "40%"
-
-#: calendar/gui/e-calendar-table.c:379
-#, c-format
-msgid "50%"
-msgstr "50%"
-
-#: calendar/gui/e-calendar-table.c:380
-#, c-format
-msgid "60%"
-msgstr "60%"
-
-#: calendar/gui/e-calendar-table.c:381
-#, c-format
-msgid "70%"
-msgstr "70%"
-
-#: calendar/gui/e-calendar-table.c:382
-#, c-format
-msgid "80%"
-msgstr "80%"
-
-#: calendar/gui/e-calendar-table.c:383
-#, c-format
-msgid "90%"
-msgstr "90%"
-
-#: calendar/gui/e-calendar-table.c:384
-#, c-format
-msgid "100%"
-msgstr "100%"
-
-#: calendar/gui/e-calendar-table.c:551
-msgid "Mark Complete"
-msgstr "Markera som färdig"
-
-#: calendar/gui/e-calendar-table.c:552
-msgid "Mark the task complete"
-msgstr "Markera uppgiften som färdig"
-
-#: calendar/gui/e-calendar-table.c:557
-msgid "Edit this task..."
-msgstr "Redigera denna uppgift..."
-
-#: calendar/gui/e-calendar-table.c:558
-msgid "Edit the task"
-msgstr "Redigera uppgiften"
-
-#: calendar/gui/e-calendar-table.c:560
-#: ui/evolution-task-editor-dialog.xml.h:19
-msgid "Delete this task"
-msgstr "Ta bort denna uppgift"
-
-#: calendar/gui/e-calendar-table.c:561
-msgid "Delete the task"
-msgstr "Ta bort uppgiften"
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:570 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:617
-msgid "am"
-msgstr "fm"
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:573 calendar/gui/e-week-view.c:303
-#: calendar/gui/print.c:616
-msgid "pm"
-msgstr "em"
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:274 calendar/gui/e-day-view.c:1294
-#: calendar/gui/e-week-view-main-item.c:325
-msgid "%A %d %B"
-msgstr "%A %d %B"
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:278 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:334
-msgid "%a %d %b"
-msgstr "%a %d %b"
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:282 calendar/gui/e-day-view.c:1321
-#: calendar/gui/e-week-view-main-item.c:348
-msgid "%d %b"
-msgstr "%d %b"
-
-#: calendar/gui/e-day-view.c:3146 ui/evolution-calendar.xml.h:16
-msgid "New Appointment"
-msgstr "Nytt möte"
-
-#: calendar/gui/e-day-view.c:3148 calendar/gui/e-week-view.c:3280
-msgid "New All Day Event"
-msgstr "Nytt heldagsarrangemang"
-
-#: calendar/gui/e-day-view.c:3153 calendar/gui/e-week-view.c:3285
-msgid "Go to Today"
-msgstr "Gå till idag"
-
-#: calendar/gui/e-day-view.c:3155 calendar/gui/e-week-view.c:3287
-msgid "Go to Date..."
-msgstr "Gå till datum..."
-
-#: calendar/gui/e-day-view.c:3162 calendar/gui/e-week-view.c:3293
-#: ui/evolution-calendar.xml.h:19 ui/evolution-message-composer.xml.h:10
-msgid "Open"
-msgstr "Öppna"
-
-#: calendar/gui/e-day-view.c:3164 calendar/gui/e-week-view.c:3295
-msgid "Delete this Appointment"
-msgstr "Ta bort detta möte"
-
-#: calendar/gui/e-day-view.c:3166 calendar/gui/e-week-view.c:3297
-#: ui/evolution-event-editor.xml.h:45
-msgid "Schedule Meeting"
-msgstr "Boka möte"
-
-#: calendar/gui/e-day-view.c:3175 calendar/gui/e-week-view.c:3310
-msgid "Make this Occurrence Movable"
-msgstr "Gör denna förekomst flyttbar"
-
-#: calendar/gui/e-day-view.c:3177 calendar/gui/e-week-view.c:3312
-msgid "Delete this Occurrence"
-msgstr "Ta bort denna förekomst"
-
-#: calendar/gui/e-day-view.c:3179
-msgid "Delete all Occurrences"
-msgstr "Ta bort alla förekomster"
-
-#: calendar/gui/e-day-view-time-item.c:519
-#, c-format
-msgid "%02i minute divisions"
-msgstr "%02i minutdivisioner"
-
-#: calendar/gui/e-itip-control.c:161
-msgid "I couldn't update your calendar file!\n"
-msgstr "Jag kunde inte uppdatera din kalenderfil!\n"
-
-#: calendar/gui/e-itip-control.c:167 calendar/gui/e-itip-control.c:510
-msgid "Component successfully updated."
-msgstr "Komponenten uppdaterades utan problem."
-
-#: calendar/gui/e-itip-control.c:173
-msgid "There was an error loading the calendar file."
-msgstr "Ett fel uppstod när kalenderfilen lästes in."
-
-#: calendar/gui/e-itip-control.c:197
-msgid "I couldn't open your calendar file!\n"
-msgstr "Jag kunde inte uppdatera din kalenderfil!\n"
-
-#: calendar/gui/e-itip-control.c:458 calendar/gui/e-itip-control.c:529
-msgid "I couldn't load your calendar file!\n"
-msgstr "Jag kunde inte läsa in din kalenderfil!\n"
-
-#: calendar/gui/e-itip-control.c:470
-msgid "I couldn't read your calendar file!\n"
-msgstr "Jag kunde inte läsa din kalenderfil!\n"
-
-#: calendar/gui/e-itip-control.c:483
-msgid "This is a reply from someone who was uninvited!"
-msgstr "Detta är ett svar från någon som inte var inbjuden!"
-
-#: calendar/gui/e-itip-control.c:499
-msgid "I couldn't update your calendar store."
-msgstr "Jag kunde inte uppdatera ditt kalenderlagringsutrymme."
-
-#: calendar/gui/e-itip-control.c:540
-msgid "I couldn't delete the calendar component!\n"
-msgstr "Jag kunde inte ta bort kalenderkomponenten!\n"
-
-#: calendar/gui/e-itip-control.c:550
-msgid "Component successfully deleted."
-msgstr "Komponenten togs bort utan problem."
-
-#: calendar/gui/e-itip-control.c:694
-msgid "I don't recognize this type of calendar component."
-msgstr "Jag känner inte igen denna typ av kalenderkomponent."
-
-#: calendar/gui/e-itip-control.c:780
-msgid "Add to Calendar"
-msgstr "Lägg till i kalender"
-
-#: calendar/gui/e-itip-control.c:814
-msgid " Accept "
-msgstr " Acceptera "
-
-#: calendar/gui/e-itip-control.c:815
-msgid " Decline "
-msgstr " Neka "
-
-#: calendar/gui/e-itip-control.c:816
-msgid " Tentative "
-msgstr " Preliminärt "
-
-#: calendar/gui/e-itip-control.c:860
-msgid "Update Calendar"
-msgstr "Uppdatera kalender"
-
-#: calendar/gui/e-itip-control.c:883
-msgid "Cancel Meeting"
-msgstr "Avboka möte"
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, no-c-format
-msgid "%P %%"
-msgstr "%P %%"
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr "--till--"
-
-#: calendar/gui/e-itip-control.glade.h:4
-msgid "Calendar Message"
-msgstr "Kalendermeddelande"
-
-#: calendar/gui/e-itip-control.glade.h:5 mail/mail-format.c:623
-msgid "Date:"
-msgstr "Datum:"
-
-#: calendar/gui/e-itip-control.glade.h:8
-msgid "Loading calendar..."
-msgstr "Läser in kalendern..."
-
-#: calendar/gui/e-itip-control.glade.h:9
-msgid "Organizer:"
-msgstr "Organisatör:"
-
-#: calendar/gui/e-itip-control.glade.h:10
-msgid "Server Message:"
-msgstr "Servermeddelande:"
-
-#: calendar/gui/e-itip-control.glade.h:11
-msgid "Summary:"
-msgstr "Sammanfattning:"
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr "slutdatum"
-
-#: calendar/gui/e-itip-control.glade.h:13
-msgid "date-start"
-msgstr "startdatum"
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-msgid "Attendee"
-msgstr "Deltagare"
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-msgid "Attendee address"
-msgstr "Adress till deltagare"
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-msgid "Attendees: "
-msgstr "Deltagare: "
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr ""
-"Avboka\n"
-"möte"
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-msgid "Chair"
-msgstr "Mötesordförande"
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-msgid "Meeting Invitations"
-msgstr "Mötesinbjudan"
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr "Icke-deltagare"
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr "Valfri deltagare"
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-msgid "Organizer: "
-msgstr "Organisatör:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:14
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-"Publicera\n"
-"tillställning"
-
-#: calendar/gui/e-meeting-dialog.glade.h:16
-msgid "RSVP"
-msgstr "OSA"
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid ""
-"Request\n"
-"Meeting"
-msgstr ""
-"Begär\n"
-"möte"
-
-#: calendar/gui/e-meeting-dialog.glade.h:19
-msgid "Required Participant"
-msgstr "Nödvändig deltagare"
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-msgid "Role"
-msgstr "Roll"
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-msgid ""
-"Schedule\n"
-"Time"
-msgstr ""
-"Boka\n"
-"tid"
-
-#: calendar/gui/e-meeting-dialog.glade.h:23 filter/libfilter-i18n.h:49
-#: mail/message-list.c:1086
-msgid "Status"
-msgstr "Status"
-
-#: calendar/gui/e-tasks.c:149 calendar/gui/e-tasks.c:469
-#: calendar/gui/e-tasks.c:502
-msgid "All"
-msgstr "Alla"
-
-#: calendar/gui/e-tasks.c:155
-msgid "Category:"
-msgstr "Kategori:"
-
-#: calendar/gui/e-tasks.c:298
-#, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "Kunde inte läsa in uppgifterna i \"%s\""
-
-#: calendar/gui/e-tasks.c:310
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr "Metoden som krävs för att läsa in \"%s\" stöds inte"
-
-#: calendar/gui/event-editor.c:377
-msgid "Edit Appointment"
-msgstr "Redigera möte"
-
-#: calendar/gui/event-editor.c:449
-msgid "on"
-msgstr "vid"
-
-#: calendar/gui/event-editor.c:474 filter/filter-datespec.c:81
-msgid "day"
-msgstr "dag"
-
-#: calendar/gui/event-editor.c:601
-msgid "on the"
-msgstr "den"
-
-#: calendar/gui/event-editor.c:608
-msgid "th"
-msgstr ":e"
-
-#: calendar/gui/event-editor.c:754
-msgid "occurrences"
-msgstr "förekomster"
-
-#: calendar/gui/event-editor.c:871
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr "Detta möte har upprepningsregler som inte kan redigeras med Evolution."
-
-#: calendar/gui/event-editor.c:1543
-#, c-format
-msgid " %d days"
-msgstr " %d dagar"
-
-#: calendar/gui/event-editor.c:1545
-msgid " 1 day"
-msgstr " 1 dag"
-
-#: calendar/gui/event-editor.c:1548
-#, c-format
-msgid " %d weeks"
-msgstr " %d veckor"
-
-#: calendar/gui/event-editor.c:1550
-msgid " 1 week"
-msgstr " 1 vecka"
-
-#: calendar/gui/event-editor.c:1553
-#, c-format
-msgid " %d hours"
-msgstr " %d timmar"
-
-#: calendar/gui/event-editor.c:1555
-msgid " 1 hour"
-msgstr " 1 timme"
-
-#: calendar/gui/event-editor.c:1558
-#, c-format
-msgid " %d minutes"
-msgstr " %d minuter"
-
-#: calendar/gui/event-editor.c:1560
-msgid " 1 minute"
-msgstr " 1 minut"
-
-#: calendar/gui/event-editor.c:1563
-#, c-format
-msgid " %d seconds"
-msgstr " %d sekunder"
-
-#: calendar/gui/event-editor.c:1565
-msgid " 1 second"
-msgstr " 1 sekund"
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1588
-msgid "Play a sound"
-msgstr "Spela ett ljud"
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1591
-msgid "Show a dialog"
-msgstr "Visa ett dialogfönster"
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1594
-msgid "Send an email"
-msgstr "Skicka ett brev"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1597
-msgid "Run a program"
-msgstr "Kör ett program"
-
-#: calendar/gui/event-editor.c:1612
-msgid " before start of appointment"
-msgstr " innan start på möte"
-
-#: calendar/gui/event-editor.c:1614
-msgid " after start of appointment"
-msgstr " efter start på möte"
-
-#: calendar/gui/event-editor.c:1622
-msgid " before end of appointment"
-msgstr " före slut på möte"
-
-#: calendar/gui/event-editor.c:1624
-msgid " after end of appointment"
-msgstr " efter slut på möte"
-
-#: calendar/gui/event-editor.c:3132 calendar/gui/print.c:1097
-#: calendar/gui/print.c:1099 calendar/gui/print.c:1100
-msgid "%a %b %d %Y"
-msgstr "%a %d %b %Y"
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr "He_ldagsarrangemang"
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-msgid "Appointment"
-msgstr "Möte"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-msgid "Appointment Basics"
-msgstr "Grundläggande mötessaker"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-msgid "Custom recurrence"
-msgstr "Anpassad upprepning"
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr "Var"
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-msgid "Exceptions"
-msgstr "Undantag"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-msgid "Modify"
-msgstr "Ändra"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-msgid "No recurrence"
-msgstr "Ingen upprepning"
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-msgid "Preview"
-msgstr "Förhandsgranska"
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Recurrence"
-msgstr "Upprepning"
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-msgid "Recurrence Rule"
-msgstr "Upprepningsregel"
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-msgid "Reminder"
-msgstr "Påminnare"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-msgid "Settings..."
-msgstr "Inställningar..."
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr "Enkel upprepning"
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-msgid "_End time:"
-msgstr "Slutti_d:"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Start time:"
-msgstr "_Starttid:"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Starting date:"
-msgstr "_Startdatum:"
-
-#. Automatically generated. Do not edit.
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:2
-msgid "after"
-msgstr "efter"
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:6
-msgid "before"
-msgstr "före"
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "day(s)"
-msgstr "dag"
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-msgid "end of appointment"
-msgstr "slut på möte"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "for"
-msgstr "i"
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr "för alltid"
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-msgid "hour(s)"
-msgstr "timme/timmar"
-
-#: calendar/gui/event-editor-dialog.glade.h:40 mail/mail-config.glade.h:77
-msgid "minute(s)"
-msgstr "minut(er)"
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "month(s)"
-msgstr "månad(er)"
-
-#: calendar/gui/event-editor-dialog.glade.h:42
-msgid "start of appointment"
-msgstr "start på möte"
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-msgid "until"
-msgstr "till"
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "week(s)"
-msgstr "vecka"
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "year(s)"
-msgstr "år"
-
-#: calendar/gui/e-week-view.c:3278 calendar/gui/e-week-view.c:3301
-msgid "New Appointment..."
-msgstr "Nytt möte..."
-
-#: calendar/gui/e-week-view.c:3314
-msgid "Delete All Occurrences"
-msgstr "Ta bort alla förekomster"
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:342
-msgid "%d %B"
-msgstr "%d %B"
-
-#: calendar/gui/gnome-cal.c:234
-msgid "Summary contains"
-msgstr "Sammanfattningen innehåller"
-
-#: calendar/gui/gnome-cal.c:235
-msgid "Description contains"
-msgstr "Beskrivningen innehåller"
-
-#: calendar/gui/gnome-cal.c:236
-msgid "Comment contains"
-msgstr "Kommentaren innehåller"
-
-#: calendar/gui/gnome-cal.c:237
-msgid "Has category"
-msgstr "Har kategorin"
-
-#: calendar/gui/gnome-cal.c:840
-#, c-format
-msgid "Could not open the folder in `%s'"
-msgstr "Kunde inte öppna mappen i \"%s\""
-
-#: calendar/gui/gnome-cal.c:851
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr "Metoden som krävs för att öppna \"%s\" stöds inte"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr "En Bonobo-testkontroll som visar en kalender."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-msgid "Evolution calendar executive summary component."
-msgstr "Evolutions kalendersammanfattningskomponent."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr "Evolutionkalenderns visare för iTip/iMip"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr "Evolutionkomponent för hantering av kalendern."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-msgid "Factory for the Calendar Summary component."
-msgstr "Fabrik för kalendersammanfattningskomponenten."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-msgid "Factory for the Evolution calendar component."
-msgstr "Fabrik för Evolutions kalenderkomponent."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-msgid "Factory for the calendar iTip view control"
-msgstr "Fabrik för kalenderns iTip-vykontroll"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-msgid "Factory for the sample Calendar control"
-msgstr "Fabrik för test-kalenderkontrollen"
-
-#: calendar/gui/goto-dialog.glade.h:1
-msgid "April"
-msgstr "april"
-
-#: calendar/gui/goto-dialog.glade.h:2
-msgid "August"
-msgstr "augusti"
-
-#: calendar/gui/goto-dialog.glade.h:3
-msgid "December"
-msgstr "december"
-
-#: calendar/gui/goto-dialog.glade.h:4
-msgid "February"
-msgstr "februari"
-
-#: calendar/gui/goto-dialog.glade.h:5
-msgid "Go To Date"
-msgstr "Gå till datum"
-
-#: calendar/gui/goto-dialog.glade.h:6
-msgid "Go To Today"
-msgstr "Gå till idag"
-
-#: calendar/gui/goto-dialog.glade.h:7
-msgid "January"
-msgstr "januari"
-
-#: calendar/gui/goto-dialog.glade.h:8
-msgid "July"
-msgstr "juli"
-
-#: calendar/gui/goto-dialog.glade.h:9
-msgid "June"
-msgstr "juni"
-
-#: calendar/gui/goto-dialog.glade.h:10
-msgid "March"
-msgstr "mars"
-
-#: calendar/gui/goto-dialog.glade.h:11
-msgid "May"
-msgstr "maj"
-
-#: calendar/gui/goto-dialog.glade.h:12
-msgid "November"
-msgstr "november"
-
-#: calendar/gui/goto-dialog.glade.h:13
-msgid "October"
-msgstr "oktober"
-
-#: calendar/gui/goto-dialog.glade.h:14
-msgid "September"
-msgstr "september"
-
-#: calendar/gui/print.c:300
-msgid "1st"
-msgstr "1:a"
-
-#: calendar/gui/print.c:300
-msgid "2nd"
-msgstr "2:a"
-
-#: calendar/gui/print.c:300
-msgid "3rd"
-msgstr "3:e"
-
-#: calendar/gui/print.c:300
-msgid "4th"
-msgstr "4:e"
-
-#: calendar/gui/print.c:300
-msgid "5th"
-msgstr "5:e"
-
-#: calendar/gui/print.c:301
-msgid "6th"
-msgstr "6:e"
-
-#: calendar/gui/print.c:301
-msgid "7th"
-msgstr "7:e"
-
-#: calendar/gui/print.c:301
-msgid "8th"
-msgstr "8:e"
-
-#: calendar/gui/print.c:301
-msgid "9th"
-msgstr "9:e"
-
-#: calendar/gui/print.c:301
-msgid "10th"
-msgstr "10:e"
-
-#: calendar/gui/print.c:302
-msgid "11th"
-msgstr "11:e"
-
-#: calendar/gui/print.c:302
-msgid "12th"
-msgstr "12:e"
-
-#: calendar/gui/print.c:302
-msgid "13th"
-msgstr "13:e"
-
-#: calendar/gui/print.c:302
-msgid "14th"
-msgstr "14:e"
-
-#: calendar/gui/print.c:302
-msgid "15th"
-msgstr "15:e"
-
-#: calendar/gui/print.c:303
-msgid "16th"
-msgstr "16:e"
-
-#: calendar/gui/print.c:303
-msgid "17th"
-msgstr "17:e"
-
-#: calendar/gui/print.c:303
-msgid "18th"
-msgstr "18:e"
-
-#: calendar/gui/print.c:303
-msgid "19th"
-msgstr "19:e"
-
-#: calendar/gui/print.c:303
-msgid "20th"
-msgstr "20:e"
-
-#: calendar/gui/print.c:304
-msgid "21st"
-msgstr "21:a"
-
-#: calendar/gui/print.c:304
-msgid "22nd"
-msgstr "22:a"
-
-#: calendar/gui/print.c:304
-msgid "23rd"
-msgstr "23:e"
-
-#: calendar/gui/print.c:304
-msgid "24th"
-msgstr "24:e"
-
-#: calendar/gui/print.c:304
-msgid "25th"
-msgstr "25:e"
-
-#: calendar/gui/print.c:305
-msgid "26th"
-msgstr "26:e"
-
-#: calendar/gui/print.c:305
-msgid "27th"
-msgstr "27:e"
-
-#: calendar/gui/print.c:305
-msgid "28th"
-msgstr "28:e"
-
-#: calendar/gui/print.c:305
-msgid "29th"
-msgstr "29:e"
-
-#: calendar/gui/print.c:305
-msgid "30th"
-msgstr "30:e"
-
-#: calendar/gui/print.c:306
-msgid "31st"
-msgstr "31:a"
-
-#: calendar/gui/print.c:362
-msgid "Su"
-msgstr "Sö"
-
-#: calendar/gui/print.c:362
-msgid "Mo"
-msgstr "Må"
-
-#: calendar/gui/print.c:362
-msgid "Tu"
-msgstr "Ti"
-
-#: calendar/gui/print.c:362
-msgid "We"
-msgstr "On"
-
-#: calendar/gui/print.c:362
-msgid "Th"
-msgstr "To"
-
-#: calendar/gui/print.c:362
-msgid "Fr"
-msgstr "Fr"
-
-#: calendar/gui/print.c:362
-msgid "Sa"
-msgstr "Lö"
-
-#. Day
-#: calendar/gui/print.c:1078
-msgid "Current day (%a %b %d %Y)"
-msgstr "Aktuell dag (%a %d %b %Y)"
-
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1096
-msgid "%a %b %d"
-msgstr "%a %d %b"
-
-#: calendar/gui/print.c:1093
-msgid "%a %d %Y"
-msgstr "%a %d %Y"
-
-#: calendar/gui/print.c:1104
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr "Aktuell vecka (%s - %s)"
-
-#. Month
-#: calendar/gui/print.c:1112
-msgid "Current month (%b %Y)"
-msgstr "Aktuell månad (%b %Y)"
-
-#. Year
-#: calendar/gui/print.c:1119
-msgid "Current year (%Y)"
-msgstr "Aktuellt år (%Y)"
-
-#: calendar/gui/print.c:1156
-msgid "Print Calendar"
-msgstr "Skriv ut kalender"
-
-#: calendar/gui/print.c:1321 mail/mail-callbacks.c:1547
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:24
-#: ui/evolution-mail.xml.h:57
-msgid "Print Preview"
-msgstr "Förhandsgranska"
-
-#: calendar/gui/tasks-control.c:108
-msgid "The URI of the tasks folder to display"
-msgstr "URI:t som uppgiftsmappen ska visa"
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-"Evolution har tagit de uppgifter som var i din kalendermapp och automatiskt "
-"flyttat dem till den nya uppgiftsmappen."
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-"Evolution har försökt att ta de uppgifter som var i din kalendermapp och "
-"flytta dem till den nya uppgiftsmapp.\n"
-"En del av dessa uppgifter kunde inte flyttas, så detta förfarande kan "
-"försökas igen i framtiden."
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-"Kunde inte öppna \"%s\"; inga objekt från kalendermappen kommer att flyttas "
-"till uppgiftsmappen."
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-"Metoden som krävs för att läsa in \"%s\" stöds inte; inga objekt från "
-"kalendermappen kommer att flyttas till uppgiftsmappen."
-
-#: calendar/gui/weekday-picker.c:315 calendar/gui/weekday-picker.c:410
-msgid "SMTWTFS"
-msgstr "SMTOTFL"
-
-#: camel/camel-cipher-context.c:169
-msgid "Signing is not supported by this cipher"
-msgstr "Signering stöds inte av detta chiffer"
-
-#: camel/camel-cipher-context.c:209
-msgid "Clearsigning is not supported by this cipher"
-msgstr "Klarsignering stöds inte av detta chiffer"
-
-#: camel/camel-cipher-context.c:249
-msgid "Verifying is not supported by this cipher"
-msgstr "Verifiering stöds inte av detta chiffer"
-
-#: camel/camel-cipher-context.c:292
-msgid "Encryption is not supported by this cipher"
-msgstr "Kryptering stöds inte av detta chiffer"
-
-#: camel/camel-cipher-context.c:334
-msgid "Decryption is not supported by this cipher"
-msgstr "Dekryptering stöds inte av detta chiffer"
-
-#: camel/camel-filter-driver.c:534 camel/camel-filter-driver.c:543
-msgid "Syncing folders"
-msgstr "Synkroniserar mappar"
-
-#: camel/camel-filter-driver.c:643
-msgid "Unable to open spool folder"
-msgstr "Kan inte öppna spool-mappen"
-
-#: camel/camel-filter-driver.c:652
-msgid "Unable to process spool folder"
-msgstr "Kan inte bearbeta spool-mappen"
-
-#: camel/camel-filter-driver.c:666
-msgid "Getting message %d (%d%%)"
-msgstr "Hämtar meddelande %d (%d%%)"
-
-#: camel/camel-filter-driver.c:670 camel/camel-filter-driver.c:679
-#, c-format
-msgid "Failed message %d"
-msgstr "Meddelande %d misslyckades"
-
-#: camel/camel-filter-driver.c:671
-msgid "Cannot open message"
-msgstr "Kan inte öppna meddelande"
-
-#: camel/camel-filter-driver.c:690 camel/camel-filter-driver.c:788
-msgid "Syncing folder"
-msgstr "Synkroniserar mapp"
-
-#: camel/camel-filter-driver.c:694 camel/camel-filter-driver.c:793
-msgid "Complete"
-msgstr "Färdigt"
-
-#: camel/camel-filter-driver.c:748
-#, c-format
-msgid "Getting message %d of %d"
-msgstr "Hämtar meddelande %d av %d"
-
-#: camel/camel-filter-driver.c:753 camel/camel-filter-driver.c:771
-#, c-format
-msgid "Failed at message %d of %d"
-msgstr "Misslyckades vid meddelande %d av %d"
-
-#: camel/camel-filter-driver.c:866
-#, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr "Fel vid tolkning av filter: %s: %s"
-
-#: camel/camel-filter-driver.c:871
-#, c-format
-msgid "Error executing filter: %s: %s"
-msgstr "Fel vid körning av filter: %s: %s"
-
-#: camel/camel-filter-search.c:439 camel/camel-filter-search.c:445
-#, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr "Fel vid körning av filtersökning: %s: %s"
-
-#: camel/camel-folder-search.c:328
-#, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-"Kan inte tolka sökuttrycket: %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:338
-#, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr ""
-"Fel vid körning av sökuttrycket: %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:485 camel/camel-folder-search.c:513
-msgid "(match-all) requires a single bool result"
-msgstr "(matcha-alla) kräver ett ensamt booleskt resultat"
-
-#: camel/camel-folder-search.c:559
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr "Utför fråga på okänt huvud: %s"
-
-#: camel/camel-folder-search.c:670 camel/camel-folder-search.c:714
-msgid "Invalid type in body-contains, expecting string"
-msgstr "Ogiltig typ i \"body-contains\", förväntar sträng"
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:92 camel/camel-lock.c:111 camel/camel-movemail.c:138
-#: camel/camel-movemail.c:185
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "Kunde inte skapa låsfil för %s: %s"
-
-#: camel/camel-lock.c:151 camel/camel-movemail.c:219
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr "Gjorde time-out när låsfil skulle fås för %s. Försök igen senare."
-
-#: camel/camel-lock.c:201
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr "Misslyckades med att få lås med fcntl(2): %s"
-
-#: camel/camel-lock.c:255
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr "Misslyckades med att få lås med flock(2): %s"
-
-#: camel/camel-movemail.c:101
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr "Kunde inte kontrollera brevlådefilen %s: %s"
-
-#: camel/camel-movemail.c:148
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr "Kunde inte öppna brevlådefilen %s: %s"
-
-#: camel/camel-movemail.c:158
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr "Kunde inte öppna temporära brevlådefilen %s: %s"
-
-#: camel/camel-movemail.c:199
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr "Kunde inte testa låsfilen för %s: %s"
-
-#: camel/camel-movemail.c:245
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr "Fel vid läsning av brevlådefil: %s"
-
-#: camel/camel-movemail.c:256
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr "Fel vid skrivande av temporär brevlådefil: %s"
-
-#: camel/camel-movemail.c:274
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr "Misslyckades med att lagra e-post i temporära filen %s: %s"
-
-#: camel/camel-movemail.c:306
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr "Kunde inte skapa rör: %s"
-
-#: camel/camel-movemail.c:318
-#, c-format
-msgid "Could not fork: %s"
-msgstr "Kunde inte grena: %s"
-
-#: camel/camel-movemail.c:356
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr "Programmet movemail misslyckades: %s"
-
-#: camel/camel-movemail.c:357
-msgid "(Unknown error)"
-msgstr "(Okänt fel)"
-
-#: camel/camel-movemail.c:587
-#, c-format
-msgid "Error copying mail temp file: %s"
-msgstr "Fel vid kopierande av temporär brevfil: %s"
-
-#: camel/camel-pgp-context.c:188
-#, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr "Ange din %s-lösenordsfras för %s"
-
-#: camel/camel-pgp-context.c:191
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr "Ange din %s-lösenordsfras"
-
-#: camel/camel-pgp-context.c:509
-msgid "No plaintext to sign."
-msgstr "Ingen klartext att signera."
-
-#: camel/camel-pgp-context.c:516 camel/camel-pgp-context.c:688
-#: camel/camel-pgp-context.c:1055 camel/camel-pgp-context.c:1267
-msgid "No password provided."
-msgstr "Inget lösenord angavs."
-
-#: camel/camel-pgp-context.c:522 camel/camel-pgp-context.c:694
-#: camel/camel-pgp-context.c:877 camel/camel-pgp-context.c:1062
-#: camel/camel-pgp-context.c:1274
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr "Kunde inte skapa rör till GPG/PGP: %s"
-
-#: camel/camel-pgp-context.c:681
-msgid "No plaintext to clearsign."
-msgstr "Ingen klartext att klarsignera."
-
-#: camel/camel-pgp-context.c:871
-msgid "No plaintext to verify."
-msgstr "Ingen klartext att verifiera."
-
-#: camel/camel-pgp-context.c:888
-#, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "Kunde inte skapa temporär fil: %s"
-
-#: camel/camel-pgp-context.c:1045
-msgid "No plaintext to encrypt."
-msgstr "Ingen klartext att kryptera."
-
-#: camel/camel-pgp-context.c:1071
-msgid "No recipients specified"
-msgstr "Inga avsändare är angivna"
-
-#: camel/camel-pgp-context.c:1259
-msgid "No ciphertext to decrypt."
-msgstr "Ingen kryptotext att dekryptera."
-
-#: camel/camel-provider.c:131
-#, c-format
-msgid "Could not load %s: Module loading not supported on this system."
-msgstr "Kunde inte läsa in %s: Modulinläsning stöds inte på detta system."
-
-#: camel/camel-provider.c:140
-#, c-format
-msgid "Could not load %s: %s"
-msgstr "Kunde inte läsa in %s: %s"
-
-#: camel/camel-provider.c:148
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr "Kunde inte läsa in %s: Ingen initieringskod i modulen."
-
-#: camel/camel-remote-store.c:191
-#, c-format
-msgid "%s server %s"
-msgstr "%s-server %s"
-
-#: camel/camel-remote-store.c:195
-#, c-format
-msgid "%s service for %s on %s"
-msgstr "%s-tjänst för %s på %s"
-
-#: camel/camel-remote-store.c:252
-msgid "Connection cancelled"
-msgstr "Anslutning avbruten"
-
-#: camel/camel-remote-store.c:255
-#: camel/providers/smtp/camel-smtp-transport.c:269
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr "Kunde inte ansluta till %s (port %d): %s"
-
-#: camel/camel-remote-store.c:256
-msgid "(unknown host)"
-msgstr "(okänd värd)"
-
-#: camel/camel-remote-store.c:337 camel/camel-remote-store.c:399
-#: camel/camel-remote-store.c:470
-#: camel/providers/imap/camel-imap-command.c:287
-msgid "Operation cancelled"
-msgstr "Operation avbruten"
-
-#: camel/camel-remote-store.c:476
-msgid "Server unexpectedly disconnected"
-msgstr "Servern kopplade ifrån oväntat"
-
-#: camel/camel-sasl-anonymous.c:33
-msgid "Anonymous"
-msgstr "Anonym"
-
-#: camel/camel-sasl-anonymous.c:35
-msgid "This option will connect to the server using an anonymous login."
-msgstr ""
-"Detta alternativ ansluter till servern genom att använda anonym inloggning."
-
-#: camel/camel-sasl-anonymous.c:110 camel/camel-sasl-plain.c:87
-msgid "Authentication failed."
-msgstr "Autentisering misslyckades."
-
-#: camel/camel-sasl-anonymous.c:119
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-"Spårningsinformation för ogiltig e-postadress:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:131
-#, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr ""
-"Spårningsinformation för ogiltig ogenomskinlig:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:143
-#, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr ""
-"Spårningsinformation för ogiltig:\n"
-"%s"
-
-#: camel/camel-sasl-cram-md5.c:35
-msgid "CRAM-MD5"
-msgstr "CRAM-MD5"
-
-#: camel/camel-sasl-cram-md5.c:37
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-"Detta alternativ kommer att ansluta till servern med ett säkert "
-"CRAM-MD5-lösenord, om servern stöder det."
-
-#: camel/camel-sasl-digest-md5.c:43
-msgid "DIGEST-MD5"
-msgstr "DIGEST-MD5"
-
-#: camel/camel-sasl-digest-md5.c:45
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-"Detta alternativ kommer att ansluta till servern med ett "
-"DIGEST-MD5-lösenord, om servern stöder det."
-
-#: camel/camel-sasl-digest-md5.c:810
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr "Serverutmaningen var för lång (>2048 oktetter)\n"
-
-#: camel/camel-sasl-digest-md5.c:819
-msgid "Server challenge invalid\n"
-msgstr "Serverutmaningen var ogiltig\n"
-
-#: camel/camel-sasl-digest-md5.c:825
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr "Serverutmaningen innehöll ogiltig \"Quality of Protection\"-flagga\n"
-
-#: camel/camel-sasl-digest-md5.c:847
-msgid "Server response did not contain authorization data\n"
-msgstr "Serversvaret innehöll inte autentiseringsdata\n"
-
-#: camel/camel-sasl-digest-md5.c:865
-msgid "Server response contained incomplete authorization data\n"
-msgstr "Serversvaret innehöll ofullständig autentiseringsdata\n"
-
-#: camel/camel-sasl-digest-md5.c:875
-msgid "Server response does not match\n"
-msgstr "Serversvaret stämmer inte överens\n"
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "Kerberos 4"
-msgstr "Kerberos 4"
-
-#: camel/camel-sasl-kerberos4.c:42
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr ""
-"Detta alternativ kommer att ansluta till servern med Kerberos "
-"4-autentisering."
-
-#: camel/camel-sasl-kerberos4.c:161
-#, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr ""
-"Kunde inte få Kerberos-biljett:\n"
-"%s"
-
-#: camel/camel-sasl-kerberos4.c:218
-#: camel/providers/imap/camel-imap-store.c:433
-msgid "Bad authentication response from server."
-msgstr "Felaktigt autentiseringssvar från servern."
-
-#: camel/camel-sasl-login.c:32
-msgid "NT Login"
-msgstr "NT-inloggning"
-
-#: camel/camel-sasl-login.c:34 camel/camel-sasl-plain.c:34
-msgid "This option will connect to the server using a simple password."
-msgstr ""
-"Detta alternativ ansluter till servern genom att använda ett enkelt lösenord."
-
-#: camel/camel-sasl-login.c:127
-msgid "Unknown authentication state."
-msgstr "Okänt autentiseringstillstånd."
-
-#: camel/camel-search-private.c:111
-#, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr "Misslyckades med kompilering av reguljärt uttryck: %s: %s"
-
-#: camel/camel-service.c:154
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr "URL:en \"%s\" behöver ett användarnamn"
-
-#: camel/camel-service.c:162
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr "URL:en \"%s\" behöver ett värdnamn"
-
-#: camel/camel-service.c:170
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr "URL:en \"%s\" behöver en sökväg"
-
-#: camel/camel-service.c:548
-#, c-format
-msgid "Resolving: %s"
-msgstr "Slår upp: %s"
-
-#: camel/camel-service.c:575
-#, c-format
-msgid "Failure in name lookup: %s"
-msgstr "Namnuppslagning misslyckades: %s"
-
-#: camel/camel-service.c:600
-#, c-format
-msgid "Host lookup failed: %s: host not found"
-msgstr "Uppslagning av värdnamn misslyckades: %s: värden kunde inte hittas"
-
-#: camel/camel-service.c:602
-#, c-format
-msgid "Host lookup failed: %s: unknown reason"
-msgstr "Uppslagning av värdnamn misslyckades: %s: okänd orsak"
-
-#: camel/camel-session.c:68
-msgid "Virtual folder email provider"
-msgstr "E-postleverantör för virtuell mapp"
-
-#: camel/camel-session.c:70
-msgid "For reading mail as a query of another set of folders"
-msgstr "För läsande av e-post som en fråga av en annan samling mappar"
-
-#: camel/camel-session.c:295 camel/camel-session.c:364
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr "Det finns ingen leverantör för protokollet \"%s\""
-
-#: camel/camel-session.c:479
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"Kunde inte skapa katalogen %s:\n"
-"%s"
-
-#. Fill in the new fields
-#: camel/camel-store.c:378 mail/mail-ops.c:1007 mail/mail-ops.c:1014
-#: mail/mail-ops.c:1032 mail/mail-ops.c:1033
-msgid "Trash"
-msgstr "Papperskorg"
-
-#: camel/camel-tcp-stream-ssl.c:348
-#, c-format
-msgid ""
-"EMail: %s\n"
-"Common Name: %s\n"
-"Organization Unit: %s\n"
-"Organization: %s\n"
-"Locality: %s\n"
-"State: %s\n"
-"Country: %s"
-msgstr ""
-"E-post: %s\n"
-"Officiellt namn: %s\n"
-"Organisationsenhet: %s\n"
-"Organisation: %s\n"
-"Lokalitet: %s\n"
-"Stat: %s\n"
-"Land: %s"
-
-#. construct our user prompt
-#: camel/camel-tcp-stream-ssl.c:364
-#, c-format
-msgid ""
-"Bad certificate from %s:\n"
-"\n"
-"%s\n"
-"\n"
-"Do you wish to accept anyway?"
-msgstr ""
-"Felaktigt certifikat från %s:\n"
-"\n"
-"%s\n"
-"\n"
-"Vill du acceptera ändå?"
-
-#: camel/camel-url.c:289
-#, c-format
-msgid "Could not parse URL `%s'"
-msgstr "Kunde inte tolka URL:en \"%s\""
-
-#: camel/camel-vee-folder.c:451
-#, c-format
-msgid "No such message %s in %s"
-msgstr "Det finns inget sådant meddelande %s i %s"
-
-#: camel/camel-vee-folder.c:546
-#, c-format
-msgid "No such message: %s"
-msgstr "Det finns inget sådant meddelande: %s"
-
-#: camel/camel-vtrash-folder.c:109
-msgid "You cannot copy messages from this trash folder."
-msgstr "Du kan inte kopiera meddelanden från denna papperskorgsmapp."
-
-#: camel/providers/imap/camel-imap-message-cache.c:150
-#, c-format
-msgid "Could not open cache directory: %s"
-msgstr "Kunde inte öppna cachekatalogen: %s"
-
-#: camel/providers/imap/camel-imap-command.c:232
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "Oväntat svar från IMAP-servern: %s"
-
-#: camel/providers/imap/camel-imap-command.c:240
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr "IMAP-kommandot misslyckades: %s"
-
-#: camel/providers/imap/camel-imap-command.c:241 shell/e-storage.c:481
-msgid "Unknown error"
-msgstr "Okänt fel"
-
-#: camel/providers/imap/camel-imap-command.c:295
-msgid "Server response ended too soon."
-msgstr "Serversvaret tog slut för tidigt."
-
-#: camel/providers/imap/camel-imap-command.c:487
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr "IMAP-serversvaret innehöll inte %s-information"
-
-#: camel/providers/imap/camel-imap-command.c:524
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr "Oväntat OK-svar från IMAP-servern: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:172
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr "Kunde inte skapa katalogen %s: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:191
-#, c-format
-msgid "Could not load summary for %s"
-msgstr "Kunde inte läsa in sammanfattning för %s"
-
-#: camel/providers/imap/camel-imap-folder.c:364
-msgid "Scanning IMAP folder"
-msgstr "Genomsöker IMAP-mappen"
-
-#: camel/providers/imap/camel-imap-folder.c:1045
-#: camel/providers/imap/camel-imap-folder.c:1279
-msgid "This message is not currently available"
-msgstr "Detta meddelande är inte tillgängligt för tillfället"
-
-#: camel/providers/imap/camel-imap-folder.c:1073
-#: camel/providers/imap/camel-imap-folder.c:1312
-msgid "Could not find message body in FETCH response."
-msgstr "Kunde inte hitta meddelandetext i FETCH-svaret."
-
-# Låter konstigt?
-#: camel/providers/imap/camel-imap-provider.c:43 mail/mail-config.glade.h:11
-msgid "Checking for new mail"
-msgstr "Kontrollerar ny e-post"
-
-# Det här också
-#: camel/providers/imap/camel-imap-provider.c:45
-msgid "Check for new messages in all folders"
-msgstr "Kontrollerar nya meddelanden i alla mappar"
-
-#: camel/providers/imap/camel-imap-provider.c:48 shell/e-shell-view.c:551
-msgid "Folders"
-msgstr "Mappar"
-
-#: camel/providers/imap/camel-imap-provider.c:50
-msgid "Show only subscribed folders"
-msgstr "Visa endast prenumererade mappar"
-
-#: camel/providers/imap/camel-imap-provider.c:52
-msgid "Override server-supplied folder namespace"
-msgstr "Åsidosätt mappnamnrymden som servern tillhandahåller"
-
-#: camel/providers/imap/camel-imap-provider.c:54
-msgid "Namespace"
-msgstr "Namnrymd"
-
-#: camel/providers/imap/camel-imap-provider.c:57
-msgid "Apply filters to new messages in INBOX on this server"
-msgstr "Verkställ filtren på nya meddelanden i INBOX på denna server"
-
-#: camel/providers/imap/camel-imap-provider.c:63
-msgid "IMAPv4"
-msgstr "IMAPv4"
-
-#: camel/providers/imap/camel-imap-provider.c:65
-msgid "For reading and storing mail on IMAP servers."
-msgstr "För läsande och lagrande av e-post på IMAP-servrar."
-
-#: camel/providers/imap/camel-imap-provider.c:82
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr ""
-"Detta alternativ ansluter till IMAP-servern med ett lösenord i klartext."
-
-#: camel/providers/imap/camel-imap-store.c:456
-#, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr "IMAP-servern %s stöder inte den begärda autentiseringstypen %s"
-
-#: camel/providers/imap/camel-imap-store.c:466
-#: camel/providers/smtp/camel-smtp-transport.c:366
-#, c-format
-msgid "No support for authentication type %s"
-msgstr "Inget stöd för autentiseringstypen %s"
-
-#: camel/providers/imap/camel-imap-store.c:490
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr "%sVar vänlig och ange IMAP-lösenordet för %s@%s"
-
-#: camel/providers/imap/camel-imap-store.c:505
-#: camel/providers/smtp/camel-smtp-transport.c:410
-msgid "You didn't enter a password."
-msgstr "Du angav inte något lösenord."
-
-#: camel/providers/imap/camel-imap-store.c:531
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Kunde inte autentisera till IMAP-servern.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/imap/camel-imap-store.c:803 mail/mail-local.c:337
-#, c-format
-msgid "No such folder %s"
-msgstr "Det finns ingen mapp %s"
-
-#: camel/providers/local/camel-local-provider.c:39
-msgid "MH-format mail directories"
-msgstr "Brevlådekataloger i MH-format"
-
-#: camel/providers/local/camel-local-provider.c:40
-msgid "For storing local mail in MH-like mail directories"
-msgstr "För lagrande av e-post i MH-liknande brevlådekataloger"
-
-#: camel/providers/local/camel-local-provider.c:49
-msgid "Standard Unix mailbox file"
-msgstr "Standard Unix-brevlådefil"
-
-#: camel/providers/local/camel-local-provider.c:50
-msgid "For storing local mail in standard mbox format"
-msgstr "För lagrande av e-post i standard-mbox-format"
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "Qmail maildir-format mail files"
-msgstr "Brevlådefiler i Qmail maildir-format"
-
-#: camel/providers/local/camel-local-provider.c:60
-msgid "For storing local mail in qmail maildir directories"
-msgstr "För lagrande av e-post i qmail maildir-liknande kataloger"
-
-#: camel/providers/local/camel-local-store.c:127
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr "Lagringsroten %s är inte en absolut sökväg"
-
-#: camel/providers/local/camel-local-store.c:134
-#, c-format
-msgid "Store root %s is not a regular directory"
-msgstr "Lagringsroten %s är ingen vanlig katalog"
-
-#: camel/providers/local/camel-local-store.c:142
-#: camel/providers/local/camel-local-store.c:158
-#, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "Kan inte få mapp: %s: %s"
-
-#: camel/providers/local/camel-local-store.c:173
-msgid "Local stores do not have an inbox"
-msgstr "Lokala lagringsutrymmen har ingen inkorg"
-
-#: camel/providers/local/camel-local-store.c:183
-#, c-format
-msgid "Local mail file %s"
-msgstr "Lokal brevlådefil %s"
-
-#: camel/providers/local/camel-local-store.c:237
-#, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr "Kunde inte byta namn på mappen %s till %s: %s"
-
-#: camel/providers/local/camel-local-store.c:279
-#, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr "Kunde inte ta bort mappsammanfattningsfilen \"%s\": %s"
-
-#: camel/providers/local/camel-local-store.c:289
-#, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr "Kunde inte ta bort mappindexfilen \"%s\": %s"
-
-#: camel/providers/local/camel-local-summary.c:404
-msgid "Unable to add message to summary: unknown reason"
-msgstr "Kunde inte lägga till meddelandet i sammanfattningen: okänd orsak"
-
-#: camel/providers/local/camel-maildir-folder.c:150
-#: camel/providers/local/camel-maildir-folder.c:158
-#: camel/providers/local/camel-maildir-folder.c:169
-#, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr "Kan inte lägga till meddelande i mapp för brevlådekatalog: %s: %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-maildir-folder.c:209
-#: camel/providers/local/camel-maildir-folder.c:217
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#: camel/providers/local/camel-mh-folder.c:194
-#: camel/providers/local/camel-mh-folder.c:202
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-"Kan inte hämta meddelande: %s\n"
-" %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-msgid "No such message"
-msgstr "Det finns inget sådant meddelande"
-
-#: camel/providers/local/camel-maildir-folder.c:218
-#: camel/providers/local/camel-mh-folder.c:203
-msgid "Invalid message contents"
-msgstr "Ogiltigt meddelandeinnehåll"
-
-#: camel/providers/local/camel-maildir-store.c:96
-#: camel/providers/local/camel-mh-store.c:90
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-"Kunde inte öppna mappen \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:100
-#: camel/providers/local/camel-mbox-store.c:101
-#: camel/providers/local/camel-mh-store.c:97
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr "Mappen \"%s\" finns inte."
-
-#: camel/providers/local/camel-maildir-store.c:107
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-"Kunde inte skapa mappen \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:122
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr "\"%s\" är inte en brevlådekatalog."
-
-#: camel/providers/local/camel-maildir-store.c:151
-#: camel/providers/local/camel-maildir-store.c:188
-#: camel/providers/local/camel-mh-store.c:127
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr "Kunde inte ta bort mappen \"%s\": %s"
-
-#: camel/providers/local/camel-maildir-store.c:152
-msgid "not a maildir directory"
-msgstr "är inte en brevlådekatalog"
-
-#: camel/providers/local/camel-maildir-summary.c:405
-#: camel/providers/local/camel-maildir-summary.c:526
-#, c-format
-msgid "Cannot open maildir directory path: %s: %s"
-msgstr "Kan inte öppna sökvägen till brevlådekatalogen: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:152
-#, c-format
-msgid "Cannot create folder lock on %s: %s"
-msgstr "Kan inte skapa mapplås på %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:203
-#, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr "Kan inte öppna brevlåda: %s %s\n"
-
-#: camel/providers/local/camel-mbox-folder.c:259
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr "Kan inte lägga till meddelande till mbox-fil: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:335
-#: camel/providers/local/camel-mbox-folder.c:367
-#: camel/providers/local/camel-mbox-folder.c:380
-#, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-"Kan inte hämta meddelande: %s från mappen %s\n"
-" %s"
-
-#: camel/providers/local/camel-mbox-folder.c:368
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr "Mappen verkar vara obotligt skadad."
-
-#: camel/providers/local/camel-mbox-folder.c:381
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr "Meddelandebyggande misslyckades: Trasig brevlåda?"
-
-#: camel/providers/local/camel-mbox-store.c:94
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-"Kan inte öppna filen \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:110
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-"Kunde inte skapa filen \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:119
-#: camel/providers/local/camel-mbox-store.c:146
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr "\"%s\" är ingen vanlig fil."
-
-#: camel/providers/local/camel-mbox-store.c:138
-#: camel/providers/local/camel-mbox-store.c:161
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-"Kunde inte ta bort mappen \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr "Mappen \"%s\" är inte tom. Den togs inte bort."
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:249
-msgid "Summarising folder"
-msgstr "Sammanfattar mapp"
-
-#: camel/providers/local/camel-mbox-summary.c:254
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr "Kunde inte öppna mapp: %s: sammanfattar från position %ld: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:296
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr "Ödesdigert e-posttolkningsfel nära position %ld i mappen %s"
-
-#: camel/providers/local/camel-mbox-summary.c:371
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr "Kan inte sammanfatta mapp: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:502
-#: camel/providers/local/camel-mbox-summary.c:703 mail/mail-ops.c:1397
-msgid "Synchronising folder"
-msgstr "Synkroniserar mapp"
-
-#: camel/providers/local/camel-mbox-summary.c:507
-#: camel/providers/local/camel-mbox-summary.c:708
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr "Kunde inte öppna mapp för att sammanfatta: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:524
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr "Kan inte öppna temporär brevlåda: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:549
-#: camel/providers/local/camel-mbox-summary.c:557
-#: camel/providers/local/camel-mbox-summary.c:746
-#: camel/providers/local/camel-mbox-summary.c:754
-msgid "Summary and folder mismatch, even after a sync"
-msgstr "Summeringen stämmer inte överens, avbryter synk"
-
-#: camel/providers/local/camel-mbox-summary.c:600
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr "Fel vid skrivning av temporär brevlåda: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:617
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr "Fel vid skrivning till temporär brevlåda: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:635
-#: camel/providers/local/camel-mbox-summary.c:804
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr "Kunde inte stänga källmappen %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:644
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr "Kunde inte stänga temporära mapp: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:655
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr "Kunde inte byta namn på mapp: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:879
-#, c-format
-msgid "Unknown error: %s"
-msgstr "Okänt fel: %s"
-
-#: camel/providers/local/camel-mh-folder.c:149
-#: camel/providers/local/camel-mh-folder.c:157
-#, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr "Kan inte lägga till meddelande i mh-mapp: %s: %s"
-
-#: camel/providers/local/camel-mh-store.c:110
-#, c-format
-msgid "`%s' is not a directory."
-msgstr "\"%s\" är inte en katalog."
-
-#: camel/providers/local/camel-mh-summary.c:218
-#, c-format
-msgid "Cannot open MH directory path: %s: %s"
-msgstr "Kan inte öppna sökvägen till MH-katalogen: %s: %s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:45
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr "Var vänlig och ange NNTP-lösenordet för %s@%s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:66
-msgid "Server rejected username"
-msgstr "Servern avvisade användarnamnet"
-
-#: camel/providers/nntp/camel-nntp-auth.c:72
-msgid "Failed to send username to server"
-msgstr "Misslyckades med att skicka användarnamnet till servern"
-
-#: camel/providers/nntp/camel-nntp-auth.c:81
-msgid "Server rejected username/password"
-msgstr "Servern avvisade användarnamnet/lösenordet"
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr "Meddelandet %s hittades inte."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr "Kunde inte hämta grupplista från servern."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr "Kan inte läsa in grupplistefilen för %s: %s"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr "Kan inte spara grupplistefilen för %s: %s"
-
-#: camel/providers/nntp/camel-nntp-provider.c:42
-msgid "USENET news"
-msgstr "USENET-diskussionsgrupper"
-
-#: camel/providers/nntp/camel-nntp-provider.c:44
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr ""
-"Det här är en leverantör för läsning och postning till "
-"USENET-diskussionsgrupper."
-
-#: camel/providers/nntp/camel-nntp-store.c:224
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr "Kunde inte öppna katalog för diskussionsgruppsserver: %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:286
-#, c-format
-msgid "USENET News via %s"
-msgstr "USENET-diskussionsgrupper via %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:293
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-"Detta alternativ kommer att autentisera med NNTP-servern genom att använda "
-"ett klartextlösenord."
-
-#: camel/providers/nntp/camel-nntp-store.c:325
-#: camel/providers/nntp/camel-nntp-store.c:488
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr "Kan inte öppna eller skapa .newsrc-fil för %s: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-msgid "Retrieving POP summary"
-msgstr "Hämtar POP-sammanfattning"
-
-#: camel/providers/pop3/camel-pop3-folder.c:155
-#, c-format
-msgid "Could not check POP server for new messages: %s"
-msgstr "Kunde inte kontrollera nya meddelanden på POP-servern: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:199
-msgid "Could not open folder: message listing was incomplete."
-msgstr "Kunde inte öppna mapp: meddelandelistningen var inte komplett."
-
-#: camel/providers/pop3/camel-pop3-folder.c:292
-#, c-format
-msgid "No message with uid %s"
-msgstr "Inget meddelande med uid %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:296
-#, c-format
-msgid "Retrieving POP message %d"
-msgstr "Hämtar POP-meddelande %d"
-
-#: camel/providers/pop3/camel-pop3-folder.c:303
-#, c-format
-msgid "Could not fetch message: %s"
-msgstr "Kunde inte hämta meddelande: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:320
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr "Kunde inte hämta meddelande från POP-servern %s: %s"
-
-#: camel/providers/pop3/camel-pop3-provider.c:37
-msgid "Message storage"
-msgstr "Meddelandelager"
-
-#: camel/providers/pop3/camel-pop3-provider.c:39
-msgid "Leave messages on server"
-msgstr "Lämna meddelanden på servern"
-
-#: camel/providers/pop3/camel-pop3-provider.c:41
-#, c-format
-msgid "Delete after %s day(s)"
-msgstr "Ta bort efter %s dag(ar)"
-
-#: camel/providers/pop3/camel-pop3-provider.c:48 mail/mail-config.glade.h:42
-msgid "POP"
-msgstr "POP"
-
-#: camel/providers/pop3/camel-pop3-provider.c:50
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-"För anslutning till POP-servrar. POP-protokollet kan även användas för att "
-"hämta e-post från vissa webb-epostleverantörer och slutna e-postsystem."
-
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-"Detta alternativ kommer att ansluta till POP-servern med ett "
-"klartextlösenord. Det här är det enda alternativet som stöds hos många "
-"POP-servrar."
-
-#: camel/providers/pop3/camel-pop3-provider.c:79
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-"Detta alternativ kommer att ansluta till POP-servern genom att använda ett "
-"krypterat lösenord via APOP-protokollet. Det här kanske inte fungerar för "
-"alla användare även med servrar som sägs stöda detta."
-
-#: camel/providers/pop3/camel-pop3-provider.c:91
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-"Det här kommer att ansluta till POP-servern och använda Kerberos 4 för att "
-"autentisera med den."
-
-#: camel/providers/pop3/camel-pop3-store.c:199
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr "Kunde inte autentisera till KPOP-server: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:215
-#, c-format
-msgid "Could not connect to server: %s"
-msgstr "Kunde inte ansluta till server: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:322
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr "Kunde inte ansluta till POP-servern på %s."
-
-#: camel/providers/pop3/camel-pop3-store.c:361
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr "%sVar vänlig och ange ett POP3-lösenord för %s@%s"
-
-#: camel/providers/pop3/camel-pop3-store.c:379
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-"Kunde inte ansluta till POP-servern,\n"
-"Fel vid skickande av filnamn: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:382
-#: camel/providers/pop3/camel-pop3-store.c:419
-msgid "(Unknown)"
-msgstr "(Okänd)"
-
-#: camel/providers/pop3/camel-pop3-store.c:409
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-"Kan inte ansluta till POP-servern.\n"
-"Inget stöd för begärd autentiseringsmekanism."
-
-#: camel/providers/pop3/camel-pop3-store.c:417
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-"Kan inte ansluta till POP-server.\n"
-"Fel vid skickande av lösenord: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:484
-#, c-format
-msgid "No such folder `%s'."
-msgstr "Det finns ingen mapp \"%s\"."
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:37
-#: mail/mail-config.glade.h:57
-msgid "Sendmail"
-msgstr "Sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:39
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-"För leverans av e-post genom att skicka det till programmet \"sendmail\" på "
-"det lokala systemet."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:107
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr "Kunde inte skapa rör till sendmail: %s: brevet skickades inte"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:124
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr "Kunde inte grena sendmail: %s: brevet skickades inte"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:150
-#, c-format
-msgid "Could not send message: %s"
-msgstr "Kunde inte skicka meddelande: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:163
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr "sendmail avslutade med signal %s: brevet skickades inte."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:170
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr "Kunde inte köra %s: brevet skickades inte."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:175
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr "sendmail avslutade med status %d: brevet skickades inte."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:194
-msgid "Could not find 'From' address in message"
-msgstr "Kunde inte hitta \"Från\"-adress i meddelandet"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "sendmail"
-msgstr "sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:249
-msgid "Mail delivery via the sendmail program"
-msgstr "E-postleverans via programmet sendmail"
-
-#: camel/providers/smtp/camel-smtp-provider.c:38 mail/mail-config.glade.h:52
-msgid "SMTP"
-msgstr "SMTP"
-
-#: camel/providers/smtp/camel-smtp-provider.c:40
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr ""
-"För leverans av e-post genom anslutning till ett fjärr-epostnav som använder "
-"SMTP.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:168
-msgid "Syntax error, command unrecognized"
-msgstr "Syntaxfel, okänt kommando"
-
-#: camel/providers/smtp/camel-smtp-transport.c:170
-msgid "Syntax error in parameters or arguments"
-msgstr "Syntaxfel i parametrar eller argument"
-
-#: camel/providers/smtp/camel-smtp-transport.c:172
-msgid "Command not implemented"
-msgstr "Kommandot inte implementerat"
-
-#: camel/providers/smtp/camel-smtp-transport.c:174
-msgid "Command parameter not implemented"
-msgstr "Kommandoparameter inte implementerad"
-
-#: camel/providers/smtp/camel-smtp-transport.c:176
-msgid "System status, or system help reply"
-msgstr "Systemstatus, eller svar från systemhjälp"
-
-#: camel/providers/smtp/camel-smtp-transport.c:178
-msgid "Help message"
-msgstr "Hjälpmeddelande"
-
-#: camel/providers/smtp/camel-smtp-transport.c:180
-msgid "Service ready"
-msgstr "Tjänsten klar"
-
-#: camel/providers/smtp/camel-smtp-transport.c:182
-msgid "Service closing transmission channel"
-msgstr "Tjänsten stänger överföringskanalen"
-
-#: camel/providers/smtp/camel-smtp-transport.c:184
-msgid "Service not available, closing transmission channel"
-msgstr "Tjänsten inte tillgänglig, stänger överföringskanalen"
-
-#: camel/providers/smtp/camel-smtp-transport.c:186
-msgid "Requested mail action okay, completed"
-msgstr "Efterfrågad e-poståtgärd okej, färdig"
-
-#: camel/providers/smtp/camel-smtp-transport.c:188
-msgid "User not local; will forward to <forward-path>"
-msgstr "Användaren inte lokal; vidarebefordrar till <forward-path>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:190
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr "Efterfrågad e-poståtgärd inte utförd: brevlådan inte tillgänglig"
-
-#: camel/providers/smtp/camel-smtp-transport.c:192
-msgid "Requested action not taken: mailbox unavailable"
-msgstr "Efterfrågad åtgärd inte utförd: brevlådan inte tillgänglig"
-
-#: camel/providers/smtp/camel-smtp-transport.c:194
-msgid "Requested action aborted: error in processing"
-msgstr "Efterfrågad åtgärd avbruten: fel i behandling"
-
-#: camel/providers/smtp/camel-smtp-transport.c:196
-msgid "User not local; please try <forward-path>"
-msgstr "Användaren inte lokal; försök med <forward-path>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:198
-msgid "Requested action not taken: insufficient system storage"
-msgstr "Efterfrågad åtgärd inte utförd: otillräckligt systemutrymme"
-
-#: camel/providers/smtp/camel-smtp-transport.c:200
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr "Efterfrågad åtgärd avbruten: överskriden utrymmesallokering"
-
-#: camel/providers/smtp/camel-smtp-transport.c:202
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr "Efterfrågad åtgärd inte utförd: brevlådenamn inte tillåtet"
-
-#: camel/providers/smtp/camel-smtp-transport.c:204
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr "Börja skriva in brevet, avsluta med <CRLF>.<CRLF>"
-
-#: camel/providers/smtp/camel-smtp-transport.c:206
-msgid "Transaction failed"
-msgstr "Transaktionen misslyckades"
-
-#: camel/providers/smtp/camel-smtp-transport.c:210
-msgid "A password transition is needed"
-msgstr "En lösenordsöverföring behövs"
-
-#: camel/providers/smtp/camel-smtp-transport.c:212
-msgid "Authentication mechanism is too weak"
-msgstr "Autentiseringsmekanismen är för svag"
-
-#: camel/providers/smtp/camel-smtp-transport.c:214
-msgid "Encryption required for requested authentication mechanism"
-msgstr "Kryptering behövs för begärd autentiseringsmekanism"
-
-#: camel/providers/smtp/camel-smtp-transport.c:216
-msgid "Temporary authentication failure"
-msgstr "Tillfälligt autentiseringsmisslyckande"
-
-#: camel/providers/smtp/camel-smtp-transport.c:218
-msgid "Authentication required"
-msgstr "Autentisering krävs"
-
-#: camel/providers/smtp/camel-smtp-transport.c:313
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr "Fel på välkomstsvar: %s: möjligtvis inte ödesdigert"
-
-#: camel/providers/smtp/camel-smtp-transport.c:356
-#, c-format
-msgid "SMTP server %s does not support requested authentication type %s"
-msgstr "SMTP-servern %s stöder inte den begärda autentiseringstypen %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:395
-#, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr "%sVar vänlig och ange SMTP-lösenordet för %s@%s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:418
-#, c-format
-msgid ""
-"Unable to authenticate to SMTP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"Kunde inte autentisera till SMTP-servern.\n"
-"%s\n"
-"\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:534
-#, c-format
-msgid "SMTP server %s"
-msgstr "SMTP-server %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:536
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr "SMTP-epostleverans via %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:561
-msgid "Cannot send message: sender address not defined."
-msgstr "Kan inte skicka meddelande: avsändaradressen är inte angiven."
-
-#: camel/providers/smtp/camel-smtp-transport.c:568
-msgid "Cannot send message: sender address not valid."
-msgstr "Kan inte skicka meddelande: avsändaradressen är inte giltig."
-
-#: camel/providers/smtp/camel-smtp-transport.c:582
-msgid "Cannot send message: no recipients defined."
-msgstr "Kan inte skicka meddelande: inga mottagare är angivna."
-
-#: camel/providers/smtp/camel-smtp-transport.c:676
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr "HELO-begäran gjorde time-out: %s: inte ödesdigert"
-
-#: camel/providers/smtp/camel-smtp-transport.c:695
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr "Fel i HELO-svar: %s: inte ödesdigert"
-
-#: camel/providers/smtp/camel-smtp-transport.c:728
-msgid "Error creating SASL authentication object."
-msgstr "Fel vid skapande av SASL-autentiseringsobjekt."
-
-#: camel/providers/smtp/camel-smtp-transport.c:743
-#: camel/providers/smtp/camel-smtp-transport.c:755
-#, c-format
-msgid "AUTH request timed out: %s"
-msgstr "AUTH-begäran gjorde time-out: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:805
-msgid "Bad authentication response from server.\n"
-msgstr "Felaktigt autentiseringssvar från servern.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:831
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr "MAIL FROM-begäran gjorde time-out: %s: brevet skickades inte"
-
-#: camel/providers/smtp/camel-smtp-transport.c:850
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr "Fel i MAIL FROM-svar: %s: brevet skickades inte"
-
-#: camel/providers/smtp/camel-smtp-transport.c:875
-#, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr "RCPT TO-begäran gjorde time-out: %s: brevet skickades inte"
-
-#: camel/providers/smtp/camel-smtp-transport.c:894
-#, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr "Fel i RCPT TO-svar: %s: brevet skickades inte"
-
-#: camel/providers/smtp/camel-smtp-transport.c:925
-#, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr "DATA-begäran gjorde time-out: %s: brevet skickades inte"
-
-#: camel/providers/smtp/camel-smtp-transport.c:944
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr "Fel i DATA-svar: %s: brevet skickades inte"
-
-#: camel/providers/smtp/camel-smtp-transport.c:959
-#: camel/providers/smtp/camel-smtp-transport.c:977
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr ""
-"DATA-skickande gjorde time-out: meddelandeslut: %s: brevet skickades inte"
-
-#: camel/providers/smtp/camel-smtp-transport.c:996
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr "Fel i DATA-svar: meddelandeslut: %s: brevet skickades inte"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1020
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr "RSET-begäran gjorde time-out: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1039
-#, c-format
-msgid "RSET response error: %s"
-msgstr "Fel i RSET-svar: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1062
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr "QUIT-begäran gjorde time-out: %s: inte ödesdigert"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1081
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr "Fel i QUIT-svar: %s: inte ödesdigert"
-
-#: composer/e-msg-composer-attachment-bar.c:95
-msgid "1 byte"
-msgstr "1 byte"
-
-#: composer/e-msg-composer-attachment-bar.c:97
-#, c-format
-msgid "%u bytes"
-msgstr "%u byte"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fk"
-
-#: composer/e-msg-composer-attachment-bar.c:108
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fM"
-
-#: composer/e-msg-composer-attachment-bar.c:112
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fG"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:332 mail/mail-display.c:120
-msgid "attachment"
-msgstr "bilaga"
-
-#: composer/e-msg-composer-attachment-bar.c:421
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr "Bifoga en fil"
-
-#: composer/e-msg-composer-attachment-bar.c:469
-msgid "Remove selected items from the attachment list"
-msgstr "Ta bort markerade objekt från bifogningslistan"
-
-#: composer/e-msg-composer-attachment-bar.c:500
-msgid "Add attachment..."
-msgstr "Lägg till bilaga..."
-
-#: composer/e-msg-composer-attachment-bar.c:501
-msgid "Attach a file to the message"
-msgstr "Bifoga en fil till meddelandet"
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/message-list.c:1086
-msgid "Attachment"
-msgstr "Bilaga"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr "Egenskaper hos bilagan"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr "Filnamn:"
-
-#: composer/e-msg-composer-attachment.glade.h:5
-msgid "Inline attachment"
-msgstr "Inkluderad bilaga"
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr "MIME-typ:"
-
-#: composer/e-msg-composer-attachment.glade.h:7
-msgid "Send as:"
-msgstr "Skicka som:"
-
-#: composer/e-msg-composer.c:527
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-"Kunde inte öppna signaturfilen %s:\n"
-"%s"
-
-#: composer/e-msg-composer.c:700
-msgid "Save as..."
-msgstr "Spara som..."
-
-#: composer/e-msg-composer.c:711
-#, c-format
-msgid "Error saving file: %s"
-msgstr "Fel vid sparande av filen: %s"
-
-#: composer/e-msg-composer.c:731
-#, c-format
-msgid "Error loading file: %s"
-msgstr "Fel vid inläsning av filen: %s"
-
-#: composer/e-msg-composer.c:803
-msgid ""
-"Unable to open the drafts folder for this account.\n"
-"Would you like to use the default drafts folder?"
-msgstr ""
-"Kan inte öppna mallmappen för detta konto.\n"
-"Vill du använda standardmappen för mallar?"
-
-#: composer/e-msg-composer.c:861 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:206
-msgid "Evolution"
-msgstr "Evolution"
-
-#: composer/e-msg-composer.c:867
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-"Meddelandet har inte skickats än.\n"
-"\n"
-"Vill du spara dina ändringar?"
-
-#: composer/e-msg-composer.c:892
-msgid "Open file"
-msgstr "Öppna fil"
-
-#: composer/e-msg-composer.c:1018
-msgid "That file does not exist."
-msgstr "Den filen finns inte."
-
-#: composer/e-msg-composer.c:1028
-msgid "That is not a regular file."
-msgstr "Det är ingen vanlig fil."
-
-#: composer/e-msg-composer.c:1038
-msgid "That file exists but is not readable."
-msgstr "Den filen finns, men är inte läsbar."
-
-#: composer/e-msg-composer.c:1048
-msgid "That file appeared accesible but open(2) failed."
-msgstr "Filen verkade åtkomlig, men open(2) misslyckades."
-
-#: composer/e-msg-composer.c:1070
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-"Filen är mycket stor (större än 100kB).\n"
-"Är du säker på att du vill infoga den?"
-
-#: composer/e-msg-composer.c:1091
-msgid "An error occurred while reading the file."
-msgstr "Ett fel uppstod vid läsning av filen."
-
-#: composer/e-msg-composer.c:1392 composer/e-msg-composer.c:1735
-msgid "Compose a message"
-msgstr "Skriv ett meddelande"
-
-#: composer/e-msg-composer.c:1826
-msgid "Could not create composer window."
-msgstr "Kunde inte skapa fönster för meddelanderedigering."
-
-#: composer/e-msg-composer-hdrs.c:323
-msgid "Click here for the address book"
-msgstr "Klicka här för att ta fram adressboken"
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:354 mail/mail-format.c:744
-msgid "From:"
-msgstr "Från:"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:360 mail/mail-format.c:746
-msgid "Reply-To:"
-msgstr "Svara-Till:"
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:371 mail/mail-format.c:643
-msgid "Subject:"
-msgstr "Ämne:"
-
-#: composer/e-msg-composer-hdrs.c:385 mail/mail-format.c:748
-msgid "To:"
-msgstr "Till:"
-
-#: composer/e-msg-composer-hdrs.c:386
-msgid "Enter the recipients of the message"
-msgstr "Ange meddelandets mottagare"
-
-#: composer/e-msg-composer-hdrs.c:389 mail/mail-format.c:750
-msgid "Cc:"
-msgstr "Cc:"
-
-#: composer/e-msg-composer-hdrs.c:390
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "Ange adresserna som ska få en kopia av meddelandet"
-
-#: composer/e-msg-composer-hdrs.c:393
-msgid "Bcc:"
-msgstr "Bcc:"
-
-#: composer/e-msg-composer-hdrs.c:394
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"Ange adresserna till de som ska ta emot en extra kopia av meddelandet utan "
-"att visas i mottagarlistan av meddelandet."
-
-#: composer/evolution-composer.c:355
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-"Kunde inte skapa redigerarfönstret, eftersom du inte har\n"
-"konfigurerat några identiter i e-postkomponenten."
-
-#: composer/evolution-composer.c:370
-msgid "Cannot initialize Evolution's composer."
-msgstr "Kan inte initiera Evolutions e-postredigerare."
-
-#: data/evolution.desktop.in.h:2
-msgid "The Evolution groupware suite"
-msgstr "Grupprogramvaran Evolution"
-
-#: data/evolution.keys.in.h:1
-msgid "address card"
-msgstr "adresskort"
-
-#: data/evolution.keys.in.h:2
-msgid "calendar information"
-msgstr "kalenderinformation"
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:69 e-util/e-time-utils.c:117
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:477
-#: widgets/misc/e-dateedit.c:1284 widgets/misc/e-dateedit.c:1465
-msgid "%m/%d/%Y"
-msgstr "%Y-%m-%d"
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:87 e-util/e-time-utils.c:198
-msgid "%I:%M:%S %p%n"
-msgstr " "
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:90 e-util/e-time-utils.c:201
-msgid "%H:%M:%S%n"
-msgstr "%H.%M.%S%n"
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:94 e-util/e-time-utils.c:205
-msgid "%I:%M %p%n"
-msgstr " "
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:97 e-util/e-time-utils.c:208
-msgid "%H:%M%n"
-msgstr "%H.%M%n"
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:269
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:473
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2505
-msgid "%a %m/%d/%Y"
-msgstr "%a %Y-%m-%d"
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:274
-msgid "%a %m/%d/%Y %H:%M"
-msgstr "%a %Y-%m-%d %H.%M"
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:283
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr "%a %Y-%m-%d %I.%M %p"
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:312 widgets/misc/e-dateedit.c:1259
-#: widgets/misc/e-dateedit.c:1318 widgets/misc/e-dateedit.c:1497
-msgid "%H:%M"
-msgstr "%H.%M"
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:315
-msgid "%H:%M:%S"
-msgstr "%H.%M.%S"
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:320 widgets/misc/e-dateedit.c:1262
-#: widgets/misc/e-dateedit.c:1321 widgets/misc/e-dateedit.c:1500
-msgid "%I:%M %p"
-msgstr "%I.%M %p"
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:323
-msgid "%I:%M:%S %p"
-msgstr "%I.%M.%S %p"
-
-#: executive-summary/component/component-factory.c:152
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr "Kan inte initiera Evolutions sammanfattningskomponent."
-
-#: executive-summary/component/e-summary.c:926
-#, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"Kunde inte öppna HTML-filen:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:940
-#, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr ""
-"Fel vid läsning av data:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:958
-msgid "File does not have a place for the services.\n"
-msgstr "Filen har ingen plats för tjänsterna.\n"
-
-#: executive-summary/component/e-summary-callbacks.c:126
-msgid "Select a service"
-msgstr "Välj en tjänst"
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-"Du kan välja en annan HTML-sida som bakgrund för sammanfattningen.\n"
-"\n"
-"Lämna fältet tomt för att få standardsidan."
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr "Öppna %s med det program som är standard i Gnome"
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr "Öppna %s med standardwebbläsaren i Gnome"
-
-#: executive-summary/component/e-summary-url.c:71
-#, c-format
-msgid "Send an email to %s"
-msgstr "Skicka e-post till %s"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr "Ändra vy till %s"
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr "Kör %s"
-
-#: executive-summary/component/e-summary-url.c:75
-#, c-format
-msgid "Close %s"
-msgstr "Stäng %s"
-
-#: executive-summary/component/e-summary-url.c:76
-#, c-format
-msgid "Move %s to the left"
-msgstr "Flytta %s till vänster"
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr "Flytta %s till höger"
-
-#: executive-summary/component/e-summary-url.c:78
-#, c-format
-msgid "Move %s into the previous row"
-msgstr "Flytta %s till föregående rad"
-
-#: executive-summary/component/e-summary-url.c:79
-#, c-format
-msgid "Move %s into the next row"
-msgstr "Flytta %s till nästa rad"
-
-#: executive-summary/component/e-summary-url.c:80
-#, c-format
-msgid "Configure %s"
-msgstr "Konfigura %s"
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr "Utseende"
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr "Bakgrund:"
-
-#: executive-summary/component/main.c:62
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-"Sammanfattningskomponenten kunde inte initiera Bonobo.\n"
-"Om du fick en varning om RootPOA, betyder det förmodligen att\n"
-"du kompilerade Bonobo med GOAD i stället för OAF."
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-msgid "Evolution component for the executive summary."
-msgstr "Evolutionkomponent för sammanfattningen."
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-msgid "Factory for the Evolution executive summary component."
-msgstr "Fabrik för Evolutions sammanfattningskomponent."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr "Fabrik för RDF-sammanfattningen."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-msgid "RDF Summary"
-msgstr "RDF-sammanfattning"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-msgid "Factory for the test bonobo component."
-msgstr "Fabrik för Bonobo-testkomponenten."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-msgid "Factory for the test component."
-msgstr "Fabrik för testkomponenten."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr "Testa Bonobo-tjänsten"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr "Testa tjänsten"
-
-#: executive-summary/test-service/rdf-summary.c:512
-#: executive-summary/test-service/rdf-summary.c:549
-#: executive-summary/test-service/rdf-summary.c:594
-#: widgets/misc/e-messagebox.c:166
-msgid "Error"
-msgstr "Fel"
-
-#: executive-summary/test-service/rdf-summary.c:768
-msgid "Update automatically"
-msgstr "Uppdatera automatiskt"
-
-#: executive-summary/test-service/rdf-summary.c:778
-msgid "Update now"
-msgstr "Uppdatera nu"
-
-#: executive-summary/test-service/rdf-summary.c:788
-msgid "Update every "
-msgstr "Uppdatera var "
-
-#: executive-summary/test-service/rdf-summary.c:796
-#: filter/filter-datespec.c:83
-msgid "minutes"
-msgstr "minut"
-
-#: filter/filter-datespec.c:78
-msgid "year"
-msgstr "år"
-
-#: filter/filter-datespec.c:78
-msgid "years"
-msgstr "år"
-
-#: filter/filter-datespec.c:79
-msgid "month"
-msgstr "månad"
-
-#: filter/filter-datespec.c:79
-msgid "months"
-msgstr "månader"
-
-#: filter/filter-datespec.c:80
-msgid "week"
-msgstr "vecka"
-
-#: filter/filter-datespec.c:80
-msgid "weeks"
-msgstr "veckor"
-
-#: filter/filter-datespec.c:81
-msgid "days"
-msgstr "dagar"
-
-#: filter/filter-datespec.c:82
-msgid "hour"
-msgstr "timme"
-
-#: filter/filter-datespec.c:82
-msgid "hours"
-msgstr "timmar"
-
-#: filter/filter-datespec.c:83
-msgid "minute"
-msgstr "minut"
-
-#: filter/filter-datespec.c:84
-msgid "second"
-msgstr "sekund"
-
-#: filter/filter-datespec.c:84
-msgid "seconds"
-msgstr "sekunder"
-
-#: filter/filter-datespec.c:199
-msgid "Oops. You have forgotten to choose a date."
-msgstr "Hoppsan. Du har glömt välja ett datum."
-
-#: filter/filter-datespec.c:201
-msgid "Oops. You have chosen an invalid date."
-msgstr "Hoppsan. Du har valt ett ogiltigt datum."
-
-#: filter/filter-datespec.c:276
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-"Meddelandedatumet kommer att jämföras med\n"
-"den tid då filtret körs eller en virtuell\n"
-"mapp öppnas."
-
-#: filter/filter-datespec.c:299
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-"Meddelandedatumet kommer att jämföras med\n"
-"datumet som du anger här."
-
-#: filter/filter-datespec.c:339
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-"Meddelandedatumet kommer att jämföras med\n"
-"en tid som är relativ till den då filtret\n"
-"körs; \"en vecka sen\" till exempel."
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:374
-msgid "the current time"
-msgstr "aktuell tid"
-
-#: filter/filter-datespec.c:374
-msgid "a time you specify"
-msgstr "en tid du anger"
-
-#: filter/filter-datespec.c:375
-msgid "a time relative to the current time"
-msgstr "en tid som är relativ till aktuell tid"
-
-#. The label
-#: filter/filter-datespec.c:433
-msgid "Compare against"
-msgstr "Jämför med"
-
-#: filter/filter-datespec.c:550 filter/filter-datespec.c:710
-msgid "now"
-msgstr "nu"
-
-#: filter/filter-datespec.c:707
-msgid "<click here to select a date>"
-msgstr "<klicka här för att välja ett datum>"
-
-#: filter/filter-editor.c:132 filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr "Filterregler"
-
-#. and now for the action area
-#: filter/filter-filter.c:452
-msgid "Then"
-msgstr "Då"
-
-#: filter/filter-filter.c:466
-msgid "Add action"
-msgstr "Lägg till åtgärd"
-
-#: filter/filter-folder.c:147
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-"Hoppsan, du glömde välja en mapp.\n"
-"Var vänlig och gå tillbaka och ange en giltig mapp som e-post kan levereras "
-"till."
-
-#: filter/filter-folder.c:225 filter/vfolder-rule.c:285
-#: mail/mail-account-gui.c:682
-msgid "Select Folder"
-msgstr "Välj mapp"
-
-#: filter/filter-folder.c:250
-msgid "Enter folder URI"
-msgstr "Ange mappens URI"
-
-#: filter/filter-folder.c:296
-msgid "<click here to select a folder>"
-msgstr "<klicka här för att välja en mapp>"
-
-#: filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr "Redigera filter"
-
-#: filter/filter.glade.h:5
-msgid "Edit VFolders"
-msgstr "Redigera virtuella mappar"
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr "Inkommande"
-
-#: filter/filter.glade.h:8
-msgid "Outgoing"
-msgstr "Utgående"
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:130
-msgid "Virtual Folders"
-msgstr "Virtuella mappar"
-
-#: filter/filter.glade.h:11
-msgid "specific folders only"
-msgstr "endast specifika mappar"
-
-#: filter/filter.glade.h:12
-msgid "vFolder Sources"
-msgstr "Källor för virtuella mappar"
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr "med alla aktiva fjärrmappar"
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr "med alla lokala och aktiva fjärrmappar"
-
-#: filter/filter.glade.h:15
-msgid "with all local folders"
-msgstr "med alla lokala mappar"
-
-#: filter/filter-input.c:193
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-"Fel i reguljära uttrycket \"%s\":\n"
-"%s"
-
-#: filter/filter-part.c:488
-msgid "Test"
-msgstr "Test"
-
-#: filter/filter-rule.c:626
-msgid "Rule name: "
-msgstr "Regelnamn: "
-
-#: filter/filter-rule.c:630
-msgid "Untitled"
-msgstr "Namnlös"
-
-#: filter/filter-rule.c:646
-msgid "If"
-msgstr "Om"
-
-#: filter/filter-rule.c:664
-msgid "Execute actions"
-msgstr "Utför åtgärder"
-
-#: filter/filter-rule.c:668
-msgid "if all criteria are met"
-msgstr "om alla villkor uppfylls"
-
-#: filter/filter-rule.c:673
-msgid "if any criteria are met"
-msgstr "om något villkor uppfylls"
-
-#: filter/filter-rule.c:684
-msgid "Add criterion"
-msgstr "Lägg till villkor"
-
-#: filter/filter-rule.c:770
-msgid "incoming"
-msgstr "inkommande"
-
-#: filter/filter-rule.c:770
-msgid "outgoing"
-msgstr "utgående"
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Colour"
-msgstr "Tilldela färg"
-
-#: filter/libfilter-i18n.h:4
-msgid "Assign Score"
-msgstr "Tilldela poäng"
-
-#: filter/libfilter-i18n.h:5
-msgid "Attachments"
-msgstr "Bilagor"
-
-#: filter/libfilter-i18n.h:7
-msgid "contains"
-msgstr "innehåller"
-
-#: filter/libfilter-i18n.h:8
-msgid "Copy to Folder"
-msgstr "Kopiera till mapp"
-
-#: filter/libfilter-i18n.h:9
-msgid "Date received"
-msgstr "Ankomstdatum"
-
-#: filter/libfilter-i18n.h:10
-msgid "Date sent"
-msgstr "Avsändningsdatum"
-
-#: filter/libfilter-i18n.h:12
-msgid "Deleted"
-msgstr "Borttagen"
-
-#: filter/libfilter-i18n.h:13
-msgid "does not contain"
-msgstr "innehåller inte"
-
-#: filter/libfilter-i18n.h:14
-msgid "does not end with"
-msgstr "slutar inte med"
-
-#: filter/libfilter-i18n.h:15
-msgid "does not exist"
-msgstr "finns inte"
-
-#: filter/libfilter-i18n.h:16
-msgid "does not sound like"
-msgstr "låter inte som"
-
-#: filter/libfilter-i18n.h:17
-msgid "does not start with"
-msgstr "börjar inte med"
-
-#: filter/libfilter-i18n.h:18
-msgid "Do Not Exist"
-msgstr "Finns inte"
-
-#: filter/libfilter-i18n.h:19
-msgid "Draft"
-msgstr "Mall"
-
-#: filter/libfilter-i18n.h:20
-msgid "ends with"
-msgstr "slutar med"
-
-#: filter/libfilter-i18n.h:21
-msgid "Exist"
-msgstr "Finns"
-
-#: filter/libfilter-i18n.h:22
-msgid "exists"
-msgstr "finns"
-
-#: filter/libfilter-i18n.h:23
-msgid "Expression"
-msgstr "Uttryck"
-
-#: filter/libfilter-i18n.h:24
-msgid "Forward to Address"
-msgstr "Vidarebefordra till adress"
-
-#: filter/libfilter-i18n.h:25
-msgid "Important"
-msgstr "Viktigt"
-
-#: filter/libfilter-i18n.h:26
-msgid "is"
-msgstr "är"
-
-#: filter/libfilter-i18n.h:27
-msgid "is greater than"
-msgstr "är större än"
-
-#: filter/libfilter-i18n.h:28
-msgid "is less than"
-msgstr "är mindre än"
-
-#: filter/libfilter-i18n.h:29
-msgid "is not"
-msgstr "är inte"
-
-#: filter/libfilter-i18n.h:30
-msgid "Mailing list"
-msgstr "Sändlista"
-
-#: filter/libfilter-i18n.h:31
-msgid "Message Body"
-msgstr "Meddelandetext"
-
-#: filter/libfilter-i18n.h:32
-msgid "Message Header"
-msgstr "Meddelandehuvud"
-
-#: filter/libfilter-i18n.h:33
-msgid "Message was received"
-msgstr "Meddelandet mottogs"
-
-#: filter/libfilter-i18n.h:34
-msgid "Message was sent"
-msgstr "Meddelandet skickades"
-
-#: filter/libfilter-i18n.h:35
-msgid "Move to Folder"
-msgstr "Flytta till mapp"
-
-#: filter/libfilter-i18n.h:36
-msgid "on or after"
-msgstr "den eller efter"
-
-#: filter/libfilter-i18n.h:37
-msgid "on or before"
-msgstr "den eller innan"
-
-#: filter/libfilter-i18n.h:38
-msgid "Read"
-msgstr "Läs"
-
-#: filter/libfilter-i18n.h:39
-msgid "Recipients"
-msgstr "Mottagare"
-
-#: filter/libfilter-i18n.h:40
-msgid "Regex Match"
-msgstr "Sökning med reguljärt uttryck"
-
-#: filter/libfilter-i18n.h:41
-msgid "Replied to"
-msgstr "Svarade till"
-
-#: filter/libfilter-i18n.h:42 filter/score-rule.c:204 filter/score-rule.c:206
-#: mail/message-list.c:1086
-msgid "Score"
-msgstr "Poäng"
-
-#: filter/libfilter-i18n.h:43
-msgid "Sender"
-msgstr "Avsändare"
-
-#: filter/libfilter-i18n.h:44
-msgid "Set Status"
-msgstr "Ställ in status"
-
-#: filter/libfilter-i18n.h:45
-msgid "sounds like"
-msgstr "låter som"
-
-#: filter/libfilter-i18n.h:46
-msgid "Source Account"
-msgstr "Källkonto"
-
-#: filter/libfilter-i18n.h:47
-msgid "Specific header"
-msgstr "Specifikt huvud"
-
-#: filter/libfilter-i18n.h:48
-msgid "starts with"
-msgstr "börjar med"
-
-#: filter/libfilter-i18n.h:50
-msgid "Stop Processing"
-msgstr "Stoppa behandling"
-
-#: filter/libfilter-i18n.h:51 mail/message-list.c:1087
-msgid "Subject"
-msgstr "Ämne"
-
-#: filter/libfilter-i18n.h:52
-msgid "was after"
-msgstr "var efter"
-
-#: filter/libfilter-i18n.h:53
-msgid "was before"
-msgstr "var före"
-
-#: filter/rule-editor.c:147
-msgid "Rules"
-msgstr "Regler"
-
-#: filter/rule-editor.c:240
-msgid "Add Rule"
-msgstr "Lägg till regel"
-
-#: filter/rule-editor.c:299
-msgid "Edit Rule"
-msgstr "Redigera regel"
-
-#: filter/score-editor.c:130
-msgid "Score Rules"
-msgstr "Poängregler"
-
-#: mail/component-factory.c:336
-msgid "Cannot initialize Evolution's mail component."
-msgstr "Kan inte initiera Evolutions e-postkomponent."
-
-#: mail/component-factory.c:409
-msgid "Cannot register storage with shell"
-msgstr "Kan inte registrera lager hos skal"
-
-#: mail/folder-browser.c:268
-msgid "Store search as vFolder"
-msgstr "Lagra sökning som vMapp"
-
-#: mail/folder-browser.c:576 ui/evolution-mail.xml.h:91
-msgid "VFolder on _Subject"
-msgstr "Virtuell mapp på _ämnesrad"
-
-#: mail/folder-browser.c:579 ui/evolution-mail.xml.h:89
-msgid "VFolder on Se_nder"
-msgstr "Virtuell mapp på _avsändare"
-
-#: mail/folder-browser.c:582 ui/evolution-mail.xml.h:90
-msgid "VFolder on _Recipients"
-msgstr "Virtuell mapp på _mottagare"
-
-#: mail/folder-browser.c:585 ui/evolution-mail.xml.h:88
-msgid "VFolder on Mailing _List"
-msgstr "Virtuell mapp på sänd_lista"
-
-#: mail/folder-browser.c:591
-msgid "Filter on Sub_ject"
-msgstr "Filtrera på _ämnesrad"
-
-#: mail/folder-browser.c:594
-msgid "Filter on Sen_der"
-msgstr "Filtrera på _avsändare"
-
-#: mail/folder-browser.c:597
-msgid "Filter on Re_cipients"
-msgstr "Filtrera på _mottagare"
-
-#: mail/folder-browser.c:600
-msgid "Filter on _Mailing List"
-msgstr "Filtrera på sä_ndlista"
-
-#: mail/folder-browser.c:609
-msgid "_Open"
-msgstr "_Öppna"
-
-#: mail/folder-browser.c:611
-msgid "Resend"
-msgstr "Skicka om"
-
-#: mail/folder-browser.c:613 ui/evolution-calendar.xml.h:43
-#: ui/evolution-mail.xml.h:113 ui/evolution-tasks.xml.h:8
-msgid "_Save As..."
-msgstr "_Spara som..."
-
-#: mail/folder-browser.c:615 ui/evolution-event-editor.xml.h:69
-#: ui/evolution-task-editor-dialog.xml.h:82 ui/evolution-tasks.xml.h:7
-msgid "_Print"
-msgstr "Skriv _ut"
-
-#: mail/folder-browser.c:620
-msgid "_Reply to Sender"
-msgstr "Sva_ra till avsändaren"
-
-#: mail/folder-browser.c:622 ui/evolution-mail.xml.h:66
-msgid "Reply to _All"
-msgstr "Svara till _alla"
-
-#: mail/folder-browser.c:624 ui/evolution-mail.xml.h:102
-msgid "_Forward"
-msgstr "_Vidarebefordra"
-
-#: mail/folder-browser.c:626
-msgid "Forward _inline"
-msgstr "Vidarebefordra _inuti"
-
-#: mail/folder-browser.c:629 ui/evolution-mail.xml.h:40
-msgid "Mar_k as Read"
-msgstr "Mär_k som läst"
-
-#: mail/folder-browser.c:631 ui/evolution-mail.xml.h:44
-msgid "Mark as U_nread"
-msgstr "Markera som _oläst"
-
-#: mail/folder-browser.c:636 ui/evolution-mail.xml.h:107
-msgid "_Move to Folder..."
-msgstr "_Flytta till mapp..."
-
-#: mail/folder-browser.c:638 ui/evolution-mail.xml.h:96
-msgid "_Copy to Folder..."
-msgstr "_Kopiera till mapp..."
-
-#: mail/folder-browser.c:642 ui/evolution-mail.xml.h:118
-msgid "_Undelete"
-msgstr "_Ångra borttagning"
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:652 ui/evolution-mail.xml.h:1
-msgid "Apply Filters"
-msgstr "Tillämpa filter"
-
-#: mail/folder-browser.c:656
-msgid "Create Ru_le From Message"
-msgstr "Skapa rege_l från meddelande"
-
-#: mail/folder-browser.c:795
-msgid "Filter on Mailing List"
-msgstr "Filtrera på sändlista"
-
-#: mail/folder-browser.c:796
-msgid "VFolder on Mailing List"
-msgstr "Virtuell mapp på sändlista"
-
-#: mail/folder-browser.c:798
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr "Filtrera på sändlista (%s)"
-
-#: mail/folder-browser.c:799
-#, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr "Virtuell mapp på sändlista (%s)"
-
-#: mail/folder-browser-factory.c:213
-#, c-format
-msgid "Properties for \"%s\""
-msgstr "Egenskaper för \"%s\""
-
-#: mail/folder-browser-factory.c:215 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-msgid "Properties"
-msgstr "Egenskaper"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr "Evolutionkomponenten för hantering av e-post."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-msgid "Evolution mail composer."
-msgstr "Evolutions e-postredigerare."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-msgid "Evolution mail executive summary component."
-msgstr "Evolutions e-postsammanfattningskomponent."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-msgid "Evolution mail folder display component."
-msgstr "Evolutions e-postvisningskomponent."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-msgid "Evolution mail folder factory component."
-msgstr "Fabrik för Evolutions e-postmappkomponent."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-msgid "Factory for the Evolution composer."
-msgstr "Fabrik för Evolutions e-postredigerare."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-msgid "Factory for the Evolution mail component."
-msgstr "Fabrik för Evolutions e-postkomponent."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-msgid "Factory for the Mail Summary component."
-msgstr "Fabrik för e-postsammanfattningskomponenten."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:9
-msgid "Mail configuration interface"
-msgstr "Gränssnitt för e-postkonfiguration"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:1
-msgid "Factory to import mbox into Evolution"
-msgstr "Fabrik för import av brevlåda (mbox) till Evolution"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:2
-msgid "Imports mbox files into Evolution"
-msgstr "Importerar brevlådefiler (mbox-filer) till Evolution"
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:1
-msgid "Factory to import Outlook Express 4 mails into Evolution"
-msgstr "Fabrik för import av Outlook Express 4-post till Evolution"
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:2
-msgid "Imports Outlook Express 4 files into Evolution"
-msgstr "Importerar Outlook Express 4-filer till Evolution"
-
-#: mail/local-config.glade.h:1
-msgid "Current store format:"
-msgstr "Aktuellt lagringsformat:"
-
-#: mail/local-config.glade.h:2
-msgid "Mailbox Format"
-msgstr "Brevlådeformat"
-
-#: mail/local-config.glade.h:3
-msgid "New store format:"
-msgstr "Nytt lagringsformat:"
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-"Notera: När du konverterar mellan brevlådeformat, kan ett fel\n"
-"(såsom utrymmesbrist på disken) inte automatiskt rättas till.\n"
-"Använd denna finess med försiktighet."
-
-#: mail/local-config.glade.h:7
-msgid "maildir"
-msgstr "maildir"
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr "mbox"
-
-#: mail/local-config.glade.h:9
-msgid "mh"
-msgstr "mh"
-
-#: mail/mail-account-editor.c:105
-msgid "You have not filled in all of the required information."
-msgstr "Du har inte fyllt i all nödvändig information."
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:173
-msgid "Evolution Account Editor"
-msgstr "Evolutions kontoredigerare"
-
-#: mail/mail-accounts.c:121 mail/mail-accounts.c:165
-msgid " (default)"
-msgstr " (standard)"
-
-#: mail/mail-accounts.c:197
-msgid "Disable"
-msgstr "Stäng av"
-
-#: mail/mail-accounts.c:199 mail/mail-config.glade.h:25
-msgid "Enable"
-msgstr "Slå på"
-
-#: mail/mail-accounts.c:280 mail/mail-accounts.c:284
-msgid "Are you sure you want to delete this account?"
-msgstr "Är du säker på att du vill ta bort detta konto?"
-
-#: mail/mail-accounts.c:418 mail/mail-accounts.c:422
-msgid "Are you sure you want to delete this news account?"
-msgstr "Är du säker på att du vill ta bort detta diskussionsgruppskonto?"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:536
-msgid "Evolution Account Manager"
-msgstr "Evolutions kontohanterare"
-
-#: mail/mail-autofilter.c:70
-#, c-format
-msgid "Mail to %s"
-msgstr "Skicka e-post till %s"
-
-#: mail/mail-autofilter.c:213
-#, c-format
-msgid "Subject is %s"
-msgstr "Ämnesraden är %s"
-
-#: mail/mail-autofilter.c:229
-#, c-format
-msgid "Mail from %s"
-msgstr "Hämta e-post från %s"
-
-#: mail/mail-autofilter.c:285
-#, c-format
-msgid "%s mailing list"
-msgstr "Sändlistan %s"
-
-#: mail/mail-autofilter.c:335 mail/mail-autofilter.c:356
-msgid "Add Filter Rule"
-msgstr "Lägg till filterregel"
-
-#: mail/mail-callbacks.c:96
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-"Du har inte konfigurerat e-postklienten.\n"
-"Du måste göra detta innan du kan skicka,\n"
-"ta emot eller skriva nya brev.\n"
-"Vill du konfigurera det nu?"
-
-#: mail/mail-callbacks.c:149
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-"Du måste konfigurera en identititet\n"
-"innan du kan skriva brev."
-
-#: mail/mail-callbacks.c:161
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-"Du måste konfigurera en e-posttransport\n"
-"innan du kan skriva brev."
-
-#: mail/mail-callbacks.c:205
-msgid "You have not set a mail transport method"
-msgstr "Du har inte angivit någon e-posttransportmetod"
-
-#: mail/mail-callbacks.c:238
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-"Detta meddelande har ingen ämnesrad.\n"
-"Vill du verkligen skicka?"
-
-#: mail/mail-callbacks.c:311
-msgid "You must specify recipients in order to send this message."
-msgstr "Du måste ange mottagare för att kunna skicka detta meddelande."
-
-#: mail/mail-callbacks.c:354
-msgid "You must configure an account before you can send this email."
-msgstr "Du måste konfigurera ett konto innan du kan skicka brevet."
-
-#: mail/mail-callbacks.c:593
-#, c-format
-msgid "On %s, %s wrote:"
-msgstr "Den %s skrev %s:"
-
-#: mail/mail-callbacks.c:774
-msgid "Forwarded message:\n"
-msgstr "Vidarebefordrat meddelande:\n"
-
-#: mail/mail-callbacks.c:877
-msgid "Move message(s) to"
-msgstr "Flytta meddelande(n) till"
-
-#: mail/mail-callbacks.c:879
-msgid "Copy message(s) to"
-msgstr "Kopiera meddelande(n) till"
-
-#: mail/mail-callbacks.c:1156
-#, c-format
-msgid "Are you sure you want to edit all %d messages?"
-msgstr "Är du säker på att du vill redigera alla %d meddelanden?"
-
-#: mail/mail-callbacks.c:1178
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-"Du kan bara redigera meddelanden\n"
-"som du sparat i mappen Drafts."
-
-#: mail/mail-callbacks.c:1212
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-"Du kan bara skicka om meddelanden\n"
-"som du sparat i mappen Sent."
-
-#: mail/mail-callbacks.c:1224
-#, c-format
-msgid "Are you sure you want to resend all %d messages?"
-msgstr "Är du säker på att du vill skicka om alla %d meddelanden?"
-
-#: mail/mail-callbacks.c:1245
-msgid "No Message Selected"
-msgstr "Inget meddelande markerat"
-
-#: mail/mail-callbacks.c:1271 mail/mail-display.c:90
-msgid "Overwrite file?"
-msgstr "Skriv över fil?"
-
-#: mail/mail-callbacks.c:1275 mail/mail-display.c:94
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-"Det finns redan en fil med det namnet.\n"
-"Ska den skrivas över?"
-
-#: mail/mail-callbacks.c:1319
-msgid "Save Message As..."
-msgstr "Spara meddelande som..."
-
-#: mail/mail-callbacks.c:1321
-msgid "Save Messages As..."
-msgstr "Spara meddelanden som..."
-
-#: mail/mail-callbacks.c:1456
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-"Fel vid läsning av filterinformation:\n"
-"%s"
-
-#: mail/mail-callbacks.c:1466
-msgid "Filters"
-msgstr "Filter"
-
-#: mail/mail-callbacks.c:1507 ui/evolution-mail.xml.h:56
-msgid "Print Message"
-msgstr "Skriv ut meddelande"
-
-#: mail/mail-callbacks.c:1554
-msgid "Printing of message failed"
-msgstr "Utskrift av meddelande misslyckades"
-
-#: mail/mail-callbacks.c:1632
-#, c-format
-msgid "Are you sure you want to open all %d messages in separate windows?"
-msgstr ""
-"Är du säker på att du vill öppna alla %d meddelanden i separata fönster?"
-
-#: mail/mail-config.c:1127 mail/mail-config.c:1130
-msgid "Connecting to server..."
-msgstr "Ansluter till server..."
-
-#: mail/mail-config-druid.c:99
-msgid ""
-"Please enter your name and email address below. The \"optional\" fields "
-"below do not need to be filled in, unless you wish to include this "
-"information in email you send."
-msgstr ""
-"Ange ditt namn och din e-postadress nedan. De \"valfria\" fälten nedan "
-"behöver du inte fylla i såvida du inte vill inkludera denna information i "
-"den e-post som du skickar."
-
-#: mail/mail-config-druid.c:101
-msgid ""
-"Please enter information about your incoming mail server below. If you don't "
-"know what kind of server you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"Ange information om din server för inkommande e-post nedan. Om du inte vet "
-"vad för server du använder kan du kontakta din systemadministratör eller din "
-"Internetleverantör."
-
-#: mail/mail-config-druid.c:105
-msgid ""
-"Please enter information about your outgoing mail protocol below. If you "
-"don't know which protocol you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"Var vänlig och ange information om din server för utgående e-post nedan. Om "
-"du inte vet vad för protokoll du använder kan du kontakta din "
-"systemadministratör eller Internetleverantör."
-
-#: mail/mail-config-druid.c:107
-msgid ""
-"You are almost done with the mail configuration process. The identity, "
-"incoming mail server and outgoing mail transport method which you provided "
-"will be grouped together to make an Evolution mail account. Please enter a "
-"name for this account in the space below. This name will be used for display "
-"purposes only."
-msgstr ""
-"Du är nästan färdig med din e-postkonfiguration. Identiteten, den inkommande "
-"e-postservern och transportmetoden för utgående e-post som du angav kommer "
-"att sammanställas för att skapa ett Evolution-epostkonto. Ange ett namn för "
-"detta konto nedan. Detta namn kommer endast att användas för visning."
-
-#. set window title
-#: mail/mail-config-druid.c:445
-msgid "Evolution Account Wizard"
-msgstr "Kontoguide för Evolution"
-
-#: mail/mail-config.glade.h:1
-msgid " Check for supported types "
-msgstr " Kontrollera vilka typer som stöds "
-
-#: mail/mail-config.glade.h:2
-msgid " color"
-msgstr " färg"
-
-#: mail/mail-config.glade.h:3
-msgid "Account"
-msgstr "Konto"
-
-#: mail/mail-config.glade.h:4
-msgid "Account Information"
-msgstr "Kontoinformation"
-
-#: mail/mail-config.glade.h:5
-msgid "Account Management"
-msgstr "Kontohantering"
-
-#: mail/mail-config.glade.h:6
-msgid "Accounts"
-msgstr "Konton"
-
-#: mail/mail-config.glade.h:8
-msgid "Authentication"
-msgstr "Autentisering"
-
-#: mail/mail-config.glade.h:9
-msgid "Authentication Type: "
-msgstr "Autentiseringstyp: "
-
-# Låter konstigt
-#: mail/mail-config.glade.h:10
-msgid "Automatically check for new mail every"
-msgstr "Kontrollera ny e-post var"
-
-#: mail/mail-config.glade.h:12
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-"Grattis, din e-postkonfiguration är nu klar.\n"
-"\n"
-"Du kan nu skicka och ta emot e-post med Evolution.\n"
-"\n"
-"Klicka på \"Slutför\" för att spara dina inställningar."
-
-#: mail/mail-config.glade.h:18
-msgid "De_fault"
-msgstr "Sta_ndard"
-
-#: mail/mail-config.glade.h:20
-msgid "Done"
-msgstr "Klar"
-
-#: mail/mail-config.glade.h:21
-msgid "Drafts"
-msgstr "Mallar"
-
-#: mail/mail-config.glade.h:22
-msgid "Drafts folder:"
-msgstr "Mallmapp:"
-
-#: mail/mail-config.glade.h:24
-msgid "Email Address:"
-msgstr "E-postadress:"
-
-#: mail/mail-config.glade.h:26
-msgid "Full Name:"
-msgstr "Fullständigt namn:"
-
-#: mail/mail-config.glade.h:27
-msgid "Highlight citations with "
-msgstr "Markera citat med "
-
-#: mail/mail-config.glade.h:29
-msgid "IMAPv4 "
-msgstr "IMAPv4 "
-
-#: mail/mail-config.glade.h:30
-msgid "Identity"
-msgstr "Identitet"
-
-#: mail/mail-config.glade.h:31
-msgid "Kerberos "
-msgstr "Kerberos "
-
-#: mail/mail-config.glade.h:32
-msgid "Mail Configuration"
-msgstr "E-postkonfiguration"
-
-#: mail/mail-config.glade.h:33
-msgid "Make this my default account"
-msgstr "Gör detta till mitt standardkonto"
-
-#: mail/mail-config.glade.h:34
-msgid "Mark messages as \"Read\" after:"
-msgstr "Markera meddelanden som \"Läst\" efter: "
-
-#: mail/mail-config.glade.h:36
-msgid "News"
-msgstr "Diskussionsgrupper"
-
-#: mail/mail-config.glade.h:38
-msgid "Optional Information"
-msgstr "Valfri information"
-
-#: mail/mail-config.glade.h:39
-msgid "Organization:"
-msgstr "Organisation:"
-
-#: mail/mail-config.glade.h:41
-msgid "PGP binary path:"
-msgstr "Sökväg till PGP-programmet:"
-
-#: mail/mail-config.glade.h:46
-msgid "Qmail maildir "
-msgstr "Qmail-epostkatalog "
-
-#: mail/mail-config.glade.h:47
-msgid "Receiving Email"
-msgstr "Tar emot e-post"
-
-#: mail/mail-config.glade.h:48
-msgid "Receiving Mail"
-msgstr "Tar emot e-post"
-
-#: mail/mail-config.glade.h:49
-msgid "Receiving Options"
-msgstr "Alternativ för mottagning"
-
-#: mail/mail-config.glade.h:51
-msgid "Required Information"
-msgstr "Obligatorisk information"
-
-#: mail/mail-config.glade.h:53
-msgid "Select PGP binary"
-msgstr "Välj PGP-program"
-
-#: mail/mail-config.glade.h:54
-msgid "Send mail in HTML format by default."
-msgstr "Skicka brev i HTML-format som standard."
-
-#: mail/mail-config.glade.h:55
-msgid "Sending Email"
-msgstr "Skickar e-post"
-
-#: mail/mail-config.glade.h:56
-msgid "Sending Mail"
-msgstr "Skickar e-post"
-
-#: mail/mail-config.glade.h:58
-msgid "Sent"
-msgstr "Skickat"
-
-#: mail/mail-config.glade.h:59
-msgid "Sent and Draft Messages"
-msgstr "Skickade meddelanden och mallar"
-
-#: mail/mail-config.glade.h:60
-msgid "Sent messages folder:"
-msgstr "Mapp för skickade meddelanden:"
-
-#: mail/mail-config.glade.h:61
-msgid "Server Configuration"
-msgstr "Serverkonfiguration"
-
-#: mail/mail-config.glade.h:62
-msgid "Server Type: "
-msgstr "Servertyp: "
-
-#: mail/mail-config.glade.h:63
-msgid "Server requires authentication"
-msgstr "Servern kräver autentisering"
-
-#: mail/mail-config.glade.h:64
-msgid "Signature file:"
-msgstr "Signaturfil:"
-
-#: mail/mail-config.glade.h:65
-msgid "Sources"
-msgstr "Källor"
-
-#: mail/mail-config.glade.h:66
-msgid "Special Folders"
-msgstr "Specialmappar"
-
-#: mail/mail-config.glade.h:67
-msgid "Standard Unix mbox"
-msgstr "Standard Unix-brevlåda"
-
-#: mail/mail-config.glade.h:68
-msgid "Type"
-msgstr "Typ"
-
-#: mail/mail-config.glade.h:69
-msgid "Use secure connection (SSL)"
-msgstr "Använd säker anslutning (SSL)"
-
-#: mail/mail-config.glade.h:70
-msgid "Username:"
-msgstr "Användarnamn:"
-
-#: mail/mail-config.glade.h:71
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-"Välkommen till Evolutions guide för e-postkonfiguration.\n"
-"\n"
-"Klicka på \"Nästa\" för att börja. "
-
-#: mail/mail-config.glade.h:76 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:43 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:32
-msgid "_Edit"
-msgstr "R_edigera"
-
-#: mail/mail-display.c:194
-msgid "Save Attachment"
-msgstr "Spara bilaga"
-
-#: mail/mail-display.c:234
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr "Kunde inte skapa temporär katalog: %s"
-
-#: mail/mail-display.c:295
-msgid "Save to Disk..."
-msgstr "Spara till disk..."
-
-#: mail/mail-display.c:297
-#, c-format
-msgid "Open in %s..."
-msgstr "Öppna i %s..."
-
-#: mail/mail-display.c:299
-msgid "View Inline"
-msgstr "Visa inuti"
-
-#: mail/mail-display.c:334
-msgid "External Viewer"
-msgstr "Externt visningsprogram"
-
-#: mail/mail-display.c:357
-#, c-format
-msgid "View Inline (via %s)"
-msgstr "Visa inuti (med %s)"
-
-#: mail/mail-display.c:361
-msgid "Hide"
-msgstr "Göm"
-
-#: mail/mail-display.c:1107
-msgid "Open link in browser"
-msgstr "Öppna länk i webbläsare"
-
-#: mail/mail-display.c:1109
-msgid "Save as (FIXME)"
-msgstr "Spara som (FIXME)"
-
-#: mail/mail-display.c:1111
-msgid "Copy location (FIXME)"
-msgstr "Kopiera plats (FIXME)"
-
-#: mail/mail-format.c:522
-#, c-format
-msgid "%s attachment"
-msgstr "%s-bilaga"
-
-#: mail/mail-format.c:564
-msgid "Could not parse MIME message. Displaying as source."
-msgstr "Kunde inte tolka MIME-meddelande. Visar som källa."
-
-#: mail/mail-format.c:771
-msgid "Loading message content"
-msgstr "Läser in meddelandeinnehåll"
-
-#: mail/mail-format.c:1080
-msgid "No GPG/PGP program configured."
-msgstr "Inget GPG/PGP-program är konfigurerat."
-
-#: mail/mail-format.c:1095
-msgid "Encrypted message not displayed"
-msgstr "Krypterat meddelande visas inte"
-
-#: mail/mail-format.c:1101
-msgid "Encrypted message"
-msgstr "Krypterat meddelande"
-
-#: mail/mail-format.c:1102
-msgid "Click icon to decrypt."
-msgstr "Klicka på ikonen för att dekryptera."
-
-#: mail/mail-format.c:1192 mail/mail-format.c:1580
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr "Detta meddelande är digitalt signerat och har befunnits äkta."
-
-#: mail/mail-format.c:1200 mail/mail-format.c:1588
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr "Detta meddelande är digitalt signerat men äktheten kan inte bevisas."
-
-#: mail/mail-format.c:1801
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr "Pekare till FTP-plats (%s)"
-
-#: mail/mail-format.c:1813
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr "Pekare till lokal fil (%s) giltig på platsen \"%s\""
-
-#: mail/mail-format.c:1817
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr "Pekare till lokal fil (%s)"
-
-#: mail/mail-format.c:1851
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr "Pekare till okänd extern data (typen \"%s\")"
-
-#: mail/mail-format.c:1856
-msgid "Malformed external-body part."
-msgstr "Felaktig del med extern meddelandetext."
-
-#: mail/mail-local.c:509
-#, c-format
-msgid "Opening '%s'"
-msgstr "Öppnar \"%s\""
-
-#: mail/mail-local.c:787
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr "Byter format på mappen \"%s\" till \"%s\""
-
-#: mail/mail-local.c:791
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr "Byt format på mappen \"%s\" till \"%s\""
-
-#: mail/mail-local.c:814
-msgid "Reconfiguring folder"
-msgstr "Omkonfigurerar mapp"
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:843
-msgid "Closing current folder"
-msgstr "Stänger aktuell mapp"
-
-#: mail/mail-local.c:875
-msgid "Renaming old folder and opening"
-msgstr "Byter namn på gammal mapp och öppnar"
-
-#: mail/mail-local.c:893
-msgid "Creating new folder"
-msgstr "Skapar ny mapp"
-
-#: mail/mail-local.c:907
-msgid "Copying messages"
-msgstr "Kopierar meddelanden"
-
-#: mail/mail-local.c:924
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-"Kan inte spara metadata för mapp; du kommer antagligen att\n"
-"upptäcka att du inte kan öppna denna mapp längre: %s"
-
-#: mail/mail-local.c:963
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-"Om du inte längre kan öppna denna brevlåda måste\n"
-"du kanske reparera den manuellt."
-
-#: mail/mail-mt.c:190
-#, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-"Fel vid \"%s\":\n"
-"%s"
-
-#: mail/mail-mt.c:193
-#, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-"Fel vid utförande av operation:\n"
-"%s"
-
-#: mail/mail-mt.c:516 mail/mail-mt.c:545 mail/mail-mt.c:880
-msgid "Working"
-msgstr "Jobbar"
-
-#: mail/mail-mt.c:862
-msgid "Evolution progress"
-msgstr "Evolutionförlopp"
-
-#: mail/mail-ops.c:599
-#, c-format
-msgid "Sending \"%s\""
-msgstr "Skickar \"%s\""
-
-#: mail/mail-ops.c:603
-msgid "Sending message"
-msgstr "Skickar meddelande"
-
-#: mail/mail-ops.c:718
-#, c-format
-msgid "Sending message %d of %d"
-msgstr "Skickar meddelande %d av %d"
-
-#: mail/mail-ops.c:737
-#, c-format
-msgid "Failed on message %d of %d"
-msgstr "Meddelande %d av %d misslyckades"
-
-#: mail/mail-ops.c:739 mail/mail-send-recv.c:475
-msgid "Complete."
-msgstr "Färdig."
-
-#: mail/mail-ops.c:825
-msgid "Saving message to folder"
-msgstr "Sparar meddelande till mappen"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Moving messages to %s"
-msgstr "Flyttar meddelanden till %s"
-
-#: mail/mail-ops.c:898
-#, c-format
-msgid "Copying messages to %s"
-msgstr "Kopierar meddelanden till %s"
-
-#: mail/mail-ops.c:914
-msgid "Moving"
-msgstr "Flyttar"
-
-#: mail/mail-ops.c:917
-msgid "Copying"
-msgstr "Kopierar"
-
-#: mail/mail-ops.c:992
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr "Genomsöker mappar i \"%s\""
-
-#: mail/mail-ops.c:1154
-msgid "Forwarded messages"
-msgstr "Vidarebefordrade meddelanden"
-
-#: mail/mail-ops.c:1195 mail/mail-ops.c:1333
-#, c-format
-msgid "Opening folder %s"
-msgstr "Öppnar mappen %s"
-
-#: mail/mail-ops.c:1262
-#, c-format
-msgid "Opening store %s"
-msgstr "Öppnar lagringsutrymmet %s"
-
-#: mail/mail-ops.c:1449
-msgid "Expunging folder"
-msgstr "Tömmer mapp"
-
-#: mail/mail-ops.c:1498
-#, c-format
-msgid "Retrieving message %s"
-msgstr "Hämtar meddelande %s"
-
-#: mail/mail-ops.c:1565
-msgid "Retrieving messages"
-msgstr "Hämtar meddelanden"
-
-#: mail/mail-ops.c:1575
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr "Hämtar meddelande nummer %d av %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1649
-msgid "Saving messages"
-msgstr "Sparar meddelanden"
-
-#: mail/mail-ops.c:1728
-#, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr ""
-"Kan inte spara utdatafilen: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1741
-#, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr "Sparar meddelande %d av %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1755
-#, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr ""
-"Fel vid sparande av meddelanden till: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1829
-msgid "Saving attachment"
-msgstr "Sparar bilaga"
-
-#: mail/mail-ops.c:1844
-#, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr ""
-"Kan inte skapa utdatafil: %s:\n"
-" %s"
-
-#: mail/mail-ops.c:1872
-#, c-format
-msgid "Could not write data: %s"
-msgstr "Kunde inte skriva data: %s"
-
-#: mail/mail-ops.c:1939
-#, c-format
-msgid "Disconnecting from %s"
-msgstr "Kopplar från %s"
-
-#: mail/mail-search-dialogue.c:113
-msgid "_Search"
-msgstr "_Sök"
-
-#: mail/mail-search.c:167
-#, c-format
-msgid "Search \"%s\""
-msgstr "Sök i \"%s\""
-
-#: mail/mail-search.c:169
-msgid "Search Untitled Message"
-msgstr "Sök namnlöst meddelande"
-
-#: mail/mail-search.c:184
-msgid "Case Sensitive"
-msgstr "Gör skillnad på gemener/VERSALER"
-
-#: mail/mail-search.c:185
-msgid "Search Forward"
-msgstr "Sök vidare"
-
-#: mail/mail-search.c:192
-msgid "Find:"
-msgstr "Sök:"
-
-#: mail/mail-send-recv.c:138
-msgid "Cancelling..."
-msgstr "Avbryter..."
-
-#: mail/mail-send-recv.c:233
-msgid "Send & Receive mail"
-msgstr "Skicka och ta emot e-post"
-
-#: mail/mail-send-recv.c:236
-msgid "Receiving"
-msgstr "Tar emot"
-
-#: mail/mail-send-recv.c:285
-msgid "Updating..."
-msgstr "Uppdaterar..."
-
-#: mail/mail-send-recv.c:287 mail/mail-send-recv.c:333
-msgid "Waiting..."
-msgstr "Väntar..."
-
-#: mail/mail-send-recv.c:306
-msgid "Sending"
-msgstr "Skickar"
-
-#: mail/mail-send-recv.c:471
-msgid "Cancelled."
-msgstr "Avbruten."
-
-#: mail/mail-summary.c:110
-msgid "Incomplete message written on pipe!"
-msgstr "Inkomplett meddelande skrevs på rör!"
-
-#: mail/mail-summary.c:468
-msgid "Mail Summary"
-msgstr "E-postsammanfattning"
-
-#: mail/mail-tools.c:141
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr "Kunde inte skapa temporärt meddelandefält \"%s\": %s"
-
-#: mail/mail-tools.c:188
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr "[%s] (vidarebefordrat meddelande)"
-
-#: mail/mail-tools.c:198
-msgid "Fwd: (no subject)"
-msgstr "Fwd: (inget ämne)"
-
-#: mail/mail-tools.c:215
-#, c-format
-msgid "Forwarded message - %s"
-msgstr "Vidarebefordrat meddelande - %s"
-
-#: mail/mail-tools.c:217
-msgid "Forwarded message (no subject)"
-msgstr "Vidarebefordrat meddelande (inget ämne)"
-
-#: mail/mail-tools.c:424
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-msgstr ""
-"-----Vidarebefordrat meddelande-----<br><b>Fr&aring;n:</b> "
-"%s<br><b>Till:</b> %s<br><b>&Auml;mne:</b> %s<br>"
-
-#: mail/mail-vfolder.c:249
-msgid "VFolders"
-msgstr "Virtuella mappar"
-
-#: mail/mail-vfolder.c:426
-msgid "New VFolder"
-msgstr "Ny virtuell mapp"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/message-browser.c:189 ui/evolution-mail.xml.h:64
-msgid "Reply"
-msgstr "Svara"
-
-#: mail/message-browser.c:189 ui/evolution-mail.xml.h:70
-msgid "Reply to the sender of this message"
-msgstr "Svara till avsändaren av det här meddelandet"
-
-#: mail/message-browser.c:192 ui/evolution-mail.xml.h:65
-msgid "Reply to All"
-msgstr "Svara till alla"
-
-#: mail/message-browser.c:192 ui/evolution-mail.xml.h:68
-msgid "Reply to all recipients of this message"
-msgstr "Svara till alla mottagare av det här meddelandet"
-
-#: mail/message-browser.c:195 ui/evolution-mail.xml.h:25
-msgid "Forward"
-msgstr "Vidarebefordra"
-
-#: mail/message-browser.c:195 ui/evolution-mail.xml.h:29
-msgid "Forward this message"
-msgstr "Vidarebefordra detta meddelande"
-
-#: mail/message-browser.c:200 ui/evolution-mail.xml.h:61
-msgid "Print the selected message"
-msgstr "Skriv ut det markerade meddelandet"
-
-#: mail/message-browser.c:203 ui/evolution-mail.xml.h:13
-msgid "Delete this message"
-msgstr "Ta bort detta meddelande"
-
-#: mail/message-browser.c:208 ui/evolution-event-editor.xml.h:33
-#: ui/evolution-mail.xml.h:54 ui/evolution-task-editor-dialog.xml.h:36
-msgid "Previous"
-msgstr "Föregående"
-
-#: mail/message-browser.c:208
-msgid "Previous message"
-msgstr "Föregående meddelande"
-
-#: mail/message-browser.c:211 ui/evolution-calendar.xml.h:18
-#: ui/evolution-event-editor.xml.h:29 ui/evolution-mail.xml.h:50
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "Next"
-msgstr "Nästa"
-
-#: mail/message-browser.c:211
-msgid "Next message"
-msgstr "Nästa meddelande"
-
-#: mail/message-list.c:682
-msgid "Unseen"
-msgstr "Oläst"
-
-#: mail/message-list.c:683
-msgid "Seen"
-msgstr "Läst"
-
-#: mail/message-list.c:684
-msgid "Answered"
-msgstr "Besvarad"
-
-#: mail/message-list.c:685
-msgid "Multiple Unseen Messages"
-msgstr "Flera olästa meddelanden"
-
-#: mail/message-list.c:686
-msgid "Multiple Messages"
-msgstr "Flera meddelanden"
-
-#: mail/message-list.c:690
-msgid "Lowest"
-msgstr "Lägsta"
-
-#: mail/message-list.c:691
-msgid "Lower"
-msgstr "Lägre"
-
-#: mail/message-list.c:695
-msgid "Higher"
-msgstr "Högre"
-
-#: mail/message-list.c:696
-msgid "Highest"
-msgstr "Högsta"
-
-#: mail/message-list.c:946
-msgid "?"
-msgstr "?"
-
-#: mail/message-list.c:953
-msgid "Today %l:%M %p"
-msgstr "Idag %k.%M"
-
-#: mail/message-list.c:962
-msgid "Yesterday %l:%M %p"
-msgstr "Igår %k.%M"
-
-#: mail/message-list.c:974
-msgid "%a %l:%M %p"
-msgstr "%a %k.%M"
-
-#: mail/message-list.c:982
-msgid "%b %d %l:%M %p"
-msgstr "%d %b %k.%M"
-
-#: mail/message-list.c:984
-msgid "%b %d %Y"
-msgstr "%d %b %Y"
-
-#: mail/message-list.c:1086
-msgid "Flagged"
-msgstr "Flaggad"
-
-#: mail/message-list.c:1087
-msgid "From"
-msgstr "Från"
-
-#: mail/message-list.c:1087
-msgid "Date"
-msgstr "Datum"
-
-#: mail/message-list.c:1087
-msgid "Received"
-msgstr "Mottaget"
-
-#: mail/message-list.c:1088
-msgid "To"
-msgstr "Till"
-
-#: mail/message-list.c:1088
-msgid "Size"
-msgstr "Storlek"
-
-#: mail/mail-session.c:161
-msgid "User canceled operation."
-msgstr "Användaren avbröt åtgärden."
-
-#: mail/subscribe-dialog.c:76 shell/e-storage-set-view.c:47
-msgid "Folder"
-msgstr "Mapp"
-
-#: mail/subscribe-dialog.c:77
-msgid "Store"
-msgstr "Lagringsutrymme"
-
-#: mail/subscribe-dialog.c:138
-msgid "Display folders starting with:"
-msgstr "Visa mappar som börjar med:"
-
-#: mail/subscribe-dialog.c:168
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr "Hämtar lagringsutrymme för \"%s\""
-
-#: mail/subscribe-dialog.c:271
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr "Prenumerar på mappen \"%s\""
-
-#: mail/subscribe-dialog.c:273
-#, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr "Säger upp prenumeration på mappen \"%s\""
-
-#. Construct the app
-#: mail/subscribe-dialog.c:873
-msgid "Manage Subscriptions"
-msgstr "Hantera prenumerationer"
-
-#: shell/e-setup.c:118 shell/e-setup.c:191
-msgid "Evolution installation"
-msgstr "Evolution-installation"
-
-#: shell/e-setup.c:122
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-"Denna nya version av Evolution måste installera ytterligare filer\n"
-"i din personliga Evolutionkatalog"
-
-#: shell/e-setup.c:123
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr ""
-"Var vänlig och klicka på \"OK\" för att installera filerna, eller \"Avbryt\" "
-"för att avsluta."
-
-#: shell/e-setup.c:163
-msgid "Could not update files correctly"
-msgstr "Kunde inte uppdatera filerna korrekt"
-
-#: shell/e-setup.c:166 shell/e-setup.c:234
-msgid "Evolution files successfully installed."
-msgstr "Evolutionfilerna installerades utan problem."
-
-#: shell/e-setup.c:195
-msgid "This seems to be the first time you are running Evolution."
-msgstr "Detta verkar vara första gången du kör Evolution."
-
-#: shell/e-setup.c:196
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr ""
-"Var vänlig och klicka på \"OK\" för att installera Evolutions användarfiler i"
-
-#: shell/e-setup.c:215
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"Kan inte skapa katalogen\n"
-"%s\n"
-"Fel: %s"
-
-#: shell/e-setup.c:230
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-"Kan inte kopiera filer till\n"
-"\"%s\"."
-
-#: shell/e-setup.c:255
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-"Filen \"%s\" är ingen katalog.\n"
-"Var vänlig och flytta den så att installationen\n"
-"av Evolutions användarfiler kan genomföras."
-
-#: shell/e-setup.c:267
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-"Katalogen \"%s\" finns men är inte Evolution-\n"
-"katalogen. Var vänlig och flytta den så att\n"
-"Evolutions användarfiler kan installeras."
-
-#: shell/e-shell.c:388
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr "Kan inte lägga upp lokal plats för sparande -- %s"
-
-#: shell/e-shell.c:1273
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-"Hoppsan! Vyn för \"%s\" dog oväntat. :-(\n"
-"Det här betyder antagligen att komponenten %s har kraschat."
-
-#: shell/e-shell-folder-creation-dialog.c:99
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-"Kan inte skapa den angivna katalogen:\n"
-"%s"
-
-#: shell/e-shell-folder-creation-dialog.c:156
-msgid "The specified folder name is not valid."
-msgstr "Det angivna mappnamnet är inte giltigt."
-
-#: shell/e-shell-folder-creation-dialog.c:263
-msgid "Evolution - Create new folder"
-msgstr "Evolution - Skapa ny mapp"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-"Den valda typen av mapp är inte giltig för\n"
-"den begärda åtgärden."
-
-#: shell/e-shell-folder-selection-dialog.c:321
-msgid "New..."
-msgstr "Ny..."
-
-#: shell/e-shell-folder-title-bar.c:459 shell/e-shell-folder-title-bar.c:460
-msgid "(Untitled)"
-msgstr "(Namnlös)"
-
-#: shell/e-shell-view.c:148
-msgid "(No folder displayed)"
-msgstr "(Ingen mapp visas)"
-
-#: shell/e-shell-view.c:1203
-#, c-format
-msgid "%s - Evolution %s"
-msgstr "%s - Evolution %s"
-
-#: shell/e-shell-view.c:1205
-#, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "%s - Evolution %s [%s]"
-
-#: shell/e-shell-view-menu.c:173
-msgid "Bug buddy was not found in your $PATH."
-msgstr "Bug-buddy hittades inte i din $PATH."
-
-#: shell/e-shell-view-menu.c:179
-msgid "Bug buddy could not be run."
-msgstr "Bug-buddy kunde inte köras."
-
-#: shell/e-shell-view-menu.c:208
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Copyright 1999, 2000, 2001 Ximian, Inc."
-
-#: shell/e-shell-view-menu.c:210
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-"Evolution är en svit av grupprogram\n"
-"för e-post, kalender- och kontakthantering\n"
-"inom Gnome-skrivbordsmiljön."
-
-#: shell/e-shell-view-menu.c:374
-msgid "Go to folder..."
-msgstr "Gå till mapp..."
-
-#: shell/e-shell-view-menu.c:562
-msgid "Work online"
-msgstr "Arbeta ansluten"
-
-#: shell/e-shell-view-menu.c:574 shell/e-shell-view-menu.c:586
-msgid "Work offline"
-msgstr "Arbeta frånkopplad"
-
-#: shell/e-shortcuts.c:381
-msgid "Error saving shortcuts."
-msgstr "Fel vid sparande av genvägar."
-
-#: shell/e-shortcuts-view.c:134
-msgid "Create new shortcut group"
-msgstr "Skapa en ny genvägsgrupp"
-
-#: shell/e-shortcuts-view.c:137
-msgid "Group name:"
-msgstr "Gruppnamn:"
-
-#: shell/e-shortcuts-view.c:260
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-"Vill du verkligen ta bort gruppen\n"
-"\"%s\" från genvägsraden?"
-
-#: shell/e-shortcuts-view.c:265
-msgid "Don't remove"
-msgstr "Ta inte bort"
-
-#: shell/e-shortcuts-view.c:276
-msgid "_Small Icons"
-msgstr "_Små ikoner"
-
-#: shell/e-shortcuts-view.c:277
-msgid "Show the shortcuts as small icons"
-msgstr "Visa genvägarna som små ikoner"
-
-#: shell/e-shortcuts-view.c:279
-msgid "_Large Icons"
-msgstr "S_tora ikoner"
-
-#: shell/e-shortcuts-view.c:280
-msgid "Show the shortcuts as large icons"
-msgstr "Visa genvägarna som stora ikoner"
-
-#: shell/e-shortcuts-view.c:291
-msgid "_New Group..."
-msgstr "_Ny grupp..."
-
-#: shell/e-shortcuts-view.c:292
-msgid "Create a new shortcut group"
-msgstr "Skapa en ny genvägsgrupp"
-
-#: shell/e-shortcuts-view.c:294
-msgid "_Remove This Group..."
-msgstr "Ta bo_rt denna grupp..."
-
-#: shell/e-shortcuts-view.c:295
-msgid "Remove this shortcut group"
-msgstr "Ta bort denna genvägsgrupp"
-
-#: shell/e-shortcuts-view.c:300
-msgid "_Hide the Shortcut Bar"
-msgstr "_Göm genvägsraden"
-
-#: shell/e-shortcuts-view.c:301
-msgid "Hide the shortcut bar"
-msgstr "_Visa genvägsraden"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate"
-msgstr "Aktivera"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate this shortcut"
-msgstr "Aktivera denna genväg"
-
-#: shell/e-shortcuts-view.c:388
-msgid "Remove this shortcut from the shortcut bar"
-msgstr "Ta bort denna genväg från genvägsraden"
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr "(Inget namn)"
-
-#: shell/e-storage.c:459
-msgid "No error"
-msgstr "Inga fel"
-
-#: shell/e-storage.c:461
-msgid "Generic error"
-msgstr "Allmänt fel"
-
-#: shell/e-storage.c:463
-msgid "A folder with the same name already exists"
-msgstr "En mapp med samma namn finns redan"
-
-#: shell/e-storage.c:465
-msgid "The specified folder type is not valid"
-msgstr "Den angivna mapptypen är inte giltig"
-
-#: shell/e-storage.c:467
-msgid "I/O error"
-msgstr "I/O-fel"
-
-#: shell/e-storage.c:469
-msgid "Not enough space to create the folder"
-msgstr "Inte tillräckligt med utrymme för att skapa mapp"
-
-#: shell/e-storage.c:471
-msgid "The specified folder was not found"
-msgstr "Den angivna mappen hittades inte"
-
-#: shell/e-storage.c:473
-msgid "Function not implemented in this storage"
-msgstr "Funktionen är ännu inte implementerad i detta lager"
-
-#: shell/e-storage.c:475
-msgid "Permission denied"
-msgstr "Åtkomst nekas"
-
-#: shell/e-storage.c:477
-msgid "Operation not supported"
-msgstr "Åtgärden stöds inte"
-
-#: shell/e-storage.c:479
-msgid "The specified type is not supported in this storage"
-msgstr "Den angivna typen stöds inte i detta lager"
-
-#: shell/e-storage-set-view.c:650 ui/evolution-event-editor.xml.h:76
-#: ui/evolution-message-composer.xml.h:53
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:46
-msgid "_View"
-msgstr "_Visa"
-
-#: shell/e-storage-set-view.c:650
-msgid "View the selected folder"
-msgstr "Visa den markade mappen"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-msgid "Folder name:"
-msgstr "Mappnamn:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-msgid "Folder type:"
-msgstr "Mapptyp:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-msgid "Specify where to create the folder:"
-msgstr "Ange var mappen ska skapas:"
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-msgid "The Evolution shell."
-msgstr "Evolutionskalet."
-
-#: shell/importer/importer.c:87
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-"Välj den fil som du vill importera till Evolution, och välj vilken typ av "
-"fil det är i listan.\n"
-"\n"
-"Du kan välja \"Automatisk\" om du inte vet, så kommer Evolution att försöka "
-"reda ut det."
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/importer/importer.c:182
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-"Importerar %s\n"
-"Importören är inte redo.\n"
-"Väntar 5 sekunder med nytt försök."
-
-#: shell/importer/importer.c:202 shell/importer/importer.c:233
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-"Importerar %s\n"
-"Importerar objekt %d."
-
-#: shell/importer/importer.c:341
-#, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr ""
-"Det finns ingen importör som kan hantera\n"
-"%s"
-
-#: shell/importer/importer.c:351
-msgid "Importing"
-msgstr "Importerar"
-
-#: shell/importer/importer.c:359
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-"Importerar %s.\n"
-"Startar %s"
-
-#: shell/importer/importer.c:372
-#, c-format
-msgid "Error starting %s"
-msgstr "Fel vid start av %s"
-
-#: shell/importer/importer.c:387
-#, c-format
-msgid "Error loading %s"
-msgstr "Fel vid inläsning av %s"
-
-#: shell/importer/importer.c:402
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-"Importerar %s\n"
-"Importerar objekt 1."
-
-#: shell/importer/importer.c:473
-msgid "Automatic"
-msgstr "Automatisk"
-
-#: shell/importer/importer.c:523
-msgid "Filename:"
-msgstr "Filnamn:"
-
-#: shell/importer/import.glade.h:5 shell/importer/importer.c:528
-msgid "Select a file"
-msgstr "Välj en fil"
-
-#: shell/importer/importer.c:538
-msgid "File type:"
-msgstr "Filtyp:"
-
-#: shell/importer/import.glade.h:4 shell/importer/importer.c:619
-msgid "Import"
-msgstr "Importera"
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr "Klicka på \"Importera\" för att börja importera filen till Evolution. "
-
-#: shell/importer/import.glade.h:2
-msgid "Evolution Import Utility"
-msgstr "Evolutions importverktyg"
-
-#: shell/importer/import.glade.h:3
-msgid "Evolution Importer Utility"
-msgstr "Evolutions importverktyg"
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-"Välkommen till Evolutions importverktyg.\n"
-"Denna guide kommer att hjälpa dig igenom processen med att\n"
-"importera externa filer till Evolution."
-
-#: shell/importer/intelligent.c:186
-msgid "Importers"
-msgstr "Importörer"
-
-#: shell/main.c:82
-#, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-"Hej. Tack för att du tog dig tiden att hämta denna FÖRHANDS-\n"
-"VERSION av grupprogramsviten Evolution.\n"
-"\n"
-"Evolution är inte färdigt än. Det börjar närma sig, men det\n"
-"finns platser där finesser antingen saknas eller endast fungerar\n"
-"delvis. Om du inte kan lista ut hur du ska göra någonting, beror\n"
-"det troligtvis på att det inte är implementerat än! :-)\n"
-"\n"
-"Vi hoppas att du kommer att tycka att Evolution är användbart,\n"
-"men vi känner fortfarande att vi måste varna dig att Evolution\n"
-"kan komma att: krascha, slarva bort din e-post, lämna överblivna\n"
-"processer körandes, förbruka 100% processortid, skicka felaktiga\n"
-"kommandon till dina e-postservrar, och i allmänhet göra dig till\n"
-"åtlöje framför dina vänner och arbetskamrater.\n"
-"Använd bara enligt ordinationen.\n"
-"\n"
-"Vi hoppas att du gläds åt resultatet av vårt hårda arbete, och vi\n"
-"inväntar med spänning dina bidrag!\n"
-
-#: shell/main.c:107
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-"Tack\n"
-"Evolution-teamet\n"
-
-#: shell/main.c:138
-msgid "Cannot initialize the Evolution shell."
-msgstr "Kan inte initiera Evolutionskalet."
-
-#: shell/main.c:184
-msgid "Disable splash screen"
-msgstr "Använd inte startbild"
-
-#: shell/main.c:185
-msgid "Send the debugging output of all components to a file."
-msgstr "Skicka felsökningsinformation från alla komponenter till en fil."
-
-#: shell/main.c:217
-msgid "Cannot initialize the Bonobo component system."
-msgstr "Kan inte initiera Bonobo-komponentsystemet."
-
-#: ui/evolution-addressbook.xml.h:2
-msgid "Create new contact"
-msgstr "Skapa ny kontakt"
-
-#: ui/evolution-addressbook.xml.h:4
-msgid "Delete a contact"
-msgstr "Ta bort en kontakt"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-msgid "Find"
-msgstr "Sök"
-
-#: ui/evolution-addressbook.xml.h:6
-msgid "Find a contact"
-msgstr "Sök efter en kontakt"
-
-#: ui/evolution-addressbook.xml.h:7
-msgid "New contact"
-msgstr "Ny kontakt"
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-mail.xml.h:53
-msgid "Previews the message to be printed"
-msgstr "Förhandsgranskar meddelandet som ska skrivas ut"
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "Print contacts"
-msgstr "Skriv ut kontakter"
-
-#: ui/evolution-addressbook.xml.h:12 ui/evolution-mail.xml.h:84
-msgid "Stop"
-msgstr "Stopp"
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "Stop Loading"
-msgstr "Stoppa inläsning"
-
-#: ui/evolution-addressbook.xml.h:14
-msgid "View All"
-msgstr "Visa alla"
-
-#: ui/evolution-addressbook.xml.h:15
-msgid "View all contacts"
-msgstr "Visa alla kontakter"
-
-#: ui/evolution-addressbook.xml.h:16
-msgid "_Addressbook Sources..."
-msgstr "_Adressbokskällor..."
-
-#: ui/evolution-addressbook.xml.h:17
-msgid "_Contact"
-msgstr "_Kontakt"
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-msgid "_Print..."
-msgstr "Skriv _ut..."
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr "_Sök kontakter"
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-mail.xml.h:117
-#: ui/evolution-task-editor-dialog.xml.h:88 ui/evolution.xml.h:45
-msgid "_Tools"
-msgstr "_Verktyg"
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr "5 dagar"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-msgid "Alter preferences"
-msgstr "Ändra inställningar"
-
-#: ui/evolution-calendar.xml.h:4
-msgid "Create a new all day Event"
-msgstr "Skapa ett nytt heldagsevenemang"
-
-#: ui/evolution-calendar.xml.h:5
-msgid "Create a new appointment"
-msgstr "Skapa ett nytt möte"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr "Skapa en ny kalender"
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr "Dag"
-
-#: ui/evolution-calendar.xml.h:8
-msgid "Go To"
-msgstr "Gå till"
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr "Gå bakåt i tiden"
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go forward in time"
-msgstr "Gå framåt i tiden"
-
-#: ui/evolution-calendar.xml.h:11
-msgid "Go to _Date"
-msgstr "Gå till _datum"
-
-#: ui/evolution-calendar.xml.h:12
-msgid "Go to _Today"
-msgstr "Gå till _idag"
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr "Gå till ett specifikt datum"
-
-#: ui/evolution-calendar.xml.h:14
-msgid "Go to present time"
-msgstr "Gå till nuvarande tid"
-
-#: ui/evolution-calendar.xml.h:15
-msgid "Month"
-msgstr "Månad"
-
-#: ui/evolution-calendar.xml.h:17
-msgid "New _Event"
-msgstr "Nytt _evenemang"
-
-#: ui/evolution-calendar.xml.h:20
-msgid "Open Calendar"
-msgstr "Öppna kalender"
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Prev"
-msgstr "Föreg"
-
-#: ui/evolution-calendar.xml.h:22
-msgid "Previews the calendar to be printed"
-msgstr "Förhandsgranskar kalendern som ska skrivas ut"
-
-#: ui/evolution-calendar.xml.h:25
-msgid "Print calendar"
-msgstr "Skriv ut kalender"
-
-#: ui/evolution-calendar.xml.h:26
-msgid "Print this Calendar"
-msgstr "Skriv ut denna kalender"
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:15
-msgid "Save As"
-msgstr "Spara som"
-
-#: ui/evolution-calendar.xml.h:28
-msgid "Save calendar as something else"
-msgstr "Spara kalender som något annat"
-
-#: ui/evolution-calendar.xml.h:30
-msgid "Show 1 day"
-msgstr "Visa 1 dag"
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr "Visa 1 månad"
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr "Visa 1 vecka"
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr "Visa arbetsveckan"
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:229
-#: widgets/misc/e-dateedit.c:424
-msgid "Today"
-msgstr "Idag"
-
-#: ui/evolution-calendar.xml.h:35
-msgid "W_ork Week"
-msgstr "_Arbetsvecka"
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr "Vecka"
-
-#: ui/evolution-calendar.xml.h:37
-msgid "_Appointment"
-msgstr "_Möte"
-
-#: ui/evolution-calendar.xml.h:38
-msgid "_Day"
-msgstr "_Dag"
-
-#: ui/evolution-calendar.xml.h:39
-msgid "_Month"
-msgstr "_Månad"
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:41
-msgid "_New"
-msgstr "_Ny"
-
-#: ui/evolution-calendar.xml.h:41
-msgid "_Open Calendar"
-msgstr "_Öppna kalender"
-
-#: ui/evolution-calendar.xml.h:45
-msgid "_Week"
-msgstr "_Vecka"
-
-#: ui/evolution-contact-editor.xml.h:2
-msgid "Delete this item"
-msgstr "Ta bort detta objekt"
-
-#: ui/evolution-contact-editor.xml.h:3
-msgid "Delete..."
-msgstr "Ta bort..."
-
-#: ui/evolution-contact-editor.xml.h:4
-msgid "Help"
-msgstr "Hjälp"
-
-#: ui/evolution-contact-editor.xml.h:5
-msgid "Print En_velope..."
-msgstr "Skriv ut ku_vert..."
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-msgid "Print this item"
-msgstr "Skriv ut detta objekt"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-mail.xml.h:62 ui/evolution-task-editor-dialog.xml.h:41
-msgid "Print..."
-msgstr "Skriv ut..."
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:16
-#: ui/evolution-task-editor-dialog.xml.h:51
-msgid "Save _As..."
-msgstr "Spara so_m..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-msgid "Save and Close"
-msgstr "Spara och stäng"
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr "Spara kontakten och stäng dialogrutan"
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr "Skicka kontakte_n till annan..."
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr "Se online-hjälpen"
-
-#: ui/evolution-contact-editor.xml.h:13
-msgid "Send _message to contact..."
-msgstr "Skicka _meddelande till kontakt..."
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:44 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:33
-msgid "_File"
-msgstr "_Arkiv"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:51
-#: ui/evolution-task-editor-dialog.xml.h:85
-msgid "_Save"
-msgstr "_Spara"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr "Om detta program"
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr "Om..."
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-msgid "Actio_ns"
-msgstr "_Åtgärder"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-msgid "Address _Book... (FIXME)"
-msgstr "Adress_bok... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-msgid "C_lear"
-msgstr "_Töm"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-msgid "C_ut"
-msgstr "Klipp _ut"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-msgid "Chec_k Names (FIXME)"
-msgstr "_Kontrollera namn (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-msgid "Clear"
-msgstr "Töm"
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-msgid "Clear the selection"
-msgstr "Töm markeringen"
-
-#: ui/evolution-event-editor.xml.h:11
-msgid "Close this appointment"
-msgstr "Stäng detta möte"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "K_opiera till mapp... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:7
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "Kopiera"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-msgid "Copy the selection"
-msgstr "Koiera markeringen"
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr "Klipp ut"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Cut the selection"
-msgstr "Klipp ut markeringen"
-
-#: ui/evolution-event-editor.xml.h:18
-msgid "Delete this appointment"
-msgstr "Ta bort detta möte"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr "Kasta XML"
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr "Kasta användargränssnittsbeskrivningen i XML"
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr "Fö_rsta objektet i mappen (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-msgid "For_ward (FIXME)"
-msgstr "_Vidarebefordra (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr "Vidarebefordra som v_Calendar (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-msgid "Go to the next item"
-msgstr "Gå till nästa objekt"
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-msgid "Go to the previous item"
-msgstr "Gå till föregående objekt"
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-msgid "In_complete Task (FIXME)"
-msgstr "Of_ärdig uppgift (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-msgid "Modify the file's properties"
-msgstr "Ändra filens egenskaper"
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-msgid "N_ext"
-msgstr "N_ästa"
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-msgid "Paste"
-msgstr "Klistra in"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-msgid "Paste the clipboard"
-msgstr "Klistra in från urklipp"
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr "Före_gående"
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-msgid "Print Pre_view"
-msgstr "Förhands_granska"
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-msgid "Print S_etup..."
-msgstr "Skrivar_inställning..."
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-msgid "Print Setup"
-msgstr "Skrivarinställningar"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:14
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:241
-msgid "Save"
-msgstr "Spara"
-
-#: ui/evolution-event-editor.xml.h:43
-msgid "Save the appointment and close the dialog box"
-msgstr "Spara mötet och stäng dialogrutan"
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:20
-#: ui/evolution-task-editor-dialog.xml.h:53
-msgid "Save the current file"
-msgstr "Spara aktuell fil"
-
-#: ui/evolution-event-editor.xml.h:46
-msgid "Schedule _Meeting"
-msgstr "Boka _möte"
-
-#: ui/evolution-event-editor.xml.h:47
-msgid "Schedule some sort of a meeting"
-msgstr "Boka någon typ av möte"
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-mail.xml.h:74
-#: ui/evolution-task-editor-dialog.xml.h:57
-msgid "Select All"
-msgstr "Markera allt"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-msgid "Select everything"
-msgstr "Markera alltihop"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr "Ställ in sidinställningarna för din aktuella skrivare"
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-msgid "Task _Request (FIXME)"
-msgstr "_Uppgiftsbegäran (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-message-composer.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:63
-msgid "_About..."
-msgstr "_Om..."
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:41
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:30
-msgid "_Close"
-msgstr "S_täng"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:31
-msgid "_Contact (FIXME)"
-msgstr "_Kontakt (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-msgid "_Copy"
-msgstr "_Kopiera"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr "Fels_ök"
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:46
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:37
-msgid "_Help"
-msgstr "_Hjälp"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-msgid "_Item (FIXME)"
-msgstr "_Objekt (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-msgid "_Journal Entry (FIXME)"
-msgstr "_Dagbokspost (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-msgid "_Last Item in Folder (FIXME)"
-msgstr "_Sista objektet i mappen (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-msgid "_Mail Message (FIXME)"
-msgstr "_Posta meddelande (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-msgid "_Move to Folder... (FIXME)"
-msgstr "_Flytta till mapp... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-msgid "_Note (FIXME)"
-msgstr "_Anteckna (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-msgid "_Paste"
-msgstr "Klistra _in"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:109
-#: ui/evolution-task-editor-dialog.xml.h:83
-msgid "_Properties..."
-msgstr "_Egenskaper..."
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-msgid "_Select All"
-msgstr "_Markera allt"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:44
-msgid "_Task (FIXME)"
-msgstr "_Uppgift (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-msgid "_Unread Item (FIXME)"
-msgstr "O_läst objekt (FIXME)"
-
-#: ui/evolution-executive-summary.xml.h:1
-msgid "Add Service"
-msgstr "Lägg till tjänst"
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr "Lägg till ny tjänst till sammanfattningen"
-
-#: ui/evolution-executive-summary.xml.h:3
-msgid "Create a new email"
-msgstr "Skriv ett nytt e-brev"
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr "Inställningar för sammanfattningen..."
-
-#: ui/evolution-executive-summary.xml.h:5
-msgid "New Mail"
-msgstr "Ny post"
-
-#: ui/evolution-mail.xml.h:2
-msgid "Apply any new filters to the mail in this box"
-msgstr "Verkställ alla nya filter på e-posten i denna brevlåda"
-
-#: ui/evolution-mail.xml.h:3
-msgid "Change the properties of this folder"
-msgstr "Ändra egenskaperna för denna mapp"
-
-#: ui/evolution-mail.xml.h:4
-msgid "Compose"
-msgstr "Skriv"
-
-#: ui/evolution-mail.xml.h:5
-msgid "Compose a new message"
-msgstr "Skriv ett nytt meddelande"
-
-#: ui/evolution-mail.xml.h:6
-msgid "Configure Folder..."
-msgstr "Konfigura mapp..."
-
-#: ui/evolution-mail.xml.h:8
-msgid "Copy message to a new folder"
-msgstr "Kopiera meddelandet till en ny mapp"
-
-#: ui/evolution-mail.xml.h:9
-msgid "Copy selected messages to another folder"
-msgstr "Kopiera markerade meddelanden till en annan mapp"
-
-#: ui/evolution-mail.xml.h:10
-msgid "Create _Virtual Folder From Message"
-msgstr "Skapa _virtuell mapp från meddelande"
-
-#: ui/evolution-mail.xml.h:12
-msgid "Delete the selected messages"
-msgstr "Ta bort det markerade meddelandet"
-
-#: ui/evolution-mail.xml.h:14
-msgid "Display all of the message headers"
-msgstr "Visa alla meddelandehuvuden"
-
-#: ui/evolution-mail.xml.h:15
-msgid "Edit Message"
-msgstr "Redigera meddelande"
-
-#: ui/evolution-mail.xml.h:16
-msgid "Edit the current message"
-msgstr "Redigera det aktuella meddelandet"
-
-#: ui/evolution-mail.xml.h:17
-msgid "Empty _Trash"
-msgstr "Töm _papperskorgen"
-
-#: ui/evolution-mail.xml.h:18
-msgid "Expunge"
-msgstr "Töm"
-
-#: ui/evolution-mail.xml.h:19
-msgid "Filter on Mailing _List"
-msgstr "Filtrera på sänd_lista"
-
-#: ui/evolution-mail.xml.h:20
-msgid "Filter on Se_nder"
-msgstr "Filtrera på _avsändare"
-
-#: ui/evolution-mail.xml.h:21
-msgid "Filter on _Recipients"
-msgstr "Filtrera på _mottagare"
-
-#: ui/evolution-mail.xml.h:22
-msgid "Filter on _Subject"
-msgstr "Filtrera på _ämnesrad"
-
-#: ui/evolution-mail.xml.h:23
-msgid "Finaly remove all mails tagged for deletion"
-msgstr "Ta bort alla brev som är markerade för borttagning för gott"
-
-#: ui/evolution-mail.xml.h:24
-msgid "Forget _Passwords"
-msgstr "Glöm _lösenord"
-
-#: ui/evolution-mail.xml.h:26
-msgid "Forward As"
-msgstr "Vidarebefordra som"
-
-#: ui/evolution-mail.xml.h:27
-msgid "Forward inline"
-msgstr "Vidarebefordra inuti"
-
-#: ui/evolution-mail.xml.h:28
-msgid "Forward the selected mail to someone"
-msgstr "Vidarebefordra det markerade brevet till någon"
-
-#: ui/evolution-mail.xml.h:30
-msgid "Forward this message in-line with your mail, so you can edit it"
-msgstr ""
-"Vidarebefordra detta meddelande inuti ditt brev, så att du kan redigera det"
-
-#: ui/evolution-mail.xml.h:31
-msgid "Full _Headers"
-msgstr "Fullständiga _huvuden"
-
-#: ui/evolution-mail.xml.h:32
-msgid "Go to the next message"
-msgstr "Gå till nästa meddelande"
-
-#: ui/evolution-mail.xml.h:33
-msgid "Go to the previous message"
-msgstr "Gå till föregående meddelande"
-
-#: ui/evolution-mail.xml.h:34
-msgid "Hide Deleted Messages"
-msgstr "Göm borttagna meddelanden"
-
-#: ui/evolution-mail.xml.h:35
-msgid "Hide S_elected Messages"
-msgstr "Göm _markerade meddelanden"
-
-#: ui/evolution-mail.xml.h:36
-msgid "Hide _Deleted Messages"
-msgstr "Göm _borttagna meddelanden"
-
-#: ui/evolution-mail.xml.h:37
-msgid "Hide _Read messages"
-msgstr "Göm _lästa meddelanden"
-
-#: ui/evolution-mail.xml.h:38
-msgid "Invert Selection"
-msgstr "Omvänd markering"
-
-#: ui/evolution-mail.xml.h:39
-msgid "Manage _Subscriptions..."
-msgstr "Hantera _prenumerationer..."
-
-#: ui/evolution-mail.xml.h:41
-msgid "Mark All as R_ead"
-msgstr "Markera alla som _lästa"
-
-#: ui/evolution-mail.xml.h:42
-msgid "Mark As Read"
-msgstr "Markera som läst"
-
-#: ui/evolution-mail.xml.h:43
-msgid "Mark As U_nread"
-msgstr "Markera som _oläst"
-
-#: ui/evolution-mail.xml.h:45
-msgid "Mark the selected messages as having been read"
-msgstr "Markera de markerade meddelandena som lästa"
-
-#: ui/evolution-mail.xml.h:46
-msgid "Mark the selected messages as not having been read"
-msgstr "Markera de markerade meddelandena som olästa"
-
-#: ui/evolution-mail.xml.h:47
-msgid "Move"
-msgstr "Flytta"
-
-#: ui/evolution-mail.xml.h:48
-msgid "Move message to a new folder"
-msgstr "Flytta meddelandet till en ny mapp"
-
-#: ui/evolution-mail.xml.h:49
-msgid "Move selected messages to another folder"
-msgstr "Flytta markerade meddelanden till en annan mapp"
-
-#: ui/evolution-mail.xml.h:51
-msgid "Open in New Window"
-msgstr "Öppna i nytt fönster"
-
-#: ui/evolution-mail.xml.h:52
-msgid "Open the current message in a new window"
-msgstr "Öppna det aktuella meddelandet i ett nytt fönster"
-
-#: ui/evolution-mail.xml.h:58
-msgid "Print Preview of message..."
-msgstr "Förhandsgranska meddelande..."
-
-#: ui/evolution-mail.xml.h:59
-msgid "Print message to the printer"
-msgstr "Skriv ut meddelandet på skrivaren"
-
-#: ui/evolution-mail.xml.h:60
-msgid "Print message..."
-msgstr "Skriv ut meddelande..."
-
-#: ui/evolution-mail.xml.h:63
-msgid "Redirect (FIXME: implement me)"
-msgstr "Omdirigera (FIXME: implementera mig)"
-
-#: ui/evolution-mail.xml.h:67
-msgid "Reply to all"
-msgstr "Svara till alla"
-
-#: ui/evolution-mail.xml.h:69
-msgid "Reply to sender"
-msgstr "Svara till avsändaren"
-
-#: ui/evolution-mail.xml.h:71
-msgid "S_earch Message"
-msgstr "S_ök meddelande"
-
-#: ui/evolution-mail.xml.h:72
-msgid "S_ource"
-msgstr "_Källa"
-
-#: ui/evolution-mail.xml.h:73
-msgid "Save the message into a new file"
-msgstr "Spara meddelandet i en ny fil"
-
-#: ui/evolution-mail.xml.h:75 ui/evolution-subscribe.xml.h:7
-msgid "Select _All"
-msgstr "Markera _alla"
-
-#: ui/evolution-mail.xml.h:76
-msgid "Select _Thread"
-msgstr "Markera _tråd"
-
-#: ui/evolution-mail.xml.h:77
-msgid "Send / Receive"
-msgstr "Skicka / Ta emot"
-
-#: ui/evolution-mail.xml.h:78
-msgid "Send a reply to the person who sent you this mail"
-msgstr "Skicka ett svar till personen som skickade dig detta brev"
-
-#: ui/evolution-mail.xml.h:79
-msgid "Send a single mail in reply to all the selected mail"
-msgstr "Skicka ett enda brev som svar på alla de markerade breven"
-
-#: ui/evolution-mail.xml.h:80
-msgid ""
-"Send queued mail\n"
-" and retrieve new mail"
-msgstr ""
-"Skicka kölagd e-post\n"
-" och hämta ny e-post"
-
-#: ui/evolution-mail.xml.h:82
-msgid "Send queued mail and retrieve new mail"
-msgstr "Skicka kölagd e-post och hämta ny e-post"
-
-#: ui/evolution-mail.xml.h:83
-msgid "Show _All"
-msgstr "Visa _alla"
-
-#: ui/evolution-mail.xml.h:85
-msgid "Threaded Message list"
-msgstr "Trådad meddelandelista"
-
-#: ui/evolution-mail.xml.h:86
-msgid "Un-delete the selected messages"
-msgstr "Ångra borttagning av de markerade meddelandena"
-
-#: ui/evolution-mail.xml.h:87
-msgid "Undelete"
-msgstr "Ångra borttagning"
-
-#: ui/evolution-mail.xml.h:92
-msgid "View Raw Message Source"
-msgstr "Visa rå meddelandekälla"
-
-#: ui/evolution-mail.xml.h:93
-msgid "Virtual Folder _Editor..."
-msgstr "R_edigerare för virtuella mappar..."
-
-#: ui/evolution-mail.xml.h:94
-msgid "_Apply Filters"
-msgstr "Tillämp_a filter"
-
-#: ui/evolution-mail.xml.h:95
-msgid "_Attachment"
-msgstr "_Bilaga"
-
-#: ui/evolution-mail.xml.h:97
-msgid "_Create Filter From Message"
-msgstr "_Skapa filter från meddelande"
-
-#: ui/evolution-mail.xml.h:99
-msgid "_Expunge"
-msgstr "T_öm"
-
-#: ui/evolution-mail.xml.h:100
-msgid "_Filters..."
-msgstr "_Filter..."
-
-#: ui/evolution-mail.xml.h:101 ui/evolution.xml.h:34
-msgid "_Folder"
-msgstr "_Mapp"
-
-#: ui/evolution-mail.xml.h:103
-msgid "_Inline"
-msgstr "_Inuti"
-
-#: ui/evolution-mail.xml.h:104 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr "Om_vänd markering"
-
-#: ui/evolution-mail.xml.h:105
-msgid "_Mail Message"
-msgstr "_Posta meddelande"
-
-#: ui/evolution-mail.xml.h:106
-msgid "_Mail Settings..."
-msgstr "_E-postinställningar..."
-
-#: ui/evolution-mail.xml.h:108
-msgid "_Open Selected Items"
-msgstr "_Öppna markerade objekt"
-
-#: ui/evolution-mail.xml.h:110
-msgid "_Quoted"
-msgstr "_Citerad"
-
-#: ui/evolution-mail.xml.h:111
-msgid "_Reply"
-msgstr "_Svara"
-
-#: ui/evolution-mail.xml.h:112
-msgid "_Resend Messages"
-msgstr "Skicka _om meddelanden"
-
-#: ui/evolution-mail.xml.h:114
-msgid "_Save Message As..."
-msgstr "Spara meddelande so_m..."
-
-#: ui/evolution-mail.xml.h:115
-msgid "_Send / Receive"
-msgstr "_Skicka / Ta emot"
-
-#: ui/evolution-mail.xml.h:116
-msgid "_Threaded"
-msgstr "_Trådat"
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr "Bifoga"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-msgid "Close the current file"
-msgstr "Stäng aktuell fil"
-
-#: ui/evolution-message-composer.xml.h:5
-msgid "Encrypt this message with PGP"
-msgstr "Kryptera detta meddelande med PGP"
-
-#: ui/evolution-message-composer.xml.h:6
-msgid "F_ormat"
-msgstr "F_ormat"
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "HTML"
-msgstr "HTML"
-
-#: ui/evolution-message-composer.xml.h:8
-msgid "Insert a file as text into the message"
-msgstr "Infoga en fil som text i meddelandet"
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert text file..."
-msgstr "Infoga textfil..."
-
-#: ui/evolution-message-composer.xml.h:11
-msgid "Open a file"
-msgstr "Öppna en fil"
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "PGP Encrypt"
-msgstr "PGP-kryptera"
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Sign"
-msgstr "PGP-signera"
-
-#: ui/evolution-message-composer.xml.h:17
-msgid "Save _Draft"
-msgstr "Spara _utkast"
-
-#: ui/evolution-message-composer.xml.h:18
-msgid "Save in _folder... (FIXME)"
-msgstr "Spara i map_p... (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:19
-msgid "Save in folder..."
-msgstr "Spara i mapp..."
-
-#: ui/evolution-message-composer.xml.h:21
-msgid "Save the current file with a different name"
-msgstr "Spara aktuell fil med ett annat namn"
-
-#: ui/evolution-message-composer.xml.h:22
-msgid "Save the message in a specified folder"
-msgstr "Spara meddelandet i angiven mapp"
-
-#: ui/evolution-message-composer.xml.h:23
-msgid "Send"
-msgstr "Skicka"
-
-#: ui/evolution-message-composer.xml.h:24
-msgid "Send _Later"
-msgstr "Skicka senar_e"
-
-#: ui/evolution-message-composer.xml.h:25
-msgid "Send _later"
-msgstr "Skicka senar_e"
-
-#: ui/evolution-message-composer.xml.h:26
-msgid "Send the mail in HTML format"
-msgstr "Skicka brevet i HTML-format"
-
-#: ui/evolution-message-composer.xml.h:27
-msgid "Send the message later"
-msgstr "Skicka meddelandet senare"
-
-#: ui/evolution-message-composer.xml.h:28
-msgid "Send the message now"
-msgstr "Skicka meddelandet nu"
-
-#: ui/evolution-message-composer.xml.h:29
-msgid "Send this message now"
-msgstr "Skicka detta meddelande nu"
-
-#: ui/evolution-message-composer.xml.h:30
-msgid "Show / hide attachments"
-msgstr "Visa/göm bilaga"
-
-#: ui/evolution-message-composer.xml.h:31
-msgid "Show _attachments"
-msgstr "Visa _bilagor"
-
-#: ui/evolution-message-composer.xml.h:32
-msgid "Show attachments"
-msgstr "Visa bilagor"
-
-#: ui/evolution-message-composer.xml.h:33
-msgid "Sign this message with your PGP key"
-msgstr "Signera detta meddelande med din PGP-nyckel"
-
-#: ui/evolution-message-composer.xml.h:34
-msgid "Toggles whether the BCC field is displayed"
-msgstr "Växla om blindkopiefältet ska visas"
-
-#: ui/evolution-message-composer.xml.h:35
-msgid "Toggles whether the CC field is displayed"
-msgstr "Växla om kopiefältet ska visas"
-
-#: ui/evolution-message-composer.xml.h:36
-msgid "Toggles whether the From chooser is displayed"
-msgstr "Växla om frånväljaren ska visas"
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr "Växla om svara-till-fältet ska visas"
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "_Bcc Field"
-msgstr "_Blindkopiefältet"
-
-#: ui/evolution-message-composer.xml.h:40
-msgid "_Cc Field"
-msgstr "_Kopiefältet"
-
-#: ui/evolution-message-composer.xml.h:45
-msgid "_From Field"
-msgstr "_Frånfältet"
-
-#: ui/evolution-message-composer.xml.h:47
-msgid "_Insert"
-msgstr "_Infoga"
-
-#: ui/evolution-message-composer.xml.h:48
-msgid "_Insert text file... (FIXME)"
-msgstr "_Infoga textfil... (FIXME)"
-
-#: ui/evolution-message-composer.xml.h:49
-msgid "_Open..."
-msgstr "_Öppna..."
-
-#: ui/evolution-message-composer.xml.h:50
-msgid "_Reply-To Field"
-msgstr "_Svara-till-fältet"
-
-#: ui/evolution-message-composer.xml.h:52
-msgid "_Security"
-msgstr "_Säkerhet"
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr "Lägg till mapp till din lista över prenumererade mappar"
-
-#: ui/evolution-subscribe.xml.h:3
-msgid "F_older"
-msgstr "Ma_pp"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr "Uppdatera lista"
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr "Uppdatera listan med mappar"
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr "Ta bort mapp från din lista över prenumererade mappar"
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr "Prenumerera"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr "Säg upp prenumeration"
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-msgid "Assig_n Task (FIXME)"
-msgstr "Tilldela _uppgift (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr "Sök igen"
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-msgid "Meeting Re_quest (FIXME)"
-msgstr "_Mötesbegäran (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-msgid "Redo"
-msgstr "Gör om"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-msgid "Redo the undone action"
-msgstr "Gör om den ångrade åtgärden"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-msgid "Replace"
-msgstr "Ersätt"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-msgid "Replace a string"
-msgstr "Ersätt en sträng"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-msgid "Reply to A_ll (FIXME)"
-msgstr "Svara till a_lla (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-msgid "S_end Status Report (FIXME)"
-msgstr "S_kicka statusrapport (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr "Hoppa _över förekomst (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-msgid "Save the task and close the dialog box"
-msgstr "Spara uppgiften och stäng dialogrutan"
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "Search again for the same string"
-msgstr "Sök igen efter samma sträng"
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-msgid "Search for a string"
-msgstr "Sök efter en sträng"
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr "Ångra"
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-msgid "Undo the last action"
-msgstr "Ångra den senaste åtgärden"
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:29
-msgid "_Appointment (FIXME)"
-msgstr "_Möte (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-msgid "_Mark Complete (FIXME)"
-msgstr "_Markera som färdig (FIXME)"
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-msgid "_Reply (FIXME)"
-msgstr "_Svara (FIXME)"
-
-#: ui/evolution-tasks.xml.h:2
-msgid "Create a new task"
-msgstr "Skapa en ny uppgift"
-
-#: ui/evolution-tasks.xml.h:3
-msgid "New Task"
-msgstr "Ny uppgift"
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr "Spara uppgift som något annat"
-
-#: ui/evolution-tasks.xml.h:6
-msgid "Tasks Preferences..."
-msgstr "Inställningar för uppgifter..."
-
-#: ui/evolution-tasks.xml.h:9
-msgid "_Task"
-msgstr "_Uppgift"
-
-#: ui/evolution.xml.h:1
-msgid "About Evolution..."
-msgstr "Om Evolution..."
-
-#: ui/evolution.xml.h:3
-msgid "Close this window"
-msgstr "Stäng detta fönster"
-
-#: ui/evolution.xml.h:4
-msgid "Customi_ze Toolbars..."
-msgstr "An_passa verktygsrader..."
-
-#: ui/evolution.xml.h:5
-msgid "Customize"
-msgstr "Anpassa"
-
-#: ui/evolution.xml.h:6
-msgid "Customize toolbars"
-msgstr "Anpassa verktygsrader"
-
-#: ui/evolution.xml.h:7
-msgid "Display a different folder"
-msgstr "Visa en annan mapp"
-
-#: ui/evolution.xml.h:8
-msgid "E_xit"
-msgstr "_Avsluta"
-
-#: ui/evolution.xml.h:9
-msgid "Evolution _Window"
-msgstr "Evolution_fönster"
-
-#: ui/evolution.xml.h:10
-msgid "Evolution bar _shortcut"
-msgstr "Evolutiongenväg för _rader"
-
-#: ui/evolution.xml.h:11
-msgid "Exit the program"
-msgstr "Avlsuta programmet"
-
-#: ui/evolution.xml.h:12
-msgid "Getting _Started"
-msgstr "Komma i _gång"
-
-#: ui/evolution.xml.h:13
-msgid "Import an external file format"
-msgstr "Importera ett externt filformat"
-
-#: ui/evolution.xml.h:14
-msgid "Main toolbar"
-msgstr "Huvudverktygsrad"
-
-#: ui/evolution.xml.h:15
-msgid "Show information about Evolution"
-msgstr "Visa information om Evolution"
-
-#: ui/evolution.xml.h:16
-msgid "Submit Bug Report"
-msgstr "Skicka felrapport"
-
-#: ui/evolution.xml.h:17
-msgid "Submit _Bug Report"
-msgstr "Skicka _felrapport"
-
-#: ui/evolution.xml.h:18
-msgid "Submit bug report using Bug Buddy."
-msgstr "Skicka felrapport med Bug-Buddy."
-
-#: ui/evolution.xml.h:19
-msgid "Toggle"
-msgstr "Växla"
-
-#: ui/evolution.xml.h:20
-msgid "Toggle whether to show the folder bar"
-msgstr "Växla om mappraden ska visas"
-
-#: ui/evolution.xml.h:21
-msgid "Toggle whether to show the shortcut bar"
-msgstr "Växla om genvägsraden ska visas"
-
-#: ui/evolution.xml.h:22
-msgid "Toggle whether we are working offline."
-msgstr "Växla om vi arbetar frånkopplade."
-
-#: ui/evolution.xml.h:23
-msgid "Using the C_ontact Manager"
-msgstr "Använda k_ontakthanteraren"
-
-#: ui/evolution.xml.h:24
-msgid "Using the _Calendar"
-msgstr "Använda _kalendern"
-
-#: ui/evolution.xml.h:25
-msgid "Using the _Mailer"
-msgstr "Använda _e-postdelen"
-
-#: ui/evolution.xml.h:26
-msgid "Work Offline"
-msgstr "Arbeta frånkopplad"
-
-#: ui/evolution.xml.h:27
-msgid "_About Evolution..."
-msgstr "_Om Evolution..."
-
-#: ui/evolution.xml.h:28
-msgid "_Actions"
-msgstr "_Åtgärder"
-
-#: ui/evolution.xml.h:35
-msgid "_Folder Bar"
-msgstr "_Mapprad"
-
-#: ui/evolution.xml.h:36
-msgid "_Go to Folder..."
-msgstr "_Gå till mapp..."
-
-#: ui/evolution.xml.h:38
-msgid "_Import file..."
-msgstr "_Infoga fil..."
-
-#: ui/evolution.xml.h:39
-msgid "_Index"
-msgstr "_Index"
-
-#: ui/evolution.xml.h:40
-msgid "_Mail message"
-msgstr "_Posta meddelande"
-
-#: ui/evolution.xml.h:42
-msgid "_New Folder"
-msgstr "_Ny mapp"
-
-#: ui/evolution.xml.h:43
-msgid "_Shortcut Bar"
-msgstr "_Genvägsraden"
-
-#: ui/evolution.xml.h:47
-msgid "_Work Offline"
-msgstr "A_rbeta frånkopplad"
-
-#: views/addressbook/galview.xml.h:1
-msgid "Adress Cards"
-msgstr "Adresskort"
-
-#: views/addressbook/galview.xml.h:2
-msgid "By Company"
-msgstr "Efter företag"
-
-#: views/addressbook/galview.xml.h:3
-msgid "Phone List"
-msgstr "Telefonlista"
-
-#: views/mail/galview.xml.h:1
-msgid "By Sender"
-msgstr "Efter avsändare"
-
-#: views/mail/galview.xml.h:2
-msgid "By Status"
-msgstr "Efter status"
-
-#: views/mail/galview.xml.h:3
-msgid "By Subject"
-msgstr "Efter ämne"
-
-#: views/mail/galview.xml.h:4
-msgid "Messages"
-msgstr "Meddelanden"
-
-#: views/tasks/galview.xml.h:2
-msgid "With Category"
-msgstr "Med kategori"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:392
-msgid "Tentative"
-msgstr "Preliminär"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:393
-msgid "Busy"
-msgstr "Upptagen"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:394
-msgid "Out of Office"
-msgstr "Inte inne"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:395
-msgid "No Information"
-msgstr "Ingen information"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:411
-msgid "_Invite Others..."
-msgstr "Bjud _in andra..."
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:431
-msgid "_Options"
-msgstr "_Alternativ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:448
-msgid "Show _Only Working Hours"
-msgstr "Visa _endast arbetstimmar"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:461
-msgid "Show _Zoomed Out"
-msgstr "Visa ut_zoomade"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:479
-msgid "_Update Free/Busy"
-msgstr "_Uppdatera ledig/upptagen"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:497
-msgid "_<<"
-msgstr "_<<"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:514
-msgid "_Autopick"
-msgstr "_Autovälj"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:528
-msgid ">_>"
-msgstr ">_>"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:545
-msgid "_All People and Resources"
-msgstr "_Alla människor och resurser"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:558
-msgid "All _People and One Resource"
-msgstr "Alla _människor och en resurs"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:571
-msgid "_Required People"
-msgstr "Folk som k_rävs"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:584
-msgid "Required People and _One Resource"
-msgstr "Folk som krävs _och en resurs"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:607
-msgid "Meeting _start time:"
-msgstr "Mötets _starttid:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:631
-msgid "Meeting _end time:"
-msgstr "Mötets slu_ttid:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:744
-msgid "All Attendees"
-msgstr "Alla deltagare"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:469
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2477
-msgid "%A, %B %d, %Y"
-msgstr "%A %d %B %Y"
-
-#: widgets/menus/gal-view-menus.c:176
-msgid "_Current View"
-msgstr "_Aktuell vy"
-
-#: widgets/menus/gal-view-menus.c:202
-msgid "Define Views"
-msgstr "Definiera vyer"
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:422
-msgid "MTWTFSS"
-msgstr "MTOTFLS"
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1061 widgets/misc/e-calendar-item.c:2756
-msgid "%B %Y"
-msgstr "%B %Y"
-
-#: widgets/misc/e-cell-date-edit.c:221 widgets/misc/e-dateedit.c:418
-msgid "Now"
-msgstr "Nu"
-
-#: widgets/misc/e-cell-date-edit.c:245
-msgid "OK"
-msgstr "OK"
-
-#: widgets/misc/e-cell-date-edit.c:726
-#, c-format
-msgid "The time must be in the format: %s"
-msgstr "Tiden måste anges i formatet: %s"
-
-#: widgets/misc/e-clipped-label.c:112
-msgid "..."
-msgstr "..."
-
-#: widgets/misc/e-filter-bar.c:168
-msgid "Save Search"
-msgstr "Spara sökning"
-
-#: widgets/misc/e-filter-bar.c:239
-msgid "Advanced Search"
-msgstr "Avancerad sökning"
-
-#: widgets/misc/e-filter-bar.h:101
-msgid "Save As..."
-msgstr "Spara som..."
-
-#: widgets/misc/e-filter-bar.h:102
-msgid "Show All"
-msgstr "Visa alla"
-
-#: widgets/misc/e-filter-bar.h:103
-msgid "Edit..."
-msgstr "Redigera..."
-
-#: widgets/misc/e-filter-bar.h:104
-msgid "Advanced..."
-msgstr "Avancerat..."
-
-#: widgets/misc/e-messagebox.c:152
-msgid "Information"
-msgstr "Information"
-
-#: widgets/misc/e-messagebox.c:159
-msgid "Warning"
-msgstr "Varning"
-
-#: widgets/misc/e-messagebox.c:173
-msgid "Question"
-msgstr "Fråga"
-
-#: widgets/misc/e-messagebox.c:180
-msgid "Message"
-msgstr "Meddelande"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:224
-msgid "Don't show this message again."
-msgstr "Visa inte detta meddelande igen."
-
-#: widgets/misc/e-search-bar.c:155
-msgid "Sear_ch"
-msgstr "S_ök"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-msgid "The Personal Addressbook Server"
-msgstr "Server för personlig adressbok"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr "Server för personlig kalender; kalenderfabrik"
-
-#: wombat/wombat.c:173
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr "setup_vfs(): kunde inte initiera GNOME-VFS"
-
-#: wombat/wombat.c:185
-msgid "init_corba(): could not initialize GNOME"
-msgstr "init_corba(): kunde inte initiera GNOME"
-
-#: wombat/wombat.c:198
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "init_bonobo(): kunde inte initiera Bonobo"
-
-#~ msgid ""
-#~ "We were unable to open this addressbook. This either\n"
-#~ "means you have entered an incorrect URI, or have tried\n"
-#~ "to access an LDAP server and don't have LDAP support\n"
-#~ "compiled in. If you've entered a URI, check the URI for\n"
-#~ "correctness and reenter. If not, you probably have\n"
-#~ "attempted to access an LDAP server. If you wish to be\n"
-#~ "able to use LDAP, you'll need to download and install\n"
-#~ "OpenLDAP and recompile and install Evolution.\n"
-#~ msgstr ""
-#~ "Vi kunde inte öppna den här adressboken. Detta beror\n"
-#~ "antingen på att du har angivit en felaktig URI eller\n"
-#~ "att du har försökt komma åt en LDAP-server och inte\n"
-#~ "har kompilerat in LDAP-stöd. Om du har angett en URI\n"
-#~ "bör du kontrollera så att URI:n är korrekt och\n"
-#~ "eventuellt ange den på nytt. Om det inte är så har du\n"
-#~ "troligtvis försökt att komma åt en LDAP-server. Om du\n"
-#~ "vill kunna använda LDAP måste du hämta och installera\n"
-#~ "OpenLDAP och kompilera om och installera Evolution.\n"
-
-#~ msgid "Show all "
-#~ msgstr "Visa alla "
-
-#~ msgid "%s is not a selectable folder"
-#~ msgstr "%s är inte en mapp som kan väljas"
-
-#~ msgid "You must be working online to complete this operation"
-#~ msgstr "Du måste vara ansluten för att kunna genomföra detta"
-
-#~ msgid ""
-#~ "Evolution has found Elm mail files.\n"
-#~ "Would you like to import them into Evolution?"
-#~ msgstr ""
-#~ "Evolution har hittat e-postfiler från Elm.\n"
-#~ "Vill du importera dem till Evolution?"
-
-#~ msgid "Elm mail"
-#~ msgstr "Elm-epost"
-
-#~ msgid ""
-#~ "Evolution has found Netscape mail files.\n"
-#~ "Would you like them to be imported into Evolution?"
-#~ msgstr ""
-#~ "Evolution har hittat Netscape-epostfiler.\n"
-#~ "Vill du importera dem till Evolution?"
-
-#~ msgid ""
-#~ "Evolution has found Pine mail files.\n"
-#~ "Would you like to import them into Evolution?"
-#~ msgstr ""
-#~ "Evolution har hittat Pine-epostfiler.\n"
-#~ "Vill du importera dem till Evolution?"
-
-#~ msgid "Pine mail"
-#~ msgstr "Pine-epost"
-
-#~ msgid "Don't ask me again"
-#~ msgstr "Fråga mig inte igen"
-
-#~ msgid "Advanced ..."
-#~ msgstr "Avancerat..."
-
-#~ msgid "Do you accept?"
-#~ msgstr "Accepterar du?"
-
-#~ msgid "VFolder on Subject"
-#~ msgstr "Virtuell mapp på ämnesrad"
-
-#~ msgid "VFolder on Sender"
-#~ msgstr "Virtuell mapp på avsändare"
-
-#~ msgid "VFolder on Recipients"
-#~ msgstr "Virtuell mapp på mottagare"
-
-#~ msgid "Mark as Read"
-#~ msgstr "Markera som läst"
-
-#~ msgid "Mark as Unread"
-#~ msgstr "Markera som oläst"
-
-#~ msgid "Move to Folder..."
-#~ msgstr "Flytta till mapp..."
-
-#~ msgid "Copy to Folder..."
-#~ msgstr "Kopiera till mapp..."
-
-#~ msgid "_Compose"
-#~ msgstr "Skriv _nytt"
-
-#~ msgid "Click here to add a contact"
-#~ msgstr "Klicka här för att lägga till en kontakt"
-
-#~ msgid "PLAIN"
-#~ msgstr "VANLIG"
-
-#~ msgid ""
-#~ "This option will connect to the server using a the PLAIN SASL mechanism if "
-#~ "the server supports it."
-#~ msgstr ""
-#~ "Detta alternativ kommer att ansluta till servern med en VANLIG SASL-mekanism "
-#~ "om servern stöder det."
-
-#~ msgid "No such host %s."
-#~ msgstr "Det finns ingen värd med namnet %s."
-
-#~ msgid "Temporarily unable to look up hostname %s."
-#~ msgstr "Kunde temporärt inte slå upp värdnamnet %s."
-
-#~ msgid "URL string `%s' contains no protocol"
-#~ msgstr "URL-strängen \"%s\" innehåller inget protokoll"
-
-#~ msgid "URL string `%s' contains an invalid protocol"
-#~ msgstr "URL-strängen \"%s\" innehåller ett ogiltigt protokoll"
-
-#~ msgid "Port number in URL `%s' is non-numeric"
-#~ msgstr "Portnumret i URL:en \"%s\" består inte av siffror"
-
-#~ msgid "Secure IMAPv4"
-#~ msgstr "Säker IMAPv4"
-
-#~ msgid "For reading and storing mail on IMAP servers over an SSL connection."
-#~ msgstr ""
-#~ "För läsande och lagrande av e-post på IMAP-servrar över en SSL-anslutning."
-
-#~ msgid "Secure POP"
-#~ msgstr "Säker POP"
-
-#~ msgid ""
-#~ "For connecting to POP servers over an SSL connection. The POP protocol can "
-#~ "also be used to retrieve mail from certain web mail providers and "
-#~ "proprietary email systems."
-#~ msgstr ""
-#~ "För anslutning till POP-servrar över en SSL-anslutning. POP-protokollet kan "
-#~ "även användas för att hämta e-post från vissa webb-epostleverantörer och "
-#~ "slutna e-postsystem."
-
-#~ msgid "Secure SMTP"
-#~ msgstr "Säker SMTP"
-
-#~ msgid ""
-#~ "For delivering mail by connecting to a remote mailhub using SMTP over an SSL "
-#~ "connection.\n"
-#~ msgstr ""
-#~ "För leverans av e-post genom anslutning till ett fjärr-epostnav som använder "
-#~ "SMTP över en SSL-anslutning.\n"
-
-#~ msgid "Remove action"
-#~ msgstr "Ta bort åtgärd"
-
-#~ msgid "Remove criterion"
-#~ msgstr "Ta bort villkor"
-
-#~ msgid ""
-#~ "One or more of your servers are not configured correctly.\n"
-#~ "Do you wish to save anyway?"
-#~ msgstr ""
-#~ "En eller flera av dina servrar är inte korrekt konfigurerade.\n"
-#~ "Vill du spara i alla fall?"
-
-#~ msgid "Unspecified"
-#~ msgstr "Odefinierad"
-
-#~ msgid "Advanced"
-#~ msgstr "Avancerat"
-
-#~ msgid "Check settings"
-#~ msgstr "Kontrollera inställningarna"
-
-#~ msgid "Email address:"
-#~ msgstr "E-postadress:"
-
-#~ msgid "Evolution Mail Configuration"
-#~ msgstr "Evolutions e-postkonfiguration"
-
-#~ msgid "Hostname:"
-#~ msgstr "Värd:"
-
-#~ msgid "IMAP"
-#~ msgstr "IMAP"
-
-#~ msgid "Include this account when receiving mail"
-#~ msgstr "Inkludera detta konto när det kommer e-post"
-
-#~ msgid "Keep mail on server"
-#~ msgstr "Spara meddelanden på servern"
-
-#~ msgid "Kerberos"
-#~ msgstr "Kerberos"
-
-#~ msgid "Mail"
-#~ msgstr "E-post"
-
-#~ msgid "Mail Account"
-#~ msgstr "Epostkonton"
-
-#~ msgid "Mail Configuration Druid"
-#~ msgstr "E-postkonfigurationsguide"
-
-#~ msgid "Optional"
-#~ msgstr "Valfri"
-
-#~ msgid "Password:"
-#~ msgstr "Lösenord:"
-
-#~ msgid "Plain Text"
-#~ msgstr "Vanlig text"
-
-#~ msgid "Remember my password"
-#~ msgstr "Kom ihåg mitt lösenord"
-
-#~ msgid "Reply address:"
-#~ msgstr "Svarsadress:"
-
-#~ msgid "Required"
-#~ msgstr "Krävs"
-
-#~ msgid "Save password"
-#~ msgstr "Spara lösenord"
-
-#~ msgid "Select signature file"
-#~ msgstr "Välj signaturfil"
-
-#~ msgid "Server type:"
-#~ msgstr "Servertyp:"
-
-#~ msgid "Signature:"
-#~ msgstr "Signatur:"
-
-#~ msgid "Source"
-#~ msgstr "Källa"
-
-#~ msgid "Transport"
-#~ msgstr "Transport"
-
-#~ msgid "Transport Authentication"
-#~ msgstr "Transportautentisering"
-
-#~ msgid ""
-#~ "Type the name by which you would like to refer to these servers. For "
-#~ "example: \"Work\" or \"Home\"."
-#~ msgstr ""
-#~ "Skriv in namnet som du vill använda för att referera till dessa servrar, "
-#~ "till exempel: \"Jobb\" eller \"Hemma\"."
-
-#~ msgid "minutes."
-#~ msgstr "minuter."
-
-#~ msgid ""
-#~ "Failed to verify the incoming mail configuration.\n"
-#~ "You may experience problems retrieving your mail from %s"
-#~ msgstr ""
-#~ "Misslyckades med att verifiera konfigurationen för inkommande post.\n"
-#~ "Du kan komma att få problem med att hämta post från %s"
-
-#~ msgid ""
-#~ "Failed to verify the outgoing mail configuration.\n"
-#~ "You may experience problems sending your mail using %s"
-#~ msgstr ""
-#~ "Misslyckades med att verifiera konfigurationen för utgående post.\n"
-#~ "Du kan komma att få problem med att skicka post med %s"
-
-#~ msgid "%s message %d of %d (uid \"%s\")"
-#~ msgstr "%s meddelande %d av %d (uid \"%s\")"
-
-#~ msgid "No authentication required"
-#~ msgstr "Ingen autentisering krävs"
-
-#~ msgid ""
-#~ "This option will connect to the SMTP server without using any kind of "
-#~ "authentication. This should be fine for connecting to most SMTP servers."
-#~ msgstr ""
-#~ "Detta alternativ kommer att ansluta till SMTP-servern utan någon form av "
-#~ "autentisering. Detta bör fungera för anslutning till de flesta SMTP-servrar."
-
-#~ msgid "[ %s ]"
-#~ msgstr "[ %s ]"
-
-#~ msgid "%s, et al."
-#~ msgstr "%s m.fl."
-
-#~ msgid "<unknown>"
-#~ msgstr "<okänt>"
-
-#~ msgid "Message _Display"
-#~ msgstr "Meddelande_visning"
-
-#~ msgid "_Message Hiding"
-#~ msgstr "_Meddelandegömning"
-
-#~ msgid "The time is invalid"
-#~ msgstr "Tiden är ogiltig"
-
-#~ msgid "Edit Filter Rule"
-#~ msgstr "Redigera filterregel"
-
-#~ msgid "Add VFolder Rule"
-#~ msgstr "Lägg till regel för virtuell mapp"
-
-#~ msgid "Edit VFolder Rule"
-#~ msgstr "Redigera regel för virtuell mapp"
-
-#~ msgid "Disabled"
-#~ msgstr "Avstängd"
-
-#~ msgid "Synchronize"
-#~ msgstr "Synkronisera"
-
-#~ msgid "Copy From Pilot"
-#~ msgstr "Kopiera från Pilot"
-
-#~ msgid "Copy To Pilot"
-#~ msgstr "Kopiera till Pilot"
-
-#~ msgid "Merge From Pilot"
-#~ msgstr "Slå samman från Pilot"
-
-#~ msgid "Merge To Pilot"
-#~ msgstr "Slå samman till Pilot"
-
-#~ msgid "JP Rosevear <jpr@helixcode.com>"
-#~ msgstr "JP Rosevear <jpr@helixcode.com>"
-
-#~ msgid "Original Author:"
-#~ msgstr "Originalförfattare:"
-
-#~ msgid "Eskil Heyn Olsen <deity@eskil.dk>"
-#~ msgstr "Eskil Heyn Olsen <deity@eskil.dk>"
-
-#~ msgid "(C) 1998-2000 the Free Software Foundation and Helix Code"
-#~ msgstr "© 1998-2000 Free Software Foundation och Helix Code"
-
-#~ msgid "gnome-unknown.xpm"
-#~ msgstr "gnome-unknown.xpm"
-
-#~ msgid "Synchronize Action"
-#~ msgstr "Synkroniseringsåtgärd"
-
-#~ msgid "Conduit state"
-#~ msgstr "Kanaltillstånd"
-
-#~ msgid ""
-#~ "No pilot configured, please choose the\n"
-#~ "'Pilot Link Properties' capplet first."
-#~ msgstr ""
-#~ "Ingen Pilot konfigurerad. Var vänlig och\n"
-#~ "välj \"Pilot-länkningsegenskaper\" först."
-
-#~ msgid "Not connected to the gnome-pilot daemon"
-#~ msgstr "Inte ansluten till gnome-pilot-demonen"
-
-#~ msgid ""
-#~ "An error occured when trying to fetch\n"
-#~ "pilot list from the gnome-pilot daemon"
-#~ msgstr ""
-#~ "Ett fel inträffade vid hämnting av\n"
-#~ "pilotlista från gnome-pilot-demonen"
-
-#~ msgid ""
-#~ "\n"
-#~ "Mr.\n"
-#~ "Mrs.\n"
-#~ "Ms.\n"
-#~ "Miss\n"
-#~ "Dr.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Herr\n"
-#~ "Fru\n"
-#~ "Fru\n"
-#~ "Fröken\n"
-#~ "Dr.\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Sr.\n"
-#~ "Jr.\n"
-#~ "I\n"
-#~ "II\n"
-#~ "III\n"
-#~ "Esq.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Sr.\n"
-#~ "Jr.\n"
-#~ "I\n"
-#~ "II\n"
-#~ "III\n"
-#~ "Esq.\n"
-
-#~ msgid "label26"
-#~ msgstr "label26"
-
-#~ msgid "Evolution ToDo Conduit"
-#~ msgstr "Evolutions att-göra-kanal"
-
-#~ msgid "Configuration utility for the evolution todo conduit.\n"
-#~ msgstr "Konfigurationsverktyg för evolutions att-göra-kanal.\n"
-
-#~ msgid "The priority must be between 1 and 9, inclusive"
-#~ msgstr "Prioriteten måste vara mellan 1 och 9"
-
-#~ msgid "C_lassification:"
-#~ msgstr "K_lassifikation:"
-
-#~ msgid "Su_mmary"
-#~ msgstr "Sa_mmanfattning"
-
-#~ msgid "task-editor-dialog"
-#~ msgstr "task-editor-dialog"
-
-#~ msgid "Edit this appointment..."
-#~ msgstr "Redigera detta möte..."
-
-#~ msgid "Time"
-#~ msgstr "Tid"
-
-#~ msgid "event-editor-dialog"
-#~ msgstr "event-editor-dialog"
-
-#~ msgid "label21"
-#~ msgstr "label21"
-
-#~ msgid "label55"
-#~ msgstr "label55"
-
-#~ msgid "Local stores do not have a default folder"
-#~ msgstr "Lokala lagringar har ingen standardmapp"
-
-#~ msgid "Local folders may not be nested."
-#~ msgstr "Lokala mappar kan inte nästlas."
-
-#~ msgid "Enter the identity you wish to send this message from"
-#~ msgstr "Ange den identitet som du vill skicka detta meddelande ifrån"
-
-#~ msgid "Enter the subject of the mail"
-#~ msgstr "Ange ämnet på brevet"
-
-#~ msgid "Saving changes to message..."
-#~ msgstr "Sparar ändringar i meddelandet..."
-
-#~ msgid "Save changes to message..."
-#~ msgstr "Sparar ändringar i meddelande..."
-
-#~ msgid "Error saving composition to 'Drafts': %s"
-#~ msgstr "Fel vid sparande av alster i \"Drafts\": %s"
-
-#~ msgid "Body or subject contains"
-#~ msgstr "Meddelandetexten eller ämnet innehåller"
-
-#~ msgid "Body contains"
-#~ msgstr "Meddelandetexten innehåller"
-
-#~ msgid "Subject contains"
-#~ msgstr "Ämnesraden innehåller"
-
-#~ msgid "Body does not contain"
-#~ msgstr "Meddelandetexten innehåller inte"
-
-#~ msgid "Subject does not contain"
-#~ msgstr "Ämnesraden innehåller inte"
-
-#~ msgid "Sender contains"
-#~ msgstr "Avsändaren innehåller"
-
-#~ msgid "Note: When converting between mailbox formats, a failure\n"
-#~ msgstr ""
-#~ "Observera: Vid konvertering mellan brevlådeformat kommer ett misslyckande\n"
-
-#~ msgid "Connect to server"
-#~ msgstr "Anslut till server"
-
-#~ msgid "Account Properties"
-#~ msgstr "Kontoegenskaper"
-
-#~ msgid "Congratulations, your mail configuration is complete.\n"
-#~ msgstr "Gratulerar, din e-postkonfiguration är färdig.\n"
-
-#~ msgid "E-Mail Address:"
-#~ msgstr "E-postadress:"
-
-#~ msgid "Incoming Mail Server"
-#~ msgstr "Server för inkommande post"
-
-#~ msgid "Miscellaneous"
-#~ msgstr "Diverse"
-
-#~ msgid "Outgoing Mail Server"
-#~ msgstr "Server för utgående post"
-
-#~ msgid "Servers"
-#~ msgstr "Servrar"
-
-#~ msgid "Registering local folder"
-#~ msgstr "Registrerar lokal mapp"
-
-#~ msgid "Appending \"%s\""
-#~ msgstr "Tillägger \"%s\""
-
-#~ msgid "Appending a message without a subject"
-#~ msgstr "Tillägger ett meddelande utan en ämnesrad"
-
-#~ msgid "Moving messages from \"%s\" into \"%s\""
-#~ msgstr "Flyttar meddelanden från \"%s\" till \"%s\""
-
-#~ msgid "Copying messages from \"%s\" into \"%s\""
-#~ msgstr "Kopierar meddelanden från \"%s\" till \"%s\""
-
-#~ msgid "Move messages from \"%s\" into \"%s\""
-#~ msgstr "Flytta meddelanden från \"%s\" till \"%s\""
-
-#~ msgid "Copy messages from \"%s\" into \"%s\""
-#~ msgstr "Kopiera meddelanden från \"%s\" till \"%s\""
-
-#~ msgid "(No description)"
-#~ msgstr "(Ingen beskrivning)"
-
-#~ msgid "Loading %s Folder for %s"
-#~ msgstr "Läser in mappen %s för %s"
-
-#~ msgid "Load %s Folder for %s"
-#~ msgstr "Läs in mappen %s för %s"
-
-#~ msgid ""
-#~ "Error while preparing to %s:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Fel vid förberedelse av %s:\n"
-#~ "%s"
-
-#~ msgid ""
-#~ "Error while `%s':\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Fel vid \"%s\":\n"
-#~ "%s"
-
-#~ msgid "Error reading commands from dispatching thread."
-#~ msgstr "Fel vid läsning av kommandon från döende tråd."
-
-#~ msgid "Corrupted message from dispatching thread?"
-#~ msgstr "Trasigt meddelande från döende tråd?"
-
-#~ msgid "Could not create dialog box."
-#~ msgstr "Kunde inte skapa dialogfönster."
-
-#~ msgid ""
-#~ "Cannot open location `%s':\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Kan inte öppna platsen \"%s\":\n"
-#~ "%s"
-
-#~ msgid "Get store for \"%s\""
-#~ msgstr "Hämta lagringsutrymme för \"%s\""
-
-#~ msgid "Unsubscribe from folder \"%s\""
-#~ msgstr "Säg upp prenumeration på mappen \"%s\""
-
-#~ msgid "_Addressbook Configuration..."
-#~ msgstr "_Adressbokskonfiguration..."
-
-#~ msgid "_Print Contacts..."
-#~ msgstr "Skriv _ut kontakter..."
-
-#~ msgid "Ca_lendar"
-#~ msgstr "Ka_lender"
-
-#~ msgid "Calendar Preferences..."
-#~ msgstr "Inställningar för kalendern..."
-
-#~ msgid "_Print this calendar"
-#~ msgstr "Skriv _ut denna kalender"
-
-#~ msgid "Create Rule"
-#~ msgstr "Skapa regel"
-
-#~ msgid "Fi_lter on Sender"
-#~ msgstr "Fi_ltrera på avsändare"
-
-#~ msgid "Filter on Rec_ipients"
-#~ msgstr "Filtrera på _mottagare"
-
-#~ msgid "Get Mail"
-#~ msgstr "Hämta e-post"
-
-#~ msgid "Reply to _Sender"
-#~ msgstr "Svara till av_sändaren"
-
-#~ msgid "Show _All Messages"
-#~ msgstr "Visa _alla meddelanden"
-
-#~ msgid "_Filter on Subject"
-#~ msgstr "_Filtrera på ämne"
-
-#~ msgid "_Mail Configuration..."
-#~ msgstr "_E-postkonfiguration..."
-
-#~ msgid "_Open in New Window"
-#~ msgstr "_Öppna i nytt fönster"
-
-#~ msgid "_Print Message"
-#~ msgstr "Skriv _ut meddelande"
-
-#~ msgid "_VFolder on Subject"
-#~ msgstr "_Virtuell mapp på ämne"
-
-#~ msgid "New"
-#~ msgstr "Ny"
-
-#~ msgid "Customi_ze..."
-#~ msgstr "_Anpassa..."
-
-#~ msgid "Show the _Folder Bar"
-#~ msgstr "Visa _mappraden"
-
-#~ msgid "Show the _Shortcut Bar"
-#~ msgstr "Visa _genvägsraden"
-
-#~ msgid "_Settings"
-#~ msgstr "_Inställningar"
-
-#~ msgid "Find _Again"
-#~ msgstr "Sök ige_n..."
-
-#~ msgid "_Find..."
-#~ msgstr "_Sök..."
-
-#~ msgid "_Forms"
-#~ msgstr "_Formulär"
-
-#~ msgid "_Object"
-#~ msgstr "_Objekt"
-
-#~ msgid "_Redo"
-#~ msgstr "_Gör om"
-
-#~ msgid "_Replace..."
-#~ msgstr "_Ersätt..."
-
-#~ msgid "_Toolbars"
-#~ msgstr "_Verktygsrader"
-
-#~ msgid "_Undo"
-#~ msgstr "_Ångra"
-
-#~ msgid "S_ummary"
-#~ msgstr "S_ammanfattning"
-
-#~ msgid "Open..."
-#~ msgstr "Öppna..."
-
-#~ msgid "Days"
-#~ msgstr "dag"
-
-#~ msgid "Hours"
-#~ msgstr "timme"
-
-#~ msgid "Mail _to:"
-#~ msgstr "E-posta _till:"
-
-#~ msgid "Minutes"
-#~ msgstr "minut"
-
-#~ msgid "_Audio"
-#~ msgstr "_Ljud"
-
-#~ msgid "_Display"
-#~ msgstr "_Visa"
-
-#~ msgid "_Mail"
-#~ msgstr "_E-post"
-
-#~ msgid "_Program"
-#~ msgstr "_Program"
-
-#~ msgid ""
-#~ "Could not open file %s:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Kunde inte öppna filen %s:\n"
-#~ "%s"
-
-#~ msgid "Cancel"
-#~ msgstr "Avbryt"
-
-#~ msgid "Open a calendar"
-#~ msgstr "Öppna en kalender"
-
-#~ msgid "FIXME: _New Appointment"
-#~ msgstr "FIXME: _Nytt möte"
-
-#~ msgid "FIXME: _Note"
-#~ msgstr "FIXME: _Anteckning"
-
-#~ msgid "Group %i"
-#~ msgstr "Grupp %i"
-
-#~ msgid "Failed to perform regex search on message header: %s"
-#~ msgstr ""
-#~ "Misslyckades med att utföra sökning med reguljärt uttryck på "
-#~ "meddelandehuvud: %s"
-
-#~ msgid "You have no Outbox configured"
-#~ msgstr "Du har inte angivit någon utkorg"
-
-#~ msgid "Fetch email from %s"
-#~ msgstr "Hämta e-post från %s"
-
-#~ msgid "Filtering email on demand"
-#~ msgstr "Filtrerar e-post vid behov"
-
-#~ msgid "Filter email on demand"
-#~ msgstr "Filtrera e-post vid behov"
-
-#~ msgid "Sending queue"
-#~ msgstr "Skickar kö"
-
-#~ msgid "Send queue"
-#~ msgstr "Skicka kö"
-
-#~ msgid "Examining %s"
-#~ msgstr "Undersöker %s"
-
-#~ msgid ""
-#~ "Could not read UID cache file \"%s\". You may receive duplicate messages."
-#~ msgstr ""
-#~ "Kunde inte läsa UID-cachefilen \"%s\". Du kommer kanske att få dubbla kopior "
-#~ "av meddelanden."
-
-#~ msgid "Retrieving message %d of %d"
-#~ msgstr "Hämtar meddelande %d av %d"
-
-#~ msgid "Saving changes to %s"
-#~ msgstr "Sparar ändringar i %s"
-
-#~ msgid "Reflow Test"
-#~ msgstr "Reflow-test"
-
-#~ msgid "Copyright (C) 2000, Helix Code, Inc."
-#~ msgstr "Copyright © 2000 Helix Code, Inc."
-
-#~ msgid "This should test the reflow canvas item"
-#~ msgstr "Detta är ett test av reflow canvas-elementet"
-
-#~ msgid "UNIX mbox-format mail files"
-#~ msgstr "Brevlådefiler i UNIX-mbox-format"
-
-#~ msgid ""
-#~ "For reading mail delivered by the local system, and for storing mail on "
-#~ "local disk."
-#~ msgstr ""
-#~ "För läsning av e-post som levereras av det lokala systemet och som lagras på "
-#~ "lokal disk."
-
-#~ msgid "Create a new note"
-#~ msgstr "Skapa en ny anteckning"
-
-#~ msgid "Cannot initialize Evolution's notes component."
-#~ msgstr "Kan inte initiera Evolutions anteckningspostkomponent."
-
-#~ msgid "Notes Component: Could not initialize bonobo"
-#~ msgstr "Anteckningskomponent: Kunde inte initiera Bonobo"
-
-#~ msgid "<b>Error loading calendar:<br>Calendar in use."
-#~ msgstr "<b>Fel vid inläsning av kalender:<br>Kalendern upptagen."
-
-#~ msgid "Could not create a tasks file in `%s'"
-#~ msgstr "Kunde inte skapa en uppgiftsfil i \"%s\""
-
-#~ msgid "Could not create a folder in `%s'"
-#~ msgstr "Kunde inte skapa en mapp i \"%s\""
-
-#~ msgid " for "
-#~ msgstr " för "
-
-#~ msgid "UNIX MH-format mail directories (CamelLocal version)"
-#~ msgstr "Brevlådekataloger i UNIX-MH-format (CamelLocal-version)"
-
-#~ msgid "UNIX qmail maildir-format mail files (CamelLocal version)"
-#~ msgstr "UNIX-brevfiler i qmail-brevlådekatalogformat (CamelLocal-version)"
-
-#~ msgid "Show all hidden"
-#~ msgstr "Visa alla gömda"
-
-#~ msgid "Hide selected"
-#~ msgstr "Göm markerade"
-
-#~ msgid "Hide deleted"
-#~ msgstr "Göm borttagna"
-
-#~ msgid "Hide Subject"
-#~ msgstr "Göm ämnesrad"
-
-#~ msgid "Hide from Sender"
-#~ msgstr "Göm för avsändaren"
-
-#~ msgid "Hide Subject \"%s\""
-#~ msgstr "Göm ämnesraden \"%s\""
-
-#~ msgid "Hide from Sender <%s>"
-#~ msgstr "Göm för avsändaren <%s>"
-
-#~ msgid "You have no mail sources configured"
-#~ msgstr "Du har inte konfigurerat några e-postkällor"
-
-#~ msgid "Reply-to:"
-#~ msgstr "Svara-till:"
-
-#~ msgid ""
-#~ "Enter your name and email address to be used in outgoing mail. You may also, "
-#~ "optionally, enter the name of your organization, and the name of a file to "
-#~ "read your signature from."
-#~ msgstr ""
-#~ "Ange ditt namn och din e-postadress för utgående post. Du kan också, om du "
-#~ "vill, ange namnet på din organisation och en fil att läsa din signatur från."
-
-#~ msgid "Full name:"
-#~ msgstr "Fullständigt namn:"
-
-#~ msgid "Signature File"
-#~ msgstr "Signaturfil"
-
-#~ msgid "Server:"
-#~ msgstr "Server:"
-
-#~ msgid "Mail source type:"
-#~ msgstr "Typ av e-postkälla:"
-
-#~ msgid ""
-#~ "Select the kind of mail server you have, and enter the relevant information "
-#~ "about it.\n"
-#~ "\n"
-#~ "If the server requires authentication, you can click the \"Detect supported "
-#~ "types...\" button after entering the other information."
-#~ msgstr ""
-#~ "Välj den typ av e-postserver som du har och ange den relevanta informationen "
-#~ "om den.\n"
-#~ "\n"
-#~ "Om servern kräver autentisering kan du klicka på knappen \"Detektera vilka "
-#~ "typer som stöds...\" när du har angett den andra informationen."
-
-#~ msgid "News source type:"
-#~ msgstr "Typ av diskussionsgruppskälla:"
-
-#~ msgid ""
-#~ "Select the kind of news server you have, and enter the relevant information "
-#~ "about it.\n"
-#~ "\n"
-#~ "If the server requires authentication, you can click the \"Detect supported "
-#~ "types...\" button after entering the other information."
-#~ msgstr ""
-#~ "Välj den typ av diskussionsgruppsserver som du har och ange den relevanta "
-#~ "informationen om den.\n"
-#~ "\n"
-#~ "Om servern kräver autentisering kan du klicka på knappen \"Detektera de "
-#~ "typer som stöds...\" när du har angett den andra informationen."
-
-#~ msgid "Mail transport type:"
-#~ msgstr "Typ av e-posttransport:"
-
-#~ msgid "Add Identity"
-#~ msgstr "Lägg till identitet"
-
-#~ msgid "Edit Identity"
-#~ msgstr "Redigera identitet"
-
-#~ msgid "Edit Source"
-#~ msgstr "Redigera källa"
-
-#~ msgid "Add News Server"
-#~ msgstr "Lägg till diskussionsgruppsserver"
-
-#~ msgid "Edit News Server"
-#~ msgstr "Redigera diskussionsgruppsserver"
-
-#~ msgid "The connection was successful!"
-#~ msgstr "Anslutningen lyckades!"
-
-#~ msgid "Querying authorization capabilities of \"%s\""
-#~ msgstr "Frågar efter autentiseringsmöjligheterna hos \"%s\""
-
-#~ msgid "Query authorization at \"%s\""
-#~ msgstr "Fråga efter autentisering hos \"%s\""
-
-#~ msgid "Identities"
-#~ msgstr "Identiteter"
-
-#~ msgid "Mail Sources"
-#~ msgstr "E-postkällor"
-
-#~ msgid "Mail Transport"
-#~ msgstr "E-posttransport"
-
-#~ msgid "News Servers"
-#~ msgstr "Diskussionsgruppsservrar"
-
-#~ msgid "News Sources"
-#~ msgstr "Diskussionsgruppskällor"
-
-#~ msgid "Send messages in HTML format"
-#~ msgstr "Skicka meddelanden som HTML"
-
-#~ msgid "No GPG/PGP support available in this copy of Evolution."
-#~ msgstr "Det finns inget stöd för GPG/PGP i denna kopia av Evolution."
-
-#~ msgid "_Source"
-#~ msgstr "_Källa"
-
-#~ msgid "Mail Source"
-#~ msgstr "E-postkälla"
-
-#~ msgid "Sending a message without a subject"
-#~ msgstr "Skickar ett meddelande utan en ämnesrad"
-
-#~ msgid "Send a message without a subject"
-#~ msgstr "Skicka ett meddelande utan en ämnesrad"
-
-#~ msgid "Mark messages in folder \"%s\""
-#~ msgstr "Markera meddelanden i mappen \"%s\""
-
-#~ msgid "Scan folders in \"%s\""
-#~ msgstr "Genomsök mappar i \"%s\""
-
-#~ msgid "Creating \"%s\""
-#~ msgstr "Skapar \"%s\""
-
-#~ msgid "Exception while reporting result to shell component listener."
-#~ msgstr "Undantag vid rapportering av resultat till skalkomponentslyssnaren."
-
-#~ msgid "Save messages from folder \"%s\""
-#~ msgstr "Spara meddelanden från mappen \"%s\""
-
-#~ msgid "Rebuilding message view"
-#~ msgstr "Bygger om meddelandevyn"
-
-#~ msgid "Rebuild message view"
-#~ msgstr "Bygg om meddelandevyn"
-
-#~ msgid "External Directories"
-#~ msgstr "Externa kataloger"
-
-#~ msgid "Port Number:"
-#~ msgstr "Portnummer:"
-
-#~ msgid "Outline:"
-#~ msgstr "Ram:"
-
-#~ msgid "Headings:"
-#~ msgstr "Rubriker:"
-
-#~ msgid "Highlighted day:"
-#~ msgstr "Markerad dag:"
-
-#~ msgid "Day numbers:"
-#~ msgstr "Dagnummer:"
-
-#~ msgid "Current day's number:"
-#~ msgstr "Aktuella dagens nummer:"
-
-#~ msgid "To-Do item that is not yet due:"
-#~ msgstr "Att-göra-objekt som inte är aktuellt än:"
-
-#~ msgid "To-Do item that is due today:"
-#~ msgstr "Att-göra-objekt som ska utföras idag:"
-
-#~ msgid "To-Do item that is overdue:"
-#~ msgstr "Att-göra-objekt som skulle ha utförts:"
-
-#~ msgid "Expunging \"%s\""
-#~ msgstr "Tömmer \"%s\""
-
-#~ msgid "Expunge \"%s\""
-#~ msgstr "Töm \"%s\""
-
-#~ msgid "Attaching messages from folder \"%s\""
-#~ msgstr "Bifogar meddelanden i mappen \"%s\""
-
-#~ msgid "Attach messages from \"%s\""
-#~ msgstr "Bifoga meddelanden i \"%s\""
-
-#~ msgid "Forwarding messages \"%s\""
-#~ msgstr "Vidarebefordra meddelanden \"%s\""
-
-#~ msgid "Forwarding a message without a subject"
-#~ msgstr "Vidarebefordrar meddelande utan en ämnesrad"
-
-#~ msgid "Forward message \"%s\""
-#~ msgstr "Vidarebefordra meddelande \"%s\""
-
-#~ msgid ""
-#~ "Failed to generate mime part from message while generating forwarded message."
-#~ msgstr ""
-#~ "Misslyckades med att generera mime-del från meddelande när ett "
-#~ "vidarebefordrat meddelande skulle genereras."
-
-#~ msgid "Loading \"%s\""
-#~ msgstr "Läser in \"%s\""
-
-#~ msgid "Load \"%s\""
-#~ msgstr "Läs in \"%s\""
-
-#~ msgid "Synchronizing \"%s\""
-#~ msgstr "Synkroniserar \"%s\""
-
-#~ msgid "Synchronize \"%s\""
-#~ msgstr "Synkronisera \"%s\""
-
-#~ msgid "Displaying message UID \"%s\""
-#~ msgstr "Visar meddelande-UID \"%s\""
-
-#~ msgid "Clearing message display"
-#~ msgstr "Tömmer meddelandevisningen"
-
-#~ msgid "Display message UID \"%s\""
-#~ msgstr "Visa meddelande-UID \"%s\""
-
-#~ msgid "Opening messages from folder \"%s\""
-#~ msgstr "Öppnar meddelanden från mappen \"%s\""
-
-#~ msgid "Open messages from \"%s\""
-#~ msgstr "Öppnar meddelanden från \"%s\""
-
-#~ msgid "Viewing messages from folder \"%s\""
-#~ msgstr "Visar meddelanden från mappen \"%s\""
-
-#~ msgid "View messages from \"%s\""
-#~ msgstr "Visa meddelanden från \"%s\""
-
-#~ msgid "Retrieving message %d of %d (uid \"%s\")"
-#~ msgstr "Hämtar meddelande %d av %d (uid \"%s\")"
-
-#~ msgid "N_ew Directory Server"
-#~ msgstr "N_y katalogserver"
-
-#~ msgid "appointment"
-#~ msgstr "möte"
-
-#~ msgid "task"
-#~ msgstr "uppgift"
-
-#~ msgid "journal entry"
-#~ msgstr "dagbokspost"
-
-#~ msgid "Year:"
-#~ msgstr "År:"
-
-#~ msgid ""
-#~ "Please select the date you want to go to.\n"
-#~ "When you click on a day, you will be taken\n"
-#~ "to that date."
-#~ msgstr ""
-#~ "Var vänlig och välj datumet dit du vill gå.\n"
-#~ "När du klickar på en dag kommer du att tas\n"
-#~ "till det datumet."
-
-#~ msgid "_Mail Configuration"
-#~ msgstr "_E-postkonfiguration"
-
-#~ msgid "_Save Calendar As"
-#~ msgstr "_Spara kalendern som"
-
-#~ msgid "may"
-#~ msgstr "maj"
-
-#~ msgid "sept"
-#~ msgstr "sept"
-
-#~ msgid "sunday"
-#~ msgstr "söndag"
-
-#~ msgid "monday"
-#~ msgstr "måndag"
-
-#~ msgid "tuesday"
-#~ msgstr "tisdag"
-
-#~ msgid "tues"
-#~ msgstr "tis"
-
-#~ msgid "wednesday"
-#~ msgstr "onsdag"
-
-#~ msgid "wednes"
-#~ msgstr "ons"
-
-#~ msgid "thursday"
-#~ msgstr "torsdag"
-
-#~ msgid "thur"
-#~ msgstr "tor"
-
-#~ msgid "thurs"
-#~ msgstr "tors"
-
-#~ msgid "friday"
-#~ msgstr "fredag"
-
-#~ msgid "saturday"
-#~ msgstr "lördag"
-
-#~ msgid "fortnight"
-#~ msgstr "två veckor"
-
-#~ msgid "min"
-#~ msgstr "min"
-
-#~ msgid "sec"
-#~ msgstr "sek"
-
-#~ msgid "tomorrow"
-#~ msgstr "imorgon"
-
-#~ msgid "yesterday"
-#~ msgstr "igår"
-
-#~ msgid "today"
-#~ msgstr "idag"
-
-#~ msgid "last"
-#~ msgstr "senaste"
-
-#~ msgid "this"
-#~ msgstr "den"
-
-#~ msgid "next"
-#~ msgstr "nästa"
-
-#~ msgid "first"
-#~ msgstr "första"
-
-#~ msgid "third"
-#~ msgstr "tredje"
-
-#~ msgid "fourth"
-#~ msgstr "fjärde"
-
-#~ msgid "fifth"
-#~ msgstr "femte"
-
-#~ msgid "sixth"
-#~ msgstr "sjätte"
-
-#~ msgid "seventh"
-#~ msgstr "sjunde"
-
-#~ msgid "eighth"
-#~ msgstr "åttonde"
-
-#~ msgid "ninth"
-#~ msgstr "nionde"
-
-#~ msgid "tenth"
-#~ msgstr "tionde"
-
-#~ msgid "eleventh"
-#~ msgstr "elfte"
-
-#~ msgid "twelfth"
-#~ msgstr "tolfte"
-
-#~ msgid "ago"
-#~ msgstr "sen"
-
-#~ msgid "Could not create summary"
-#~ msgstr "Kunde inte skapa sammanfattning"
-
-#~ msgid "Could not rename folder %s to %s: destination exists"
-#~ msgstr "Kunde inte byta namn på mappen %s till %s: målet existerar"
-
-#~ msgid "Mbox folders may not be nested."
-#~ msgstr "Mbox-mappar kan inte nästlas."
-
-#~ msgid "Could not open summary %s"
-#~ msgstr "Kunde inte öppna sammanfattningen %s"
-
-#~ msgid "Summary mismatch, aborting sync"
-#~ msgstr "Sammanfattningen stämmer inte överens, avbryter synk"
-
-#~ msgid "Summary mismatch, X-Evolution header missing"
-#~ msgstr "Sammanfattningen stämmer inte överens, avbryter synk"
-
-#~ msgid "Cannot copy data to output file: %s"
-#~ msgstr "Kan inte kopiera data till utdatafil: %s"
-
-#~ msgid "Could not load or create summary"
-#~ msgstr "Kunde inte läsa in eller skapa sammanfattning"
-
-#~ msgid "Cannot append message to mh folder: %s"
-#~ msgstr "Kan inte lägga till meddelande i mh-mapp: %s"
-
-#~ msgid "Could not rename folder `%s': %s"
-#~ msgstr "Kunde inte byta namn på mappen \"%s\": %s"
-
-#~ msgid "Could not rename folder `%s': %s exists"
-#~ msgstr "Kunde inte byta namn på mappen \"%s\": %s existerar"
-
-#~ msgid "MH folders may not be nested."
-#~ msgstr "MH-mappar får inte nästlas."
-
-#~ msgid "Local mail directory %s"
-#~ msgstr "Lokal brevlådekatalog %s"
-
-#~ msgid "Couldn't create pipe to %s: %s"
-#~ msgstr "Kunde inte skapa rör till %s: %s"
-
-#~ msgid "Could not execute %s: %s\n"
-#~ msgstr "Kunde inte köra %s: %s\n"
-
-#~ msgid "Cannot fork %s: %s"
-#~ msgstr "Kan inte grena %s: %s"
-
-#~ msgid "Bold"
-#~ msgstr "Fet"
-
-#~ msgid "Sets something as bold"
-#~ msgstr "Sätt någonting till fetstil"
-
-#~ msgid "Cannot initialize Evolution's mail storage hash."
-#~ msgstr "Kan inte initiera Evolutions hashfunktion för e-postlagring."
-
-#~ msgid "Forward as Attachment"
-#~ msgstr "Vidarebefordra som bilaga"
-
-#~ msgid "Set Flag"
-#~ msgstr "Ställ flagga"
-
-#~ msgid "does not match regex"
-#~ msgstr "matchar inte reguljära uttrycket"
-
-#~ msgid "matches regex"
-#~ msgstr "matchar reguljära uttrycket"
-
-#~ msgid "Add Optional Fields..."
-#~ msgstr "Lägg till valfria fält..."
-
-#~ msgid "Additional Identity Fields"
-#~ msgstr "Extra identitetsfält"
-
-#~ msgid "Browse..."
-#~ msgstr "Bläddra..."
-
-#~ msgid "Edit Mail Configuration Settings"
-#~ msgstr "Redigera e-postkonfigurationsinställningar"
-
-#~ msgid "Preferred type: "
-#~ msgstr "Typ som föredras: "
-
-#~ msgid ""
-#~ "You are almost done with the mail configuration process. The identity, "
-#~ "incoming"
-#~ msgstr "Du är nästan färdig med e-postkonfigurationen. Identiteten "
-
-#~ msgid ""
-#~ "Your mail server supports the following types of authentication. Please"
-#~ msgstr ""
-#~ "Din e-postserver stöder följande typer av autentisering. Var vänlig och"
-
-#~ msgid "_New appointment..."
-#~ msgstr "_Nytt möte..."
-
-#~ msgid "_Create New Folder..."
-#~ msgstr "_Skapa ny mapp..."
-
-#~ msgid "Create to-do item"
-#~ msgstr "Skapa att-göra-objekt"
-
-#~ msgid "Edit to-do item"
-#~ msgstr "Redigera att-göra-objekt"
-
-#~ msgid "Due Date:"
-#~ msgstr "Förfallodatum:"
-
-#~ msgid "Item Comments:"
-#~ msgstr "Objektkommentarer:"
-
-#~ msgid "Time display"
-#~ msgstr "Tidsvisning"
-
-#~ msgid "Time format"
-#~ msgstr "Tidsformat"
-
-#~ msgid "12-hour (AM/PM)"
-#~ msgstr "12-timmars (FM/EM)"
-
-#~ msgid "24-hour"
-#~ msgstr "24-timmars"
-
-#~ msgid "Weeks start on"
-#~ msgstr "Veckor börjar på"
-
-#~ msgid "Day range"
-#~ msgstr "Dagsintervall"
-
-#~ msgid ""
-#~ "Please select the start and end hours you want\n"
-#~ "to be displayed in the day view and week view.\n"
-#~ "Times outside this range will not be displayed\n"
-#~ "by default."
-#~ msgstr ""
-#~ "Var vänlig och välj den starttimme och sluttimme\n"
-#~ "som du vill ska visas i dagsvyn och veckovyn.\n"
-#~ "Tider utanför detta intervall kommer inte att\n"
-#~ "visas som standard."
-
-#~ msgid "Day end:"
-#~ msgstr "Dagsslut:"
-
-#~ msgid "Colors for display"
-#~ msgstr "Färger för visning"
-
-#~ msgid "Show on TODO List:"
-#~ msgstr "Visa på ATT GÖRA-listan:"
-
-#~ msgid "To Do List style options:"
-#~ msgstr "Stilalternativ för att-göra-listan"
-
-#~ msgid "Highlight overdue items"
-#~ msgstr "Markera objekt som skulle ha utförts"
-
-#~ msgid "Highlight not yet due items"
-#~ msgstr "Markera objekt som inte är aktuella än"
-
-#~ msgid "To Do List Properties"
-#~ msgstr "Egenskaper för att-göra-listan"
-
-#~ msgid "To Do List"
-#~ msgstr "Att-göra-lista"
-
-#~ msgid "Preferences"
-#~ msgstr "Inställningar"
-
-#~ msgid "Alarm Properties"
-#~ msgstr "Egenskaper för alarm"
-
-#~ msgid "Beep on display alarms"
-#~ msgstr "Pip vid alarmvisning"
-
-#~ msgid "Audio alarms timeout after"
-#~ msgstr "Ljudalarm stängs av efter"
-
-#~ msgid "Enable snoozing for "
-#~ msgstr "Aktivera slummer i "
-
-#~ msgid "Viewing message sources from folder \"%s\""
-#~ msgstr "Visar meddelandekällor från mappen \"%s\""
-
-#~ msgid "View message sources from \"%s\""
-#~ msgstr "Visa meddelandekällor från \"%s\""
-
-#~ msgid "Threading message list"
-#~ msgstr "Trådar meddelandelista"
-
-#~ msgid "Thread message list"
-#~ msgstr "Tråda meddelandelista"
-
-#~ msgid ""
-#~ "This appointment has custom recurrence rules that cannot be edited by "
-#~ "Evolution.\n"
-#~ "\n"
-#~ "However, the appointment will recur at the appropriate time and will be "
-#~ "displayed properly in the calendar views."
-#~ msgstr ""
-#~ "Det här mötet har anpassade upprepningsregler som inte kan redigeras av "
-#~ "Evolution.\n"
-#~ "\n"
-#~ "Mötet kommer dock att dyka upp vid den angivna tiden och kommer att visas "
-#~ "korrekt i kalendervyerna."
-
-#~ msgid "Custom search"
-#~ msgstr "Anpassad sökning"
-
-#~ msgid ""
-#~ "Welcome to the Evolution Mail configuration wizard!\n"
-#~ "By filling in some information about your email\n"
-#~ "settings, you can start sending and receiving email\n"
-#~ "right away. Click Next to continue."
-#~ msgstr ""
-#~ "Välkommen till Evolutions guide för e-postkonfiguration!\n"
-#~ "Efter att ha fyllt i en del information om dina\n"
-#~ "e-postinställningar kan du börja skicka och ta emot e-post\n"
-#~ "direkt. Klicka på \"Nästa\" för att fortsätta."
-
-#~ msgid "Recur on the"
-#~ msgstr "Upprepa den"
-
-#~ msgid "th day of the month"
-#~ msgstr ":e dagen i månaden"
-
-#~ msgid " (XXX unread)"
-#~ msgstr " (XXX olästa)"
-
-#~ msgid "Don't know protocol to open URI `%s'"
-#~ msgstr "Känner inte till protokoll för att öppna URI:n \"%s\""
-
-#~ msgid "_Copy to Folder"
-#~ msgstr "_Kopiera till mapp"
-
-#~ msgid "_Move to Folder"
-#~ msgstr "_Flytta till mapp"
-
-#~ msgid "Forward Message"
-#~ msgstr "Vidarebefordra meddelande"
-
-#~ msgid "Copy Message"
-#~ msgstr "Kopiera meddelande"
-
-#~ msgid "Quick Search"
-#~ msgstr "Snabbsökning"
-
-#~ msgid "Bad storage URL (no server): %s"
-#~ msgstr "Felaktig lagrings-URL (ingen server): %s"
-
-#~ msgid "BLARG\n"
-#~ msgstr "BLARG\n"
-
-#~ msgid "Could not connect to IMAP server on %s."
-#~ msgstr "Kunde inte ansluta till IMAP-servern på %s."
-
-#~ msgid "Evolution Address conduit "
-#~ msgstr "Adresser"
-
-#~ msgid "Configure the address conduit"
-#~ msgstr "Konfigurera adresskanalen"
-
-#~ msgid "Configure the GnomeCal conduit"
-#~ msgstr "Konfigurera GnomeCal-kanalen"
-
-#~ msgid "Evolution ToDo conduit "
-#~ msgstr "Att göra-lista"
-
-#~ msgid "Configure the todo conduit"
-#~ msgstr "Konfigurerar att göra-listan"
diff --git a/po/tr.po b/po/tr.po
deleted file mode 100644
index 88c97c1171..0000000000
--- a/po/tr.po
+++ /dev/null
@@ -1,8696 +0,0 @@
-# -------------------------------------------------------
-# Copyright (C) 2000 Free Software Foundation, Inc.
-# Fatih Demir <kabalak@gmx.net>, 2000.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: evolution 0.10\n"
-"POT-Creation-Date: 2001-04-21 11:37+0200\n"
-"PO-Revision-Date: 2001-03-25 19:30+0200\n"
-"Last-Translator: Görkem Çetin <gorkem@gelecek.com.tr>\n"
-"Language-Team: GNOME Turk <gnome-turk@gnome.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-9\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: addressbook/backend/ebook/e-card.c:3209
-msgid "Card: "
-msgstr "Kart: "
-
-#: addressbook/backend/ebook/e-card.c:3211
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-"\n"
-"Ýsim: "
-
-#: addressbook/backend/ebook/e-card.c:3212
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-"\n"
-" Önek: "
-
-#: addressbook/backend/ebook/e-card.c:3213
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-"\n"
-" Verilen: "
-
-#: addressbook/backend/ebook/e-card.c:3214
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-"\n"
-" Ek: "
-
-#: addressbook/backend/ebook/e-card.c:3215
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-"\n"
-" Aile: "
-
-#: addressbook/backend/ebook/e-card.c:3216
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-"\n"
-" Sonek: "
-
-#: addressbook/backend/ebook/e-card.c:3230
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-"\n"
-"Doðum Günü: "
-
-#: addressbook/backend/ebook/e-card.c:3241
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-"\n"
-"Adres:"
-
-#: addressbook/backend/ebook/e-card.c:3243
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-"\n"
-" Posta Kutusu: "
-
-#: addressbook/backend/ebook/e-card.c:3244
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-"\n"
-" Diðer: "
-
-#: addressbook/backend/ebook/e-card.c:3245
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-"\n"
-" Cadde: "
-
-#: addressbook/backend/ebook/e-card.c:3246
-msgid ""
-"\n"
-" City: "
-msgstr ""
-"\n"
-" Þehir: "
-
-#: addressbook/backend/ebook/e-card.c:3247
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-"\n"
-" Bölge: "
-
-#: addressbook/backend/ebook/e-card.c:3248
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-"\n"
-" Posta Kodu: "
-
-#: addressbook/backend/ebook/e-card.c:3249
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-"\n"
-" Ülke: "
-
-#: addressbook/backend/ebook/e-card.c:3262
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3274
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-"\n"
-"Telefonlar:\n"
-
-#: addressbook/backend/ebook/e-card.c:3277
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-"\n"
-"Telefon:"
-
-#: addressbook/backend/ebook/e-card.c:3301
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-"\n"
-"E-posta:\n"
-
-#: addressbook/backend/ebook/e-card.c:3304
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-"\n"
-"E-posta:"
-
-#: addressbook/backend/ebook/e-card.c:3323
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-"\n"
-"Postalayýcý: "
-
-#: addressbook/backend/ebook/e-card.c:3329
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-"\n"
-"Zaman Dilimi: "
-
-#: addressbook/backend/ebook/e-card.c:3337
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-"\n"
-"Coðrafi Konum: "
-
-#: addressbook/backend/ebook/e-card.c:3341
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-"\n"
-"Meslek: "
-
-#: addressbook/backend/ebook/e-card.c:3353
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-"\n"
-"Kurum: "
-
-#: addressbook/backend/ebook/e-card.c:3354
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-"\n"
-" Ýsim: "
-
-#: addressbook/backend/ebook/e-card.c:3355
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-"\n"
-" Ünite: "
-
-#: addressbook/backend/ebook/e-card.c:3356
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-"\n"
-" Ünite2: "
-
-#: addressbook/backend/ebook/e-card.c:3357
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-"\n"
-" Ünite3: "
-
-#: addressbook/backend/ebook/e-card.c:3358
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-"\n"
-" Ünite5: "
-
-#: addressbook/backend/ebook/e-card.c:3362
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-"\n"
-"Sýnýflar: "
-
-#: addressbook/backend/ebook/e-card.c:3363
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-"\n"
-"Açýklama: "
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3376
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-"\n"
-"Özel Dizi: "
-
-#: addressbook/backend/ebook/e-card.c:3379
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-"\n"
-"Açýk Anahtar: "
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:1
-msgid "Factory to import GnomeCard files into Evolution."
-msgstr "GnomeCard dosyalarýný Evolution'a aktarým mimarisi."
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:2
-msgid "Imports GnomeCard files into Evolution."
-msgstr "GnomeCard dosyalarýný Evolution'a aktarýr."
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:21
-#: addressbook/backend/ebook/load-pine-addressbook.c:22
-#: addressbook/backend/ebook/test-client-list.c:23
-#: addressbook/backend/ebook/test-client.c:33
-#: addressbook/conduit/address-conduit.c:1092
-#: addressbook/gui/component/addressbook-factory.c:43
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:99 calendar/gui/main.c:57
-msgid "Could not initialize Bonobo"
-msgstr "Bonobo'yu baþlatamadým"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr "Ýmleç yüklenemedi\n"
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr "EBook yüklenmedi\n"
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr "wombat sunucusu baþlatýlamadý"
-
-#: addressbook/conduit/address-conduit.c:655
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr "Wombat baþlatýlamadý"
-
-#: addressbook/conduit/address-conduit.c:687
-#: addressbook/conduit/address-conduit.c:690
-msgid "Could not read pilot's Address application block"
-msgstr "Pilot adres uygulama defteri okunamadý"
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:7
-msgid "Add"
-msgstr "Ekle"
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr "_Yýldönümü:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr "_Meslek"
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr "Ýþyeri _Faksý"
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-msgid "C_ontacts..."
-msgstr "_Baðlantýlar..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr "Kategoriler..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-msgid "Contact Editor"
-msgstr "Ýletiþim Düzenleyici"
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr "Ayrýntýlar"
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr "Farklý Dosyala:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-msgid "General"
-msgstr "Genel"
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr "Yeni telefon türü"
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-msgid "No_tes:"
-msgstr "_Notlar:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr "Telefon Türleri"
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1284
-msgid "Primary Email"
-msgstr "Birincil E-posta Adresi"
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr "_HTML e-postalarýný kabul ediyor"
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr "Web adresi:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:74
-msgid "_Add"
-msgstr "_Ekle"
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr "_Adres..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr "_Sekreterinin adý:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr "_Doðum günü:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr "_Meslek"
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-msgid "_Company:"
-msgstr "Þ_irket:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/mail-config.glade.h:75 ui/evolution-event-editor.xml.h:57
-#: ui/evolution-mail.xml.h:93 ui/evolution-task-editor-dialog.xml.h:69
-msgid "_Delete"
-msgstr "_Sil"
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr "_Bölüm:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr "_Tam Ýsim..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-msgid "_Home"
-msgstr "_Ev"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-msgid "_Job title:"
-msgstr "_Meslek tanýmý:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr "_Menejerinin adý:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-msgid "_Mobile"
-msgstr "_Cep"
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr "_Lakap:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr "_Ofis:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr "_Uzmanlýk alaný:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr "_Eþ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr "_Bu mektuplaþma adresidir"
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-msgid "Delete Contact?"
-msgstr "Baðlantýyý Sil?"
-
-#: addressbook/contact-editor/e-contact-editor.c:603
-msgid "This contact belongs to these categories:"
-msgstr "Bu baðlantý adý aþaðýdaki sýnýflandýrmalara girer:"
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-#: addressbook/gui/widgets/e-addressbook-view.c:676
-msgid "Assistant"
-msgstr "Yardýmcý"
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/contact-editor/e-contact-editor.c:1310
-msgid "Business"
-msgstr "Meslek"
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-msgid "Business 2"
-msgstr "2. Meslek"
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#: addressbook/gui/widgets/e-addressbook-view.c:656
-msgid "Business Fax"
-msgstr "Ýþyeri Faksý"
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Callback"
-msgstr "Geri Arama"
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "Car"
-msgstr "Araba"
-
-#: addressbook/contact-editor/e-contact-editor.c:1248
-msgid "Company"
-msgstr "Þirket"
-
-#: addressbook/contact-editor/e-contact-editor.c:1249
-#: addressbook/contact-editor/e-contact-editor.c:1311
-msgid "Home"
-msgstr "Ev"
-
-#: addressbook/contact-editor/e-contact-editor.c:1250
-msgid "Home 2"
-msgstr "2. ev"
-
-#: addressbook/contact-editor/e-contact-editor.c:1251
-#: addressbook/gui/widgets/e-addressbook-view.c:657
-msgid "Home Fax"
-msgstr "Ev Faksý"
-
-#: addressbook/contact-editor/e-contact-editor.c:1252
-#: addressbook/gui/widgets/e-addressbook-view.c:660
-msgid "ISDN"
-msgstr "ISDN"
-
-#: addressbook/contact-editor/e-contact-editor.c:1253
-msgid "Mobile"
-msgstr "Cep"
-
-#: addressbook/contact-editor/e-contact-editor.c:1254
-#: addressbook/contact-editor/e-contact-editor.c:1312
-#: calendar/gui/e-meeting-dialog.glade.h:14 mail/mail-config.glade.h:40
-msgid "Other"
-msgstr "Diðer"
-
-#: addressbook/contact-editor/e-contact-editor.c:1255
-#: addressbook/gui/widgets/e-addressbook-view.c:662
-msgid "Other Fax"
-msgstr "Baþka Fakslar"
-
-#: addressbook/contact-editor/e-contact-editor.c:1256
-#: addressbook/gui/widgets/e-addressbook-view.c:663
-msgid "Pager"
-msgstr "Çaðrý Cihazý"
-
-#: addressbook/contact-editor/e-contact-editor.c:1257
-msgid "Primary"
-msgstr "Ýlk"
-
-#: addressbook/contact-editor/e-contact-editor.c:1258
-#: addressbook/gui/widgets/e-addressbook-view.c:664
-msgid "Radio"
-msgstr "Radyo"
-
-#: addressbook/contact-editor/e-contact-editor.c:1259
-#: addressbook/gui/widgets/e-addressbook-view.c:665
-msgid "Telex"
-msgstr "Teleks"
-
-#: addressbook/contact-editor/e-contact-editor.c:1260
-msgid "TTY/TDD"
-msgstr "TTY/TDD"
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:668
-msgid "Email 2"
-msgstr "2. E-posta Adresi"
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/gui/widgets/e-addressbook-view.c:669
-msgid "Email 3"
-msgstr "3. E-posta Adresi"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:223
-msgid "Contact Quick-Add"
-msgstr "Baðlantýyý Hýzlý Ekle"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:225
-msgid "Edit Full"
-msgstr "Tümünü Düzenle"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:262
-#: addressbook/gui/widgets/e-addressbook-view.c:643
-msgid "Full Name"
-msgstr "Tam Ýsim"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:268
-msgid "E-mail"
-msgstr "E-posta"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr "_2. Adres:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr "Kanada"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr "Adresi Denetle"
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr "Ü_lke:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr "Finlandiya"
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr "ABD"
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr "_Adres:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-msgid "_City:"
-msgstr "Þ_ehir:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr "_Posta Kutusu:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr "_Bölge:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr "Posta _Numarasý:"
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr "Tam Ýsmi Kontrol Et"
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr "Dr."
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr "Esq."
-
-#: addressbook/contact-editor/fullname.glade.h:4
-msgid "I"
-msgstr "I"
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr "II"
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr "III"
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr "Jr."
-
-#: addressbook/contact-editor/fullname.glade.h:8
-msgid "Miss"
-msgstr "Miss"
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr "Bay"
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr "Bn."
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr "Bn."
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr "Sr."
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr "_Birinci:"
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr "_Soyadý:"
-
-#: addressbook/contact-editor/fullname.glade.h:15
-msgid "_Middle:"
-msgstr "_Ortanca:"
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr "S_onek:"
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr "_Sýfatý:"
-
-#: addressbook/gui/component/addressbook.c:241
-msgid "As _Minicards"
-msgstr "_Minikartlar olarak"
-
-#: addressbook/gui/component/addressbook.c:247
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr "_Tablo olarak"
-
-#: addressbook/gui/component/addressbook.c:399
-#, c-format
-msgid "Enter password for %s"
-msgstr "%s için parolayý girin"
-
-#: addressbook/gui/component/addressbook.c:427
-msgid "Unable to open addressbook"
-msgstr "Adres defterini açamadým"
-
-#: addressbook/gui/component/addressbook.c:432
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or have tried\n"
-"to access an LDAP server and don't have LDAP support\n"
-"compiled in. If you've entered a URI, check the URI for\n"
-"correctness and reenter. If not, you probably have\n"
-"attempted to access an LDAP server. If you wish to be\n"
-"able to use LDAP, you'll need to download and install\n"
-"OpenLDAP and recompile and install Evolution.\n"
-msgstr ""
-"Bu adres defteri açýlamadý. Bu durum, yanlýþ bir\n"
-"URI bilgisi verilmesinden ya da LDAP desteðine sahip \n"
-"olmadan bir sunucuya ulaþmaya denendiði için olabilir.\n"
-"Bir URI verilmiþse bu URI'nin doðruluðundan emin olun.\n"
-"Ayrýca bir LDAP sunucusuna eriþmeniz halinde lütfen \n"
-"openLdap paketini kurduktan sonra Evolution'u yeniden \n"
-"derleyin.\n"
-
-#: addressbook/gui/component/addressbook.c:555
-msgid "Show All"
-msgstr "Tümünü Göster"
-
-#: addressbook/gui/component/addressbook.c:557
-msgid "Advanced..."
-msgstr "Geliþmiþ..."
-
-#: addressbook/gui/component/addressbook.c:587 calendar/gui/gnome-cal.c:236
-msgid "Any field contains"
-msgstr "Herhangi bir alanýn içeriði"
-
-#: addressbook/gui/component/addressbook.c:588
-msgid "Name contains"
-msgstr "Ýsim içeriði"
-
-#: addressbook/gui/component/addressbook.c:589
-msgid "Email contains"
-msgstr "E-posta içeriði"
-
-#: addressbook/gui/component/addressbook.c:732
-msgid "The URI that the Folder Browser will display"
-msgstr "Dizin tarayýcýsýnýn göstereceði URI"
-
-#: addressbook/gui/component/addressbook-storage.c:99
-msgid "Other Contacts"
-msgstr "Diðer Baðlantýlar"
-
-#: addressbook/gui/component/addressbook-config.c:148
-msgid "LDAP Server"
-msgstr "LDAP Sunucusu"
-
-#: addressbook/gui/component/addressbook-config.c:150
-msgid "File"
-msgstr "Dosya"
-
-#: addressbook/gui/component/addressbook-config.c:153
-msgid "Unknown addressbook type"
-msgstr "Bilinmeyen adres defteri türü"
-
-#: addressbook/gui/component/addressbook-config.c:163
-msgid "None (anonymous mode)"
-msgstr "Hiçbiri (anonim kipi)"
-
-#: addressbook/gui/component/addressbook-config.c:165
-#: camel/camel-sasl-plain.c:32 camel/providers/imap/camel-imap-provider.c:80
-#: camel/providers/nntp/camel-nntp-store.c:291
-#: camel/providers/pop3/camel-pop3-provider.c:67 mail/mail-config.glade.h:43
-msgid "Password"
-msgstr "Parola"
-
-#: addressbook/gui/component/addressbook-config.c:167
-msgid "SASL"
-msgstr "SASL"
-
-#: addressbook/gui/component/addressbook-config.c:170
-msgid "Unknown auth type"
-msgstr "Bilinmeyen kimlik denetim türü"
-
-#: addressbook/gui/component/addressbook-config.c:179
-msgid "Base"
-msgstr "Temel"
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "One"
-msgstr "Biri"
-
-#: addressbook/gui/component/addressbook-config.c:183
-msgid "Subtree"
-msgstr "Alt Aðaç"
-
-#: addressbook/gui/component/addressbook-config.c:186
-msgid "Unknown scope type"
-msgstr "Bilinmeyen saha türü"
-
-#: addressbook/gui/component/addressbook-config.c:353
-msgid "Bind DN:"
-msgstr "Baðlantý DN:"
-
-#: addressbook/gui/component/addressbook-config.c:354
-msgid "FIXME Bind DN Help text here"
-msgstr "Bind DN yardým metni"
-
-#: addressbook/gui/component/addressbook-config.c:356
-#: mail/mail-config.glade.h:50
-msgid "Remember this password"
-msgstr "Bu parolayý hatýrla"
-
-#: addressbook/gui/component/addressbook-config.c:406
-#: mail/mail-config.glade.h:28
-msgid "Host:"
-msgstr "Makina:"
-
-#: addressbook/gui/component/addressbook-config.c:407
-msgid "FIXME Host help text here."
-msgstr "Makine yardým metni"
-
-#: addressbook/gui/component/addressbook-config.c:409
-msgid "Port:"
-msgstr "Port:"
-
-#: addressbook/gui/component/addressbook-config.c:410
-msgid "FIXME Port help text here."
-msgstr "Port yardým metni"
-
-#: addressbook/gui/component/addressbook-config.c:414
-msgid "Root DN:"
-msgstr "Kök DN:"
-
-#: addressbook/gui/component/addressbook-config.c:415
-msgid "FIXME Root DN help text here."
-msgstr "Root DN yardým metni"
-
-#: addressbook/gui/component/addressbook-config.c:435
-msgid "Search Scope:"
-msgstr "Arama Sahasý:"
-
-#: addressbook/gui/component/addressbook-config.c:489
-msgid "Authentication:"
-msgstr "Kimlik Denetimi:"
-
-#: addressbook/gui/component/addressbook-config.c:507
-#: mail/mail-config.glade.h:44
-msgid "Path:"
-msgstr "Yol:"
-
-#: addressbook/gui/component/addressbook-config.c:508
-msgid "FIXME Path Help text here"
-msgstr "Yol yardým metni"
-
-#: addressbook/gui/component/addressbook-config.c:513
-msgid "Create path if it doesn't exist."
-msgstr "Eðer yoksa yol oluþtur."
-
-#: addressbook/gui/component/addressbook-config.c:647
-msgid "Edit Addressbook"
-msgstr "Adres Defterini Düzenle"
-
-#: addressbook/gui/component/addressbook-config.c:649
-msgid "Add Addressbook"
-msgstr "Adres Defterine Ekle"
-
-#: addressbook/gui/component/addressbook-config.c:665
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr "Sahip olduðunuz adres defterini seçin ve gerekli bilgileri girin."
-
-#: addressbook/gui/component/addressbook-config.c:671
-#: mail/mail-config.glade.h:35
-msgid "Name:"
-msgstr "Ýsim:"
-
-#: addressbook/gui/component/addressbook-config.c:672
-msgid "FIXME Name help text here"
-msgstr "Ýsim yardým metni"
-
-#: addressbook/gui/component/addressbook-config.c:674
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr "Açýklama:"
-
-#: addressbook/gui/component/addressbook-config.c:675
-msgid "FIXME Description help text here"
-msgstr "Açýklama yardým metni"
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-msgid "Addressbook Sources"
-msgstr "Adres Defteri Kaynaklarý"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: addressbook/gui/widgets/e-addressbook-view.c:578
-#: addressbook/gui/widgets/e-minicard.c:673
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:11 mail/folder-browser.c:597
-#: mail/mail-config.glade.h:19 mail/mail-view.c:156
-#: ui/evolution-addressbook.xml.h:3 ui/evolution-event-editor.xml.h:17
-#: ui/evolution-mail.xml.h:11 ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr "Sil"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:23
-msgid "Edit"
-msgstr "Düzenle"
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-msgid "Name"
-msgstr "Ýsim"
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-msgid "URI"
-msgstr "URI"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Disable Queries"
-msgstr "Aramalarý Kapat"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Enable Queries (Dangerous!)"
-msgstr "Aramalarý Etkinleþtir (Tehlikeli!)"
-
-#: addressbook/gui/component/e-address-widget.c:388
-#: addressbook/gui/component/select-names/e-select-names-popup.c:210
-msgid "Edit Contact Info"
-msgstr "Baðlantý Bilgisini Düzenle"
-
-#: addressbook/gui/component/e-address-widget.c:424
-#: addressbook/gui/component/select-names/e-select-names-popup.c:269
-msgid "Add to Contacts"
-msgstr "Baðlantýlara Ekle"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-msgid "A Bonobo control for an address popup."
-msgstr "Adres menüsü için Bonobo denetleyici"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A Bonobo control for displaying an address."
-msgstr "Adres gösteren örnek bir Bonobo denetleyici"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr "Adres defteri gösteren örnek bir Bonobo denetleyici"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr "Evolution adres defteri mini kartýný gösteren denetleyici."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-msgid "Evolution Addressbook minicard viewer"
-msgstr "Evolution Adres Defteri mini kart görüntüleyici"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-msgid "Evolution component for handling contacts."
-msgstr "Baðlantýlarý düzenleyen Evolution bileþeni."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-msgid "Factory for the Addressbook Minicard control"
-msgstr "Adres defteri mini kart mimarisi"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-msgid "Factory for the Addressbook's address displayer"
-msgstr "Adres defteri isim gösterim arayüzü mimarisi"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-msgid "Factory for the Addressbook's address popup"
-msgstr "Adres defteri menüsü mimarisi"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:10
-msgid "Factory for the Evolution addressbook component."
-msgstr "Evolution adres defteri bileþen mimarisi"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:11
-msgid "Factory for the sample Addressbook control"
-msgstr "Örnek adres defteri kontrol mimarisi"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-msgid "Evolution's addressbook name selection interface."
-msgstr "Evolution adres defteri isim seçme arayüzü."
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr "Adres defteri isim seçim arayüzü mimarisi"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:131
-#: composer/e-msg-composer-attachment-bar.c:468 filter/filter-filter.c:401
-#: filter/filter-rule.c:549 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:265 shell/e-shortcuts-view.c:388
-msgid "Remove"
-msgstr "Sil"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:146
-msgid "Remove All"
-msgstr "Tümünü Sil"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr "Bul..."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-msgid "Message Recipients"
-msgstr "Ýleti Alýcýlarý"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-msgid "Select Names"
-msgstr "Ýsimleri Seçin"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-msgid "Select name from:"
-msgstr "Ýsimleri seçin:"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:158
-msgid "Search"
-msgstr "Ara"
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr "123"
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr "a"
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr "b"
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr "c"
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr "d"
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr "e"
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr "f"
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr "g"
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr "h"
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr "i"
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr "j"
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr "k"
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr "l"
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr "m"
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr "n"
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-msgid "o"
-msgstr "o"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr "p"
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr "q"
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-msgid "r"
-msgstr "r"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr "s"
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr "t"
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr "u"
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr "v"
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr "w"
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr "x"
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr "y"
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr "z"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:513
-#: addressbook/gui/widgets/e-addressbook-view.c:573
-#: addressbook/gui/widgets/e-minicard.c:466
-#: addressbook/gui/widgets/e-minicard.c:668
-msgid "Save as VCard"
-msgstr "VCard olarak kaydet"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:574
-#: addressbook/gui/widgets/e-minicard.c:669
-msgid "Send contact to other"
-msgstr "Baðlantýyý baþkasýna gönder"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:575
-#: addressbook/gui/widgets/e-minicard.c:670
-msgid "Send message to contact"
-msgstr "Baðlantýya mesaj gönder"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:576
-#: addressbook/gui/widgets/e-minicard.c:671 mail/folder-browser.c:572
-#: mail/mail-view.c:154 ui/evolution-addressbook.xml.h:9
-#: ui/evolution-calendar.xml.h:23 ui/evolution-mail.xml.h:51
-#: ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr "Yazdýr"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:577
-#: addressbook/gui/widgets/e-minicard.c:672
-msgid "Print Envelope"
-msgstr "Zarfý Yazdýr"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:641
-msgid "* Click here to add a contact *"
-msgstr "* Baðlantý eklemek buraya týklayýn *"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:642
-msgid "File As"
-msgstr "Farklý Dosyala"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:644
-msgid "Email"
-msgstr "E-posta"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:645
-msgid "Primary Phone"
-msgstr "Ýlk Telefon"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:646
-msgid "Assistant Phone"
-msgstr "Sekreter Telefonu"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:647
-msgid "Business Phone"
-msgstr "Ýþ Telefonu"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:648
-msgid "Callback Phone"
-msgstr "Geri Arama Telefonu"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:649
-msgid "Company Phone"
-msgstr "Þirket Telefonu"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:650
-msgid "Home Phone"
-msgstr "Ev Telefonu"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:651
-msgid "Organization"
-msgstr "Kurum"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:652
-msgid "Business Address"
-msgstr "Ýþyeri Adresi"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:653
-msgid "Home Address"
-msgstr "Ev Adresi"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:654
-msgid "Mobile Phone"
-msgstr "Cep Telefonu"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:655
-msgid "Car Phone"
-msgstr "Araç Telefonu"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:658
-msgid "Business Phone 2"
-msgstr "2. Ýþ Telefonu"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:659
-msgid "Home Phone 2"
-msgstr "2. Ev Telefonu"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:661
-msgid "Other Phone"
-msgstr "Diðer Telefonlar"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:666
-msgid "TTY"
-msgstr "TTY"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:667
-msgid "Other Address"
-msgstr "Diðer Adres"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:670
-msgid "Web Site"
-msgstr "Web Sayfasý"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:671
-msgid "Department"
-msgstr "Bölüm"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:672
-msgid "Office"
-msgstr "Ofis"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:673
-msgid "Title"
-msgstr "Sýfat"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:674
-msgid "Profession"
-msgstr "Uzmanlýk alaný"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:675
-msgid "Manager"
-msgstr "Yönetici"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:677
-msgid "Nickname"
-msgstr "Lakap"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:678
-msgid "Spouse"
-msgstr "Eþ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:679
-msgid "Note"
-msgstr "Not"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:680
-msgid "Free-busy URL"
-msgstr "Web Sayfasý"
-
-#: addressbook/gui/widgets/e-minicard-control.c:282
-msgid "Save in addressbook"
-msgstr "Adres Defterine kaydet"
-
-#: addressbook/gui/widgets/e-minicard-view.c:166
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-"\n"
-"\n"
-"Bu bakýþta gösterilecek öðe yok\n"
-"\n"
-"Buraya çift týklayarak bir baðlantý öðesini yarat."
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:26
-msgid "Card View"
-msgstr "Kart Görünümü"
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr "10 bn. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr "8 bn. Tahoma"
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr "Sonda boþ formlar:"
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr "Gövde"
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr "Alt:"
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr "Boyutlar:"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr "Yazýtipi..."
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr "Yazýtipleri"
-
-#: addressbook/printing/e-contact-print.glade.h:9
-msgid "Footer:"
-msgstr "Altbilgi:"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr "Biçim"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-msgid "Header"
-msgstr "Üstbilgi"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr "Üstbilgi/Altbilgi"
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr "Baþlýklar"
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr "Her mektup için baþlýklar"
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr "Yükseklik:"
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr "Birbirini ardýþýk takip et"
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr "Ýçer:"
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr "Yatay"
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr "Sol:"
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr "Kenarda harf sekmeleri"
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr "Marjin"
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr "Sütun sayýsý:"
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr "Seçenekler"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr "Konum"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr "Sayfa"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-msgid "Page Setup:"
-msgstr "Sayfa Ayarlarý:"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr "Kaðýt"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr "Kaðýt kaynaðý:"
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr "Portre"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr "Önizleme:"
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr "Gri tonlama kullanarak yazdýr"
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr "Çift sayfalarda ters çevir"
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr "Sað:"
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr "Bölümler:"
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr "Tonlama"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-msgid "Size:"
-msgstr "Boyut:"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr "Yeni bir sayfada baþla"
-
-#: addressbook/printing/e-contact-print.glade.h:38
-msgid "Style name:"
-msgstr "Stil adý:"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr "Tepe:"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-msgid "Type:"
-msgstr "Tip:"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr "Geniþlik:"
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr "Takvim sunucusuyla iletiþimde hata oluþtu"
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr "Pilot'tan takvim uygulama bloðu okunamadý"
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr "Pilot ToDO uygulama bloðu okunamadý"
-
-#: calendar/gui/calendar-commands.c:266
-msgid "File not found"
-msgstr "Dosya bulunamadý"
-
-#: calendar/gui/calendar-commands.c:290
-msgid "Open calendar"
-msgstr "Takvimi aç"
-
-#: calendar/gui/calendar-commands.c:332
-msgid "Save calendar"
-msgstr "Takvimi kaydet"
-
-#: calendar/gui/calendar-commands.c:468
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr "Takvim görünümü yaratýlamadý. ORBit ve OAF kurulumunu gözden geçirin."
-
-#: calendar/gui/calendar-model.c:360 calendar/gui/calendar-model.c:895
-#: calendar/gui/e-calendar-table.c:330
-msgid "Public"
-msgstr "Genel"
-
-#: calendar/gui/calendar-model.c:363 calendar/gui/calendar-model.c:897
-#: calendar/gui/e-calendar-table.c:331
-msgid "Private"
-msgstr "Özel"
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:899
-#: calendar/gui/e-calendar-table.c:332
-msgid "Confidential"
-msgstr "Gizli"
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/event-editor.c:1606
-#: calendar/gui/event-editor.c:1633
-#: camel/providers/smtp/camel-smtp-transport.c:218
-msgid "Unknown"
-msgstr "Bilinmiyor"
-
-#: calendar/gui/calendar-model.c:457
-msgid "N"
-msgstr "K"
-
-#: calendar/gui/calendar-model.c:457
-msgid "S"
-msgstr "G"
-
-#: calendar/gui/calendar-model.c:459
-msgid "E"
-msgstr "D"
-
-#: calendar/gui/calendar-model.c:459
-msgid "W"
-msgstr "B"
-
-#: calendar/gui/calendar-model.c:497 calendar/gui/calendar-model.c:1063
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:352 mail/message-list.c:662
-msgid "High"
-msgstr "Yüksek"
-
-#: calendar/gui/calendar-model.c:499 calendar/gui/calendar-model.c:1065
-#: calendar/gui/calendar-model.c:1569
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:353 mail/message-list.c:661
-msgid "Normal"
-msgstr "Normal"
-
-#: calendar/gui/calendar-model.c:501 calendar/gui/calendar-model.c:1067
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:354 mail/message-list.c:660
-msgid "Low"
-msgstr "Düþük"
-
-#: calendar/gui/calendar-model.c:537 calendar/gui/calendar-model.c:1119
-#: calendar/gui/e-calendar-table.c:406
-msgid "Transparent"
-msgstr "Þeffaf"
-
-#: calendar/gui/calendar-model.c:540 calendar/gui/calendar-model.c:1121
-#: calendar/gui/e-calendar-table.c:405
-msgid "Opaque"
-msgstr "Opak"
-
-#: calendar/gui/calendar-model.c:635 calendar/gui/calendar-model.c:1173
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:426
-msgid "Not Started"
-msgstr "Baþlamadý"
-
-#: calendar/gui/calendar-model.c:638 calendar/gui/calendar-model.c:1175
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:427
-msgid "In Progress"
-msgstr "Ýþlemde"
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1177
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:428
-msgid "Completed"
-msgstr "Tamamlandý"
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1179
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:429 camel/camel-service.c:550
-#: camel/camel-service.c:586
-msgid "Cancelled"
-msgstr "Ýptal Edildi"
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:791 e-util/e-time-utils.c:278
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr "%d/%m/%Y %a %H:%M:%S"
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:794 e-util/e-time-utils.c:287
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr "%a %d/%m/%Y %I:%M:%S %p"
-
-#: calendar/gui/calendar-model.c:799
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-"Gün, aþaðýdaki biçimde girilmelidir: \n"
-"\n"
-"%s"
-
-#: calendar/gui/calendar-model.c:879
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr "Sýnýflandýrma 'Genel', 'Özel', 'Gizli', ya da 'Hiçbiri' olmalýdýr."
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:893 calendar/gui/calendar-model.c:1117
-#: calendar/gui/calendar-model.c:1171 calendar/gui/e-calendar-table.c:329
-#: calendar/gui/e-calendar-table.c:404 mail/mail-account-gui.c:973
-#: mail/mail-accounts.c:120 mail/mail-accounts.c:164
-#: mail/mail-config.glade.h:37 shell/e-shell-view.c:1179
-#: widgets/misc/e-cell-date-edit.c:234 widgets/misc/e-dateedit.c:430
-#: widgets/misc/e-dateedit.c:1339 widgets/misc/e-dateedit.c:1454
-msgid "None"
-msgstr "Yok"
-
-#: calendar/gui/calendar-model.c:967
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-"Coðrafi konum aþaðýdaki biçimde girilmelidir:\n"
-"\n"
-"45.436845,125.862501"
-
-#: calendar/gui/calendar-model.c:1007
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr "Yüzde deðeri 0 ile 100 arasýnda bulunmalýdýr."
-
-#: calendar/gui/calendar-model.c:1048
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr "Öncelik deðeri 'Yüksek', 'Normal', 'Düþük' ya da 'Tanýmsýz' olmalýdýr."
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1061
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:355
-msgid "Undefined"
-msgstr "Tanýmsýz"
-
-#: calendar/gui/calendar-model.c:1102
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr "Þeffaflýk deðeri 'Þeffaf', 'Opak' ya da 'Hiçbiri' olmalýdýr."
-
-#: calendar/gui/calendar-model.c:1571
-msgid "Recurring"
-msgstr "Tekrarlama"
-
-#: calendar/gui/calendar-model.c:1573
-msgid "Assigned"
-msgstr "Görevlendirildi"
-
-#: calendar/gui/calendar-model.c:1579
-msgid "Yes"
-msgstr "Evet"
-
-#: calendar/gui/calendar-model.c:1579
-msgid "No"
-msgstr "Hayýr"
-
-#: calendar/gui/calendar-summary.c:196
-msgid "%A, %e %B %Y"
-msgstr "%e %B %Y %A"
-
-#: calendar/gui/calendar-summary.c:239 calendar/gui/calendar-summary.c:245
-msgid "%I:%M%p"
-msgstr "%I:%M%p"
-
-#: calendar/gui/calendar-summary.c:437
-msgid "<b>Error loading calendar</b>"
-msgstr "<b>Takvim yüklenirken hata oluþtu</b>"
-
-#: calendar/gui/calendar-summary.c:449
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr "<b>Takvim yüklenirken hata oluþtu:<br>Desteklenmeyen protokol"
-
-#: calendar/gui/calendar-summary.c:616
-msgid "Display"
-msgstr "Gösterim"
-
-#: calendar/gui/calendar-summary.c:621
-msgid "Show appointments"
-msgstr "Randevularý göster"
-
-#: calendar/gui/calendar-summary.c:629
-msgid "Show tasks"
-msgstr "Görevleri göster"
-
-#: calendar/gui/calendar-summary.c:715 calendar/gui/e-itip-control.glade.h:7
-msgid "Loading Calendar"
-msgstr "Takvim Yükleniyor"
-
-#: calendar/gui/control-factory.c:126
-msgid "The URI that the calendar will display"
-msgstr "Takvimin gösterecek olduðu URI"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr "Randevu hatýrlatma tarihi"
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-msgid "Snooze"
-msgstr "Dinlenme"
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr "Tamam"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr "Alarm bilgilendirme servisi"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-msgid "Factory for the alarm notification service"
-msgstr "Alarm bilgilendirme servisi mimarisi"
-
-#: calendar/gui/alarm-notify/notify-main.c:56
-#, c-format
-msgid ""
-"It is %s. The Unix time is %ld right now. We just thought you may like to "
-"know."
-msgstr ""
-
-#: calendar/gui/alarm-notify/notify-main.c:94 calendar/gui/main.c:52
-msgid "Could not initialize GNOME"
-msgstr "GNOME baþlatýlamýyor"
-
-#: calendar/gui/alarm-notify/notify-main.c:109
-msgid "Could not create the alarm notify service factory"
-msgstr "Alarm bilgilendirme servis mimarisi oluþturamadým"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:189
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr "%d %b %A, %Y %H:%M tarihinde alarm ver"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:196
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr "%d %b %A, %Y %H:%M tarihindeki toplantý için uyarý"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:207
-msgid "No summary available."
-msgstr "Özet yok."
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:2
-msgid "Close"
-msgstr "Kapat"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-msgid "Edit appointment"
-msgstr "Toplantýyý düzenle"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr "Dinlenme zamaný (dakika)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr "5 dakika"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr "10 dakika"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr "12 saat (öö/ös)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr "15 dakika"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr "24 saat"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr "30 dakika"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr "60 dakika"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr "Alarm zaman aþýmý"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr "Sesli Alarmlar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr "Alarm penceresi göründüðünde biple."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-msgid "Calendar"
-msgstr "Takvim"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr "Takvim Tercihleri"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "Renkler"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr "Hafta sonlarýný sýkýþtýr"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr "Gün gezgincisi seçenekleri"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-msgid "Defaults"
-msgstr "Öntanýmlýlar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr "Görünüm seçenekleri"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:162
-msgid "Due Date"
-msgstr "Tarihe göre:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr "Gün sonu:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr "Haftanýn ilk günü:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr "Cum"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:484
-msgid "Friday"
-msgstr "Cuma"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr "Önemli"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr "Bugünün Ýþleri"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr "Bugünün Ýþleri:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr "Henüz Zamaný Gelmeyenler"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr "Henüz Zamaný Gelmeyenler:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr "Pzt"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:480
-msgid "Monday"
-msgstr "Pazartesi"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr "Zamaný Geçenler"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr "Zamaný Geçenler:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:45
-msgid "Pick a color"
-msgstr "Bir renk seçin"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:165
-msgid "Priority"
-msgstr "Öncelik"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-msgid "Remind me of all appointments"
-msgstr "Tüm randevularýmý hatýrlat"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-msgid "Reminders"
-msgstr "Hatýrlatýcýlar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr "Cmt"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:485
-msgid "Saturday"
-msgstr "Cumartesi"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr "Göster"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-msgid "Show appointment end times"
-msgstr "Randevularýn bitiþ zamanlarýni göster"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr "Hafta numaralarýný göster"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr "Günün baþlangýcý:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr "Paz"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:486
-msgid "Sunday"
-msgstr "Pazar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-msgid "TaskPad"
-msgstr "Görev Alaný"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr "Per"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:483
-msgid "Thursday"
-msgstr "Perþembe"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr "Son Tarihe kadar Zaman"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr "Zaman bölmeleri:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr "Zaman biçimi:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr "Sal"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:481
-msgid "Tuesday"
-msgstr "Salý"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr "Görsel Alarmlar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr "Çar"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:482
-msgid "Wednesday"
-msgstr "Çarþamba"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr "Çalýþma haftasý"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr "dakika önce (oluþmadan)."
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:78
-msgid "seconds."
-msgstr "saniye."
-
-#: calendar/gui/dialogs/delete-comp.c:70
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr "Gerçekten '%s' randevusunu silmek istiyor musunuz?"
-
-#: calendar/gui/dialogs/delete-comp.c:73
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr "Gerçekten bu randevuyu silmek istiyor musunuz?"
-
-#: calendar/gui/dialogs/delete-comp.c:79
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr "Gerçekten %s görevini silmek istiyor musunuz?"
-
-#: calendar/gui/dialogs/delete-comp.c:82
-msgid "Are you sure you want to delete this untitled task?"
-msgstr "Gerçekten bu görevi silmek istiyor musunuz?"
-
-#: calendar/gui/dialogs/delete-comp.c:88
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr "`%s' baþlýksýz günlük girdisini silmek istiyor musunuz?"
-
-#: calendar/gui/dialogs/delete-comp.c:91
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr "Bu baþlýksýz günlük girdisini silmek istiyor musunuz?"
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr "Deðiþiklikleri kaydetmek istiyor musunuz?"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr "_Biten %:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:158
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr "Sýnýflandýrma"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-msgid "Date & Time"
-msgstr "Tarih & Zaman"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr "Tamamlama Tarihi:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-msgid "Pri_vate"
-msgstr "Ö_zel"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-msgid "Progress"
-msgstr "Ýþlem"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr "_Genel"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-msgid "Sta_rt Date:"
-msgstr "_Baþlangýç Tarihi:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-msgid "Su_mmary:"
-msgstr "Ö_zet:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr "Görev"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-msgid "URL:"
-msgstr "URL:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr "_Gizli"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Contacts..."
-msgstr "_Baðlantýlar..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-msgid "_Due Date:"
-msgstr "_Tarihe Göre:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-msgid "_Priority:"
-msgstr "Ö_ncelik:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "_Status:"
-msgstr "_Durum:"
-
-#: calendar/gui/dialogs/task-editor.c:707
-msgid "Edit Task"
-msgstr "Görevi Düzenle"
-
-#: calendar/gui/dialogs/task-editor.c:713 calendar/gui/event-editor.c:382
-msgid "No summary"
-msgstr "Özet yok"
-
-#: calendar/gui/dialogs/task-editor.c:719 calendar/gui/event-editor.c:388
-#, c-format
-msgid "Appointment - %s"
-msgstr "Randevu - %s"
-
-#: calendar/gui/dialogs/task-editor.c:722 calendar/gui/event-editor.c:391
-#, c-format
-msgid "Task - %s"
-msgstr "Görev - %s"
-
-#: calendar/gui/dialogs/task-editor.c:725 calendar/gui/event-editor.c:394
-#, c-format
-msgid "Journal entry - %s"
-msgstr "Günlük girdisi - %s"
-
-#: calendar/gui/e-calendar-table.c:157
-msgid "Categories"
-msgstr "Kategoriler"
-
-#: calendar/gui/e-calendar-table.c:159
-msgid "Completion Date"
-msgstr "Tamamlanma Tarihi"
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "End Date"
-msgstr "Bitiþ Tarihi"
-
-#: calendar/gui/e-calendar-table.c:161
-msgid "Start Date"
-msgstr "Baþlangýç Tarihi"
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Geographical Position"
-msgstr "Coðrafi Konum"
-
-#: calendar/gui/e-calendar-table.c:164
-msgid "Percent complete"
-msgstr "Biten yüzde"
-
-#: calendar/gui/e-calendar-table.c:166
-msgid "Summary"
-msgstr "Özet"
-
-#: calendar/gui/e-calendar-table.c:167
-msgid "Transparency"
-msgstr "Þeffaflýk"
-
-#: calendar/gui/e-calendar-table.c:168
-msgid "URL"
-msgstr "URL"
-
-#: calendar/gui/e-calendar-table.c:169
-msgid "Alarms"
-msgstr "Uyarýlar"
-
-#: calendar/gui/e-calendar-table.c:170
-msgid "Click here to add a task"
-msgstr "Görev eklemek buraya týklayýn"
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "0%"
-msgstr "%0"
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "10%"
-msgstr "%10"
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "20%"
-msgstr "%20"
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "30%"
-msgstr "%30"
-
-#: calendar/gui/e-calendar-table.c:378
-#, c-format
-msgid "40%"
-msgstr "%40"
-
-#: calendar/gui/e-calendar-table.c:379
-#, c-format
-msgid "50%"
-msgstr "%50"
-
-#: calendar/gui/e-calendar-table.c:380
-#, c-format
-msgid "60%"
-msgstr "%60"
-
-#: calendar/gui/e-calendar-table.c:381
-#, c-format
-msgid "70%"
-msgstr "%70"
-
-#: calendar/gui/e-calendar-table.c:382
-#, c-format
-msgid "80%"
-msgstr "%80"
-
-#: calendar/gui/e-calendar-table.c:383
-#, c-format
-msgid "90%"
-msgstr "%90"
-
-#: calendar/gui/e-calendar-table.c:384
-#, c-format
-msgid "100%"
-msgstr "%100"
-
-#: calendar/gui/e-calendar-table.c:551
-msgid "Mark Complete"
-msgstr "Bitmiþ Olarak Ýþaretle"
-
-#: calendar/gui/e-calendar-table.c:552
-msgid "Mark the task complete"
-msgstr "Görevi bitmiþ olarak iþaretle"
-
-#: calendar/gui/e-calendar-table.c:557
-msgid "Edit this task..."
-msgstr "Bu görevi düzenle.."
-
-#: calendar/gui/e-calendar-table.c:558
-msgid "Edit the task"
-msgstr "Görevi düzenle"
-
-#: calendar/gui/e-calendar-table.c:560
-#: ui/evolution-task-editor-dialog.xml.h:19
-msgid "Delete this task"
-msgstr "Bu görevi sil"
-
-#: calendar/gui/e-calendar-table.c:561
-msgid "Delete the task"
-msgstr "Görevi sil"
-
-#: calendar/gui/e-day-view-time-item.c:519
-#, c-format
-msgid "%02i minute divisions"
-msgstr "%02i dakika bölmeleri"
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:274 calendar/gui/e-day-view.c:1294
-#: calendar/gui/e-week-view-main-item.c:325
-msgid "%A %d %B"
-msgstr "%d %B %A"
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:278 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:334
-msgid "%a %d %b"
-msgstr "%d %b %a"
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:282 calendar/gui/e-day-view.c:1321
-#: calendar/gui/e-week-view-main-item.c:348
-msgid "%d %b"
-msgstr "%d %b"
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:570 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:617
-msgid "am"
-msgstr "öö"
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:573 calendar/gui/e-week-view.c:303
-#: calendar/gui/print.c:616
-msgid "pm"
-msgstr "ös"
-
-#: calendar/gui/e-day-view.c:3146 ui/evolution-calendar.xml.h:16
-msgid "New Appointment"
-msgstr "Yeni Randevu"
-
-#: calendar/gui/e-day-view.c:3148 calendar/gui/e-week-view.c:3280
-msgid "New All Day Event"
-msgstr "Y_eni Tüm Gün Olayý"
-
-#: calendar/gui/e-day-view.c:3153 calendar/gui/e-week-view.c:3285
-msgid "Go to Today"
-msgstr "Bugüne Git"
-
-#: calendar/gui/e-day-view.c:3155 calendar/gui/e-week-view.c:3287
-msgid "Go to Date..."
-msgstr "Tarihe Git..."
-
-#: calendar/gui/e-day-view.c:3162 calendar/gui/e-week-view.c:3293
-#: mail/folder-browser.c:566 ui/evolution-calendar.xml.h:19
-#: ui/evolution-message-composer.xml.h:10
-msgid "Open"
-msgstr "Aç"
-
-#: calendar/gui/e-day-view.c:3164 calendar/gui/e-week-view.c:3295
-msgid "Delete this Appointment"
-msgstr "Bu Randevuyu Sil"
-
-#: calendar/gui/e-day-view.c:3166 calendar/gui/e-week-view.c:3297
-#: ui/evolution-event-editor.xml.h:45
-msgid "Schedule Meeting"
-msgstr "_Toplantý Zamaný Düzenle"
-
-#: calendar/gui/e-day-view.c:3175 calendar/gui/e-week-view.c:3310
-msgid "Make this Occurrence Movable"
-msgstr "Bu Oluþumu Taþýnabilir Yap"
-
-#: calendar/gui/e-day-view.c:3177 calendar/gui/e-week-view.c:3312
-msgid "Delete this Occurrence"
-msgstr "Bu Oluþumu Sil"
-
-#: calendar/gui/e-day-view.c:3179
-msgid "Delete all Occurrences"
-msgstr "Tüm Oluþumlarý Sil"
-
-#: calendar/gui/e-itip-control.c:161
-msgid "I couldn't update your calendar file!\n"
-msgstr "Takvim dosyaný güncelleyemedim!\n"
-
-#: calendar/gui/e-itip-control.c:167 calendar/gui/e-itip-control.c:510
-msgid "Component successfully updated."
-msgstr "Bileþen baþarýyla güncellendi."
-
-#: calendar/gui/e-itip-control.c:173
-msgid "There was an error loading the calendar file."
-msgstr "Takvim dosyasý yüklenirken hata oluþtu."
-
-#: calendar/gui/e-itip-control.c:197
-msgid "I couldn't open your calendar file!\n"
-msgstr "Takvim dosyanýzý açamadým!\n"
-
-#: calendar/gui/e-itip-control.c:458 calendar/gui/e-itip-control.c:529
-msgid "I couldn't load your calendar file!\n"
-msgstr "Takvim dosyanýzý yükleyemedim!\n"
-
-#: calendar/gui/e-itip-control.c:470
-msgid "I couldn't read your calendar file!\n"
-msgstr "Takvim dosyanýzý okuyamadým!\n"
-
-#: calendar/gui/e-itip-control.c:483
-msgid "This is a reply from someone who was uninvited!"
-msgstr "Davetli olmayan bir kiþi tarafýndan gönderilen cevap!"
-
-#: calendar/gui/e-itip-control.c:499
-msgid "I couldn't update your calendar store."
-msgstr "Takvim deposunu güncelleyemedim."
-
-#: calendar/gui/e-itip-control.c:540
-msgid "I couldn't delete the calendar component!\n"
-msgstr "Takvim bileþenini silemedim!\n"
-
-#: calendar/gui/e-itip-control.c:550
-msgid "Component successfully deleted."
-msgstr "Bileþen baþarýyla silindi."
-
-#: calendar/gui/e-itip-control.c:694
-msgid "I don't recognize this type of calendar component."
-msgstr "Bu tür bir takvim bileþenini tanýyamadým."
-
-#: calendar/gui/e-itip-control.c:780
-msgid "Add to Calendar"
-msgstr "Takvime Ekle"
-
-#: calendar/gui/e-itip-control.c:814
-msgid " Accept "
-msgstr " Kabul Et "
-
-#: calendar/gui/e-itip-control.c:815
-msgid " Decline "
-msgstr " Reddet "
-
-#: calendar/gui/e-itip-control.c:816
-msgid " Tentative "
-msgstr " Giriþimli "
-
-#: calendar/gui/e-itip-control.c:860
-msgid "Update Calendar"
-msgstr "Takvimi Güncelle"
-
-#: calendar/gui/e-itip-control.c:883
-msgid "Cancel Meeting"
-msgstr "Toplantýyý Ýptal Et"
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, no-c-format
-msgid "%P %%"
-msgstr "%P %% "
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr "--kime--"
-
-#: calendar/gui/e-itip-control.glade.h:4
-msgid "Calendar Message"
-msgstr "Takvim Mesajý"
-
-#: calendar/gui/e-itip-control.glade.h:5 mail/mail-format.c:623
-msgid "Date:"
-msgstr "Tarih:"
-
-#: calendar/gui/e-itip-control.glade.h:8
-msgid "Loading calendar..."
-msgstr "Takvim yükleniyor..."
-
-#: calendar/gui/e-itip-control.glade.h:9
-msgid "Organizer:"
-msgstr "Kurum:"
-
-#: calendar/gui/e-itip-control.glade.h:10
-msgid "Server Message:"
-msgstr "Sunucu Mesajý:"
-
-#: calendar/gui/e-itip-control.glade.h:11
-msgid "Summary:"
-msgstr "Özet:"
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr "bitiþ-tarihi"
-
-#: calendar/gui/e-itip-control.glade.h:13
-msgid "date-start"
-msgstr "baþlangýç-tarihi"
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-msgid "Attendee"
-msgstr "Katýlýmcý"
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-msgid "Attendee address"
-msgstr "Katýlýmcý adresi"
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-msgid "Attendees: "
-msgstr "Katýlýmcýlar: "
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr ""
-"Toplantýyý\n"
-"Ýptal Et"
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-msgid "Chair"
-msgstr "Sandalye"
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-msgid "Meeting Invitations"
-msgstr "Toplantý Davetleri"
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr "Katýlýmcý Olmayan"
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr "Seçimlik Katýlýmcý"
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-msgid "Organizer: "
-msgstr "Düzenleyen: "
-
-#: calendar/gui/e-meeting-dialog.glade.h:15
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-"Olayý\n"
-"Yayýnla"
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid "RSVP"
-msgstr "RSVP"
-
-#: calendar/gui/e-meeting-dialog.glade.h:18
-msgid ""
-"Request\n"
-"Meeting"
-msgstr ""
-"Toplantý\n"
-"Ýste"
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-msgid "Required Participant"
-msgstr "Gerekli Katýlýmcý"
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-msgid "Role"
-msgstr "Görev"
-
-#: calendar/gui/e-meeting-dialog.glade.h:22
-msgid ""
-"Schedule\n"
-"Time"
-msgstr ""
-"Zamaný\n"
-"Düzenle"
-
-#: calendar/gui/e-meeting-dialog.glade.h:24 filter/libfilter-i18n.h:49
-#: mail/message-list.c:1054
-msgid "Status"
-msgstr "Durum"
-
-#: calendar/gui/e-tasks.c:149 calendar/gui/e-tasks.c:469
-#: calendar/gui/e-tasks.c:502
-msgid "All"
-msgstr "Tümü"
-
-#: calendar/gui/e-tasks.c:155
-msgid "Category:"
-msgstr "Kategori:"
-
-#: calendar/gui/e-tasks.c:298
-#, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "%s içindeki görevler yüklenemedi."
-
-#: calendar/gui/e-tasks.c:310
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr "`%s' yüklemek için gereken yöntem desteklenmiyor"
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:342
-msgid "%d %B"
-msgstr "%d %B"
-
-#: calendar/gui/e-week-view.c:3278 calendar/gui/e-week-view.c:3301
-msgid "New Appointment..."
-msgstr "Yeni Randevu..."
-
-#: calendar/gui/e-week-view.c:3314
-msgid "Delete All Occurrences"
-msgstr "Tüm Oluþumlarý Sil"
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr "_Tüm gün olaylarý"
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-msgid "Appointment"
-msgstr "Randevu"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-msgid "Appointment Basics"
-msgstr "Randevu Baþlýklarý"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-msgid "Custom recurrence"
-msgstr "Özel tekrar"
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr "Her"
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-msgid "Exceptions"
-msgstr "Ýstisnalar"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-msgid "Modify"
-msgstr "Deðiþtir"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-msgid "No recurrence"
-msgstr "Tekrarlama yok"
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1593
-msgid "Play a sound"
-msgstr "Bir ses çal"
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-msgid "Preview"
-msgstr "Önizleme"
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Recurrence"
-msgstr "Tekrarlama"
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-msgid "Recurrence Rule"
-msgstr "Tekrarlama Kuralý"
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-msgid "Reminder"
-msgstr "Hatýrlatýcý"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1602
-msgid "Run a program"
-msgstr "Bir program çalýþtýr"
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1599
-msgid "Send an email"
-msgstr "Bir e-posta gönder"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-msgid "Settings..."
-msgstr "Ayarlar..."
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1596
-msgid "Show a dialog"
-msgstr "Bir pencere göster"
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr "Basit tekrar"
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-msgid "_End time:"
-msgstr "B_itiþ tarihi:"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Start time:"
-msgstr "B_aþlangýç tarihi:"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Starting date:"
-msgstr "_Baþlangýç günü:"
-
-#. Automatically generated. Do not edit.
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:2
-msgid "after"
-msgstr "sonra"
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:6
-msgid "before"
-msgstr "önce"
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-msgid "day(s)"
-msgstr "gün"
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-msgid "end of appointment"
-msgstr "randevu sonu"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "for"
-msgstr "için"
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr "daima"
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-msgid "hour(s)"
-msgstr "saat"
-
-#: calendar/gui/event-editor-dialog.glade.h:40 mail/mail-config.glade.h:77
-msgid "minute(s)"
-msgstr "dakika"
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "month(s)"
-msgstr "ay"
-
-#: calendar/gui/event-editor-dialog.glade.h:42
-msgid "start of appointment"
-msgstr "randevu baþlangýcý"
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-msgid "until"
-msgstr "tarihe kadar"
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "week(s)"
-msgstr "hafta"
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "year(s)"
-msgstr "yýl"
-
-#: calendar/gui/event-editor.c:376
-msgid "Edit Appointment"
-msgstr "Randevuyu Düzenle"
-
-#: calendar/gui/event-editor.c:454
-msgid "on"
-msgstr "tarih"
-
-#: calendar/gui/event-editor.c:479 filter/filter-datespec.c:81
-msgid "day"
-msgstr "gün"
-
-#: calendar/gui/event-editor.c:606
-msgid "on the"
-msgstr " "
-
-#: calendar/gui/event-editor.c:613
-msgid "th"
-msgstr "."
-
-#: calendar/gui/event-editor.c:759
-msgid "occurrences"
-msgstr "tekrarlar"
-
-#: calendar/gui/event-editor.c:876
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr "Bu randevuyu Evolution düzenleyemiyor."
-
-#: calendar/gui/event-editor.c:1548
-#, c-format
-msgid " %d days"
-msgstr " %d gün"
-
-#: calendar/gui/event-editor.c:1550
-msgid " 1 day"
-msgstr " 1 gün"
-
-#: calendar/gui/event-editor.c:1553
-#, c-format
-msgid " %d weeks"
-msgstr " %d hafta"
-
-#: calendar/gui/event-editor.c:1555
-msgid " 1 week"
-msgstr " 1 hafta"
-
-#: calendar/gui/event-editor.c:1558
-#, c-format
-msgid " %d hours"
-msgstr " %d saat"
-
-#: calendar/gui/event-editor.c:1560
-msgid " 1 hour"
-msgstr " 1 saat"
-
-#: calendar/gui/event-editor.c:1563
-#, c-format
-msgid " %d minutes"
-msgstr " %d dakika"
-
-#: calendar/gui/event-editor.c:1565
-msgid " 1 minute"
-msgstr " 1 dakika"
-
-#: calendar/gui/event-editor.c:1568
-#, c-format
-msgid " %d seconds"
-msgstr " %d saniye"
-
-#: calendar/gui/event-editor.c:1570
-msgid " 1 second"
-msgstr " 1 saniye"
-
-#: calendar/gui/event-editor.c:1617
-msgid " before start of appointment"
-msgstr " randevunun baþlangýcýndan önce"
-
-#: calendar/gui/event-editor.c:1619
-msgid " after start of appointment"
-msgstr " randevunun baþlangýcýndan sonra"
-
-#: calendar/gui/event-editor.c:1627
-msgid " before end of appointment"
-msgstr " randevunun bitiminden önce"
-
-#: calendar/gui/event-editor.c:1629
-msgid " after end of appointment"
-msgstr " randevunun bitiminden sonra"
-
-#: calendar/gui/event-editor.c:3137 calendar/gui/print.c:1097
-#: calendar/gui/print.c:1099 calendar/gui/print.c:1100
-msgid "%a %b %d %Y"
-msgstr "%d %b %a %Y"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr "Takvim gösteren örnek bir Bonobo denetleyici."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-msgid "Evolution calendar executive summary component."
-msgstr "Evolution takvim özet bileþeni."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr "Evolution takvimi iTip/iMip görüntüleyici"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr "Takvimi düzenleyen Evolution bileþeni."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-msgid "Factory for the Calendar Summary component."
-msgstr "Takvim özet bileþen mimarisi."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-msgid "Factory for the Evolution calendar component."
-msgstr "Evolution takvimi bileþen mimarisi."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-msgid "Factory for the calendar iTip view control"
-msgstr "Takvim iTip görüntü kontrolü mimarisi"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-msgid "Factory for the sample Calendar control"
-msgstr "Örnek Takvim kontrolü mimarisi"
-
-#: calendar/gui/gnome-cal.c:223
-msgid "Show all "
-msgstr "Tümünü Göster "
-
-#: calendar/gui/gnome-cal.c:237
-msgid "Summary contains"
-msgstr "Özet içeriði"
-
-#: calendar/gui/gnome-cal.c:238
-msgid "Description contains"
-msgstr "Açýklama içeriði"
-
-#: calendar/gui/gnome-cal.c:239
-msgid "Comment contains"
-msgstr "Yorum içeriði"
-
-#: calendar/gui/gnome-cal.c:240
-msgid "Has category"
-msgstr "Kategori"
-
-#: calendar/gui/gnome-cal.c:843
-#, c-format
-msgid "Could not open the folder in `%s'"
-msgstr "`%s' dizini açýlamadý."
-
-#: calendar/gui/gnome-cal.c:854
-#, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr "`%s' açmak için gereken yöntem desteklenmiyor"
-
-#: calendar/gui/goto-dialog.glade.h:1
-msgid "April"
-msgstr "Nisan"
-
-#: calendar/gui/goto-dialog.glade.h:2
-msgid "August"
-msgstr "Aðustos"
-
-#: calendar/gui/goto-dialog.glade.h:3
-msgid "December"
-msgstr "Eylül"
-
-#: calendar/gui/goto-dialog.glade.h:4
-msgid "February"
-msgstr "Þubat"
-
-#: calendar/gui/goto-dialog.glade.h:5
-msgid "Go To Date"
-msgstr "Tarihe Git"
-
-#: calendar/gui/goto-dialog.glade.h:6
-msgid "Go To Today"
-msgstr "Bugüne Git"
-
-#: calendar/gui/goto-dialog.glade.h:7
-msgid "January"
-msgstr "Ocak"
-
-#: calendar/gui/goto-dialog.glade.h:8
-msgid "July"
-msgstr "Temmuz"
-
-#: calendar/gui/goto-dialog.glade.h:9
-msgid "June"
-msgstr "Haziran"
-
-#: calendar/gui/goto-dialog.glade.h:10
-msgid "March"
-msgstr "Mart"
-
-#: calendar/gui/goto-dialog.glade.h:11
-msgid "May"
-msgstr "Mayýs"
-
-#: calendar/gui/goto-dialog.glade.h:12
-msgid "November"
-msgstr "Kasým"
-
-#: calendar/gui/goto-dialog.glade.h:13
-msgid "October"
-msgstr "Ekim"
-
-#: calendar/gui/goto-dialog.glade.h:14
-msgid "September"
-msgstr "Eylül"
-
-#: calendar/gui/print.c:300
-msgid "1st"
-msgstr "1."
-
-#: calendar/gui/print.c:300
-msgid "2nd"
-msgstr "2."
-
-#: calendar/gui/print.c:300
-msgid "3rd"
-msgstr "3."
-
-#: calendar/gui/print.c:300
-msgid "4th"
-msgstr "4."
-
-#: calendar/gui/print.c:300
-msgid "5th"
-msgstr "5."
-
-#: calendar/gui/print.c:301
-msgid "6th"
-msgstr "6."
-
-#: calendar/gui/print.c:301
-msgid "7th"
-msgstr "7."
-
-#: calendar/gui/print.c:301
-msgid "8th"
-msgstr "8."
-
-#: calendar/gui/print.c:301
-msgid "9th"
-msgstr "8."
-
-#: calendar/gui/print.c:301
-msgid "10th"
-msgstr "10."
-
-#: calendar/gui/print.c:302
-msgid "11th"
-msgstr "11."
-
-#: calendar/gui/print.c:302
-msgid "12th"
-msgstr "12."
-
-#: calendar/gui/print.c:302
-msgid "13th"
-msgstr "13."
-
-#: calendar/gui/print.c:302
-msgid "14th"
-msgstr "14."
-
-#: calendar/gui/print.c:302
-msgid "15th"
-msgstr "15."
-
-#: calendar/gui/print.c:303
-msgid "16th"
-msgstr "16."
-
-#: calendar/gui/print.c:303
-msgid "17th"
-msgstr "17."
-
-#: calendar/gui/print.c:303
-msgid "18th"
-msgstr "18."
-
-#: calendar/gui/print.c:303
-msgid "19th"
-msgstr "19."
-
-#: calendar/gui/print.c:303
-msgid "20th"
-msgstr "20."
-
-#: calendar/gui/print.c:304
-msgid "21st"
-msgstr "21."
-
-#: calendar/gui/print.c:304
-msgid "22nd"
-msgstr "22."
-
-#: calendar/gui/print.c:304
-msgid "23rd"
-msgstr "23."
-
-#: calendar/gui/print.c:304
-msgid "24th"
-msgstr "24."
-
-#: calendar/gui/print.c:304
-msgid "25th"
-msgstr "25."
-
-#: calendar/gui/print.c:305
-msgid "26th"
-msgstr "26."
-
-#: calendar/gui/print.c:305
-msgid "27th"
-msgstr "27."
-
-#: calendar/gui/print.c:305
-msgid "28th"
-msgstr "28."
-
-#: calendar/gui/print.c:305
-msgid "29th"
-msgstr "29."
-
-#: calendar/gui/print.c:305
-msgid "30th"
-msgstr "39."
-
-#: calendar/gui/print.c:306
-msgid "31st"
-msgstr "31."
-
-#: calendar/gui/print.c:362
-msgid "Su"
-msgstr "Pz"
-
-#: calendar/gui/print.c:362
-msgid "Mo"
-msgstr "Pt"
-
-#: calendar/gui/print.c:362
-msgid "Tu"
-msgstr "Sa"
-
-#: calendar/gui/print.c:362
-msgid "We"
-msgstr "Ça"
-
-#: calendar/gui/print.c:362
-msgid "Th"
-msgstr "Pe"
-
-#: calendar/gui/print.c:362
-msgid "Fr"
-msgstr "Cu"
-
-#: calendar/gui/print.c:362
-msgid "Sa"
-msgstr "Ct"
-
-#: calendar/gui/print.c:948 views/tasks/galview.xml.h:1
-msgid "Tasks"
-msgstr "Görevler"
-
-#. Day
-#: calendar/gui/print.c:1078
-msgid "Current day (%a %b %d %Y)"
-msgstr "Geçerli gün (%d %b %a %Y)"
-
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1096
-msgid "%a %b %d"
-msgstr "%d %b %a"
-
-#: calendar/gui/print.c:1093
-msgid "%a %d %Y"
-msgstr "%d %a %Y"
-
-#: calendar/gui/print.c:1104
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr "Geçerli hafta (%s - %s)"
-
-#. Month
-#: calendar/gui/print.c:1112
-msgid "Current month (%b %Y)"
-msgstr "Geçerli ay (%b %Y)"
-
-#. Year
-#: calendar/gui/print.c:1119
-msgid "Current year (%Y)"
-msgstr "Geçerli yýl (%Y)"
-
-#: calendar/gui/print.c:1156
-msgid "Print Calendar"
-msgstr "Takvimi Yazdýr"
-
-#: calendar/gui/print.c:1321 mail/mail-callbacks.c:1465
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:24
-#: ui/evolution-mail.xml.h:53
-msgid "Print Preview"
-msgstr "Önizlemeyi Yazdýr"
-
-#: calendar/gui/tasks-control.c:108
-msgid "The URI of the tasks folder to display"
-msgstr "Gösterilecek görevler dizininin URI'si"
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-"Evolution takvim dizininde bulunan tüm görevleri görevler dizinine aktardý."
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-"Evolution takvim dizininde bulunan görevleri yeni görevler dizinine "
-"göndermeyi denedi, ancak bazý görevler taþýnamadý. Bu iþlemi daha sonra "
-"tekrar deneyiniz."
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-"`%s' açýlamadý. Takvim dizininden görevler dizinine gönderilecek öðe "
-"bulunmuyor."
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr "`%s' yüklemek için gereken yöntem desteklemiyor."
-
-#: calendar/gui/weekday-picker.c:315 calendar/gui/weekday-picker.c:410
-msgid "SMTWTFS"
-msgstr "PPSÇPCCP"
-
-#: camel/camel-cipher-context.c:169
-msgid "Signing is not supported by this cipher"
-msgstr "Bu þifreleme ile imza desteklenmiyor"
-
-#: camel/camel-cipher-context.c:209
-msgid "Clearsigning is not supported by this cipher"
-msgstr "Bu þifreleme ile açýk imza desteklenmiyor"
-
-#: camel/camel-cipher-context.c:249
-msgid "Verifying is not supported by this cipher"
-msgstr "Bu þifreleme ile onaylama desteklenmiyor"
-
-#: camel/camel-cipher-context.c:292
-msgid "Encryption is not supported by this cipher"
-msgstr "Bu þifre ile þifreleme desteklenmiyor"
-
-#: camel/camel-cipher-context.c:334
-msgid "Decryption is not supported by this cipher"
-msgstr "Bu þifreleme ile geriye dönük þifreleme desteklenmiyor"
-
-#: camel/camel-filter-driver.c:534 camel/camel-filter-driver.c:543
-msgid "Syncing folders"
-msgstr "Dizinler eþzamanlý hale getiriliyor"
-
-#: camel/camel-filter-driver.c:643
-msgid "Unable to open spool folder"
-msgstr "Spool dizini açýlamadý"
-
-#: camel/camel-filter-driver.c:652
-msgid "Unable to process spool folder"
-msgstr "Spool dizini iþlenemedi"
-
-#: camel/camel-filter-driver.c:666
-msgid "Getting message %d (%d%%)"
-msgstr "%d (%%%d) iletisi alýnýyor"
-
-#: camel/camel-filter-driver.c:670 camel/camel-filter-driver.c:679
-#, c-format
-msgid "Failed message %d"
-msgstr "%d iletisinde hata"
-
-#: camel/camel-filter-driver.c:671
-msgid "Cannot open message"
-msgstr "Ýleti açýlamadý"
-
-#: camel/camel-filter-driver.c:690 camel/camel-filter-driver.c:788
-msgid "Syncing folder"
-msgstr "Dizin eþzamanlý hale getiriliyor"
-
-#: camel/camel-filter-driver.c:694 camel/camel-filter-driver.c:793
-msgid "Complete"
-msgstr "Tamamlandý"
-
-#: camel/camel-filter-driver.c:748
-#, c-format
-msgid "Getting message %d of %d"
-msgstr "%d/%d ileti alýnýyor"
-
-#: camel/camel-filter-driver.c:753 camel/camel-filter-driver.c:771
-#, c-format
-msgid "Failed at message %d of %d"
-msgstr "%d/%d iletisinde hata"
-
-#: camel/camel-filter-driver.c:866
-#, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr "%s filtresini ayrýþtýrýrken hata oldu: %s"
-
-#: camel/camel-filter-driver.c:871
-#, c-format
-msgid "Error executing filter: %s: %s"
-msgstr "%s filtresini çalýþtýrýrken hata oldu: %s"
-
-#: camel/camel-filter-search.c:439 camel/camel-filter-search.c:445
-#, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr "%s filtre taramasýný çalýþtýrýrken hata oldu: %s"
-
-#: camel/camel-folder-search.c:328
-#, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-"Arama deyimi ayrýþtýrýlamadý: %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:338
-#, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr ""
-"Arama deyimi çalýþtýrýlamadý: %s:\n"
-"%s"
-
-#: camel/camel-folder-search.c:485 camel/camel-folder-search.c:513
-msgid "(match-all) requires a single bool result"
-msgstr "(hepsini-eþle) boolean sonuç içermelidir"
-
-#: camel/camel-folder-search.c:559
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr "Bilinmeyen baþlýk üzerinde arama yapýlýyor: %s"
-
-#: camel/camel-folder-search.c:670 camel/camel-folder-search.c:714
-msgid "Invalid type in body-contains, expecting string"
-msgstr "Gövde içeriðinde geçersiz tür. Dizgi bekleniyordu"
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:92 camel/camel-lock.c:111 camel/camel-movemail.c:138
-#: camel/camel-movemail.c:185
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "%s için kilitleme dosyasý oluþturulamadý: %s"
-
-#: camel/camel-lock.c:151 camel/camel-movemail.c:219
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr ""
-"%s dosyasýnýn kilidinin açýlmasýný beklerken zaman aþýmý. Daha sonra yeniden "
-"deneyiniz."
-
-#: camel/camel-lock.c:201
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr "fcntl(2) kullanýlýrken kilitleme hatasý: %s"
-
-#: camel/camel-lock.c:255
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr "flock(2) kullanýlýrken kilitleme hatasý: %s"
-
-#: camel/camel-movemail.c:101
-#, c-format
-msgid "Could not check mail file %s: %s"
-msgstr "E-posta dosyasý %s denetlenemedi: %s"
-
-#: camel/camel-movemail.c:148
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr "E-posta dosyasý %s açýlamadý: %s"
-
-#: camel/camel-movemail.c:158
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr "Geçici e-posta dosyasý %s açýlamadý: %s"
-
-#: camel/camel-movemail.c:199
-#, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr "%s için kilitleme dosyasý denetlenemedi: %s"
-
-#: camel/camel-movemail.c:245
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr "%s posta dosyasýný okurken hata oluþtu"
-
-#: camel/camel-movemail.c:256
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr "Geçici mektup dosyasýna yazarken hata: %s"
-
-#: camel/camel-movemail.c:274
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr "%s geçici mektup dosyasýný oluþtururken hata: %s"
-
-#: camel/camel-movemail.c:306
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr "Boru yaratýlamadý: %s"
-
-#: camel/camel-movemail.c:318
-#, c-format
-msgid "Could not fork: %s"
-msgstr "Çatallama yapýlamadý: %s"
-
-#: camel/camel-movemail.c:356
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr "Movemail programýnda hata: %s"
-
-#: camel/camel-movemail.c:357
-msgid "(Unknown error)"
-msgstr "(Bilinmeyen hata)"
-
-#: camel/camel-movemail.c:587
-#, c-format
-msgid "Error copying mail temp file: %s"
-msgstr "Geçici mektup dosyasýna yazarken hata: %s"
-
-#: camel/camel-pgp-context.c:190
-#, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr "%s parolasýný %s için parolayý girin"
-
-#: camel/camel-pgp-context.c:193
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr "%s parolasýný girin"
-
-#: camel/camel-pgp-context.c:513
-msgid "No plaintext to sign."
-msgstr "Ýmzalanacak metin yok."
-
-#: camel/camel-pgp-context.c:520 camel/camel-pgp-context.c:692
-#: camel/camel-pgp-context.c:1061 camel/camel-pgp-context.c:1273
-msgid "No password provided."
-msgstr "Parola verilmedi"
-
-#: camel/camel-pgp-context.c:526 camel/camel-pgp-context.c:698
-#: camel/camel-pgp-context.c:881 camel/camel-pgp-context.c:1068
-#: camel/camel-pgp-context.c:1280
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr "GPG/PGP ile baðlantý kurulamadý: %s"
-
-#: camel/camel-pgp-context.c:685
-msgid "No plaintext to clearsign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:875
-msgid "No plaintext to verify."
-msgstr "Doðrulanacak metin yok."
-
-#: camel/camel-pgp-context.c:892
-#, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "%s geçici dosyasý yaratýlamadý"
-
-#: camel/camel-pgp-context.c:1051
-msgid "No plaintext to encrypt."
-msgstr "Þifrelenecek metin yok."
-
-#: camel/camel-pgp-context.c:1077
-msgid "No recipients specified"
-msgstr "Alýcý belirtilmedi"
-
-#: camel/camel-pgp-context.c:1265
-msgid "No ciphertext to decrypt."
-msgstr "Açýlacak þifre metni yok."
-
-#: camel/camel-provider.c:131
-#, c-format
-msgid "Could not load %s: Module loading not supported on this system."
-msgstr "%s yüklenemedi: Bu sistemde modül yükleneme desteklenmiyor."
-
-#: camel/camel-provider.c:140
-#, c-format
-msgid "Could not load %s: %s"
-msgstr "%s yüklenemedi: %s"
-
-#: camel/camel-provider.c:148
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr "%s yüklenemedi: Modülde baþlangýç kodu bulunamadý"
-
-#: camel/camel-remote-store.c:186
-#, c-format
-msgid "%s server %s"
-msgstr "%s sunucu %s"
-
-#: camel/camel-remote-store.c:190
-#, c-format
-msgid "%s service for %s on %s"
-msgstr "%s için %s üzerindeki %s servisi"
-
-#: camel/camel-remote-store.c:240
-msgid "Connection cancelled"
-msgstr "Baðlantý iptal edildi"
-
-#: camel/camel-remote-store.c:243
-#: camel/providers/smtp/camel-smtp-transport.c:261
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr "%s adresine baðlantý kurulamadý (%d): %s"
-
-#: camel/camel-remote-store.c:244
-msgid "(unknown host)"
-msgstr "(bilinmeyen makine)"
-
-#: camel/camel-remote-store.c:325 camel/camel-remote-store.c:387
-#: camel/camel-remote-store.c:458
-#: camel/providers/imap/camel-imap-command.c:264
-msgid "Operation cancelled"
-msgstr "Ýþlem iptal edildi"
-
-#: camel/camel-remote-store.c:464
-msgid "Server unexpectedly disconnected"
-msgstr "Sunucu beklenmedik bir þekilde baðlantýyý kesti"
-
-#: camel/camel-sasl-anonymous.c:33
-msgid "Anonymous"
-msgstr "Anonim"
-
-#: camel/camel-sasl-anonymous.c:35
-msgid "This option will connect to the server using an anonymous login."
-msgstr "Bu seçenek sunucuya anonim baðlantý kuracaktýr."
-
-#: camel/camel-sasl-anonymous.c:110 camel/camel-sasl-plain.c:87
-msgid "Authentication failed."
-msgstr "Kimlik denetimi baþarýsýz."
-
-#: camel/camel-sasl-anonymous.c:119
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-"Geçersiz e-posta adres izleme bilgisi:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:131
-#, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr ""
-"Hatalý opak izleme bilgisi:\n"
-"%s"
-
-#: camel/camel-sasl-anonymous.c:143
-#, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr ""
-"Hatalý izleme bilgisi:\n"
-"%s"
-
-#: camel/camel-sasl-cram-md5.c:35
-msgid "CRAM-MD5"
-msgstr "CRAM-MD5"
-
-#: camel/camel-sasl-cram-md5.c:37
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr "Bu seçenek sunucuya güvenli CRAM-MD5 sistemi ile baðlantý kuracaktýr. "
-
-#: camel/camel-sasl-digest-md5.c:43
-msgid "DIGEST-MD5"
-msgstr "DIGEST-MD5"
-
-#: camel/camel-sasl-digest-md5.c:45
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-"Bu seçenek sunucuya güvenli DIGEST-MD5 sistemi ile baðlantý kuracaktýr. "
-
-#: camel/camel-sasl-digest-md5.c:810
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr "Sunucu cevabý çok uzun (>2048 bayt)\n"
-
-#: camel/camel-sasl-digest-md5.c:819
-msgid "Server challenge invalid\n"
-msgstr "Sunucudan hatalý cevap\n"
-
-#: camel/camel-sasl-digest-md5.c:825
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr "Sunucudan hatalý \"Quality of Protection\" anahtarý geldi\n"
-
-#: camel/camel-sasl-digest-md5.c:847
-msgid "Server response did not contain authorization data\n"
-msgstr "Sunucu cevabý kimlik denetim bilgisi içermiyor\n"
-
-#: camel/camel-sasl-digest-md5.c:865
-msgid "Server response contained incomplete authorization data\n"
-msgstr "Sunucu cevabý yetersiz kimlik denetim bilgisis içeriyor\n"
-
-#: camel/camel-sasl-digest-md5.c:875
-msgid "Server response does not match\n"
-msgstr "Sunucu cevabý uyuþmuyor\n"
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "Kerberos 4"
-msgstr "Kerberos 4"
-
-#: camel/camel-sasl-kerberos4.c:42
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr "Bu seçenek sunucuya Kerberos 4 kimlik denetimi ile baðlanacaktýr."
-
-#: camel/camel-sasl-kerberos4.c:161
-#, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr ""
-"Kerberos bileti alýnamadý:\n"
-"%s"
-
-#: camel/camel-sasl-kerberos4.c:218
-#: camel/providers/imap/camel-imap-store.c:420
-msgid "Bad authentication response from server."
-msgstr "Sunucudan hatalý kimlik sýnama yanýtý."
-
-#: camel/camel-sasl-plain.c:34
-msgid "This option will connect to the server using a simple password."
-msgstr "Bu seçenek sunucuya basit bir parola kullanarak baðlantý kuracaktýr."
-
-#: camel/camel-search-private.c:110
-#, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr "Düzgün deyim derleme iþlemi baþarýsýz: %s: %s"
-
-#: camel/camel-service.c:152
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr "'%s' URL'inde kullanýcý bilgisi bulunmuyor"
-
-#: camel/camel-service.c:160
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr "'%s' URL'inde makine adý bilgisi bulunmuyor"
-
-#: camel/camel-service.c:168
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr "'%s' URL'inde dizin bilgisi bulunmuyor"
-
-#: camel/camel-service.c:554
-#, c-format
-msgid "Resolving: %s"
-msgstr "Çözümleniyor: %s"
-
-#: camel/camel-service.c:581
-#, c-format
-msgid "Failure in name lookup: %s"
-msgstr "Ýsim çözümlemesinde hata: %s"
-
-#: camel/camel-service.c:606
-#, c-format
-msgid "Host lookup failed: %s: host not found"
-msgstr "Makine adý çözümlemesinde hata: %s: Makine bulunamadý"
-
-#: camel/camel-service.c:608
-#, c-format
-msgid "Host lookup failed: %s: unknown reason"
-msgstr "Makine adý çözümlemesinde hata: %s: bilinmeyen hata"
-
-#: camel/camel-session.c:56
-msgid "Virtual folder email provider"
-msgstr "Sanal dizin e-posta saðlayýcýsý"
-
-#: camel/camel-session.c:58
-msgid "For reading mail as a query of another set of folders"
-msgstr "diðer bir dizin listesinden alýnan iletileri okumak için"
-
-#: camel/camel-session.c:273 camel/camel-session.c:363
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr "`%s' protokolü için alýcý yok"
-
-#: camel/camel-session.c:462
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"%s dizini yaratýlamadý:\n"
-"%s"
-
-#. Fill in the new fields
-#: camel/camel-store.c:380 mail/mail-ops.c:1002 mail/mail-ops.c:1009
-#: mail/mail-ops.c:1027 mail/mail-ops.c:1028
-msgid "Trash"
-msgstr "Çöp"
-
-#: camel/camel-url.c:289
-#, c-format
-msgid "Could not parse URL `%s'"
-msgstr "URL açýlamadý: %s"
-
-#: camel/camel-vee-folder.c:451
-#, c-format
-msgid "No such message %s in %s"
-msgstr "Bu isimle bir ileti yok: %s (%s)"
-
-#: camel/camel-vee-folder.c:545
-#, c-format
-msgid "No such message: %s"
-msgstr "Bu isimle bir ileti yok: %s"
-
-#: camel/providers/imap/camel-imap-command.c:209
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "IMAP sunucusundan beklenmeyen cevap: %s"
-
-#: camel/providers/imap/camel-imap-command.c:217
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr "IMAP komutu baþarýsýz oldu: %s"
-
-#: camel/providers/imap/camel-imap-command.c:218 shell/e-storage.c:481
-msgid "Unknown error"
-msgstr "Bilinmeyen hata"
-
-#: camel/providers/imap/camel-imap-command.c:272
-msgid "Server response ended too soon."
-msgstr "Sunucu cevabý çok erken bitti."
-
-#: camel/providers/imap/camel-imap-command.c:456
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr "IMAP sunucu cevabý %s bilgisini içermiyor"
-
-#: camel/providers/imap/camel-imap-command.c:490
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr "IMAP sunucudan beklenmeyen cevap: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:170
-#, c-format
-msgid "Could not load summary for %s"
-msgstr "%s için özet bilgisi yüklenemedi"
-
-#: camel/providers/imap/camel-imap-folder.c:349
-msgid "Scanning IMAP folder"
-msgstr "IMAP dizini taranýyor"
-
-#: camel/providers/imap/camel-imap-folder.c:984
-#: camel/providers/imap/camel-imap-folder.c:1195
-msgid "This message is not currently available"
-msgstr "Bu ileti kullanýlabilir deðil"
-
-#: camel/providers/imap/camel-imap-folder.c:1014
-#: camel/providers/imap/camel-imap-folder.c:1229
-msgid "Could not find message body in FETCH response."
-msgstr "FETCH cevabýnda ileti gövdesi bulunamadý"
-
-#: camel/providers/imap/camel-imap-provider.c:43 mail/mail-config.glade.h:11
-msgid "Checking for new mail"
-msgstr "Yeni iletiler denetleniyor"
-
-#: camel/providers/imap/camel-imap-provider.c:45
-msgid "Check for new messages in all folders"
-msgstr "Yeni iletileri tüm dizinlerde denetle"
-
-#: camel/providers/imap/camel-imap-provider.c:48 shell/e-shell-view.c:534
-msgid "Folders"
-msgstr "Dizinler"
-
-#: camel/providers/imap/camel-imap-provider.c:50
-msgid "Show only subscribed folders"
-msgstr "Sadece üye olunan dizinleri göster"
-
-#: camel/providers/imap/camel-imap-provider.c:52
-msgid "Override server-supplied folder namespace"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:54
-msgid "Namespace"
-msgstr "Ýsim alaný"
-
-#: camel/providers/imap/camel-imap-provider.c:57
-msgid "Apply filters to new messages in INBOX on this server"
-msgstr "Bu sunucudaki GELEN kutusunda bulunan yeni iletilere filtreleri uygula"
-
-#: camel/providers/imap/camel-imap-provider.c:63
-msgid "IMAPv4"
-msgstr "IMAPv4"
-
-#: camel/providers/imap/camel-imap-provider.c:65
-msgid "For reading and storing mail on IMAP servers."
-msgstr "IMAP sunucularý ileti alma ve göndermede kullanmak için"
-
-#: camel/providers/imap/camel-imap-provider.c:82
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr ""
-"Bu seçenek IMAP sunucusuna açýk metin parola kullanarak baðlantý kurulmasýný "
-"saðlar."
-
-#: camel/providers/imap/camel-imap-store.c:443
-#, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr "%s IMAP sunucusu %s kimlik sýnama yöntemini desteklemiyor"
-
-#: camel/providers/imap/camel-imap-store.c:453
-#: camel/providers/smtp/camel-smtp-transport.c:358
-#, c-format
-msgid "No support for authentication type %s"
-msgstr "%s kimlik sýnama yöntemi desteklenmiyor"
-
-#: camel/providers/imap/camel-imap-store.c:478
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr "%sLütfen %s@%s için IMAP parolasýný giriniz"
-
-#: camel/providers/imap/camel-imap-store.c:493
-#: camel/providers/smtp/camel-smtp-transport.c:403
-msgid "You didn't enter a password."
-msgstr "Bir parola girmediniz."
-
-#: camel/providers/imap/camel-imap-store.c:521
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"IMAP sunucuyla kimlik denetimi baþarýsýz oldu\n"
-"%s\n"
-"\n"
-
-#: camel/providers/imap/camel-imap-store.c:868
-#, c-format
-msgid "%s is not a selectable folder"
-msgstr "%s seçilebilir bir dizin deðil"
-
-#: camel/providers/imap/camel-imap-store.c:882
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr "%s dizini yaratýlamadý: %s"
-
-#: camel/providers/imap/camel-imap-store.c:1385
-msgid "You must be working online to complete this operation"
-msgstr "Bu iþlemi bitirmek için Ýnternet baðlantýsý saðlamalýsýnýz"
-
-#: camel/providers/local/camel-local-provider.c:39
-msgid "MH-format mail directories"
-msgstr "MH biçimli e-posta dizinleri"
-
-#: camel/providers/local/camel-local-provider.c:40
-msgid "For storing local mail in MH-like mail directories"
-msgstr "Ýletileri MH benzeri e-posta dizinlerinde saklamak için"
-
-#: camel/providers/local/camel-local-provider.c:49
-msgid "Standard Unix mailbox file"
-msgstr "Standart UNIX posta kutusu dosyasý"
-
-#: camel/providers/local/camel-local-provider.c:50
-msgid "For storing local mail in standard mbox format"
-msgstr "Ýletileri standart UNIX posta kutusu dosyasýnda saklamak için"
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "Qmail maildir-format mail files"
-msgstr "Qmail maildir biçiminde mektup dosyalarý"
-
-#: camel/providers/local/camel-local-provider.c:60
-msgid "For storing local mail in qmail maildir directories"
-msgstr "Ýletileri qmail maildir dizinleri halinde saklamak için"
-
-#: camel/providers/local/camel-local-store.c:129
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr "%s saklama dizininde hata"
-
-#: camel/providers/local/camel-local-store.c:136
-#, c-format
-msgid "Store root %s is not a regular directory"
-msgstr "%s saklama dizini geçersiz"
-
-#: camel/providers/local/camel-local-store.c:144
-#: camel/providers/local/camel-local-store.c:160
-#, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "%s dizini alýnamadý: %s"
-
-#: camel/providers/local/camel-local-store.c:175
-msgid "Local stores do not have an inbox"
-msgstr "Yerel disklerde gelen dizini bulunmasýn"
-
-#: camel/providers/local/camel-local-store.c:185
-#, c-format
-msgid "Local mail file %s"
-msgstr "Yerel mektup dosyasý %s"
-
-#: camel/providers/local/camel-local-store.c:241
-#, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr "%s dizininin adý %s olarak deðiþtirilemedi: %s"
-
-#: camel/providers/local/camel-local-store.c:283
-#, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr "`%s' dizin özet dosyasý silinemedi: %s"
-
-#: camel/providers/local/camel-local-store.c:293
-#, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr "`%s' dizin indeks dosyasý silinemedi: %s"
-
-#: camel/providers/local/camel-maildir-folder.c:150
-#: camel/providers/local/camel-maildir-folder.c:158
-#: camel/providers/local/camel-maildir-folder.c:169
-#, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr "%s dizinine ileti eklenemedi: %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-maildir-folder.c:209
-#: camel/providers/local/camel-maildir-folder.c:217
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#: camel/providers/local/camel-mh-folder.c:194
-#: camel/providers/local/camel-mh-folder.c:202
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-"Ýleti alýnamadý: %s\n"
-" %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-msgid "No such message"
-msgstr "Ýleti bulunmuyor"
-
-#: camel/providers/local/camel-maildir-folder.c:218
-#: camel/providers/local/camel-mh-folder.c:203
-msgid "Invalid message contents"
-msgstr "Geçersiz ileti içeriði"
-
-#: camel/providers/local/camel-maildir-store.c:96
-#: camel/providers/local/camel-mh-store.c:90
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-"Dizin açýlamadý: `%s':\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:100
-#: camel/providers/local/camel-mbox-store.c:101
-#: camel/providers/local/camel-mh-store.c:97
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr "%s dizini bulunamadý."
-
-#: camel/providers/local/camel-maildir-store.c:107
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-"'%s dizini yaratýlamadý:\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:122
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr "`%s' bir maildir dizini."
-
-#: camel/providers/local/camel-maildir-store.c:151
-#: camel/providers/local/camel-maildir-store.c:188
-#: camel/providers/local/camel-mh-store.c:127
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr "`%s' dizini silinemedi: %s"
-
-#: camel/providers/local/camel-maildir-store.c:152
-msgid "not a maildir directory"
-msgstr "maildir dizini deðil"
-
-#: camel/providers/local/camel-mbox-folder.c:152
-#, c-format
-msgid "Cannot create folder lock on %s: %s"
-msgstr "%s üzerinde dizin kilitlemesi yaratýlamadý: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:203
-#, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr "%s posta kutusu açýlamadý: %s\n"
-
-#: camel/providers/local/camel-mbox-folder.c:259
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr "Ýleti mbox dosyasýna eklenemedi (%s): %s"
-
-#: camel/providers/local/camel-mbox-folder.c:335
-#: camel/providers/local/camel-mbox-folder.c:367
-#: camel/providers/local/camel-mbox-folder.c:380
-#, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-"%s iletisi %s dizininden alýnamadý\n"
-" %s"
-
-#: camel/providers/local/camel-mbox-folder.c:368
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr "Dizin onarýlamayacak þekilde bozulmuþ."
-
-#: camel/providers/local/camel-mbox-folder.c:381
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr "Ýletiler düzenlenemiyor: Ýleti kutusu bozulmuþ olabilir."
-
-#: camel/providers/local/camel-mbox-store.c:94
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-"`%s' dosyasý açýlamadý:\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:110
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-"`%s' dosyasý yaratýlamadý:\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:119
-#: camel/providers/local/camel-mbox-store.c:146
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr "`%s' normal bir dosya deðildir."
-
-#: camel/providers/local/camel-mbox-store.c:138
-#: camel/providers/local/camel-mbox-store.c:161
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-"`%s' dizini silinemedi:\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr "`%s' dizini boþ deðil. Silinmedi."
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:248
-msgid "Summarising folder"
-msgstr "Dizin özeti çýkartýlýyor"
-
-#: camel/providers/local/camel-mbox-summary.c:253
-#, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr "Dizin açýlamadý: %s: %ld konumundan itibaren özet çýkartýlýyor: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:295
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr "%ld yakýnýnda e-posta ayrýþtýrma hatasý (dizin: %s)"
-
-#: camel/providers/local/camel-mbox-summary.c:370
-#, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr "Dizin özeti çýkartýlamadý: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:501
-#: camel/providers/local/camel-mbox-summary.c:702 mail/mail-ops.c:1390
-msgid "Synchronising folder"
-msgstr "Dizin eþzamanlý hale getiriliyor"
-
-#: camel/providers/local/camel-mbox-summary.c:506
-#: camel/providers/local/camel-mbox-summary.c:707
-#, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr "Özet için dizin açýlamadý: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:523
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr "Geçici posta kutusu açýlamadý: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:548
-#: camel/providers/local/camel-mbox-summary.c:556
-#: camel/providers/local/camel-mbox-summary.c:745
-#: camel/providers/local/camel-mbox-summary.c:753
-msgid "Summary and folder mismatch, even after a sync"
-msgstr "Özet ve dizin uyuþmazlýðý"
-
-#: camel/providers/local/camel-mbox-summary.c:599
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr "Geçici posta kutusuna yazma hatasý: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:616
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr "Geçici dosya kutusuna yazma iþlemi baþarýsýz: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:634
-#: camel/providers/local/camel-mbox-summary.c:803
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr "Kaynak dizin %s açýlamadý: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:643
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr "geçici dizin kapatýlamadý: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:654
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr "Dizinin adý deðiþtirilemedi: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:878
-#, c-format
-msgid "Unknown error: %s"
-msgstr "Bilinmeyen hata: %s"
-
-#: camel/providers/local/camel-mh-folder.c:149
-#: camel/providers/local/camel-mh-folder.c:157
-#, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr "Mesaj mh dizinine eklenemedi: %s: %s"
-
-#: camel/providers/local/camel-mh-store.c:110
-#, c-format
-msgid "`%s' is not a directory."
-msgstr "`%s' bir dizin deðil."
-
-#: camel/providers/nntp/camel-nntp-auth.c:45
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr "%s@%s için NNTP parolasýný giriniz"
-
-#: camel/providers/nntp/camel-nntp-auth.c:66
-msgid "Server rejected username"
-msgstr "Kullanýcý adý sunucu tarafýndan reddedildi"
-
-#: camel/providers/nntp/camel-nntp-auth.c:72
-msgid "Failed to send username to server"
-msgstr "Sunucuya kullanýcý adý gönderilemedi"
-
-#: camel/providers/nntp/camel-nntp-auth.c:81
-msgid "Server rejected username/password"
-msgstr "Sunucu kullanýcý adý ve parolasýný reddetti"
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr "%s iletisi bulunamadý."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr "Sunucudan grup listesi alýnamadý."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr "%s için grup liste dosyasý alýnamadý: %s"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr "%s için grup liste dosyasý kaydedilemedi: %s"
-
-#: camel/providers/nntp/camel-nntp-provider.c:42
-msgid "USENET news"
-msgstr "USENET haber grubu"
-
-#: camel/providers/nntp/camel-nntp-provider.c:44
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr "USENET haber gruplarýndan mesaj okuma ve gönderme için saðlayýcý."
-
-#: camel/providers/nntp/camel-nntp-store.c:224
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr "Haber sunucusu için dizin açýlamadý: %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:286
-#, c-format
-msgid "USENET News via %s"
-msgstr "%s üzerinden USENET"
-
-#: camel/providers/nntp/camel-nntp-store.c:293
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-"Bu seçenek NNTP sunucusuna açýk metin parola üzerinden kimlik denetimi "
-"yaptýrýr."
-
-#: camel/providers/nntp/camel-nntp-store.c:325
-#: camel/providers/nntp/camel-nntp-store.c:488
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr "%s için .newsrc dosyasý açýlamadý ya da oluþturulamadý: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-msgid "Retrieving POP summary"
-msgstr "POP özeti alýnýyor"
-
-#: camel/providers/pop3/camel-pop3-folder.c:155
-msgid "Could not check POP server for new messages: %s"
-msgstr "POP sunucuya baðlantý kurulamadý: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:199
-msgid "Could not open folder: message listing was incomplete."
-msgstr "Dizin açýlamadý: Ýleti listesi tamamlanmadý."
-
-#: camel/providers/pop3/camel-pop3-folder.c:292
-#, c-format
-msgid "No message with uid %s"
-msgstr "%s kullanýcý numarasýyla ileti yok"
-
-#: camel/providers/pop3/camel-pop3-folder.c:296
-#, c-format
-msgid "Retrieving POP message %d"
-msgstr "%d POP mesajý alýnýyor"
-
-#: camel/providers/pop3/camel-pop3-folder.c:303
-msgid "Could not fetch message: %s"
-msgstr "Ýletiler alýnamadý: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:320
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr "%s POP sunucusundan iletileri alamadým: %s"
-
-#: camel/providers/pop3/camel-pop3-provider.c:37
-msgid "Message storage"
-msgstr "Ýleti deposu"
-
-#: camel/providers/pop3/camel-pop3-provider.c:39
-msgid "Leave messages on server"
-msgstr "Ýletileri sunucuda býrak"
-
-#: camel/providers/pop3/camel-pop3-provider.c:41
-#, c-format
-msgid "Delete after %s day(s)"
-msgstr "%s günden sonra sil"
-
-#: camel/providers/pop3/camel-pop3-provider.c:48 mail/mail-config.glade.h:42
-msgid "POP"
-msgstr "POP"
-
-#: camel/providers/pop3/camel-pop3-provider.c:50
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr "POP sunucuya baðlantý kurmak için."
-
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-"Bu seçenek POP sunucuya açýk metin parola kullanarak baðlantý kurar. Pek çok "
-"POP sunucusu tarafýndan desteklenir."
-
-#: camel/providers/pop3/camel-pop3-provider.c:79
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-"Bu seçenek POP sunucuya þifreli APOP protokolünü kullanarak baðlantý kurar."
-
-#: camel/providers/pop3/camel-pop3-provider.c:91
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-"POP sunucuya baðlantý kurar ve Kerberos 4 kullanarak kimlik denetimi yapar."
-
-#: camel/providers/pop3/camel-pop3-store.c:209
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr "KPOP sunucuyla baðlantý kurulamadý: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:225
-msgid "Could not connect to server: %s"
-msgstr "Sunucuya baðlantý kurulamadý: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:329
-#, c-format
-msgid "Could not connect to POP server on %s."
-msgstr "%s üzerindeki POP sunucuya baðlantý kurulamadý"
-
-#: camel/providers/pop3/camel-pop3-store.c:368
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr "%sLütfen %s@%s için POP3 parolasýný girin"
-
-#: camel/providers/pop3/camel-pop3-store.c:387
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-"POP sunucuya baðlantý kurulamadý.\n"
-"Kullanýcý adý gönderilirken hata: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:390
-#: camel/providers/pop3/camel-pop3-store.c:427
-msgid "(Unknown)"
-msgstr "(Bilinmeyen)"
-
-#: camel/providers/pop3/camel-pop3-store.c:417
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-"POP sunucusuyla baðlantý kurulamadý.\n"
-"Belirtilen kimlik sýnama protokolü desteklenmiyor."
-
-#: camel/providers/pop3/camel-pop3-store.c:425
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-"POP sunucusuyla baðlantý kurulamadý.\n"
-"Parola iletiminde hata: %s"
-
-#: camel/providers/pop3/camel-pop3-store.c:493
-#, c-format
-msgid "No such folder `%s'."
-msgstr "Bu isimde bir dizin yok: `%s'"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:37
-#: mail/mail-config.glade.h:57
-msgid "Sendmail"
-msgstr "Sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:39
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr "Yerel sistemdeki sendmail programýnýn e-postalarý göndermesi için."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:107
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr "sendmail ile baðlantý kurulamadý: %s: ileti gönderilemedi"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:124
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr "sendmail çalýþtýrýlamadý: %s: ileti gönderilemedi"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:150
-#, c-format
-msgid "Could not send message: %s"
-msgstr "Ýleti gönderilemedi: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:163
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr "sendmail %s sinyali ile kapandý: ileti gönderilemedi."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:170
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr "%s çalýþtýrýlamadý: ileti gönderilemedi."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:175
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr "sendmail %d durumu ile çýktý: ileti gönderilemedi."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:194
-msgid "Could not find 'From' address in message"
-msgstr "Ýletide 'From' adresi bulunamadý"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "sendmail"
-msgstr "sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:249
-msgid "Mail delivery via the sendmail program"
-msgstr "Sendmail üzerinden ileti gönderimi"
-
-#: camel/providers/smtp/camel-smtp-provider.c:38 mail/mail-config.glade.h:52
-msgid "SMTP"
-msgstr "SMTP"
-
-#: camel/providers/smtp/camel-smtp-provider.c:40
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr "SMTP üzerinden bir sunucuya baðlanýp e-postalarýnýzý göndermek için.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:165
-msgid "Syntax error, command unrecognized"
-msgstr "Ýmla hatasý, bilinmeyen komut"
-
-#: camel/providers/smtp/camel-smtp-transport.c:167
-msgid "Syntax error in parameters or arguments"
-msgstr "Parametre ya da argümanlarda imla hatasý"
-
-#: camel/providers/smtp/camel-smtp-transport.c:169
-msgid "Command not implemented"
-msgstr "Komut henüz tanýnmýyor"
-
-#: camel/providers/smtp/camel-smtp-transport.c:171
-msgid "Command parameter not implemented"
-msgstr "Komut parametresi henüz tanýnmýyor"
-
-#: camel/providers/smtp/camel-smtp-transport.c:173
-msgid "System status, or system help reply"
-msgstr "Sistem durumu, ya da sistem yardým yanýtý"
-
-#: camel/providers/smtp/camel-smtp-transport.c:175
-msgid "Help message"
-msgstr "Yardým mesajý"
-
-#: camel/providers/smtp/camel-smtp-transport.c:177
-msgid "Service ready"
-msgstr "Servis hazýr"
-
-#: camel/providers/smtp/camel-smtp-transport.c:179
-msgid "Service closing transmission channel"
-msgstr "Servis iletiþim kanalýný kapatýyor"
-
-#: camel/providers/smtp/camel-smtp-transport.c:181
-msgid "Service not available, closing transmission channel"
-msgstr "Servis uygun deðil, iletiþim kanalý kapatýlýyor"
-
-#: camel/providers/smtp/camel-smtp-transport.c:183
-msgid "Requested mail action okay, completed"
-msgstr "Ýstenen ileti iþlemi tamamlandý"
-
-#: camel/providers/smtp/camel-smtp-transport.c:185
-msgid "User not local; will forward to <forward-path>"
-msgstr "Kullanýcý yerel deðil, <forward-path> üzerine gönderilecek"
-
-#: camel/providers/smtp/camel-smtp-transport.c:187
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr "Ýstenen ileti eylemi yapýlmadý: posta kutusu bulunamadý"
-
-#: camel/providers/smtp/camel-smtp-transport.c:189
-msgid "Requested action not taken: mailbox unavailable"
-msgstr "Ýstenen eylem yapýlmadý: posta kutusu bulunamadý"
-
-#: camel/providers/smtp/camel-smtp-transport.c:191
-msgid "Requested action aborted: error in processing"
-msgstr "Ýstenen eylem iptal edildi: iþlem sýrasýnda hata"
-
-#: camel/providers/smtp/camel-smtp-transport.c:193
-msgid "User not local; please try <forward-path>"
-msgstr "Kullanýcý yerel deðil; lütfen <forward-path> deneyin"
-
-#: camel/providers/smtp/camel-smtp-transport.c:195
-msgid "Requested action not taken: insufficient system storage"
-msgstr "Ýstenen eylem yapýlmadý: disk alaný yetersiz"
-
-#: camel/providers/smtp/camel-smtp-transport.c:197
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr "Ýstenen eylem iptal edildi: disk alaný yetersiz"
-
-#: camel/providers/smtp/camel-smtp-transport.c:199
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr "Ýstenen eylem yapýlmadý: e-posta kutusu izni yok"
-
-#: camel/providers/smtp/camel-smtp-transport.c:201
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr "Ýleti baþlangýcýný girin, <CRLF>.<CRLF> ile bitirin."
-
-#: camel/providers/smtp/camel-smtp-transport.c:203
-msgid "Transaction failed"
-msgstr "Ýletiþim kurulamadý"
-
-#: camel/providers/smtp/camel-smtp-transport.c:207
-msgid "A password transition is needed"
-msgstr "Parola iletimi gerekiyor"
-
-#: camel/providers/smtp/camel-smtp-transport.c:209
-msgid "Authentication mechanism is too weak"
-msgstr "Kimlik sýnama yöntemi çok zayýf"
-
-#: camel/providers/smtp/camel-smtp-transport.c:211
-msgid "Encryption required for requested authentication mechanism"
-msgstr "Ýstenen kimlik sýnama yöntemi için þifreleme gerekiyor"
-
-#: camel/providers/smtp/camel-smtp-transport.c:213
-msgid "Temporary authentication failure"
-msgstr "Geçici kimlik denetim hatasý"
-
-#: camel/providers/smtp/camel-smtp-transport.c:215
-msgid "Authentication required"
-msgstr "Kimlik denetimi isteniyor"
-
-#: camel/providers/smtp/camel-smtp-transport.c:305
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr "Giriþ hatasý: %s: önemsiz"
-
-#: camel/providers/smtp/camel-smtp-transport.c:348
-#, c-format
-msgid "SMTP server %s does not support requested authentication type %s"
-msgstr "%s SMTP sunucusu %s kimlik sýnama yöntemini desteklemiyor"
-
-#: camel/providers/smtp/camel-smtp-transport.c:388
-#, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr "%sLütfen %s@%s için SMTP parolasýný giriniz"
-
-#: camel/providers/smtp/camel-smtp-transport.c:411
-msgid ""
-"Unable to authenticate to SMTP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-"SMTP sunucuyla kimlik denetimi baþarýsýz oldu\n"
-"%s\n"
-"\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:527
-#, c-format
-msgid "SMTP server %s"
-msgstr "SMTP sunucu %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:529
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr "%s üzerinden STMP ileti gönderimi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:554
-msgid "Cannot send message: sender address not defined."
-msgstr "Ýleti gönderilemiyor: gönderen adresi tanýmlý deðil."
-
-#: camel/providers/smtp/camel-smtp-transport.c:561
-msgid "Cannot send message: sender address not valid."
-msgstr "Ýleti gönderilemiyor: gönderen adresi geçersiz"
-
-#: camel/providers/smtp/camel-smtp-transport.c:575
-msgid "Cannot send message: no recipients defined."
-msgstr "MAIL FROM cevap hatasý: %s: ileti gönderilmedi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:669
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr "HELO zaman aþýmý: %s: ileti gönderilmedi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:688
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr "HELO cevap hatasý: %s: ileti gönderilmedi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:721
-msgid "Error creating SASL authentication object."
-msgstr "SASL kimlik denetim nesnesi yaratýlamadý."
-
-#: camel/providers/smtp/camel-smtp-transport.c:736
-#: camel/providers/smtp/camel-smtp-transport.c:748
-#, c-format
-msgid "AUTH request timed out: %s"
-msgstr "AUTH isteði zaman aþýmýna uðradý: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:798
-msgid "Bad authentication response from server.\n"
-msgstr "Sunucudan hatalý kimlik sýnama yanýtý.\n"
-
-#: camel/providers/smtp/camel-smtp-transport.c:824
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr "MAIL FROM zaman aþýmý: %s: ileti gönderilmedi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:843
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr "MAIL FROM cevap hatasý: %s: ileti gönderilmedi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:868
-#, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr "RCPT TO zaman aþýmý: %s: ileti gönderilmedi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:887
-#, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr "RCPT TO cevap hatasý: %s: ileti gönderilmedi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:918
-#, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr "DATA isteði zaman aþýmýna uðradý: %s: ileti gönderilmedi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:937
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr "DATA cevap hatasý: %s: ileti gönderilmedi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:952
-#: camel/providers/smtp/camel-smtp-transport.c:970
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr "DATA gönderimi zaman aþýmýna uðradý: %s: ileti gönderilmedi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:989
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr "DATA cevap hatasý: %s: ileti gönderilmedi"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1013
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr "RSET isteði zaman aþýmýna uðradý: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1032
-#, c-format
-msgid "RSET response error: %s"
-msgstr "RSET cevap hatasý: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1055
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr "QUIT isteði zaman aþýmýna uðradý: %s: önemsiz"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1074
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr "QUIT cevap hatasý: %s: önemsiz"
-
-#: composer/e-msg-composer-attachment-bar.c:95
-msgid "1 byte"
-msgstr "1 bayt"
-
-#: composer/e-msg-composer-attachment-bar.c:97
-#, c-format
-msgid "%u bytes"
-msgstr "%u bayt"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fK"
-
-#: composer/e-msg-composer-attachment-bar.c:108
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fM"
-
-#: composer/e-msg-composer-attachment-bar.c:112
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fG"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:332 mail/mail-display.c:120
-msgid "attachment"
-msgstr "ek"
-
-#: composer/e-msg-composer-attachment-bar.c:421
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr "Bir dosya ekle"
-
-#: composer/e-msg-composer-attachment-bar.c:469
-msgid "Remove selected items from the attachment list"
-msgstr "Seçili dosyalarý ekler listesinden sil"
-
-#: composer/e-msg-composer-attachment-bar.c:500
-msgid "Add attachment..."
-msgstr "Dosya ekle..."
-
-#: composer/e-msg-composer-attachment-bar.c:501
-msgid "Attach a file to the message"
-msgstr "Ýletiyi bir dosya ekle"
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/message-list.c:1054
-msgid "Attachment"
-msgstr "Ek"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr "Ek özellikleri"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr "Dosya adý:"
-
-#: composer/e-msg-composer-attachment.glade.h:5
-msgid "Inline attachment"
-msgstr "Çevrimiçin ek"
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr "MIME türü:"
-
-#: composer/e-msg-composer-attachment.glade.h:7
-msgid "Send as:"
-msgstr "Farklý gönder:"
-
-#: composer/e-msg-composer-hdrs.c:321
-msgid "Click here for the address book"
-msgstr "Adres defteri için buraya týklayýn"
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:352 mail/mail-format.c:719
-msgid "From:"
-msgstr "Kimden:"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:358 mail/mail-format.c:721
-msgid "Reply-To:"
-msgstr "Cevapla:"
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:369 mail/mail-format.c:643
-msgid "Subject:"
-msgstr "Konu:"
-
-#: composer/e-msg-composer-hdrs.c:383 mail/mail-format.c:723
-msgid "To:"
-msgstr "Kime:"
-
-#: composer/e-msg-composer-hdrs.c:384
-msgid "Enter the recipients of the message"
-msgstr "Ýletinin gönderildiði kiþiler"
-
-#: composer/e-msg-composer-hdrs.c:387 mail/mail-format.c:725
-msgid "Cc:"
-msgstr "Cc:"
-
-#: composer/e-msg-composer-hdrs.c:388
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "Ýletinin kopyasýnýn gönderilecek olunduðu adresler"
-
-#: composer/e-msg-composer-hdrs.c:391
-msgid "Bcc:"
-msgstr "Bcc:"
-
-#: composer/e-msg-composer-hdrs.c:392
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"Ýletinin karbon kopyalarýnýn gönderileceði adresi girin. Ancak buraya "
-"girilecek kiþiler gönderilenler listesinde görünmeyecektir."
-
-#: composer/e-msg-composer.c:528
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-"%s imza dosyasý açýlamadý:\n"
-"%s"
-
-#: composer/e-msg-composer.c:716
-msgid "Save as..."
-msgstr "Farklý kaydet..."
-
-#: composer/e-msg-composer.c:727
-#, c-format
-msgid "Error saving file: %s"
-msgstr "%s dosyasýný kaydederken hata oldu"
-
-#: composer/e-msg-composer.c:747
-#, c-format
-msgid "Error loading file: %s"
-msgstr "`%s' dosyasýný yüklerken hata oldu"
-
-#: composer/e-msg-composer.c:819
-msgid ""
-"Unable to open the drafts folder for this account.\n"
-"Would you like to use the default drafts folder?"
-msgstr ""
-"Bu hesap için taslak dizini açýlamadý.\n"
-"Öntanýmlý taslak dizinini kullanmak istiyor musunuz?"
-
-#: composer/e-msg-composer.c:877 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:206
-msgid "Evolution"
-msgstr "Evolution"
-
-#: composer/e-msg-composer.c:883
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-"Bu ileti gönderilmedi.\n"
-"Deðiþiklikleri kaydetmek istiyor musunuz?"
-
-#: composer/e-msg-composer.c:908
-msgid "Open file"
-msgstr "Dosyayý aç"
-
-#: composer/e-msg-composer.c:1034
-msgid "That file does not exist."
-msgstr "Böyle bir dosya yok ."
-
-#: composer/e-msg-composer.c:1044
-msgid "That is not a regular file."
-msgstr "Bu normal bir dosya deðildir ."
-
-#: composer/e-msg-composer.c:1054
-msgid "That file exists but is not readable."
-msgstr "Bu dosya vardýr ama okunabilir deðil ."
-
-#: composer/e-msg-composer.c:1064
-msgid "That file appeared accesible but open(2) failed."
-msgstr "Bu dosya eriþilebilinir gibiydi amma open(2)-çaðrýsý baþarýsýz oldu ."
-
-#: composer/e-msg-composer.c:1086
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-"Bu dosya çok büyük (100 KB'den büyük!).\n"
-"Gerçekten kullanmak istiyor musunuz?"
-
-#: composer/e-msg-composer.c:1107
-msgid "An error occurred while reading the file."
-msgstr "Dosyayý okurken bir hata oldu."
-
-#: composer/e-msg-composer.c:1408 composer/e-msg-composer.c:1740
-msgid "Compose a message"
-msgstr "Bir ileti yaz"
-
-#: composer/e-msg-composer.c:1829
-msgid "Could not create composer window."
-msgstr "Mektup gönderme penceresi açýlamadý."
-
-#: composer/evolution-composer.c:355
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-"E-posta düzenleme penceresi açýlmadý, çünkü adýnýzý ve\n"
-"e-posta bilgilerinizi girmediniz."
-
-#: composer/evolution-composer.c:370
-msgid "Cannot initialize Evolution's composer."
-msgstr "Evolution posta programý açýlamadý."
-
-#: data/evolution.desktop.in.h:2
-msgid "The Evolution groupware suite"
-msgstr "Evolution kitlesel iþlemler uygulamasý"
-
-#: data/evolution.keys.in.h:1
-msgid "address card"
-msgstr "adres kartý"
-
-#: data/evolution.keys.in.h:2
-msgid "calendar information"
-msgstr "takvim bilgisi"
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:69 e-util/e-time-utils.c:117
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:477
-#: widgets/misc/e-dateedit.c:1282 widgets/misc/e-dateedit.c:1463
-msgid "%m/%d/%Y"
-msgstr "%d/%m/%Y"
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:87 e-util/e-time-utils.c:198
-msgid "%I:%M:%S %p%n"
-msgstr "%I:%M:%S %p%n"
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:90 e-util/e-time-utils.c:201
-msgid "%H:%M:%S%n"
-msgstr "%H:%M:%S%n"
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:94 e-util/e-time-utils.c:205
-msgid "%I:%M %p%n"
-msgstr "%I:%M %p%n"
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:97 e-util/e-time-utils.c:208
-msgid "%H:%M%n"
-msgstr "%H:%M%n"
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:269
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:473
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2503
-msgid "%a %m/%d/%Y"
-msgstr "%d %b %Y %a"
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:274
-msgid "%a %m/%d/%Y %H:%M"
-msgstr "%d/%m/%Y %a %H:%M"
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:283
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr "%a %d/%m/%Y %I:%M %p"
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:312 widgets/misc/e-dateedit.c:1257
-#: widgets/misc/e-dateedit.c:1316 widgets/misc/e-dateedit.c:1495
-msgid "%H:%M"
-msgstr "%H:%M"
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:315
-msgid "%H:%M:%S"
-msgstr "%H:%M:%S"
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:320 widgets/misc/e-dateedit.c:1260
-#: widgets/misc/e-dateedit.c:1319 widgets/misc/e-dateedit.c:1498
-msgid "%I:%M %p"
-msgstr "%I:%M %p"
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:323
-msgid "%I:%M:%S %p"
-msgstr "%I:%M:%S %p"
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-msgid "Evolution component for the executive summary."
-msgstr "Özet için Evolution bileþeni"
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-msgid "Factory for the Evolution executive summary component."
-msgstr "Evolution özet bileþen mimarisi."
-
-#: executive-summary/component/component-factory.c:152
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr "Evolution Özet bileþeni ilklendirilemedi."
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-"Genel özetin arkaplaný için farklý HTML sayfalarý kullanabilirsiniz.\n"
-"Öntanýmlý deðer için boþ býrakýn."
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr "%s dosyasýný öntanýmlý GNOME uygulamasý ile aç"
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr "%s dosyasýný öntanýmlý GNOME web tarayýcýsý ile aç"
-
-#: executive-summary/component/e-summary-url.c:71
-#, c-format
-msgid "Send an email to %s"
-msgstr "%s adresine e-posta gönder"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr "Görünümü %s olarak deðiþtir"
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr "%s'i Çalýþtýr"
-
-#: executive-summary/component/e-summary-url.c:75
-#, c-format
-msgid "Close %s"
-msgstr "%s'i Kapat"
-
-#: executive-summary/component/e-summary-url.c:76
-#, c-format
-msgid "Move %s to the left"
-msgstr "%s'i sola taþý"
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr "%s'i saða taþý"
-
-#: executive-summary/component/e-summary-url.c:78
-#, c-format
-msgid "Move %s into the previous row"
-msgstr "%s'i önceki satýra taþý"
-
-#: executive-summary/component/e-summary-url.c:79
-#, c-format
-msgid "Move %s into the next row"
-msgstr "%s'i sonraki satýra taþý"
-
-#: executive-summary/component/e-summary-url.c:80
-#, c-format
-msgid "Configure %s"
-msgstr "Yapýlandýr: %s"
-
-#: executive-summary/component/e-summary.c:924
-#, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"HTML dosyasý açýlamadý:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:938
-#, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr ""
-"Veri okunurken hata:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:956
-msgid "File does not have a place for the services.\n"
-msgstr "Dosya servisler için konum belirtmiyor.\n"
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr "Görünüm"
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr "Arkaplan:"
-
-#: executive-summary/component/main.c:62
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-"Genel özet bilgi bileþeni Bonobo'yu ilklendiremedi.\n"
-"RootPOA hakkýnda bir uyarý mesajý varsa, Bonobo'yu OAF\n"
-"yerine GOAD ile derlemiþsinizdir."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr "RDF özet mimarisi."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-msgid "RDF Summary"
-msgstr "RDF Özeti"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-msgid "Factory for the test bonobo component."
-msgstr "Test bonobo bileþen mimarisi"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-msgid "Factory for the test component."
-msgstr "Deneme bileþen mimarisi"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr "Bonobo servislerini dene"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr "Servisi dene"
-
-#: executive-summary/test-service/rdf-summary.c:512
-#: executive-summary/test-service/rdf-summary.c:549
-#: executive-summary/test-service/rdf-summary.c:594
-#: widgets/misc/e-messagebox.c:166
-msgid "Error"
-msgstr "Hata"
-
-#: executive-summary/test-service/rdf-summary.c:768
-msgid "Update automatically"
-msgstr "Otomatik güncelle"
-
-#: executive-summary/test-service/rdf-summary.c:778
-msgid "Update now"
-msgstr "Þimdi güncelle"
-
-#: executive-summary/test-service/rdf-summary.c:788
-msgid "Update every "
-msgstr "Bu aralýkla güncelle: "
-
-#: executive-summary/test-service/rdf-summary.c:796
-#: filter/filter-datespec.c:83
-msgid "minutes"
-msgstr "dakika"
-
-#: filter/filter-datespec.c:78
-msgid "year"
-msgstr "yýl"
-
-#: filter/filter-datespec.c:78
-msgid "years"
-msgstr "yýl"
-
-#: filter/filter-datespec.c:79
-msgid "month"
-msgstr "ay"
-
-#: filter/filter-datespec.c:79
-msgid "months"
-msgstr "ay"
-
-#: filter/filter-datespec.c:80
-msgid "week"
-msgstr "hafta"
-
-#: filter/filter-datespec.c:80
-msgid "weeks"
-msgstr "hafta"
-
-#: filter/filter-datespec.c:81
-msgid "days"
-msgstr "gün"
-
-#: filter/filter-datespec.c:82
-msgid "hour"
-msgstr "saat"
-
-#: filter/filter-datespec.c:82
-msgid "hours"
-msgstr "saat"
-
-#: filter/filter-datespec.c:83
-msgid "minute"
-msgstr "dakika"
-
-#: filter/filter-datespec.c:84
-msgid "second"
-msgstr "saniye"
-
-#: filter/filter-datespec.c:84
-msgid "seconds"
-msgstr "saniye"
-
-#: filter/filter-datespec.c:199
-msgid "Oops. You have forgotten to choose a date."
-msgstr "Bir tarih seçmeyi unuttunuz."
-
-#: filter/filter-datespec.c:201
-msgid "Oops. You have chosen an invalid date."
-msgstr "Hatalý tarih giriþi yaptýnýz."
-
-#: filter/filter-datespec.c:276
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-"Bu mesajýn tarihi filtrenin çalýþtýrýldýðý\n"
-"ya da vfolder'ýn açýldýðý tarih ile\n"
-"karþýlaþtýrýlacaktýr."
-
-#: filter/filter-datespec.c:299
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-"Ýletinin tarihi burada belirttiðiniz\n"
-"tarih ile karþýlaþtýrýlacaktýr."
-
-#: filter/filter-datespec.c:339
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-"Ýletinin tarihi filtrenin çalýþtýrýldýðý\n"
-"zamana göreceli bir tarih ile karþýlaþtýrýlacaktýr,\n"
-"örnek olarak \"bir hafta önce\"."
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:374
-msgid "the current time"
-msgstr "þimdiki zaman"
-
-#: filter/filter-datespec.c:374
-msgid "a time you specify"
-msgstr "belirttiðiniz zaman"
-
-#: filter/filter-datespec.c:375
-msgid "a time relative to the current time"
-msgstr "þimdiki zamana göreceli bir zaman"
-
-#. The label
-#: filter/filter-datespec.c:433
-msgid "Compare against"
-msgstr "Karþýlaþtýr"
-
-#: filter/filter-datespec.c:550 filter/filter-datespec.c:710
-msgid "now"
-msgstr "þimdi"
-
-#: filter/filter-datespec.c:707
-msgid "<click here to select a date>"
-msgstr "<bir tarih seçmek için týklayýnýz>"
-
-#: filter/filter-editor.c:132 filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr "Filtre Kurallarý"
-
-#. and now for the action area
-#: filter/filter-filter.c:452
-msgid "Then"
-msgstr "Sonra"
-
-#: filter/filter-filter.c:466
-msgid "Add action"
-msgstr "Eylem ekle"
-
-#: filter/filter-folder.c:147
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-"Bir dizin seçmeyi unuttunuz.\n"
-"Lütfen geriye gidip geçerli bir dizin seçin."
-
-#: filter/filter-folder.c:225 filter/vfolder-rule.c:285
-#: mail/mail-account-gui.c:682
-msgid "Select Folder"
-msgstr "Dizini Seçin"
-
-#: filter/filter-folder.c:250
-msgid "Enter folder URI"
-msgstr "Dizin URI girin"
-
-#: filter/filter-folder.c:296
-msgid "<click here to select a folder>"
-msgstr "<bir dizin seçmek için týklayýn>"
-
-#: filter/filter-input.c:193
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-"`%s' düzgün deyiminde hata var:\n"
-"%s"
-
-#: filter/filter-part.c:474
-msgid "Test"
-msgstr "Test"
-
-#: filter/filter-rule.c:626
-msgid "Rule name: "
-msgstr "Kural adý:"
-
-#: filter/filter-rule.c:630
-msgid "Untitled"
-msgstr "Ýsimsiz"
-
-#: filter/filter-rule.c:646
-msgid "If"
-msgstr "Eðer"
-
-#: filter/filter-rule.c:664
-msgid "Execute actions"
-msgstr "Eylemleri iþlet"
-
-#: filter/filter-rule.c:668
-msgid "if all criteria are met"
-msgstr "tüm kriterler saðlanýrsa"
-
-#: filter/filter-rule.c:673
-msgid "if any criteria are met"
-msgstr "herhangi bir kriter saðlanýrsa"
-
-#: filter/filter-rule.c:684
-msgid "Add criterion"
-msgstr "Sýnýf ekle"
-
-#: filter/filter-rule.c:770
-msgid "incoming"
-msgstr "gelen"
-
-#: filter/filter-rule.c:770
-msgid "outgoing"
-msgstr "giden"
-
-#: filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr "Filtreleri Düzenle"
-
-#: filter/filter.glade.h:5
-msgid "Edit VFolders"
-msgstr "VFolder Düzenle"
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr "Gelen"
-
-#: filter/filter.glade.h:8
-msgid "Outgoing"
-msgstr "Giden"
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:130
-msgid "Virtual Folders"
-msgstr "Sanal Dizinler"
-
-#: filter/filter.glade.h:11
-msgid "specific folders only"
-msgstr "sadece belirtilen dizinler"
-
-#: filter/filter.glade.h:12
-msgid "vFolder Sources"
-msgstr "vFolder Kaynaklarý"
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr "tüm etkin uzak dizinlerle birlikte"
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr "tüm yerel ve etkin uzak dizinlerle birlikte"
-
-#: filter/filter.glade.h:15
-msgid "with all local folders"
-msgstr "tüm yerel dizinlerle birlikte"
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Colour"
-msgstr "Renk Belirt"
-
-#: filter/libfilter-i18n.h:4
-msgid "Assign Score"
-msgstr "Puan Belirt"
-
-#: filter/libfilter-i18n.h:5
-msgid "Attachments"
-msgstr "Ekler"
-
-#: filter/libfilter-i18n.h:7
-msgid "contains"
-msgstr "içerir"
-
-#: filter/libfilter-i18n.h:8
-msgid "Copy to Folder"
-msgstr "Dizine Kopyala"
-
-#: filter/libfilter-i18n.h:9
-msgid "Date received"
-msgstr "Alýnma tarihi"
-
-#: filter/libfilter-i18n.h:10
-msgid "Date sent"
-msgstr "Gönderilme tarihi"
-
-#: filter/libfilter-i18n.h:12
-msgid "Deleted"
-msgstr "Silinen"
-
-#: filter/libfilter-i18n.h:13
-msgid "does not contain"
-msgstr "içermez"
-
-#: filter/libfilter-i18n.h:14
-msgid "does not end with"
-msgstr "sonlanmaz"
-
-#: filter/libfilter-i18n.h:15
-msgid "does not exist"
-msgstr "bulunmaz"
-
-#: filter/libfilter-i18n.h:16
-msgid "does not sound like"
-msgstr "benzemez"
-
-#: filter/libfilter-i18n.h:17
-msgid "does not start with"
-msgstr "baþlamaz"
-
-#: filter/libfilter-i18n.h:18
-msgid "Do Not Exist"
-msgstr "Bulunmaz"
-
-#: filter/libfilter-i18n.h:19
-msgid "Draft"
-msgstr "Taslak"
-
-#: filter/libfilter-i18n.h:20
-msgid "ends with"
-msgstr "biter"
-
-#: filter/libfilter-i18n.h:21
-msgid "Exist"
-msgstr "bulunur"
-
-#: filter/libfilter-i18n.h:22
-msgid "exists"
-msgstr "bulunur"
-
-#: filter/libfilter-i18n.h:23
-msgid "Expression"
-msgstr "Deyim"
-
-#: filter/libfilter-i18n.h:24
-msgid "Forward to Address"
-msgstr "Adrese Ýlet"
-
-#: filter/libfilter-i18n.h:25
-msgid "Important"
-msgstr "Önemli"
-
-#: filter/libfilter-i18n.h:26
-msgid "is"
-msgstr " "
-
-#: filter/libfilter-i18n.h:27
-msgid "is greater than"
-msgstr "büyük"
-
-#: filter/libfilter-i18n.h:28
-msgid "is less than"
-msgstr "küçük"
-
-#: filter/libfilter-i18n.h:29
-msgid "is not"
-msgstr "deðil"
-
-#: filter/libfilter-i18n.h:30
-msgid "Mailing list"
-msgstr "E-posta listesi"
-
-#: filter/libfilter-i18n.h:31
-msgid "Message Body"
-msgstr "Ýleti Gövdesi"
-
-#: filter/libfilter-i18n.h:32
-msgid "Message Header"
-msgstr "Ýleti Baþlýðý"
-
-#: filter/libfilter-i18n.h:33
-msgid "Message was received"
-msgstr "Ýleti alýndý"
-
-#: filter/libfilter-i18n.h:34
-msgid "Message was sent"
-msgstr "Ýleti gönderildi"
-
-#: filter/libfilter-i18n.h:35
-msgid "Move to Folder"
-msgstr "Dizine Taþý"
-
-#: filter/libfilter-i18n.h:36
-msgid "on or after"
-msgstr "birlikte ya da sonra"
-
-#: filter/libfilter-i18n.h:37
-msgid "on or before"
-msgstr "birlikte ya da önce"
-
-#: filter/libfilter-i18n.h:38
-msgid "Read"
-msgstr "Oku"
-
-#: filter/libfilter-i18n.h:39
-msgid "Recipients"
-msgstr "Alýcýlar"
-
-#: filter/libfilter-i18n.h:40
-msgid "Regex Match"
-msgstr "Düzgün Deyim Eþleþimi"
-
-#: filter/libfilter-i18n.h:41
-msgid "Replied to"
-msgstr "Cevaplanan"
-
-#: filter/libfilter-i18n.h:42 filter/score-rule.c:204 filter/score-rule.c:206
-#: mail/message-list.c:1054
-msgid "Score"
-msgstr "Puan"
-
-#: filter/libfilter-i18n.h:43
-msgid "Sender"
-msgstr "Gönderen"
-
-#: filter/libfilter-i18n.h:44
-msgid "Set Status"
-msgstr "Durum belirt"
-
-#: filter/libfilter-i18n.h:45
-msgid "sounds like"
-msgstr "benzer"
-
-#: filter/libfilter-i18n.h:46
-msgid "Source Account"
-msgstr "Kaynak Hesap"
-
-#: filter/libfilter-i18n.h:47
-msgid "Specific header"
-msgstr "Özel baþlýk"
-
-#: filter/libfilter-i18n.h:48
-msgid "starts with"
-msgstr "baþlayan"
-
-#: filter/libfilter-i18n.h:50
-msgid "Stop Processing"
-msgstr "Ýþlemeyi Durdur"
-
-#: filter/libfilter-i18n.h:51 mail/message-list.c:1055
-msgid "Subject"
-msgstr "Konu"
-
-#: filter/libfilter-i18n.h:52
-msgid "was after"
-msgstr "daha önce"
-
-#: filter/libfilter-i18n.h:53
-msgid "was before"
-msgstr "daha sonra"
-
-#: filter/score-editor.c:130
-msgid "Score Rules"
-msgstr "Puan Kurallarý"
-
-#: mail/component-factory.c:329
-msgid "Cannot initialize Evolution's mail component."
-msgstr "Evolution'ýn posta programý baþlatýlamadý."
-
-#: mail/component-factory.c:402
-msgid "Cannot register storage with shell"
-msgstr "Depo kabuða kayýt ettirilemedi"
-
-#: mail/folder-browser-factory.c:211
-#, c-format
-msgid "Properties for \"%s\""
-msgstr "\"%s\" özellikleri"
-
-#: mail/folder-browser-factory.c:213 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-msgid "Properties"
-msgstr "Özellikler"
-
-#: mail/folder-browser.c:225
-msgid "Store search as vFolder"
-msgstr "Kaydý vFolder þeklinde kaydet"
-
-#: mail/folder-browser.c:533
-msgid "VFolder on Subject"
-msgstr "Konuya Göre VFolder"
-
-#: mail/folder-browser.c:536
-msgid "VFolder on Sender"
-msgstr "Gönderene Göre VFolder"
-
-#: mail/folder-browser.c:539
-msgid "VFolder on Recipients"
-msgstr "Alýcýlara Göre VFolder"
-
-#: mail/folder-browser.c:542 mail/folder-browser.c:733
-msgid "VFolder on Mailing List"
-msgstr "E-posta Listesi Üzerinde VFolder"
-
-#: mail/folder-browser.c:548
-msgid "Filter on Subject"
-msgstr "Konuya Göre Filtreleme"
-
-#: mail/folder-browser.c:551
-msgid "Filter on Sender"
-msgstr "Göndericiye Göre Filtreleme"
-
-#: mail/folder-browser.c:554
-msgid "Filter on Recipients"
-msgstr "Alýcýlara Göre Filtreleme"
-
-#: mail/folder-browser.c:557 mail/folder-browser.c:732
-msgid "Filter on Mailing List"
-msgstr "E-posta Listelerine Göre Filtreleme"
-
-#: mail/folder-browser.c:568
-msgid "Resend"
-msgstr "Yeniden Gönder"
-
-#: mail/folder-browser.c:570
-msgid "Save As..."
-msgstr "Farklý Kaydet..."
-
-#: mail/folder-browser.c:577
-msgid "Reply to Sender"
-msgstr "Gönderene Cevapla"
-
-#: mail/folder-browser.c:579 mail/mail-view.c:147 ui/evolution-mail.xml.h:61
-msgid "Reply to All"
-msgstr "Tümüne cevapla"
-
-#: mail/folder-browser.c:581 mail/mail-view.c:150 ui/evolution-mail.xml.h:25
-msgid "Forward"
-msgstr "Ýlet"
-
-#: mail/folder-browser.c:583 ui/evolution-mail.xml.h:27
-msgid "Forward inline"
-msgstr "Çevrimiçi ilet"
-
-#: mail/folder-browser.c:586
-msgid "Mark as Read"
-msgstr "Okunmuþ Olarak Ýþaretle"
-
-#: mail/folder-browser.c:588
-msgid "Mark as Unread"
-msgstr "Okunmamýþ Olarak Ýþaretle"
-
-#: mail/folder-browser.c:593
-msgid "Move to Folder..."
-msgstr "Dizine Taþý..."
-
-#: mail/folder-browser.c:595
-msgid "Copy to Folder..."
-msgstr "Dizine Kopyala..."
-
-#: mail/folder-browser.c:599 ui/evolution-mail.xml.h:82
-msgid "Undelete"
-msgstr "Silme"
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:609 ui/evolution-mail.xml.h:1
-msgid "Apply Filters"
-msgstr "Filtreleri Uygula"
-
-#: mail/folder-browser.c:613
-msgid "Create Rule From Message"
-msgstr "Ýletiden Bir Kural Yarat"
-
-#: mail/folder-browser.c:735
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr "E-posta Listesine Filtre (%s)"
-
-#: mail/folder-browser.c:736
-#, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr "E-posta Listesi Üzerinde VFolder (%s)"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr "E-posta alma va gönderme için Evolution bileþeni"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-msgid "Evolution mail composer."
-msgstr "Evolution e-posta programý."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-msgid "Evolution mail executive summary component."
-msgstr "Evolution e-posta özet bileþeni."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-msgid "Evolution mail folder display component."
-msgstr "Evolution e-posta dizin görüntüleme bileþeni."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-msgid "Evolution mail folder factory component."
-msgstr "Evolution e-posta dizin bileþeni"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-msgid "Factory for the Evolution composer."
-msgstr "Evolution e-posta programý mimarisi."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-msgid "Factory for the Evolution mail component."
-msgstr "Evolution e-posta bileþen mimarisi."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-msgid "Factory for the Mail Summary component."
-msgstr "E-posta özet bileþen mimarisi"
-
-#: mail/local-config.glade.h:1
-msgid "Current store format:"
-msgstr "Güncel depolama biçimi:"
-
-#: mail/local-config.glade.h:2
-msgid "Mailbox Format"
-msgstr "Posta Kutusu Biçimi"
-
-#: mail/local-config.glade.h:3
-msgid "New store format:"
-msgstr "Yeni depolama biçimi:"
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-"Not: Farklý e-posta biçimleri arasýnda çeviri yaparken, \n"
-"diskin dolmasý gibi hatalarda veri kayýplarý olabilir.\n"
-"Lütfen bu özelliði dikkatli kullanýn."
-
-#: mail/local-config.glade.h:7
-msgid "maildir"
-msgstr "pdizini"
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr "pkutusu"
-
-#: mail/local-config.glade.h:9
-msgid "mh"
-msgstr "mh"
-
-#: mail/mail-accounts.c:121 mail/mail-accounts.c:165
-msgid " (default)"
-msgstr " (öntanýmlý)"
-
-#: mail/mail-accounts.c:197
-msgid "Disable"
-msgstr "Kapat"
-
-#: mail/mail-accounts.c:199 mail/mail-config.glade.h:25
-msgid "Enable"
-msgstr "Etkinleþtir"
-
-#: mail/mail-accounts.c:280 mail/mail-accounts.c:284
-msgid "Are you sure you want to delete this account?"
-msgstr "Gerçekten bu hesabý silmek istiyor musunuz?"
-
-#: mail/mail-accounts.c:418 mail/mail-accounts.c:422
-msgid "Are you sure you want to delete this news account?"
-msgstr "Gerçekten bu haber grubu hesabýný silmek istiyor musunuz?"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:536
-msgid "Evolution Account Manager"
-msgstr "Evolution Hesap Yöneticisi"
-
-#: mail/mail-account-editor.c:105
-msgid "You have not filled in all of the required information."
-msgstr "Gerekli tüm bilgiler verilmedi."
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:173
-msgid "Evolution Account Editor"
-msgstr "Evolution Hesap Düzenleyici"
-
-#: mail/mail-autofilter.c:70
-#, c-format
-msgid "Mail to %s"
-msgstr "%s'e Postala"
-
-#: mail/mail-autofilter.c:213
-#, c-format
-msgid "Subject is %s"
-msgstr "Konu: %s"
-
-#: mail/mail-autofilter.c:229
-#, c-format
-msgid "Mail from %s"
-msgstr "%s'ten E-posta"
-
-#: mail/mail-autofilter.c:285
-#, c-format
-msgid "%s mailing list"
-msgstr "%s posta listesi"
-
-#: mail/mail-autofilter.c:335 mail/mail-autofilter.c:357
-msgid "Add Filter Rule"
-msgstr "Filtre Kuralý Ekle"
-
-#: mail/mail-callbacks.c:94
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-"Bir e-posta istemcisi yapýlandýrmadýnýz.\n"
-"Bu iþlemi bir e-posta gönderip almadan\n"
-"önce yapmanýz gerekiyor.\n"
-"Þimdi yapýlandýrmak istiyor musunuz?"
-
-#: mail/mail-callbacks.c:147
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-"Ýleti göndermeden önce kendinize\n"
-"ait bir kimlik oluþturmalýsýnýz."
-
-#: mail/mail-callbacks.c:159
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-"Ýleti göndermeden önce bir posta\n"
-"iletim ayarý yapmalýsýnýz."
-
-#: mail/mail-callbacks.c:203
-msgid "You have not set a mail transport method"
-msgstr "Posta iletim yöntemi düzenlenmemiþ"
-
-#: mail/mail-callbacks.c:236
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-"Bu iletinin konusu yok.\n"
-"Yine de gönderilsin mi?"
-
-#: mail/mail-callbacks.c:309
-msgid "You must specify recipients in order to send this message."
-msgstr "Bu e-postayý göndermek için alýcýsýný belirtmeniz gereklidir."
-
-#: mail/mail-callbacks.c:352
-msgid "You must configure an account before you can send this email."
-msgstr "Bu e-postayý göndermeden önce bir hesap ayarý yapmalýsýnýz."
-
-#: mail/mail-callbacks.c:592
-#, c-format
-msgid "On %s, %s wrote:\n"
-msgstr "%s tarihinde, %s dedi ki:\n"
-
-#: mail/mail-callbacks.c:774
-msgid "Forwarded message:\n"
-msgstr "Ýletilen mesaj:\n"
-
-#: mail/mail-callbacks.c:877
-msgid "Move message(s) to"
-msgstr "Ýletileri buraya taþý"
-
-#: mail/mail-callbacks.c:879
-msgid "Copy message(s) to"
-msgstr "Ýleti(leri) buraya kopyala"
-
-#: mail/mail-callbacks.c:1147
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-"Sadece taslaklar dizinine kaydedilen\n"
-"iletileri düzenleyebilirsiniz."
-
-#: mail/mail-callbacks.c:1179
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-"Sadece Gönderilen dizinine kaydedilen\n"
-"iletileri yeniden gönderebilirsiniz."
-
-#: mail/mail-callbacks.c:1212 mail/mail-display.c:90
-msgid "Overwrite file?"
-msgstr "Dosya üzerine yazýlsýn mý?"
-
-#: mail/mail-callbacks.c:1216 mail/mail-display.c:94
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-"Ayný isimde bir dosya zaten var\n"
-"Üzerine yazýlsýn mý?"
-
-#: mail/mail-callbacks.c:1260
-msgid "Save Message As..."
-msgstr "Ýletiyi Farklý Kaydet..."
-
-#: mail/mail-callbacks.c:1262
-msgid "Save Messages As..."
-msgstr "Ýletileri Farklý Kaydet..."
-
-#: mail/mail-callbacks.c:1376
-#, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr ""
-"Filtre bilgisini yüklerken hata oluþtu:\n"
-"%s"
-
-#: mail/mail-callbacks.c:1425 ui/evolution-mail.xml.h:52
-msgid "Print Message"
-msgstr "Ýletiyi Yazdýr"
-
-#: mail/mail-callbacks.c:1472
-msgid "Printing of message failed"
-msgstr "Ýletiyi yazdýrýlmasýnda hata"
-
-#: mail/mail-config.c:1121 mail/mail-config.c:1124
-msgid "Connecting to server..."
-msgstr "Sunucuya baðlantý kuruluyor..."
-
-#: mail/mail-config.glade.h:1
-msgid " Check for supported types "
-msgstr " Desteklenen türleri denetle "
-
-#: mail/mail-config.glade.h:2
-msgid " color"
-msgstr " renk"
-
-#: mail/mail-config.glade.h:3
-msgid "Account"
-msgstr "Hesap"
-
-#: mail/mail-config.glade.h:4
-msgid "Account Information"
-msgstr "Hesap Bilgisi"
-
-#: mail/mail-config.glade.h:5
-msgid "Account Management"
-msgstr "Hesap Yöneticisi"
-
-#: mail/mail-config.glade.h:6
-msgid "Accounts"
-msgstr "Hesaplar"
-
-#: mail/mail-config.glade.h:8
-msgid "Authentication"
-msgstr "Kimlik Denetimi"
-
-#: mail/mail-config.glade.h:9
-msgid "Authentication Type: "
-msgstr "Kimlik Denetim Türü: "
-
-#: mail/mail-config.glade.h:10
-msgid "Automatically check for new mail every"
-msgstr "E-postalarý otomatik denetle:"
-
-#: mail/mail-config.glade.h:12
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-"Tebrikler, e-posta ayarlarýnýz baþarýyla tamamlandý.\n"
-"\n"
-"Þimdi Evolution kullanarak e-postalarýnýzý alýr \n"
-"ve gönderebilirsiniz.\n"
-"\n"
-"Ayarlarýnýzý kaydetmek için \"Bitir\" düðmesine týklayýn."
-
-#: mail/mail-config.glade.h:18
-msgid "De_fault"
-msgstr "Ö_ntanýmlý"
-
-#: mail/mail-config.glade.h:20
-msgid "Done"
-msgstr "Tamamlandý"
-
-#: mail/mail-config.glade.h:21
-msgid "Drafts"
-msgstr "Taslaklar"
-
-#: mail/mail-config.glade.h:22
-msgid "Drafts folder:"
-msgstr "Taslaklar dizini:"
-
-#: mail/mail-config.glade.h:24
-msgid "Email Address:"
-msgstr "Eposta Adresi:"
-
-#: mail/mail-config.glade.h:26
-msgid "Full Name:"
-msgstr "Tam Ýsim:"
-
-#: mail/mail-config.glade.h:27
-msgid "Highlight citations with "
-msgstr "Renklendir: "
-
-#: mail/mail-config.glade.h:29
-msgid "IMAPv4 "
-msgstr "IMAPv4 "
-
-#: mail/mail-config.glade.h:30
-msgid "Identity"
-msgstr "Kimlik"
-
-#: mail/mail-config.glade.h:31
-msgid "Kerberos "
-msgstr "Kerberos "
-
-#: mail/mail-config.glade.h:32
-msgid "Mail Configuration"
-msgstr "E-posta Yapýlandýrmasý"
-
-#: mail/mail-config.glade.h:33
-msgid "Make this my default account"
-msgstr "Bunu öntanýmlý hesabým yap"
-
-#: mail/mail-config.glade.h:34
-msgid "Mark messages as \"Read\" after:"
-msgstr "Ýletileri okunmuþ olarak iþaretle:"
-
-#: mail/mail-config.glade.h:36
-msgid "News"
-msgstr "Haberler"
-
-#: mail/mail-config.glade.h:38
-msgid "Optional Information"
-msgstr "Seçimlik Bilgiler"
-
-#: mail/mail-config.glade.h:39
-msgid "Organization:"
-msgstr "Kurum:"
-
-#: mail/mail-config.glade.h:41
-msgid "PGP binary path:"
-msgstr "PGP program yolu:"
-
-#: mail/mail-config.glade.h:46
-msgid "Qmail maildir "
-msgstr "Qmail dizini "
-
-#: mail/mail-config.glade.h:47
-msgid "Receiving Email"
-msgstr "E-posta Alýnýyor"
-
-#: mail/mail-config.glade.h:48
-msgid "Receiving Mail"
-msgstr "E-posta Alýnýyor"
-
-#: mail/mail-config.glade.h:49
-msgid "Receiving Options"
-msgstr "Alma Seçenekleri"
-
-#: mail/mail-config.glade.h:51
-msgid "Required Information"
-msgstr "Ýstenen Bilgiler"
-
-#: mail/mail-config.glade.h:53
-msgid "Select PGP binary"
-msgstr "PGP programýný seçin"
-
-#: mail/mail-config.glade.h:54
-msgid "Send mail in HTML format by default."
-msgstr "E-postalarý öntanýmlý olarak HTML gönder."
-
-#: mail/mail-config.glade.h:55
-msgid "Sending Email"
-msgstr "E-posta Gönderiliyor"
-
-#: mail/mail-config.glade.h:56
-msgid "Sending Mail"
-msgstr "E-posta Gönderiliyor"
-
-#: mail/mail-config.glade.h:58
-msgid "Sent"
-msgstr "Gönderildi"
-
-#: mail/mail-config.glade.h:59
-msgid "Sent and Draft Messages"
-msgstr "Gönderilen ve Taslak Ýletileri"
-
-#: mail/mail-config.glade.h:60
-msgid "Sent messages folder:"
-msgstr "Gönderilen iletiler dizini:"
-
-#: mail/mail-config.glade.h:61
-msgid "Server Configuration"
-msgstr "Sunucu Yapýlandýrmasý"
-
-#: mail/mail-config.glade.h:62
-msgid "Server Type: "
-msgstr "Sunucu Türü: "
-
-#: mail/mail-config.glade.h:63
-msgid "Server requires authentication"
-msgstr "Sunucu kimlik denetimi istiyor"
-
-#: mail/mail-config.glade.h:64
-msgid "Signature file:"
-msgstr "Ýmza dosyasý:"
-
-#: mail/mail-config.glade.h:65
-msgid "Sources"
-msgstr "Kaynaklar"
-
-#: mail/mail-config.glade.h:66
-msgid "Special Folders"
-msgstr "Özel Dizinler"
-
-#: mail/mail-config.glade.h:67
-msgid "Standard Unix mbox"
-msgstr "Standart UNIX posta kutusu dosyasý"
-
-#: mail/mail-config.glade.h:68
-msgid "Type"
-msgstr "Tür"
-
-#: mail/mail-config.glade.h:69
-msgid "Use secure connection (SSL)"
-msgstr "Güvenli baðlantý (SSL) kullan"
-
-#: mail/mail-config.glade.h:70
-msgid "Username:"
-msgstr "Kullanýcý adý:"
-
-#: mail/mail-config.glade.h:71
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-"Evolution E-posta Yapýlandýrma Sihirbazýna Hoþgeldiniz.\n"
-"\n"
-"Devam etmek için \"Ýleri\" düðmesine týklayýn."
-
-#: mail/mail-config.glade.h:76 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:43 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:30
-msgid "_Edit"
-msgstr "_Düzenle"
-
-#: mail/mail-config-druid.c:99
-msgid ""
-"Please enter your name and email address below. The \"optional\" fields "
-"below do not need to be filled in, unless you wish to include this "
-"information in email you send."
-msgstr ""
-"Lütfen adýnýzý ve e-posta adresinizi aþaðýdaki boþluða yazýn. E-posta "
-"adresinizde görünmesini istemiyorsanýz seçimlik alanlarý doldurmanýza gerek "
-"yoktur. "
-
-#: mail/mail-config-druid.c:101
-msgid ""
-"Please enter information about your incoming mail server below. If you don't "
-"know what kind of server you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"Lütfen gelen e-posta sunucusu için bilgi verin. Eðer hangi tür bir sunucu "
-"kullandýðýnýzý bilmiyorsanýz sistem yöneticinize, ya da Ýnternet servis "
-"saðlayýcýnýza baþvurun."
-
-#: mail/mail-config-druid.c:105
-msgid ""
-"Please enter information about your outgoing mail protocol below. If you "
-"don't know which protocol you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-"Lütfen giden e-posta sunucusu için protokol bilgisini aþaðýda belirtin. Eðer "
-"hangi protokolü kullandýðýnýzý bilmiyorsanýz sistem yöneticinize, ya da "
-"Ýnternet servis saðlayýcýnýza baþvurun."
-
-#: mail/mail-config-druid.c:107
-msgid ""
-"You are almost done with the mail configuration process. The identity, "
-"incoming mail server and outgoing mail transport method which you provided "
-"will be grouped together to make an Evolution mail account. Please enter a "
-"name for this account in the space below. This name will be used for display "
-"purposes only."
-msgstr ""
-"E-posta yapýlandýrma iþlemi neredeyse tamamlandý. Kimlik ayarlarýnýz, gelen "
-"ve giden e-posta sunucunuz Evolution hesabýnýzý tanýmlamak için yeterli "
-"olacaktýr. Lütfen aþaðýdaki boþluða bu hesap için bir ad veriniz. "
-
-#. set window title
-#: mail/mail-config-druid.c:445
-msgid "Evolution Account Wizard"
-msgstr "Evolution Hesap Sihirbazý"
-
-#: mail/mail-display.c:194
-msgid "Save Attachment"
-msgstr "Eki Kaydet"
-
-#: mail/mail-display.c:234
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr "Geçici dizin yaratýlamadý: %s"
-
-#: mail/mail-display.c:295
-msgid "Save to Disk..."
-msgstr "Diske Kaydet..."
-
-#: mail/mail-display.c:297
-#, c-format
-msgid "Open in %s..."
-msgstr "%s içinde aç..."
-
-#: mail/mail-display.c:299
-msgid "View Inline"
-msgstr "Ýzle"
-
-#: mail/mail-display.c:334
-msgid "External Viewer"
-msgstr "Harici Ýzleyici"
-
-#: mail/mail-display.c:357
-#, c-format
-msgid "View Inline (via %s)"
-msgstr "Ýzle (%s kullanarak)"
-
-#: mail/mail-display.c:361
-msgid "Hide"
-msgstr "Gizle"
-
-#: mail/mail-display.c:1107
-msgid "Open link in browser"
-msgstr "Baðlantýyý tarayýcýda aç"
-
-#: mail/mail-display.c:1109
-msgid "Save as (FIXME)"
-msgstr "Farklý kaydet"
-
-#: mail/mail-display.c:1111
-msgid "Copy location (FIXME)"
-msgstr "Adresi kopyala"
-
-#: mail/mail-format.c:522
-#, c-format
-msgid "%s attachment"
-msgstr "%s ek"
-
-#: mail/mail-format.c:564
-msgid "Could not parse MIME message. Displaying as source."
-msgstr "MIME iletisi açýlamadý: Kaynak kodu gösteriliyor."
-
-#: mail/mail-format.c:746
-msgid "Loading message content"
-msgstr "Ýleti içeriði yükleniyor"
-
-#: mail/mail-format.c:1040
-msgid "No GPG/PGP program configured."
-msgstr "GPG/PGP program yapýlandýrýlmadý."
-
-#: mail/mail-format.c:1055
-msgid "Encrypted message not displayed"
-msgstr "Þifrelenmiþ ileti gösterilemiyor"
-
-#: mail/mail-format.c:1061
-msgid "Encrypted message"
-msgstr "Þifrelenmiþ ileti"
-
-#: mail/mail-format.c:1062
-msgid "Click icon to decrypt."
-msgstr "Þifreyi açmak için simgeye týklayýn"
-
-#: mail/mail-format.c:1152 mail/mail-format.c:1540
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr "Bu ileti dijital olarak imzalanmýþtýr ve güvenlidir."
-
-#: mail/mail-format.c:1160 mail/mail-format.c:1548
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr ""
-"Bu ileti dijital olarak imzalanmýþ, fakat güvenli olduðu kanýtlanmamýþtýr."
-
-#: mail/mail-format.c:1761
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr "FTP adresine bað (%s)"
-
-#: mail/mail-format.c:1773
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr "%s yerel dosyasýna bað (\"%s\" adresinde geçerli)"
-
-#: mail/mail-format.c:1777
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr "Yerel dosyaya bað (%s)"
-
-#: mail/mail-format.c:1811
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr "Bilinmeyen harici veriye bað (\"%s\" türünde)"
-
-#: mail/mail-format.c:1816
-msgid "Malformed external-body part."
-msgstr "Bozuk harici gövde"
-
-#: mail/mail-local.c:337
-#, c-format
-msgid "No such folder %s"
-msgstr "Bu isimde bir dizin yok: `%s'"
-
-#: mail/mail-local.c:509
-#, c-format
-msgid "Opening '%s'"
-msgstr "'%s' açýlýyor"
-
-#: mail/mail-local.c:787
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr "\"%s\" biçiminden \"%s\" biçimine geçiliyor"
-
-#: mail/mail-local.c:791
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr "\"%s\" biçiminden \"%s\" biçimine geç"
-
-#: mail/mail-local.c:814
-msgid "Reconfiguring folder"
-msgstr "Dizin yeniden yapýlandýrýlýyor"
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:843
-msgid "Closing current folder"
-msgstr "Geçerli dizin kapatýlýyor"
-
-#: mail/mail-local.c:875
-msgid "Renaming old folder and opening"
-msgstr "Yeni dizinin adý deðiþtiriliyor ve açýlýyor"
-
-#: mail/mail-local.c:893
-msgid "Creating new folder"
-msgstr "Yeni dizin yaratýlýyor"
-
-#: mail/mail-local.c:907
-msgid "Copying messages"
-msgstr "Ýletiler kopyalanýyor"
-
-#: mail/mail-local.c:924
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-"Dizin meta bilgisi kaydedilemedi. Büyük ihtimalle bu dizini \n"
-"yeniden açamayacaksýnýz: %s"
-
-#: mail/mail-local.c:963
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-"Eðer bu dizini tekrar açamazsýnýz, elle \n"
-"düzeltme yapmak zorunda kalacaksýnýz."
-
-#: mail/mail-mt.c:190
-#, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-"'%s' sýrasýnda hata:\n"
-"%s"
-
-#: mail/mail-mt.c:193
-#, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr ""
-"Ýþlem sýrasýnda hata:\n"
-"%s"
-
-#: mail/mail-mt.c:516 mail/mail-mt.c:545 mail/mail-mt.c:892
-msgid "Working"
-msgstr "Çalýþýyor"
-
-#: mail/mail-mt.c:680 mail/session.c:98
-msgid "Do you accept?"
-msgstr "Kabul ediyor musunuz?"
-
-#: mail/mail-mt.c:874
-msgid "Evolution progress"
-msgstr "Evolution iþlemleri"
-
-#: mail/mail-ops.c:593
-#, c-format
-msgid "Sending \"%s\""
-msgstr "\"%s\" gönderiliyor"
-
-#: mail/mail-ops.c:597
-msgid "Sending message"
-msgstr "Ýleti gönderiliyor"
-
-#: mail/mail-ops.c:712
-#, c-format
-msgid "Sending message %d of %d"
-msgstr "%d / %d ileti gönderiliyor"
-
-#: mail/mail-ops.c:731
-#, c-format
-msgid "Failed on message %d of %d"
-msgstr "%d/%d iletide hata"
-
-#: mail/mail-ops.c:733 mail/mail-send-recv.c:475
-msgid "Complete."
-msgstr "Tamamlandý."
-
-#: mail/mail-ops.c:819
-msgid "Saving message to folder"
-msgstr "Ýletiler dizine kaydediliyor"
-
-#: mail/mail-ops.c:892
-#, c-format
-msgid "Moving messages to %s"
-msgstr "Ýletiler %s'e taþýnýyor"
-
-#: mail/mail-ops.c:892
-#, c-format
-msgid "Copying messages to %s"
-msgstr "Ýletiler %s'e kopyalanýyor"
-
-#: mail/mail-ops.c:908
-msgid "Moving"
-msgstr "Taþýnýyor"
-
-#: mail/mail-ops.c:911
-msgid "Copying"
-msgstr "Kopyalanýyor"
-
-#: mail/mail-ops.c:986
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr "\"%s\" içinde dizinler taranýyor"
-
-#: mail/mail-ops.c:1147
-msgid "Forwarded messages"
-msgstr "Ýletilen mesajlar"
-
-#: mail/mail-ops.c:1188 mail/mail-ops.c:1326
-#, c-format
-msgid "Opening folder %s"
-msgstr "%s dizini açýlýyor"
-
-#: mail/mail-ops.c:1255
-#, c-format
-msgid "Opening store %s"
-msgstr "%s deposu açýlýyor"
-
-#: mail/mail-ops.c:1442
-msgid "Expunging folder"
-msgstr "Dizin siliniyor"
-
-#: mail/mail-ops.c:1491
-#, c-format
-msgid "Retrieving message %s"
-msgstr "%s iletisi alýnýyor"
-
-#: mail/mail-ops.c:1558
-msgid "Retrieving messages"
-msgstr "Ýletiler alýnýyor"
-
-#: mail/mail-ops.c:1568
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr "%d/%d ileti alýnýyor (uid \"%s\")"
-
-#: mail/mail-ops.c:1642
-msgid "Saving messages"
-msgstr "Ýletiler kaydediliyor"
-
-#: mail/mail-ops.c:1721
-#, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr ""
-"Çýkýþ dosyasý yaratýlamadý: %s\n"
-" %s"
-
-#: mail/mail-ops.c:1734
-#, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr "%d/%d ileti kaydediliyor (uid \"%s\")"
-
-#: mail/mail-ops.c:1748
-#, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr ""
-"Ýletilerin kaydýnda hata: %s:\n"
-" %s"
-
-#: mail/mail-ops.c:1822
-msgid "Saving attachment"
-msgstr "Ek kaydediliyor"
-
-#: mail/mail-ops.c:1837
-#, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr ""
-"Çýkýþ dosyasý yaratýlamadý: %s:\n"
-" %s"
-
-#: mail/mail-ops.c:1865
-#, c-format
-msgid "Could not write data: %s"
-msgstr "Veri yazýlamadý: %s."
-
-#: mail/mail-search-dialogue.c:113
-msgid "_Search"
-msgstr "_Ara"
-
-#: mail/mail-send-recv.c:138
-msgid "Cancelling ..."
-msgstr "Ýptal ediliyor ..."
-
-#: mail/mail-send-recv.c:233
-msgid "Send & Receive mail"
-msgstr "E-posta Al & Gönder"
-
-#: mail/mail-send-recv.c:236
-msgid "Receiving"
-msgstr "Alýnýyor"
-
-#: mail/mail-send-recv.c:285
-msgid "Updating ..."
-msgstr "Güncelleniyor ..."
-
-#: mail/mail-send-recv.c:287 mail/mail-send-recv.c:333
-msgid "Waiting ..."
-msgstr "Bekleniyor ..."
-
-#: mail/mail-send-recv.c:306
-msgid "Sending"
-msgstr "Gönderiliyor"
-
-#: mail/mail-send-recv.c:471
-msgid "Cancelled."
-msgstr "Ýptal edildi."
-
-#: mail/mail-summary.c:109
-msgid "Incomplete message written on pipe!"
-msgstr "Tünellemeden bozuk bir ileti geldi!"
-
-#: mail/mail-tools.c:141
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr "Geçici ileti kutusu '%s' hazýrlanamadý: %s"
-
-#: mail/mail-tools.c:188
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr "[%s] (iletilen e-posta)"
-
-#: mail/mail-tools.c:198
-msgid "Fwd: (no subject)"
-msgstr "Ýlt: (konusuz)"
-
-#: mail/mail-tools.c:215
-#, c-format
-msgid "Forwarded message - %s"
-msgstr "Ýletilen e-posta - %s"
-
-#: mail/mail-tools.c:217
-msgid "Forwarded message (no subject)"
-msgstr "Ýletilen e-posta (konusuz)"
-
-#: mail/mail-tools.c:414
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-msgstr ""
-"-----Ýletilen Posta-----<br><b>Kimden:</b> %s<br><b>Kime:</b> "
-"%s<br><b>Konu:</b> %s<br>"
-
-#: mail/mail-vfolder.c:249
-msgid "VFolders"
-msgstr "VDizin"
-
-#: mail/mail-vfolder.c:427
-msgid "New VFolder"
-msgstr "Yeni VDizin"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/mail-view.c:144 ui/evolution-mail.xml.h:60
-msgid "Reply"
-msgstr "Cevapla"
-
-#: mail/mail-view.c:144 ui/evolution-mail.xml.h:66
-msgid "Reply to the sender of this message"
-msgstr "Ýletiyi gönderene cevap ver"
-
-#: mail/mail-view.c:147 ui/evolution-mail.xml.h:64
-msgid "Reply to all recipients of this message"
-msgstr "Ýletinin tüm alýcýlarýna cevap ver"
-
-#: mail/mail-view.c:150 ui/evolution-mail.xml.h:29
-msgid "Forward this message"
-msgstr "Bu e-postayý ilet"
-
-#: mail/mail-view.c:154 ui/evolution-mail.xml.h:57
-msgid "Print the selected message"
-msgstr "Seçili iletiyi yazdýr"
-
-#: mail/mail-view.c:156 ui/evolution-mail.xml.h:13
-msgid "Delete this message"
-msgstr "Bu iletiyi sil"
-
-#: mail/message-list.c:650
-msgid "Unseen"
-msgstr "Görünmeyen"
-
-#: mail/message-list.c:651
-msgid "Seen"
-msgstr "Görünen"
-
-#: mail/message-list.c:652
-msgid "Answered"
-msgstr "Cevaplanan"
-
-#: mail/message-list.c:653
-msgid "Multiple Unseen Messages"
-msgstr "Çoklu Görülmeyen Ýleti"
-
-#: mail/message-list.c:654
-msgid "Multiple Messages"
-msgstr "Çoklu Ýletiler"
-
-#: mail/message-list.c:658
-msgid "Lowest"
-msgstr "En Düþük"
-
-#: mail/message-list.c:659
-msgid "Lower"
-msgstr "Düþük"
-
-#: mail/message-list.c:663
-msgid "Higher"
-msgstr "Yüksek"
-
-#: mail/message-list.c:664
-msgid "Highest"
-msgstr "En Yüksek"
-
-#: mail/message-list.c:914
-msgid "?"
-msgstr "?"
-
-#: mail/message-list.c:921
-msgid "Today %l:%M %p"
-msgstr "Bugün %l:%M %p"
-
-#: mail/message-list.c:930
-msgid "Yesterday %l:%M %p"
-msgstr "Dün %l:%M %p"
-
-#: mail/message-list.c:942
-msgid "%a %l:%M %p"
-msgstr "%a %l %M %p"
-
-#: mail/message-list.c:950
-msgid "%b %d %l:%M %p"
-msgstr "%d %b %l:%M %p"
-
-#: mail/message-list.c:952
-msgid "%b %d %Y"
-msgstr "%d %b %Y"
-
-#: mail/message-list.c:1054
-msgid "Flagged"
-msgstr "Ýþaretli"
-
-#: mail/message-list.c:1055
-msgid "From"
-msgstr "Kimden"
-
-#: mail/message-list.c:1055
-msgid "Date"
-msgstr "Tarih"
-
-#: mail/message-list.c:1055
-msgid "Received"
-msgstr "Alýndý"
-
-#: mail/message-list.c:1056
-msgid "To"
-msgstr "Kime"
-
-#: mail/message-list.c:1056
-msgid "Size"
-msgstr "Boyut"
-
-#: mail/subscribe-dialog.c:76 shell/e-storage-set-view.c:46
-msgid "Folder"
-msgstr "Dizin"
-
-#: mail/subscribe-dialog.c:77
-msgid "Store"
-msgstr "Sakla"
-
-#: mail/subscribe-dialog.c:138
-msgid "Display folders starting with:"
-msgstr "Bununla baþlayan dizinleri göster:"
-
-#: mail/subscribe-dialog.c:168
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr "\"%s\" için depo alýnýyor"
-
-#: mail/subscribe-dialog.c:271
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr "\"%s\" dizinine üye olunuyor"
-
-#: mail/subscribe-dialog.c:273
-#, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr "\"%s\" dizininden üyelik siliniyor"
-
-#. Construct the app
-#: mail/subscribe-dialog.c:873
-msgid "Manage Subscriptions"
-msgstr "Üyelikleri Düzenle"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-msgid "Folder name:"
-msgstr "Dizin adý:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-msgid "Folder type:"
-msgstr "Dizin türü:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-msgid "Specify where to create the folder:"
-msgstr "Dizinin nerede yaratýlacaðýný belirtin:"
-
-#: shell/importer/importer.c:87
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-"Evolution'a aktarmak istediðiniz dosyayý seçin ve listenin bu dosyanýn "
-"türünü belirleyin.\n"
-"\n"
-"Eðer dosya türünü bilmiyorsanýz \"Otomatik\" seçeneðini iþaretleyin. Bu "
-"durumda Evolution dosya türünü bulmaya çalýþacaktýr."
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/importer/importer.c:182
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-"%s alýnýyor\n"
-"(Hazýr deðil).\n"
-"5 saniye içinde yeniden denenecek."
-
-#: shell/importer/importer.c:202 shell/importer/importer.c:233
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-"%s alýnýyor\n"
-"%d öðesi alýnýyor."
-
-#: shell/importer/importer.c:341
-#, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr ""
-"Bunu açabilecek hiç bir filtre bulunamadý:\n"
-"%s"
-
-#: shell/importer/importer.c:351
-msgid "Importing"
-msgstr "Alýnýyor"
-
-#: shell/importer/importer.c:359
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-"%s alýnýyor.\n"
-"%s baþlatýlýyor"
-
-#: shell/importer/importer.c:372
-#, c-format
-msgid "Error starting %s"
-msgstr "%s baþlatýrken hata oluþtu"
-
-#: shell/importer/importer.c:387
-#, c-format
-msgid "Error loading %s"
-msgstr "%s yüklenirken hata oluþtu"
-
-#: shell/importer/importer.c:402
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-"%s alýnýyor\n"
-"1. öðe alýnýyor."
-
-#: shell/importer/importer.c:473
-msgid "Automatic"
-msgstr "Otomatik"
-
-#: shell/importer/importer.c:523
-msgid "Filename:"
-msgstr "Dosya adý:"
-
-#: shell/importer/import.glade.h:5 shell/importer/importer.c:528
-msgid "Select a file"
-msgstr "Bir dosya seçin"
-
-#: shell/importer/importer.c:538
-msgid "File type:"
-msgstr "Dosya türü:"
-
-#: shell/importer/import.glade.h:4 shell/importer/importer.c:619
-msgid "Import"
-msgstr "Aktar"
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr "\"Aktar\" düðmesine týklayarak dosyalarý Evolution'a aktarýn."
-
-#: shell/importer/import.glade.h:2
-msgid "Evolution Import Utility"
-msgstr "Evolution Aktarma Programý"
-
-#: shell/importer/import.glade.h:3
-msgid "Evolution Importer Utility"
-msgstr "Evolution Aktarma Programý"
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-"Evolution dosya aktarma yardýmcý programýna hoþgeldiniz\n"
-"Bu sihirbaz ile harici dosyalarý Evolution'a dahil edebileceksiniz."
-
-#: shell/e-setup.c:118 shell/e-setup.c:191
-msgid "Evolution installation"
-msgstr "Evolution kurulumu"
-
-#: shell/e-setup.c:122
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-"Evolution'un bu yeni sürümü kiþisel Evolution dizinine ek dosya\n"
-"yerleþtirilmesini gerektirir."
-
-#: shell/e-setup.c:123
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr ""
-"Dosyalarý kurmak için \"Tamam\" düðmesine, ya da iþlemi durdurmak için "
-"\"Ýptal\" düðmesine týklayýn."
-
-#: shell/e-setup.c:163
-msgid "Could not update files correctly"
-msgstr "Dosyalar düzgün bir þekilde güncellenemedi"
-
-#: shell/e-setup.c:166 shell/e-setup.c:234
-msgid "Evolution files successfully installed."
-msgstr "Evolution dosyalarý baþarýyla kuruldu."
-
-#: shell/e-setup.c:195
-msgid "This seems to be the first time you are running Evolution."
-msgstr "Evolution'u ilk defa çalýþtýrýyorsunuz."
-
-#: shell/e-setup.c:196
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr ""
-"Evolution kullanýcý dosyalarýný buraya kurmak için \"Tamam\" düðmesine "
-"týklayýn."
-
-#: shell/e-setup.c:215
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"%s dizini yaratýlamadý\n"
-"\n"
-"Hata: %s"
-
-#: shell/e-setup.c:230
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-"Dosyalar kopyalanamadý\n"
-"`%s'."
-
-#: shell/e-setup.c:255
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-"`%s' bir dizin deðil.\n"
-"Evolution kullanýcý dosyalarýnýn yüklenmesi\n"
-"bunu silmelisiniz."
-
-#: shell/e-setup.c:267
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-"`%s' dizini var, ancak Evolution için \n"
-"kullanýlmýyor. Lütfen Evolution kullanýcý dosyalarýnýn\n"
-"kopyalanabilmesi için bu dizini taþýyýnýz."
-
-#: shell/e-shell-folder-creation-dialog.c:99
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-"Belirlenen dizin yaratýlamadý:\n"
-"%s"
-
-#: shell/e-shell-folder-creation-dialog.c:156
-msgid "The specified folder name is not valid."
-msgstr "Belirtilen dizin adý geçerli deðildir."
-
-#: shell/e-shell-folder-creation-dialog.c:263
-msgid "Evolution - Create new folder"
-msgstr "Evolution - Yeni dizin yarat"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-"Ýstenen iþlem için seçili dizin tipi \n"
-"geçerli deðildir ."
-
-#: shell/e-shell-folder-selection-dialog.c:321
-msgid "New..."
-msgstr "Yeni..."
-
-#: shell/e-shell-folder-title-bar.c:459 shell/e-shell-folder-title-bar.c:460
-msgid "(Untitled)"
-msgstr "(isimsiz)"
-
-#: shell/e-shell-view-menu.c:173
-msgid "Bug buddy was not found in your $PATH."
-msgstr "Bug-buddy $PATH dizininde bulunamadý."
-
-#: shell/e-shell-view-menu.c:179
-msgid "Bug buddy could not be run."
-msgstr "Bug-buddy çalýþtýrýlamadý."
-
-#: shell/e-shell-view-menu.c:208
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Telif hakký 1999, 2000, 2001 Ximian, Inc."
-
-#: shell/e-shell-view-menu.c:210
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-"Evolution, GNOME masaüstü için bir e-posta, \n"
-"takvim ve iletiþim listesi yönetim uygulamasýdýr."
-
-#: shell/e-shell-view-menu.c:374
-msgid "Go to folder..."
-msgstr "Dizine git..."
-
-#: shell/e-shell-view.c:148
-msgid "(No folder displayed)"
-msgstr "(dizin gösterilmiyor)"
-
-#: shell/e-shell-view.c:1184
-#, c-format
-msgid "%s - Evolution %s"
-msgstr "%s - Evolution %s"
-
-#: shell/e-shell-view.c:1186
-#, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "%s - Evolution %s [%s]"
-
-#: shell/e-shell.c:378
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr "Yerel kayýt kurulamadý -- %s"
-
-#: shell/e-shell.c:1248
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-"`%s görünümü beklenmeyen bir þekilde sonlandýrýldý.\n"
-"%s bileþeni çöktü."
-
-#: shell/e-shortcuts-view.c:134
-msgid "Create new shortcut group"
-msgstr "Yeni bir kýsayol grubu yarat"
-
-#: shell/e-shortcuts-view.c:137
-msgid "Group name:"
-msgstr "Grup adý:"
-
-#: shell/e-shortcuts-view.c:260
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-"Kýsayol çubuðundan `%s' grubunu \n"
-"kaldýrmak istiyor musunuz?"
-
-#: shell/e-shortcuts-view.c:265
-msgid "Don't remove"
-msgstr "Silme"
-
-#: shell/e-shortcuts-view.c:276
-msgid "_Small Icons"
-msgstr "_Küçük Simgeler"
-
-#: shell/e-shortcuts-view.c:277
-msgid "Show the shortcuts as small icons"
-msgstr "Kýsayollarý küçük simgeler olarak göster"
-
-#: shell/e-shortcuts-view.c:279
-msgid "_Large Icons"
-msgstr "_Büyük Simgeler"
-
-#: shell/e-shortcuts-view.c:280
-msgid "Show the shortcuts as large icons"
-msgstr "Kýsayollarý büyük simgeler olarak göster"
-
-#: shell/e-shortcuts-view.c:291
-msgid "_New Group..."
-msgstr "Yeni _Grup..."
-
-#: shell/e-shortcuts-view.c:292
-msgid "Create a new shortcut group"
-msgstr "Yeni bir kýsayol grubu yarat"
-
-#: shell/e-shortcuts-view.c:294
-msgid "_Remove This Group..."
-msgstr "_Bu Grubu Sil..."
-
-#: shell/e-shortcuts-view.c:295
-msgid "Remove this shortcut group"
-msgstr "Bu kýsayolu grubunu sil"
-
-#: shell/e-shortcuts-view.c:300
-msgid "_Hide the Shortcut Bar"
-msgstr "Kýsayol Çubuðunu Gizle"
-
-#: shell/e-shortcuts-view.c:301
-msgid "Hide the shortcut bar"
-msgstr "Kýsayol çubuðunu gizle"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate"
-msgstr "Geçerli yap"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate this shortcut"
-msgstr "Bu kýsayolu geçerli yap"
-
-#: shell/e-shortcuts-view.c:388
-msgid "Remove this shortcut from the shortcut bar"
-msgstr "Bu kýsayolu kýsayol çubuðundan sil"
-
-#: shell/e-shortcuts.c:379
-msgid "Error saving shortcuts."
-msgstr "Kýsayollarý kaydederken hata oldu."
-
-#: shell/e-storage-set-view.c:649 ui/evolution-event-editor.xml.h:76
-#: ui/evolution-message-composer.xml.h:53
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:44
-msgid "_View"
-msgstr "_Göster"
-
-#: shell/e-storage-set-view.c:649
-msgid "View the selected folder"
-msgstr "Seçili dizini göster"
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr "(isimsiz)"
-
-#: shell/e-storage.c:459
-msgid "No error"
-msgstr "Hata yok"
-
-#: shell/e-storage.c:461
-msgid "Generic error"
-msgstr "Genel hata"
-
-#: shell/e-storage.c:463
-msgid "A folder with the same name already exists"
-msgstr "Ayný isimli bir dizin zaten var"
-
-#: shell/e-storage.c:465
-msgid "The specified folder type is not valid"
-msgstr "Belirtilen dizin türü geçerli deðildir"
-
-#: shell/e-storage.c:467
-msgid "I/O error"
-msgstr "G/Ç hatasý"
-
-#: shell/e-storage.c:469
-msgid "Not enough space to create the folder"
-msgstr "Dizin yaratmak için gerekli disk alaný yok"
-
-#: shell/e-storage.c:471
-msgid "The specified folder was not found"
-msgstr "Belirtilen dizin bulunamadý"
-
-#: shell/e-storage.c:473
-msgid "Function not implemented in this storage"
-msgstr "Fonksiyon desteklenmiyor"
-
-#: shell/e-storage.c:475
-msgid "Permission denied"
-msgstr "Izin yok"
-
-#: shell/e-storage.c:477
-msgid "Operation not supported"
-msgstr "Ýþlem desteklenmiyor"
-
-#: shell/e-storage.c:479
-msgid "The specified type is not supported in this storage"
-msgstr "Bu kayýtta belirtilen tip desteklenmiyor"
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-msgid "The Evolution shell."
-msgstr "Evolution kabuðu."
-
-#: shell/main.c:83
-#, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-"Merhaba. Evolution grup çalýþma uygulamasýnýn öncü sürümünü\n"
-"yüklediðiniz için teþekkürler.\n"
-"\n"
-"Evolution geniþ bir geliþtirici grubu tarafýndan hazýrlanmaktadýr. Sizlerin "
-"de desteðini bekliyoruz.\n"
-
-#: shell/main.c:108
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-"Teþekkürler\n"
-"Evolution Takýmý\n"
-
-#: shell/main.c:139
-msgid "Cannot initialize the Evolution shell."
-msgstr "Evolution kabuðu baþlatýlamadý."
-
-#: shell/main.c:185
-msgid "Disable splash screen"
-msgstr "Açýlýþ ekranýni gösterme"
-
-#: shell/main.c:186
-msgid "Send the debugging output of all components to a file."
-msgstr "Tüm hata ayýklama verilerini bir dosyaya yazdýr."
-
-#: shell/main.c:219
-msgid "Cannot initialize the Bonobo component system."
-msgstr "Bonobo parçalar sistemi baþlatýlamadý."
-
-#: ui/evolution-addressbook.xml.h:2
-msgid "Create new contact"
-msgstr "Yeni bir baðlantý yarat"
-
-#: ui/evolution-addressbook.xml.h:4
-msgid "Delete a contact"
-msgstr "Bir baðlantýyý sil"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-msgid "Find"
-msgstr "Bul"
-
-#: ui/evolution-addressbook.xml.h:6
-msgid "Find a contact"
-msgstr "Baðlantý bul"
-
-#: ui/evolution-addressbook.xml.h:7
-msgid "New contact"
-msgstr "Yeni baðlantý"
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-mail.xml.h:50
-msgid "Previews the message to be printed"
-msgstr "Yazdýrýlacak olan iletiyi önizler"
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "Print contacts"
-msgstr "Baðlantýlarý yazdýr"
-
-#: ui/evolution-addressbook.xml.h:12 ui/evolution-mail.xml.h:79
-msgid "Stop"
-msgstr "Dur"
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "Stop Loading"
-msgstr "Yüklemeyi Durdur"
-
-#: ui/evolution-addressbook.xml.h:14
-msgid "View All"
-msgstr "Tümünü Ýzle"
-
-#: ui/evolution-addressbook.xml.h:15
-msgid "View all contacts"
-msgstr "Tüm baðlantýlarý izle"
-
-#: ui/evolution-addressbook.xml.h:16
-msgid "_Addressbook Sources..."
-msgstr "_Adres Defteri Kaynaklarý..."
-
-#: ui/evolution-addressbook.xml.h:17
-msgid "_Contact"
-msgstr "_Baðlantý"
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-msgid "_Print..."
-msgstr "_Yazdýr..."
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr "Bað_lantýlarý ara"
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-mail.xml.h:112
-#: ui/evolution-task-editor-dialog.xml.h:88 ui/evolution.xml.h:43
-msgid "_Tools"
-msgstr "_Araçlar"
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr "5 Gün"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-msgid "Alter preferences"
-msgstr "Tercihleri deðiþtir"
-
-#: ui/evolution-calendar.xml.h:4
-msgid "Create a new all day Event"
-msgstr "Yeni bir tüm gün olayý yarat"
-
-#: ui/evolution-calendar.xml.h:5
-msgid "Create a new appointment"
-msgstr "Yeni bir randevu yarat"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr "Yeni bir takvim yarat"
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr "Gün"
-
-#: ui/evolution-calendar.xml.h:8
-msgid "Go To"
-msgstr "Git"
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr "Zamanda geriye git"
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go forward in time"
-msgstr "Zamanda ileri git"
-
-#: ui/evolution-calendar.xml.h:11
-msgid "Go to _Date"
-msgstr "_Tarihe Git"
-
-#: ui/evolution-calendar.xml.h:12
-msgid "Go to _Today"
-msgstr "_Bugüne Git"
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr "Belirli bir tarihe git"
-
-#: ui/evolution-calendar.xml.h:14
-msgid "Go to present time"
-msgstr "Þimdiki zamana git"
-
-#: ui/evolution-calendar.xml.h:15
-msgid "Month"
-msgstr "Ay"
-
-#: ui/evolution-calendar.xml.h:17
-msgid "New _Event"
-msgstr "Yeni _Olay"
-
-#: ui/evolution-calendar.xml.h:18 ui/evolution-event-editor.xml.h:29
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "Next"
-msgstr "Ý_leri"
-
-#: ui/evolution-calendar.xml.h:20
-msgid "Open Calendar"
-msgstr "Takvimi Aç"
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Prev"
-msgstr "Geri"
-
-#: ui/evolution-calendar.xml.h:22
-msgid "Previews the calendar to be printed"
-msgstr "Yazdýrýlacak olan takvimi önizler"
-
-#: ui/evolution-calendar.xml.h:25
-msgid "Print calendar"
-msgstr "Takvimi yazdýr"
-
-#: ui/evolution-calendar.xml.h:26
-msgid "Print this Calendar"
-msgstr "Bu Takvimi Yazdýr"
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:15
-msgid "Save As"
-msgstr "Farklý Kaydet"
-
-#: ui/evolution-calendar.xml.h:28
-msgid "Save calendar as something else"
-msgstr "Takvimi farklý kaydet"
-
-#: ui/evolution-calendar.xml.h:30
-msgid "Show 1 day"
-msgstr "1 gün göster"
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr "1 ay göster"
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr "1 hafta göster"
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr "Çalýþma günlerini göster"
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:226
-#: widgets/misc/e-dateedit.c:422
-msgid "Today"
-msgstr "Bugün"
-
-#: ui/evolution-calendar.xml.h:35
-msgid "W_ork Week"
-msgstr "Ç_alýþma haftasý"
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr "Hafta"
-
-#: ui/evolution-calendar.xml.h:37
-msgid "_Appointment"
-msgstr "_Randevu"
-
-#: ui/evolution-calendar.xml.h:38
-msgid "_Day"
-msgstr "_Gün"
-
-#: ui/evolution-calendar.xml.h:39
-msgid "_Month"
-msgstr "_Ay"
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:39
-msgid "_New"
-msgstr "_Yeni"
-
-#: ui/evolution-calendar.xml.h:41
-msgid "_Open Calendar"
-msgstr "_Takvimi Aç"
-
-#: ui/evolution-calendar.xml.h:43 ui/evolution-mail.xml.h:108
-#: ui/evolution-tasks.xml.h:8
-msgid "_Save As..."
-msgstr "_Farklý Kaydet..."
-
-#: ui/evolution-calendar.xml.h:45
-msgid "_Week"
-msgstr "_Hafta"
-
-#: ui/evolution-contact-editor.xml.h:2
-msgid "Delete this item"
-msgstr "Bu öðeyi sil"
-
-#: ui/evolution-contact-editor.xml.h:3
-msgid "Delete..."
-msgstr "Sil..."
-
-#: ui/evolution-contact-editor.xml.h:4
-msgid "Help"
-msgstr "Yardým"
-
-#: ui/evolution-contact-editor.xml.h:5
-msgid "Print En_velope..."
-msgstr "_Zarfý Yazdýr..."
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-msgid "Print this item"
-msgstr "Bu öðeyi yazdýr"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-mail.xml.h:58 ui/evolution-task-editor-dialog.xml.h:41
-msgid "Print..."
-msgstr "Yazdýr..."
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:16
-#: ui/evolution-task-editor-dialog.xml.h:51
-msgid "Save _As..."
-msgstr "_Farklý Kaydet..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-msgid "Save and Close"
-msgstr "Kaydet ve Kapat"
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr "Baðlantýyý kaydet ve diyalog penceresini kapat"
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr "_Baðlantýyý baþkasýna gönder..."
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr "Çevrimiçi yardýma git"
-
-#: ui/evolution-contact-editor.xml.h:13
-msgid "Send _message to contact..."
-msgstr "Baðlantýya _mesaj gönder..."
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:44 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:31
-msgid "_File"
-msgstr "_Dosya"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:51
-#: ui/evolution-task-editor-dialog.xml.h:85
-msgid "_Save"
-msgstr "_Kaydet"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr "Bu uygulama hakkýnda"
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr "Hakkýnda..."
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-msgid "Actio_ns"
-msgstr "E_ylemler"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-msgid "Address _Book... (FIXME)"
-msgstr "Adres _Defteri... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-msgid "C_lear"
-msgstr "_Temizle"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-msgid "C_ut"
-msgstr "_Kes"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-msgid "Chec_k Names (FIXME)"
-msgstr "Ý_simleri Denetle (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-msgid "Clear"
-msgstr "Temizle"
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-msgid "Clear the selection"
-msgstr "Seçimi temizle"
-
-#: ui/evolution-event-editor.xml.h:11
-msgid "Close this appointment"
-msgstr "Bu randevuyu kapat"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "_Dizine Kopyala... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:7
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "Kopyala"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-msgid "Copy the selection"
-msgstr "Seçimi kopyala"
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr "Kes"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Cut the selection"
-msgstr "Seçimi kes"
-
-#: ui/evolution-event-editor.xml.h:18
-msgid "Delete this appointment"
-msgstr "Bu randevuyu sil"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr "XML göster"
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr "UI Xml tanýmýný göster"
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr "Dizindeki Ý_lk Öðe"
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-msgid "For_ward (FIXME)"
-msgstr "Ýlet (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr "v_Calendar olarak ilet (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-msgid "Go to the next item"
-msgstr "Sonraki öðeye git"
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-msgid "Go to the previous item"
-msgstr "Gerideki öðeye git"
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-msgid "In_complete Task (FIXME)"
-msgstr "_Bitmemiþ Görev"
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-msgid "Modify the file's properties"
-msgstr "Dosya özelliklerini düzenle"
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-msgid "N_ext"
-msgstr "Ý_leri"
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-msgid "Paste"
-msgstr "Yapýþtýr"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-msgid "Paste the clipboard"
-msgstr "Panoyu yapýþtýr"
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr "_Geri"
-
-#: ui/evolution-event-editor.xml.h:33 ui/evolution-task-editor-dialog.xml.h:36
-msgid "Previous"
-msgstr "Geri"
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-msgid "Print Pre_view"
-msgstr "Ö_nizlemeyi Yazdýr"
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-msgid "Print S_etup..."
-msgstr "Yazdýrma _Ayarlarý..."
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-msgid "Print Setup"
-msgstr "Yazdýrma Ayarlarý"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:14
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:239
-msgid "Save"
-msgstr "Kaydet"
-
-#: ui/evolution-event-editor.xml.h:43
-msgid "Save the appointment and close the dialog box"
-msgstr "Randevuyu kaydet ve diyalog penceresini kapat"
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:20
-#: ui/evolution-task-editor-dialog.xml.h:53
-msgid "Save the current file"
-msgstr "Þimdiki zamaný kaydet"
-
-#: ui/evolution-event-editor.xml.h:46
-msgid "Schedule _Meeting"
-msgstr "Toplantý Zamaný Düzenle"
-
-#: ui/evolution-event-editor.xml.h:47
-msgid "Schedule some sort of a meeting"
-msgstr "Bir toplantý ayarla"
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-mail.xml.h:69
-#: ui/evolution-task-editor-dialog.xml.h:57
-msgid "Select All"
-msgstr "Hepsini Seç"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-msgid "Select everything"
-msgstr "Herþeyi seç"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr "Güncel yazýcý için sayfa ayarlarýný yap"
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-msgid "Task _Request (FIXME)"
-msgstr "Görev Ý_steði (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-message-composer.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:63
-msgid "_About..."
-msgstr "_Hakkýnda..."
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:41
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:28
-msgid "_Close"
-msgstr "_Kapat"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:29
-msgid "_Contact (FIXME)"
-msgstr "_Baðlantý (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-msgid "_Copy"
-msgstr "_Kopyala"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr "_Hata ayýkla"
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:46
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:35
-msgid "_Help"
-msgstr "_Yardým"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-msgid "_Item (FIXME)"
-msgstr "Öð_e (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-msgid "_Journal Entry (FIXME)"
-msgstr "Gü_nlük Giriþi"
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-msgid "_Last Item in Folder (FIXME)"
-msgstr "Dizindeki _Son Öðe"
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-msgid "_Mail Message (FIXME)"
-msgstr "Ýletiyi _Postala (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-msgid "_Move to Folder... (FIXME)"
-msgstr "_Dizine Git... (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-msgid "_Note (FIXME)"
-msgstr "_Not (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-msgid "_Paste"
-msgstr "_Yapýþtýr"
-
-#: ui/evolution-event-editor.xml.h:69 ui/evolution-task-editor-dialog.xml.h:82
-#: ui/evolution-tasks.xml.h:7
-msgid "_Print"
-msgstr "_Yazdýr"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:104
-#: ui/evolution-task-editor-dialog.xml.h:83
-msgid "_Properties..."
-msgstr "Ö_zellikler..."
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-msgid "_Select All"
-msgstr "_Hepsini Seç"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:42
-msgid "_Task (FIXME)"
-msgstr "_Görev (FIXME)"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-msgid "_Unread Item (FIXME)"
-msgstr "_Okunmamýþ Öðe (FIXME)"
-
-#: ui/evolution-executive-summary.xml.h:1
-msgid "Add Service"
-msgstr "Servis Ekle"
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr "Genel özete yeni bir servis ekle"
-
-#: ui/evolution-executive-summary.xml.h:3
-msgid "Create a new email"
-msgstr "Yeni bir e-posta yarat"
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr "Genel Özet Ayarlarý..."
-
-#: ui/evolution-executive-summary.xml.h:5
-msgid "New Mail"
-msgstr "Yeni Ýleti"
-
-#: ui/evolution-mail.xml.h:2
-msgid "Apply any new filters to the mail in this box"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:3
-msgid "Change the properties of this folder"
-msgstr "Bu dizinin özelliklerini deðiþtir"
-
-#: ui/evolution-mail.xml.h:4
-msgid "Compose"
-msgstr "Düzenle"
-
-#: ui/evolution-mail.xml.h:5
-msgid "Compose a new message"
-msgstr "Yeni bir ileti düzenle"
-
-#: ui/evolution-mail.xml.h:6
-msgid "Configure Folder..."
-msgstr "Dizin Yapýlandýr..."
-
-#: ui/evolution-mail.xml.h:8
-msgid "Copy message to a new folder"
-msgstr "Ýletileri yeni dizine kopyala"
-
-#: ui/evolution-mail.xml.h:9
-msgid "Copy selected messages to another folder"
-msgstr "Seçili iletileri baþka dizine kopyala"
-
-#: ui/evolution-mail.xml.h:10
-msgid "Create _Virtual Folder From Message"
-msgstr "Ýletiden _Sanal Dizin Yarat"
-
-#: ui/evolution-mail.xml.h:12
-msgid "Delete the selected messages"
-msgstr "Seçili iletileri sil"
-
-#: ui/evolution-mail.xml.h:14
-msgid "Display all of the message headers"
-msgstr "Tüm ileti baþlýðýný göster"
-
-#: ui/evolution-mail.xml.h:15
-msgid "Edit Message"
-msgstr "Ýletiyi Düzenle"
-
-#: ui/evolution-mail.xml.h:16
-msgid "Edit the current message"
-msgstr "Güncel iletiyi düzenle"
-
-#: ui/evolution-mail.xml.h:17
-msgid "Empty _Trash"
-msgstr "Çöpü _Boþalt"
-
-#: ui/evolution-mail.xml.h:18
-msgid "Expunge"
-msgstr "Sil"
-
-#: ui/evolution-mail.xml.h:19
-msgid "Filter on Mailing _List"
-msgstr "_E-posta Listelerine Göre Filtre"
-
-#: ui/evolution-mail.xml.h:20
-msgid "Filter on Se_nder"
-msgstr "_Göndericiye Göre Filtreleme"
-
-#: ui/evolution-mail.xml.h:21
-msgid "Filter on _Recipients"
-msgstr "_Alýcýlara Göre Filtreleme"
-
-#: ui/evolution-mail.xml.h:22
-msgid "Filter on _Subject"
-msgstr "_Konuya Göre Filtreleme"
-
-#: ui/evolution-mail.xml.h:23
-msgid "Finaly remove all mails tagged for deletion"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:24
-msgid "Forget _Passwords"
-msgstr "Parolalarý _Unut"
-
-#: ui/evolution-mail.xml.h:26
-msgid "Forward As"
-msgstr "Farklý Ýlet"
-
-#: ui/evolution-mail.xml.h:28
-msgid "Forward the selected mail to someone"
-msgstr "Seçilen e-postayý birisine ilet"
-
-#: ui/evolution-mail.xml.h:30
-msgid "Forward this message in-line with your mail, so you can edit it"
-msgstr "Bu mesajý düzenledikten sonra ilet"
-
-#: ui/evolution-mail.xml.h:31
-msgid "Full _Headers"
-msgstr "_Kapsamlý Baþlýklar"
-
-#: ui/evolution-mail.xml.h:32
-msgid "Hide Deleted Messages"
-msgstr "Silenen Ýletileri Gizle"
-
-#: ui/evolution-mail.xml.h:33
-msgid "Hide S_elected Messages"
-msgstr "Seçili Ýletileri Gizle"
-
-#: ui/evolution-mail.xml.h:34
-msgid "Hide _Deleted Messages"
-msgstr "_Silenen Ýletileri Gizle"
-
-#: ui/evolution-mail.xml.h:35
-msgid "Hide _Read messages"
-msgstr "_Okunan Ýletileri Gizle"
-
-#: ui/evolution-mail.xml.h:36
-msgid "Invert Selection"
-msgstr "Seçimi Tersine Çevir"
-
-#: ui/evolution-mail.xml.h:37
-msgid "Manage _Subscriptions..."
-msgstr "Üyelikleri _Düzenle..."
-
-#: ui/evolution-mail.xml.h:38
-msgid "Mar_k as Read"
-msgstr "_Okunmuþ Olarak Ýþaretle"
-
-#: ui/evolution-mail.xml.h:39
-msgid "Mark All as R_ead"
-msgstr "_Tümünü Okunmuþ Olarak Ýþaretle"
-
-#: ui/evolution-mail.xml.h:40
-msgid "Mark As Read"
-msgstr "Okunmuþ Olarak Ýþaretle"
-
-#: ui/evolution-mail.xml.h:41
-msgid "Mark As U_nread"
-msgstr "Oku_nmamýþ Olarak Ýþaretle"
-
-#: ui/evolution-mail.xml.h:42
-msgid "Mark as U_nread"
-msgstr "Oku_nmamýþ Olarak Ýþaretle"
-
-#: ui/evolution-mail.xml.h:43
-msgid "Mark the selected messages as having been read"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:44
-msgid "Mark the selected messages as not having been read"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:45
-msgid "Move"
-msgstr "Taþý"
-
-#: ui/evolution-mail.xml.h:46
-msgid "Move message to a new folder"
-msgstr "Ýletileri yeni dizine taþý"
-
-#: ui/evolution-mail.xml.h:47
-msgid "Move selected messages to another folder"
-msgstr "Seçili iletileri baþka bir dizine taþý"
-
-#: ui/evolution-mail.xml.h:48
-msgid "Open in New Window"
-msgstr "Yeni Pencerede Aç"
-
-#: ui/evolution-mail.xml.h:49
-msgid "Open the current message in a new window"
-msgstr "Güncel iletileri yeni pencerede aç"
-
-#: ui/evolution-mail.xml.h:54
-msgid "Print Preview of message..."
-msgstr "Ýleti Önizle..."
-
-#: ui/evolution-mail.xml.h:55
-msgid "Print message to the printer"
-msgstr "Ýletiyi yazýcýya gönder"
-
-#: ui/evolution-mail.xml.h:56
-msgid "Print message..."
-msgstr "Ýletiyi Yazdýr..."
-
-#: ui/evolution-mail.xml.h:59
-msgid "Redirect (FIXME: implement me)"
-msgstr "Yönlendir"
-
-#: ui/evolution-mail.xml.h:62
-msgid "Reply to _All"
-msgstr "_Tümüne Cevapla"
-
-#: ui/evolution-mail.xml.h:63
-msgid "Reply to all"
-msgstr "Tümüne cevapla"
-
-#: ui/evolution-mail.xml.h:65
-msgid "Reply to sender"
-msgstr "Gönderene cevapla"
-
-#: ui/evolution-mail.xml.h:67
-msgid "S_ource"
-msgstr "_Kaynak"
-
-#: ui/evolution-mail.xml.h:68
-msgid "Save the message into a new file"
-msgstr "Ýletiyi yeni bir dosyaya kaydet"
-
-#: ui/evolution-mail.xml.h:70 ui/evolution-subscribe.xml.h:7
-msgid "Select _All"
-msgstr "Tümünü _Seç"
-
-#: ui/evolution-mail.xml.h:71
-msgid "Select _Thread"
-msgstr "Konumu _Seç"
-
-#: ui/evolution-mail.xml.h:72
-msgid "Send / Receive"
-msgstr "Al / Gönder"
-
-#: ui/evolution-mail.xml.h:73
-msgid "Send a reply to the person who sent you this mail"
-msgstr "Bu iletiyi size gönderen kiþiye bir cevap yazýn"
-
-#: ui/evolution-mail.xml.h:74
-msgid "Send a single mail in reply to all the selected mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:75
-msgid ""
-"Send queued mail\n"
-" and retrieve new mail"
-msgstr ""
-"Kuyruktaki iletileri gönder\n"
-" ve yeni iletileri al"
-
-#: ui/evolution-mail.xml.h:77
-msgid "Send queued mail and retrieve new mail"
-msgstr "Kuyruktaki iletileri gönder ve yeni iletileri al"
-
-#: ui/evolution-mail.xml.h:78
-msgid "Show _All"
-msgstr "_Tümünü Göster"
-
-#: ui/evolution-mail.xml.h:80
-msgid "Threaded Message list"
-msgstr "Konumlandýrýlan Ýleti listesi"
-
-#: ui/evolution-mail.xml.h:81
-msgid "Un-delete the selected messages"
-msgstr "Seçilen iletiyi silme"
-
-#: ui/evolution-mail.xml.h:83
-msgid "VFolder on Mailing _List"
-msgstr "_E-posta Listesi Üzerinde VFolder"
-
-#: ui/evolution-mail.xml.h:84
-msgid "VFolder on Se_nder"
-msgstr "_Gönderene Göre VFolder"
-
-#: ui/evolution-mail.xml.h:85
-msgid "VFolder on _Recipients"
-msgstr "_Alýcýlara Göre VFolder"
-
-#: ui/evolution-mail.xml.h:86
-msgid "VFolder on _Subject"
-msgstr "_Konuya Göre VFolder"
-
-#: ui/evolution-mail.xml.h:87
-msgid "View Raw Message Source"
-msgstr "Ham Ýleti Kaynaðýný Ýzle"
-
-#: ui/evolution-mail.xml.h:88
-msgid "Virtual Folder _Editor..."
-msgstr "Sanal Dizin _Düzenleyici..."
-
-#: ui/evolution-mail.xml.h:89
-msgid "_Apply Filters"
-msgstr "_Filtreleri Uygula"
-
-#: ui/evolution-mail.xml.h:90
-msgid "_Attachment"
-msgstr "_Ek"
-
-#: ui/evolution-mail.xml.h:91
-msgid "_Copy to Folder..."
-msgstr "D_izine Kopyala..."
-
-#: ui/evolution-mail.xml.h:92
-msgid "_Create Filter From Message"
-msgstr "Ý_letiden Bir Filtre Yarat"
-
-#: ui/evolution-mail.xml.h:94
-msgid "_Expunge"
-msgstr "_Sil"
-
-#: ui/evolution-mail.xml.h:95
-msgid "_Filters..."
-msgstr "_Filtreler..."
-
-#: ui/evolution-mail.xml.h:96 ui/evolution.xml.h:32
-msgid "_Folder"
-msgstr "_Dizin"
-
-#: ui/evolution-mail.xml.h:97
-msgid "_Forward"
-msgstr "Ý_let"
-
-#: ui/evolution-mail.xml.h:98
-msgid "_Inline"
-msgstr "_Baðlantýda"
-
-#: ui/evolution-mail.xml.h:99 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr "S_eçimi Tersine Çevir"
-
-#: ui/evolution-mail.xml.h:100
-msgid "_Mail Message"
-msgstr "_Ýletiyi Gönder"
-
-#: ui/evolution-mail.xml.h:101
-msgid "_Mail Settings..."
-msgstr "E-posta Ayarlarý..."
-
-#: ui/evolution-mail.xml.h:102
-msgid "_Move to Folder..."
-msgstr "_Dizine Taþý..."
-
-#: ui/evolution-mail.xml.h:103
-msgid "_Open Selected Items"
-msgstr "_Seçili Öðeleri Aç"
-
-#: ui/evolution-mail.xml.h:105
-msgid "_Quoted"
-msgstr "_Kotelenmiþ"
-
-#: ui/evolution-mail.xml.h:106
-msgid "_Reply"
-msgstr "_Cevapla"
-
-#: ui/evolution-mail.xml.h:107
-msgid "_Resend Messages"
-msgstr "Ý_letileri Yeniden Gönder"
-
-#: ui/evolution-mail.xml.h:109
-msgid "_Save Message As..."
-msgstr "Ý_letiyi Farklý Kaydet..."
-
-#: ui/evolution-mail.xml.h:110
-msgid "_Send / Receive"
-msgstr "_Gönder / Al"
-
-#: ui/evolution-mail.xml.h:111
-msgid "_Threaded"
-msgstr "_Konumlu"
-
-#: ui/evolution-mail.xml.h:113
-msgid "_Undelete"
-msgstr "_Silme"
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr "Ekle"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-msgid "Close the current file"
-msgstr "Güncel dosyayý kapat"
-
-#: ui/evolution-message-composer.xml.h:5
-msgid "Encrypt this message with PGP"
-msgstr "Bu iletiyi PGP ile þifrele"
-
-#: ui/evolution-message-composer.xml.h:6
-msgid "F_ormat"
-msgstr "_Biçim"
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "HTML"
-msgstr "HTML"
-
-#: ui/evolution-message-composer.xml.h:8
-msgid "Insert a file as text into the message"
-msgstr "Bir dosyayý ileti içine ekle"
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert text file..."
-msgstr "Metin dosyasý ekle..."
-
-#: ui/evolution-message-composer.xml.h:11
-msgid "Open a file"
-msgstr "Bir dosya aç"
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "PGP Encrypt"
-msgstr "PGP Þifre"
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Sign"
-msgstr "PGP Ýmza"
-
-#: ui/evolution-message-composer.xml.h:17
-msgid "Save _Draft"
-msgstr "_Taslaðý Kaydet"
-
-#: ui/evolution-message-composer.xml.h:18
-msgid "Save in _folder... (FIXME)"
-msgstr "Di_zine kaydet..."
-
-#: ui/evolution-message-composer.xml.h:19
-msgid "Save in folder..."
-msgstr "Dizine kaydet..."
-
-#: ui/evolution-message-composer.xml.h:21
-msgid "Save the current file with a different name"
-msgstr "Güncel dosyayý farklý bir isimle kaydet"
-
-#: ui/evolution-message-composer.xml.h:22
-msgid "Save the message in a specified folder"
-msgstr "Ýletiyi belirtilen dizine kaydet"
-
-#: ui/evolution-message-composer.xml.h:23
-msgid "Send"
-msgstr "Gönder"
-
-#: ui/evolution-message-composer.xml.h:24
-msgid "Send _Later"
-msgstr "_Sonra Gönder"
-
-#: ui/evolution-message-composer.xml.h:25
-msgid "Send _later"
-msgstr "Sonra _gönder"
-
-#: ui/evolution-message-composer.xml.h:26
-msgid "Send the mail in HTML format"
-msgstr "Ýletiyi HTML olarak gönder"
-
-#: ui/evolution-message-composer.xml.h:27
-msgid "Send the message later"
-msgstr "Ýletiyi daha sonra gönder"
-
-#: ui/evolution-message-composer.xml.h:28
-msgid "Send the message now"
-msgstr "Ýletiyi þimdi gönder"
-
-#: ui/evolution-message-composer.xml.h:29
-msgid "Send this message now"
-msgstr "Bu iletiyi þimdi gönder"
-
-#: ui/evolution-message-composer.xml.h:30
-msgid "Show / hide attachments"
-msgstr "Ekleri göster/gizle"
-
-#: ui/evolution-message-composer.xml.h:31
-msgid "Show _attachments"
-msgstr "Ekleri _göster"
-
-#: ui/evolution-message-composer.xml.h:32
-msgid "Show attachments"
-msgstr "Ekleri göster"
-
-#: ui/evolution-message-composer.xml.h:33
-msgid "Sign this message with your PGP key"
-msgstr "PGP anahtarýyla bu iletiyi imzala"
-
-#: ui/evolution-message-composer.xml.h:34
-msgid "Toggles whether the BCC field is displayed"
-msgstr "Bcc alanýný gösterir/gizler"
-
-#: ui/evolution-message-composer.xml.h:35
-msgid "Toggles whether the CC field is displayed"
-msgstr "Cc alanýný gösterir/gizler"
-
-#: ui/evolution-message-composer.xml.h:36
-msgid "Toggles whether the From chooser is displayed"
-msgstr "Kimden alanýný gösterir/gizler"
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr "Yanýtla alanýný gösterir/gizler"
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "_Bcc Field"
-msgstr "_Bcc Alaný"
-
-#: ui/evolution-message-composer.xml.h:40
-msgid "_Cc Field"
-msgstr "_Cc Alaný"
-
-#: ui/evolution-message-composer.xml.h:45
-msgid "_From Field"
-msgstr "_Kimden Alaný"
-
-#: ui/evolution-message-composer.xml.h:47
-msgid "_Insert"
-msgstr "_Ekle"
-
-#: ui/evolution-message-composer.xml.h:48
-msgid "_Insert text file... (FIXME)"
-msgstr "_Metin dosyasý ekle..."
-
-#: ui/evolution-message-composer.xml.h:49
-msgid "_Open..."
-msgstr "_Aç..."
-
-#: ui/evolution-message-composer.xml.h:50
-msgid "_Reply-To Field"
-msgstr "_Yanýtla Alaný"
-
-#: ui/evolution-message-composer.xml.h:52
-msgid "_Security"
-msgstr "_Güvenlik"
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr "Bu dizini üye dizinler listesine ekle"
-
-#: ui/evolution-subscribe.xml.h:3
-msgid "F_older"
-msgstr "_Dizin"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr "Listeyi Tazele"
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr "Dizin Listesini Tazele"
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr "Bu dizini üye diziler listesinden sil"
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr "Üye ol"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr "Üyelikten çýk"
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-msgid "Assig_n Task (FIXME)"
-msgstr "_Görev Tanýmla"
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr "Yeniden Ara"
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-msgid "Meeting Re_quest (FIXME)"
-msgstr "_Toplantý Ýsteði"
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-msgid "Redo"
-msgstr "Ýleri al"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-msgid "Redo the undone action"
-msgstr "Geri alýnan neylemi ileri al"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-msgid "Replace"
-msgstr "Deðiþtir"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-msgid "Replace a string"
-msgstr "Bir dizgiyi deðiþtir"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-msgid "Reply to A_ll (FIXME)"
-msgstr "Tümüne _Cevapla"
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-msgid "S_end Status Report (FIXME)"
-msgstr "_Durum Raporu Gönder"
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr "_Oluþlarý Atla"
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-msgid "Save the task and close the dialog box"
-msgstr "Görevi kaydet ve diyalog kutusunu kapat"
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "Search again for the same string"
-msgstr "Ayný diziyi yeniden arat"
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-msgid "Search for a string"
-msgstr "Bir diziyi arat"
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr "Geri al"
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-msgid "Undo the last action"
-msgstr "Son iþlemi geri al"
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:27
-msgid "_Appointment (FIXME)"
-msgstr "_Randevu"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-msgid "_Mark Complete (FIXME)"
-msgstr "_Bitmiþ olarak iþaretle"
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-msgid "_Reply (FIXME)"
-msgstr "_Yanýtla"
-
-#: ui/evolution-tasks.xml.h:2
-msgid "Create a new task"
-msgstr "Yeni bir görev yarat"
-
-#: ui/evolution-tasks.xml.h:3
-msgid "New Task"
-msgstr "Yeni Görev"
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr "Görevi farklý kaydet"
-
-#: ui/evolution-tasks.xml.h:6
-msgid "Tasks Preferences..."
-msgstr "Görev Tercihleri..."
-
-#: ui/evolution-tasks.xml.h:9
-msgid "_Task"
-msgstr "_Görev"
-
-#: ui/evolution.xml.h:1
-msgid "About Evolution..."
-msgstr "Evolution Hakkýnda..."
-
-#: ui/evolution.xml.h:3
-msgid "Close this window"
-msgstr "Bu pencereyi kapat"
-
-#: ui/evolution.xml.h:4
-msgid "Customi_ze Toolbars..."
-msgstr "_Araç Çubuklarýný Özelleþtir..."
-
-#: ui/evolution.xml.h:5
-msgid "Customize"
-msgstr "Ö_zelleþtir"
-
-#: ui/evolution.xml.h:6
-msgid "Customize toolbars"
-msgstr "Araç çubuklarýný özelleþtir"
-
-#: ui/evolution.xml.h:7
-msgid "Display a different folder"
-msgstr "Farklý bir dizin göster"
-
-#: ui/evolution.xml.h:8
-msgid "E_xit"
-msgstr "Çý_k"
-
-#: ui/evolution.xml.h:9
-msgid "Evolution _Window"
-msgstr "Evolution _Penceresi"
-
-#: ui/evolution.xml.h:10
-msgid "Evolution bar _shortcut"
-msgstr "Evolution çubuðu _kýsayolu"
-
-#: ui/evolution.xml.h:11
-msgid "Exit the program"
-msgstr "Programdan çýk"
-
-#: ui/evolution.xml.h:12
-msgid "Getting _Started"
-msgstr "_Baþlangýç"
-
-#: ui/evolution.xml.h:13
-msgid "Import an external file format"
-msgstr "Harici dosya biçimini aktar"
-
-#: ui/evolution.xml.h:14
-msgid "Main toolbar"
-msgstr "Ana araç çubuðu"
-
-#: ui/evolution.xml.h:15
-msgid "Show information about Evolution"
-msgstr "Evolution hakkýnda bilgi ver"
-
-#: ui/evolution.xml.h:16
-msgid "Submit Bug Report"
-msgstr "Hata Raporu Gönder"
-
-#: ui/evolution.xml.h:17
-msgid "Submit _Bug Report"
-msgstr "_Hata Raporu Gönder"
-
-#: ui/evolution.xml.h:18
-msgid "Submit bug report using Bug Buddy."
-msgstr "_Bug Buddy kullanarak hata raporu gönder."
-
-#: ui/evolution.xml.h:19
-msgid "Toggle whether to show the folder bar"
-msgstr "Dizin çubuðunu göster/gizle"
-
-#: ui/evolution.xml.h:20
-msgid "Toggle whether to show the shortcut bar"
-msgstr "Kýsayol çubuðunu göster/gizle"
-
-#: ui/evolution.xml.h:21
-msgid "Using the C_ontact Manager"
-msgstr "_Baðlantý Yöneticisini Kullanarak"
-
-#: ui/evolution.xml.h:22
-msgid "Using the _Calendar"
-msgstr "_Takvim Kullanarak"
-
-#: ui/evolution.xml.h:23
-msgid "Using the _Mailer"
-msgstr "_Postalayýcý Kullanarak"
-
-#: ui/evolution.xml.h:24
-msgid "Work Offline"
-msgstr "Çevrimdýþý Çalýþ"
-
-#: ui/evolution.xml.h:25
-msgid "_About Evolution..."
-msgstr "_Evolution Hakkýnda..."
-
-#: ui/evolution.xml.h:26
-msgid "_Actions"
-msgstr "E_ylemler"
-
-#: ui/evolution.xml.h:33
-msgid "_Folder Bar"
-msgstr "_Dizin Çubuðu"
-
-#: ui/evolution.xml.h:34
-msgid "_Go to Folder..."
-msgstr "Dizine _Git..."
-
-#: ui/evolution.xml.h:36
-msgid "_Import file..."
-msgstr "Dosya _ekle..."
-
-#: ui/evolution.xml.h:37
-msgid "_Index"
-msgstr "Ý_ndex"
-
-#: ui/evolution.xml.h:38
-msgid "_Mail message"
-msgstr "Ý_letiyi postala"
-
-#: ui/evolution.xml.h:40
-msgid "_New Folder"
-msgstr "_Yeni Dizin"
-
-#: ui/evolution.xml.h:41
-msgid "_Shortcut Bar"
-msgstr "_Kýsayol Çubuðu"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:469
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2475
-msgid "%A, %B %d, %Y"
-msgstr "%d %B %A, %Y"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:390
-msgid "Tentative"
-msgstr "Giriþimli"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:391
-msgid "Busy"
-msgstr "Meþgul"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:392
-msgid "Out of Office"
-msgstr "Ofiste Deðil"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:393
-msgid "No Information"
-msgstr "Bilgi Yok"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:409
-msgid "_Invite Others..."
-msgstr "_Baþkalarýný Davet Et..."
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:429
-msgid "_Options"
-msgstr "_Seçenekler"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:446
-msgid "Show _Only Working Hours"
-msgstr "_Sadece Çalýþma Saatlerini Göster"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:459
-msgid "Show _Zoomed Out"
-msgstr "_Uzaklaþtýrýlmýþ Göster"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:477
-msgid "_Update Free/Busy"
-msgstr "_Boþ/Meþgul Olanlarý Güncelle"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:495
-msgid "_<<"
-msgstr "_<<"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:512
-msgid "_Autopick"
-msgstr "_Otomatikman seç"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:526
-msgid ">_>"
-msgstr ">_>"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:543
-msgid "_All People and Resources"
-msgstr "_Tüm Kiþiler ve Kaynaklar"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:556
-msgid "All _People and One Resource"
-msgstr "Tüm _Kiþiler ve Bir Kaynak"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:569
-msgid "_Required People"
-msgstr "_Gerekli Kiþiler"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:582
-msgid "Required People and _One Resource"
-msgstr "Gerekli Kiþiler ve _Bir Kaynak"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:605
-msgid "Meeting _start time:"
-msgstr "Toplantý b_aþlama saati :"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:629
-msgid "Meeting _end time:"
-msgstr "Toplantý _bitiþ saati:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:742
-msgid "All Attendees"
-msgstr "Tüm Katýlýmcýlar"
-
-#: widgets/menus/gal-view-menus.c:177
-msgid "_Current View"
-msgstr "Þ_imdiki Görünüm"
-
-#: widgets/menus/gal-view-menus.c:196
-msgid "Define Views"
-msgstr "Görünümleri Tanýmla"
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:421
-msgid "MTWTFSS"
-msgstr "PSÇPCCP"
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1060 widgets/misc/e-calendar-item.c:2755
-msgid "%B %Y"
-msgstr "%B %Y"
-
-#: widgets/misc/e-cell-date-edit.c:218 widgets/misc/e-dateedit.c:416
-msgid "Now"
-msgstr "Þimdi"
-
-#: widgets/misc/e-cell-date-edit.c:242
-msgid "OK"
-msgstr "Tamam"
-
-#: widgets/misc/e-cell-date-edit.c:723
-#, c-format
-msgid "The time must be in the format: %s"
-msgstr "Gün %s biçiminde girilmelidir."
-
-#: widgets/misc/e-clipped-label.c:107
-msgid "..."
-msgstr "..."
-
-#: widgets/misc/e-filter-bar.c:166
-msgid "Save Search"
-msgstr "Aramayý Kaydet"
-
-#: widgets/misc/e-filter-bar.c:237
-msgid "Advanced Search"
-msgstr "Geliþmiþ Arama"
-
-#: widgets/misc/e-filter-bar.c:317
-msgid "Advanced ..."
-msgstr "Geliþmiþ ..."
-
-#: widgets/misc/e-messagebox.c:152
-msgid "Information"
-msgstr "Bilgi"
-
-#: widgets/misc/e-messagebox.c:159
-msgid "Warning"
-msgstr "Uyarý"
-
-#: widgets/misc/e-messagebox.c:173
-msgid "Question"
-msgstr "Soru"
-
-#: widgets/misc/e-messagebox.c:180
-msgid "Message"
-msgstr "Ýleti"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:224
-msgid "Don't show this message again."
-msgstr "Bu mesajý bir daha gösterme."
-
-#: widgets/misc/e-search-bar.c:148
-msgid "Sear_ch"
-msgstr "_Ara"
-
-#: views/addressbook/galview.xml.h:1
-msgid "Adress Cards"
-msgstr "Adres Kartlarý"
-
-#: views/addressbook/galview.xml.h:2
-msgid "By Company"
-msgstr "Þirket"
-
-#: views/addressbook/galview.xml.h:3
-msgid "Phone List"
-msgstr "Telefon Listesi"
-
-#: views/mail/galview.xml.h:1
-msgid "By Sender"
-msgstr "Gönderen"
-
-#: views/mail/galview.xml.h:2
-msgid "By Status"
-msgstr "Durum"
-
-#: views/mail/galview.xml.h:3
-msgid "By Subject"
-msgstr "Konu"
-
-#: views/mail/galview.xml.h:4
-msgid "Messages"
-msgstr "Ýletiler"
-
-#: views/tasks/galview.xml.h:2
-msgid "With Category"
-msgstr "Kategori"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-msgid "The Personal Addressbook Server"
-msgstr "Kiþisel Adres Defteri Sunucusu"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr "Kiþisel Takvim Sunucusu"
-
-#: wombat/wombat.c:173
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr "setup_vfs(): GNOME-VFS baþlatýlamadý"
-
-#: wombat/wombat.c:185
-msgid "init_corba(): could not initialize GNOME"
-msgstr "init_corba(): GNOME baþlatýlamadý"
-
-#: wombat/wombat.c:198
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "init_bonobo(): Bonobo baþlatýlamadý"
diff --git a/po/uk.po b/po/uk.po
deleted file mode 100644
index ec6674beee..0000000000
--- a/po/uk.po
+++ /dev/null
@@ -1,8946 +0,0 @@
-# Ukrainian translation of evolution.
-# Copyright (C) 2000 Free Software Foundation, Inc.
-# Yuri Syrota <rasta@renome.rovno.ua>, 2000.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: evolution 0.1\n"
-"POT-Creation-Date: 2001-04-28 02:04-0400\n"
-"PO-Revision-Date: 2000-04-04 15:25+0200\n"
-"Last-Translator: Yuri Syrota <rasta@renome.rovno.ua>\n"
-"Language-Team: Ukrainian <uk@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=koi8-u\n"
-"Content-Transfer-Encoding: 8-bit\n"
-
-#: addressbook/backend/ebook/e-card.c:3209
-msgid "Card: "
-msgstr "ëÁÒÔËÁ: "
-
-#: addressbook/backend/ebook/e-card.c:3211
-msgid ""
-"\n"
-"Name: "
-msgstr ""
-"\n"
-"¶Í'Ñ: "
-
-#: addressbook/backend/ebook/e-card.c:3212
-msgid ""
-"\n"
-" Prefix: "
-msgstr ""
-"\n"
-" ðÒÅƦËÓ: "
-
-#: addressbook/backend/ebook/e-card.c:3213
-msgid ""
-"\n"
-" Given: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3214
-msgid ""
-"\n"
-" Additional: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3215
-msgid ""
-"\n"
-" Family: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3216
-msgid ""
-"\n"
-" Suffix: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3230
-msgid ""
-"\n"
-"Birth Date: "
-msgstr ""
-"\n"
-"äÁÔÁ ÎÁÒÏÄÖÅÎÎÑ: "
-
-#: addressbook/backend/ebook/e-card.c:3241
-msgid ""
-"\n"
-"Address:"
-msgstr ""
-"\n"
-"áÄÒÅÓÁ:"
-
-#: addressbook/backend/ebook/e-card.c:3243
-msgid ""
-"\n"
-" Postal Box: "
-msgstr ""
-"\n"
-" ðÏÛÔÏ×Á ÓËÒÉÎØËÁ: "
-
-#: addressbook/backend/ebook/e-card.c:3244
-msgid ""
-"\n"
-" Ext: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3245
-msgid ""
-"\n"
-" Street: "
-msgstr ""
-"\n"
-" ÷ÕÌÉÃÑ: "
-
-#: addressbook/backend/ebook/e-card.c:3246
-msgid ""
-"\n"
-" City: "
-msgstr ""
-"\n"
-" í¦ÓÔÏ: "
-
-#: addressbook/backend/ebook/e-card.c:3247
-msgid ""
-"\n"
-" Region: "
-msgstr ""
-"\n"
-" òÅ­¦ÏÎ: "
-
-#: addressbook/backend/ebook/e-card.c:3248
-msgid ""
-"\n"
-" Postal Code: "
-msgstr ""
-"\n"
-" ¶ÎÄÅËÓ: "
-
-#: addressbook/backend/ebook/e-card.c:3249
-msgid ""
-"\n"
-" Country: "
-msgstr ""
-"\n"
-" ëÒÁ§ÎÁ: "
-
-#: addressbook/backend/ebook/e-card.c:3262
-msgid ""
-"\n"
-"Delivery Label: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3274
-msgid ""
-"\n"
-"Telephones:\n"
-msgstr ""
-"\n"
-"ôÅÌÅÆÏÎÉ:\n"
-
-#: addressbook/backend/ebook/e-card.c:3277
-msgid ""
-"\n"
-"Telephone:"
-msgstr ""
-"\n"
-"ôÅÌÅÆÏÎ:"
-
-#: addressbook/backend/ebook/e-card.c:3301
-msgid ""
-"\n"
-"E-mail:\n"
-msgstr ""
-"\n"
-"åÌÅËÔÒÏÎÎÁ ÐÏÛÔÁ:\n"
-
-#: addressbook/backend/ebook/e-card.c:3304
-msgid ""
-"\n"
-"E-mail:"
-msgstr ""
-"\n"
-"åÌÅËÔÒÏÎÎÁ ÁÄÒÅÓÁ: "
-
-#: addressbook/backend/ebook/e-card.c:3323
-msgid ""
-"\n"
-"Mailer: "
-msgstr ""
-"\n"
-"ðÏÛÔÏ×Á ÐÒÏÇÒÁÍÁ: "
-
-#: addressbook/backend/ebook/e-card.c:3329
-msgid ""
-"\n"
-"Time Zone: "
-msgstr ""
-"\n"
-"þÁÓÏ×ÉÊ ÐÏÑÓ: "
-
-#: addressbook/backend/ebook/e-card.c:3337
-msgid ""
-"\n"
-"Geo Location: "
-msgstr ""
-"\n"
-"òÏÚÔÁÛÕ×ÁÎÎÑ: "
-
-#: addressbook/backend/ebook/e-card.c:3341
-msgid ""
-"\n"
-"Business Role: "
-msgstr ""
-"\n"
-"ðÏÍÁÄÁ: "
-
-#: addressbook/backend/ebook/e-card.c:3353
-msgid ""
-"\n"
-"Org: "
-msgstr ""
-"\n"
-"ïÒÇÁΦÚÁæÑ: "
-
-#: addressbook/backend/ebook/e-card.c:3354
-msgid ""
-"\n"
-" Name: "
-msgstr ""
-"\n"
-" ¶Í'Ñ: "
-
-#: addressbook/backend/ebook/e-card.c:3355
-msgid ""
-"\n"
-" Unit: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3356
-msgid ""
-"\n"
-" Unit2: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3357
-msgid ""
-"\n"
-" Unit3: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3358
-msgid ""
-"\n"
-" Unit4: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3362
-msgid ""
-"\n"
-"Categories: "
-msgstr ""
-"\n"
-"ëÁÔÅÇÏÒ¦§: "
-
-#: addressbook/backend/ebook/e-card.c:3363
-msgid ""
-"\n"
-"Comment: "
-msgstr ""
-"\n"
-"ëÏÍÅÎÔÁÒ: "
-
-#. if (crd->sound.prop.used) {
-#. if (crd->sound.type != SOUND_PHONETIC)
-#. addPropSizedValue (string, _ ("\nPronunciation: "),
-#. crd->sound.data, crd->sound.size);
-#. else
-#. add_strProp_to_string (string, _ ("\nPronunciation: "),
-#. crd->sound.data);
-#.
-#. add_SoundType (string, crd->sound.type);
-#. }
-#: addressbook/backend/ebook/e-card.c:3376
-msgid ""
-"\n"
-"Unique String: "
-msgstr ""
-
-#: addressbook/backend/ebook/e-card.c:3379
-msgid ""
-"\n"
-"Public Key: "
-msgstr ""
-"\n"
-"ðÕÂ̦ÞÎÉÊ ËÌÀÞ: "
-
-#: addressbook/backend/ebook/e-destination.c:232
-msgid "???"
-msgstr ""
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:1
-msgid "Factory to import GnomeCard files into Evolution."
-msgstr ""
-
-#: addressbook/backend/ebook/GNOME_Evolution_Addressbook_GnomeCard_Importer.oaf.in.h:2
-msgid "Imports GnomeCard files into Evolution."
-msgstr ""
-
-#: addressbook/backend/ebook/load-gnomecard-addressbook.c:21
-#: addressbook/backend/ebook/load-pine-addressbook.c:22
-#: addressbook/backend/ebook/test-client-list.c:23
-#: addressbook/backend/ebook/test-client.c:33
-#: addressbook/conduit/address-conduit.c:1092
-#: addressbook/gui/component/addressbook-factory.c:42
-#: calendar/conduits/calendar/calendar-conduit.c:1151
-#: calendar/conduits/todo/todo-conduit.c:965
-#: calendar/gui/alarm-notify/notify-main.c:98 calendar/gui/main.c:57
-msgid "Could not initialize Bonobo"
-msgstr "îÅ ×ÄÁÌÏÓØ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ Bonobo"
-
-#: addressbook/conduit/address-conduit.c:201
-msgid "Cursor could not be loaded\n"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:214
-msgid "EBook not loaded\n"
-msgstr ""
-
-#: addressbook/conduit/address-conduit.c:654
-#: calendar/conduits/calendar/calendar-conduit.c:731
-#: calendar/conduits/todo/todo-conduit.c:545
-msgid "Could not start wombat server"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÚÁÐÕÓÔÉÔÉ ÓÅÒ×ÅÒ Wombat"
-
-#: addressbook/conduit/address-conduit.c:655
-#: calendar/conduits/calendar/calendar-conduit.c:732
-#: calendar/conduits/todo/todo-conduit.c:546
-msgid "Could not start wombat"
-msgstr "îÅ ×ÄÁÌÏÓØ ÚÁÐÕÓÔÉÔÉ Wombat"
-
-#: addressbook/conduit/address-conduit.c:687
-#: addressbook/conduit/address-conduit.c:690
-msgid "Could not read pilot's Address application block"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:1
-#: addressbook/gui/component/addressbook-config.glade.h:1
-#: calendar/gui/e-meeting-dialog.glade.h:1
-#: calendar/gui/event-editor-dialog.glade.h:2 filter/filter.glade.h:1
-#: mail/mail-config.glade.h:7
-msgid "Add"
-msgstr "äÏÄÁÔÉ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:2
-msgid "Anni_versary:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:3
-msgid "B_usiness"
-msgstr "òÏÂÏÔÁ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:4
-msgid "Business _Fax"
-msgstr "òÏÂÏÞÉÊ ÆÁËÓ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:5
-msgid "C_ontacts..."
-msgstr "ú×'ÑÚËÉ..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:6
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:3
-#: calendar/gui/event-editor-dialog.glade.h:5
-msgid "Ca_tegories..."
-msgstr "ëÁÔÅÇÏÒ¦§..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:7
-msgid "Contact Editor"
-msgstr "òÅÄÁËÔÏÒ ËÏÎÔÁËÔ¦×"
-
-#: addressbook/contact-editor/contact-editor.glade.h:8
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:9
-msgid "Details"
-msgstr "ðÏÄÒÏÂÉæ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:9
-msgid "File As:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:10
-#: executive-summary/component/executive-summary-config.glade.h:3
-msgid "General"
-msgstr "úÁÇÁÌØÎÅ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:11
-msgid "New phone type"
-msgstr "îÏ×ÉÊ ÔÉÐ ÔÅÌÅÆÏÎÁ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:12
-msgid "No_tes:"
-msgstr "îÏÔÁÔËÉ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:13
-msgid "Phone Types"
-msgstr "ôÉÐÉ ÔÅÌÅÆÏΦ×"
-
-#: addressbook/contact-editor/contact-editor.glade.h:14
-#: addressbook/contact-editor/e-contact-editor.c:1284
-msgid "Primary Email"
-msgstr "ðÅÒ×ÉÎÎÁ Å-ÐÏÛÔÁ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:15
-msgid "Wants to receive _HTML mail"
-msgstr "èÏÞÅ ÏÔÒÉÍÕ×ÁÔÉ ÌÉÓÔÉ × HTML"
-
-#: addressbook/contact-editor/contact-editor.glade.h:16
-msgid "Web page address:"
-msgstr "áÄÒÅÓÁ ÓÔÏÒ¦ÎËÉ WWW:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:17
-#: mail/mail-config.glade.h:74
-msgid "_Add"
-msgstr "äÏÄÁÔÉ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:18
-msgid "_Address..."
-msgstr "áÄÒÅÓÁ..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:19
-msgid "_Assistant's name:"
-msgstr "¶Í'Ñ ÐÏͦÞÎÉËÁ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:20
-msgid "_Birthday:"
-msgstr "äÁÔÁ ÎÁÒÏÄÖÅÎÎÑ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:21
-msgid "_Business"
-msgstr "òÏÂÏÞÁ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:22
-msgid "_Company:"
-msgstr "ëÏÍÐÁΦÑ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:23
-#: mail/folder-browser.c:625 mail/mail-config.glade.h:75
-#: ui/evolution-event-editor.xml.h:57 ui/evolution-mail.xml.h:98
-#: ui/evolution-task-editor-dialog.xml.h:69
-msgid "_Delete"
-msgstr "óÔÅÒÔÉ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:24
-msgid "_Department:"
-msgstr "÷¦ÄĦÌ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:25
-msgid "_Full Name..."
-msgstr "ðÏ×ÎÅ ¦Í'Ñ..."
-
-#: addressbook/contact-editor/contact-editor.glade.h:26
-msgid "_Home"
-msgstr "äÏÍÁÛÎÑ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:27
-msgid "_Job title:"
-msgstr "ðÏÓÁÄÁ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:28
-msgid "_Manager's Name:"
-msgstr "¶Í'Ñ ËÅÒ¦×ÎÉËÁ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:29
-msgid "_Mobile"
-msgstr "íϦÌØÎÉÊ ÔÅÌÅÆÏÎ"
-
-#: addressbook/contact-editor/contact-editor.glade.h:30
-msgid "_Nickname:"
-msgstr "ðÒ¦Ú×ÉÓØËÏ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:31
-msgid "_Office:"
-msgstr "ïƦÓ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:32
-msgid "_Profession:"
-msgstr "ðÒÏÆÅÓ¦Ñ:"
-
-#: addressbook/contact-editor/contact-editor.glade.h:33
-msgid "_Spouse:"
-msgstr ""
-
-#: addressbook/contact-editor/contact-editor.glade.h:34
-msgid "_This is the mailing address"
-msgstr "ãÅ ÐÏÛÔÏ×Á ÁÄÒÅÓÁ"
-
-#: addressbook/contact-editor/e-contact-editor.c:603
-msgid "This contact belongs to these categories:"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1242
-#: addressbook/gui/widgets/e-addressbook-view.c:676
-msgid "Assistant"
-msgstr "ðÏͦÞÎÉË"
-
-#: addressbook/contact-editor/e-contact-editor.c:1243
-#: addressbook/contact-editor/e-contact-editor.c:1310
-msgid "Business"
-msgstr "òÏÂÏÞÁ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1244
-msgid "Business 2"
-msgstr "òÏÂÏÞÁ 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1245
-#: addressbook/gui/widgets/e-addressbook-view.c:656
-msgid "Business Fax"
-msgstr "òÏÂÏÞÉÊ ÆÁËÓ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1246
-msgid "Callback"
-msgstr ""
-
-#: addressbook/contact-editor/e-contact-editor.c:1247
-msgid "Car"
-msgstr "á×ÔÏ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1248
-msgid "Company"
-msgstr "ëÏÍÐÁΦÑ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1249
-#: addressbook/contact-editor/e-contact-editor.c:1311
-msgid "Home"
-msgstr "äÏÍÁÛÎÑ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1250
-msgid "Home 2"
-msgstr "äÏÍÁÛÎÑ 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1251
-#: addressbook/gui/widgets/e-addressbook-view.c:657
-msgid "Home Fax"
-msgstr "äÏÍÁÛÎ¦Ê ÆÁËÓ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1252
-#: addressbook/gui/widgets/e-addressbook-view.c:660
-msgid "ISDN"
-msgstr "ISDN"
-
-#: addressbook/contact-editor/e-contact-editor.c:1253
-msgid "Mobile"
-msgstr "íϦÌØÎÉÊ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1254
-#: addressbook/contact-editor/e-contact-editor.c:1312
-#: calendar/gui/e-meeting-dialog.glade.h:14 mail/mail-config.glade.h:40
-msgid "Other"
-msgstr "¶ÎÛÁ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1255
-#: addressbook/gui/widgets/e-addressbook-view.c:662
-msgid "Other Fax"
-msgstr "¶ÎÛÉÊ ÆÁËÓ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1256
-#: addressbook/gui/widgets/e-addressbook-view.c:663
-msgid "Pager"
-msgstr "ðÅÊÄÖÅÒ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1257
-msgid "Primary"
-msgstr "ðÅÒ×ÉÎÎÉÊ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1258
-#: addressbook/gui/widgets/e-addressbook-view.c:664
-msgid "Radio"
-msgstr "òÁĦÏ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1259
-#: addressbook/gui/widgets/e-addressbook-view.c:665
-msgid "Telex"
-msgstr "ôÅÌÅËÓ"
-
-#: addressbook/contact-editor/e-contact-editor.c:1260
-msgid "TTY/TDD"
-msgstr "TTY/TDD"
-
-#: addressbook/contact-editor/e-contact-editor.c:1285
-#: addressbook/gui/widgets/e-addressbook-view.c:668
-msgid "Email 2"
-msgstr "å-ÐÏÛÔÁ 2"
-
-#: addressbook/contact-editor/e-contact-editor.c:1286
-#: addressbook/gui/widgets/e-addressbook-view.c:669
-msgid "Email 3"
-msgstr "å-ÐÏÛÔÁ 3"
-
-#: addressbook/contact-editor/e-contact-editor-confirm-delete.glade.h:1
-msgid "Delete Contact?"
-msgstr "óÔÅÒÔÉ ËÏÎÔÁËÔ?"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:233
-msgid "Contact Quick-Add"
-msgstr "û×ÉÄËÅ ÄÏÄÁ×ÁÎÎÑ ËÏÎÔÁËÔÕ"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:235
-msgid "Edit Full"
-msgstr "÷ÉÐÒÁ×ÌÅÎÎÑ ÐÏ×ÎÏÇÏ ¦ÍÅΦ"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:276
-#: addressbook/gui/widgets/e-addressbook-view.c:643
-msgid "Full Name"
-msgstr "ðÏ×ÎÅ ¦Í'Ñ"
-
-#: addressbook/contact-editor/e-contact-quick-add.c:282
-msgid "E-mail"
-msgstr "å-ÐÏÛÔÁ"
-
-#: addressbook/contact-editor/fulladdr.glade.h:1
-msgid "Address _2:"
-msgstr "áÄÒÅÓÁ _2:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:2
-msgid "Canada"
-msgstr "ëÁÎÁÄÁ"
-
-#: addressbook/contact-editor/fulladdr.glade.h:3
-msgid "Check Address"
-msgstr "ðÅÒÅצÒËÁ ÁÄÒÅÓÉ"
-
-#: addressbook/contact-editor/fulladdr.glade.h:4
-msgid "Countr_y:"
-msgstr "ëÒÁ§ÎÁ:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:5
-msgid "Finland"
-msgstr "æ¦ÎÌÑÎĦÑ"
-
-#: addressbook/contact-editor/fulladdr.glade.h:6
-msgid "USA"
-msgstr "óûá"
-
-#: addressbook/contact-editor/fulladdr.glade.h:7
-msgid "_Address:"
-msgstr "áÄÒÅÓÁ:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:8
-msgid "_City:"
-msgstr "í¦ÓÔÏ:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:9
-msgid "_PO Box:"
-msgstr "á/ó:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:10
-msgid "_State/Province:"
-msgstr "ûÔÁÔ/ÏÂÌÁÓÔØ:"
-
-#: addressbook/contact-editor/fulladdr.glade.h:11
-msgid "_ZIP Code:"
-msgstr "¶ÎÄÅËÓ:"
-
-#: addressbook/contact-editor/fullname.glade.h:1
-msgid "Check Full Name"
-msgstr "ðÅÒÅצÒÉÔÉ ÐÏ×ÎÅ ¦Í'Ñ"
-
-#: addressbook/contact-editor/fullname.glade.h:2
-msgid "Dr."
-msgstr "äÏËÔÏÒ"
-
-#: addressbook/contact-editor/fullname.glade.h:3
-msgid "Esq."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:4
-msgid "I"
-msgstr "I"
-
-#: addressbook/contact-editor/fullname.glade.h:5
-msgid "II"
-msgstr "II"
-
-#: addressbook/contact-editor/fullname.glade.h:6
-msgid "III"
-msgstr "III"
-
-#: addressbook/contact-editor/fullname.glade.h:7
-msgid "Jr."
-msgstr "íÏÌÏÄÛÉÊ"
-
-#: addressbook/contact-editor/fullname.glade.h:8
-#, fuzzy
-msgid "Miss"
-msgstr "¦ÓÎÕ¤"
-
-#: addressbook/contact-editor/fullname.glade.h:9
-msgid "Mr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:10
-msgid "Mrs."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:11
-msgid "Ms."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:12
-msgid "Sr."
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:13
-msgid "_First:"
-msgstr "¶Í'Ñ:"
-
-#: addressbook/contact-editor/fullname.glade.h:14
-msgid "_Last:"
-msgstr "ðÒ¦Ú×ÉÝÅ:"
-
-#: addressbook/contact-editor/fullname.glade.h:15
-msgid "_Middle:"
-msgstr "ðÏ-ÂÁÔØËÏצ:"
-
-#: addressbook/contact-editor/fullname.glade.h:16
-msgid "_Suffix:"
-msgstr ""
-
-#: addressbook/contact-editor/fullname.glade.h:17
-msgid "_Title:"
-msgstr "ôÉÔÕÌ:"
-
-#: addressbook/gui/component/addressbook.c:241
-msgid "As _Minicards"
-msgstr "ñË _Minicards"
-
-#: addressbook/gui/component/addressbook.c:247
-#: ui/evolution-addressbook.xml.h:1
-msgid "As _Table"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:399
-#, c-format
-msgid "Enter password for %s"
-msgstr "÷×ÅĦÔØ ÐÁÒÏÌØ ÄÌÑ %s"
-
-#: addressbook/gui/component/addressbook.c:427
-msgid "Unable to open addressbook"
-msgstr "îÅ ×ÄÁÌÏÓÑ ×¦ÄËÒÉÔÉ ÁÄÒÅÓÎÕ ËÎÉÇÕ"
-
-#: addressbook/gui/component/addressbook.c:432
-msgid ""
-"We were unable to open this addressbook. This either\n"
-"means you have entered an incorrect URI, or have tried\n"
-"to access an LDAP server and don't have LDAP support\n"
-"compiled in. If you've entered a URI, check the URI for\n"
-"correctness and reenter. If not, you probably have\n"
-"attempted to access an LDAP server. If you wish to be\n"
-"able to use LDAP, you'll need to download and install\n"
-"OpenLDAP and recompile and install Evolution.\n"
-msgstr ""
-
-#: addressbook/gui/component/addressbook.c:555
-msgid "Show All"
-msgstr "ðÏËÁÚÁÔÉ ×ÓÅ"
-
-#: addressbook/gui/component/addressbook.c:557
-msgid "Advanced..."
-msgstr "äÏÄÁÔËÏ×Ï..."
-
-#: addressbook/gui/component/addressbook.c:587 calendar/gui/gnome-cal.c:236
-msgid "Any field contains"
-msgstr "âÕÄØ-ÑËÅ ÐÏÌŠͦÓÔÉÔØ"
-
-#: addressbook/gui/component/addressbook.c:588
-msgid "Name contains"
-msgstr "¶Í'Ñ Í¦ÓÔÉÔØ"
-
-#: addressbook/gui/component/addressbook.c:589
-msgid "Email contains"
-msgstr "åÌÅËÔÒÏÎÎÁ ÁÄÒÅÓÁ ͦÓÔÉÔØ"
-
-#: addressbook/gui/component/addressbook.c:732
-msgid "The URI that the Folder Browser will display"
-msgstr "URI ÔÅËÉ, ÝÏ ÂÕÄŠצÄÏÂÒÁÖÅÎÏ ÐÅÒÅÇÌÑÄÁÞÅÍ"
-
-#: addressbook/gui/component/addressbook-config.c:148
-msgid "LDAP Server"
-msgstr "óÅÒ×ÅÒ LDAP"
-
-#: addressbook/gui/component/addressbook-config.c:150
-msgid "File"
-msgstr "æÁÊÌ"
-
-#: addressbook/gui/component/addressbook-config.c:153
-msgid "Unknown addressbook type"
-msgstr "îÅצÄÏÍÉÊ ÔÉÐ ÁÄÒÅÓÎϧ ËÎÉÇÉ"
-
-#: addressbook/gui/component/addressbook-config.c:163
-msgid "None (anonymous mode)"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:165
-#: camel/camel-sasl-plain.c:32 camel/providers/imap/camel-imap-provider.c:80
-#: camel/providers/nntp/camel-nntp-store.c:291
-#: camel/providers/pop3/camel-pop3-provider.c:67 mail/mail-config.glade.h:43
-msgid "Password"
-msgstr "ðÁÒÏÌØ"
-
-#: addressbook/gui/component/addressbook-config.c:167
-msgid "SASL"
-msgstr "SASL"
-
-#: addressbook/gui/component/addressbook-config.c:170
-msgid "Unknown auth type"
-msgstr "îÅצÄÏÍÉÊ ÔÉÐ Á×ÔÏÒÉÚÁæ§"
-
-#: addressbook/gui/component/addressbook-config.c:179
-#, fuzzy
-msgid "Base"
-msgstr "÷ÓÔÁ×ÉÔÉ"
-
-#: addressbook/gui/component/addressbook-config.c:181
-msgid "One"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:183
-#, fuzzy
-msgid "Subtree"
-msgstr "äÖÅÒÅÌÏ"
-
-#: addressbook/gui/component/addressbook-config.c:186
-msgid "Unknown scope type"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:353
-msgid "Bind DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:354
-msgid "FIXME Bind DN Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:356
-#: mail/mail-config.glade.h:50
-msgid "Remember this password"
-msgstr "úÁÐÁÍ'ÑÔÁÔÉ ÃÅÊ ÐÁÒÏÌØ"
-
-#: addressbook/gui/component/addressbook-config.c:406
-#: mail/mail-config.glade.h:28
-msgid "Host:"
-msgstr "ëÏÍÐ'ÀÔÅÒ:"
-
-#: addressbook/gui/component/addressbook-config.c:407
-msgid "FIXME Host help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:409
-msgid "Port:"
-msgstr "ðÏÒÔ:"
-
-#: addressbook/gui/component/addressbook-config.c:410
-msgid "FIXME Port help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:414
-msgid "Root DN:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:415
-msgid "FIXME Root DN help text here."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:435
-msgid "Search Scope:"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:489
-msgid "Authentication:"
-msgstr "áÕÔÅÎƦËÁæÑ:"
-
-#: addressbook/gui/component/addressbook-config.c:507
-#: mail/mail-config.glade.h:44
-msgid "Path:"
-msgstr "ûÌÑÈ:"
-
-#: addressbook/gui/component/addressbook-config.c:508
-msgid "FIXME Path Help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:513
-msgid "Create path if it doesn't exist."
-msgstr "óÔ×ÏÒÉÔÉ ÛÌÑÈ, ÑËÝÏ ÊÏÇÏ ÎÅ ¦ÓÎÕ¤."
-
-#: addressbook/gui/component/addressbook-config.c:647
-msgid "Edit Addressbook"
-msgstr "÷ÉÐÒÁ×ÉÔÉ ÁÄÒÅÓÎÕ ËÎÉÇÕ"
-
-#: addressbook/gui/component/addressbook-config.c:649
-msgid "Add Addressbook"
-msgstr "äÏÄÁÔÉ ÁÄÒÅÓÎÕ ËÎÉÇÕ"
-
-#: addressbook/gui/component/addressbook-config.c:665
-msgid ""
-"Select the kind of addressbook you have, and enter the relevant information "
-"about it."
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:671
-#: mail/mail-config.glade.h:35
-msgid "Name:"
-msgstr "¶Í'Ñ:"
-
-#: addressbook/gui/component/addressbook-config.c:672
-msgid "FIXME Name help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.c:674
-#: calendar/gui/e-itip-control.glade.h:6
-#: composer/e-msg-composer-attachment.glade.h:3
-msgid "Description:"
-msgstr "ïÐÉÓ:"
-
-#: addressbook/gui/component/addressbook-config.c:675
-msgid "FIXME Description help text here"
-msgstr ""
-
-#: addressbook/gui/component/addressbook-config.glade.h:2
-msgid "Addressbook Sources"
-msgstr "äÖÅÒÅÌÏ ÁÄÒÅÓÎϧ ËÎÉÇÉ"
-
-#: addressbook/gui/component/addressbook-config.glade.h:3
-#: addressbook/gui/widgets/e-addressbook-view.c:578
-#: addressbook/gui/widgets/e-minicard.c:673
-#: calendar/gui/e-meeting-dialog.glade.h:8
-#: calendar/gui/event-editor-dialog.glade.h:9 filter/filter.glade.h:2
-#: filter/libfilter-i18n.h:11 mail/mail-config.glade.h:19
-#: mail/message-browser.c:203 ui/evolution-addressbook.xml.h:3
-#: ui/evolution-event-editor.xml.h:17 ui/evolution-mail.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:18
-msgid "Delete"
-msgstr "óÔÅÒÔÉ"
-
-#: addressbook/gui/component/addressbook-config.glade.h:4
-#: calendar/gui/e-meeting-dialog.glade.h:9 filter/filter.glade.h:3
-#: mail/mail-config.glade.h:23
-msgid "Edit"
-msgstr "÷ÉÐÒÁ×ÉÔÉ"
-
-#: addressbook/gui/component/addressbook-config.glade.h:5
-msgid "Name"
-msgstr "¶Í'Ñ:"
-
-#: addressbook/gui/component/addressbook-config.glade.h:6
-msgid "URI"
-msgstr "URI"
-
-#: addressbook/gui/component/addressbook-storage.c:99
-msgid "Other Contacts"
-msgstr "¶ÎÛ¦ ËÏÎÔÁËÔÉ"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Disable Queries"
-msgstr "úÁÂÏÒÏÎÉÔÉ ÚÁÐÉÔÉ"
-
-#: addressbook/gui/component/e-address-widget.c:365
-msgid "Enable Queries (Dangerous!)"
-msgstr "äÏÚ×ÏÌÉÔÉ ÚÁÐÉÔÉ (ÎÅÂÅÚÐÅÞÎÏ!)"
-
-#: addressbook/gui/component/e-address-widget.c:388
-#: addressbook/gui/component/select-names/e-select-names-popup.c:210
-msgid "Edit Contact Info"
-msgstr "÷ÉÐÒÁ×ÌÅÎÎÑ ËÏÎÔÁËÔÎϧ ¦ÎÆÏÒÍÁæ§"
-
-#: addressbook/gui/component/e-address-widget.c:424
-#: addressbook/gui/component/select-names/e-select-names-popup.c:269
-msgid "Add to Contacts"
-msgstr "äÏÄÁÔÉ ÄÏ ËÏÎÔÁËÔ¦×"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:1
-msgid "A Bonobo control for an address popup."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:2
-msgid "A Bonobo control for displaying an address."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:3
-msgid "A sample Bonobo control which displays an addressbook."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:4
-msgid "Control that displays an Evolution addressbook minicard."
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:5
-#, fuzzy
-msgid "Evolution Addressbook minicard viewer"
-msgstr "ëÁÎÁÌ ÁÄÒÅÓÎϧ ËÎÉÇÉ Evolution"
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:6
-msgid "Evolution component for handling contacts."
-msgstr "ëÏÍÐÏÎÅÎÔ Evolution ÄÌÑ ÏÂÒÏÂËÉ ËÏÎÔÁËÔ¦×."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:7
-#, fuzzy
-msgid "Factory for the Addressbook Minicard control"
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÐÏÛÔÏ×ÉÊ ËÏÍÐÏÎÅÎÔ Evolutuion."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:8
-msgid "Factory for the Addressbook's address displayer"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:9
-msgid "Factory for the Addressbook's address popup"
-msgstr ""
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:10
-#, fuzzy
-msgid "Factory for the Evolution addressbook component."
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÐÏÛÔÏ×ÉÊ ËÏÍÐÏÎÅÎÔ Evolutuion."
-
-#: addressbook/gui/component/GNOME_Evolution_Addressbook.oaf.in.h:11
-#, fuzzy
-msgid "Factory for the sample Addressbook control"
-msgstr "ëÌÁÃΦÔØ ÔÕÔ ÝÏ ×ÉËÌÉËÁÔÉ ÁÄÒÅÓÎÕ ËÎÉÇÕ"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:131
-#: composer/e-msg-composer-attachment-bar.c:468 filter/filter-filter.c:401
-#: filter/filter-rule.c:549 filter/filter.glade.h:9
-#: shell/e-shortcuts-view.c:265 shell/e-shortcuts-view.c:388
-msgid "Remove"
-msgstr "÷ÉÄÁÌÉÔÉ"
-
-#: addressbook/gui/component/select-names/e-select-names-popup.c:146
-msgid "Remove All"
-msgstr "÷ÉÄÁÌÉÔÉ ×ÓÅ"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:1
-#, fuzzy
-msgid "Evolution's addressbook name selection interface."
-msgstr "ëÁÎÁÌ ÁÄÒÅÓÎϧ ËÎÉÇÉ Evolution"
-
-#: addressbook/gui/component/select-names/GNOME_Evolution_Addressbook_SelectNames.oaf.in.h:2
-msgid "Factory for the Addressbook's name selection interface"
-msgstr ""
-
-#: addressbook/gui/component/select-names/select-names.glade.h:1
-msgid "Find..."
-msgstr "ûÕËÁÔÉ..."
-
-#: addressbook/gui/component/select-names/select-names.glade.h:2
-msgid "Message Recipients"
-msgstr "áÄÒÅÓÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:3
-msgid "Select Names"
-msgstr "÷ÉÂÒÁÔÉ ÎÁÚ×É"
-
-#: addressbook/gui/component/select-names/select-names.glade.h:4
-msgid "Select name from:"
-msgstr "÷ÉÂÅÒ¦ÔØ ÎÁÚ×Õ Ú ÓÐÉÓËÕ:"
-
-#: addressbook/gui/search/e-addressbook-search-dialog.c:158
-msgid "Search"
-msgstr "ðÏÛÕË"
-
-#: addressbook/gui/widgets/alphabet.glade.h:1
-msgid "123"
-msgstr "123"
-
-#: addressbook/gui/widgets/alphabet.glade.h:2
-msgid "a"
-msgstr "a"
-
-#: addressbook/gui/widgets/alphabet.glade.h:3
-msgid "b"
-msgstr "b"
-
-#: addressbook/gui/widgets/alphabet.glade.h:4
-msgid "c"
-msgstr "c"
-
-#: addressbook/gui/widgets/alphabet.glade.h:5
-msgid "d"
-msgstr "d"
-
-#: addressbook/gui/widgets/alphabet.glade.h:6
-msgid "e"
-msgstr "e"
-
-#: addressbook/gui/widgets/alphabet.glade.h:7
-msgid "f"
-msgstr "f"
-
-#: addressbook/gui/widgets/alphabet.glade.h:8
-msgid "g"
-msgstr "g"
-
-#: addressbook/gui/widgets/alphabet.glade.h:9
-msgid "h"
-msgstr "h"
-
-#: addressbook/gui/widgets/alphabet.glade.h:10
-msgid "i"
-msgstr "i"
-
-#: addressbook/gui/widgets/alphabet.glade.h:11
-msgid "j"
-msgstr "j"
-
-#: addressbook/gui/widgets/alphabet.glade.h:12
-msgid "k"
-msgstr "k"
-
-#: addressbook/gui/widgets/alphabet.glade.h:13
-msgid "l"
-msgstr "l"
-
-#: addressbook/gui/widgets/alphabet.glade.h:14
-msgid "m"
-msgstr "m"
-
-#: addressbook/gui/widgets/alphabet.glade.h:15
-msgid "n"
-msgstr "n"
-
-#: addressbook/gui/widgets/alphabet.glade.h:16
-msgid "o"
-msgstr "o"
-
-#: addressbook/gui/widgets/alphabet.glade.h:17
-msgid "p"
-msgstr "p"
-
-#: addressbook/gui/widgets/alphabet.glade.h:18
-msgid "q"
-msgstr "q"
-
-#: addressbook/gui/widgets/alphabet.glade.h:19
-msgid "r"
-msgstr "r"
-
-#: addressbook/gui/widgets/alphabet.glade.h:20
-msgid "s"
-msgstr "s"
-
-#: addressbook/gui/widgets/alphabet.glade.h:21
-msgid "t"
-msgstr "t"
-
-#: addressbook/gui/widgets/alphabet.glade.h:22
-msgid "u"
-msgstr "u"
-
-#: addressbook/gui/widgets/alphabet.glade.h:23
-msgid "v"
-msgstr "v"
-
-#: addressbook/gui/widgets/alphabet.glade.h:24
-msgid "w"
-msgstr "w"
-
-#: addressbook/gui/widgets/alphabet.glade.h:25
-msgid "x"
-msgstr "x"
-
-#: addressbook/gui/widgets/alphabet.glade.h:26
-msgid "y"
-msgstr "y"
-
-#: addressbook/gui/widgets/alphabet.glade.h:27
-msgid "z"
-msgstr "z"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:513
-#: addressbook/gui/widgets/e-addressbook-view.c:573
-#: addressbook/gui/widgets/e-minicard.c:466
-#: addressbook/gui/widgets/e-minicard.c:668
-msgid "Save as VCard"
-msgstr "úÂÅÒÅÇÔÉ ÑË VCard"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:574
-#: addressbook/gui/widgets/e-minicard.c:669
-msgid "Send contact to other"
-msgstr "÷¦Ä¦ÓÌÁÔÉ ËÏÎÔÁËÔ ¦ÎÛÏÍÕ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:575
-#: addressbook/gui/widgets/e-minicard.c:670
-msgid "Send message to contact"
-msgstr "÷¦Ä¦ÓÌÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ ÚÁ ËÏÎÔÁËÔÏÍ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:576
-#: addressbook/gui/widgets/e-minicard.c:671 mail/message-browser.c:200
-#: ui/evolution-addressbook.xml.h:9 ui/evolution-calendar.xml.h:23
-#: ui/evolution-mail.xml.h:55 ui/evolution-tasks.xml.h:4
-msgid "Print"
-msgstr "äÒÕËÕ×ÁÔÉ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:577
-#: addressbook/gui/widgets/e-minicard.c:672
-msgid "Print Envelope"
-msgstr "îÁÄÒÕËÕ×ÁÔÉ ËÏÎ×ÅÒÔ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:641
-msgid "* Click here to add a contact *"
-msgstr "* ëÌÁÃΦÔØ ÔÕÔ ÝÏ ÄÏÄÁÔÉ ËÏÎÔÁËÔ *"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:642
-#, fuzzy
-msgid "File As"
-msgstr "æÁÊÌ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:644
-msgid "Email"
-msgstr "å-ÐÏÛÔÁ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:645
-msgid "Primary Phone"
-msgstr "ðÅÒ×ÉÎÎÉÊ ÔÅÌÅÆÏÎ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:646
-msgid "Assistant Phone"
-msgstr "ôÅÌÅÆÌÎ ÐÏͦÞÎÉËÁ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:647
-msgid "Business Phone"
-msgstr "òÏÂÏÞÉÊ ÔÅÌÅÆÏÎ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:648
-msgid "Callback Phone"
-msgstr ""
-
-#: addressbook/gui/widgets/e-addressbook-view.c:649
-msgid "Company Phone"
-msgstr "ôÅÌÅÆÏÎ ËÏÍÐÁΦ§"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:650
-msgid "Home Phone"
-msgstr "äÏÍÁÛÎ¦Ê ÔÅÌÅÆÏÎ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:651
-msgid "Organization"
-msgstr "ïÒÇÁΦÚÁæÑ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:652
-msgid "Business Address"
-msgstr "òÏÂÏÞÁ ÁÄÒÅÓÁ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:653
-msgid "Home Address"
-msgstr "äÏÍÁÛÎÑ ÁÄÒÅÓÁ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:654
-msgid "Mobile Phone"
-msgstr "íϦÌØÎÉÊ ÔÅÌÅÆÏÎ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:655
-msgid "Car Phone"
-msgstr "á×ÔÏÍϦÌØÎÉÊ ÔÅÌÅÆÏÎ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:658
-msgid "Business Phone 2"
-msgstr "òÏÂÏÞÉÊ ÔÅÌÅÏÆÎ 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:659
-msgid "Home Phone 2"
-msgstr "äÏÍÁÛÎ¦Ê ÔÅÌÅÆÏÎ 2"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:661
-msgid "Other Phone"
-msgstr "¶ÎÛÉÊ ÔÅÌÅÆÏÎ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:666
-msgid "TTY"
-msgstr "TTY"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:667
-msgid "Other Address"
-msgstr "¶ÎÛÁ ÁÄÒÅÓÁ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:670
-msgid "Web Site"
-msgstr "óÁÊÔ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:671
-msgid "Department"
-msgstr "÷¦ÄĦÌ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:672
-msgid "Office"
-msgstr "ïƦÓ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:673
-#, fuzzy
-msgid "Title"
-msgstr "ôÉÔÕÌ:"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:674
-msgid "Profession"
-msgstr "ðÒÏÆÅÓ¦Ñ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:675
-msgid "Manager"
-msgstr "ëÅÒ¦×ÎÉË"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:677
-msgid "Nickname"
-msgstr "ðÒ¦Ú×ÉÓØËÏ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:678
-#, fuzzy
-msgid "Spouse"
-msgstr "äÖÅÒÅÌÏ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:679
-msgid "Note"
-msgstr "ðÒÉͦÔËÉ"
-
-#: addressbook/gui/widgets/e-addressbook-view.c:680
-msgid "Free-busy URL"
-msgstr ""
-
-#: addressbook/gui/widgets/e-minicard-control.c:282
-msgid "Save in addressbook"
-msgstr "úÂÅÒÅÇÔÉ Õ ÁÄÒÅÓÎ¦Ê ËÎÉÚ¦"
-
-#: addressbook/gui/widgets/e-minicard-view.c:166
-msgid ""
-"\n"
-"\n"
-"There are no items to show in this view\n"
-"\n"
-"Double-click here to create a new Contact."
-msgstr ""
-
-#: addressbook/gui/widgets/gal-view-factory-minicard.c:26
-#, fuzzy
-msgid "Card View"
-msgstr "ëÁÒÔËÁ: "
-
-#: addressbook/printing/e-contact-print.glade.h:1
-msgid "10 pt. Tahoma"
-msgstr "Tahoma 10 ÐÔ"
-
-#: addressbook/printing/e-contact-print.glade.h:2
-msgid "8 pt. Tahoma"
-msgstr "Tahoma 8 ÐÔ"
-
-#: addressbook/printing/e-contact-print.glade.h:3
-msgid "Blank forms at end:"
-msgstr ""
-
-#: addressbook/printing/e-contact-print.glade.h:4
-msgid "Body"
-msgstr "ô¦ÌÏ"
-
-#: addressbook/printing/e-contact-print.glade.h:5
-msgid "Bottom:"
-msgstr "÷ÎÉÚÕ:"
-
-#: addressbook/printing/e-contact-print.glade.h:6
-msgid "Dimensions:"
-msgstr "òÏÚͦÒÉ:"
-
-#: addressbook/printing/e-contact-print.glade.h:7
-msgid "Font..."
-msgstr "ûÒÉÆÔ..."
-
-#: addressbook/printing/e-contact-print.glade.h:8
-msgid "Fonts"
-msgstr "ûÒÉÆÔÉ"
-
-#: addressbook/printing/e-contact-print.glade.h:9
-msgid "Footer:"
-msgstr "îÉÖÎ¦Ê ËÏÌÏÎÔÉÔÕÌ:"
-
-#: addressbook/printing/e-contact-print.glade.h:10
-msgid "Format"
-msgstr "æÏÒÍÁÔ"
-
-#: addressbook/printing/e-contact-print.glade.h:11
-msgid "Header"
-msgstr "÷ÅÒÈÎ¦Ê ËÏÌÏÎÔÉÔÕÌ"
-
-#: addressbook/printing/e-contact-print.glade.h:12
-msgid "Header/Footer"
-msgstr "ëÏÌÏÎÔÉÔÕÌÉ"
-
-#: addressbook/printing/e-contact-print.glade.h:13
-msgid "Headings"
-msgstr "÷ÅÒÈΦ ËÏÌÏÎÔÉÔÕÌÉ"
-
-#: addressbook/printing/e-contact-print.glade.h:14
-msgid "Headings for each letter"
-msgstr "÷ÅÒÈΦ ËÏÌÏÎÔÉÔÕÌÉ ÄÌÑ ËÏÖÎÏÇÏ ÌÉÓÔÁ"
-
-#: addressbook/printing/e-contact-print.glade.h:15
-msgid "Height:"
-msgstr "÷ÉÓÏÔÁ:"
-
-#: addressbook/printing/e-contact-print.glade.h:16
-msgid "Immediately follow each other"
-msgstr "ïÄÉÎ ÚÁ ÄÒÕÇÉÍ"
-
-#: addressbook/printing/e-contact-print.glade.h:17
-msgid "Include:"
-msgstr "÷ËÌÀÞÉÔÉ:"
-
-#: addressbook/printing/e-contact-print.glade.h:18
-msgid "Landscape"
-msgstr "áÌØÂÏÍÎÁ"
-
-#: addressbook/printing/e-contact-print.glade.h:19
-msgid "Left:"
-msgstr "ì¦×ÏÒÕÞ:"
-
-#: addressbook/printing/e-contact-print.glade.h:20
-msgid "Letter tabs on side"
-msgstr "úÁËÌÁÄËÉ Ì¦ÔÅÒ ÚÂÏËÕ"
-
-#: addressbook/printing/e-contact-print.glade.h:21
-msgid "Margins"
-msgstr "ðÏÌÑ"
-
-#: addressbook/printing/e-contact-print.glade.h:22
-#: executive-summary/component/executive-summary-config.glade.h:4
-msgid "Number of columns:"
-msgstr "ë¦ÌØ˦ÓÔØ ÓÔÏ×ÐÞÉ˦×:"
-
-#: addressbook/printing/e-contact-print.glade.h:23
-msgid "Options"
-msgstr "ðÁÒÁÍÅÔÒÉ"
-
-#: addressbook/printing/e-contact-print.glade.h:24
-msgid "Orientation"
-msgstr "ïÒ¦¤ÎÔÁæÑ"
-
-#: addressbook/printing/e-contact-print.glade.h:25
-msgid "Page"
-msgstr "óÔÏÒ¦ÎËÁ"
-
-#: addressbook/printing/e-contact-print.glade.h:26
-msgid "Page Setup:"
-msgstr "ðÁÒÁÍÅÔÒÉ ÓÔÏÒ¦ÎËÉ:"
-
-#: addressbook/printing/e-contact-print.glade.h:27
-msgid "Paper"
-msgstr "ðÁЦÒ"
-
-#: addressbook/printing/e-contact-print.glade.h:28
-msgid "Paper source:"
-msgstr "äÖÅÒÅÌÏ ÐÁÐÅÒÕ:"
-
-#: addressbook/printing/e-contact-print.glade.h:29
-msgid "Portrait"
-msgstr "ëÎÉÖÎÁ"
-
-#: addressbook/printing/e-contact-print.glade.h:30
-msgid "Preview:"
-msgstr "ðÅÒÅÇÌÑÄ:"
-
-#: addressbook/printing/e-contact-print.glade.h:31
-msgid "Print using gray shading"
-msgstr "äÒÕË Ú ×ÉËÏÒÉÓÔÁÎÎÑÍ ÎÁЦ×ÔÏΦ×"
-
-#: addressbook/printing/e-contact-print.glade.h:32
-msgid "Reverse on even pages"
-msgstr "ïÂÅÒÔÁÔÉ ÎÁ ÐÁÒÎÉÈ ÓÔÏÒ¦ÎËÁÈ"
-
-#: addressbook/printing/e-contact-print.glade.h:33
-msgid "Right:"
-msgstr "ðÒÁ×ÏÒÕÞ:"
-
-#: addressbook/printing/e-contact-print.glade.h:34
-msgid "Sections:"
-msgstr "òÏÚĦÌÉ:"
-
-#: addressbook/printing/e-contact-print.glade.h:35
-msgid "Shading"
-msgstr "ð¦×ÔÏÎÉ"
-
-#: addressbook/printing/e-contact-print.glade.h:36
-msgid "Size:"
-msgstr "òÏÚͦÒ:"
-
-#: addressbook/printing/e-contact-print.glade.h:37
-msgid "Start on a new page"
-msgstr "ðÏÞÉÎÁÔÉ Ú ÎÏ×ϧ ÓÔÏÒ¦ÎËÉ"
-
-#: addressbook/printing/e-contact-print.glade.h:38
-msgid "Style name:"
-msgstr "îÁÚ×Á ÓÔÉÌÀ:"
-
-#: addressbook/printing/e-contact-print.glade.h:39
-msgid "Top:"
-msgstr "÷ÇÏÒ¦:"
-
-#: addressbook/printing/e-contact-print.glade.h:40
-msgid "Type:"
-msgstr "ôÉÐ:"
-
-#: addressbook/printing/e-contact-print.glade.h:41
-msgid "Width:"
-msgstr "ûÉÒÉÎÁ:"
-
-#: addressbook/printing/e-contact-print.glade.h:42
-msgid "label26"
-msgstr "label26"
-
-#: calendar/conduits/calendar/calendar-conduit.c:687
-#: calendar/conduits/todo/todo-conduit.c:501
-msgid "Error while communicating with calendar server"
-msgstr ""
-
-#: calendar/conduits/calendar/calendar-conduit.c:786
-#: calendar/conduits/calendar/calendar-conduit.c:789
-msgid "Could not read pilot's Calendar application block"
-msgstr ""
-
-#: calendar/conduits/todo/todo-conduit.c:600
-#: calendar/conduits/todo/todo-conduit.c:603
-msgid "Could not read pilot's ToDo application block"
-msgstr ""
-
-#: calendar/gui/alarm-notify/alarm-queue.c:586
-#: calendar/gui/alarm-notify/alarm-queue.c:885
-#: calendar/gui/alarm-notify/alarm-queue.c:941
-msgid "Reminder of your appointment at "
-msgstr ""
-
-#: calendar/gui/alarm-notify/alarm-queue.c:877
-#: calendar/gui/dialogs/alarm-notify.glade.h:3
-msgid "Snooze"
-msgstr "óÏÎ"
-
-#. Idea: we need Snooze option :-)
-#: calendar/gui/alarm-notify/alarm-queue.c:890
-#: calendar/gui/alarm-notify/alarm-queue.c:945
-msgid "Ok"
-msgstr "çÁÒÁÚÄ"
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:1
-msgid "Alarm notification service"
-msgstr ""
-
-#: calendar/gui/alarm-notify/GNOME_Evolution_Calendar_AlarmNotify.oaf.in.h:2
-msgid "Factory for the alarm notification service"
-msgstr ""
-
-#: calendar/gui/alarm-notify/notify-main.c:56
-#, c-format
-msgid ""
-"It is %s. The Unix time is %ld right now. We just thought you may like to "
-"know."
-msgstr ""
-
-#: calendar/gui/alarm-notify/notify-main.c:93 calendar/gui/main.c:52
-msgid "Could not initialize GNOME"
-msgstr "îÅ ×ÄÁÌÏÓØ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ GNOME"
-
-#: calendar/gui/alarm-notify/notify-main.c:108
-#, fuzzy
-msgid "Could not create the alarm notify service factory"
-msgstr "îÅÍÏÖÌÉ×Ï ÓÔ×ÏÒÉÔÉ ÔÉÍÞÁÓÏ×ÉÊ ËÁÔÁÌÏÇ: %s"
-
-#: calendar/gui/calendar-commands.c:266
-msgid "File not found"
-msgstr "æÁÊÌÕ ÎÅ ÚÎÁÊÄÅÎÏ"
-
-#: calendar/gui/calendar-commands.c:290
-msgid "Open calendar"
-msgstr "÷¦ÄËÒÉÔÉ ËÁÌÅÎÄÁÒ"
-
-#: calendar/gui/calendar-commands.c:332
-msgid "Save calendar"
-msgstr "úÂÅÒÅÇÔÉ ËÁÌÅÎÄÁÒ"
-
-#: calendar/gui/calendar-commands.c:468
-msgid ""
-"Could not create the calendar view. Please check your ORBit and OAF setup."
-msgstr ""
-
-#: calendar/gui/calendar-model.c:360 calendar/gui/calendar-model.c:898
-#: calendar/gui/e-calendar-table.c:330
-msgid "Public"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:363 calendar/gui/calendar-model.c:900
-#: calendar/gui/e-calendar-table.c:331
-msgid "Private"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:366 calendar/gui/calendar-model.c:902
-#: calendar/gui/e-calendar-table.c:332
-msgid "Confidential"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:369 calendar/gui/event-editor.c:1606
-#: calendar/gui/event-editor.c:1633
-#: camel/providers/smtp/camel-smtp-transport.c:218
-msgid "Unknown"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:457
-msgid "N"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:457
-msgid "S"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:459
-msgid "E"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:459
-msgid "W"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:497 calendar/gui/calendar-model.c:1066
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:10
-#: calendar/gui/e-calendar-table.c:352 mail/message-list.c:690
-msgid "High"
-msgstr "÷ÉÓÏËÉÊ"
-
-#: calendar/gui/calendar-model.c:499 calendar/gui/calendar-model.c:1068
-#: calendar/gui/calendar-model.c:1572
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:13
-#: calendar/gui/e-calendar-table.c:353 mail/message-list.c:689
-msgid "Normal"
-msgstr "ú×ÉÞÁÊÎÉÊ"
-
-#: calendar/gui/calendar-model.c:501 calendar/gui/calendar-model.c:1070
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:12
-#: calendar/gui/e-calendar-table.c:354 mail/message-list.c:688
-msgid "Low"
-msgstr "îÉÚØËÉÊ"
-
-#: calendar/gui/calendar-model.c:537 calendar/gui/calendar-model.c:1122
-#: calendar/gui/e-calendar-table.c:406
-msgid "Transparent"
-msgstr "ðÒÏÚÏÒÉÊ"
-
-#: calendar/gui/calendar-model.c:540 calendar/gui/calendar-model.c:1124
-#: calendar/gui/e-calendar-table.c:405
-msgid "Opaque"
-msgstr "îÅÐÒÏÚÏÒÉÊ"
-
-#: calendar/gui/calendar-model.c:638 calendar/gui/calendar-model.c:1176
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:14
-#: calendar/gui/e-calendar-table.c:426
-msgid "Not Started"
-msgstr "îÅ ÒÏÚÐÏÞÁÔÏ"
-
-#: calendar/gui/calendar-model.c:641 calendar/gui/calendar-model.c:1178
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:11
-#: calendar/gui/e-calendar-table.c:427
-msgid "In Progress"
-msgstr "÷ÉËÏÎÕ¤ÔØÓÑ"
-
-#: calendar/gui/calendar-model.c:644 calendar/gui/calendar-model.c:1180
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:6
-#: calendar/gui/e-calendar-table.c:428
-msgid "Completed"
-msgstr "úÁ×ÅÒÛÅÎÏ"
-
-#: calendar/gui/calendar-model.c:647 calendar/gui/calendar-model.c:1182
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:4
-#: calendar/gui/e-calendar-table.c:429 camel/camel-service.c:544
-#: camel/camel-service.c:580
-msgid "Cancelled"
-msgstr "÷¦ÄͦÎÅÎÏ"
-
-#. strftime format of a weekday, a date and a time, 24-hour.
-#: calendar/gui/calendar-model.c:794 e-util/e-time-utils.c:278
-msgid "%a %m/%d/%Y %H:%M:%S"
-msgstr ""
-
-#. strftime format of a weekday, a date and a time, 12-hour.
-#: calendar/gui/calendar-model.c:797 e-util/e-time-utils.c:287
-msgid "%a %m/%d/%Y %I:%M:%S %p"
-msgstr ""
-
-#: calendar/gui/calendar-model.c:802
-#, c-format
-msgid ""
-"The date must be entered in the format: \n"
-"\n"
-"%s"
-msgstr ""
-"äÁÔÕ ÐÏÔÒ¦ÂÎÏ ××ÏÄÉÔÉ Õ ÔÁËÏÍÕ ÆÏÒÍÁÔ¦: \n"
-"\n"
-"%s"
-
-#: calendar/gui/calendar-model.c:882
-msgid ""
-"The classification must be 'Public', 'Private', 'Confidential' or 'None'"
-msgstr ""
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:896 calendar/gui/calendar-model.c:1120
-#: calendar/gui/calendar-model.c:1174 calendar/gui/e-calendar-table.c:329
-#: calendar/gui/e-calendar-table.c:404 mail/mail-account-gui.c:973
-#: mail/mail-accounts.c:120 mail/mail-accounts.c:164
-#: mail/mail-config.glade.h:37 shell/e-shell-view.c:1179
-#: widgets/misc/e-cell-date-edit.c:237 widgets/misc/e-dateedit.c:432
-#: widgets/misc/e-dateedit.c:1341 widgets/misc/e-dateedit.c:1456
-msgid "None"
-msgstr "îÅÍÁ¤"
-
-#: calendar/gui/calendar-model.c:970
-msgid ""
-"The geographical position must be entered in the format: \n"
-"\n"
-"45.436845,125.862501"
-msgstr ""
-"çÅÏÇÒÁƦÞÎÅ ÐÏÌÏÖÅÎÎÑ ÐÏÔÒ¦ÂÎÏ ××ÏÄÉÔÉ Õ ÔÁËÏÍÕ ÆÏÒÍÁÔ¦: \n"
-"\n"
-"45.436845,125.862501"
-
-#: calendar/gui/calendar-model.c:1010
-msgid "The percent value must be between 0 and 100, inclusive"
-msgstr "úÎÁÞÅÎÎÑ ×¦ÄÓÏÔËÁ ÍÁ¤ ÂÕÔÉ Í¦Ö 0 ÔÁ 100, ×ËÌÀÞÎÏ"
-
-#: calendar/gui/calendar-model.c:1051
-msgid "The priority must be 'High', 'Normal', 'Low' or 'Undefined'."
-msgstr ""
-
-#. An empty string is the same as 'None'.
-#: calendar/gui/calendar-model.c:1064
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:22
-#: calendar/gui/e-calendar-table.c:355
-msgid "Undefined"
-msgstr "îÅ×ÉÚÎÁÞÅÎÏ"
-
-#: calendar/gui/calendar-model.c:1105
-msgid "The transparency must be 'Transparent', 'Opaque', or 'None'."
-msgstr ""
-
-#: calendar/gui/calendar-model.c:1574
-#, fuzzy
-msgid "Recurring"
-msgstr "ðÏ×ÔÏÒÅÎÎÑ"
-
-#: calendar/gui/calendar-model.c:1576
-msgid "Assigned"
-msgstr "ðÒÉ×'ÑÚÁÎÏ"
-
-#: calendar/gui/calendar-model.c:1582
-msgid "Yes"
-msgstr "ôÁË"
-
-#: calendar/gui/calendar-model.c:1582
-msgid "No"
-msgstr "î¦"
-
-#: calendar/gui/calendar-summary.c:198
-#, fuzzy
-msgid "%A, %e %B %Y"
-msgstr "%A, %d %B %Y"
-
-#: calendar/gui/calendar-summary.c:207
-msgid "Appointments"
-msgstr "úÕÓÔÒ¦Þ¦"
-
-#: calendar/gui/calendar-summary.c:245 calendar/gui/calendar-summary.c:251
-msgid "%I:%M%p"
-msgstr "%I:%M%p"
-
-#: calendar/gui/calendar-summary.c:275 calendar/gui/print.c:948
-#: views/tasks/galview.xml.h:1
-msgid "Tasks"
-msgstr "úÁ×ÄÁÎÎÑ"
-
-#: calendar/gui/calendar-summary.c:443
-msgid "<b>Error loading calendar</b>"
-msgstr "<b>ðÏÍÉÌËÁ ÚÁ×ÁÎÔÁÖÅÎÎÑ ËÁÌÅÎÄÁÒÑ</b>"
-
-#: calendar/gui/calendar-summary.c:455
-msgid "<b>Error loading calendar:<br>Method not supported"
-msgstr "<b>ðÏÍÉÌËÁ ÚÁ×ÁÎÔÁÖÅÎÎÑ ËÁÌÅÎÄÁÒÑ:<br>íÅÔÏÄ ÎŠЦÄÔÒÉÍÕ¤ÔØÓÑ"
-
-#: calendar/gui/calendar-summary.c:622
-#, fuzzy
-msgid "Display"
-msgstr "äÅÎØ"
-
-#: calendar/gui/calendar-summary.c:627
-msgid "Show appointments"
-msgstr "ðÏËÁÚÁÔÉ ÚÕÓÔÒ¦Þ¦"
-
-#: calendar/gui/calendar-summary.c:635
-msgid "Show tasks"
-msgstr "ðÏËÁÚÁÔÉ ÚÁ×ÄÁÎÎÑ"
-
-#: calendar/gui/calendar-summary.c:690
-msgid "Things to do"
-msgstr ""
-
-#: calendar/gui/calendar-summary.c:721 calendar/gui/e-itip-control.glade.h:7
-msgid "Loading Calendar"
-msgstr "úÁ×ÁÎÔÁÖÅÎÎÑ ËÁÌÅÎÄÁÒÑ"
-
-#: calendar/gui/control-factory.c:126
-msgid "The URI that the calendar will display"
-msgstr "URI, ÑËÉÊ ×¦ÄÏÂÒÁÚÉÔØ ËÁÌÅÎÄÁÒ"
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:189
-msgid "Alarm on %A %b %d %Y %H:%M"
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:196
-msgid "Notification about your appointment on %A %b %d %Y %H:%M"
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify-dialog.c:207
-msgid "No summary available."
-msgstr ""
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:1
-#: ui/evolution-contact-editor.xml.h:1 ui/evolution-event-editor.xml.h:10
-#: ui/evolution-message-composer.xml.h:3 ui/evolution-subscribe.xml.h:2
-#: ui/evolution-task-editor-dialog.xml.h:11 ui/evolution.xml.h:2
-msgid "Close"
-msgstr "úÁËÒÉÔÉ"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:2
-msgid "Edit appointment"
-msgstr "÷ÉÐÒÁ×ÉÔÉ ÚÕÓÔÒ¦Þ"
-
-#: calendar/gui/dialogs/alarm-notify.glade.h:4
-msgid "Snooze time (minutes)"
-msgstr "þÁÓ ÓÎÕ (× È×ÉÌÉÎÁÈ)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:1
-msgid "05 minutes"
-msgstr "05 È×ÉÌÉÎ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:2
-msgid "10 minutes"
-msgstr "10 È×ÉÌÉÎ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:3
-msgid "12 hour (am/pm)"
-msgstr "12 ÇÏÄÉÎ (ÄÐ/ÐÐ)"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:4
-msgid "15 minutes"
-msgstr "15 È×ÉÌÉÎ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:5
-msgid "24 hour"
-msgstr "24 ÇÏÄÉÎÉ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:6
-msgid "30 minutes"
-msgstr "30 È×ÉÌÉÎ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:7
-msgid "60 minutes"
-msgstr "60 È×ÉÌÉÎ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:8
-msgid "Alarms timeout after"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:9
-msgid "Audio Alarms"
-msgstr "ú×ÕËÏצ ÓÉ­ÎÁÌÉ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:10
-msgid "Beep when alarm windows appear."
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:11
-#: ui/evolution-calendar.xml.h:3
-msgid "Calendar"
-msgstr "ëÁÌÅÎÄÁÒ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:12
-msgid "Calendar Preferences"
-msgstr "ðÁÒÁÍÅÔÒÉ ËÁÌÅÎÄÁÒÑ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:13
-msgid "Colors"
-msgstr "ëÏÌØÏÒÉ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:14
-msgid "Compress weekends"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:15
-msgid "Date navigator options"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:16
-#, fuzzy
-msgid "Defaults"
-msgstr "ðÏÄÒÏÂÉæ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:17
-msgid "Display options"
-msgstr "ðÁÒÁÍÅÔÒÉ ×¦ÄÏÂÒÁÖÅÎÎÑ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:18
-#: calendar/gui/e-calendar-table.c:162
-msgid "Due Date"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:19
-msgid "Enable snoozing for"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:20
-msgid "End of day:"
-msgstr "ë¦ÎÅÃØ ÄÎÑ:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:21
-msgid "First day of week:"
-msgstr "ðÅÒÛÉÊ ÄÅÎØ ÔÉÖÎÑ:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:22
-msgid "Fri"
-msgstr "ðÔÎ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:23
-#: calendar/gui/event-editor.c:484
-msgid "Friday"
-msgstr "ð'ÑÔÎÉÃÑ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:24
-msgid "Highlight"
-msgstr "ð¦ÄÓצÔËÁ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:25
-msgid "Items Due Today"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:26
-msgid "Items Due Today:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:27
-msgid "Items Not Yet Due"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:28
-msgid "Items Not Yet Due:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:29
-msgid "Mon"
-msgstr "ðÎÄ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:30
-#: calendar/gui/event-editor.c:480
-msgid "Monday"
-msgstr "ðÏÎÅĦÌÏË"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:31
-msgid "Overdue Items"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:32
-msgid "Overdue Items:"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:33
-#: mail/mail-config.glade.h:45
-msgid "Pick a color"
-msgstr "÷ÉÂ¦Ò ËÏÌØÏÒÕ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:34
-#: calendar/gui/e-calendar-table.c:165
-msgid "Priority"
-msgstr "ðÒ¦ÏÒÉÔÅÔ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:35
-msgid "Remind me of all appointments"
-msgstr "îÁÇÁÄÕ×ÁÔÉ ÐÒÏ ×Ó¦ ÚÕÓÔÒ¦Þ¦"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:36
-#: calendar/gui/event-editor-dialog.glade.h:21
-msgid "Reminders"
-msgstr "îÁÇÁÄÕ×ÁÎÎÑ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:37
-msgid "Sat"
-msgstr "óÂÔ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:38
-#: calendar/gui/event-editor.c:485
-msgid "Saturday"
-msgstr "óÕÂÏÔÁ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:39
-msgid "Show"
-msgstr "ðÏËÁÚÁÔÉ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:40
-msgid "Show appointment end times"
-msgstr "ðÏËÁÚÁÔÉ ÞÁÓ ÚÁ×ÅÒÛÅÎÎÑ ÚÕÓÔÒ¦ÞÅÊ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:41
-msgid "Show week numbers"
-msgstr "ðÏËÁÚÁÔÉ ÎÏÍÅÒÁ ÔÉÖΦ×"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:42
-msgid "Start of day:"
-msgstr "ðÏÞÁÔÏË ÄÎÑ:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:43
-msgid "Sun"
-msgstr "îÄÌ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:44
-#: calendar/gui/event-editor.c:486
-msgid "Sunday"
-msgstr "îÅĦÌÑ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:45
-msgid "TaskPad"
-msgstr "ðÁÎÅÌØ ÚÁ×ÄÁÎØ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:46
-msgid "Thu"
-msgstr "þÔ×"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:47
-#: calendar/gui/event-editor.c:483
-msgid "Thursday"
-msgstr "þÅÔ×ÅÒ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:48
-msgid "Time Until Due"
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:49
-msgid "Time divisions:"
-msgstr "òÏÚĦÌÀ×ÁÞ¦ ÞÁÓÕ:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:50
-msgid "Time format:"
-msgstr "æÏÒÍÁÔ ÞÁÓÕ:"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:51
-msgid "Tue"
-msgstr "÷ÔÒ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:52
-#: calendar/gui/event-editor.c:481
-msgid "Tuesday"
-msgstr "÷¦×ÔÏÒÏË"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:53
-msgid "Visual Alarms"
-msgstr "÷¦ÚÕÁÌØΦ ÓÉ­ÎÁÌÉ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:54
-msgid "Wed"
-msgstr "óÒÄ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:55
-#: calendar/gui/event-editor.c:482
-msgid "Wednesday"
-msgstr "óÅÒÅÄÁ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:56
-msgid "Work week"
-msgstr "òÏÂÏÞÉÊ ÔÉÖÄÅÎØ"
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:57
-msgid "minutes before they occur."
-msgstr ""
-
-#: calendar/gui/dialogs/cal-prefs-dialog.glade.h:58
-#: mail/mail-config.glade.h:78
-#, fuzzy
-msgid "seconds."
-msgstr "÷¦Ä¦ÓÌÁÔÉ"
-
-#: calendar/gui/dialogs/delete-comp.c:70
-#, c-format
-msgid "Are you sure you want to delete the appointment `%s'?"
-msgstr "÷É ×ÐÅ×ÎÅΦ, ÝÏ ÈÏÞÅÔÅ ÓÔÅÒÔÉ ÚÕÓÔÒ¦Þ \"%s\"?"
-
-#: calendar/gui/dialogs/delete-comp.c:73
-msgid "Are you sure you want to delete this untitled appointment?"
-msgstr "÷É ×ÐÅ×ÎÅΦ, ÝÏ ÈÏÞÅÔÅ ÓÔÅÒÔÉ ÃÀ ÎÅÎÁÚ×ÁÎÕ ÚÕÓÔÒ¦Þ?"
-
-#: calendar/gui/dialogs/delete-comp.c:79
-#, c-format
-msgid "Are you sure you want to delete the task `%s'?"
-msgstr "÷É ×ÐÅ×ÎÅΦ, ÝÏ ÈÏÞÅÔÅ ÓÔÅÒÔÉ ÚÁ×ÄÁÎÎÑ \"%s\"?"
-
-#: calendar/gui/dialogs/delete-comp.c:82
-msgid "Are you sure you want to delete this untitled task?"
-msgstr "÷É ×ÐÅ×ÎÅΦ, ÝÏ ÈÏÞÅÔÅ ÓÔÅÒÔÉ ÃÅ ÎÅÎÁÚ×ÁÎÅ ÚÁ×ÄÁÎÎÑ?"
-
-#: calendar/gui/dialogs/delete-comp.c:88
-#, c-format
-msgid "Are you sure you want to delete the journal entry `%s'?"
-msgstr "÷É ×ÐÅ×ÎÅΦ, ÝÏ ÈÏÞÅÔÅ ÓÔÅÒÔÉ ÚÁÐÉÓ × ÖÕÒÎÁ̦ \"%s\"?"
-
-#: calendar/gui/dialogs/delete-comp.c:91
-msgid "Are you sure want to delete this untitled journal entry?"
-msgstr "÷É ×ÐÅ×ÎÅΦ, ÝÏ ÈÏÞÅÔÅ ÓÔÅÒÔÉ ÃÅÊ ÎÅÎÁÚ×ÁÎÉÊ ÚÁÐÉÓ × ÖÕÒÎÁ̦?"
-
-#: calendar/gui/dialogs/save-comp.c:51
-msgid "Do you want to save changes?"
-msgstr "÷É ÈÏÞÅÔÅ ÚͦÎÉÔÉ ÚͦÎÉ?"
-
-#: calendar/gui/dialogs/task-editor.c:707
-msgid "Edit Task"
-msgstr "÷ÉÐÒÁ×ÉÔÉ ÚÁ×ÄÁÎÎÑ"
-
-#: calendar/gui/dialogs/task-editor.c:713 calendar/gui/event-editor.c:382
-msgid "No summary"
-msgstr "îÅÍÁ¤ Ú×ÅÄÅÎÎÑ"
-
-#: calendar/gui/dialogs/task-editor.c:719 calendar/gui/event-editor.c:388
-#, c-format
-msgid "Appointment - %s"
-msgstr "úÕÓÔÒ¦Þ - %s"
-
-#: calendar/gui/dialogs/task-editor.c:722 calendar/gui/event-editor.c:391
-#, c-format
-msgid "Task - %s"
-msgstr "úÁ×ÄÁÎÎÑ - %s"
-
-#: calendar/gui/dialogs/task-editor.c:725 calendar/gui/event-editor.c:394
-#, c-format
-msgid "Journal entry - %s"
-msgstr "öÕÒÎÁÌØÎÉÊ ÚÁÐÉÓ - %s"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:2
-#, no-c-format
-msgid "% Comp_lete:"
-msgstr "% ÚÁ×ÅÒÛÅÎÎÑ:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:5
-#: calendar/gui/e-calendar-table.c:158
-#: calendar/gui/event-editor-dialog.glade.h:6
-msgid "Classification"
-msgstr "ëÌÁÓÉƦËÁæÑ"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:7
-#: calendar/gui/event-editor-dialog.glade.h:8
-msgid "Date & Time"
-msgstr "äÁÔÁ Ê ÞÁÓ"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:8
-msgid "Date Completed:"
-msgstr "äÁÔÁ ×ÉËÏÎÁÎÎÑ:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:15
-#: calendar/gui/event-editor-dialog.glade.h:16
-msgid "Pri_vate"
-msgstr "ïÓÏÂÉÓÔÅ"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:16
-msgid "Progress"
-msgstr "ðÏÓÔÕÐ"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:17
-#: calendar/gui/event-editor-dialog.glade.h:17
-msgid "Pu_blic"
-msgstr "ðÕÂ̦ÞÎÅ"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:18
-msgid "Sta_rt Date:"
-msgstr "þÁÓ ÐÏÞÁÔËÕ:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:19
-#: calendar/gui/event-editor-dialog.glade.h:27
-msgid "Su_mmary:"
-msgstr "ú×ÅÄÅÎÎÑ:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:20
-msgid "Task"
-msgstr "úÁ×ÄÁÎÎÑ"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:21
-msgid "URL:"
-msgstr "URL:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:23
-#: calendar/gui/event-editor-dialog.glade.h:28
-msgid "_Confidential"
-msgstr ""
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:24
-#: calendar/gui/event-editor-dialog.glade.h:29
-msgid "_Contacts..."
-msgstr "ëÏÎÔÁËÔÉ..."
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:25
-#, fuzzy
-msgid "_Due Date:"
-msgstr "÷¦ÄĦÌ:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:26
-msgid "_Priority:"
-msgstr "ðÒ¦ÏÒÉÔÅÔ:"
-
-#: calendar/gui/dialogs/task-editor-dialog.glade.h:27
-msgid "_Status:"
-msgstr "óÔÁÎ:"
-
-#: calendar/gui/e-calendar-table.c:157
-msgid "Categories"
-msgstr "ëÁÔÅÇÏÒ¦§"
-
-#: calendar/gui/e-calendar-table.c:159
-msgid "Completion Date"
-msgstr "äÁÔÁ ÚÁ×ÅÒÛÅÎÎÑ"
-
-#: calendar/gui/e-calendar-table.c:160
-msgid "End Date"
-msgstr "äÁÔÁ ˦ÎÃÑ"
-
-#: calendar/gui/e-calendar-table.c:161
-msgid "Start Date"
-msgstr "äÁÔÁ ÐÏÞÁÔËÕ"
-
-#: calendar/gui/e-calendar-table.c:163
-msgid "Geographical Position"
-msgstr "çÅÏÇÒÁƦÞÎÅ ÐÏÌÏÖÅÎÎÑ"
-
-#: calendar/gui/e-calendar-table.c:164
-msgid "Percent complete"
-msgstr "÷¦ÄÓÏÔÏË ×ÉËÏÎÁÎÎÑ"
-
-#: calendar/gui/e-calendar-table.c:166
-msgid "Summary"
-msgstr "ú×ÅÄÅÎÎÑ"
-
-#: calendar/gui/e-calendar-table.c:167
-msgid "Transparency"
-msgstr "ðÒÏÚÏÒ¦ÓÔØ"
-
-#: calendar/gui/e-calendar-table.c:168
-msgid "URL"
-msgstr "URL"
-
-#: calendar/gui/e-calendar-table.c:169
-msgid "Alarms"
-msgstr "óÉ­ÎÁÌÉ"
-
-#: calendar/gui/e-calendar-table.c:170
-msgid "Click here to add a task"
-msgstr "ëÌÁÃΦÔØ ÔÕÔ ÝÏ ÄÏÄÁÔÉ ÚÁ×ÄÁÎÎÑ"
-
-#: calendar/gui/e-calendar-table.c:374
-#, c-format
-msgid "0%"
-msgstr "0%"
-
-#: calendar/gui/e-calendar-table.c:375
-#, c-format
-msgid "10%"
-msgstr "10%"
-
-#: calendar/gui/e-calendar-table.c:376
-#, c-format
-msgid "20%"
-msgstr "20%"
-
-#: calendar/gui/e-calendar-table.c:377
-#, c-format
-msgid "30%"
-msgstr "30%"
-
-#: calendar/gui/e-calendar-table.c:378
-#, c-format
-msgid "40%"
-msgstr "40%"
-
-#: calendar/gui/e-calendar-table.c:379
-#, c-format
-msgid "50%"
-msgstr "50%"
-
-#: calendar/gui/e-calendar-table.c:380
-#, c-format
-msgid "60%"
-msgstr "60%"
-
-#: calendar/gui/e-calendar-table.c:381
-#, c-format
-msgid "70%"
-msgstr "70%"
-
-#: calendar/gui/e-calendar-table.c:382
-#, c-format
-msgid "80%"
-msgstr "80%"
-
-#: calendar/gui/e-calendar-table.c:383
-#, c-format
-msgid "90%"
-msgstr "90%"
-
-#: calendar/gui/e-calendar-table.c:384
-#, c-format
-msgid "100%"
-msgstr "100%"
-
-#: calendar/gui/e-calendar-table.c:551
-msgid "Mark Complete"
-msgstr "ðÏÚÎÁÞÉÔÉ ÑË ×ÉËÏÎÁÎÅ"
-
-#: calendar/gui/e-calendar-table.c:552
-msgid "Mark the task complete"
-msgstr "ðÏÚÎÁÞÉÔÉ ÚÁ×ÄÁÎÎÑ ÑË ×ÉËÏÎÁÎÅ"
-
-#: calendar/gui/e-calendar-table.c:557
-msgid "Edit this task..."
-msgstr "÷ÉÐÒÁ×ÉÔÉ ÃÅ ÚÁ×ÄÁÎÎÑ..."
-
-#: calendar/gui/e-calendar-table.c:558
-msgid "Edit the task"
-msgstr "÷ÉÐÒÁ×ÉÔÉ ÚÁ×ÄÁÎÎÑ"
-
-#: calendar/gui/e-calendar-table.c:560
-#: ui/evolution-task-editor-dialog.xml.h:19
-msgid "Delete this task"
-msgstr "óÔÅÒÔÉ ÃÅ ÚÁ×ÄÁÎÎÑ"
-
-#: calendar/gui/e-calendar-table.c:561
-msgid "Delete the task"
-msgstr "óÔÅÒÔÉ ÚÁ×ÄÁÎÎÑ"
-
-#. String to use in 12-hour time format for times in the morning.
-#: calendar/gui/e-day-view.c:570 calendar/gui/e-week-view.c:300
-#: calendar/gui/print.c:617
-msgid "am"
-msgstr "ÄÐ"
-
-#. String to use in 12-hour time format for times in the afternoon.
-#: calendar/gui/e-day-view.c:573 calendar/gui/e-week-view.c:303
-#: calendar/gui/print.c:616
-msgid "pm"
-msgstr "ÐÐ"
-
-#. strftime format %A = full weekday name, %d = day of month,
-#. %B = full month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:274 calendar/gui/e-day-view.c:1294
-#: calendar/gui/e-week-view-main-item.c:325
-msgid "%A %d %B"
-msgstr "%A %d %B"
-
-#. strftime format %a = abbreviated weekday name, %d = day of month,
-#. %b = abbreviated month name. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:278 calendar/gui/e-day-view.c:1308
-#: calendar/gui/e-week-view-main-item.c:334
-msgid "%a %d %b"
-msgstr "%a %d %b"
-
-#. strftime format %d = day of month, %b = abbreviated month name.
-#. Don't use any other specifiers.
-#: calendar/gui/e-day-view-top-item.c:282 calendar/gui/e-day-view.c:1321
-#: calendar/gui/e-week-view-main-item.c:348
-msgid "%d %b"
-msgstr "%d %b"
-
-#: calendar/gui/e-day-view.c:3146 ui/evolution-calendar.xml.h:16
-msgid "New Appointment"
-msgstr "îÏ×Á ÚÕÓÔÒ¦Þ"
-
-#: calendar/gui/e-day-view.c:3148 calendar/gui/e-week-view.c:3280
-msgid "New All Day Event"
-msgstr "îÏ×Á ÝÏÄÅÎÎÁ ÐÏĦÑ"
-
-#: calendar/gui/e-day-view.c:3153 calendar/gui/e-week-view.c:3285
-#, fuzzy
-msgid "Go to Today"
-msgstr "ÓØÏÇÏÄΦ"
-
-#: calendar/gui/e-day-view.c:3155 calendar/gui/e-week-view.c:3287
-#, fuzzy
-msgid "Go to Date..."
-msgstr "ë¦ÎÃÅ×Á ÄÁÔÁ"
-
-#: calendar/gui/e-day-view.c:3162 calendar/gui/e-week-view.c:3293
-#: ui/evolution-calendar.xml.h:19 ui/evolution-message-composer.xml.h:10
-msgid "Open"
-msgstr "÷¦ÄËÒÉÔÉ"
-
-#: calendar/gui/e-day-view.c:3164 calendar/gui/e-week-view.c:3295
-msgid "Delete this Appointment"
-msgstr "óÔÅÒÔÉ ÃÀ ÚÕÓÔÒ¦Þ"
-
-#: calendar/gui/e-day-view.c:3166 calendar/gui/e-week-view.c:3297
-#: ui/evolution-event-editor.xml.h:45
-msgid "Schedule Meeting"
-msgstr "ðÌÁÎÕ×ÁÎÎÑ ÚÕÓÔÒ¦Þ¦"
-
-#: calendar/gui/e-day-view.c:3175 calendar/gui/e-week-view.c:3310
-#, fuzzy
-msgid "Make this Occurrence Movable"
-msgstr "úÂÅÒÅÇÔÉ ÐÏÔÏÞÎÉÊ ÆÁÊÌ"
-
-#: calendar/gui/e-day-view.c:3177 calendar/gui/e-week-view.c:3312
-#, fuzzy
-msgid "Delete this Occurrence"
-msgstr "óÔÅÒÔÉ ÃÅÊ ÅÌÅÍÅÎÔ"
-
-#: calendar/gui/e-day-view.c:3179
-#, fuzzy
-msgid "Delete all Occurrences"
-msgstr "óÔÅÒÔÉ ËÏÎÔÁËÔ"
-
-#: calendar/gui/e-day-view-time-item.c:519
-#, c-format
-msgid "%02i minute divisions"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:161
-msgid "I couldn't update your calendar file!\n"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÐÏÎÏ×ÉÔÉ ×ÁÛ ËÁÌÅÎÄÁÒÎÉÊ ÆÁÊÌ!\n"
-
-#: calendar/gui/e-itip-control.c:167 calendar/gui/e-itip-control.c:510
-#, fuzzy
-msgid "Component successfully updated."
-msgstr "æÁÊÌÉ Evolution ÕÓЦÛÎÏ ×ÓÔÁÎÏ×ÌÅÎÏ."
-
-#: calendar/gui/e-itip-control.c:173
-msgid "There was an error loading the calendar file."
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:197
-msgid "I couldn't open your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:458 calendar/gui/e-itip-control.c:529
-msgid "I couldn't load your calendar file!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:470
-#, fuzzy
-msgid "I couldn't read your calendar file!\n"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÓÔ×ÏÒÉÔÉ ËÁÌÅÎÄÁÒ × \"%s\""
-
-#: calendar/gui/e-itip-control.c:483
-msgid "This is a reply from someone who was uninvited!"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:499
-#, fuzzy
-msgid "I couldn't update your calendar store."
-msgstr "îÅ ×ÄÁÌÏÓÑ ÓÔ×ÏÒÉÔÉ ËÁÌÅÎÄÁÒ × \"%s\""
-
-#: calendar/gui/e-itip-control.c:540
-msgid "I couldn't delete the calendar component!\n"
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:550
-#, fuzzy
-msgid "Component successfully deleted."
-msgstr "æÁÊÌÉ Evolution ÕÓЦÛÎÏ ×ÓÔÁÎÏ×ÌÅÎÏ."
-
-#: calendar/gui/e-itip-control.c:694
-#, fuzzy
-msgid "I don't recognize this type of calendar component."
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÐÏÛÔÏ×ÉÊ ËÏÍÐÏÎÅÎÔ Evolutuion."
-
-#: calendar/gui/e-itip-control.c:780
-msgid "Add to Calendar"
-msgstr "äÏÄÁÔÉ ÄÏ ËÁÌÅÎÄÁÒÑ"
-
-#: calendar/gui/e-itip-control.c:814
-msgid " Accept "
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:815
-msgid " Decline "
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:816
-msgid " Tentative "
-msgstr ""
-
-#: calendar/gui/e-itip-control.c:860
-msgid "Update Calendar"
-msgstr "ðÏÎÏ×ÉÔÉ ËÁÌÅÎÄÁÒ"
-
-#: calendar/gui/e-itip-control.c:883
-msgid "Cancel Meeting"
-msgstr "óËÁÓÕ×ÁÔÉ ÚÕÓÔÒ¦Þ"
-
-#: calendar/gui/e-itip-control.glade.h:2
-#, fuzzy, no-c-format
-msgid "%P %%"
-msgstr "%A %d %B"
-
-#: calendar/gui/e-itip-control.glade.h:3
-msgid "--to--"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:4
-msgid "Calendar Message"
-msgstr "ëÁÌÅÎÄÁÒÎÅ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: calendar/gui/e-itip-control.glade.h:5 mail/mail-format.c:623
-msgid "Date:"
-msgstr "äÁÔÁ:"
-
-#: calendar/gui/e-itip-control.glade.h:8
-msgid "Loading calendar..."
-msgstr "úÁ×ÁÎÔÁÖÅÎÎÑ ËÁÌÅÎÄÁÒÑ..."
-
-#: calendar/gui/e-itip-control.glade.h:9
-msgid "Organizer:"
-msgstr "ïÒÇÁΦÚÁÔÏÒ:"
-
-#: calendar/gui/e-itip-control.glade.h:10
-msgid "Server Message:"
-msgstr "óÅÒ×ÅÒÎÅ ÐÏצÄÏÍÌÅÎÎÑ:"
-
-#: calendar/gui/e-itip-control.glade.h:11
-msgid "Summary:"
-msgstr "ú×ÅÄÅÎÎÑ:"
-
-#: calendar/gui/e-itip-control.glade.h:12
-msgid "date-end"
-msgstr ""
-
-#: calendar/gui/e-itip-control.glade.h:13
-msgid "date-start"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:2
-#, fuzzy
-msgid "Attendee"
-msgstr "÷ÅÓØ ÓÕÐÒÏצÄ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:3
-#, fuzzy
-msgid "Attendee address"
-msgstr "÷ÅÓØ ÓÕÐÒÏצÄ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:4
-#, fuzzy
-msgid "Attendees: "
-msgstr "÷ÅÓØ ÓÕÐÒÏצÄ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:5
-msgid ""
-"Cancel\n"
-"Meeting"
-msgstr ""
-"óËÁÓÕ×ÁÔÉ\n"
-"ÚÕÓÔÒ¦Þ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:7
-#, fuzzy
-msgid "Chair"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:10
-#, fuzzy
-msgid "Meeting Invitations"
-msgstr "þÁÓ ÐÏÞÁÔËÕ Ú¦ÂÒÁÎÎÑ:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:11
-msgid "Non-Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:12
-msgid "Optional Participant"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:13
-#, fuzzy
-msgid "Organizer: "
-msgstr "ïÒ¦¤ÎÔÁæÑ:"
-
-#: calendar/gui/e-meeting-dialog.glade.h:15
-msgid ""
-"Publish\n"
-"Event"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:17
-msgid "RSVP"
-msgstr ""
-
-#: calendar/gui/e-meeting-dialog.glade.h:18
-#, fuzzy
-msgid ""
-"Request\n"
-"Meeting"
-msgstr "ðÌÁÎÕ×ÁÎÎÑ ÚÕÓÔÒ¦Þ¦"
-
-#: calendar/gui/e-meeting-dialog.glade.h:20
-#, fuzzy
-msgid "Required Participant"
-msgstr "ðÏÔÒ¦ÂΦ ÌÀÄÉ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:21
-#, fuzzy
-msgid "Role"
-msgstr "íϦÌØÎÉÊ"
-
-#: calendar/gui/e-meeting-dialog.glade.h:22
-#, fuzzy
-msgid ""
-"Schedule\n"
-"Time"
-msgstr "ðÌÁÎÕ×ÁÎÎÑ ÚÕÓÔÒ¦Þ¦"
-
-#: calendar/gui/e-meeting-dialog.glade.h:24 filter/libfilter-i18n.h:49
-#: mail/message-list.c:1082
-msgid "Status"
-msgstr "óÔÁÎ"
-
-#: calendar/gui/e-tasks.c:149 calendar/gui/e-tasks.c:469
-#: calendar/gui/e-tasks.c:502
-msgid "All"
-msgstr ""
-
-#: calendar/gui/e-tasks.c:155
-msgid "Category:"
-msgstr "ëÁÔÅÇÏÒ¦Ñ:"
-
-#: calendar/gui/e-tasks.c:298
-#, fuzzy, c-format
-msgid "Could not load the tasks in `%s'"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÚÁ×ÁÎÔÁÖÉÔÉ ËÁÌÅÎÄÁÒ × \"%s\""
-
-#: calendar/gui/e-tasks.c:310
-#, c-format
-msgid "The method required to load `%s' is not supported"
-msgstr "íÅÔÏÄ, ÎÅÏÂȦÄÎÉÊ ÄÌÑ ÚÁ×ÁÎÔÁÖÅÎÎÑ \"%s\", ΊЦÄÔÒÉÍÕ¤ÔØÓÑ"
-
-#: calendar/gui/event-editor.c:376
-msgid "Edit Appointment"
-msgstr "÷ÉÐÒÁ×ÉÔÉ ÚÕÓÔÒ¦Þ"
-
-#: calendar/gui/event-editor.c:454
-#, fuzzy
-msgid "on"
-msgstr "ðÎÄ"
-
-#: calendar/gui/event-editor.c:479 filter/filter-datespec.c:81
-msgid "day"
-msgstr "ÄÅÎØ"
-
-#: calendar/gui/event-editor.c:606
-#, fuzzy
-msgid "on the"
-msgstr "ͦÓÑÃØ"
-
-#: calendar/gui/event-editor.c:613
-msgid "th"
-msgstr " "
-
-#: calendar/gui/event-editor.c:759
-#, fuzzy
-msgid "occurrences"
-msgstr "äÖÅÒÅÌÁ"
-
-#: calendar/gui/event-editor.c:876
-msgid "This appointment contains recurrences that Evolution cannot edit."
-msgstr ""
-
-#: calendar/gui/event-editor.c:1548
-#, fuzzy, c-format
-msgid " %d days"
-msgstr "ô¦ÌÏ"
-
-#: calendar/gui/event-editor.c:1550
-msgid " 1 day"
-msgstr " 1 ÄÅÎØ"
-
-#: calendar/gui/event-editor.c:1553
-#, fuzzy, c-format
-msgid " %d weeks"
-msgstr "ôÉÖÄÅÎØ"
-
-#: calendar/gui/event-editor.c:1555
-#, fuzzy
-msgid " 1 week"
-msgstr "ðÏËÁÚÁÔÉ 1 ÔÉÖÄÅÎØ"
-
-#: calendar/gui/event-editor.c:1558
-#, fuzzy, c-format
-msgid " %d hours"
-msgstr "24 ÇÏÄÉÎÉ"
-
-#: calendar/gui/event-editor.c:1560
-msgid " 1 hour"
-msgstr " 1 ÇÏÄÉÎÁ"
-
-#: calendar/gui/event-editor.c:1563
-#, c-format
-msgid " %d minutes"
-msgstr " %d È×ÉÌÉÎ"
-
-#: calendar/gui/event-editor.c:1565
-#, fuzzy
-msgid " 1 minute"
-msgstr "10 È×ÉÌÉÎ"
-
-#: calendar/gui/event-editor.c:1568
-#, fuzzy, c-format
-msgid " %d seconds"
-msgstr "÷¦Ä¦ÓÌÁÔÉ"
-
-#: calendar/gui/event-editor.c:1570
-msgid " 1 second"
-msgstr " 1 ÓÅËÕÎÄÁ"
-
-#: calendar/gui/event-editor-dialog.glade.h:14
-#: calendar/gui/event-editor.c:1593
-msgid "Play a sound"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:25
-#: calendar/gui/event-editor.c:1596
-msgid "Show a dialog"
-msgstr "ðÏËÁÚÁÔÉ Ä¦ÁÌÏÇ"
-
-#: calendar/gui/event-editor-dialog.glade.h:23
-#: calendar/gui/event-editor.c:1599
-msgid "Send an email"
-msgstr "÷¦Ä¦ÓÌÁÔÉ ÐÏÛÔÕ"
-
-#: calendar/gui/event-editor-dialog.glade.h:22
-#: calendar/gui/event-editor.c:1602
-msgid "Run a program"
-msgstr "úÁÐÕÓÔÉÔÉ ÐÒÏÇÒÁÍÕ"
-
-#: calendar/gui/event-editor.c:1617
-msgid " before start of appointment"
-msgstr " ÐÅÒÅÄ ÐÏÞÁÔËÏÍ ÚÕÓÔÒ¦Þ¦"
-
-#: calendar/gui/event-editor.c:1619
-msgid " after start of appointment"
-msgstr " ЦÓÌÑ ÐÏÞÁÔËÕ ÚÕÓÔÒ¦Þ¦"
-
-#: calendar/gui/event-editor.c:1627
-msgid " before end of appointment"
-msgstr " ÐÅÒÅÄ Ë¦ÎÃÅÍ ÚÕÓÔÒ¦Þ¦"
-
-#: calendar/gui/event-editor.c:1629
-msgid " after end of appointment"
-msgstr " ЦÓÌÑ Ë¦ÎÃÑ ÚÕÓÔÒ¦Þ¦"
-
-#: calendar/gui/event-editor.c:3137 calendar/gui/print.c:1097
-#: calendar/gui/print.c:1099 calendar/gui/print.c:1100
-msgid "%a %b %d %Y"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:1
-msgid "A_ll day event"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:3
-msgid "Appointment"
-msgstr "úÕÓÔÒ¦Þ"
-
-#: calendar/gui/event-editor-dialog.glade.h:4
-msgid "Appointment Basics"
-msgstr "ð¦ÄÓÔÁ×É ÚÕÓÔÒ¦Þ¦"
-
-#: calendar/gui/event-editor-dialog.glade.h:7
-#, fuzzy
-msgid "Custom recurrence"
-msgstr "âÅÚ ÐÏ×ÔÏÒÅÎÎÑ"
-
-#: calendar/gui/event-editor-dialog.glade.h:10
-msgid "Every"
-msgstr "ëÏÖÅÎ"
-
-#: calendar/gui/event-editor-dialog.glade.h:11
-msgid "Exceptions"
-msgstr "÷ÉËÌÀÞÅÎÎÑ"
-
-#: calendar/gui/event-editor-dialog.glade.h:12
-msgid "Modify"
-msgstr "úͦÎÉÔÉ"
-
-#: calendar/gui/event-editor-dialog.glade.h:13
-msgid "No recurrence"
-msgstr "âÅÚ ÐÏ×ÔÏÒÅÎÎÑ"
-
-#: calendar/gui/event-editor-dialog.glade.h:15
-msgid "Preview"
-msgstr "ðÅÒÅÇÌÑÄ"
-
-#: calendar/gui/event-editor-dialog.glade.h:18
-msgid "Recurrence"
-msgstr "ðÏ×ÔÏÒÅÎÎÑ"
-
-#: calendar/gui/event-editor-dialog.glade.h:19
-msgid "Recurrence Rule"
-msgstr "ðÒÁ×ÉÌÏ ÐÏ×ÔÏÒÅÎÎÑ"
-
-#: calendar/gui/event-editor-dialog.glade.h:20
-msgid "Reminder"
-msgstr "îÁÇÁÄÕ×ÁÎÎÑ"
-
-#: calendar/gui/event-editor-dialog.glade.h:24 ui/evolution-calendar.xml.h:29
-msgid "Settings..."
-msgstr "õÓÔÁÎÏ×ËÉ..."
-
-#: calendar/gui/event-editor-dialog.glade.h:26
-msgid "Simple recurrence"
-msgstr "ðÒÏÓÔÅ ÐÏ×ÔÏÒÅÎÎÑ"
-
-#: calendar/gui/event-editor-dialog.glade.h:30
-msgid "_End time:"
-msgstr "þÁÓ ÚÁ×ÅÒÛÅÎÎÑ:"
-
-#: calendar/gui/event-editor-dialog.glade.h:31
-msgid "_Start time:"
-msgstr "äÁÔÁ ÐÏÞÁÔËÕ:"
-
-#: calendar/gui/event-editor-dialog.glade.h:32
-msgid "_Starting date:"
-msgstr "äÁÔÁ ÐÏÞÁÔËÕ:"
-
-#. Automatically generated. Do not edit.
-#: calendar/gui/event-editor-dialog.glade.h:33 filter/libfilter-i18n.h:2
-msgid "after"
-msgstr "ЦÓÌÑ"
-
-#: calendar/gui/event-editor-dialog.glade.h:34 filter/libfilter-i18n.h:6
-msgid "before"
-msgstr "ÐÅÒÅÄ"
-
-#: calendar/gui/event-editor-dialog.glade.h:35
-#, fuzzy
-msgid "day(s)"
-msgstr "ô¦ÌÏ"
-
-#: calendar/gui/event-editor-dialog.glade.h:36
-msgid "end of appointment"
-msgstr "˦ÎÅÃØ ÚÕÓÔÒ¦Þ¦"
-
-#: calendar/gui/event-editor-dialog.glade.h:37
-msgid "for"
-msgstr "×"
-
-#: calendar/gui/event-editor-dialog.glade.h:38
-msgid "forever"
-msgstr "ÚÁ×ÖÄÉ"
-
-#: calendar/gui/event-editor-dialog.glade.h:39
-#, fuzzy
-msgid "hour(s)"
-msgstr "ÇÏÄÉÎÁ"
-
-#: calendar/gui/event-editor-dialog.glade.h:40
-msgid "label21"
-msgstr "label26"
-
-#: calendar/gui/event-editor-dialog.glade.h:41
-msgid "label55"
-msgstr "label26"
-
-#: calendar/gui/event-editor-dialog.glade.h:42 mail/mail-config.glade.h:77
-#, fuzzy
-msgid "minute(s)"
-msgstr "È×ÉÌÉÎÁ"
-
-#: calendar/gui/event-editor-dialog.glade.h:43
-msgid "month(s)"
-msgstr "ͦÓÑÃØ"
-
-#: calendar/gui/event-editor-dialog.glade.h:44
-msgid "start of appointment"
-msgstr "ÐÏÞÁÔÏË ÚÕÓÔÒ¦Þ¦"
-
-#: calendar/gui/event-editor-dialog.glade.h:45
-msgid "until"
-msgstr ""
-
-#: calendar/gui/event-editor-dialog.glade.h:46
-#, fuzzy
-msgid "week(s)"
-msgstr "ôÉÖÄÅÎØ"
-
-#: calendar/gui/event-editor-dialog.glade.h:47
-msgid "year(s)"
-msgstr "Ò¦Ë"
-
-#: calendar/gui/e-week-view.c:3278 calendar/gui/e-week-view.c:3301
-msgid "New Appointment..."
-msgstr "îÏ×Á ÚÕÓÔÒ¦Þ..."
-
-#: calendar/gui/e-week-view.c:3314
-#, fuzzy
-msgid "Delete All Occurrences"
-msgstr "äÖÅÒÅÌÁ"
-
-#. strftime format %d = day of month, %B = full
-#. month name. You can change the order but don't
-#. change the specifiers or add anything.
-#: calendar/gui/e-week-view-main-item.c:342
-msgid "%d %B"
-msgstr "%d %B"
-
-#: calendar/gui/gnome-cal.c:223
-msgid "Show all "
-msgstr "ðÏËÁÚÁÔÉ ×ÓÅ "
-
-#: calendar/gui/gnome-cal.c:237
-msgid "Summary contains"
-msgstr "ú×ÅÄÅÎÎÑ Í¦ÓÔÉÔØ"
-
-#: calendar/gui/gnome-cal.c:238
-msgid "Description contains"
-msgstr "ïÐÉÓ Í¦ÓÔÉÔØ"
-
-#: calendar/gui/gnome-cal.c:239
-msgid "Comment contains"
-msgstr "ëÏÍÅÎÔÁÒ Í¦ÓÔÉÔØ"
-
-#: calendar/gui/gnome-cal.c:240
-#, fuzzy
-msgid "Has category"
-msgstr ""
-"\n"
-"ëÁÔÅÇÏÒ¦§: "
-
-#: calendar/gui/gnome-cal.c:843
-#, fuzzy, c-format
-msgid "Could not open the folder in `%s'"
-msgstr ""
-"îÅ ×ÄÁÌÏÓÑ ×¦ÄËÒÉÔÉ ÔÅËÕ \"%s\":\n"
-"%s"
-
-#: calendar/gui/gnome-cal.c:854
-#, fuzzy, c-format
-msgid "The method required to open `%s' is not supported"
-msgstr "íÅÔÏÄ, ÎÅÏÂȦÄÎÉÊ ÄÌÑ ÚÁ×ÁÎÔÁÖÅÎÎÑ \"%s\", ΊЦÄÔÒÉÍÕ¤ÔØÓÑ"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:1
-msgid "A sample Bonobo control which displays an calendar."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:2
-#, fuzzy
-msgid "Evolution calendar executive summary component."
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÐÏÛÔÏ×ÉÊ ËÏÍÐÏÎÅÎÔ Evolutuion."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:3
-#, fuzzy
-msgid "Evolution calendar iTip/iMip viewer"
-msgstr "ëÁÎÁÌ ËÁÌÅÎÄÁÒÑ Evolution"
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:4
-msgid "Evolution component for handling the calendar."
-msgstr ""
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:5
-#, fuzzy
-msgid "Factory for the Calendar Summary component."
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÐÏÛÔÏ×ÉÊ ËÏÍÐÏÎÅÎÔ Evolutuion."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:6
-#, fuzzy
-msgid "Factory for the Evolution calendar component."
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÐÏÛÔÏ×ÉÊ ËÏÍÐÏÎÅÎÔ Evolutuion."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:7
-#, fuzzy
-msgid "Factory for the calendar iTip view control"
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÐÏÛÔÏ×ÉÊ ËÏÍÐÏÎÅÎÔ Evolutuion."
-
-#: calendar/gui/GNOME_Evolution_Calendar.oaf.in.h:8
-#, fuzzy
-msgid "Factory for the sample Calendar control"
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÐÏÛÔÏ×ÉÊ ËÏÍÐÏÎÅÎÔ Evolutuion."
-
-#: calendar/gui/goto-dialog.glade.h:1
-msgid "April"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:2
-msgid "August"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:3
-msgid "December"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:4
-msgid "February"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:5
-#, fuzzy
-msgid "Go To Date"
-msgstr "ë¦ÎÃÅ×Á ÄÁÔÁ"
-
-#: calendar/gui/goto-dialog.glade.h:6
-#, fuzzy
-msgid "Go To Today"
-msgstr "ÓØÏÇÏÄΦ"
-
-#: calendar/gui/goto-dialog.glade.h:7
-msgid "January"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:8
-msgid "July"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:9
-msgid "June"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:10
-#, fuzzy
-msgid "March"
-msgstr "ðÏÛÕË"
-
-#: calendar/gui/goto-dialog.glade.h:11
-#, fuzzy
-msgid "May"
-msgstr "ðÏÎÅĦÌÏË"
-
-#: calendar/gui/goto-dialog.glade.h:12
-msgid "November"
-msgstr ""
-
-#: calendar/gui/goto-dialog.glade.h:13
-#, fuzzy
-msgid "October"
-msgstr "¶ÎÛÁ"
-
-#: calendar/gui/goto-dialog.glade.h:14
-msgid "September"
-msgstr ""
-
-#: calendar/gui/print.c:300
-msgid "1st"
-msgstr "1."
-
-#: calendar/gui/print.c:300
-msgid "2nd"
-msgstr "2."
-
-#: calendar/gui/print.c:300
-msgid "3rd"
-msgstr "3."
-
-#: calendar/gui/print.c:300
-msgid "4th"
-msgstr "4."
-
-#: calendar/gui/print.c:300
-msgid "5th"
-msgstr "5."
-
-#: calendar/gui/print.c:301
-msgid "6th"
-msgstr "6."
-
-#: calendar/gui/print.c:301
-msgid "7th"
-msgstr "7."
-
-#: calendar/gui/print.c:301
-msgid "8th"
-msgstr "8."
-
-#: calendar/gui/print.c:301
-msgid "9th"
-msgstr "9."
-
-#: calendar/gui/print.c:301
-msgid "10th"
-msgstr "10."
-
-#: calendar/gui/print.c:302
-msgid "11th"
-msgstr "11."
-
-#: calendar/gui/print.c:302
-msgid "12th"
-msgstr "12."
-
-#: calendar/gui/print.c:302
-msgid "13th"
-msgstr "13."
-
-#: calendar/gui/print.c:302
-msgid "14th"
-msgstr "14."
-
-#: calendar/gui/print.c:302
-msgid "15th"
-msgstr "15."
-
-#: calendar/gui/print.c:303
-msgid "16th"
-msgstr "16."
-
-#: calendar/gui/print.c:303
-msgid "17th"
-msgstr "17."
-
-#: calendar/gui/print.c:303
-msgid "18th"
-msgstr "18."
-
-#: calendar/gui/print.c:303
-msgid "19th"
-msgstr "19."
-
-#: calendar/gui/print.c:303
-msgid "20th"
-msgstr "20."
-
-#: calendar/gui/print.c:304
-msgid "21st"
-msgstr "21."
-
-#: calendar/gui/print.c:304
-msgid "22nd"
-msgstr "22."
-
-#: calendar/gui/print.c:304
-msgid "23rd"
-msgstr "23."
-
-#: calendar/gui/print.c:304
-msgid "24th"
-msgstr "24."
-
-#: calendar/gui/print.c:304
-msgid "25th"
-msgstr "25."
-
-#: calendar/gui/print.c:305
-msgid "26th"
-msgstr "26."
-
-#: calendar/gui/print.c:305
-msgid "27th"
-msgstr "27."
-
-#: calendar/gui/print.c:305
-msgid "28th"
-msgstr "28."
-
-#: calendar/gui/print.c:305
-msgid "29th"
-msgstr "29."
-
-#: calendar/gui/print.c:305
-msgid "30th"
-msgstr "30."
-
-#: calendar/gui/print.c:306
-msgid "31st"
-msgstr "31."
-
-#: calendar/gui/print.c:362
-msgid "Su"
-msgstr "îÄÌ"
-
-#: calendar/gui/print.c:362
-msgid "Mo"
-msgstr "ðÎÄ"
-
-#: calendar/gui/print.c:362
-msgid "Tu"
-msgstr "÷ÔÒ"
-
-#: calendar/gui/print.c:362
-msgid "We"
-msgstr "óÒÄ"
-
-#: calendar/gui/print.c:362
-msgid "Th"
-msgstr "þÔ×"
-
-#: calendar/gui/print.c:362
-msgid "Fr"
-msgstr "ðÔÎ"
-
-#: calendar/gui/print.c:362
-msgid "Sa"
-msgstr "óÂÔ"
-
-#. Day
-#: calendar/gui/print.c:1078
-msgid "Current day (%a %b %d %Y)"
-msgstr "ðÏÔÏÞÎÉÊ ÄÅÎØ (%a %b %d %Y)"
-
-#: calendar/gui/print.c:1092 calendar/gui/print.c:1096
-msgid "%a %b %d"
-msgstr "%a %b %d"
-
-#: calendar/gui/print.c:1093
-msgid "%a %d %Y"
-msgstr "%a %d %Y"
-
-#: calendar/gui/print.c:1104
-#, c-format
-msgid "Current week (%s - %s)"
-msgstr "ðÏÔÏÞÎÉÊ ÔÉÖÄÅÎØ (%s - %s)"
-
-#. Month
-#: calendar/gui/print.c:1112
-msgid "Current month (%b %Y)"
-msgstr "ðÏÔÏÞÎÉÊ Í¦ÓÑÃØ (%b %Y)"
-
-#. Year
-#: calendar/gui/print.c:1119
-msgid "Current year (%Y)"
-msgstr "ðÏÔÏÞÎÉÊ Ò¦Ë (%Y)"
-
-#: calendar/gui/print.c:1156
-msgid "Print Calendar"
-msgstr "îÁÄÒÕËÕ×ÁÔÉ ËÁÌÅÎÄÁÒ"
-
-#: calendar/gui/print.c:1321 mail/mail-callbacks.c:1524
-#: ui/evolution-addressbook.xml.h:10 ui/evolution-calendar.xml.h:24
-#: ui/evolution-mail.xml.h:57
-msgid "Print Preview"
-msgstr "ðÅÒÅÇÌÑÄ ÄÒÕËÕ"
-
-#: calendar/gui/tasks-control.c:108
-#, fuzzy
-msgid "The URI of the tasks folder to display"
-msgstr "URI, ÑËÉÊ ×¦ÄÏÂÒÁÚÉÔØ ËÁÌÅÎÄÁÒ"
-
-#: calendar/gui/tasks-migrate.c:106
-msgid ""
-"Evolution has taken the tasks that were in your calendar folder and "
-"automatically migrated them to the new tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:109
-msgid ""
-"Evolution has tried to take the tasks that were in your calendar folder and "
-"migrate them to the new tasks folder.\n"
-"Some of the tasks could not be migrated, so this process may be attempted "
-"again in the future."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:121
-#, c-format
-msgid ""
-"Could not open `%s'; no items from the calendar folder will be migrated to "
-"the tasks folder."
-msgstr ""
-
-#: calendar/gui/tasks-migrate.c:134
-#, c-format
-msgid ""
-"The method required to load `%s' is not supported; no items from the "
-"calendar folder will be migrated to the tasks folder."
-msgstr ""
-
-#: calendar/gui/weekday-picker.c:315 calendar/gui/weekday-picker.c:410
-msgid "SMTWTFS"
-msgstr "îð÷óþðó"
-
-#: camel/camel-cipher-context.c:169
-msgid "Signing is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-cipher-context.c:209
-msgid "Clearsigning is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-cipher-context.c:249
-msgid "Verifying is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-cipher-context.c:292
-msgid "Encryption is not supported by this cipher"
-msgstr ""
-
-#: camel/camel-cipher-context.c:334
-#, fuzzy
-msgid "Decryption is not supported by this cipher"
-msgstr "ïÐÅÒÁÃ¦Ñ ÎŠЦÄÔÒÉÍÕ¤ÔØÓÑ"
-
-#: camel/camel-filter-driver.c:534 camel/camel-filter-driver.c:543
-#, fuzzy
-msgid "Syncing folders"
-msgstr "óÉÎÈÒÏΦÚÁÃ¦Ñ \"%s\""
-
-#: camel/camel-filter-driver.c:643
-#, fuzzy
-msgid "Unable to open spool folder"
-msgstr "îÅ ×ÄÁÌÏÓÑ ×¦ÄËÒÉÔÉ ÁÄÒÅÓÎÕ ËÎÉÇÕ"
-
-#: camel/camel-filter-driver.c:652
-#, fuzzy
-msgid "Unable to process spool folder"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÚÂÅÒÅÇÔÉ ÓÐÉÓÏË ÇÒÕÐ ÄÌÑ %s: %s"
-
-#: camel/camel-filter-driver.c:666
-#, fuzzy
-msgid "Getting message %d (%d%%)"
-msgstr "úÁÐÉÓ ÐÏצÄÏÍÌÅÎÎÑ %d Ú %d"
-
-#: camel/camel-filter-driver.c:670 camel/camel-filter-driver.c:679
-#, fuzzy, c-format
-msgid "Failed message %d"
-msgstr "ðÅÒÅÓÌÁÎÅ ÐÏצÄÏÍÌÅÎÎÑ %s"
-
-#: camel/camel-filter-driver.c:671
-#, fuzzy
-msgid "Cannot open message"
-msgstr ""
-"îÅÍÏÖÌÉ×Ï ÏÔÒÉÍÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ: %s\n"
-" %s"
-
-#: camel/camel-filter-driver.c:690 camel/camel-filter-driver.c:788
-#, fuzzy
-msgid "Syncing folder"
-msgstr "óÉÎÈÒÏΦÚÁÃ¦Ñ \"%s\""
-
-#: camel/camel-filter-driver.c:694 camel/camel-filter-driver.c:793
-#, fuzzy
-msgid "Complete"
-msgstr "% ÚÁ×ÅÒÛÅÎÎÑ:"
-
-#: camel/camel-filter-driver.c:748
-#, fuzzy, c-format
-msgid "Getting message %d of %d"
-msgstr "úÁÐÉÓ ÐÏצÄÏÍÌÅÎÎÑ %d Ú %d"
-
-#: camel/camel-filter-driver.c:753 camel/camel-filter-driver.c:771
-#, fuzzy, c-format
-msgid "Failed at message %d of %d"
-msgstr "úÁÐÉÓ ÐÏצÄÏÍÌÅÎÎÑ %d Ú %d"
-
-#: camel/camel-filter-driver.c:866
-#, fuzzy, c-format
-msgid "Error parsing filter: %s: %s"
-msgstr "ðÏÍÉÌËÁ ÚÂÅÒÅÖÅÎÎÑ ÆÁÊÌÕ: %s"
-
-#: camel/camel-filter-driver.c:871
-#, fuzzy, c-format
-msgid "Error executing filter: %s: %s"
-msgstr "ðÏÍÉÌËÁ ÚÂÅÒÅÖÅÎÎÑ ÆÁÊÌÕ: %s"
-
-#: camel/camel-filter-search.c:439 camel/camel-filter-search.c:445
-#, fuzzy, c-format
-msgid "Error executing filter search: %s: %s"
-msgstr "ðÏÍÉÌËÁ ÚÂÅÒÅÖÅÎÎÑ ÆÁÊÌÕ: %s"
-
-#: camel/camel-folder-search.c:328
-#, fuzzy, c-format
-msgid ""
-"Cannot parse search expression: %s:\n"
-"%s"
-msgstr ""
-"ðÏÍÉÌËÁ Õ ÒÅ­ÕÌÑÒÎÏÍÕ ×ÉÒÁÚ¦ \"%s\":\n"
-"%s"
-
-#: camel/camel-folder-search.c:338
-#, fuzzy, c-format
-msgid ""
-"Error executing search expression: %s:\n"
-"%s"
-msgstr ""
-"ðÏÍÉÌËÁ Õ ÒÅ­ÕÌÑÒÎÏÍÕ ×ÉÒÁÚ¦ \"%s\":\n"
-"%s"
-
-#: camel/camel-folder-search.c:485 camel/camel-folder-search.c:513
-msgid "(match-all) requires a single bool result"
-msgstr ""
-
-#: camel/camel-folder-search.c:559
-#, c-format
-msgid "Performing query on unknown header: %s"
-msgstr ""
-
-#: camel/camel-folder-search.c:670 camel/camel-folder-search.c:714
-msgid "Invalid type in body-contains, expecting string"
-msgstr ""
-
-#. well, this is really only a programatic error
-#: camel/camel-lock.c:92 camel/camel-lock.c:111 camel/camel-movemail.c:138
-#: camel/camel-movemail.c:185
-#, c-format
-msgid "Could not create lock file for %s: %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÓÔ×ÏÒÉÔÉ ÆÁÊÌ ÂÌÏËÕ×ÁÎÎÑ ÄÌÑ %s: %s"
-
-#: camel/camel-lock.c:151 camel/camel-movemail.c:219
-#, c-format
-msgid "Timed out trying to get lock file on %s. Try again later."
-msgstr ""
-
-#: camel/camel-lock.c:201
-#, c-format
-msgid "Failed to get lock using fcntl(2): %s"
-msgstr "îÅ ×ÄÁÌÏÓØ ÚÒÏÂÉÔÉ ÂÌÏËÕ×ÁÎÎÑ ÚÁ ÄÏÐÏÍÏÇÏÀ fcntl(2): %s"
-
-#: camel/camel-lock.c:255
-#, c-format
-msgid "Failed to get lock using flock(2): %s"
-msgstr "îÅ ×ÄÁÌÏÓØ ÚÒÏÂÉÔÉ ÂÌÏËÕ×ÁÎÎÑ ÚÁ ÄÏÐÏÍÏÇÏÀ flock(2): %s"
-
-#: camel/camel-movemail.c:101
-#, fuzzy, c-format
-msgid "Could not check mail file %s: %s"
-msgstr "óÔ×ÏÒÉÔÉ ÎÏ×ÉÊ ËÁÌÅÎÄÁÒ"
-
-#: camel/camel-movemail.c:148
-#, c-format
-msgid "Could not open mail file %s: %s"
-msgstr "îÅ ×ÄÁÌÏÓØ ×¦ÄËÒÉÔÉ ÆÁÊÌ ÐÏÛÔÉ %s: %s"
-
-#: camel/camel-movemail.c:158
-#, c-format
-msgid "Could not open temporary mail file %s: %s"
-msgstr "îÅ ×ÄÁÌÏÓØ ×¦ÄËÒÉÔÉ ÔÉÍÞÁÓÏ×ÉÊ ÆÁÊÌ ÐÏÛÔÉ %s: %s"
-
-#: camel/camel-movemail.c:199
-#, fuzzy, c-format
-msgid "Could not test lock file for %s: %s"
-msgstr "óÔ×ÏÒÉÔÉ ÎÏ×ÉÊ ËÁÌÅÎÄÁÒ"
-
-#: camel/camel-movemail.c:245
-#, c-format
-msgid "Error reading mail file: %s"
-msgstr "ðÏÍÉÌËÁ ÚÞÉÔÕ×ÁÎÎÑ ÆÁÊÌÕ ÐÏÛÔÉ: %s"
-
-#: camel/camel-movemail.c:256
-#, c-format
-msgid "Error writing mail temp file: %s"
-msgstr "ðÏÍÉÌËÁ ÚÁÐÉÓÕ ÐÏÛÔÉ Õ ÔÉÍÞÁÓÏ×ÉÊ ÆÁÊÌ: %s"
-
-#: camel/camel-movemail.c:274
-#, c-format
-msgid "Failed to store mail in temp file %s: %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÚÂÅÒÅÇÔÉ ÐÏÛÔÕ × ÔÉÍÞÁÓÏ×ÏÍÕ ÆÁÊ̦ %s: %s"
-
-#: camel/camel-movemail.c:306
-#, c-format
-msgid "Could not create pipe: %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÓÔ×ÏÒÉÔÉ ËÁÎÁÌ: %s"
-
-#: camel/camel-movemail.c:318
-#, c-format
-msgid "Could not fork: %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÚÁÐÕÓÔÉÔÉ ÓÐÁÄËϤÍÎÉÊ ÐÒÏÃÅÓ: %s"
-
-#: camel/camel-movemail.c:356
-#, c-format
-msgid "Movemail program failed: %s"
-msgstr ""
-
-#: camel/camel-movemail.c:357
-msgid "(Unknown error)"
-msgstr "(îÅצÄÏÍÁ ÐÏÍÉÌËÁ)"
-
-#: camel/camel-movemail.c:587
-#, fuzzy, c-format
-msgid "Error copying mail temp file: %s"
-msgstr "ðÏÍÉÌËÁ ÚÁÐÉÓÕ ÐÏÛÔÉ Õ ÔÉÍÞÁÓÏ×ÉÊ ÆÁÊÌ: %s"
-
-#: camel/camel-pgp-context.c:188
-#, fuzzy, c-format
-msgid "Please enter your %s passphrase for %s"
-msgstr "÷×ÅĦÔØ ÐÁÒÏÌØ NNTP ÄÌÑ %s@%s"
-
-#: camel/camel-pgp-context.c:191
-#, c-format
-msgid "Please enter your %s passphrase"
-msgstr ""
-
-#: camel/camel-pgp-context.c:511
-msgid "No plaintext to sign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:518 camel/camel-pgp-context.c:690
-#: camel/camel-pgp-context.c:1057 camel/camel-pgp-context.c:1269
-msgid "No password provided."
-msgstr "îÅ ×ËÁÚÁÎÏ ÐÁÒÏÌÀ."
-
-#: camel/camel-pgp-context.c:524 camel/camel-pgp-context.c:696
-#: camel/camel-pgp-context.c:879 camel/camel-pgp-context.c:1064
-#: camel/camel-pgp-context.c:1276
-#, c-format
-msgid "Couldn't create pipe to GPG/PGP: %s"
-msgstr "îÅÍÏÖÌÉ×Ï ÓÔ×ÏÒÉÔÉ ËÁÎÁÌ ÄÏ GPG/PGP: %s"
-
-#: camel/camel-pgp-context.c:683
-msgid "No plaintext to clearsign."
-msgstr ""
-
-#: camel/camel-pgp-context.c:873
-msgid "No plaintext to verify."
-msgstr ""
-
-#: camel/camel-pgp-context.c:890
-#, c-format
-msgid "Couldn't create temp file: %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÓÔ×ÏÒÉÔÉ ÔÉÍÞÁÓÏ×ÉÊ ÆÁÊÌ: %s"
-
-#: camel/camel-pgp-context.c:1047
-msgid "No plaintext to encrypt."
-msgstr ""
-
-#: camel/camel-pgp-context.c:1073
-msgid "No recipients specified"
-msgstr ""
-
-#: camel/camel-pgp-context.c:1261
-msgid "No ciphertext to decrypt."
-msgstr ""
-
-#: camel/camel-provider.c:131
-#, c-format
-msgid "Could not load %s: Module loading not supported on this system."
-msgstr ""
-
-#: camel/camel-provider.c:140
-#, c-format
-msgid "Could not load %s: %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÚÁ×ÁÎÔÁÖÉÔÉ %s: %s"
-
-#: camel/camel-provider.c:148
-#, c-format
-msgid "Could not load %s: No initialization code in module."
-msgstr "îÅ ×ÄÁÌÏÓÑ ÚÁ×ÁÎÔÁÖÉÔÉ %s: ÎÅÍÁ¤ ¦Î¦Ã¦Á̦ÚÁæ§ × ÍÏÄÕ̦."
-
-#: camel/camel-remote-store.c:186
-#, fuzzy, c-format
-msgid "%s server %s"
-msgstr "óÅÒ×ÅÒ:"
-
-#: camel/camel-remote-store.c:190
-#, c-format
-msgid "%s service for %s on %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:240
-#, fuzzy
-msgid "Connection cancelled"
-msgstr "÷¦ÄͦÎÅÎÏ"
-
-#: camel/camel-remote-store.c:243
-#: camel/providers/smtp/camel-smtp-transport.c:261
-#, c-format
-msgid "Could not connect to %s (port %d): %s"
-msgstr ""
-
-#: camel/camel-remote-store.c:244
-msgid "(unknown host)"
-msgstr "(ÎÅצÄÏÍÉÊ ÈÏÓÔ)"
-
-#: camel/camel-remote-store.c:325 camel/camel-remote-store.c:387
-#: camel/camel-remote-store.c:458
-#: camel/providers/imap/camel-imap-command.c:264
-#, fuzzy
-msgid "Operation cancelled"
-msgstr "÷¦ÄËÒÉÔÉ ËÁÌÅÎÄÁÒ"
-
-#: camel/camel-remote-store.c:464
-#, fuzzy
-msgid "Server unexpectedly disconnected"
-msgstr "óÅÒ×ÅÒ ×¦ÄËÉÎÕ× ¦Í'Ñ ËÏÒÉÓÔÕ×ÁÞÁ"
-
-#: camel/camel-sasl-anonymous.c:33
-msgid "Anonymous"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:35
-msgid "This option will connect to the server using an anonymous login."
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:110 camel/camel-sasl-plain.c:87
-#, fuzzy
-msgid "Authentication failed."
-msgstr "áÕÔÅÎƦËÁæÑ:"
-
-#: camel/camel-sasl-anonymous.c:119
-#, c-format
-msgid ""
-"Invalid email address trace information:\n"
-"%s"
-msgstr ""
-
-#: camel/camel-sasl-anonymous.c:131
-#, fuzzy, c-format
-msgid ""
-"Invalid opaque trace information:\n"
-"%s"
-msgstr "ðÏÍÉÌËÁ ÚÁ×ÁÎÔÁÖÅÎÎÑ ÆÁÊÌÕ: %s"
-
-#: camel/camel-sasl-anonymous.c:143
-#, fuzzy, c-format
-msgid ""
-"Invalid trace information:\n"
-"%s"
-msgstr "ðÏÍÉÌËÁ ÚÁ×ÁÎÔÁÖÅÎÎÑ ÆÁÊÌÕ: %s"
-
-#: camel/camel-sasl-cram-md5.c:35
-msgid "CRAM-MD5"
-msgstr "CRAM-MD5"
-
-#: camel/camel-sasl-cram-md5.c:37
-msgid ""
-"This option will connect to the server using a secure CRAM-MD5 password, if "
-"the server supports it."
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:43
-msgid "DIGEST-MD5"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:45
-msgid ""
-"This option will connect to the server using a secure DIGEST-MD5 password, "
-"if the server supports it."
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:810
-msgid "Server challenge too long (>2048 octets)\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:819
-msgid "Server challenge invalid\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:825
-msgid "Server challenge contained invalid \"Quality of Protection\" token\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:847
-msgid "Server response did not contain authorization data\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:865
-msgid "Server response contained incomplete authorization data\n"
-msgstr ""
-
-#: camel/camel-sasl-digest-md5.c:875
-msgid "Server response does not match\n"
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:40
-msgid "Kerberos 4"
-msgstr "Kerberos 4"
-
-#: camel/camel-sasl-kerberos4.c:42
-msgid "This option will connect to the server using Kerberos 4 authentication."
-msgstr ""
-
-#: camel/camel-sasl-kerberos4.c:161
-#, fuzzy, c-format
-msgid ""
-"Could not get Kerberos ticket:\n"
-"%s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÓÔ×ÏÒÉÔÉ ËÁÎÁÌ: %s"
-
-#: camel/camel-sasl-kerberos4.c:218
-#: camel/providers/imap/camel-imap-store.c:421
-#, fuzzy
-msgid "Bad authentication response from server."
-msgstr "îÅÏÞ¦ËÕ×ÁÎÁ צÄÐÏצÄØ ×¦Ä ÓÅÒ×ÅÒÁ IMAP: %s"
-
-#: camel/camel-sasl-login.c:32
-msgid "NT Login"
-msgstr ""
-
-#: camel/camel-sasl-login.c:34 camel/camel-sasl-plain.c:34
-msgid "This option will connect to the server using a simple password."
-msgstr ""
-
-#: camel/camel-sasl-login.c:127
-#, fuzzy
-msgid "Unknown authentication state."
-msgstr "áÕÔÅÎƦËÁæÑ:"
-
-#: camel/camel-search-private.c:111
-#, fuzzy, c-format
-msgid "Regular expression compilation failed: %s: %s"
-msgstr "úÂ¦Ê ÚÁÐÉÓÕ × ÔÉÍÞÁÓÏ×Õ ÐÏÛÔÏ×Õ ÓËÒÉÎØËÕ: %s: %s"
-
-#: camel/camel-service.c:154
-#, c-format
-msgid "URL '%s' needs a username component"
-msgstr ""
-
-#: camel/camel-service.c:162
-#, c-format
-msgid "URL '%s' needs a host component"
-msgstr ""
-
-#: camel/camel-service.c:170
-#, c-format
-msgid "URL '%s' needs a path component"
-msgstr ""
-
-#: camel/camel-service.c:548
-#, fuzzy, c-format
-msgid "Resolving: %s"
-msgstr "ðÅÒÅצÒËÁ \"%s\""
-
-#: camel/camel-service.c:575
-#, c-format
-msgid "Failure in name lookup: %s"
-msgstr ""
-
-#: camel/camel-service.c:600
-#, c-format
-msgid "Host lookup failed: %s: host not found"
-msgstr ""
-
-#: camel/camel-service.c:602
-#, c-format
-msgid "Host lookup failed: %s: unknown reason"
-msgstr ""
-
-#: camel/camel-session.c:56
-msgid "Virtual folder email provider"
-msgstr ""
-
-#: camel/camel-session.c:58
-msgid "For reading mail as a query of another set of folders"
-msgstr ""
-
-#: camel/camel-session.c:273 camel/camel-session.c:363
-#, c-format
-msgid "No provider available for protocol `%s'"
-msgstr ""
-
-#: camel/camel-session.c:462
-#, c-format
-msgid ""
-"Could not create directory %s:\n"
-"%s"
-msgstr ""
-"îÅ ×ÄÁÌÏÓÑ ÓÔ×ÏÒÉÔÉ ËÁÔÁÌÏÇ %s:\n"
-"%s"
-
-#. Fill in the new fields
-#: camel/camel-store.c:380 mail/mail-ops.c:1007 mail/mail-ops.c:1014
-#: mail/mail-ops.c:1032 mail/mail-ops.c:1033
-#, fuzzy
-msgid "Trash"
-msgstr "úÁ×ÄÁÎÎÑ"
-
-#: camel/camel-tcp-stream-ssl.c:348
-#, c-format
-msgid ""
-"EMail: %s\n"
-"Common Name: %s\n"
-"Organization Unit: %s\n"
-"Organization: %s\n"
-"Locality: %s\n"
-"State: %s\n"
-"Country: %s"
-msgstr ""
-
-#. construct our user prompt
-#: camel/camel-tcp-stream-ssl.c:364
-#, c-format
-msgid ""
-"Bad certificate from %s:\n"
-"\n"
-"%s\n"
-"\n"
-"Do you wish to accept anyway?"
-msgstr ""
-
-#: camel/camel-url.c:289
-#, fuzzy, c-format
-msgid "Could not parse URL `%s'"
-msgstr ""
-"îÅ ×ÄÁÌÏÓÑ ×¦ÄËÒÉÔÉ ÆÁÊÌ \"%s\":\n"
-"%s"
-
-#: camel/camel-vee-folder.c:451
-#, fuzzy, c-format
-msgid "No such message %s in %s"
-msgstr "ðÅÒÅÓÌÁÔÉ ÃÅ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: camel/camel-vee-folder.c:546
-#, fuzzy, c-format
-msgid "No such message: %s"
-msgstr "ðÅÒÅÓÌÁÔÉ ÃÅ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: camel/camel-vtrash-folder.c:109
-#, fuzzy
-msgid "You cannot copy messages from this trash folder."
-msgstr ""
-"îÅÍÏÖÌÉ×Ï ÏÔÒÉÍÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ \"%s\" Ú ÔÅËÉ \"%s\"\n"
-" %s"
-
-#: camel/providers/imap/camel-imap-message-cache.c:130
-#, fuzzy, c-format
-msgid "Could not open cache directory: %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÓÔ×ÏÒÉÔÉ ËÁÔÁÌÏÇ %s: %s"
-
-#: camel/providers/imap/camel-imap-command.c:209
-#, c-format
-msgid "Unexpected response from IMAP server: %s"
-msgstr "îÅÏÞ¦ËÕ×ÁÎÁ צÄÐÏצÄØ ×¦Ä ÓÅÒ×ÅÒÁ IMAP: %s"
-
-#: camel/providers/imap/camel-imap-command.c:217
-#, c-format
-msgid "IMAP command failed: %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:218 shell/e-storage.c:481
-msgid "Unknown error"
-msgstr "îÅצÄÏÍÁ ÐÏÍÉÌËÁ"
-
-#: camel/providers/imap/camel-imap-command.c:272
-msgid "Server response ended too soon."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:456
-#, c-format
-msgid "IMAP server response did not contain %s information"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-command.c:490
-#, c-format
-msgid "Unexpected OK response from IMAP server: %s"
-msgstr "îÅÏÞ¦ËÕ×ÁÎÁ צÄÐÏצÄØ OK ×¦Ä ÓÅÒ×ÅÒÁ IMAP: %s"
-
-#: camel/providers/imap/camel-imap-folder.c:170
-#, c-format
-msgid "Could not load summary for %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-folder.c:349
-#, fuzzy
-msgid "Scanning IMAP folder"
-msgstr "óËÁÎÕ×ÁÎÎÑ ÔÅË × \"%s\""
-
-#: camel/providers/imap/camel-imap-folder.c:984
-#: camel/providers/imap/camel-imap-folder.c:1195
-msgid "This message is not currently available"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-folder.c:1014
-#: camel/providers/imap/camel-imap-folder.c:1229
-msgid "Could not find message body in FETCH response."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:43 mail/mail-config.glade.h:11
-msgid "Checking for new mail"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:45
-#, fuzzy
-msgid "Check for new messages in all folders"
-msgstr "úÂÅÒÅÇÔÉ ÐÏצÄÏÍÌÅÎÎÑ Õ ×ËÁÚÁÎ¦Ê ÔÅæ"
-
-#: camel/providers/imap/camel-imap-provider.c:48 shell/e-shell-view.c:534
-msgid "Folders"
-msgstr "ôÅËÉ"
-
-#: camel/providers/imap/camel-imap-provider.c:50
-#, fuzzy
-msgid "Show only subscribed folders"
-msgstr "ðÒɤÄÎÁÔÉÓØ ÄÏ ÔÅËÉ \"%s\""
-
-#: camel/providers/imap/camel-imap-provider.c:52
-msgid "Override server-supplied folder namespace"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:54
-#, fuzzy
-msgid "Namespace"
-msgstr "úÁͦÎÉÔÉ"
-
-#: camel/providers/imap/camel-imap-provider.c:57
-msgid "Apply filters to new messages in INBOX on this server"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-provider.c:63
-msgid "IMAPv4"
-msgstr "IMAP4"
-
-#: camel/providers/imap/camel-imap-provider.c:65
-msgid "For reading and storing mail on IMAP servers."
-msgstr "äÌÑ ÚÞÉÔÕ×ÁÎÎÑ ÔÁ ÚÂÅÒÅÖÅÎÎÑ ÐÌÛÔÉ ÎÁ ÓÅÒ×ÅÒÁÈ IMAP."
-
-#: camel/providers/imap/camel-imap-provider.c:82
-msgid "This option will connect to the IMAP server using a plaintext password."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:444
-#, c-format
-msgid "IMAP server %s does not support requested authentication type %s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:454
-#: camel/providers/smtp/camel-smtp-transport.c:358
-#, fuzzy, c-format
-msgid "No support for authentication type %s"
-msgstr "¶ÄÅÎÔÉƦËÁÃ¦Ñ ÎÅ ×ÉÍÁÇÁ¤ÔØÓÑ"
-
-#: camel/providers/imap/camel-imap-store.c:479
-#, c-format
-msgid "%sPlease enter the IMAP password for %s@%s"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:494
-#: camel/providers/smtp/camel-smtp-transport.c:403
-msgid "You didn't enter a password."
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:522
-#, c-format
-msgid ""
-"Unable to authenticate to IMAP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-
-#: camel/providers/imap/camel-imap-store.c:869
-#, fuzzy, c-format
-msgid "%s is not a selectable folder"
-msgstr "ðÏËÁÚÁÔÉ ×ÉÂÒÁÎÕ ÔÅËÉ"
-
-#: camel/providers/imap/camel-imap-store.c:883
-#, c-format
-msgid "Could not create directory %s: %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÓÔ×ÏÒÉÔÉ ËÁÔÁÌÏÇ %s: %s"
-
-#: camel/providers/imap/camel-imap-store.c:1386
-msgid "You must be working online to complete this operation"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:39
-#, fuzzy
-msgid "MH-format mail directories"
-msgstr "ËÁÔÁÌÏÇ ÎÅ Maildir"
-
-#: camel/providers/local/camel-local-provider.c:40
-msgid "For storing local mail in MH-like mail directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:49
-msgid "Standard Unix mailbox file"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:50
-msgid "For storing local mail in standard mbox format"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:59
-msgid "Qmail maildir-format mail files"
-msgstr ""
-
-#: camel/providers/local/camel-local-provider.c:60
-msgid "For storing local mail in qmail maildir directories"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:129
-#, c-format
-msgid "Store root %s is not an absolute path"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:136
-#, fuzzy, c-format
-msgid "Store root %s is not a regular directory"
-msgstr "\"%s\" ÎÅ ¤ Ú×ÉÞÁÊÎÉÍ ÆÁÊÌÏÍ."
-
-#: camel/providers/local/camel-local-store.c:144
-#: camel/providers/local/camel-local-store.c:160
-#, c-format
-msgid "Cannot get folder: %s: %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÏÔÒÉÍÁÔÉ ÔÅËÕ: %s: %s"
-
-#: camel/providers/local/camel-local-store.c:175
-msgid "Local stores do not have an inbox"
-msgstr ""
-
-#: camel/providers/local/camel-local-store.c:185
-#, c-format
-msgid "Local mail file %s"
-msgstr "æÁÊÌ ÌÏËÁÌØÎϧ ÐÏÛÔÉ %s"
-
-#: camel/providers/local/camel-local-store.c:241
-#, fuzzy, c-format
-msgid "Could not rename folder %s to %s: %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÐÅÒÅÊÍÅÎÕ×ÁÔÉ ÔÅËÕ \"%s\": %s"
-
-#: camel/providers/local/camel-local-store.c:283
-#, fuzzy, c-format
-msgid "Could not delete folder summary file `%s': %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÓÔÅÒÔÉ ÔÅËÕ \"%s\": %s"
-
-#: camel/providers/local/camel-local-store.c:293
-#, fuzzy, c-format
-msgid "Could not delete folder index file `%s': %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÓÔÅÒÔÉ ÔÅËÕ \"%s\": %s"
-
-#: camel/providers/local/camel-local-summary.c:404
-msgid "Unable to add message to summary: unknown reason"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-folder.c:150
-#: camel/providers/local/camel-maildir-folder.c:158
-#: camel/providers/local/camel-maildir-folder.c:169
-#, fuzzy, c-format
-msgid "Cannot append message to maildir folder: %s: %s"
-msgstr "÷¦Ä¦ÓÌÁΦ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-maildir-folder.c:209
-#: camel/providers/local/camel-maildir-folder.c:217
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#: camel/providers/local/camel-mh-folder.c:194
-#: camel/providers/local/camel-mh-folder.c:202
-#, c-format
-msgid ""
-"Cannot get message: %s\n"
-" %s"
-msgstr ""
-"îÅÍÏÖÌÉ×Ï ÏÔÒÉÍÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ: %s\n"
-" %s"
-
-#: camel/providers/local/camel-maildir-folder.c:197
-#: camel/providers/local/camel-mbox-folder.c:319
-#: camel/providers/local/camel-mh-folder.c:185
-#, fuzzy
-msgid "No such message"
-msgstr "ðÅÒÅÓÌÁÔÉ ÃÅ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: camel/providers/local/camel-maildir-folder.c:218
-#: camel/providers/local/camel-mh-folder.c:203
-msgid "Invalid message contents"
-msgstr ""
-
-#: camel/providers/local/camel-maildir-store.c:96
-#: camel/providers/local/camel-mh-store.c:90
-#, c-format
-msgid ""
-"Could not open folder `%s':\n"
-"%s"
-msgstr ""
-"îÅ ×ÄÁÌÏÓÑ ×¦ÄËÒÉÔÉ ÔÅËÕ \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:100
-#: camel/providers/local/camel-mbox-store.c:101
-#: camel/providers/local/camel-mh-store.c:97
-#, c-format
-msgid "Folder `%s' does not exist."
-msgstr "ôÅËÉ \"%s\" ÎÅ ¦ÓÎÕ¤."
-
-#: camel/providers/local/camel-maildir-store.c:107
-#: camel/providers/local/camel-mh-store.c:103
-#, c-format
-msgid ""
-"Could not create folder `%s':\n"
-"%s"
-msgstr ""
-"îÅ ×ÄÁÌÏÓÑ ÓÔ×ÏÒÉÔÉ ÔÅËÕ \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-maildir-store.c:122
-#, c-format
-msgid "`%s' is not a maildir directory."
-msgstr "\"%s\" ÎÅ ¤ ËÁÔÁÌÏÇÏÍ Maildir."
-
-#: camel/providers/local/camel-maildir-store.c:151
-#: camel/providers/local/camel-maildir-store.c:188
-#: camel/providers/local/camel-mh-store.c:127
-#, c-format
-msgid "Could not delete folder `%s': %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÓÔÅÒÔÉ ÔÅËÕ \"%s\": %s"
-
-#: camel/providers/local/camel-maildir-store.c:152
-msgid "not a maildir directory"
-msgstr "ËÁÔÁÌÏÇ ÎÅ Maildir"
-
-#: camel/providers/local/camel-maildir-summary.c:405
-#: camel/providers/local/camel-maildir-summary.c:526
-#, fuzzy, c-format
-msgid "Cannot open maildir directory path: %s: %s"
-msgstr "îÅÍÏÖÌÉ×Ï ×¦ÄËÒÉÔÉ ÐÏÛÔÏ×Õ ÓËÒÉÎØËÕ: %s: %s\n"
-
-#: camel/providers/local/camel-mbox-folder.c:152
-#, fuzzy, c-format
-msgid "Cannot create folder lock on %s: %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÏÔÒÉÍÁÔÉ ÔÅËÕ: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:203
-#, c-format
-msgid "Cannot open mailbox: %s: %s\n"
-msgstr "îÅÍÏÖÌÉ×Ï ×¦ÄËÒÉÔÉ ÐÏÛÔÏ×Õ ÓËÒÉÎØËÕ: %s: %s\n"
-
-#: camel/providers/local/camel-mbox-folder.c:259
-#, c-format
-msgid "Cannot append message to mbox file: %s: %s"
-msgstr "îÅÍÏÖÌÉ×Ï ÄÏÄÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ ÄÏ ÆÁÊÌÕ Mbox: %s: %s"
-
-#: camel/providers/local/camel-mbox-folder.c:335
-#: camel/providers/local/camel-mbox-folder.c:367
-#: camel/providers/local/camel-mbox-folder.c:380
-#, fuzzy, c-format
-msgid ""
-"Cannot get message: %s from folder %s\n"
-" %s"
-msgstr ""
-"îÅÍÏÖÌÉ×Ï ÏÔÒÉÍÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ \"%s\" Ú ÔÅËÉ \"%s\"\n"
-" %s"
-
-#: camel/providers/local/camel-mbox-folder.c:368
-msgid "The folder appears to be irrecoverably corrupted."
-msgstr "óÈÏÖÅ ÔÅËÁ ÎÅÐÏÐÒÁ×ÎÏ Ú¦ÐÓÏ×ÁÎÁ."
-
-#: camel/providers/local/camel-mbox-folder.c:381
-msgid "Message construction failed: Corrupt mailbox?"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-store.c:94
-#, c-format
-msgid ""
-"Could not open file `%s':\n"
-"%s"
-msgstr ""
-"îÅ ×ÄÁÌÏÓÑ ×¦ÄËÒÉÔÉ ÆÁÊÌ \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:110
-#, c-format
-msgid ""
-"Could not create file `%s':\n"
-"%s"
-msgstr ""
-"îÅ ×ÄÁÌÏÓØ ÓÔ×ÏÒÉÔÉ ÆÁÊÌ \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:119
-#: camel/providers/local/camel-mbox-store.c:146
-#, c-format
-msgid "`%s' is not a regular file."
-msgstr "\"%s\" ÎÅ ¤ Ú×ÉÞÁÊÎÉÍ ÆÁÊÌÏÍ."
-
-#: camel/providers/local/camel-mbox-store.c:138
-#: camel/providers/local/camel-mbox-store.c:161
-#, c-format
-msgid ""
-"Could not delete folder `%s':\n"
-"%s"
-msgstr ""
-"îÅ ×ÄÁÌÏÓØ ÓÔÅÒÔÉ ÔÅËÕ \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-store.c:153
-#, c-format
-msgid "Folder `%s' is not empty. Not deleted."
-msgstr "ôÅËÁ \"%s\" ÎÅ ÐÏÒÏÖÎÑ. îÅ ÓÔÅÒÔÏ."
-
-#. FIXME: If there is a failure, it shouldn't clear the summary and restart,
-#. it should try and merge the summary info's. This is a bit tricky.
-#: camel/providers/local/camel-mbox-summary.c:249
-#, fuzzy
-msgid "Summarising folder"
-msgstr "óÉÎÈÒÏΦÚÁÃ¦Ñ \"%s\""
-
-#: camel/providers/local/camel-mbox-summary.c:254
-#, fuzzy, c-format
-msgid "Could not open folder: %s: summarising from position %ld: %s"
-msgstr ""
-"îÅ ×ÄÁÌÏÓÑ ×¦ÄËÒÉÔÉ ÔÅËÕ \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-summary.c:296
-#, c-format
-msgid "Fatal mail parser error near position %ld in folder %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:371
-#, fuzzy, c-format
-msgid "Cannot summarise folder: %s: %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÐÅÒÅÊÍÅÎÕ×ÁÔÉ ÔÅËÕ \"%s\": %s"
-
-#: camel/providers/local/camel-mbox-summary.c:502
-#: camel/providers/local/camel-mbox-summary.c:703 mail/mail-ops.c:1395
-#, fuzzy
-msgid "Synchronising folder"
-msgstr "óÉÎÈÒÏΦÚÁÃ¦Ñ \"%s\""
-
-#: camel/providers/local/camel-mbox-summary.c:507
-#: camel/providers/local/camel-mbox-summary.c:708
-#, fuzzy, c-format
-msgid "Could not open folder to summarise: %s: %s"
-msgstr ""
-"îÅ ×ÄÁÌÏÓÑ ×¦ÄËÒÉÔÉ ÔÅËÕ \"%s\":\n"
-"%s"
-
-#: camel/providers/local/camel-mbox-summary.c:524
-#, c-format
-msgid "Cannot open temporary mailbox: %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ×¦ÄËÒÉÔÉ ÔÉÍÞÁÓÏ×Õ ÐÏÛÔÏ×Õ ÓËÒÉÎØËÕ: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:549
-#: camel/providers/local/camel-mbox-summary.c:557
-#: camel/providers/local/camel-mbox-summary.c:746
-#: camel/providers/local/camel-mbox-summary.c:754
-msgid "Summary and folder mismatch, even after a sync"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:600
-#, c-format
-msgid "Error writing to temp mailbox: %s"
-msgstr "ðÏÍÉÌËÁ ÚÁÐÉÓÕ × ÔÉÍÞÁÓÏ×Õ ÐÏÛÔÕ ÓËÒÉÎØËÕ: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:617
-#, c-format
-msgid "Writing to tmp mailbox failed: %s: %s"
-msgstr "úÂ¦Ê ÚÁÐÉÓÕ × ÔÉÍÞÁÓÏ×Õ ÐÏÛÔÏ×Õ ÓËÒÉÎØËÕ: %s: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:635
-#: camel/providers/local/camel-mbox-summary.c:804
-#, c-format
-msgid "Could not close source folder %s: %s"
-msgstr ""
-
-#: camel/providers/local/camel-mbox-summary.c:644
-#, c-format
-msgid "Could not close temp folder: %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÚÁËÒÉÔÉ ÔÉÍÞÁÓÏ×Õ ÔÅËÕ: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:655
-#, c-format
-msgid "Could not rename folder: %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÐÅÒÅÊÍÅÎÕ×ÁÔÉ ÔÅËÕ: %s"
-
-#: camel/providers/local/camel-mbox-summary.c:879
-#, c-format
-msgid "Unknown error: %s"
-msgstr "îÅצÄÏÍÁ ÐÏÍÉÌËÁ: %s"
-
-#: camel/providers/local/camel-mh-folder.c:149
-#: camel/providers/local/camel-mh-folder.c:157
-#, fuzzy, c-format
-msgid "Cannot append message to mh folder: %s: %s"
-msgstr "÷¦Ä¦ÓÌÁΦ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: camel/providers/local/camel-mh-store.c:110
-#, c-format
-msgid "`%s' is not a directory."
-msgstr "\"%s\" ÎÅ ¤ ËÁÔÁÌÏÇÏÍ."
-
-#: camel/providers/local/camel-mh-summary.c:218
-#, fuzzy, c-format
-msgid "Cannot open MH directory path: %s: %s"
-msgstr "îÅÍÏÖÌÉ×Ï ×¦ÄËÒÉÔÉ ÐÏÛÔÏ×Õ ÓËÒÉÎØËÕ: %s: %s\n"
-
-#: camel/providers/nntp/camel-nntp-auth.c:45
-#, c-format
-msgid "Please enter the NNTP password for %s@%s"
-msgstr "÷×ÅĦÔØ ÐÁÒÏÌØ NNTP ÄÌÑ %s@%s"
-
-#: camel/providers/nntp/camel-nntp-auth.c:66
-msgid "Server rejected username"
-msgstr "óÅÒ×ÅÒ ×¦ÄËÉÎÕ× ¦Í'Ñ ËÏÒÉÓÔÕ×ÁÞÁ"
-
-#: camel/providers/nntp/camel-nntp-auth.c:72
-msgid "Failed to send username to server"
-msgstr "îÅ ×ÄÁÌÏÓÑ ×¦Ä¦ÓÌÁÔÉ ¦Í'Ñ ËÏÒÉÓÔÕ×ÁÞÁ ÎÁ ÓÅÒ×ÅÒ"
-
-#: camel/providers/nntp/camel-nntp-auth.c:81
-msgid "Server rejected username/password"
-msgstr "óÅÒ×ÅÒ ×¦ÄËÉÎÕ× ¦Í'Ñ ËÏÒÉÓÔÕ×ÁÞÁ ¦ ÐÁÒÏÌØ"
-
-#: camel/providers/nntp/camel-nntp-folder.c:115
-#, c-format
-msgid "Message %s not found."
-msgstr "ðÏצÄÏÍÌÅÎÎÑ %s ÎÅ ÚÎÁÊÄÅÎÏ."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:45
-msgid "Could not get group list from server."
-msgstr "îÅ ×ÄÁÌÏÓÑ ÏÔÒÉÍÁÔÉ ÓЦÓÏË ÇÒÕÐ Ú ÓÅÒ×ÅÒÁ."
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:94
-#: camel/providers/nntp/camel-nntp-grouplist.c:103
-#, c-format
-msgid "Unable to load grouplist file for %s: %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÚÁ×ÁÎÔÁÖÉÔÉ ÓÐÉÓÏË ÇÒÕÐ ÄÌÑ %s: %s"
-
-#: camel/providers/nntp/camel-nntp-grouplist.c:153
-#, c-format
-msgid "Unable to save grouplist file for %s: %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÚÂÅÒÅÇÔÉ ÓÐÉÓÏË ÇÒÕÐ ÄÌÑ %s: %s"
-
-#: camel/providers/nntp/camel-nntp-provider.c:42
-msgid "USENET news"
-msgstr "îÏ×ÉÎÉ USENET"
-
-#: camel/providers/nntp/camel-nntp-provider.c:44
-msgid "This is a provider for reading from and posting toUSENET newsgroups."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:224
-#, c-format
-msgid "Could not open directory for news server: %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ×¦ÄËÒÉÔÉ ËÁÔÁÌÏÇ ÓÅÒ×ÅÒÁ ÎÏ×ÉÎ: %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:286
-#, c-format
-msgid "USENET News via %s"
-msgstr "îÏ×ÉÎÉ USENET ÞÅÒÅÚ %s"
-
-#: camel/providers/nntp/camel-nntp-store.c:293
-msgid ""
-"This option will authenticate with the NNTP server using a plaintext "
-"password."
-msgstr ""
-
-#: camel/providers/nntp/camel-nntp-store.c:325
-#: camel/providers/nntp/camel-nntp-store.c:488
-#, c-format
-msgid "Unable to open or create .newsrc file for %s: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:149
-#, fuzzy
-msgid "Retrieving POP summary"
-msgstr "ïÔÒÉÍÁÎÎÑ ÐÏצÄÏÍÌÅÎÎÑ %d Ú %d"
-
-#: camel/providers/pop3/camel-pop3-folder.c:155
-#, fuzzy, c-format
-msgid "Could not check POP server for new messages: %s"
-msgstr "óÔ×ÏÒÉÔÉ ÎÏ×ÉÊ ËÁÌÅÎÄÁÒ"
-
-#: camel/providers/pop3/camel-pop3-folder.c:199
-msgid "Could not open folder: message listing was incomplete."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-folder.c:292
-#, fuzzy, c-format
-msgid "No message with uid %s"
-msgstr "úÂÅÒÅÇÔÉ ÐÏצÄÏÍÌÅÎÎÑ Õ ×ËÁÚÁÎ¦Ê ÔÅæ"
-
-#: camel/providers/pop3/camel-pop3-folder.c:296
-#, fuzzy, c-format
-msgid "Retrieving POP message %d"
-msgstr "ïÔÒÉÍÁÎÎÑ ÐÏצÄÏÍÌÅÎÎÑ %d Ú %d"
-
-#: camel/providers/pop3/camel-pop3-folder.c:303
-#, fuzzy, c-format
-msgid "Could not fetch message: %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ×¦Ä¦ÓÌÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ: %s"
-
-#: camel/providers/pop3/camel-pop3-folder.c:320
-#, c-format
-msgid "Could not retrieve message from POP server %s: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:37
-#, fuzzy
-msgid "Message storage"
-msgstr "úÁÇÏÌÏ×ÏË ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: camel/providers/pop3/camel-pop3-provider.c:39
-#, fuzzy
-msgid "Leave messages on server"
-msgstr "îÅ ×ÉÄÁÌÑÔÉ ÐÏצÄÏÍÌÅÎÎÑ Ú ÓÅÒ×ÅÒÁ"
-
-#: camel/providers/pop3/camel-pop3-provider.c:41
-#, fuzzy, c-format
-msgid "Delete after %s day(s)"
-msgstr "óÔÅÒÔÉ ÚÁ×ÄÁÎÎÑ"
-
-#: camel/providers/pop3/camel-pop3-provider.c:48 mail/mail-config.glade.h:42
-msgid "POP"
-msgstr "POP"
-
-#: camel/providers/pop3/camel-pop3-provider.c:50
-msgid ""
-"For connecting to POP servers. The POP protocol can also be used to retrieve "
-"mail from certain web mail providers and proprietary email systems."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:69
-msgid ""
-"This option will connect to the POP server using a plaintext password. This "
-"is the only option supported by many POP servers."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:79
-msgid ""
-"This option will connect to the POP server using an encrypted password via "
-"the APOP protocol. This may not work for all users even on servers that "
-"claim to support it."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-provider.c:91
-msgid ""
-"This will connect to the POP server and use Kerberos 4 to authenticate to it."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:209
-#, c-format
-msgid "Could not authenticate to KPOP server: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:225
-#, fuzzy, c-format
-msgid "Could not connect to server: %s"
-msgstr "óÔ×ÏÒÉÔÉ ÎÏ×ÉÊ ËÁÌÅÎÄÁÒ"
-
-#: camel/providers/pop3/camel-pop3-store.c:329
-#, fuzzy, c-format
-msgid "Could not connect to POP server on %s."
-msgstr "óÔ×ÏÒÉÔÉ ÎÏ×ÉÊ ËÁÌÅÎÄÁÒ"
-
-#: camel/providers/pop3/camel-pop3-store.c:368
-#, c-format
-msgid "%sPlease enter the POP3 password for %s@%s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:387
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending username: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:390
-#: camel/providers/pop3/camel-pop3-store.c:427
-#, fuzzy
-msgid "(Unknown)"
-msgstr "îÅצÄÏÍÁ ÐÏÍÉÌËÁ"
-
-#: camel/providers/pop3/camel-pop3-store.c:417
-msgid ""
-"Unable to connect to POP server.\n"
-"No support for requested authentication mechanism."
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:425
-#, c-format
-msgid ""
-"Unable to connect to POP server.\n"
-"Error sending password: %s"
-msgstr ""
-
-#: camel/providers/pop3/camel-pop3-store.c:493
-#, c-format
-msgid "No such folder `%s'."
-msgstr "îÅצÒÎÁ ÔÅËÁ \"%s\"."
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:37
-#: mail/mail-config.glade.h:57
-msgid "Sendmail"
-msgstr "Sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-provider.c:39
-msgid ""
-"For delivering mail by passing it to the \"sendmail\" program on the local "
-"system."
-msgstr ""
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:107
-#, c-format
-msgid "Could not create pipe to sendmail: %s: mail not sent"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÓÔ×ÏÒÉÔÉ ËÁÎÁÌ ÄÏ sendmail: %s: ÐÏÛÔÕ ÎŠצĦÓÌÁÎÏ"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:124
-#, c-format
-msgid "Could not fork sendmail: %s: mail not sent"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÒÏÚÇÁÌÕÄÉÔÉ sendmail: %s: ÐÏÛÔÕ ÎŠצĦÓÌÁÎÏ"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:150
-#, c-format
-msgid "Could not send message: %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ×¦Ä¦ÓÌÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:163
-#, c-format
-msgid "sendmail exited with signal %s: mail not sent."
-msgstr "sendmail ÚÁ×ÅÒÛÉ×ÓÑ ÓÉ­ÎÁÌÏÍ %s: ÐÏÛÔÕ ÎŠצĦÓÌÁÎÏ."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:170
-#, c-format
-msgid "Could not execute %s: mail not sent."
-msgstr "îÅ ×ÄÁÌÏÓÑ ×ÉËÏÎÁÔÉ %s: ÐÏÛÔÕ ÎŠצĦÓÌÁÎÏ."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:175
-#, c-format
-msgid "sendmail exited with status %d: mail not sent."
-msgstr "sendmail ÚÁ×ÅÒÛÉ×ÓÑ Ú ÓÔÁÎÏÍ %d: ÐÏÛÔÕ ÎŠצĦÓÌÁÎÏ."
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:194
-#, fuzzy
-msgid "Could not find 'From' address in message"
-msgstr "îÅ ×ÄÁÌÏÓÑ ×¦Ä¦ÓÌÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ: %s"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:247
-msgid "sendmail"
-msgstr "sendmail"
-
-#: camel/providers/sendmail/camel-sendmail-transport.c:249
-msgid "Mail delivery via the sendmail program"
-msgstr "äÏÓÔÁÞÁÎÎÑ ÐÏÛÔÉ ÞÅÒÅÚ ÐÒÏÇÒÁÍÕ sendmail"
-
-#: camel/providers/smtp/camel-smtp-provider.c:38 mail/mail-config.glade.h:52
-msgid "SMTP"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-provider.c:40
-msgid "For delivering mail by connecting to a remote mailhub using SMTP.\n"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:165
-msgid "Syntax error, command unrecognized"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:167
-msgid "Syntax error in parameters or arguments"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:169
-msgid "Command not implemented"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:171
-msgid "Command parameter not implemented"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:173
-msgid "System status, or system help reply"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:175
-#, fuzzy
-msgid "Help message"
-msgstr "îÁÄÒÕËÕ×ÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:177
-#, fuzzy
-msgid "Service ready"
-msgstr "ðÒÉÂÒÁÔÉ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:179
-msgid "Service closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:181
-msgid "Service not available, closing transmission channel"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:183
-msgid "Requested mail action okay, completed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:185
-msgid "User not local; will forward to <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:187
-msgid "Requested mail action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:189
-msgid "Requested action not taken: mailbox unavailable"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:191
-msgid "Requested action aborted: error in processing"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:193
-msgid "User not local; please try <forward-path>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:195
-msgid "Requested action not taken: insufficient system storage"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:197
-msgid "Requested mail action aborted: exceeded storage allocation"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:199
-msgid "Requested action not taken: mailbox name not allowed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:201
-msgid "Start mail input; end with <CRLF>.<CRLF>"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:203
-msgid "Transaction failed"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:207
-#, fuzzy
-msgid "A password transition is needed"
-msgstr "îÅ ×ËÁÚÁÎÏ ÐÁÒÏÌÀ."
-
-#: camel/providers/smtp/camel-smtp-transport.c:209
-msgid "Authentication mechanism is too weak"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:211
-msgid "Encryption required for requested authentication mechanism"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:213
-#, fuzzy
-msgid "Temporary authentication failure"
-msgstr "¶ÄÅÎÔÉƦËÁÃ¦Ñ ÎÅ ×ÉÍÁÇÁ¤ÔØÓÑ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:215
-#, fuzzy
-msgid "Authentication required"
-msgstr "¶ÄÅÎÔÉƦËÁÃ¦Ñ ÎÅ ×ÉÍÁÇÁ¤ÔØÓÑ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:305
-#, c-format
-msgid "Welcome response error: %s: possibly non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:348
-#, c-format
-msgid "SMTP server %s does not support requested authentication type %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:388
-#, fuzzy, c-format
-msgid "%sPlease enter the SMTP password for %s@%s"
-msgstr "÷×ÅĦÔØ ÐÁÒÏÌØ NNTP ÄÌÑ %s@%s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:411
-#, c-format
-msgid ""
-"Unable to authenticate to SMTP server.\n"
-"%s\n"
-"\n"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:527
-#, c-format
-msgid "SMTP server %s"
-msgstr "óÅÒ×ÅÒ SMTP %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:529
-#, c-format
-msgid "SMTP mail delivery via %s"
-msgstr "äÏÓÔÁÞÁÎÎÑ ÐÏÛÔÉ SMTP ÞÅÒÅÚ %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:554
-msgid "Cannot send message: sender address not defined."
-msgstr "îÅÍÏÖÌÉ×Ï ×¦Ä¦ÓÌÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ: ÁÄÒÅÓÁ צÄÐÒÁ×ÎÉËÁ ÎÅ ×ÉÚÎÁÞÅÎÁ."
-
-#: camel/providers/smtp/camel-smtp-transport.c:561
-msgid "Cannot send message: sender address not valid."
-msgstr "îÅÍÏÖÌÉ×Ï ×¦Ä¦ÓÌÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ: ÁÄÒÅÓÁ צÄÐÒÁ×ÎÉËÁ ΊצÒÎÁ."
-
-#: camel/providers/smtp/camel-smtp-transport.c:575
-msgid "Cannot send message: no recipients defined."
-msgstr "îÅÍÏÖÌÉ×Ï ×¦Ä¦ÓÌÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ: ÎÅ ×ÉÚÎÁÞÅÎÏ ÏÔÒÉÍÕ×ÁÞ¦×"
-
-#: camel/providers/smtp/camel-smtp-transport.c:669
-#, c-format
-msgid "HELO request timed out: %s: non-fatal"
-msgstr "ðÅÒÅ×ÉÝÅÎÏ ÞÁÓ ÏÞ¦ËÕ×ÁÎÎÑ ×¦ÄÐÏצĦ ÎÁ HELO: %s: ÎÅ ÆÁÔÁÌØÎÏ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:688
-#, c-format
-msgid "HELO response error: %s: non-fatal"
-msgstr "ðÏÍÉÌËÁ צÄÐÏצĦ ÎÁ HELO: %s: ÎÅ ÆÁÔÁÌØÎÏ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:721
-msgid "Error creating SASL authentication object."
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:736
-#: camel/providers/smtp/camel-smtp-transport.c:748
-#, fuzzy, c-format
-msgid "AUTH request timed out: %s"
-msgstr "ðÅÒÅ×ÉÝÅÎÏ ÞÁÓ ÏÞ¦ËÕ×ÁÎÎÑ ×¦ÄÐÏצĦ ÎÁ HELO: %s: ÎÅ ÆÁÔÁÌØÎÏ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:798
-#, fuzzy
-msgid "Bad authentication response from server.\n"
-msgstr "îÅÏÞ¦ËÕ×ÁÎÁ צÄÐÏצÄØ ×¦Ä ÓÅÒ×ÅÒÁ IMAP: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:824
-#, c-format
-msgid "MAIL FROM request timed out: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:843
-#, c-format
-msgid "MAIL FROM response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:868
-#, fuzzy, c-format
-msgid "RCPT TO request timed out: %s: mail not sent"
-msgstr "óÔ×ÏÒÉÔÉ ÎÏ×ÉÊ ËÁÌÅÎÄÁÒ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:887
-#, fuzzy, c-format
-msgid "RCPT TO response error: %s: mail not sent"
-msgstr "óÔ×ÏÒÉÔÉ ÎÏ×ÉÊ ËÁÌÅÎÄÁÒ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:918
-#, fuzzy, c-format
-msgid "DATA request timed out: %s: mail not sent"
-msgstr "óÔ×ÏÒÉÔÉ ÎÏ×ÉÊ ËÁÌÅÎÄÁÒ"
-
-#: camel/providers/smtp/camel-smtp-transport.c:937
-#, c-format
-msgid "DATA response error: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:952
-#: camel/providers/smtp/camel-smtp-transport.c:970
-#, c-format
-msgid "DATA send timed out: message termination: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:989
-#, c-format
-msgid "DATA response error: message termination: %s: mail not sent"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1013
-#, c-format
-msgid "RSET request timed out: %s"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1032
-#, fuzzy, c-format
-msgid "RSET response error: %s"
-msgstr "îÅצÄÏÍÁ ÐÏÍÉÌËÁ: %s"
-
-#: camel/providers/smtp/camel-smtp-transport.c:1055
-#, c-format
-msgid "QUIT request timed out: %s: non-fatal"
-msgstr ""
-
-#: camel/providers/smtp/camel-smtp-transport.c:1074
-#, c-format
-msgid "QUIT response error: %s: non-fatal"
-msgstr ""
-
-#: composer/e-msg-composer-attachment-bar.c:95
-msgid "1 byte"
-msgstr "1 ÂÁÊÔ"
-
-#: composer/e-msg-composer-attachment-bar.c:97
-#, c-format
-msgid "%u bytes"
-msgstr "%u ÂÁÊÔ¦×"
-
-#: composer/e-msg-composer-attachment-bar.c:104
-#, c-format
-msgid "%.1fK"
-msgstr "%.1fë"
-
-#: composer/e-msg-composer-attachment-bar.c:108
-#, c-format
-msgid "%.1fM"
-msgstr "%.1fí"
-
-#: composer/e-msg-composer-attachment-bar.c:112
-#, c-format
-msgid "%.1fG"
-msgstr "%.1fç"
-
-#. This is a filename. Translators take note.
-#: composer/e-msg-composer-attachment-bar.c:332 mail/mail-display.c:120
-msgid "attachment"
-msgstr "ÄÏÌÕÞÅÎÎÑ"
-
-#: composer/e-msg-composer-attachment-bar.c:421
-#: ui/evolution-message-composer.xml.h:2
-msgid "Attach a file"
-msgstr "äÏÌÕÞÉÔÉ ÆÁÊÌ"
-
-#: composer/e-msg-composer-attachment-bar.c:469
-msgid "Remove selected items from the attachment list"
-msgstr "÷ÉÄÁÌÉÔÉ ×ÉÂÒÁΦ ÅÌÅÍÅÎÔÉ Ú ÓÐÉÓËÕ ÄÏÌÕÞÅÎÎÑ"
-
-#: composer/e-msg-composer-attachment-bar.c:500
-msgid "Add attachment..."
-msgstr "äÏÌÕÞÉÔÉ..."
-
-#: composer/e-msg-composer-attachment-bar.c:501
-msgid "Attach a file to the message"
-msgstr "äÏÌÕÞÉÔÉ ÆÁÊÌ ÄÏ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: composer/e-msg-composer-attachment.glade.h:1 mail/message-list.c:1082
-#, fuzzy
-msgid "Attachment"
-msgstr "ÄÏÌÕÞÅÎÎÑ"
-
-#: composer/e-msg-composer-attachment.glade.h:2
-msgid "Attachment properties"
-msgstr "÷ÌÁÓÔÉ×ÏÓÔ¦ ÄÏÌÕÞÅÎÎÑ"
-
-#: composer/e-msg-composer-attachment.glade.h:4
-msgid "File name:"
-msgstr "îÁÚ×Á ÆÁÊÌÕ:"
-
-#: composer/e-msg-composer-attachment.glade.h:5
-#, fuzzy
-msgid "Inline attachment"
-msgstr "ÄÏÌÕÞÅÎÎÑ"
-
-#: composer/e-msg-composer-attachment.glade.h:6
-msgid "MIME type:"
-msgstr "ôÉÐ MIME:"
-
-#: composer/e-msg-composer-attachment.glade.h:7
-#, fuzzy
-msgid "Send as:"
-msgstr "÷¦Ä¦ÓÌÁÔÉ \"%s\""
-
-#: composer/e-msg-composer.c:529
-#, c-format
-msgid ""
-"Could not open signature file %s:\n"
-"%s"
-msgstr ""
-"îÅ ×ÄÁÌÏÓÑ ×¦ÄËÒÉÔÉ ÆÁÊÌ Ð¦ÄÐÉÓÕ %s:\n"
-"%s"
-
-#: composer/e-msg-composer.c:699
-msgid "Save as..."
-msgstr "úÂÅÒÅÇÔÉ ÑË..."
-
-#: composer/e-msg-composer.c:710
-#, c-format
-msgid "Error saving file: %s"
-msgstr "ðÏÍÉÌËÁ ÚÂÅÒÅÖÅÎÎÑ ÆÁÊÌÕ: %s"
-
-#: composer/e-msg-composer.c:730
-#, c-format
-msgid "Error loading file: %s"
-msgstr "ðÏÍÉÌËÁ ÚÁ×ÁÎÔÁÖÅÎÎÑ ÆÁÊÌÕ: %s"
-
-#: composer/e-msg-composer.c:802
-msgid ""
-"Unable to open the drafts folder for this account.\n"
-"Would you like to use the default drafts folder?"
-msgstr ""
-
-#: composer/e-msg-composer.c:860 data/evolution.desktop.in.h:1
-#: shell/e-shell-view-menu.c:206
-msgid "Evolution"
-msgstr "Evolution"
-
-#: composer/e-msg-composer.c:866
-msgid ""
-"This message has not been sent.\n"
-"\n"
-"Do you wish to save your changes?"
-msgstr ""
-
-#: composer/e-msg-composer.c:891
-msgid "Open file"
-msgstr "÷¦ÄËÒÉÔÉ ÆÁÊÌ"
-
-#: composer/e-msg-composer.c:1017
-msgid "That file does not exist."
-msgstr "ãØÏÇÏ ÆÁÊÌÕ ÎÅ ¦ÓÎÕ¤."
-
-#: composer/e-msg-composer.c:1027
-msgid "That is not a regular file."
-msgstr "ãÅ ÎÅ Ú×ÉÞÁÊÎÉÊ ÆÁÊÌ."
-
-#: composer/e-msg-composer.c:1037
-msgid "That file exists but is not readable."
-msgstr ""
-
-#: composer/e-msg-composer.c:1047
-msgid "That file appeared accesible but open(2) failed."
-msgstr ""
-
-#: composer/e-msg-composer.c:1069
-msgid ""
-"The file is very large (more than 100K).\n"
-"Are you sure you wish to insert it?"
-msgstr ""
-
-#: composer/e-msg-composer.c:1090
-msgid "An error occurred while reading the file."
-msgstr "óÔÁÌÁÓÑ ÐÏÍÉÌËÁ Ð¦Ä ÞÁÓ ÚÞÉÔÕ×ÁÎÎÑ ÆÁÊÌÕ."
-
-#: composer/e-msg-composer.c:1391 composer/e-msg-composer.c:1734
-msgid "Compose a message"
-msgstr "ð¦ÄÇÏÔÕ×ÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: composer/e-msg-composer.c:1825
-msgid "Could not create composer window."
-msgstr "îÅ ×ÄÁÌÏÓØ ÓÔ×ÏÒÉÔÉ ×¦ËÎÏ ËÏÎÓÔÒÕËÔÏÒÁ."
-
-#: composer/e-msg-composer-hdrs.c:323
-msgid "Click here for the address book"
-msgstr "ëÌÁÃΦÔØ ÔÕÔ ÝÏ ×ÉËÌÉËÁÔÉ ÁÄÒÅÓÎÕ ËÎÉÇÕ"
-
-#.
-#. * From:
-#.
-#: composer/e-msg-composer-hdrs.c:354 mail/mail-format.c:744
-msgid "From:"
-msgstr "÷¦Ä:"
-
-#.
-#. * Reply-To:
-#.
-#: composer/e-msg-composer-hdrs.c:360 mail/mail-format.c:746
-msgid "Reply-To:"
-msgstr "÷¦ÄÐÏצÄÁÔÉ ÎÁ:"
-
-#.
-#. * Subject:
-#.
-#: composer/e-msg-composer-hdrs.c:371 mail/mail-format.c:643
-msgid "Subject:"
-msgstr "ôÅÍÁ:"
-
-#: composer/e-msg-composer-hdrs.c:385 mail/mail-format.c:748
-msgid "To:"
-msgstr "äÏ:"
-
-#: composer/e-msg-composer-hdrs.c:386
-msgid "Enter the recipients of the message"
-msgstr "÷×ÅĦÔØ ÁÄÒÅÓÁÔ¦× ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: composer/e-msg-composer-hdrs.c:389 mail/mail-format.c:750
-msgid "Cc:"
-msgstr "Cc:"
-
-#: composer/e-msg-composer-hdrs.c:390
-msgid "Enter the addresses that will receive a carbon copy of the message"
-msgstr "÷×ÅĦÔØ ÁÄÒÅÓÁÔ¦×, ÝÏ ÏÔÒÉÍÁÀÔØ ËÏЦÀ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: composer/e-msg-composer-hdrs.c:393
-msgid "Bcc:"
-msgstr "Bcc:"
-
-#: composer/e-msg-composer-hdrs.c:394
-msgid ""
-"Enter the addresses that will receive a carbon copy of the message without "
-"appearing in the recipient list of the message."
-msgstr ""
-"÷×ÅĦÔØ ÁÄÒÅÓÁÔ¦×, ÝÏ ÏÔÒÉÍÁÀÔØ ËÏЦÀ ÐÏצÄÏÍÌÅÎÎÑ ÎÅ ÐÏÐÁ×ÛÉ × ÓÐÉÓÏË "
-"ÏÔÒÉÍÕ×ÁÞ¦×."
-
-#: composer/evolution-composer.c:355
-msgid ""
-"Could not create composer window, because you have not yet\n"
-"configured any identities in the mail component."
-msgstr ""
-
-#: composer/evolution-composer.c:370
-#, fuzzy
-msgid "Cannot initialize Evolution's composer."
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÏÂÏÌÏÎËÕ Evolutuion."
-
-#: data/evolution.desktop.in.h:2
-#, fuzzy
-msgid "The Evolution groupware suite"
-msgstr "Evolution - %s"
-
-#: data/evolution.keys.in.h:1
-#, fuzzy
-msgid "address card"
-msgstr "áÄÒÅÓÁ"
-
-#: data/evolution.keys.in.h:2
-#, fuzzy
-msgid "calendar information"
-msgstr "îÅÍÁ¤ ¦ÎÆÏÒÍÁæ§"
-
-#. strptime format for a date.
-#: e-util/e-time-utils.c:69 e-util/e-time-utils.c:117
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:477
-#: widgets/misc/e-dateedit.c:1284 widgets/misc/e-dateedit.c:1465
-msgid "%m/%d/%Y"
-msgstr "%d/%m/%Y"
-
-#. strptime format for a time of day, in 12-hour format.
-#. If it is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:87 e-util/e-time-utils.c:198
-msgid "%I:%M:%S %p%n"
-msgstr "%I:%M:%S %p%n"
-
-#. strptime format for a time of day, in 24-hour format.
-#: e-util/e-time-utils.c:90 e-util/e-time-utils.c:201
-msgid "%H:%M:%S%n"
-msgstr "%H:%M:%S%n"
-
-#. strptime format for time of day, without seconds, 12-hour format.
-#. If it is is not appropriate in the locale set to an empty string.
-#: e-util/e-time-utils.c:94 e-util/e-time-utils.c:205
-msgid "%I:%M %p%n"
-msgstr "%I:%M %p%n"
-
-#. strptime format for time of day, without seconds 24-hour format.
-#: e-util/e-time-utils.c:97 e-util/e-time-utils.c:208
-msgid "%H:%M%n"
-msgstr "%H:%M%n"
-
-#. strftime format of a weekday and a date.
-#: e-util/e-time-utils.c:269
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:473
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2505
-msgid "%a %m/%d/%Y"
-msgstr ""
-
-#. strftime format of a weekday, a date and a
-#. time, in 24-hour format, without seconds.
-#: e-util/e-time-utils.c:274
-#, fuzzy
-msgid "%a %m/%d/%Y %H:%M"
-msgstr "%d/%m/%Y"
-
-#. strftime format of a weekday, a date and a
-#. time, in 12-hour format, without seconds.
-#: e-util/e-time-utils.c:283
-#, fuzzy
-msgid "%a %m/%d/%Y %I:%M %p"
-msgstr "%I:%M %p"
-
-#. strftime format of a time in 24-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:312 widgets/misc/e-dateedit.c:1259
-#: widgets/misc/e-dateedit.c:1318 widgets/misc/e-dateedit.c:1497
-msgid "%H:%M"
-msgstr "%H:%M"
-
-#. strftime format of a time in 24-hour format.
-#: e-util/e-time-utils.c:315
-#, fuzzy
-msgid "%H:%M:%S"
-msgstr "%H:%M:%S%n"
-
-#. strftime format of a time in 12-hour format,
-#. without seconds.
-#: e-util/e-time-utils.c:320 widgets/misc/e-dateedit.c:1262
-#: widgets/misc/e-dateedit.c:1321 widgets/misc/e-dateedit.c:1500
-msgid "%I:%M %p"
-msgstr "%I:%M %p"
-
-#. strftime format of a time in 12-hour format.
-#: e-util/e-time-utils.c:323
-#, fuzzy
-msgid "%I:%M:%S %p"
-msgstr "%I:%M:%S %p%n"
-
-#: executive-summary/component/component-factory.c:152
-#, fuzzy
-msgid "Cannot initialize Evolution's Executive Summary component."
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÐÏÛÔÏ×ÉÊ ËÏÍÐÏÎÅÎÔ Evolutuion."
-
-#: executive-summary/component/e-summary.c:924
-#, fuzzy, c-format
-msgid ""
-"Cannot open the HTML file:\n"
-"%s"
-msgstr ""
-"îÅÍÏÖÌÉ×Ï ×¦ÄËÒÉÔÉ ÆÁÊÌ %s:\n"
-"%s"
-
-#: executive-summary/component/e-summary.c:938
-#, fuzzy, c-format
-msgid ""
-"Error reading data:\n"
-"%s"
-msgstr "ðÏÍÉÌËÁ ÚÞÉÔÕ×ÁÎÎÑ ÆÁÊÌÕ ÐÏÛÔÉ: %s"
-
-#: executive-summary/component/e-summary.c:956
-msgid "File does not have a place for the services.\n"
-msgstr ""
-
-#: executive-summary/component/e-summary-callbacks.c:290
-msgid ""
-"You can select a different HTML page for the background of the Executive "
-"Summary.\n"
-"\n"
-"Just leave it blank for the default"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:69
-#: executive-summary/component/e-summary-url.c:74
-#: executive-summary/component/e-summary-url.c:81
-#, c-format
-msgid "Open %s with the default GNOME application"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:70
-#, c-format
-msgid "Open %s with the default GNOME web browser"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:71
-#, fuzzy, c-format
-msgid "Send an email to %s"
-msgstr "ïÔÒÉÍÁÎÎÑ ÐÏÛÔÉ Ú %s"
-
-#: executive-summary/component/e-summary-url.c:72
-#, c-format
-msgid "Change the view to %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:73
-#, c-format
-msgid "Run %s"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:75
-#, fuzzy, c-format
-msgid "Close %s"
-msgstr "úÁËÒÉÔÉ"
-
-#: executive-summary/component/e-summary-url.c:76
-#, fuzzy, c-format
-msgid "Move %s to the left"
-msgstr "ðÅÒÅÎÅÓÔÉ × ÔÅËÕ"
-
-#: executive-summary/component/e-summary-url.c:77
-#, c-format
-msgid "Move %s to the right"
-msgstr ""
-
-#: executive-summary/component/e-summary-url.c:78
-#, fuzzy, c-format
-msgid "Move %s into the previous row"
-msgstr "ðÅÒÅÊÔÉ ÄÏ ÐÏÐÅÒÅÄÎØÏÇÏ ÅÌÅÍÅÎÔÕ"
-
-#: executive-summary/component/e-summary-url.c:79
-#, fuzzy, c-format
-msgid "Move %s into the next row"
-msgstr "ðÅÒÅÊÔÉ ÄÏ ÎÁÓÔÕÐÎÏÇÏ ÅÌÅÍÅÎÔÕ"
-
-#: executive-summary/component/e-summary-url.c:80
-#, fuzzy, c-format
-msgid "Configure %s"
-msgstr "ëÏÎƦ­ÕÒÕ×ÁÔÉ ÔÅËÕ"
-
-#: executive-summary/component/executive-summary-config.glade.h:1
-msgid "Appearance"
-msgstr ""
-
-#: executive-summary/component/executive-summary-config.glade.h:2
-msgid "Background:"
-msgstr ""
-
-#: executive-summary/component/main.c:62
-msgid ""
-"Executive summary component could not initialize Bonobo.\n"
-"If there was a warning message about the RootPOA, it probably means\n"
-"you compiled Bonobo against GOAD instead of OAF."
-msgstr ""
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:1
-msgid "Evolution component for the executive summary."
-msgstr ""
-
-#: executive-summary/GNOME_Evolution_Summary.oaf.in.h:2
-#, fuzzy
-msgid "Factory for the Evolution executive summary component."
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÐÏÛÔÏ×ÉÊ ËÏÍÐÏÎÅÎÔ Evolutuion."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:1
-msgid "Factory for the RDF summary."
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_rdf.oaf.in.h:2
-#, fuzzy
-msgid "RDF Summary"
-msgstr "îÅĦÌÑ"
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:1
-#, fuzzy
-msgid "Factory for the test bonobo component."
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÐÏÛÔÏ×ÉÊ ËÏÍÐÏÎÅÎÔ Evolutuion."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:2
-#, fuzzy
-msgid "Factory for the test component."
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÐÏÛÔÏ×ÉÊ ËÏÍÐÏÎÅÎÔ Evolutuion."
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:3
-msgid "Test bonobo service"
-msgstr ""
-
-#: executive-summary/test-service/GNOME_Evolution_Summary_test.oaf.in.h:4
-msgid "Test service"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:512
-#: executive-summary/test-service/rdf-summary.c:549
-#: executive-summary/test-service/rdf-summary.c:594
-#: widgets/misc/e-messagebox.c:166
-#, fuzzy
-msgid "Error"
-msgstr "âÅÚ ÐÏÍÉÌÏË"
-
-#: executive-summary/test-service/rdf-summary.c:768
-msgid "Update automatically"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:778
-msgid "Update now"
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:788
-msgid "Update every "
-msgstr ""
-
-#: executive-summary/test-service/rdf-summary.c:796
-#: filter/filter-datespec.c:83
-msgid "minutes"
-msgstr ""
-
-#: filter/filter-datespec.c:78
-msgid "year"
-msgstr "Ò¦Ë"
-
-#: filter/filter-datespec.c:78
-#, fuzzy
-msgid "years"
-msgstr "úÁÇÏÌÏ×ÏË"
-
-#: filter/filter-datespec.c:79
-msgid "month"
-msgstr "ͦÓÑÃØ"
-
-#: filter/filter-datespec.c:79
-#, fuzzy
-msgid "months"
-msgstr "ûÒÉÆÔÉ"
-
-#: filter/filter-datespec.c:80
-msgid "week"
-msgstr "ÔÉÖÄÅÎØ"
-
-#: filter/filter-datespec.c:80
-#, fuzzy
-msgid "weeks"
-msgstr "ôÉÖÄÅÎØ"
-
-#: filter/filter-datespec.c:81
-#, fuzzy
-msgid "days"
-msgstr "ô¦ÌÏ"
-
-#: filter/filter-datespec.c:82
-msgid "hour"
-msgstr "ÇÏÄÉÎÁ"
-
-#: filter/filter-datespec.c:82
-msgid "hours"
-msgstr ""
-
-#: filter/filter-datespec.c:83
-msgid "minute"
-msgstr "È×ÉÌÉÎÁ"
-
-#: filter/filter-datespec.c:84
-msgid "second"
-msgstr "ÓÅËÕÎÄÁ"
-
-#: filter/filter-datespec.c:84
-#, fuzzy
-msgid "seconds"
-msgstr "÷¦Ä¦ÓÌÁÔÉ"
-
-#: filter/filter-datespec.c:199
-msgid "Oops. You have forgotten to choose a date."
-msgstr ""
-
-#: filter/filter-datespec.c:201
-msgid "Oops. You have chosen an invalid date."
-msgstr ""
-
-#: filter/filter-datespec.c:276
-msgid ""
-"The message's date will be compared against\n"
-"whatever the time is when the filter is run\n"
-"or vfolder is opened."
-msgstr ""
-
-#: filter/filter-datespec.c:299
-msgid ""
-"The message's date will be compared against\n"
-"the time that you specify here."
-msgstr ""
-
-#: filter/filter-datespec.c:339
-msgid ""
-"The message's date will be compared against\n"
-"a time relative to when the filter is run;\n"
-"\"a week ago\", for example."
-msgstr ""
-
-#. keep in sync with FilterDatespec_type!
-#: filter/filter-datespec.c:374
-msgid "the current time"
-msgstr ""
-
-#: filter/filter-datespec.c:374
-msgid "a time you specify"
-msgstr ""
-
-#: filter/filter-datespec.c:375
-msgid "a time relative to the current time"
-msgstr ""
-
-#. The label
-#: filter/filter-datespec.c:433
-msgid "Compare against"
-msgstr ""
-
-#: filter/filter-datespec.c:550 filter/filter-datespec.c:710
-msgid "now"
-msgstr "ÚÁÒÁÚ"
-
-#: filter/filter-datespec.c:707
-msgid "<click here to select a date>"
-msgstr "<ËÌÁÃΦÔØ ÔÕÔ ÄÌÑ ×ÉÂÏÒÕ ÄÁÔÉ>"
-
-#: filter/filter-editor.c:132 filter/filter.glade.h:6
-msgid "Filter Rules"
-msgstr "ðÒÁ×ÉÌÁ ƦÌØÔÒÕ×ÁÎÎÑ"
-
-#. and now for the action area
-#: filter/filter-filter.c:452
-msgid "Then"
-msgstr "ôÏĦ"
-
-#: filter/filter-filter.c:466
-msgid "Add action"
-msgstr "äÏÄÁÔÉ Ä¦À"
-
-#: filter/filter-folder.c:147
-msgid ""
-"Oops, you forgot to choose a folder.\n"
-"Please go back and specify a valid folder to deliver mail to."
-msgstr ""
-
-#: filter/filter-folder.c:225 filter/vfolder-rule.c:285
-#: mail/mail-account-gui.c:682
-msgid "Select Folder"
-msgstr "÷ÉÂ¦Ò ÔÅËÉ"
-
-#: filter/filter-folder.c:250
-msgid "Enter folder URI"
-msgstr "÷×ÅĦÔØ URI ÔÅËÉ"
-
-#: filter/filter-folder.c:296
-msgid "<click here to select a folder>"
-msgstr "<ËÌÁÃΦÔØ ÔÕÔ ÄÌÑ ×ÉÂÏÒÕ ÔÅËÉ>"
-
-#: filter/filter.glade.h:4
-msgid "Edit Filters"
-msgstr "òÅÄÁÇÕ×ÁÎÎÑ ×¦ÌØÔÒ¦×"
-
-#: filter/filter.glade.h:5
-msgid "Edit VFolders"
-msgstr "÷ÉÐÒÁ×ÌÅÎÎÑ ×¦ÒÔÕÁÌØÎÉÈ ÔÅË"
-
-#: filter/filter.glade.h:7
-msgid "Incoming"
-msgstr ""
-
-#: filter/filter.glade.h:8
-msgid "Outgoing"
-msgstr ""
-
-#: filter/filter.glade.h:10 filter/vfolder-editor.c:130
-msgid "Virtual Folders"
-msgstr "÷¦ÒÔÕÁÌØΦ ÔÅËÉ"
-
-#: filter/filter.glade.h:11
-#, fuzzy
-msgid "specific folders only"
-msgstr "÷ËÁÚÁÎϧ ÔÅËÉ ÎÅ ÚÎÁÊÄÅÎÏ"
-
-#: filter/filter.glade.h:12
-#, fuzzy
-msgid "vFolder Sources"
-msgstr "ôÅËÉ"
-
-#: filter/filter.glade.h:13
-msgid "with all active remote folders"
-msgstr ""
-
-#: filter/filter.glade.h:14
-msgid "with all local and active remote folders"
-msgstr ""
-
-#: filter/filter.glade.h:15
-#, fuzzy
-msgid "with all local folders"
-msgstr "óÔ×ÏÒÉÔÉ ÎÏ×Õ ÔÅËÕ"
-
-#: filter/filter-input.c:193
-#, c-format
-msgid ""
-"Error in regular expression '%s':\n"
-"%s"
-msgstr ""
-"ðÏÍÉÌËÁ Õ ÒÅ­ÕÌÑÒÎÏÍÕ ×ÉÒÁÚ¦ \"%s\":\n"
-"%s"
-
-#: filter/filter-part.c:488
-msgid "Test"
-msgstr "ôÅÓÔ"
-
-#: filter/filter-rule.c:626
-msgid "Rule name: "
-msgstr "îÁÚ×Á ÐÒÁ×ÉÌÁ: "
-
-#: filter/filter-rule.c:630
-msgid "Untitled"
-msgstr ""
-
-#: filter/filter-rule.c:646
-msgid "If"
-msgstr "ñËÝÏ"
-
-#: filter/filter-rule.c:664
-msgid "Execute actions"
-msgstr ""
-
-#: filter/filter-rule.c:668
-msgid "if all criteria are met"
-msgstr "ÑËÝÏ ×Ó¦ צÄÐÏצÄϤ ×Ó¦Í ËÒÉÔÅÒ¦ÑÍ"
-
-#: filter/filter-rule.c:673
-msgid "if any criteria are met"
-msgstr "ÑËÝÏ ×¦ÄÐÏצÄÁ¤ ÂÕÄØ-ÑËÏÍÕ ËÒÉÔÅÒ¦À"
-
-#: filter/filter-rule.c:684
-msgid "Add criterion"
-msgstr "äÏÄÁÔÉ ËÒÉÔÅÒ¦Ê"
-
-#: filter/filter-rule.c:770
-msgid "incoming"
-msgstr ""
-
-#: filter/filter-rule.c:770
-msgid "outgoing"
-msgstr ""
-
-#: filter/libfilter-i18n.h:3
-msgid "Assign Colour"
-msgstr ""
-
-#: filter/libfilter-i18n.h:4
-msgid "Assign Score"
-msgstr ""
-
-#: filter/libfilter-i18n.h:5
-#, fuzzy
-msgid "Attachments"
-msgstr "ÄÏÌÕÞÅÎÎÑ"
-
-#: filter/libfilter-i18n.h:7
-msgid "contains"
-msgstr "ͦÓÔÉÔØ"
-
-#: filter/libfilter-i18n.h:8
-msgid "Copy to Folder"
-msgstr "óËÏЦÀ×ÁÔÉ Õ ÔÅËÕ"
-
-#: filter/libfilter-i18n.h:9
-msgid "Date received"
-msgstr "äÁÔÁ ÏÔÒÉÍÁÎÎÑ"
-
-#: filter/libfilter-i18n.h:10
-msgid "Date sent"
-msgstr "äÁÔÁ צÄÓÉÌÁÎÎÑ"
-
-#: filter/libfilter-i18n.h:12
-msgid "Deleted"
-msgstr "óÔÅÒÔÏ"
-
-#: filter/libfilter-i18n.h:13
-msgid "does not contain"
-msgstr "ΊͦÓÔÉÔØ"
-
-#: filter/libfilter-i18n.h:14
-msgid "does not end with"
-msgstr "ÎÅ ÚÁ˦ÎÞÕ¤ÔØÔÓÑ ÎÁ"
-
-#: filter/libfilter-i18n.h:15
-msgid "does not exist"
-msgstr "ÎÅ ¦ÓÎÕ¤"
-
-#: filter/libfilter-i18n.h:16
-msgid "does not sound like"
-msgstr "ÎÅ ÓÈÏÖÅ ÎÁ"
-
-#: filter/libfilter-i18n.h:17
-msgid "does not start with"
-msgstr "ÎÅ ÐÏÞÉÎÁ¤ÔØÓÑ Ú"
-
-#: filter/libfilter-i18n.h:18
-#, fuzzy
-msgid "Do Not Exist"
-msgstr "ÎÅ ¦ÓÎÕ¤"
-
-#: filter/libfilter-i18n.h:19
-msgid "Draft"
-msgstr "þÏÒÎÏ×ÉË"
-
-#: filter/libfilter-i18n.h:20
-msgid "ends with"
-msgstr "ÚÁ˦ÎÞÕ¤ÔØÓÑ ÎÁ"
-
-#: filter/libfilter-i18n.h:21
-#, fuzzy
-msgid "Exist"
-msgstr "÷ÉÊÔÉ"
-
-#: filter/libfilter-i18n.h:22
-msgid "exists"
-msgstr "¦ÓÎÕ¤"
-
-#: filter/libfilter-i18n.h:23
-msgid "Expression"
-msgstr "÷ÉÒÁÚ"
-
-#: filter/libfilter-i18n.h:24
-msgid "Forward to Address"
-msgstr "ðÅÒÅÓÌÁÔÉ ÎÁ ÁÄÒÅÓÕ"
-
-#: filter/libfilter-i18n.h:25
-msgid "Important"
-msgstr "÷ÁÖÌÉ×Ï"
-
-#: filter/libfilter-i18n.h:26
-msgid "is"
-msgstr ""
-
-#: filter/libfilter-i18n.h:27
-msgid "is greater than"
-msgstr "¦ÌØÛÅ"
-
-#: filter/libfilter-i18n.h:28
-msgid "is less than"
-msgstr "ÍÅÎÛÅ"
-
-#: filter/libfilter-i18n.h:29
-msgid "is not"
-msgstr ""
-
-#: filter/libfilter-i18n.h:30
-#, fuzzy
-msgid "Mailing list"
-msgstr "óÐÉÓÏË ÒÏÚÓÉÌËÉ %s"
-
-#: filter/libfilter-i18n.h:31
-msgid "Message Body"
-msgstr "ô¦ÌÏ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: filter/libfilter-i18n.h:32
-msgid "Message Header"
-msgstr "úÁÇÏÌÏ×ÏË ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: filter/libfilter-i18n.h:33
-msgid "Message was received"
-msgstr "ðÏצÄÏÍÌÅÎÎÑ ÂÕÌÏ ÏÔÒÉÍÁÎÏ"
-
-#: filter/libfilter-i18n.h:34
-msgid "Message was sent"
-msgstr "ðÏצÄÏÍÌÅÎÎÑ ÂÕÌÏ ×¦Ä¦ÓÌÁÎÏ"
-
-#: filter/libfilter-i18n.h:35
-msgid "Move to Folder"
-msgstr "ðÅÒÅÎÅÓÔÉ × ÔÅËÕ"
-
-#: filter/libfilter-i18n.h:36
-#, fuzzy
-msgid "on or after"
-msgstr "ë¦ÎÃÅ×Á ÄÁÔÁ"
-
-#: filter/libfilter-i18n.h:37
-msgid "on or before"
-msgstr ""
-
-#: filter/libfilter-i18n.h:38
-msgid "Read"
-msgstr "ðÒÏÞÉÔÁÎÏ"
-
-#: filter/libfilter-i18n.h:39
-msgid "Recipients"
-msgstr "áÄÒÅÓÁÔÉ"
-
-#: filter/libfilter-i18n.h:40
-msgid "Regex Match"
-msgstr ""
-
-#: filter/libfilter-i18n.h:41
-#, fuzzy
-msgid "Replied to"
-msgstr "÷¦ÄÐÏצÓÔÉ ×Ó¦Í"
-
-#: filter/libfilter-i18n.h:42 filter/score-rule.c:204 filter/score-rule.c:206
-#: mail/message-list.c:1082
-#, fuzzy
-msgid "Score"
-msgstr "íϦÌØÎÉÊ"
-
-#: filter/libfilter-i18n.h:43
-msgid "Sender"
-msgstr "÷¦ÄÐÒÁ×ÎÉË"
-
-#: filter/libfilter-i18n.h:44
-#, fuzzy
-msgid "Set Status"
-msgstr "óÔÁÎ:"
-
-#: filter/libfilter-i18n.h:45
-msgid "sounds like"
-msgstr "ÓÈÏÖÅ ÎÁ"
-
-#: filter/libfilter-i18n.h:46
-#, fuzzy
-msgid "Source Account"
-msgstr "åÌÅËÔÒÏÎÎÁ ÁÄÒÅÓÁ ͦÓÔÉÔØ"
-
-#: filter/libfilter-i18n.h:47
-msgid "Specific header"
-msgstr ""
-
-#: filter/libfilter-i18n.h:48
-msgid "starts with"
-msgstr "ÐÏÞÉÎÁ¤ÔØÓÑ ÎÁ"
-
-#: filter/libfilter-i18n.h:50
-msgid "Stop Processing"
-msgstr ""
-
-#: filter/libfilter-i18n.h:51 mail/message-list.c:1083
-msgid "Subject"
-msgstr "ôÅÍÁ"
-
-#: filter/libfilter-i18n.h:52
-msgid "was after"
-msgstr "ÂÕÌÏ ÐÅÒÅÄ"
-
-#: filter/libfilter-i18n.h:53
-msgid "was before"
-msgstr "ÂÕÌÏ Ð¦ÓÌÑ"
-
-#: filter/rule-editor.c:147
-#, fuzzy
-msgid "Rules"
-msgstr "íϦÌØÎÉÊ"
-
-#: filter/rule-editor.c:240
-#, fuzzy
-msgid "Add Rule"
-msgstr "òÅÄÁÇÕ×ÁÎÎÑ"
-
-#: filter/rule-editor.c:299
-#, fuzzy
-msgid "Edit Rule"
-msgstr "÷ÉÐÒÁ×ÌÅÎÎÑ ÐÏ×ÎÏÇÏ ¦ÍÅΦ"
-
-#: filter/score-editor.c:130
-#, fuzzy
-msgid "Score Rules"
-msgstr "íϦÌØÎÉÊ"
-
-#: mail/component-factory.c:329
-msgid "Cannot initialize Evolution's mail component."
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÐÏÛÔÏ×ÉÊ ËÏÍÐÏÎÅÎÔ Evolutuion."
-
-#: mail/component-factory.c:402
-msgid "Cannot register storage with shell"
-msgstr ""
-
-#: mail/folder-browser.c:253
-#, fuzzy
-msgid "Store search as vFolder"
-msgstr "÷ÉÂ¦Ò ÔÅËÉ"
-
-#: mail/folder-browser.c:561 ui/evolution-mail.xml.h:91
-#, fuzzy
-msgid "VFolder on _Subject"
-msgstr "÷¦ÒÔÕÁÌØÎÁ ÔÅËÁ ÔÅÍÉ"
-
-#: mail/folder-browser.c:564 ui/evolution-mail.xml.h:89
-msgid "VFolder on Se_nder"
-msgstr "÷¦ÒÔÕÁÌØÎÁ ÔÅËÁ צÄÐÒÁ×ÎÉËÁ"
-
-#: mail/folder-browser.c:567 ui/evolution-mail.xml.h:90
-msgid "VFolder on _Recipients"
-msgstr "÷¦ÒÔÕÁÌØÎÁ ÔÅËÁ ÏÔÒÉÍÕ×ÁÞ¦×"
-
-#: mail/folder-browser.c:570 ui/evolution-mail.xml.h:88
-#, fuzzy
-msgid "VFolder on Mailing _List"
-msgstr "æ¦ÌØÔÒ ÓÐÉÓËÕ ÒÏÚÓÉÌËÉ"
-
-#: mail/folder-browser.c:576
-msgid "Filter on Sub_ject"
-msgstr "æ¦ÌØÔÒ ÔÅÍÉ"
-
-#: mail/folder-browser.c:579
-msgid "Filter on Sen_der"
-msgstr "æ¦ÌØÔÒ ×¦ÄÐÒÁ×ÎÉËÁ"
-
-#: mail/folder-browser.c:582
-msgid "Filter on Re_cipients"
-msgstr "æ¦ÌØÔÒ ÏÔÒÉÍÕ×ÁÞ¦×"
-
-#: mail/folder-browser.c:585
-msgid "Filter on _Mailing List"
-msgstr "æ¦ÌØÔÒ ÓÐÉÓËÕ ÒÏÚÓÉÌËÉ"
-
-#: mail/folder-browser.c:594
-msgid "_Open"
-msgstr "÷¦ÄËÒÉÔÉ"
-
-#: mail/folder-browser.c:596
-msgid "Resend"
-msgstr ""
-
-#: mail/folder-browser.c:598 ui/evolution-calendar.xml.h:43
-#: ui/evolution-mail.xml.h:113 ui/evolution-tasks.xml.h:8
-msgid "_Save As..."
-msgstr "úÂÅÒÅÇÔÉ ÑË..."
-
-#: mail/folder-browser.c:600 ui/evolution-event-editor.xml.h:69
-#: ui/evolution-task-editor-dialog.xml.h:82 ui/evolution-tasks.xml.h:7
-msgid "_Print"
-msgstr "äÒÕËÕ×ÁÔÉ"
-
-#: mail/folder-browser.c:605
-#, fuzzy
-msgid "_Reply to Sender"
-msgstr "÷¦ÄÐÏצÓÔÉ ×¦ÄÐÒÁ×ÎÉËÕ"
-
-#: mail/folder-browser.c:607 ui/evolution-mail.xml.h:66
-msgid "Reply to _All"
-msgstr "÷¦ÄÐÏצÓÔÉ ×Ó¦Í"
-
-#: mail/folder-browser.c:609 ui/evolution-mail.xml.h:102
-msgid "_Forward"
-msgstr "ðÅÒÅÓÌÁÔÉ"
-
-#: mail/folder-browser.c:611
-#, fuzzy
-msgid "Forward _inline"
-msgstr "ðÅÒÅÓÌÁÔÉ"
-
-#: mail/folder-browser.c:614 ui/evolution-mail.xml.h:40
-msgid "Mar_k as Read"
-msgstr "ðÏÚÎÁÞÉÔÉ ÐÒÏÞÉÔÁÎÉÍ"
-
-#: mail/folder-browser.c:616 ui/evolution-mail.xml.h:44
-msgid "Mark as U_nread"
-msgstr "ðÏÚÎÁÞÉÔÉ ÎÅÐÒÏÞÉÔÁÎÉÍ"
-
-#: mail/folder-browser.c:621 ui/evolution-mail.xml.h:107
-msgid "_Move to Folder..."
-msgstr "ðÅÒÅÎÅÓÔÉ × ÔÅËÕ..."
-
-#: mail/folder-browser.c:623 ui/evolution-mail.xml.h:96
-msgid "_Copy to Folder..."
-msgstr "óËÏЦÀ×ÁÔÉ × ÔÅËÕ..."
-
-#: mail/folder-browser.c:627 ui/evolution-mail.xml.h:118
-msgid "_Undelete"
-msgstr "÷¦ÄÎÏ×ÉÔÉ"
-
-#. { _("Add Sender to Address Book"), NULL,
-#. GTK_SIGNAL_FUNC (addrbook_sender), NULL, 0 },
-#. { "", NULL,
-#. GTK_SIGNAL_FUNC (NULL), NULL, 0 },
-#: mail/folder-browser.c:637 ui/evolution-mail.xml.h:1
-msgid "Apply Filters"
-msgstr "úÁÓÔÏÓÕ×ÁÔÉ Æ¦ÌØÔÒÉ"
-
-#: mail/folder-browser.c:641
-#, fuzzy
-msgid "Create Ru_le From Message"
-msgstr "óÔ×ÏÒÉÔÉ ÐÒÁ×ÉÌÏ Ú ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: mail/folder-browser.c:780
-msgid "Filter on Mailing List"
-msgstr "æ¦ÌØÔÒ ÓÐÉÓËÕ ÒÏÚÓÉÌËÉ"
-
-#: mail/folder-browser.c:781
-#, fuzzy
-msgid "VFolder on Mailing List"
-msgstr "æ¦ÌØÔÒ ÓÐÉÓËÕ ÒÏÚÓÉÌËÉ"
-
-#: mail/folder-browser.c:783
-#, c-format
-msgid "Filter on Mailing List (%s)"
-msgstr "æ¦ÌØÔÒ ÓÐÉÓËÕ ÒÏÚÓÉÌËÉ (%s)"
-
-#: mail/folder-browser.c:784
-#, fuzzy, c-format
-msgid "VFolder on Mailing List (%s)"
-msgstr "æ¦ÌØÔÒ ÓÐÉÓËÕ ÒÏÚÓÉÌËÉ (%s)"
-
-#: mail/folder-browser-factory.c:213
-#, fuzzy, c-format
-msgid "Properties for \"%s\""
-msgstr "÷ÌÁÓÔÉ×ÏÓÔ¦"
-
-#: mail/folder-browser-factory.c:215 ui/evolution-event-editor.xml.h:39
-#: ui/evolution-task-editor-dialog.xml.h:42
-msgid "Properties"
-msgstr "÷ÌÁÓÔÉ×ÏÓÔ¦"
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:1
-msgid "Evolution component for handling mail."
-msgstr ""
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:2
-#, fuzzy
-msgid "Evolution mail composer."
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÐÏÛÔÏ×ÉÊ ËÏÍÐÏÎÅÎÔ Evolutuion."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:3
-#, fuzzy
-msgid "Evolution mail executive summary component."
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÐÏÛÔÏ×ÉÊ ËÏÍÐÏÎÅÎÔ Evolutuion."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:4
-#, fuzzy
-msgid "Evolution mail folder display component."
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÐÏÛÔÏ×ÉÊ ËÏÍÐÏÎÅÎÔ Evolutuion."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:5
-#, fuzzy
-msgid "Evolution mail folder factory component."
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÐÏÛÔÏ×ÉÊ ËÏÍÐÏÎÅÎÔ Evolutuion."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:6
-#, fuzzy
-msgid "Factory for the Evolution composer."
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÐÏÛÔÏ×ÉÊ ËÏÍÐÏÎÅÎÔ Evolutuion."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:7
-#, fuzzy
-msgid "Factory for the Evolution mail component."
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÐÏÛÔÏ×ÉÊ ËÏÍÐÏÎÅÎÔ Evolutuion."
-
-#: mail/GNOME_Evolution_Mail.oaf.in.h:8
-#, fuzzy
-msgid "Factory for the Mail Summary component."
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÐÏÛÔÏ×ÉÊ ËÏÍÐÏÎÅÎÔ Evolutuion."
-
-#: mail/importers/elm-importer.c:420
-msgid ""
-"Evolution has found Elm mail files.\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-
-#: mail/importers/elm-importer.c:430
-#, fuzzy
-msgid "Elm mail"
-msgstr "å-ÐÏÛÔÁ"
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:1
-#, fuzzy
-msgid "Factory to import mbox into Evolution"
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÐÏÛÔÏ×ÉÊ ËÏÍÐÏÎÅÎÔ Evolutuion."
-
-#: mail/importers/GNOME_Evolution_Mail_Mbox_Importer.oaf.in.h:2
-msgid "Imports mbox files into Evolution"
-msgstr ""
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:1
-msgid "Factory to import Outlook Express 4 mails into Evolution"
-msgstr ""
-
-#: mail/importers/GNOME_Evolution_Mail_Outlook_Importer.oaf.in.h:2
-msgid "Imports Outlook Express 4 files into Evolution"
-msgstr ""
-
-#: mail/importers/netscape-importer.c:440
-msgid ""
-"Evolution has found Netscape mail files.\n"
-"Would you like them to be imported into Evolution?"
-msgstr ""
-
-#: mail/importers/pine-importer.c:385
-msgid ""
-"Evolution has found Pine mail files.\n"
-"Would you like to import them into Evolution?"
-msgstr ""
-
-#: mail/importers/pine-importer.c:395
-#, fuzzy
-msgid "Pine mail"
-msgstr "ðÅÒ×ÉÎÎÁ Å-ÐÏÛÔÁ"
-
-#: mail/local-config.glade.h:1
-#, fuzzy
-msgid "Current store format:"
-msgstr "îÅ ×ÄÁÌÏÓØ ÚÁÐÕÓÔÉÔÉ Wombat"
-
-#: mail/local-config.glade.h:2
-#, fuzzy
-msgid "Mailbox Format"
-msgstr "æÏÒÍÁÔ"
-
-#: mail/local-config.glade.h:3
-#, fuzzy
-msgid "New store format:"
-msgstr "îÏ×ÉÊ ÔÉÐ ÔÅÌÅÆÏÎÁ"
-
-#: mail/local-config.glade.h:4
-msgid ""
-"Note: When converting between mailbox formats, a failure\n"
-"(such as lack of disk space) may not be automatically\n"
-"recoverable. Please use this feature with care."
-msgstr ""
-
-#: mail/local-config.glade.h:7
-#, fuzzy
-msgid "maildir"
-msgstr "å-ÐÏÛÔÁ 2"
-
-#: mail/local-config.glade.h:8
-msgid "mbox"
-msgstr "mbox"
-
-#: mail/local-config.glade.h:9
-msgid "mh"
-msgstr "mh"
-
-#: mail/mail-account-editor.c:105
-msgid "You have not filled in all of the required information."
-msgstr ""
-
-#. give our dialog an OK button and title
-#: mail/mail-account-editor.c:173
-#, fuzzy
-msgid "Evolution Account Editor"
-msgstr "¶ÎÓÔÁÌÑÃ¦Ñ Evolution"
-
-#: mail/mail-accounts.c:121 mail/mail-accounts.c:165
-#, fuzzy
-msgid " (default)"
-msgstr "óÔÅÒÔÉ"
-
-#: mail/mail-accounts.c:197
-msgid "Disable"
-msgstr ""
-
-#: mail/mail-accounts.c:199 mail/mail-config.glade.h:25
-msgid "Enable"
-msgstr ""
-
-#: mail/mail-accounts.c:280 mail/mail-accounts.c:284
-#, fuzzy
-msgid "Are you sure you want to delete this account?"
-msgstr "÷É ×ÐÅ×ÎÅΦ, ÝÏ ÈÏÞÅÔÅ ÓÔÅÒÔÉ ÚÁ×ÄÁÎÎÑ"
-
-#: mail/mail-accounts.c:418 mail/mail-accounts.c:422
-#, fuzzy
-msgid "Are you sure you want to delete this news account?"
-msgstr "÷É ×ÐÅ×ÎÅΦ, ÝÏ ÈÏÞÅÔÅ ÓÔÅÒÔÉ ÚÕÓÔÒ¦Þ"
-
-#. give our dialog an OK button and title
-#: mail/mail-accounts.c:536
-msgid "Evolution Account Manager"
-msgstr ""
-
-#: mail/mail-autofilter.c:70
-#, c-format
-msgid "Mail to %s"
-msgstr ""
-
-#: mail/mail-autofilter.c:213
-#, c-format
-msgid "Subject is %s"
-msgstr "ôÅÍÁ - %s"
-
-#: mail/mail-autofilter.c:229
-#, c-format
-msgid "Mail from %s"
-msgstr "ðÏÛÔÁ ×¦Ä %s"
-
-#: mail/mail-autofilter.c:285
-#, c-format
-msgid "%s mailing list"
-msgstr "óÐÉÓÏË ÒÏÚÓÉÌËÉ %s"
-
-#: mail/mail-autofilter.c:335 mail/mail-autofilter.c:356
-#, fuzzy
-msgid "Add Filter Rule"
-msgstr "òÅÄÁÇÕ×ÁÎÎÑ"
-
-#: mail/mail-callbacks.c:96
-msgid ""
-"You have not configured the mail client.\n"
-"You need to do this before you can send,\n"
-"receive or compose mail.\n"
-"Would you like to configure it now?"
-msgstr ""
-
-#: mail/mail-callbacks.c:149
-msgid ""
-"You need to configure an identity\n"
-"before you can compose mail."
-msgstr ""
-
-#: mail/mail-callbacks.c:161
-msgid ""
-"You need to configure a mail transport\n"
-"before you can compose mail."
-msgstr ""
-
-#: mail/mail-callbacks.c:205
-msgid "You have not set a mail transport method"
-msgstr ""
-
-#: mail/mail-callbacks.c:238
-msgid ""
-"This message has no subject.\n"
-"Really send?"
-msgstr ""
-
-#: mail/mail-callbacks.c:311
-msgid "You must specify recipients in order to send this message."
-msgstr ""
-
-#: mail/mail-callbacks.c:354
-msgid "You must configure an account before you can send this email."
-msgstr ""
-
-#: mail/mail-callbacks.c:593
-#, c-format
-msgid "On %s, %s wrote:"
-msgstr ""
-
-#: mail/mail-callbacks.c:774
-msgid "Forwarded message:\n"
-msgstr "ðÅÒÅÓÌÁÎÅ ÐÏצÄÏÍÌÅÎÎÑ:\n"
-
-#: mail/mail-callbacks.c:877
-#, fuzzy
-msgid "Move message(s) to"
-msgstr "÷¦Ä¦ÓÌÁΦ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: mail/mail-callbacks.c:879
-#, fuzzy
-msgid "Copy message(s) to"
-msgstr "÷¦Ä¦ÓÌÁΦ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: mail/mail-callbacks.c:1156
-#, fuzzy, c-format
-msgid "Are you sure you want to edit all %d messages?"
-msgstr "÷É ×ÐÅ×ÎÅΦ, ÝÏ ÈÏÞÅÔÅ ÓÔÅÒÔÉ ÚÁ×ÄÁÎÎÑ \"%s\"?"
-
-#: mail/mail-callbacks.c:1170
-msgid ""
-"You may only edit messages saved\n"
-"in the Drafts folder."
-msgstr ""
-
-#: mail/mail-callbacks.c:1202
-msgid ""
-"You may only resend messages\n"
-"in the Sent folder."
-msgstr ""
-
-#: mail/mail-callbacks.c:1224
-#, fuzzy
-msgid "No Message Selected"
-msgstr "ðÏצÄÏÍÌÅÎÎÑ ÂÕÌÏ ÏÔÒÉÍÁÎÏ"
-
-#: mail/mail-callbacks.c:1250 mail/mail-display.c:90
-msgid "Overwrite file?"
-msgstr "ðÅÒÅÐÉÓÁÔÉ ÆÁÊÌ?"
-
-#: mail/mail-callbacks.c:1254 mail/mail-display.c:94
-msgid ""
-"A file by that name already exists.\n"
-"Overwrite it?"
-msgstr ""
-"æÁÊÌ Ú Ã¦¤À ÎÁÚ×ÏÀ ×ÖÅ ¦ÓÎÕ¤.\n"
-"ðÅÒÅÐÉÓÁÔÉ ÊÏÇÏ?"
-
-#: mail/mail-callbacks.c:1298
-msgid "Save Message As..."
-msgstr "úÂÅÒÅÇÔÉ ÐÏצÄÏÍÌÅÎÎÑ ÑË..."
-
-#: mail/mail-callbacks.c:1300
-msgid "Save Messages As..."
-msgstr "úÂÅÒÅÇÔÉ ÐÏצÄÏÍÌÅÎÎÑ ÑË..."
-
-#: mail/mail-callbacks.c:1435
-#, fuzzy, c-format
-msgid ""
-"Error loading filter information:\n"
-"%s"
-msgstr "ðÏÍÉÌËÁ ÚÁ×ÁÎÔÁÖÅÎÎÑ ÆÁÊÌÕ: %s"
-
-#: mail/mail-callbacks.c:1484 ui/evolution-mail.xml.h:56
-msgid "Print Message"
-msgstr "îÁÄÒÕËÕ×ÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: mail/mail-callbacks.c:1531
-msgid "Printing of message failed"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÎÁÄÒÕËÕ×ÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: mail/mail-callbacks.c:1609
-#, fuzzy, c-format
-msgid "Are you sure you want to open all %d messages in separate windows?"
-msgstr "÷É ×ÐÅ×ÎÅΦ, ÝÏ ÈÏÞÅÔÅ ÓÔÅÒÔÉ ÚÕÓÔÒ¦Þ"
-
-#: mail/mail-config.c:1121 mail/mail-config.c:1124
-msgid "Connecting to server..."
-msgstr "ú'¤ÄÎÁÎÎÑ Ú ÓÅÒ×ÅÒÏÍ..."
-
-#: mail/mail-config-druid.c:99
-msgid ""
-"Please enter your name and email address below. The \"optional\" fields "
-"below do not need to be filled in, unless you wish to include this "
-"information in email you send."
-msgstr ""
-
-#: mail/mail-config-druid.c:101
-msgid ""
-"Please enter information about your incoming mail server below. If you don't "
-"know what kind of server you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-
-#: mail/mail-config-druid.c:105
-msgid ""
-"Please enter information about your outgoing mail protocol below. If you "
-"don't know which protocol you use, contact your system administrator or "
-"Internet Service Provider."
-msgstr ""
-
-#: mail/mail-config-druid.c:107
-msgid ""
-"You are almost done with the mail configuration process. The identity, "
-"incoming mail server and outgoing mail transport method which you provided "
-"will be grouped together to make an Evolution mail account. Please enter a "
-"name for this account in the space below. This name will be used for display "
-"purposes only."
-msgstr ""
-
-#. set window title
-#: mail/mail-config-druid.c:445
-msgid "Evolution Account Wizard"
-msgstr ""
-
-#: mail/mail-config.glade.h:1
-#, fuzzy
-msgid " Check for supported types "
-msgstr "÷ÉÚÎÁÞÉÔÉ ÔÉÐÉ, ÝÏ Ð¦ÄÔÒÉÍÕÀÔØÓÑ..."
-
-#: mail/mail-config.glade.h:2
-msgid " color"
-msgstr " ËÏ̦Ò"
-
-#: mail/mail-config.glade.h:3
-#, fuzzy
-msgid "Account"
-msgstr "åÌÅËÔÒÏÎÎÁ ÁÄÒÅÓÁ ͦÓÔÉÔØ"
-
-#: mail/mail-config.glade.h:4
-#, fuzzy
-msgid "Account Information"
-msgstr "îÅÍÁ¤ ¦ÎÆÏÒÍÁæ§"
-
-#: mail/mail-config.glade.h:5
-msgid "Account Management"
-msgstr ""
-
-#: mail/mail-config.glade.h:6
-#, fuzzy
-msgid "Accounts"
-msgstr "åÌÅËÔÒÏÎÎÁ ÁÄÒÅÓÁ ͦÓÔÉÔØ"
-
-#: mail/mail-config.glade.h:8
-msgid "Authentication"
-msgstr "á×ÔÅÎƦËÁæÑ"
-
-#: mail/mail-config.glade.h:9
-msgid "Authentication Type: "
-msgstr "ôÉÐ Á×ÔÅÎƦËÁæ§: "
-
-#: mail/mail-config.glade.h:10
-msgid "Automatically check for new mail every"
-msgstr ""
-
-#: mail/mail-config.glade.h:12
-msgid ""
-"Congratulations, your mail configuration is complete.\n"
-"\n"
-"You are now ready to send and receive email \n"
-"using Evolution. \n"
-"\n"
-"Click \"Finish\" to save your settings."
-msgstr ""
-
-#: mail/mail-config.glade.h:18
-#, fuzzy
-msgid "De_fault"
-msgstr "óÔÅÒÔÉ"
-
-#: mail/mail-config.glade.h:20
-#, fuzzy
-msgid "Done"
-msgstr "îÅÍÁ¤"
-
-#: mail/mail-config.glade.h:21
-msgid "Drafts"
-msgstr "þÏÒÎÏ×ÉËÉ"
-
-#: mail/mail-config.glade.h:22
-#, fuzzy
-msgid "Drafts folder:"
-msgstr "óÔ×ÏÒÅÎÎÑ ÎÏ×ϧ ÔÅËÉ"
-
-#: mail/mail-config.glade.h:24
-msgid "Email Address:"
-msgstr "åÌÅËÔÒÏÎÎÁ ÁÄÒÅÓÁ:"
-
-#: mail/mail-config.glade.h:26
-msgid "Full Name:"
-msgstr "ðÏ×ÎÅ ¦Í'Ñ:"
-
-#: mail/mail-config.glade.h:27
-msgid "Highlight citations with "
-msgstr ""
-
-#: mail/mail-config.glade.h:29
-msgid "IMAPv4 "
-msgstr "IMAPv4 "
-
-#: mail/mail-config.glade.h:30
-msgid "Identity"
-msgstr ""
-
-#: mail/mail-config.glade.h:31
-msgid "Kerberos "
-msgstr "Kerberos "
-
-#: mail/mail-config.glade.h:32
-msgid "Mail Configuration"
-msgstr "ëÏÎƦ­ÕÒÁÃ¦Ñ ÐÏÛÔÉ"
-
-#: mail/mail-config.glade.h:33
-msgid "Make this my default account"
-msgstr ""
-
-#: mail/mail-config.glade.h:34
-#, fuzzy
-msgid "Mark messages as \"Read\" after:"
-msgstr "úÂÅÒÅÇÔÉ ÐÏצÄÏÍÌÅÎÎÑ Õ ×ËÁÚÁÎ¦Ê ÔÅæ"
-
-#: mail/mail-config.glade.h:36
-#, fuzzy
-msgid "News"
-msgstr "îÏ×ÉÊ"
-
-#: mail/mail-config.glade.h:38
-#, fuzzy
-msgid "Optional Information"
-msgstr "îÅÍÁ¤ ¦ÎÆÏÒÍÁæ§"
-
-#: mail/mail-config.glade.h:39
-msgid "Organization:"
-msgstr "ïÒ¦¤ÎÔÁæÑ:"
-
-#: mail/mail-config.glade.h:41
-#, fuzzy
-msgid "PGP binary path:"
-msgstr "ûÉÆÒÕ×ÁÎÎÑ PGP"
-
-#: mail/mail-config.glade.h:46
-msgid "Qmail maildir "
-msgstr ""
-
-#: mail/mail-config.glade.h:47
-#, fuzzy
-msgid "Receiving Email"
-msgstr "Sendmail"
-
-#: mail/mail-config.glade.h:48
-msgid "Receiving Mail"
-msgstr ""
-
-#: mail/mail-config.glade.h:49
-msgid "Receiving Options"
-msgstr ""
-
-#: mail/mail-config.glade.h:51
-#, fuzzy
-msgid "Required Information"
-msgstr "îÅÍÁ¤ ¦ÎÆÏÒÍÁæ§"
-
-#: mail/mail-config.glade.h:53
-msgid "Select PGP binary"
-msgstr ""
-
-#: mail/mail-config.glade.h:54
-#, fuzzy
-msgid "Send mail in HTML format by default."
-msgstr "÷¦Ä¦ÓÌÁÔÉ ÐÏÛÔÕ × ÆÏÒÍÁÔ¦ HTML"
-
-#: mail/mail-config.glade.h:55
-#, fuzzy
-msgid "Sending Email"
-msgstr "Sendmail"
-
-#: mail/mail-config.glade.h:56
-#, fuzzy
-msgid "Sending Mail"
-msgstr "Sendmail"
-
-#: mail/mail-config.glade.h:58
-msgid "Sent"
-msgstr "÷¦Ä¦ÓÌÁÎÏ"
-
-#: mail/mail-config.glade.h:59
-#, fuzzy
-msgid "Sent and Draft Messages"
-msgstr "÷¦Ä¦ÓÌÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ ÎÅÇÁÊÎÏ"
-
-#: mail/mail-config.glade.h:60
-#, fuzzy
-msgid "Sent messages folder:"
-msgstr "÷¦Ä¦ÓÌÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ Ð¦ÚΦÛÅ"
-
-#: mail/mail-config.glade.h:61
-#, fuzzy
-msgid "Server Configuration"
-msgstr "ëÏÎƦ­ÕÒÁÃ¦Ñ ÐÏÛÔÉ"
-
-#: mail/mail-config.glade.h:62
-#, fuzzy
-msgid "Server Type: "
-msgstr "óÅÒ×ÅÒ:"
-
-#: mail/mail-config.glade.h:63
-msgid "Server requires authentication"
-msgstr ""
-
-#: mail/mail-config.glade.h:64
-msgid "Signature file:"
-msgstr "æÁÊÌ Ð¦ÄÐÉÓÕ:"
-
-#: mail/mail-config.glade.h:65
-msgid "Sources"
-msgstr "äÖÅÒÅÌÁ"
-
-#: mail/mail-config.glade.h:66
-#, fuzzy
-msgid "Special Folders"
-msgstr "÷¦ÒÔÕÁÌØΦ ÔÅËÉ"
-
-#: mail/mail-config.glade.h:67
-msgid "Standard Unix mbox"
-msgstr ""
-
-#: mail/mail-config.glade.h:68
-#, fuzzy
-msgid "Type"
-msgstr "ôÉÐ:"
-
-#: mail/mail-config.glade.h:69
-msgid "Use secure connection (SSL)"
-msgstr ""
-
-#: mail/mail-config.glade.h:70
-msgid "Username:"
-msgstr "îÁÚ×Á ËÏÒÉÓÔÕ×ÁÞÁ:"
-
-#: mail/mail-config.glade.h:71
-msgid ""
-"Welcome to the Evolution Mail Configuration Druid.\n"
-"\n"
-"Click \"Next\" to begin. "
-msgstr ""
-
-#: mail/mail-config.glade.h:76 ui/evolution-event-editor.xml.h:58
-#: ui/evolution-message-composer.xml.h:43 ui/evolution-subscribe.xml.h:10
-#: ui/evolution-task-editor-dialog.xml.h:70 ui/evolution.xml.h:30
-msgid "_Edit"
-msgstr "òÅÄÁÇÕ×ÁÎÎÑ"
-
-#: mail/mail-display.c:194
-msgid "Save Attachment"
-msgstr "úÂÅÒÅÇÔÉ ÄÏÌÕÞÅÎÎÑ"
-
-#: mail/mail-display.c:234
-#, c-format
-msgid "Could not create temporary directory: %s"
-msgstr "îÅÍÏÖÌÉ×Ï ÓÔ×ÏÒÉÔÉ ÔÉÍÞÁÓÏ×ÉÊ ËÁÔÁÌÏÇ: %s"
-
-#: mail/mail-display.c:295
-msgid "Save to Disk..."
-msgstr "úÂÅÒÅÇÔÉ ÎÁ ÄÉÓË..."
-
-#: mail/mail-display.c:297
-#, c-format
-msgid "Open in %s..."
-msgstr "÷¦ÄËÒÉÔÉ × %s..."
-
-#: mail/mail-display.c:299
-msgid "View Inline"
-msgstr ""
-
-#: mail/mail-display.c:334
-msgid "External Viewer"
-msgstr ""
-
-#: mail/mail-display.c:357
-#, c-format
-msgid "View Inline (via %s)"
-msgstr ""
-
-#: mail/mail-display.c:361
-msgid "Hide"
-msgstr "ðÒÉÂÒÁÔÉ"
-
-#: mail/mail-display.c:1107
-#, fuzzy
-msgid "Open link in browser"
-msgstr "÷¦ÄËÒÉÔÉ Õ ÎÏ×ÏÍÕ ×¦ËΦ"
-
-#: mail/mail-display.c:1109
-#, fuzzy
-msgid "Save as (FIXME)"
-msgstr "úÁ×ÄÁÎÎÑ"
-
-#: mail/mail-display.c:1111
-#, fuzzy
-msgid "Copy location (FIXME)"
-msgstr "ëÏÎÔÁËÔ"
-
-#: mail/mail-format.c:522
-#, fuzzy, c-format
-msgid "%s attachment"
-msgstr "ÄÏÌÕÞÅÎÎÑ"
-
-#: mail/mail-format.c:564
-msgid "Could not parse MIME message. Displaying as source."
-msgstr ""
-
-#: mail/mail-format.c:771
-#, fuzzy
-msgid "Loading message content"
-msgstr "ðÅÒÅÓÉÌÁÎÎÑ ÐÏצÄÏÍÌÅÎØ \"%s\""
-
-#: mail/mail-format.c:1071
-#, fuzzy
-msgid "No GPG/PGP program configured."
-msgstr "ðÒÏÇÒÁÍÁ GPG/PGP ÎÅ ÄÏÓÐÕÎÁ."
-
-#: mail/mail-format.c:1086
-msgid "Encrypted message not displayed"
-msgstr ""
-
-#: mail/mail-format.c:1092
-msgid "Encrypted message"
-msgstr "úÁÛÉÆÒÏ×ÁÎÅ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: mail/mail-format.c:1093
-msgid "Click icon to decrypt."
-msgstr ""
-
-#: mail/mail-format.c:1183 mail/mail-format.c:1571
-msgid "This message is digitally signed and has been found to be authentic."
-msgstr ""
-
-#: mail/mail-format.c:1191 mail/mail-format.c:1579
-msgid "This message is digitally signed but can not be proven to be authentic."
-msgstr ""
-
-#: mail/mail-format.c:1792
-#, c-format
-msgid "Pointer to FTP site (%s)"
-msgstr ""
-
-#: mail/mail-format.c:1804
-#, c-format
-msgid "Pointer to local file (%s) valid at site \"%s\""
-msgstr ""
-
-#: mail/mail-format.c:1808
-#, c-format
-msgid "Pointer to local file (%s)"
-msgstr ""
-
-#: mail/mail-format.c:1842
-#, c-format
-msgid "Pointer to unknown external data (\"%s\" type)"
-msgstr ""
-
-#: mail/mail-format.c:1847
-msgid "Malformed external-body part."
-msgstr ""
-
-#: mail/mail-local.c:337
-#, fuzzy, c-format
-msgid "No such folder %s"
-msgstr "îÅצÒÎÁ ÔÅËÁ \"%s\"."
-
-#: mail/mail-local.c:509
-#, fuzzy, c-format
-msgid "Opening '%s'"
-msgstr "÷¦ÄËÒÉÔÉ × %s..."
-
-#: mail/mail-local.c:787
-#, c-format
-msgid "Changing folder \"%s\" to \"%s\" format"
-msgstr ""
-
-#: mail/mail-local.c:791
-#, c-format
-msgid "Change folder \"%s\" to \"%s\" format"
-msgstr ""
-
-#: mail/mail-local.c:814
-#, fuzzy
-msgid "Reconfiguring folder"
-msgstr "ëÏÎƦ­ÕÒÕ×ÁÔÉ ÔÅËÕ"
-
-#. first, 'close' the old folder
-#: mail/mail-local.c:843
-msgid "Closing current folder"
-msgstr "úÁËÒÉ×ÁÎÎÑ ÐÏÔÏÞÎϧ ÔÅËÉ"
-
-#: mail/mail-local.c:875
-msgid "Renaming old folder and opening"
-msgstr "ðÅÒÅÊÍÅÎÕ×ÁÎÎÑ ÓÔÁÒϧ ÔÅËÉ ÔÁ צÄËÒÉ×ÁÎÎÑ"
-
-#: mail/mail-local.c:893
-msgid "Creating new folder"
-msgstr "óÔ×ÏÒÅÎÎÑ ÎÏ×ϧ ÔÅËÉ"
-
-#: mail/mail-local.c:907
-msgid "Copying messages"
-msgstr "ëÏЦÀ×ÁÎÎÑ ÐÏצÄÏÍÌÅÎØ"
-
-#: mail/mail-local.c:924
-#, c-format
-msgid ""
-"Cannot save folder metainfo; you'll probably find you can't\n"
-"open this folder anymore: %s"
-msgstr ""
-
-#: mail/mail-local.c:963
-msgid ""
-"If you can no longer open this mailbox, then\n"
-"you may need to repair it manually."
-msgstr ""
-
-#: mail/mail-mt.c:190
-#, fuzzy, c-format
-msgid ""
-"Error while '%s':\n"
-"%s"
-msgstr ""
-"ðÏÍÉÌËÁ Ð¦Ä ÞÁÓ \"%s\":\n"
-"%s"
-
-#: mail/mail-mt.c:193
-#, fuzzy, c-format
-msgid ""
-"Error while performing operation:\n"
-"%s"
-msgstr "ðÏÍÉÌËÁ ÚÁ×ÁÎÔÁÖÅÎÎÑ ÆÁÊÌÕ: %s"
-
-#: mail/mail-mt.c:516 mail/mail-mt.c:545 mail/mail-mt.c:892
-#, fuzzy
-msgid "Working"
-msgstr "ðÅÒÅÎÅÓÅÎÎÑ"
-
-#: mail/mail-mt.c:680 mail/session.c:98
-msgid "Do you accept?"
-msgstr ""
-
-#: mail/mail-mt.c:874
-#, fuzzy
-msgid "Evolution progress"
-msgstr "Evolution"
-
-#: mail/mail-ops.c:599
-#, c-format
-msgid "Sending \"%s\""
-msgstr "÷¦ÄÓÉÌÁÎÎÑ \"%s\""
-
-#: mail/mail-ops.c:603
-#, fuzzy
-msgid "Sending message"
-msgstr "óÔÅÒÔÉ ÃÅ ÐÏצÄÏÍÌÅÎÎÑ ÎÅÇÁÊÎÏ"
-
-#: mail/mail-ops.c:718
-#, fuzzy, c-format
-msgid "Sending message %d of %d"
-msgstr "úÁÐÉÓ ÐÏצÄÏÍÌÅÎÎÑ %d Ú %d"
-
-#: mail/mail-ops.c:737
-#, fuzzy, c-format
-msgid "Failed on message %d of %d"
-msgstr "úÂÅÒÅÇÔÉ ÐÏצÄÏÍÌÅÎÎÑ Õ ×ËÁÚÁÎ¦Ê ÔÅæ"
-
-#: mail/mail-ops.c:739 mail/mail-send-recv.c:475
-#, fuzzy
-msgid "Complete."
-msgstr "% ÚÁ×ÅÒÛÅÎÎÑ:"
-
-#: mail/mail-ops.c:825
-#, fuzzy
-msgid "Saving message to folder"
-msgstr "úÂÅÒÅÖÅÎÎÑ ÐÏצÄÏÍÌÅÎØ Ú ÔÅËÉ \"%s\""
-
-#: mail/mail-ops.c:898
-#, fuzzy, c-format
-msgid "Moving messages to %s"
-msgstr "÷¦Ä¦ÓÌÁΦ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: mail/mail-ops.c:898
-#, fuzzy, c-format
-msgid "Copying messages to %s"
-msgstr "ëÏЦÀ×ÁÎÎÑ ÐÏצÄÏÍÌÅÎØ"
-
-#: mail/mail-ops.c:914
-msgid "Moving"
-msgstr "ðÅÒÅÎÅÓÅÎÎÑ"
-
-#: mail/mail-ops.c:917
-msgid "Copying"
-msgstr "ëÏЦÀ×ÁÎÎÑ"
-
-#: mail/mail-ops.c:992
-#, c-format
-msgid "Scanning folders in \"%s\""
-msgstr "óËÁÎÕ×ÁÎÎÑ ÔÅË × \"%s\""
-
-#: mail/mail-ops.c:1152
-msgid "Forwarded messages"
-msgstr "ðÅÒÅÓÌÁΦ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: mail/mail-ops.c:1193 mail/mail-ops.c:1331
-#, c-format
-msgid "Opening folder %s"
-msgstr "÷¦ÄËÒÉ×ÁÎÎÑ ÔÅËÉ %s"
-
-#: mail/mail-ops.c:1260
-#, c-format
-msgid "Opening store %s"
-msgstr ""
-
-#: mail/mail-ops.c:1447
-msgid "Expunging folder"
-msgstr "÷ÉËÒÅÓÌÅÎÎÑ ÔÅËÉ"
-
-#: mail/mail-ops.c:1496
-#, c-format
-msgid "Retrieving message %s"
-msgstr "ïÔÒÉÍÁÎÎÑ ÐÏצÄÏÍÌÅÎÎÑ %s"
-
-#: mail/mail-ops.c:1563
-msgid "Retrieving messages"
-msgstr "ïÔÒÉÍÁÎÎÑ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: mail/mail-ops.c:1573
-#, c-format
-msgid "Retrieving message number %d of %d (uid \"%s\")"
-msgstr "ïÔÒÉÍÁÎÎÑ ÐÏצÄÏÍÌÅÎÎÑ %d Ú %d (uid \"%s\")"
-
-#: mail/mail-ops.c:1647
-msgid "Saving messages"
-msgstr "úÂÅÒÅÖÅÎÎÑ ÐÏצÄÏÍÌÅÎØ"
-
-#: mail/mail-ops.c:1726
-#, fuzzy, c-format
-msgid ""
-"Unable to create output file: %s\n"
-" %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÚÂÅÒÅÇÔÉ ÓÐÉÓÏË ÇÒÕÐ ÄÌÑ %s: %s"
-
-#: mail/mail-ops.c:1739
-#, fuzzy, c-format
-msgid "Saving message %d of %d (uid \"%s\")"
-msgstr "úÂÅÒÅÇÔÉ ÐÏצÄÏÍÌÅÎÎÑ Õ ×ËÁÚÁÎ¦Ê ÔÅæ"
-
-#: mail/mail-ops.c:1753
-#, fuzzy, c-format
-msgid ""
-"Error saving messages to: %s:\n"
-" %s"
-msgstr "ðÏÍÉÌËÁ ÚÂÅÒÅÖÅÎÎÑ ÆÁÊÌÕ: %s"
-
-#: mail/mail-ops.c:1827
-msgid "Saving attachment"
-msgstr "úÂÅÒÅÖÅÎÎÑ ÄÏÌÕÞÅÎÎÑ"
-
-#: mail/mail-ops.c:1842
-#, fuzzy, c-format
-msgid ""
-"Cannot create output file: %s:\n"
-" %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÚÂÅÒÅÇÔÉ ÓÐÉÓÏË ÇÒÕÐ ÄÌÑ %s: %s"
-
-#: mail/mail-ops.c:1870
-#, c-format
-msgid "Could not write data: %s"
-msgstr "îÅ ×ÄÁÌÏÓØ ÚÁÐÉÓÁÔÉ ÄÁΦ: %s"
-
-#: mail/mail-search-dialogue.c:113
-msgid "_Search"
-msgstr "ðÏÛÕË"
-
-#: mail/mail-send-recv.c:138
-#, fuzzy
-msgid "Cancelling ..."
-msgstr "÷¦ÄͦÎÉÔÉ"
-
-#: mail/mail-send-recv.c:233
-#, fuzzy
-msgid "Send & Receive mail"
-msgstr "Sendmail"
-
-#: mail/mail-send-recv.c:236
-msgid "Receiving"
-msgstr "ïÔÒÉÍÁÎÎÑ"
-
-#: mail/mail-send-recv.c:285
-msgid "Updating ..."
-msgstr "ïÎÏ×ÌÅÎÎÑ..."
-
-#: mail/mail-send-recv.c:287 mail/mail-send-recv.c:333
-msgid "Waiting ..."
-msgstr "ïÞ¦ËÕ×ÁÎÎÑ..."
-
-#: mail/mail-send-recv.c:306
-msgid "Sending"
-msgstr "÷¦ÄÓÉÌÁÎÎÑ"
-
-#: mail/mail-send-recv.c:471
-msgid "Cancelled."
-msgstr "÷¦ÄͦÎÅÎÏ."
-
-#: mail/mail-summary.c:110
-msgid "Incomplete message written on pipe!"
-msgstr ""
-
-#: mail/mail-summary.c:468
-#, fuzzy
-msgid "Mail Summary"
-msgstr "îÅĦÌÑ"
-
-#: mail/mail-tools.c:141
-#, c-format
-msgid "Couldn't create temporary mbox `%s': %s"
-msgstr "îÅ ×ÄÁÌÏÓÑ ÓÔ×ÏÒÉÔÉ ÔÉÍÞÁÓÏ×Õ ÐÏÛÔÏ×Õ ÓËÒÉÎØËÕ \"%s\": %s"
-
-#: mail/mail-tools.c:188
-#, c-format
-msgid "[%s] (forwarded message)"
-msgstr "[%s] (ÐÅÒÅÓÌÁÎÅ ÐÏצÄÏÍÌÅÎÎÑ)"
-
-#: mail/mail-tools.c:198
-msgid "Fwd: (no subject)"
-msgstr "Fwd: (ÂÅÚ ÔÅÍÉ)"
-
-#: mail/mail-tools.c:215
-#, c-format
-msgid "Forwarded message - %s"
-msgstr "ðÅÒÅÓÌÁÎÅ ÐÏצÄÏÍÌÅÎÎÑ %s"
-
-#: mail/mail-tools.c:217
-msgid "Forwarded message (no subject)"
-msgstr "ðÅÒÅÓÌÁÎÅ ÐÏצÄÏÍÌÅÎÎÑ (ÂÅÚ ÔÅÍÉ)"
-
-#: mail/mail-tools.c:415
-#, c-format
-msgid ""
-"-----Forwarded Message-----<br><b>From:</b> %s<br><b>To:</b> "
-"%s<br><b>Subject:</b> %s<br>"
-msgstr ""
-
-#: mail/mail-vfolder.c:249
-msgid "VFolders"
-msgstr "÷¦ÒÔÕÁÌØΦ ÔÅËÉ"
-
-#: mail/mail-vfolder.c:426
-msgid "New VFolder"
-msgstr "îÏ×Á צÒÔÕÁÌØÎÁ ÔÅËÁ"
-
-#. GNOMEUIINFO_ITEM_STOCK (N_("Save"), N_("Save this message"),
-#. save_msg, GNOME_STOCK_PIXMAP_SAVE),
-#: mail/message-browser.c:189 ui/evolution-mail.xml.h:64
-msgid "Reply"
-msgstr "÷¦ÄÐÏצÓÔÉ"
-
-#: mail/message-browser.c:189 ui/evolution-mail.xml.h:70
-msgid "Reply to the sender of this message"
-msgstr "÷¦ÄÐÏצÓÔÉ ×¦ÄÐÒÁ×ÎÉËÕ ÃØÏÇÏ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: mail/message-browser.c:192 ui/evolution-mail.xml.h:65
-msgid "Reply to All"
-msgstr "÷¦ÄÐÏצÓÔÉ ×Ó¦Í"
-
-#: mail/message-browser.c:192 ui/evolution-mail.xml.h:68
-msgid "Reply to all recipients of this message"
-msgstr "÷¦ÄÐÏצÓÔÉ ×Ó¦Í ÏÔÒÉÍÕ×ÁÞÁÍ ÃØÏÇÏ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: mail/message-browser.c:195 ui/evolution-mail.xml.h:25
-msgid "Forward"
-msgstr "ðÅÒÅÓÌÁÔÉ"
-
-#: mail/message-browser.c:195 ui/evolution-mail.xml.h:29
-msgid "Forward this message"
-msgstr "ðÅÒÅÓÌÁÔÉ ÃÅ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: mail/message-browser.c:200 ui/evolution-mail.xml.h:61
-msgid "Print the selected message"
-msgstr "îÁÄÒÕËÕ×ÁÔÉ ×ÉÂÒÁÎÅ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: mail/message-browser.c:203 ui/evolution-mail.xml.h:13
-msgid "Delete this message"
-msgstr "óÔÅÒÔÉ ÃÅ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: mail/message-browser.c:208 ui/evolution-event-editor.xml.h:33
-#: ui/evolution-mail.xml.h:54 ui/evolution-task-editor-dialog.xml.h:36
-msgid "Previous"
-msgstr "ðÏÐÅÒÅÄΤ"
-
-#: mail/message-browser.c:208
-msgid "Previous message"
-msgstr "ðÏÐÅÒÅÄΤ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: mail/message-browser.c:211 ui/evolution-calendar.xml.h:18
-#: ui/evolution-event-editor.xml.h:29 ui/evolution-mail.xml.h:50
-#: ui/evolution-task-editor-dialog.xml.h:32
-msgid "Next"
-msgstr "äÁ̦"
-
-#: mail/message-browser.c:211
-msgid "Next message"
-msgstr "îÁÓÔÕÐÎÅ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: mail/message-list.c:678
-msgid "Unseen"
-msgstr ""
-
-#: mail/message-list.c:679
-msgid "Seen"
-msgstr ""
-
-#: mail/message-list.c:680
-msgid "Answered"
-msgstr ""
-
-#: mail/message-list.c:681
-#, fuzzy
-msgid "Multiple Unseen Messages"
-msgstr "îÅ ×ÄÁÌÏÓÑ ×¦Ä¦ÓÌÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ: %s"
-
-#: mail/message-list.c:682
-#, fuzzy
-msgid "Multiple Messages"
-msgstr "îÁÄÒÕËÕ×ÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: mail/message-list.c:686
-#, fuzzy
-msgid "Lowest"
-msgstr "îÉÚØËÉÊ"
-
-#: mail/message-list.c:687
-#, fuzzy
-msgid "Lower"
-msgstr "îÉÚØËÉÊ"
-
-#: mail/message-list.c:691
-#, fuzzy
-msgid "Higher"
-msgstr "÷ÉÓÏËÉÊ"
-
-#: mail/message-list.c:692
-#, fuzzy
-msgid "Highest"
-msgstr "÷ÉÓÏËÉÊ"
-
-#: mail/message-list.c:942
-msgid "?"
-msgstr "?"
-
-#: mail/message-list.c:949
-#, fuzzy
-msgid "Today %l:%M %p"
-msgstr "%I:%M %p"
-
-#: mail/message-list.c:958
-msgid "Yesterday %l:%M %p"
-msgstr ""
-
-#: mail/message-list.c:970
-#, fuzzy
-msgid "%a %l:%M %p"
-msgstr "%I:%M %p"
-
-#: mail/message-list.c:978
-#, fuzzy
-msgid "%b %d %l:%M %p"
-msgstr "%I:%M %p"
-
-#: mail/message-list.c:980
-#, fuzzy
-msgid "%b %d %Y"
-msgstr "%a %d %Y"
-
-#: mail/message-list.c:1082
-msgid "Flagged"
-msgstr ""
-
-#: mail/message-list.c:1083
-msgid "From"
-msgstr "÷¦Ä"
-
-#: mail/message-list.c:1083
-#, fuzzy
-msgid "Date"
-msgstr "ЦÓÌÑ"
-
-#: mail/message-list.c:1083
-#, fuzzy
-msgid "Received"
-msgstr "äÁÔÁ ÏÔÒÉÍÁÎÎÑ"
-
-#: mail/message-list.c:1084
-msgid "To"
-msgstr "äÏ"
-
-#: mail/message-list.c:1084
-msgid "Size"
-msgstr "òÏÚͦÒ"
-
-#: mail/subscribe-dialog.c:76 shell/e-storage-set-view.c:47
-msgid "Folder"
-msgstr "ôÅËÁ"
-
-#: mail/subscribe-dialog.c:77
-#, fuzzy
-msgid "Store"
-msgstr "íϦÌØÎÉÊ"
-
-#: mail/subscribe-dialog.c:138
-msgid "Display folders starting with:"
-msgstr ""
-
-#: mail/subscribe-dialog.c:168
-#, c-format
-msgid "Getting store for \"%s\""
-msgstr ""
-
-#: mail/subscribe-dialog.c:271
-#, c-format
-msgid "Subscribing to folder \"%s\""
-msgstr "ðÅÒÅÄÐÌÁÔÉÔÉ ÔÅËÕ \"%s\""
-
-#: mail/subscribe-dialog.c:273
-#, c-format
-msgid "Unsubscribing to folder \"%s\""
-msgstr "÷¦ÄͦÎÉÔÉ ÐÅÒÅÄÐÌÁÔÕ ÎÁ ÔÅËÕ \"%s\""
-
-#. Construct the app
-#: mail/subscribe-dialog.c:873
-msgid "Manage Subscriptions"
-msgstr "ëÅÒÕ×ÁÎÎÑ ÐÅÒÅÄÐÌÁÔÁÍÉ"
-
-#: shell/e-setup.c:118 shell/e-setup.c:191
-msgid "Evolution installation"
-msgstr "¶ÎÓÔÁÌÑÃ¦Ñ Evolution"
-
-#: shell/e-setup.c:122
-msgid ""
-"This new version of Evolution needs to install additional files\n"
-"into your personal Evolution directory"
-msgstr ""
-
-#: shell/e-setup.c:123
-msgid "Please click \"OK\" to install the files, or \"Cancel\" to exit."
-msgstr "îÁÔÉÓΦÔØ \"çÁÒÁÚÄ\" ÝÏ ×ÓÔÁÎÏ×ÉÔÉ ÆÁÊÌÉ, ÞÉ \"÷¦ÄͦÎÉÔÉ\" ÝÏ ×ÉÊÔÉ."
-
-#: shell/e-setup.c:163
-msgid "Could not update files correctly"
-msgstr "îÅ ×ÄÁÌÏÓÑ ËÏÒÅËÔÎÏ ÐÏÎÏ×ÉÔÉ ÆÁÊÌÉ"
-
-#: shell/e-setup.c:166 shell/e-setup.c:234
-msgid "Evolution files successfully installed."
-msgstr "æÁÊÌÉ Evolution ÕÓЦÛÎÏ ×ÓÔÁÎÏ×ÌÅÎÏ."
-
-#: shell/e-setup.c:195
-#, fuzzy
-msgid "This seems to be the first time you are running Evolution."
-msgstr "óÈÏÖÅ ÃÅ ×ÁÛ ÐÅÒÛÉÊ ÚÁÐÕÓË Evolution."
-
-#: shell/e-setup.c:196
-msgid "Please click \"OK\" to install the Evolution user files under"
-msgstr ""
-
-#: shell/e-setup.c:215
-#, c-format
-msgid ""
-"Cannot create the directory\n"
-"%s\n"
-"Error: %s"
-msgstr ""
-"îÅÍÏÖÌÉ×Ï ÓÔ×ÏÒÉÔÉ ËÁÔÁÌÏÇ\n"
-"%s\n"
-"ðÏÍÉÌËÁ: %s"
-
-#: shell/e-setup.c:230
-#, c-format
-msgid ""
-"Cannot copy files into\n"
-"`%s'."
-msgstr ""
-"îÅÍÏÖÌÉ×Ï ÓËÏЦÀ×ÁÔÉ ÆÁÊÌÉ ×\n"
-"\"%s\"."
-
-#: shell/e-setup.c:255
-#, c-format
-msgid ""
-"The file `%s' is not a directory.\n"
-"Please move it in order to allow installation\n"
-"of the Evolution user files."
-msgstr ""
-
-#: shell/e-setup.c:267
-#, c-format
-msgid ""
-"The directory `%s' exists but is not the\n"
-"Evolution directory. Please move it in order\n"
-"to allow installation of the Evolution user files."
-msgstr ""
-
-#: shell/e-shell.c:379
-#, c-format
-msgid "Cannot set up local storage -- %s"
-msgstr ""
-
-#: shell/e-shell.c:1249
-#, c-format
-msgid ""
-"Ooops! The view for `%s' have died unexpectedly. :-(\n"
-"This probably means that the %s component has crashed."
-msgstr ""
-
-#: shell/e-shell-folder-creation-dialog.c:99
-#, c-format
-msgid ""
-"Cannot create the specified folder:\n"
-"%s"
-msgstr ""
-"îÅÍÏÖÌÉ×Ï ÓÔ×ÏÒÉÔÉ ×ËÁÚÁÎÕ ÔÅËÕ:\n"
-"%s"
-
-#: shell/e-shell-folder-creation-dialog.c:156
-msgid "The specified folder name is not valid."
-msgstr "÷ËÁÚÁÎÁ ÎÁÚ×Á ÔÅËÉ ÎŠצÒÎÁ."
-
-#: shell/e-shell-folder-creation-dialog.c:263
-msgid "Evolution - Create new folder"
-msgstr "Evolution - óÔ×ÏÒÅÎÎÑ ÎÏ×ϧ ÔÅËÉ"
-
-#: shell/e-shell-folder-selection-dialog.c:96
-msgid ""
-"The type of the selected folder is not valid for\n"
-"the requested operation."
-msgstr ""
-
-#: shell/e-shell-folder-selection-dialog.c:321
-msgid "New..."
-msgstr "îÏ×ÉÊ..."
-
-#: shell/e-shell-folder-title-bar.c:459 shell/e-shell-folder-title-bar.c:460
-msgid "(Untitled)"
-msgstr "(îÅÎÁÊÍÅÎÏ×ÁÎÉÊ)"
-
-#: shell/e-shell-view.c:148
-msgid "(No folder displayed)"
-msgstr ""
-
-#: shell/e-shell-view.c:1184
-#, c-format
-msgid "%s - Evolution %s"
-msgstr "%s - Evolution %s"
-
-#: shell/e-shell-view.c:1186
-#, c-format
-msgid "%s - Evolution %s [%s]"
-msgstr "%s - Evolution %s [%s]"
-
-#: shell/e-shell-view-menu.c:173
-msgid "Bug buddy was not found in your $PATH."
-msgstr "Bug buddy ÎÅ ÚÎÁÊÄÅÎÏ ÚÁ ÛÌÑÈÏÍ ×ËÁÚÁÎÉÍ × $PATH."
-
-#: shell/e-shell-view-menu.c:179
-msgid "Bug buddy could not be run."
-msgstr "îÅ ×ÄÁÌÏÓÑ ÚÁÐÕÓÔÉÔÉ Bug buddy"
-
-#: shell/e-shell-view-menu.c:208
-msgid "Copyright 1999, 2000, 2001 Ximian, Inc."
-msgstr "Copyright 1999, 2000, 2001 Ximian, Inc."
-
-#: shell/e-shell-view-menu.c:210
-msgid ""
-"Evolution is a suite of groupware applications\n"
-"for mail, calendaring, and contact management\n"
-"within the GNOME desktop environment."
-msgstr ""
-
-#: shell/e-shell-view-menu.c:374
-msgid "Go to folder..."
-msgstr "ðÅÒÅÊÔÉ ÎÁ ÔÅËÕ..."
-
-#: shell/e-shortcuts.c:381
-msgid "Error saving shortcuts."
-msgstr ""
-
-#: shell/e-shortcuts-view.c:134
-msgid "Create new shortcut group"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:137
-msgid "Group name:"
-msgstr "îÁÚ×Á ÇÒÕÐÉ:"
-
-#: shell/e-shortcuts-view.c:260
-#, c-format
-msgid ""
-"Do you really want to remove group\n"
-"`%s' from the shortcut bar?"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:265
-msgid "Don't remove"
-msgstr "îÅ ×ÉÄÁÌÑÔÉ"
-
-#: shell/e-shortcuts-view.c:276
-msgid "_Small Icons"
-msgstr "íÁ̦ ЦËÔÏÇÒÁÍÉ"
-
-#: shell/e-shortcuts-view.c:277
-msgid "Show the shortcuts as small icons"
-msgstr "ðÏËÁÚÕ×ÁÔÉ ÑÒÌÉ˦ ÑË ÍÁ̦ ЦËÔÏÇÒÁÍÉ"
-
-#: shell/e-shortcuts-view.c:279
-msgid "_Large Icons"
-msgstr "÷ÅÌÉ˦ ЦËÔÏÇÒÁÍÉ"
-
-#: shell/e-shortcuts-view.c:280
-msgid "Show the shortcuts as large icons"
-msgstr "ðÏËÁÚÕ×ÁÔÉ ÑÒÌÉ˦ ÑË ×ÅÌÉ˦ ЦËÔÏÇÒÁÍÉ"
-
-#: shell/e-shortcuts-view.c:291
-msgid "_New Group..."
-msgstr "îÏ×Á ÇÒÕÐÁ..."
-
-#: shell/e-shortcuts-view.c:292
-msgid "Create a new shortcut group"
-msgstr ""
-
-#: shell/e-shortcuts-view.c:294
-msgid "_Remove This Group..."
-msgstr "÷ÉÄÁÌÉÔÉ ÃÀ ÇÒÕÐÕ..."
-
-#: shell/e-shortcuts-view.c:295
-#, fuzzy
-msgid "Remove this shortcut group"
-msgstr "áËÔÉצÚÕ×ÁÔÉ ÃÅÊ ÑÒÌÉË"
-
-#: shell/e-shortcuts-view.c:300
-#, fuzzy
-msgid "_Hide the Shortcut Bar"
-msgstr "ðÏËÁÚÕ×ÁÔÉ ÑÒÌÉ˦ ÑË ×ÅÌÉ˦ ЦËÔÏÇÒÁÍÉ"
-
-#: shell/e-shortcuts-view.c:301
-#, fuzzy
-msgid "Hide the shortcut bar"
-msgstr "ðÏËÁÚÕ×ÁÔÉ ÑÒÌÉ˦ ÑË ×ÅÌÉ˦ ЦËÔÏÇÒÁÍÉ"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate"
-msgstr "áËÔÉצÚÕ×ÁÔÉ"
-
-#: shell/e-shortcuts-view.c:385
-msgid "Activate this shortcut"
-msgstr "áËÔÉצÚÕ×ÁÔÉ ÃÅÊ ÑÒÌÉË"
-
-#: shell/e-shortcuts-view.c:388
-msgid "Remove this shortcut from the shortcut bar"
-msgstr ""
-
-#: shell/e-storage.c:178
-msgid "(No name)"
-msgstr "(âÅÚ ÎÁÚ×É)"
-
-#: shell/e-storage.c:459
-msgid "No error"
-msgstr "âÅÚ ÐÏÍÉÌÏË"
-
-#: shell/e-storage.c:461
-msgid "Generic error"
-msgstr "úÁÇÁÌØÎÁ ÐÏÍÉÌËÁ"
-
-#: shell/e-storage.c:463
-msgid "A folder with the same name already exists"
-msgstr "ôÅËÁ Ú Ã¦¤À ÎÁÚ×ÏÀ ×ÖÅ ¦ÓÎÕ¤"
-
-#: shell/e-storage.c:465
-msgid "The specified folder type is not valid"
-msgstr "÷ËÁÚÁÎÉÊ ÔÉÐ ÔÅËÉ ÎŠצÒÎÉÊ"
-
-#: shell/e-storage.c:467
-msgid "I/O error"
-msgstr "ðÏÍÉÌËÁ ××ÏÄÕ/×É×ÏÄÕ"
-
-#: shell/e-storage.c:469
-msgid "Not enough space to create the folder"
-msgstr "îÅ ×ÉÓÔÁÞÁ¤ ͦÓÃÑ ÄÌÑ ÓÔ×ÏÒÅÎÎÑ ÔÅËÉ"
-
-#: shell/e-storage.c:471
-msgid "The specified folder was not found"
-msgstr "÷ËÁÚÁÎϧ ÔÅËÉ ÎÅ ÚÎÁÊÄÅÎÏ"
-
-#: shell/e-storage.c:473
-msgid "Function not implemented in this storage"
-msgstr ""
-
-#: shell/e-storage.c:475
-msgid "Permission denied"
-msgstr ""
-
-#: shell/e-storage.c:477
-msgid "Operation not supported"
-msgstr "ïÐÅÒÁÃ¦Ñ ÎŠЦÄÔÒÉÍÕ¤ÔØÓÑ"
-
-#: shell/e-storage.c:479
-msgid "The specified type is not supported in this storage"
-msgstr ""
-
-#: shell/e-storage-set-view.c:650 ui/evolution-event-editor.xml.h:76
-#: ui/evolution-message-composer.xml.h:53
-#: ui/evolution-task-editor-dialog.xml.h:90 ui/evolution.xml.h:44
-msgid "_View"
-msgstr "÷ÉÄ"
-
-#: shell/e-storage-set-view.c:650
-msgid "View the selected folder"
-msgstr "ðÏËÁÚÁÔÉ ×ÉÂÒÁÎÕ ÔÅËÉ"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:1
-#, fuzzy
-msgid "Folder name:"
-msgstr "îÁÚ×Á ÆÁÊÌÕ:"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:2
-#, fuzzy
-msgid "Folder type:"
-msgstr "ôÅËÉ"
-
-#: shell/glade/e-shell-folder-creation-dialog.glade.h:3
-#, fuzzy
-msgid "Specify where to create the folder:"
-msgstr "îÅ ×ÉÓÔÁÞÁ¤ ͦÓÃÑ ÄÌÑ ÓÔ×ÏÒÅÎÎÑ ÔÅËÉ"
-
-#: shell/GNOME_Evolution_Shell.oaf.in.h:1
-#, fuzzy
-msgid "The Evolution shell."
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÏÂÏÌÏÎËÕ Evolutuion."
-
-#: shell/importer/importer.c:87
-msgid ""
-"Choose the file that you want to import into Evolution, and select what type "
-"of file it is from the list.\n"
-"\n"
-"You can select \"Automatic\" if you do not know, and Evolution will attempt "
-"to work it out."
-msgstr ""
-
-#. Importer isn't ready yet.
-#. Wait 5 seconds and try again.
-#: shell/importer/importer.c:182
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importer not ready.\n"
-"Waiting 5 seconds to retry."
-msgstr ""
-
-#: shell/importer/importer.c:202 shell/importer/importer.c:233
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item %d."
-msgstr ""
-
-#: shell/importer/importer.c:341
-#, fuzzy, c-format
-msgid ""
-"There is no importer that is able to handle\n"
-"%s"
-msgstr "îÅÍÁ¤ ÎÏ×ϧ ËÏÒÅÓÐÏÎÄÅÎæ§ ÎÁ %s."
-
-#: shell/importer/importer.c:351
-msgid "Importing"
-msgstr "¶ÍÐÏÒÔÕ×ÁÎÎÑ"
-
-#: shell/importer/importer.c:359
-#, c-format
-msgid ""
-"Importing %s.\n"
-"Starting %s"
-msgstr ""
-
-#: shell/importer/importer.c:372
-#, fuzzy, c-format
-msgid "Error starting %s"
-msgstr "ðÏÍÉÌËÁ ÚÂÅÒÅÖÅÎÎÑ ÆÁÊÌÕ: %s"
-
-#: shell/importer/importer.c:387
-#, c-format
-msgid "Error loading %s"
-msgstr "ðÏÍÉÌËÁ ÚÁ×ÁÎÔÁÖÅÎÎÑ %s"
-
-#: shell/importer/importer.c:402
-#, c-format
-msgid ""
-"Importing %s\n"
-"Importing item 1."
-msgstr ""
-
-#: shell/importer/importer.c:473
-#, fuzzy
-msgid "Automatic"
-msgstr "á×ÔÏ×ɦÒ"
-
-#: shell/importer/importer.c:523
-msgid "Filename:"
-msgstr "îÁÚ×Á ÆÁÊÌÕ:"
-
-#: shell/importer/import.glade.h:5 shell/importer/importer.c:528
-msgid "Select a file"
-msgstr "÷ÉÂÒÁÔÉ ÆÁÊÌ"
-
-#: shell/importer/importer.c:538
-msgid "File type:"
-msgstr "ôÉÐ ÆÁÊÌÕ:"
-
-#: shell/importer/import.glade.h:4 shell/importer/importer.c:619
-msgid "Import"
-msgstr "¶ÍÐÏÒÔ"
-
-#: shell/importer/import.glade.h:1
-msgid "Click \"Import\" to begin importing the file into Evolution. "
-msgstr ""
-
-#: shell/importer/import.glade.h:2
-#, fuzzy
-msgid "Evolution Import Utility"
-msgstr "¶ÎÓÔÁÌÑÃ¦Ñ Evolution"
-
-#: shell/importer/import.glade.h:3
-#, fuzzy
-msgid "Evolution Importer Utility"
-msgstr "¶ÎÓÔÁÌÑÃ¦Ñ Evolution"
-
-#: shell/importer/import.glade.h:6
-msgid ""
-"Welcome to the Evolution Import Utility.\n"
-"With this wizard you will be guided through the process of\n"
-"importing external files into Evolution."
-msgstr ""
-
-#: shell/importer/intelligent.c:143
-#, fuzzy
-msgid "Don't ask me again"
-msgstr "â¦ÌØÛÅ ÎÅ ÐÏËÁÚÕ×ÁÔÉ ÃÅ ÐÏצÄÏÍÌÅÎÎÑ."
-
-#: shell/main.c:82
-#, no-c-format
-msgid ""
-"Hi. Thanks for taking the time to download this PREVIEW RELEASE\n"
-"of the Evolution groupware suite.\n"
-"\n"
-"Evolution is not yet complete. It's getting close, but there are\n"
-"places where features are either missing or only half working. If\n"
-"you can't figure out how to do something, it's probably because\n"
-"there's no way to do it yet! :-)\n"
-"\n"
-"We hope Evolution will be usable for you, but we still feel the\n"
-"need to warn you that it may: crash, lose your mail, leave stray\n"
-"processes running, consume 100% of your CPU, send non-\n"
-"compliant commands to your servers, and generally embarass you\n"
-"in front of your friends and co-workers. Use only as directed.\n"
-"\n"
-"We hope that you enjoy the results of our hard work, and we\n"
-"eagerly await your contributions!\n"
-msgstr ""
-
-#: shell/main.c:107
-msgid ""
-"Thanks\n"
-"The Evolution Team\n"
-msgstr ""
-
-#: shell/main.c:138
-msgid "Cannot initialize the Evolution shell."
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ÏÂÏÌÏÎËÕ Evolutuion."
-
-#: shell/main.c:184
-msgid "Disable splash screen"
-msgstr ""
-
-#: shell/main.c:185
-msgid "Send the debugging output of all components to a file."
-msgstr ""
-
-#: shell/main.c:217
-msgid "Cannot initialize the Bonobo component system."
-msgstr "îÅ ×ÄÁÌÏÓÑ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ ËÏÍÐÏÎÅÎÔÎÕ ÓÉÓÔÅÍÕ Bonobo."
-
-#: ui/evolution-addressbook.xml.h:2
-msgid "Create new contact"
-msgstr "óÔ×ÏÒÉÔÉ ÎÏ×ÉÊ ËÏÎÔÁËÔ"
-
-#: ui/evolution-addressbook.xml.h:4
-msgid "Delete a contact"
-msgstr "óÔÅÒÔÉ ËÏÎÔÁËÔ"
-
-#: ui/evolution-addressbook.xml.h:5 ui/evolution-task-editor-dialog.xml.h:23
-msgid "Find"
-msgstr "úÎÁÊÔÉ"
-
-#: ui/evolution-addressbook.xml.h:6
-msgid "Find a contact"
-msgstr "úÎÁÊÔÉ ËÏÎÔÁËÔ"
-
-#: ui/evolution-addressbook.xml.h:7
-msgid "New contact"
-msgstr "îÏ×ÉÊ ËÏÎÔÁËÔ"
-
-#: ui/evolution-addressbook.xml.h:8 ui/evolution-mail.xml.h:53
-msgid "Previews the message to be printed"
-msgstr "ðÅÒÅÇÌÑÎÕÔÉ ÐÏצÄÏÍÌÅÎÎÑ, ÝÏ ÂÕÄÅ ÎÁÄÒÕËÕ×ÁÎÏ"
-
-#: ui/evolution-addressbook.xml.h:11
-msgid "Print contacts"
-msgstr "îÁÄÒÕËÕ×ÁÔÉ ËÏÎÔÁËÔÉ"
-
-#: ui/evolution-addressbook.xml.h:12 ui/evolution-mail.xml.h:84
-msgid "Stop"
-msgstr "úÕÐÉÎÉÔÉ"
-
-#: ui/evolution-addressbook.xml.h:13
-msgid "Stop Loading"
-msgstr "úÕÐÉÎÉÔÉ ÚÁ×ÁÎÔÁÖÅÎÎÑ"
-
-#: ui/evolution-addressbook.xml.h:14
-msgid "View All"
-msgstr "ðÏËÁÚÁÔÉ ×ÓÅ"
-
-#: ui/evolution-addressbook.xml.h:15
-msgid "View all contacts"
-msgstr "ðÏËÁÚÁÔÉ ×Ó¦ ËÏÎÔÁËÔÉ"
-
-#: ui/evolution-addressbook.xml.h:16
-#, fuzzy
-msgid "_Addressbook Sources..."
-msgstr "äÏÄÁÔÉ ÄÖÅÒÅÌÏ"
-
-#: ui/evolution-addressbook.xml.h:17
-msgid "_Contact"
-msgstr "ëÏÎÔÁËÔ"
-
-#: ui/evolution-addressbook.xml.h:18 ui/evolution-calendar.xml.h:42
-#: ui/evolution-contact-editor.xml.h:15
-msgid "_Print..."
-msgstr "äÒÕËÕ×ÁÔÉ..."
-
-#: ui/evolution-addressbook.xml.h:19
-msgid "_Search for contacts"
-msgstr "ðÏÛÕË ËÏÎÔÁËÔ¦×"
-
-#: ui/evolution-addressbook.xml.h:20 ui/evolution-calendar.xml.h:44
-#: ui/evolution-event-editor.xml.h:74 ui/evolution-mail.xml.h:117
-#: ui/evolution-task-editor-dialog.xml.h:88 ui/evolution.xml.h:43
-msgid "_Tools"
-msgstr "¶ÎÓÔÒÕÍÅÎÔÉ"
-
-#: ui/evolution-calendar.xml.h:1
-msgid "5 Days"
-msgstr "5 äΦ×"
-
-#: ui/evolution-calendar.xml.h:2 ui/evolution-tasks.xml.h:1
-#, fuzzy
-msgid "Alter preferences"
-msgstr "ðÁÒÁÍÅÔÒÉ ËÁÌÅÎÄÁÒÑ"
-
-#: ui/evolution-calendar.xml.h:4
-#, fuzzy
-msgid "Create a new all day Event"
-msgstr "óÔ×ÏÒÉÔÉ ÎÏ×ÉÊ ËÁÌÅÎÄÁÒ"
-
-#: ui/evolution-calendar.xml.h:5
-msgid "Create a new appointment"
-msgstr "óÔ×ÏÒÉÔÉ ÎÏ×Õ ÚÕÓÔÒ¦Þ"
-
-#: ui/evolution-calendar.xml.h:6
-msgid "Create a new calendar"
-msgstr "óÔ×ÏÒÉÔÉ ÎÏ×ÉÊ ËÁÌÅÎÄÁÒ"
-
-#: ui/evolution-calendar.xml.h:7
-msgid "Day"
-msgstr "äÅÎØ"
-
-#: ui/evolution-calendar.xml.h:8
-#, fuzzy
-msgid "Go To"
-msgstr "ðÅÒÅÊÔÉ"
-
-#: ui/evolution-calendar.xml.h:9
-msgid "Go back in time"
-msgstr "ðÅÒÅÊÔÉ ÎÁÚÁÄ × ÞÁÓ¦"
-
-#: ui/evolution-calendar.xml.h:10
-msgid "Go forward in time"
-msgstr "ðÅÒÅÊÔÉ ×ÐÅÒÅÄ × ÞÁÓ¦"
-
-#: ui/evolution-calendar.xml.h:11
-#, fuzzy
-msgid "Go to _Date"
-msgstr "ë¦ÎÃÅ×Á ÄÁÔÁ"
-
-#: ui/evolution-calendar.xml.h:12
-#, fuzzy
-msgid "Go to _Today"
-msgstr "ÓØÏÇÏÄΦ"
-
-#: ui/evolution-calendar.xml.h:13
-msgid "Go to a specific date"
-msgstr "ðÅÒÅÊÔÉ ÄÏ ×ËÁÚÁÎϧ ÄÁÔÉ"
-
-#: ui/evolution-calendar.xml.h:14
-msgid "Go to present time"
-msgstr "ðÏÐÅÒÅÊÔÉ × ÔÏÞÎÉÊ ÞÁÓ"
-
-#: ui/evolution-calendar.xml.h:15
-msgid "Month"
-msgstr "í¦ÓÑÃØ"
-
-#: ui/evolution-calendar.xml.h:17
-msgid "New _Event"
-msgstr "îÏ×Á ÐÏĦÑ"
-
-#: ui/evolution-calendar.xml.h:20
-msgid "Open Calendar"
-msgstr "÷¦ÄËÒÉÔÉ ËÁÌÅÎÄÁÒ"
-
-#: ui/evolution-calendar.xml.h:21
-msgid "Prev"
-msgstr "îÁÚÁÄ"
-
-#: ui/evolution-calendar.xml.h:22
-msgid "Previews the calendar to be printed"
-msgstr "ðÅÒÅÇÌÑÎÕÔÉ ËÁÌÅÎÄÁÒ, ÝÏ ÂÕÄÅ ÎÁÄÒÕËÕ×ÁÎÏ"
-
-#: ui/evolution-calendar.xml.h:25
-msgid "Print calendar"
-msgstr "îÁÄÒÕËÕ×ÁÔÉ ËÁÌÅÎÄÁÒ"
-
-#: ui/evolution-calendar.xml.h:26
-msgid "Print this Calendar"
-msgstr "îÁÄÒÕËÕ×ÁÔÉ ÃÅÊ ËÁÌÅÎÄÁÒ"
-
-#: ui/evolution-calendar.xml.h:27 ui/evolution-message-composer.xml.h:15
-msgid "Save As"
-msgstr "úÂÅÒÅÇÔÉ ÑË"
-
-#: ui/evolution-calendar.xml.h:28
-msgid "Save calendar as something else"
-msgstr "úÂÅÒÅÇÔÉ ËÁÌÅÎÄÁÒ ÑË ÝÏÓØ ¦ÎÛÅ"
-
-#: ui/evolution-calendar.xml.h:30
-msgid "Show 1 day"
-msgstr "ðÏËÁÚÁÔÉ 1 ÄÅÎØ"
-
-#: ui/evolution-calendar.xml.h:31
-msgid "Show 1 month"
-msgstr "ðÏËÁÚÁÔÉ 1 ͦÓÑÃØ"
-
-#: ui/evolution-calendar.xml.h:32
-msgid "Show 1 week"
-msgstr "ðÏËÁÚÁÔÉ 1 ÔÉÖÄÅÎØ"
-
-#: ui/evolution-calendar.xml.h:33
-msgid "Show the working week"
-msgstr "ðÏËÁÚÁÔÉ ÒÏÂÏÞÉÊ ÔÉÖÄÅÎØ"
-
-#: ui/evolution-calendar.xml.h:34 widgets/misc/e-cell-date-edit.c:229
-#: widgets/misc/e-dateedit.c:424
-msgid "Today"
-msgstr "ÓØÏÇÏÄΦ"
-
-#: ui/evolution-calendar.xml.h:35
-#, fuzzy
-msgid "W_ork Week"
-msgstr "òÏÂÏÞÉÊ ÔÉÖÄÅÎØ"
-
-#: ui/evolution-calendar.xml.h:36
-msgid "Week"
-msgstr "ôÉÖÄÅÎØ"
-
-#: ui/evolution-calendar.xml.h:37
-msgid "_Appointment"
-msgstr "úÕÓÔÒ¦Þ¦"
-
-#: ui/evolution-calendar.xml.h:38
-msgid "_Day"
-msgstr "äÅÎØ"
-
-#: ui/evolution-calendar.xml.h:39
-msgid "_Month"
-msgstr "í¦ÓÑÃØ"
-
-#: ui/evolution-calendar.xml.h:40 ui/evolution-event-editor.xml.h:66
-#: ui/evolution-task-editor-dialog.xml.h:79 ui/evolution.xml.h:39
-msgid "_New"
-msgstr "îÏ×ÉÊ"
-
-#: ui/evolution-calendar.xml.h:41
-msgid "_Open Calendar"
-msgstr "÷¦ÄËÒÉÔÉ ËÁÌÅÎÄÁÒ"
-
-#: ui/evolution-calendar.xml.h:45
-#, fuzzy
-msgid "_Week"
-msgstr "ôÉÖÄÅÎØ"
-
-#: ui/evolution-contact-editor.xml.h:2
-msgid "Delete this item"
-msgstr "óÔÅÒÔÉ ÃÅÊ ÅÌÅÍÅÎÔ"
-
-#: ui/evolution-contact-editor.xml.h:3
-msgid "Delete..."
-msgstr "óÔÅÒÔÉ..."
-
-#: ui/evolution-contact-editor.xml.h:4
-msgid "Help"
-msgstr "äÏצÄËÁ"
-
-#: ui/evolution-contact-editor.xml.h:5
-msgid "Print En_velope..."
-msgstr "îÁÄÒÕËÕ×ÁÔÉ ËÏÎ×ÅÒÔ..."
-
-#: ui/evolution-contact-editor.xml.h:6 ui/evolution-event-editor.xml.h:37
-#: ui/evolution-task-editor-dialog.xml.h:40
-msgid "Print this item"
-msgstr "îÁÄÒÕËÕ×ÁÔÉ ÃÅÊ ÅÌÅÍÅÎÔ"
-
-#: ui/evolution-contact-editor.xml.h:7 ui/evolution-event-editor.xml.h:38
-#: ui/evolution-mail.xml.h:62 ui/evolution-task-editor-dialog.xml.h:41
-msgid "Print..."
-msgstr "äÒÕËÕ×ÁÔÉ..."
-
-#: ui/evolution-contact-editor.xml.h:8 ui/evolution-event-editor.xml.h:41
-#: ui/evolution-message-composer.xml.h:16
-#: ui/evolution-task-editor-dialog.xml.h:51
-msgid "Save _As..."
-msgstr "úÂÅÒÅÇÔÉ ÑË..."
-
-#: ui/evolution-contact-editor.xml.h:9 ui/evolution-event-editor.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:52
-msgid "Save and Close"
-msgstr "úÂÅÒÅÇÔÉ ÔÁ ÚÁËÒÉÔÉ"
-
-#: ui/evolution-contact-editor.xml.h:10
-msgid "Save the contact and close the dialog box"
-msgstr "úÂÅÒÅÇÔÉ ËÏÎÔÁËÔ ¦ ÚÁËÒÉÔÉ Ä¦ÁÌÏÇ"
-
-#: ui/evolution-contact-editor.xml.h:11
-msgid "Se_nd contact to other..."
-msgstr "÷¦Ä¦ÓÌÁÔÉ ËÏÎÔÁËÔ ¦ÎÛÏÍÕ..."
-
-#: ui/evolution-contact-editor.xml.h:12
-msgid "See online help"
-msgstr ""
-
-#: ui/evolution-contact-editor.xml.h:13
-#, fuzzy
-msgid "Send _message to contact..."
-msgstr "÷¦Ä¦ÓÌÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ ÚÁ ËÏÎÔÁËÔÏÍ..."
-
-#: ui/evolution-contact-editor.xml.h:14 ui/evolution-event-editor.xml.h:59
-#: ui/evolution-message-composer.xml.h:44 ui/evolution-subscribe.xml.h:11
-#: ui/evolution-task-editor-dialog.xml.h:71 ui/evolution.xml.h:31
-msgid "_File"
-msgstr "æÁÊÌ"
-
-#: ui/evolution-contact-editor.xml.h:16 ui/evolution-event-editor.xml.h:71
-#: ui/evolution-message-composer.xml.h:51
-#: ui/evolution-task-editor-dialog.xml.h:85
-msgid "_Save"
-msgstr "úÂÅÒÅÇÔÉ"
-
-#: ui/evolution-event-editor.xml.h:1 ui/evolution-task-editor-dialog.xml.h:1
-msgid "About this application"
-msgstr "ðÒÏ ÃÀ ÐÒÏÇÒÁÍÕ"
-
-#: ui/evolution-event-editor.xml.h:2 ui/evolution-task-editor-dialog.xml.h:2
-msgid "About..."
-msgstr "ðÒÏ..."
-
-#: ui/evolution-event-editor.xml.h:3 ui/evolution-task-editor-dialog.xml.h:3
-msgid "Actio_ns"
-msgstr "䦧"
-
-#: ui/evolution-event-editor.xml.h:4 ui/evolution-task-editor-dialog.xml.h:4
-msgid "Address _Book... (FIXME)"
-msgstr "áÄÒÅÓÎÁ ËÎÉÇÁ..."
-
-#: ui/evolution-event-editor.xml.h:5 ui/evolution-task-editor-dialog.xml.h:6
-msgid "C_lear"
-msgstr "ïÞÉÓÔÉÔÉ"
-
-#: ui/evolution-event-editor.xml.h:6 ui/evolution-task-editor-dialog.xml.h:7
-msgid "C_ut"
-msgstr "÷ÉÒ¦ÚÁÔÉ"
-
-#: ui/evolution-event-editor.xml.h:7 ui/evolution-task-editor-dialog.xml.h:8
-#, fuzzy
-msgid "Chec_k Names (FIXME)"
-msgstr "úÁ×ÄÁÎÎÑ"
-
-#: ui/evolution-event-editor.xml.h:8 ui/evolution-task-editor-dialog.xml.h:9
-msgid "Clear"
-msgstr "ïÞÉÓÔÉÔÉ"
-
-#: ui/evolution-event-editor.xml.h:9 ui/evolution-task-editor-dialog.xml.h:10
-msgid "Clear the selection"
-msgstr "ïÞÉÓÔÉÔÉ ×ÉÂÒÁÎÅ"
-
-#: ui/evolution-event-editor.xml.h:11
-msgid "Close this appointment"
-msgstr "úÁËÒÉÔÉ ÃÀ ÚÕÓÔÒ¦Þ"
-
-#: ui/evolution-event-editor.xml.h:12 ui/evolution-task-editor-dialog.xml.h:13
-msgid "Cop_y to Folder... (FIXME)"
-msgstr "óËÏЦÀ×ÁÔÉ Õ ÔÅËÕ..."
-
-#: ui/evolution-event-editor.xml.h:13 ui/evolution-mail.xml.h:7
-#: ui/evolution-task-editor-dialog.xml.h:14
-msgid "Copy"
-msgstr "óËÏЦÀ×ÁÔÉ"
-
-#: ui/evolution-event-editor.xml.h:14 ui/evolution-task-editor-dialog.xml.h:15
-msgid "Copy the selection"
-msgstr "óËÏЦÀ×ÁÔÉ ×ÉÂÒÁÎÅ"
-
-#: ui/evolution-event-editor.xml.h:15 ui/evolution-task-editor-dialog.xml.h:16
-msgid "Cut"
-msgstr "÷ÉÒ¦ÚÁÔÉ"
-
-#: ui/evolution-event-editor.xml.h:16 ui/evolution-task-editor-dialog.xml.h:17
-msgid "Cut the selection"
-msgstr "÷ÉÒ¦ÚÁÔÉ ×ÉÂÒÁÎÅ"
-
-#: ui/evolution-event-editor.xml.h:18
-msgid "Delete this appointment"
-msgstr "óÔÅÒÔÉ ÃÀ ÚÕÓÔÒ¦Þ"
-
-#: ui/evolution-event-editor.xml.h:19 ui/evolution-task-editor-dialog.xml.h:20
-msgid "Dump XML"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:20 ui/evolution-task-editor-dialog.xml.h:21
-msgid "Dump the UI Xml description"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:21 ui/evolution-task-editor-dialog.xml.h:22
-msgid "Fi_rst Item in Folder (FIXME)"
-msgstr "ðÅÒÛÉÊ ÅÌÅÍÅÎÔ Õ ÔÅæ"
-
-#: ui/evolution-event-editor.xml.h:22 ui/evolution-task-editor-dialog.xml.h:25
-msgid "For_ward (FIXME)"
-msgstr "ðÅÒÅÓÌÁÔÉ"
-
-#: ui/evolution-event-editor.xml.h:23
-msgid "Forward as v_Calendar (FIXME)"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:24 ui/evolution-task-editor-dialog.xml.h:26
-msgid "Go to the next item"
-msgstr "ðÅÒÅÊÔÉ ÄÏ ÎÁÓÔÕÐÎÏÇÏ ÅÌÅÍÅÎÔÕ"
-
-#: ui/evolution-event-editor.xml.h:25 ui/evolution-task-editor-dialog.xml.h:27
-msgid "Go to the previous item"
-msgstr "ðÅÒÅÊÔÉ ÄÏ ÐÏÐÅÒÅÄÎØÏÇÏ ÅÌÅÍÅÎÔÕ"
-
-#: ui/evolution-event-editor.xml.h:26 ui/evolution-task-editor-dialog.xml.h:28
-msgid "In_complete Task (FIXME)"
-msgstr "îÅ×ÉËÏÎÁÎÅ ÚÁ×ÄÁÎÎÑ"
-
-#: ui/evolution-event-editor.xml.h:27 ui/evolution-task-editor-dialog.xml.h:30
-msgid "Modify the file's properties"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:28 ui/evolution-task-editor-dialog.xml.h:31
-msgid "N_ext"
-msgstr "îÁÓÔÕÐÎÉÊ"
-
-#: ui/evolution-event-editor.xml.h:30 ui/evolution-task-editor-dialog.xml.h:33
-msgid "Paste"
-msgstr "÷ÓÔÁ×ÉÔÉ"
-
-#: ui/evolution-event-editor.xml.h:31 ui/evolution-task-editor-dialog.xml.h:34
-msgid "Paste the clipboard"
-msgstr "÷ÓÔÁ×ÉÔÉ ÂÕÆÅÒ ÏÂͦÎÕ"
-
-#: ui/evolution-event-editor.xml.h:32 ui/evolution-task-editor-dialog.xml.h:35
-msgid "Pre_vious"
-msgstr "ðÏÐÅÒÅÄΦÊ"
-
-#: ui/evolution-event-editor.xml.h:34 ui/evolution-task-editor-dialog.xml.h:37
-msgid "Print Pre_view"
-msgstr "ðÅÒÅÇÌÑÄ ÄÒÕËÕ"
-
-#: ui/evolution-event-editor.xml.h:35 ui/evolution-task-editor-dialog.xml.h:38
-msgid "Print S_etup..."
-msgstr "ðÁÒÁÍÅÔÒÉ ÄÒÕËÕ..."
-
-#: ui/evolution-event-editor.xml.h:36 ui/evolution-task-editor-dialog.xml.h:39
-msgid "Print Setup"
-msgstr "ðÁÒÁÍÅÔÒÉ ÄÒÕËÕ"
-
-#: ui/evolution-event-editor.xml.h:40 ui/evolution-message-composer.xml.h:14
-#: ui/evolution-task-editor-dialog.xml.h:50 widgets/misc/e-filter-bar.c:239
-msgid "Save"
-msgstr "úÂÅÒÅÇÔÉ"
-
-#: ui/evolution-event-editor.xml.h:43
-#, fuzzy
-msgid "Save the appointment and close the dialog box"
-msgstr "úÂÅÒÅÇÔÉ ËÏÎÔÁËÔ ¦ ÚÁËÒÉÔÉ Ä¦ÁÌÏÇ"
-
-#: ui/evolution-event-editor.xml.h:44 ui/evolution-message-composer.xml.h:20
-#: ui/evolution-task-editor-dialog.xml.h:53
-msgid "Save the current file"
-msgstr "úÂÅÒÅÇÔÉ ÐÏÔÏÞÎÉÊ ÆÁÊÌ"
-
-#: ui/evolution-event-editor.xml.h:46
-msgid "Schedule _Meeting"
-msgstr "ðÌÁÎÕ×ÁÔÉ ÚÕÓÔÒ¦Þ"
-
-#: ui/evolution-event-editor.xml.h:47
-#, fuzzy
-msgid "Schedule some sort of a meeting"
-msgstr "ðÌÁÎÕ×ÁÎÎÑ ÚÕÓÔÒ¦Þ¦"
-
-#: ui/evolution-event-editor.xml.h:48 ui/evolution-mail.xml.h:74
-#: ui/evolution-task-editor-dialog.xml.h:57
-msgid "Select All"
-msgstr "÷ÉÂÒÁÔÉ ×ÓÅ"
-
-#: ui/evolution-event-editor.xml.h:49 ui/evolution-task-editor-dialog.xml.h:58
-#, fuzzy
-msgid "Select everything"
-msgstr "÷ÉÂÒÁÔÉ ÎÁÚ×É"
-
-#: ui/evolution-event-editor.xml.h:50 ui/evolution-task-editor-dialog.xml.h:59
-msgid "Setup the page settings for your current printer"
-msgstr ""
-
-#: ui/evolution-event-editor.xml.h:51 ui/evolution-task-editor-dialog.xml.h:60
-#, fuzzy
-msgid "Task _Request (FIXME)"
-msgstr "úÁ×ÄÁÎÎÑ"
-
-#: ui/evolution-event-editor.xml.h:52 ui/evolution-message-composer.xml.h:38
-#: ui/evolution-task-editor-dialog.xml.h:63
-msgid "_About..."
-msgstr "ðÒÏ..."
-
-#: ui/evolution-event-editor.xml.h:53 ui/evolution-message-composer.xml.h:41
-#: ui/evolution-task-editor-dialog.xml.h:65 ui/evolution.xml.h:28
-msgid "_Close"
-msgstr "úÁËÒÉÔÉ"
-
-#: ui/evolution-event-editor.xml.h:54 ui/evolution-task-editor-dialog.xml.h:66
-#: ui/evolution.xml.h:29
-msgid "_Contact (FIXME)"
-msgstr "ëÏÎÔÁËÔ"
-
-#: ui/evolution-event-editor.xml.h:55 ui/evolution-task-editor-dialog.xml.h:67
-msgid "_Copy"
-msgstr "óËÏЦÀ×ÁÔÉ"
-
-#: ui/evolution-event-editor.xml.h:56 ui/evolution-message-composer.xml.h:42
-#: ui/evolution-task-editor-dialog.xml.h:68
-msgid "_Debug"
-msgstr "îÁÌÁÇÏÄÖÅÎÎÑ"
-
-#: ui/evolution-event-editor.xml.h:60 ui/evolution-message-composer.xml.h:46
-#: ui/evolution-task-editor-dialog.xml.h:72 ui/evolution.xml.h:35
-msgid "_Help"
-msgstr "äÏצÄËÁ"
-
-#: ui/evolution-event-editor.xml.h:61 ui/evolution-task-editor-dialog.xml.h:73
-msgid "_Item (FIXME)"
-msgstr "åÌÅÍÅÎÔ"
-
-#: ui/evolution-event-editor.xml.h:62 ui/evolution-task-editor-dialog.xml.h:74
-msgid "_Journal Entry (FIXME)"
-msgstr "öÕÒÎÁÌØÎÉÊ ÚÁÐÉÓ"
-
-#: ui/evolution-event-editor.xml.h:63 ui/evolution-task-editor-dialog.xml.h:75
-msgid "_Last Item in Folder (FIXME)"
-msgstr "ïÓÔÁÎÎ¦Ê ÅÌÅÍÅÎÔ Õ ÔÅæ"
-
-#: ui/evolution-event-editor.xml.h:64 ui/evolution-task-editor-dialog.xml.h:76
-msgid "_Mail Message (FIXME)"
-msgstr "÷¦Ä¦ÓÌÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: ui/evolution-event-editor.xml.h:65 ui/evolution-task-editor-dialog.xml.h:78
-msgid "_Move to Folder... (FIXME)"
-msgstr "ðÅÒÅÎÅÓÔÉ × ÔÅËÕ..."
-
-#: ui/evolution-event-editor.xml.h:67 ui/evolution-task-editor-dialog.xml.h:80
-msgid "_Note (FIXME)"
-msgstr "ðÒÉͦÔËÁ"
-
-#: ui/evolution-event-editor.xml.h:68 ui/evolution-task-editor-dialog.xml.h:81
-msgid "_Paste"
-msgstr "÷ÓÔÁ×ÉÔÉ"
-
-#: ui/evolution-event-editor.xml.h:70 ui/evolution-mail.xml.h:109
-#: ui/evolution-task-editor-dialog.xml.h:83
-msgid "_Properties..."
-msgstr "÷ÌÁÓÔÉ×ÏÓÔ¦..."
-
-#: ui/evolution-event-editor.xml.h:72 ui/evolution-task-editor-dialog.xml.h:86
-msgid "_Select All"
-msgstr "÷ÉÂÒÁÔÉ ×ÓÅ"
-
-#: ui/evolution-event-editor.xml.h:73 ui/evolution-task-editor-dialog.xml.h:87
-#: ui/evolution.xml.h:42
-msgid "_Task (FIXME)"
-msgstr "úÁ×ÄÁÎÎÑ"
-
-#: ui/evolution-event-editor.xml.h:75 ui/evolution-task-editor-dialog.xml.h:89
-#, fuzzy
-msgid "_Unread Item (FIXME)"
-msgstr "ëÏÎÔÁËÔ"
-
-#: ui/evolution-executive-summary.xml.h:1
-#, fuzzy
-msgid "Add Service"
-msgstr "äÏÄÁÔÉ ÄÖÅÒÅÌÏ"
-
-#: ui/evolution-executive-summary.xml.h:2
-msgid "Add a new service to the Executive Summary"
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:3
-#, fuzzy
-msgid "Create a new email"
-msgstr "óÔ×ÏÒÉÔÉ ÎÏ×ÉÊ ËÏÎÔÁËÔ"
-
-#: ui/evolution-executive-summary.xml.h:4
-msgid "Executive Summary Settings..."
-msgstr ""
-
-#: ui/evolution-executive-summary.xml.h:5
-msgid "New Mail"
-msgstr "îÏ×Á ÐÏÛÔÁ"
-
-#: ui/evolution-mail.xml.h:2
-msgid "Apply any new filters to the mail in this box"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:3
-msgid "Change the properties of this folder"
-msgstr "úͦÎÉÔÉ ×ÌÁÓÔÉ×ÏÓÔ¦ 椧 ÔÅËÉ"
-
-#: ui/evolution-mail.xml.h:4
-msgid "Compose"
-msgstr "ð¦ÄÇÏÔÕ×ÁÔÉ"
-
-#: ui/evolution-mail.xml.h:5
-msgid "Compose a new message"
-msgstr "óËÌÁÓÔÉ ÎÏ×Å ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: ui/evolution-mail.xml.h:6
-msgid "Configure Folder..."
-msgstr "îÁÌÁÛÔÕ×ÁÔÉ ÔÅËÕ..."
-
-#: ui/evolution-mail.xml.h:8
-msgid "Copy message to a new folder"
-msgstr "óËÏЦÀ×ÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ Õ ÎÏ×Õ ÔÅËÕ"
-
-#: ui/evolution-mail.xml.h:9
-msgid "Copy selected messages to another folder"
-msgstr "óËÏЦÀ×ÁÔÉ ×ÉÂÒÁΦ ÐÏצÄÏÍÌÅÎÎÑ Õ ¦ÎÛÕ ÔÅËÕ"
-
-#: ui/evolution-mail.xml.h:10
-msgid "Create _Virtual Folder From Message"
-msgstr "óÔ×ÏÒÉÔÉ ×¦ÒÔÕÁÌØÎÕ ÔÅËÕ Ú ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: ui/evolution-mail.xml.h:12
-msgid "Delete the selected messages"
-msgstr "óÔÅÒÔÉ ×ÉÂÒÁΦ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: ui/evolution-mail.xml.h:14
-msgid "Display all of the message headers"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:15
-msgid "Edit Message"
-msgstr "÷ÉÐÒÁ×ÉÔÉ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: ui/evolution-mail.xml.h:16
-msgid "Edit the current message"
-msgstr "÷ÉÐÒÁ×ÉÔÉ ÐÏÔÏÞÎÅ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: ui/evolution-mail.xml.h:17
-msgid "Empty _Trash"
-msgstr "óÐÏÒÏÖÎÉÔÉ ÓͦÔÎÉË"
-
-#: ui/evolution-mail.xml.h:18
-msgid "Expunge"
-msgstr "÷ÉËÒÅÓÌÉÔÉ"
-
-#: ui/evolution-mail.xml.h:19
-msgid "Filter on Mailing _List"
-msgstr "æ¦ÌØÔÒ ÓÐÉÓËÕ ÒÏÚÓÉÌËÉ"
-
-#: ui/evolution-mail.xml.h:20
-msgid "Filter on Se_nder"
-msgstr "æ¦ÌØÔÒ ×¦ÄÐÒÁ×ÎÉËÁ"
-
-#: ui/evolution-mail.xml.h:21
-msgid "Filter on _Recipients"
-msgstr "æ¦ÌØÔÒ ÏÔÒÉÍÕ×ÁÞ¦×"
-
-#: ui/evolution-mail.xml.h:22
-msgid "Filter on _Subject"
-msgstr "æ¦ÌØÔÒ ÔÅÍÉ"
-
-#: ui/evolution-mail.xml.h:23
-msgid "Finaly remove all mails tagged for deletion"
-msgstr "ïÓÔÁÔÏÞÎÏ ×ÉÄÁÌÉÔÉ ÐÏÛÔÕ ×¦ÄͦÞÅÎÕ ÄÌÑ ÓÔÉÒÁÎÎÑ"
-
-#: ui/evolution-mail.xml.h:24
-msgid "Forget _Passwords"
-msgstr "úÁÂÕÔÉ ÐÁÒÏ̦"
-
-#: ui/evolution-mail.xml.h:26
-msgid "Forward As"
-msgstr "ðÅÒÅÓÌÁÔÉ ÑË"
-
-#: ui/evolution-mail.xml.h:27
-#, fuzzy
-msgid "Forward inline"
-msgstr "ðÅÒÅÓÌÁÔÉ"
-
-#: ui/evolution-mail.xml.h:28
-msgid "Forward the selected mail to someone"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:30
-#, fuzzy
-msgid "Forward this message in-line with your mail, so you can edit it"
-msgstr "ðÅÒÅÓÌÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ ÂÅÚ ÔÅÍÉ"
-
-#: ui/evolution-mail.xml.h:31
-msgid "Full _Headers"
-msgstr "ðÏ×Φ ÚÁÇÏÌÏ×ËÉ"
-
-#: ui/evolution-mail.xml.h:32
-msgid "Go to the next message"
-msgstr "ðÅÒÅÊÔÉ ÄÏ ÎÁÓÔÕÐÎÏÇÏ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: ui/evolution-mail.xml.h:33
-msgid "Go to the previous message"
-msgstr "ðÅÒÅÊÔÉ ÄÏ ÐÏÐÅÒÅÄÎØÏÇÏ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: ui/evolution-mail.xml.h:34
-msgid "Hide Deleted Messages"
-msgstr "ðÒÉÂÒÁÔÉ ÓÔÅÒÔ¦ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: ui/evolution-mail.xml.h:35
-msgid "Hide S_elected Messages"
-msgstr "ðÒÉÂÒÁÔÉ ×ÉÂÒÁΦ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: ui/evolution-mail.xml.h:36
-msgid "Hide _Deleted Messages"
-msgstr "ðÒÉÂÒÁÔÉ ÓÔÅÒÔ¦ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: ui/evolution-mail.xml.h:37
-msgid "Hide _Read messages"
-msgstr "ðÒÉÂÒÁÔÉ ÐÒÏÞÉÔÁΦ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: ui/evolution-mail.xml.h:38
-msgid "Invert Selection"
-msgstr "¶Î×ÅÒÔÕ×ÁÔÉ ×ɦÒ"
-
-#: ui/evolution-mail.xml.h:39
-msgid "Manage _Subscriptions..."
-msgstr "ëÅÒÕ×ÁÎÎÑ ÐÅÒÅÄÐÌÁÔÁÍÉ..."
-
-#: ui/evolution-mail.xml.h:41
-msgid "Mark All as R_ead"
-msgstr "ðÏÚÎÁÞÉÔÉ ×Ó¦ ÐÒÏÞÉÔÁÎÉÍÉ"
-
-#: ui/evolution-mail.xml.h:42
-msgid "Mark As Read"
-msgstr "ðÏÚÎÁÞÉÔÉ ÐÒÏÞÉÔÁÎÉÍ"
-
-#: ui/evolution-mail.xml.h:43
-msgid "Mark As U_nread"
-msgstr "ðÏÚÎÁÞÉÔÉ ÎÅÐÒÏÞÉÔÁÎÉÍ"
-
-#: ui/evolution-mail.xml.h:45
-#, fuzzy
-msgid "Mark the selected messages as having been read"
-msgstr "îÁÄÒÕËÕ×ÁÔÉ ×ÉÂÒÁÎÅ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: ui/evolution-mail.xml.h:46
-msgid "Mark the selected messages as not having been read"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:47
-msgid "Move"
-msgstr "ðÅÒÅÎÅÓÔÉ"
-
-#: ui/evolution-mail.xml.h:48
-msgid "Move message to a new folder"
-msgstr "ðÅÒÅÎÅÓÔÉ ÐÏצÄÏÍÌÅÎÎÑ Õ ÎÏ×Õ ÔÅËÕ"
-
-#: ui/evolution-mail.xml.h:49
-#, fuzzy
-msgid "Move selected messages to another folder"
-msgstr "ðÅÒÅÎÅÓÔÉ ÐÏצÄÏÍÌÅÎÎÑ Õ ÎÏ×Õ ÔÅËÕ"
-
-#: ui/evolution-mail.xml.h:51
-msgid "Open in New Window"
-msgstr "÷¦ÄËÒÉÔÉ Õ ÎÏ×ÏÍÕ ×¦ËΦ"
-
-#: ui/evolution-mail.xml.h:52
-msgid "Open the current message in a new window"
-msgstr "÷¦ÄËÒÉÔÉ ÐÏÔÏÞÎÅ ÐÏצÄÏÍÌÅÎÎÑ Õ ÎÏ×ÏÍÕ ×¦ËΦ"
-
-#: ui/evolution-mail.xml.h:58
-msgid "Print Preview of message..."
-msgstr "ðÅÒÅÇÌÑÄ ÄÒÕËÕ ÐÏצÄÏÍÌÅÎÎÑ..."
-
-#: ui/evolution-mail.xml.h:59
-msgid "Print message to the printer"
-msgstr "îÁÄÒÕËÕ×ÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ ÎÁ ÐÒÉÎÔÅÒ¦"
-
-#: ui/evolution-mail.xml.h:60
-msgid "Print message..."
-msgstr "îÁÄÒÕËÕ×ÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ..."
-
-#: ui/evolution-mail.xml.h:63
-msgid "Redirect (FIXME: implement me)"
-msgstr "ðÅÒÅÎÁÐÒÁ×ÉÔÉ"
-
-#: ui/evolution-mail.xml.h:67
-msgid "Reply to all"
-msgstr "÷¦ÄÐÏצÓÔÉ ×Ó¦Í"
-
-#: ui/evolution-mail.xml.h:69
-msgid "Reply to sender"
-msgstr "÷¦ÄÐÏצÓÔÉ ×¦ÄÐÒÁ×ÎÉËÕ"
-
-#: ui/evolution-mail.xml.h:71
-#, fuzzy
-msgid "S_earch Message"
-msgstr "óÅÒ×ÅÒÎÅ ÐÏצÄÏÍÌÅÎÎÑ:"
-
-#: ui/evolution-mail.xml.h:72
-msgid "S_ource"
-msgstr "äÖÅÒÅÌÏ"
-
-#: ui/evolution-mail.xml.h:73
-msgid "Save the message into a new file"
-msgstr "úÂÅÒÅÇÔÉ ÐÏצÄÏÍÌÅÎÎÑ Õ ÎÏ×ÏÍÕ ÆÁÊ̦"
-
-#: ui/evolution-mail.xml.h:75 ui/evolution-subscribe.xml.h:7
-msgid "Select _All"
-msgstr "÷ÉÂÒÁÔÉ ×ÓÅ"
-
-#: ui/evolution-mail.xml.h:76
-msgid "Select _Thread"
-msgstr "÷ÉÂÒÁÔÉ Ç¦ÌËÕ"
-
-#: ui/evolution-mail.xml.h:77
-#, fuzzy
-msgid "Send / Receive"
-msgstr "äÁÔÁ ÏÔÒÉÍÁÎÎÑ"
-
-#: ui/evolution-mail.xml.h:78
-msgid "Send a reply to the person who sent you this mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:79
-msgid "Send a single mail in reply to all the selected mail"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:80
-#, fuzzy
-msgid ""
-"Send queued mail\n"
-" and retrieve new mail"
-msgstr "÷¦Ä¦ÓÌÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ Ú ÞÅÒÇÉ ÔÁ ÏÔÒÉÍÁÔÉ ÎÏצ"
-
-#: ui/evolution-mail.xml.h:82
-msgid "Send queued mail and retrieve new mail"
-msgstr "÷¦Ä¦ÓÌÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ Ú ÞÅÒÇÉ ÔÁ ÏÔÒÉÍÁÔÉ ÎÏצ"
-
-#: ui/evolution-mail.xml.h:83
-msgid "Show _All"
-msgstr "ðÏËÁÚÁÔÉ ×ÓÅ"
-
-#: ui/evolution-mail.xml.h:85
-#, fuzzy
-msgid "Threaded Message list"
-msgstr "ðÅÒÅÓÌÁÔÉ ÃÅ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: ui/evolution-mail.xml.h:86
-#, fuzzy
-msgid "Un-delete the selected messages"
-msgstr "îÁÄÒÕËÕ×ÁÔÉ ×ÉÂÒÁÎÅ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: ui/evolution-mail.xml.h:87
-msgid "Undelete"
-msgstr "÷¦ÄÎÏ×ÉÔÉ"
-
-#: ui/evolution-mail.xml.h:92
-msgid "View Raw Message Source"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:93
-#, fuzzy
-msgid "Virtual Folder _Editor..."
-msgstr "òÅÄÁËÔÏÒ ×¦ÒÔÕÁÌØÎÉÈ ÔÅË"
-
-#: ui/evolution-mail.xml.h:94
-msgid "_Apply Filters"
-msgstr "úÁÓÔÏÓÕ×ÁÔÉ Æ¦ÌØÔÒÉ"
-
-#: ui/evolution-mail.xml.h:95
-msgid "_Attachment"
-msgstr "äÏÌÕÞÅÎÎÑ"
-
-#: ui/evolution-mail.xml.h:97
-#, fuzzy
-msgid "_Create Filter From Message"
-msgstr "óÔ×ÏÒÉÔÉ ÐÒÁ×ÉÌÏ Ú ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: ui/evolution-mail.xml.h:99
-msgid "_Expunge"
-msgstr "÷ÉËÒÅÓÌÉÔÉ"
-
-#: ui/evolution-mail.xml.h:100
-msgid "_Filters..."
-msgstr "æ¦ÌØÔÒÉ..."
-
-#: ui/evolution-mail.xml.h:101 ui/evolution.xml.h:32
-msgid "_Folder"
-msgstr "ôÅËÁ"
-
-#: ui/evolution-mail.xml.h:103
-#, fuzzy
-msgid "_Inline"
-msgstr "ðÏËÁÖÞÉË"
-
-#: ui/evolution-mail.xml.h:104 ui/evolution-subscribe.xml.h:12
-msgid "_Invert Selection"
-msgstr "¶Î×ÅÒÔÕ×ÁÔÉ ×ɦÒ"
-
-#: ui/evolution-mail.xml.h:105
-msgid "_Mail Message"
-msgstr "÷¦Ä¦ÓÌÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: ui/evolution-mail.xml.h:106
-msgid "_Mail Settings..."
-msgstr "õÓÔÁÎÏ×ËÉ ÐÏÛÔÉ..."
-
-#: ui/evolution-mail.xml.h:108
-#, fuzzy
-msgid "_Open Selected Items"
-msgstr "÷¦ÄËÒÉÔÉ ÚÁ×ÄÁÎÎÑ"
-
-#: ui/evolution-mail.xml.h:110
-msgid "_Quoted"
-msgstr ""
-
-#: ui/evolution-mail.xml.h:111
-msgid "_Reply"
-msgstr "÷¦ÄÐÏצÓÔÉ"
-
-#: ui/evolution-mail.xml.h:112
-msgid "_Resend Messages"
-msgstr "÷¦Ä¦ÓÌÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ ÚÎÏ×Õ"
-
-#: ui/evolution-mail.xml.h:114
-msgid "_Save Message As..."
-msgstr "úÂÅÒÅÇÔÉ ÐÏצÄÏÍÌÅÎÎÑ ÑË..."
-
-#: ui/evolution-mail.xml.h:115
-#, fuzzy
-msgid "_Send / Receive"
-msgstr "äÁÔÁ ÏÔÒÉÍÁÎÎÑ"
-
-#: ui/evolution-mail.xml.h:116
-msgid "_Threaded"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:1
-msgid "Attach"
-msgstr "äÏÌÕÞÉÔÉ"
-
-#: ui/evolution-message-composer.xml.h:4
-#: ui/evolution-task-editor-dialog.xml.h:12
-msgid "Close the current file"
-msgstr "úÁËÒÉÔÉ ÐÏÔÏÞÎÉÊ ÆÁÊÌ"
-
-#: ui/evolution-message-composer.xml.h:5
-msgid "Encrypt this message with PGP"
-msgstr "úÁÛÉÆÒÕ×ÁÔÉ ÃÅ ÐÏצÄÏÍÌÅÎÎÑ PGP"
-
-#: ui/evolution-message-composer.xml.h:6
-msgid "F_ormat"
-msgstr "æÏÒÍÁÔ"
-
-#: ui/evolution-message-composer.xml.h:7
-msgid "HTML"
-msgstr "HTML"
-
-#: ui/evolution-message-composer.xml.h:8
-msgid "Insert a file as text into the message"
-msgstr "÷ÓÔÁ×ÉÔÉ ÆÁÊÌ ÑË ÔÅËÓÔ Õ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: ui/evolution-message-composer.xml.h:9
-msgid "Insert text file..."
-msgstr "÷ÓÔÁ×ÉÔÉ ÔÅËÓÔÏ×ÉÊ ÆÁÊÌ..."
-
-#: ui/evolution-message-composer.xml.h:11
-msgid "Open a file"
-msgstr "÷¦ÄËÒÉÔÉ ÆÁÊÌ"
-
-#: ui/evolution-message-composer.xml.h:12
-msgid "PGP Encrypt"
-msgstr "ûÉÆÒÕ×ÁÎÎÑ PGP"
-
-#: ui/evolution-message-composer.xml.h:13
-msgid "PGP Sign"
-msgstr "ð¦ÄÐÉÓ PGP"
-
-#: ui/evolution-message-composer.xml.h:17
-#, fuzzy
-msgid "Save _Draft"
-msgstr "þÏÒÎÏ×ÉË"
-
-#: ui/evolution-message-composer.xml.h:18
-msgid "Save in _folder... (FIXME)"
-msgstr "úÂÅÒÅÇÔÉ × ÔÅæ..."
-
-#: ui/evolution-message-composer.xml.h:19
-msgid "Save in folder..."
-msgstr "úÂÅÒÅÇÔÉ × ÔÅæ..."
-
-#: ui/evolution-message-composer.xml.h:21
-msgid "Save the current file with a different name"
-msgstr "úÂÅÒÅÇÔÉ ÐÏÔÏÞÎÉÊ ÆÁÊÌ Ú ¦ÎÛÏÀ ÎÁÚ×ÏÀ"
-
-#: ui/evolution-message-composer.xml.h:22
-msgid "Save the message in a specified folder"
-msgstr "úÂÅÒÅÇÔÉ ÐÏצÄÏÍÌÅÎÎÑ Õ ×ËÁÚÁÎ¦Ê ÔÅæ"
-
-#: ui/evolution-message-composer.xml.h:23
-msgid "Send"
-msgstr "÷¦ÄÐÒÁ×ÉÔÉ"
-
-#: ui/evolution-message-composer.xml.h:24
-msgid "Send _Later"
-msgstr "÷¦ÄÐÒÁ×ÉÔÉ Ð¦ÚΦÛÅ"
-
-#: ui/evolution-message-composer.xml.h:25
-msgid "Send _later"
-msgstr "÷¦ÄÐÒÁ×ÉÔÉ Ð¦ÚΦÛÅ"
-
-#: ui/evolution-message-composer.xml.h:26
-msgid "Send the mail in HTML format"
-msgstr "÷¦Ä¦ÓÌÁÔÉ ÐÏÛÔÕ × ÆÏÒÍÁÔ¦ HTML"
-
-#: ui/evolution-message-composer.xml.h:27
-msgid "Send the message later"
-msgstr "÷¦Ä¦ÓÌÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ Ð¦ÚΦÛÅ"
-
-#: ui/evolution-message-composer.xml.h:28
-msgid "Send the message now"
-msgstr "÷¦Ä¦ÓÌÁÔÉ ÐÏצÄÏÍÌÅÎÎÑ ÎÅÇÁÊÎÏ"
-
-#: ui/evolution-message-composer.xml.h:29
-msgid "Send this message now"
-msgstr "óÔÅÒÔÉ ÃÅ ÐÏצÄÏÍÌÅÎÎÑ ÎÅÇÁÊÎÏ"
-
-#: ui/evolution-message-composer.xml.h:30
-msgid "Show / hide attachments"
-msgstr "ðÏËÁÚÁÔÉ / ÐÒÉÂÒÁÔÉ ÄÏÌÕÞÅÎÎÑ"
-
-#: ui/evolution-message-composer.xml.h:31
-msgid "Show _attachments"
-msgstr "ðÏËÁÚÁÔÉ ÄÏÌÕÞÅÎÎÑ"
-
-#: ui/evolution-message-composer.xml.h:32
-msgid "Show attachments"
-msgstr "ðÏËÁÚÁÔÉ ÄÏÌÕÞÅÎÎÑ"
-
-#: ui/evolution-message-composer.xml.h:33
-msgid "Sign this message with your PGP key"
-msgstr "ð¦ÄÐÉÓÁÔÉ ÃÅ ÐÏצÄÏÍÌÅÎÎÑ ×ÁÛÉÍ ËÌÀÞÅÍ PGP"
-
-#: ui/evolution-message-composer.xml.h:34
-#, fuzzy
-msgid "Toggles whether the BCC field is displayed"
-msgstr "ðÅÒÅÍÉËÎÕÔÉ ÓÔÁÎ ÐÏËÁÚÕ ÐÁÎÅ̦ ÔÅË"
-
-#: ui/evolution-message-composer.xml.h:35
-#, fuzzy
-msgid "Toggles whether the CC field is displayed"
-msgstr "ðÅÒÅÍÉËÎÕÔÉ ÓÔÁÎ ÐÏËÁÚÕ ÐÁÎÅ̦ ÔÅË"
-
-#: ui/evolution-message-composer.xml.h:36
-#, fuzzy
-msgid "Toggles whether the From chooser is displayed"
-msgstr "ðÅÒÅÍÉËÎÕÔÉ ÓÔÁÎ ÐÏËÁÚÕ ÐÁÎÅ̦ ÔÅË"
-
-#: ui/evolution-message-composer.xml.h:37
-msgid "Toggles whether the Reply-To field is displayed"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:39
-msgid "_Bcc Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:40
-msgid "_Cc Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:45
-msgid "_From Field"
-msgstr ""
-
-#: ui/evolution-message-composer.xml.h:47
-msgid "_Insert"
-msgstr "÷ÓÔÁ×ÉÔÉ"
-
-#: ui/evolution-message-composer.xml.h:48
-msgid "_Insert text file... (FIXME)"
-msgstr "÷ÓÔÁ×ÉÔÉ ÔÅËÓÔÏ×ÉÊ ÆÁÊÌ..."
-
-#: ui/evolution-message-composer.xml.h:49
-msgid "_Open..."
-msgstr "÷¦ÄËÒÉÔÉ..."
-
-#: ui/evolution-message-composer.xml.h:50
-#, fuzzy
-msgid "_Reply-To Field"
-msgstr "÷¦ÄÐÏצÄÁÔÉ ÎÁ:"
-
-#: ui/evolution-message-composer.xml.h:52
-msgid "_Security"
-msgstr "âÅÚÐÅËÁ"
-
-#: ui/evolution-subscribe.xml.h:1
-msgid "Add folder to your list of subscribed folders"
-msgstr "äÏÄÁÔÉ ÔÅËÕ ÄÏ ×ÁÛÏÇÏ ÓÐÉÓËÕ ÐÅÒÅÄÐÌÁÞÅÎÉÈ ÔÅË"
-
-#: ui/evolution-subscribe.xml.h:3
-msgid "F_older"
-msgstr "ôÅËÁ"
-
-#: ui/evolution-subscribe.xml.h:4
-msgid "Refresh List"
-msgstr "ïÎÏ×ÉÔÉ ÓÐÉÓÏË"
-
-#: ui/evolution-subscribe.xml.h:5
-msgid "Refresh List of Folders"
-msgstr "ïÎÏ×ÉÔÉ ÓÐÉÓÏË ÔÅË"
-
-#: ui/evolution-subscribe.xml.h:6
-msgid "Remove folder from your list of subscribed folders"
-msgstr ""
-
-#: ui/evolution-subscribe.xml.h:8
-msgid "Subscribe"
-msgstr "ðÅÒÅÄÐÌÁÔÉÔÉ"
-
-#: ui/evolution-subscribe.xml.h:9
-msgid "Unsubscribe"
-msgstr "ðÒÉÐÉÎÉÔÉ ÐÅÒÅÄÐÌÁÔÕ"
-
-#: ui/evolution-task-editor-dialog.xml.h:5
-#, fuzzy
-msgid "Assig_n Task (FIXME)"
-msgstr "ðÒÉ×'ÑÚÁÔÉ ÚÁ×ÄÁÎÎÑ"
-
-#: ui/evolution-task-editor-dialog.xml.h:24
-msgid "Find Again"
-msgstr "ûÕËÁÔÉ ÄÁ̦"
-
-#: ui/evolution-task-editor-dialog.xml.h:29
-msgid "Meeting Re_quest (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:43
-msgid "Redo"
-msgstr "ðÏ×ÔÏÒÉÔÉ"
-
-#: ui/evolution-task-editor-dialog.xml.h:44
-msgid "Redo the undone action"
-msgstr "ðÏ×ÔÏÒÉÔÉ ×¦ÄͦÎÅÎÕ Ä¦À"
-
-#: ui/evolution-task-editor-dialog.xml.h:45
-msgid "Replace"
-msgstr "úÁͦÎÉÔÉ"
-
-#: ui/evolution-task-editor-dialog.xml.h:46
-msgid "Replace a string"
-msgstr "úÁͦÎÉÔÉ ÒÑÄÏË"
-
-#: ui/evolution-task-editor-dialog.xml.h:47
-msgid "Reply to A_ll (FIXME)"
-msgstr "÷¦ÄÐÏצÓÔÉ ×Ó¦Í"
-
-#: ui/evolution-task-editor-dialog.xml.h:48
-#, fuzzy
-msgid "S_end Status Report (FIXME)"
-msgstr "ëÏÎÔÁËÔ"
-
-#: ui/evolution-task-editor-dialog.xml.h:49
-msgid "S_kip Occurrence (FIXME)"
-msgstr ""
-
-#: ui/evolution-task-editor-dialog.xml.h:54
-#, fuzzy
-msgid "Save the task and close the dialog box"
-msgstr "úÂÅÒÅÇÔÉ ËÏÎÔÁËÔ ¦ ÚÁËÒÉÔÉ Ä¦ÁÌÏÇ"
-
-#: ui/evolution-task-editor-dialog.xml.h:55
-msgid "Search again for the same string"
-msgstr "ûÕËÁÔÉ ÚÎÏ×ÕÊ ÔÏÊ ÖÅ ÒÑÄÏË"
-
-#: ui/evolution-task-editor-dialog.xml.h:56
-msgid "Search for a string"
-msgstr "ðÏÛÕË ÒÑÄËÁ"
-
-#: ui/evolution-task-editor-dialog.xml.h:61
-msgid "Undo"
-msgstr "÷¦ÄͦÎÉÔÉ"
-
-#: ui/evolution-task-editor-dialog.xml.h:62
-msgid "Undo the last action"
-msgstr "÷¦ÄͦÎÉÔÉ ÏÓÔÁÎÎÀ ÏÐÅÒÁæÀ"
-
-#: ui/evolution-task-editor-dialog.xml.h:64 ui/evolution.xml.h:27
-msgid "_Appointment (FIXME)"
-msgstr "úÕÓÔÒ¦Þ"
-
-#: ui/evolution-task-editor-dialog.xml.h:77
-msgid "_Mark Complete (FIXME)"
-msgstr "ðÏÚÎÁÞÉÔÉ ×ÉËÏÎÁÎÉÍ"
-
-#: ui/evolution-task-editor-dialog.xml.h:84
-msgid "_Reply (FIXME)"
-msgstr "÷¦ÄÐÏצÓÔÉ"
-
-#: ui/evolution-tasks.xml.h:2
-msgid "Create a new task"
-msgstr "óÔ×ÏÒÉÔÉ ÎÏ×Õ ÚÁ×ÄÁÎÎÑ"
-
-#: ui/evolution-tasks.xml.h:3
-msgid "New Task"
-msgstr "îÏ×Å ÚÁ×ÄÁÎÎÑ"
-
-#: ui/evolution-tasks.xml.h:5
-msgid "Save task as something else"
-msgstr "úÂÅÒÅÇÔÉ ÚÁ×ÄÁÎÎÑ ÑË ÝÏÓØ ¦ÎÛÅ"
-
-#: ui/evolution-tasks.xml.h:6
-msgid "Tasks Preferences..."
-msgstr "ðÁÒÁÍÅÔÒÉ ÚÁ×ÄÁÎØ..."
-
-#: ui/evolution-tasks.xml.h:9
-msgid "_Task"
-msgstr "úÁ×ÄÁÎÎÑ"
-
-#: ui/evolution.xml.h:1
-msgid "About Evolution..."
-msgstr "ðÒÏ Evolution..."
-
-#: ui/evolution.xml.h:3
-msgid "Close this window"
-msgstr "úÁËÒÉÔÉ ÃŠצËÎÏ"
-
-#: ui/evolution.xml.h:4
-msgid "Customi_ze Toolbars..."
-msgstr ""
-
-#: ui/evolution.xml.h:5
-msgid "Customize"
-msgstr ""
-
-#: ui/evolution.xml.h:6
-msgid "Customize toolbars"
-msgstr ""
-
-#: ui/evolution.xml.h:7
-msgid "Display a different folder"
-msgstr "÷¦ÄÏÂÒÁÚÉÔÉ ¦ÎÛÕ ÔÅËÕ"
-
-#: ui/evolution.xml.h:8
-msgid "E_xit"
-msgstr "÷ÉÊÔÉ"
-
-#: ui/evolution.xml.h:9
-msgid "Evolution _Window"
-msgstr "÷¦ËÎÏ Evolution"
-
-#: ui/evolution.xml.h:10
-#, fuzzy
-msgid "Evolution bar _shortcut"
-msgstr "Evolution - %s"
-
-#: ui/evolution.xml.h:11
-msgid "Exit the program"
-msgstr "÷ÉÊÔÉ Ú ÐÒÏÇÒÁÍÉ"
-
-#: ui/evolution.xml.h:12
-msgid "Getting _Started"
-msgstr "òÏÚÐÏÞÁÔÏ"
-
-#: ui/evolution.xml.h:13
-msgid "Import an external file format"
-msgstr ""
-
-#: ui/evolution.xml.h:14
-msgid "Main toolbar"
-msgstr "çÏÌÏ×ÎÁ ÐÁÎÅÌØ ¦ÎÓÔÒÕÍÅÎÔ¦×"
-
-#: ui/evolution.xml.h:15
-msgid "Show information about Evolution"
-msgstr "ðÏËÁÚÁÔÉ ¦ÎÆÏÒÍÁæÀ ÐÒÏ Evolution"
-
-#: ui/evolution.xml.h:16
-msgid "Submit Bug Report"
-msgstr "ð¦ÄÇÏÔÕ×ÁÔÉ Ú×¦Ô ÐÒÏ ÐÏÍÉÌËÕ"
-
-#: ui/evolution.xml.h:17
-msgid "Submit _Bug Report"
-msgstr "÷¦Ä¦ÓÌÁÔÉ Ú×¦Ô ÐÒÏ ÐÏÍÉÌËÕ"
-
-#: ui/evolution.xml.h:18
-msgid "Submit bug report using Bug Buddy."
-msgstr "÷¦Ä¦ÓÌÁÔÉ Ú×¦Ô ÐÒÏ ÐÏÍÉÌËÕ ×ÉËÏÒÉÓÔÏ×ÕÀÞÉ Bug Buddy"
-
-#: ui/evolution.xml.h:19
-msgid "Toggle whether to show the folder bar"
-msgstr "ðÅÒÅÍÉËÎÕÔÉ ÓÔÁÎ ÐÏËÁÚÕ ÐÁÎÅ̦ ÔÅË"
-
-#: ui/evolution.xml.h:20
-#, fuzzy
-msgid "Toggle whether to show the shortcut bar"
-msgstr "ðÅÒÅÍÉËÎÕÔÉ ÓÔÁÎ ÐÏËÁÚÕ ÐÁÎÅ̦ ÔÅË"
-
-#: ui/evolution.xml.h:21
-msgid "Using the C_ontact Manager"
-msgstr "÷ÉËÏÒÉÓÔÁÎÎÑ ÍÅÎÅÄÖÅÒÁ ËÏÎÔÁËÔ¦×"
-
-#: ui/evolution.xml.h:22
-msgid "Using the _Calendar"
-msgstr "÷ÉËÏÒÉÓÔÁÎÎÑ ËÁÌÅÎÄÁÒÑ"
-
-#: ui/evolution.xml.h:23
-msgid "Using the _Mailer"
-msgstr "÷ÉËÏÒÉÓÔÁÎÎÑ ÐÏÛÔÏ×ϧ ÐÒÏÇÒÁÍÉ"
-
-#: ui/evolution.xml.h:24
-#, fuzzy
-msgid "Work Offline"
-msgstr "ðÅÒÅÎÅÓÅÎÎÑ"
-
-#: ui/evolution.xml.h:25
-msgid "_About Evolution..."
-msgstr "ðÒÏ Evolution..."
-
-#: ui/evolution.xml.h:26
-msgid "_Actions"
-msgstr "䦧"
-
-#: ui/evolution.xml.h:33
-msgid "_Folder Bar"
-msgstr "ðÁÎÅÌØ ÔÅË"
-
-#: ui/evolution.xml.h:34
-msgid "_Go to Folder..."
-msgstr "ðÅÒÅÊÔÉ ÎÁ ÔÅËÕ..."
-
-#: ui/evolution.xml.h:36
-msgid "_Import file..."
-msgstr "¶ÍÐÏÒÔÕ×ÁÔÉ ÆÁÊÌ..."
-
-#: ui/evolution.xml.h:37
-msgid "_Index"
-msgstr "ðÏËÁÖÞÉË"
-
-#: ui/evolution.xml.h:38
-msgid "_Mail message"
-msgstr "ðÏÛÔÏ×Õ ÐÏצÄÏÍÌÅÎÎÑ"
-
-#: ui/evolution.xml.h:40
-msgid "_New Folder"
-msgstr "îÏ×Á ÔÅËÁ"
-
-#: ui/evolution.xml.h:41
-msgid "_Shortcut Bar"
-msgstr "ðÁÎÅÌØ ÑÒÌÉ˦×"
-
-#: views/addressbook/galview.xml.h:1
-msgid "Adress Cards"
-msgstr "áÄÒÅÓΦ ËÁÒÔËÉ"
-
-#: views/addressbook/galview.xml.h:2
-msgid "By Company"
-msgstr "úÁ ËÏÍÐÁΦ¤À"
-
-#: views/addressbook/galview.xml.h:3
-msgid "Phone List"
-msgstr "óÐÉÓÏË ÔÅÌÅÆÏΦ×"
-
-#: views/mail/galview.xml.h:1
-msgid "By Sender"
-msgstr "úÁ צÄÐÒÁ×ÎÉËÏÍ"
-
-#: views/mail/galview.xml.h:2
-msgid "By Status"
-msgstr "úÁ ÓÔÁÎÏÍ"
-
-#: views/mail/galview.xml.h:3
-msgid "By Subject"
-msgstr "úÁ ÔÅÍÏÀ"
-
-#: views/mail/galview.xml.h:4
-msgid "Messages"
-msgstr "ðÏצÄÏÍÌÅÎÎÑ"
-
-#: views/tasks/galview.xml.h:2
-#, fuzzy
-msgid "With Category"
-msgstr ""
-"\n"
-"ëÁÔÅÇÏÒ¦§: "
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:392
-msgid "Tentative"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:393
-msgid "Busy"
-msgstr "úÁÊÎÑÔÉÊ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:394
-msgid "Out of Office"
-msgstr "úÁ ÍÅÖÁÍÉ ÏƦÓÕ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:395
-msgid "No Information"
-msgstr "îÅÍÁ¤ ¦ÎÆÏÒÍÁæ§"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:411
-msgid "_Invite Others..."
-msgstr "úÁÐÒÏÓÉÔÉ ¦ÎÛÉÈ..."
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:431
-msgid "_Options"
-msgstr "ðÁÒÁÍÅÔÒÉ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:448
-msgid "Show _Only Working Hours"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:461
-msgid "Show _Zoomed Out"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:479
-msgid "_Update Free/Busy"
-msgstr ""
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:497
-msgid "_<<"
-msgstr "_<<"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:514
-msgid "_Autopick"
-msgstr "á×ÔÏ×ɦÒ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:528
-msgid ">_>"
-msgstr "_>>"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:545
-msgid "_All People and Resources"
-msgstr "÷Ó¦ ÌÀÄÉ ¦ ÒÅÓÕÒÓÉ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:558
-msgid "All _People and One Resource"
-msgstr "÷Ó¦ ÌÀÄÉ ¦ ÏÄÉÎ ÒÅÓÕÒÓ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:571
-msgid "_Required People"
-msgstr "ðÏÔÒ¦ÂΦ ÌÀÄÉ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:584
-msgid "Required People and _One Resource"
-msgstr "ðÏÔÒ¦ÂΦ ÌÀÄÉ ¦ ÏÄÉÎ ÒÅÓÕÒÓ"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:607
-msgid "Meeting _start time:"
-msgstr "þÁÓ ÐÏÞÁÔËÕ Ú¦ÂÒÁÎÎÑ:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:631
-msgid "Meeting _end time:"
-msgstr "þÁÓ ÚÁ×ÅÒÛÅÎÎÑ Ú¦ÂÒÁÎÎÑ:"
-
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:744
-msgid "All Attendees"
-msgstr "÷ÅÓØ ÓÕÐÒÏצÄ"
-
-#. This is a strftime() format string %A = full weekday name,
-#. %B = full month name, %d = month day, %Y = full year.
-#: widgets/meeting-time-sel/e-meeting-time-sel-item.c:469
-#: widgets/meeting-time-sel/e-meeting-time-sel.c:2477
-msgid "%A, %B %d, %Y"
-msgstr "%A, %d %B %Y"
-
-#: widgets/menus/gal-view-menus.c:177
-#, fuzzy
-msgid "_Current View"
-msgstr "ðÏÔÏÞÎÉÊ Ò¦Ë (%Y)"
-
-#: widgets/menus/gal-view-menus.c:196
-msgid "Define Views"
-msgstr ""
-
-#. Translators: These are the first characters of each day of the
-#. week, 'M' for 'Monday', 'T' for Tuesday etc.
-#: widgets/misc/e-calendar-item.c:422
-msgid "MTWTFSS"
-msgstr "ð÷óþðóî"
-
-#. This is a strftime() format. %B = Month name, %Y = Year.
-#: widgets/misc/e-calendar-item.c:1061 widgets/misc/e-calendar-item.c:2756
-msgid "%B %Y"
-msgstr "%B %Y"
-
-#: widgets/misc/e-cell-date-edit.c:221 widgets/misc/e-dateedit.c:418
-msgid "Now"
-msgstr "ÚÁÒÁÚ"
-
-#: widgets/misc/e-cell-date-edit.c:245
-msgid "OK"
-msgstr "çÁÒÁÚÄ"
-
-#: widgets/misc/e-cell-date-edit.c:726
-#, fuzzy, c-format
-msgid "The time must be in the format: %s"
-msgstr ""
-"äÁÔÕ ÐÏÔÒ¦ÂÎÏ ××ÏÄÉÔÉ Õ ÔÁËÏÍÕ ÆÏÒÍÁÔ¦: \n"
-"\n"
-"%s"
-
-#: widgets/misc/e-clipped-label.c:112
-msgid "..."
-msgstr "..."
-
-#: widgets/misc/e-filter-bar.c:166
-#, fuzzy
-msgid "Save Search"
-msgstr "ðÏÛÕË"
-
-#: widgets/misc/e-filter-bar.c:237
-msgid "Advanced Search"
-msgstr "õÄÏÓËÏÎÁÌÅÎÉÊ ÐÏÛÕË"
-
-#: widgets/misc/e-filter-bar.c:317
-#, fuzzy
-msgid "Advanced ..."
-msgstr "äÏÄÁÔËÏ×Ï..."
-
-#: widgets/misc/e-messagebox.c:152
-msgid "Information"
-msgstr "¶ÎÆÏÒÍÁæÑ"
-
-#: widgets/misc/e-messagebox.c:159
-msgid "Warning"
-msgstr "ðÏÐÅÒÅÄÖÅÎÎÑ"
-
-#: widgets/misc/e-messagebox.c:173
-msgid "Question"
-msgstr "ðÉÔÁÎÎÑ"
-
-#: widgets/misc/e-messagebox.c:180
-msgid "Message"
-msgstr "ðÏצÄÏÍÌÅÎÎÑ"
-
-#. Add the "Don't show this message again." checkbox
-#: widgets/misc/e-messagebox.c:224
-msgid "Don't show this message again."
-msgstr "â¦ÌØÛÅ ÎÅ ÐÏËÁÚÕ×ÁÔÉ ÃÅ ÐÏצÄÏÍÌÅÎÎÑ."
-
-#: widgets/misc/e-search-bar.c:148
-msgid "Sear_ch"
-msgstr "ðÏÛÕË"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:1
-msgid "The Personal Addressbook Server"
-msgstr "ðÅÒÓÏÎÁÌØÎÉÊ ÓÅÒ×ÅÒ ÁÄÒÅÓÎϧ ËÎÉÇÉ"
-
-#: wombat/GNOME_Evolution_Wombat.oaf.in.h:2
-msgid "The Personal Calendar Server; calendar factory"
-msgstr "ðÅÒÓÏÎÁÌØÎÉÊ ËÁÌÅÎÄÁÒÎÉÊ ÓÅÒ×ÅÒ; ËÁÌÅÎÄÁÒÎÁ ÆÁÂÒÉËÁ"
-
-#: wombat/wombat.c:173
-msgid "setup_vfs(): could not initialize GNOME-VFS"
-msgstr "setup_vfs(): ÎÅ ×ÄÁÌÏÓØ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ GNOME-VFS"
-
-#: wombat/wombat.c:185
-msgid "init_corba(): could not initialize GNOME"
-msgstr "init_corba(): ÎÅ ×ÄÁÌÏÓØ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ GNOME"
-
-#: wombat/wombat.c:198
-msgid "init_bonobo(): could not initialize Bonobo"
-msgstr "init_bonobo(): ÎÅ ×ÄÁÌÏÓØ ¦Î¦Ã¦Á̦ÚÕ×ÁÔÉ Bonobo"
diff --git a/po/update.sh b/po/update.sh
deleted file mode 100755
index f16601f81b..0000000000
--- a/po/update.sh
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/bash
-#
-# Script for translators not being able to run autogen.sh
-#
-# Copyright (C) 2000 Free Software Foundation.
-#
-# This library 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 script is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this library; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-#
-# Authors: Kenneth Christiansen <kenneth@gnu.org>
-
-PACKAGE=evolution
-
-DEPENDS=$(which xml-i18n-toolize 2> /dev/null)
-
-if [ "$DEPENDS" = "" -o ! -x "$DEPENDS" ] ;
- then echo "The xml-i18n-tools system is not installed or in path!"
- echo
- echo "The module $PACKAGE requires this inplimentation, which"
- echo "can be found at:"
- echo
- echo " ftp://ftp.gnome.org/pub/GNOME/stable/xml-i18n-tools "
- echo
- echo "Please install before trying to update the translations"
- echo "again..."
- echo
- exit
-fi
-
-XMLDIR=$(which xml-i18n-toolize | sed s@/bin/xml-i18n-toolize@@)
-XML_I18N_EXTRACT="$XMLDIR/share/xml-i18n-tools/xml-i18n-extract"
-XML_I18N_UPDATE="$XMLDIR/share/xml-i18n-tools/xml-i18n-update"
-PACKAGE=$PACKAGE XML_I18N_EXTRACT=$XML_I18N_EXTRACT \
-$XML_I18N_UPDATE $1
diff --git a/stamp.h.in b/stamp.h.in
deleted file mode 100644
index 8b13789179..0000000000
--- a/stamp.h.in
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/tests/.cvsignore b/tests/.cvsignore
deleted file mode 100644
index 1ad18182a2..0000000000
--- a/tests/.cvsignore
+++ /dev/null
@@ -1,24 +0,0 @@
-test1
-test2
-test3
-test4
-test5
-test6
-test7
-test8
-test9
-test10
-test11
-test12
-test13
-Makefile.in
-Makefile
-.deps
-.libs
-.pure
-mail1.test
-mail2.test
-test-formatter
-test-movemail
-test-url
-
diff --git a/tests/Makefile.am b/tests/Makefile.am
deleted file mode 100644
index a73eb21c55..0000000000
--- a/tests/Makefile.am
+++ /dev/null
@@ -1,73 +0,0 @@
-# process this file with automake to create Makefile.in
-
-INCLUDES = -I$(top_srcdir)/intl -I$(top_srcdir) -I$(top_srcdir)/camel \
- -I$(includedir) -I$(top_srcdir)/camel/providers/pop3 \
- -I$(top_srcdir)/camel/providers/mbox -I$(top_srcdir)/camel/providers/nntp \
- -DG_LOG_DOMAIN=\"evolution-tests\"
-
-LDADD = \
- $(top_builddir)/camel/libcamel.la \
- $(top_builddir)/e-util/libeutil.la \
- $(top_builddir)/libibex/libibex.la \
- $(GNOME_LIBDIR) \
- $(GNOMEUI_LIBS) $(INTLLIBS) $(EXTRA_GNOME_LIBS)
-# $(BONOBO_LIBS)
-
-
-
-
-#test4_LDADD = \
-# $(top_builddir)/camel/libcamel.la \
-# $(top_builddir)/camel/providers/MH/libcamelmh.la \
-# $(GNOME_LIBDIR) \
-# $(GNOMEUI_LIBS) $(INTLLIBS) $(PTHREAD_LIB)
-
-#test11_LDADD = \
-# $(LDADD) \
-# $(top_builddir)/filter/libfilter.la \
-# $(top_builddir)/libibex/libibex.a
-
-#test9_LDADD = \
-# $(top_builddir)/camel/libcamel.la \
-# $(top_builddir)/camel/providers/mbox/libcamelmbox.la \
-# $(top_builddir)/libibex/libibex.la \
-# $(GNOME_LIBDIR) \
-# $(GNOMEUI_LIBS) $(INTLLIBS) $(EXTRA_GNOME_LIBS)
-
-test14_LDADD = \
- $(top_builddir)/camel/providers/vee/libcamelvee.la \
- $(top_builddir)/camel/libcamel.la \
- $(top_builddir)/libibex/libibex.la \
- $(GNOME_LIBDIR) \
- $(GNOMEUI_LIBS) $(INTLLIBS) $(EXTRA_GNOME_LIBS)
-
-#test12_LDADD = \
-# $(top_builddir)/camel/libcamel.la \
-# $(top_builddir)/camel/providers/nntp/libcamelnntp.la \
-# $(top_builddir)/libibex/libibex.la \
-# $(GNOME_LIBDIR) \
-# $(GNOMEUI_LIBS) $(INTLLIBS) $(EXTRA_GNOME_LIBS)
-
-test_movemail_LDADD = \
- $(top_builddir)/camel/libcamel.la \
- $(top_builddir)/e-util/libeutil.la \
- $(top_builddir)/libibex/libibex.la \
- $(GNOME_LIBDIR) \
- $(GNOMEUI_LIBS) $(INTLLIBS) $(EXTRA_GNOME_LIBS)
-
-THREAD_RELATED_TESTS=test8
-
-noinst_PROGRAMS = \
- test1 \
- test2 \
- test10 \
- test11 \
- test13 \
- test14 \
- test-movemail \
- test-url \
- $(THREAD_RELATED_TESTS)
-
-# test3 \
-# test12 \
-# test-formatter
diff --git a/tests/test-movemail.c b/tests/test-movemail.c
deleted file mode 100644
index bcd5334b5a..0000000000
--- a/tests/test-movemail.c
+++ /dev/null
@@ -1,164 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-#include <camel.h>
-#include <e-util/e-setup.h>
-
-static char *
-auth_callback (char *prompt, gboolean secret, CamelService *service,
- char *item, CamelException *ex)
-{
- char buf[80];
-
- printf ("%s\n", prompt);
- if (secret)
- printf ("(Warning: your input will be displayed)\n");
- if (fgets (buf, sizeof (buf), stdin) == NULL) {
- camel_exception_set (ex, CAMEL_EXCEPTION_USER_CANCEL,
- "User cancelled input.");
- return NULL;
- }
- return g_strdup (buf);
-}
-
-extern char *evolution_folders_dir;
-
-int main (int argc, char **argv)
-{
- CamelSession *session;
- CamelException *ex;
- CamelStore *store, *outstore;
- CamelFolder *folder, *outfolder;
- int nmsgs, i;
- CamelMimeMessage *msg;
- char *url;
- gboolean delete = FALSE;
-
- gtk_init (&argc, &argv);
- camel_init ();
-
- if (argc == 3) {
- if (!strcmp (argv[1], "--delete") ||
- !strcmp (argv[1], "-d")) {
- delete = TRUE;
- argc--;
- argv++;
- }
- }
- if (argc != 2) {
- fprintf (stderr, "Usage: test-movemail [--delete] url\n");
- exit (1);
- }
- e_setup_base_dir ();
- session = camel_session_new (auth_callback);
-
- ex = camel_exception_new ();
- store = camel_session_get_store (session, argv[1], ex);
- if (!store) {
- fprintf(stderr, "Could not open store %s:\n%s\n", argv[1],
- camel_exception_get_description (ex));
- exit (1);
- }
- camel_service_connect_with_url (CAMEL_SERVICE (store), argv[1], ex);
- if (camel_exception_get_id (ex) != CAMEL_EXCEPTION_NONE) {
- printf ("Couldn't connect to %s:\n%s\n", argv[1],
- camel_exception_get_description (ex));
- exit (1);
- }
-
- folder = camel_store_get_folder (store, "inbox", ex);
- if (!folder) {
- fprintf(stderr, "Could not get inbox:\n%s\n",
- camel_exception_get_description (ex));
- exit (1);
- }
- camel_folder_open (folder, FOLDER_OPEN_READ, ex);
- if (camel_exception_get_id (ex) != CAMEL_EXCEPTION_NONE) {
- printf ("Couldn't open folder: %s\n",
- camel_exception_get_description (ex));
- exit (1);
- }
-
- nmsgs = camel_folder_get_message_count (folder, ex);
- if (camel_exception_get_id (ex) != CAMEL_EXCEPTION_NONE) {
- printf ("Couldn't get message count: %s\n",
- camel_exception_get_description (ex));
- exit (1);
- }
- printf ("Inbox contains %d messages.\n", nmsgs);
-
-#ifdef DISPLAY_ONLY
- stdout_stream = camel_stream_fs_new_with_fd (1);
-#else
- url = g_strdup_printf ("mbox://%s", evolution_folders_dir);
- outstore = camel_session_get_store (session, url, ex);
- g_free (url);
- if (camel_exception_get_id (ex) != CAMEL_EXCEPTION_NONE) {
- printf ("Couldn't open output store: %s\n",
- camel_exception_get_description (ex));
- exit (1);
- }
- outfolder = camel_store_get_folder (outstore, "inbox", ex);
- if (camel_exception_get_id (ex) != CAMEL_EXCEPTION_NONE) {
- printf ("Couldn't make output folder: %s\n",
- camel_exception_get_description (ex));
- exit (1);
- }
- camel_folder_open (outfolder, FOLDER_OPEN_WRITE, ex);
- if (camel_exception_get_id (ex) != CAMEL_EXCEPTION_NONE) {
- printf ("Couldn't open output folder: %s\n",
- camel_exception_get_description (ex));
- exit (1);
- }
-#endif
-
- for (i = 1; i <= nmsgs; i++) {
- msg = camel_folder_get_message_by_number (folder, i, ex);
- if (camel_exception_get_id (ex) != CAMEL_EXCEPTION_NONE) {
- printf ("Couldn't get message: %s\n",
- camel_exception_get_description (ex));
- exit (1);
- }
-
-#ifdef DISPLAY_ONLY
- camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (msg),
- stdout_stream);
-#else
- camel_folder_append_message (outfolder, msg, ex);
- if (camel_exception_get_id (ex) != CAMEL_EXCEPTION_NONE) {
- printf ("Couldn't write message: %s\n",
- camel_exception_get_description (ex));
- exit (1);
- }
-
- if (delete) {
- camel_folder_delete_message_by_number (folder, i, ex);
- if (camel_exception_get_id (ex) !=
- CAMEL_EXCEPTION_NONE) {
- printf ("Couldn't delete message: %s\n",
- camel_exception_get_description (ex));
- exit (1);
- }
- }
-#endif
- }
-
-#ifndef DISPLAY_ONLY
- camel_folder_close (outfolder, FALSE, ex);
-#endif
- camel_folder_close (folder, TRUE, ex);
-
- camel_service_disconnect (CAMEL_SERVICE (store), ex);
- if (camel_exception_get_id (ex) != CAMEL_EXCEPTION_NONE) {
- printf ("Couldn't disconnect: %s\n",
- camel_exception_get_description (ex));
- exit (1);
- }
-
- return 0;
-}
-
-void
-gratuitous_dependency_generator()
-{
- xmlSetProp();
-}
diff --git a/tests/test-url.c b/tests/test-url.c
deleted file mode 100644
index 5d8d75951b..0000000000
--- a/tests/test-url.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include <camel.h>
-
-int main (int argc, char **argv)
-{
- CamelURL *url;
- CamelException *ex;
-
- if (argc != 2) {
- fprintf (stderr, "Usage: test-url URL\n");
- exit (1);
- }
-
- ex = camel_exception_new ();
- url = camel_url_new (argv[1], ex);
- if (!url) {
- fprintf (stderr, "Could not parse URL:\n%s",
- camel_exception_get_description (ex));
- exit (1);
- }
-
- printf ("URL : %s\n\n", camel_url_to_string (url, TRUE));
- printf ("Protocol: %s\n", url->protocol);
- if (url->user)
- printf ("User : %s\n", url->user);
- if (url->authmech)
- printf ("Authmech: %s\n", url->authmech);
- if (url->passwd)
- printf ("Password: %s\n", url->passwd);
- if (url->host)
- printf ("Host : %s\n", url->host);
- if (url->port)
- printf ("Port : %d\n", url->port);
- if (url->path)
- printf ("Path : %s\n", url->path);
-
- return 0;
-}
diff --git a/tests/test1.c b/tests/test1.c
deleted file mode 100644
index c21cfd371b..0000000000
--- a/tests/test1.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-#include <stdio.h>
-
-#include "camel-mime-message.h"
-#include "camel-multipart.h"
-#include "camel-stream.h"
-#include "camel-stream-fs.h"
-#include "camel-data-wrapper.h"
-#include "camel.h"
-
-int
-main (int argc, char**argv)
-{
- CamelMimeMessage *message;
- CamelMultipart *multipart;
- CamelMimePart *body_part;
- CamelMimePart *attachment_part;
- CamelStream *attachment_stream;
- CamelStream *stream;
- CamelException *ex = camel_exception_new ();
-
- gtk_init (&argc, &argv);
- camel_init ();
-
- if (argc < 2) {
- attachment_stream = NULL;
- } else {
- if (argc == 2) {
- attachment_stream = camel_stream_fs_new_with_name (argv[1], O_RDONLY, 0, ex);
- if (attachment_stream == NULL) {
- fprintf (stderr, "Cannot open `%s': %s\n",
- argv[1],
- camel_exception_get_description (ex));
- return 1;
- }
- } else {
- fprintf (stderr, "Usage: %s [<attachment>]\n",
- argv[0]);
- return 1;
- }
- }
-
- message = camel_mime_message_new ();
-
- camel_mime_part_set_description (CAMEL_MIME_PART (message), "a test");
-
- camel_medium_add_header (CAMEL_MEDIUM (message), "X-test1", "the value of a test");
- camel_medium_add_header (CAMEL_MEDIUM (message), "X-test2", "the value of another test");
- /*camel_mime_part_add_content_language (CAMEL_MIME_PART (message), g_string_new ("es-ca"));*/
-
- camel_mime_message_set_date (message, CAMEL_MESSAGE_DATE_CURRENT, 0);
- camel_mime_message_set_subject (message, g_strdup ("A test message"));
- camel_mime_message_set_reply_to (message, g_strdup ("toto@toto.com"));
- camel_mime_message_set_from (message, g_strdup ("Bertrand.Guiheneuf@aful.org"));
-
- camel_mime_message_add_recipient (message, CAMEL_RECIPIENT_TYPE_TO,
- "Franck DeChamps", "franck.dechamps@alseve.fr");
- camel_mime_message_add_recipient (message, CAMEL_RECIPIENT_TYPE_TO,
- NULL, "mc@alseve.fr");
- camel_mime_message_add_recipient (message, CAMEL_RECIPIENT_TYPE_TO,
- "Richo", "richard.lengagne@inria.fr");
- camel_mime_message_add_recipient (message, CAMEL_RECIPIENT_TYPE_CC,
- "Frank", "Francois.fleuret@inria.fr");
- camel_mime_message_add_recipient (message, CAMEL_RECIPIENT_TYPE_CC,
- NULL, "maury@justmagic.com");
- camel_mime_message_add_recipient (message, CAMEL_RECIPIENT_TYPE_BCC,
- "Bertie", "Bertrand.Guiheneuf@aful.org");
-
- multipart = camel_multipart_new ();
- body_part = camel_mime_part_new ();
- camel_mime_part_set_content (CAMEL_MIME_PART (body_part), "This is a test.\nThis is only a test.\n",
- strlen("This is a test.\nThis is only a test.\n"), "text/plain");
- camel_multipart_add_part (multipart, body_part);
-
- if (attachment_stream == NULL) {
- attachment_part = NULL;
- } else {
- CamelDataWrapper *attachment_wrapper;
-
- /*CamelDataWrapper *stream_wrapper;
-
- stream_wrapper = camel_stream_data_wrapper_new
- (attachment_stream);
-
- attachment_part = camel_mime_body_part_new ();
- camel_mime_part_set_encoding (CAMEL_MIME_PART (attachment_part),
- CAMEL_MIME_PART_ENCODING_BASE64);
- camel_medium_set_content_object (CAMEL_MEDIUM (attachment_part),
- stream_wrapper);
- camel_multipart_add_part (multipart, attachment_part);
-
- gtk_object_unref (GTK_OBJECT (stream_wrapper));*/
-
- attachment_wrapper = camel_data_wrapper_new ();
- camel_data_wrapper_construct_from_stream (attachment_wrapper,
- attachment_stream);
-
- attachment_part = camel_mime_part_new ();
- camel_mime_part_set_encoding (CAMEL_MIME_PART (attachment_part),
- CAMEL_MIME_PART_ENCODING_BASE64);
- camel_medium_set_content_object (CAMEL_MEDIUM (attachment_part),
- attachment_wrapper);
- camel_multipart_add_part (multipart, attachment_part);
- }
-
- camel_medium_set_content_object (CAMEL_MEDIUM (message), CAMEL_DATA_WRAPPER (multipart));
-
- stream = camel_stream_fs_new_with_name ("mail1.test", O_WRONLY|O_TRUNC|O_CREAT, 0600, ex);
- if (!stream) {
- printf ("Could not open output file: %s\n",
- camel_exception_get_description (ex));
- exit(2);
- }
-
- camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (message),
- stream, ex);
- camel_stream_flush (stream, ex);
- gtk_object_unref (GTK_OBJECT (stream));
- if (camel_exception_is_set (ex)) {
- printf ("Oops. Failed. %s\n",
- camel_exception_get_description (ex));
- exit (1);
- }
-
- gtk_object_unref (GTK_OBJECT (message));
- gtk_object_unref (GTK_OBJECT (multipart));
- gtk_object_unref (GTK_OBJECT (body_part));
-
- if (attachment_part != NULL)
- gtk_object_unref (GTK_OBJECT (attachment_part));
-
- printf ("Test1 finished\n");
- return 1;
-}
-
diff --git a/tests/test10.c b/tests/test10.c
deleted file mode 100644
index efe069242a..0000000000
--- a/tests/test10.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-
-#include "camel.h"
-#include "camel-mbox-folder.h"
-#include "camel-exception.h"
-#include "md5-utils.h"
-#include <sys/types.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <glib.h>
-
-
-static CamelMimeMessage *
-create_sample_mime_message ()
-{
- CamelMimeMessage *message;
- CamelMimePart *body_part;
- CamelMultipart *multipart;
-
-
- message = camel_mime_message_new ();
-
- camel_mime_part_set_description (CAMEL_MIME_PART (message), "a test");
-
- camel_medium_add_header (CAMEL_MEDIUM (message), "X-test1", "the value of a test");
- camel_medium_add_header (CAMEL_MEDIUM (message), "X-test2", "the value of another test");
-
- camel_mime_message_set_date (message, time(0), 200);
- camel_mime_message_set_subject (message, "A test message");
- camel_mime_message_set_reply_to (message, "toto@toto.com");
- camel_mime_message_set_from (message, "Bertrand.Guiheneuf@aful.org");
-
- camel_mime_message_add_recipient (message, CAMEL_RECIPIENT_TYPE_TO,
- "Franck DeChamps", "franck.dechamps@alseve.fr");
- camel_mime_message_add_recipient (message, CAMEL_RECIPIENT_TYPE_TO,
- NULL, "mc@alseve.fr");
- camel_mime_message_add_recipient (message, CAMEL_RECIPIENT_TYPE_TO,
- "Richo", "richard.lengagne@inria.fr");
- camel_mime_message_add_recipient (message, CAMEL_RECIPIENT_TYPE_CC,
- "Frank", "Francois.fleuret@inria.fr");
- camel_mime_message_add_recipient (message, CAMEL_RECIPIENT_TYPE_CC,
- NULL, "maury@justmagic.com");
- camel_mime_message_add_recipient (message, CAMEL_RECIPIENT_TYPE_BCC,
- "Bertie", "Bertrand.Guiheneuf@aful.org");
-
- multipart = camel_multipart_new ();
- body_part = camel_mime_part_new ();
- camel_mime_part_set_content (CAMEL_MIME_PART (body_part), "This is a test.\nThis is only a test.\n",
- strlen("This is a test.\nThis is only a test.\n"), "text/plain");
- camel_multipart_add_part (multipart, body_part);
- camel_medium_set_content_object (CAMEL_MEDIUM (message), CAMEL_DATA_WRAPPER (multipart));
-
- return message;
-}
-
-static char *
-auth_callback(char *prompt, gboolean secret,
- CamelService *service, char *item,
- CamelException *ex)
-{
- printf ("auth_callback called: %s\n", prompt);
- return NULL;
-}
-
-
-
-
-int
-main (int argc, char**argv)
-{
- CamelSession *session;
- CamelException *ex;
- CamelStore *store;
- gchar *store_url = "mbox:///tmp/evmail";
- CamelFolder *folder;
- CamelMimeMessage *message;
- GList *uid_list;
-
- gtk_init (&argc, &argv);
- camel_init ();
- ex = camel_exception_new ();
-
- session = camel_session_new (auth_callback);
- store = camel_session_get_store (session, store_url, ex);
- if (camel_exception_get_id (ex)) {
- printf ("Exception caught in camel_session_get_store\n"
- "Full description : %s\n", camel_exception_get_description (ex));
- return -1;
- }
-
- folder = camel_store_get_folder (store, "Inbox", ex);
- if (camel_exception_get_id (ex)) {
- printf ("Exception caught in camel_store_get_folder\n"
- "Full description : %s\n", camel_exception_get_description (ex));
- return -1;
- }
-
- camel_folder_open (folder, FOLDER_OPEN_RW, ex);
- if (camel_exception_get_id (ex)) {
- printf ("Exception caught when trying to open the folder\n"
- "Full description : %s\n", camel_exception_get_description (ex));
- return -1;
- }
-
- message = create_sample_mime_message ();
- camel_folder_append_message (folder, message, ex);
- if (camel_exception_get_id (ex)) {
- printf ("Exception caught when trying to append a message to the folder\n"
- "Full description : %s\n", camel_exception_get_description (ex));
- return -1;
- }
-
- uid_list = camel_folder_get_uid_list (folder, ex);
-
-
- camel_folder_get_message_by_uid (folder, (gchar *)uid_list->data, ex);
- camel_folder_close (folder, FALSE, ex);
- return 1;
-}
-
-
-
-
diff --git a/tests/test11.c b/tests/test11.c
deleted file mode 100644
index 1323a5f90b..0000000000
--- a/tests/test11.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- Test search api
- */
-
-
-#include <camel/camel.h>
-#include <camel/camel-exception.h>
-#include <camel/camel-folder.h>
-#include <camel/md5-utils.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <glib.h>
-
-static char *
-auth_callback(char *prompt, gboolean secret,
- CamelService *service, char *item,
- CamelException *ex)
-{
- printf ("auth_callback called: %s\n", prompt);
- return NULL;
-}
-
-int
-main (int argc, char**argv)
-{
- CamelSession *session;
- CamelException *ex;
- CamelStore *store;
- gchar *store_url = "mbox:///tmp/evmail";
- CamelFolder *folder, *outbox;
- GList *n, *matches;
-
- gtk_init (&argc, &argv);
- camel_init ();
- ex = camel_exception_new ();
-
- session = camel_session_new (auth_callback);
-
- camel_provider_load (session, "../camel/providers/mbox/.libs/libcamelmbox.so.0", ex);
- if (camel_exception_get_id (ex)) {
- printf ("Exceptions suck: %s\n", camel_exception_get_description (ex));
- return 1;
- }
-
- store = camel_session_get_store (session, store_url, ex);
- if (camel_exception_get_id (ex)) {
- printf ("Exception caught in camel_session_get_store\n"
- "Full description : %s\n", camel_exception_get_description (ex));
- return -1;
- }
-
- printf("get folder\n");
-
- folder = camel_store_get_folder (store, "Inbox", ex);
- if (camel_exception_get_id (ex)) {
- printf ("Exception caught in camel_store_get_folder\n"
- "Full description : %s\n", camel_exception_get_description (ex));
- return -1;
- }
-
- printf("open folder\n");
-
- camel_folder_open (folder, FOLDER_OPEN_READ, ex);
- if (camel_exception_get_id (ex)) {
- printf ("Exception caught when trying to open the folder\n"
- "Full description : %s\n", camel_exception_get_description (ex));
- return -1;
- }
-
- printf("create output folder ...\n");
- outbox = camel_store_get_folder (store, "Gnome", ex);
- if (!camel_folder_exists(outbox, ex)) {
- camel_folder_create(outbox, ex);
- }
-
- camel_folder_open (outbox, FOLDER_OPEN_WRITE, ex);
-
- printf("Search for messages\n");
-
- matches = camel_folder_search_by_expression (folder,
-/* "(match-all (header-contains \"subject\" \"gnome\"))",*/
- "(body-contains \"gnome\")",
- ex);
-
- printf("search found matches:\n");
- n = matches;
- while (n) {
- CamelMimeMessage *m;
-
- printf("uid: %s\n", (char *) n->data);
- m = camel_folder_get_message_by_uid(folder, n->data, ex);
-
- if (camel_exception_get_id (ex)) {
- printf ("Cannot get message\n"
- "Full description : %s\n", camel_exception_get_description (ex));
- camel_exception_init(ex);
- } else {
-
-#if 1
-
- camel_folder_append_message(outbox, m, ex);
-
- if (camel_exception_get_id (ex)) {
- printf ("Cannot save message\n"
- "Full description : %s\n", camel_exception_get_description (ex));
- }
-
- printf("Removing matching message from source folder?\n");
- camel_mime_message_set_flags(m, CAMEL_MESSAGE_DELETED, CAMEL_MESSAGE_DELETED);
-/* camel_mime_message_set_flags(m, CAMEL_MESSAGE_ANSWERED, CAMEL_MESSAGE_ANSWERED);*/
-#endif
-
- }
- if (m)
- gtk_object_unref(m);
- n = g_list_next(n);
- }
-
- camel_folder_close (outbox, TRUE, ex);
- camel_folder_close (folder, TRUE, ex);
-
- gtk_object_unref((GtkObject *)outbox);
- gtk_object_unref((GtkObject *)folder);
-
- return 0;
-}
-
-
-
-
diff --git a/tests/test12.c b/tests/test12.c
deleted file mode 100644
index 223eb980a8..0000000000
--- a/tests/test12.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-#include <stdio.h>
-
-#include "camel.h"
-#include "camel-nntp-store.h"
-#include "camel-session.h"
-#include "camel-exception.h"
-
-static char*
-authenticator (char *prompt, gboolean secret, CamelService *service, char *item,
- CamelException *ex)
-{
-}
-
-static void
-print_name(gpointer data, gpointer foo)
-{
- printf ("%s\n", (char*)data);
-}
-
-int
-main (int argc, char **argv)
-{
- CamelSession *session;
- CamelException *ex;
- CamelStore *store;
- CamelFolder *n_p_m_a;
- GList *groups;
- const gchar *news_url = "news://news.mozilla.org";
-
- gtk_init (&argc, &argv);
- camel_init ();
- ex = camel_exception_new ();
-
- g_assert (camel_provider_register_as_module ("/usr/local/lib/evolution/camel-providers/0.0.1/libcamelnntp.so"));
-
- session = camel_session_new (authenticator);
- store = camel_session_get_store (session, news_url, ex);
-
- g_assert (store);
-
- camel_nntp_store_subscribe_group (store, "netscape.public.mozilla.announce");
-
- printf ("subscribed groups on %s\n", news_url);
-
- groups = camel_nntp_store_list_subscribed_groups (store);
-
- g_list_foreach(groups, print_name, NULL);
-
- n_p_m_a = camel_store_get_folder (store, "netscape.public.mozilla.announce", ex);
-
- camel_folder_open(n_p_m_a, FOLDER_OPEN_READ, ex);
-
- camel_folder_close(n_p_m_a, FALSE, ex);
-}
diff --git a/tests/test13.c b/tests/test13.c
deleted file mode 100644
index 3e191eddf5..0000000000
--- a/tests/test13.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* tests mime message file parsing */
-#include "stdio.h"
-#include "camel-mime-message.h"
-#include "camel-mime-part.h"
-#include "camel-stream.h"
-#include "camel-stream-fs.h"
-#include "camel.h"
-
-
-static void
-dump_message_content(CamelDataWrapper *object)
-{
- CamelDataWrapper *containee;
- CamelStream *stream;
- int parts, i;
- int len;
- int left;
- char buffer[128];
-
- printf("Dumping message ...");
-
- containee = camel_medium_get_content_object(CAMEL_MEDIUM(object));
-
- if (containee) {
- char *type = gmime_content_field_get_mime_type(containee->mime_type);
-
- printf("type = %s\n", type);
-
- if (CAMEL_IS_MULTIPART(containee)) {
- parts = camel_multipart_get_number (CAMEL_MULTIPART(containee));
- printf("multipart message, scanning contents %d parts ...\n", parts);
- for (i=0;i<parts;i++) {
- dump_message_content(CAMEL_DATA_WRAPPER (camel_multipart_get_part(CAMEL_MULTIPART(containee), i)));
- }
- } else if (CAMEL_IS_MIME_MESSAGE(containee)) {
- dump_message_content((CamelDataWrapper *)containee);
- } else {
- stream = camel_data_wrapper_get_output_stream(containee);
- left = 0;
-
- if (stream) {
- while ( (len = camel_stream_read(stream, buffer+left, sizeof(buffer)-left, NULL)) > 0) {
- fwrite(buffer, len, 1, stdout);
- }
- printf("\n");
- } else {
- g_warning("cannot get stream for message?");
- }
- }
-
- g_free(type);
- } else {
- printf("no containee?\n");
- }
-}
-
-int
-main (int argc, char**argv)
-{
- CamelMimeMessage *message;
- CamelStream *input_stream, *output_stream;
- CamelMimeParser *parser;
-
- gtk_init (&argc, &argv);
- camel_init ();
-
-/* should have another program to test all this internationalisation/header parsing stuff */
-#if 0
- {
- char *s, *o;
- s = "This is a test, simple ascii text";
- o = header_encode_string(s);
- printf("%s -> %s\n", s, o);
- s = "To: Markus \"DÃ…hr\" <doehrm@aubi.de>";
- o = header_encode_string(s);
- printf("%s -> %s\n", s, o);
-
- s = "From: =?iso-8859-1?Q?Kenneth_ll=E9phaane_Christiansen?= <kenneth@ripen.dk>";
- o = header_encode_string(s);
- printf("%s -> %s\n", s, o);
-
- printf("decoding ... \n");
- s = "From: =?iso-8859-1?Q?Kenneth_ll=E9phaane_Christiansen?= <kenneth@ripen.dk>";
- o = header_decode_string(s);
- printf("%s -> %s\n", s, o);
-
- printf("reencoded\n");
- s = header_encode_string(o);
- printf("%s -> %s\n", o, s);
- return 0;
- }
-#endif
-
- message = camel_mime_message_new ();
-
-
- input_stream = camel_stream_fs_new_with_name ("mail.test", O_RDONLY, 0, NULL);
- if (!input_stream) {
- perror ("could not open input file\n");
- printf ("You must create the file mail.test before running this test\n");
- exit(2);
- }
-
- printf("creating parser to create message\n");
- parser = camel_mime_parser_new();
- camel_mime_parser_init_with_stream(parser, input_stream);
- camel_mime_part_construct_from_parser(CAMEL_MIME_PART (message),
- parser);
-
- dump_message_content(CAMEL_DATA_WRAPPER (message));
-
- gtk_object_unref (GTK_OBJECT (input_stream));
-
- output_stream = camel_stream_fs_new_with_name ("mail2.test", O_WRONLY|O_CREAT|O_TRUNC, 0600, NULL);
- camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (message), output_stream, NULL);
- camel_stream_flush (output_stream, NULL);
- gtk_object_unref (GTK_OBJECT (output_stream));
-
- //gtk_object_unref (GTK_OBJECT (message));
- return 0;
-
-}
diff --git a/tests/test14.c b/tests/test14.c
deleted file mode 100644
index 80963415db..0000000000
--- a/tests/test14.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- Test vfolder.
- */
-
-
-#include <camel/camel.h>
-#include <camel/camel-exception.h>
-#include <camel/camel-folder.h>
-#include <camel/providers/vee/camel-vee-folder.h>
-#include <camel/md5-utils.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <glib.h>
-
-static void
-dump_message_content(CamelDataWrapper *object)
-{
- CamelDataWrapper *containee;
- CamelStream *stream;
- int parts, i;
- int len;
- int left;
- char buffer[128];
-
- printf("Dumping message ...");
-
- containee = camel_medium_get_content_object(CAMEL_MEDIUM(object));
-
- if (containee) {
- char *type = gmime_content_field_get_mime_type(containee->mime_type);
-
- printf("type = %s\n", type);
-
- if (CAMEL_IS_MULTIPART(containee)) {
- parts = camel_multipart_get_number (CAMEL_MULTIPART(containee));
- printf("multipart message, scanning contents %d parts ...\n", parts);
- for (i=0;i<parts;i++) {
- dump_message_content(CAMEL_DATA_WRAPPER (camel_multipart_get_part(CAMEL_MULTIPART(containee), i)));
- }
- } else if (CAMEL_IS_MIME_MESSAGE(containee)) {
- dump_message_content((CamelDataWrapper *)containee);
- } else {
- stream = camel_data_wrapper_get_output_stream(containee);
- left = 0;
-
- if (stream) {
- while ( (len = camel_stream_read(stream, buffer+left, sizeof(buffer)-left, NULL)) > 0) {
- fwrite(buffer, len, 1, stdout);
- }
- printf("\n");
- } else {
- g_warning("cannot get stream for message?");
- }
- }
-
- g_free(type);
- } else {
- printf("no containee?\n");
- }
-}
-
-
-static char *
-auth_callback(char *prompt, gboolean secret,
- CamelService *service, char *item,
- CamelException *ex)
-{
- printf ("auth_callback called: %s\n", prompt);
- return NULL;
-}
-
-int
-main (int argc, char**argv)
-{
- CamelSession *session;
- CamelException *ex;
- CamelStore *store;
- gchar *store_url = "vfolder:";
- CamelFolder *folder;
- GList *n, *matches;
-
- gtk_init (&argc, &argv);
- camel_init ();
- ex = camel_exception_new ();
-
- session = camel_session_new (auth_callback);
-
- camel_provider_load (session, "../camel/providers/vee/.libs/libcamelvee.so.0", ex);
- if (camel_exception_get_id (ex)) {
- printf ("Exceptions suck: %s\n", camel_exception_get_description (ex));
- return 1;
- }
-
- store = camel_session_get_store (session, store_url, ex);
- if (camel_exception_get_id (ex)) {
- printf ("Exception caught in camel_session_get_store\n"
- "Full description : %s\n", camel_exception_get_description (ex));
- return -1;
- }
-
- printf("get folder\n");
-
- folder = camel_store_get_folder (store, "gnome_email?(match-all (header-contains \"subject\" \"gnome\"))", ex);
- if (camel_exception_get_id (ex)) {
- printf ("Exception caught in camel_store_get_folder\n"
- "Full description : %s\n", camel_exception_get_description (ex));
- return -1;
- }
-
- /* setup searched folders */
- {
- CamelFolder *subfolder;
- CamelStore *substore;
-
- substore = camel_session_get_store (session, "mbox:///home/notzed/evolution/local/Inbox", ex);
- subfolder = camel_store_get_folder(substore, "mbox", ex);
- camel_folder_open (subfolder, FOLDER_OPEN_READ, ex);
- camel_vee_folder_add_folder(folder, subfolder);
-
- if (camel_exception_get_id (ex)) {
- printf ("Exception caught in camel_store_get_folder\n"
- "Full description : %s\n", camel_exception_get_description (ex));
- return -1;
- }
-
- substore = camel_session_get_store (session, "mbox:///home/notzed/evolution/local/Outbox", ex);
- subfolder = camel_store_get_folder(substore, "mbox", ex);
- camel_folder_open (subfolder, FOLDER_OPEN_READ, ex);
- camel_vee_folder_add_folder(folder, subfolder);
-
- if (camel_exception_get_id (ex)) {
- printf ("Exception caught in camel_store_get_folder\n"
- "Full description : %s\n", camel_exception_get_description (ex));
- return -1;
- }
- }
-
- printf("open folder\n");
-
- camel_folder_open (folder, FOLDER_OPEN_READ, ex);
- if (camel_exception_get_id (ex)) {
- printf ("Exception caught when trying to open the folder\n"
- "Full description : %s\n", camel_exception_get_description (ex));
- return -1;
- }
-
- printf("vfolder's uid's:\n");
- n = camel_folder_get_uid_list(folder, ex);
- while (n) {
- CamelMimeMessage *m;
-
- printf("uid: %s\n", (char *) n->data);
-
- m = camel_folder_get_message_by_uid(folder, n->data, ex);
- if (m) {
- dump_message_content(m);
- gtk_object_unref(m);
- }
- n = g_list_next(n);
- }
-
- camel_folder_close (folder, TRUE, ex);
-
- gtk_object_unref((GtkObject *)folder);
-
- return 0;
-}
-
-
-
-
diff --git a/tests/test2.c b/tests/test2.c
deleted file mode 100644
index a6299357cb..0000000000
--- a/tests/test2.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* tests mime message file parsing */
-#include "stdio.h"
-#include "camel-mime-message.h"
-#include "camel-mime-part.h"
-#include "camel-stream.h"
-#include "camel-stream-fs.h"
-#include "camel.h"
-
-int
-main (int argc, char**argv)
-{
- CamelMimeMessage *message;
- CamelStream *input_stream;
- CamelException *ex = camel_exception_new ();
-
- gtk_init (&argc, &argv);
- camel_init ();
-
- message = camel_mime_message_new ();
-
-
- input_stream = camel_stream_fs_new_with_name ("mail.test", O_RDONLY, 0, ex);
- if (!input_stream) {
- perror ("could not open input file\n");
- printf ("You must create the file mail.test before running this test\n");
- exit(2);
- }
-
-
- camel_data_wrapper_construct_from_stream ( CAMEL_DATA_WRAPPER (message), input_stream);
-
- camel_medium_get_content_object (CAMEL_MEDIUM (message));
-
-#if 0
- camel_stream_close (input_stream);
- gtk_object_unref (GTK_OBJECT (input_stream));
-
- output_stream = camel_stream_fs_new_with_name ("mail2.test", O_WRONLY|O_TRUNC|O_CREAT, 0600);
- camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (message), output_stream);
- camel_stream_close (output_stream);
- gtk_object_unref (GTK_OBJECT (output_stream));
-
- //gtk_object_unref (GTK_OBJECT (message));
-#endif
- return 0;
-
-}
diff --git a/tests/test3.c b/tests/test3.c
deleted file mode 100644
index 9893e2e507..0000000000
--- a/tests/test3.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#include "camel.h"
-
-int
-main (int argc, char**argv)
-{
- GtkType type;
-
- gtk_init (&argc, &argv);
- camel_init ();
-
- printf ("Test 3 : data wrapper repository\n");
-
- printf ("\nMime type : \"multipart\"\n");
- type = data_wrapper_repository_get_data_wrapper_type ("multipart");
- printf ("Type found %s\n", gtk_type_name (type) );
-
- printf ("\nMime type : \"multipart/alternative\"\n");
- type = data_wrapper_repository_get_data_wrapper_type ("multipart/alternative");
- printf ("Type found %s\n", gtk_type_name (type) );
-
- printf ("\nMime type : \"toto/titi\"\n");
- type = data_wrapper_repository_get_data_wrapper_type ("toto/titi");
- printf ("Type found %s\n", gtk_type_name (type) );
-
- printf ("Test3 finished\n");
- return 1;
-}
-
diff --git a/tests/test4.c b/tests/test4.c
deleted file mode 100644
index bc9eef71d1..0000000000
--- a/tests/test4.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/* testing mh providers
- do not use CamelMhFolder and CamelMhStore directly.
- We do it here for test purpose only */
-
-
-
-#include "camel-folder.h"
-#include "camel-mh-folder.h"
-#include "camel-mh-store.h"
-#include "camel.h"
-
-int
-main (int argc, char**argv)
-{
- CamelStore *store;
- CamelFolder *inbox_folder;
- CamelFolder *root_mh_folder;
- GList *mh_subfolders_name;
- CamelMimeMessage *message_1;
- gboolean inbox_exists;
-
- gtk_init (&argc, &argv);
- camel_init ();
-
-
- store = gtk_type_new (CAMEL_MH_STORE_TYPE);
- camel_store_init (store, (CamelSession *)NULL, g_strdup ("mh:///root/Mail"));
-
- root_mh_folder = camel_store_get_folder (store, "");
- mh_subfolders_name = camel_folder_list_subfolders (root_mh_folder, NULL);
-
- printf ("\n------------- Listing root Mh folder subfolders --------\n");
- while (mh_subfolders_name) {
- printf ("\t\"%s\"\n", (gchar *)mh_subfolders_name->data);
- mh_subfolders_name = mh_subfolders_name->next;
- }
- printf ("--------------------------------------------------------\n\n");
-
- inbox_folder = camel_store_get_folder (store, "inbox");
- if (!inbox_folder) {
- printf ("** Error: could not get inbox folder from store\n");
- return 1;
- }
-
- /* test existence */
- inbox_exists = camel_folder_exists (inbox_folder, NULL);
- if (inbox_exists)
- printf ("MH folder inbox exists, continuing tests\n");
- else {
- printf ("MH folder inbox does not exist. Stopping \n");
- return 1;
- }
-
- printf ("\n Inbox folder contains %d messages\n", camel_folder_get_message_count (inbox_folder, NULL));
- printf ("\n------------- Gettting message numer 3 in inbox --------\n");
- message_1 = camel_folder_get_message (inbox_folder, 3, NULL);
- printf ("--------------------------------------------------------\n\n");
-
-
- return 1;
-
-
-}
diff --git a/tests/test5.c b/tests/test5.c
deleted file mode 100644
index 81c5e2256a..0000000000
--- a/tests/test5.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/* test for the RFC 2047 decoder */
-
-#include <string.h>
-#include <unicode.h>
-
-#include "gmime-utils.h"
-#include "stdio.h"
-#include "camel-mime-message.h"
-#include "camel-mime-part.h"
-#include "camel-stream.h"
-#include "camel-stream-fs.h"
-#include "camel.h"
-#include "gmime-rfc2047.h"
-
-#define TERMINAL_CHARSET "UTF-8"
-
-/*
- * Info on many unicode issues, including, utf-8 xterms from :
- *
- * http://www.cl.cam.ac.uk/~mgk/unicode.html
- *
- */
-
-const char *tests[] =
-{
-/* these strings come from RFC 2047. Ought to add a few torture cases here. */
- "=?US-ASCII?Q?Keith_Moore?= <moore@cs.utk.edu>",
- "=?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <keld@dkuug.dk>",
- "=?ISO-8859-1?Q?Andr=E9?= Pirard <PIRARD@vm1.ulg.ac.be>",
- "=?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?= =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=",
- "=?ISO-8859-1?Q?Olle_J=E4rnefors?= <ojarnef@admin.kth.se>",
- "=?ISO-8859-1?Q?Patrik_F=E4ltstr=F6m?= <paf@nada.kth.se>",
- "Nathaniel Borenstein <nsb@thumper.bellcore.com> (=?iso-8859-8?b?7eXs+SDv4SDp7Oj08A==?=)",
- "",
- "(=?ISO-8859-1?Q?a?=)", /* should be displayed as (a) */
- "(=?ISO-8859-1?Q?a?= b)", /* (a b) */
- "(=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)", /* (ab) */
- "(=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)", /* (ab) */
- "(=?ISO-8859-1?Q?a?= \n=?ISO-8859-1?Q?b?=)", /* (ab) */
- "(=?ISO-8859-1?Q?a_b?=)", /* (a b) */
- "(=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)", /* (ab) */
- NULL
-};
-
-
-int
-main (int argc, char**argv)
-{
- const char **b = tests;
- while (*b) {
- printf("%s\n", gmime_rfc2047_decode(*b, TERMINAL_CHARSET));
- b++;
- }
-
- return 0;
-
-}
diff --git a/tests/test6.c b/tests/test6.c
deleted file mode 100644
index c2883d89c0..0000000000
--- a/tests/test6.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/* test for the RFC 2047 encoder */
-
-#include <string.h>
-#include <unicode.h>
-
-#include "gmime-utils.h"
-#include "stdio.h"
-#include "camel-mime-message.h"
-#include "camel-mime-part.h"
-#include "camel-stream.h"
-#include "camel-stream-fs.h"
-#include "camel.h"
-#include "gmime-rfc2047.h"
-
-#define TERMINAL_CHARSET "UTF-8"
-
-/*
- * Info on many unicode issues, including, utf-8 xterms from :
- *
- * http://www.cl.cam.ac.uk/~mgk25/unicode.html
- *
- */
-
-const char *tests[] =
-{
- "Ðis is a test", "ISO-8859-1",
- "Iñtérñàtiönælîçation", "ISO-8859-1",
- "ΚαλημέÏα κόσμε", "UTF-8",
- "コンニãƒãƒ", "UTF-8",
- "ði ıntəˈnæʃənəl fəˈnɛtık əsoʊsiˈeıʃn", "UTF-8",
- NULL
-};
-
-
-int
-main (int argc, char**argv)
-{
- const char **b = tests;
- while (*b) {
- char *e = gmime_rfc2047_encode(b[0], b[1]);
- printf("%s\t%s\n", e, gmime_rfc2047_decode(e, TERMINAL_CHARSET));
- b+=2;
- }
-
- return 0;
-
-}
diff --git a/tests/test8.c b/tests/test8.c
deleted file mode 100644
index aa7debdba9..0000000000
--- a/tests/test8.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* test posix thread folder proxy */
-
-
-#include "camel.h"
-
-CamelThreadProxy *proxy;
-CamelFuncDef *func_def;
-
-
-void
-test_sync_func (int num)
-{
- printf ("Sync function number %d\n", num);
- printf ("Sync function : current thread : %d\n", pthread_self ());
-
-}
-
-
-void
-test_async_cb (int num)
-{
- printf ("Callback number %d\n", num);
- printf ("Callback : current thread : %d\n", pthread_self ());
-}
-
-void
-test_async_func (int num)
-{
- CamelOp *cb;
-
- printf ("Async function number %d\n", num);
- printf ("Async function : current thread : %d\n", pthread_self ());
- sleep (1);
- cb = camel_marshal_create_op (func_def, test_async_cb, num);
- camel_thread_proxy_push_cb (proxy, cb);
-
-
-}
-
-int
-main (int argc, char **argv)
-{
- int i;
- CamelOp *op;
-
- camel_init ();
-
- func_def =
- camel_func_def_new (camel_marshal_NONE__INT,
- 1,
- GTK_TYPE_INT);
-
- printf ("--== Testing Simple marshalling system ==--\n");
- for (i=0; i<5; i++) {
- printf ("Iterration number %d\n", i);
- op = camel_marshal_create_op (func_def, test_sync_func, i);
- camel_op_run (op);
- camel_op_free (op);
-
- }
- printf ("\n\n");
-
- proxy = camel_thread_proxy_new ();
-
- printf ("--== Testing Asynchronous Operation System ==--\n");
- for (i=0; i<5; i++) {
- printf ("Pushing async operation number %d for execution\n", i);
- op = camel_marshal_create_op (func_def, test_async_func, i);
- camel_thread_proxy_push_op (proxy, op);
- }
- printf ("\n\n");
- printf ("--== Operations execution planned ==--\n");
- gtk_main ();
-}
-
diff --git a/tests/test9.c b/tests/test9.c
deleted file mode 100644
index 7fbbee8b8a..0000000000
--- a/tests/test9.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-#include "camel.h"
-#include "camel-mbox-folder.h"
-#include "camel-mbox-parser.h"
-#include "camel-mbox-utils.h"
-#include "camel-mbox-summary.h"
-#include "camel-exception.h"
-#include <sys/types.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <glib.h>
-
-int
-main (int argc, char**argv)
-{
- GArray *message_info_array;
- gint test_file_fd;
- CamelException *ex;
- CamelMboxSummary *sum1, *sum2;
- GArray *mbox_summary_info;
- CamelMboxSummaryInformation *msg_info;
- int i;
- guint32 next_uid;
- guint32 mbox_file_size;
-
- gtk_init (&argc, &argv);
- camel_init ();
-
- ex = camel_exception_new ();
- test_file_fd = open (argv[1], O_RDONLY);
- message_info_array = camel_mbox_parse_file (test_file_fd,
- "From ",
- 0,
- &mbox_file_size,
- &next_uid,
- TRUE,
- NULL,
- 0,
- ex);
-
- close (test_file_fd);
-#warning This test is no longer valid.
-#if 0
- /* needs a folder to work with (indexing) */
- camel_mbox_write_xev (argv[1], message_info_array, &mbox_file_size, 1, ex);
-#endif
- if (camel_exception_get_id (ex)) {
- printf ("Exception caught in camel_mbox_write_xev : %s\n", camel_exception_get_description (ex));
- }
-
-
- mbox_summary_info =
- parsed_information_to_mbox_summary (message_info_array);
- sum1 = CAMEL_MBOX_SUMMARY (gtk_object_new (camel_mbox_summary_get_type (), NULL));
-
- sum1->nb_message = mbox_summary_info->len;
-
- sum1->message_info = mbox_summary_info;
-
- camel_mbox_summary_save (sum1, "ev-summary.mbox", ex);
-
- sum2 = camel_mbox_summary_load ("ev-summary.mbox", ex);
-
- for (i=0; i<sum1->nb_message; i++) {
-
- msg_info = (CamelMboxSummaryInformation *)(sum1->message_info->data) + i;
- printf ("Message %d :\n"
- " From : %s\n", i, msg_info->headers.sender);
- }
-
- return 1;
-
-}
-
-
-
diff --git a/tests/ui-tests/.cvsignore b/tests/ui-tests/.cvsignore
deleted file mode 100644
index 84c2937bdc..0000000000
--- a/tests/ui-tests/.cvsignore
+++ /dev/null
@@ -1,8 +0,0 @@
-Makefile.in
-Makefile
-.deps
-.libs
-store_listing
-msg-composer-test
-message-browser
-filter \ No newline at end of file
diff --git a/tests/ui-tests/Makefile.am b/tests/ui-tests/Makefile.am
deleted file mode 100644
index e61a054093..0000000000
--- a/tests/ui-tests/Makefile.am
+++ /dev/null
@@ -1,39 +0,0 @@
-# process this file with automake to create Makefile.in
-
-INCLUDES = \
- -I$(top_srcdir)/intl \
- -I$(top_srcdir)/camel \
- -I$(includedir) \
- -I$(top_srcdir)/camel/providers/MH \
- -I$(top_srcdir)/widgets \
- -I$(top_srcdir)/filter \
- $(EXTRA_GNOME_CFLAGS) $(BONOBO_GNOME_CFLAGS) \
- -DG_LOG_DOMAIN=\"evolution-ui-tests\"
-
-LDADD = \
- $(top_builddir)/widgets/libevolutionwidgets.la \
- $(top_builddir)/camel/libcamel.la \
- $(INTLLIBS) \
- $(EXTRA_GNOME_LIBS) \
- $(PTHREAD_LIB)
-
-message_browser_LDADD = \
- $(top_builddir)/camel/libcamel.la \
- $(INTLLIBS) \
- $(EXTRA_GNOME_LIBS) \
- $(PTHREAD_LIB) \
- $(EXTRA_GNOME_LIBS) \
- -lgtkhtml -lgnomeprint ../../mail/html-stream.o $(BONOBO_GNOME_LIBS)
-
-filter_LDADD = \
- $(top_builddir)/camel/libcamel.la \
- $(INTLLIBS) \
- $(EXTRA_GNOME_LIBS) \
- $(PTHREAD_LIB) \
- $(EXTRA_GNOME_LIBS) \
- $(top_builddir)/filter/libfilter.la \
- -lgtkhtml -lgnomeprint
-
-noinst_PROGRAMS = \
- message-browser \
- filter
diff --git a/tests/ui-tests/filter.c b/tests/ui-tests/filter.c
deleted file mode 100644
index 3ff6a1b1ae..0000000000
--- a/tests/ui-tests/filter.c
+++ /dev/null
@@ -1,30 +0,0 @@
-
-#include <gnome.h>
-#include "filter-editor.h"
-
-int main(int argc, char **argv)
-{
- GList *rules, *options, *options2;
- xmlDocPtr doc, out, optionset, filteroptions;
- GString *s;
- GtkWidget *w;
-
- gnome_init("Test", "0.0", argc, argv);
- gdk_rgb_init ();
- gtk_widget_set_default_colormap (gdk_rgb_get_cmap ());
- gtk_widget_set_default_visual (gdk_rgb_get_visual ());
-
- w = filter_editor_new();
-
- doc = xmlParseFile("filterdescription.xml");
- rules = filter_load_ruleset(doc);
- options = filter_load_optionset(doc, rules);
- options2 = options;
- out = xmlParseFile("saveoptions.xml");
- options = filter_load_optionset(out, rules);
-
- filter_editor_set_rules(w, rules, options2, options);
-
- gtk_widget_show(w);
- gtk_main();
-}
diff --git a/tests/ui-tests/filterdescription.xml b/tests/ui-tests/filterdescription.xml
deleted file mode 100644
index 07c392aa70..0000000000
--- a/tests/ui-tests/filterdescription.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0"?>
-<filterdescription>
-<ruleset type="match">
-<rule name="from-address">
- <code>
- (match-all (header-contains "From" ${sender}))
- </code>
- <description lang="en">The From address matches <source type="address" name="sender">sender(s)</source>.</description>
-</rule>
-
-<rule name="to-address">
- <code>
- (match-all (header-contains "To" ${receipient}))
- </code>
- <description lang="en">The To address matches <source type="address" name="receipient">receipients</source>.</description>
-</rule>
-
-<rule name="cc-address">
- <code>
- (match-all (header-contains "CC" ${self-email}))
- </code>
- <description lang="en">I am in the cc list.</description>
-</rule>
-
-<rule name="msg-size">
- <code>
- (&amp; (&gt; message-size (size-lower size-range))
- (&lt; message-size (size-uppwer size-range)))
- </code>
- <description lang="en">The message is a <source type="size-range" name="size">certain size</source>.</description>
-</rule>
-</ruleset>
-
-<ruleset type="action">
-<rule name="copy-me">
- <code>
- (copy-to ${folder})
- </code>
- <description language="en">Send a copy to <source type="folder" name="folder">folder</source>.</description>
-</rule>
-<rule name="forward">
- <code>
- (forward-to ${address})
- </code>
- <description language="en">Forward the message to <source type="address" name="address">people</source>.</description>
-</rule>
-<rule name="delete">
- <code>
- (delete)
- </code>
- <description language="en">Delete message.</description>
-</rule>
-<rule name="stop">
- <code>
- (stop)
- </code>
- <description language="en">Stop processing further rules for this message.</description>
-</rule>
-</ruleset>
-
-<ruleset type="except">
-<rule name="except-me">
- <code>
- (match-all (not (header-contains "To" "zucchi@zedzone")))
- </code>
- <description language="en">When I am the receipient.</description>
-</rule>
-</ruleset>
-
-<optionset>
- <option type="receive">
- <description language="en">When a message arrives.</description>
- </option>
- <option type="send">
- <description language="en">When a message is sent.</description>
- </option>
- <option type="receive">
- <description language="en">Copy incoming messages from a certain address to specific folder.</description>
- <optionrule type="match" rule="from-address"/>
- <optionrule type="action" rule="copy-me"/>
- </option>
- <option type="send">
- <description language="en">Copy sent messages to a specific folder.</description>
- <optionrule type="action" rule="copy-me"/>
- </option>
- <option type="send">
- <description language="en">Copy messages to me and others to a specific folder.</description>
- <optionrule type="match" rule="from-address">
- <optionvalue name="sender">
- <address name="zucchi" email="zucchi@zedzone"/>
- <address name="foo" email="bar"/>
- </optionvalue>
- </optionrule>
- <optionrule type="match" rule="to-address"/>
- <optionrule type="match" rule="cc-address"/>
- <optionrule type="action" rule="copy-me"/>
- </option>
-</optionset>
-</filterdescription>
diff --git a/tests/ui-tests/mail-atchmt-image.msg b/tests/ui-tests/mail-atchmt-image.msg
deleted file mode 100644
index e828e722b9..0000000000
--- a/tests/ui-tests/mail-atchmt-image.msg
+++ /dev/null
@@ -1,67 +0,0 @@
-X-Mailer: exmh version 2.0.3
-X-Exmh-Isig-CompType: unknown
-X-Exmh-Isig-Folder: inbox
-To:guiheneu
-cc:
-Subject:image
-Mime-Version: 1.0
-Content-Type: multipart/mixed ;
- boundary="==_Exmh_20679612960"
---------
-This is a multipart MIME message.
-
---==_Exmh_20679612960
-Content-Type: text/plain
-
-voici une image, c'est super.
-
-
---==_Exmh_20679612960
-Content-Type: image/png ; name="gnome-fontsel.png"
-Content-Description: gnome-fontsel.png
-Content-Transfer-Encoding: base64
-Content-Disposition: inline; filename="gnome-fontsel.png"
-
-iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGPC/xhBQAAB85J
-REFUeJztmFlslNcVx3+zexnP2MYrXjEBHGICCChgQVu5icCkzUuxm7QSKKKtWgUiRd3eKvHS
-8hIqtUVtWqlVpFBVNlLVB1dJSkHEyGwJFC9g43U8Y3sWz74v39w+eKYMxp7xzLhqHvyTrj7N
-t/zvOffce+49AxtssMEGX2TeA8Qa2qEsNLvWqCkS/a8Lqwn2JO5nQz1LTgyk6A4k7nUte9aV
-u8lPSR2x5YI9ic5yIXWk311BV7DkbFqUa+goVeTWsmcX1/B9Jk0A07Lft1a5nxPJ0ZhdZkBP
-roLt7e3vd3R0iM7OzmQEkhxK6GazpjIym+gk1eD3eNahrKjYu1e8ceqbQrelRZw4cSLVgWTS
-WDNrmUINiWtyLSTpzaajJHW7d4muo7vYX1/IxJgOk8nEMl1jNnryDM9TF203IEs0eH49rIkj
-TSW88eqXqCorxmReRK/XJ7W7E6/czkZvLRFIsnxksl5gbS3V4uvtuzCODjI6MYvZYMJsMHXz
-bDSzGhhZhuc9PI1CpndX5S8DPS0f/uK3k987vp+dLdVcv/k5fZ/N4I9puXbtWs66kDkCyXSX
-1bxczu/P/3ryJ91fY3t1AcOPp3B6A0yafDx6dDcvXcjswOHENat5mcrp06dFS5XE1oYq5o2z
-zM5Z+GTIisFshnXI8+kWceoOm8zPWXHlyhURDAb56t6dRINexqenWXCF+PyxAb/DAUsDlNeR
-Id38W0k0q9R59JV28bM3X2FHYyXG2Rlu3B7k/B//2b3Cq7fIMRrpplBOeT5Jd3e3aK0I0Vyt
-x+t2MmG08NHAWN66y8m0D+TE5cuXRSQc5BuvHkWtVjD6ZIY7j+cYM9j44IMPxLlz57I9wa5K
-XilsOadOnRIAs3NjnP/Bt6ivKGb00RBDj6cYcsm4/GEfHR0d3L9/HyEER44coa+vb602yFjh
-mLFuETje1Snad6gJBoO8dbKDhtpNLC4YsDvdjFkDlOqbAZgaG2TLZj1VZQX037i+VvlVncxm
-J16Vs2fPirZKHy+0NBEITtK+rZa4z4bb62fcYOOTgWEO7C+lsaac+i2tbKuSEwn5uDE4h8cX
-WEsXq065dBFIHqMztS5sD3lxx3bs7jjbG6tRqvUMj81QpCng3ogBNYJqpYOfvnWcN7/chNfl
-wmRxYzJZspk+K76bLgJGltLbYVZOc4dYOqn2Hjt2DLWulpKIjd0vvYzf4yIejxEKh3jn+93E
-/G4Gp+zMWpzYHYvMWL3Y/LE12g6kiUA6B37EUql3GPgVz6e/WcD4neN7hb5Egz8QYuvmEiQR
-Z3Z6FLlMRk1TI8UFxciVWxiZ6GPkyThTFg9CpWVbTQHl9YfFg/5beSWSTIs4eZRIGv8uT3fk
-hpMnT1rb2l6idus+lFEX8ogXtUZHsUbBpjIdWv1mXE43i/NTtDaU4/aGeXHXHk6/doCjB3by
-Qk3GkjdvB7pSrl0JB5LlXndzc/O+lsbNhIIemhvqKGnYS1zE0GmLqKmuRlNaj8lkJByFHa07
-+M3Pv8u+5gqMhjluPRij/95dzpw5k9eekM6B1OHpSbQGnh7setVqNXJVIXHPPAX6ShSFJRDx
-o1Yp0dZswzI9TFGRmrrGFpQigpAi1OoEAyMz3B2aQaeCqzc/zcf+tA4kp89Flqql5D8Q/y04
-4ov3KC5UUUAQTUkVYacRKRJEW9dGcNFAkXBRXVGBXF3MgjPI4PgCtqgGhVZHc20ZVaWFiLA/
-LwfSLeLkVOlladSNLEXgFsClS5dE2NzP9ubNaEsrEZJEPBpEo6sh6DQhRXyoikopKWvEMH6f
-RZuN3W2tKOIBytUSM4Y5AqoijP/6d14OpItAspi/nXLtTv7u//gPvNbxFQqLtSiLSgl7rcgV
-KqIBB1GvFWVxORpdDb75IbQqqCzTEo94uDk0g9PpQiAYMwcwTBj+ZxVZF2nq02gsjjzoRrmp
-iVjYRzToRAr5iEoRlAUlqMsbcE3fByFYsNiJxCQcLj8W0xxub5BFSck//n4177PYSg6k1sHJ
-ggOWImIC+Ovvvi1KVDoABAIhxQh7rCBFKdjUTCQSwWd4gNXmoLRMz5zVSRwZHq8Po9kJRVom
-App8bQdW3p5Xq7yeKUR6L/5QHDx4CFWhnrDXStBjw+wI0lBThtE0T5ley4PBJ3ijcZxuH2qV
-kofDM4zMLDA0aV23U/BKEVipYlrOn/e0NvkVGm1xNOgm6ncElApFUX2lloDfh93h4d7QJFa7
-B622SJIkKfLoiVH69OFUxGz3LQLvsBRNH/AZ4FhPBzKxtaGm3K7WVhTHIwHC7oUQoAGIxmLM
-LdiYNC4gSVCi1UTtTm+0//44NpfPa7H7LgiBGbCzlNUmgHiuxufqwJ6uYwd8MoWSiN8BUADg
-9vqx2JxMm2zEhcz+0cBILByVlEq5LCCXy3rdvtCP4wIZoAfc+RqejwP17Xu2KqRIEJlcATAH
-1IXDEYzzNmRC4vHkPIYFx0goGvtldZn2+uCEWUp8KwDnehieJBcHJkLhWEQK+5Er1QB1AHan
-B7lcNmuyeCITpsWzBrPrYwCL3beO5j5PLiVl38GXW/4khDQMxIBYIBhCo1b5rXb30NU7ozdf
-P7rz2jrbuSp5pTMhhE4mk3kuvN35ulwmW5ics0vv/+3OQ0DK+PEXiQtvdyr+3zZssEGO/Afd
-sGNaGjYibwAAAABJRU5ErkJggg==
-
---==_Exmh_20679612960--
-
-
diff --git a/tests/ui-tests/mail-atchmt-postscript.msg b/tests/ui-tests/mail-atchmt-postscript.msg
deleted file mode 100644
index 9787567865..0000000000
--- a/tests/ui-tests/mail-atchmt-postscript.msg
+++ /dev/null
@@ -1,8069 +0,0 @@
-X-Mailer: exmh version 2.0.3
-X-Exmh-Isig-CompType: unknown
-X-Exmh-Isig-Folder: drafts
-To:
-cc:
-Subject:
-Mime-Version: 1.0
-Content-Type: multipart/mixed ;
- boundary="==_Exmh_-1506175120"
---------
-This is a multipart MIME message.
-
---==_Exmh_-1506175120
-Content-Type: text/plain
-
-
-
---==_Exmh_-1506175120
-Content-Type: application/postscript ; name="popt.ps"
-Content-Description: popt.ps
-Content-Transfer-Encoding: base64
-Content-Disposition: attachment; filename="popt.ps"
-
-JSFQUy1BZG9iZS0yLjAKJSVDcmVhdG9yOiBkdmlwc2sgNS41OGYgQ29weXJpZ2h0IDE5ODYs
-IDE5OTQgUmFkaWNhbCBFeWUgU29mdHdhcmUKJSVUaXRsZTogYm9vay5kdmkKJSVQYWdlczog
-MTEKJSVQYWdlT3JkZXI6IEFzY2VuZAolJUJvdW5kaW5nQm94OiAwIDAgNTY3IDcwMgolJURv
-Y3VtZW50Rm9udHM6IFphcGZEaW5nYmF0cyBQYWxhdGluby1Cb2xkIFBhbGF0aW5vLVJvbWFu
-CiUlKyBTdG9uZVNhbnMtQm9sZCBTdG9uZVNhbnMgUGFsYXRpbm8tSXRhbGljIFBQQ29kZQol
-JSsgU3RvbmVTYW5zLVNlbWlib2xkSXRhbGljIFN0b25lU2Fucy1TZW1pYm9sZCBQUENvZGVC
-b2xkCiUlRG9jdW1lbnRQYXBlclNpemVzOiBMZXR0ZXIKJSVFbmRDb21tZW50cwolRFZJUFND
-b21tYW5kTGluZTogZHZpcHMgLWsgLW8gInwuL2ZpeGFwcGVuZGl4IGJvb2sucHMiIGJvb2su
-ZHZpCiVEVklQU1BhcmFtZXRlcnM6IGRwaT02MDAsIGNvbW1lbnRzIHJlbW92ZWQKJURWSVBT
-U291cmNlOiAgVGVYIG91dHB1dCAxOTk4LjAzLjIzOjE1MjMKJSVCZWdpblByb2NTZXQ6IHRl
-eC5wcm8KL1RlWERpY3QgMjUwIGRpY3QgZGVmIFRlWERpY3QgYmVnaW4gL057ZGVmfWRlZiAv
-QntiaW5kIGRlZn1OIC9Te2V4Y2h9TgovWHtTIE59QiAvVFJ7dHJhbnNsYXRlfU4gL2lzbHMg
-ZmFsc2UgTiAvdnNpemUgMTEgNzIgbXVsIE4gL2hzaXplIDguNSA3MgptdWwgTiAvbGFuZHBs
-dXM5MHtmYWxzZX1kZWYgL0ByaWdpbntpc2xze1swIGxhbmRwbHVzOTB7MSAtMX17LTEgMX0K
-aWZlbHNlIDAgMCAwXWNvbmNhdH1pZiA3MiBSZXNvbHV0aW9uIGRpdiA3MiBWUmVzb2x1dGlv
-biBkaXYgbmVnIHNjYWxlCmlzbHN7bGFuZHBsdXM5MHtWUmVzb2x1dGlvbiA3MiBkaXYgdnNp
-emUgbXVsIDAgZXhjaH17UmVzb2x1dGlvbiAtNzIgZGl2CmhzaXplIG11bCAwfWlmZWxzZSBU
-Un1pZiBSZXNvbHV0aW9uIFZSZXNvbHV0aW9uIHZzaXplIC03MiBkaXYgMSBhZGQgbXVsClRS
-W21hdHJpeCBjdXJyZW50bWF0cml4e2R1cCBkdXAgcm91bmQgc3ViIGFicyAwLjAwMDAxIGx0
-e3JvdW5kfWlmfQpmb3JhbGwgcm91bmQgZXhjaCByb3VuZCBleGNoXXNldG1hdHJpeH1OIC9A
-bGFuZHNjYXBley9pc2xzIHRydWUgTn1CCi9AbWFudWFsZmVlZHtzdGF0dXNkaWN0IC9tYW51
-YWxmZWVkIHRydWUgcHV0fUIgL0Bjb3BpZXN7LyNjb3BpZXMgWH1CCi9GTWF0WzEgMCAwIC0x
-IDAgMF1OIC9GQkJbMCAwIDAgMF1OIC9ubiAwIE4gL0lFIDAgTiAvY3RyIDAgTiAvZGYtdGFp
-bHsKL25uIDggZGljdCBOIG5uIGJlZ2luIC9Gb250VHlwZSAzIE4gL0ZvbnRNYXRyaXggZm50
-cnggTiAvRm9udEJCb3ggRkJCIE4Kc3RyaW5nIC9iYXNlIFggYXJyYXkgL0JpdE1hcHMgWCAv
-QnVpbGRDaGFye0NoYXJCdWlsZGVyfU4gL0VuY29kaW5nIElFIE4KZW5kIGR1cHsvZm9vIHNl
-dGZvbnR9MiBhcnJheSBjb3B5IGN2eCBOIGxvYWQgMCBubiBwdXQgL2N0ciAwIE5bfUIgL2Rm
-ewovc2YgMSBOIC9mbnRyeCBGTWF0IE4gZGYtdGFpbH1CIC9kZnN7ZGl2IC9zZiBYIC9mbnRy
-eFtzZiAwIDAgc2YgbmVnIDAgMF0KTiBkZi10YWlsfUIgL0V7cG9wIG5uIGR1cCBkZWZpbmVm
-b250IHNldGZvbnR9QiAvY2gtd2lkdGh7Y2gtZGF0YSBkdXAKbGVuZ3RoIDUgc3ViIGdldH1C
-IC9jaC1oZWlnaHR7Y2gtZGF0YSBkdXAgbGVuZ3RoIDQgc3ViIGdldH1CIC9jaC14b2Zmewox
-MjggY2gtZGF0YSBkdXAgbGVuZ3RoIDMgc3ViIGdldCBzdWJ9QiAvY2gteW9mZntjaC1kYXRh
-IGR1cCBsZW5ndGggMiBzdWIKZ2V0IDEyNyBzdWJ9QiAvY2gtZHh7Y2gtZGF0YSBkdXAgbGVu
-Z3RoIDEgc3ViIGdldH1CIC9jaC1pbWFnZXtjaC1kYXRhCmR1cCB0eXBlIC9zdHJpbmd0eXBl
-IG5le2N0ciBnZXQgL2N0ciBjdHIgMSBhZGQgTn1pZn1CIC9pZCAwIE4gL3J3IDAgTgovcmMg
-MCBOIC9ncCAwIE4gL2NwIDAgTiAvRyAwIE4gL3NmIDAgTiAvQ2hhckJ1aWxkZXJ7c2F2ZSAz
-IDEgcm9sbCBTIGR1cAovYmFzZSBnZXQgMiBpbmRleCBnZXQgUyAvQml0TWFwcyBnZXQgUyBn
-ZXQgL2NoLWRhdGEgWCBwb3AgL2N0ciAwIE4gY2gtZHgKMCBjaC14b2ZmIGNoLXlvZmYgY2gt
-aGVpZ2h0IHN1YiBjaC14b2ZmIGNoLXdpZHRoIGFkZCBjaC15b2ZmCnNldGNhY2hlZGV2aWNl
-IGNoLXdpZHRoIGNoLWhlaWdodCB0cnVlWzEgMCAwIC0xIC0uMSBjaC14b2ZmIHN1YiBjaC15
-b2ZmCi4xIHN1Yl17Y2gtaW1hZ2V9aW1hZ2VtYXNrIHJlc3RvcmV9QiAvRHsvY2MgWCBkdXAg
-dHlwZSAvc3RyaW5ndHlwZSBuZXtdfQppZiBubiAvYmFzZSBnZXQgY2MgY3RyIHB1dCBubiAv
-Qml0TWFwcyBnZXQgUyBjdHIgUyBzZiAxIG5le2R1cCBkdXAKbGVuZ3RoIDEgc3ViIGR1cCAy
-IGluZGV4IFMgZ2V0IHNmIGRpdiBwdXR9aWYgcHV0IC9jdHIgY3RyIDEgYWRkIE59QiAvSXsK
-Y2MgMSBhZGQgRH1CIC9ib3B7dXNlcmRpY3QgL2JvcC1ob29rIGtub3due2JvcC1ob29rfWlm
-IC9TSSBzYXZlIE4gQHJpZ2luCjAgMCBtb3ZldG8gL1YgbWF0cml4IGN1cnJlbnRtYXRyaXgg
-ZHVwIDEgZ2V0IGR1cCBtdWwgZXhjaCAwIGdldCBkdXAgbXVsCmFkZCAuOTkgbHR7L1FWfXsv
-UlZ9aWZlbHNlIGxvYWQgZGVmIHBvcCBwb3B9TiAvZW9we1NJIHJlc3RvcmUgdXNlcmRpY3QK
-L2VvcC1ob29rIGtub3due2VvcC1ob29rfWlmIHNob3dwYWdlfU4gL0BzdGFydHt1c2VyZGlj
-dCAvc3RhcnQtaG9vawprbm93bntzdGFydC1ob29rfWlmIHBvcCAvVlJlc29sdXRpb24gWCAv
-UmVzb2x1dGlvbiBYIDEwMDAgZGl2IC9EVkltYWcgWAovSUUgMjU2IGFycmF5IE4gMCAxIDI1
-NXtJRSBTIDEgc3RyaW5nIGR1cCAwIDMgaW5kZXggcHV0IGN2biBwdXR9Zm9yCjY1NzgxLjc2
-IGRpdiAvdnNpemUgWCA2NTc4MS43NiBkaXYgL2hzaXplIFh9TiAvcHtzaG93fU4gL1JNYXRb
-MSAwIDAgLTEgMAowXU4gL0JEb3QgMjYwIHN0cmluZyBOIC9ydWxleCAwIE4gL3J1bGV5IDAg
-TiAvdnsvcnVsZXkgWCAvcnVsZXggWCBWfUIgL1YKe31CIC9SViBzdGF0dXNkaWN0IGJlZ2lu
-IC9wcm9kdWN0IHdoZXJle3BvcCBwcm9kdWN0IGR1cCBsZW5ndGggNyBnZXswIDcKZ2V0aW50
-ZXJ2YWwgZHVwKERpc3BsYXkpZXEgZXhjaCAwIDQgZ2V0aW50ZXJ2YWwoTmVYVCllcSBvcn17
-cG9wIGZhbHNlfQppZmVsc2V9e2ZhbHNlfWlmZWxzZSBlbmR7e2dzYXZlIFRSIC0uMSAuMSBU
-UiAxIDEgc2NhbGUgcnVsZXggcnVsZXkgZmFsc2UKUk1hdHtCRG90fWltYWdlbWFzayBncmVz
-dG9yZX19e3tnc2F2ZSBUUiAtLjEgLjEgVFIgcnVsZXggcnVsZXkgc2NhbGUgMSAxCmZhbHNl
-IFJNYXR7QkRvdH1pbWFnZW1hc2sgZ3Jlc3RvcmV9fWlmZWxzZSBCIC9RVntnc2F2ZSBuZXdw
-YXRoIHRyYW5zZm9ybQpyb3VuZCBleGNoIHJvdW5kIGV4Y2ggaXRyYW5zZm9ybSBtb3ZldG8g
-cnVsZXggMCBybGluZXRvIDAgcnVsZXkgbmVnCnJsaW5ldG8gcnVsZXggbmVnIDAgcmxpbmV0
-byBmaWxsIGdyZXN0b3JlfUIgL2F7bW92ZXRvfUIgL2RlbHRhIDAgTiAvdGFpbAp7ZHVwIC9k
-ZWx0YSBYIDAgcm1vdmV0b31CIC9Ne1MgcCBkZWx0YSBhZGQgdGFpbH1CIC9ie1MgcCB0YWls
-fUIgL2N7LTQgTX0KQiAvZHstMyBNfUIgL2V7LTIgTX1CIC9mey0xIE19QiAvZ3swIE19QiAv
-aHsxIE19QiAvaXsyIE19QiAvanszIE19QiAva3sKNCBNfUIgL3d7MCBybW92ZXRvfUIgL2x7
-cCAtNCB3fUIgL217cCAtMyB3fUIgL257cCAtMiB3fUIgL297cCAtMSB3fUIgL3F7CnAgMSB3
-fUIgL3J7cCAyIHd9QiAvc3twIDMgd31CIC90e3AgNCB3fUIgL3h7MCBTIHJtb3ZldG99QiAv
-eXszIDIgcm9sbCBwCmF9QiAvYm9zey9TUyBzYXZlIE59QiAvZW9ze1NTIHJlc3RvcmV9QiBl
-bmQKJSVFbmRQcm9jU2V0CiUlQmVnaW5Gb250OiBQYWxhdGluby1Cb2xkCiUgQEBwc2VuY29k
-aW5nZmlsZUB7CiUgICBhdXRob3IgPSAiUy4gUmFodHosIFAuIE1hY0theSwgQWxhbiBKZWZm
-cmV5LCBCLiBIb3JuLCBLLiBCZXJyeSIsCiUgICB2ZXJzaW9uID0gIjAuNiIsCiUgICBkYXRl
-ID0gIjIyIEp1bmUgMTk5NiIsCiUgICBmaWxlbmFtZSA9ICI4ci5lbmMiLAolICAgZW1haWwg
-PSAia2JAQG1haWwudHVnLm9yZyIsCiUgICBhZGRyZXNzID0gIjEzNSBDZW50ZXIgSGlsbCBS
-ZC4gLy8gUGx5bW91dGgsIE1BIDAyMzYwIiwKJSAgIGNvZGV0YWJsZSA9ICJJU08vQVNDSUki
-LAolICAgY2hlY2tzdW0gPSAiMTE5ICAgICA2NjIgICAgNDQyNCIsCiUgICBkb2NzdHJpbmcg
-PSAiRW5jb2RpbmcgZm9yIFRydWVUeXBlIG9yIFR5cGUgMSBmb250cyB0byBiZSB1c2VkIHdp
-dGggVGVYLiIKJSBAfQolIAolIElkZWEgaXMgdG8gaGF2ZSBhbGwgdGhlIGNoYXJhY3RlcnMg
-bm9ybWFsbHkgaW5jbHVkZWQgaW4gVHlwZSAxIGZvbnRzCiUgYXZhaWxhYmxlIGZvciB0eXBl
-c2V0dGluZy4gVGhpcyBpcyBlZmZlY3RpdmVseSB0aGUgY2hhcmFjdGVycyBpbiBBZG9iZQol
-IFN0YW5kYXJkIEVuY29kaW5nICsgSVNPIExhdGluIDEgKyBleHRyYSBjaGFyYWN0ZXJzIGZy
-b20gTHVjaWRhLgolIAolIENoYXJhY3RlciBjb2RlIGFzc2lnbm1lbnRzIHdlcmUgbWFkZSBh
-cyBmb2xsb3dzOgolIAolICgxKSB0aGUgV2luZG93cyBBTlNJIGNoYXJhY3RlcnMgYXJlIGFs
-bW9zdCBhbGwgaW4gdGhlaXIgV2luZG93cyBBTlNJCiUgcG9zaXRpb25zLCBiZWNhdXNlIHNv
-bWUgV2luZG93cyB1c2VycyBjYW5ub3QgZWFzaWx5IHJlZW5jb2RlIHRoZQolIGZvbnRzLCBh
-bmQgaXQgbWFrZXMgbm8gZGlmZmVyZW5jZSBvbiBvdGhlciBzeXN0ZW1zLiBUaGUgb25seSBX
-aW5kb3dzCiUgQU5TSSBjaGFyYWN0ZXJzIG5vdCBhdmFpbGFibGUgYXJlIHRob3NlIHRoYXQg
-bWFrZSBubyBzZW5zZSBmb3IKJSB0eXBlc2V0dGluZyAtLSBydWJvdXQgKDEyNyBkZWNpbWFs
-KSwgbm9icmVha3NwYWNlICgxNjApLCBzb2Z0aHlwaGVuCiUgKDE3MykuIHF1b3Rlc2luZ2xl
-IGFuZCBncmF2ZSBhcmUgbW92ZWQganVzdCBiZWNhdXNlIGl0J3Mgc3VjaCBhbgolIGlycml0
-YXRpb24gbm90IGhhdmluZyB0aGVtIGluIFRlWCBwb3NpdGlvbnMuCiUgCiUgKDIpIFJlbWFp
-bmluZyBjaGFyYWN0ZXJzIGFyZSBhc3NpZ25lZCBhcmJpdHJhcmlseSB0byB0aGUgbG93ZXIg
-cGFydAolIG9mIHRoZSByYW5nZSwgYXZvaWRpbmcgMCwgMTAgYW5kIDEzIGluIGNhc2Ugd2Ug
-bWVldCBkdW1iIHNvZnR3YXJlLgolIAolICgzKSBZJlkgTHVjaWRhIEJyaWdodCBpbmNsdWRl
-cyBzb21lIGV4dHJhIHRleHQgY2hhcmFjdGVyczsgaW4gdGhlCiUgaG9wZXMgdGhhdCBvdGhl
-ciBQb3N0U2NyaXB0IGZvbnRzLCBwZXJoYXBzIGNyZWF0ZWQgZm9yIHB1YmxpYwolIGNvbnN1
-bXB0aW9uLCB3aWxsIGluY2x1ZGUgdGhlbSwgdGhleSBhcmUgaW5jbHVkZWQgc3RhcnRpbmcg
-YXQgMHgxMi4KJSAKJSAoNCkgUmVtYWluaW5nIHBvc2l0aW9ucyBsZWZ0IHVuZGVmaW5lZCBh
-cmUgZm9yIHVzZSBpbiAoaG9wZWZ1bGx5KQolIHVwd2FyZC1jb21wYXRpYmxlIHJldmlzaW9u
-cywgaWYgc29tZWRheSBtb3JlIGNoYXJhY3RlcnMgYXJlIGdlbmVyYWxseQolIGF2YWlsYWJs
-ZS4KJSAKJSAoNSkgaHlwaGVuIGFwcGVhcnMgdHdpY2UgZm9yIGNvbXBhdGliaWxpdHkgd2l0
-aCBib3RoIEFTQ0lJIGFuZCBXaW5kb3dzLgolIAovVGVYQmFzZTFFbmNvZGluZyBbCiUgMHgw
-MCAoZW5jb2RlZCBjaGFyYWN0ZXJzIGZyb20gQWRvYmUgU3RhbmRhcmQgbm90IGluIFdpbmRv
-d3MgMy4xKQogIC8ubm90ZGVmIC9kb3RhY2NlbnQgL2ZpIC9mbAogIC9mcmFjdGlvbiAvaHVu
-Z2FydW1sYXV0IC9Mc2xhc2ggL2xzbGFzaAogIC9vZ29uZWsgL3JpbmcgLy5ub3RkZWYKICAv
-YnJldmUgL21pbnVzIC8ubm90ZGVmIAolIFRoZXNlIGFyZSB0aGUgb25seSB0d28gcmVtYWlu
-aW5nIHVuZW5jb2RlZCBjaGFyYWN0ZXJzLCBzbyBtYXkgYXMKJSB3ZWxsIGluY2x1ZGUgdGhl
-bS4KICAvWmNhcm9uIC96Y2Fyb24gCiUgMHgxMAogL2Nhcm9uIC9kb3RsZXNzaSAKJSAodW51
-c3VhbCBUZVggY2hhcmFjdGVycyBhdmFpbGFibGUgaW4sIGUuZy4sIEx1Y2lkYSBCcmlnaHQp
-CiAvZG90bGVzc2ogL2ZmIC9mZmkgL2ZmbCAKIC8ubm90ZGVmIC8ubm90ZGVmIC8ubm90ZGVm
-IC8ubm90ZGVmCiAvLm5vdGRlZiAvLm5vdGRlZiAvLm5vdGRlZiAvLm5vdGRlZgogJSB2ZXJ5
-IGNvbnRlbnRpb3VzOyBpdCdzIHNvIHBhaW5mdWwgbm90IGhhdmluZyBxdW90ZWxlZnQgYW5k
-IHF1b3RlcmlnaHQKICUgYXQgOTYgYW5kIDE0NSB0aGF0IHdlIG1vdmUgdGhlIHRoaW5ncyBu
-b3JtYWxseSBmb3VuZCB0aGVyZSBkb3duIHRvIGhlcmUuCiAvZ3JhdmUgL3F1b3Rlc2luZ2xl
-IAolIDB4MjAgKEFTQ0lJIGJlZ2lucykKIC9zcGFjZSAvZXhjbGFtIC9xdW90ZWRibCAvbnVt
-YmVyc2lnbgogL2RvbGxhciAvcGVyY2VudCAvYW1wZXJzYW5kIC9xdW90ZXJpZ2h0CiAvcGFy
-ZW5sZWZ0IC9wYXJlbnJpZ2h0IC9hc3RlcmlzayAvcGx1cyAvY29tbWEgL2h5cGhlbiAvcGVy
-aW9kIC9zbGFzaAolIDB4MzAKIC96ZXJvIC9vbmUgL3R3byAvdGhyZWUgL2ZvdXIgL2ZpdmUg
-L3NpeCAvc2V2ZW4KIC9laWdodCAvbmluZSAvY29sb24gL3NlbWljb2xvbiAvbGVzcyAvZXF1
-YWwgL2dyZWF0ZXIgL3F1ZXN0aW9uCiUgMHg0MAogL2F0IC9BIC9CIC9DIC9EIC9FIC9GIC9H
-IC9IIC9JIC9KIC9LIC9MIC9NIC9OIC9PCiUgMHg1MAogL1AgL1EgL1IgL1MgL1QgL1UgL1Yg
-L1cKIC9YIC9ZIC9aIC9icmFja2V0bGVmdCAvYmFja3NsYXNoIC9icmFja2V0cmlnaHQgL2Fz
-Y2lpY2lyY3VtIC91bmRlcnNjb3JlCiUgMHg2MAogL3F1b3RlbGVmdCAvYSAvYiAvYyAvZCAv
-ZSAvZiAvZyAvaCAvaSAvaiAvayAvbCAvbSAvbiAvbwolIDB4NzAKIC9wIC9xIC9yIC9zIC90
-IC91IC92IC93CiAveCAveSAveiAvYnJhY2VsZWZ0IC9iYXIgL2JyYWNlcmlnaHQgL2FzY2lp
-dGlsZGUKIC8ubm90ZGVmICUgcnVib3V0OyBBU0NJSSBlbmRzCiUgMHg4MAogLy5ub3RkZWYg
-Ly5ub3RkZWYgL3F1b3Rlc2luZ2xiYXNlIC9mbG9yaW4KIC9xdW90ZWRibGJhc2UgL2VsbGlw
-c2lzIC9kYWdnZXIgL2RhZ2dlcmRibAogL2NpcmN1bWZsZXggL3BlcnRob3VzYW5kIC9TY2Fy
-b24gL2d1aWxzaW5nbGxlZnQKIC9PRSAvLm5vdGRlZiAvLm5vdGRlZiAvLm5vdGRlZgolIDB4
-OTAKIC8ubm90ZGVmIC8ubm90ZGVmIC8ubm90ZGVmIC9xdW90ZWRibGxlZnQKIC9xdW90ZWRi
-bHJpZ2h0IC9idWxsZXQgL2VuZGFzaCAvZW1kYXNoCiAvdGlsZGUgL3RyYWRlbWFyayAvc2Nh
-cm9uIC9ndWlsc2luZ2xyaWdodAogL29lIC8ubm90ZGVmIC8ubm90ZGVmIC9ZZGllcmVzaXMK
-JSAweEEwCiAvLm5vdGRlZiAlIG5vYnJlYWtzcGFjZQogL2V4Y2xhbWRvd24gL2NlbnQgL3N0
-ZXJsaW5nCiAvY3VycmVuY3kgL3llbiAvYnJva2VuYmFyIC9zZWN0aW9uCiAvZGllcmVzaXMg
-L2NvcHlyaWdodCAvb3JkZmVtaW5pbmUgL2d1aWxsZW1vdGxlZnQKIC9sb2dpY2Fsbm90CiAv
-aHlwaGVuICUgWSZZIChhbHNvIGF0IDQ1KTsgV2luZG93cycgc29mdGh5cGhlbgogL3JlZ2lz
-dGVyZWQKIC9tYWNyb24KJSAweEQwCiAvZGVncmVlIC9wbHVzbWludXMgL3R3b3N1cGVyaW9y
-IC90aHJlZXN1cGVyaW9yCiAvYWN1dGUgL211IC9wYXJhZ3JhcGggL3BlcmlvZGNlbnRlcmVk
-CiAvY2VkaWxsYSAvb25lc3VwZXJpb3IgL29yZG1hc2N1bGluZSAvZ3VpbGxlbW90cmlnaHQK
-IC9vbmVxdWFydGVyIC9vbmVoYWxmIC90aHJlZXF1YXJ0ZXJzIC9xdWVzdGlvbmRvd24KJSAw
-eEMwCiAvQWdyYXZlIC9BYWN1dGUgL0FjaXJjdW1mbGV4IC9BdGlsZGUgL0FkaWVyZXNpcyAv
-QXJpbmcgL0FFIC9DY2VkaWxsYQogL0VncmF2ZSAvRWFjdXRlIC9FY2lyY3VtZmxleCAvRWRp
-ZXJlc2lzCiAvSWdyYXZlIC9JYWN1dGUgL0ljaXJjdW1mbGV4IC9JZGllcmVzaXMKJSAweEQw
-CiAvRXRoIC9OdGlsZGUgL09ncmF2ZSAvT2FjdXRlCiAvT2NpcmN1bWZsZXggL090aWxkZSAv
-T2RpZXJlc2lzIC9tdWx0aXBseQogL09zbGFzaCAvVWdyYXZlIC9VYWN1dGUgL1VjaXJjdW1m
-bGV4CiAvVWRpZXJlc2lzIC9ZYWN1dGUgL1Rob3JuIC9nZXJtYW5kYmxzCiUgMHhFMAogL2Fn
-cmF2ZSAvYWFjdXRlIC9hY2lyY3VtZmxleCAvYXRpbGRlCiAvYWRpZXJlc2lzIC9hcmluZyAv
-YWUgL2NjZWRpbGxhCiAvZWdyYXZlIC9lYWN1dGUgL2VjaXJjdW1mbGV4IC9lZGllcmVzaXMK
-IC9pZ3JhdmUgL2lhY3V0ZSAvaWNpcmN1bWZsZXggL2lkaWVyZXNpcwolIDB4RjAKIC9ldGgg
-L250aWxkZSAvb2dyYXZlIC9vYWN1dGUKIC9vY2lyY3VtZmxleCAvb3RpbGRlIC9vZGllcmVz
-aXMgL2RpdmlkZQogL29zbGFzaCAvdWdyYXZlIC91YWN1dGUgL3VjaXJjdW1mbGV4CiAvdWRp
-ZXJlc2lzIC95YWN1dGUgL3Rob3JuIC95ZGllcmVzaXMKXSBkZWYKJSVFbmRGb250CiUlQmVn
-aW5Qcm9jU2V0OiBzdG9uZXNiLnBmYQoxMSBkaWN0IGJlZ2luCi9Gb250SW5mbyAxMCBkaWN0
-IGR1cCBiZWdpbgovdmVyc2lvbiAoMDAxLjAwMikgcmVhZG9ubHkgZGVmCi9Ob3RpY2UgKENv
-cHlyaWdodCAoYykgMTk4NywgMTk5MCwgMTk5MiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRl
-ZC4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuSVRDIFN0b25lIGlzIGEgcmVnaXN0ZXJlZCB0cmFk
-ZW1hcmsgb2YgSW50ZXJuYXRpb25hbCBUeXBlZmFjZSBDb3Jwb3JhdGlvbi4pIHJlYWRvbmx5
-IGRlZgovRnVsbE5hbWUgKElUQyBTdG9uZSBTYW5zIEJvbGQpIHJlYWRvbmx5IGRlZgovRmFt
-aWx5TmFtZSAoSVRDIFN0b25lIFNhbnMpIHJlYWRvbmx5IGRlZgovV2VpZ2h0IChCb2xkKSBy
-ZWFkb25seSBkZWYKL2lzRml4ZWRQaXRjaCBmYWxzZSBkZWYKL0l0YWxpY0FuZ2xlIDAgZGVm
-Ci9VbmRlcmxpbmVQb3NpdGlvbiAtMTAwIGRlZgovVW5kZXJsaW5lVGhpY2tuZXNzIDUwIGRl
-ZgplbmQgcmVhZG9ubHkgZGVmCi9Gb250TmFtZSAvU3RvbmVTYW5zLUJvbGQgZGVmCi9FbmNv
-ZGluZyBTdGFuZGFyZEVuY29kaW5nIGRlZgovUGFpbnRUeXBlIDAgZGVmCi9Gb250VHlwZSAx
-IGRlZgovRm9udE1hdHJpeCBbMC4wMDEgMCAwIDAuMDAxIDAgMF0gcmVhZG9ubHkgZGVmCi9V
-bmlxdWVJRCAzODc4MiBkZWYKL0ZvbnRCQm94ey0xNTggLTI1MCAxNTQwIDk0Nn1yZWFkb25s
-eSBkZWYKY3VycmVudGRpY3QgZW5kCmN1cnJlbnRmaWxlIGVleGVjCjQwNTE0OUI1NzNBRUM5
-Mzc4QkFFNDY2ODVBQUY3ODQ5RTVDOUE1QzhDODc2NzQ4NzI1NTg5RkIxNEEwNDk4MDhEMzlB
-NzVENTVGNjQ2NAoxMUE5QzM1MjZGMTg4N0FBMkJBRTUzRUU0QkE2Mzc3Q0IwOTQwOThCQjI1
-OTA4MjhEQjk2RkZEM0EyODk1Nzk1MjREQkJDNzlEOTU5N0QKNDdBNzkxOTJFMDFDMzYwRjA2
-QjkzQkZGODlBM0M2NDJCQzQxMDMzN0Q3NDM0OTlBN0Y4QjFFNDc2RkExQkRCMEIxOThGNjdD
-QUUzRjU3CjQ5QTFBQ0M0ODc5RjZFQkNEODQ3NDBENjJDNTI0ODU5NUI1MzBFNkMzRDNDREMz
-QUY1NDM2OUVBRkRFRENEOTg0OEUyRDM4Q0QwOTFCRgoyQUNBRDEwREYxQzg3ODcyQUFCRDA4
-NkQ2MDQ3NUVENjA0NkUyNDBGMjIzMkZFMkYwMDI1OTIyNTkzMTUxOEI3QjQyOTEzN0IxNDM4
-NEQKMTVGNTgyNDY3QTgxOEMyMEMxQzYzMTZDNTY3MzZDMTlGMUQ3NDY0MjMxRDY5ODAwRDk0
-Q0Y1MDEzREMyMzdEQTFFQzE2RkQ2M0QzMTU0CjRGQURGODNGMTUyRDE0OTZFM0UxQjUwRTY1
-N0Q1MTk1MkE2NURBMjIyNEFFM0MyOTBBOTQ4MjI2RjAwNUMzN0FCQTJGNkNBQTczMjM2Nwo5
-RDAzQTFGOTI0QTMzMkZDRjcxM0MzQUZGNjg1RENEMTRGOTUwQTlGNTBGNDY5Mzk3NTlGOTE1
-Rjc4MEY2OEVCMUU4QTJBNkREMzcwREQKREVGNUE1MTY1MkNEMEM1REVDQkNDOTQzOTY5NjI5
-MDRCMTkwNjlBQ0FCMjI3QjZENEQxNDg1MkE2NTM2MkQyQkZFM0IzOTM2RDhBQjNGCjIzMThB
-OTlBNDY5MTNEODY4RURGMTk4NEY4Njg3ODVFM0IxMTA3NjQzQkM0RTU4MjA2RThFNUU3MUU1
-RTEzQTgyMkEyODlBN0M3NTU5RQowN0JCRDg4MjI4NDdDNTZFQzBEREIxMjIwMjYzM0NBQ0E5
-OTBCNTg0NEI1MjUzRUJGNzIxOEMyQzQ5MTIxMUQxODc5QTRGMzZCQUQ5QjYKOTM1M0Q2MzY1
-MDZDNTJGMjQ4MThFNDQ2NEUwMkM0MUFBQTE3QUY3QkYwOUZCQzM3QzMzNUE3QkNBNDA0ODFD
-MTM3MTgyOEQ0QURFNjMwCjhERjA5REMwOEM2NDEzNzcyOTVDRDc1NDg1REMxNDczMjgxOUMy
-REIyMUNDNDk5NzMzRkVDQUUxQ0E5NDkwN0ExRjE0NEYwRUI5QkZDMgo5OEU0NzFBRjMwNEJD
-MzYyOENEMzkwMjAyRkZGNTlBN0JEMTREOUY5Q0M5OTM2ODgyNkRFNjQ0NkNENDBBNjhBREVE
-QkJFOEMzODg3OTgKMEZFNTc0NDQ4QjE5NkU5ODdDMkEzOTJEQTg2NURBNDZFNjUyQUFDOEY5
-QTQ4MjZENUFEMTc3NkZFMkU1RDJERUVGQTAxMTUwN0JFOTM1CjlFMTlFMkFGMzQ2NDMxMzU2
-OTFFM0EyMjFCNEIwQUIwRDE4REMzOTkzRjY0NjU0ODlDRTVFRkEwRDJGRUMwODc4ODE5MjdB
-NDM0RTUxRgo5OTY4M0FBMDQ2MzY5N0JCOTYxNEI2Q0Y1MjQ3MzMwQkI3MzkzRjgzNkE3ODlB
-Mzc3NDYyOUIyN0UxRjgyQUU0QzAxRURCRTk1QzIzN0EKMEVBQzc4QTVBN0ZGQ0MyMzMyRENE
-QjcyNUJERTkxMDFBOURFNTNBNkNDQTY0QTk4NDI5NDcxQkE4MDE4QTNFM0MyRDI4N0I2MzE2
-RkJGCjA4QzNEMkJCNUE2MTFEMUJFODQ2QjE3QzJGMENBQUUyOTU1QkJBN0VFNEQ4NERCRkE2
-QkI1RDU0QjVEOTBFMjNDMjFEMzQ1NjIxNDREQQo0RjVBNDlFNjY2QzFFNkY3RjE4QjJCMzNC
-MkJDNEE3RkU3MjI0NDBEMjcyQ0U1MzM1NEIzOTQ0MkYzQkM4OUU1RjkzOUI3MTc1NDQ4RjAK
-MDJENkE2MEJDMjk3Qzc3MDc0NTIyMkZEQUNDOUQ0NTZCNEY4NjlFN0JENEU4MDJDMDFENTE3
-QUQ3NTJCQTUzM0RGMUVDRjRGOUE2Q0YwCkRFODMwNkM1NUE5MDQwNUYyM0QxODM0RDc2RDJC
-NDQ1MkU0NTA0QUE5NTNBOEI0RERBNEYwQzk2NzMyOUQ5MjJBNjg2MTVCMUI3MUY3MwpFOEJC
-NjgyRUNCRTNDNzQxN0EyMThEQzM4NkIwMDk1QjM4NTc1RUJCQTU1NTgxRjc2OEJBNUQ1RjIw
-M0E3NjI1RkU3ODg1N0VGMkI5MTkKQkFFNERFMDExNjUwNkZFMkM0NzZBNjQyMzQxNEZFRjU4
-MzNERkUwMEQzRUFENkM2QjVGMzE2MjVDRDc2RkIwQTQ5RDA0QzFERDg1QTdFCjY5MkJFQ0Uw
-Q0MzMkM5QThDMDRBQzIwOUI1RDFENzdCN0JEMjEzQjcxODU1RkJFODFGNzU3RjQ2MTI3RTcy
-NTM4MjNFNzMyQTYwOURDRgoxNkM3OTQxMkQxRjBBMTUxNzI4OEE4MUI0MjE2NUI0N0RBNjZF
-Q0E1RThFMUY2QTM5QTQ3NDQ4NkEzRDRCNjY5QkM2NUNGNjMxMzZBQzkKMjQzRTdBNDkyQ0ZF
-MjIyQ0I0RjU1QzJFRDRCQUE3NTU2REVEQUQ0MjVCRDcwNkFFRUQ4OTVFQUM3NjcwNEFGNjM2
-NjI5NUVGQjRBOTFCCjU0OEMyMTc2RDRBMzBCMTAyNjQ4OUU3MEQ4RDk4MUQxMTBERTQ2RTBE
-NURGM0EyODcwNTkyMjAxNDJEQjAxMDAwOTJGQkQ5RTE2NDg0Qgo3Q0RGQkFDMkI1OTVGRDM1
-MzU5RDY1RDUzNTFENUFBMUFGOEVFOTRFNkEyNTlBNTY4RjNENjIxOUYyNTM4RUI5RTMxRTg4
-RDJBN0Q4QjIKMTVGODhDNTgxQUZBQUFFNjdBRjU4NzM0M0FCNkFCMzYzNkFFNTE5Q0FCMDBD
-RDBBNzlFQUU0REJDQjU2RTc2RTQ2RjE0REQ3RjAzNzU5CkQxMEE0Rjc4QkM3MTRCNjBFM0ND
-NTZCQzA0QzRGRTY4QzU1NDlCQzFBNDU3N0YyQUY1NzhGMTQ0MUVFRTkxNzhFNjc4OENFMDNF
-RTE2Qwo4QzNFODBERUUzRjBEMDE2QUMwOUIwQjYyQjQ2RUJFNTQ3RjBDMTA0NjZFOEJDOUMz
-QUMyMzVGOTFGNTk5QjI0NEY4REFDM0I5RkE2NjEKOEEwOUQ5QTYyRTlFOTA0Q0NFMzNCQjFE
-QTFGNkZDODFFMUY5N0ExQzU2QTIxMDdGNzIxRjgzNzE4MERGMjRGRjExMEM3QUVENjI4RTdE
-CjBCNDY1RDUwNjRBNkRCMEUxNzhDNDAwQjY1RTIzOTUxRTc1NjJBOEM4OTBCQUIwNzc0QzJB
-Q0NFRDA3RTQ4N0Q1NEU2ODhFNUFGMzU0Ngo2NjFCMTMzMzZFQjFBNEVGNDg0QkZFNENBQjYx
-QkZBNDdCN0YyMzJENDZFRkFGNTBENUUzMUE4MzA1RUY3MjdEQjA5MUFCMEI5MzQzMEUKNjFG
-QjkzOEY3MjEzOTBFRTI3MUQyQkE1RDhCMzNCQUZENUNCM0YyNEM3QTRBREVGRjZDMEU0MkQ5
-M0UxQjlEQUJEMjVGODkxODExQTA5CjQ1N0JDOTRFMTNGMUI3MUY2Mjg5Njk2Nzk3NDBEOTFD
-MTk3MTU5OEExRDRDMjQ4Rjg0MEJCRUYyQkNGNzRGQjFFQUM2RDNENTgzMDZERAo2MDdDQUVC
-MThBOEIxOUVCNzc1QkNCQzY2MDJERUQ2REMyNzNENEEwMTkwRUY4RDMwRTA1Njc1QkM3QjNF
-RTFGNkQ1ODQzMTFDNjgxRjAKQzlCN0Q2MEQyNUJFQ0MzQ0E3QkM4M0IxN0U3RDQyODMyRDky
-Q0I2NjM0NTY2OEY0NTVGODZBMzlENTk1MzRCODQ5NjdENTU0MkQyODhCCjAwMThGQTE4M0E0
-MjcxMTUwRjU0OUQwNTMyRTY5MkMzMTA3N0FDRDhGOTA1MjkzQ0MxNkM5OTAxREVBQUU2QjMy
-NjY4MEE1OTQ5MzcwNwo4OTUyNjRGODgxRDY5M0JCQ0E5NTVBNkYwM0I1OEFFMEQ4MTU0MEUy
-NkJDOUEyMTA0RDRBQjIwQzVDRDFENEZBM0RCMDlBMzgyNDY0MjUKRTVCMUZFMUVGQkU2QzMy
-QUY2MDlFQkU3MUNBNURFNEUyNEQ4Q0RDQUYxQzNDODQzNTkxMjZEQUE2QUQwMDk4QkY3NDI4
-NDQ1NTk0M0Y1CjExNTM2MDc5OUYxMEJERDY1N0QwMEZGQkMyMDM5ODE2Nzg1QUQ2RTVFRkE4
-NDQ0RjNBRUFBOERCNTJFMkYzQ0JFQTgxNUM0RUMwOTA3NgoxRDAzRTg3NDAxMzE3QTEyNTY3
-REEzNUE5REVEOTU5NzQ2RkQ1NjEzRTFENzQ5N0QwNEY4MENBQTM0NjNEM0YzRUI3OTEyQ0NC
-NkVGODcKOEI0ODc0ODVBMjc1RDE1NEUyNTQ5RjNDNDI0QTczMEY2NkY2NkFDOUU2RkFFMDk5
-RTcxNTA0QUQ1Qjc2QjRGOTdDN0JFMTVENzBFNEE0CjNDQjAxRTA5Q0Q0N0Y0MUJGMDQ3NzU3
-NDM2Qzg4NkEzNkI5QzVGMkM1MUIxNjFBMzk3REZDNTQ5NEMyRUNCNUE0Q0NDQzA3NURCRTJE
-MgpFMzdCMjJGMTRDMzY2NTE4MjIwMDgzMEY2Nzk2QzFDOTg0MUYyNDQ1MzI4NjUxNUUzRjZC
-NzAxRUY4QzBCRTY1QjgzMDVBM0QyQTA1MjIKQ0E1QTMwQ0ZFNUNCRkM1MEE5QjZFN0QzOTI1
-RTUzMkFCNUE1OEQ0QzZDRUE1RkFFMUMxRUVEMkUzOUM4MTVFNjRCQ0M5NkRFMkFGODVFCkY1
-QkMxODMxRURBM0IxQkE1NDFCN0RCNUVERjZFMDQyMjQ2QTg1MzQzNTNCMjBFOTlBMEFEREI0
-NkIzMkFGMTFERURDMkZFMUIzMjI2MwpGMDU0RTc1MkY2ODQyN0Y1QTFCNzFFRDk1M0ZDMjcy
-RkRERUE1NTUwNkNDOEZERThGMzVDNjE5RTM3Mjk2MDQ4MDI0RkE2MzAzQTlGRkUKNkM5QkUz
-RURFNEJFNTc5NEFEMUE4RTc2MUIzQ0RGMTM3QzdBMjlDNjREMEQ4RUUxQ0YwNzFGOTA5NkRF
-RTg0M0VENDBGMUQ0QTU0M0E4CkNFMjhGNzA0M0QzOEE3NEU5MjlFQUVBQjZCQTk1Q0REMTdF
-NTFCREQ3NzY5MUYwODQ2RjlFRUU0OENENUNBRjkwNUNFMDgxNEYzQzdERgpBMTdGNDMwMzg0
-Q0YxQjIwMDRGMzFFMDc5NzVDRTRBNkJDODhDQUQwQTgwNUNGODlEMTY3QkREMTVDOUYwRjg0
-NDIxNjZERTNERkE2ODcKNUZDMDhBMzVEMjIxQTE1MTY5OEI4MDNCRDY3MDY0NTcxQUU1N0I2
-Nzc5N0I1RjA2MThCNkI4RjNEMTQ4MjlCODdBREE3ODM4RDY1QkNFCkQ1MjdDRTJGRjk5ODQ1
-NTVCOEE2QjkxNUE2ODI2M0U2NDE0MTQwOEZDQjdCQkYxRkY3QjhDMDQzNzA1QTg4MDNBREI4
-NDM5N0I4NjFCRAo2NEEzQTdCQTc4MUM0NEM4NDdBNjhGMUE5RThGRjZFRDdCRTg4MUIwOEM4
-RUQzQTJCQUZBQjkxOUQ3RDM2RDM2NzcyREFBRjgxMkE3NEEKRUMzNjhFQTYyMkRCNjkwM0NC
-QTMxMzRFNzU1QzYzQjAwMjBFRTcyRUE2OTlBMzk3NUJBNEIxQ0Y3MDMwRTY2QjM2QkRFOEE2
-NkJEMEIyCjcwQzdBMkVDMDg0QjgzODNEMDIzMjY5QjkzMUI5Q0EwMzZGQ0EzNjJBOURBNkRD
-OUREREZDMTFGNzE1QjFGMkE2MDA5OEM1NkI2QjY4RAo1MkJBRjMzQkYwQUVFMkQ4NTUxRjBD
-ODgwOTM0Mjg5NEY2MEQzNDkwRDlEQUQxMzE3QUIyRjcwRTMxMzkyNEU5RDY4MEM2MTBENDFD
-QzMKMTkyNEUxNDU4QUQyMjBGRkUwQjM4NDQwNERGM0FBNjdFNzMwNUEwODM2QzVDMTk1NTEz
-RUMzRDA2ODZCMzY4QTY1REQzREU5QUVGNUQ0CkVBMjgzNzZCNEFDQzFEMDBFQjM4RjZENEVF
-RDdFMDI1RUUxN0ExRDE1N0MxRTcxODc5REUxNkJGNDZENThFMUJCNDZCMkNGOUNCQTA4MgpD
-MEE5NDU2N0E1Qzg3NEU4RTY0NzdBM0NEMEQ2RTQ4RjhDRDRFNEFDMzczMEUzM0VDODA3OUI0
-Q0NFMEVCRERBNUU0OEVEMTM2MjZGOTAKODg4QTI4OTI0NDhERDA3NUVBM0E4NDZEMUM4RTZF
-M0YwRkYwM0I4RDYzRDA0QUVERkM2NTk4NDBBOTQ5Mjc1Mzk0RUIyMUI4NUU1NDRDCjI4QkYw
-QzJBQjcxMTNFQkU0QThBM0QwNTc5RUY0OEMxNUQ5RDgyQTA5RTk2MzQ3NDIyMDczQTQ1RTMx
-OTc0OTBENTlGRTVFOTgxODY5NwowNjVBNDE5RTk1NzY4REFGNzY4RTFEOTM4NDE0RUNERTUx
-NTkyODFGNEJCMzVFRUQ4RDY1RDM2NTE5MDYyMTdGRkMwOEFGQkIwNzU0NzQKRDBGNkI3NTE5
-Q0UzNjY4MDkwQjExNUEzNTBEQzNFOTBEQjM1MEEyOTA4MjI0MDVDN0FENjcxM0YzQkMyOUZF
-RTBBNEUzMkY5Qzg1RkRCCjIzMkE0NThGNTVEQjFDQTMzNUZDOTRBNDcyQzM5MEEzMjI0MjJD
-QUQ2MDk0NDNGNTY0NUU2QzQ1MjM4NTcwQjY4OUE3QUIzMDdCNjNEQgpCNTk4RkNGMkVCMkE3
-MEY2QzRDOUNCNURDMzA3NjkzOEM0RDJDNDAwOTMwREMyNjI1Mjg1RUI0NDgzMjk0NTA5QTRC
-MDE4MDAyQjgyNjEKQUVGNTcxQjA2RDhFOUJEODZFOEFBNDBDRkVEOEU5MkQwNTVEMUY2NTNG
-RjY4RjJFREY5NDYzNzk2QjA3MEEyQjM2NkJBMjc0QTA3Q0E4CjI4M0IzMENGNzkyMzFDRERF
-NEEyOTQ5RjQ3RDhDMThDMTU4MzY3M0ZCQzVBRTE4RTBBNTREMzJCMDk1MzIyQ0ZGNURGMzgz
-MUY5MTA2OApFOURDNzEzRUYxQjI4MEQ0MUM0QkJFRkIyNjA5NUZDRDU3QTVGRjc0NUUwQTI0
-QzAzN0I4MDkzRkZGMkUxMERBN0Y2RjZBNDgxMjYwRDMKMjM3MTU4Q0U1MDYxOEE4QkRCMUNF
-MUNGNTU1MUI0NTk4OTE3RTRENDAxMzdFNjc5OTNEOTZENzVENkMzODUwRDkyRDUzNzM1NDFE
-N0U2CjVFN0NDQTE0NzhBNUYzRDExN0FCOEVGMkY4MEYwMjQ4OUU3RDk4OTlBNDZCNEIxQzMw
-RTYxRDY1N0FFRDg0OEExNDREQzI0RjExQTFGNwoxODIwMjAyOUM4MTkyNkFBNzZEOUY3RTRC
-OENERTM4ODQ4RTcwMkVDNjg0MTExNUEwRjU4NTMzNEY0MjQ0NUFFQUFFNzg3QkYyNzJBMjYK
-MzU5NEU0RjYyMzU4RTdFREFBQUE2MzAyOERFNzg4NzI0RUUwNEQxNzUxQTU5QkQ5NUQ5REMy
-RjJFREYwMjU2Q0I0NEVEM0UyMjEwQTlCCkFGRTgyODMzOTI2RUQ2REFCQTYwMTQxRDc0MERC
-MDMxOEZERDlBN0QzQjRDRUM4RjJDOTVFM0ZBNkVGNjAxMzczN0YwQjFENDhEMjRENgpGRTM4
-OUMyRUY1QkQxMkFEOEM2RDJBQkFGOTAxNkVGQzdERThEQkRBNkZEQTIxNzI3RUY4RTAwN0Ix
-NTVEMzExRDdCMjc5NzU3MTY3RjQKRDFCMjQ3MzUzNEMyNDA4RTQwMkFBMDUwNEY4NTNBQ0JC
-QjVDRURFMjA4MTM3RjJEQTZDMjEyMzBGRTI3MTVDNDVFRjAwM0FBOTAxM0Y4CjU0QTU1MzRG
-M0FEM0Y4RkYwNTUwQkFEMzcxNjQ0OURGQjNBNkE0RjQ2MEM3MkVGRTNFQzVBQTIyMEU5MDJD
-M0M5RjA2MkU4RUI0MTA2OQo1QjNENjAyNTQ1QkJDMjRENjE2RjA5NzVCMTZFOEM3RDM0MTVG
-NzkyNTU1MzY3NzA0QjkyQ0VDOUJGRDZBODUxQzgxRjVEOTcxNEFGOEIKRTZGOEM5OTJBQjFD
-MTNENTFGNDZDNUUzMkY3OTczMUVBMzJEOUM1MjZEMkFBQTBBMTU4NDY5MkEwMjRFMEY4NUJG
-OUUxMzgzQ0RBMUM4CkZDNkJFMzZDQTNDMTJFNEZGMzRGMTFCQTYyRDk1OTZCMzk4MzZFQjU5
-QjYxQkM1RjVEQTk3RDgwMzIxNUJBMUQ0MzQzMzM3RkJCNUQ3MgowQ0RFQTA4MUVDNDAzMjlG
-RjMxMDU3QkVBNzY5OEFFNERFMUYwQjc1RDREOTAyN0Y3NDFGNTg3QjRCNTI0RUIxMjI4N0RG
-RDBCOTBBQzQKQkVCMjc1MzhBNzg1NUI3OTY2NTc2QjY4RjE2ODJCOTkwQ0I1RkY0QkEyOTRG
-Mjc4REM5ODk1NkM1OEZBQ0NCQUYzODNCNzA4RkU0NjY2CjUyNzYxRTk0QkIzRTVFNjVDN0U5
-MDQ2NDNENTRDNjg5MjBDMEIxMDcyQjc5MEFFRjk5MjI5RDFGNzc0NUNCNDAzRjA3QzAyM0ZB
-NkEzMApFMEEwMEQ0QURFNzA1MUE4QjU5QURCMjlENDQxMzBBQjAzQjdGQjMwMzY1MEU5RUY1
-NUM0OTk3OEE5NEE1ODM5NzRCNkI5MUEwQTQwNjUKQjQ3REJBMzRCQ0VEQTE5RDQ0QTNGRDgz
-RTdGRDIzQ0JFQjZEMTY5OTAyM0I3MDRCOEMwRTJGQTgwMUNFMTVBOThFQ0RCQjA0OThCQkEy
-CjIzQjQ0NEMwQTc1RTBFNEREOTk1RDQwQUE0RjlGMDNDMEFGODVCQzU3NDIxODJENjI4QjND
-MEQxRjc2QTFBOUM3RTAyQ0IyMjk1Q0YyNgpBMkY3Mzc2MEJDNDcyRTIyNzhDQUU1NEQ5NzYy
-RkEyN0E5MjQ2OTY1MzI2QTBDREJDQUU5OTc2MDhEMEExRDUzMjZFNzhCNjc4MEUxNUIKQUU2
-ODg4Mjc2NjVERDc4NkU2Mjc1OTY5NDQ4RTMwMzAxMjQ4NkJDQkU0MTMwRDg0OEI0NjY2NkQ2
-NjBEMDc5MzU1OUFFM0U5ODREREQxCjA0QzRENTZBMDY2Nzg3QjRBQTRFMURFODE4M0IwNzhB
-OERFNDJGMDY2M0QzM0QzNUJBQ0IxOUEyRDgyQTYyQzUyQkU2RDNDNkVBNkM1RQozREM5QzQ5
-QkI3NEZCMUU0MzA2MjlGNDM3REZFNjdEQjREQUM3MzU5MDI1ODg3M0I2RDgwOEU4REFENEZG
-RkU2NjBGMDlENTIwN0FBN0QKN0Y0NUVFREU2RUNDMzJFQThGOEJBQTA3NUVGMjM2QzcyRjk3
-NTlGNDRGNTlGREI0NzhFQjgxODc2OEVGNzQwQjlDODkyMzk4QjM1Qjg5CkM2RjQ0RUZBMUUz
-QkFGMzg0RDRCRUM2OEQ4MTdBRTdDNDQ5REUwNjFENTNDNzU2OEYyNzE0MzY1RDVDODA3Mjk4
-RDZGNzJFNEQ1RDhBRApCODdBQ0UxOUU0MDU3RTIxODgxMUVEMTJGODQ5MDZGNEZGOUJFRDQ2
-NjA3MjYzQUYxQ0U0RTRGQzFBN0QwNkQ1OTcyNUJGQUY5QjE5MUMKMTdEOTEyQzY3NzI2RDg4
-Q0U4MDVFQ0Y5MzA4MUExQkVFMjgxQTAzNjRFRjBDRUZCQTkyRkNENjQzM0I0QTQ0QUM4M0M0
-NDkzNTkwMUQ5CjJFMzIxODRBMzFGRTc2NjFCNzYzNkI3MEZGNjJEOTdBRTlENzQ0MEEzQTYx
-MkE2OERGRDcxNzY0NDVGMDczNDZGRDI1REE1RDkxMDA3MAo1QjdBQzZGOTA2QkNCQ0FGRTJC
-QjNBM0UyOTZENTgwNjYwQjVGN0IyQjgyOTk1MUQyOTFBNzU5Q0U1REFCQzQ3RTkwMjFDMTRB
-RjgwRDQKRTI1OUVFMTMxNjkyNTdFRTI0QzAzNzNBN0NBQzE3Qjk1NDlBMzk0MEZDNjU4QkMz
-NUZDNjM2NkM3QTlFQURGREI2RkYxNUNGQ0UwMzhECkI1RjFFMEIyQTMzQ0I4QzQ1RDc4Q0Uw
-M0U4Mzk0RTBFQTlENjc3MDhDMTFGN0UyNUFEQTQyOThENUM4OUQ5NzdCRjE3NTU1QUM3MDU3
-MApCRTA3ODE1QzhDRDIwNEUzQ0NDRDNFODlBNkE0QjlCQjFBMDVGRDZERDRBNTZEREMwQUU1
-NkQ3RjU4MzgxMjQ2MDk1RTg2MjQ1MDU1QjcKNzYyRDA5ODExNDgwRTlBMTcwMEZCMzkwQkJE
-NDVGRDA1RjEwNTRFRTY1QTlGQ0E4MkIyOEYxNDUzRDcxOUQ4RUExRTM4RTE0NzVEOTRECjNE
-MUIxNkY2NUNDNDU4MkNDMzJDQkY1QjlERTkwRTk2RDkyQTM5RjY2NzA5MEI4QjQ3RTBFQUNC
-QkU4NUY4ODVGQjU1RjgzQjE5QjAzMAo1MkQ0RUQ1NTJDMUNBNzc4MEE0QUJGMERCMDJGNDc2
-RDZBNDk0QjM2Mzk5OEI0QkU4MzJDRkRCREZCMjhFMEQyRjZEQkRGMDQyOTFFNTMKRjhDRUU5
-N0Q2MDU3RTY2OEYzNTk0NzVGQTU3NTQ0MUJDNzdGQTZGRjMxNzA2MjFEMTAwMkIxQUI0MEMx
-NTVCOEY0MEY3NERDODIyQjlBCjlDRUVGNzY2MkM5Q0VDRTEwODJBRTI2OTk1M0FDQUUyRTc4
-RTNFQjAxMUY3MjFFNkQ2NUI4OTc2OTlERjZCRTFEMTQzOTg5RkUwN0JFOQpFMUVFQUM0QTdG
-QUIyQkI4ODg0MUUzM0U5QUYwRTEwOUExODZGNzJCNkQ5NThEMkRCRDkyRTA3MEI2MUZBOEFD
-OURFNjBEM0IwQkUwODkKNTBDNTk3RDAyNTUxQjNCMTBBMEU1MkU0MDU3MUJGNkFGNDA0N0Ix
-OTE0RkE1NjUxRUFGMERFMEQzMzJFRTk1OUY1OEY0RERFMUQ4RDRECjZEODQ3REU1MEU0QTQ3
-QUMwQzJFRTczRkI2N0NFN0ZBMjJGMjQyRDRFNjlFREYyQ0MwNTBEQUREQjI1Rjg5NTlFOTA2
-MEFGMEUyQUJDRAoyRTAyMjVBMUI5QzQ3OTJFRTk4ODUxN0IzQTU2N0RBMDlGM0UxMkUwNTJF
-Q0RDOTFBNTczN0M0NDAyNjUxM0U0NkQ3QjBDNzM5OUIwMDYKQjE1MDVGM0I3RjQxODgzQTE0
-QkE1QjE4MEU4MEM2M0RENUQzN0VDNUU5MEMzOEY0NkRDODhGMTFGRDVDMTU3MDQ1NTk0MTk0
-OTYwNkNBCjU5OENBMjAxMDU2OERDMEI0OUZFNUU1RUI1REZCN0UzQUYxOTVBMjNGNTFGODdG
-NTg5OEQxMEEzNDA0M0YyMzQwOUE5NTUxOTM1NjYxNwowNzNFQzgzQ0QzMTJBRjY5NjFFRUE0
-MDM3N0VBQjBCMEMxNTlDMzkwNkYwNDkyRTk0NDE0QUJCOEZGMzRGMUZCNkQzMzU5NERDQjVB
-NjQKRkFBN0EwMkM3NDk3OTlCQzE0NTUyRjIwNTEyMkUyMjIwOEVEQjYzM0ZBNTAzMTFCMzk4
-Qjk4RUZGQzBGRUI1Q0FFOEIwOTUzQ0QxRDBGCjA1NzAxQzI5MTlENURFNThFRUEyQ0E0QUVE
-RDA2NDQ0OTE1QjE2OTI1NTA0RDE1OUYwNTBBQUEyMDM0NzNDMjk4MDVFREY1QTcxQUFEMgow
-NkM2MDEyNjZFRDJCOTA5RTY4ODg3Rjk0Qjc2MTRFNzIzOTUwRUE5ODE4Rjc3OTMwNDBCQjhG
-N0UzNTAwQkU0NDg5OEI5MkUxQkRDOTcKQkNDRjMxMkQzNUE4NUU2Njc2NjlGMTVCREI0Mjg4
-NEU3QTI1OEMzNkM3Q0Y0OTQ3ODUyODY0RkY0NkVGQ0Q1NjgxN0M1OEE3QkRGMjlGCjMxMTFB
-MTg4QTVGOUYyNTVGRTA0MjU1QjE0MjdDQ0Q5RDBDQUY2RDk5OTJDNkZENDkzRTExQUFBODFF
-MTNGQzY5QzU2OUE1NzNBNzlDQwpEM0QyODU5QjA1MUI3RUM3Q0I1NUEyOTI5RTUxNUZDMTVC
-MDhBREE1MDM2OUMxMDgwOEI4M0VGQjY0NDVCNEU1N0U4QkJCRDc1RDZBNkEKNjJGNzIyODc1
-QzZBNjVCQTM1NUJGMjRDRERGNEY1NjExRDQ5MThFRDlEREM1MkU1MjdDNDlBMjg0M0JBMzY0
-NkYzN0IwMTAzRUQwODM4CjVENjg4MzQ3ODNGMjlDMjFGQzY2RjU1QTdCMTFDREQxNTQ4MTAz
-MTBDQjBDMDUzNjdEMkYxMkQ3NDlGNUJBRkNBODZBRjE2MTYwRTkwRQoxRTY2MDlEQkZFQjMw
-MkJCNzM5MzIzNzczMUZGOTBFRjU1NUUxQTE5NEY4OEJCMDVGQ0VCQjZCMDU3MzcyNzMxQ0Yx
-RDE0Q0I0N0U0N0IKNjlBM0UxMTU4RjE3NDFEQTQ1MDU1NDFBODMyRDAzNjJDRDREMTZFQzU0
-QkIxNkU0MENDNjgyQ0U2MTMyRTM2OUMwQkFBMkFCRDdBMzVGCkMyNzk5OTg4MUIwMkQ5QzIy
-REZERDU2Q0Q3NTIwQ0I4M0E4Q0ZDQjRBMTdEQzc5OTA0M0YyNUQ2OUJGMzQ2MERFRUJGMThD
-MjU3OUYwNQoyQjY5QjlGRTVFNkI3NDY3QTE1REFDMTBGM0QzNTAwQjdFQjBENDFFOENCQjBE
-M0REN0E2OUQyODQ1ODM3M0M2ODFGQTc2M0JBRkZDNTcKMjRFMUI1OUYyMUFBODgzMEU3Mzkx
-RThCRjhDRDY0OUY3RjM4MjYyNjQ5MTQ1MDVBM0IzNjcwNTY1NUFGM0MzRkY1MDYzMzJBNDNE
-NzUzCkQxNUJGMEE0MTVENkM3RjhGNjUzRUVDMEE2Njg0MEU3QjlFNzhDOEFCMDU1NjQxNzA3
-MUNBREI4NjFEOUNFOTU5Q0Q0NjQxRUYyQ0RFQQpCNDUwNTg3NzUyQjRBQkU4RjFFNjE3MzJD
-NDlDNTcyNDE3NDZFOTEzQjk5RDIzNTY4RjYyN0FBN0EyMkI5RDMzNzJGMjRBOUYxQjhBQzMK
-NDI3RTU5ODgwOTA4NEQ0QkNEQ0M4RTI5Qjk3NTAyMEU3MzdGQkRFMUJFMUFGNzRDRDAyQkRE
-NzgxMzg4RjM5QTE4OUY2NTgzMDc1QTU3CkE1QjIxRTFBNUU5M0FEMTcwQzM3NjdCNTQzQkZD
-QzE1MkUzMjZCNzY4RDk4QkRERDQwM0ZDQUMwN0VBMzk1QTAxOUU2NDUwNjVCMEREOApEREFE
-MzM5ODI5OUFBQkU2MUQyMEQ4NUU5OUZCODFDNjNDMTUyMTJCNDk2QTNFMjNGNjRGNDBBQkU2
-MEJEODUyN0Y4NUE3ODkwQkI3QzEKQTMxRjlGQUQ1Nzc2Q0JGODUyRERGOTA5OTYzMEEwQjEx
-MEREMUZEQjg3RkEwNzRFQzU0OTNCQjIxODg5NDBGMjk3OUEwMUMxNDYzQURFCkI2ODhBM0Mz
-MzM5MjkzQjBFMUVBN0ZFQjUyMDMzMzVEMjU1OEVCQjhCREI2NUYxM0RDMkVCOEVERDZDMjc4
-NEQ5MDJENkIyMDEzNUY3Qwo4ODY2Mjk5MUNEQzkxRTJCOTk4MEZENjhCMTdCNjJFNDQ2OTM5
-ODRCNzY2MjQ3QTlGMTIxQTEyRTI4MEFFQzREM0M3NjVGMjg1NzMzOEMKODg3MTAyNjYwNTM3
-QUUyOEVCQzc3NzFENDAyQkUzODFFNkFDNzVEMDcxRDZFNjZCRDUzQ0MwMkVDOTY4NTFCN0Y2
-RUNBN0E5NDY0ODM0CjcwRjJBRjE4MjU5MkY1M0ZCQ0Y3RjNEMDg3OEUxNEJEM0E3MjYzMzQ2
-MTg3RkIzMjUwRjE3MjY2RjExMDYyQkRFNzc0QUEzOTk3RTgxMAoyQkE5QzdCQzM3QTBCNjlE
-Q0Q3ODgwNzA3MjVERTdEOERERTgwNEIzQjUzODAyNEYyRDY3REY3QjlFMDA5QTIwQzIzRkZB
-NUIzNkNFRjEKRjIzRDdBMTJGNjY3QTE3NTBCQkYyQjIyMkM4RUQ4MjQ5OEE5QzY0NEFBRTdB
-QzI1OTg0MEYzODgxNzQ3RjJCNEVBREU3RDk2MUU3NEVFCkExNzg2M0I3NDBFMUE2NzJGMjcw
-OTcyODczRUYzQkNEQTQyOTRFNzAwOEFFM0Y0NzBBODkxNTkwMDU0MzFEOUNCRDFCREVCMEIz
-NDIwMgo0MUQ0MTg2ODdCRDA0NEI5REVBMDlGNDgwMUJGMTE5M0IxMEE2Qjk2NDc4QzkzOEFB
-NjdDQkUzNTgwMTg3RjJDQzI2MDQ5MTJCRTZBQjEKQ0M5RDEwRTE1REQyRDAyQzU1QzZFRjgy
-NEU0RThEQ0QxQzFGOTI4NzFBQUU0QTMzNDU1RjE1RDcxQjQzNTlFMTVDRkIyOUY4RkZCMUZE
-CkYwODg5NzhCOTJCNDM2QThGNDJDRjgwNjFEQzk4Njk0QTc2MjdFQTA2ODcyREQyNEZENUY2
-Q0FFNEEwOTEwNkI4MkFGNkQwQTRGMTMxQwoxRDI1QTA2MjY0OUZFOEI2RkExNjkyOTM4NEQ0
-QzE1QzMwMTg3NUIwNUI3ODQ4MTM5MUE0OTdERUYzRDZFMjQ3NzY5ODVFN0I5RDAxMTEKODQ1
-MkIzM0VFRTA4NEExQTVDRUI4ODY2QThFN0Y3MDE2RDgyRDA1ODhDOUVDMDA2NzFEQjc5RjIy
-QkJDOTA0MjA0MTM2RjJBOTdCMjdECkIxRTIwQTU3MUE4OTMxMkY3RjFGREFFMUY5QUE2NkVF
-QjZDN0I0NzNGRUM5MEZGRTc1RURDQkI1M0NENEY0NjI1RDNFMDlDNzlBRjhBOQowODI3OTc1
-N0FDNDk5NUFCNTc1REM0NzYyQjMzQjY2MDhBOEE4NUQ1RUIzOUM1MkMxQ0E0NTIwNDdFRDE4
-M0EwMzExNDJBRTA2MUQyQzEKMUM4QThGQUM0OEI1MjM5RDI3RTE5NkFEMTk2MTMxNThDMkIy
-NEJGNjZFRjVFQjA0MEM1NzFCNjc3OTE5OTZGMThFN0M1RTQxMjVCOUNCCjUyNTkxMTMyNTAx
-RDRFM0U5QTQzQjExMUJFNzZFQzA2RTcwODY3NDk0QzRERDI3QzEzN0U2QkUzNUMzMkNBRTlD
-QTRGNUNFMzkzNEFEQQo4NjVGMThDMTUyNjk3QzZCMUNGMDYwNDUxN0FEOEM2RDJBRjRDQzAw
-RDNFMzU0RTJEMjg1RUUyRjA2MjM3QzlGQ0IwMkEzQTRBNjAxNTcKQ0NCMEEwRjM1OTE1NTY5
-QUFBNjRBOTVDN0REQTAwRUUyNzE4RTJDNjA3MkY3RTVEODhBODhCNTcwMjFERTRGRUMzOUM0
-NzQ0NjAwMDczCkIyRDgxQTY2ODEwOUE2NTE2NjcwQTFGM0VGNzhCRjQ2NTE4RTk1RDAyMjQz
-MDg5RDg5QTQ5RkRENzhBOEVFMTgzNTk0RUY5MzZGNzFBMQo4RkI1RjkzMzE4NjAyRDY0OTZG
-RjM1RkZGRjc5RkVBRTIyMzYzODZGMDdBQTg0MzAwQjA2N0E5RUQ0RkVCRjUxQjY5RkRGQkI5
-NzNGQ0EKNjIxMjVGRUU0NDYzQTA2QjhGRkNGNUM2NjI5ODRDMUNENENBREVDQzI3NTcwOTI2
-OEM0RkZBRTc3NEUxMkI2MTc5NzM3NjBFMzY5RDFCCjhDNzlGMDA0NzEzMTBFREJCMzU2OTAy
-MkJFMEZBQTJFOURFQjEyRTgxQzQwQThFRDM4MDNGRjNFNDAwOTMzQjUwOTA1RjNFQjIzMTU0
-NwoxNTc4ODcxNDg3Mzg4NDU2Njc4MTdGRUJFQjAwRDE3Njk4REJBOUQxRTIzNkQ1OTZEREYz
-RUJERjQ2QTMzNDY3NTdDQzAxMjY1N0QwRTYKQTBEQzc4Mzk5RkY0Q0E4M0IyNTQ1Q0YzRTM3
-NEYxNkRCMkE1REMzNkIzREY5QUUwRkFGRURBQzkzNzlGMEVFQTNGQTE3NUNBMEU5RkQ2CjJF
-MTFGMTAzNjlCMjFGQUI5OUQ3MjFFREE5QjEzNTE5ODIyREY5OTlCNTEyQTgwNjE1ODJGN0Mw
-RTgzNjExMkQwMjNDNDYxNzg0OEMyQwo2RjkyM0Y4QkJFMjcwMTdERTdDRUFCM0M4NTdGNkEx
-NTFCRDk5ODI2NkRGNjJENzg4NUEzQzM4MzYzRjU5ODY2MTQxOTFENjhDMjk4NzcKNTY3QjE0
-MDhENERBMUM1QURBOTFBNzVBMUE1Q0IwN0M3RDU4NDNDRjcyNDYyMzNCRkIzMjNGRkY0OTVF
-RUFGNzJEOTZBOEVERDhDMzIwCjU3Njc0NTM2QjA4RTc2MDQwNzQyRUFGNjVFQjBGRUU1MEQ0
-QjBCRkM2NjFCMUVENUE0MzZENjYwMUE4MTNGMzYwQkMxQTZDOEQ4REEzNApERDE1NjBGODY0
-ODY4Qzg4QTRCNzJDOTVDODJBMDMyOEQ0MTZFQTZBMkE3NUU1RjlBRTY1OEQ2MjM5RTU0RTc4
-NjZDRjhDN0UzN0Y5MTEKN0U5RDk0MEYxQTI0Mzk5MjRFQTYzMEMzMTA0MTZEMUExQjk1QzNF
-OEJDQkQwRjFEQTZCQjNGNUFDOTM0MkZBRDE0NUVERDk2QzQyNTBGCjg5QjVCNUU1RjEwNjdE
-NEIyRTJFNTJBMTgyRkEzODNBRDQ0QkM0REVDQTFEMjA3NEJCNkVCMURGQkU3REYyNUFGM0Iw
-MjcxQjAyN0IxMQpCRjRCMEYxQjU2RTgzNEEwNjY3QThCMzBDOUI2MUUzQjQ0MjgzRDU3MUEx
-MTY2N0E0REMxMEY3QjZFM0IzMzQ3NjRDQjEwMzU3MDkwQjIKNzRGN0JGNkI5QTE5RUNCQUVB
-QzBBOTQyRjk1RjgyQTYwNEM1MERENzFGMkNGRTVCMUI4NjhFNjlDMDc3Q0RERjVDODI5OUNB
-NkMxODE2CjkzQUIwRTQzRjg5QURCRjNCQjk0RTJFM0NGQjAxREU0N0JFQzlGQUE1OUVEQzVC
-NkQ1MDc2NUI2RUIwOTk5NTc1NUM2MDc0QzIxMDZBNgpGQjE0OEZCOTgzQ0ZFMDZFQjRFQUJF
-ODI3Rjk4Q0YxNTgzNzVBN0M5Qzc0NUQzRjc5MDdDNjk1MkQwQ0JGMjhGNUYxREREQTMxQThC
-QzUKNUEyNEZBMzVFNTU4NEY2MUY0QUNBMjU3NzNEODZDNDZCN0EwNDJCRjAwMzA4NkQ4ODc5
-NTA1RkI0RTRBODhCMzc3MjQyNzZFNUFFRTA5CkZEODI0Mjk4MTRDMEI2MDFDRTI5Rjc2ODFC
-QjM5MDNFNjQ2MTlCQTU3RDRDNzM5OUUzQkI3MzgxMDVDNjQwNDE2NUQxRkYyRTREQjY1NAoy
-NzJDMTExODU4ODZCOUY5Q0JCOTRGRTFEMUY3Q0NCQTZFMEU0OTQ0RDZDNTlFQUI1QkU3RjY5
-RkRDMTQ5NkE3NzlDNjMzOTFFMUZBNkEKMzhBQ0QxMUU4NkY2ODg2MDBGRTFDQjM5ODRCNTI3
-RkQ4NTZEQTAyRjhGMEQxRDI0N0RDRkMxNzIyMTEzOUMzMTI0OThBQ0Y4RDlFODEyCjRBNjRB
-NTExQUNCNjUwMUVBREU5Rjg3OTBENEY2RTlDM0I0MkJDMDRDMjNFNkFEMkE2RTZBNTQxNzhC
-QzM4REM2ODRCMDBGQjU0OUE5Mgo4MTYyNzA1NkY0NkI2ODM2QTY4ODk4MjExODc2MDU4Mzk0
-RDVCQjI2MzIwMUJDNjlFNjhGMDUwREEwMzhCN0Y4NkVFQ0MxMTdDMzdDNzQKQUFCMEM5QzRG
-OEI0NjUyRTJGODNGMDkyN0FEQjJBN0JFOTAzMzI1NUM2MzE5NTZERENCMTdEQjJGRTM3NUQ3
-OUJEODEwQUM0M0EyRkUwCjhCNTFEN0JBOTYxOTM1QjNEOUJCQzc4NUIwREVENjhEODRDOTBE
-M0RDM0IyMjU0MUMyQjNDMUE1M0RFOTlEQTE2RTZFQzZEMTQ3NkNCRgo1NTE0RTNCQ0FENDI3
-QzlDODg3NUFFQzU5MUJCNUUyMUEyQ0E0M0MxNDA1MUQ3MkMxOEJFRDczNjEyQ0U1Qjg4QThB
-NzFDMTE0QTU2MjMKN0ZFRkM1NDU4M0EzMDQxQTZFODcxQzhFN0RDQjRDQzQ1N0JBRTczOTBE
-RTY3NDk5MkVGMkUzREM1QUNDODA4Q0VGMUI2RjNENTgyMTRDCkY1MDI0NDE3QkQ5MDEzNDNG
-MkYwOTYxNTdDRTMxRUMwRUE2Q0JFODA4QzhFNTA4RTYwMDBGMDE2NzBFNTUyREUwMEE0RUI0
-RDdCRDI1NApGODQwQ0E2RUU2Qzc1QkQ5NkU5NDQzNTJEOUFFREVFNjk0MUNFM0VFOERBM0U4
-NTFEODExMzA5RTNCNUVDQzYxMEU5OERERUUyNjI0NzMKM0Q2MURCOTYzNTMxMjI1OUNGREE4
-OTUzREY0RDAxQTlCODU3REI2NTMyQ0VENURFRjJBREI1ODMwQUNEQUMzQkRDODlCOTU4MzQy
-NTVDCjQ0MTMxMDBCMTlDRjQ5QTU0NzVDNUM5ODVGODJEMUM0Mzc1MEU5MzNDNTlDQkMzRjky
-RjU3ODVFQjU0MzM5Q0Y3NDJGNDRBMkI0RDc3Rgo2OTQ1OTJDRTJGOTI2REFGRTFGM0QyQ0U1
-MkY0M0MxNkEyMzMxRTAyN0ZGM0UyNEMxMDJEMDk0MTFCNTc4QjE0MzU4MkI1NTEwMzI0N0YK
-Nzg2NkIxQjg3MTI3NzYzRUFFOUJBMDYzNzQ2Qjc4NUUzOTJFRDExRThENEE2QzI1QUUzOURB
-N0FGNkYxMjUwNkJGOUFGQ0FCODlENzdFCjE0QzY3NTdBNkU4MDZDMEYxQTE2QTBFNDJFRUNE
-Q0UxOTk5NkFERURFNDNFNDc3Qjg0RTUwM0M3QURFODRCMUQ3OUVBQThDM0UwRDRDRgo5NDM0
-MTZCNTVFQUNGNEQzRTYyMTc4QTI5NDg2QThGMzExOTA3MjgyMEYzN0IyMDRBMUJENDgyNUU3
-NTg2NTBFNEIwNjYwOUI4NjdDREYKQTM2RTUwQTgyMzZDQjlGQzg3RkQ4MTNEOEU4NDcyOTRC
-NUI1REQ2M0RCN0E1NTM5MTdENTgzODNFQUY2OUJEMDk2RUQ2NTg1MzZDQTlDCkI4M0RBOTY3
-RUNDNDY3RTgzMjlFQkZDNDUwRkM4NkM5NjBEMjNBQkZFMEE2Njk4Mjg3QTU0MDVGNTQwODNE
-NUM2QTk0OUY3M0MwNUVDQgpERjUyMUJGRDBBMzU4M0NEMzhBRDdCMjMyNEZFNTc5NTgyMTJC
-NDRFQzZDQkNGQkU2NDkxRDVGMjdGOTFBN0M2OEJGN0FFOTEyMzlCQzEKMDZBMzdEMTQ0Rjcy
-OEE5Rjk0NTJBMTdDM0UzQzgxNTAxRTYxOThCQUU5NThFMzdDOUI1MEMxQUYyN0MxOERGQzE0
-NTc5NzcyRjlGODc2CjlEMUM0QkExQ0U4NkE4OEIxRUIwRDVFQTlGNTFEQzA4RERFQjU3MzdB
-Q0RENThEODU2Njk4Nzk1QjFCM0VFMjVFN0JEQUM5RTUwQzZDMwpENkNFNjVGQjM0QUY0Qzkz
-QTQ5Nzk2MzI0QjdEQjQ0MTBBNTA2ODAzOTJCRkE1QUFERjIzNERGMjU4NjE3NkJDOTlBMDRG
-QkE3RTJBMDcKOUY1Rjc5QzdEOEFENjhGOTNCMkYzQjdCRUFFQUMxQ0Q0RTQzMzhBOUNEMDIw
-M0QxRTA0QkMwRkMzMTY1RkNBNDEwM0VFQjcxREZEMTE5CjUwNTQ3MzQwQUM4MzYwNUI4ODVD
-MkYyQjIzNUJCMUZBMUY4RkEwQ0FDMkVCNjQ2MTVERjVDMjRGQjJDRkEyNTU0QjdGQzJDNUNG
-NzQ0MAozQzVEQ0VGQzIyQzcxOUU5ODU1M0IwRUNBMUQwODQ4MUExMzBGREFCNjE5OUNGRDVG
-Q0JGNjEwRDRFMkY1MUExNzYzMjI3MEEwOTZBNzAKRjFFRDIzNDVFMTk2ODQ0Q0FGQUIxQTk3
-OUZBMUNCQTU0NTE4QUZGQjUwN0M1OEU4NkUyQ0NBNDE3ODE3MkI0ODhEN0FENjEwQjUzMkU3
-CkZCMTA2Rjk0RTkwQzA2MkZGRDY3RkREMThBNzJCM0YyNjUyNDUzODA3OTAxNzM3REI4ODU5
-MDM1ODg0RDI4OTI2NkU0MDJCRjhGNDcxOAo1M0FBQjY4MDZCRTFCQzM5RkZEOTc1NTJCMDJC
-QjA4MDkyNkY5MDk1RDU2RjJFQzJDQjA0OTgwQTc2RjZERUQzMkI5Rjg3OTAzNEFFMkMKQTYy
-MkUwRTIxNDdFMzM1ODRFREVBNUQwMDNBRjc1MTI1NUI1MTk1OTk1NkQxRTI3Q0ExMDhDNkVE
-QTlDRjVDQUY1M0NDNDY0OTg2MTIzCkI5NTgyRDAxNzZCNjY4OTkwNEQ1NzQ0QjkyNUYxMkFF
-RTE3NDkyRUQzRkZGMDQ4RTA3NjExOUZEMUY4RkQyQTRBMUI3MEE2MzY5MzEyRgo2NEY0NDY2
-NEQxQUM1MTk0NjRBMEYyQURGMzAxOEIzOUE4OEFGMDdDNTJCM0NDQkM5REVCRDk5MzdGQjIz
-MzA5MjhDMUU1RkY1NkJENzMKQzRFQkI5NDNBMzAwM0U0MkQ5MTNDMTVFRkU1MkVDMTdGMDFD
-N0YyNjNGNzk1NDYyQkU2MDVBMjkxMENFQTc5QzZCNzI0OTVDQzU4RjgxCkNFODMyOTdCMjEw
-NjMxOUVDNjA5N0MzOEE3Mzk0Mzc4MTY0Qjc3MzU1MDA0NTM5NzRBQkE1RTNCRTA0NTQyODkz
-QUUxNUNENUIzNEFENQowMzJCOEQxRjJBQjY4M0M3NDNCN0REM0NFQTFDMzlBMDAxNEU5MjY0
-RTc2NTU2NTE1MzkwMDNBMkJEQzU4N0YzMUI2MkUzQkUxQjdGOUQKNUYxMzRBRTc2OTQ5RjVB
-QTYyOUQ1QTYzRkMyMzk5MjAxODAyNDZFQTFGRjYxNzZERDQ4MkUzM0FEMjU4QjE1NUQ1NUNE
-NjZCNDRBMjgxCjcyM0NEM0NDQjY2QTM2MkYxMUU0RDU4RjlERDAwNkNGMTY1MUQ2QUZEOTAz
-QUY4N0U3MjU0NENEMzcyNTY3MDIzMkQ3RERBOEFCMTkzRAoyQzA4NzM2QTQ5RDFGQUFBRTg2
-MUE2NjRBOURBNDI5NzcyOTQ3MTA3RjI5MTdEN0U3NzE3QTQ1MzVENDY0RDM0QjNDNjVCMUU3
-NzQ0NEEKNDcwRUFDQTY4RTREQUIxMjI0MjBGMDFGOEE3RDIxM0QwMDQxOTA4QTg2NENBQTZB
-NjIxRjE0QzE0RTQwN0YwQkM1Q0M3MENGMEJDNEZDCkNEMkZBRjhDRDBDNUQ1RkIyMDgwMDEw
-RTAzOEMwRjExOEQ3NjJDMDk4OTg2ODZEOERCRkMyOUNDREQ0NkYwOEVGRDU5OTMyODEwMUJG
-NQoxNkE1NzM2RjIwQURENEFDMUMxNTBCRDNCRUFENTg1RDFEMzYyMjYxQzczNUYyNENGQkJE
-NEI2NDY4MkUzNDkyNkNCMDRGOUQzMUUwOUMKQTYzMzVBRUIzQzQ3REUzOUQxNjAwRDdGNjIy
-MTNBNzFDNzRBMEY4MTk2NURDNUIxQjNENzIyNzYzNjY5MEI4ODJGMzgxMjZEOTAxQTlDCkU0
-MThCQzZEM0Q5MjNGQkI4MDE3NjFGRTdCODFBNTVERTNGMkU0MjY4ODI0NkEwNjQ0MUZBRTE0
-RjIzRERCOTkzNjcxOTAxRjk3NDUwQwpFQTZEQjEwQjBEQjEzQTIzQ0UwRTIxQzI3QzFDRDZB
-QjUyNEQyNUVGQzEzREFBNDUwRkQ4MEJCREM2Mzc2MDY1QTE0RDc0OUQ0OEVFMUUKOEM4M0I4
-MzNCNTEwMDI3RjlDODlGNzMxOUIxNTA5QjY5OTE2MkI3RjlDNUI4QTczOUFDQzEwMDY2MzlD
-Mjk3QzIzQjhBNjYyMTNGNDdFCkE4NzNGODdGMUNDMTlGNTgxRUMwMjZERTU4NEJDMDQ5QzQ5
-QkRDRkU4OUMwMDE1MDRGNDFERTE3RDg0Rjk3MzgyNjg4NkY0RTUyNDZCRgpGQjg3QURGMDcy
-NkNFQzdBNEYxNjdFMDM4NEI5MTUyNjg5NEMyRDAwOTBEMzhFQUIxNDYxQzYwN0VGMzU5RTc0
-NjI4ODU0REVFMUFFQzAKNURBODk0NTk5NUEzRDY4NjcxRThCREQ5OTQ2QzIyMjI5NEIwQzQ2
-ODBFRjJGREMyMjRBMEM3QUZBOUU1NDY2QzdCMTQ1N0NFM0RDN0I4CjdCMEMzNTE3REI4MzNF
-REQzMDJCQUNGM0MzN0JBRTQ2MTdCQTYyMDZENUQxQzc3REQ1MzU0N0E3QkJFMEM5NDhEMjE3
-MjQ2QzI5NEM3MAo1QjI1NEE5NjBDQzVDMkY1RTM1MTIwMDM2MzU2RDc2MDQ1Mjg4NzIzN0Q3
-MEQxRTJGM0Q2QjY0QTAxNzFGQzU3ODg1OUFCQjYyQzE0NDQKRDNGRTA3MTlERDg1RTdBODgx
-MkY3QTVDMEI4QkVBNzIwN0UzMUM3QzU1MjgwMzQ4MTcyREM1RUIyNzU4OTgwNDRDMDBDMkQ5
-MjU0NUEzCjM2MkY3QjQyRTA3M0M3NUJGMTc5RDEzQjBCRTc2QjQ4MzZEMDY5RkUwMUMyODdC
-MzY3RDAyRERDRUM5NDEyQzJGQkVDM0Q0QjMyN0ExMAo3NjU4Njc1MEM4OTk0QUNFMERFMTcz
-MjdCMDFGNzRBMzgxM0QzRUY5RkJCOUM5QzU0MTRGMkU5Q0MxREQ5RDA2Mjk3RDE3NERGRDJE
-RTkKQ0U3QkM5NUY1ODBCNEYzRjI2ODMyQUVFNTM1QUMxNkEwODdBMDEyREU0N0JDQzY5MkI3
-QzA1QjYwMTVDRUUyMjEzMjNGN0VBQTE5MUVCCjg2RkE5NERCRUFDRjA5OTZBOEM4RDAxMzMw
-MUE3QkY2NEMyNDM2MTM1QzNDQ0YyMjk0QjFFMjI0NjE4NDI2MUI5QTZCRDJGNEI5OEE5MQpF
-NDFFRUY5QkQwNzAxOEY1Q0I5QjAwNjBBQTc2NjUxQ0UxNDA1RTA4RTQ1NUJBNjg5Q0QyRTZB
-MzEyNzAwN0JCNEIzMTFDMjM4MDQ2ODkKRUNGNjBEQTc5NzIzNzNEOTY1MjUwNDJDMzYwRjVE
-RTA5RENGRjk0MEU3MkNENURDMEE5MTU0QjYzMUFDMUYyRTM4QUEyQjg1NTFCQkM5CkFENUNC
-NzRDRDg2RjUzODhBQTc1QjZEOTJCMUUzN0E0Rjg3NUE2NzE0OTA4Mzc3RDc4QkM5NkRGQUI3
-RUJFMDQ3QkU0RDQyQzQxNkZERQo1MEEzM0ZDQTlFNjU2MDBBMkM3QTc1NzVENjA1OTA4MkMz
-RkEwREYzQzMxRTgyRDNGQTM5NjlDRTQzOTY1RUE0OUYwNjYzQ0YyQTJDNzEKRUU0QUQ1QzdE
-ODUzQjUyQjZBQTBGNDFBQjNENDdFNTEwRDhCRjY0QUZCMUU4QjhGNzgyQzk4Q0QyODdERUI5
-QUZFRDM5MzM1NTIwQjcyCkI4QjVDRkUyQTZCQjdDMUFCMEVCNzQ2RUNGNkY3QUY4NkMxODM2
-MTJCMERDRDU4M0ZBQzY3OEQ5NjAyOTU3RTYxQzE4N0YzOUIzQTY1NApCMjBDNzkyQkRBOUQ4
-MUZBOTc0QTlFODg2NEMxQTg2RjlBQjcyOTE4RkVCRkU0NzUxNjI5OUFFMUU5QjI3RjQ2RjND
-Mjk1OUM1QUFBRDAKQTVDM0MzMDY1MTE0RTg5OTU2RjVGQTM2RTE2MTc0NDcwREI4REIyRkUw
-ODM5NkVBNUVEN0Q1MEFGOTg5RDhEMTQzM0UwREU3MTE1QTQxCjAxMTVBREUwQkE3NEU4QTRE
-QkNFM0Q5Qjg3Q0E3NjdBRTM4MDI4MEQ1MUZFQTlBMEY2MjNBQjE3NUMzNDYyQjk0ODJERjZE
-MEJFOEY4RAo0MjA3ODJEQkE2M0Q1RjQzOTY2QTg4RTM3NTJCMjcwMDQ4RUFGRThCQTI5MUU3
-MEI4QkRGOEZCNDMzQTVBNTdDNjY5QjRGN0QzNUM4RDcKM0M1MjcwMERFRkJENENENDJFMUYy
-QzhFNDQyRDE5QzAzMENCMzVBRDY2QUVGN0VGMDIzM0JCNEUwOEZDQjQ4Qzg3MjM5OUFGODU5
-OTM4CkEwMkJFNUY5NjM5MUZDNjRFMjk3QUM3OTBENzAzMDJENTE5NzlDRjU0NTlGNERGMkE0
-MUIyNzU5MkQwNTM4REJBQzM5NEMzN0VDRjBFMgpDMTE2RDBBMkEyQzZBREFCNUIwNTQyRjg2
-Q0U1NDM2Q0Y5ODlBODY5NTY2QURFNEQ3NjRFNDIzQkU1ODNBQ0IxMjc4QzdFRDM2MkMwMjMK
-RjhBQzQ4NTUyOTAwNkExODkzREQ1QTk4RDA1MDU2NTU0M0VENkE0RjNCMDMwOTJFMjdFODkx
-Mzc2NUU1REVDMUZGRkJBODA5ODIzNDBECkFBQURDQTdBOTVBMjRFQjVGMzkyREE5OUZFM0U2
-QzM0OTQ4REQ0Q0JDNDY5QkYyQjUzQTUwRjE2MkQwNTk2M0Q3M0U3OUVDODhBOUQ5NAowNTIw
-OTk0MzE3OTNDRjhBMENDQUVBNUM5NUIxNzQ2MDYxNkExMzkyNzUzMjA0M0JFOUZBNzlGRTAy
-MzFENTdGRTg2MUZDMEQzMkRGOTAKRTlGM0VBNUQwMjhFMDYyODE2MThFOTg0QTE2OUY1MDA2
-NzU2MzQxQzFCMkNDQjlCQjVDNkNCRDJFREY3MUE1MjQ0RUU2NDZEQkVDRDI2CjBGNTQ3QjhD
-RjAzRjI2ODlFQjdGQURFNTZEMzY0M0FCOERDN0I4OUE1MTk0NDE5ODE4RkI2N0RENUM2NkU3
-ODY2RUJCMDEyQzM2NUUyNwpCRDRCRUY0QTZGQThBQkU0MjlCRUUzODcxNUFGMzVBQTNGMjc1
-MUUwRkQ5ODBEQ0Y2QUY5NEE4Q0Q2QTc2OTRCNkZBNzFGMkZDMkZFNjEKODc4ODREMDI5RUE3
-QkI5NTFFQzFGRUMzNkMxMDAzOTU5NDNDOEEwNDBFNUYxMzI1RUY4RUI2NjhCMDg5OTlGMDQz
-MUMyQjM2NzYxRkZBCkY2RTIxNzkwRTUxMTEzNTI2QjkyREY3NkFCMjJCOTc2MUIxMUEwQTY2
-NzNDOEUwOTNBREJFRkIxQjE4RkI3Q0Y4MEY0M0QxRDM4RjE3Ngo3ODU5N0I0RjYzOTA3NjRE
-NjBBMUM3OTdEQzA5MjZERDAxQjdEMDk0NDhDNjcxRkE1QjUxQjkzQTU4NjQwRUVCNjJFODBD
-NEYzODEwRTkKOUFDOTk5NTBEOEFFMzE4OTE1MkJBMEFDN0Q4RkE4NDMxREZGMUVBM0NENEZE
-MDdCMjcyQTU2M0U2N0MzRkRDMzE4OEJENjIxQkNGMEJFCjQwQUVFMTkyQTAyQkE1RUMzNkM1
-QTQ1RTFFMTYwOTdGNDI4NEI3NEFGQ0Q4NjkwQjI0RUQ4QzE0RDI1QzdFREE3Q0I2MzkwNDNB
-MjMxNwo4QTU4MDk0NzMzRkU3Mzg4N0Y3RkJCQzk5NTE1MEI2RTU0RjVDQURFNjUzMzhBMTJB
-MEYzODI0OTg0RjVCMTZBQTBDQkRGRjMzMEE0MDgKNzExNkVGQzE3OUREMDNDREZDMjMxMkVG
-NDlGQ0Q1MDE3MzI4NzVBOTYxREZBNzVERjJBRkVDMDcxMUREOEEyMTVDNjlCOUVGREUwOTVF
-CkIwMzI2MUM2M0M4OEI2QzY2QzNEQkVEQTIyMjM0MjA3MTMxOTJGQzM4QUYwREQ5QzRFNDJG
-M0JBRDlFMTMwNkFDODQ3MUFGQUI4OTUxQwoxMENDM0ZBNTFFMDk2QUYyOEQ3M0ZBQzVDRkFG
-NDEwRjgzRURDMDhGN0FGODZBMjgwQTIzMzY3NzQzRkVDQTcxMDZFRTBENDYwMjYxQzkKQUVE
-RTgyNkQzQzFCMTZEQkU0QzBERTBFRkY5Rjc0NENBMjYyNDZERkY5NTBCMEZENkYxNDYwMjUw
-M0Y1OEE0RjNCNzc2RDk0RTNDRjQ3CkNEQTAzQzA0RDMxRTcxQkQwMjgxQzJBNjZGMkQ4MDIx
-QTVFQjI1MDBBNzBENzNCNTU1MTlBQUI4N0RGRDk0MTQzQTYyM0ZCMjUwRDBDRAozMUIzOEQ4
-RUQyQzVFRTVDNUE3OERCMDIyMENDNUEwODEwMDNGNjhEODM2N0YzNTAxMTVGREIyNEYyQTE5
-MUFGRTg1QjlGOEM5REE2NTQKODRDM0ZEQzk5NDg4OUY0MkQ1NjE2Mzg0MDRDQUY4OEI4MzFF
-NjVENkQyNjIzQUE4RTgyQTA1MERBNzI3Rjg4NkVBQTdEQkM0MDEyQUNBCjUxRkIxNUNDNDgw
-MTZBQUY5RjgyMDEyRUNDNkIzQTRCNUM5RjYyODc5NTg1OERCNzI1QjgzOTc3MjI3NDlDMUJG
-MDY4MjY4M0E4Q0Q2Qwo1NTE4NUEzMEMzQTIxOTEzNkM4NTMwQ0MzMkM4RTU3Q0QzRjY2Njc3
-NTQ5RUYzQTlDNThCMDM2QzJDRTIxRUEzQUVENTg5MDAyMzAxNzYKOEZBMUNGRUUyQTVBRjQx
-NEEwOUY1REMzQ0E3N0M3MEFDMTU3MjBCQTA4QjVDNDk4QTVDNkY2QzUyMUMzNjQ3NURCNkU3
-Njc3ODE5Mjk1CkFFRUY5NUUyRkM4OTFFMUM0NUNFNzI5QzhBMTAzMkUwMjIwMUMxRTExMkRC
-RDc0QzMyMDNFMkZCRTM4OTMyMkQyNjZEQzJFRTE1NTE5RAoxRTdGMDkwN0M2MTVGMjI4NzMz
-RDI0MjdCNTVDMEQzNzM1QUYyNUExNUYwRUIwQTdGMzM3NDc1NTQ1NDg2OUNGOEQ4MjVDOThC
-OEVGQTIKNDVBNDRGQTcyNkFDN0ZEQ0NBMUI4NTg1QTZFRTY0ODk3NjQzMTM3QjY1NjhDMEQ2
-RUM5ODU5MDJDODcwNzgzRjI2MDJENTcwMTc2NTkwCjBFNzlGQzdCQzVBNDBEQzI5RTk2RkU2
-NTU3NUNDNjNERjFFNEYzOTQyNUIwRUMxMENDMzcwNDVBMEI1RkFFRDI0N0MxN0VGOTE4MDQ5
-Mgo0Qzg4OEEzOURBQTFEOEYyOEYyQTY4MkE5QTUyMkQ1QjhBRTY2NjhDMDJFOUUwNEUyRkRE
-OTM2RTJBMENBRDFEQUMzQ0NENkUzNkYwQUMKMUQyNkY5QkIyNTZBN0FCREQwQjUzMkI3QjQ4
-N0MxQkNCOTNBNjExNDgyMUExRkM4NUVBNkRBRTRGQTg4OUY1NTU2ODBBOUVCODkzQjJCCjhF
-NjBGOTk3MzQzODNFQTA2MDVBNDhBMkJFQTA3NTJEMEM3QTQyQzM2RDBFQzI1MkE1MjJFNTUz
-NjFCRTQ0MDlCRURCQkM1NTAwNDI4OQpBQ0VGQzhFMTFDQzk4OTYwOTUyMUNGOEY1NTYxMkYy
-NTAzMEM1QTM4ODM0MEZDQ0E3OTFGMUU0QzE0RjJBRTMzMzM1ODFCMEQ4MTkxMUEKQTA2RDIy
-RTQzQTVDRDU2NEU4MUVGQzA5OEYzRDhEQ0QxMDdEQzg0QjI3QjZDQUFEQkY2Q0VCNzM1Nzgz
-Q0Y0NTM5NDNGNjA4OTc2NjBDCjgxOEUxNDU3MDE3QTU2NTEyREFEODBDNjQ4NUY2NzQ5NzI0
-QjgzRERERUVFMERDNThBMEZGRjlFQzcxRjBGQ0NEOTNERTlCMkRGMDcwQwo3NjZDRjFDRDMw
-NjI5NjJDRjFBRTIyOTlFQ0Q5MDkyNEE4RDdDNDg2NDFBMDc2NEQwMDBEQkNGQ0JFQTMyMDVE
-REZGNjQ2NUMxNDZFQjIKMkU5OTA3OEVBNkNCNkY2MkQ2ODdCRDczMUU1NkVFNzA4MTU3MDkz
-NUZCNDNGMzlGRUVFOEY4NkVGOTEwRkYwQjk0NENFQTg3ODk5MEFDCkY0NkM0ODZCOTc2RDhE
-RkU4OTA1QkFDNkYyQjAxQzY5NTQxNjZGNTA4NkM0NDgwNEM3RkY2NDBENjg5Njk3RTFCRjZF
-Q0QyRDZGRjIwQgoxQzY5NUM5NkM3OEI5MjM2MzBCOEMyMDY0RjRDRjU3NDI0OUJEODEyNDk4
-NUVDQzBENzYyRUQwQkZCNTJFMjA0MkVCOTAwMDEwREFCMTgKMTM1Mjc0MTA5RkExMDE1Nzcx
-MEZGM0I2OTVGREEwMjExRjJEN0U0Q0Y3RUEzOERCRUQ1ODVGRDRBNUE2RDRGRkY0NjBGQTJD
-MjJBQjE1CjA1MkQ0MEVGNjBBMzVGMzYyNjU2NDI1MDJGRDBDMzdBMjY4MTMwMUM4NjA4MUE0
-MDE2RTk4MUUzRjZBMTg0QTUxMzNGNEExOTZGMzVENgoyMzQ0MENGREVBOTlGNThDNTFBOTc0
-QzE1QTNBNkI5NkVGQ0EyNUQxN0IwMDgxRTY0NDFBQjJFREZBMjU0ODU2NUI5RTcxNjQyMjkw
-QkQKN0MxQTcwNzdEQ0IzNDYxNkE4RkZGMzVFRTRFQUUzNjI3RDJGMURBRjUyMDIzRTE3QjE4
-NEVFNEY3NEMyQjZGQkE2M0QyMUZBMzQzM0YxCjQ0QjUyMTU2NEI4MUZDMkIyMEQ2NDIzNkRF
-N0ZGQzA5NzgzNUFDM0Y5RTMyMzYyRjA0RTMwNjFERjg4QjZBOTkwMUMzMTg0MEUzMUJDMgpD
-NTkwNzA2QjRCNzM0NDE2NTQzQzNCMjQ3N0U4MERDMEY0RkU5NTE4N0IzNkU1RUJFMDIwNzUz
-NTBGRkY4NjQ4NkM0ODU0NDNENDhEQ0QKMUZGNEFGMTg2MjQwMzAxMUVBNjMwQTA0MDM0RTBB
-MzRBQTdEQ0QxOTI2QTJBNEExQjUxNjBCNzhCMzEzNDQ1MTYxRjBBNUJBNjU2RDBCCjY5QTI1
-RjlDQTMyQkFEQzJBQjBBNTA3NkQ0QzYzNTdDMzkwM0E0RDQ1NzQxRDQ0QTVFNDAwMEY4NTEw
-MkZFRkY0NTEzNzU5NUM0MzhCMgo4RkMyQTVFNUVDMkE5REYzQjQ4QjA4QTk5RUMyRUE3MTVE
-RTIzQzM3QUE2MDNEOUZDNEZENzZBQUIxQTM1ODMyNjM4NzY1NDRGN0FGQ0IKOUI2OTlDQUE1
-MTc1NUIxQzQ4NzFBODc0NkZGQjYxODMzMzlBRDg1M0MyOENFNzIwN0U3NzJGMzI4NkY4MDE5
-MDg3OTVCRDhDNzAxMDMwCjBBRjE1MzQ1RjU3NDY4NEQ4NzgwN0E4RDBCRjdCMDE1MDMwRTky
-MTE2RTVBMDlDREIzMTU0NjBCQzNCNTk4RDU5RUQ3RjNCNTUxQzFGNwpDOTYxNTJERkY3QkM4
-RkQzNTZCMkUzOTFCMENCOTI3MEZBRkI5ODZFMTFDOEVBMjM1MEI2NzJCRDZBQTM2RjA5NjdG
-NTdERkU5OENFQkYKQTlBQkZCQzdCNUQyRUVFRTk5NTM5OTUxNjk5QkY5RURDNUNGMjFCNEU3
-QzY2QTkyRTFDNDhBMDIyMEE2REUxREMwODQzNUJFOTRCN0VFCjkyQUQ2RDQ4MjI5NjNGRkY4
-MTU2RTlFREY1MjQxMzJDMTdGRDIzNkUzNTU4MERENkQ4MUEyMDFCRjgwRjJEODkzQzlENTZC
-NTM2RjRDRAoyQzA2M0MwQUE3MzVDRTg0NDEwMTdCNDk2MDI3NTNCNzc2QTI4QkE1MEUzMzQy
-NjgxQzY2QTg4MUJBRUQ0OTRDMzFEMDY1NzA0OUU0NzkKMUMwQjE4RjcxOTBCMUNENEZGQkQw
-QTA0NUM5NzA0Q0FFQTkyOTJGQkE2QjYyQ0ZBMkU1Rjg2NzRCQjE0QUY4NENCQ0E0MkZGM0RC
-NUNCCkI1QTM3RjIwOTI2QjE3MDY2NzExMTYxNjMwOUUyQjBBNDQ5NEFCMkY2MjhDOUZDMEQ2
-MjZGMDJDQzlBQTg5NENEMkU2QzRGQkU0MDcyNwozNzE2ODA5MUFCOTUzNkUzRUU2RDBENzNG
-NTUxRTMwNTM4RDdCRDdGOTE0RDlFODE2MDQ0QjNDMzdCQjM3QjIyRjAyMjFBRDVGNzE1QjYK
-RjEyODhEN0U0REYyRkU0REFGNEM2NUQwOTdCMkE3NTdGMEVBOTc1NjVCODQzN0I0MkY4NjZG
-Q0MxQjZFRkQyRUZERThBRTlEODg4MTRCCjVCQkRCQUJBQUZCNjA2N0YxMzgyRUQ1QTU5Qzgw
-M0JFNUE4RjM3RERBMTk5MTc3RTFBRDBFQUE0OEUxMjQ5Mjg4QjY1RDI4MURFQjIxQwowNTFG
-QkVBNzE2NUFFNUVFOERBOUMzNTg5NkI1MDA4QTY4M0M5NkFDQjQxRjg5MURBRjZCMDdBQkQ4
-RjhDRThDMEI2MEYwMjQ0RDRGNDcKRkMzMEY4NEFEMDc5Nzk1RTZDOUNEMzVENTI1NUM2MEU4
-RTBGRjczNkVFNThCQkJBQzAxOURERjM3MDk5MkY5OEQwRTU5NUZBOTJFOTExCjc2NTlCNzY2
-N0VCQzEyRDJCMDExNThFNzgyMzFFNjg5MzZBQzgwMDNBMUI2MEIyMEE4NUU4OUY2MjU0NjEx
-MEUwOUE3NTE0QjQ0N0M3NAo0NDdENkM3NzA3RkVEQTM2MzZGM0IwMEM0NzBDRTBENEEyMzMz
-NkM1NkJCOEIzNTMyQzNEN0I5RDdFRTRBOTQ2ODRERDc4Qjc0NjI2MzQKMUY5NjgzQUQ0RDgw
-QTM1OEI2ODRGNTIyRTg0OTc1RDEzOTZGMDE2M0E0ODU4RkEyQzE3NTQyMTk3N0U2MkVCNTFF
-N0E3MzM3NThCNzZDCjZGMzc4QkYyMzU4NjBFODA4RDkwNDMzQkZGREUwMUVGMDk0ODAzQ0RC
-RTU4NTNENkI3QTRCMzBBODVFODNGRUY1RjQzNTNGQzFGODE0MwpFMTNBMjU1NjAwMjE2OUY4
-NjA0OTQ0NkQ5MkM1NDg1NkQyNUE5MEYyNzBFRjk2MzYyN0JDNzg5MEEwMTU2QzIxRjNBMkFG
-QkRDNDVCRDAKMEM3QTRCQ0U2QzA0QkJFMTkwMzJDOUNGNzJFMjYzOTVEOUEzMUUzQzVEQkQw
-NjFDNzEwODI4MzgzMEQ0Q0IwQ0VFN0Q2REVGQzBENjQyCkRFMzgzMzNCQjcyMTMyQzlFOTU2
-RkQ1OERGNEI0OEM3NEJBRTVEOEU5NzYwQUJFQTk3NTIwOTk0QTZGOThDNDJDMDE3NjAwMTFC
-MTlCOQpFM0RDNzk3ODlBOUJFNzUwNTI0NzdDOTZGNzgxRDMwOUM3Q0E0NDkzOUEzRDBBNDU4
-RUYyNUQ1NDc1Rjk5MzgwNDkyRTUwOENDMzZENEEKMkJCMUFGODdCOEQ3QjA2Mjc1MEQ4RkMx
-Rjg3Qzc3NEE0Q0Q1RURGQTBBN0EwNEU3RjlGMjczRjkwMzE3RTJCMDE3NEMzOThGM0U1ODNG
-CjA4NUFCNEU1ODIwMDg0NzAzNTI3NDM1NzJBNzZBNkVBQUEyREUzRDBGQjI1MTdGQUE4MzJF
-RUYwODc3MjFEMjA5MkZBNDNDNjE2NURBQgpGMDkwRjU5QkY5RTFERjJFQTQ3MTcyMTEyODVC
-NTFDN0NFQ0YzRURCOThCNEY0MTdDQTAxNTY4ODhGNEE5NURFNjdCNzMyMTkyNTZFRjUKNEY1
-NTMwMzhENERCREM2NERGN0I3MDRGMkI4RUE3QTM2RUE1QTQ2NzBFM0ExMkNFNkUyNjg2REI4
-RUU2NTFDNkY1RjMwODcxODM1MzA0CjU0Q0FEQTAzNjMwREJBQjQwN0I0NTcyMzg0NkMzOTlB
-MkU0N0M5RjdFQUM5NUM4NkY0QUQyMTE5RDQ5QjYxNkQyODIwNUNCODgxN0U0Nwo0QTkxQ0NC
-NTg2MjlCQzlCMkRFMEExNDNFM0VBNzBERTI0MjlGRjgzQTI5NzJBREY0QjhDRUUwREJGMEIy
-MkJGNDdBQUU2NDM2MjdEQUEKNTY1RkY0NzNDNEYxRjdCREZEOEQzMjBFQ0U0NzIzNTJCRjAz
-NzE1Mjg1NUZCOTA0NjcwNUQ4MzE5RDc4QzNFOEQwRDZBMDk1NTY1QzRECkFFQjJDMkE2MjFF
-RjgxNjE2RkVBNDZDRjhCNTFEMEIyM0E5QTQ3QTlCNkE3MDQ2RUMyRjUyRTFBOUYxRUE2MTI1
-NzZFNkIwMjZDREUwMgo5Q0IxQTAxNjhEREU0QTcyOUREQkRCN0Q5REREMjUzNTAwQzY0NEUw
-RDRENjgwRjM3QTA3OTMxOUJERUJGQzlDMjQ3QzY3NUU4MjAyRDIKQjA5NjY5RTNEOTBGNkYy
-REZDN0M2ODk5RThGQzlFNDgxNjdEMjkxQkE5RDBCMzNCQTBGMUYzMzFBQjY1Nzg3MzRGMkE0
-RDI3QjlCRTQwCjkzQzFBMTM1MUY5NTBFOTlBODA1RTJGMTZDOTAwQzYxQjdBMUZDQjNCM0I2
-NkY2NkM1RDA3NDAyMTU5QkNEQkQxNUYzMEM1OTkxNzMxNgoyNTVCNzdFMEVCQUEzQjRGODFE
-NUFFRDQzOEIzMkJGODE1Qzk0NzcyRkREQTEyM0VBNEJERjI5MDgxNDIyQ0E5MzRBOEJFRkJB
-OUZBQzkKM0VCQTYxOTQyNjVBQzU5RkJFMEI1QkIzQkIwNTZFOTYwNTVBOTYxRDU2MjlEMENB
-ODhFRTBBNjcyQjk5NDY1NDJDQTFBRTgzRjFCQUQ1CkJFRUM1NzMzNkU0OTFFODA2N0VGMjYw
-RUI4QkRFNjM0RTgxNjNEMkEyNjNCQzgxNTk2OERGOUVCNzc3MDQ4NjUxOUMxMzIwN0UzQURB
-MAowOUE3NTgwMDU1RDdFMDRGQjcyQUUzNjRGQTUxNDQxMjJDRDdBNTBBQUYxODcwNTcxQTBB
-N0YxOUI1MjgwNTk1NkM3ODA2MkIxN0ZCNzEKNThBMzE5M0Y3Q0VFQTk2QTE4QTA1RjZBRTJF
-RDQ4NDgyMEM0MDJCRDBERkRGQUVBNDgyMzhFMzdGNDI4MzcxRkVGNzlBMUI5M0YxRjJCCkJD
-MDJGMkZEQUExMjZEODkwNEU2RTRDRUVFQUREN0Y2RUQwMzZBMkU3RDFCNkY1REE3RjU5OEZE
-Q0M3QUM3QkIxNzVERUM0NUQ0RkNEQwo0QTg2RTJFM0E5QTUxRDAwQjMzOTQ1REM3RTM4Nzcx
-NTMyRjNBNzVCOTAxN0FFQkUxRkRENzQ1MzU2RUVCNTRDMUMzMTBFRjZDMUI4NUQKQjBEMDlC
-MEM2MUJFM0FBQjA4MEI1OEUyNzkzODNEODYyNzk2NjgwMjY4NjI4M0I1MDcxNDMwMjJCQTI4
-MTE2NUJEOTk1NUM4MzNCMUZDCjY5QTNBMjA3MUE1RjVENjY0QTJFN0U5REJEQzg1QjY0QTQ4
-Njg0QTJEQzZFRTk5MTNCNTYzM0E5OEYxOUE1NDZEQ0E2NzI3MzYxMDEwRgoyMTdFNjBBQ0Qx
-OTQ2RDBEMUEyQjBBMzFBNjEwM0Q4RTc0MzhGQUY1NTQzNDExOTJFMkIzM0ZDMjJDNTc3NTc2
-ODBCMEM0NDE0N0FBMDkKMjdDQjQxRTQ2NEU5NEUwRTBERDhFQkVEMTg3M0Y5RkRDQTMxMkE0
-QUJGMTQ2NDgyMkRFNUU2Q0E3MjNCOEIyRjNCMjNCNzM2OEIxREEyCkRBREU4QzJCNThFRjcx
-QjA2OEJFQkEzM0RFRDFCMjc4RDNCODFEOEFENDRERkJBQjcyRDRBQURCQ0FDMUQwMUZGQTkw
-MUNDM0ZEQzU2RApEQkVGNDBCREVDNEJFQUI2NDkxNkY5Q0ZERjIxRjVCMTE4NDMzQjY3MkJF
-MzA4MjY3RjFBOEFBRTg1RUYyODA4MzRGRjhGQzYxMzhBMkMKNDE3NzNGQkEzNzYxMjUwQUY3
-NDRCQTA2ODZCNkJFOERGMzY5NzQ4Q0IyQTMwRUMzMzQ0OEFDQjFBNzA0RDFCQTAxQzIzNjVG
-QjEyMDdFCjk4REVGRENDNjFDREE1NEIxMjBBNzQwNjFGOEIzMjQ0RDEyRjZCMzFCRUZCRTJB
-QzQ2MjlFNkI4MDA5QzgyMzlENDI3REIyQUM5Q0M1Rgo3MEY1NDg3MEQ1OEMyODZDOERDRTBE
-RTg5QjZFMkQwQjYzMTlBRDFBMTBEOTFGMTNDOEZFNjFEN0EzQjJFMUVBMTlFMzhGMTI3MzNC
-RjUKMzczMkI0RjNGQzZBOEUxMkZCMDFDMEYwM0MzOEY2NDVFODFFNjRFMTYzQjRDM0UzREI3
-QjZERTAzMjFFNzg3MjZDMDc3NUUzQUYwRTY1CjU0QjAzN0IzMTkyQUJGMUQ2ODg4MTJCQkJE
-NEU2NDMzMDFCRkJERkUyN0RFNEM5Q0VEOEQ5QTcwNUM5NEEyMkY1OTlDRDRBQjcyRDUxMgo0
-MjNCM0Q0Mzk2QjQyQzkwMUM0MkI5NThDNDY4ODI2NzI0NDk0NDBGMEM3OEJCMzMyMzY4NjA3
-NzBCOTYwMDhENzg2M0QzNzREMDVDNzkKQjIyMUIyMDMyOTA2NDYxM0E3QjdGRTE4MjhFNUE4
-MEVDNDVDNjRFQjA4NTYzNTc0Rjk5MkI1NjczRTUzNDU2Q0EzRThENEZEQjgxRTE1CjZBODM4
-NjlCQTk1QzhBNkU4RUFCODA0NDM4RUI1QkM1QjZCNzNGRDQ5M0UxOEU0Qzk1RTIxN0I4NDdF
-NDIyQTk0N0Q5QURCMTRGRjBEMgowNjZGNDMyNUE1MEJBMDdGNjg4MDJEODZENTE2NTNCMjY0
-ODMyQjRENjEwMjEwN0ZFMDQ5OTRGOERCMDQ2NEMzN0YzQjBEQzg3RDQ1QUQKRkNCRjk1QjFC
-QjIwNjIwRjA3QUU0MjBBQTY2RDc1ODVFRTg0QTNBQjczRkM4RjFFNUZBQjNDRjJGRjM4NERB
-OTY2OURBOTFCMDEzMkQ2CjlCQ0E3QkMyMUVCN0FGRDgyOTAyQ0NEOUY2NDI4NDlCMEFCNjIw
-QTkwQjNCNTc1NTRBNTdDMTdFRUY1MUE4MzEyRjQyODAyMkQ1RUJFMApGMjNCNTJDMDZBN0Mz
-RjE3RDRCQzU2NzAwQzY3MDFGMkUwMDNCRDEzNDNCNDE2QUUzNkNCRTZENkQwNjJFQUNBRTQ1
-NjlGRDU1QjU5RDEKNTVFQjJFMDgwMUQ4QzgyMTIxMTNBOUJCN0JBNUJGNEFFODlENDM0QjJC
-ODM4QzkxMUQ4NDU0MENBRTFFMkJDOTVERDI4QTI3OEYzNTcwCjQwNEQ5MUQzQzE4QkU0NjhF
-NkY1NEJBNkI4NEQ2MzA3QTJERDU1ODdEQUQyMzBBQjIzODNFNjk1N0U5QUMxQTc1RUM2REIw
-ODM1RjI0OApDOUVFNDgwMzE4RTFCRkIwMEFCMEVDQkIxRjE2MDMwMEUwQjZCMkM1NjJEMUI4
-NTZGNTQ5Mjc1Rjk4RkUxNDgwQjk0MDlBMjZCQjU1REQKRjVFNjdBRUYxNjI4OEIzRjRDOUZF
-QTU4NEE4QUE2MTY2NEI3M0JFRTBBNjJBNUQ4QkFCRjE4NDRGOTdGN0FCRkI3M0IzQ0QxOTAy
-NUY5CkZFN0MwODlCOTYzMEJGNTVDMjJERDE0ODQ5RkIzNTQzMTIyQ0ZCNjY5QjUxNTMzQzI5
-Rjc4RTUxRjUzQzQ5NEIyMjAxQ0Q1RkRFQTQ4OApGMjU5QzU0Rjc5MTJFNzY1MzYwQTBEMTQz
-QjU5RjQ5QjkzNTAwNjA2NjIwOUQxMUZGOUY5NTQxRjExQUU0RjdDNzBFQ0M0RkY3OEZFOEUK
-MDIwNUUxRjk3RDkwRkFBQUQ3RDEyRTIzOUMwMDlDQjk3QjFBQTdGNzA3QjdEMDE4RjEyNTYz
-Q0ZGNjVBQzJGQjE0RDdFQTYzOTAxMDYyCjJENUUzRDJBNzRDQjhFRkJDQTM0REIyNDBEMTBD
-OUZDMUYyRURDRDQ4Q0UwOThBRjFGQzAxQzNGQjQ5QTI3OTU3NDA1REE4OTMwN0ExRQpBODc3
-RTFENEIwQUZDOThDRTAyMzVBQzJDMjFEMkQ3M0I1REJBQzY4QTBERDA3OTZBQ0RBNzZBMTky
-ODQxMkVFQTUwNTNGMUUyRUM3OEMKNjVENDQyNzdDMjU4QTlCMjExRUNCOEEzRDQ5QzM0Qzg5
-QURBOTk0ODJBREQzRkNGNUFDNzQ5NUFDNDgzRjkyQ0M4MDc0QUY2QjU3OTcyCjZCNDk3RDVB
-NDM3RTdEMzdCNENDNzkxM0ZFMjMwNDdEODg2MTUyQzA0MUFFM0I1RDcwMDYzNjQ5QzhBQTcz
-MzVBRDNCRkMxMDVCOTE0MApDNUM0QkVGN0REQTMxNTZFQjg4NDFBMDcwNjRBQTJBMEVBNUU3
-RTY4MjhBNjZDQjIyODRBNkQ1RDQxODlCNkRGOUJFNzQ1NTVCODgxQjYKRjgyNjkxN0IyRDA5
-REY2MzNGQ0FGQTUyQjZFM0E4QjBFNjcwNjIzQUU4MjVBNzQ2QkI3RUE5RUYzRjUyRUUwNUYw
-QTdFODcwQTYxNDAxCjk2RDUwQjBGRTIwNjQzNjcxNEI3NERDN0IzNjczRDkzNTZGODg1REFB
-N0Y3OUE3MzY3NjkxMkI4NDU3OUYwRjQ5NzhGMzI3Q0NCRTA2MwpEMDlEMjJEQjAxMjIyQUZC
-NDQzNDA0NUM5MEExN0QwQjUyNjY1Nzk1ODA3MEY3QTZBQjU1NTk2MURCNkQ3OEY0NzkzMzFF
-MzczMDVENUEKMjA3MkFFMTk5QzlDMzFCMTJERDYxRDEwRTMxODg5RTZERTVCRkRCQjUxQzkw
-NTQ4QkY3RjUwMUJEMzNERDMzQjVGNjc5RjhFODQ2MDA3CkJFMDlDMzkwNTBBQUYwMzQ2NEE1
-N0NBNzBGRDA4M0UyRURDMkJBRjVERDNFMENCMzc1REQzQTI3ODI4OTgyNzM1MThEN0FFMDlC
-NUFGRQoyN0YyNTYwRkQ3Njg5MTI4MkY3QjY4OTA5QzZGQjlGNTQ5QUI5QjRFNjY0Q0EyNTlF
-MDY1MkU2NkNDNThDMjUwRDI4NUZEMjUzNTY2MEQKN0M5RjRFRENGRDg3NEY0QUZEQzY3RDFC
-OTA5RTA1NzZEMTU5REU2OUZCQjREQTMwN0ZFMzdDQ0IwMUU3QjdDNjY4Mjg3MkZBRkZENTkw
-CjJGMzFCQUM2OEU2OENCM0EwM0JCODI0QjVGMzU2MTZFQzBFQjQzNDI3QkU3QjM5NzY5MDZC
-NkU3MkY5RDcwQjhENjk3NThENEQ0RUQxQgpEOUFCNDA1QjBFOUUzMjQwMEVCNkM1RTdGQjAw
-Njk5N0Q1QUM1MjY1RkI1NTcxREU0RDFFM0UzMTIzQTcyNUYzNzE1M0M4NzQ0Mzk0MDcKOEQx
-Nzg2QjlDMjQ2MzM5OTAzREYxODU1NjQ5RkYxQjk3QzkxOUE4MThBM0M5ODZBRUYyOThGMkM5
-MDFGNDdDNDRFNzI2QkNERDE2QURBCjJERTQ2N0YzNDhGMjczMzY0MjQyRTgyRTZDNzAyQzc3
-MUI4QjA2MTIzODBCQkRCRTI5NzYwRjE5MEVBN0VGOEYxQzJCOTk5MUI3MDFEQwoyRDE4MzhB
-QTgyODI4NTZGM0VGQ0VBMjc0NzE4QTM5M0IxMjlDNzY4RDUwRDcxQjU4NDlFQ0E2OENCMTMx
-NkZBNkQxQjgzQ0E5RkZCQUUKQzQ2ODE3ODM5NjI1OEUwNzczOTNGMEVBNkVGRDIzOUM1NTRB
-NzIyNTIyOTBFQzFDRUQyNDMwNjJCMUM0MjE0NzMxODVENEUwN0ZGQkE0CjExQTJBQTE2QTBB
-NjRBQTM1NTBGOTdENzc4QkQ3RkRBNjk2MkJEQTBCRDk2RjM1OUVDRUVEREEzNTA2MjQ5RkQw
-Nzk1RUFEMUI0QThENwo2OEJGQTE5ODk1NUYzNjBCRDFGNTdFRDlEOTM2RTFBNzY1RUIyQTEz
-RkQ3MzkyODc0RDFBRkI0NjE2MDBEMDc3QkVBODMxNzVGN0JDNEQKNzMyMzM0Q0U2RjBDODU1
-NjQxNEMzNUUzQThGMjYyNkVDRDg1MjM5OURGQjc4MzUyMEY5MTgwNzgyMkYzNEJGMUM5OUFD
-NUE4OTU5NEU1CjVDRTI1Q0E0N0Q5QUI0MTFENzRDNDg5ODQyQzg1MTA5QzEyQUIyNUIwMTA1
-RjZEODE2Q0Q5NjNBQjUzMjMyM0Y5MjM5Q0IzODYxQkEyMgpCMTExMzlGMzVBNEU5Qjg0M0Qy
-RDlCODMyREM4MUNFQkJCMDY0MDVCMEY2RjE5ODMyRTk3RUJENTZCNTg3MzlDODNEMkIwMTVD
-RUQyNzkKMjc2QzlFQUMwQzFEOTJCMTA5ODZBQ0I0MTBBNDZEMEMzQkQxNkIzNEI0QTQ4QzhF
-MkQ1RTQ3NDYxOTU5REIwM0QwRjJENzZBMzc1NTM1CkFFODgxOEVBRURFQzFFRUFEMTgxQjE5
-MzBDNTgyODc1MUZEMTAwMkExODA4N0EwM0QyODc0RTIwRUI3QzQ5QTAyOTAxQzkyOTczQzIz
-NQowOTAxREJEN0YyOTY1QkIxN0VENzhGM0NEMTI1NjhBRjE1QkYwNEM5RDM2NjM4MERDM0Mx
-ODRBOTdFNEE3MkU5RjhDQzAyQ0ZCN0VFN0YKNDk1NkNBOTI5QTZFMzJBQTJCMjgwN0FGMzcy
-ODk0QUYyRTlDMzdBMzcyRjUxRDlFNDVFNjg2MDFGRjZGMDY1MjQyMTBGMDU2N0I3NzlDCjk3
-NjYxOEEzMEI1OUQyNjlCODA4NzQxRERBN0IwMDM2NTkwNzIzNzQ2OTExMDFEM0QwOUQ1MDVD
-NjBBQ0JBRjdDMTIyQkY4RkQ2RUFENQo3MzI4RTYwQjY5MTY4MDgwNzE5QjZEQkZCRTY1QTMx
-QzI3RkEzQzQ1NkYzQ0ZGNEJFQ0Q2QjMyMDQ4Q0IyMEJFNDc3QkZEMzM3MUEwMTQKMEMyMkFF
-RkU5QjEzQjBDNzE4OUFCRkI0MzY5OUU0M0U1QjJENEFENzMxNjAxMkY3NTlFRTZDRDQ5ODI4
-NEM4MUFBNUFCQTgxOUNGOUY0CkM4MzNDN0Y2MkIyQUU3Nzk0RkU4ODhGMENFMEYwRDdGQTIx
-QTZDNkE4Q0RCMUFBRDgwMkZFNkQ4NTc3N0FEQjZEQzFDQzk1NTg3RjJGRApBODRBQzI2NUEx
-ODQ5RjY2ODczRjE0QkU4NDc1M0M0OTk1NjI1NzlGMjM2MTc1MUZCN0FDODA5MTA3RjAyQ0Qz
-RDk1M0U0N0VFRkVFREQKMzgxNzhGREE5MEEyRkQwMUI3RkFFNTIzOTVCOTcwQUI3QjRGOTIz
-MTc1RkFFMjk4MjhDRkREODI0RTIxQ0U5RkNDQkRCOURGOTg0QjFCCkY2NDBEODk5NUMxRDMy
-REM2NUFGMjhBODk5QzVFOTdCODI4ODg1NzA0RTY4QTBFQUY2MDU4MTkxQzFGNkQ3QzY2ODdG
-MjAxOURFOEE0RgpCNUY2NUEwNDY5QkQ4MjNFNzdFNkVGNkRGMTc3NTE3QUM3NzRERkU1Njg5
-MjNDNDc0QzlFN0M1RkNFQUE3RUMxMjQxOTYwMDkzQURDOUYKM0VDRUZBN0IzMzQ0RjVFMDY0
-QjhGRjAyM0U5RTFEQzE4NTY2Q0IxRkY5NjBERkJFNDcwRjQyMjIyMTBDNUE0MUVDM0U4RDRD
-NTZDRjlDCkI5OUU2OENGQjBBMjZEOUQ2OThEQkJFOTVENDA3RkJDNzdGOUFCM0UzM0I5NERE
-RDIyOTlDQkU0MEIwRjIwODY3MkFBRkJDMzZBQkYwNwpGMzlFQ0VFQ0UzQTJBRTBFREEzNEE3
-OENCMzg5OTM2NjhCNjA5MDlGRjFBOUZCMTBFRTc0MTZEOUExNkE3NzExQjc2QjdCQTAzRDAx
-MEQKQUUwNDU4MUZFMDFBMzc5NTM2RTRBN0M5MTNCNzQxRThBNjEzNUI2Mzk4MzAwQjIyQjhF
-MDdEM0IxNEE5M0JBNzYxOTVBQzAzQTFFQjFGCkUwRkUxRENDQ0QwNDhEMTYyOTRGMzY1MTc4
-RkE4NTNCRjc2RTdCOTIyMDdERjI3QTREMUVFNTg3M0M5QTQwRUJCNDJFMThDQjdERTgxMgox
-QkE1NEE0NzlFQzk2QTcyN0VFNTgxREU1NUY0NkY1MzZDRDk0N0ZFRDcwNkIwQzJDQkNCMkVE
-NEMyMzk5RkM4RDRCNjQ5Q0E1Q0I4REQKNkIzRDhBRDY0RDZCQjM5NUQ5NDVFMTMzRTI0QkE1
-NzM3N0U0QjgyQjc3QzcyOUFDN0Q1RUU5MTUzQjJFMEMxQUY0MDE0Q0RBODY0NzZGCkVBRjFF
-NTZCN0Q4NjQyMTgxNDA3MTg4NkVFMzBERDhFNkVGM0YzMUIwQjE3OTM2N0Y3NDVBNTI5MUND
-NjMwMEE1MzVFODI5MTJFODRCNQoyN0EyODNERDEzNjNDOEQ2QjUyQ0IyRkMyRkVFNTlEOTUw
-OTM5NUEzOEE0NkYyMzVBMUI0MzM4NDNBODdDMkYwN0E2NkJDMTIwMDY2QUUKQ0Q2QkMwOTM2
-ODA2MDUxMDAxQkVFRDFBMTM1OUU2MjZENzdBOTc4MjQxMjE5N0RFMTcyQkEyM0QwNzFFOTMw
-RDEzRTBEQkNGNTlDM0U2Cjc5Njc4MjlGNkM5MEI1MDBEMkQ3NkFFM0ZCNUU2QzkyNDBFRUU4
-OEFGREU1RjJDQ0IwNEIwMzZCN0M5RkFBRjY3OUU2NUM4Q0M3QzAxMwozMzlCNTZCRTI4NUQ1
-Rjk4NTQwOERBQzAyQUVGMTBBODY1RUQxRkQzNENGQzAzRjA4N0MxNzU1MDlCMkVFRkIzNzQ0
-QzU4MEIzMUIwOTcKMzI4RjM2MEU5OUE0ODBGQkQ3QTg3N0REQkU3NThFNjU3NDlBNzUzRUQ4
-ODAxRjY0NTA0ODhCQjgwQzUzMDNCMDUwMTFFRjVDNjgyMEY1CjAwOEI3MURBM0U2Mjc2MUI1
-NTk4NDNDNTlBQkI3RTk1RTQxMzY4OEM0MDkwMzUzOEY0NTI0MzBCNjVCQzFCOUNGREM3NzA1
-MUJBQUU2MAo5QzQxM0UwMzcwRTY0QjU3QzU5RTdFMDJCN0IwNzc2OERBODQzMjYyMjFDNjFF
-OEFEQzBCOEY3RTNCM0YwMjg5NzMzMEY4Mzk3QkEzMTkKOTRBMDc1MTE5OTk5ODkzNTA1RjVC
-NjY1QTkzNDk4RTk4Qzc4RUZBOEFCN0IyNjdCOTlDN0UwNzBDRTJEMjY5MjkwNTI0OThCRTMz
-NkJDCkVFN0E4MUZENDQ4NTcyRTMwMkQxNzc5QjQxM0E4QUFBRkMxRDAwNTQ2MUUzREQ2M0I2
-NEVENjk0Q0VBODJDQTk2MTg0MjFGRjQ2NUI4NAo2OTczOUE1RjJCREQyRjgwRkRDQzY0QTJB
-NkI3N0IxNjRFOEYwNDkwQTNGRTcxOTc5NzFDMEUyN0JEMTQ1OUM3Q0I3NTZCNUEzNDYwREIK
-RjkxNEM4NzM2RDdGRDc0QTQzNzE3NDFGNjcwODQwQzdDMTU0RDcwRUJBQkIyQjA0MERDODY0
-NDgzQ0JBMUFFOEI2MzBGMzg2OTlCRThDCjAzMTZCRjVFMjVFODFBQ0U2NDgyQjA4NEU3MEYw
-MDBENjEyMUYyODA0MzdFQTBFNDNCM0YxNEI1MDUyQTYxQkYwNkMzOTc0RTc1M0ZGNwo1NTdF
-MTFGNzBENzBGRTI5NjUyMzhBRjE1REUzQTRBOTY4NDI3MTM1OEU4MTM0N0FDREU4MjQ0ODBE
-NTEwMDYyMTE4NDA2NjFENDhFMEIKNzU4NjYyMDg2QzU2ODgwNjVBN0M1QzAzMjE3MTI0MDcz
-NDk1RTNFN0ZFRDcyMzgzRkNCOEFBMjQ2RjI5NzM5RDNBODNEQUFGOENCOTY0CkEwMjNERkQx
-MzFGMDIyMTIzQkZDQzc4MkNDMjM3Q0Q3QzhDMDYxMUFFMUQ4RkQ4Q0MxNTIxMUZBRUUxM0Q2
-OTQ4N0Y5OTY5NUZDMzJGQQoyRDJEMEVFRkEzNjcxRjU4QkU1QTEwNTE3Rjc4N0ZGQkEwNTBC
-OTQxMEQwREU0RTRBQzJGNjcxQTIzRjFBMzczMEY5RTUzQ0UxRjA3M0YKRjZEODI0RkQ0Qjc0
-MkI4NTA5Q0VDNzNBOEJDM0Q3OTAxOTgxRTVDNDYwNkU1REYzMUNDNDIwODIzNUZBMEIwRUQ3
-ODREMUI0NzE3MkY1CkI4QkUxQUU0NjBGRTE0NUYzREFEMjgzNTE2MUMyOTY5NEQwODc0ODdE
-QjdBMjNGODFBMjE4NjI2MDlFNzU2N0NEOTIyQkM0MzkwRUIxQQo2OThGMDcxOUFCNjZFQTAw
-MUU4OEY5NzE3NzY1MTY0RkY1ODJFNzVCOTM0Q0Y2NkVCQzE5MjFBMDBERkU2NTI5NDA1MDBD
-NEM1OEI4OUQKQjZBMzQ4NUFEODA3QjkwNTM0MjQ5NjY4MzM4NDdCOUQ5QkIzMDk1MzBBODFF
-MUVBODE4MDI1M0UxMDhFODRFRTcwRkZGRTgxODgwODcwCkVGNjk5MDhERjkyQTQ4MDMwQkY2
-MjQwMzA2NzQ5NEMwOUQ5OEE4OTYyNDBFODQ4RTNEQzQwOEZDNDVEMjM3Njc5RjhDNzE1QkU5
-QzAzMQozMTdEQjg4QThDMUUzOTg1NTgwQkVFNEI5QzFEMjA5NENCQjYyRkU2QTVENkM1QTM3
-QzM4RjgwQTQxMEQyNjdEMkQwQkQ1MDJGNjFDODkKRTkzN0M2N0YxNDJBRTg3RkRCMTM1M0NE
-RjI5MTA2RjQzMkY5REEyNDEwRjY5QkMxQjJBOUYyRjZFNTZGM0JFRDJDMzdCQUFDNEE5NUJF
-Cjc3NDZBOThCRDlBREYzRjQyRTgxQjc3QzcyQUJBNzM5MTk1QTE4ODUyMTQ1OTY0QTE4RUVF
-MjQyRjFEQjg1OEZCOTc4QUVEREVEQjVBMApDNzM1RjEyN0U2RjI2QjQxNDY3MkQ3MjdGRDAx
-NzU0RDFGNEU2RjFGNzYzRjZGMTQzODBEODNCRjAxQkZDNEU1MjVBNTEwNTc5QzVBQjcKMzA0
-MEY3RUZCMUJBN0UwQUYxMUQ4MTQ4M0UyOTVDNDY3RjU3NjAwRDlDRUIxQzkwMzY1MTNBNTFE
-RDJEMjNGRTVCNDYxQjlBNjExOEY2CjhCNTA2QkREMTM1N0ZEREIyNTREQ0JEMkYyODhCNERF
-ODlDMzA1RTAyQjY1NEVGMTFBQTBBOERFNTI5QjA5M0JERjc1QkJGNDk1QTU3NApGRTIyNzND
-OTgwMzZFM0Q5OTA5NTZDM0ZCODMyRDhBNTJFODQ4NjQ1RjFGMzcwM0E5MDdCREZFNTIyQTBF
-NDBBNDZGNjJDNjYxQzBCNzUKRTkyNjZDOURBREQ4MTFFQzhFRDZENjc1MUYxREZFNEUzMjdD
-RENCMEIzOTYyQzZBMkI2RDVBQTc4MEEwRkRFODE5QzE4NzAxMTFGNzg4CjAxOERENTNGMUE3
-NzI4QjQzMEVBRjFEOTU5QjNFMUE1MUFGMjZDQ0ZEMjZFQUU5QzQwODNBQUFCMjgzRDFCREY5
-NERCRkUxNzI1NUI1MwoyRUFBRkUxQTBCOUZCOTUzNUMzQTc2MTJDRUQ4MTg2ODU0NDdEMDRB
-RDk4M0MyOTlCRTBGRjEwMTIxQ0IxNjcyNDRBRjgzM0JGQTg0QTUKNTg1MzcxOEQ3NUZENTFG
-ODNFRUJCOTk4NDA3MDE1NzlDODU2NTU4OEMwRkI0MjkxQjlCNUNEREYxOUFGN0IxQzY3OTNE
-NzRCMERDODBFCjQ2OEFCMzU2NzE1MjY1MDU1MDUwRjRBQjU1NTY3QzY5QkFGREQ3RTYxN0U5
-MzVCRjY2ODJGOUUyQzRDQzI0MzI0NENDMjQ3MjY3MDE3NAo2QkEzRTc0M0E5NjAzQzQzMDk1
-QkI4RTZEOTg2MDA3MTdENDUyQzVEQURCMjM3MDM2ODg5Qzk3NzhGN0JCOEJCMTZENkMyN0I5
-RDg0NDcKOEU2OTA1QjUxN0JCRjYyNzQ1NUNDMjFBNTI0NTJENEQ5N0JDRTRDQzM4OTkyMkRF
-RDFFOTUwQzY2RjgzM0NBMUVDNEIxMzVDQTUwNEExCkYxMjA5OTUzMzhEMEMzQTlBODFCRkM4
-MUQ2M0ZGOUU2QzUzRTRFRjZBMDdDNTExMjE0RjVFNEQ3QkI5REQ2MDMyNDU0NTQyQUI2NDlG
-Nwo2RkYxREEzOEZGRjk4RjlEMTA0RjVFMDM4QzIwNzRDMkM0RDk3MkNGODREODEzQzVENTEz
-NkFGRDIwNEQxMENCRjJCNTg2NTA0MEMwM0IKMTg4OUFERkQwMEM4QUUzNjEyNTQ4NTY0NzZC
-ODFGRjg3MDRDOTRENkVEQ0U3RTlDNjQ0QUQ2OTc5MUQ1MTk3OEYxRTE4RjdENDNGMzIwCjAw
-RjYxQjA2ODM1MjMzRjlFQzczQUExRUZCQjEzNDU4M0MwQjJERTM5ODM3QTVBM0I2NTI4MjlD
-RTNFM0M0RkMyOUMxN0MzNzkyNTY1OApDQUVFRjUzRDU5N0M2NzVFNjA5QzE5Q0I1OUEwNTIy
-NEY0N0M3N0Q3OTlBN0VDNUJFMEY4RUU5NDI3MUFCNEUwQjJDNTU3MzdGRTVFMzUKNjkyN0RG
-QUYyRTc5RjgxNUMyRkNCOThDMTk0RjI3NjEyNjg0RTRDMzM1QjhBOTVGRDc5RUE5QTVDNTlG
-Q0I3NjFBMEQ4NUMzRDFGRTI0CjE4NjNGQURDQjdCODMyRkZGOUIzQjg5MkExRUUxRjAwQkNC
-QjUyNDIwMzVFNDBENjc4Rjg1NTJBQjQ2MTA1MzcwQjVEREM0OUQzMEZGMQpFMzhDMzg3ODEw
-MjQ5OUVBOTc4OUE1RTE3NjcwMTE3Q0Q0NDQ4RTVBMDREQTY4RTY2NzA1QzFCNUVGQzc0QjUw
-QUI1NTY3MDA4MzQyNTUKMjkwMjlDQTA3RDY0NUJFRjMwQTBCMTRFMTczOThENUJGNEZFOTBB
-ODE5RUEwMEIwN0ZCREM4NDU0RjkwMjIwMzg2Nzk5Qzg5RDNGNTU2CkJENkIwREYzMUNFN0VC
-NkQ2MzdCQUM1RUNFRjQyRDRDQkU0MzdDQThDM0U5NzUwQ0ZENTk3Q0Q1QTY2MTE5QUU0NURF
-MzQxODcwMkVCNAo3Q0Q3RUNDOTAwRTIxODNFMEQzQzlDMTM5QjhBNzU1MUI5RDVCREJCNEFC
-MTdFRUQ3NjVEMUNBQkZBNEIzRjUxMzQzNzhCMzBGREY2OTYKRkUwNjBCNkQ4MjNBN0Y2RDM1
-Qjg2NjUyNzYxMEIyOUI1RTY5RDU3MTFGQzgzNEUyQzYwQzExODU3ODg4RUJFMkFBOURDREI5
-ODVBRDVFCjQ0MDA3QUVCODlFMTFEQTA4RjY2NkIwNDk0QUJCRUU0QzAzNDg2OTJBNkE5OTAy
-QkI3RTREMTQ3NEU0OEE0MTA5MjhEMjE1NTk4Njk2OAoyQjQ4QkFBQzEwMDkwRjJGODU4NUQ0
-NkJCMTM2MTIyMjAyNDE3NjM3NjY0MzNBN0YyMzU5OUE0NjJDNUUzOUFFQjhEQjcxMjk5REM4
-RUYKQTI2OEVFM0IwQjhBNTIyQjVBMDg2MTk0ODNBQUQ2QTA0Q0YxMDdFMjY4REE2NzUxQUIw
-NDk1NDI0MUNBQjg3RjY3OUZDQjA0MTQwRDFBCjdCNEU2RUI2QTc1Qjc2NTI1QTg2QTFFNTI3
-Q0U1NkM1NDZFNkRFM0Y2QzQyQzE3MTUzN0M4Qzg2QjA0NkFGQTMzOEFBOUE3NkM5N0ZCMQpF
-N0JGQjE2MUZBNTdFRTM4QjNBNzVDMjNGREM0QjQ5QkJBM0MzNEUzNDkwQTBBMDQwRTU1NjlF
-MjQ1NkFFNDBEMjg5NDY3ODQ0MDhFNkYKMUM3NUQ4QkY4MTMxOUUzRDNBOTQ2QjI4NjdFODg0
-QjU4RENDOTdGODQ2Njc0QUM5M0YyNTcwMTI2NDgwQTA5MzJEMUNDM0RDQjk0RUM2CkU5MUFF
-MURDNEM0NDJBNTZCMTVCRkMwQjIyQUU1RTg2QTQwM0NCOEEyRTdFQUFBQzk5NkRBOEY4REE1
-RjdEMTQ1ODMwQzA2QTdCNTBFOQo5MTNBOERBRjYzRDU5Njg3MUMyMzJFQkFBQkZENkNCQUZD
-OUFEQkVERUQ4Qzc2NjJFQjM5QkQzMDZBOUUzOEM5Q0Y5RjcxRkQ3MThGQUUKRDg4QjQ0MDlF
-NjRBRkY3QjZFMDdFQUQ4MUQzQTUwNzEyMTkzRjlDQzIzNDMwM0M1NUNGREZGQjBBM0E3ODI5
-OTQyQzRGQzU1QTg5Njk3Cjc5OTYxQUM1M0NGMUZCMjU2NkE4NTEwQUQ4MTA5ODlENkNGOTA2
-N0E0RDcyQjIwQzBFQjFFOEY0NDAzOTRCNzFBMDgzRjg2NERFQTJCMAo0NzZCODA3NDU5QUVC
-NzdEMERDNjg0NTRGMjI2RDA0QzNENEJFRTU0QzlEMUY3RjkwMTNBOEFFMDFFMzc0MzVDQjkw
-NDcyRjM1Nzg2RTYKNEZCQjA3NzFCREIyRkNFMEFEMDU3RjkwN0RFREYxOEE5RDg3MDZBNDhB
-Mjg4RDgyQTQyMUQxMjZEQjQyMTExQzdCQ0EyMzMzQzdCQTkxCjBGNzlCNjczQUMyN0RDMkIx
-QzA0NTI2MjFGMEJDOEVBRjg4QzdFRERFRThFQTg4QTMxQjNCRDdBRTUwOUQ2ODk1OTEwMkU5
-RkYzQ0ZBMwpDRkU4MUJFREJDQ0RBNkE3NDJDMzEwN0Q1N0ZEQzkzRDRFRkIzMjhDODBBNUY2
-NTJCNEM1QjYwN0E3RDM2ODVEQTVGREQ1NEYyRjBEMjYKRjJCM0Q3MTk4NThFM0U5MDJCN0ZC
-NDlFMDZCMUI1REM3QTNBM0MyQ0U1RERDNDcxODE2QzczOUFGRThDNUE2MTdGNkExMDlENkQ0
-MTJBCjI5OUI3OEFGOTk3MDdBNjZENThFQzQwNjE1NUJGOUUxMzQwQjBDREM3RUNGQjRGRjFB
-RDNEQjBBMEQwNTE5RkJCNUVDNjUxM0Y5ODAxMQpERTBDMzdDNjVFOTdDQjdDQzZENjhDMjI0
-QjFENEFEOTZFQTk3MTI3MEJDOUMyMzA2RDBGQkQ2MUY1NzlEQjMxODI4OUVEQ0NCNjUzMEMK
-MzY4MzRCMzk2MERGMzhCQ0QwQjdGNzIzOUU4NEEwQTY0RUM2NEMxQzZDQ0MwODdBQjY4NTg3
-MDg2ODdDOEQwMDgzMTY4NjM5MTczMDZBCjlFQ0ZCQkY3MjYxRkNBRTc3RTEwQUExODExMkVG
-M0M0NjNDRDg2QTZCOENDQkZGOUU0OTdDOTREMTQyRjQ0NDFDRDMwREYwNzc3QTExNQo2RTM5
-NkVFMDU0QjBDMzAwMjFGM0REOUI1Q0RBRUM2NzU2NDI2NEYzQUEyRjEyQTU5MDBGOERBRDg1
-NTQyRUFFMDM0NEIwODZBNkYxN0QKMjhDMjNGRDlDQTJGRkIwRTc0N0I4RjdCNDdBRTk5NDY5
-RTVBRTg5QkM4RDNBRjgwNkMzN0QzRUJFRTc5ODI4Q0VGMjYyMjkzNjUwMzcyCjgzQzk2NDI4
-QjFBNDY4NjUzQzFFQzk2QTMxRkRFMjc5NjgxMzcxQzI2M0FCNUExOEYwRUE4NkU0NzExMUVG
-MDcyQzcyQUVDQUMyNTg0MQozRkQ4RTgyOEY1Q0EzOENDM0ZGRkI4NDcxNDhDNjhEQ0NBOTA1
-MUNDQzVBOTcxQzgzRjMwOTg3Qjg3NEM2NjQyNEZCOTEwQjU1ODgxOTYKMjY3MTk2MEE3QTk1
-QTBENTM1RDAwNzk4MEE1NkU1QUIyQTJDRDA1RTk5NEIyQzcxNTU2RjM4OTY0MTYxRDQ5NjUy
-NzVFNjcxMjMzOEM2CjE0RDQ4NDZGRDg2QkZGQUI3QUU4RDJCRTFDNThDMjU5RDQ2RjdDRDQ3
-REIzMzEzNUIzN0UyQ0ZGQTc1N0M5NzZGODYxN0I2QkIwMDdCNApFQzM5QjI3Nzk1ODYxNkRB
-RDEzQzBDOUZFRkY4OEY0QjBBRTFEQUY4NzdENzEwODE0NzRERkE0OEY2RjI1NzczNDBBODVF
-RjcxQzRDRDYKODY2NUQzNTUyMjlFODRFMzA4RDc2MjI0M0JDMEVEMzg1RjE4QUMxNEVCNjZG
-RDMxQUI2RjI0RkQ3NTYwOUYzODlCMDdDMDJGQUEyRjM3CjZBODg5N0MyODY5RjBCNENGMTYw
-N0RFMzhGRDQxQ0ZGMTcxQjBENEIzOUNFMkEyOEIyQzM5NUE3RkNFM0UwNEYwRDdBRTZGMEJC
-NUQyMwo5RTYyMERERTc5QjJDRkQ1QkRDQjU1NDBCQkYzRDJGN0M1QUJCMUY0QzM3NkRCMkQx
-NkJFODIzREVDNDhGNjRCRjkyOEVCODlGMURGRkIKMjI4NDVCRjk3NzQwQzAxRDU2QjMyMTMx
-MkYyNkNFODkwQ0ZGODk4NUQxNjNGNDA2MjY4QUU0MzE4QjEwMzEyNTA4OTMxOTI4N0ZCMTky
-CjNGOUZBQTg3N0RDM0VEODYzODYxQURDRkNEQUU3NjE4RkFGRkFCMzU4MTExREU4NDIwQTVC
-NkU1OUNFNkExQjQ4N0E1RURCMjhGQTgxMwo2RkM1NzMwNzdCOEYzNkZCMDAxN0UzMTE5QjU2
-MDIzQjJFMEUwRjI4RjQ0MjNDMTFBMjY0QjlCRUE1RTY0NDZBRjdFOTA5OUIxNEZFQ0QKQjI5
-QTBGODg4NEE4ODI4MDg3QTYwQ0ZCNjlGQkY2MzM0QzVDNkU5RDc1NEVERDQwM0JGRTAwNzU5
-NjFBRkY2RTk3NDVBMDQ3RjY3MTBFCjREOTRFMkM0MzMxOEU2RUQwQUE2ODBCNzA3Qzc2ODU4
-OEE2NzE2NjYwQ0I2NjM1MkM4RjZFNEI4MDA5QkI3NjE2MTFENzU1RTcyMjM0Qgo0NUJEMzVE
-ODRGNTc1NTk0NDFBNTcxMzk5ODMwQ0U0ODUwMDhDMkNEMzVDMkY1MEJFMzhERTc0NDNGRTE4
-NjI3NTZFNjU3NzYyNkUxM0YKMzhCMENGQjVFOTA0QzZBNTExN0UzNkE3QUVBNDFBMEJEQUND
-MjVCMERDQTYxMzgxQUFFMTM1OUE5OEQzOThCOEMwNEVEMzA2MEY5RTY5CkE4MTY0MEJFRTZE
-MkQ5N0MzMDAzMDY5Qjc2M0MxQTAyNEY0NzZDODIxNTU3Njc2M0Y0QzhFQTYxRDUxODJBQTNF
-MzRCMDNFODE0QzhBQQoxOEE5NTBDMEY5RjVFNzIxMkJCMDgyM0E2OTc3MDlEQTY0MzNFOUUw
-RkM4RDg2RkZCQ0U5NEQ4QjBFMjQ5QTYwNUU0RjNCMzhGQzA0OUYKQkJGNDAwRTlBMzIwRUNC
-RTEyN0FDNTBDQUE5RkIxRjVBQzEyMDdBOUU2RTdCRjQ0REM5NEQwMDg3MDlFNjk2NzExQjg3
-RUY3NDVFMTdBCjhENUIzODYxMUQ4M0U1RTI2RDg3MjBFRURGNEFENjQ1NUU4Nzk0MzI2RTNE
-Q0NCMDQxNjc5MzVDQjczOTg0QzcyRENEMDM2QjI0MTkwRgoyQjRGQTY4OTZFMDFCMDE3NzdE
-QzYwMzJDNzAxNzEzMjgyOUZFOUIzNzBDNDlDMjU2MjA2MDBBOTk5Rjg3RjFBN0M3NzkwRDA0
-N0Q5NjAKNEVDN0EwNzQ2QkZEMEQ4NUUwMkE2MjZEMTUxMzA5MjE2OTlBMzNFRDM5RDE4NjM0
-RjU2RkM4MTQwMkU1ODlFNjY0NEQ2MDU0MTJFNTNBCkZCMzY2RDVBOTk3N0UyMjA0RkY3REM5
-NDlGQjc1ODdFNzY5NTBGMDEyN0NFRkY4RjNDQURBQ0Q2N0QzRDNCNDQzMEUzNzVFODBGM0Ux
-Nwo5QzMxRTY5RDMzRjIwMzRENjJDRUY5NzExMkEyMjMwQTRFQUFEQ0EzNkM3MTU3QzQ4OTQy
-NDVDNkQ2MDc1M0FBQUNFQTYxNDlGNTY0NkQKQkVBNkRGNTc5MThFM0NFMjBBMTg0RDY1QzIy
-RUYzN0U2QzFDN0I2MTg0NTc0M0NGOEM1MkRFNDJEMTIxNkMyMjg3MEMwRTdBQTJGNUMxCjgx
-RjdBMTVEREM1NzAyMEEzMEFGRjhENEY2NDYyQjM4REE3RTcyQzFFMjkwMjFGMDI3NzIzNUY4
-QTE5OTA4OUI1MzY1RTdFNjdFNUIwQQozRkE2QzIyMDkxQkEwRTk2RUNGNDlENzE2MUQxMzRC
-N0ZEMTcwMTM1MEZCQjJGOTlCNTRBNTFCNDE4QjU2N0I1NjQ3RDdGOUFEN0I0RUUKNURENjcw
-REY4NDY5RkMxODc3NEU4QUI0RDZFRjRCNEY1NzUxQ0YwMTIyMEFGQTVDM0RFRkE1Q0ZDQzI5
-RjdDMTgxQjY2N0ZCOUM4NjMyCjVCRjRCQUMxMEFGMjM4QUIyRDJBNzQ0QTUwOTQyN0Y2NTRG
-OUI4NUZDOTA4RkREQTYwQjMxQ0M5MkU4MzdBNzhEMzg2ODRDODRERjM4QgpGMDE0NDMwQkM0
-OUEzMDQ0NTdCMkU3RDlCNzM5QjA5MDJENkJFQTA0OTJENkMxNDNCN0RDQjQ2MkJEQTdERjBD
-NTRDM0M3NkE1MkUzNTUKNEYzQTE3NDk2NTZEMTUyMDEyMTk0ODEwMkFERTYwNUU2NTk3OTM2
-RDdDQ0NBNTFBQjdEODBBNERBQUEwOTk5MkI5MDVBNDkxMDk5QUM3CjEyMEZFREE4OENBNTYx
-QTE5OUNBRjNFQ0Q2QUVDN0I5OTk5NEE4NDE2RUVGQkJGOUExQkRDRUM2NzFBNkIzRkY4REVD
-NTlDOURGRDc5NQpEREIyNDkyNDdCOTE4QkU2MzdBMjA0QzI3NUQ0M0RCNTUwNkVFOERDNzg3
-NTI1QjNFNjc5Q0NDRDNFRDQzQjU4MDk2MjgxRTJCQUIzNTgKQzUzMDM0NjVFNDZEQkVGNjk3
-QjVERDMzRUY4QTY0OERENzA1MzIzNEE1M0IxNzk1MzlDNDU1RUI5RTFBMTdCNzJGNzA3RkUz
-MENCOTVECjBDMjg5MTFGODY0MzM4OUNDNjk5NUM1OEM2QjgzQzg4QUZEM0M1OTQwNTJGMzcz
-Njc4ODJDMjZBODkzNkE0NzlFNDI2OTk3RDg5RkUwQwozQUI5MDkxRTQ4MERBRjkxOEJDMjZB
-ODdDQUVGN0JEMUM2NTgyQzczRjc1Qjg1RDU5QjcwOEQ5Qzc2Rjk1MzM3NjM0MUNCQUZEMjBG
-MUMKODg3NkY2RUU1MzhGNjEyODNEMDNGREFCQjNDQjI4ODhDNUYzOTQyQTY3MDUxN0U4RERD
-OThCNjIwNDM5NzAzOEI5NTFFMDIzQjQ2NTFECjhFM0YxOTczM0M4RDY2MTA4MjczNDg4ODFC
-NTcwNTcxRkEzNTlDODQwNTY4REVEQkFGRTk0MUI5REM3REFEOEMzRTFCMTkwNjA2NDIwRQox
-REFDRjM5NjUzMzdDNTFBNkJFQUYyRjJFNUVDNjBDREY4MzlFMkRFQzlCMTMwQzIzQkVFOUY2
-NUI0NjYyNkQyMDI3M0EzQTVCRDM5RTMKQkIyNDdCMURFMUNGOTI5NUM0MDlCOTFBRjQ3QjM4
-RDQ3MjAwRTBEQ0QzMTdCNERFM0FDRDc1MUU5NjdBQUY5REE3RjZDMDI2RDAxMTcxCjNFRTBG
-ODc1RUZEN0IzMUI3M0FDRDY2QzZCOTU5NDg0OTJCNTRBN0I5ODY1QjNGMzJERDcyMjkxM0Yz
-RDlFRkI0MEU0RjAzRkY5RTkyOApBQUUzQUMxQzRGMjM5REQ4OEJBRDUwQTJCQjQ0MkQxQTA2
-NjFCM0Y0N0NFMkJDQ0YxQTc2QTg2MDRDNzkxMDg3M0JERTJDMkVGQjQxMTIKNjBDOThDNzUx
-OThFREY1ODQ2RUY2RUJDMUJGOTQyNTBEMzRGNjQ2QTQzRDAwRTNBNDJBQ0M0RTNFMUE0NEEy
-QjBCN0ZENzQwMDNDNjFGCjAwQUJDOTExNEI2OTM2QTUwQzY3NTQ0RUY2MkZGQjJGMTlDRDFF
-NUFDNTVFQUVFNTQ3QzQ2RUQ5MUExM0M3NjAyNUFBN0FFOTVFMEIwQwo0RDI0MDhFNTNEN0VD
-NDg0MDlEMjFCMkRFQkIwNEM3MTIxNDg3QzUwQUM3RkE4NzkwQTJFRDU3N0E5QUI2RTQwNjNG
-MURCN0JEQzc3QkIKNDU0MkVDMTU1NzNDM0YyRTNDQjc2N0RFNTJERTJEQ0NFMDRGMzhBNThG
-MDZGMDhGMEE1NDFBOThEMzUzOENCNDFBQTVEQUIwNDUzOERDCkVBRDFCRDZCNDFDNzE1NDJF
-Q0Q4MzRGODIxODRBN0Y1MUE0QjUwQjU5NUU1MEUwNEE1MjM0MDk0MDQ5RjEwQTFFOTFCQ0E4
-QzJGN0JGQQpBQjYzOEJCQURGNkREMDJENDlCMkNDNDA2RTlGRDQwQjczNEJBNzcyQTA0MjlC
-RDk5Q0NEMDFGMTEyRTFFRTk1Q0I3RTlGNDhENUE5QkEKNTg0NjM2QTAzQjUyRjk0RkJDMDcy
-NEExRUQwRTVFMDUyMEU1QkFBNDMwMTc3M0VCOTg3MDlBQjAzNUFGMjhENjE1MjMwRDNFRTBE
-RURGCkNEMzMwNTZDRThDMjJBMUZDOEI3QjNDMjI1NkJGN0I3QzdDOEQxQ0Q2NjlBQjM1OEU1
-N0ExRjZBNDAwRDE4RkE1OUZENURFQjBDMjYwMQowMkM1OTExMjIxNkJDNkU4QzA4MTdFQjVC
-RTM0MjBCQTBDMkE0MzYzMDIxRTU3RkY4M0YwOUI1MDI2NTI2Qjk0OUJGQTMzNDJBNzBEQzgK
-ODFERDU4ODgzM0JFQTUzRTA2RDI5MjU0QjQ4MDIwMThCMDAyQjA2QjYzMzc0QTZDNkYzMzU1
-NjI0NzlEMDM0N0RDN0MxNEUyRTM4NzJCCjRDNEM1NUUxOThFQTI4QjM1QTNCOTRDRkE4OERE
-M0Y1MkMzQzE5MjQ3NUI2QzhCNjk2OEI0OUQyRkIxNjIzODU1RTFEMTY2Mjk0RTFFQQpDODMz
-N0IzREY5QjFCM0YyODExNDI4NkZBMjRDN0E1NjczMUYwNTQxN0M0MDg3MkRGMDlDNTVDM0U4
-MUQ5M0M0REQwMTdCQUM5QTJDQjcKNEFCRDEzRTk2MjJEM0M1MzNFQzYwQjRBNkMwM0UyNTNB
-M0U1ODZEODMxRDcwRTQ3NTAxQTFCNTIxRTJEQTVENjdCQjE5NDk1MDNDQkMxCjY5M0Q2OTM5
-MjUxMzA5MjhCQUVDNjM5RjgwREI0MjBERjEwQzg1NTMzODVFNzlGRjc1RDhCRDk3MDA0MTQ3
-NDc1NzE4NDAyMEZBMDNDNwo5N0VDRTEwQzhCNTRFM0FDNTZGMzMwMTQ0RjIyNTNCODE2NDQx
-RDc1RDBFQTU1RDczNDJFN0NENzRCM0I1MzExODk2QjQzRjRCRDFERDMKODJBNkE4QTBDMzc5
-OURGMjRCRTRENjU4RTZBQTJBQUM1MTIxNUMzNDk1QTc5Q0EzMjM5MjdBNjkwMzQ5NTlDQjAx
-RDU5NzhFRTFEQTlGCkIyOTg4NDVBNEEyQjQwRUZERjdCODU5OTYwOTQ3NTZDOTlEREEzQzgz
-NUVBQzM5ODI2QzA0OEZGRDVDNUM1ODJEODY5ODE4ODA0ODI1NAo2NjM4N0VDMUNCMTZCQzUw
-NjUzM0Q2MjRCRjIzMzNDQTU2QzM3Mjk1QkJENDFFQTVDODdEQUVDODBDMzY4N0MzN0JDM0U1
-MTRCQ0U0OEYKQjRBRkU5QkI1QjE2RTM2MzIxQjFDMEEyOUE0MjNBRDlBREYxNTcxOEJDOTQ2
-RDcyMEFGNUMyMEMxOTIyQTY4REEwRjM2ODM4RDAyREJGCjdDRjREMDE3QkQyQ0JCOTZBQjFC
-NTRCQzhCNzUxMzAxMDlBQjU3Q0U0RTEzNzEyQ0ZCNEZGMDk5Q0JFODI4MkMwN0QzQzYxNDE3
-OTQzMwpCMjYzNjk2RTdFM0U0NTQzRTQ4OUE5QkJERTBBRURFNkVDMEYxNzIzMjE0QUMwQzFD
-OEY2NjJEQzA1NTg2RTc1NjRENDA1RERFQTlCQjAKOUQ3MjdBRjVFNzVEN0E1Rjk3MEZCNDEw
-RTFEQUQ1MkJCMTNFNzlGQkZENzMzNDAxNTBFMkZBMDhFQkE5NEM1OTEwMEQ3Q0M3NkJFM0RD
-CjVBRjRDNTgxMUUxNzVFNERBM0M4NTczMjA1OTNDNUUzOEQ2NkU1NjVGMUMwNkZDRkU5QTFC
-OEM4ODVBMDFFQzMwMjFENEEyRTZBN0FFQwoyNENGODMyQTZFNzMxNzMyODM1RkMwQjY3RTRE
-NzI2RDhGMjJGQkVDRTVBQTY0RUY5NzI0MDdEQjQwN0VDOUY5ODc2QUFGRjJGQ0FDMzUKNEJB
-RkU0N0ZGNzVGMDZBMTdEMkZDMEIwNUEyOUVEOTYzQzczRjA0NjFBQTU5OUUwMDUxRTQ3RjU4
-NTRDOTc0NzI0QTVBNTNCNzM4OTA4CjI0RDBCNDU4QTI5OUE5OTQ4MDc1OTZEQ0VGMDdBMUU0
-MEM1RkU3NTU3RTk0OTlENkJGRjc3NEI3OTE2RjA0RDU4NEI4MThGMERBMTI4QQpGRjg1NkI0
-OTQzODVGOUE5QjJBRURDNDY4MEE2Rjk3MkUyNTQ0Q0EyNEU5NTI3M0QzOTRGRDVCRThEOTA4
-M0Y5RUE4MUE4RkJGNDRFRTIKOTQ3NzE3NjdENkZBRTYwNjE3Qjg5OTc0MTdFQzZCQzc5NkVC
-MDIwOUU2QjhEODc4REFDQTY0MUVDMzI5QjBBRjk0RTMwM0EwQUQ2MTFECjVFMkMyQzhDOTAw
-ODU3NzMwRDFFRjExRTIxOERGN0YwRUFDRjdFNTVGMTBCNUY3QzU2RTZBRjQxNEIwNjA0NTND
-MEVCRTQ4MTE4Qjk2NAo1NkQzOEM4QTkyM0Y0MkFDNTc5N0YxM0M4Njk1NUY3QzFGRkUyOTg4
-MUFCODI0NDkzNzdGM0M4RTlFMDg5NjdCNkY2NkZFOTI1RTlCN0QKNDc0Q0Y4MEJGNEY5QTI0
-RTQxNTgzNDg0QTBBRURCOEVEQjAwNzVERDNCNzU2OUUzMjYxQTE3MDZGOEE5NUM2NjIxQzYx
-RUE5OURDNjcyCjdCRjUwQ0E3NUUzNEE2MTJEMDA0QzdDQjgxOTQxQUE0NTBGQjgyNkVGOUE1
-MUFGOEQzRkExN0RGMUExODRDRUZBRTMzRjlDN0U2M0JENwowNDUyNzk1NDIwMEZFNDM2MjIw
-RjJDQUNGMjM0QkIwODhCNURFRkI1MkIyNDQ5MjM4QzA4NzVEMzk1RjhFMjJGRUFFRjA5NkVE
-QkYzOTIKQUZENkZGNkMwN0VEMDQyODhGQjczQzQwMUUyOUFGQzJBNzZENEMzRDAyQzRGNDg5
-NTVBOEYzMkQzMjM4NTczMzNBQkRGMzAyMkJBRUEwCkFFNkU0NTMxQzE4QUNGNzUwNDE2QzU0
-QzgzNEQyNUUyNDYzMzNDMTM0NTZGMkI4NjZCOTU4QjkyOUFCQjhFNDk3OTE3NjIyMzY1QjVF
-Mwo4NkZGMjM1NTc0ODc2NzY3NTg4Q0IyNEE4QzA2RkUwRDQ5NUFBMzI4MzVDQzYzNjVBNDgx
-Nzg4RUEyNDk3MkZCOEJFMTI2NTlBQ0Q4RjIKMjg3QzIzMTM5NjY0NzM3MTM1MTQ5ODY0N0NF
-RTlGNjJDMjY3MEU4RUY0ODc4ODUzMEJCNUIwMDZEOTNBMjlDRDRBMkUzNTREMkM4NUFBCjBB
-QjJDODAwQUFGQzgxRjI0QzgwQTU4QzZGQkJCODlBODg3MjYwRDAwQzU5RUY0MDIxNzZDODBE
-QjNDRjQ0QjBBMjgxQkM2MDQyQkRDMwozQUVFODhBRDhBNTc2NzRGNjUyOTAzODZDNzMxOTMz
-NDYwODJGOTQ3N0VCMDRBOTIxQjNFRTk2MDM0OUJEQUI5RTUzMjZCNUM1N0UyMjMKNTI3QjFB
-MzE3MzE4MzM5M0FERjg2MjY3RjEyN0I1MkM0OTMyMEI2RUQzNjI4NUU4QURBRDA3QzBDOTFF
-NDc5MzczNjk4RTcwOUExODcwCkMzQjlGNjY1NURGNEU1Qjk2RTkyRDBFMkYyQTE1QzVENkYz
-RDg4QUNBRjZGOTVFOUJDQzUyMjQxNzk5RUI3MTFEQ0UxNUE2OERENTI0NAo2RTgzMkY1MDA4
-NzNCMDQ1QUFCQUI4MTZFQjY4RkFBNzVFMEUxOEI1RjMyMDAyRjI4M0Q2QkUxMjE1ODI3NThD
-QTU5QTY1Q0E0M0MyOEEKNjhCQjlFNDA3RThGNzY3MTUyQTM1RThBOTBFNkE2REVFQ0JFRkVG
-QTJDRTc3OUJDQ0I5Nzg2MjI0MEZBNzJCOTJDMkUzNDI4Mjk0REM1CjRBRDRGN0M2NjExRTJE
-NkIyNURCM0VCNDk5NUU4OTRENUExNzg2M0Q0Qzg4MzA0RTc3RUY2OTY2MzNBRTZGMjI0MzQy
-RDM5MUY3RTNEOAoyRkRDMjRFMjg4N0Y0M0Y0ODM0RUJFQzNGMkIzMkFEMTMzOTk5NTgyMjU1
-M0FDNjhGREE5NTFEQjRCQzk1QjAzNTVBOTk2MTEzRTQ4MDAKOEEzODdFQjhDRERBMEM0RDBC
-MjQwOUJGOUNFRTJCMzdFMUY2RjRCNTVFOUJFMjA5NkI4REI1QTYxN0YxQ0ZFMTJCRjkxQTIx
-QkFDOTIxCjQ1M0U0MkU0REQ1RUNCNUE0NzkwNzhGRjg2ODhCQ0ZGNTZBNENENTA0N0FCRTFC
-QjREM0VBQTlGQTAzQ0Q0OEZCNEEyODNGQ0U2RkZGMQoxODg1REFFNkFGQkYxQzcyRTgzOTk5
-ODhDMEVFNjAxMERDNDFERDU5NjUzMEZBNzZFQUU1NjYyQ0ZGQTM1MTQ2QTc1RTU1NDQ0MDQ5
-REYKMUIyMEM2QTk5RDgzOEI2RjhDNDExQkEwMjJENTBBQ0M4NDdFRjk0RTUyOTA4RTgzQjYy
-OTNFNzE5QzQzRTJDNDJDOTUzQTdFQjEzOTVGCkQ1MkFBMUI2RTY2Rjc3NjRCNzdDQTNFRDM3
-QzYwNkVGQjkzMTdDRDI3OTI5NDEzMzQ1Qzc2QUVBNDYxOUMwOEE0QTAwRUY3NzAyMDBCMgo2
-QkU3MzgxNTk3MDk2MUFGN0YyRjc5MTRCNjRGODRBMUJENDNGOUQxODZFQ0VBODY1NkI4RUJE
-Q0M3RUZBMzVBRDM1RDVFQkFCMENBMDIKQTE5OUJGM0Y3NTE0NDc4RDg5RUJBMDdCMjgyRjAw
-QjU1QkVBOTBENEU4NTQzRkVBN0U2RDQ4OTk0NDA1NDg4MEIwOUVBREE0MURCNERCCjA2NTlC
-OEQ5NkNFRDY3QzhBN0MxOERENUM0MUM1MEQ4MTQ5RTg1QTkwQ0MxNzg3RTg2Mzc1RUNDMzg2
-MzY5NDIwREU3NUFCNDRBRUJDOApBMUQwMzREQzgwNDU0NzkzODlFMjMxODgyQkU2OUMxN0VF
-NTdFQUJFMDA4NDhGMTJENDA0RTBDNDQzNDBFMjFGQ0RBOTVFN0E3NTE1RDYKRjYwNkM2MDBB
-NDg4MzM3QjRGRTMwRkRFNDBCMTlGMzI5NEE4MTAyREJGNTcxMDlGNDk0QzI0NTlFOTMyNTc2
-NkRDNzEzNzVDNDE4QjExCjRCMDA2MjBCQjdFMkIzOENFRkE2NzkwMTAwNjlEQjVDNkI0Q0VC
-N0QzMTcxNkFDMDVFMEFCOEM0MTFDODk5MThBMTlGODk1NzhEN0JDNQoxMENBODZCQTk5NkY0
-MjYzRDJCN0M5OEFCNUM4QURFOEU3RDVCOTZENDY3RUE0ODQ5NThDOEI1MTRFMTc1NzQxQUY3
-MTUxODdGMEU4MDcKQjlDNUIxOUI2MzJCQjQyQjc0NTE4NzY4MTcxNDUyNjg3N0VCRkI1NjhC
-MzEzM0Y0Qzg2RUMzREUwQzZEN0RBRTE2NjBGMUUxMDQ0NTIxCkNFREU2QjhFRDNCMDNDMTYw
-MzFBN0RGQzY3QzMyQzg3RkE4M0E1RTI5ODk4Mzc1QTVBNUMzRjIwOEJCM0NBNzE4QUQwNkQw
-RTdCRjJEMQowN0U3RjY3REM2MzlDNUQ5NTZCNzlGQjIyQkRDMzcyODQ2NjQ2RjYwNzYwODU1
-QTRGOUYxMzVGNkNCMUJCMEVGRUVEMDAzM0IwOUZDRjMKQTM0RTFBQTc2NTYwRjM2MTE1N0Uw
-QzJBMTY3NUJEOTRFMEJERDFDNzI5M0U3Njk5NTE2QTEzMDRDRDNBMERBNTY0NkFDQ0M5NTQ4
-NTZCCjNBNjJEMzhFQTg3OUVCMEIwNzI2NDQ3RDBFMTk4NTM1MTI0NTUxQkY2Rjk4MjEwNTRE
-OEI4NDVDNDQxQTlDMjQ4MUUxQUMzRTU0MkFBQQo1NTM2OTFEN0Q2RTRCMzAzODU5QTUwODZB
-N0FERTE4MTA2RjE3NDc0NUYzOEY2RTMxODJGOTI2MEZFOUU5QzE5RUVGNDUzNTlENkI5REYK
-REQwMDMxRDFGODdEQTg5MTUxQjFCRTRBRjU0QjY2NzBFQkQ1NThCQjMxOEYyMTg0RUNFRTkx
-NTJBQ0EzNUUwOTk5NDBGMDk0QUEyQUM3CjU2NDgzNUU2OUU1QzlDNDdEQzdEOTYyNUFDQjFE
-NDI0M0ZGMUQ5OTNDRjg1NDYzOUMxMjZERDhDRTIxQTAyMjQxMTlBQ0E3MzEzNDZBNgo0QUM4
-QzE4QUEyMkZCMUExOTY4QjBBNkIwNUNGM0ExRDVCMjREM0VBQTdDOEQyMzc2RDQyMjkwMjY0
-M0QzRkFCM0Y4RTdEQzhCMjQxNjEKM0RCQUJCMTcwMjM4QTFBMTlCNEM4QTQ3MDNFMkIwQTJB
-MDMzRTcxNzIzRjU1N0MzMTREQjQyQjE1OUU3ODRCMTgyMkJFMUY5OTBEMTY3CjBFNTIyQjlG
-QjFCM0E2MDJCMTBBRTA4QThFN0UzQjJDRkU1MTIzNkQ3NkI3NDQ0NTZFNUE2ODk5NTI5NDc1
-OEE0MkYxMDA0RTg4NjNDQQowRDNBRTQ1NUVDQUQxMzUwMTY2OUExREI0MUY3RTg1M0JCMTUz
-MUE0Qjk0OUFBNUJGMEE1RTQ3OEE1NzA1RDVFRTQ1MTA0NzYwQzcyN0EKMDY4RTcwNTdBODA4
-RERBMzBDRkJDMDMxNTdFMTQxQUM1RTlFMEEzMTU5NjdDMjExN0VFREIzOEY5QzY2QTM0RTEz
-OEIyOUUzREU2QTAzCkMzNEQwQTM3NzQwREQwNEVGOEY5RDA4RTU0NUZERUJDNTcxMDQzQTAy
-MTY1RTYwODYzODlEQzdCQTNCRkZBNTJEOTRCRDRDMUEyN0I4NQo5QjhFQ0M2Nzk5NEVCRDM3
-MDI3MEI1OTk4QjhGMjQ2RUE0RkUwRUE2OTYzQUUzRTMzOTg4NDVBNjI4NTYwNjhBOEE4NzhC
-NkY4OTRBN0QKMjgwNDFCRDMwQ0Y0RjBCQkI1MDUzQUE3REQ4NkEyQjk0RjM3OTRDNzhGNjE1
-QzY2OTI3NDYyOUYzOTJGQjJEMzIwQkI4MkVEQTk4NDVBCjY2QjBFRjAzODQ5ODVCOTM4RkU4
-QTNGNDdCMDBDMkRDNTc1OTQ5QjhCOTMyRjNBRjQyM0UxN0Y3MkJDM0JCOUI2M0E4MTk0NUNB
-MTMzQgpDREE1RUJDOUNCOEI4Qjk2OUFEQjVDRTYwQ0E2Rjc0NkM2M0RBNUM1MTZEQjQxMEY4
-NkRCRjg3ODkwMkU3NTNBMzM4RDNGQjA4QzYwRTkKNDFBQzMwNERENzY3QkY0N0Q0OUJBN0ZC
-QTExMDM5OEJFMjFFMEY5RjAxQjZERjRDRDMyNTZBNzgwM0U1QkE5MzVERDZDREUxMTc1MEQ1
-CkRFRTA2MDdDMTRBOUE0REQwMzdCNjg1RjgzMDA5NEM1QkFDRDIyODNENTg1NEY1MzYwRUND
-OTI0MTA4RjRDMTI5MTc2QUY2RTYyNDQ1OApCQUM0MUUwNDM2OTEyQ0M1MjgxRUE5NEFGNzkx
-MjE5RjFEMDRDQTMwNjlGMzBCNTBBRTc5QkQ4Qjg1NzZCOUFCNzZFNjAzMzc4N0NFMzIKM0JE
-MjUyNDBDMDBGQTAzRkFBMjUzQkQ4M0VGQjhGRUNEMkRDNDVDMUZEN0NDMTk0RkI2MUNCQkVD
-ODgwNDdDRThBRUREQkQ5MjA2NjZCCkMyNjc2RTIxQTM5MTk5ODZGRDU2QUY1NDQwMjgwRTcw
-ODNGMDQ5ODdGMDI3MkJFRUNGOEYzQjUyNjEwMDcyMDM3MDJDOUY4MkI2NDBBRAoyRTZFQ0Y5
-RDBCQTgxRTVEQUE5NTY4OEQ2NTQ4NzNEQzkxNzdBMkU3MTYyREQyMUE3QjQwQ0IzQzg1QUI0
-OTQ2OUFCRjhGMTMzRjgwOEIKM0MyREEyQTUwMDhFMjVBMTNBNkQwRTQ5RkNGRkMwQzhEM0U1
-QTI1N0E4QzhENkIxMTI0RDcwMTdDQzAyNjNDRDk0RjUwRDMyREFFMTI1CkM2NkEwQUE3MTc4
-MzlCREFGQkU4ODkwODNDMDFENUU0MTk5NEI3Q0Q1MkU2M0E1RkJENEQ4OTYzMUE5M0IzNzcw
-NDBEQUU5OUM1QkRCRgo2OEMyMTQyRkZGM0YyQjUzREQ1RTE4MkZGNkFEMzRBMEJGNkRGMTlG
-NThFMDU4NDUwMTIzOTgxNTQ5NURBRDE0NERDRTc0ODc0NDg5OUEKNjU2MDAwRTI4M0EyMzdF
-NzRFRDU4RTI0NTJGMUI2RTczQTJEQzYyNkMzRTUyMTU1MDM2ODIyOTg0RTVFNzJDNjY3QzJF
-M0Q3OTBGRkFCCjVDMEE0QUFFMDMyNTg3MkFFOTQ4ODQzNzc2MkY0QzcwQkMwQTM2OUMwOTFF
-QUI4QTNFOEY0MDQ0NjRCOTlEMjZENkMzNUIwNDJFMTBEOAo5N0UwMjlBMTA0NDMwNzRDRjcz
-OTQ5RUFEMERDQjdFMEI4RDM5QkYzODA2RjM5RDNFM0MyMDQ1MjdDMTcxOThGMjFGQzc2RkE1
-QUJENkEKQkFGQjIxQzk0MjE0NjQxM0YwM0UwQ0RFMjQ3QThDQ0Q3QzcyNkU5OTM5NzZGMkQ3
-MzBFNDMwNTQyMjlBNDVDMEZFQzA5REJDQ0E5OEZFCkMyQzQ5QjJDNkIwMTVEMzQ4ODEyNTRD
-RjExMjQ2NTIxRDc4NURBMTJDNDhBNDczMUMzQUYxMzUzRjk5QjBEQjk2OTUzRjVFNDJCM0Mz
-NwpFQTQ2MDg3NkZEN0VCMDM2RjdCQzVEODYzMDM1NENBMTg5MDFDNTYxQTQ2QTlFMjAxQzMw
-RTYyRjIzRjNGN0IwRERERkY1OTZFMTNEN0UKMDBEMjU2RTY4MzM0OTVCQUZERTcyM0FGNTlF
-NzBEODQxQjUwMjgyNjFGQUM3MjNBRTRFMzdBREFDQjAyNzcyREZENjMyMUZFQjY1NzI5CkQ2
-NUNDRDU4QjMxMkZBNjg4NDNBQ0ZBQjdFREQ3OEQzMUFEREI3MzRCNjQ3RTg3QzdDRTI1QTA0
-MzZBMEQ0OTQ5OUZBMjcyRkNDODhGMgpFMENFNUQ3MzgyRDhDQkY3OTMwNDY3QUEzQzJCMUJG
-NjdFNjgzNTczREVCM0VCNTdEOUVFQTVFMTg1Nzg2REM5NzIxQTRCOTVBQ0YzMkYKMDlENUFE
-MkMwNjYyOTE5OEQxNUE3NEZENDFEODk3MkUxRkQ3N0NCNzFBOTMzRDIzNUUzN0U4OTNFMEE0
-REUxRDUwNzE3RTEyNTM2NUE5CkNCQzJCODI5MUQ3Mzc1QUUyMzQwODMzOTM5QkIwRjEzOUZB
-MzkyRjI5MzQ3Mjc2NkEyRUQ0MDUwOTVCRDk5MDY2MENDNkY0MDk1NEU5Ngo3MUY5NTU3RDU4
-NDI2NkM2RjNCRjQxRjRGRjZFMEJCN0FCRUIyNzJBRjk5RDBBNDQzOEJEQjRBRjY3ODlCOTA0
-MzFCN0RFRENDQjBENUUKMzVCRjg3MjYwMDY3MEIwRjE1QzE5RjM0QkNCRkM1OUM0QTJCRTM5
-NzhGNkExODREQjRBNDc0NUI0MDFCQUNCOEM3N0RCNjJEM0FCQjg1CkZEQTIxMjkxMjMyNUM1
-NUM1QTZEMzNBMjRENzZDN0JGNzJBNkE3MTBEQUE3MzkyQTdGN0NCMEE2MzM5NTA1QUM5MzVE
-MzQ2QzlCNUUyRApEMkU4NTYwODM5MkIzQTI1MjM3MzM3RUM4RjU4NTZCRjNGM0VENkUxNTE0
-MDUzRjRGQUNEMTJBOTREQUZEMUMxMjI0OUE2N0UzRjA4MDUKMDhDQkU2OTE2QjJERjNEOTQ3
-OEM3MzdBMTQxQUY3QzU0RTg4MzJERTgyMjgxNzM2NEVGMzYwOTY1OEM2NTkyM0VENjY2RDg2
-MzgwQjk5CkFERjdFQTAyQzlEQUUxMTFEQ0YzOTk4NzhDRUE2MEY1RDVCN0MxOEQyNDRBRTc2
-RDZCOTc4QkExN0REQjcxRDNERkMxMjI1MjIwMkIzOQo2QjAzRTM2RTM3NkE1NEUxMzA1QTAw
-RDA3NDQxOUE4RDA0RDUzQzNEQTgyOEEzNkM4RjQwQzQzOUNEN0Q1OEE0ODk2MkU3QkU5OTJB
-OUEKQTgyRUM4NTM3QjI2OEFBMTNGRDFCODgyNzVEODdCRjAyNDREN0I2MTUzM0IxNjczMEJC
-OUVGQTY0M0E1Qjk2QzRFOUMxMDc1NUE4NUE0CkY0QzcxQUM0QzNEREQzMDhERkZBMDY2MTYy
-QjhCN0Y3NUY3QkVDOERBNDBDNTE5NEI3NTk3MzYzODEzNDlBNjIxQzQwN0EzNEI5MDg4RQo5
-RUJFMzQ2NTA1ODJDRDc1OEUyNjk4NDczMjhBQzQzRUI3OUI1NzI1RkQ3RTUxNkI4QTk3NDI4
-OUQ4QzVCRTkwQzMwMTMyM0RFRUZDQzAKQTE4QUY2NjMyQUE4QjgwQzhEMTg4Q0VDMjc1QTkz
-RjY4Q0Y4N0ZCN0M2QzE5QkZGMkMwNzAzQ0ZEMTVFQ0NBMTYxNjBBQ0Q2RTNFMTZCCjAwRkJD
-Mjc2MTZDRTAwM0ZGOUE2MDU2OTYzNERGNkQ0Mzk5N0E0REMyM0FGQUE4QzJDRTlDNDQ2QjY3
-MzU4MUZFOUYzMEE5QTIzMjNFNApDMjhDN0M5RkJBMjdBM0I1RUFGQ0NBODJEODVCMDVDREI2
-QjM5QTdDNkIzNTg0RjQ4RjRFM0ExRjAxM0FERTQ3MDIzODMwRTQ3RUQ4QzkKNUNGRjNGNjQ4
-QzM4QkVBMUFGOTEzNUUxNkM4N0E0MjMxMTk5NUUwOUU3RkI1MUYwNkE4NzEwMkJGQTgyNjND
-MzIwNjdCMjZCMDk0MUM4CjRGMkY2MjAzNUQ1OEU5MTUzRDg5RDgwOEFCNzE1NDVBMUJBREFE
-MTgxN0QwREMyODM2QzYyMDRBMEEwNDE4QTJENjJFRkMyRkFBNjNDNwpBOUQwQTVDREFBNUYw
-RTQ5MTI2OUIxMjdCNUM3MTZDM0Q1Q0VFNkJBRTdGRDhDNEY4NkMwNjMyQUU3NTdBRUE1NUYx
-NUNDMEY5NUQ3Q0MKQzQxRUU5QjFBRDkzNDlDNEY4MUYwOTk4RUQxMEIxRjY4NjI3MkUzNzM4
-NjBBQzJFQkI5ODZDMjU1OERFOTg5REZBRDk1REJCRjlFQjU0CjU2Mzg0QTAwNzhDMTMzRTkx
-QUM5Q0Y1MzY1QTFFNzMzODM0QjA3MDFCNEZFNDM5NjQ1MTdGMEFBMUMwMTFCQjZBNzAyOUY4
-RDVBMjMzMwpCNjdEQTNFMDE5RjBEOEQ3RDUzM0FEMzI5MUMyQ0JCMUVFOTIwRTk1MzEyOEQw
-NkJCQzUxN0M1MThBRTlBMkRENDlCOTMzRTkxNUFFRUQKOTgxMEM2MTkwMzVBQkY5REMxNDdG
-NjUzQURCMTI2ODE2OTAwMkUwMzJBNDI1MDEyMDBBNjg1RDE5MDcwRjEyRjkxMzdCQjFEOUYy
-QThBCjQ1QzVCNTJGNTU3NzMwNUFGOTREOUM1MTFFNUU4MkFDNjdBMjIxNjQ4MzM0NzFDQkI4
-NjY4RERDODhEOUM1MDA5MTcxODNDNUUxNEE4MgpGMUQ5QTBBQTNERjJEN0JFNERFODQ0QkVE
-RTU1NzAwQTI0NzhFMTIxNTU1QzdGNjUyOUZGQkIwNTIwMjZDODA3NzZCNDQ3RjFGNUJFMEUK
-ODVBQUYyQ0YwOUJBM0IwOTE3MjUyRDY4RDY3MTAwNUQwRkEzMjhCRDIyNTU1M0Q5OEYyQzQ3
-NkUwODBCRThFMDNBRjRBNzY1MTU2M0ZCCkZFMDhDMjMwRjNBOTU2RjJGQUY3QUJGODY4QzA4
-Q0UzM0E3RkVBREJCOEU2RDZBRjM4QTgyMUNDRDhCNEVGRkMwMkZFMjNBMzdDNjkxRgo2OTI3
-RDQ1RjU3MTBERDVGQUM3NTA1RkIzQTBEQzMxQzc2Njg0MkI0ODJCQjc3RERCMzk5MDM0NkY2
-MjdFMEUxNjU3REE4QUJDOEVBNzcKOTYzRDZDQjgzOEQ5QzRFNThDOTQzQzNBMjcyNTgyQjNF
-NjM3NzEwNzBBNkY2MkJCRTdBNEIxMUI4Q0I1NTA1NDdFMTdFRDVERTZFRTE2CjFCRDkxMTZD
-QkEwRTBFRUU5MTBGOTg5NDhGNzQwRTdBNTQzMDE3NjcyMkJCQ0RDNEFCNjZCRDM1NDE0NDNC
-MDk2MDYzQzgzOUU1M0IwNQpBNTVFNzIyMzVCRTIyM0QyODZDNDMxOUZENUE1MTYzMjVDOEJE
-NDgwRDE4NjdGMjAxMzU5OTg0NEZEMjQ3OEIzQjUyNTQyODE1Q0U5NDUKRkZDOEZCRUFBRjlC
-MDcyQ0I0OTg4MjUzRUY3MEU0MkExRUQzMTVGRTJDNzU3MTM2N0U1MjE3QURGM0FFNEZCNjc1
-NzVDRjQ5QjFBMjY5CjE1RTY1M0I1QTg2RTNGQUUxQzdEMDRFMUFDMjFDQTVEN0U3QkRCRUEw
-RjU4Qzk5NjJCNDBBMTY4RkQ3QTI0QjRCRjEwOTY0NTQ4MUVCMQoxOEQ0OUJCOTlCMzU0MTc1
-NkUwREFDMEUyMzI3RDFGQUNBRUQ5RjdBNzY5M0ZDMUExNUE1NzE1RjFGRDFCRkJDQTdEMjMy
-RkNGOTY2M0YKQjBDQjM1MjU3MEE1ODA3RDE3MEU1QjZDNjcyN0Y3ODI4Rjg3RkRDOUQ5MzAx
-QTg0MkM1M0EzOEM2MkM4MDRDQkQ2MTE5OTJCM0ExQzhFCkM3MTAzRTc2Mjk0RjdFNkE1MDkx
-NkI4Q0VBODJCRTVCN0VCNzc3QUIyRTdBOEM5NTU0MTRDOEM2MUVBMzMwQkQxOEM3NDFENUVC
-NkUxNQpBNkRBNDZCMzAzNDVGNEQ1NkNFQTU5NUNDNDgzOEJCRjk5MzM5QkNFODI1ODIzMTY4
-NDc1MTNDRUY0M0I3REVBQUExN0M3RjNEQjgyQTEKMzQ3MUNFODFCRjc4OTQ3MjFCODBGODE2
-NUJDQzNGNzYwMUQ1RDNERjE3RDJGMzdDNThDNUU5RDg3RjM5OTBFODM4RTU1RThCRkY3MDg3
-CkJCNzlBMURGQzMyMTYwMkIzODZGOThEMUQ5N0NCQjA3RjZEN0IwNkY5MDBBNzdFNDg0N0ND
-RDY4OUIyM0MyNzdFNjQ3NjMwMEQ0RDlDRQoyQjVCQjVDQTIwNjJCRkYwRUYyQkIzRDRBQkUy
-QTlGOTkwRENGNzQ1NjhEN0NEQjcxN0U0Q0RCMDdCOTc2MTQ1MDhFRjM0RUU5MDFCQUIKQjQ3
-N0Y3NUM0MUIyQUFFQThGNDZCMjE4REQwREU1QkQ4MkYxNzE3Rjk2RTE0QURGOEQ3MzY2Mjc0
-RjNDMDc3NjgxRTBDRjMzQUREOTUzCjg5MjJENTM5MDc3QzU2NDMxOTA5RUU4QzFFRkY3NDY3
-QzlBNUUyMTUzNTAyNzg1MzRFNUE5MkM2QkVDNzJENEMzNEQ4RDEzQ0M1NDVCRQo1NDNCQkMz
-NzE0NDNGMkQzNDY3MzdBM0MzOTBBMEY3RTI4NEQ5QzQ2NjlEMzc0ODM5RDNFRDhBNDAyM0Yx
-Rjk5RkQ5MzU5ODc1NTAwNUIKQzJBMzRERkNDNEQxOUNCRDQyMkVENEU4NTdENDE5QkUzQjlF
-MTJFMDFEMDMyN0M1MUQzNTg5RTgzMzI1ODk2MDE4QzlCMDQxN0ZEODc2CjBBRUJDNUUwREM4
-MzY3Q0JBQjExQjI5ODlGNEVDQzFBRUY4N0Q5MzU3MjI5MTJGMTgwQTcwREZDRTk0MERFMzg4
-MkE0MTZFMjlCQTE0QQo5Qzg2RTc3MzgwQ0U0NjQ1ODNGMzg1RkYxNkY3RkJEQjYwN0FBNzQ1
-NURBNzBDRDhBMEQ5NzE0OTYzQkY3OTFEMkQ1RTJFNTUwRDEwREQKMTA1Rjg4REFCMUJDMUY2
-ODhCMUVFOEI0MDE1MUU1MzNCNkQ1NkZBQzNBNEE5OEJBRDg4MDE4NjQ3MDlBRkY2REZCM0Qz
-RUVENUE1MzJCCjgzRTkxQ0Q4MTI1QTdBN0FCNjY2OEYwNjZBQjc5NjgzQzZBM0YxMjlDNUFE
-QTk0MzFCMDZBQkYzN0E3MjQzODBDRUEyNTFENjdCNUZEMgpCOUM5NzMzNDI5N0I5REI4RTg1
-Q0JDQ0QxMzkxMUFGOERDMjQxNUQxRDhFNzgwNDgzOEQzRDAzRjlEMTQzQjkyM0Y1QzVCNThF
-MjhCNzQKODIzODY2NTA2NUExNUE1NEI0M0NFOTYwODlCOEU3REI5MDY5QjJCNTMyMTBGNUEw
-M0QxRUNEMkY4M0UxMDQ0QUE1NjFBRTY1NjgzQTQzCjlGRkEzRTFGQjYwQzFDQjY0RjMyRkE3
-MUUzRkI1NTdERjNDQUJEODdGRDJGOTQ1RUIzQzY5NjAyMjg4MDhFMUY3N0IyM0RGOEM3QjVC
-MQo4ODlCQjRDMjczOEVFNUQ2MDc3NTlDMzNENUQ2MTc0MTk0QUE5RjhGOTBEOTY5RUEzREFF
-ODM0QjM4MUEyRTA4RTVEQzlFQjU0MDY3OUYKOTRENDkwRjc3M0ExMDlEMjYyRTA4Q0FFNjBF
-MkU1NzY5MEU4Q0Y3NTZGOUFDMTEyODQ0Q0FDRTAyQUM5NkY1MTIzMUZEODNCQjlGRjcwCjEw
-MkZDRkUzRENBQ0M4QkY5RTk5QkQ3QTlDOUNEOTI3OUI2NEIzNjAyNDQyNjI0RUZGQTYwNjMy
-NkJGOTZEQjlFRUREMTZBNTE1NDUyQQo3RjI1RUQzRTc4QUNFMTVGRUEyQ0Y5RjFEM0M2QTA1
-NDFENDQxQTlEOTRFRDlGQkU5NDdBRjM1QjcwQjIxQ0RCQzAyNTI5QzI2NTA3MkMKOTk2NDJF
-REM4NzhEOTJBNzY2NEYzN0Y1RDlEQzE3M0Y2QzI4RjkwMDU4NkM0ODk2MDI0MUUyOTMyRjEx
-Mzk4NEJBNTM0RkUyNDU3RjQ1CjE2RTdGRUJDN0E3NjczRThCQ0Q0QzhCMDVBOEQ5QzczODE2
-NEE0M0RCN0Y1ODFGQUE4NzI0RDEyMDM1NTczQkU4MDBDMDMyQUFEQjIzRAo5QTI3N0JFQzM4
-N0UyOUYyMDFFNUY0MDkxQTREQUE0NzkyQUJGRkQ2NTc2MkU2NjM3RTM1NUI4ODM0NzkxMzcw
-REI3OUZGQkFFOTkxMDgKOTIwMzZCNTcxM0Y2NEEyODc1MDkyODI1NjE2QzY0QzY4MjdCRkM2
-MEY4QzBEMUVCMEZBRjA1MTYzNDhBNzg0NkI2NTdDODA5MDMwMTEyCjFGRTNCMEYxRUI5OTJB
-QkU3M0YwODQyQTVFRTEwRDY0MzY0NDc0NzEwNDRFQjdEOTI0N0IxNjlDM0Y3QzM3QjUxMDlB
-NUU3NjUwQUREMQoxNkU1MkMyMTAyMkZDOTkxNzU2QjkzRDIxMEM2NUY1QjdGNjdDRDM4QjQ4
-NjNGOTBEM0ExNzQyODc1REY4RTZCMjREOUUyN0Q3MjY1MjEKNDMyQ0JEMjI1RTBERjM2REMz
-M0I4RThCRUQ5RkU4OTdFNzcwOTg4MzJCOTE1NjcyNURDMzhFRTgyNTk1NDgxQTc2RDE2NkIz
-NzA1NUVFCjg0RUVGMTg5OUQyNDlERTQyODBGN0YxNUM3NkMwNDQ1NjU5NDlFOUU0RDQzOEYz
-MjdFMDUyNjVFMzRGQUY4MTJFNjYxNzcwNjU4RjJGMgpCQkJGQ0M5MzNBRURBRTdCRTE3QTQw
-ODgwQTE1MzQwOUMzNTdGODMwRjFGODQ3RDkxMTExMzU0NjhEN0EzNkJDQjFFNjlDQ0ZGNTdF
-MjYKMjBEOTdEOTg4NjY5RDczMkE5QTRGNEVEMEIxQjZCNTQyRDcyOUM5RDJGRTE1REQ4NTg0
-RUNENDU4QTEzMDVEQzcyOUM0NzcxNEI2REEwCjMzQTBEMEUyMjE1NzAzOTdGNjFFNjdDMDU2
-RjY2RUY1MEJFNTkxQTZEQzNFMzI0NjkwOEI4RUY0OTczRjc2QzQ0MDNCMTcxNzVCMDQ2RAoy
-MzBGMTdCOThBMjE3RDM0NkYwNzk2QTc3QjZGMTlCNEIwODg5RjA5QTAzQjRGN0JFRjNCMjQx
-MjE4QTg1QjVDMzRDNDQyMEI4N0YwRTgKQUQ5NDJEMEEyMzJCNjZGQkJFNDlEMjg2NEY3QUMy
-RTU2NTJDQ0U5MUMwRkE2RkFFNzk5NzFGMkQwMEU5NzIxNTFCNjExOTExOTBGOUU2CjlDQzdB
-NTFCNzc3N0FGMEVGQ0FFMEIyRkJCNjI2MjM1RDBCOTQyMTM0QTg1RUQwMTY4RDJFMEU1ODY1
-NEQ5NEJDRkFEMUQwRUFBREMwMAoxMTkzOTA1MjI1OUYxOTMzMjREQkE0NzlCRjU3QUZERTA1
-MjM3QTA4NDQ0ODg4RjA4RjlCQTExOTE3NUM3NzY0MDI0OTBEQjI5RkE5NkUKQjBCREM2ODRD
-QUE4RTBDQjQ4RUNDMEY0MEEwQzhGMThFMzdFRDA0MTIyMDA3Q0U0RTExRTFGRjM4OUVCQzdE
-RTlGMDc4ODhFQzFERUI5CkE1QzA4M0U1NzgzMEMxRDMwM0QwMzQ3M0NGNjQ5QzgzRDAzQjE3
-MDQ1RjNCNzRBMzI0NThGQjk2QzU4NTZGMDJCNzI4MjZCNjRENDg2NgoxM0M3RjA3RDJBMzQ0
-MUM3MTU0MkVDQzU2RDY1RjJBODBCNTc0NDYwOEQwRENEQzE0MjA0QkMwMEVEOEVGQjY3RjdD
-MzE3OTQwMTFDMDMKOTNDNjQ1ODVFQzhCNzQyN0I4MjQ2N0VBMzJBOTAyRkExQkRFNjkxRkM3
-N0NDNjE5NTJDNzJGODZCMkZCQTI0MEQ5RDBDQzU2NUQ4MDA2CjRCMEQ5NTI1Q0UwOUZCQzFG
-N0E2MTA0RUE1RjVBRjlDQUM0QTFDMTg5MkJGNzhFRDU1MDBGQjVBRkVDMjk1MzJBRTdFRDk5
-MUNFQzI4RApGOUIwNzZFOTVDNjRCOTFFMEQyNjJENEVBRkUxQzI3RTI0NEMzNkI1Mjc2NDY2
-NTJGNTRDMjNFM0JFNTlFNkEwQTJCMTIzQkIzMTAxRkQKRDkxQkIyRjNCMzEzQ0EwQjAwQjEx
-MzJBMzg4NjE3MkFEQTBBMjM0RDgwNUNEOTVCMkQKMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAowMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCjAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAKMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMAowMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAow
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwCmNsZWFydG9tYXJrCiUlRW5kUHJvY1NldAolJUJlZ2luUHJvY1NldDogc3Rv
-bmVzLnBmYQoxMSBkaWN0IGJlZ2luCi9Gb250SW5mbyAxMCBkaWN0IGR1cCBiZWdpbgovdmVy
-c2lvbiAoMDAxLjAwMikgcmVhZG9ubHkgZGVmCi9Ob3RpY2UgKENvcHlyaWdodCAoYykgMTk4
-NywgMTk5MCwgMTk5MiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gIEFsbCBSaWdodHMg
-UmVzZXJ2ZWQuSVRDIFN0b25lIGlzIGEgcmVnaXN0ZXJlZCB0cmFkZW1hcmsgb2YgSW50ZXJu
-YXRpb25hbCBUeXBlZmFjZSBDb3Jwb3JhdGlvbi4pIHJlYWRvbmx5IGRlZgovRnVsbE5hbWUg
-KElUQyBTdG9uZSBTYW5zKSByZWFkb25seSBkZWYKL0ZhbWlseU5hbWUgKElUQyBTdG9uZSBT
-YW5zKSByZWFkb25seSBkZWYKL1dlaWdodCAoTWVkaXVtKSByZWFkb25seSBkZWYKL2lzRml4
-ZWRQaXRjaCBmYWxzZSBkZWYKL0l0YWxpY0FuZ2xlIDAgZGVmCi9VbmRlcmxpbmVQb3NpdGlv
-biAtMTAwIGRlZgovVW5kZXJsaW5lVGhpY2tuZXNzIDUwIGRlZgplbmQgcmVhZG9ubHkgZGVm
-Ci9Gb250TmFtZSAvU3RvbmVTYW5zIGRlZgovRW5jb2RpbmcgU3RhbmRhcmRFbmNvZGluZyBk
-ZWYKL1BhaW50VHlwZSAwIGRlZgovRm9udFR5cGUgMSBkZWYKL0ZvbnRNYXRyaXggWzAuMDAx
-IDAgMCAwLjAwMSAwIDBdIHJlYWRvbmx5IGRlZgovVW5pcXVlSUQgMzg3NzcgZGVmCi9Gb250
-QkJveHstMTc5IC0yNTAgMTI5NyA5NDN9cmVhZG9ubHkgZGVmCmN1cnJlbnRkaWN0IGVuZApj
-dXJyZW50ZmlsZSBlZXhlYwpFQjdFRUI4OUJCOTQ2RjE0MzczOUE4MzUyOURFMzM4MUYzNzg0
-Q0MwNDlEOUEyMzJFN0UwODg0RjBGMjc3RThDNkU2QjBDOTVGNUUzQ0QKREZFRkYyRjQ2MENF
-MDZFMkZDODVDNjg3QjI0NTJGNjY2NDkzQUI2QzU1QTIwNzVDNjFGNERBRkZCMDU0NzYzQjk0
-OTJFNjI0RjVFNEEzCjhGMTFFM0JDNzZFRERBQTVDMjI4QkNEMjBGMUJGMjI4M0U4MTMzRjA3
-RjVBQTkxQkZGOTY4MDg5ODVEOEMxNzM2RThCQzc1ODc4MTMzOApGMTJDQzYxODgxOUQ0NzZC
-NzY3NENCRjZBN0IzRjEwMjVBNzI5MUM3QzA3NEIzMDU1RjI4MjQ5ODQ4NEM2RjBGRjhGNjQx
-RDBDRjZGRjgKOEUxQUJEODMyOTYxQjg5OTU4MzhDOUMwRjZCRDA3NTkyNDUxMjg4NTQzOUI5
-MzY5QjM3QUJEOUY0NzRCRjg2NDZCRjlEQUQ1QzVFQzE3Cjc5QUI4REU4MkMzRDA5OEU2QTY2
-MzdEOUI0Q0M3MTc0QUJEREVGQkQzMTgwRjBFNjJFMUU2NTBDRjJEQURBQTdDN0E2QjE5OTFF
-RjlDNgpCNTA0NjY5M0FGRDhCMUNFQzcwRDg1NDA3MDI3ODY0RjcxNEU1OTlERjlFNEU2Nzc2
-Q0Y4NDY3MjE0REFCNjkwMkVENUI0MEZBRTQyNDQKODJFRDQ1QTdCRUNCMjY5NDE3MjcyODFG
-OEUwQjNDMTVFQzA0NTEzMzQ0MDA3MEFENzI3MzZGNEQ4N0E5NjMzNUNDQUY4RTZBQTM4MjI5
-CjhDQjdFREE0OUY5NjNBOUUxMTlDQjcwQjk1MjBFNUQ3QUFFREQ1NDk4RjBFRDFDOEIzOTAy
-NjM3RTcxNzM0QTdEN0UyNDEyRDVFQjc5MgpCN0I2MEJBOTM1NTYyOEJFRTNERkRBNUU5M0Iz
-MDI2RUMyODg2RDQwQjIyNjg1QzhFOUJFNUUzOERFMzFGQUI1NTFBOTc4RDA5NUM1NUMKRTNG
-RUM0RDZFRDY1QzcwOEYzNjc2RjRDRTVGODNGNjE0QzAyQzhGMTA5RjFBN0ZFOTNDNjAzMEQz
-MDMyMjdBRjBFRjg0M0M0NUYxNUIyCjI3OTc4NTJDRkVBMjZENzlBRTI5MzRFOEI2ODM3MzJC
-MzA2RjkxMjVBREFBMUE4MDJDOEI4MjYwNUQ3Mzk1RDBGMjJDNzdDRDFCMjBFMgowMkJDMDgy
-MDE1RTI5M0M4RjFEOEQ3OEEwRTQ1NjU1NDAzNzFFQjNCNTEyNTZCQTcyNzZCMkZBQkEyQ0RG
-NDdEMzRDNDQ1RDAyNTVBNEIKMjNBODhDQjQ0M0I5OTc4MTNFQUNFQkZGNTFGNUI4QzlCMUI4
-RUM1OTY4QTE4Q0EyNkJEQUUyRjAwQUUwMzREREJFNERERDU5OEVDRTYwCjUyQTlCQUVDNDIw
-RkUyNzhCMDhGNjRCRUYxMDY5QkQxRkQ0QUI4QjJBMTNFRDNERENGRjgwNzY1MDFCQzhBMDE1
-NjcxNUVDMTMyRjYzNgo3MTFFRTlEMEQ4Qzg5QzkzMkVFNUQxNkY4MDk2QTlDNDU2RENFN0Y1
-OTUxN0Y4NUZBNDA5QjYxMTBERkMyMkEyMzkxQTAwNTQ5MkJGRjAKQzg2MTBBOTIwNEQzOUFF
-RTUxMjcxRDM1NUNFMjAxQTU3MTk4NDIxMTJDODg2MzJBRkIwOTdDMzY4RUFCODk3REMxOTU3
-QjAyOTYyRTJCCjNFNDczMkY2NTI3QzI1QkM3NkFDMDQzQjczMDBDQjE1M0Y2OTcxQzAzMzVG
-RDNDNkFFNUFGN0M1REE1NjIxRDAzRkFFRkQzQjhBREI5OAo4MjcyQzYzODA3MDgyMTBCRjE0
-MDgwOUU0QTE5MTE5M0YzNTQ3QjJFNEQ0M0Q0RTk4MUY3MTQwQjk0NDczQjkzOUJFNDU4RTNC
-NjlCODkKMzNBREJCODJEQTgwQkEwMUIyRkY5ODc4QkU5MzhEN0UxRTRBNkU3OUIyMUMwQjUz
-RUU1MTBENjM3N0UxNzhFOEUzNTU2MTI1RTQ0RDk3CjMyRUNGN0E3QzU5MUFEMjhCOUM2NTE2
-MjlDQzVBNTZCRjYxMUUyQzIxOTlERUM1N0Q2MUMwOTlFNURDRUY1NTI3QjlCMjI5OUZBNjRE
-RgpCMzQxMDE5M0I3N0NGNjAzQTA3M0QwNzg1RTFCQTlDQjFFM0YwQUI4ODU5QTg3Mjc4NzY5
-QkI2RkNCMEMwMUVCQ0I0MEY4MEJFRUM0RUUKMDI4M0NCNDgwRTJCMzE4NjNDMjEyOEVENUFB
-OTU5NDRFRDc0ODgwNUY5QkJDNzBGQTc5RjdBNDBDMTc1RjhBNjU1QzExQzAxRkE5QzJCCjlF
-MEE2QThGRTVBRjVENkUzNDJFRDE1MDRCQzMzMkVBMEYxNzg4MDgxODA4QUI4QTQ5M0EwNzhB
-RUNBQkFCQjdEMEQ3MTgzQUQwQUJENgo1NzYxMTk0NTZEMEI1MEIwQUM2QzZDM0RERDQ0QzY0
-RDREMTFBNzZEMkMzRjVGQzUzRTYyNkIxMkU5MkQyMkI3NTdFODk3NDlBMUNFMjYKMkM4MUY3
-NjQ2RDlGMjRFRTAzNTBDMzA5QzBEOUE2NUQxMzRGQkQyMTZEM0VDRUI1NDg0NUJFNkZBN0Q2
-N0UyREQ2QjFGMTI2MkFFRUYwCkExMzRBNkU2MzlBMkUzQTZDODExMDAwNDA1N0JGOURBNDg3
-MjhGNTBENDg2MTYwMTIyRkI3REU2NTg3RDQzMjU4OTYwMDM2M0NCNzYyMAo3MjhFMTA0MDVD
-OUI1Q0Q3NTIwRjQzRjY0NzJGNENGNzFGREY4Q0Q5NUU3ODk1MDQyMkRFQTgyQkJBRDJBMzdF
-RkMwMUI3N0MyOTYwRUQKOUE2RjIxMzMzNDE4M0MzNEI1QkM4RjkwNUJGMzVDQTE2MDRGNTkz
-RjE5MzlCNzU4MjQyM0IxOTg2NEYzM0M3MjBERTZEM0IyM0IzRDgwCjY3NDc2MUNBNTlCMTU2
-MUY2MDk0RTQzMzcxNEVEQjE3NTIzRDI5MzA3OTUwRkU2N0IxMUZERTJBQzFFNDgzMDNEQkZF
-RjA2RUYxQjAwQgo1NzIwMUQ3Qzc4Q0E5RUMwNzk3NjAwMjE1MTMyQUJDMzVGQzgxODQwOTIw
-QTMxMUU4QzdCM0IxOTFDMjBGNzZENjY4RDA4MzhFNUEyQkQKNzEzRDhGRUFCNjhDRUFDMzY1
-QUZFQjk4NzQ4MEM1QTc0MkIzRjg1RDJDNkIzRERDNDZFMkJDMUMyN0IzMTZGNkMyRTk0NDg5
-RTZENkE4CjkwQThDMjJCNzFBNzRCODk3MjEwRTE0M0JGRDE3RUZGNTU4QkI2N0VGRDIxNEY2
-OUJCQTJBMzQ2QUY5NTMzODQwOTMxOEE5Qzk1RDhGNwo3Njc0OTg1NEE3Q0M0QUVGNDA0Q0U0
-MTUyOUMzMThDMjE2NUUyODIwREJBNkIyMEU2QzQyMzE4Mzk2NTIyRkFCODAyNzI4OUE5M0Iz
-MTYKOUZDM0VDRUFENjFEMDk5NTNEMjA2QTgxNjMwQkYxOEI2RjExRTI4Qzc0OEY3MUI1RkQx
-MDVGOTEzQkUyNkZDRTkyN0YwNjExQzdEMjAyCkFBQkE3MTRCNDdCNzU0RThFOEFDQTU4Q0ZE
-NzQyMUM1Qjg3OTNDODMyMzZEMzc1RUY1RUM1OUJDNzFCNUE2M0MyRDRGRDAxQUI3MjA2NAo2
-MzRBMzU5MkJGMTIxNEUxOTJGNTIzODlGNkFCNEE4OURDNENCQzFBOUY0QjI2N0EwQkNCNjEz
-NzQ4N0Y4MTNFRUEwQzYzMTBDRUVDRDcKREFCNzgxQThDMThFMDhBMUIyMEJEMkNERjU4REM3
-MkM5RDU3RUM0NzIyNTRBQkZCMTU3RUU1NEM5NjkxNTBERDk3QTMwRUM3QTc4QjlDCkY4QzE2
-M0ZBNjE4NUIxRTM5OUNGRDBCOTMxNkI3MEZDMTFBMTUyRjcxREM0QjlDOTAyQkQwNUYxQUE3
-QTY1NUVDQjFFNjlGRkJGN0NFRAo3MUI2NjQwQUE4QzUyOUFGODIyRkQ0RDE3M0NBQ0Y2NkRC
-MTlGMzVBQkEzQUVCQ0REQ0VFRUEwNjFCMDYwMTE1NTNCODZBMTI5MTg3RjkKMjZEMThGRDY0
-NDY2MDAwMUM3QzFFQkIwMkMzMzQ0RUYwRTg4RjkzQURDOEYzMzRFQzRBQkQxNUQ0NUMzMzIy
-MUE1QkJFRUM0OEEzMjEzCjJCRUMyNTdGNEExNTRFMkIwNDAxNDU0MTM4QjgzNDhDOUI1Mjc4
-OUUxRUNCNUMwMUY3RThCMEVBQjJBRjM5QjgxRkY0QTdBMDY5OTY0MwoyNjdENzhDMUI3OTQy
-NDNBRTdFNEE1RTU5NzJEMjY1M0JFODUyOUZGM0FERTE1QjhEMkQ5Q0VEQjVCMTI3RThFQURE
-NzREMkU0NUZCNEIKNDcwNEIyQkM3REM2QjkwMEE2NkI1RjE5RjRBOTJERjkyRDM0MzNBNzEw
-NEI4NjlFMzFFRUQwMTEwMURBRjlBRDVFNDI0QTg1NUNCRDJBCjlGMjQwNDJBRUY3NjcxOTYx
-NjY2NzRBRUE5QjREOEI4NzFGODRFQTc3NkVDREY1Rjk4MUFFQkI1OEQxMzlCMzNGMTg4QUIy
-QTk5QjgxNgoxRUZGOEQ4OEU2QTU3QzQ1OTU2RTdFQ0RGQUQxRDM1RDZGNTFCM0JENjJGNjlF
-MTVGRUE1NjQzNTVBMDU1NjNBMTMzREFFM0U4MjUxQUQKNkJCRTVDMkU1OUNEMDA2RDhGODdB
-NTFCQ0UwNzJCQzQwMDk4REUwQkRDMzA3OEMxNzA1Q0EyQjUyQzdBMzYyOTc2MkY1OTk3QzYy
-RUI3CjkyQUQ1MkU1RjUxQTAzNUE5NDcxMTBCNDFEQUYyQzNENDBGNDVFNUM3Q0RFMDlCNTM4
-ODBCMTYxNTkwQjcwNkRBRkQzQTk4NDM2RjgyRQo3OEU3RjdDMERGQ0I2ODA0QjcxOUVGMEFF
-NzY2MzdDMzhEMDJGODA3NURDNjNGRDQ4RDg1QUE4RDY1OThEQTFENDg5QkRBMkJEOTEzN0IK
-NTZFRkI2QkIzNzIyMUY3M0RFN0JCRjA3QTFFNkQ0NjU3QUM1NkVFMkJDQTUzNTY1QUJCNTcy
-Qzg0QTBEMDIzQUM5NDU2ODFFRUU1QjhGCjU2Njc5RTU1NEI3MTNFRjI3N0Q4NDNDRDk5NzJB
-RkU4NTFEN0EyMTM4MjRGRUJDQUVGMkYxNTlEMUQ5NDRERUZEMEM3RjJGRjAxNDU2OAo1QTBG
-NzcwOTM3NkZBNzc1NUZBMEU5RTJFQUY1ODI3RTJGMjNBNDUyNTAyRjBDNjlDNTFBOTJCRjAx
-QzNDQ0Y5NDdCNTYwNDE2NENFQjAKRjY1MTkyMjQwMTdEOEYwQUM4ODg3QzZFODNGMEZGQ0JE
-MERBQTU3NTIzRDIwOUVDREMyN0M2Q0RDNkE3MDlEMzg0QUMyNEZBMzM1MEYyCjcyNTkzQzVG
-QzA1RkNGQjRGMkVCMEQ1NDI0Qjk1OEYzRTVCODNEMjQ2MkM4RTMxOEE5OTRCNTBDMUUyQUUx
-RDBGRjc5ODgzN0M2RTVDOAoyM0Q0RDZGOEQzNDA0M0NGQjJGRTlBOTQyNzExOTgyQkMxMTRE
-MTQyNEI3RTM1OEYyOTdCMjI0RERDQzYzQUIxMzAzREM4Njc1RjEyQTcKQjM4ODM4RDhGMzQ5
-NUQyMEFGM0Q0NTIwMjYzOTdBMDAyRTExMkI4MjY2QUE3NkFBNEM4MDY2REY0MzY0N0ZCMkRC
-Rjc0RThEMzcxNDY2CkVGNkMwNUJCNENGRjM2QzNCNDZENjYxQkQwQkVEQ0E3NTNDQjA2REYw
-N0VDM0U4RjJGMzk0ODhBODdBNzdCOUZEMERBNDc3ODdENEU4NAozOTA1REVBQzJBODNGRUVG
-QUEwQzJGOEExOEQ3NTY4NTVCM0ZGMDIxODhGREE2RjU1NTE0MEUyMjM1MjgxRjFFQjBFRDBF
-MEY2RjI2NDUKQzM2QTQyMzU3OUE3RUQzNTI3MzhBQUQxQjU5RkRDNzI2MjMyNkU1ODBEMzky
-NkE2QkNGQjczM0RGNzBGRThBNTVDQjk0OEI3QjlDQTVECkZEM0VDQTU5OEQ3MjM4MDMzMjE2
-QzAzODQwMTgzMTc1OTJGMjZFMTcwODU5MTc3RDZFQzI4NUQzNjhBNzI2MjAxMDVDNEY2NDc1
-M0JCMwpDQ0RERjc4MTMzOTUyNDQ4RERFQUYxRDk5RDQxM0EzMTkyNTU2RDVFQ0RBNjA1RkY3
-NUVEMDYzNUQ1ODc0RjNEQ0NBNDZGQ0JCRENDNDYKQjg4M0Y3MTZCNkM0NDRENzhDRTI2REY3
-NDJBOTBEOUM4Njg3RjRDN0I5MzlGNDZBQ0NDNEQ5MjgxQzIxREMwMEE1Qzc0NENDQjU0Q0U1
-CjkyOTIxMjlGMDI3QUUwNzJCNDhBQjJGNTUwQzFGQTRCMzZCOTkwMTgwRjZFQjZFRjg4NzY2
-MEQ1MTZBNUFEOTA1QUFBRDk0QzdFODkyQwpFODAxN0NBQjQxMDhEMUZGOTQwMTA2NjJERUQ2
-NThDNkFCN0IwMjYwMEY4NEZFN0Q5OTA3REIyMTNDOTFDMzI0QjI1MTVEODMxRjk5QUUKNUEx
-RTBCODUyMUI5RkVEMTIzMDlFQTBFNkFBMTNEMUNEOUE1RDZBNDk0M0EyNjQ3M0FBMjNGMTc1
-MzQ5NDkwQTRGOURBNzk1QUJFRTE2CkIxNEY4QkFDOEEyQUQ2QzY2NDZBRTJCNDgyQjhCMkRD
-MDE2QUIxNDI5REFBNjk3Q0IzMTVDQjE1QjU4N0ExQjQ5MjdGMzQ1Qzc3ODYzMQo5OUREMzQy
-RDJFODVDMjE4Rjc0MUFCNDRCODIxOTc4QUM4NjlERTI1MzQ3ODg2RDE2M0E4MENDQ0UzRUJC
-ODQxQjdENjZGOUY0RTE3MDYKRkE5MERDMkEyNjFFRDQ5RDY5QUEyMUU5NUM0RjIwNDM2MzU5
-ODc3RjM5MEUyNkVEOEU3QUZEMzcxNjMyMDFCRTQzNEI4OUFBNzE0NEI4CjNFODk3N0Q0MEQ4
-NzNDMTVGQ0QxMzZFNzExQjEzMjkyQzhGQTBCNTk0NTk4RUNGOERGRjVBNjk2RUU4Njg3NTRD
-NjI2MjgxNDQ0QzMwRAozMTY3REJGOUI5NDQwQUUwREI4QTkzN0VBNkExMTgzNEQ0NzI2QTVD
-MjEzODhDOUFCRjU0REE4MkZGRURBNUI3MkZBNTNFNjcwNEM5MTYKMzg3QjhFQzM2MDg1RjQx
-OUEzQUM3OTZENENBRjRDMzIxRUM1RjVCRUQ3NjEyRjVDODQxMEY5RjRDNTg0RTc2MkM0RkQ2
-MUIzNjk2NURECjZEM0M0QTU4RjE1QkZERjgzQzU2NUY0NTdGNTZERTNGOEJGREUzNkNGRTk2
-NEE3MEU4RTA1RDMxQTZDQjg3QjAzQTRBOENFRDk4MDU1MQo1QkM3Rjg1MzVEMjNDRDc1M0NG
-OUQxQ0RGOTBBNzE0MjA0NUU1Q0VFQjlEOEJDMkE4RUUyRjRCN0E0OUNGNkQ2QTBGRkEyMDRC
-QjU3ODgKRjdBQzVCQTU3OTg1QkVGQUE5ODMxNTA5NzRGQzEwNDhFODI0RDg3NTA2Qjc4NzQz
-ODdGRUQ2ODIwRjBFODEyRkE1MzZERjVBRjRENzgwCjQ0OUJBNTREMUIyQTQ0ODlFMEY4ODE1
-NTcyMDBDODBBN0U5NjA1Rjc1MEJGQzkyQTMwQTM4OTQzRkY2QzREMzk3Mjc5N0M5N0M5MzI3
-RQo3RTREOTc0RDQ0MDQ0Nzk0QjM2NjdDRUYwODcxQ0VFODA3QzcwQzhBNzI3REQ5Mzg0NEI0
-RUM2MzZBRjIyMDhCMUY0RjQwNzcwRjQ1MTkKN0M3QzNCRDM2QjBFMTY2MkZGNTA3RTY3MjhF
-ODZEMzU5OTU0OTgzOTcwNzM5N0UxQjZFODM3RkI1NkU3NDdERTY4RkY4Q0NBQkM4MzU4Cjk1
-Rjk1MTc4NDI4RDE2NUFGRDlFNjNCNEYzMzI3NzczMTQ2OUMwRjNCQTJDRjMwNEVGNjk2RTcz
-MzQ3Q0MzMzZGNTM4NTgxRTRFNkZEMwo4N0ZGQjNBNTE2MDcwNDU3N0UwMTE2RTUzMjdBRjEz
-MDIxOUFEQTg1QUM1MkNERTA4ODRGMEY3MzU3NkYxNTA0QTAyMEM3NTJGOEJGODMKOEJDQTFD
-NkVEMEIxNEIzODFGQjAyQ0NBRTQyQzY0QThBNjVBODJCM0M5RUM5RDg3MTZDMDg2MTIxRDhB
-NkIxOEYwRTQxMUJGRTE3N0NGCkIxOEY5QjlCQ0Q1M0MyQUNGOTc1QTE4NzJDRkFDQUUzMDg5
-ODQ0QThBM0I2QUUwMkVEM0RFNEQyMDc3QzdDMzc3Njk0NkUyQTVEMEQzRAoxOTA3MkRCQzE0
-ODQ5OEYwNEYyM0Y4QjE3RjRCMjk0RUM5MzlGMzZGREUxREU2ODE0NTNCNzdGN0ExQkZFMkQ3
-ODQwQTMyNDgxNTI0QUIKMzE4NkIwNkNGRUE2RDc1OTM1NTdBQUE2NDA2MThGODNEOEMyMkYz
-RTA1NjQ1QzQ3ODVBRUE5NEE3MzZBQzkyQkEwODkwMkZDREQwODk1CkVCRjk3NTM3MUVCN0RG
-MDEzQTU5RTUxRTMzMzcyN0VBMTYwQjVGQ0NBMDAzRTI3QkU3Q0Y2NjVGNENBNEJCRTdCMTRG
-Qzc1ODE1RTA1MwoyMERDRUFDNkQwMzJENzE0OEI5REJFQTlENjI3MjRCNUM1MkQ0OTk5MDAy
-MDdEQUFBREMwQUU5QjJDQ0Q4MUI0Qzk5QjkwMUIzNDg4QkEKMEVDQzI3NTE0QTczMEFBQjU4
-QTdBNjA5MzdCNTVCRTNEMjlGNjhCNUI5Qzc3NkRDQkY0QkM3MTNGRUEwOTFCQTYwODNDQjIw
-QzlDMEIwCjE4RDk0QzEwMTIyREQ0Q0M3QzA0MjE3MUIyNTU0QTg0RkQ0ODkwMDlCODZGMDgw
-NTI2QjgyMDczRDk4RDFEMzZDNDExMzg2MjQyRDYwMAoxMEE1ODQ0QUY5MUREM0M5NTUyMDVB
-QjBERkM4Q0FBMUIyOUMwRkJEQjBFRUJDNjk4MTVEOUQzQzcyQjUyNTU4MjQzMUM3MDBGMDk1
-NzkKOTBGRUMyQTA2RTMxNjc5Nzk1RkYwQjBGODNBQUY4MzRBQTI0ODYyRjA1NzZEMzA2RkRD
-MjdGOTAzMzBFQjA0MzA1NDhENDVFRjc1Q0YxCjg1OUJBOTg0Mzk1ODNGOUZDREMwMkRBNDI2
-Qzk4OTU1RDYyNDZFNEQ1RjE0NzFDNEFDNEZGQjE5NDdBQzlGRjdGQzBDQTQxRkJGMDFEMgoy
-QjgyOENFQUM3MDMwQTZGNTZGOEIwNTc2NDQ4OTY1M0E3NzE1OUFCQTRERUU0MkIyMTEwQTY2
-MzREQTE1NDIxODhENUU1NzcwMjE5NTAKNjk0QjU3MUFDMzU1MEUzQkMyQ0IzQTgwMkEyRTgz
-MEEzQjVDN0RCNzc1MTZCRkFDM0E3QzgyN0Q3OUFCRDc1RjEwQjdFQTVCQ0E1MkI2CjkwRkQx
-OUUwNDI2RDI1MjZGQzU5MUEzNDU0MjY2QjRFMzgxMTREMEYxNjUxRERERTA5OTVDNENFOUE2
-REY4RkIwRUYwMkU3NDUzNUMzNApGMUY1NjNFQzk0ODIzMUNEMTU5RTJDMTcyQTg0NzNFN0Mw
-OEJDNTlGRjNEMDgxMEMwRUMwRDFEOUQxMDM4RTg4MkYwNUM3RTNBMEJFMUUKRjk4RjlERDJB
-NjBBRjk4QzJEQkYzMkI5RjUwMDNGRTNCMDlCQTAxQTc3NDRCRkE4QzM2OUI3QjdGNzNDQTY5
-MTVDREVFQkExRDcxRjg0CjlERjREQTIzRkUwMTk1REZCNkFBNDcxRUExMDlENkU0RDdFODAx
-QUM3N0NGRjczRjRFRDU4OUQwMDkwNkFBMDg0NUI4NEQ0NEQ3ODE4OAo5QjRCNUI5NDc1OEYw
-MTNFQTE0MTE3MTUyNUFFMTQwMDQ0QzhEQ0RCMzc0NzZCRkFDOTI2MjhGQTE3NzIzQ0M0MzRD
-ODIyRUYzMDdCRTIKNEQ3Mjk1NTIyMEI0REFCRjM3OTU5QjQ2QUQ5QzUyRkMwRjVGQjNERUM3
-MkJFNUY1RTVGMEJDMUNGRkMwOUQ4REVGNUNDNkJDOTRBNDU2CkYzN0FBQUQ5QTYyRTcwNUI2
-REQ4NDRDNTY0QjI3MDhCRDhCN0ZFNUYzQzYyMTA0QjM0OUEyRDg4RkMxMEVCQzFENDkwMEE1
-RUY2QzUzRgo4QzE4MjUwREJDNEJDNTExNzMzNjRCNjAzM0UxRTVEMzU0M0FEOTVFREMzQTA3
-QzYwMjczRTlCMDUyQzYwMDQzMUY2M0QxRTRERTBCRkMKRTg2MDUzN0JFMDUzN0EwQTJDOUJD
-NTM5MTE0QkREQjVBMzk1MTQzN0Q4Q0NGNDU3REQxRUMwQjBGRkI3QjlBRkIyNDA1QUZGRTMz
-QUE4CjVGMzNGRDA2Q0Q3MkIzODJEMEE2QzZEQjQwQkVERDNBMTZDNjhEQjk4QUU2QUQ4MkNC
-QjYwRDFCQzIwREE5MzJCRkE0RkE3MDMzMzQ1OQpBMjhEM0I5OTk2NkI5QjRGMkU5OTNFOERF
-NzgwQjg5MEFCRUEzN0Y3MTQzRjk3MDJFOTlFMUY1OUY4RUUyN0FCMTVDQ0NDMDUxNUEyQTQK
-N0RGRjU2REQ4QzM5RTE0NDI1RkJCMkIzMzExNUQ3ODY1QURCNjY5NzNDRDE0NDQ2RTUzNTBC
-MjgxQ0EyRDg1NUQyMzEyRDNERjVGNThFCjY5ODU4Q0JCQjA1ODA5NjQ4NEVEOENBOERCNTM0
-RUYxMDM4MzRCOEVGMzM4MzRCODE3OUQ5QTYxNDNCODhCMjQ0RjVGODc3MzcyODQwNQo4RDM1
-MTg2QTgzQTE1Q0RDOUNCMzJDOEE1ODg1QjVFQkE0RjczQjgxRUE0MTI4RDI0NDgxODcwQjcy
-MjNBMEYwRjI4ODhFNzdEQzAxQjAKMkFDODMzNzg0NkMyQTUwMzU3MjQwMzFENzQzN0ZEMTE4
-MDYyNjBDMkJFN0VGNjQ0MDlFN0E3NUFEMDQ3RjdBRUIxQ0UzRkNCRDUzREVCCjBGMzlCQTVB
-NjNCNkMwRUY5MEM5QTNEMjE2ODMzOTZBMjUwQkFBMzdFRDNDODFEQkRGREIyMjUzRUMwQjA5
-QTE4OEQ3OTExNjgyMjJCNgo2QTA1RjAwQzEzM0Y0MjIwMjM5RjY1QTg4MTEyNzE3RThCMzE4
-RTkwNUJGMjhENThFRDE4NDkwODQ3MTlGMUZCMDE3NkQyNkM1NkFDODEKMjg2ODBEMUFEMDdE
-M0VGQzExOTI1REM0NUNCNzg2RTUzRjEzNUI3REJCRjYxMDU1NEI2RDlCQzBCRDM2MjI2RTU1
-QzIzRkM4NzM1MUEzCjNDMjQxNkM4RjI4MTdCM0NBNjlGQjBEMzMyQ0VEOEMwRTMzQzZGNDBE
-QkY4NURFRUQxMEE3RTlFMjk0ODUxM0YzMTkwREVFOTMxMzJENQozMjA0NUNCRkY2RTQzREEx
-NDVDREUyRDU2MUUzQkEwNzhCNzJGOTUwQTgwMTcwMjVBQTVGMkZDRUUwOEFCNEU3OUQ4RDE3
-RDQyMkM5NzgKMTY1Njk4OEFENjIwNURFNjkwMzVFREJFNTE2RDdFNTJBODI0OUI0RkVENEU1
-RDE3N0Q4NzE4OEZFMzUxNUM1MUIwOUU4REE1NzNGQzFGCjg2QjMxOTNFRTkzNUNFMjdFNTIx
-MzE3MjBEODI2NEM1ODBBQzA4NzIxODI2MkIzN0ExOTRFRTg1ODlCOEFCMzA4NTQ1QzJFNUFF
-MjNCMQpCRTRFRTNCQzlFOTlDODg5MENENEExN0NDQ0VCNzQwRjc2NkQ5MTk1REZDOTU4QkM0
-Q0VCRDI5MUQwNEZFNjkxRENDNEJBN0RDMjBDQjYKMjkzOEYwQUE5QzRBNTFGQTdENkUyMTNF
-MUIzNkIwRTMxOUYxRTk4QkJERjI5OTlDOTMyNUVBRUI4NjA2OUYzMTU4QzJGMkU3OTM2NUYy
-CjI4QkVGMEQ5MDk0OEQwN0U1M0I5QzQ1RjgyNkY4QTg3ODNGNDlDRjAzN0Q0Q0IyQzkyRjJG
-NkU2NkMxMDQzNDNBODk5NUE4NkUzREMwQQpBOUE2MjU3N0ZGREVDRkVDQTJEN0QyNzgzM0U5
-MDNGQjA0OUI5MTc4M0U0MUQzNUQyMTZERjM2OTdGRjAzQjUxRUMzQUNDQTE3RTkxODcKQzM3
-MjM3NzQ5MDgzOUU0OTAxMzZDQjMzNDNDODdENUEwNEFENkMxMzdBNUZDRUFBOTFGQ0JFQ0Ey
-NjI5QzEzMkNCMkJBQkUzOTA5QzcwCkVDNTVBOEZGMUREQTA1QjhCMkEwRDJBNTFCQzc0MTFC
-NkE2RjM1NjA5RTZFRTBDNjA3RENDNkVBRjk1RTQzRTYyRjEwNDJERDBEQUY5MQpFOUFCQzIx
-MkQyRTJBOEZFRUFEMEQzMTBCQzhERjQzMjAyODkxNTQwQkYwN0ZDQTJFQUQxQTI0QkNBRTVF
-NEE2MTdFNzI2QUM0RTkyMTUKRTAxRjdFQTJDRjc2OEI3MTU4MTEwRTNEMTYwMTBEMjdCOTUy
-RTg4QTMyRTQ0NTc0M0M2QkY1OTg0OTcwRDUxODk5ODIyMUNDOTVBNDdBCjlGNjI3QUYwREUx
-NDc5M0M5N0MxREU1NUI4NUEwNjI4MTZBREFERjIzQ0VCQzQzOTE2QjFDOTY2RURBQTE0MjRC
-MjNBNTUyRTUxNTA0QQowOEFGQkI4MTgyRTlBMTExMjRFMTI5MjQ0QjE5QzdCQUUxQ0FBRTJD
-RTM0OTA2MDc1REJGNzRDQzg3RTQ3ODI3MjU0MURGRkZDRDMyRTMKQzA3Q0Y5NjBGNjU0RjY3
-NDQ1OUZCMTM2RkU2RDE4MTIxRkVEODdCOTBEQzA1QzI0NzhEQkQxMjFEM0E0OEE2ODdEQTBC
-RjVBODgyQTAwCjE0OTBCODNBQkM5MzJDQzAxMUU0NThENjRBNkUzRDJDRTBGNUM5QjFENjlC
-QzdERTY4Q0EwREYzMTczNjJGRjgxQkQyN0Y2RkQ5OTYxRgo5M0Q5QjExNDk5QjhFQ0I5NTQy
-OEVBMDA3QTQ2NDlCMTYwMzNFOEQ1OTFGRkM3QjRDQjZFRTA3RTZGNzA2ODc5OTZBM0QyRTg1
-RURDMzEKQzFERUVCNUQ4NEMxNjkwNzlDMTYyOTc1NDBDQTBDQkExMzA5MjRBQTdDQjc1QzM1
-N0I1OTJFMDhFNDc3MTYyMDVDRUM5QTAxNzhGNTRDCjkyOEEzMENERjVGMkU5NzZGRjAxNzQw
-MTI1MDhGMjZFRUQwMzQxN0UzOTczMzJGRDgwNkUxMUI0ODY2NDlCRjE3RjJFRTlBMEI4NjBB
-QgpDQTQ0QzMxNzg0REYyNUI1NjgyNTc5MDg0N0NCOTQxMUIyNDg4RkJBQUYwM0IwQjBGQTJD
-QzFCMEM1RDMyMEI2OUZGOTg3MTNBODc4QUIKM0Y2NTZBQjQ1RkM1NjFGNjFEMDA5MDMwMUZF
-N0NBN0NFRUU2Qjc2RTU3QUIyMjNEMTNBRkQ1ODQzODREMEJCNUYwN0U2OTkxNTUxRTFECjJC
-M0M1MjMyMDM5Mzc3QTY2RjExNDNEQUYyNUU4MjM3NzRCODY4OTcyOTE3NkNFNTRGMEQ1M0FB
-MjFFN0JGNjQ1N0FCREE2NzEwRDU5MwoyNDdFOTNBNUNCMjNDMjRENTNFQjBENkM3RkQ3M0U5
-NEJBMTVCNkQ0NDNCMTBBODM4RDM0RDk2NkFFQUU4MUI4QTIwODk1RTM5QjgxOTgKRDA3REY4
-NUZFOUQwNjM4QjI3NDU0RTU0RDg0OUM4M0UzMTQ5OUM3NUIyRDJFODUxRDVCODk2NjA4MzYx
-RkI1NjIzRkMwRkE4NUMyNjMwCjI5OEI3NUQzQkYxRDUzRDc3NjIxMTlFREFDQzM4RUZBRTQx
-MjZEQ0YyOUIzRDcxQzBFRkM3NUFBMkRGMUU5NTY3MkI2QzdEMURGNzRGOQozODhCN0NEM0NC
-MjFGQTQ2RjAwMEUzMzBEM0E1NTYzMjZBNkYzN0FDREUwMDQ1QzBEOEQwMEFCRThBODY4RkI0
-RERDMjFDM0REOUM3RDYKMjJGMEI4MDE2NUNDNEQ4NDIyN0I3QUU5OTI3QzkzNkRGN0ZFOEY4
-OTNFMzE5QzQ1QkI5RjlEQzVFNjFEMzdBRURGOUU1MjJDQkJCMjBDCjI0MDVBMTM3ODQyMjY2
-QjQ4RjJCRUREQ0I5MzIwNjY0QkRENjY3OUI3MjAzMEUxQjAxQjVFNjk3OUM1OTJENjQ5Q0Ey
-REE1NkMwMTlCQgowOUY2RTEzOTgwM0FDMDEyRDMyOTNCMUU0Q0M5MUU4NjI4NEFBNjg0MUI2
-QjlFQUQzMUQ2NzI3MTQwMzlENzMzMzZFMDIzODk3MzJBQkQKQUJCOEMxNDdEQTlDRjQwNzEx
-NDA1QTEzMjhFRTE5RTBFNkUxRUE2NURGQTg5MjE5OTRGMkJGMzEwRkI4NUEwOEY0QkFBN0ZD
-NTlEQkRECjM1MDAwNjIwMERGMjdDMDk5RjIyMjk4NjJDQTVFOUMwODUxQkU0RTMyRDAwNDc1
-RjI1ODMzNDM1OTAxMEQ4MTc4Q0E0REJFRTgyMjMyQwpEMjFDM0NGNjY2QTBFQkY0QkQyMDMw
-MEMwQTcwMDE2ODA3RTQyRDE1RjlFRTI0QTE5NEVEMDRCNEM2QUVEODg0REM3MDg4QjZFMzc4
-NTEKRkFGRDdBREZDRjdGQUJCMEU2MzM5NDZCOTAyOTE2MEYxMEI2MjYxMzI4OUI4QzQ2QjJC
-NzRGREQ0N0JENEY0RTdCNTNFOTZERjhGOUMzCjY5OTI1NTA4RDM0MkUxNUE0RDA5NDNCMjIz
-NjVCOEQ4RjlDQjhGNUQwMERFNkE0MkZDRjlGRjQzRDM2NEMwMkRGRDJGNDRGNzI4MTlFNgox
-NkI3ODhBNERDQkVDMUI1RjlBRUJERTRGMzhBMjU0QjRFRUE0QTM0RENBRUE4NURDQjdGOUYy
-QkY0N0JCODdFOTU1MjQwMkMzNzI2MjgKOTU2RUU1OEEwMUU4NkJBRTFFMDgzRDcxMjlCNzgz
-N0Q2RTU3QjdERThDMTc5QkRERTY1MjREOUY3NTYxODcyNTAyNjg1NEMwQjFBMThGCkE2NjJD
-RDYzMjQyODVBRjY1RTREMUY4NjY1RjE1MzhGMkQ4NUZGN0Q1MDJCM0JGRDREMzEwQTMwODhB
-OEVFNjc4MEQ1NDFEOUFDNDY4NwozMUEyN0REN0RBODBGRUJCNkY2MEMyN0JCQ0EwMkRDOThB
-QzU0MENGNDVFM0I2RDUyREU0NkI3QzZFOTg1MDhERERGQ0IwMjBBQzU1MzMKMTJGMDhDMkFC
-RjI3QjZDMzRBRDlGODQxRUI3ODM3M0YyRjM2N0EyOEVFM0UyMUQyQkNGQ0U0QzE0QzM0QzM2
-Mzg5NzhDNDBCMTM2QUM1CjhENzQ3RUUwNkUxOTdBQjA3QURGMzcwOUU3MzgzM0JDNzg2OTE3
-RDNFQzA0NjVFRTQ4OTQ4RTM5N0Y4RjcyNTZFRDREMjYxNzk0QjI4RQozOUQ2RDRFRkZDRUU2
-RENGMEMxNDI1NkRGNjgwMjZCQUEwRDUwQTczN0UzMDM5MjNFNkQ5NTZERjNGQ0UyOTgzRkY0
-NDNCQzFFRTE1OTUKRUM1N0U4NkUzNzcwRjczQjgwMkExNTJGQkNGNkI0Mzk0RUUyREIzMERB
-QkE2OUYwMTI0RTZBNzRCRkVENzcxNUU0NjkxNTBDMjU1M0Q2CjRGQ0I1Njc4NkQzMzRGMzM1
-RjRFQzY4MzZBNjEzQTI2MTUyOUZBODVCNTM0Njk1ODVBNjgzQkI5Q0NBREMyNEFDNTdFMzVC
-QkE2QjA4NgpGMzg4MTE2MTMyNzkwNkIxODVFOTU4RTcwMEE3MEJFODI2MjdBOEY0RjQ5REEy
-MjAyNEJENUY2RDBFRjMzNTdFQUMyNDE0NjE1RDRFRDIKMTMwRDNEOERGMjNDNTJEMkI1NzM3
-MkJBQTY4QkYxOTAxQjg2M0U2QTM2RUEyMzA5NDk3MUJDRTI2MkZERDVBNjhCMEIyMEYwRTlG
-RTBCCjBEQUUzMENBNTZGQUQ5NEM5Q0U0OTg3NUE0RDA2RTc3NENEQzQ2ODQ1ODY2QkNENjEx
-MjI4ODdEQjg1QjIwN0UyODgwMzUzNTY4N0UzOQowMjhGODJEOTQzOUZCNkI3RjM0RkZGMUJE
-OEUzQzhFMUM3REYwM0RGRjhFM0MwNjAyODQwNUYyRTZBQUY5N0E1NDA3NUIyQTFFQkNFNjEK
-M0E1Q0Y3QzczMDQyRDc0ODI0QTA0RDVCMjA2NjczMDM0OEIwN0YxODhBODcyNUVBQjBGMDc2
-QkVGMjVEQThCODJCMzZCMDYxRjg2NkE3CkJGMjNFNjA5NzgwQThDQTZDMUU3QTUyQUEyREY0
-RDVFQTIyRTZDNjQ5MUI1QzRBNjQ4RjM3ODM4QTdCMUY3QkREOTg4NDA2NTMzNzJBMAo4NkE3
-QUZENTZDRTJCOTczQjVGRjIyNEUzNDkzMEFERkEzMDcxREJEMzM5NjE4QjI0NUFEMjdCQUZD
-ODA1QkYyQTQ5QTRFMjk2RjE3RDkKRUIyNTcwMEY4RThGMEM5RTg1NDhGQUJCMjNEMkNEOENF
-QkU4NjIxREZCNjYxMTVFNjA2MzBBMUZBRTM4OTdGRDcyMjY5QjI3NTAzODQxCjU5NDNEN0Ey
-QjU3MjlBNURDODdFMkY4RUM4MjU4NkQyQTI5NzkwMzNDMzE4OUVFNUNFQ0M5N0MyNzZCNzUx
-RTdBMjY5MDQ3QzBCNDczMQo5RTM4QzhBNUVGQ0ZCMEJEOTBDNTQ1NTYzOTcxRjdEREZCNzZD
-MjhERDVEMjk3Qzc5MDdEMjBDN0QwMjBGMDQ1NTdGNTU3QUQ2NkU1MUYKOUQ0MkY3OTY3MzY5
-OTdCQzY0ODg4MzE0NENERDlFQjQ3NzQzMUFCOTU4M0M1OEE5NEZCNzM5NUU1RjdDQzBGRjk0
-MzRBOTdGNTkxNTgwCjQ4NTA5QjcwMDgxNjhCNkU4NzdDQkZFMTQwODNDMUNDMkIxOTdDRENE
-OTMwNjhEMDM1MTAyQjAyNUQ1MkE4QUE0NzIxRTAxOUREMDJBNwo5OTNFNUM3NEE2NENDNEQ0
-MjJEQzAzMjEwQTI2NEY3MzU2NTE0RjEzQjU1NUMzNzM1NjZBNUQ3OEU2MjcwNjVBRDM2QzI2
-NTEzMjQ2RTAKMDFDOUMxNTk1MjM1N0E4RDhFNzU4MUVDQzhDMEE4NkE4ODBDNzNBQzUxOUJC
-MTBDMUI5NzIwREY2NTAxRkVGRENFNTVDQjFDREJERkFECjQyQzNGMjE0OEVBMzU4NjFDMzkx
-NDc4QjlBOEQwNThGQTEyMUI0QTI2MzlFN0E2MjY1NTBGNkUxODkyMERBMDc5NDBGNTczQUEy
-OTlGNwowNDNGM0VDQkZDNjI2QzE2QkVGOTJEOTM0Njk0NkEwRTdCQ0FDNTI4QUUyNjRFQTM3
-OTczMjk1N0FDMzVFMkM3REVGQjQxN0ZERkJDRjQKQjI5Q0FBRjExMzM1QzFCREFDNTBEOTVD
-MEEzRjA2RTM2N0ZBMENDNDgzMTdBQ0Q3MkRBQTM1QTc2Q0EzQTFBQzI5NzVCQTNFMzY5MDE1
-CkY0QUI4Q0FBRTlCODA0REM0MkI3RTE5RUY5QjczQzNFRjM5NjhCNENCRjRDNzA5N0E0QURE
-RjgzNTlEQUIxQzZFMkM0NDA3ODhGOEJDRgpEMjcyRDgzNjZDMjMyQjcwRDUwRTIwOUU3NjYx
-MzRGMEMxRjFFQ0RFRjI1RTA1MjAwRDlFNjZGRDZEMEU2QTZERjVDRDFBNjJBNEU3RkIKREI1
-NEI0OTVDREU1REIwRkRBODVFREE0RDYyODM3NEUwRTZFQTQ1MUVBRTY3NDU5RDkyQUM4NEUz
-OEZGQjUxNTZEMUZDMEVEMjY0RDlDCjA1MzE5Mjc2MzYxRjUxOTJCM0ZFM0FDMDUyMTU0RTI0
-MjVENzc2NjZFMzg3Qjg4ODQxRjJBQjgwNjJGOThDQzExQUVFNTg3MTdCRTg2Nwo2QzI2RUQx
-RDA2ODM5RkI4NjJEMkQ2RjE0MjE3RURGQzQ0RDM2MjgwOTBENEU0QUU2RDhEMDhDMjkyNURF
-QzYyQ0MyREVFNENERURBNjUKRjFGQ0IyMkQ1MEQ1NzM0OTU2NjkyQ0JCQUYyNUE1MThEMjEx
-MkY1NEU2RDM4RjlDMkI5Q0Q2NkEzOEJDQTBFODJBQUUzRERFNDVDM0FDCkU3NjFCOUExMkIx
-MzU3NzI1ODlFNDI1QTNCNEUyMjlFMEU4MjQ5MDY5MzI4QjZBMjIyQzQ2REFGNEY3QzYxRkRB
-QzE5NjdDN0FGNkUxMwpDMzgyOTNGNEEwQUUzREY3MDBFNDBDMkRFOUY4QkM4MDI2ODZGMjM5
-RjdGMEM3QjQ3RTAyNjFGNEJFOEI1QzE3NEVFODZBRkIyNDhGMDgKRDBDRDk0NTc4ODY3RjQ3
-MzE2MTcwQTkwOUMwNTAxOTkxNTM0M0M2QzRDRTBDOTk0QUExMDVGNzBFNThFNTc2NTY0QTRC
-MkIwODk0NEQzCjE4MENFQkU2NkJFODk0Qzg0MkMwOTZGOTJDQTUzRTY3MDRDOTE2Mzg3QjhF
-Mzc0RDFCNzE3NjFGMzkzMDQyMkIwREY4QTRFMjQ3ODVDMQo0RUVFOTIwRTNDOEQ2OTcyNzk4
-MTRBNkQwMjc2RkVDRDY2RURGMTI3NDExQTA3RUY5RDIyRUJBRkU3QUY0M0M2QjYxMjJDQjBC
-MTREREMKRDMzNjdDOEFBQzU1OUFGODkzQUU5QkI3M0Y3ODRCQjEwRTY2NTdGMzQ0QUQ2OTMz
-MEMyNEE0RTNDNDQ2RTg2RTA3RjVCNTk2RDJDOTg0CjRDMjRDQkRGNTFDQ0FFRURENEQ2MkZG
-NDhDN0Q5Rjc0QzkwNDUxRkM5MEY0ODVGMkMyRjZDMTI1NTU2QTU5OTJCQUQ4Qzg3REZGREQ5
-QQo3QzA5MkFEQzlBQzIyMjBDMEVDQ0JBQkExQjRDNDk0QTRERjQwQ0U2QkM0MTJEMzdEMjdG
-QUZDODNGOTU1NEM2NjRCN0UxNUIyQzRGOUEKNkJDRTE3MkZGREM4ODVDOEQ1QTZFNDMwOUQ0
-NzAzMUNDMUE1N0QxNUNGMzBGNDEzQzcwMDQ0NUExMTgwNTg3ODM2Mzk2RUNGN0E0NTI2CkJC
-MEFDQTUxRjI5MDZDRTE0NkY4Qzg0QTFCMUZFMjQ1NEVERUUxNjU3MEQ1OTRFNzlCODk0Q0ZD
-M0FCMTYwQTAxOUU1MDczNDdFNzYzQQpCNkNEM0FERjQ2MzkzRTA1NzlCQTQyNEREODUwMjQ2
-Qjg3MkU4ODE2OUVGRkQyNkU1OTBBMTkyRUYzNTM1REZGRDdDNTQ3RjIzNTgwNDIKRkM1Qzk4
-MzhCM0FFRDAxRjEwOTZCQkZBMzU2NUFCRkZCNkYxM0RBMDg4MEI1NjI2NjJFRERCRDE0RkU3
-MTBFREJFNjZBM0VBMUZEODA0Cjg1REE1MzkwRDNGOUFBN0QyRkM3QTZDRTY3QUQ3OEExODFC
-Qjg1MjRCN0QyMjQzQTIyRDkzNkQ2MzFGRDNBMzhCNkQ3RUU0MjEwRTNGOQo2N0U1MzZENzI0
-QjVFOTUwNkYyQzJGOEVEOTg0RDBBNzZCMjhDRUY2MTgwOUVGNDlEN0MxOThCRkVCQkI5MTIz
-MzAyNjUwNEE1NThDRDQKN0I3OTg1QTE0NThCMTRBNTcwRjJCMjJCMTk2QUEwRTkzOUQ1RjhC
-NDQzOUM1M0Q4QzE3ODY0Mzc2QzUzNzUxMzI4RTM5MUJBMDlEMjU0CjA2MkFBMjZDQkE2MzRE
-QUZEN0VBQjRBMjA2OTdEOUQ2NkVGNTlBMzcxOEZGM0JDQTBBNjlBMjAzRUUwQTcwQ0M1NjQy
-NjRFQkY0NTY3QQo3MUE5NTg5ODYzNENCNzY4RTg1QzFDOTQxOTRFNkM4QjAzMjA3MzVERkRF
-Qzg2MEQxMTBBOUUwRjBGMUQwQjM1MjhCMjRERTVDODUwMjEKN0YyOEQ0MjAzRjU2MEJEMTlE
-Q0YxNDVFOEEyOEY5MDY0QzI0NTlENEZDODBBQUE4MUFFMTJERTRCRTEyNDIwNjQxRDFGODJE
-NjA0MTZDCkREQ0ZFNzgyOTg0OTU1QTEwQjU3NkZEMUEzOEMxNjUyNDMxRkJFQTBGNkEwMEM0
-M0RFRjUwNUIxNTc3N0RCRkZDRENERUNCQ0I4NDZBRQo1NzAxRDRGOTRDQkQ4MzVDRUI5OEJF
-RDZFRTczRTEwMUNDNTU1MDE2MzdFRjYwMDkzNTc3MDk0OTNBM0IzQTEwOTJGMEFDODk2MzY5
-RkIKRUVDODg3QjJEQzlDRjUwNzkyMDYzNEE2QTdFQTQ5QzVEMDZENkE3M0QwNkZDRDg1MEI0
-OTM3NUEwQzZFOTRDREVBQ0ZFNkEzNDVEMEYwCjIyMjBFNzFGRDI4OTA5M0IwMzAxQ0U5RDNB
-MDAwNjJFMUIxNjgyNUY2QjQ0OEUyQjk3NjMxQkY3RUZFNzRBRkY4MzE1NzFERDhDNkQ2NAoz
-NDBEMkQ3NDk4M0VGMTkzMUIwRThCMUQxOTE0REJFRDIyNjM4QjQyMDJFNDE0QkRDMDkwQjI2
-QkYzN0U5OTAwRDg2OTFDRUU4MkJCMTUKQ0IyRkJEN0Q4NzEyMERDMUJDRTYwODZFNkNCRjZF
-NUVDQUEzQjk1NEQ1RkIxNEY5ODdGMTc4QTQ1MjBGNkMwQkQ2MzFBM0M5RkMyRDdBCjI3QTg3
-RkQ2NDY2QzcxRjk5MDkzRDQ1N0IyMzc4MDc0ODBBMEJCRjlCM0U5QTkzMkYyQjU0RERFMDY0
-REY2MDg4NTVCNTcyOTMzNDRCNgpFRTY3ODE4OEM4MjBBQTk3NENDOTNDREQxOUMyQUZBREFC
-NzEwOUNDMzU3Q0ZCNjMzQzNBQzZFOTRDMzc3NjA0QTk3MTQzQjJDNDZFMzQKRUJBNjI0RjlF
-OEQwRUUyRjcwNzMwOTMxRDE4RUY0OEJDMkU5RDg5QkNDRURGNDQwQUQyMUJBMEFCQkYwN0Yx
-RjNBRUU5MUM2ODBCQjMwCjM1RTExN0ZFQTE4NzY5OUM2NDMyNzk1NTM2NTI4NTlCNEU0RjE0
-RjEwOEVDMTdDMTNCQzRGNEYwRjFBNEYzRUI4RTEwNzA3MEVERDgwQgo2NTQ5Njg1NzBEMTBE
-RDk2RTNBRjNEMUNFN0U5MTg4MDExOUMwQzEzQkExOTU5NkIyNzYyRjAxOEU0QjUxMzFDOTI5
-QzdCMjEwREEyRkMKMTYxMDBGQ0Q4Q0RBMzYxRENGOTFDOTQzMUQxNUNERjE5RUE2MTkxMkRC
-OTEwMDFBMEFCRTYzNkRCQjMxQkFFRENCNjVGOEQ0MEM3NDM1CkNFOEExODgxNjlGMDBENUND
-QUIwNzUwRUEzN0QyMEYxODM4NjA3MkI1RTA1M0REMUYyQzFDODE1RTUwNDMwRDA4NEQyMjZF
-MTA4Qzc4MgoyQkU0MDI1QzdCNkZBRkE0NDkyRDFBNkI5QUVDOENDQkFEOTYzOThBM0EwMjgx
-ODEwNTlEQzMyOTAxRDlCNjVBNENCQzk3MEMxMURFQTEKNDU2NEM4MzJGNDFDNUMyNzhEOTdB
-QUU4OTlGRDE1ODFGMDI5NUVBOTA4Q0RDNDVGQkZFNDY5NzMwRjc2QTY2NTcwNUIzRkE4QUMz
-MDFCCjQwMzBBREM4QjA4MjA2NjkzRUNDQ0U1MDlGQkM5QzQwMTYzOTQ5RTQ1RDJFMDcyQkJE
-RjZFQzE3QjU2RTM5QjQ5QzU1NjVDNDkyODgzMwo0NEY1MDdFOTI2ODRDNjRCRTI0RDM3MEZE
-MUJDRDJFODA0RkMzMkM1REMzQzZDRDJEMkM4QzQyMjE4MjBFN0RCRjI0Mjg1RTBERjc2NjMK
-QTM0OEM3QTkwQkJFQ0JERUYzMjFEOTEyOERDRkQxNjU3NjgwQzA2Njk2MDg0QTJEMTc4MkNG
-QTRGNUYwQTgyQ0M4NTkzMDE0N0FCQ0YyCjYwQkM1NDE4MUE1MEFCMTJCREY1MjQ5NjUwNDE1
-QTI2RDA5QUExRjU1QTBCQURGMTJCNzYwQTMzM0QzRDM1RjE1REFFNjhCRTU4NTYwNQo3NkRB
-NkU1NzI3MTFGMDkxOTJCMUM1MDU3MkJFQTYyM0VDODZFMzNEMkQ1MTU4NTE2MDk5MjMwRUY4
-RDRBMDNGNEFFMjlDRkUyRTQxOUQKQUJFODlDMkVGRjI3Qjc5QTAxMTc2MTU5NjFGODQ3NUY5
-QUQ3MEQyQ0E2RkZEMkI4Q0I2MjlBMjE2NjEwNjE1OTA5NUZEQTc4ODc4MDgzCjM4RTM0OUNF
-QjcyMDY5REFDNzQyRkM4MTI2NzM0N0QwODhDRjlENzZDOTkzRkU3MDc4QzhGQ0YzNjcyQzU2
-ODhDNkY2Q0FERDZDMTgxOAoxN0VEQzZGQTY3RjFEOEI2RTQyODYwOEI2NjdCRjY5QzdEM0Iz
-RTA2RTc2Mjc1NkNEOUEyMDUxMDI3MjlBNjJCRDBEMDY1NzkwRTQ4MTQKQTJCRTgyNUJCRTI5
-NDY3Q0YxMzQzOUFGOEREQkQ3MTJDQUVENTFBRTgwMjNFRTJFRjNFODJBMzIyMTFDMTUyQTNC
-MDBGQjU5RTNBRDA2CjE2OTExN0ZBMDU5OTk1Qjg1ODI3QzcwNzM2RTVDNUI5MkE3QTA1MEFG
-NTg2RTQyNzRFMkI4RUIzMDFCMUE0NEE3OEJERkI3QTFDRDVCRAoyMDQxOUI0NkE3QkFDNzJE
-OEI3NkFCNzlGNDNERENGNzM4OENFNjk5NTNCMDcyMjlDQjA4NTM3ODQxNzUzQTc3OUY4REIz
-NTA1OEJDQjcKOUZFMEI5MkM5NUVGMkY1QkI0RkY5MkExN0NDQzE3Qzc1NDdFRTgxMkJFMDJE
-Qzg3QTk3QjcwQTA3QjQ3RjI1MDk2Q0Y3RkIyOEVFQTk1CjkzMzMyRDhGRDRDMDU0OTlDMEYw
-QjVEQzE2QjYwNDg2Qzc5NDVBMjRDOEY1RUYyNEVDRjI2QkUzN0RDMUJEMTZDRTA4RDlGOTZC
-QzQ4NQo3M0MxRDdBODg3MkEzOTBBNEZENUUyMzc2NTg0NUM2OEVENTk0NTZENjZFQjRCRTY5
-N0Y0NTRCNzFCRjZFOTc2QkZEN0M3ODE5QkRGQTEKNEQ4REQ3Rjc3N0I0OTk3NzNBQzQ1Nzkw
-MkRDMTMwNTQ0QTMyOTU3RTcyM0FBRjBFRTgzRDQ2REM2QUMxNTc4RUUwM0M1NUI4OUYzRkRC
-CkFGNjBDOEFEQjVDRTEwREFCNjAwQkRFRkI1Rjc5M0IwQUQ4QTQ3NTdBNjVBQTQ5M0JCQkJC
-NjAzQ0ZEQURCMDg3OENEODMwNDMzNzBCNQo3RjFDMTlFMDJENUVDNDNEN0YyMTI4QzhGQzlC
-MkFFQzRDOENCMzg2REFCNjAyOTY5QTA2RUQ0OTk5NTRDMEZBQUEyNzNCRTE3QzJDNzAKNTk4
-OTVBNzk2MUM5MTA1RkVDREMxNTJBMUNERTY4MTRFQkE2RTNCRkJBOENFMTEwMzkzRTEwNDZG
-RDUxQTEwM0JFMTk0RjRCOUI1QkY3CjEyMzk2REJBMDEyQkRDQTBFRDM4RjYxMzk0QkRBODg2
-MkRDRDcwQzgyMEQzMDFBNDAwQjU3RjEwRjExMTdBNEIwOTM3M0U5QkY0QTcyQgpFNjIwNEMz
-RjU2Q0I5NjYxQ0QxNzVGNzJCMjM1MUE2Q0FBNjQwMUNCNTY5Q0UzMzM5NDI5MDE1QUIxQzY5
-ODRGNTE4QzZDMEQ2MDY0RDcKQTNEQUY2RUVGOTQ5RUM2MzNBNjcwNzBENTg3MDdENkU2RTAx
-RjI2NkQzRjU1MkI3NzcyMUEwRDU5RThEREM4NkY5ODgzMzAwOUQ3MzQyCjhGRDM3Q0JCMERF
-OUM4OTRFOTk2NjI4MTlDMTk2RThBOUZEQ0NFNDdDNEE0QkExRjFFRDFEOTBEQzIzMEE1NDBC
-MjZDMjE4QjlCMzBFMwo4QzIyNkEyM0IyODgyM0RDNkQ4NEQ0OUE2RTM0NkNCMkY3RjlGNzFG
-QjEwNkE1REZCMzZDMTZDREZGMUQ2NTFBOTc1NkJCM0IwRjAwRUYKMEE3MEQyOERFQzc4MUZF
-RDVBRDQxNzg0NDY5RTg4RUNEQjg3MENGODhDRTk5RkY4QjhDOTk0NzgzMDBBMzFERTgxMDU0
-NTVDRDVBNkI3CjZBM0RCQjUxOUM4N0MxQjYxQjE1RUYyNTRCMzg0ODI4ODk2ODc4OUMxRjVE
-NDc5QjEwQUQ5MjcyRkI3NzQzNTc2NkJBNDBBQzk4ODkxMwowN0Q4QTQwQzE0RUQwQjc4Mjkz
-NDQ5MUFDQzgyQTI4NEE4ODZEMjA0RDQ1RjFENTcxQUQxNDNBQ0E3Qzc0ODFGQ0FEQzIzNjZG
-OEFBMTQKREUxOUI4MjU3NEIyRkQ5RUVENzE1M0E1QjQ3ODc3RDNENTc5Qzc0RjhCOTFENTE1
-NUFGMEYzNDg4MkM5RTJDN0VCMzIwNkIxQjQxMjA5CjlFNzc2RERENEUyRTI0RkRBQTk4NTU3
-RTdDODczNDdGNTZFMUIxRDZEQjc4NjE4NDg5NjZCNkQwREQyMzJGQzJDQ0Y4OUVCQTUyNjAw
-RgoyMDg0MjMxN0JCRjRGOEI0NEFDNEFDQkZFMEE0Qjc3NzIyODIzN0U1MkQyMkRFNEEzQjhF
-M0FEM0Y4NjQ1NjdGNzg1NzUwQjIwNjRFQUIKRkY5NjU3QjM2MjJFNUQzOUY2QkFERkNCNjkw
-M0REN0RBOTM1MDE4Q0IzNkM2OTQ1NkQyQzgyRUQ2OTU0RTQwNjk0MkQwRUUzMTBDQTM0Cjgw
-MzMwOTYwM0Q3N0JENEJBMjQ4QzAyRkNFMzM1QkE5NURFQTk0RkY4NEREODA1NDI5NjZDNTAw
-MEI2MTBBNTU5MThBQzJDQTg2RDgzNwowQzlDOUY0QjU0MTI4NzU1NUQzQjEyM0EyN0E4MzU0
-NURGMjhDNzk3MEZCQkRCN0Q3MjE0QzcyN0FFNjg3RDAzNDg1RUE1NTVCNEJFREUKQzQ1ODhG
-NDFGMTE5NUJBNzUxOEM2NkZENDU0QTk1REE2QkYxNDQ0QzA2QkZFQUE3NTQ3MEZDNUE5MTk2
-NTY4QTlGQzczREIyODQ5RDk4Cjg3MUNFMDA1NTMxMjg0N0YzNzZEN0MxMDVCOTVGQjQxQUFF
-NjI5QkZFMjQxRTUyQUI5MTNCQUE1QTRGNjc1Q0RGMjU2NDYzMDA0MTYyNwpFMkE5RDhDQzE0
-NDg5MDgzODY0RTgxMjFEREYzMUM2QkU5RTBDMUYyOEYyRTQzNzE2QjQ4QjJDODUwQTZBRTRE
-RUZFNEM3MkI0M0ZGQkMKN0FEQzMwNzQzNzA0MUY5MDg3NjNCQzg3NjJDNzM1QUQyODU0RkM0
-OTY0Qjg3ODlFRDgyNUI0NjhGQTcyRDJBRUE2RTBGQjQ4N0U2N0IwCjhDMzAxMTlBREQyQzBE
-RURCMDczOTg3MEVBMDIwQzNBRUZDQzMwNkI0NjU3RUY3MjdDN0I5RDQ0RTlFRkE5RDFFOTRF
-RjQ1RjA0MzJBMAoxQ0EzNERGMzcyRDEyODY2MzlEM0Q2MjFCQkVBMEEyNzlERTE3RkFCQUNG
-N0MzNzAwRUUwQUI5NkI5MUU5QzY1RDAwMzA3QUY1QjdEM0MKQzVGRTQ0RTc0OUNDOTk3NDVF
-QkMxREFENEVFNEZBMzIwOUE4RjZCNzlENTFCQ0IxNEQxNkU3MTZFNTczNDlDQzcyNzBGNzU2
-M0REODkxCjFGNjFFQTNENTg3RTBBN0FCNkQ1RjUyQzUxQ0VFRTUwMEUxQTVCODdFNDY5OEY4
-NTg3MkE3OEQyNjhEQzU4OUVERjIzNTk1NTk1NzZCRQo2REZDMTdBQ0IzQUYyMUNDRURERTlF
-MkVBQzU3NzkyMUQ0QjY2NENCM0E5OTE2MjE0RjE0RTBFRTBBNUE3OTRGNTJBRUIyQTg1QzFG
-REMKNzU0NDhGNkU4QjI4NTgzQzg0OTk1RDIzNTM0NTk1MzlGREJEM0E3ODcwNDA0N0E5Q0E0
-RjhCRkVFOEZDNDE0RTZCQTg1RjBERjFEOTdECjAyMzREQ0UyRUQ2OEVFMEU5NkVENTcyQjY2
-RDFEQUZEMkREMkYwRkU3QkVDQ0I0Qzg1MTI5OEZEQjlGODk0Q0FEODU4QUY0OTY4Q0Y5Qgow
-MDFGQTE1QUU0QzdFMzhGRTI0NjAzOUZEODM0Q0NFRkM5NDY1MkVEMDEzQUU2RDRGQkY0QTQx
-OUM0RDFBRUUxOEFENjgxRThDQzg2NzIKNEI5RUIxQzVEQjEzRTgzOUIyMThCRjZCNzFBRUY5
-QUIyMzBEMzdEODQ5NEE2OTcwNUM0NzBBQ0I0Nzg3NUMzODgwOTQ2NTQ2QTU2OTQ0Cjk4MTYw
-MkFDMjJCMzc5NDdCQ0QxQTM2MTRGODY5NURFMzE0NzM4MzMwMkMwRjFEQkQzQTQxREFEMzYx
-MzgxRTI1RjUxQzQ5MjI5MjJFNgo0NTU1Q0E2M0IyRjUwNkU0QzFFQTdGQkNENzA3QTFDMjg3
-OUVFNEU5RUM0OEMwQUI5M0ZBN0MxQzlEOTk0MDk2MUI2RUU3M0JBMjlENDgKMDdDREQ4Q0ZF
-MDVBQUFFNzI0QUI3MThCMkYwRjNFNkM1MEY1RjUzRDlCQTU3MkZDMTRFQzYzODc4QUVDREFG
-OTkwQTdGNTBFQkMzMUE3CjE2M0E1MTdGMTE3MjFDQzg2MkY1MTU2QTY4OTIzNDg2MEJBMkNG
-RjE5RDZGQjMwRTYyNzJGOEFFOTkyNUNBNkJBOTVGNTQzMjMzQjYzRgoyRUU3NDZFREQ3MjVG
-NUYyRjUxNTE2RjFERjE0MzlGOTA2MkExQjJCMzIwNDQzNEYyQzIxODg4RDM4QTRGRjY3NkE2
-Qjg1MEUzQTY4MTcKMDQ5MUY1MzIzMTE2RUExMUJFMTBBMDQ5MDQ3MEY1OTIwNDRDRDQyQUVF
-MTc0OTFGMjU3NERDMjI5MzJFNzU4MzE5MEU5M0QxODJGRDcyCjVGRDZFRTAxQTYzQkNCMDE0
-MDE5QTY5MDI3N0U4RTQyMkNGQTRCMEE1MEZBRTA3MkUzNkY0QzZGMTQxOTNENTQ0RkJFMjE2
-QTc4QTNBNAo2ODlBNEM2RUNCOEJCMTQ5Q0I4RjZFQjZEQjAwMjk0MDlBNDhDQjdCNDU0RkRE
-Nzk2RDYzOEE3RUM3NDNBMTVFQjVFRTY1REQ5M0Q2QTIKM0RGREEwNEI4QjA0MEI4NTZCNzY2
-RkVBNDY1RTdBQ0QwNUNBQThBM0YxM0JBNEQyQjA0QUU1NTM5RDQyNEJGQTM0MjI3MDkwRkQx
-ODMxCjdFQUFBODM1MjhCM0Q0MEU1QzEwOEUzOUVCMkVDRkYyMzFEQTE0RTk5MDNFRkVDRTgw
-NzEzRkRCQ0JBQzkwNzczNDRGQTg2RDdGNzczMgo1MzVBMjZFQkQ4OUE4MDY0OUIyNkYyNDdD
-NzEwRDcyNTM2MTI3OEU3NzMxODcwMDk1QUFFQkNFOUI5QzA0QTczNjk4QTI4Q0U1MDlGOUQK
-QTFEODhFOUE4Q0VDQ0QwMjAzQzNBM0I4REJGQzU2MDYzRUNCMTdEQUU2MEMyNkE4MDgxNEY3
-MUZFMTJCMjNFQjE1QkE1NzQzQjRGOUUxCjI0RkNEQzk5RDQ3RDhBNDQ5QTRFN0JCRTdERThD
-QTM2RDk0Njc1NkREMEI5NDQzOEVFODBBNjc0M0U2ODNCNTcyMjNFQzZGMjA2MkIzMQowNDIz
-MTNFQ0UyQThFNjQ2MzYxRUU1RTI3OEVFNTk3RDc5Q0QxNkRGREMyNDAzNEMwRjJFMDNDNTRE
-REE5MTMyQjM3QUQ5M0Q1OTg2NTEKNTlEREE3OTNDMkNBRkM3NjUyODdGN0I5NDMxOTFCMDY4
-QjUyMENGQUNDMTM0RjQ3RDQ1NDEyMUVGMTc1MzA2NTY3ODc2MEQ5QTZCOTI0CkM5MEQ3QzlE
-NDMyOTY3RTRERTA2QkM1QUVFMTI1NTREQkNCRTM2NjE5QzA4NjVCMTlDOUU5MzlGMjg2Njc3
-RDQ2NDlDNjJEQzc5QUFCNQoyNEFDOUI2QThDQ0E2NkM0NkM4RUUyRTVEREQ0RTExM0I4QkMw
-RTM1Njg2N0IwMDFBQUQ5OTJGMUM4NTk0MENCMjU3MzYyMUM5OTg2QjYKMkU4MzBFMDgyM0ZB
-NDZGQjY0QUU5RUE3QTY3Q0VCRjBCOEFGNUQzQUQ2QUIzNjZFNTJENjBCNTAzNjIyMkRGNjVG
-NTA3OEY3MDIzNkExCjI1QTY1QkZDMzQ1RjZBNDAwQTgxREVFQ0QwNzE4M0ZCNUQxMEEyNjQw
-RjZEMjFEOThCOEMyRTA2NTBDMkREQjhBRDUzOUI3NzE5RDAzMApCMjIwQjkxRTE3RkYzQTVG
-RkZERUU0RDY2RDBDNDU4NkQ5RTRFREQxNUE2NDM5M0RFNjEyQThBMjA4Nzk5MUE3MjZDQkI1
-OTE3NkFFM0IKRDQ4Qzc5RjBEN0M4ODRFODMzREFCMjk0NDk5NTA5ODI1N0YzMDBEMjdDNDUw
-NEUzQURBNzFGNENEOUMzMDZEODJGQTE1QzExRkM3MDk4CjFFQ0RCNTlFOERDNTc4Nzg4MzE3
-QkJDQUJFQTc5REE4ODgyOTA3MzREQ0VCOEU1RUQ4RjdENTFDNjQxMDQyODFFRTAwRDk1MDc3
-RDRBNQo4Q0U5MDJBOEQzREI2Mjk3Q0ZCQUI5QjRFMEVGNzdEQjMyM0UzNEE1MkIxQTkzOENF
-OTUxQTE5ODk2NDBFQTQ5MzVBNDcxRDEwNzQ5RUYKNzI4OTQ3Mzg2REE1RUFBOUJFMDExN0U0
-MENGQ0Q4MDVBREMwMUVGM0IxNTI4MTlCQ0QzMzJERkU1RkFDRTE2QzIzNjY5MzcxRTYxMDgx
-Cjk0NzgzNjE0Q0Q0NkE2ODg1RTU0M0MwMDM1NUIxQjgxQUM5MTdEMDUzMjVGRDM5NUJGNjE5
-NTg3NkQ0RjQ2Q0Y3MzlENzQ4MjY1NzYwNwpDN0FFOThDN0RFNkQzOTdGNjA1NURGNjdGMTg4
-NDgzNkUyRDY4NUM4MDY0RDgzNEE3NzE4RUI0MUE4NDNEOTk0RTA3MEQ1NDg4RTI4NDIKM0Ez
-MDA2OENERjAxRjg0QTM0RUEyQzQ3QTQzNDFGQTk4QzkwMTFGQUVFNTFDQkQ5OERBQjI1Qzk4
-Qjc4QzA5NTdBMEZGRDAyMkJDQzk3CjY0MUY4NThEQzQ0NTcxNUFCNDYxMTE2QUU5NTY5NTNG
-MjA0OEZCMUE5OTBENzc1MkQzRUYxQ0I2NzY5NzU4MzY4MUY5NkIzODVGRDg3MAozQ0UzNUVF
-RTYxMUU4MERGQjBBOTkyRjg3QkVCNUI3MjRFQUIxMzBCMjU1M0Y0QjA1OTlFNzk1QzQ3NDNB
-QjMxMjQ2MEI2NUNENTNERkMKNjQ4RTg1M0MwMzJGMEE5RDc2MEYyNDFGNjE3NDcxMENEMTYw
-MkNENzhEQzQwNTMxNkIwREE0M0Q1RTJENEVBREExRTM2ODhGMzJDNkI5CjRGMDJFRTI5RUQ3
-OTg0OEM0NTk4OTExODc0MzI5NTdBMEY0MjhEMjU2RTAxNUU4NkMxMkU2ODY5NkFGQTREODkw
-RkI4NDIyNTQ4MjJFMAo3OUFBMzIwQkMxQkQ0ODBDMEEyRjI3NkQ4MzNGQjNDOUQ4NzQ2QjUy
-RUVGNEQwREMwQjYzRDAxRjYxRjk1MTJDMERGNkU5MTFBNDEyNUEKQ0VBRUY0OUFDNDg4RjFB
-Mzk1ODQzRjc2MERGMDE4MzgzMzlBQzVCNTNFNzYwRUJFMjU2QTA0RjA5MkNDRUJBRkQ5MjE4
-QURENDE2OUUxCjgyRDJGMjA3NTMyMDA4NTlBNzc2QjIzNkU2RTU0MDBDNDI1NUU3Q0REMjJE
-MUQ2MTM1NDgwRTE2NTkyRkI2ODAxNDJFNUFCQjA5QkMwRAo3QjY0M0JCRTA4ODhFRTVENUEw
-MDA4ODE1NzQ4QjIzNTZFNzE3ODEzQUIzQUVCMjBBNThDMjkxQzQ1NTkwODNFQTU0N0U2QkRB
-MDc1MjEKMzQyQUUxRDQ4OUYwRUM3RTlBQjRBMjRBQTk4Q0M0NDhBRjNBMTk4OTEwRTQ2Q0Y4
-MjlDQjM1MTgyREI1M0NDMDRFQTAwMEUwNUY0NEJCCjQ5NUE2Nzk3MzZFMUQzQUQ3ODg1OUMx
-OEE5QzgyRTlCNkRBOTZBREY0MzlEQUMxMjI2OURFMkI3NDU4NDE1MjVDNUIzOURFRjNGRjRE
-RQo0MDVDN0ZGQTMwQzI5QkY5RUE5NzlCOTc0MUREOUMwNzIwQzI1QkU0MkRGRjEzQkFEOTEz
-MjdEMTVGQ0Y5MEU3NTg4MjAxQjY0QzJFNzMKREU4MTM4NzM3RjFCNDc0MEIzQzU0Qjc4RkI0
-NTgwODE1QzVENDdBQjE4NzBBNTQ4REJDMjBEMTE4RjhBOEE3RUZBNUQ1MzgzRDcwNjlGCkUw
-QTNGN0VERTQzQUYxRTQxMUYzRTQxOUYxOEYzNDdFRDUxNTNEOUI4QUIyRUI1ODRERjJBODc0
-NzA2MDE0NUMwNzRDQzJEMzA4RkVGQgpCNjM4NDFFQUZFNTZDOTA1QjRBNEIxM0E5RkU4MEU5
-Q0JERTQyREZDRUU2QTNGNUJDOTg2QzJDNzQwNDAxQjQ1MDkzOUE2RUM0NEU1OEMKQ0JBNzk1
-NUI3QTI5RUQzREQyOEM3RDYzRkJCMDRGOEZDODI1QTYwQzYzOTlEQTc2MkQwNDVDNTE4MkYy
-NDBBOEVFN0FGNEY0MDQwMzkwCjk5NDJDOEY1MzNCM0JDNUM3NjNCMERDOTVBODM0RDFFNUVG
-MEY5MEJBRDA3RUMwNzM4MEU3NUE5NUY1N0I4QzFDNDZBMjhFRDZBNDU1QQozQ0RCMDVDNTY5
-ODFEQTEwMDY4RUIwQkQ5RUVGMEIzQjMxQTc2RjY2MEU5RDM0MEQzNzdCM0Q4QjYwNjhBNzIy
-OEY3Mzg2RDhGMEQ0MTAKMzcwMURERkNFNUY2NzhDQkY2RTcwRkRBQUJBRjg2Qjk1RTJBNzMx
-NDg3REYwNkI0RDAxMUUzODEyMEJFQ0Q2QjhDOURBRTIyQzk4QzM5CjFGRjhEMDE5RkFDNTc4
-MDY5RjZGOUVBRUVCRERDNjdBQUJENDEyNjc2NEQxNkI4OUU0RjhBOTlDOTNBOTYxQjkzMTIy
-QTREOUIzODlBRQoxQzY2NEMzMzg4RTFFN0Y5MDcxMzIxRjVBMjJEOTE4MDJCNUI5NkJCODlB
-QjdEMEQ4NTMyNDhCMDFFQjc3RTUyQjI2NDYzQUQzMTdGNzgKNDdDNjI4ODFGMjFEMjU3OENC
-QjI4NTVBQTAyQTUwQkVGNTU3OUQwOUFBRUNBRjU5ODM1RTlFOTQ5MjQ1QTFDRjUzOTgzRTY3
-Q0Q1RjdGCkNBNURCQTVGNEJBNzQxRTdFNDlDNDA2NTIyQzM4MEE1MEEzNjMzMzQyMDQyRUMz
-MkY4MENEQ0ZENzI1QzkwNzJCMjcxQUM4MzcyMkY3Mwo0QjNBOThGN0M1MTZDN0NEQTgwNkEx
-RkFGOTdDRTQ2MjEwQzQxNTNBODQ0QTM1Mjc5MUU2QUU1OTQ2MTlGNTFDNjU2Q0YwN0I3ODNE
-NjEKNjRCRkZFRDg4MDlBMUU1MDJBNTMzQ0EzQzEyNzI3RkZGNDg1MkMwOThEMUMyRjBGOTI1
-QjNBMDI5RUZCNkZGRjgwREFCOERDRjdDOUNBCkZBNUY3RDk1OEE4NTA0REJFMkU3QTJDM0Yy
-NjFENzM2Q0Q0ODk0RkUwMDA5QzZDMjRCQzdGN0E5RUZEMTJFNkFFQjREMUE2MEFENjI1Nwo0
-QjhGOEI3QzU0OTU0RUQxQ0FFOTU1MTFGMTY4ODZFNTEwOUE5OTMzRDg0RkYyNjZFQzREOTRE
-QTg5NjE5QzgyRDM3NkE2MzUwN0NGNEUKMjMzQkM3MEJFMEQ2NjBCNkVCNDcyRjRFQjZCOEQ4
-NUM5NjEwOEM1RDAyRDBEMzlBNkQwMjQyOUQ2MEQwMTBFMUMxM0E4MUUxQUIwMDEyCjlGRERC
-MUMwOTAwRUFENzg0NUIzMEIxQ0M3OTU1MjBBMzQzRTBGQUI4QkNFNEQ5RjY0MkVDN0Y1MTg0
-NkY1RkYzQjg3RUVDNDA0MjNFMQpBOTE5MzFGREY3M0JBRkRGMzgzRTU1QjI1NTU2NjY3OTk3
-OUYzN0UyNTZENjA2MTIxRjBDMzExNkJFRTAwODk3QTdDMUMyOTgwQzc4NUUKQTM3RTA1RjJF
-MzA3MDE4MUYxN0Q4REY5QzEwNDAyMjE5NzBGNjI4MjAyQURGQkNFQTZDQ0VDREE2MTYzN0U0
-MEFCQUQ2QjBGNjM5QzIxCjczNTI5OEYzNUVBQkQzN0ZBRDMxMjYyNDczMDlFRjk1NzBBQTRE
-N0YyQUZGOTU5ODk0QzA4OUQ3Nzg3OEVCNUQzNzA1RjhGQ0I3NDhBQwowMENENzc1MzVCNjcy
-RkZEMzZFMTYyRDg1MzcwMTM5QzBGOEU3NjQ1QTY2NUMxRDIzQzZDNDVDMENBMDZBODlGMkNG
-MkYyM0MyN0E1RkQKMDcwRjU3NTQzOUE1RkY4OEQ5MjM1REY1NzlEODU0OTYyRTAyNUMzNDcw
-NzcyNTZBNUY0REQzQzVGQUUxMEE1QzI4MDFGOTNDMDhFMDIyCjk2MDBDRTVDQjAwMUNCRjcx
-RTgxM0UxMTZDNTYxNDczMDQ5NzZDQzI1ODAxQkMwMjM5RUU2RDEyQUYyRDJBMTBFNzI4QTRC
-RUMyNDlFMApCRTUzNDIyNzJGNkE1MDgyNjQyMjZDQTg0NzlCRDk0NkUyQkVENDA1Mzc5RDA3
-NDhENEE3MDdFMEVGRjYxNzVENUU1NzExN0EwNEZEOTgKQzAzNDA1MzgxQUY0NDMzM0ZENzM0
-NkREN0Q0NkY3MUNGNUFBMUE4NzIwNUVFRjhEN0IxQ0NFOTcxRjlCRERBNDY3NjI5QkUxNTU2
-Q0E0CkZFNDc5REQ3NzM4MEYyMkU5MzY4NUMxMkQ2NDFFQzMyMjdGQTk4QzkwRDkyNjVENzUw
-NEI3Q0RCM0NDRDA5MkY0QUUwNDg3RTg5Q0E3NQpEQzAxN0RBRjlDOUM5NDc3OEZERkM3Q0Yy
-NDE5RDMxN0FFRjJENzA4NTdFNTI3QTVGNDlGQTI2RkYzRUU1NzdBMEE0NEVGNTQxQzdENjQK
-MDYyRjdERjNFRkJCRDBGRDdCQTYzRjVENEYxRkZGNDAxM0YxNDkyMTU1MjFGNUU5MTA5MjU1
-M0YyOTczRTBCRTFBRkY2QjU4NzZFRTYxCjNBMDgxOTE3QTQxOTgyOTI0NTVERjdBMzM3OTU0
-MjM0RTJBNDQxMjc1RTVGNEE0N0VCMTlCMzM2Mjc3OEJBNzA4Nzg4NDdGNDc4RTM0MQpCRTA5
-MjU3REQ5ODIzQkIwNTg1MTJENTg4RkE4MjY2OTExQzU4NDZFQTVBRkM4ODY1NDk1Mzg3MjFF
-NDc3NUVFQjgzNTRGNjRFMjBEQUQKNEI5MTI5QzZFOTM3MDI0MTQwOEJBNEFFMUUwOTA1OUEw
-RjJDNUU0NDQzRkFGRkM3NjJEMkVEMkNBQzlGNkVDMjQ0NjY2MjEyMTc4NDQwCkEyRDMwNzRB
-OEI1RENCRDgxMEZBQzUxNjI3QTgxRkM5RDQwRkMzMjU4MUNDMUJBNDM4QjUwODY1MDUwNzY1
-RUFBRTFGMUU5OUMxRDg5QQpBNkNEMzgzOEE1NDU5RkJGOERFQTIwQzk1MzE4MDFDMDM3RDUy
-ODhGNkNFMTlBQjgwNzNCNTk1MUQ3Njk5RDNEM0M3RjkzN0I1QjUyMUEKMzVBRTEyNzkxMTAy
-ODcxQTBDMjdBQUVGOTYzMTE5MjE4MkE1QzQwQjlDODM5NTlBOTYyMDc4MDJERUU5MjYxMUZG
-Mzc3ODY2NERCMUFECkQzMDlCRkFGNUVCQUFFNEI4QTRGRjAwOEMwQkU0MkYxMTUxRTlEMUY0
-NjBDQ0YwMThDNDI3MDNFMUEyODM2Q0NEQUJGMjZCNDc0NERFRgo5RTExMUM0RkI4MUZFODlC
-NEI5QkMxNUUyODgwODU3RUIzNEIyMTk1MkM1NUY4QzYyRTgyNTRFQzMwMEZDRTFDRDVENDY2
-NTdCOTAyQTEKRDgxQUNEQUU5MkU0Q0NEQkU0QzM5REY3NDdCRjlDRjhCMUNGQTMzMTRDNDUz
-RkRFMjNGNTJFM0FCMUFGRDY2QUZFMTJGNkRENTNGQzVBCkYyMzZGMTIyOEVFQzlEQzhDOEFE
-RTgxNzMzRDZCRkFCQTY2OTg5RURDNjc2MjQ3NUYwRTcwMjI4MDA5RDEzMDFERDVBQzY1ODNC
-RTEwOAozN0Q5MEVDMUQwRTRDNTQzRERBNjY0NTk2OUZGMzRDN0JBMjFERjJBRDNCOTUyN0VC
-MTA0QjcwNDk4RUU5RTYxRkZGQjJGQjM4NDM0MDQKRjhEQzMyMkM4OTQ2MzU5NDY0QUMwNTcz
-NzBDNzZBOTBFRDNDMDI1NEQzOEVGQjUxNkI4Qjk5RTE1NjA4NTdFQkI1Q0I4ODU2NkFEMjY5
-CjU2NjUyRjFEMzM0RjAxRkM4RjAxODU0NkE3RjQ5RkQxNzEwM0JCNUVGMkE2QTNCNkMyNkY5
-Q0VCRkZDNzQxOUQ3MUY2MkFBNUIyMjJGOQo5M0VCNUEyMjdDNzNFMzEwQTNGMzRDMTlBM0Y3
-Q0U5QTEwNTM2REU1MEJEODFDNDExODIyMkMxNjNEMENFQjhBMTZERjZCNEVCRjJCMDYKODQw
-REVEMDgxMDZGMjhERjkzRTMzQUMyQzQwNzVCNDM3MjM2OTBGOUM4OTBENEY5MUNGNUFDODc0
-QjRDQTdCQ0UyRjI5NjJFNTMyNTI2CkY0REFCNzQ0RjgzQ0Y5MDVBQTQzNzdCRTZGMDU3NThF
-QjQ0NjEyQkNCRDUyQTU2OTJCNjBCREUxMDU4NkExMTEzMDA1RDkxNUE3NERGQgo1RTQxOTIx
-MEIyRTVBODZFNTgxNEVEMzRENURBRUQ2RUVDMzgwMjg1MTE2OTYxNUI2QTI3NDRBNUJDQkE1
-QjY3RTkzM0ZFMkQzRDczOTgKMDU2RDdBMzE2QTRDN0QwQTc3OTA0MDVDN0EzRDA1MTdFMTc0
-ODMxQUE3OTgzQTg3RkJCNEM1RDI0RjJERkZCRjg1NzdBOEIzMEEyMDlCCjI3NDY2NzMyRjYw
-MEI2MEZGNTAzQUU1QkNFRjA4QjI5QTk3MTVFREQ3RUJDM0RBNEUxNTIxOEI3NkQ4RkQ2MDY2
-NEI2MUUyQjY4MkIxRgo1NkNFNEI1QjEzQUMxQjBFQTRFREQ2QUQ3NzI0NEFCMTY2QUNDMjNC
-MTAzNzkwRkNGMzJGNDFCN0MxRTE1RDc4NkE4NUJEM0I4MUE0NEQKMzc3NDM4N0NGQkQ0MUI0
-M0I0Njc4QUY0MjE3NEVENzZCOUM3MEY0QkMxODNEMDFDNTI1RUNBNzU2MEE3REMxMkUwODA0
-RjhBNkZDRTA1Cjc2MDM2MUI5MEExNTY5MTVFRkI5NUNGQzU1QUQ0REY5OUQ3N0E2NTM3Njg2
-QTJBNjBEOUY5MjZERDlCQTNGQkQ4QjY1MUQ1QjY5QkZENQpBQkVEN0QyQzhCMzI1MzlENzUx
-MzQ2MTU3NjFGQUY3ODNBNkVFNEMzMUI0NzIwNDgwOEM5MTU2QTZFQzJENzAwNDlEQjM1QTcy
-MDc0NDcKQjM0NkRBMjQzNURCRjQ2QUY3QjI0QzZFNEJFMUI3NUIzMEU1RjY4NjgzQTAzMDUy
-QjA1QkIyREQ3NUE1MTI3Q0VDNEZFMTEyODRGMDNDCkE5QzQxMDJBOUJCMDEzMEVCOTk5MzNB
-NzQ3OURCNTk3OTYwNjQwQTNFQjkwQkYwRURGODlEOTNBOEI3MzkyMUU5RTdDNEY3ODJFREZC
-MAo3MjMzNzcyRDIzNDNEOTBFMUU1ODFGRjIwRjUxODFDNjdFMDUwQTE0QUU0MEVGQUExNkZD
-RDYyRkQ5QUFENDE5RTMwMUQ2ODkzRTIyOTEKOEJCQTMxMzQ1QTlEOTQ3MjA4RUEyMzkyNEI5
-MjU3RUU3NTNBNzEwNEU0MUVBMTBENzJCNkU3MkU1MDcwNTNBRTM1QkMyMEFFNUYzNjlFCkIw
-RDc4MEU1Mzc0MDY3ODBBNTVBRTdDMTEzQTgxRjRFMTAwOEZBRjI3NkY1OThFMjc2Mzk5QjRE
-RjExQUZFNTFDRjhEMjJBMzVCMUJDRAoyNDdEQTcwMzc3Q0JGN0E5NkU4RENFQzE5NjU4Rjg4
-RDZBMjE0RDNGQUQzNTZCQURDNjUwQTQxQjM2RjEyQjExRUM5QjE0OUZCNkE0OTEKMTBERUYy
-MDNCOEY4NjcyRkNCQTMxNzk3NEYxN0VCQUYyQzgxQ0IzOThBMDZCNjJGNjM1RUUwMTBFMTk0
-QTM4RUQ0QUIzMEM3RTcwNzlDCkFENTFFRkJBOEUwNjlCODExQTM1QjQ1OUIzNTM3RDY4MDFE
-NzQ3QkZERUM1Rjg5RjQ2NUZEMjk2Q0UzOTZGODk0NDkyMkQ1RjgyQTEyQQpBREZBRTM0QjZE
-NzIzODI4QzhBMzAyOTJFOUU4QUQ4RkI4RDk3QURCRDlBQjIyRTVFNDU1MjNCREZGNEMxNzIz
-Njg4MTYzQkM3RUNEREYKNDQwNTJCNjk2MTY3QzBBQ0ExQjRBODExMzVFMEI4MzdBQ0NEMjJE
-QUJCNURGRTQ2NzY1RUQ0QkMwNTU2QjdGQjI3MjM5ODEyRkQzMDg5CkZBNDgzRUFFNjBDMTBD
-RTZEM0I4RkIwQUUzM0YwNzAyMkY5NkUxQjk1REM4MThDNjdBRURBMUQ0MUJFMTE3MTI1NDhE
-MDU2OEEwNjJCNQoyNkE0NTY5QjlCQjVGNkVBRUMyRDE3NkY5MjRBQkZDOTk3OEUzQUZDNDI3
-RUIyQkE0NkM3NjhGODNFODZGM0I4MTc4NzA0RTZBRjRBRDIKRUE0REY0N0U4OTg5RjMyN0Q4
-NTgxMjc5MEVBODg4Q0RDOTIwRDE1QjgwRTUxRjdDRkM0NEExMTg5MTI3RDJDOTQ2OEQ1MDIz
-MUNBODA1CjAzREYyQzIwMDdFRjI3REE5QzQ5OEM3NzhGMzgzNzczNUVFNUVEQUM0N0Y0QTAx
-QzJBMzkxQkUwMjMwMDQxNTY2NTIzNDlGMDYyQjFFQgo1MDRFNUFCQzgyMjgyQTQyM0U0NzM0
-MjAwMjAwOTc3MEQ2NDZFQTUwRjkzM0YwQkM1RTYxNDNGQTRCMTczM0RGQzZERjZFRDdERTZE
-RDQKRkI4Mzg4QzdDQTgxQzkyMTBFQTBBOThCMDI3NUI3NEEwRTBGNTEwQzkwREY3MUM5M0Iz
-QTlGREI2QTg2REZGMjkyMTM4MjM1MkM4RkVFCjFBMEEyRTYwMDNCMDA1NDY1QzFGMzFCNjY3
-RjVCREQ5QUNFNzQ1MzFEMEZERDU2Q0VBQkJCRjVFMEE1NTYzM0UyOEY3NTBBN0MyNTcxRAoy
-N0ZDQkUxQjAxQzM4N0Y2RjM2RDIyNUEzMEM2OEJEMTg1ODQzRjQ4N0MyRTk4QjU2MjlBNjI4
-N0NCQUYyMjY3ODgwQjJGNDg1OTYzMjAKRDdBMUVDODdEQ0U1QzUyODNFMDM0QUY1ODJGNTky
-QjdFMEIxODUyMDlBQjA3NDgwQTk4RTY3NjYwM0Y3RjkyRjk2RjlBRTZFQkU4MEE5CjVFNjI1
-RUY3RjRCNDY5NDU4QjJBN0RBQTRCOEZBRTkxMDM2NTI2NjNGMzUzQzM1Rjg4RkZGRUM0MTI5
-NjgwOUQ1MjEwNEUxRDYyOTk5OAo3MzVFMUNBNEQzNjQ0MkJCOEJENkMwMkVFNkUyNzM3NEIy
-NUNCQUU5NzA1MUZERTdFM0VCODFFQTdGNkQ4Q0JEREE0NUYyOTIzMjQ1NkQKQzFDNzBCNjA4
-NjlENjNBNTA5RTlBQTMzREQwMDE4N0JFRDVBQTEyMkFDOEFDQUU1QjVBMDJDODVBNEMwQjY4
-MTkzQjJGNDM1NUVBNzc5CkRGNDRGNDg4MjcyRTkyMjk3REYxQzhFN0ZBRUNDNEVGQjAzMUUw
-MjMyRUMwMzJGMUVDRDRGNkMzN0I2NzA3QTI4RjFDRjlBMjY4M0ZDOAozQjk3MjVGMTk0OEQw
-MjA5MzEwNjVDQjUyMUIzNDkzNEQyQ0VGRTk0NThBMUNDN0VDNTUyOEExODNGMjcwQUFDMDhD
-RTgxODRCOTA0ODIKNjIyMUNCQ0E0REFGRENFODgwRDM5MUQ2QzREODI4OUJCNDVFQ0M3M0M5
-NERFQkFBQkJDRkQ1MjlFRDlCNUZFNTVFNUQ2QTQ4RUIwOTY5CkVBMDNFMTVCOEQ3REE4RDU0
-Q0IxNUUwMzcwQzhFMzlDQjgwMTU4QzZCN0Q0MEMyOTUxRDczMzQ1QkYzRDgyRTQ5Qzk3NkEw
-RTkxOEIxMAoxQzIyRkZENTUxQzY4NUEzQzdBRDE3REM5OTE1QTgwODE1RUIxMTQ1NTBFOUJB
-REZBQzJFQUQxN0MyOUQwQzgzNDg3MUNEODg1NjNGOUMKQzJDRDhCMTkwRDAyRUUzNDZBODJD
-NTM3REYyOTk5NzIyNTg0QTk1ODQ1QkIzNjdFNEY3RDY3NUZEMDY3REM0MkZFRDU5NTQ3M0M5
-QjU1CjE5MTFBNTRCMTRERDEzMEJDN0NBRDc4QzQ2OURCQTk2NjA5NkZBNjlGQjkwMjdDMTU0
-MkI4Qjk1QkRBNEZDMjI2ODNEQUYyMkM4RUJBOApFMzU4OTI5RUFFNkMxOThDN0Y5NzMwQzVE
-M0JBRDYzMTk2NTE1QzRCRUFBRDI3QzI2ODQ0Mzk4QkQ2NEQ3NTBCQjA2QTI0MDM5N0JDOTEK
-NDkyQUNFMERBN0Y2MDUwQkJCMTU3NDBEQ0JCRkMyREM2N0NDNzQwQUU4RUU5MTUxOTI3MTVC
-RDQ3MkE0NUJCRjMzQUE1RTNFOTNGRTZGCjZDMzlFMDlEOEVGMzA2OEQzRTdEMkJFNzY4NjMy
-QjZDMkYxRjJCMEYwODg0NEM1QkQ3QUYyRUZBNkNFRDI4NTY0Njc1MEY3MEVBODE5QgoxOEIw
-MzcxQjNERjdCQzREQTJCOTBFOEZGQjlFM0RDMDY2QjlFQ0RGMDFBMDJCREJEODgyQUI4OEVG
-RDdGQ0YyNDY3RDRCOENDMzIwMjQKMUZENjhDNkM5NzQyQzVFMjUwQkE2NjJBODU2REE3MTk0
-QzBBREUzNkJERkIzNjU2MkMyOTEzMkRFRDNCQUEwQTg3QTc2MTY2OUNFM0IyCjU2RTExQTZD
-QzQyQkRDNkYwQUUwOUY4N0MwRDdGRTY4OEVGODk0OEY2OTIxMEFDQjE0OEE5M0Y1OUZDMkVG
-NUIyMUI4RTgxQjcxRDE4NQpEMzdFMENGMzZCMkYzM0JCRDc3Q0QzNjA0N0U5OTg4NzA0QjA2
-MjlGQ0FBMzE4MDAwQURGQzRCMzcwRkE1QjIxOEExNjFBRTdBOEQ5OUIKODg5MDcwMjlCQzgz
-MTM0Q0U5RjkyQjIxNzM1QkExNUYwRkU1NDdFQTc5RjVCMkQ4Q0M5NkQxMEUxQjAzNzNBMTNF
-RDE4NTAwRUVGNDYwCkRERjJDQUVDQjBGNDRBNEY4OEE2MDkwRDY2MEU4NzlBQ0MwM0ZEODVC
-NDkwOTA4MkRERkI3QzkwNDI4RTJBOUZFOEI2MDM3N0REMUVDQQozRDA4ODVDNTQwMDQ3M0NG
-MjEyREZDMkVGMzA5OUM3M0EzN0IzODg2REE4QzEzOUZCRUZGODQ5MTE2ODdEMURBOTYzRDBF
-OTY5MEJFRTMKRjE5MUE1RTFGN0I5RDNGRUIwQTQ5N0FDQUNFNjhENDI2NjBEOTRDRUE1ODI1
-QTE5QjY1QzFBMzk0Q0FBRUI2OEJFRDVCODg2Rjk0RDcwCjg0MDdDNkRGRTgxODQ0OEE0OUFD
-M0E5QkUxMEM4OTkxQkZBNURBM0M5NEJGNjA4RkVDQ0MwNjA2QkY2QUEwRjFFRDFBRUZFRUFE
-RjBBNApENTIyNjUyM0M0QzZBNzdGMEZDOUE2QzczMTg4MjZBQjhGQTI4NjMyNDIyOEFCQ0Qy
-NkQxREYyRkZGMTY1MEJENzE4NzlBRTVEOTIzMzcKRUI2RUFCRjlBNTk5MzA4ODk5NzUyMjE5
-RkY4Qzk3Q0E3MkMxMTI0NkREMTExRjM0ODY0NkYyM0E2Mjk4MEY2NDQ1RENDRkUwMzVBQTRD
-CjVCMkU5NzNBNzg3RUY4RURBMjYwQkY4Mjk4Nzk0Qjc2RkVGN0Y2Q0Y3OURDQTkyM0Y5QURD
-MkIwNTI0RDlBMkQ0RDQyNjlFQTcwOUMzOQo1RDc1RTNGMjNGOTJGRkRDRjdFOEJGODY5MUQ1
-MkRGMTMzMjk3RTRBRUI5QjE2NjhBQzA5NzQwOTQyODQxMUM3ODg3NDI3REU5QzAzQUMKMUYy
-MjlCQjk4MzMyNTI1OEUzRDM2RTkzRDMwMEYzQTMxRTFCNDg2MUExQTMxRDYxNzMxMzU5MDQ0
-RkIxMDc2RTk4QzJDQUYyNEM3N0QyCjQ1OTM1NjE1NkUxRDk1NzBEOUI3RjhFRDMwRTE0Qzk1
-RDg2MzhBRjU0MTBFQUUzNEM0MUEzNUU1NTI4MDIyNDhEQTkyM0JFQUExNTNCMQo0RTYyNzM1
-QkQ1RTA5RTIzRTU2MTZGMTBGNUI2NkZFMUQyMzhFQTU5RTI5M0YwNDU5MDQzRTQyNTM4RTE3
-QUVDNzZCQjA5QzRBNjM1M0MKMzBFNEI3NTZBODlFNDBCOUQ5Q0E2RkUxRDQwNTY2NzY5Q0M2
-RkUzQjE0NDI4OTk3RUQ0QTI0QjIzOTYxRUYyMUE2MUQ4NzlBMjk2N0RBCkNGRjkwOTE4MEY1
-MjYwNEFGOEM0QkQ0N0Y2QTk0NzRDNDJBNzUyODYxRTgzMkI3QjkzMTYxQkMxMjI0Qjg2NzNB
-NTNCREM3RjY2M0JDQwpEQzcxQTlBQ0FBNTk0NDg2NjA3QzE4MEMzMDM4NDg4MUMzMjQ1NTQz
-NTc2ODVDMTQ5QTBEOTZBRjZBMzdFNEUzRDIwRDUwMjFGMTEyMzgKMUQ0Q0IxRjg2NzQwMzUw
-NzFGQzYzNDYzODA3NkMyNDgwQjBFQUNEMzA2QTYyRkQyMkVBODU5OTAzRjJGMzBGMUY5OUM4
-N0YzMjQ1REZFCkE0QUI1MTQxRDI4MEM1RUVBRTY5RjQ0RDQ3RDM1OUEwMTFBMUQwMUZFOEJF
-QUYzQjQzNDc4RjhCNDdBNEYzNzUwODg2MUEyRERENzcwOApCOUQ0NzQyQjZGRkExNTZCNjRF
-QkMwQ0Q4RkY1NjI0RkI4MDkwMkRDRTU5Qjc4MDZBNDNDODYyMDA2ODY5RDBDRkNBM0VCMTM0
-NzM5NTIKNDkyQ0ZEQURFMUU0NThBNTVEQjA3OEIxRUY1OERDNUQ2QzMwM0VBQUE0MTVGNDNE
-RTlGMTlBNTA4MTQ3RkFCRkZCRkFCNjk4NjJFNTI3CjE5NTIzREYwMUJERjIyQ0E3NzlENTg3
-MDU1RDM3NTM5QkJGOEQ4QkQ2ODUzRTRFNjk5RTY1RjdFQzZFNUQwOTY2MDFEMDkzNDBCRDEx
-NgozODU0NEE0NUFENkU1ODY2M0ExQzQ5NURDQzFGQTc5QzgzNTFENjlEMjk4QjQ5ODM4MkFF
-NDcyNUYxOEY4NkYzMTVDNTg4QkVEOEJGQ0MKNjY1NUNGMkU0QUJCNDM5MjgxRDE5OTk5NEJG
-MjFFNDdBMkU4NERCRTM3RDM2MzdEQjMyRTk2MUI1QzQwQkVEQjM0NUM4MjE5N0QzMjRDCjM1
-MEJDMzQ0RjJFRjkwRTZCNDk2QkRCQzFCQjRBMzU5QjcwNjMzQjBBMzUwNzZGQjg2QkUxMzQz
-Q0JEMzlFNkRENzc2NzFBRjY3MUNGNAozNjRDMUNEOUJDN0JDMTUxRkMwRkVEQjEzNzkxMUNB
-NTkwRjM3N0IzNTk5MDA5OUFGMzc1NkMxRkYyMTg2NTZEMTc2OUIyRTVBREU3RjcKNTcxRTcx
-MzJDRkJFRkI2RjBCQ0Q5RjQxNjRDMzM3MzhDQTYyOTM0RTEzOEVFNUE1RkE1RTgxQzNDMUUw
-NEQxQzFBQ0NBRUFEOEQxNUFDCjRGQ0JCMEZGRUJFNTc3MzQyMjcyQThCRTVGREU2MDY4MzBD
-MDI4OUFEQzQxNDE4QzcyODJCMENCNTIzNEQ4Qjc1RDY2ODgyM0EzMkI3MwpFMTQwMjI4RThF
-ODAzMTE1REYzOEQxRDYyMTM3MThCRkJGQ0IyMkIwNDA1MTA4QTVDOEJEMzAwOUQ2MEJGRUVE
-MUIxNUU3QTVEMjFGMTEKOThGMDkxRTExQjgzOUMyQkE4MDlBMjI2NTJGNTdCMzAwN0RFRTY4
-MjdBQzIyQTk2NTU2Mzk0Q0Y5MDUxQjkxQjFDQzQyQTIwRUFGQjhBCjJEM0Y5NUI3MDkwREE3
-OUFBM0Y0MzQyMDQ1RURFMjQ3QUM2M0Q4RDgwMDZGRTRDMkE2MTdDOUIwQUVCRjI3NTMwNDI0
-NzM3NjJFNTA1MAoyMDYyNzQwOUFFOEY5NzVFMDU0N0MwN0Q0MTQxMDVBQkZFRTQ5Njk4NUMz
-NDIzRTFGM0FDNzEwNzZGQUFEOTc3ODNDQTQyNTA5NTFBQjMKMzc5QjQ1NjJGMkE3NzQ0RjQx
-RkM0MEUwNDVBNzk2QTNDNzU2OTgxRDdGMzVBMzhCNkE1N0MxMkI4Rjg3NzJFRjA3NTM1OTFD
-NjVGNjMyCjcyOTczMkVGRTdGMDUzQzI3QTREQUM5OTA3RkVCQTA0MDNDRThBOTAyRjcxQTI3
-OERFOUE1NjE2NDYzMjU2OTE0QzFCRDExN0E2NkI4RAo2MjkyOEEwMEI3RkJCNjZFMzMyOTlE
-NjczQjY4MkJEQjZBMzA3OTBDMkEyREQwNkYzRDgyRTE5Q0Y0OUMxQjlDNjc2QTQ0MTNDRDRF
-NzAKNzE4RjkyRkMwMDg5QTcyNTcyNjhGNzVDQjNFNTNGOEQ0NzgxQzM3RThENUUzN0QyQzkx
-OUM2MTlBMzNCNEM3MTQxQ0E3MTA3RDFEQUM3CjY5MDE2MzU1Qzg5QzFERjJEQjc4MjcyM0I3
-MTM1N0NDMEFGNjc0RjBGMzZFMTg0ODUwODhBRDA4QjhCOTk1RDVBOUNERkQ1MDcwQ0VGRQoz
-NzQyNEMyOTA5QTM4QkQ2NkRCRTY0NDAzOTZEMDJEQzI5ODBGMUMwMTNFOUMyQzE2MUY5MjdD
-N0I4MDNCMzRFQjdDNTdGQjIzNDlGQjIKNzg4NTE1ODg1QjdCMkU1QkNDNzAwMUExMDhGQkQ0
-NzNGMzQ4MTBDMjc3NEU1NDkzNTAxRkEyODgyQkE1OTg1RUE5QUU4NEFEMDc2ODA3CkFFRkVG
-QzgwODFBQzhCOTlGODgzNzE5N0VFQkQyRDczNEVGNzgwODZGMDIwMDkxRjQ0MDQ1ODIzQ0Y3
-MDQ2MkE4NTZDNTkyMTU4M0RCNgpCMjA5NDczNDk0RTc4RDFEODFGMjg1Qjg1MDA1MkIxNzg0
-MzczREI2MkZBNkNFOEVERkI3MEVBQ0U0QzJBMDFDQ0E5QkI4NkVDNjFFNTQKNUU0Mzk5NDY2
-MjMzRjc3MTQzOTJGNTNFQUY4MjM3ODhFN0Y0NzVFMDY2RTcxOEEzQTU0QTgxODA1MDU4QjMx
-MjQ0NzM5QjlFM0Q1QkFFCkQ4OTY5MDFEOUYwMTRGRjYyNzI4ODQ3QUI3MTlBRDJDQTMzMkQ5
-OEY5OTUzMkQ3QTkzQzcwMzAyNzFGNUJBNTIzMDA5NUJFRTgxMDZBNwpEMzNEMTZEMkQzQkQ3
-NjA2NEFEMjY0MzE5MjJCN0NGNDMzQkNGM0FGMDJDNTNDNTlEMzk4NzI0NzgyMjdFNjQ1ODI4
-RjJGRjFDNEIzQjUKOUJFRDlGODA2MUM3NEY3OTM0OEFENjM5QzRGM0E2N0UyN0ZGOTk5NTlC
-OTA5RTNBRERERjk4NUI3MTkzNTlGODAzOTM4Nzk4RTM2REU1CjY1NTQ0OEU2NTQ3MkNDRTJE
-NkE3NTM3QTVGODU1QTUwNDZDNUQ3QzY0RDc3RjYzNkUzMTg1OTJCMzA0MDk4MTExMEU2NjRG
-QUJCNUZFRQpCOUIxNEM0OEQ3NEU3QTQ1ODIyNzREM0JFMDdFOEQ2N0MyRjI5NEQyNTkxNzk2
-QTI4ODBDMzI1MzA2MEJBMjZBRkYwMEM1MDNENjE0REYKNzJCRjhCOTFFODBFNzIyQzVGNEY3
-NDk2QTE3QUQ2QjUzNTdERTAxQzVBQzgxMzZBM0Y0QjdGNzIyRDA4RUFGQjM0MTlDQjc2NjM4
-QTI5CkJERjI0MkJDNkVENEZCNzEyN0Q3NkY1MUI4RTc3ODUwQzc3QTNEOUZGRDk0RTgxNERE
-MDcyQzZBQUU5MDFGMUNCOTk5NjFFNzkzMjRENApBRDBEOTdDRTAwRjdBNENEQ0NCRkQ3RDVB
-OUE4MjI3MEIyRkM3RTg4NzU3NzQ3RkVBRkU5MTdBQ0M5QzA3NTA3RjJDODc1MzA0NjVCMkYK
-N0JFM0I2MjA0N0YxMUVFQjBGRTc1MTNDOUE3RUNCQUVGREI2NzhGMjk1Q0JGN0I1NUNERDA3
-RkRDMTFBOTc2NEEzMUMxQTc3ODg3RDNDCkY5QzEzREY3RDk4N0U3MjVDNEJEMUU3RjgwQTg0
-MzhGNTRGQzM2NjhFMkNDQUU0MkE1OEEwODM1NDgyNUJCODdCRDE0MjRBMTkxOTk3MwozQjQ5
-QjZBM0E1NDY3QjNBOTlGNzBCNjNFRDM4NTQ5MTY4REQ1RkVGMEE2NjIwQkQ1QjgwNTA5Njgz
-NzdDN0VDQzRERjZBNDNDODUyQzUKNzIzMzlDMEU1NEY5OTU0NzI0MEFBRjk0ODdCNzQ4Q0E4
-N0FCMjI3OEIxNjIyOTE5OTE1NTZERkRDQjU5NUMyOERCMDVENkQ1NTEwODI0Cjk2MTNEQ0FE
-NzE0NEExRUM2REEyNTlFMTZGREFDRTcxMjJDRTFBMTcxRkEwMzQ2QTkxNTVCMjVEQ0E4RTZC
-QTczMDA0NTE4OTFEQzIxQwo3REI5MkUzQUQyMTgzQkI0RERBNzBDNjY5RjFGNTVGQ0MxOTFC
-NTk4MjNCMDE3RTU1RDE1RTlDMEVCNzk5QkJBREJCODkzNUFEOTBDQkQKRkJBMTU2Q0I1MDNB
-MjMzM0E0RUJBOTJDQTJEQ0U5MkM1QjY4N0E0RTQzRjczQkI3RjA5QjYyRkE2QkU3RTE0OTUz
-MThDRTRFN0JBMzQzCkQwOEE3Q0I1M0UzMkIwNUY2M0Q4MzZEOEI1NjI5NjUxQUE0QzJEQzY4
-QUYyRTEzRjQ5Mjc2NDUwRjY2QjU2QzFFRjI5OTYwNENGMDkzMwo0QzdCMTU0QzkyM0Q0MTA3
-RDA1NUFDN0VGMEYyODQ3OEZEMDZDNTRGNjYzQjE3MERENThBNDFGMjkzOTA0RUM3QUFGNkM4
-RTRERkRDQzMKN0IwODcwMkJCRDhGRkIzM0IwMDcwNDRBQ0VFN0FDRTM0NjRENTQzM0E1M0FG
-QjZCN0VFNzU0Q0VEODMwQTFDNTQwRUI1Nzc4QzIyN0M0CjVDQzdCRkI5NDg1MDU0NERFNkMw
-RDE5NjA4NzQ1NzQyODRCMUQwMjU2QkZCN0U1NDgzRkRFREFGMzFBQ0Y3ODIyQTJCOUREMjdF
-QTFBMgpCQTg5MUQ3MkM5QUUyOEYwNzQyMTFENTI4NzU4QzZFMTY4RkJCQjEyNzQxOTkyODlB
-Q0EwMzdEMUE2NDFBREVEN0YzMDBBNEIyN0M5NTQKNjNCRUY4QTlCRDQ5RDQ5NjMwMDY1NUMx
-QUNCNzBBMkEzRkY4OUUwNjVCRTc5RjVGMjkyRUM2RjZCRDZGODk4N0I3QThFMkY2NjQyRTkx
-CjE4QUJBQjcxREM3MDU5ODFDMzBDNTFDN0ZFNkExMDgyOEE4RUZFRkM0M0VGQ0JCNkJDQzVB
-ODQ5MkUwMTY5RjAzNDkyOTY4RDdGMEVBMQpDNDMzOTUxOUVFMzZBMUU5MTAzNDY3MEE4NUIx
-OTNGNURCNjAzN0M1OUI1RTQ2MTgzRkZFNDY4QkRDQjc5NDkxOEJCQzhBRUIyQkE3MTUKMDkw
-OERBMEI2MzY1M0MwQkRDQ0Y4MEJCNjRGMzZEMEU1RThENDY4NUI4MENGQzdFM0U2RjREQTRG
-REQ0QkI4Q0E4REU0QUJGMTY1MDNCCkQ5RjZDM0MzQjZGOEY5Q0IyOTJDOURBRUZDQzY4RUZB
-QjE2Mzg4QUZGOTIyQjMyQjUyNTdCMDMzQzlEOEZDMDc4QUQyOTZENDlDQjhBMwozQTMyQUYw
-MUZDMTkyQkE3OTJDM0ExNUU2QzVCN0E0QUZCMUMyRkIwMERGMTgwNzYyMjk1NTBBREQ0QTk5
-MTAzN0M1RDkxQjdDRkQ0QTMKNUQwOEU4RkE4NUQxNkNDMkM0OEYzRjMyQkE4OTRDQ0JBMkM2
-QTNGOTY0QkRDQjhCQzRGQjkyMjZDN0Y4ODk5OTAwQzI2N0M3MEUzRUQzCkMwNzk3RkQ3Mzc3
-RDMwNDRENDNDMEU4MTcyQkIwRkI3NDZBNzA2Mjk2RDcwQ0QyM0E1Q0UyNTg4NTE1OEM4M0ZB
-MkM5RjEwQUMxRTBCRAo4Qzg4REQ2RDU4MTI4OUNFMTRBQTg4QjEwMkE0N0Q0RTUyNTQ2RUM2
-RkZFN0U4NDUwQUZFM0YwMTcwNkIyRTNBRkREQ0NFNERBQUI0MzEKNTYzOEUyOEZBNDY2ODQ1
-OENBQjI0NjY3NjhDMUYzRjg4ODFDRUE5RTlBN0VENTdBRTdBRkI1M0RDNTkwRTYwMUFEMTFF
-Q0EwRTVDQjJFCjRCRUE4OTVGNjI3MUI4NzVEMDlFREI5RDVCOEQ5MjY0N0I2Nzk1NDgyNEYw
-QUQ0REYxQ0M5RTgyRjk3REI2MzhCQjE3MzIyRUEyNkM2RQpDNEE1RTAyNDMzRDExQjZBMzdE
-MkFDMTBEQTZEMTAzNUIyM0YxQzZDODBCN0MzODJGMUVGQUM0NjIyQzA0MEQxMDhFRUU5MUMz
-OTdDQUMKRTFFREM3NjFDMUVCREFGRkNENjEyN0I0ODYyMUU2NjZBNUE1QzMzQTNCRDRGNTU5
-QzdDMkNBN0ZGM0M0QkREQjI4OEEzMDQzRTA5NDQxCkQzNUNCNTRGMTIxOEZGQzQwOTdEMUZB
-NjA5MTExODk0OTZBMTZCNDBEMzRFREE2NEE5MjI1RUYwMEI4NzU4ODUxMjdEMkE0NDFERUNF
-QwpCMkJGNkYxNEY2QTM4MTVBNzgwQTRERkNCNjIyN0M3MzU1QjM3N0VBNjFGOTI4RTk0NDg2
-Q0RDMEQ0MkVFOTI0OTRENTA2M0FCRTJEQ0QKNEQyOUU4OTY3ODM1QkU1ODk0RDM4RjA5Mzk5
-RTcwNDE4RDIxREJEOEFDNjc5MzY3RUE5REVGQTcwQkFGNjI1Rjk0RjU2Q0NEMURBNkRFCkFD
-RjU4M0U5NzYzQkNEMEVCQ0Q5RUU1ODEwQ0Q5MzMwRkVBRjVGRTYwQkUzQUY4QTE1QTFENThD
-QTJBOUIwNzg1QkMwOUFCQzUzRjg2QQo2NkNDQkQ4ODE1RjNGOEI5QjE4Mzk2QjA0NURFM0I0
-QTAwRDU5RDQ3RjUyQjUyREU3QTUyQUIyNkY1RERBMDVFM0I5NzUxRUUxMUE2RjcKOTI2NjU0
-RkM3RjkwOUVCQjc0MjMyOTUzODUwNDRCOEM0NEEyMDMyMDMxRDQ2MjA0OUZGRDc3Q0E4RjMx
-Nzg3MjY4RjY0RkRGMDAzOTdBCkE4OTQ5NDMwOEFEOUVGMTVEQ0VGNTVCQTBDNUFDNEU0NDM1
-QTUyRDIyMjVCRkVCNDM4QzkyMzBDQzY5MTJEQjE4RkNEMEE2RDdENEM4OQpCQjZCNjk5NzRC
-MENEQzI4RDA5NzRDOTRDMDVBNjExRUVDRTg2NjE0MEEwMEY0QkY5ODI4QzUzNjNEOUE2RkE4
-RkM5NzQzNjgzNzAzNzgKMkVFQzE4OUI0QUI5NjBBOEJBNzVFRjQzMkQ3RjdCODA1MUIyRDAx
-MkZGNzZGMUE1NUJBQkExNkRCOUVFNUM5QkRENTdEQTlBODdBQ0QxCkQxODcyRUI1Njc3QTE0
-Q0MyMEY4MzczOUQ5NUFBRDBCM0YyNjUwNjk3NkIxQzgyMkFBOENCNEE5Njk2MDIyMENCMjQ1
-M0RGQkI2RUU2Nwo2N0ZDNkMxNTRFQTkyN0ZBMDFFNjk3RDJGREU3M0Y5ODQwMDQzNDgwQTU4
-NDMzN0U3RjQ2NkY1MjQ4NTcwODQxQTczNDRBMzcyMzJDQkIKRjA4OEVDQkJCQTlBREE4OUE4
-QjhEMDBFQTdBRDhGQTAyQTRGNzlBRjIxRkI4RkM0ODc1MjhFM0Y3QjMxRjExQzNGMjY0NkZE
-NzgxNTVCCkZCMTAyNDU5Nzg1NTREOEM5NUJBNTk5MjUyODE1QTQ5OTVBNTA3MDI2MzQ4NzU4
-NjI2Q0EzODZGMzE3NDhGNzBDMkRGMTQ4MkI2Qzk4Nwo1Q0I3NTQ2QjNCMUI3NTZGMzE2OUVB
-MzU4OUExRDBBNTQzRkIxNjU3OTUyMzQ0NjQyNDNBNkRFMTJBRkE3NkQ1NzdFQTU1QTRCNzY0
-RDAKMjFCQkI0RjIwM0VENjZBNEZFQzNCNTEzMzNBNTc3NzZBMjEyN0RGQzU5RUUyODIyOTIw
-MEM5QjkzQTFGRDFFODRCOUQ1QkE4QTIyRkMwCjI0Qzg0NEZGODM1MTI1NkVCREEyOENENzhD
-OURDNzgyRTVCQjg1RDE4OEI0RkFFNkE0MjdDMjUxQkUyQzc5NEQ4Qzc3Q0EzOTI5NjAzOQo5
-RUJDOEJFODREQjlDNzgzMTlCRDM4QTQ0MTE1OEE5OTlBNzRCMDRDNEM1MjQ2RDY5ODJFRjdE
-Q0Y4RDhBREIzMDRBODUxMTI2N0ZGQUMKQzFBQkU0NkM5RUUxQ0JDQUQ2MzY2NUFDNjA2Q0FD
-N0Q1NkU5QkMzNjA5QjNFRjcyMTc2QjQ5QjYzQzkwQTAxMzBDRDE4M0I5MEE2QTQwCjc5NkU0
-Q0I5MDkxQkJBMEZGQzhEMEY4Q0YyQjAxNjgwMEIxQjQzOUI1REI2RkVBMEMzOTlGOEMxQTIy
-QjE4OTZFMDQ4N0EwODQ3NkY2NQpGNTA1NzE3QUUyQkNBMzEyRUM4OTFCQUY5NUI0M0Y0OUM1
-RjcxQzNCRjRBOEIzRTBFMzdEOTNBNzBEMDZDMkZCQkJERDc3RTdBMDYzN0UKQkJEQTI3QzI3
-QzUzOUVBM0FENzkzNkU0NTQ0NTgzRENDRkJGQUY3MzdBNjE1NTdCMEZFRDUyNDcxQjVBNTcz
-M0ExNTU4QzlCNTNGRDU3CkQzNjEzMDY5NDVBNjE1MEQxQzBGQzVFREY1MjFGMTdGNEQ3MjQz
-NDhENUVGQjg2RThGQTgwOEQyQ0YwMTk3N0I0MzFEM0U5RjRFOEEzQwpDQjFDQ0I0QjE3NTBD
-QTI5MzZBMzYyQTYxMEIwNUM3M0UzODJENzYxMTgwMjRFNThFRDUxMkIyMTJCMURBQkVFQ0RB
-NzE5NkM3NUJERUYKMzA0OTQ1NTI3ODk1NkY2MEZBMDBENDUwNzI5Q0NEMEYwMUI0QTYzQUQz
-MEQ5MkIwQzE0QzE1OEIxODM2NDdCNjU1QUVERUE2MTJDRkEwCkJFODlGNzlDMjJGMUYyRDZB
-QUIyMENDMzgyMzU1QjExNTlEMTZCN0MyOUVEQkYwNkU2ODMxQjM5NUVBN0E0MTAyQzk5RTQw
-MEY5MTFBMwpGMzA2NTg5QzVERTZDM0ZDQ0Q0MDJCNEUyNUU4NUM2NUIzMDFDMzk2QURBMDlE
-NkE0NTc3RjM4RDIxRUVBNkZCQThENTBCNUZDMzFDOTUKNzQwQTlBNzQ0NkI5RkNCNUQzN0FE
-QzMwMTAwMEFBQkM3RDhFQThERDU5QTYzREEwRkE4RjcwMzhCQjFEOUIyOTQ4NjM1NDI0Qzgw
-QkQxCkNBRkNCMTFGQkI4NTQ5N0JDNEMzQkNBRTJBMjRCOTM3M0NCRDAwNTY4MTgzNUQ2RkE3
-Nzk4QTQ1RkIwMUM1MURCODQyQjZENDczNzkwMQo4MzQ5QUU3RDhDNUE0ODA1MDI4QjFEQjRG
-NjM0ODY5QTNCQ0EwNjAyOUU4QkVBMDI4MzIzOTc2MjdEREZFOEJBQTQ0QjA1RDVFQjU1QjkK
-MjY1NUEzODdFMzQwNzMwOEUzNEFEMjAzOEM3ODAzNzk5NTMzOUUwNDdEOTMxMEI4RUVBODVG
-RTI3NTYzNkQ2QzVDMTk1ODY3MDFGQTIxCkVCQjc0MzRBNDkxNUNBNzFCQjBFODMzQzE2NzEy
-QkM2M0RFOThCNTIwOUIwQTczMDE4MEM1RDYwMTJGQTgxRUFFMDAxRTFDMUUxNEQ4MAozNENF
-NjQyQTMxRUZBMTJCM0ExNUVBNTNCRDg5QzQ5MkNENjY3MDUzOEI3QkZEQ0M2MjlBQ0JGQ0FF
-RTRGQzRDRUEwNzBDQ0ZDQjc1NjAKQjRGOTMzRTNEOUQyNTlGNzBDQzM2OTc5MDE5MjlBMUYx
-NjA1RUU4QTBFMDFFRTg1RDRGRkZCMTY3REU2RDkxNkYyNjMwREVCOENGMzE3CkY0OTRDNENB
-QzNFRTczQkUzOTJFRjk2RkJEMjMyRTRBNzc2MDIyRUUwNDE0NjU1MkYwRTFENjZCNEJDMTQz
-MDI5ODZGQ0VGNzZGMUI3RQoxOTY3NTNBMkI0QkNBODdGODA0ODk2QjczOTJGRjhFNTE4MzQ0
-ODg5OTYxN0YwMjAzODZFNjg4RTdFMjYyODZDRTVEMDYwQjAwQjQ4NUQKRUQyNjREMTkxQTVC
-NTI4QTRFNTE2ODMyNjQwMzU0QzMxRDYxRUM0RjdGQTcwMTI1QjVDNjM0OUZERTMwNjk0RTk1
-MDRDMEEwODBEMjUyCkI5MjIzMDU4NzRGMzkzNTRBMEZDMUExOTYwMjFFMjlDNTE2RDYyQTc4
-M0FDMjU5NEMyOEY2OUY2ODAzMzE0RjY3NDVBRTY2ODVFMzgxQgpGQUY4M0YxNEI4NDY0RDdE
-QTQxOThCRTQ4RTc2MDExQkU2QjMxNzFFQUQzNzBDQTY5OUU3MDc2MDcxQjJGRjE4NTZGNkJE
-QzYxRjNGMDEKMDM0QURERERGNTZDQzQ5MTRBRDc0MjgyODU5QzYzMkI5QjE0MjkzQ0RCQkQ5
-RkY4RkQ0NDAzQ0ZEQjc2MUQzQ0JFRkY4NDM5MUUzRDVBCjA2QjVEOTMyREVGMDg2MUVCRTZE
-RDg4NUM5QzMxREE3NjVGQ0YzNTg4NDczMzNDOTY2RkQzOUU1MDAwRTk4MzVBMzVGM0JBOTNG
-QTIwQwo0QzQ1OUE4RjREQUVERTJDOTlFRkJBMTNFQzBCODJBQjU0NkNGREY3QTk3ODc5NjQy
-RDk3RjY5QzIxNzM3QjIyMjgzQjYzNjQ5NEM5RUEKMTI5QTE2MUJEOEM5REQ1NjVCRkIyQTM1
-NTAzQjVCRjhBOTVBQTY5NjI3RTJBMUJCQkJGNUJCRUFBNzRBNThDQ0IxMUY3Q0ZBNDIwQjVE
-CjcwQjNFMzkyRDU0QTUyRkU1OUVDOUEzMDE3QkQyRDgzQjRFOTBFMjREOUZDQzZEODE2RTk3
-NTU0NEI5NkJCMUY0NDQzQ0RCODE5MThBNwo3RkREQUIyNUQ5QkY3MkQyMERFMTc2ODkxMjFF
-QzU3NTdCQjE4MzI0QUMwRDVGMzI0REJEODlCNzJGMjI3MUZBMzYyQkM4Q0NBQ0ZFQ0QKQ0My
-NTMzMUJFOEFCOEZFRDQ2QTZFNjkxRjNBQTZCMDcwMUY1ODJDQTg3NTNGNjQ4ODI4Q0QzRkFC
-NkU0M0NDOTJBOTI0RjI0NUZDNjA4CjM1MEY4MkNBRkY3N0VDOUUyRTI0Rjk4NTQzNkVDQTRB
-RDg0RUIyNDQzNUE1QzRCMzMwMTk4QjIzRTgyNUQxRUNDN0RDNTU4Mjg4NkU5MApEMkVBN0NC
-QUM5MDM3QjExQjE1NkFEQjgxMTBCNkZCNzk1QkZDNkQzOTdCMzlGRjc5RDhGQkJENDJBMDBD
-NjAyMEM2M0IwMTFDREUyREYKMjY5RjQ3NTRFODlDRjNGMThGMkI5REVCRTM4NTBBODZBQUMw
-RjUwMDZCNTI4Q0UzMEJGRjA1NTExMEQ4QUZBNjg4QkEzQjlGMEQyNEFFCjUwMTQzRjA5RDZF
-RTY5MjZCRkEyRTQ2MEI1QjNDNDg2RjM4MTBDNUNGNjhGNjdGRTJBOUREN0ZFOUIzOUJEQkIy
-NEQ2RTU5RDEyMTA4Qwo1MDE2MDA3QkI5RkMyMjc5MTYyMkMwNDQxMzJCRTZCQjhGN0Y5QzI3
-OEM3NTVERUYwMDRFMzEwRUFDRDhGMzk5MzNBNkRGNTZCRUJDNUYKQjcyQjREQzMzRUIyNTVC
-NjQ1Q0VERkVEQjkwMEI2RThCMUZBQTRFRDE1MjIyMkEzRTZGRUE4RDhCRkM3QzQ3N0VGOEQ3
-NTU3QjcwRTQ4CjY5M0Y4QzBEQ0QxMThFRjU0NEU3ODJDMjNERDNBQTNENjZDOTA4NTFBQzA1
-QjU4MTg4MzFFM0FBRjFDNERFOTUyOTI3NURGQUNBRjQ4QQoyQTg3QkVCQ0Y0RUU5NDg0MTUz
-NDEyMjc0NjFEODYyN0QyMTg3Q0M5MTg0REQzMzQzRjU1NERFQkIyNjhCNjVBRDgzMTQ5OTZC
-Q0FENTUKRjc1QjU5ODNGNjJFRkRGMTBDNTgwQUU0NzhCNkMzQzkyNTk1NDkwQTlFM0FGOEQy
-NzkyNDZBRkZGQ0EzRjNGN0U3OUZFRENCNjUyQ0ZDCjU3Q0MzMUI4OUUxOEFBNkM1RjgzOURE
-QzNFQ0NFQTAyNjQ3OTRDQTMxNkVFRTI0QTkzQTI1RTJERDEyRjAxMTVCNkNCNjUwMjI3RkIy
-NgozMEFGNENGNTVGN0FFNDcwMTMxMEUxMTYzNkEzOUM5RkQxRDM0MzY1MjRDNTdBQUY0MDlE
-MjQyNzZEQ0MwQTVDQkU0N0VBRTYyNEQ4MTQKQTNBMDk0QzVDOTYwQzM1NjY3NzhFODUwQkEw
-NENDQjU4RTUwMTZDQkUzOTlBMjAxQjc4OEE0NDhGOTk2OUNCMUM4OUVCRDk1OEFEODNFCjRF
-OUUyMDAxRDVBNzEyMEU3M0RGMEQ3MjJBQTNEQzFDRDA2RjExQjJGOEU5MTFCNzk0RTUwQjUw
-RkFBMjlCNDlBRTAxQjVDMzYxRjA4RQoyN0JGRjhEQkMxNkY0RTRFQzAzNEIzQUIxNUYwNkMw
-OEM5RUY0QjVCMDU0MzI3QkIzQTVEMjVFNDFGM0VERDUzRTJGRjRFRjM4NDEzRUMKRjVFNjkz
-MjI1QzI1NUE5RTFGNDA2MEIxRkZGOEUzODM1N0QwNjU0OUM1MTdGNDU4QjYyQThFMTIzOTg1
-OTg4NzI2REI4REUzQzlEQjM3Cjg0ODBERjBENzMxQjEwMDk1MTY0Mzc1MTJGMkM3Rjg5ODYy
-ODMzMEIwQjJCMjk2MENGODE1QUFEOTE3MUU4MDk3QzkzM0VBRkNBMDI2QgoxRURBMkZENUUx
-RTVGRUExQ0Q3NjA0MTI0MjM0Q0QwNEY1MEFCNTlEQkZGMTMxODQyM0U0RkE2RkNDNkI3RTkx
-RTRGQkRBMTQ5NDA0RUQKRThFMTM5OTNGNjVGMTJFRDgwQjYzRkIxMzc3MTc5OTBGNDUwMkE2
-MUMwMERBQkQ5MzQ1RTk0RjA0MzEzM0FCRUUyMkQyQjdGRjBERjIxCkM0MTk1QzNFMkY3QUJE
-NjM5OTQxRTQ3ODgyNDcwQTZDQUFEMEI0QThDOTZCNEU0RTFEQjkxOEI4QTkyNkFCNDBFMTg1
-OUQ3MTlGRDM4MQpGREEzRjE0OTAwNzZFQUY1RDE3MzExQ0JCNTlBMjZEMTk4Q0YwMzZCNUQ2
-QTU1MTY2NEUyQzIwNkM5MTBGOEE3MzY5MTgzQkI5NTMyOUMKMDk3QTdEQ0I5OTI1MDdGNDc5
-Q0Y1NDZENjQ1RDUyRjJCQkI0NTJFQkNBQjQwRkQ0MTA5NDY0RDE2MEI5N0FDQUYyMjZERjc2
-M0ZCMDI0CjlBQzk3QjcxRjczNUNCRkE1NkQyRTZBQ0Q3NzEwQ0U5QkMyMTg5RkU1M0Y1QkI0
-MUM1OEMwRkYxQTFDNTQ0MkZEQzc2RDIxRTYyNzNGNAoxODk2RDczOTRDRUE2Qzc1MDA5NTBB
-Qjg1RkFDNUM4RDRDRjE3NjY2ODBBMENGQTI0M0EwMEI3REUyRDE4MERDRDE0MTdDRjI1RDdB
-MzAKNUExQjE3NTM0RkQxRDg1OTVGRTcwNEEzNkI0MDJGODY4RTUzNEZFN0NBQ0FEMDM5RTEz
-Q0ZGNENFNTlEMzgyQzEwN0ZCOUREOTg2MjNBCjBGQzA0RjkzMzcwMTAwMzFBQTQ3Qjc5MzhG
-MTExMzM1RUI2OEFGQ0M4NkU0NzdENUU3NkExRTQ3NThDNzMxOTkzODk0NDg1MEU3MTMzMwow
-RjIwRTlBOURGOTY5MTczMDE4Q0ZGNTk0ODcxNjc2NDIwMTM2QkIxQTNFMENDODlDMjMyN0Y2
-OEIwQTQ4N0Q5NTQ2M0QxODNFQ0NGMDcKNEJBNjg3MEVBOTMzMkZGOEIyNjRBQTc3OTY1MEEw
-MEEwNENENUQ0NDNDQTA5NDUzREM5NjFEMzE5M0JEMjIyRDFGODBCQTBCOUM0MTYyCkQyMENC
-ODAxQjFENkU4REQzRDk3Q0YwNUI4NDFCQUIzREYyMkREQkIwNkRENkE2ODJDNkExRTNDRTU5
-NUEyOENBQUQ5ODQwNzU3RUM2Rgo4QkU2NkQ2QjlDQTNGNkVERDVCRUI2MzI0ODczQzBFQzdC
-OEIxMDg3MzFGM0U2QkM2NTg4RDY5RTRDNzU3M0Q0N0JCREQ5M0QwM0UwNTAKMDc2QjlBMEVF
-QkQ3QzAyMEJEQzY0MTI3QUI1ODQyNDI5MUIxQkM3MEE5RjNEMzI2QzY3RDkzQUQyNEY2N0NF
-OUFFNkJEQzgyOUQ3REQxCjYxRUYzQzFBNDc5OTFGNTRBODA3QzA4QUUwQUYyNEQ2Qjk1MkU2
-NkNCOEU5MTk2RUEwMEYzQUZEQ0IxNDEzQTMzNzYzRTI0MTA5NzU5QgpDREI1OUMyMjU3QzI4
-NjRDNDU4NzE5QkUxN0Q5Mjk5MTFDN0ZENzIxNDg4MTU3OTFBMTJFQzJEMkEzREQ2NDA3MzMw
-Q0UwQjRERkMzQTIKNDQwRkYwRDY5NzRCOTJCODFGQkYwNEIwRkM0RTQ0MjlCMDA5QzM4OEZB
-OEZERUEwMjlBQUQ3MDE1MUY1QkY3NkIxMzkzM0QzRjU1QjVBCkMwMERGRENFQTkxQURDNzNE
-M0RDRUYyOUVDMjYxRTA3Qjk2NDIxRTY0ODY1RkRFMUY4RUZCN0I1QUIxMjczRDVDMkJENTI2
-MUFDRUFERAo3ODUxNTA0RDE5QTkxRjI5NUQ2NjRCNDQwQUE2MTYzNkI2MkQwMkEzNDFDRUYx
-NDU5MjBDMzk2QzQyMjQ0Q0YxM0VCQjIxRDRCQzg1RDkKOTVBNTc1NjNDQkEwRDREMDQ2QUMw
-QjBEMUI0MEQxQkNEQjI2RTVBQjg2QTE3MjAwMDU1MDRCRTNENzNFRTIyMDE4RjM2NDJCMUQ4
-Q0Y2CjQ1OTZBMTVBQkE4ODg5MTZFOUYxMkJDQjE1RUI4MjMzMzdERTkwMDE1RkZGNUQxQjg3
-REU4NDQ5NUY2OTZCQTdFMTcwNEI0MjgxMzNEQgo1NDkxNkE0QkI3RTMxQkYzNkNDNzRBQzFC
-MUMxQUFDQzE3NkU0NEI0NUNFNjg2NEVCRjcyNEQyODgxOUNBODBGQ0QxQkNBQzlDNkU5MkMK
-RTYyRDMwNEUyRDE4QTNDODgyMDc0REVBRkVERjFDNTUxMDRGNjI5NDgxRTZFNDJFRTQ1MDcy
-QkJBQjMwNzRFQjVBQTFENDk1OEJGRkI2CkU1NDFGQzE4NDlFNkY1NDAyMTY1RjVDNEY3NTBG
-NzJDRkQ5MEJBMDNDQ0VEN0M1MDE0NzQ1QjBGOTY0MkUyNzFGQkY2NjQ1QUY0MzBEMApFOTI5
-ODRCQjRGOTZDOTkzRTMxODZDMEQ4QzI4OTdCNjkyQzBBMEQxOThGRjlFNDRDNjQ4RkMyNzIz
-RjhEOEE1NDdGN0VEMDhFODlFMDIKQzAwRDI2QTUwQkM4QTFDNzE0QkRFNTM0NTgwMTc2QzdG
-NUQzMTUzNTE0RkNBMjNDMkQ5Q0YzQjZFRkY3Q0Y2ODM3MTJCQjdBQjNDN0QyCkEzRTY2NDI3
-RUQwQjYyNUMwODhBMkE1N0VFQUEyQzQ2N0ZBRjBBQzU3Mjg0OTU0NTFBQ0EwOEFFNTUwNkY1
-NDEwNDExRDJCMDkxMkQzQQpGNkEzOTFGQzdBNEQ3MTA4QzFCMkZGMEQxRjlEMDlDMjM5NkNB
-ODVFQ0I0ODg1QjM4NkY1RkY1MDYxQUI3OEQ5RDkxNUIyRDNBQTA1Q0MKMTkyQ0UyNzUxQjhF
-MUM5OUIwNDNCMjQ5NTBGMjVENThCRTkzNzdEQzFCOTE5OEM1REZCNUZENkEwQjkxRUI5MEE1
-RjAxMjU3QUJCMTVECkRFOEIzNzVCMERENTVDQjE4QjhBNDI1OTQ3MjQ4NDRGQkI4OUZDQTIy
-MTU1MzZCRDlDQUQ4NjYxQ0E2QzkyRTMyQUQ0MzJGNTgxMzgzQQo5MENERTA1RjM0RkFBNTg1
-RkRFN0RBNDI4ODlFQjM0NzUyQUIyNkQyMUQxMzkxOEJCQURDMjNEOUMzNUI4OEM2RkRFMzFF
-QUMyQTQyOTUKRjQxNTlDRTFDQzk0MkI5ODMwMTI5QTFCOTQ3NEYxNTRBMTc1RjNBNzFEODZG
-MUJEQjRCQkYxNTA2Njk0ODk4NEI0RkU5MDJDM0Y4RjNDCjBBNDZFNkE1MUQ4NjA1NEQ2ODND
-MEExMUVEMEYxNTFGNzkwNURFNzNDNTg5MzM5MTUzRThCNDcwOEY2RDk0Q0UwMjU4MUM4MzdD
-NDFGMgpENjU1NTZGNUE3MDZDMDZGRkFENDM2NjlDQ0REQjJGRkZCRTAxRENENDYzODBFREMx
-NkUwODk0NUVCRDc0OUFEMkFFREQ3Q0JDN0MyRTIKRTNFNEY2NjZBQUFFN0E3MThBQjVGQjZB
-NjcyOTdEOEY5RkY3NjhGRDIxNkU0REI0NjQ1MzgzRUM0NTJGMzNDMTA0M0IyM0VEOTc4M0M1
-CkM3NjMzMTAxN0VERUE4MkUyOUNDQThGNDM2REI3MzE1NkE3MTMzM0U4ODUxQ0JDQUYyQTcy
-MUI3QTU3ODAwQ0Q3MkFBREY0MEI2NjIwRgpCOTMyNDM1QUZFM0ZFOTg2NzIwRkU3MTNENDI0
-QTNGMEU5MzYxNjg5NjBFMTcxQjlCNUI4NzIxQjY5OUMzOUI3MEU0MkM4RTA0MzBFNjYKOUJE
-RDI4NzBCN0M0QzY2NDQwQzEwNkRCREJBNzY2NTgzOEY5QzZDRjY3NDZFMTVEQjcyNUY1MDBB
-RDNEM0UyQkEyQzc5OTdGRjBENTEzCkM5MUJCNUM0ODI0RDUxQjg5RTdGRjNDRTI2RUVEMzVF
-OUEyRERBNzQyMDAyNkQ4OTY3NEY3RDMxODRFNkM3NkQ0QjZEMzJGMjhCMTcwQwpBOTI4QjU4
-Q0E5MjVFNjlGMDRBMjJFODVFMUVCQjg2MkM1QUIwOTk2RjA1QzYyRTZEQThEQjBCNjE5NUI3
-MkQ0NzNFQTIzQ0I4Rjk5MDAKM0M3RjM1RDUxRDQ4MEQwNTQ3QkFCRjk5M0I5MjM1NDkzRDQ0
-NzIzMkIzNjJEMzgyRkY5MkJBMTM1NTlGNjlBN0U5NUMxNzk3NkE1QTFBCjk3OUVBNjg3MjI3
-QkQ5NjlEMDZFNzMwMThGQjA5NzMxOUZBNjJEN0NFQzhCMDQ0MTlEREI0NDM1OTcyMzgyQzA0
-RkY5QzU3MDVERkJBNgo1NDg1NjFEMzFDRTAwNDU3NTU5NTM0RTUzMTM3NzE5MzE2OUE4NDQx
-NTJDRDA0MjIyM0I0N0I3MTY2QTZDRUVEMkI3NDZBQzIxMjUxRUIKOTAwRjkzRkM2RjYyNUQ4
-RkRFNkUxRDUzNzQ5NTBGNERERDgxNzU0OEVCRERFRjIwMTIzRkNFRDRDM0RGN0E3RjdDRTY1
-RTlCNUZDM0Q0CkYwNzlCMjgxRDdDMDNEQ0JFOUI4RDg3OTM1RDQyQ0FFM0VDRTU0RUVCRTQx
-QzAwQ0ZDOThFNjQ3ODA5MzVBRDY3NTk2MkJFOUREOTkwNQo5QkMxREI1OTdERTc3OEMxNjhG
-NDQ5MkMyNjE2NzA4NTAzMkU1MTE0ODRBQ0U2RkRDOENGODg1REUyMDBGRjBBOTkwMjI2RDA2
-NDBCRjMKRDc4RjUzNTc2ODc1MjAwRTg1NjA4OUIxMUE1N0E2NTdEMzdFMEJDNUI2MDQ2Njcw
-Mzc3MTE0Mzk2QjhDNzQwQjVDMTY2RTE1QURENUYwCjlCREQwQ0MzQkQxMUMzNDJCNjlDMkQ5
-MEU1NTA3RDgzRDNGNkZEM0RDMTQ0QTJEMkM4MEEwMkY0NTUxNDNGMTU5NDlCODEzNzRCRDQz
-NgowRTM1OTFGMEVFMjYwMjMzRjg0QjUwQ0FBQzUwMTNENkFCNjEyODM3MTE5QUMzQUJCNkIy
-REJGMEFEQzA2RUI0RDQyOTVFNDhGMUI2REYKNjBFNkM5ODMzMkEzODBCQjk5N0I3NjlGN0M2
-OTk4MjdBNkVBQ0I5RTE0Qjc5Q0ZCRjgzRTExQUE4Qjk2QTNFRTkwQTJBRUQ0MDM1Mjk2CjA1
-ODM0RjE0ODlDQ0U3NTQ0M0U3NTM4MkQxQjQxM0Q4RTBBQjRGOEFBN0M2OUEzRTQ5OUZDMDA3
-N0RGQzlDOEFFMTU1RjVFQjQwMzU3OQpCNjI5M0U4MEJFMzcyMTk3RjMzQUUxNkIzRjQxRjc1
-RkQwMzUwRTMyNjdEOTYzRDdEMzlBQUU5RjY3NDFFQjFEMjQyQjNGOUNCMzk5N0EKMDU3NzQy
-MUI4MTYxNjRBNTI1OTQ1N0Y1NjcyNEU3RkQ1NjJBRTY3MTM2RDVCRjc1QUFFOTI5MzRGNzMy
-NDBDOThGMjg5QzU2NkI4NTgyCkVGRkYzNDc3MUU5QTFDMDRGQTAxQUE5NkMyNThBM0M3MDU1
-MDg3NzIxOTgxRjQzNDNDQjg3RjA3RkQ0OUI5NTc2QzRGOTQyOUJDRUNBMAoyMDAyNzk4NzYw
-OUY2QTQ5RDczOTg0ODE5Qzk0MEFBMTcwMUE2QzcwMDg2QkRFNzIwRTFGQ0IwQzZGRkYxNEUx
-NTk3OEU0NjJBM0Q1QUIKNEQwRjIyMkE5OTBFRkI2RDA5RUM2N0I0NjdFRkM4ODI3NURGMjU5
-OEY1OTUxODZERTkxRjM5OEFEOENBM0QyMzJFRTZGQkJGMkI5NTk1CjA3MzVFMEY2MjVCNzA5
-Q0Q0RUQxMjZDMDYzODk0QkZBNUZBQzRGNEI3QTgwOTFGQjlEOTREMjk0RTNDMjg0NzgxNDgy
-MTg0RDlBQUJEOAoxRjcyM0IxRjlEOEFCMkM3MTU3RjhFNEE2MzZGMjUzQ0NFM0VBRDE4QTBG
-N0Q4QzM4Qjc2Qjg4OTEzQjhFOERGMTIxOTAyQkNBMUVFOEMKNENBMkIwNUVGQjVGRkQ4QzFF
-RTQ3MDI4ODVFQkU5Njc1NUEyRDU4MTM3OEY3MTY0Njg4NkRDMTQwMjE2RDEzQUQ0QzNCM0Yy
-QzBEMkNDCkQ4RENENEQ5RUY2OTk1MTM1RDYyMTRFQzRFM0Q2NTNGRUIxMUMyMkY1RUJGRjQz
-RUU1NTIzMEE4NkI4RTc4RTMxMkI3QUJBQUI3Qjc0OQpGN0M3MzcxODUwNEIyODY4N0FFQUY3
-MzFGQjgzRUE0QzBCOUI1NDc3Q0M1MkE1RDBCRDQyNTJGQUIwOTVGNTU4NTUzRkFFQTU3ODRC
-OTQKMTY4M0UwRERFNDNBM0M3QjE5QTZDOEE0RDM5RkRGQkU1MEY5NjcwOTVCMjAyRjVBMTg0
-MjQ0QzMxQzIxNDlFNzNDQ0U3RTBEMzJGRUUyCjU4NDI1RDBCQ0VERjlCRDJGQzI0OTYwOEM2
-RUNCQUQ0QjdFQUE2NEQ3RDAxRjMzM0FFMzM0RDE3M0U4NTlGMTYzMzk2QTg4QTFFMDlBMwo5
-NkY0N0EzRkQ0NDU3MzFGMThFQTdCRDI2QzYyMUUzNDlFMzE0MTU5Qjk5REM0NDMyQUJDOUZD
-MkU1Q0JEOEUxNjJEOUNCRkM3RjVEOEEKOTBCN0ExOTVBN0I1MTdBOTFCRDhBRjUxN0VCMjZB
-OEVCRkUzMENFNjY3QkMzNzY4NzBFNDA1RjRERUVBM0NGNDMzMUIxQTg5QjE0MkExCkRERjM0
-M0I1MjQxOTUyODYyODA0MEQxNzNFQjA4MjhDN0IwMEJBNjJCRjVERTQ5NTZCMjNGRTYyRjU1
-NURDNkVBREFGRTE4MzE1RjI2OAoxNUQzREUxQUQ1Qjk4MDhGM0EwMTZEQjY2QjE5Njk5OTJC
-RTdDQzY3NkVEQzI2Qjg3QTExQTg5Mjc4QTgyREIwNEJGNDFDQjIxQzgwNUYKMkQyQ0JCOUI0
-RTc4MUY2QjREQzc1NTg4MEVGMDU0Qzc0ODcwQjg0NzMzMkIzNDRERDA1NkYxQTNENzMxOTE2
-MkU3ODJBNjI1RTExMTBBCkM4MERFMTBDQjI2RjdFNjcwQkY5OTdFRUVCQzMxQzBEQzg3NUJB
-NjdCRjdFRTk2QzcwMzQ3REZFMDJGQzY0RjRGNzYzMkIyQ0QxRDgyRAowMjZBMkQ3QzE0NTM2
-RTdDOEFERDE4NDkxQ0YyQzAzQjk0QkRGNEE1NDUxMUI3QzlBNTE1RjNFRkJGMTIwNDkxMTEz
-RTdFQjU4RkVEMDgKMUYxNkJFMzJFRTdEMUJENjRDRDEzNDgzNEYyMDZFNjM2RjlEQTFERjdF
-MzkzNjU5ODIxNDkwRTkyQTgxQ0FEODc1NzM2NzEzRDZFQjI2CjkzRTA5MDZDNDM0NzY5OUY1
-NjMyQTdEM0ZFRTYyQzVCRDA5NTY0QUVCRUNDMEEwOTUwMEYxMjE2QjJCQ0M4RDlBQ0NFODU5
-MTBCQzQwNgo3MTY3MDExN0VDMjc5REQzQUUyMTIzMjlCNTBFNTVERTFERkE0RDM0RUVFQjUz
-M0FGNTQwNzMzMUNFOEZDQjJEMzlGMkRDNTk2NTRGQkIKOTBBODE0NTY4OTE0NTQxNEE5NTk1
-MUMyRTQxQTY0Mzc1QjNCN0M3RUZFODUwRkMxNTJEQjIyMjZGNTExOTA2Q0IwMUM0RDQ4N0RD
-N0Q0CjY2NzY3ODQ4MkRBMkEwQjU3NzI4QkJCRTA0RkQ3NDIwQzQ5Mjg5ODMxREM4QTYyN0M4
-MjIzNkIzNzY0RENEQTM5OUQ1QzhFQjBFMDkxNwowQTFDQThFNDNCNENDMkMwQUJFQzVCNjBB
-MEFFRTVERjczOEI3NkMwOEIzNTQzNzJCQzI4QTFFMzk4MTU5QjlCNjg2MzQ1OEVGNDBCREIK
-ODEwNzMxQTQ1OTk2QTY0RUM4MDg4OUI5NEExMkM2QzVFM0NGQ0U3RkVFMDkzMUFEM0JFQUQz
-MUM2MEUwN0I3M0IxODI4Qzg2OTE2OTc5CjU0NjAyQUE2MjI2QTgzMDkwMkJCQkNDOEQyNTQ5
-NEE3QjI0QTY3Q0UyQjI1OEE4MDUwQjk2NTlEM0ZCRDNFM0IwNDk5QTdGQUQ5MDg1MQowREFB
-NEUwQThGQzM5QkE2QTg3MTkwNUJFQzM1MzUwMzJCRDJGQzY0MUY1MzI3NEVEOEE0N0I4RDhG
-NjkzRTcyMkUyODQ4MEIzM0FGNzkKNzgwRjI0Njk3OUMwQkE5MTEyMDcxRTQ1QzczNUFDMzhF
-MEEyRkFFNjFFRDhDRUM0ODEzMDY1RUJEMUVCMzFGQjVGMERGMzczMjJCM0M0Cjc5RDZEOEFC
-RTdEMzAyMkUxQjEwOTkxRjlEQjAzRDMzOTRCRDcxQUQ3NzYzRDhBMjg3QTJGMTFBM0Y0Q0I4
-N0YwQTREMURGQzExQzkzNgo3NzY5NjYwQkYwNjA5NjUxNTRGQkMwMjU1RDZDRDQxRTc3QUJG
-NTI4OTIyODA5RDE0MUE4MDY3OEIxRjU2NDg1MDkzNzM0MjAxMUMyQ0QKQTcxOTNBNEJERENB
-M0ZCMTc3M0ZFQ0Q0MEIzN0YzNjc1MDdFQkUyQzRGNjk3NzhCRERFNTRERjlFRjcwNTgzREM5
-OEY4MEVFOTg0RUNGCjI5NjQ2NDY3QTQ4MTE1QjVCNDBEQzJDNzI1MTAwQTVCRENGODUyNEVF
-NjFCODQxQTQ1QzE1ODMyMzZFRDdCRDk3RjM3RTBBOTQ4NjkwMgo1NUE3OEE0NTYzRjI1QkJD
-MTk1N0UyNjdCQ0MyOTMyQjU5RUU5RjYyRkQ3RUMwNTMwNDFBRTkwQTE2NUU0REM0MTJGM0I1
-NTI1OTMyQTAKNUQxQjcyOUVFMDQ5RTk1RkQ3RERGQzQxMjg5RUQzMDU0MzBDQjlBMEJBMEUy
-OTgzQzQ5NjZBRDFFNEM2MzRFNjc4OTlDMTVDQUU4NEQ2CkM2QTBDMkQ2QTI3NDJENzQxRUU1
-RkI4OTdFMDA0RkE2QUE0OEFCQTczMzJGQkRGMDk3MUE0MTQ4RkU3M0FGNkQ0MDk0ODg5QTg3
-QUIwNgpGRUZCOTdFMTFFRDc4QzNGQUQ3NjM3NkMzNjIwREVFRjgwQkJGN0IyODYyOTAxNjVG
-NTlCNzhFMjFGOTZGQzJFRjAzNkQ2NUIwMTU4OUMKMTREQzMwMENBMkJFRjVFNUM5NDE0QTRC
-N0Y0RTI0MzRERkNCQUUwNTEwQzdDQUFGNUY4NkE5MTdCRENDODVBMEM3RDBCQ0EwQUNFRjQ4
-CkU1NEJFMUQ5NDMzMjRFODI2RTFFOUQzRjBBNTREMzY0NzRGNzQzMDBGOTRFMEQ3MzkxQTEz
-ODg0NDQwOTE1RDFGOTFGNUJBRjMxMDIzMAo5REMxOEEyQTc1RTg3REE3MjI3NjRFNzk5QTEx
-Q0U4OTgzMzIwNUI5REZGMjU5NDhFNUQxRjNBM0NCMUU2MTFDRTI5OURCNzM0M0YzMjAKMDBG
-MjZBMTBDNEU2MzU4MzU4QTVGNjU1RDE1RDM4MUE2RDk4MDAyRDgzREUyOUIxQUM5NDNBNEM2
-RjQyOEQ3NkU2MDc3MDJCNzc3NENECkRBQTNFRDcxMUYzNTJGNUE2NURGMDFCQ0IwQjdCMjVD
-RjgwMUUyNEE0RTM5Nzc4NDBEMEM2QzQyRDcxQzc1QUFBMDBGMjY1Q0QyNTlCNwpDQTBFQzI3
-Q0YwQjEyMDM5NTE1MkYyOUVDMTczNEZFNUY0MEFFQjRCQ0NCNkQ5QUEwQzVEMzhGRTczMjRG
-RUVDQUM1MDEzNDQ2RUIzQkMKRTdERDQ2ODA0N0QwQjc3MDVGRUM4OTg3MDA3M0U1RUY4MjlE
-NEI3ODJBOEM2N0UxMzRBQ0ExRkQ3RkY0NDA1RTFEMzk5Rjg3NkY5MzYxCjRFRjg4RTJGNjVF
-MTNCMUNDQjBEOTE0OUM1OTEyOTM5MTg0MzE1MEFENDkyNUNEOTVBM0NEMDU3ODdFREMyMzZC
-NUZCMDA3MkREQUIxNApBMTQ4MDUzQTRFMDYxNjk5ODA0OTBCQTBFNUI4QkQ0NkRDQ0QwNjNB
-RURGMTlCQjRBQzZGMTM5NjI5NjQzNUM0OTc1NkQwNDNCMTFDRUQKQ0U2NkU3MTEwOEZCNkE1
-RjI5N0E0NzZFRjQxNEFGNzVEODEyRDRFNDgzMEE4MDg5NDgwOTIzNUVGMUM0MzUyOEQwQUZF
-MzkzODcyOEE5CjU2ODUwNDlEMzE1NDhDQjVGQkUyODFDMzUwMUQwNTBFOEEzRUE1MjVBNTU1
-MDZGRkEzMUYwMTY0OTE5QjMwQTlCNEFGQzcwMjI1MDQ4RQo5MzUxN0UyMzRCMEQ2NzFBOUY3
-NEFFOEREMTU1RDM1REQ3MkM2QzhGRDM1OUI1MDIzRUY1QkM3NEE1OUQxNTlFMjZCQTY4RjNE
-MEQ3RDEKRDkwRjFCNjRBNENEMjcwQzFEQjY3ODMyQzgxNEI0NEFBQjI0NDdEQ0IwMEY3M0Mx
-REQ1MDgwQzc2MTYxMTFBQ0I2Mjg5QTAzNjJCNUZFCkMzOUIwOUQ2MkY5MjRBOThDMzdGMUMz
-RDNEMThCNzAxOEU2RjZENkY4NTE0MzZBRjZDRUI2NjY5MTQzRDMwQzg1Rjk1OERCMjc0NzIx
-Mwo3N0I1QjczNzM4Rjk0NDI1ODYwMDhDMzhCODQzRTlBNTY3RjdFQTg3NkEzQTMzRTE4MjdG
-MTJCNjc1MTZBQjJBNjc4RjEzMUQ4RkFGNjIKREY5MjNCRDZDNEM1QzJERTBCOUIyMjk1NDFB
-MDJFOTE4NUFCNkM3QTU2RjREQ0ZCNTkxMjg4ODFEODdDN0E4ODY2MTQwQUVGMEM2QzRBCkIy
-NTNCMTkwRTA0OEEzMTBGNTI0Q0U0NTNFQkE3MEQ5Njc2MjcxNDM4NDNGQzREMTlFNEU3MUND
-RkQzRkE4NEI3MkM1MUJEMjExQjJENgpFOTY5NTFFQTNBQTFFOUI2NkU1NUUwMTE3QTQzRjBE
-RjhFNUNBQUZBQTZCRkQzOEM3MUQ2OEFFQjg0QkUyQUEzQjhDMEU0NTE0MDU4MzYKNTk3MDNE
-Nzk1NjhCN0RFOEQ5NTVEMUFGMzE0NkY1MTRFNUQ4N0NDRUU5RjMwOEVEODAyQjQ5REFGMzQy
-RjhGNDU1NTMwOUJEQzA5QjNCCjlBMUQxM0VGM0ZFNkRCODc1Qjc3NUFBM0EyN0IyQzFBQUY2
-ODM5OEQxRDdFQzg3NTBCN0JDRUMyQjc2RjI3RUIxNkY1RTQ5NkRGMkEyNApEMTRCNkQ2QzM4
-MzA2MTZFMzI2QkQwQzQ1MDBEQjE2NDc0RjU3MDNDOTU1NkU3NjBFOTNGNzEwMUUyNTFEMTRG
-MUU0MjVCQThCQjczQkEKMTJGNTc2QTc3OEJERUY3NzQyQkVCMjI4QkFFRTU5RDQyRTA1NjU2
-MjgxQzQ4RTk4MkZEMDY5OTE3ODI1RjJBMDZEOTE3QzM5QTZFOTkwCjYwQjU3MDM3QTg3OThB
-M0M5QkJGMzYxQzgyNkY2RDBFNTY1Q0Q0QTQ2NTc3MDkwODI1OURFQ0E0NTJENDU5MjJFODdE
-QkNGN0NDOTY4NwpBQzdBMkU1N0IzOUI5QzkxNkMwMEVFRTM0MjJCNzk1Mjk4NDdBMTFFRDhF
-M0VBNEJENjUyMjQwMzM5OTU5QjE5OTYxMDc3MjE5QzdEM0QKN0FBMTUzQ0UzMzRCOTI4OEE0
-Q0ZDNUJEMzc4QzhEMUFCNDJFNkRBN0FGRTlBM0RBOTI4MzJBMjM1RDYxNUFBREI0MTRERjMz
-QTc4ODBDCjQ3NTc1ODdDQ0RDMjk4MTM3MjExNjQ0NDY2QzA3NzYxOEI2QThCNTQ0ODRENjI0
-MDBCOUNGRUNCRUFBMUFCQ0RCN0VFNzgwMjJERjQ2QgpBM0JGNEUzNkRBRDc1MjBBQzE2REJC
-RDg5NUZBQTg5Q0UwNkEzRkMyODMxNTNDQzg2MkRGNTQxOUFDQkMyN0RGNTNBMUMzMkI0QjUw
-QjkKMzRERDc1MzIyN0FBRDM1REFDMEY3Nzg1NTUyNEJFOEJBM0MwQzExNTExRTlFODVBQzRE
-RkM5RjRCQjk3QkRBNzc4NjRCMTYyREJCQjM2CjJBOUMwOEI3NjA0OEE4OEU4OEZGRDA5ODdD
-RDA5RDE2Njk1NEM1OUNDQjY2QUM2MUE2NTFFNDJEQTg1MUQ3RDcyNzNFNjBGQThEQzMzMApE
-MTFBNkQ4MDg3Q0IyNzY1QUYwODVDMDlDRTA1Q0FFODlCMTEwQzZBRDJDNDUyRkQ0RUQzMjZD
-QjY2QTQ4RTBGMDlDRDZEMEM1Mjg3REQKREZFRTlFNzM2OEJGNDFFMTkzNURCQTIzMjY3Qzk5
-OTc5M0YyRUY5QjhERjgyNjBBNzM2NDJGMzIyRTNCRjBDNzlCMUVCOTk4MDc2RDA5CkRFMTA0
-RjE0NkU2RUE2RUZFRkQ4NDI2MzU2MzFBQjJBRTM2NDYxNUNEMzI4OTRDQUREQTJFNjc5MzU0
-QkI0QURFREEzNTc2M0ZDQjE4QQoyRkUxNzQ3NjJEMzE2RjEwNzkwRUE4ODhDRDc2NzI2REEz
-RDEzNDU4RTdBNjY4OUExNDlCNTcwOUI0NTU4NjY1Njc3MTJEMjFFNTgxOUMKNUE3QjhDNEZE
-OTUzNzdBMjhCNzMwMzNFMTBBQzQ4NkM3MjA3NkE2MTY4MTNGMDU2QjFCMzlDRDkyNzlCNjRC
-OUEzODJCNTA2RjNGMjUyCkZEMEY1MTA3QjlDRjM2RDc4QjVFRjYwREQ5Nzg0Q0E3MEUwQkRF
-RUZGNjc3RjUwRjUwNkVDODNFRjMzRjgzMjM0NEFGQjY3RjlBQjREMwozREIyNEJFM0Q3QTAw
-QjhBNjBFRUNDN0VCNUZDOTEzQzA1RjY0MUM3MTU0MkVDQzkyMjlGNjc4MDlCOEFBMDE3NUVG
-MzFFQ0RGNjgyREEKMzkzQTkzNDNGQTE5QzRBQUI1MkU4RkQzMTBGMUEyRUE0OTg3RUY2RUNB
-MEQ2RUFGQTQxNDU0NUFGOTkzNzZGQjEzQkQ3NDREMUEyRUNFCjMwRTJERDQ3QjU4NzhERTVF
-NjMxMkVBNzZENjk5QUQ2QzIxN0JBRENGNTM1QjQ2RTJFQjc4MDBBODREMzA4M0E2MjcwQkIy
-QzVBNUQxQwowMDU3QjQyNDUzMUVCNDhFRUIyOUU0NDVCMUJBQjI3NjM3RkQ0OTU1NTM1RjYy
-QTFFRDU5QzgwN0YzODE2RDQ2QTk2QUEzQjAxNjAxOTAKNUZDN0YyM0FGMTc1Q0NEQkFBMDYw
-RUQ2Q0MxQUFFMTU1RjE4QzBGQTBEODQzOUJEQjczQzM1QkY0MTU3MTE0MkY4QzhBNjk2Nzg3
-MDQxCjk5QjMwMkM0OUFGMDJDNENEOTI5RDJDQTdGMDQwM0JDQ0I2QkE4QjNERDEyQjA4MUE5
-NjEwNDg3NDM2Mjc0RjBBQzhDMjFCNzIyQzUzOQoyMjYxMTAwOUI4NTgxMzUyRDk4OUVFMDY1
-RkIyRDFBODE5MUMxQjBCNzEyQzcwMkM0RkI1NjZBMTlGMzgyQjRBQzhFODQwREMyREM0NTYK
-QkQ5MUY3QkZFMkYxRUIyMjVGNkFFMTU2MkY2REU5RDRENkQ0NkJCMjQyNjEyNkFCQTlFN0JC
-RDIxRjE1OEIzRkE5QTA0MEExODUyOEQ1Cjk0NkU2QzVCNDMyMjA3MEIzOTI0MDNBRjE4Q0Uw
-REU5Q0EwOUZGQ0VENkY2NkY3QzY0NkMzREYxNEY1MTIxQjM0RTQxREJCQTY1MzM3MAo1NDk3
-QTQ0OEM0MTE1REYwMUU3REY3NTNFRjYxRDlCODYxODc5NkFBMjZFMEE4RTc4M0E2REYKMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMAowMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwCjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAowMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCjAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAKMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMAowMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCmNsZWFydG9tYXJrCiUlRW5kUHJvY1Nl
-dAolJUJlZ2luUHJvY1NldDogcHBjb2QucGZhCgoKCiUgR2VuZXJhdGVkIGJ5IEZvbnRvZ3Jh
-cGhlciAzLjUKCiUgQ29weXJpZ2h0IChjKSAxOTg3IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3Jh
-dGVkLgoKJSBBREw6IDcxMiAyODggMAoKCiVGb250RGlyZWN0b3J5L1BQQ29kZSBrbm93bnsv
-UFBDb2RlIGZpbmRmb250IGR1cC9VbmlxdWVJRCBrbm93bntkdXAKCiUvVW5pcXVlSUQgZ2V0
-IDQzMDM3MzggZXEgZXhjaC9Gb250VHlwZSBnZXQgMSBlcSBhbmR9e3BvcCBmYWxzZX1pZmVs
-c2UKCiV7c2F2ZSB0cnVlfXtmYWxzZX1pZmVsc2V9e2ZhbHNlfWlmZWxzZQoKMTcgZGljdCBi
-ZWdpbgoKL0ZvbnRJbmZvIDEzIGRpY3QgZHVwIGJlZ2luCgogL3ZlcnNpb24oMDAxLjAwMCly
-ZWFkb25seSBkZWYKCiAvTm90aWNlKENvcHlyaWdodCAoYykgMTk4NyBBZG9iZSBTeXN0ZW1z
-IEluY29ycG9yYXRlZC4pcmVhZG9ubHkgZGVmCgogL0Z1bGxOYW1lKFBQQ29kZSlyZWFkb25s
-eSBkZWYKCiAvRmFtaWx5TmFtZShQKXJlYWRvbmx5IGRlZgoKIC9XZWlnaHQoTWVkaXVtKXJl
-YWRvbmx5IGRlZgoKIC9pc0ZpeGVkUGl0Y2ggZmFsc2UgZGVmCgogL0l0YWxpY0FuZ2xlIDAg
-ZGVmCgogL1VuZGVybGluZVBvc2l0aW9uIC05MCBkZWYKCiAvVW5kZXJsaW5lVGhpY2tuZXNz
-IDM2IGRlZgoKZW5kIHJlYWRvbmx5IGRlZgoKL0ZvbnROYW1lIC9QUENvZGUgZGVmCgovRW5j
-b2RpbmcgU3RhbmRhcmRFbmNvZGluZyBkZWYKCi9QYWludFR5cGUgMCBkZWYKCi9Gb250VHlw
-ZSAxIGRlZgoKL1N0cm9rZVdpZHRoIDAgZGVmCgovRm9udE1hdHJpeFswLjAwMSAwIDAgMC4w
-MDEgMCAwXXJlYWRvbmx5IGRlZgoKL1VuaXF1ZUlEIDQzMDM3MzggZGVmCgovRm9udEJCb3h7
-LTEgLTI4OCA2MDYgMTA0Nn1yZWFkb25seSBkZWYKCmN1cnJlbnRkaWN0IGVuZAoKY3VycmVu
-dGZpbGUgZWV4ZWMKCkQ5RDY2RjYzM0I4NDZBOTdCNjg2QTk3RTQ1QTNEMEFBMDUyNTM5MkVF
-Q0FDMTYzRTU4NEE5MTA0RDk5QUQwQkMxQjFGM0Y3MTIxRDFEMAoKRjJDNjBERDIwNkIwRDND
-OEM0NTA2MjBCNDczMjBDQTBBRUI4OTM3NTExRTQ1NkFBREU4RTY2QjMwMUIxRTNFOURGRTE3
-RTJGNzlFQ0ZFCgpBNzA5RkYzREFFMTlCNEMxNjlERjY3NzNFREE0MTREMDI5MTVBNkYwRkFG
-OEIyNEZCQjA3NzdDNjk3QkU4QTM3RDYzQTM5MEFEOURBRTQKCjk1QkI3RTYyNjcyMUZGMkZE
-M0ZCMTQ3QzgwRDIyQkVBQzM3QzI2MjREODE4RDU4QzhERjAyMDlGNUNFNzZBQ0RERTU3QTMw
-M0Q5MDQyQgoKRjBBNjc0RDA5NTY5N0Y5MjVGNTMyRDE4MTRCRUE4RjhBNUI1MjIzQTMyQkM0
-QTk1NDAyRjJDODQzMTgxNzU4NzUyRkMzMzA5NzBFODE3CgozOTc3NDE4RUI0RjY0RkQ1RTQ1
-NUMzRTQxNjVDOUFCM0Q4NTA0RDk0NkY2QjVDM0Y0OTI5RDQ2M0UxRDZFNkI1ODEwREFENkM3
-QTY1MjkKCjBDQzZEQjk2MEExRjk0MzQwMEE4RjYzNjREQjM3NDJCRTk2QjVDQjRCNzhDREM1
-NjM0QTlFQjNDNjJGREM0ODFDOUMxMDFFMDQ1QzYyOQoKM0NEOUQ0OTFCNzc0ODJEMzI3OTdG
-NENDMEJGRjIwNTc2QzI2MDVFQ0FEQURENzc1QjIxNjVGRUYwRkZBMEY0RDg4NTIyRDFCRkJC
-MDVGCgpCQzUwNjJBRjU0QkIzRkUyQzBCMzcxRThDN0JFQTBDNjQ0QTMyQTNEQUZGQkMwOEJC
-NjNBOTdDMThBMjY2QjMxMEIxQzFCOTIwOTQzNDgKCjYwNDc4RDI4MkQzOTQxMjNBRTA2RDhF
-RjQ1NzI3OEJEMjZGRDZFRUY5Qjk1QjVDQzdEMzFFMUZFNDYyRDhBNUZBQ0FGNUNFNUY0MkI0
-NQoKRTEzOTVBM0RDNjBGMzdGNUNDNzUyQ0Q4MTkwNkYyOEQzOTUzRDYxRjU1MDc1MDgxRTE0
-NzQ1RkRENjU5QjVCMEEyNzFDOEE0MjNBMEY2Cgo3OEIxQ0UyNEU1NzNBMjRCMTBBNUJDMzc4
-QTlFNDQxMDI5OEVBREQ5MEMxNTk1MjVCMzU4RjcyMTQ5RDI0MjkxQzkyM0YyQzkxRDc3QTEK
-CjMyMzQ3RjVGNDcxRjExMzlCOTkzOEU4ODBDQzVCMzQwOUIzMzg1OUZFODcwRDI4Qjg4MkI5
-NkQ4QjUzN0JGMjI5RURBRkRFOEMzRjZDRQoKN0NGNTFGMThDNUI1MEUzMTVFOTNFNDg5NkI4
-NUQ5OThBNDNENDdCQzI1NjAxNjAxMzlGQTA0ODEzQjNDQzVDNENBRDUyN0E4QkY4QTIxCgo3
-NTFEMUZGMDMyNjEwNDEwODY1REM0M0M0OTkwODBFMzE2MkMxQkY3NDA3N0Y4RkRENDU0MThC
-QTdENjkwQzIzRkVCRTVFOURCQzdERkUKCjBBQkJBNDMwQUUyMDZDMTY2RkRDQ0FDRUEzRDRE
-MzQ2RjkxOUZGODI5MzExMUZGNjI2NDYxQzI4QTlFRjIwNzJCMjk1N0Q5OEExMkI3RAoKNDA3
-MkVBMjhGMDc3NTVBRTlEODNCNUQ4NkRGNEIyRUM4MTAyM0JEQjVERTI2MkQxQUYzRkQ4NDRF
-OTQ5NkZCRkNCNjFEQTIwMzg4OTA5Cgo3Q0MxM0NBOUJDNjk1RkY4RUIxMEI1OUFERTUzODRE
-MkZCRTBFNzQxRjk3REQxMENGQ0YxNjhERjM0MzA3NUYzNEY2M0MyNTgyQTUzQjkKCjJDRUFD
-NTcyRURGRkVGNTRCMkY4RkY1RDYxN0FDRURERTU5MDQ2QzREMkQ3QUFFMEYxNDdEOEQyRkMz
-NzY5QUUxNTkwNERFREU2Q0Q0RQoKMUE5NDRFNUFCQUIxODE0NTBDMzZDNzRCOTNEOENGRkVF
-QjNCNTg3NkY5RkE3QjM1MzBBMEU2REY5NjcwRTJCQTlDRTc2NzVGOUYxMzQ2CgpFRjNGNUQz
-ODIwMkE1MEE4Q0Q2QUQyMDMyNTBGMjkzMkVGQzA4QzhBNEY3ODk0QTREQzFDODBGMkIyQkIy
-QzcxNjgyRDIxOEQxNDgxQjEKCjE4OTY0RjMzQjE2RjVCRDM1MjJEMTZGOUYzNzM5RjA2M0Q4
-RDA1NDYzMDM3MDYwNDMzQ0U1RjJGODQyMzFFQkZEMUEwNTI0NDk3NTU1RQoKNDE4NTZEMTcz
-QzcwQUUwRTNEQjlFMUJGNEMyQ0NCOTQ1OEIwQzRGRjM5M0JGNjJGQkU0RTRFNzhDNTNGNjc2
-MjlFRDM3OEVENjk1OTE2Cgo1MjA4M0JGRDQzMkQwNUY4RkNFQTBGQUE1QkMxQjRDRTlFRjY5
-OEVDMjM0NTg3MTk0NERGN0FBNEM0RkMzNjE2QUQ0NEU5Nzg1RTJCNDMKCkI3MzgxNTlDODQy
-NjFGRkQwNEFCQUQwRjgyMDMzRjFEMzY3NzM3RjA0RjcwQ0IyODEyNjMwRDE3MEEwOEU5RDY5
-NzZGMTM0ODM4RTIyQgoKODJEQzYwQ0I0QjkzMjE1NTE1REY1QUUwQkREN0Q5RjE1MEIxMzY0
-QTQ5Rjg4NkY3QjE5NkRENEEzNTg3MTVDQUQ4RUMyODJGOTA2MkEwCgo2RDZGMkNFMEJFMUZC
-NzE4RjRGMEMwMjQyNDE2RkRBN0E5Q0ZBRDFBNjcwMDFERjdBQjdBQzM4NDBGNzc2QTQ3RDA1
-MTlBNzExNjM3NEEKCkQ3NjIwQ0Y1MjdERTYzNDM5NDhBN0NFNjc2MzMxMUZDRTdGMzE4MDMw
-NEMzREY1M0NDRTdERjg1RTlCMjFBOEE1NkVEMkNCMDA3MEM4NQoKNTY0NjhEQzZENkVDNDc1
-OEYzNDQyM0Y2QUU5RjFGOTczRkVFMzk0NzY5QjVBREE0QTA4QzkwQUFCRDVEMDdFMEYwN0U4
-OTM1ODAxMzdECgowOUNFOTRBNkNGM0I4Q0QyQTY1MEE2RjhDNDJGMzNBNUJGMDJBMkYwNEND
-MERBMjI0RkVFREZBNTlGMzEzRThFNUJBOThBMkI5NUM1OUUKCjA4MTA0N0VBMTcyREE4NTY5
-MzQ1QTYyRkMxMkFERTE3REVFNDk5Q0JFMDhFQ0Q3QjE4QTc5NTUzQjNGMzkxREQ3Qzk2OTlG
-RjIwOUI0QgoKODE3NEQyMTdERUMzMjhDMEE4OTM5MTk3RTZDNDBDNjE1M0Y2QTQ5RTY5QUQ3
-QTczMzMzODZCMzAzMDNGREFEODY4REI1OEE5RTVBMTNDCgpBQzU1RUI3NkEyRDI0MUY5MzIz
-NDUwOEI0MzZEMDA4MTc4M0U2NEI5NDMxMjYwMTE1NzIwRUNBMTAxNTZBRkM2NzZFMDEyQTcz
-N0VGQTUKCjBFREZFQTM5NkUyQzEyNUNEQjc4QkVDMjY2Rjg5NEZFODE0RERGQkQyNEYyRDFE
-REQ2OEE5NzczMzM0RkQzOUU3QTcyQzAyM0VCRTBDQwoKQTZFNUQ2RTBFM0M2N0YzMTg3QjRG
-QUI5MDYzMDJFQjgxMEJCQzVBQ0RFQkQ0ODJFMDBGMjgxREFDNEE4N0M4M0ZERjA4RjJFMTVC
-RDE3Cgo4QTc3QTQ3OTJGNjlDMjM0ODZGRUQyMzQ0REYyNjA0M0Q3NkY0QzlCQkY1NEIyQkY0
-MjUxODA0NDVEOTU2M0Q5OUREOEZFRTNGOEQyQzEKCkE2NjBBQUVCQTZFMEFDRkFCNUNBRkE3
-NzQyQUJGMTcyNDRFQzlCRDQzQjc0RTY0NjU5RDAzMzY5RjI1Mjg1MTM0MDk3NkFBMThCRUEy
-NgoKMkI5Mjg3NTY2NDYwRUQwNTQ5MjNEODI3OTdBMzFDM0U0QkQxNEZDREY5RjMwQzk0QjUw
-MzY0MzY4QzFCQjE4QTEwQkNGNDczMjVEODMzCgpGM0RERDgxNTcyNUY2MjhFOTI0MkNDNjIx
-NTU1NTBENTRFMUI2OThGRTY2REYyOUI3OTgxNzc1N0UwMkQwNTE5MENFQTVCNzhDMzVEMDUK
-CkZGODdFNUIyQUNBOUU3RTkxRkQ1MjMzREFBN0Y1Mzc4OTE5QkQxMTAyOEYyNTQzOUUxRTM1
-QTVEREREOENFNzEwRjRERTE2QzFDQzBDRgoKRkIxQTlCQjlGMkI4NjM1NjA5REU2NDc5RTgz
-QkVFOEZBQTRERTNFMjg5MzJCRDE4RTA3RURDMzI2QjE0Mjg5MDFBNzdBM0QyM0U4QjcyCgo2
-Njc5NkNEQjhCNUIxODBFNzc5RkREOURCNzNBRUU1RjQ1RjcyRkI1NUNFQTZCOUU1MkEyRjcy
-NDk3QTBEOEMxMkM0RTE3NjA2MEYzOTgKCjc1ODRFNUMwQThGNkI3NDkzNTM0OUMxNTNBRkM1
-NjQzNEYyN0YwRTI0OENCRjlFNjAwOTkwMEE3QjIzMzE1QTBEODM1Q0EwOEREM0EzNAoKNjk3
-RjM4MUUzREY4Q0U2NTVEQzNCMkQzODNCMDAyREVCNEU4N0IwQjdCRTE0MTMwRjU0Q0MzQjQz
-M0NDQ0M5MDM0RTAyMTcwOUI2RjdGCgo4QzI1REFBRTY5MkJDQjM5OTU5NURDQjAwOTc4RkFF
-MzQ1NEQ0OEVBMTA1MjM2OUIwRkJCNEIzNDBEM0FDNkMzMjc5QUFCQzY1MjZGOTkKCjM2MkM3
-NjkzQjBDMDE2N0E1MzlDRjRDOEVFN0M0QjZGREJFNjIzNUQwNjY5RkY1MjVFMDVFMTI3QTBF
-MkZCRURBQUZBQTgyRTg0M0VFOQoKMENDMzJBOUE4MEVEOTg1NDJFMjNENzgxOUY1NTUxRDhC
-MDY1NjI4RDQ1MzIwODFCMDBCNzI4Q0UyQzY3ODU1MDQ1NDc1RDlEMTQzMkMxCgpDODNGMTJB
-M0E2MjhEMzAyNjk3QjQxOEQ2Njk5QzlFNDM4MDcwNEQwNUMwMjcwQTczNjAxNUE1OUIyQzRB
-RjJFQzM4NENGMEYwNTQ5NkYKCjAxQzk3N0ZEMzlDNkU3NzhGMzhENUU0MzhEQjVCNkIwNUUz
-MzNBQTZGNEQ3REVFQ0M2Q0I0QjA5OEUxRTUxMzhFOTgyOUQ5M0IyMUYwNQoKRkNEM0I1QTMx
-NkJCMzQ1MkM1MTZCMkI4OTM1QjFCRTgwRTY0QTdBNzIyN0JFNkFFODQyQUYxMUJGQUYzNzJB
-RTRFNDFGOEQ5OUQyODEwCgo0MjdGNzA5Qjk3RTNDQzBERTRDOENGNTlBNEI1OTU4MkY5Qjkz
-ODVCNEY4RTgyMjEwN0E3OUNBNDQ3QjlGODg1NDc3REM0QjY1QjdCQUMKCjMwQTQwQjUxNDFB
-OUEzRkJBRTk5RjY4QjI3QTNDRUNCNzQxOTEwM0JBREI3NzBFRjYyN0IyQUUwQzRGNkYzNjhC
-MUM1QjlBRUYwODA0QwoKRkVDRDgyMkQ2RDhFREU5RjQyRTE3RUUyQTZEMzg1RkIwNkVCMTdD
-MURGRkEyNTYyNkU2Njk5QzREM0I3OTFGRDY1RjJFRTVENjlERkJGCgo0Q0M2RTA2RjdGNEVE
-RTY0MkIxNjM2OTlCMjM5ODMwREUwRDEyMEUxRjQ5NkY0MDI2QTMxRDQ2OUU4NkMzNUIwMTMx
-MEQ5QjUyMUY1RDgKCjYxNEFEMjgxRjE1OUUxOTdGOEE2NkM1MzI1QTI5NDYyMTZDQ0NBOTY5
-QzRGNkQyRkMwNTA4MEJENTBBQzNENDMwMjZCODlDMkU2NDBBMwoKNTk2NDU1NUEwNzM0OTUz
-ODhENDg3RTkxOUM3QTQwMDg2MjE3QjMyRkU4QjUyMTVBMjEyMjA0RDQ0NzI4RTFGMjQ1Qzkx
-MzgwNjY5M0MxCgpDQzhGRUQxMkJGQUYxNEM0REU0REUwQkEzMkQ3NkFGNTJGNkIzMTZFOUU2
-NDUzOEE3MkJENDYxREQyRTI0MTU4Qzc1MzYyMDMxODAwQ0EKCjIwRjcwMzg3NTQzQkNGQ0ZF
-RUYwRDFCM0U3RTEwOEUxMDZEOEIxNzJCNEJDNDBGODNBRTRENThDRjhDQ0IxMjMwRDY5ODFB
-RjAwQTcxMgoKOUZBMUFEREMxRUVERjIzQTMzOURGOTNERjQ1QTNGQkQ3ODI5QkQ4NDBDRTg2
-RUEyQ0EyNEUwMjBBMEZEREMyNDY2NEVBNDJCRDE1QzMyCgpBMkNEMUQ3QzMyN0NGMzI5NDgw
-QjcyMTE5MjZGREY0NEZGMUY3M0ZEMjQ4RDk4MDk1NkNFMTcwMjcxQzc3REVFNTcxNjRCQTJG
-RUQ1MTMKCjVDMzc3N0UxMDk1NkM5RTM4MkQwMkI4ODgyNjFCQTIyRkJBM0Q1Mzc0QkQyMTMw
-MDEzRkYyRUFGQTRDRTRDMTIzNURENTEyOEZEREFCMQoKNjMwNTlGNEE3QjkxMUI5NkM1ODc1
-MjY1MzNCRTcyNTU3NDlFRkI0MUFEMDMyQ0MwMENBQTIwQzI1MzFFNERDMDlFQUM0OEFGQkUw
-NDI1Cgo0MzFGQzI5Q0E0OEEzNzQ5QUM5QjAxMkNCQjIwOUY3N0Q5MzE1OTlFRUM4NjQ1RUYx
-ODc5M0U3OUQzNUM2M0Q0RjFBNzEzNDI4NEJFNTAKCjAwREZCMzJFQUY5MDIxRDNDOERFQzJC
-MTE5RTM3NkIzRjJFOTQ3MzFCMjNGREJGOEJGNkQzNkFEOTE3NEY1Njc1NkI5MDIwNzUxMTI2
-NwoKOERCMzBFRjJGMzRGNzkyMUFFRUIzQTAwQjZFQkU2OUQxOEY2RDFEMTBDNUI1RjVDQTVG
-MzdGRUI5NzU0NjE5MUYxN0UxRjg5NzYzN0QyCgo5QUMzNjYxNDhBOUQ3RjA5QjA2MTRGNjMw
-RjgyOUYxNTVBRERBOEU3MDRFQzVDNDlGOTYzQkFFODlBOUE2NjExMTc3NjU1RUI4NUQyQ0EK
-CjAwNzVERjU2NThGRDY4NjQxQUE3QjMxQjhFMUVFQzhGNzE1RDZERTlENDIyMjc0QkNEODM4
-MjA4MkQ2MjVCQzgxMkY1REMzRjg2RUMwQQoKMzc2QkI1OTZDMjMzRjAxQzZGNTQ3ODA5MDk2
-NzE2OTRFOTAyQ0MxQjk2RUZCMEFBRjJCNDJCQzhCQ0EwMUZGNkRCMjM0OEVGN0RBRDNFCgo3
-RTk2NjExODlGQzI3RDY5MTIyNDQ3QkY4MUY5NDY2QTczRUYwNEQ0RDRCQTYyOEI2M0JGQjg0
-QUU4OEI0NzI5NjVFQ0FGREQzNEY3QUYKCjhCQ0E1MTA3N0MyQ0YzNjRGMTUyQTY1MzQ3NDg4
-QkNCOTQ4Rjg3RTk5RTEwRjQzMEIyQjA5NjRFRDYxMTRDQjY5QUM4MTg2RTQ4NkQzNwoKNkY1
-N0M0MzhCODk1OUMzNjBGQkMzNTUwQTNGQzZCOTczQjYwM0Y2NEQyRUY5OTQ1NUM4MkUxMTA3
-NDM0QTBFQzNFRTRFMUZDMTEyOUE5CgpGRjEyQTIzMjQ2QjQxMEM3NEUxM0ZGQjA3REZCNkE2
-MjI3QTczQTBCNkI0NTE4QTBCQTJGQjYwMDdCMjFBQTgxQTdFQzc0N0M1MjVGMkEKCjhFNkMy
-NTY5QTlFOTUwRTBCQUExN0E1QzlEOUExRTUxNTUxNDdFRUE0RERFODMxQUQ4Q0Y2OUM3ODE0
-RDc2QjUwMzkzM0Q5MUFBOTNFOQoKQTk3NTA4QUFGMjk4MzlFMTc3ODk4RDc5QkZEMjc3MDA1
-ODE5QUQ4N0Q5MzM4Q0FGMDJBQ0FDNDRGODkxRjkyODEzRTdEQTY5QzgyRDdCCgo2RUE3MTc1
-NjRCQ0IxRDQ3MEIwOTBEREJCMUVGQjMwODYxM0FENjFGNUQyNzMzOEZEQzgxNzJCMjU4MDA5
-Q0I3QTVGRkI4NzJFNDNDODgKCjIwRkMzQjhEQUUyRUFDRjg3MEQ3QzVBODhENDI2MTk4Mjgw
-MEFBQjM2RTk0OTY4QTRDNUMyNEVDNUIwRTUzODE3MEU4QzZGOUFENjFEMwoKRTZDNzEzQjYz
-MTlFOERCRTcwNzRDQzIyMjg3NzBBRTUxNjQ5MjI4QTlGQzE4NEFGQzFCQjdDNjc2MjhGRjMw
-MzYwNDU5MzUyRUFENkI0CgpBMkE2OUEzRDM5MTgyRTU2Q0JCMjg2NEEyQzExODBBN0M3NzdF
-NzI2OUM1NzQzRDVBNzM5QjUzRDNBMkM1QkJDOUFCRTgzMzdDMzU2NzkKCjZCREE0MDEwMUQx
-MUVFQjQzQkI4RUJGQTczRTRFNzAwN0EyRUE0NDNBRkVEQTY3OEUxQjE0QTJBQTJBRTZBMDZE
-MTIzOThFNjhENjM3MQoKQTQ1Nzg1OUMwRkYyNUE4MUM1REVDM0FGNDgyNzJDQzVGQUMwNDRB
-RjJFNzFENTEwRTVCQUFBQzhBNTA1NDJEOTM3OTg4MEFFN0M5RDJECgoxQzgyMkI1NDc3REFG
-NTE1MEI4NEZCOUExQTA2MkM5QUVGOUMwM0Y4OUUwMjY5NjM3RjA1NkJGNjVBOTJDRUFERTMx
-RjJFM0Q0Qzk1ODkKCjA3MDFBNEEwNjQ2MDVDRjc5RTkzM0E4NTE4NUI1MEQxNEE0NzY2NTYz
-QTk1MkQ1QTNDOTlDMTZDRTdBNTBCQTY4Q0VEOTg1NDlERDM5NQoKRjY2OThCRTRGNzk3NkFE
-NUEwMEU3MzdBQTMzQ0E1MUY0QzczMDhCNjZCMTBCRjYzNkIzQzREQzg4NjZGMTUwOUIwODFC
-MTc4MDU5MzQwCgpCRDk4NDlBQjQ4N0NBQTAwNEI4RTYwMjQxMTI1NDU3QzkyMjM0MEIxQkM4
-MTc4ODVCNzAzOTE0QjBGQzU4RjEzOTEwMTZGRTFFM0RBMDQKCkFCNUYyMDU2QUUwREM4QTY4
-MUM4REU2Q0Y1RkExMjVEMkM3RjU5NjdERTg0MUYwNzZBRUU4NzkxRTZDMTdEN0Y2OThGMjA1
-MkE5QzY0MQoKMDQ5MjRGOUZEODVCQkFGNzdEOUVFODcxMUYxNDdENzMwQTZGODlEQjI5NjVD
-QjQ1MEYwODIwNDAyQzJFNTJDQjU3OTc3QkEwQTc3RTBCCgo3NjgyODQ1RjNFNDI2NkI3NzMw
-NEYxNjNBQjJDRkQ0OTQ5NDkxN0QyQzU5NjNBNzA0Q0ZFNDZDNjQzRUE3RUNFNDQxRjgyRTI3
-MjQ0NEEKCjgyNDJCRkE2Q0I4MTNCNjYxQ0M5NDMxREE5QzFFMUU5QzZBODYxQzZDMEVCMzA1
-M0QxRDYyQ0I3NzQyMDlBNzU4NkY5Njk0QjU1OERDRAoKNjI1QjU1QTBFOUZCQ0U1QzE1QTlB
-MDAyQkM5NDc4OTA4NTUzRTk1MzAyQkFEMUU0REM5QzI1MEFFRjE3MDQ5NUZDODk4RkRFQkEz
-NDVCCgpCNEFGNzA2MzM0Q0VDNTA5MUY4QUM0QTIzODIxRDBGRURDNjE2N0ExNUY0NTYzM0Ez
-MEREQTg4RUMzQzhDNkUyMzVBNUEzQzFCRjFCQkYKCjAzQTg5NkNENzgwNEMyOTdENkJBRTEz
-NERGRTRFMzg4ODcyQTA1QjkyMDM0QUU3MEREMENFQkNENTcxNjU1QjE1MDc4QTI3MTlBQjMy
-QQoKNTI4RTYxM0YyQkUzRDVBQzVGM0M5MzhEMjNCQTIwRERGRjE0MjI1NjA3MjZCNjJCQ0Ix
-QjlFQTA5REExQTI4RURCNTVGNUNBMkQ0RTA1Cgo1MEUxMjMxMTU3QTgxOTc4RTdCMDVGQ0VC
-Qzg1NUU1NEE5MzZERDQwNTNBNDJBQkFCRjgyMEUzRTREMzcyNzg5MDlFRDQ5RTQ5QzYyMTMK
-Cjk1NzU4NjJFREI5ODNCRTRFQUZGQTZCOTQ2Q0Y0REUwNjhGRUI3NDA5MjdDMTk5MzVEMjVE
-Q0IxNUU4MTc4NDcyMTQ3NzRGMjkwQ0YwMwoKRTg2MkU3NjMzNUNEMUNFNDYxODhDQTM5NjlG
-MEIzRjlGMURFMTc0QzlFNDgwQzQ3ODJDRDVERDZEQTRGMTlCNTFGNUYwOUI3OENDQkQzCgpE
-NUFDODBERTg0OTI3OERENUE4NEJFMEY5RDY3MjI5MTEzRkM0QkNDNDgyOUY4OUVGNjFFOEVF
-QjkzRDQ4RjI2MzA5ODA3Mzk5NkNFNzIKCjA1NDM1NTg5NTg4RkJERUE5MUMxOEY4QkY1M0M4
-MURDRDEwQzc0QTYxMzlCNUE2OEVDRTdBQ0QzQTQ4NTcyMzIyNERGMDAxNzdCMUQ2QwoKNDhE
-N0Q5MkQwQTVBOUU1NTBENUUwNjE3NjVCNDk2MTZDNjUzMDU5MTZFOUMwQzUyN0Y2QThFQjZD
-RTAzMUVCODgzMTFBOTY4NjE1OEFBCgpCNTI2QkRDN0IwRUQwMUVGMkU4NEU0OTVEMTBBNTBD
-N0JGODc1MzZDNEQ0QkZBQzIyQ0Y5NUM1ODQ2MkE3REVFOEU2NzE3NTJFOTg0MjkKCjhERUQ2
-NDQ1MkFCODQ2M0E4RDREOThDQjdFMjEyMURDRTY4MEQxM0NENTJCNENBREM3Mzg2OTJGNkM1
-QzMyQUIzNzhDQjJGRTRGRkQ2OAoKMTFCMkY5OUE2RDBCQjlCREVCQ0RDODI3REQ3NzYwM0JB
-NTgxNDIyNkYzOURCOUFBODNBRTJCOTFDMEM2MDIwRTkzNDE5MERDNjEwMTM2CgpBQzZDRkM1
-QjZCNUU4NkE2NkRBMjU4MjQwNjM2NEZEMUFGQjE0MzYwQ0ExNkVCRDRGRUU2REQ1QjVDNDJF
-N0FEQ0RFOUI1NDY2MUNEMjUKCjE0NjRENUM3Rjg5QjYyQzk5RURBQTY5N0E5NkFFODVDMUQy
-ODBCRUE2RjcwMDExMEIyRTM5QzBEMDlCRDE0QTU0OEQyOTc4ODgxRUYxQQoKMzhEQUZCMTk3
-QkQ3OEQ2MkExN0MzNDM4NzNGMjc5RUE4NDE1NUQ3OUUxNzg4N0M4QzU2QjhFN0RFRDM4RDA2
-NEVCODExQTk1M0JFQ0IwCgozOUM5RUZBNDU0MjRENjQ1NUI4NjlFRUE1QTI1MkQ5NDBDRjBF
-NDNENTE2MkVFNDA4RTc1RjJFRjBCRTJERkNFRTY0NDhEREE1MjlCRTcKCjU3Q0U0REUzMUI4
-MEE0Njc2RDIzRkMwRTkwMUI4OUNGMDJBQTA1NjJCRTY2MTg1RjkxMDM3QjFCNTY4MDlGRjEw
-NDZBNkZDMzlDOUI5QgoKN0VDMjdCQTRBREYyMzg3NjBBNTc1QTQ3MjI3M0JCNjRDNUUyQ0I3
-NzYyMDdGMDAzMTVCNzM1MzRBNTM5NzY0MDA5MzcyQTc0Q0M3NjEyCgo5REE2MTg4QTM4Mzk2
-N0RDMTE2NUMwN0M3QjFGOTNCMzlDNkMyMDE0NDkxMDZBMEVBMTI3NjYzNEE2MTYyQUFGQURE
-MjFDNjFDMUQ1NjAKCjFCQUE2NzkwMjc4NUNCOTBDODdCNjExRDNBNkEzQjk0NzAxM0JBRDhD
-NjBBM0Q0RDMzOUEzMDI1QkVDNzRCNkREMzg3QjdBRkFCODMxQQoKODdCN0E3MUEzN0QyNTE1
-MjNDNDg2NDJCMUQ0NzlEODM2OEVCMzFGOEJCODM1NUVGQ0NFNURERDEzMjNGQzk5QTU2QjEw
-ODlCNzUyQTEzCgo1Mjc3MEJDN0UxODIxQTM5ODg5MEIzMTY1MEU4RUUxNEIwRDQ5QkFBOTI0
-NThDMTVDMjk0MUU0MzQ3ODdFQzRCRDAzNEM0MEJCMEUyMDkKCjZDQjI5QjE3NTM4NzcyOUFC
-RjA5NjJFQkQwMjQyNEYwQkI1MDk2ODdCMDNBMzlBM0JFOTY1ODc2MUYwNzAzQzVEODM5QjYw
-QzRGOThGRQoKRkJGQkFFMDcyMDJFMkNBMjJBQUVFMTQ1RERDMTA0MDkwMTBFMkE1OUI5MzQ0
-MDFFQUY2N0I4RUI0OTlFQ0I5MkIzNzVDRkU4RDU0MTI1CgpDQjZCMjBDOTk2OEJBRkM0NUQx
-QThCQzY1RDk4RDdCNzAyRTYyNDc5NEVCQThDMUVGQzk0MzNGRjJCQzM5NzJGNTdEOEZBQkYy
-N0NFNDQKCjJGQTMyQUI4M0FFNURCQURBRTAxRUREMTgzNDAzRDI3MkFFM0ZDRDc1QkNDNzUw
-QzkwREY3RDBCNTI1NTUxOEFBQjBDOTJEMzBBMDE2NAoKNTlEOTgyMUJEN0UxRDRDNEY0NjRF
-MTlCMEFFQjc4Mjc2MTkwRDcyNkMxRDc2NzQ3MDhEMEE3NENEMDU5MjBDMkE4RkNDQzg1ODFG
-RUI5Cgo5OThENzM1RDgxMTYyMzc4MEYxMjlGMEFBQUYxMTNGNzVFQjI4RjM4M0M5QjhDMEM3
-QTIyMjFDM0E0QkY2NDE5NjFGMzhERTlEQUJEMzMKCkE4MDNFOTQzNkU1Qjk4NDI1MDM1ODFC
-M0Y1NDQ1QUZBMDM5Q0IxMEM5MzZDOEIwQzA4REQ0OUJFQUUxMTkwQUQ2MTFGM0YyM0ZBNzdC
-RAoKNzFBODBBMUY5MUI3RjM3NjBGNUZBMzVCQ0Q3NkQ4MDMwRkFDODcyQzYzNzIxN0IwN0NB
-QTQ1MkM3MkRFM0Y4MDVGNTg4MjBCRjFFQ0NFCgoyMzEyMjlGQzVCNjhFNUYxQjIwMjU5REM5
-MkFGNDgxRkRBOTJEMDdGMjc2MDc3RDc4M0FBNDUzNDk5MTVCNUY4MUM4Qzk2OTczOURCNTYK
-CkY0NTIyRDAyRDU0N0RDNzYyNDBENjlDQ0YyRDY4NDI0MjAyMERFNjBFQ0EzN0Q3RTI4NDZD
-NTA0NUY2QjJEMTA1QjdENUEzQ0E1REU2RQoKNzNBNTY3MTVENURFNUYzRUVFMzU1OUU2NTdB
-NUVBMTNDOTcxNkUzQTdBQzBERTI1RTE3MjBENTJFQ0U4QTg0RDVEMUFFQTA0REYwRjdECgpE
-ODQ2NTQ5QkFFQjVDNTAzMkNGM0MyNTFBNUE2M0E5OURGMUEzM0QwNTQ4QTcyNzM1RkQ5REE4
-MjY3QkI0QjU3QTVDNThENDQ1N0JCMTIKCjQyQjUxNTI3MDNFNjJCNjRDMDJBRkE2ODJDNjVD
-NDExMkIyODM4RDlCRDhDRUM2QkQ5RDFCRUE4ODJFNTA5MDA0NkU5RjIyMDg3RTZDQQoKQjY5
-RjUzMjVGMEM2OUE0ODc0RUU4MjBEMThCNjREQ0NBQURFNkVEQkEzQUM3NThFNTRBN0M5QjZF
-REJDNDA1NTBEQkQ0NzU4MDE3ODQyCgoxQThDNUI2OTY3RDg1OERCOTgzNjE4NDQ1OUUyNjM0
-MEJDQ0E3NjM2QTg0QjdCM0NDOTU5NkE5MDc1Mjg0NTVGNDY0NkI1QkQ3ODlFOTQKCjlERDBE
-MUY0MEMwQUYyMUUzOTcxOTk2RkFBRkZCQ0MxNEUxOTAzMDkyNEQwRDM4QTk0OEVBNTUyOTcx
-QkE2NTA0NUYyODE3NTY0RDU5MwoKNEMyOTkwQzZDQ0RFMjYzMjlGMjNEOEIzNjlGM0FBRjc0
-QTEyNUNBMUZENTUyQkM3MTIyRDIxMTA5RkZCMzZDRkUzODdGMjJDRDA5Q0QzCgpDQ0Q0N0VG
-REY3RjY3MTM5N0NERkNCM0Y0NTdCMkU2RkQyRTIyNzNBQTI2OEM0QzM5NEIzNjE0NTEzMUVG
-MkQ0RDEwNzI5RjY0QUJEQzUKCkVCQzdCMjBCRDA3MkVDMTcwNDMyOTgyMjgwMzQxNzM1Mjk3
-QTdDRERDQkRFRjg0ODNGMzRBRjdBNzk3MTYwNDAyQjEwQ0NBMUM3OEFFMwoKOUFCNjE3MENG
-NkREQTE5RUYwRjIyQkVCMjgzMjc3RTA2NTQ0ODgxQjZCMEQ1MjU5MzZBODRFRTkxRkUwQkE4
-QzI5ODVCNkUzMkFGOTRFCgpERjMzRTZDQzcwNDA4RjNCQzY3MDcwQTkwRTA2NDFCQzY4QjhD
-RThGREI0NkJERTJGRTgwQkQ3MDcwRjBBOTUwNUIwOTU5QjE1MDlFODQKCkNDNjY2Q0E3Q0U0
-RUVCNjMxQjZFOEQxOTgxNjYxMUI1QUNFOTU3RTEwNENDRjM0MzlDMkMyNzc0MUNFQ0E2RjI5
-NTZCMEM1RTBCRDdDMgoKQjQxN0MzNzVCNjMwRDRDQUVGNDI4QTg4NTg0QTNEMTk2MjMzMEEz
-MTZCOTA1OEJCMTMyNEZDRDkwODc4MUFEQjQ3QjM5NDI1QTlGRUY3Cgo2QURBRjQ5OTc3NUY2
-OEY5OEY2NUVBRjgwQkJDOUQ0MDE1RDA1RTgxNkQyRUY5QTFGQTkxQjAxRTA1QjY5QjlFMUJG
-NzUxMzBCNEM3RDkKCkFCMjlEOTVDMDdBNEMzRjJERTAwQzdDMjEwOEY3QkREMkYxMDNEOEE3
-QkUwMkFGRDEyRDFFRDI2QTAxQUVGNkIxOENENjMzNjc2NTg5OQoKODA1NjE4RTA0MDVDMThD
-RTdGMDZFRkQ3OTZFQzk1MzJFQ0FGNjk2NkY3NkVFMzM1NDE5NDU0RkY2NDdGRjE0MTYyQ0ZF
-MUFDRUFEQzE1CgpBMjJGRDRFNkRDNzhBOTNENTFBNjA3NjU1M0MyRDcwNzM5OUQyN0U1QUY4
-ODI4MTNCRDMyNDhCOTExMEFCQTNDREU4RDNFNkJDRDIzRjEKCkRBMTQxQkU2RDQ1QTlFNkUz
-NkZBRTFEQjBDMDgxOTI3MDY3NjUzNjUzNkVBMTNEQTRGMDdENUJCNjI3N0Y3RTRDNjA5RTRF
-MTZFMkVBQwoKODgwNkYyOEY0MTkxRTcxMDk2RTI0OTVFNjREQjIzOEUyMEUwRDEzMDFCM0Yz
-NEQ5RkI0RTZFNjEwNkMwM0I2MjQwRTEwQzBGRDAxQjZDCgozNTJFOUJCOTMwMEMyNDZEMEMw
-MjBGMkI0MThENzZBMDQ1Njc4NEU1OEE3NUFBNUM3MjVFNUY5MjY5MzkyQTkwRDE4NURCREI1
-Q0UyRkUKCkFFMzFFQ0RCM0I2Mzg0M0FCMjk1ODI0MUJCRkVDM0MwNENFMEFBMTQ3QzUwNEE0
-NURCRTA1NTAzREQ0OTNBMDM4NTdCQ0Q3RTRCMzdBQgoKRTg1NzI4OTJBRkY0RTI3MUY1MTBD
-N0UwNjQ5QzU4QjNFM0NGNzVCOEMzQkMwOEVCMzRBQjVGNzY1ODEzRTk5Rjk5QURFMjU5QzQ1
-MzI3CgoyNjcyRjlEQzI1RjAzMTc5N0M0MjY5RThDQUVDQkMzRTkyRDFBNTlGRDEyODVCNDY1
-MDBGOUEyRDY3OUVCRUNFNDgwOTQ1RDc5QTUwQjkKCkQ1RDFBRTkwNzI3RERGRDZGOEM1RUIw
-M0IyRUE3MEMxNjk4MjhGQzc1NUJDNDE5M0NEMDI3RUI1MkVBMkRDN0FGMDlDMDg2NTY5NTEw
-NgoKNUJENzhBRjU3QzI4OTY5NzY1NUEzNDMyQTQ1Nzc5MkJCQzg4OTQ5QzQwRjRCREMwNzE3
-OTM4NTNGOUU4Nzc3ODM5QzdEN0Y5MzYzOUNGCgo0MkYxRTQ1MjBGQ0JDQUVCQzNCQ0M1M0M4
-MzMzNDAzM0MyNUU1MEM3MkEzQkUwRjMzN0NEMTQ5OTYzMjZDMTY5QjM5MjFFMzQ0MkNDREUK
-CjFBNDQ0Qzk0QUM4RDJFQ0U2MzI5MDhBRUQ0QTE2MkE3NDAyMTU1NUNBNzNCMjM1NzE1Qjk2
-NUNDODY3NzI3RTQ4QzNCNkIzOUI5ODlFNQoKMzNCOTJCQUU0MEEwRkFERkM4QkNFODVEMkE3
-RUI2QTFDNENFRTIxNDcyMzQ1NDIxRjlCODBDNUVFNjQxQzkxMjk1NDQ4QTUxMzA2Q0FBCgo0
-MTkxNkRFOURCNEE3OEM3MzgxMDY3MzE0QThCMzlCMTNGNTQwMjI4ODIyODY3MjRCQ0EyQzEw
-Njg3OTg4RTRDNEREQkVGNUUyRDM2RjQKCjM2QzlGNjQ5NUUwRDQwQUI2RjM1RTdEMEQ1Q0I4
-QzJBNzUzQjRDMzU1RDBDREFERjQ5RkJFRUJBNTIzOUE5MEE1NkQ4MjZBOUJFMTJCQwoKNjI2
-NzdGMDdDQjFDQTVBRDNBOEEzOUUxMDU3N0U1RkQ5NUU4MkYyRUVDQjRENEY3QjU1REZGODM1
-NjYzODIyODUxQjdCNjZGQjRDQTRDCgo3NTg3NjM0MzdCRDdGRkE5NTU5MTRCMjY3QzE4QTU1
-RDdDOTEzQzRCOEJCQUNFODg1RjU4MDZCQTcyNjUxNjcwMDMxOThGM0MzMjM2Q0MKCjk4MkVC
-QTc4RDAxRjQyNzBBRjU2MzYxMUI4NEM4MzlGOUY0MTRBMEZEQjRDRTBFM0FDMEE2NjI5Mzc4
-NzQxQjU5OTNCNDBDQTE5MDI0MwoKQzMwQzU1NzU5Q0Q1NDVCMjg0MzQwNDk5NEQwMkVEMjcx
-RDgwN0IyMTJENEQzOTA2NzYyNEM1Njg1RDA0OTM1RjdDOTM2RURDMEQ2RjlECgpEQTExMjIy
-OEFGMDUwOTc3ODBFRjZCM0Y3RTM3NjVCN0QzQjlEOUIyOTI0MDBEN0U5MzFDRjk4Qjg0RTVB
-RTUxRDZGRDc0MUU2Rjg0MDEKCkQwMjYzMDlERkE5MjUxMENEMjI1NEVCMjM0RTZCMkEwNEFF
-Q0RGMzlDMDMyMjdEMDcwOTZDNEJFQTU3ODY2RDkxMDk5RThDRjVGMEUxOQoKQTU4N0E0OThE
-NkJCM0I0OTJFRENFNjAwRTQ2M0EwQjZDRUREMEMzM0MyNzBGOTlGRjEyOTA2RUVENjYyNUM2
-MTQ0MkQ3QUUzQTgwNjBECgo4NTEyMTkyMEU2Qjk0MEVCOUU1NTAzN0Y0MEQ5NzdDNjc1REY2
-RTgyNUNFNDZGRDlBMUEzOTM4RDlBMTQ3NkMwRTBBNTc1MjcwMDA0RDAKCkI1NjEyNkM1MEE2
-MkZDMjExREUyOEQzNEM0MDRCRTAxN0E4MjMzNTI2NzY2MDlBNTAwMDE4MkVGQzNEREE2N0Qw
-M0ExMkNCQjI1Qzk5QQoKNjE4MkM2RDNEOTJDQkJCMkYzQjJEM0YzQjdGQzkwREYwQzYwMTQ0
-QTIzM0U3MUVEMjJENDExM0VGRDk1NDIwODE4MDJBQTdBNjc4QzlBCgpGNjgxMTc5MEFDQjM2
-NTRERkRGODI3MTQ1OTg3NTZFMzY1MTgyQTdCREVFMzExQjc0NjhGRTA3QzJGOUI4MjlCNjVG
-Mjg3RDU1NDQwRkUKCjMyMjQwQ0NFNTIxRTM4RDcxOTk5QTg0QUJENkY2QzFGQUMyMzk0NUJE
-RTk3RDFCMkVFODIzNEEyQTEyRjRGNjFBQTkzMTZDNzk0OUQ3NAoKNjYwQzQ1OUUyQUYyMTY5
-OUZEMzM0RkI0MUQ1QTJDQjg2OUE0NTU1MUJFMDYyRUYzMzYzODA4QUNBNUI4NjFDNUNDMDVB
-MEY3NERDNjIwCgpCNzYyQ0YxMjYwMTAwRjdBRjQ5NzU1NUUzQTM4N0RBOUI4MzZGMkIxRkE0
-NDY1NENENUI5QzNDNkYxMUQ1QjU1NTJFMkQ4MjRCN0IxRUQKCjlFMjU5N0IxODQ5REZBQzYx
-MDQxMjg3RTk5Njg1NUIwRUNGRDIxRUVGNEEwQUVEQjQ5Mjg1NjlEMzQ2MTNDNzRCNDZEN0Y0
-NkI1NUVENwoKNTUzMjIxN0JDNzdCMUUwNzVBNEI1Rjc4MkQyRkU1NzQ4RjEyQjUwRjcxNDZB
-RUY1MDZBNDFBNkEzMzY0ODU0RDhBRTRDQTE4NDQ4NjI2Cgo2MzY4RTE4MTg3NDE0ODk3MEI4
-OUFGNzU5NjdFNjFFQTcyMTIwODFGODVBQjE3REZERURDNkYwRkFGN0Y0MTVCM0NDREU3NTY4
-OEU4NUMKCjFEQzkzOUQ3Njc3NTVEQ0JBNjIyQkRCMzYzMUUxMjBCRUZCQTM3MzNGOEJEQjBB
-OUQ0REY4NzM3MjQwMzg1QTZFRDY0MkEzQjZCRkNFMgoKRDNCMDZCMTZGOTk0Q0U0OUJEREYz
-NTVBNUU4RjI4QzREQ0I2QUZBRjYzNTRBOTdENDkwQjU0QjhCRkI5RUUyQ0JGNUFBRTY2OUUz
-MTQ5Cgo0NDYxRTcwQTYwMTU2NzY0RjI1NTIwRUExM0YxMjYyM0YzMjgwMzQzODIyODc2NjYw
-QTdGNjYwM0I1OUFDMzlENDI1QjM4MjE3QUI0QkQKCkUxMjEyMEVBNjExOUYzMkUwODBDREU0
-QUU4REZBMjFFMjNEQkZBQjAzNzQyMUIyMEMzQTUxRjRBRTJGQjVERjQ1ODVFRDI4OTE0NzQy
-NwoKNjgzRjQzRUNDODIyRTA2ODhFNkFCNDc2MTkwMzhENEI5NDA0Q0JCRDkzMjRCRjMyNzcz
-RThDOTVGOUNEQjBDRDY4NzQ4REYwNjY5NzBDCgpBRDJCRjhFNDQyNDk0MENGNkM2RTQxREYy
-QkEwN0RGNDA4NUEwRTZEQTYwODBGRDQzRkZFQTBBNzFBQTdEMDAxNjlEODI4M0M5MTBCQzYK
-CkYwMDY0NkRDOEZBNjUyMkM4NUJGNDZBODYzODM2RjY0Q0U3M0E2RkJDMDUzOEUzMEJFNjM5
-MzBCMEVDMUU0QUM0MEExMjIwQTk5NjQwQwoKMzlGODExQzQyQUI3ODMyNUFGOTc0QTI3QTBD
-MkExQTI3ODVBMzZFQzMxNjA0OEU1Njg2N0ExRjg1Rjc4QjM2MTcxRjEyNkI3N0MxMTRDCgpC
-N0E4RTA1QUQ5MkRDNjg2MEQ1ODkzOTY0RTg5ODk5OEM2MzgzNkNCNUNBQ0UxRUVBMUM5Qzgz
-N0ExRTIyQUZEQzRCMzVFMTQ5RkIwRTEKCkJGMjQ4QTI1ODQ3NjA0REQ2OTYxREYzQUVDRDFB
-OUY2MUMzNkUzRTFFNEFFMUI5RjI4RkFGMzUxRkRBMTEzNjY0QkJGRUNFMEI3QzVFMgoKMzE4
-M0Y4NDI1QkU2OTA2QTU2Mzk4RTMzOTEzMDMzRTUxRTA2NDA4RTAwMUQ5Qzg2MkUzNkE5MzAz
-OUFGNDdGNUYzMDFCNkI1RjM3NzVCCgo0QjJENDI1OEI4NjY1NTkwMDEwNjZDNkVGQzQ4QzU1
-RjRDM0YwQ0RERDhFRjUyNUVERkFENkZDMDYyMTM4MTlBOUJBRTJFNTU3N0Q0MDQKCjZFNDY1
-NkJBMkYzNDIyN0M1RTM3RjBENzdFOTY0Nzc5QUZEQkM2ODQwNjE2Q0YwMjkzNkYyODFGRDM1
-M0YyQTVEOEU3ODE0QUM2QjI4QQoKNzFCQjU3MjUzRjg1MjgxMEI3RERENTU5MEE1MjJDNTBC
-NTZCRTI1MURDNzY0MUUwRDFFMjcxRjhDNENDRUJBQjY1QjZFNzBGODZBN0M4CgozMkQ1NUFB
-M0U2MURDQUU1MDRFQzRBQ0RBN0MyNzRBRkU5QkM3RTc1NjEwQzg2MUFDRERGQTVEREM0RThF
-QkNBMjRBNzcxQkYwQ0EzQTkKCjhCODhBNkVDRTUyRUZBN0M4RDU1Q0YwRUU4NTBBOTlDOTIz
-OUE0NDY2QjU1OEI2RDAyMEZCRUE4RDIyQkM2QUFFNDI5MkI5MEM5QTk4MwoKNkY3RjRDNUE1
-ODhFNkNDM0RBMzMxM0Y1RkVCRDRFNUQyRjdFNDU0RUJDQzk5Mzk3NDJDNjdFN0MwMUU1MTBE
-NTA3RUMzMEM2RTZEMzQwCgo1MTBFRkYzNDkzQjIyMDlBN0FDNDNCNDg0OTIxODcyMzE1NjU3
-RDNCQUY1OUNBRTM4REVBNDhGMzk0RTRERjNBOEM5MzBDNjFDNTQ2MTAKCjMwMEQ2NkE0MjNB
-NENFMjM5MkE3QTQyMjg4M0VERjA4NzY2MTE5QzJEN0I3QzczODQ4MjFCRDZGQ0QxQjc3QjFC
-RUMxNERCMTVGMTA4NwoKRTg5QURGNDY3MjMxMUZGMzY4RUFCNjBDQkI2RUNFQUQzNEE3NTA3
-QTc4MUIxREFENTU3RUQxOUM3QTVCNUUzMzQ4NTEyNjhEQzIxODI0Cgo1M0NGQjdFRjQ3RDE1
-QkFDQTY4NDUzMzAxRTk1MTI1QTVDRDM1RkRGRjFFNkVEQjg1QUU3QzIyODE4MDQyNEEyODQy
-RUQ0NzVCMzFBRjYKCjI0MEE0ODBCNkY2RDdEMzY1MjgwOEY4ODcyRjg1OTg0Mzg0M0Q4NjJF
-ODFFMzU5NEFDM0FGNTc3RTc5RjY0NzMyMjM5MkU0RTYzQ0MwOAoKOTM3QzI5NzZGRjc0OUUx
-NkM1OERBMzlCOTAzNUQ4MDJEMEYwQTlEMUREQUMxODk0RkE3MUJBM0U0MTg0OUMxMzM0NDUx
-OTFENDFEMjVDCgpCMzdBODMzN0M4NzZBNTk3M0VBMTM1NjczODlGRjg5QzY2OEUwRDEzRTIy
-NTk2NEREREMzREJDOTQ5QjQ2RTBFNzVBMkJBQkI2RTJBRjQKCjUzRjY1QUNEQ0Q0NUEzOTRC
-RjIwNjMwODAyQkQ5Qjk0MTg0NTlCQzc3MzZFMzcyNDRGOTIxNUYyRDZGNTM0RkVFQkIxRjg0
-MTk2MjczNwoKRDQ4REE3RDZCMzBBNzFCQzQxNzNCNkUwMEFEQjRFRkJBOTFDRTYzMzJDQzUx
-N0IzOTcwMUUwNzY3MEQzRDFBOUE4NkE3MTAyRTZBODBECgpDMUVDNkNENjQ0RjU1MTFEMDkz
-OERBMDk2RjgwQjQ5Q0EzNDQ0QzBEOTZERDc5RDNGODgzMkQwNDEwRjA0MzAxMjhDNjA1NkRE
-MDlGMzQKCjRDRDdFOEQ3NDM3ODlCRjNBRURCODE4MURFQjFBMjExQUE1MzIwRkNGNzkwNDg5
-NzMyQ0U2QTk4MkIxNDAzQ0M5RTJBRTZCQjlBQjVDNgoKODYzQzMyMDkyOUIzODYxQUMxMDEx
-RkE2MkM0NENBMThCMTBDREQ5REVEQ0VCNzNFOTE0NUI3M0M0NzFDNkY4MjhERDE4ODgwNEY5
-NkVGCgpEQzNEMjI2QTJBNUQ3MTU1RjdGOEJFNzgyMUREMzlFRjQ1MEI1REZCMTREQjZDNEY1
-NjhDQURDRkVEOEM3MDI2NzVCQTFDMDRDRTZENjIKCjgzOTcyN0ZFNkY4QUVGNTk2OTNCQTM4
-QTJCOTAwRDBEMDJDNTZEMkM2MzI4MzNEMkQzNjBBREUwN0FEQ0Q0Q0JCNjIwNTE3RDdEMEIy
-OAoKRTM0NjJFNkVFMkQzMDg1NkJEQTUzREY0RDk3RkFCMDU5QjA2NTdFODE1OTIxQUNCMTZF
-MUFCNkNDNzJGQkFGQjkyOTBBMUVENDMyQTMyCgpDRUY3RDhDQTE5Mzg1ODI3ODVEMTJDOUQ5
-QjEwOERDNTY0QTlGODBCOEM3NUI1QjAyQTFFMUM5QzVCNzkzNTI2Q0JCQUI5MDQyRjQ3OUQK
-CkFCMUQ5RUU5QzE4MTg0NjkyQzgxQUZFMkNERUYyNkNBNDE4ODAwNDc0RTZCNzQyQkI0NUNG
-MDJBQkNEODZDNTJCRTEwQzc3N0RGRjk4MQoKNDY0RDYyNEE3QjZFNDU1RjZGOEQ1QjdGODRG
-QUJFMjg4REUzRkM0Q0U0QTIzNzY2RjNENzcxNDYzQUIxRTU1NUYyRTFFQ0I2MUI2QTJDCgo5
-ODdCNDNDNTNCNjM2REQ0NjZCNTdFRkFEMDk4MTFDNzI4RUQzMTNCOTUwNzg5QjI2MkExN0VB
-OTMyQTc0NUVGNDNBOEVGREExNkQwNUUKCjlCRTQ5RDNCMDVEN0VFNjMwNDM0NjQ1QUQyNDVC
-QkI1NjAwQjhBQUNFMzI0MUYzNzA2QTNENUI5RUZGMEE3OTNDNTZBODY1MEVDNENDMgoKNTVF
-NEEwMDEzNTZCRjcyODEwM0Y1OTg5MDU0MERCOUIzRjJDQUNGNzg4NDk1RjYzQkFGMUQzNkI0
-RkUxMEI4NjI4N0YyMTM2OTVFNDhECgo1QkUyMEVFNzAyNTIyMkM4QUVFNEY1QTE3RDc2MzMy
-MzI0NjA2MjFGN0YzOTVBMjI1RDk5NEFGRjhEMDZDODM1MUZDODNGMEM3RkJGRUUKCjMyMzUy
-QzFBM0UzNTY1MUQyMTk3MTMwMTlDQkZGNzhFQkMzQjE0QzVDM0UyNTY5NUJDNDQ1ODIwMDhG
-QzA1M0Y2RTdGQTgzNTlFODU1NAoKQTdDNEVBOTA2MzIyNTkzMDJFQ0ZCOUI1RjFGOTcyMUEz
-N0VERTlCNkFDRTc4QkQ3QzY4QzczQTk2MDM0NkQ2MDhDRkY3MTUyNjgxRURBCgo4MTY1NjU0
-MUFENEVGNjRCNEI4OEZCRTk4MTA2QUZGNkYyMDUxQTg3MUY3QUFDNTMzN0E4QUEyQTE2RjU5
-QjEwNDQ3RUFERDA4NEZCMDMKCkMzNkU1RjBBNDc4MUU0RDgzNDAyOTQ0NzE0RjE3NkZDOTQy
-MEUyMUVGM0EyOEZFNjVDQzlDQUNBRTEyODQwMUJBQjRFMzMyMkQ2MzAxQQoKMThGRUM1OTVD
-MDVCQkY1QzQ0QzY1RDAyN0ZDMzY5OEY2NkEwN0E1Njc5MzcxMjNENTlGMTZCOTI5MEI3MEI4
-MzhGQkQ0QzZEMTJDNDYwCgo2OTMwOTg4MURERTUwREUwMjI0RjEwMjMxQTBGQkJDMTlGNTdF
-N0I2QjI4ODYyMkY0MDY3NkQ1M0Y0REFFMjdDNkUzMEREMzE3NTlBMzIKCkVDMDMxNTg3NURC
-Nzc5NDg2QzlCNEY3MzM2NTE2QzUyQzUzN0Y2RjI1OTUwREM2NzFBRjNDNzQ5RTIzNTdBNDhF
-OTlEMDMyREFDOUY5MAoKMjVCMTYyRDY3MkEwMTkwODg0MkIyOEMyQTlFOEZCMTNCQzU0MTFD
-QjEzNzVBM0IyNTg3MUU3NzM3QzJCMUZFRTRENDM5NDlEQjE1NjdECgpFMkFBRTQ0QzE1MDU4
-NzE2OTAwNjIzNTgwODgyOTRFNDkyOUQ1NTI4NDdBNkE5NEEwNzVCN0QwQjg5RDdEQkE2NDVE
-MjZCODZGN0Y3RjYKCjQwRDdBRTRCNDc5NTZERDVBQTA1NERFMTk0QTU3NTZCOTUxMjJGMTgy
-RDFEMDI1MDRCRURCRUUwQUNFREFGQ0EwREFEODQwOTI1ODJGQQoKMDYwM0YwMjUyNDAzNzVC
-MTFFOEMyNTJBNTQxN0ZBMUFBNEM5NkREMUM0QTM2OUMyRTU5NEIyMDg5QTNFRkI5RDkzNjIy
-NERFMjVBNDIxCgo1ODg3MThFNjE3N0M4RTMyMDY3OUVBMUM2MzlBQkQzRTRCQjY1M0RDMTdB
-RUU1MjY0RTk5MUJGRjYzNzY5QTdDMDdFRUY2QjBFNkMxQTcKCjM3MUI4ODlCOEJERDE0REE0
-M0VFQjI1MkZDRDgyNTU1NzUyQzI1RERFOTJERUExMUUzMTAwQzhCQkIwRTJEOEQzOEMyOUU3
-RUQ0MjMzOAoKOTgxMUMyMUU0QkQxNjJGRDc1QUIxQTBFNUE1NzkzNTJDRkRFOUNDOEZDRDNB
-NENDMkI1QzREODRDQjVBNkUyRTUyQTUyQTNEOEVGNDQ1CgozN0M2RjgxMjY5NERBNTExOUNF
-OUI3OEEyQzVGMTI0NTRCMUJBOEFENkJFNUQyMDg4OTA2QzNBMTFBNENBODBCMjEyMDQzNEU5
-MkI1MjYKCjE3M0QwN0M1MzBFQUZGNjFBMjcxMkY3QkNFMzYxODE5N0I4QjYxNzVDRUFFOTMx
-ODZCNzMwOENBQTkwQkQyMDA1NEQ5RjQ4RDEzQjQwRgoKMkNCODFBMDhEMjAyMTk1RjNCMDNF
-QjdFMTRBMTdGNTQxNUU0NEM5ODFENDdFNENFQkQ0NkZDMkNFODJCM0QwRjRFQkQyNDI5ODVB
-RTUxCgowQkI2RjNDMUE3MDJFODZFQ0QyNzhDQTMyMjU3NUQ3NUVDRDg2ODk4RjAxMzQ5OUQw
-QTdGQzFGQzEyN0E2QTY5NDYzQkM0NDA5N0Q0N0UKCjhBQkM1MEVEMzZFNEVGRUNCNkU1NTUz
-QzM1Q0I2Q0Y2QkI0Nzc5Q0YyMkY1RjY5NzBGMTVGNTQxNTlGRTVCQUQ3RDU3QjVERDVCNUJB
-MgoKQjJFMjUwNjlFRTc3QjA2OTc3QkVGRjE4RDIxNTk0RTZERERFMkQ0NEM3REYxMkE4MDEy
-MUZCOUEyM0JGQTE2RjRBN0VDN0FDMkIyQUE2CgpEQkM3NTE1RTE4Q0UzOUJBQkMwNEFDQjFD
-QjhDMEEwMUEzQUYxNjkxODFDNDdBQUNBQTBGMEQ4MDNFRTRDNDBGRjBDMEZBMTA5NjMxMDIK
-CjMzMEYwQkEwNTZERUVBMDJBMjQwNTY4RDhERkMzRjAxREJDNDJEQTJBQUQxN0NDOUE1RjFE
-RjEyREEzM0JGNUNBRjhCMjJCRDUyMURFMgoKRUEyQjgzMTEzNTQxN0U4MDQxMkIyNDQ2NDRC
-MEU2REE0MEREM0U1QzJBMjgzQTc1OTUwRjY4NjE2NzcxOUVBNjlBRTFEQkIwMEQ3MzU2CgpG
-QUYzMzEwRDI0MDY2RDQ5NDFFRjcwNjg2REM4NTlDRDUzM0JFQUZFOUQ1QkI0RTQ3MEYzOEIw
-OTEwNEZENkI2M0ExQkM2MUNGQjI3QjYKCjcxMEVGMDkyREVBQzc4MzEzMjQ5QkY2NjYwOERC
-NTA3RjA4RDhCOUNCNTVCQkVFMUNBRjc5QzgzRDYxNjY0ODE2M0Q1NkRGNjM3RTUwNgoKRDA2
-Q0I0NUNCNzBDREFCOTBDRDg3RkVEOTM0RTBBRUFEQzhDNTZCNzBDNjg3QjQ0QzMwQjg0Mzc2
-QTAyQzA0ODcwRTA2OTBGN0Y0M0M5Cgo2NTM2MzI0MDkyQzdGNENGN0I2NDk5MEVBNEM1REI0
-NTZGREQ3MzQ2RkNGNTUxMjFBNTI2NUE0QjMxNjlGRDVEOEFEQzE0QTE3NUY3NUUKCkY4RTg2
-REFGNzBGQzRGMUU3QTAzMTgxQURDNkYwRjlDREU0MkREMkI0QTg1M0U4MUU5QTQwRTE3QUU4
-QjBCOTVGQzYwRTYzNUM3QjQ2MAoKNDc3QjU4MkU3RjQ1QjAwRDc4QTQ3MDM0MTRBNUFCMkEz
-MzQ1NkRBQjcyNDc1MTNDQUNDMTM3MEEwMkQzRTBCMUJCREY1OTkxMzg1RkEyCgo5RTAzRjdD
-QTIxREMxOERBRjYxMkZDQUZBOEUzNURCMzY2Mzg1MDE4MUUwNDY5NTQ5Mzg3MTVCMjRDNEYz
-RjU2OTQ0MkI1ODE0RjIyQkUKCjg5QzYwRDkxMjQwOEQ1MDUxRkFCOEM1NzcyMkZGNjk0MkQw
-NDVBMkQ2MkIyQTY5Njg2N0RFRjM5MTVFRTE5NzM1NjFFOEVEMTY1NEI0OQoKM0U5OUIyNzc1
-NjA1MDY2QjM2QkQxNTZBMTM0N0UwNkIzMERCMTI5MjE0QkVCRkVFRDg4MEMwQjU4MjkwQzVG
-NjI5NUQyNDNFQzQ2QzZFCgoxMjJGNkUyRUVGNEM3REI1QUQ5RUZBNDkzQ0ZCMDExNzNDOEM5
-MkE3NkE1RjkwMERGMDIwMzAzMkM0OTAyMDhFRTVFOEMwMDg4NzA0QTYKCkJDMUQ2OUI0Q0Qy
-RkUxMjJGRDhERTU3OTgwMUIxMTBDNzZGRDhGQUM4OEMyNDU1OEIxMjdCQjkwNzQzRERFNzFG
-REU5N0IxREFDN0I5NgoKNEM0RTVERDhFQUQ5RjBFOTlENDUxRUQ5MkI0RERERjhCNzY2NDM3
-MjdGOEQwMTFGM0U1MjdBMTZBNzAzQ0Q4QTU5N0YxODY4NUFFMDBDCgpENDQ5NDRBNzdCNjlE
-MDkyQjNBNjFFQzk0MEREOEY2NEMxODUwQUY3QzhEMTdCNjkwMjM5NzA3MDAwQkExQTBDMEMx
-RDIzNjQ4ODM4QTIKCjFDMEJGRjkyNDBFQkE2REI1ODMyMjE0QUNDOENGMDIyQkFEMzA1RjY1
-OTRBOUM1QjdGQkZDMzg4MTk1OEExNzBCMDI2Nzg3MEU0QjgzMQoKRjY4OTUxQkI5OTUyRjc5
-MTA3QkNERjI0QkE0QjQxRUUyRkMzMUMwN0U0QTRBNzM0MEIzNkIxQ0QxMjE3ODlENjMzQUE5
-NTg1NjNCODBGCgpBNkNCNTZGMTFFQUM1QjQ2ODgzOUU5NTY2NkE5NkI3REY5RDNFQjE2RjU2
-RDY5QkQzREQ2REM2RDM0NDU4QjNENTZENTVFRTlCQjJFNTIKCkVCMzU3ODg3REIyQjhDMTJE
-MDY0RUYzMUUyQjUzRUM0OEE0OTY0RkVGMDBEREYwQ0IyNkU2QjJGRkE1RjU4NjY2NDlCQzM0
-MTVDMEU2NQoKMTBDMDk4MTQxNThDOEIzOTFCNzRBM0Q3QTA3RUY3Mzg1MTkzQkNCQUFGMjZF
-RDA4NjE5MUZGQjgzMjhCRjM1MTFCNENENTRDNjM2ODc3CgpBOTE2ODY2MTc0REYwMjYwODAx
-NjM5QjMwMjRCOUM5NjUxMTZCMkE2OERFQzhFMTcxQTYyMEFCNDcxRjY3MzM5MUEzMUIwODE2
-NjVGMjcKCjgyNkU5QUMyQTMzRENCMDU2NTEzNEU0MDdDNjE4NzE1RTE0NkNFQ0ZENThFQUY0
-MEQxNTc1QTgwNURGMTJCNzFBQzNEM0JCQTQ5MTNDQQoKRDg0MTg1QkI3RkRCNkEyRURDOTA0
-RUMwRkU4RDk1MjU1RkM1MDE3NEE1MDZERjkzOUZDMEZFOEM2REQ0RDI3NTY2QzMyNTY5RUEy
-MzM5Cgo1ODNENEZBQTgyRTAwRkY5REI4RDMyMzVEMDBBQzNDMUFDNTgzMDZEMkUwMkQ2NUQ1
-NERFRTZERjZFQ0YzMzcyNkUyNDQ0RjYwREJGQTMKCkRGRjRGNkZENEFFODgzNzZCNTA3RTcy
-MUM5RTlGRTAzMEQ3N0I5NUFCMjlDNkRCNzAzRkE0NTUxNUE0MjRCMjEyQUNGOUQ2NThEODQ4
-RAoKMTIwODgzREVFRTc4MzQ1QTM1Njc5QkY4MkQ3QzI2Mjk3MjU5RDg2OTdBMEMyMjFFMjZD
-NkVBQkYzQTcyN0Q5NTEyMjFDRUU3NERGREYxCgo1QTMzMzYwREVBMzZERDAwNjM1MTVCNURE
-MTdDMjA0RTBGNEQ0OTM1RkQwQkJFRTc3NURCRkZBRTIzMkFBMDE4QTA0QTVFNTlFQzYzREQK
-CkREMEI4QjExNDUwRkZGOURBMEQ0ODk0Nzc4ODc3RTBDNjNDODI0ODlEM0Y3Q0Y2N0I2MUVF
-MDhBNjExMzBGQjc3RTE1QjUwQjdFODdBNAoKMkY2RjgzN0Q1MEZBMzY2NTUyOERGOTE2QjE4
-N0IxMTk1NUIwNDI0QTc2MDNGMUY2REMxRTJCRjQxRUFDNkU5OEU5RjBGNUY0NDU4MEEwCgpB
-QjhDNjQ5RURENEY5NjBGNDc1OUNCQzI5OTVEQjBDMEUwN0E4Rjc3M0VGOUY1OEVBNTQ0Mjk3
-NzlCN0QwODVGQjQ2QTUxOUNBODlCQ0IKCjAzNDBBRjg0M0VDQjM3QTgyMDhCNzczNkFDMjc0
-ODExNzI3MjhDMzYwREIxN0NGRTgxRTM2MzU3OTRDQTkxOEMyQkJENjY1NEQyRDRCNwoKNDAw
-NjA1M0VFMTdEMUREN0VGQjhFQTg4MkNEMDU1QkI1RkM5QkFBQUVFNjMwODlBNkYyMEJGODhF
-RDlFQTY0M0FDMjdEQ0U5QkMxRjFBCgpCOUYxNUI0MDE3MkM3RTRDMDYwMkQxM0QxMzIxNkNG
-MEYyRDU3RTUxQjc1MUFGQ0Y4MTYwODM1RkQ0RTNEMjFBNTg4OTg0MDE0MjU5NjEKCjY5Mjcx
-RTJEQzk1RDcyRTZGMDc1RjQxM0M5NkRCN0REMTdCM0ZGMjYwODgwOUQwODc3RTIxMkE3RDFE
-MTdFNzRDQjRGRjQ4QjY1NjQ1QwoKQjgxMjZEMDVBRUJCRjFBNkVEQzcwNDc4N0NDRjU3RjlC
-N0NBQ0Q3NUY3NDhBNUE2QTFDNEVDODYzQ0VFQjJCQjFEOUE0QTIwN0I0RTBCCgo5MDEwNjBE
-MEUzQTk4Nzk5NzBBRTk4NDY0RDhENjdGOUI0RDdDNkU1ODJGMDMwQjhEOEQ2MkUxNUZEREJC
-QTI1Q0NBOEE5RUZCQzAyRUYKCkMzMDRDQUVFOTAyNjcwODE5NDYzRENCMDQxNEIzRDE4NUFB
-NkREMzcwQjgxQ0E5MTQ1Qzc1QUQ0RjdBNDc0MTFGMkJEMENBMTUwNzQ4OAoKMTE3ODY4NDU4
-QzA4MDIwMTAwNzhDQjRFQzJCRTAzMDhDOURDMjJBRUY1QjJFOTI5NEVDMDBCQjU1Njg5MTYx
-NjREQTE4Q0U2OUQxNzBGCgpBMzY0MUQyOUQwREZEMDhCNUFGNkUxRjE5NTFDRDkyNTdDMDY5
-OUIzRkMxQjZDQzE5NDIyRjQzM0NFQkNDN0NDMUUwRDMwQ0NBMUM2RjIKCkQzRkZCMTM4NEY1
-QTFEMzI2ODFBNURERjQ5OTMzNjI5RjdCMDQ0RTQ1REQ3NDhERTg1MDkyNTdFNjg4RjFDQjYz
-N0ZCNzY2MjY5Q0JGRQoKRTIwNkIyQzE1NjBDQzNBODQ0NzBDRENFOEZBMEM3NDI3NERGNTA5
-NEQ0MTNENUE1MUQxQUJERkFBNjZEOUM5REQ2MjdENzJDMjlBOUQyCgpCMEEzNTUyNzg5Nzc0
-MTEwNDgxRkYzRjdFMENCNTgzQzdBQzU2MzRGMDkyMkM1M0ZEODE2MDE0OTdFOTZCODEwMDhE
-OUM1QjQ5RjRFRDQKCjAxRkMyQ0RDOTc0NEMyRTMxOTQxQkIxREEzNEY2RjZDQjYzREMyQzIz
-QTRCRTE3RDNEMTNENDEzMTg4QTJBRjc3MTQzMDIxRDM3NkU2MQoKN0VCMUIyRDMwQ0Y1QTFD
-MkM3NkVFREVCRUI3MTBDMEM0MTU4OTU4QzNEMkJBMjg5ODk1Rjc5RTNERDQ1QjAzMEQ5MEIx
-MjY0MDk2MUI1CgowMzBEMUZGQzYyMUI1NEE4NjkzNDkzQjVGQkREMTkwNTEzMkVEMjZGOTc5
-OTM3MEE2N0IwRDkwRjdGOURGQjA4MEUxNDFGNjQzOTM2Q0YKCkRBODEwRUU4NTIwMTcwNEEx
-NUI5MkM0NDE5RDY1QzBCRDFBREFDNEYxNTc5NThENTJCNTI4QTg0QkNDNjlGNTdBMjUxMjNB
-MDREMjIwMgoKMzE5MDY3QjhCOEU4MEZFQTgwRERCQTlGQzA3NUFFREM0ODBFODIwOTExMUY5
-NDQ0NzQyQTg3MDdGNTc2QTdDN0ExRERCODk0QTMzODEzCgpDMkQ2RkZBN0IwOEUyRERDMTMw
-OUVFMjBCMUQ4MEJDMzg3RjlERjFCQjc4NkJGNkU4MjY0MEQ3NzVGMDg0QUJDQjg2QzA3REYx
-NTQxM0EKCjA0NzVGMjZGRjYyOTYwQUREMUI5NEYyMEZGQjJBOTA4QUFFMkM3OUFDNEVDMzg5
-OTQyNTg1NUQ4MDI2MkIyNzU4RTc2QTQ0ODhEM0E0NwoKMDA1OENFN0JCQkU3Qzk5MTE4MzQ5
-OUVCRDJDNTUwQzI5MThFREFCNUJEOUQ0MzI3M0M0NEREMTkyMDI0RjczNDY4QkEwRUFEMjgy
-NUQ0Cgo5OUVGRjRBOUIxQzJGQzY0QUUyMjIyQTE3MTE2QzFGOENENjE2MjJCMDhCRDU3MzAz
-NkM0ODk1NkMzNTEzQTZBM0I5RjA2NjkxNTM3OEMKCjJBNDFCMzE2MzY4OTk1Mjg0N0FEQjdG
-NjI0MzAzNzg1RTlGNjFBREQ3QzJFNjQ3RDJBMTcxQTVBMDQ3MUU3NkM5QzZERTQ5MDlCMDE1
-RQoKM0JERkM5ODM2REI4ODQ0OTJGNUM5Q0Q3N0Y1RTI5REJCQzgwRjVCODM2Njg0RTgyOTAw
-RkFDQzdBMkNDMUQyMEU2RkVFNjBCRUVBRTkzCgpEQjk4REUyMzhCNjZEMTNCREM4NTg1OTA2
-NTRGOTYwRkQ2QUFBNzc5RjAwREI3NzM2QzdGMTg4MDhGRkMxNjdBRTMyNDIxRkI5NzVFOTQK
-CjdGQzQ5QTIzMjBERENDNEI2ODQxRjU0RUEyMjhBNTgzODNENDIwQTI1QzIxRTg1Qzk5NjY0
-QzhCQjIwQUFDNjYzOTBCQTQ2QjQ5QkE3QwoKNjgzNEU4RjE4Q0IzMUZEQjkyRkNBQ0YxMUZG
-MUE5QzUzRjA2RDY5OTJCMDZCRjBDMDFEQTIwODJFNkVBNzA1MjI0ODQxQTdDNkFEMDJCCgow
-MTVDMkFBRDE5QzhCQkYxQUUyNTA2QjA4RDU3Q0ZCQzBCMjkxNDAyQkRBNUM5NTY5M0FENjU5
-MDJGOTZCOTEwRDQ2NUNCOTM1Q0NBRkEKCkQ3MzFDOUYzMEI0MEVDNTlBRjEyNDQ2QzE4MDBD
-ODBBQzYwRjRENENFNjhCODA0NEI1NzI1NzI3QjMwODlBQkJDNkU5NjMxQTRCQTVGNgoKNTg5
-ODkxQTIwODVDNzRFMzFBNEEyQzRGMDU3MzgwMDE2RjUwODNBRkFCNkQwODlFNEVEQTE3NzA0
-NUJGREYxNjgyRTg0OEJFRUYyRDFBCgpGRDRGOEY5REY2ODMxRkNBMjJDRDdDNEEzNTFDRkU3
-NzA2MzVEQTIyRkQxMUIzMzI2RkY5QUE3OURFNzZFQUZFOTlCNjk5RkYxQzczQzcKCjEyRUJG
-RkMxRDg0QjAxNDI5MTRFMURGRTk5MDYwNUU3M0NFRTdEMEU4OEIwNDk4NjA0QzE3OTY2RkYy
-M0M5MjJGRTcwQzUyMjAzNjIwMAoKRjVCRUEwODFDREY4QkNBODU1OUNCMjJGMTA4REI1MjdB
-QjZBQkFFMUI0NTI5NjdFNTBGNzEyQ0NDQkQxMTI1MEM1NTgyNTc0MUY0NzY3CgowNDM0MTFF
-RjREMDJBMUIyNkU2MzNDQkIwOUUwREMzRTY4RkVBMzNBMjU3QzI2QkMwMjI3NjlGNzFGMjY2
-Nzc3NkE1Nzg4N0REQzA1QjAKCjY5QzE0MjRGOTA4RDhBRjg1OTY4MDU1NzM5RDBFNzY2REE5
-OTdCMkU1QzUzQjkwMjJDRkYwMUIwMDRFQjBGREQ1OUJENTlBMDMwRTZDOAoKMjkxRUU5RDc3
-MURBQkJENTVFRjc4QjZGMkM0NkI3N0E3REFGNDI5MDM3QjQ1NTM1ODY1QzdGMjE0N0Q2MDQ0
-OTFEMzk2NDdFNEZDQ0ExCgpCNTY2OEIxMDA2QjBDOEY2MjE0RDdFNUVCNTUxOUJFODQzOTI3
-QzNCRTRDM0MyMzZGMTAyQTFBMUVFOEI4MkU1REYzNEJDOEZGREFDREIKCjc5QjJEQjkxQTUy
-RkVFNDg5MkY3RjI0NTJCOTAzREQ2MzYxRUNCQUIwNzEzOEYzNTY5NTlCODMyODE5Qzg4QUJF
-OUE2Qjk5OUJBREEyRQoKMUEzQzMyQjA0RjczMUU3NUM3Mjc0NzJFMjMxQjFCRDc5RTA0MEJE
-QjcyMTc1MzI3MjUwOTA1NTcwRkNEOUQ5RDcxRDYyN0Q3OTE0QUQ0CgpGQTUzNkFBNjQ2MUQ1
-RjUxMkUyRTFFQjc0NzVBRjZBODNDMTA5MzA1NjhERjQ4QkYyNzk0NDkwQjFGRDcyNjk0NzNF
-OEU1NkRCODEyMTkKCjUxMjdFRDc4RTUwMEFCQ0E5RDI2MDNFQjQ2MzI0OEIxQjNGNkVFN0Uw
-Qzg3MDA4Mzg0OUFDN0Q4M0I4NDhFODE5MTc1QzQwNzVCREY1MQoKNDA5MDE3NjFFOTUxRUFE
-MTlEQkUyQUI0OTFBRDlFQjVEMTI0QTIwQ0JBQkJFQ0YwNUZBQzdBRDYwOEExQUNCQ0U3RkQx
-Qzg4NDhFNjE0CgpGQzk4OUEzMUQwMDEwRUMzQTExQ0Q2Nzk3RUVFOTQxRDA1NDZFMEE1OTRB
-QUQ5NTczOEVBMEJEMEJEN0Y1NUNEQzBCRjhEQTA4MkMwRTgKCkNFRjM0OTk3MUQxM0NDRTky
-NDZCNzRCNkM1NTI0NzlCMUU1MUM3QjMwOUFDMDI1ODk3RTkxMEIwMDc0NkMxMzA3QkUyQzUz
-MTIxN0UwRQoKNzZDRThBNDcwNzJEMDhDREExMTZCNjVFNzU2ODE1NEJCRDJENjdGNTcyM0Mx
-ODdGRDQ2RTU0MTk3N0FCQkE2NjJCQjA4MDc5RDkzQkVECgo3OEU5MjRDMjQ4MkIzOTg2MUZC
-RTFBRDMzOERERjEzNjQ3MzZCNjAzMERCMkZGRjFFODk2NURENzYzMTI3NkQ1MTZBOTZEREZG
-Qzg5REQKCjJEMzQ4MDQyMkFGQjMxRTlBQjgxRUYxNTU3QUM1QzcyMzA1MTA5NkM0MUVBN0Q0
-MEJDN0ExQTI5MDJFNzgyREY4ODcyREUyRjI3Q0MzMAoKMEM2NDVENEVGODg2NzE2RjI5OTk4
-MTVDMUFGNjM3MkMzNTlCRjg0QzIwOUM0MkI5MzkxODVDNkNCRTE0NTEwQjlEQzAyOTk3MEJG
-REFECgpCRkM3RTJGNEZCMEY1MDYwRDY5Q0ZCMEZGNzEwMjY5NDlCQ0MxNUZDMTc5QTREQzlC
-Q0E2NENDNDQwN0I2OTRFREJDNTQ3MjAzMjNFNEEKCjI3MUFEMzg4NTI5QjA3Q0YyM0IyMTg4
-NkRFN0Q0Q0U3MjFCREQxMUMxOEM4Q0QzRDFENTI2MTk1NDg0MEUyREVGODcyRjBDNzExQ0JB
-RQoKNTE1NTk1N0JEMkU5QzRGOTI3QjdFOEZDMTlCMDQ2MDhGRDQxMUMxMzAxRjQ2MDkyQTYy
-RjNGMEE1MjU0MzZEOTkxOEFEOUM0N0E3NjcxCgpGNDBBQTMxODk2QzZERTgyN0RDMTJGQjdF
-N0M3QjVBOUVBRjkzMUJFQkYxQTRBQTRGMjhGOTI4N0MxNkFCNzgwODVBNDRDNTYzMzg4NjMK
-CjkyQTkzNjBDMTg4MzgzRTMzRkY1OThDQkNFMzQ3MDNBQTREQjg1QjYxQjRCNzlENTM4N0Q1
-NTc2MTI4QjIyOTQ3OTc2NjE3QjY2RkE5RQoKQzNEODBFOEEwRUZFMjU3MEZCNDYwMDYwQkRG
-QkZEODFGRkE4QTg5ODZGNTZEMjY2NTJBQjI5QUQ2RUIyQTQ4ODFGQzQ4QjAyMzEyMkM5Cgoy
-MkRBRkE2NTMzNzExMEM3NjQ5MENFM0Y0MUJBNEFBMDVGNjNDNkZDQjMxQUE1QzM5OUVEMDFG
-RkYzOTQ4QUI2OTBCRjAxQTNBMTk4MUMKCkIxMjBERDVCRDFDNDVEMkM1NzI5NzY4OUFFRTQ4
-MDY4NUJGMjNGRURCRjY2NTE3OEExQkI1NEY5QTVEQTIzRjcyMzE0RUM5RkQwQzY5NwoKN0ND
-OTYwNzg0NjFFNDg2MjVDODdBMjlEMEQxNDRFMjdBMUQ0RDc2RTE4MDI0RDBGNkU5MERCQ0VD
-NEExM0I3REI3NUE4RTk1RTcxNURGCgozRDczMDA3MDcxRkIzMEZFRTlGNTUyRDk2OEJFQTlC
-OEZCODIyQ0NENkREMzM4M0NBOUExRTZGRTgwODhDMERDRUE5QTVEMzhDMDQxOEUKCjg4Njgx
-MTVBMkJGRTZEMDU1NTgwQUZFRkRGNzBENTEyQzg0ODhDM0MxMzg5RjI2QURGQzc2NzMzMDQ1
-MUY3N0QyMDYyN0Y5NTYzRTkxOQoKRTUxODJFRDJDOEUwN0RBNTQwRUUyQzY5MjVEMUU1QzZB
-RTVEMTBGQUE4NERGRkU5MEFEOEI4ODJGREQ0MzFEREZFMzZCNTEzNjE0NTQzCgoxOEZCNDdD
-MzlGQUNBNEQ2NjE3ODU5MjBBOEJCRUJCRDcyREJCQ0FBQzFCNjZDOTQ0QUVEQTAxOEJGRjhG
-MTVDRDU5MTdCRTRBMUM3OTkKCkQ3Rjk2QzY5QjVCNzlGMTFBQTM2QUNGQjlBMzk2MzlENzUw
-NkUxODgwMEE4NjEyRDFEMkM5MThGM0NENEI5NzdDMUZDRjE3NzE5MThDQQoKN0NFNEU1NTBB
-MjREQzBGOUE0NTk3MUIyN0FGMkQ2OEE4NjQxQTRBMjA5QjRGRDcyODU3NzEwQkU2MDY2QjVE
-QUIyMzE0NkFDODY4MDQzCgpBMDRFODE1MkM1MUNCMEZGN0RGRTQxNTc2Q0ZCNDI5OThFNjNG
-NzkzQTMzRjFCNjEyODBCQjYxNTk3QzBFM0IxNzZERUQyOTk5MTlFNzIKCkY2RjNGQTRDMTM4
-RDIwRTQwQjkxOTg4RUY5REZBRjMwNzA2NEM5QzMwN0M5RjRGMkU5QUE0RDUyMTU0RTdCREQ2
-MTk2OTg3QzZGNkU4OAoKMDU0MzgwMjM0NzQyN0ZBRDlFQUYxQzg3OTkyOEE1NDA0REYyNDBF
-ODY1MzgzREMwMDc1ODFEQzI5QjI4RkMxOEYxRTZCQTg0MENCMTlGCgpFNjM5QzY3MDcwQTEx
-MEIwN0RCNjUxOUE1QTA3MjlBN0RFODJBM0NEREIwMzc2NUUxQTdDODE3RUM2MjIyNUE3RDI4
-NTAxMDFFMDdEMjIKCjlDN0NCQ0UwQjQ2QTJCMzM1Q0E5MDM3MkRBRENFRTk4NEJENzVCMENF
-RjEzRjFDRjcyMzdFMTU5MjVDN0I1NEIyNjEyMzZFMjYyMDg3NAoKQUNFRkI1OTc4QzAwRTA2
-NkEwM0E1NzgxNkE3M0Q4RjU1OUZCRTAwNkE5NDRFMEYwMjZEOENDRjMxOTg2NjY5M0I0QTYy
-RkY0ODEwQTJGCgpEMjlBQzM1RjQyOUJBMDQzOEE3NDcyREE3NjUxMDkzN0Y3OTlCNDJEOTYy
-RjNGMTk2RTE1QjIzMzU5OTZBOTIzMDRDNEJEREY3MTI3RUEKCjJGMDlGQjdDNzc5NTI1MDI5
-QjBFQzg2Rjg2QzdFNDE1QjgxRDUwNDI3MTRGREZCRDI0NTdGREJENUFDNkMxRDQzODJENTkz
-NTg2RTJFMgoKQUU5NjYwNTI5REQwRkY3MkQyQzc3QTlFNEI3NjY4OUY4RUU1QzlCQTcyRDMw
-MDI3MUI4Q0IyQkJCMzZGMTBGNTczMDkzNDRDMzExNEQyCgozMTc2MkZDNjhCQUE1QzQ4MkIz
-MzhGODQ3RTRFRjYzRjUwQTlBNzFCQkREODIxNEM2N0E5RkRDRDFDREU3MkNGMDcwMzc2RDgw
-QjBCRkMKCkJFRkJBOUM5MzA5NDJEMzVFODRDQTI4RUEyODU3QURCQTIxNkQ4OTc3NUU0NUZG
-QjQ3QUMyOUI0MTEzOENBMDNCRDc5MTIyQTc4Qjk5MQoKNDMxNzE0NDA0MjIzQjBEMDFFRThG
-MTM4MDBDODM0NkFGRkZEODYzMUQ0Q0IxQTZBRjQ2NTNBNjg4MTlGQzI1NDU1OTFEOENCQTg1
-RTNFCgo2MjBDODE2Rjg5QjhBQTU0MzkyMzEzOTg1OUUwRENGMDgzMEMwMkJFQTIzNkU2QUM0
-MDA2OUNENEJDQ0VEODg4NUNEQTY4REJEQjkwNzEKCkNFNjFDNjE3MThGRTMxODA5MEIwQzJE
-NkNEMTA1OENGOUY5QTA2QjgxRDExNDIxNUYxNUQzNDExMzI3QkQ0OEFBODQ2RjE4RTMzRDlB
-RAoKMTQyNUNBODQ4N0FGQjMzQkY5MDBCNEFCOEQ5REFFNTQ1QTRFRjIwM0Y0ODQ0RjcwMDFD
-MDRFQjNFNUJCRjY2ODgyN0EyRDEyQkU0MjA5CgozMUNERTRFODFBM0FFMDUwMUVFNEU4RTdE
-QTExNkRCNjQ0MTE1MkZGODlGMDQ1MTUwRDNFRTc5MjlEODhFMzQ1MTAyRUE3RjIwRTcxNEEK
-CjA0MDVCNDE1OTcyQjE2NTBENUM5MjAyMDY2QzgxMzcwM0QyMDI0NjlGRDBFRDM0ODM4NzVE
-MkNEOTU1RTc1QTg5Mjk5MUU0NDZGMTQxOAoKNTU1ODQzMUEwNzZGRjQ0MEY0MENCNTlEMEE5
-RUU0MDY4N0FFRTFDQzczMzZCOUQ3QjlBQkYxNzJFNERDODYzRjE1OTFENEQyNDI5MEFBCgo4
-NTgwQUYzQTNFRDVCN0U3OUQ4RkY2REFCNjgxMUIxMDI3RkRBODg3NDY5ODc3MzA0RUYxODAx
-RTgxODZBRjk4OEQwQ0I4OTJFRkY3RjAKCjZBNTQ4RkY2RDVBNUEzODJGRkMxQTMzOENGRDYy
-REVDMUYzODlBMDFFMjZEMEYwNTI2QUIyQjE1QTcyNTJGMUVCMDNDMTg4RDBGRTczQgoKNkY0
-NTI0QjRGNDM3ODQwNzA0MDQwQUFFQTM4MTU0NTI2MDM5RUZEQjY1MTMxM0VGRUYxNjgyRkQ4
-NDRENkI4MTI2ODQ0RkQ2QTE5NTg3CgpBMTM0NTUyODMzRjdBQTdFMzY4MUVFRkZDMjU4OTY3
-N0E0MzYzRThFOTU0NjlGM0M2NjU2RTc3Q0Y2OTU3MkQzNDA4RTlCNkQ4NDM2RjMKCkNEQjky
-NkEzQTU3RUE1NDI3NjA1MEM0QjNDRDg5NjQ2Nzg2NjdBQzA3ODVDOUU5MDA5OTExMTc2MjdE
-NDM1RkYwMzhGNzk5REUwODlFNgoKREYyOEUyQTQwOTgwRDdGNzI1NkZBQTI5MjhFQkExMkE4
-RDZGREQ4MDU1MUIwQ0YzQUE0NDJEODQwQTExQzk1MUI0NDRFNTE5QzE5RjJGCgpEMEYxREU0
-NzJGQUMwRTJFQTBCQTg5OUEzRTcwMzEzRDI4QjQ4QTZBQzM2MkY5QzdFQTVENUFDRjVEMDQz
-NzZERTZDODg0MzZCNzYwRkUKCjhCRjY5NEVDREQ2QzM2NkFDMzFEMzQ0NjkwMDBGQkYzMUJB
-RTlDMTRGQjIwMzBGMTVBMjk2NUI5MTcwMjE3ODBFQzQ2OUYwMEIwODI4QgoKRTJGQjk4RTU0
-NUIyRTQzMDkyMUI4NTUwMzZDQ0ZFQzZFQzlCNEZGMEVCQjY5QTkxNDk1MzgzMTU0QUI4NEYz
-MzFBMzIxM0JERDk1MTU4CgoyMEJFREVGRjQ5NzVFMDc2QUE4QkQ5QTQ4OTlCNUJFN0FEQjI3
-MUMxNzgyM0IxODQ4OEQ3QjM4N0IxQUZDNzEwNkM4N0QyMTlEREY5NkEKCkU4NjZGMUIwNjc2
-MDc2NUJCMkFGREREOTUyRkUwQkNEQkI2MzE4MzQ1RjhEQUQxQTc4MkFBNTM2RjcxNDhBREMy
-RDNCRjVFRjZDNkE2MgoKOURBQzVBNDlCRjE4RjlGMjFFOUFEN0RFQkQyMzdDMjI5Mjg2RkUy
-MzcwNTYwMTM5NTY5MzM4RDQ1NUQ4RDNBOTEzRDMyOUU4MDcyRTYzCgpBMDc2NjAxNzZGQkVG
-RUI5RDg4RkMxQzJEOUQ3NkM1MUNEMzA3ODFFNEVFNTlGOEJGNEY0MzZEOUFBMTNBMzlDRUQz
-ODdDQjU3MzI0RDcKCjI2QUJEQUVCMzBEQjFCMUUxNDc2OUY1RjREQzcyQURDOEJENzU3OTA2
-RkM0NDNCRjZERkREREYyQ0RBODY2NDAyMzYzREZEOUJFOEI4OAoKQTY4REEzRDBFMEIzQkFB
-NDA0QTk3RjU1MUEwQjZDOTBEMzQ5RkI5RjE3REU5NTVGRjVGQ0Y4MDdDMzg4OUZFMTBEQ0Ex
-MUFDNzNFODU1CgpCN0Q5MkEyNkU2NEJFMTk3MUFCOTM1ODJGN0Y1M0YxQzdCMUZFNDAxRDdG
-MEVCMEVCMTIxMjY2Q0ZGNUUyM0IzMzMyRDhCNDEwMkE0Q0UKCkYzMDYzNEM3MTA3RkY5Nzgw
-QThCRkVGRUIxM0ZFNUVBNzhEOEU1QzlFMkU4OEUyMjM1M0QyNEZDNDU4ODlDQTEyRkZBMTRE
-MzcwOTAwRgoKMjU3QjE0RTc2MUQ0OUM3NEZDMTlCOTc0MTIxMjBFNEJFNEVBRDA5NDM5OEU5
-MkJGMURFRjREMzRFMURDMjU4QTg1QkM2MjM1NDdCODcxCgowNEZCQjAyRjQwMjIwNDAyNEE2
-NkJGNjZFREE0REI1RjY2N0ZERkQ3QzBDQjZGRkQ3OTkyODhEQjExMEVBMUZFN0Q3QzNDRjNB
-MTMwQjQKCjI5RDI0NTBEODc1MDdFNjhDNjhGMkYxMzBBMzQxNEI0NDc4QUZCMUVENkJENTVB
-RjY2RUM1M0U2MjdCMEYyNzY0OUQ1QzVBQTU5QTc5MQoKOTJERTEzOUFBQzg5QTM3OEYwREEy
-MkEzMjhCQUVENTkxRDY2MDM1Qjk1OEIzMzk3MUI2N0Q3MzZCMTE5NzMyQTUyNDQ1NjJDRTkz
-MkFECgozNkVEOUM5QkY5QTA3NTZERDYzRTkwOTUyNzExNEQ1ODA2MTg3OTUwOEI5QzA0M0E3
-MDE4QUMzRjFCQ0ZEMDcwQzdDNkRCODc5Q0JDNUYKCjMwNUJDQjI0QzE2RjQzRDhFOUI3N0I1
-RDJBMEQzNzM3NTM2RTY0NTA0OUE2NEVENTU1Qzk5OTA5QUY4MEY2MEIyRjIzMDdFQzU4RUY5
-MQoKNDc5RTFDNDQ3QTU3RUZBNUFEMDY1MkY3OEY5NTJFNjUwOEE3NjhBODhGOERERUM4NTQ5
-ODY1QjkyNjZCNTREMDNBRkIxOTI5RjcxREQ1CgoxNzdEMDVEQkRCNDU1M0E4QzNFQkExMUYy
-ODREOUY2QzhBMjM1MzcyRjc1QzlDMDZBMTM1OTczMzk3OEFFNUY5NjUzRjAxNTc0MUU2NDgK
-CjI2RUI5MkY0QUU1OUQxMTQwNUE1OTk1NDQ3NUQ1NTlBQ0I4RDA5OENENEMwMjZBOTVENjc4
-QUZEODVBOUYyMDMxRjZEMjQyQTI4NTQ4NgoKMTM4NUNEMkJFRDU1QjZFNTQyNjFBRDNBOTVD
-NkFCNDYyNkZCQzVENkM0RjZBNjA5OTI5NzZENDA2RkVFQ0RCNzkyMjExQ0ExMzNDNDMzCgoy
-OEY4RDQzRkFGQUI5QTQ0ODlERDFFMUU4ODg0QjRCQTBCMjU4NjYwRkI4QjhCRUEyMThERTBB
-N0Q5RTVEQ0VBRThCQTFGRkEyMzYyNjgKCjdBRTQ2MzMwM0UxNkM2REJBRDNFMkZCREMwQzkw
-NEI4M0RCQTkxMzRCM0M3MkVDMUZDRjY4NTVDMDhFOTczRTAwQkE4RDM3RTg2NEVGMgoKMEI2
-NzQ4QTY2MjVDODU0MTE2QzNFMzJENUIyNEY1ODQ5NjNENUI0OTJGNjY2NkEyODREMTZBMkYz
-RTMyRTVENzc5MkRDQzFFNTYwNUI0CgpDREJFNEUwRDYyREZFODRCMzUxQjI0QTUwOUE1REM5
-RDFDMjEzMkI4MUM2ODIwOTZERjRFRDdDRTZBM0Q2REM1MTdDNkZFRTgxMDNEQTcKCjNCNUQ4
-NDFEMkI0QkJBQURDRDdEMTMxNkVBQzY4MDlGNzZCOTlGRTE2RUE5MjI3Mjc4MkFFMzkzMEYx
-QTAwNTIwNzhEOThBQTE3MzY3RQoKNzA0MUMzODNDNzMwRUUwODVENjA4OTE2NEFBREM0NjM3
-RDNDQzZBNjFGMjkyRTU4MURCMEQzN0I3RDEyMTRBOEYxMjg1MkZGQjYzNkQ3CgoyRjJGRDlF
-NkFCMkFFMUY5NjdFMkE3NTBBQzBBRDM2NEU2NDIwNzY2OUEyQkFFQkQxOTFFNDk0RDFCMDg3
-NDQ4RjZEQkQ4QjIyOTNBMjcKCkMxMTVFMzRERUVGM0RGNzlBRTFBQjMzMjAxRTBBRDY1M0FD
-QTcyQ0MwNkFEMTU1NzUzMTRERTRCNzYwMDlGNzYxQjhBMUM2Nzg4QTY3MgoKMkQyMERFNDYw
-MjY3NzIxMTdGNDIxNzFCNUQwOUU1NDE0QTU0RUE0NUQ3NjBERDNGRDQ3RkI1NDU4QTc4RTVG
-RkM4M0I1OUFFRTRGOEMyCgo0MTA2RTBENzZCNzE5RjdDMTI5NURDQkM3MUFENDZERUY3RTI0
-NzJCRTkyMjA0N0Q4QjYzM0QzODYxMDJCQ0JBNDk2NEE5MEE1MjQ3QzAKCkQyNENDQTI5OEQz
-OEEzQzUxM0QyNjBFRTQ4MjFCNTgzOTE5ODQyNTMzODVCQzYxNDI5NjU4RTMyOEQ4NkRDNjFC
-NUZFMDQ3NzA1QzhERQoKQzkzMTcwRjkyMzc2QkI0Q0U5NEI0QzkyQjhDRTYzOEZFQzE0MDgz
-MkRGRDg1ODM0MzBFRTM5MTM3MzQyQ0EwRjUyOTczN0E4RjlFMTg0CgoyNjRBRTJBMUUxNzIz
-NzdFOTMxQzZBOEMwMTQxRDM2RjY0NDYwMTFBOTcxNUQ0QjZCQkUxRERDQTUzRTNBQzcyQTcx
-RjYwRUQ4NkVDNkMKCkZEQTIyN0UwNTUzNDk5MUU3NkU5QUE0ODUyMkVBNDI2MUY0QTU2NzAy
-NzZDODA0OEE0QUI5NTAwNzE5RDkyRjA0MDgwRDMxOEIxNTZGRgoKRkMyMTZCQzFCRTAwQzhF
-MzE2MDc1MkJGNUIwMjlCQUE4NTc4MEM1MUM0Q0ExNjJDNzg0MEU3NDUwN0Q0MzNDQzlENzFD
-NjJCNENBRTE0CgpBM0FCNEFEQjI3MjlDNzUzOEIyRUNCRUM0RTY5QTFGNzc5MDNCQkM2OENG
-RUQwQkUwREVFOUM2OTBFN0NFNzRCNUJCOUMyN0E1RjExNUQKCkIxNzAxNUMzOUE4RTYwNDM1
-RTAwMDU2ODc5NzQ1QTQxNTUyRjk1RjdBNTQwRDUzNUEwMkYyOTA2MUFFNUQzMERERUI4RDMw
-RDlGQzJCRQoKQjA0Q0Q0OURGRDIzNjNDNEM3RkU4Mzg0RTkwRjk4QkE4QzI2MzgxRDlEMzQy
-ODAyOUNCQjk5MzNBQjQ3MUNFRjE4RjNGOEVFNTg1MzA5CgoyOTczMUVCMTAwOTA4QkJDMUYw
-NzRGMzk5QUEzOUNDRjVEMTJEQTM4Q0EzOEY0NjRDOTU4ODg3QzE1NUE0QTc3QTAwMkY5MTA5
-MEREQTIKCjAwQjgxNUFEMUUwMkMwM0Y0NDg0NDYyOEJENzAzRTJFMEQ2QUI1M0M4MTkzNzNB
-OTRBREZGRkE2NTc5MTYwRTY5QUQwRjFFQzEzMDkzMAoKMjJGMEI0RDJGNzEwQ0ZCMEY3MzRC
-MDFGNjI1RTQwN0Y5RjdFMEYxNDMxMzFDMTcxM0Q3NzAxNDQ2NjRFQTk4OUJFMEI5RUNDM0I5
-RkIxCgo0NUMxMDQzRjAyQjQ4MUQ4Q0FCQ0YyMURDMTM0NTUzRkM0QzFENDM1M0U3MTgwRUE0
-Q0IxRkNFQUJFRjc0RDZGRTVCQkVBQzdGMzBCMDgKCjFEODhFQjBBMDYyNjYyMkE1NTdERjZF
-ODYwRTU0NTM3QThGRTBEMkVEMEI5NzRCOTk0NDA2QUU1MkQ0N0U5NEZCOEUyOUVGNkIwMkRE
-OQoKNEEzN0RDNzcwREE4NTVBNTlCNzRCQUFFMTY4NUJBM0VBRTI0RkVGNTVCMDZBNjAzNkEz
-RDRGNTEwOUYxRUQ0QjU5QUE2MjE4NjI5QzFGCgo0NTUxNDU0Nzk2MTFBMkI5RkE4M0E3QUIx
-QzhBODBDNUJBRURFMzdFN0JFMTk1QzY4RTM2RkQxOEUyMEJFQzc4N0JCMTNCOEUxQzk4MDYK
-Cjc0N0Q4NUM2NEE0MjE4MTYzN0U4NkNBMjhGRjEzNUNFRDIyRTRENDUzNUNERTc0RTJBRDRD
-QTkzRjlBMzBFNzk0MEYyOERCNTlBQzFBNAoKMUY4Q0ExMkNCOTY1RTBCQjVDNDVBNUYxRDBB
-NURCQ0RBMjEwNDMzNzMzMzg0QTc1Q0JBOEVCOTNCQ0ZGMDVBRUUzNDQ0NTg3RkYzMUNGCgo2
-NDk1RkY4Q0FCNENFQ0ExNkZFQjBDODFFQjQ4NTcxRDMwMDQwQTkwQ0M0MjIwNDNCOEVBNzMy
-QTREQUZFNEU1NTIzNzQxNTMxMjRCNEUKCkIzRDM1QzU2RUU1QjRBMTQ2MTExQkJDNkQ5NjMw
-REIyQzlFMDREMjZFQkRBREI0NjEzOUMyNTkzMTlDN0M5QTc1MEZGMjk0NTEzNDY3NgoKODdE
-RTY4QkFCN0JBNkRFQ0EyMkZDQUYyRTVGMjA4NjdBOUMxN0FCM0UzRENBQzAzQThEQjg5NkQy
-QzAyNDNFOTU2NTI1Mjk4NzU1MThDCgpDRTA1MEE0OURFMzRGNTlGM0EzNDIyQzNDNkU0QTU3
-RkIzNDNBMDQ1ODg1OEM2QjY3NkY5MjA4NTdFQUJEOTk0MTkyNEM1NzEwQzY3NjgKCkM1QTAw
-ODFGQjhGNDdFOUJDOUVDQjcwMUJGMDk3RjAzM0M0QUFDM0UxOEIwMkVGOTIyMjg2N0QyNUZE
-QThGRDI5MUY5MzBEMTYzRjM0NAoKNUVFMzhCNDRGQURDMEU4MzBGOTM1NjBFMUJBNTJFQjlD
-RTlCMzc1RTlGMERGRDYwNjI3QkZDODM2OEJDMEI3QzRDNDQzRDhEOTE5MDdFCgo5RkRDRDA2
-NjZFRTZBOUQ5NjQyODA5MzE0NjUyRUZENEU1NzY5QTE2NEI1MERGRjg0ODZGMjA4OTAzQ0U0
-RjUxNzZDODZDMzY0MkRCNjAKCkFDM0ZBMkRFOUMxMDRFMzZCQjc2RDU2REE1OTNGQjc5NjAz
-NkMxN0EwNEE2NUYyQkU4QkI5QjM3MDU1RENENkY3OUUxOEFCMDBCRENCQQoKQUFGM0ZBOTVD
-NDlBODRBNjlFRjRDMTFENjA2NThDMzUyMDVEOTdEM0FDMzAwM0I2NTkyRUUzNjZBMTZBQTBE
-MUY5RDMyRTlFRUI1Qjg4CgowOEFGRDYxMjNDRjc1NkM1MjRFMTVDN0U1REQwRkU3Q0ZFQTEz
-NUJFMUJFODUyMDFFRkVERjYxRjA0NkM2NTJBNDhENDM1QTJGNjAyNEUKCkEzMTBFNEZEM0NC
-RUUwQTlDNkIxQ0QwMkIxRjNBMUM4Qzk3M0M1RjI4MUM4NjE5NDUwMUJEMDNFQjVDM0UyQTMw
-QzlFQkI4RTRFRkIxNgoKNjNFRURDMDk2OUM0OEM2NzI0QTVDMTI2RTA1Qjk1NzlDMDMxMDg2
-OUREMUVDODhBN0JGODU2MkVFRDk5QzU3QzExNTQxOUU2NTk5QkE1Cgo4MzIzMzI0ODY3RTJC
-RDZFOTcyNjMyMzgwRDJEMjcxRTMzMkM1MkUxQTg3QkI0NUM0RjY2QzlGODM2OTNFNkE5QTI1
-QkMwQjFCQjc1NzAKCjE4RkVFMjYxRjhENDUyOUQ5M0YyMzI4OUMwQjc1Q0ZCMEJCNkE1NTU0
-NTcxMkM5NDU3MDdGQkMyOUNCQjcwQTRDOUMzOTc2QzFERDBGNgoKMTcxRTU3OUE3NUZCQUIz
-ODIxQTJDNURFNDVEOEMxN0VBMTZGQTRCRTEwNjlENzU0OUU1N0U1OTIyQkZBMTgyODZBMUJB
-QUQ2NDQxNjFBCgowMkFCODQzQ0Q1NjI2MDI4QzNFNkE1MkJEM0NEQzc1OTk2MjdBNDlBRDQ4
-ODBFQTVBQjU2OTM2NjU2QTg3QkFEQjgyOEM2QzkyMDBFMjgKCjI3MEQ4MDQxMjY5RUQ3OEE2
-NTU3MTgwOTlGMDk5RTlGMTdGRTI3QTcxREYxNjFENEYxNjA2MDkwRjE5MkU1NjFBQ0E1RjMy
-QjgyNzg1NAoKMjYxMTYzMkYyMUNDRUIzMjI1MzM0NDI3RDlFQUY5QUQzRDk2OTZBQjNCMDU5
-NjU5OEQyREExOTEyRUFERDJBN0QwODU5QUIyNkQ2Q0ZBCgoyMjc2Qjc5QzgyNjM1M0NBQTBF
-QTM0RjY5MEQ2Mzk2NzY4RUZBOEJEOEE2NUNBQjQzMjMyNzIzMzI0Q0QwNUZDNTE3RjMxN0Q4
-QzVFMEMKCjgwOUZGRTc4QzM5M0Y3RThCRDg4MTQxRDFBRkFFODg1RTAyQkIwMjAzQzdENzI2
-MzEwRjZFRERERThCMzhDMUZGRkYzNDJENEU4MUVGQwoKMUNDNjhEMDcyRjY4QTBGQUMxNEJG
-NUE5MEVCN0YwNzYwNDQ3OTQ4OUNDNTcyMDk3OTY5NjlENjJDOTIxMzRCNTlBREYyNjRFQjFC
-MTU4Cgo1NkFGMkIzMkNDNzY5QUNBNjcwMzUxRUFEOEQzRTU5MTE3RTYxM0E0RkQ1ODQ1QzM4
-QUEwQUQzNzUxOTZGMjYyODkyMEYyOTlCOTRFQzIKCjM2Mzg0N0NBNDcwN0E5NTA2QzhERTRF
-QTlCMEMzOERBODg1NjdGQ0VENDBCQzk0RTc0NjVDMzlEM0Y2MjdFRjcwNDI5NTQ4QzM4QzJF
-MQoKRjAwNzAwNURGRTdCQUE3NzAxQjE4M0EyQ0ZERUIzNkNGODQwOTEyNDJBM0NERDhDNTk0
-NzUxM0JDRjdGQUE0NjJBOTJGMUU4NEIzMTk2CgpFM0NGQjAxOTMyMDQ4NUZFRDdEQjIzMUFD
-QkM1NkMwRUVGQ0YzNDQ1MjVGMERFMTUwQUE4OTMzQTREMUFFRkM0QzI2OTlDNEIxRTVGQkMK
-CjE1QUEzQTg5NDAyM0ZEM0YwQzc1RDc5N0U3MTBGQzFCNDFDNDhCQUM2RjVBQTBCQjJDQjE3
-OEI3MDVDMTAzQjY4RjdFODQzNkM0REQwMgoKRjA1NEMyQjRCNkMzODczNkQ5OUM1QkQ4QzU3
-QUZBRTY3NkZDOEI0RjA3OERCODNFRTZGRUEwQzk3QkQ0MzQwNjFCRjU3MkY2NjE1QjM3Cgo0
-MTlFRjUyNTBFMzJDNEYwRjQ4RUU3NzlFNTAwRTdFM0M0RDJBRkY2OTlBNDA3NzQ3M0EyOUNF
-OEMyQTJGQjkyNjQ2MTA3NTc2RjQyRTQKCjhERTEyMzNBQkE0NzIwNTY0REU2ODk5MDQyNUQ2
-QjQ5OTBGRDE5ODI0MzI3NzQ1N0E0MjY5MzQ1N0NDN0FBRkIzNTgxODRGNkFBQTRGQQoKMUZF
-QkM5M0M1NzMzODEyQTFCMzA4REE1MDlGNDczNzYwRDFGMkU4NDZGOEVCMkQ1MkZENTVDQjIy
-MEY0QzE5ODIwNEJEMjFFQTJERjBCCgozMTQzNDYxNkY4NkQ1MjlERTVDQkNBQzUzRkRCN0VF
-QTY5NzI2OTFFOUI4OTgxNTIxMDg3QzI1RjE1NzQ1NzZCRjc5OTU2OUUzNjk5RUIKCjc0NjE4
-RERGQ0Q1RjAxRTZCQUIwRkY1MTNFQzdFMkIzMDAzMDA2RDk2RTQwOTVFRjUwMDkwNDRBNUYx
-QzNCMDA2QUVCNEQxNUVDREU1RAoKNTNDMUM3NkQzNUQ4N0FGMjAxQkI0N0M5NERBQjFCQ0Mx
-ODJDNEY0ODc0N0FBN0UxRUQ5OTFDNEI2MkQ5RjlEMDhENDI4M0VFRDVEMjg4Cgo3RUUyMUI3
-REUyNDlGNzMxNTA5RkI2QjkwODk1NDNGNDc5MUM0MUYzQkMwRUVGQTE5NzkyM0RBODYzMDhE
-RUM4RDYzMkJFMDIyMTI5NEMKCkE0QUVEMkY2MUMyOTdEMTY3MDQ1RTVFNUEzMDEyRTIyM0Q2
-QzM0ODg5OTcxMkM1NTA2MzgzNTFGMTJGRUIzRDY3MzY4OTU5RUFBOEIwMAoKOTA5OTZFMzlF
-RERDNUIzQjE2ODRFMkRGNERGQ0RCQzg5QTZBNkY5QjBBRkNDQjIxMTUyMTczMTZBNDg4MTJD
-MTY4QjI0MzczNEI1N0I5CgpDQkQ3RjA1QTFDQ0U5RTMyNUYwRkJEQTc5MUVBRTdFNjY2RDFG
-RDdGMkQ1RjA4NTE2NUQyQkIxMDM4NzUxM0FDRjlBOTAwRjg0OTM0Q0UKCjkzQTY2Q0QxQkVE
-M0Y5OTA3MTRBRDkzOEJBODU3MkE3MUU1QjI1NTdDMjk0QzFEMUEyMEYyN0U1MUIzNTVGQjM3
-MTEyMzQ1REMzMzcwNwoKNzNGRTc1MEQ1QzIzMzA3ODFFMEEwNTYzNkRGMEYyODMwNDZCOTcz
-RDFCMTI0RDkyQTIxQTNFMEFDRUE4Nzk4NDk3MDBENTkwMTA5M0YyCgo3QjNGOTA0NjBEODIx
-OTRDREIwMUEyQ0YzOEZBRUY5NjQzNzRFQjExRDBFMTUwQTIyOTdEOENBNEE1QTVDNTVCRUE5
-M0IwMEVDQzkxOUUKCjcyNDZDMjg5NDA0Q0FEMzQ2NkVGNkJGMjgxMENGMUVGNzQwRDI4NUQz
-MzAyQjVCMzM2M0E2MDc0OTE4NzFGQ0QxODFFOENFRDVDMEMzMAoKMTlGQTMzRjE2NUNEOTYz
-MEQxMzA5MTdDMkEyNDZGMkQ1MDAzNjU3REJCMkZBOEE3RTNGQTg0MDQ4MkNGMjFFNTc0QUI3
-NEI5RUI1MDI3CgozODdEQTQwRkIzRUJCQTE4OTQyOTdDRDM1NkUyMEFDRjdEOTU2QTNFMTQy
-MjQ4QTU4OTlGRTk0MEEyNUJENUM4MTJDMEU4REM5MjNFRkUKCjI3RTQ5NjQ0OTM4RTNCRDk5
-QTA4NkFENjk3RjBBQzc1ODM5MEIzNjRCNTJDMDQ5QkIxQjMyMzc2RjNBRUZDMTVDQjREQjMz
-M0MxNDhCRQoKOUNBNUMxOERCMzhCOUVCMUYzOUYwN0MzQzJFQUUyQUZCMDIzOEY2ODc1ODNF
-RDdGRTA0RjU1NjMyNTQxQUM1NzJFMEJCN0M3NjU5QUEzCgo5OTlEOENBMTJENjI2N0ZEQjBG
-MUNENzIwQzE3NENDMjhFRTM3Qzc4Q0Q4MDNCODc2QjgxNjgyMDVGMzY2ODdDMTJDMEEyRDM1
-RDFERTQKCkI4NkY0RTg2NUE3NDFFODJFRUE5QzhFNDM4M0FFQzU5OUQxREI4NUM2QkYzODgz
-QzMyMThCQkMwQUI2NDNDRDUxQjhENTFBMzQ0OTJGMAoKQ0I0QzFCQTQ3ODE5MjlDMjc4NEMx
-MUY4NERFNjk5QjBDODRDMzVBNTA0QzM1RTY3MkU5NDFGMUQ2QkE1NDk2MEY2QzUxOUYxMTAy
-OERECgpDRjBFMDk5MUUxOEE3N0Y3NzJDNDNDRTk1QkRFRERBOUM4RDg1NjMzRUE2MEE3MzU4
-RTA2NDVENEI2NEY3NTFCMTFBRThBRTI3RUNCMTcKCkNCMzg1REUyNTlCQTFGRDc4RUE4QTU1
-REJGRUNDMjY3MERBM0MwMTQwNDc5QjYxQUNEOTlBNTlBREM1MDg0OUM2QUE3ODdDN0E5Qjk3
-NQoKRDg0RTJBMzA1MjlBQjhGQUUwOTk1REQ2NkJCQjVDNjA1M0UzQjk2QzU2NzE1NkE0Njk2
-QjE3MzZDMkY2RTE4MzRCOEI4RUU0MkNEQjkwCgozMTU2OTJENkJFMjk5RDcxNEM2RTQzQ0Ux
-M0RFNDI4MkIyNjFDNTE4OEVENkM2RDg3NUI4RDMwOEQ4NDQxNTJCRUIxNUEzQjE1QThCNkEK
-CjkyNERDRjcyODVGQjg1ODk3MzY3MUI5NzJBRUVFNjc3NEE1NzUyNkYyMUZDN0VFRDgwNTY5
-M0EwMDdCMkI0MzY5NEQ1RDMwQzlEQTYwNAoKQjNGQTYyNzgxMTRERDk4NzQ0Njk4RDg4NUZG
-NzE0NzQzQkJFN0Y4MUYyRkJBQkU0NTRCRkZENzRDQjYwMUFFMTA2QUFFNjFFMDk5NDg2Cgox
-NzU0RTRDRjMxMkExRERDN0JEMEY4NUQ4NTREMTVGREJCRjI5NjMxN0FCQjBEMEIyODI0Q0VD
-RTM2MkUyMTM3QTJGNTc5MjI3OUVGMDUKCkQwRkE2QjdEREQ0RkVGNjlGRkY5N0FEMDdGQTk1
-RjNDQjM5M0M0QjBEQjIzMTE1OTZBQjYzOTc0QjZCNzYxQ0M5ODQwNzczMUFGRjJERQoKMUE1
-MjI3NTMzMTVFREMwN0Y3MkNDNzNCRjdCNTVENzY5RTAyNEEwOTcxMEYxNDFBMjFCRjk0RTlC
-NzFDODgxMkNERDhDN0Y3QzNBQzYwCgo2MThFQ0NFNEFDODFGN0Q4NkI3NUUxMjY3MzZBOTA0
-MjU2RjU1NThFQ0U0MUE0NzFFOEY3N0I1RkJEMUZFMkZGNENGMEZFNTY4NjEyMjMKCjI0QzFE
-MTNDQUYxNTc2MzA2QURDQUMxOTI3Njg2MTM5ODgyNjA5RkNFMzM2NzE3MUZCRDBGMDE3RENF
-REZDOTA5QjQwMzk2NDNDM0ZBRQoKRjU5NDZFQTMxMzEyNDYwQkFBNDU4RjVBQzNBM0U1N0U1
-MjQ3QUEzOTBFQ0E0RjI5RUEzMjMyNEYwNkFBM0MzNzZDQjVDNjgwREQxNkYzCgo4NDM0NTY2
-REM1NEU3RDRDNkQ2MzkwMTI0QkI2OUVGNkQ5QUIyNjVEMUVEMkM2ODMzNTg3MEIwOURGNTdD
-MTM3RTYwM0EwRjhEMjZFNzcKCkE0QjE4QjdFNzIyNUIwQTkyQUY5MkM0RjIyRDQzQUUwNTNF
-RUNBRUIzRjg5ODFBOEVEMTNENTA0RTY0NjdEMjY2QkY3MjQ0QzBBMUEzMAoKQTU5NzAwQzFF
-QjlFMTgxMzEyNjNBRjUxQTk0NjBDMUI3NTMzMTZBMUJDNTg3RkFGRTNCNUE3RUM2RTg2NjI2
-RDVGQkU2QkEzMTEzRkFECgpFNjc2MzFCODMzMDE0MjRDQTI3QUZDNjE2NDQxNEY4MjYyRTNG
-RTI4MjcwRjhBREE5NkFGMDIzMkZGQUZFNjREMzdGNTEwNzQxRUFCNEMKCjExNkUwOTc4MEEy
-QzY0QUI4MkM2NTVCMUVBMjIxRUVGMjU3QzY2NzkzOEUzNEE0Rjk1NkI3REQ5NTFEMTBEMjM0
-NEQyMjhERjJCNTlDQgoKRTlBQjcyODIyQUNFMjcwNzg5Rjk3MjQyNkQ1NkEwMzY4NkVBREUy
-ODQzMUMwN0IzQkQ3M0Y2QkUyMkZERjc2ODhFM0I3NzEyOENGNzRGCgpERTk4NzM0QzMzOTBF
-REI3ODc0MEYyNDQ1MkFCQzU0NUFEMDgwNTdDRUYxMzIzMzM4QzBDRjNGMDIxMEE5RDUwQ0Y3
-RDQ1OTFEMjJEQzQKCjc2RTQyOUI0NjJCNzZFOTY1NTgzMTQ2Njg0QjBFMkE4QzZENDBBQzdG
-NDJENTk1NDc4Qzk0QzAxRjlBRkM4QTFBREJFMkQ0QjEzRTAyRAoKRDUyQTE5ODg2QTM5NzhD
-Q0YzQzlDOUUzOTFGRDY2MDM5QzU2MjI4MzlDQzYwMTIwNDA4ODM5RTU1NTgxMzZDNTdFNEJF
-QTI3NjFGMzhBCgo2RDAwRjQ5NTEyNjczNzdGMzY5Qjc3ODJDOTJEN0JGMDBDNkY4MTI5NjJG
-ODZCQkRBQTQzREE3REY0NjgwRUU4NTJGNEVGOUQ4MkJCMzQKCjVCQzFGOEY3NkE5QjdDMDk4
-MjAxMDhCRkUwNTRDODBBQjU2Qjg4QjQzODQ4OUQwQ0MwOTcyMDgxMjU1QzlFRkFDREFBMDhC
-QzgxRTBCNwoKRTA0QzIwMUExMjEyRDU5NzYyOEJCODI4OTRFQTcxMUQ3MzkxNjFFNTEzOTk0
-QTY3QzBDNjM1OTcxMTc3MzZDRjFBOTA0OEQyNDRFMDlECgo0ODA0QzEwNDgzRDA0NzQzM0Yw
-QTY5MjU5RENGOTk5NTU4QUZGQjY3MzlEMzcyMjIxRTQ5MEVBOEIxMDZEMEFGQzc4RUFEOUJE
-NTBFNTIKCkZDREFDQTRDMEYzRUQxMzY1MEI3M0VDNEY4RDBDNkM0QjBCRTI5OUI0QUIyNTNE
-RDRBQkNEMjhBOTZGNzYyQ0U0NTc4N0ZFRkE4OUQ3RAoKRjU2NzVEMERFMDkyRkE3MDk3MTk4
-NTM4RjAzMUE3NUJGQTJFOTFBNjREMTIwNkFCNTlDNUZEQkMyNEM4MEZBNTRDRDE2OEUxOTU0
-MUVGCgo3OTczNkZDNkQwMDg5NkQ3NUM2NEU3OUQ5M0M2NjU4QTAwMkE5MUI1QkFDNzE1ODM1
-MThDNjA0OTczNjUyMjIwQ0YxQ0I2MjZEQUQ4NTMKCjhDMTY2NDVDNjk5RjU3ODVBODYyNkJG
-MUE2MkZFQUI1N0NCMjYzODgxQjEwMjg5MUI1RDg4NkIwOUY2NzhBRTgwMUNCRkZBQ0EyOTA2
-NwoKQzExMjZCQjAxMzZBQ0RERTgxRDA3RjJGOTE5OUZFNDM5RDM1NTNBODE1MkU5RTJDMzFF
-QkEyRTA3NTRCQkJBNzJEQ0Y1MjVBODVCMDhGCgpGQzUyQ0FCNzEzNUUyQTNDODQ5REZCQ0E4
-NkZBMEMyMjE3QjlDRkY3NTU1NDJGQjRDMTQ1QTU2MTY5NkQzNTYxQjVDNTNGNTcwRjYxN0YK
-CjYwQ0JDMzFBMUVFMEY1NzAwOTlDNEZDMkM0NzAzRTFCMkFFODZDNzJBM0VGOEExMzhFRTlD
-Q0FDMjgxNDUzM0RBMjBFNEFCNUQxNzBEOQoKQkIyQTJBNEZFMUMxNEE5NUUxOERCRjNFRkIw
-NDAwQTgzNUVDMUY1MDAwNENCREE4RkZFNzMzNDcwMjdCOTE1MUMwRTAwMTExQzNEQjNCCgox
-NTQ0N0QwMDBDQjBFNkZEMEZFOTg1QUQ3MEFFNTI0M0VDOERDQ0UxRTVFNzAwMTgwODdBMzZB
-NzI1REUxQTZCNkVBMDJBOUNDMzIzQ0EKCjk0M0JDRkM1NDZCNUZGNDNEM0VDMzE1ODE3REQ2
-NTkzQjZBQzdDNTIwMzVFMDY2Mjk1MDlFQkU3Q0Y5QjVGOUIyNEUyOTFDMDY5NTJDOAoKQ0M4
-QUY5QTVGRUJERjhEMTZCMjJEN0JCNTE4RTExOTFBMUUwREJBNjgwNjZGMUNFMTU5QzVFNzYw
-OUVDM0FDN0Y0QTA1MkVCRTVFMDI3CgowNzEyNENERjg0MThEQjlDMDI2NTYzNDAyNzY0QjQ0
-QjBFOEFGMzFGMkJENjBEQTYwRTQyQzBCMzI5RUUzMkMwMzQ0RDQwOUUxNTVGRDkKCjNBNkYy
-OTk1Rjk2NURGNjg1NTIyMkFCMDk5NkIxODVERUM0NzkwNjQyQkExMEQzQjk3QjEwMjhEOUFF
-Njk0M0I3REU1RjJDN0E5RTE1QQoKRDY3MEZEMzUwQ0I3QTYzMzE2REY1MDk1MDc3M0FGQkJG
-N0Y3QkZDOEJDOTEwRUYzQTk1NTcwODgzMEMxM0M5MzFFODVDRjdEMTY1REFCCgo3QTkyNzgx
-MDk2MzMwN0ZDQzIyNTRBQzJDQzlDRTVCODMyOTNBRkRGQjlBNUREMDA4MDBBQzY4QjQzMUMw
-OEIyRTkyQkIyQkZCNkZGNTUKCjZENzA1MTJDQTA5OUJGODQwQ0VFNzBDRjE2MzEzMUJBRkRD
-MkQzNkY5MDg5RTA5MERDNjYwQTk0RjE3MEMwRUQ2RjVCQjZFRTJBRDc2OQoKQkU5NTFCNDBE
-QzFFNDYxODBCMkU1NTcyODlDOUYxM0NCRDlEMzMxRjIwODQ2MkEyMEMyNjk2MjlBRjdFMTgx
-Qjk3NzYzMzVDRDM0QTlFCgpBQjRCMUQ4MTk2ODk5QkJCRTk0NkZENTZDODE4MEM0MkMxNzg1
-MzZFNzJBMTMxQTREMDg3QUNEMzhCOTY2MkNGM0UwQkMyQzA0RTkzODQKCjgyNjNGOEQ2NEVE
-QzZCM0M1MTFDMzBFRjRBNzgyREEyN0U1MzBGOTZBQTBFMUNBNEQyOEVBMTA2MkZGNDY0MzA2
-NURERjk1OEREOTEyNAoKQkQ5NzVEMjdENkJDNzlFQTNBMTk2M0I5OTMwQjVEQzAyOTdBQjlF
-M0YwMjc0NUJDRkVCRjgzQkI5REFCNDZFMkQzNDIzREVGQkYwNTI3Cgo3MDEzRDZGQ0QwOEVB
-QTU0MDdDQ0VFMEY5MUI4RDZCNERDODlFM0E0Njc3NTlCODFDODEzNzk5NTJFMzYyMUQ1N0U4
-NkI3OTYwNUVDMTAKCjU5QTlENDZCQjMwMUVCQkVDQ0NCNjE1REY5MUQ3QTBBOTJCMTdFQzRD
-ODcxNkM0RjFFNjdERTdEMDY5RjdDQTFFNDU2NkY2RDlEQjk2QQoKRTNCQUFCRkNCNkUyREY2
-MDA1MTgyQjdCQkJBN0Y5NkY5OTMxNUNBNzZFMTI0OTdCQjc2QjJDOTRCODU1NDNGN0YxODE5
-RDNGNTNGMkNECgpCNkRBQkNDNUM4RTdCODA5OTVEQ0QzRDA0QTVGNDdFRjMwRDcyNUVCNjE1
-OEE3QTMyRUMxN0Q0OTcwQTExNTk0NTVCMjMwNzU3NzREQkEKCjk1Q0YwREY4RjE1RkNCNEFB
-REU4MEM4RDBDOTI3NjI1OTc0NjFBN0IwNDM4NEFDMjU1NjQ4NkIzQTUyMUI0NDcxODkxMTA4
-M0IwNjIyNAoKM0JEMUQ1NEE0QzhDQUI0M0QyMDdGQTQ2NjFBQUM3Q0Y0QTBBNDIxQzAxMTEx
-QTAyQUVBQTNBOThFQUYzOUIxNTI5OEVCNzVFMTZDM0Y2Cgo3QkUwODk0OEYwMTZDOTIyRUY3
-NDg5QjMzNjk4MTc3ODBDN0ZCQTE3MTJCOEYxMjYwRUZFMDJGMEE3RjExMkREMEU4NUM2MjAy
-NkNGNjMKCkMzMDYzM0YxQzU1ODQzQUI3RUJDQzM4RjM4RTI1MTdFMzVEMjU3RDcyMjBCRkY1
-QkUyQzZDQ0UzNEJCNzNFQzIyNUNBRDE4MkU3MDJCMwoKQzAzNzQwRDU1OERGQ0JDNUZDRUQz
-REIxMEFFQzdBRjFFNkFFODRCNTRENUQ0Q0E3OUY1NkRENjkwREFGQzVBRTdGOTM4M0VDMjIz
-MkQzCgo0QkJEMkIxMjVDQjc4RTJCMjAxMjcxMkIzQzUxODQ5ODY3NjY1Qzk4Q0EyNUYzRTZC
-OUUwMkVDODlCNUIzNzZENzkwNUY3MzAyQ0Q2RTIKCjhDMzM0NzBDMEIzNDMxNjBCRjBGMUIz
-QTlDQTBBNDdCNjA2NUI2NTM3QUZFQkMxQ0JDRUY3OTUwODNDQkM5OENFQUY5QTYwRDlDRUY4
-RQoKRTZGNDg3Q0VDRDg4NDg0QkI0RjE0OTgwN0NDNEI4OTZGNTExQzJDNTMwRUYyOTJBQTUw
-QTlENUU1NUM5MzUyMDkzMDBBRTYzQTE1QTdECgo3RkREMTE3OUIyRjU3NTI1QjcwRjZFRjQw
-MDM2QkQ2NkI2QzI2QTk5ODA3N0Q1QkI1MEJCQzEyMkI4MDZENDVBQzI0OEI1MkNBQTZFNEYK
-CkI5RTAzOUUzMEJFQjc4Q0RBRERFODEwNTM0NzUxRjdBMzIzNTZBNTEwNjVDREU1NDI0NzUw
-Q0VBNTc5RDAzNEE2QzZDQkNCQTJCMjYzOAoKODlCNzY3ODc5REFBQTk5MjNGMEZBNzY5QURC
-NDc0MzczQ0Y4RUFFRTdDQjQ2NUY4NTlERkUxRTcwMDg1RjVGQzk0NkMzMTM1NEYxRTI0Cgo0
-RjMxQzdFOUI1Rjc5MDNEOTJENzM4ODZBQ0FFNzY2NkYyQ0REMUNFM0FBRjY3MDc5REM0RTkx
-OTExOTIzMERBNkIzNjlBQURERjI0MEMKCkU5MERCQ0Q4QUIzOTcyQ0UwOUU1NzEwQjk1OTYz
-QzZBNjJFRTU2RTA5MTY0RUZBNzdBQ0E3RTBFQzVGQ0VGNEQzN0EyREJDNTRBOTc4MwoKREI5
-RTIxMDQ1ODYwRDU5MzIxNzQzNTIyQzdCREQxNEYwNzNERDU1QjYxM0Y3RjE1MDY1RUY5NzQ1
-NkQxQzkzMEU2QjhGQjVEOUVDNDRCCgoxMTEwQUMwNzU0NDM0NTlFRjEwQzQ4RUY4RTRGQUM0
-NDkzQkU5NDlCNzVFRDBFQkJDQ0IwM0UwOTExNDRDMThGMUVBMDIzOUY5MEZENzEKCkUyNEIy
-QzA2QUYxM0JCRERDRDU4Q0VFNEM1QTI5MjZDODczMDk5RDE4NzIxOUQwNjdGRTcyN0I2MUMx
-ODU5NzE2QzNERjA3Q0YxNENFNQoKN0Q2QTc5MjVFMzI5ODQwRDY4RjBBRDYxREIzRkVGOTFC
-MjBEQTQxRUI2RjI4MzUyQTlDNDlGN0ExNDFDNkY0MzA1NkE2Q0ZDMjU0RTRBCgo0N0EzRjk2
-N0FGOTcxNEY1MjQ1OUM1MDM5Q0UxMDU3OTU2MTIxNTU1NzZCRTA4MDcwMUE3N0YwMDI2RkRE
-QjJEQTVCN0Y4MkQxQ0FDMzIKCkM0RUY2MDI2ODg3MDU2NkE2QzNDQ0IyRkNDRjBFMTFBQjYw
-RkQ2NDREQUNBNjk2ODk1RkZBMkNGNzIyNzBDMTkwRjQ4MkVBRTU3NTNCNQoKQkZDRDFBRDZF
-MkU4QjEwNTM1REEwMTI5NTREMDg1QzlBMTRERTk5ODk4NUUwOEYxNzQ0NkQ4MTU5REY2MUUw
-Q0RBNjQzNTE0N0Q0QjZECgo4QTJEMkIxMTVGNDlEMkUxMEFEREQ0RUI2NkNBNDIxNjFBNUU5
-MDA1QTczNkQ5NTQyNDRBQjNENjUyMDc0MUNGMUUzQUM2MzkzMEY0MEIKCjMwNDhGNzgwMUUx
-OEFGRTU1N0RGQkY1MEM2RTJDMTBENEYyODVGMDVCMkMyQzU3NEQzMjdDNDNBOTE1MDFFNkFD
-QTQ1MDQ4QzBEQkNDRQoKRTk2NkMyOEFERTc0RTQ2MUJGRjFDRjU4NEY0MDZFMzJCQTQ3M0Uw
-NzQyQjQzMjlBNzY2NjNEOTJCNjgwRTgwQTRCQUVDQUNDQTgzN0ExCgo4Qzk4RDg4RjEyMDM5
-RDgwRTZBOEI3QjBCMjA2QkZGNjJCMDczQUI1OTYxQkVFNDVEQUFEQzU0OTMxOTM3ODBEQTgx
-NzkyQkY0RTc2QjAKCkE1NTQyRTVDOTczOTE5RDBFRTFEQTFERTVBNUZBMjY5ODYyQkIwRDQ2
-OTQ2NTI4NDlCNjEyNjgxQ0RDQzc1MDVDQUM5NUI4RkQ3MkUyNgoKNTFCN0U0Qzk1NTYwODA2
-MEZEMUI1RTRGOEFCOEFCQ0E2ODA5RkZFMTUxMjAzQTVDQTkwNTg0OUY2MjlCREREMTQ4OTlB
-OUJCRTNCMTc1Cgo4QUZEQkZCRDgyRUNBNUIzNUYyQzJCMzVENUMyNjdFODJFMDA5Q0REQzZC
-RTM1RTk5RTc5MThBNjlGMjhEMUI3NzM4QjkzOTE2RkI3QkUKCkNBQ0I4MjcyN0UyNjM0NTNG
-NDFEMUNBRTVGMzhCNkMzNzA5RjAwREU0OTU3MzEzNTU1M0RFRjc2OTlGQTZGOTY0MTZBRDU2
-N0Q5NzFCMwoKMTg5MzcxNEEwOUI1QjM1NkQ0NDc4MzM5M0ZBMURGN0VDNkZDMzNGRTUwMTg0
-NTRFQkJENUIyQUNGNkFBNjA4MDU2NUZDRTY3NEYzREExCgpEQkQ3N0RBQkYwREM2QjM0RTE5
-NDlCQTJDMDEwQzU0ODEwMDlEQTQzMzdGNzM4M0QyNjlERUQ3OTcxMUEwOEU3ODcyMjhFMDlG
-MEMzREUKCjk4QzBFRjgyNzE1QzRGQUJGQkM3NjA3NzVCRkQxQ0VDN0NDQzgxNjMzMzEzNDFB
-N0QwODIwOUQzRURFNDVENzhBQjJBMDVENTcyNkUyQgoKRDY2OTA0M0UwMkFGMjc0Mzg1RTE2
-MTNGNkE0MkU3RTlCOTRCNzY2MkE1OTA0QzI2NjlDODI3MjcyQUJDOTZBQkUzNzZERjcwOTRF
-RDJDCgoyMUVDNTAxQ0MzMEU2MzFCMkNEM0IwRjRCQUI4QzNDRjIwMjUxMzBBOTlCOTNDNzA0
-REYyRjAxNUE0Njg3NEI1QkNDOEU2NTYxOUZBNTAKCjBEMUFFMkJDQkQ0QzI3RjkyNDQ3Q0Q5
-RTQyM0VDNUI2N0UzNURGMDRDRTMwQUNENjYyOEExM0ZBMjBDMTRCNTE4REQwMzAxRDNCRUFE
-QQoKMEE5QzE0QjhEQ0IyNzgxNzBDOTdFMTA3QjRCQURCQTFCMjVCMTdGMjY4RjhCNTJCODk1
-NzU2Mjc0NzhFMjhFRjU5RjJEODU2QzhDQUE2CgowMzc2QzUzRTk1QkE4NTRGQzA1OUVBOTM4
-NTc1Mjc2Q0U0NzE2QjdBMTlDRDk4MDk5OEFBQTc5RUM4RUQ1N0Q1NkVFMkVBODBEMkFCN0MK
-CjlCMTgxMDBEQTJBN0VGQTcwRUQ0MEEzMkFCMjkyMTI5RDg5N0FEQ0QxQ0VCRjZCMzBCQjc2
-OEFDQUJBQ0M0ODBBRDZCRjFFNzAxRTMzMgoKQjFBOTc0NkNFREREMTI3NDQxQzY5NUMzQTQy
-NEE2REQ4NEJGNjg0QTkwQjAyN0I2OEVGQkRFQzk4QUE1QjlDRDk3RkFGQUFBRkMxOTVECgpE
-QzU0Njg4NzZCMjhGNTZFMkYzQUFCNzREOTczNjY0NDFCMjhDQkFDMEQzMjhFQjhGRDk4REYw
-NkU5OTgwRTIxQ0E3RjYyMzQ1RjAwRDMKCjhDQTgyQTFDQkZFOTU0Q0Y4QzVDNzcwMTdBNUU1
-Q0I2RUNFRDkwMjIyQjVCMTVENUQ3MzEwQjNFMjRBOThBNjQ2NDRFRUFFMEIwQ0IyMgoKQkRD
-N0ZDQzk4M0NBOTQxMDRDM0FGQUU3MUE3NUEzNTEwQ0VEMUMyMTAzNzlFMjg5QzcyMUJENEVG
-RjgyNjczNTY1Mjc1ODI2QTQxRUE1CgozMDA4QkQ2QzE4ODJFOUM4MjM0NkRBOTFFOEREQkYw
-OTJFNzhCRkMwMDlBMEJDQjAwOTdFOTc3ODgxQkYzQzgxQkI2REUyNzg0QUZFRjkKCkJCMEZF
-NTJDQTkxQ0IxRUJCRjAxMDI0QjFFRjk0MTE0NDIyOUIwMTI3NTk5Mjg0RkJGNkVBNzgwOUJG
-MzZGQUJBQ0ZBQkUzRkJBNDFBNgoKQ0NERUVBMUZGNjY1NjgwNUNEOTQ1NDM5RTM2Rjc3MURC
-RjU2Rjg1QUM2Qzk3NTlGRDc3NDFGQ0EzOENDMzYyODExOTYyODgyNDI4QTlBCgoyOUY5RTc4
-ODMxMkI2NzUxRTRDQzZBRjE1Q0I1MTdFOEYxN0EzMjBCQTQzMzVENEM4NjlDNzZGQ0FFN0JE
-RTU5MzM0QzcyQjU3OEIwNTUKCkFGNTg1MEQxOTE5OUYyNjM4OEI0NkQ5RTlGMjk0MERBQzNE
-OUE0M0Y0NUM1Rjc2NDNDQkEyRDM5MTY3MjUwOTEwMkE4ODNBQURCOTk4RAoKMUNCQ0I4ODhE
-NUJCNzFENzQwNTgyRjdCMkJFMUVERTdENkVGNEE5MTREREY1MzY4RDU0N0RBREEyQkU1NTk3
-MTYxOUFGRThEM0E2NzI4Cgo4QzhGMEE3RkU5RUM0NEU0RTAxNjA5MUY3QjE0Rjc5RTgxQTRD
-RDhDMjU5OUY2QUU3NzYxMzZEMzgyMjJBRjFGNjFFMThCRDhCRDZENkQKCjIzMTkxRTJEM0FB
-NjMyMTdDOTEzQzhENjJBMDk0MDUxNkU3MDk5NkEzMDQ3MzYyMUI4QTI1NzQ2NUQxRTZCMjk2
-NkJBRDhCNDQ3RkE4RAoKOEUyRUMyQkUxNUNGQUM5NjM3QTVCRTE5OEQyRUZFNkQ4QzIwNENE
-REY4NTM5OUI5OENBNjkxMUM5QzhFRDVGMjQ4RjA2Q0M4RTlDMjdCCgo2RUJDQ0M4QjJFNTRD
-NEQxNUNFNDZBNkJGMzgxMkNCREQ2N0ZGRTJDODMzNzBFRTc5MkZCMTdDNjNDNDIyMkZCNUVB
-NUMzNjNDMjk2QzQKCkY5RDE3NEU2MkEzRThCNkI3RkUzNUJGNDY2M0UzRDgzRDkyMTQ4Njkw
-OTQ0MUYxRkRDOTU5OTBDOTE4OTgzNzA5NDQ1NUJGQUQ5ODdEOQoKMjIwRTQ0Q0JGRjJFNDk2
-OEUzRDdEMUQ3N0FGQ0U2Nzk2NkI4RTlGRDExRTEzQTY2REU2MUM1RjIzREQwMEM2QzQ4QUUw
-QUQ3REU0REVBCgowQkJCMkM2MDRFNDQzRkI4ODQ0OEZCNkZDNjFEOEFFRUJENTJDNDkzN0Y1
-RDI4RjYxMUE3NThDMTExRDFENTdDQkMyNjJEQkQwQkM4REYKCkExMUUyOTlDMjgyNDBFREE2
-NDNDQzA2QTEwMUZDMEU0NUEzNTE4RTM0RjhCRUJDNDk2NERENUE4NDY3OUYxRTRDMEEyOTI4
-NEZEMkM5QQoKODdFN0RDMEQxRjNEQkY2OEVCMTc3QzlDMUNENjc4MUEyMzM3MkQzRkJFNjU1
-Q0M0REZFQUM1MTM0REVFRENDNkYzMzAxNzY3NjVENzkxCgpENDk1QUNFRThDQjZGQzE1RUQ5
-MTNBMjg3MDZCNTM4RDlGOTdFOTg2QkM2MjhERUVCMUVGQzgyMDkzNkU0MzFCRDVEMDkxNEMx
-RTA4QUYKCkQxNzk1NzE2MDAzNTA0ODhFNDM0MkY3Mjc3Rjc4OUE3QkRCOTc0QTNEMDZERDlB
-Q0Y5QkM2NDVGRDExQzI1M0E5Mjc3M0Y5NUNERjRBRgoKOTExQTdERDgxMEE3MTc2MTdDRUY0
-MjJGN0UyMDc5Q0EzNUQ3OTk2RDVENTJBNTBGMjIwRTlCMjZBNjVBMEExN0I3REE0QTg2NEZD
-QzJDCgpEREY1Q0MyNkZFMUU1NTFBMjAyRjYyNTk0MUJBQTgwOTNBNDBFNDJGRUZGQjE3RDAy
-NjIyNzdBQjlBOUU0MTcyM0FCQzczODE3RkFCNzMKCkE3QjU5RTMwNkMxNDhFMkU5ODY1RENB
-MERFMEEwM0U0NkVBNjkzOEI1M0UwMzA2OTRGMDJGMUNFMEY4QUZGN0E4OUZBRTMzQzhDN0VB
-NAoKNzJBQzNCQTg2ODBBQzA2RTYxQzYwMDI2RjFDNTg5RTgzODFCM0E1NEE4NjE1NTE1NkQy
-MDMzMkZGMkU1NTczNzU1RjBCOTgwOTY3QkI2CgpCRTg2QTg1OEI2RUM0ODY4NjJCQTcwMkFE
-MTE3MTg1MDgxQjIyQTAzNTlDODExQ0VGQ0U5NzE4QUMyQzM1MTJBNjVBQzYzMjgxQkMwMTgK
-Cjg4ODQ5RDk5NkQ4RTFBQTEyMDAyNzMyQ0RFRjBCOENGMzkxMUY3MUQ5MDVENTJEOUJFRUNF
-Q0ZBNEEyREY4MjkwQzhBNDcwMjFBNkZBMQoKMTQ2RkYzOEU2NDI0RTU4OEI0QjRFMTAwMzFG
-NjBDNTEyREYwODJGMDlCNTM5QzE4RDA4RjE4QTQyMzlGQTlCNjQ4NDhDRTMxOEIwRjlDCgpC
-OUY2QTI4RDZCRjFFNzg4QzE2RDZBN0ZCOTIwMTY0MjIwNjA0NEY0NzBEMkFFQzM1REU4NTYy
-QzE3REQ3RjUyMkFCNzMzRTc5NkI4NzAKCjRFMDU0ODVGODY1MzU1RTU1RUVFQ0Y2MEU0QTJC
-NEU0Q0ZBOEU5ODIyNjg1Qzg3QTYwNTYyQUMxNDU5RTI0NkM3REExN0YxNzRFOUUwNwoKMjEw
-MTk3NTE0NEVFNEYyNENERTZFRDkyNTRGQjhBREVCNDE1Rjg5NUQzQTcxQzY4OTcyNjI4QjM5
-QTA1ODgwM0RCODVGMDdCQzQ5MkE0Cgo3MjI4M0REM0QyN0RCMjM1OUY4ODFFMTAzODMyNEIz
-OEZGN0M0RUVGOTFFRjFBMDBCNzQxQjUxMTU4MTk5NzM2NDczOTg0RDIwODAwOTkKCkNFNzM3
-QjAzMzI1RjM5RDc3RUUyRDVFN0JCRjEzMDEyMDdGRUI5NjNFREQ4OEI1MkVBRTQ5MjBBMENC
-NzU4RkNEQ0FEMDQxMTIwMEE0NgoKNDhFNjU3QzI2QTQxRTc1NzdEN0U4NzZBNkE5REUxNkIy
-ODc5QTZDQzZEQkY4OTQwQkE0Q0Y4NjE1Nzk1ODZGN0FCMjM4MUYxRDI0NDA0Cgo5MEJGRDNG
-RjY3NDdGQTkzRjNERUQ0NjcxQUVDREYxQzQwMzQ0RTc1QkM3NDFDQTc4QTIwNzkxMTRDN0E5
-NEFEQzU2MDI2NEU3OTQ2NEEKCjJEREJBNEQ0RTc4NDhBMjU1M0ZERTFDQjUxRjUxRjlFNkYx
-MEFCMUFDNEFDNEQyRkRGNUQ0OTJBQjlCOEI3MUM2ODM0RjBEQzNCMjM5QgoKRTM4NjIxNzg1
-QzYzREY2MDM4Qjc0RDdENTM3QkNCNDExNDdFQTg1N0JCREJCQTQwRUE1NTUwRUE4NTkzNTQ1
-NkQ0QkM5NDVDN0Y1NkVFCgpEMzc1RTIyMDg2Q0FDQTc1QjNFMTk5MTI1MTE0RUU5RkE2NTZG
-RjVFOTAyOTU2NkE3MkU5QkE0QzJEQjVCODNBNUNBNkNGMkUxMzY4QjkKCkI4QjJEMEIxRTJF
-RDZFRThCNkVDNTZFMzUxODAxOUQ5MkI2QzA2MkE5MkY3N0MwOUNBMTkyRTFFNTI3NjI2RUVD
-NzhFNTUzODc2RUZBQQoKMENERjE0RUFGOTI1MTJDNzFGRjZGMDBCQkM2M0Q4QkM1MDkzQzBD
-MzQzQjkyN0E0RjIzM0MwQTFFRDc5NjE0MjZEN0IwMjk2Njk4RjcyCgo1MUMwNTFFM0YyODIz
-MUZEMzAyMTQ4NUUzRDgyMjhDODYyOTkwNjRBQjlEQUQyRTYzRTU5Qjk5NUE0QzZGQTBGNDUz
-MTE0RTgzMjMyRjUKCjk4Mjg2NkQxNkVBMUYzNTQzN0M2NDgwN0Y4QTcyRkE4RENEQTREQzMz
-QjMxODQwRURFMjJDQzgwRjlDMzJGMDhGMTE2ODNFRTY5NjIwNAoKNDU3MjgwQjM5QTI4OTFB
-Q0UzNDMzQ0NFQTgwNDY1RjBDMDdCRTI3MTE1NDczRkJCNDExQ0NFQjhFM0U1MzJFODEyNUFF
-QTAwMjZDRTRECgo5RjUwNTREMjk2OTc0RjJEMEE5M0QyRTY1MjZFODhDMjY2QTU0RTkzNzA5
-NzU3MkYwM0I2NkREN0YxOTM5QTgyQThGNDc3NUVBQjFDQjIKCjQ3RTlERkVBRTAwQzhBODU5
-RjM5MTAzQjE0OUNBMzNCQzZGOTMyMTAzNzM2RTcyNzQyMDIwMUYzRDM4OTU5QUJBRUQwOUQ5
-RDBCQTE3MQoKRjE2MzQ0QTQ5MzIwMDYyRDRCMEMzMEI4MjQzNEE2NDgyRTIzQjA0NTVFODIy
-MzU4Qzc2OTQxRTJFQzZBOEY1NzQ3NTU1NTFBNzcxNzg2CgowNzAxMUZBMkY0RDBGRkE3QUJD
-QTY0MjA1QjQzMDFDQzhDNDdCMUNEMDM1OTQ3QkFDMDBDMjZDMTI1NUVDMDFBNkQ5MEM1OEY3
-NjBFQkUKCjdEN0I0MERCMjVFOTc4Q0Q3MkNEQjhDQ0QxMzI1NUQ1REVCODY3MDQzQUMyMjFD
-RDMyRDc4RjYwRjhEOUFDRkM5NTM0MDU0NkREN0I3RQoKQTZDQ0ZBNDgxMDUyQzU4QkI0MUIz
-NUREMDNCOEQxQUNDOUJEOEJDMEE4QzgwQ0E3MkQ5NjE3QUE2QTE1MTcxNTI2MzU3NEY5NjY1
-RDYyCgo5OTg4MThENzU1Q0Q1MEEyRDkyREY5NjZDMDVEMjhFQTAzRkI1QUU1NzA5QjkzNDk4
-RUY2NkVBMkQ5NjY4MTAwM0U5RjMzMTYyMDBBMTIKCkRBOTY5NjRENkIwQkI0MjA3N0E1MzA2
-QjcxM0M0NjM0OUMxOEVFNDIyOEVDMUE5QzI5QzEwQkE1ODIxOERGNTg3QkQ1MzRGMDhDMDQ0
-RAoKNkYwOUE1RjEwMzY0OEJFRjA2MzM3RDM4MzQ3MDlBNjk4MThGM0Q2MjM0QUNDQjRBMDY4
-Rjk2MDQ4ODE5RDFEN0EwMjNBNTY5MDNGODk0CgpEMzc4MjgxQkZBMjMzOUZFMUE3NDgzQjcy
-QkNBNTJGNjMwNUE3NEExNDIxMTYyQkJBMTI1MzYzNEVCNzQ1MDE0OURGMkZFM0UxMEM2RkEK
-CjEyMzVDMjRGODJEQUNCREFGMTE5ODZEMzY1NzA2N0FDRTFBOEUyREUxMDRFQjRFMTAxQjY0
-OTFGQkQ2N0VDNzA1NTFEQTU2OTRCRDEyMgoKRTM1NDQzREYxNjREMEJBQzQxM0REM0RDMTc4
-N0FCOTJGREVCRjA4MDY5NDIxNjNCMjZFQjNEMTQyQjAzRUVGMzU4MUNEM0MzMkU1M0MzCgo1
-NzIwNUFBNTIxNEQ3MjNFNENFNjkzOUE5QTA5MzMyOUM1MzU2MjFBRDBFOTAzNDExRjc1NUU3
-MTUzNkM3RTM3QTYzQjk5NTJBOUFCRTkKCkU4OTJBQ0RDMjQ3MTZFQzkzNjYxQkI5RjVBMzI3
-QUQwOTg0NjREOTJBMTgwNDc1RUFFNUYyMDlGMEVCREZENzk5RjdFOTgyN0Y2NTdGNAoKOEQz
-OTc4N0FCRDQ5NjQ5MUM4ODkzRTFDMDYzM0U1QUMyRTRGNzVBNUE5NjBDRDUzNUYwRkM5NkU4
-RjRGRTU1NTc5NUM5NjA1NUUwNUY3CgpBMDVFODJGNTM3NjUxMzQ1MjU5MTYxOEZCQjk0ODYw
-RDkwQzcwMUJDODUyNUFGOUMxOTY3RDk3Qjg1M0JBNEVENDhEMDk1RTk5NUY3N0IKCjE0MEM0
-RTE1NjlBRTQ0REQxMkFBQkM2ODgwMUMwMTQ5ODdGODhEQ0YyQjAxOTFBRUFCQ0VEOTBDQUMy
-NzVCRUE2MTczODdEMEY3QTFBRQoKNThGQ0RCQUI1RDc1MkQzMThFQTE0ODJCRjU4MEY3RUFG
-RDg4MkI2ODY0QkYwM0NCMkU0RDU5QzE3OUEwMTQ2QzFCQkM3MDFGNzhCNzE1Cgo1RjMyMjJB
-RDBDMUU3Njg2ODEwNkRDQ0EwRDVEQjYwMkQ4M0NEMkRDODcwRUU2RTQxRjU2MTA4MzVCOEYy
-RkUyRUM3MzBFRjlERTBCQkIKCkZFRjQzMDhBOUFBMDM5MkJGMERGMUM5MkNERTRGNEFERTk1
-REEwRDEzOTUxNDc2NTU5Q0QzQjRCN0RFQTE0REY0NDU5N0E5OTY5QkVCNQoKMzNEODdDOEMx
-OTUxODIxOUM2NDc2N0RERkE1RkFDRjE3M0Q2NENDRjk2QTM2Rjk2MkQ1M0VFMTU4MEI4MjNB
-RkNGOUU2RTI5MDQ1NEZECgoxQzZDMzFDNDVEREU0MjIwRjA0RjNEODUzNDNBMkIzNEVGRUE1
-MjkzNjRENkNGREU1OEE1RjIyNUY3RUY1MDc2RURDMjIzNTBGODYxNzYKCjYwREM4RjlENzJF
-N0VCODI2QTVFODNDRDFCMkYwREFDREYwMTk1QzY3RDRFRTcyNjg3MDExMUYxQTg3NjZENzNG
-RkM4OTQ0MDA0NjQyMQoKOTU4NDc5RDU2RkQwQzc4Q0E1RUE3ODAxRUI2NDVFNTkzMjI5MDMx
-ODIxQUFDNDY2NEI1QzgxNEE4OEY1OERDQkQxQ0Q0NEY4MzM2NEMyCgoyRkI5RUJFRURBMDlG
-OTc1Mzk4NDNGNTREQjdGRkQ0QUIzMjE2REY2QUMzMDVGNUQ4MEVDNjMyNTBDMzNFNDAzMzg1
-QUUwMDlCNUFGMUYKCjVEODMxNTQ5QjJBREQ1RUQ5NDZBNjk0MDkxRDE0MEYyQzAyNEZFQTIy
-QkVBMzY1RTdFRjdGRjZGNjBFNUYzQjM3NjlCNjY3RDJFRTVBMwoKMzU4REQ1NjAyQkNFNjE5
-NkNGMzJFQjAyNzA5OTBGQTA1RDk1MjM3MTJBQkM4RDhEMjRCNURCQzc3RjA1RjVBRjc0QzE3
-NEQzNzUwNjFFCgpBNUY5N0RBMTJGRDM0MjIzRDg0RDE0QjU0N0VCNDlCNDBDQUNFMTc1NUE0
-QjA5QUFBRTFBQzMxQzVGNjJCNTc5MTFEQTgxQkQyQzNDNDcKCkZBRENEMjIxRDlEMDRDMkI0
-OTQ3RTY2NUEyQjNEMkEyMDdEQ0IzNTIxMzM3NEMxMDNBOTEwREY4NTA1QUNFQ0IxQ0Q4MzQ5
-Q0YxN0FDQgoKNUVBNDYzRjA0MEVENzY0OUM3MThDRUMyMUM2QzgyQkNBMzBFRTZDRUI3OUMw
-QTZGMUZEQkUxNkJBMDlDRkFDMzRGNzMzM0VEMUQxODlDCgoxQzBEODcyRkQzMTgyRjMyOUFB
-RTNERjcyQkEwQTBDREJFMjY0REFCMUFBODE5OUNGNUJDMTU2NzhEQjIxNTY1NzkyNUM2OURF
-MDUzMjcKCjEwMjk3MDEwOEI0QTVDNjdDMjgwRkQ2QzUwRjczMUU4OTY3MkJCQTc5QUVFREQz
-RTYyMzc0NUU1NzY0NTJFQjZDMTU3MzNFQzYyQjNDOAoKRDNENTZENkZBMThCNTBBMjFGNkYz
-MThDMkMzNkI1MTc4RTJEN0U0MzhENjU5MERBMUM4RkNCRkRFMTc3QUQ0OEU2NjczRTFEQUQ3
-QjYwCgpGNDQzOEYxQUIzNjBGMkQ0MEYxQTMwQTBGODdEN0JBRjUzRTZFRTc4QkJGNUI1QTk1
-NjVDQUJBRDdFODI1RDAzODQ3NDMwQzY0MjJFMzkKCjlGMDg1ODAxOUFFQjMwNTZGMjI5NEVF
-OTZFNEU5RjE4MkVDNDVGRkM0RUE5OEUwRDQ5OTk4N0ZGMjE4REM5NUQwNTFFQjMwRDY1QjA4
-OAoKOUNBQ0E2RUM3Q0Q4MzExOEFGMjFFNEQ3N0UyQTI1QjIxRjcyMTEwNTk2MDAyNTIxMzEz
-MUJCOUUwQkNFRkQ4REQ3OUVEMUJDMzlCMEI5CgowN0E0RUQ0NTZBOUM1MURERTM0MzAwMTBF
-QzExRDM5QTUzMTc0NTFCMzc3N0NDNjBDQTlFMDJBNTBEM0Y2NjA1NERENjY4RDAxNkNENDcK
-CkM4MEVERUZENEEyQUJFODUwRDQzMjIyNDNGQUU1QjE2OUNERDA5QkQyNTNGM0YyNEFCMEI2
-OUIyREJFOUE3OUU3NkNEMzkzQjcxQjk0MgoKNjc4ODNFOTMwNkU0QUMyNUZDN0M5QkY2NkRD
-Njg1QjUxMzQ4QjAzODJGOTcxMjQyQTc2NDc1ODQzNzY3NUQ3MDZGREZENkMxNEMwRjBECgpE
-RUQwQTVBQUNDMUEyM0NGMTFBQ0QyRjNCMzA5OEIzRDJCNEYwRDM0QjA0NUQ3OEY5ODg3NEVC
-MkNDQjI1MTE1Q0M0NzY3MkM5NzA4NDQKCjI0QzY1QTY4QUZEQTk3N0RCQTlFNTE5RjI4MEMz
-MjQ1QUY4RTg5RDBBM0FFRjMzNDQ4MDA1NkExRjIwM0UxQkZBMDIwOEJBQkQ5QkJGNQoKMDQy
-M0U1NjlGNDlCRjRBQUI0NDI1RTlEN0MzQzFGRjlEQ0Y2RTMyRTUzRjg4MUYyRjg4MEUxQzAz
-MzZEOTUzQTBEMDY4QjdEQTMzRTE2CgozRTM1REEwN0I5QjVBM0I1QjlDRDI2NkI2MUUxRTQ0
-MjMzMTFBMDM3MDk4NDAzMDlGRkREREZGMEQwMDM1RTJENEY1NzkzRTZFOTE2RjMKCkRCQkRF
-QThFODZDOEM3MzgxQzE2Q0M2OTAxQkE2QzBEMDZERDBGRjY0M0FFNkI1OUNBNTUwNjc5M0Qy
-QjAxMkExOUNERTdBMEQ4QjgxQwoKMkZBQ0VBQzMyQkIyMzgwQzExNUY5QTUwRkVGMkU2MEFG
-NzU5MEU0MjEzODU5OUY2RTc2Mzc5MDJCMTA1NzFDNDE1OUVFQTdCMDU4RTRECgo3MzkyNTMx
-REQxQjJBM0IxQTVCQjE3ODQ1NENGMzY1QUVFNDk5N0RFODI2N0RBQjIzOUE4RERGN0FCNjlG
-OTJDRTgwNUI1NkMzMzY4NjAKCkMyNjUyOUFDNkZCOTg3NDg4Qjg0NDk1Nzg3MEI0MEUyQThC
-M0IyOUZDM0ZDQUVGMEIzQTZDMDI1NzBGODY2MUY0RTRFNDU1QUZBMUFFMgoKNTIzMTZCRUNC
-MkM4OEZEMzRDQ0Q2RjZFRUM2QjcwM0ZCRkZGNUJEQzhCQUYwNTZFNTU5MEYxNkJGOTM1NjQ3
-MjI3NDFGRkYzNDRDQzhDCgo4NkExREU4QUZBQTRFMkY1OEI1RkQ5MTZEMTYzRDI4NzMyNzU1
-M0VDMTAxMjE4M0M0NkRDRDkyMDAwMTEwNTNFRDREREY3NzQwMzZDMUMKCjVEQ0Y5NThCOEUw
-OUI4NkNBRTI0RTQ0QjRBQkNDQjA1RENBQ0EwQ0Y0QjgxOTk4RkI3M0U0RTQzNTgyRDJGMjA0
-Q0E4RDk3ODgyREZDRQoKRUVFRjY0M0FBMzlCNUQ0QzlFQjNFQzM4ODZBOUQ1NEU2QURDQzI1
-NDlFNTNBRUJBNzBDQTRDRkFCNDY1RUMwRDMzNkQxNTg3MEEyNzM4Cgo3MjgxMEMyNEMwNzlB
-QUI4OTNBQzUzQzNBMkI0MkYzOUE0OTM1RTEwRjFCM0YyOTlFOUJCMzQ4NkQwMEVENjZBMThG
-MDNCQTJEQ0JCMDQKCjMwREVDOEQ0MEQwMDc3Njg2Q0NCRTUyRkM1NTBFQTk2REExMDIyM0Qx
-RjFGMDk4NDQ5NjQzMzY0NjE1QUU5OEJDMjZEREFGMkQwMjUwOAoKRjY2QUM4MUM3ODE2MjVB
-MjcyQkM4MzYxMDY0MjJGQkMzREE0QUMxQ0JENzc1RTRBQzEzMzgyREM0OUZBNTQ0NDVEODJF
-NkExNkJBRjgxCgo0MDM1QkQyQjBDOUY3RTVGQ0RENTBFM0I4QkUwRUNFRTM5QzVCOTgzREZF
-ODQ2NDUzOTJDNDBFQUZDQUFFMDdDMTBFMjA5RkQyMjgzODAKCjVDQUQ3Qzk4OUJERUUyQjMy
-ODdEQjZENzI1ODM4NTEzRjNGOTVFNTBENUEwOUZDMzRDNjIyODVDMUFENzQzRjBDOUFENDg1
-ODYxNzQwRgoKNDYyQUQ0MjZENkNDOTc0MUNEMTREOTdERjc5NTMzMDMyMjE3RTIxM0M1NzJB
-RDlENkQyRTE3OUZCODc3RkM1Q0NFRTJEMTZEQzQwMTk1CgpFM0M4Nzc5QTg5QjMxNjRCQkVD
-MjA3RjQ0RkY2NjUxOEU0OENGOTZCQ0NGQUY3QTE4RjVGN0UwRkJCOTRFOEQ0RjVGNUE3NEU5
-NUYyOTkKCjEwMTYzMkI1QTI0RUUwNDExNzVBMDcyNUQzMENCOUQ2RDVDNTdDRjQxNDY1QkQ2
-M0VDQjhBNjVDNDAwNDQ1QjA5NUQxNEExREY3MjZFOQoKRTFGRTcyRjVFQjI1RjQyNjEzMjc4
-Mzk4NEZCQTJBQUU5NjUxMDY3MjhDOTlGNkIxRjdEN0JBRkNBQkU1NUYwOUM0NzZEQTEwRDI5
-NDhFCgo0Q0YwN0U2NUQ0Qjc4REE2RjlFOUJCQjU5MjFCRDJFNzUzQjhCNjkyQzMxNUZFQjJB
-MTBDQTExNzU4NEE2NUI2MTYyMzYwQ0ZERENFRjkKCjE3RUJDODYyMjI5RTJFQUE5MDk3QUVD
-RTlBNTkxRTlCQURGOEM2OUJDNUVDMDI2NzREMkI1OEI3QkM3RjVDRkRGRENDN0EzMzdCRTUy
-RgoKNkNFRkFBRkRFNUQxMzk0QTM5QjFDMTg4RjkxQURFMUVEOTQwRjUzOUQ1MzEwRUJCNUY3
-RTFCMTFFOEYyQjA1MjJGQzY3NkFFNzcyRDkwCgpGNTVDM0RCOTU4OTQ2NjcxN0YzQkIxQUU2
-MTYzQ0NERjc3QkMwRkQ2MUY4QkVDRTc0OTFDMTNGQTZFRDhGQUI5RTAyRTM5RTRCNENCQjYK
-CjNCMTVFNUNDRDQzODFCMTU4OTlGNjAxMjEwQTM3NkM2MjQ2NDg0QjA0NkI2RUU2MTlCNDM4
-NTNEN0FEMTMzRTQyNTI2NjJDNjE5MEUyMAoKNzZBRDg0NjE0NkEwM0NBQ0ExNDRDMDE4Qzkz
-N0ZEQkFDRENDNjgwOTk1MkZGRDk0QTZGOEUwQzgwNDJFRjA2MEY0MTgyRkU3NzlEQjAxCgpD
-RjhCODBGMzU0NTEyMkZGNkRCNDI5RTZFQUFEM0JBOUE5MjY3QTYyMjdEMzM3RDYwMjc0QUIz
-NjFDMDgyQTU1MUIwQjdBMzJFQTdDM0EKCjZFMzcxRUE2RUE5NDc5QjQ5MTFENTg0MTQzMkUy
-Rjc1QkZGMTA5OTI3Mjk1NUQ3ODY0RERCRjRDODhDMjlFMzNEQkEwQTkwQkZFMzNGNAoKNEVD
-NUM2MEEwNzUxNEU3OEY5QTcyRjgxMjdBM0E5RUMyQjU3NUJDREIyMzAyQjlBRDY1NDk4NjJD
-MkExRjRGQTk5MjVCNDg0RDJCMUQxCgoxRDVFNDYwMEQ5N0ExQzY0MjUxRDAwRjRERUIzN0JC
-OTY3MTgyMjZBOUVGRDZFNkIwN0U1ODA4RTM1RTFEMTAwNjVDNkFGNjRCRkRDQTUKCkQ0MTNB
-RTMxRkQ5MjkwNUVGNkExNTc1MzkwMjgzNzEyMEExRjk3OEVFMzQxOTEwNjY1QTE1RjREQkJE
-N0MwNjg4OEExMUEwQzY0MDY2MQoKMEFDQThFMDI1RDM4MUE4RkUyOTMyM0RBNjJBNkQ3MEU4
-RUQ0MzRBNDhGRkJEQzk2Q0M3NjM2NjQxNDdDM0RFRUM1ODQ0MDg1NEFERDQ0Cgo4QzRGMjUw
-MzNBQUMzNDAxNTg5OTgwQzk2OEIyQUUxODk2QjRDNDk1RUY3OThDQjQ2NDAzRjIxRTE5MThG
-MkQyNTE2NjZENDNEMDlDOUMKCjNGMUE2NUQwOEJDNTU3NzFFQjNFNkU0MDgyQjdGOUI0MjQ0
-MDc5NDI0MEIyNEFFQzlGNEI5RUNBMEQ3OTIxOUM1MzQwNTkxN0Q0ODEyMwoKNjk1ODhDMjMx
-MzNDOTg1OTg0RUM0RUExN0JCMEI4NUVFQTdGNjI5QkM5RTJFMTBBNUU4MjlFNzcwQjg4MTA3
-NzY3NzlBMzNBODMzQTRECgpERDI0REU2NEFCNkNENUEwODlBODJFN0YyOTNBMjQ4NzRDOEM0
-MTI1Q0U0NUU4NkNFMjYzQUNCQjEwOERFRjY4NTEzOTIwOEE1OTJBMjcKCjc3NEYzRDdCOTIy
-NTBGRUI0QTIyODgzQ0M0MDNDNEQ5N0RCQTY3RUQwQ0VGQjI0NjgwOUJBQUVGMjAxQTU0Rjky
-MUQzNEQyMjJDNTY4NQoKNzA5QURCRkM5NkE3Nzc0MDM3QUIyRjI5OTVCN0M5M0QyMzA4NjMx
-MjgxREVGREY2QTY1N0JBQjA5RTE5M0QwQzlGNzU5QjAzRjNGNTBCCgo0QTVGNEJGMzlGNDEx
-ODM0MkY1MTg2QzRFOURFMjlERkZDQjdBNkQ2M0UwQzMwNjc3N0JCOTI0MzY0OEExQkUyNTY2
-MEY5MTg0REY5REQKCjMyRDFGQkYxMUQwOUQwOUU3MTg5OTUzODI5MTc5MEY4ODlFNUM3RUEy
-MzI4RTVGRkQ4ODEzNEQzMzcxOUJGRTAwNDhCODBFODVDMDhBMAoKQkYwQzUxM0QzRkY3Qjg3
-MEE2N0U2RDIyQTA2QzdCRjE1RjgzMkYwMUZEOEE0MzUwNzRBQUExQTNCNDBCNEM0QkQzNzRD
-OEY1NjZDQzVBCgo2NTI3QTQ0N0IwQjIyNUMyMTZGRDE2RjRGNzQwMjE0MEQwOURBMTA4QzBG
-RjNEQTVCMjYwMTJCODNGMUQ3MDgzRkUyNzM0NDRERTk2MzkKCjA4OTY5NUJFMjAxNzYzMTgx
-OTk2MUE2MzU2M0RFOTRFQUFBNTAyNDYxQzEwNzY2QTdDQTk0NzRBNDFFOTI5N0FGOUM4ODBE
-Q0ExNkUwMAoKMUE5ODE3MEQ4RDYwOEI2MzI1RkU0MjY5OUNDQkZEOTM0Qjg3RDIzMTUwNDc5
-NjRGQkYxMUZBRDJGRDhBMjg5QzExNjA2QzI1RTk5MDIyCgo3MDdDMDNCMDk0NUM0MDc2NzdB
-NzEyNjM1QzNCNTBEN0ZGREQ3QTUyREM4NDlBQzkyNUQ3QTlERDYzNkFFQTk3NDk2NzhENkFC
-MjI3NEIKCjYxNzY1NDhFM0U3QzM0QkI2Q0YyODk4NDlFQjc3RjdFMTk3NjI5MTM3NUYwNEIz
-RkYzQUEwMTFGOUEwQjBBMEVDODE4M0E4MjU4MUJERgoKQkVBMUJFNEQ2QUM1NTZBRTgyODEy
-MTZFQTBBOUNERTc2NUU2ODBCQjRGQ0ZDMDc3MTk0Q0VCRkI3NkY2MEZDNERDMzdCNzdGQUQ3
-QzQ2Cgo0NzQxRTYzRTY3MzE1NzQzNUZCNURBQkQxNzAxOTgyODBBMTdGNDg2NEQ5MkVCMDQx
-MjE3NDQyN0VCN0I5Q0FFRkZEN0RBRjM0RDJENzUKCjU0OEQzNUU1NzgzRTU1NjBEQkJGNURC
-RjczNkUxQzEwRjI0QkU4M0Y2MEE0NzYxNUM0MjQ1QTc4Mzk1RTBBODNFRDBBNzc3REZFREQx
-NwoKMjVGRjU3MzQxNjc3ODRBMTc0MzIzOEZCQTU4OEZGOTMzRTRBQkU1NzNCRjE3RUJBQzAx
-MzIzMDlFNDU4N0QyNDJCQUU3MTZFMDkzODY2Cgo1NDA3Nzg0NDAwNTA4QTA1NTZDRTBFMjMz
-NDdDRUEyQkI1NTAwMzlFNjVFNDMzRjVFNTY5RDFCRkVCNDdDRDAwNjgyOTM5MjQ5NTk5MTEK
-CkIwMDY0MUE2OUVFNTBENkJBQ0FCMDU0NTJDNkExOTNDMDJDQzlCMzZCN0ZBMzEyQUI1MTc5
-NEE2MzlERDc4MUYxQzhCOUUxQzBBQTk5NQoKMzM5QzQ5NTU4OEQ4ODE1MzY2MTEyMEE5RUQ1
-MDAxMkE2NTZFRDBDOUZGNDgxNjM5QTUxRUEwQTAxMEIxNTYxRjkyQ0FFMTU0MEMzOEZGCgpE
-QjkzNzNBNUM4MzY0M0ExMzVCNjU3MUQ1MTI4N0EzMTYxNkY2QUYxMDVCRDE3QzlCNjRCNkEz
-MjVDODhGMzBFMTQ0RENCOUQxNjBGMUMKCjI2RTNERDY1QTZDM0RDMTU1MDUyRUJGRjUxQjUx
-MzgxRDAyMkFCMURGMUMyRjM0RENBREM2NTYxQTI1MUJBQ0EwQkExOEMzQjMyMEZBQwoKNTI3
-NUM3MEQxQjVFMTNENTcxOUE3QkQ3RDFFQUIzRUQzODJFREM1Q0YwNjJBMDYzQURBRURERDE1
-Mzg2QkFGRURGNjBCOTM1Rjk0OERFCgo3NTA2NEU5NDMyMkYwNTYzOTVFOTVGQjcwOTgwRUY4
-QzlFQ0QyN0IyMjJBNDk5MDg1OUEyQjhGQUM1MUYzREUxQUM0QkY3Njc3Q0VFMjYKCjAzMjY5
-REI0NDgzMTkyNTc3OTRCOUFENUU3MDg1MDVEMERBNzI4N0Q1MzBEREE5NTlFMDhDRDg0RkI5
-NzFCOTlCOEQxOTY4ODA2RTdCOAoKQjAxRjIyOEE0RTlBODkzNEU2NjFGNDAzQjYzMTY0QTg0
-NzEzQjkwMTI2OEMzMUE4MDYyQzAwNUIwMEU2Mzk4MUU5NTNGQTNFNkZBMEY0Cgo3OEU5RDBC
-M0REQ0FFQkIwQUEwRkFFNjU3QkUzMEFFQUMxOEJDRTdDODNDMkM2OEIwRTMyQ0JCMTU5Q0Ey
-NUI3OTkzMDQ3NzNCRjg5NDAKCjA1RkI4OTNDMUQ2Mjk4QTkxMUIyREYxNzE3QTFCOTJDQjdB
-MkVENzc3MDcwQjhFMjkzRUVGNEM3MDAwRTlFNDk2QTcwNzAwMEJBMUEyNAoKQkUwRjc4NEZB
-OThCQTU0MzU4NTg0NUIwOUQ4NTVDM0FFQTYyMjcxNDA4M0YwQjFGMDUwMUFFNzRBODQ5MzQ1
-Q0VFMTlFMkI3Q0Q2RDA3CgpFQTM2ODFGMDc3NzRGMEY4NDQyRTdFMzgwNDBFNkUyMTFENjkz
-OTQ0QTMwRTI3RDYyNDIxODFDMjYyNkFBQTRBOEY1NDEyMTVEQjE4NUQKCjU2Mzg0RUI5NEFC
-MEQ0RURCNDk2NTVENTVEQUI4OUY1MjY2MzA4ODg4NEQyNDk0N0NEQ0MwRkQ4MUEwOUFGMDQ1
-MEM2MEZDNjY1QzczNgoKNDlERUU0OTIyRTAwQzNFRTk0M0EwMUZCMDVGMjk4MzM2N0U2QkZD
-NEJDNDE4RDdBNTFFMTQ1MjdCRDBGNUEwQTk1NUM5NDI2RjBGRDU2CgowOEMwMEE0NjREMUFC
-NEI0Njk2OTU1ODYyNkFGNkFDRTJEOTlFQkVEOTMwNjI4NzIwQkRBRkRCNTlFODk0M0I3Qzk1
-OThGRjk0NzgyNjkKCjQ5RDU4NkFBRjE0RjE2OURGRThFQzlEQTQxNTgyRkY0ODMyRkYwMTY0
-MkJFRDFFRjI0NEQ0NkMzMDhENDY4NzgyMkFDQkMzREVCMkUxMQoKMzQ3NDczQTc0Q0ZGNUI1
-OEJBMjdEM0QzRDM2QUEzNTQzRjJEQ0EwNDFENDJCNjBEOEM5RDc0ODNGMTM5ODNCMkUzNzIw
-NzhFQkRBREJBCgoyNjVDNjdBMTIyNDNFNDlDMzUwOTYxOThCNTBEMUM1RDQ1QUFFRUE3MkU0
-QkM2RUM5MjMzOEUwMUNFQjg0OTFCNEI3MjY4MkMzNUFBRkYKCjkzNUY4RUE3NkM5NDJFRTRC
-QkIzMUM4RTQ1QjE3QjgyOTY4NkMyM0Q2OEY2NDQ0MkZBOTM1REVEMTc1Njg3QjVDMDQyODU3
-RUEwNzY1MQoKMzI0ODcxQjdFOEVEQzU4OTgwNURGOTcyRkJDRjc5RTkyQUQxQ0FBMUFDNjMz
-NUQ5MUYwMTE5Q0FCMDQ2NjIwQTgwMjQ3NUZEQzc1RTUwCgoxRjJFNkI3Nzk1NEJFM0VBOTZG
-MTFFMTc1NjU3MzRBMEVBNzAyQTRFODE4OUQ5NTc5NTAxNUY4QjBGN0U5Q0FDNDQ5MkJGOUI4
-RDAxMDIKCjU1Njg1MUZENUM2OEU1ODlGOTlGQ0Y1MUI1RUEwREJBM0QzODg5RUJCMjAxM0FE
-QUIwMzU1NzQwQzg3NTBCMTgyODUzMjhGMDFEMkRCQgoKMUIwNzY4QzJGMTUxMzRCRDZENDJE
-NDNFMzRBOUYwQTg3MDYzNkUyNkYyNDU1RTNFRDkwMEY2NkI4MjU1RjNBRjBBNkYyMjE1MjZD
-Mjc3Cgo1MERDQjg2RDVDMkM5RUQ3QzgyNkI3RUYyOUExMURGRTQ1QjBBQUNENjc0MjA4MUQy
-RDgwRjc2OUFCOEI0NjM4QkE3MUJDNEQ5ODc2MDAKCkRENEQwNENDNTJCQTI2RjQwNzQ0MUUx
-QURERjRENzI3M0E3NTE2RUUxODlBMjU2N0VDOEU1NUQxRDMwMTlDRjcxN0ZGQzk5NjU1N0JD
-NgoKMTE5OUJERDUyRjcyRUYzMTg0Njk4NzQ1NDI3Mzc4QTU4QzI2NkZGQUQ3NDZCMzk3RjA1
-MjhDNDM1RERGRUUyQzYxQzhFMjRDNkZDQkNCCgpBMzBDQTJDOTRBOEEzNDFFMEI4ODc5RDY4
-NjNDN0E3RkI4MDVGMTJBMjUzMEJDOTc0N0I2QkZBN0VBMDU3REE0MUFGQ0Q4MDQ2RUNGMDQK
-CjZDMjU1MkRBNUU0MTlGMTVFNjAzMzlBNkVDNTQ3MzgzQzRCNjM5RkM3QTdFMDg2RUE2OUJB
-NDk5RjVBOTUzNTQzQ0U2MjBFMTU5RDFBOQoKMUJCMkM2QUQyMkQ2Rjk3NzBGOUQyQ0Y3MTlE
-N0FENjg0MTdDOEYzOEU5Qzc5MTEzMzBFQ0EyRTM0Rjg0M0JCOTdFNjk4NjkzMTZEOTkzCgo2
-NDlGOTE2OTRGOEZCOTY5NkRGNzUzMUY3QjMzMjRGOUQ5QkZCNTJFQkMyNzYzMjBDNTgzMkFC
-RDlEMEEzREE5NEQ4MDEzREI5MEVBMkQKCkYzNUQwRTFDQjM3Q0Q3REIwNUZGQzUxNEY1MTBF
-Qjg5MzVCRjU1QzBBRjY0NDA0NjRCRkVBMUQ5MkVDNDRBODIxREE4MjJFMzg3MDUzOAoKQUVD
-QzE0NkQzQ0RENUNEQTMyNEJEODJDQzkwOTlDOTBGMkQ1NENEMTI0NDM1RTI3NUFFQkNDQTA4
-MzhDN0ZDMjUwMjhENTZEREJGQUJFCgozMEIwRkJCMUVCN0M4QkQ2Rjk0OEQ1RkE4QzRGQkEx
-QzEwMTIxRkIyMEY0OTBBNTdDMDEzQzY1NDFDNTZEMDg4MkEzNzMzOTI1MjI3NEEKCkIyNzc3
-RENBMDlDRUM0RTQ5OTkxMURDRTQ1MzJBNkM0RDM1NDY0Q0U1QzE1ODUzREMxRDI5RjAyQkJB
-NTY2N0I3QUQzQ0IwNTE4QTkwOAoKMTk2MDM1NjE4MUM0Mjc2MEMxMENFREJCNDY0MTdGRTBD
-RkUxQjU0NUNBOEIxMjlCNjdGOTI1NDY4M0FCNUY4RjU2ODRCNTBFNzAyRDBCCgpBMjkzMjU4
-RDgxRjA3NTU3RTgzRjZFRENCNUY1MEIwQTlENTdGNkE4MDIxNzg4OTYzODNFQkIyOEQyNzQ5
-REIzOTdDRkVFQThCM0FDN0QKCjE4NjFENDg5RTdEOEUwMkIwMUI0Nzc0MjlEMjgyMDlBMTY0
-ODczMjdEQzNDNTMyRTM1RTRGNEFCMUQ4N0EwRTFBMEY4NDAyQTA2N0JCQgoKMzBENEQ5OTJC
-NUYyOTk3NDQ1MjAxQzc4RERCQkIzMTgwNkVFMzAyRTk2RTM1M0RCMzBFNzlBMzQxQjM4QUYz
-MjQyQjNFQzg3MDFBMzgxCgpCRDRFRURDNTY1NDIzMTMxMkQ1RDREMjU1NUEyRThFMkMyRkI0
-QzUzNjc5NTgxQjU3RURCNkYwMUM3QUVERTAzOTlDNENDNUVGRUM4OUQKCjAyMTMwMUI5NkIx
-NjhFM0QzQkExNUUwQTJDMjUxNkVEREYyRTlCNzhCQ0U5ODNDODIwMEIxOEFERUM1Q0U2QkZF
-QTAxOTM5NzUyNTc3OQoKMjM3OEM4QkY4NDFCRDMzMzIwOTY4OTFBM0Y4MkRFOEZENDYwRjQz
-REM3NUNDQzU5NkI4MkVERjU0NkY4QUMwMjVFRDMwREE2RURERTQ0Cgo3RUJFNkEyNzE3MzlC
-NTFBQUY1QUY1MjQ2MEE4Njk0MkQ5NEYxRDkxODE2RDJDRkEwNTlDMDRFM0U3M0YyNzg0MTg0
-OTJENTQ5ODlFQjcKCkNFMUZFQzlEMzExQUU2OTE4MDM1MTQ0RjA3QkY5ODc5MDlENkJDQzJF
-RDg4OTE3OEVBQjdGMzNGNTg5QTcxMUNFNDkyODI5N0Q5RjM3OAoKRTUwNzc1MjAyMjE3RUZD
-RTgzQUEzQzgzQjczMUMxRjk4Q0U0QTc4ODE2RTdGNkQ5RUYyQzU4QUQ1Q0YyNkE0Q0RDODQw
-NzVFQkYzQTVGCgpEOTc4REFFNkU1MDcyNjY3MEFBNjgzRkQzQkQ1MUQxRjJBNjZBMTVENDJF
-Mzc4OERGNEM1M0YzQ0E2RTJDNTlBMEYyQzFENkJBRDM2OUUKCjJENDY4QThENUZCOEQ4MkM2
-Qjk1RTFEREM3NTA3MUU1NjNFOUI0M0VCMUYyRjdCNjhENzZENTRFNzkxRDgxQkQxMUIwRDRG
-ODhCNEUyNAoKQjhFMDhBMDQzNTBEMDNGNTc3RTIyOEQ3MzE5QUJDREZBNEEyOUE3RkE5RkIy
-RDk5QzU0NTBBNjlFQ0Y0NzQ4RjYwMUYxNUZCRDlFRDg0Cgo1QUVGQzAyOTU2NUZFM0E5ODg1
-N0YxOTdFNEI0QTJDM0M3NzEyMUJBMkQ3ODUyN0FEQkM1MDEyMEI5OTY2NzgxNkZBRjVDNjVE
-MkYwQzEKCjU5MDFCMjk2OEREMkRDQzUzMzVCRDVEQzg3MEU2MzdFRkNDRjM3MjZGQkFEQ0Y5
-OEY3MkMxNDM5MDkxMDlEQjFCODkwMTdBMDI2RjQ1NQoKQ0QzN0Q2NTZDODJBMENBMDdENUU5
-QTMxRjI4QkIyN0UyN0M2NUIyQjQyMkJEOUVDMTJGRDBENkI1MDQ2Q0Q4QkM3RDI3NjA0RDNE
-MTQ2CgpDMjNDNDA5M0Y2REY5NDAyRDMxNzU4RDY3N0M2QkI1QkMxRjU5QjBCOEE2OUUyOTU1
-MTZDNjQwNzIyMTk2MDUyNzkyREM0MEU0RTNDNDgKCjAzMjY3Mzk4RDYxNDRDQjVDMjA2OTk5
-MTA3RDY3Rjc2Nzk0QUY1MDFEMzVCOEI3NzQ4MjM5NUY3Mjc5MEQ3ODhCMDc2QTQxNzk5MUJD
-MAoKQzRBMzYwMkYxOUYyQzA0MzE2MTY5MDFEQkQ3MjY4MEE5NTkxRjMwNzQ1QTZENEY5QThE
-NEI5RDY5MTE2QjRFOENCRUQyRkI4RjA4MjQzCgoyMjE1NkE2MENFMkZDQTgzNEI4MDVFMkY4
-NjdCRDA2QjY5QjU2NkUwOUVGMjFDM0I3QzJCM0U1QkEzNDEwOUM4QjY0RjdCNjA5REY2QUYK
-CjAzQzIzQ0VFQTRCOENCMTIzQkU3Qzk2MzdBQTQ2MTlDMjkzNDhBMUU3MTM4MkM3OEE3NkI3
-RDk3RTFDOTFFNjMyNzhEMjU3RTJFMkVBRAoKOEQxNkY2MkJFNzQxRDU5RUZGRDYwNjY2NkFE
-QjdCQjBBMzE5QkJDOTQ1MEMxMUVERUJFMzM3QzVFMDUzQ0ZDNTgxMTJGOEJFNjdFQkM5CgpE
-N0U4N0E3Njg1MTZFMUE5NzFFNDE5RkQ0OTAzMTQzQjZFMUI1RjlDRjQ3NTVCNUI1QjlFQTJB
-RjY2NTJBMzc2QUFCNkZENTRERDA4QkQKCjMxRDNEQTlDMEJBN0MyODgwMUMwNDhCNDNENEJC
-Njg5QjNFMkE3QkJDRUU5RTlEODBEM0JENzhBN0Q0RDk0ODkzMzc5QTcyMjhFRTVDQwoKOTMy
-MzMwQjUxQjBEQUQ5MDlEMDZERjRCOUZGOTI1Rjg3NUQ0RUUxRUIyNjkyRUNGMUEwMDI0NDE3
-MjczOTY5OTEzQUQyNUREQjhFRDExCgpCQTI0MDFFNURBODNFQzQ1MkM3OEZDNDlFNUJBM0FG
-OEVGMEFBRTJENTVEQkVENkFCMjFCNUM5MzU4QjFDRTA4QTQ1RTg3QzEwQzZGMzEKCjgwMUY4
-MjNFNkJBMEFEODgwNjA2NURFQ0JGRTAwQjlDOUFBM0YzMDBCMjc2NUQ0RDRFOUM1RDJBRTg3
-QUYwNUZBQjIwN0NCNUE5MDFEMwoKREI1QjI4NDA0OEE4QUEyRjBDOEY1MEJDMjk4MzU2NDQ0
-RDI2NzJCNkUxMUFERDEzNkU0QjY5MjZGNDcwNzYzMTA5RkVGM0FBRjFFMjEwCgo4OTVDQkY3
-NzEzN0E2MTQyRUVFOTU4M0QzMkMwNkJENzgwNTUwMjEyQ0M5QkNBMThCNDk0QTBCMEEwOTVG
-MjNFNEVDMkNBNjIyQ0Q1NjUKCjQ5RUQ4QUU5QTgyQjRFNjBGRkQ3QzczRjZEMUM0NjIwOTRG
-NDk0NkUxNjQxOEQwMjMyMDhEOEJBRjQ0NUUyN0M3RUQ5RjM5QTdGQzExQgoKRDRBNThBMEJD
-OTk2N0UxQzU4MUVDMThGODY2RjVBRUI4Njk4RTcxMDc1MEZGNEEwQ0Q2OTVDMzE0Q0EyNDgz
-QkYzRjVERjE0ODg4RDU3Cgo1ODc1ODc4OEYwRDNEM0FGMzU3RTA0RkM0NURCNThFREUxNUFE
-NjRDN0YwNjM2NEUxQjJDNjREQzE0Q0MwMzQ2QUQyODU1NzgwQThDRTcKCkZBNTM5QUYxNzI4
-NDgzRkZDRTgyQjM4OUM1NDZFNTU0RkU2MzE0MDZBNzkxQTAxQTFDRjg5OTU1NUUzNDYzNEI1
-MkYwMzlBQTk1MDg2RQoKRDY0QjUwNTM0RENBNTQwMTJGREY4NjdBNDE3M0Q5N0Q0MjBFOUY1
-Qzk3MDY0MkNCMTJBOUZFOTBBOTc1RUU3QzNEMjdDNDM1N0RCOUU4CgpEQjlBOUFGNzhERkM1
-QzA1NDNDOTI2ODU2QkQ0QkRBOTgzMzg4NzVGRDk1QUJBREEyNjBDMjE4NThCMzc4RDAzOTFG
-NkJCRjE1QUIwQkQKCjcwMjVFNjU3NTg4RDlFNjM2NERFMUVGQTA4ODEwNzgyOEZBNDI1MEU1
-M0U3NDg3RjhCRjg5MTk2MkYyNzgzRkUzMDUwMDJDRUQwM0QyNAoKQ0VGRjVGNkU5QzNFMzIx
-MUUwRDQwRkU3QTlFODMzMTRGQjlGNzJGMURBQTdGRDVCODdFNDQ3NUZFNzhGNTQyQ0QyMkFD
-QzRFNDA5MzNDCgoxNUNCRjE2QjI0MDA0MDQxNEFBRkY4MjkzNzFBNjdCM0Y2REFEQ0I3Mjgx
-NDEwMDM1RTcwMjRCNTY2MDQzNTZGOEQyNEQ4NzlDRjRCOTIKCkMzMTJDRTU1MzhDMjdEMzI2
-RDU2Q0RBMkRCNTJEN0JGQTAxODRFQUJDN0MxMTYwRENERTY1NDQ0QTFGM0QyOTM4N0E4RTJD
-NDFCNjMyRQoKNzc4ODEzRDNGMUUzMzVGOEEwNEYyNzdGMTQxNkRDMzA0MzE1OTU4RTM2NDFB
-N0Q3RTVFQ0M2OENEM0RENTQwNDNDQUZBQ0I5QjMwN0M5Cgo1OEQ2MjM5RTY3NTQ5MjBBMEM4
-MDgwNzgzNUEyRjEzN0FDQjNEMUY4MjhFQ0NCQkREOUE1NUFGQzY0NkVGOTNFQUMzQUZGMTEz
-NjU2N0UKCkRBOEY3NDFFMjQ2MDRGRDQzMjJCMjBGQkEzOUUwMzc0OEJFMDI3NERCQzZBQTg5
-NTdEMzBENzg1M0VCOTZBNjVBOTg3OEREOTRFMjU5QwoKMzhDM0ExNDRFMTI2OUNBQ0E1NkIw
-Qjk1NkM1QzQwQTZCNTk2NDI2RjQ5NUU0MzhBQkYzQTU0QjRCQkYxNjEyOTlGNTk0RUMzMDVG
-OTVFCgo4QkZGMkZCNzg4RTA2NjQyMEI5QzZFRjcyRjZDMjg1MzZENjZFNkYwMDMwOUJCNjlF
-Mzk2RkM4NjQ2MjZFNjdFODREODhERjRFNzQ0MjIKCkE4NDZDMjk4N0NDMThFNzBBNUI0MUUy
-NkI4OTdGMkRFNzlFRkRBNkNEOTlGNTk0NTY0REE5NDZFQzEzOTcyQUI2RjdERDczN0RCQjE0
-QwoKOTQwOTI4RTc4MzlERkNDMDM1MkY3RkY2MDU3NEM0Mjg0Mzk4MTU5RTQ3RDA0ODdEMkQ5
-NEQyMUU5MkJBMzVCRkYwNEZDNzRDNDM2NTJCCgoyNjQwNTEzMzcxNENBMTJBQUYyMTFFQTJF
-N0MzOTdBRjExRTlENzc1QzYxNDYyQTc0MkVDRjk5OTJCNjlGRUQwQzE1MkZFRDVBQTk3MDcK
-CjI0NzlGNThGOEQwRTI4MjlBMUY3OUE1MkVDN0EwREEzMTJGQUU2QjIwMTBCRjcwRDBBRjhD
-Qjk5OEY2MjZGRDI2RkUzQzUzRkU0RENFQwoKOTE2REYwRTlGQURGQTI4MDJBQkU5NDRGMEJC
-RkQxNjZDRDM5RUJBRDNGQTRDRTJDOUFCRjAwNzg5MzY5OUZGMkMyMTA2MDA0RjNGNDc3Cgoy
-NDIwNjhBN0ZDQ0FFNzlCODc5NUY3Mzk0MTAyNTM2RERFRkMxQ0JENjYyNTE0MjMzQjVEQ0VG
-MUMzRjcxNTYzN0JENjk1QjFFMDcxMzYKCkU0MDAwN0M3MjM1Q0NEQ0E5OTFCQUYxNzNEOTE1
-RDVDNUYzM0M0RkRGNjUzRDUxMTY2OTk3QjZBMTRFOUQyRjFCQzI4OEIzNEU0NEREQQoKQThE
-RTU1QUE4NTYyNzM3NDk4OEEwOEQ5NjVBM0UxQzg0ODdDMzEwQUYzMkQyQzBCOEU1RDM3N0Q0
-QjY3NTI5NTRFNERFRkU3MkZENzAxCgoxNjE1RDdDM0VBMjVBNjczM0VGN0VERUFBQkM5OTk2
-RDdGNkMyREQzQ0E2MkEyNDdFMkUzREE4MTE0QUIzNjMwQUY4NzI4QTk4NTRFODQKCjQyOUEy
-NzYxMjZEMTg3NTZFMTI0NTQwOTVFOEQzMEJFRTVEMzMyN0FFRDU5QzFCRkZGQ0NBRUJBQjAy
-NDQ0QTM4QTg5REU2REQzQUQ4OQoKNEVEN0U0QTVDNzYxQzhCQjc3Q0EzOUY0Q0MzREE3QTcw
-ODUyRTI3RTg4QTRENjIwMEU5MjJBRUY1OTNGMDkxMjI2M0NGNDM4MUExMkVCCgpEOEY5NEFF
-MjJFQUJCRDIzOUVDNUU3QUYwM0VBOTEyMEY0REMyRTgyNTNENTU1MUNDRThDQTYzMzY3MTRG
-N0I0QTRDNEI0Q0U1NjVGNzEKCjI2ODVFMTM2NzZBM0I0ODgzMTE3Mjk0MzJFRjI0Q0NGOEJB
-NDgyNjVBQkVFREIyRkJBNTNGRjIwODdCQjlDQjk2ODJFOUREQzk5OTE4QwoKMDA4RkIwRUIy
-OEVCMUI1RDlGRTY3RUE5RDJENEZERTFBOEZFMUQ4N0NCODJGODEyNTg1MEE2MEQ5MjQxNjFG
-REQ0RTdFN0RBNTk1NDMwCgoyMzM5Q0Y2QzYxOTQ4OTQ4NDVDRTVBREJDOTc4ODNDQUQ3RDM2
-OTU3NDY4NTZBQ0YyRUZBMjFEQTVFQUQzM0Q0RkY4Njk0Mjk4RkY4QTUKCkFGRTlDQkIxQzZG
-RjE3NDMxNzlGM0VFODJBQ0U1QUQyQkY4NjQ4OTM4M0E5N0YwNUZCQjE4MDk4ODlEOUVBMzM1
-NDRDMjYzMkYzM0VDMgoKNzExOUIzNjcwODI0MzMyRTdGQkNGNTlDNzFDMDgwQThFNTlBM0FE
-Q0EzOTI1QzY5RDRCRjE4RjFFMkIxRjdGOUMxODRGQUY3QjQ3REYyCgoxRDc5MDVCNzhFRTkx
-QThCRDczM0Q3NTVBMDQ2NjI2QjI1ODY1MTZDRDM1MjdCNkVDMDlBOTA3ODRGNUMyMkJFNTQ2
-NUMyNDk2MUU0MjEKCkI4RjMzQTE0RjI4MENFN0JCMEIyM0Y5NzAyMzYwRjU4QzM3RUU0Q0E5
-OEFDQjQ3RTNFRjhCQjFBOEE3M0Y5QjA4MzU4NjMwOTQwN0JDNgoKMUIzNEQ2N0E1NDE1N0Uz
-NzI4RURFNUE2QTlEMkRBODExQkNBNTIxRDk3QzY2RkI0NEM3NzI1QjY5QUFDMzU4NTI4RkJE
-QjY3NEIyNTU1Cgo3RjAyREFBMTlFQjRFRkM3MTQyM0M4OUY4Mjc3MzcyQjAwREI0NUU3ODNE
-QjI2MUJERTZBNzM3RjY5NzIwMThFNThGQzM2RkFCNzJCODIKCkU0RUI0OEJBNDVGQkQ2REE4
-MDc4Rjc1OEZEQzExNTVDMDZCQTdCQjQ5NjlFQjgyQTVFQTYwN0YyNTdCMEJCNjQyQjkyMzVD
-NDE0Q0JDOQoKREM4ODJFNEIwMDEyQjlBNjAyNEI1ODRGRTY4QUJDQjBGNjBDOEJDQ0Y4RTE4
-MUFDQjc3ODNEQUVDOTlCQzdBM0E4QUYwMjhCRERDRDBGCgo0MTBDOTQ1RjA3NzkwQzA2RUE2
-Mzg5OUYyMDEyMzI3QUQxNjA1NjJERDAzOTBERTU2NEQ5MDA0MEFDMzAzNzU5OEM0NDQzRjA5
-NUZGNkEKCjNGNTI1MEQ0QkUwOTQxOEVBNDMxNThCMjc2NjFCQzI1MDBFQTdCQkYzQjkxMUM0
-N0ZFODU0QTgxOTIxMzgxMzY4NERDNTk3RkU1OUFCMwoKRURCNEIyOUFFMUU1MUFGOERGNUE5
-N0VBNUIyQTM4NUIwMjE5Q0FBMjQxM0U3N0M4RkZGMEFDMTE3QUQwN0RERDEwNTQ0NzRFRjA4
-Q0UyCgo2OTg2Q0I3REUwMEEwMTA4OTM0N0UxNkYzNkMwNkQ2MDgzNjQyRUJCREU0MDJBOThB
-QjQ4Rjg3MTc3QUY1RjZCOEYwMjM0RTMzRkM5OEIKCjAyRTNDNzhDMDgxM0E3NDY3N0FENTI0
-QTMyOTIzM0E0Qzg5QTY5MUQ3NTY5QkM1RTI1QzVFNDZEMTYwRkNDNjlEOTVBOUIxQkM0N0ND
-OAoKMDY5MTdFRTQ0MTU0NkZBMzQ1MEE5QjMwQ0M0QzRCQjRFN0NCNDYxRUNGRUM3MTE1ODkx
-QTI1MkRFQjI5RjIwNkQxRkI3MzMwOUI1MjU3Cgo2QTlDMUZGQTQ4QzgxNzM5MTY3QTkzMzk0
-NjA0QjFBOTFFODZDQkJCNkQxNjRFNUQ3NjU0NUM3NTE1MkRFMkUwQjRCMDlGNjVCRUYzRjMK
-Cjg1Qjg0RjI5RkE3RkQwQzk0MzRDOTM1MzNEN0VDQzRERDhFMUFFREFBOEIxQTIzMUVGRjYy
-NjZCNjYxRUU1RjRFQ0Q0REVFQjE1NEZBRAoKNzAyNkFDOEZFRTY3MDgzOEFDOTg2RDQ4QURC
-QjE2MEE4NzNGOUNDOUY2ODdGNEY0MEE1QjZBMDgyNzEwQTYzRDEwRjkyMzkxRjM0MUQ1Cgox
-MTQ3N0FGQzg4OTk0RTQwMTZCQ0Y2RDFFNzYwMEQ1NUFFRDZFMDJCRjAxQjVDQ0ZCRjBERUZC
-QkJCNjk3RkVBQjNDOUIwMTI4ODJBQkUKCkUwMjQzMzIzMzBEQjAyQ0U2MUVCNUM0M0M1RUJE
-Rjk2RkY3OTkyNDlCRjY0MTAyRkY2NzBCOERCQTI5RjQ4MTVDMUE0RkJDQ0YyM0IxNgoKNUFE
-OUU4RTU3RjU5NkE4QkNGNEMxREQxMEVFNUEzREQxMENBMjBCMTY3NTgwOUExRDI4QUZGODVB
-NUM0RTkzRDUwMjBEQzdBNDVBMDUwCgpDNzIyQUY1M0Q0MkVFQzI5REZGMEU5MjRGOEE1NEY3
-NUY5NjExRDZERjA1RTFBNDM2QUMwMUJFQzA5REMwMTQzMTU2RkZENDdGMzIyNjUKCjlFMEY2
-OTY4RkUyRkQ2MzA3NEVFNzdCRkU4QTRBODY2MTMyODMzOTMwRTEyOEM5MUIxQ0NFRUM3MUJD
-MDJCQUU4MEREMjU5ODQ1MkNCOAoKNEIwRDc1NkU4RDBERENBM0Y2NEQyRTY0QUIyMUM0ODJG
-RkVENkE4NTlCQzNCNUQ2MUYxREI4MTJGRUUxQUYwRDQ4MjIzOUZDQjhBNEM5CgpCRUVGNjMy
-MDY5NjM3QUQ0ODA1MERBRTAxMkY5MUFCNEEyNDQ3NTE0MDNDOTgwQzUwRUU0NEJFMzhEMzNE
-NzY2QTI0MjQyNjg1OTdCQkUKCkQzNkUzOUI1OTU2OTNFRkEwMENCQjY0ODIzNzJCMkMyMEVE
-ODk1NjM5ODNDNkNFREQ1RDI4ODE5NkQ0OUQ4REZFNDY3MEM0QjVGNDU3QwoKMjFDQUY5RDg5
-Q0E3QUM5RTAwOEIzRjg2Nzc2M0EwQTIzNDk0RDRGM0RFMjI5Rjk4M0ZDOUExMzM1MjVBNUJB
-MzNCQUIxODRCNzNBQzQ0CgpBRDg1MTAyRkYxQUE2OTE1RDYyRUYxMEI5OTJFOUI3MTU0QTZE
-Q0NDNDc0REYzNkZBNjY0MUZFNzQ3QjFFODBGRUE4MEREQkE5RkMwMDgKCkE3MUUxNTUyQTMw
-Rjg3OTU2QTZGRTI5OEQ1NzM3QkNFMjg1REFCMUY3NDY2MjJCNjE0MEU1NjMyOEREMEIzNDNC
-QjdGNkVBNENCNzNBMQoKQUUxNDQ4Q0NEMUJCRDFBRTdCOUY1QUVFMkE5NkM1NUQ0QjUxMUIy
-QzM0ODlEOTY0RjZDQUZCNzA1QjE1ODcxOTJDMUI5MzYxM0RFMjYxCgo0OUY2MjNBOTc5QjFG
-QzhGODQwNTkwQ0YyMkRBNkJENTYyRTYxQzExNkQ2QzVCNTQ2MDAyOUNCNUY0NkMyNjYzRjgx
-NDI4NEY1MUMxOEMKCjBBQjFGOTk0QkVGMDhDQzc3NUI4N0UwNjYwRDhFMzk2RTQ4Rjc1NDY3
-NjgzNjE3NkI1NjgwMzREMjZCNUUzMkY5QzAwQjVGQzA2Q0JFMAoKMEMxMDA1OTU3RDIyQzc1
-REUxNEM4QTY1NzA3RjgwODFBMTI5NTVENEVBNTY2M0Y2QUI4MjNFRDNDNzA5NjI3Nzc3QkI3
-N0FBQ0YzRTlGCgo3RDQ0MzAzQUU3OTMxQTAxQUMzMzQ2NDkxMTk0NkZBNzkyNzA2QTM4QUFB
-NjQ1MDI1MjZDMDY1NDhEMjIyNkIxMEZDNDVBQjMzNzhFRjgKCkEyQjdBOUU3OTYwRTA4RDcy
-RUUwOEU3MUU2M0UxNDlFQTU2QTk0MUVDQ0E5MzhEN0UwRTRBOTQ2OUI4NUZGMzIzOUYyMEUz
-RkU5MEE5RgoKMzU5QUFBQjc2MjNDOEZBMjFCQ0VEN0I0MUQ5Mzk3RTdDOTc2MjdDMjBFMjI5
-RjI2OEQzRkNCRjU0M0RFQzczNDI5NzE1M0U5MTY1NzRDCgpDNDcyM0NFNTQ4REY4Q0MxODdB
-NURGMzg0NDg0QzgxQTkyMUE5MEU5MUU2Q0NBMEY5Q0IxMTI3RjAzQ0JDMEUwMTg0NzYyNDI4
-MTJGRDQKCkM3NUEyNEU2NzVFQUQ3OUY2MjYxNTA0RTcxQ0NBM0U1MjM1RkM3RUI0Nzk4MjU0
-MEFBNUE3NTREMUUyOTYyMTM2OUQxRUE4RURGMEJFMAoKOEQyMDk0Mjg4RDAzRDc3Q0ZFQTg1
-RjA0RDE3QjNGNDFCMDdFNkU1NzY0OTBCRjEzMUQzRjc4MjI3RDU2OUYzNjkxRjAxMzVGREQ2
-RkYyCgpEMkIyMTJEN0Q0MTIxMUExQjdFQTJDOUZFMkQyRkI3OTA2NURCNTMwMTQ5ODgwMkI2
-RTFFODE5NDRDNTc5OUFBNzhFM0RDNkZDNzFCOTkKCjVBOEM1Njk1MDFENEYyNDQzN0RGM0I1
-MTBBMjM4RkJBODEyMEFBRkY1ODIyNzI4NUM2QTEwRDA3NTZGMDRFNTE3MTBEMzRDNUIzRUMx
-MQoKNjMyQTg2QkREREE4QUExMkE4QzVGNDg5NDhFMzY3RkU1RURDRDNEOEVCODVFM0QyOTU2
-MDJERTE5QkMxRjVEQUU5NkUxQTdBOUNFMTkyCgpGOUY5REFEMEI5MjFBOTU3MkVEMUQ5MkRB
-QTlBRkFDQTU3NjE4Nzk0MDBGQzFGMTFGM0FDMEMxRDNFRjlCRTVFQUU3RjdCQzk2M0NDMUYK
-CjE1QTNEMzZCNEE0QjI3MjVBQThEQkM3N0M2MTkwNUVBODIwQUEzQ0MxRUFDQUZCODE3Q0E1
-MzBDMzJGNkQyODFGMEY5QzQ1RjE4REU3NwoKMDlBQkYzMDUxQjU4QjVCODU3MzUwQkNGN0Q4
-M0Q2MjFCODlBNjkxN0YyRDMxRkNDQTMzRDdGODQ5QTc4QTAyNDExQTE2ODA1QjU0MkNCCgpC
-QjlFQ0EwODdDRjMyMERDOEE0RTRFRjZBMUIxOTEzQTU0M0U2MkQzNjExRkQxMTk0QjAxOTk4
-N0ZDMUI0NTQwMzdDNzQ3NzNBQTVEQjgKCjNBOTE2QUZCRDU4N0MwM0NBRTJFRDdCREU0QTcz
-ODcwNjA0MUIyRDIzMzIwMzlBN0RDQUZDQzQ3REFCQURGRUFEMjdGQ0Y3MDcxM0RDMQoKNzUx
-QUUzNjgxMjY3OTYxRUUyQ0NBMUIyMTU5OUMyQkEzRjM0NDhERjRCRDBCRjZEMDFEOEVEMkIy
-QjcwRTZBNDI1ODZEOTg1REZGRDcwCgpBNjVCNjVBQTJDRTVBQTE2REI2RjVCOTIyODQ0NDlC
-RDdDNzJEODAyQjM4NENCNjNFRjdCN0FFNTFBQ0YxNkJFNTc1MDY4MDA1RUExQzEKCjI4OTk4
-NzNFOUZBNzZDQkI2MjY2MzJBRjQ3QUQ3QTBGQjNBQTY0OTlERUZGNTQ3NjI5OTEwQTFCMzAw
-NzhGMjNDNjUzOTY0NDZDNTM5OQoKODRCQkQwRTQxNjQzMDc5OENFRjgxOTZEMDkzRTMxQjVG
-QTY2NTA1NzRGMzBEM0ZDNDc5MTc5RjAwQTM1MDcxOTlCREU4MkJDNzE3M0IwCgo0RUM4MDE1
-Njc1QUU0MkU5MkUwQ0MwRUY3RDlEODA5RURDNkZEQjEwMzY1OERBNzhERUQwNzVGQzYxQ0Qy
-Q0FFNEVBRkYxNDU4RjEyNjEKCkQ5QkUyNjE2NDJERjMyOUMwQjBEREI1NzEwM0MzOEU4MjNF
-M0JGMDlDNTk4ODEzODhBQUY3RThFOEJFNDE5MEI4MTFDRkY4M0FFODRCOQoKNjY0QUNCMzA4
-QUFFRTI0MjUzREIwQTU5NTIwM0JEMzA1QTE5RjJBNDFBMDU0QTYxNkNGMDI4NTBBRDREMDAw
-NDVFQzAzNDc5MkE3MDEyCgo2RTdGMTBDRDM5QzkxOUM1RTZCNzdCMkY2MzEwODI2NkFDMzg4
-MkI2RkU1QUNENzMwQzRBNzlFQjQ1NDk2MDREMzFCNzBCQjgxRjlEQTMKCkIzRDhCRkFFMUMy
-QTdBMDAwQTU4ODRDRUMwMjVGRjQxN0QyMDM2MkE5Mzc0RUNGNDA5MzZFOTNFQjc3MzYyQ0U2
-NjM3MEYxNjkyNzEzNQoKNzRGNjBFOTU2QTY5Q0ZCQjcwQkI1OUEwQ0M0OTdCRENGOTEwODc0
-OEI1NDY2MEFCQUYzQUY3QkM1N0U3MEJBQjE5QzRFQzY3MzgxQzBBCgozNjcwOTA0MkFGRjk0
-MDRDRDYwMzlDQzIwNzdDOUJCQTU1MjQ5QzY1MDk3OTc4RDIwRTVBRTlDQ0UxQTI3QTc0NzUy
-RUJDRDRDNTM1NDYKCjNDNzRCOEQ2RUExODdDMkQ1NzVFODlENUNGOTAzOERBQkE0RTVCNkIy
-NDBDNUE4MjYyMzVGREFFMEYyMkU4QjREMjlFNEE4Q0RGNEVENgoKQTkxODc2RkYwNkY1QTkw
-MUI2RjM0QzlDODEzMkUyN0FDMDFCNkI1N0FFMUIzMTJGQzFDMjc4MEU5NjMwMjg2QzkzM0ZD
-NUFEODRCQ0UyCgpDRkQzRENFQTFDN0Y2MjFBMUM5Njk1RDY1ODk1QzMyRjkyMjZEMTRFRjMx
-QjQ2MUZCQjk4RDRFRDNDMkVFNjI0NzdENjY1Qjk5OTkzQTgKCjBGNDI4ODVBMTJFNDU0Q0Y4
-RjQ1Qzk2RTAwMkJBREM3MjE1REUzQjEzNDFDMTFERDVCNzgxNjdENzZEMTM1NDYzMDdCODkw
-Rjg3QTE5OQoKRkMyQ0RCOTUwNjRCQ0VEOEZDNUUwQjUwMkU3QTU4OUVBNkNDMzZGMkI5MzVF
-MDVENkI0Q0JEMzhFMEMzQkI3MTQ0MUYwNUZEMUYyMzRDCgo1NDkwNTRBRjdGRDgwNjUyNzdB
-RkRCODkxNDlGREI2Q0Y2NEE0RTUzNzVEM0VBNjA5RDkwRDk0NUU4N0E4QTJBQURGN0Q1OTY2
-N0FERDgKCjE2RThDM0Q5RjkzQjA1MzQ4OEY0NDA4MTc3MDQ4RUE3N0EwNUY4QjM4M0UyNDkw
-MjJFRDM4NTNENkZBRkQ4NzVGQTM5NzU5QUQzQkU3QgoKRUE2QTI4QzQ5MzEyRDY4MjBFRjJC
-RUFBRUMyMDU4Q0Y5NzU2QzlFQUU1MTdGQzA2QkZCOTgxNDEyNjZENzBGMUY2NTFCOTBBMDY5
-REVCCgozQTJFNjU4OEQ5QkZDRUIzRjRCNUE4RTMwQzJFODI4MjkzNzZCRUM5NzlBNkJDRjNF
-NERDNjlBNkZFN0JCQkYwNUI2NjM5Qjk3MTkxMzYKCjFBQUEwOTlGNEJDNDA5QzE3OUUyNTI0
-NTJFOEM4MDJBMTUxN0Q5QzZGREEzRkIzMDZFQ0JCQUJCMkREMDcxNzQ0ODQ3NzY2ODdGNEVC
-RgoKOUEwOUFCNUYzMjE2RDlFQjg1NTA4MTI1QjIzOUZBMjI4NjdEOEM0N0QyOTE5MzkwRTZG
-NTYwNkRDOUREQUMyQTJDNEU0NDVGQThGQ0Y3Cgo0RTczQjA2QzZDODgwODVCMTE2RUUyODc2
-RTFEQTgyMEYyQzRBMkVDMjlFMDM2MDY4RTVFNTJCRDgyRkJFRTQ3RDY3MUIwNDBENzU3NzIK
-CkE5MzMxNEFGOTI5Nzc1M0EwMTIxMkZEMkE3NjI0REY4OUEzMDZBMTk0MTI1OTI2NjI2NDkx
-QTNBRkI3MENDQTVFRDBGQjE0RjYxNjlBNwoKMzRGQUNDM0QxQkM2OTM4NzE5ODVENTFCMDlE
-QTc1REU5MjdCMEY1RTU5OTZCQjNGRTM4NTMyMjUwRDc2QTZCODc2NzhBRjEzMzMxQTBGCgpG
-N0EzNzcwMEJBQjMxNzFDNTExREVDODhFOTk4RDI1MDBGRTBENzJEN0U2M0REMzVBRkE5ODI2
-NjQwNjVGRDJGREM1OTk4QzlERjhFNTEKCjY5QzNGMDM1Mjk5QTVEN0M1NDQ5MEIxNzVDQTQx
-RTQzODgzODM5QTZDOERERUM4MjEwQ0UxMzE2OTU3NzdBNjA2MTMzRTIzRDM2RTY0MwoKMzMw
-REUwRDcyMDVENTNCODhENkVDQjVCRTZEOTU3OTBDQzdFQjdBMzNGNTQ1RkEyQjFCMUZDRDdF
-ODg3OENENkNCNUUwNDJERUU0RkUwCgo4NzlDQkI4RjBCMjFDMTU1NTg4QjA2NzJEQzZDOEY4
-MzI2NDhFMjk5NTE5MjU4MDE2MzE5QjNCRTcyNUQ1ODY4NEM0QkU1RDY5MkZENTAKCjI1ODkx
-MjIzQTU0RkUzNEYxMERFODE2QzQwRTVCNDk0NzAwNkFDRDgzNURDMDFCMkFGODRCRjQzODBB
-MkQwRDU4MEFDMzg3OEY1RDQ3NgoKREUyNTY0RjMxNTIxM0Y3RENENjY3ODUyNDA5NEU4NUNB
-NDlCQTgyNDk5QTVDRDY5QjU5Nzg3MUVDQ0ZCMDVDQ0M0NzkxQjhCQkJFNDVECgpFODIwRTFG
-NDAyODg1RDk0N0YxQUU2MjI1NDUxRTVDMzNDOEU2NUY3RDc3MTRDNkE2RTU5MTMxRTg1OTlB
-NEIxNkVCQkVGRDJBODZGRTgKCkUyNkQ5Qzc2RTM1Rjg1RkQ5RjhEQjZFRDM3NjBCMTIyMjRF
-RDM4OTc0Q0EzOEY4OTRGMDMyMkNFRjg2MzRGQ0E2RjRDNTY0M0I1RUFBNAoKRDlFNjUyNzRC
-QjVBMkEzODFEQkU4QTEyOEJDODhDQjRGNkUwNEMyQzVDNDQyNUYzNDc0NzlEODYxNjRCQUEz
-RjE5MDAwNTA1Q0JCRDI4CgpCNTJDRDNDOEEzMzc3NEY0NTk5OTEyOUY1MUE3QkYxOEE1NEI3
-MTczOEM1MzRDNUZBQUU1MDEzMTVFQTU4NjlDNkQxQ0ZDNjdEMEFCOUQKCjU4NEI0MDI5NDQy
-NUFCRTM1RjJFOTIzMDI1QTcyMjc2Mzc4NzZFRDNCNzQ2QjY2NzRENTJDQzREQTY3OUQ1MzE3
-REVGMEVENTdCM0M0RAoKOTMwQTk2QzBGQjY5MkRERDJDQkNEMTEzNzk5RkM0QzgwMTQ3MTk3
-QjdCQzlGOTUxNEFBMEE5NkUwNzhDMzYwMUIzMkE5RjY5MERDM0FFCgo3MEY0ODFERDQ5Njg5
-OTVBRjY0NUZDMEU5N0FBQTIyQzk5MUFDMTFCRjNBNThERjQ2RkY4NENGOEI3NkUyNDhCMjNC
-OTk4NTAzOEU3MzcKCjBGRTY1RTBBRTU1Nzg2NUYwRUVDNjNFRDdGNEE5NjQxQ0YwMjgxMEUz
-NEI4NzY3NUZEMDhFQkM4ODAzNjg0OTFGQzZDN0QxQzlCRDI3MwoKNTU0NEJEQzk1Q0UwREEz
-RkYxMUJGODhFOTY4MEE4QzhGOTFFRkQ2NUZEMDRDMDA5NERDOTRDMjlEMDA2NzM4Q0QzNDBF
-QUUwNTg1RjBFCgo2NThERTJEOTkwNzIxODYxMkIyMTcyMjhDREZCOEZCNDg5QUVCRjdENUMw
-NUM1OTYyRjY3RTBBMzk5NzRDNTY2NUIzMzIzNTNGQUUzNDEKCjlCMTA1ODM5ODQ5Q0RCODQz
-RTkwOEVGMTg0RDBERUEzRjRCMUM3NjY5QTk3QzAzNUE4NkZCRUNGMkQyREE5MDVFNjgzODMx
-MzE5RDYyNgoKMzg5NUREQkUyMzhDRDU0OTNDNzlGOUVBMTk5NTg1NDVGQkZGOEIwODhFODZG
-NkQ4NUJBQjZDRDdGQTAzQ0I4NkNCM0FCOTA1MzI5QjZCCgo1Mzg0NTZBMUM2OEEyNjBDMTM3
-RTQ5N0YyRDdBNjI3QzM4RDU3MDMwMjcxMjA5REJFNEJCRjJBNDg0NzQ1RTZGQ0I5RkE5MzBB
-REJCNjEKCjlGNjQxMThFNzc2MjA5MjU0NDlERDZCRkE0QUQ4ODM4QUY4MUJFREQzRkU5RDBD
-MTVFMzdCQTQ4QjMzRDYyMDFDNjcxMEJDQzMwNjRCMwoKMTZCNTM1RTA3QUZGRDYwNjVDRDVB
-MjczOURGRDA2MUMxQzQ2NEI0QUM1NTI2QzRFOTNENEYzMkIxRDA5Q0E0MjAwREFDQjc5REM4
-REYyCgo4QUVBNkMxRTlCRTI0NDYyMjJFOEZFMTQxNzg2RkU1MTQ2QTMwODAxQzA0NDlEOUU3
-MTQzMjI2OTQ4ODYzRDU0MDI3MTBBRkVDNDNGOUMKCjMwRDg1OTE1RTAzNTRCOTZFOUJGNDM4
-RTYyRjlGQzNFNzRCNTU5OTU1NUQwQzcyNDgxRkNGQkI1MTM2RDRDMkUwNjRGOTA3OUU3MjU1
-MgoKMTVDOUU0MTY2RUUxMzBCQUQ4RUEzMTU5RjE1NThFNDhBNEQ5OThEQThEQTFCMDAyQzcy
-RUZDNEYzOEU4REI3Mzk2REUwMzFERTU0OEY5Cgo3NkRFOEUwQzExQUQ0Q0QzOTZENEExMUM1
-QjczQzhFMDRGRTA3NDZBQzMwMEQyQ0QwNEQ3RTlDRURDMUQ3OEZCOUUxMkE4NEVFMjI5NkQK
-Cjg1NkI4OTA4RUFBNzIyREJDRDlDN0U3MkEyRUE0NTc1MUZFMjM1QjQ4ODc5QkE3NjEyOUY0
-MTIzMUZGM0I2QTMxQUE1MUUwRjhGQkNEMQoKNjVCODhEQkI3QTM1M0YwQjA0QzU1NzI5QkQz
-ODUxQTRGRjMyQjc1QUVENTlDQzlBRDQ5ODUxMUE2QzEwNUU0OUYwREZDNTY4N0U4MjkxCgpD
-MzBBNkE4MjZERkQzQzA5QTBDQTg3NkI0QkU0OEEyMjJDRUNCQkEzOTBDNUREODNCRjUxRTZE
-MUM3MkFFNDYzQUNBNUFGNURFOTNERTIKCjU3MjdBNEQ3MEU3QTI2N0ZCN0EwQzEwRDVFQzM0
-MUNERkFEQkQ1NjkwNUU3NEJCMDJGNDQ2RjkxOThDQzhEQzkwM0M1MUFCQUJFOThGNwoKNkU3
-NTg1N0UxRDhGMTIyMDEwOUE4QkM1NjVEMkNFQjdFM0I4MDlFMTZEODlBODNEQ0EyRDlERTBB
-MTU1NTIyNTAyRkQzNkU5REQ4Q0M5CgoxNzU0MEQ0REVDOENFMjA5RjEyQzZENjA3ODQ3MEE2
-RTVENjVEQzY4NUMzMEVBNTgxRTNBRTUzQUZDODcyOTkzOTQwRjBEMEM4OUZGRDQKCjFGNzRB
-OEZBNzMwQkJBODJGMDI5NkE5QThGMTMzODEwQjRCREQ4OTAzRTcyMkM1Rjk1QTg4N0I0MTMx
-RThDNkFGQ0QxNEYyOUZGNDIwMAoKNkYwNEFDRDBGMjU3MEMxMDNGMTU0RERENEE1Q0YwOTE2
-OUFENTY1NDI4NTUxOTUwOTFDMDVCNzEzNTIxMzRBNjU1RTZCQzg0RjM3NjQzCgo5M0ExMDYw
-NTdCNzNGNThEOEU3Rjk5REM5QjBCMTZFMUJFRDQ4NDVDQ0ZBRTYzMjUwMjk5RjBCNDU2QkIy
-Q0M4QjkwOTk5RTYwNzNDOTIKCkE5RUZEMjRCQjJGMjM5ODQ0RTQxMkExNUM3NzgwQkUzQTYw
-RkYyQTY4Njc3OTQ0MEIxMUU5REUwQzQyNTQ3QjNEODlCMDU1NjI5QzI2MAoKREE3OTg5MjJC
-QUE1NUZGRkYyRDEyNTNBODVEQTkzODlDOTI4NEEyRTQ3QjYxRjlBNUNCQjIwRTlFM0M5MDZB
-QTk0QjIxMTY3N0YwNzE2Cgo3MDdDMjhDMzk2NzY5NDMzMTRFNTJGQzI1MERFNDlFOEEzREIx
-RTA0MjQ0M0I2NjU2OEFBMzdEMDcwOURGMDRFRjEzNjJFNUI5QkYwODMKCkQ1OUNEM0JDREZG
-NTBCQkIyNkI3QzhDRTM1QThDNERFOTZGMkU0MERCRDlEM0NDMDRDMzk4NDE4NDRGMzBCMzFE
-RDI1ODI5QkVCQjczMQoKOEQyRTFEQjI5MDk2MEY1NEQxNDk4MDk1RDIwQzZGMDVGN0RCNTdB
-M0E5RkRDRTVEMTU0RkZFQkYzNkVENDE4QkY1RkMwOTY1QkY3QkVCCgpEMTZBQThERDMxRTU2
-MjA5NUIwQ0Q3MjFGODM0OUMxNDc2NjkzRDhFRTM2OEVFMTQ5QzNEMjQzNjk4RjU0RkJCNUNG
-ODNGNjVBNkYxNjkKCjNCRjE1MDE3NzU0MjU5OTk0Qzk5M0M2NzZENUQzQjVFMEU4MDVBQkQ1
-QjUxNzVFQzU1QzNEMUFFRTZFRTc2OUJCMUM2MTQ0MjZEM0UyRgoKMkEzMTY3RUFGMkIwQUY1
-QkI2OEYwMjRDMzUxMjU0ODdDM0FDNjcwMjI3RkM0Qjc4MUJFMkM1RERCNjMxMEI1OTgxN0FC
-RDgyRDVFQUZECgo1QUREN0JBNEVDMEM4OURCQzY4RDAzQzEyRUZCRkMwNTEyMTgxNzk0OTRC
-MEIwMURBNTIzMTY1NzE3RDFERUI3MDY1NkM1NzNCRjcwMDIKCkE2NkNBRTRFNjlCNDJBQjc2
-RDIyRTZENUMyREEwNDMxMDM2MDRGMDZBMjk0NTkzMEY0MjFBRUY5QkIyOEZGMTA2N0MyOTdB
-NkQxMEU1NgoKNjIwOEExRTAwMUJDOEUyNTE0REM2QTk0QjU1OTAzOUYxMDM4MUE1QjAzMUNG
-QzczQjk1OUZFMUQyNzBFMDdGQkMyQzREMkFDQkU4OEE2Cgo4OEUxQUE0RDlGNDQxQjgzMUI2
-RTFFODNFRDRDMTAwMUIyRjM5MzI2NDk0ODIzNTMxMkU4M0YxMkZGMjRBMzNBQThBMzMyMjky
-RUJFRjgKCjk1MjY5Qjc5MzU2MjczMDQ4Njc0N0FGQjc5OTM4QkE3OEJFRjkyNUNFNEM5OTRE
-MUQ1OEM1MTE1Mjk2RDI3RDcyNzVCQzQzNThBOURBOAoKQzhENTIxQzJCNTVGNTA1N0MyODU0
-Q0JGQUUwQUQzNjFBRUQwODNGOEE2MzcyM0Y3RTUzNUM4NEZFMjU1MDQzOTg0RDVBQzM4OUY2
-NTUwCgoyMEEzRkJBRTQ4ODMzNjZBRkZCOURDN0QzN0Y0QkU0MkEzQTQwQUE3NDc3MjFENzYz
-RjNFODIwOTM4NUY4MjNBQzFENzA3NkRCODFDOEEKCjAwQTMzOTk4Q0JCMkU1NzREOUM2NTU2
-M0U0QzI0NDI5REZGQzBCOTkyQkYzNDc3QTkwODkxQUQ2QzY3QkYyNkFDMERBMzNFRDNBMjZC
-RgoKOUE1MjNERTRBOEEyNEE0RUVDQTM1ODFCQkJBNkIxODI5NjFFQjdBRjRGQzJGNTY5MDRD
-Mjc4MzdBMDAzNzNDMEE0OUY4MTIxQjlCRDIxCgo5N0YwQkM2NTU5MkVFMEYxRUIxREY5M0U4
-N0Y0NTE0QkM1RDc2MDU3NkUzQTM5QjE4Njg0NjgyQzBERDg0OTZGQUY5MzlENUZCQzkwN0MK
-CkY3NzY4Mzc5MkRERUI4NkFBOTAyQzhCMjIzRUQyQ0Q5NUQ5QUQ5REJENTIyMTVBQTA1RTY5
-MEZBMjI4MzFFQzFFMjMwOEM5N0I4ODJBRgoKMkYxMEQ1NkRFMDhFQzUyNkI0RUQ2OTZBMTYw
-RTEzOUI1NDA3MjY4RjFFMTdBNzEwQkE0RjcxQTgzREY1MzE1NkE5NUIxMjI0RTVERDE2CgpC
-NEYzRUFERTA3QjU3RDlGQTA2NERENDg3RjRFODRFQUYwNEM2OUNFRTJCQjhEQjg0MTE4NDlC
-ODgzRUQ4MTM4RTIwMjNCODJDQ0EyMjIKCjgyM0UyNEY4MEI4ODE2OTM1QUMzMEJDRTE4RTkw
-NTZCNEU2MDk4QzdBNzhBMjUyOTczQUExOUE2RkQwQTg3RDQ4NjE3MjkxQzNFODZDMwoKQzYx
-NDBDRDIyNUIxMzkwNzBCMkU1NUY0QkYyQkQxRTc1MkREMkY3QzJDMDE2MzkzOEIxQ0FERTZC
-ODBFRTBFNEEyQUI4MTE2MzkxNTdCCgowMUU4QjExQkIwMkY0QzNEMDlGODZGNkExNzhEMERF
-NUZERjgwNEYxMDJGNDhENjZGNTg1MENCNjg1NzQ4RkMzREU3RTBBNjU3RUI3N0UKCjczMTFF
-OThDQTgwRDk2RTdENjBBNkExOTIxRURFODU0NDE1QzM2NDQ0RkMxQzRFOTBBQUEzMkQ2NzVC
-RjZCMzZFQTg3ODE4NjE2RUE4MAoKMENEMTI1OUVBQ0VBNDEwNUYxRkFGMEQzOEFBRkMxQkM0
-MjdBNEIzQUI5QzgzRkIyMkFCRThCQzJFNjA3QzFFRTVEMzg3MjAwODFFQzRBCgo2M0EyMTc0
-RTRDREI0NkVBRURDMUQ1Mzc3MUU3MkM3NjNDN0VGOThGOUNFOUU2RDkzQkU5OEU1MDM1NzFD
-QTE5OTEwNjY3RTk5MDBEQzEKCjY1RDc4RUFEMTBGODc0OEQyQzZDN0JEOUFBNTU3MURGNzk4
-QjYyNkUwQ0NEMzkxNDE1RUYyMkQ3OEFERkIxMUFDMTgyMTQ3QzUwQTE0QQoKMTUzRkIzRENC
-MDkxRDM3MjkwODkxQzNEMUM0NDAxMjcxNkU4NEU3QUEzOUI1NTA4OUQxMzM3MTgxOTUwREE1
-QkY1MkUzOTcwN0UxQTc1Cgo0MzU4MThFNDRGQzAyNjlGNkZBNEUwMzRDMThCOTRDQzBDNkQ0
-NzUwQjQzNzJEMjhGMjRCOTgyOTI3RTVCQ0M5MTBDNjZGODI2NEY2QUQKCkI1REQxMUFBNDY1
-MzRGNkYwNTdDQ0Y2NTBFRkQ4RjFFNTY2NjdDN0I5OTU4RDU2MjlCMjI3RTEyMDM3QzA5OEM3
-QUI1RDU5ODZCQzBEMQoKMkFFNUFFNTUyOTgxRkZCRUExQzAwQ0I2Q0M1RUE5ODhBMjk0NEM3
-RjNBMjM4ODg2ODMxQzQ4REM4MUYxNzlCOUY4RjY4NkQ3RDBEMUFFCgo0MzZBMDg5N0FBNjI1
-NUQzMDQxQzFFRkU3RkM2QUVFNjVBRDg2MDhEQkFDQjJDNDBCQTNDOEUxNzhFOEYwQkMwNEQy
-NzM0M0UzOUMzQjUKCjkzNDk4RkFDODg1NkVEMzE3QTE1Q0VBQkIxRDk4ODBEMUExNTZCNENB
-MEUyQUU5MEQ0QTQyRjIzODM1MjNDMjFERUNFN0QxQTkyRUVGMgoKMDlFODExRjQ0QzQ3MDFD
-MTczN0U3Qzg5NTFDMTQwRjQ0NkFDMDk5MUZDQkFDQjlBNUQ4QTlBMzZDMjlBN0RGOUZDQjU0
-MDUwMzRBOThECgo1NTY5MDBCNzIzOEEyOUU0RDFDNDY3NzBGQjg1QTFDOUQzNDVGNTREM0Yw
-MUZBOTY2RjZBMURCOTIxM0MyMTQyQUU2QzZFODgzQkE1QTYKCjMwN0Q0MjhBNUFGQzBFMDlB
-QzI2MTcxQUU1QjM1OEFERDExQUU2NzAyMDk1QkY4MzJBMzVDMzNBMjZFMjJDMDZCNjBFN0Iy
-MTdFNDM0NgoKMDk3OTM5OTI3MEY1NTU5QTM4RUE4Njk4NjMwNjIxMUJGMzdEMDFCQzA5OTBD
-MzhCQzRDRUIwM0M3NkE5RUU5ODRBNkJFMTlFMDk2RDMzCgpDRDVEMTk3N0REMjM3Qzk2MDBG
-MThGRkVEMDRCQkJFRkYwMjRCQjA2MkM3M0VDMTJGQjAwRTVFMUQ1RUEzMjE0OTA5MzQ1NEVG
-MjcwQzEKCjRGOTQ0NDZCNTVDRTU2QzlCNzAwQTEyQUU3MTE5RTc4MTJBMTQ3MkJDNzBCNTJC
-NjdFMzA2MDhEOERBODEzMzFFQzlFMEYyNTg3QThGQgoKMzRGM0RGM0RGMDQ3NjA0NjgzMkIz
-NzFGMjEwRjZGQzgyNjhDNjdGMDdBREVBRTAyNkNGQzE5MjFCQUU0MDUyNjgwQ0ZDQjM3MzA1
-ODA2Cgo1MjlFQkY2M0Q4MzI3QTFEOTI0QTdFREVFMTk1NUI5NDQ1MTBGRUM5RTI0M0M4NzJG
-MTBGNTMwMUIxRDAzQzJCQTI0OEI1N0QxRTEwMjQKCjJCMjY2QTlBNjE2OTFFMUU5RTA0MjFB
-ODlFMEQyNjdDMUM4N0RFREExMUYyNUVBQjg2QTY5MjBCOTBEQTYzREE1MjQ1QUY2MzlDQjY5
-RgoKQzRFOEYxMkM5MUNBQTI2NjEwQTFCMzIxRjkxRjkwQzc5NzcxQzkxREM0RDJGNjg4Nzg2
-OEQ4MkM5MjhFNDU3NEMwQTM5NUNBMUZENTgyCgo1NDlENjAxRjkyNzRBRTU1REQ2RjE0NkJE
-MkE0NDQwODg5NDdFRTlEMTkxRkM1QUQ5RjVDRTUyRDNBMjY3RkIxNjVENTVCRjcwQTZBODIK
-CjEyMzQzRTczMjhGRUZCRjMwODNBRjUyOEZFQzgzOTYyMjg2NzhBRTIxNTM1NTdGOTMzOTlE
-RTU1Qjg4MEIwMjBBOTIxNjg3QjRCNDcxOQoKREUwN0VDNTdGMDBCMkJERkUwMDNBOTVFMzIx
-MTExOUJDNzJGNDY4QUVEMDBFRDkyQTE4NDNBMjhBRTEwNDE3NTIzMUY4QTI0NkJEOEM1CgpF
-MEYyRkVBREY2NDM1NDdFRDMxMjBCRjQ5NTBGQ0I3MUFCMzNDNTkwQzc0MDA2QThGODI5RDQz
-QTlDNzJFQURCQzdFOEE0OEVFM0U0RUYKCjJDRTg0N0QyNzVGMUQwNkIzMDVEQ0EwQTdGMDIz
-NEQyNDFBMTg3QTNBOUQ3Q0NGMzkwRUFEMzA1RTVEODkxMTBCNUQwNDUzQjJFMjlERAoKMkUw
-RTUzMTNGOEU1RjgyNERENTJEQzUxNUM0NkE0Q0Y0RTdFNUQ2MjJDNTkwQTg4NTRDOURGRTcy
-NENCMzc3RjI2ODUwODY3N0I3MDFGCgo0Q0RDRkYzNTAyRDA3MkU1OTdFM0Y5RDVGM0RGRUQ4
-QkNENDJBQTdFRkE5NkI2QTkzQTQyNjQyMDg4MjAzQjA3NUVDNUNCOTczMkVEQ0UKCjQ0ODM1
-MThFQTZCQzA0QTlCRDUzMUZBOUQwRUQ2NTI1NkVBM0ZBRTBCMTQ5M0ZGMkNCOEZCQTRDN0U1
-RDhBRTFDQzI0NEM4MzRFMDBFNQoKNjk0NTk0RUU5QTVBOTMyNUM4RkU5NUMyRjZGRjg0OTQ0
-NkU0MTc5MThEODhFMDBFODZENTk2NjRFMUQ5NjUzMTBEMzU0MTk5QkVEQkFFCgo1MzY2QzE4
-M0RGMUQ1RDFDQ0E1RTY0QTQzNEM1MDY3NUNBNEYxQUNBOTcwNDIxNUJDNUExRkNENEMzQTI5
-NkNEMjIzODlERDgwOENDRDAKCjg3QUFCOTIxRjVFRDExRjM0RDJEMDMzNDg2MUYyMTQwODNC
-QUM5NTQxQzA1RDc4QUJFNUFCOURGMjUzRTdFQzQwQUIzQThFNjlDRTczMAoKQUVBQjYxMEVG
-OTJBRkVCOTM3MzNDOUNEOTU5MEIxQjFEOEEzQTVFNDREMjJCOTUyOEU0MjlDREU3QUM0MTIz
-QzBEN0E4NzM5RUQ4QkM2Cgo3QzU1ODNFRUQ3OTAzRkEwMzk1MTcxRUZGNDQ5NzNEQjFDRjA1
-MkRGRjgzQjREN0ZDQjZCOUZFRjdFRjA4QTREN0MwRkFCODQ0RjJGOTAKCjQ4NTEzQTZBM0Qz
-OUE0MDdDMzNERDUyMTQwOTcyNEE3OUY4RTg4REQ2ODM4Mjk4RTE3NDczODI5QTIwNDk1Qzg2
-Mzg2N0RCOTcyOUY4MwoKOTJDREVDRDI5MUI2MDFBQ0I1NUJDRjlCQjE4RDg3MzM2NEVEMDNG
-NTE2MzFFRTg4NzI0NkQ1NDgwQTFCNjAxRkM3OTJEQTZCNkQzOThGCgpGQjU4MEEzMkU2NTlC
-QTRCMDc2NDY1NDAyMzQyNkUwRjVFNTEwNDU5NDNEMkVERjA1NTdERkM4RkVGMjg3Q0I3N0I4
-RUEzMjA4RTI0NjYKCjMzMEU3NjJDNTNEOEYxOUUxNzM3MDhGRUM0ODRDQTZFRjA5MEEwQTY1
-QTE5MDM3MEE4MDMwRjg0Q0Q0Q0Q2OThGNjVFODEyNDhFRDEzRgoKOTFBMEMyMUMzQjBEN0M2
-MzM3ODg3QkJDQTlFNUQ2NUNBNjUwN0M1ODk2MDM2N0QzNjgxMEU4MTNCMDYwRUY5QkU3RDM0
-RDRBQzE1Nzc0CgowNkU5NzY0MEYwNEI4N0QyMDNERjQyQkQ2NTEyMjlDNTY2ODFEMjk2REEx
-QkE3QzA5QUYzODU4M0MwOTBEMDQwOTgyOEY0NDVCNkE5REYKCjQyOUEzNzRDRjJERUU2OEZE
-QjVGQTRBMkJERDREMkNDMjVFNDZGRTY5QUEzQzM0QTU5MjI4OERBNERDMTcwMjU5MkZCMDUy
-RERGMDBEMQoKNEFGRjRGRkNFOUU0Qjc0REI0MTBFRjk5MENGRjYwNkJFQjZCOTBBRDM1RDMx
-NzlDREZGMjg1NTgxQTNEMTYxRDk2RjRERTY5RTVENDBFCgpCMzQ0RTVEMjNENkYwQjQ3QUJB
-OTJEMEEzRUZGNjdDOEYxNkQzM0RCQTRFRkY4OUM3M0IzNDQ1MEQxM0I0OEI0RjA0Qzg3RDE2
-N0ZBOEYKCjcwRTlBQjE3RDYwM0M0QzFBRDA3ODczQkYzMzY3NjBFNjU1Q0JCNkFDM0ExOTdE
-NjI1NTFBREVBNUI3QzFFRDUzMDNEODU5ODAwMEZDNAoKQjlFNzM4RTI2NzlGNUFBMDhERjA3
-QkE5OTQyNTMwMDAzNjYxNTdGRUJDQ0UwRUE0NzVBQTAyMkIwNDY0NjExODdDMUVDRDg1RkRF
-Qjk3Cgo3QjJERjQ5NzBFRTAzQzk5RThDMjQ4MDQ0ODREN0I3QTQyNkFDRjgyQjA1QUZFNTFE
-NTA4M0NBRDY4RjE2MEFDQzkwMzNDQjc3MDZDQkUKCjY4RDQ0OTk3RUQ1NEREMEQ3NTIzQTAz
-MjAzNkVERTUwQjIyMDBDRDQ0RjlCODlBMUREMEY1NDFEOTc3QTE3QUQ0OUU0RjgyRkVDQjlF
-NQoKRkY3QzUyNTE5Njc0NkU4RjQ5OTA2QjlCMjAxNEJGNkUxQTlBNkYzNTZEQ0I1Q0JEQjQy
-NzM5NEZDQUQ4NTg4RkYyQTBFRDY3NDMwRjE1Cgo3NUIyRTE2MTdGN0Y3REQxN0U1RjEyRTA0
-MDY4MzRCMjgwMDJEQzdFNzRDMkM0RUJBQjQ4QUZGNDMwNkNGQjJEMTczMDFDQkIyMzhBQzMK
-Cjg1QTQxNENBODRCOTg4QzVFQzVBRTI5M0YzQTZBOTQ3RTcwRUM0QzdGMDk1NkFFMTIzRUI3
-OEU0NkM4RjlCMkU3REZDNzVEQUU2RTUwOQoKMTk4OTIyNDkwMTRCRURBN0ZEMDY2NDVFNkRC
-OTE4QTYwOEVGNEMzNzNFNzE3OTkyMURENkZEOTQ4MzJDMEZEOUMxNUY1NkY3ODQ2OTRBCgo3
-Nzg4RkIzM0I5RkJBN0VCOUIxQTE5Q0ZFNTc2Q0E5OTNGMEZGQzMxMzk4Qzg5MTY3RDVGMUQ2
-QkQ4ODY3MDFCMDdFNzg3ODUxOTEwRDYKCkIwQkY5NkI1MUNDMUM4QkQzRDBCQkEwMEZCRDAw
-ODU3RTQzMjlDMUU5MDkyRTIwRTQzOTU5MDlCREJEMzM0QjAyNzI1MEJBODU5N0Y1NQoKNzlE
-RkQ1NUNDRkI1NzIxRkM3QTU1NTQxMkFCRTQ5RTNEREJGMDlGNzIyMTIwRDY4MUI2QjE5RkEw
-MDI2Q0RDMzA5Nzg5NzZERTgzODg3Cgo2OUM2OEIzQzMyMUI2MTEzRDNBRTMyRkQxQkRCN0Mx
-RjFGRjhGNEREQUU4MUZGQzEzMUFCODMxNkZBQjMzQjZGREVCRUVFMkYxQzQ5NkEKCjgwNUU0
-QjkyMEYzODE2QkRBOEU0MTY3N0RFMzZFRTQxM0U4MEM1MDBCOUZFNEUzRUVBRDAxMTQ2MzBC
-QjFBOTU1RDBGNUM3NzYwMTgzRQoKNjhDMjI2MDYwQjA1MTcyOUY2RTFGNDZDNzUxNjgzOTJE
-MEFERkNDM0RDNTJGMjkwMzg0OUM1QzFGMUNDNEEzOTQ4NkZEODQ0MDExMTJECgpDMUY5NEVC
-RUFBM0EzQkQ0RjI4Mjk3OEFGOEMyRkRFQTMzNjRBQ0IxMTIxRUI1RjU5M0YzMzJEOEJCM0Uy
-ODA1MzBGOUIxQTU4MDQxQkUKCjYzNTA3MDQzOTExOTBDMjRCRjBEQUEwNUZGODc2OEYwODRF
-Njg3MDQwMUZGMzQ2QUM3M0VBQzhBNjkwNjI5MEFCMkJCNThBQTdEMkMwQwoKOTAxQkZENzE0
-QzQ1MTg4Qzc1MDk2MDU3QUVDRTZDRjQ1M0I5ODUyMEFBNzM0NkU0MkU0NDk1NDlFQkRFNEI3
-MEIxNkY2NkY0ODY1NUI4Cgo3RjBFRDQ5MzVEMTA4RTkzNDlGNTdDNTc0NUVERkEwMkQ4M0VB
-QTdFRTdCRTdEN0ZBREJFNjZENjI4N0E2MUNBQTFGNDY4REU5REY1OEEKCkRDRDdENDY2N0Ez
-NDFGNjc0OEEzNUMxOTAzMTc2N0NDMkUwQjI1QjYwMTBDREIzMURERDNBODE0MTBCNzgyQjRB
-NkNCNUM5REVCM0IwOQoKMjZEMkU4NkM2OUM2M0JBRjE3MDU1QUJBNUFGMzlCMjM3QzUzRDNB
-NzlDNTYzOUMzQUM2MzhFMTU5MkE1Qzc0MkIzRjdBNjVDNTU3Rjc2CgowQ0EyRTY4QTBCQjI3
-RDBEQjQ5M0RGNTM1M0Q3NTg0OTMwNEYzQjE1RDQyMTE1RjU1NzE3MjAzODE3RDFGNkNFNTU2
-NzM1OUNDRTcwODUKCjM3MUJGMjNBNjA4NTFCOUJDN0RFRTE5QkJFNDBCOEJGRUVCODVEMjBD
-Nzg4NkNCODlCMjFCRDRERDU3NDE0OTU4RUNEM0I1Q0NENDBGNQoKNzgyNTM3MkNCODkyOUFE
-MjY4MjFGMjgwRkM1QkYzRjkwOUI4NDU0MjQ4NjY1RjM5RTg3QUMxMjY3OTAyMzU2MUQyRTRD
-MTcyMTVDQzgwCgoxNjM2MDBGQkMzQjJBMzYzN0ZFOEFFQzdFNkU5MTQzOTM5QTk2RjlBRkY1
-NDQ5NDRFRTkxNEJBMDU0RDZCNUQwMDcwQzE2Qzk5RDNFRjEKCjBBNUNBNjM1QzgzQTE1NEQ1
-Nzk5QjdGREMzMTE4MjdDOUU5REQ2NTFDQkE1REUzMkEzRUNCNDMyN0JBRjA4RDkyNEVFREJB
-MDU5QzMzQgoKM0U3RURFMTU5RTgzREU3MUVFMDg5NEMyQTcyMDE2MThBQTM5RjM5Q0MzNTc0
-REZENjQ0Q0I0MTYxOEE2NjhCRDhEMUJGMDdGQ0UzQUIyCgo4MEUzQUFDQkQ5RkNCOTBDNEQ4
-QTQzQkUzQjcyQUVCOUU2Nzg1REVDNkUwOUE2Q0JERDk1QTJBQzdBMEJCRDQ5RDg2RDI5QjA4
-RThGMkIKCjk5MTM3QjJDMzFFREMyN0RFRTZBN0Y1RkFBMzlEMUZBRjBCREI5RTA0N0M4M0ZF
-NTk2Qzk1OEEwMUY4MzUxNDkzNjlCMDY0MUY4RUE2RgoKRjBEQjMwM0VCRTU3NzI0RTZCMTA0
-OEZGRDdGMzE2ODJEQUZFQkMxMTAzODUyMjczREQxOUJDOThDMUM1NDUyRjg0MUQ1RUQ3QzJG
-NzQ2Cgo2ODkzRDIzQ0M1RDZEQjQ1QjUzQzkxNTA4NDVEN0VCM0Y0MjI3Q0I1MzYzRTNBM0JG
-NURBRkQ2OEQ0MTVFMjgzNkI0QUI1MzYyMTEyNUYKCkQ3Q0JENkI1NTFCM0QwQkQxNEQ2Mzc3
-REFDRDQ3Nzg3NzM4RUYwQkU5OEY2ODdDNkNERENFRjBENzgwQTFERDhDRTA4QkM5QzAxOEU5
-NQoKQUU0NDQyNEFGMTA4MEY1RDI0NUQ0MkEzQTRDMTdEM0UxOUNFMzQwRTk3QzcyMkJEN0VD
-NTVCMDk3MzVBQUNGMTNGQjJGQjk5MDY4MDJECgowQjM0Q0FCMUMwMjc1OENCNEZFMzFGQ0Yy
-NzU4QjNBNkNGODM1M0UzQzUxRjM5OUFGM0VDQUMyRTEwOUM5OTlCRDE1REYxMTQ4RTM4RDEK
-CkEzQ0VGNjQ3MjI1Q0E4Q0M0NUI5NjJBNjc3MzFDN0RBQkQ5Qjc1NkRBRUU3REM1RTQwNzRF
-M0REODE4RTNERTkxMUMxRkZBOEI2QzFBNQoKNEYyNzlDODcwNEE2MUM2Mjk3MzNCQkYyRjIy
-N0YxNzE1MTJBRDdGQjVFNzJCMjY3RUIwQTdCNkM4NkMwRUU2QkVDQjQxNkE5QzQ4NjdECgpD
-MzcxNjgyNjQ0OERFQzNCOEIyRkMxNzJGRUY1MkMzOUEwNTc0Qjk3NkI5RjNCRkM1MzQyMkEy
-MDMxM0YwQjA1ODYzOEVGMTg3MDU4N0EKCkEwMkQ5QzRCOTZBRjRGNTUzNjU2MkZGRjI2QzFD
-QkRFRkFCNUE2Q0U4MUYyNTA4NEU5MDJGNTZCODQwMzE4ODQ3QjVFMzE4ODM2NDdBMAoKMzA2
-MzY3M0JCMkQwQTdCMkMxMjhBRkQyNjFDNDM0RDFENENGQjA4QzUwMDgxQzIxNjkyN0MyODk1
-NEE3OTE0OUFGMTExNzA1RTU3RkZCCgpGOEM4QTEzOEFBMzQzRjE2RDU0MEUxMzhFQ0I5ODE3
-RjkxQjA0MEZBNjVEOTBBREE2NDJERkM5OEU0MTREM0M5MDlCRUJGMUE0NDJGNjgKCjBBRTky
-RjgyOUQwRjEwQkQ5OUJDMUYwMEU3MzQ1RDA1MTMzQ0EyRjNCQUVEQ0M2M0VENkREOTJEQTg2
-REY0Qzg1QzlENzdGQjRCMUQ5NQoKRTY0NDkyQ0MwRThGMDQ2OEQzRTU1RDExRDk3NTk1ODc2
-Q0MyMjI1NDE2RUIyRDEwNDJGRDhGQTA3QTZGREQ0MDhGNjE5QTBDODRCNjVDCgoyMDg3NkEz
-ODYzOERCRkU5NzNFRDdEQ0I2QThDRTdFQ0FDMEJDNzEzNDlBQjJERkJDODY4MkMxRDVFOEFD
-OEZBQzg2QkE5NUE0NkUzOTEKCjExMzU2MDJBMTQ3QzcyMDVDNEI0OTUxOTk4QkIxRDcwQkM3
-RDMwRTcwMDRGM0M4MUNGQTRBMTM2NENBMUNCNzI4ODU5RjU3MDk1QTA2OAoKMzNGQTU3QjJB
-RTZBRTAwNDU5MkFFODdENkE1N0JGRUU0QkZEMzlCNzdDMzQ0MTZFMjMxNkE3MzlBMjcwODRF
-MkZEQjlBOUE4QTI2MEIxCgpFOTI4RDE0NEZCNDNBRTVBODlCMDU5OTczODBFMzA5ODdEMzE0
-MTRFQzkxNkUzQkQzMzhEMEQ4OTk3NTI5QTE3QkVEOEFGMDFDQUQ2RDEKCkNENEVFMDZDQjZD
-MDU2M0U5MUI5MTk5MDNCQjVDMEVGOEM3OUFDRkJBN0NEMERCODk4NDYwM0Y3Mjk2NzJEQzQ3
-RjZEODQwRDkxMUJDQwoKM0ZGM0YyMkY1NjFBQTVFREEyNzgzQjVERkY4REM1NzNBMDZFODM4
-M0MxQjc0MjAwMDNGRUVCRDc1NEI2MkJDNDYxRDMxNEIzODNENDgzCgpDQjMzNjYwQjY4MUI2
-QTA0MjRENEMxNkI3MzBGOTc1OUQxQzVCOENEQzc2OUQ5NkU2NzgxNzAxNkNBNTM1NkM4RDQ1
-ODM2QzI5N0U1QzAKCkNGODA4MThFNURERjZGRDZCM0Q5NjIxMkE2RTNGMTI0QUIyQjIyODFD
-N0UzMkI1QTExRjczN0M2Q0Q5QTg4NkIyREJDRUZDQURFNkQ4QQoKRjhBMzkyNzA1QjhFRUIz
-RUU3NzE2QkU4NjVDQTk5NDYxNTg0MDIzMzNFNDM0NUExNDNBQkNDMjRGRkI5MjgwRDIyQTJF
-NTM4RkM4QzA4CgoxNEE5RjgyQ0NCQkIzNTBGREUwNDdERjkxN0UzNEI3RjlBM0Q1MjBDOTc3
-NkE1MDEyMjVERkI4QTU0NDBGOTE5ODAxNTVDNjlENjlDMUUKCjhCNzcyQUMxQkVERDg3MEY1
-MTZBMjU2Mjg0NDVBNjg3OTNFQjQ2RkYzMjdFMjMzREUyRUYyNDI4NTA1RDc4RkJDRTFFOTMz
-NTAwQkMwOAoKNzVFRjJBNjU5MTA1QkZCODRENjJDRDg4NDlCMTNBMEEyQUM1RDMyNzAwQzY2
-MDQ2MEJCQ0JDNTA4QTY0NEJDMjFDMDI5MTVENDREMDcxCgpFNjk5NzU1MkYxQTQzRTc3MUM0
-MUQ5QTcwRTUyRkFGQUVDRDczQUY4RjUwRjdGMzhEODVGOUU5NjhFMTc4RkVFNjg2Rjc2QzE3
-QjVGQjUKCkMxMjM1RTc0RUM4MTI0MzMxNTU4NTY2NzdDOEEwMUNFMzI5NzE4QjAxRTg0Njkx
-NjVCNTREQjZEODYxNjU4RTA3M0Q0MDdGQTdEMjk1RgoKNjlERkJGNENDNkUwNkY3RjRFREU1
-QzlGRTA0OTA3REUwRUFGOEJCREI3M0FFMjQzMTNGMTQ0MjYxNEZBOTFDRUNERDFGRUVBQTM2
-RkVFCgo5NjkxMzFCMjAwMzM0RUVEQTQ3QTdCMDI5Qjg3MkE3OUVCRjdDQkQxMDgzODhDOTBB
-Q0MzQTJFMDMyOEVENzAxMDZDQzVEOTYyQkE3MkIKCjRGQTFENUUwMUI3NDc2Mzc1MjI3Q0FB
-RDA4Q0M2NjlGN0VERTM5OEZDRDQ4RTRDOThBNkZFNTkyQzYwRDI2MkQ5QTgxNEYzNjQ4NzFB
-RQoKOEI5RDg4MTAyOUNERUJFQTIyODA1RTU4QzFBQzg4RUEzRDJBMTRDMDZDOTlBNjk5NTIz
-NkNENUI2Njc1OTUyMUQxQzYzQ0FDMzNFNjMxCgo4Qzk0NDFCMjBBRTUxRjZDNTQ4NENENUM5
-MjMwMUNERURCQjZBQkQzMkJFQ0MzMjczOTIxOTAwRDEzMzAzMjIwREI0NjA0MkM3MjAzNDgK
-CkY4RjU2NjBDOTYzNTQ5OTRBOUY0QkM4ODE0RkQ0REU3ODY1MjZFNzYyOUQ0MUY1MjNGOTJF
-NjEyRURGNjRDMDgxMDYwMDQ5MzM2OUYwNgoKMzJBQ0U0QkFCRTQ0ODhGQjIyOTJCRjZCNTYy
-OURGNTA2MkZEN0QyMDM4Q0Q5ODU2QTEzNDMwRkNGN0U5NDQwMjY3QUUwN0E0RURFRkEwCgow
-M0I4M0RBMzY3REJCQzMzRjQ0OUY5ODdBQjRDOTBDNkI1NEYyRkI1REM2MTRENTBDODAzRTZB
-ODVGNEJEQUQ5RjMxQzNDODNGOEM4NEQKCkI1MTk2MEY0Mjk3OEY1OTc4NDc1NkZGOUQwNEMx
-NDg5OUM2MDE2ODE2MTUzNjBCMzQwNzdFMTEwQzZGQjVFQjdFRUM4MUZEMjFDOEFEQgoKRjUw
-ODZCMDI3RDExREI4NTMzMjQzMzk0MDNBMTU3REQ1OTNDMEM0ODJDRkQ2RTQxQUQ1OUU1OEM5
-QTk0ODFBMzkxMTUyMTUxQzUyMzJGCgpGQzlGMTY0NzU3QTA4RjVEQkZENUYyMzlFMjE4OTE1
-RjQxMDE5N0Q1OUFEODRCNDNBQTM0QjU3N0U5RUVDRjY5NDA4NkFERkRCNEU4QkQKCjkyNTU1
-NTBEMEU2RENDMEY3RjIyQzM0RTYzNjc4NTQ1RjJCMzQ0MDBBQkU3RTRFMzEzMUQyMENGMEIw
-MUEzQTI2NkVDNDU0RTNGNEQ1OAoKMjRFNDY3MzJDOUIzMDRFQjRCN0Y2QUU2NjBBMERFRjc0
-RUI3QTM1NjI0QzRGOEVCOEQ0NjdBMDE3NkRFOUFFNDU3RUY2NzBCNTU2NEMyCgo3NDlCNTQ1
-QjI4NEY2MzA4N0EyRUEwMkNBOTdDMTE0MkE3RTZFODFBQzdGNDQxRDVDNEFGNjhGMzdFODUx
-OThDQkJBMkQ1MDlBMzZBOTIKCjk1RjAyQTRBQjZDMDhFMDAxRTY5MTU3N0ZFNzUxMkI3QUU0
-MzdCQTIzRDAyM0UyNjMyMEZERUYyNjJBNUI3QzMyQzUxQUFFNTQzNzk4MwoKMTA4M0Q1Q0I4
-NDc4OTYxOUE2MDVBREFDQjVDRDBGQTVEQkUyQTREQkI3QTUyODdDMTUxNjk2RDJERUM2QkUw
-QUIxMTIyRjE5QzAyNkM4Cgo5RkU0QTQ5QkE4Mjk4QzA1Mjg2NzczMjZGMEQ0MUNGQzJCQjY3
-RUE5REVGNzA3MjJENkUzREYzRTczODY2OEY0QTlDQjJFNkE5N0U4MUIKCkE3MTdCNTk3MThB
-NzgxOTJDNzBFRTlFN0VBMDZDQ0RCQjQwRUE3NzExRDA1REVFMjY0RUNBRjlDQTQ3Q0E1NDJF
-QzVCMTdEOTY4Q0YwRQoKRTMzNDI3MkRFMjY0QjI0M0RCRUM0OTBBM0ZDQzNBQTM0NjM4REI0
-OUMxMkMyNTc0QkUyMDZGNTMzMzE0MjlFMjQyMDYxRjAyOTM5OUQ3Cgo0ODUwRkFDMkIxNEM2
-OUVFOERCQjYxODdENzgyQUEwRjlBNDBDNUI0QzZFNjYzNDc0RTdCRjQ1QzMyRkQ0NTkzQkFG
-NzIzQkRCOEI4NjYKCjMxNUE4OThFMUQ0MjlBOUJBODlENjE4ODM2NDMwRkY2NjAzMTM3MzM0
-RTdDOUYwM0U3REI3QTY4Q0Q3OEExRkYxMTU2NkQ1NTA2M0EwRAoKM0JGMzBBODc3MjcxMzBF
-N0ZCNTAyOTM3OTRBRjVCQzQ1RjU4MThFODk0OUExRjRCODA2OTI0QkY2MjlFQzQ0M0M1QUE2
-RTE3M0JBMTI2CgoyMkEzNDZEOEIwNzFGOTFFMUQzMDVEMTU0MEZBODNDQThERUE3RjA5REM4
-MDMwNUI5RDM5MkJBMzFENkU3MTcyMkQwQjk0N0MyNkY3M0EKCjcxNjYxRjgwMUE5RDA4QTdE
-RTYyODg2QTM5MDM2MUZERUEyMkYxRkU2N0VFQzIxNTNGOTk5NjUzREVFQzY4OEYyNUI0QjlE
-NThDODE1QwoKQTQ1NjgwNDM2MERFMjk0QkZCQkZFNUQ3NDVCOTQ1MTFDMzA0QkQ1Mzg4RkJC
-ODREQTRCMzFFNjUwMTc4Q0MyNTczMTY2NzRDNUEzRUFECgo5MDgxNzcwRDg4NjgzQTEwM0ND
-RDEyOTgyNDY1QTdDQUExQzkwM0NFRUNBNkVBQTExNjk2MzdCRDM3MEYxOTAwQzkxNDNGQzMy
-REY0NEIKCkJCMkQ2QTRDNEM4OEVERUVDMTZDNTk4NTQ1MjA4NDAxRDA5ODUzNDdBRThCMkEx
-NkY5OEJGOTJDQjQ5NUQwQ0FBOUYxMzdERDUzNEQ4NwoKOUQ4OTAyREYwQjQ0ODQ4QjNFQUMx
-QzM4MUI4QTc3MUY5RjgyNkExRDMzRDEyRkQ0NUMyMjBFOTREMUMxOEI2MzBDNDZENDE2NTlG
-NDg1CgoxNkJGNkMxQTUyRTE5NTFBRUQxMTVBRTlENEM2NUJBOUY3RDQzNjgwMkE1NjczOTIz
-RTY1RThCQUI5ODVEMDk0ODQ2MDdENjk5NzkyOUUKCjA5RUIxREJBMURGQjMzQkEyOTk5QUM2
-NDYwNzM0MzEyQzY4Mjc0NjdDNzBFRjA2MUZGODUwOUNEOEQ3OTE4MEZBMEM5MkEzMEI4RkY1
-NAoKNTlFRDEzQ0Q1MTU4QUYzQ0I5MTNEQUI0Q0I3MEFCRTE4RkUwMzY2MDAzNDk5MDIwRjk5
-NkI3ODdGQzVCQjRBNzY3RUYyNUUzNDE3QjRGCgpDNjZFQzc3MDZFNjg5QTU1MUIwRTRBQTE1
-NzU2NUM0QUM1RUE0NDUxMUQ5MDg0Q0I0NUIzQTVGOEVDMUM4MjdDQTQwOEIxNjIyRTUxNzAK
-CjNBNjcyMEQ3NEQxQ0I0NUI1QzRFQTU2MDc2MjAzRjMyMzVCNUQxN0UwMkYxOTU1MTFBQzNC
-MUQyMTNDMDFCNjA0NTI5NDc3RTMwQjFDNQoKNzc1MTgwODY3NkMzRjMxMDM5MThGQTIyNEIz
-QzJDNjVFMDMzOENDODFFMTFBOUFDRDJDOUY2Rjk5NTA0MkU2NTRDM0RFQTI2RkMzQ0YwCgpB
-MDk0QkFGNjM4MjJDQjMwMDRGMjc4NkVFNzRDODZGQjhGQzY1NDJCRUY3MUQ5NjE4M0ExQTRD
-OTRGMDFGOENEQjBBRTFEREFEMTkyRDYKCjFCN0FENzA4RDM0OThCMEVFMTIzRUQ2NjIyNTk3
-NkU5MTI2N0Q0NUMxODQxNDhDNjFGOTlCQ0ZDMTFERERGRDIxRUQ3NkQwRkM4NjFCRgoKNzkK
-CjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAKCjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCjAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCjAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAKCjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAKCjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCmNsZWFydG9tYXJr
-ICV7cmVzdG9yZX1pZgoKJSVFbmRQcm9jU2V0CiUlQmVnaW5Qcm9jU2V0OiBzdG9uZXNzYmku
-cGZhCjExIGRpY3QgYmVnaW4KL0ZvbnRJbmZvIDEwIGRpY3QgZHVwIGJlZ2luCi92ZXJzaW9u
-ICgwMDEuMDAyKSByZWFkb25seSBkZWYKL05vdGljZSAoQ29weXJpZ2h0IChjKSAxOTg3LCAx
-OTkwLCAxOTkyIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiAgQWxsIFJpZ2h0cyBSZXNl
-cnZlZC5JVEMgU3RvbmUgaXMgYSByZWdpc3RlcmVkIHRyYWRlbWFyayBvZiBJbnRlcm5hdGlv
-bmFsIFR5cGVmYWNlIENvcnBvcmF0aW9uLikgcmVhZG9ubHkgZGVmCi9GdWxsTmFtZSAoSVRD
-IFN0b25lIFNhbnMgU2VtaWJvbGQgSXRhbGljKSByZWFkb25seSBkZWYKL0ZhbWlseU5hbWUg
-KElUQyBTdG9uZSBTYW5zKSByZWFkb25seSBkZWYKL1dlaWdodCAoU2VtaWJvbGQpIHJlYWRv
-bmx5IGRlZgovaXNGaXhlZFBpdGNoIGZhbHNlIGRlZgovSXRhbGljQW5nbGUgLTEyIGRlZgov
-VW5kZXJsaW5lUG9zaXRpb24gLTEwMCBkZWYKL1VuZGVybGluZVRoaWNrbmVzcyA1MCBkZWYK
-ZW5kIHJlYWRvbmx5IGRlZgovRm9udE5hbWUgL1N0b25lU2Fucy1TZW1pYm9sZEl0YWxpYyBk
-ZWYKL0VuY29kaW5nIFN0YW5kYXJkRW5jb2RpbmcgZGVmCi9QYWludFR5cGUgMCBkZWYKL0Zv
-bnRUeXBlIDEgZGVmCi9Gb250TWF0cml4IFswLjAwMSAwIDAgMC4wMDEgMCAwXSByZWFkb25s
-eSBkZWYKL1VuaXF1ZUlEIDM4Nzk1IGRlZgovRm9udEJCb3h7LTE1MyAtMjUyIDEzMDMgOTUw
-fXJlYWRvbmx5IGRlZgpjdXJyZW50ZGljdCBlbmQKY3VycmVudGZpbGUgZWV4ZWMKQTYyMzkw
-RjJCNjAzNzZERTI1RTZENjNDRkIyQkUxOUMxODVFRTY0QTZCQUMyOUMzNTMyOTUzNTVFMjk1
-M0NCM0FBNjY3MUI4Qjk0OEZBCkZFNjJEMzRGMERDN0Q2MTc4MTlDQ0NDRkE5RDI3NkM3MjM5
-MTRGMjhERjlGNUExQkJGNjQ0MTA5MjY2NDExQTZCOTlDQUJDOTIwOTcwRgpFRjE1N0FGNEY2
-N0FGRDZCODI1NkQzMEI2RUMyNDlEM0QyRDMxMzExRjc4MUU1MEE2Q0YxQTY3NzI4NTI5MDgz
-M0U5NjA3MkQ4RDFFRUQKQjhFNzQwMkE1ODhGNzgxOEEzREYyNEFFQzZFRjVCQTZBMzdEMUY0
-NzhBQjI2NkFEQzJGMTM5RkE1QjA2OUVENzgwQUMyMzdCRDJENTYwCjU3QURFMzUxQkIxN0RE
-REE3MDY1MjBCRUMzODY4MDZFM0QyMEFCQjMzRTcwM0IwMzgzQ0U3RUJEMjBBRUE0MENEMUYz
-QUY4MERDNjNCNwo1NjcyQkI5NzU2Qzg0QkQ1NzIxNzFCNzE3OTc0NTAwRkY0QTE4QUVGMTlC
-MUM3ODdBNzQyRTZCRDUyMzlENENFMUVBOUY0M0Y0ODgxQjYKMkEzNkMwMTYwOTk0N0U5N0NF
-RTk5OUIwRTU3Rjc1MkYwMDkxQkNERERDRTZGQUNERjM4RDk4NzI4RkEwNjlEMzI2QjBCRjNG
-MDMwNjFCCjhGQ0U4MEQ3QjE3RTY5QkQxNkYwMzQ3NTBCRjUxMEI5RDM2QzE5M0U4NTM2NDNB
-Nzk2OEUwNDNBMEI2QzY4MzQ4Mjk3RTUyQjcxOTREQwo4NjM5MEFBMEEzOTQxNEZCOUYyNzhB
-NzJCQjREMzhEM0RFNkYzMTFFRTBCNEVDMEMzOEFCNDkwRDNCQUVDQzVGOUM5QzNDRjk3MDEy
-N0UKOEMzMUE2NTg3RjdCM0EyQUMyMDZCNjBEODFCQ0E4MkQ3QkY4MDM4NDlCODZEOTg3RTVB
-MEY0ODdBMjUyNTJEOUY1RjI0RkY1MkVCOUZBCkU4RjVERDFENEYxQUU2QkNEN0YxMTk5NzBE
-ODM2NjI4MjRBMTdGNTE4RjNCQTdDMEUzNTU2MzBFQ0YxNkQxQjI5MzBBQjcwMEY4NTlGNQpG
-NzlCNThENUFBNUFGRDA0MzQ1MUVGMEUyMTg5NkU5QkFDNjk3Qzk5QTAwNkY4NTAyQUFFMEYz
-MjU1N0JERjlDM0U4OEI1ODY2QkYyODAKQUZCQjYzMDlDNEE2QzU2RERDOTNDQkRBNUJBRjlE
-NEM5QzMzQ0M1Q0M5NjE0MjM2NDI1QjkxNzAxNTFDM0JBNzBGQUEyQjg4MjJGOTk5CjI5MDJC
-MjNFMTFBOERBRTk5Q0E3NjU2NDlGRkZFRTczNENENDVBMDk2MjQ2Q0M0MThGNERBMTA0QTBF
-MzYwRDg0QUY4NDEzQUI2MzE1QwpGN0IyRDkzNDU4RUZEMkNGNzVDRThFNDI5QjRGRDlBMEQ5
-RTI2MjVCNTZCMjMwN0M1QkFBOEFBNDIwOUFERjNBRUZGMTFDMkZGOUNEQzkKOEJDNTVBODFB
-RDBCODk3NUQ3N0I3OTI1OUVEMjZERkRCN0I0OEU2QUMyQkRBOEM1REJDRDU3M0JFOEJGNzU4
-RENFNTUyQkQ4RDdCOUM1CkMzRUZGRUVDMEZFQTAxQTM1OTZDMDM4NzUwREJCREUwMTlERDA2
-MUFBQzc1QzZERjgxRUEwNUQ2QzZCQTk0MEVGRUJEMDkwNEVBNjRBRApDRDlBMjk5RkMyQTY3
-N0JDMTY2QjkxMDE0NjcwM0M0QUM3N0EzN0QxRTM1Mjc1REYxM0YwQzg5QjkyMUMyQjMzOTA1
-REZCNzlCMjE0NTUKQjc2Q0M4NEQ3RUZEQ0NCRTlFQUQ2QzQ1NDhBRkYzRUE1OUE3MDAzQTVC
-MEJFMzU5QzhCNTk5MERCMTU0NTE3NDhEMDBCNjY1OEYxQzFECjNDMDJDOTAxMEU1ODZFOUVE
-QTc0MDNFMDMyODhGOTM5QzVBNTZFNTZCMDM4QkRFQTNEQkRERUVENTk5NTNCNUQ1RjNFQ0RC
-QjlBN0IyMAo2RTk3RTE5RUI0ODZFNjY2RDIyQUY4RTgxQzY1RUNBMDA1NTk5Mjk3Q0MwOUI4
-M0RBRTEyQTQ5NTcyNTJBOTI0NTJDODI5QTMzRTU4NjQKM0FFRDZEMUE1NTM4QkFEQjcyMzM0
-NkYyOEMxRkZCNTU3MzdBQUMzQjZCOTVBQUIyQkZDMzFCOENGRUZDMTIzOEYzNkIyNEI1RTBB
-RjRFCjIwMURDNEI0RjhDNTg0Q0VFMkI2NkE4QkZFQzc1NUNFRkRBQ0M2QkQ0NkQxQURDOTM1
-M0JCNENEOUY1OTg2N0E4Qjk3NTBCQTBEODM2Rgo0MTI2QkZCOTYzNjA1MjNERDVFQjQxQkRF
-MkI2NDQyRDUzQjZEQjM4MjVBQjE5QTVCODEyMkQzOUFENkVEREZGREJFOTU5QTE0OUU5RjYK
-NTUzMkZDNzBDMzJGMjk3QTU2RjQyODhFMzU1RDlFOTE2MjI1QzgwRTQ1NjRGRjNBRkY0RTA0
-QzY1MzQ2QkY5ODM4MjJDRjA0N0YyN0U5CjU4QUZFMDQ2MzMyRjVGOEYxMjJBNjg3RkQwQkRE
-ODEwMzIzMzE2OTlDNjBFRkY0NERBRDdDRkREOThFQUIyNEQzMTQwMTMyMDk0NjdENQpBODA3
-ODYzNzVBQjkyODVEN0U0REE1RDBCMzJBQ0MwQUI5OTBCNDQ0ODgyMkFGMUQxMzI1NjNDNTc5
-QzI4QjM4NjIyQkNFNDg5MTlDMjMKRTQwMDJENjU2M0QzNjUyMzZBQ0JCQzI3ODU0NUNFMjhB
-Q0MyOUE2REU1QTkzODBBNEFGNkQyODYzQzAyODNGNzVDODY0QThCNTg2OUJCCkZERUNBMjVF
-MTdFQkYzQ0U3OEMwOTAzQjM5M0EwMjRDMzgwNzIzNkM5MkI4OTYxMUI3MEVCQkI5NkQ2NzIx
-MzJDRDI4QjBBNDAyRjk4RApENjQ3NUYyRjlFNDcxRDlDRjFEOTY1RTU2RUE0RDBENkVEMzM0
-NDEyMEQ4RDFBQkREODg4N0VCODM5RjdBMkE5RTBEQUNCRjI1NTU4NzQKQTkyMDBBMjlDMDgx
-RUI0NTYyRjEwOTU4MzUzRkI3MkYyRTA0ODZGNDc5QURCRDQ3NjcyODRFNjMzOUJDMkRFQTZB
-MDU1NTYzNjZGQUM3CkQ4QzE5Q0JDN0NGNDE1MzA4RkMzM0FDNjc2M0UyRjQ1MEVCOUZGNEI4
-NkNBN0FEQjJBN0JFOTAzMzI1NUM0NDU5MzZBMkM5NzBEMUZBMwoxQkJENjUwRTEwRUVFQkIw
-MTgyMTJFQUVDQzRENEQwMzA0NkNEMTRCODYwQkM2QkM3RkVDQjRDNzBCQzYwNDU2Mjk1ODAz
-Mzk5Nzk1REEKRDE1RTVBN0YyQTNCOEVDN0JGRjk1NThBMEVGRERGMTc4NzUyRDdEMkJFNkRG
-N0NDMzIyMTJFN0YzQzYzMkI1QUJDRjlGNDQwQ0E0MTk1CkU1MEYzNDA3REMwNUVEOEVFRTND
-NkVGNUQ5MjdBMzA0MDYzRDJDNTkyNzU1OEUyMTIwODcyMzFDNDg1QTExODQzM0JFQTVEMDMx
-NEMzQQpCM0RBQTI2MzE2MTczNjdENUE4Qjc5Q0YwQzFFNzk4Mjk1M0M1NzVDMzYzRkFFMkRE
-MjAyMDdENUY1NzM5ODAzNTgyNUJBQzVGQjAyODAKNDdDN0Q5MDdCM0Y5NTI5QjlCQTM3MjQ1
-Q0ExRjUwNDg4Q0I0RjMxMDYyNjBENEMzMjREMjNFMDYxQTJFMkU4ODk0MUQ1NjYzM0I5OEM4
-Cjc1RTkzNzcwRkMwQjMzMjA5MjQ4QzUyOTA1MzlDMjNFQzNFMDcyQUIwNzk3MTlEMzQxN0VG
-RUM3MjcyRjQ5NkYwQ0VEMEFGMkE1OEI5Mwo0NUY1QTc3OUFBNTRBMEIwNUY4MERCMTkwOEY2
-RjRCOTFDMERGNDFBQjU2RUNDMEI1NEVBOUJERjY5MjlCMUM3OTE0NzVDRjA4NjRFNUIKQTAw
-RENBNjIyODBGRkU2QTRDNjI2MjkxMTdDOTg5RDMzMkZGQkMyNTUzMEJERjRGMDg1OTI3NDE2
-NTZCNjBEODJGMENBMzlBM0NGMzc0CjVBNjI2NDc1RDFFOTc4MzM3OEU5NDA2NTlBQkE3MjEx
-NTg3REUxODUwNEM0QjMwMEY0MDQzNENGRTcxOUNBM0NEQzNEODlCQjIyNkY1QwoxRTM0NUEz
-QzkxODY3MTZFMDNDMjIyNDQwRUM1QTlEOUI1ODVGOUQxMEY5REExOEE5NEY5MjdFQzMyRTcz
-RTg0NDlGRkUzOTJGNzAzQjQKMThCNTI1RjVGOEY3NjVDRDYzODI0ODk2REMyRjgxRkE3NURC
-NzMzQTQxNzI0N0Y5OTBGRTZCRjA4NjFGMUI0NjNFRUYxQjcyNzA4NUFBCjM5RTM2QjQ4RjY5
-Q0QyQUYyRjA1QTNEMzI4QjNGMDU2NTA0OUMxOTQ4MTI4N0FEMDUxNUE1MkIzMjNDMTQxNzg5
-RDA4Q0UxNUQwRDc5MgpGRjJFOEY0OThCQTRERTA5MEI2NjAzRDcyNzBEOTkzQTE1MjIzMkY0
-RDBFMzc3MzlGRTI2OUU0MEU4RUE5Mjg3MjE4MEI2NzM0NzUyMkIKRDkzQURBM0MzQjQ0MTQw
-MDQ3MTFDMjUyNzZCMUQ4NDU1NzExODFGRkI0RUFDNDdFQjJCM0U3NDEyNTkzQTgwRDBBQjk1
-M0JCQUZFQjY0CkEwREE3MzYwN0EyMDdCOEUyQ0YzRjFDQjQ3Qjc0RjFEMzFCREZBQTVGNkU1
-NTZEMjcwRTAwRERGRUZERkRGQ0QwQkQ1OUNEMDNDMjU5MAo3QTRFQjBFMkNCREUyOTRBRDI3
-NEYyOTY0NkJDQkNERTQ0QkU4QUVENDFFODc4NTU3RjMwRTgxQTA4NDJBQjM4ODYzN0Y3QTIx
-MkU5NTMKOEFCMjExOUIyOEM1MUZCRkU0RTc1RUExN0FDMjMzOTQ5QTIzMkIwMTVGNzQ4QTVD
-NTFCMzBBREIwOTE4RDY5RUM2NDFCQkFBNTc0NTg4CkNENDVBQTc3OTFBRjg4QUVBQjRGODJG
-RkEwOTI5QkE3MkFERDRFQUE1OEEwMEVFRjc4MDAzNkI2NUQyNzlBMTAyNDA1MTVBQ0JGNjk2
-Qgo5MEY5MTlFRDVEOUNEOUI2NUQ4NTQ1MDM1NjUyMTI3OEQyRjgzNjcyMjhDMDk1MDdBNkI1
-MkFFNDEzMTgzNTIxQkQyNDU0QTc1NUUxNTAKNzg0RTQ0NkVBRkUzQ0IxMkYzNUE0QTkyRDdG
-NTUzNDI2MENCODRBNEQ2MTk4MEM1MzVEMjNGRDA5MTcwNkIyQkFGQzYwMDQ3RUQxMzg4CjJE
-M0RDMDBCQjFFMDA2QTJENjc4Q0ZCM0MyRjI5MjFBMzBBODA5MEYzMDNCQUI5MjI1REMyNDFG
-OUNDRkRDMTg2MEEwNjJFQTFGRjQwNAo3QTI3MDZGNDJDMUFCNzg5MzMzNDU0ODg3NkVDRUVE
-NjIxQ0IxMDVEMzBFMDNFRjBGNUYyNzAxODI0RDFDRUI1OTlDNDdERTlDRTIyNzQKQTQxRTNE
-NEVENjhDNTZEODEzMDg3N0UyMUVFMTYxRTg2M0NGMjc0MTNGREMwQTlGQkFDQzZENTE4QTc2
-N0NEQzcxMDJCNzg2RkFBOEJFCjQxM0Y2MjUwMzFDNzk5MzQ4NzlEOUYwRDBFODJCNTMzOUJF
-NUVGOTcyRjRCNTQ1MjkzNzQzRjBFMzE2NDdCNkEwMjI1NTBCMUNDRUMzMQo4NjI5N0IxRThF
-RjlBMEFGNzZENkIxNDRDODRBMkZGRDVBRTRCRDRCQkU2QkUwODRCREI0RTUwMzIxNjgzN0Qy
-MjlDQjgwRTRFMkNDNkUKM0JBNzAyQjNFMjNCQUUxRTk2MzA5RDkxOUEzREJENUYzMEQ3OEM1
-NzU5OEVEQzNCRUU0QTgzNzRFNERCNzYyM0UyRTZGMUMzMjE1QjM2CjMxQUU1M0EyOTExMjk4
-QTk1MjYzMUQ4ODg4NEE0NzdCQTA5RjUyNjA3MEFFQjhFMEU5RTFGRkI4RTY5NERDQjJDQkJF
-NEU1MzFBNzU3NQpERTlEMzVCOEVCODdERDVGRTQ0RDQwNDRCNjc0QkNFQzAzOEY1RDREOTMy
-NEM1RENBMUMwNTA1REIyMDQ5N0MyOEYzNDVBMjgzMTNCMTEKMEJFMTlCRjRDMTJBNDI0MkZE
-MDFDRTM4NTM2MkMyNzNENEEwMUYyMzQ2NDJEOTY4N0RDOTMwQ0Q2NjI2MzM0NDE2MUVDMDhC
-NDlDMzBBCjBFMzkxNzZFMDcyNzJDNUZGQUQwRTNBMzQ4OTI2MUEwNzBERkVEQ0U5RjI3RTVE
-QkM4REFGNjk5MzQ0QzA3MEI2QzAzMDMzOTIyMkRFQgpDMUY2MjVBRjZEQjg3NUM2OUZFREI0
-RDYxMzU4MTEwMDUzNTRCMjZGQUYyODRDQTJCOTJGNzM5OEUyNEQ4ODg3QzhFNzBBMTUxQTA1
-MzgKOTg4M0VDNzdFQUU2RjJGN0Q2Q0ZBNzdDNTJEODFBQzIyMUVCNjcxMUVFNUYxMUM2MjFF
-QjNBRDJFRDU3NTVGN0IwNTVDMTk3NDRCOTM3CjRBRjk4QjlEMTc4RkY3QUY0RUFFMUY1NEY0
-OUI0QzlCNzZBMzk0N0Q2NDc5NDFBNUMzRkI5QzNFNUI1QzU3RTRFREVCQ0U3ODMyQjE2QgpE
-RkU3M0ZEODQ1ODJFMUFGNTdBMzkzNDA0RkJEQjA3REY0MzQ0RkY1ODM3RDgyNTgwNEFEQkY1
-QkY4NTY4MkQ5QzIxNzdBREEyNjE1MDEKMzlCMDVBRkU2NTY3ODc1M0VGRkNBRDRGODcxQTND
-N0NERTkxOUY3QjY3N0Q5M0FERTE0MUYwNzc4QzFEQTBEMjVFNEE4MzY3MDg5RTA5CjhDOEU3
-NEVCQzcwQkI1Q0I3Qjg3MTdBMkYyMzQ5NkJDMjRCMDAwODVFODMwRUFEQTQ0QjUyOEU4QTBD
-RUJGQTg3MDE0MDU5OEYyRjY4MAo0MEMyMzdFRDkxNUQ0RTlDNTE1OEIxRkI1RDhBQ0UzQjY2
-RTQyOUU2QjUwQzIyRkJDNEQyODlBMTVCRkY1MkJCQ0Y3MUZERDM2QzY2NzkKNUE5REE1MzAz
-NjU0Qjg0RUREMjdDQkYxOTlBMkM1NjRGMDgwRDhGNTc4MUQzOUEzMkIyMUJFQkJDOTc4RkY4
-QzRDMzY5NEM0Mzk2NzI1CjY5ODExRDYwQTk1RUMzMkEyMzJGQzBERjEyNzZEQTBERDZBMjU0
-OEZGQjZDQUQyMTk3QkEzQzcwNEQwQTY3RkI4M0QwNTA4N0M5QzFGMgo5NEJCQ0YwRjcyRUVF
-OTE4MzNCOUE2MjVDNkE3NDlDMzY2NkM2QTc3NzAxMEUwNUYyNkFGQ0NDQzFBNkQ2Q0EyNkVE
-QjhEMTJBNzEzRUEKNDNGMENCOTY5MkU2QUFGQjI0NzA3ODdDQjIwN0Q3RjNEMjk3MTU4RTRF
-MzdDQ0ZCNjdFRjAxMTc3QzM2QkFDRjU1MTI5MTlFNjJDODg0CkRBMTU1QkZFMjU3QjgyMEFC
-MzZFODhBOUY4QkQ1OTA2NDJFNkVFMThEMjk1QTUzQjg0MzQyRTdGQ0ZBQzY0QzIxRTY4MUQz
-QTk3NDg1Ngo5QTFFMzNGQjQ2MzNGRUIyREU1NzI3ODcyMjAxNzYzQTVFNjQ5OTkxNjY0QzQw
-Qzc2OTA3QUM4NzZERjU2NjkxMUY0RjE1MUM4MTUwOTEKQkYzMTE2RUU3QzYwQ0JEMzc5RDM3
-MzdDNDJGQzM1Q0VGRkQ3MjU0OTJBODBGRjBBQTE3RkFGQ0NCRTVEQkQzMEIzMzEwMzE5NTcw
-MTgyCjAyRTkxRkYzODEzRTVCRjQxRjc5ODZCQjk3MDgwOEZGODAyQzAyQjMxQjg5NkNCNDgw
-QTUwODIzMzRCREY5QTM5MENCMjBFRjAzQzFCQgpGQjY0Mjg4QjI0NDY1NUFCOUVDQjhCRjhC
-OUVBNjE1NzFBQjJGRDNCMUUyOTE2RDM4QzI0N0MyMUY0QTRBRTAzRjdFMUNERDFBMjgzMDcK
-MUFFMDM1OUI5NjBGRDlDNDVBRTM5Nzk0RkNFNUQ3M0NBMUE1MDdGQzZEMEVBMDZDRUVEMTdB
-NDA4M0E1QjZBRDRBQzYzQjlFQ0MwMzc1CjBCNzk5RjNCQjZGODZFMTkwQkZENDdDRTdBNjk3
-QzZCMUM4OUMzQjU1QzJFQzA1OEYzQ0ZFRjJFQjUzQjM1Q0RFNzc0OUU3OTUzMUQ4MgowQTE1
-ODNERjM4QjJGQzBBNEVGREM1QzMwQUE1RDFERDc3REQ4MTk2REU1MTcwMTAxQTRBQzhDOEI5
-RERGREE5M0U5RkRDMDdGM0Y1NzIKRTE1NzdBNkUwQkIwM0Q1QkVEQzVCM0FGQUNERTFGMDE1
-NTM0Njk1OTQyRTlGQ0Y2RTNDOEQ3QzcwQkU1NjczODg2MkUzQTYyOTIyMzkwCkYzMUFFNTM5
-MUQ1NUQxMjU2ODBGM0ZDMERDMzkyQzdGNjk2Q0I5Q0NFNkVERkYyMEEzRUE0QzM4RUMxNkIy
-RDMzODkzRTE0OEREMzczRgpBMzA5MEFBMDFGRkQzQTM3QzFCQzgwNTMxQjQzMTBBQTQyQjdC
-MEZCRTAyNzYyQTY1NkM2OUExMjg1MDAzMDkzMTU4Q0MyRDEzMDU0RDcKQTE5MkRBODg4Mzgw
-QzgyRDRFQzAxQTc3RUU5NjJCNzhEMDUzNzNCMzdBQzU4OEJENUY4RkNDREUxOUM4MDBENjg0
-OTlFOUIwN0JEMzI5CjcwNjkxRUI2QUIyMUZGNENFREM5NEM5NkU1NTcyMDcyOEI1RDU0QUU1
-RjhBNzkwNUQ2QjE4RUJCMTg0OTkyQzJENEI0RUQxMjA0RDZGNAo1NkFCNjQ4MDc2QzI0ODY0
-QThBN0UzRUNBNTJENUM3M0U3NjBBNDQyRjFEMUExNjJGMTU1OTM0NDJFMEMzNzg1NUI1MUZF
-QUFDQzRCMjAKOTkzRDlEOUIzRUY2OTNDQzY4Q0E3NUU0NDlGMUUzMkIwMDIzMUE0ODRGMTEw
-QUFBMjA2NkE0MzQ4RDhEQzVENkFDMUZEMzc0RTQwNEFCCjk2RTMwOEJCMkExNTk5MDFCNkFB
-RTEyRTFCNUI2Njc0QzBEODIwODQxQjQzMzVDREYyMEYyQzY0Q0NGQzdFQjA2NEZBMEEwRjA3
-QjEyNQo4Q0Y5RkE2REU5QUY1N0IwRUNGMDlFMkRGRTk2RjhGNzhCODNDOUY2ODlGMUExMEQw
-QkQ4N0ZFOTkzMDcwMTU4MzE3MUZGREMzMEJCN0EKQkFEQkFCNUIwNzkwODZBNzk0M0EzQzZF
-RjVDOUY2NTJGOUJGMDM1OTE2Qjc2NzY0QjdCNTNFRUVFNTREOEEzM0Q1ODQ2RkM2QTZCNjRF
-Cjk5RkVGNDNDN0ZFOTBERkVCRjgzQ0U0MzU2NjEwQzY1Qzc3MTQyNkU3RDI4QkI2MDBFNzQz
-QTU3NUY4OEU1QTNGMUE2MUI1RjUzRDQzMQoxNTE1MTZCOEQyNDdFNjQyNTc0QjQwOUNFNDE5
-MUZCNkVBMDQwNTg2RjQ5RkQ5MTE2RkNDOUI2MDJGNzZGNjI5OEZBNzQyMjFCMzUwRUIKRjY5
-RjY4NTREMEU4RTJFOEJBNTBEMkRDRjdDMDREM0I5QjYzQzcwMjIwMDYzNzFEQzNGQjhFMTE0
-RjQ0QTUwMUMyOEE1RDYzMzgzOTI1CjM4OTZDM0NBNkE2NUE5QzBCMDk3NkE5QzVGRkYyOUVF
-MUQyN0IwQjZBMUNEMkEzMzkyOEY3NzlDQUI2NTQxODdGRjAwQ0FBRDBGRTI3Qwo3OTNGNUIx
-QTFFQUFEQjc1NzRCMkIwMDdEOUFDNUYzNDFFOEFFNDcxMDg4RERGQjZDREFDRDA0MzdEMUE3
-NUZENzUzMDE1MERFNDA0MTkKRTE0NEM3NzcyQzU4NjZERDA5RkZERjkyOEVBNDk5MTk2M0Uw
-QTU3ODQ5NjFCNDY3MTEwRTRCMTI2RDBGMDVDQUNGM0FFRENDMDBCNTU5CjlDNzg5MTc0Rjk2
-RDIwMThBQ0M4QjU4QkNCQ0I4MjdENjk0QjVBNEUxRjhDNDMxMEY3RkY1QzUwRkIzRTc3NDE3
-M0QyMUVDRDREMjc2RQpCMDJFMDhBNjA5MUQxMjAxRkMxMTc2RjA0NjQ2NkU0RDY4NTY5MkQ5
-N0VBQkVEMzY5OUFDNzQxRkQ1MDZDMTBCOTBEQ0FBNkI5MzZFNTcKMkE0RDdFNjg2MjE5OEIy
-OUFGNTcwMTAxODg5NDFDQzc2NjhFQzZDRTg2MEY0MTZENEFCOTVDNDRFMEIxNjg1ODA0QkZC
-MzI5OTE5RDJDCjBBRDk4Mzc1ODdBMzgwQzZGQTNGNjA1RUUzQzg0QTE0RjRFOEU1NzAyQTFG
-NTA1NzMxN0UyQzNBNzBDNERBNTNGRjE3MDNCRDg4QjE4QQowN0E2OEMyNjIyQkEzQUZENjEw
-QTRDM0FGNzNCN0VBMDk2NUIzNEM2OUFGNzIxNkY5RTlBMDBDQjYwOUFDNDU2N0VGRkVBQjI0
-NUFGRTkKMDI1MDZCODExMjI3QUYwMzZFODk4NUEwRDg5MzFCN0RBRDlDMEREQTAxQTg4QkQ1
-RTQwQzZERkUzRkFEN0QyNjhBNDFEOTNFRTM4RDJDCkI1QjhFQ0Y2QjdGMjk1RDEwN0IyMjE3
-QjA1NTVBNDM5RTk1ODZCMkIyNTI2OTM0REM5MjJDNUQ3NUM0QTU0NjlGOEIzQUNCNzIyQkUw
-MQozOTMxODQyOTEwNUE0RjVBQzI2NTdBQkI0QUYxMUVENjcyMTNBRDE2MTIwRUZDNjAyNjQ4
-MEZCMTVBRUMyOEYzQjBDMEFDNUI4MkFCNTUKMzIyQTlFMEU2REUzOUFDMTAzQzFCNEVFM0Y2
-MjM1RUQ2RDlBRjBBRDRBMjk0OUM2MUMxODI5NzhEOTk0NjREQ0U4MTQ2MkE3NURCRTlCCjM2
-OUYwREFFQjY2Nzk0ODcyN0I3MjFENEI2QzdBRUIwRTcyRTg2ODk2QUM2QkUzRjg5NDhFNUE4
-QzNBMkEwNEZCODg2NzUxNUFEQjkyQQpCMUQwQzc3QjVBMjlEODcxQjZFMzQwNkQ0NEI2QzRB
-RjRBMjkwNzQxOEJCOTlGRjQ5MTJGRDVFMjE3MUQxNDFCMDlDMzgxODU5NTA3MEQKNTgwNDEx
-QUJDMzg2MzI5OTkxRjREODZGQzdFREFBQkM4MTdBNzRCRkZFMzkwOTMxMTVGODI2MzQ1QTQ4
-RTk2NjY3NEIwRDMyOTBBNkJGCjFCNkY2MzREMDAyRjdFMTdBRTdDMDY1REM2RkI0QTE4ODk3
-RTJDMjVDOTZCOUIzNEE2QkNFODhBRjFGMEQyQTgzRDg3QzRGN0VCRUNCMwo5RjkwQUMxNTk0
-RDM5NUY3ODVDQjBGREE0QkNCN0UxNkNDNzhFNTgyNTI1QzVFQTA3M0U5NjExQkI1QjcyOUEz
-NzJEQkI4MEVEMEE1M0IKN0Q0NEUzNUU2NUJBNUI1MEUzODNGOTMyRjdEMEMzOEI0QkNFNDND
-N0VFRjRDQjFEQjE2QUQ1QzNCQjc0MUFFNzNERDAwQzBGNUY5NDlFCjFDNEZFODc5RTdERERD
-Q0Q0NzUxOTc5MTdENERGM0NGNjJDQ0NGQ0VDQjMxMTM3QjBEODA3QUNBOUEwMjQyODk4RkFD
-OTU0QzM4MjIxNAo2NkJCMzZCQzU0QjFERDZCOTI3OTI0QTVCRTFFRjY1QjY2OTdGQzZGMEI2
-MjFBQjU0OTlDMDNDRTRBRUUzQ0Q3REZEMUNBMzY5REZFRkEKRjQyMUJBMDFBOEQ1Nzk0RjYz
-QjA1NjI1Q0UwMjUxM0I0Qzg0QjhDMDE4OURCMzM2OEU3QTc1NjhCNDIyREVCMDdEN0UzNEQx
-MEQzN0EzCjFDRjU5MTExRkE1NEU0OTA4NjdCQkI0NUVFNjM1RDRFNjkxMTZGNEYwMDgxMjBG
-RUVDNkZCN0I3RkRCNUY5MjEzODFDQzUyMEM4MTZENwo0REMyOUVCRUFGNDFFQTYyMzA5ODJF
-NDg2RTQ5MTZCMjg1Q0M2NjU2RUI3RUIyQTFFMTM4MTdFRDIyRkUxMTlFNDk0NTJBQTBCRUE4
-Q0QKREYwNDU3Qjg0NTBGQUE3Q0E2ODYzQjQ3QjI5N0YwMEFBNkYwMzk5NDFEODk2MjYxNTNE
-NUZFN0Y1NEVEMDJGRDAyQkQ2OEVBQjQwODM2CjU1QzExMzA2RTM4RTg5RjQ4NTNFOTExNjk2
-ODk2MjMyRDEyQTA4MDAxMTNEQzAwNjZBRUFDNkUxMEFDNUNGRDU2REJDNEJCMzZCQUFFQQpC
-MUE4MjFDRDdERDVGRUYxNzg4NEY0NkJFODIwNDBCNTM3MDVEMzU0MUVDRkZGNTdGMzc5RTlC
-RTYxOUY1MjQzNjAxN0Y2QzY3N0UyQTcKOEMxMDVDREMyNzZBN0UxMjIyNEJGMzAyODRBOEJF
-MUFFMDYyMzFDRUU4MDM5OEYxNjA0MEZDNzIwOTM0RTMzRTQ2RjRFNENGQjQxMEQ2CjJCMzdD
-OTVDQ0Y2QTVEMEIyMDU4NjVERkQxMzQ1MjA0QTNEMkFGNUFBQkU2QzVDRkMxNkU5N0ZDM0NG
-MjdCQUFGNTRGNEYzRENGMTM4OAoxQzk5MTZCOUJBRjhEMTYwREI1NTczRjE2QzVBMUY5NURF
-ODhGODc4NDYxQkZFOThBQ0YxMzdDMTQyNjhERDg4ODJCMjBBMDg1OTkxNEMKRERERTI4OTlD
-QUFBNDE5RjU2MUMwNEZGMERDMjkwRjQwRTMxOTIxMDMwMEU5MTYyODgwMUFCQkQxREZGQkFE
-QzY4NTA0MDI3MkRGRTkwCjdGM0RDMEMwQTVDNDE5RkQxN0ZCRDRFN0I2MERDMUVDMUI2OUQ4
-M0Y0RURFOEI4QzZBNERDRkQyRDQxOUJBODhCREI0RDlDQTA1MDRGNgpEQzI4RjUwNzFFNzNE
-MkJBOTVEMTVCOEFGMDE1MjdCMjMyMTgzN0NGMUY2NkRDQjU4QjYwNzEzNDlENUVDOTUxRTk4
-QjBBM0UyOTQ1RkQKRkE5MjhENjM5M0Q4NTIwMjRDRTBEOUY1QUQxQzBENENEMjc1MzI4RjEy
-NjNBOTY1QjUzOUY5Rjc3QTExRDk2MDFDNzBGRUM2MTA5RTNECjUyNTI2OUI1NEFDN0FFMTBB
-QkQ3RTlERkU2RDJDMTE2QURDQTA0ODg3RjlBNjEyMzZCMkI2Q0YwN0JGNjYyOUI0RjkxMjcy
-OTIxMDA2RQpCNzNDQTY2OTU5NDM4MjhDOEI2QjZBRTZDNzRERTI2RDAwODc0QjBDQUMyN0I4
-QjZDRTJBQzI5RkNFRjJERDA2NTIwMTEzNDgyQjlFOTcKQjBBNjVCQkUxNDU3MkU4RUQ1RDY5
-OEM0QjMwQjMxRUY0QTY4NjU5Q0IxNzhEQzc5QUVCOUMzN0EwNjkyODBGMTBFODM4MDc1RjM4
-M0IzCkU1OUI4RkE2RkVEMUU4NUFFMjYwQzVDOTYxMkY2NTcyMkE2RUVBOUUwRTkyMTg4NzM4
-MDE5QTNBQUQyNUU3NDY3OTFERDhGRDkyQUUxNQo4MThCRDI3OEYyRTI3REY2RjVFOUY0MTBF
-NDE5OTM1RTg4Mjk5OTBDMUE0NkJBMjkxMjQ4M0Q0OERENUJFNTRBNDJGRTMzNjA0MTdBQzQK
-ODZEMTk2MzM4NjdFQUNGOENERTU4NjVGMkE1REJDRUJFQkJCQUFFQTY3MEFBRkM4NkVDRjIz
-NEZBQUU4MjVBNDcwMTQ5MTNCQkMyOUEzCkZFNkY0QjhBRTA5RjYyRDJGOEI2RTU0RDVEMTY5
-MUQ4QzFBREU2RUJBREQyNjhEQ0ZEREM0QTU4NDg0QkE3MkQ2OTcwRjREQTc5MDVFRAo4MDcw
-OTYwMjI1RDczQjc3OTIzQzVEQkJDMzU5RTM0ODIyMzQ4Mzg3QzMwOUIxN0U0RjM2MzI0QTJF
-QTFDMkYzMDVENkUyQzc1NzNBQzYKNjMwOTFGMkY4Mzk2NDU4MzcxQkI2MkIxQkEwNDFENDE4
-QkNDMDM5NEI2OTc0QUFGNkJFMzdFOEU5QUE3REE1NDNFREU5RjgzRjZERTA2CjE3N0U2MEM5
-ODY4MEI4RTRENkRGRENDOTIxQjZGMDQ0MzY2NTM5QkFBOTgxM0E2QUNENDhEMEYwMjI5QkI5
-M0FGMjQ0REQxOTFBMkIzRgoyNkZFMjhCQkY0Q0E5QkE1RDJFMTdDRThGNDVCMzVENTk1MjIw
-RTQ2QkRCQ0M0NzQ4NDkxMTg2OUU3MDBEODIyOUJERTJERDQ1Nzc1QzgKNTY3OUE3MzBDMDA3
-NjZFQjhFNjlCQThBQ0QyRDkwM0JGMDFCOUY4MTY0RTNDQzdDOTU0NTU5MEM1NUI1Q0MxNzMz
-QkNBQkE3QjA3QTc2CkVBNjFBMDMxNUEwNzdBNTM2MjZFQzU2RDFDMkRGMzM4REYwOUI0REQz
-NzVGQzE1MjYwODA4QzJEQjRGOTY1OUQ1MkY1NkQ0NzRDNTg4RQowQTc3NTc0M0E3MjM4NDYx
-MDQyQkM5QzQwRjFDNEY1QUM2NDBGNTQ2N0RGOEMxNzFFNzRGRTY3MEIzMzFFNTdENzc5OUYw
-QThENTE5RjQKODhCREEyOTlBQUQ4NjYzOEE5OTgzMTcyRDA5RUM4QUNBN0I3QzA4MTlDRTc1
-MjhGQUYzOTQ1NjlFMDRGNTRENUE2MDg2RTc1ODhGQUZCCjY1QUY3RTY5MDRENTQwOUI2MkRB
-NTdBMkMzRTI2MTg0RDY4RDVGRkYyOEU4QTAwMjdFQjVDMTI4QzlDMTJGMUMxQ0RERjA4RDhD
-OUQxMgpFMDU3QUQzMENGRDkwRjNBMjlDRUY0NTI1RUJBMDUzOTYzNzBEQTkxQTc4MDJBNTFF
-NDBDMzMxRjVERTJERjRBMzk1NThDRDY2ODI2NDAKMDNEMTc0QTQyQzUwQjZBNUIyQUI3MjAx
-NkIyQjVFMzlGQ0JCRjUwMjlEMzk3MTJCRTAzMTcxRjEyMDhCRTVFMUE5NDVBRUMzQUZDQjlB
-CjdBNUU2MDU4RjcwQzNBMUMyQ0RBNzREQjBDNDNBMDk0MjJFMTFDRDJBNTdDRTRDQ0YwRkU1
-OEU1RTJFN0UzMDUxRTQwMUMxRjM0NjA2RQo2MTZGRkI0RjQ0NDJEQjE0MUI5QkU0MjZCRkJE
-NDNEMTQ1ODFFQTQxMjhEMjQ0ODE4Rjg1QjY0MjRDODAwREMxMTdENkI3QkQ0NjkzMjEKMEQ3
-MjU1MDM0MEIxREQxQzQzMkIwNUVDNDE0OTIyQzg5OUI3NTU1OUQyNUE2M0E0NDIyM0ExNDlB
-REI1NzRFQTUxNTMyMEU2NzhERjY2CjZBQTlENjE5QjNDNDgzMUIwMEY5NkYxQzAyNzEyQzM5
-NTM4MUNEMDM4M0I2M0JDNTNDMUZBNEM1Q0Q0RDAwODYyRjY4MTlCNDkxRDI2MAo0QTRBRTQ5
-NTVGNzYxNUQ4N0MyOTgzOTZDODI3ODA3NUZEQzAwOENBQzI1NDczQzlGOUNCMjhBNTA3NDUy
-QjdFQURGQTU2QTNEQUE3QzkKMTZBRDRGMDkwMTIzQzhDODg1RDlEMUVDQkZGOEQwNzRDOThC
-RThGMThDMEZEQzI1MTBBNDMwNUU5Q0M4QkE1NzEzNzRCQkI3QkJGNzVDCkYxQ0M5ODI5RDVB
-MUEyNTJFNDczMEQxQUUzMjEwQUIwNzRCNjdCMDBDNTQzOTEzMjhDRTExNDdGMjA1NTAyREZF
-M0E2RUM0N0E0RDYzQQpCN0QyNjM3QjJEQjEyMUU2M0ZBQzFGRUM2ODg4OEEyMDAxODQwQTA1
-QUM5MEIwN0I1NzdFMTFEOTc2NDQ1MTczOTRBRUMwN0NENDBEMDIKQ0RCOUJFNTY3REEzRjQx
-MzVCMDI1M0Q1MDNENTBFQzU2NkY0MjIxODJEQTE3M0FENjJFMkI5NEQzMUE1QjRGMjA5OUY5
-RkNBMjUyMjQ2CjY4NjJCRUY2NTg1RTFBMTg5NTY1OTU4QjM4QTY0Q0ZFQ0E0QkU1MTVFNkUy
-QkQ4QkM1RUU0NEZDQTU5M0EyQjg2ODU0NDMyMTk0OEU3RgpBNEFGQzFGNUEyODY4Q0ZGRTM2
-M0M3QzZFODgxNjU0NDRFMTNDOEM0N0M2NUU3MkM5QzhCMjhDQTQ5NkI0OUEyRTQ2RDgxQjUy
-QjQ4QzUKN0IzQzgwMTFCQUI4RThEQzlBMTQ3NjcxNTNDQ0Q4RkY0QTIxNjZGQjAwQTYwNDAy
-RkUwQUUzRjA2OTFCNTcyNzY2RkE0QkNFNjA3NTA4CjNCMkIxQzNFMTZDRjRDOTEwODQ2MkFG
-MUU2QTQ4RjREN0ExQTQxNjQ1RkEyNzY3NzI4MTAyMjk0OTUwMDQ4M0I0NkJBMjNGMTc1NUI1
-RgpFRjA1NzhFNUYyRTVCRkNFRTJGNzEzQjMzMjRBODM5MEFDRTE5MUQ1MTQwODAyMkMzQzhG
-M0EyMDc3NjZFQUNDMDVBMTRFM0MzRUI2RTQKODVGRjg3Q0U0QzYyRkFFM0M2QkFEMEQyNkFD
-QzhFN0U1ODRBOENEN0EyNUE5QUZCNDJEQTYxMDZGMDdBNjVDMjYxNjcxMjAyQURBRDY5CjU0
-MkVDNkQxQ0M1QjFFRUI2MDVFNDc0QkM5NDlCQTdCMkU4QTY0RDRGNUJEN0JCQjMyNkMwNkY5
-NjMwRDRGOTlCOTcyOUNGNDIwNUQyOQoxMkJFOUNGODFGQjExNDU0MUVGOEQ3RDVDRTRERDE5
-NTFDQkZCQjVCMkZGNUE5ODk2MjAyRDQzOEM3MjI1QjhCMEY0Qzk4NUI1QTk0Q0EKMDk0NDhB
-NDZDMkUzRjA0Njc0QTU5RjU1QkE5ODUxQkE2MTQyNzM4MDkzMEJGMjc0N0NDQTdDQjkzMjM4
-ODU2MTk2OURGN0Y1RDk1NDVDCjUxOTVFNTJBODQ3RUYyQkY0RkUzMzI1NTYwNkJBRjNBRDY5
-NTU0NENBMEZBNzY4MTAzNDUxNzY0MEQ1NjExQUUxQTVGMTE3OENFNjk1QwoyMjNFMjlDNDFB
-NDAxNzc2MEYzNjUxMTIyQjdCREE0RTk2N0JGNUQ3NkZCOTM5ODRBNTI3NzNDNTE4QkJDNzFE
-QjMyRkM1MUZDQzJGMjcKQkY1OTYyMkM4OTA3MjQxQTE2RDMxMDc5QUFGMUYzMTAwNDFENjND
-Nzc1MDg3MkY4RkUyOTRDMDZDNDgzODUyMzk5NDE0QTAzRDRCNjg0CjQ0Mjg5NzE3QjNEMDk3
-MzI0RUE3OTFCOTYzQTI3M0QwMzMxNzE0RjFGOTEyRkQ2MjYyQjgxRkM4OUE1MDUwQTVGMzQx
-RTkxNTAwQ0IwMApFOTcwQ0VFMjJDNkMyOEVEMTUzQTQ0Q0Y0M0U5REE1NUZDRkVEOEI5NTNG
-OTQxMkExRkU0NzcxMDREQjNCQzQ2QTg5NzY4MkI0OTEyQUYKMURERTdGMjBBNkI5QTQzNjUw
-NjBDQURCRTUzMTZCODA1QUQwQzVDMzJENTVCODQ1OEM0N0I1RDQ3RkMxQjQxNDBFMEY2QjQy
-Qjc4RkMwCkJEMjYyMzEzRjk2REZCRUY5RUZBNUE0RjU5MEJDQkEzQzQ4NEExNTFDMDUxMTNF
-NERCOUM1NkZBMTg3Q0U1RDA3QkZBNURBOEVCREU4MwozRTc1QzZBRThEOEU2NTE2NTRFMTEw
-MDgxNzJCRkJFQzBDNTlGODNCQzFENkFEOUM0REU4RUVBQjc3OUMxRjhEQzQ3OUVEMDg0Qjc2
-RDYKRDU4MkRDRkUwOEJDNDM5N0VENzFGMjU2MjU3NTIzMkQ5QjQxRUEyQjVGMjM3MjJEQTQw
-MjMxRTlBQjg1Njc3QzI5QTZCQzM3RkMzNkU0CkRDNDQxNDY2MUNDNjI3RUJGOTRBRjJCMTND
-QTU3MURCRjAxMDVEMDg2MzJDQkY2NDBCRTFBNkY0QjMzMDQ2MjM4RDYyRDExODk2OTJBMwo2
-RUMzN0QwMjk5QjJCNDNEOERDQzA2RDM3NEVBRjBCNUQwMDBBOEIxNDRBOTU0QTM3Q0I3QkE2
-QjdBQkEzNjE3QkUyRjcxOUZCOTU0MTAKNTE3OTg5OUZEMjE4N0JDOTA2RUQxOUQ1NEQ4QkFE
-MkI5NzBFN0I2MkFFOEVFMUIxNzk4OUUyNkYzNDBCREFFMTg4RjdGRjQyMTNBMUVECjc1OEZF
-QjBERTMzQTMzRkNFREQzQjg3NDc5MUI2REE1RjYzQjkxQTJFRDVEQ0Q2NzE4MEQzNzQ1NjJB
-MkFEQzczMzU5Q0U5RURGODhDRQo4MjRBQUMxNTA3OTQ0MUE5NUQ4RjBFQUFBMThFNkNGRTQw
-MTYzMjZBNzVBNzZDMjEwMzQ3QUNBRkJCOTBDM0UxNEM3NzMyQzhGNUNFOTcKQ0M0QTlDQzZF
-MkYxNDQ0RENEMTcwREIxMkE5QkY4MzJDQTFBMjM4QTI5QzYxRTUxOUU5RjAwRjBGNTA5MEU4
-NDkzM0YzNUZCN0U3MTdCCkI2NDk5MUVDQkU2NTBFNDg2NEIyNEFDQTkyOTc0M0VCNzc1OTFG
-NjQ0ODc3ODlFQkZGMkEyQkUzOTlDNTA5N0Q2QzY3M0I2QzVBMjE3OQpCQjNFODQ2RjQ5RjJG
-ODNGM0IxRjM2MEZCQjJEQkE2QUE0QTUxNkVBMUJERUQ1MEE0OTdBREY1MjBGMkQxODg0NkJC
-MzBBRkExQjczMkQKNzYxQjY3NjAwODBCNDQ4OTYzRDc3Njc2RDlCQUNDMTI3RTVFMDMzRTRG
-MTIxNUYwREZGQkY3NDI0NzQwNEIyNzYyMDFDMzlEMTg3REI1Cjk4ODZBNTk3RTA0RTRDQzA1
-REJBNTAwQTI0QzlGMjIzN0Q1QkREOTNGOTA4OUI5MkM2NTNFNDdBRjhFRjAwRTYyRjVGMjJG
-RjhBQUREQQpDQ0YxQ0VFRTYzNTBGMzM0ODc5MjkxMkRDNjEzMUZGQzFEQjkzRkZDQUNGNUI4
-OEM5NkY1REVFNTcwMDA4Q0UzOUIxRTAwMkEyNEJCRkQKQzNCMEEwOTc2N0IyNDY0NDIxNkJG
-ODkwNUUwMkVDMUZFNjQ3NzU3NUUzQzQ1REE1QTA1QkU0NzVDMjBEQUE3QkNBQkI0M0I0QTlG
-MTZFCjZDNUZGNTQ4M0UwRjUxNzhFMzIwQ0EzOTM4NzM2Q0YzMjU2OUI2MUJFNUJCQzcyNEQy
-QUUwRjk3MEFDODhBM0I0QUMyREJBOERFOEVEMApENDJEMDIxNUQ0N0NCNDlFNjlGRTFEN0Q3
-RTQwRTg3RDAzNTRDODM1RjQ1NzM1NzYwQUMwMkExMzI0RUQ3ODE2RDk4MzhEMjg1NzgwOTgK
-REUwRjFDNjUwNTEzM0IwMDAxNjQwODMzMTA1NzNCRUNBRUIyMENDODgwRUU1OTI4NDVCNkNC
-NEQzRjJDOTRERDA2RTNBRjQzMjQyNDk5CjU2QzJERDUxRkUyRDIyMDhFMzJGQzhBODM3QjQ3
-MDVCNzFDQTY4RDcyMTRFOTJGMjk5NjA2NkFENkJBODY3MkEyQjA5NjUyQjNFMTg2MQo3RjZC
-MUI2MENFMThGOUVFNUJFQTM2MTZDM0VERUI5QUI3OUVEN0RCQ0ZGMDVBRTZDNUUwM0YzM0M0
-QjIwQzVEMkFDOEIwNDlCMDlBODAKMUVBODNEM0UxQ0M1QzNDQkY2MDhCMzlGRjI2NjIzNjlC
-ODU0NzhFQkRENDU2NUFDN0U2RDc5Q0RDRTBBMzZFOTEzRkI2QTZBMDk4QjRCCkExNkVERDdC
-RjE0MTVEQkMwQTMxREUzMDkwOUREQjU4OEM1NzNGQTU0QzNBN0M3MDNENzZCRTk3NTA3OUI3
-ODEwNzNDREZENjBFQUU2OQo2QkY5OTFCNjlEQjU0RkUyNENEREIwMkE0NENBOEMzMkYwOTM1
-RTc3QTVCODMzOUY2MEZDODYzMEEwRTkyMUE0NDQ2NDNENjg1MDFFMjUKRjY0ODEzRkQ5NEFG
-NDVGOTA0MEIxNDhCRjA1NjhDMTk2M0Q5QjI2RDcwOTk1MTY5NDgzQjAxMUQ4NjVERDI2NDIy
-NTMyMkM0NUZDNjVDCjUxNzJERUM3MEQwQjJCNzkyNTk0QTlDQUNCMjFBMjI1RThEMDc5MDhB
-MDUyQUU0RjBGQkQzOTE4RjdGOUFCMEQ3RDJFQkRBNUYwRTA3QwpEMDQzMDQ4QzVEQThGMEEz
-OEMyMjVEMkMxNUE1RTAzNjg5MDQ5RDgwNDYzQjdDQzM1QTU0RTIwMkZCMjMzMzcwN0UwQTM2
-ODJCODUxNTAKMUJFMTU3MTVBOTRBQUZEQjQ5QkY2QkU1RjgwRDgzRkNBQjI4QjBCODAwRDY4
-NUU2NThENDEyODZENEJENDIxREYxMDQyOEM0MDU3N0FDCjM2Mzg2RkM2Qjc2RkJCOThCRkI2
-QTEzRkI2RkE0MEM2ODM3NjgwQ0ZCMTUyMEMwNzA2MjU0RkNFNjIyRDE0QUVCRjU4NzgxRTBC
-RjJBNgoyMjJGNTRDNDM3MDRENEUzNzBEMEFCM0M5MUY0RDU1MDFEQ0Y2OUZDREI4QTA4Q0Y3
-NzA2REZBNDU2QTExOTEzQzQyRjYxQTgzMkFFQTgKQjE4OTQwOUUxNDY1NTczMzhBQjA1OUFD
-N0JBOUNGRUVGMkFBOTY5QzU1NjFCNjc3NDE0QTkxNjgwNjQ5Q0MzREFGRjU3NkZFNjg2RjlB
-CkI5OTMxQTc0OUFEMTdGNkMwQzkwMTIwQUY4QTk1ODQ1MzVGMUYwQjdDMzExMzRDMDlDOENC
-MDdEODU3Mzk1RjAwRDk4Mzg0RDhCRkFGQQpGRTI3NTY2QUY5RTk2OTE1ODcwQzg3NDk5RUJG
-MjQzRDhFRTgyOTFFNjBEQzczQzhBREMyODg2RTREOTgwOEEzOTk2NEQyNEI4RUEzMEUKRjkz
-QjA0REZCREE1QTVCODY4RDI5RTM5NDUwMzBBQzBBMzk0RUM0NjU3QjRGQUQ5RDJFMkM3OTY1
-REM3RUE5MTZBM0UyMEU2N0JCQjdFCjk5RDUyNTU0RDIyNDkzOERFQjM1QjExNjc2RjkxRjVF
-RDI0QkE2NjcwRjU3NDUzN0JGQkNENDAzRjA5MjEyQzNERkMzQjhGNEREOUVFRgpERTI3NjU2
-QUZBNDFCNjlEOTA5NEZEMjM3NzlCMzdENkU1NERGQjZBNjU0OTIzQUE5MDkzMDA2QjIzQ0NE
-RDY4REUwRDZEQzZFOEIyMzIKNDY0REYyNTQxMkRBMzI0ODZBODE4ODc0NTA4OTFDRTQ5MTcy
-Q0YwMDMzQzNDRTAyMDZCMDJBOUJDOTRGQjYwOTQ5MUJEM0I4RjJEN0Q5CjA4MDEwMkFGNjg0
-RUY5MzkxMzE2MEEwN0ZFNzg3QjFGRTg0M0E5MDY0RENFNUUyOTYxMjEyOURGRUUwNTU2NDZG
-QjVCRDc4MDE5MDU4Qwo4RTMyRjI5NzIxNUFDNjMxMzAyMkM0MEZGNEJDOUEzODUyOUNFOEY1
-NzREQkM1NERDRUMwRkIzN0YxRTk5QTUwMTY2RjhEN0ZDNDBBRDkKMjgzNDgyOTUyRTA2OTJE
-MjFDNkI4RkQ3NTkyQjQ4RDc3QkQzNDg3RURGRjY5MzVEQTlGNEE5MjZCNUNCNjI1Qzk5NEIy
-MzY1QTM5Njg4CjA5NUI5QzQ2NjMyNTRDNzMwNDYxN0QyRUQ3OUYzMzNGNTc2OUJFQ0NGMEI4
-ODI4N0YxNzA4RkZBNzIxMUJDMENGOUJCNTcxNUVEQjczMwo2RjAwOUE2QTc5N0VCMzY1NkY4
-QjgyQUM5MzA2OTVBNTExQjhFNDVFMjAwQkE4MkI4MUYzMzc4QkJFMjE5NkI0QjZDRkExOUI4
-MjlEOEYKOEZEREE2MDA2RUUwMjg5NjVDMzRDRkZDNUQ3MUVDRTFFOTg2NEQ1Qzc3MEI2Njgy
-OEI5Q0Y4NzgzQUMxNDEzMzcxRkUyN0ZBRkFGNDZECjk5MjA0N0Y2NEMxRkJDREE1NUZDNjUy
-NUZFNUNGMTZFNjgxRkNCNkYzNTc4NkUyNjIwMzRFMUIxQjRGMDlDQzRBRjNBNDc4QTMwQjQw
-OAo0OThEMTkyQzYyN0IwNkFBRjBEODhFODdENEZFMTNEQzE0QTlBOEEyMEY5RUE0MDRGOERD
-ODlDMTIyNDIzRkZCNUIwRTNCODhGMjVDNEEKNDRDNzk5NDQ5RDEzQjE2OUUyOEE2MEM4NkUx
-NzM4NDc3MjU2Q0UyMkUwMTZBMDMxOUI2MERDOEE5RDA0MjZCRTEzNzYxNjk2MkJDNzM2CjZC
-RTY3ODA5NDI5NTVCRERFNENGNENFRjMxNzdFOUZDRTU4RTcwNkIzQkI4QTAxM0JBRUUzOTUw
-NkU3Mzc4QTlDNUExRjlBQUNBMkVGOAoyMjQxODY1NDI1MDFCNzY1RjAwMkI2QjM1QTc5RUQ3
-QTJBNzdERTExOTIyNTBBM0QxMTlCNjg3RDBBRDJDRDI2OTM0OEM2NTA3NUFGQUUKRDhERDgy
-RUNFRjUxRENCQzE4QzM3NEQ4QTA5MkQ5OUJBRDNBQjVDMjlBOEZEMjhGQjQxQzAyRUYzRTRE
-MDk1QjcwODJFNkQ1RUUxQTVFCjQzMDZDOUU4NzdBN0JFMzQ4RkNBMjQwNTI3QjRDMzQ5RkY3
-RkY4NDkwMUE1RDIyNDI4QjI3QUMzNEI0NEVDNTA3NDQ3NjQ0QkJENTUwMQo4RkJBMDFFQkEz
-NjkzNDE4RUEyRjY5MDZFRjNDMTU3N0Q5MUI2M0NEMEJEMkM1MTk1OTdFRTA3RDk4Mjk3OTQy
-RDgwQjBCNjVDMjU5ODcKOTQ5MDgzRkIwNjQyREZGQkJBRDc0QzIyQzNDMTAxMDJFNTdDN0FD
-MERGNDA5OUM5Nzg3M0RFRjcxMzk0NEJBRUI5MjAyODdCOEUwOTNBCkJDRTUxQkQ1MkNFNDVE
-QjNDNkE3MzdBNTVFMUEwMEFFQUI1MEU3MUY1RDVCMENERkU2MTU1MURDN0NDM0JEMDM5MzRE
-RjI3MkJFMTk0NApFRUM2MjFFQUMwMkRBQUQ4RTU0RTA0REREMkMzRjAyQ0VBQ0M5NDdDNzk5
-NDI0RUZEMUE2Qzc1QzdBMzVCRENBRDFEQkNCOUYxOUJDRTQKMTJCQjAxOUNCQzc1MjU1MzZD
-NUNFMjFFMzJFOUI5QUEwNjg1QzdEM0JGRjNEODJFRUZENjg0RThENjNBNTI2MDE4RjQzMDVE
-MTM3Q0Y0CjZCOTdCREZGQzFFMjhCNzc0NUM4MDgyOTNDMjRDODQ5QzlDNjFFOTNDQzY0RDk5
-ODIwRkZCQzVGMUQ5RjAxNkREQTYyMUM5N0ZBODQxOApBMDQxMEY3OERERjQ1MzE4ODU1MDk0
-NjRFNTVDMkVFQkUyM0FEMTdDNjA5NjE2OTk2NjhFRTc2QzZFNDRFMEQwQkNDODM5QjgwOEFC
-REMKQjZGQkI1ODZDODdBOTU3MTM2MjE2OTUzMzE1OTgxQUZCMjA4OUMxMTA1RUYwN0RDNDdF
-NUIzNjcwRUMxNjY0Q0QxMzcxOEI4REJCQzUxCjc0Njc1MEFBQTM3NEU3MUQ0QUJEQzMxRjhF
-OEFDMzgwNEU5MDg1OTdDQUI4QjNFNzBFQjQyQUM2N0EwQjVCMUUyRTYyODc5NkJDM0E2OQpG
-M0RGQjYzREI3REU0RTQwNDExQ0RCRjk4Qjg2Njg4QUY0Q0NEODY0N0FBRTRFMUQ2MDhBMDBF
-MDgzNEU3RDM0Q0ZEQUQ4Qzk1REYyMUYKQUY2MjQwNDY0M0JERTM3MDA1MTRCRERDODFCQjM0
-REY3NUM3RjhFREE3MDRCMTQ2RDIwRTE0RUJDOThCOUQwQTExMjE4RUM4NTc4QkY1CjIzOUU1
-NjMzNjA1Qzc2OUVGM0VGNjg1NUY0OERGMTZERDhERTUzMjBFMTg1MUU3QzE3MzExQ0VCMkY5
-QTI4MTE0MjRERENDMEU2QkQzNgpFNDVCQjUxOTFEODkwMTk3NjU3QjY2RkVFMDVCODNBQ0I4
-OEUxMkJFMUE0OEQ2Njk0OTE4ODA4MEEwRjJERjcxREE3QTJFM0IwNzJCMjMKRkU5NEYxNzYy
-MTZBRDVGOERCQUNFMDc5MTA2MTA1NkU1QkE0MzY0QkI3NDI3M0E5M0I4NTNEQjIzRTM5NjEx
-NkI4QzFDM0YzRjhDNTQ1CkE0MkYwMkQ0NURBN0REMkVBRDM0QzAxRURFMTYzRkM1Qjk0MDBD
-MEQzOUJGMENERTFCMUZDQ0JCNjhENDdCNDQ4ODVFQjBBQjE0RDIwNQpBMzBEMUYyRTRFMTgy
-NUQ5NzQyREEzRUJGNEU0N0Y2RjJGNzUwNTYyNDAwQzU0MzMwRjc5MkE5OThGRkMxNTg2NTA5
-NDBDMEIxMTUyODIKRDhDMjJDRDM0RjhDRDUzMkVEM0I5NEE1NDk2QzMzQjM4MDJBQzVENjI3
-QjVGMEE4NzA2MzExMTkxRUM0MjUyNTQ5RDgxM0M5MkEwMUE5CjgwNEIzOTQwMjY2MEI0ODkw
-OTVGOTQ0MUQ5NThGRTM4NzNDRDZFNkZEM0VBOTFFREZGRkZBQkFGNDYwQjcxRjFDMUVCOTcw
-M0E3RDlBQwpBQUEzNDMzN0MzMDZCNjdFNzQ2MEFFRTFBRjAyRTdFMkU0OUEzMzI1OTlCQThD
-RjIzMDlBRjI3MDM2MzFCNEQ5MUNCRUQyNkFGNDk0MTAKODMwQ0NBNzAyM0E3NTgxRTJBREI5
-NzM4N0E3REJBMjMxODlBQTk5M0I4NkJFREVGNTlBNzJGMjQ2QTRGNThFQkUzNTQ5OTJEOTE1
-MTRGCjEzMEFCMkMxNjc3MTdBOTdENjQ3QTE1N0JCNkIxRDk2OEFDODZDOUE5N0U4RkJERTlC
-MkUxNDFEQTdBMUVGQ0UyMTM5RDEzRjBCNzQ4OQo1MUNFNzNCMUFFOTNCMTlFOTNCNDU2QzQ5
-MTM2M0UwNDVDRDVBNEM3OUVBRTUxNzRGMzMyQTM2QTlCQzEwMDFCNzkzMDIyOTgzREEyQTEK
-OEE4QzdGQUYyMzZEQTg4NDE1QTRDN0EyNjJDQTcxNEUzNzNBNzMzM0IzNjZBQjM1QjlFMzlD
-NzM4OUE5RDNEQzM4NUVFOTUxRjY2ODc5CjE4OEM2QTUwQzNEOTU1NkNGNzBDMTlGMzMwOEVD
-QUUxMjAwOUMzMjRGOTNGNjlFODIwOEEyQThFOTY4NkVEQkIxNDFCMTAxMDM2OEFEQQo3OEVC
-RjNFNTJCRjA1ODI3RTQ1M0E5QjIzMThBN0EzMUI2ODExNDg0MTk0MzRDQjczOEE1QTM2QTlB
-MzkwNURCMDBGNDU5QjI2NUM3OTMKNDEzMzFBOTY2MTM1MkU0MDE1NzIyMUJGMEQzRUU5QTNE
-N0UxMDlCRDJGQUVEM0ZERkY1OEM4QjE3REQ4RDQxRUVBNzgwQTA5MEI2QTYxCkU4NENDODRF
-MEI1QTA3QjdGMTc2RTNFM0IyMUZBNjdBNkU1MUIxNTREQjE0MjJBRUJCM0YxMURFNTdFM0Ey
-OTI4NDQwQkRCMTAwNUJDOAo1ODU5OEQ4RDc3RjMwNjI4REUyNThGMjY2NzRDQURDMkFDMUUx
-NTA5ODFERTVGQ0RGOUE4MTM0ODU5RUZDOTUzNTI0QTgzQzFFNUY0QjcKMEFCODI2NzhEQTg3
-OThBQjU1OEMxOTgxREM2NTU0NUU5NjY5QUVDQzIxRUZGMEY0Mjg3MDlGQzQ1NzgzM0U1OTNB
-RjU4NDQzNUM2RDQ5CjcyMzlFMkU2RkU5Rjk5QTQ0NTZBQjhDQzU0MDU2RkUxQUJCOUM1OTFF
-MTFCOEUxRkE3MkFCRDFDMDdGMjNCQzY1RDgzQkRGMjkxNEYwMgo3NzExQzFCNTQwNUZDODQz
-NzFBOTA1MEZGOUI4NUYxMzM4Q0YyNEQ0NERCMjgwQTI4NEY5REZEMzY4ODE2MDI3QzlCMjFG
-NDFCRDdCNDMKMUFBNzM3OTc1ODVGQzkzQzBBNUVGMTM1M0I5MDEyRkRBQjgwRUE4REE2NDhB
-MzJCQTY4NDQzN0U5MDQ3OTNGQTRCQTM3RjgzQTg2Q0RFCkI5QUI0RkUwNkI1REIwMTcyMDEy
-Q0YyNzYxM0ZCRkVGRTEwOEI0NTlFRjEzQUJEMUYyNjZFNTkyMUI1MUFEQjM1MjM1QTkwQjhF
-NjQ2QwpGQzk0QjhBMkQyNUUyOTUwNTU4MjdCNzM0RDk2NUU5MUI1NTIwNjAxNDE1RjkzQkEw
-Q0E2MDc2N0M2MEFFQUFDODI2NzhFNTlCQUU5RjAKOEMzM0M5MjU3NjhDREE0MjMzNjkwMDZC
-NkE4NEU5RUNGNEE5NTc2Qzk0RkJERkRBQzMyODFFMTNFODg2MDNEQTk5MTNCQTFFMTQ4QTZG
-CjlERENEMTlFMjRFMzlCMjIxMDAxRjZDODI0ODA2QTA0NzQ3Q0IzMDVGOUZCN0IyMkFDNkM1
-RUIxOEU2ODQ3Mzk1OUE1REIwRkVCNUVBNAozOEFBOEQ3MjkyQUVBRkZFQTg5RTlBREU0OTAz
-NEUwRjAzQzJFRERCNTdEMTVDMTEwNkYyQzUwRkMxOUUyNzYwQjhDOEQxRjNGMjFDQzIKMzA2
-NDg1QkY0MzdCQUU0QjcxMEZDNERBM0E3QUE1M0Y5QTVCMEVDMTM0ODg2NDk0NDgyNDkzNDhC
-N0ExNjE4RjU2NDU0MDRFMDRFQjQ4CkQ4MDlEQzBCRDY4Q0IxMkFEMjJGNEI0NkZGMkU5Qjg5
-OTJCODEyRjJDRkM5RjZCNDVGQUM0QjYxODA0NzlFNzZGRUFDNzk0NkZENkRBMwo5NjUwODVD
-QUExNzZGREE5ODgxMDM2MjIwRTI4OUY2MTI0NjMyMzY3Q0Y3NjYwRTBDRjUzNDFFNjc1QTNF
-NzkxNDM5MjQyMUMxQ0E2NDcKMTAzRDRCOUREMDI2MzM3QzRGQzVBMTQ4QzM5RjIzMTE1MUQ5
-RTBDRDQ0MTNERTAzMzc5Q0YwREQxMEQ4MjlCOTVDRkY3MEE4OEJGNTQxCjZCNjA4ODUyOUIw
-NDAzMUMxMkI3NUU2MDFCRDcyQTFDMUNGQzUyQjVEMzc3QzVCODA0OTAxMDVBMEJERDVCNkZF
-NTgyMUZGNzdFMUE3NApERUU1QUZBNUFERUY4RTQ3Mzk3NTM2MDk2NUM5N0JGNDhDRkJGN0Yw
-NERBQzc4NzhEMEIyMTkwQTY2NTk2RTEwOTM0RUJDMURBNTU3NUIKQjU4NTFEMDRDMzRCQUIx
-Nzk3OUIzNURGNTZGNUUzREQ5MTRENkRFMTlGMjIzMTA4NTQ1MTNDMjc2NkFCNkE2QzU4NDgx
-QjA5OTNDQ0E4Cjk1QjczQzNENDU0MTQ4MDNGREEzRDQxM0Y5MjIwQUUxMDA5N0ZCRTdBOUE2
-Q0REMTUwQ0EwRjg1NzVGODgwNkI3RjhFMzVEMTdEQkEwRQpDOUI1QjgyN0I4QjI4RTYzNEQ0
-REZGNTg5MEQ0MDI2OEM5NkE3NTJBOEQwM0VFQjExRjA2Qzc3MzZFQjYwOEIxMDFDMjFFNzFD
-RUVDNzAKNzNCNTRDQjYzOUMyM0QxMTM0NDM5M0ZBODU3QUJFNzJCREE3RDBCOEMxQjQ3Qzky
-QTE4NTE0RUE0NDQ2RTZCQ0YzQzcxMzA1RTUzOTYzCjlBMEFFOTY1RDhFMEUxNEI1MURFNzk1
-MzFFQTVDM0ExQzBBOUY4QjhDQkU0MkEyNDE4MEUwOUFDODExQTg1ODExQTUzNkM1NjhEQjM5
-MAo4RjExN0Q1QTA2QzA3NUM0NTJDQzIyMjZBOURGMTU3RDg0NTcwQTY1REU2MTE5Q0Q2OUJD
-MDkzNkEwQTRFMjQ5NTMzMEEwMjNFQzZDNzkKRUI4ODQ1NDU0QTg4QURBMUQyMkIzMTQ3QUQ5
-NzI1MzdDRDZDOEI3RjFENDFCNDEzOEZENkU4OURGQjY1RDEyQkJBQTI1QzBFMTgyMDc3Cjc1
-NUFGNUYwQjQxNDdERThEMThDNTlGRjFFQjQ2NzdGRERDQUYyRkVGQ0M0OUMwQjMyMDZCQTI2
-MTYxMThBODZGODVGQ0RFNDEwNThDQwpGOEJBQzkwNDVBRUNDMjkxQzVBRkI0QjkyQjA2NzMx
-NUJCQTM4Mjk1QzI1NkZERTlCNEQ3N0I5OTQ3MERCQjBCOTI0MEU2ODJDRTlERkYKQURDN0RF
-QTM0QkUyNDBGNjQzMkRGMjkxQzE5QzFGMkE0RkZGMjA2QzA4MzJCRTYyOEVGMTU2NzJBMzA5
-MUI3QUU3OTY3OTgwRDEwRTAzCjZFQUM2REE1NDBDMDk1MDFBRERGOTg2MEM1OUU2RDcyMUU1
-NTlGM0JGODBCREQ5RUQwRjVFRTNFOTUxMzBBQ0Y2QzRFQzcxNjFCNzE5MApDQTREOUY3NEZG
-REMwNjBDQzM5RkEyMDgxMUM2QTE3MjVDREMyRjYxQzA4MDAzNjE4MUFBMjZDNDNFMDU2RDhG
-RjI2NjBGNDkyQzk5ODkKMzUxQjM4NDRDQzIxMEZFRjA2OTQyNjUyODJEQUZCQkI2QUFCRkRG
-RDYxNDhCM0YyOTgyOTkyQUQzNEJBRjNFMzRCQzFFMkRBRjJGNDVBCkJDRkY5QTk4ODg0MTIx
-NThDNzNGMDI4OUY0NEY3NzkzQjA5QUUxMUQ3Nzg4QjJERjI1MzlFQzA5RjBGQzdFRTkxREZD
-ODM2MDcwQTM4RApGMTJERTFCODY5MDE5NjY0OTdBRTBFRkIxQzQwM0Y4MURBNUNEMzcwNDFG
-MDI0MkI1NTcxOEE5QjQ4NTUzNDVFQUY0REZFQjZBMDAyMEIKMzk5NjYxOENFQzU4QzA5NDhC
-OEQ2ODA0MkE4NzM0M0U4MUZBQTgyQTIwRjE1QUZEQ0U2ODU2MjgxRDgwRTcwODI3OTlCNjU0
-MzU1RUIxCkM1MTVCMEVEQjg0MkYxNTNBMzBFRjEwOUYzMjgwRUVBRTcwQkQxMTA3OUIzRjMz
-OUUyMThBNzdBNUU3M0U1NUY3NzM4QTBDODFEMjVGRApFNUEyNEVBODk5RkFEOEQ3RDVGMTU2
-QkNBOERGMDE5QUIzMUJFMEJFODk4RDUyMUQ5M0UwMkJDQTUzRjdBRkNCMTgyNUEwN0JFNzY3
-NUQKNDRCQjg4NjgzNTQ0MTZGQTNDQjA3MkUwMzJFRDRFMTQzOTdEODk2ODlEOTk4QUIzNTQw
-RjM4NTFGNEQyNzFGMDk1MDI3MEE3MjZBODg1CjVGRUI1NThBRDM1MzMwOEQ1RTE0NDhCMzQ4
-N0Y4OTVDRDAyQTlGMUZDRjcxNjREMzI3NDdDRkJGRDdCQkZBNjM0NzBFODRBNDBFQ0Q2MApE
-REQ5RDRBMTQwQzE4MThDOUIxOUE2N0Y0QkE3RDRDQzk1ODI0NDVFNThGNEE5RTcyQkUzRkE2
-NkYwOUZFQkREQzQxQUU5OTU1MjU4NDAKOTRCMzcyQ0ZGM0NDQjc2QTZERUNDMjA5OTFFMzhD
-NDlCNzA4MzRFMTY0OUNBREVEMjlDN0EzMzY4QTkzRjE5RDE5QzhGN0JGRUU5NThDCjAyMUY1
-NDczMUU1RTYzNzkyOTJDMkVFODg5ODA1ODYzM0RGMTlCQzVGNzQ2M0I0OEJDMTJEQzJERTky
-QzNBRUJFMkU3RUYyNzMxNzJBNgpCMDY0QjYwNzNCQTc5NTBEOUIyMDMxMTk0MTE0OTRFNjk0
-MDk4ODAzODQ5Q0YzQTI3NTdBREQ3NThDNzI2MjkxNDA3MDg1RDE3QjA1NEMKMEI1QUIzNkI4
-NDNBQjEwRTQwQkMxRDU1NkU0MkY2RDEyQTQ5MzRBRDk4QUExRENFMUYzQjVFMzZCM0NGRTk2
-MURFOTFFRjZEMjQyQUExCjkzRDIwNTgyNzk4REU3MTQ2OTY0ODQyQkE0OTkzNEQ4MTE3NTM2
-QkNEQUExQkY0Q0ZEMzlGQUQ1NkZEMTEwMTI4NTA2RjM5MTFBMkY4MAowQ0ZBMkFGMkI2RjdG
-OTMxNjQ1RjhGN0E0OEEyOTM0MUJEN0Q1MDM1MTM2MDBFOENFMThBMDg2NTc4QzE1OEJFRjQy
-MjIxNDFCQTFBQjkKNzQ4MjkzNDgzQUI1QkE3NTA5NENBQzY5RDZCNDhEOUE1OThBMjI4NDMz
-MjJENzFGRTRFNTREMDE2Q0JEMTM5RjFGQjM4NzMwQTEzN0MyCkI1NkZEQzM4RkRDRjRCOTEx
-QUY2NUQ5NjY2RkU4NzFBMDE4NEVCM0M4Njc3QUM3N0QyMEI2NThEMjExOTU2QjEwMTM5NkM3
-MkM2MzgyMQo1QzIxRkNGNTE0NjE1RjdGQkU0RUVCMTdEQTlFNzlBQTJEREI2QkNENDg2QTVC
-M0RCNTIyQzQ5RTc4MTU0NzQ5RDk2NTZFQkRFNjMwMDcKMjFERENGMkQ3MzhFQzg4Qjk2RTIw
-MThBNzZCQjQ3RjcxRUNDNkQyRUEzMzA3OTZCQ0U3OEMxNTAyQUUwMzNEMUI5MzZBQ0Y0QjE0
-RkE3CkRBNjY1QTk3RTRGQTNBQzA5RjlDMjY5RENENTQyMkMyMEI4RTVFMUU0NTMyMjY2MzA0
-MURBMDFDRkE3Mjc4N0U5MDNENEQzOTc0NzkwRgpFRTIyNjY2RUNDNkM4OUFBRDg5RjAxRTVD
-NjgzRDMxQjY5RDI5OEQ1QzgyMzQxRTE3NzM3NDEzQjQ0QjhDREQxMjE3MDVBNEJDNkJGNjcK
-MkNFRUVCN0M5RjhCMTNFMUVDQjc2MEE3RUZGQzFDRTYyMjQ5REFBRDFBNUYwMkQ2NUZFMkRE
-OEQ3NkI5NjREMUVBOEJBRjlBQTI0MjhBCjAyMENFNkFBQTQ4MDM0RDBGQ0UzNkNBRDk4MkE0
-NjQyOEQyQTJCMjc0MURFQTY3NEMwMThDMTI3MTMyODlBODlBNjA4NjA3MTk0NjNEMApCMzVD
-NzZGQkZGOUMzOUE3M0IzMjc3QjM1NzQ5M0M3MDRFMUJGQkNGQjg2QkY1NjZBREY3MEYwRERD
-NUQzRTAxQTA0MTM1MTEzNTg5MjQKMkNDOERCMzEwN0UyMjk3MzM5Njg2MDhCRTAwQURDMUUw
-REU4MDQyN0M2NUM3NEY2OTZCRDI1NkE5RTc0NzMxRUZBMTgyMDI4RDAwRUY4CkU2ODZBNTM2
-NzZGQkFFOTg3MEU5M0NEQjdDM0FFNkFDOUY0RjYyOUU0MEQyMDlFRkJCMjk2MUY4OUFDQ0RF
-ODE3QzQ5MDZERTIwNTBFNQpERTk2NDZCMjE2RTMxQTRGQTAyRjk5NDFBOUExMDRGNjU2ODA3
-OTY5RTVFRDRBNjM5MDAwQzdCRUNFQTU0OTlCNkJFRDEzQjAwQzdGRDEKMTQ3M0JGMzIyQjNB
-NTZCQkIyOTBDMjMwQzY3RkQ1MEVGQUUzREE3QzJEOEZEQTI3QjBCQzY2OTQxRjgwMTJGRDRB
-NDBEN0U2NUU3Q0RECjQ0OThCNjNDNDUyRjE1OUJBMTdFMkI5MzhCRkEzNDM5QkIwREM3MUY0
-NTUxRUI1REQxOTZDOEI3QzBBREFFRDFDMjU1ODgzREZCRjkwMAo5NDc0MDI4MzI5MTY5M0M5
-REM3N0M1MTRGNDUwNTUyQzY2MTIyMjI1MzhDNTJCNjQ3NEMwNzdENzFFMTM2OTI2M0VDQjQ5
-NDgxOTQ1MTQKQ0RBNkE0OTFFQkE0NjRDMjYyRDkwQzExRkQ0NzA2RDM5RUI1RjNGNEVFRjI3
-QUFGMTUwREYyRUVBRDdFQTA2RTk5MzU4QURFRTBGMUQ1CjlBMjREQ0VEMkZCNzJEQjg0OUY0
-RUFDRDUyMzkzQzZFQzg2RTlDREI3OEQzNkI2QjMyODBCRDdCMUMzREYwOERCM0JFNzM2ODcy
-MzJERQpBNEI2QjU4NUNCQzM3NDgxNjRDMDU1RjNEN0Y1M0MzM0Q5Rjc2QjVEQzdBRDc0MjYz
-RUMzNjJEOUUyRkE5QkY5RTQyNDdCQjkwMEM0REMKNjBFOUI0ODk4NTMwRERFQUZFMkUzMTY4
-MjdFMUNCMTNFOUU3Q0Y4OEQ5RkUwRTUwNDNBNTVCOEE1QjEwQ0U2NTREMkQzMTUwNDEzNUE4
-CjVFQjU2NjY5MUI0ODEyRDZFMDVGMzRCRTJEQzZDMUJGNzBDQTE5QTY2MzMwMDA3MzJGRUJD
-RTBFQkY0RTI4NzIxQjc4QTEyRjIzRjc5RgpBRjQzRjJDNjAwRDQxRUI0RTM2OTBCN0VBMjRG
-QzFBQTMwOTJCNUVBNUFBOEY0NzlGNEY1NEIyQzc3MjEzNTE5OTJDMTE0QjhBNzk2MzYKRkQy
-MzVFRTkxRDZCNUIxQkQ1Q0Q5MThFQjM0MzZDOTI5REMxNTFDQjVDNDJFRjRGNjJEMjE2MDRG
-MEYxRUIzRTAxQUE3ODQ4N0I0QjkzCjg1RDBFMDlCOEUyNTMxRDkzNkY1RDNFRDREOEMyNDRC
-ODM4QjhFNzI0MTZGOUQ0NzE2QzQxQzg5RTI5ODBEQURBOTJCNTBBQzk3NkQzOAo3RjlFMzIw
-Nzc1RUMxRTlCMDlBQzkzOTE0RTAxQTcxNTY2Q0E5MzQzRTg1M0NENjNGOUMwQUNFMUZGQzQx
-RTAwQjUwMDNBQzVGQjY4QjgKMERBRTVGQkVCNkNEODQxOUUyNDM0REJFNDBEMDE3RkJDREY2
-MTdGM0E4QjkxNkVFNUQ4QUNEMzY4OUE5RkE0MzhGNTRDNUFFNUMwMkUxCkNDNjYwNEMwMjE0
-MDBBNDM3RTcyOUM2RkE5QkVGNTVBMDQ5QzcwNTZERjkxQzY4REEwQzJGNzk5MEI5Nzk5NEEx
-MERDRDQ5MjYwRkNDOApCQTMxNTIzOENDMkRFRkQwNzY1MURBOTc1REVDMTg4OTcyM0ZBNTAy
-RTRCRkE3QURERDI1MTM4Qzg0QkMwNDlFNEVEMjU4ODVCOUFBNjYKNEJBMThCMjM3NjRDM0FC
-NDEyMTNBNDMzOTNFRUI2RkI4MzlBRjI5RjlFNEI3QUY0MzE3RTQ1NUM3RjM3NTQzQzY2OEFG
-OUI4QjZEQUFDCjA2ODM3MEU3ODdCN0Q2NEFGRDBFOEMwMTBDQ0U5QkIyQzBENjdBNkQ4Q0Ew
-Q0NEMkY2REUzRkJDREUxQkM2Q0Y5RjdBRTg5M0Y5M0FFMgo5QkJFOUFFNjI5MjFDMTc2QzlE
-ODdEQ0E0NjA4REFCM0E0MkVFOUMyRTFGMzE4MEQyMDBDRkMyQ0M5NzA2Mjk1QkYyQkM1QjQx
-Rjc2NDEKMUUwNzNDMzZENTAxRjdCMkYyQTQ4MkQzREU2N0ZFMkE2NUFGNzJBOTA5NTM5RDEx
-MDlFNzA4MDBBMDEyNjMxNTQ0MTQ2NEJBNUQxNjg1CjBEMDQ0NTU3NDZCNEJCREMwODVFN0Qx
-NUJGMkNBNUNEOEU3MTdEREU4NDE1QzE3NjYwNTc0NzNGNTNGNzRFNTQ0Q0FGQkExN0Q1QTRE
-MwpGNzg0MzgzRkM1Q0FGMTUzMjYzNzk0QzhERUI5QzA2MTU3NDA3QTBENjVCMERGRENDMjAz
-ODFDQTBCNTQxMjBFODc0RDgxNTRDQkMwMTYKNkYwMTVBMjVDRkNERDUwQTc5OTI5QjJBOTM3
-NEJCNzM0RDNGQ0U1QTcyRTI3MDA4OUNDRjZFQ0MwRkFFOTNGQTczOTdEQjc5QUM5MzAzCjE2
-MUJFQzUxQjhDNTk5ODgxNzA2QjEzQTY3MzI0RjAyOUY2MkRBQkU4QkQzOEQ2RkM1NDAwRkUy
-OEVCOTAwMzNDRkQ1QTFDNEEyMjcxQwo4Mzc1QUE5OTUxOTJFNDkxNDM2RTk2QUM0NzREQzNB
-MDU1RTVEMERCNzUxMTZDODhFM0U0QTI1ODEwQjE1RTgyQ0EwRkFCNzc1NDYzMDUKN0FFQzZE
-RkRCNTY5QTJBQkJGNUY2MUVCRkI1MzVDRkNDNDUxREVERDEwMDFEQzg5MUE3M0JCQzM3MjY1
-OTI1NDNEMTVBMkM5MEQ4NzQ0CjAxQjk5NkI4MzlBRjVBRkU1QUQ4NUEyNzgxQTc2OUQ2OUIw
-Nzk0ODZENEI1QkRDMTAxOUNEQjY5MDQ2RTQxOTJFRjY3RUYzMDA0NzE1RAo3RTJENDhGRDEw
-MDBEQTkzQzJEN0E5NjNGQjgwRUY0NUEwRDUzRTcwNTVENUE4RUI4NzJCRDkxOTFDOEFBNTQ0
-QjhCRjJGQUFENjg1MzEKMzkwOTI0OTU3MTY1NkE2M0VGMTEzQUI4OUFBRjNEMTJGMUEyNzkz
-MTk3OTYyOTEwRDQxQzVDNjkxMDAzNDhDNUI0ODZFQThDMzU0MjlECjExMjI1MTQyQTcwQTU3
-OEI1RDRBRkVBMzNENkM2QTZDMjBDRUU4N0NCQTlDQkMzMDgzNTA2N0VCRDYwMkM0QjdFQTND
-N0E0MUNGODA2MQpCMzM3RUU5QzRFMjc5RTIwMEM5MjRCMURBMEQ4MUM3MEJFMTgzMDQ4N0RF
-OTYxQkI4OTQzMDA4RDZGQkEyRjVGNUMwQTBFMzE5RDBFRTIKM0M0NThBNjlENjg3RkFBNUZE
-REE5ODVCMzU5M0NFQjc1RDA5OTg3MzZFRjI2QkUyREMyRjdFQ0Y0MTdBNUQxNDBBNTE5NTNE
-OUYwNkI2CkY3RUVGRTVFRjFCMTNEQzUyNUVBRjhBMjAzRDQzNzExNDQ1NDhEQjhEODQ5MDA1
-QkQxNzUzNTRCOUUwODM0MjEzRUJGMjU1ODE3NjVERgo3QjREMjIxNDU2OEM3OUEyRTBFMkRC
-NzlCNkQ5QTMzMEI1RDU4RDkzMjNDQzIxNjU0RUNFQ0JERjdCQTM2QUJDOUYzMDI1QUE0MTRB
-MTIKRjRBMDgwMzRBRjQzN0JENEExODQ4MTFCOEM4NjFEMjFENjhDODlFMUQxOEU1MUFDOThB
-MzA4RjkxRDdDREU0MDI0NDlGRkZCNEQ5MkFBCjdDQzNFRTI1RENEODFEMDM3MTJDMENCMTY2
-NkRBQTU2NjlDNzU1MkMxOTY3OUEyRjEzNjdBMjIyNjM0QTNCM0VGRjdDQjIxRkJCQzBGNgpC
-QzM3QzYyQkFDN0ZDM0RBMTk1MzMzNDRFREI1Q0U1N0M4Q0REOEE2NjM3QTc1Q0JCRjgxMDBC
-ODA0OUMxRjFCRENCNjk1RkUwNTJBMTMKNDc4RDVCMTZFMDI1OTc1RURBMDU5OUU2QkU3OEYz
-NDVDQ0Y5OUEzNDk0RjYxMEZFNDYxNENGNkQ3RjQ5NTE2N0Y4NjI0RTVBODM3MTU3CjQxQzk4
-RENDRTQzMkE3MDIyMkY0QkRCMkM5NDZFODA0QkY1OTAxRTQzMjIyRDg0RkRCQUNCNTA1OURE
-OUJDOUE4NzRDNDk4MjMwRDNGMgo1Njk5RjY0N0M4NzNENjAxNzQ4ODk5MEMyNUY0QTg0RUM0
-QzM4QURENDZBQkFCOTNBMDI3MjIwMUNFM0ZBM0IxQ0YyMzlGQ0E4RkY1MTkKOERFNzQ3NDUx
-OENFMDVGM0YwRDlFNzJEQTQ0NjU4OUNEN0MwODRCMzU2N0QyM0JDRTMwNDlGRTU5RjA1RjU0
-MkEyOTcyOEIwOEE5QkQ2CkU4NTNGMzYzN0E0Q0M5ODY1MTk2QTI0QzlDNkMzOEI5N0UyRDIw
-MDVDMkNEMzk1RTk0MjYwQUE3NTMwQTZDMTM2QkJDRkVDMzMzRDBGRQo3NDAxNEU2RkY5N0JC
-NzJDRDA3NkFEQTIxQjk2MDQ2MkIwRUM3MDk3QTc4MTJFRTMwNDRCMTUyOTNBMDJFM0UwQzcx
-Rjc2RTEwQUNEQTEKNzNGMjlDRUNENkQ5QUFCN0NGQ0EzNDA1NzcyNDYzQ0JFMkJBNkQyM0Ey
-NzA3NTVDM0M3NDBBNUJDNEFEMjdDMzVCOTU5MzJCQ0Q4QjgxCjVGMkU4Nzg2QThGRkE3NzQ2
-REE4OTFDODNBOTYyQTNEODhBN0I2MkM3MjBBMEM3MzYwMzk3QTRBQzc5RDMyRUYwMjBDODQz
-QTFBRDg1NgoxNEZDRUE0MjdEN0Q0NTJFRDZEMjUyMjdCRkQ2QTdDNDkzNDBFMTc4OTA2QTA5
-RDYxNjMzN0ZFN0EzQjQ0ODU0QjdCNDQ5QTQ4NTZGNkYKQUQxNTczNjY1MTc4NTA2NjZGRUYx
-MjdFRTg3RTk3MjM0QkU1RTgwNTlFMTk3NTI2MURBRTM1MzA4RjMxQzNFMTREQkFDNTZGRDdD
-MDU1CkJERUEwMjgzN0ZBNDE4M0YxNThGODcxNTA4MjFEQTUwRkUxQTU3QTc2NDg0RkFCOThG
-ODA4Qzk4QkRERDQwNjYxRkFEOEJBMDBFNjRDOQoyNTE3RTI1OTE3OUVDNDBERjlFQjAwNUY1
-MTdFRTcyQkU3QTNGM0YyMjc0QzZGRkUzNzEyQTRCREFBODcyRTE5RDkzRDhDMDEwNTY0NzQK
-NDFENzJCMTYzQjQ2MDk0Nzk3N0Y5MzIwNkNEQTAyODJENjNGM0I1REIwRDg5MTFCNUY5MjFE
-NTA1NDA4MUI0NjBDRjZCMjEzRDI1NDdCCjI0QkM0NkNDREJGQTNFN0FGREU3NDUwMUI2OEEz
-MUJFNUVDRDAxMUY0Q0U2Q0ZGRDNENzYyQjJEOTAwMDVCQTczMkYxNTU4MUFCNkVGMgpFOTky
-NjRBMEUwNTVFREYzQTJEOEM5Q0ZDRkMwOTg5QUJFM0IyRTlCOEZGMDhBMkJBMUVBRTFGQTky
-RDQ5QkRFNUM0NDdDNUMxNTZDRjAKRTVENUVGNEE0NUExQ0ZBNzI1NTRCMEFENzc1MjBDNzI1
-NkZEQzJBNzA1NjQ5MkQ1MkQ2Q0I0NUZFREQ1RDYyN0EyODk1NjM5N0IwODY5CkFGQkZBNTNC
-NUQzRDExM0U3RUNFQTA1MUEwRTNGQUI3Q0Q4RTYyQkRDOTRGOEI0ODJFREVGRTNGQ0Y5RDM5
-MUU1OTc3N0RFODFFNTYwOQpEOTJFQjcwNDQzNUIyOTFFMzFDQUE2ODVFMjFBRjQ5MUFEQ0Iy
-RTJDQjY3RTQyODAzQjlCODRBNjQ3OUMxNDkyMDZDQjU3NTAzRjY2NjkKMzIzREJDNzE4MDA4
-NDREMDVDMzM1RDk2NjM5OEI0QkFCMTIwNzk5NjU3NjgyMzZEMjk5OTRCOUI0RTNCNTc5NEQ2
-QTg5NzZEMkM4N0E5CjFBRDMxQkU1RDk2MDNBN0MzQTA2MUMzRUM5ODI3RTZFNDhEMTA1RjA5
-M0NGMTFFMTg4RjIzNjgxNUQ3RDA0Qjg3OUFGQ0Y0NTM2QzlENwo5OTcyMTgxRjNCNzc0MUU0
-OEM3MDgxQ0ZFRjVBN0NGMEUxOTI3RTgwREQwOEUzRUEzNjEzRjVDODY3MTc1M0EwMDcxOEJF
-NDJFQTY3NDYKRDk1MzJENUE5QzZDNzA1RkJBMTY4MjJFN0E4NDdFOEIxQzE3ODAyNDc1NEI4
-MTJGNkIwOENCN0I2NzlCNUNFMjlEMDQ0RTlBMkY0MUU3CkNFNkRFNkIwODhCM0MxRDNDQTg4
-MkVFNjY5MkNCMThERDlCNTA3MENBQzIyNEM5NUJEM0JFMEYwRkIwNzIxODk0N0E5QjM5OEM0
-MEQ1NQpEMEUwOUFGQzc4OEQ0MzM5MkYxMjJERjNDRDc0NjEyQTIyMjZGQkQ3NEE1MEM1MzQ1
-NkQzNDRFMzcyNUUyMURCMkUyRTE5NkZFMTUzMkUKMEVBNUNEMzc3MkM5QTBCM0EzQUU4QzND
-NjRERkVBRTRDMjFEMTJGNTcwQTkyQTg0Qzc1QTg3ODA4NEVCRkFEODcwQzFBNURBMzcyREVB
-CjQzM0VBRkQ3OUYzNTBFQkIwRUUyMDgyMkU1QTUyQzkyNzMwRkQyQTBEMDhGOUEwMDRERDA4
-Nzg1M0E0OEQ0OTUwN0FBNUIxQTEyN0QxOQo5MjFEQkNFODZDREQ0MDdCNUI0MzU4RTA5OEFF
-RjMzNEE5RkY3RTRBQjNERTk0RDM0MTRFNDdENzU4QTRGMzc5OThCQTYzMjNBMjczODUKMERC
-MEQ0MUY5NTgwMzQxNTcwQTRDQTcxNDlFQzZFNEY1RDk1MkU1REY4MDI0Rjg2RDJGQjk2MkQ3
-QTcxN0FFREI3Qzk1OTY4RDNERDQxCkRFNDVGMzgwODM2RjAzQjkyMjg0MDFCNUEwRUE4QkE2
-NEQ3QUI2MEM1QjQ1QjhBMjUwNTBCOTg1RjYzRjY2QkFERTZBRjE0OUMwQkU1Mgo1OUQzNjhF
-RDE3MTZEMTI1QkY2QjU1ODdENDQzQzZENUVENzI1N0MyOENBQTc0NzEyMDU2NUZEREMwMDc4
-RDREODA1QkE5MzcyNDQ3NzIKMzc5MjdBODIyQUI2RTA4REFENEE2NzJGMjhDMEExMTU5RjA2
-MUY0NkU0MTYwNkExRTAwQUQwQzlCRkRDMERCNTcxMTQwODNFMzE5QTcxCkUxNTBGNkYyQjVB
-QzI4OTQyNUY2QTdBNDQwQTgzMjAyRDRBQThCNERFNzQ5MkE5NUZEMzQ3QjI4MUQ3RURGNjM0
-Mjc1NjUxMTc1OEQ2QwpGQkFBRTVFMDczRjVEMTVBMzc4RjM2REQxODk4RUNBRTQ1ODBDM0JG
-ODlENjQxNkNCNTIxNTA2Rjg2QTJGQUZBMDRBOTFBOTNCMTkxQjAKQUJENUQ3NzI1RUVEQjJC
-NTk4M0MxNzMzM0I3OEQ3REM4NEVCRkI3RTRBODQ5RDNERUIxNjc2QTQ0REYyMTUzNTkzMUZD
-MTZEOUQ4MThBCjBDNUE4RkU1RTQ0Mjc5RTEyQkMxQ0EyRThCMkVCRjkwNTc2Q0VCQTk2NTZF
-MkVCRUQ3MjU2NDNBQjI2MzQxRDlEQTA4MEVFNTcwOThBMwoyNkI2OUVFNENFQzVFRTY4NEM2
-MUQwMzg3NkZCRUVCRTY1MUQ5ODA3MzhDQzIzQ0NDQzczNzYzMjgzMTRGNUE2RDEwODM1NTI2
-MzE2MjcKMUMwMUE1MDE1MEZFODU0N0I0QkNBMTgxRTFEODg3RUVDNDY1RTJBRjNDQTI2RDRG
-RkE2OTlCMEVDQjlFQUIwREE3MUE1OTBBQTFDRUNBCkZCOERCMENDREExOEFBNzYzMzVEQjc4
-NzRCREM0OTIyNEQxREEzNjMwMTFCMEY3MTg3RDJFMEQ4RkQxOTE4OUE1QzgyQzRGRkFDNENC
-NgowRkE3QjA1MjFCQTUxOTREMTIyMkQwNzc5Qzc0RURDRTY3Mjg0OEMyNzVDOEY4RTlBRjM5
-RTBEQTNEOEJFOUIxQkQ0MTE4RDlCMTFEQTkKRDIzM0Q5Q0JFOEM1QUU1RDJBNjBGRkY3RDI4
-NTY1QTY2MEQyN0Y1MTVENkZBMDg5N0NFQUQwNEM2RDZFMjUzRTBFRDVFNTZEQzFGMDA1CkZD
-RTJBRDYxOEY3OUNEQTY4MjY4NzVEOTEyNjJDQzZENkE2NEJGRDcwRTdGREM5NjVDQkE5QzZC
-RDZGMjUxNzQ4QTVBNDJCRUU0QUIyOQowRTAyNjJBNERCNTgwMjQ5QTAwQzY5RDFDQkRENDlF
-M0FDNzAwQ0I5NzNCQzkzNThBQkVGOEExMTZDQjVEOEQ0NjY4QzMwMkVCREYwNkMKOTUwNDY4
-NEQ3RDE4RTUyMkY3QzQyRUM2QTc3MTcxNTUyQjg3M0U3NTNDMUExODg4NjY2RDIzRTZGOTIy
-NUQwOTJDNkRCRjZBMEQyN0M3CjY5MzM2MzJDNUYxQzVFMDFDOEUxMzlBOUVCOUJDMDg0ODI4
-Rjg1MDk1QkQ5RTZFRkEwMjI0Rjg2OTc3RENGRTY1M0YwMEFBNjkzNjIzRApDRTA0NjkzQTdF
-RTIzODRBMjg1QTZCRDdBQzg3NjcxNjZGREU3NTE5NEUzMjZDQUY0NDdGRUJEMjQyQ0JGQzcx
-QjYzNzQ4NkY5OTM0QkQKMUFBOEJGRTNDQjg1RjNERDI1OEUwNzlFRTkxMEFGQTY0NzcwRDVF
-MzBDQTlCMjg5QTREN0ZCN0NGQzQ4QTcwNDA3NzREMzZFOENEMDYxCkFCMDZGQ0Q5MjM0RDUw
-MzJFRjY4QUZDOTQzODUwRTUzQzFDMzk4MDAxNzU2M0M2N0U4OTM5M0I4RUU0RDkzNTg1QTRF
-RjE1MzNENUYwQwpBNDBGQUI2RUJFODcyMUY1OEQwNUFBNjlENjA2N0MyRDZDQjAzRkRGMEI4
-M0RCREI2OTZENEQ0QUFGMzEzMEE5ODcyOURBNThDQ0Y1NDYKQUIyMjAyRDBCNEFERTZCNDg0
-NUExMjAyRDNGMjQ1NkUzNEExMTAwRkQ2RDQ0NTIwMzE1M0ExRDExRjNBMjUxMUNEQTgzQzkz
-NkFFRjNBCkIwNUI1RkIzMkI3NjAyOTE1M0I3RkJFMDIwNTdBRjY5OTNGNDcxNDlFOTAwODBB
-M0FGN0NCMjk3NjIxNDhENkY5NDUyMEEzNDNFNTI1RAo5NjQ2QzBDNzlGMUM3OUU3NTQ3MEQy
-MzJFMkIyQ0NDMDRBQTg5OTA5MDlFMEQyNkRDNTQwNTgyQjY5OUE3MUJCNTE2REMyODYwQ0FG
-NEYKNkYwQkZDN0I1MjkyMDUyREE0MURCOTJCQ0QwMzA4NjNBMTE3Mzc4QjkzREY3Q0Q5QjAy
-NTI5NjRCQjREODAwMDRFRjhCMzAxMUU5NTUwCkRBQUUyRDI0RjJEOTY1RTkwMzQyRDg0N0Iz
-Njg1REIwNTYzMUQ1NTBDMUZDRDc2QzNCMzkwM0VDRUJBMUEyNDk2RjBERjI4RjRGQTM2NwpD
-OUE5RkRCNDhFNUUxNDEwRTgxNUQ3RTkzNTExRUY3Qzk0MjI0Njg2QkJFODI3QzgzM0U0QzEy
-MTc0N0FGNzlDNjlBMjdBMERDRDk4MkYKOTFBRjBCQUY5RUYzRjk5MjFCNzk1QkY0MkI4MTdE
-OTNERDREODE2REM2OThEMDYzQUZCMzA2Q0MyMDAwQjM3QUU5MzEwNUFCMkU2REFFCjMyRjlE
-RjQ0QzA5RTc0NjZBNjJCMkFENDhCMjE2Mzc0NjEwOTk0Q0IxMjA3MjREMDAwMEFCNTRGNjgz
-N0RDNjRFRDRGNkNFODY4NEIxNAoxNkQ3RURCOUQ5QTM5OUQzOTI3NEZFRTZGRDQxRDhFNDEy
-QjE1OEEyNkMzMDRGQkQ3Q0UwQzRGOTZEMDFGNUFCOEEyMEIxRkM0RjAwQTkKRDMzQUFEMkM2
-NTZCMzEwNTMxOThFQjQ3MDQ0NjBENDc2RkYyRjUwNTMyMTIxMjkwM0ZEMjFFMjA1OUM0NzA2
-NDMxNTJCOTlCMkU5MDNBCjQ5MUU4RTM5NEJCQ0IyQzA0MTFENkQ4NjIxMEQ1QzNBNDNCRkMy
-RTAxRUFGREVBNzEyRjZDQ0NBQTkwQURDMkEzNThBQzYyNzE4RDQ4MgpGQzMxOTE0RTAxNTc3
-MzMyODNCQ0QyOURGNkQyQUZGMDk0QzI0OTZCQUI2QUE3MjI2NTIxNUE0QkUzNDM2M0VCODc5
-ODg5RTc3MjdBQUQKMDU0RjkwMTcyQzFENjg1OEM4QTMzOERGNkMxRUZDRDY0RENBOEFDRjQ2
-MDM4RjQ4MzkyRTc1REQwQkZCQ0ZERThFRTA3OTFDQTJDMEEyCjhBRkQxNkFFNTYzODJBQ0NB
-RkVFMkJERkU5N0RDRjM4NTMyQzE5QkM1RTM2RjlFNUQ4MjgwNkQyNjE3MTI2N0JFQ0M5RkVB
-RkYzMDAwQQowMDU2ODY2MzNGRTI1OTY3QkVEMDA5Njg0M0M0NjRCQ0EwMzMxNEYxQzU5NzFG
-REVDOEUyNEI4MEQwRkQ5N0I3RTU3NjNCNDI3RUJEMjYKRkQ4QkQwODZBMkM0NUZFREYyMzIx
-OENDRDM4MUJGMzY0RUZDQUFCRTA0REE2Njg3MjQxODA1RTM3QUU4NjY3ODZERjk4QzYyNzQ1
-RkNFCjlFMEQ2MzMyRjJCQjkwQzBCMkVGRjE0RDA4RThFRUE2QkNERjY1MEQ4OTk2RjQ4MzU1
-RDI2Q0ZCQjg1OUNEQjQxODk3M0E2NUFFMkMzQQo3Njc3NThBQjI4OEEwMzg4MDdGNEY2NDY5
-QTgyM0E5RUFENzQ2NTYwMTMwQTJBNTMwOEFEMEMzNjc1Q0E4NjQyQjJCOUZGQ0E4MzgyQzYK
-RTYxRDc5NTlEOUJCMzY5QUZGQUQxQzY5QkUzMUUwMEYwQjIzRkI4REY0MDdDNUVDNjhGM0JG
-Mjk4QTM1MzUxODQ0RUI5NjUzQzgzQTAxCkVEQkVFNzVGNzkyQzUwMkRGNTMyNTcxMjFEQzhB
-OEYyNjcwQUYxRkM3NDcyMjlCNTNCNzEwMEQwMkU3MzgyMUUxNzZDRjVCNzUxOEQ1MwpCNDIw
-QjFCREE4QjcwQ0VBRTgwMUQ3NDVDNjYyMzFFNjI3OTcwODRDQjMyMEREQjAyMUJENTgzMEJB
-MUQzRjQ5RTAzODY0RTZBNkNEMzUKMzQ1MTFGQkZBRThBNEVDNEUzRUM4MTcyMjhDNDBGN0Y4
-N0Y1MjQ3OTBDNEEzQzRDOTBDMDEwQ0Q5NjUwMTYzNDUwMThDMjdBMTMyNUFGCkU3RjhGNEEw
-RjAzNDI2MzJEMUM1RjlFNjcyOENGOTMwRjc4OUEwRjNDNzQwRkJFODgwMTVFMDUyMTY4QTBE
-NzIyQjE2MjFFRDcxMEJBNgo2ODQyQkU2OTFFOTFGMzNFRkIwNzA4RTNFQTE4OERCNDJFOEY0
-QTU0Rjc3RDYxNzI1NzMxRkEyRTJENjFGMjQ1NzQ1QUMxREJFMjMxQjgKNDYwQzMzMjNDRUM2
-MEJEMUNFOTJDRTdEMUEyNjQwRDE1OTREMjQ2ODNENUUxMzkxNjRBMjY1Njg1NDRGRDg5RjE0
-NEY1NzkwNURCOUI3CkVGODFBMzZCRDkxOTk5Q0NBRTIxOTJGQzg3Qzg4RjMzQjAxQzYwOUE5
-ODFENjc1QTNBRThCMTNERDA1RTI2MjI4MDg4MjZFQ0UwNUVFRgozQTM2RTI1RDkwRUEzNzIz
-QkYzNEJDNkQ4NkNFOTVFREJDNEREM0QwODg4NjlCREIxMDVBNTMzNEI1MTA4RkFERjFGMzM2
-NjA1QTczNEYKMTcwNDRBNUVBQkY0NjhGNDI1OEY5RTlBM0U2OTU1MUVDRjBBNEU4MTI0RURC
-MTc4QjgwMEQyNzA4Qjk1QzI4ODJBNzU3NTY4Q0NDQzczCkM0MDY3MUJBMUI3NzM3RjU1REU2
-QURBQ0I4NEU4Nzg4OTczODYwM0E2RDhCQTBEQjFENEM1QjM3MzBDMTY5REEzNTAxN0Q0Nzc3
-NThFOAo5QTMzRkNGMDA5QkU1M0Y5NTlDM0YyMjk3Mzg4N0U5MjA0MjdBOTY4NzMwREI4NTc2
-QTA3QzgwMTk2OUY4OUM5MzMzOEE2MDVCOEE5NjEKNTRDNjIwMzZFRjkwOEM4MUU2NURCRTQ0
-MTAzMTk5NENBQ0IwNDM3NTVFNzZBMkU1NUJCQUY2NjI4QjFBRUJGRUM4MUVCNzI3NjYyRTFE
-CkM5REZENDE0OTIxN0RGRTYzMjYwNkFERDkyRDJDQTRFMTQ0NDNEQzAxQ0ZFN0VDMTY2QTRB
-MkJERTNBMDZCQ0RGMTY1MDBFMTJDREQyRgo2OTgyRjE5RTk5NTFBRDgxMzAyRDJEMEEyMEYw
-NzBFNzVDMEEzRURFRjQwQUVCMTI2REFGOTgyNTBGNkYzRTM4RjRCQzFCNjI2RTk5REMKNjQ3
-NjQ0QUU2RTRFQUI0OERBMDQ2QzgyNkFDN0ZFQ0U0NjZDNjNGNzVCODcyRUU3MUY0RjNBMjEy
-MkEzODNCRUZFNzEwMzEwN0E2MTY5Cjc2QzRGQUVDQjE5RUJCODUwODQ0RkJFQkJDMTYxNTA2
-NzE1QzM1N0IzNUI4M0RFRTE4NTJCNzI2OEM2NUY4N0Y0QzJGOTZDM0ZFQ0UzNwo4OEE5MDJG
-NDY1NzFGMDk5NEE2NTg2RTdFNTgyQUFDRDExRUY1RUFBNjkwOTdDQUUyNEM2MTBCRUIzMDMz
-ODdDQkJBMURFMEQwNzVGRjkKMEJENEJFN0UwN0M3OTVBMjQ4RkUzMjFCNDY4RTAyQjg0NTcz
-RDc0ODZENTlDQ0RGODMyNUY5NDAzM0VDNjMzRDJCRjI4NjdBNDJDMEQxCkUwQjA3NDVFRjhE
-OTA0OUQxOEIyQUIzMTcyMDkzNzkzRjRDQkI5REE4ODhBRDQzRkMyMkM5MzNGRjVDNERFRTNE
-ODkwQUUyMUIyODBFRgoyRENCREFBMDNBRTRFQUI1MkY4MUExNDQxMkYyNkQyRDNGMEQ0OUM4
-MzM1RDhFQzRDQUE2QjM1OTYyMzhBMjhCRDYyMjYxMDk0RTc4REUKQkIwRUQ1MUNFQkRFMjU4
-NzhFMUFGNzA1QzYxRDM3QTcxRkY2MEFBNDdGQTM5REI2RERCNUVCRUIyODE1ODRBNUU2N0I5
-NzE1MDI3MTZFCjY2OEZDRDJBNzU4OURBMDc5MTdBMDQ4Rjc5NkJEMUM4NTEyODk0RjlEQUJD
-RjcxMkM4Q0ZCRDlCNUM3NzYwQzZDQkIzQkM2MDMxRjI4OAoyMzVCRDc5MTQ3NTkwN0U1QkND
-NkIxRjMwMDA2OUVCQ0RBQjFDM0RDNTJFNDlENUM4RDk1OTk0Rjg4MEM1NDE1MTI0QkZERDY3
-M0M0OTIKQ0I2RTc3QzhDNDRFRkEwNEY3QzVGRDM1N0NEQUQyM0NBMzY0MkFCNDM1OUE1MkRG
-RDIzNDEwNzJFMzY4Q0M3NjEyNUMwQkQ3NjA3QjExCkE3NjA3RDM1RjFBOTdGMEIzMEJCNTZE
-NEZCREZDOUZGNEJCNERDRjdENjcwRTdGNTYxNUFFRDZDRTBCRkY3OEUzMTgwNzY3QzQ4QUJC
-NgoxOEY4NUNGMTMyOEFEQTIxRTkzN0ZERjBGNEJFREY5Njg4ODcwNzc1QUQ1NUEwQjE5QjIw
-OTQ4QkJCQTFCNzVDMURERUYwQzIyOTNCNEQKQUUxRjU0RjRBOTlEOThGOUI0MEM5MTU5OTBB
-NkEwOEQ1NDY0QUZBMkYzM0IxODZEQkQzODJEMDFGOEI3RjQzNDE5MTQzMTFDQkUyNTA3CkRB
-M0Q0MEEzMzM4OTBFMDgyMzZEQkI0MDYwQ0VCRUJFRTQyN0E0REI4MTY5RTc0OENDRTc5MTdD
-NDYzMkZCODU0MzRDMkFCNzlERUEzNgo1Mzk0RUE0NjE3MjBBRkUyNkI1MTM2N0JGQkJCMzEw
-QTNDQkRGMDUwOUVDNzVDOTdENkVDMTU0ODlGM0UyQUQ1NEQ1RTc2RkZBRDY4MDkKQzg5OTI5
-NzVEOUM2OTRFRUYxN0VDNTJFNzhFRkMzNjY5QjU3MEQ2OUFDQ0U2MUU1QTdENkU3M0ZCMzc4
-MjNENjRDRDlBMTZCREI0ODVCCjk2NDJBQ0YzMkJFQzNGRkM1OTNFMDNDM0NCNzE4NjdBMENC
-NTdERDEzQTkzRENCMDkzMjc2RTg1RDE1M0NEODM5MjBENTYwREE1MEMyMQo0NDNDNzJCNTIx
-REE1NDZGMTI4NTdCQ0ZENUQzNzJFNzFFMEFGMUM5OEVGNDgyRjA0RkUyQTFCNTc3NTA1QzYw
-MkYwNDEzQTcxQjA3MEYKMTMxRTlERUY4Nzg2OUZDMjE5REU1OUExQ0MxOUFFMzhFRkVGREUy
-QjY5RjUyNzA4QjYwRTQ4RUY2ODZFQjM2MkM2OTBERTVDMDMxRDYyCkU5QURBNzQ2OTI5NzUz
-MUJEMDFGNkUzOURDNzhCN0M2ODMwQUFEMDQyNzdBQTk4RUJBMUQ4MkZDMEMwMEY1QTZBMUUx
-MDhDRDY4MzVGNQo1MzM0NkU5MjFENzI4RjFCNEVDMEI5OTMwMjU1QTY4RjNFOTAzMUYzNjBD
-Q0JERjAxQzk2ODFENjAyQTVCOUYwQkUwNTUyNjlENDE5QUQKNzNGRkY1MDREQkQ0OTUzQ0Ez
-MEQ0Q0M1QjRDNTdFNzkyMUQ2RTY0OEU1NzQ0OUUxODlDRjc4MjBCQUQ0Mjc0NTU1Q0E0NUM2
-NkVGMERDCjM0REU1MkQzODM2ODEyMjY0OTg2QjQ1NEM5NjEyQUU4RjRCMUE5M0M4NkI1RTRC
-N0RFMzA0QUZCRjA4MEJDQUVGMUM2MkZFMzVCQjNCRAozMzU5MTBGRkQ0OTY3NjBDRkZEMDAy
-QTIwNjM3QzQ1NjkwNDY2RURFODVBNEYyODk2NUNBQzVDNjZGMzIzRDM5NjBERTgzODlGMUE3
-NTgKMDI3QkQwQzMxODhGMjQ5RkQ2MTU0NUMxRUI5RDc4QTBFQkQ4MUU1RjVDMkM4NDQ1RUU4
-MkMwQ0I5NjlENzg4RjFGQTI2N0IxODk5M0ZECkFDRTk5QjIxQTIxNEM2OTY3MEM3N0Q5MjA2
-MTcwNzQwNTlEOTI4MTlENzlGQjRCQjQ0OTdGNEUyQkUxRDgyNDNBRTBERkREQTA2MDNFRgpF
-NTFEMUYzRDQ3MTM1RDM1NEQ5RDdGNzU2Q0FDNzJFMzVCRDRFOERFQ0IxQUJENTNDRTJBQkE1
-REMxNTI2QTEwREE2OURBMkZCRTkzMjgKQTMzNDM4MUUwQ0I5MjkyNjY3NjU4OThGRDM4Qjc0
-MDM5NzY2OTg1Qzg4QzJCQjlDNDQ4Qjc2NzI2NDM1M0EwQkM2M0IwRkQxNjQ1RDcxCjAyNkRG
-MkMwODQ0OUE5RjMyRjI1QzRGNDMyMTE5QkQ5QTcwMTRBRTNCNDNERUJGNjIxQzlDQjkyMzQ2
-QUNFRUI1QzJCNTk5RDU1MzcwOAoyRTA1NEMzQTU2ODBBMDgxOTFEN0I4Nzk5MUMyQURCMTky
-QkQxMTU0NUJBOUY1MDk2Q0FGMkREN0I3RUIyOTBFNzBBQjRGREQzOTg5QTYKQjdDQzEyM0RE
-QUUzMjhFOTIyMTAwRUQ4QzdGRjk1ODY3RTlBMTY4RjFDOTc1MjU1N0FBMDIzQzgxNTRFOUJB
-OTcwRkEwMjE5QTk4ODlBCjVDQThEMDAxQUVDQUJDNENBODQwMzIyQkU5RUM5RjYwNzJFNkU3
-MzYzQzI1ODc4OUQzMDk2ODc1REQyMzZDQzAyQjA3OEIyMjQ4NDc2NwpEN0EwQ0U4NzM5NDUz
-NkE3OTZBNjQ5ODcwOEMyODdEQTk2OTFCMTQ3MkQ0NTk3REJENDlGNDIwNEEwNTE5MTI2NUY4
-MzZFQUFDNEU1RTEKQjFENzY4N0JFQzYzMEMzQ0E3NDRBMDQ0OTkzQzAzRDRCOTM1RTFDQzcz
-MEZDRUE2OEEyQzBGNUNDRjUyRkMxQTI3NEFBNjdCM0I2MTc3CkY0Qjg3RENFRDQ4NTZFMTRG
-RjAwRkJCRThEQjRFMDI3NzUxQjM2NzcyMkVEMEIzOUNDODgyMTYxNzdGMkNBOTU1OTU4Q0NF
-MEE5RkU4NQo3MUNGOEExRUJGNjREMkJCM0YxNzdGM0YwRUJBNTgxQUY5RUQ3NDZFMTZDQTlD
-Q0MyQjVFRUNFRDdBMEEyMjU0RTc2NkIzNkFCODRBMjUKNDk4NzcyN0YxMzBBQTM5MUI1Q0My
-RkJCOTg1NEFFNjY4NzZGRjA5QTM4N0Y5OEVFRjM5RDNEREE5NENBMkRGMTQ5RUJGQjU5RUE0
-RDRDCkNCQTVCNUY0NjRDNEMwOTRDRjdEMUY4OTcwRjhGNUJGMjdFNEM3RUM5OUQ1QzhEQjFD
-QTU1RERDNkRDNUM3REQ3MkI2MkE3RTVDN0IxNwpENTM3OUE2Q0QyQjZGNjY2RkY2Q0RBOUJG
-NjkwQTg4MzlFMjM0RURGNkU4MUJGMzk2OUYwREFFM0NENjlENDhBNkY1QjBFNTc2NjBCQTQK
-QjU3NDA2Q0U0NkUzQzM2QzBEMzQ4RUI0NEMxMTE2ODc4NDQ5RjkxODJGMjNCQ0I3RjMzRjk0
-NEQzM0QxNUJFODNFRjM5ODlGQjk5MDlDCjNENURGMzQ0MkQ3Q0I3RkY1OTJDRTlBRkNGQkY4
-QjFDRTYzQjAyMzA5MjEyOTY5RTM5QjlDMUE5MzM2MjhGQjM4QUI3NTY1QzMzNjJGRgo4MDNB
-MTU5QzgyQjBGQjZEOUM4RjFFN0JDRTBEQkE4QzQzQzhBMjY5REUyRTY4NEM5RTIwRkM0ODE4
-QkVDN0YzMDdCNkQzNDY2MUQ0QUEKRkY4QTM0QUIzMUEyQjNBMzQ5RDcwNkEzNDgzMUJDNjFB
-REI0MTRDN0I3NUI3OEQwOEE2Qzc0ODcxNUI3QjJGQzg0RDk0QjczRUFBMkQ5CkYxREM5N0U3
-OEEzQTREMzM3NTgyMUZDQkY4MEUxRDMyOTI4OUNENjk4REVGRTAyMURDMkM2MjBEMTU1OEYw
-RDI0NDRBQUE5QTE4NDE5QgpDRjJBRDA3NTI5RDMwN0NGQjExQUNEMDhFRERGOTM3MURDRjU0
-MEIyQjlBQjVEMDA1MDY4RTUwRUJCNkY5QTBGQkU5OERGNkFERTNENEQKRjJGMDczM0M4QjA5
-NDIwMkFFNzQ5OTUzNDk1RkVCM0U5RTlBNjQ1NjQ3Q0I2NzU1QjU5RTczNDlBMUUzMzhDNEZB
-OEU0QkZFQUY5NTFGCjQwN0VCOUY5Q0YxNjk4QzFCMjUzRDQ3MUZFNTUzRDhEQTBDMjE4MjlF
-QzEwQ0JGQTdFNDQxMURFQzcxNjc1MzFCMDA2QkYxREMxMUU1Qwo4QkI5Njc5M0I2OUJCNzgw
-ODFENjc3REIwOEMzRkE3MEQwNTAyMTlERTExNkMwNUIzRkZEODg4NTM0OTZENzNDQTA5NEUz
-RjM3M0MzOUQKRjhEOEYxNkJCRjlGODU4Q0U0MTZEMTc3OTdFRTdGRkVFQkIwNDI4QjE1RUFE
-RjdDMkRDMERDQjY1MzJDRUJEQTFDMDcxNjk4MjAxNzBFCjEzQzVGQzkwREU5MUM5RDk1RENC
-MjM4MzEzNzBBNUI0Qjc5OEYwQjc0OEMzQjgwNjQ1RUM0Mjc5NjVENkEyNEZFNzEyRjE5OTQw
-NTgxMgpFRkVFQjhEREJBMkFBOTFBQjg3RUFEMzQ5Qzg3MjQ4MTIyQjUxMEEwREYyN0VFNDY0
-MDg0MTZEOENFREI3RTY5RUUyMTM4REQ5NUU1MjYKMzdENDQzNzVBQkYzQjlDMjY2RURERDgx
-QzU2MjUwMUFGRjBENDI0MTMwNEEwNEU3MTM0NkVEMTc4Mjg5RTFGMUNFNjE3NzJFMUM3RUMw
-CjAxRTk0NTY0Q0Q1QzlGM0VENjQwRDhEQUY2QzEwODJDRDg4NDQ2NTNGNzhGODAwMEFCQkM0
-RjM0ODI4MDg1MjkxODkzRDY5MDQwMzU3Mwo4ODhFRjgzNDdGNjcyM0E1RjVCN0I0OUFGNzRC
-OTNGNzMxQzgzQkU2QUFCODMyM0QyMjY1OTMyRUQwMDA0NkI1QTgyNUUxNzI5RkJCQjEKQkEx
-OEQ0ODQxM0E5RUNEQTQwMEU3NTcyMkUwMUM3NEQ2QkU1REYyNkIxN0RERjEwQzM3MDA4M0Ey
-MEVGMkQxMDgwQkE5RjJDMkU3MURDCjlDNzhEMDIwMkI5RDgyRURDQzdCQTNBODk0MEFCQkE1
-MUJFMTA1RkQ4NTE2RDhDMDkyRUI0QkM5Mjk3NzY4MzUxRkEwQkIxMzcyMjUxNgoxMTBCMkM3
-MkZCNzMxNjQxQjNCMTUzNDdDRDY4Qzg5NERDRjIyODFEN0EwMjhCRURCNkQzMDAxRDFENjJB
-MDBBMjYwOTg5NTExQzhGQTgKMEMzRjE1NEIxMkI2M0JBN0I2MzlFNkExMTE1MDREMEIwODY1
-QjA4RjBEOTk3MzUwMEMzNjY0QjM3NDkxNjc2MEY4NTg4QzFEQTlBNkFGCjc0RTk4MjcxOTRB
-ODkzRDBFNDE5MTY0NTIxQUM3MkIyRUY2MjZFNTQ0QzM0NjFGOUEyOTc5MUJBNjk4MTQ5NDRE
-REY3MDMyRDJEMUJEMApEMTczRDE4RDNFMDZCQTA4QzIwOUIyMEM3MUJBNzc2QjdGNDQyNDAx
-ODc5OTZCM0Y0QzQyQTc5N0NGNTBGMTUxMjA0N0E2MzU5QkU0OTkKRjY1RTYzOUQ1OTg3N0U3
-MjYzQkIwQ0UyNUIwMDVFN0EzODcxNzM0ODNDQUFGRkZBMERBNTNEREI4NkNBMTJERENBRjhF
-NDE1RkZENTlECjFFMDA4NTVGODM3Q0MxMDg3RjE4NDcxRjIxNDZFMEUwQ0MxOTAxRjlEMUI5
-NjhDMTNCQTIyMDlERTQ1RkE3RkE0ODYzQjE1OUVGQUMyOQo5ODJENjREQzYwRjI0OERCMTZG
-QTlGMDhGOTk1OUU2RkIwMTU0M0E3NzY3OUFGQjcwNUI3RTAzOTk1RDMwOUI5MDFCQkY5ODYw
-Rjk2QUQKNzcxNUU3RTNGMEI2NjM5NUM5NTNERDIxMzgwRDhDQjFCMTc5MUYzNTNEMDZDQzA0
-NUM0NTdBRDJGRUU1OTNDMzJENzdERkU2M0ZFOUU1CjlGMjU1NTY4OTI3MTRGMkM1RTMxOUM3
-RkMxMDUxQUYyRTY5QTBBNTU3RjI2QzQ2QTlGOUI0RjE3NkM1Q0MxQjEwQUE0RjAwQ0RDRjc1
-QgozNTQxMTU0ODE4MzYwRjYwNjM0OTFCRTEwMzExQkFFQ0MxRTI3QzM4RjczNDlCNTBFQ0Q3
-MkI4MUY1QkRCQkU3QzJGMjk5NEJDRjg0M0EKQjA2RkYzRkM3RDM3RDZBNUU4M0ZCMkI0MkY4
-ODRFM0JCMTREN0NFMUIxODExNDJENTU4NzYyREQ3Q0E1MTFBNzlERjk0QUNFMDgwRDkxCkEw
-MDE1MzZCRTA4NDhDQkI5QjU0RkQyOUIxQUQyOUFCNUM3Q0FFNTI1N0FEOEQ1NDYyREEyQTlE
-MjE4NzI2N0NEQzVENzFBRTQ4OTlFQwpGQ0JENDA4MTc3Mzk2RkM1NTM4ODRENTBFQkI4MkU1
-RTQ5MEE2NDZDRTEzM0YwNkZDQTI2NzMzQTVCOEFGQzEzREU1RjNBQ0JGQ0QyNjcKQUJFNjQ5
-MDc5MEJGOTkwRkEyNThEN0IxRjVFNTEzQTkyRjU0MzhDOTlEODE1ODUxMjAwMTUzOEMwODUy
-NTlDRTg1NTJBNjE3ODU1QUZGCjdFQkQ3MURERTNDMEMwNEIxNUFGOThGNzc2RTAwMTIwMERC
-N0U5NEQ1MEU3ODEyQTVEMzIzMTVBQUZFQzQzMEVDMTE2Q0E0MTQ4OUM4Nwo4RTE5REU3NjhB
-MkVFMzkwRTYxMEY5MkVDRUZFRkI1RDYzMTEzMDc4NDIwRUU4MDcxOTRBMjE4REE1NEQxODZD
-NDEyQzk5MDZCQjcyNUMKRDQzODBGQkQ3MzIzNkE3Mjc4OTVDMEJFNjcyRDVFRjQ5RTVDMjcx
-NDQ1NDUwNEU4N0E4RDFCMkFDODA4QUQwOUJCNDdBODE2NTEwNUNBCjI3ODEzRUM2NTExODVG
-NjNDNUE5RUZDQzlBNzUxNkRGNDEyNUU0Mzg5MzYyMkJEQkJDODk3M0M4QzMyMTgyNEFCMUVB
-NTMwOTBEQTdGMQpCM0VGOUFDNEJENUY0RjdENjUzMzlEMEIzMjg4NENDMTQ4MjZFRjQ4NjBC
-MjhFMEIxQ0MxMTlCQUZEMEVGMEJCODkwQTAyMDcyOEREMUUKRUYzRDg5OEUyNTYxMEFBQjVG
-Q0M4M0M5RkQ2NzczODczMDVENEJBRjY1QTdDQzlDQ0ZEQTE3QTQyRTI0QkE2MjU1ODBGMDcw
-OEZGOUI5CjlBODdDREY4NzQ1MkU4NzY0NENEOUY1OUFGMTZBOEU2MkE5Qjc2QkMzMzg1Njky
-RDREM0MwMjk0RUM3MUUzQjY2MkQ1M0JDQzk1MjkxQwozNTEzQzU1NTk0RkFDOTZBQkNGODZB
-NDIxNjc0QjkyQTg2MTAyNTFEM0Q2RTBCQ0Y2MDczOEZBRkY2NEQyMDI0NTM4RkNDNEZCQzU4
-OEIKODQzNjY1RkM0RkM2NEY2MDkyQzZFRTdCNjgyQTNFNUZBMjcyRTM4QzhGQUExQ0ZFQTU1
-RUYyMzVGNUQ2N0Q0OEE0NkEwMEZGNThFNDdGCkY5NjI2M0Q0RkVGOTJGMzMzQzcxQUEzRDZF
-MEQzRDAzMjVEQUIzM0Y2MDIzNEU5ODBBNUUwQjhEQjc3Rjg1RDYyOEE2OTNDODFBNTMyRQpC
-QTdCOTBDMDcxRjhCN0JCMjYxOTQ3RDQzRDcwRjdCNTRFREJEMUQ2RjMwQjg1MDkwMzVGQ0Yx
-OUYxQUQ4Nzc5QzkwODhFQ0M2RjlEMUQKRUE0ODY5NEVENUY3ODE0REZBRERDNDMwRUIzNjFD
-QjI2QjlBRUI0MzBDMzFCMkQ4RUNCMUQ5OTVEQ0E5MzlFMjYxM0NCNDhDMEJGNDAxCkYyMzY5
-MzI5QzIxNUIzODE0QkQxMzVFNTczNDcxNTI3OTU4QTNERDg5NzE2OTRBMDJCODEyQTMzRjRG
-NTU4OEYwNkNCMEZFOTQ5Q0IzRgo2NDg0NzVBRjhDNzc4RERCRUUwQTdFNTIyRkM5MzA5QTY0
-OTY0ODk4NTZCRTcyQjkxRDY0MDhDQTdGMEYzODg3NjdDOEE2QjA3MTAwNjkKMjMwOTczNTNF
-RjkzNEIwQzZBOTY0NjA1NEIwNkI0RkZCQTYzMjgxMzY3NkNCMjRDRUVDM0UyOEQzRDYzQzhE
-MTNBMDQxREZEQ0UwMTU4CjcyQTRFMkRFMkI0NzM1MzYzQ0UwOUUwNkU0RTdGOEY2QTlFQ0Uw
-NkY4QkY4MjkzN0E4RDg5MzA0M0I3NDM4ODMyRjE3RjlENUU3QjA4Mgo5MkQ2OEQwRTA2MTdC
-MjJFMTI2RTc0MEUxQjY3RjM1OTVDRUFGQkE4REY0NzA1OUVCNkFFMUZCMTVGMkRBNUE4OTgx
-Q0M5Qjg4MDU5MjkKRjE1NjQ1NTVDRDA1NTYxNENEOTRBNURCNTQ4N0IzOTYzNkRBQzRGRkJC
-REQ1OTY2NUFGREJDNTI1M0I0NzUzMTZFRUE2ODg4MzA5RjI3CkFEMTRDMjMxNkY5OTczNzJE
-NTY4OERGRDgwNEY2QjYwMzRCNTc4ODVCNzY3MDVEMkUzNDg0Q0FBNTA3OEZFOTU1OTIxMThD
-NDUzRkE2NQpBOTlCRkYyOTU2NzFDMUU5QkQyRTZBQUJGMUY0OEE3MTUwMzYxM0QzQTk4RkIw
-NDdGQjUyNzhBNDU2QTZGREZFMzI4Q0VENDlBMjEyMUYKMEQxMjg1NzAxRjc0MDBBOTZENkYx
-MUZCOTlDNkE0NTZDRjFENzkyQ0VENzI2NTJDQUNGOTNCNjBCMjczMDA2QzgzREIzNzQxNDQx
-QkI5CjM1QTU0ODFDRUNCMjU0RjQxMDEwM0E2REQwMTg4MjA5N0M4RDE5RUZFNDk5MDk1MUND
-QTg4Mzk0QTBGREVFMUQ3NjNGNjM4MTM5MUM4NQpGNzhCOUEyOTg2QUUzQTQ2MjJFOUZFQjU1
-QjM4RUNGNEYwRTBGODNEQUZGMTg3QTczNEM3NTJGNTc5OTA2NjY4QTc0NUQ0RTdEQUM3QjIK
-Qzc3MzFBNjEyNTJFNTFCOEZEODVFMDc3MTc0QkQ5RTYyM0Y3QUZCNzhEQzEwMkNDNjM2OEU4
-RTExNTQyM0Y0Q0QyQ0M0MjEyRjQxOTlECkM1RDZBRTc1NTE5MUQ2RTZCQzA0MEVGRjlERDM4
-MUMxNUZDNDY1OTk5MkZGODk5MEE0ODQ3QTRBMTFCNTBBMjQxMDMxMTk0MjI5QjU0RgowMEIx
-RERCOUQxQUM1NzU1Mjk2MjlBMTYxQTBGMUM5OEIyNDhDNjA1RUQ2Rjg1QTlFQUQ2RUZCMDk4
-RUVGOTgxMEMzMjBBQUQ1MzA5MDEKNTEyNUUxRDU4ODdDMjVFMjIyNDUwQTBDNjA2MTE2RjFE
-QzJFRDg5RDNGMkQzQTZDNjY2MTcxMzcxRTU5RjFERDFENTg5MURDM0FDMDJFCjU3MkIxMzVC
-QURDQzQ1M0VGMTI2RjE1Qzk4NjQ5OUNGMUYzREM3QjlGN0M5QUE0NzM5OTAyMkNGOURGQTI4
-ODk5QzY3OUY3NkJFMkIwMAoxRkIyODEyMDg3MTlFMjNDNTMwMTk0MTc4NkUxODczQ0Y3Q0I0
-REEwRjVGOTI3NTM2MjRDN0Q4MTU3NjgzRjZFOTU3ODA1RUY1NzA2MTgKNkU5RUIwOTE2MkY5
-QUFBMDRENzkwNzk5MDI5NkY4OTlGMTYyMUE0OTc2NzM0RjlEQ0FFMTFDQ0Q5NjlGOUFEQTY2
-OUQ4NkFDRjFGRDcxCjk4RDIzQTFCRTM5MTVEOEFERTI5RDhDRjY0MEQ1MzQ5RkQzNzk5RUY0
-NUU2QkY4NkZDNjBBMzg0QUM3RDZGNTA4Q0QxN0E0QjI3NEIzNwo0QjM3NjQ1QjI1RTM0MzA0
-QzJEODJCMkEzMTE3MEZCRUIwQTY4OTY2NzkzNjc0QzFCM0E0QjZBMTE3QkIyRjFFOUY3Q0JE
-NTJFNTkwRUQKRDMyQkJFNENDMEY3NUQwODYxRDM3NjUxNzU0RDNCQjFGM0ZBQ0VCQkRBNDIz
-NTVEMzAxNTEwQzlEMUMzNUI4REIxQUNFQjVERjM1RDZGCjc2Q0NGQUM3OUYzQkYwQzVDN0Y3
-OTdDODk0RkVEMzY1MjY3QjBBMzM1MTRCOEY3NjAwNDI0Q0M3RDZFN0ZCQkUwQjBEM0M4QjZD
-QzhFRAozQ0UyQjQ1MjBFMkZCRTM1QTE1NDEwN0U2Qjg0Q0RGNDY4MjhENjcyMEY2MjIzNUFF
-MjQ1N0QwRENEQ0Y5MTAxMEJGMTVEM0NBRjk1QjQKQTIzNjAxOUJFMEFFMUEyRThGNzhGNURF
-QTU2RkJGMTAxNjIzNEY3NTQyM0QzMDdCRTQ5MUQyOUY2QzI3RUZEQzExQkNFMTgwQjIwRjM5
-CkVGMEM0QTlDNzJGOEFDQjYxREI0MjVBNTM3NjMzMERDRkRBQzcwMDkxMEFGM0JENzY3QkM4
-N0M0Qjk2OTFDM0RBRUM4REFDN0MyMjZBQwozNkFGN0U0NDRCRDMwRTExRUFGQkM4QkI3NzE4
-MUVFQTMyNjRGQUI3RjYzMTQyQkVDREYzN0I4QTVGNjM4MDcyNDlFNjE4NDU4RDI5QUQKMEUx
-RkVFRTU2N0VBRTFCNEI1MTNBNDQ3RTgyMkE2ODhDNUQ4N0Q2NEM4QUNEODA0QUQxQzgxODE1
-RTI4N0Y1MEJGNTYzMENDNjMxQTkzCkY5NUM1OUNCQTU5NkRCQUUxRUU4NTAyRTMwNzNENzY1
-MjVGQjJENEY5NEM1MjAzNTY5QjAyRjk0NTkzNzc4RTg3NzVBODdDQkFEMDhDOAoyNTZDNTFB
-MTlDRjM4MUMyNDE4MEQ0OTgwRUUxN0U5NEIwMUFDNzYxRjkxMEQ2QUFGMDlDNTAyN0I3OTI5
-M0ZDODdBMURDM0NCNzA4MEYKNkVDMEFCNzYzQ0RGMTRGNkQ3QjE4OTlENTI5QzQyQTI2MkI1
-NzlBM0JCOTZCNjkzQkQ3OTNGMEJGN0FGQzhEMUI2MDI4OUJGMjM5MjI0CjM1Q0MzREU3OEVB
-QjQ0NTQyRURFQTBGMjQ4Mjg5MjJBNzAyRTdBMTFGQ0Y1Mjk5MjVGRUFGRjUzNzUxNTAyRjk0
-MzRCNzI5NzhBQjdBMQoyQjY0RTdCRDZEQTk5MTdDOTE5NkVBQUNCMzk5OTIyNTUwMTQxMEM4
-MTg0NzJCMDk3QzcwODUyM0MzMTBBM0ZBQzc1MjFCRjZBQjZBNEUKOUUxREIzOERGNEQ5M0Y5
-QzEyQkFGNjdCQzhCNzBBRkQ4RDA4RkQ2Rjg5OEI5NjYyOUE5MTNEQTBERTY2OTY3OEZBMUVF
-NzA4NkExQzNDCjBENDVBRDVDNjM0MzNDNTc0QkREOEJBNjI1ODk3MjYyQTA2RjVBQTQ3RkRB
-NzE4MDU4NjhCOUJCRDc5MTREN0JFNjk3QkM5MEM3NDc4NQozMERCRTVGNTU3NjA1ODc2N0I1
-QzMwMkNDRjdEQzY0NjBENDRGQjYzNUI1QUI1OTVGMjE2QzEzRTdBNEQ1NDAyOUMxRTkyODE0
-NDRCNUUKM0IxRkIzRDhDN0Q3MkJBMDIwMUM1MUY0QUJFQjlDQTI2M0Q0QUVEODZCNUIwQ0VG
-RDBFQjE0MkZBREVFNDBBOTUwQ0Y0NDFGNTQ3QjdDCjcxNDI3QzMwQ0EyMkMxNjFERTEzMEFG
-NTIxMEU1QkQwRDU4QUZENzQ4RDU3NEI0NkEyQjRFQjRENkNDRDMxRjREQUYwQ0NGOTRDN0RD
-RAo4MEIwMjY4RENFNEU2OUQ5N0U2RjNDQ0I3MzE1MzY1MjhCNUNGRTlBQzAxMzM4NzFDRUFC
-N0ZENkIxRURBNEZDMTlGOEIzRTdEOUE5MkUKOURCNTBGMTk4Qjc5MkExMzk4NkEyMzY4REUz
-M0NDRTcxN0FERTVCMEZDNkY3NkJFOEI0RURFNkFCMTU3RTAxNEM2QzQ4Q0ZBQzVENTA3CjUz
-MDY3RTkzMzBBMkZFNzczN0EwQThGMjU5RTVGRkE3QTAzMEQ4NUZFQjg1N0Q3ODU4NjZDQThD
-NkE1MDQzRUNFNEMxQ0YzMEU3NkMwQQowNzFGRUY4RkIzMENDOUJGMjZDRjVERDhBREI4N0Ew
-QzAzNDk0ODc2QUExQTJFOUFFRkFBNDVBOThDRDcxRTc4NjA4Rjc1MjNCNkQ2ODYKRUJEODA0
-OEJDOTZGOTEzOTdBNENBQjFENUE0OTZCNDMwNDJDNURFNkMxQzQzOUI4RDA5RjYzODFFODhG
-ODI1QTA4RTgxODI5N0FBMjdDCjFEMzdGRkQ1NDFGNkE5RTVENEI3RThERDhEMTNGODI2OEM4
-MzEzNUM5NjMxQTYwM0M2OUREMjJFNkQzQjc2MDYzRTVCMEJGNzE1OEM5QQpCQzlGQ0NCOTQ2
-QUMyNDk5NTIyOEM0OEJEMDMxRDBBOTU5OTQ0MTgxNDgyNzM5RUZGNkNGMjMzMEE2QTZDNkZC
-OTA2RUIxMjNFNDQ0ODgKRjQyQUMyQkUyMzdDQjMwQzQ0MUI1MDUxQzAyOEI5NEQ5RTZCN0U1
-N0Y1QTNGRjU1MDQ3NTZEN0VDNDExQ0Y2MTA3Mzc2M0E1RTcyRkM5CkREQTZFMzM0NUY1ODY0
-NkI2OUVBMTQwRTFDNzExRDc5NEUwODM2MjNCODRBNEZFMTEwMjU2RkI4NTQzRDMyQTJENTUz
-NUI3REEwQTczQgpEMTcxMDQ5NDEyRkVENzlCODRCRUI1Njk2MkUxRkZFMUExMkY5QkU0RkJD
-NzJDRkRCOUVGOTJCRDYwQjIwMEFFOEQ2NkFFQTMwQjE1OEYKRTlGRTI3OEQ4ODMzMTExQUM4
-MDVFQ0M5MEQ2NTkwOTc4NzczN0UxRTFGRkM4OERFMDdCOEQ3OTk5NkM5RjU2ODVGNTcxMDJD
-NjVEQTYxCjk3NTEzRjg1QjE3MzIwMEUzMjIyODc2QUFCODM5NDFDQjA2NkUzQzY0MkFEMjM5
-NThCMDBCMTc1MTZBMkNDOEQ4QkNCMEM4MDJDRjM0RgpBOTc4NTFDMDM3RTY1NkMzMEM0NDZD
-NzQwNDIyOTkxODMyMTI5ODg5RUFCQjM1RjU2NjFBNDMwRTVBNTAzRjk5RjUzODFDNUYyNjY5
-MkIKRDhEQjdFOUY2RDMxMkEyOTdCNjk3RTkzODMxQTA2RjM4NkFFMkJGQTJCRkQ5MzYxRjJF
-MzY2RTE4RUJDRUU1NkI4MkMxNkIyREEwMDE3Cjk1Q0NEOTdENjdBQ0NBQkQyMkRERjAwODk4
-QjNDMzlDNzQ0MkYxNDg4NTUyQkE0NkQ0NjM0Q0IzMzBENDI4QTE5MzUxRTQwMUY5MTgxOQo3
-MDhBODJEODU2REUzQzI5MTgwRkRDNTZDNkNDNzAzODMwMkU1NUZBQTVCNzc3RThDQzZDRjRC
-RTJBREJFNTlCRDI3MDY1OEYxNjhDMTEKMDk2MTc4QUMwN0I3QjgzMEMwRTc4MkQ0MUY5N0VG
-MjIxQjdCOTFCQkNCRDFFRkUzQTdBQzNCREMwQ0Q2MUM3NDYzOERGNDEwQUE1M0VCCkFDMzVB
-MDc5RDZEMzkxNEYzODBGNEEzNzZCNTA4OTJBRjIwQ0YyOEY0RkEzNTVDNjM2NEM2MTRBOURC
-MDkyREIzOEQ3NjgyMTFGQTE2QwpBOTkxNjg0REZDOEYyNTdBQjBBQjNGMThGM0Q3Qzg5OTM0
-RkNDRUMwODlFNjcwOUJBRDM3QjkzNUU4NzVFMzRBRTVBRjQ1NjExMzhENTQKOUE3MjVGNEFB
-OTJBNjYzNjREQUQ1MEQwMEIxRTI1MUZERUVBOEMxNDVERjFFQ0Y3NEQ1OTk4MTk0OEM2QTM5
-M0Q3REUzRURENzMxRDJGCkVGREUyOUQ4OUU5QTREOTRDNjk4MzUwNTBGQzNEODUxM0VEMkMz
-OUU5RkJGRkJCNzQxNDM3REZCNzMyNzdFMjI3NTIzQTQ1RTYzNjJEOQoxREQ1NzM5RDgyODIx
-Q0UwREQzOTYzRDBBNEYwMTU2M0E4MkE5NEJDQTQyODI1NjNGMTM3MTMyMjk0M0EyODZGQjY3
-NzQyOTUzQjkxNTIKN0IzNzdGNDkzMzQxNDFERTI2QUQ1RDE3MENBRTM2NzY3QTM4MEE3OTRD
-NzU1QTcwOEUzMzk2MzVEREQyRjZFN0ZFQjREQzg1MTUwMkU2CkY0NTAwQ0M4M0RFMkYyMTYz
-MDREMDA5NTE5MEUzRDQwNTY0M0Q2MDk5MjFBNkE4OTVERTZGMkVERDAwM0NDNEQzMEE1RjEz
-MTgwMzgyMgo1RUU2RTA3MjM3NEJGNzU1RDVDMEQzQjU5ODg4RjVCMDZEMDE2N0JCRTBBNkM1
-RDhFNTUwNDAwMEU0Q0I3MUMwRjE4RTAxQ0Q1RUU3NkYKMTAyREM3NzA4NEQyRUZDRThEODVB
-OEMyQzM4ODY3RjEwQzk0NUM4RjEzQjEyRjE0NzBCMDI2MDYxMkM2OUQ0OTRBQzA2RDkyREQz
-RUVFCkEwQ0ZFMjVDRkRGMDlBRThDOTZFRDMyODM2RTI4RTU1ODNENjBBODQ2OUFDMjIwQTRF
-RjYzMTIzRDQ5MDU4OTBFRTQ4QjYxN0M2RjE2QQo3OTc2QkM4NTVBRTBCQTEwRTM3MjYxQUI0
-NzUyQzZDOUJDNDNGREMyMEYyMzU1RTA3QkRGQ0E3MEY3RjE1NzQ0QTk3MzQyNUE0QjdERDIK
-MjZBMTFGQzlENDBGQzM0QTM4RUYzQTA1RkVDRUNCMjlEMUFCNEJFNzNDQjE0Q0IzRjZENDM1
-NDJEM0E0ODIxRDYyNkEzRDVFQTE2OTFECkMzOUY0RTA2NkMxQjZDMzMyRTc2MTFGMTNFMjdC
-QkI2RDcxNDdBQ0RCNTczRTlCQ0VCQ0Y3RTM1RkQzMTQ5QkIwMzYyRTcwMUZBQzI4RAo3RjRE
-MTE0QTM1OEQyODZFNzUwRjM2NENDMkZDRTM2RDNFNkU5RERGNjczOUZBMUQxNzEwNDM5QjI4
-RjE1OUFENkM1M0FGNjNDRjFEOUIKNDNEMjNDRjZCOEJBMkE2RjBFQkNFNTBDNUI3MzBDQzU1
-MEVDQUM2MzBBMzI4QkIyNjlFMjZEQkVEQTVGQ0M2QzFBQzE0RkU1NDg1RkYxCjg5NDVENkMz
-MzY1N0U4NjgxMkUxNDgzQUZERENDRTREQTFGMkNDRDE4NzAzQ0FFMzlBRkQ3MzJBNEMyNkQ2
-NUUyOTY5OTg0OEMyRTM5Ngo2NEJDMTI3Rjg4QkI3NzRBMzA4OEFDMEExNDE0QjBFNDRCMTk0
-RUVCQTIwNTUxNDAzNzRBQTMzOEQ2QjlENDlCNEJCQjY0RkM4NTkwMzEKOTU4OUQ0MTY2RUYz
-OEYxQjVERDhFNEVFQzJCMzkyNTFGQTE1NkI4RDAwQzA3MzUzQzJCMDM4MzIyRDEzMEZDOUVG
-RkE2QkVGRDQ3QkZECkQ2Q0MxOTI0QUU1MDQ2QzA3N0FBQzgwQjI5Q0ZGRUVCODI1MTg3REIx
-QjcyQkZCNDY4OTY3M0YxMEVCMERBMEFCM0I2M0E1RTJFOEM3QgozOTg1NDcwMEYzNTM0QUY2
-ODU0RTBDMzgxQTA1MTMwMUQyNEQ0MTgyQTlGRjc0NTQzNzYzOUE0QzYxQUM3QzA1MDVENjIy
-NjNBMjlFNUYKRTBDN0REMDcwMjQ1OTA2MTMzMEZDOUY3MkRGNDMzMzZCQzFGNkFBMUI1NjMw
-RTc0QzZGNzIzMDk4REQyMkI3QTFERjlENzEwQzEwRDNBCjk2RjkwQTM2NjkzRDk3RjExRjI4
-NUNFM0E0QzdDNzk5QjNDM0YyOEZDOTk1MDRENTQ0NzlBNkMzRDAyN0I0OEQzQjMxRUYyM0ZB
-MUExMQoyNDg0MDA5MkE0MUU3MkUwOEMzMTQ2RTIyQjExMDM0NkIyREE3QkRCNzU1MDU2NThF
-NjZGNDkzQkNDMTI1MEE4QTdFQjQxODM2QTI2NTUKREEwRTlGRUQxQUIzQUI4MDY1Njk1ODcz
-Q0NCMzU4MzIyQkZGRTU0OEExN0Q3OUZFQjRDRjRENEU4QTEyRTZFRDc5Q0QwMDY1RTE4MDRC
-CjIwMUE0NUE2Rjc1NzgwOUQ1Q0U4MTBDMDJBM0VBQ0FCQzhDMjhFMUM3NjY1MDFCODg2MTUy
-QUMwMjdFNzVFRkVFQTdFMTgyN0ZGMjc2QQozOUVENzkxODFDRTNCMkQ5NDE0NTcxMENCNTM1
-MzhFOEJGM0IwREU1Q0QzRUEwRUM0RjdEMkJCOTE3QkVCNUQ4ODU2QzkzNUEwMEE0RTMKNEZG
-QjIyODQyMjc5RDdCMjk5M0I0MjEzQjAxQjcxMTA4RDJCNjUxNkYxQzIyOUZFODNDRUI5RDMz
-MEI2NEE5Q0I5ODg0MzM5QUQ1MEYyCjE0ODkxQkIzQUE4OUE2QjYzMTkzRTU0RjY0MUQwRjg0
-MTZEMEQzMkExRDlFODQ5QjUxRUYxNDE0QTcyMTRBNjVERUFBMzdDNjU1OUNGMwpBOEUxNjI5
-OUY0MkVDNUNGQTMyNUI4QjQwNzEyNTE2RTdDOURENkQ5RTNFMUE2MjU1OUZBRjJBNDlENTAw
-MkY2REQ0MTEzRjVDRDU4RDIKQTAzQzhEQUQ2QjE4OTYwQTgwNkEzMzM1QjREMkE0QThCRDdD
-MDk0MjFCN0I1REZCQkJBQTU3QTEwRTNCODAzNDc2OEE2MzQ1NjVDRTQ0CkI2QzBGODRGQjVB
-QzRERDZDMTkwNUY1NDRCODMwREYxNEU1NkU1QjhFMzNDQzc1OTE3RkNBMEY0RjhDODc4QUJG
-NjA3RTk3MUY4QUE2QwpFNkJBMjRFOTcwQTdBRTcxMEU1NjMzMUQzRjlCQjdDMkVFRkI2QzA5
-ODM1REIyM0YxRUU2OTQyRTQ2NEI3QURCMUM5RTA4Q0U1MTk0RTQKOTQ4MjIzRDRDMzQ0NUQ0
-RDkxQTlEODg0QkM1N0QzMDVDMUU3MTMzMUZEODY5RTQxMkZCQkIzNzAxQUI5RjExNDgzN0FF
-QzczN0MxMEJBCjYyNEYxQjIzNEFCRUJDRTA1QjZEN0RDRjhDNEZBNDQ5NTJEQkM4MjVGQzQx
-QTkzNEQ3MUEyM0I0NzUyRERBRDI4MEI1RUM3OTkyNzhCMApBRUU1QkI4MzA1MUI1REE2MEYz
-NDk1MUZBN0I5MDE4OURGQzBENTNDMEQyQjczMDNFRjA4MzlFQUVGMEEwOTZBQjQ0MkU1MTc2
-RTkxRUEKQTc1NDQ2NkQxODA3QjEyOTBEQTBEM0IzQTY3NUVBMkVGOUQxQUQwMkQxNzcxOTVE
-NjcwQUIzNjhFQkE1N0M0Qjc1QUJDREQ0RDYwM0I3CjdGRjg5MkUyMjEwRERFREQ0MjlENkIx
-MkZENzA3OEEwQTA0QzAyQUJDRjEwQjE2OTY2MEQwQTdFMTg0Q0FBMkVGQ0RDOThBMjIxMjY5
-MgpFRTA5MTQ4OTUyNDhGN0ZCQjY5MENFMkE0NjVBQzkwOTcxQ0Y1NzI3MUVENERFNzc3RDhC
-MzQ1MjU5QUIwMkIwREFDQTk3RTE4NEUzMTkKOEFCQjVEQzMzRTlCQzZGOTI3NDRFQUI5REI1
-QzIwREZGQTM2QjZDMENFMTA0MUFCQkEwOUU1MEQ4QkFCNkI1QjM1MjBGQjM0REY2OEVFCkI0
-M0I2NzQ4NzkyMDFFQTk1REU3REE4NTAwREVCRjI1M0Q1QTgxREQxM0FEM0U3Q0JDQjMwMjAw
-RTAwM0MyN0JFRTE0MUVEODU2QzExQQoyMjEwRDEyQjE0NzA4MDQ3MzNBRTg5QTAxODAyMTFG
-ODFFMjVDNDIyQTk1NDA2QzhBODc0Mzc5OEI0QUYxMDJFRkVBNDdCRkMyQ0MyREMKMzQ5NTk5
-QTRDMDAwMzdBOUVDMDNEMjgxMEI1MEE1MkFFOUU1Q0VCRUEzRTJCNEI2RUFDMEVBMDYwNDZB
-RjY5Q0Q3MThCNTcwNDREQkYwCkRGNUVBMzZBOUI4REM1MTAzN0MzMzk2QjJEMDk1OURFOTdB
-RkQzNUMxNzUwM0ZBMDJBMzEzRjVGRkQ1MEJFRkIzODNFOUJCNjcyQzUzNQo1NDE1NDcxMEJD
-QkFEMTcxQTY1NEM4NzlGNTAwQkI3REFEMTg5QjFFMzA3MDAxQjA0NkQ5OEMzNzM3RjkwNjIy
-NjM0MjA3MkRBN0I3QTIKNEZBREFCNTM4MTQyNkFGRTQwMkM0MkIzMzg2Mjc3MDk5MDBFRUJD
-NzdGOTA0NTk0OTJCRTI3MDQxQTEyNkFBRDlFNDRBMTJDRTAzQzgzCjA5QTQwNzE2M0EwNEY2
-NjdGMjU2Q0ZCMTA2NkJGMDNGMzE3MTc5RTU3QzI3NjJERTQxN0M1RUZBQTg4MEIzNUU3QjQy
-NEJFOTZDRTBBMQoxNjYwRjg1QjhGQ0JBQTQ1RThGMjI2MjgxNEFCQzg2QzU4ODY0Q0YxRTg0
-M0YyNzMzNjQyQzcyRDlBRDEzNzE4QTlBODFDMUNCNERFRUYKMTMwNjE0RTkxQjg4NTJGQzY3
-OTNCQTBGNTVDNDI4Njc5NTFBMUUzOUY1RERCMURGRDMwMjcwNDM4RkYzNjM5NzQ2MzM4NjJD
-NzUzMzVECkJCNjAyQzk0RkEwMzc0MzREQzMxOUU2QTAwMTkzNTAyMDA3ODJDQ0JEQzk2OTEw
-REQxOEZCQTI3MTFBMjUzNEIwODA4N0U4M0E5NkM5MQozQ0I4NTZGRDQ1QUEzNjU4Qjc2Q0U3
-MDQxQTU3RDQ2QjAxOUM3NkIzRUNBMEQ3NTdBRkQwNTM0QjdDNkNFRjI5Mzk5MThDRUI1REM1
-MjQKOUI1NjAxQ0EzN0QwRkJFOEQ5MEVBOTMwMkRGOTk4RTM3QkFFRUNFNjMwRjQwMTlGQThF
-NjAyRDQ2MEQ2RUI4NjgyRDExNUVCM0YyQzVDCjhBQjM5NjM5RTFGQkJCMTEwOUEzMURCNUEx
-OUYxMTYwNjg1MThDM0M5OEZCNEU5MTE0NEI4OTNBNDAzRTY2MDFENEQ4MURCMUMxRjAwQQo4
-MEU4MzcxMTZDRTNFREQzMTMxMDBEMEI4QkZEMzE5M0UyMENBOTBBQzNDQjEwNzczM0I2NDk5
-QTY5MEYyQzhEMzM2RkIyOUUxNDQ0NzAKMkE1MjE3RTFFOTE4NTJGNUVFMEIyRjMwQjYxQ0Y2
-NjExMDlEMEVENjY4N0Q3REUyRkNFOTA2MjJEQ0RCMTc2Q0JGMThDOTg1MkZGM0MyCkIwMkY5
-RkQ3QUFBQTY5MkU5MTYyMzQ5RTc2NkVDMjlDQjk4MDM0RDNBODczMUY0OTEyMTkzRjFGNDgw
-QjY1N0JBODRFMjgyNTQwRDJCRAo3QUZFNTQ3RDEwOTM2QjE3MzlDQkZFRDIzOUE5QzNGQjhE
-RjUyRTlCQTFGMzhGRjBGMzRFNzAzQjE2Rjg3QzQ4RUM1MDY2MjA3OEZBRUYKOUZDNEVGNDUy
-NkY5MDc0MEZBRDY0ODFBRDNCNEI1Nzk1QzlFNTdERkRFMDlERjI0Q0U4NzczQjFGQjRDRUYx
-Qzk1RTczREE2RjcyMDE4CkNBMEUxNkRCNDJEREZFMTZDNjY5N0ZFNEQ3RTBBQjUxN0FCMEE5
-M0M4NUVGNUU3Q0UyQzQ0MTM3QTZBQjE1MTU5NzM4NzI4QzZGQzJBNQpCRTNFNzk5RDVDODMy
-REFDNjAxNDc3QzlGRThDMjRGQjM2OEFEMUM2MDkyQzBEQjZGNTE2Q0M4NTU2QTQ4MUNEREZG
-MUQyNjY0MDY0N0QKMDE1MTZFMzgyNzVFMjdCMjAxMzQzNEU0REY4MzMzNUVCMTY2Mzk1NDA1
-RjlEQ0ZCRjZDMkNFODg2REQ1OUIxQUU2MDU2OTA0OTNDRkIzCjcwOEJEMTI5NUExMTRENzlB
-MjZGNzRDQzExRjQ5RUU5MEVFOUEzNjRCNTE0OTY3QzBCMzc5RTY3NkJFMDBGRjAwNzNDREYw
-Q0NCNTc1NgpFNjZCMDRBQTBGRUU1RUUzNzZDMDI1OEUyODQxRDkwMTc2Q0M2Njk0RjVDQjYz
-NjlCRkU0NDUzMjM2QjRGNUFEREY5OEI4NkM2QzhGMEIKNzQ4MzJGNkJCNjY4NDA1MEQyMkNC
-MjhDQ0Y5MDg3QjU5QURCMzA4Mzg5MzBFMkJEQjFGREI5NTVDNTYwRDRENjE3RUFFNzkwNjRG
-NzQyCjdGMURGM0UyQTIwRTQxM0M3QkEzRTlBRDI2Q0E4MTQyOTVGQjMzMUQxMDgwQjQ1RjAw
-NjUxM0YzNTlBQjgyMkM4QzlBRkRFMEIyQ0UzMAo4OTM2QTY2RkM1QzMwMzM1NjdDNDg5NTY1
-QTU4NzY3RDI1MUQyOURGRUU0NEVFRERDNTlERUE1MDQ1N0EyNThGRTY4RjdFQTYxMjA4QzMK
-MjM4QzdFRkQ2OUYwOUE1QzhGQ0Q1NTczODBBNkI0QkQ4MkQ2NTlCMjZDQjREQ0YxODBDRjAw
-NTdEMTIwRDZBNkUwREMyOTFDNDBEQUUyCjgzM0Y0RTg0QTE4RjEwRjJGMzI5MjRCRDkzQzVD
-NzBDMjA3RTU2MjBCNjBFMTcyRTIzOEVBRjAxOThEN0ExMjQ5RkZCNzg4RDZDMUFBQQo0RTdE
-MEI0MzNENThDNzlBRUIzRTVDQUM3NTFCNzhCNTVFMkMyRjIzODJGMkYwNEE3MUMwNDRCOTgz
-MzBFMTZEOUI3NDQ4MUZDNTU0OTYKQUYyRkZGNDA4MTU3RDk5MTE1QTM4QkYwNzY3MDM5MjEx
-RDY4NDEzNDVCRTNGNkQ2MjRFREFFQTQ2MDJCQ0JDM0E4N0M4MDEzNTk1RDlECjA5RTcyMDcx
-OTdGRTg3RkQ1ODUyNDQwNjA0MThFQjJDQjA5RUYzNjlCNzg1RUE4QjQwMTc5ODY5NUI0NzNB
-QjU4OTY1MDU3ODg3RUZGMApBNjU4NUIzNjI5RTg3RDcwMEM4RTA4MzVGMUUzNUMyODBENjFG
-QjQ5ODcxRURFQzdDNEU1Qzc3MEMzRDhERTcxN0ZERkFCN0VBQ0Y3QUEKRTc4QTFBNEYwNzcy
-RUUzODM0NjQ4MkYwMjFBOTU2ODhFMUQzMTIxREQ4MEE4OEEzNDkyNThBQ0NEOEQwOTRGNDAz
-QTY3NEUxNzEwRjYxCjQ2REU5NTA3QzczRDUxQzc3MzU0QzQ3NUIzN0YzRTI2NkFERUYyRDcz
-OUExN0VBNUU4QkE1RjY1QzMxNEQ1NzU3OUJBRDc3RDM3RTc2NQpERjE5NkZFMTYzOTdDQzU4
-Q0Q4QjIxQzIxQkYyRTkyQTBEMEE0ODkzRDY3OUFDOTAxMjc1NzYwMkVFNjVBNzBCOTNDRUE5
-RDAyRjhEQTIKMjlDNzgzNDc0Q0NBQjNGOEQzQTA2QjJERUVDQ0FEMjdGNjIxRDY4NTI5MzJE
-NDNGQUI4RDgxMTY3QTQ3RDE2RDg2ODM3QjY4QjkxMEZFCjNEOTdFMDcyMzlCNzY3RkVGRTY5
-Mjk5MEE0RjM2MDBGN0JGQzU1QjdCMTM3MDczNDY3RkI3MjJENDVFRjU5MzYyQjExQjdBQTcy
-QzEwMQo0MDFGRjUyMTZGNDgzMjlFNzIxN0FDNTcyQ0M3MzZCNzdCQUQzQjg2M0ZENjIyRjQ2
-Q0Y1NDdFQkFDMEVENjNCQzBBRjNEQzg2QjgxNkUKRDFCODYyQTBBMTcyNTM5QUZDMjNFRDYy
-MDE2MjdCRDE4QTMxN0Y2QTJDNTc5NzU5MUVFRDU0RDlBQzdFNTMzNjQwMkRBNjY5NjVFMzEx
-Cjc2OEVFNzREMURCQTQyRkJFMkM1OTg0OEY0MDVEQjlDRUEzOUM3QUYwRDEzQjZGMENCOTkx
-NjBBMkNCRUQwRUNFNTVCMjE5ODJGREI3RAo1OUZBOTk2NDlFRjdGMDBBQkZCOUFGNzY0REVB
-REQ2MERDM0JFQTk5N0MxODJBOUU1ODU3QjFBOUUzRDEzMDVBNTdGNjA4ODA3QTEyRDkKMDQ1
-MjM2QzE4RjE3NEE2M0JCMkY2NkYwMDY5MTVGNzAxQTdGNkJFRDMxMjBBNjM0MzhCNUIyRUY0
-RjdERjRBNUY0MjJGQzFFNjFEMzk1Cjg4RjBBODY1QjcxMEQxRTkxNjVDRjZEMTUyMjEwQzcx
-NjVCMzkyRTM1QjcyRDEyMzlBMThENTlERTMxQTA4Njc2Njg2RDRDNzM5RDUwMApEMTVEMkRC
-Rjg0QzBDMTg4ODBGNDFCRkQ3NTdDM0UyRDE1Q0Y2OEEyNDQ0Qjg2M0Y2RkZBM0M5NzY1NjM3
-NDYzRkQ5MjEyQUJGRTFCNUYKMDNBODgyRTQ2RDQyMzYwNTJEM0EyNzBEMjVBMjY0NTdBNEM5
-RjM0OEI2QzhGMDgxOUYzQkI1QkE1NEIwOTA3MTMyNjM2OUFDMkU3Q0EwCjY2RDQ3MkY2RjdE
-RjdENEQxRUE5RkRERDA3MTc5NzNBNzIyNTdERUQyNjBGQ0Q5OTJDMDgzMDU4MUVCRkQwMkNE
-NDk0MUVBN0VFQzRCOAo1QzhFQ0NEQ0NBNzc3RkVCMDI0Mjg4NjA0MzUwRDUzRjk3Q0UyM0E3
-QzJFQzI5MkVCNjlEM0IyQjc1REE0N0M2NUMyQzBDRkUzQkUwOTcKRjkyODdBRjlDOTI2Mjky
-Q0U5Mzg1QTQ1RENERDAzMTRCMkRCREU1QUFEMkU2QTYxOTY0RDk2RENBRTIyMTdCQzRCNUEw
-NTZBRTI0RkFECjRBMDcwOEY2MzU5NEJGRjQ4NkNEMThCNTVDNDRBOEZEQTcwNTRCMEM5QTIw
-RjNDMzc5OUI4Rjc2NDdEREQ5QjFFNUE1RTY1NzlCOTVDOQpFQTRGM0UwREU4NTU2Nzg5RkIw
-ODBDNzAxOTEzNDg0MUY0NEI3QzlFNTI2RUY4NThGOEVENUMwMTEyQ0ZEMkUzQzFDMUYzODJC
-NzY2RDcKMzEwNTI5Njk2QUE3QTUzM0Q1QjBCNUQzNTMyQzExQjM1NjJDNkRBNzEzREVCMDRB
-NUJGMDIyMDU4NzcyQzk0Q0IyMkJCNEZBQTMyOTVGCkNDQTYwOUQxOEVBODUxNDZBODlDMDQ2
-RkM2MEIwREE2NUE0MTZFMkE3MUFCNUNGOEQ1MzYxMzhGMkE4NUREMDRBRURBNDJBRUY0MTc1
-NAoyMzJDOTJGMUY3OUIzMDNEQjRGMkVDREQzMDE4RDlDNjgzQTRCRDdENjBBMTU4Q0VBRTcx
-RDVDMjMxMTY1OTYyQkMzRTg4QzJDM0MwRjIKOUNBMkVGOTA3MEY4QzBFOTlCQzlGMzY1MkZE
-NTU5OUJFMzkxMTc1MEJDQkE2RTVDNTkzNEVERUI2Qzg1MDc0QjExQTg5NUE4NzRFQkIwCkU1
-OTA0MzQ5OUQwMjZBNkMwNjJCNEY4NkZGRDRFQUQyQzlBMzFENEU2M0QwOUVBMUYwMEM1NTY1
-M0E1QTY4NzE3RDBCQ0RBMDk2MUVENwo2MDgzOTg4NDFDMjZFMzA3NzQ5QTVDMjc2NkIwRDU2
-NzFBRDc0MDdDMDY5NjU3N0RDMDM0N0ZGRThDQ0UwNzcyNzUwRDRENkUxM0E2OTAKRTRBNUVC
-OTM1RkNDQkZDQkNBNzUxQkZFRDU2RkUzOEExODEwMTZGODdBMDVCOTA4NzNGRDhDOUQ4NDM3
-NDg2NDc4OTRBRjFGQzJFNDhGCkU0MDhGN0JBNENGQzlDMUE4ODk4QUM5OUVEMjMwRTk4NTE3
-M0I4MjlEQzJGRDIxRjM1QzUwMTAzQzA1M0REQ0M5Rjk4MzU3MTkxQ0UxRQoxOUQ2NTY2NzI3
-OTk2NDYwNzgxMDY5RUZGMzNDQTQ1MUExMDg4RTgxOTU2REVGOEU4Q0Y5OTdFMjkyRkJDNjNG
-OTlBODRBQjJDMjNBNTIKMDk5MjI4MzZCMDcyQUZGMTdFQzAzNDNDQUQxQjg0Nzg1MUNDMzE1
-MTBDOENBNTk5MTNDQzhERTJCMENEQUY5OTg0NkY3RjM0MUUyM0UxCkM3NzI3NTUwRUYxMTQ3
-NjQ3MkIzRDA4MkVDQzQ3RUE3RTJCNTZBNzQ3RTZBNzc3N0UyRTFBRDRGNEYyMjA5QjUzMjlG
-NDExMUQ4RjdFNQozODNENzYzODJGOEI1RkEwRDY1RjdEQjQ3QTFBMDgwNTY3MDIzRUUyNzA4
-MzNDQkQ4OEIwMEVCNzlERjQ5MTY3NEI1NzQyRDI3RTY4NzUKRDY4QzEyNzI2MjY1NzYyNDc2
-NEFBRTVCNkE4Nzc1OTY1QTE3OTg3OUQ0RUNFN0VFOUQ3N0JBNkRDOEQ5MTcyMTZGQUREOUEy
-NkNBRTlGCjlGNUIxMzVGNkI2QUEzRENCQzc3MTVCMzNFQUY3MDcxNzU2MUU2QzIwMTUxM0FC
-MjMwMzM3NAowMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwCjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAowMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCjAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAKMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMAowMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKY2xlYXJ0b21hcmsK
-JSVFbmRQcm9jU2V0CiUlQmVnaW5Qcm9jU2V0OiBzdG9uZXNzYi5wZmEKMTEgZGljdCBiZWdp
-bgovRm9udEluZm8gMTAgZGljdCBkdXAgYmVnaW4KL3ZlcnNpb24gKDAwMS4wMDIpIHJlYWRv
-bmx5IGRlZgovTm90aWNlIChDb3B5cmlnaHQgKGMpIDE5ODcsIDE5OTAsIDE5OTIgQWRvYmUg
-U3lzdGVtcyBJbmNvcnBvcmF0ZWQuICBBbGwgUmlnaHRzIFJlc2VydmVkLklUQyBTdG9uZSBp
-cyBhIHJlZ2lzdGVyZWQgdHJhZGVtYXJrIG9mIEludGVybmF0aW9uYWwgVHlwZWZhY2UgQ29y
-cG9yYXRpb24uKSByZWFkb25seSBkZWYKL0Z1bGxOYW1lIChJVEMgU3RvbmUgU2FucyBTZW1p
-Ym9sZCkgcmVhZG9ubHkgZGVmCi9GYW1pbHlOYW1lIChJVEMgU3RvbmUgU2FucykgcmVhZG9u
-bHkgZGVmCi9XZWlnaHQgKFNlbWlib2xkKSByZWFkb25seSBkZWYKL2lzRml4ZWRQaXRjaCBm
-YWxzZSBkZWYKL0l0YWxpY0FuZ2xlIDAgZGVmCi9VbmRlcmxpbmVQb3NpdGlvbiAtMTAwIGRl
-ZgovVW5kZXJsaW5lVGhpY2tuZXNzIDUwIGRlZgplbmQgcmVhZG9ubHkgZGVmCi9Gb250TmFt
-ZSAvU3RvbmVTYW5zLVNlbWlib2xkIGRlZgovRW5jb2RpbmcgU3RhbmRhcmRFbmNvZGluZyBk
-ZWYKL1BhaW50VHlwZSAwIGRlZgovRm9udFR5cGUgMSBkZWYKL0ZvbnRNYXRyaXggWzAuMDAx
-IDAgMCAwLjAwMSAwIDBdIHJlYWRvbmx5IGRlZgovVW5pcXVlSUQgMzg3OTIgZGVmCi9Gb250
-QkJveHstMTc5IC0yNTAgMTQwNSA5NTB9cmVhZG9ubHkgZGVmCmN1cnJlbnRkaWN0IGVuZApj
-dXJyZW50ZmlsZSBlZXhlYwowNUQyNTQyRjlGNzVFQzA4MjJCMzZCRTZGMERFREZDOERFQTQ4
-NjgzMDg3OEI5RUZDMDg2NTQyNTA5M0UwQzJFNjlENkYzM0NDOUFFMjMKREY1RURCQzFFNUQw
-NzlGQjQ3NjRCOUY1NEMxQ0IxMDBBOTM2QTQ0NTA2NUNCOTdEN0NFNkMwQzQzNzBCM0FERTU3
-N0FDRDI3M0VBRUQ2CjE1QzQxMDQ4MEM4NjNDQjc1RkZDRTBFNzJFREI1MDM1RDk3Njc0NzMx
-QkJCOEU2OTRDMDMwMkU4NEM1Q0E1NUY0MDVDODNFMDZGQTQyQQpERUFBODlDRTIxREREMkJD
-OUYwNDhGNzUwMUMyMTI0NTY2RDU1QTgxRTE2RUJEMDQ3REE2OENDQUJEQTlENTJBMzg4MDI5
-NUZEMDU3QzgKQzc5MDBBOEEzMUJBN0M0OTkwNjgwRkYxRjc0RDU2OTlDMTlEQzgzNTk4OThG
-N0EyNTE5NkZEQkU1REE2QTBFNUM2REI3NEI3QkJFODhDCjU0MkZDMEU0NThENjRENTIyMzAw
-NzlDRUIzMkM2NjQ0QTg4MDk0MzZCRDEzMzIwN0ZDQjFFNzE2NTM1OURFQzY1M0M3RUU2NUFF
-ODBBMQo5MkM4M0I2Q0YzMTBGNzRBRjc2MDQ5OURENjdBNERDRTk3Q0NEMURENTM4MzA4QkZB
-NDZBOTkyQjE4QzAyQjhBMzMyODY5RTY3NzUyM0YKRTdDMjU5Nzg2NUYzNTJCMkJFQTQxNDAy
-MDIwNDc2MjEyNjc0OURDMDk1Q0M1NUFBNzZFOUM2N0E5NzY5MkQxNDgyNkRCQkJERjU1MzhE
-Cjk5RTE1RDRDMDgyNzI2OTE2MjcwMzMzRTM4MEVDNkM3MUIyQjc5QTVEMTVEOUI5MjhGNjNB
-NDhDNDMxNEU1Q0MzQ0UyQkQyMzUyNTMzRgo1QkJBM0RFQ0U3NTI2ODE0MTM4QjUxQjg5ODY2
-NkU4MjMyOTFEMDE0MkVENjg5QUEzNkIzMjZGQjQxRTY3REMyOUM0NkE3Q0JDRjU2M0MKNjNC
-NTI2ODBDOUJBRUUyQkI1NTQwOTU0N0RDQTY0MDMzREFGODAzQ0NEMzJFMzc2OEZCQTA4NTQz
-RDgwQTkzN0Y2MUI4Qzk1OTI3QkMyCkEwOEY0QTI1N0QwM0FFRjAyNUYzODc3Qjc5OEU1NURG
-RUExN0EyQzNBNDg0QkM2QzZBQkQ2MEEyNzIzNDQ2RTJDNjdGRTBCQTE4MzFFMgpEN0Q0MkVG
-ODY0MzkyNjM5MTdDQTE5Q0Q4RjVBMEE2NUFBNzAwMzM0NUQxMzc0M0U3NTdBN0IxRDlCQkNF
-QUI2RkUwMDIyQjRBQkMxN0MKMTA4QzkxM0IxMDY2QTdCNTIxODg2MUVFMjk0MkUzOUUxREFC
-Q0UxRDE2Q0I2NjZCMTRDNzQyMUI5QTU4RjFEQUE1MTlFNkU5NjU3MEQyCkFDMTg3NDQ2RjY3
-NDM4RjU2RTFBODBERjdBNzJBNkE3NkNGQzI3RkEwN0QxMEI2MjRFOEUxQzUzRjcxNzIwQjMz
-NTFBOTY0OUE2RjI2MQpGQ0NERTZCQzYxQzA1ODdFN0NDNjIxN0Y5OEQwNDk4NkVFOUFEODZC
-MEJFQjA5QzI0QkE3QTNGNENDNjY0ODJFQzdGRDYwRjREOTNENEUKODIyNzI2MTYzOTIxNjZB
-RTA5NTgyRjFBNjE0NkFGOTkzMkRGNEFEMkM0NUZCNDY4QjVEMkI5RTExOUU5M0I0RTE4RUU5
-NjNEQUYxQUY2CkZEODc2QjM2MkIzMUUzNkJCMEE4NzZBNDlEODJBRTg5RTBDQUMxM0RFM0RC
-RjI5RkI5NkM4Nzg4Q0JDMDExQ0NDRjA0NzM0QzFDQkE1QQo2QzE4MzQzRUExQjBEQ0U4MDgz
-ODJDOUZGQjQ0RjFBNzc1MkM1RjlBQzZFN0RBQTU5QzA4MTMwMDM0QThDRURDQkE4RDQ4ODgx
-RTc5QTEKN0JGNTc0OUYxMzYwNzhEQTlGRUM5Q0NGQjA5Qzg1QzYzRkQ5NjRENzIyQURCMzJC
-MTA0MERCOTFCMTUwOEU0NjBDRDA4RkNCN0E5RTQyCkI3NEFCMDlFQjNGODM2Q0Y0NjY0OEJE
-RDkyRThERDJENDhGOEVFOEY4MEZCMUVFRDI0RTkwMURDMjk0REQwMjREMjVBNzI2NDIyMjVE
-MwowMjhGRjY5RkJBMDQzOTJGRDQxNUI3NzVGMEIxMzJENzVENTZDREU5QzBDRUU0NEMyOUY4
-RjE2OTJFRTAwMkE5NzNDNTExNEIwM0FBQzYKRDFBQzAwOTE4NEQ1MDc5MEQ4M0NGODAzRjJC
-MzZEOTRBOEQ3RjNFMUM1NkEwQzkyNDQ0N0Y1NjkyNUYwOTM5NUNCQjFERTM4QzVGMTNDCjFD
-N0Q1NjNDNDNFRkY1RTg1MzhDMkJFMTJDOEUyMTRCNzc0MDAwRkU0RTI3NTFEQzZGM0UyQ0M4
-REY1RTQ2MzNFMDkwRTRDMzRDMENDNgpGMDZCRDgyOUIxMTA1QjUwNDI5MjA1QjJDNEJBMzI0
-ODAwMzVDRjUxM0Y0MDM5QjY5RUI0NzVGMTZFQTQzOUUyNzdENUNCOTNEN0JBMTcKNDE2OTZB
-REJBMDY5REYwNDYyMzIxNjkxMzQ5ODBERjEzRDJDNzVGQUY1NzU4MkI1NDhGRTY3RjcyMTVE
-NzY3MzA3NzE2OEI3MzNEQ0ExCjUxQjBBNzU5MUMxQzJEN0IxRTkzRTQ4NUY1NDc5OUFFMTEx
-RjI3MkM0OUFDRkRGNjk5Mzk5NkE3QzU2OTlCMjUwQ0QyQTlEODJCN0E0Rgo2MEY5OTA4NjVB
-NUEyMUMzOTRBQ0M0RDYxQkUwRDlEREJGOERDMjUzRDE1NjI2NUZBQTVFNTE2M0RGNzM5RjAx
-M0MxQkU1MTlGNUE2MTYKNkZDREMzOTM4RTE0RDE3RDdCNENFODc4NDgxRDVEQzJERTU0NUND
-MjlDODhDRjA0M0VFOThDNEJGQTZFNzQ3REM2MjYxNTJCNjgwN0E1CjY0MEVBMzlDRTY4MDI1
-NDFFNUI0RTgwRjZBQUI0MUIxM0Y2RThDMDkwNjU1NjI3OTU3MEQ3QjNDNTUwOTIzN0VGRjRB
-OTg2ODAyOTVFRAo3QkQzNzg5REQ1MzJFMTJDNDdFOUQyNkFCOTgzMTY4OEU2QTlEOTg3MTU0
-MTlCQkE3QUUzOTBENkVFRTdFOTEzRTk4RkNCQTZCMjY4QjYKQzk1ODQyNEQ5OEJBQjE4Mzcy
-QzkyNUFEQzUzNDE1NTA4QUU0QUZCRjIxMkQ2NkEyMDA2NjkyOENEODFFNUZGRTVBQkEzNDgw
-MjUyMkI4CkM0OUNEMDBDRDBGNzE1Njg1OUYxNEEyNTQ1NjY1NzhCRTFFMDk4NkE4NjczOEJE
-RDdFODFFQjgyNDlBM0MyQjRGQzUyMjg4NkMyMjIwOQowMEJEQjk2RURBOTcyNTU4RUYxOEU5
-NDA4RTZGQThCNTlCNUU1NTdDREJDNkI5MDA4RTAxODA4OTk3NkE4MzE1NzYzN0VCQ0ZCNjBF
-NDYKMEJFMTJGOUU5MkZBOEFFMzg0RTJFMjdCNThBNERENDZCNkFFRjA3OEYxNzQxMEI2NDI5
-NkJDNDNCRkYxQUE3MjBBQzBENTc1QjBBNEE0CjY4NUY1MzNBODQ2RDFDOEU2RTNGMEE4OTI5
-REE5QTRERDAzOUFFQzA5MDhFRUU2MjlCMjhGODUxNjgzNkREQTg5QUE3RTAzMzk3NDc1OQo3
-QkFDMzJCN0Y2NUE0N0U4NzVENjU3NTkzMEU0NTYxQjEwNzdBOEI2RDRFQkE3MTBBNjBFQkY4
-QkQ3RjkwRDU5NjZEREYyMTc2NzY4MzgKQzcxNEI3RDBBMTAxM0NFNjQ5NjI5Nzk3MzM1RTRG
-MUU3MzZBNDUyRkYxMDVGMUUzMURCMUYxMDVGNTFDNURBQ0ZFMTREQUU1QzM4NUI5CkE0OTNB
-RjIyOTI2OERFMzEzRjAwMjc1RjZFRjRFOTk1RDhFMTA0MTMzRUNEM0JDQjEzNzhCNjlGRTBE
-REIxMDBDRDQ0ODFGM0Y3RkZFQgo2QjY5NjA5NkJGRERFRUYxMjY4QkQ5QURGNjgxQjU3Mzgx
-ODk2Rjg1MUVCMTI1MzRGQjA1RURDODlBQ0U1OUU3Q0RCRUJDREQ2MjI5NTMKNEUxMkJBMEM2
-NzUyNjA4NDE2MDlDQjY1NkIwNUQzN0NDN0ZDQ0JDQzkyQkVCQzRDMkMzMTEyQUUyQ0VENTU5
-MDUxODQzOEIyNzc1REQyCjc4REY4NDdCNUYzNjc3OTM0MDk5QThEMzRCOThFOUY3OTNFNkM4
-NkM3NkIxQ0IwRTQyRUM0RUEyRTlBQ0IyMkVFQkMwODQwMjZEQjE2Mwo0MEY4Q0Q5Q0UxOTRE
-MkY2RUEyNDAzMjU1REEyMThFQzMxRUYxMjg4OEQzQzRBQ0U0Qzg0OTEwQzZERDE3QzgzMjE1
-MzNCNjU0OTZDMEEKNjdFRjlBQjhCQjQ5RDhBOURFMTA2OTREMjFGQTY3OUFFREZENTZERjE4
-QzkxNUZEODJCM0VBQzVGMjc5RDRDQ0JGMDIxODNERjRFRUY2CjExRjUyNjYxMDhBMDFEMDU0
-MzIxRTZGNTkyMkYyRTFGNzhENDhEQTk2NjU0OUYzN0VBODc2QzcxQkExMDlGRTgxNzE5ODIy
-MzE1QzJENApFRERDMEIzQjBDMjU2NEJGNkQyRTJCQzNBQTAyMEI0NjJGMEE0MkM1NjJDMUZE
-MTM1REI4NEE1MUVENjc3RDJFQzk2MkM4QTg2REY5RjEKMkI0NDg3QUY0NTU4NDYwM0Q1MTdE
-NkJEMDRCNjY2NTlFQ0RGNDQ2Q0FCNzFENzY4QTlCNEIzRjU4MjkzQTZERENBODk1MzA5Q0Mw
-NDVGCjk1MUFFMTEwNzdGRDFBQUY3OURDODBDMENBQ0QzNjJFQUYxNzQ0NDU1REI5NjRFQUQy
-RDY1RjAzQjRGN0EwMUFCMkZCNDFBRjA4NDAxMgpDMTk5NzM4QUVGOTM1Q0Y0NkU2NTlERjg1
-MkE3OEQzNDMwNjMwMTRBNzUzOTlGNUZFQzkyQjc1REU3RTA0QzZFNDJERDZENkNGODREMzUK
-ODIwMjk3QjdEMEE0RTA3MkQ5RjU5NDRFN0VEQUJGRDRFMzA5MDE2QjZCQjM0NTBFMjk0MkRE
-MTMxRTc0MjBBQTJDQTNFNzY2QkU5Q0I5CjQ0QzI4MzMwRjJERkUxNTE4QzJGQkVGNzg1QUY4
-RDkwODBFRUYwRjlFMTU1M0MyRTg1NUFBNjhFQTcxRDhGNUExNjgxNUQxRjIxMDQzMAoyNUU4
-OTNFNDA4QjAwNkRFNDMyRDlBMUY1RjNFNDU1MzE3ODVCM0Y4Q0U2QjE3NUUyRjM5Qjk5OTQ1
-MzgyRTYzQzNGMzFDNzQ4QkZDMjYKQjdEMTQwNjAwNDMwMTdCM0VEOTNFMjdFMTcyOEUyNjQz
-MDNCMjFCRTNGNzhERjQ3REFBMTM5NTM2MUJBMEI4NEJFQ0YyRjg1NjhBRDI3CjY3MzE0QzBC
-QzgwQTlCNzMzRDk2NTE1Q0Y1ODZDRjAzODYzMDcwN0QyOTMzRUFGNjY0NjY1Qzc2OTI1NjNC
-MkI4NzA3QjJDMjFFQUZFNwozM0M5NkM1Q0JGNzk3MEMxMzEwRUFFNjcxRjk4OTMwOTE3MDZG
-QTEyOEIyREFBREE5NUYyNkQwRUIyOTk5QkMyOTRBMjJBNjE4ODNFMTkKNDIyMjgxNTkyOUQ3
-REYwNjgzQjVDODA1NkM0RDFGQTBFMzcxNkMxNTVEMUFDRDIyNUQ2QjY4OTc2RUUxQTQyMTcx
-NTkyQTkwRUJDMTBECjkzRkQ3MzVERTBGQUFCNjkxQTQwOTgyMzkyMTNGOTdCRjgxQThDRERC
-NTg4MENCQTcxNEYyMjIzMEQyMDhBRDk2QjlCNzMzMDVCOTBENgpDOTQ2OTdEM0FFOUZFRTVB
-NTI1MDNEODQ0Q0RFMUZDMTUxMTI4OTdDNjJBOUM5RUZCQzNENzc1QzQwQkFGNzg0NEFGNzAz
-NDY2OUIzMzIKNzA1MzNFQTcxQkYwQTlDMjdCQzAzQTAyRDcwNDA5MjZEQTFGMTA5MDZEMjZF
-NjQzMTYwNjkwN0U4NTIyQkY2NTgxQTMxMUExRUYxMDc1CkI2OTcwNTNCNTkwMjBCN0ZGODNE
-MEZDQjBCRkRGMTQzRkE4RTY0NUM1MzQwQjkyMjZEMUZCM0QwM0U4OTJCQjI0RDdGNTQzOEQ3
-Qjg3RQpGRTMzNzM0M0MxODc2Q0M5OTQ5NTcwN0Y4N0Q5NkUxMjM0QjU4QzcxQTQ1MEY2MkNB
-NUNFM0I4OTVCNTIzMjhBQzE3MzlEMzk2N0RCMDEKMjZFRTQ3NUI1QTYwOTk4MkMzMUI4RkYz
-NTJFOTU5RTQxN0U5MDdENUI5QzA3NkEyNzAxODg0OUFDMTBFNjExM0MxQTBGODE2NTgyNjgz
-CjcyNzQ3N0NCQkNERTEyMjJGOUVCQkI1NjQ4RDI5NTE3RTcyNDk2RDFGMEE0NENDREIzNDEw
-NkE1MzUyMUVFOEY2MTM1OEEyNjcxMDVFRgo0OTU3Nzg5MjM4OUJGQjcwMTUyMEFBNzNFNkI4
-MDcwREU2MzRCODUzRjNBNjE4MThBNEI4QjMzMjY0NDE2QzFDM0M4M0ZDMEM4QkUwOTEKRjMw
-MjUyQTg2OTFEMTkzNDU2NjIwQjNCRjQ3MUQ0Q0NFOTM5NzU1OEM3RUFDODEwNEM4QzZBMTND
-RDcxNkQ5MTYyMTFBMTJDNDQzRjJGCjA0RUYwQzMxRkFBRjA0MzcyOUI2MTU5QjU3ODI2Q0RC
-REQ2MjA1OTMyQjI1MTA4OTM4NUU0RTMwQzRENTE3NDRBNDVEOTZGQzI4NDA5NwoyMDA3RUQz
-NTNENjJEM0NEQjZGQzc1NUMxMUJFOThFOEZGQkI0MDU2MEM5M0NCQ0VDQkE3QzA5NjkyRjgx
-N0RDRTFCQTQ1MjZBODExNzkKMkYyQzE5QTE2OUM5MUMwMjU5MzhFMkIyNkE4MDM2ODJDRDk5
-MjE4NDRCRjlBQUIxQTE0NTE0QkQyNkYwNDZFODc2OUQ3OUIzNjA0QUJFCjBCNzg2RjYwRDQy
-NEIyQzYzMjM1MjBBOTgyRTkwNkNDM0U5MkQzQjUyQUYwNDUzMDcwOERENzgyMTM0RjQwNTJF
-QkY5NTMzOUY1MENGNAo1NDk2QjcwQjUyQjU5Q0I2RjU0REYzODJDRDlGNEJCMTFGNjI5ODYx
-MTMzQjRGNTg1QjgxNkVGMTk3QjYwQzVBMkQ5RkNGN0UyMEJGRUEKMzY2QjQyRDVGOUIyQkIw
-RjY3QjA0NUE1QjU3QzE4NUY2MjFFRUM5MTkzMjg1NUUwQzkxNzcwQTVFNEZCREU0QUJCOUNE
-MTM3Qzg4QjRFCkU0OTlENDMyRkE2REIyQjg3QzcxQTAzQUQyM0JFRkJCQzVBOEZCM0UyMTMw
-RjQ1MUIwQTBERDQwRTg0NzgzQzI2RTU3M0I0M0IxNTYxNQo0RjdFRUI4QjM4MUUxRjk3QzU0
-QzQ4RUI1QUQ0QTE1NDUzOTFFQzNGNjY1MEEwRTQzRjRDMjM3NTBERDU4MTU3QUZBQzczOEMw
-N0QyOTYKRUI5QUZBQjBDMEZBQzM4Q0U4NTY2MjkzQzU4NEIyMjU2RTc5NTQ0QTVCMjQyODM0
-QkRCMzFBODY0NkRFQjA0Qzk1RUU4MEVCQzJGODQ1CkJFMDUzNkE2MjlFOEEwRDIzRDM1NUNF
-NEQzNUU1Rjc0QTJENEUwOENBNkQ0N0NGQjFFMEY0Rjk4RUREMkVGM0RDNzc5QjY5QkFERUVG
-NgpBRjA2RjFDNkNEMzZFRUQxQzA5RTgwMENENzIzNjg5QTAwMTAwMEY0MjAxRDM2NURBNTU3
-RDExRjA1N0U4NTg1MjBERTc1RjVDOEYzNTQKNjlBOURERjVBMjlEMzY1MUVGRkZBRjRGREJF
-RDJBOUMxMjc1REI3NjRBQkE2RkY3NEI3ODlERDY1QzhEMDgyRDlBOUZDODAwODczMTMyCkZG
-QUM5RTc4MjI5MUVFNjY5NkQ0ODNENDFDMTM5OEU4QzY1MzA2REEwRDMwNkJCOUVDNzEzQUZC
-NEMzRDU1QTRDMzhEODY1MzgxREZCMApFNjMwNjI4RkJCN0NGNTE5MjJFNTQ3RDg5NzUzMDFF
-MkE4MUUwRDQyOUZBRDFDNjU5OTM1NDRBQTU0MzFCODgwQkU0RjMxNEM0OTgxQTMKRkVGQjJB
-MzdCQzFCRUZCMjY3RkVDNDc3Mzc4MTlDMTRDMDQ0ODY5NDNDQzE0MzIxMzVCRDg0NEEzNDYx
-N0VEN0U0MTQwNDMxQUFFOTQ4CkU5ODlDNUM3MkI2QjA5MEFFODg5QjYyNjYyRThEMzBEN0M2
-MzMxMTBGMDg2MDBGOEYzREVCQUJFMUI4MjcyNTcxQjE1NTBGRTM1QzI1Mgo4MThGODU2RkZE
-ODIzMUU4MDEzMjFDRkE0RTA4OEQxRDZBNEY1NkYyQ0E4MUE5MDlEMEQ1NjVCMzNGNUIyNTc0
-RkM1MkZDQTExMDdFNEUKOTRFNzIzN0Q5OTREQ0EwRTVDMTMzNDhCNkVEODM1QUQ3Mjc5RDc4
-Q0UyOTBCMzhGRDQyODc2RkNFNDQ0NzFBRTZFMjBFNjM2OUM2MzhFCjZFNEI0OUIwMEI2ODQ5
-N0Y5MTJGQTY1MTgwMTZBQ0U2RENBOEU4NjUxODRDRDU2M0UxNzEzRDdFQURGNjRFNTJCQkQx
-M0NFNUNFNTRGMQo5RUM1OTc0RTlGNTlEMjg3Rjc2RjAzRjc1NkFCNDJGQTNDREZBQ0E3OTc5
-MjY3OUI3RUNBNTE2RDE1MzJBMUJGMUFGMkIwNDAwMkEwMjkKQUM4REMwRjM0NTI3RTkxN0Q2
-QTU1OTk3NERGQkY5QTVFMTNFMkUxRUQ1MjZGN0FFMTdCRUEwNDY0MDcwNUNBRUIwNUYwNjU0
-NEExN0Y3CkI0NEJGNTRCNkI4MDU5NEQ3MUFFREFBRDE3MDc5Q0ZFMkI2QzY1NzQ0NjU1NDE4
-QjE1MjdENTFENEM0NUU1RjMyMUQ1MjQ2OEMxNjhGQwpBNTE1OTc5Mjg3NTY2REZGMjZDMDYx
-RkZENzAzOUMyMzJGRTFBQ0Q5Mzc3QzU4ODUwQzk5QkRBRTE0NUY5NDlGNEY1MDRENzRFNDI3
-OEIKM0NCMkVFNTMyNTJBRjc4MDVGMzE0M0YwOTk5QzhDMEQxN0NDRDJFOTIyMzc1RTU2M0VB
-RDY5OEQ5QUU2RDBEQUJBRTVBODM0MDQ5N0MyCjEyMzhGOUZDOUZDMDVCNzZBNDdEQTBDQ0ZG
-OEQxMDhEMUExODhGNURCNTc1RTVDMDgyMTlBMDRDRjc4RTA2QUYxMjRGQjNGQzNCNEU3OAoy
-Njc3RjNDMDlGOUQ4OTJBQjI5NEI0RUExNTI0MUNFMjg5OTUxNEVCNEQxQkNGNTFEMjk0NzM3
-MDg5RUI0QUM1NkFDNzg1MkU0OTgyMTcKN0I4MDQyNDExNzczNTM2NzA2MzczNzZENEQxQkU0
-RjEzQTYxMDdBNkE2RTVBNzM2NzlFNjg3RjU1MTI4MDFCMDdGNjc1NjhGNzM3QjNFCjAwRkYx
-M0Y3RjhERTlDNzNFQjNBMjg2NUIwNzA5NEFGNkZDODcxMEJDQkY2OTE1QkUyRTI0MTZCOUE4
-NjZCRkM1MTNFMjlFOTI4OThGQgo4MEY4MTEzMEU0QUI5RTVDNUQ1NTk1NzZCRUU0QUU1QjAx
-QkQyODc0ODI0MEU3QjJENzQ0MUU1NzA1M0Y5MzQ2MjhBOTlDQUM3RjRDNzIKRjBBMzQzQjc5
-MzdFMjk1QkJBQjlEQUU1Q0VGREQxMDNERkY5MzVCMjQ1NEU0QUUwQUYzOTc3NkEzQzBGNDA3
-MDFERkVDQjI3QzZEREJBCjREOTc5NzJDMDMxMDlBMjA5QzZGOThDMUU2RkQzQzgxQUY1Q0ZD
-RjUyMjM4NjZBNUU1ODUxNEZFOEQ1REVDOTU5NDU4NjVGQjZGNkZCQwo1MUZEREREQURBQjFE
-QkM2OEYzNUY3NTY0MjZFQjI5QTZBNDE1QUVDMTFEMkVDMDlCQzUyMzcxM0VENDQ0NjZGQkEz
-RkRERUE4NzNBMTQKODVEN0MwNDJFNDkwQkVBNzUxMkQ0NjcwNUE5Qzc3QjUyQkY1NzVCQjFD
-ODQ5Qzc2RDBFMzIwMzNBOUY1OUM2MkQzNjQ2NzI1NjI3Q0I3Cjk0OEMyRjcyRURBM0Q1RDI3
-RTgzQzJGMzc5QjEyQ0JCNkQ3RUQyRENGM0JEQTI5NzI4Rjk5MTI2RTU2QTM2Q0M5RDdGQ0Q4
-M0YyQTRGQQpEQkQ1QzE4ODM3OUNDNkE1NjA3M0Y1N0U3NTIyMUU1QkEzMjhFODRFQkI2QURD
-RDlEMjU4REUwM0U1RUQ4MzEyM0RCMTk2NDUxMUI3OTIKMjczMEQ2OTJGOTZCMkU5MzI3M0FD
-MTQ4RUNGMDY5MzYyRjVFQUJCREQ2QzU3N0QwREQxRDcyNEJEQkQ4MDQyNTBEQjJFQjNBMkI1
-RjQ0CkU3REZBQzU0NTdEMTE3RjNBMUIxMzJBNjhDNjFBMzUxNzlCMzM0OUExRjQxMkMwMzIy
-Q0I0MTUyNTZGRTUxN0ZDQjBDMjA2Q0Q1NzZEMAoxODFDRjFFRDNBMDY4NDQ0RjJBMTlEOUVF
-QjUzMjRDRTA3MTQ3MkFFRTAyRTIyNUM3NDc5MTMzOTJFNDMzMzFDNURDOTZCQTk4NUUyRTEK
-NjA1QTNCQzA5RkM5MkNEQkU0QTUxNkUxQkQyNDhEMzRGRDg1MDIzRjlENzM4RUUxMEIyREMy
-M0VEOEExQTJGQTIwN0ExQTQ3NEI5NEEwCkI3ODY5NEQ3QjlDMzg2MzAyQjJCQzcwMjk0NDJF
-NTc0QjYyNThGOUJBQUQ4QTA5OUM1MDAyQkUzNjY2NDlBNzcxQTk0QTUzM0I0RDMzNgo2OTVE
-REQ1OTlERkI0RkE5NjNCMDQ2MjhDNTJENkREOTM3QkJDRUQ0MTdGREZFOTI1Q0E1NEI5Q0NG
-NDRFQzc4RDJDRUE5QUZBQkJBNkEKOEQwRDc0NzlFRTYwMjA0Q0YzOEQxRTlCNDI1QkQzQkQz
-NzUxOUQwRDY0RTE1NENDNkNBRTdDRkM3MjA5RjRBRjRFNjZBOURGQkQxOTM0CkU4MkQxMjA5
-RTEyQzQ0Q0JERjRDM0U5MDI5MzFDNkM5ODNFNzEyREE5M0Y0NURFNzlBNThCRUY2RTc0MkVC
-NjNEN0QwQzE4N0Q0MDM3Qgo5QzFGREUzRjIwNDUwOUVEQ0RDQUE1MDc1RTNCOEI0QzVFNjJD
-MThDMkZBMDEwNDBBNEQxNTNDNThGMEQ2QUE2NjMzNUFDRjdDNDU1RjUKODU1QUIzREIwQTEy
-NDEyODc4NTY1NzREQjE3MERBMEM1NUE5QUUxOTBGREJGMzA0OTk4N0M4Q0UyNkM1MDFEMEYz
-QTE1RTk5MTVFQjVBCjlBRTRBNDk4NjBEQTkzNkNDNjEyMjhBMjFDMzQzREY2QjBDQ0UzMjRG
-QTAwQzMyNjUzREUxNkY5QkJBRTg1RTlDNzY3MzE1OTQzNEQxNAoyRTI1OTI4RDJFQUQ4MDIx
-QkZCMkRCNEYwQUU5MzkwMDU3N0M1OTM3QTdBMEUyOTI1NDZDNjZEOUQzMDc1OUVGMDYxMjA2
-MDQ2ODlGQUUKRjgwODUyMkJFQzU2QkE2MjYyMUY3MjhFOUE0QTREMzFEQjdGN0Q4MkREREZB
-QjEyN0U1MEU3MkY5NUVGQTQ0RDQwRUQ5QTgyQTFBM0QyCjE0QUUyNzU5MzBGNzk1QUQ3NDM3
-NUE5ODlENzhFRjBGM0IyODEzOEQzNUEyMEY1MTZDODU0NjA4MUJBNEJDRDZCNDkzQjQ5RkFC
-NUFEQgpDODQxQzQ4QUM4QjIyRURCOTEzMUJCQUQwMDQyNUQzNjAxRjQ5MjhGNzJGNjBBRjZC
-QTI4NDVERkYyQzFDNDZDOEMwOTE5NDgxQzJGMDIKNkU3MTYyN0EwRUVBN0MxMjMzQkZDNjdC
-MTZERUEwMEFEMDUyNEZGMkZEMDRFNDkyNjY2NTJEREE3NDJFMjc3MDUwNEMyMjQzMDAwNEFF
-CkY4Q0Q5NEU2RTU0RDFFODk4OTI2NEI3QzIyRDc3MEQ5MzYzODk5Rjk3QTkwMEI4NjM3QzQy
-Q0JFOURBMENBRjk3RDY5RkYzOTkxMDkxOQoxNTVDQzY4RkM4MTIwOEY5QzdFOUI3QjY3QkJF
-RjAyRDY1OTMwNDQ0RTkzMTlEOThBM0MwNjNFRTU2QjkwN0NDNUIyQjA1NDk2NUJEMjIKMDc0
-RkY2MUY4Rjc0RUQ1NzM0QzQ2QkU1MzJDOUJBODgzQzU1QUE1RkFBRjVFRTgwODUzRDFCRjA2
-RTI2MDY3OTczMkU3NzEyNjE5QzM5CjlERkM0MjI1RTcxQjg3OENCNzU4QzZDM0RFQjUzNDdD
-NUFENjRBMjJGMEM2QkYyQzY5MkY1RUMzNTRGRTlFRkI5NDBBRkVEQzUxMUY4QgoxQTEyQkQx
-OEMxRkYxNEIzNTQ3NDhERkE0NTUzQTM5NkREODQ1NzIzNEZCMUQ2QkJGMkU1OEVENkE0QkU1
-MzU2RTM0MDJFNjk1MzFCQ0UKMEQ1N0U3NjMyRDJEM0Q5QTdFN0I1NDQ5OUNCQUI4MDc1MTQz
-MzBDNTY2RDEwNEM0OEE0RkJGRDdGMzY3NEVERTY0RDY3NERGMTI2ODU2CjExNDVGOEQ2NDlD
-RkYxQzA2OTQxNDY2Nzg2N0VBN0I2NUEwMTI2NThGMTM3NkU3RUFCNDUyNUVFMTc4OEIyNUMz
-NDg4NTA4MDlFNjFFOApDQ0REMkZGNzA4QzFBNjFFRTBFMkQ2QjVEMUI4NUIyMDk1MTg1NjY4
-QjM3ODM2RkNBRUMxOEQ1NDQ0RDBDMDBFQjZENzVFODExRDNDNTAKOURGRUVEQkU4NkI4MDUy
-RDAwMjFCMTg3QTkzRDFFQTFGRTAxNDdEMTFENzVEQjVCNjM1MzY0MTBERDc0MDQwRDc3Rjkz
-MDI5MkQwMEUwCjgzNTFGN0RFQjYzRDk4RDU1RjExQUU1QUVFRUIwNUQwMEQ3RTdGREQ3NjlF
-RDMzRjFDNjFCRjA4N0MzMDBCRjhENUJDRTM0QjQ3OUQ2Mgo4MjMxQjlBQ0VGMTlFRkNGNjc1
-QkI0RUMyODMzNDU4QTE1MUMzNDBCQTVEQUI5NDk5MTdDQ0Q4QzQ1NUQzMEY0MzMzQTgzNDUx
-OTc4NUIKNTM5Mzg4NjVGQ0UzRDdENTI0QzcxNTJFMDNERTJGODREODJGNkY5MDY4MkIwMTk4
-QkY2ODhCMkE2MzIxM0NCNDMyMjk3QUU5MkZDQjU2CjdEMEMzRUEyMkMyOEMzNzNEMzQ0OEQ0
-MDI3MTlEMEM2OEMzNjg2Q0JBRTRDNDVBNjk1OEQxRTg5RTYxRUE4RkJEM0QxRjYzMzY2QUM1
-OQo5NDkwQ0MyMTE4MTQ4MDE3QzcyRkIyMzlGMTU0MDIxNjM5N0RERjM2RTQxREM0OUJFNEYz
-ODM2QjA5QzY3NDQ1NEMxMDQ0QTAyNzA0RTYKRkY3RkNGNzhBQTg1QjEwMDNDMUIwRUIyQjUw
-MjFGOEYyNjQwQTY4RTQ3OTlFNzVDRjQwRkZGQzIxMkFENTYwMTMxMzMwNDg5NTU1QTQ4Cjgy
-OEVFREQ0NDBCREZGM0ZDQkM4NjAwODA5OTJBMzM2N0U4NTBGOUQ5RDIwQUYxQTAwNTVENEFE
-MTM1MDUyNDU3MjVCQzNERkQ3MjYxQQpCNzc3MENDNDFDNkI5MDg4NzJGRjk5NzU4REY3RUEx
-OUNDQ0I4MTIwQUVBMzJDNUU1Q0VBQ0MwNUEwQzQwMzAwQzhCQkEzRUExNkFDRDcKM0M5MzMx
-MDI2RDg1MEZERTgzOTk2Q0EwM0Y2NDJGNURFNTQ4MTg1NDAwMTRFRjY1NTcxMTkwMzk0RDk0
-RkMyOTczQTZDOTJDRjY3NERFCjJBRDlEREZFQThCOTNGNTU2RTU5QjYxQUU1NThFNkU4Njgy
-NEYyM0Y2QTBBNzJGQzc5QTQ4Q0QxNEZEN0JDQzc2MDExQTM5RDhDQzlBRQpGOEU3MjQwMkRC
-OTZERjBERjQ4ODg1ODgxRjUwOEM3QzU5QUY2RDA2MTAyRkFDODQ3MTg2MzA4NzA1MTZFRkM5
-NDI5QTNFOTUzNzY5NTYKMzE0RTY1QUJBMTI0RjkyQUUxMTY4MkY5Nzg4RTQ5MzM3OUY4M0ZB
-REYzNDA3ODMxNTBDNTE3MzlFRTg3QTg2NkQzNTJCOTlFNkMxRjRFCkFEODE5MUI3REJGMzY0
-MjYwQ0VEMzI3NEEyNjFDM0FBRjkwOEQ0NzNDMjE3NUQxNUFBOTMyRDg4RERFNTdDMkVBRDI3
-QjREMEYwNUM5RQo1MTM3QTQwOTMzNEQwOTU0MTgwQ0FCNjQzNzIxNjYyNjZGQUE1QTIyNTA2
-RDg1QTQ5MjhFMjQwQUZGRjMxOEVGNjNCNDVDMjZEMjMyMzcKNkM0NjVBQzlGQ0Y2NEQ5REND
-RjEzQjZENTEwM0MxRjY2NTc0Q0NDOTY4RUUwRjZDQ0E3NzNCMjhENTNFRDk0QkI3QjQyMjg3
-QTZEM0VDCjEwMjE0M0Y1MjcyMENDNTM5NkVBNTI0NTc1QzFDREI0Mzc0ODcyODhCNTU4N0Qy
-NEJGRkYxQjgyQURENDVBRkVDQjRENzQ3QTYyODk0OAo2MjNFNjE2NjRGMzY1NUJCQjFERTc4
-MkI3QUNCRjI1Njg3NURGNUZDQzIwQkI3NTA2OTEwRDEyQkU3MjkxRUEwNjQ4Mjk4RkQzNjE3
-MzcKMDQ1OEFEMDg5MTcwQTAwNTk0MjYzOUY3QUU1QkU4RDFGQjZCOTU2NjJGRjA3NEZCQ0Y5
-Mjc3NkU2RjRDN0QyNDFEMUVGQUVFRTQwRERGCkU4RDg4REMxRURFM0Q5RTA3NjhCOEUwRkQz
-OEJDRDkzMTBGOEE3NENDMEM2NzFCMEZDRDQwNDczOUZCQzY4QkIwMkIxRDkwQkM0RDkxQgpG
-NUMyNEU3MkQ5OEQxRDM2QTA2MTFCQTk5NjFCNzRDQ0U0MzQxMURBNUJGMjY1OTQxNEQ3NEJD
-RkU4RTI3N0VFQzRBMTFGNzEzNDJBOTcKNjI5MUM1MkEyMTczN0YyMjQxNzhCNjE5RjA0OEYy
-QTQ0RTlGNDJCRDU1MzA4NDZFMTBDNEYwNTYyNDAyNkUzNTVGRTYyMzIyM0RCRjQyCjkwREQ1
-MDRBREM1NjA1MUE5MjU3OENBMkUwMEJFQzEyMEUwODEyRTBFRUVFOTM0RkI5RTdGRUE2QjQ5
-MjVCNEY1MTE4RjMwQzVCRkYzNQpGOEExRjA2OUIxRkNDMjQ2OTQ1MTlGRDlFODE3RTAxNzk5
-RkUxRkI5RkZCREQyODIyMjY2M0E3NEU5QUEyNTNGNTczRkIzNjMxQkFGRUMKRDMyNzUxNEE0
-Mzk0N0YwNEYzMUJDQjIyQzk4Q0Y5RTA1MDczMkJFODU3NEJDRUVCRkI5OTM4QUE3NEZDNjhB
-M0IyRUNENkFDQ0RGMjJECkU5RjQ2QUMzNTg5QUFCMUMzNTI1MzhEQUEwRTFDQTMyMDY5NEY3
-OUQ3RTVFNjkzNDEyOERFN0VFM0UzMzI4RDRENDk0QjVFODVFRTQwRgpGMjAzMkU0NEFFNTg3
-NzBFNzgxODgxNzdGQ0YyM0NERDIwMDI4MEEzOUVEQjc2RTREN0JBNkY3MjhDRTg3ODQ1MDdG
-N0RBMTY0RjA2MkMKMzQ5RTMyNUMxNDU5NzZEMDEwMkU2NURBMTcxRjk1QTA0QTNENTUwRUUz
-REVBQTRBNTY0NzY3RUNGM0U3RDBENUQyQkQ2RDA2Q0ZBQkM0CjFEMUJFNUE1RjFDNDc4REUw
-ODM0M0YyRDlENkE3NEJFQTNEQUM5NTNCRjM4MTgzRUI5QkY5QjE4OEY4ODQ1OTQ5NkJDNzRB
-M0VGNjUxNAoxMjMwN0FGNjlENjhBMUJEOTY3OEM2NDJEMTFCNzVBN0I1QzExM0VBODAzNjU4
-MDU5NkZBMTkzRjJGRTQ1RTUyMjc0RjIwNTgzRjZEMEUKN0Q3QzE3Q0EwOTAyMkQwNzU3M0Uz
-M0Y1MjM5NEZGNDk5RUQwNjdFRERGMTIyQTRBQTQ0QjlCNENENTNDMDQzMDRCRDUzQkRCNzM0
-RDc4CjU4NjY4OTFDRkNDQjVDQzRBQkMyRUEyQkU2RUI0MzJCQzBFQjIyRDlFQzQ1QkQzMUVD
-MTEyNDRGOUM3QURGODFCQ0EyOUE3MEVFRTQzOQo0QTNBQzVDMkJDQkQyRTgyQTI2QjA2QTM0
-ODU0MkE0QzU2RDc3OEQyREZGMjk0NEI1RUUyQjJDQzMyNzYyRkVFQTJFOTVEMTgwNzU4NDcK
-NkUxOEU2NTk2QjlBQkIzRjM2NzQ1QkQ4MjI4RUMzNTZCRDhERkU4OUY4MTgwMjc3QzUwRERB
-ODgzQTU5RjFEOUEyMTcwNEVEMDE5MDcwCjdFODdEMzA2NzI5NzNGNEVFRDZDNzQ0QzJFNzFC
-QTM1RTg4N0MwRUExNTAzQTk0MUVBMjA5MDIxNzdEQjFGNTA1NDE3NUEyMTVBOUQ0QgpGRUJF
-QzUyMUIyMkY5QTI5MjRGNzZBQ0JFNTczRTIxNkIxQzk3RDVEN0VEMzIyREZERkJEQTEwNDlB
-MjE5RUUzNzM2QjlCNzYzNTM4Q0UKMEIxQkUzRTI1MzE3NUE1MTVEQjBFQjg3N0E1NDdDNDky
-OUM5RUZCRjREQkM1ODZCQjA3NkVDRDc1NzU5MzBFNDU2MUIxMEE1NkUwRjkyCjE2NUU0MTVG
-NzhBQ0FGMUE5OUFGNEExQTg2MjVDRjAzQjZGRTU2NENFQUE2Q0FGMkZCMjQ3NTQxQ0FCQTI3
-OERDMTk2NkI2REExOUExRQo5MTUwMjQxODQ4MzJFMzMxMjlEQUE4RjM3QzU3RUE4RkE2NkIx
-RDdDMUUwMzk0NTYyN0Y5ODA3NTEzRUFBMEY4N0NENTU2NzY0NjA2OTIKRTc2QTcxODg1QTFB
-MzdCRkMwQUJGREVERkY2NTVERUQ4QTlGQzgxRjU3OTEyRUE4N0VENUZCMjhFNkZCRjI4M0ZC
-NjgzMkMxMDcwNEZCCkIxQjQ2RDdFMUJFQzcwQjVEQThGNUNEQjU4RDE5RThGQUFCNTcwMkEz
-QTcyNkVCMDc3ODk1RDM2Q0I2MzM4Mzc4QTM0MTI5MjIwMTZFNgo1QzQ1RDc3QzNENzQzOTcw
-NTk3MEM1NzcyREVFMDI4MjFGMUJEMjM2QUZEQjk5ODJDMTk4NkRGMTYxNjY1RDdBOTI3NDEy
-NTA3NzAwRkEKQjJEODczRTc3QkY4MTg3MTNBMjU3RkM3RkMyOUREN0Q0OTg3MjQ5RDUzNUUz
-NTgyODEyQ0NFRjNDRTcyQjYwRDIzRjMzNDM2RDFEQTQyCkJBNjA0OTY3MTk3NzQ3ODNGMzk1
-QzQyQzFCNDRDNzdGNkE2NjYyMEYxRjkyMzY3QjU2Nzc3QTU3QkFDMDI0ODc0NjgwQ0QxMDQ5
-RUUzQwo0NThCMjQyMTA2MjdDNzQ1NTU5MDg3MDMzRURGMENGRTE0NDg1RkI3OUQ1NDE4ODhE
-OTdDQkY5QUU2QkJFRjlDRTBEQzAyQkJCQzgzQjQKQzJCQzI2MzEzQ0NFNDYzNzFDNjBCRkMz
-Mzc1OEM2QkQzMzQzQzA5ODRFNThENENFNTEzMzUxMTg5OEQ3ODYwREFFRjA0REFCQzQ0NzMx
-CjdBRTNBMThCQzg5ODgzMzEzMENGNzJFREQ5MUE0RTQyRDg1RjRCODk3RDBGOUU5REI0NDc3
-RTczMDYzMTg5MTYxOTE2REU2RjM0RkY3MwoxMUZBNjk1QUZBMkY4OTczMzRGRDgxREZGQzUw
-NUJFQTVDMTNBM0FDNzkyNTY5QzY5MzU2MTFFOTVCNzRENDFEOURFMzYxNDA2MjA5NzkKMjA1
-RkE3ODU5RTE1ODVCMTEyNERGRTRCMDREODgwNjE1Q0MyMTk4QTY3RDQ3QjY0ODUxQTY0MkY0
-MENDMTZBOEU4QUUyMDJFRUM1NUUxCjAwOEUzODc5MjQxQTYxRTY2NzNDOUVERjc3RUZCMkE0
-M0Y3RTg1RTE5NkJFQTAwNDM4OThGRUQwMUZCQUFBNDc4OTRFRTczOTJCMURCNQoyQjk0MzNE
-ODg5ODA0NjFBN0Y2QkVBQkU2Qjc1MjYwMEI3NThGMEYyNTI5RUEyNkQ1N0JGMjg5NDkxMEFG
-QzY3RkM2RDE5MEYzNTkwNTgKNTE3NzY2Qzk0MDNCNDA0RDUwODY1Q0Y2MzJGMzcxQUE2NzMx
-OUI2MjYyRjA5QTkyQTY1RTg2QUVERURBQzUwNEJBOTAxQjhBMTlGQTE0CkY3QzY2NTlCMjA5
-ODQ1RTk2NjU0NzQ5ODFFRjk1MTMxMTVCOTNEQTE2OTkxQjVFMzFBNzBERjAxREIwNkQ0N0JG
-MDg5RUIxODRDRTAzOQozQTFDMkMwOEEyQjA1NjI1Q0UwMjUxM0I0QzgyRDAyNkM5MDNEQ0NC
-MzEzNUZFODhBNkE0Q0VDRkQyRDU4MDhDQ0M5OUJGRkM0M0RGOUMKRkEyRUZFOTg3NUMzNDkx
-MzIwRDYyRkEzQTU0NTU4RjI5OEUzODU0REMzRkM4RDYwRUIwOUM1MzRFNkExNDEwMkY0OTUz
-QUY3OUE1N0U4Cjc3NDhBMkUwMUM2ODNCOEVDQ0ZFNEFBNjgxRDk0M0MzNzU4RkU3MDYyNTIy
-N0RFMjE0Q0NBQ0QzNUYxNUI0NzgyMTAwQkEzQzBBRUQ0RAo1MjM2ODE0MzhBRTE5NUQ1QjU4
-RDRGNjFCOTgwN0VGQjEyQjE2MkZCREVFNjNDMjJDRTA1RDk5RTRFMjg5RUYwMTQ2M0RDQkQ3
-NDhEOUMKNkNBMDI3MERCMTExNDk1QjBFN0JBMzc3Q0IzNDE2M0RBNkUzQjdGNUZFODlGQzlG
-RUQ5OTYwRjNFQjlGQzQyRjFDRDM5QkZBQzhBMzZCCkYwRUQwQ0IzQjZEODUwM0U3ODQzMkVC
-RjQyQzBFQzZENjA4MjQxRERBQjJGMzI1NDBBQjIyQ0VGRERCQkIxMDA3NzE1NDg0NkFENTI1
-Mwo4MzU1NThFMUEzMEM0MjZGOUU3QTQ4OEI4OEMxNjk5QURERTY5RjA4MjEzNDJDNjAwNDJE
-MENENTA1Nzk5QkYxQTREODZEOTREQzQ5QTMKMDQ2MjM2Q0RGNDYyQ0E2MzY3MjIwRTA0MUZG
-OEVGRTE4Q0E2NUI5ODlFODY1RkQyMzdBN0UxMjBFRUU5NTkxNTI5NUY0RkI4RDA1MDhGCkE5
-OEEyQjc3MzdENjA4ODA0NzUyMUU2Qjc0MDMxMUJBQTVGRjQwMjc1NENCMTE5M0MzMjlCN0E3
-NEFGNUFCRDU5NkU1QUI2NkMyNDJDOQpGNkY4OURBMTIwNjVEQjAxQUZBRTMyQTdDQzYxNTZC
-OERGRjk0QjcyQzhBNUY0MTVDNzM4OTYzQjExMkRGOTk2MTY1RjUyQ0M0OEMyQUUKRkM5MDMx
-Nzg5MzEwNDRCOTA5NUEwOUE5NjkxNjY4QUFDQTkxMThENjdFMTIyQjcwQkMxOUE1MTE3NTk1
-NDRDRTNBOUJGQ0I3M0E2NTA0CkQ3N0UyNEEzNTBGRTUyRkIwMTA3QUVFMTJGNTlBRDMyQzEy
-MEIxMjA1QjY5RDAxNjVFN0JGOThDOUYxN0EwNERENDY2NDlFRjdFMzYzQwo3RjUyRjU3M0Ex
-Qjk5NzMzRTUzMDNCRUQxOUZBM0NGMzA2ODc5Qzc0OThCMThFRDhFRTAxRThFODc3MTVBNDRE
-Q0VDNUQyNTlFOTU3NjcKMEE0NjlEM0M0RTVFQzIwNDNGNkVFMjg4QUNFMUUzQjM5MDg0NTI5
-NDU1RTFGODM4OTE4NkY3NjYyRjk2RTNFMUIwNTMwNzNDRjA0RDJGCkYzMjJDRkRCNjI2MzU4
-OEIzODAyMzI3MzE4QThEQ0I5QTYxQzlEMUIxREQyRjgwNzBGMjE0REZCMjE5ODY1MEQxNEE3
-N0MxNEZDMUFBNAowNkVDNDg3MTQ5Qjg2Qjk5N0RBRjIyRTMwQ0FFOTY4OTcxNjY0QTEwQTBD
-QzM0Njk2MUZBNDkwNjJFNjE3RUQzREQwREY3MzdCNDE0MzcKQjFEQzJCMDY3MDg5MEY5RUQ5
-N0U0MDZCNDZBOTRCMDVBNTM4RTgyNDA1NzJCQ0NFRkRFMjFGNDFBNjY1MjBDRTVFQ0REM0Mw
-Q0NEQjNGCjE5MzMyRkQ5NDY1NEE5RUI3RDdENTE3NTAxMzA5NEFDNzlCOTJEMUZCMEJBODZG
-MjA5QTMyODNEREE5REIyNUI0RjVBMEEwM0U3MkZGRQpBNDVGOTE0NzU3RThDNTBCOEYwRjgx
-NzZGQThDRjQ0QzI3MUE1ODRGN0JFNzAwQTBEMzY1NzJGQUUwNUVGNkZGMjNDOEJCMzNFRjZC
-QTMKMzE4NjU4M0U0RjU1RDEyNTYwNzJCNTNCOTEwNDdBRjc4NjhCMzFDQjYxNTBGNTQ1NkZE
-NEZGQjhCNEIyRUMzRUUxMTQ4RThEQjM0MzUzCkIzQkZBNEY4NEI4QzMwMDFFNTc1MzcyQkEz
-RjdCREYxQkI2QzRCODJDMkZBRDc1NzVFMTJFMjg3RUI5NzFFRDNEOTE0MDQyMjExMzdBMgo1
-MzAyNkM4OTg5RkM0NzIxNDNERERFOUUyRDQ5QTQxM0YxRDZBNDA5MTc5Q0RDM0NCRjU0NEEw
-OTNGQTA1OTg1RTBCRTcxQ0Q2MDE4RDQKMjEyN0QwQUVCNDM4OEZBN0FCQzg1NTgxNzIzOTY4
-ODVBOEE0MkYwQTBDNzY4QTRCMEVDMkI0RDE4NjJBRkM0RkYzNjNGMzY2OEEzM0JCCjZGNzg4
-QTVEOUU5Q0VBMkJGQUREN0E0QzYxMUJBMjE3RDE1QTFGNkJFQjEzNUY4RjdDOUZCMDExNjQy
-QjYyNDAxODE0OTRBNkMxOTJBNQo3NTY3NjZGNjJENzMzMUMxNDJDNTUxQUIwRTY0RUQ4Q0JD
-NTdFRjNDMjk1RERGMkREQkQyNjU4MTY3NjFGMTk5QUJBMUQyRTUzNDk2ODQKOTRFNjc2RDEw
-NDYxQzM0MTM2RkI4N0I5RkRDODE3REI3MzE0MTkyNzgzMDFERjg2QzkxRDIxNjYyQkZCMzY2
-MTVENEY4NURGMzc5M0UyCjlCQjRBODZGMUFFREMwNjFCMTU5M0Y1OURGMTMzRTRDOTdCNzQ0
-RjZBQTE5RUUwRTIzRUQ4MjZEMEFBQjVFQzQ3OUYyRjEzMUREQUUyNgowRjQ0ODJFODIxNUYy
-QTA2QzMzMTUyRjFFMjZFQjRGN0VGRTg2Mjg0NkEzN0EwODRENjA5MDIxNkExQTlFMTExRDQx
-NjYyOUFBMzczNzUKQzQ5MjRGRDk2RTg3NjczQzVCNDFGNjI3RjVDMUJGNjgyRTZDNDExNzI1
-Q0Y1NDE0RDdFRDQzMjhCOTRFQjhFQUQ5RUE5OTFEMEYxMjBFCjg3MkNEMTM5N0QzNkQ1QzJE
-QjAzMTY0RjJFNUQ0MTQ1MTlGREI2MUREQjNFMjdENUJDNzAxN0NBQkFDOUVCNjdCQ0I2QTVG
-QzQ1MUMxMwpFN0EzQjk0NEMxNzk1QURFNjE4OTQ4MDlCMDg1QUI0RDhDMDQ2NDg2NzE0RDA4
-NjA0M0M4RTUwNEI1NzQ3NkM1QUZGREU4NDczQ0I2RjIKMkRFMDZCRjZGRUZEMzY4RDZGOEQw
-RTAwMjkyQjgyNUVFRTE4RjFGRDNEQjM0REEzNDdGMUIxM0FCRjE5RjIyRjEwMzEzRTZENjQ2
-ODA5CjkwRTRCOEQxNjY0OTkxMjhCQTE0RDJGMjIwMEM4NjA0NUM3MzFCOEVDRkQ1MkIyNDAw
-QzJDRTFCREYwOTU4QzRGQ0U4M0VBQzRCNzU3RApDREUxRjVDRjQ0NTVGQ0IyNzI1OUUzQUEx
-MDJFNENBNjQyMTIyRDVEQjIzN0JFOTE1RTYwNjg1MEQ0N0NENzdBQjA3QkU3QjY3NkRDODYK
-QjVFMENFMUZGRkIxNzdFMkE4NDAyM0Y3ODQ1QjVCNTcwMjI3NDMzNjM4REExNzNDMDg2NzMw
-QzJDNjQ3MDk2NDczQzIyREU3QTQ3RjFDCkMzM0UwMDQzNDk0NkFEOTg0N0E1NUE2RDU0Mjk1
-QkE2QjJGODBFODBBMDU1QTAyQThFODBEMjg2ODVGRkEwQjc2NjQzMDUzMUFFNzlENQpCQ0Ew
-QzY5OTYyNDUwMkI0M0EzRUExMEQ4RTNGRTYzQUZGRDc1MTgyOEZFRTY5QzA3NjlCRDMzMUZG
-MkY0MzY3RkM0RjhBRUIyQzA2QjgKN0NBM0QyNTFEQkM2RTgxRjcxNTk4NjI4NDU3MTIyNDhG
-Qjg2QTBGNzNCNzY3RUE4Nzg0RUVERkI1MzhFNDEzMzRBOEY0MjgwQjY0RTM0CjlDMjI2MEIx
-OTE3NjU3NjUxREVFMTBCNzhDNjBFOTQxQUM1Njk5MkJENjFCODQyMDBFOTQyRjM0MUMzN0M3
-RDczRDlGMkFGRUU4NDVBMQpBOEVDQURGNkJGM0RENzdEMTc1MTdBQTk5RkQ5QTBDODdFNzM1
-Rjk5OEMyQjA1NzE2NzQ2MTU5RUZCNDM5QjYxOUM3QUFCMDJDNjA3RTIKOTExQTIwM0ZBMzZD
-MTVCM0VDRUNDNkM3MjAzN0Q0OUYxNUU1NTBGREJBNURFNkE3QkFBNzFBRjgzNDU5RUQyMEEz
-MzEwMzdGMEUyNUQ3CjE3N0NEMTZCNENCNTcyQzIyNTc3MDBGMTUwRjAzRkU5RUI0NEU5Qzg0
-MEVBODFCQzFEOUI5RTZGQUNGNkQwNUMwMUMxNzA5RTVENzhGMgpCRkJFQkJDRTA4QzVFMzIw
-NjdDREM3MUZENTAwNDJGRjI1NEJGNjJFNUUzOTIzQjY2QUNCQUM0M0RFQjY1NDFFRjk4RTFD
-RDlCMTIyREYKQzM3MUNDQjk3MEMzNDUwMDY4NDc4ODBEQzY4MTRDQ0VDNUI1OTU1QjYzNzg2
-QjRFQTIyNUNBODFDNUExOTQ4N0M1MThDOEZEOTg1NjhGCjEzQjc5RURFQjQ2NUNDMkIwRkZC
-RjUzNzlDNEEyQzBGQ0ZCMDE4OTk1MTA3MjI0REQ0Mzc1NEU1NUY3MDE3RTk3M0Y0RERGQzJB
-MTREMAo5N0M4QzVEQkQ5MkE1RDE2MUMyNUI2NDg4RDUzRTUyQzRFREFEODkyMDNCMEEyQjUw
-NDhENTVFRTlFNTc3RkE3NUU0NkU3NjQ4QjU0MzAKMDk1MjNCRTZENjY2MDNGN0EyRTMxN0ZB
-N0FDNDRFNDUzNDJBOTc3RTc2RDUzODRCNjc2M0ZFMjE4NjM4M0YxMDcxMUYzNkU1QUFCODAx
-CjExQjAyNjk5MDg1QzMyMjJGNjYyMkMyMDFCMUMxRjk3NTcyMUNFRTg2NDE5RTlERjM2NUYx
-NjAzNjQxREY3QTU5MDVCRUEwQzU0RDNBMQo4QkRDRTBDODkyQzhDRUFBRDFGNkFFMEU3MjdC
-NzkyQUFFREIzMDM5MENENEMxN0QwNzJCODI4NTlDMEI2RTY1NzRFOEYyQjRGNEFFMDMKRENG
-RDI3OEI5MERFRDc2NEMwRTZGMjYyQ0NGQUQ3MjU3QzdEMkUyNzMzRDBFOUJFQzNDNkRGMEJG
-Nzc5QjUxNkU0MTUwNkJDMDg0OTI4CjM3MjRDODc2NjgyQzFDNkYzNjM0MEFFODA3MkFGREIx
-RjcxMEMyODEwRTgwOEM4RTc4OURDMzk2MjE3NDk3OEUwMjBEQkMxQTE2RjEyOQpBRTExMEU3
-QzcwMTYwMUQxMjA3MDJCMEFFQTk4RkUzQjlFQTI4Q0QxNzVCOUU0NDU5MjBCQUYzMkJDQkIx
-MzY1MkJCMzNCNjIxNDc4NTkKNzY1Q0QxNUI1MUE2M0ZFRTYxRkY5MkY0NThBQzI4ODQ5QkFC
-Nzc1RkQ0MjEyMzY1OEYzMUY2REMwRjg5NkYyRTM3Q0IwQkQzMTBCMDk4CkU3QjFBNkY0NzNE
-MDYyNEUzRDhFQjdCQjkxRTAwQkQxNjRBMDg4RUFDMjA3RjBBREUxRDkxNTBENTQ2RTAwRjND
-RDAzOEQ3OTJGNDJEMQo5NjI1QTE0RDMwRThCOTcyQjI2MzQzM0JDRUQxOTVFOEZFNEYyMDBD
-NjcyQTFGMTY3Rjk2OUIyRTA2N0UzMkI3RDY5NzY1ODIzNjIwRDMKRTY4ODk0QkQwM0MzRDVF
-NjE0RkFFOUIxNzNDMjFBOTQ2NDUzNDI4QjIyQzAwOUUwQkQ0QUQ2OUQ5NEJDRTc2MzAzNzc1
-RkFGNzRDMTUxCkE2RDBDNUEzRjg3MDNDRDVCREZDQTJBNDY5QkY2QTQyQThGQTg2NzgzOTBC
-OUJENTE2Qzc2QzJENkYzNThDMEEyOEJFQkY5NzFGNEM0RAoxRDgxQ0QxNUQ5MTNDNEUzQzFG
-OTM0ODQ3MDgxQkIxODk3Q0ExOURBRjg3QjlENUVDNzJBN0MyNkI2NTU2MzUxNERDMTYyQ0Mx
-MjkwODgKMENGNEZDMEMxMTVDRjI3NjgwNzVDQTA3QjA0MzQwRjIyOEU4NjJBNDBGMzVBQUQ0
-NDg0QjEwOUZFRTUwRTI2NjU1QThDNjk5MjA1RDcwCkMyQkU0RDIzNjhFM0Y3RjkyN0Y2NERB
-MTQwRjk3OUIyOTlCNTBEQjFCOTIyNEU2NzUwQTdEMUFBOTA5QTQ5MjFBQ0JFMUY0N0M4QjZC
-NwowQ0Q0NkVDOThDOUJENTZDMzVEM0ZCNjFBRTlCQ0QzQ0NDMzkxNDFDOTI3ODZCOEM3Q0E2
-MUUwNkI4OEI5QTE3NDJFRjZENUNENDE3RjQKMjgyRjIyMDIxMkQzMEVGOTdEQ0NCNzBDQjEx
-NTNFODkxMjEzMUM5RTJFODlCNDkwQkE5OTY3Q0VEQTA4OUFBN0Q3RTI5MjVDNDAwNUFECjU2
-MjRBMjk0RTYzRjU0MjM1RjU3OTQ4OEE3MDVEMEQxM0JDRDY2ODI2MzEyMkNDNTkxRDI0MTdD
-RUUxQjFDMjIwQkY0QkU0NTcyMkYzQwo0ODkxODU4RENEQ0Q4OEI2N0FBOUU2OUQwNDVGMjU4
-NDFDMEQ4QTRBOERFNTA3OEEyMjA4ODQyNUE2MDI3QTlGRDEwNjNGMjI0MzYwMEIKQUFCMzQ3
-OTgzMzIyMEQzOEYzNjVDOTVFQUQyQjhFMzdFNjc4NEVBMjlBNEQ1NEM0NDQ1QzUyRjM5MzlC
-MUE2MUYwNUZDOUU1REE4RkMwCjg0QjlCNUZGN0FDNzZCMDdFQkRGQTZFQUQ1RTcwMjEwQ0Y3
-OTU3NjhFQTY0MDhERjRFN0VFRkE1RkJFRUIzRkZGMDM1N0Y2MUVBNjA2MQowNjYxOUMxNEVD
-NkU0RUEzNDdBQzZGOTZGM0M4NTI0NTk5NjVDRDI5MzI4QzNGQzE2NEY1NzBBNjQ2RDUxNEEx
-RkJEOUMyRTA4QTRDNDEKQTA1MzlDOEQ1QzA4NDlBMUM2MTczRTREQzlCMkIwMzlGN0I1QUFG
-QjQ2QTk4QTdBOTQzMUQ3MDM4OEQwNkFCOTBCNThCQkFFQzg2RTc1CjE3RjI1Qzc2NzRBNjMz
-MzI0RTFDREJCQTQ4MjdBNzc1QkQ2Q0ExQTlBOEFDMjRBNTFFNkZEMTYzQ0MwQjQ3QTAwQUQx
-MUVCMDVCM0FGNApGOUY5NzFGMDRGNDg2NUVBQkZGOUVGNTk5REIzOTgyQzYyRkI5MTkxNTkx
-NkQ4N0U0MDQ1ODU1MkVERkQwMEExMEZEQzc1Rjg2OTM4QUQKRTM4RUNFQjgyQ0JGMjk0NEFC
-QTlFOTlCRUI5ODU2RDU4QkVDOUYxRTBGNTJDNjRCQzJCN0IxOUQ5QjI5OTlEMTZDQUUwMkU1
-RDEyRkJBCjYyQjlBQkRDRjk1QzY2NEZCNDU1MEU4OTBBRjczMkU3RUYyNzhBREI5QTk0NUVB
-QjE2N0ZERUU1Mjk5Mzk4Njk0OTU1MTE1OUIzRkJEQwpFODc2M0U4Nzk1OTg5Q0Y0NkRDRTdE
-NTNGOUNEQzcxM0I3OURENzVGMzhEMjY4MTNBNkIzMUZFMEU0ODc3NzQwMUY2RkQ4NkRBNURD
-MTgKM0Y5NjI1REQzMEVDNzUyODJCODMxQ0MxNTFGNEE5MDQyNkJEQzQzRUYyQ0VBMzc0Njgz
-NjM1MTlDQkMxMEVFREU3NDUzRjdGQUNBMTJDCjBGOTI3Qjc4OTIyQTgxQzNFNzgyMTJEODlB
-RUE1MDA2Qzc4OTQyNUEwMUEwRjM4MkVCMzVFNjFBMTU4NDZBN0M5MzRBQTFGMTY0RDQ0RApF
-ODA0MTg3NDBDQ0E5MzY0QTlDQjk2Q0QwMUJGQzkxQzRCQjM1RjBGODU0MjM1RTk4RThERkVB
-RTdEREQ3QUJDRDE4QUI4NEU3OEMwMEQKRDM5QTRGNTNCNTJCMTRFNTcwRDlFNTM3NzMyOEY0
-M0JERDgyOTM2RTU5OTJBNzQ1MTIzQjQyRkZFQkJCQ0YxOTY3NDRGMTkzRjU3QTQwCjM4QjVB
-RjNENUIxNzY5QzEwRUI5NDdCNEMyRDZGQUM1NzhBQkUyQzRFNjgyRjYzOTcxRUY1MzQ2QzYy
-REVGRTE4NERGRkMwMzlDMjMzRApBQTk3N0NFMzIyNERDOUU5ODlFNDlGRkNDQzczQkFEQUU4
-NUIyQTlCRkRBNEY4NDgwMDkyMzdBQkM0ODE5OTNGRDdDMzU4QUFFQjYyRTUKMjY4NUM0NTk3
-QzlCRERDNTVDNkNFRUExQjQ0QTJCQzBBMjcwNjFEMDhCNEVGRDhCOTc2NjRDRjJGQjI1MUI5
-NEQ0OTAwRjEzNUE5NTJDCjQ2RjVGQTEzQTMwRjZBQTVDMTE1MEExODY2NzhCNjEwNTI2Qzc2
-NDA1NEREQ0I1RkZBQUIwQjMxQTkyQjhCRTFBQzYwRjU4MjlBOTI3RgowMDZGNjE5RDEwQjU5
-RjU5RjEzN0ZBNjBEMDFFRDZFRTcxRTY1NDRFQTdDRjhDOEY4MTA3NTc2N0Y3Rjg4RDdBMjQw
-MkVBMzNGOERGMjAKOUE4MzQ1Nzc2Q0RGQUQzMzE1RkFGQ0Y5NEE5Nzc2QkIzNDY5NzI2MkQz
-ODU2QjhGNzJFMjM4RTgzMzFGMkNENEVCRkEyQ0QwQzJGNjMzCkQ2N0NGRTAxMkUzMkY3RTFG
-MTk5OTgzRURBRjM5NDE4OUU3MkQ2Mzk4RjQ4Qjg5ODg2NjhGQkUwQjZCMUYzMDdBOUQxMjdB
-QjY0MDc2Nwo2OUY3ODU2RjI4QjhGOTc5MDkzQjc1MkE3NTNBRkI1RTUzNzFDNjYxOTJEODg0
-RkZGMDBBOTdCMzBGRUQ5OTFBNDZCQjdGOTgyQjc4NTgKNjhCRkNDRTc1OTNENDMyODYxQzU1
-QUE2QzQ4QTJFREE4RkFGNEY5RDIzRkVCNUZEMUY0NzdBRTUzMjIzN0EzNzJENDI1NjY0OTcw
-QkQ2CjY3MDgwNzc1RUI5QTNEMDgwQjEwNTkzQ0JDMjcxRkE5RDhDOTVGOUE3Qzg5REFBNTRG
-NzgxNUY3QzcxMjZGNjQwQ0Q3NzNFNzAyMDM3QgoyRkNGQ0ZGOEJFOUM2QUVCQkVGOTVBNTA3
-OTBEMjVEMUIyODlGMjVCNDNCOTU5RTlDMkY5NEYyQkI2NjM4MkYyOTlGRjVFODhBQzAwM0YK
-MkEwNDA5NUFFODA4QTZGQzgxMkMzRjQ4OEI1NzgzREFDQjU4QUJDMTVGODFCODQyMEMzN0I3
-Nzk3RkY1NTFCMTBEQUMwM0ZDMTk1MEIxCjczNEY3NTNBNzIyRTlFQkFBRTVGQzYxNDBEODAw
-RDFFMzY1NUQ4OUI4OTcyNkJCODEwMEMwMEU1N0ZCODVEMjI5RTY0RUVGNTBDRTAxMAoxNjk5
-RTcyMUI5NENGQjQyRjNDQ0RERkU4NzZCMTBCNDlBN0EzOEZFNjlGODU1MkQ2MzFERTZDRkE5
-RjBDQ0UzMTQ0QUVENkFEMDAyMTQKMzZFQ0Q5MDQ0QTNERjJCOTk0NEJFNDkxQzNGMzI4MkMz
-OEFEMzgzOUJFRUM5NDg1QjMwNTgyQzlEOEMyMDk4NkE5RDJERUJBNzYwQjE0CjZENTQxODQx
-RDQyRkE5RjQ2QzMyOUM1Njc5QzMxQkIzMkY4OUI3RTRGQjgxN0EwMkIxQ0RDN0VDRUVFQjg0
-ODE4QjYwNTQwREJDQ0MwRgozMTQ0QzY3MzMyMEUzRERCRTZFMzFGMTY3NzQ3OUI3NUMxODk2
-OEI3NjZDOTI0NDYxNDgyQjM1NzU0REREQjlFNDNDODFEMjI2QzkxREQKRTIxNzY4QTU0Q0Y2
-NEZFMjk5ODAzMTdDNjg2NEZBREEyMjhEMkE5NzIxNTJFRDE0MTJGOTQ5OENFNjBCN0MzQjUw
-Qjk4OTBBRUQ3MjNDCjc5NTkzNDQwOUM1RUIyQzcyN0E4ODcyQzZBMERBODIwQ0NCQjUwNkNG
-MEQ3OEFGQUQ2NEMwNjg5MUE4QjU3MDczMkFGMTJGNjBENDU2RQoxNzg3MUU1RTNFQ0RENkIz
-Q0JEOEY4NjIzNEMzOEU0RkQwMENEMzk0NTc0MTlBMTY5RTU5RUY0RUU2MjVERDQwNzQ4QkFF
-NDdDREMzOUEKOUJBQUY0QjY1RkM2QzU1MTFEOTA2MURBMzUyRTk4MTg4MEY2MzQwRDZCNkEy
-MEI4Mzk3NTQ2NjNEMjZGNkY1M0VGQ0Q2RUE2RUM5NjNFCjU4MUU0MjMzMUIyMzY0MDlGMkY5
-OEM0MzQ0NUJBMEQ3RDBFQUE1MjE1MDYzNkFGNzM1QkZCNkM0NzVDOTA0RkQ0NzU0MDM0RUQ1
-OEUxQgpCNERGQUM4MjRCMzY2OUQzQUM0NzNCRDgzM0IzQ0U4ODkzMjM5ODdCRjFFQjNDQTFB
-MDg3MkVENTM4ODQ2MEYzNjBGRTlEMTQwMEZDOEYKMTA4MzM5NDZGNjg4MzI5NzhCMEY3NUNC
-MTRFOUZGNzVFN0M1Qjk0NjQ1MTJCRkQ1RDVDNEJEREQ3NTMwRkFFMEIzOTc5NDhGRDU3MjFB
-CjBEN0IzOEZENUI2N0NBRTE2NkVBMkREQ0RGQTFBQkY0RjhFMTE5NTkxM0QyMjJBQzNBN0NE
-NUJBOUMwNzMwNEZDNDc3RkQ5MUZEMzVDQgpDNzg0ODI2QUZFRDVEODBBQjdDOTY4MDM2RTg2
-ODkzMDUwOEY0RjFDNkQ3NDg4MDk0Qjc4OTkwQkE0Qjc5Mzg0QzRFNTVFMDlGQkQyOEUKQ0FE
-Nzc2NERGNDA0QTE4MzJCMjQzRUZGOEIwRjM0NEY0NkEzRDc3MkU2RjA1MDdBNTBDRjEyMEM3
-NERENjY3NERFNEE3MjUzMUEzM0U2CjI4QTVCMUFDMDc5QUU3QTQxRDYyQzcyM0Q5MEI3QTNF
-OTk5NDg2Q0RDRTJCNjRCQ0FGNzQ0M0JDQzM3QTk0NDVDMUI0NjgxQkQyNkREQgpDNDUxNjU4
-QTE5ODFCMzI3RERGMDBFM0M5QUMzNDczNTYwNTU5NTQ2NjQ3MkMzNDYzNjc0OUM0MzY3NzNC
-QUExNTVFNTFBQ0U1N0EyOTQKNjI4MTJEMkY2RTM5NkY1N0U4QTZDRjVBNzM5MzA4RkQ0NzhD
-Njk1MjhEODZCM0NDMTQ0Mjc2MTUzMUQ2QkIxRkY0OEE1MTNEQUExQkVCCjYxN0E0MThBRjY5
-Njk4OEUyOTUzOEQ5RUYwREQ4RTE2NTg4RDkxNTdFNjE5QUUxMjI2RjRDMkYzNzE0NkRDNkE0
-OTY4NUM0OTI1NzhGMwpFRUQ3QjhERUUyRkNFMDM0NjBBRERCOTFDMzdGN0EyOUUyRDMyNzYx
-OTg3NDBCNzNDOTMxNjFBNzVGRTBEODNGMDJFQ0JGMUI1QUVEOTMKMDg2REEwNTQ1RUYxMDAw
-MDcwNjMwNUQyOTExRUUzOUFEQUNFQ0JFMDZDMUI1RkU5NDFFQThCQ0M2QzJCNkU5NDg1Njc0
-RTdEQkNFRjNBCjY1RThGQjU5RTI1QzI5MUFFQzMxNThBRTlEN0MyRkE2NjEyMjRCMkNGQjg3
-OTcwQTg0NTM4RjAzNzBFRDZERTRBQzQzQkUyM0Y5MTRBNApENjdGQzcxQUQyN0FERDM4NENF
-OTA5OUM2NUFEODk5ODA3MzVCMDQ2QzlGMzdDREIyOUJBNUJGQzM1MzBDQjE2NThERkVBOTRE
-NzAzNjAKRjYzNzgxRDg3RjQ1MDE4NzU2NDczNDI3OTFFQTYwOUZEMUNBQzhBMzM4QkMyNUQy
-OTZBODBGNEJFMEEyNEE4NDdBQkU3MDhCRDhCN0VECjE1MEMzRTA3MUJGMEY4NDY5QTk5NDA3
-MkRDRkMxNkJCQTkwRkIyNEE3MUNFOEU3Rjc2RUNFOTVEQUE1QkYzRTc4RDBBRkMyMjQzNTc1
-MwpCOTRFQTM5MENEOTVDMTlCRTZDNzM5RkNCMzdGNzA1MUE4Nzk5MTU1MDdGNkY0Q0E4NUNC
-OUM1QzlCMURFNkVEQzFBNTlEMDQ2M0VDMDkKRUJEQUFDMkU1OTY5NjU4MTExMDA0NzExQzJD
-Mzc2OTYwOUJFMzVGODQ2MUJBMzBCRDdFNjgzMjE1MDVBMTRCMzBFMEJFNTRCMjlEREE2CjRB
-Q0QxRDE4NkU1N0YxNkExNUExMjExRUFEMENDMzE3QjhCNzcwNTA2MEUxODE0MDM1OEY5NTBC
-MDUwQTIzMkUyRTI0RkRERjc0RjkwRApGMUQyODhGMzE3MUEzODM1MUExNDFERjMwNUIzRkQz
-MkY1QTQ3QzI1MzM3QzI1MjE0MEQzRDUyOTcwMEEzOTFGNTE3NjEzNEY2RTQ3NTIKNzQ1MkY3
-NkUxNkI5RDUwMjVBMEQ5QzRCQzBBODg3M0E5RDhCQTRBQTBFMzIzRTFFNjM1RUU3MTVFMDlF
-Mzc4MkE2NEIxQjU3OEM0RkIwCjQ4OUQ1OTQ1NThBOURGREVDNDc5QTk4OThCM0QyMDAyRUY2
-QTNGMEFBQ0VGQjRGNENEODI2MTE3MkMyN0QxNUQzQzhBNkQ4QkJGODU1MApCNUE3MjY3MkE1
-MTNGMzQwNDkyNTM2QTFDNTdFQkExRTU2MTM4QTZFQjFGQzEzOEJBQTFERUUxNEQ4MzM0QkEy
-RDgzNjhFMUIxQkFFREQKRjQ0MTM0OTA3MjNFMjQ5MzM2NTlBMkMyQUE3NjkxOEIzNDdBRENF
-QTJEQTc3M0Y0QTkwMzk5QjBEMTJFNkQ5Njk3Q0NBOTc0M0QyQjlCCkIyRTM0Nzg0MUFGMkZG
-RDNCMkVDQjJGNTJDNkU4NEUyNDlBOTgxNjQ5NDAwOTNDNkIwRjdGM0VEQzEyRkRCMEUyODQ1
-ODMyMUVBNTM5RQpENTNBQzVBOEE2NTgxRDEzODk5NjY2RTM4N0Y0NTYxMUU2REY2RkI2QTkx
-MkRGMzQ4MzdDRDAyQTdDQkQ0NDlEQjZENzZBRThFMEI5RDYKNjc0QTc4RUQ4MzFDQzUyQjUw
-MTc4M0ZGNjFCM0Q2MDEyQzdGRDA5MUY3OEJFNTY4QTJEOUNFNEYzMEZDNkI1NzYyMjk1RENC
-REExRjUzCjU0NTY5RjM4MTM4NjE4NzE4NkVFRkE1OEU1ODNEOTQ3NkE0QzJDRURDNkI5NTIz
-MTVCQzNBQUE2NkFDNEEwRkYzNERDNDYyNjhDNUI0Nwo3Rjk4RjE3MEI1Q0E0Q0U5MTg4RkI1
-QTdERTlCNkM3MDZGMEUxMzY5M0VERDA2QjM1OUVGOEI3MUM5Q0Q5M0E1NURGRDlFOUZGQkRF
-NDMKQTg5OTJFNjFFODAzNzg2NTMxOEMyNjg1OEZENTc3MDk2NzMwMzM0QkY2NEQxNjBGQkFC
-NEI0QTVEMEUxMjZFMUY3NEY4NjZENUI4NERCCjNFRDAyODNDQzQ3MUVENzQyMEQ1QzcwMjk0
-MTcyNTZDMzlBM0RBQTYyODJBODdDNDJFQUY4NUVERUQ5MkQ5RDJDNjhCNzUwOEY5QjQwMQo2
-QzFDNTI1NzZGMjBBRUJGMTdENEZBQzVEMkMyNkMzMEU0RjBCMERDRjgyOTE0QTI5NEIwMUE3
-MTFBMDY3MDI5NDZBOTA4NzZBRkQ1MTEKRTREQThCMUUyREJENjI3N0Y0MkJDNzdENkU1MURD
-RjVGNjgyMjE0RDc3QkREQTM2NjMyRDcwMjRFMDVEMDFBODAzMzZDM0JCQTVEMUVFCjY2NjhD
-RTE2QUM4QkMxMUFDNTA3NTM3NjU5MEVDOTk4MThBQTc0OTU4QjgxODI0N0VENzMxM0IzRDA3
-RDBENUQ4QzMwMzQ4M0YwRjBCNwo1QjQ2MjQ2RjYyQUVFQzdEQzAwRENFMDdGNUM0NjU5QjE4
-QkYwRDE1NzczNjU3NTAyMjUyNEI3MTg4RjhCRjVCNUY0NjE1RTUwN0M5QzYKODYwNTU3MURG
-ODFBMDA3MTVCRjNENEY5QUI2QkM1Q0NGQ0MxMDQ5NkZEN0VBRTgwRDY1RkM5N0E5QTVBMUI4
-MkQ4NUJCREVFQ0ExRTk0CjBFRDM5QTQ5QzVDRDMyNjNGRjA1MTQ1NkNDNzg1NjYzNDM3RDU2
-REY2RkIxNTM5QzQ2QzM1MUZDMEZFRDRGNkMzQjUzRTFENjAxMEY5MQoyQjkyNURGNkUyQTI1
-QTdGREZFQjhCQjZGN0ZDMjgzOTQ2N0VCMTU2NjhCMjE5NURFMjA4M0IxN0NGQjlBNkIxODIy
-ODMzREI3QkUzQTIKREI2QTk3REVCNDg4MTNDMTNENEJCMkQyNTc0NTlGQTcxQTY3RDFDQTU2
-NzJGMDEyMTFFRjlBQkIwQzE2RjM3ODQxOEYyMEM3N0Y1Rjc2CjJGQTU2QjBGODREQTc5RUJE
-RjcyOENEQjcyMjc3Q0ZCNDQ5Mzg3OTlDRjMwN0U2QURGQThBQTU2NDUzMDcxNkQ1Q0E4Njc3
-Qzg3MTBFQwo4NDZDNkU4N0U2M0JDOTYyRDU5MTE3QjY2MUQxRUIyQjE2QjhFMTM0ODREQzFD
-N0U2REYyM0IyMUM2QUM0QzY5QkY2MUM0MUFDRjU5M0YKRDM2QTkxMTk5NjlGNTA3NUE1RDQy
-OEJEQjQ2NjIwQ0I5QjNCRDE2RUQ0OEUzRTc4QzhBOTAwRkNEOTc4REYyMEQxNkUyRjg5NUIx
-NDlBCjUzRkU3QUUxQTE0QjA5MDFCQTNBOUMyRkVBMDAyRkFFM0REMjVCQTBDMUMxOTE4RkNG
-MUM4NTc1MUM0Nzc4QjhENEZGNzFGRDQyNzVFRAo5QzNFNzExRkExMkQ1MDNCMEMwNTQ2OUFF
-MkYwRjgyRTlENkY3RTFDRjBBRDVCRTFCQTM5ODVDQjU4ODUyNEFFNzcxQUQ5NDJBNkMyQkQK
-OEJCRjA4RTlDNzdFQTRCREQ1NDgyMEJEOEEwRkNCMzVBNUM5M0MwRTFBM0JCNTA3RTAwM0RC
-NTk0MUI3OTUwOTQwQkJBMzIzRTQ1RkRCCjMyMjU4NUQ0NzkyQjVCRkE5N0JFRUMxMzhENENB
-NTZGQTMwMjJEM0FEOTlFMzBGODA1NTdEOUI1MzE3NDdFOUY0NDI5QkE5ODA5Q0IzMApEMjAw
-MDVCQzI0RTNBMzQ4ODE3ODUyNjQ2NEU4QTk1MEM3RDA0Qzc4NzIyNUZCNkRGNTFDM0EzODIy
-OUMzM0ZFNTI4NDhGNERERDk2NjUKN0I2MUZGOUUwNjkwRUE2QkI5NjNGODc5RDE3MEYyRUZE
-NTkyRDEyNzMxODkwQkFDOUFEMkZFQTQwN0IxNjFERjE5RUIzMEQ2QjgzM0MyCjdBQ0JDRTU1
-RkEwNTU2RTJGOTkxNTY0QzE1QUNBRTIzNjQ3QzU3QkYxODg1QzFGRDBBODBDMUE5RUYwNDRB
-RjFGNkM2QzIwQjNCQjVDMwowQjk0QzM4RjcxODY5NkMxMjdGM0QwQkJGRUI2NEY2RDJDREQ4
-MjYyMDY0MEQ3RTFBN0JDOTU0RDk3RDE5QjFCQUQ3QjZFQTg5NjVFNzcKRUY1NEI4MDYzMkI5
-Q0Q5RjhCQjYwMjhEQUVFNDBENTk2NTI5OTQwN0EwMUUwOUNDQTExQ0M4MzBCNjYxMzVGODBE
-NUNGRTZCQjRDQjNBCjZDOEZEQzMwOUVBQTk0MEIxNDAxQzI2OEM2MzVBRjcxNjdCOUNDQ0Yz
-RTdCRUJBODlGNzNCNzIxMDAwRjhCMEVDMTlCMEY1NzJBNUI2QgoyNjJDOEZEODYyREUxMEJG
-OTI4NTRGRTcwNUE1QzU5MTFBRDZEMDFFODNCOUYxNUEwQjdGNDExRkEzN0RGRDY0NjA4RDA2
-MTFGQTc1RkEKMzU1NzM3RjBBNUYxQTI3MzZEMDcxQUZCQTMxQTJBQzJGNDFGODc0OEE5QUMx
-RDYxQUE2NDNGRjEwREY5QzdGMDMxMEI4NjFGNzRCNTA0CkM1MzczOUJGNDU0QzBCRkFCMDc1
-NTJCODU4NzlEQkZFNENEMzY3QjNFOTZBREUwQzM2MDRBNEFDNDRCQTQ0MDA1NUQ1NzJGMDZF
-ODZFNAozNzVFODhBNDdEQ0UzOTFFRjhERTBDNzMwRDM0MEFBQTJCQjJBNDg2NTE3RDdBMzBG
-RUY4RTQ5QjcwMDk0Mjg0RkIyMDA3OUJFM0M4RDUKMDQ5RjBCNjMxQjc2RDJERjk4NjUyMDA2
-M0UwQkM2QUM5NERCQkNERUY3OUFDREZCMDIyQ0I1NzVDNTdBRjhGNEFDQTUyRkQwMEYwOEEy
-CkJFQkRERDVDN0NFNUYwMTIxRjI4NjFCOTVDNDE2RjgyQkUwNjc3OEQxNDI3NUQ0QTQ4NjY2
-NUE2MzlERTFCRTg3MURDN0UyRjhGMERGQQozNDBERUJFMDNGOUMzMzYyMkIwQkU2N0RDRDg4
-NzYwQ0YxNTczMjUyN0IyOTEyMEJBRkYwOURBQTA5REE0NUUzMkRFNkI4QTIzMzlEMzUKMEM5
-NERBQTQ3RDBDNzQ5QzI1MENFN0NCMjExQkIzOTBDNTIxNDA0RTY4RjhGRkYxMEQ4Q0MyRUMy
-OTNBMTMyMkEzQTZGM0UzODE4RDBCCjI0OEE5MEQzODYxMjA2MTMyOERFNzRBM0QyMkQwQkU0
-Njc5NzRCQjdEM0ZCOUExOTM3QUMwOEEwOTU1REUyNzg3NjIzNkFCM0ZCNzgwQwpDQ0NCQjA0
-MTlDODE5ODJERTY1QURDRUVFRjcyMzBDRDQ0MkM0QzRBOUMwOTNBQUUzNUEwMjc5N0ZEOTZB
-QzQ5Qzg2OTRGQzcyRDBDODgKMTQyMDExMkMyNkZERUJFRTdBMzA1QUMzNkQwNjU4RjAxRTFE
-OEU2ODU0NzlBQTg5MjRGM0ZFNTA4ODY0MkMwMjY1OENFNjk2ODk0REU2CjAwNENGODFDRjYy
-OUM5REJERDQzRUE0NERCQzc1ODkzNTgzOENFMDlCQjFGOTEyNTBERTIxRjNCMUFENTVGM0JE
-QzhFNkM5NTI3MURDQgo3ODExRUZGRUJFOUNGMzM4MjE3Njg2OUIzQTYxOEUzQjdCQkFBNzIx
-NThCNkFDNTc0OTExOEREQ0YwMzBBRjAwRTc0NjI0RjE3RDQyMkEKOTY5Q0VGQkYxMjdCQ0E5
-QTMxOThDMkJDQTBDOENDQTg2NkE4MDkxNzJFOTBFNDY0NzMzQzlBMjcwQjFDM0QyREZDQTdG
-RUM1OENENzUzCjlEMDc3QkQ3NDRCOTRDOTU1NDQ1M0JBOUQxQkY5RTZBQUE3MDA1ODQ2RkQ0
-QjU1Q0YxNUQ2MEMwNkMzRjI0NDU3NThGMjhCRDMzNUUyMwo1NTU2QjVDMDFBMzhBNzMwNjA3
-QzM1MTc2OThCNjNBRjY5MjQwNzRDRTQ5RjI5MERGNzNDRjQyOUU2REYyRkFFMzdBMkNCQzI2
-MjRGOUEKNkQwOTI3QzlENDUwQkRCODFDMzUyRkJFMUQzMTg3MUU3REREQkExMzU4NTMyRkUy
-NTMzNzFDOEQyRDhCRjhDNENBODYzNjc2RDE1RTU3CkM1MzIxMzY4RkU0RTcwNDI5MzdFQzU1
-MTM4QzRBOEMyN0E2RUEyNjJDRDBEOTFDMEQyQzY4NUMwQTA2NkMyMUVDMDIwOUUzOTFBNUUy
-RAo0OUUyQzQ4RkM1M0VFNEJCRUNGRjA0QTdGODc2NjY4MTgzN0E4NTIzOEVGNEI1QTk2OTJG
-Mjg4MzBDQzU5RDcwQjVGREEwM0Y0MkUwQUMKNThBOTU1RDE4RDM1OTYzMzNDODE2RjU5RDlF
-MTQ1MDk1QTgzNjE3MDIxQjQ3MDU3ODg1MDg2QTAzNDhCNTczNzY2Q0U4M0E4Mjc1QzIzCjZE
-MEZENjZGOTQ1QzM2NDhBMTU0QzIzQUZCQUFBNjZGQURBRjFGOEZFMTE5MjFFNDkxNzU1OEQw
-MDFGMjZGOTg0RUZBNzVBMzdGQ0RGRgpDRkUzOEJDM0E1ODdENDlGREQwMTI2NTNFQzk3OUU2
-NUI4QTUyRTQ2MTc3MkE2RjBDNTBDRDlFMTk0OEZCRkVFQjlGM0IyMTdCNEZGN0MKRTVGMkM4
-NkYwMTFCOENGRkEwMjc0OTlFNUUyREE5NkQyQzFDODNFNTE3QjVCNkVEMTkyNTI1OUU5N0ZD
-REJDQ0YxRDg0RDBBNjNCNEY4CjA2QjNFRUJFQ0JGNkIyNUM1MkY3OEI4MUFEOTQ4MTQyNjY5
-OTkwRTgwMDQ3QUREQTNDQjBCOTEyNUYxRkM5OUYxNDE1ODFFMEY5OEZGRQo5MTAwNkU4Mzg2
-NkFDRUU5QkQ0OEM1RDc5RDg0NzZCRkU2NzBFQTlBNjBCNDcxM0Q4RkVBOUExQTc1REJCQjND
-MzZDNjlFMkU5RUU1OTgKMzM0NThGQjk4N0RFNUUwMDczM0M5NTRENjEwREEzQzUwNEE2NzhE
-QkYyNDhFMDYxRkQ4M0RFNTA3RDQ0QkFEOTBEOEE0REQ1RDlEOTJECkIwQzYwQUUyQTcwNkY3
-RUY2RkE0RDE3RTFFRTFGNDdBRDVBMzk5RDVENTNEQkZCQzY1MTU0NEVFRDlFMzk2OTI3NDlF
-QzlEMDk2QjdDNQpFNDYxQjhBQUYwMzlGNjYzQjA5MkI0RDJFN0EzNkMxMkEzOUE0MTlDQTZG
-M0VGN0Y0RDFEMkFBMTM4N0I3MDEwMzBBRTk0RUQ4Mjg4QzMKQkJBM0Q0NTE0ODg2QkVDNDZC
-RDhBMjUyOTJBOTE5RTk4OTNFNzQ4NzUxMkRDREYzQjgyNjlGNkJBQ0I1QkIzOENDRjA4MDFD
-RUE4OTQ0CkYzODIwOUJCRUZFMTc4OUIzMDA2OTI4MDExOUM2N0NDOUJFMEY3N0IxOTM0MDQ2
-NkQyQTJCQTJDNEI3NUYzOEE0RjhBQUE4MzJGMzA2MwpEOTNDNTE0QjdFMUQyMkE2RDYzREE0
-Q0Q3QUVDNDZEQ0NGOThFNzg3QkU5MzI0MENCRjI4RTU2RUI3NTdCM0E4QUI2ODQ4NkVDMTUx
-MzQKMDg2ODBFMEM3NjVERDA2QzYzMzlFODdGODYzMzY1M0E3NTgxQzUyRkU4RDA3OTg2NjRG
-RUU2MTkxRjhDQjVDQkM5MjU4RTMwRkFCMjExCjZBNjM3Mzg5MEJCOTU4ODRERTRCQUVDRDU5
-MDIwM0VDNEQ4NDI4MDA3MTkzQzExMTMwNzBDMzlEQUNFNTg0RjE5MzYzQ0JCRjREQjRFQwpE
-ODcwQkE3ODAwOEIyQkEyRTVEMDEyNEQ2RUUyOEFGQ0FFMDA5N0E4Qzc4MzZERjVGNkIyQUNF
-ODgxOTA1QzU3NjVDNUQ3QzY4RkVEMDAKRDcxQTVDNzEzMzM1OTQ3NzEzRkRENDlFMTE3ODY2
-RjAyQzFBNDU4OEZDMTUxOEVGNkUxQ0Q5NDA2Q0ZBRDZCNUE5RENDNTA1MTRGNUJBCkYxQjUy
-NTlDOTNBOEQ5MTdFQTc2RTM1N0RFRjJCOEQyN0RFNDA4ODY5NTkyMjA4OThENTk3Njk1MjNB
-NzRBNzM5NTU4NDJDMEI0NDYzNAo3QzlBMUYzMzU0NTRBMjNDNzJGMDkyREEyQUM0MDRDREFE
-QTk5Mjg1MzAzOTM4ODA5ODg4MTBFRUY3M0Y4MDA4MDAxMUYxRTZDM0EyN0UKRTI4MDREQTVD
-QjNFMUREMENFQTRENUI0ODRGNjMxRjYzNDc0QkQ5RUZCMjc3QzEyQTFGOTJBMDcxQTUyQzVF
-OTg2RTg3RUU2OUE1NjdCCjQ0RTZFMTI4OEUwM0Q5MDIzQkE3QTIyMjIxNjhENUZBQjhENDcy
-MTFGN0M1MkVFMTBDNURFQUJBQzk4RkQxOTJCNjA5MDczRjQyMjVGQgpEMDM1QUVGREM0QzlD
-NkEwNDJCRDBBNkQxM0FGMjQxMTE3RTlGMjBFOEU3Q0IyQzA2ODUyOEQyMUQwRjg5RTM0MkI4
-OTJBNEE3MkZCMTgKMTk1RDcxNkFEMDI1NzFFMjEzMzczQzYwOEUxMzAzOEQzRkI0NzRDMDYz
-MDk5OTMzOEQ2NUM2MzdGRUNDQzVGMUFGNEVENUY5MTkwODk0CjU4NTk4OUM2OTBBODNDNjNB
-MEVFMDdBQkNGMjIxNTA1NUVENjY1RDU0MjMxMTEyMThGQjkyNEMwQkNDQUU3QkUzRDYzNEM5
-NTEwRDExOApFODdCOEFCM0I3RDkyQjgwNDRGRjE1QjdBMEM4RTFERDhBOTUwRDk0OTU4Q0Qy
-MDgyRTgxMDFBQkE3NDQ3QjAzOENGMzlEMzA5OUE5NTIKN0U3NkIzQ0QxQTU3MzZGNzZCNDRG
-QjE2REU3ODYwNjNDQTUzRDdGNzJDMTczMjZEQTVCMjU3RDczQjZEQjgyRUQyMjRGQkY4Q0Q4
-QUE3CjQyQjJFQTUxMjYwNzJBQjcwNkVENkYwMDhERDdCNTlBMjc0NDEyQkNGNkRBMjhGOUEz
-OTA5RkJGREFFQ0UzRjhCQzMwMkE5NEE2RTM3NgpCREZGOThFMkI5RTVDNDc2QzAxRkNFOTBB
-NEU5MjE3NkVDODhGREUyQTA5MTgwRTBFMUEyMUY1OTc0MTI0ODBCRjE5RjREMDJDRkM4N0QK
-OTUzNDNCREIxNkYxREExNUJBREZBRTk0MUEzMzFDREFERjQyRDU5MUYwQ0I1OUYxMTdEQjJB
-MUJCMjJEN0MyOTk5MzZDQjZERjM3QzQ3CkIzN0Q0NTcwQzUxMjE0MjgwMUU4MTBCRjgyOTc4
-Q0NGQkEzNTc2MUM2NEZCMjM2RDdDQkEzNzU1QUJEQjJGRjVGOTRDRkQ3NEZGMkM1OApFM0I5
-RUIwMkNCREM4RUIzRDFDRjI1RDE0NjBDM0Q4QUMxRkFCNTI0MTBGQkJCQzMyM0QyQzFBOTlC
-NTQ5MDZFN0FEQ0QzMzc0OUYzNDcKNTFCOUNBQ0M5NzI2OUFEN0E4NzlDNjQ2NDg5QTE3OTQ2
-NTdCQTQxMjdGOTRDRjhFMjY2Mjg5OTc5Q0RFN0EzMjI3NzQyRjFGNDk2N0YyCjVBNDlFQkFC
-NUUwQjNGRjRENzhENTU4REM4NkI0NDY1NTNBRkZGNzVCNzU1OTAxNTdFRjRFNEI2NzBENEQ1
-NTA4RUQ3OTBFMzk4ODRCOAo5QTA4ODFDQUYzMjREODQ3NzJCNTNBRTQwODBBQzUyREVFMjlD
-ODUwNkZFNkYzQUZEQzlBREM3RDE3NzVEQzU5QzgzRDA5RDlBRUREOUYKQkM4NDk1NDVEODBC
-MTFGRDE1QTRGREYyQUNCQzQ5NEVFMDAyNTlBQzM3RkU0OTdDNkYzNUE0RUY1MUIyNUM2N0M1
-MjEyQUU1MDQzMEVECjhENkJCNzNGQzg5RTM0RjJFNzYwMjk2MDQ3QUZBQjlCRkU4OUJEMkZB
-QjQ3RTc2MzlGMDRERUJCOTIyMDg1NzhFNkJBMDI1RjE4MDQxMQoxQUU3OTg1OTY2QTVEMkFB
-NzA4NDY0MEZEN0M3Rjk2NTc4MzIxRDc0RTlCNTA4OTAzRTZENUQzQzE2Q0QzRkM5Nzg4RkY0
-ODdCMzE2MzIKNUZFMDQ0QTI2MkNCMTRENEI5NzI1MEE5MzUxMjRGODAyNEQxMzQwRjU4RTZG
-RDZEN0IwNDExRTNBRDE5RTYyNTIyOTA2QkJEQzk0MjhGCkUzMUYwMEUxQTBDRDk2REJFOTNG
-MUVFNzMxMTlBRkU3QzcxRjA1OUE5MEQ5RERCQUZFMDBBNDE3M0UxRkNGNzRCQTk3RkFFMjhF
-QzhFMgo0NUI5NzJBRjEwNkQxRkMwRUQzNTc0RDFDNzEzRTBFOTU1QzQ5MTc3NDVERTE2M0Ux
-MkIzNDVCMDBBODMyRjdGN0I3MENGQ0VCNzZGMUEKODhDMENGMDUwRUM1RDJDOTMzMUJBMEQ4
-NEI5QkI5RDBBQ0U4NUYwMjE1NTNEREIwRUYzNDg1QjA1NjQyMTU4NzI0MTg0NERENjQ2MjNE
-CjMwQzdFQTkxQjU2ODVFNjFENkQ3MTNEMDg2N0Q4RkY5MDRFMjU0RDg5QjNBNkY2RTQ0MjM5
-RThBRkIyMTBDMkE1RDc0MUUwOTc2QkFDNgo1RjA3Q0ZGNjExMTUzRTJERDgzNzBENEU5MjQ0
-NTlGNTcxQ0M5RDhCOUM0QkE1NkMwQkY2QkMxRjZEMjBBQTA0MkNEQjBFREQ2MTcxNDgKMjJB
-N0E1N0YzQjcwMzBBOUQwNTVBOEI2RDVDRUM4RTgzRjQ3MUQ2OTIyNzhFQUExMzhGQzM3MUFE
-OThENzcyRDIxMEIwRjg3NDc5OUNDCjlEN0YyOUMyMzQ5ODk3QjdDNzczNTNEODZDRTREMTdG
-OTcwNTMxQTU3RkRCN0U3NjQyNzAyRDg1M0FCOERBNUY1ODA2OTAyNjJBQzAxOQpCQzI2NzJB
-NTIzOEZFNDNCRDJGRUZGMkQyMzM4RDcxMDI4RUExREExMEE5ODdFNjEwRjBDNTI3RDZDNUU3
-RDA5NjBBQUY1RDhBNzdGRTkKODhCMUMzMEM2QUU0MUEwNzNERTdERTIwNTNCOTkwMzEyMTRB
-M0M2OUU2NjMwMUIyQjJDMTI3NzBDMDcwRjgwREM5ODZGMjU1RDNDNzY2CjdDNEFDMEM4NUZG
-NjUzMTkzQ0U2MzY5QzhBQTgxNDNCOTlBRjhDMjFGNThFMDhBNzdDQjU3NTM2OUU0NTVFQjA5
-NEY0RDE4MEM2NDVDMgowMzY4NDc3MTI5Q0FFNDhDMzZGNDM5NkU4MkUxODkwMzMxM0FEMEYz
-OUU2NjY0NzlFODhDN0NBNEY5OTA4OTEyMDEzNURCQ0NFMDQ3RjEKOTdGRUE5MkMxMThBMEMz
-RjkzNkU0RDEyQ0Y0NjlGRjJDMTU0NkM2NTU5RUNERTZCQzlFRDk3MUNFMkFDRUVFNkI0NTQx
-Qjk3REI0OEMxCjQ5MTY4OUUwQ0Q4ODNGMjIxQjU4RjJFM0MxMzMzNjE3NkExRDJGRDMxNTI0
-RTRFNTZENURFMDE1MjdFQTNCRjU5NkE5RUM0MTYzREM5RQpFMzAwRDZEOEZCMkE4MDZBMjU2
-OEZDRjE5MDkwM0Q1RkYwODQ0MkMxOTE5ODBBQkNFMzAxNzhCQkI3QTBENTFEQzJGMzk4NTBE
-MkNFNTEKOEY1REFDMTA1NUNEOTNFQjFFNjdBQjI2MjQ2MDY0NkEyMzVBMTRCNkEyRTJEQzFG
-REY5MDc5ODc3RDkwRjE5OTdBMDFEN0VDRTFFMEFDCjNDNjk5NzlDN0E5MkQzMThGNkI5MzA1
-MUNCNTVGMTk5MkEwQTczN0EzNTIwQzU1M0FFQUJBREMxN0ZGNTYwM0YyMzcxMkUzMTk4NUU0
-MAoxNjdFQjMzOEY5Rjk2NDQ0QjkwODcyM0M1RDkwNkI2NzU1NkIwREMwODhFODA4QTIzOTc1
-NzMwNDY3M0RCODYzNEU1QjA0OUEyNUJBODYKMjQ5MUVCNjVFQjJGRDFBQzE3OTNCQzk0RTgw
-NkIyMkYwNjAzMTkwMkJCMzdGNzVCMTZFMTJGQzI4NTkzRTE3MUY0NUU4QjVDMDc2MzcwCkVC
-MjUyMjc5MTAzOEM4NjQzNTRDNDk1RkE2NzY0MEZBRTYyOTZDOTUzQTAwNEI2OEJBRkRBRDYx
-RjlDMDk1NzY4RTQ0OTZCMzEyMEVCNwo3MThEQ0ZFQ0QzQjZENkQ1MDZGMzI1NjFFNDM1RkYy
-QUQ4M0ZEQ0JCNkNERUEwNjY5RjAzNDVGNjUxNzEyRkUwMDBEODA5NTIxNTFDQTgKQ0JFNTc0
-QjU4MjhGQTdEMjU5OUE4MkJENkI0NThCNEY0NjJBNkMwOUYxRDdGMzM1QUM0RDg5MTlERkM4
-RDJCRTczMjg0NjkxQTc4RjgzCjYwNUUwRTE4MTgwMzBEQzY2NkQ0NThFMTY4RjM4OUY5REM1
-MUE3MUYyMzJDNEJCM0YxQ0VEQUMxN0U5QTc1MUQyQTQ5NkE0OUJFOTRBOQpEODA2NjU2Q0ZE
-NjIwODQyRkI3NkJERUUzOTU3NjEzNkQ3RDNCMkREOEIxRDJGRjlBNkEyODhFREI0MTI4Qzcx
-RkYwQThCRTJEMTQwRTcKQjJERTg5M0JEM0YxODc4NjMxNDAxRDEzMTU2RDY5OTJGQThERjI4
-Nzk3OEE4QUY1MDUyQTMzRTdGQzY4RUI5RDI0ODdENDdCMEFBNDNFCkIyNTYyNTk1M0ZFRDZG
-NEFBNjQxNjA0MzY3RTMwRTk0QkI2NkNDNEVCM0VBMjQ5N0RGRTdDQzA4NzRDQjAzMUEwNjM1
-QUFCMkFDQjUwNApFNzBGRDlEOUMxRjFENjM0RDA0MTQyNTY4OERDNkQ0NjY5RTlBQ0M1MTRB
-MDhCRUM5OUE3RjU5MjhFOTg5NDNDRUM5OTY4QTA5QkY3NTcKMzhBQjQyRjUwMzA4NDA3Qjk1
-REU0QUQ2OUVDOUVDNTJEMUU5QzU4OUY4QjUyQjUyMDkxQUUzODcyODEyQ0Q1NUY2MzNERjY3
-MjA5QTI1CjlGRkFCMDU2OTZCMzQwOTZFRTc5QUVGNjRCNTlCNTg5RTJCQjQ5RTI5MDhGQkEz
-MDkxNjdEQjY2RjdGNUQ0N0MzODczRTdCRDIxM0IxQgo0OEU5NjYxNDVENDBERkMwNTQxRkU0
-RjNDMzgyQThFMTVBRTgzN0RENEM3QjkyQzUzRTcyODVEQjFGRTMyRjYwNUI4OUFCNzFEQUQy
-MjkKRDQ5MjE1MzREQUIxNTFFNEFGMzI4NDBGMzNCOUM3RjM4NjZFQ0NCNkI1M0QyMzI5MzRD
-RkQ5NEM4QzU5QkE4N0Q2MkJEQTg1OTQ3MkQyCkIzQ0YyODNFOTQ3ODNCMUQzQkJEMUIzNUFB
-OUMxMDk3NDAxMUJBODU3QTg3NzI0NjJGMUIyQUU4MTMwRTEyNjNCRkNFNDE0ODlGNTUzMgoz
-Q0YyMDdGQzZGOEIyOTlBRjU1RTY3NjJDQTkxODM3NEZFQ0NBNkI1QjU1RjI3MzJGRDkwOEQy
-NUFBQzNFNzAzQTA1QzBENkE3MDI4OUUKRUQ1MzI5NjI4RTk2ODk4OUFCM0ZFNjM0RjQ3MUVE
-RUNBQzhGNzA1NjY4NUI2MURDRUM0NDc3MjA4OTQ4MkFGQTNDRjk2MjA0RTA0NDBBCjA0RTU3
-MEMxMDVGMUE3OUY1OTJBQzQwRjU1NTlGQTBEMjkxNzhGNDI0QzBBMDUxQjkyRTQ2ODRCNkU5
-MERFNDYyMDgzRjMzQTdBMDhCNAo2M0UxMkJGRTk4QjJEQzYwMjFGQTYxMTQwRUIyNTdGQkQ2
-NkYwODVBQUFENEM2RkIwQzA4OUIxRkVGOTFGQTgyMEI3QTJEQ0RBNjE0N0YKQUE4NUM2Mjc5
-OTkyNzQxRUNBQTYxRUI2OTEzRjQzN0NEMEU5RDk0QjU0MzE5QzEyQkE2RUI3MUQ4NzkxRDA0
-RDQwREQzODY1NThGRjlFCkRFMzg4M0MzMjQ1MjhFRjNGNDI4RDAxQTE3NUI3REVEM0E0OEQx
-ODQ0MjBEQjI5RTM1MkQwMjVGRUY4MDRFMTYzOTZGMTg2RkI2ODc3NQo1RjZDOTI3N0EwNTU1
-QjFENEZBQkFCMDJBNkQ0MEFGODhCQjVDOUQ4MkMzMkU1NzdDQUQyMDU0RkRGNjRBREFDNzgy
-RkJEMzE1OTNBNkEKNjVEQTAyRkJEMUFCRDc0MkM3M0I3NjM0RkU5MERDQzY4OTQ4OTc4MEEy
-OTdCMjlCQjNDMTc1QjM0NDhEMzMxQjczRjMwNzc1MUNFRjk2CkJCNkMwQzQ4NDAzQjFBMEM3
-OTc3QUQ3ODM5MTExNDg2RUZDNTBBRTJGQTI4NjY2QTBBRDY1N0Y2ODYwMTg0NjQwMDE4MTFE
-RjU5NkY4QwpFNEFEQjI2QjJGNzE3QTJDNTIwQUEwMzNBMTg0MDQ4QUJEOEM5REI1RDBENTE4
-QjAwQUVGRUMyRTZFMDUwN0ZDQUMyRDVEMDlBRDk0MUMKOEIwNEQ2MTIzM0M0OTc3MDY0MEJF
-RjdDRTBCMUUxNDI0RjE5MTY4MEEwRkM0RTkzQjVDRTk5QTQwNkUyNjJEMzI1RTk1MkQzRjk2
-RUU1CkE2N0UyMkM2ODYxNzA3MjZBODZCNkM1QzcyRjhBODUxMUFBNkY5MkJENTdDOUE3NTI0
-Q0U0N0RCMTIwQUU1MDZFNTc3MTA2REFDRTgzQwo1MjU5NTEyNzEzM0QzMTAzOTc2NDZFM0U3
-NUEzQjlEM0IyRjQ5QzJFN0RCNkIwQjBCRTdGMDM5MkI4OTdCRENBMjg0NjFBMjcyRUQyQUYK
-RTU1NEEzNzVDREI1ODY0OUMwN0U2RkI5RUQ3RUU1NzFGQTQxQjhCMEE3QTZFRTAyNjY3NDQ5
-RUQ4QzA3OUI2ODg0MzhCQjBGQUYyMTY5CjQwQUE2NjhDNzc3MUQ4NEQ0RkFCRTY3QTg5MzA0
-OEMzRUVEOTAxODJDQzIzNkNFQjNBMkVGOTYwQTkyRUZDMjgyOTY0RUZENDAwRURENApERTdC
-ODZERjhEMThFODEwMERBOTQwOUNFMzFGRTZCNzM2MEQ5MjM4REFENzU5MEZCREUyRTY2ODZD
-QUE2MjBFNUI1Nzg1OTZFODEwRTYKQUUxMENBNzM0QUVFNjVGQUNFQzM4MjcwRjcyQTQ4NEM2
-Mzg2RjM3QkM5MTIyRDAzNkI1MzE2ODJCMTZDQ0U4NEMyMDM4QTU4MzI0ODI2CkQ1RkU5MTJF
-RjRBMTdCNTkwNzVDOEZDQjJDOTQ5OTAyQ0JDM0Q5NDhCMUY4RUYzRUEzMUY2Q0UwRTQzNTJG
-M0Q2NDNERjY1MTE2OTc5RgpGQjlDNkJDNDAzQ0YxMjNBRkQxMzM2NDk0N0Q5QzFCOTVFQ0Ey
-MThCMTdGOEM1MTUxMDhCOTUyN0U0MzkwQkNFM0E5QUMyQzIxMDA3MDcKNkU5N0E0NTMxN0I1
-QjU2RkIxQzU4Mjk4NUM4NTNBNEMwQzg4RkUzMUJDMzJFNDk3REU3M0M1N0ZCRUZCRTkxRTU0
-OUMzQkExOTQ4NkIxCjYwQjVBNUMzRTA1MzAwRTU1M0U4MDM2QzREODMxRjRBNjVBRTlENDg5
-QkUwN0VFNEJGRENCMzU0MzAxNUMxNzNBNDE2QjE2OTYwOTNFMgpEQ0FGOTQxMEY0QTJEQTA1
-NzE2MkIwMTkzRDNDMDNGNjAwMTA2Rjc2N0UyNDUxOTFDQUZCREJEQTA0OENGRTgzQzQ0MUUz
-REQyMjNFQkEKMDg2M0JDQUI2QTlCQjY0MzY1Q0VGMTlDRDhFQjFGMzI4QjE3RTJBMzUzNjQw
-N0RCMTg5Q0I1RDRDOEZGQUI5Q0JBQzA3N0Y0MDQxRUI5CkE3M0FFQ0ZFMTY2ODkxNTcwQzA3
-NDdFOTRFNEVCRkY0OTE0RjFCOTg2MzY0ODE3MjMxNDcxQUVBNEQyMTM2RkUxNkE4M0JEN0NB
-RTkxQgo3MjE0OTlGNDBGN0Q3QUE2MUZGNzg2NEZEQzUxNENFOTFFQzg2MDhBMTM1RDhEQUI1
-QjBGQzk2RjcyMzYyOTk0RTVFMjBFMzI4RUJBOEUKNThGMERCODgzNUZDRDM0QzE3NTdCOTlB
-OTgyMDJBRjQ2REUwODc2MUMzNjdCMkM4RkZBRDMwNjNDRTJGMTQxOURGOEUwMUNFMkFBOEND
-CkM3MTQ4QkE3NEFGQzQ3OTc0NjQxOUNBRjIwRTRFMTk1QUI4QkE2OTUwQzI0REYwQkE3MzIx
-OTJGRDYxQjJDRkI4QTY1QkI5QjgzQTlGRQo5Q0FDNjdGRjExQjU3QUVCOEFBMUNGMjlGMDVE
-M0E4RDVFRUNEMTU2RDY0MjNBRENCRTM0QzJCRTlFNkU3RDZCNUY3NTUxNzYzQzVEQkYKQUZC
-RDAyMDIxMzEwQjVFMzY5OTQzNkY4NkY0NDlBMUI4QTlDOUU4OUMzOUY1NDFGRUFBM0VGMDQ1
-RTJFNTA4ODM4ODYxOERGQ0Y1MkE1Cjc5MjFGODhENkMyRDJEQzJDNTAyNzRCNDZFQTY5MDBE
-Mjk1NzIwQ0NBM0IyM0RDNTVFMEIwM0MzMEE3NENCOUM4Rjc3RTk1QTNCRUFEOAo4Q0Q4MEI5
-MTE4Q0YwRTI5NUNGMDJBRDBDQkQ0ODRBQzM1QzgwNDczNUE1NDBFMTczRDQ5NTVEMDMzRUJG
-MjhFRjYyNTQwMzUwNTE5OUIKRjFCODJGMzU2NDhCNzAzNDU1NTBCQUMwNkYwMTY5NkM0Qjgx
-QzI3QkFFRkE1RTdBNkEwQUNCRUVGMUQ2RjgzQjA3MDc3ODdEOEU5OEZBCkRCRjY3Qjc1QUQy
-NjUzOEQ3RUVGQUFDNTdERUM1MDcxNThERTNFQTM5RDNDODhEM0FDOUU3M0FFOTg4QjE3OTBD
-MzQzRTQ5RUJGMDA3MApDMzI0NUZBNEJFMTQ4MEREOUUwNDEwODdGODdBRDA1MjA3OTFEOUJC
-MjBBQTc4RkVFRURGMDc3MkUxNzQ5RjVGRDRGMEZENDYyNjVCNzMKODE1Q0NEQTE5MTczMUY3
-RTk3M0VCNjk4RDNGRkVBQkI4Mzk1NkVDNTVENkE3NTE3NjQzOTA2MjI0RUE1Qzg5NjJEQjY5
-RUIwRUJCRDM4CjY2QkM4RjQ5NTFGOUM2Q0MwQzE1NkY1MTREQzZDQzkxRjRFMEFEOUFGREE0
-Q0UzRDRBNjdFMUQwOUQyOUQ5QjdBRTM4NkNFMjQyOEFBRQo2MjU1QUM2MTZGOTY4MURBQjA2
-RUNFNzIyODJCMDgwNkQ4Mjk0N0MyQTY4MEU4QTNCNTZCMDUzOEEzOUFCNEM1NUI5REIzMjk2
-OTcyMzQKRkVEMUZGNDI5OEREQkI3NThGNUI3OTk3OTEwOUE4QTM3Q0U0OTUyNTEzMTFCRkZC
-RTlFMDY2MEI4MEM0MUY5QTYxQ0Y5OTRGM0VEQTM2CkRCRDY3QTFFNDRGQTlDNzc4QTM0RTVD
-OTc0RTgyMDg3OTU4QjIzODE3Q0Y1OTQ3MThGRkZGMzQyM0RCMUZFNUU3QUNENEM0OTIyNDAy
-RQoyMTc4NTMxQkQwNTc0MDYxMzRFOEY2NUNCMDg4QzNCOUQ0MERDRUE1QkU5QUFGNUNDOEUx
-ODE4MjI2ODUyNDQyQTdGOUU1OTM2ODhGMTgKMUNBNjY1MUQxMDczQzQwMkVGREI0OEYwQTE3
-N0U2NTRCOUNERjE4QjNFQjAxQjhCNzBFQjM2OEZBMjUyMDZEREE0QUFENDEzMTUwM0VECjcy
-RjZFRjE2NDcxMDE4MDVBMDYyMTQwRjA4Qjc0Nzk0Q0VBNzI4MDg3RDUzMkE1Qzk2Qjg5NjYw
-RTY2NDAyNEQxRjBGQ0Y5NjQ0NzI2MQozMjczMzU4MEQ5RUFDOTA0NjZBQ0FBNDdGMEJBNTEx
-M0I5RTQ2MkM2NkY3QjE3REQ0NkY2RUU0RTFDQzQ0NkVGOTI4N0E5NDdGRUE3QzMKMEY0NzA5
-QTcyQzg4RTdDOUJFQUE1N0ZBRDJBN0ZENTNFRURDRDkyOUQ3MDEzODAzRjQ4MUY5ODI3MzdB
-NkNDMTg3OUU1RDMwODBFRjhBCjRCNjc1OUU3NUE1NjQ0M0Q0OUE4RjJDQTJDQzU1RDFGQjJE
-QUQ1NkQ1QjVBMEQ3QzNDN0QwQTMxQkZDN0JCMzc3RkI1MkRDRTJDOEU5OQpDRDM5MzhEQTM3
-MTc3QURFN0YwNjlFOTJBNkRGODc2NzM3N0YzMDIxMzY3N0VGMUMyMEIwMEE0RjVEREY4RTEy
-MTIxQUE0ODE3MUY3RTgKREVDMDNEQkVEMUM2NTA2Nzc4NEE3OUYwMzg5QzE3MzlFNjMzQkE5
-RDI4RUUyQ0E3OTIzMTQ0NzAyNTVCRTcyNDhENDBFMzU4N0MwQTBCCkI2REIyNzdBNDFCRTk1
-QUU2MzkwMjczRThBMEIwN0ZCMTNFNUI1MzBFMjcyMjdGNDhEMTI5OEI0MEFEREUyRTcwMzVG
-OTREMTBBMkE1MApBQTNBM0NFRUQ2N0FFMDBCRUVBQjJEMTYzMzk2RjNEQThGNjg4MjhGQUI5
-RDVFOTYxNUJEMEEzMDJBRkU5Nzc1RTY4NEJDOTcxMjFEODAKQUQzQjQyQzE4QzM3RkIxREFE
-NTkwM0I5N0U4OTIxNjBDNzQ2NDgxM0Q4OTE4NTZFMDhFMUFDRDI3QTQwNzYwQjc2MjdBNDlG
-NThGN0VFCjhCM0QzNjYwQzNEQjY3NkI2QjlCNzFERjI5Njg3NTBCOUYxQTgwREQ2MkVFM0JE
-MzJDM0I0N0RDQzZDMTQwRTVGMTFCMjdGNjBGNzkyNwpGMTg0MEU5QzZFQURCMkQ2RDc3QTFD
-NERFQjBGQThGODkyQjQ0RUE5MUFBNDA5NEM5MDgyNTBCNkY0RjZBRjJDRDU0QUQ1MDIzODRD
-OUMKQUExMTlENEQwNkRBNTUzQjAzRkI4NUFGQjQwMEY3OEFDOTJEODc4OERBQTU1QjFDMzE5
-NDQ1NTZENUFDRjNBRTZCNEM1ODA2NkU1Q0M4CkQ2MThBOEE0OUI5ODRGNzAzQzc5Nzc1NTE0
-NUVCQzg2NjJBRURGODMxMzUyMkRDNjhDNkYxNEMwNTM3MDhGQTREREJBNjg5QzQzQzc3RAow
-NTA1NkQ4RTU1RTRBRkZFMTg5NkUwQTZDMjZGRjAxM0VEMzRFOUZGNjJBRDhDNzM3OUY2MTg4
-Q0QxRUM4QUUwRUY5OEZFQTA5MDhBQkQKMkJCNzIxMTlFQjRENEM3NDcxNTIwNDdFMjZBRDRC
-MTRERjc1RjA5QUFBNjE1N0JGRjBGQjhBQTIyMEQ5NkYyMzY3MjgwRkYyQkIxN0MzCkE5QTcz
-ODQyOEJGQzIzMTg3NTdBNzBFODBFNkZFODU3MDc4Nzk2OUM4QUVFQUM0MkE3NTY3N0ZEREU5
-OTU0NzY5ODZFOUVDMjZEMTdGNwpGQjVGM0FDQkQ1MzVGREQxMzg1M0RCM0JBQUQzRjJFMjQz
-NzBBNEU4ODM3QjNFQjQ4M0MzOTU5NDU3MjJCMzVERkQ3RTJGREI0NkYyRUQKNDQ5MDlDNURF
-REE3MzJDMjAzOUVENjA5ODkyNjQ3Mzk2OTAzMjBFMDM0QjIzRUNFRjU4MjhCQjk2RjhGMkJB
-NDM5N0M3QjY4QjdGNzJGCkY4Mjg1MTE4NEZCRDJDNEMzOTJGM0I1QzU5RTVCNEVERDgzMzUz
-Q0I0N0ZDRDQzMkFEN0FGQzNDN0UyNkI1NTkyOEYwMDY0OTkzREJGRAo5RkE3RTg5RDY2NUM3
-QTA0MUMxOEUxMzA0RDVERTYxODAxQTBEQ0Y0NEQ3RTMxNzk1NEFCQTZDOTQzNjU2NjEzNDcw
-MzBDQ0ZDREZFNjcKMTlFNjcyMjE0NUYyQ0Q4RTFEOTJBRTFENzhDNjBFMzAxRUVCRjk0QjYz
-MTAzMkUwNDUyMjA2QjFGNDc4QjMzNjNCN0I2ODNFRUFGODIxCjNCODE1NkQ5NUVBODhDRDY1
-RTY4NDRBRkFFOUJGNTlGNjE2NDlBRkU1NDBBOUZERTY5MEZENUY1QzMyOEUzMDJDOUVCNDM0
-NTZBRkMxMAo3RTMyOTZBRUY4MTMwM0ZDQjlDRjE4NkE2Qzk2RkRCNzUxM0QyRjZGODRCRTNF
-RTE5NUZFMThGRUE2RjJFREMwNEM0NEYyNjZEODIyMEMKQzIwMUE1Qzg0QjlBODFDMjQzN0I4
-RDJFODVFQjc5OTJGOUZFRTk1NUZCMzE2RUE2QkQ0MEU3MjkyRjY3MzNCOUM1NjFCRjQ2N0ZE
-RjUyCkI3QzU0RDNCMDVENkQ0MDRGMzM0ODc0OEUzRDBGQTQyRTVCQTdCQzI4MTExMzlBNzE2
-MjE4MUI1QjEzRTk5MjE3MDFDNjBCMEZFM0YwOAo5RUZEMzlCRUYxOUU0QzgyMTZFQzU1NjIy
-NTMzN0NCNTA3MDE2MTJDODZFQTFFMEI4NUI5NDQ3RDMwQTg1MEQ5QUYzNUUwMzlBMTE3N0YK
-RTQ0MDIzRjM0NURFREVBREE2OTNFRjBGREMyNjQ2ODQxMUFCQUM1RURENDNEOUI4MUI0MkY2
-RTREQUMzNUY0QzY4QjI1MDk2MDA0MDI1Cjg3RjRBRDQ1ODI5NDcyMEVBMDAzOEQ3NTA5MkQ0
-NDk5ODA1ODRGRTcxMzZFMjJGOUMxNzA0NzdDQ0I5N0U1NDNDQjk5N0Y4NDMzMUEwRQo1QUI1
-MDUxQjcxNDNFODZFODBEMTNGMTYzRkU5RDBCOTBFRTlDNjYwNEI3MTM5NzIxMDMwMEExQTA5
-OEU3MEEyN0M1OTE5NDFBMjA0NjMKQzI0MkYyMDg3Mzk2OTU0QkY5MTkzRTYzNDk5OEFBRDRF
-RjYyQzRFQ0E2QTVBNkI0RkE3NTVFOTY4MEY0MjdEODZBMDZCRkU1OEFDNTE1CkFCRjc1QUMw
-RDhGMjg0M0IzOTY5OTg1MDQwMkQ4NEVBNjIzMUQ2OUE5Rjc0RjdEQkIxMzExMzU4QUI2RUFG
-OUI5NjVGMjEzNTI1N0YyNgpBMzI4NDgyRTQ3OTIyRjIzMzY0RkVDNjdEQjEyM0IwNzMyQkJB
-QUFBNEY4OEI2NkQwOEQ2QUIyM0NDOUIxMjNBRThCNjUyMzc4NzQxQzkKNURFQUFCOEM1NTM4
-NTc4ODNDMzc4OTBBQ0RBMDdEQTY5OTZCM0JCMTFFOEFBQTU2RjdDMEJGOTg5NkNFMjA3OTI4
-QkE4NDc4Rjk5RUQyCkZGNzI5OTY5NTA0REM1OTAxMjY1MTg0QzU2MDZFRTE3N0ZCNUFERUFD
-QzdCMDIzODhENEU5NjBGMEVDNjc0NzI2NDEwRDA5OUI0OTBGQwo2Qjg1MUNGOTA4NUQ4QkQ3
-MzZGODJFNzZERjZERkZGRUY3OTIyMUQwMDM3MEM2RUVEOUMyM0VGRUQ0RkUzQUI4NUQwQTUy
-QjMyQjBDM0IKM0ZENTk4N0EzOUIyQkYyQzg5REY4NjdFMDdBM0M3NjdBMjVGNTI3OTEzNkUx
-RjJFMEI4NjM2RjlFQ0E2MUYwMzc4OUQyQURGM0M5NzM5CjVGQkE5MTVEQTA2OEI5NkFGOEM4
-RjEyRjFENUU1MDlCODczNTc0QUNEMzRGMjU5M0VDMzA5Q0FEMTQ1MkJEQ0JDQzNDMzBGQUE3
-RDAyMwpGNDRGNzQyRUQ2N0NERUQxOTFCOEM2RkQyNkZDODVFOTI2M0QxNzRCOURFOTgyMjAw
-RTk0QTZFNEY2M0ZCMEVENDM5OEQ0QTM5MDZENzAKNzk2QTI5NjQ5RjcwRDc3QThENjNCMTk3
-MEQ2MDlCQzg0QjkzQjFFNDU4M0ZCNUQxODQ5QzQ2RDZDMDBCOTY0M0VENjM1NjI2QTM3MDg4
-CjM2MTg0RUYwRkI2RDBERTVENTM3Q0QzOThGOUE5MzYxQkIzM0REQzE3NEUyRjlDNEM2RDhF
-MDU2NDhGMkRFOTZGQTcxM0Q4NTAyNjc4RApENjRGQjlCNTU5N0Y3ODc3OEEyMkQxNzQ3RUY1
-QjQwOTEzMzkwRUQ4RDI3MDRBODMzNjJBRUVGRDkwQUIzOTM5NjI3MzgyNkJFRDI3RDkKOEZG
-NkI0QUY5NzAwRDNBQzU2ODhCQzQzMjdDOEVCNjk3M0I4NTIxOEMwRDAwMDIwQjU5QjU3REUx
-NzM1QTI4MTUzNzI2NDY2MjUwNzZGCjUyNzhFODI3MTc5RDA4MzcyQjlCQTY3OUVEOTJGM0ZE
-NTVDRkY4QjY5RUJERjdGODA5MzcwMzM4NEU0OEQ5NzRBQTY0QzVDRjg4QzFEQgoxMDNDQURF
-MDUyRTgwNjA1RTcwRjZFQ0IzMkM0NjM5Q0E0MTM3NDRDQTk1RTI5Rjc2REU0ODBGOTg4Q0Yy
-QjUyQzFEQjc4MDU5M0MzMTAKN0E0RThDNzkxNERBRkM4MkI5OEY4NTM5ODFGQkI4OTZERjkw
-OUJBQkM5Q0MxQTFDMDA4QzNFQ0ZGRERENjU2RDQ4MUQ3REZFREM0MkZECkM3MTkwNUYxNUY2
-NjVGODAwQUFFQzY3QzAzNDAzQTE1M0Q0NkIzMDVBNDVBMUUwNUFGRTQwQkYzOTREM0M4QTA3
-MUNENUVFQkYzMDVGRgo1QTM3MUJEMUYxMTc2NzBERjFBNDlDMkI1RDFDQzgzREIyMUZENTM4
-OUJEQzI2NjAxNjI3RDcyOUQ2RDJCQjE4QTg0M0YzNjFDQ0VDNzUKRDE1MUE4Q0FEQ0YyRTQ5
-QTMzMzE2MTY1RDQ0RURFMkNBRkIzMTc5RTBFMkFCOEI1RTBBM0RDMDUwRDk4NkQwNzNCQzc0
-MTNEMDM2QUE5Cjg5NjI4NjcwMjJFQzIzNENEREYxRUI2NzY5MDU0RDhBMkQxNjVBODczMTY0
-OTQ2QzYxNENCOUFFNDgxRTZCNTVCMjgwMUQ5RDYxMTRDNApGM0NDMTY4MzM5OTlFNjY2MkZB
-NjNCN0ZGRkZGQzIxQkQyMDlCNjlGQ0VBMUMyNkI5MDUzNjIxMDU4MDdGMTJDOUU2OEY5RkEw
-MTJFNkQKQzhEREYyMTk2OUQzOEExOUVBRDEzQzVENDk0MDdEQjUzODBBQzQwOTAyMDQ0MTQ5
-MDcwRjlEN0QyNTE4OTVDQzVGOEE1OTdGNDVDRjIzCjc2OTJGQTdGRjMzMzU1QTMxRTI2RTdC
-Qjk3Q0NGMEUwREQyQUEzNkFCMjEwMjY4ODM2RTgxOUU0NURFODUxOEM4RUU1NEUxNzE5QjQ4
-MwoxRkY1RDkwREUwM0M0RTRDODY0MDU3MTQ0RUI0NjU0QjkwOEVCMDUyNzcyMTYwQzhFQ0Yx
-Rjg2MkMzRjUwNDUwNEY5RTE1NjI4QTRBNEQKMTZCMDFGNTQzQzY3N0FEQTI4QTEzMkY4QkY1
-Rjc1OENDMDg2REVFN0MxNDZCODNCNEM2NDc2QzNBNTUwQzYyMTg2NzVGNEMzM0YxRUNFCkRD
-QUIwQzMxMTJCRENGREQ5NEEzMDMyQTczQzYxMjQ0NTEzOTdBMDhFQUYxMjkzN0U5ODA0MjVE
-RjQxMUZBNzYyRTc4MTc3NTVFQjM2NwoxQTk5OUE3ODVENDEwMzAxMTQ1RjdERjQxQ0REMUUz
-QzY0MkVENjRCM0UzQTM1MkQxQzY1RUQxRTYyQjJDOUY0MEM5Mzk4Q0IzMEY3N0YKN0VBODhD
-REVENUE1RDUxMTA2RDgxREEwMzQ3NUIzRjI1MjVEQTFBRDRBRDU1Mzc5NjgyODY4RTRCMzc4
-OTdEMDRBOEJBRThCNDc0QThDCjYwQTUxNjk1MDc2RTkxRkFGMkZEM0U2RkRBRTdBNjMzRUM1
-QTgzMjQyRTIyNEUxNTQ2RUJEMEE2QkU2QTFDMjE2MTlBNTIyNkJBNDZERQpDNEE5M0UyMTJG
-RUEwNTMxQzc0MTE1QkQzOUM1MjY2NUU1MTAwMUQ5RDBDMDFBQjY3RkY3RTNBMjVENEQ2NDRC
-QUJDMTdFQTAzMDBFRDYKNzBCNUJGNjVERkI1RjNERUU0NTE4OUYxODVCNDk0NDk4QTZDMUVE
-MzM2QzYwOTAxQThFMzZBQjk1RjU2Q0I1MzQxMDkyOERFNjgxNkUzCkNBOEZDQzQ4QzFDMzBC
-ODZDQzZFMkIzRTI2NUVCRDRDNUM4ODg1NzRBOTk4N0EwMzcwNTNCOThCRDg2QUQ0MjlDRDc1
-MkM5MkUzODk4Mgo0RTlDMUU0NDE4MjhDNTNDQzQ5NUJFREFCMEZDQzY1NjEyRjRCQUNERjc1
-NjZEQzJEOTc5NDI3NUQzQzY0RTg4RTRBNzA4ODZGQTZDMDYKRjZFNkNEQTI0RjRDNTI1OEQ1
-NkUzRTBGNjQ3MzI1QzE3NkQyODI4NzMyN0I2NDg2ODE4MzM0QjRCRUZDOTIyNkZEODI4MTg0
-RTEzQTdCCjQ0Q0RFMTY2RTEwRDQ0RUM3NEVCMUZDMzM2NDcwNzE3QkU5Q0M1N0I2REJBRUJB
-MTE3NzMwMTI0REVENDEyNzBBQTdBMjBEMkNDNUU4Mgo2RjhFM0E1NkIyNDZFOUVGNjJDQUND
-N0U0REZCQUU0RkMxMTdENkNFNkJENzQ3RkFGN0U2NUZGQUIzMzNCQUZDMjc2QTg2MTVFMzZC
-MkYKOUQyQzI0NTcyOUNGNEYzN0E4NUI2N0NCNzFDMzM5OTg1MDNDNjE5MzIxQTNGMUU5NjVG
-QTYwQ0VCMDQwOTc4MEJDMkM4NUUxNDFDMDQ0CjFBNTJEQzEyRDAxNTgzOTMyRTg3OEJDMzg5
-ODc1NkM4QjcwNjE1MzEwQUI3MkUwMDMyRDU4NDUyRjA4NDQ1NTNEODZCQzQ3MTBCQTc1NwpF
-MEY4QjM0NkYwOENFRjVFMTFBRUFDQTA4RUQ3OTIzMTE2NTkxREZGNzlBMjAwNEFFOUUzNjQ3
-NkNENTIzMDg1RTUyQkY1RjU4NEU5OUEKQThGOTg0MTZGMTFFN0JFNUNGMEVEMTlCOUVENTNB
-OEY1RkFDQkNGRTY4NEM2N0FBNjE1QzU4OTY5RkM5Nzc4QzE3MEQ1QUE0QjQ5NUMyCjdGQ0U5
-MkQ0QkJCNEE2RERDQzAzRDU3RkVDQzYyNUJBRTFGOEVGMUJCNDUwQTYxNzgyOEFCOTQ1Nzc1
-QTlBNDUzQ0U3OTFEMTE4RDdFMwo4MkRDMTc3N0JFNjVFNkU4QjdDNUQ2RDUzQkVBMzFBNDg0
-OTMxNEU2QUQ1NzY0MzdBRDdCRjcyNENFQ0IwQzVGODJFRDBDQ0NDRTZBMkMKMDcwNjRENDg1
-NzAwMUIzQkM5MERGRDNDQjU2Mzc1MEMxRjg1RTFCRUYxRDUwNDM1MUUwMkYxMzZBNjg0NkYz
-RTM3NjZDRTgzQTgyMEI5CkIwMEU0MDMwRTBEMEFFNDZEMTI1OUVDQzBGMjIyRkMyNjFBNTlE
-NDU4RkM2OTBBNEYzQUE5Q0YxMzBDNzUwODk3MDZCQjQ0RDBFMTFBRgo4MEFFRTBEMzBBQjI5
-QUFFMEM0RjE1REMzRUFDRkRCMTdGMkMzOThCMzJGMUJFRjM3NjAwM0FCQzVDMjBBMDkzMjAz
-RDQ0RDNDMUQzQzkKNjczMEEwRTJERkZERUJBMzMyMjY2Q0UwNkYzMUEzNjgyMjMwNTkzQjE0
-NDFENTI5M0YyNTE1MDlCMDZGMkE2MjM5OTdBNkYyRTlFNEI4CkY5OEVGMEZDRUI2OTNBRUJB
-OTJGRTAxNzY4RUI2NDE3NjEwMjI4RDVGMTY0Nzc1RkMxNzU3OUQyMzFBQzNGMzdBNzgxQjk2
-MEIyRDI4RApGN0FDQTZEQkU5NDg3MzE3OThBNDI5QThCMTNBOUU1MEI1NUEzOUNGRDI1Mzgy
-MTRDNzlDNkE2QUVBMzFCNEE2RTAwQ0MzMUE1OUE3NzIKMkI4NTBDQzBFNTZGNjI0RkNDOTUz
-OEVBNTUzNkExMTI5RDNBQTVBMjk4MkQ0QTA5QkU0MTJFMTAyNjMyMjVGREE4RUExRjhFNDJD
-NTdGCjBEQUI0MDI1NTFBMzUwNERDQzQ1MDUxNkZDOEJFMzBCNDgzNTg0OUE5NjlBMzA5ODZG
-QTFENzBBMzUxNTlEQzM4MzhFRDY5OTcyMUYxMAoyNzU4NTMwRkI0REM3RDA5Rjk0OTFENjY1
-MTc1NUVCMEEyMjk3QjRBQ0JEN0QzOUE1RkRCQjE4QzA5ODYwRUJCOEI3NThBRUEzNDkzNEEK
-RTM5ODQwMkRCMUU2NzgzNjhBQzQ0RjNFREExRDBEMEQ5RDRGNjIyMDk4QTc5NTRERTlBRjQw
-QTRCQjIxMjAzNkREQThBNTQ3ODgzRjA5CkVCNDkyOEFCQjJGRTE2QjIwQUQzQzREQTFFNDMz
-REExQTZBNzlEQUFBRjAxNUFDNTc5ODhFNzU0MjhEMEZBMEYyNDM5QkFFMkQ2MzJDMgo0NkM5
-NTE4RDAyRDhBRkNGMkJDRDQ4QjZFRDRFRDcwQTZFODRFM0I0MUMwQzRDMEEzNTA0QkJCN0M4
-QjFFQkY4ODEyMTFCRUIyRDZGNUIKODIxQTc3MzIxMUE0Mjc1QTg4QUNCNjgwMjg5OUVFRUU0
-RTc0OTM4M0Y0QzhCMDVDMzY0QTBGRDUxQzBCRDc5QTI5QTQ0RDc5NjE0Q0E1Cjg4MTQyQzk1
-NTM5NEUyRTY5NDdFQjI4NTY4RTg0RUZGQkMxRTUzMTI2QjBBQTY0OUM1REFCOUZEMzgxMkE4
-MkYzNjkzOERCNDIzQzc0NAo3ODdEQUYxRTM2MTVCMTQzNDZGQzI4NUFGQkVGRjU1NjE5Q0E5
-QzQyRkZFRjcyNDlFOTYzQTQ5NDBCQTU1MjNCNjM0NDAwMTQ0NzA3MjMKRDk4NjgwRTk0NEM2
-MUQ1MkMyNEM5M0Q4RDMxMENDQ0E1ODNBQzUyMjI1N0Y5RkQxODcyMzlDNUNEOEY2QzhGM0VE
-OTE0N0VGOTc1QURBCjY5Qzg4QTZFOTgzN0ZDNjBFQkQyM0JGNjM1M0IxOTFCOUE2MEQzNUU3
-ODNEOUM0MDRGOTI4NjBGQ0FDQ0VDMTNBNTIwRDg3NDQxM0RGQwo5RTQ5Qjk2NjVDNkI0RTU3
-MURBNUY3OTg2NjE0MjhBNTlCM0U4NURBNUMxQ0Y2OTI3OTRBMTlBRTMzOTIxMzQxRDIxQkI4
-RDQ3ODFEMDQKNzA0RDMxRDM2OThDRDYxOUUxOEY2NzFFNzY3MzA3QUFCMDUwOTVBNDdCQURE
-OEE5RjMxMTlBM0JDRUZDRkI5NkI2N0YxOUMyODVDRDQ1CjA0NDc5QjI1MUQ0QzE4NDg2MzZG
-N0FGN0U0RTJGMzQ1MDUyM0M2NkMwNkFCQkY5RUJFNTcxQkY2MDc5QzUzRUQ1OTk2ODRENzAx
-N0Y1OAozM0NBNjAzNTcyNzRDNUQ3N0JBODQ0NjEzOTU1REM0MUYxMjU3Qjg5MzREODk2MjRD
-NjYyOTdBQUE2MEZBM0Q4RkU1MUI4MDcxQTU1QzAKMkI5NzRCRjcxNEE0Nzg3MTU0RTJCRTM5
-RUVBODNDOUNDQzc4RTE3OUJFRTQwNDkxQTdCMUE2OUU5NzY5MDY1MTczQzg4OERBMzJCQUU3
-CjFDNDhBNzVCMUVDQTM0NDYwQzVFN0ZBRTVBNkEwODk3QzcxNkE5MzhFNTAzRDc1NjlFRUUy
-MjY3MzE0OTM0MTQ0REVENDhBNzM3NkRDOQo5NUYxQzNCODlDRTc5OTQ2QTM5RkY0MjhGMTZD
-QkY2NUU4MDA2QzlBMUNCREYyRDc1NTNENEI3MUY4ODQ0MDg0MTU5NjRBRTYwODM5MEIKQ0Ez
-OTAxNzA0RTM5QTY4OTI4RDgxMEM4ODE1Q0Y3QTg2RkEzREUzMjZDQTdENTA2RkVFNDFDQUU0
-NzczMUIyODM0MDQ4RDI1RkE1RjkzCjc4RjQyRjMzNkY4OTA2MkY0MkZCQzRFQ0U3QTJEMDA1
-QTcyMjA0RjI4RjBGMERFRUZEODNBN0UyMTIzRkQ4Mzc0RTlCMjQxMDlFMDBCRQo3MTczOTVF
-QkNGMDY5MjkyNDIxNkUzQkYyODFBRkQyNTRFMkE2OEZDRTEzNDQxOTYwMzE0NTVDODZFMzgw
-MENGNDJEQjEyRjg0RDAzQkIKRjlEQ0M3MDQ0NkI5NEFFMkY2N0NDNDg0NzM3OEYzM0ZENzQ4
-Qzc2QkQ3RDcwQUU0RDAzQUU2QzAyMzBCQ0E4MEU0MzZDMjEyNjk0MEI1CkNDOUFGOTJCQUQz
-QjdENTJCQjMwQTI0ODYyMDg5NjQ0QUIwRTg4MTU4NTZCNEFBRTZBOTMwMjQwRjhCNkUzNTdB
-MDQwOTA3QTNEM0YyRAo4REEyQkRBNjI1RjVENEEyQzJEN0RDQkE2NjNFRTU4RUYyODVGRTE0
-MEJGQTc1RDI4RkNGRjkxMUU0RjE5ODE5OTcwMjY4NDk0QzgyODUKRUJCOUU4NUE2NjIzMDJE
-OTFENUI1NzI1RDUwOEY1NUMxRUZEMzA5MDMwNUE5MDRCRkMzRDlBN0NBOUQ4MERGRjFFQTQz
-NUE4NDY0MzdGCjg2REJDQTQxQkUyRjVCNEM2MzU4OEUzRkFBM0FBMzRFRTE4QUI3NzY4MEY1
-NTFFMEU4MUY5NDgyMkVEMzYwNkEzNjQwOUZGNjAxQjdCMQoyRDU4OTNDMjA2Qjk4NUYyMzRF
-QjIyRDgxNDRERjE0OEU3MzA4MUE0RUE1NzMwOEQ1Q0U2ODA2MUIyMTM4NjJDRjgwQzg3OThF
-RDQzNkIKOThDRUY1OTE1NkNFRDIzQjA3MThEMjQwQjk5NjQwNzRCQkNBNUVCMEJEMkE0RjE2
-NjUxNzU1MDc4QzI4ODUxRDk1NzVEQkIxMzdDMkY0CjNCNEFGQkM1QUI1MUY5MjFCRDZENTBD
-QTFBMTJCMkYwMUMwRDY1MDEzMjRDOTI5RDJEOENCNTZBODNDODJGQzUwNDFBNDI3N0EwN0VD
-MgowODYxMkIwOUJGM0Q5NjNEM0ExOUNBODI4MjJEQUE5OTY5OUNDMDY4Mjg0ODc4ODI5QTI3
-QkU5NzhDMDMxRUY0Q0IyMUUwRjg4ODZGRUIKNzBCQTBFQzRBNkE5MDZFRkIwMkI5RjAzRDAw
-NThFRDc1MThGNzM0M0QxQTZFREZGNkQzOTEyQTgyOTM5QjNDQjA2QkMzNEY5Nzg1NTVFCjc0
-OUFBOEZBMjRBN0Y5RkMyRDU5NDA4M0QxMzlGRUU4NEVDNjUyM0Q4NzgxNzJEOEU2NUJCRjVG
-QUQ0OTAwOTAwOTRBNDk0NTZGNENFQQpFRkU1NDEzRjkzRTUwRUQyQUMzQ0IyRkE1M0U0OTg2
-NzFGMjc0RURFNTdCNDUxQzU0MUIwNDQyODJFNEFGOUEzNzYwNzYyRUFFQjA4MzUKNzQ0Nzcw
-OUMzMzExRTA1OTc4RTRFRThDRkUwODAyRjUyRUQxOEMwNTE2OTBGMUJEQkZCMEFCOEZEOTAx
-N0ZGQTcyOEJFREJEQjI0MzBBCjE0Nzg0N0VDMzcxMTIzMjI5N0IwQTQ2M0E3MDVDNTNBMzZE
-N0M2RkMwODk0OUJERTM0RDQ5NEY1NTAyNTZFQjFFMDgzQkJFN0Y1QzcwMwo1MTRCMTZBRkY1
-RDE5MzBCM0RBQ0E5RkNEMDNDRDA2NDA5RTUxRkVBOTBFOTUwQzZEOTNBOEExRTBEQzdCMkNB
-MjI4RjU2RUMyMDY4NjAKQzg2OTc1MTYzMjdDOUQzMUQyM0Q1OUY4MEZFMkU4MTcyNkRGNzFC
-NDNENjdFOTREMDBFODQxQjVCQzE0NDQ1REEyRTE5NDcwMEU1QTYwCjk4RUZEOTk4MzUwN0U4
-QUE0Q0ZDRUVDQzhCQjQzRTQxNjcxQjBBRTg4RDhCMEY1Mzk3RjIxNjhBMkE3RjVDOUI5RjJB
-NDMzOEFDN0Y4OAo3MDFERTQ4OUFFNTkzMkFGMEFFOUU0ODE3QzRDNzJBQkVBNzQwNDg5RTM0
-NEJEQ0JEODMyQTNBOEI2QTlBRDVCQ0ZBNkE5MzU5NUQyRjgKRTJBNzg0RDMxM0UwNThDNjBG
-NjI1MzUwMTM1MzBDNzdCODU1OUNFOUE5MUYyRjE1NjlFQ0VCNzY2MkMzNENCODZDMEIxNTc5
-QzgzQTZGCjcxQjNEODBDMkZGRUQzQUFCMkQ3NkU3MUVGQUYzMjg3QUM3NzEwQjk4NzlENjUy
-OThEMjhDRkU2RUUxRTM3MTRBOTYyNTlENzJFQ0I0NAo4MzhBRTk2MjNDQTlENEY1N0NBQUZD
-Q0M3RUJFMjkyQzFEMjk2MEE1MURFMUI0QUQ5NjA2NTBERjE3OTExNUJCQzNCNzhCRjVEOTAw
-ODYKQTUwMzgxOEFFODc1RjAyNUJDNTAyNjA2MTQ1MzUwM0QzQUE1NzlDQjBFOUM4MDlFMzFF
-NzUxMjQ4MEJDRTRFMENDMUM2OUVBRTNGMjAyCkIyRDlERUMzRkMwQTIzRDExQjkwNkNENzNF
-NUI3MzU0MjIzNzE0MTMzNTBGQkZBRkEwNTE1ODRFMTQ2M0E5NDgxNkRCNkJCNDhBREUxNQo1
-RDlBMUYzNjZEMzI0NkUwNjQ1QkZGNDk1OUM2Mzg1MzQ0QTlBOUZGRDkzNUE0MTNBMjdCQkU2
-OENFRjM5QzY2REYxNEY1NkUzNkZDOUMKOTBERTIwRTgyRTFFNUFBRUJCNDQxRUU2OENGRDc2
-NkY0MTBDMTYyMkYyQzFENzJDQzQyOEYxMkU5OUUwMkQyQzczM0YyMzhCOTkwMkY5CkNFMUQ1
-MDJEODUzNjRBMkM0MDk2QzRGRUIxNjM5Q0M5RDY5RjkyRDEyQzdBRUU3OEQwNzRCODgwOENE
-MEJBQzgwODZDNDAxQjBGNENENQowRTQ5MzA0RUNBODYwQTQ5QkZGODg3NEYyMzE4NTYxNjg5
-QUI1RjdCMkU1RjFDNTI3MkZCNzVENUVEMTlFNDEzNkE5MUEzQUY5MDU4NTYKM0Q0QjgzODY1
-Q0YxNTA3OENCMEMyQjk2N0UzQUE1NDlEQjU5MUEzRUEwQzE1MjFERDdCMkUyMjJDMTcxQkY4
-RUJFNzY1QTMyQTRBNTc4CjRDNjExQkEyQzYxQjI0MUYyQUZBNDBFNDk3MTJDOTE5NDAxOTY4
-RDg0MTk3QTczMUI3OTlENTM5N0JEMkI5MzczMjlEMjk5QzhGMDA0NwpEQTQ1MTk5MkU2MDZC
-RkUzMEE4RTE4MTQ5MDdBODdGRTg0MTE5QUZCOTM3MDNEOTc4N0Q0QzFDNDEzRjVBNzYyMzZC
-NzhBRUNEN0NCQjUKOTA0MDhBMzEyRjYwQkMxQkI2MzQyM0UxMDMxMkM4MEExMjFBMTU0NzIy
-OTk0MTM4QkZCMTZCMDM5M0EwN0FGRUM3MTZFQTY5NzcwNzFBCjIyQUIzRUQ2MDBBMDk0RTVD
-NkRENzNGNkQ3RjBBRDEzMjM1NUU3QUVDNEUzMDFFODIxRTExRkFBQTY2RDcwQThFM0FDNTI1
-M0FFRTU1MgoxODZCNkY2Mzc4QjYyQzE0RUM0MUFDOTQ1MTUxM0E0QjI3QUVCRDY2OTU5QzQx
-RDc3OEYzRUU4QzY1OTdBMEUyQTQ4QTRFRTlEMTRGMkQKQTM4MDI4MzBENzkxQTNEMDQ1RTk0
-MDcxMDcxRThCRUE4MjMzODA1QkJGMzU5MDZDRTc2REQ2OEYwQjczOEEwNDI3MDhENzk2RUI0
-RURFCkMxN0NBODYwRDg1NzgxNTdEODVGNTUwRjMxRDNCRkE4RDI4Qjc2M0U5QzYzNEY2MUY0
-MkZEOTc4RUMxMjVFOTBDNzFFMkY1MzdFRkFGNQoyODNENEY5N0U1NzJGMTY2NDkxMkY2MUY2
-OUExQkM1MzE0MDc2RkE1MjExQzQwMERFQTNDNDEzMkFCOUNCODE5MjA4MEQ3OEI3RUMzOUQK
-MTRGQUFBMTUyOThBQjZDODBBODAwOTU3QjJCREExQjI3MDVGRTZFRkJBMENFNTg1NUY3RTc0
-Njc5N0Y5NjQ3OTlFRUM4NjY3NUNDMEVCCjMwQjQ0NzgzOUM5OTcxM0QwRDRENjY1RDBGMUJB
-QzY4REFGMjY2MjY3QTU3QUYyQ0EwNjZGREU5NjAwRTQ2MjM2MTNCNDU2NEM1OEE2Qgo3MzQz
-QUI5REI0NDZEQzdGRDQ1Nzk1RkJBQzlFN0E3MDMxQUVBNzhFQjg1MDdCQUNBREJGRDkzOTBF
-QjkwRkMxOTgzOTFDQTdFMTVDQzIKOUI3QzdEQzY5NjRFMjEwRkFENzgwOEU5MjM5N0I4NkUy
-NTUwMDM1NEZFOEY3NDlFRDRDOUE5OEE0OEI2RTVCRUZGMkIyRDZEMUFFOUVFCjE5RjgyRTFB
-MTQ0MTkyQ0U4N0UyODczMUFGOERGODJDREQxOTUzRDczQjYzRDU0NDE2QTg3RjRGQjkyN0Y2
-Qzk5RUE4RUI1MjkxQjEwRApDNTE5RTVFNjBGOEM1REIwNzFGNDZGMUEzMDhCOEY3REZBMzUz
-QzZDRUYyNTc4MDM0QjMxQzNCNzUzNzU2OEI0QzIzNjU3Nzc1NTAzQ0IKMkY5RTgyOUQ4QjVD
-Rjg5MkVDNEQ0MDVGMjE1QUI0ODA1NkMxQURDOUUyRDcxOTU0NjNEREJDQTE2OUY4NDA2MEM2
-QkE5RDg5RDNDQzAxCjBBNThEODQ1RjY4N0IxNDhGMzVDMTdDQUU3RDYyN0U2MzYxNkMzRUQ4
-RTNGN0ZDQTFBMkE4OTRFMEExMTkxOEYyNUM5N0M2MDhCMDJDOAo5NEFFQ0REMzk4MTU3N0Uw
-RjU1MDE0NUUxOEZEOTlFRTJFQ0RFRTk0MEM3MTY2QkVGRjYwNzcxQzA0QzgwOTNBMEU3NEJE
-MzA1NTE3OTMKMTUzNThDMjIwM0FERDg4NTMxM0I5QzRBRkUwMzFBMTUxMTZCNERCNTY0MTg3
-MUY2MDc4QkFGMTMwNDU3RDUwNTQ3QTBGQzQ4NzJBOUVDCkM0QzhCQUI5OEFFRTNFQURCNzI4
-NTIzRjVBMTEzN0REMDQ2Q0Q0MzhFM0Q2QzFERUZERjUzQzY2N0E3NjU3MEVDNUYyQkVDMERC
-RDY2OAo1RTE4QjIwNDY4NUEzQzI5ODI2RTc5Q0U5ODU1NTI5NUNEMUIxN0IyOUI0NkQ1MkFF
-MjY0QzVENzEzREY5MUUzODE2MTcxN0JGMUJDNTIKRkNFRDRFRjBGOUU4RTczODQzNTE1MzBF
-NEUxRkE0MkVFMTk0MDNFNjREMkI4QzMzNUU0NTg1QTMyRkVDQzdEMzg2MDgxOUVDQzQwNDg0
-CkVBRjczRjNDRDg5QTU2QzdEMkVGNDM5QzhDNEU3NzNDMTM2ODk4QUQ3NDkyNDQ0RkRBOEZE
-QjhDMzUyMjM5NjlDQkU4OEJCNTk5OEMyQgpCMzBGNDYwODFBNzA2RUNBNDYzNUIxNkIwRURF
-ODk5MDFCM0E3RkEzMEE4N0FDNTlGMEUzMjQyMzE0MjI5MjY3NTM3RjlGNEJCRkI1QjYKMjlD
-OTY2NUFFMDlCMEEzQkJDREZGRUEzNTQyMkU3QUNENjc3Njc4NkJDMTY1ODExQTQ1N0FGOEZE
-N0JDRDQ2MjRGQ0VFQ0M4M0IyNDE2CkIyMjVBNjA0N0U2MTAzQkI3MzdBNjY4RTZFREJDODgy
-NTMwMkUwMTNCNzM1NDNBNjExNDEzMkNGRkZFRUNEMUY5QTlFMkZBNDQ5QkNGOQo4NUJDREJG
-RERCMEFGNDlFMkU0MkFDMjUxMUQ0NzY3QzlDNjMxOThGMDNFRjM3MzNGMzk2NUEyQzA1NzUy
-ODY0NDE3OTc5MzkxMERCQTQKRTc4NzQ5RkMyRDJERUZCQTE5NzRFM0ExNkMwNkI5N0MzMkIw
-REMwQkNBQzRCNzY1NjRGN0ExRTY5NTlCMjZDQTM1QzgwNkMxMUIwMkE5CjhEMzI2MjlGM0ND
-N0M5MDc4NkRCM0UxQTcwQzdGM0M0MzkwNjg2MDYzMEJFQkYxNENBQkY4QjZENjk0QjI3MTM4
-RDYzM0EzMzhCQTFBNgowRUYxNzBEOEVGNDk5RTNGQjlENThDM0M3MjNBNDI5M0Q0MjQ4QUM2
-NTc0MTg4NEQ1OTI5Qjc3RUZDQjM1Njg1MDBBOTkxQzAwQjU4QUQKMkJENkM0RDdERDAxN0Iw
-NUQwMkZGNkUyMUUxQzBGRTI0ODI0RURGMDg5NDVDN0M2REIwRUFGOTcyMDBEM0YwRkYzREVC
-NjQwNUE1RTlDCkRCNDYxMDgzNzc2OUYxREU1NDNBMTM3Q0IyNTA4MDUxRTk1QzMyMjMyOEU1
-NTBCRUM4RTcyRUY4Q0VFRjZGOEVDODUwMzI2Q0U5MTlFQwoyRDY2RDk2MUEzQTg3MkYwODYz
-NDBCMDBFRDQzRTYzRDcxNEYyQjI2QkY0OEQxQTkzNDQxMUQ5MDlCNEMxQkYzQjU1MTI2Mzgw
-MzYzMjYKNUUyQzQ5ODQzNDAzRUJDNzNCM0Q1QkI5MjREMjg1RTlGNEIyREEzRUQ1RDI1REY4
-NDBGOTVBMDg5RUQ2NjRDNDdCNEVEMjA2N0U3MTA3CkQ1QTgzQzVDMjVFOTgxREVDRUY1QzQy
-RkM3RTdFMjEwQTE0MTVGQTQ3N0E1QkE4REY2MDJFMDRCMDI2MzAzNzU3Q0NDRkY2QzJFQUY1
-MwpBOTVGNjIxNDY5QkI1Njc4NDJGNzBDMkQyNjExOEE2QjAxN0FBMkQ4REVCNDlERkJBNzVF
-OENEQTFBNjk4MDQwODA3MUE4QjMxNTJCNjIKOEI1REI3NDc5MDMxM0NDRDBFQ0VCQTBCRDg2
-MzJDNzE5Mjg1M0E0MUJENDQ3NTkwMDlEMDM0RjI1RUIxQUQyN0ExMjYzMDEyOEFCNEFFCkE3
-RkMzQjM5QjZCQTk3QURFNDBERDJCNzZBQjEwQ0FEQzUxOTc4RDVGM0YzNjZBRkNGQUJGQTAz
-MUFBRkFCQzFCODMwOTU3MURDRTdFRQoyMDcxMEY3MjgyQzc3REFEMTZDMTkxNzg2NDEwOUU0
-MEQxQjc4OTM1NkU0NUY4MTgwMTI2RkM2Mjg4NTBBOTVGQUZEMzQ2QjlCMzg2RTIKQzVGREFB
-REI4MDg0NDM2MUM1RDY1REFGQTlFMzA1MTM2NjI0RTdBRjc0NEU4QTY4MzE2MzlDMDZDNzRF
-MURGRUU0OUU1MkMzRkM3N0ZBCjYwMUYxOTREOTdGQkY2RDhFRjBGOTQ4RjgxOTc4NTRDQjVD
-NzUwOTM3NTY2MEVCMUFGRjJDMzg1OTY2MjI1Q0QxRjc1NjY4OTUwMzNGMwpDNERFNENGMDA4
-MUVFNDcwRjRBQUQ1M0YzMTY1OTM5Q0UzMjEzMjUwOTY3MUZDMTY3RTgxNjhDOERFRjZCNTk1
-RjdFMzJDRTZFREQ4MzMKOTc2RjI3NTU2NTQ1QzgwMEI0MDBGMzExNzM1NzBBNTRFODI0Q0E4
-NDA5MzM0NkFENDM3NjEyMDRDMjY0N0Y4QTEwNUE1NjQ2RTdBNUE0CjA2OTdCRUZCNUI1RTUw
-MzU1QTg0QjlGMEFBRTM0RUREQzM3N0YzQUIzQTZEOTIyRTJCQ0U5Q0Q1NDIwMjE5RDBENURG
-OEIxRDI2QTcxOQoyRTIwRDdBMUNFQUE0MzNGMDU4RTM0ODc5NzQ4Q0Y0Q0JDMUU2QTY3MjUx
-MDJEMzM3NUVGM0Q2Nzg1QTc1M0Y3M0U5MkY3ODU5MDAxNUMKMkIzRUI0NkYxNzNBNENBRDZF
-Mzk3REIwQzMwQkUwRUU1N0RCRjI3NjIyQTIxRTZDNDY1QzVFRUM0QjA3MTEyRkMyRDMyNTky
-MTRFMDM0CjIyOUUyQ0FCMTA3NkNGQTJDRkJEMDkwMkNDREM1NDkyQTNCNEMzMjMzQ0Q0RkU2
-Nzg2MDc3ODk4RTQ3NDExMjU2RkVEMTk3NjZCNUMxMgoyRURBRjAyMDZBRjA2Q0Y4MTU4QTM4
-QkE1NTRDMUYxMDI0RDc4MUJBQ0FCQ0RBNzM5Qzg3RUNBRkExMzIzMDExNjA4MjJGM0M1OEMz
-QTQKQjc2MDQ2NEE4OUQ5OTBBRTlDQ0VBNjdEM0E1NDA2MzU1RTUzMzlGNjk5QUM2QTc3NUYx
-NTE3MjkxNEU1NUUyQzhGOEJCMkVBRjJGREE3CkU3RDc4NDExREFGRTYxQTE1Qjk4NThFOTgw
-MTgzQzEzRjA4MkM2OUQ0RTk5NkRDNTlENUJDNTNBRTY2QzUwQjI3MTM1MTBBNTM0NkZDRQpE
-QzNBNTNGRjczOEIzQUI4RjZFN0YxMkRDRTAzNDM5NENFNDA0OTBEOTVGRDlGNUY0ODRCNEU5
-NjVCMUEzOTk5NkUzRjBERDZFNUZBNkIKNUMyMzhFODU4QjkyRUI0RTlGNEZBMzMxMEY1RTUx
-MzVFNzVBNzgwNjYxMzQxNEM2RUI1MTkxNjQ1RkREREU3REE5MDkzNkUxRDRBRDRCCkIwOTZF
-NDdBNTU3NTA5NEFBQ0VERjdBOEFFNDZDMTU3MkJGNkMyNzNDREM3RENEMkU5ODQ1QUZCOUU1
-NTMxRTkxQzIxQkEwRkQzQUZGNQowMjE1NTY1NDcxM0VEODA3QUY3RDU1RUY1MzRDQUU3NDU2
-RkE2MDhBM0MyNzAwMThBODVEODA1MjJFRUVEOTg2QkFCNzFDQTJGRjU2RjcKQTVCMUREOTIw
-NTQ4OUJEMEUxOUMxNEM1ODVGNTY2MjJFRkE5RERBQ0RGM0QxQzk1NkIyQkZBNzQ2OUVCNTEz
-OTk4REQ3MUIwQzg3NDVGCkY4NjY1RjI5MjY4MjVGRTEKMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAowMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-CjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAKMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAowMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCjAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MAowMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwCmNsZWFydG9tYXJrCiUlRW5kUHJvY1NldAolJUJlZ2luUHJvY1NldDog
-cHBjb2Rib2wucGZhCgoKCiUgR2VuZXJhdGVkIGJ5IEZvbnRvZ3JhcGhlciAzLjUKCiUgQ29w
-eXJpZ2h0IChjKSAxOTg3IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLgoKJSBBREw6IDcx
-MiAyODggMAoKCiVGb250RGlyZWN0b3J5L1BQQ29kZUJvbGQga25vd257L1BQQ29kZUJvbGQg
-ZmluZGZvbnQgZHVwL1VuaXF1ZUlEIGtub3due2R1cAoKJS9VbmlxdWVJRCBnZXQgNDMwMzcz
-NyBlcSBleGNoL0ZvbnRUeXBlIGdldCAxIGVxIGFuZH17cG9wIGZhbHNlfWlmZWxzZQoKJXtz
-YXZlIHRydWV9e2ZhbHNlfWlmZWxzZX17ZmFsc2V9aWZlbHNlCgoxNyBkaWN0IGJlZ2luCgov
-Rm9udEluZm8gMTMgZGljdCBkdXAgYmVnaW4KCiAvdmVyc2lvbigwMDEuMDAwKXJlYWRvbmx5
-IGRlZgoKIC9Ob3RpY2UoQ29weXJpZ2h0IChjKSAxOTg3IEFkb2JlIFN5c3RlbXMgSW5jb3Jw
-b3JhdGVkLilyZWFkb25seSBkZWYKCiAvRnVsbE5hbWUoUFBDb2RlQm9sZClyZWFkb25seSBk
-ZWYKCiAvRmFtaWx5TmFtZShQKXJlYWRvbmx5IGRlZgoKIC9XZWlnaHQoQm9sZClyZWFkb25s
-eSBkZWYKCiAvaXNGaXhlZFBpdGNoIGZhbHNlIGRlZgoKIC9JdGFsaWNBbmdsZSAwIGRlZgoK
-IC9VbmRlcmxpbmVQb3NpdGlvbiAtOTAgZGVmCgogL1VuZGVybGluZVRoaWNrbmVzcyAzNiBk
-ZWYKCmVuZCByZWFkb25seSBkZWYKCi9Gb250TmFtZSAvUFBDb2RlQm9sZCBkZWYKCi9FbmNv
-ZGluZyBTdGFuZGFyZEVuY29kaW5nIGRlZgoKL1BhaW50VHlwZSAwIGRlZgoKL0ZvbnRUeXBl
-IDEgZGVmCgovU3Ryb2tlV2lkdGggMCBkZWYKCi9Gb250TWF0cml4WzAuMDAxIDAgMCAwLjAw
-MSAwIDBdcmVhZG9ubHkgZGVmCgovVW5pcXVlSUQgNDMwMzczNyBkZWYKCi9Gb250QkJveHst
-MjggLTI4OCA2MzEgMTA0Nn1yZWFkb25seSBkZWYKCmN1cnJlbnRkaWN0IGVuZAoKY3VycmVu
-dGZpbGUgZWV4ZWMKCkQ5RDY2RjYzM0I4NDZBOTdCNjg2QTk3RTQ1QTNEMEFBMDUyNTM5MkVF
-Q0FDMTYzRTU4NEE5MTA0RDk5QUQwQkMxQjFGM0Y3MTIxRDFEMAoKRjJDNjBERDIwNkIwRDND
-OEM0NTA2MjBCNDczMjBDQTBBRUI4OTM3NTExRTQ1NkFBREU4RTY2QjMwMUIxRTNFOURGRTE3
-RTJGNzlFQ0ZFCgpBNzA5RkYzREFFMTlCNEMxNjlERjY3NzNFREE0MTREMDI5MTVBNkYwRkFG
-OEIyNEZCQjA3NzdDNjk3QkU4QTM3RDYzQTM5MEFEOURBRTQKCjk1QkI3RTYyNjcyMUZGMkZE
-M0ZCMTQ3QzgwRDIyQkVBQzM3QzI2MjREODE4RDU4QzhERjAyMDlGNUNFNzZBQ0RERTU3QTMw
-M0Q5MDQyQgoKRjBBNjc0RDA5NTY5N0Y5MjVGNTMyRDE4MTRCRUE4RjhBNUI1MjIzQTMyQkM0
-QTk1NDAyRjJDODQzMTgxNzc2RUE2REQ4RkY5RUU1RjM0Cgo4OTA1MUZFMzRBRTg5OEFDRjMy
-MDE0MzNDQ0NFOEI5M0Q1NjI3Qjc2MTE0Rjk5OUM4MUEwQzU1NDU5OUYxMTVDODlBRkE5MjIx
-Rjk2M0IKCjZBMkRBODkzNDI2MjEyNDRBQkVCMEU3OTRDODg1RjMzNUU0RUY4MTg4QzRCMTVC
-MUU2NjMwQTQwNURBNTA1NzhEREIzN0M5NkIzQzhBNQoKNkE3RjcwQjU1QkMyMzYwNkVDMDND
-MjMxQjIzODBBODNFMEYwNDY3QTRDNkY4NThBMDU0OEFDNUFBQzJGMTExN0U3QTRFQTdBOEM1
-MkQyCgowMUIzMzYyNkMyQkVCQ0NBNkREOTIxMUQ2Qzg4RjYwOUJGMkM2QjEzM0U1NUZDRTZE
-ODg2MDA5MEFGQjNDMDY1ODM1RDdCNEYzNEFGRjkKCkQ4RTBGNEUwODQxRTQzNjdGRjg2MDQw
-OTI3MDRFMUUzNjI2RkU4Q0I0QTQ4RUIxM0U0NUNCRkVFQ0JERkNCRkNCRTY0MzIzNTY2QzQz
-NwoKNkFGODU4QUNEOUFDREM0MkExQzkyODVGMjUzQzMxMTMxMjJCQzlBQzQ2MEUyNDczNTgx
-RjlDMUYyMTBCNkZFN0I5RDQ4NkU2Qzk2QkNECgowQ0Y5QzUyQTg5RDJGQTJEMzBEMTREMEZD
-QzlBMjQ3MEEzQjkxQTBDQUE5NjIwQ0IzNzZDNDE3NTczODYwMDcxMzMyQkYwMTIzMDU0ODgK
-CjIyODlDRjJBNTI5MzRGQjdGMzJCQ0Q5NDMzN0FEMUVGRTU3QkVCNDNFNEE2NjFGRjhFRjVE
-QkEzOEZBM0M5MjRFODUxN0FFQzExNDEwMwoKMTFFNzlENkRGODYxMTU5QUM3NEM5NjIwODg4
-RURBM0FGNENBMDhBMTU2MjNCNUYzRDFBRURBODhCMUJDQ0U4RjA1NzE3M0MwMzM3QzY3CgpD
-QTJBNTk5RjFGNEJBMDM5QkJCMjYxNzlGNTRBNTdBODc5N0E5QzRFRkFDMjI4RkVERjFFMkM1
-MEE5NTFFQjE5NzcwNTI1QUYyQzY4NTAKCjU2NjBBNkM1RjRFN0M3QUIzOUQ1NzU1RERERUIx
-QkM0RDA0RUIxMENDMDlGOTA3RTZCRkJCNjg4MDdBODc0MzkyRTQ0M0M5ODY3MDQ2RgoKNEIw
-MjBFNUQ3OUJBNDUwQjYzQkRDMEZCMzhBRUNERUE5MTI1MTY3M0M1MzI3RUVCNzQ4MjE1MDU5
-OTNBNDkwMTMzQjczRjdBNEQ5MEY5Cgo5RDRCMzc3OEU1MDI3NDc2MkZEMThFODdGN0NBMUQw
-MDlEQkY0RUE4Q0RGREFDMTQ5NEI3RTc4QzE3QjQzQTlEQkNBRUUwQ0Q1RkZCRDAKCkUwNDQz
-REI1Q0I3MEU3MUQ3Qzk1QUEzNUI0MkNGOTA4MzA5NjlBOEM4NDgwMkU0OUVEQTk1MjhCN0Qw
-RkREOTE3NUE2RDQxRjdFMzQ5NgoKN0IyRTkzODE1OTU1QTlCMTRCMzREMkEzN0U2RTg4Rjgw
-QzdDMTFERDM5QUNERkIxRjEwQTEyMzdBMEZDQjFCQjM3MjIxRjcxNjBBQ0ExCgo5MDM3QUY3
-OTRBMzE4MzU1NEMwN0MwM0NGOURCM0ZBQ0UzM0EyRkI1ODRBMzBBODE1NzhFOTlCNkE2MjU4
-NjFEMkQyOTU3RDVFQjg3ODkKCkNEMDkzNEE0MUZDQTIzQzkzNUJEQjcwOTQ4NDhCMEZCQkM1
-OTIwNjdBMzRGQjNBRDU2NEJFNzFEMjAwNzRDMkE0QjYyNDk0NUFDRkM3MQoKMTMxNjk0QzQw
-NTZFNDY0RDQzRTMyNDlCQTFGQjEwNkRBNkU2N0JCQzZEQ0Y1NDI4MDFDNzM0NDZBOTIxQURB
-QkE0QjRCQ0ZFNjM2OEU0Cgo1NDM3MzlBMUFCMzUyQTU0RjczNEVDRDNDRERCQzg5RjAxNEY1
-OTY4MkUzQzUyMUIzM0NBMEY5RkJDMjM3NThEQ0IzNDQ2NzI0REM0RjIKCjQ1QjZEMTIzRTkw
-NDQ1MUQyMDMwQjBCQTJGQ0JCM0U1ODcxMTc3OTk0OTc0MEFFRDFGMkUyQjM2Qzc4RUJCQ0NG
-QkNCQjZGQTI1RUZERAoKMEE5Q0EwMDBDNjdENkJFN0IwQjM2MThFMTBFQ0YxRkE1Mjc5QTdE
-MTY0NjJGNTM4MkFGMTA0QjUwNDM3NzcxOTRGMDEzOENGMDlERDJFCgpGNTNEOEY0NzM1QkJB
-OUIxNDkzRkIyREVDNEQzM0IzNUNGMTg4MTNGRjZCRjlFOUVFNzhFMkFGOTM1NjZGMEZDQkY0
-RDZCRkE3Q0EzMDcKCkU3QjI5QkFGMUI0RjQ3NDNCMTQwNzRCRjkxMDU1RTNGRjg0QzNBRjgz
-QzY2NDIyNzFCQUQxNDMwQzdBRkI5NzY4MzJFODg0NzFGQ0QxMwoKQUNGRDBFODY3RjVCRkNF
-M0NFRURCRTYzRUEzM0E0NDBCMUEyODExMUUzOUVCRUQ1RDA4QkMzOTU3Qzk1QzMzQzJGM0JB
-MDI3MDA1Q0Q2CgpGREU2MENDNDQ3MTY1N0ZGNkZBREQ4OTQ1MEFBQjVEQzk2NjgxOTVGQjlE
-OEY3NTEwRjEzQ0M4RUVEQUE2RDA5MTU4OThDQzYxOURDREUKCjhCQUZEMjU3RDZCNzRGMUVD
-QzYyNTk5RkYzNDU3MDJBRUM0RUU3QkEyNDJDNzNDRjhBMzYxQzcyNTk1RjY4MjQyNDBEQjEw
-RjUwQThBMQoKMkU2MDU2MzZGREQ0REVDOEM3RjcyNDdFMTkyNEREMTNGRTA5NTM2NzdFODZD
-RkNCOEExMEYxNUU2MEM3OURBMDE5RkZFMEY3NDg0OTdGCgo4RDdEOTJCMDdGRDI5NDZCRjkw
-OEFGMkI2Q0E0MDI4NUM5NjZENzc2N0ExNEZGODVFN0Y0M0I0OUUwRjhFRTFEQTZCNEU2NjYz
-NDcwMjYKCjQ3NDNFMEFDODcxMzc5Q0Y4QTA3OUVEQzY1QzFEODQ4OTYzMjk5OTBCNjBEOUEz
-M0M3MjRFMDE3NTZEREJEOEI5OTA2QUQxOEQxRTExQQoKMDk1MDg1Njc1QUY5NzIzQzBERTQ2
-Rjc4RTA0NzkwOTE2Q0E4OUI0REQ1RUE1NzYxOUI1OUU3MUJBNTMwQjY5NDU5ODY0OEQzMzJG
-Qzc4CgpFREIzNDM1ODgwNUI2NERGNjBDNUQ0N0FCODJGM0FDODdCNTM4NUMzOTExNkIwMzAx
-N0MzRTRCQjQ1NTZCOTZERTVGMjY2QjM3OUVDNjkKCjlGNEZDOEE5Rjg1NEM0MUU4QkIwM0M5
-QkQ3QzAwMzg4M0E5MDIyNjk5MkM2N0IyRDAyREJBOTIyNDJCOTREMjE1NjZDODNGQUMxQjRD
-MQoKMkFERTZGRkFBMDQ5QkY2ODA1QUU3NkE2QTZFRDQ4MTQ0REFDQUJEQzhEMkYzNUNCNUMw
-ODE1OEE3M0EwQTEwMDY2Njc3MzhDQzQ3MUU4CgoyOUQ5NDg3RTIyREZFQzMwREI2REQyODE5
-MzFFOUJFOUM4NDg1OUQ2RkE5MzJBNzZGOUQ4NUExRTk5QUZCNUY1OTA1QkZFRDZGRkQ3NjIK
-CjU2NTQ2NDk3NTdFQjY0MEI1QjNDMEQxODAxOUJFQ0Q2MjkxNjIwOTFCNjkxNTREQzBCREEx
-RDA4RjA3MjdBQzg1MUJCNDM1MDNFRTM5NgoKRDM2ODI1NDFBNzMwRUU0NTBDMzBGNjYzMTg3
-QzNCNTAwNEQyNDE3M0Y5NjJDRkVBOEUwNEY1REQ2NjRENUY2REQ1MTUyMjRGN0UyNTZBCgo0
-RUEwN0I1Q0E4MjM0NTZENzU3MDg5OTgwOTcyNjdCRTVENzdEMjBFNzFCQkEwQkVBM0YzMjc4
-NjVBN0EwQzU3NDYyODlBQTY1M0VFMkQKCjIxNTdDMkFGMzMzMEE0NTU1N0Y1RjgyNUE4RDc1
-Mjg0RkM2OUJDMTVFMUY3M0FDMEY1QTExQjI2RDQ3MjEwRDE5NUY1NTdCMjY1RTlFMwoKMEY2
-QUM3N0M1RDNBQjA4NDc0M0U2Qjc1ODM2NTc1N0I4MUQ0MzA1NDlFRjUxM0U3OUFFQkJBNTM5
-QTc0NUYyNEQ0OEFFOEU3MjhGMDI4Cgo0REYyODk4NEY1REIxMjAzRjBCRDY2NjI4NzU2NTY1
-MzkzRjE2MjkxOTFDNTAzNDdDMEE0ODIwNUREODA3QjBFNkNGRDM1M0UyMkJBNDMKCjFDQzZB
-Q0Q4QzZCNEU5N0Q2OTFGNzQzREFDNjlDRDA4ODFBQTgxQ0IzQTQ4QTA4Q0FGOUMzMkU0NDAw
-QTc3Rjk0QTUyRjlBQjE4QjRFQwoKQURDQTRGMDczREE1QjNCRjQwNzlFMDEyNUIzMDY0Njg1
-RkI3ODNFMTU2NUQ0QTc3NzkyOTBCQUE3MzQwNTJBRTc5OEY1Q0Q3NUM5MTI3CgpCMzM4QTQ5
-RTJDREZGRDlGMEE0MjlGNjYyRDE3MEFBODg1MTI1MDcxM0UzRDE5OTI4RDk3NEI5QTdDRTY5
-ODdEQ0NCMDdBNTNBQ0MzMkYKCkQyMTc5OTFDODBDNTgzNEJCQUE3OTZBN0Y5QjIwNjM2ODU0
-MjIxODcwMUQ5MzI3OUUxRTE5N0Q2OENCMEZEMDMxM0Q3NjcyQTEzMjdGNwoKMDYyNTBGRUE0
-REQ0QzYyM0NENTY4RjFGNkJBMDQ2OEQ1Qzk4QjRFOUM5NjNFOUU5QjIxQkU1ODkyMjc1MEE1
-MDc2NDQ5QzhCOURBRUEyCgoxQzQ2RTIzODRFRjg3MUM5NDU2RUNDNzM5QzFCM0NDQjVBODVD
-REI2NkU5MDEwOEM4NjBCMTgwRUM3RDRERDc2OTIxNEZBOTYzRjI2QUMKCjY2RTI4RUYyREEx
-Q0RFMjFCM0VGOTM3MTRFNDJFN0FBRDUzMzQ2RjIzRUUzOTg1QjFBM0Y4NzFENDlDRDU2QTBG
-MDQxRkQxOUE0Njg4QgoKNUMxOEIxNEM5M0FDMkQzMEU1NUI5MDJBQ0MzNURFNzlDNkIzRDNC
-QzhERjZFQzM1NTcwQUYzNEQzNDcyQzI0RUVDQjRDMDdBRDdERUVDCgo2NDI5Rjk2OTQyQkZB
-Q0E0QjdDRkRCQkNFRTZGQ0I4RDVCNTQyRTI4OTU5OUY5RkUxQzJGRTJCMUUwRTE4RjEzNTcy
-MkNCMjExODkzM0QKCjc3NDM2NzNERDhBREEwQUVBRkMyMEMzNkUwMTU3QjcyNDc3MUIwMERD
-MkZDRDgyMUMyNkVBREY0MjlFQ0YwQTI0Q0U4MDhFRDA2Q0I4MAoKRURERkZERDgzMDBBQzVG
-RUI3QzFCN0NCNTkwNTREMUE0RjA0MjY3RUZGMDMwRTE3MTUzM0FDRUE4NjlFOEU5Mzc5MkQz
-MzlGQTk2QzZECgo2NDhBOUQ0Q0M4OEM3RDBDMUIwMzZEQTdENDUyMDA3QTUwRUM1RjBDRjhG
-NEM2MjJDNzA3OENGQTNDRjRCQTQyNEE2MzkwNkJENTEwRTAKCkE1ODBDMjJBQTFGMDI3OUY5
-QkUwM0I3RTFCNkM3MTRBQkZBMkZERjRFQzhFMTQ3MTQ5NzBGQUYxQkNBNDlDNzFDOTFDNDZC
-MkYzMUE4QgoKQzMzODE4MEFGRkU5N0UwQTRGQTZCQzlGRTQ3NTBBODQ2MjBFMkNGMjNBQUJD
-NkNEQzQwOTcxNDA0ODBEMkEwOUMyMzFCRDMyNzM4RDU3CgoyNkJGMTI0MzU2NDBDMzk3OENE
-NEM4NTU0ODRENkNDQTQ0ODI4MzRGRDc2MUVBNDE1M0IxOTg0RDA1NzhCNzc2Q0RCMjFENDg5
-MTgwMTIKCjg2QjY0NjY0OTI2MDhERTc5N0E3Qjk1MUE5NzlBMkRDQkVGRkQ2OTI5N0M0NkYy
-QjM3MkY4RUQyQ0NBRTkzNzJCRDRBRjY0NTVEQTcxQwoKNjVGRkFFQTZFODQ1MjNFRDA5OERD
-NDlENTYwQzVENkI2MEJENUMxOUYwRTYxQkU1Rjc4NTk2NjUyOTUxNTBFMTUyRkMzRTg4NTgw
-MEQ4CgpDODMyNzU3RUQ3N0Y3QzUzQjMwRkQ3RUZCN0MyMjU4REY2RUYzQUZFMjMxMDlEN0Ez
-NDJGOUIzNDhGRDZGMzZFRjYzQzk1NzFBOTZGNkYKCjhEREExNzgzN0U3MkE2RkUwNTk4RkZC
-OEUwRDVDMjIwREEzRDM5Mzg1MTA5MjNDOTNEQjcyQjI1NzI2QTU3ODg1RDQxOEU4RDZDMDQ5
-QQoKRjZFREUzQTFERkNBOUIxMEIyOEVGNkYxRDA3N0Q0QjM3NUQ5Q0IzM0NDQUJEQkU4NDlG
-Q0MxNThFNjAzRUNCRTdBOTA2MjI1OThDOTlFCgo4OEIzMkMyREQ0REU2MTRDQ0ZCQ0ZEOUMy
-NzI2REMzQjI2NTQ0QTM5ODlGMUU0NzM5OEZBNDZFRDkzNzhGQjA0OEFERTJBNUU0RDM2MjAK
-CjcwOEFFNEIyMTBGQjREOTdEM0Q2RkE5RkE0NDAzNTE1NTg0RDg2RjdDM0NCRjJGNzQzQ0Yy
-QTYzMjAxQUNENjdFNTg5QjZGNTRCQjA1QQoKNEVCODVCOTEzMjhCOUYyMzc1RTU3MTYyMjc0
-MjY4MURCNEY5NDQ3QTJFMEZCQzRCNENCNTFGRDdGOEJERTRBRDJENTI3OEE0NzJEMkJECgpC
-NUQ4OEI3Nzk4MkIwMTc4NkMwMzVCNTdGODVFODlERTQwRTYzNjg3MjhCNzI4M0Y1NDJGM0E5
-M0QzRjVBN0IxRjZDOTgyQkI0M0E1QjIKCkZERUVGNUJEOEM2MTgzMTg2NTM0OUJENkQ0MUVC
-M0QyQjBGOTRDRDEwRTZENzVDMzcwNjY3ODMxMTE5MzExQjk4ODhEMEJFOUU4NEJFMAoKRjE4
-MDk2MEFGREZDNjVBRkFEQ0EzQTlDMTQ1Njk1Q0RGOEM4QUY5MTUwQjdCRTA5RTVDMEVFNjRG
-QTUxMUIyQzhDNkY1QzFCMjA2Mjk3CgpFM0M3Qzk3MzM4NzVERDM5NzZBNkQ3QTJDRkZBNUNB
-RTgxMEMwMkZDQkYyMzQ5RDM0NjM3MEI1Qzk1RjAwRkM5OUE3RkJDOTEwODNBNkUKCjQ5MDFF
-MjFGOTkxNTlCQ0Q0NjQxOTY2NTFEMzlFNjIwOTU1N0I1MkY2MDRGQTYxNDQ0MzdEQUNDNURD
-QjkyRkU4RjgxOTEzQjJFRTNGNgoKQjQyMDZFMERBNkEwMUYzODFEMzQyNDI5MDI2NzhCQzY4
-RjREOEIxQUU3RkExMUE3OTlEMDZDNzJBMzc2MTk3REIyNTI3RjQ1RTJBMUQ4Cgo1MEQ0N0Q4
-MzVDRUM4Rjk2M0E2RkYwQTgwNzc4RTQ2OTE3RTZEQ0REODQxRERFOTA0RTNGQTk2MUVERkI4
-RTZBNUI3QjQ3Mjc1NTgxRDQKCjFFRUMwNDUyREIwMzIxODlCMEY0MDIwN0IxMTYwN0QxNDI3
-RDUwMjExRDc2OTY2MTIyODMyQzk4MEY5Qjk3MTVERjJBMjVEQjhCNzk0MAoKOTc4MzU2NUEz
-QTMyNUM1Q0E2OEEyNDhFNzE0ODk0NDg0NEVFOEEyQ0RCMkFDRjdEOEE0NjI3NzU1NTVFMzQ4
-OTE0REYzMjM4RjBFRUEwCgo2NTc2MjNFRTY1QzI5QjdBRDA3QzhCNjQxM0Y3OEEwQTRFOUZD
-NTMwN0U0MjczMDVDOTVGRUYwOThFNTNFMzA4NzAzRDc1N0YzN0YxOTMKCjc0ODlBRDExMzE1
-ODIwODdEMjRCRkY1MEE5MTZBMEY4RTZFNzFDMzM1RTUwQjMxNjUwQ0IyRkU0MjM4ODQ3M0M1
-NTIxMzM0NjczN0NGMAoKQTVEODgwRDBBNTZFM0UxOUI3NTM0MTFFOTIwNDVBMEU1QzAwNzNG
-Mzc4RTkwMDJEREJFMEIxMEVFMTc3RjMyRkQ5ODcxQjk4RTAyM0U0CgozQUEzNjY2RjQ1OTQ1
-OTFGNkFBRDhDM0ZGRDM3ODA0QTQ1MUYyMUM4NkU3OTRFNjU3RkY1MEY1NDlCOUYzMkU0QjAy
-ODFDMzZBREVBOTEKCjg1NDk0NDYwNjE3NkE2QjNCN0M1NURCQ0I1NjBEODJENTdEMEFDMTM0
-MUYwMzI0MEFDNTZBMTVEODc4RURDMTEzQTYxMjc3QzRERkU3MQoKREI4NUM2RDgyNjU4MTA1
-MDUyRUYwRUMzQUY4NzNGNUYwRDE4ODFCOTdDQUYwQ0U1MjE2N0M4MTlGRTAxRTAwREU3QjQ0
-ODg4N0EzMERFCgo0NTNBMzhCRkUzN0NGQ0NBNEY0MUU3RUVBNUE0MTVGMzMwNTJGRUU2NEY3
-RDIxMDhDMDlGNzlFOTdEQkE2OTk4QTNFM0Q1REMzN0EzNTIKCjkzMzNDRkIyNTRGQkNCNjJG
-OTBBMEE4MEJEQjM2MDZGRDk0QTVENjlBMzJBNUVBMDA0RTk0RTQ1OTc2QTUxNEJCQ0FDMDQx
-RENDRDU5MwoKQ0E2NzNCQzNFRTFCOEU0RjkwNEMzQkJBMkUxOUUxQjU1NTE4QzdENjlCNjYy
-QzExNTg1OUQ1MTEzN0ZCRjJEM0RDMDE5QThDRDZFNkEwCgpDMTRFNDMxMUIxNUZBNjcwMDkx
-QjlDRjhBQkIxQzE5NkI0RTBGQzgyNEJDMkVCQTc2QzYyQTIzRkU4QzhBMzhEMzEzRjk5MkZG
-QUFCMzAKCjU5NDc5OEVFOUM1QzIxNkQ2RTk1NDExQTgyNUZBNEYyOUFFMDVFMEQ4ODNDMDdE
-MjRDNEY1MTA4ODM5RjEzMTM5NTczMURGMzk0ODZDRgoKNEQ4RDY2OEI4NUY3QTU1REY4M0Y1
-RUQzNUY5QjQ5NEIwOTg5ODc4QzMzQTA4MTdCOEM3NTM3Mzg4QzVDNkE2NTgwMTQ4NjZFQzA3
-RDU0CgpDODlBODBBRjgzQTdDNERBMjFERTQ0NzIwNkRENEMyRjIxQTM5QzhDRERDRjNCNThB
-MzMyODA1NzE0RjgyQjFFOTY2MTgwRjVFQ0E5NTgKCjI3QUNEQzQwQTRBNkVDOEZEOUJCMDI0
-RDMwNjhDOTRGRUYyNUU0RDYzMzdFNDBEMkEwMDI0OTRFRURDNzkwNUU2QkFFMzg0MjZCMzQ0
-RgoKNUIzNkVERThGRkU4OTQ2NTI0MjJCMTFBMzIwMjg1OTE2RjRFRTVENjFFNUVDOTg2OUQ0
-OTcyOUEwQ0FCMTM4NzNCQjNFMEYyMEZBNTE4CgpCODEyRTVEMjRBNjQxNzk2RTM4QTE3NjZE
-ODA1QTg5RDlEOUZCNjQyMTQzQzM3N0IzNjVFQzQ1QkE2QzE5M0IzMTI0QzA2OUM1MjU1MTcK
-CjZGMzVFQzg1NTQ2QzE5MzNGMjVCMDkzREQ1NkM3OEFEODZFNTAyQTIzNUQyNzczQUJFM0I3
-QkQ0OUUzREM3OEE2QUVDRjIwQ0U5REE0QwoKODdBRDdDN0U3NUJCNEFBQjc4Nzk3RUI5Mzgx
-OUE1QzhERTY4NjM4RUZGMjgxQjE0MTY2MkE0NjMxMzVEREEwRDJEMjM2REYwRUVCNzA5CgpB
-QUQ5QTU0OUNBQkJDQUM0RTU3N0IxOTU1QkREOEJFQjQyNjUwNzgwQ0UyQjFFQUE0N0MzNTk5
-M0UxRTFGMDUwNTExNDVBOTRDODlEMkYKCjQxNjJCRkUyM0EyQzkxQjc4NDQ4ODVBRDM0NkJC
-ODhFOUM5RjhGQUVERDIwQjZENkU1NEE5RkNGRTNDMTg1NDAxRUZFNThGMjlDRDRBRgoKOEQ5
-REVBNkVCRkY0MjdFOUFFMThEREQzRDFCRkZFMkExN0E3MTM3QjU5NkUyMzlCNzQyNkNFMzhC
-NUM0OEM4MUQxN0ZGODU0NjJCNjQ4Cgo3MEEzQTdDOUYyRjNBRUU5ODg0RDAzQ0RGMzg3Rjkw
-QzVDREI4MDdFMjIyQTc0NEE2MTczMTcwMzg3MDdCRjMxMzBFQ0FFMjY3OTI2RDEKCjUyMTU0
-RkI0MjNFMkZDRkM0MzhBQjY2MDczODE0ODg4MkJDNjg2REI1NkM1MEQwOTJENjA0MjhEOUIw
-MzcxNzA0RDNGQjhGQkU3NUQ1NgoKOUUyMkIwRTlENzY3QTVBOEVCNzcwMkMzNEY3MzIwQzMw
-RkYxNDJEQ0VCOUQ5MTU3Njc4NjQ1QzUxMzkxNjQ3RjlGNzMyOUIzOUMyNDMyCgowMEE4RDA1
-Mjc5NDBGOERBMzdBMzAwQzAxODJDRjc2RjMyMjBCMUU2MkVBQzE4RThGRTBBOEM5M0EwQTVB
-MzczMzg2RTM4MDkzQjgxQkQKCjNFQzNDRkQ1QkYyRTg4QzUxMzIxRDQ1NDA3MzMxNzM1OTI2
-NjFEODVGMUFGRDA0NzM5NTQzQzM5N0UzNjhDNzM1MDA0NTYyNjRCMjYyNQoKMzdCOEVBNkQx
-NDdEMjY0RTQ4RTY1RkM2Njk0RDI3N0U1OTcwQjBGQjQ3MUQ3NjI4MEE3NDAwOEIxMENDNUEy
-MTZFRDA3RjIxQTI0QkQ1CgpEQkNFQTVBNEUwQURBNDgzRjA0QUNENzY5N0FCN0EwQTkwMUMw
-MTkyNTgxRDRGQUJCQzI0NDg5RTNDRjUzNTczNzA0MEIwQzE1QkYyQ0EKCjk5NzAyNkZDQzM3
-RTM2MDg4RDUxM0NDMjBCNjhDOEQ4NzA5RTVENTgxMUI1QzUxMEQ2MTkzQTgxMzIzQTI3MTYy
-MEQyMzlDRkEzMkY5NgoKM0FGNUYzQjU4NTdBQzY4MEQxNDkxREUzRjIyQThCQkQyOTUyRUVF
-NUI0OTYzN0YyNEJERTkyQjVBOTk0Q0Y1RTAyNzFDQTlBREI0N0Y1CgpDMjk4QTM5MUJGQ0I2
-MEM2MzAzMTJBRTg5M0FDNDhGMjAyNTY4REUxQjQzREQ5ODZBMzhBMEY0NzhBRTY0NjVGODNC
-MEZEM0FCRDdGRkUKCjNFRTA2QkY4OEQ1MDE2QkVFMkU5MEQ0MjM4NzIyQTYwNDQ0ODcwODc0
-OEQ2MDgyOTVFM0I0MzVCRjJCNDdDOTFGRUYzODVGMjczMUU5NQoKMUY3M0ZBQkNDODhDRUI4
-QkE0OEEwODdCRUEyREZGQTkzMDFCNjBDNEFCNDI2QkRDMTA0QTI0MTFFRDgzODA4NUZDMDZD
-RTNFNEU2OTA2Cgo0RDdFRjNGMzAxREQzQ0EzRUFFRjQ5OEU2QTdCNEIxQTM2RTk3OTBFN0Y2
-OUVDRDVFODk2NzA1MDgzNUNFNzc5RTNCNDQwMTRDMjdBQzAKCjQ1NkE5NkI5RTI4QzcxRjMw
-MDMxQjQ5RkIwMERBMTk1QTMyQzQxNzVCNkJGQjI3OUZFNDM1RUU5MkQ0RkQ1OTYzRTQyRkU5
-OUQ5NTQzOAoKNzQwMDcwNkMxNzU2N0IxRkI2NUM0RTkwQUFDMTBDQTYyODAzMkUwNDkzQTk3
-MUJENTVEODNFMUFENzBCMjQwQkZCNkVFRERENjI1RDRFCgo0Q0Q2RDQ4OTU2NjhCMTQ0NkRE
-RDIzNUU4REU0NEI2OTRGM0Y5M0FBQzJCQzBEMDRDODcxRkZCRjVEQkExQzdFRUUwQkY2NkM5
-NDlBNTgKCkIxNkY1NTQ5N0U4MkFDRDQwQkUzNTZDQUQzRUJENzA3QzAwMjBBQ0Q0MTBEQzZG
-RkM3Q0M0NjA1MjVDMjAwMUEwQjRBOEI3QjExNDkzMgoKM0E2NUZCNjVCQjdDMjBDQkEzMDVF
-NTNBMzEyRTk3MTlBMTVDNDVDMzlDODVBNEYxRjAwOEMzNjFCMTc1N0RDMEJEOEMxMDIwNEIw
-MjE4CgpBRUFFMjlEM0ZDNTVDMTJFOTk4NUVGMzZBNDUwNDZGNDY2MDY5MjQ2MzZGN0Y3NjQ4
-MEZFRjdGOEQyNjRDNzMyNjZDMDVBNkRFNjk5QjIKCjM3RjZDMURGNzc3MzA2QkVGMUUwQUM0
-OEE2QjE1NDhFRDQxQjdFRENFNzA2Q0M4QTY2QjNEOTQzNzIxMEM5RkNGQUM5NzhDOEY5RkVF
-QgoKOEUyMjBEMDI0QzA0REFDMkNFNjJEQzhBRkJFN0FENDU0MEI1RUQzNjY4RTdCNTlGQkEy
-OEE3RjhEODIyREJFRjg0REZEQjcyNTY2RUM1CgpENjIyM0ExNjU5NTk0NDNBMkY5ODBGNkQx
-NkM4MTg3QUQzMjFDMjdBQUNGODg0MzM2RjdEODE1NEQwNkZBNDZFM0ZGNTFEMkRDMjYzMTMK
-CkZBODEyRjlGMTUwN0ZENzVCODA0MTFERUY2OUZFMjY4QjlBNDU4NzE5NUU0NUIxRkVBQ0Iw
-Mjk1QzYzQkE4QTRDRkQ0N0U3QzcxMTUxMQoKQUVCMDBFOTNDMEIzNTlFQTBERkRBRkY1REZD
-MDg1NEUyRkM2M0FFRkQzN0RGNDczODU5QzA0MEQ2RThEODJGNjQwQzE4MTVEM0Y5QTUzCgpB
-QjNFMUQ1RTFGMEIwRTEyNTUxMEYyQzZENTAzQzRDQTUxOEJEMzY4OTJCODNBRDMxQjM3MzQ4
-MDRGNzI2MDA1NjJGOTI0NkZBMkI1QjgKCjU2QkQ1NTIxMkNBMjdENzAwQTc5MTNBRjUwNUJC
-RUI5QkMzQjJFRUMxM0Q3Mjg5OTk3QUJFQzA3ODgwOEM3OUY2NTkzOUIwN0EyNjE5QwoKMEVG
-REU2RkY3QkFFQUVCQjNBNEEzMjE4NDZGNjM5QTcwOTZFNEY3Njg4RTUyM0RBMTkwMUVBM0ZG
-QjZBNzExMTBCNkNBMkM0NUQxRkM1Cgo0OUFDMzJGMDNGQTVBQTc5MTVFRjQzNzcwQTEzQUE2
-OEM0M0Y0RkEzREVENTVEMjk0MEY3NjY0ODA3NkQ5NTVCNTA5MjE3MjU0MTI4RjcKCjQ2QzNB
-MkFDNDdENjgzRkJGQkUxMjA1NzQ1NDQzNTk0MUNERTY2MjIyMEFBN0IzNTZFNDcxOEQ1OTFC
-ODFBMDZDMDREQ0E4M0E4MTRFNQoKQUZCQkI3NThFREYxRThERjFCRjYyMkQ0RTRCQjYzN0Uw
-MTdFNEU2NkY2MDY3Q0VGMDY1MEVFRDMxQkNCREM2OTQ3REFEQjM5ODIzMjlECgpFOTAyRTUy
-MDYyQ0VEQkVCNzc3MTU3MzVFNjk4RTQwNDQ4RkVDMDA4NDJCQUUzQkFBMjA3RDJCMjhFRDNC
-RkUxQzFGRTQyODQzOTQ3MEYKCjRFMUQ4MzU4RTM1RTRCOTdENjFFQzZBMTI4QjQzODNFQTAy
-NzZBOTQ3QkM5RDE2Nzk0QzNBM0Q3REIwQkI1OUZGNjQ5ODc1RTBBRkE0MwoKRTY1ODZGOEI0
-Q0E5MjFDMUFBRkMwRTJEMUM5NzBCMzgwOTc3Q0JBNTA1QjNENTMxRjM3ODkyODJFMjFEMUI1
-RDlEMzM3NkVBRDdFNEU0CgowMDA4NUM0N0NCODU4REE5NjBCNTVCRUEwN0UwQjAxMkJFM0Y1
-NjIwREJBMTY3QzEwNUI5NUZGOUI1RkREMjhENTM1NEM4NzdFNTY3MTAKCjFENDVGOUFBNDcx
-RDI3MTgzQTU1QUI5QjM0RDYyNjgxNUQzMkNEODI0QTRDNDY3NzJEOEZDNDkzMTM0MUUyMjcz
-MDlFODMwNzgzNUZEMgoKNTM1OUExMEY4NEFENTc0NEI4MTgxREFENTkxNzZCNkI0NjY1OTVC
-NDIzMzE2ODNGNTc1NDZBQ0E2MDEwNjY1NEM5QTFFNUYxQkQ0N0RBCgpGOUY5MzU5OEU3NUNG
-MDMyMTk4RDY5QTFDNEIxNTJBMjk1ODYyMDk5MDNDN0JGMTI2QkRFRTVBMzgwNkJBMTc2NkJC
-MDJGNUQ3NUUzM0QKCkIyQjAxMTEwNkZDM0M5NjRGOEZBQTlFOTg1N0JDQUY5MDM0NjNGQTdG
-QzM3Mjk0RTRGMEZGOThCRUEyMkZCNDRGN0FFNUU2Nzg5NjU4QgoKQkFCNUMzMEQ2QzMyRDVF
-MjRFMjY4QjU0MzUzRDEyNDVFRDc4RDFENzM4NUVCRUVBNDlFQ0U0OTZBNDI2MUY5OTJGNjdC
-NjY0Nzc2RDZFCgpDQTFDODM1MjQ5OUJGM0NFRUYzNjVFMTUyNTgyRjk4NTkwQjhEOTAzODY3
-QjY1NTcyMDBCMTA3MEQ5MUVBMzJFRkRBQjA1ODA1NTlFQjUKCjU2QTgzNUY3NEJGNDU4Njkz
-RjA5MzM4OUVFMUQxQjFGQzFCRDJBQzExNDZFQTlDNUU0QjE0QkYyNkFCM0VGQTBCQTBBQTE4
-MTNFNkM2MQoKQjcwMTFBQzMzMEIyOTNBNUNDRERCNDE0MTJGOTdCQTAyRDM4RTUwMkQ1OTY5
-MTJEMTY1RjZCMDMwMDIyODg5MTIxMERCNzAwRTk3NUJCCgo0NzQyNzM4OEQ1RjMyNDZEODBD
-Qjk3MDNGRTVGMkIyQ0Q0MDg3M0FFMDUyMTg1MEQ0RDY1NjE3NEI1MkYyNEMwNkFGMUQ5RkU0
-QUJCRjkKCjhCNDMyQjYxNTBCMDcyNUUzMjhFNTRCRTM4MkExNkQ1REY2QzQ3RDlERDE0NzUx
-Qjk2RTJEQkNBRjRDOTg1ODMzNkY1MjcyMzhFMjYzQwoKNTg3MzBDN0UyN0RBMUIyMUFBREJC
-NDgxNTRDRTVFOUM5MjY2MDM5NEQ3MjgyRkMwNzkxN0M5MUQwRTkxREFFM0ZGN0RFQ0ZENUU4
-MDgyCgo1NjNFMTY3M0ExNUNGQzA2OUUwOEQ1NTRFM0I4REY1NzAyMDlENTY3QzY1RjNEMjZG
-MjUxQjQwNUZBRTVGNjEwNjYzNzcyOEJERUY3MzUKCkVDMkQ1RTdBQTNGMDA0MzRFQjU4QzMz
-MDdEMjIxQzEyRkVGNkQ3NDFFRDg3MDgxREQ2QjkzRDJFOTI4MkQwOUE3MjYyRUZGQ0NBRkZE
-RQoKQ0VFOEM0RTk0MkFGRkQ4MjE1Qjg0RkE1N0Q0MUY1ODE1RjNBMzE5MUJDMzc5RURDNDU0
-MjUyRTY4OEVCOTc4OEE1NTFBMTc4NzZBRjFCCgowQTVFRDVBNjJFOTJFN0RFMzMyRUQ4OUE5
-QjRGNDA2NTUyRjlCNzA2QTZGQUQ1OUE0MzNGNzJBQjZENDQwMUUyNUNDMzdDMEZGOTE3MTMK
-CjRDODM4RTVDQjNDRDVBRUI4NTU2NDQzQjFCRjUxMzkwMEYyOTNCOUJDRjMzRjk2NjA4RDFC
-MTA4Q0Y5QkM3REU5NUY0QjUxOEE4Njk4NwoKMjhGMjA3MjlENjBFNzVFNTM0NzY4NjgyMjBC
-NjRFOTA1QkJGQkU4RTI2ODA4RUFFQjBBNDZBMUUwOTZFRjg2OEVFNDQxMEVCQzg3RDM2Cgo0
-NjAzN0FGQzZEMTc3RjQyRjhEQUI4RDVDODgyMDBBRUExNDM4OEFGMDlFQUY1Q0EyNEQ3MkEx
-NzJENjU0QkUxOThDQjQyNjk0OUM0RTMKCkQyM0M3RDQ5RjRBRUU0RDIwMTI0QjU4MzA0ODBE
-MEE4Q0QwRjdFRkNBM0ZEMjUxQzYwOUQxMjREMEJCNEU3QTZDRTg5RUE3QzkyRTBFNwoKQjlD
-Qjg3MEUxMjdFMDMzN0EyRTY0NUFFQzI3RDFCMEQ4NUM1N0QyN0YwRjdBQTFFODQ5Q0YxRjRF
-OUJERjAyMjk3QzNFNjEyOTAwMTBECgo0RUIwRjMwNjk3RDMwRUNDRDFFREUxNzY2QkMxMzdG
-MkUyQTNEN0NFRDI1QjFCQTI1OUQxMDBCQTE2QUMzRDI5QzAxREY4M0RGRTVCMjQKCkRDQzlG
-RkMyQjgwRjYxRTkxRDJFNDE1NjAyNDFDMDBFNzlEQTk3MEEwOUQ4QUEyMjlDQzJGNUMxMTRF
-MDcxM0VBQUI1NjA0NDJDQ0U3MwoKOTkzRUI5ODgyRTdDMDI5MkYyNDhDMDA3MTdFM0ExREE0
-NkFCRjNGQzcxNjIyNkVBQUUzNUU4RjIwNzI2QjFBMDQ1QTIwRjgwQjAyNDczCgo4QjdCOTNE
-MEU3OUM2RkExMTc4MEE2Qzk0RTY0REU1M0ZFQUUwMTlFNEQ4Mzg2MDdBMDVDNzc0NkEzMzg1
-Qzk3MjhDQTI5RDhGNjQzNzMKCkIyNTMwNzI3MkE3NzAyODgxNUQ4MDQ1MTA2MUIwMTBFQzhF
-ODJCMEI3MDI0M0Y2NkI5N0FCRUQyNjRGN0I1M0IxNjNERTgyMDQ3OTZCQwoKQzU5M0NBOUJF
-M0Y0M0UyNjcxM0RDQkQ5RTM0NDlGRDMwMEY2MTExQTUwRUREMkY5Q0NCQzZEMDAxMkE5NzNC
-NUY2QTE2NTEwNzRGRDE0Cgo3NkJGNjk0NTY4NzBDNTIyODU5OUZFN0NDMDk1OUY2ODA0NDk3
-QTI4RTNBQUIxMjkwMjQ4MTZGQkQzQzAxMDFBOUI3MDlEREUwQTkyQUIKCkYwQjI5NDhFMDk2
-NjI0RDA2N0YxN0E4Q0YyRTgyNTFBNDA5NjlFODU3RDg2NzM5ODgzQjZCNDY5NjdFQUMyMjg2
-QkQ0NTFGMjZCNEExNgoKMDI2RkM1RjNBMDg3RjRCRTIxQTkwRDMzNkI2OUM1MTE3RjNBRDUz
-MkFGNkUzRkU5QzhBNDg0RDM3MkExQzhDMUEzNDIyNjREM0MzNzgyCgo0RjNCNTgyRDI4ODU2
-NDJEMkIzNDQyMTIxQTdGM0JGQ0JDQTM1RDA5REFGQzRCOEFBOEJBNEUwQzExMzlFM0YyOUFC
-RURFQTgyNzMyRDYKCjM4MTBGN0ZCMkE0NjJFMTFBMzJERjJFNzQ5MDRBQzdDNTcwNEM1NDVG
-RDZEMDhENkQxRjZGMDdDNjlCRDU0MThFODJGNkIzM0MzNkE5OQoKNTA0NEJBNjYwQURERUIy
-NEM3QUQxMDg4OUNCNzg1MTY5OTYwRjhFNkVFRTlBMzIxQkFBNzg3OTRBRjA4NjBEQjUyNzAx
-OTNDREM5QzBECgo1REFDNDVBMUU2N0ZENjA2M0ExOTk4RDA2MjRBNUREREVCQURDOEM0MjMx
-ODkyOTUzNUE2OTM2Nzc2NzNCMjRDRDJDRDI4NjkxNDhEQkEKCkMxRUE0ODZERUIxQjBEODNF
-Nzc4NUYxRTFFRTY1QjlBRTNDODM5Qzc0MjcxMDhDMTNDNEI3RjY1N0JBOTY2OUQxRkQzRTNC
-RTVGRUU1MAoKQUEyMDk0NkVFMTczQkRDMEE5Qjk0MDc0NEFFRUEzODQ3RDU2REU3RTg2QURE
-RDZGNjMwMDBDQjA0ODQwNzA3MEFGNjVFNEJDMDk3MzQ3CgpDRDgyRjYwODREMjBDNTI5RTM1
-NDkwNDkyRTUyOTNGOTc1NTRGOTk3OTQwNUNDNkZGN0Y4MDFDQzNERUE1MERBRjlCRkVGRTg2
-MjNCMkMKCjhDNzU2MDc2NkM0MTE1RUVGQTQwQkY5ODA2NDdGNkQzMTg3QTY4OTI5NDA2MERG
-QzIxNEUyMjQ0MTA0NENCRkJCMkI2Mjc0RURENDRGNQoKMjE4MDU3ODY5QTQ2QzUxNzEzOEU0
-Rjg0OERBRDY5RjI0MjA4ODk2QzhERjg2MEYwRkY3MUVGODkzMTBGMkQ4MkVCN0FDRTZBNzI5
-MjhCCgowN0NDNTdBMkRGNjQ0Mzc2MUQ5MTI4M0I1OUJEMDA2NjUwQ0RGRENFRjhCRDY0QTBG
-NjI2Q0VBRDc3MDU3MkQ0ODlFOTE2QUZBMUFDMjYKCjhGNkQyMkYzRjM3QjYzOTI4NDcyQjgx
-RUJEMjg3RjY2MTk5MDBBQjVCMjkxQTA0NzkwNkFBRUUyQ0Q5M0Y3RkRCRjE2NThERkVCOEQ4
-QwoKRDdFRjk4N0QwRDEyMzVGRjhERjIwMkY5RTgzQUQxNTQ1MDA5MDk5OTZGRURFQ0RFMEVC
-QjJGOTVGNjk4MDVFRjFGNzc0RDREMTQzQUFFCgo5QTUwQjY0QkQ1MTREODNEMDBGMDU3MTVG
-MTYzQkM3RjY0QjkwNjYzQzU5NzFENkE1MzkzQzFENjAxMTk3OEVFRkZENTdBN0I5M0ZBNTcK
-CkU2Q0UxQ0JCQTMxREQ1MTA2OTZBMzQ0RUJERkFDREI4N0FGREI2RjQyNUJDQzEzQUQyNDVF
-OTI2NDQ2Nzk2MEY5NTFBRDc5N0FFOUQ5RQoKNjMxMjY1RUQwRjEyRDRBQkIwRjYxODlGRDk0
-MzNBMjM2RjAwRDAxRkEwMzhENUJDRkIzREY2ODM5NzYxMDcwOEE3NzdGQzMwMjFCNjg1Cgo0
-NDg0NDVEMzI2RUE3NjQ5NDA2QTg4REEzOTI4NTdGRUE2MTU2Njg0RTM1NDdFOEM3NTdCQzM4
-MjIzQzBDQTI1NjlCRTQzOEQwM0I1NzUKCjcwRTgxNUQ1OEJEODJDMkVFQzg2MTAyMEMxREJG
-MDczRUZEOUM4MTM2QUJGMjYzNDYxRDNBRjc3RDA1N0Y1MDIxNDkwNERERTUxQzNBMAoKNjFB
-M0ExRTFDRkU0MTNFOUExNDhGMDVBODEwODYwOEVGN0ZEQjk2RjM5MkU3NEVFQkM1QTREMzU0
-QkEyQUU1Njc4RDI4QUVDMDE0OTc5CgoxMjg2MzA5ODRFRjNENTU4NkRCODc4M0YwNjAzRDcy
-MTA3ODJERTk3OUMwN0JFOERENTg5QzcxMERENDQzOTQ1NjlCOEJERTc3MEJEOTAKCjM1RkFG
-M0NGQTQ4MDcwQzVDREM4Q0JFQTJCNUFCMjYyMEQ0QzQwODE4QUQ3NDA5NjZCNzMzQjk5RThD
-QkFCNDkwOUY1RUY1QjU1NzVFRAoKMEE4Q0U0NjM1RkJFOUQ2OUU1Nzk5OUIyNzM5RjI4MUNB
-NEJFRUQ2RkYyOTQ4Qjg2NzA0NDZCQkIzMEQwQkE2Njc5QUEzOEMyREEyQTMwCgo5NjA2ODdG
-MkRDRjBDNzQxNTM5MTAyOTY4QzhENjU4MkU1NTk3NDgxMTYzMEIwRkQyMDkxQjYzNDc3NzQ3
-RjQ1Q0EwQURDMjMyMjFBQjQKCkMyRTk0RURBRDZGODYyMTE5RjEyN0E3OUEyQkMwNzMyNTRF
-OTQxQjM3QjgzMEU1RkI1MDRCMjZFNTgwMzIwRENGRDVCMkQwM0E1QTZCRQoKM0M5MzUwMDMx
-RDdBNThGN0IzNTFBOUY5MTdBREVGQTcyRDgxNDkwQjMyNUM0QzFFMzkxNzVEMUQzRjczOTRB
-MDA5RDA0QTdCNzA2RTFECgozQjZGNjFCRUEwOTZDRjREQzUwRTRDNzI5OTk2NjdFRUM4Njkx
-MjVCM0VCMTUyRTNFNzI0MDk2OEY5QjkzQkRDOTFDQzVFNjI2NTREN0IKCjQ2RTJFNjBBNEQy
-MjYwMzIyQjU2M0M1NDNEOUUxNzFENUYxRTgxNkU3MzIyMjcwOUExRTJGMTQxMTIyMDkwODk1
-NTREREVFMTdDQ0IxQwoKRjA2NkQwQUExMzg3NTI0RkM0QjJCQjQ3MDcxNDA3NDI4OTAzQTFC
-OTcyMUQ2Q0U0MDQ2RUMyRkU0M0I5Q0Q5NDA5QkFDNDFCNzZBMjdCCgo4RDRDRjNEQTQyRjlE
-RDhBOEE3NTFEQUQxMDNGMTY5QTE1MjREMDc4MDAyMkY3NjRDNDlGRTlCNDRBRjgwRkFCRkU0
-OEJGRTQwRDYyRDQKCjFBQTA2MTgyNDVBRDdCRkFEN0MxMDVBM0MwNjQ0OTNCMTA5Rjc2NUVC
-MDZCRkY1QzFDODEzODI5NkM2MzVBRDYyNThGQjA4OTRDMkRERAoKQkQzN0M0NkZEMjIzMTFE
-MjY1QUU1MENGMzkxQzg1RjZBREY1OTE4MUVFQUI1QjY1RDFGODExNDlBQTU0MjVCMUMxMUE0
-MzIwMzJDQUEwCgozRUIyRkE4MjA0RTlCQjY3MzY5OThERTlCMTJFOUUzN0VDNjUxNTYwRjRF
-OTA2QjM0MkE3MjVFMjEwMjFCODJCODQyNDlENUMwRjZEOTYKCjMzQzQxOTYyNzlFNTY5REIx
-NjU4NTg0M0Q2NUZBRDBCNUQ4OTNCQjBBOUQzODEzMjRGNzZCNjFEQTg4REI4MTg4RTU5QzRC
-QTE1RUU1RgoKQjI4OTJFNzI2MEY5RUE5ODYxRTQ0OTIxRUNDMUEyN0Q3OUIyNTA1MDYxNTg1
-MkM4MzhCQzNCREI0RDlBM0I4MUFCMkRGRTc2NjdFMkFCCgowNTkyRTREOEFDNDE3MjAzMUUx
-Mjc2MEYxNEFFMUMwNThGOTg2QTIyNjk5RTAyNEU2QzZDQjUwQTQzMDY2RjFBMDMwNEFBNjdB
-QzQ0Q0IKCjM3OTgxNEM3OTExMDNCNkMyRDRDMTQzOUZDMzA0NkI2MTFGNjMyNkE1QkJFNjk3
-Mzg0QTk3NkQwRDAxODE1QjkzM0VCNDczNDk2NkQwNwoKRTFENTA5NDcxQkZBRUVGQkQzRjk2
-ODlFQUY4MkIwRTlBQURDMjM2OEFFNTJBQTQ4RjAzMThBQTFCQ0M4MUMzRjJCODlENDhDMDhB
-MUY5CgpCQTREN0NFODZDNUU5MTNBODdBMDU2M0Q3NzkwQzQ3MURENDdDQkRCMjczQUEzN0NE
-NERFNkJGREJBNDA3NDgzREUyNzVGRjU3RkFGOTMKCjIyNTkxQTg1MjNFNzdBMzM0M0NCNjEw
-MEFGQjYwMzUyMjNFMDVFRjM1MzAzMTM4ODVGRkM2M0E4RDcyREUwOTlDNTBBNzc0QTYwMzA5
-OAoKNTlFRENCM0M0RTQyNEM5MDczRTBCNUIzMkQ5ODhGQUQwNEVCNDg2RTY1QTNFQTdGRjdE
-QjNEMkZERkFCQkM5MkRGNkM3NDJFQjZGMDlECgoyQTc4Mzg3REMwQ0E4NTYxNzQzQ0I5QzhB
-RDk0OTQ3MkRBRUM2NkFDQURENDM1QzgxOEQyODEyNzc3MEE4REEyQTUwOTBDRUNDQkUxNkEK
-CjUxNkQ3OTg1RDdBNDlDN0VFOUQwODg1NDQzNTAwOEFERjI1MDQxRThCQTU3NDQ1OTFBQjdF
-MjJEMzcwNUVBQ0JEMUQ5QzYzNzhGMTcyRAoKQjgyQjJDN0JDNTEyOTNGNDAwNjQzMDZGNjkx
-MDNFNkEwQkMxQzEwNDZDMkEwQUZBMkUwMzg1NTBDMTk0MzU0RUI4RTI2MzA4NUU1MzkwCgo3
-NDlFMkM5OEY0M0VBNjhENDY2RTQwQzVGRUZFNjc2NDkzOUNGRjgxNzgxNEI4NUJBOTI4QzU4
-NTlEMjA3MDlENzhDRDUwQjk1N0U4MDkKCjBGMzdDQUUzNkIxODFDMzdFODBFOUU4NjkwRDJC
-OUYwQzM0RDIwNEI4RTRBNUExNjRDQUYyRkE0RkM2QURDRDc3NTA5RUFBNTIzNjIzMwoKNkU5
-REJGRDFGREExQ0YzMkE5RTk4MERDQkY0QjdDMzM4Q0QxODM5OUFDRTUxMDg0MzU3NjdGRUE4
-NDE0NTg1REU3QzNFMDg1OTBCMzdDCgpDQTAzMThBODJDNjlBRERGQ0VBRTE1NkU1RDFGRTNF
-Rjk1MjY1MTVGRUZGMzU2RTAzNTFDREQxRDNBRDM0MEU3NzI3QTQ3ODI2NERGMkQKCjQ5MTI1
-OUYwNUE2NTA0MDkzOTQ5NTAyRThEMTAyNTA1NTZCODdBQ0JDQTdFQjkzOEM2MkJFMEQwRERB
-NEQwMkE5M0UxODc2OUI4OTVDMAoKNEU1RkMxQjIyOUZGNEEzRDcwNzBBMDg1NjI5MEJCRkYz
-NDYwQzVFMUFGOTIzNDZFNzg3OUYyN0RDQ0Q4QTUzMzg3OTE2NTZDMzc2MTI4Cgo0MjFEQTRC
-MDdBNUY5NjE2MEYwNDIxQUUxMEMxRjE2NzVEMzk2QTgwNjM1QjdDRDFCRkE0Q0M1NjQyNjNE
-QTVDMEM4NEYzNzg3REM4RDAKCjhBQ0FFREUxMTQ4NkMxNTVCQjFCMTY4MDYzMDNCOUQyMTk3
-NENBMTk1MTZDNjM0MDJBOEYwMDY3Q0VEQUY2ODJFQjJBMjEyNzM0OERCQgoKNUE2NjJCNUU4
-N0E1Mzc1QjM5NkIxMTUzQjg0MzMwMzUwMUVEOTM1MzRERjdDN0ZDQTA5RUZCMDI2MTMxMTE1
-NUZDQkEyRUE5NzY2OEE0Cgo2NUE3NzUxRjkxQkNBNTY2RTQ5NDY1NjVCQTFENjY0Q0Q4RkVE
-MTlFODRFNzU2MzIwNUREN0FGNzdFMkE0Q0JDNjg0NkVGNUFEQkQxMUYKCjE5NThFMDg2RkQ3
-NjczRDVBQzk5Nzg2N0VCMDIxNzMxNEYzMkQ2MDM0MkZBQUZGRkY5NTdGNjBEOUIwQUM1N0U2
-MTExMzdBQzY5NURFRgoKRTMxM0JFQjUzMzRCODM4RjgzQTU0QzNFRDc2QUM1NUM2NzU3MUYz
-NjdBNDA5REEwNTJBMDM1NDgzN0JERUU0RDExQjQyNkRDOURDQzc0Cgo2MUE2RjQyMkI5NURG
-Mzg5NEEwMDJCMDJCRERGRTNGRUJBOEQ4RTNCQjc1NTZGNTAxQTgzQTEwRkIwMTM3RjQyOEZD
-NTIyMjYwRTBBNEIKCjE2NTUzOTk0OTBEQTgzQ0NFQUNFRDE0OEFGMUY0NDdDOUJCRkUzQjE1
-OTM5OUM4MkVBQjI1N0JFNTY4QTREQUQ2OEE2NjRENzM5NzM0MgoKQUFFN0QzODIyM0NEOUFF
-RkNGRTVFMzk5RjFENzA0MDRENDcwQTFDRTEwRDQ2Q0FGRjVENTIyMzUyQzUwREI4RkFCRDcz
-NDhGQzZDRUM4CgozNEQ1QTgyQzA0RERBMTA1Rjg1RjQ1MEU3MzYzRTRFOTg5QzY3MjVFNkJC
-Q0Y3QUE2NjgwQzk3RDEyOEZBQUY0RDZFMzg1OUYwM0IwRjUKCkEzQThBNzBFMEM5REFFRTg0
-QkI5NUY0MTkzMUEzMEFBMThENkM1MUQ5REQzRDNCMEFEQzdEMEI1RkYwRDBBODg5QTk0NEM0
-NDY4Rjk2QgoKOUU1OTUxNUJCQTVDODZCREM1Mzk0QkM0MEI4MENCREExOTg1N0U5REZGNDFF
-NzU4MDJEMkEyQzAyNDcxMjJDRTk0QTdENUREOEY1ODQ2CgoyN0FDQTBCRTVDMDQyQTAyRkI3
-MzYyQzM0NjE0QkNEMTczNTBBRkIxRjBFRkRCMDlBRTJGMUMzN0ZGMjFFMDA3Q0Q0REYxNzI5
-QUQ5MzIKCkZBMjBBOEY4NUMwNjIwMUY5NjIzRDk1OUI5RTRBOTBDRDA0QjZFNEFFMkMxNzk1
-ODI4QjAyMkQ5OTBEOTM5RDVEMTk5MkNCMkRCODA3RAoKMDcyQ0VFNTgwRkE5QTc5RjA3RkQ2
-QzQ5ODBDOTk3RUM1MjRCNTdCMzUwRENFNEY5MDEzQjVCQjA3MTY1REQ2RkExOTAyODY4MzI4
-RkE4CgowRDNDRDc3MEI3ODM4MThERTUwOEU1OTM4M0M5NkEwNUZCQkE4NDA4MzFFMTI5RjBE
-QkREN0I0QUIwNTgwMUU5OUU5NjhFRUI3QTAxMDYKCjVBRjA0RjExQzY0MUNBREJFNzQ1RUI2
-RUE3NkNFRTFBQTg1MjRFNDA1RjIzQTlEMDY4Mzk3NEE3ODg3OTI5OTYwMEJERDA5MjRGQkYx
-OAoKOTA4NjI1ODcyQTYzQzM4QjREREJCQzhDNzY0RUJEOTlGMDg3N0ZBREI1OUI1RjFENEZE
-OUZEMkZDMUZDOEM0RjA2OEI3QjIxQjM3ODdGCgo3MjhDRDhDRjVGNTJDRTRBNzYwNzQ2MjQx
-QzRBNjk2RjZCREJBRDU4QTREMzUwNDFENzQ0RkJBQkRBMkY4ODNDQjQ3NUU1Rjc1RDFFQ0IK
-CjkwNTZDM0U1Mjg3OEZBMEREREFBMzAzNTc5MDY1NDNGODQ0MEQxRkVCQzAwMDI5NzY3NkUz
-QzVBRDQ2MkY4MjVGMUQzMDJBMkM3MDIxRAoKNUE2MjU5NTM2M0E3OTFBOEVEQkIyMkVEQjlE
-Qjk2OEJBMEVFQjRERjY2RTQ2MjJBMDRFQjlGREIwNDFERkI1MjdDRDQwNEQ2MkU0ODk4CgpE
-NUU3RUQ0NjRCMEMyNEQ1OERBRkNBN0U4OTE0ODEzNjM3NjFEODAzQTk0NTdCN0EyNDAzRTE4
-MTZGQzY3MTY3NTcxRDQ0RTI3NDY5RTcKCkIxQkMzQUI4NUNBRjgwOEJCNDA0MzUzN0QxQjgw
-Q0M0OTA5NzBEODdBMjA4NTdEODY4Q0JFOTAxMDc2NDE5NDM2QTRFM0M5NUM3QzlCNgoKMEUz
-Q0VBQzdEQjE5ODU5RURFMTQ5RkYzRjA3QkE1ODZCRTEyNjk4RjVDMENDOTgxNUZGMkE2QzYy
-RjdERDk4REFDNjM5MDg0Q0E3MDAzCgpDOTlCOTE5NkNFNkE2REM1OUNBMEIyMDJDOUFGNTQ2
-MjBFMzhBMDcxMkFBQzZFMDFEMjcxMUQ0MEQwMTJGMTVEQ0M1MTY0NzcyMUQ0RjcKCkYzMUUy
-OUU2Q0Q3RUJCNTk4NDJCMDFCRkY4QzdDNDI0RjBFNThENEZEMTVENTZEQUU2MEE2NDUwQUYy
-MjU0RDM2OENDRDA5Q0MzRkE5MAoKMTIzQzQ0RUQ0RERDRDdGMDlENDZDMTM1NEU1RkMxQTZD
-MTkwMUVGQkRGQkQ0RDZBRDgwRUU5NUVBMUI3MjZCMjMwOUMwNzIwNDI0Q0QyCgo1RjcyRDlF
-NUJGMzhCNTEyNzFGRDIzRUVBOTMwMTMxMTRCMzU2MzcwQTNDOUQ0MzhFQkZBMDU5MDE1ODY1
-NEUyQTNCN0Q0Qzg4NzkyMUMKCkY2NTM4RDFCQjI5NENCQUM3NUNBNjZDQ0RERjBCN0Y3REYx
-NzQ4OTQyQTkwOEMwN0VBMTNFNkI4MDlCMTM1MEI5RDczQ0VDQURDOThGQQoKMzU5MzNBODFB
-MzRCN0E2RjhFREM3REMyQUY2MEIyRjA2MzI5NjJCNDAxQUFGRTA2Q0JDOEVBNERDNjM2NDA2
-RjJDRUQ1RkFFN0FEMEQ5CgpFRDUwMjM4MTM4NTVBODMxMTk0MjNFNEExMTRCNDEzQzNBMDE2
-OTY5QTc0ODFDRTQ1RTRFMDYxRUQ5OTgwRkQ5NjE0MDRCODk1RDVBN0UKCjE2N0I0RDMyRTE1
-M0RDNzc4RkNGNURBNUVERURGNjhENTcwNzY3MUIyM0RGMjg3MUM2M0ZEQkQ2RjlCOUJDQTlF
-N0JCNzc2QjM3MTA3QwoKMzg0ODQ0NTNGMjRCNEEzNDIxQTIxRDg3OTdEQjgyMjIzNkNBMUEx
-NUQ4NzE5NzI2QzU5RDUxRjczMzIyNTlFN0NGMjNGMjhGMUQ5MDNGCgoxMDBGOUIwRThEOERF
-NTZDQTNBOTlDQTVCNDBEMDYyMkNDNEQ1QUU2QkE3NzExMkNFQTc5QjEwRDBENUE4MDhEQTIw
-RDc2QjU2RkM0OTkKCjIwNjU4N0Y2QTBFQkVDQTEwQUY3M0Y4RTA5MUQ4MjYyMkJGQUJDNTJB
-MjhEQ0M4QzI5NUEyNDA0MTg2OUU2MzYzQ0Y1ODk2NzBEMzQ3MQoKMUYzQkU2NEQwMkM4NjEw
-NTlGQTlEMTAwODFGRDJBMEVBMTM3QzM5QUNGQjJBODNEQ0M5NDg2MTk1RTQwRTk5QzBGMjg0
-MThCMkMyOUMyCgo5QzAxQThDRTREOThGMjlBMjJFNThDQUE1MUU5RUNBRjRDQTg1RkI1OUUx
-OEMyRTUzODczQTY0MkUzMUJFOEU0NzU5MURBNkVDNkQ3QzQKCkUxMzA1NUI4RDA4RDZEMUYw
-NjA4QTEwODBBMzg4MzEyODBDOThEN0Q0N0NGRUJEMzI1ODQzMkFDMzk2QkJGOTVCNzdFOTQ3
-MEJBNEI2QwoKOUEwNTJDQzhFQkQ3Mjc3QzNCNzg1MTRCREM0OTE1NzBCN0Q3QjQ3M0MxNUND
-RUVDQjREMzEyQzc3NUJEOEQ5OUU0NkVCRUNGNkMzNTMzCgpGRkZEM0U1QkVGOEQ3Qjk0MjQ0
-NDc5OTlBOTFDRTE4ODA5MThENzUwRUEzNDVFNkExMDc3MURCRUJEQjFCNENDQ0UxNDc0QzA3
-QTlDNEUKCkE4OTQwMTdCQzU5MzAyNENDMTZCNTk1REJDODM1RjRFRThEOUFERjdGRTg2NzFF
-MEJERjM2NjEzRkU3ODQ0QzU5OEE3ODlDQTc4NEI5QwoKOTdBRDIzNjFEN0NEQ0IyRTlCRDQ1
-MDMyQTM4RDZCMEVGREZDOEY2N0ZFRDhFQjNDREUyODBEODFDNkRDOTM0OEJENDhDQzU4MEQy
-OTU4Cgo1NjU4QUNENEMzREJGMkQ3RDg1QTc4QkNFOTUxMkQ3RjdCQzJFREY3Qjc2Njk5NTQ1
-RjNCMUJDQzIwMkY1M0M4MTIzQjE1RjQ2RDhGODgKCjEwNzBGMTIzMkNDOEZEMjEyRjE1Nzg1
-RkVDRkM2QjgzQzBGNDM5NzE2QTg1OUI2NDIzOUMxRkE4ODBEMzJGNjIzNzZFRUIxMkVDNkMw
-MAoKMjM1QzlENTUwQUZFODRDOTgxMzI5QjRCM0RGMTdCQzBFNTdFNzJEODkwNThEMUQzRTZF
-REE5MUVDRkVDMEVDRjBCODAyRDQxQjRBRkNDCgo4REQyNTBDMTNBRUNFREVBQTFBMEE2RUUy
-NkYzMzUxNTcyODQ5RkY1RTYzN0E4OThEN0IwQTA5OUQ4NzAxMkUyNzQzOTZBMjdFMjlBMjEK
-CkRCMjk1ODRFRDcyRkI2MTRBMzE3RTQ3QzYxNzdBOUZCQjJFNTMyMEJDRDkwQ0MwODZCN0RD
-REU2RUNFRTAxRjU5NzczOEFBRERDN0Q5RAoKMzNCMDJBMDlDRUNBMkEzODlGMTZBQURDRDJG
-QjAyRUYyNTdCQUIxMjY1RUNEOTdFMjVGMERFMUM4RTc1MjZGQjVGOEMzMjhGRTM3MDc4CgpB
-OUQwRjMwRDgxQjkwQTk3QTc1MjUwNUM4QTJGOEM5QzcyMjZFMjQ4QUZDNUI0MzE4RUI0MDdC
-NkE1RENFMzNGRjUzMDk3OTQwNzM3MzcKCkY3MkNCNTVENzNGRjY2RUUxQzA1NUI5QTNFNDkz
-MDJDMTFENzI0OEYzNkNFMjU3RkIwNTE2NzQyNzRENTFDQTRDMERFMUY5MjdBODgyRAoKRjU0
-QzU2N0I3M0ZGMUQzODU1NkNEMjI3MTZBM0YyNjlCOUZEREQyNjFGQkFFNEE5MTZFMDgxOEVG
-QTVDMTkzQUEwMDQ1NkRCNkY3ODQ1CgpGRTQxRjcxNUE4QzAwMDBFNkZBODE1MTg5NUIzRjIx
-REQ5QkVGOThEOUNGNjc0QTYwQzhBMTA4ODUwMkM2RTA5ODk5RDY0NTZGNEFFQzkKCjU4NzUw
-NjhFMjlFMjE5OUVDQ0I2MzJGN0E0NTkzMjQ1MTJBM0JCRTZFNjUxMzIyNjNFRTNBNEUyRkI0
-MjA1NTgwRjVERUUwODNGRDg0RAoKNDhBQkE4RTNDRkU4MUZCMTQ2NUQzMDI3RkM2OUMyNjA1
-OTRFRDM4MEM0N0I2QUUzREMyRTM1NjYxOTA2RDk4QzAxMjZGQjdBODBGQTNFCgo5QTJERjcy
-N0FFMzYwNDhGNkIwODNEOEQ4RDhCMUE4MDI4QjA3M0I5NkNFNEI1NDQ3MDUwNjY1QkQ5MjZE
-NUExMTUxRjNFMENENjNDNjAKCkZBNzdGRjI3NDZENEE5RTNFMEYyOTU3NzA0MDhDRjM0ODY3
-MkVBQzQ3NzI0NTgxMjVBODk3NkJBQzc1NDY5MDI1QjVBRThCQzU1NTQwRgoKNDEzMDhDRTMx
-RDI3MzY5MEM5NUQxMTczRjA1RDk1M0ZCQTI5MDJFMzY0ODg1RjgyMUUxNEZCODE1M0M3NDlF
-RkYxMDAyNDdFNEFCMzE1CgozMjFEOUMxOTJFNjhCM0ZEN0I1MTU0OUIyMjI0MTgzMTk1QTU0
-OTAxNkQyQTRCRjk0M0YzNzE4NDc0M0Q2RTU1NzVGNUExOTJFMjMyOTAKCkNBMjI3RTI5RjlC
-RjE1QUJGNEZBRDM4OEE5RkI2ODlBODA3QUFERDQ0MDQ4MTkzQjVCNUI4MUNBOUY5RDcxOTU4
-MDNBRTAyRDFBNkE0OQoKMDAwNzRFNDczMTM1NTRBNEYzQjg0MkYwODA1MTBDRTI3NjQ1QjY1
-QjU3NzYxQTM2NEQwRjg5MDExNUQ4ODM0RUVCREZBMjQ3OTIzQUUxCgozM0FFREY4QTQ2RjFE
-MUQ0MTAyOTZFMjVFNzlDMDFGNjY0MTM2RDhEMjE5RDMyNEZBOUIzMzQ5QjFENUQxODBDMDI1
-NDgxRUY5RTdCRjEKCjEwMEYyNDJFRTE2RUY0MzMwNTQ5MTNFMEVDRjI5QzRBMDgzMEU5M0ZB
-OTg5OEY3QjU1MDVGODdCRENDMDIxMDE1MzFDN0M5QzEwN0JFQgoKMEJERUNBRTVBNDlCRUI0
-NUQzQkMwRDg2OUI0NDFCQjQxQTY0QTIyOURGNUE0MENGMjU4QjAxNzgyMDNGOTEzMThEOTdE
-NTI5RDkyMkU4CgpBODJEMzZGMzRGRkY5OEYwQjBEQzA5ODQ5MDNCOURGRTg2OTMyRDk2QkMx
-NkM3NjZGQkFBNEVFODQ0OUREMUJBN0RFOUFCRUFENjg5ODkKCjhCREMyMTU1MzYwQzYzMTQ1
-ODU2OEU2M0I5MjlERUY5ODNDNkU1NkI1NjMzOTRCMjVBNDRCMjVERkUyQ0JGODYyNDREMjY2
-RTQ0QjZEMgoKREExOEFDQjRCMkY1MzdEQjY0MTEwRkM1MTg3RUNFMjBBNTE0Q0U2MTIwOTk1
-NkE2NTU1QjM1ODE4RTQwQTcwMzZCODQwMkM2RTdGOTU3CgowQkE2OUJEREZEOENEM0M3NzQ3
-OEVEODQ5MUMxQjcyMURDNjYwNzhDNTkwOTdGNEYzMjhCQTQ1RDc3MTFENUYxMDVBQjhFNUMw
-RDNDNUMKCkY4OENDODVBMkFEOUQ2MUIzOUI3RDVCRkQ0MUREMjI3RTUwQUM4MjQ0QTAwRDlF
-RkQ2QzEzNjc5QjQxNUIwQTBEQUZFRjg3RjJEMEU5QwoKRTFGRDgzNTczNkRGODY1QzE1MTYy
-OENEOTUwRTdEQkMyMTZBQjM1OUQ0NTc1QkM0NkQ2MTBENkQ0QTBCNTAzNTE5NjY1NDFENjBE
-MDc1CgpEOThDMUUyOEEwNjAyRjA4NzZDMzg3NzA1MDI5MkUyNDY5QjY2Qzg0NzM0MjAyNjZB
-QTg1NTVGMzlGMDFBOEMxRUEzNDNFM0I0MkUxQTgKCkYzNjJERUMxM0U2QjFDQTIxNTBCNTRB
-Mjg5NkQ0MTNDQkFCQzM3NTE1NTg3NDAwOTk0NjYyRjlEODkyQjFFQ0M1NjE3RDMwOURFOTk1
-QgoKRjg4MUJCMjdCMEQxRUI3RUM4MzE4QURDNzY3QTc2RUNFMzY5RTAxQkE4REIzRTQ3OTdB
-NzhGQzgxQTA4NTJEQzNGRjM3NThBNTE1ODlECgpCQjBDODk4MUNCRjc0MDc2RTgzRjQyMTA5
-REI4RTExQzlGQTA0MkExM0Y3ODY2RDM0MTM3RDAyNjgxQ0NDMkE4QTI0QkRBNDZFOURCQUMK
-CkJGOEQ3NzFCOUVGRUE0MTYxNjg5OTJENEEwQzU0ODk4NDhDNUZDRUVCNkZFRUQyNjBERjlE
-MzlGNTc2RUUwODQ5MkI1QkUxOEUzNEQxQgoKN0M0RjA1QTgyOEIyQTgyMDU2MzQ0MjhGMDE2
-OUI1OEM5NUQ2MDE5Qjg5OUZDRDE5MTBCNDUxOEQwQjYyODYxRkMxODAzMDgzNjE3ODU4Cgoz
-RDMyNzM1NTVENTQyMDZBQjk2MjRERTQ2NThDQ0FGM0ZGMkRBOEREQjA3QTAwNkY1NjlGMDVB
-RTBFQzVFOEJCQTY5RTMzNkI1QTFCQjAKCkE2MkM0REVBMEFDRkFCNjk0Mzc0NDg0RUIzRjUz
-MTgwNTQ0NTAyM0NDQjJBNTg4MzJBQTkyREE1MzZGMDU2M0FGQzMxQjBDNTM5QzU2NgoKODI2
-MzMzNjZCNEQ5REQ4QUZGRDA3MDcxQjhBMTcyMTIzOTAxRUUxMDRFMEE2QUUyRTNGRTdBRjIy
-RjIzQzNFNDQyMEYzQjFDMjZDREZGCgoyNTUxODZGMTAwMkZBNzgzNkJENDk2MzdDNDgwREY2
-ODZGMkZDRTgxQzNDQUQ3MkVFQzkxMDQ2QTNGMjU3M0YzQTY4NDQ0MThGQTQzMzMKCjk2RDI0
-QjQwMjcyRTNCNTgwQjY2RUZCMkFEQTRERUZBQjZEQUQwM0I3QzJCRUQwOTEwOEEzNTNGQzY4
-QTc3MDE0MzY1QkNFRDU3RkI1MAoKNUZDNzVGNTlDMjQwMkZEQzI0QTg4NkNGN0I2NEI5RkEx
-M0FCMzgwRERBN0RCRjI3QjZCMDRDN0ZGMzdGNjFDOTk5N0I5Njk2NTRGNzVECgpBOTkyOTM5
-NTM3MUJGRkIwRDVCNEZGRkFDMjc4QzFFM0QyNkU5RDAyQzgxODkxRThGQUJFRkY5OTM1RkIy
-QjZFQUEyMjVCNkEyMjNEMEUKCkQzREE3MDE3MzIxNUQyNUQ3QTNFRTI5OEFDOThCOUIzNDMz
-QTcwNjBCNTJCOUIxNzgzRjg1RTE4NjAyODMyMjI4RDEzOUE4NkIzN0MzQQoKRkZFODVGODU1
-MjQzN0RERUY0NjlBQ0I0OEI4NkZCNzMxMzc5RUIzMTk0MEI2ODM1Q0Q0N0M2NDA2MDAwODJG
-M0VCMkU1MjZCMjJGNDlDCgo1MDQ3MjFBMzI5MDZEQ0Y4NDg4OEU4RDA2MTI0MzU5OTRENzQ3
-NUUyM0IwRDZFNkY4MjlBNTk5NzgxMkU4QjUzREIwMzExNjc2N0RDQzEKCjkwRjM3M0UxQzU4
-QTc4NjU2NEFCMjg0NkM5NUNFM0E2M0RBMEM5QkY3QjVGNDFDMkExNjIwMUUyRjIyMzJCRjA1
-RTRFNzAxNUUwQjg5OAoKRTQxMEM3OTM0NjE2RDQ5OUIzNUU5NkU0RkI3MzgxNjVCOEVENjcw
-OEY5MDI4MTE0RjNFRkJGNUI0QzkyODg0MjJGMjA2QUQ2MzI0QUVDCgoxMjBBM0JDMEFGQjFF
-QkJBNzYzOUM4RDAyMDlEQjJDNDMyMTU1RUQ3MTI0MTEwRjM1OTlEOEU2Q0I5MTY3NDM1QTA2
-MDU3MzA4NzQzRDcKCkRCMUNCNUNBMUYxNzc0RkQ0QUEzQkU1MkM3QjhCMDQyMzRDQjRCOTIy
-OTNEQTI0QUNCNUMwM0UzOEFENEFDRjJENUJGNzgzNzhBNTJCMQoKRDA0NDNBNTQ4RkFERTJB
-Q0Q2QUREQ0EzMTU2NzREOTE3Q0JGRkRENDhGRkQ0MzYwNzIxQTlGM0ZBMEY5RjlFQUYxOTQ5
-OTZBMzNBNTI0CgpDOEIzNzRBQUNFNkEzNjRGMTU1NjA4ODZGNDM3OEY1Njc5QUYzOTNDMTk1
-QzU2ODE3Q0ZDMjZBREE5Njc5MTgwMjc0MzAzREREMzhBNDEKCjgyMDk1NDcwMjc3NEExNjAy
-MjdDRDQ5NkUxNDc4NTlDRjI1MjM0NjZGODk1MUQxQkRFNzlBQTdEMjExOTVCQkVCRDJERjNE
-QkQxMjk0MgoKMkExMTI0MUZBODAwOUY0MzQyMUJGNzk3MzA0NTM0M0JDOTU5Q0ZFMjI1MzBB
-OUMzQjlBRTVGMjcxQkM5MjczNzU2MTcxQjE5ODg1NzkzCgo5N0Q0ODYzMTMzQUY3ODJBOUIx
-NUIyNzE0Qzc3QzZGRDU2MDc3QzAwOTAyQzA1NzE4NEFEMDFCMTBCNTU1NkE2RTA3QjZCMDYy
-NjQ3QUIKCjIyQzc4MzUxOUI4N0UyRDlBMkJFNjg5RTMyQTk1REZCRDI4NjVFNTg1Q0ZCMDEx
-NkE0MTEwRDQwREFGQ0QwREQ4NzcwOURERUM0MEI4NwoKNDQzM0IyOUNGNkFBOUY5NDA2Q0U2
-MkZGRUEwN0E1OUFGRUYyOEU0OUU3QkJBMzJDN0Y2MDY2OTk1NDE0RTlFRTVFMjA0OEEyOTgx
-NzdBCgoxM0RBQzAzRTVERjk0MzM0RUI2RTEyNEU4NkU4Mzc4ODA3NDZEMkU2M0QyQzQ5QjRE
-MEQ1ODcyOTkxNDMxNDQ3Q0U4RTI0MkEzNURFMzQKCjZDMUQyRjNERTc0NDNFQTA1QzJFQ0FF
-MjUxOEI4ODNBNTVERERCRjUzQkQ2NEE3MzUxOTMwQzYxMzdEMzUxRDRBODg5MDhFMTMzQTkx
-NAoKNEVEMEQyMDAxRDdCRjhGNENBQjQyMjQyRkQwQjM4QkU5MEZBNzY4MTZEODE2Nzk3QTcz
-RDNCOTg5MUEwRkIxOTUwNzIzQkJDQjk3RTE1CgoxMTE2RTdEQUE1QjE4RkVEOERCQkJEMkZG
-QTBCNjExNUUyNTZFRTY3NTVFMTcyREUwQzhGMjUxNUE0OTRFNjk4Q0NCREU4MUQ3MTA1MTQK
-CkFFN0Y3MzI5OTIwOTY0NTRCRkE3NjE3MkVBMjU5REQ5Q0IwRkE1RUMxQkUxMDUwQzE1NTNC
-MzRFRTlDMjA2QjU0MERDNEY1MzE3M0M4OAoKQjgwQTg4QjE4M0I2Mzk0OUNDQkNGRkM2NEUw
-QjlDMkE5QzRCQzgzOERCRDJCNDhBQUFBMUJBN0I0MEVGNDMxMUUwQUVBNTFFOEJCMkRFCgoz
-NTA4QkU0M0UzM0Q2M0QxM0JFMzNGRjk1NDYyNTlEMEVBNTQxQ0RDQjQ2MzIxQUQyMjc3M0RF
-NzU3MjY4MjNGMzJFQzFEMzdFRDExMjIKCjY1QkZCRDQxNkQwRUY3NDNCMDQyMEI3M0UwRDcz
-RTFFODEwMUQ1M0U2MzI3OUZCQ0MwM0I1ODBFMDAwNjYzNDg0NDA1Njk3MDRFMzJDRgoKRDQw
-QUVEMzUzRkZDM0VEM0ZFMkQwQTE0NTg2N0VFMjdGQ0IxODRFNEZDMDNBRjVGOUYwMTc2N0Y5
-QjI0NTYyODFEMzI2REI2MzlCQ0E2Cgo2MjIzQUJBN0NDNjNDRDY3OEY2NjNGNjFCMDQwOEYx
-QTE5NzZFREU5Rjk2RkNDRkJDQjBBRDI5QzhFMjdDQ0Q4MUNDNkM1RTY5N0IzMDQKCjk3REQ1
-MUYwMEYzRkU3RkUzM0Y5MzFBMTdGQjc1NDAyNjNEN0Y3NDlBMzQwMDdEMkM3Q0IyRUU1N0Ew
-NzVDNDMzM0UyMjE0Qjg2NjY2MQoKNzQzRTQ4N0VENzYxQjg3NzRFMDc2QUNCRjlDMkRFNjY5
-OTJDNzAxODlBMUVFQjYxQjQ5MDY4RjQxM0NCMzg1MUUxRUQxODI1NzQwN0I4CgpFQ0I3OEVB
-MzgxRDVFNDIzOTA3QjE5NEU3RkQ5REE5NTBDMUE1MDJBMEE2MUFCQUExMkU3MTEwMjc5MkY3
-Q0YwNUFFNjVBN0M2MzFBOTYKCjM3Njc5QjJDNEJDNjUxRTIxREVGMjJFRTMzOTIwNERCNzIy
-RDFGREIxMTlGOTc5OEM3MThFNEVDOTQzOUM0NzJEODlEOTk2MTJGNzFDOQoKRjQ5ODkwQzU5
-NkMyOEJBMzI0QzVBNzk1MzVBRDc3QTVFMzZFMTg0MUY4MjlEQjc0NzdDQzYzQTk0NERDMTZE
-RjI3M0QzNzZCMjMwNjUzCgpDNTBBOTdGNUI5NTkwREEzMjUyMTBCOTM1QjY4REIwMUI4MENB
-NjU5NkVEMkFDNUJCMDI0M0ZENzVFRjhGNjg5MUVGMEEzQzAxRUJGMjEKCkZEOTZEQUY0REFB
-ODNBNUE4OTQ4NTQ5MEE2RkM5QkM2OTNCMjhCMDU1M0VGRkZFNTc0QThCM0M1QkJFQzM2RTY1
-N0MyQ0RGNERGNDVGMgoKNDdDNTlBQjFFRTU5ODA3MjVDNTFDNDNEQzI4OUUyMUZFNjk3OTFE
-OTQzNkI0OURGQzEyMkM0NEJFOTE4NzMzRTcwRTM4NDRDRURFNjMzCgo0OTMyQzUyMDc4OThE
-NzA3QUZDMkJFM0FFMTMyMkNFMEJDOEE1OEY4MTAxMTY2QjA0OENENkU5NEIzOTJBNTRCQTg4
-MTE1RjA4QzEwNjYKCjRGNDE3MDI1QjhBRDI3NTZFQTYyQzk5NDU5OTlFNTM2RDE1NzZCNUUx
-RDMzMjdENTE2NjA5RDFCMzcxQTBFOUIwQjlGRkE5MzRCODU3OAoKMEQ1MUVBMkFEMkFFQTlG
-REI2NDE5REQwNDg1Qjk1QUY5MEEzOEIxRUY1RjY4QTFDQzVDNzMxOUU0QTUzQkQ5QkREMjA4
-RkNENTlCMjY0CgpCQjA1REYzRDdFNTcxRTgxNTQ3RUE0ODE1NjgzQ0ZGNDMyMzQ1RjcxN0NB
-RjNFMjBFNjI3Q0IzOUI5QzQzNEY2NTlBRjk3NzYwMjMwQzgKCjREMEM4MDlBOUY4NkVDNzIx
-RkYxMTNEODREOTRGQTJGMzdBQ0E5QThDNEM2QTI3NjNFMkYyOEM5QTdDODIyMEZFN0Y4QTk5
-MjA5RTA5NAoKRUQ2MjFCNjg0QjY5RkRBOTE5NEE3Q0NDRDUxRkE0OTkzM0VBMTU3MDYxRkEy
-M0RENUZCOTAyNjVFNEVDOUE4MThDMTM3OUQ1RTUwODA5CgpGQzdFRUUxRjEyRDVCMURCMzND
-NkMyMURGMTFGMEQ5QjQ5QTNBMkQyQTlGMzlFMDU2QjA2MDRCNkZFMEZBRTZGMDlCMThGNTlC
-MkMxOTcKCjY1OTJFNThCNzQ2RDNBOTlBRjU2QjFENUYyQUY5M0E0MEU0M0NGMzBFMUNBMTg0
-RDFFODk4Qzk0ODAyRkY5QjIzNjVBRjM4RDBDRURFRgoKNjM4QjIxMDkzMTc3MkJDMTkwRTRE
-NDBGNEM1QTEyMTJEQjk1RUE1OTZEQjY0QzdDMDYwOUM2ODE0NDU5REZBMjI4NkVCQjVFRTE3
-OEZFCgpDNkFGRkMzQjlCNTIwREI4RERCNEVCNUQ0MjIyRDg2OTc5OUZEMTk4QzVENjRFNEYz
-ODg3NTgzRURGQ0EyQjhGNTExRjkwQjBEMjlGRDAKCjQwRDE0MjdGRjEyRjA5NjY0NTkzRTdF
-RjFDMEI0MjZEQzQxMDYxRjM0RUNFNjkzNjdGODUyRkNENzIzNDk5RTU2NEM3NzYxNENFMjQz
-NAoKNUMwRDQxMDExQUFFNzk2MEFEQ0QzRTJENjNFRTE2MTc3RDE5ODk3NUVGMjg4ODQyRkE1
-NzE0QUZGOUU1MzM1OTc4NTVBMDgyN0ZBNDQ0CgpDQzY4N0U4MDI3RUM5OENEQjM2MDZGRUM1
-QTA0NUUyQUM4N0U5MEVBMDA1MDc2ODY5OUM5NTk4MDU3QjUwMzEwRDM4N0U5MTA1NUU5NzQK
-CkFFQkI3QzkxMzZDNjk4NkIyNzlCQkU1RTA1QUEzMDkxRTk3QzcxMDRFMUVFQjBCQ0U5RDM0
-NDhEODY2NDQzNDBBMEQxMUQ5QUM0QjZDQgoKREI0QkU0RDZDRkYxMzA4MzNGQUU0RjAzMjQ5
-QzQ1Mjk4NTcxNDU1NDgwNjAzRjVFRkUyQzE4OTI4NzU3MzdFRDFENTYxQzM5Mzg2ODlFCgo3
-Q0IzMERGNUUyNkQ0NzkwODNDQTYxMDE3NjUwNTkyQURCMDFCRjZERDEyODA3QjY1RjJCRUI2
-QzhGQzk0OUFDNUExRkZCRTgwNzk4MTcKCjkzNEJDODg5N0UyNTFGNEM2QjI3RTdCNkI1MjQ3
-RjVFNDhDMzlDODRBQjhCNzBCMTRBODY4NTUzQjVGMjA1Rjc5QjgxNjBERURFMjE3MgoKQTBG
-RjA3QUVGMDczNTc4MDczNkU1RUJFRjdFODE4NzY0NTU3ODk4OTUxOEUxMzM3RDM1MkJEQjE5
-MkFGNjE4NTg3NzhEMjFEN0I0NEE5Cgo3QzI2RjQ0NTY0ODUyNzg4NTU2RTg0RDYwNjE5RDFD
-Qzg0RTRCNEEwRjQ5Q0FEOUI3QjcxMzkzMEM5NTdDNjMyMTE3Njc0QzUwMzEyMEYKCkM1NjRB
-MzMxODU2MEMxQzU3Q0M3NkY3OEI4RTFGQ0E0RTI0RUZFMDc4RkRFNTFBMjREMTJDRTFCNzk5
-QTA3MjMwNDQxQTA4RUFDRjBDNwoKOUQ1MTQxNjlFNTQzQURFOUI5N0VFRUZCQzZDNTBDRUEy
-MEQ1QUY0ODFFOEYyRDVCNjIzQzQ0NEI0MDlGQ0IxQ0FFRDdDM0VBNzc1NEQ2CgpBRDE0QkJF
-MTFENzA3RDZGRDNBNzAzODRFMjc1REQwNkE4MDk3OTNCODczRTY0NkJBMTQzQkU4MTY5NzEx
-MzlGNjJGRTAwN0MzMTNGN0MKCkM3MzcwRTFBM0VGRDE4RkZGN0JERDhCQ0MxQzY3NzYxQTZE
-MUVBRUNDN0Q5NTNDNTg1OTZDMEI1NDExM0M4RUI1MjJGRTZGRDgwNjhGMAoKMDJENjBDN0VF
-OTI0OTFFMkY4RDUwOUE2RUI4NzIxOTdDOUZFRDk2RDk2M0M2NUZDOThGM0RERkEzNzQ4RDMz
-QTJBODJDMjJDQTRERkI3CgpEREQ0OUY3RDYyMkU4NTlGRThGMERERjk1MTQ0RTZCQkU5MDYx
-NjdDQ0VEMEQ2NUVGMDUzMzJFNTlENzM5MDY2ODU5ODA5RjA3OTVFMDcKCkRGOTA2NDk2OEM1
-NjQ4MTM0RjUyNzMzN0NDNUY2MTBENUI5NDFGMEFBOTc1RjY4MTdCOTIwQTMxMThFQTYzREU3
-RkZGM0Q1OUJGMTQ1MQoKRTI0NzRCRkU1N0M5NEUwM0FDNDE2Q0ZERkNBNTU5NDgxQkI1ODdB
-OUY4MzY2MjYwQTg4NEEyMkNFOTNGQThBMTcyQUI3NzBDMkRDNUIwCgowQjczQzlGRDlGREY1
-RTI0MkJBOUI4NDVGQTREQjlDRENBMjE0OUE0NDc5RUE3N0U2OUU5RjM3NDJBQjU3MTE1MTdC
-RkNEQjFCM0MxOTQKCjcyMzFDNDM3RDlFNTBDNDIyMThDMzU2OEFDRDk1M0Q3NDJEOUUwOTNE
-RUZEMDRDMDdGMkQ1RjE1MUQwMEIxQ0FEMDg2RUZENUIxMDQ0NgoKNzQ4NTI0QzA3MDEyM0Yy
-MUEwOUVFQTgzOUUzODE1MjdERjk4REUxQjczNUMxMTExNjI4QTBGQ0Q3NUFEODYzQUU0N0Ez
-NDIwN0RGMkM3Cgo4RDFBNTBFN0FGMzEyQkNDOTk5REU0OUJFMEY1NEFFNzMzN0IyQjVEODND
-NEY1NTA3QTUzNTVDMkNFMjkwMENERTUxRDI1QTQxQjc0MDcKCjIxMzQwNzQ3MDhGNTU4RERD
-MjJDMTRDNzQyNEE2MTFFMjgxNDEzRkVGOUE0MzhDOERFNEJCQTZCQzY3QTZGMjZGMEUxRUQ5
-MjU0NTEzRAoKMjBFRkUzNjFBNzQyNkIyRTlCQUQ0ODg5MTUyMjk4RUQzOTdDNkFFMUI3RTBB
-QTFGOTNBNEE3MTdDMTM0MzlCMDIzOTlDNzczREU4N0U1CgpBN0FEQTJCMTUxNDQyNDkzOUY0
-NEYxMTRFMEU2NjNBRUZGQkY3QkFFRDUxNjcwRDc4OUE2NzE4NjI1NjY3NzdDOTNFNjFFNEJC
-NUU3NDQKCkZCRkFFRDk0N0JEODk2REE5RTFDOTQ3QTFFOUQzMjhENkIyQjM4QjIzQ0YwRUQ3
-OEJGQzM5OUI5QkMzOTVGMDhEQkY0NTdGQUI2RTQzRQoKODQ3NDQ4NThGOTRBNzI5REU4NDZB
-QThFODg4QzFBMjE1QzIzQTI5N0MyRDdBNjlGM0M2MERBNTNFRDEyRkFFNjQzQTdGQzE1RkJC
-NjgwCgozQThFRDI3NURCM0QxRTAxOTlBNzFGMjAzQzhGRTFGNThGMzkyODkzMDNCRjdBRUU5
-MjhDMDkyN0VGMzRGMTYxNEMyM0M4OUU2RkUzRkIKCjEzQUI2RkI5MUVCM0RDNDcxOEE4QzAz
-MUQzQzdFQzExMUYwOUFDNzlBRTNGNjI0NUQwOTQwQTQyODRGQUNDRURBNjQ1QTEyOUE1MjQx
-RAoKOTFFODFCNjI3MTg5RTE4MDlFNEU0Q0I4NjkwRDdEMTY4NDVDMEU5N0VFRkQ3Rjg4RkVB
-OTU5RkI1NUY3MDgzMDY1OUNCMjAwMkM2OTEzCgo3ODcwREE2RTA2MTIxMDM0NEI1Q0M2QjlE
-MDNBQzdCNTQ0MUJEQUE4MUMyNTUwOEUzRDVERDc2NDVGN0ZEQkUxQzBFOUQyMzYwMDQ1QUYK
-CjJENzZGNDZFRTI2Q0Q3MDM3MTdBN0MyRTgzNDA2QUY2M0E0Mzc4RjEzNDAzNTc3MzVEMTNC
-NkM2QTFFOTQzNzA4N0ZBRTdDNDJFM0NDNQoKRUI4OUVCMjE4NERBODdFNkI1MjMxNjNEMTZD
-QjIyMUZCNTQ2QzAzOTc3NEYxQzdFNEMyRDE5QzY0OEZGMUQwNzg2OTFDQjdBOTA1MjRGCgpB
-RTBGMTk5MDI4OUYzQTAxQkU1QjRCRTMxNTQ0MTAyREIwNEVCNjQ5NTBBNkQ2MzNFNkREMUU3
-MEMxQjVCNTBGRTAwRDEyNzBBRjdEQTEKCkM1QUUyMkVFMEJDN0Q2M0Q2RUQ5RURCQkMyREIy
-MUE2NTdCN0M2RTM5Mjg0NTUxQjY2RTk1OUVGNjI0REFFMjFFRjA1OThFNTk4RTVGQQoKRDhE
-RUVFMEI4N0FFMUNBNzdDODkwMkNDODkyN0U3NEIwNTk5QjhERjg2N0REQjI4NUYzMDgxNzYz
-OTI0M0RCN0Y5NzE5MUZDMTVBRkNECgozNEZFRjhBQ0ZBRjkyNkFFNjBDMTNERjcwQURFRUU3
-MEI0RDJERUY1NkRENjg5MENBQ0EzOUU5NENBQ0IyRTAxQkRDRTFBMjlFOTY2NDMKCkNDOTMy
-OTAyOEM5MzFBNUY3NDg0MjYwMzJDRDU4NkU2RDc1OTAzM0YxRTQ2ODMzRTkzRUZDQTBBRDg5
-NUNFRjEzMTEzODBCODc4MkI2QwoKMTVFREZGQzczNkE5MzlDNkNBNTNCREY2NUY4ODQ4NEU0
-MDUzQjA3NjM1ODc4MEQxNTQ5Q0Q2RkQwMjM0NTg3QTQ2MTZBMDA4RTZGQUE3CgpFNUQ5RUM0
-NThGQjI5M0IxNDNBRjA4NThBODUzMkZDNkI5RTZGNjk3OTdDQzI3NTQ4RjE5NjE4NzdCOUM3
-NDkzNjJDMkUzQkQ0MTA1NkIKCjY4RTI4NDI2NzE1NkM3MkE4OTA5QTg2MDM3RjZBNzU1QTgy
-REYzNDk5OUM2OTU3QzQxNTIxMkQwNjBDMTUxMTRENUZEQUZERjAxQjNERAoKNTYzNDI4QjQw
-MUU4NTEwNUQ3QkREOUFBOThFNTQ2NzA1NjEzNTREMDgyQjVBRTNDMzcwRUY5RTJBQjFCRjhB
-OEUzQkY2MUI0MzQ4QzBDCgpDNkFEMjc5NUI0NTNGOEY4MUQzNkRCQTg4NDcxNDNERDk1NTIw
-M0M5QTBERkEyM0UzMkVDMjM1NUFGRDY2NzhBMkIwNUZFNkU0NkNEQUUKCjNFOEU4NUFEQjRB
-QjcxQjdGODREMTI2NkVDOTJBODQ2RjA4MTcwNjk0QUQ2NjU3Q0E0N0Y1NjA1MzVEMEZGNTcy
-NUM0MUNEMEZCMzIxOQoKQjlCQ0E1Rjk1NDU2NTgyNDhENzk4OTZBOEI1RERGMTk2OEQ0RDk1
-QTM3RUNFQzdGNDRGMkE0RDY4ODgyMTRGQjE5NTQxQURDQTY5RjcyCgo5NEJFRjYyQzA1MjBF
-OTVDQkE0QTJCMTREMTJCQUQwMDRFNjQ2OERDMTM2Qzg5QUM1MDY1NzE5QjkxNzVCOEExMTky
-QzgzQTQzNTk1QjIKCjY2QTE5NkU4MjBFQUM2Q0EzNTQ3Mzc0RkIzQkYyM0NERjE0RDkzOUI2
-N0RGQzVERUE5Rjk4RDgwNTQ1QkY5M0NBNjcyNDBGOTdBMUE1QgoKQ0QxMzdGMkE0MkJERUU3
-NTUyOTY4NjIzRTZDQTY1OUZBNDJFQzVDMkNCQkVGMkUyNzA2RDA2RTBFMkNFQTIyNTQ4MjIx
-NEI5QjZDNDVECgo5N0RBRjI0ODk5RUU4QkM2RDhBOTgwRTU2MjEwNzVCOUNFODM3QjcyNDM0
-MDA2NkI3NEMwMTNFOEFEODA2MjQxREE1QTE4QkMzRTk2NTcKCkVGRkQ0QTE0NDM3MDRCOTBG
-RUFGRTBBNDA3QzdDMkU4ODBGRTk3MDU2MEJBQjA2NDkzNUYyMDlCMTk3MUUwM0MzM0IyQjM3
-QUZCNDQyOAoKMDFBOUM0RDYzQTZBOTM5MTBCNjA3RDQyNDQxNjYyMDU1OUU3Qjk1QTUwRTg3
-OUE4QTA2MDdBMkNGQUIyNkQ0MDg1OEI5NTVDOENCRTRDCgpDNTVCNjczNkYyMEVCNzQzOUIx
-Q0I5NkNGMDBFOTE2OTA2NTkxNDdDN0QxNjA4RTUyNjBBMkU4NEQ3NDlEOTA3MDhCRkRBOTJC
-RDU4MzQKCkZDMjI2MTlBNTE3NjREQjREOENBRTY0NjNBQUU4MDUwM0Y0MkNCNEU3ODMwQkU3
-OTZFNERDQjEwQTFFQURENjM2Qzc5REQxQzE3NEMyNgoKREQ0NDgzMEMzOEU5MkJCMjVERkE3
-MERGQ0JCQjJEMEI2OTJEM0M1OTE3RkI2NjlCQjM2QUIyQzJDMjZBQkYyQjM1QzBCNTgxRjc2
-RDc3Cgo2NDY0NERGODlFRTg3ODYyREUzRDVCQzFFREM3NDkxMkU0RjI3OTk4MzYwMjNFRjg5
-RTVFODE3REY2MjUyQjRGOTUzREE0RkQwQkMwMkEKCjRFMjJGQTc2MjA0ODgzN0ZBOEM5OTQz
-OUJCMUZDQkY1RTIxNUI1QjQzNjg1NzVFOEQ2NzY5RTNEMDFBOUEyNTJEN0IyMDMyN0I5QjMx
-NQoKOTVDMDFCQUNDQjY1QTM4RkYwNEE1NjEzNjk4QUYyRkE2M0IzNkJDNjk0MkVEMjQxRTFF
-Q0VCN0E5RjJFOEUzODFEMzAwMzI5Q0JENEUzCgoxQjE5QkEwQUZGNjQxNTU2OUY4Nzc0QjI4
-Q0Y5RTZEMzQzNDEzQUEwRDQxREMzQzNGNjg2ODQzQkIxQjdEQUEyNDJBNjM1Q0YzNDUxMzcK
-CkIzRkQ0QjYxNjJBOURFRUE2QkZGMUU3MTlERjYwMkE4RDc5Q0Q1QTYwQkIxMUYyNkQ0MzdC
-RThCNEEwMzlENkMyRDY0QUJFRDUyMEMwNwoKRjA5RTgwMzdBOEQ3NkQ3RTNBQkI1OTQ2RDQ4
-MzdGMUIxMjI3NEQwQUZBQjI5QTQ0RTAyN0IyQThDODE1NzRCODQ2QTdCQTk0NzU2QUQ4CgpG
-MzNEMkI3NkM3OUZFNEQ5NENCMzc0OUE2NEVDQUQ4QUU5RDRENEVFMjE5RDVGRTQ1MjRFQzk1
-Q0NCODlCQTNDNzNGMjE5QTg4RjY3NEIKCjJENDBFMkM1QjQ0OTc5MDNGQUVBN0JDM0M3RjIy
-NTkwRjhGMkQ2QjYyMTUxODg1MzgyMTUwRTk2MTFCQkMzM0Q5QURDRTY5NUZCRjk0NwoKMkFG
-NzlFQkVBMDkxNjlGQTAwNDdFMDlEOTQ5OUQ3QTk3N0VENzRFNERFRTNCRkVGMUVGRTAxOTNB
-QUFGOUI4QTJFMjg1QUNFNjNGQ0IwCgo0REQ1QUE0RkQzMTFFQjgwMDVFODFERjk3MEQyQzM5
-MjdCOTMyN0M0MDkzMjM2QkM5OEZFQUM4RTEzMDAwMTIzOUE4MUM0MjZENDc3QzcKCkI2OEFB
-QzQ2NjgyMEY3RTY1NTI1MTU1MENDOTc5MDc5RjMyMDBGMTJCNkRDMzVDODREQzVBMTlFQjA2
-MzBCQkYzQ0JCMjUzOUFFRDM3RgoKNEVBQkM0NjRDQzVBOEJGRTc1NTkzQzdGM0FBNUJFQkE2
-Q0VFMUFBMkRDNDNFNDBBQTgyMzIzMkQ2NjcxNEMwNThGMzZBMDEyQTkyMkVCCgowRkEwQjU4
-NTEwQzEyMzkwMDRCODQ3MzBDMUM2OUFFQjRBMzgwODRCNkU0NjVEOUVBMDQ1ODBCODExMEM5
-QjFCMDIzQ0JEMUVBNDQ3NTMKCkY3Qzg3MzkwQTg4NEJGQUM4MjVEODRCOTNDRTRBQjUxMzYy
-NjRCOEExRTBDMzE2NkU5NEU4RUZBOTA3MkExMEFGQjc2MEZGMjI2NTAxMgoKQTI1NEYwNzU1
-RjgxRTFFNDJBQ0UzQ0YwM0Q0NDNEODFGMjM3RDdERDk1NTVGMjQ0NzE1NURENzZEQzA3NkYz
-QkZDNDkyMzkyODI4NzA1CgozRUU2QkUwNURERkUzMEFGMjAxNkZFQTUzMTU0QUNBOTFBNjA4
-OUU5ODA3NDU1QTUzNjc1MzA3OEI3Mjk0NDExNzUxNDUwQ0U0RUQ2M0QKCjBEQTRDOTkwN0RB
-MjEzNkRFOTZBNTI4OUI3ODMzNDZDRTdFNkREMkMxRDg1Mzk1RjkxMzczQzEzOUIzQ0ZGQzVE
-RjFBMkM0N0YzMjUzNwoKMjMyNjkxODIwQkU0OTdFODE4QkNBNTYxMzQ1NzA3QUQ5ODI0OURD
-NDAwNjJFMzBENjQ3RkE5NzlFRkFGNEZBNTBBRDlDQzI3MEQ0N0VECgo2OEUxRTQ2MkY1NEVC
-NjlFNkQ3MzRDNkREQjQxQjVDMkIxRDYyODFBRDNCOUY0OTdCM0I5NkQwQzk0QUY5MzhFOUU3
-ODVBOTZERTVERUUKCjlBREZGODM0MDYwMEIzQzE3M0I2OTM5QjVCMDZCOEYxMzQxMjc2Rjcy
-N0VBMTY5MzMxNTFEN0RBOEYyNTQ3ODZFQkQ2QTAzNzJCMTBFMgoKNzkwNThEMjMyN0YyNjIw
-QjAzOUM5NDUzRUZBOUI4NTlCQjVCRDQ1OUU3Q0NDQzM2QjgwMjIxOTMyNjY4NDAzRjYyQkQw
-MEQxRTMxNzU4CgpFNjQ3RkVDMUZCODE2QjZDNTI0NTFFNkZGQzUwRUE4RDUyMjc3MTc4RTND
-NEFGNUIyQTU5RjM4M0IyNzFGRDEzMkUyMTY5NDVCNjlBMzQKCkIxMzY1MEY1RUVGMTI5QTk3
-MkE2OTVGRjJCQTEzOEUxMDkzNUE1NjRBRjkxOEE2NkMyRDUxQ0Q5NDJERTdGODQzMTI3QTNE
-QjgyODc1RgoKMUExNDY2MkIwQzNBMTVCRTRCQkUxRDg3NUY4Q0JFNTRDNzQ4OEY0MTMxMDc0
-ODIyRkQ0N0M1OUFBNEFDRjE4REE5NzE0RTI2MTlDOEQxCgo4QTlFQkQ1MDk4QUFBQTExNTBE
-ODM2ODFBNkU4Q0NCMDcwNzg0QjEyOEY3MzZCRkI0M0NBRjVGMjM5RTk5MzQ4NzhDMDIzMjhC
-RDMwODQKCkNGNTJFRUIyMEEyNkJDMzZFNzZBOERGQjM2QzlDMTM5N0IxNkQxNjIyNERCQjlD
-NjRBREVEMTkxRTBFNTNDNjFCRTdEMDU2MzU1RjIwQQoKMUFENEVFMzhFMUVDOEMxOTI3QzJD
-QUZEMzZGRkFDMjQyNDBCRjA3Q0UwMUZGM0I1Q0M1ODY2QjRBM0ZFRDBCRUI4Njk1RTIzQzFF
-MTZECgo2REUyODgzQjhBNjZBMjQwMDMxM0IyNjNFQzJFRTYzNDhCRTAwMkJFMEFDMkI1QjQw
-NkUzOTJDNTNGRDQxQTE0NEY3RkYyNEJERTk4OTIKCjdBRUQxN0JERTYyMEQ1RUU4RjA0OTVB
-OUU5MTVGQzBGN0ZDNjlGODY1NTAyM0YzRDAwRTMzMDkzNDIzNDBBRkQzRjAwQ0U3NkQ1MEI0
-OAoKNUUxQUY5RENBNEQzRjJBNDBGN0IwMjU1ODk0OURERUI2REQ2OUE1RTY3QjhCNURBQTM5
-NTZFRjk3RTcxMENDMUJBQTc0NzZCOEI1MzRECgo0ODU5NjI0MDU1NUM3QTIyMENCMDI5NjY0
-QUQyNzRGNDc4OTAzRTk0QUY2NjAyNkY4NTYyQ0Q2QzE5ODM3Q0U5MjY1Q0I2QUU1NzgyMTcK
-CjAzMzZGRjRDN0EwRUE1QzI4RTA2OTAwNkNDNzYwRDNCNTM1ODY3QkQzNzZDMEU2QkZBNDNB
-OURFNUY2RDg4ODIxMURCMDZCNkYzRTVERAoKQUE2NjY2MDlDQTdFMjI5MUVFMDU5NjczMUU0
-Q0U3OUYzNEZFMDU1OUFFOEUxQzI5RThENjAwMTVBNDQ1QzM0RjhFNjQzQjUzMzcyRUIwCgo1
-MzMxRTU4MTk3MDk2NDc4REZDNDlCN0YwOTJBNjIwOUEyRDIwOURDMDJFRUIxQjdEN0IxMkU4
-OUEwNTUxQzA2RDFDM0YzNzkzRDc0NUUKCkJDNkQyRDZDNTc2MjhFNUJERkFFMDk5MzY5NzZE
-N0M5QUZCNjUzQ0U0RTZFMTk4NTcyQ0U0NjE4MEZGOUVCMDA5Q0ZFNDUwQkEyNkJCNQoKNzA1
-NTI1MDUxNjU1QzM1NUI1RDYxMTQ1QTdFRTA2REZBNDg3QjMxMURFNzJBOTc1OTQ1RkJCNjQ4
-MTA0MzRGOEQ3MzlGRTk1NjMyNjAxCgpBNDZDNkM5NUM4QkUzNjUyNDVBODlDRjc2MzQ3MzVE
-QTE0Q0M2OEUyM0Y0RTlFODJBQzBFMEY4NUFERTg2MjhCQTFCQTRGOTExOEY4MDAKCjcyMzc5
-OTAyODBDMTkwNjFBMzA1Qjg3QkRFNkZCREFCRTcxQTcyNzQwRTMzODkyNUFBODcxQzkxOEQ5
-MjdGMjhBQkIxOUZGRDJBMTI2MQoKQzgyQ0QzQTQ3Qjc2MjQ4ODI4MzAwRTE0RDcxQzc1Qjc3
-NzM3NUQyOTcwREYzNDVDMzdGM0JFMDFFNTZBMDQ3Qzk5RDI3RjQxRDgxREYwCgo0M0MxMTAz
-MzUyRkJBMTk0RUFBQTUwMDU1REFCMDcwMzQ2QTIwRjM5RkIwMDdCRUJBMzQ2MjczMzdDMUI3
-MTQ2NURFODJEMjIyMTE5NEQKCkQ1QTYxQjY2NjY4M0YwOUUyMUY3NjQxOEE4MDg2RkE0QjJB
-REYwQzk0RDVBNzAyQTJCRTZCQkE3MUQyQTlGODc2N0IyQTM5MDIyOTQ1MAoKRUI5ODY3QkVB
-Njg1OUVBRDY4NkM2MUZCNTIxNTcwMzZCQThGNjI0NjhDQjkzNEUxMERBMDdDNDM5NDJCOTY0
-QTkyQzI3OUUzREYyNjM1Cgo1NDFGRjQwM0NDNTBGN0RBRjFGMTE0Njc4M0IwRDI5MDZGNjc0
-MjczMzg4MDg1QTFGNjk3RTZERDgyMTY0OTU2OUI4Q0VBMjkyMDgzMEUKCjk1QTk2NjM1OEZD
-NkJEN0Y4QkEwQjkzNDk1RDA1NDk2N0I0REJGOEQ5MkVCMzM3RjUwQkUwREQ5QTAzQzIzRDJG
-NUI1RDlDNzNERkE0RgoKN0UwMTEyNTQyNUVFNjJFRDlDRUY3ODEwQzg4NTUzQ0M2NzFBN0RG
-OTI5NUY1MERDNDgyNDQwRTQwRDY1RDA5M0ZCNUEzOUM0MDg0QjVBCgozOUE3QzEzQjQyNkJE
-OUJBNUU4REUyOUZFRkNGMDM5MTVDNERGNTcwQ0ZEODU0NkIyNzRCODc1RkQwRjgwRjU3RjFB
-MERBNjlGMDlEQ0QKCkY5OEQyNzlDMDAwMUFFNkRFQUNFMzJFM0IyRDM0NDM1MjRDNUZFMUNE
-Mjc3MEQ3Rjg3MzIwMTQ0MkIxQ0M2M0YzQ0MzM0QyRURDMEUxNAoKOTMyN0FFNkM5RTk3MjBC
-MzQ2QTNENzgzQTBFQjZEMzlFMTBDNkQ4QzQyRTMxMEMzN0FFMDZCRTc3MDU2RjU4RUQzOUQz
-NUJCMkJFODZFCgpFQzBCQUFCRTk5NjgyREU0NTczMTZCNzIyNkUwQzk2ODgwN0QzMzc3MkEy
-MEQ1MDY1ODM1M0QyQTZGMDgwNEU2RjIyNTg0QUY1ODg3RTMKCjZBQTRFN0VGOUQ0NzAxNTNB
-MTE3NTlBRDQyREE2RUI5RkMwQUI1NDk2NTQ3Q0FEMEVCNzI0M0QwMzcxQUYzMzBFOURFRjNC
-QkRFMTE1QgoKQzMxMkQwNzg0OTMyQkU2MzBBQ0YxODUzQkM3Q0I5NzI0RUY5MUI1QkJDNDJF
-RDIxMUE5RkJGOTEwNUVENTBEQkVDNjFFRUEyODg1OEU0CgpCNTc5RUYyOTI5RjI4NUFDQzEw
-MTMxMUUxODJBMjdEQzhGMDVBOEJCMDc0QzU1OUMzNzA4M0Q1QUFEQTIwMkIwQkMzQkVBRkI3
-ODMxRTgKCjc5OTE2QzVGQUExMTZCRjRCNERDNjhERjk0NDAzREIxMTM0RDk2QTcyQTgxRjcw
-RDJGMTZGQUM1NzY4QjRCQjQ1NEM4RENFRDIwMkEzMQoKMjIxQjI1QjJFM0Y4REM5MTJDMzhG
-QzgwODdGMkM4OEIyQTU0Rjk5MzdGRDI1NzExMEFCNjNGRkVEMDFEODVENEIxMTYxRjA4NDIw
-RjIyCgoyNzI1RkVDNEI1REM0RDJBRjY1QThFREJEM0I1OUU0QURCRkMyNDc4RTk4NTBCNkFC
-QTg2ODU1M0RDQjIzMzEzQkJGNkQwM0QxNzhGRjIKCkZEQ0YzMzkzQjA1MUY3OTlENkM2MEFC
-N0Q1N0Q2MkZEMjNBM0YwNzY5MTU4ODJCOUJFMUUzRUQwQTNEQTg5M0Q2QkI2OUE5QkQxNUM4
-QwoKNjA3RjAyMTNEMzQ2NzNGOEZFREE4MTg3REY4QzI4RTZFNEE3QjFGQjkyQjExRTkyMjk0
-MjAzQTM2Rjk1NzkwRUFEMUI0MUNDODMzNjczCgozRkI2QTAxODkzNTZDMTY2MzZCRTk2NUEy
-MEU4OTU5NDc0ODM0Nzk0RTREODM2MzQ0M0NBNDY3ODkwMTE0MUQ4QkZEQ0MzMUI5NEJGRDMK
-CkNGOUU1NEM1NjY3MjNCQjUyQkZDODY4RUMwMkFFMkI5NkM2NTdGQjRGRTlGQkJBRUFCNzAw
-MDc1NTg4Qzg3NEY1NTlGM0M4NUUwMDdBRAoKQ0Y3NkIzRTAzNzJFRDk3RTNFOTc3NUNGQ0U4
-OURCNzlEMzk2OERFMkYzOTZEREY0QzZGMkI2NUM5MDlBMTkxNDMxRjVFMjEzNEJCODg2Cgoz
-QTYyMEUyRDUzNzcxOUQyRjgyRkJEODAyQzM4OEVBNjZDNDU0QjhERUMyN0I3RDY2MjRGRkFB
-MzFGODVDNUIxM0RBOTQxRUU5QTdDOTMKCkE1RjlFRTNDNTM3QjcwOTY1NjY5NjkyOTg0MEND
-MDVEMkU2MEIyODVDRTExNDAxOEYxOUQ4NTZERTZBMTQwODI0NkMzQTJFRDA4NUFCRQoKRTEw
-QzdCN0QxQTgwODBCREUyQUFFQzYyRjVEMzBDNkVFREI2NzMzRUI5N0I2MjY0MzVDOUNBQjVG
-QjU2ODEwRTNFMTkyNEFCMTcwMTAyCgpBRUIyNDY5OTY2MURCMjdDNUE5MkY0MEU0QkQ0QTg4
-Njk3RUE2MjNBM0YyRjgwRTNGMjE3RDU5QjUwNjQ5MDg1NzUzRTlGMTZDNTVCRDEKCkM0NUQy
-QzU3Mjk3Njg5RDEyRjU1RjYyRUEzNDhCNUZGNjU4MEI0OERBODVCOUJBMDU4MzQ5MDI0RDFE
-REM3N0JCQTAwMEFDMEMyQjYzNQoKREUxMjJFM0E5RUVDMzQzNEJDOUI5N0IzNTQ2QkM3ODUw
-QzNBNDcyMTAxMDAyQ0YwNUFFQ0VENjg4QzM4RDVBQjgyOTY2RTQ1QUM0Q0Y3CgpGRjI2NkFF
-MEY2ODY2OUI1RUE0OUM2NUE2NUFDREJGOUE4MzA5ODhCQjYyNUE4MjYzRTU3MEVBMkM2RDZB
-Nzg2Mjc3MzQ1RUU3QkQyOEYKCjY3NUFBNjQ3NEFERDc4RTAxNkQ1OTlCNDE1QjA1NEY2N0VC
-MURFOUJFNTc3MTBERjIxMjI0MDVCNDgyMDE4RDI0OEIyOTYxOTg2MEVBMwoKQTI2OEM1ODY3
-NzU3NjFFNjI2NTFEMUJDQ0QzNzc1NjQ3REZCRTg0QTk3QzRFQjY2RDIwNENFODM5QjZERjgx
-RTg5NzA4MzRDMTkzRkFCCgo3M0ZENDBGREFEMjhEMjQ5QzNBMDg2NzU5RDBGN0EyMzQ1N0I5
-MTI0MEFBMDQ1RkI0NTBFQkYyRjVERjI0RTUxMjNERkZCQzdBNjMzRUYKCjcyMzA4MUFDQkJF
-QkQ4RDk5QzQxQjdBQkQ2QzFCM0NCQjUyRUNBNDk3NkY3NDg3QUQ3NzgwODA1MkQ4MUNFNkYx
-MjgxMDk4ODFDMzJGMwoKODI3RjVFRjU5MDIyMzAxQUU3OTE3QjJEMkU1QzU2RkM4MjM4NkND
-MUUwNjg0RkI2QjQzQTY3QjUxQUU4QjEyRTVCODJDNTIxNEVCNzk4CgozOEEwMDRBNEQ3MDRF
-MDNCQTY1MDM4Qjg3Mzk5RUUxRjkzRUE0Q0RGRkQyQ0JGQTBBRTFDMUU4MTA3M0JEODgyMDIw
-MTVFQjlFRDU3MEUKCkRCMzNFMDE3NzczNDNERTNGODU5OEVCRjBDRTFDNzlGOERCRjQ5QUM5
-QTZFMjZBQkU1NkQ0RTM2RDc0NTJFNkJGN0NEODFBOTkwQjZBQgoKQjA1ODI0QkEyQzI5ODhE
-NTA5RTk4RTlBOUVDQ0UzRjg2OUUxQTMwMUU3QThENjlDMjkzRkM2MDUwNkM3NjJBNjVFNjZB
-MzMzNzMxQkI3Cgo3ODg2RTgyREZGQUIxODdFMjY0QkI4RTkzOTEyNTI0NEE2NThEQjBFRjcy
-NzQyODk2OUM4NkU0MjQwQjg2MDNGNkNFRjc0NjdCQTUwMEIKCkZCMkEwNDYxRjg5MjlFNjUy
-RUI3QzY4NEI2MzU2QTRGMUIwMTMxN0JERTRDMEUyNzhCQzlDMEQxOUQ3RjBGMTA2NkI3OTE1
-QzE1NDgyRAoKMzQ3RUEzMTMyMzkzOTA4ODQ2NDVCOUQ5MjE2MDk2MjU3QUExOTk0MjU5NDRC
-ODhCOEU2MEQxQzlEODE4RTZDN0ZBNTc0ODRFNTczRkFGCgoyNjgxOTAxQ0ZGQTdCMDM4Mzcy
-NTFCRENBNDI5NjM1OTdENTlGNUM0N0NDRjRGRTYxOTYzRDY5OTdFODhEQUE2QTgwMTg5RjU0
-MTA4QUQKCjkxQTYxNTUxOUVCQ0FBMDI5NENFMEQyQTNENkQ1MUJBMjNBQTUzODU2MUFBQ0Ix
-ODU5RjlEOEU3QzdGQkVFREZGQTU5RkRBMzBDNDkzMAoKRjNDNzAyODhBRTNCN0RCNjgzNTYx
-M0Q3OTc1QUZCRjEyNTRFRDgwQTI5M0MyODZBNDAwRTc0ODE2RDA3QUVCOTI3NzMwQzM5N0VC
-MUNGCgowNDExNTNGQzgyMUVFMzU3Q0Y4RDlDMUM1NUNBMUI1NzhCNjAzQTk5NDZFOEI2MjNB
-QjY0MkYyMjcwNDFBMThBOTg3QzhBODI2QjhFNjcKCjdGOERFRjVCMUE3QTg5NkYyRDA0Q0Ex
-OTcwM0E5NDkyQzM1NzQ4QTBFQjM0NjE0ODQzQ0I2NDM1RTM2NjUwQjFEMDMxMUQ4ODYyRTc4
-RgoKQTg3MENCQ0Y2QTFBNkRBMzFGQzFCQ0JFOTdCMDJCOUY5RDA2Mzk3NUE4RjRCNjgxQ0VG
-OEQ3MTcwQzFENjZDNDFCRDhCQkVEN0M0REU0Cgo1RUQ4RUE0RDVEREUwRkJDOUIxMTM0OUFG
-RkZBQkY4QzdDNjJDRjcyMDY0RjkzQ0QzNkVFNzgxRTQ1OTM4NTEzRTY1MTdEMzI1MTM3QjMK
-CkM4QjA3RjZDODVDRUM5OUZFRTczQzE5RTMzMTlDNERFNTQ5NzNFOUYyMzdGRDRGNUY1MjJB
-MUUyNDdEMTNBNUEzRjc2RDlBMjIzQzFEQwoKMDVERDk4QUYyRjI4NzBEREVFQ0QxRDE3ODE2
-RjYzNjJCQTRFNEMzRTc2NzgyMzQ5NjI5N0JENjBENUFFNUYzQkIxNkM0Nzk0NkUxQjlECgo1
-OTlFRTE5NDVERTgxODk2QzIwRTBFMUVFNUJDQ0EzQTgxN0YxNDBEQUI5MTA2QzZBMzkzOTYz
-NTY0NDBFMjhDOEMzN0YwOTA4M0MyQjMKCjhDMEFGMzIyQTVBNkU5OTExOTYzQkNCNjc0RDYz
-QkZERjA4RkUyQTczNzhERkM1MjkyQ0FGMjlFMjlGMkM2RUZGMDAyOTlFMjM2NzNDRAoKQkY5
-N0I5MTlFNERFQUI3NkE1MkJCNTg4Q0ZGNDg5RDZDOTg0QkU2OTQ1MTIxNTU1RDJEMTFENTc2
-MDkzNUExOEM3RUQ1Nzk0QTg1OTBDCgpBOUVFN0NDNzE2RTEyRTVFNTA2MDRFNERFMjZBRTdF
-ODE5OEVGNzIzMjNCOEI0NDlDNzA1OTgzMUZFMkIzMkMwQjdFRDRGOTc3RDQ1NUEKCjc0QUM0
-MjMzNUY5MkZBQkZDNjlCRjc5OEYzNTA1OTg3RTEwRTZFQTRCMUVCQTdEQUNERjJEOEY3NkEx
-NDAzMTY5ODUwNkY5MjA0MzlCNQoKNTQyRTMzNEZCMzg4MEJFQzc1NjA5OTI2RUU5OTUyOUM0
-RTkyM0UzOTM2OUQ0NTNBNEM4NkNBRTI0MURBRDQ5OTk5ODE5QjZEM0NDOEVECgo3Rjk5QzQ4
-MTZERDAxMDY1REQzODVENDdBNTZCM0ZFRDM2RTFGQjI2MTc0RTA0Mjg2NzdENEJDNTM1QTJD
-QjM1NjQ2QzE3QUM2MjE0RjkKCjNDNjhDN0I3MDJEMTY4QjQ0MzlGRDY2QTQ0RUE3NkJBODA1
-MTgwNTM1RUIzMkRCQkZFQzI5RDRCNDUzMzE3QzZGMzVFMjFDQjQ4MjQ5MAoKNzRGMUM4OUIz
-REM2QTUzRkU1ODhGOERCNDA4RUJBMUM2MEM5RjJFQTAxM0YxNTE3QThEQjNDQzlBMDk3QTI2
-NDNDMENFNTNFRkZFNUE1CgpFNUIyNkNGNDBEM0E5MzI0RjBCRDM1QjZGNTI2RTgzRDJBMzgx
-RTk3NkUwMEFGMTRFN0Y0RkUyMkFEQkI3MTIzNkE1MDY4RTI5N0M3RDcKCjA5OTQ2NzJEODZG
-RkJEQkVENDU0NjU5RjU0Q0FGNUEzNjRGRUM4MjY1QUJBOEY0RjJBMDQ3RDU0Qjg4M0U4MUFE
-NDhEMDk0REU3OEEwQQoKRDEzODlGNUY3QkQwQjM2QjNGQTExRjg4NjREMjFFNTdGNDUzQUNC
-RTJBODkyRUI2RjEyNkM5ODgxNzk5QzAyMTUwMjQyOEIwQkY0ODNECgozMDQ3NzdEQzBBRkI3
-QkFDQ0ZBNDJBQUU0MzEyMUEyNDVGQUQ0Q0UyMzI0ODEwMkNBRjkzQzcyMDE2OTQyQjU1NkNF
-NTlBMjg1NkJERDgKCjdDQUI5QTIyRkM2OTBCMzBFQ0Y4OTI2Njk5RTEwMUQ4Rjc0RDk4RjI3
-NTlFODE5MTQ4RTU0RUVENjM5MkYwQjIyMDMwQUZBNjU1RTA3QgoKRTZCMEY2QTU4MjY2RDVB
-QUQ4MzY1RDI3OUZBNTE1ODRFRDRCREY1RTk4MUUzMTczMjg2ODc4OTM2MkExM0Y2OEQ3RUVD
-M0VDQ0Y0NkQ5CgoxODU3NDgyRENBMDE4OTQ0QUFCRjk5M0Y5MDYzNUM2MDI4MDEyMjQwRDhD
-NjcwQkU0OEU0QkFEMjlCQkMxMThEQTBCNzMzRTIwMTk1MDIKCjA5RjJDNjA4Nzk4RTNGQzZD
-RDM2OTlCNjFEMjA3NzUzQTVDN0UzMUQ1QURCNjEwRjdBOUZGMzZDNkU3MzQ0MjU2OUYwMjVF
-QTVFOEE0RAoKRkE4OUU0M0YxMEI0NEM5MDcwMjQzMTZGMDdCNDE4M0IyMDJFODY3N0Y0NDQ5
-NTIwQ0MwNjM2MUYwNzVCQ0MwNjVBMEM0OTExMzczMjgxCgo4OEZBQzcyRUMyNEI5QjUyNTAw
-RDEwMzczN0Q0MEEzMTFENTc1MkVCQTVGMDZFQjU5M0I1NjE0N0Y3MDg5MTRENDc0QjdFNjdF
-QzQ4QzcKCjMyRDQwQUI3Qzg2NzFFMEM4MDI5NURFM0IyQ0U2OUM5NzU5QjUzNjUyMEVCREE5
-Mzg3MjkyMTRDNjhGRkVGQ0ExMTlCODY1QzJBNEJBNQoKMTU5ODYzMjNBRDE0OTYzNjc5MUFE
-MDBCMzI4RTBFMkQ0N0FFQ0Y0MDZBNDNEOTRGQzg3Q0Q1MEFDNjVDNUQ0RTU1RUIyNEY0ODkz
-OEUyCgo4MzA1RTFERjBDNkFEQTQyQ0E0NzY5MTI0Njg2MEY1MEEyQTYyOTJGMDU5MEQ2RjhD
-NDA3NkYzQzYzMjVBRDI1RkFBNTZBMzYxQzAzQzIKCjAzNjk0QTM5MTAzREQyMDlDMDRCODVF
-NUI3NDBDRUMyMjI5OTNDNjc2NzUwQkY5Mzc0NDhFNEIwRUZDOTQ5MDNGQTA0QTY1ODk1MTEw
-OAoKREREQzNERUNDQjdCNzFCNTQ0RDAzMEU2RERDRERERDVEOEFCQkU5MDg2MkU4Q0I0RTY1
-QzI5OEYyQUU0RDZBQjc3MzA5MUY2MzdDRjhDCgpDQTc1NTY4RTQ2QzVDM0Y2RDgzNzk1NEU3
-QzFFNEFFRDNDNDQ5RkJEQzg1QTMxQzg3RDQ1NzQ4NUQwQzFGQjRDOTc5NTc5MjVFQUJDQUYK
-CjgwQUFCOTYwNzg4MUZEMUVFOUREQjk4NjkyNzNBNjlBRTI4RUU2N0U2OTRBN0FDMTVCMzhC
-Q0FFNzYxMjBFODRBM0E1NzA0NjZBRjg4QQoKQzE0MDI0M0I5MENFMkEwQTIwNkY3MjZBQ0Ex
-MDNENEFBREVGOTdFNUI1RTRDNzUzRkIwODM4MTgyMEVDODA1NjI4OEJDQUY4NkRENzE0CgpC
-QzU1QkFFODBFODY3MDgwMkEzMEIyNDM2MUI0ODMwRTU1NTYzQTc0RTVEQjk4NjJDRTBDNUFF
-OTcyRUY5MTg4QTlEOTYxRUNBNUVGRTQKCjQ1REQxMUZGMjQwQjE5NzY2RDI2MUNBQzMyRjJG
-QTI0QjhERjk1REQ5QTVBRTZCQzVBQkQ2NkUwODgzREU4MURBQzgwOEVDOUU2NEQ4MgoKMDZC
-RjM0RDNENDE4Q0QxNTAyQzFCRjg2NUZCODkwNDZCRjIyODMyM0M5QjI1OUZFREM0NEEyNEI0
-MUFGRjdENEU2MjI3RjMzQ0JDNTlECgpCQjMzNjMzRDMxQkEwRjY1NEY0ODc2MkRFNUQ3QjBB
-MDMwNzlFNjcyMDZDNDY2MUJDNDEwRjNENUY0NkRGMTAyNzQxQzU5NDlBRjYxQzgKCkJEQjg1
-NTJCQTAxQUVFQkFBMTgzRUQ1NzY4MUZBMkZEOTJERDRDNDBFOEFCMTBBQUQ0ODU3ODg4RERF
-RkE1Qjg0OTAxOTFBNjI5QzBEQQoKNkYwOTk2MDdGODVFRDEyNDE3RTg3OUQ3NzBFMDE2RDI5
-N0VEMzFFNEQzNjA4MkI2NzAwMkY4MzM1NjEyMjdBMjg4OTFCNkQyQkRDM0NBCgpDRjNGNkNB
-M0Q4MzNFOEIxRTU4N0I0OTAwRjVCQ0RCMjk1REQxNjI2QkZDRDVEOUJDMzFCOENBMDg2RTI2
-NEYyNTU5OUJFNDJFMDdENTgKCkFEQTZFMDU0OTcwRERCRUJBNThENzE4NUVCMDAzQUFBODY5
-MTM4RkIzMUVBNDc3Qzg4MUU1NTZBMEIzNTg0MUFDMDk1RTIyNjUyM0IzMgoKNzczRTEyOEY1
-NDEwNjhBNzdCNDNGNjFCQTc4OTFGMzc3ODFGQzYyN0MzOTU4OUJBNERCQ0E0REQ5OEM3QkZB
-MzExQTdDQjZFQkM3RUYwCgpBMkEyNTM5M0Q3QkQ4NEQwMEQ5NTFENENGOUQ5QTE4MzQwMzg4
-Mzg4MzBBNTAzNTJERjY4Qzk3MDFEMENFNzU4NDYyNkJBMUFERjFEMDAKCkI1OTJGMzQ4OTdF
-QkVDNjI4MERBNTIyM0U0NkEwREI4NzVDQjEwQkI3NzJCN0NEMTZGMjZBRTE5Q0IxRjJFNTU0
-Mzc0RTg5Q0Q0RjdGMgoKNzQ4NUQ5MTY5RkQ0ODM1NDMxN0IxNjQ2NTc4RDk1NjU1MzQzMEJG
-RjIwOTAyMTdCMTVCQUI1NTBBOEUwRjM2REZENjA4OEE1RTlENTJECgo2QjUzMDNEOUUyQzBB
-RUI2MDc3NDkzODRERjBDRTc2NjQ0MzM0RkYzNkMzNTM4N0Q3NkZGODVCODA2NDQ2MEMyOEZD
-ODk1QUEwQjk5OTQKCkMzNjcwRUEyNkU4MzM1QkYzMzFGNEI0MDY4MzZDQjdFQTQ1NzI1ODkx
-MkM2REY0ODA0MjA1MEM3RDMzM0JDMDJGRUU0NzQ4OTA5RkI0NQoKOERENUQ1NUU3RkQwNDQ5
-N0NFMzREQkU4MkU4OEQ2QUU2NDEyNTA4NjNCOEE1N0IxMTYyNEU2MkNFREQ4MEUwNUZFQkFE
-QkE2NDY2MzYzCgpFQ0VDQjkyMUQxMURGNTkzOTg5MUU1QjVDQUJCMzZGQkRGODIyRUJGMTdE
-OTUwRUZGM0Y0RTg1MENFREM1RjBGRkZDOTdBQTE2MkJGRjgKCkE2N0NENzdFRUREQ0Y1RDVG
-QzQ4QTMwM0RFQjJFRTcxNkIwQzZGNTM0NjlFRTIzQjU1M0Q2NUZDNENERTAwNEEyOTQwQzcx
-RTRCQTcyQwoKMTQ4MkIyRkQyQUJGQzZFOEE4NzdBODA3NDg2RDg2REE2OTYxMUFERkFCOUU3
-NjUyN0U2QUMxNTAwNkUyNkRGRENDMzMxNEYyNEQyNzdDCgo1MzMwNTE2MEE5RUZENDM3MjI1
-OEM2OUU4NDU3RUIyNEFFMTYzQUU5OTdEQTY5MkREQkQ2RjlGNkI0QTBBODBBQzJDMkFGRUM3
-MUJFRTEKCjNDOEVERjQzRjdBNjIyQjJCRjBDODYwRkNENjQwNTcwNEQ2MEI2QzcxNjQyRjI3
-RERGQzA4QThBMDJDNjEwOEI5MDM2QjVGN0NBRkJBMAoKQkMwREQyRUU0QUQyQTNEMDYzRTJB
-QTA3OEZDRTIyNkIxMTQ2N0JBRjk5MjcxOUI1NURERjVGRkNFMkIzNDQ2NkQ0Q0JGQThGQzU2
-NDdDCgoyMjJFQkQxMUVFNjBCQzU2N0YwNUFBMzg3MDREREFGRUM4OTM3NDY5QTgzRDA5NjQz
-RjdCNzk4RUIyOEU1REE4MjNCOUEwNkI3QkM4QTUKCkMwNURDNzA1RjBBMTE5NEZFMTdENzk0
-ODk0MDM5NTYxN0FDMjVCQzkyMkIzQzgzOEM1MDdDMUNBQTk1QjY1QTJBNUY0MTkyOUQ3NUQz
-QgoKMUVEQzI2MTkzMENFNDExNjMyMTlDODgyNzgwM0VENUFDNTBCRjg1QUY3QzY5RDU3Mjg2
-RTUxMjBDMEYwODExNEJEQzMyNzhGQ0RGNzc0CgozRkM3RDhENUVBM0I0RDNGMkIyRjNCN0I2
-QzRENjJEMjBBN0Q5OEFBQkRCOUI5REQ3NzM5NTYxQjE1RkNFRTgxMzlCODFFRTYwMzMxRDAK
-CjkzOUU5OTA5OUYyQjE2N0EwQUFBOUU4NUQ4MDMwNjJFQ0M2RUQzNjkxNkM3NUVCNTgyNDND
-MjgyNUJFOTdGMzAyMUQyM0Q3M0ExNTYxNQoKMTJFQTkwNEE5NDkyNEFFMUI2NkY1QUE2MEFG
-RTNFNDdFNUEzN0U1QkM1MzU3MkJCRDU3OEFFOTIzQzU0NjVGODI0MDU2NzAzREQxQTFGCgo1
-RUZBREQ1NTdDRkEzMjJDNDZCQzk0NDE5OTE5MEM5QUJCMjYwNERGMkE3QjU1NDgwQzVENzAz
-NUFGQjdDN0E3NDU5QTBBMjM2NTczQjkKCjkxRjQ2MkFERUY1OTUzQUIyRjQ1Q0Q4MzdEQjIx
-Q0FEQTZEMzlDRkZEQkEzNTU0QzE2NkJBN0YxRkQyODk1M0ZDMzhCODUzNjI3RkEyMQoKNzU1
-MzcxNDRBNjYyNzAzNUE1MTJCMkQzNkRBNzFCREEyMzQxMzJEN0MyQ0VDNEYyOTc1MEMxNEZC
-ODE5NkQyNTZGMDU5MjJGMjZBM0RBCgpFMjJFNEUxNEI1MjE5NkY4Q0Y3MjYxQ0UwQ0JBQkRB
-QzFBMkMyRTA1NDFCMEFCQkM4RTA5QjE3MzFEREVCREQ1NDFEOTU1N0FGQkQ5MEYKCjNEODRB
-ODc4OUVFRDU5NkY2REVGRDM0RTQ2NTFCN0ZGOURFMUNDNDE5RkM3RkFGMUEzRTdEN0VFMTQ3
-RDYwNjg2RUZENUY1NUY1RDkxMQoKRUZERDU1QzRFMEJBNjQ3QUQ1OTlFMENFMTQwNUY3MTY2
-OUZBQjY3OTFGNDY1RTdGQzFDMjQ3QUI0RTUyQzY0RkIyRTZBMThENDQ2M0I5Cgo5NUNGNjM3
-OTk4Q0I5MUJFQjFCNjhBOEMzRTQ0NjBGOEYxRTM1MTY5Rjc4RkFDMkQ2Njc3RTI0Mzg1NEQ2
-RjZDODY4NUU1MTk5RDhGQjcKCjI1RTM4M0NGMzM4QjI3NkZFNzg1OTU0NDM0RUU4NzY4RkI5
-NTMxMUQ0N0ZEMzI3Mzc1MUU0Q0RFQ0YwQ0RFM0Y3N0E3NTEzQjM5RTMxOQoKMTg2QjQ0OTUw
-MTZGQjk3QjREOTk2RjRGQjg2QUZEMDBFQzlGNTRBQzQ0QUM1MTlCQkE1REVCRkQ1RjM5Mjg2
-ODE3QjI1Njk1NzUwRTFBCgo0RjIxMERDOEMwNkE4NjJGMUY4OENFM0FEN0Q1NzY0NTgxRTU4
-OEQ0NzJCOEI0MDdDRDA3NEE1Q0NCMzlENkUxMzhGQzNFNThDOUMwOTYKCjRCOEMwMTk1ODQ3
-QTdCQzBFNThFNzk2RUU2MEExMEZFMDAzRjI2MjMxRUEwRjBFQjdFMTAwREQ2ODkwRjZBRkI4
-QzIyOTAyOTBBOTdERQoKNEVGMUY1QkZGQzA3MjkyRDJCNEQyNjE4QTQzMEZGM0UxMTVCRkIz
-NTExNjgzNTg5MUVFREVGNEQ5NDU2RENDOEEyNURGNTQyOUJEQjUyCgo3MTUxQ0E0MjU3MEY0
-NENGMzZENkZEMzFBMTBENTg2MzFGNTk2NjU3OTQ5NUQ2MjE3QTIxREM0MzZCN0UyNkFDRTFD
-MDNFNjJDRUFFQTAKCjdDMDlBNjcxMUZBNkI3RjM0NTA0QzRFMDc5OUU3OTdENEQyNzc1RkZE
-MEU5QzJDRUQ5RENDOEY2NEY4NjM5REY4QjIwRUE5Nzk3MDhDNQoKODFCRkM1NEYwOEJBQkU5
-RjUzODRFMzU3ODg1QzU0QUMzM0UwRkVEMjcyMTU0ODQzNjMxQ0UwM0VGRDkzREYwMUQxNjAw
-QkU2NTg3N0IxCgo1MUM0MTIxOTM2NzY0MUVEMDE5MkUxMkYyNkY4NzFCMTNFQ0IyNTgyRjc1
-Q0E3RjFCQUIzREYwQjg5OTQyQkFEMDM2RTlBQzdBNEM3MkQKCjZFQkIwQkREQkFGMkY2RjlB
-RDI4NENGRERGMjkzNEI0RUI4NkU5NDk5OUQxNDMzRUZBMkUyNzgzOTREREY2ODYxODhBQThF
-NkMxNTE3OQoKQUEyMzJBQUQyNEQ1MDM2QTM5QTQ5Qzg0QkYzM0FDODY0RkQ3NkJDOTFEOEU5
-MTVGMEE2MDRCOEE0QUE5OTgzNkRFRTAxRDcyRTA2NTk2Cgo4OEZCRDE5MTk1RDkyRjVDN0ZE
-OThDODY4MDRFN0QzRjdFODE4Q0M2MUIzNzdFRDQ4QjVEQkQ3NDQzNTE1NjRGRDRFODJCNkRF
-QjFBNzMKCkI5NjQ2ODQ5ODVGQ0JBQjk3QUM5MDNEREU4MTBFMDFCMjdDNDQyNjdCOUQ2QzND
-RkRBNzQwMENCOTIyRjZEQ0M2QjcxMUMwNDVDN0MxRQoKQkEyNzZFRTkxNTkzNjY0M0EwQTZD
-RUI0OUMwREVBODdCMEQ2N0I0Mjk0RjIxRjMwRkZENTk2MjZENzc3RDVFNjNCNTQwMEIxRUI5
-MkE0CgowM0NCNjg4QjUzNDFDNDBBNjlDNEQ0MTNGRjRCMzE3NzUwNTMxRUFERDExRjg4ODUx
-RjYzNDU2NjlGNThDNTNFQzhCNzY0QUE2NjZCRDYKCkU1NEI0OEU0NzQzQjJFRUMxM0Q3MTYx
-QzUyMDM0MzNGREFERDlBNENCM0U2OTY0MUQzNzk1QTJFODEwQTQ1QkRBRTM1MzJCOTdBNTJD
-NAoKOURCNTUyQTg3NkMxQUJBQUIyRTNBQzEwMkM5ODc5RDIwM0Q2MkIxQkQ0QzIzQkM1MkUz
-RjBDOTRBNTU3OTU5QzZDNTc1MTU1RjdBRjY1CgowNTQyQjVDMTAyNDdDREI1NDA5NDU0QzZC
-RDdGNTZDMTMyMzBDN0Y1Mzk1RTIxMUNGMkZDRDg3MkZCQkMxQUNENjg3MjA2RUU1OUQ2QkIK
-CjRFRTYzRTI0NDE4NjlGODc1QUUzNTY4MDM1NkVGRTVBMDhBQzUwNENCQ0YzNkY5Nzc0M0Yw
-Njc0MEU1MTM3RDE3ODMyREExNDI5MzNGNQoKNzA5QURGNkRGNTE3N0E4NEQyMkJFREU0Q0Iz
-RTZEMzBCMTFCM0M5MUJEMEQyMDIzNTJCREM3NjcxMDZDNEE4NzE5REEyQzc1QTM1NUMzCgo1
-M0M2N0NDNTM3NzVFRTE5MkUzMTU1NEFFMDIzOTlFQzNFNUNFNzc5QUVENzdEMTEyRjNDNzA1
-OUQzQzZBMzE2MTc5RUYzQzNBRTA0RjIKCjNBQ0E0MTEzODdFMUU5RDA5MzBFOUMxRjM3NTIz
-MTVENjMxRTU1NjkzNkNDQzZFRkVFNzdEQ0I3RTcwNTc3OUY4MzAyODQ4RURGRkU3MAoKRDEy
-QTVDN0JFMjNDQjZFRDY1RERENDdGMEUwRjA4MjE2MEEyNTM4RTFCMDMyQUFFMTdDOTdDRjdG
-OTcyMTc5NzJGOTk3Q0IyMEFGNzFCCgo4OTdCMENFMTlDODk3MkE5MDlFRjEzODA2OTJCODJF
-OUIwOUMyNTdBMENBNUNFMDdGMjcyQjU2QkQzMjFEOUVBRUVERUVCRDA4NjM0RDYKCkI5RUMw
-MzMyMEQyQ0UyMDhEODIzQzBEMDJENUJDQjlBOTkxQUY3ODRGRDcwNUNBMzMxNjYyNjIxRDNE
-NzkzQzhDMzExRjc2NDVGQUMwMAoKQkM4Q0FBRjc0RjNGQjhEMzMyMzYzOTA4MjYwMTU4N0I3
-ODE2NDk5RkE0Q0Q5NTY2MjhCNzgwNkNDNDA3ODE1QkEwQ0I5RTI2MTQ1MzAwCgpBOTE1RjdC
-NTQ2MjIyRTVCNDk2OUJENDREOURGNTE5NEQ3NzE5QTBBN0JGNzJCMEZBNERCQThCMjNCQTAy
-REM4NDQxQTlFNEM1N0M3REMKCkNDQzJGNUJFNTk3ODZGM0Q3OUQwNzBDMUYyRDAyMDAzMTYw
-QkU0QjAyRTY3NjdDNTg3Njk3M0M3ODZFMTBGNTY3QTExMjhDNjc1REVCNwoKNDYxODNEQjM0
-REFFMjk4RTA3RjBGNzhBNDhGQkNCRDZFREUyNjk4NjM5QUJDMkU1QTFCMkU0NjdEOTNBNjlC
-RDJENjdGNDFGNjI1OTNCCgo4MjQyQzRBNDA2OEJFQkM0RkE3MTY1QjYwQkNEMDdBODc1MjU3
-OUZFNDZDRTdEMDQ5NEIwNkQwQ0MyRTc1NjhFREVENjBEMEY5Q0JFQzkKCkQzRDQwMzJFNjUw
-NzQxQkMyMUE4Mzk2MjcwMDE0NEYxQ0JCNjhBRjI1QkUwQzBENUVBQTlERThERDhBNjhEQTdF
-MEY2QUZGMUJEOEZCMgoKODI3ODIyNkEyRURERTdFMEIzM0JBNkQyQTA1MTRENEY5MEI0OEZE
-NjMwMEZGQTlCNzQ3OURDOTM0QkYzQUFBQUI5NUIyQUY5NTY0RTlECgo2RUMzOTk1N0U3NzJG
-QzVGMjQ4MTY2Mzc4MjBCNjhCODgwQ0Q4NENCMEM1MEI0REEyMTJBMjBFOTA0RDM3QjM2MEUy
-OUREQ0EyQ0ZCNTcKCkVGMjM5QTVGQUU3Rjk2NEM3MkIxRkFGNjQ5NzJFNDk2OTMzNzAxOEQy
-NkM5Q0I5RDY4QjZDQUM0RTNDRDJEMzg5MzE0NUM5NDMyRkM2RgoKMEZGOEMwNjJDM0YwRjFD
-M0FCMEVEOEQ2QjU1MDVCRDE2RUU2QTE1QUFFNTdCQ0UwNzMzMzQ2NTUwMTg2N0YyREVGQkJF
-MDI3NEU0NjczCgo4RkZFOEJEMUI0MjExRkVGNEE4QzI4MjA4RTk4Q0I0RDcyREVDNTU5MTI3
-QUFEQUZFQUNCQzBEOTg4MTcyMzkxODBCQ0I0M0REMjM5RjYKCjkxQTNFRURFNTE1QTMzNzBB
-RjU3Mzk4NDFBQjlDOTFEQjc3QjkxNDQxRTRBNkYwRkUxMTNCNERDNTA5RTRCQzk1MUM4MDBD
-RTc4ODUyNgoKOUU4MzZBNUFFNTk1QTcyNzdBQUM4NTEzMzBDRDNDREFFNERENDU2OTk5NEUx
-RjRDRkNDNzVFNDU5QkM5RTFCQzdGMjE1QkMyRDY5MjZGCgo1REQ1MDlBMDlDRjIyQzUwNkVC
-RjIyRDIzMDQ4NzBDMzkwNUQ5NDYwOUY4Mjk1RDBDNTVCNDAzQTc1NzJGRjRDMERBNjAwQTc0
-RDM2NDEKCkRFNERDMENGMTRBRTM1MENFOTRFNzEzQTJBRDgzMTQyMkYyMTcxNzc3MTg3ODQw
-MDY5RjQxNENCRDMxRjM2NDhGODgyODdDNTBFNDI3NwoKMzIwNTRGNURGQTFGQUJFQTU3RUVD
-QjhGREM4MDE5RDM3MzM2RDhEMEU4NDBGQ0VDRDBGREYxOUU1NkEzODZDMzUyMUUyODcyNkMz
-RjBECgpCNkRBNDkyMTBGNzJDNjZCQ0MxRTVDQUIxNUZGMTlBOEIyNUM1NDQyQTBGOUUwRDQx
-RkFGODI0MDc4RkM2RjZFQkIzNzc4QzZGRkRFNjkKCjhFRTAyMUMzNTNCMkEwMEY4MzkwM0Uw
-MDFBMTcxNkU3NTMwOEEwOEE4QTg5NzhDQjRBOTlEMzc5Qzc2NjI5RUVGRjY1QjkyNkVFMzMz
-OAoKNTQxNDRGNDNCMDRGODM4QUI1MDAzRkMzNjUwNTMyNUQzRTRFNEI1RkI3NUExMjIxQjMy
-RENBQzRDRkQzNTg4RkUwREEzNEFGM0FBRkFDCgpBMzk1NUNBQTA0ODU2QTE5NkFEREExNjE3
-MUFBQjdFMjFDMzRDQzQ0Nzc0MUU1MDZGMTUzQjdGNDY2ODcxMzQyQUM3MkQ3OThCNjM1NzIK
-CjNGNDk0N0FGODRFNjc5RDRBOTE0NUVDMjYwNjRGMDIzODhDNzMxQjJEQURBMjY5NzdDNTZG
-REUwOUJCREUwNTFBRjg5NUE5Q0M0QTgwQwoKRTlBQUU3OUYwNkJGOTEzQ0JBQTY5RDQ0NUIx
-MjAyM0FGMUE3QkZENTg0RDQ0Q0NFMDRGNTBENzdFOTJGMzkyOTRBQTFCREIwOEZDNjU2Cgo3
-MjE4Q0I3RkEzNEEwOUUxNTc0RjdBRTQwREU0M0ZGQjcxNzYyNUYyQzU2MjlBRkQ3MUFDRDhE
-ODBCODg4MzJDMjREOERGODIyNzlEODgKCjMyODExQUZDRDYzNEM1MkUzMjFBNDc3OEZGMDY2
-NTA4QTBBNjNDRkIzOTA1RUE3NUY1ODIxREQ1NjhCOTBEMTEyOEJCQkE0NDIyM0M3RQoKNzVE
-QzhGNzgwNTY4RkIyRTYwMzk2MjEyNUNCMDJDMUE0OTJGQ0EwQTAwOTZBNUJBOEI3RDBDQjEw
-NTFBOTRFRjYxN0RBMUU1NzcxQjBGCgpEQUNEQ0Q4NzdEMDY5OUUwMTY1MEY4Q0FFNzAyN0Ey
-MEFDMzA4QjdCNzFGOEQyNzA5Q0VEOTgxNTQxQjUwNDU2RDdEMTcyNEQyOEZEQzcKCjRCNUZE
-MDVCRjcxQTk4REJBMUIyN0QyNjk0MzZDOUJDNjY4RkVDQkE4RDY2MEREQjdDRjdGN0Y5NjFC
-RUYwNUZBNjJFNDk0MjE2MTlDNAoKNENBNzIwQzI0MjZBMUQ0ODZDOTVFMDI2NDE2REQ4NTM0
-Qzg1QUEyMDBGOTVCOEVCRDRBNDUyNTQxNjI5RTFGREUyRkUxMUQ4NEQ5NjlCCgoyQUEwMUE5
-QjdGNTQ2QTY0RjU5ODE4M0MyM0UyNkQzOEQ4NkY0N0UyOUM4Mjg5QzVBQkVBRjFENUFDQUJD
-RTEwREU0NkM1MEUzRDI1RDkKCjgwRDA3OUU4QkJBOTk1MTVBRkQ5REIyNUNBOEQzNDk4NEQ1
-RDk2QUJBNjVFMjg1MDQ4MkYyNjREODMxNkVEMzg2OEQ1MzU3QUUwMkFFNwoKM0NENTI4MkRD
-MTkwOEE2NjZGOUVBRjE1RkJCMkUxOUQzRUEzNTA5QzU3ODFFRDA2OTBBMjA2MjFCREQzMUFE
-MkQ4MEY3Nzg3QzVFNjc4CgpCNzE3MUI5NDVDNUFFRDc5MThEQzMxM0UwMTE2NTNENEFCNUNB
-MTUxQjQ4MTQ0QTBBNkIyQzJEQ0ZGMzYxRjcxMTgxMURCNkYyNDlCRTcKCjY1NzlBNDNFRDM2
-MzMwNkQ2ODExRDZFNTgwMUQ2QTg0RDRDODkyOTU2RjBEMDBBOThDQkY1NjhBNEJFNDgxMzI1
-QUM5RjA5NzJGQkQ1QgoKNkNFMzIzQjBGQzQzMjI4ODUwMTI3NkJEREE0RDUwNTA1QkNFQTQ0
-QTVDN0RGRkUxMThGMUVBOUZCMEEwMUNFM0I3RDhEMDQyQ0I4QzQwCgpGQTMxQzBDN0Y1RDY1
-MEQ4NTZDNkNBODY0QkUzQkI0NkQ4ODc1MkQ4MUVCMTUwMDkyM0Y5REI0N0M4NkI4Njk5OEM4
-QjFEQTcwNzc2QUYKCjcyQkQzQ0VFMkYyMkZGN0YxMzJERUVERjhFMUZBRDk2RDI0Mjg2MzI1
-MkYwMzMyMkI0NTg0MjhBNUQ5OTY4NTJCMUE4NjJDNTdDRjA4NwoKQzFBREU5ODAzRkFGMjRE
-MjVFRDU0QzlDQUUxQzMxNzVFNzUyRUJGMERGREQzRENFMDAyQkJFRUQxQTE4NUYyQjk2OEYx
-Nzg5NjQ1RDEzCgpEODNFM0ZCMTVGMjRERjQ0RTg1QjMwM0YzMkM2ODE3NjJEMjNFRDgxM0FC
-Qjc1NTUxQTMyQzhEMzVDNjBGQjM3ODRFOTI2QUYxODdGNDUKCkU5OERGMUZFMTdFQTkxQUQw
-QTExRUJDRjE0QkIyMkJGRjE5QkI1MjQ1MkU4RTA2Q0UzMjJCMjk1OUNFQUFGRDk5MjA1NENG
-RTk1QzdGMgoKNDVGNTZFQ0JBQzA2NTk1RjQyMDJBNTI3MkI3QUZDRDQwQzk5RUYzRjc4REM5
-RkVCRDU1MkRENDkxMzU3MDQzODM1MUNCNzZFRDY5MTQ3CgpCNDZBRjU4OUU3N0RDNDJFRjAy
-MTgwNDk0MEFCQjM5NUY1NDlBRTc2NjFCMEUyOEUxODBDOEIyNEI4MkJEQjc3QUExN0Q4RkJC
-MUJGQkIKCkIxNkFERDVCNDhEQThBQ0E4MzIxQTY2QjYwNkU2N0YwRDY0MjE1QkMzRTI1RTc0
-RTI2RTY5MDhEQjE5RTk2NkY5NEIxRjNGRjg3MjY0MgoKNTM4MEZENzIyQjAyQzI1MUQ1N0Uz
-MDEwMTZGMjlBOTg0MTZEOTBCMTk0NTgzN0UyNjVBMjg0RkYyQjhENjU1ODkxRDc2OURBQUQ3
-NEI1CgpFQjVBMzI3NEZGOTE0MEQzNkVCRkQwOEE1QkY1NzlCRkU1QjNCQTk2ODU2QUJDN0M0
-ODcxQTBBOEY3NkQwNzM0NzI1RjZGMUQ0MkVCOUIKCkIxRUM4NEFFMjkwQkJDM0RFNjAxODAx
-MDAyQjhFNUYwNzVBMTVEODFGOTU4RUE0NDZERDJEQjhGNURBMTBFNzcyOUFFRkY5NEQ1Q0RF
-OQoKOUU0QjkyMzcyMjU2N0I4NkVDODE5OTlFRkEyRjcxM0U1OTdBRThEOTcxNTg2REIxRkI4
-OUFDNjNEM0Q0QTYxMzcwNTNCNEI5QzkxODZECgoyOTk5NEY1RTRDNzAxNzIxNTNCRTM3RTNB
-QjFCOTM4OEE2NzY1QUNEMkIwMkVGQzhERUI1MDY3MEVFRjc5RkRCREIzNDk0RDMyRTk2ODcK
-CkExOTNBRTZEQjJCN0I3M0M0Mzg3NkZGMzJEOENFNjQyMDA5NkQ5QjdGOEE5ODUwODEyODgx
-QTFFMTgwNTRENTdCOTg0MDNBMzIzRDA1RAoKREZGNkNEN0FFNTlGNEVFNUZFNDY2Q0Q2M0My
-N0Q3RkI2RkI2Mzg4NUQwNUY0QUM3NDk1MTM5MkYwQkFBMjdCMDhDRjg4Njg2MEQ0NDg0Cgo0
-MTVFMURCOEVEQ0FBMzlDRTc1OEY4RENCODBGOTYxQkQ0MzA2RTRBNDYyQUQ3QUEzMzMyMTk1
-MDAyQjMyRDUzRTVDMjEyQzAxQzk5NDkKCkZFMzBFOEEzRUVENjc0N0U3NjU3QTU2NzYzOTAw
-NkYzQjQxMTk4NTQ0NEFDM0UxQkQxMzMyNDFENThERDMyQTI3ODAzMzQzRThEQTk2OQoKNjBB
-Rjg1MDEwRTlCM0IxNkFDNENGRUQyOEYzNTAwRDU1OENFQTUwQzUwN0Y3QTg5QTdGMDY5QjFG
-QUU4NzM1ODRENkNGQTBENEYxQzI5CgpDNDYyMDdFQjY3Njc4MkIyMDNDNTUyNzlCNjc3NzE2
-RDc1NEUwQzE0RjE1NzExOTc1MDU0RDk0QURDODIxMEVBQ0QzMDIwOEUwRkNFNDcKCkY4NEUx
-MjBDNTQ1REMwRjFBNDg2MTE5OUQ0MkU1QTgwOUI1MzFENDJBQjA5MkM5QzQyMTY3REI2MzAz
-QzVBMzM0REUxOEREQTdFNzlEOAoKQURDNTQ2QTgxQUY0QkYwMzY5NTY2MkE5Q0ZDRkU2RkE0
-NjlEQUM2MDU2MjQyQThGRUI4NzkyOUY5Nzg5MDlDNkQ0QzkzREQyRDYwQkUxCgo2MEZFRkRB
-QjkyNjM4ODcyQzNFNjUxODc0NkMxQjFEQUUxN0FBOTY3REU3OTg3Njk5OTYxNTA3NUIyRkZE
-QTY3RUU5Qjc0M0UyQ0Q1NjAKCkVCQkE1NjA4QTk4QTA1REEzN0Q4RjIxQzE2MThDMDJEOEU5
-Nzg0MjNEQTgwRDdDMzhDRjU2MjYxMEU4NUREMEYxNzc1RDgwMjFDOTQzMgoKN0NCQjFGNUMy
-MEVBNDFFOENBMTlBNEU2RDUwQTNCRDUxMjlFMjExMDFFMzEyQTlDOEY0NzBFMUVCMTJEMDM4
-RTVBRTRERTUzN0Y0MzI3CgpCNzcwOTE2NjdEMTk2QzM2MTJCQzY5MjVBMjRFNjZFMkJCQ0ZC
-RjZBNEM5Mzg0NTdGRUUzNkRDMUZGNzRFRDdBOUM4RjY0ODNDNThGMkYKCjI3QjcwNjVGMzU2
-NjMyMjdFRTQ0OTJFM0YwNkI2MDcxQ0VBNDU3MzlBQ0I5NDNCRjBFRkZCQ0I5OUQwMzIzM0M1
-MzEyNzAzRTc0Q0ZBMwoKNTI4ODE4MkQ5RjM3MUUzRjIyMjU3OTY0Rjg2NDcyQUFFQkE4MDYx
-QkYwMzlDOThDMEI4REYxNEM3MEZDOEEzMTNEQ0RFQjk0M0U2MjUzCgo1MjM0QUVFNjI4QjlG
-OTc2NjBBNzY4Q0ZDRDA0NzAxQTBGNEM4MThCQTVDMDIxOUU3MEIzNzU3MERCMEQ2MjVFNERF
-M0YyMjBFRUFCMEYKCkExOTQyMkExNzEyNEIwOThFQjRDOUM5RTcxRTJBQTBCRjUzNkE4MTE2
-MUMyNzg4OTczRUI1NkNBMEE4MDY0RDYwMjVFNjRDNTcyNjUyMwoKMjY1QzJFNkFFQ0YyRTA0
-NEQwOTY5NTA4Q0ZENERFQTdBQUZBNzE3N0ZCNzk3QTVFNTgyMDVDMDk0QkU5ODVGQkQ0Q0NE
-MkQyNDlFQ0Y0CgpCMkQ3NjY4OUVDMzNGNjQ4ODlGMkFDNDAwOTJGNDdCOUJDNkQ1Q0VERDFB
-OUY4M0EwODMyMDk2QjgxQkY3NjI5RTQ2NTkxQzEwOUY1N0MKCjQwMThFQUFCNzhGRTcxNkQ3
-NkVCM0MzNTEyOUJCMTYzQzEzRjNBQjc2NTFFMzg5NzEzNTEzQkU2NkEwNkUwODJFOTBGRDJC
-QjBDNUNDQwoKNTFEMjI5QjNCRTVBRkREMTc1REM5NzkxRUFDMEMyQkE0QjMyQ0IwNDI3QUEx
-NUJCNTA2QkQ2Nzc5MDdDRTQzRDU4RjkyOUMwRTcxMUY2CgpGQzk1Nzc4NTE1QzI1RkU5Qjg5
-MkJDQjg0NDhFQzZFQzBCRTQ4ODYxRDFENTdFMEIzNkY2MkNDRDY4N0Q4MjQwNENDRDUyQTM4
-QUYyNjYKCkU0MkQyMDE5NTMyNDlERDBFODQzMDhDMENFNEE2MDU2QjA5NTJGMjUwODRDNjg0
-RDNFRjIwQzYwOEZBNkY0QzRFM0ExQTI3NDMwNzc0NwoKNEU5MDNFQzQ2NzM1NDI5RkNFMUUx
-RUJBMzYzRDUwOTM4NUFDMDY3RkVFMTAyNzI4MkY2QzczNTc2OEI5NjVGMjZFNTQyQzRBNjZB
-NjJDCgpDMTM0REZGOTRDNjkyNDAxRkI5NkU2M0YzRkRGQkUzRjUzMUEyNjQxNDI3NUNBQUFC
-MTQ2OEUyQjQ2MDQ5Q0IzOTk4OTUyM0QyMjY4REEKCkRCMUI5REY0QkZBRTk0RjA2RjcxRkIy
-RkJDNDk2QTY4N0U2MkNFODY1NzJCOUFDRUQ3QTZDNjVGOTg1MERBQTUyRUIyOTZGN0RFMzMy
-RQoKQzQ0RkYxRTBFRjJFMjI1NkExQjUzQkQ5QzU1RTc1QjgxQUE5NjgzMEIxRUREQTM5NUM2
-RkE3NEUwRDJENTA5QTVENzcyMDRCRTdFMTdGCgo4RTRFRTZDQjE3NjM3MjgwMDI5OTFDNjgz
-NTdBRDM4ODJCOUMyMTZCOEE3NTc0NkUyOTY4MEI0QTgwNzM4NjM2NEU4RTVDRTQ0RkQxNjMK
-CjREQzFFRTVCQThGOTVBQzIwMTM1QTQzNDRFMUE5QTM2N0ZENDc0QzM1NzI4MThGRjY0M0RC
-Q0U4QzhEMEMwMEREODAwQ0E5RUFDNTgyRAoKQzVFRjg3QzREMTM0MDg3NTlEQkFCNEU4QUFC
-RThFNzdDREUyQ0E4OUJCNTgxRkY1N0Q3REQyODRCQjgyOTc5ODU0NDREQjA3NEQyOTlCCgoz
-QjcxQThGOUI1ODZFMTUzQTIzRjc1MEI2NkYzOTZCNjMxMkNEMjIxRjQ0MTcyQTZCQTIyNDQ5
-NTgyQTkyOTRFQ0RCREZERjA5MTdCNjYKCjBBMkRGQTFFNjQzMTg4QTAzOTVDMkU3M0IzNUZC
-RjI1QTk1N0E0NTY3OTFBQUJFNDcxM0MyQkQzM0Y4MkUwQjNEQTQxRDE0MUZERjI4QgoKOTRC
-NzJBRTA4QTBEMzk4Mjg2NEU4QTU2NUZGRTVCRjlEQjRBNDlGNzIxRUQyOENFOTREQzI3REFG
-NTAzMTU0QjJBRUY4RDRDM0I1MkRFCgpBRkE3OTRGQkZBNjM5NDFFOUFBN0YxNEQ4RkQ0QTM5
-NzFEMzk5QkRBMDc5Nzc3NkQ2OUMwRjY1RkRFQjA5RjU0RkI3MzJDNEVCMjRBMUUKCjc0REYz
-MEYwOThDNTlCRDg1M0U0QUVGM0RENDcxOUQ4ODNGMzhFRjQxMzFFQUQ4NERDM0UyM0I3QTM1
-ODI1RjM5RjYwM0ExRjhGMTBCNgoKRkI3RkNBRjUyQTFBN0UzMTVFNEE4QjlEQjk1NjhDMkYy
-MzQ4MkU5NjQxRjgwMDczMzMwRThEMUIwMjgwQUEwOTc5M0YxRDkzRDhCNUNCCgo3ODQxQTFF
-QTlDOTIzMjc1MTAzQjYzMjE1QjQzOUY3QzIzQzJFRTJBNENFMzhEQjBCN0ZCQUVBQkI0NDEy
-M0YwRkFDOEE1RkYxREQ1NTUKCjFGNENGN0IzMzEzRDZBMzkyQjU4QkU4NzJGQ0UzQTg2N0Q1
-MDI4MzRCNTZBQjE0MTgxNEJEMDQ1M0QwNDhENkQxMTRGOTM4Qzg1MTRDQQoKNjIwNjA5NzhF
-OUI5NTRGNDVGRDY4ODQ1REFEQ0Y1Qjg5OTJCRTQ5QjI1MDIyQkY2NTlBMDZCNjVENEU3MTgy
-NTY1QTNEOTAwOUI2MkUwCgpEMUFGM0U4OTdEMzVDRjc2RjVBQzY5NzUyREVDQzdFM0FFMzk4
-ODMyRjRFQzQyMDhBMTI0OUYzMTc1RTY1OTY0RjRFMTgzQzhERTJGMDcKCkFERjM3Q0M3M0Ex
-MTE4OTBBQTA3RjEyQjlFNUZBNTNDQzNGRUMyQUZBOTgyODFEOTVEQkJEQTVBRkU3NzA5ODU3
-Qjk4RjIxMTc2QzM4MQoKNUI3NjVBRDgwRTM4NjU4RUE4OUE2Rjg4MzU0QzNCMUM5MDY3NDlG
-NDc3MEYxRDk3QzE3ODU5OThENTkxQzAwMUM0MzdCMjMxNTA4Mzk4CgoxREQ5MzNDMTgyRjNG
-RUZFMjJDNkI5ODE3NzE1QkQwQjA5MjlBMUM5NkVDMzM0MkMzMUEyNTgyQjlGOTAwQ0RENjBG
-MDgzNURCNzE1OTcKCjRERDA4NDQ4OTNDMTNEMTI3MjgwOTM1MzEzOTAwODJCRjNFRDFENEM3
-RkYzOTlDQUYwMTRCRjk5Njc0NTE0MkJCM0I0OUNDRTY0NjEzRQoKNTI3NDI1MkREMzZDOTBD
-NzE0RUMwMkU2NTYwRTBBRDVFRkU1NDEyQjY3ODQ0MjFBN0MxMkE0QzBFQjlCMDc5RTBBMkNB
-REI1OTUxQTkyCgpBNjc4MzA1MzY1OEFENDcwNUYzMjFBMzI2MTY0Q0ZDNzE3QTIxNDUzNEVG
-RDQ5MDk3NjcyQTkwNzZCMzQ3MzU2MEZDNkQwQkMxREU0NzQKCjcxM0Q0MUY2OEI4MDRERjk5
-QURGRDJFMTkzODIzMDU5ODlFMjVGREUzMzM1NkUzRDhDNDU3NEJBNDFGRTEwN0JFMzREMzIy
-QTFDNTBCNwoKM0I5NjQ3MDdEREE0MzgwMTcyMjZENUJCNEUyRkI0OThENTBDOUE3Q0U5M0U2
-RDUyNDczNjgxMDA4QjczM0Q0OTRCQkVDNzY4M0ZFRDhECgozMUYyMDE3MjMxNEI3ODFGRkI5
-RkI3OURFQTYyODEwOTM0MEM5MkFDRDk2N0Q0NjczMTI2Qzk1RkE4QzZFMkE4MDM1QzkxOUMz
-REMyQ0QKCkE2Nzg3RENEMDQxMjIzQTFGNTU1QkYwMTFCRjNBMDAyNEQ4RDM0MThCNENGQTY4
-Mzg5RkJDNTQ1RTFCMzdBQTEwMkQ5MUVGNDAzOTdGNAoKRTJDNDU2NEZCRDRDQzM5NEMwQTEx
-NTNDM0EwRDUxNDMzNzI1RDM1ODI1M0IzNzU2N0VDNTk1NjA5QjJCQzBGRUEwQUU2NURGNEUx
-RDIwCgo3MzQ4MUVBQjUwMzVBN0I5MTM3N0U1MEMxOUEyNjFFQTBBRTlCQ0ZFNERDRkM3OEU0
-MjY2NDZENjRBNTQ2Q0MwM0E4RjI5QjZBNTEzRjgKCjg0OTZFRjIwMUQ3QTlBMzM0NTQ1NEE0
-OTdBMDZGNTdCQ0YwNjBDODA2NDQ3MkE3QTZDMTU2RkZCOTZBOUNENjYzQzgwN0Y0REZDNkI3
-QwoKN0RGNDJBOTVGQzkxRkJFRjRFMjdEMUFCNjAxMEM3NkIwMTZBQzFFRUNCOTgxODRFNTAx
-Qzc3NTA1MDA4MTlGQTRBMzZBNTBFQUFGMDlDCgpBOEEwMjgyMjAwRDIzRjc2OTQxOEU4NDIx
-QTk0MEI4OTQyMDg4NjBBNUZGNTI1RURCODA0QUFBNDU2RUVCRENBMkQ1N0Q1RTQ1RURGMTYK
-Cjc1QjNBNjkzRjFEN0E2OTYxNzI0NDIwQkJBNjFDRTkxRjVEREM5NTNDNjk4RUNGNkNEMTg1
-QkI1MTBCMDVFMDU2Rjg3RTZFQTcyOUNBQgoKMzgxNjhFNTdBNTIxNTNBNUJCNTkzOEMwODU1
-MzNFNTBFNkZERjMwQUU0QzVDRDVGNjFCMzFCQTA2RTVCMDY5RDc2QTk1Q0RDQzY0RTdECgpG
-Q0IxNjJERkVFNDgzNkMzOEFCMTZDRENDQ0ZFQ0YxODEwRUU1NjFEQUI1RjVBOTA1OUQ2MzIx
-RUYwOTg2M0ExNjI3RjVDM0YzMzlBNUIKCjU0Q0Y2MjdENUM0NUI3OTREQUM0NkI5RTU3RkVB
-NDg5NjAzQTlEMjMxNUNCOUE0MkNCMjRBQkI3NTU1NUJGREQyMTQ3RTBEQjBBN0Y1OAoKMEJE
-RTgxQzdDNzBDM0ZGNkZENkNBMzA0RDcxOUMxODlEMEQ3RDk5MUNGM0U4N0UxNTI0MDQxMUZB
-OTQyMzdCOUZCMTQ1RkRENDM4MEZECgozQTVFRTE4NDNCRjU1QzZDOUY2NDBGN0I5RTQyQUFG
-MUQ5NkZGQzQ0RDUzNzE5QjgzRjlDMTFDRkRGRkU1MUJDNDU0RjUwRjIwRDRGNjIKCjU1MTZG
-RTRGRkIxRUU3OThDODVBRkRBNTMzMTkxODVBMkNFOTRFQjM3MTcwQkQzQjk0OTU4MkFDRjIw
-RjQzQjBGMUM0MjExODQzRDUwRAoKNEMwRkI2MTUxMDdBNTk4NUYyQ0U0OUNFMkY3QjE1OUM0
-RTU2NkU2MTdCMUM0NDYxOThGNDhERUUzRDMxRTkxOTRBRkNBNzFDRTI4NzBDCgo2NTI2QUIx
-QjA2MTRDMUI4OTRGREMwREIyRjIzNTYwODJCOEMzMTFDQkJGQzQ0MjJBRTQ1QjkwODUyMzI2
-REU5OEExN0NBOEY1RUI5RDcKCjQ5MjQwNDkxNkM2MTM2N0JCOURGNEZBQUMyRkUzMEM2QTcz
-OUNERDczRTBBQTFBQkQxNEJCMkQ3NjYzQzg2QkEyNTk4QUY4QjU1MzYwMgoKREY1QTAzMkNG
-ODBGNzlEREQwNEQzNjMwREVENDdCNDhFNThFRTc0RUFDODFBNUJEOTAyMzY5NTRBMDJEOThB
-M0RCNzA1REZCQ0JEQkQ3Cgo1OThENzc0QTI5MjAwNjMyRjU0NkExNTlBMjY1NkI4NTk4MkZG
-QUQ2RTI2NjgwNjk2NjNDRTAxN0QxNThCN0NCQzEzMTBCQkI4NjcwNTMKCkIzMDBFOEZGNEE1
-QkNGMjg2RDZENzdDRTVGNTg5MEQzRTNGREE3MkM1REEzMEQ3RDcyQ0EzRTA0MERFQzM3OTJG
-RUZEQTcxQ0VEREJGOAoKNThGMTczOTZCRDVCOERDOTlFREMwOUU5QTJCOTg4NzdBQTc5NjY1
-RTFFNDNDRkYwMjAzMEJFRkRFOUUxNDk3QzgyMkFFNDU4QkI2QjE1CgowRjZBQTQ0RDcwNjRF
-NjgyOTRCQjg0Q0MzNDUzNTA2MDA1M0QzNkE3NUI3NUI3REU2NjREMjgxNDA2RkYzMUJGQzkw
-NzE3NEI3NkZDNTEKCjExNjQ2MDJFQUVDMDlBRDE5QTBERDI0RjAwM0MxN0ZFMzc3Qjc1Q0RB
-ODk4QTM4QTQyOTFFRTUwQzVEOUM2OUY0QUNEQzIzOTQ3Nzg0OQoKQzYwRjAwOTk4MjJFREQ2
-RTNCQjU2N0FDQzE3MUY3QUM4N0M3NzVFNTZCMDc5MTQ3QkZDQTgwMjA3NURERDgzOUI4NjlD
-NEE3MUY2M0I2CgpCMkM2NUU0QjlFQjFDQjhCREY1NUJENkVBQUUxRjI5MEI1MkQ3MTJDMTRG
-MzY1RDM4MDVFMjlBM0I1NjQzQkI5MEVBN0UxQ0Y4RDlCNDIKCkZEMDlGRkJBMDZDRTk5NDE4
-ODVDQTZGOTFGMEQxQ0ZFOTFBOTRBOUJDNjE2NDYzNEZEN0NBMkFCODg5NTJGQUEwRDI0OUZD
-RjQ3RUQ4MQoKQjlCNTIwRUQ5QTU5Q0VCQTg5OTM5MzJENjdDNEY5QURCMjc4NzFFNzExQjdG
-MEYzQTQ4NDU1MTBDNDIzODQ1RjM5NkFDMzkzOERFODNCCgowMzA0MDU0MTkyQTc4OEUzNDNE
-NTEzODFFNjIyRTVENDZGRUFENjdEODUzQkYxQzhDMjY5RDkwRDIxQjYyNjc0MDlBMjBFMjRF
-Q0VBNUIKCjFFMDgzOEE0MzQ1ODU4MTRDN0U1MTI4QkU2RDBDMjQ4Q0FBMjAxNDE2NUE4Qjk3
-QUFBNkJBOEEzQkQ4NjgzNjFFOEFGMEMxMjBFQURCQgoKQzIyOUVFQTc4MjI3MTg4QUIyMkQ4
-RTg1RjYzODM3M0U3NENCRUE3MTk3QkFBOTg0N0Q4RUJGMTYxNDU3MjZBQTcwNkMwQkE4MUVE
-QTdDCgpGRjdFODhCMzlGMTk2MDkxNjU2NDAyNDZBNEE5QjdGMjYxQTVDOTNBNUFENjREOTMz
-QzRBOEVGOUQwMjZGMjI5N0YwRUZBRDU5NUQwRkMKCjg3QzEzOTNFQkI5NTgxRDkxODE0QzQ3
-QTBBM0IwNkU1Q0M0NTBDQzIyRUUxQjIwMTc1MjI1ODQ1M0Q0RjE0NTU2N0Y3RDgzQ0Q5OTky
-MAoKQjVDNUMxOUIwQzhCQ0RBNjk0ODI5OEI2NzcxQTUwQ0FGRUM2NzNGNDRBNjA4MEY4OTg4
-MEVGMEY3NjZERkU5RkUxRDlDODUwQjBDQjdBCgo2Q0NDQTI4MDY5OEU4MzI2NDlDRjYwNENC
-NTQ5Q0FFQjMxQ0Q4MzU2RUQxMDZGMzY1MzIxQ0U2ODA5RTJCRjI2QzE4NjQ5N0NERjJEMTgK
-CjY5ODc2MkU0NzQ5QTkwRjZDMUQ5NUI4RUE3RUM5NjMxOTExM0M4NzExNjExODEwMEZDRUEw
-RDU1MEYyODMyQzU3QThCRjVFMUUxQzg0NwoKRjBDOTBFQjExNEM3Q0Q2QzNBQzJDMkM1RDdB
-N0I1NjU5ODczOUNEMENFRENGOEQwNjlFREM0MzdDN0NFQUU1QzBDREZENDZCQjU3RjIzCgpC
-RDBENjFCMUFDMEI5MjA1RkYzNDE5NDYyOEQ1RkJFQTZDRjU2RERFNDU5NDNFQTE4ODgyNTEz
-ODM0MTcxMzc5Njg3NEUxMDg5Njc1N0QKCjkzRUQ5OEU3QjYwQUQ4OTBEQjJBQjY4MjMzMEFF
-OEUxNTU3MjQ5MDAwMUM5MUVCMkE4RDdCNTZCMzNCQzdFMDU5OUQ0REQzQTU2OTJEQwoKRDJF
-MDVGQzVERUZFQjkxMDI1MDUzOTJBMDA4QUNFRTc5Q0U3QjJCRTJBMkIwQUIxRTc4M0YzNTMx
-ODNCRTBGQzlEMTlDMDA0NzRFMENCCgo4ODE3MzUyQUQ3NTVDNjMxNDVEN0M5NjVDMEU3NDJG
-MTkwOTY1M0ZBRjMwQzQxODc1QzZCN0VEMzQyMTQxREI0RTc0NTEyRUZDQzVCNjQKCkE5MTQ2
-OEM4OUE4RTY5MkYwRUJGQkI0QkFBNjI2NEUzMTcwMjgxN0M5QUQ4RUI4QkY3NTEwNEU0RDRB
-QkRBRDFGRDVBODExNjZGQ0IxNwoKQTU0RTcxNzY3MzQzRjM2QzQ3RDQ3RkRFMDdGQTNCN0Y5
-NDNDMjA3NDYyMkJGQUZCRTc1NjAzQTBBMTE3QzFCRDY3OTExMzkwMDk5MkRFCgo2M0MwRkZB
-RDA2M0I2NjlCQUJGRjA0MEYzNzJCMDNBMzAzMEQxRDFBRTA1MTg4QjczOTMzMTI3RThFRTcz
-NjI1RkM3NURGMTEzOEYwNTUKCkM4MTVGQ0E0QUVEMDg3M0NCNkJDMTM0MTQ3MzFGRUZEN0VG
-RTUyRTNFRjgyNEM3NUUwQTA1NjFERDBEN0JGREM1ODA4RjFCNzhCN0Q5RAoKQjU2MkIzRjA2
-OTdBMTEzNzlEMDg3RDQ5Q0JBRUJBQkZGQjYwNDAyRTM1REM2RkQ0RDIwRDNDMkZDODg2NTEy
-OTFDMzc5RTRFOEYxQkMwCgo5MjRCQTQzNUVERTc0MDEzNzU4M0NFNjI0MUM4QzJGRTREQ0FB
-MTcxMDNDOEM4RjQwQTM3RDI3NDI4RTgxQjM3MDc4OEZBMzBDODE0QkQKCjE1MDFEMDc2NTRD
-NDcwRkQ1RTk0Q0YwQzBDNTJCNUZENkU1MTBFQUIwOEQ4ODY5QjEwODg0OUI5MDAzRTdDRkU4
-QTI1NkRGNzI2OEVCMQoKREJGNEFERTlGQUZBMDk2M0IxQTZBOUI4QUQ0MDAxMUU3MjFCOTky
-QTlGQzlDOTk4RDI2NDAwQUJBOEM1QjlENTIxQzI4NjQyNzI4MDYzCgpEOUQwNjY4QjJCNjM5
-RTYyNUQ0QjRGMkZBMzc4NkU1N0U3OTM4Rjk5NUM4OTNFN0QzMzI2MjE3MTZDNjk2ODAwNEY3
-QzMwMjg4OUM0QkUKCjQ2MDQ2OTgzMjI1QUUyRDFCQzI3NjY4Mzc0NDgwMERGOTY4M0U5NjBB
-ODY4OTMzODc4OUVEMkQyRkVBMUQ2Mzk4MDRFREQ2ODYyOTVEOQoKMDEyODEzMDk0MEFGMjUx
-RDZCNzgwM0YwQUQ5NDFGM0YzRDk5OUM1NDU5QUFDNTc2NUM3NDNCRUI4Q0IwMjQ2MUI1NEVF
-MDI4MUE2MDA2CgozQUE3NjIxODdEM0IwM0VERDNCMEIxRjRFQzQxNkRBMjBEREQwRDg5Q0Yz
-MDJGNjM3N0NBNzNBMzZGRDQ0RTg2QzREQzZEQUUyRjVBNjQKCkFGQUM2MjUzNkNEQkEyQzg2
-RDZBQzFDNkFDNjc5RTUwQjU1NzA0NUIyRUI4MDJDNEM3QUVCRUQ0MDYyM0IxN0E5M0VEMjRC
-NjVBRkEwMQoKMEMzRkQyOTdCNTJCMjY0NzM1NUE0MTFBQ0VEMjU1Q0Q0RUUyRUQzOTdCM0RC
-QkE0RkMyNzQ1OTYwNDkxQUU3NkY4MjZFQjlDMzQ0MkExCgo2NjFENjU2QzI3QzQ4NkIzNTY4
-QTYzRjBENkRCNTcxQjE3MzgwNjUyMzMzQzJEMjYyQTY5RkUxQUMwMTZENkQ2N0M4NTRBMUFF
-MEQ3MkQKCkVDQTJBQTM4RTZBM0EzRUY1MkI0RUZBNTZCMTkxM0MwMTU0QkMxNzIyMDE2QkNC
-M0JFNUI0RUI1MTYwREM5Q0JDMDY4QkEzRUVGMUY2OAoKN0I2NjNEMjU3ODlFMDNENDY1QTg4
-QjkzQTQ3NDA0QUIyQ0FCQjI0QUVBNDMzN0E3OURFRDY5Q0VDQTNFNTYxNkYzQTFCQzZFOTIz
-QjIxCgoyRjU4REZBNDE3MzA1NDNEMEU0ODRENDM2MjFFNjk3REQwOTFEM0JFMTQzQTg1ODk1
-ODI0QzEzRkU1QjJGQzJBRUM5Q0U4QjQ4OTkxOTcKCjgwMTlCNkFBNzc3QUI1RUIyNEZBMzUy
-Q0EzMTdDN0M3RjFFOTU0OTUwMURDRTRDMDE2QUIyMkNGM0ZFNUYxQjkxMUM1RkZDQkJDNzk2
-OQoKMkQ1NEFCMEIwQzkyQTVEQzczQTVCRUIyOEZGOEQyOTYzQ0Y2NkFGRDk4MUVGRkM3QTEy
-NDY2NTNFMDdBNUEwNzE0NDJGMEY1RjcxOUI4CgpENjAwMjJEODI2NDM1MjdDNDI0RDc0RjEz
-MDU0NEZDMzYzRjlENEY3NzFCODQ2MzM3OTAyQUFFOTAxQzg4MTEzMDU1OUNGRUM1NjMwRjMK
-Cjc2N0ExRTEyMDBBNERFMDgyNDI3QTZEMERGRDRDQUE1OURBNTEwQzczRjdFRDE2NUE3RkNB
-QUFFMUI1NDFGMTc3OEE2QjhGRTIyM0YyOAoKNTk3NzQzOTg2RkY4MEMyMTQyQkI5RTM0Nzg5
-MkFGN0FFRkVERDI5QURDRUFDMTQ5OEIzMUY1RkNFRTk0QkI5RTQ4NzUwRUNBRjdERDUyCgpB
-MzlFNzkzRDk5QzAzRDg3NUI5MzMwRkIxQkUwODVCOTY4QzNCNEVERkEwRjA1MENGODQ0MDVE
-M0E0MkVDODczMkFGMERBQzlDODY2NjEKCjMzN0I3MDkyOUNCNDg1MDI4RUVFODFDMEI0NjU4
-NDJFQjAxREYxNUMxRUMwQkJBNTgwNUZGM0U5MDA1NzZFNzQ5MTg3QzBEOTRGQUVDNwoKRTNG
-OTNGMUYzMEQxMTI0MkU3RjY1RkUwRUVGOTE2NzY0MTlCMkU0MzIyM0MwMDYxRTQ2QzQxRkNG
-NUZDODJDMDExRDI0OTBEN0E4NDBGCgpGMEE4REQ2Q0QwQUIxQ0E4MUMyNzNFMTYwNEE5RjU0
-QUM2RUE2QkUwNEU2RDE0RkVCMTRERUIxNERDN0NERjU4NzhGMzUyMjRDNUVBN0QKCkVDNzZD
-OEM1Q0RGODE2MTY0QkI0N0Y5QzYwMjBEMzcxRjMwNDE5MTk4QUY0NUJBRDU3OTJEMTQ4Rjkx
-NUJBRjBERDA4NDExNjlCNzdFNAoKNUFCNTBDREY1MEI5OEI0QzU0Q0QwQkY5MTI2OUQ5RkE2
-N0Y3NEVGNzFCQ0M0NjJBQjlFQzcxOTM5RDM2MUVDMjBBQjUyQkQ5MDZCREE1CgpGRUQwMEQ0
-MjBFMzJDRjMwQUZCOTUzQzREQUFBODA3RDVBNUQzRjI0QTM1M0U5QjBFRENBQ0VCRkM2OUEy
-OUU2NUE1Q0REMUI2MUZCNjYKCjUwMDNGQ0JGMzcyRkFBQTA2MDE5Rjk5NDVGQkYzMkQ2MkM0
-NjFGNEY0RTg5QTQwMEY5RTBCM0E0NkJEQ0E5OUVFQTFBRUFDOTJCM0VDRAoKQzdCMTQ2MTYz
-NDVEOUEzRkQxODM3RkEyNEY5MTY4ODEwMDRDQzI3MzUxQTEzMTQwMEQ3NjM0RUNBRTdEQkZF
-RTQ1NTNDODZBOUIxMzYyCgpFM0JFRjQ2M0QzQjI5MjNCNDVGNUQ4MjQxRjQzNTMzRUMwRTgx
-MTY4RUE3NkRDMjhEQzIwRjZBNzE1MDhFRjFDMEVCNkI5NDZDMjIwREUKCkZBMjY1RjNFOEYz
-NUVCQTM3NEQwODY1NTM5QjM4NTdDOUEyMUIxRDQzQkVENEVGRjc1NUIxRTJDMkVCREVGMkEz
-NjUyRjE5NzI5REJFMAoKNTlEOTRGQjU0NDhCRTFGOEVGMjA1RTA3MDE5OUY3QzFENTUzOTQ5
-NjhBMUZGNzQ1QUU5MjVFRkI3MjM3RkY3OUZCQUE3NzczMUM2QzQ3CgpGNjg2NjgxNTAyMEFB
-NDFGN0YzMDUxQzdFRDAyODUxODYyODUyMkFFODBGQUQ5NzJCMEE5ODhGNTc5M0JFOEQ0MjE0
-NDRBMkQyQzAwNjEKCjhDNjA2MUE0Q0U4MUE4MDdFRDgxOTg3MjQ4RDYzN0I1MjVDNEUyQTNE
-MjRFOEFCNkVCMTFGRDM2RTlCQ0ZFNTQzMkU0NkI4OUIyMTkyQgoKQUU2ODVEN0VFRjQ5NEM4
-MkE0NUVBQkExMzYzRDJGNEI3OTczQUY1QjIwNTBCM0Y1NDcxQjIwMjc1MTFGODE2RjFBMzc3
-NTg2MTY3M0Y0CgpCMjkyRTM0MjUyMzRBNDFBM0QyNzBBMEQwQzAxMzlDMTA1NzMxQTZGNUY4
-NDU2ODVCNzc4NzZCNDZGNUFCQjRERDY0QjY2OTMyMzk2N0UKCkQxMUU0MEUzQTE4MzdCMDYw
-QTY2ODVGRENFNThEMkREMzFEMEM5QTlBQzY4MjAzRTc4QTc4N0ZDNjUwOEI0NjA0REY2MDlE
-MTREN0FGMwoKMEUwRDJDQzA3QTQ5MDUzMzlGN0FFNDUyMkQ2MDYxRkE2QTdFNENCN0E1QThC
-MkI1QzQ5RDdBNzJEQTQ2ODkyQUIwQzgyQUY3RDNBRTFFCgo2RDg4MkJEQThDMjY2OTg0MjMw
-Q0NDQjk1QUQyRjVBMEUzMzY4NUJCOTNERkE2MEQ4RkY3MDNDNzY4ODdDMzJEOTNFNTNERTY0
-OEM3MkYKCjI1MTI4NTY1REY0RjQxMEQxQjJFOEM5RDU2OUI3MDZDQjk5NTQyQTI3QkE2ODVE
-RjA5Qzc1MjI4NjAyMUMxOEY5QkQyQjlDNTgyRTgyNwoKNzQ1RDY5MDFERDk5QzQzMzZDMDI2
-OEMwRThBODVCRTlDNTIzREExRTREMEJBNDU3MUVBREU4MEM4OEExNEJGNEU3NDUwQTFCQ0VB
-MUJCCgpGRjk1QkRERjJBRjFCRUZFQkJFRTc0MjlBNEZGQTVGNzJGRDQwQTdBQzFCNzBGOEVE
-QjgzMjVBQThBNjExRTM3QjBCQ0RDODQ2QzZDMTMKCkNBQTlBODMwRTFGMDkwMDU5QzZFMzQw
-NTM3OERGOTBDMUFGNDgyODg0ODEyNjhEQjJBRjg2MkFGM0FGN0E5QzcxRUI2MERCRTgxOTgz
-OQoKNjA4M0NEMkY1NDVDN0Q3OEEzN0I5MENDM0I5RjM1QjMwRjhENDI0RUFDMzc0REVCOEVD
-ODkzNzE1NzkxRUU4QjBDRjhGODk5QTQ1ODJECgpDOUYyRjczODIzMkI5ODNBRDhBNzc4NTVE
-MUU2MTA2NUM0NDcxRUYwQ0RGNzJDMEM4QUM2QUFBRUVFMUE3NjdFOEY3RjAwMzVEQzc3QUIK
-Cjk1QkMxRTJBRDM5OTE0REYzRTEzNzI1RDhDM0I1REU3NDdCMEVERjFGRjNGODBGRDE2MEQ5
-QTIwNTVCNEYyRkYyMEY0NjI2QUI0MTk3OQoKNUUxRkIxRjM4MkEwNzYzOTM0MkE0NDM5QTZF
-MkYxOEYzODMyQkFEREU2M0RBMUQ3OEZCNjM1NTcyNjFDNkM4NkM2RTk5RkM5RDI1MkQ4Cgo5
-NUE5QjY1Mzc4MkE0Q0FFNjFBNkRFNTEyQ0U5N0VDNDY0NDJCRTI3NzQ2QTkwNDc0ODAwNzI1
-RTk1MzA3ODI1NzM5NTkyRDU4NTA1NEMKCjA3NjgwNjgwRjFCNjBEMzdENjRBNUIwQTY5Qzg0
-QkZCMDVDQUVGRTk0MUFGRjk0Q0QzNTdBNTNDOUMzRTI2RkVEMjIwNUIxMUY4MkY3OQoKNjRE
-RkQ4RkYxNkQ1QTNDRTEyOTA1OTQ1QkY0MUM4QTU2QTU5OTg3NzYxNUIyM0U0MzZEQUVCQzcx
-QjQ1QkYwMTYzQTRFNkQxMzIzOEMwCgo0NzlDM0RCOUVDOTlGRjBCNzRDRDIyMjQ4NjUxRjJF
-MUJDNzg2MEVEMDMzNkU2QzA3OEQwRUQ0RkM3MkY0OTREM0YxMzY1MjhCMjVDRjEKCjUzRDQx
-REVBQTA3NjFFQzFFOEYzMUY5MERGMUQ3M0VCM0E1QkE5QjUyRDgyOUVEQUU5ODAwMEI2MTE2
-MDcyQUVGRUFFNEQ4NjFFODkyOAoKRkY5REUzNzZDODU2RUJBQjFBMTg5RjQyNDgzMThBNDRD
-QzNFMDczQjg1NUExMzkxNjA3MzE2MkQ3QTI2QzA4QkI1NUJCMzlBMTIwMzNGCgo5M0I1NURC
-OTdDRUFBQUI5NzVBNzM3MkMxNUQzMkQ2NjU3OEE2NTM5RUQ2MTA5N0Q0RTAxOUNBRTMzMTE5
-ODcwRTk2QzNFNDA5RTQ0QkEKCkU1RjlDOTJGMDQ0QkNCQkQxQjEwNDFDNUM2OEM0NUI3NjZC
-QzFGRTUxQjU3RDc0QzExNjgyRTZGQjYyNDVEQjVCMjQ4NDBGRjFBRDA4NAoKNEI5ODM0MkIx
-N0UxOEI0MkI5RkY2MTQzMEIzQTcwM0Q5N0VGOEZDNzVCNUY4NDYyRjQwNENBQ0NEQjJFNkQ5
-NDdDMUZDRTdEQkIwMzg4CgpEQ0VGRjUxMEIwNjIxNkMyMThCRTM4Rjk0NjA3MjZGQURDMTlE
-MTMzRTA0NkM5MDU3MTk4QzFDMjVERjg1RDQ1RUFFODRGM0E2NkQzMzkKCkQ5QTFDMENEN0ZC
-NkE4QzcwNkE5QkEwNjJFNjQxNUJCMTFCQ0ExOTIzNzMyQjJBOUJBOTg0RkVBNTM0OTA1NDdB
-MDMwNjM2NzNCQjM4NAoKRDc4Q0Y0ODc4MkFENDUxMTFFRTkxQkFFQzIxMjhERjFBMjczRjkx
-NDNBM0QyOEFBM0UxRjIyREI3MjIwMDkyMDQ3RTIyMjY4QUVBMjE5CgpEMDAzNzY3N0E1N0FB
-OTg0MzJFMzc0OUZENTc3REEyNjI4NUFEMEU2N0UyMzFGNUUyMDgzODVGNDc1N0QyMTdDNzA3
-MDY5MkU2QUVCMDQKCkVBRDg1RkM5ODFBRDU4NkEzNTI5Mzg1NEMxNDdBNjIyMzBBODc5MDgy
-MjU4OUM2MkMxQkMxODJGOUUwN0I3RTBDNUIxRDAyRTlBNzNDRQoKMjIyQUVCREIwQUFEQUFD
-QTk2ODVCMTJEOTE0MjIwNjM3ODU1RjkyOEIxQzk1MjUxMDgwREMxN0JGRTY3NDkzOEQzM0U2
-QzkyQzA0N0YxCgpCREMyMkVERTUwMkFFRUI3ODBENkZFNzgzMDRFMEFFQjQ3RjM5QTdBQTAx
-QzhCMzA3NEZBMEE0MjNCNjAzQkZCMjlEOTlGMUMxMjVFNDEKCjQyRDMxMEZGRkExNkNCRjhF
-QzdDMkIwOUU3QjA4OEZDMjIyNzA2OTkzQkI0RUY0MUM5MzI5Q0YwQUMxRUY2MERCNUJDRDhB
-N0ZFQUMxRQoKOURDMTExNTQwQTdFMTYzM0YzNkIwRDk0Q0IwQjE1QThFMzA3Q0ExOUIzQ0Q4
-NzdCQUM3QUI5MDM4Q0VCMjkzQ0ZBMEVEQzA1M0FBNENDCgo1MDQ5Q0YyMzlBMDg0MUM2Mzkx
-QTFFRDUzN0I0OTY1NUVBNTM5NTQ3NzY0NkJBQUQwNDJBOThCNjFERDI3MDk3MzY2NTQ5N0ZE
-NUNDNDIKCjRCMzBDMzkxMUM1NTg5MjMxNTU5REJEMUZCNzEzRTFBMzg0REM2MkExNjgxNjU1
-OEExNUNGQ0E4NENGNEJBQTI5ODM1MTA3QzExM0I2MAoKMDRCRDg4RTFENEI2RjBFRjAzNTA4
-M0FFNTgwNDA3OTFGODI0OUI3NjRDMzQxMDY0RTk1RDc4OEI5MDY5NUUzRkE5RTU0N0U0NTZG
-NUQ0Cgo3OTk1MDQ2QkM4MUQ1NDczRTY2QzM3NEZDMzYwQjQ0MTA2NzBFNTI3QkM5NTMzMkQ2
-RkU3REI4QjhEQzQ3QUM0NzJGMzdFODMyNDBBRkIKCjM4MDBGQ0Y1QUEzMjc5RTY3MkIzREE2
-M0ZEMjIzODRDQ0Q4NTJDMjUxNjI3MTg5MkU5MjNCOTkzMkI2REQ0MzJCRTQ5QzkwREMwQjU1
-NAoKMjNFREVGRDYwNEEwODk2MzE1MTY3OUE5NEUzRkIzRTY0MzQwMzk5RjA3NUEyMURFRjc4
-NDNDQkRDOUQyRDM0N0Q1OUNCMDcyRjEyOTYyCgo3QkU3ODI4QTZFOURGNDY4NzcyMzVEMDM1
-RENCMUIzOEJCQzQ0QkEzRTdFOEZDQTM5QjVCMzRDQzY0OTE1MkQyMzA5NUY5M0I3NEJCN0EK
-CkVDRDNCQkQ3RTQwODc4NTRDQjQ3MTMyNjc5RkI1NzNBRkUyQTA5MUZFQzI5NEIyQjlFNzMw
-NjI1RjY4MjkxRUU3REMyOEMzRDU1NDAzNwoKRjYyQjMwQjA1MTIxQTVBNTVEMzcwODFCQTRF
-NkRGM0NENkU3MzQ3QzgwNzJFNTE4MjUwREM3MzA1NTU1NDg3QkEyMjlGN0EzNUNBRTdBCgo3
-RTUzNDE3QUI5M0U5NjMwRjZDRUQwNEYzQThDMEIzQjU0MTdEQjlFMUQ0OEM2M0VGMzRBRjVF
-RkQ0RjEzQUI3Njk3RjdEQkI4OEI0MzcKCkEyNjUzMjA3MEU4OUU0MThBRUI1ODc1OUNBMkVB
-MDQwM0MzRDRFRTIyNjBGMURCQjNDRTlGMUYwNkVFNEI5MTQ3RjlERTk4ODMyNDc5MQoKRTFD
-MTExODc3QTY4MjVERDA4RTg5MDJBOTU1NUQyRkM3QjhCNzQ2QzRCMjE0QUI0NzIxRjZBODI1
-MUNBNEQ2MkY4RTMzQ0I0QTdFQjc4CgpDNkM1NUYyMTUzMTQ2MTJBRDg5RDVEQkQ4RDVGNjE0
-QzhERjU4QUE3OThDN0M5MzI0RkQ0MzVGMDU5QTFFOTRFOTBCMkJENUVERkJEQjEKCkZEQzkw
-NkNFQTlGNUNDMTIwNEEwRUU5RkIyNDRBQzQ4QjNGODU1OTNDNDVGQkFDMkRCNDI3M0FDODFD
-NjhFQkNEN0I5NUUxM0IzRDhEMAoKODczOTlDNUVCQUQ4Njk2MzQ1M0U1NEEyREQzQkNEOTFB
-REVBOUYwQjEzNDU3QjQ1NkVEOTQzMkM5RUMxRjRBMzRBQjBGQTgyMzVDMjZGCgoyMzgzOEQ1
-MzI3NUNBQzE0OTFCRDhBNDUwMjY0NDZGMzlFQUZGMENBM0NERjc4N0QzRjc1RURGMEQ5MDI2
-MDgwMTYzOUIzMDI0QjA0RkIKCjREMERBMDNENEZENTZBMkM0NUFBOTQwNjJEOTIzNTQyMTJC
-REI3RTYyREI1N0JBMEYwOEVCMzcyN0Q1NDUyRTVCNzBCNkYwRkFFQjBDNQoKQjhDRDk5MDEx
-RDk5MjUxNEQ1QzFEMTA4RTdFNkUzREVCQTk3NTNEOTZEREUwMkJEODdGQ0M4MzBERjlBRjg5
-RDk3RDZGREQ5QTZDNzdDCgo0ODlFRTA2QTFCNDUzRjhBN0IzNzc2RjExRENCNzFDOTMwNDg5
-OUEyMkZGMzkzRjhEQTU1NDYwQ0REMkVBMUM4QzcwRjQ5MzFGQTEwOUQKCjUxMzlFREQwRkM5
-RTMyM0QwRjhFMzIzNDQ5RDEyNDcwMzE2QTFENTAyMkREODU1RUU5MzU3QTM1QzA2NzNBMDkz
-MDIzREY5ODhGNTJCRAoKNjQzODU3NEI1RkYwRURGQUFGRTEyREYzNzQ3MzAwNDU2RUNERTI4
-MTRCNUNCMzlFQkJBQzgxOThCM0ZEMjFEMUZFNDdEN0U5MzI2QTY3Cgo5OUFCNENENTA3MjU4
-NEY3NzRFOTVDNTVFQzk2N0FENkVCQzk0QzQ1RTNFMjU3MUY5ODIzNzkyMzRFNUZCRkNBRjY2
-NkFERjZDNjQ3NjMKCkI5OTQ5NjQ5N0E0NEExRTMwMDkyODczNkI3NzAxMTAzOUEzMUNFNkJB
-NTY5QjE5QUI0NDdBNkYxQzk1RDVDQjQyM0Q2QTZBOUZDRUI3NwoKNEMxODRGNDVFRTYxMDVG
-NzAyQjI1RTY1ODYyOTZFRTE3N0E5N0Y1QzUwODM5MzIwNkExNUM0MEJGMUVFOTBDMURBNjU0
-RUExMkJCNEU5CgpDMEYxRDgwNzRFQkYyMkJDNEZGRTk0REIwMEJCQzAxREE2OTJEQzZFNzJG
-Mzk3NkM2MTg0QjdGMTcwNjZCNkMwQjkxMzU3NzcwNUVGRUYKCkYyOEM0MzBBMEQyMEU5Q0ZC
-RjNGMUJBMkYzNzhGREQwN0NGN0M0REFDMDIxRkYwQTY1RTgyQTc4NEY1QjREQjA2MTQ0MDAz
-MjAwN0UzQwoKQ0JDNDkxOUI3NTYyMzVEQjc5ODhBMTdGNzZDOUYxNjczOUYzMjAyMTAyRDg0
-NDg0Q0JCRkU1QkMyOTI3QjAyMENDMTIzMTIxRUUyNDdBCgpBMDNBQzA4NTlCNTQyMzFDMzQ1
-MTE2MzE0QTQ1M0UzNUUxQzBFOUZEMzA0MzQ5MTU2MTZGMUI2Q0E0MjA3M0Q1M0VDNDQ2RjRE
-RTY1QTAKCjQwNjAzNjdEMkFFNjFGNEI3MTk0NUQzRjAwNDM4RTk4QkU4NDBBQjQyNTRBNTVG
-RjczMEJEODk3RjU5MkM1MzA4QTQxMzUxRUUzOTY1MAoKRDcxRDI0QjhGMjUwMDM5MkI2OENG
-ODhDMjVEQzM1N0NCRjBBNTE1MTI0MzM2QkJERkU0MkE5REEyQUU1QURDRjVGNzRCNEI2Mjg1
-QzBDCgo2QkYzODI4M0VDMENCNDg5ODFDMTQyRTcwNzI3MTM1MDZCNkEzOEU5OTFCNTA3REY4
-RjA5MjdDQjg2Q0M4NkM3MTAyNDQ2RURCQjlEQTQKCjAxOUNBNDc1NEZCNjczMjQwMTk4MzdF
-OERCMDlDNEZDMzNDRkU0MjNEQTFGMkZGMzJDQzM0MzQwOUMyREQ3MUM4MTRCOTMwRjU5RkUy
-NQoKRTgxQUE4RURDOTdCQ0IwNUMwM0E1MUM0ODQzODAyMDgxNkVBMzFFNkNFRTU3RTM5NEY2
-MDE5OTQ1QURFM0Y5QkJFNTIzOEY1QUVFMjk3Cgo4Mjg5NkVBRkRCNDBDQjQyODc2QkNBQjZG
-MzdDQkY4QzA1QjlBODRBRTlENzIxNTc3NDY4MkMwRjMyRTIzRkZFMEQ2MUEwNENCOUU3NEQK
-CjFEMDRCM0FGRUFBRUY3Qjk0MjUxNTc2QjgwRUI4RjE1NjE5QjQwOUFBRDQ1NDYxM0ZENTBB
-QTdENEYzQURGRkFCNzMzMjU5NUVGQUNGQgoKOTY1NTAzOUE4RDEzNTE5REY5RThCMjU5RTM0
-MkY0NTUwMUZEOTQxNEQ5QTFDRThBMURCMjE3MEMwRTYzNTQ5N0E1NEJERDI5NkU0NDE0Cgo0
-NkRGQzE2MzExNjY5QjgxRUFBOTlFRjlFOUY5REM2MTczQURFQ0E0RTlGRDFENEQ5MjRBNkZE
-RjFBNjE5RDgzRDVBRDc0NUJFMjJDRTAKCjc0QUE4MEE5M0ZCODA0MjQxNTczQzRBQTk5QjQz
-NUMwQzU1M0I2QTM0QzFDQTI0MjBENEFENUFFQ0YxMDFEMEMyMjAxMTdGNTJGRUYxRQoKQTZB
-N0MyRTZDNUFDQjEyRjRDRkUwNDM0RDM4QTdCODBENDU3Mjk5Q0FBN0JFQjIyNDAxRjZGNDFC
-RkNGRjFCNzMwNzREQjIwNEFBNEY3Cgo0QkYyMURGMDJGQkNGQ0VEMzI1NDUwQTMxNkYzRDBF
-MTlBOUU1NzhFRkY2RTM2QUU5QjlGQTgzQUMyNzYxRDlCMDc5OTc2MDc3NDU1NUEKCkNBM0RD
-ODdGOEZFRjA0RkY0MTcyOUFDMzZFNzg3MzBBQTRGREM5QjIwMEREMTlFNTVBMkVFQjI5MTRC
-QzRBN0FCNjY4NTc2RTg0MkZFMgoKNEJDMzE3MUFDNkZERTNCMTJDQTBBNUNFNDczQ0E5QjE2
-QUFFRUYxRTAzOEYzQ0QwQ0Q0NkZERUNFOTJEMzE5ODk1MjlBRkY2NDBFQjc0Cgo0NTM0MjYy
-QjFDNEU3NEJFOEUyM0QzOTRBNDkyQkRFRUZDN0NGNTQ5QzI5Mjk4Q0NCOTNDOTlGNUU3RUYx
-MkYwRjMxRjk0QkRENTU3MUYKCkExMzkzRDY3NUYwRjdGRDU3N0YxM0I4QTY1MDYyN0I4M0Qx
-Mzc3RTFENUJDQTUwMkE5NzdDQjU2QjMyMzhEOTA3MzM2RDM5MjAwNUJGRgoKOTJGQzk4RDk1
-Mzc3MkRDQjI1QTMzNTNEMDdCN0EyMUUyMTc0NEE5OTY3MjVFQkFBMUM0RTkzNTlEREIxNkVB
-MzBGOEI3QjA1NEY0MzM4CgpEODBCQzIzMTEwMTgwMENGNTEzMzI5REYwNzNCRUUzQTlFOTlB
-Q0M2NUM0NjYxNjYwQUFBNkIyNDY2RTA2QkU5QzkxMjNBNjYzRjlCRDAKCjQ3MDVBODc0Mzky
-RTQ0M0M5ODY3NzhGREU0REJCMkFCMEFBODU1NDcxRTZEMDFCQkU3QjIxRjAwNzI1NDU0RkUy
-MTc0NzA4NEVEREE5NQoKQTIzQUZBQjkxMjg5OUMxMTU1Rjk0Q0RFRDQ4QzAwM0MzRTA2NzU1
-RERERTQ1QkM4Njg4NjVENUI1RTZCMzNGNDQxODQ4RUY5MTUxNDZBCgo4NDNBMUIwRjgzQkU4
-QTNCQ0RFQzhGN0MzM0QwQTZDODBDMTdBMzlDRkQ5RTQ2NkE0MTMwODYyQzhDOUM2MjEzNTkz
-RUQ1MTNCODJFMTIKCjc3MzlCMThBMjZBMzE4ODRDOTlFNDNDQjY5MDgyRTcxMDY3OUZFOUVG
-QTZFNTdFRDA2Qjc5QkUyQUQ2ODRFQTI5Mjc4NDNCMjg5QTFENQoKRTU0QkM5QjVDMDNFQTUx
-RjUxNTBCMUIxRTg3OEQ0NjdFNjA2MkNFNzg1MDUzRjFCQzAxOTIyQkZBMEVGMTUyNzc1OEYy
-REM1Qzk3RTg0CgpENjQ0MDg0MjRBNThCMDY5RUMxNzMzOTA4NDRFMERDREUyQTE0RTg3NEJC
-OTlENEEyMzdCREVFRjI4NjcxNThDMURDMzYwRUU4RDFDQ0EKCjM1NzhGOTQzNEE4NTZDMDY3
-MjJDRjlGRUEzMEFBNkU5MjNFQjdGQTFFNDY2OTczMjQ3M0YwNEE0RjIyMjgyNzgyQjE4QjUz
-MEM1MDYxNgoKODA3QkJCMTI1MEU2NENFMjlCQzhFQUQ4MDIzQTQ3REZENzMxMjU5NTJBREYy
-MThFMDUwM0U2QjI2RjA5NjI5NzU3NzczNTExQjk3NjYxCgoyOEJEQjU3RDI2NDRDMUFBOTQx
-MUMyQkQwOUExQzE4NDY0OEVENDM1RTYxRjBBOEU2QTNDRkUyQjE5Rjc3NTY2MDRBMzJDQkQy
-N0RFOUUKCkIwODNCRUE3QjlFNTA1QUI3MkU4QTAxMUJEM0IzOEQ3MTk0MzA0NEQ1NTJCOEEy
-QzZBOTUyOUM3NEMwMzQ2MUJBMjMwREMxRkExNUJERgoKOEVFNUU4QzAwQUEyNTE5RjI3NjhD
-QjQxQjI5RUU1MjE4NzlFNEY1RDMzMDIyRTRGNDRFOEJBNTREOUU5NTJENzMwQzYwRTI4M0Mw
-NDU2Cgo5QjJBN0UwMjkzRTYyMkRCN0FGMDM3NTlGNEY2Qzg3M0NFMkQzODlDOTkzOTg1MjRF
-OEEyNzdFMDEyNEY0MkE3MDFFQjk3NDgyMzI2MjEKCkFDNTBDRTcwQkFGNkRFQkE0Q0RGQjQ3
-MzMyREUwOTBGMUU2NjE2RDc0NTdBQjAxQ0Q5NjAyOUY4RTY5MDIzMTg4MkY2NTNGMjZGQjJF
-RAoKMDdEQzQzRTk2REVGNzBGRkRERjVGRjA4MDJDODdGNjBGRENENUMyNjNBOEFBQ0VERDc4
-NTQ1NEM2M0Q3RDFFNEYwNTUwMDgxQjMwQzFECgo0NjBEN0U3ODU1NTQ4QUNENEUzMUJGMTA4
-OTNFNzkzQ0E1NkE5RTJCMzZFOTVDMTdFN0IxQURGQjgyNTgyN0ZFMkE2QzAwODg4QkY2OTIK
-CkZCNjA4QTRCNUIyMUFDQjVFNTM5NjY3REZBMjQ3QTdDMTA4MTE4RDczRTQ1NTgxRTUzQTMw
-OTI0MDYxRUM1M0QxRThDOTY1MjdGRDIyOAoKOTEwNDA1NzhFMTBGQTlCMUI4OTcyMzAyMTRC
-NzIyNEFBOTVCQUZEQkE2REI3REE5QTY1QzZEMTlCQjQ5NEQ0QzEwRTUwNDI1RTg4QTA1Cgo4
-REYyOTYzN0JEMzdERTg0ODI4MTZGOEVBNTcxODYzOURENUM4MDY3MUU1MkI5RUU5NjQ3MDIw
-NEYxN0M5MzhCODYxNzE4NDMwQUVDODQKCjA0QTY3RTcxOUVEQzJDRkYxOTk2QjcxRkZFQkZF
-NzQ1QzVBMzAwNzU0NUNCNjg3MTZCMDQ5Mzk2MzNCNkVBREY3NjZCRDgyQUI4QUE0QQoKNTg5
-MTdGNjZCMjA4NThFOEI4MjQ0MzIwMjhFQjVENDRCMjBFQ0Y5QTM5NEE3RDJDRjBDMEFBNjY2
-MkM5MzQ0MkM4RTA4MTg1MkM3NzhDCgpFOEIzRURGNjc0MkNCQjgyNDEyNDc3RkNERTc2NjhB
-NDMxRjI1NUEwOUQ4OTU1OEQ2QTk1REI0QzE2RTRBOEVCNDA0MjFGQkE0ODREREEKCjYzNzFE
-RkZBNjI5NzJGRUU2OTZCQzFDODdDQkM4QTBBNzg1NEY5QzUzQjUyMTQwQzQxRjNFNDFBN0NB
-NTgxODgyMUFGOTZDN0RDNDE5NAoKRUMwQ0JDMDhCMkU3QjM0NTdGRUEzRTUyQzQ2NDY3RUJC
-ODRDNzM5RkI2MUJBRkYxRUEzMzQxRTFDQkI1NjNCOUI4QTMxNDc0QUE4QTBFCgpBRUMwNEM3
-OTJBRThDMUVEQUI5NzE0MjI1OUZGMzI1OTE4RDUwM0E4ODRDREY2NjVEMDQ5NEZEQ0Q2RTg5
-NThGQTAyMzczQUMyOEFGQTIKCjYyRUMwODdFQTRFMTIwRDIyRDI5MTA5MjgzNDAyNUI4RDVE
-NUIxRkUyMjg4NzAxNzE2MEMwMEE0OEJGN0VBQkZCQTQzNkUyMjg2RUY2OAoKM0ZENjQxQjFC
-REVBMDVBMzY0QjYyRTQzNEI5RTI4QTE1RkY5QkE5RUM3RUUzRTI4MEZGQkM3OUZENDVBMjlG
-NDFCNDBGMDlDRkMyOUIyCgo2ODhENjYyRjE1NjI2MTkxM0IzRkEzNTZBMDVFRkM5RDZDQTEy
-MkZCMjA4QjQ5QkIzOEVDNzU0Mzc1NENENjBCQjY5QzQ1MUUxQ0VFOUMKCjE2QTZDODkwMEY2
-QUM0NEVCOEU4OTU2QjlFOUZDNDMzMzlGNkFCMkVGRDY3Q0M5OTQzRDNFOUI5NTdFMkFDNzA3
-RkI5QzAzNUI4OTMwMAoKODFEQjI0QjZBODYyMTg5RUQ3OEM2QjI2NUI1QkE3RTBGNEJFNTIw
-Q0EwQzZEMEFBNEUyRjA2RjJFM0NCMTAwMEI2MjQ5NEU5MjREMDNECgowODFGRThGQTgwNDFF
-NjQ1NUUwRDJCRTE1RkQ1RDk4MzlGOEU5RDFDNDQ5RUZCRjgxMzQwNDU2QTdDMTFEM0FDQzFG
-MTdFQ0Q2MDFBRDkKCjgzRDIyOEExNDQyRkU5MzRFNjFGMkZFQUFFQjIyMkE0REM5NzRBNDlD
-QThBQTY0RkE1OEEwRTlDQzY0RTFEMTlFOENCRDM3RUE5OUU2MQoKQ0MzNzM5OUNFN0E0QjAw
-MkYzNjEyOEQ5MEQ0OEREMEQ5MjlDMTUwQTlCNzkxRTEzODA0OTQ3MjM3MTJENEU5NjI3Njg5
-QjIxQ0FDRkY2Cgo1MzVFNkZGQUQ5Q0JCNDVGRjQyMjUxREJGRTRBQkM5NjAzQUNDNDQxQUFB
-MjNENkQ0Q0M1MTU5MjhBNUIxNkE4RThFQTI2NUEzRDUwRUQKCjE1NzBEMzhGQThDRjFGNTJD
-RUQ0NEFFMzJDNjY5QTZBMzM0MDYxRDRDMTdFRTk1OTRCMThFRUQxQ0Y0OUM5REMyMENFNTlD
-Rjk2NjkzOAoKM0E2MDM1QjgyOEFFREE1NENGOEVFMzVBQjExQURFMENBQTAxNzEwM0VBMUEx
-NkY4Mjg5REM0ODFGRTdBMDI3RTlENTYxNzBGNkFCNjE4Cgo4MUZEOUU2MzE1RTZGNEFEODUz
-MjA5QzA3MjAxNDAyMzdFM0M0NDRCNzE0QTQxNzc5NDk3NUI5NDI0NThDMTk2NUJGOEJFRDQy
-MEZGMkUKCjEyQzBCQjZFOTc3NjI1QUYzRjEwQTE2MjUwRTYwMzNEQzQzOUQ2OTYyQzU5Qzc3
-RTVEOUI5OUZBRTZCREEyMUIwOUI4MkU0QTgzMkJDNQoKMDRCNDA2NTQwMDY5NzI2MkNEOTlB
-OUMzODI1OUJDOTUyMkE2NkMyRTJGNEVEQzg5MjhDQUFGNzdCOUJGMDUwRTM2MURCRTlENERF
-N0UxCgo3N0Y4NEM4MTVGNjY4RjhCQzJFRkJEODZFNEM1QzVGNTVDQTlEQzUxNEVCMDdDRTQx
-NUJGNTZFRTM3MjMzNURFNzNEMTJEQzlFNjdCQkEKCjZFNURGQkJCNzg5N0Q0QUEyMTRFNTFG
-QTMxNEU0OERFQURCQTk1MTMzMENGQzU0ODE4QzAyMDU1Mjk1MjA5MjZBMjA3NERGNjUxQzIw
-MAoKQkFCOTk3OTJCM0ZCNTg5RkE3QTgxRkJCNDE3Rjk0QkIwNDc4RkY1QTBEQ0IzQ0M2NDlD
-MDBERjU0Njg2RDc2QjZBRTYxQUQwQkZGQTk2CgpGNDVFRkJEQjdFQUY4RDFDQTM0OTI0M0I2
-MTI2QjI2QThFRkEzNkJGMzA5MDRGRERGNUQ1RkYxMDJENjdFNTUyMEIzMzk4OUQxOTZENzAK
-CjAzMjk3Mzk1OTcxNzkzRTBDMjBBM0MxMjAyOUVCMENGQzgyOUQzN0Q3NzU0NTJBOUM0NDc5
-QkY2Q0U5QUQ5QzI1NTI1MzBERTk2MjhBQQoKNkVBNDZGQzFFRjE5REEzN0Y3RUI3OUREQTA4
-ODE4NjgzMkM4MTc2ODY0RUM3QkZDNUUxOEU1RTc1QzU3OTk1Qjc3NjE0Q0EyMTNDMEQ5Cgox
-RjYxOEMyQjg5OUU4QkE5MzA2NUM0NzA0NzVFMEU5MTREMzk5MDhDNTI4Q0EwQ0ZCMTc5RjdE
-ODhCMzY5QjBGRTYwNzAyMEIyNjg1RkYKCjMwOEQ3NzlGMkUyMkQ5MjkxQTJCMkJCNTc0NUU3
-MzExODQxRjk1REI4RjkyOTU2NkEzQTdGQzM2NDI1ODkxQUZENURFOTk3QTIzRjhCOQoKOURF
-Q0ZBQTFFQjBBNjUxNTU2NzdCNUVCNTEzM0RCOEYzRERBRDA3NDVEQTlCQTU3MjUxOUM5MTVC
-MzUzOTg1Njc2NzM0QTgyOEM3MEE0Cgo2QTkwM0E0OEY5MkM4NDNDM0M2QkY0MjYyM0M0Mjgx
-REIwQjQyOTQyNDNBODMwRUJDQzRCNEM3MjJCOUQ3OTVGODc1QkREQTMxQUY3REUKCjY4NjQw
-NzMwMTg1MzYxRjJCNzA0RjBDM0FDRTAyMUEwOEExMzM5M0U5NUYwQzE1M0FDMzA1QkQzRDZC
-MUY5Q0QxQkZENEU5MzBBRTdDNgoKNkQ5MkRCQUUyMTg3OEQzMDdDNUIwM0FEOUFDMTEzNTgx
-RTU2MjVBMDVEMTk1QTUwM0Y4NDYwQzAwMDkzQUQ4QUMyMTU1ODk4RDY0RDU2CgowN0VGNDAy
-MjY0MDU4MkM5NzI2NUEyRjBENTc4REM3QzMzQjJBOEEyOERDMTFERjU1QzkwRjJDMzlGRTZC
-RDI5QTVFMEMyQzlDRDgyQTMKCjEzNkY2M0U2MDNFNTM3OTEzNTRFRkE5M0FFM0E2MDkwM0Ez
-QjI4NEQwNTU1NjAyMzUyMTk5MDQ2RjdFNjM4MEFEMzRFNTkzQTQ3M0Q2RAoKREUyQjI4Q0ZB
-RDNBNzUwNDEwODNBRUU0RkIxMkQ5RUI0QjA2OUU0MDVCQ0ZGRjVBOThFM0MyMjIzQ0FDODhG
-NzczQTVDMEVDQkIxNkNGCgoxMkE0ODM2NDE4NjIwMDkwMzdENUM1NEE4MkZERDkwRDQwRDhG
-RDY2M0VCRUM3QzkxQjU5NDdEQjJGQkY0NzE4QTYyN0IxMEMwNzgzMDcKCjY5OTE0MjM3NDcy
-NTEyNUJFMEExMURGODkzRDg5NzVENDNCREY4QUZCMTQ3NkEyREZCMkM4MzgxRTEzQ0I2OUE4
-QjQ5NEE2QThCMDAzMwoKOTI1MzMyM0UzRTI4NUUwNUE5ODM1RkNGNEZFMkFGQ0Q0RDc4MkEw
-M0ZGODMxMUYxNUE1MUU3RjUwMzg1QzRBMUVGQUEyMzk1MEU3OTE5CgpEMTA3RjgxQzlERTlE
-NEExMEY2NEVBRkJFOENBRDg1QzAyODdDQzRENEU4MTVCNTYxNDkzRDc0RkM2MkZFRjcyQjVB
-RTA1ODEyMDM1Q0YKCjREODg0MTk3NEQ5Q0U0MUI3MTFEQTQzOEQwMEVDNjAyQzkxMTI3NEY3
-QzdFMERENUYyMzAzNUM1RjE3MzdFQjE1MUQxMkJDQzczNkRDRQoKNEIyQUNCMjU2OTdENzlE
-RkQ5RjU5NEI0REFGMURCN0Y1NDBFMTFGQTlENEExNUM4NjhDNTk1QkMzNUI0Rjc0NDkwNjI0
-MzY1OTQ4MTQzCgo1MUE3NzFFNDg2NENFQkQ2RTkyMzc4RTcwOTQ2M0M2RkU3QkVFQkUwRjMy
-NTYxM0JEOTMwOTRFRkVDOEJBQUM4OTc3MkZCRkU2NTQwNzUKCjM1MUU2MkI4NDRCODAxMzFF
-NzUxQUM0RjM5NTA1REIyNkM4QzM0NDIyQzY2QTQwMzE2QUZCMTk4NjQ5ODAyMzE5RDFGRTRF
-MUU2NjA0MAoKMUFCMjM0OTcxMjA3QURFRDZCNEE4MDZGMENGRTk3MUQzNTc3QzdFQzgwMTM1
-NUU1Rjg0QUNCM0EzM0NERjI5NkNCMzNDRjQyRTc0QUNDCgowMDMxMTdEOEY3MDBGQkQ4NEYz
-NEVCOUFEQTM4RUUwNzE2RTFBQzhBQ0U5ODgyQzEwQkI0QjM2MzNBNkQ4NzdERDY1NzhDMURC
-MDM1QjYKCkREOUU0RTJCMjM0OTM1MDA4NUUwNDI4QUFBQzE3NzU5NzcxQkM0RUREQTFBMkQ0
-MEZFMEIxNUI2NUE4RUJCNEMyOEE1MjZBNDlDNTZEMAoKQzI0RkQyMzU2NTNDNzhGMkM0MDM3
-OUFFRTc5MzkzN0VENkYwQkY4RjRDQ0E4MjVDMzA1QzBGM0ZERUVCREU4QUJBNjM1MkYxREJG
-MDQ5Cgo1NURGNzY5NUJGQUE1OUUxODk0QzFDNTdDQkUyOUU0OEVDMkY0NERFNzdFM0M0NDlF
-MTNBMjUzNTkxMjY5MjVFNEM2QzQ2NDlGMDQzNkIKCjAxODg0NTFFNDczNTEzREYzNEM0RkIy
-QTlBMzcxNDFFMjc4MTFDNkIzMzk1MkQ5QzNCQjAzMzZFNjIyREUxOTI2NDlDNUJDQjc2MTcw
-MAoKQ0U5NDIzRTlCNTJCMjBCN0UyOUI2Q0E0NzAyMjFENTkzQUMwQzVEODk1MUVFMkE1NkZF
-RDk5QThBM0QwMTg0NzNDMENBMjhFNEE0ODMxCgpENkE4NjFBNzZDNzE2NTMxNEJGN0EyOTlE
-Q0NCNTdGN0Q0Q0UyQUVGRDk5N0FEMjFDNTU2NDdEQkU0RjBGQkJBMUY0MTM2NjdCMTk2MDQK
-CjY5RkU5N0IxNDRCRjJERDgyM0NGMjNFMjIzMTNFOEI4OUFCMjVDRTlDMTc0NkYxNDFFMjA0
-NkRFMjE3QURCRTE4QkNDM0JCQkUwNDY4RQoKMDNGMjc3RDNGOTVCNTZDQUY4RTJDNTFBMEFB
-RURDREZBMjI5NDY2NkE4NTMwODhFRjk3QkMyNzlGQjUxRkE3ODQxOURBMEFBODNCRjZECgo4
-RUFDQjgxMThFMDQ2MkUwNDAxRUE4MzAyM0RCQUU2QUQ1NDIwQkJEMjVFM0RFQTQ2RkIzQjdD
-OTM3NjM3M0M4RTM2MkU3NEIwMUFFMEMKCkU5RDU5QzY5NDVFMTA4RTBFOTJDMjNGNjI2NjFC
-RkE1NDcwMEUyMDM2MjdCQ0FEMTFFNzg5NUFENTlCRTE4NTlBOUZGQjZGN0IwMTY4NQoKMjND
-QjExMTU1MjMwMTkxNjEwN0Q3RDJBNDAzNTQzQ0I4NEFFRkU0MDRCOEYxNzBFRTVCNDA4OTgx
-QTg4QTY1QzMzNUIzRkMzNDU0QzAwCgoxNTNGQTkyQ0M0NDJCRTA1OTA3NjZGNzY1RTMwRjgy
-RkQ0MTQ5OURFNjg4REFFMjc0OEQ1NzA5QkE0N0E4OUU4MjU4MTNCRUY0REE2RkEKCkVDNUQ3
-RUY2RTlDQjA5MTNCNUJDNkE2Nzc2QkY5QUM3NjY4NDg1REU4OEU2MjY1RjVDREYwQTg1NEZD
-ODZERUIwNzBFNDBBNDFBMTI1MQoKMTI5MUUxQTY0MTlDNzY5NEVDQTVFQkFDOURBQ0VBQzMw
-M0MzRTlGRThBNjJBNjQ1MjFFMThCNDlCNTZCM0VDQTZFQjBGRkExNDhCMkY1CgpFNTU4ODU3
-NDI2NDI0Mjg4QkI1NERFMTU0NTNFMUIzMjFENEIwNEM4RDcyOEIzMEI3NTZCMDU5N0FFNjFG
-OTI0NDdCM0E3NTcxMzE1MzkKCjg3MDFBQTRGOEE2QjQ2QjQyODNENTBFMjZGNTc3MEVDNjQy
-NzU5MkYxNkE2NkNBQTgxOTlBRjg0RkYwNUEyNEE1RkJGRDE1ODhCNjExNAoKRTI0Q0RGMzlB
-OTlFN0E2Q0QwQkNENDRFMEU4Nzc2Qzk0NjVEODZDQTNFM0NERTM0QjMzRDMxN0VDNzVEOTUz
-NDExQzkwNDUwMDAzQjBCCgo5NDE4ODE2ODZDOUI0QTMyNjBDMURDNEZFMzFGMEE1MzU3N0Q0
-QTQ3NTBBQzdDREQ1MkVCMzI3NEI2MTU5N0RENUMxMTFBRjQ0MTQ1NkYKCkUwOTA4MjFCQzdC
-Mjk4MDY3MTRDQUMwRUY1QjhERTJEQzgxM0Q0MkNEQzg1MzBGNkVCMUREODI2NTdFRTFCNkRD
-MzlCMEUyQkFEQzE3QQoKN0ExM0U0RURGMkE4OTNCNDFDREE3NTRENkVCNjg0RDZBOEQ0OTZE
-RjMzMTQwMUZGQUZFREFGM0ZEODBCRjFBMzVDMkVDQTU0RjQyQkE0Cgo5REI4QzdDRDczRDgx
-RjVGMTA2MDUxNUQ0N0U2RkMwODcxN0I5RTkyOTlCMjU1NTM2MjQxREJGQkM2NzM5NDVBMzg4
-MzlCMzVEOUM4RUEKCjFBQTQ0OUNEQTgwODA1QzRCMTRBNTQwODdFQUU5RTRFQkYwRTYxQzgz
-QTFCQ0M2QzgyNDMzMTNGNUM2RkJGRkVDRkM2QkRDNDM2OERFRQoKN0FGRDQ4OUZENDhEQUZE
-MzRDNTlGQTZEMkRGQUU3RTJDOEM5NUJFMDVEMkFBQkE2RDk4OUQ0MUM3RjBBNDMwN0QxMTg4
-Mjg5NjNGMkNGCgpBNjUyQkNGQUMzM0IyMjk5MUU0RjZEODBEODUxQzA3MjIyMDU3MDIxNTVF
-REIwMDA1M0I1REFFQzUwNzQ0QUU1NUU5MTg0QkVBREE4M0IKCkY3Njk2NEY3RDM5NEZDMjdB
-QjgyREExQTY1RkRBNTZEMzY0OEQ5RjVBQTFGRUZCRkE3MUJEQzRCNjZFOEM0QTlERTQ5MzVG
-MEZDQkU0NwoKOTU4NDkzMTYxNjk2NDgwREVEMzMxNEI3MDc5OTAxRkU1QUVCMTBGODlEOUYx
-NTNENjU0QTBGMEU1OEQ3MEI5MjJBQ0I5NjlCRDgwMEEwCgpGM0NFNDIxRkNFMzczMTlEMzc3
-RDkwMzc0MUE2MEY4RDgzQUU4RkFCMUM5OTlCRDhDMzkxMzE2QTFDMENFNkIzRjE4MURFQTNE
-MkFGQkYKCjAyQUJFMTIzNzkzNDE5NEU5RjQyQTk3M0FCNDk3MUQzRTNDQjYzQURERENGRTlB
-NDdCRTc4RjI0NDY4RjgzRTY1MkU3RTY3RDg1M0Y0RAoKNTAyMEQ3QUNEQkVEMjUwRDFDREJF
-ODZENTgwMUNENTY5MTNDMjBGODEwMUY1MDlDOTBGOTcyNjNGQUM2RkZERDZDODcwNUNCQTBF
-RkZECgo1RUVBRTFCRTExODQxREM0ODQwMUE3QzQxQTVGMEVENTlGQUMzQ0RGQjhBMkRGRDJB
-QzBGM0MxMkNDMEU5NjRCMjVCMzQ0RTFCNjI0NkEKCjI5MkQ0RTlFRTZGQTE4QkY3MUYxQkI3
-QTkxRUI1QjhGMEUyMEE0RkQ4NTkzQjgwMzMzNTk4MDIyNEQzNzI0MTdFMzY2MkQ5NjMwNTUy
-NAoKRjIwMEI3MDE2OEFBM0I0ODVCRDgzREY3QTQyQTU3NzE4ODJGQTU5OUYwRkFEMzZDOUI0
-NjMyRTU2RDc1MUZFQjU3OUY1MzBBNkE0QzIwCgpBOTA5NzY1Q0FERjkwNjVFNEJDODBCQzUy
-RkRBNkEyMTg2RTIyQjI1NTkwMTdBNjI2RjIzMDUyMkRFNzA4MjE5MDEyMzUxRTkyMDVGNkEK
-CjQ1RTk2OEQ5NEQ0MTE2RUY1NUUxM0VGOTIxQjM3NDBDREY0NTU5NjIwNkJEQTI3MkIxNEE4
-QjJGNkM2RUQ3NDRCQ0NDOEJGRUFCOUI1MAoKNjA4OERCQjU3RDhGRUM4MzdCNEIwMEY1Nzk1
-OUVGNTE1Q0U4QTk4MDJGNTRBRjFERTAxRjA3MTE0NkQ5QTY4QkVCMzgyRkUwM0REN0RFCgpB
-QTAwQUEzMkJENTUyRDJGRDFCMDlFOTJFMzFFMzYyMzQzNEE1QTM0RTcwMkVEMDM3NUUxQTk3
-RjhCMDlBQTUyREM0RkFCOEExNUYwOUYKCkFCRjBCRTQ3QUQwM0Q5OTcyMzZCNkI1NTZBRkE5
-QzRBM0U0MTM1REI0OTU2REIzOEY5MTQ0NDZEN0UwRkM2QUEyMUQ0MjMyQjBCRjVFQwoKNjZG
-NDMyMTRFRUZDOENGOTg4NTRCQkQ2MjU2NjgxNDQ0Nzg5NTlBOTgzQTAxRENCNEZBMkJDOEZD
-REUwOEYzRDREQUI0NzRFMDVDM0FBCgo4MEI5MUZFNEY1M0YxMDNFRkRGQjFBNTA5Njk2RTBC
-NjY4MzBERTQ2NkNGRTgyNDMyOTJERTM0RDRFOUFBRTUwRUZENTM5QzEyMEJCM0QKCkMwRjdE
-M0VBRDFDMDMzRUY3RUFCQkUxMjk0Mjc2QzBGNzhDN0MwODlDNzZBMTAyNDg3MEVCQjA5RDQ5
-M0Q5QTRGMTZBM0U2NUI1QzVDOQoKRjM4MERCRjUzNjVCQkU4M0FFMTNBRDRFOTZDODUyMjc0
-RkE2Q0M4MzcwQ0U4RkFENDU0NDlEOTA1MEU3RDJFQUYzNTJGMTY5Q0M3RUZBCgo2N0IxQkJF
-Q0U0ODVDMkRDQjYwOEFBN0IyQjZGMjc2MkI3RTQ2ODJCQ0MzM0VBMEUzMDVDQzM5NUEzRDdB
-MkMyRjdFMEVGQ0YyQjEwNTUKCkYzMEU2MzE3NTdCQjVCRUEyMkQ5MDc0RkYyRDczNTg4RjlF
-OUREMTI0NzdENDRCRUVDQjlBMDNERDU0MzlDNDcyQ0ZFRURFMkJBRUQ5QQoKRkJENjdBRkY4
-MDY3NTlCQTBBRTM0Q0RDQjEyQ0E1MjMzMkM5MzI4NjMzQzQyRjE4OTRERTVGOUVDNTAxMzZB
-QTEyOTNDOUQ4OTM3MTYwCgowREZCMTRFMkU5NTQ5MDg1M0IwNjAxQUM3NTIyQkU4RTUxOTc4
-NkM4N0FBNUUxRUQyQjk2Q0UyMjEwMDlBQTlDNTVCQzYwQUVBNEU4Q0UKCkZEQjk3N0IyOEYw
-NTUxQzMwNkMyMkZGNDAxNjcyOEJBQjc4OUI2NUNFMDdGNjExQjlDODQ4MDg4MzdGODc2NUU1
-RDk0QjlDODY3QzBFMwoKQUZCMEVBNEEyMUEzMjRDQzBBM0JDMzUwMUMzOUE5QkE5MjhCMDlF
-OUE4NzQwODMxNERFNjNCNzgzMzkyRDVCRDlCM0FDRjU2Q0NENzBCCgo0OTMzQzE3MjQ3MzIz
-NzlBNjE2MDEyREZGOUE5RTE0RDVBNTVGNTBEODQxMzMzOTU4RDZGMzZCNTY5MjYyMjhGNDc5
-NjQyMUU0NzA3MzUKCjRGQUI3NDMxODk5NDQ1MTE0QkNDRTVEMjcxMTdCRkVBNjVFRTExMTg1
-MDU3NjUxMzJCNzgzM0ZFOTk3ODg5OUFBQTFCRTNFM0Y4QUZDRgoKMEU5RTExNDBBMjZGQzlD
-QTE1NEE2QkJCODRDM0U1RkQ2Q0Q4QjgyNzMyQkUwMTc5REVCQUNBQzUzNDBDNzk0OTNBMThG
-QTJFNURGNThBCgo1RjBDNjU0NkY1QTU4MzZCRDYxQzkwNEE4RUJBRjE2Q0Q5MzNBOUJDN0ZB
-NzJGQTcyRjMxOUEwQTZFRTg2QUQyM0M4NEU2NzJEMThDQkIKCjA2OTZGMjJFMUM2OUVDRUZE
-MTVGQTUyNzA2RTVEQ0YzQ0I1MzExQjI4RDlBNjE0NDQ2Q0UwMzM1NDdFQzBFRjVGRkFFQ0Yy
-QTA0RjFBNgoKQzNERTkxRUQyQjNGQkE5NERENzc5NkU0NUQyNkFCMDBCOTlCM0UyOTU3NTFC
-RDY0NzNGMEJGMzZFQkNBMjhGRkFCMjQ1MUU5M0RGNEUwCgoyNkJGMDg0NEZBQkM2QTEyRUYx
-NUVCQTY0QTVDQTBFOTdDNkREMDZCOTRCQTFDQjI5REZDREFEOEMyMDNDMUNCNkY3QTFGQUY0
-RjNCNTgKCjVCREQwQkY5MjI1NDlDQjQ1REY4RjIxOTZDNzA5RjJCOUEzNUE0M0RCMDA0M0Uy
-QkQwMjg3QTNDMzEzRUUzQzMzRjExOUYwOUE1NjE5RgoKQjM1MEY0MDExQTkzMTAwQ0VFMDg0
-N0YxQkRFMTJGRUU4RTMyM0M4RkFFMzRENTM1REI1QTBEQzg0NzVERTgyOTlFM0M5Q0Q2RDhC
-MENGCgpENjQ4MTYxOUM2OEU3N0Q5MkZBMTBEOUVCQ0MxM0U0NzRBRDIyQjFGNDdEM0YzNjJG
-Qzk2OENGQzFCNUI1MkVDMjRGMTlCQTg5NDk2N0UKCkVEODExRjM3NTI1QzI2MEFGRTBFMkY5
-QjMwMkQ2RkZEMDE5NzU0RUJDQzE0RTA1M0E5RUVEMTkwNUY0MDJCQTdCRDNEOEFGQjA5RDJB
-OAoKRTk0RDBBREJDM0MyQURGQUZEMkE0MDUyMjU2RDU4QjIyMUQwQTIwOTk1RjlDMzk0RjNB
-M0FENjQzNkNGRTRGMDAzMEM3RThDMjA5NEUyCgowOTJGNTE5MUMyQzcyMUNBOTQzMzM2OUFG
-QzIyMUQwMTg3MkJGNjgyOTg2Nzc4NDFBMDY1Njc3MjY0OUU3RUJBQUM4QjFCODFBMzhFNzUK
-CjVCMDJEREE0RDA4QjJGMzU3QzBDMTBFMTA2MDYzMkZGNzRGN0VERDVDRkU3RjlEQkIyMzJD
-M0EyMzFEMTI4QTMzNjhDNEQ5ODcyNDA0RAoKRjQ1NzE5QjNFQTA0NTU4MzZCODkzRjA3RTA3
-NzYyRjBBMkZBOUUwMTEwMTBBMDg3MjM1M0YwQ0QyMjQzRTE4NjBFQzMzRjcyRTE1RUIyCgpF
-REVFMUE5MTM5N0ZFNkQyNzI5RkVEMUIzQTY2RkQwMDlFQThERERBREQxRkZEQzhDRDM2MDM4
-NzZGOEQwQzdBRDYwMTY0QTk2QTZDNzMKCkI4QThCNTA5ODVFMUZCREEzQURDNTAwMThEMzQx
-RjI4NTAzNkI1RUUyNTVEOTc1RjZDM0I1Njk4QUM0QTk0QjIzMTdCQUM2NTg4OTc4MwoKNERC
-N0JGNTJFOUI4RDIwRkQ0OTgxNTE1RkJFRjIzOTYzQTdGODYzNkQwODk3RTdFQTg4OTAxQ0ZB
-RTFGREQxOERBODZDMjQ2NTA3QTM0Cgo3NjcyQUJCMTE2RUQ2MDVBQzlCNEI2RTg5OUI5RThG
-Njg2NzE0MEJFODlERjVDRDUyQzY1QzI3RTg2MDE3MEFFQTZDQUYzMDNDODYwQTYKCjgwQTg1
-Mzk0REU2ODk2Q0Y5MjhCRUQ3NjE3MUY4OTA0QzVCQkY0MTk2QkFEOTA2NTY5QUM1QzcwNTdF
-RDEyMDFGMkFFODM5M0NCRjcwNAoKMDA5MTI0QTZFNTIzMUQzMjNDM0ZDRTZDNDhDQTIzOUYx
-NjlERkY0OTZCOTUxMzMyREVCQTVGMDZDRUU0OEI2QkNGODI0RjBGQjRCRkU1Cgo0QzExNDdC
-RjIwOEMyQTlENDQxMzJEMDg5NUZBN0E4N0Y2RkFENzgwRERDRjk0NTQ1RjcwMzBFRjE4MDhC
-MzBFQzY1OUZBMkI2RUEwMTEKCkEzQzA2MDcwMzg4QkJBRUJFNDVGOEVBQTc1RjcyQkE1QjRF
-NTYzODBGQjdGQzMxNzlCREI1NUE5QTdDQUY4RDdGQjYwRUFENkRBOTM5QgoKMDlFNjkxNTk0
-MzI2NzFDODhFMjJCMzREMTE1QjZERUM1NDk1NTQ1NEQ2MjI4NTcwOTRCNzBDMzM1OUQ2QTIy
-QzIzOUZFMDM4NTNDRkQ5Cgo5QjdGQTczRDRFRTNDRDM0MTI0NDg2RjAxRjVDRjA1QTQyM0ZG
-RDc5NEY1NzdGNTBERTY3NzY3NzkxMDdCRDU4ODA4RUVGQTI0REUxQkUKCjk0QkIyN0Y4MkEx
-OTA2OEQ3RjlEQzY5NUVDODQ3MzM0MUY3M0ZFRDYyNkE0QTZFODlCNThENEVEMjAyNEY3OEFD
-NzY3ODgyOUZBNDBCNwoKQzhBQTc0MDBFRTNDRUZFMTI1RjY0RTFBQjQ5Q0U2N0ZBMkYyRDFC
-ODFGQzMyMkFBNjRGMTY0NjNDMTM0QUY1MUFBOUMzQTE1NEM3RkQ0CgozMEJDRjQ1MzFFQTlC
-NjIxMUY5MjAwNkFDMUM2MTg5NEE3REQ1QzM4RTZDQjhDQzY4RDZBMDVCQjk1QjBCREFGNjY5
-NzFEMzU3RUZDQUQKCjg5QkNCODEwOTQ2MkI3OTY5MjczODk1NjdGNzk3RTU4ODIzNzA2QUIy
-MjRGRjkyN0E3NjE2RjBFNDUyN0Q5MEIwREI5Njg5RDg1MEQ0QgoKNEYxNDcwODBDQkJGMzQ5
-M0U1NjRBMUNDNDM2MjcwNzVFNzlCRjNDMzA5MUU0NjUwQjhFNjA3RjRDQ0NCQ0FGQ0QzRjc3
-OEI3QTE0NjRCCgoxNEE0RTIyOUZENDFCNUJDNEE5ODg4MEYwMDhFRDYzRkQyNUFFNDUwNEVF
-OEJEMzhCNjQxRjY1RDBGM0Y2NTk2MUFDMzE1RjRENjgxMzkKCjdDMjQ3MEU4ODgxM0JDRkM3
-RTQxRkRBOTlBRUZFMTcwRTI3NEQ1M0REM0Q4NThEOEJCREExNTRCRkM5MzQ4MkM2NUZFQUU0
-QUQ3RTlBNAoKN0FDOTUzMEYwQTgyRkY0NkU4QkYyMkVDNjRCM0E4QjY5NTI3RTkyMjQ1QjNC
-MjcyQzMxMUZDRjk5NDZFOTM0NzZEODM4RUMwQUU1NEVBCgo4Q0I4OTkwODc3OTRBNjdFNkI0
-RTk2NjY0QUZERDYxOUZDMDc0RkEwODlGODNBMDJGQTRGQ0JCNUJFNjk4RTUwOEY4N0JDMEY0
-ODA1MUEKCjhBQTRERTNFQkYzRkQ5M0FCQ0Y1OEMxRkI2NDI1NzAyN0FGOEZENjlCN0NFRjA3
-NDk4RjQ4RjM5M0I0QjRFOUJERDY1MTkzMzJBNzgwQQoKRTcyMTUyQ0UxNjhFMzk5RTc1REI0
-NDE0NjE4QjlFRkZCNDk4NkI4NUE5NENCRDBCOTEyRTNENUNEREJBNkI3ODRFQUM2NjA5NjlB
-ODNDCgpDRjNBRjkyOEI2RTg0NTg2QjVGMUNGMzUzRUZERjAyMkRBNURGMTMwRTdGRkQxNjk4
-QTlBN0MyNkM4M0YxMzVGQzM5RTlDRUNCODg1NUQKCjk2MDFBMDhEOUU1QURDNTM5N0VFOUU2
-MzlBMTk4QTYxQTc5QjNDRjU5NjBBRkM0MTU4NEI1NkIwRUY1QzYwNEU0MkJERDAyMUU3MTZC
-NwoKMzcxOEFBN0ZBNzAwMkQzMjlGMjJFMzg5OEI1MkYzMTExRTk3NUQ1MDU0QzhDMUJDNDkx
-RURENjdDQUY4NzY1MTc5MDFDQjc4MDVGQTg0Cgo0Mjc5NDM1QjI2QTJCNTRDMDg2RkU0NDND
-MDc5QTM3M0I2MzA1Mjg2NjRDOEYyNjJEMTQ3RjQ0RjE5QjM3NjBENENCNEQzQTM4QjhFN0IK
-Cjg0OTJGM0ZDOTEwRTQ1QTIwMUZGQkI4QjNGMDZGODBDRDEzNUMzMjFFRjUxQjdBN0MzMEFG
-QjVBMTRENUVBODUxRTRCMjMyMzJCM0YwRQoKMjcyNjAzMTI1REU5OUM2QjE3NTVDOUQzRThC
-OUU5MkQzM0FBNEVFQjU1RDA3RDA2MTU4RkZGOTNCQ0VFOTIxQ0JFNkE5QjY2MDVCRTNBCgpE
-MUMyMDNBQjkwM0FFRDkwQTFGNzM1RDMyODQ2RUU5QkY3QUNCRDdCQzQ3OUZEQUQ4MjA0RjBB
-NTYwMTQ3N0UyQ0EwOTJDN0NENTc2NzEKCkUyQjE3OUI2MEE3Mjc5NEZCM0RFQkVCRTlFNDFF
-RjMzM0Y5NzAwN0JGRkRDMUExQzU1Qzc5RUI5Q0Y4NUFDMkRDQzIzNzAwRjQ4RDZFRQoKNjIx
-RDAyRkFBQjdEN0U3QzUxMkI5MzkzNjJBQURCMUFDREIyNUI3NUZFMUI5MzVGMTVGOTIyQUU0
-RTAzNjMyRUM5QUMxQ0NFMTEyRkQ3CgpDQzg1MTBCODY5MjEyMDlDRUY1RTY2RjUyQ0FGNEVB
-RkQ4M0U3NzJBNjUzQjBCMTBFQTdERTM4MTc0QTY0NTgyMjhGOTAxNDZBMUM1RTUKCkYwNTdE
-Mzg0Q0I1Q0U1MzFDMDJGN0JGMkJEMjA1MTdGMTgyNTk3MzEwMTU3QUVENjhDMjMyNUNDQUJD
-MjJGOUQzOEEzMkFGMTU3NTcwNwoKREVBNTEzOUUwMzYzNjc3MTYyREI2RUU5RDQ2NjE5REFD
-ODhEOUQ5NzkwMkQ1QzU4MzM5RkY5QjdFM0REQkRCNzIyNkRFRDM2QzFDQjUxCgpCNTBCQTc0
-NENCMkRFNTk2NDEyNjkxODg3OURCRTdEMkZBNjE2RkJBOUQ0RDI5NjUwMjFFRERBOEE4OEZE
-RkMwODg1M0RDMUZFOTk2MTQKCjE1Qzc0MUIyMUZBN0Q3OUE2RjAyODFCRDA1NEU0OUM2RjE4
-OTNBMkE0QjM3MDhFNzI3MkY0MkM2QUU4QTVFN0M5NUNENjg3OTQ2NjE1MAoKQ0I5OUY0MTEw
-QjM5MkRBN0RGOTE0MTk1NzFFRTMxQzkyNkIzNTcxREMwRkQ3MzAyRTI3MTI2M0M0QUZDRjc1
-NTM1MjU2NTFEOEQ1NTg3Cgo3QUE0RTEzMzMwOTJFRDUyQTk2NzI5OTBCRjM0QTFCNjBFQzI0
-MzI0MTUzMEU2N0U5RjFEN0NDQkJBMUI1MTFBMjQ3OTNGMjUxMUYzRTQKCjc2M0IwMkQ0MDg0
-Q0ZGMDk5QkQ4MzQwOEZFQUQwNDAzRTMzQTZCRUZCQ0FEOTU2NDIzMkZBQjdCQUJDOEJDQUY3
-ODVBNkVBNzRBQTg4MgoKQjc0REUyMjlBNkM5RDE0MEU2MTdGMTBFOTg4NDY3NzA0RDMxNjk1
-NjM3MTA2ODI1REUwRjMxQzNCQkFEN0VFQzMxN0MyQ0JGN0NBN0IyCgpFMjVBNTM2NUM4MjM0
-QjlDNTdDOUUzODUzQzdBNTgxOTcyQjMxODZBQTg3MDQ2QzA5REFBNDQyOURDQzU2QzdDRjdG
-OTc1MDQyOEI5NzQKCjQ5RTZEOUUwRUUxMDRCQjJFODBEMDU3OTdENjFDNzFGNzc1MUM1NzI2
-RTFGRDdDNDQxMTc2QUJEMzI2MTNCNkQ3RUE5OEI0MjYyRjlGNQoKNjY0QUE4RDRFOTQyMkFB
-MEY0NEM0QTFDNzlDMzIxNDBGNkYzOEFCRDBGRTlEN0NEODU5OTdBMzU3Qzk5OUEzNzY3NEY0
-NjAzNjA5MzQ5CgpCRUJBNEY4NkQ4MTgyOTBGNkQxRTc1Q0M3MDU1NUQ2OEE3MTdFQzA2M0I5
-MjkzMUYyMjc4RTQ2MEEyNEE1MzM3N0Q4NTMyMkZBQzAzQkEKCkQwMDhFRDY0MDJGMzc2OEE3
-NUNFRUY0RUJGNzM4NTJBMjUxMkMxNDk5QjNENDUwMkUwNUU5QzRDNzdEOTYyNzA4REU3RkI0
-MDYyNjVBNwoKQTdCMEFFMzhFODc5QkU4OTIyQzU4NUVGNEFDREEyQTQ0NTlDMjdERUFDNTkw
-OUFCQ0MxNTA2NEVCNkI5NzRFRUQ5NTcwMjI4NkY4QzA0CgpFNTkxODcyNDFFMzU3QkYwRkEy
-RjFCMUQyNTc2MzY2REQ5NkIxNUU0MDg5MTA0MTQzNUQzNTQyMzQ0REREQ0VBOTk4MkU3ODUw
-QkNGMTIKCkJGNjAwOTNGMEJCOTEyNzlFOEFDMkE0MERCNUM3RjA1ODY0MjJBOUI3NTE5QjVB
-MTRGMEU1QkU0OUJDMDgxODEzN0QwRDUxMkEyQkQ2RQoKNDc1ODU1RUFGQkVGNDcwMTkwNzIx
-QTZFOTA5NjZDRDhGNDdGODAxNzgwQjYxODFDOTJCNkQ0MDFCQjcwQTY0Qzk1QjEyQUU3RERE
-OTgwCgpEMzIzMjNFRjU2OUMwNTEwNUFEQzNBQjVERTEyN0I0MjFFRTE0NTNERjdGQzVCRTIy
-NzVFNTk0MUZDOUM3RkVFMDlGOTMxMDM5REE3MEIKCjkyMDYwNEQ0MDcwMzM2OUI0N0Q4MDE0
-RTk1RjgyNzU2MzIzNEQzMkEwOEZDRjhCOTkwNzNGQkY3RTg3QTM0RDdGQTFBRjlFNkI1QzVD
-MAoKODgwMjI1MEFDQjdFOTQzREExMDhCQjI0ODVBNDEzMjQ4MTlDRTg1QUQ1MUNBODNGQzc1
-NzVGRDVFOEVFMzUzQUI4QzZCOUMyRjNEQjhFCgpCM0RFRDQ1RjIyNzExMTkwMzIxQTJGNkY5
-NTA5N0RENkEwRUQ5MUUwREE1NEFBRkQwNUE2QjlEMzk5MjM5NTI1Q0Q4MzNFOUFBNjIzMUMK
-CkQ0RjgzNUI3MzBFNTQ1OUMzOTlERjc2OTNEQzRDMUNBRUZBRDY0MTZCQzk1RjhCOUYwNTMz
-QzBBMjdEODZCNDJEODQ4MEZDOTA4QUE5MQoKQzA0NjhGMEJGNzNDQzVFMjYwRTVGMDBEODJD
-NDM5RTlBNTgxQjE5QTYxQjUwMTQ2MDZENTdEMTg2RDlGOTQ2OTIxN0I0NDcyREIxNjA5CgpG
-RUQxOTQ5RDI5RkYzRTJFM0ZBQUI1MzZGRjc5NDlBMjYwNDJCOUZDNTQwOEI3QjA1OUVFMzVC
-MEUyODdGNEQ4Q0VFNTBFNTQwREI3MTYKCjY4MDJFRkJGMEZCNjBGMThFNUExRkE5NDJBNEUz
-RTY2RUU2OEVBNDRCOEZGNjZCM0IwNjY5RTU5QTgxQzYxNjYzMTI5ODcxNjRFNkRDNAoKREI3
-NTA5QjExNDQ0Mjg3QTVCRUM1QkVBOUZGNjU2RDVBNDJDMERDQjEwRjgzQjE0REYwMkJCRkU3
-MjlFOTgzOUU1OTQ4OTVEQTgwNDQ4CgpCNzYwRDdBQjVFNThCNjc1QURBNDIwOTg5MjlGQkVE
-MzVENjJBNTQ3MzdGRTZFNjEyNTY5QjhERTRFQjYwM0YxREQ2REJGRkU4Rjc5RDYKCkFFQTFC
-MDU5OTkxM0FBNzAwODNFQjk0RTI1MURCMjc3QkU5RjQ5MkU0RDEzQjJFNDJGQ0NGODI1QjM1
-ODlFQzRGOTQyN0JBNjU5QTU5QgoKNzNEQUNDM0M5RDJFOUNENzcyNjdERUZDRkRDRjIxMTdG
-NTIwN0FFQzQxOTgxMzBCMUI1ODU4NzVBNDlCNkUwMUM4QTVGRTVFQkM0Njc4CgoyQkRCQzQz
-OEJFMzJBMUNBRjEzNEU5QjUzRDgyNzYxRTlCNjgyRTBBMTk4QTgxMkYyOTZFMTkzQzI5NjQx
-MjU5Njk3OEREM0M1RUVGMEYKCkJFN0IzNTM1NjhDNTYyN0JDNjQ2N0M3NjdGOUVEODQxMkVF
-NDA1QzI0RjZERkU5NUFGNzI0MzdEMUFEOUI5OTJGRjMwNDU5RDIzMjQ5MQoKNjQ1RTg0NUZG
-RjAzMjE0OTQ5RDMzRTFBNDhFRjJBOTlEQjI5REU2RkY4MkU3MjA1MEUwRTZFMDhFODYzREI1
-NzBBREY1MTVEODI5MzFCCgpBRTcwNDM3RTQ5QzM5Nzc2Nzg3NEUzNDUxMzQxN0E0OTIzNEJC
-RDg5RjE5RkZDM0VFM0NEOUY1QkE3MTEyQTRCRUMwNzAxMkM3MDk1ODUKCjk3RUNBNUE1MDEz
-NjVFMzUyNEE1MDBGQThBNDNBN0JBOTBGOTFFOENENTgyNUY2NTk0MDgyNURFODBGNUVGMTEx
-OTg5NTJBMjU4QjVCQgoKRUM1QUEyNDRGODY3NEJFMTc2NEI1MjZEQjZCOUQyNDRDODg2OTgw
-QjI1QzdFRTRBQ0ZFQkY3OTM0OUUyNkYyRDJENjVGQTI4MTBEMUNECgo0QjM5MjMzRjk2Mzg1
-NDZBM0ZGMUU4RDAxN0VGNDU4RjE4MkNGMjI4MzkyQUQzMEE2RTdERjcxNUNEMEI1NUZBMzc3
-REZBNjg4MEY1NTQKCjM2N0E2RTM3MjgwNjVERjY1Q0FEMzBBRDkyNzk0Mzk2Mzk3M0Y2NTk2
-QzFDMUREMjlDMkM4NEIyMjRGODEzNjFENENBMkVEMkNDNjQ4MwoKQTU5RjgzM0NCOEE5NjRD
-MjgxQjBCQTJDODM0NzgzQzU3NTI5ODZCOEU3MDU4M0U2QzlBQTMzMTMyQkZDNjc5OThCOTky
-RjI0OUQwQUQ3Cgo2QzAyQkREMjkyNUIzOTUwMUE2OUU0RTAwREQzNTM0QzQ3NEQwNzE1Qzkx
-M0UyMzY2MEJCNzY1QzJFNUZFMzdGNDQ1QUM2MDVGNjJERTkKCkM1MzNFRTkyNEVGRTIwNUM1
-MjhDMzcyNDAzNjk2ODg1RERENkJBREFGNjAyOTkzRjNERjQ5OTU3RTIxQjJFRTQwOUFBNjMz
-NkE4MTAzRQoKQkNDMEIzM0I4RkZEOEM4MThGMkQyNUQyMkUzQjBFNEU4NzRDRjRBREUwM0Y2
-OUMxQjAxN0RBOUNFRDlFQUZDNkNCRDg2NzgwQzgxOUE5CgpDRTAzQzJBQTIwM0NBQkQyOTky
-NTFCOTA5MEYyNjU5QzMyNDVBODQ1QjUwRUIzNkJDQkMwN0FENkZFMEExOTFEM0U4QkQwQzlC
-OTcwMEEKCjcwNkVBMzAyOEU4MDU1QjU4NUE2RDhGMzA1QzgwREQ1QURCRTFEQTQzMzY2OUUx
-RDlGNDU5RUExMDVCNUY2RDc1NkE5RkYzREY3MTYwNwoKOUZEQTc3MzEyRTQ0N0Y3NjRDMEYx
-NzhCN0YxMjhEQTRBQ0UxN0Y4RDRGMjEzODY0QzJBQUZBQjBENUJDRTQwQTE5QUM5MkZGMjFE
-N0IxCgpGMUYzQ0VDMzM4OTUxRDcyOTIxNDc5MzdFRDBCREIwQ0VDMjU3OEQwQkZFMTJGN0Yy
-MUI0RDc2QUREMUY1NTdFOEE1NzYxMzk5NTkxQzIKCkQ0QTJDQjFGMEQ5NTY0NTg2NTY3QUU5
-MTY1NDUxREZGNUQ2MUUwOEYwNDIxQTg2MDZFNDlBNTUyRTE5RjhDQ0RDOTBDQTkyQzRCQzJB
-RAoKMkZDM0RDMjlERkY2RTU2QkE4NUQ4RTdCMDM4ODk2MkRCNUJCMTA3Q0JBQjRGRDQxNzBG
-MjRDMjFERkUyQTNFRjI5RERCODJDMDJFRjMyCgo0QjlEQjJBQzA5QzFBNUVBN0M3MUIxNTQ3
-NTczQjY4RkY4QzMyMTVCODAzQ0QzRURFMTIyREUxRDcxNDkyQkQzQjcxQzVBNkRFNTJENTAK
-CjhFOTg2NzY1NjBFRDI3MzQwM0I5RDY1NUYyMzk1NzkwMDc3MDZDMDc4RUEzRURDMTIwRURG
-RUNBRjRGMTMzNzlBNDUyNkZCMzczMUEwOAoKOTY5MENGNkQ3NEYyRTk1RTMzMkQxRERCMzZE
-RjQ1ODc3MUYwRjdCRjMyMUU1MjQ0NDdCNkUwNEFDMzMwMTFFODU1QTBFMjU1ODJGMTA0Cgo2
-OUYxQjZDMTkwODlBRjAxM0MzOEYyNjI0ODI2QTU3MzA2NDEKCjAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCjAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAKCjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAKCjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCjAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
-CjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAKCjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCmNsZWFydG9tYXJrICV7cmVzdG9yZX1pZgoKJSVF
-bmRQcm9jU2V0CiUlQmVnaW5Qcm9jU2V0OiB0ZXhwcy5wcm8KVGVYRGljdCBiZWdpbiAvcmZ7
-ZmluZGZvbnQgZHVwIGxlbmd0aCAxIGFkZCBkaWN0IGJlZ2luezEgaW5kZXggL0ZJRCBuZSAy
-CmluZGV4IC9VbmlxdWVJRCBuZSBhbmR7ZGVmfXtwb3AgcG9wfWlmZWxzZX1mb3JhbGxbMSBp
-bmRleCAwIDYgLTEgcm9sbApleGVjIDAgZXhjaCA1IC0xIHJvbGwgVlJlc29sdXRpb24gUmVz
-b2x1dGlvbiBkaXYgbXVsIG5lZyAwIDBdL01ldHJpY3MKZXhjaCBkZWYgZGljdCBiZWdpbiBF
-bmNvZGluZ3tleGNoIGR1cCB0eXBlIC9pbnRlZ2VydHlwZSBuZXtwb3AgcG9wIDEgc3ViCmR1
-cCAwIGxle3BvcH17W31pZmVsc2V9e0ZvbnRNYXRyaXggMCBnZXQgZGl2IE1ldHJpY3MgMCBn
-ZXQgZGl2IGRlZn0KaWZlbHNlfWZvcmFsbCBNZXRyaWNzIC9NZXRyaWNzIGN1cnJlbnRkaWN0
-IGVuZCBkZWZbMiBpbmRleCBjdXJyZW50ZGljdAplbmQgZGVmaW5lZm9udCAzIC0xIHJvbGwg
-bWFrZWZvbnQgL3NldGZvbnQgbG9hZF1jdnggZGVmfWRlZgovT2JsaXF1ZVNsYW50e2R1cCBz
-aW4gUyBjb3MgZGl2IG5lZ31CIC9TbGFudEZvbnR7NCBpbmRleCBtdWwgYWRkfWRlZgovRXh0
-ZW5kRm9udHszIC0xIHJvbGwgbXVsIGV4Y2h9ZGVmIC9SZUVuY29kZUZvbnR7L0VuY29kaW5n
-IGV4Y2ggZGVmfWRlZgplbmQKJSVFbmRQcm9jU2V0CiUlQmVnaW5Qcm9jU2V0OiBzcGVjaWFs
-LnBybwpUZVhEaWN0IGJlZ2luIC9TRGljdCAyMDAgZGljdCBOIFNEaWN0IGJlZ2luIC9AU3Bl
-Y2lhbERlZmF1bHRzey9ocyA2MTIgTgovdnMgNzkyIE4gL2hvIDAgTiAvdm8gMCBOIC9oc2Mg
-MSBOIC92c2MgMSBOIC9hbmcgMCBOIC9DTElQIDAgTiAvcndpU2VlbgpmYWxzZSBOIC9yaGlT
-ZWVuIGZhbHNlIE4gL2xldHRlcnt9TiAvbm90ZXt9TiAvYTR7fU4gL2xlZ2Fse31OfUIKL0Bz
-Y2FsZXVuaXQgMTAwIE4gL0Boc2NhbGV7QHNjYWxldW5pdCBkaXYgL2hzYyBYfUIgL0B2c2Nh
-bGV7QHNjYWxldW5pdApkaXYgL3ZzYyBYfUIgL0Boc2l6ZXsvaHMgWCAvQ0xJUCAxIE59QiAv
-QHZzaXpley92cyBYIC9DTElQIDEgTn1CIC9AY2xpcHsKL0NMSVAgMiBOfUIgL0Bob2Zmc2V0
-ey9obyBYfUIgL0B2b2Zmc2V0ey92byBYfUIgL0BhbmdsZXsvYW5nIFh9QiAvQHJ3aXsKMTAg
-ZGl2IC9yd2kgWCAvcndpU2VlbiB0cnVlIE59QiAvQHJoaXsxMCBkaXYgL3JoaSBYIC9yaGlT
-ZWVuIHRydWUgTn1CCi9AbGx4ey9sbHggWH1CIC9AbGx5ey9sbHkgWH1CIC9AdXJ4ey91cngg
-WH1CIC9AdXJ5ey91cnkgWH1CIC9tYWdzY2FsZQp0cnVlIGRlZiBlbmQgL0BNYWNTZXRVcHt1
-c2VyZGljdCAvbWQga25vd257dXNlcmRpY3QgL21kIGdldCB0eXBlCi9kaWN0dHlwZSBlcXt1
-c2VyZGljdCBiZWdpbiBtZCBsZW5ndGggMTAgYWRkIG1kIG1heGxlbmd0aCBnZXsvbWQgbWQg
-ZHVwCmxlbmd0aCAyMCBhZGQgZGljdCBjb3B5IGRlZn1pZiBlbmQgbWQgYmVnaW4gL2xldHRl
-cnt9TiAvbm90ZXt9TiAvbGVnYWx7fQpOIC9vZHt0eHBvc2UgMSAwIG10eCBkZWZhdWx0bWF0
-cml4IGR0cmFuc2Zvcm0gUyBhdGFuL3BhIFggbmV3cGF0aApjbGlwcGF0aCBtYXJre3RyYW5z
-Zm9ybXtpdHJhbnNmb3JtIG1vdmV0b319e3RyYW5zZm9ybXtpdHJhbnNmb3JtIGxpbmV0b30K
-fXs2IC0yIHJvbGwgdHJhbnNmb3JtIDYgLTIgcm9sbCB0cmFuc2Zvcm0gNiAtMiByb2xsIHRy
-YW5zZm9ybXsKaXRyYW5zZm9ybSA2IDIgcm9sbCBpdHJhbnNmb3JtIDYgMiByb2xsIGl0cmFu
-c2Zvcm0gNiAyIHJvbGwgY3VydmV0b319e3sKY2xvc2VwYXRofX1wYXRoZm9yYWxsIG5ld3Bh
-dGggY291bnR0b21hcmsgYXJyYXkgYXN0b3JlIC9nYyB4ZGYgcG9wIGN0IDM5CjAgcHV0IDEw
-IGZ6IDAgZnMgMiBGL3xfX19fX19Db3VyaWVyIGZudCBpbnZlcnRmbGFne1BhaW50QmxhY2t9
-aWZ9TgovdHhwb3Nle3B4cyBweXMgc2NhbGUgcHByIGFsb2FkIHBvcCBwb3J7bm9mbGlwc3tw
-b3AgUyBuZWcgUyBUUiBwb3AgMSAtMQpzY2FsZX1pZiB4ZmxpcCB5ZmxpcCBhbmR7cG9wIFMg
-bmVnIFMgVFIgMTgwIHJvdGF0ZSAxIC0xIHNjYWxlIHBwciAzIGdldApwcHIgMSBnZXQgbmVn
-IHN1YiBuZWcgcHByIDIgZ2V0IHBwciAwIGdldCBuZWcgc3ViIG5lZyBUUn1pZiB4ZmxpcCB5
-ZmxpcApub3QgYW5ke3BvcCBTIG5lZyBTIFRSIHBvcCAxODAgcm90YXRlIHBwciAzIGdldCBw
-cHIgMSBnZXQgbmVnIHN1YiBuZWcgMApUUn1pZiB5ZmxpcCB4ZmxpcCBub3QgYW5ke3BwciAx
-IGdldCBuZWcgcHByIDAgZ2V0IG5lZyBUUn1pZn17bm9mbGlwc3tUUgpwb3AgcG9wIDI3MCBy
-b3RhdGUgMSAtMSBzY2FsZX1pZiB4ZmxpcCB5ZmxpcCBhbmR7VFIgcG9wIHBvcCA5MCByb3Rh
-dGUgMQotMSBzY2FsZSBwcHIgMyBnZXQgcHByIDEgZ2V0IG5lZyBzdWIgbmVnIHBwciAyIGdl
-dCBwcHIgMCBnZXQgbmVnIHN1YiBuZWcKVFJ9aWYgeGZsaXAgeWZsaXAgbm90IGFuZHtUUiBw
-b3AgcG9wIDkwIHJvdGF0ZSBwcHIgMyBnZXQgcHByIDEgZ2V0IG5lZwpzdWIgbmVnIDAgVFJ9
-aWYgeWZsaXAgeGZsaXAgbm90IGFuZHtUUiBwb3AgcG9wIDI3MCByb3RhdGUgcHByIDIgZ2V0
-IHBwcgowIGdldCBuZWcgc3ViIG5lZyAwIFMgVFJ9aWZ9aWZlbHNlIHNjYWxlYnk5NntwcHIg
-YWxvYWQgcG9wIDQgLTEgcm9sbCBhZGQKMiBkaXYgMyAxIHJvbGwgYWRkIDIgZGl2IDIgY29w
-eSBUUiAuOTYgZHVwIHNjYWxlIG5lZyBTIG5lZyBTIFRSfWlmfU4gL2NwCntwb3AgcG9wIHNo
-b3dwYWdlIHBtIHJlc3RvcmV9TiBlbmR9aWZ9aWZ9TiAvbm9ybWFsc2NhbGV7UmVzb2x1dGlv
-biA3MgpkaXYgVlJlc29sdXRpb24gNzIgZGl2IG5lZyBzY2FsZSBtYWdzY2FsZXtEVkltYWcg
-ZHVwIHNjYWxlfWlmIDAgc2V0Z3JheX0KTiAvcHNmdHN7UyA2NTc4MS43NiBkaXYgTn1OIC9z
-dGFydFRleEZpZ3svcHNmJFNhdmVkU3RhdGUgc2F2ZSBOIHVzZXJkaWN0Cm1heGxlbmd0aCBk
-aWN0IGJlZ2luIC9tYWdzY2FsZSB0cnVlIGRlZiBub3JtYWxzY2FsZSBjdXJyZW50cG9pbnQg
-VFIKL3BzZiR1cnkgcHNmdHMgL3BzZiR1cnggcHNmdHMgL3BzZiRsbHkgcHNmdHMgL3BzZiRs
-bHggcHNmdHMgL3BzZiR5IHBzZnRzCi9wc2YkeCBwc2Z0cyBjdXJyZW50cG9pbnQgL3BzZiRj
-eSBYIC9wc2YkY3ggWCAvcHNmJHN4IHBzZiR4IHBzZiR1cngKcHNmJGxseCBzdWIgZGl2IE4g
-L3BzZiRzeSBwc2YkeSBwc2YkdXJ5IHBzZiRsbHkgc3ViIGRpdiBOIHBzZiRzeCBwc2Ykc3kK
-c2NhbGUgcHNmJGN4IHBzZiRzeCBkaXYgcHNmJGxseCBzdWIgcHNmJGN5IHBzZiRzeSBkaXYg
-cHNmJHVyeSBzdWIgVFIKL3Nob3dwYWdle31OIC9lcmFzZXBhZ2V7fU4gL2NvcHlwYWdle31O
-IC9wIDMgZGVmIEBNYWNTZXRVcH1OIC9kb2NsaXB7CnBzZiRsbHggcHNmJGxseSBwc2YkdXJ4
-IHBzZiR1cnkgY3VycmVudHBvaW50IDYgMiByb2xsIG5ld3BhdGggNCBjb3B5IDQgMgpyb2xs
-IG1vdmV0byA2IC0xIHJvbGwgUyBsaW5ldG8gUyBsaW5ldG8gUyBsaW5ldG8gY2xvc2VwYXRo
-IGNsaXAgbmV3cGF0aAptb3ZldG99TiAvZW5kVGV4Rmlne2VuZCBwc2YkU2F2ZWRTdGF0ZSBy
-ZXN0b3JlfU4gL0BiZWdpbnNwZWNpYWx7U0RpY3QKYmVnaW4gL1NwZWNpYWxTYXZlIHNhdmUg
-TiBnc2F2ZSBub3JtYWxzY2FsZSBjdXJyZW50cG9pbnQgVFIKQFNwZWNpYWxEZWZhdWx0cyBj
-b3VudCAvb2NvdW50IFggL2Rjb3VudCBjb3VudGRpY3RzdGFjayBOfU4gL0BzZXRzcGVjaWFs
-CntDTElQIDEgZXF7bmV3cGF0aCAwIDAgbW92ZXRvIGhzIDAgcmxpbmV0byAwIHZzIHJsaW5l
-dG8gaHMgbmVnIDAgcmxpbmV0bwpjbG9zZXBhdGggY2xpcH1pZiBobyB2byBUUiBoc2MgdnNj
-IHNjYWxlIGFuZyByb3RhdGUgcndpU2Vlbntyd2kgdXJ4IGxseApzdWIgZGl2IHJoaVNlZW57
-cmhpIHVyeSBsbHkgc3ViIGRpdn17ZHVwfWlmZWxzZSBzY2FsZSBsbHggbmVnIGxseSBuZWcg
-VFIKfXtyaGlTZWVue3JoaSB1cnkgbGx5IHN1YiBkaXYgZHVwIHNjYWxlIGxseCBuZWcgbGx5
-IG5lZyBUUn1pZn1pZmVsc2UKQ0xJUCAyIGVxe25ld3BhdGggbGx4IGxseSBtb3ZldG8gdXJ4
-IGxseSBsaW5ldG8gdXJ4IHVyeSBsaW5ldG8gbGx4IHVyeQpsaW5ldG8gY2xvc2VwYXRoIGNs
-aXB9aWYgL3Nob3dwYWdle31OIC9lcmFzZXBhZ2V7fU4gL2NvcHlwYWdle31OIG5ld3BhdGgK
-fU4gL0BlbmRzcGVjaWFse2NvdW50IG9jb3VudCBzdWJ7cG9wfXJlcGVhdCBjb3VudGRpY3Rz
-dGFjayBkY291bnQgc3ViewplbmR9cmVwZWF0IGdyZXN0b3JlIFNwZWNpYWxTYXZlIHJlc3Rv
-cmUgZW5kfU4gL0BkZWZzcGVjaWFse1NEaWN0IGJlZ2lufQpOIC9AZmVkc3BlY2lhbHtlbmR9
-QiAvbGl7bGluZXRvfUIgL3Jse3JsaW5ldG99QiAvcmN7cmN1cnZldG99QiAvbnB7Ci9TYXZl
-WCBjdXJyZW50cG9pbnQgL1NhdmVZIFggTiAxIHNldGxpbmVjYXAgbmV3cGF0aH1OIC9zdHtz
-dHJva2UgU2F2ZVgKU2F2ZVkgbW92ZXRvfU4gL2ZpbHtmaWxsIFNhdmVYIFNhdmVZIG1vdmV0
-b31OIC9lbGxpcHNley9lbmRhbmdsZSBYCi9zdGFydGFuZ2xlIFggL3lyYWQgWCAveHJhZCBY
-IC9zYXZlbWF0cml4IG1hdHJpeCBjdXJyZW50bWF0cml4IE4gVFIgeHJhZAp5cmFkIHNjYWxl
-IDAgMCAxIHN0YXJ0YW5nbGUgZW5kYW5nbGUgYXJjIHNhdmVtYXRyaXggc2V0bWF0cml4fU4g
-ZW5kCiUlRW5kUHJvY1NldAolJUJlZ2luUHJvY1NldDogY3JvcC5wcm8KVGVYRGljdCBiZWdp
-biAvY1ggMTggZGVmIC9DTXtnc2F2ZSBUUiAwIGNYIG5lZyBtb3ZldG8gMCBjWCBsaW5ldG8g
-c3Ryb2tlCmNYIG5lZyAwIG1vdmV0byBjWCAwIGxpbmV0byBzdHJva2UgZ3Jlc3RvcmV9ZGVm
-IGVuZCAvYm9wLWhvb2t7Y1ggZHVwIFRSCmdzYXZlIC4zIHNldGxpbmV3aWR0aCAwIDAgQ00g
-dnNpemUgY1ggMiBtdWwgc3ViIGR1cCBoc2l6ZSBjWCAyIG11bCBzdWIKZHVwIGlzbHN7NCAy
-IHJvbGx9aWYgMCBDTSBleGNoIENNIDAgZXhjaCBDTSBncmVzdG9yZSAwIGNYIC0yIG11bCBU
-UiBpc2xzCntjWCAtMiBtdWwgMCBUUn1pZn1kZWYKJSVFbmRQcm9jU2V0ClRlWERpY3QgYmVn
-aW4gQGRlZnNwZWNpYWwKCiAvYXJyb3cgeyBzYXZlIDQgMSByb2xsIDE0IGRpY3QgYmVnaW4g
-L3kgZXhjaCBkZWYgL3ggZXhjaCBkZWYgL0QgZXhjaApkZWYgY3VycmVudHBvaW50IC9iIGV4
-Y2ggZGVmIC9hIGV4Y2ggZGVmIC9keCB4IGEgc3ViIGRlZiAvZHkgeSBiIHN1YgpkZWYgL2Fy
-cm93bGVuIGR4IGR1cCBtdWwgZHkgZHVwIG11bCBhZGQgc3FydCBkZWYgL2FuZ2xlIGR5IGR4
-IGF0YW4KZGVmIDAgc2V0Z3JheSBhIGIgdHJhbnNsYXRlIGFuZ2xlIHJvdGF0ZSAveHAgYXJy
-b3dsZW4gZGVmIC9tIHhwIEQgc3ViCmRlZiAwLjUgc2V0bGluZXdpZHRoIFszIDFdIDAgc2V0
-ZGFzaCAwIDAgbW92ZXRvIG0gMCBsaW5ldG8gc3Ryb2tlIC9iYWNrCkQgOCBkaXYgbmVnIGRl
-ZiAvdXAgRCA0IGRpdiBkZWYgbSAwIG1vdmV0byBiYWNrIHVwIHJsaW5ldG8geHAgMCBsaW5l
-dG8KY2xvc2VwYXRoIGZpbGwgbSAwIG1vdmV0byBiYWNrIHVwIG5lZyBybGluZXRvIHhwIDAg
-bGluZXRvIGNsb3NlcGF0aApmaWxsIGVuZCByZXN0b3JlIH0gZGVmIC9kcmF3dHJpYW5nbGUg
-eyAtMTQ0IDcyIHJsaW5ldG8gMCAtMTQ0IHJsaW5ldG8KY2xvc2VwYXRoIGZpbGwgfSBkZWYg
-L2Nyb3BtYXJrIHsgMiBjb3B5IG1vdmV0byAwIC0xOCBybW92ZXRvIDAgMzYgcmxpbmV0bwpz
-dHJva2UgbW92ZXRvIC0xOCAwIHJtb3ZldG8gMzYgMCBybGluZXRvIHN0cm9rZSB9IGRlZiAv
-ZmlsbHBhZ2UgeyAuOQpzZXRncmF5IDAgMCBtb3ZldG8gMCA3OTIgcmxpbmV0byA2MTIgMCBy
-bGluZXRvIDAgLTc5MiBybGluZXRvIGZpbGwKMCBzZXRncmF5IC4yNSBzZXRsaW5ld2lkdGgg
-MTggMTggY3JvcG1hcmsgMTggNjg0IGNyb3BtYXJrIDU0OSA2ODQgY3JvcG1hcmsKNTQ5IDE3
-IGNyb3BtYXJrIH0gZGVmIC9zaG93cGFydCB7IDEwIC0yMiB0cmFuc2xhdGUgL1N0b25lU2Fu
-cy1TZW1pYm9sZEl0YWxpYwpmaW5kZm9udCAxNDAgc2NhbGVmb250IHNldGZvbnQgZHVwIHN0
-cmluZ3dpZHRoIHBvcCAvc3cgZXhjaCBkZWYgc3cKbmVnIC00NiBtb3ZldG8gMCBzZXRncmF5
-IGR1cCBzaG93IHN3IDQgYWRkIG5lZyAtNDIgbW92ZXRvIDAuNyBzZXRncmF5CnNob3cgc3cg
-bmVnIDAgdHJhbnNsYXRlIC9TdG9uZVNhbnMtU2VtaWJvbGRJdGFsaWMgZmluZGZvbnQgMzAg
-c2NhbGVmb250CnNldGZvbnQgZHVwIHN0cmluZ3dpZHRoIHBvcCAvc3cgZXhjaCBkZWYgc3cg
-bmVnIDAgbW92ZXRvIDAgc2V0Z3JheQpzaG93IHN3IDEwIGFkZCBuZWcgMCB0cmFuc2xhdGUg
-LTYwMCAxMCBtb3ZldG8gMTIgMCAxMCBhcnJvdyB9IGRlZgogCkBmZWRzcGVjaWFsIGVuZCBU
-ZVhEaWN0IGJlZ2luCjM3Mjk4MjUyIDQ2MTc4Nzg5IDEwMDAgNjAwIDYwMCAoYm9vay5kdmkp
-IEBzdGFydCAvRmEKMTMzWzMzIDMzIDMzIDMzIDMzIDMzIDMzIDMzIDMzIDMzIDMzIDMzIDMz
-IDMzIDMzIDMzIDMzCjMzIDMzIDMzIDMzIDMzIDMzIDMzIDMzIDMzIDFbMzMgMzMgMlszMyAz
-MyAzMyAzMyAzMyAzMwozMyAzMyAzMyAzMyAzMyAzMyAzMyAzMyAzMyAzMyAzMyAzMyAzMyAz
-MyAzMyAzMyAzMyAzMwozMyAzMyAzMyAzMyAxWzMzIDFbMzMgM1szMyAzMyAzMyAzMyAzMyAz
-MyAzMyAzMyAzMyAzMwozMyAzMyAzWzMzIDMzIDNbMzMgMzZbey44MiBFeHRlbmRGb250IFRl
-WEJhc2UxRW5jb2RpbmcgUmVFbmNvZGVGb250IH03Mwo2Ni42NjY2NjcgL1BQQ29kZSByZiAv
-RmIgMSAxNCBkZjwwMDAwMDFGRkMwMDAwMDAwMDAwMDFGRkZGQzAwMDAwMDAwMDBGRgpGRkZG
-ODAwMDAwMDAwMUZGMDA3RkMwMDAwMDAwMDdGMDAwMDdGMDAwMDAwMDFGODAwMDAwRkMwMDAw
-MDAzRjAwMDAwMDdFMDAKMDAwMDdDMDAwMDAwMUYwMDAwMDBGMDAwMDAwMDA3ODAwMDAxRTAw
-MDAwMDAwM0MwMDAwM0MwMDAwMDAwMDFFMDAwMDc4MDAwCjAwMDAwMEYwMDAwNzAwMDAwMDAw
-MDA3MDAwMEYwMDAwMDAwMDAwNzgwMDFFMDAwMDAwMDAwMDNDMDAxQzAwMDAwMDAwMDAxQwow
-MDNDMDAwMDAwMDAwMDFFMDAzODAwMDAwMDAwMDAwRTAwNzgwMDAwMDAwMDAwMEYwMDcwMDAw
-MDAwMDAwMDA3MDA3MDAwMDAKMDAwMDAwMDcwMEYwMDAwMDAwMDAwMDA3ODBFMDAwMDAwMDAw
-MDAwMzgwRTAwMDAwMDAwMDAwMDM4MEUwMDAwMDAwMDAwMDAzCjgwRTAwMDAwMDAwMDAwMDM4
-MEUwMDAwMDAwMDAwMDAzODBFMDAwMDAwMDAwMDAwMzgwRTAwMDAwMDAwMDAwMDM4MEUwMDAw
-MAowMDAwMDAwMzgwRTAwMDAwMDAwMDAwMDM4MEYwMDAwMDAwMDAwMDA3ODA3MDAwMDAwMDAw
-MDAwNzAwNzAwMDAwMDAwMDAwMDcKMDA3ODAwMDAwMDAwMDAwRjAwMzgwMDAwMDAwMDAwMEUw
-MDNDMDAwMDAwMDAwMDFFMDAxQzAwMDAwMDAwMDAxQzAwMUUwMDAwCjAwMDAwMDNDMDAwRjAw
-MDAwMDAwMDA3ODAwMDcwMDAwMDAwMDAwNzAwMDA3ODAwMDAwMDAwMEYwMDAwM0MwMDAwMDAw
-MDFFMAowMDAxRTAwMDAwMDAwM0MwMDAwMEYwMDAwMDAwMDc4MDAwMDA3QzAwMDAwMDFGMDAw
-MDAwM0YwMDAwMDA3RTAwMDAwMDFGODAKMDAwMEZDMDAwMDAwMDdGMDAwMDdGMDAwMDAwMDAx
-RkYwMDdGQzAwMDAwMDAwMEZGRkZGRjgwMDAwMDAwMDAxRkZGRkMwMDAwCjAwMDAwMDAxRkZD
-MDAwMDAwMDM5MzU3Q0E4NDI+MTMgRCBFIC9GYyAxNDBbMTM1IDZbMTM1CjNbMTM1IDNbMTM1
-IDJbMTM1IDk3W3suODIgRXh0ZW5kRm9udCBUZVhCYXNlMUVuY29kaW5nIFJlRW5jb2RlRm9u
-dCB9NQoyNzQuOTk5OTg4IC9QUENvZGUgcmYgL0ZkIDE0NFszNyAyWzM3IDdbMzcgMVszNyA5
-OFt7Ci44MiBFeHRlbmRGb250IFRlWEJhc2UxRW5jb2RpbmcgUmVFbmNvZGVGb250IH00IDc1
-LjAwMDAwMAovUFBDb2RlQm9sZCByZiAvRmUgMSAxMiBkZjwwMDAwM0ZDMDAwMDAwMDAwRkZG
-ODAwMDAwMDA3RTA3QzAwMDAwMDBGODAxRgowMDAwMDAzRjAwMUY4MDBDMDA3RTAwMEY4MDBD
-MDBGQzAwMDdDMDFDMDFGODAwMDdFMDE4MDNGMDAwMDdFMDE4MDdFMDAwMDMKRTAzODBGRTAw
-MDAzRjAzMDBGQzAwMDAzRjAzMDFGQzAwMDAzRjA3MDNGODAwMDAzRjA2MDNGODAwMDAzRjBF
-MDdGODAwMDAzCkYwQzA3RjAwMDAwM0YxQzA3RjAwMDAwM0YxODA3RjAwMDAwM0YzODBGRjAw
-MDAwM0YzMDBGRTAwMDAwM0Y3MDBGRTAwMDAwMwpGRTAwRkUwMDAwMDNGQzAwRkUwMDAwMDNG
-QzAwRkMwMDAwMDNGODAwRkMwMDAwMDNGMDAwRkMwMDAwMDNGMDAwRkMwMDAwMDMKRjAwMEZD
-MDAwMDAzRjAwMDdFMDAwMDA3RjAwMDdFMDAwMDBGRjAwMDNFMDAwMDFERjgxODNGMDAwMDc5
-RjgxODFGMDAwMEUxCkY4MzgwRjgwMDdDMEY4MzAwN0UwM0YwMDdDRjAwMUZGRjgwMDNGQzAw
-MDNGQzAwMDBGODAyRTI2N0RBNDM1PjExCkQgRSAvRmYgODJbMjggNTFbNDIgNDIgNjAgMVs0
-NiAyOCAzMiAzMiAxWzQyIDM3IDQ2IDFbMjMKMzcgMjMgMjMgMVs0MiAxWzMyIDQyIDM0IDM4
-IDM3IDExWzY1IDUxIDRbNjUgMls0NiA1WzQ2CjUxIDY1IDE3WzQyIDQyIDQ5W3sgVGVYQmFz
-ZTFFbmNvZGluZyBSZUVuY29kZUZvbnQgfTMwCjgzLjMzMzMzNyAvUGFsYXRpbm8tSXRhbGlj
-IHJmIC9GZyAxNDBbNjEgMls2MSA2MSA2MSA2MQo2MSA2MSAyWzYxIDJbNjEgNjEgNjEgMVs2
-MSA1NVs2MSA2MSA0MFt7Ci44MiBFeHRlbmRGb250IFRlWEJhc2UxRW5jb2RpbmcgUmVFbmNv
-ZGVGb250IH0xNCAxMjQuOTk5OTk3Ci9QUENvZGUgcmYgL0ZoIDEzNFs1MyAxWzUzIDUzIDUz
-IDUzIDUzIDUzIDFbNTMgNTMgNTMKNTMgNTMgNTMgMVs1MyA1MyA1MyA1MyA1MyA1MyA1MyAx
-WzUzIDFbNTMgMTFbNTMgNls1MwoyOVs1MyA0WzUzIDUzIDQwW3suODIgRXh0ZW5kRm9udCBU
-ZVhCYXNlMUVuY29kaW5nIFJlRW5jb2RlRm9udCB9MjcKMTA4LjMzMzMzMSAvUFBDb2RlIHJm
-IC9GaSAxMzRbMzcgMzcgM1szNyAzNyAzNyAxWzM3IDM3CjM3IDM3IDM3IDJbMzcgMzcgMzcg
-MzcgMzcgMzcgMzcgMzcgMzcgMVszNyAxNVszNyA4WzM3CjcwW3sgVGVYQmFzZTFFbmNvZGlu
-ZyBSZUVuY29kZUZvbnQgLjE2NyBTbGFudEZvbnQgLjgyIEV4dGVuZEZvbnQgfTIyCjc1LjAw
-MDAwMCAvUFBDb2RlIHJmIC9GaiAxMzRbNDMgNDMgNDMgNDMgNDMgNDMgNDMgNDMKMVs0MyA0
-MyA0MyA0MyA0MyAyWzQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDFbNDMgOFs0Mwo0MyAy
-WzQzIDJbNDMgNDMgNDMgNDMgMls0MyAyWzQzIDQzIDFbNDMgNDMgNDMgNDMgMTdbNDMKNls0
-MyAzOVt7IFRlWEJhc2UxRW5jb2RpbmcgUmVFbmNvZGVGb250IC4xNjcgU2xhbnRGb250IC44
-MiBFeHRlbmRGb250IH0KMzkgODcuNDk5OTk3IC9QUENvZGUgcmYgL0ZrIDEzNFs3NCA4MCAx
-MTggNzQgODYgNjIgNjIKNjIgODggODggODQgODggMTMyIDQzIDg0IDFbNDMgODggODggNTcg
-NzYgODggNjkgODkgNzkKN1s5MSA5OCAxNDUgOTYgOTYgODQgNzQgODkgMTAzIDg2IDEwMyA5
-OSAxMjkgNzQgMVs0NAo0NCAxMDEgOTkgNjkgNzQgMTAxIDg5IDg5IDk5IDZbNDIgODQgODQg
-ODQgODQgODQgODQgODQKODQgODQgODQgNzYgNDIgNDYgNDIgMls1OSA1OSAzMiAzOVt7IFRl
-WEJhc2UxRW5jb2RpbmcgUmVFbmNvZGVGb250IH02NgoxMzMuMzMzMzM0IC9TdG9uZVNhbnMt
-Qm9sZCByZiAvRmwgODJbMzAgMjRbNDYgNDYgMjVbNTEKNDcgNzYgNTIgNTUgMzAgMzkgMzYg
-MVs1NSA1MCA1MyA4MSAyNyA1MSAxWzI3IDUzIDUxIDMwCjQ0IDU2IDQxIDUxIDQ2IDExWzcx
-IDRbNTUgM1s1NiAyWzMxIDI2WzIzIDFbMjMgMlszMCAzMAozN1s1NSAyW3sgVGVYQmFzZTFF
-bmNvZGluZyBSZUVuY29kZUZvbnQgfTM1IDkxLjY2NjY2NgovUGFsYXRpbm8tUm9tYW4gcmYg
-L0ZtIDgyWzMyIDNbNzEgNDZbNDggNTMgNDggODAgNTMgNTgKMzIgNDIgMzcgNTggNTggNTMg
-NTggODUgMzIgNTggMzIgMzIgNTggNTMgMzcgNDggNTggNDIKNTggNDggOFs2NCA5NSA3NCA3
-NCA2NCA1OCA2OSA4MCA1OCA4MCA4MCA5NSA1OCA3NCAzNwozNyA4MCA4MCA1MyA1OCA4MCA2
-OSA2NCA3NCA2WzI0IDQ4IDQ4IDNbNDggMls0OCAxWzI4CjI0IDFbMjQgNFsyNyAzNls1OCAy
-W3sgVGVYQmFzZTFFbmNvZGluZyBSZUVuY29kZUZvbnQgfTYyCjk1LjgzMzMzNCAvUGFsYXRp
-bm8tQm9sZCByZiAvRm4gMTM0WzEzOCAxNDkgMjIyIDEzOSAxNjAKMTE1IDExNSAxMTUgMVsx
-NjYgMTU4IDE2NSAyNDcgODAgMTU3IDFbODAgMTY1IDE2NiAxMDYKMTQyIDE2NiAxMjkgMTY2
-IDE0NyAxMFsxODAgMTgwIDE1NyAxMzkgMTY2IDFbMTYxIDE5NAoxODUgMjQxIDEzOCAxWzgy
-IDgyIDE4OSAxWzEyOSAxMzggMTkwIDE2NiAxWzE4NSAxOVs4Nwo0NVt7IFRlWEJhc2UxRW5j
-b2RpbmcgUmVFbmNvZGVGb250IH00MiAyNDkuOTk5OTk0IC9TdG9uZVNhbnMtQm9sZApyZiAv
-Rm8gMTM0WzE4MSAyWzE4MSAxWzEzNiAxNDkgMTQwIDFbMjE4IDIxMSAyMTUgMzE5Cjk0IDJb
-OTQgMVsyMTggMVsxOTEgMjE4IDE2NyAyMTcgMTg4IDEyWzIwNyAxOTQgMlsyMDcKM1sxODEg
-NFsyNjYgMVsxODkgMjYzIDJbMjMzIDY1W3sgVGVYQmFzZTFFbmNvZGluZyBSZUVuY29kZUZv
-bnQgfTI1CjM0OS45OTk5ODggL1N0b25lU2Fucy1TZW1pYm9sZCByZiAvRnAgMTQxWzI1IDJb
-MzcgMzgKNTUgM1sxNyAxWzM4IDFbMzEgMTAxW3sgVGVYQmFzZTFFbmNvZGluZyBSZUVuY29k
-ZUZvbnQgfTcKNjYuNjY2NjY3IC9TdG9uZVNhbnMtU2VtaWJvbGRJdGFsaWMgcmYgL0ZxIDEy
-OVszNyAzNwozNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAz
-NyAzNyAzNwozNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAz
-NyAzNyAzNwozNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAz
-NyAzNyAzNwozNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAz
-NyAzNyAzNwozNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAzNyAz
-NyAzNyAzNwozNyAzNyAzM1t7LjgyIEV4dGVuZEZvbnQgVGVYQmFzZTFFbmNvZGluZyBSZUVu
-Y29kZUZvbnQgfTk0Cjc1LjAwMDAwMCAvUFBDb2RlIHJmIC9GciAxMjlbNDMgMVs0MyAxWzQz
-IDQzIDQzIDQzIDQzCjQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQz
-IDQzIDQzIDQzIDQzCjQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQz
-IDQzIDQzIDQzIDQzCjQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQz
-IDQzIDQzIDQzIDQzCjQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQz
-IDQzIDQzIDQzIDQzCjQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDQzIDMz
-W3sKLjgyIEV4dGVuZEZvbnQgVGVYQmFzZTFFbmNvZGluZyBSZUVuY29kZUZvbnQgfTkyIDg3
-LjQ5OTk5NwovUFBDb2RlIHJmIC9GcyA4MlsyOCA1MFs0MiA0NiA0MiA2OSA0NiA1MSAyOCAz
-NyAzMiA1MQo1MSA0NiA1MSA3NCAyOCA1MSAyOCAyOCA1MSA0NiAzMiA0MiA1MSAzNyA1MSA0
-MiA3WzU1CjU1IDgzIDY1IDY1IDU1IDUxIDYwIDY5IDUxIDY5IDY5IDgzIDUxIDY1IDMyIDMy
-IDY5IDY5CjQ2IDUxIDY5IDYwIDU1IDY1IDFbMzcgNFsyMSA0MiA0MiA0MiA0MiA0MiA0MiA0
-MiA0MiA0Mgo0MiAyNSAyMSAxWzIxIDJbMjggMjggMjMgMzZbNTEgMlt7IFRlWEJhc2UxRW5j
-b2RpbmcgUmVFbmNvZGVGb250IH03MQo4My4zMzMzMzcgL1BhbGF0aW5vLUJvbGQgcmYgL0Z0
-IDEzNFs1MyA1NyA4NSA1MyA2MSA0NAo0NCA0NCAxWzY0IDYxIDYzIDk1IDMxIDYwIDFbMzEg
-NjMgNjQgNDEgNTUgNjQgNDkgNjQgNTcKMTBbNjkgNjkgNjAgNTMgNjQgMVs2MiA3NCA3MSA5
-MyA1MyAxWzMyIDMyIDcyIDcxIDUwIDUzCjczIDY0IDY0IDcxIDdbNjAgNjAgNjAgNjAgNjAg
-NjAgNjAgNjAgNjAgNjAgNTUgMVszMyA0NVt7CiBUZVhCYXNlMUVuY29kaW5nIFJlRW5jb2Rl
-Rm9udCB9NTUgOTUuODMzMzM0IC9TdG9uZVNhbnMtQm9sZApyZiAvRnUgMTMzWzYyIDY1IDcw
-IDEwNCA2NSA3NSA1NCA1NCA1NCA3NyA3NyA3NCA3NyAxMTUKMzcgNzMgMVszNyA3NyA3NyA1
-MCA2NiA3NyA2MCA3OCA2OSA3WzgwIDg2IDEyNyA4NCA4NAo3MyA2NSA3OCAxWzc1IDkwIDg2
-IDExMyA2NSA4MiAzOCAzOCA4OCA4NyA2MCA2NSA4OCA3OAo3OCA4NiA2WzM3IDczIDczIDcz
-IDczIDczIDczIDczIDczIDczIDczIDY3IDM3IDQxIDM3CjRbMjggMzlbeyBUZVhCYXNlMUVu
-Y29kaW5nIFJlRW5jb2RlRm9udCB9NjUgMTE2LjY2NjY2OQovU3RvbmVTYW5zLUJvbGQgcmYg
-L0Z2IDEzNFs0MSA0MyA2NSA0MSA0NyAyOSAzMiAyOSA1MAo1MCA0OCA0OSA3NCAyMCA0MCAx
-WzIwIDQ5IDQ5IDI1IDQyIDQ5IDQwIDQ5IDQyIDhbNTQgNzcKNDkgNTcgNDYgNDMgNDYgNjYg
-NDUgNjYgNjUgNzcgNDAgNDkgMjMgMjIgNTggNjEgNDAgNDEKNjEgNTcgNDggNTEgNlsyNCA0
-OCA0OCA0OCA0OCA0OCA0OCA0OCA0OCA0OCA0OCAzMiAyNAoyOCAyNCAyWzI5IDI5IDE3IDM5
-W3sgVGVYQmFzZTFFbmNvZGluZyBSZUVuY29kZUZvbnQgfTY2CjgzLjMzMzMzNyAvU3RvbmVT
-YW5zIHJmIC9GdyA4MlsyOCAyMFsyOCA4MyA0MiAxWzQyIDQyCjIyWzUwIDFbNDIgNDYgNDMg
-NjkgNDcgNTAgMjcgMzUgMzMgNDYgNTAgNDUgNDggNzMgMjQKNDYgMTkgMjQgNDggNDYgMjgg
-NDAgNTEgMzcgNDYgNDIgMjMgNDIgMVsyOCAxWzI4IDU1IDU1CjU1IDgzIDYwIDY1IDUxIDQ0
-IDU1IDY1IDUwIDY1IDY5IDc5IDUxIDYwIDI4IDI4IDY5IDYzCjQ2IDUxIDY0IDU5IDUxIDY1
-IDVbMjEgMjEgNDIgNDIgNDIgNDIgNDIgNDIgNDIgNDIgNDIKNDIgNTAgMjEgMVsyMSA1MCAz
-MiAyOCAyOCAyMyA1WzIzIDI5WzUwIDUwIDJbewogVGVYQmFzZTFFbmNvZGluZyBSZUVuY29k
-ZUZvbnQgfTg2IDgzLjMzMzMzNyAvUGFsYXRpbm8tUm9tYW4KcmYgL0Z4IDE3M1szMyAyNFsy
-NSAyNSAyNSAyNSAyNSAyNSAyNSAyNSAyNSAyNSA0OFt7CiBUZVhCYXNlMUVuY29kaW5nIFJl
-RW5jb2RlRm9udCB9MTEgNTAuMDAwMDAxIC9QYWxhdGluby1Sb21hbgpyZiAvRnkgODJbMzIg
-NTBbNDIgNDggNDggNjkgNDggNTMgMzIgMzcgMzcgNDQgNDggNDIgNTMKNzQgMjcgNDIgMjcg
-MjcgNDggNDggMjcgMzcgNDggMzkgNDQgNDIgOFs2OSA5MCA2OSA3NAo1OCA1MyA2NCA3NCA1
-OCA3NCA3NCA5MCA1MyA2NCAxWzMyIDc0IDY5IDUzIDU4IDc0IDY0CjU4IDY5IDZbMjQgM1s0
-OCAxWzQ4IDFbNDggNDggMVsyOCAyNCAxWzI0IDU4IDFbMzIgMzIKMjcgNzQgMzVbNTAgMlt7
-IFRlWEJhc2UxRW5jb2RpbmcgUmVFbmNvZGVGb250IH02NCA5NS44MzMzMzQKL1BhbGF0aW5v
-LUl0YWxpYyByZiAvRnogMTM1WzUwIDFbNDcgMTJbMjMgMTA1W3sKIFRlWEJhc2UxRW5jb2Rp
-bmcgUmVFbmNvZGVGb250IH0zIDk1LjgzMzMzNCAvU3RvbmVTYW5zCnJmIC9GQSA4MlszMiAy
-MFszMiA5NSA0OCA1OCA0OCA0OCAyNFs0OCA1MyA0OSA4MCA1NCA1OAozMSA0MCAzOCA1MyA1
-NyA1MiA1NiA4NCAyOCA1MyAyMiAyOCA1NiA1MyAzMiA0NiA1OCA0Mgo1MyA0OCAxWzQ4IDFb
-MzIgNTggMzIgNjQgNjQgNjQgOTUgNjkgNzQgNTkgNTAgNjQgNzUgNTgKNzUgNzkgOTAgNTgg
-NjkgMzIgMzIgNzkgNzMgNTMgNTggNzQgNjggNTggNzQgNzEgNDIgM1syNAoyNCA0OCA0OCA0
-OCA0OCA0OCA0OCA0OCA0OCA0OCA0OCA1OCAyNCAxWzI0IDFbMzcgMzIgMzIKMjcgNzQgNFsy
-NyAyOVs1OCA1OCAyW3sgVGVYQmFzZTFFbmNvZGluZyBSZUVuY29kZUZvbnQgfTg4Cjk1Ljgz
-MzMzNCAvUGFsYXRpbm8tUm9tYW4gcmYgL0ZCIDEzNFsxNDkgMTQ5IDJbMTY2IDEwMAoxMTYg
-MTE2IDFbMTQ5IDEzMyAxNjYgMVs4MyAyWzgzIDE0OSAxNDkgODMgMTE2IDE0OSAxMjIKMTM4
-IDEzMyAxMVsyMzMgMTgzIDE2NiAyWzE4MyAyMzMgMjMzIDFbMTY2IDJbMTAwIDFbMjE2CjJb
-MjMzIDE5OSAxODMgMjE2IDE3Wzg4IDQ3W3sgVGVYQmFzZTFFbmNvZGluZyBSZUVuY29kZUZv
-bnQgfTMzCjMwMC4wMDAwMDAgL1BhbGF0aW5vLUl0YWxpYyByZiAvRkMgMTQxWzQyIDJbNDgg
-MlszMCAyWzMwCjNbNDIgM1s0OCAxM1s2MCAxMVs3OCAyWzg0IDIxWzI3IDQ2W3sgVGVYQmFz
-ZTFFbmNvZGluZyBSZUVuY29kZUZvbnQgfTEwCjEwOC4zMzMzMzEgL1BhbGF0aW5vLUl0YWxp
-YyByZiAvRkQgODJbMzYgMjFbMTA4IDI5WzYwCjU2IDkwIDYxIDY1IDM1IDQ2IDQzIDFbNjUg
-NTkgNjMgOTUgMzEgNjAgMVszMSA2MyA2MCAzNgo1MiA2NiA0OCA2MCA1NCAxOVsxMDIgMlsz
-NiAzNiAxWzgyIDFbNjYgMjJbMjcgMVsyNyA0NFt7CiAuMTY3IFNsYW50Rm9udCBUZVhCYXNl
-MUVuY29kaW5nIFJlRW5jb2RlRm9udCB9MzIgMTA4LjMzMzMzMQovUGFsYXRpbm8tUm9tYW4g
-cmYgL0ZFIDE3MVsxMTIgODRbeyBUZVhCYXNlMUVuY29kaW5nIFJlRW5jb2RlRm9udCB9MQox
-ODMuMzMzMzMxIC9QYWxhdGluby1JdGFsaWMgcmYgL0ZGIDEzOVsyNCAzMiAzMCAxWzQ1CjFb
-NDMgMVsyMiAyWzIyIDFbNDIgMzJbNDIgNFs1OCA3WzM3IDM3IDZbMzcgNFsxOSA0NFt7CiAu
-MTY3IFNsYW50Rm9udCBUZVhCYXNlMUVuY29kaW5nIFJlRW5jb2RlRm9udCB9MTQgNzUuMDAw
-MDAwCi9QYWxhdGluby1Sb21hbiByZiAvRkcgMSAxNCBkZjwwMDAwMDAwM0ZGQzAwMDAwMDAw
-MDAwMDAzRkZGRkMwMDAwMDAwMDAwCjAxRkZGRkZGODAwMDAwMDAwMDA3RkZGRkZGRTAwMDAw
-MDAwMDFGRkUwMDdGRjgwMDAwMDAwMDdGRTAwMDA3RkUwMDAwMDAwMApGRjAwMDAwMEZGMDAw
-MDAwMDNGQzAwMDAwMDNGQzAwMDAwMDdGMDAwMDAwMDBGRTAwMDAwMEZDMDAwMDAwMDAzRjAw
-MDAwMUYKODAwMDAwMDAwMUY4MDAwMDNGMDAwMDAwMDAwMEZDMDAwMDdFMDAwMDAwMDAwMDdF
-MDAwMEZDMDAwMDAwMDAwMDNGMDAwMEY4CjAwMDAwMDAwMDAxRjAwMDFGMDAwMDAwMDAwMDAw
-RjgwMDNGMDAwMDAwMDAwMDAwRkMwMDNFMDAwMDAwMDAwMDAwN0MwMDdDMAowMDAwMDAwMDAw
-MDNFMDBGQzAwMDAwMDAwMDAwMDNGMDBGODAwMDAwMDAwMDAwMDFGMDFGMDAwMDAwMDAwMDAw
-MDBGODFGMDAKMDAwMDAwMDAwMDAwRjgxRTAwMDAwMDAwMDAwMDAwNzgzRTAwMDAwMDAwMDAw
-MDAwN0MzRTAwMDAwMDAwMDAwMDAwN0MzQzAwCjAwMDAwMDAwMDAwMDNDN0MwMDAwMDAwMDAw
-MDAwMDNFN0MwMDAwMDAwMDAwMDAwMDNFNzgwMDAwMDAwMDAwMDAwMDFFNzgwMAowMDAwMDAw
-MDAwMDAxRTc4MDAwMDAwMDAwMDAwMDAxRUY4MDAwMDAwMDAwMDAwMDAxRkY4MDAwMDAwMDAw
-MDAwMDAxRkYwMDAKMDAwMDAwMDAwMDAwMEZGMDAwMDAwMDAwMDAwMDAwMEZGMDAwMDAwMDAw
-MDAwMDAwMEZGMDAwMDAwMDAwMDAwMDAwMEZGMDAwCjAwMDAwMDAwMDAwMDBGRjAwMDAwMDAw
-MDAwMDAwMDBGRjAwMDAwMDAwMDAwMDAwMDBGRjAwMDAwMDAwMDAwMDAwMDBGRjAwMAowMDAw
-MDAwMDAwMDAwRkYwMDAwMDAwMDAwMDAwMDAwRkY4MDAwMDAwMDAwMDAwMDAxRkY4MDAwMDAw
-MDAwMDAwMDAxRjc4MDAKMDAwMDAwMDAwMDAwMUU3ODAwMDAwMDAwMDAwMDAwMUU3ODAwMDAw
-MDAwMDAwMDAwMUU3QzAwMDAwMDAwMDAwMDAwM0U3QzAwCjAwMDAwMDAwMDAwMDNFM0MwMDAw
-MDAwMDAwMDAwMDNDM0UwMDAwMDAwMDAwMDAwMDdDM0UwMDAwMDAwMDAwMDAwMDdDMUUwMAow
-MDAwMDAwMDAwMDA3ODFGMDAwMDAwMDAwMDAwMDBGODFGMDAwMDAwMDAwMDAwMDBGODBGODAw
-MDAwMDAwMDAwMDFGMDBGQzAKMDAwMDAwMDAwMDAzRjAwN0MwMDAwMDAwMDAwMDAzRTAwM0Uw
-MDAwMDAwMDAwMDA3QzAwM0YwMDAwMDAwMDAwMDBGQzAwMUYwCjAwMDAwMDAwMDAwRjgwMDBG
-ODAwMDAwMDAwMDAxRjAwMDBGQzAwMDAwMDAwMDAzRjAwMDA3RTAwMDAwMDAwMDA3RTAwMDAz
-RgowMDAwMDAwMDAwRkMwMDAwMUY4MDAwMDAwMDAxRjgwMDAwMEZDMDAwMDAwMDAzRjAwMDAw
-MDdGMDAwMDAwMDBGRTAwMDAwMDMKRkMwMDAwMDAzRkMwMDAwMDAwRkYwMDAwMDBGRjAwMDAw
-MDAwN0ZFMDAwMDdGRTAwMDAwMDAwMUZGRTAwN0ZGODAwMDAwMDAwCjA3RkZGRkZGRTAwMDAw
-MDAwMDAxRkZGRkZGODAwMDAwMDAwMDAwM0ZGRkZDMDAwMDAwMDAwMDAwMDNGRkMwMDAwMDAw
-NDg0RQo3QkJCNTM+MTMgRCBFIC9GSCA4MlsyNSA1MVszNyAzWzQyIDI1IDI5IDI5IDJbMzMg
-NDIgMVsyMQoyWzIxIDFbMzcgMjEgMjkgMVszMCAzNSAzMyAxNls0NiAzWzQyIDdbNTggNTAg
-NjdbewogVGVYQmFzZTFFbmNvZGluZyBSZUVuY29kZUZvbnQgfTIwIDc1LjAwMDAwMCAvUGFs
-YXRpbm8tSXRhbGljCnJmIC9GSSA4MlsyNSAyMVs3NSAzNyAyN1szNyA0MiAzOSA2MiA0MiA0
-NSAyNCAzMiAzMCA0Mgo0NSA0MSA0MyA2NiAyMiA0MiAxNyAyMiA0MyA0MiAyNSAzNiA0NiAz
-MyA0MSAzNyA2WzUwCjUwIDUwIDc1IDU0IDU4IDQ2IDM5IDUwIDU5IDQ1IDU5IDYyIDcxIDQ2
-IDU0IDI1IDI1IDYyCjU3IDQyIDQ2IDU4IDUzIDQ2IDU4IDZbMTkgMzcgMzcgMzcgMzcgMzcg
-MzcgMzcgMzcgMzcKMzcgNDUgMTkgMVsxOSA0WzIxIDU4IDJbMzcgMVsyMSAyOVs0NSA0NSAy
-W3sKIFRlWEJhc2UxRW5jb2RpbmcgUmVFbmNvZGVGb250IH03NSA3NS4wMDAwMDAgL1BhbGF0
-aW5vLVJvbWFuCnJmIC9GSiAxNDdbMjYgMTA4W3t9MSAzMy4zMzMzMzQgL1phcGZEaW5nYmF0
-cyByZiAvRksKMTM0WzM3IDM5IDU4IDFbNDMgMjYgMjkgMjYgMls0MyA0NCA2NyAxOCAzNiAx
-WzE4IDQ0IDQ0CjIyIDM4IDQ0IDM2IDFbMzcgMTJbNDIgMzkgNDIgMVs0MCA1OSAxWzY5IDRb
-NTMgMlszNyA1NQo1MSA0MyA0NiAyMFsyMSA0NFt7IFRlWEJhc2UxRW5jb2RpbmcgUmVFbmNv
-ZGVGb250IH0zMwo3NS4wMDAwMDAgL1N0b25lU2FucyByZiAvRkwgMTM0WzQ2IDUwIDJbNTMg
-MzggMzggMzggMVs1NQo1MyA1NSA4MiAyNyAyWzI3IDU1IDU1IDM1IDQ3IDU1IDQzIDU1IDQ5
-IDdbNTcgMVs5MSAyWzUyCjQ2IDJbNTQgNjUgNjIgMVs0NiAyWzI3IDFbNjIgNDMgNDYgNjMg
-NTUgNTUgNjIgN1s1MiA1Mgo1MiA1MiA1MiA1MiA1MiA1MiA1MiA1MiAxWzI2IDI5IDI2IDQ0
-W3sgVGVYQmFzZTFFbmNvZGluZyBSZUVuY29kZUZvbnQgfQo0OSA4My4zMzMzMzcgL1N0b25l
-U2Fucy1Cb2xkIHJmIC9GTSAxNDBbNjMgNTkgMls4MiA4NwoxWzQzIDgzIDFbNDMgODcgMls3
-MiAxWzY2IDFbNzUgOVsxNDkgMls5MiA2WzE0MSAxWzEwOAo1MCA0WzkxIDIyWzM3IDQ2W3sg
-VGVYQmFzZTFFbmNvZGluZyBSZUVuY29kZUZvbnQgfTE4CjE1MC4wMDAwMDAgL1BhbGF0aW5v
-LVJvbWFuIHJmIC9GTiAxMzVbMTc0IDFbMTk0IDIxMyAxMTYKM1syMTMgMTk0IDIxMyAzMTAg
-MTE2IDJbMTE2IDNbMTc0IDFbMTU1IDFbMTc0IDIwWzIxMwo3WzI5MCAyWzI3MSA2NVt7IFRl
-WEJhc2UxRW5jb2RpbmcgUmVFbmNvZGVGb250IH0xNiAzNDkuOTk5OTg4Ci9QYWxhdGluby1C
-b2xkIHJmIC9GTyAxMzlbODkgODkgMTE1W3t9MiAxMDAuMDAwMDAzIC9aYXBmRGluZ2JhdHMK
-cmYgL0ZQIDEzNVsxMzMgMVsxNDggMTYyIDg4IDNbMTYyIDE0OCAxNjIgMjM2IDg4IDJbODgK
-M1sxMzMgMVsxMTggMVsxMzMgMjBbMTYyIDdbMjIxIDJbMjA3IDY1W3sKIFRlWEJhc2UxRW5j
-b2RpbmcgUmVFbmNvZGVGb250IH0xNiAyNjYuNjY2NjY5IC9QYWxhdGluby1Cb2xkCnJmIC9G
-USAxMzlbNjcgNjcgMTE1W3t9MiA3NS4wMDAwMDAgL1phcGZEaW5nYmF0cyByZiBlbmQKJSVF
-bmRQcm9sb2cKJSVCZWdpblNldHVwCiUlRmVhdHVyZTogKlJlc29sdXRpb24gNjAwZHBpClRl
-WERpY3QgYmVnaW4KJSVQYXBlclNpemU6IExldHRlcgoKJSVFbmRTZXR1cAolJVBhZ2U6IDQ0
-NSAxCjQ0NSA0NjggYm9wIDAgMCBhIEBiZWdpbnNwZWNpYWwgQHNldHNwZWNpYWwKIGdzYXZl
-IC41MCBzZXRncmF5IG5ld3BhdGggMjc4IDEwIG1vdmV0byAwIDEwMCBybGluZXRvIDEzMiAw
-IHJsaW5ldG8KMCAtMTAwIHJsaW5ldG8gLTEzMiAwIHJsaW5ldG8gY2xvc2VwYXRoIGZpbGwg
-MSBzZXRncmF5IC9TdG9uZVNhbnMtQm9sZApmaW5kZm9udCAxMiBzY2FsZWZvbnQgc2V0Zm9u
-dCAyOTYgMTkgbW92ZXRvIDMgMCAoQ0hBUFRFUiAyNCkgYXNob3cKZ3Jlc3RvcmUKIApAZW5k
-c3BlY2lhbAoyOTkgMzU1IGEgRm4oUGFyc2luZyk4NCBiKENvbW1hbmQtKTI5OSA2NTQgeShM
-aW5lKWcoT3B0aW9ucykyOTkKMTU1NyB5IEZtKEZyb20pMjEgYih0aGUpZihmb3J0aGNvbWlu
-ZylpKGJvb2spZihlbnRpdGxlZClmKExpbnV4KWgKKEFwcGxpY2F0aW9uKWcoRGV2ZWxvcG1l
-bnQpZihieSkyOTkgMTY2OSB5KE1pY2hhZWwpMzUKYihLLiloKEpvaG5zb24paChhbmQpZShF
-cmlrKWgoVylsKC4pZyhUKS0xMSBiKHJvYW4sKTM5CmIoY29weXJpZ2h0KWQoXDI1MSlnKDE5
-OTgpZShieSlpKEFkZGlzb24pMjk5IDE3ODEgeShXKS03CmIoZXNsZXkpMzggYihMb25nbWFu
-LCk0MyBiKEluYy4sKWYodG8pZChiZSlmKHB1Ymxpc2hlZClpKGluKWUoQXByaWwsKWsKKDE5
-OTguKTc3IGIoQWxsKTM4IGIocmlnaHRzKWgocmVcMjU1KTI5OSAxODkzIHkoc2VydmVkLilj
-KFRoaXMpMjQKYihtYXRlcmlhbCllKGlzKWkobWFkZSlnKGF2YWlsYWJsZSlmKHdpdGgpZyh0
-aGUpaChwZXJtaXNzaW9uKWgob2YpZgoodGhlKWYocHViXDI1NSkyOTkgMjAwNSB5KGxpc2hl
-ciktNSBiKC4pMzQgYihUaGUpMjEgYihwdWJsaXNoZXIpNQpiKCcpLTUgYihzKTIzIGIocGVy
-bWlzc2lvbilnKGlzKWcocmVxdWlyZWQpZihmb3IpaChyZXByb2R1Y3Rpb24sKWcKKHN0b3Jh
-Z2UsKTI5OSAyMTE3IHkob3IpaCh0cmFuc21pdHRhbClmKG9mKWgodGhpcylnKG1hdGVyaWFs
-LikyOTkKMjMyOSB5KEZvcilnKG1vcmUpZyhpbmZvcm1hdGlvbiwpZyhzZWUpZihodHRwOi8p
-LTE0IGIoL3d3dyktOQpiKC5hd2wuY29tL2NzZW5nL2Jvb2tzL2xhZC8uKTI5OSAyNTQxIHkg
-RkEoTW9zdCk0MSBiKExpbnV4KWUocHIpbgoob2dyYW1zKWgoYWxsb3cpZih0aGUpZyh1c2Vy
-KWcodG8paChzcGVjaWZ5KWgoY29tbWFuZFwyNTVsaW5lKWUKKG9wdGlvbnMuKTI5OSAyNjUz
-IHkoU3VjaCkyMyBiKG9wdGlvbnMpaChwZXJmb3JtKWcoYSlmKHdpZGUpZyh2YXJpZXR5KWcK
-KG9mKWcoZnVuY3Rpb25zKWcoYnV0KWcoYXIpbihlKWcoZmFpcmx5KWYodW5pZm9ybSloKGlu
-KTI5OQoyNzY1IHkodGhlaXIpMzEgYihzeW50YXguKTYwIGIgRm0oU2hvcnQpMzMgYihvcHRp
-b25zKWcKRkEoY29uc2lzdClnKG9mKWYoYSlnIEZyKC0paCBGQShjaGFyYWN0ZXIpZShmb2xs
-b3dlZCloKGJ5KWcoYSlnKHNpbmdsZSkKMjk5IDI4NzcgeShhbHBoYW51bWVyaWMpMjUgYihj
-aGFyYWN0ZXIpLTcgYiguKTQzIGIgRm0oTG9uZykyOApiKG9wdGlvbnMpcCBGQSgsKWcoY29t
-bW9uKWcoaW4pZShHTlUpaCh1dGlsaXRpZXMsKWcoY29uc2lzdCkyOTkKMjk4OSB5KG9mKWYo
-dHdvKWcgRnIoLSlnIEZBKGNoYXJhY3RlcnMpZyhmb2xsb3dlZClnKGJ5KWcoYSlnKHN0cmlu
-ZylnCihtYWRlKWcodXApZyhvZilnKGxldHRlcnMsKWgobnVtYmVycywpZihhbmQpMjk5IDMx
-MDEKeShoeXBoZW5zLikzNCBiKEVpdGhlcikyNCBiKHR5cGUpZyhvZilnKG9wdGlvbilnKG1h
-eSloKGJlKWUoZm9sbG93ZWQpaAooYnkpZyhhbilmKGFyKW4oZ3VtZW50LikzNCBiKEEpMjQg
-YihzcGFjZSkyOTkgMzIxMyB5KHNlcGFyYXRlcykxOQpiKGEpZihzaG9ydCloKG9wdGlvbilm
-KGZyKW4ob20paChpdHMpZyhhciluKGd1bWVudHM7KWgoZWl0aGVyKWQoYSlpCihzcGFjZSln
-KG9yKWcoYW4pZiBGcig9KWcgRkEoc2VwYXJhdGVzKTI5OSAzMzI1IHkoYSkyMwpiKGxvbmcp
-aChvcHRpb24pZyhmciluKG9tKWcoYW4pZihhciluKGd1bWVudC4pMjk5IDM1MzcKeShUaGVy
-KW4oZSljKGFyKW4oZSloKG1hbnkpZyh3YXlzKWcob2YpaChwYXJzaW5nKWYoY29tbWFuZFwy
-NTVsaW5lKWcKKG9wdGlvbnMuKTM0IGIoVGhlKTE5IGIobW9zdClqKHBvcHVsYXIpMjk5IDM2
-NDkgeShtZXRob2QpayhpcylnCihwYXJzaW5nKWcodGhlKWcgRnIoYXJndilmIEZBKGFycmF5
-KWcoYnkpaChoYW5kLik0MCBiKFRoZSkyNQpiIEZyKGdldG9wdFwoXCkpZyBGQShhbmQpaCBG
-cihnZXRvcHRfbG9uZ1woXCkpMjk5IDM3NjEKeSBGQShsaWJyYXJ5KTQwIGIoZnVuY3Rpb25z
-KWgocHIpbihvdmlkZSlnKHNvbWUpaChhc3Npc3RhbmNlKWcoZm9yKWYKKG9wdGlvbiloKHBh
-cnNpbmcuKTg2IGIgRnIoZ2V0b3B0XChcKSkyOTkgMzg3MyB5IEZBKGlzKTM4CmIocHIpbihv
-dmlkZWQpaChieSlmKG1hbnkpZihVbml4KWgoaW1wbGVtZW50YXRpb25zLClqKGJ1dClkKGl0
-KWYKKHN1cHBvcnRzKWoob25seSlkKHNob3J0KTI5OSAzOTg1IHkob3B0aW9ucy4pZChUaGUp
-MjIKYiBGcihnZXRvcHRfbG9uZ1woXCkpZyBGQShmdW5jdGlvbilnKGlzKWgoYXZhaWxhYmxl
-KWUob24paChMaW51eCloKGFuZCkKZihhbGxvd3MpaChhdXRvXDI1NSkyOTkgNDA5NyB5KG1h
-dGVkKWgocGFyc2luZylnKG9mKWYoYm90aCloKHNob3J0KWcKKGFuZClmKGxvbmcpaChvcHRp
-b25zLikyOTkgNDMwOSB5KEEpMzMgYihsaWJyYXJ5KWYoY2FsbGVkKWgocG9wdCloCihleGlz
-dHMpZyhzcGVjaVwwMDJjYWxseSlmKGZvcilnKG9wdGlvbilnKHBhcnNpbmcuKTYyCmIoSXQp
-MzQgYihpbmNsdWRlcyllKGEpMjk5IDQ0MjEgeShudW1iZXIpMjIgYihvZilpKGFkdmFudGFn
-ZXMpZyhvdmVyKWYKKHRoZSlnIEZyKGdldG9wdFwoXCkpZyBGQShmdW5jdGlvbnMuKTMyMzIg
-NDY5OSB5IEZ0KDQ0NSlwCmVvcAolJVBhZ2U6IDQ0NiAyCjQ0NiA0NjkgYm9wIC0xODcgLTEx
-NiBhIEZ0KDQ0NikxMTggYiBGTChDaGFwdGVyKTI5IGIoMjQpODMKYiBGdihQYXJzaW5nKTIz
-IGIoQ29tbWFuZC1MaW5lKWYoT3B0aW9ucylwIC0xODcgLTc2IDM0MTMKNCB2IDEyOCA4MyBh
-IEZBKFwyMjUpMTAwIGIoSXQpMzMgYihkb2VzKWgobm90KWYobWFrZSloKHVzZSlmKG9mKWcK
-KGdsb2JhbClnKHZhcmlhYmxlcywpaCh3aGljaCllKGFsbG93cyloKGl0KWcodG8paChiZSlm
-KHVzZWQpMjg2CjE5NSB5KHdoZW4pMjIgYihtdWx0aXBsZSloKHBhc3NlcylqKGFyKW4oZSlk
-KG5lZWRlZClnKHRvKWgocGFyc2UpZwpGcihhcmd2KXAgRkEoLikxMjggNDA3IHkoXDIyNSkx
-MDAgYihJdCkyMiBiKGNhbiloKHBhcnNlKWYoYW4pZwooYXJiaXRyYXJ5KWYoYXJyYXkpZyhv
-ZilpIEZyKGFyZ3YpcCBGQShcMjU1c3R5bGUpZihlbGVtZW50cy4pMzMKYihUaGlzKTIyIGIo
-YWxsb3dzKWcocG9wdCkyODYgNTE5IHkodG8paShiZSlmKHVzZWQpaChmb3IpZyhwYXJzaW5n
-KWYKKGNvbW1hbmRcMjU1bGluZVwyNTVzdHlsZSloKHN0cmluZ3MpZyhmciluKG9tKWcoYW55
-KWYoc291ciluKGNlLikxMjgKNzMxIHkoXDIyNSkxMDAgYihJdCkzMCBiKHByKW4ob3ZpZGVz
-KWgoYSlmKHN0YW5kYXIpbihkKWcobWV0aG9kKWcob2YpZwoob3B0aW9uKWcoYWxpYXNpbmcu
-KTUyIGIoUHIpbihvZ3JhbXMpMzAgYih0aGF0KWcodXNlKTI4Ngo4NDMgeShwb3B0KWMoY2Fu
-KWYoZWFzaWx5KWcoYWxsb3cpZih1c2VycyloKHRvKWcoYWRkKWgobmV3KWUKKGNvbW1hbmRc
-MjU1bGluZSloKG9wdGlvbnMsKWgod2hpY2gpMjg2IDk1NSB5KGFyKW4oZSlrKGRlXDAwMm5l
-ZClnKGFzKWgKKGNvbWJpbmF0aW9ucylmKG9mKWgoYWxyKW4oZWFkeVwyNTVleGlzdGluZyll
-KG9wdGlvbnMuKTU1CmIoVGhpcykzMCBiKGFsbG93cykyODYgMTA2NyB5KHRoZSloKHVzZXIp
-aCh0byloKGRlXDAwMm5lKWUobmV3KS05CmIoLCkzMyBiKGNvbXBsZXgpaChiZWhhdmlvcnMp
-ZChvciloKGNoYW5nZSlmKHRoZSloKGRlZmF1bHQpZihiZVwyNTUpMjg2CjExNzkgeShoYXZp
-b3JzKTIzIGIob2YpaChleGlzdGluZylmKG9wdGlvbnMuKTExMSAxNDUzCnkoTGlrZSloIEZy
-KGdldG9wdF9sb25nXChcKSlwIEZBKCwpZSh0aGUpaShwb3B0KWgobGlicmFyeSlkKHN1cHBv
-cnRzKWoKKHNob3J0KWYoYW5kKWcobG9uZylmKHN0eWxlKWgob3B0aW9ucy4pMTExIDE2NjUg
-eShUaGUpMjkKYihwb3B0KWoobGlicmFyeSlkKGlzKWgoaGlnaGx5KWYocG9ydGFibGUpaChh
-bmQpZyhzaG91bGQpZyh3b3JrKWYob24paAooYW55KWcoUE9TSVgpZyhwbGF0XDI1NSkxMTEg
-MTc3NyB5KGZvcm0uKTY4IGIoVGhlKTM0CmIobGF0ZXN0KWgodmVyc2lvbilnKGlzKWcoYWx3
-YXlzKWcoYXZhaWxhYmxlKWUoZnIpbihvbSlpKGZ0cDovKS0xNApiKC9mdHAuciluKGVkaGF0
-LmNvbS8pMTExIDE4ODkgeShwdWIvciluKGVkaGF0L2NvZGUvcG9wdC8pMTExCjIxMDAgeShJ
-dCkzMyBiKG1heSlmKGJlKWcociluKGVkaXN0cmlidXRlZClmKHVuZGVyKWcoZWl0aGVyKWco
-dGhlKWgKKEdOVSlnKEdlbmVyYWwpZihQdWJsaWMpZyhMaWNlbnNlKWgob3IpMTExIDIyMTMg
-eSh0aGUpMjQKYihHTlUpZyhMaWJyYXJ5KWYoR2VuZXJhbClmKFB1YmxpYyloKExpY2Vuc2Us
-KWgoYXQpZih0aGUpaChkaXN0cmlidXRvcikKNyBiKCdzKTIzIGIoZGlzY3IpbihldGlvbi4p
-LTE4NyAyNTQxIHkgRmsoMjQuMSkxMzEgYihCYXNpYyk0MApiKHBvcHQpaihVc2FnZSlwIC0x
-ODcgMjYyNiAzNDEzIDUgdiAxMTEgMjg4OCBhIEZ1KDI0LjEuMSk1OQpiKFRoZSkzOSBiKE9w
-dGlvbiloKFRhYmxlKTExMSAzMDk5IHkgRkEoQXBwbGljYXRpb25zKWQocHIpbihvdmlkZSlm
-Cihwb3B0KWcod2l0aClmKGluZm9ybWF0aW9uKWYob24paCh0aGVpcilmKGNvbW1hbmRcMjU1
-bGluZSloKG9wXDI1NSkxMTEKMzIxMSB5KHRpb25zKTI0IGIodGhyKW4ob3VnaClmKGFuKWco
-YXJyYXkpZyhvZiloIEZyKHN0cnVjdCk0MgpiKHBvcHRPcHRpb24pMjMgYiBGQShzdHIpbyh1
-Y3R1ciluKGVzLikxMTEgMzQxNyB5IEZxKCNpbmNsdWRlKTM1CmIoPHBvcHQuaD4pMTExIDM2
-MzMgeShzdHJ1Y3QpaChwb3B0T3B0aW9uKWUoeykyNTggMzc0MQp5KGNvbnN0KWkoY2hhciln
-KCopZyhsb25nTmFtZTspZigvKiloKG1heSlnKGJlKWgoTlVMTCllKCovKTI1OAozODQ5IHko
-Y2hhciloKHNob3J0TmFtZTspMjkyIGIoLyopMzYgYihtYXkpZyhiZSloKCdcXDAnKWUoKi8p
-MjU4CjM5NTcgeShpbnQpaChhcmdJbmZvOykyNTggNDA2NSB5KHZvaWQpZygqKWgoYXJnOyk0
-NDAKYigvKikzNiBiKGRlcGVuZHMpZihvbilpKGFyZ0luZm8pZSgqLykyNTggNDE3MiB5KGlu
-dCloKHZhbDspNTUxCmIoLyopMzYgYigwKWgobWVhbnMpZShkbylpKG5vdClmKHJldHVybiwp
-ZihqdXN0KWgodXBkYXRlKWYoZmxhZyloKCovKQoxMTEgNDI4MCB5KH07KXAgZW9wCiUlUGFn
-ZTogNDQ3IDMKNDQ3IDQ3MCBib3AgMjIzNyAtMTE2IGEgRnYoMjQuMSk4MiBiKEJhc2ljKTIz
-IGIocG9wdClmKFVzYWdlKTExOQpiIEZ0KDQ0NylwIDAgLTc2IDM0MTMgNCB2IDQ0NiA3MSBh
-IEZMKFRhYmxlKTI3IGIoMjQuMSk4NApiIEZ2KHBvcHQpMjIgYihBcmd1bWVudClpKFR5cGVz
-KXAgNDQ2IDEwMyAyODIwIDQgdiA0NDYKMTIwIDQgMTcgdiAxMTY3IDEyMCBWIDI3NzUgMTIw
-IFYgMzI2MiAxMjAgViA0NDYgMjE5IDQKMTAwIHYgNTMyIDE5MCBhIEZzKFYpLTkgYihhbHVl
-KXAgMTE2NyAyMTkgViA1MDIgdyhEZXNjcmlwdGlvbilwCjI3NzUgMjE5IFYgMTE2MCB3IEZx
-KGFyZykyMCBiIEZzKFQpLTcgYih5cGUpcCAzMjYyIDIxOQpWIDQ0NiAyMzYgNCAxNyB2IDEx
-NjcgMjM2IFYgMjc3NSAyMzYgViAzMjYyIDIzNiBWIDQ0NgoyMzkgMjgyMCA0IHYgNDQ2IDI0
-NiA0IDcgdiAxMTY3IDI0NiBWIDI3NzUgMjQ2IFYgMzI2MgoyNDYgViA0NDYgMjQ5IDI4MjAg
-NCB2IDQ0NiAyNjYgNCAxNyB2IDExNjcgMjY2IFYgMjc3NQoyNjYgViAzMjYyIDI2NiBWIDQ0
-NiAzNjUgNCAxMDAgdiA1MzIgMzM2IGEgRnEoUE9QVF9BUkdfTk9ORSlwCjExNjcgMzY1IFYg
-MjQwIHcgRncoTm8pMjEgYihhcilvKGd1bWVudClmKGlzKWgoZXhwZWN0ZWQpcAoyNzc1IDM2
-NSBWIDY4OCB3IEZxKGludClwIDMyNjIgMzY1IFYgNDQ2IDQ2NSBWIDUzMiA0MzYKYShQT1BU
-X0FSR19TVFJJTkcpcCAxMTY3IDQ2NSBWIDE2NiB3IEZ3KE5vKWcodHlwZSlnKGNoZWNraW5n
-KWcoc2hvdWxkKWgKKGJlKWUocGVyZm9ybWVkKXAgMjc3NSA0NjUgViAxNjkgdyBGcShjaGFy
-KTM1IGIoKilwIDMyNjIKNDY1IFYgNDQ2IDU2NSBWIDUzMiA1MzUgYShQT1BUX0FSR19JTlQp
-cCAxMTY3IDU2NSBWIDI3Nwp3IEZ3KEFuKTIxIGIoaW50ZWdlcilmKGFyKW8oZ3VtZW50KWgo
-aXMpZyhleHBlY3RlZClwCjI3NzUgNTY1IFYgNDEwIHcgRnEoaW50KXAgMzI2MiA1NjUgViA0
-NDYgNjY0IFYgNTMyIDYzNQphKFBPUFRfQVJHX0xPTkcpcCAxMTY3IDY2NCBWIDI0MCB3IEZ3
-KEEpZihsb25nKWkoaW50ZWdlcilmKGlzKWcKKGV4cGVjdGVkKXAgMjc3NSA2NjQgViA2NTIg
-dyBGcShsb25nKXAgMzI2MiA2NjQgViA0NDYKNjgxIDQgMTcgdiAxMTY3IDY4MSBWIDI3NzUg
-NjgxIFYgMzI2MiA2ODEgViA0NDYgNjg0IDI4MjAKNCB2IDI5OSA5MzMgYSBGQShFYWNoKTM0
-IGIobWVtYmVyKWYob2YpZyh0aGUpZyh0YWJsZSlnKGRlXDAwMm5lcylnKGEpaAooc2luZ2xl
-KWYob3B0aW9uKWcodGhhdClnKG1heSloKGJlKWYocGFzc2VkKWkodG8pMjk5CjEwNDUgeSh0
-aGUpMjkgYihwciluKG9ncmFtLik1MCBiKExvbmcpMzAgYihhbmQpZShzaG9ydClpKG9wdGlv
-bnMpZihhciluCihlKWcoY29uc2lkZXIpbihlZCloKGEpZihzaW5nbGUpZihvcHRpb24paSh0
-aGF0KTI5OSAxMTU3CnkobWF5KWsob2NjdXIpZyhpbilnKHR3bylnKGRpZiluKGZlciluKGVu
-dClmKGZvcm1zLik2NQpiKFRoZSkzMyBiKFwwMDJyc3QpaCh0d28pZyhtZW1iZXJzLClpIEZy
-KGxvbmdOYW1lKWUgRkEoYW5kKTI5OQoxMjY5IHkgRnIoc2hvcnROYW1lKXAgRkEoLCkyNSBi
-KGRlXDAwMm5lKWcodGhlKWcobmFtZXMpaChvZilmKHRoZSlnCihvcHRpb247KWkodGhlKWUo
-XDAwMnJzdCloKGlzKWcoYSlnKGxvbmcpZihuYW1lLClnKGFuZCloKHRoZSkyOTkKMTM4MSB5
-KGxhdHRlcilkKGlzKWgoYSlnKHNpbmdsZSlmKGNoYXJhY3RlciktNyBiKC4pMjk5CjE1OTMg
-eShUaGUpMjEgYiBGcihhcmdJbmZvKWcgRkEobWVtYmVyKWgodGVsbHMpZyhwb3B0KWgod2hh
-dCllKHR5cGUpaAoob2YpZyhhciluKGd1bWVudClnKGlzKWcoZXhwZWN0ZWQpaChhZnRlcill
-KHRoZSkyOTkgMTcwNQp5KGFyKW4oZ3VtZW50LikzMyBiKElmKTIzIGIobm8pZyhvcHRpb24p
-ZyhpcylnKGV4cGVjdGVkLCloCkZyKFBPUFRfQVJHX05PTkUpZCBGQShzaG91bGQpaShiZSln
-KHVzZWQuKTM0IGIoVGhlKTIyCmIociluKGVzdCkyOTkgMTgxNyB5KG9mKWkodGhlKWYodmFs
-aWQpZyh2YWx1ZXMpaChhciluKGUpZihzdW1tYXJpemVkKWcKKGluKWgoVCktOSBiKGFibGUp
-MjIgYigyNC4xLikyMzU1IDE3ODMgeSBGeCgxKTI5OSAyMDI5CnkgRkEoVGhlKWoobmV4dCln
-KGVsZW1lbnQsKWcgRnIoYXJnKXAgRkEoLCloKGFsbG93cylmKHBvcHQpaSh0bylmCihhdXRv
-bWF0aWNhbGx5KWYodXBkYXRlKWgocHIpbihvZ3JhbSlnKHZhcmlcMjU1KTI5OSAyMTQxCnko
-YWJsZXMpMjEgYih3aGVuKWcodGhlKWcob3B0aW9uKWgoaXMpZyh1c2VkLikzNCBiKElmKTIy
-CmIgRnIoYXJnKWYgRkEoaXMpaCBGcihOVUxMKXAgRkEoLClnKGl0KWYoaXMpaShpZ25vcilu
-KGVkKWUoYW5kKWgocG9wdClnCih0YWtlcyloKG5vKTI5OSAyMjUzIHkoc3BlY2lhbCkxOCBi
-KGFjdGlvbi4pMzMgYihPdGhlcndpc2UsKTE4CmIoaXQpZyhzaG91bGQpZyhwb2ludCloKHRv
-KWYoYSlnKHZhcmlhYmxlKWYob2YpaCh0aGUpZyh0eXBlKWcKKGluZGljYXRlZCkyOTkgMjM2
-NSB5KGluKTIzIGIodGhlKWcocmlnaHRcMjU1bW9zdCloKGNvbHVtbilnKG9mKWcoVCktOQpi
-KGFibGUpMjIgYigyNC4xLikyOTkgMjU3NyB5KElmKTQyIGIodGhlKWYob3B0aW9uKWcodGFr
-ZXMpaChubylnKGFyKW4KKGd1bWVudCllKFwoKXAgRnIoYXJnSW5mbyloIEZBKGlzKWggRnIo
-UE9QVF9BUkdfTk9ORSlwCkZBKFwpLCllKHRoZSloKHZhcmlhYmxlKTI5OSAyNjg5IHkocG9p
-bnRlZCkyMSBiKHRvKWcoYnkpZgpGcihhcmcpaCBGQShpcylnKHNldClnKHRvKWcoMSlmKHdo
-ZW4pZih0aGUpaChvcHRpb24paChpcylnKHVzZWQuKTM0CmIoSWYpMjAgYih0aGUpZyhvcHRp
-b24paChkb2VzKWgodGFrZSkyOTkgMjgwMSB5KGFuKTE2CmIoYXIpbihndW1lbnQsKWkodGhl
-KWYodmFyaWFibGUpZSh0aGF0KWkgRnIoYXJnKWcgRkEocG9pbnRzKWgodG8pZyhpcylmCih1
-cGRhdGVkKWgodG8pZihyKW4oZVwwMDNlY3QpZyh0aGUpZyh2YWx1ZSlmKG9mKTI5OSAyOTEz
-CnkodGhlKTIzIGIoYXIpbihndW1lbnQuKTM0IGIoQW55KTI0IGIoc3RyaW5nKWYoaXMpaShh
-Y2NlcHRhYmxlKWUoZm9yKWgKRnIoUE9QVF9BUkdfU1RSSU5HKWUgRkEoYXIpbihndW1lbnRz
-LClpKGJ1dCkyOTkgMzAyNQp5IEZyKFBPUFRfQVJHX0lOVCkxOSBiIEZBKGFuZCloIEZyKFBP
-UFRfQVJHX0xPTkcpZSBGQShhciluKGd1bWVudHMpaQooYXIpbihlKWcoY29udmVydGVkKWco
-dG8pZyh0aGUpZyhhcHByKW4ob3ByaWF0ZSkyOTkgMzEzNwp5KHR5cGUsKWsoYW5kKWYoYW4p
-aChlcnIpbihvcilmKGlzKWgociluKGV0dXJuZWQpZihpZilnKHRoZSlnCihjb252ZXJzaW9u
-KWgoZmFpbHMuKTI5OSAzMzQ5IHkoVGhlKTMzIGIoXDAwMm5hbClnKG9wdGlvbiwpMzgKYiBG
-cih2YWwpcCBGQSgsKWUoaXMpZih0aGUpZih2YWx1ZSlmKHBvcHQncylqKHBhcnNpbmcpZShm
-dW5jdGlvbilmCihzaG91bGQpaShyKW4oZXR1cm4pMjk5IDM0NjEgeSh3aGVuKTI2IGIodGhl
-KWgob3B0aW9uKWgoaXMpZyhlbmNvdW50ZXIpCm4oZWQuKTQ1IGIoSWYpMjcgYihpdCloKGlz
-KWcoMCwpZyh0aGUpZihwYXJzaW5nKWgoZnVuY3Rpb24pZihwYXJzZXMpaAoodGhlKTI5OSAz
-NTczIHkobmV4dCkyMyBiKGNvbW1hbmRcMjU1bGluZSloKGFyKW4oZ3VtZW50KWYocmF0aGVy
-KWYKKHRoYW4paChyKW4oZXR1cm4uKTI5OSAzNzg1IHkoVGhlKWMoXDAwMm5hbClnKHN0cilv
-KHVjdHVyKW4oZSloKGluKWYKKHRoZSloKHRhYmxlKWYoc2hvdWxkKWgoaGF2ZSlmKGFsbCln
-KHRoZSloKHBvaW50ZXIpZyh2YWx1ZXMpZihzZXQpaCh0bykKaCBGcihOVUxMKTI5OSAzODk3
-IHkgRkEoYW5kKWkoYWxsKWgodGhlKWYoYXJpdGhtZXRpYylnKHZhbHVlcylnKHNldCloCih0
-bylnKDAsKWcobWFya2luZylmKHRoZSlnKGVuZCloKG9mKWcodGhlKWYodGFibGUuKXAKMjk5
-IDQyMzQgODk3IDUgdiAyOTkgNDMxNSBhIEZ3KDEuKTI5IGIgRnEoZ2V0b3B0XChcKSlnCkZ3
-KGNvbm5vaXNzZXVycylqKHdpbGwpZihub3RlKWcodGhhdClmIEZxKGFyZ0luZm8pZiBGdyhp
-cylpKHRoZSlmKG9ubHkpCmkoXDAwMmVsZCllKG9mKWggRnEoc3RydWN0KTQ2IGIocG9wdE9w
-dGlvbikzOTEgNDQwNyB5CkZ3KHRoYXQpMjkgYihpcylnKG5vdClnKGRpcilvKGVjdGx5KWYo
-YW5hbG9nb3VzKWkodG8pZihhKWYoXDAwMmVsZCloCihpbilnKHRoZSlnIEZxKGdldG9wdF9s
-b25nXChcKSlkIEZ3KGFyKW8oZ3VtZW50KWkodGFibGUuKTUzCmIoVGhlKTM5MSA0NDk4IHko
-c2ltaWxhcml0eSkyMiBiKGJldHdlZW4pZSh0aGUpaCh0d28pZyhhbGxvd3MpaChmb3IpZQoo
-ZWFzeSloKHRyYW5zaXRpb25zKWgoZnIpbyhvbSllIEZxKGdldG9wdF9sb25nXChcKSllCkZ3
-KHRvKWoocG9wdC4pcCBlb3AKJSVQYWdlOiA0NDggNAo0NDggNDcxIGJvcCAtMTg3IC0xMTYg
-YSBGdCg0NDgpMTE4IGIgRkwoQ2hhcHRlcikyOSBiKDI0KTgzCmIgRnYoUGFyc2luZykyMyBi
-KENvbW1hbmQtTGluZSlmKE9wdGlvbnMpcCAtMTg3IC03NiAzNDEzCjQgdiAxMTEgODUgYSBG
-dSgyNC4xLjIpNTkgYihDcmVhdGluZykzOSBiKGEpZihDb250ZXh0KTExMQoyOTcgeSBGQShw
-b3B0KTMxIGIoY2FuKWYoaW50ZXJsZWF2ZSllKHRoZSloKHBhcnNpbmcpZyhvZiloKG11bHRp
-cGxlKWcKKGNvbW1hbmRcMjU1bGluZSlmKHNldHMuKTUzIGIoSXQpMzAgYihhbGxvd3MpMTEx
-IDQwOQp5KHRoaXMpZShieSlnKGtlZXBpbmcpZyhhbGwpZih0aGUpZyhzdGF0ZSlpKGluZm9y
-bWF0aW9uKWQoZm9yKWkoYSlnCihwYXJ0aWN1bGFyKWYoc2V0KWgob2YpZyhjb21tYW5kXDI1
-NSkxMTEgNTIxIHkobGluZSkyMgpiKGFyKW4oZ3VtZW50cyloKGluKWYoYSloIEZyKHBvcHRD
-b250ZXh0KWUgRkEoZGF0YSlpKHN0cilvKHVjdHVyKW4oZSwpZwooYW4pZihvcGFxdWUpaCh0
-eXBlKWcodGhhdClnKHNob3VsZCkxMTEgNjMzIHkobm90KWgoYmUpZihtb2RpXDAwMmVkKWkK
-KG91dHNpZGUpZih0aGUpZihwb3B0KWkobGlicmFyeSktMTEgYiguKTExMSA4NDUgeShOZXcp
-MjQKYihwb3B0KWgoY29udGV4dHMpZyhhciluKGUpZShjciluKGVhdGVkKWgoYnkpZyBGcihw
-b3B0R2V0Q29udGV4dFwoXCkpcApGQSguKTExMSAxMDUxIHkgRnEoI2luY2x1ZGUpMzUgYig8
-cG9wdC5oPikxMTEgMTI2NiB5KHBvcHRDb250ZXh0KWcKKHBvcHRHZXRDb250ZXh0XChjaGFy
-KWQoKilrKG5hbWUsKWcoaW50KWcoYXJnYywpZihjaGFyKWgoKiopaChhcmd2LCkKMTEwNCAx
-Mzc0IHkoc3RydWN0KWUocG9wdE9wdGlvbilnKCopaChvcHRpb25zLClmKGludCloKGZsYWdz
-XCk7KTExMQoxNTg2IHkgRkEoVGhlKTI2IGIoXDAwMnJzdCloKHBhcmFtZXRlciktNyBiKCwp
-MjYgYiBGcihuYW1lKXAKRkEoLCloKGlzKWcodXNlZClnKG9ubHkpZyhmb3IpZihhbGlhcylo
-KGhhbmRsaW5nKWUoXChkaXNjdXNzZWQpagoobGF0ZXJcKS4pMTExIDE2OTggeShJdCloKHNo
-b3VsZClmKGJlKWYodGhlKWgobmFtZSlmKG9mKWgodGhlKWcKKGFwcGxpY2F0aW9uKWcod2hv
-c2UpZihvcHRpb25zKWkoYXIpbihlKWUoYmVpbmcpZyhwYXJzZWQsKTExMQoxODEwIHkob3Ip
-ZShzaG91bGQpZihiZSlnIEZyKE5VTEwpZyBGQShpZilnKG5vKWcob3B0aW9uKWgoYWxpYXNp
-bmcpZQooaXMpaShkZXNpciluKGVkLikzNiBiKFRoZSkyNCBiKG5leHQpZyh0d28pZyhhcilu
-KGd1bWVudHMpMTExCjE5MjIgeShzcGVjaWZ5KWcodGhlKWYoY29tbWFuZFwyNTVsaW5lKWco
-YXIpbihndW1lbnRzKWcodG8paChwYXJzZS4pMzQKYihUaGVzZSkyMiBiKGFyKW4oZSloKGdl
-bmVyYWxseSlmKHBhc3NlZCkxMTEgMjAzNCB5KHRvKTM3CmIgRnIocG9wdEdldENvbnRleHRc
-KFwpKWUgRkEoZXhhY3RseSlpKGFzKWcodGhleSlmKHdlciluKGUpZyhwYXNzZWQpaQoodG8p
-Zih0aGUpZihwciluKG9ncmFtJ3MpaCBGcihtYWluXChcKSkxMTEgMjE0NiB5IEZBKGZ1bmN0
-aW9uLik1MApiKFRoZSkyOSBiIEZyKG9wdGlvbnMpZiBGQShwYXJhbWV0ZXIpaChwb2ludHMp
-aCh0bylnKHRoZSlmKHRhYmxlKWYob2YpaQooY29tbWFuZFwyNTVsaW5lKWUob3BcMjU1KTEx
-MSAyMjU5IHkodGlvbnMsKTMzIGIod2hpY2gpZCh3YXMpaAooZGVzY3JpYmVkKWgoaW4pZSh0
-aGUpaChwciluKGV2aW91cylnKHNlY3Rpb24uKTU2IGIoVGhlKTMwCmIoXDAwMm5hbClnKHBh
-cmFtZXRlciktNyBiKCwpMTExIDIzNzEgeSBGcihmbGFncylwIEZBKCwpMjEKYihpcylnKG5v
-dClnKGN1cnIpbihlbnRseSllKHVzZWQpaShidXQpZyhzaG91bGQpZihhbHdheXMpZyhiZSlo
-CihzcGVjaVwwMDJlZClnKGFzKWcoMClmKGZvciloKGNvbXBhdFwyNTUpMTExIDI0ODMgeShp
-YmlsaXR5KWkod2l0aClnCihmdXR1ciluKGUpZyh2ZXJzaW9ucyloKG9mKWcodGhlKWYocG9w
-dClpKGxpYnJhcnkpLTExCmIoLikxMTEgMjY5NCB5KEEpMjYgYiBGcihwb3B0Q29udGV4dClm
-IEZBKGtlZXBzKWgodHJhY2spZyhvZilnKHdoaWNoKWUKKG9wdGlvbnMpaihoYXZlKWQoYWxy
-KW4oZWFkeSloKGJlZW4pZyhwYXJzZWQpaChhbmQpMTExCjI4MDcgeSh3aGljaCloKHIpbihl
-bWFpbiwpaShhbW9uZylmKG90aGVyKWYodGhpbmdzLik0NwpiKElmKTI4IGIoYSlnKHByKW4o
-b2dyYW0pZyh3aXNoZXMpZyh0byloKHIpbihlc3RhcnQpZihvcHRpb24pMTExCjI5MTkgeShw
-ciluKG9jZXNzaW5nKTIzIGIob2YpZihhKWcoc2V0KWcob2YpZyhhciluKGd1bWVudHMsKWco
-aXQpZihjYW4pCmgociluKGVzZXQpZyh0aGUpZiBGcihwb3B0Q29udGV4dClnIEZBKGJ5KWgo
-cGFzc2luZylnKHRoZSkxMTEKMzAzMSB5KGNvbnRleHQpaihhcylmKHRoZSlmKHNvbGUpaChh
-ciluKGd1bWVudClmKHRvKWgKRnIocG9wdFJlc2V0Q29udGV4dFwoXCkpcCBGQSguKTExMSAz
-MjQyIHkoV2hlbilqKGFyKW4oZ3VtZW50KWcocHIpbgoob2Nlc3NpbmcpaChpcylnKGNvbXBs
-ZXRlLCloKHRoZSlkKHByKW4ob2Nlc3MpaihzaG91bGQpZihmciluKGVlKWUodGhlKQpoIEZy
-KHBvcHQtKTExMSAzMzU0IHkoQ29udGV4dCkyMiBiIEZBKGFzKWgoaXQpZihjb250YWlucylo
-KGR5bmFtaWNhbGx5KQpmKGFsbG9jYXRlZClnKGNvbXBvbmVudHMuKTM1IGIoVGhlKTIxIGIg
-RnIocG9wdEZyZWVDb24tKTExMQozNDY3IHkodGV4dFwoXCkpMzIgYiBGQShmdW5jdGlvbiln
-KHRha2VzKWgoYSlmIEZyKHBvcHRDb250ZXh0KWcKRkEoYXMpaChpdHMpZyhzb2xlKWcoYXIp
-bihndW1lbnQpZShhbmQpaShmciluKGVlcylmKHRoZSlnKHIpbihlXDI1NSkxMTEKMzU3OSB5
-KHNvdXIpbihjZXMpMjUgYih0aGUpZShjb250ZXh0KWkoaXMpZih1c2luZy4pMTExCjM3OTAg
-eShIZXIpbihlKWcoYXIpbihlKWYodGhlKWgocHIpbihvdG90eXBlcyloKG9mKWYoYm90aClm
-CkZyKHBvcHRSZXNldENvbnRleHRcKFwpKWYgRkEoYW5kKWkgRnIocG9wdEZyZWVDb250ZXh0
-XChcKSlwCkZBKC4pMTExIDM5OTYgeSBGcSgjaW5jbHVkZSkzNSBiKDxwb3B0Lmg+KTExMSA0
-MjEyIHkodm9pZCloCihwb3B0RnJlZUNvbnRleHRcKHBvcHRDb250ZXh0KTMxIGIoY29uXCk7
-KTExMSA0MzIwIHkodm9pZCkzNgpiKHBvcHRSZXNldENvbnRleHRcKHBvcHRDb250ZXh0KTMw
-IGIoY29uXCk7KXAgZW9wCiUlUGFnZTogNDQ5IDUKNDQ5IDQ3MiBib3AgMjIzNyAtMTE2IGEg
-RnYoMjQuMSk4MiBiKEJhc2ljKTIzIGIocG9wdClmKFVzYWdlKTExOQpiIEZ0KDQ0OSlwIDAg
-LTc2IDM0MTMgNCB2IDI5OSA4NSBhIEZ1KDI0LjEuMyk1OCBiKFBhcnNpbmcpMzkKYih0aGUp
-aChDb21tYW5kKWUoTGluZSkyOTkgMjk3IHkgRkEoQWZ0ZXIpMjYgYihhbilnKGFwcGxpY2F0
-aW9uKWgoaGFzKWcKKGNyKW4oZWF0ZWQpZihhKWggRnIocG9wdENvbnRleHQpcCBGQSgsKWYo
-aXQpaChtYXkpZyhiZWdpbillKHBhcnNpbmcpaQooYXIpbihndVwyNTUpMjk5IDQwOSB5KG1l
-bnRzLikzNCBiKFRoZSkyMyBiIEZyKHBvcHRHZXROZXh0T3B0XChcKSlmCkZBKHBlcmZvcm1z
-KWkodGhlKWcoYWN0dWFsKWYoYXIpbihndW1lbnQpZyhwYXJzaW5nLikyOTkKNjE1IHkgRnEo
-I2luY2x1ZGUpMzUgYig8cG9wdC5oPikyOTkgODMxIHkoaW50KWgKKHBvcHRHZXROZXh0T3B0
-XChwb3B0Q29udGV4dCkzMSBiKGNvblwpOykyOTkgMTA0MiB5IEZBKFQpLTkKYihha2luZyk0
-NCBiKHRoZSloKGNvbnRleHQpaChhcylnKGl0cylmKHNvbGUpaChhciluKGd1bWVudCwpayh0
-aGlzKTQ1CmIoZnVuY3Rpb24pZyhwYXJzZXMpaCh0aGUpZihuZXh0KTI5OSAxMTU0IHkoY29t
-bWFuZFwyNTVsaW5lKTM0CmIoYXIpbihndW1lbnQpZihmb3VuZC4pNjUgYihBZnRlcikzNCBi
-KFwwMDJuZGluZylmKHRoZSloKG5leHQpZyhhciluCihndW1lbnQpZihpbiloKHRoZSkyOTkg
-MTI2NiB5KG9wdGlvbikyOSBiKHRhYmxlLClnKHRoZSlmKGZ1bmN0aW9uKWcKKFwwMDJsbHMp
-ZyhpbilnKHRoZSlnKG9iamVjdClpKHBvaW50ZWQpZSh0byloKGJ5KWcodGhlKWYob3B0aW9u
-KWgKKHRhYmxlKTI5OSAxMzc5IHkoZW50cnkncykxOCBiIEZyKGFyZylnIEZBKHBvaW50ZXIp
-aChpZilmKGl0KWgoaXMpZwoobm90KWYgRnIoTlVMTClwIEZBKC4pZyhJZiloKHRoZSlmIEZy
-KHZhbCloIEZBKGVudHJ5KWYoZm9yKWcodGhlKWcKKG9wdGlvbiloKGlzKWcobm9uXDI1NTAs
-KWcodGhlKTI5OSAxNDkxIHkoZnVuY3Rpb24paCh0aGVuKWcociluKGV0dXJucykKZyh0aGF0
-KWcodmFsdWUuKTMyIGIoT3RoZXJ3aXNlLCkyMCBiIEZyKHBvcHRHZXROZXh0T3B0XChcKSlm
-CkZBKGNvbnRpbnVlcylpKG9uKTI5OSAxNjAzIHkodG8paih0aGUpZihuZXh0KWgoYXIpbihn
-dW1lbnQuKTI5OQoxODE0IHkgRnIocG9wdEdldE5leHRPcHRcKFwpKWcgRkEociluKGV0dXJu
-cyloKFwyNTUxKWcod2hlbilmKHRoZSloCihcMDAybmFsKWcoYXIpbihndW1lbnQpZyhoYXMp
-aChiZWVuKWUocGFyc2VkLClqKGFuZCkyOTkKMTkyNiB5KG90aGVyKTIwIGIobmVnYXRpdmUp
-Zih2YWx1ZXMpaCh3aGVuKWYoZXJyKW4ob3JzKWkob2NjdXIpLTcKYiguKTMzIGIoVGhpcyky
-MCBiKG1ha2VzKWgoaXQpZihhKWgoZ29vZClnKGlkZWEpZih0byloKGtlZXApMjk5CjIwMzkg
-eSh0aGUpaSBGcih2YWwpaCBGQShlbGVtZW50cylmKGluKWcodGhlKWgob3B0aW9ucylnKHRh
-YmxlKWYoZ3IpbgooZWF0ZXIpZyh0aGFuKWcoMC4pMjk5IDIyNTAgeShJZik0OCBiKGFsbClm
-KG9mKWgodGhlKWYoY29tbWFuZFwyNTVsaW5lKQpoKG9wdGlvbnMpZyhhciluKGUpZyhoYW5k
-bGVkKWYodGhyKW4ob3VnaClnIEZyKGFyZylnCkZBKHBvaW50ZXJzLCkyOTkgMjM2MiB5KGNv
-bW1hbmRcMjU1bGluZSkyMyBiKHBhcnNpbmcpaChpcylnKHIpbihlZHVjZWQpCmcodG8pZyh0
-aGUpZihmb2xsb3dpbmcpZyhsaW5lKWcob2YpZyhjb2RlOikyOTkgMjU2OCB5CkZxKHJjKTM2
-IGIoPSloKHBvcHRHZXROZXh0T3B0XChwb3B0Y29uXCk7KTI5OSAyNzgwIHkKRkEoTWFueSky
-MSBiKGFwcGxpY2F0aW9ucylnKHIpbihlcXVpciluKGUpZyhtb3IpbihlKWcoY29tcGxleClo
-Cihjb21tYW5kXDI1NWxpbmUpZihwYXJzaW5nKWcodGhhbilmKHRoaXMsKTI5OSAyODkyIHko
-aG93ZXZlciktNwpiKCwpMjIgYihhbmQpaSh1c2UpZih0aGUpZyhmb2xsb3dpbmcpZyhzdHIp
-byh1Y3R1ciluKGUuKTI5OQozMDk3IHkgRnEod2hpbGUpMzUgYihcKFwocmMpaCg9KWgocG9w
-dEdldE5leHRPcHRcKHBvcHRjb25cKVwpKTMxCmIoPikzNiBiKDBcKSloKHspNDQ2IDMyMDUg
-eShzd2l0Y2gpZShcKHJjXCkpaCh7KTU5MyAzMzEzCnkoLyopZyhzcGVjaWZpYylmKGFyZ3Vt
-ZW50cylnKGFyZSloKGhhbmRsZWQpZihoZXJlKWgoKi8pNDQ2CjM0MjEgeSh9KTI5OSAzNTI5
-IHkofSkyOTkgMzc0MSB5IEZBKFdoZW4pZihyKW4oZXR1cm5lZClnKG9wdGlvbnMpaShhcilu
-CihlKWYoaGFuZGxlZCwpaSh0aGUpZShhcHBsaWNhdGlvbilnKG5lZWRzKWcodG8pZyhrbm93
-KWcodGhlKTI5OQozODUzIHkodmFsdWUpMjEgYihvZiloKGFueSlnKGFyKW4oZ3VtZW50cyln
-KHRoYXQpZyh3ZXIpbihlKWYKKHNwZWNpXDAwMmVkKWkoYWZ0ZXIpZih0aGUpZyhvcHRpb24u
-KTM0IGIoVGhlciluKGUpMjAKYihhciluKGUpaSh0d28pMjk5IDM5NjUgeSh3YXlzKWQodG8p
-ZyhkaXNjb3ZlcilnKHRoZW0uKTMyCmIoT25lKTE4IGIoaXMpaSh0bylmKGFzaylnKHBvcHQp
-Zyh0byloKFwwMDJsbCllKGluKWcoYSlnKHZhcmlhYmxlKWYKKHdpdGgpaCh0aGUpZyh2YWx1
-ZSkyOTkgNDA3NyB5KG9mKTI4IGIodGhlKWgob3B0aW9uKWYodGhyKW4ob3VnaClnKHRoZSkK
-ZyhvcHRpb24paCh0YWJsZSdzKWYgRnIoYXJnKWcgRkEoZWxlbWVudHMuKTQ4IGIoVGhlKTI4
-CmIob3RoZXIpZyhpcyloKHRvKWYodXNlKTI5OSA0MTg5IHkgRnIocG9wdEdldE9wdEFyZ1wo
-XCkpcApGQSguKXAgZW9wCiUlUGFnZTogNDUwIDYKNDUwIDQ3MyBib3AgLTE4NyAtMTE2IGEg
-RnQoNDUwKTExOCBiIEZMKENoYXB0ZXIpMjkgYigyNCk4MwpiIEZ2KFBhcnNpbmcpMjMgYihD
-b21tYW5kLUxpbmUpZihPcHRpb25zKXAgLTE4NyAtNzYgMzQxMwo0IHYgMTExIDE3MCBhIEZx
-KCNpbmNsdWRlKTM1IGIoPHBvcHQuaD4pMTExIDM4NiB5KGNoYXIpaCgqKWgKKHBvcHRHZXRP
-cHRBcmdcKHBvcHRDb250ZXh0KTMxIGIoY29uXCk7KTExMSA1OTggeSBGQShUaGlzKWMoZnVu
-Y3Rpb24pZgoociluKGV0dXJucyloKHRoZSlnKGFyKW4oZ3VtZW50KWYoZ2l2ZW4pZyhmb3Ip
-aCh0aGUpZyhcMDAybmFsKWYob3B0aW9uKQppKHIpbihldHVybmVkKWUoYnkpMTExIDcxMCB5
-IEZyKHBvcHRHZXROZXh0T3B0XChcKSlwCkZBKCwpYyhvcilpKGl0KWcociluKGV0dXJucylm
-IEZyKE5VTEwpZyBGQShpZiloKG5vKWYoYXIpbihndW1lbnQpZyh3YXMpCmgoc3BlY2lcMDAy
-ZWQuKTExMSAxMDczIHkgRnUoMjQuMS40KTU5IGIoTGVmdG92ZXIpMzgKYihBcmd1bWVudHMp
-MTExIDEyODUgeSBGQShNYW55KTI0IGIoYXBwbGljYXRpb25zKWcodGFrZSlmKGFuKWgKKGFy
-Yml0cmFyeSllKG51bWJlcilnKG9mKWkoY29tbWFuZFwyNTVsaW5lKWYoYXIpbihndW1lbnRz
-LCkxMTEKMTM5NyB5KHN1Y2gpaihhcylnKGEpZyhsaXN0KWcob2YpZyhcMDAybGUpZihuYW1l
-cy4pNDAKYihXaGVuKTI1IGIocG9wdClpKGVuY291bnRlcnMpZShhbilnKGFyKW4oZ3VtZW50
-KWcodGhhdClnKGRvZXMpMTExCjE1MDkgeShub3QpayhiZWdpbilmKHdpdGgpZyhhKWggRnIo
-LSlwIEZBKCwpaChpdClmKGFzc3VtZXMpaChpdClmKGlzKWcKKHN1Y2gpZyhhbilmKGFyKW4o
-Z3VtZW50KWcoYW5kKWgoYWRkcyloKGl0KWYodG8pZyhhKWcobGlzdCkxMTEKMTYyMSB5KG9m
-KWkobGVmdG92ZXIpZihhciluKGd1bWVudHMuKTU1IGIoVGhyKW4oZWUpMzAKYihmdW5jdGlv
-bnMpZyhhbGxvdylnKGFwcGxpY2F0aW9ucyloKHRvKWgoYWNjZXNzKWcoc3VjaCkxMTEKMTcz
-MyB5KGFyKW4oZ3VtZW50czopMTExIDIwMDcgeSBGcihjaGFyKTQzIGIoKilnCihwb3B0R2V0
-QXJnXChwb3B0Q29udGV4dClkKGNvblwpOyk0MTEgMjExOSB5IEZBKFRoaXMpMzUKYihmdW5j
-dGlvbilmKHIpbihldHVybnMpZyh0aGUpZyhuZXh0KWgobGVmdG92ZXIpZihhciluKGd1bWVu
-dClnKGFuZClnCihtYXJrcylpKGl0KWUoYXMpNDExIDIyMzEgeShwciluKG9jZXNzZWQuKTEx
-MSAyNDQzIHkKRnIoY2hhcik0MyBiKCopZyhwb3B0UGVla0FyZ1wocG9wdENvbnRleHQpZChj
-b25cKTspNDExCjI1NTUgeSBGQShUaGUpMTUgYihuZXh0KWgobGVmdG92ZXIpZihhciluKGd1
-bWVudClnKGlzKWkociluKGV0dXJuZWQpZAooYnV0KWkobm90KWcobWFya2VkKWcoYXMpZyhw
-ciluKG9jZXNzZWQuKTQxMSAyNjY3IHkoVGhpcykzOQpiKGFsbG93cylnKGFuKWYoYXBwbGlj
-YXRpb24paCh0byloKGxvb2spZihhaGVhZClnKGludG8pZyh0aGUpZihhciluCihndW1lbnQp
-aChsaXN0LCk0MTEgMjc3OSB5KHdpdGhvdXQpMjMgYihtb2RpZnlpbmcpaCh0aGUpZihsaXN0
-LikxMTEKMjk5MSB5IEZyKGNoYXIpNDMgYigqKilmKHBvcHRHZXRBcmdzXChwb3B0Q29udGV4
-dClmKGNvblwpOyk0MTEKMzEwMyB5IEZBKEFsbCkxNiBiKHRoZSlnKGxlZnRvdmVyKWYoYXIp
-bihndW1lbnRzKWcoYXIpbihlKWgociluCihldHVybmVkKWUoaW4paShhKWYobWFubmVyKWco
-aWRlbnRpY2FsKWcodG8paCBGcihhcmd2KXAKRkEoLik0MTEgMzIxNSB5KFRoZSlqKFwwMDJu
-YWwpZyhlbGVtZW50KWcoaW4pZyh0aGUpZyhyKW4oZXR1cm5lZClnCihhcnJheSlnKHBvaW50
-cyloKHRvKWcgRnIoTlVMTClwIEZBKCwpZihpbmRpY2F0aW5nKWcodGhlKTQxMQozMzI3IHko
-ZW5kKTI0IGIob2YpZyh0aGUpZihhciluKGd1bWVudHMuKS0xODcgMzY4MCB5CkZrKDI0LjIp
-MTMxIGIoRXJyb3IpNDEgYihIYW5kbGluZylwIC0xODcgMzc2NSAzNDEzIDUKdiAxMTEgNDAy
-NyBhIEZBKEFsbCkyOSBiKG9mKWcodGhlKWcocG9wdCloKGZ1bmN0aW9ucyllKHRoYXQpaChj
-YW4pZyhyKW4KKGV0dXJuKWUoZXJyKW4ob3JzKWkociluKGV0dXJuKWYoaW50ZWdlcnMuKTQ5
-IGIoV2hlbikyOApiKGFuKTExMSA0MTM5IHkoZXJyKW4ob3IpZChvY2N1cnMsKWkoYSllKG5l
-Z2F0aXZlKWYoZXJyKW4ob3IpaChjb2RlKWgKKGlzKWYociluKGV0dXJuZWQuKTM4IGIoVCkt
-OSBiKGFibGUpMjQgYigyNC4yKWgoc3VtbWFyaXplcylnKHRoZSkxMTEKNDI1MSB5KGVycilu
-KG9yKWYoY29kZXMpZyh0aGF0KWcob2NjdXIpLTcgYiguKTM0IGIoSGVyKW4oZSkyNApiKGlz
-KWcoYSlnKG1vciluKGUpZyhkZXRhaWxlZClmKGRpc2N1c3Npb24paShvZilmKGVhY2gpZihl
-cnIpbihvciktNwpiKC4pcCBlb3AKJSVQYWdlOiA0NTEgNwo0NTEgNDc0IGJvcCAyMzI5IC0x
-MTYgYSBGdigyNC4yKTgyIGIoRXJyb3IpMjMgYihIYW5kbGluZykxMTgKYiBGdCg0NTEpcCAw
-IC03NiAzNDEzIDQgdiA0MjEgNzEgYSBGTChUYWJsZSkyNyBiKDI0LjIpODQKYiBGdihwb3B0
-KTIyIGIoRXJyb3JzKXAgNDIxIDEwMyAyODcwIDQgdiA0MjEgMTIwIDQgMTcKdiAxMzk5IDEy
-MCBWIDMyODcgMTIwIFYgNDIxIDIxOSA0IDEwMCB2IDUwNyAxOTAgYSBGcyhFcnJvcilwCjEz
-OTkgMjE5IFYgNzg1IHcoRGVzY3JpcHRpb24pcCAzMjg3IDIxOSBWIDQyMSAyMzYgNCAxNwp2
-IDEzOTkgMjM2IFYgMzI4NyAyMzYgViA0MjEgMjM5IDI4NzAgNCB2IDQyMSAyNDYgNCA3CnYg
-MTM5OSAyNDYgViAzMjg3IDI0NiBWIDQyMSAyNDkgMjg3MCA0IHYgNDIxIDI2NiA0IDE3CnYg
-MTM5OSAyNjYgViAzMjg3IDI2NiBWIDQyMSAzNjUgNCAxMDAgdiA1MDcgMzM2IGEgRnEoUE9Q
-VF9FUlJPUl9OT0FSRylwCjEzOTkgMzY1IFYgMzg2IHcgRncoQW4pZihhcilvKGd1bWVudClm
-KGlzKWgobWlzc2luZyloKGZvcilmKGFuKWcKKG9wdGlvbi4pcCAzMjg3IDM2NSBWIDQyMSA0
-NjUgViA1MDcgNDM2IGEgRnEoUE9QVF9FUlJPUl9CQURPUFQpcAoxMzk5IDQ2NSBWIDM0OSB3
-IEZ3KEFuKWcob3B0aW9uJ3MpaChhcilvKGd1bWVudCllKGNvdWxkKWgobm90KWgoYmUpZQoo
-cGFyc2VkLilwIDMyODcgNDY1IFYgNDIxIDU2NSBWIDUwNyA1MzUgYSBGcShQT1BUX0VSUk9S
-X09QVFNUT09ERUVQKXAKMTM5OSA1NjUgViAxNjQgdyBGdyhPcHRpb24paShhbGlhc2luZylm
-KGlzKWcobmVzdGVkKWcodG9vKWcoZGVlcGx5KS05CmIoLilwIDMyODcgNTY1IFYgNDIxIDY2
-NCBWIDUwNyA2MzUgYSBGcShQT1BUX0VSUk9SX0JBRFFVT1RFKXAKMTM5OSA2NjQgViAyNzUg
-dyBGdyhRdW90YXRpb25zKTIyIGIoZG8pZihub3QpaChtYXRjaC4pcAozMjg3IDY2NCBWIDQy
-MSA3NjQgViA1MDcgNzM1IGEgRnEoUE9QVF9FUlJPUl9CQUROVU1CRVIpcAoxMzk5IDc2NCBW
-IDIzOCB3IEZ3KEFuKWYob3B0aW9uKWgoY291bGQpZihub3QpZyhiZSlnKGNvbnZlcnRlZClm
-KHRvKWgKKGEpZihudW1iZXIpLTYgYiguKXAgMzI4NyA3NjQgViA0MjEgODYzIFYgNTA3IDgz
-NCBhIEZxCihQT1BUX0VSUk9SX09WRVJGTE9XKXAgMTM5OSA4NjMgViAyNzUgdyBGdyhBKTIx
-IGIoZ2l2ZW4pZyhudW1iZXIpZyh3YXMpCmYodG9vKWkoYmlnKWYob3IpZyh0b28pZyhzbWFs
-bC4pcCAzMjg3IDg2MyBWIDQyMSA4ODAKNCAxNyB2IDEzOTkgODgwIFYgMzI4NyA4ODAgViA0
-MjEgODgzIDI4NzAgNCB2IDI5OSAxMTMyCmEgRnIoUE9QVF9FUlJPUl9OT0FSRyk1OTkgMTI0
-NCB5IEZBKEFuKWMob3B0aW9uKWgodGhhdClmKHIpbihlcXVpciluCihlcyloKGFuKWYoYXIp
-bihndW1lbnQpZih3YXMpaShzcGVjaVwwMDJlZClnKG9uKWYodGhlKWcoY29tbWFuZCk1OTkK
-MTM1NyB5KGxpbmUsKTQwIGIoYnV0KWQobm8pZyhhciluKGd1bWVudClnKHdhcylnKGdpdmVu
-Lik3NQpiKFRoaXMpMzcgYihjYW4paChiZSlmKHIpbihldHVybmVkKWYob25seSloKGJ5KTU5
-OSAxNDY5CnkgRnIocG9wdEdldE5leHRPcHRcKFwpKXAgRkEoLikyOTkgMTY4MCB5IEZyKFBP
-UFRfRVJST1JfQkFET1BUKTU5OQoxNzkyIHkgRkEoQW4pMjYgYihvcHRpb24pZyh3YXMpaChz
-cGVjaVwwMDJlZClmKGluKWcgRnIoYXJndilnCkZBKGJ1dClnKGlzKWcobm90KWcoaW4pZyh0
-aGUpZyhvcHRpb24pZyh0YWJsZS4pNDEgYihUaGlzKTU5OQoxOTA1IHkoZXJyKW4ob3IpMjMg
-YihjYW4paChiZSlmKHIpbihldHVybmVkKWcob25seSlnKGZyKW4ob20paApGcihwb3B0R2V0
-TmV4dE9wdFwoXCkpcCBGQSguKTI5OSAyMTE2IHkgRnIoUE9QVF9FUlJPUl9PUFRTVE9PREVF
-UCk1OTkKMjIyOCB5IEZBKEEpZihzZXQpaChvZilmKG9wdGlvbilnKGFsaWFzZXMpZyhpcylo
-KG5lc3RlZClmKHRvbyloKGRlZXBseSkKLTExIGIoLikzNCBiKEN1cnIpbihlbnRseSktMTEg
-YigsKTIyIGIocG9wdClpKGZvbGxvd3MpNTk5CjIzNDAgeShvcHRpb25zKTMwIGIob25seSlm
-KDEwKWcobGV2ZWxzKWcodG8paChwciluKGV2ZW50KWYoaW5cMDAybml0ZSlmCihyKW4oZWN1
-cnNpb24uKTUwIGIoT25seSkyOSBiIEZyKHBvcHRHZXQtKTU5OSAyNDUyIHkoTmV4dE9wdFwo
-XCkpMjMKYiBGQShjYW4pZyhyKW4oZXR1cm4pZyh0aGlzKWgoZXJyKW4ob3IpLTcgYiguKTI5
-OSAyNjY0CnkgRnIoUE9QVF9FUlJPUl9CQURRVU9URSk1OTkgMjc3NiB5IEZBKEEpMTUgYihw
-YXJzZWQpZyhzdHJpbmcpZyhoYXMpZwooYSlnKHF1b3RhdGlvbilnKG1pc21hdGNoKWcoXChz
-dWNoKWcoYXMpZyhhKWcoc2luZ2xlKWcocXVvdGF0aW9uKTU5OQoyODg4IHkobWFya1wpLik2
-MiBiIEZyKHBvcHRQYXJzZUFyZ3ZTdHJpbmdcKFwpKXAgRkEoLCkzMwpiIEZyKHBvcHRSZWFk
-Q29uZmlnRmlsZVwoXCkpcCBGQSgsKWcob3IpZyBGcihwb3B0UmVhZERlLSk1OTkKMzAwMCB5
-KGZhdWx0Q29uZmlnXChcKSkyMiBiIEZBKGNhbilpKHIpbihldHVybillKHRoaXMpaShlcnIp
-bihvciktNwpiKC4pMjk5IDMyMTIgeSBGcihQT1BUX0VSUk9SX0JBRE5VTUJFUik1OTkgMzMy
-NCB5IEZBKEEpMzgKYihjb252ZXJzaW9uKWcoZnIpbihvbSlnKGEpZyhzdHJpbmcpZyh0bylo
-KGEpZihudW1iZXIpZihcKClwCkZyKGludCloIEZBKG9yKWcgRnIobG9uZylwIEZBKFwpKWYo
-ZmFpbGVkKWgoZHVlKTU5OSAzNDM2CnkodG8pMjggYih0aGUpZyhzdHJpbmcpZyhjb250YWlu
-aW5nKWYobm9ubnVtZXJpYylmKGNoYXJhY3RlcnMuKTQ3CmIoVGhpcykyOCBiKG9jY3Vycylo
-KHdoZW4pNTk5IDM1NDggeSBGcihwb3B0R2V0TmV4dE9wdFwoXCkpYwpGQShpcylqKHByKW4o
-b2Nlc3NpbmcpZyhhbilmKGFyKW4oZ3VtZW50KWYob2YpaCh0eXBlKWcKRnIoUE9QVF9BUkdf
-SU5UKWYgRkEob3IpNTk5IDM2NjAgeSBGcihQT1BUX0FSR19MT05HKXAKRkEoLikyOTkgMzg3
-MiB5IEZyKFBPUFRfRVJST1JfT1ZFUkZMT1cpNTk5IDM5ODQgeSBGQShBKWcKKHN0cmluZ1wy
-NTV0b1wyNTVudW1iZXIpZihjb252ZXJzaW9uKWcoZmFpbGVkKWcoYmVjYXVzZSloKHRoZSlm
-KG51bWJlcikKZyh3YXMpaCh0b28pNTk5IDQwOTYgeShsYXIpbihnZSk0MSBiKG9yKWgodG9v
-KWcoc21hbGwuKTg4CmIoTGlrZSk0MiBiIEZyKFBPUFRfRVJST1JfQkFETlVNQkVSKXAgRkEo
-LClkKHRoaXMpaihlcnIpbihvcilmKGNhbiloCihvY1wyNTUpNTk5IDQyMDggeShjdXIpMjgg
-Yihvbmx5KWgod2hlbillIEZyKHBvcHRHZXROZXh0T3B0XChcKSlnCkZBKGlzKWkocHIpbihv
-Y2Vzc2luZyloKGFuKWUoYXIpbihndW1lbnQpZyhvZiloKHR5cGUpNTk5CjQzMjAgeSBGcihQ
-T1BUX0FSR19JTlQpMjIgYiBGQShvcilpIEZyKFBPUFRfQVJHX0xPTkcpcApGQSguKXAgZW9w
-CiUlUGFnZTogNDUyIDgKNDUyIDQ3NSBib3AgLTE4NyAtMTE2IGEgRnQoNDUyKTExOCBiIEZM
-KENoYXB0ZXIpMjkgYigyNCk4MwpiIEZ2KFBhcnNpbmcpMjMgYihDb21tYW5kLUxpbmUpZihP
-cHRpb25zKXAgLTE4NyAtNzYgMzQxMwo0IHYgMTExIDgzIGEgRnIoUE9QVF9FUlJPUl9FUlJO
-Tyk0MTEgMTk1IHkgRkEoQSkzNiBiKHN5c3RlbSlnKGNhbGwpZihyKQpuKGV0dXJuZWQpZih3
-aXRoKWgoYW4pZihlcnIpbihvciktNyBiKCwpMzcgYihhbmQpZSBGcihlcnJubylnCkZBKHN0
-aWxsKWcoY29udGFpbnMpZyh0aGUpNDExIDMwNyB5KGVyciluKG9yKTIzIGIoZnIpbihvbSlo
-KHRoZSlmCihzeXN0ZW0paShjYWxsLikzNCBiKEJvdGgpMjQgYiBGcihwb3B0UmVhZENvbmZp
-Z0ZpbGVcKFwpKWQKRkEoYW5kKWogRnIocG9wdFJlYWQtKTQxMSA0MTkgeShEZWZhdWx0Q29u
-ZmlnXChcKSlmIEZBKGNhbilnKHIpbihldHVybikKZyh0aGlzKWgoZXJyKW4ob3IpLTcgYigu
-KTExMSA2NTYgeShUKWUod28pMzggYihmdW5jdGlvbnMpZihhciluKGUpaAooYXZhaWxhYmxl
-KWUodG8paShtYWtlKWcoaXQpZihlYXN5KWgoZm9yKWcoYXBwbGljYXRpb25zKWcodG8pZyhw
-ciluCihvdmlkZSkxMTEgNzY4IHkoZ29vZCkyNSBiKGVyciluKG9yKWUobWVzc2FnZXMuKTEx
-MSAxMDQyCnkgRnIoY29uc3QpNDMgYihjaGFyKWYoKiloKHBvcHRTdHJlcnJvclwoY29uc3Qp
-ZShpbnQpaChlcnJvclwpOyk0MTEKMTE1NCB5IEZBKFRoaXMpMTggYihmdW5jdGlvbilnKHRh
-a2VzKWgoYSlmKHBvcHQpaChlcnIpbihvcilmKGNvZGUpaAooYW5kKWcociluKGV0dXJucyll
-KGEpaShzdHJpbmcpZihkZXNjcmliaW5nKTQxMSAxMjY2CnkodGhlKTI0IGIoZXJyKW4ob3Ip
-LTcgYigsKTIzIGIoanVzdCloKGFzKWcod2l0aClmKHRoZSlnKHN0YW5kYXIpbihkKWkKRnIo
-c3RyZXJyb3JcKFwpKWQgRkEoZnVuY3Rpb24uKTExMSAxNDc4IHkgRnIoY2hhcik0MwpiKCop
-Zyhwb3B0QmFkT3B0aW9uXChwb3B0Q29udGV4dClkKGNvbiwpaShpbnQpaChmbGFnc1wpOyk0
-MTEKMTU5MCB5IEZBKElmKTMyIGIoYW4pZShlcnIpbihvcilnKG9jY3VyciluKGVkKWkoZHVy
-aW5nKWUKRnIocG9wdEdldE5leHRPcHRcKFwpKXAgRkEoLCloKHRoaXMpZyhmdW5jdGlvbiln
-KHIpbihldHVybnMpNDExCjE3MDIgeSh0aGUpMzggYihvcHRpb24pZyh0aGF0KWcoY2F1c2Vk
-KWgodGhlKWUoZXJyKW4ob3IpLTcKYiguKTc3IGIoSWYpMzggYih0aGUpZiBGcihmbGFncylo
-IEZBKGFyKW4oZ3VtZW50KWYoaXMpaShzZXQpZih0byk0MTEKMTgxNCB5IEZyKFBPUFRfQkFE
-T1BUSU9OX05PQUxJQVMpcCBGQSgsKWUodGhlKWkob3V0ZXJtb3N0KWgob3B0aW9uKWYKKGlz
-KWgociluKGV0dXJuZWQuKTc2IGIoT3RoZXIpbihcMjU1KTQxMSAxOTI2IHkod2lzZSwpMzEK
-YiBGcihmbGFncyllIEZBKHNob3VsZCloKGJlKWYoMCwpaShhbmQpZSh0aGUpZyhvcHRpb24p
-aCh0aGF0KWYoaXMpaChyKW4KKGV0dXJuZWQpZihtYXkpaChoYXZlKTQxMSAyMDM4IHkoYmVl
-bikyMyBiKHNwZWNpXDAwMmVkKWkodGhyKW4ob3VnaClkCihhbilpKGFsaWFzLikxMTEgMjI3
-NSB5KFRoZXNlKTE2IGIodHdvKWgoZnVuY3Rpb25zKWYobWFrZSloKHBvcHQpZyhlcnIpCm4o
-b3IpZihoYW5kbGluZylnKHRyaXZpYWwpZihmb3IpaShtb3N0KWgoYXBwbGljYXRpb25zLikx
-MTEKMjM4NyB5KFdoZW4pMjYgYihhbilmKGVyciluKG9yKWcoaXMpaChkZXRlY3RlZClnKGZy
-KW4ob20pZyhtb3N0KWgob2YpZgoodGhlKWYoZnVuY3Rpb25zLCloKGFuKWYoZXJyKW4ob3Ip
-ZyhtZXNzYWdlKWgoaXMpMTExCjI0OTkgeShwcmludGVkKTM1IGIoYWxvbmcpZyh3aXRoKWco
-dGhlKWcoZXJyKW4ob3IpZihzdHJpbmcpaShmciluKG9tKWYKRnIocG9wdFN0cmVycm9yXChc
-KSlwIEZBKC4pNjggYihXaGVuKTM1IGIoYW4pZihlcnIpbihvcikxMTEKMjYxMSB5KG9jY3Vy
-cykyNiBiKGR1cmluZyllKGFyKW4oZ3VtZW50KWgocGFyc2luZywpZyhjb2RlKWcoc2ltaWxp
-YXIpZwoodG8pZyh0aGUpZyhmb2xsb3dpbmcpZihkaXNwbGF5cylpKGEpMTExIDI3MjMgeSh1
-c2VmdWwpZChlcnIpbihvcilnCihtZXNzYWdlLikxMTEgMjkyOSB5IEZxKGZwcmludGZcKHN0
-ZGVyciwpMzQgYigiXDA0NXM6KWgoXDA0NXNcXG4iLCk0MDUKMzAzNyB5KHBvcHRCYWRPcHRp
-b25cKG9wdENvbiwpZChQT1BUX0JBRE9QVElPTl9OT0FMSUFTXCksKTQwNQozMTQ0IHkocG9w
-dFN0cmVycm9yXChyY1wpXCk7KS0xODcgMzQ3NSB5IEZrKDI0LjMpMTMxCmIoT3B0aW9uKTQy
-IGIoQWxpYXNpbmcpcCAtMTg3IDM1NjAgMzQxMyA1IHYgMTExIDM4MjIKYSBGQShPbmUpMjEg
-YihvZiloKHRoZSlmKHByaW1hcnkpZyhiZW5lXDAwMnRzKWYob2YpaSh1c2luZylmKHBvcHQp
-aAoob3ZlcilmIEZyKGdldG9wdFwoXCkpZyBGQShpcyloKHRoZSlmKGFiaWxpdHkpZih0bylp
-KHVzZSkxMTEKMzkzNCB5KG9wdGlvbikzMCBiKGFsaWFzaW5nLik0OSBiKFRoaXMpMjkgYihs
-ZXRzKWgodGhlKWUodXNlciloCihzcGVjaWZ5KWgob3B0aW9ucylnKHRoYXQpZihwb3B0KWgo
-ZXhwYW5kcylnKGludG8pMTExCjQwNDYgeShvdGhlcikyMiBiKG9wdGlvbnMpZyh3aGVuKWYo
-dGhleSloKGFyKW4oZSlmKHNwZWNpXDAwMmVkLikzNQpiKElmKTIyIGIodGhlKWYoc3RhbmRh
-ciluKGQpaShnciluKGVwKWYocHIpbihvZ3JhbSloKG1hZGUpMTExCjQxNTggeSh1c2Upaihv
-ZilnKHBvcHQsKWgodXNlcnMpZihjb3VsZCloKGFkZClmKGEpZyBGcigtLXRleHQpZgpGQShv
-cHRpb24paCh0aGF0KWcoZXhwYW5kZWQpZyh0bylnIEZyKC1pKTQ1IGIoLW4pZygtRSlnKC0y
-KTExMQo0MjcwIHkgRkEodG8pMjUgYihsZXQpZSh0aGVtKWgobW9yKW4oZSlnKGVhc2lseSlm
-KFwwMDJuZCloKGluZm9ybWF0aW9uKQplKGluKWgodGV4dCloKFwwMDJsZXMuKXAgZW9wCiUl
-UGFnZTogNDUzIDkKNDUzIDQ3NiBib3AgMjI5OCAtMTE2IGEgRnYoMjQuMyk4MSBiKE9wdGlv
-bikyMiBiKEFsaWFzaW5nKTExOApiIEZ0KDQ1MylwIDAgLTc2IDM0MTMgNCB2IDI5OSA4NSBh
-IEZ1KDI0LjMuMSk1OCBiKFNwZWNpZnlpbmcpNDAKYihBbGlhc2VzKTI5OSAyOTcgeSBGQShB
-bGlhc2VzKTE4IGIoYXIpbihlKWUobm9ybWFsbHkpaChzcGVjaVwwMDJlZCloCihpbilmKHR3
-bylnKHBsYWNlczopMzIgYigvZXRjL3BvcHQpMTggYihhbmQpZih0aGUpZygucG9wdCloKFww
-MDJsZSlmCihpbikyOTkgNDA5IHkodGhlKTI1IGIodXNlcik3IGIoJ3MpMjUgYihob21lKWgo
-ZGlyKW4oZWN0b3J5KWYoXChmb3VuZClnCih0aHIpbihvdWdoKWcodGhlKWcgRnIoSE9NRSln
-IEZBKGVudmlyKW4ob25tZW50KWYodmFyaWFibGVcKS4pMjk5CjUyMSB5KEJvdGgpMzMgYihc
-MDAybGVzKWgoaGF2ZSllKHRoZSloKHNhbWUpaChmb3JtYXQsKWgoYW4pZShhcmJpdHJhcnkp
-CmYobnVtYmVyKWcob2YpaChsaW5lcylnKGZvcm1hdHRlZCkyOTkgNjMzIHkobGlrZSkyMyBi
-KHRoaXM6KTI5OQo4NDUgeSBGaihhcHBuYW1lKTQyIGIgRnIoYWxpYXMpZyBGaihuZXdvcHRp
-b24pZyhleHBhbnNpb24pMjk5CjEwNTcgeSBGQShUaGUpMjQgYiBGaihhcHBuYW1lKWggRkEo
-aXMpaCh0aGUpZihuYW1lKWcob2YpaCh0aGUpZgooYXBwbGljYXRpb24sKWgod2hpY2gpZSht
-dXN0KWooYmUpZSh0aGUpZyhzYW1lKWgoYXMpZyh0aGUpMjk5CjExNjkgeSBGcihuYW1lKWUg
-RkEocGFyYW1ldGVyKWcocGFzc2VkKWkodG8pZiBGcihwb3B0R2V0Q29udGV4dFwoXCkpcApG
-QSguKTM2IGIoVGhpcykyNCBiKGFsbG93cylnKGVhY2gpZyhcMDAybGUpZyh0bylpKHNwZWNp
-ZnkpMjk5CjEyODEgeShhbGlhc2VzKWUoZm9yKWgobXVsdGlwbGUpZihwciluKG9ncmFtcy4p
-MzcgYihUaGUpMjQKYiBGcihhbGlhcylnIEZBKGtleXdvciluKGQpZyhzcGVjaVwwMDJlcylp
-KHRoYXQpZShhbilnKGFsaWFzKWcoaXMpMjk5CjEzOTMgeShiZWluZyloKGRlXDAwMm5lZDsp
-aShjdXJyKW4oZW50bHkpZihwb3B0KWgoY29uXDAwMmd1cmF0aW9uKWUKKFwwMDJsZXMpaShz
-dXBwb3J0KWcob25seSlmKGFsaWFzZXMsKWgoYnV0KTI5OSAxNTA1IHkob3RoZXIpaQooYWJp
-bGl0aWVzKWgobWF5KWcoYmUpZyhhZGRlZClnKGluKWcodGhlKWcoZnV0dXIpbihlLik1Mgpi
-KFRoZSkyOSBiKG5leHQpaChvcHRpb24pZyhpcylnKHRoZSlnKG9wdGlvbikyOTkgMTYxNwp5
-KHRoYXQpZChzaG91bGQpaChiZSlnKGFsaWFzZWQsKWcoYW5kKWcoaXQpZyhtYXkpZyhiZSlm
-KGVpdGhlcilnKGEpaAooc2hvcnQpZyhvcilmKGEpaChsb25nKWcob3B0aW9uLik0NiBiKFRo
-ZSkyOTkgMTcyOSB5KHIpbihlc3QpMjkKYihvZiloKHRoZSllKGxpbmUpaChzcGVjaVwwMDJl
-cyloKHRoZSllKGV4cGFuc2lvbiloKGZvcilnKHRoZSlnKGFsaWFzLikKNTAgYihJdCkzMCBi
-KGlzKWYocGFyc2VkKWgoc2ltaWxhcmx5KTI5OSAxODQxIHkodG8pZihhKWcoc2hlbGwpZgoo
-Y29tbWFuZCwpaih3aGljaClkKGFsbG93cyloIEZyKFxcKXAgRkEoLCloIEZyKCIpcCBGQSgs
-KWcoYW5kKWYKRnIoJylnIEZBKHRvKWcoYmUpZyh1c2VkKWcoZm9yKWcocXVvdGluZy4pNDkg
-YihJZikyOQpiKGEpMjk5IDE5NTMgeShiYWNrc2xhc2gpMjIgYihpcylnKHRoZSlnKFwwMDJu
-YWwpZihjaGFyYWN0ZXIpZyhvbilnKGEpaAoobGluZSwpZih0aGUpaChuZXh0KWYobGluZSln
-KGluKWgodGhlKWYoXDAwMmxlKWcoaXMpaShhc3N1bWVkKTI5OQoyMDY2IHkodG8pMjggYihi
-ZSlmKGEpZyhsb2dpY2FsKWcoY29udGludWF0aW9uKWYob2YpaSh0aGUpZihsaW5lKWYKKGNv
-bnRhaW5pbmcpaCh0aGUpZyhiYWNrc2xhc2gsKWgoanVzdClnKGFzKWcoaW4pMjk5IDIxNzgK
-eShzaGVsbC4pMjk5IDIzODkgeShUaGUpaShmb2xsb3dpbmcpZyhlbnRyeSloKHdvdWxkKWYo
-YWRkKWkoYSlmCkZyKC0tdGV4dClnIEZBKG9wdGlvbilnKHRvKWgodGhlKWUgRnIoZ3JlcClo
-IEZBKGNvbW1hbmQsKWooYXMpMjk5CjI1MDEgeShzdWdnZXN0ZWQpMjQgYihhdClnKHRoZSlm
-KGJlZ2lubmluZylmKG9mKWkodGhpcylnKHNlY3Rpb24uKTI5OQoyNzEzIHkgRnIoZ3JlcCk0
-MiBiKGFsaWFzKWgoLS10ZXh0KWYoLWkpaCgtbilmKC1FKWgoLTIpMjk5CjMwNjggeSBGdSgy
-NC4zLjIpNTggYihFbmFibGluZykzOSBiKEFsaWFzZXMpMjk5IDMyNzkKeSBGQShBbikyMSBi
-KGFwcGxpY2F0aW9uKWYobXVzdClpKGVuYWJsZSlkKGFsaWFzKWgoZXhwYW5zaW9uKWgoZm9y
-KWcoYSkKZiBGcihwb3B0Q29udGV4dClnIEZBKGJlZm9yKW4oZSlnKGNhbGxpbmcpMjk5IDMz
-OTEgeQpGcihwb3B0R2V0TmV4dEFyZ1woXCkpMzMgYiBGQShmb3IpaSh0aGUpZyhcMDAycnN0
-KWcodGltZS4pNjgKYihUaGVyKW4oZSkzNCBiKGFyKW4oZSlnKHRociluKGVlKWgoZnVuY3Rp
-b25zKWYodGhhdCloKGRlXDAwMm5lKTI5OQozNTAzIHkoYWxpYXNlcykyMyBiKGZvciloKGEp
-Zyhjb250ZXh0LikyOTkgMzc3NyB5IEZyKGludCk0MgpiKHBvcHRSZWFkRGVmYXVsdENvbmZp
-Z1wocG9wdENvbnRleHQpZShjb24sKWkoaW50KWgoZmxhZ3NcKTspNTk5CjM4ODkgeSBGQShU
-aGlzKWQoZnVuY3Rpb24pZihyKW4oZWFkcyloKGFsaWFzZXMpZyhmciluKG9tKWgoL2V0Yy9w
-b3B0KWcKKGFuZClmKHRoZSlnKC5wb3B0KWgoXDAwMmxlKWYoaW4pNTk5IDQwMDIgeSh0aGUp
-MjkgYih1c2VyKTcKYigncykyOSBiKGhvbWUpZyhkaXIpbihlY3RvcnkpLTExIGIoLik1MyBi
-KEN1cnIpbihlbnRseSktMTEKYigsKTI5IGIgRnIoZmxhZ3MpZyBGQShzaG91bGQpaChiZSlm
-IEZyKE5VTEwpcCBGQSgsKWcoYXMpZyhpdCloKGlzKTU5OQo0MTE0IHkocHIpbihvdmlkZWQp
-MjQgYihvbmx5KWcoZm9yKWYoZnV0dXIpbihlKWcoZXhwYW5zaW9uLilwCmVvcAolJVBhZ2U6
-IDQ1NCAxMAo0NTQgNDc3IGJvcCAtMTg3IC0xMTYgYSBGdCg0NTQpMTE4IGIgRkwoQ2hhcHRl
-cikyOSBiKDI0KTgzCmIgRnYoUGFyc2luZykyMyBiKENvbW1hbmQtTGluZSlmKE9wdGlvbnMp
-cCAtMTg3IC03NiAzNDEzCjQgdiAxMTEgODMgYSBGcihpbnQpNDMgYihwb3B0UmVhZENvbmZp
-Z0ZpbGVcKHBvcHRDb250ZXh0KWMoY29uLClrKGNoYXIpCmYoKiloKGZuXCk7KTQxMSAxOTUg
-eSBGQShUaGUpMTcgYihcMDAybGUpaChzcGVjaVwwMDJlZCloKGJ5KWYKRnIoZm4pZyBGQShp
-cylnKG9wZW5lZClnKGFuZClnKHBhcnNlZCloKGFzKWYoYSlnKHBvcHQpaAooY29uXDAwMmd1
-cmF0aW9uKTQxMSAzMDcgeShcMDAybGUuKTY4IGIoVGhpcykzNSBiKGFsbG93cylmKHByKW4o
-b2dyYW1zKQppKHRvKWcodXNlKWYocHIpbihvZ3JhbVwyNTVzcGVjaVwwMDJjKWgoY29uXDAw
-Mmd1cmF0aW9uKTQxMQo0MTkgeShcMDAybGVzLikxMTEgNjMxIHkgRnIoaW50KTQzIGIocG9w
-dEFkZEFsaWFzXChwb3B0Q29udGV4dClkKGNvbiwpagooc3RydWN0KWYocG9wdEFsaWFzKWco
-YWxpYXMsKWcoaW50KWcoZmxhZ3NcKTspNDExIDc0Mwp5IEZBKE9jY2FzaW9uYWxseSktMTEg
-YigsKTM3IGIocHIpbihvY2Vzc2VzKWYod2FudClkKHRvKWgoc3BlY2lmeSlnCihhbGlhc2Vz
-KWcod2l0aG91dClmKGhhdmluZylmKHRvKTQxMSA4NTUgeShyKW4oZWFkKTI0CmIodGhlbSlm
-KGZyKW4ob20paChhKWYoY29uXDAwMmd1cmF0aW9uKWYoXDAwMmxlLikzNCBiKFRoaXMpMjMK
-YihmdW5jdGlvbilmKGFkZHMpaShhKWcobmV3KWUoYWxpYXMpNDExIDk2NyB5KHRvKTM5IGIo
-YSlmKGNvbnRleHQuKTc3CmIoVGhlKTM4IGIgRnIoZmxhZ3MpZiBGQShhciluKGd1bWVudClo
-KHNob3VsZClnKGJlKWYoMCwpNDIKYihhcyljKGl0KWcoaXMpaChjdXJyKW4oZW50bHkpNDEx
-IDEwNzkgeShyKW4oZXNlcnZlZCkyMQpiKGZvcilnKGZ1dHVyKW4oZSllKGV4cGFuc2lvbi4p
-MzMgYihUaGUpMjAgYihuZXcpZyhhbGlhcyloKGlzKWcKKHNwZWNpXDAwMmVkKWcoYXMpaChh
-KWUgRnIoc3RydWN0KTQxMSAxMTkxIHkocG9wdEFsaWFzKXAKRkEoLClqKHdoaWNoKWcoaXMp
-aChkZVwwMDJuZWQpZihhczopNDExIDEzODggeSBGcShzdHJ1Y3QpMzYKYihwb3B0QWxpYXMp
-ZSh7KTU1OCAxNDk2IHkoY2hhcilpKCopaChsb25nTmFtZTspNDM5IGIoLyopMzYKYihtYXkp
-ZyhiZSlnKE5VTEwpZygqLyk1NTggMTYwNCB5KGNoYXIpZyhzaG9ydE5hbWU7KTQ3NgpiKC8q
-KTM2IGIobWF5KWcoYmUpZygnXFwwJylnKCovKTU1OCAxNzEyIHkoaW50KWcoYXJnYzspNTU4
-CjE4MjAgeShjaGFyKWcoKiopaChhcmd2Oyk1NTAgYigvKikzNiBiKG11c3QpZyhiZSlnKGZy
-ZWVcKFwpYWJsZSlmKCovKQo0MTEgMTkyNyB5KH07KTQxMSAyMTM5IHkgRkEoVGhlKWQoXDAw
-MnJzdCloKHR3bylnKGVsZW1lbnRzLClpCkZyKGxvbmdOYW1lKWQgRkEoYW5kKWcgRnIoc2hv
-cnROYW1lKXAgRkEoLClqKHNwZWNpZnkpZSh0aGUpZyhvcHRpb24pNDExCjIyNTEgeSh0aGF0
-KTIzIGIoaXMpZyhhbGlhc2VkLikzMyBiKFRoZSkyMiBiKFwwMDJuYWwpZyh0d28sKWgKRnIo
-YXJnYylmIEZBKGFuZClnIEZyKGFyZ3YpcCBGQSgsKWgoZGVcMDAybmUpZih0aGUpZyhleHBh
-bnNpb24pZyh0byk0MTEKMjM2MyB5KHVzZSlpKHdoZW4pZSh0aGUpaShhbGlhc2VzKWYob3B0
-aW9uKWgoaXMpZyhlbmNvdW50ZXIpbihlZC4pLTE4NwoyNzE2IHkgRmsoMjQuNCkxMzEgYihQ
-YXJzaW5nKTQxIGIoQXJndW1lbnQpZihTdHJpbmdzKXAKLTE4NyAyODAxIDM0MTMgNSB2IDEx
-MSAzMDYzIGEgRkEoQWx0aG91Z2gpMjEgYihwb3B0KWkoaXMpZyh1c3VhbGx5KWUKKHVzZWQp
-aChmb3IpZihwYXJzaW5nKWgoYXIpbihndW1lbnRzKWcoYWxyKW4oZWFkeSlmKGRpdmlkZWQp
-aChpbnRvKTExMQozMTc1IHkoYW4pZSBGcihhcmd2KXAgRkEoXDI1NXN0eWxlKWYoYXJyYXkp
-LTExIGIoLCkyMApiKHNvbWUpaChwciluKG9ncmFtcylnKG5lZWQpZSh0byloKHBhcnNlKWco
-c3RyaW5ncyloKHRoYXQpZShhciluKGUpaAooZm9ybWF0dGVkKTExMSAzMjg3IHkoaWRlbnRp
-Y2FsbHkpMzAgYih0bylnKGNvbW1hbmQpaChsaW5lcy4pNTIKYihUKS05IGIobykzMCBiKGZh
-Y2lsaXRhdGUpZih0aGlzLClqKHBvcHQpZihwciluKG92aWRlcylnKGEpZihmdW5jdGlvbikK
-MTExIDMzOTkgeSh0aGF0KWYocGFyc2VzKWgoYSlnKHN0cmluZylmKGludG8pZyhhbilnKGFy
-cmF5KWYob2YpaAooc3RyaW5nLClpKHVzaW5nKWUocilvKHVsZXMpZyhzaW1pbGlhcilnKHRv
-KWcobm9ybWFsKTExMQozNTEyIHkoc2hlbGwpMjQgYihwYXJzaW5nLikxMTEgMzcxNyB5IEZx
-KCNpbmNsdWRlKTM1CmIoPHBvcHQuaD4pMTExIDM5MzMgeShpbnQpaChwb3B0UGFyc2VBcmd2
-U3RyaW5nXChjaGFyKTMxCmIoKikzNyBiKHMsKWYoaW50KWcoKiloKGFyZ2NQdHIsKWUoY2hh
-ciloKCoqKilnKGFyZ3ZQdHJcKTspMTExCjQxNDUgeSBGQShUaGUpMTkgYihzdHJpbmcpaCBG
-cihzKWcgRkEoaXMpZyhwYXJzZWQpaChpbnRvKWYoYW4pZgpGcihhcmd2KXAgRkEoXDI1NXN0
-eWxlKWgoYXJyYXkpLTExIGIoLikzMiBiKFRoZSkxOSBiKGludGVnZXIpZyhwb2ludGVkKQpo
-KHRvKWcoYnkpZyh0aGUpMTExIDQyNTcgeShzZWNvbmQpMzMgYihwYXJhbWV0ZXIpLTcgYigs
-KTMyCmIgRnIoYXJnY1B0cilwIEZBKCwpaChjb250YWlucyllKHRoZSlnKG51bWJlcilnKG9m
-KWcoZWxlbWVudHMpZwoocGFyc2VkLClqKGFuZCkxMTEgNDM2OSB5KHRoZSljKHBvaW50ZXIp
-aChwb2ludGVkKWYodG8paChieSlnKHRoZSlmCihcMDAybmFsKWYocGFyYW1ldGVyKWgoaXMp
-aChzZXQpZyh0bylnKHBvaW50KWcodG8pZyh0aGUpZihuZXdseSlwCmVvcAolJVBhZ2U6IDQ1
-NSAxMQo0NTUgNDc4IGJvcCAyMTU0IC0xMTYgYSBGdigyNC42KTgyIGIoU2FtcGxlKTIzIGIo
-QXBwbGljYXRpb24pMTE1CmIgRnQoNDU1KXAgMCAtNzYgMzQxMyA0IHYgMjk5IDgzIGEgRkEo
-Y3IpbihlYXRlZCkyOCBiKGFycmF5KS0xMQpiKC4pNDUgYihUaGUpMjcgYihhcnJheSlnKGlz
-KWgoZHluYW1pY2FsbHkpZyhhbGxvY2F0ZWQpZihhbmQpaChzaG91bGQpZgooYmUpaCBGcihm
-cmVlXChcKSlwIEZBKGVkKTI5OSAxOTUgeSh3aGVuKTIyIGIodGhlKWkoYXBwbGljYXRpb24p
-ZihpcyloCihcMDAybmlzaGVkKWYod2l0aClnKGl0LikyOTkgNDA3IHkoVGhlKWkgRnIoYXJn
-dlB0ciloCkZBKGNyKW4oZWF0ZWQpaChieSlmIEZyKHBvcHRQYXJzZUFyZ3ZTdHJpbmdcKFwp
-KWUgRkEoaXMpaihzdWl0YWJsZSlmCih0byloKHBhc3MpZyhkaXIpbihlY3RseSlnKHRvKTI5
-OSA1MTkgeSBGcihwb3B0R2V0Q29udGV4dFwoXCkpcApGQSguKTAgODM4IHkgRmsoMjQuNSkx
-MzIgYihIYW5kbGluZyk0MSBiKEV4dHJhKWYoQXJndW1lbnRzKXAKMCA5MjMgMzQxMyA1IHYg
-Mjk5IDExODUgYSBGQShTb21lKTMzIGIoYXBwbGljYXRpb25zKWYoaW1wbGVtZW50KWgodGhl
-KWYKKGVxdWl2YWxlbnQpZShvZilqKG9wdGlvbilmKGFsaWFzaW5nKWcoYnV0KWcobmVlZCky
-OTkKMTI5NyB5KHRvKTM5IGIoZG8paChzbylnKHRociluKG91Z2gpZShzcGVjaWFsKWkobG9n
-aWMuKTgwCmIoVGhlKTM4IGIgRnIocG9wdFN0dWZmQXJnc1woXCkpZyBGQShmdW5jdGlvbiln
-KGFsbG93cyloKGFuKTI5OQoxNDA5IHkoYXBwbGljYXRpb24pMjQgYih0bylnKGluc2VydClm
-KG5ldylnKGFyKW4oZ3VtZW50cylnKGludG8paCh0aGUpZgooY3VyciluKGVudClnIEZyKHBv
-cHRDb250ZXh0KXAgRkEoLikyOTkgMTYxNSB5IEZxKCNpbmNsdWRlKTM1CmIoPHBvcHQuaD4p
-Mjk5IDE4MzEgeShpbnQpaChwb3B0U3R1ZmZBcmdzXChwb3B0Q29udGV4dCkzMQpiKGNvbiwp
-MzYgYihjaGFyKWYoKiopaShhcmd2XCk7KTI5OSAyMDQyIHkgRkEoVGhlKWsocGFzc2VkKWoK
-RnIoYXJndillIEZBKG11c3QpaChoYXZlKWYoYSloIEZyKE5VTEwpZiBGQShwb2ludGVyKWco
-YXMpaChpdHMpZwooXDAwMm5hbCllKGVsZW1lbnQuKTkwIGIoV2hlbikyOTkgMjE1NCB5IEZy
-KHBvcHRHZXROZXh0T3B0XChcKSkzOQpiIEZBKGlzKWoobmV4dClmKGNhbGxlZCwpayh0aGUp
-YyhcMjIzc3R1ZiluKGZlZFwyMjQpZihhciluKGd1bWVudHMpaAooYXIpbihlKWcodGhlKWco
-XDAwMnJzdClnKHRvKTI5OSAyMjY2IHkoYmUpZyhwYXJzZWQuKTg3CmIocG9wdCk0MyBiKHIp
-bihldHVybnMpZSh0bylnKHRoZSlnKG5vcm1hbClnKGFyKW4oZ3VtZW50cylnKG9uY2UpZyhh
-bGwpCmcodGhlKWcoc3R1ZiluKGZlZCkyOTkgMjM3OCB5KGFyKW4oZ3VtZW50cykyMyBiKGhh
-dmUpZyhiZWVuKWcKKGV4aGF1c3RlZC4pMCAyNzA3IHkgRmsoMjQuNikxMzIgYihTYW1wbGUp
-NDEgYihBcHBsaWNhdGlvbilwCjAgMjc5MiBWIDI5OSAzMDU0IGEgRkEoUm9iaW4sKTI4IGIo
-dGhlKWcoc2FtcGxlKWcoYXBwbGljYXRpb24pZyhvbilnCihwYWdlcyloKDI3NFwyMjYyODEp
-ZChvZilpKENoYXB0ZXIpZigxNSwpaSh1c2VzKWYocG9wdCkyOTkKMzE2NiB5KGZvcikzNiBi
-KGl0cylpKGFyKW4oZ3VtZW50KWUocGFyc2luZy4pNzMgYihJdCkzNwpiKHByKW4ob3ZpZGVz
-KWgoYSllKGdvb2QpaShleGFtcGxlKWYob2YpZyhob3cpZih0aGUpZyhwb3B0KTI5OQozMjc4
-IHkobGlicmFyeSkyMiBiKGlzKWkoZ2VuZXJhbGx5KWYodXNlZC4pMjk5IDM0ODkgeShSUE0s
-KTMxCmIoYSlnKHBvcHVsYXIpZihMaW51eCloKHBhY2thZ2UpZyhtYW5hZ2VtZW50KWYocHIp
-bihvZ3JhbSwpayhtYWtlcylkCihoZWF2eSlmKHVzZSkyOTkgMzYwMiB5KG9mKTIzIGIocG9w
-dCdzKWcoZmVhdHVyKW4oZXMuKTMzCmIoTWFueSkyMyBiKG9mKWcoaXRzKWcoY29tbWFuZFwy
-NTVsaW5lKWYoYXIpbihndW1lbnRzKWcoYXIpbihlKWcKKGltcGxlbWVudGVkKTI5OSAzNzE0
-IHkodGhyKW4ob3VnaCkzMCBiKHBvcHQpaShhbGlhc2VzLClnKHdoaWNoKWUKKG1ha2VzKWgo
-UlBNKWcoYW4pZihleGNlbGxlbnQpZyhleGFtcGxlKWgob2YpZyhob3cpZih0bykyOTkKMzgy
-NiB5KHRha2UpMzYgYihhZHZhbnRhZ2UpZyhvZiloKHRoZSlmKHBvcHQpaShsaWJyYXJ5KS0x
-MQpiKC4pNzMgYihGb3IpMzcgYihtb3IpbihlKWcoaW5mb3JtYXRpb24pZShvbilpKFJQTSwp
-ZihzZWUpMjk5CjM5MzggeShodHRwOi8pLTE0IGIoL3d3dyktOSBiKC5ycG0ub3IpbihnKXAg
-ZW9wCiUlVHJhaWxlcgplbmQKdXNlcmRpY3QgL2VuZC1ob29rIGtub3due2VuZC1ob29rfWlm
-CiUlRU9GCg==
-
---==_Exmh_-1506175120--
-
-
diff --git a/tests/ui-tests/mail-atchmt-svg.msg b/tests/ui-tests/mail-atchmt-svg.msg
deleted file mode 100644
index 53335795b0..0000000000
--- a/tests/ui-tests/mail-atchmt-svg.msg
+++ /dev/null
@@ -1,418 +0,0 @@
-X-Mailer: exmh version 2.0.3
-X-Exmh-Isig-CompType: unknown
-X-Exmh-Isig-Folder: drafts
-To:
-cc:
-Subject:
-Mime-Version: 1.0
-Content-Type: multipart/mixed ;
- boundary="==_Exmh_280722180"
---------
-This is a multipart MIME message.
-
---==_Exmh_280722180
-Content-Type: text/plain
-
-
-
---==_Exmh_280722180
-Content-Type: application/svg; name="lion.svg"
-Content-Description: lion.svg
-Content-Transfer-Encoding: base64
-Content-Disposition: attachment; filename="lion.svg"
-
-PD94bWwgdmVyc2lvbiA9ICIxLjAiIHN0YW5kYWxvbmUgPSAieWVzIj8+CjwhRE9DVFlQRSBz
-dmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgQXByaWwgMTk5OS8vRU4iCiAiaHR0cDovL3d3
-dy53My5vcmcvR3JhcGhpY3MvU1ZHL3N2Zy0xOTk5MDQxMi5kdGQiPgo8c3ZnIHdpZHRoID0g
-IjI0MnB4IiBoZWlnaHQ9IjM4M3B4Ij4KPGcgc3R5bGUgPSAic3Ryb2tlOiAjMDAwMDAwIiA+
-IAo8L2c+IAo8ZyBzdHlsZSA9ICJmaWxsOiAjZjJjYzk5IiA+IAogICA8cG9seWdvbiBwb2lu
-dHMgPSAiIDY5LDE4IDgyLDggOTksMyAxMTgsNSAxMzUsMTIgMTQ5LDIxIDE1NiwxMyAxNjUs
-OSAxNzcsMTMgMTgzLDI4IDE4MCw1MCAxNjQsOTEgMTU1LDEwNyAxNTQsMTE0IDE1MSwxMjEg
-MTQxLDEyNyAxMzksMTM2IDE1NSwyMDYgMTU3LDI1MSAxMjYsMzQyIDEzMywzNTcgMTI4LDM3
-NiA4MywzNzYgNzUsMzY4IDY3LDM1MCA2MSwzNTAgNTMsMzY5IDQsMzY5IDIsMzYxIDUsMzU0
-IDEyLDM0MiAxNiwzMjEgNCwyNTcgNCwyNDQgNywyMTggOSwxNzkgMjYsMTI3IDQzLDkzIDMy
-LDc3IDMwLDcwIDI0LDY3IDE2LDQ5IDE3LDM1IDE4LDIzIDMwLDEyIDQwLDcgNTMsNyA2Miwx
-MiA2OSwxOCA2OSwxOCA2OSwxOCIvPiAKPC9nPiAKPGcgc3R5bGUgPSAiZmlsbDogI2U1YjI3
-ZiIgPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiAxNDIsNzkgMTM2LDc0IDEzOCw4MiAxMzMs
-NzggMTMzLDg0IDEyNyw3OCAxMjgsODUgMTI0LDgwIDEyNSw4NyAxMTksODIgMTE5LDkwIDEy
-NSw5OSAxMjUsOTYgMTI4LDEwMCAxMjgsOTQgMTMxLDk4IDEzMiw5MyAxMzUsOTcgMTM2LDkz
-IDEzOCw5NyAxMzksOTQgMTQxLDk4IDE0Myw5NCAxNDQsODUgMTQyLDc5IDE0Miw3OSAxNDIs
-NzkiLz4gCjwvZz4gCjxnIHN0eWxlID0gImZpbGw6ICNlYjgwODAiID4gCiAgIDxwb2x5Z29u
-IHBvaW50cyA9ICIgMTI3LDEwMSAxMzIsMTAwIDEzNyw5OSAxNDQsMTAxIDE0MywxMDUgMTM1
-LDExMCAxMjcsMTAxIDEyNywxMDEgMTI3LDEwMSIvPiAKPC9nPiAKPGcgc3R5bGUgPSAiZmls
-bDogI2YyY2M5OSIgPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiAxNzgsMjI5IDE1NywyNDgg
-MTM5LDI5NiAxMjYsMzQ5IDEzNywzNTYgMTU4LDM1NyAxODMsMzQyIDIxMiwzMzIgMjM1LDI4
-OCAyMzUsMjYxIDIyOCwyNTIgMjEyLDI1MCAxODgsMjUxIDE3OCwyMjkgMTc4LDIyOSAxNzgs
-MjI5Ii8+IAo8L2c+IAo8ZyBzdHlsZSA9ICJmaWxsOiAjOWM4MjZiIiA+IAogICA8cG9seWdv
-biBwb2ludHMgPSAiIDU2LDIyOSA0OCwyNDEgNDgsMjUwIDU3LDI4MSA2MywzMjUgNzEsMzM4
-IDgxLDMxNSA3NiwzMjEgNzksMzExIDgzLDMwMSA3NSwzMDggODAsMjk4IDczLDMwMyA3Niwy
-OTYgNzEsMjk4IDc0LDI5MiA2OSwyOTMgNzQsMjg0IDc4LDI3OCA3MSwyNzggNzQsMjc0IDY4
-LDI3MyA3MCwyNjggNjYsMjY3IDY4LDI2MSA2MCwyNjYgNjIsMjU5IDY1LDI1MyA1NywyNTgg
-NTksMjUxIDU1LDI1NCA1NSwyNDggNjAsMjM3IDU0LDI0MCA1OCwyMzQgNTQsMjM2IDU2LDIy
-OSA1NiwyMjkgNTYsMjI5Ii8+IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDc0LDM2MyA3OSwz
-NjggODEsMzY4IDg1LDM2MiA4OSwzNjMgOTIsMzcwIDk2LDM3MyAxMDEsMzcyIDEwOCwzNjEg
-MTEwLDM3MSAxMTMsMzczIDExNiwzNzEgMTIwLDM1OCAxMjIsMzYzIDEyMywzNzEgMTI2LDM3
-MSAxMjksMzY3IDEzMiwzNTcgMTM1LDM2MSAxMzAsMzc2IDEyNywzNzcgOTQsMzc4IDg0LDM3
-NiA3NiwzNzEgNzQsMzYzIDc0LDM2MyA3NCwzNjMiLz4gCiAgIDxwb2x5Z29uIHBvaW50cyA9
-ICIgMjEyLDI1MCAyMTksMjUxIDIyOCwyNTggMjM2LDI3MCAyMzUsMjg3IDIyNSwzMDQgMjA1
-LDMzMiAxNzcsMzQzIDE3MSwzNTIgMTU4LDM1NyAxNjYsMzUyIDE2OCwzNDYgMTY4LDMzOSAx
-NjUsMzMzIDE1NSwzMjcgMTU1LDMyMyAxNjEsMzIwIDE2NSwzMTYgMTY5LDMxNiAxNjcsMzEy
-IDE3MSwzMTMgMTY4LDMwOCAxNzMsMzA5IDE3MCwzMDYgMTc3LDMwNiAxNzUsMzA4IDE3Nywz
-MTEgMTc0LDMxMSAxNzYsMzE2IDE3MSwzMTUgMTc0LDMxOSAxNjgsMzIwIDE2OCwzMjMgMTc1
-LDMyNyAxNzksMzMyIDE4MywzMjYgMTg0LDMzMiAxODksMzIzIDE5MCwzMjggMTk0LDMyMCAx
-OTQsMzI1IDE5OSwzMTYgMjAxLDMyMCAyMDQsMzEzIDIwNiwzMTYgMjA4LDMxMCAyMTEsMzA1
-IDIxOSwyOTggMjI2LDI4OCAyMjksMjc5IDIyOCwyNjYgMjI0LDI1OSAyMTcsMjUzIDIxMiwy
-NTAgMjEyLDI1MCAyMTIsMjUwIi8+IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDE1MSwyMDUg
-MTUxLDIzOCAxNDksMjUyIDE0MSwyNjggMTI4LDI4MiAxMjEsMzAxIDEzMCwzMDAgMTI2LDMx
-MyAxMTgsMzI0IDExNiwzMzcgMTIwLDM0NiAxMzMsMzUyIDEzMywzNDAgMTM3LDMzMyAxNDUs
-MzI5IDE1NiwzMjcgMTUzLDMxOSAxNTMsMjkxIDE1NywyNzEgMTcwLDI1OSAxNzgsMjc3IDE5
-MywyNTAgMTc0LDIxNiAxNTEsMjA1IDE1MSwyMDUgMTUxLDIwNSIvPiAKICAgPHBvbHlnb24g
-cG9pbnRzID0gIiA3OCwxMjcgOTAsMTQyIDk1LDE1NSAxMDgsMTY0IDEyNSwxNjcgMTM5LDE3
-NSAxNTAsMjA2IDE1MiwxOTEgMTQxLDE0MCAxMjEsMTQ4IDEwMCwxMzYgNzgsMTI3IDc4LDEy
-NyA3OCwxMjciLz4gCiAgIDxwb2x5Z29uIHBvaW50cyA9ICIgMjEsNTggMzUsNjMgMzgsNjgg
-MzIsNjkgNDIsNzQgNDAsNzkgNDcsODAgNTQsODMgNDUsOTQgMzQsODEgMzIsNzMgMjQsNjYg
-MjEsNTggMjEsNTggMjEsNTgiLz4gCiAgIDxwb2x5Z29uIHBvaW50cyA9ICIgNzEsMzQgNjcs
-MzQgNjYsMjcgNTksMjQgNTQsMTcgNDgsMTcgMzksMjIgMzAsMjYgMjgsMzEgMzEsMzkgMzgs
-NDYgMjksNDUgMzYsNTQgNDEsNjEgNDEsNzAgNTAsNjkgNTQsNzEgNTUsNTggNjcsNTIgNzYs
-NDMgNzYsMzkgNjgsNDQgNzEsMzQgNzEsMzQgNzEsMzQiLz4gCiAgIDxwb2x5Z29uIHBvaW50
-cyA9ICIgMTM5LDc0IDE0MSw4MyAxNDMsODkgMTQ0LDEwNCAxNDgsMTA0IDE1NSwxMDYgMTU0
-LDg2IDE1Nyw3NyAxNTUsNzIgMTUwLDc3IDE0NCw3NyAxMzksNzQgMTM5LDc0IDEzOSw3NCIv
-PiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiAxMDUsNDQgMTAyLDUzIDEwOCw1OCAxMTEsNjIg
-MTEyLDU1IDEwNSw0NCAxMDUsNDQgMTA1LDQ0Ii8+IAogICA8cG9seWdvbiBwb2ludHMgPSAi
-IDE0MSw0OCAxNDEsNTQgMTQ0LDU4IDEzOSw2MiAxMzcsNjYgMTM2LDU5IDEzNyw1MiAxNDEs
-NDggMTQxLDQ4IDE0MSw0OCIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiA5OCwxMzUgMTA0
-LDEzMCAxMDUsMTM0IDEwOCwxMzIgMTA4LDEzNSAxMTIsMTM0IDExMywxMzcgMTE2LDEzNiAx
-MTYsMTM5IDExOSwxMzkgMTI0LDE0MSAxMjgsMTQwIDEzMywxMzggMTQwLDEzMyAxMzksMTQw
-IDEyNiwxNDYgMTA0LDE0NCA5OCwxMzUgOTgsMTM1IDk4LDEzNSIvPiAKICAgPHBvbHlnb24g
-cG9pbnRzID0gIiA5NywxMTYgMTAzLDExOSAxMDMsMTE2IDExMSwxMTggMTE2LDExNyAxMjIs
-MTE0IDEyNywxMDcgMTM1LDExMSAxNDIsMTA3IDE0MSwxMTQgMTQ1LDExOCAxNDksMTIxIDE0
-NSwxMjUgMTQwLDEyNCAxMjcsMTIxIDExMywxMjUgMTAwLDEyNCA5NywxMTYgOTcsMTE2IDk3
-LDExNiIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiAxNDcsMzMgMTUyLDM1IDE1NywzNCAx
-NTMsMzEgMTYwLDMxIDE1NiwyOCAxNjEsMjggMTU5LDI0IDE2MywyNSAxNjMsMjEgMTY1LDIy
-IDE3MCwyMyAxNjcsMTcgMTcyLDIxIDE3NCwxOCAxNzUsMjMgMTc2LDIyIDE3NywyOCAxNzcs
-MzMgMTc0LDM3IDE3NiwzOSAxNzQsNDQgMTcxLDQ5IDE2OCw1MyAxNjQsNTcgMTU5LDY4IDE1
-Niw3MCAxNTQsNjAgMTUwLDUxIDE0Niw0MyAxNDQsMzUgMTQ3LDMzIDE0NywzMyAxNDcsMzMi
-Lz4gCiAgIDxwb2x5Z29uIHBvaW50cyA9ICIgODUsNzIgODksNzQgOTMsNzUgMTAwLDc2IDEw
-NSw3NSAxMDIsNzkgOTQsNzkgODgsNzYgODUsNzIgODUsNzIgODUsNzIiLz4gCiAgIDxwb2x5
-Z29uIHBvaW50cyA9ICIgODYsMjE0IDc5LDIyMSA3NiwyMzIgODIsMjI1IDc4LDIzOSA4Miwy
-MzQgNzgsMjQ1IDgxLDI0MyA3OSwyNTUgODQsMjUwIDg0LDI2NyA4NywyNTQgOTAsMjcxIDkw
-LDI1NyA5NSwyNzEgOTMsMjU2IDk1LDI0OSA5MiwyNTIgOTMsMjQzIDg5LDI1MyA4OSwyNDEg
-ODYsMjUwIDg3LDIzNiA4MywyNDUgODcsMjMxIDgyLDIzMSA5MCwyMTkgODQsMjIxIDg2LDIx
-NCA4NiwyMTQgODYsMjE0Ii8+IAo8L2c+IAo8ZyBzdHlsZSA9ICJmaWxsOiAjZmZjYzdmIiA+
-IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDkzLDY4IDk2LDcyIDEwMCw3MyAxMDYsNzIgMTA4
-LDY2IDEwNSw2MyAxMDAsNjIgOTMsNjggOTMsNjggOTMsNjgiLz4gCiAgIDxwb2x5Z29uIHBv
-aW50cyA9ICIgMTQ0LDY0IDE0Miw2OCAxNDIsNzMgMTQ2LDc0IDE1MCw3MyAxNTQsNjQgMTQ5
-LDYyIDE0NCw2NCAxNDQsNjQgMTQ0LDY0Ii8+IAo8L2c+IAo8ZyBzdHlsZSA9ICJmaWxsOiAj
-OWM4MjZiIiA+IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDU3LDkxIDQyLDExMSA1MiwxMDUg
-NDEsMTE3IDUzLDExMiA0NiwxMjAgNTMsMTE2IDUwLDEyNCA1NywxMTkgNTUsMTI3IDYxLDEy
-MiA2MCwxMzAgNjcsMTI2IDY2LDEzNCA3MSwxMjkgNzIsMTM2IDc3LDEzMCA3NiwxMzcgODAs
-MTMzIDgyLDEzOCA4NiwxMzUgOTYsMTM1IDk0LDEyOSA4NiwxMjQgODMsMTE3IDc3LDEyMyA3
-OSwxMTcgNzMsMTIwIDc1LDExMiA2OCwxMTYgNzEsMTExIDY1LDExNCA2OSwxMDcgNjMsMTEw
-IDY4LDEwMiA2MSwxMDcgNjYsOTggNjEsMTAzIDYzLDk3IDU3LDk5IDU3LDkxIDU3LDkxIDU3
-LDkxIi8+IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDgzLDc5IDc2LDc5IDY3LDgyIDc1LDgz
-IDY1LDg4IDc2LDg3IDY1LDkyIDc2LDkxIDY4LDk2IDc3LDk1IDcwLDk5IDgwLDk4IDcyLDEw
-NCA4MCwxMDIgNzYsMTA4IDg1LDEwMyA5MiwxMDEgODcsOTggOTMsOTYgODYsOTQgOTEsOTMg
-ODUsOTEgOTMsODkgOTksODkgMTA1LDkzIDEwNyw4NSAxMDIsODIgOTIsODAgODMsNzkgODMs
-NzkgODMsNzkiLz4gCiAgIDxwb2x5Z29uIHBvaW50cyA9ICIgMTA5LDc3IDExMSw4MyAxMDks
-ODkgMTEzLDk0IDExNyw5MCAxMTcsODEgMTE0LDc4IDEwOSw3NyAxMDksNzcgMTA5LDc3Ii8+
-IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDEyMiwxMjggMTI3LDEyNiAxMzQsMTI3IDEzNiwx
-MjkgMTM0LDEzMCAxMzAsMTI4IDEyNCwxMjkgMTIyLDEyOCAxMjIsMTI4IDEyMiwxMjgiLz4g
-CiAgIDxwb2x5Z29uIHBvaW50cyA9ICIgNzgsMjcgODIsMzIgODAsMzMgODIsMzYgNzgsMzcg
-ODIsNDAgNzgsNDIgODEsNDYgNzYsNDcgNzgsNDkgNzQsNTAgODIsNTIgODcsNTAgODMsNDgg
-OTEsNDYgODYsNDUgOTEsNDIgODgsNDAgOTIsMzcgODYsMzQgOTAsMzEgODYsMjkgODksMjYg
-NzgsMjcgNzgsMjcgNzgsMjciLz4gCiAgIDxwb2x5Z29uIHBvaW50cyA9ICIgODIsMTcgOTIs
-MjAgNzksMjEgOTAsMjUgODEsMjUgOTQsMjggOTMsMjYgMTAxLDMwIDEwMSwyNiAxMDcsMzMg
-MTA4LDI4IDExMSw0MCAxMTMsMzQgMTE1LDQ1IDExNywzOSAxMTksNTQgMTIxLDQ2IDEyNCw1
-OCAxMjYsNDcgMTI5LDU5IDEzMCw0OSAxMzQsNTggMTMzLDQ0IDEzNyw0OCAxMzMsMzcgMTM3
-LDQwIDEzMywzMiAxMjYsMjAgMTM1LDI2IDEzMiwxOSAxMzgsMjMgMTM1LDE3IDE0MiwxOCAx
-MzIsMTEgMTE2LDYgOTQsNiA3OCwxMSA5MiwxMiA4MCwxNCA5MCwxNiA4MiwxNyA4MiwxNyA4
-MiwxNyIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiAxNDIsMjM0IDEzMiwyMjcgMTI0LDIy
-MyAxMTUsMjIwIDExMCwyMjUgMTE4LDIyNCAxMjcsMjI5IDEzNSwyMzYgMTIyLDIzNCAxMTUs
-MjM3IDExMywyNDIgMTIxLDIzOCAxMzksMjQzIDEyMSwyNDUgMTExLDI1NCA5NSwyNTQgMTAy
-LDI0NCAxMDQsMjM1IDExMCwyMjkgMTAwLDIzMSAxMDQsMjI0IDExMywyMTYgMTIyLDIxNSAx
-MzIsMjE3IDE0MSwyMjQgMTQ1LDIzMCAxNDksMjQwIDE0MiwyMzQgMTQyLDIzNCAxNDIsMjM0
-Ii8+IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDExNSwyNTIgMTI1LDI0OCAxMzcsMjQ5IDE0
-MywyNTggMTM0LDI1NSAxMjUsMjU0IDExNSwyNTIgMTE1LDI1MiAxMTUsMjUyIi8+IAogICA8
-cG9seWdvbiBwb2ludHMgPSAiIDExNCwyMTIgMTMwLDIxMyAxNDAsMjE5IDE0NywyMjUgMTQ0
-LDIxNCAxMzcsMjA5IDEyOCwyMDcgMTE0LDIxMiAxMTQsMjEyIDExNCwyMTIiLz4gCiAgIDxw
-b2x5Z29uIHBvaW50cyA9ICIgMTAyLDI2MyAxMDgsMjU4IDExNywyNTcgMTMxLDI1OCAxMTYs
-MjYwIDEwOSwyNjUgMTAyLDI2MyAxMDIsMjYzIDEwMiwyNjMiLz4gCiAgIDxwb2x5Z29uIHBv
-aW50cyA9ICIgNTEsMjQxIDM1LDIyNCA0MCwyMzggMjMsMjI0IDMxLDI0MiAxOSwyMzkgMjgs
-MjQ3IDE3LDI0NiAyNSwyNTAgMzcsMjU0IDM5LDI2MyA0NCwyNzEgNDcsMjk0IDQ4LDMxNyA1
-MSwzMjggNjAsMzUxIDYwLDMyMyA1MywyNjIgNDcsMjQ2IDUxLDI0MSA1MSwyNDEgNTEsMjQx
-Ii8+IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDIsMzY0IDksMzY3IDE0LDM2NiAxOCwzNTUg
-MjAsMzY0IDI2LDM2NiAzMSwzNTcgMzUsMzY0IDM5LDM2NCA0MiwzNTcgNDcsMzYzIDUzLDM2
-MCA1OSwzNTcgNTQsMzY5IDcsMzczIDIsMzY0IDIsMzY0IDIsMzY0Ii8+IAogICA8cG9seWdv
-biBwb2ludHMgPSAiIDcsMzQ5IDE5LDM0NSAyNSwzMzkgMTgsMzQxIDIzLDMzMyAyOCwzMjYg
-MjMsMzI2IDI3LDMyMCAyMywzMTYgMjUsMzExIDIwLDI5OCAxNSwyNzcgMTIsMjY0IDksMjQ5
-IDEwLDIyMyAzLDI0OCA1LDI2MSAxNSwzMDcgMTcsMzI2IDExLDM0MyA3LDM0OSA3LDM0OSA3
-LDM0OSIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiAxMSwyMjYgMTUsMjMxIDI1LDIzNiAx
-OCwyMjcgMTEsMjI2IDExLDIyNiAxMSwyMjYiLz4gCiAgIDxwb2x5Z29uIHBvaW50cyA9ICIg
-MTMsMjE0IDE5LDIxNyAzMiwyMjcgMjMsMjE0IDE2LDIwOCAxNSwxOTAgMjQsMTQ4IDMxLDEy
-MSAyNCwxMzcgMTQsMTcwIDgsMTg5IDEzLDIxNCAxMywyMTQgMTMsMjE0Ii8+IAogICA8cG9s
-eWdvbiBwb2ludHMgPSAiIDIwMiwyNTQgMTk1LDI1OCAxOTksMjYwIDE5MywyNjMgMTk3LDI2
-MyAxOTAsMjY4IDE5NiwyNjggMTkxLDI3MyAxODgsMjgyIDIwMCwyNzIgMTk0LDI3MiAyMDEs
-MjY2IDE5NywyNjUgMjA0LDI2MiAyMDAsMjU4IDIwNCwyNTYgMjAyLDI1NCAyMDIsMjU0IDIw
-MiwyNTQiLz4gCjwvZz4gCjxnIHN0eWxlID0gImZpbGw6ICM4NDU0MzMiID4gCiAgIDxwb2x5
-Z29uIHBvaW50cyA9ICIgMTUxLDIxMyAxNjUsMjEyIDE3OSwyMjUgMTg5LDI0NiAxODcsMjYy
-IDE3OSwyNzUgMTc2LDI2MyAxNzcsMjQ3IDE3MSwyMzMgMTYzLDIzMCAxNjUsMjUxIDE1Nywy
-NjQgMTQ2LDI5OCAxNDUsMzIxIDEzMywzMjYgMTQzLDI4NSAxNTQsMjYwIDE1MywyNDAgMTUx
-LDIxMyAxNTEsMjEzIDE1MSwyMTMiLz4gCiAgIDxwb2x5Z29uIHBvaW50cyA9ICIgOTEsMTMy
-IDk1LDE0NSA5NywxNTQgMTA0LDE0OCAxMDcsMTU1IDEwOSwxNTAgMTExLDE1OCAxMTUsMTUy
-IDExOCwxNTkgMTIwLDE1MyAxMjUsMTYxIDEyNiwxNTUgMTMzLDE2NCAxMzIsMTU0IDEzNywx
-NjMgMTM3LDE1MiAxNDIsMTYzIDE0NywxODYgMTUyLDE5MiAxNDgsMTY3IDE0MSwxNDMgMTI0
-LDE0NSAxMDUsMTQzIDkxLDEzMiA5MSwxMzIgOTEsMTMyIi8+IAo8L2c+IAo8ZyBzdHlsZSA9
-ICJmaWxsOiAjOWM4MjZiIiA+IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDMxLDU3IDIzLDUy
-IDI2LDUxIDIwLDQ0IDIzLDQyIDIxLDM2IDIyLDI5IDI1LDIzIDI0LDMyIDMwLDQzIDI2LDQx
-IDMwLDUwIDI2LDQ4IDMxLDU3IDMxLDU3IDMxLDU3Ii8+IAogICA8cG9seWdvbiBwb2ludHMg
-PSAiIDE0NywyMSAxNDksMjggMTU1LDIxIDE2MSwxNiAxNjcsMTQgMTc1LDE1IDE3MywxMSAx
-NjEsOSAxNDcsMjEgMTQ3LDIxIDE0NywyMSIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiAx
-ODEsMzkgMTc1LDUxIDE2OSw1NyAxNzEsNjUgMTY1LDY4IDE2NSw3NSAxNjAsNzYgMTYyLDkx
-IDE3MSw3MSAxODAsNTEgMTgxLDM5IDE4MSwzOSAxODEsMzkiLz4gCiAgIDxwb2x5Z29uIHBv
-aW50cyA9ICIgMTMyLDM0NiAxMzksMzQ4IDE0MSwzNDYgMTQyLDM0MSAxNDcsMzQyIDE0Mywz
-NTUgMTMzLDM1MCAxMzIsMzQ2IDEzMiwzNDYgMTMyLDM0NiIvPiAKICAgPHBvbHlnb24gcG9p
-bnRzID0gIiAxNDYsMzU1IDE1MSwzNTIgMTU1LDM0OCAxNTcsMzQzIDE2MCwzNDkgMTUxLDM1
-NiAxNDcsMzU3IDE0NiwzNTUgMTQ2LDM1NSAxNDYsMzU1Ii8+IAogICA8cG9seWdvbiBwb2lu
-dHMgPSAiIDk5LDI2NiAxMDAsMjgxIDk0LDMwNSA4NiwzMjIgNzgsMzMyIDcyLDM0NiA3Mywz
-MzEgOTEsMjkxIDk5LDI2NiA5OSwyNjYgOTksMjY2Ii8+IAogICA8cG9seWdvbiBwb2ludHMg
-PSAiIDIwLDM0NyAzMiwzNDIgNDUsMzQwIDU0LDM0NSA0NSwzNTAgNDIsMzUzIDM4LDM1MCAz
-MSwzNTMgMjksMzU2IDIzLDM1MCAxOSwzNTMgMTUsMzQ5IDIwLDM0NyAyMCwzNDcgMjAsMzQ3
-Ii8+IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDc4LDM0NCA4NiwzNDQgOTIsMzQ5IDg4LDM1
-OCA4NCwzNTIgNzgsMzQ0IDc4LDM0NCA3OCwzNDQiLz4gCiAgIDxwb2x5Z29uIHBvaW50cyA9
-ICIgOTMsMzQ3IDEwNCwzNDQgMTE3LDM0NSAxMjQsMzU0IDEyMSwzNTcgMTE2LDM1MSAxMTIs
-MzUxIDEwOCwzNTUgMTAyLDM1MSA5MywzNDcgOTMsMzQ3IDkzLDM0NyIvPiAKPC9nPiAKPGcg
-c3R5bGUgPSAiZmlsbDogIzAwMDAwMCIgPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiAxMDUs
-MTIgMTExLDE4IDExMywyNCAxMTMsMjkgMTE5LDM0IDExNiwyMyAxMTIsMTYgMTA1LDEyIDEw
-NSwxMiAxMDUsMTIiLz4gCiAgIDxwb2x5Z29uIHBvaW50cyA9ICIgMTIyLDI3IDEyNSwzNCAx
-MjcsNDMgMTI4LDM0IDEyNSwyOSAxMjIsMjcgMTIyLDI3IDEyMiwyNyIvPiAKICAgPHBvbHln
-b24gcG9pbnRzID0gIiAxMTUsMTMgMTIyLDE5IDEyMiwxNSAxMTMsMTAgMTE1LDEzIDExNSwx
-MyAxMTUsMTMiLz4gCjwvZz4gCjxnIHN0eWxlID0gImZpbGw6ICNmZmU1YjIiID4gCiAgIDxw
-b2x5Z29uIHBvaW50cyA9ICIgMTE2LDE3MiAxMDcsMTgyIDk4LDE5MyA5OCwxODMgOTAsMTk5
-IDg5LDE4OSA4NCwyMDcgODgsMjA2IDg3LDIxNSA5NSwyMDYgOTMsMjE5IDkxLDIzMCA5OCwy
-MTYgOTcsMjI2IDEwNCwyMTQgMTEyLDIwOSAxMDQsMjA4IDExMywyMDIgMTI2LDIwMCAxMzks
-MjA3IDEzMiwxOTggMTQyLDIwMyAxMzQsMTkyIDE0MiwxOTUgMTM0LDE4NyAxNDAsMTg1IDEz
-MCwxODEgMTM2LDE3NyAxMjYsMTc3IDEyNSwxNzEgMTE2LDE4MCAxMTYsMTcyIDExNiwxNzIg
-MTE2LDE3MiIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiA3NCwyMjAgNjcsMjMwIDY3LDIy
-MSA1OSwyMzUgNjMsMjMzIDYwLDI0OCA3MCwyMzIgNjUsMjQ5IDcxLDI0MyA2NywyNTYgNzMs
-MjUwIDY5LDI2MiA3MywyNTkgNzEsMjY3IDc2LDI2MiA3MiwyNzEgNzgsMjcwIDc2LDI3NSA4
-MiwyNzQgNzgsMjkwIDg2LDI3OSA4NiwyODkgOTIsMjc0IDg4LDI3NSA4NywyNjQgODIsMjcw
-IDgyLDI1OCA3NywyNTcgNzgsMjQ3IDczLDI0NiA3NywyMzMgNzIsMjM2IDc0LDIyMCA3NCwy
-MjAgNzQsMjIwIi8+IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDEzMywyMzAgMTQ3LDI0MiAx
-NDgsMjUwIDE0NSwyNTQgMTM4LDI0NyAxMjksMjQ2IDE0MiwyNDUgMTM4LDI0MSAxMjgsMjM3
-IDEzNywyMzggMTMzLDIzMCAxMzMsMjMwIDEzMywyMzAiLz4gCiAgIDxwb2x5Z29uIHBvaW50
-cyA9ICIgMTMzLDI2MSAxMjUsMjYxIDExNiwyNjMgMTExLDI2NyAxMjUsMjY1IDEzMywyNjEg
-MTMzLDI2MSAxMzMsMjYxIi8+IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDEyMSwyNzEgMTA5
-LDI3MyAxMDMsMjc5IDk5LDMwNSA5MiwzMTYgODUsMzI3IDgzLDMzNSA4OSwzNDAgOTcsMzQx
-IDk0LDMzNiAxMDEsMzM2IDk2LDMzMSAxMDMsMzMwIDk3LDMyNyAxMDgsMzI1IDk5LDMyMiAx
-MDksMzIxIDEwMCwzMTggMTEwLDMxNyAxMDUsMzE0IDExMCwzMTIgMTA3LDMxMCAxMTMsMzA4
-IDEwNSwzMDYgMTE0LDMwMyAxMDUsMzAxIDExNSwyOTggMTA3LDI5NSAxMTUsMjk0IDEwOCwy
-OTMgMTE3LDI5MSAxMDksMjg5IDExNywyODYgMTA5LDI4NiAxMTgsMjgzIDExMiwyODEgMTE4
-LDI3OSAxMTQsMjc4IDExOSwyNzYgMTE1LDI3NCAxMjEsMjcxIDEyMSwyNzEgMTIxLDI3MSIv
-PiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiA3OSwzNjQgNzQsMzU5IDc0LDM1MyA3NiwzNDcg
-ODAsMzUxIDgzLDM1NiA4MiwzNjAgNzksMzY0IDc5LDM2NCA3OSwzNjQiLz4gCiAgIDxwb2x5
-Z29uIHBvaW50cyA9ICIgOTEsMzYzIDkzLDM1NiA5NywzNTMgMTAzLDM1NSAxMDUsMzYwIDEw
-MywzNjYgOTksMzcxIDk0LDM2OCA5MSwzNjMgOTEsMzYzIDkxLDM2MyIvPiAKICAgPHBvbHln
-b24gcG9pbnRzID0gIiAxMTAsMzU1IDExNCwzNTMgMTE4LDM1NyAxMTcsMzYzIDExMywzNjkg
-MTExLDM2MiAxMTAsMzU1IDExMCwzNTUgMTEwLDM1NSIvPiAKICAgPHBvbHlnb24gcG9pbnRz
-ID0gIiAxMjYsMzU0IDEyMywzNTggMTI0LDM2NyAxMjYsMzY5IDEyOSwzNjEgMTI5LDM1NyAx
-MjYsMzU0IDEyNiwzNTQgMTI2LDM1NCIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiAzMCwx
-NTQgMjQsMTY2IDIwLDE4MiAyMywxOTQgMjksMjA4IDM3LDIxOCA0MSwyMTAgNDEsMjIzIDQ2
-LDIxNCA0NiwyMjcgNTIsMjE2IDUyLDIyNyA2MSwyMTYgNTksMjI1IDY4LDIxMyA3MywyMTkg
-NzAsMjA3IDc3LDIxMiA2OSwyMDAgNzcsMjAyIDcwLDE5NCA3OCwxOTcgNjgsMTg3IDc2LDE4
-MiA2NCwxODIgNTgsMTc1IDU4LDE4NSA1MywxNzcgNTAsMTg2IDQ2LDE3MSA0NCwxODIgMzks
-MTY3IDM2LDE3MiAzNiwxNjIgMzAsMTY2IDMwLDE1NCAzMCwxNTQgMzAsMTU0Ii8+IAogICA8
-cG9seWdvbiBwb2ludHMgPSAiIDQ0LDEzMCA0MSwxMzcgNDUsMTM2IDQzLDE1MCA0OCwxNDIg
-NDgsMTU3IDUzLDE1MCA1MiwxNjQgNjAsMTU2IDYxLDE2OSA2NCwxNjUgNjYsMTc1IDcwLDE2
-NyA3NCwxNzYgNzcsMTY4IDgwLDE4MyA4NSwxNzIgOTAsMTgyIDkzLDE3NCA5OCwxODEgOTks
-MTczIDEwNCwxNzUgMTA1LDE2OSAxMTQsMTY4IDEwMiwxNjMgOTUsMTU3IDk0LDE2NiA5MCwx
-NTQgODcsMTYyIDgyLDE0OSA3NSwxNTkgNzIsMTQ4IDY4LDE1NSA2NywxNDMgNjIsMTQ4IDYy
-LDEzOCA1OCwxNDUgNTYsMTMzIDUyLDE0MiA1MiwxMjggNDksMTM0IDQ3LDEyNSA0NCwxMzAg
-NDQsMTMwIDQ0LDEzMCIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiAxMywyMTYgMTksMjE5
-IDM2LDIzMSAyMiwyMjMgMTYsMjIyIDIyLDIyNyAxMiwyMjQgMTMsMjIwIDE2LDIyMCAxMywy
-MTYgMTMsMjE2IDEzLDIxNiIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiAxMCwyMzEgMTQs
-MjM2IDI1LDIzOSAyNywyMzcgMTksMjM0IDEwLDIzMSAxMCwyMzEgMTAsMjMxIi8+IAogICA8
-cG9seWdvbiBwb2ludHMgPSAiIDksMjQ1IDE0LDI0MiAyNSwyNDUgMTMsMjQ1IDksMjQ1IDks
-MjQ1IDksMjQ1Ii8+IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDMzLDI1NSAyNiwyNTMgMTgs
-MjU0IDI1LDI1NiAxOCwyNTggMjcsMjYwIDE4LDI2MyAyNywyNjUgMTksMjY3IDI5LDI3MCAy
-MSwyNzIgMjksMjc2IDIxLDI3OCAzMCwyODEgMjIsMjgzIDMxLDI4NyAyNCwyODggMzIsMjky
-IDIzLDI5MyAzNCwyOTggMjYsMjk5IDM3LDMwMyAzMiwzMDUgMzksMzA5IDMzLDMwOSAzOSwz
-MTQgMzQsMzE0IDQwLDMxOCAzNCwzMTcgNDAsMzIxIDM0LDMyMSA0MSwzMjYgMzMsMzI2IDQw
-LDMzMCAzMywzMzIgMzksMzMzIDMzLDMzNyA0MiwzMzcgNTQsMzQxIDQ5LDMzNyA1MiwzMzUg
-NDcsMzMwIDUwLDMzMCA0NSwzMjUgNDksMzI1IDQ1LDMyMSA0OCwzMjEgNDUsMzE2IDQ2LDMw
-NiA0NSwyODYgNDMsMjc0IDM2LDI2MSAzMywyNTUgMzMsMjU1IDMzLDI1NSIvPiAKICAgPHBv
-bHlnb24gcG9pbnRzID0gIiA3LDM1OCA5LDM1MSAxNCwzNTEgMTcsMzU5IDExLDM2NCA3LDM1
-OCA3LDM1OCA3LDM1OCIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiA0NCwzNTQgNDksMzUx
-IDUyLDM1NSA0OSwzNjEgNDQsMzU0IDQ0LDM1NCA0NCwzNTQiLz4gCiAgIDxwb2x5Z29uIHBv
-aW50cyA9ICIgMzIsMzU3IDM3LDM1MyA0MCwzNTggMzYsMzYxIDMyLDM1NyAzMiwzNTcgMzIs
-MzU3Ii8+IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDEzOSwzMzQgMTQ1LDMzMCAxNTQsMzMw
-IDE1OCwzMzQgMTU0LDM0MSAxNTIsMzQ4IDE0NSwzNTAgMTQ5LDM0MCAxNDcsMzM2IDE0MSwz
-MzkgMTM5LDM0NSAxMzYsMzQyIDEzNiwzMzkgMTM5LDMzNCAxMzksMzM0IDEzOSwzMzQiLz4g
-CiAgIDxwb2x5Z29uIHBvaW50cyA9ICIgMjA4LDI1OSAyMTUsMjU5IDIxMiwyNTUgMjIwLDI1
-OSAyMjQsMjYzIDIyNSwyNzQgMjI0LDI4MyAyMjAsMjkyIDIwOCwzMDAgMjA2LDMwOCAyMDMs
-MzA0IDE5OSwzMTUgMTk3LDMwOSAxOTUsMzE4IDE5MywzMTMgMTkwLDMyMiAxOTAsMzE2IDE4
-NSwzMjUgMTgyLDMxOCAxODAsMzI1IDE3MiwzMjEgMTc4LDMyMCAxNzYsMzEzIDE4NiwzMTIg
-MTgwLDMwNyAxODgsMzA3IDE4NCwzMDMgMTkxLDMwMiAxODYsMjk5IDE5NSwyOTQgMTg3LDI5
-MCAxOTcsMjg4IDE5MiwyODYgMjAxLDI4MyAxOTQsMjgwIDIwMywyNzcgMTk4LDI3NSAyMDcs
-MjcxIDIwMCwyNjkgMjA5LDI2NSAyMDQsMjY1IDIxMiwyNjIgMjA4LDI1OSAyMDgsMjU5IDIw
-OCwyNTkiLz4gCiAgIDxwb2x5Z29uIHBvaW50cyA9ICIgMTA2LDEyNiAxMDYsMTMxIDEwOSwx
-MzIgMTExLDEzNCAxMTUsMTMyIDExNSwxMzUgMTE5LDEzMyAxMTgsMTM3IDEyMywxMzcgMTI4
-LDEzNyAxMzMsMTM0IDEzNiwxMzAgMTM2LDEyNyAxMzIsMTI0IDExOCwxMjggMTEyLDEyOCAx
-MDYsMTI2IDEwNiwxMjYgMTA2LDEyNiIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiAxMDcs
-MTE0IDEwMSwxMTAgOTgsMTAyIDEwNSw5NyAxMTEsOTggMTE5LDEwMiAxMjEsMTA4IDExOCwx
-MTIgMTEzLDExNSAxMDcsMTE0IDEwNywxMTQgMTA3LDExNCIvPiAKICAgPHBvbHlnb24gcG9p
-bnRzID0gIiAxNDgsMTA2IDE0NSwxMTAgMTQ2LDExNiAxNTAsMTE4IDE1MiwxMTEgMTUxLDEw
-NyAxNDgsMTA2IDE0OCwxMDYgMTQ4LDEwNiIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiA4
-MCw1NSA3MCw1MiA3NSw1OCA2Myw1NyA3Miw2MSA1Nyw2MSA2Nyw2NiA1Nyw2NyA2Miw2OSA1
-NCw3MSA2MSw3MyA1NCw3NyA2Myw3OCA1Myw4NSA2MCw4NCA1Niw5MCA2OSw4NCA2Myw4MiA3
-NSw3NiA3MCw3NSA3Nyw3MiA3Miw3MSA3OCw2OSA3Miw2NiA4MSw2NyA3OCw2NCA4Miw2MyA4
-MCw2MCA4Niw2MiA4MCw1NSA4MCw1NSA4MCw1NSIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0g
-IiA4Nyw1NiA5MSw1MiA5Niw1MCAxMDIsNTYgOTgsNTYgOTIsNjAgODcsNTYgODcsNTYgODcs
-NTYiLz4gCiAgIDxwb2x5Z29uIHBvaW50cyA9ICIgODUsNjggODksNzMgOTgsNzYgMTA2LDc0
-IDk2LDczIDkxLDcwIDg1LDY4IDg1LDY4IDg1LDY4Ii8+IAogICA8cG9seWdvbiBwb2ludHMg
-PSAiIDExNSw1NyAxMTQsNjQgMTExLDY0IDExNSw3NSAxMjIsODEgMTIyLDc0IDEyNiw3OSAx
-MjYsNzQgMTMxLDc4IDEzMCw3MiAxMzMsNzcgMTMxLDY4IDEyNiw2MSAxMTksNTcgMTE1LDU3
-IDExNSw1NyAxMTUsNTciLz4gCiAgIDxwb2x5Z29uIHBvaW50cyA9ICIgMTQ1LDQ4IDE0Myw1
-MyAxNDcsNTkgMTUxLDU5IDE1MCw1NSAxNDUsNDggMTQ1LDQ4IDE0NSw0OCIvPiAKICAgPHBv
-bHlnb24gcG9pbnRzID0gIiAyNiwyMiAzNCwxNSA0MywxMCA1MiwxMCA1OSwxNiA0NywxNSAz
-MiwyMiAyNiwyMiAyNiwyMiAyNiwyMiIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiAxNjAs
-MTkgMTUyLDI2IDE0OSwzNCAxNTQsMzMgMTUyLDMwIDE1NywzMCAxNTUsMjYgMTU4LDI3IDE1
-NywyMyAxNjEsMjMgMTYwLDE5IDE2MCwxOSAxNjAsMTkiLz4gCjwvZz4gCjxnIHN0eWxlID0g
-ImZpbGw6ICMwMDAwMDAiID4gCiAgIDxwb2x5Z29uIHBvaW50cyA9ICIgOTgsMTE3IDEwNSwx
-MjIgMTA5LDEyMiAxMDUsMTE3IDExMywxMjAgMTIxLDEyMCAxMzAsMTEyIDEyOCwxMDggMTIz
-LDEwMyAxMjMsOTkgMTI4LDEwMSAxMzIsMTA2IDEzNSwxMDkgMTQyLDEwNSAxNDIsMTAxIDE0
-NSwxMDEgMTQ1LDkxIDE0OCwxMDEgMTQ1LDEwNSAxMzYsMTEyIDEzNSwxMTYgMTQzLDEyNCAx
-NDgsMTIwIDE1MCwxMjIgMTQyLDEyOCAxMzMsMTIyIDEyMSwxMjUgMTEyLDEyNiAxMDMsMTI1
-IDEwMCwxMjkgOTYsMTI0IDk4LDExNyA5OCwxMTcgOTgsMTE3Ii8+IAogICA8cG9seWdvbiBw
-b2ludHMgPSAiIDE0NiwxMTggMTUyLDExOCAxNTIsMTE1IDE0OSwxMTUgMTQ2LDExOCAxNDYs
-MTE4IDE0NiwxMTgiLz4gCiAgIDxwb2x5Z29uIHBvaW50cyA9ICIgMTQ4LDExMiAxNTQsMTEx
-IDE1NCwxMDkgMTQ5LDEwOSAxNDgsMTEyIDE0OCwxMTIgMTQ4LDExMiIvPiAKICAgPHBvbHln
-b24gcG9pbnRzID0gIiAxMDYsMTEyIDEwOCwxMTUgMTE0LDExNiAxMTgsMTE0IDEwNiwxMTIg
-MTA2LDExMiAxMDYsMTEyIi8+IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDEwOCwxMDggMTEx
-LDExMCAxMTYsMTEwIDExOSwxMDggMTA4LDEwOCAxMDgsMTA4IDEwOCwxMDgiLz4gCiAgIDxw
-b2x5Z29uIHBvaW50cyA9ICIgMTA2LDEwNCAxMDksMTA1IDExNywxMDYgMTE1LDEwNCAxMDYs
-MTA0IDEwNiwxMDQgMTA2LDEwNCIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiA1MCwyNSA0
-MSwyNiAzNCwzMyAzOSw0MyA0OSw1OCAzNiw1MSA0Nyw2OCA1NSw2OSA1NCw1OSA2MSw1NyA3
-NCw0NiA2MCw1MiA2Nyw0MiA1Nyw0OCA2MSw0MCA1NCw0NSA2MCwzNiA1OSwyOSA0OCwzOCA1
-MiwzMCA0NywzMiA1MCwyNSA1MCwyNSA1MCwyNSIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0g
-IiAxNDcsMzQgMTUyLDQxIDE1NSw0OSAxNjEsNTMgMTU3LDQ3IDE2NCw0NyAxNTgsNDMgMTY4
-LDQ0IDE1OSw0MCAxNjQsMzcgMTY5LDM3IDE2NCwzMyAxNjksMzQgMTY1LDI4IDE3MCwzMCAx
-NzAsMjUgMTczLDI5IDE3NSwyNyAxNzYsMzIgMTczLDM2IDE3NSwzOSAxNzIsNDIgMTcyLDQ2
-IDE2OCw0OSAxNzAsNTUgMTYyLDU3IDE1OCw2MyAxNTUsNTggMTUzLDUwIDE0OSw0NiAxNDcs
-MzQgMTQ3LDM0IDE0NywzNCIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiAxNTUsNzEgMTU5
-LDgwIDE1Nyw5MyAxNTcsMTAyIDE1NSwxMDggMTUwLDEwMSAxNDksOTMgMTU0LDEwMSAxNTIs
-OTEgMTUxLDgzIDE1NSw3OSAxNTUsNzEgMTU1LDcxIDE1NSw3MSIvPiAKICAgPHBvbHlnb24g
-cG9pbnRzID0gIiAxMTIsNzggMTE1LDgxIDExNCw5MSAxMTIsODcgMTEzLDgyIDExMiw3OCAx
-MTIsNzggMTEyLDc4Ii8+IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDc4LDI4IDY0LDE3IDU4
-LDExIDQ3LDkgMzYsMTAgMjgsMTYgMjEsMjYgMTgsNDEgMjAsNTEgMjMsNjEgMzMsNjUgMjgs
-NjggMzcsNzQgMzYsODEgNDMsODcgNDgsOTAgNDMsMTAwIDQwLDk4IDM5LDkwIDMxLDgwIDMw
-LDcyIDIyLDcxIDE3LDYxIDE0LDQ2IDE2LDI4IDIzLDE3IDMzLDkgNDUsNiA1NCw2IDY1LDEy
-IDc4LDI4IDc4LDI4IDc4LDI4Ii8+IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDY3LDE4IDc2
-LDkgODcsNSAxMDEsMiAxMTgsMyAxMzUsOCAxNDksMjAgMTQ5LDI2IDE0NCwxOSAxMzIsMTIg
-MTIxLDkgMTA1LDcgODksOCA3NiwxNCA3MCwyMCA2NywxOCA2NywxOCA2NywxOCIvPiAKICAg
-PHBvbHlnb24gcG9pbnRzID0gIiA1Niw5OCA0OCwxMDYgNTYsMTAzIDQ3LDExMiA1NiwxMTAg
-NTIsMTE1IDU3LDExMyA1MiwxMjEgNjIsMTE1IDU4LDEyMyA2NSwxMTkgNjMsMTI1IDY5LDEy
-MSA2OCwxMjcgNzQsMTI1IDc0LDEyOSA3OSwxMjggODMsMTMyIDk0LDEzNSA5MywxMjkgODUs
-MTI3IDgxLDEyMiA3NiwxMjYgNzUsMTIxIDcxLDEyNCA3MSwxMTcgNjYsMTIxIDY2LDExNyA2
-MiwxMTcgNjQsMTEyIDYwLDExMyA2MCwxMTAgNTcsMTExIDYxLDEwNSA1NywxMDcgNjAsMTAx
-IDU1LDEwMiA1Niw5OCA1Niw5OCA1Niw5OCIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiAx
-MDEsMTMyIDEwMywxMzggMTA2LDEzNCAxMDYsMTM5IDExMiwxMzYgMTExLDE0MiAxMTUsMTM5
-IDExNCwxNDMgMTE5LDE0MiAxMjUsMTQ1IDEzMSwxNDIgMTM1LDEzOCAxNDAsMTM0IDE0MCwx
-MjkgMTQzLDEzNSAxNDUsMTQ5IDE1MCwxNzEgMTQ5LDE4NCAxNDUsMTY1IDE0MSwxNTAgMTM2
-LDE0NyAxMzIsMTUxIDEzMSwxNDkgMTI2LDE1MiAxMjUsMTUwIDEyMSwxNTIgMTE3LDE0OCAx
-MTEsMTUyIDExMCwxNDggMTA1LDE0OSAxMDQsMTQ1IDk4LDE1MCA5NiwxMzggOTQsMTMyIDk0
-LDEzMCA5OCwxMzIgMTAxLDEzMiAxMDEsMTMyIDEwMSwxMzIiLz4gCiAgIDxwb2x5Z29uIHBv
-aW50cyA9ICIgNDEsOTQgMzIsMTEwIDIzLDEzMiAxMiwxNjMgNiwxOTAgNywyMTcgNSwyMzYg
-MywyNDcgOSwyMzAgMTIsMjExIDEyLDE4NSAxOCwxNjAgMjYsMTM0IDM1LDExMCA0Myw5OSA0
-MSw5NCA0MSw5NCA0MSw5NCIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiAzMiwyNDYgNDEs
-MjUwIDUwLDI1NyA1MiwyNjcgNTMsMjk1IDUzLDMyMyA1OSwzNTAgNTQsMzYzIDUxLDM2NSA0
-NCwzNjYgNDIsMzYwIDQwLDM3MiA1NCwzNzIgNTksMzY2IDYyLDM1MyA3MSwzNTIgNzUsMzM1
-IDczLDMzMCA2NiwzMTggNjgsMzAyIDY0LDI5NCA2NywyODggNjMsMjg2IDYzLDI3OSA1OSwy
-NzUgNTgsMjY3IDU2LDI2MiA1MCwyNDcgNDIsMjM1IDQ0LDI0NiAzMiwyMzYgMzUsMjQ0IDMy
-LDI0NiAzMiwyNDYgMzIsMjQ2Ii8+IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDEzNCwzMjQg
-MTQ2LDMyMCAxNTksMzIyIDE3MywzMjcgMTc5LDMzNyAxNzksMzQ5IDE3MiwzNTUgMTU4LDM1
-NyAxNzAsMzUwIDE3NCwzNDMgMTcwLDMzMyAxNjMsMzI4IDE1MiwzMjYgMTM0LDMyOSAxMzQs
-MzI0IDEzNCwzMjQgMTM0LDMyNCIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiAxNzMsMzM5
-IDE4MywzMzQgMTg0LDMzOCAxOTEsMzI5IDE5NCwzMzIgMTk5LDMyMyAyMDIsMzI1IDIwNiwz
-MTggMjA5LDMyMCAyMTMsMzA5IDIyMSwzMDMgMjI4LDI5NiAyMzIsMjg5IDIzNCwyNzkgMjMz
-LDI2OSAyMzAsMjYyIDIyNSwyNTYgMjE5LDI1MyAyMDgsMjUyIDE5OCwyNTIgMjEwLDI0OSAy
-MjMsMjUwIDIzMiwyNTcgMjM3LDI2NSAyMzgsMjc3IDIzOCwyOTEgMjMyLDMwNSAyMjEsMzIz
-IDIxOCwzMzUgMjEyLDM0MiAyMDAsMzQ5IDE3OCwzNDggMTczLDMzOSAxNzMsMzM5IDE3Mywz
-MzkiLz4gCiAgIDxwb2x5Z29uIHBvaW50cyA9ICIgMTY1LDI5NiAxNTgsMzAxIDE1NiwzMTAg
-MTU2LDMyMyAxNjIsMzI0IDE1OSwzMTggMTYyLDMwOCAxNjIsMzA0IDE2NSwyOTYgMTY1LDI5
-NiAxNjUsMjk2Ii8+IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDk5LDI1MiAxMDUsMjQ0IDEw
-NywyMzQgMTE1LDIyOCAxMjEsMjI4IDEzMSwyMzUgMTIyLDIzMyAxMTMsMjM1IDEwOSwyNDYg
-MTIxLDIzOSAxMzMsMjQzIDEyMSwyNDMgMTEwLDI1MSA5OSwyNTIgOTksMjUyIDk5LDI1MiIv
-PiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiAxMTcsMjUyIDEyNCwyNDcgMTM0LDI0OSAxMzYs
-MjUzIDEyNiwyNTIgMTE3LDI1MiAxMTcsMjUyIDExNywyNTIiLz4gCiAgIDxwb2x5Z29uIHBv
-aW50cyA9ICIgMTE3LDIxOCAxMzIsMjI0IDE0NCwyMzMgMTQwLDIyNSAxMzIsMjE5IDExNywy
-MTggMTE3LDIxOCAxMTcsMjE4Ii8+IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDEyMiwyMTIg
-MTM0LDIxNCAxNDMsMjIxIDE0MSwyMTMgMTMyLDIxMCAxMjIsMjEyIDEyMiwyMTIgMTIyLDIx
-MiIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiA2OSwzNTIgNzAsMzYzIDc2LDM3MyA4Niwz
-NzggOTcsMzc5IDEwOCwzNzkgMTIwLDM3NyAxMjgsMzc4IDEzMiwzNzMgMTM1LDM2MSAxMzMs
-MzU4IDEzMiwzNjYgMTI3LDM3NSAxMjEsMzc0IDEyMSwzNjIgMTE5LDM2NyAxMTcsMzc0IDEx
-MCwzNzYgMTEwLDM2MiAxMDcsMzU3IDEwNiwzNzEgMTA0LDM3NSA5NywzNzYgOTAsMzc1IDkw
-LDM2OCA4NiwzNjIgODMsMzY0IDg2LDM2OSA4NSwzNzMgNzgsMzcwIDczLDM2MiA3MSwzNTEg
-NjksMzUyIDY5LDM1MiA2OSwzNTIiLz4gCiAgIDxwb2x5Z29uIHBvaW50cyA9ICIgMTAwLDM2
-MCA5NiwzNjMgOTksMzY5IDEwMiwzNjQgMTAwLDM2MCAxMDAsMzYwIDEwMCwzNjAiLz4gCiAg
-IDxwb2x5Z29uIHBvaW50cyA9ICIgMTE1LDM2MCAxMTIsMzYzIDExNCwzNjkgMTE3LDM2NCAx
-MTUsMzYwIDExNSwzNjAgMTE1LDM2MCIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiAxMjcs
-MzYyIDEyNSwzNjQgMTI2LDM2OSAxMjgsMzY1IDEyNywzNjIgMTI3LDM2MiAxMjcsMzYyIi8+
-IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDUsMjU1IDcsMjc2IDExLDMwNCAxNSwzMjAgMTMs
-MzM0IDYsMzQ4IDIsMzUzIDAsMzYzIDUsMzcyIDEyLDM3NCAyNSwzNzIgMzgsMzcyIDQ0LDM2
-OSA0MiwzNjcgMzYsMzY4IDMxLDM2OSAzMCwzNjAgMjcsMzY4IDIwLDM3MCAxNiwzNjEgMTUs
-MzY4IDEwLDM2OSAzLDM2NiAzLDM1OSA2LDM1MiAxMSwzNDggMTcsMzMxIDE5LDMxNiAxMiwy
-OTEgOSwyNzQgNSwyNTUgNSwyNTUgNSwyNTUiLz4gCiAgIDxwb2x5Z29uIHBvaW50cyA9ICIg
-MTAsMzU4IDcsMzYyIDEwLDM2NiAxMSwzNjIgMTAsMzU4IDEwLDM1OCAxMCwzNTgiLz4gCiAg
-IDxwb2x5Z29uIHBvaW50cyA9ICIgMjUsMzU3IDIyLDM2MCAyNCwzNjYgMjcsMzYwIDI1LDM1
-NyAyNSwzNTcgMjUsMzU3Ii8+IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDM3LDM1NyAzNCwz
-NjEgMzYsMzY1IDM4LDM2MSAzNywzNTcgMzcsMzU3IDM3LDM1NyIvPiAKICAgPHBvbHlnb24g
-cG9pbnRzID0gIiA0OSwzNTYgNDYsMzU5IDQ3LDM2NCA1MCwzNjAgNDksMzU2IDQ5LDM1NiA0
-OSwzNTYiLz4gCiAgIDxwb2x5Z29uIHBvaW50cyA9ICIgMTMwLDEwMSAxMzIsMTAyIDEzNSwx
-MDEgMTM5LDEwMiAxNDMsMTAzIDE0MiwxMDEgMTM3LDEwMCAxMzMsMTAwIDEzMCwxMDEgMTMw
-LDEwMSAxMzAsMTAxIi8+IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDEwNiw0OCAxMDUsNTIg
-MTA4LDU2IDEwOSw1MiAxMDYsNDggMTA2LDQ4IDEwNiw0OCIvPiAKICAgPHBvbHlnb24gcG9p
-bnRzID0gIiAxMzksNTIgMTM5LDU2IDE0MCw2MCAxNDIsNTggMTQxLDU2IDEzOSw1MiAxMzks
-NTIgMTM5LDUyIi8+IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDI1LDM0OSAyOSwzNTEgMzAs
-MzU1IDMzLDM1MCAzNywzNDggNDIsMzUxIDQ1LDM0NyA0OSwzNDUgNDQsMzQzIDM2LDM0NSAy
-NSwzNDkgMjUsMzQ5IDI1LDM0OSIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiA5OCwzNDcg
-MTA1LDM1MSAxMDcsMzU0IDEwOSwzNDkgMTE1LDM0OSAxMjAsMzUzIDExOCwzNDkgMTEzLDM0
-NiAxMDQsMzQ2IDk4LDM0NyA5OCwzNDcgOTgsMzQ3Ii8+IAogICA8cG9seWdvbiBwb2ludHMg
-PSAiIDgzLDM0OCA4NywzNTIgODcsMzU3IDg5LDM1MSA4NywzNDggODMsMzQ4IDgzLDM0OCA4
-MywzNDgiLz4gCiAgIDxwb2x5Z29uIHBvaW50cyA9ICIgMTU1LDEwNyAxNjMsMTA3IDE3MCwx
-MDcgMTg2LDEwOCAxNzUsMTA5IDE1NSwxMDkgMTU1LDEwNyAxNTUsMTA3IDE1NSwxMDciLz4g
-CiAgIDxwb2x5Z29uIHBvaW50cyA9ICIgMTUzLDExNCAxNjIsMTEzIDE3NSwxMTIgMTkyLDEx
-NCAxNzMsMTE0IDE1NCwxMTUgMTUzLDExNCAxNTMsMTE0IDE1MywxMTQiLz4gCiAgIDxwb2x5
-Z29uIHBvaW50cyA9ICIgMTUyLDExOCAxNjQsMTIwIDE4MCwxMjMgMTk3LDEyOSAxNjksMTIz
-IDE1MSwxMjAgMTUyLDExOCAxNTIsMTE4IDE1MiwxMTgiLz4gCiAgIDxwb2x5Z29uIHBvaW50
-cyA9ICIgNjgsMTA5IDg3LDEwNiAxMDcsMTA2IDEwNiwxMDggODgsMTA4IDY4LDEwOSA2OCwx
-MDkgNjgsMTA5Ii8+IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDEwNSwxMTEgOTUsMTEyIDc5
-LDExNCA3MSwxMTYgODUsMTE1IDEwMiwxMTMgMTA1LDExMSAxMDUsMTExIDEwNSwxMTEiLz4g
-CiAgIDxwb2x5Z29uIHBvaW50cyA9ICIgMTA4LDEwMSA5OCw5OSA4Nyw5OSA3OCw5OSA5Mywx
-MDAgMTA1LDEwMiAxMDgsMTAxIDEwOCwxMDEgMTA4LDEwMSIvPiAKICAgPHBvbHlnb24gcG9p
-bnRzID0gIiA4NSw2MyA5MSw2MyA5Nyw2MCAxMDQsNjAgMTA4LDYyIDExMSw2OSAxMTIsNzUg
-MTEwLDc0IDEwOCw3MSAxMDMsNzMgMTA2LDY5IDEwNSw2NSAxMDMsNjQgMTAzLDY3IDEwMiw3
-MCA5OSw3MCA5Nyw2NiA5NCw2NyA5Nyw3MiA4OCw2NyA4NCw2NiA4NSw2MyA4NSw2MyA4NSw2
-MyIvPiAKICAgPHBvbHlnb24gcG9pbnRzID0gIiAxNDAsNzQgMTQxLDY2IDE0NCw2MSAxNTAs
-NjEgMTU2LDYyIDE1Myw3MCAxNTAsNzMgMTUyLDY1IDE1MCw2NSAxNTEsNjggMTQ5LDcxIDE0
-Niw3MSAxNDQsNjYgMTQzLDcwIDE0Myw3NCAxNDAsNzQgMTQwLDc0IDE0MCw3NCIvPiAKICAg
-PHBvbHlnb24gcG9pbnRzID0gIiAxNDYsMjAgMTU2LDExIDE2Myw5IDE3Miw5IDE3OCwxNCAx
-ODIsMTggMTg0LDMyIDE4Miw0MiAxODIsNTIgMTc3LDU4IDE3Niw2NyAxNzEsNzYgMTY1LDkw
-IDE1NywxMDUgMTYwLDkyIDE2NCw4NSAxNjgsNzggMTY3LDczIDE3Myw2NiAxNzIsNjIgMTc1
-LDU5IDE3NCw1NSAxNzcsNTMgMTgwLDQ2IDE4MSwyOSAxNzksMjEgMTczLDEzIDE2NiwxMSAx
-NTksMTMgMTUzLDE4IDE0OCwyMyAxNDYsMjAgMTQ2LDIwIDE0NiwyMCIvPiAKICAgPHBvbHln
-b24gcG9pbnRzID0gIiAxNTAsMTg3IDE0OCwyMTEgMTUwLDIzMyAxNTMsMjQ3IDE0OCwyNjcg
-MTM1LDI4MyAxMjUsMjk5IDEzNiwyOTIgMTMxLDMxMyAxMjIsMzI4IDEyMiwzNDUgMTI5LDM1
-MiAxMzMsMzU5IDEzMywzNjcgMTM3LDM1OSAxNDgsMzU2IDE0MCwzNTAgMTMxLDM0NyAxMjks
-MzQwIDEzMiwzMzIgMTQwLDMyOCAxMzcsMzIyIDE0MCwzMDQgMTU0LDI2NSAxNTcsMjQ0IDE1
-NSwyMjMgMTYxLDIyMCAxNzUsMjI5IDE4NiwyNDcgMTg1LDI2MCAxNzYsMjc1IDE3OCwyODcg
-MTg1LDI3NyAxODgsMjYxIDE5NiwyNTMgMTg5LDIzNiAxNzQsMjEzIDE1MCwxODcgMTUwLDE4
-NyAxNTAsMTg3Ii8+IAogICA8cG9seWdvbiBwb2ludHMgPSAiIDE0NywzMzggMTQyLDM0MSAx
-NDMsMzQ1IDE0MSwzNTQgMTQ3LDM0MyAxNDcsMzM4IDE0NywzMzggMTQ3LDMzOCIvPiAKICAg
-PHBvbHlnb24gcG9pbnRzID0gIiAxNTcsMzQyIDE1NiwzNDkgMTUwLDM1NiAxNTcsMzUzIDE2
-MywzNDYgMTYyLDM0MiAxNTcsMzQyIDE1NywzNDIgMTU3LDM0MiIvPiAKICAgPHBvbHlnb24g
-cG9pbnRzID0gIiA5OSwyNjUgOTYsMjg0IDkyLDI5OSA3MywzMzkgNzMsMzMzIDg3LDMwMCA5
-OSwyNjUgOTksMjY1IDk5LDI2NSIvPiAKPC9nPjwvc3ZnPgoNCg==
-
---==_Exmh_280722180--
-
-
diff --git a/tests/ui-tests/message-browser.c b/tests/ui-tests/message-browser.c
deleted file mode 100644
index fb12b959d9..0000000000
--- a/tests/ui-tests/message-browser.c
+++ /dev/null
@@ -1,819 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*--------------------------------*-C-*---------------------------------*
- *
- * Copyright 2000, Matt Loper <matt@helixcode.com>.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- *----------------------------------------------------------------------*/
-
-#include <gnome.h>
-#include <camel/camel.h>
-#include <camel/camel-mime-message.h>
-#include <camel/camel-stream.h>
-#include <camel/camel-stream-fs.h>
-#include <camel/gmime-utils.h>
-#include "../../mail/html-stream.h"
-#include <camel/camel-formatter.h>
-
-/* gtkhtml stuff */
-#include <gtkhtml/gtkhtml.h>
-
-/* corba/bonobo stuff */
-#include <bonobo.h>
-#include <libgnorba/gnorba.h>
-#include <bonobo/bonobo-stream-memory.h>
-
-#include <widgets/e-paned/e-hpaned.h>
-
-static void
-print_usage_and_quit()
-{
- g_print ("Usage: message-browser [FILENAME]\n");
- g_print ("Where FILENAME is the filename of a mime message ");
- g_print ("in \"message/rfc822\" format.\n");
- exit (0);
-}
-
-
-/*----------------------------------------------------------------------*
- * Filling out the tree control view of a mime-message
- *----------------------------------------------------------------------*/
-
-static void
-handle_tree_item (CamelDataWrapper* object, GtkWidget* tree_ctrl)
-{
- GtkWidget* tree_item;
- gchar* label = gmime_content_field_get_mime_type (object->mime_type);
-
- CamelDataWrapper* containee;
- GtkWidget* containee_tree_item;
- gchar* containee_label;
-
- GtkWidget* subtree = NULL;
-
- tree_item = gtk_tree_item_new_with_label (label);
- gtk_object_set_data (GTK_OBJECT (tree_item),
- "camel_data_wrapper", object);
- gtk_tree_append (GTK_TREE (tree_ctrl), tree_item);
-
- gtk_widget_show(tree_item);
-
- /* If our object is a leaf, we're done */
- if (!CAMEL_IS_MEDIUM (object))
- return;
-
- containee =
- camel_medium_get_content_object (
- CAMEL_MEDIUM (object));
-
- g_assert (containee);
-
- /* If it is a container, insert its contents into the tree */
- containee_label = camel_data_wrapper_get_mime_type (containee);
-
- subtree = gtk_tree_new();
-
- containee_tree_item =
- gtk_tree_item_new_with_label (containee_label);
- gtk_object_set_data (GTK_OBJECT (containee_tree_item),
- "camel_data_wrapper",
- containee);
- gtk_tree_append (GTK_TREE (subtree), containee_tree_item);
-
- gtk_tree_item_set_subtree (GTK_TREE_ITEM(tree_item),
- GTK_WIDGET (subtree));
- gtk_widget_show(containee_tree_item);
-
- if (CAMEL_IS_MULTIPART (containee))
- {
- CamelMultipart* multipart =
- CAMEL_MULTIPART (containee);
- int max_multiparts =
- camel_multipart_get_number (multipart);
- int i;
-
- if (max_multiparts > 0) {
- subtree = gtk_tree_new();
- gtk_tree_item_set_subtree (
- GTK_TREE_ITEM(containee_tree_item),
- GTK_WIDGET (subtree));
- }
-
- for (i = 0; i < max_multiparts; i++) {
- CamelMimeBodyPart* body_part =
- camel_multipart_get_part (
- multipart, i);
-
- handle_tree_item (
- CAMEL_DATA_WRAPPER (body_part),
- GTK_WIDGET (subtree));
- }
-
- }
- gtk_tree_item_expand (
- GTK_TREE_ITEM (containee_tree_item));
- gtk_tree_item_expand (GTK_TREE_ITEM (tree_item));
-}
-
-static GtkWidget*
-get_gtk_html_contents_window (CamelDataWrapper* data);
-
-static void
-tree_selection_changed( GtkWidget *tree )
-{
- GList *i;
-
- i = GTK_TREE_SELECTION(tree);
- while (i){
- gchar* name;
- GtkLabel* label;
- GtkWidget* item;
- CamelDataWrapper* camel_data_wrapper;
-
- /* Get a GtkWidget pointer from the list node */
- item = GTK_WIDGET (i->data);
- camel_data_wrapper =
- gtk_object_get_data (GTK_OBJECT (item),
- "camel_data_wrapper");
-
- g_assert (camel_data_wrapper);
- get_gtk_html_contents_window (camel_data_wrapper);
-
- label = GTK_LABEL (GTK_BIN (item)->child);
- gtk_label_get (label, &name);
- g_print ("\t%s on level %d\n", name, GTK_TREE
- (item->parent)->level);
- i = i->next;
- }
-}
-
-static GtkWidget*
-get_message_tree_ctrl (CamelMimeMessage* message)
-{
- static GtkWidget* scroll_wnd = NULL;
- static GtkWidget* tree_ctrl = NULL;
-
- /* create the tree control, if it doesn't exist already */
- if (!tree_ctrl) {
-
- tree_ctrl = gtk_tree_new ();
-
- gtk_signal_connect (GTK_OBJECT(tree_ctrl),
- "selection_changed",
- GTK_SIGNAL_FUNC(tree_selection_changed),
- tree_ctrl);
-
- scroll_wnd = gtk_scrolled_window_new (NULL,NULL);
-
- gtk_scrolled_window_add_with_viewport (
- GTK_SCROLLED_WINDOW(scroll_wnd),
- tree_ctrl);
-
- gtk_widget_set_usize (scroll_wnd, 225, 200);
- }
- else
- gtk_tree_clear_items (GTK_TREE (tree_ctrl), 0, 1);
-
-
- /* Recursively insert tree items in the tree */
- if (message)
- handle_tree_item (CAMEL_DATA_WRAPPER (message), tree_ctrl);
- gtk_scrolled_window_set_policy (
- GTK_SCROLLED_WINDOW (scroll_wnd),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
- return scroll_wnd;
-}
-
-static CamelMimeMessage*
-filename_to_camel_msg (gchar* filename)
-{
- CamelMimeMessage* message;
- CamelStream* input_stream;
-
- camel_init();
-
- input_stream = camel_stream_fs_new_with_name (
- filename, CAMEL_STREAM_FS_READ);
-
- if (!input_stream)
- return NULL;
-
- message = camel_mime_message_new ();
-
- camel_data_wrapper_set_input_stream (
- CAMEL_DATA_WRAPPER (message), input_stream);
-
- return message;
-}
-
-/*----------------------------------------------------------------------*
- * Filling out the HTML view of a mime message
- *----------------------------------------------------------------------*/
-
-static void
-data_wrapper_to_html (CamelDataWrapper *msg, gchar** body_string)
-{
- CamelFormatter* cmf = camel_formatter_new();
- CamelStream* body_stream =
- camel_stream_mem_new (CAMEL_STREAM_FS_WRITE);
-
- g_assert (body_string);
-
- camel_formatter_wrapper_to_html (
- cmf, msg, body_stream);
-
- *body_string = g_strndup (
- CAMEL_STREAM_MEM (body_stream)->buffer->data,
- CAMEL_STREAM_MEM (body_stream)->buffer->len);
-}
-
-static void
-mime_message_header_to_html (CamelMimeMessage *msg, gchar** header_string)
-{
- CamelFormatter* cmf = camel_formatter_new();
- CamelStream* header_stream =
- camel_stream_mem_new (CAMEL_STREAM_FS_WRITE);
-
- g_assert (header_string);
-
- camel_formatter_mime_message_to_html (
- cmf, CAMEL_MIME_MESSAGE (msg), header_stream, NULL);
-
- *header_string = g_strndup (
- CAMEL_STREAM_MEM (header_stream)->buffer->data,
- CAMEL_STREAM_MEM (header_stream)->buffer->len);
-}
-
-
-static void
-on_link_clicked (GtkHTML *html, const gchar *url, gpointer data)
-{
- GtkWidget* message_box;
- CamelStream *stream;
- CamelStream *save_stream;
- gchar tmp_buffer[4096];
- gint nb_bytes_read;
-
- gchar* message =
- g_strdup_printf ("You have clicked on this link:\n%s", url);
-
- if (sscanf (url, "camel://%p", &stream))
- {
- save_stream =
- camel_stream_fs_new_with_name ("saved-file",
- CAMEL_STREAM_FS_WRITE);
-
-
- do {
-
- /* read next chunk of text */
- nb_bytes_read = camel_stream_read (stream,
- tmp_buffer,
- 4096);
-
- /* If there's any text, write it to the stream */
- if (nb_bytes_read > 0) {
- camel_stream_write (save_stream,
- tmp_buffer,
- nb_bytes_read);
- }
-
-
- } while (!camel_stream_eos (stream));
-
- camel_stream_close (save_stream);
- }
-
- message_box = gnome_message_box_new (message,
- GNOME_MESSAGE_BOX_INFO,
- "Okay", NULL);
-
- gnome_dialog_set_default (GNOME_DIALOG (message_box), 1);
- gnome_dialog_run (GNOME_DIALOG (message_box));
- g_free (message);
-}
-
-/*
- * As a page is being loaded, gtkhtml will come across a few types of
- * tags that it understands (like <img src="foo">). In these cases, it
- * will simply ask us to stream the data to it.
- */
-static void
-on_url_data_requested (GtkHTML *html, const gchar *url, GtkHTMLStreamHandle handle, gpointer data)
-{
- CamelStream *stream;
-
- printf ("url _%s_ (%p) requested\n", url, url);
-
- if (sscanf (url, "camel://%p", &stream) == 1)
- {
- gchar tmp_buffer[4096];
- do {
- gint nb_bytes_read;
-
- /* read next chunk of text */
- nb_bytes_read = camel_stream_read (stream,
- tmp_buffer,
- 4096);
-
- /* If there's any text, write it to the stream */
- if (nb_bytes_read > 0) {
- gtk_html_write (html, handle, tmp_buffer, nb_bytes_read);
- }
-
-
- } while (!camel_stream_eos (stream));
-
-
- }
-
-}
-
-
-static gboolean
-hydrate_persist_stream_from_gstring (Bonobo_PersistStream persist_stream,
- GString* gstr)
-{
- CORBA_Environment ev;
- BonoboStream* mem_stream =
- bonobo_stream_mem_create (gstr->str, gstr->len, TRUE, FALSE);
- /*
- * If the component doesn't support
- * PersistStream, then we destroy the
- * stream we created and bail.
- */
- if (persist_stream == CORBA_OBJECT_NIL) {
- gnome_warning_dialog (_("The component now claims that it "
- "doesn't support PersistStream!"));
- bonobo_object_unref (BONOBO_OBJECT (mem_stream));
- return FALSE;
- }
-
- CORBA_exception_init (&ev);
-
- /*
- * Load the file into the component using PersistStream.
- */
- Bonobo_PersistStream_load (persist_stream,
- (Bonobo_Stream) bonobo_object_corba_objref (BONOBO_OBJECT (mem_stream)),
- &ev);
-
- bonobo_object_unref (BONOBO_OBJECT (mem_stream));
-
- if (ev._major != CORBA_NO_EXCEPTION) {
- gnome_warning_dialog (_("An exception occured while trying "
- "to load data into the component with "
- "PersistStream"));
- CORBA_exception_free (&ev);
- return FALSE;
- }
-
- CORBA_exception_free (&ev);
- return TRUE;
-}
-
-static GString*
-camel_stream_to_gstring (CamelStream* stream)
-{
- gchar tmp_buffer[4097];
- GString *tmp_gstring = g_string_new ("");
-
- do { /* read next chunk of text */
-
- gint nb_bytes_read;
-
- nb_bytes_read = camel_stream_read (stream,
- tmp_buffer,
- 4096);
- tmp_buffer [nb_bytes_read] = '\0';
-
- /* If there's any text, append it to the gstring */
- if (nb_bytes_read > 0) {
- tmp_gstring = g_string_append (tmp_gstring, tmp_buffer);
- }
-
- } while (!camel_stream_eos (stream));
-
- return tmp_gstring;
-}
-
-
-/*
- * As a page is loaded, when gtkhtml comes across <object> tags, this
- * callback is invoked. The GtkHTMLEmbedded param is a GtkContainer;
- * our job in this function is to simply add a child widget to it.
- */
-static void
-on_object_requested (GtkHTML *html, GtkHTMLEmbedded *eb, void *unused)
-{
- CamelStream *stream;
- GString *camel_stream_gstr;
-
- GtkWidget *bonobo_embeddable;
- BonoboObjectClient* server;
- Bonobo_PersistStream persist;
- CORBA_Environment ev;
- gchar *uid = gtk_html_embedded_get_parameter (eb, "uid");
-
- /* Both the classid (which specifies which bonobo object to
- * fire up) and the uid (which tells us where to find data to
- * persist from) must be available; if one of them isn't,
- * print an error and bail. */
- if (!uid || !eb->classid) {
- printf ("on_object_requested: couldn't find %s%s%s\n",
- uid?"a uid":"",
- (!uid && !eb->classid)?" or ":"",
- eb->classid?"a classid":"");
- return;
- }
- printf ("object requested : %s\n", eb->classid);
- printf ("UID = %s\n", uid);
-
- /* Try to get a server with goadid specified by eb->classid */
- bonobo_embeddable = bonobo_widget_new_subdoc (eb->classid, NULL);
- server = bonobo_widget_get_server (BONOBO_WIDGET (bonobo_embeddable));
- if (!server) {
- printf ("Couldn't get the server for the bonobo embeddable\n");
- return;
- }
-
- /* The UID should be a pointer to a CamelStream */
- if (sscanf (uid, "camel://%p", &stream) != 1) {
- printf ("Couldn't get a pointer from url \"%s\"\n", uid);
- gtk_object_unref (GTK_OBJECT (bonobo_embeddable));
-
- return;
- }
-
- /* Try to get a PersistStream interface from the server;
- if it doesn't support that interface, bail. */
- persist = (Bonobo_PersistStream) bonobo_object_client_query_interface (
- server,
- "IDL:Bonobo/PersistStream:1.0",
- NULL);
-
- if (persist == CORBA_OBJECT_NIL) {
- gchar* msg = g_strdup_printf (
- _("The %s component doesn't support PersistStream!\n"),
- uid);
-
- gnome_warning_dialog (msg);
- gtk_object_unref (GTK_OBJECT (bonobo_embeddable));
-
- return;
- }
-
- /* Hydrate the PersistStream from the CamelStream */
- camel_stream_gstr = camel_stream_to_gstring (stream);
- printf ("on_object_requested: The CamelStream has %d elements\n",
- camel_stream_gstr->len);
- hydrate_persist_stream_from_gstring (persist, camel_stream_gstr);
-
- /* Give our new window to the container */
- gtk_widget_show (bonobo_embeddable);
- gtk_container_add (GTK_CONTAINER(eb), bonobo_embeddable);
-
- /* Destroy the PersistStream object.*/
- CORBA_exception_init (&ev);
- Bonobo_Unknown_unref (persist, &ev);
- CORBA_Object_release (persist, &ev);
- CORBA_exception_free (&ev);
-
- g_string_free (camel_stream_gstr, TRUE);
-}
-
-
-
-
-static GtkWidget*
-get_gtk_html_contents_window (CamelDataWrapper* data)
-{
- static GtkWidget* frame_wnd = NULL;
- static GtkWidget* scroll_wnd = NULL;
- static GtkWidget* html_widget = NULL;
- HTMLStream* html_stream;
- gchar *body_string;
-
- /* create the html widget and scroll window, if they haven't
- already been created */
- if (!html_widget) {
- html_widget = gtk_html_new();
-
- gtk_signal_connect (GTK_OBJECT (html_widget),
- "link_clicked",
- GTK_SIGNAL_FUNC (on_link_clicked),
- NULL);
-
- gtk_signal_connect (GTK_OBJECT (html_widget),
- "url_requested",
- GTK_SIGNAL_FUNC (on_url_data_requested),
- NULL);
- gtk_signal_connect (GTK_OBJECT (html_widget),
- "object_requested",
- GTK_SIGNAL_FUNC (on_object_requested),
- NULL);
-
- scroll_wnd = gtk_scrolled_window_new (NULL, NULL);
- gtk_container_add (GTK_CONTAINER (scroll_wnd), html_widget);
- }
-
- if (data) {
-
- html_stream =
- HTML_STREAM (html_stream_new (GTK_HTML (html_widget)));
-
- /* turn the mime message into html, and
- write it to the html stream */
- data_wrapper_to_html (data, &body_string);
-
- camel_stream_write (CAMEL_STREAM (html_stream),
- body_string,
- strlen (body_string));
-
- camel_stream_close (CAMEL_STREAM (html_stream));
-
- g_free (body_string);
- }
-
-
- if (!frame_wnd) {
-
- frame_wnd = gtk_frame_new (NULL);
- gtk_frame_set_shadow_type (
- GTK_FRAME (frame_wnd), GTK_SHADOW_IN);
-
- gtk_widget_set_usize (scroll_wnd, 500, 400);
- gtk_scrolled_window_set_policy (
- GTK_SCROLLED_WINDOW (scroll_wnd),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
-
- gtk_container_add (GTK_CONTAINER (frame_wnd), scroll_wnd);
- }
-
- return frame_wnd;
-}
-
-
-static GtkWidget*
-get_gtk_html_header_window (CamelMimeMessage* mime_message)
-{
- static GtkWidget* frame_wnd = NULL;
- static GtkWidget* scroll_wnd = NULL;
- static GtkWidget* html_widget = NULL;
- HTMLStream* html_stream;
- gchar* header_string;
-
- /* create the html widget and scroll window, if they haven't
- already been created */
- if (!html_widget) {
- html_widget = gtk_html_new();
- scroll_wnd = gtk_scrolled_window_new (NULL, NULL);
- gtk_container_add (GTK_CONTAINER (scroll_wnd), html_widget);
- }
-
- if (mime_message) {
-
- html_stream =
- HTML_STREAM (html_stream_new (GTK_HTML (html_widget)));
-
- /* turn the mime message into html, and
- write it to the html stream */
- mime_message_header_to_html (mime_message, &header_string);
-
- camel_stream_write (CAMEL_STREAM (html_stream),
- header_string,
- strlen (header_string));
-
- camel_stream_close (CAMEL_STREAM (html_stream));
-
- g_free (header_string);
- }
-
- if (!frame_wnd) {
-
- frame_wnd = gtk_frame_new (NULL);
- gtk_frame_set_shadow_type (
- GTK_FRAME (frame_wnd), GTK_SHADOW_OUT);
-
- gtk_widget_set_usize (scroll_wnd, 500, 75);
- gtk_scrolled_window_set_policy (
- GTK_SCROLLED_WINDOW (scroll_wnd),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
-
- gtk_container_add (GTK_CONTAINER (frame_wnd), scroll_wnd);
- }
-
-
- return frame_wnd;
-}
-
-static GtkWidget*
-get_gtk_html_window (CamelMimeMessage* mime_message)
-{
- static GtkWidget* vbox = NULL;
- GtkWidget* html_header_window = NULL;
- GtkWidget* html_content_window = NULL;
-
- html_content_window =
- get_gtk_html_contents_window (
- CAMEL_DATA_WRAPPER (mime_message));
-
- html_header_window =
- get_gtk_html_header_window (mime_message);
-
- if (!vbox) {
- vbox = gtk_vbox_new (FALSE, 0);
-
- gtk_box_pack_start (
- GTK_BOX (vbox),
- html_header_window,
- TRUE, TRUE, 5);
-
- gtk_box_pack_start (
- GTK_BOX (vbox),
- html_content_window,
- TRUE, FALSE, 5);
- }
-
- return vbox;
-}
-
-
-
-/*----------------------------------------------------------------------*
- * Menu callbacks and information
- *----------------------------------------------------------------------*/
-
-static gchar* fileselection_prev_file = NULL;
-
-static void
-open_ok (GtkWidget *widget, GtkFileSelection *fs)
-{
- int ret;
- GtkWidget *error_dialog;
-
- if (fileselection_prev_file)
- g_free (fileselection_prev_file);
-
- if(!g_file_exists (gtk_file_selection_get_filename (fs))) {
- error_dialog = gnome_message_box_new (
- _("File not found"),
- GNOME_MESSAGE_BOX_ERROR,
- GNOME_STOCK_BUTTON_OK,
- NULL);
-
- gnome_dialog_set_parent (GNOME_DIALOG (error_dialog),
- GTK_WINDOW (fs));
-
- ret = gnome_dialog_run (GNOME_DIALOG (error_dialog));
- }
- else {
- gchar *filename = gtk_file_selection_get_filename (fs);
- CamelMimeMessage* message = filename_to_camel_msg (filename);
-
- if (message) {
- fileselection_prev_file = g_strdup (filename);
- get_message_tree_ctrl (message);
- get_gtk_html_window (message);
- }
- else
- gnome_message_box_new ("Couldn't load message.",
- GNOME_MESSAGE_BOX_WARNING);
-
- gtk_widget_destroy (GTK_WIDGET (fs));
- }
-}
-
-
-static void
-file_menu_open_cb (GtkWidget *widget, void* data)
-{
- GtkFileSelection *fs;
-
- fs = GTK_FILE_SELECTION (
- gtk_file_selection_new (_("Open Mime Message")));
-
- if (fileselection_prev_file)
- gtk_file_selection_set_filename (fs, fileselection_prev_file);
-
- gtk_signal_connect (GTK_OBJECT (fs->ok_button), "clicked",
- (GtkSignalFunc) open_ok,
- fs);
-
- gtk_signal_connect_object (GTK_OBJECT (fs->cancel_button), "clicked",
- (GtkSignalFunc) gtk_widget_destroy,
- GTK_OBJECT (fs));
-
- gtk_widget_show (GTK_WIDGET (fs));
- gtk_grab_add (GTK_WIDGET (fs)); /* Make it modal */
-}
-
-static void
-file_menu_exit_cb (GtkWidget *widget, void *data)
-{
- gtk_main_quit ();
-}
-
-
-static GnomeUIInfo file_menu [] = {
- GNOMEUIINFO_MENU_OPEN_ITEM (file_menu_open_cb, NULL),
- GNOMEUIINFO_SEPARATOR,
- GNOMEUIINFO_MENU_EXIT_ITEM (file_menu_exit_cb, NULL),
- GNOMEUIINFO_END
-};
-
-static GnomeUIInfo main_menu[] = {
- GNOMEUIINFO_MENU_FILE_TREE (file_menu),
- GNOMEUIINFO_END
-};
-
-
-/*----------------------------------------------------------------------*
- * Main()
- *----------------------------------------------------------------------*/
-
-int
-main (int argc, char *argv[])
-{
- /* app contains hbox, hbox contains other 2 windows */
- GtkWidget* app;
- GtkWidget* hpane;
- GtkWidget* tree_ctrl_window;
- GtkWidget* html_window;
- CORBA_Environment ev;
-
- CamelMimeMessage* message = NULL;
-
- /* initialization */
-
- /* Corba and Bonobo stuff */
- CORBA_exception_init (&ev);
-
- gnome_CORBA_init ("Message Browser", "1.0", &argc, argv, 0, &ev);
-
- if (bonobo_init (gnome_CORBA_ORB (), NULL, NULL) == FALSE)
- g_error ("Cannot bonobo_init");
-
-
-
- gdk_rgb_init ();
-
- gtk_widget_set_default_colormap (gdk_rgb_get_cmap ());
- gtk_widget_set_default_visual (gdk_rgb_get_visual ());
-
- app = gnome_app_new ("Message Browser Test", NULL);
- gnome_app_create_menus (GNOME_APP (app), main_menu);
-
- /* parse command line */
- if (argc > 2 ||
- (argc==2 && strstr (argv[1], "--help") != 0))
- print_usage_and_quit();
- if (argc == 2) {
- if (strstr (argv[1], "--help") != 0)
- print_usage_and_quit();
- message = filename_to_camel_msg (argv[1]);
- if (!message) {
- g_print ("Couldn't load message.");
- }
- }
-
- hpane = e_hpaned_new();
-
- /* add the tree control view of the message*/
- tree_ctrl_window = get_message_tree_ctrl (message);
- e_paned_add1 (E_PANED (hpane), tree_ctrl_window);
-
- /* add the HTML view of the message */
- html_window = get_gtk_html_window (message);
- e_paned_add2 (E_PANED (hpane), html_window);
-
- /* rock n roll */
- gnome_app_set_contents (GNOME_APP (app),
- hpane);
- gtk_widget_show_all (app);
- gtk_signal_connect (GTK_OBJECT (app), "destroy",
- GTK_SIGNAL_FUNC(gtk_main_quit),
- &app);
- if (!message)
- file_menu_open_cb (NULL, NULL);
-
- bonobo_main();
-
- return 1;
-}
diff --git a/tests/ui-tests/saveoptions.xml b/tests/ui-tests/saveoptions.xml
deleted file mode 100644
index 3fd7e57f96..0000000000
--- a/tests/ui-tests/saveoptions.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<filteroptions>
- <optionset>
- <option type="send">
- <description>Family email</description>
- <optionrule type="match" rule="from-address">
- <optionvalue name="sender">
- <address name="zucchi" email="zucchi@zedzone"/>
- <address name="foo" email="bar"/>
- </optionvalue>
- </optionrule>
- <optionrule type="match" rule="to-address">
- <optionvalue name="receipient">
- <address name="frank" email="frank.zucchi"/>
- </optionvalue>
- </optionrule>
- <optionrule type="match" rule="cc-address">
- <address name="zucchi" email="zucchi@zedzone"/>
- </optionrule>
- <optionrule type="except" rule="except-me"/>
- <optionrule type="action" rule="copy-me">
- <optionvalue name="folder">
- <folder name="SaveMe"/>
- <folder name="InBox"/>
- </optionvalue>
- </optionrule>
- </option>
- <option type="receive">
- <description>Helix Email</description>
- <optionrule type="match" rule="from-address">
- <optionvalue name="sender">
- <address name="primates" email="primates-list@helixcode.com"/>
- </optionvalue>
- </optionrule>
- </option>
- </optionset>
-</filteroptions>
diff --git a/tests/ui-tests/store_listing.c b/tests/ui-tests/store_listing.c
deleted file mode 100644
index fb7c2ae0f7..0000000000
--- a/tests/ui-tests/store_listing.c
+++ /dev/null
@@ -1,424 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* Author : Bertrand.Guiheneuf@aful.org */
-
-
-
-/* A simple and very dirty hack written to test
- (and perhaps demonstrate) Camel */
-
-
-#include <gnome.h>
-#include <glade/glade.h>
-
-#include "camel-folder.h"
-#include "camel-mh-folder.h"
-#include "camel-mh-store.h"
-#include "camel.h"
-#include "camel-folder-summary.h"
-
-static GladeXML *xml;
-static CamelSession *_session;
-static CamelFolder *currently_selected_folder = NULL;
-
-static GList *store_list;
-static GList *folder_list;
-
-static void add_mail_store (const gchar *store_url);
-static void show_folder_messages (CamelFolder *folder);
-
-
-
-static void
-_destroy_menu (gpointer data)
-{
- gtk_widget_destroy (GTK_WIDGET (data));
-}
-
-static void
-_copy_message (GtkWidget *widget, gpointer data)
-{
- CamelFolder *dest_folder = CAMEL_FOLDER (data);
- GtkWidget *message_clist;
- gint current_row;
- GList *selected;
- gint selected_row;
-
- CamelMimeMessage *message;
-
- printf ("Selected \"copy to folder\" with destination folder %s\n", camel_folder_get_name (dest_folder));
- message_clist = glade_xml_get_widget (xml, "message-clist");
- selected = GTK_CLIST (message_clist)->selection;
- while (selected) {
- selected_row = GPOINTER_TO_INT (selected->data);
- message = CAMEL_MIME_MESSAGE (gtk_clist_get_row_data (GTK_CLIST (message_clist), selected_row));
- camel_folder_copy_message_to (currently_selected_folder, message, dest_folder);
- selected = selected->next;
- }
-
-}
-
-static GnomeUIInfo mailbox_popup_menu[] = {
- GNOMEUIINFO_ITEM_STOCK ("_Copy selected message here", NULL, _copy_message, GNOME_STOCK_MENU_NEW),
- GNOMEUIINFO_END
-};
-
-static void
-_show_mailbox_context_menu (CamelFolder *folder) {
- GtkWidget *menu;
- GtkCTree *mailbox_and_store_tree;
-
- mailbox_and_store_tree = GTK_CTREE (glade_xml_get_widget (xml, "store-and-mailbox-tree"));
- menu = gtk_object_get_data (GTK_OBJECT (mailbox_and_store_tree), "mailbox_popup_menu");
- if (!menu) {
- menu = gnome_popup_menu_new (mailbox_popup_menu);
- gtk_object_set_data_full (GTK_OBJECT (mailbox_and_store_tree), "mailbox_popup_menu", menu, _destroy_menu);
- }
-
- gnome_popup_menu_do_popup (menu, NULL, NULL, NULL, folder);
-
-
-}
-static gboolean
-mailbox_button_clicked_on_row (gint button, gint row)
-{
- GtkCTreeNode *mailbox_node;
- CamelFolder *folder;
- GtkCTree *mailbox_and_store_tree;
- const gchar *mailbox_name;
-
- mailbox_and_store_tree = GTK_CTREE (glade_xml_get_widget (xml, "store-and-mailbox-tree"));
-
- mailbox_node = gtk_ctree_node_nth (mailbox_and_store_tree, row);
-
- folder = gtk_ctree_node_get_row_data (mailbox_and_store_tree, mailbox_node);
- if (folder && IS_CAMEL_FOLDER (folder)) {
-
- mailbox_name = camel_folder_get_name (folder);
- printf ("mailbox %s clicked with button %d\n", mailbox_name, button);
- switch (button) {
- case 1:
- currently_selected_folder = folder;
- show_folder_messages (folder);
- break;
- case 2:
- break;
- case 3:
- _show_mailbox_context_menu (folder);
- }
- return TRUE;
- } else {
- printf ("Node is a store\n");
- return FALSE;
- }
-}
-
-
-static void
-message_destroy_notify (gpointer data)
-{
- CamelMimeMessage *message = CAMEL_MIME_MESSAGE (data);
-
- gtk_object_unref (GTK_OBJECT (message));
-
-}
-
-
-
-
-
-static void
-show_folder_messages (CamelFolder *folder)
-{
- GtkWidget *message_clist;
- gint folder_message_count;
- CamelMimeMessage *message;
- gint i;
- const gchar *clist_row_text[3];
- const char *sent_date, *subject, *sender;
- gint current_row;
- CamelFolderSummary *summary;
-
- message_clist = glade_xml_get_widget (xml, "message-clist");
-
- /* clear old message list */
- gtk_clist_clear (GTK_CLIST (message_clist));
-
- if (camel_folder_has_summary_capability (folder)) {
- const GList *message_info_list;
- CamelMessageInfo *msg_info;
-
- printf ("Folder has summary. Good\n");
- summary = camel_folder_get_summary (folder);
- message_info_list = camel_folder_summary_get_message_info_list (summary);
- printf ("message_info_list = %p\n", message_info_list);
- while (message_info_list) {
- msg_info = (CamelMessageInfo *)message_info_list->data;
- clist_row_text [0] = msg_info->date;
- clist_row_text [1] = msg_info->sender;
- clist_row_text [2] = msg_info->subject;
-
- current_row = gtk_clist_append (GTK_CLIST (message_clist), clist_row_text);
-
- message_info_list = message_info_list->next;
- }
- } else {
- printf ("Folder does not have summary. Opening all messages\n");
- folder_message_count = camel_folder_get_message_count (folder);
-
- for (i=0; i<folder_message_count; i++) {
- message = camel_folder_get_message (folder, i);
- gtk_object_ref (GTK_OBJECT (message));
- sent_date = camel_mime_message_get_sent_date (message);
- sender = camel_mime_message_get_from (message);
- subject = camel_mime_message_get_subject (message);
-
-
- if (sent_date) clist_row_text [0] = sent_date;
- else clist_row_text [0] = NULL;
- if (sender) clist_row_text [1] = sender;
- else clist_row_text [1] = NULL;
- if (subject) clist_row_text [2] = subject;
- else clist_row_text [2] = NULL;
-
- current_row = gtk_clist_append (GTK_CLIST (message_clist), clist_row_text);
- gtk_clist_set_row_data_full (GTK_CLIST (message_clist), current_row, (gpointer)message, message_destroy_notify);
- }
-
- }
-}
-
-
-/* add a mail store given by its URL */
-static void
-add_mail_store (const gchar *store_url)
-{
-
- CamelStore *store;
- GtkWidget *mailbox_and_store_tree;
- GtkCTreeNode* new_store_node;
- GtkCTreeNode* new_folder_node;
- char *new_tree_text[1];
- GList *subfolder_list;
- CamelFolder *root_folder;
- CamelFolder *new_folder;
-
-
-
- store = camel_session_get_store (_session, store_url);
- if (!store) return;
-
- /* remember store */
- store_list = g_list_prepend (store_list, store);
-
- //store_list = g_list_append (store_list, (gpointer)store);
- mailbox_and_store_tree = glade_xml_get_widget (xml, "store-and-mailbox-tree");
- new_tree_text[0] = g_strdup (store_url);
- new_store_node = gtk_ctree_insert_node (GTK_CTREE (mailbox_and_store_tree),
- NULL,
- NULL,
- new_tree_text,
- 0,
- NULL,
- NULL,
- NULL,
- NULL,
- FALSE,
- FALSE);
-
- /* normally, use get_root_folder */
- root_folder = camel_store_get_folder (store, "");
- camel_folder_open (root_folder, FOLDER_OPEN_RW);
- subfolder_list = camel_folder_list_subfolders (root_folder);
- while (subfolder_list) {
- new_tree_text[0] = subfolder_list->data;
- new_folder = camel_store_get_folder (store, subfolder_list->data);
- camel_folder_open (new_folder, FOLDER_OPEN_RW);
- folder_list = g_list_prepend (folder_list, new_folder);
-
- new_folder_node = gtk_ctree_insert_node (GTK_CTREE (mailbox_and_store_tree),
- new_store_node,
- NULL,
- new_tree_text,
- 0,
- NULL,
- NULL,
- NULL,
- NULL,
- FALSE,
- FALSE);
-
-
- gtk_ctree_node_set_row_data (GTK_CTREE (mailbox_and_store_tree), new_folder_node, (gpointer)new_folder);
- subfolder_list = subfolder_list->next;
- }
-}
-
-static void
-delete_selected_messages ()
-{
- GtkWidget *message_clist;
- gint current_row;
- GList *selected;
- gint selected_row;
-
- CamelMimeMessage *message;
- message_clist = glade_xml_get_widget (xml, "message-clist");
- selected = GTK_CLIST (message_clist)->selection;
- while (selected) {
- selected_row = GPOINTER_TO_INT (selected->data);
- message = CAMEL_MIME_MESSAGE (gtk_clist_get_row_data (GTK_CLIST (message_clist), selected_row));
- camel_mime_message_set_flag (message, "DELETED", TRUE);
- selected = selected->next;
- }
-
-}
-
-
-static void
-expunge_selected_folders ()
-{
- GtkWidget *mailbox_and_store_tree;
- CamelFolder *folder;
- GtkCTreeNode* selected_node;
- GList *selected;
- const gchar *folder_name;
-
- mailbox_and_store_tree = glade_xml_get_widget (xml, "store-and-mailbox-tree");
-
- selected = GTK_CLIST (mailbox_and_store_tree)->selection;
- while (selected) {
-
- selected_node= GTK_CTREE_NODE (selected->data);
- folder = CAMEL_FOLDER (gtk_ctree_node_get_row_data (GTK_CTREE (mailbox_and_store_tree),
- selected_node));
- if (folder && IS_CAMEL_FOLDER (folder)) {
- folder_name = camel_folder_get_name (folder);
- printf ("folder to expunge : %s\n", folder_name);
- camel_folder_expunge (folder, FALSE);
- /* reshowing the folder this way is uggly
- but allows to check the message are
- correctly renoved and the cache works correctly */
- show_folder_messages (folder);
-
- } else {
- printf ("A selected node is a store\n");
- }
-
- selected = selected->next;
- }
-
-
-}
-
-void
-close_all ()
-{
- while (folder_list) {
- camel_folder_close (CAMEL_FOLDER (folder_list->data), TRUE);
- folder_list = folder_list->next;
- }
-
- while (store_list) {
- //camel_store_close (CAMEL_STORE (store_list->data));
- store_list = store_list->next;
- }
-
-}
-
-/* ----- libglade callbacks */
-void
-on_exit_activate (GtkWidget *widget, void *data)
-{
- close_all ();
- gtk_main_quit ();
-}
-
-
-void
-on_about_activate (GtkWidget *widget, void *data)
-{
- GtkWidget *about_widget;
-
- about_widget = glade_xml_get_widget (xml, "about_widget");
- gtk_widget_show (about_widget);
-}
-
-void
-on_new_store_activate (GtkWidget *widget, void *data)
-{
- GtkWidget *new_store_dialog;
- GtkWidget *new_store_gnome_entry;
- GtkWidget *new_store_entry;
- gchar *url_text;
-
-
- gint pressed_button;
-
- new_store_dialog = glade_xml_get_widget (xml, "new_store_dialog");
- pressed_button = gnome_dialog_run (GNOME_DIALOG (new_store_dialog));
-
- if ((pressed_button != 0) && (pressed_button != 1))
- return;
-
- new_store_gnome_entry = glade_xml_get_widget (xml, "new-store-entry");
- new_store_entry = gnome_entry_gtk_entry (GNOME_ENTRY (new_store_gnome_entry));
- url_text = gtk_entry_get_text (GTK_ENTRY (new_store_entry));
-
- if (url_text)
- add_mail_store (url_text);
-
-}
-
-
-void
-on_expunge_activate (GtkWidget *widget, void *data)
-{
- expunge_selected_folders ();
-}
-
-
-void
-on_message_delete_activate (GtkWidget *widget, void *data)
-{
- delete_selected_messages();
-}
-
-gboolean
-on_store_and_mailbox_tree_button_press_event (GtkWidget *widget, GdkEventButton *event, void *data)
-{
- gint row;
- GtkCList *clist = GTK_CLIST (widget);
-
- if (!gtk_clist_get_selection_info (clist, event->x, event->y, &row, NULL))
- return FALSE;
- if (!mailbox_button_clicked_on_row (event->button, row))
- return FALSE;
-
- return TRUE;
-
-}
-
-/* ----- init */
-int
-main(int argc, char *argv[])
-{
- GtkWidget *new_store_gnome_entry;
-
- gnome_init ("store_listing", "1.0", argc, argv);
-
- glade_gnome_init ();
- camel_init ();
- xml = glade_xml_new ("store_listing.glade", NULL);
- if (xml) glade_xml_signal_autoconnect (xml);
-
- _session = camel_session_new ();
- camel_provider_register_as_module ("../../camel/providers/MH/.libs/libcamelmh.so");
-
- new_store_gnome_entry = glade_xml_get_widget (xml, "new-store-entry");
- gnome_entry_load_history (GNOME_ENTRY (new_store_gnome_entry));
- gtk_main ();
- gnome_entry_save_history (GNOME_ENTRY (new_store_gnome_entry));
-
- return 0;
-}
-
diff --git a/tests/ui-tests/store_listing.glade b/tests/ui-tests/store_listing.glade
deleted file mode 100644
index d551c90dbb..0000000000
--- a/tests/ui-tests/store_listing.glade
+++ /dev/null
@@ -1,489 +0,0 @@
-<?xml version="1.0"?>
-<GTK-Interface>
-
-<project>
- <name>store_listing</name>
- <program_name>store_listing</program_name>
- <directory></directory>
- <source_directory>src</source_directory>
- <pixmaps_directory>pixmaps</pixmaps_directory>
- <language>C</language>
- <gnome_support>True</gnome_support>
- <gettext_support>True</gettext_support>
- <use_widget_names>False</use_widget_names>
- <output_main_file>True</output_main_file>
- <output_support_files>True</output_support_files>
- <output_build_files>True</output_build_files>
- <backup_source_files>True</backup_source_files>
- <main_source_file>interface.c</main_source_file>
- <main_header_file>interface.h</main_header_file>
- <handler_source_file>callbacks.c</handler_source_file>
- <handler_header_file>callbacks.h</handler_header_file>
- <support_source_file>support.c</support_source_file>
- <support_header_file>support.h</support_header_file>
- <translatable_strings_file></translatable_strings_file>
-</project>
-
-<widget>
- <class>GnomeApp</class>
- <name>app1</name>
- <width>600</width>
- <height>400</height>
- <title>store_listing</title>
- <type>GTK_WINDOW_TOPLEVEL</type>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>True</allow_grow>
- <auto_shrink>False</auto_shrink>
- <enable_layout_config>True</enable_layout_config>
-
- <widget>
- <class>GnomeDock</class>
- <child_name>GnomeApp:dock</child_name>
- <name>dock1</name>
- <allow_floating>True</allow_floating>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GnomeDockItem</class>
- <name>dockitem1</name>
- <border_width>2</border_width>
- <placement>GNOME_DOCK_TOP</placement>
- <band>0</band>
- <position>0</position>
- <offset>0</offset>
- <locked>False</locked>
- <exclusive>True</exclusive>
- <never_floating>False</never_floating>
- <never_vertical>True</never_vertical>
- <never_horizontal>False</never_horizontal>
- <shadow_type>GTK_SHADOW_OUT</shadow_type>
-
- <widget>
- <class>GtkMenuBar</class>
- <name>menubar1</name>
- <shadow_type>GTK_SHADOW_NONE</shadow_type>
-
- <widget>
- <class>GtkMenuItem</class>
- <name>file1</name>
- <stock_item>GNOMEUIINFO_MENU_FILE_TREE</stock_item>
-
- <widget>
- <class>GtkMenu</class>
- <name>file1_menu</name>
-
- <widget>
- <class>GtkMenuItem</class>
- <name>separator1</name>
- <right_justify>False</right_justify>
- </widget>
-
- <widget>
- <class>GtkPixmapMenuItem</class>
- <name>exit</name>
- <signal>
- <name>activate</name>
- <handler>on_exit_activate</handler>
- <last_modification_time>Tue, 10 Aug 1999 12:06:35 GMT</last_modification_time>
- </signal>
- <stock_item>GNOMEUIINFO_MENU_EXIT_ITEM</stock_item>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkMenuItem</class>
- <name>store2</name>
- <label>_Store</label>
- <right_justify>False</right_justify>
-
- <widget>
- <class>GtkMenu</class>
- <name>store2_menu</name>
-
- <widget>
- <class>GtkPixmapMenuItem</class>
- <name>new_store</name>
- <signal>
- <name>activate</name>
- <handler>on_new_store_activate</handler>
- <last_modification_time>Tue, 10 Aug 1999 10:29:12 GMT</last_modification_time>
- </signal>
- <stock_item>GNOMEUIINFO_MENU_NEW_ITEM</stock_item>
- <label>_New store</label>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkMenuItem</class>
- <name>folder1</name>
- <signal>
- <name>activate</name>
- <handler>on_folder1_activate</handler>
- <last_modification_time>Sat, 14 Aug 1999 17:23:25 GMT</last_modification_time>
- </signal>
- <label>Folder</label>
- <right_justify>False</right_justify>
-
- <widget>
- <class>GtkMenu</class>
- <name>folder1_menu</name>
-
- <widget>
- <class>GtkPixmapMenuItem</class>
- <name>expunge</name>
- <signal>
- <name>activate</name>
- <handler>on_expunge_activate</handler>
- <last_modification_time>Sat, 14 Aug 1999 16:36:03 GMT</last_modification_time>
- </signal>
- <label>_Expunge</label>
- <right_justify>False</right_justify>
- <stock_icon>GNOME_STOCK_MENU_CONVERT</stock_icon>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkMenuItem</class>
- <name>message_menu</name>
- <label>_Message</label>
- <right_justify>False</right_justify>
-
- <widget>
- <class>GtkMenu</class>
- <name>message_menu_menu</name>
-
- <widget>
- <class>GtkPixmapMenuItem</class>
- <name>message_delete</name>
- <signal>
- <name>activate</name>
- <handler>on_message_delete_activate</handler>
- <last_modification_time>Sat, 14 Aug 1999 14:54:04 GMT</last_modification_time>
- </signal>
- <label>_Delete</label>
- <right_justify>False</right_justify>
- <stock_icon>GNOME_STOCK_MENU_TRASH</stock_icon>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkMenuItem</class>
- <name>help1</name>
- <stock_item>GNOMEUIINFO_MENU_HELP_TREE</stock_item>
-
- <widget>
- <class>GtkMenu</class>
- <name>help1_menu</name>
-
- <widget>
- <class>GtkPixmapMenuItem</class>
- <name>about</name>
- <signal>
- <name>activate</name>
- <handler>on_about_activate</handler>
- <last_modification_time>Tue, 10 Aug 1999 12:06:58 GMT</last_modification_time>
- </signal>
- <stock_item>GNOMEUIINFO_MENU_ABOUT_ITEM</stock_item>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GnomeDockItem</class>
- <name>dockitem2</name>
- <border_width>1</border_width>
- <placement>GNOME_DOCK_TOP</placement>
- <band>1</band>
- <position>0</position>
- <offset>0</offset>
- <locked>False</locked>
- <exclusive>True</exclusive>
- <never_floating>False</never_floating>
- <never_vertical>False</never_vertical>
- <never_horizontal>False</never_horizontal>
- <shadow_type>GTK_SHADOW_OUT</shadow_type>
-
- <widget>
- <class>GtkToolbar</class>
- <name>toolbar1</name>
- <border_width>1</border_width>
- <orientation>GTK_ORIENTATION_HORIZONTAL</orientation>
- <type>GTK_TOOLBAR_BOTH</type>
- <space_size>16</space_size>
- <space_style>GTK_TOOLBAR_SPACE_LINE</space_style>
- <relief>GTK_RELIEF_NONE</relief>
- <tooltips>True</tooltips>
-
- <widget>
- <class>GtkButton</class>
- <child_name>Toolbar:button</child_name>
- <name>new_store_button</name>
- <signal>
- <name>clicked</name>
- <handler>on_new_store_activate</handler>
- <last_modification_time>Tue, 10 Aug 1999 12:17:17 GMT</last_modification_time>
- </signal>
- <label>new store</label>
- <stock_pixmap>GNOME_STOCK_PIXMAP_NEW</stock_pixmap>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHPaned</class>
- <child_name>GnomeDock:contents</child_name>
- <name>hpaned1</name>
- <handle_size>10</handle_size>
- <gutter_size>6</gutter_size>
- <position>0</position>
-
- <widget>
- <class>GtkCTree</class>
- <name>store-and-mailbox-tree</name>
- <width>150</width>
- <can_focus>True</can_focus>
- <signal>
- <name>button_press_event</name>
- <handler>on_store_and_mailbox_tree_button_press_event</handler>
- <last_modification_time>Mon, 16 Aug 1999 13:06:15 GMT</last_modification_time>
- </signal>
- <columns>1</columns>
- <column_widths>80</column_widths>
- <selection_mode>GTK_SELECTION_SINGLE</selection_mode>
- <show_titles>True</show_titles>
- <shadow_type>GTK_SHADOW_IN</shadow_type>
- <child>
- <shrink>True</shrink>
- <resize>False</resize>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>CTree:title</child_name>
- <name>store_and_inbox_name</name>
- <label>name</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
-
- <widget>
- <class>GtkCList</class>
- <name>message-clist</name>
- <can_focus>True</can_focus>
- <columns>3</columns>
- <column_widths>80,80,80</column_widths>
- <selection_mode>GTK_SELECTION_SINGLE</selection_mode>
- <show_titles>True</show_titles>
- <shadow_type>GTK_SHADOW_IN</shadow_type>
- <child>
- <shrink>True</shrink>
- <resize>True</resize>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>CList:title</child_name>
- <name>message_date_label</name>
- <label>Date</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>CList:title</child_name>
- <name>message_sender_label</name>
- <label>Sender</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>CList:title</child_name>
- <name>message_subject_label</name>
- <label>Subject</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GnomeAppBar</class>
- <child_name>GnomeApp:appbar</child_name>
- <name>appbar1</name>
- <has_progress>True</has_progress>
- <has_status>True</has_status>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
- </widget>
-</widget>
-
-<widget>
- <class>GnomeAbout</class>
- <name>about_widget</name>
- <visible>False</visible>
- <modal>True</modal>
- <copyright></copyright>
- <authors>Bertrand Guiheneuf &lt;Bertrand.Guiheneuf@aful.org&gt;
-</authors>
- <comments>This is a very simple program to test Camel</comments>
-</widget>
-
-<widget>
- <class>GnomeDialog</class>
- <name>new_store_dialog</name>
- <visible>False</visible>
- <title>New store</title>
- <type>GTK_WINDOW_TOPLEVEL</type>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>False</allow_grow>
- <auto_shrink>False</auto_shrink>
- <auto_close>True</auto_close>
- <hide_on_close>True</hide_on_close>
-
- <widget>
- <class>GtkVBox</class>
- <child_name>GnomeDialog:vbox</child_name>
- <name>dialog-vbox1</name>
- <homogeneous>False</homogeneous>
- <spacing>8</spacing>
- <child>
- <padding>4</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox1</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>new_store_label</name>
- <label>Enter complete store URL</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>29</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GnomeEntry</class>
- <name>new-store-entry</name>
- <history_id>store_name_history</history_id>
- <max_saved>15</max_saved>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkEntry</class>
- <child_name>GnomeEntry:entry</child_name>
- <name>new-store-dialog-combo-entry</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHButtonBox</class>
- <child_name>GnomeDialog:action_area</child_name>
- <name>dialog-action_area1</name>
- <layout_style>GTK_BUTTONBOX_END</layout_style>
- <spacing>8</spacing>
- <child_min_width>85</child_min_width>
- <child_min_height>27</child_min_height>
- <child_ipad_x>7</child_ipad_x>
- <child_ipad_y>0</child_ipad_y>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- <pack>GTK_PACK_END</pack>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>button1</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button2</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <stock_button>GNOME_STOCK_BUTTON_APPLY</stock_button>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button3</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
- </widget>
- </widget>
- </widget>
-</widget>
-
-</GTK-Interface>
diff --git a/tests/ui-tests/test-multipart-alt.msg b/tests/ui-tests/test-multipart-alt.msg
deleted file mode 100644
index aa0da18b82..0000000000
--- a/tests/ui-tests/test-multipart-alt.msg
+++ /dev/null
@@ -1,17738 +0,0 @@
-From - Sat Jun 1 19:00:50 1996
-X-Mozilla-Status: 0001
-Message-ID: <31B0F5D1.41C6@netscape.com>
-Date: Sat, 01 Jun 1996 19:00:49 -0700
-From: Jamie Zawinski <jwz@netscape.com>
-Organization: Netscape Communications Corporation, Mozilla Division
-X-Mailer: Mozilla 2.0 (X11; U; IRIX 5.3 IP22)
-MIME-Version: 1.0
-To: Jamie Zawinski <jwz@netscape.com>
-Subject: multipart/alternative
-Content-Type: multipart/mixed; boundary="------------outer"
-
-This is a multi-part message in MIME format.
-
---------------outer
-
-Here comes some multipart/alternative junk. It's rilly rilly big.
-
---------------outer
-Content-Type: multipart/alternative; boundary="------------167E2781446B"
-
---------------167E2781446B
-Content-Type: text/plain; charset=iso-8859-1; name="album-list.txt"
-Content-Transfer-Encoding: 8bit
-Content-Disposition: inline; filename="album-list.txt"
-
- jwz's tunes
- Last modified: 1-jun-96.
-
-This is a list of all of the music I have on CD, tape, and vinyl (including
-all of the old, embarrasing stuff...) This page may look a little funny if
-you aren't using a browser that supports HTML tables, like Mozilla.
-
- ``Publishing CD lists and tape collections evokes images of
- lonely, pathetic men who talk about their cats incessantly.'' --
- Paul Phillips
-
-I used to have this set up so that clicking on any name would take you to
-the appropriate entry of the All Music Guide at
-gopher://allmusic.ferris.edu; but they have since moved their database from
-there to cdnow.com, and in the process, have obfuscated access to the
-database to such an extent that this is no longer possible. In order to get
-at the discographies, you need to weed your way through dozens of pages, and
-there seems to be no even semi-reliable way to pre-compute the URL that they
-will use. Arrgh!
-
-The Internet Movie Database has an excellent interface for this sort of
-thing; I really wish more people would emulate that system.
-
-In this list, I've included links to various related web pages that I've
-come across; one very cool and well-organized database to which many of
-these links point is The Ultimate Band List; check it out!
-
- Jamie Zawinski <jwz@netscape.com>
-
-----------------------------------------------------------------------------
-
- * Act UBL Card: 4637
- 1988: Laughter, Tears, and Rage See also: rt66.com
- See also:
- hcl.chass.ncsu.edu
- * Age of Chance
- 1987: Kiss (single)
- 1987: Don't Get Mad, Get Even (single)
- * Alien Sex Fiend UBL Card: 5291
- 1983-1992: Drive My Rocket (comp) See also: cent1.lancs.ac.uk
- 1989: Too Much Acid? (live)
- 1990: Curse
- 1992: Open Head Surgery
- 1993: Altered States of America (live)
- 1995: Inferno: The Odyssey Continuestm
- (soundtrack)
- * Alio Die
- 1993: Under a Holy Ritual
- UBL Card: 1266
- See also: www.projekt.com
- * Alphaville UBL Card: 3056
- 1984: Forever Young See also: www.escape.com
- * Altered Images
- 1981: Happy Birthday
- 1983: Bite
- 1984: Collected Images (comp)
- * An April March
- 1995: Lessons in Vengance
- 1995: Instruments of Lust and Fury
- * And Also the Trees
- 1983-1992: From Horizon to Horizon
- (comp)
- UBL Card: 1867
- See also:
- www.ugcs.caltech.edu
- See also:
- onyx.dartmouth.edu
- * Anderson, Laurie UBL Card: 1494
- 1982: Big Science See also: www.voyagerco.com
- 1983: United States Live, parts 1-4 (5
- albums) See also: www.netpart.com
- 1984: Mister Heartbreak See also: www.c3.lanl.gov
- 1986: Home of the Brave (live
- soundtrack)
- 1995: Bright Red
- * Ant, Adam
- 1980: Kings of the Wild Frontier
- 1981: Prince Charming
- 1982: Friend or Foe
- 1983: Dirk Wears White Sox
- 1985: Viva Le Rock
- 1979-1986: Antics in the Forbidden Zone
- (comp)
- UBL Card: 1205
- See also: www.uhs.uga.edu
- See also: caprec.com
-
- * Anthrax UBL Card: 2710
- 1991: Attack of the Killer B's (comp)
- * Aphex Twin
- 1993: On (EP)
- 1994: Analogue Bubblebath (EP)
- 1995: Ventolin (EP)
- UBL Card: 5279
- See also: hyperreal.com
- See also: pathfinder.com
-
- * Arcadia UBL Card: 1259
- 1985: So Red the Rose
- * Armageddon Dildos
- 1995: Lost
- UBL Card: 2538
-
- * Ash, Daniel See also:
- 1991: Coming Down isvpc146.isv.uit.no
- 1992: Foolish Thing Desire
- * Archangel, Nathalie
- 1992: Owl
- * Art of Noise UBL Card: 1918
- 1983: Who's Afraid of the Art of Noise? See also: rt66.com
-
- 1983: The Art of Noise Have Closed Up
- 1983: Beatbox
- 1983: Daft
- 1984: Edited (picture disc)
- * Attrition
- 1985: Smiling, at the Hypogonder Club
- (comp)
- UBL Card: 4232
- See also: www.projekt.com
-
- * AUTECHRe
- 1994: INCUNABULA
- 1994: BASSCAD,EP (EP)
- 1994: Amber
- 1995: Garbage
- * B52's
- 1979: B52's
- 1980: Wild Planet
- 1982: Mesopotamia
- 1983: Whammy!
- 1981: Party Mix
- UBL Card: 2268
-
- * Babes in Toyland UBL Card: 3190
- 1989: Spanking Machine
- 1991: To Mother
- 1992: Fontanelle
- 1993: Pain Killers
- 1995: Nemesisters
- * Battery
- 1992: Meat Market (EP)
- 1993: Mutate
- 1994: Lillith 3.2 (EP)
- 1995: nv
- * Bauhaus UBL Card: 1235
- 1979: Bela Lugosi's Dead (EP) See also:
- 1981: In the Flat Field gothic.acs.csulb.edu
- 1981: Mask See also:
- 1981: Press the Eject and Give Me the isvpc146.isv.uit.no
- Tape (live)
- 1983: Burning from the Inside
- 1979-1984: 1979-1984 (comp)
- 1985: The Sky's Gone Out
- 1984: The Last Temptation (live boot)
- 1984: Rest In Peace: The Final Concert
- (double live)
- 1996: The Passion of Covers: A Tribute
- (various)
- * Belly
- 1993: Star
- 1993: Moon (EP)
- 1995: Baby Silvertooth (EP)
- 1995: King
- UBL Card: 1360
- See also:
- isvpc146.isv.uit.no
-
- * Berlin UBL Card: 4156
- 1981: Love Life
- 1981: Dancing in Berlin / Lost in the
- Crowd (single)
- 1982: Pleasure Victim
- 1986: Count 3 and Pray
- * Big Black
- 1983: The Hammer Party
- 1987: Songs About Fucking
- 1992: The Rich Man's Eight-Track Tape
- (comp)
- UBL Card: 2410
-
- * Big Hat UBL Card: 1217
- 1993: Selena at my Window See also: www.cec.wustl.edu
- * Bigod 20
- 1990: The Bog (EP)
- 1991: Carpe Diem (EP)
- * Bikini Kill UBL Card: 4444
- 1991-1992: The C.D. Version of the See also: www.columbia.edu
- First Two Records
- * Billy Nayer Show, The
- 1994: The Ketchup and Mustard Man
- * Billy and the Boingers
- 1987: U Stink but I Love You (flexydisk)
- * Birdsongs of the Messozoic
- 1980-1987: The Fossil Record
- 1983: Sonic Geology
- * Birmingham 6 UBL Card: 4348
- 1995: Police State
- * Black Tape for a Blue Girl
- 1986: The Rope
- 1987: Mesmerized by the Sirens
- 1989: Ashes in the Brittle Air
- 1993: This Lush Garden Within
- UBL Card: 1202
- See also: www.projekt.com
-
- * Bleeding Stone, The
- 1994: Silent Insanity (EP)
- * Blondie
- 1980: Autoamerican
- 1983: Best of Blondie
- UBL Card: 2070
-
- * Blotto
- 1994: Collected Works
- * Body Count
- 1992: Body Count
- UBL Card: 1277
-
- * Bowie, David UBL Card: 1098
- 1995: Outside
- * Bow Wow Wow
- 1982: See Jungle
- 1981-1982: I Want Candy (comp)
- 1983: When the Going Gets Tough
- 1981-1983: Girl Bites Dog (comp)
- UBL Card: 2301
-
- * Breeders, The UBL Card: 1242
- 1993: Last Splash See also:
- isvpc146.isv.uit.no
- * Brücken, Claudia
- 1991: Love and a Million Other Things
- UBL Card: 4636
- See also: rt66.com
- See also:
- hcl.chass.ncsu.edu
- * Buggles, The
- 1979: The Age of Plastic
- 1981: Adventures in Modern Recording
- * Bush, Kate
- 1977: The Kick Inside
- 1980: Never For Ever
- 1983: The Dreaming
- 1985: Hounds of Love
- UBL Card: 1032
- See also: actor.cs.vt.edu
- See also:
- www.jrc.flinders.edu.au
- See also:
- holly.city.unisa.edu.au
- * Buzzcocks UBL Card: 1351
- 1976-1979: Operators Manual
- * Cabaret Voltaire
- 1974-1976: 1974-1976 (comp)
- 1978-1983: The Golden Moments of CV
- (comp)
- 1978: Nag Nag Nag (EP)
- 1979: Mix-Up (EP)
- 1980: Red Mecca
- 1981: The Voice of America
- 1981: Johnny Yesno (soundtrack)
- 1982: 2X45
- 1982: Eight Crepescule Tracks
- 1983: The Crackdown
- 1984: Micro-Phonies
- 1985: I Want You (single)
- 1985: Drinking Gasoline
- 1985: The Arm of the Lord
- 1985: The Convenant, the Sword, and the
- Arm of the Lord
- 1986: The Drain Train
- 1987: Code
- 1990: Listen Up (double comp)
- 1991: Body and Soul
- 1991: Colors
- 1992: Plasticity
- 1992: Western Reworks
- UBL Card: 2307
-
- * Cave, Nick UBL Card: 1273
- 1984: From Her to Eternity
- 1988: Tender Prey
- * Chemlab
- 1993: Burnout at the Hydrogen Bar
- 1994: Magnetic Field Remixes (EP)
- UBL Card: 3774
-
- * Children on Stun
- 1994: Tourniquets of Love's Desire
- * Christian Death
- 1982: Only Theatre of Pain
- 1988: Sex and Drugs and Jesus
- Christ
- 1989: All the Love All the Hate
- part Two: All the Hate
- 1994: Sexy Death God
- UBL Card: 1218
- See also:
- christian-death.acc.brad.ac.uk
-
- * Chris and Cosey
- 1989: Trust
- * Ciccone Youth
- 1988: The Whitey Album
- UBL Card: 1087
-
- * ClockDVA UBL Card: 3999
- 1981: Thirst
- 1988: The Hacker/The Act
- * Cocteau Twins
- 1982: Garlands
- 1983: Head over Heels
- 1984: The Spangle Maker (EP)
- 1984: Treasure
- 1985: Aikea-Guinea (EP)
- 1985: Echoes in a Shallow Bay
- 1985: Tiny Dynamine (EP)
- 1982-1985: The Pink Opaque
- UBL Card: 1074
- See also:
- garnet.berkeley.edu
- See also:
- isvpc146.isv.uit.no
-
- * Coil UBL Card: 1388
- 1986?: The Angelic Conversation
- (soundtrack)
- 1988: Gold is the Metal
- 1990: The Unreleased Themes for
- Hellraiser (EP)
- 1990: Panic / Tainted Love (single)
- 1991: Out of Light Cometh Darkness
- 1992: Snow (EP)
- * Concrete Blonde
- 1986: Concrete Blonde
- 1989: Free
- 1990: Bloodletting
- 1993: Walking in London (single)
- 1993: Mexican Moon
- UBL Card: 1396
-
- * Cop Shoot Cop
- 1993: Ask Questions Later
- * Course of Empire
- 1990: Course of Empire
- 1993: Infested! (EP)
- 1994: Initiation
- UBL Card: 2889
- See also:
- homepage.seas.upenn.edu
-
- * Cranes UBL Card: 2400
- 1990: Inescapable (EP) See also:
- 1991: Wings of Joy busop.cit.wayne.edu
- 1992: Self-Non-Self
- 1993: Forever
- 1993: Jewel (EP)
- 1994: Loved
- 1994: Shining Road (limited edition
- double EP)
- * Crash Worship
- 1992: ADRV
- UBL Card: 1901
- See also: www.meer.net
- See also: www.tyrell.net
- * Creatures, The UBL Card: 1216
- 1983: Feast
- 1990: Boomerang
- 1990: Fury Eyes (EP)
- 1990: Standing There (single)
- * Cure, The
- 1980: Boys Don't Cry
- 1980: Seventeen Seconds
- 1981: Faith
- 1982: Pornography
- 1982: The Walk
- 1982?: Looking for a Forest (live boot)
-
- 1983: Japanese Whispers
- 1983: Lovecats (EP)
- 1984: Concert (live)
- 1984: The Top
- 1985: The Head on the Door
- 1987: Staring at the Sea (comp)
- 1988: Kiss Me Kiss Me Kiss Me
- 1989: Disintegration
- 1989: Fascination Street (single)
- 1990: Never Enough (single)
- 1995?: Give Me the Cure: 18 DC Bands
- (various)
- UBL Card: 1159
- See also:
- www.acpub.duke.edu
- See also: pathfinder.com
-
- * Current 93 UBL Card: 3465
- 1986-1991: Island
- * Curve
- 1991: Frozen (EP)
- 1991: Cherry (EP)
- 1992: Doppelganger
- 1993: Cuckoo
- UBL Card: 1355
- See also:
- quark.stack.urc.tue.nl
- See also:
- blade.stack.urc.tue.nl
- * Cyber-Tec
- 1995: Cyber-Tec
- * Daisy Chainsaw
- 1992: Hope All Your Dreams Come True (single)
- 1992: Love Sick Pleasure (EP)
- 1992: Eleventeen
- 1994: For They Know Not What They Do
- * Dance or Die
- 1993: Psychoburbia
- * Danse Society, The
- 1984: Heaven is Waiting
- 1986: Looking Through
- * Das Ich UBL Card: 2337
- 1990: Satanische Verse
- * Dax, Danielle
- 1986-1988: Dark Adapted Eye (comp +5)
- 1988: Whistling for his Love (single)
- 1988: Cat House (single)
- 1990: Blast the Human Flower
- 1992: Pop-Eyes
- 1995: Timber Tongue (EP)
- UBL Card: 1746
-
- * Death in June
- 1992: But, What Ends When the Symbols Shatter?
- * Definition FX
- 1993: Something Inside (single)
- 1993: Light Speed Collision
- See also: www.geko.com.au
-
- * Depeche Mode UBL Card: 1041
- 1981: Speak & Spell See also: www.cis.ufl.edu
- 1981: Just Can't Get Enough / Any See also:
- Second Now (single) www.coma.sbg.ac.at
- 1982: A Broken Frame
- 1982: live singles (comp)
- 1983: Construction Time Again
- 1984: People Are People (comp +2)
- 1984: Some Great Reward
- 1985: Catching Up With Depeche Mode
- (comp +4)
- 1985: It's Called a Heart / Fly on the
- Windscreen (single)
- 1986: Black Celebration
- 1986: Stripped (single)
- 1986: A Question of Lust (single)
- 1989: 101 (double live)
- 1987: Music for the Masses
- 1987: Never Let Me Down (single)
- 1990: Personal Jesus (single)
- 199?: I Sometimes Wish I Was Famous: A
- Swedish Tribute (various)
- * Dessau
- 1995: Dessau
- 1995: Details Sketchy
- * Devo UBL Card: 1088
- 1978: Q: Are We Not Men? A: We Are See also:
- DEVO! hartke.lib.ohio-state.edu
- 1979: Freedom of Choice See also: unsane.enc.org
- 1977-1990: Greatest Hits See also: rt66.com
- 1978-1990: Greatest Misses
- * Die Krupps
- 1995: Rings of Steel
- * Die Monster Die
- 1994: Withdrawl Method
- * Die Warzau
- 1991: Big Electric Metal Bass Face
- 1994: Engine
- 1994: allgoodgirls (EP)
- * Disposable Heroes of Hiphoprisy
- 1992: Hypocrisy is the Greatest Luxury
- * Dolby, Thomas
- 1983: The Golden Age of Wireless
- 1983: The Golden Age of Wireless (2nd
- release: 2 new)
- 1984: The Flat Earth
- UBL Card: 1961
- See also: kspace.com
- See also: rt66.com
-
- * Doubting Thomas UBL Card: 1166
- 1991: Father Don't Cry (EP) See also: www.eecs.nwu.edu
- 1991: The Infidel
- * Duran Duran
- 1981: Duran Duran
- 1982: Carnival (EP)
- 1982: live (live boot)
- 1982: Rio
- 1983: Union of the Snake / Secret
- Oktober (single)
- 1983: The Wild Boys / Cracks in the
- Pavement (single)
- 1983: Seven and the Ragged Tiger
- 1987: Notorious
- 1981-1988: Decade (comp)
- UBL Card: 1259
-
- * Durutti Column UBL Card: 4853
- 1988: The Guitar and Other Machines
- * Ebn Ozn
- 1984: Feeling Cavalier
- * Elastica
- 1995: Elastica
- * Elastic Purejoy, The
- 1994: The Elastic Purejoy
- See also:
- http2.brunel.ac.uk
- * Electric Hellfire Club, The
- 1993: Burn, Baby, Burn
- 1995: Kiss the Goat
- * Elfman, Danny
- 1984: So-Lo
- UBL Card: 1089
-
- * Emergency Broadcast Network
- 1995: Telecommunication Breakdown
- * Engorged with Blood
- 1993: Engorged with Blood (EP)
- * Eno, Brian UBL Card: 1064
- 1977: Before and After Science See also: www.nwu.edu
- * Eon
- 1991: Fear: the Mindkiller (EP)
- 1992: Basket Case (EP)
- * Erasure UBL Card: 1029
- 1984-1986: various singles See also: www.cec.wustl.edu
- 1986: Wonderland
- See also: rt66.com
- * Estep, Maggie
- 1994: No More Mister Nice Girl
- * Ethyl Meatplow UBL Card: 5232
- 1993: Happy Days Sweetheart
- 1993: Devil's Johnson (single)
- * Eurythmics
- 1981: In the Garden
- 1982: Love is a Stranger (EP)
- 1982: This is the House (live EP)
- 1983: Sweet Dreams
- 1983: Touch
- 1984: 1984 (For the Love of Big Brother) (soundtrack)
- * Executive Slacks
- 1986: Fire and Ice
- * Faith and the Muse
- 1994: Elyria
- * Fixx, The UBL Card: 4603
- 1982: Shuttered Room
- 1983: Reach the Beach
- 1984: Phantoms
- 1986: Walkabout
- 1987: React (live)
- * Foetus
- 19??: Rife
- 1995: Gash
- UBL Card: 2750
-
- * Fortran 5 UBL Card: 3469
- 1991: Blues See also: rt66.com
- 1993: Bad Head Park
- * 45 Grave
- 1993: Debasement Tapes
- * Frankie goes to Hollywood UBL Card: 3222
- 1984: Welcome to the Pleasure Dome See also: rt66.com
- * Freur
- 1983: Doot Doot
- See also: rt66.com
-
- * Front 242 UBL Card: 1059
- 1979: Masterhit (EP) See also: www.ifi.uio.no
- 1983: Geography See also: www.eecs.nwu.edu
- 1987: Official Version
- 1985: No Comment
- 1982: Two In One (EP)
- 1982-1985: Backcatalogue (comp)
- 1989: Headhunter (EP)
- 1989: Front by Front
- 1989: Never Stop (EP)
- 1991: Tyrrany For You
- 1991: Tragedy For You (EP)
- 1991: Rhythm of Time (EP)
- 1993: Religion (EP)
- 1993: Animal (single)
- 1993: 06:21:03:11 Up Evil
- 1993: 05:22:09:12 Off
- * Front Line Assembly
- 1988: Convergence
- 1989: Digital Tension Dementia (EP)
- 1990: Gashed Senses and Crossfire
- 1991: Caustic Grip
- 1992: Tactical Neural Implant
- UBL Card: 1161
-
- * Fugazi UBL Card: 2053
- 1989: 13 Songs
- * Fun Boy Three
- 1982: It Ain't What You Do / Just Do It / Funrama Theme (single)
- 1981-1983: The Best of Fun Boy Three (comp)
- * Fuzzbox See also: world.std.com
- 1986: We've got a Fuzzbox and We're
- Gonna Use It!!
- 1986: Love is the Slug (single)
- 1986: Rules and Regulations (single)
- * Gabriel, Peter
- 1977: Peter Gabriel I
- 1978: Peter Gabriel II
- 1980: Peter Gabriel III
- 1982: Security
- 1983: Peter Gabriel Plays Live (double
- live)
- 1985: Birdy (soundtrack)
- 1986: So
- 1986: Live at the Civic Arena (live
- boot)
- 1989: Passion (soundtrack)
- UBL Card: 1016
- See also: www.nwu.edu
- See also:
- www.cs.clemson.edu
-
- * Garbage See also:
- 1995: Garbage hamp.hampshire.edu
- * Game Theory
- 1987: Lolita Nation
- * Gang of 4 See also:
- 1979: Entertainment http2.brunel.ac.uk
- 1979: Peel Sessions (live)
- 1981: Solid Gold
- 1981: Another Day / Another Dollar
- 1982: I Love a Man In a Uniform
- (single)
- 1982: Songs of the Free
- 1983: Is It Love (single)
- 1983: Hard
- 1983: At the Palace (live)
- 1979-1983: A Brief History of the
- Twentieth Century (comp)
- 1990: To Hell With Poverty (single)
- 1990: Mall
- 1990: Money Talks (single)
- 1995: Tatoo (single)
- 1995: Shrinkwrapped
- * Glove, The
- 1982: Blue Sunshine
- UBL Card: 1159
- See also: www.dcs.gla.ac.uk
- * God is my Copilot
- 1993: Speed Yr Trip
- * Gracious Shades
- 1995: Aberkash
- * Grind
- 1995: Kittymuzzle
- * Grotus
- 1993: Slow Motion Apocalypse
- UBL Card: 5482
-
- * Pizzicato Five
- 1995: The Sound of Music
- * PJ Harvey
- 1992: Dry
- 1993: Rid of Me
- 1993: 4-Track Demos
- 1995: Down by the Water (single)
- 1995: To Bring You My Love
- UBL Card: 1221
- See also:
- www.louisville.edu
-
- * Psychick Warriors ov Gaia
- 1992: Ov Biospheres and Sacred Groves
- * Hagen, Nina
- 1985: In Ekstasy
- 1978-1982: nunsexmonkrock / Nina Hagen Band
- * Hate Dept. See also: www.iuma.com
- 1994: Meat Your Maker
- 1995: Mainline (EP)
- * Haysi Fantayzee
- 1982: Shiny Shiny remix (single)
- * Heaven 17
- 1981: Penthouse and Pavement
- 1982: Heaven 17
- 1983: The Luxury Gap
- 1984: How Men Are
- * Hope, Peter and Kirk, Richard
- 1988: Hoodoo Talk
- UBL Card: 2307
-
- * Kershaw, Nik
- 1983: Human Racing
- * Kirk, Richard
- 1993: Virtual State
- UBL Card: 2307
-
- * Human League UBL Card: 4631
- 1979: Reproduction See also: pathfinder.com
- 1980: Travelogue
- 1981: Dare
- 1983: Fascination
- 1984: Hysteria
- 1995: Octopus
- * Hunters and Collectors
- 1987: Human Frailty
- UBL Card: 4553
-
- * Ice T UBL Card: 2342
- 1991: New Jack Hustler (EP)
- * In the Nursery
- 19??: L'Esprit
- * INXS UBL Card: 1284
- 1982: Shabooh Shoobah
- 1984: The Swing
- 1985: Listen Like Thieves
- 1988: Kick
- 1990: X
- * J., David
- 1983-1986: On Glass (comp)
- 1985: Crocodile Tears and the Velvet
- Cosh
- UBL Card: 1215
- See also:
- gothic.acs.csulb.edu
- See also:
- isvpc146.isv.uit.no
- * Jesus and Mary Chain, The UBL Card: 1228
- 1992: Reverence (EP) See also:
- 1992: Honey's Dead american.recordings.com
- 1995: Hate Rock and Roll (comp)
- * Jones, Grace
- 1993: Sex Drive (single)
- * Jones, Howard
- 1983: Humans' Lib
- 1985: Dream Into Action
- * Joy Division
- 1977-1978: Warsaw (comp)
- 1979: Unknown Pleasures
- 1980: Closer
- 1980: Transmission / Novelty (single)
- 1980: Still
- 1977-1980: Substance (comp)
- 1995: Ceremonial: A Tribute (various)
- UBL Card: 1214
- See also: www.fys.uio.no
- See also:
- csclub.uwaterloo.ca
-
- * King Crimson UBL Card: 1323
- 1969: In the Court of the Crimson King
- 1973: Larks' Tongues in Aspic
- 1974: Starless and Bible Black
- 1981: Dicipline
- 1982: Beat
- 1984: Three of a Perfect Pair
- * KMFDM
- 1993: Angst
- UBL Card: 1452
-
- * Kraftwerk UBL Card: 1027
- 1977: Trans-Europe Express (EP) See also: wwwtdb.cs.umu.se
- See also: rt66.com
- * L7
- 1988: L7
- 1990: Smell the Magic
- 1992: Bricks are Heavy
- 1994: Hungry for Stink
- UBL Card: 1998
-
- * Le&ae;ther Strip
- 1995: Legacy of Hate and Lust
- * Lemon Kittens
- 1978-1980: We Buy a Hammer for Daddy
- UBL Card: 1746
-
- * Letters to Cleo UBL Card: 3000
- 1994: Aurora Gory Alice
- * LFO
- 1991: Frequencies
- 1996: Advance
- * London After Midnight
- 1989: Selected Scenes from the End of the World
- * Lords of Acid
- 1991: Rough Sex (single)
- 1993: Voodoo U
- 1994: The Crablouse: Variations on a
- Species (single)
- UBL Card: 2356
-
- * Lords of the New Church, The
- 1983: Is Nothing Sacred?
- * Love and Rockets
- 1985: Ball of Confusion / Inside the
- Outside (single)
- 1985: Seventh Dream of Teenage Heaven
- 1986: Express
- 1986: Kundalini Express / Lucifer Sam /
- Holiday on the Moon (single)
- 1987: Earth, Sun, Moon
- 1989: No Big Deal (single)
- 1989: Motorcycle (single)
- 1989: Love and Rockets
- 1994: This Heaven (EP)
- 1994: Body and Soul (EP)
- 1994: Hot Trip to Heaven
- 1995: The Glittering Darkness (EP)
- 1996: Sweet F. A.
- UBL Card: 1215
- See also:
- american.recordings.com
- See also:
- gothic.acs.csulb.edu
-
- * Love is Colder than Death
- 1993: Oxeia
- 19??: Mental Traveller
- 19??: Teignmouth
- * Low Pop Suicide
- 1992: Disengagement (EP)
- 1992: On the Cross of Commerce
- 1994: Kiss Your Lips (remixes)
- 1995: The Death of Excellence
- UBL Card: 1984
-
- * Luscious Jackson
- 1992: In Search of Manny
- 1994: Natural Ingredients
- * Lush
- 1990: Gala
- 1992: Spooky
- 1994: Split
- UBL Card: 2359
- See also:
- isvpc146.isv.uit.no
-
- * Lwin, Annabella UBL Card: 2301
- 1986: War Boys (single)
- 1994: Car Sex (EP)
- * Lycea
- 1993: A Day in the Stark Corner
- See also: www.projekt.com
-
- * M
- 1979: Pop Musik (7inch)
- * Machines of Loving Grace
- 1991: Rite of Shiva (single)
- 1991: Machines of Loving Grace
- 1992: Burn Like Brilliant Trash (EP)
- 1993: Concentration
- 1995: Gilt
- UBL Card: 1219
- See also: www.nando.net
-
- * M|A|R|R|S
- 1987: Pump Up the Volume / Anitina (single)
- * Mallinder, Stephen
- 1982: Pow Wow
- UBL Card: 2307
-
- * Manufacture
- 1988: Terrorvision
- * March Violets, The
- 1984: Natural History
- 1982-1984: The Botanic Verses (comp)
- 1983-1985: Electric Shades (comp)
- 1985: Deep (EP)
- 1986: A Turn to the Sky / Never Look
- Back / Deep / Rebirth (single)
- UBL Card: 1114
- See also: www.cm.cf.ac.uk
-
- * Martha and the Muffins UBL Card: 2529
- 1980-1984: Far Away in Time (comp)
- * Mary's Danish
- 1991: Circa
- UBL Card: 3727
-
- * MC 900 Foot Jesus UBL Card: 1229
- 1989: Hell With the Lid Off See also:
- 1989: UFOs Are Real (EP) american.recordings.com
- 1990: Welcome to My Dream
- 1990: Killer Inside Me (EP)
- * McLachlan, Sarah
- 1992: Into the Fire (single)
- UBL Card: 1389
-
- * Meat Beat Manifesto UBL Card: 3626
- 1988: Armed Audio Warfare
- 1990: Dog Star Man (EP)
- 1990: 99%
- 1990: Psyche Out (EP)
- 1990: Now (EP)
- 1992: Satryicon
- 1993: Peel Session (EP)
- * Medicine
- 1993: The Buried Life
- 1994: Shot Forth Self Living
- UBL Card: 1432
- See also: kspace.com
-
- * Mephisto Walz
- 1986-1992: Crocosmia
- 1993: Terra-Regina (comp)
- 1994: The Eternal Deep
- 1995: Thalia
- * Midnight Oil
- 1979: Head Injuries
- 1981: Place without a Postcard
- 1983: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1...
- 1985: Red Sails in the Sunset
- UBL Card: 1102
- See also:
- www.stevens-tech.edu
-
- * Miller, Roger
- 1987: Maximum Electric Piano
- * Ministry
- 1983: With Sympathy
- 1984: Halloween Remix / The Nature of
- Outtakes (EP)
- 1981-1984: various singles
- 1985: Cold Life
- 1985: Over the Shoulder / Isle of Man
- (EP)
- 1986: Twitch
- 1988: 12 Inch Singles (comp)
- 1988: The Land of Rape and Honey
- 1988: Stigmata / Tonight we Murder (EP)
-
- 1989: The Mind is a Terrible Thing to
- Taste
- 1991: Jesus Built my Hotrod (EP)
- 1992: Psalm 69
- UBL Card: 1100
- See also:
- csclub.uwaterloo.ca
-
- * Miranda Sex Garden UBL Card: 3007
- 1991: Gush Forth my Tears See also:
- 1991: Madra sksol1.physics.sunysb.edu
- 1992: Iris
- 1993: Suspiria
- 1994: Fairytales of Slavery
- * Missing Persons
- 1982: Missing Persons (EP)
- 1982: Spring Session M
- 1984: Rhyme & Reason
- 1982-1984: Best of (comp)
- * Mistle Thrush
- 199?: Silt
- 1994: Agus Amàrach
- * Mission, The
- 1986: God's Own Medicine
- 1987: the First Chapter
- UBL Card: 2045
-
- * Mission of Burma
- 1987: Forget
- * Morissette, Alanis
- 1995: Jagged Little Pill
- UBL Card: 3127
-
- * Morrison, Patricia UBL Card: 1062
- 1994: Reflect on This
- * Moyet, Allison
- 1985: ALF
- UBL Card: 3410
- See also: rt66.com
- * Murder Inc.
- 1992: Murder Inc.
- * Mussolini Headkick
- 1990: Blood on the Flag
- * Murphy, Peter UBL Card: 1235
- 1986: Should the World Fail to Fall See also:
- Apart gothic.acs.csulb.edu
- See also:
- isvpc146.isv.uit.no
- * My Bloody Valentine
- 1988: Isn't Anything
- 1991: Loveless
- UBL Card: 1912
-
- * My Life with the Thrill Kill Kult UBL Card: 3478
- 1988: I See Good Spirits and I See Bad
- Spirits
- 1989: K00Ler than Jesus
- 1990: Confessions of a Knife...
- 1990: Swine & Roses / Naive (KMFDM)
- (single)
- * Neither/Neither World
- 1994: Tales of True Crime
- * Neotek
- 1995: Brain over Muscle
- * New Fast Automatic Daffodils
- 1991: Pigeonhole
- 1992: Bong
- * New Order UBL Card: 1126
- 1981: Movement See also:
- 1981: Temptation / Hurt (single) topquark.cecer.army.mil
- 1982: Factus 8
- 1984: Power, Corruption, and Lies
- 1984: Blue Monday (single)
- 1985: The Perfect Kiss (single)
- 1985: Confusion (single)
- 1985: Low Life
- 1983-5: various singles
- 1986: Brotherhood
- * Nine Inch Nails
- 1989: Pretty Hate Machine
- 1989: Head Like a Hole (remixes)
- 1990: Sin (remixes)
- 1992: Broken (EP)
- 1992: Fixed (remixes)
- 1994: March of the Pigs (EP)
- 1994: The Downward Spiral
- 1994: Closer to God (EP)
- 1994: Closer (Further Away) (EP)
- 1994: Further Down the Spiral (remixes)
- UBL Card: 1046
- See also: www.scri.fsu.edu
- See also: metaverse.com
-
- * Nirvana UBL Card: 1052
- 1991: Nevermind See also: www.ludd.luth.se
- See also:
- home.earthlink.net
- * Nitzer Ebb
- 1987: That Total Age
- 1987: Warsaw Ghetto (EP)
- 1987: So Bright So Strong (remixes)
- 1987: Get Clean (remixes)
- 1988: Control: I'm Here (single)
- 1989: Hearts and Minds (single)
- 1989: Belief
- 1990: Showtime
- 1991: I Give to You (single)
- 1991: As Is (single)
- 1991: Ebbhead
- 1991: Godhead (EP)
- UBL Card: 1164
- See also: www.eecs.nwu.edu
-
- * No Doubt
- 1995: Tragic Kingdom
- * Noise Unit
- 1989: Grinding Into Emptiness
- * Nosferatu
- 1993: Rise
- * Numan, Gary
- 1978: Tubeway Army
- 1978: The Plan
- 1979: Replicas
- 1979: The Pleasure Principle
- 1980: Telekon
- 1981: Warriors
- 1981: Dance
- 1982: I, Assassin
- 1984: White Noise (double live)
- 1987: Ghost (double live)
- UBL Card: 1409
-
- * Offspring
- 1994: Smash
- * Oingo Boingo
- 1980: Forbidden Zone (soundtrack)
- 1981: Only a Lad
- 1983: Good for Your Soul
- 1986: Dead Man's Party
- 1987: Nothing to Fear
- UBL Card: 1089
- See also: rhino.harvard.edu
-
- * Orb, The UBL Card: 1121
- 1991: The Orb's Adventures Beyond the See also: www.hyperlink.com
- Ultraworld
- 1991: Aubrey Mixes, the Ultraworld See also:
- Excursions www.phlab.missouri.edu
- 1991: Little Fluffy Clouds (EP) See also: rt66.com
- 1992: U.F.Orb
- 1993: live 93 (double live)
- 1994: Pomme Fritz
- * Orbital
- 1993: Orbital 2
- UBL Card: 2049
- See also: rt66.com
- * Orchestral Manoeuvers in the Dark UBL Card: 5370
- 1980: OMD (US release)
- 1980: OMD (UK release)
- 1981: Bunker Soldiers
- 1981: Architecture & Morality
- 1983: Dazzle Ships
- 1984: Junk Culture
- 1985: Crush
- * Oxygiene 23
- 1995: Blue
- * 187 Calm
- 1995: One Eighty Seven Calm (EP)
- * 1000 Homo DJs
- 1990: Supernaut (EP)
- * Opus III
- 1991: Mind Fruit
- 1994: Guru Mother
- * Pain Teens
- 1990: Born in Blood / Case Histories
- 1992: Stimulation Festival
- 1993: Destroy Me, Lover
- 1995: Beast of Dreams
- * Paralysed Age
- 1994: Nocturne
- * Pigface
- 1990: Gub
- UBL Card: 1165
- See also: www.eecs.nwu.edu
- * Pink Floyd UBL Card: 1008
- 1973: Dark Side of the Moon
- 1975: Wish You were Here
- 1978: The Wall (double soundtrack)
- 1981: A Collection of Great Dance Songs
- (comp)
- 1995: A Saucerful of Pink: a Tribute
- (double, various)
- * Polygon Window
- 1993: Surfing on Sine Waves
- UBL Card: 5279
-
- * Police UBL Card: 1172
- 1979: Outlandos D'Amour
- 1980: Ghost in the Machine
- 1981: Zenyatta Mondatta
- 1983: Synchronicity
- * Poe
- 1995: Hello
- * Pop, Iggy UBL Card: 4345
- 1977: Lust for Life
- * Powerman 5000
- 1995: The Blood Splat Rating System
- * Powerstation, The UBL Card: 1259
- 1985: The Powerstation
- * Pram
- 199?: Iron Lung (EP)
- 1995: Helium
- 1995: Sargasso Sea
- * Prick UBL Card: 3683
- 1995: Prick
- * Primus
- 1991: Sailing on the Seas of Cheese
- UBL Card: 1055
-
- * Project Pitchfork
- 1991: Dhyani
- * Propaganda
- 1985: A Secret Wish, US version
- 1985: A Secret Wish, UK version
- (remixes)
- 1985: p:machinery (polish / passive) /
- Frozen Faces (single)
- 1985: Duel / Jewel (single)
- 1985: Wishful Thinking (remixes)
- 1990: Heaven Give Me Words (EP)
- 1995: p:machinery t-empo remix (single)
- UBL Card: 4636
- See also: rt66.com
- See also:
- hcl.chass.ncsu.edu
-
- * Prophetess, The
- 1993: The Prophetess
- * Public Image Limited
- 1985: Album
- * Rage Against the Machine UBL Card: 1424
- 1992: Rage Against the Machine
- * Romeo Void
- 1981: Never Say Never / Present Tense (single)
- * Blaine Reininger
- 1989: Expatriate Journals
- * Red Aunts
- 1993: Drag
- 1994: Bad Motherfucker 400-Z
- 1995: #1 Chicken
- UBL Card: 4619
-
- * Re-Flex
- 1983: The Politics of Dancing / Re-Flex It (single)
- * Revolting Cocks
- 1986: Big Sexy Land
- 1988: You Goddamned Son of a Bitch
- (double live)
- 1989: Stainless Steel Providers (EP)
- 1990: Beers, Steers, and Queers
- 1993: Linger Ficken' Good
- UBL Card: 1100
-
- * Ridgway, Stan UBL Card: 2904
- 1986: The Big Heat
- * Rosemarys, The
- 1993: Providence
- * Rosetta Stone
- 1993: Adrenaline
- 1995: The Tyrrany of Inaction
- * Ruby
- 1995: Salt Peter
- * Rump
- 1994: Hating Brenda
- * Rush
- 1984: Grace Under Pressure
- UBL Card: 1039
-
- * Sandoz
- 1993: Digital Lifeforms
- * Scatterbrain
- 1990: Here Comes Trouble
- * Scar Tissue
- 1995: Scar Tissue
- * Scritti Politti
- 1985: Cupid & Psyche
- * Severed Heads UBL Card: 1480
- 1983: Since the Accident
- 1986: Come Visit the Big Bigot
- 1987: Bad Mood Guy
- * Sex Gang, Andi
- 1994: Arco Valley
- * Sex Gang Children
- 1992: Blind
- 1993: Dieche
- 1993: Medea
- * Shadow Project
- 1991: Shadow Project
- * Sharkbait
- 1991: Blowtorch Facelift
- 1993: Crushits
- * Sheep on Drugs
- 1993: Greatest Hits (comp)
- 1995: Suck (EP)
- * Shriekback UBL Card: 1248
- 1982: Tench See also:
- 1983: Care http2.brunel.ac.uk
- 1983: Care (Y version)
- 1983: Lined Up / Hapax Legomena
- (single)
- 1983: Lined Up / My Spine / Accretions
- /Into Method (single)
- 1983: My Spine / Accretions / Clear
- Trails (single)
- 1983: Sexthinkone / Here Comes My Hand
- (single)
- 1984: Jamscience (UK release)
- 1984: Jamscience (Holland release)
- 1984: Knowledge, Power, Truth, and Sex
- 1984: Mercy Dash (picture disc, single)
-
- 1984: Hand on my Heart (picture disc,
- single)
- 1985: The Infinite (comp)
- 1985: Oil and Gold
- 1985: Fish Below the Ice (EP)
- 1983-1985: Priests and Kannibals (comp)
-
- 1986: Big Night Music
- 1986: Islam Grotto (live boot)
- 1988: Evolution (comp)
- 1990: The Dancing Years (remixes)
- 1993: Sacred City
- * Siglo XX
- 1983-1986: Antler Tracks I (comp)
- 1986: Fear and Desire
- * Single Gun Theory UBL Card: 1404
- 1989?: Exorcise this Wasteland See also: www.magna.com.au
- 1991: Like Stars in my Hands
- 1993: Burning Bright (but Unseen) (EP)
- 1994: Flow, River of my Soul
- * Siouxsie and the Banshees
- 1977: Peel Sessions (live EP)
- 1978: Peel Sessions 2 (live EP)
- 1978: The Scream
- 1979: Join Hands
- 1980: Kaleidoscope
- 1981: juju
- 1981: Once Upon a Time (comp)
- 1981: Spellbound / Follow the Sun / Slap
- Dash Snap (single)
- 1982: Slowdive / Obsession II / Cannibal
- Roses (single)
- 1982: A Kiss in the Dream House
- 1983: Nocturne (double live)
- 1984: Hyaena
- 1985: Tinderbox
- 1986: Through the Looking Glass
- 1987: Song from the Edge of the World
- (single)
- 1988: Peekaboo / False Face / Catwalk
- (single)
- 1988: Peepshow
- 1991: Superstition
- 1991: Kiss Them for Me (EP)
- 1995: The Rapture
- UBL Card: 1216
-
- * Sister Machine Gun UBL Card: 3612
- 1992: Sins of the Flesh
- 1994: The Torture Technique
- 1994: Nothing (single)
- 1994: Wired / Lung (single)
- 1995: Burn
- * Sisterhood, The
- 1986: Gift
- UBL Card: 1115
- See also: www.cm.cf.ac.uk
- * Sisters of Mercy UBL Card: 1062
- 1985: First and Last and Always See also: www.cm.cf.ac.uk
- 1988: Floodland
- 1988: More / You Could be the One
- (single)
- 1990: Vision Thing
- 1992: Some Girls Wander by Mistake
- (comp)
- 1992: Temple of Love 1992 (single)
- 1993: First and Last and Forever: A
- Tribute (various)
- 1993: Under the Gun / Alice 1993
- (single)
- * Skeletal Family
- 1984-1985: Burning Oil / Futile Combat
- * Skinny Puppy UBL Card: 1166
- 1983: Back and Forth, Series Two See also: www.eecs.nwu.edu
- 1984: Bites
- 1984: Remission
- 1984: Bites and Remission
- 1986: Mind: the Perpetual Intercourse
- 1986: Dig It (EP)
- 1987: Cleanse, Fold, and Manipulate
- 1988: Vivisect VI
- 1989: Rabies
- 1990: Too Dark Park
- 1990: Censor (EP)
- 1992: 12 Inch Anthology (comp)
- 1992: Last Rights
- * Sky Cries Mary
- 1993: A Return to the Inner Experience
- 1994: This Timeless Turning
- 1994: Every Iceberg is Afire / Deep
- Sunless Sea / Cornerman (single)
- UBL Card: 1437
- See also: www.starwave.com
-
- * Snog
- 1995: Dear Valued Customer
- * Soh Daiko
- 1990: Taiko Drum Ensemble
- * Some, Belouis
- 1984: Some People (single)
- * Southern Death Cult
- 1982-1983: Southern Death Cult (comp)
- * Spahn Ranch
- 1995: The Coiled One
- * SSQ
- 1984: Playback
- 1986: Insecurity (single)
- * Stabbing Westward UBL Card: 2415
- 1993: Violent Mood Swings (EP)
- 1994: Ungod
- 1995: What Do I Have to Do / Falls
- Apart (single)
- 1995: Wither Blister Burn and Peel
- * Strange Boutique
- 199?: Charm
- 199?: The Kindest Words
- 199?: The Loved One
- See also: www.iuma.com
-
- * Steroid Maximus UBL Card: 2750
- 1991: Quilombo
- 1992: Gondwanaland
- * Sugarcubes, The
- 1988: Life's Too Good
- UBL Card: 3419
- See also: math-www.uio.no
- * Sunscreem
- 1992: O3
- * Switchblade Symphony
- 1992: Fable (tape/EP)
- 1993: Elegy (tape/EP)
- 1995: Serpentine Gallery
- * Talking Heads UBL Card: 1012
- 1977: Talking Heads '77
- 1978: More Songs About Buildings and
- Food
- 1979: The Name of This Band is Talking
- Heads (double live)
- 1981: Fear of Music
- 1983: Sp eak in gI n To ngu es
- 1985: Stop Making Sense (live
- soundtrack)
- 1985: Little Creatures
- * Tears For Fears
- 1983: The Hurting
- 1985: Songs From the Big Chair
- UBL Card: 2763
-
- * Tel Basta
- 1996: Lickerish
- * Thanatos
- 1995: An Embassy in Gaius
- * Therapy? UBL Card: 2044
- 1992: Caucasian Psychosis
- 1992: Nurse
- * 13 Mg.
- 1995: Trust and Obey
- * This Ascension
- 1991: Light and Shade
- 1994: Walk Softly, a Dream Lies Here
- * Throwing Muses
- 1986: Throwing Muses
- UBL Card: 1357
-
- * Tinfed
- 1993: Synaptic Hardware
- * Tin Machine
- 1989: Tin Machine
- UBL Card: 1098
-
- * Tit Wrench United
- 1993: Full Employment
- * Tom Tom Club
- 1981: Tom Tom Club
- 1983: Close to the Bone
- UBL Card: 1012
-
- * Tones on Tail UBL Card: 1235
- 1982: Tones on Tail See also:
- 1984: Pop gothic.acs.csulb.edu
- 1984: Performance / Shakes (single) See also:
- 1982-1984: Night Music (comp) isvpc146.isv.uit.no
- * Trance Mission
- 1993: Trance Mission
- * Trance to the Sun
- 1994: Ghost Forest
- 1995: Bloom, Flowers, Bloom!
- 1995: Venomous Eve
- * Transvision Vamp
- 1991: Little Magnets versus the Bubble
- of Babble
- UBL Card: 5305
-
- * Trio
- 1983: Trio and Error
- * Tubes, The
- 1981: Tubes Rarities And Smash Hits [T.R.A.S.H]
- * Tuxedomoon
- 1980: Half-Mute
- 1983: A Thousand Lives by Picture
- 1985: Holy Wars
- * Underflowers
- 1995: Underflowers
- * Urban Dance Squad UBL Card: 4626
- 1991: Life'n Perspectives of a Genuine
- Crossover
- * Usherhouse
- 1993: Molting
- 1994: Flux
- * Ultravox
- 1978: Systems of Romance
- * Van Acker, Luc
- 1980: Taking Snapshots, Volume 1
- UBL Card: 1100
-
- * Vangelis UBL Card: 1023
- 1994: Blade Runner (soundtrack) See also: rt66.com
- * various
- 1980: URGH! A Music War (live comp)
- 1981-1994: Wax Trax Black Box (comp)
- 1982-198?: In Goth Daze (Anagram version) (comp)
- 1982-1994: In Goth Daze (Cleopatra version) (comp)
- 1982-1993: The Whip (Cleopatra) (comp)
- 1984-1985: IQ6: Zang Tumb Tuum Sampled (comp)
- 1984-1995: DEC ADE NCE (Nettwerk) (comp)
- 1988: This is Electronic Body Music (comp)
- 1990: From Across This Gray Land #2 (Projekt) (comp)
- 1990: Doctor Death IV: The Marvels of Insect Life (double comp)
- 1990: Red Hot + Blue (comp)
- 1991: Bouquet of Dreams (comp)
- 1980-1992: Gothic Rock (comp)
- 1992: Mindfield (Third Mind) (comp)
- 1992: From Across This Gray Land #3 (Projekt) (comp)
- 1992: The Cyberflesh Conspiracy (comp)
- 1992: Gárgula Mecânica: World Electrostatic Assembly (comp)
- 1992: CCCC: California Cyber Crash Compilation (Cop) (comp)
- 1993: Shut Up Kitty (comp)
- 1988-1993: Can You See It Yet? (Invisible) (comp)
- 1994: Mysterious Encounters (Cleopatra) (comp)
- 1994: The Crow (comp)
- 1994: Totentanz: The Best of Zoth Ommog (double comp)
- 1992: Hy! (Hyperium Compilation volume 1) (comp)
- 1993: World Domination Sampler (comp)
- 1993: Rivet Head Culture (comp)
- 1993: Artificial Intelligence (Warp) (comp)
- 1994: Artificial Intelligence II (Warp) (comp)
- 1994: Big Hard Disk #2 (Smash) (comp)
- 1994: Kindred Spirits (Bedazzled) (comp)
- 1994: Plug In + Turn On (Instinct) (comp)
- 1994: The Disease of Lady Madeline (Anubis) (comp)
- 1994: Natural Born Killers (soundtrack comp)
- 1994: Afterburn (Wax Trax) (comp)
- 1994: Chaos Compilation (Cop) (comp)
- 1994: Electrocity Vol. 5 (comp)
- 1995: Gothik (Cleopatra) (double comp)
- 1995: Godfathers of German Gothic (comp)
- 1995: Heavenly Voices III (Hyperium) (comp)
- 1995: Mortal Kombat (soundtrack comp)
- 1995: The Tyranny Off the Beat (Off Beat/Cleopatra) (comp)
- 1995: Forced Cranial Removal (Fifth Colvmn) (comp)
- 1995: Dreams in the Witch House (Grave News) (comp)
- * Vega, Suzanne UBL Card: 2088
- 1992: 99.9F
- * Vinyl Devotion
- 1994: If They Know You're Trying
- * Volume Magazine
- 1991: Volume: 1 (comp)
- 1991: Volume: 2 (comp)
- 1992: Volume: 3 (comp)
- 1992: Volume: 4 (comp)
- 1995: Wasted: The Best of Volume (double comp)
- * Waitresses, The
- 1981: Wasn't Tomorrow Wonderful?
- 1982: Bruiseology
- 1978-1981: Best Of (comp)
- * Wake, The
- 1993: Masked
- * Wall of Voodoo
- 1980: fpfpfpfpfpfp
- 1981: Dark Continent
- 1982: Call of the West
- 1986: Seven Days in Sammystown
- 1987: Happy Planet
- * Wang Chung UBL Card: 2245
- 1983: Points On the Curve
- 1985: To Live and Die in L.A.
- (soundtrack)
- * Westworld
- 1987: Rockulator
- 1991: Movers and Shakers
- 1991: Do No Wrong (single)
- * Whale UBL Card: 3790
- 1994: Hobo Humpin Slobo Babe / Eye 842 See also: www.vmg.co.uk
- (single)
- 1994: Hobo Humpin Slobo Babe / Lips /
- Eye 842 (single)
- 1994: Pay for Me (EP)
- 1995: We Care
- 1995: I'll Do Ya (EP)
- 1995: Hobo Humpin Slobo Babe (3 mixes)
- (single)
- 1995: Hobo Humpin Slobo Babe / You and
- Your Sister / Singer Star (single)
- * White Zombie
- 1992: Nightcrawlers: the KMFDM Remixes (EP)
- * Wilde, Kim
- 1981: Kim Wilde
- 1984: Teases & Dares
- 1981-1993: The Singles Collection (comp)
- * X
- 1988: Live at the Whiskey-a-Go-Go (double live)
- * X Marks the Pedwalk
- 1994: The Killing Had Begun
- * Xorcist
- 1991: Damned Souls
- 1993: Bitches (EP)
- * XTC UBL Card: 1044
- 1982: Waxworks
- 1983: Mummer
- 1984: The Big Express
- 1985: 25 O'Clock
- * Xymox
- 1985: Clan of Xymox
- UBL Card: 1295
- See also:
- isvpc146.isv.uit.no
- * Yamashirogumi, Geinoh
- 1990: Akira (soundtrack)
- * Yazoo
- 1982: Upstairs at Eric's
- 1982: The Other Side of Love (single)
- 1983: You and Me Both
- 1983: Nobody's Diary / State Farm
- (single)
- 1983: Situation (EP)
- UBL Card: 4309
- See also: rt66.com
-
- * Yello UBL Card: 1506
- 1980: Solid Pleasure See also: newton.space.net
- 1981: Stella See also: rt66.com
- 1983: You Gotta Say Yes to Another
- Excess
- 1987: One Second
- 1988: Flag
- * Yes
- 1972: Fragile
- 1975: Classic Yes
- 1980: Drama
- 1983: 90125
- UBL Card: 1038
-
---------------167E2781446B
-Content-Type: text/html; charset=us-ascii; name="album-list.html"
-Content-Transfer-Encoding: 7bit
-Content-Disposition: inline; filename="album-list.html"
-
-<BASE HREF="/tmp/album-list.html">
-
-<H3 ALIGN=CENTER>jwz's tunes<BR>Last modified: 06-Apr-96.</H3>
-
-
-<TITLE>jwz's tunes</TITLE>
-This is a list of all of the music I have on CD, tape, and vinyl
-(including all of the old, embarrasing stuff...) This page may look
-a little funny if you aren't using a browser that supports HTML
-tables, like
-<A HREF="http://home.netscape.com/comprod/mirror/index.html">Mozilla</A>.<P>
-
-<BLOCKQUOTE>
-``<I>Publishing CD lists and tape collections evokes images of
-lonely, pathetic men who talk about their cats incessantly.</I>''
--- Paul Phillips
-</BLOCKQUOTE>
-
-I used to have this set up so that clicking on any name would take
-you to the appropriate entry of the All Music Guide at
-<TT>gopher://allmusic.ferris.edu</TT>; but they have since moved their
-database from there to
-<A HREF="http://allmusic.com/cgi-bin/mserver/SID=0/$amgpages=amg+main"><TT>cdnow.com</TT></A>,
-and in the process, have obfuscated access to the database to such an extent
-that this is no longer possible. In order to get at the discographies, you
-need to weed your way through dozens of pages, and there seems to be no even
-semi-reliable way to pre-compute the URL that they will use. Arrgh!<P>
-
-<A HREF="http://www.cm.cf.ac.uk/Movies/welcome.html">The Internet Movie
-Database</A> has an excellent interface for this sort of thing; I really
-wish more people would emulate that system.<P>
-
-In this list, I've included links to various related web pages that I've
-come across; one very cool and well-organized database to which many of
-these links point is
-<A HREF="http://american.recordings.com/wwwofmusic/ubl/ubl.shtml">The
-Ultimate Band List</A>; check it out!<P>
-
-<P ALIGN=CENTER>
-<A HREF="http://home.netscape.com/people/jwz/">Jamie Zawinski</A>
-<A HREF="mailto:jwz@netscape.com"><CODE>&lt;jwz@netscape.com&gt;</CODE></A>
-<P>
-
-<HR size=4><UL>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Act</B>
-
- <BR><I>1988:</I> Laughter, Tears, and Rage
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+4637">4637</A>
- <BR><I>See also: </I><A HREF="http://rt66.com/ftp/usr2/lazlo/discographies/ztt">rt66.com</A>
- <BR><I>See also: </I><A HREF="http://hcl.chass.ncsu.edu/~phelpsgm/claudia.htm">hcl.chass.ncsu.edu</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Age of Chance</B>
-
- <BR><I>1987:</I> Kiss <I>(single)</I>
- <BR><I>1987:</I> Don't Get Mad, Get Even <I>(single)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Alien Sex Fiend</B>
-
- <BR><I>1983-1992:</I> Drive My Rocket <I>(comp)</I>
- <BR><I>1989:</I> Too Much Acid? <I>(live)</I>
- <BR><I>1990:</I> Curse
- <BR><I>1992:</I> Open Head Surgery
- <BR><I>1993:</I> Altered States of America <I>(live)</I>
- <BR><I>1995:</I> Inferno: The Odyssey Continues<SUP>tm</SUP> <I>(soundtrack)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+5291">5291</A>
- <BR><I>See also: </I><A HREF="http://cent1.lancs.ac.uk/~unslost/guide/music/asf.html">cent1.lancs.ac.uk</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Alio Die</B>
-
- <BR><I>1993:</I> Under a Holy Ritual
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1266">1266</A>
- <BR><I>See also: </I><A HREF="http://www.projekt.com/bands/index.html">www.projekt.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Alphaville</B>
-
- <BR><I>1984:</I> Forever Young
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+3056">3056</A>
- <BR><I>See also: </I><A HREF="http://www.escape.com/~dant/av/">www.escape.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Altered Images</B>
-
- <BR><I>1981:</I> Happy Birthday
- <BR><I>1983:</I> Bite
- <BR><I>1984:</I> Collected Images <I>(comp)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>An April March</B>
-
- <BR><I>1995:</I> Lessons in Vengance
- <BR><I>1995:</I> Instruments of Lust and Fury
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>And Also the Trees</B>
-
- <BR><I>1983-1992:</I> From Horizon to Horizon <I>(comp)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1867">1867</A>
- <BR><I>See also: </I><A HREF="http://www.ugcs.caltech.edu/~scottyt/AATT.html">www.ugcs.caltech.edu</A>
- <BR><I>See also: </I><A HREF="http://onyx.dartmouth.edu/~dupras/aatt/aatt.html">onyx.dartmouth.edu</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Anderson, Laurie</B>
-
- <BR><I>1982:</I> Big Science
- <BR><I>1983:</I> United States Live, parts 1-4 <I>(5 albums)</I>
- <BR><I>1984:</I> Mister Heartbreak
- <BR><I>1986:</I> Home of the Brave <I>(live soundtrack)</I>
- <BR><I>1995:</I> Bright Red
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1494">1494</A>
- <BR><I>See also: </I><A HREF="http://www.voyagerco.com/LA/VgerLa.html">www.voyagerco.com</A>
- <BR><I>See also: </I><A HREF="http://www.netpart.com/phil/laurie.html">www.netpart.com</A>
- <BR><I>See also: </I><A HREF="http://www.c3.lanl.gov:8077/cgi/jimmyd/quoter?home">www.c3.lanl.gov</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Ant, Adam</B>
-
- <BR><I>1980:</I> Kings of the Wild Frontier
- <BR><I>1981:</I> Prince Charming
- <BR><I>1982:</I> Friend or Foe
- <BR><I>1983:</I> Dirk Wears White Sox
- <BR><I>1985:</I> Viva Le Rock
- <BR><I>1979-1986:</I> Antics in the Forbidden Zone <I>(comp)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1205">1205</A>
- <BR><I>See also: </I><A HREF="http://www.uhs.uga.edu/Adam_Ant/Adam.html">www.uhs.uga.edu</A>
- <BR><I>See also: </I><A HREF="http://caprec.com/Ant/">caprec.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Anthrax</B>
-
- <BR><I>1991:</I> Attack of the Killer B's <I>(comp)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2710">2710</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Aphex Twin</B>
-
- <BR><I>1993:</I> On <I>(EP)</I>
- <BR><I>1994:</I> Analogue Bubblebath <I>(EP)</I>
- <BR><I>1995:</I> Ventolin <I>(EP)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+5279">5279</A>
- <BR><I>See also: </I><A HREF="http://hyperreal.com/music/artists/aphex_twin/afxeffect.html">hyperreal.com</A>
- <BR><I>See also: </I><A HREF="http://pathfinder.com/elektra/artists/aphex/aphex.html">pathfinder.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Arcadia</B>
-
- <BR><I>1985:</I> So Red the Rose
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1259">1259</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Armageddon Dildos</B>
-
- <BR><I>1995:</I> Lost
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2538">2538</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Ash, Daniel</B>
-
- <BR><I>1991:</I> Coming Down
- <BR><I>1992:</I> Foolish Thing Desire
- </TD><TD>
-<I>See also: </I><A HREF="http://isvpc146.isv.uit.no/html/group/danielashglenncampling.html#danielashglenncampling">isvpc146.isv.uit.no</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Archangel, Nathalie</B>
-
- <BR><I>1992:</I> Owl
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Art of Noise</B>
-
- <BR><I>1983:</I> Who's Afraid of the Art of Noise?
- <BR><I>1983:</I> The Art of Noise Have Closed Up
- <BR><I>1983:</I> Beatbox
- <BR><I>1983:</I> Daft
- <BR><I>1984:</I> Edited <I>(picture disc)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1918">1918</A>
- <BR><I>See also: </I><A HREF="http://rt66.com/ftp/usr2/lazlo/discographies/ztt">rt66.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Attrition</B>
-
- <BR><I>1985:</I> Smiling, at the Hypogonder Club <I>(comp)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+4232">4232</A>
- <BR><I>See also: </I><A HREF="http://www.projekt.com/bands/attrition.html">www.projekt.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>AUTECHRe</B>
-
- <BR><I>1994:</I> INCUNABULA
- <BR><I>1994:</I> BASSCAD,EP <I>(EP)</I>
- <BR><I>1994:</I> Amber
- <BR><I>1995:</I> Garbage
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>B52's</B>
-
- <BR><I>1979:</I> B52's
- <BR><I>1980:</I> Wild Planet
- <BR><I>1982:</I> Mesopotamia
- <BR><I>1983:</I> Whammy!
- <BR><I>1981:</I> Party Mix
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2268">2268</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Babes in Toyland</B>
-
- <BR><I>1989:</I> Spanking Machine
- <BR><I>1991:</I> To Mother
- <BR><I>1992:</I> Fontanelle
- <BR><I>1993:</I> Pain Killers
- <BR><I>1995:</I> Nemesisters
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+3190">3190</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Battery</B>
-
- <BR><I>1992:</I> Meat Market <I>(EP)</I>
- <BR><I>1993:</I> Mutate
- <BR><I>1994:</I> Lillith 3.2 <I>(EP)</I>
- <BR><I>1995:</I> nv
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Bauhaus</B>
-
- <BR><I>1979:</I> Bela Lugosi's Dead <I>(EP)</I>
- <BR><I>1981:</I> In the Flat Field
- <BR><I>1981:</I> Mask
- <BR><I>1981:</I> Press the Eject and Give Me the Tape <I>(live)</I>
- <BR><I>1983:</I> Burning from the Inside
- <BR><I>1979-1984:</I> 1979-1984 <I>(comp)</I>
- <BR><I>1985:</I> The Sky's Gone Out
- <BR><I>1984:</I> The Last Temptation <I>(live boot)</I>
- <BR><I>1984:</I> Rest In Peace: The Final Concert <I>(double live)</I>
- <BR><I>1996:</I> The Passion of Covers: A Tribute <I>(various)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1235">1235</A>
- <BR><I>See also: </I><A HREF="http://gothic.acs.csulb.edu:8080/~vamp/Gothic/Text/bauhaus-discog.html">gothic.acs.csulb.edu</A>
- <BR><I>See also: </I><A HREF="http://isvpc146.isv.uit.no/html/group/bauhaus.html#bauhaus">isvpc146.isv.uit.no</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Belly</B>
-
- <BR><I>1993:</I> Star
- <BR><I>1993:</I> Moon <I>(EP)</I>
- <BR><I>1995:</I> Baby Silvertooth <I>(EP)</I>
- <BR><I>1995:</I> King
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1360">1360</A>
- <BR><I>See also: </I><A HREF="http://isvpc146.isv.uit.no/html/group/belly.html#belly">isvpc146.isv.uit.no</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Berlin</B>
-
- <BR><I>1981:</I> Love Life
- <BR><I>1981:</I> Dancing in Berlin / Lost in the Crowd <I>(single)</I>
- <BR><I>1982:</I> Pleasure Victim
- <BR><I>1986:</I> Count 3 and Pray
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+4156">4156</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Big Black</B>
-
- <BR><I>1983:</I> The Hammer Party
- <BR><I>1987:</I> Songs About Fucking
- <BR><I>1992:</I> The Rich Man's Eight-Track Tape <I>(comp)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2410">2410</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Big Hat</B>
-
- <BR><I>1993:</I> Selena at my Window
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1217">1217</A>
- <BR><I>See also: </I><A HREF="http://www.cec.wustl.edu/~sad2/music/big_hat/">www.cec.wustl.edu</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Bigod 20</B>
-
- <BR><I>1990:</I> The Bog <I>(EP)</I>
- <BR><I>1991:</I> Carpe Diem <I>(EP)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Bikini Kill</B>
-
- <BR><I>1991-1992:</I> The C.D. Version of the First Two Records
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+4444">4444</A>
- <BR><I>See also: </I><A HREF="http://www.columbia.edu/~rli3/music_html/bikini_kill/bikini.html">www.columbia.edu</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Billy Nayer Show, The</B>
-
- <BR><I>1994:</I> The Ketchup and Mustard Man
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Billy and the Boingers</B>
-
- <BR><I>1987:</I> U Stink but I Love You <I>(flexydisk)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Birdsongs of the Messozoic</B>
-
- <BR><I>1980-1987:</I> The Fossil Record
- <BR><I>1983:</I> Sonic Geology
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Birmingham 6</B>
-
- <BR><I>1995:</I> Police State
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+4348">4348</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Black Tape for a Blue Girl</B>
-
- <BR><I>1986:</I> The Rope
- <BR><I>1987:</I> Mesmerized by the Sirens
- <BR><I>1989:</I> Ashes in the Brittle Air
- <BR><I>1993:</I> This Lush Garden Within
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1202">1202</A>
- <BR><I>See also: </I><A HREF="http://www.projekt.com/bands/btfabg.html">www.projekt.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Bleeding Stone, The</B>
-
- <BR><I>1994:</I> Silent Insanity <I>(EP)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Blondie</B>
-
- <BR><I>1980:</I> Autoamerican
- <BR><I>1983:</I> Best of Blondie
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2070">2070</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Blotto</B>
-
- <BR><I>1994:</I> Collected Works
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Body Count</B>
-
- <BR><I>1992:</I> Body Count
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1277">1277</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Bowie, David</B>
-
- <BR><I>1995:</I> Outside
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1098">1098</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Bow Wow Wow</B>
-
- <BR><I>1982:</I> See Jungle
- <BR><I>1981-1982:</I> I Want Candy <I>(comp)</I>
- <BR><I>1983:</I> When the Going Gets Tough
- <BR><I>1981-1983:</I> Girl Bites Dog <I>(comp)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2301">2301</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Breeders, The</B>
-
- <BR><I>1993:</I> Last Splash
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1242">1242</A>
- <BR><I>See also: </I><A HREF="http://isvpc146.isv.uit.no/html/group/breeders.html#breeders">isvpc146.isv.uit.no</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Br&uuml;cken, Claudia</B>
-
- <BR><I>1991:</I> Love and a Million Other Things
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+4636">4636</A>
- <BR><I>See also: </I><A HREF="http://rt66.com/ftp/usr2/lazlo/discographies/ztt">rt66.com</A>
- <BR><I>See also: </I><A HREF="http://hcl.chass.ncsu.edu/~phelpsgm/claudia.htm">hcl.chass.ncsu.edu</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Buggles, The</B>
-
- <BR><I>1979:</I> The Age of Plastic
- <BR><I>1981:</I> Adventures in Modern Recording
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Bush, Kate</B>
-
- <BR><I>1977:</I> The Kick Inside
- <BR><I>1980:</I> Never For Ever
- <BR><I>1983:</I> The Dreaming
- <BR><I>1985:</I> Hounds of Love
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1032">1032</A>
- <BR><I>See also: </I><A HREF="http://actor.cs.vt.edu/~wentz/index.html">actor.cs.vt.edu</A>
- <BR><I>See also: </I><A HREF="http://www.jrc.flinders.edu.au/ExpIV/">www.jrc.flinders.edu.au</A>
- <BR><I>See also: </I><A HREF="http://holly.city.unisa.edu.au/Lionheart.html">holly.city.unisa.edu.au</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Buzzcocks</B>
-
- <BR><I>1976-1979:</I> Operators Manual
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1351">1351</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Cabaret Voltaire</B>
-
- <BR><I>1974-1976:</I> 1974-1976 <I>(comp)</I>
- <BR><I>1978-1983:</I> The Golden Moments of CV <I>(comp)</I>
- <BR><I>1978:</I> Nag Nag Nag <I>(EP)</I>
- <BR><I>1979:</I> Mix-Up <I>(EP)</I>
- <BR><I>1980:</I> Red Mecca
- <BR><I>1981:</I> The Voice of America
- <BR><I>1981:</I> Johnny Yesno <I>(soundtrack)</I>
- <BR><I>1982:</I> 2X45
- <BR><I>1982:</I> Eight Crepescule Tracks
- <BR><I>1983:</I> The Crackdown
- <BR><I>1984:</I> Micro-Phonies
- <BR><I>1985:</I> I Want You <I>(single)</I>
- <BR><I>1985:</I> Drinking Gasoline
- <BR><I>1985:</I> The Arm of the Lord
- <BR><I>1985:</I> The Convenant, the Sword, and the Arm of the Lord
- <BR><I>1986:</I> The Drain Train
- <BR><I>1987:</I> Code
- <BR><I>1990:</I> Listen Up <I>(double comp)</I>
- <BR><I>1991:</I> Body and Soul
- <BR><I>1991:</I> Colors
- <BR><I>1992:</I> Plasticity
- <BR><I>1992:</I> Western Reworks
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2307">2307</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Cave, Nick</B>
-
- <BR><I>1984:</I> From Her to Eternity
- <BR><I>1988:</I> Tender Prey
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1273">1273</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Chemlab</B>
-
- <BR><I>1993:</I> Burnout at the Hydrogen Bar
- <BR><I>1994:</I> Magnetic Field Remixes <I>(EP)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+3774">3774</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Children on Stun</B>
-
- <BR><I>1994:</I> Tourniquets of Love's Desire
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Christian Death</B>
-
- <BR><I>1982:</I> Only Theatre of Pain
- <BR><I>1988:</I> Sex and Drugs and Jesus Christ
- <BR><I>1989:</I> All the Love All the Hate part Two: All the Hate
- <BR><I>1994:</I> Sexy Death God
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1218">1218</A>
- <BR><I>See also: </I><A HREF="http://christian-death.acc.brad.ac.uk/">christian-death.acc.brad.ac.uk</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Chris and Cosey</B>
-
- <BR><I>1989:</I> Trust
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Ciccone Youth</B>
-
- <BR><I>1988:</I> The Whitey Album
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1087">1087</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>ClockDVA</B>
-
- <BR><I>1981:</I> Thirst
- <BR><I>1988:</I> The Hacker/The Act
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+3999">3999</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Cocteau Twins</B>
-
- <BR><I>1982:</I> Garlands
- <BR><I>1983:</I> Head over Heels
- <BR><I>1984:</I> The Spangle Maker <I>(EP)</I>
- <BR><I>1984:</I> Treasure
- <BR><I>1985:</I> Aikea-Guinea <I>(EP)</I>
- <BR><I>1985:</I> Echoes in a Shallow Bay
- <BR><I>1985:</I> Tiny Dynamine <I>(EP)</I>
- <BR><I>1982-1985:</I> The Pink Opaque
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1074">1074</A>
- <BR><I>See also: </I><A HREF="http://garnet.berkeley.edu:8080/cocteau.html">garnet.berkeley.edu</A>
- <BR><I>See also: </I><A HREF="http://isvpc146.isv.uit.no/html/group/cocteautwins.html">isvpc146.isv.uit.no</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Coil</B>
-
- <BR><I>1986?:</I> The Angelic Conversation <I>(soundtrack)</I>
- <BR><I>1988:</I> Gold is the Metal
- <BR><I>1990:</I> The Unreleased Themes for Hellraiser <I>(EP)</I>
- <BR><I>1990:</I> Panic / Tainted Love <I>(single)</I>
- <BR><I>1991:</I> Out of Light Cometh Darkness
- <BR><I>1992:</I> Snow <I>(EP)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1388">1388</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Concrete Blonde</B>
-
- <BR><I>1986:</I> Concrete Blonde
- <BR><I>1989:</I> Free
- <BR><I>1990:</I> Bloodletting
- <BR><I>1993:</I> Walking in London <I>(single)</I>
- <BR><I>1993:</I> Mexican Moon
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1396">1396</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Cop Shoot Cop</B>
-
- <BR><I>1993:</I> Ask Questions Later
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Course of Empire</B>
-
- <BR><I>1990:</I> Course of Empire
- <BR><I>1993:</I> Infested! <I>(EP)</I>
- <BR><I>1994:</I> Initiation
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2889">2889</A>
- <BR><I>See also: </I><A HREF="http://homepage.seas.upenn.edu/~leer/coe/">homepage.seas.upenn.edu</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Cranes</B>
-
- <BR><I>1990:</I> Inescapable <I>(EP)</I>
- <BR><I>1991:</I> Wings of Joy
- <BR><I>1992:</I> Self-Non-Self
- <BR><I>1993:</I> Forever
- <BR><I>1993:</I> Jewel <I>(EP)</I>
- <BR><I>1994:</I> Loved
- <BR><I>1994:</I> Shining Road <I>(limited edition double EP)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2400">2400</A>
- <BR><I>See also: </I><A HREF="http://busop.cit.wayne.edu/cranes/www/home.htm">busop.cit.wayne.edu</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Crash Worship</B>
-
- <BR><I>1992:</I> ADRV
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1901">1901</A>
- <BR><I>See also: </I><A HREF="http://www.meer.net/~charnel/crashwor/crashpg.htm">www.meer.net</A>
- <BR><I>See also: </I><A HREF="http://www.tyrell.net/~coventry/crash1.html">www.tyrell.net</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Creatures, The</B>
-
- <BR><I>1983:</I> Feast
- <BR><I>1990:</I> Boomerang
- <BR><I>1990:</I> Fury Eyes <I>(EP)</I>
- <BR><I>1990:</I> Standing There <I>(single)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1216">1216</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Cure, The</B>
-
- <BR><I>1980:</I> Boys Don't Cry
- <BR><I>1980:</I> Seventeen Seconds
- <BR><I>1981:</I> Faith
- <BR><I>1982:</I> Pornography
- <BR><I>1982:</I> The Walk
- <BR><I>1982?:</I> Looking for a Forest <I>(live boot)</I>
- <BR><I>1983:</I> Japanese Whispers
- <BR><I>1983:</I> Lovecats <I>(EP)</I>
- <BR><I>1984:</I> Concert <I>(live)</I>
- <BR><I>1984:</I> The Top
- <BR><I>1985:</I> The Head on the Door
- <BR><I>1987:</I> Staring at the Sea <I>(comp)</I>
- <BR><I>1988:</I> Kiss Me Kiss Me Kiss Me
- <BR><I>1989:</I> Disintegration
- <BR><I>1989:</I> Fascination Street <I>(single)</I>
- <BR><I>1990:</I> Never Enough <I>(single)</I>
- <BR><I>1995?:</I> Give Me the Cure: 18 DC Bands <I>(various)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1159">1159</A>
- <BR><I>See also: </I><A HREF="http://www.acpub.duke.edu/~spawn/album.html">www.acpub.duke.edu</A>
- <BR><I>See also: </I><A HREF="http://pathfinder.com/elektra/artists/cure/cure.html">pathfinder.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Current 93</B>
-
- <BR><I>1986-1991:</I> Island
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+3465">3465</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Curve</B>
-
- <BR><I>1991:</I> Frozen <I>(EP)</I>
- <BR><I>1991:</I> Cherry <I>(EP)</I>
- <BR><I>1992:</I> Doppelganger
- <BR><I>1993:</I> Cuckoo
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1355">1355</A>
- <BR><I>See also: </I><A HREF="http://quark.stack.urc.tue.nl/~conrad/">quark.stack.urc.tue.nl</A>
- <BR><I>See also: </I><A HREF="http://blade.stack.urc.tue.nl/~blurp/">blade.stack.urc.tue.nl</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Cyber-Tec</B>
-
- <BR><I>1995:</I> Cyber-Tec
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Daisy Chainsaw</B>
-
- <BR><I>1992:</I> Hope All Your Dreams Come True <I>(single)</I>
- <BR><I>1992:</I> Love Sick Pleasure <I>(EP)</I>
- <BR><I>1992:</I> Eleventeen
- <BR><I>1994:</I> For They Know Not What They Do
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Dance or Die</B>
-
- <BR><I>1993:</I> Psychoburbia
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Danse Society, The</B>
-
- <BR><I>1984:</I> Heaven is Waiting
- <BR><I>1986:</I> Looking Through
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Das Ich</B>
-
- <BR><I>1990:</I> Satanische Verse
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2337">2337</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Dax, Danielle</B>
-
- <BR><I>1986-1988:</I> Dark Adapted Eye <I>(comp +5)</I>
- <BR><I>1988:</I> Whistling for his Love <I>(single)</I>
- <BR><I>1988:</I> Cat House <I>(single)</I>
- <BR><I>1990:</I> Blast the Human Flower
- <BR><I>1992:</I> Pop-Eyes
- <BR><I>1995:</I> Timber Tongue <I>(EP)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1746">1746</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Death in June</B>
-
- <BR><I>1992:</I> But, What Ends When the Symbols Shatter?
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Definition FX</B>
-
- <BR><I>1993:</I> Something Inside <I>(single)</I>
- <BR><I>1993:</I> Light Speed Collision
- </TD><TD>
-<I>See also: </I><A HREF="http://www.geko.com.au/vrx/dfx/html/def-fx.html">www.geko.com.au</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Depeche Mode</B>
-
- <BR><I>1981:</I> Speak &amp; Spell
- <BR><I>1981:</I> Just Can't Get Enough / Any Second Now <I>(single)</I>
- <BR><I>1982:</I> A Broken Frame
- <BR><I>1982:</I> live singles <I>(comp)</I>
- <BR><I>1983:</I> Construction Time Again
- <BR><I>1984:</I> People Are People <I>(comp +2)</I>
- <BR><I>1984:</I> Some Great Reward
- <BR><I>1985:</I> Catching Up With Depeche Mode <I>(comp +4)</I>
- <BR><I>1985:</I> It's Called a Heart / Fly on the Windscreen <I>(single)</I>
- <BR><I>1986:</I> Black Celebration
- <BR><I>1986:</I> Stripped <I>(single)</I>
- <BR><I>1986:</I> A Question of Lust <I>(single)</I>
- <BR><I>1989:</I> 101 <I>(double live)</I>
- <BR><I>1987:</I> Music for the Masses
- <BR><I>1987:</I> Never Let Me Down <I>(single)</I>
- <BR><I>1990:</I> Personal Jesus <I>(single)</I>
- <BR><I>199?:</I> I Sometimes Wish I Was Famous: A Swedish Tribute <I>(various)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1041">1041</A>
- <BR><I>See also: </I><A HREF="http://www.cis.ufl.edu/~sag/dm/">www.cis.ufl.edu</A>
- <BR><I>See also: </I><A HREF="http://www.coma.sbg.ac.at:80/~salchegg/DM/">www.coma.sbg.ac.at</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Dessau</B>
-
- <BR><I>1995:</I> Dessau
- <BR><I>1995:</I> Details Sketchy
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Devo</B>
-
- <BR><I>1978:</I> Q: Are We Not Men? A: We Are DEVO!
- <BR><I>1979:</I> Freedom of Choice
- <BR><I>1977-1990:</I> Greatest Hits
- <BR><I>1978-1990:</I> Greatest Misses
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1088">1088</A>
- <BR><I>See also: </I><A HREF="http://hartke.lib.ohio-state.edu:70/">hartke.lib.ohio-state.edu</A>
- <BR><I>See also: </I><A HREF="http://unsane.enc.org/devo.htm">unsane.enc.org</A>
- <BR><I>See also: </I><A HREF="http://rt66.com/ftp/usr2/lazlo/discographies/devo">rt66.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Die Krupps</B>
-
- <BR><I>1995:</I> Rings of Steel
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Die Monster Die</B>
-
- <BR><I>1994:</I> Withdrawl Method
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Die Warzau</B>
-
- <BR><I>1991:</I> Big Electric Metal Bass Face
- <BR><I>1994:</I> Engine
- <BR><I>1994:</I> allgoodgirls <I>(EP)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Disposable Heroes of Hiphoprisy</B>
-
- <BR><I>1992:</I> Hypocrisy is the Greatest Luxury
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Dolby, Thomas</B>
-
- <BR><I>1983:</I> The Golden Age of Wireless
- <BR><I>1983:</I> The Golden Age of Wireless <I>(2nd release: 2 new)</I>
- <BR><I>1984:</I> The Flat Earth
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1961">1961</A>
- <BR><I>See also: </I><A HREF="http://kspace.com/KM/spot.sys/Dolby/pages/home.html">kspace.com</A>
- <BR><I>See also: </I><A HREF="http://rt66.com/ftp/usr2/lazlo/discographies/dolby">rt66.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Doubting Thomas</B>
-
- <BR><I>1991:</I> Father Don't Cry <I>(EP)</I>
- <BR><I>1991:</I> The Infidel
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1166">1166</A>
- <BR><I>See also: </I><A HREF="http://www.eecs.nwu.edu/~smishra/Industrial/skinny-puppy">www.eecs.nwu.edu</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Duran Duran</B>
-
- <BR><I>1981:</I> Duran Duran
- <BR><I>1982:</I> Carnival <I>(EP)</I>
- <BR><I>1982:</I> live <I>(live boot)</I>
- <BR><I>1982:</I> Rio
- <BR><I>1983:</I> Union of the Snake / Secret Oktober <I>(single)</I>
- <BR><I>1983:</I> The Wild Boys / Cracks in the Pavement <I>(single)</I>
- <BR><I>1983:</I> Seven and the Ragged Tiger
- <BR><I>1987:</I> Notorious
- <BR><I>1981-1988:</I> Decade <I>(comp)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1259">1259</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Durutti Column</B>
-
- <BR><I>1988:</I> The Guitar and Other Machines
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+4853">4853</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Ebn Ozn</B>
-
- <BR><I>1984:</I> Feeling Cavalier
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Elastica</B>
-
- <BR><I>1995:</I> Elastica
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Elastic Purejoy, The</B>
-
- <BR><I>1994:</I> The Elastic Purejoy
- </TD><TD>
-<I>See also: </I><A HREF="http://http2.brunel.ac.uk:8080/~ee92pmh/shrkindx.html">http2.brunel.ac.uk</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Electric Hellfire Club, The</B>
-
- <BR><I>1993:</I> Burn, Baby, Burn
- <BR><I>1995:</I> Kiss the Goat
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Elfman, Danny</B>
-
- <BR><I>1984:</I> So-Lo
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1089">1089</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Emergency Broadcast Network</B>
-
- <BR><I>1995:</I> Telecommunication Breakdown
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Engorged with Blood</B>
-
- <BR><I>1993:</I> Engorged with Blood <I>(EP)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Eno, Brian</B>
-
- <BR><I>1977:</I> Before and After Science
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1064">1064</A>
- <BR><I>See also: </I><A HREF="http://www.nwu.edu/music/eno/">www.nwu.edu</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Eon</B>
-
- <BR><I>1991:</I> Fear: the Mindkiller <I>(EP)</I>
- <BR><I>1992:</I> Basket Case <I>(EP)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Erasure</B>
-
- <BR><I>1984-1986:</I> various singles
- <BR><I>1986:</I> Wonderland
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1029">1029</A>
- <BR><I>See also: </I><A HREF="http://www.cec.wustl.edu/~ccons/erasure/">www.cec.wustl.edu</A>
- <BR><I>See also: </I><A HREF="http://rt66.com/ftp/usr2/lazlo/discographies/erasure">rt66.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Estep, Maggie</B>
-
- <BR><I>1994:</I> No More Mister Nice Girl
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Ethyl Meatplow</B>
-
- <BR><I>1993:</I> Happy Days Sweetheart
- <BR><I>1993:</I> Devil's Johnson <I>(single)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+5232">5232</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Eurythmics</B>
-
- <BR><I>1981:</I> In the Garden
- <BR><I>1982:</I> Love is a Stranger <I>(EP)</I>
- <BR><I>1982:</I> This is the House <I>(live EP)</I>
- <BR><I>1983:</I> Sweet Dreams
- <BR><I>1983:</I> Touch
- <BR><I>1984:</I> 1984 (For the Love of Big Brother) <I>(soundtrack)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Executive Slacks</B>
-
- <BR><I>1986:</I> Fire and Ice
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Faith and the Muse</B>
-
- <BR><I>1994:</I> Elyria
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Fixx, The</B>
-
- <BR><I>1982:</I> Shuttered Room
- <BR><I>1983:</I> Reach the Beach
- <BR><I>1984:</I> Phantoms
- <BR><I>1986:</I> Walkabout
- <BR><I>1987:</I> React <I>(live)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+4603">4603</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Foetus</B>
-
- <BR><I>19??:</I> Rife
- <BR><I>1995:</I> Gash
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2750">2750</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Fortran 5</B>
-
- <BR><I>1991:</I> Blues
- <BR><I>1993:</I> Bad Head Park
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+3469">3469</A>
- <BR><I>See also: </I><A HREF="http://rt66.com/ftp/usr2/lazlo/discographies/fortran.5">rt66.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>45 Grave</B>
-
- <BR><I>1993:</I> Debasement Tapes
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Frankie goes to Hollywood</B>
-
- <BR><I>1984:</I> Welcome to the Pleasure Dome
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+3222">3222</A>
- <BR><I>See also: </I><A HREF="http://rt66.com/ftp/usr2/lazlo/discographies/ztt">rt66.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Freur</B>
-
- <BR><I>1983:</I> Doot Doot
- </TD><TD>
-<I>See also: </I><A HREF="http://rt66.com/ftp/usr2/lazlo/discographies/freur">rt66.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Front 242</B>
-
- <BR><I>1979:</I> Masterhit <I>(EP)</I>
- <BR><I>1983:</I> Geography
- <BR><I>1987:</I> Official Version
- <BR><I>1985:</I> No Comment
- <BR><I>1982:</I> Two In One <I>(EP)</I>
- <BR><I>1982-1985:</I> Backcatalogue <I>(comp)</I>
- <BR><I>1989:</I> Headhunter <I>(EP)</I>
- <BR><I>1989:</I> Front by Front
- <BR><I>1989:</I> Never Stop <I>(EP)</I>
- <BR><I>1991:</I> Tyrrany For You
- <BR><I>1991:</I> Tragedy For You <I>(EP)</I>
- <BR><I>1991:</I> Rhythm of Time <I>(EP)</I>
- <BR><I>1993:</I> Religion <I>(EP)</I>
- <BR><I>1993:</I> Animal <I>(single)</I>
- <BR><I>1993:</I> 06:21:03:11 Up Evil
- <BR><I>1993:</I> 05:22:09:12 Off
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1059">1059</A>
- <BR><I>See also: </I><A HREF="http://www.ifi.uio.no/~terjesa/front242/main.html">www.ifi.uio.no</A>
- <BR><I>See also: </I><A HREF="http://www.eecs.nwu.edu/~smishra/Industrial/f242/index.html">www.eecs.nwu.edu</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Front Line Assembly</B>
-
- <BR><I>1988:</I> Convergence
- <BR><I>1989:</I> Digital Tension Dementia <I>(EP)</I>
- <BR><I>1990:</I> Gashed Senses and Crossfire
- <BR><I>1991:</I> Caustic Grip
- <BR><I>1992:</I> Tactical Neural Implant
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1161">1161</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Fugazi</B>
-
- <BR><I>1989:</I> 13 Songs
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2053">2053</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Fun Boy Three</B>
-
- <BR><I>1982:</I> It Ain't What You Do / Just Do It / Funrama Theme <I>(single)</I>
- <BR><I>1981-1983:</I> The Best of Fun Boy Three <I>(comp)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Fuzzbox</B>
-
- <BR><I>1986:</I> We've got a Fuzzbox and We're Gonna Use It!!
- <BR><I>1986:</I> Love is the Slug <I>(single)</I>
- <BR><I>1986:</I> Rules and Regulations <I>(single)</I>
- </TD><TD>
-<I>See also: </I><A HREF="http://world.std.com/~fuzzbox/fbpage.html">world.std.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Gabriel, Peter</B>
-
- <BR><I>1977:</I> Peter Gabriel I
- <BR><I>1978:</I> Peter Gabriel II
- <BR><I>1980:</I> Peter Gabriel III
- <BR><I>1982:</I> Security
- <BR><I>1983:</I> Peter Gabriel Plays Live <I>(double live)</I>
- <BR><I>1985:</I> Birdy <I>(soundtrack)</I>
- <BR><I>1986:</I> So
- <BR><I>1986:</I> Live at the Civic Arena <I>(live boot)</I>
- <BR><I>1989:</I> Passion <I>(soundtrack)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1016">1016</A>
- <BR><I>See also: </I><A HREF="http://www.nwu.edu/music/gabriel/">www.nwu.edu</A>
- <BR><I>See also: </I><A HREF="http://www.cs.clemson.edu/~junderw/pg.html">www.cs.clemson.edu</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Garbage</B>
-
- <BR><I>1995:</I> Garbage
- </TD><TD>
-<I>See also: </I><A HREF="http://hamp.hampshire.edu/~temS95/garbage.html">hamp.hampshire.edu</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Game Theory</B>
-
- <BR><I>1987:</I> Lolita Nation
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Gang of 4</B>
-
- <BR><I>1979:</I> Entertainment
- <BR><I>1979:</I> Peel Sessions <I>(live)</I>
- <BR><I>1981:</I> Solid Gold
- <BR><I>1981:</I> Another Day / Another Dollar
- <BR><I>1982:</I> I Love a Man In a Uniform <I>(single)</I>
- <BR><I>1982:</I> Songs of the Free
- <BR><I>1983:</I> Is It Love <I>(single)</I>
- <BR><I>1983:</I> Hard
- <BR><I>1983:</I> At the Palace <I>(live)</I>
- <BR><I>1979-1983:</I> A Brief History of the Twentieth Century <I>(comp)</I>
- <BR><I>1990:</I> To Hell With Poverty <I>(single)</I>
- <BR><I>1990:</I> Mall
- <BR><I>1990:</I> Money Talks <I>(single)</I>
- <BR><I>1995:</I> Tatoo <I>(single)</I>
- <BR><I>1995:</I> Shrinkwrapped
- </TD><TD>
-<I>See also: </I><A HREF="http://http2.brunel.ac.uk:8080/~ee92pmh/shrkindx.html">http2.brunel.ac.uk</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Glove, The</B>
-
- <BR><I>1982:</I> Blue Sunshine
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1159">1159</A>
- <BR><I>See also: </I><A HREF="http://www.dcs.gla.ac.uk/~lovelm/GLOVE.html">www.dcs.gla.ac.uk</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>God is my Copilot</B>
-
- <BR><I>1993:</I> Speed Yr Trip
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Gracious Shades</B>
-
- <BR><I>1995:</I> Aberkash
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Grind</B>
-
- <BR><I>1995:</I> Kittymuzzle
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Grotus</B>
-
- <BR><I>1993:</I> Slow Motion Apocalypse
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+5482">5482</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Pizzicato Five</B>
-
- <BR><I>1995:</I> The Sound of Music
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>PJ Harvey</B>
-
- <BR><I>1992:</I> Dry
- <BR><I>1993:</I> Rid of Me
- <BR><I>1993:</I> 4-Track Demos
- <BR><I>1995:</I> Down by the Water <I>(single)</I>
- <BR><I>1995:</I> To Bring You My Love
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1221">1221</A>
- <BR><I>See also: </I><A HREF="http://www.louisville.edu/public/jadour01/pjh/">www.louisville.edu</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Psychick Warriors ov Gaia</B>
-
- <BR><I>1992:</I> Ov Biospheres and Sacred Groves
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Hagen, Nina</B>
-
- <BR><I>1985:</I> In Ekstasy
- <BR><I>1978-1982:</I> nunsexmonkrock / Nina Hagen Band
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Hate Dept.</B>
-
- <BR><I>1994:</I> Meat Your Maker
- <BR><I>1995:</I> Mainline <I>(EP)</I>
- </TD><TD>
-<I>See also: </I><A HREF="http://www.iuma.com/IUMA-2.0/ftp/volume5/Hate_Dept/">www.iuma.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Haysi Fantayzee</B>
-
- <BR><I>1982:</I> Shiny Shiny remix <I>(single)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Heaven 17</B>
-
- <BR><I>1981:</I> Penthouse and Pavement
- <BR><I>1982:</I> Heaven 17
- <BR><I>1983:</I> The Luxury Gap
- <BR><I>1984:</I> How Men Are
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Hope, Peter and Kirk, Richard</B>
-
- <BR><I>1988:</I> Hoodoo Talk
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2307">2307</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Kershaw, Nik</B>
-
- <BR><I>1983:</I> Human Racing
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Kirk, Richard</B>
-
- <BR><I>1993:</I> Virtual State
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2307">2307</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Human League</B>
-
- <BR><I>1979:</I> Reproduction
- <BR><I>1980:</I> Travelogue
- <BR><I>1981:</I> Dare
- <BR><I>1983:</I> Fascination
- <BR><I>1984:</I> Hysteria
- <BR><I>1995:</I> Octopus
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+4631">4631</A>
- <BR><I>See also: </I><A HREF="http://pathfinder.com/elektra/artists/humanleague/human.html">pathfinder.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Hunters and Collectors</B>
-
- <BR><I>1987:</I> Human Frailty
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+4553">4553</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Ice T</B>
-
- <BR><I>1991:</I> New Jack Hustler <I>(EP)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2342">2342</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>In the Nursery</B>
-
- <BR><I>19??:</I> L'Esprit
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>INXS</B>
-
- <BR><I>1982:</I> Shabooh Shoobah
- <BR><I>1984:</I> The Swing
- <BR><I>1985:</I> Listen Like Thieves
- <BR><I>1988:</I> Kick
- <BR><I>1990:</I> X
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1284">1284</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>J., David</B>
-
- <BR><I>1983-1986:</I> On Glass <I>(comp)</I>
- <BR><I>1985:</I> Crocodile Tears and the Velvet Cosh
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1215">1215</A>
- <BR><I>See also: </I><A HREF="http://gothic.acs.csulb.edu:8080/~vamp/Gothic/Text/bauhaus-discog.html">gothic.acs.csulb.edu</A>
- <BR><I>See also: </I><A HREF="http://isvpc146.isv.uit.no/html/person/d.html#davidjay">isvpc146.isv.uit.no</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Jesus and Mary Chain, The</B>
-
- <BR><I>1992:</I> Reverence <I>(EP)</I>
- <BR><I>1992:</I> Honey's Dead
- <BR><I>1995:</I> Hate Rock and Roll <I>(comp)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1228">1228</A>
- <BR><I>See also: </I><A HREF="http://american.recordings.com/American_Artists/Jesus_And_Mary_Chain/jamc_home.html">american.recordings.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Jones, Grace</B>
-
- <BR><I>1993:</I> Sex Drive <I>(single)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Jones, Howard</B>
-
- <BR><I>1983:</I> Humans' Lib
- <BR><I>1985:</I> Dream Into Action
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Joy Division</B>
-
- <BR><I>1977-1978:</I> Warsaw <I>(comp)</I>
- <BR><I>1979:</I> Unknown Pleasures
- <BR><I>1980:</I> Closer
- <BR><I>1980:</I> Transmission / Novelty <I>(single)</I>
- <BR><I>1980:</I> Still
- <BR><I>1977-1980:</I> Substance <I>(comp)</I>
- <BR><I>1995:</I> Ceremonial: A Tribute <I>(various)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1214">1214</A>
- <BR><I>See also: </I><A HREF="http://www.fys.uio.no/~bor/joydiv.html">www.fys.uio.no</A>
- <BR><I>See also: </I><A HREF="http://csclub.uwaterloo.ca/u/sfwhite/joyd.html">csclub.uwaterloo.ca</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>King Crimson</B>
-
- <BR><I>1969:</I> In the Court of the Crimson King
- <BR><I>1973:</I> Larks' Tongues in Aspic
- <BR><I>1974:</I> Starless and Bible Black
- <BR><I>1981:</I> Dicipline
- <BR><I>1982:</I> Beat
- <BR><I>1984:</I> Three of a Perfect Pair
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1323">1323</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>KMFDM</B>
-
- <BR><I>1993:</I> Angst
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1452">1452</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Kraftwerk</B>
-
- <BR><I>1977:</I> Trans-Europe Express <I>(EP)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1027">1027</A>
- <BR><I>See also: </I><A HREF="http://wwwtdb.cs.umu.se/~dvlawm/kraftwerk.html">wwwtdb.cs.umu.se</A>
- <BR><I>See also: </I><A HREF="http://rt66.com/ftp/usr2/lazlo/discographies/kraftwerk">rt66.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>L7</B>
-
- <BR><I>1988:</I> L7
- <BR><I>1990:</I> Smell the Magic
- <BR><I>1992:</I> Bricks are Heavy
- <BR><I>1994:</I> Hungry for Stink
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1998">1998</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Le&ae;ther Strip</B>
-
- <BR><I>1995:</I> Legacy of Hate and Lust
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Lemon Kittens</B>
-
- <BR><I>1978-1980:</I> We Buy a Hammer for Daddy
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1746">1746</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Letters to Cleo</B>
-
- <BR><I>1994:</I> Aurora Gory Alice
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+3000">3000</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>LFO</B>
-
- <BR><I>1991:</I> Frequencies
- <BR><I>1996:</I> Advance
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>London After Midnight</B>
-
- <BR><I>1989:</I> Selected Scenes from the End of the World
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Lords of Acid</B>
-
- <BR><I>1991:</I> Rough Sex <I>(single)</I>
- <BR><I>1993:</I> Voodoo U
- <BR><I>1994:</I> The Crablouse: Variations on a Species <I>(single)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2356">2356</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Lords of the New Church, The</B>
-
- <BR><I>1983:</I> Is Nothing Sacred?
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Love and Rockets</B>
-
- <BR><I>1985:</I> Ball of Confusion / Inside the Outside <I>(single)</I>
- <BR><I>1985:</I> Seventh Dream of Teenage Heaven
- <BR><I>1986:</I> Express
- <BR><I>1986:</I> Kundalini Express / Lucifer Sam / Holiday on the Moon <I>(single)</I>
- <BR><I>1987:</I> Earth, Sun, Moon
- <BR><I>1989:</I> No Big Deal <I>(single)</I>
- <BR><I>1989:</I> Motorcycle <I>(single)</I>
- <BR><I>1989:</I> Love and Rockets
- <BR><I>1994:</I> This Heaven <I>(EP)</I>
- <BR><I>1994:</I> Body and Soul <I>(EP)</I>
- <BR><I>1994:</I> Hot Trip to Heaven
- <BR><I>1995:</I> The Glittering Darkness <I>(EP)</I>
- <BR><I>1996:</I> Sweet F. A.
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1215">1215</A>
- <BR><I>See also: </I><A HREF="http://american.recordings.com/American_Artists/Love_And_Rockets/loverox_home.html">american.recordings.com</A>
- <BR><I>See also: </I><A HREF="http://gothic.acs.csulb.edu:8080/~vamp/Gothic/Text/bauhaus-discog.html">gothic.acs.csulb.edu</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Love is Colder than Death</B>
-
- <BR><I>1993:</I> Oxeia
- <BR><I>19??:</I> Mental Traveller
- <BR><I>19??:</I> Teignmouth
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Low Pop Suicide</B>
-
- <BR><I>1992:</I> Disengagement <I>(EP)</I>
- <BR><I>1992:</I> On the Cross of Commerce
- <BR><I>1994:</I> Kiss Your Lips <I>(remixes)</I>
- <BR><I>1995:</I> The Death of Excellence
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1984">1984</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Luscious Jackson</B>
-
- <BR><I>1992:</I> In Search of Manny
- <BR><I>1994:</I> Natural Ingredients
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Lush</B>
-
- <BR><I>1990:</I> Gala
- <BR><I>1992:</I> Spooky
- <BR><I>1994:</I> Split
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2359">2359</A>
- <BR><I>See also: </I><A HREF="http://isvpc146.isv.uit.no/html/group/lush.html#lush">isvpc146.isv.uit.no</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Lwin, Annabella</B>
-
- <BR><I>1986:</I> War Boys <I>(single)</I>
- <BR><I>1994:</I> Car Sex <I>(EP)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2301">2301</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Lycea</B>
-
- <BR><I>1993:</I> A Day in the Stark Corner
- </TD><TD>
-<I>See also: </I><A HREF="http://www.projekt.com/bands/lycia.html">www.projekt.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>M</B>
-
- <BR><I>1979:</I> Pop Musik <I>(7inch)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Machines of Loving Grace</B>
-
- <BR><I>1991:</I> Rite of Shiva <I>(single)</I>
- <BR><I>1991:</I> Machines of Loving Grace
- <BR><I>1992:</I> Burn Like Brilliant Trash <I>(EP)</I>
- <BR><I>1993:</I> Concentration
- <BR><I>1995:</I> Gilt
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1219">1219</A>
- <BR><I>See also: </I><A HREF="http://www.nando.net/mammoth/machines.html">www.nando.net</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>M|A|R|R|S</B>
-
- <BR><I>1987:</I> Pump Up the Volume / Anitina <I>(single)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Mallinder, Stephen</B>
-
- <BR><I>1982:</I> Pow Wow
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2307">2307</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Manufacture</B>
-
- <BR><I>1988:</I> Terrorvision
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>March Violets, The</B>
-
- <BR><I>1984:</I> Natural History
- <BR><I>1982-1984:</I> The Botanic Verses <I>(comp)</I>
- <BR><I>1983-1985:</I> Electric Shades <I>(comp)</I>
- <BR><I>1985:</I> Deep <I>(EP)</I>
- <BR><I>1986:</I> A Turn to the Sky / Never Look Back / Deep / Rebirth <I>(single)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1114">1114</A>
- <BR><I>See also: </I><A HREF="http://www.cm.cf.ac.uk/Sisters.Of.Mercy/Related.Works/March.Violets.Page.html">www.cm.cf.ac.uk</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Martha and the Muffins</B>
-
- <BR><I>1980-1984:</I> Far Away in Time <I>(comp)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2529">2529</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Mary's Danish</B>
-
- <BR><I>1991:</I> Circa
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+3727">3727</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>MC 900 Foot Jesus</B>
-
- <BR><I>1989:</I> Hell With the Lid Off
- <BR><I>1989:</I> UFOs Are Real <I>(EP)</I>
- <BR><I>1990:</I> Welcome to My Dream
- <BR><I>1990:</I> Killer Inside Me <I>(EP)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1229">1229</A>
- <BR><I>See also: </I><A HREF="http://american.recordings.com/American_Artists/MC_900FT_Jesus/mc_home.html">american.recordings.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>McLachlan, Sarah</B>
-
- <BR><I>1992:</I> Into the Fire <I>(single)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1389">1389</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Meat Beat Manifesto</B>
-
- <BR><I>1988:</I> Armed Audio Warfare
- <BR><I>1990:</I> Dog Star Man <I>(EP)</I>
- <BR><I>1990:</I> 99%
- <BR><I>1990:</I> Psyche Out <I>(EP)</I>
- <BR><I>1990:</I> Now <I>(EP)</I>
- <BR><I>1992:</I> Satryicon
- <BR><I>1993:</I> Peel Session <I>(EP)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+3626">3626</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Medicine</B>
-
- <BR><I>1993:</I> The Buried Life
- <BR><I>1994:</I> Shot Forth Self Living
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1432">1432</A>
- <BR><I>See also: </I><A HREF="http://kspace.com/KM/spot.sys/Medicine/pages/home.html">kspace.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Mephisto Walz</B>
-
- <BR><I>1986-1992:</I> Crocosmia
- <BR><I>1993:</I> Terra-Regina <I>(comp)</I>
- <BR><I>1994:</I> The Eternal Deep
- <BR><I>1995:</I> Thalia
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Midnight Oil</B>
-
- <BR><I>1979:</I> Head Injuries
- <BR><I>1981:</I> Place without a Postcard
- <BR><I>1983:</I> 10, 9, 8, 7, 6, 5, 4, 3, 2, 1...
- <BR><I>1985:</I> Red Sails in the Sunset
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1102">1102</A>
- <BR><I>See also: </I><A HREF="http://www.stevens-tech.edu/~dbelson/oilbase/">www.stevens-tech.edu</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Miller, Roger</B>
-
- <BR><I>1987:</I> Maximum Electric Piano
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Ministry</B>
-
- <BR><I>1983:</I> With Sympathy
- <BR><I>1984:</I> Halloween Remix / The Nature of Outtakes <I>(EP)</I>
- <BR><I>1981-1984:</I> various singles
- <BR><I>1985:</I> Cold Life
- <BR><I>1985:</I> Over the Shoulder / Isle of Man <I>(EP)</I>
- <BR><I>1986:</I> Twitch
- <BR><I>1988:</I> 12 Inch Singles <I>(comp)</I>
- <BR><I>1988:</I> The Land of Rape and Honey
- <BR><I>1988:</I> Stigmata / Tonight we Murder <I>(EP)</I>
- <BR><I>1989:</I> The Mind is a Terrible Thing to Taste
- <BR><I>1991:</I> Jesus Built my Hotrod <I>(EP)</I>
- <BR><I>1992:</I> Psalm 69
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1100">1100</A>
- <BR><I>See also: </I><A HREF="http://csclub.uwaterloo.ca/u/sfwhite/ministry.html">csclub.uwaterloo.ca</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Miranda Sex Garden</B>
-
- <BR><I>1991:</I> Gush Forth my Tears
- <BR><I>1991:</I> Madra
- <BR><I>1992:</I> Iris
- <BR><I>1993:</I> Suspiria
- <BR><I>1994:</I> Fairytales of Slavery
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+3007">3007</A>
- <BR><I>See also: </I><A HREF="http://sksol1.physics.sunysb.edu/~jng/msg/">sksol1.physics.sunysb.edu</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Missing Persons</B>
-
- <BR><I>1982:</I> Missing Persons <I>(EP)</I>
- <BR><I>1982:</I> Spring Session M
- <BR><I>1984:</I> Rhyme &amp; Reason
- <BR><I>1982-1984:</I> Best of <I>(comp)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Mistle Thrush</B>
-
- <BR><I>199?:</I> Silt
- <BR><I>1994:</I> Agus Am&agrave;rach
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Mission, The</B>
-
- <BR><I>1986:</I> God's Own Medicine
- <BR><I>1987:</I> the First Chapter
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2045">2045</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Mission of Burma</B>
-
- <BR><I>1987:</I> Forget
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Morissette, Alanis</B>
-
- <BR><I>1995:</I> Jagged Little Pill
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+3127">3127</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Morrison, Patricia</B>
-
- <BR><I>1994:</I> Reflect on This
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1062">1062</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Moyet, Allison</B>
-
- <BR><I>1985:</I> ALF
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+3410">3410</A>
- <BR><I>See also: </I><A HREF="http://rt66.com/ftp/usr2/lazlo/discographies/erasure">rt66.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Murder Inc.</B>
-
- <BR><I>1992:</I> Murder Inc.
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Mussolini Headkick</B>
-
- <BR><I>1990:</I> Blood on the Flag
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Murphy, Peter</B>
-
- <BR><I>1986:</I> Should the World Fail to Fall Apart
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1235">1235</A>
- <BR><I>See also: </I><A HREF="http://gothic.acs.csulb.edu:8080/~vamp/Gothic/Text/bauhaus-discog.html">gothic.acs.csulb.edu</A>
- <BR><I>See also: </I><A HREF="http://isvpc146.isv.uit.no/html/person/p.html#petermurphy">isvpc146.isv.uit.no</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>My Bloody Valentine</B>
-
- <BR><I>1988:</I> Isn't Anything
- <BR><I>1991:</I> Loveless
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1912">1912</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>My Life with the Thrill Kill Kult</B>
-
- <BR><I>1988:</I> I See Good Spirits and I See Bad Spirits
- <BR><I>1989:</I> K00Ler than Jesus
- <BR><I>1990:</I> Confessions of a Knife...
- <BR><I>1990:</I> Swine &amp; Roses / Naive (KMFDM) <I>(single)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+3478">3478</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Neither/Neither World</B>
-
- <BR><I>1994:</I> Tales of True Crime
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Neotek</B>
-
- <BR><I>1995:</I> Brain over Muscle
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>New Fast Automatic Daffodils</B>
-
- <BR><I>1991:</I> Pigeonhole
- <BR><I>1992:</I> Bong
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>New Order</B>
-
- <BR><I>1981:</I> Movement
- <BR><I>1981:</I> Temptation / Hurt <I>(single)</I>
- <BR><I>1982:</I> Factus 8
- <BR><I>1984:</I> Power, Corruption, and Lies
- <BR><I>1984:</I> Blue Monday <I>(single)</I>
- <BR><I>1985:</I> The Perfect Kiss <I>(single)</I>
- <BR><I>1985:</I> Confusion <I>(single)</I>
- <BR><I>1985:</I> Low Life
- <BR><I>1983-5:</I> various singles
- <BR><I>1986:</I> Brotherhood
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1126">1126</A>
- <BR><I>See also: </I><A HREF="http://topquark.cecer.army.mil/~roland/neworder/neworder.html">topquark.cecer.army.mil</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Nine Inch Nails</B>
-
- <BR><I>1989:</I> Pretty Hate Machine
- <BR><I>1989:</I> Head Like a Hole <I>(remixes)</I>
- <BR><I>1990:</I> Sin <I>(remixes)</I>
- <BR><I>1992:</I> Broken <I>(EP)</I>
- <BR><I>1992:</I> Fixed <I>(remixes)</I>
- <BR><I>1994:</I> March of the Pigs <I>(EP)</I>
- <BR><I>1994:</I> The Downward Spiral
- <BR><I>1994:</I> Closer to God <I>(EP)</I>
- <BR><I>1994:</I> Closer (Further Away) <I>(EP)</I>
- <BR><I>1994:</I> Further Down the Spiral <I>(remixes)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1046">1046</A>
- <BR><I>See also: </I><A HREF="http://www.scri.fsu.edu/~patters/nin.html">www.scri.fsu.edu</A>
- <BR><I>See also: </I><A HREF="http://metaverse.com/woodstock/artists/nineinchnails/index.html">metaverse.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Nirvana</B>
-
- <BR><I>1991:</I> Nevermind
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1052">1052</A>
- <BR><I>See also: </I><A HREF="http://www.ludd.luth.se/nirvana/">www.ludd.luth.se</A>
- <BR><I>See also: </I><A HREF="http://home.earthlink.net/~tomgrant/">home.earthlink.net</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Nitzer Ebb</B>
-
- <BR><I>1987:</I> That Total Age
- <BR><I>1987:</I> Warsaw Ghetto <I>(EP)</I>
- <BR><I>1987:</I> So Bright So Strong <I>(remixes)</I>
- <BR><I>1987:</I> Get Clean <I>(remixes)</I>
- <BR><I>1988:</I> Control: I'm Here <I>(single)</I>
- <BR><I>1989:</I> Hearts and Minds <I>(single)</I>
- <BR><I>1989:</I> Belief
- <BR><I>1990:</I> Showtime
- <BR><I>1991:</I> I Give to You <I>(single)</I>
- <BR><I>1991:</I> As Is <I>(single)</I>
- <BR><I>1991:</I> Ebbhead
- <BR><I>1991:</I> Godhead <I>(EP)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1164">1164</A>
- <BR><I>See also: </I><A HREF="http://www.eecs.nwu.edu/~smishra/Industrial/nitzer-ebb/index.html">www.eecs.nwu.edu</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>No Doubt</B>
-
- <BR><I>1995:</I> Tragic Kingdom
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Noise Unit</B>
-
- <BR><I>1989:</I> Grinding Into Emptiness
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Nosferatu</B>
-
- <BR><I>1993:</I> Rise
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Numan, Gary</B>
-
- <BR><I>1978:</I> Tubeway Army
- <BR><I>1978:</I> The Plan
- <BR><I>1979:</I> Replicas
- <BR><I>1979:</I> The Pleasure Principle
- <BR><I>1980:</I> Telekon
- <BR><I>1981:</I> Warriors
- <BR><I>1981:</I> Dance
- <BR><I>1982:</I> I, Assassin
- <BR><I>1984:</I> White Noise <I>(double live)</I>
- <BR><I>1987:</I> Ghost <I>(double live)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1409">1409</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Offspring</B>
-
- <BR><I>1994:</I> Smash
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Oingo Boingo</B>
-
- <BR><I>1980:</I> Forbidden Zone <I>(soundtrack)</I>
- <BR><I>1981:</I> Only a Lad
- <BR><I>1983:</I> Good for Your Soul
- <BR><I>1986:</I> Dead Man's Party
- <BR><I>1987:</I> Nothing to Fear
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1089">1089</A>
- <BR><I>See also: </I><A HREF="http://rhino.harvard.edu/dan/boingo/boingo.html">rhino.harvard.edu</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Orb, The</B>
-
- <BR><I>1991:</I> The Orb's Adventures Beyond the Ultraworld
- <BR><I>1991:</I> Aubrey Mixes, the Ultraworld Excursions
- <BR><I>1991:</I> Little Fluffy Clouds <I>(EP)</I>
- <BR><I>1992:</I> U.F.Orb
- <BR><I>1993:</I> live 93 <I>(double live)</I>
- <BR><I>1994:</I> Pomme Fritz
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1121">1121</A>
- <BR><I>See also: </I><A HREF="http://www.hyperlink.com/orb">www.hyperlink.com</A>
- <BR><I>See also: </I><A HREF="http://www.phlab.missouri.edu/HOMES/c512571_www/music/orbstuff/index.html">www.phlab.missouri.edu</A>
- <BR><I>See also: </I><A HREF="http://rt66.com/ftp/usr2/lazlo/discographies/orb">rt66.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Orbital</B>
-
- <BR><I>1993:</I> Orbital 2
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2049">2049</A>
- <BR><I>See also: </I><A HREF="http://rt66.com/ftp/usr2/lazlo/discographies/orbital">rt66.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Orchestral Manoeuvers in the Dark</B>
-
- <BR><I>1980:</I> OMD <I>(US release)</I>
- <BR><I>1980:</I> OMD <I>(UK release)</I>
- <BR><I>1981:</I> Bunker Soldiers
- <BR><I>1981:</I> Architecture &amp; Morality
- <BR><I>1983:</I> Dazzle Ships
- <BR><I>1984:</I> Junk Culture
- <BR><I>1985:</I> Crush
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+5370">5370</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Oxygiene 23</B>
-
- <BR><I>1995:</I> Blue
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>187 Calm</B>
-
- <BR><I>1995:</I> One Eighty Seven Calm <I>(EP)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>1000 Homo DJs</B>
-
- <BR><I>1990:</I> Supernaut <I>(EP)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Opus III</B>
-
- <BR><I>1991:</I> Mind Fruit
- <BR><I>1994:</I> Guru Mother
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Pain Teens</B>
-
- <BR><I>1990:</I> Born in Blood / Case Histories
- <BR><I>1992:</I> Stimulation Festival
- <BR><I>1993:</I> Destroy Me, Lover
- <BR><I>1995:</I> Beast of Dreams
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Paralysed Age</B>
-
- <BR><I>1994:</I> Nocturne
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Pigface</B>
-
- <BR><I>1990:</I> Gub
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1165">1165</A>
- <BR><I>See also: </I><A HREF="http://www.eecs.nwu.edu/~smishra/Industrial/pigface/index.html">www.eecs.nwu.edu</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Pink Floyd</B>
-
- <BR><I>1973:</I> Dark Side of the Moon
- <BR><I>1975:</I> Wish You were Here
- <BR><I>1978:</I> The Wall <I>(double soundtrack)</I>
- <BR><I>1981:</I> A Collection of Great Dance Songs <I>(comp)</I>
- <BR><I>1995:</I> A Saucerful of Pink: a Tribute <I>(double, various)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1008">1008</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Polygon Window</B>
-
- <BR><I>1993:</I> Surfing on Sine Waves
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+5279">5279</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Police</B>
-
- <BR><I>1979:</I> Outlandos D'Amour
- <BR><I>1980:</I> Ghost in the Machine
- <BR><I>1981:</I> Zenyatta Mondatta
- <BR><I>1983:</I> Synchronicity
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1172">1172</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Poe</B>
-
- <BR><I>1995:</I> Hello
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Pop, Iggy</B>
-
- <BR><I>1977:</I> Lust for Life
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+4345">4345</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Powerman 5000</B>
-
- <BR><I>1995:</I> The Blood Splat Rating System
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Powerstation, The</B>
-
- <BR><I>1985:</I> The Powerstation
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1259">1259</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Pram</B>
-
- <BR><I>199?:</I> Iron Lung <I>(EP)</I>
- <BR><I>1995:</I> Helium
- <BR><I>1995:</I> Sargasso Sea
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Prick</B>
-
- <BR><I>1995:</I> Prick
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+3683">3683</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Primus</B>
-
- <BR><I>1991:</I> Sailing on the Seas of Cheese
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1055">1055</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Project Pitchfork</B>
-
- <BR><I>1991:</I> Dhyani
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Propaganda</B>
-
- <BR><I>1985:</I> A Secret Wish, US version
- <BR><I>1985:</I> A Secret Wish, UK version <I>(remixes)</I>
- <BR><I>1985:</I> p:machinery (polish / passive) / Frozen Faces <I>(single)</I>
- <BR><I>1985:</I> Duel / Jewel <I>(single)</I>
- <BR><I>1985:</I> Wishful Thinking <I>(remixes)</I>
- <BR><I>1990:</I> Heaven Give Me Words <I>(EP)</I>
- <BR><I>1995:</I> p:machinery t-empo remix <I>(single)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+4636">4636</A>
- <BR><I>See also: </I><A HREF="http://rt66.com/ftp/usr2/lazlo/discographies/ztt">rt66.com</A>
- <BR><I>See also: </I><A HREF="http://hcl.chass.ncsu.edu/~phelpsgm/claudia.htm">hcl.chass.ncsu.edu</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Prophetess, The</B>
-
- <BR><I>1993:</I> The Prophetess
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Public Image Limited</B>
-
- <BR><I>1985:</I> Album
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Rage Against the Machine</B>
-
- <BR><I>1992:</I> Rage Against the Machine
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1424">1424</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Romeo Void</B>
-
- <BR><I>1981:</I> Never Say Never / Present Tense <I>(single)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Blaine Reininger</B>
-
- <BR><I>1989:</I> Expatriate Journals
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Red Aunts</B>
-
- <BR><I>1993:</I> Drag
- <BR><I>1994:</I> Bad Motherfucker 400-Z
- <BR><I>1995:</I> #1 Chicken
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+4619">4619</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Re-Flex</B>
-
- <BR><I>1983:</I> The Politics of Dancing / Re-Flex It <I>(single)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Revolting Cocks</B>
-
- <BR><I>1986:</I> Big Sexy Land
- <BR><I>1988:</I> You Goddamned Son of a Bitch <I>(double live)</I>
- <BR><I>1989:</I> Stainless Steel Providers <I>(EP)</I>
- <BR><I>1990:</I> Beers, Steers, and Queers
- <BR><I>1993:</I> Linger Ficken' Good
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1100">1100</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Ridgway, Stan</B>
-
- <BR><I>1986:</I> The Big Heat
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2904">2904</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Rosemarys, The</B>
-
- <BR><I>1993:</I> Providence
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Rosetta Stone</B>
-
- <BR><I>1993:</I> Adrenaline
- <BR><I>1995:</I> The Tyrrany of Inaction
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Ruby</B>
-
- <BR><I>1995:</I> Salt Peter
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Rump</B>
-
- <BR><I>1994:</I> Hating Brenda
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Rush</B>
-
- <BR><I>1984:</I> Grace Under Pressure
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1039">1039</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Sandoz</B>
-
- <BR><I>1993:</I> Digital Lifeforms
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Scatterbrain</B>
-
- <BR><I>1990:</I> Here Comes Trouble
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Scar Tissue</B>
-
- <BR><I>1995:</I> Scar Tissue
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Scritti Politti</B>
-
- <BR><I>1985:</I> Cupid &amp; Psyche
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Severed Heads</B>
-
- <BR><I>1983:</I> Since the Accident
- <BR><I>1986:</I> Come Visit the Big Bigot
- <BR><I>1987:</I> Bad Mood Guy
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1480">1480</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Sex Gang, Andi</B>
-
- <BR><I>1994:</I> Arco Valley
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Sex Gang Children</B>
-
- <BR><I>1992:</I> Blind
- <BR><I>1993:</I> Dieche
- <BR><I>1993:</I> Medea
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Shadow Project</B>
-
- <BR><I>1991:</I> Shadow Project
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Sharkbait</B>
-
- <BR><I>1991:</I> Blowtorch Facelift
- <BR><I>1993:</I> Crushits
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Sheep on Drugs</B>
-
- <BR><I>1993:</I> Greatest Hits <I>(comp)</I>
- <BR><I>1995:</I> Suck <I>(EP)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Shriekback</B>
-
- <BR><I>1982:</I> Tench
- <BR><I>1983:</I> Care
- <BR><I>1983:</I> Care <I>(Y version)</I>
- <BR><I>1983:</I> Lined Up / Hapax Legomena <I>(single)</I>
- <BR><I>1983:</I> Lined Up / My Spine / Accretions /Into Method <I>(single)</I>
- <BR><I>1983:</I> My Spine / Accretions / Clear Trails <I>(single)</I>
- <BR><I>1983:</I> Sexthinkone / Here Comes My Hand <I>(single)</I>
- <BR><I>1984:</I> Jamscience <I>(UK release)</I>
- <BR><I>1984:</I> Jamscience <I>(Holland release)</I>
- <BR><I>1984:</I> Knowledge, Power, Truth, and Sex
- <BR><I>1984:</I> Mercy Dash <I>(picture disc, single)</I>
- <BR><I>1984:</I> Hand on my Heart <I>(picture disc, single)</I>
- <BR><I>1985:</I> The Infinite <I>(comp)</I>
- <BR><I>1985:</I> Oil and Gold
- <BR><I>1985:</I> Fish Below the Ice <I>(EP)</I>
- <BR><I>1983-1985:</I> Priests and Kannibals <I>(comp)</I>
- <BR><I>1986:</I> Big Night Music
- <BR><I>1986:</I> Islam Grotto <I>(live boot)</I>
- <BR><I>1988:</I> Evolution <I>(comp)</I>
- <BR><I>1990:</I> The Dancing Years <I>(remixes)</I>
- <BR><I>1993:</I> Sacred City
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1248">1248</A>
- <BR><I>See also: </I><A HREF="http://http2.brunel.ac.uk:8080/~ee92pmh/shrkindx.html">http2.brunel.ac.uk</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Siglo XX</B>
-
- <BR><I>1983-1986:</I> Antler Tracks I <I>(comp)</I>
- <BR><I>1986:</I> Fear and Desire
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Single Gun Theory</B>
-
- <BR><I>1989?:</I> Exorcise this Wasteland
- <BR><I>1991:</I> Like Stars in my Hands
- <BR><I>1993:</I> Burning Bright (but Unseen) <I>(EP)</I>
- <BR><I>1994:</I> Flow, River of my Soul
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1404">1404</A>
- <BR><I>See also: </I><A HREF="http://www.magna.com.au:80/~gunners/">www.magna.com.au</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Siouxsie and the Banshees</B>
-
- <BR><I>1977:</I> Peel Sessions <I>(live EP)</I>
- <BR><I>1978:</I> Peel Sessions 2 <I>(live EP)</I>
- <BR><I>1978:</I> The Scream
- <BR><I>1979:</I> Join Hands
- <BR><I>1980:</I> Kaleidoscope
- <BR><I>1981:</I> juju
- <BR><I>1981:</I> Once Upon a Time <I>(comp)</I>
- <BR><I>1981:</I> Spellbound / Follow the Sun / Slap Dash Snap <I>(single)</I>
- <BR><I>1982:</I> Slowdive / Obsession II / Cannibal Roses <I>(single)</I>
- <BR><I>1982:</I> A Kiss in the Dream House
- <BR><I>1983:</I> Nocturne <I>(double live)</I>
- <BR><I>1984:</I> Hyaena
- <BR><I>1985:</I> Tinderbox
- <BR><I>1986:</I> Through the Looking Glass
- <BR><I>1987:</I> Song from the Edge of the World <I>(single)</I>
- <BR><I>1988:</I> Peekaboo / False Face / Catwalk <I>(single)</I>
- <BR><I>1988:</I> Peepshow
- <BR><I>1991:</I> Superstition
- <BR><I>1991:</I> Kiss Them for Me <I>(EP)</I>
- <BR><I>1995:</I> The Rapture
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1216">1216</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Sister Machine Gun</B>
-
- <BR><I>1992:</I> Sins of the Flesh
- <BR><I>1994:</I> The Torture Technique
- <BR><I>1994:</I> Nothing <I>(single)</I>
- <BR><I>1994:</I> Wired / Lung <I>(single)</I>
- <BR><I>1995:</I> Burn
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+3612">3612</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Sisterhood, The</B>
-
- <BR><I>1986:</I> Gift
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1115">1115</A>
- <BR><I>See also: </I><A HREF="http://www.cm.cf.ac.uk/Sisters.Of.Mercy/Related.Works/Sisterhood.Page.html">www.cm.cf.ac.uk</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Sisters of Mercy</B>
-
- <BR><I>1985:</I> First and Last and Always
- <BR><I>1988:</I> Floodland
- <BR><I>1988:</I> More / You Could be the One <I>(single)</I>
- <BR><I>1990:</I> Vision Thing
- <BR><I>1992:</I> Some Girls Wander by Mistake <I>(comp)</I>
- <BR><I>1992:</I> Temple of Love 1992 <I>(single)</I>
- <BR><I>1993:</I> First and Last and Forever: A Tribute <I>(various)</I>
- <BR><I>1993:</I> Under the Gun / Alice 1993 <I>(single)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1062">1062</A>
- <BR><I>See also: </I><A HREF="http://www.cm.cf.ac.uk:/Sisters.Of.Mercy/">www.cm.cf.ac.uk</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Skeletal Family</B>
-
- <BR><I>1984-1985:</I> Burning Oil / Futile Combat
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Skinny Puppy</B>
-
- <BR><I>1983:</I> Back and Forth, Series Two
- <BR><I>1984:</I> Bites
- <BR><I>1984:</I> Remission
- <BR><I>1984:</I> Bites and Remission
- <BR><I>1986:</I> Mind: the Perpetual Intercourse
- <BR><I>1986:</I> Dig It <I>(EP)</I>
- <BR><I>1987:</I> Cleanse, Fold, and Manipulate
- <BR><I>1988:</I> Vivisect VI
- <BR><I>1989:</I> Rabies
- <BR><I>1990:</I> Too Dark Park
- <BR><I>1990:</I> Censor <I>(EP)</I>
- <BR><I>1992:</I> 12 Inch Anthology <I>(comp)</I>
- <BR><I>1992:</I> Last Rights
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1166">1166</A>
- <BR><I>See also: </I><A HREF="http://www.eecs.nwu.edu/~smishra/Industrial/skinny-puppy">www.eecs.nwu.edu</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Sky Cries Mary</B>
-
- <BR><I>1993:</I> A Return to the Inner Experience
- <BR><I>1994:</I> This Timeless Turning
- <BR><I>1994:</I> Every Iceberg is Afire / Deep Sunless Sea / Cornerman <I>(single)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1437">1437</A>
- <BR><I>See also: </I><A HREF="http://www.starwave.com/corp/scm/scm.html">www.starwave.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Snog</B>
-
- <BR><I>1995:</I> Dear Valued Customer
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Soh Daiko</B>
-
- <BR><I>1990:</I> Taiko Drum Ensemble
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Some, Belouis</B>
-
- <BR><I>1984:</I> Some People <I>(single)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Southern Death Cult</B>
-
- <BR><I>1982-1983:</I> Southern Death Cult <I>(comp)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Spahn Ranch</B>
-
- <BR><I>1995:</I> The Coiled One
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>SSQ</B>
-
- <BR><I>1984:</I> Playback
- <BR><I>1986:</I> Insecurity <I>(single)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Stabbing Westward</B>
-
- <BR><I>1993:</I> Violent Mood Swings <I>(EP)</I>
- <BR><I>1994:</I> Ungod
- <BR><I>1995:</I> What Do I Have to Do / Falls Apart <I>(single)</I>
- <BR><I>1995:</I> Wither Blister Burn and Peel
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2415">2415</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Strange Boutique</B>
-
- <BR><I>199?:</I> Charm
- <BR><I>199?:</I> The Kindest Words
- <BR><I>199?:</I> The Loved One
- </TD><TD>
-<I>See also: </I><A HREF="http://www.iuma.com/Bedazzled/band_html/Strange_Boutique.html">www.iuma.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Steroid Maximus</B>
-
- <BR><I>1991:</I> Quilombo
- <BR><I>1992:</I> Gondwanaland
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2750">2750</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Sugarcubes, The</B>
-
- <BR><I>1988:</I> Life's Too Good
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+3419">3419</A>
- <BR><I>See also: </I><A HREF="http://math-www.uio.no/bjork/index.html">math-www.uio.no</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Sunscreem</B>
-
- <BR><I>1992:</I> O3
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Switchblade Symphony</B>
-
- <BR><I>1992:</I> Fable <I>(tape/EP)</I>
- <BR><I>1993:</I> Elegy <I>(tape/EP)</I>
- <BR><I>1995:</I> Serpentine Gallery
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Talking Heads</B>
-
- <BR><I>1977:</I> Talking Heads '77
- <BR><I>1978:</I> More Songs About Buildings and Food
- <BR><I>1979:</I> The Name of This Band is Talking Heads <I>(double live)</I>
- <BR><I>1981:</I> Fear of Music
- <BR><I>1983:</I> Sp eak in gI n To ngu es
- <BR><I>1985:</I> Stop Making Sense <I>(live soundtrack)</I>
- <BR><I>1985:</I> Little Creatures
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1012">1012</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Tears For Fears</B>
-
- <BR><I>1983:</I> The Hurting
- <BR><I>1985:</I> Songs From the Big Chair
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2763">2763</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Tel Basta</B>
-
- <BR><I>1996:</I> Lickerish
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Thanatos</B>
-
- <BR><I>1995:</I> An Embassy in Gaius
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Therapy?</B>
-
- <BR><I>1992:</I> Caucasian Psychosis
- <BR><I>1992:</I> Nurse
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2044">2044</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>13 Mg.</B>
-
- <BR><I>1995:</I> Trust and Obey
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>This Ascension</B>
-
- <BR><I>1991:</I> Light and Shade
- <BR><I>1994:</I> Walk Softly, a Dream Lies Here
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Throwing Muses</B>
-
- <BR><I>1986:</I> Throwing Muses
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1357">1357</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Tinfed</B>
-
- <BR><I>1993:</I> Synaptic Hardware
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Tin Machine</B>
-
- <BR><I>1989:</I> Tin Machine
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1098">1098</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Tit Wrench United</B>
-
- <BR><I>1993:</I> Full Employment
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Tom Tom Club</B>
-
- <BR><I>1981:</I> Tom Tom Club
- <BR><I>1983:</I> Close to the Bone
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1012">1012</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Tones on Tail</B>
-
- <BR><I>1982:</I> Tones on Tail
- <BR><I>1984:</I> Pop
- <BR><I>1984:</I> Performance / Shakes <I>(single)</I>
- <BR><I>1982-1984:</I> Night Music <I>(comp)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1235">1235</A>
- <BR><I>See also: </I><A HREF="http://gothic.acs.csulb.edu:8080/~vamp/Gothic/Text/bauhaus-discog.html">gothic.acs.csulb.edu</A>
- <BR><I>See also: </I><A HREF="http://isvpc146.isv.uit.no/html/title/t.html#tonesontail">isvpc146.isv.uit.no</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Trance Mission</B>
-
- <BR><I>1993:</I> Trance Mission
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Trance to the Sun</B>
-
- <BR><I>1994:</I> Ghost Forest
- <BR><I>1995:</I> Bloom, Flowers, Bloom!
- <BR><I>1995:</I> Venomous Eve
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Transvision Vamp</B>
-
- <BR><I>1991:</I> Little Magnets versus the Bubble of Babble
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+5305">5305</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Trio</B>
-
- <BR><I>1983:</I> Trio and Error
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Tubes, The</B>
-
- <BR><I>1981:</I> Tubes Rarities And Smash Hits [T.R.A.S.H]
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Tuxedomoon</B>
-
- <BR><I>1980:</I> Half-Mute
- <BR><I>1983:</I> A Thousand Lives by Picture
- <BR><I>1985:</I> Holy Wars
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Underflowers</B>
-
- <BR><I>1995:</I> Underflowers
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Urban Dance Squad</B>
-
- <BR><I>1991:</I> Life'n Perspectives of a Genuine Crossover
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+4626">4626</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Usherhouse</B>
-
- <BR><I>1993:</I> Molting
- <BR><I>1994:</I> Flux
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Ultravox</B>
-
- <BR><I>1978:</I> Systems of Romance
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Van Acker, Luc</B>
-
- <BR><I>1980:</I> Taking Snapshots, Volume 1
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1100">1100</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Vangelis</B>
-
- <BR><I>1994:</I> Blade Runner <I>(soundtrack)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1023">1023</A>
- <BR><I>See also: </I><A HREF="http://rt66.com/ftp/usr2/lazlo/discographies/vangelis">rt66.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>various</B>
-
- <BR><I>1980:</I> URGH! A Music War <I>(live comp)</I>
- <BR><I>1981-1994:</I> Wax Trax Black Box <I>(comp)</I>
- <BR><I>1982-198?:</I> In Goth Daze (Anagram version) <I>(comp)</I>
- <BR><I>1982-1994:</I> In Goth Daze (Cleopatra version) <I>(comp)</I>
- <BR><I>1982-1993:</I> The Whip (Cleopatra) <I>(comp)</I>
- <BR><I>1984-1985:</I> IQ6: Zang Tumb Tuum Sampled <I>(comp)</I>
- <BR><I>1984-1995:</I> DEC ADE NCE (Nettwerk) <I>(comp)</I>
- <BR><I>1988:</I> This is Electronic Body Music <I>(comp)</I>
- <BR><I>1990:</I> From Across This Gray Land #2 (Projekt) <I>(comp)</I>
- <BR><I>1990:</I> Doctor Death IV: The Marvels of Insect Life <I>(double comp)</I>
- <BR><I>1990:</I> Red Hot + Blue <I>(comp)</I>
- <BR><I>1991:</I> Bouquet of Dreams <I>(comp)</I>
- <BR><I>1980-1992:</I> Gothic Rock <I>(comp)</I>
- <BR><I>1992:</I> Mindfield (Third Mind) <I>(comp)</I>
- <BR><I>1992:</I> From Across This Gray Land #3 (Projekt) <I>(comp)</I>
- <BR><I>1992:</I> The Cyberflesh Conspiracy <I>(comp)</I>
- <BR><I>1992:</I> G&aacute;rgula Mec&acirc;nica: World Electrostatic Assembly <I>(comp)</I>
- <BR><I>1992:</I> CCCC: California Cyber Crash Compilation (Cop) <I>(comp)</I>
- <BR><I>1993:</I> Shut Up Kitty <I>(comp)</I>
- <BR><I>1988-1993:</I> Can You See It Yet? (Invisible) <I>(comp)</I>
- <BR><I>1994:</I> Mysterious Encounters (Cleopatra) <I>(comp)</I>
- <BR><I>1994:</I> The Crow <I>(comp)</I>
- <BR><I>1994:</I> Totentanz: The Best of Zoth Ommog <I>(double comp)</I>
- <BR><I>1992:</I> Hy! (Hyperium Compilation volume 1) <I>(comp)</I>
- <BR><I>1993:</I> World Domination Sampler <I>(comp)</I>
- <BR><I>1993:</I> Rivet Head Culture <I>(comp)</I>
- <BR><I>1993:</I> Artificial Intelligence (Warp) <I>(comp)</I>
- <BR><I>1994:</I> Artificial Intelligence II (Warp) <I>(comp)</I>
- <BR><I>1994:</I> Big Hard Disk #2 (Smash) <I>(comp)</I>
- <BR><I>1994:</I> Kindred Spirits (Bedazzled) <I>(comp)</I>
- <BR><I>1994:</I> Plug In + Turn On (Instinct) <I>(comp)</I>
- <BR><I>1994:</I> The Disease of Lady Madeline (Anubis) <I>(comp)</I>
- <BR><I>1994:</I> Natural Born Killers <I>(soundtrack comp)</I>
- <BR><I>1994:</I> Afterburn (Wax Trax) <I>(comp)</I>
- <BR><I>1994:</I> Chaos Compilation (Cop) <I>(comp)</I>
- <BR><I>1994:</I> Electrocity Vol. 5 <I>(comp)</I>
- <BR><I>1995:</I> Gothik (Cleopatra) <I>(double comp)</I>
- <BR><I>1995:</I> Godfathers of German Gothic <I>(comp)</I>
- <BR><I>1995:</I> Heavenly Voices III (Hyperium) <I>(comp)</I>
- <BR><I>1995:</I> Mortal Kombat <I>(soundtrack comp)</I>
- <BR><I>1995:</I> The Tyranny Off the Beat (Off Beat/Cleopatra) <I>(comp)</I>
- <BR><I>1995:</I> Forced Cranial Removal (Fifth Colvmn) <I>(comp)</I>
- <BR><I>1995:</I> Dreams in the Witch House (Grave News) <I>(comp)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Vega, Suzanne</B>
-
- <BR><I>1992:</I> 99.9F
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2088">2088</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Vinyl Devotion</B>
-
- <BR><I>1994:</I> If They Know You're Trying
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Volume Magazine</B>
-
- <BR><I>1991:</I> Volume: 1 <I>(comp)</I>
- <BR><I>1991:</I> Volume: 2 <I>(comp)</I>
- <BR><I>1992:</I> Volume: 3 <I>(comp)</I>
- <BR><I>1992:</I> Volume: 4 <I>(comp)</I>
- <BR><I>1995:</I> Wasted: The Best of Volume <I>(double comp)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Waitresses, The</B>
-
- <BR><I>1981:</I> Wasn't Tomorrow Wonderful?
- <BR><I>1982:</I> Bruiseology
- <BR><I>1978-1981:</I> Best Of <I>(comp)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Wake, The</B>
-
- <BR><I>1993:</I> Masked
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Wall of Voodoo</B>
-
- <BR><I>1980:</I> fpfpfpfpfpfp
- <BR><I>1981:</I> Dark Continent
- <BR><I>1982:</I> Call of the West
- <BR><I>1986:</I> Seven Days in Sammystown
- <BR><I>1987:</I> Happy Planet
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Wang Chung</B>
-
- <BR><I>1983:</I> Points On the Curve
- <BR><I>1985:</I> To Live and Die in L.A. <I>(soundtrack)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+2245">2245</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Westworld</B>
-
- <BR><I>1987:</I> Rockulator
- <BR><I>1991:</I> Movers and Shakers
- <BR><I>1991:</I> Do No Wrong <I>(single)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Whale</B>
-
- <BR><I>1994:</I> Hobo Humpin Slobo Babe / Eye 842 <I>(single)</I>
- <BR><I>1994:</I> Hobo Humpin Slobo Babe / Lips / Eye 842 <I>(single)</I>
- <BR><I>1994:</I> Pay for Me <I>(EP)</I>
- <BR><I>1995:</I> We Care
- <BR><I>1995:</I> I'll Do Ya <I>(EP)</I>
- <BR><I>1995:</I> Hobo Humpin Slobo Babe (3 mixes) <I>(single)</I>
- <BR><I>1995:</I> Hobo Humpin Slobo Babe / You and Your Sister / Singer Star <I>(single)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+3790">3790</A>
- <BR><I>See also: </I><A HREF="http://www.vmg.co.uk/hut/whale/">www.vmg.co.uk</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>White Zombie</B>
-
- <BR><I>1992:</I> Nightcrawlers: the KMFDM Remixes <I>(EP)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Wilde, Kim</B>
-
- <BR><I>1981:</I> Kim Wilde
- <BR><I>1984:</I> Teases &amp; Dares
- <BR><I>1981-1993:</I> The Singles Collection <I>(comp)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>X</B>
-
- <BR><I>1988:</I> Live at the Whiskey-a-Go-Go <I>(double live)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>X Marks the Pedwalk</B>
-
- <BR><I>1994:</I> The Killing Had Begun
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Xorcist</B>
-
- <BR><I>1991:</I> Damned Souls
- <BR><I>1993:</I> Bitches <I>(EP)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>XTC</B>
-
- <BR><I>1982:</I> Waxworks
- <BR><I>1983:</I> Mummer
- <BR><I>1984:</I> The Big Express
- <BR><I>1985:</I> 25 O'Clock
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1044">1044</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Xymox</B>
-
- <BR><I>1985:</I> Clan of Xymox
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1295">1295</A>
- <BR><I>See also: </I><A HREF="http://isvpc146.isv.uit.no/html/group/clanofxymox.html#clanofxymox">isvpc146.isv.uit.no</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Yamashirogumi, Geinoh</B>
-
- <BR><I>1990:</I> Akira <I>(soundtrack)</I>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Yazoo</B>
-
- <BR><I>1982:</I> Upstairs at Eric's
- <BR><I>1982:</I> The Other Side of Love <I>(single)</I>
- <BR><I>1983:</I> You and Me Both
- <BR><I>1983:</I> Nobody's Diary / State Farm <I>(single)</I>
- <BR><I>1983:</I> Situation <I>(EP)</I>
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+4309">4309</A>
- <BR><I>See also: </I><A HREF="http://rt66.com/ftp/usr2/lazlo/discographies/erasure">rt66.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Yello</B>
-
- <BR><I>1980:</I> Solid Pleasure
- <BR><I>1981:</I> Stella
- <BR><I>1983:</I> You Gotta Say Yes to Another Excess
- <BR><I>1987:</I> One Second
- <BR><I>1988:</I> Flag
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1506">1506</A>
- <BR><I>See also: </I><A HREF="http://newton.space.net/yello/yello.a.html">newton.space.net</A>
- <BR><I>See also: </I><A HREF="http://rt66.com/ftp/usr2/lazlo/discographies/yello">rt66.com</A>
- </TD></TABLE>
-
-<LI> <TABLE BORDER=0 width="90%" CELLSPACING=4><TR VALIGN=TOP><TD WIDTH="60%">
- <B>Yes</B>
-
- <BR><I>1972:</I> Fragile
- <BR><I>1975:</I> Classic Yes
- <BR><I>1980:</I> Drama
- <BR><I>1983:</I> 90125
- </TD><TD>
-<I>UBL Card: </I><A HREF="http://american.recordings.com/WWWoM/cgi-bin/ubl?card+1038">1038</A>
- </TD></TABLE>
-</UL>
-
---------------167E2781446B
-Content-Type: application/postscript; name="album-list.ps"
-Content-Transfer-Encoding: 7bit
-Content-Disposition: inline; filename="album-list.ps"
-
-%!PS-Adobe-3.0
-%%BoundingBox: 54 72 558 720
-%%Creator: Mozilla (NetScape) HTML->PS
-%%DocumentData: Clean7Bit
-%%Orientation: Portrait
-%%Pages: 31
-%%PageOrder: Ascend
-%%Title: jwz's tunes
-%%EndComments
-%%BeginProlog
-[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
- /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
- /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
- /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
- /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
- /two /three /four /five /six /seven /eight /nine /colon /semicolon
- /less /equal /greater /question /at /A /B /C /D /E
- /F /G /H /I /J /K /L /M /N /O
- /P /Q /R /S /T /U /V /W /X /Y
- /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c
- /d /e /f /g /h /i /j /k /l /m
- /n /o /p /q /r /s /t /u /v /w
- /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef
- /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
- /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
- /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
- /space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright
- /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior
- /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf
- /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
- /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde
- /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex
- /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring
- /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
- /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave
- /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def
-/c { matrix currentmatrix currentpoint translate
- 3 1 roll scale newpath 0 0 1 0 360 arc setmatrix } bind def
-/F0
- /Times-Roman findfont
- dup length dict begin
- {1 index /FID ne {def} {pop pop} ifelse} forall
- /Encoding isolatin1encoding def
- currentdict end
-definefont pop
-/f0 { /F0 findfont exch scalefont setfont } bind def
-/F1
- /Times-Bold findfont
- dup length dict begin
- {1 index /FID ne {def} {pop pop} ifelse} forall
- /Encoding isolatin1encoding def
- currentdict end
-definefont pop
-/f1 { /F1 findfont exch scalefont setfont } bind def
-/F2
- /Times-Italic findfont
- dup length dict begin
- {1 index /FID ne {def} {pop pop} ifelse} forall
- /Encoding isolatin1encoding def
- currentdict end
-definefont pop
-/f2 { /F2 findfont exch scalefont setfont } bind def
-/F3
- /Times-BoldItalic findfont
- dup length dict begin
- {1 index /FID ne {def} {pop pop} ifelse} forall
- /Encoding isolatin1encoding def
- currentdict end
-definefont pop
-/f3 { /F3 findfont exch scalefont setfont } bind def
-/F4
- /Courier findfont
- dup length dict begin
- {1 index /FID ne {def} {pop pop} ifelse} forall
- /Encoding isolatin1encoding def
- currentdict end
-definefont pop
-/f4 { /F4 findfont exch scalefont setfont } bind def
-/F5
- /Courier-Bold findfont
- dup length dict begin
- {1 index /FID ne {def} {pop pop} ifelse} forall
- /Encoding isolatin1encoding def
- currentdict end
-definefont pop
-/f5 { /F5 findfont exch scalefont setfont } bind def
-/F6
- /Courier-Oblique findfont
- dup length dict begin
- {1 index /FID ne {def} {pop pop} ifelse} forall
- /Encoding isolatin1encoding def
- currentdict end
-definefont pop
-/f6 { /F6 findfont exch scalefont setfont } bind def
-/F7
- /Courier-BoldOblique findfont
- dup length dict begin
- {1 index /FID ne {def} {pop pop} ifelse} forall
- /Encoding isolatin1encoding def
- currentdict end
-definefont pop
-/f7 { /F7 findfont exch scalefont setfont } bind def
-/rhc {
- {
- currentfile read {
- dup 97 ge
- { 87 sub true exit }
- { dup 48 ge { 48 sub true exit } { pop } ifelse }
- ifelse
- } {
- false
- exit
- } ifelse
- } loop
-} bind def
-
-/cvgray { % xtra_char npix cvgray - (string npix long)
- dup string
- 0
- {
- rhc { cvr 4.784 mul } { exit } ifelse
- rhc { cvr 9.392 mul } { exit } ifelse
- rhc { cvr 1.824 mul } { exit } ifelse
- add add cvi 3 copy put pop
- 1 add
- dup 3 index ge { exit } if
- } loop
- pop
- 3 -1 roll 0 ne { rhc { pop } if } if
- exch pop
-} bind def
-
-/smartimage12rgb { % w h b [matrix] smartimage12rgb -
- /colorimage where {
- pop
- { currentfile rowdata readhexstring pop }
- false 3
- colorimage
- } {
- exch pop 8 exch
- 3 index 12 mul 8 mod 0 ne { 1 } { 0 } ifelse
- 4 index
- 6 2 roll
- { 2 copy cvgray }
- image
- pop pop
- } ifelse
-} def
-/cshow { dup stringwidth pop 2 div neg 0 rmoveto show } bind def
-/rshow { dup stringwidth pop neg 0 rmoveto show } bind def
-%%EndProlog
-%%Page: 1 1
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-219.1 706.9 moveto
-14 f1
-(jwz's tunes) show
-174 690.9 moveto
-14 f1
-(Last modified: 06-Apr-96.) show
-0 663.9 moveto
-12 f0
-(This is a list of all of the music I have on CD, tape, and vinyl \(including all of the old, embarrasing) show
-0 650.6 moveto
-12 f0
-(stuff...\) This page may look a little funny if you aren't using a browser that supports HTML tables, like) show
-0 637.3 moveto
-12 f0
-(Mozilla) show
-37.3 637.3 moveto
-12 f0
-(.) show
-28 610.7 moveto
-12 f0
-(``) show
-35.9 610.7 moveto
-12 f2
-(Publishing CD lists and tape collections evokes images of lonely, pathetic men who talk) show
-28 597.4 moveto
-12 f2
-(about their cats incessantly.) show
-162.6 597.4 moveto
-12 f0
-('' -- Paul Phillips ) show
-0 570.8 moveto
-12 f0
-(I used to have this set up so that clicking on any name would take you to the appropriate entry of the All) show
-0 557.5 moveto
-12 f0
-(Music Guide at ) show
-76.9 557.5 moveto
-10 f4
-(gopher://allmusic.ferris.edu) show
-244.9 557.5 moveto
-12 f0
-(; but they have since moved their database from there) show
-0 544.2 moveto
-12 f0
-(to ) show
-12.3 544.2 moveto
-10 f4
-(cdnow.com) show
-66.3 544.2 moveto
-12 f0
-(, and in the process, have obfuscated access to the database to such an extent that this is no) show
-0 530.9 moveto
-12 f0
-(longer possible. In order to get at the discographies, you need to weed your way through dozens of) show
-0 517.6 moveto
-12 f0
-(pages, and there seems to be no even semi-reliable way to pre-compute the URL that they will use.) show
-0 504.3 moveto
-12 f0
-(Arrgh!) show
-0 477.7 moveto
-12 f0
-(The Internet Movie Database) show
-140.2 477.7 moveto
-12 f0
-( has an excellent interface for this sort of thing; I really wish more people) show
-0 464.4 moveto
-12 f0
-(would emulate that system.) show
-0 437.8 moveto
-12 f0
-(In this list, I've included links to various related web pages that I've come across; one very cool and) show
-0 424.5 moveto
-12 f0
-(well-organized database to which many of these links point is ) show
-299.2 424.5 moveto
-12 f0
-(The Ultimate Band List) show
-412.8 424.5 moveto
-12 f0
-(; check it out!) show
-157.2 397.9 moveto
-12 f0
-(Jamie Zawinski) show
-232.8 397.9 moveto
-12 f0
-( ) show
-235.8 397.9 moveto
-10 f4
-(<jwz@netscape.com>) show
-343.8 397.9 moveto
-12 f0
-( ) show
-0 375.6 moveto
-504 0 rlineto 0 -2.8 rlineto -504 0 rlineto closepath fill
-18.1 348.8 moveto
-3.3 3.3 c fill
-31.5 340.7 moveto
-12 f1
-(Act) show
-49.4 340.7 moveto
-12 f0
-( ) show
-31.5 327.4 moveto
-12 f2
-(1988:) show
-59.4 327.4 moveto
-12 f0
-( Laughter, Tears, and Rage ) show
-298.1 341.2 moveto
-12 f2
-(UBL Card: ) show
-355.4 341.2 moveto
-12 f0
-(4637) show
-379.4 341.2 moveto
-12 f0
-( ) show
-298.1 327.9 moveto
-12 f2
-(See also: ) show
-344.7 327.9 moveto
-12 f0
-(rt66.com) show
-387.6 327.9 moveto
-12 f0
-( ) show
-298.1 314.6 moveto
-12 f2
-(See also: ) show
-344.7 314.6 moveto
-12 f0
-(hcl.chass.ncsu.edu) show
-433.6 314.6 moveto
-12 f0
-( ) show
-18.1 301.9 moveto
-3.3 3.3 c fill
-31.5 293.8 moveto
-12 f1
-(Age of Chance) show
-106.1 293.8 moveto
-12 f0
-( ) show
-31.5 280.5 moveto
-12 f2
-(1987:) show
-59.4 280.5 moveto
-12 f0
-( Kiss ) show
-86.7 280.5 moveto
-12 f2
-(\(single\)) show
-123.3 280.5 moveto
-12 f0
-( ) show
-31.5 267.2 moveto
-12 f2
-(1987:) show
-59.4 267.2 moveto
-12 f0
-( Don't Get Mad, Get Even ) show
-189.7 267.2 moveto
-12 f2
-(\(single\)) show
-226.3 267.2 moveto
-12 f0
-( ) show
-18.1 254.5 moveto
-3.3 3.3 c fill
-31.5 246.4 moveto
-12 f1
-(Alien Sex Fiend) show
-112.1 246.4 moveto
-12 f0
-( ) show
-31.5 233.1 moveto
-12 f2
-(1983-1992:) show
-87.4 233.1 moveto
-12 f0
-( Drive My Rocket ) show
-177.3 233.1 moveto
-12 f2
-(\(comp\)) show
-211.2 233.1 moveto
-12 f0
-( ) show
-31.5 219.8 moveto
-12 f2
-(1989:) show
-59.4 219.8 moveto
-12 f0
-( Too Much Acid? ) show
-147.3 219.8 moveto
-12 f2
-(\(live\)) show
-172.6 219.8 moveto
-12 f0
-( ) show
-31.5 206.5 moveto
-12 f2
-(1990:) show
-59.4 206.5 moveto
-12 f0
-( Curse ) show
-31.5 193.2 moveto
-12 f2
-(1992:) show
-59.4 193.2 moveto
-12 f0
-( Open Head Surgery ) show
-31.5 179.9 moveto
-12 f2
-(1993:) show
-59.4 179.9 moveto
-12 f0
-( Altered States of America ) show
-190.3 179.9 moveto
-12 f2
-(\(live\)) show
-215.6 179.9 moveto
-12 f0
-( ) show
-31.5 164 moveto
-12 f2
-(1995:) show
-59.4 164 moveto
-12 f0
-( Inferno: The Odyssey Continues) show
-218.7 168.4 moveto
-10 f0
-(tm) show
-229.2 164 moveto
-12 f0
-( ) show
-232.2 164 moveto
-12 f2
-(\(soundtrack\)) show
-298.1 246.9 moveto
-12 f2
-(UBL Card: ) show
-355.4 246.9 moveto
-12 f0
-(5291) show
-379.4 246.9 moveto
-12 f0
-( ) show
-298.1 233.6 moveto
-12 f2
-(See also: ) show
-344.7 233.6 moveto
-12 f0
-(cent1.lancs.ac.uk) show
-427 233.6 moveto
-12 f0
-( ) show
-18.1 151.3 moveto
-3.3 3.3 c fill
-31.5 143.2 moveto
-12 f1
-(Alio Die) show
-73.1 143.2 moveto
-12 f0
-( ) show
-31.5 129.9 moveto
-12 f2
-(1993:) show
-59.4 129.9 moveto
-12 f0
-( Under a Holy Ritual ) show
-298.1 143.7 moveto
-12 f2
-(UBL Card: ) show
-355.4 143.7 moveto
-12 f0
-(1266) show
-379.4 143.7 moveto
-12 f0
-( ) show
-298.1 130.4 moveto
-12 f2
-(See also: ) show
-344.7 130.4 moveto
-12 f0
-(www.projekt.com) show
-431.3 130.4 moveto
-12 f0
-( ) show
-18.1 117.2 moveto
-3.3 3.3 c fill
-31.5 109.1 moveto
-12 f1
-(Alphaville) show
-84.1 109.1 moveto
-12 f0
-( ) show
-31.5 95.8 moveto
-12 f2
-(1984:) show
-59.4 95.8 moveto
-12 f0
-( Forever Young ) show
-298.1 109.6 moveto
-12 f2
-(UBL Card: ) show
-355.4 109.6 moveto
-12 f0
-(3056) show
-379.4 109.6 moveto
-12 f0
-( ) show
-298.1 96.3 moveto
-12 f2
-(See also: ) show
-344.7 96.3 moveto
-12 f0
-(www.escape.com) show
-429.3 96.3 moveto
-12 f0
-( ) show
-18.1 83.1 moveto
-3.3 3.3 c fill
-31.5 75 moveto
-12 f1
-(Altered Images) show
-109.8 75 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 2 2
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-31.5 709.2 moveto
-12 f2
-(1981:) show
-59.4 709.2 moveto
-12 f0
-( Happy Birthday ) show
-31.5 695.9 moveto
-12 f2
-(1983:) show
-59.4 695.9 moveto
-12 f0
-( Bite ) show
-31.5 682.6 moveto
-12 f2
-(1984:) show
-59.4 682.6 moveto
-12 f0
-( Collected Images ) show
-149 682.6 moveto
-12 f2
-(\(comp\)) show
-182.9 682.6 moveto
-12 f0
-( ) show
-18.1 669.9 moveto
-3.3 3.3 c fill
-31.5 661.8 moveto
-12 f1
-(An April March) show
-114.8 661.8 moveto
-12 f0
-( ) show
-31.5 648.5 moveto
-12 f2
-(1995:) show
-59.4 648.5 moveto
-12 f0
-( Lessons in Vengance ) show
-31.5 635.2 moveto
-12 f2
-(1995:) show
-59.4 635.2 moveto
-12 f0
-( Instruments of Lust and Fury ) show
-18.1 622.5 moveto
-3.3 3.3 c fill
-31.5 614.4 moveto
-12 f1
-(And Also the Trees) show
-129.8 614.4 moveto
-12 f0
-( ) show
-31.5 601.1 moveto
-12 f2
-(1983-1992:) show
-87.4 601.1 moveto
-12 f0
-( From Horizon to Horizon ) show
-216.3 601.1 moveto
-12 f2
-(\(comp\)) show
-250.2 601.1 moveto
-12 f0
-( ) show
-298.1 614.9 moveto
-12 f2
-(UBL Card: ) show
-355.4 614.9 moveto
-12 f0
-(1867) show
-379.4 614.9 moveto
-12 f0
-( ) show
-298.1 601.6 moveto
-12 f2
-(See also: ) show
-344.7 601.6 moveto
-12 f0
-(www.ugcs.caltech.edu) show
-453 601.6 moveto
-12 f0
-( ) show
-298.1 588.3 moveto
-12 f2
-(See also: ) show
-344.7 588.3 moveto
-12 f0
-(onyx.dartmouth.edu) show
-441.3 588.3 moveto
-12 f0
-( ) show
-18.1 575.6 moveto
-3.3 3.3 c fill
-31.5 567.5 moveto
-12 f1
-(Anderson, Laurie) show
-122.1 567.5 moveto
-12 f0
-( ) show
-31.5 554.2 moveto
-12 f2
-(1982:) show
-59.4 554.2 moveto
-12 f0
-( Big Science ) show
-31.5 540.9 moveto
-12 f2
-(1983:) show
-59.4 540.9 moveto
-12 f0
-( United States Live, parts 1-4 ) show
-203 540.9 moveto
-12 f2
-(\(5 albums\)) show
-254.6 540.9 moveto
-12 f0
-( ) show
-31.5 527.6 moveto
-12 f2
-(1984:) show
-59.4 527.6 moveto
-12 f0
-( Mister Heartbreak ) show
-31.5 514.3 moveto
-12 f2
-(1986:) show
-59.4 514.3 moveto
-12 f0
-( Home of the Brave ) show
-157 514.3 moveto
-12 f2
-(\(live soundtrack\)) show
-238.6 514.3 moveto
-12 f0
-( ) show
-31.5 501 moveto
-12 f2
-(1995:) show
-59.4 501 moveto
-12 f0
-( Bright Red ) show
-298.1 568 moveto
-12 f2
-(UBL Card: ) show
-355.4 568 moveto
-12 f0
-(1494) show
-379.4 568 moveto
-12 f0
-( ) show
-298.1 554.7 moveto
-12 f2
-(See also: ) show
-344.7 554.7 moveto
-12 f0
-(www.voyagerco.com) show
-447.3 554.7 moveto
-12 f0
-( ) show
-298.1 541.4 moveto
-12 f2
-(See also: ) show
-344.7 541.4 moveto
-12 f0
-(www.netpart.com) show
-430.6 541.4 moveto
-12 f0
-( ) show
-298.1 528.1 moveto
-12 f2
-(See also: ) show
-344.7 528.1 moveto
-12 f0
-(www.c3.lanl.gov) show
-427 528.1 moveto
-12 f0
-( ) show
-18.1 488.3 moveto
-3.3 3.3 c fill
-31.5 480.2 moveto
-12 f1
-(Ant, Adam) show
-88.1 480.2 moveto
-12 f0
-( ) show
-31.5 466.9 moveto
-12 f2
-(1980:) show
-59.4 466.9 moveto
-12 f0
-( Kings of the Wild Frontier ) show
-31.5 453.6 moveto
-12 f2
-(1981:) show
-59.4 453.6 moveto
-12 f0
-( Prince Charming ) show
-31.5 440.3 moveto
-12 f2
-(1982:) show
-59.4 440.3 moveto
-12 f0
-( Friend or Foe ) show
-31.5 427 moveto
-12 f2
-(1983:) show
-59.4 427 moveto
-12 f0
-( Dirk Wears White Sox ) show
-31.5 413.7 moveto
-12 f2
-(1985:) show
-59.4 413.7 moveto
-12 f0
-( Viva Le Rock ) show
-31.5 400.4 moveto
-12 f2
-(1979-1986:) show
-87.4 400.4 moveto
-12 f0
-( Antics in the Forbidden Zone ) show
-234.7 400.4 moveto
-12 f2
-(\(comp\)) show
-268.6 400.4 moveto
-12 f0
-( ) show
-298.1 480.7 moveto
-12 f2
-(UBL Card: ) show
-355.4 480.7 moveto
-12 f0
-(1205) show
-379.4 480.7 moveto
-12 f0
-( ) show
-298.1 467.4 moveto
-12 f2
-(See also: ) show
-344.7 467.4 moveto
-12 f0
-(www.uhs.uga.edu) show
-431 467.4 moveto
-12 f0
-( ) show
-298.1 454.1 moveto
-12 f2
-(See also: ) show
-344.7 454.1 moveto
-12 f0
-(caprec.com) show
-399.6 454.1 moveto
-12 f0
-( ) show
-18.1 387.7 moveto
-3.3 3.3 c fill
-31.5 379.6 moveto
-12 f1
-(Anthrax) show
-74.8 379.6 moveto
-12 f0
-( ) show
-31.5 366.3 moveto
-12 f2
-(1991:) show
-59.4 366.3 moveto
-12 f0
-( Attack of the Killer B's ) show
-178.7 366.3 moveto
-12 f2
-(\(comp\)) show
-212.6 366.3 moveto
-12 f0
-( ) show
-298.1 380.1 moveto
-12 f2
-(UBL Card: ) show
-355.4 380.1 moveto
-12 f0
-(2710) show
-379.4 380.1 moveto
-12 f0
-( ) show
-18.1 353.6 moveto
-3.3 3.3 c fill
-31.5 345.5 moveto
-12 f1
-(Aphex Twin) show
-94.5 345.5 moveto
-12 f0
-( ) show
-31.5 332.2 moveto
-12 f2
-(1993:) show
-59.4 332.2 moveto
-12 f0
-( On ) show
-80 332.2 moveto
-12 f2
-(\(EP\)) show
-102.6 332.2 moveto
-12 f0
-( ) show
-31.5 318.9 moveto
-12 f2
-(1994:) show
-59.4 318.9 moveto
-12 f0
-( Analogue Bubblebath ) show
-170.3 318.9 moveto
-12 f2
-(\(EP\)) show
-192.9 318.9 moveto
-12 f0
-( ) show
-31.5 305.6 moveto
-12 f2
-(1995:) show
-59.4 305.6 moveto
-12 f0
-( Ventolin ) show
-107.4 305.6 moveto
-12 f2
-(\(EP\)) show
-130 305.6 moveto
-12 f0
-( ) show
-298.1 346 moveto
-12 f2
-(UBL Card: ) show
-355.4 346 moveto
-12 f0
-(5279) show
-379.4 346 moveto
-12 f0
-( ) show
-298.1 332.7 moveto
-12 f2
-(See also: ) show
-344.7 332.7 moveto
-12 f0
-(hyperreal.com) show
-413.6 332.7 moveto
-12 f0
-( ) show
-298.1 319.4 moveto
-12 f2
-(See also: ) show
-344.7 319.4 moveto
-12 f0
-(pathfinder.com) show
-417.6 319.4 moveto
-12 f0
-( ) show
-18.1 292.9 moveto
-3.3 3.3 c fill
-31.5 284.8 moveto
-12 f1
-(Arcadia) show
-72.8 284.8 moveto
-12 f0
-( ) show
-31.5 271.5 moveto
-12 f2
-(1985:) show
-59.4 271.5 moveto
-12 f0
-( So Red the Rose ) show
-298.1 285.3 moveto
-12 f2
-(UBL Card: ) show
-355.4 285.3 moveto
-12 f0
-(1259) show
-379.4 285.3 moveto
-12 f0
-( ) show
-18.1 258.8 moveto
-3.3 3.3 c fill
-31.5 250.7 moveto
-12 f1
-(Armageddon Dildos) show
-134.5 250.7 moveto
-12 f0
-( ) show
-31.5 237.4 moveto
-12 f2
-(1995:) show
-59.4 237.4 moveto
-12 f0
-( Lost ) show
-305.3 251.2 moveto
-12 f2
-(UBL Card: ) show
-362.6 251.2 moveto
-12 f0
-(2538) show
-386.6 251.2 moveto
-12 f0
-( ) show
-18.1 224.7 moveto
-3.3 3.3 c fill
-31.5 216.6 moveto
-12 f1
-(Ash, Daniel) show
-90.8 216.6 moveto
-12 f0
-( ) show
-31.5 203.3 moveto
-12 f2
-(1991:) show
-59.4 203.3 moveto
-12 f0
-( Coming Down ) show
-31.5 190 moveto
-12 f2
-(1992:) show
-59.4 190 moveto
-12 f0
-( Foolish Thing Desire ) show
-298.1 217.1 moveto
-12 f2
-(See also: ) show
-344.7 217.1 moveto
-12 f0
-(isvpc146.isv.uit.no) show
-435.7 217.1 moveto
-12 f0
-( ) show
-18.1 177.3 moveto
-3.3 3.3 c fill
-31.5 169.2 moveto
-12 f1
-(Archangel, Nathalie) show
-134.1 169.2 moveto
-12 f0
-( ) show
-31.5 155.9 moveto
-12 f2
-(1992:) show
-59.4 155.9 moveto
-12 f0
-( Owl ) show
-18.1 143.2 moveto
-3.3 3.3 c fill
-31.5 135.1 moveto
-12 f1
-(Art of Noise) show
-93.4 135.1 moveto
-12 f0
-( ) show
-31.5 121.8 moveto
-12 f2
-(1983:) show
-59.4 121.8 moveto
-12 f0
-( Who's Afraid of the Art of Noise? ) show
-31.5 108.5 moveto
-12 f2
-(1983:) show
-59.4 108.5 moveto
-12 f0
-( The Art of Noise Have Closed Up ) show
-31.5 95.2 moveto
-12 f2
-(1983:) show
-59.4 95.2 moveto
-12 f0
-( Beatbox ) show
-31.5 81.9 moveto
-12 f2
-(1983:) show
-59.4 81.9 moveto
-12 f0
-( Daft ) show
-298.1 135.6 moveto
-12 f2
-(UBL Card: ) show
-355.4 135.6 moveto
-12 f0
-(1918) show
-379.4 135.6 moveto
-12 f0
-( ) show
-298.1 122.3 moveto
-12 f2
-(See also: ) show
-344.7 122.3 moveto
-12 f0
-(rt66.com) show
-387.6 122.3 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 3 3
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-31.5 709.2 moveto
-12 f2
-(1984:) show
-59.4 709.2 moveto
-12 f0
-( Edited ) show
-96.7 709.2 moveto
-12 f2
-(\(picture disc\)) show
-161 709.2 moveto
-12 f0
-( ) show
-18.1 696.5 moveto
-3.3 3.3 c fill
-31.5 688.4 moveto
-12 f1
-(Attrition) show
-76.8 688.4 moveto
-12 f0
-( ) show
-31.5 675.1 moveto
-12 f2
-(1985:) show
-59.4 675.1 moveto
-12 f0
-( Smiling, at the Hypogonder Club ) show
-225 675.1 moveto
-12 f2
-(\(comp\)) show
-258.9 675.1 moveto
-12 f0
-( ) show
-298.1 688.9 moveto
-12 f2
-(UBL Card: ) show
-355.4 688.9 moveto
-12 f0
-(4232) show
-379.4 688.9 moveto
-12 f0
-( ) show
-298.1 675.6 moveto
-12 f2
-(See also: ) show
-344.7 675.6 moveto
-12 f0
-(www.projekt.com) show
-431.3 675.6 moveto
-12 f0
-( ) show
-18.1 662.4 moveto
-3.3 3.3 c fill
-31.5 654.3 moveto
-12 f1
-(AUTECHRe) show
-96.8 654.3 moveto
-12 f0
-( ) show
-31.5 641 moveto
-12 f2
-(1994:) show
-59.4 641 moveto
-12 f0
-( INCUNABULA ) show
-31.5 627.7 moveto
-12 f2
-(1994:) show
-59.4 627.7 moveto
-12 f0
-( BASSCAD,EP ) show
-137.7 627.7 moveto
-12 f2
-(\(EP\)) show
-160.3 627.7 moveto
-12 f0
-( ) show
-31.5 614.4 moveto
-12 f2
-(1994:) show
-59.4 614.4 moveto
-12 f0
-( Amber ) show
-31.5 601.1 moveto
-12 f2
-(1995:) show
-59.4 601.1 moveto
-12 f0
-( Garbage ) show
-18.1 588.4 moveto
-3.3 3.3 c fill
-31.5 580.3 moveto
-12 f1
-(B52's) show
-60.1 580.3 moveto
-12 f0
-( ) show
-31.5 567 moveto
-12 f2
-(1979:) show
-59.4 567 moveto
-12 f0
-( B52's ) show
-31.5 553.7 moveto
-12 f2
-(1980:) show
-59.4 553.7 moveto
-12 f0
-( Wild Planet ) show
-31.5 540.4 moveto
-12 f2
-(1982:) show
-59.4 540.4 moveto
-12 f0
-( Mesopotamia ) show
-31.5 527.1 moveto
-12 f2
-(1983:) show
-59.4 527.1 moveto
-12 f0
-( Whammy! ) show
-31.5 513.8 moveto
-12 f2
-(1981:) show
-59.4 513.8 moveto
-12 f0
-( Party Mix ) show
-305.7 580.8 moveto
-12 f2
-(UBL Card: ) show
-363 580.8 moveto
-12 f0
-(2268) show
-387 580.8 moveto
-12 f0
-( ) show
-18.1 501.1 moveto
-3.3 3.3 c fill
-31.5 493 moveto
-12 f1
-(Babes in Toyland) show
-120.8 493 moveto
-12 f0
-( ) show
-31.5 479.7 moveto
-12 f2
-(1989:) show
-59.4 479.7 moveto
-12 f0
-( Spanking Machine ) show
-31.5 466.4 moveto
-12 f2
-(1991:) show
-59.4 466.4 moveto
-12 f0
-( To Mother ) show
-31.5 453.1 moveto
-12 f2
-(1992:) show
-59.4 453.1 moveto
-12 f0
-( Fontanelle ) show
-31.5 439.8 moveto
-12 f2
-(1993:) show
-59.4 439.8 moveto
-12 f0
-( Pain Killers ) show
-31.5 426.5 moveto
-12 f2
-(1995:) show
-59.4 426.5 moveto
-12 f0
-( Nemesisters ) show
-302.9 493.5 moveto
-12 f2
-(UBL Card: ) show
-360.2 493.5 moveto
-12 f0
-(3190) show
-384.2 493.5 moveto
-12 f0
-( ) show
-18.1 413.8 moveto
-3.3 3.3 c fill
-31.5 405.7 moveto
-12 f1
-(Battery) show
-70.1 405.7 moveto
-12 f0
-( ) show
-31.5 392.4 moveto
-12 f2
-(1992:) show
-59.4 392.4 moveto
-12 f0
-( Meat Market ) show
-127.7 392.4 moveto
-12 f2
-(\(EP\)) show
-150.3 392.4 moveto
-12 f0
-( ) show
-31.5 379.1 moveto
-12 f2
-(1993:) show
-59.4 379.1 moveto
-12 f0
-( Mutate ) show
-31.5 365.8 moveto
-12 f2
-(1994:) show
-59.4 365.8 moveto
-12 f0
-( Lillith 3.2 ) show
-113.4 365.8 moveto
-12 f2
-(\(EP\)) show
-136 365.8 moveto
-12 f0
-( ) show
-31.5 352.5 moveto
-12 f2
-(1995:) show
-59.4 352.5 moveto
-12 f0
-( nv ) show
-18.1 339.8 moveto
-3.3 3.3 c fill
-31.5 331.7 moveto
-12 f1
-(Bauhaus) show
-76.1 331.7 moveto
-12 f0
-( ) show
-31.5 318.4 moveto
-12 f2
-(1979:) show
-59.4 318.4 moveto
-12 f0
-( Bela Lugosi's Dead ) show
-160.7 318.4 moveto
-12 f2
-(\(EP\)) show
-183.3 318.4 moveto
-12 f0
-( ) show
-31.5 305.1 moveto
-12 f2
-(1981:) show
-59.4 305.1 moveto
-12 f0
-( In the Flat Field ) show
-31.5 291.8 moveto
-12 f2
-(1981:) show
-59.4 291.8 moveto
-12 f0
-( Mask ) show
-31.5 278.5 moveto
-12 f2
-(1981:) show
-59.4 278.5 moveto
-12 f0
-( Press the Eject and Give Me the Tape ) show
-246.3 278.5 moveto
-12 f2
-(\(live\)) show
-271.6 278.5 moveto
-12 f0
-( ) show
-31.5 265.2 moveto
-12 f2
-(1983:) show
-59.4 265.2 moveto
-12 f0
-( Burning from the Inside ) show
-31.5 251.9 moveto
-12 f2
-(1979-1984:) show
-87.4 251.9 moveto
-12 f0
-( 1979-1984 ) show
-145.3 251.9 moveto
-12 f2
-(\(comp\)) show
-179.2 251.9 moveto
-12 f0
-( ) show
-31.5 238.6 moveto
-12 f2
-(1985:) show
-59.4 238.6 moveto
-12 f0
-( The Sky's Gone Out ) show
-31.5 225.3 moveto
-12 f2
-(1984:) show
-59.4 225.3 moveto
-12 f0
-( The Last Temptation ) show
-166 225.3 moveto
-12 f2
-(\(live boot\)) show
-215.6 225.3 moveto
-12 f0
-( ) show
-31.5 212 moveto
-12 f2
-(1984:) show
-59.4 212 moveto
-12 f0
-( Rest In Peace: The Final Concert ) show
-224.3 212 moveto
-12 f2
-(\(double live\)) show
-285.2 212 moveto
-12 f0
-( ) show
-31.5 198.7 moveto
-12 f2
-(1996:) show
-59.4 198.7 moveto
-12 f0
-( The Passion of Covers: A Tribute ) show
-227 198.7 moveto
-12 f2
-(\(various\)) show
-270.9 198.7 moveto
-12 f0
-( ) show
-298.1 332.2 moveto
-12 f2
-(UBL Card: ) show
-355.4 332.2 moveto
-12 f0
-(1235) show
-379.4 332.2 moveto
-12 f0
-( ) show
-298.1 318.9 moveto
-12 f2
-(See also: ) show
-344.7 318.9 moveto
-12 f0
-(gothic.acs.csulb.edu) show
-441.6 318.9 moveto
-12 f0
-( ) show
-298.1 305.6 moveto
-12 f2
-(See also: ) show
-344.7 305.6 moveto
-12 f0
-(isvpc146.isv.uit.no) show
-435.7 305.6 moveto
-12 f0
-( ) show
-18.1 186 moveto
-3.3 3.3 c fill
-31.5 177.9 moveto
-12 f1
-(Belly) show
-57.5 177.9 moveto
-12 f0
-( ) show
-31.5 164.6 moveto
-12 f2
-(1993:) show
-59.4 164.6 moveto
-12 f0
-( Star ) show
-31.5 151.3 moveto
-12 f2
-(1993:) show
-59.4 151.3 moveto
-12 f0
-( Moon ) show
-94 151.3 moveto
-12 f2
-(\(EP\)) show
-116.6 151.3 moveto
-12 f0
-( ) show
-31.5 138 moveto
-12 f2
-(1995:) show
-59.4 138 moveto
-12 f0
-( Baby Silvertooth ) show
-147 138 moveto
-12 f2
-(\(EP\)) show
-169.6 138 moveto
-12 f0
-( ) show
-31.5 124.7 moveto
-12 f2
-(1995:) show
-59.4 124.7 moveto
-12 f0
-( King ) show
-298.1 178.4 moveto
-12 f2
-(UBL Card: ) show
-355.4 178.4 moveto
-12 f0
-(1360) show
-379.4 178.4 moveto
-12 f0
-( ) show
-298.1 165.1 moveto
-12 f2
-(See also: ) show
-344.7 165.1 moveto
-12 f0
-(isvpc146.isv.uit.no) show
-435.7 165.1 moveto
-12 f0
-( ) show
-18.1 112 moveto
-3.3 3.3 c fill
-31.5 103.9 moveto
-12 f1
-(Berlin) show
-63.5 103.9 moveto
-12 f0
-( ) show
-31.5 90.6 moveto
-12 f2
-(1981:) show
-59.4 90.6 moveto
-12 f0
-( Love Life ) show
-31.5 77.3 moveto
-12 f2
-(1981:) show
-59.4 77.3 moveto
-12 f0
-( Dancing in Berlin / Lost in the Crowd ) show
-247.7 77.3 moveto
-12 f2
-(\(single\)) show
-284.3 77.3 moveto
-12 f0
-( ) show
-298.1 104.4 moveto
-12 f2
-(UBL Card: ) show
-355.4 104.4 moveto
-12 f0
-(4156) show
-379.4 104.4 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 4 4
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-31.5 709.2 moveto
-12 f2
-(1982:) show
-59.4 709.2 moveto
-12 f0
-( Pleasure Victim ) show
-31.5 695.9 moveto
-12 f2
-(1986:) show
-59.4 695.9 moveto
-12 f0
-( Count 3 and Pray ) show
-18.1 683.2 moveto
-3.3 3.3 c fill
-31.5 675.1 moveto
-12 f1
-(Big Black) show
-81.1 675.1 moveto
-12 f0
-( ) show
-31.5 661.8 moveto
-12 f2
-(1983:) show
-59.4 661.8 moveto
-12 f0
-( The Hammer Party ) show
-31.5 648.5 moveto
-12 f2
-(1987:) show
-59.4 648.5 moveto
-12 f0
-( Songs About Fucking ) show
-31.5 635.2 moveto
-12 f2
-(1992:) show
-59.4 635.2 moveto
-12 f0
-( The Rich Man's Eight-Track Tape ) show
-231.3 635.2 moveto
-12 f2
-(\(comp\)) show
-265.2 635.2 moveto
-12 f0
-( ) show
-302.7 675.6 moveto
-12 f2
-(UBL Card: ) show
-360 675.6 moveto
-12 f0
-(2410) show
-384 675.6 moveto
-12 f0
-( ) show
-18.1 622.5 moveto
-3.3 3.3 c fill
-31.5 614.4 moveto
-12 f1
-(Big Hat) show
-71.1 614.4 moveto
-12 f0
-( ) show
-31.5 601.1 moveto
-12 f2
-(1993:) show
-59.4 601.1 moveto
-12 f0
-( Selena at my Window ) show
-298.1 614.9 moveto
-12 f2
-(UBL Card: ) show
-355.4 614.9 moveto
-12 f0
-(1217) show
-379.4 614.9 moveto
-12 f0
-( ) show
-298.1 601.6 moveto
-12 f2
-(See also: ) show
-344.7 601.6 moveto
-12 f0
-(www.cec.wustl.edu) show
-439 601.6 moveto
-12 f0
-( ) show
-18.1 588.4 moveto
-3.3 3.3 c fill
-31.5 580.3 moveto
-12 f1
-(Bigod 20) show
-76.5 580.3 moveto
-12 f0
-( ) show
-31.5 567 moveto
-12 f2
-(1990:) show
-59.4 567 moveto
-12 f0
-( The Bog ) show
-107 567 moveto
-12 f2
-(\(EP\)) show
-129.6 567 moveto
-12 f0
-( ) show
-31.5 553.7 moveto
-12 f2
-(1991:) show
-59.4 553.7 moveto
-12 f0
-( Carpe Diem ) show
-123.7 553.7 moveto
-12 f2
-(\(EP\)) show
-146.3 553.7 moveto
-12 f0
-( ) show
-18.1 541 moveto
-3.3 3.3 c fill
-31.5 532.9 moveto
-12 f1
-(Bikini Kill) show
-85.2 532.9 moveto
-12 f0
-( ) show
-31.5 519.6 moveto
-12 f2
-(1991-1992:) show
-87.4 519.6 moveto
-12 f0
-( The C.D. Version of the First Two) show
-31.5 506.3 moveto
-12 f0
-(Records ) show
-298.1 533.4 moveto
-12 f2
-(UBL Card: ) show
-355.4 533.4 moveto
-12 f0
-(4444) show
-379.4 533.4 moveto
-12 f0
-( ) show
-298.1 520.1 moveto
-12 f2
-(See also: ) show
-344.7 520.1 moveto
-12 f0
-(www.columbia.edu) show
-438.6 520.1 moveto
-12 f0
-( ) show
-18.1 493.6 moveto
-3.3 3.3 c fill
-31.5 485.5 moveto
-12 f1
-(Billy Nayer Show, The) show
-146.8 485.5 moveto
-12 f0
-( ) show
-31.5 472.2 moveto
-12 f2
-(1994:) show
-59.4 472.2 moveto
-12 f0
-( The Ketchup and Mustard Man ) show
-18.1 459.5 moveto
-3.3 3.3 c fill
-31.5 451.4 moveto
-12 f1
-(Billy and the Boingers) show
-145.1 451.4 moveto
-12 f0
-( ) show
-31.5 438.1 moveto
-12 f2
-(1987:) show
-59.4 438.1 moveto
-12 f0
-( U Stink but I Love You ) show
-179 438.1 moveto
-12 f2
-(\(flexydisk\)) show
-228.9 438.1 moveto
-12 f0
-( ) show
-18.1 425.4 moveto
-3.3 3.3 c fill
-31.5 417.3 moveto
-12 f1
-(Birdsongs of the Messozoic) show
-169.8 417.3 moveto
-12 f0
-( ) show
-31.5 404 moveto
-12 f2
-(1980-1987:) show
-87.4 404 moveto
-12 f0
-( The Fossil Record ) show
-31.5 390.7 moveto
-12 f2
-(1983:) show
-59.4 390.7 moveto
-12 f0
-( Sonic Geology ) show
-18.1 378 moveto
-3.3 3.3 c fill
-31.5 369.9 moveto
-12 f1
-(Birmingham 6) show
-105.8 369.9 moveto
-12 f0
-( ) show
-31.5 356.6 moveto
-12 f2
-(1995:) show
-59.4 356.6 moveto
-12 f0
-( Police State ) show
-304.5 370.4 moveto
-12 f2
-(UBL Card: ) show
-361.8 370.4 moveto
-12 f0
-(4348) show
-385.8 370.4 moveto
-12 f0
-( ) show
-18.1 343.9 moveto
-3.3 3.3 c fill
-31.5 335.8 moveto
-12 f1
-(Black Tape for a Blue Girl) show
-167.8 335.8 moveto
-12 f0
-( ) show
-31.5 322.5 moveto
-12 f2
-(1986:) show
-59.4 322.5 moveto
-12 f0
-( The Rope ) show
-31.5 309.2 moveto
-12 f2
-(1987:) show
-59.4 309.2 moveto
-12 f0
-( Mesmerized by the Sirens ) show
-31.5 295.9 moveto
-12 f2
-(1989:) show
-59.4 295.9 moveto
-12 f0
-( Ashes in the Brittle Air ) show
-31.5 282.6 moveto
-12 f2
-(1993:) show
-59.4 282.6 moveto
-12 f0
-( This Lush Garden Within ) show
-298.1 336.3 moveto
-12 f2
-(UBL Card: ) show
-355.4 336.3 moveto
-12 f0
-(1202) show
-379.4 336.3 moveto
-12 f0
-( ) show
-298.1 323 moveto
-12 f2
-(See also: ) show
-344.7 323 moveto
-12 f0
-(www.projekt.com) show
-431.3 323 moveto
-12 f0
-( ) show
-18.1 269.9 moveto
-3.3 3.3 c fill
-31.5 261.8 moveto
-12 f1
-(Bleeding Stone, The) show
-133.8 261.8 moveto
-12 f0
-( ) show
-31.5 248.5 moveto
-12 f2
-(1994:) show
-59.4 248.5 moveto
-12 f0
-( Silent Insanity ) show
-135 248.5 moveto
-12 f2
-(\(EP\)) show
-157.6 248.5 moveto
-12 f0
-( ) show
-18.1 235.8 moveto
-3.3 3.3 c fill
-31.5 227.7 moveto
-12 f1
-(Blondie) show
-70.8 227.7 moveto
-12 f0
-( ) show
-31.5 214.4 moveto
-12 f2
-(1980:) show
-59.4 214.4 moveto
-12 f0
-( Autoamerican ) show
-31.5 201.1 moveto
-12 f2
-(1983:) show
-59.4 201.1 moveto
-12 f0
-( Best of Blondie ) show
-306.4 228.2 moveto
-12 f2
-(UBL Card: ) show
-363.7 228.2 moveto
-12 f0
-(2070) show
-387.7 228.2 moveto
-12 f0
-( ) show
-18.1 188.4 moveto
-3.3 3.3 c fill
-31.5 180.3 moveto
-12 f1
-(Blotto) show
-62.8 180.3 moveto
-12 f0
-( ) show
-31.5 167 moveto
-12 f2
-(1994:) show
-59.4 167 moveto
-12 f0
-( Collected Works ) show
-18.1 154.3 moveto
-3.3 3.3 c fill
-31.5 146.2 moveto
-12 f1
-(Body Count) show
-93.1 146.2 moveto
-12 f0
-( ) show
-31.5 132.9 moveto
-12 f2
-(1992:) show
-59.4 132.9 moveto
-12 f0
-( Body Count ) show
-298.1 146.7 moveto
-12 f2
-(UBL Card: ) show
-355.4 146.7 moveto
-12 f0
-(1277) show
-379.4 146.7 moveto
-12 f0
-( ) show
-18.1 120.2 moveto
-3.3 3.3 c fill
-31.5 112.1 moveto
-12 f1
-(Bowie, David) show
-99.5 112.1 moveto
-12 f0
-( ) show
-31.5 98.8 moveto
-12 f2
-(1995:) show
-59.4 98.8 moveto
-12 f0
-( Outside ) show
-298.1 112.6 moveto
-12 f2
-(UBL Card: ) show
-355.4 112.6 moveto
-12 f0
-(1098) show
-379.4 112.6 moveto
-12 f0
-( ) show
-18.1 86.1 moveto
-3.3 3.3 c fill
-31.5 78 moveto
-12 f1
-(Bow Wow Wow) show
-113.4 78 moveto
-12 f0
-( ) show
-300.6 78.5 moveto
-12 f2
-(UBL Card: ) show
-357.9 78.5 moveto
-12 f0
-(2301) show
-381.9 78.5 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 5 5
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-31.5 709.2 moveto
-12 f2
-(1982:) show
-59.4 709.2 moveto
-12 f0
-( See Jungle ) show
-31.5 695.9 moveto
-12 f2
-(1981-1982:) show
-87.4 695.9 moveto
-12 f0
-( I Want Candy ) show
-160.7 695.9 moveto
-12 f2
-(\(comp\)) show
-194.6 695.9 moveto
-12 f0
-( ) show
-31.5 682.6 moveto
-12 f2
-(1983:) show
-59.4 682.6 moveto
-12 f0
-( When the Going Gets Tough ) show
-31.5 669.3 moveto
-12 f2
-(1981-1983:) show
-87.4 669.3 moveto
-12 f0
-( Girl Bites Dog ) show
-164 669.3 moveto
-12 f2
-(\(comp\)) show
-197.9 669.3 moveto
-12 f0
-( ) show
-18.1 656.6 moveto
-3.3 3.3 c fill
-31.5 648.5 moveto
-12 f1
-(Breeders, The) show
-103.4 648.5 moveto
-12 f0
-( ) show
-31.5 635.2 moveto
-12 f2
-(1993:) show
-59.4 635.2 moveto
-12 f0
-( Last Splash ) show
-298.1 649 moveto
-12 f2
-(UBL Card: ) show
-355.4 649 moveto
-12 f0
-(1242) show
-379.4 649 moveto
-12 f0
-( ) show
-298.1 635.7 moveto
-12 f2
-(See also: ) show
-344.7 635.7 moveto
-12 f0
-(isvpc146.isv.uit.no) show
-435.7 635.7 moveto
-12 f0
-( ) show
-18.1 622.5 moveto
-3.3 3.3 c fill
-31.5 614.4 moveto
-12 f1
-(Br\374cken, Claudia) show
-122.1 614.4 moveto
-12 f0
-( ) show
-31.5 601.1 moveto
-12 f2
-(1991:) show
-59.4 601.1 moveto
-12 f0
-( Love and a Million Other Things ) show
-298.1 614.9 moveto
-12 f2
-(UBL Card: ) show
-355.4 614.9 moveto
-12 f0
-(4636) show
-379.4 614.9 moveto
-12 f0
-( ) show
-298.1 601.6 moveto
-12 f2
-(See also: ) show
-344.7 601.6 moveto
-12 f0
-(rt66.com) show
-387.6 601.6 moveto
-12 f0
-( ) show
-298.1 588.3 moveto
-12 f2
-(See also: ) show
-344.7 588.3 moveto
-12 f0
-(hcl.chass.ncsu.edu) show
-433.6 588.3 moveto
-12 f0
-( ) show
-18.1 575.6 moveto
-3.3 3.3 c fill
-31.5 567.5 moveto
-12 f1
-(Buggles, The) show
-97.5 567.5 moveto
-12 f0
-( ) show
-31.5 554.2 moveto
-12 f2
-(1979:) show
-59.4 554.2 moveto
-12 f0
-( The Age of Plastic ) show
-31.5 540.9 moveto
-12 f2
-(1981:) show
-59.4 540.9 moveto
-12 f0
-( Adventures in Modern Recording ) show
-18.1 528.2 moveto
-3.3 3.3 c fill
-31.5 520.1 moveto
-12 f1
-(Bush, Kate) show
-88.1 520.1 moveto
-12 f0
-( ) show
-31.5 506.8 moveto
-12 f2
-(1977:) show
-59.4 506.8 moveto
-12 f0
-( The Kick Inside ) show
-31.5 493.5 moveto
-12 f2
-(1980:) show
-59.4 493.5 moveto
-12 f0
-( Never For Ever ) show
-31.5 480.2 moveto
-12 f2
-(1983:) show
-59.4 480.2 moveto
-12 f0
-( The Dreaming ) show
-31.5 466.9 moveto
-12 f2
-(1985:) show
-59.4 466.9 moveto
-12 f0
-( Hounds of Love ) show
-298.1 520.6 moveto
-12 f2
-(UBL Card: ) show
-355.4 520.6 moveto
-12 f0
-(1032) show
-379.4 520.6 moveto
-12 f0
-( ) show
-298.1 507.3 moveto
-12 f2
-(See also: ) show
-344.7 507.3 moveto
-12 f0
-(actor.cs.vt.edu) show
-414.3 507.3 moveto
-12 f0
-( ) show
-298.1 494 moveto
-12 f2
-(See also: ) show
-344.7 494 moveto
-12 f0
-(www.jrc.flinders.edu.au) show
-460.6 494 moveto
-12 f0
-( ) show
-298.1 480.7 moveto
-12 f2
-(See also: ) show
-344.7 480.7 moveto
-12 f0
-(holly.city.unisa.edu.au) show
-453.3 480.7 moveto
-12 f0
-( ) show
-18.1 454.2 moveto
-3.3 3.3 c fill
-31.5 446.1 moveto
-12 f1
-(Buzzcocks) show
-84.8 446.1 moveto
-12 f0
-( ) show
-31.5 432.8 moveto
-12 f2
-(1976-1979:) show
-87.4 432.8 moveto
-12 f0
-( Operators Manual ) show
-300.6 446.6 moveto
-12 f2
-(UBL Card: ) show
-357.9 446.6 moveto
-12 f0
-(1351) show
-381.9 446.6 moveto
-12 f0
-( ) show
-18.1 420.1 moveto
-3.3 3.3 c fill
-31.5 412 moveto
-12 f1
-(Cabaret Voltaire) show
-118.4 412 moveto
-12 f0
-( ) show
-31.5 398.7 moveto
-12 f2
-(1974-1976:) show
-87.4 398.7 moveto
-12 f0
-( 1974-1976 ) show
-145.3 398.7 moveto
-12 f2
-(\(comp\)) show
-179.2 398.7 moveto
-12 f0
-( ) show
-31.5 385.4 moveto
-12 f2
-(1978-1983:) show
-87.4 385.4 moveto
-12 f0
-( The Golden Moments of CV ) show
-231.3 385.4 moveto
-12 f2
-(\(comp\)) show
-265.2 385.4 moveto
-12 f0
-( ) show
-31.5 372.1 moveto
-12 f2
-(1978:) show
-59.4 372.1 moveto
-12 f0
-( Nag Nag Nag ) show
-131.3 372.1 moveto
-12 f2
-(\(EP\)) show
-153.9 372.1 moveto
-12 f0
-( ) show
-31.5 358.8 moveto
-12 f2
-(1979:) show
-59.4 358.8 moveto
-12 f0
-( Mix-Up ) show
-104 358.8 moveto
-12 f2
-(\(EP\)) show
-126.6 358.8 moveto
-12 f0
-( ) show
-31.5 345.5 moveto
-12 f2
-(1980:) show
-59.4 345.5 moveto
-12 f0
-( Red Mecca ) show
-31.5 332.2 moveto
-12 f2
-(1981:) show
-59.4 332.2 moveto
-12 f0
-( The Voice of America ) show
-31.5 318.9 moveto
-12 f2
-(1981:) show
-59.4 318.9 moveto
-12 f0
-( Johnny Yesno ) show
-133.7 318.9 moveto
-12 f2
-(\(soundtrack\)) show
-195 318.9 moveto
-12 f0
-( ) show
-31.5 305.6 moveto
-12 f2
-(1982:) show
-59.4 305.6 moveto
-12 f0
-( 2X45 ) show
-31.5 292.3 moveto
-12 f2
-(1982:) show
-59.4 292.3 moveto
-12 f0
-( Eight Crepescule Tracks ) show
-31.5 279 moveto
-12 f2
-(1983:) show
-59.4 279 moveto
-12 f0
-( The Crackdown ) show
-31.5 265.7 moveto
-12 f2
-(1984:) show
-59.4 265.7 moveto
-12 f0
-( Micro-Phonies ) show
-31.5 252.4 moveto
-12 f2
-(1985:) show
-59.4 252.4 moveto
-12 f0
-( I Want You ) show
-122 252.4 moveto
-12 f2
-(\(single\)) show
-158.6 252.4 moveto
-12 f0
-( ) show
-31.5 239.1 moveto
-12 f2
-(1985:) show
-59.4 239.1 moveto
-12 f0
-( Drinking Gasoline ) show
-31.5 225.8 moveto
-12 f2
-(1985:) show
-59.4 225.8 moveto
-12 f0
-( The Arm of the Lord ) show
-31.5 212.5 moveto
-12 f2
-(1985:) show
-59.4 212.5 moveto
-12 f0
-( The Convenant, the Sword, and the Arm of the) show
-31.5 199.2 moveto
-12 f0
-(Lord ) show
-31.5 185.9 moveto
-12 f2
-(1986:) show
-59.4 185.9 moveto
-12 f0
-( The Drain Train ) show
-31.5 172.6 moveto
-12 f2
-(1987:) show
-59.4 172.6 moveto
-12 f0
-( Code ) show
-31.5 159.3 moveto
-12 f2
-(1990:) show
-59.4 159.3 moveto
-12 f0
-( Listen Up ) show
-113 159.3 moveto
-12 f2
-(\(double comp\)) show
-182.6 159.3 moveto
-12 f0
-( ) show
-31.5 146 moveto
-12 f2
-(1991:) show
-59.4 146 moveto
-12 f0
-( Body and Soul ) show
-31.5 132.7 moveto
-12 f2
-(1991:) show
-59.4 132.7 moveto
-12 f0
-( Colors ) show
-31.5 119.4 moveto
-12 f2
-(1992:) show
-59.4 119.4 moveto
-12 f0
-( Plasticity ) show
-31.5 106.1 moveto
-12 f2
-(1992:) show
-59.4 106.1 moveto
-12 f0
-( Western Reworks ) show
-306.4 412.5 moveto
-12 f2
-(UBL Card: ) show
-363.7 412.5 moveto
-12 f0
-(2307) show
-387.7 412.5 moveto
-12 f0
-( ) show
-18.1 93.4 moveto
-3.3 3.3 c fill
-31.5 85.3 moveto
-12 f1
-(Cave, Nick) show
-87.4 85.3 moveto
-12 f0
-( ) show
-298.1 85.8 moveto
-12 f2
-(UBL Card: ) show
-355.4 85.8 moveto
-12 f0
-(1273) show
-379.4 85.8 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 6 6
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-31.5 709.2 moveto
-12 f2
-(1984:) show
-59.4 709.2 moveto
-12 f0
-( From Her to Eternity ) show
-31.5 695.9 moveto
-12 f2
-(1988:) show
-59.4 695.9 moveto
-12 f0
-( Tender Prey ) show
-18.1 683.2 moveto
-3.3 3.3 c fill
-31.5 675.1 moveto
-12 f1
-(Chemlab) show
-78.1 675.1 moveto
-12 f0
-( ) show
-31.5 661.8 moveto
-12 f2
-(1993:) show
-59.4 661.8 moveto
-12 f0
-( Burnout at the Hydrogen Bar ) show
-31.5 648.5 moveto
-12 f2
-(1994:) show
-59.4 648.5 moveto
-12 f0
-( Magnetic Field Remixes ) show
-183.3 648.5 moveto
-12 f2
-(\(EP\)) show
-205.9 648.5 moveto
-12 f0
-( ) show
-298.6 675.6 moveto
-12 f2
-(UBL Card: ) show
-355.9 675.6 moveto
-12 f0
-(3774) show
-379.9 675.6 moveto
-12 f0
-( ) show
-18.1 635.8 moveto
-3.3 3.3 c fill
-31.5 627.7 moveto
-12 f1
-(Children on Stun) show
-120.1 627.7 moveto
-12 f0
-( ) show
-31.5 614.4 moveto
-12 f2
-(1994:) show
-59.4 614.4 moveto
-12 f0
-( Tourniquets of Love's Desire ) show
-18.1 601.7 moveto
-3.3 3.3 c fill
-31.5 593.6 moveto
-12 f1
-(Christian Death) show
-113.8 593.6 moveto
-12 f0
-( ) show
-31.5 580.3 moveto
-12 f2
-(1982:) show
-59.4 580.3 moveto
-12 f0
-( Only Theatre of Pain ) show
-31.5 567 moveto
-12 f2
-(1988:) show
-59.4 567 moveto
-12 f0
-( Sex and Drugs and Jesus Christ ) show
-31.5 553.7 moveto
-12 f2
-(1989:) show
-59.4 553.7 moveto
-12 f0
-( All the Love All the Hate part Two: All the) show
-31.5 540.4 moveto
-12 f0
-(Hate ) show
-31.5 527.1 moveto
-12 f2
-(1994:) show
-59.4 527.1 moveto
-12 f0
-( Sexy Death God ) show
-298.1 594.1 moveto
-12 f2
-(UBL Card: ) show
-355.4 594.1 moveto
-12 f0
-(1218) show
-379.4 594.1 moveto
-12 f0
-( ) show
-298.1 581 moveto
-12 f2
-(See also:) show
-298.1 567.7 moveto
-12 f0
-(christian-death.acc.brad.ac.uk) show
-441.4 567.7 moveto
-12 f0
-( ) show
-18.1 514.4 moveto
-3.3 3.3 c fill
-31.5 506.3 moveto
-12 f1
-(Chris and Cosey) show
-116.1 506.3 moveto
-12 f0
-( ) show
-31.5 493 moveto
-12 f2
-(1989:) show
-59.4 493 moveto
-12 f0
-( Trust ) show
-18.1 480.3 moveto
-3.3 3.3 c fill
-31.5 472.2 moveto
-12 f1
-(Ciccone Youth) show
-107.1 472.2 moveto
-12 f0
-( ) show
-31.5 458.9 moveto
-12 f2
-(1988:) show
-59.4 458.9 moveto
-12 f0
-( The Whitey Album ) show
-298.1 472.7 moveto
-12 f2
-(UBL Card: ) show
-355.4 472.7 moveto
-12 f0
-(1087) show
-379.4 472.7 moveto
-12 f0
-( ) show
-18.1 446.2 moveto
-3.3 3.3 c fill
-31.5 438.1 moveto
-12 f1
-(ClockDVA) show
-87.4 438.1 moveto
-12 f0
-( ) show
-31.5 424.8 moveto
-12 f2
-(1981:) show
-59.4 424.8 moveto
-12 f0
-( Thirst ) show
-31.5 411.5 moveto
-12 f2
-(1988:) show
-59.4 411.5 moveto
-12 f0
-( The Hacker/The Act ) show
-302.2 438.6 moveto
-12 f2
-(UBL Card: ) show
-359.5 438.6 moveto
-12 f0
-(3999) show
-383.5 438.6 moveto
-12 f0
-( ) show
-18.1 398.8 moveto
-3.3 3.3 c fill
-31.5 390.7 moveto
-12 f1
-(Cocteau Twins) show
-107.8 390.7 moveto
-12 f0
-( ) show
-31.5 377.4 moveto
-12 f2
-(1982:) show
-59.4 377.4 moveto
-12 f0
-( Garlands ) show
-31.5 364.1 moveto
-12 f2
-(1983:) show
-59.4 364.1 moveto
-12 f0
-( Head over Heels ) show
-31.5 350.8 moveto
-12 f2
-(1984:) show
-59.4 350.8 moveto
-12 f0
-( The Spangle Maker ) show
-160 350.8 moveto
-12 f2
-(\(EP\)) show
-182.6 350.8 moveto
-12 f0
-( ) show
-31.5 337.5 moveto
-12 f2
-(1984:) show
-59.4 337.5 moveto
-12 f0
-( Treasure ) show
-31.5 324.2 moveto
-12 f2
-(1985:) show
-59.4 324.2 moveto
-12 f0
-( Aikea-Guinea ) show
-132.7 324.2 moveto
-12 f2
-(\(EP\)) show
-155.3 324.2 moveto
-12 f0
-( ) show
-31.5 310.9 moveto
-12 f2
-(1985:) show
-59.4 310.9 moveto
-12 f0
-( Echoes in a Shallow Bay ) show
-31.5 297.6 moveto
-12 f2
-(1985:) show
-59.4 297.6 moveto
-12 f0
-( Tiny Dynamine ) show
-141 297.6 moveto
-12 f2
-(\(EP\)) show
-163.6 297.6 moveto
-12 f0
-( ) show
-31.5 284.3 moveto
-12 f2
-(1982-1985:) show
-87.4 284.3 moveto
-12 f0
-( The Pink Opaque ) show
-298.1 391.2 moveto
-12 f2
-(UBL Card: ) show
-355.4 391.2 moveto
-12 f0
-(1074) show
-379.4 391.2 moveto
-12 f0
-( ) show
-298.1 377.9 moveto
-12 f2
-(See also: ) show
-344.7 377.9 moveto
-12 f0
-(garnet.berkeley.edu) show
-439.3 377.9 moveto
-12 f0
-( ) show
-298.1 364.6 moveto
-12 f2
-(See also: ) show
-344.7 364.6 moveto
-12 f0
-(isvpc146.isv.uit.no) show
-435.7 364.6 moveto
-12 f0
-( ) show
-18.1 271.6 moveto
-3.3 3.3 c fill
-31.5 263.5 moveto
-12 f1
-(Coil) show
-52.8 263.5 moveto
-12 f0
-( ) show
-31.5 250.2 moveto
-12 f2
-(1986?:) show
-65.4 250.2 moveto
-12 f0
-( The Angelic Conversation ) show
-198 250.2 moveto
-12 f2
-(\(soundtrack\)) show
-259.3 250.2 moveto
-12 f0
-( ) show
-31.5 236.9 moveto
-12 f2
-(1988:) show
-59.4 236.9 moveto
-12 f0
-( Gold is the Metal ) show
-31.5 223.6 moveto
-12 f2
-(1990:) show
-59.4 223.6 moveto
-12 f0
-( The Unreleased Themes for Hellraiser ) show
-249.3 223.6 moveto
-12 f2
-(\(EP\)) show
-271.9 223.6 moveto
-12 f0
-( ) show
-31.5 210.3 moveto
-12 f2
-(1990:) show
-59.4 210.3 moveto
-12 f0
-( Panic / Tainted Love ) show
-165.7 210.3 moveto
-12 f2
-(\(single\)) show
-202.3 210.3 moveto
-12 f0
-( ) show
-31.5 197 moveto
-12 f2
-(1991:) show
-59.4 197 moveto
-12 f0
-( Out of Light Cometh Darkness ) show
-31.5 183.7 moveto
-12 f2
-(1992:) show
-59.4 183.7 moveto
-12 f0
-( Snow ) show
-92.7 183.7 moveto
-12 f2
-(\(EP\)) show
-115.3 183.7 moveto
-12 f0
-( ) show
-305.2 264 moveto
-12 f2
-(UBL Card: ) show
-362.5 264 moveto
-12 f0
-(1388) show
-386.5 264 moveto
-12 f0
-( ) show
-18.1 171 moveto
-3.3 3.3 c fill
-31.5 162.9 moveto
-12 f1
-(Concrete Blonde) show
-117.1 162.9 moveto
-12 f0
-( ) show
-31.5 149.6 moveto
-12 f2
-(1986:) show
-59.4 149.6 moveto
-12 f0
-( Concrete Blonde ) show
-31.5 136.3 moveto
-12 f2
-(1989:) show
-59.4 136.3 moveto
-12 f0
-( Free ) show
-31.5 123 moveto
-12 f2
-(1990:) show
-59.4 123 moveto
-12 f0
-( Bloodletting ) show
-31.5 109.7 moveto
-12 f2
-(1993:) show
-59.4 109.7 moveto
-12 f0
-( Walking in London ) show
-159.3 109.7 moveto
-12 f2
-(\(single\)) show
-195.9 109.7 moveto
-12 f0
-( ) show
-31.5 96.4 moveto
-12 f2
-(1993:) show
-59.4 96.4 moveto
-12 f0
-( Mexican Moon ) show
-303.5 163.4 moveto
-12 f2
-(UBL Card: ) show
-360.8 163.4 moveto
-12 f0
-(1396) show
-384.8 163.4 moveto
-12 f0
-( ) show
-18.1 83.7 moveto
-3.3 3.3 c fill
-31.5 75.6 moveto
-12 f1
-(Cop Shoot Cop) show
-109.5 75.6 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 7 7
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-31.5 709.2 moveto
-12 f2
-(1993:) show
-59.4 709.2 moveto
-12 f0
-( Ask Questions Later ) show
-18.1 696.5 moveto
-3.3 3.3 c fill
-31.5 688.4 moveto
-12 f1
-(Course of Empire) show
-122.8 688.4 moveto
-12 f0
-( ) show
-31.5 675.1 moveto
-12 f2
-(1990:) show
-59.4 675.1 moveto
-12 f0
-( Course of Empire ) show
-31.5 661.8 moveto
-12 f2
-(1993:) show
-59.4 661.8 moveto
-12 f0
-( Infested! ) show
-108 661.8 moveto
-12 f2
-(\(EP\)) show
-130.6 661.8 moveto
-12 f0
-( ) show
-31.5 648.5 moveto
-12 f2
-(1994:) show
-59.4 648.5 moveto
-12 f0
-( Initiation ) show
-298.1 688.9 moveto
-12 f2
-(UBL Card: ) show
-355.4 688.9 moveto
-12 f0
-(2889) show
-379.4 688.9 moveto
-12 f0
-( ) show
-298.1 675.6 moveto
-12 f2
-(See also: ) show
-344.7 675.6 moveto
-12 f0
-(homepage.seas.upenn.edu) show
-469.6 675.6 moveto
-12 f0
-( ) show
-18.1 635.8 moveto
-3.3 3.3 c fill
-31.5 627.7 moveto
-12 f1
-(Cranes) show
-68.1 627.7 moveto
-12 f0
-( ) show
-31.5 614.4 moveto
-12 f2
-(1990:) show
-59.4 614.4 moveto
-12 f0
-( Inescapable ) show
-122 614.4 moveto
-12 f2
-(\(EP\)) show
-144.6 614.4 moveto
-12 f0
-( ) show
-31.5 601.1 moveto
-12 f2
-(1991:) show
-59.4 601.1 moveto
-12 f0
-( Wings of Joy ) show
-31.5 587.8 moveto
-12 f2
-(1992:) show
-59.4 587.8 moveto
-12 f0
-( Self-Non-Self ) show
-31.5 574.5 moveto
-12 f2
-(1993:) show
-59.4 574.5 moveto
-12 f0
-( Forever ) show
-31.5 561.2 moveto
-12 f2
-(1993:) show
-59.4 561.2 moveto
-12 f0
-( Jewel ) show
-92.7 561.2 moveto
-12 f2
-(\(EP\)) show
-115.3 561.2 moveto
-12 f0
-( ) show
-31.5 547.9 moveto
-12 f2
-(1994:) show
-59.4 547.9 moveto
-12 f0
-( Loved ) show
-31.5 534.6 moveto
-12 f2
-(1994:) show
-59.4 534.6 moveto
-12 f0
-( Shining Road ) show
-131 534.6 moveto
-12 f2
-(\(limited edition double EP\)) show
-261.9 534.6 moveto
-12 f0
-( ) show
-298.1 628.2 moveto
-12 f2
-(UBL Card: ) show
-355.4 628.2 moveto
-12 f0
-(2400) show
-379.4 628.2 moveto
-12 f0
-( ) show
-298.1 614.9 moveto
-12 f2
-(See also: ) show
-344.7 614.9 moveto
-12 f0
-(busop.cit.wayne.edu) show
-443 614.9 moveto
-12 f0
-( ) show
-18.1 521.9 moveto
-3.3 3.3 c fill
-31.5 513.8 moveto
-12 f1
-(Crash Worship) show
-110.5 513.8 moveto
-12 f0
-( ) show
-31.5 500.5 moveto
-12 f2
-(1992:) show
-59.4 500.5 moveto
-12 f0
-( ADRV ) show
-298.1 514.3 moveto
-12 f2
-(UBL Card: ) show
-355.4 514.3 moveto
-12 f0
-(1901) show
-379.4 514.3 moveto
-12 f0
-( ) show
-298.1 501 moveto
-12 f2
-(See also: ) show
-344.7 501 moveto
-12 f0
-(www.meer.net) show
-415.3 501 moveto
-12 f0
-( ) show
-298.1 487.7 moveto
-12 f2
-(See also: ) show
-344.7 487.7 moveto
-12 f0
-(www.tyrell.net) show
-416.7 487.7 moveto
-12 f0
-( ) show
-18.1 475 moveto
-3.3 3.3 c fill
-31.5 466.9 moveto
-12 f1
-(Creatures, The) show
-108.8 466.9 moveto
-12 f0
-( ) show
-31.5 453.6 moveto
-12 f2
-(1983:) show
-59.4 453.6 moveto
-12 f0
-( Feast ) show
-31.5 440.3 moveto
-12 f2
-(1990:) show
-59.4 440.3 moveto
-12 f0
-( Boomerang ) show
-31.5 427 moveto
-12 f2
-(1990:) show
-59.4 427 moveto
-12 f0
-( Fury Eyes ) show
-114.3 427 moveto
-12 f2
-(\(EP\)) show
-136.9 427 moveto
-12 f0
-( ) show
-31.5 413.7 moveto
-12 f2
-(1990:) show
-59.4 413.7 moveto
-12 f0
-( Standing There ) show
-139 413.7 moveto
-12 f2
-(\(single\)) show
-175.6 413.7 moveto
-12 f0
-( ) show
-301.8 467.4 moveto
-12 f2
-(UBL Card: ) show
-359.1 467.4 moveto
-12 f0
-(1216) show
-383.1 467.4 moveto
-12 f0
-( ) show
-18.1 401 moveto
-3.3 3.3 c fill
-31.5 392.9 moveto
-12 f1
-(Cure, The) show
-83.4 392.9 moveto
-12 f0
-( ) show
-31.5 379.6 moveto
-12 f2
-(1980:) show
-59.4 379.6 moveto
-12 f0
-( Boys Don't Cry ) show
-31.5 366.3 moveto
-12 f2
-(1980:) show
-59.4 366.3 moveto
-12 f0
-( Seventeen Seconds ) show
-31.5 353 moveto
-12 f2
-(1981:) show
-59.4 353 moveto
-12 f0
-( Faith ) show
-31.5 339.7 moveto
-12 f2
-(1982:) show
-59.4 339.7 moveto
-12 f0
-( Pornography ) show
-31.5 326.4 moveto
-12 f2
-(1982:) show
-59.4 326.4 moveto
-12 f0
-( The Walk ) show
-31.5 313.1 moveto
-12 f2
-(1982?:) show
-65.4 313.1 moveto
-12 f0
-( Looking for a Forest ) show
-170.3 313.1 moveto
-12 f2
-(\(live boot\)) show
-219.9 313.1 moveto
-12 f0
-( ) show
-31.5 299.8 moveto
-12 f2
-(1983:) show
-59.4 299.8 moveto
-12 f0
-( Japanese Whispers ) show
-31.5 286.5 moveto
-12 f2
-(1983:) show
-59.4 286.5 moveto
-12 f0
-( Lovecats ) show
-108.7 286.5 moveto
-12 f2
-(\(EP\)) show
-131.3 286.5 moveto
-12 f0
-( ) show
-31.5 273.2 moveto
-12 f2
-(1984:) show
-59.4 273.2 moveto
-12 f0
-( Concert ) show
-103.3 273.2 moveto
-12 f2
-(\(live\)) show
-128.6 273.2 moveto
-12 f0
-( ) show
-31.5 259.9 moveto
-12 f2
-(1984:) show
-59.4 259.9 moveto
-12 f0
-( The Top ) show
-31.5 246.6 moveto
-12 f2
-(1985:) show
-59.4 246.6 moveto
-12 f0
-( The Head on the Door ) show
-31.5 233.3 moveto
-12 f2
-(1987:) show
-59.4 233.3 moveto
-12 f0
-( Staring at the Sea ) show
-149.7 233.3 moveto
-12 f2
-(\(comp\)) show
-183.6 233.3 moveto
-12 f0
-( ) show
-31.5 220 moveto
-12 f2
-(1988:) show
-59.4 220 moveto
-12 f0
-( Kiss Me Kiss Me Kiss Me ) show
-31.5 206.7 moveto
-12 f2
-(1989:) show
-59.4 206.7 moveto
-12 f0
-( Disintegration ) show
-31.5 193.4 moveto
-12 f2
-(1989:) show
-59.4 193.4 moveto
-12 f0
-( Fascination Street ) show
-151.7 193.4 moveto
-12 f2
-(\(single\)) show
-188.3 193.4 moveto
-12 f0
-( ) show
-31.5 180.1 moveto
-12 f2
-(1990:) show
-59.4 180.1 moveto
-12 f0
-( Never Enough ) show
-135 180.1 moveto
-12 f2
-(\(single\)) show
-171.6 180.1 moveto
-12 f0
-( ) show
-31.5 166.8 moveto
-12 f2
-(1995?:) show
-65.4 166.8 moveto
-12 f0
-( Give Me the Cure: 18 DC Bands ) show
-228.7 166.8 moveto
-12 f2
-(\(various\)) show
-272.6 166.8 moveto
-12 f0
-( ) show
-298.1 393.4 moveto
-12 f2
-(UBL Card: ) show
-355.4 393.4 moveto
-12 f0
-(1159) show
-379.4 393.4 moveto
-12 f0
-( ) show
-298.1 380.1 moveto
-12 f2
-(See also: ) show
-344.7 380.1 moveto
-12 f0
-(www.acpub.duke.edu) show
-449 380.1 moveto
-12 f0
-( ) show
-298.1 366.8 moveto
-12 f2
-(See also: ) show
-344.7 366.8 moveto
-12 f0
-(pathfinder.com) show
-417.6 366.8 moveto
-12 f0
-( ) show
-18.1 154.1 moveto
-3.3 3.3 c fill
-31.5 146 moveto
-12 f1
-(Current 93) show
-88.4 146 moveto
-12 f0
-( ) show
-31.5 132.7 moveto
-12 f2
-(1986-1991:) show
-87.4 132.7 moveto
-12 f0
-( Island ) show
-300.6 146.5 moveto
-12 f2
-(UBL Card: ) show
-357.9 146.5 moveto
-12 f0
-(3465) show
-381.9 146.5 moveto
-12 f0
-( ) show
-18.1 120 moveto
-3.3 3.3 c fill
-31.5 111.9 moveto
-12 f1
-(Curve) show
-63.4 111.9 moveto
-12 f0
-( ) show
-31.5 98.6 moveto
-12 f2
-(1991:) show
-59.4 98.6 moveto
-12 f0
-( Frozen ) show
-98.7 98.6 moveto
-12 f2
-(\(EP\)) show
-121.3 98.6 moveto
-12 f0
-( ) show
-31.5 85.3 moveto
-12 f2
-(1991:) show
-59.4 85.3 moveto
-12 f0
-( Cherry ) show
-98.7 85.3 moveto
-12 f2
-(\(EP\)) show
-121.3 85.3 moveto
-12 f0
-( ) show
-298.1 112.4 moveto
-12 f2
-(UBL Card: ) show
-355.4 112.4 moveto
-12 f0
-(1355) show
-379.4 112.4 moveto
-12 f0
-( ) show
-298.1 99.1 moveto
-12 f2
-(See also: ) show
-344.7 99.1 moveto
-12 f0
-(quark.stack.urc.tue.nl) show
-448 99.1 moveto
-12 f0
-( ) show
-298.1 85.8 moveto
-12 f2
-(See also: ) show
-344.7 85.8 moveto
-12 f0
-(blade.stack.urc.tue.nl) show
-446.6 85.8 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 8 8
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-31.5 709.2 moveto
-12 f2
-(1992:) show
-59.4 709.2 moveto
-12 f0
-( Doppelganger ) show
-31.5 695.9 moveto
-12 f2
-(1993:) show
-59.4 695.9 moveto
-12 f0
-( Cuckoo ) show
-18.1 683.2 moveto
-3.3 3.3 c fill
-31.5 675.1 moveto
-12 f1
-(Cyber-Tec) show
-86.1 675.1 moveto
-12 f0
-( ) show
-31.5 661.8 moveto
-12 f2
-(1995:) show
-59.4 661.8 moveto
-12 f0
-( Cyber-Tec ) show
-18.1 649.1 moveto
-3.3 3.3 c fill
-31.5 641 moveto
-12 f1
-(Daisy Chainsaw) show
-113.8 641 moveto
-12 f0
-( ) show
-31.5 627.7 moveto
-12 f2
-(1992:) show
-59.4 627.7 moveto
-12 f0
-( Hope All Your Dreams Come True ) show
-235 627.7 moveto
-12 f2
-(\(single\)) show
-271.6 627.7 moveto
-12 f0
-( ) show
-31.5 614.4 moveto
-12 f2
-(1992:) show
-59.4 614.4 moveto
-12 f0
-( Love Sick Pleasure ) show
-158 614.4 moveto
-12 f2
-(\(EP\)) show
-180.6 614.4 moveto
-12 f0
-( ) show
-31.5 601.1 moveto
-12 f2
-(1992:) show
-59.4 601.1 moveto
-12 f0
-( Eleventeen ) show
-31.5 587.8 moveto
-12 f2
-(1994:) show
-59.4 587.8 moveto
-12 f0
-( For They Know Not What They Do ) show
-18.1 575.1 moveto
-3.3 3.3 c fill
-31.5 567 moveto
-12 f1
-(Dance or Die) show
-98.1 567 moveto
-12 f0
-( ) show
-31.5 553.7 moveto
-12 f2
-(1993:) show
-59.4 553.7 moveto
-12 f0
-( Psychoburbia ) show
-18.1 541 moveto
-3.3 3.3 c fill
-31.5 532.9 moveto
-12 f1
-(Danse Society, The) show
-128.4 532.9 moveto
-12 f0
-( ) show
-31.5 519.6 moveto
-12 f2
-(1984:) show
-59.4 519.6 moveto
-12 f0
-( Heaven is Waiting ) show
-31.5 506.3 moveto
-12 f2
-(1986:) show
-59.4 506.3 moveto
-12 f0
-( Looking Through ) show
-18.1 493.6 moveto
-3.3 3.3 c fill
-31.5 485.5 moveto
-12 f1
-(Das Ich) show
-70.5 485.5 moveto
-12 f0
-( ) show
-31.5 472.2 moveto
-12 f2
-(1990:) show
-59.4 472.2 moveto
-12 f0
-( Satanische Verse ) show
-299.9 486 moveto
-12 f2
-(UBL Card: ) show
-357.2 486 moveto
-12 f0
-(2337) show
-381.2 486 moveto
-12 f0
-( ) show
-18.1 459.5 moveto
-3.3 3.3 c fill
-31.5 451.4 moveto
-12 f1
-(Dax, Danielle) show
-100.1 451.4 moveto
-12 f0
-( ) show
-31.5 438.1 moveto
-12 f2
-(1986-1988:) show
-87.4 438.1 moveto
-12 f0
-( Dark Adapted Eye ) show
-182.7 438.1 moveto
-12 f2
-(\(comp +5\)) show
-233.7 438.1 moveto
-12 f0
-( ) show
-31.5 424.8 moveto
-12 f2
-(1988:) show
-59.4 424.8 moveto
-12 f0
-( Whistling for his Love ) show
-174.3 424.8 moveto
-12 f2
-(\(single\)) show
-210.9 424.8 moveto
-12 f0
-( ) show
-31.5 411.5 moveto
-12 f2
-(1988:) show
-59.4 411.5 moveto
-12 f0
-( Cat House ) show
-115.7 411.5 moveto
-12 f2
-(\(single\)) show
-152.3 411.5 moveto
-12 f0
-( ) show
-31.5 398.2 moveto
-12 f2
-(1990:) show
-59.4 398.2 moveto
-12 f0
-( Blast the Human Flower ) show
-31.5 384.9 moveto
-12 f2
-(1992:) show
-59.4 384.9 moveto
-12 f0
-( Pop-Eyes ) show
-31.5 371.6 moveto
-12 f2
-(1995:) show
-59.4 371.6 moveto
-12 f0
-( Timber Tongue ) show
-140.3 371.6 moveto
-12 f2
-(\(EP\)) show
-162.9 371.6 moveto
-12 f0
-( ) show
-300.6 451.9 moveto
-12 f2
-(UBL Card: ) show
-357.9 451.9 moveto
-12 f0
-(1746) show
-381.9 451.9 moveto
-12 f0
-( ) show
-18.1 358.9 moveto
-3.3 3.3 c fill
-31.5 350.8 moveto
-12 f1
-(Death in June) show
-102.8 350.8 moveto
-12 f0
-( ) show
-31.5 337.5 moveto
-12 f2
-(1992:) show
-59.4 337.5 moveto
-12 f0
-( But, What Ends When the Symbols Shatter? ) show
-18.1 324.8 moveto
-3.3 3.3 c fill
-31.5 316.7 moveto
-12 f1
-(Definition FX) show
-101.8 316.7 moveto
-12 f0
-( ) show
-31.5 303.4 moveto
-12 f2
-(1993:) show
-59.4 303.4 moveto
-12 f0
-( Something Inside ) show
-149.7 303.4 moveto
-12 f2
-(\(single\)) show
-186.3 303.4 moveto
-12 f0
-( ) show
-31.5 290.1 moveto
-12 f2
-(1993:) show
-59.4 290.1 moveto
-12 f0
-( Light Speed Collision ) show
-298.1 317.2 moveto
-12 f2
-(See also: ) show
-344.7 317.2 moveto
-12 f0
-(www.geko.com.au) show
-435 317.2 moveto
-12 f0
-( ) show
-18.1 277.4 moveto
-3.3 3.3 c fill
-31.5 269.3 moveto
-12 f1
-(Depeche Mode) show
-107.1 269.3 moveto
-12 f0
-( ) show
-31.5 256 moveto
-12 f2
-(1981:) show
-59.4 256 moveto
-12 f0
-( Speak & Spell ) show
-31.5 242.7 moveto
-12 f2
-(1981:) show
-59.4 242.7 moveto
-12 f0
-( Just Can't Get Enough / Any Second Now) show
-31.5 229.4 moveto
-12 f2
-(\(single\)) show
-68.1 229.4 moveto
-12 f0
-( ) show
-31.5 216.1 moveto
-12 f2
-(1982:) show
-59.4 216.1 moveto
-12 f0
-( A Broken Frame ) show
-31.5 202.8 moveto
-12 f2
-(1982:) show
-59.4 202.8 moveto
-12 f0
-( live singles ) show
-119.7 202.8 moveto
-12 f2
-(\(comp\)) show
-153.6 202.8 moveto
-12 f0
-( ) show
-31.5 189.5 moveto
-12 f2
-(1983:) show
-59.4 189.5 moveto
-12 f0
-( Construction Time Again ) show
-31.5 176.2 moveto
-12 f2
-(1984:) show
-59.4 176.2 moveto
-12 f0
-( People Are People ) show
-154.7 176.2 moveto
-12 f2
-(\(comp +2\)) show
-205.7 176.2 moveto
-12 f0
-( ) show
-31.5 162.9 moveto
-12 f2
-(1984:) show
-59.4 162.9 moveto
-12 f0
-( Some Great Reward ) show
-31.5 149.6 moveto
-12 f2
-(1985:) show
-59.4 149.6 moveto
-12 f0
-( Catching Up With Depeche Mode ) show
-229.3 149.6 moveto
-12 f2
-(\(comp +4\)) show
-280.3 149.6 moveto
-12 f0
-( ) show
-31.5 136.3 moveto
-12 f2
-(1985:) show
-59.4 136.3 moveto
-12 f0
-( It's Called a Heart / Fly on the Windscreen) show
-31.5 123 moveto
-12 f2
-(\(single\)) show
-68.1 123 moveto
-12 f0
-( ) show
-31.5 109.7 moveto
-12 f2
-(1986:) show
-59.4 109.7 moveto
-12 f0
-( Black Celebration ) show
-31.5 96.4 moveto
-12 f2
-(1986:) show
-59.4 96.4 moveto
-12 f0
-( Stripped ) show
-106 96.4 moveto
-12 f2
-(\(single\)) show
-142.6 96.4 moveto
-12 f0
-( ) show
-31.5 83.1 moveto
-12 f2
-(1986:) show
-59.4 83.1 moveto
-12 f0
-( A Question of Lust ) show
-157.7 83.1 moveto
-12 f2
-(\(single\)) show
-194.3 83.1 moveto
-12 f0
-( ) show
-298.1 269.8 moveto
-12 f2
-(UBL Card: ) show
-355.4 269.8 moveto
-12 f0
-(1041) show
-379.4 269.8 moveto
-12 f0
-( ) show
-298.1 256.5 moveto
-12 f2
-(See also: ) show
-344.7 256.5 moveto
-12 f0
-(www.cis.ufl.edu) show
-423.6 256.5 moveto
-12 f0
-( ) show
-298.1 243.2 moveto
-12 f2
-(See also: ) show
-344.7 243.2 moveto
-12 f0
-(www.coma.sbg.ac.at) show
-444.6 243.2 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 9 9
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-31.5 709.2 moveto
-12 f2
-(1989:) show
-59.4 709.2 moveto
-12 f0
-( 101 ) show
-83.4 709.2 moveto
-12 f2
-(\(double live\)) show
-144.3 709.2 moveto
-12 f0
-( ) show
-31.5 695.9 moveto
-12 f2
-(1987:) show
-59.4 695.9 moveto
-12 f0
-( Music for the Masses ) show
-31.5 682.6 moveto
-12 f2
-(1987:) show
-59.4 682.6 moveto
-12 f0
-( Never Let Me Down ) show
-165 682.6 moveto
-12 f2
-(\(single\)) show
-201.6 682.6 moveto
-12 f0
-( ) show
-31.5 669.3 moveto
-12 f2
-(1990:) show
-59.4 669.3 moveto
-12 f0
-( Personal Jesus ) show
-135 669.3 moveto
-12 f2
-(\(single\)) show
-171.6 669.3 moveto
-12 f0
-( ) show
-31.5 656 moveto
-12 f2
-(199?:) show
-59.4 656 moveto
-12 f0
-( I Sometimes Wish I Was Famous: A Swedish) show
-31.5 642.7 moveto
-12 f0
-(Tribute ) show
-69.8 642.7 moveto
-12 f2
-(\(various\)) show
-113.7 642.7 moveto
-12 f0
-( ) show
-18.1 630 moveto
-3.3 3.3 c fill
-31.5 621.9 moveto
-12 f1
-(Dessau) show
-67.5 621.9 moveto
-12 f0
-( ) show
-31.5 608.6 moveto
-12 f2
-(1995:) show
-59.4 608.6 moveto
-12 f0
-( Dessau ) show
-31.5 595.3 moveto
-12 f2
-(1995:) show
-59.4 595.3 moveto
-12 f0
-( Details Sketchy ) show
-18.1 582.6 moveto
-3.3 3.3 c fill
-31.5 574.5 moveto
-12 f1
-(Devo) show
-57.4 574.5 moveto
-12 f0
-( ) show
-31.5 561.2 moveto
-12 f2
-(1978:) show
-59.4 561.2 moveto
-12 f0
-( Q: Are We Not Men? A: We Are DEVO! ) show
-31.5 547.9 moveto
-12 f2
-(1979:) show
-59.4 547.9 moveto
-12 f0
-( Freedom of Choice ) show
-31.5 534.6 moveto
-12 f2
-(1977-1990:) show
-87.4 534.6 moveto
-12 f0
-( Greatest Hits ) show
-31.5 521.3 moveto
-12 f2
-(1978-1990:) show
-87.4 521.3 moveto
-12 f0
-( Greatest Misses ) show
-298.1 575 moveto
-12 f2
-(UBL Card: ) show
-355.4 575 moveto
-12 f0
-(1088) show
-379.4 575 moveto
-12 f0
-( ) show
-298.1 561.7 moveto
-12 f2
-(See also: ) show
-344.7 561.7 moveto
-12 f0
-(hartke.lib.ohio-state.edu) show
-461 561.7 moveto
-12 f0
-( ) show
-298.1 548.4 moveto
-12 f2
-(See also: ) show
-344.7 548.4 moveto
-12 f0
-(unsane.enc.org) show
-416.6 548.4 moveto
-12 f0
-( ) show
-298.1 535.1 moveto
-12 f2
-(See also: ) show
-344.7 535.1 moveto
-12 f0
-(rt66.com) show
-387.6 535.1 moveto
-12 f0
-( ) show
-18.1 508.6 moveto
-3.3 3.3 c fill
-31.5 500.5 moveto
-12 f1
-(Die Krupps) show
-91.1 500.5 moveto
-12 f0
-( ) show
-31.5 487.2 moveto
-12 f2
-(1995:) show
-59.4 487.2 moveto
-12 f0
-( Rings of Steel ) show
-18.1 474.5 moveto
-3.3 3.3 c fill
-31.5 466.4 moveto
-12 f1
-(Die Monster Die) show
-115.4 466.4 moveto
-12 f0
-( ) show
-31.5 453.1 moveto
-12 f2
-(1994:) show
-59.4 453.1 moveto
-12 f0
-( Withdrawl Method ) show
-18.1 440.4 moveto
-3.3 3.3 c fill
-31.5 432.3 moveto
-12 f1
-(Die Warzau) show
-93.1 432.3 moveto
-12 f0
-( ) show
-31.5 419 moveto
-12 f2
-(1991:) show
-59.4 419 moveto
-12 f0
-( Big Electric Metal Bass Face ) show
-31.5 405.7 moveto
-12 f2
-(1994:) show
-59.4 405.7 moveto
-12 f0
-( Engine ) show
-31.5 392.4 moveto
-12 f2
-(1994:) show
-59.4 392.4 moveto
-12 f0
-( allgoodgirls ) show
-122.7 392.4 moveto
-12 f2
-(\(EP\)) show
-145.3 392.4 moveto
-12 f0
-( ) show
-18.1 379.7 moveto
-3.3 3.3 c fill
-31.5 371.6 moveto
-12 f1
-(Disposable Heroes of Hiphoprisy) show
-199.8 371.6 moveto
-12 f0
-( ) show
-31.5 358.3 moveto
-12 f2
-(1992:) show
-59.4 358.3 moveto
-12 f0
-( Hypocrisy is the Greatest Luxury ) show
-18.1 345.6 moveto
-3.3 3.3 c fill
-31.5 337.5 moveto
-12 f1
-(Dolby, Thomas) show
-109.5 337.5 moveto
-12 f0
-( ) show
-31.5 324.2 moveto
-12 f2
-(1983:) show
-59.4 324.2 moveto
-12 f0
-( The Golden Age of Wireless ) show
-31.5 310.9 moveto
-12 f2
-(1983:) show
-59.4 310.9 moveto
-12 f0
-( The Golden Age of Wireless ) show
-203.3 310.9 moveto
-12 f2
-(\(2nd release: 2) show
-31.5 297.6 moveto
-12 f2
-(new\)) show
-54.8 297.6 moveto
-12 f0
-( ) show
-31.5 284.3 moveto
-12 f2
-(1984:) show
-59.4 284.3 moveto
-12 f0
-( The Flat Earth ) show
-298.1 338 moveto
-12 f2
-(UBL Card: ) show
-355.4 338 moveto
-12 f0
-(1961) show
-379.4 338 moveto
-12 f0
-( ) show
-298.1 324.7 moveto
-12 f2
-(See also: ) show
-344.7 324.7 moveto
-12 f0
-(kspace.com) show
-401 324.7 moveto
-12 f0
-( ) show
-298.1 311.4 moveto
-12 f2
-(See also: ) show
-344.7 311.4 moveto
-12 f0
-(rt66.com) show
-387.6 311.4 moveto
-12 f0
-( ) show
-18.1 271.6 moveto
-3.3 3.3 c fill
-31.5 263.5 moveto
-12 f1
-(Doubting Thomas) show
-123.8 263.5 moveto
-12 f0
-( ) show
-31.5 250.2 moveto
-12 f2
-(1991:) show
-59.4 250.2 moveto
-12 f0
-( Father Don't Cry ) show
-148 250.2 moveto
-12 f2
-(\(EP\)) show
-170.6 250.2 moveto
-12 f0
-( ) show
-31.5 236.9 moveto
-12 f2
-(1991:) show
-59.4 236.9 moveto
-12 f0
-( The Infidel ) show
-298.1 264 moveto
-12 f2
-(UBL Card: ) show
-355.4 264 moveto
-12 f0
-(1166) show
-379.4 264 moveto
-12 f0
-( ) show
-298.1 250.7 moveto
-12 f2
-(See also: ) show
-344.7 250.7 moveto
-12 f0
-(www.eecs.nwu.edu) show
-438.3 250.7 moveto
-12 f0
-( ) show
-18.1 224.2 moveto
-3.3 3.3 c fill
-31.5 216.1 moveto
-12 f1
-(Duran Duran) show
-101.1 216.1 moveto
-12 f0
-( ) show
-31.5 202.8 moveto
-12 f2
-(1981:) show
-59.4 202.8 moveto
-12 f0
-( Duran Duran ) show
-31.5 189.5 moveto
-12 f2
-(1982:) show
-59.4 189.5 moveto
-12 f0
-( Carnival ) show
-106.7 189.5 moveto
-12 f2
-(\(EP\)) show
-129.3 189.5 moveto
-12 f0
-( ) show
-31.5 176.2 moveto
-12 f2
-(1982:) show
-59.4 176.2 moveto
-12 f0
-( live ) show
-83.4 176.2 moveto
-12 f2
-(\(live boot\)) show
-133 176.2 moveto
-12 f0
-( ) show
-31.5 162.9 moveto
-12 f2
-(1982:) show
-59.4 162.9 moveto
-12 f0
-( Rio ) show
-31.5 149.6 moveto
-12 f2
-(1983:) show
-59.4 149.6 moveto
-12 f0
-( Union of the Snake / Secret Oktober ) show
-240 149.6 moveto
-12 f2
-(\(single\)) show
-276.6 149.6 moveto
-12 f0
-( ) show
-31.5 136.3 moveto
-12 f2
-(1983:) show
-59.4 136.3 moveto
-12 f0
-( The Wild Boys / Cracks in the Pavement) show
-31.5 123 moveto
-12 f2
-(\(single\)) show
-68.1 123 moveto
-12 f0
-( ) show
-31.5 109.7 moveto
-12 f2
-(1983:) show
-59.4 109.7 moveto
-12 f0
-( Seven and the Ragged Tiger ) show
-31.5 96.4 moveto
-12 f2
-(1987:) show
-59.4 96.4 moveto
-12 f0
-( Notorious ) show
-31.5 83.1 moveto
-12 f2
-(1981-1988:) show
-87.4 83.1 moveto
-12 f0
-( Decade ) show
-129.3 83.1 moveto
-12 f2
-(\(comp\)) show
-163.2 83.1 moveto
-12 f0
-( ) show
-300.6 216.6 moveto
-12 f2
-(UBL Card: ) show
-357.9 216.6 moveto
-12 f0
-(1259) show
-381.9 216.6 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 10 10
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-18.1 716.6 moveto
-3.3 3.3 c fill
-31.5 708.5 moveto
-12 f1
-(Durutti Column) show
-114.5 708.5 moveto
-12 f0
-( ) show
-31.5 695.2 moveto
-12 f2
-(1988:) show
-59.4 695.2 moveto
-12 f0
-( The Guitar and Other Machines ) show
-298.1 709 moveto
-12 f2
-(UBL Card: ) show
-355.4 709 moveto
-12 f0
-(4853) show
-379.4 709 moveto
-12 f0
-( ) show
-18.1 682.5 moveto
-3.3 3.3 c fill
-31.5 674.4 moveto
-12 f1
-(Ebn Ozn) show
-77.1 674.4 moveto
-12 f0
-( ) show
-31.5 661.1 moveto
-12 f2
-(1984:) show
-59.4 661.1 moveto
-12 f0
-( Feeling Cavalier ) show
-18.1 648.4 moveto
-3.3 3.3 c fill
-31.5 640.3 moveto
-12 f1
-(Elastica) show
-72.1 640.3 moveto
-12 f0
-( ) show
-31.5 627 moveto
-12 f2
-(1995:) show
-59.4 627 moveto
-12 f0
-( Elastica ) show
-18.1 614.3 moveto
-3.3 3.3 c fill
-31.5 606.2 moveto
-12 f1
-(Elastic Purejoy, The) show
-135.8 606.2 moveto
-12 f0
-( ) show
-31.5 592.9 moveto
-12 f2
-(1994:) show
-59.4 592.9 moveto
-12 f0
-( The Elastic Purejoy ) show
-298.1 606.7 moveto
-12 f2
-(See also: ) show
-344.7 606.7 moveto
-12 f0
-(http2.brunel.ac.uk) show
-431.7 606.7 moveto
-12 f0
-( ) show
-18.1 580.2 moveto
-3.3 3.3 c fill
-31.5 572.1 moveto
-12 f1
-(Electric Hellfire Club, The) show
-168.1 572.1 moveto
-12 f0
-( ) show
-31.5 558.8 moveto
-12 f2
-(1993:) show
-59.4 558.8 moveto
-12 f0
-( Burn, Baby, Burn ) show
-31.5 545.5 moveto
-12 f2
-(1995:) show
-59.4 545.5 moveto
-12 f0
-( Kiss the Goat ) show
-18.1 532.8 moveto
-3.3 3.3 c fill
-31.5 524.7 moveto
-12 f1
-(Elfman, Danny) show
-109.5 524.7 moveto
-12 f0
-( ) show
-31.5 511.4 moveto
-12 f2
-(1984:) show
-59.4 511.4 moveto
-12 f0
-( So-Lo ) show
-298.1 525.2 moveto
-12 f2
-(UBL Card: ) show
-355.4 525.2 moveto
-12 f0
-(1089) show
-379.4 525.2 moveto
-12 f0
-( ) show
-18.1 498.7 moveto
-3.3 3.3 c fill
-31.5 490.6 moveto
-12 f1
-(Emergency Broadcast Network) show
-192.1 490.6 moveto
-12 f0
-( ) show
-31.5 477.3 moveto
-12 f2
-(1995:) show
-59.4 477.3 moveto
-12 f0
-( Telecommunication Breakdown ) show
-18.1 464.6 moveto
-3.3 3.3 c fill
-31.5 456.5 moveto
-12 f1
-(Engorged with Blood) show
-140.1 456.5 moveto
-12 f0
-( ) show
-31.5 443.2 moveto
-12 f2
-(1993:) show
-59.4 443.2 moveto
-12 f0
-( Engorged with Blood ) show
-168.7 443.2 moveto
-12 f2
-(\(EP\)) show
-191.3 443.2 moveto
-12 f0
-( ) show
-18.1 430.5 moveto
-3.3 3.3 c fill
-31.5 422.4 moveto
-12 f1
-(Eno, Brian) show
-87.5 422.4 moveto
-12 f0
-( ) show
-31.5 409.1 moveto
-12 f2
-(1977:) show
-59.4 409.1 moveto
-12 f0
-( Before and After Science ) show
-298.1 422.9 moveto
-12 f2
-(UBL Card: ) show
-355.4 422.9 moveto
-12 f0
-(1064) show
-379.4 422.9 moveto
-12 f0
-( ) show
-298.1 409.6 moveto
-12 f2
-(See also: ) show
-344.7 409.6 moveto
-12 f0
-(www.nwu.edu) show
-414.6 409.6 moveto
-12 f0
-( ) show
-18.1 396.4 moveto
-3.3 3.3 c fill
-31.5 388.3 moveto
-12 f1
-(Eon) show
-52.1 388.3 moveto
-12 f0
-( ) show
-31.5 375 moveto
-12 f2
-(1991:) show
-59.4 375 moveto
-12 f0
-( Fear: the Mindkiller ) show
-162 375 moveto
-12 f2
-(\(EP\)) show
-184.6 375 moveto
-12 f0
-( ) show
-31.5 361.7 moveto
-12 f2
-(1992:) show
-59.4 361.7 moveto
-12 f0
-( Basket Case ) show
-124.3 361.7 moveto
-12 f2
-(\(EP\)) show
-146.9 361.7 moveto
-12 f0
-( ) show
-18.1 349 moveto
-3.3 3.3 c fill
-31.5 340.9 moveto
-12 f1
-(Erasure) show
-72.8 340.9 moveto
-12 f0
-( ) show
-31.5 327.6 moveto
-12 f2
-(1984-1986:) show
-87.4 327.6 moveto
-12 f0
-( various singles ) show
-31.5 314.3 moveto
-12 f2
-(1986:) show
-59.4 314.3 moveto
-12 f0
-( Wonderland ) show
-298.1 341.4 moveto
-12 f2
-(UBL Card: ) show
-355.4 341.4 moveto
-12 f0
-(1029) show
-379.4 341.4 moveto
-12 f0
-( ) show
-298.1 328.1 moveto
-12 f2
-(See also: ) show
-344.7 328.1 moveto
-12 f0
-(www.cec.wustl.edu) show
-439 328.1 moveto
-12 f0
-( ) show
-298.1 314.8 moveto
-12 f2
-(See also: ) show
-344.7 314.8 moveto
-12 f0
-(rt66.com) show
-387.6 314.8 moveto
-12 f0
-( ) show
-18.1 301.6 moveto
-3.3 3.3 c fill
-31.5 293.5 moveto
-12 f1
-(Estep, Maggie) show
-104.1 293.5 moveto
-12 f0
-( ) show
-31.5 280.2 moveto
-12 f2
-(1994:) show
-59.4 280.2 moveto
-12 f0
-( No More Mister Nice Girl ) show
-18.1 267.5 moveto
-3.3 3.3 c fill
-31.5 259.4 moveto
-12 f1
-(Ethyl Meatplow) show
-113.8 259.4 moveto
-12 f0
-( ) show
-31.5 246.1 moveto
-12 f2
-(1993:) show
-59.4 246.1 moveto
-12 f0
-( Happy Days Sweetheart ) show
-31.5 232.8 moveto
-12 f2
-(1993:) show
-59.4 232.8 moveto
-12 f0
-( Devil's Johnson ) show
-143 232.8 moveto
-12 f2
-(\(single\)) show
-179.6 232.8 moveto
-12 f0
-( ) show
-300.8 259.9 moveto
-12 f2
-(UBL Card: ) show
-358.1 259.9 moveto
-12 f0
-(5232) show
-382.1 259.9 moveto
-12 f0
-( ) show
-18.1 220.1 moveto
-3.3 3.3 c fill
-31.5 212 moveto
-12 f1
-(Eurythmics) show
-91.5 212 moveto
-12 f0
-( ) show
-31.5 198.7 moveto
-12 f2
-(1981:) show
-59.4 198.7 moveto
-12 f0
-( In the Garden ) show
-31.5 185.4 moveto
-12 f2
-(1982:) show
-59.4 185.4 moveto
-12 f0
-( Love is a Stranger ) show
-153 185.4 moveto
-12 f2
-(\(EP\)) show
-175.6 185.4 moveto
-12 f0
-( ) show
-31.5 172.1 moveto
-12 f2
-(1982:) show
-59.4 172.1 moveto
-12 f0
-( This is the House ) show
-149 172.1 moveto
-12 f2
-(\(live EP\)) show
-191.9 172.1 moveto
-12 f0
-( ) show
-31.5 158.8 moveto
-12 f2
-(1983:) show
-59.4 158.8 moveto
-12 f0
-( Sweet Dreams ) show
-31.5 145.5 moveto
-12 f2
-(1983:) show
-59.4 145.5 moveto
-12 f0
-( Touch ) show
-31.5 132.2 moveto
-12 f2
-(1984:) show
-59.4 132.2 moveto
-12 f0
-( 1984 \(For the Love of Big Brother\) ) show
-235.3 132.2 moveto
-12 f2
-(\(soundtrack\)) show
-296.6 132.2 moveto
-12 f0
-( ) show
-18.1 119.5 moveto
-3.3 3.3 c fill
-31.5 111.4 moveto
-12 f1
-(Executive Slacks) show
-117.1 111.4 moveto
-12 f0
-( ) show
-31.5 98.1 moveto
-12 f2
-(1986:) show
-59.4 98.1 moveto
-12 f0
-( Fire and Ice ) show
-18.1 85.4 moveto
-3.3 3.3 c fill
-31.5 77.3 moveto
-12 f1
-(Faith and the Muse) show
-131.1 77.3 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 11 11
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-31.5 709.2 moveto
-12 f2
-(1994:) show
-59.4 709.2 moveto
-12 f0
-( Elyria ) show
-18.1 696.5 moveto
-3.3 3.3 c fill
-31.5 688.4 moveto
-12 f1
-(Fixx, The) show
-80.1 688.4 moveto
-12 f0
-( ) show
-31.5 675.1 moveto
-12 f2
-(1982:) show
-59.4 675.1 moveto
-12 f0
-( Shuttered Room ) show
-31.5 661.8 moveto
-12 f2
-(1983:) show
-59.4 661.8 moveto
-12 f0
-( Reach the Beach ) show
-31.5 648.5 moveto
-12 f2
-(1984:) show
-59.4 648.5 moveto
-12 f0
-( Phantoms ) show
-31.5 635.2 moveto
-12 f2
-(1986:) show
-59.4 635.2 moveto
-12 f0
-( Walkabout ) show
-31.5 621.9 moveto
-12 f2
-(1987:) show
-59.4 621.9 moveto
-12 f0
-( React ) show
-92.7 621.9 moveto
-12 f2
-(\(live\)) show
-118 621.9 moveto
-12 f0
-( ) show
-300.5 688.9 moveto
-12 f2
-(UBL Card: ) show
-357.8 688.9 moveto
-12 f0
-(4603) show
-381.8 688.9 moveto
-12 f0
-( ) show
-18.1 609.2 moveto
-3.3 3.3 c fill
-31.5 601.1 moveto
-12 f1
-(Foetus) show
-65.4 601.1 moveto
-12 f0
-( ) show
-31.5 587.8 moveto
-12 f2
-(19??:) show
-59.4 587.8 moveto
-12 f0
-( Rife ) show
-31.5 574.5 moveto
-12 f2
-(1995:) show
-59.4 574.5 moveto
-12 f0
-( Gash ) show
-298.1 601.6 moveto
-12 f2
-(UBL Card: ) show
-355.4 601.6 moveto
-12 f0
-(2750) show
-379.4 601.6 moveto
-12 f0
-( ) show
-18.1 561.8 moveto
-3.3 3.3 c fill
-31.5 553.7 moveto
-12 f1
-(Fortran 5) show
-81.1 553.7 moveto
-12 f0
-( ) show
-31.5 540.4 moveto
-12 f2
-(1991:) show
-59.4 540.4 moveto
-12 f0
-( Blues ) show
-31.5 527.1 moveto
-12 f2
-(1993:) show
-59.4 527.1 moveto
-12 f0
-( Bad Head Park ) show
-298.1 554.2 moveto
-12 f2
-(UBL Card: ) show
-355.4 554.2 moveto
-12 f0
-(3469) show
-379.4 554.2 moveto
-12 f0
-( ) show
-298.1 540.9 moveto
-12 f2
-(See also: ) show
-344.7 540.9 moveto
-12 f0
-(rt66.com) show
-387.6 540.9 moveto
-12 f0
-( ) show
-18.1 514.4 moveto
-3.3 3.3 c fill
-31.5 506.3 moveto
-12 f1
-(45 Grave) show
-78.4 506.3 moveto
-12 f0
-( ) show
-31.5 493 moveto
-12 f2
-(1993:) show
-59.4 493 moveto
-12 f0
-( Debasement Tapes ) show
-18.1 480.3 moveto
-3.3 3.3 c fill
-31.5 472.2 moveto
-12 f1
-(Frankie goes to Hollywood) show
-168.5 472.2 moveto
-12 f0
-( ) show
-31.5 458.9 moveto
-12 f2
-(1984:) show
-59.4 458.9 moveto
-12 f0
-( Welcome to the Pleasure Dome ) show
-298.1 472.7 moveto
-12 f2
-(UBL Card: ) show
-355.4 472.7 moveto
-12 f0
-(3222) show
-379.4 472.7 moveto
-12 f0
-( ) show
-298.1 459.4 moveto
-12 f2
-(See also: ) show
-344.7 459.4 moveto
-12 f0
-(rt66.com) show
-387.6 459.4 moveto
-12 f0
-( ) show
-18.1 446.2 moveto
-3.3 3.3 c fill
-31.5 438.1 moveto
-12 f1
-(Freur) show
-61.4 438.1 moveto
-12 f0
-( ) show
-31.5 424.8 moveto
-12 f2
-(1983:) show
-59.4 424.8 moveto
-12 f0
-( Doot Doot ) show
-298.1 438.6 moveto
-12 f2
-(See also: ) show
-344.7 438.6 moveto
-12 f0
-(rt66.com) show
-387.6 438.6 moveto
-12 f0
-( ) show
-18.1 412.1 moveto
-3.3 3.3 c fill
-31.5 404 moveto
-12 f1
-(Front 242) show
-81.8 404 moveto
-12 f0
-( ) show
-31.5 390.7 moveto
-12 f2
-(1979:) show
-59.4 390.7 moveto
-12 f0
-( Masterhit ) show
-111.3 390.7 moveto
-12 f2
-(\(EP\)) show
-133.9 390.7 moveto
-12 f0
-( ) show
-31.5 377.4 moveto
-12 f2
-(1983:) show
-59.4 377.4 moveto
-12 f0
-( Geography ) show
-31.5 364.1 moveto
-12 f2
-(1987:) show
-59.4 364.1 moveto
-12 f0
-( Official Version ) show
-31.5 350.8 moveto
-12 f2
-(1985:) show
-59.4 350.8 moveto
-12 f0
-( No Comment ) show
-31.5 337.5 moveto
-12 f2
-(1982:) show
-59.4 337.5 moveto
-12 f0
-( Two In One ) show
-123.3 337.5 moveto
-12 f2
-(\(EP\)) show
-145.9 337.5 moveto
-12 f0
-( ) show
-31.5 324.2 moveto
-12 f2
-(1982-1985:) show
-87.4 324.2 moveto
-12 f0
-( Backcatalogue ) show
-164 324.2 moveto
-12 f2
-(\(comp\)) show
-197.9 324.2 moveto
-12 f0
-( ) show
-31.5 310.9 moveto
-12 f2
-(1989:) show
-59.4 310.9 moveto
-12 f0
-( Headhunter ) show
-121.3 310.9 moveto
-12 f2
-(\(EP\)) show
-143.9 310.9 moveto
-12 f0
-( ) show
-31.5 297.6 moveto
-12 f2
-(1989:) show
-59.4 297.6 moveto
-12 f0
-( Front by Front ) show
-31.5 284.3 moveto
-12 f2
-(1989:) show
-59.4 284.3 moveto
-12 f0
-( Never Stop ) show
-119.7 284.3 moveto
-12 f2
-(\(EP\)) show
-142.3 284.3 moveto
-12 f0
-( ) show
-31.5 271 moveto
-12 f2
-(1991:) show
-59.4 271 moveto
-12 f0
-( Tyrrany For You ) show
-31.5 257.7 moveto
-12 f2
-(1991:) show
-59.4 257.7 moveto
-12 f0
-( Tragedy For You ) show
-148.7 257.7 moveto
-12 f2
-(\(EP\)) show
-171.3 257.7 moveto
-12 f0
-( ) show
-31.5 244.4 moveto
-12 f2
-(1991:) show
-59.4 244.4 moveto
-12 f0
-( Rhythm of Time ) show
-145.4 244.4 moveto
-12 f2
-(\(EP\)) show
-168 244.4 moveto
-12 f0
-( ) show
-31.5 231.1 moveto
-12 f2
-(1993:) show
-59.4 231.1 moveto
-12 f0
-( Religion ) show
-106.7 231.1 moveto
-12 f2
-(\(EP\)) show
-129.3 231.1 moveto
-12 f0
-( ) show
-31.5 217.8 moveto
-12 f2
-(1993:) show
-59.4 217.8 moveto
-12 f0
-( Animal ) show
-101.4 217.8 moveto
-12 f2
-(\(single\)) show
-138 217.8 moveto
-12 f0
-( ) show
-31.5 204.5 moveto
-12 f2
-(1993:) show
-59.4 204.5 moveto
-12 f0
-( 06:21:03:11 Up Evil ) show
-31.5 191.2 moveto
-12 f2
-(1993:) show
-59.4 191.2 moveto
-12 f0
-( 05:22:09:12 Off ) show
-298.1 404.5 moveto
-12 f2
-(UBL Card: ) show
-355.4 404.5 moveto
-12 f0
-(1059) show
-379.4 404.5 moveto
-12 f0
-( ) show
-298.1 391.2 moveto
-12 f2
-(See also: ) show
-344.7 391.2 moveto
-12 f0
-(www.ifi.uio.no) show
-417.6 391.2 moveto
-12 f0
-( ) show
-298.1 377.9 moveto
-12 f2
-(See also: ) show
-344.7 377.9 moveto
-12 f0
-(www.eecs.nwu.edu) show
-438.3 377.9 moveto
-12 f0
-( ) show
-18.1 178.5 moveto
-3.3 3.3 c fill
-31.5 170.4 moveto
-12 f1
-(Front Line Assembly) show
-139.5 170.4 moveto
-12 f0
-( ) show
-31.5 157.1 moveto
-12 f2
-(1988:) show
-59.4 157.1 moveto
-12 f0
-( Convergence ) show
-31.5 143.8 moveto
-12 f2
-(1989:) show
-59.4 143.8 moveto
-12 f0
-( Digital Tension Dementia ) show
-190 143.8 moveto
-12 f2
-(\(EP\)) show
-212.6 143.8 moveto
-12 f0
-( ) show
-31.5 130.5 moveto
-12 f2
-(1990:) show
-59.4 130.5 moveto
-12 f0
-( Gashed Senses and Crossfire ) show
-31.5 117.2 moveto
-12 f2
-(1991:) show
-59.4 117.2 moveto
-12 f0
-( Caustic Grip ) show
-31.5 103.9 moveto
-12 f2
-(1992:) show
-59.4 103.9 moveto
-12 f0
-( Tactical Neural Implant ) show
-304.9 170.9 moveto
-12 f2
-(UBL Card: ) show
-362.2 170.9 moveto
-12 f0
-(1161) show
-386.2 170.9 moveto
-12 f0
-( ) show
-18.1 91.2 moveto
-3.3 3.3 c fill
-31.5 83.1 moveto
-12 f1
-(Fugazi) show
-66.1 83.1 moveto
-12 f0
-( ) show
-298.1 83.6 moveto
-12 f2
-(UBL Card: ) show
-355.4 83.6 moveto
-12 f0
-(2053) show
-379.4 83.6 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 12 12
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-31.5 709.2 moveto
-12 f2
-(1989:) show
-59.4 709.2 moveto
-12 f0
-( 13 Songs ) show
-18.1 696.5 moveto
-3.3 3.3 c fill
-31.5 688.4 moveto
-12 f1
-(Fun Boy Three) show
-108.8 688.4 moveto
-12 f0
-( ) show
-31.5 675.1 moveto
-12 f2
-(1982:) show
-59.4 675.1 moveto
-12 f0
-( It Ain't What You Do / Just Do It / Funrama Theme ) show
-315.7 675.1 moveto
-12 f2
-(\(single\)) show
-352.3 675.1 moveto
-12 f0
-( ) show
-31.5 661.8 moveto
-12 f2
-(1981-1983:) show
-87.4 661.8 moveto
-12 f0
-( The Best of Fun Boy Three ) show
-225 661.8 moveto
-12 f2
-(\(comp\)) show
-258.9 661.8 moveto
-12 f0
-( ) show
-18.1 649.1 moveto
-3.3 3.3 c fill
-31.5 641 moveto
-12 f1
-(Fuzzbox) show
-74.8 641 moveto
-12 f0
-( ) show
-31.5 627.7 moveto
-12 f2
-(1986:) show
-59.4 627.7 moveto
-12 f0
-( We've got a Fuzzbox and We're Gonna Use It!!) show
-31.5 601.1 moveto
-12 f2
-(1986:) show
-59.4 601.1 moveto
-12 f0
-( Love is the Slug ) show
-143.7 601.1 moveto
-12 f2
-(\(single\)) show
-180.3 601.1 moveto
-12 f0
-( ) show
-31.5 587.8 moveto
-12 f2
-(1986:) show
-59.4 587.8 moveto
-12 f0
-( Rules and Regulations ) show
-173.4 587.8 moveto
-12 f2
-(\(single\)) show
-210 587.8 moveto
-12 f0
-( ) show
-298.1 641.5 moveto
-12 f2
-(See also: ) show
-344.7 641.5 moveto
-12 f0
-(world.std.com) show
-413.3 641.5 moveto
-12 f0
-( ) show
-18.1 575.1 moveto
-3.3 3.3 c fill
-31.5 567 moveto
-12 f1
-(Gabriel, Peter) show
-104.1 567 moveto
-12 f0
-( ) show
-31.5 553.7 moveto
-12 f2
-(1977:) show
-59.4 553.7 moveto
-12 f0
-( Peter Gabriel I ) show
-31.5 540.4 moveto
-12 f2
-(1978:) show
-59.4 540.4 moveto
-12 f0
-( Peter Gabriel II ) show
-31.5 527.1 moveto
-12 f2
-(1980:) show
-59.4 527.1 moveto
-12 f0
-( Peter Gabriel III ) show
-31.5 513.8 moveto
-12 f2
-(1982:) show
-59.4 513.8 moveto
-12 f0
-( Security ) show
-31.5 500.5 moveto
-12 f2
-(1983:) show
-59.4 500.5 moveto
-12 f0
-( Peter Gabriel Plays Live ) show
-183 500.5 moveto
-12 f2
-(\(double live\)) show
-243.9 500.5 moveto
-12 f0
-( ) show
-31.5 487.2 moveto
-12 f2
-(1985:) show
-59.4 487.2 moveto
-12 f0
-( Birdy ) show
-92.7 487.2 moveto
-12 f2
-(\(soundtrack\)) show
-154 487.2 moveto
-12 f0
-( ) show
-31.5 473.9 moveto
-12 f2
-(1986:) show
-59.4 473.9 moveto
-12 f0
-( So ) show
-31.5 460.6 moveto
-12 f2
-(1986:) show
-59.4 460.6 moveto
-12 f0
-( Live at the Civic Arena ) show
-178 460.6 moveto
-12 f2
-(\(live boot\)) show
-227.6 460.6 moveto
-12 f0
-( ) show
-31.5 447.3 moveto
-12 f2
-(1989:) show
-59.4 447.3 moveto
-12 f0
-( Passion ) show
-102 447.3 moveto
-12 f2
-(\(soundtrack\)) show
-163.3 447.3 moveto
-12 f0
-( ) show
-298.1 567.5 moveto
-12 f2
-(UBL Card: ) show
-355.4 567.5 moveto
-12 f0
-(1016) show
-379.4 567.5 moveto
-12 f0
-( ) show
-298.1 554.2 moveto
-12 f2
-(See also: ) show
-344.7 554.2 moveto
-12 f0
-(www.nwu.edu) show
-414.6 554.2 moveto
-12 f0
-( ) show
-298.1 540.9 moveto
-12 f2
-(See also: ) show
-344.7 540.9 moveto
-12 f0
-(www.cs.clemson.edu) show
-447 540.9 moveto
-12 f0
-( ) show
-18.1 434.6 moveto
-3.3 3.3 c fill
-31.5 426.5 moveto
-12 f1
-(Garbage) show
-76.1 426.5 moveto
-12 f0
-( ) show
-31.5 413.2 moveto
-12 f2
-(1995:) show
-59.4 413.2 moveto
-12 f0
-( Garbage ) show
-298.1 427 moveto
-12 f2
-(See also: ) show
-344.7 427 moveto
-12 f0
-(hamp.hampshire.edu) show
-444.6 427 moveto
-12 f0
-( ) show
-18.1 400.5 moveto
-3.3 3.3 c fill
-31.5 392.4 moveto
-12 f1
-(Game Theory) show
-102.4 392.4 moveto
-12 f0
-( ) show
-31.5 379.1 moveto
-12 f2
-(1987:) show
-59.4 379.1 moveto
-12 f0
-( Lolita Nation ) show
-18.1 366.4 moveto
-3.3 3.3 c fill
-31.5 358.3 moveto
-12 f1
-(Gang of 4) show
-81.5 358.3 moveto
-12 f0
-( ) show
-31.5 345 moveto
-12 f2
-(1979:) show
-59.4 345 moveto
-12 f0
-( Entertainment ) show
-31.5 331.7 moveto
-12 f2
-(1979:) show
-59.4 331.7 moveto
-12 f0
-( Peel Sessions ) show
-130.4 331.7 moveto
-12 f2
-(\(live\)) show
-155.7 331.7 moveto
-12 f0
-( ) show
-31.5 318.4 moveto
-12 f2
-(1981:) show
-59.4 318.4 moveto
-12 f0
-( Solid Gold ) show
-31.5 305.1 moveto
-12 f2
-(1981:) show
-59.4 305.1 moveto
-12 f0
-( Another Day / Another Dollar ) show
-31.5 291.8 moveto
-12 f2
-(1982:) show
-59.4 291.8 moveto
-12 f0
-( I Love a Man In a Uniform ) show
-196 291.8 moveto
-12 f2
-(\(single\)) show
-232.6 291.8 moveto
-12 f0
-( ) show
-31.5 278.5 moveto
-12 f2
-(1982:) show
-59.4 278.5 moveto
-12 f0
-( Songs of the Free ) show
-31.5 265.2 moveto
-12 f2
-(1983:) show
-59.4 265.2 moveto
-12 f0
-( Is It Love ) show
-112 265.2 moveto
-12 f2
-(\(single\)) show
-148.6 265.2 moveto
-12 f0
-( ) show
-31.5 251.9 moveto
-12 f2
-(1983:) show
-59.4 251.9 moveto
-12 f0
-( Hard ) show
-31.5 238.6 moveto
-12 f2
-(1983:) show
-59.4 238.6 moveto
-12 f0
-( At the Palace ) show
-129.3 238.6 moveto
-12 f2
-(\(live\)) show
-154.6 238.6 moveto
-12 f0
-( ) show
-31.5 225.3 moveto
-12 f2
-(1979-1983:) show
-87.4 225.3 moveto
-12 f0
-( A Brief History of the Twentieth Century) show
-31.5 212 moveto
-12 f2
-(\(comp\)) show
-65.4 212 moveto
-12 f0
-( ) show
-31.5 198.7 moveto
-12 f2
-(1990:) show
-59.4 198.7 moveto
-12 f0
-( To Hell With Poverty ) show
-169.7 198.7 moveto
-12 f2
-(\(single\)) show
-206.3 198.7 moveto
-12 f0
-( ) show
-31.5 185.4 moveto
-12 f2
-(1990:) show
-59.4 185.4 moveto
-12 f0
-( Mall ) show
-31.5 172.1 moveto
-12 f2
-(1990:) show
-59.4 172.1 moveto
-12 f0
-( Money Talks ) show
-129 172.1 moveto
-12 f2
-(\(single\)) show
-165.6 172.1 moveto
-12 f0
-( ) show
-31.5 158.8 moveto
-12 f2
-(1995:) show
-59.4 158.8 moveto
-12 f0
-( Tatoo ) show
-93.3 158.8 moveto
-12 f2
-(\(single\)) show
-129.9 158.8 moveto
-12 f0
-( ) show
-31.5 145.5 moveto
-12 f2
-(1995:) show
-59.4 145.5 moveto
-12 f0
-( Shrinkwrapped ) show
-298.1 358.8 moveto
-12 f2
-(See also: ) show
-344.7 358.8 moveto
-12 f0
-(http2.brunel.ac.uk) show
-431.7 358.8 moveto
-12 f0
-( ) show
-18.1 132.8 moveto
-3.3 3.3 c fill
-31.5 124.7 moveto
-12 f1
-(Glove, The) show
-87.5 124.7 moveto
-12 f0
-( ) show
-31.5 111.4 moveto
-12 f2
-(1982:) show
-59.4 111.4 moveto
-12 f0
-( Blue Sunshine ) show
-298.1 125.2 moveto
-12 f2
-(UBL Card: ) show
-355.4 125.2 moveto
-12 f0
-(1159) show
-379.4 125.2 moveto
-12 f0
-( ) show
-298.1 111.9 moveto
-12 f2
-(See also: ) show
-344.7 111.9 moveto
-12 f0
-(www.dcs.gla.ac.uk) show
-436 111.9 moveto
-12 f0
-( ) show
-18.1 98.7 moveto
-3.3 3.3 c fill
-31.5 90.6 moveto
-12 f1
-(God is my Copilot) show
-124.5 90.6 moveto
-12 f0
-( ) show
-31.5 77.3 moveto
-12 f2
-(1993:) show
-59.4 77.3 moveto
-12 f0
-( Speed Yr Trip ) show
-pagelevel restore
-showpage
-%%Page: 13 13
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-18.1 712.6 moveto
-3.3 3.3 c fill
-31.5 704.5 moveto
-12 f1
-(Gracious Shades) show
-117.1 704.5 moveto
-12 f0
-( ) show
-31.5 691.2 moveto
-12 f2
-(1995:) show
-59.4 691.2 moveto
-12 f0
-( Aberkash ) show
-18.1 678.5 moveto
-3.3 3.3 c fill
-31.5 670.4 moveto
-12 f1
-(Grind) show
-62.8 670.4 moveto
-12 f0
-( ) show
-31.5 657.1 moveto
-12 f2
-(1995:) show
-59.4 657.1 moveto
-12 f0
-( Kittymuzzle ) show
-18.1 644.4 moveto
-3.3 3.3 c fill
-31.5 636.3 moveto
-12 f1
-(Grotus) show
-67.5 636.3 moveto
-12 f0
-( ) show
-31.5 623 moveto
-12 f2
-(1993:) show
-59.4 623 moveto
-12 f0
-( Slow Motion Apocalypse ) show
-302.1 636.8 moveto
-12 f2
-(UBL Card: ) show
-359.4 636.8 moveto
-12 f0
-(5482) show
-383.4 636.8 moveto
-12 f0
-( ) show
-18.1 610.3 moveto
-3.3 3.3 c fill
-31.5 602.2 moveto
-12 f1
-(Pizzicato Five) show
-102.4 602.2 moveto
-12 f0
-( ) show
-31.5 588.9 moveto
-12 f2
-(1995:) show
-59.4 588.9 moveto
-12 f0
-( The Sound of Music ) show
-18.1 576.2 moveto
-3.3 3.3 c fill
-31.5 568.1 moveto
-12 f1
-(PJ Harvey) show
-85.8 568.1 moveto
-12 f0
-( ) show
-31.5 554.8 moveto
-12 f2
-(1992:) show
-59.4 554.8 moveto
-12 f0
-( Dry ) show
-31.5 541.5 moveto
-12 f2
-(1993:) show
-59.4 541.5 moveto
-12 f0
-( Rid of Me ) show
-31.5 528.2 moveto
-12 f2
-(1993:) show
-59.4 528.2 moveto
-12 f0
-( 4-Track Demos ) show
-31.5 514.9 moveto
-12 f2
-(1995:) show
-59.4 514.9 moveto
-12 f0
-( Down by the Water ) show
-159.7 514.9 moveto
-12 f2
-(\(single\)) show
-196.3 514.9 moveto
-12 f0
-( ) show
-31.5 501.6 moveto
-12 f2
-(1995:) show
-59.4 501.6 moveto
-12 f0
-( To Bring You My Love ) show
-298.1 568.6 moveto
-12 f2
-(UBL Card: ) show
-355.4 568.6 moveto
-12 f0
-(1221) show
-379.4 568.6 moveto
-12 f0
-( ) show
-298.1 555.3 moveto
-12 f2
-(See also: ) show
-344.7 555.3 moveto
-12 f0
-(www.louisville.edu) show
-438.6 555.3 moveto
-12 f0
-( ) show
-18.1 488.9 moveto
-3.3 3.3 c fill
-31.5 480.8 moveto
-12 f1
-(Psychick Warriors ov Gaia) show
-170.4 480.8 moveto
-12 f0
-( ) show
-31.5 467.5 moveto
-12 f2
-(1992:) show
-59.4 467.5 moveto
-12 f0
-( Ov Biospheres and Sacred Groves ) show
-18.1 454.8 moveto
-3.3 3.3 c fill
-31.5 446.7 moveto
-12 f1
-(Hagen, Nina) show
-95.5 446.7 moveto
-12 f0
-( ) show
-31.5 433.4 moveto
-12 f2
-(1985:) show
-59.4 433.4 moveto
-12 f0
-( In Ekstasy ) show
-31.5 420.1 moveto
-12 f2
-(1978-1982:) show
-87.4 420.1 moveto
-12 f0
-( nunsexmonkrock / Nina Hagen Band ) show
-18.1 407.4 moveto
-3.3 3.3 c fill
-31.5 399.3 moveto
-12 f1
-(Hate Dept.) show
-86.8 399.3 moveto
-12 f0
-( ) show
-31.5 386 moveto
-12 f2
-(1994:) show
-59.4 386 moveto
-12 f0
-( Meat Your Maker ) show
-31.5 372.7 moveto
-12 f2
-(1995:) show
-59.4 372.7 moveto
-12 f0
-( Mainline ) show
-108.7 372.7 moveto
-12 f2
-(\(EP\)) show
-131.3 372.7 moveto
-12 f0
-( ) show
-298.1 399.8 moveto
-12 f2
-(See also: ) show
-344.7 399.8 moveto
-12 f0
-(www.iuma.com) show
-421.3 399.8 moveto
-12 f0
-( ) show
-18.1 360 moveto
-3.3 3.3 c fill
-31.5 351.9 moveto
-12 f1
-(Haysi Fantayzee) show
-115.8 351.9 moveto
-12 f0
-( ) show
-31.5 338.6 moveto
-12 f2
-(1982:) show
-59.4 338.6 moveto
-12 f0
-( Shiny Shiny remix ) show
-155.4 338.6 moveto
-12 f2
-(\(single\)) show
-192 338.6 moveto
-12 f0
-( ) show
-18.1 325.9 moveto
-3.3 3.3 c fill
-31.5 317.8 moveto
-12 f1
-(Heaven 17) show
-85.1 317.8 moveto
-12 f0
-( ) show
-31.5 304.5 moveto
-12 f2
-(1981:) show
-59.4 304.5 moveto
-12 f0
-( Penthouse and Pavement ) show
-31.5 291.2 moveto
-12 f2
-(1982:) show
-59.4 291.2 moveto
-12 f0
-( Heaven 17 ) show
-31.5 277.9 moveto
-12 f2
-(1983:) show
-59.4 277.9 moveto
-12 f0
-( The Luxury Gap ) show
-31.5 264.6 moveto
-12 f2
-(1984:) show
-59.4 264.6 moveto
-12 f0
-( How Men Are ) show
-18.1 251.9 moveto
-3.3 3.3 c fill
-31.5 243.8 moveto
-12 f1
-(Hope, Peter and Kirk, Richard) show
-190.1 243.8 moveto
-12 f0
-( ) show
-31.5 230.5 moveto
-12 f2
-(1988:) show
-59.4 230.5 moveto
-12 f0
-( Hoodoo Talk ) show
-298.1 244.3 moveto
-12 f2
-(UBL Card: ) show
-355.4 244.3 moveto
-12 f0
-(2307) show
-379.4 244.3 moveto
-12 f0
-( ) show
-18.1 217.8 moveto
-3.3 3.3 c fill
-31.5 209.7 moveto
-12 f1
-(Kershaw, Nik) show
-102.1 209.7 moveto
-12 f0
-( ) show
-31.5 196.4 moveto
-12 f2
-(1983:) show
-59.4 196.4 moveto
-12 f0
-( Human Racing ) show
-18.1 183.7 moveto
-3.3 3.3 c fill
-31.5 175.6 moveto
-12 f1
-(Kirk, Richard) show
-104.1 175.6 moveto
-12 f0
-( ) show
-31.5 162.3 moveto
-12 f2
-(1993:) show
-59.4 162.3 moveto
-12 f0
-( Virtual State ) show
-298.1 176.1 moveto
-12 f2
-(UBL Card: ) show
-355.4 176.1 moveto
-12 f0
-(2307) show
-379.4 176.1 moveto
-12 f0
-( ) show
-18.1 149.6 moveto
-3.3 3.3 c fill
-31.5 141.5 moveto
-12 f1
-(Human League) show
-110.5 141.5 moveto
-12 f0
-( ) show
-31.5 128.2 moveto
-12 f2
-(1979:) show
-59.4 128.2 moveto
-12 f0
-( Reproduction ) show
-31.5 114.9 moveto
-12 f2
-(1980:) show
-59.4 114.9 moveto
-12 f0
-( Travelogue ) show
-31.5 101.6 moveto
-12 f2
-(1981:) show
-59.4 101.6 moveto
-12 f0
-( Dare ) show
-31.5 88.3 moveto
-12 f2
-(1983:) show
-59.4 88.3 moveto
-12 f0
-( Fascination ) show
-31.5 75 moveto
-12 f2
-(1984:) show
-59.4 75 moveto
-12 f0
-( Hysteria ) show
-298.1 142 moveto
-12 f2
-(UBL Card: ) show
-355.4 142 moveto
-12 f0
-(4631) show
-379.4 142 moveto
-12 f0
-( ) show
-298.1 128.7 moveto
-12 f2
-(See also: ) show
-344.7 128.7 moveto
-12 f0
-(pathfinder.com) show
-417.6 128.7 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 14 14
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-31.5 709.2 moveto
-12 f2
-(1995:) show
-59.4 709.2 moveto
-12 f0
-( Octopus ) show
-18.1 696.5 moveto
-3.3 3.3 c fill
-31.5 688.4 moveto
-12 f1
-(Hunters and Collectors) show
-150.8 688.4 moveto
-12 f0
-( ) show
-31.5 675.1 moveto
-12 f2
-(1987:) show
-59.4 675.1 moveto
-12 f0
-( Human Frailty ) show
-300.2 688.9 moveto
-12 f2
-(UBL Card: ) show
-357.5 688.9 moveto
-12 f0
-(4553) show
-381.5 688.9 moveto
-12 f0
-( ) show
-18.1 662.4 moveto
-3.3 3.3 c fill
-31.5 654.3 moveto
-12 f1
-(Ice T) show
-57.8 654.3 moveto
-12 f0
-( ) show
-31.5 641 moveto
-12 f2
-(1991:) show
-59.4 641 moveto
-12 f0
-( New Jack Hustler ) show
-150.7 641 moveto
-12 f2
-(\(EP\)) show
-173.3 641 moveto
-12 f0
-( ) show
-298.1 654.8 moveto
-12 f2
-(UBL Card: ) show
-355.4 654.8 moveto
-12 f0
-(2342) show
-379.4 654.8 moveto
-12 f0
-( ) show
-18.1 628.3 moveto
-3.3 3.3 c fill
-31.5 620.2 moveto
-12 f1
-(In the Nursery) show
-106.8 620.2 moveto
-12 f0
-( ) show
-31.5 606.9 moveto
-12 f2
-(19??:) show
-59.4 606.9 moveto
-12 f0
-( L'Esprit ) show
-18.1 594.2 moveto
-3.3 3.3 c fill
-31.5 586.1 moveto
-12 f1
-(INXS) show
-60.1 586.1 moveto
-12 f0
-( ) show
-31.5 572.8 moveto
-12 f2
-(1982:) show
-59.4 572.8 moveto
-12 f0
-( Shabooh Shoobah ) show
-31.5 559.5 moveto
-12 f2
-(1984:) show
-59.4 559.5 moveto
-12 f0
-( The Swing ) show
-31.5 546.2 moveto
-12 f2
-(1985:) show
-59.4 546.2 moveto
-12 f0
-( Listen Like Thieves ) show
-31.5 532.9 moveto
-12 f2
-(1988:) show
-59.4 532.9 moveto
-12 f0
-( Kick ) show
-31.5 519.6 moveto
-12 f2
-(1990:) show
-59.4 519.6 moveto
-12 f0
-( X ) show
-298.1 586.6 moveto
-12 f2
-(UBL Card: ) show
-355.4 586.6 moveto
-12 f0
-(1284) show
-379.4 586.6 moveto
-12 f0
-( ) show
-18.1 506.9 moveto
-3.3 3.3 c fill
-31.5 498.8 moveto
-12 f1
-(J., David) show
-77.1 498.8 moveto
-12 f0
-( ) show
-31.5 485.5 moveto
-12 f2
-(1983-1986:) show
-87.4 485.5 moveto
-12 f0
-( On Glass ) show
-137.7 485.5 moveto
-12 f2
-(\(comp\)) show
-171.6 485.5 moveto
-12 f0
-( ) show
-31.5 472.2 moveto
-12 f2
-(1985:) show
-59.4 472.2 moveto
-12 f0
-( Crocodile Tears and the Velvet Cosh ) show
-298.1 499.3 moveto
-12 f2
-(UBL Card: ) show
-355.4 499.3 moveto
-12 f0
-(1215) show
-379.4 499.3 moveto
-12 f0
-( ) show
-298.1 486 moveto
-12 f2
-(See also: ) show
-344.7 486 moveto
-12 f0
-(gothic.acs.csulb.edu) show
-441.6 486 moveto
-12 f0
-( ) show
-298.1 472.7 moveto
-12 f2
-(See also: ) show
-344.7 472.7 moveto
-12 f0
-(isvpc146.isv.uit.no) show
-435.7 472.7 moveto
-12 f0
-( ) show
-18.1 459.5 moveto
-3.3 3.3 c fill
-31.5 451.4 moveto
-12 f1
-(Jesus and Mary Chain, The) show
-173.1 451.4 moveto
-12 f0
-( ) show
-31.5 438.1 moveto
-12 f2
-(1992:) show
-59.4 438.1 moveto
-12 f0
-( Reverence ) show
-116 438.1 moveto
-12 f2
-(\(EP\)) show
-138.6 438.1 moveto
-12 f0
-( ) show
-31.5 424.8 moveto
-12 f2
-(1992:) show
-59.4 424.8 moveto
-12 f0
-( Honey's Dead ) show
-31.5 411.5 moveto
-12 f2
-(1995:) show
-59.4 411.5 moveto
-12 f0
-( Hate Rock and Roll ) show
-160.3 411.5 moveto
-12 f2
-(\(comp\)) show
-194.2 411.5 moveto
-12 f0
-( ) show
-298.1 451.9 moveto
-12 f2
-(UBL Card: ) show
-355.4 451.9 moveto
-12 f0
-(1228) show
-379.4 451.9 moveto
-12 f0
-( ) show
-298.1 438.6 moveto
-12 f2
-(See also: ) show
-344.7 438.6 moveto
-12 f0
-(american.recordings.com) show
-465.9 438.6 moveto
-12 f0
-( ) show
-18.1 398.8 moveto
-3.3 3.3 c fill
-31.5 390.7 moveto
-12 f1
-(Jones, Grace) show
-97.4 390.7 moveto
-12 f0
-( ) show
-31.5 377.4 moveto
-12 f2
-(1993:) show
-59.4 377.4 moveto
-12 f0
-( Sex Drive ) show
-113.7 377.4 moveto
-12 f2
-(\(single\)) show
-150.3 377.4 moveto
-12 f0
-( ) show
-18.1 364.7 moveto
-3.3 3.3 c fill
-31.5 356.6 moveto
-12 f1
-(Jones, Howard) show
-108.1 356.6 moveto
-12 f0
-( ) show
-31.5 343.3 moveto
-12 f2
-(1983:) show
-59.4 343.3 moveto
-12 f0
-( Humans' Lib ) show
-31.5 330 moveto
-12 f2
-(1985:) show
-59.4 330 moveto
-12 f0
-( Dream Into Action ) show
-18.1 317.3 moveto
-3.3 3.3 c fill
-31.5 309.2 moveto
-12 f1
-(Joy Division) show
-94.5 309.2 moveto
-12 f0
-( ) show
-31.5 295.9 moveto
-12 f2
-(1977-1978:) show
-87.4 295.9 moveto
-12 f0
-( Warsaw ) show
-132.7 295.9 moveto
-12 f2
-(\(comp\)) show
-166.6 295.9 moveto
-12 f0
-( ) show
-31.5 282.6 moveto
-12 f2
-(1979:) show
-59.4 282.6 moveto
-12 f0
-( Unknown Pleasures ) show
-31.5 269.3 moveto
-12 f2
-(1980:) show
-59.4 269.3 moveto
-12 f0
-( Closer ) show
-31.5 256 moveto
-12 f2
-(1980:) show
-59.4 256 moveto
-12 f0
-( Transmission / Novelty ) show
-178 256 moveto
-12 f2
-(\(single\)) show
-214.6 256 moveto
-12 f0
-( ) show
-31.5 242.7 moveto
-12 f2
-(1980:) show
-59.4 242.7 moveto
-12 f0
-( Still ) show
-31.5 229.4 moveto
-12 f2
-(1977-1980:) show
-87.4 229.4 moveto
-12 f0
-( Substance ) show
-142 229.4 moveto
-12 f2
-(\(comp\)) show
-175.9 229.4 moveto
-12 f0
-( ) show
-31.5 216.1 moveto
-12 f2
-(1995:) show
-59.4 216.1 moveto
-12 f0
-( Ceremonial: A Tribute ) show
-174.7 216.1 moveto
-12 f2
-(\(various\)) show
-218.6 216.1 moveto
-12 f0
-( ) show
-298.1 309.7 moveto
-12 f2
-(UBL Card: ) show
-355.4 309.7 moveto
-12 f0
-(1214) show
-379.4 309.7 moveto
-12 f0
-( ) show
-298.1 296.4 moveto
-12 f2
-(See also: ) show
-344.7 296.4 moveto
-12 f0
-(www.fys.uio.no) show
-421.6 296.4 moveto
-12 f0
-( ) show
-298.1 283.1 moveto
-12 f2
-(See also: ) show
-344.7 283.1 moveto
-12 f0
-(csclub.uwaterloo.ca) show
-440 283.1 moveto
-12 f0
-( ) show
-18.1 203.4 moveto
-3.3 3.3 c fill
-31.5 195.3 moveto
-12 f1
-(King Crimson) show
-104.5 195.3 moveto
-12 f0
-( ) show
-31.5 182 moveto
-12 f2
-(1969:) show
-59.4 182 moveto
-12 f0
-( In the Court of the Crimson King ) show
-31.5 168.7 moveto
-12 f2
-(1973:) show
-59.4 168.7 moveto
-12 f0
-( Larks' Tongues in Aspic ) show
-31.5 155.4 moveto
-12 f2
-(1974:) show
-59.4 155.4 moveto
-12 f0
-( Starless and Bible Black ) show
-31.5 142.1 moveto
-12 f2
-(1981:) show
-59.4 142.1 moveto
-12 f0
-( Dicipline ) show
-31.5 128.8 moveto
-12 f2
-(1982:) show
-59.4 128.8 moveto
-12 f0
-( Beat ) show
-31.5 115.5 moveto
-12 f2
-(1984:) show
-59.4 115.5 moveto
-12 f0
-( Three of a Perfect Pair ) show
-298.1 195.8 moveto
-12 f2
-(UBL Card: ) show
-355.4 195.8 moveto
-12 f0
-(1323) show
-379.4 195.8 moveto
-12 f0
-( ) show
-18.1 102.8 moveto
-3.3 3.3 c fill
-31.5 94.7 moveto
-12 f1
-(KMFDM) show
-79.4 94.7 moveto
-12 f0
-( ) show
-31.5 81.4 moveto
-12 f2
-(1993:) show
-59.4 81.4 moveto
-12 f0
-( Angst ) show
-298.1 95.2 moveto
-12 f2
-(UBL Card: ) show
-355.4 95.2 moveto
-12 f0
-(1452) show
-379.4 95.2 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 15 15
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-18.1 716.6 moveto
-3.3 3.3 c fill
-31.5 708.5 moveto
-12 f1
-(Kraftwerk) show
-86.1 708.5 moveto
-12 f0
-( ) show
-31.5 695.2 moveto
-12 f2
-(1977:) show
-59.4 695.2 moveto
-12 f0
-( Trans-Europe Express ) show
-172.3 695.2 moveto
-12 f2
-(\(EP\)) show
-194.9 695.2 moveto
-12 f0
-( ) show
-298.1 709 moveto
-12 f2
-(UBL Card: ) show
-355.4 709 moveto
-12 f0
-(1027) show
-379.4 709 moveto
-12 f0
-( ) show
-298.1 695.7 moveto
-12 f2
-(See also: ) show
-344.7 695.7 moveto
-12 f0
-(wwwtdb.cs.umu.se) show
-436.3 695.7 moveto
-12 f0
-( ) show
-298.1 682.4 moveto
-12 f2
-(See also: ) show
-344.7 682.4 moveto
-12 f0
-(rt66.com) show
-387.6 682.4 moveto
-12 f0
-( ) show
-18.1 669.7 moveto
-3.3 3.3 c fill
-31.5 661.6 moveto
-12 f1
-(L7) show
-45.5 661.6 moveto
-12 f0
-( ) show
-31.5 648.3 moveto
-12 f2
-(1988:) show
-59.4 648.3 moveto
-12 f0
-( L7 ) show
-31.5 635 moveto
-12 f2
-(1990:) show
-59.4 635 moveto
-12 f0
-( Smell the Magic ) show
-31.5 621.7 moveto
-12 f2
-(1992:) show
-59.4 621.7 moveto
-12 f0
-( Bricks are Heavy ) show
-31.5 608.4 moveto
-12 f2
-(1994:) show
-59.4 608.4 moveto
-12 f0
-( Hungry for Stink ) show
-298.1 662.1 moveto
-12 f2
-(UBL Card: ) show
-355.4 662.1 moveto
-12 f0
-(1998) show
-379.4 662.1 moveto
-12 f0
-( ) show
-18.1 595.7 moveto
-3.3 3.3 c fill
-31.5 587.6 moveto
-12 f1
-(Le&ae;ther Strip) show
-120.4 587.6 moveto
-12 f0
-( ) show
-31.5 574.3 moveto
-12 f2
-(1995:) show
-59.4 574.3 moveto
-12 f0
-( Legacy of Hate and Lust ) show
-18.1 561.6 moveto
-3.3 3.3 c fill
-31.5 553.5 moveto
-12 f1
-(Lemon Kittens) show
-107.8 553.5 moveto
-12 f0
-( ) show
-31.5 540.2 moveto
-12 f2
-(1978-1980:) show
-87.4 540.2 moveto
-12 f0
-( We Buy a Hammer for Daddy ) show
-300.6 554 moveto
-12 f2
-(UBL Card: ) show
-357.9 554 moveto
-12 f0
-(1746) show
-381.9 554 moveto
-12 f0
-( ) show
-18.1 527.5 moveto
-3.3 3.3 c fill
-31.5 519.4 moveto
-12 f1
-(Letters to Cleo) show
-107.4 519.4 moveto
-12 f0
-( ) show
-31.5 506.1 moveto
-12 f2
-(1994:) show
-59.4 506.1 moveto
-12 f0
-( Aurora Gory Alice ) show
-298.1 519.9 moveto
-12 f2
-(UBL Card: ) show
-355.4 519.9 moveto
-12 f0
-(3000) show
-379.4 519.9 moveto
-12 f0
-( ) show
-18.1 493.4 moveto
-3.3 3.3 c fill
-31.5 485.3 moveto
-12 f1
-(LFO) show
-56.1 485.3 moveto
-12 f0
-( ) show
-31.5 472 moveto
-12 f2
-(1991:) show
-59.4 472 moveto
-12 f0
-( Frequencies ) show
-31.5 458.7 moveto
-12 f2
-(1996:) show
-59.4 458.7 moveto
-12 f0
-( Advance ) show
-18.1 446 moveto
-3.3 3.3 c fill
-31.5 437.9 moveto
-12 f1
-(London After Midnight) show
-152.8 437.9 moveto
-12 f0
-( ) show
-31.5 424.6 moveto
-12 f2
-(1989:) show
-59.4 424.6 moveto
-12 f0
-( Selected Scenes from the End of the World ) show
-18.1 411.9 moveto
-3.3 3.3 c fill
-31.5 403.8 moveto
-12 f1
-(Lords of Acid) show
-102.1 403.8 moveto
-12 f0
-( ) show
-31.5 390.5 moveto
-12 f2
-(1991:) show
-59.4 390.5 moveto
-12 f0
-( Rough Sex ) show
-118.4 390.5 moveto
-12 f2
-(\(single\)) show
-155 390.5 moveto
-12 f0
-( ) show
-31.5 377.2 moveto
-12 f2
-(1993:) show
-59.4 377.2 moveto
-12 f0
-( Voodoo U ) show
-31.5 363.9 moveto
-12 f2
-(1994:) show
-59.4 363.9 moveto
-12 f0
-( The Crablouse: Variations on a Species ) show
-255 363.9 moveto
-12 f2
-(\(single\)) show
-291.6 363.9 moveto
-12 f0
-( ) show
-300.2 404.3 moveto
-12 f2
-(UBL Card: ) show
-357.5 404.3 moveto
-12 f0
-(2356) show
-381.5 404.3 moveto
-12 f0
-( ) show
-18.1 351.2 moveto
-3.3 3.3 c fill
-31.5 343.1 moveto
-12 f1
-(Lords of the New Church, The) show
-188.1 343.1 moveto
-12 f0
-( ) show
-31.5 329.8 moveto
-12 f2
-(1983:) show
-59.4 329.8 moveto
-12 f0
-( Is Nothing Sacred? ) show
-18.1 317.1 moveto
-3.3 3.3 c fill
-31.5 309 moveto
-12 f1
-(Love and Rockets) show
-122.8 309 moveto
-12 f0
-( ) show
-31.5 295.7 moveto
-12 f2
-(1985:) show
-59.4 295.7 moveto
-12 f0
-( Ball of Confusion / Inside the Outside ) show
-248 295.7 moveto
-12 f2
-(\(single\)) show
-284.6 295.7 moveto
-12 f0
-( ) show
-31.5 282.4 moveto
-12 f2
-(1985:) show
-59.4 282.4 moveto
-12 f0
-( Seventh Dream of Teenage Heaven ) show
-31.5 269.1 moveto
-12 f2
-(1986:) show
-59.4 269.1 moveto
-12 f0
-( Express ) show
-31.5 255.8 moveto
-12 f2
-(1986:) show
-59.4 255.8 moveto
-12 f0
-( Kundalini Express / Lucifer Sam / Holiday on) show
-31.5 242.5 moveto
-12 f0
-(the Moon ) show
-80.8 242.5 moveto
-12 f2
-(\(single\)) show
-117.4 242.5 moveto
-12 f0
-( ) show
-31.5 229.2 moveto
-12 f2
-(1987:) show
-59.4 229.2 moveto
-12 f0
-( Earth, Sun, Moon ) show
-31.5 215.9 moveto
-12 f2
-(1989:) show
-59.4 215.9 moveto
-12 f0
-( No Big Deal ) show
-126 215.9 moveto
-12 f2
-(\(single\)) show
-162.6 215.9 moveto
-12 f0
-( ) show
-31.5 202.6 moveto
-12 f2
-(1989:) show
-59.4 202.6 moveto
-12 f0
-( Motorcycle ) show
-120.7 202.6 moveto
-12 f2
-(\(single\)) show
-157.3 202.6 moveto
-12 f0
-( ) show
-31.5 189.3 moveto
-12 f2
-(1989:) show
-59.4 189.3 moveto
-12 f0
-( Love and Rockets ) show
-31.5 176 moveto
-12 f2
-(1994:) show
-59.4 176 moveto
-12 f0
-( This Heaven ) show
-126.3 176 moveto
-12 f2
-(\(EP\)) show
-148.9 176 moveto
-12 f0
-( ) show
-31.5 162.7 moveto
-12 f2
-(1994:) show
-59.4 162.7 moveto
-12 f0
-( Body and Soul ) show
-136.7 162.7 moveto
-12 f2
-(\(EP\)) show
-159.3 162.7 moveto
-12 f0
-( ) show
-31.5 149.4 moveto
-12 f2
-(1994:) show
-59.4 149.4 moveto
-12 f0
-( Hot Trip to Heaven ) show
-31.5 136.1 moveto
-12 f2
-(1995:) show
-59.4 136.1 moveto
-12 f0
-( The Glittering Darkness ) show
-181.3 136.1 moveto
-12 f2
-(\(EP\)) show
-203.9 136.1 moveto
-12 f0
-( ) show
-31.5 122.8 moveto
-12 f2
-(1996:) show
-59.4 122.8 moveto
-12 f0
-( Sweet F. A. ) show
-298.1 309.5 moveto
-12 f2
-(UBL Card: ) show
-355.4 309.5 moveto
-12 f0
-(1215) show
-379.4 309.5 moveto
-12 f0
-( ) show
-298.1 296.2 moveto
-12 f2
-(See also: ) show
-344.7 296.2 moveto
-12 f0
-(american.recordings.com) show
-465.9 296.2 moveto
-12 f0
-( ) show
-298.1 282.9 moveto
-12 f2
-(See also: ) show
-344.7 282.9 moveto
-12 f0
-(gothic.acs.csulb.edu) show
-441.6 282.9 moveto
-12 f0
-( ) show
-18.1 110.1 moveto
-3.3 3.3 c fill
-31.5 102 moveto
-12 f1
-(Love is Colder than Death) show
-166.1 102 moveto
-12 f0
-( ) show
-31.5 88.7 moveto
-12 f2
-(1993:) show
-59.4 88.7 moveto
-12 f0
-( Oxeia ) show
-31.5 75.4 moveto
-12 f2
-(19??:) show
-59.4 75.4 moveto
-12 f0
-( Mental Traveller ) show
-pagelevel restore
-showpage
-%%Page: 16 16
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-31.5 709.2 moveto
-12 f2
-(19??:) show
-59.4 709.2 moveto
-12 f0
-( Teignmouth ) show
-18.1 696.5 moveto
-3.3 3.3 c fill
-31.5 688.4 moveto
-12 f1
-(Low Pop Suicide) show
-117.5 688.4 moveto
-12 f0
-( ) show
-31.5 675.1 moveto
-12 f2
-(1992:) show
-59.4 675.1 moveto
-12 f0
-( Disengagement ) show
-140 675.1 moveto
-12 f2
-(\(EP\)) show
-162.6 675.1 moveto
-12 f0
-( ) show
-31.5 661.8 moveto
-12 f2
-(1992:) show
-59.4 661.8 moveto
-12 f0
-( On the Cross of Commerce ) show
-31.5 648.5 moveto
-12 f2
-(1994:) show
-59.4 648.5 moveto
-12 f0
-( Kiss Your Lips ) show
-138.7 648.5 moveto
-12 f2
-(\(remixes\)) show
-184 648.5 moveto
-12 f0
-( ) show
-31.5 635.2 moveto
-12 f2
-(1995:) show
-59.4 635.2 moveto
-12 f0
-( The Death of Excellence ) show
-306.4 688.9 moveto
-12 f2
-(UBL Card: ) show
-363.7 688.9 moveto
-12 f0
-(1984) show
-387.7 688.9 moveto
-12 f0
-( ) show
-18.1 622.5 moveto
-3.3 3.3 c fill
-31.5 614.4 moveto
-12 f1
-(Luscious Jackson) show
-121.1 614.4 moveto
-12 f0
-( ) show
-31.5 601.1 moveto
-12 f2
-(1992:) show
-59.4 601.1 moveto
-12 f0
-( In Search of Manny ) show
-31.5 587.8 moveto
-12 f2
-(1994:) show
-59.4 587.8 moveto
-12 f0
-( Natural Ingredients ) show
-18.1 575.1 moveto
-3.3 3.3 c fill
-31.5 567 moveto
-12 f1
-(Lush) show
-57.5 567 moveto
-12 f0
-( ) show
-31.5 553.7 moveto
-12 f2
-(1990:) show
-59.4 553.7 moveto
-12 f0
-( Gala ) show
-31.5 540.4 moveto
-12 f2
-(1992:) show
-59.4 540.4 moveto
-12 f0
-( Spooky ) show
-31.5 527.1 moveto
-12 f2
-(1994:) show
-59.4 527.1 moveto
-12 f0
-( Split ) show
-298.1 567.5 moveto
-12 f2
-(UBL Card: ) show
-355.4 567.5 moveto
-12 f0
-(2359) show
-379.4 567.5 moveto
-12 f0
-( ) show
-298.1 554.2 moveto
-12 f2
-(See also: ) show
-344.7 554.2 moveto
-12 f0
-(isvpc146.isv.uit.no) show
-435.7 554.2 moveto
-12 f0
-( ) show
-18.1 514.4 moveto
-3.3 3.3 c fill
-31.5 506.3 moveto
-12 f1
-(Lwin, Annabella) show
-116.8 506.3 moveto
-12 f0
-( ) show
-31.5 493 moveto
-12 f2
-(1986:) show
-59.4 493 moveto
-12 f0
-( War Boys ) show
-113.7 493 moveto
-12 f2
-(\(single\)) show
-150.3 493 moveto
-12 f0
-( ) show
-31.5 479.7 moveto
-12 f2
-(1994:) show
-59.4 479.7 moveto
-12 f0
-( Car Sex ) show
-103.7 479.7 moveto
-12 f2
-(\(EP\)) show
-126.3 479.7 moveto
-12 f0
-( ) show
-300.5 506.8 moveto
-12 f2
-(UBL Card: ) show
-357.8 506.8 moveto
-12 f0
-(2301) show
-381.8 506.8 moveto
-12 f0
-( ) show
-18.1 467 moveto
-3.3 3.3 c fill
-31.5 458.9 moveto
-12 f1
-(Lycea) show
-62.1 458.9 moveto
-12 f0
-( ) show
-31.5 445.6 moveto
-12 f2
-(1993:) show
-59.4 445.6 moveto
-12 f0
-( A Day in the Stark Corner ) show
-298.1 459.4 moveto
-12 f2
-(See also: ) show
-344.7 459.4 moveto
-12 f0
-(www.projekt.com) show
-431.3 459.4 moveto
-12 f0
-( ) show
-18.1 432.9 moveto
-3.3 3.3 c fill
-31.5 424.8 moveto
-12 f1
-(M) show
-42.8 424.8 moveto
-12 f0
-( ) show
-31.5 411.5 moveto
-12 f2
-(1979:) show
-59.4 411.5 moveto
-12 f0
-( Pop Musik ) show
-117.7 411.5 moveto
-12 f2
-(\(7inch\)) show
-152.3 411.5 moveto
-12 f0
-( ) show
-18.1 398.8 moveto
-3.3 3.3 c fill
-31.5 390.7 moveto
-12 f1
-(Machines of Loving Grace) show
-167.1 390.7 moveto
-12 f0
-( ) show
-31.5 377.4 moveto
-12 f2
-(1991:) show
-59.4 377.4 moveto
-12 f0
-( Rite of Shiva ) show
-128.7 377.4 moveto
-12 f2
-(\(single\)) show
-165.3 377.4 moveto
-12 f0
-( ) show
-31.5 364.1 moveto
-12 f2
-(1991:) show
-59.4 364.1 moveto
-12 f0
-( Machines of Loving Grace ) show
-31.5 350.8 moveto
-12 f2
-(1992:) show
-59.4 350.8 moveto
-12 f0
-( Burn Like Brilliant Trash ) show
-187.7 350.8 moveto
-12 f2
-(\(EP\)) show
-210.3 350.8 moveto
-12 f0
-( ) show
-31.5 337.5 moveto
-12 f2
-(1993:) show
-59.4 337.5 moveto
-12 f0
-( Concentration ) show
-31.5 324.2 moveto
-12 f2
-(1995:) show
-59.4 324.2 moveto
-12 f0
-( Gilt ) show
-298.1 391.2 moveto
-12 f2
-(UBL Card: ) show
-355.4 391.2 moveto
-12 f0
-(1219) show
-379.4 391.2 moveto
-12 f0
-( ) show
-298.1 377.9 moveto
-12 f2
-(See also: ) show
-344.7 377.9 moveto
-12 f0
-(www.nando.net) show
-420.6 377.9 moveto
-12 f0
-( ) show
-18.1 311.5 moveto
-3.3 3.3 c fill
-31.5 303.4 moveto
-12 f1
-(M|A|R|R|S) show
-86 303.4 moveto
-12 f0
-( ) show
-31.5 290.1 moveto
-12 f2
-(1987:) show
-59.4 290.1 moveto
-12 f0
-( Pump Up the Volume / Anitina ) show
-215.7 290.1 moveto
-12 f2
-(\(single\)) show
-252.3 290.1 moveto
-12 f0
-( ) show
-18.1 277.4 moveto
-3.3 3.3 c fill
-31.5 269.3 moveto
-12 f1
-(Mallinder, Stephen) show
-130.1 269.3 moveto
-12 f0
-( ) show
-31.5 256 moveto
-12 f2
-(1982:) show
-59.4 256 moveto
-12 f0
-( Pow Wow ) show
-299.9 269.8 moveto
-12 f2
-(UBL Card: ) show
-357.2 269.8 moveto
-12 f0
-(2307) show
-381.2 269.8 moveto
-12 f0
-( ) show
-18.1 243.3 moveto
-3.3 3.3 c fill
-31.5 235.2 moveto
-12 f1
-(Manufacture) show
-98.8 235.2 moveto
-12 f0
-( ) show
-31.5 221.9 moveto
-12 f2
-(1988:) show
-59.4 221.9 moveto
-12 f0
-( Terrorvision ) show
-18.1 209.2 moveto
-3.3 3.3 c fill
-31.5 201.1 moveto
-12 f1
-(March Violets, The) show
-130.4 201.1 moveto
-12 f0
-( ) show
-31.5 187.8 moveto
-12 f2
-(1984:) show
-59.4 187.8 moveto
-12 f0
-( Natural History ) show
-31.5 174.5 moveto
-12 f2
-(1982-1984:) show
-87.4 174.5 moveto
-12 f0
-( The Botanic Verses ) show
-188 174.5 moveto
-12 f2
-(\(comp\)) show
-221.9 174.5 moveto
-12 f0
-( ) show
-31.5 161.2 moveto
-12 f2
-(1983-1985:) show
-87.4 161.2 moveto
-12 f0
-( Electric Shades ) show
-167.7 161.2 moveto
-12 f2
-(\(comp\)) show
-201.6 161.2 moveto
-12 f0
-( ) show
-31.5 147.9 moveto
-12 f2
-(1985:) show
-59.4 147.9 moveto
-12 f0
-( Deep ) show
-90.7 147.9 moveto
-12 f2
-(\(EP\)) show
-113.3 147.9 moveto
-12 f0
-( ) show
-31.5 134.6 moveto
-12 f2
-(1986:) show
-59.4 134.6 moveto
-12 f0
-( A Turn to the Sky / Never Look Back / Deep /) show
-31.5 121.3 moveto
-12 f0
-(Rebirth ) show
-70.5 121.3 moveto
-12 f2
-(\(single\)) show
-107.1 121.3 moveto
-12 f0
-( ) show
-298.1 201.6 moveto
-12 f2
-(UBL Card: ) show
-355.4 201.6 moveto
-12 f0
-(1114) show
-379.4 201.6 moveto
-12 f0
-( ) show
-298.1 188.3 moveto
-12 f2
-(See also: ) show
-344.7 188.3 moveto
-12 f0
-(www.cm.cf.ac.uk) show
-429.3 188.3 moveto
-12 f0
-( ) show
-18.1 108.6 moveto
-3.3 3.3 c fill
-31.5 100.5 moveto
-12 f1
-(Martha and the Muffins) show
-155.8 100.5 moveto
-12 f0
-( ) show
-31.5 87.2 moveto
-12 f2
-(1980-1984:) show
-87.4 87.2 moveto
-12 f0
-( Far Away in Time ) show
-181.7 87.2 moveto
-12 f2
-(\(comp\)) show
-215.6 87.2 moveto
-12 f0
-( ) show
-300.6 101 moveto
-12 f2
-(UBL Card: ) show
-357.9 101 moveto
-12 f0
-(2529) show
-381.9 101 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 17 17
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-18.1 716.6 moveto
-3.3 3.3 c fill
-31.5 708.5 moveto
-12 f1
-(Mary's Danish) show
-107.8 708.5 moveto
-12 f0
-( ) show
-31.5 695.2 moveto
-12 f2
-(1991:) show
-59.4 695.2 moveto
-12 f0
-( Circa ) show
-298.1 709 moveto
-12 f2
-(UBL Card: ) show
-355.4 709 moveto
-12 f0
-(3727) show
-379.4 709 moveto
-12 f0
-( ) show
-18.1 682.5 moveto
-3.3 3.3 c fill
-31.5 674.4 moveto
-12 f1
-(MC 900 Foot Jesus) show
-129.1 674.4 moveto
-12 f0
-( ) show
-31.5 661.1 moveto
-12 f2
-(1989:) show
-59.4 661.1 moveto
-12 f0
-( Hell With the Lid Off ) show
-31.5 647.8 moveto
-12 f2
-(1989:) show
-59.4 647.8 moveto
-12 f0
-( UFOs Are Real ) show
-140 647.8 moveto
-12 f2
-(\(EP\)) show
-162.6 647.8 moveto
-12 f0
-( ) show
-31.5 634.5 moveto
-12 f2
-(1990:) show
-59.4 634.5 moveto
-12 f0
-( Welcome to My Dream ) show
-31.5 621.2 moveto
-12 f2
-(1990:) show
-59.4 621.2 moveto
-12 f0
-( Killer Inside Me ) show
-144.7 621.2 moveto
-12 f2
-(\(EP\)) show
-167.3 621.2 moveto
-12 f0
-( ) show
-298.1 674.9 moveto
-12 f2
-(UBL Card: ) show
-355.4 674.9 moveto
-12 f0
-(1229) show
-379.4 674.9 moveto
-12 f0
-( ) show
-298.1 661.6 moveto
-12 f2
-(See also: ) show
-344.7 661.6 moveto
-12 f0
-(american.recordings.com) show
-465.9 661.6 moveto
-12 f0
-( ) show
-18.1 608.5 moveto
-3.3 3.3 c fill
-31.5 600.4 moveto
-12 f1
-(McLachlan, Sarah) show
-126.8 600.4 moveto
-12 f0
-( ) show
-31.5 587.1 moveto
-12 f2
-(1992:) show
-59.4 587.1 moveto
-12 f0
-( Into the Fire ) show
-124.7 587.1 moveto
-12 f2
-(\(single\)) show
-161.3 587.1 moveto
-12 f0
-( ) show
-302.9 600.9 moveto
-12 f2
-(UBL Card: ) show
-360.2 600.9 moveto
-12 f0
-(1389) show
-384.2 600.9 moveto
-12 f0
-( ) show
-18.1 574.4 moveto
-3.3 3.3 c fill
-31.5 566.3 moveto
-12 f1
-(Meat Beat Manifesto) show
-138.8 566.3 moveto
-12 f0
-( ) show
-31.5 553 moveto
-12 f2
-(1988:) show
-59.4 553 moveto
-12 f0
-( Armed Audio Warfare ) show
-31.5 539.7 moveto
-12 f2
-(1990:) show
-59.4 539.7 moveto
-12 f0
-( Dog Star Man ) show
-133.3 539.7 moveto
-12 f2
-(\(EP\)) show
-155.9 539.7 moveto
-12 f0
-( ) show
-31.5 526.4 moveto
-12 f2
-(1990:) show
-59.4 526.4 moveto
-12 f0
-( 99% ) show
-31.5 513.1 moveto
-12 f2
-(1990:) show
-59.4 513.1 moveto
-12 f0
-( Psyche Out ) show
-120.3 513.1 moveto
-12 f2
-(\(EP\)) show
-142.9 513.1 moveto
-12 f0
-( ) show
-31.5 499.8 moveto
-12 f2
-(1990:) show
-59.4 499.8 moveto
-12 f0
-( Now ) show
-88.7 499.8 moveto
-12 f2
-(\(EP\)) show
-111.3 499.8 moveto
-12 f0
-( ) show
-31.5 486.5 moveto
-12 f2
-(1992:) show
-59.4 486.5 moveto
-12 f0
-( Satryicon ) show
-31.5 473.2 moveto
-12 f2
-(1993:) show
-59.4 473.2 moveto
-12 f0
-( Peel Session ) show
-125.7 473.2 moveto
-12 f2
-(\(EP\)) show
-148.3 473.2 moveto
-12 f0
-( ) show
-300 566.8 moveto
-12 f2
-(UBL Card: ) show
-357.3 566.8 moveto
-12 f0
-(3626) show
-381.3 566.8 moveto
-12 f0
-( ) show
-18.1 460.5 moveto
-3.3 3.3 c fill
-31.5 452.4 moveto
-12 f1
-(Medicine) show
-78.8 452.4 moveto
-12 f0
-( ) show
-31.5 439.1 moveto
-12 f2
-(1993:) show
-59.4 439.1 moveto
-12 f0
-( The Buried Life ) show
-31.5 425.8 moveto
-12 f2
-(1994:) show
-59.4 425.8 moveto
-12 f0
-( Shot Forth Self Living ) show
-298.1 452.9 moveto
-12 f2
-(UBL Card: ) show
-355.4 452.9 moveto
-12 f0
-(1432) show
-379.4 452.9 moveto
-12 f0
-( ) show
-298.1 439.6 moveto
-12 f2
-(See also: ) show
-344.7 439.6 moveto
-12 f0
-(kspace.com) show
-401 439.6 moveto
-12 f0
-( ) show
-18.1 413.1 moveto
-3.3 3.3 c fill
-31.5 405 moveto
-12 f1
-(Mephisto Walz) show
-109.1 405 moveto
-12 f0
-( ) show
-31.5 391.7 moveto
-12 f2
-(1986-1992:) show
-87.4 391.7 moveto
-12 f0
-( Crocosmia ) show
-31.5 378.4 moveto
-12 f2
-(1993:) show
-59.4 378.4 moveto
-12 f0
-( Terra-Regina ) show
-129.3 378.4 moveto
-12 f2
-(\(comp\)) show
-163.2 378.4 moveto
-12 f0
-( ) show
-31.5 365.1 moveto
-12 f2
-(1994:) show
-59.4 365.1 moveto
-12 f0
-( The Eternal Deep ) show
-31.5 351.8 moveto
-12 f2
-(1995:) show
-59.4 351.8 moveto
-12 f0
-( Thalia ) show
-18.1 339.1 moveto
-3.3 3.3 c fill
-31.5 331 moveto
-12 f1
-(Midnight Oil) show
-98.5 331 moveto
-12 f0
-( ) show
-31.5 317.7 moveto
-12 f2
-(1979:) show
-59.4 317.7 moveto
-12 f0
-( Head Injuries ) show
-31.5 304.4 moveto
-12 f2
-(1981:) show
-59.4 304.4 moveto
-12 f0
-( Place without a Postcard ) show
-31.5 291.1 moveto
-12 f2
-(1983:) show
-59.4 291.1 moveto
-12 f0
-( 10, 9, 8, 7, 6, 5, 4, 3, 2, 1... ) show
-31.5 277.8 moveto
-12 f2
-(1985:) show
-59.4 277.8 moveto
-12 f0
-( Red Sails in the Sunset ) show
-298.1 331.5 moveto
-12 f2
-(UBL Card: ) show
-355.4 331.5 moveto
-12 f0
-(1102) show
-379.4 331.5 moveto
-12 f0
-( ) show
-298.1 318.2 moveto
-12 f2
-(See also: ) show
-344.7 318.2 moveto
-12 f0
-(www.stevens-tech.edu) show
-453.3 318.2 moveto
-12 f0
-( ) show
-18.1 265.1 moveto
-3.3 3.3 c fill
-31.5 257 moveto
-12 f1
-(Miller, Roger) show
-100.8 257 moveto
-12 f0
-( ) show
-31.5 243.7 moveto
-12 f2
-(1987:) show
-59.4 243.7 moveto
-12 f0
-( Maximum Electric Piano ) show
-18.1 231 moveto
-3.3 3.3 c fill
-31.5 222.9 moveto
-12 f1
-(Ministry) show
-76.1 222.9 moveto
-12 f0
-( ) show
-31.5 209.6 moveto
-12 f2
-(1983:) show
-59.4 209.6 moveto
-12 f0
-( With Sympathy ) show
-31.5 196.3 moveto
-12 f2
-(1984:) show
-59.4 196.3 moveto
-12 f0
-( Halloween Remix / The Nature of Outtakes) show
-31.5 183 moveto
-12 f2
-(\(EP\)) show
-54.1 183 moveto
-12 f0
-( ) show
-31.5 169.7 moveto
-12 f2
-(1981-1984:) show
-87.4 169.7 moveto
-12 f0
-( various singles ) show
-31.5 156.4 moveto
-12 f2
-(1985:) show
-59.4 156.4 moveto
-12 f0
-( Cold Life ) show
-31.5 143.1 moveto
-12 f2
-(1985:) show
-59.4 143.1 moveto
-12 f0
-( Over the Shoulder / Isle of Man ) show
-218 143.1 moveto
-12 f2
-(\(EP\)) show
-240.6 143.1 moveto
-12 f0
-( ) show
-31.5 129.8 moveto
-12 f2
-(1986:) show
-59.4 129.8 moveto
-12 f0
-( Twitch ) show
-31.5 116.5 moveto
-12 f2
-(1988:) show
-59.4 116.5 moveto
-12 f0
-( 12 Inch Singles ) show
-140 116.5 moveto
-12 f2
-(\(comp\)) show
-173.9 116.5 moveto
-12 f0
-( ) show
-31.5 103.2 moveto
-12 f2
-(1988:) show
-59.4 103.2 moveto
-12 f0
-( The Land of Rape and Honey ) show
-31.5 89.9 moveto
-12 f2
-(1988:) show
-59.4 89.9 moveto
-12 f0
-( Stigmata / Tonight we Murder ) show
-211.3 89.9 moveto
-12 f2
-(\(EP\)) show
-233.9 89.9 moveto
-12 f0
-( ) show
-31.5 76.6 moveto
-12 f2
-(1989:) show
-59.4 76.6 moveto
-12 f0
-( The Mind is a Terrible Thing to Taste ) show
-298.1 223.4 moveto
-12 f2
-(UBL Card: ) show
-355.4 223.4 moveto
-12 f0
-(1100) show
-379.4 223.4 moveto
-12 f0
-( ) show
-298.1 210.1 moveto
-12 f2
-(See also: ) show
-344.7 210.1 moveto
-12 f0
-(csclub.uwaterloo.ca) show
-440 210.1 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 18 18
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-31.5 709.2 moveto
-12 f2
-(1991:) show
-59.4 709.2 moveto
-12 f0
-( Jesus Built my Hotrod ) show
-173 709.2 moveto
-12 f2
-(\(EP\)) show
-195.6 709.2 moveto
-12 f0
-( ) show
-31.5 695.9 moveto
-12 f2
-(1992:) show
-59.4 695.9 moveto
-12 f0
-( Psalm 69 ) show
-18.1 683.2 moveto
-3.3 3.3 c fill
-31.5 675.1 moveto
-12 f1
-(Miranda Sex Garden) show
-140.1 675.1 moveto
-12 f0
-( ) show
-31.5 661.8 moveto
-12 f2
-(1991:) show
-59.4 661.8 moveto
-12 f0
-( Gush Forth my Tears ) show
-31.5 648.5 moveto
-12 f2
-(1991:) show
-59.4 648.5 moveto
-12 f0
-( Madra ) show
-31.5 635.2 moveto
-12 f2
-(1992:) show
-59.4 635.2 moveto
-12 f0
-( Iris ) show
-31.5 621.9 moveto
-12 f2
-(1993:) show
-59.4 621.9 moveto
-12 f0
-( Suspiria ) show
-31.5 608.6 moveto
-12 f2
-(1994:) show
-59.4 608.6 moveto
-12 f0
-( Fairytales of Slavery ) show
-298.1 675.6 moveto
-12 f2
-(UBL Card: ) show
-355.4 675.6 moveto
-12 f0
-(3007) show
-379.4 675.6 moveto
-12 f0
-( ) show
-298.1 662.3 moveto
-12 f2
-(See also: ) show
-344.7 662.3 moveto
-12 f0
-(sksol1.physics.sunysb.edu) show
-471 662.3 moveto
-12 f0
-( ) show
-18.1 595.9 moveto
-3.3 3.3 c fill
-31.5 587.8 moveto
-12 f1
-(Missing Persons) show
-114.5 587.8 moveto
-12 f0
-( ) show
-31.5 574.5 moveto
-12 f2
-(1982:) show
-59.4 574.5 moveto
-12 f0
-( Missing Persons ) show
-144.4 574.5 moveto
-12 f2
-(\(EP\)) show
-167 574.5 moveto
-12 f0
-( ) show
-31.5 561.2 moveto
-12 f2
-(1982:) show
-59.4 561.2 moveto
-12 f0
-( Spring Session M ) show
-31.5 547.9 moveto
-12 f2
-(1984:) show
-59.4 547.9 moveto
-12 f0
-( Rhyme & Reason ) show
-31.5 534.6 moveto
-12 f2
-(1982-1984:) show
-87.4 534.6 moveto
-12 f0
-( Best of ) show
-127.7 534.6 moveto
-12 f2
-(\(comp\)) show
-161.6 534.6 moveto
-12 f0
-( ) show
-18.1 521.9 moveto
-3.3 3.3 c fill
-31.5 513.8 moveto
-12 f1
-(Mistle Thrush) show
-104.5 513.8 moveto
-12 f0
-( ) show
-31.5 500.5 moveto
-12 f2
-(199?:) show
-59.4 500.5 moveto
-12 f0
-( Silt ) show
-31.5 487.2 moveto
-12 f2
-(1994:) show
-59.4 487.2 moveto
-12 f0
-( Agus Am\340rach ) show
-18.1 474.5 moveto
-3.3 3.3 c fill
-31.5 466.4 moveto
-12 f1
-(Mission, The) show
-97.5 466.4 moveto
-12 f0
-( ) show
-31.5 453.1 moveto
-12 f2
-(1986:) show
-59.4 453.1 moveto
-12 f0
-( God's Own Medicine ) show
-31.5 439.8 moveto
-12 f2
-(1987:) show
-59.4 439.8 moveto
-12 f0
-( the First Chapter ) show
-298.1 466.9 moveto
-12 f2
-(UBL Card: ) show
-355.4 466.9 moveto
-12 f0
-(2045) show
-379.4 466.9 moveto
-12 f0
-( ) show
-18.1 427.1 moveto
-3.3 3.3 c fill
-31.5 419 moveto
-12 f1
-(Mission of Burma) show
-123.5 419 moveto
-12 f0
-( ) show
-31.5 405.7 moveto
-12 f2
-(1987:) show
-59.4 405.7 moveto
-12 f0
-( Forget ) show
-18.1 393 moveto
-3.3 3.3 c fill
-31.5 384.9 moveto
-12 f1
-(Morissette, Alanis) show
-124.1 384.9 moveto
-12 f0
-( ) show
-31.5 371.6 moveto
-12 f2
-(1995:) show
-59.4 371.6 moveto
-12 f0
-( Jagged Little Pill ) show
-301 385.4 moveto
-12 f2
-(UBL Card: ) show
-358.3 385.4 moveto
-12 f0
-(3127) show
-382.3 385.4 moveto
-12 f0
-( ) show
-18.1 358.9 moveto
-3.3 3.3 c fill
-31.5 350.8 moveto
-12 f1
-(Morrison, Patricia) show
-126.8 350.8 moveto
-12 f0
-( ) show
-31.5 337.5 moveto
-12 f2
-(1994:) show
-59.4 337.5 moveto
-12 f0
-( Reflect on This ) show
-298.8 351.3 moveto
-12 f2
-(UBL Card: ) show
-356.1 351.3 moveto
-12 f0
-(1062) show
-380.1 351.3 moveto
-12 f0
-( ) show
-18.1 324.8 moveto
-3.3 3.3 c fill
-31.5 316.7 moveto
-12 f1
-(Moyet, Allison) show
-106.1 316.7 moveto
-12 f0
-( ) show
-31.5 303.4 moveto
-12 f2
-(1985:) show
-59.4 303.4 moveto
-12 f0
-( ALF ) show
-298.1 317.2 moveto
-12 f2
-(UBL Card: ) show
-355.4 317.2 moveto
-12 f0
-(3410) show
-379.4 317.2 moveto
-12 f0
-( ) show
-298.1 303.9 moveto
-12 f2
-(See also: ) show
-344.7 303.9 moveto
-12 f0
-(rt66.com) show
-387.6 303.9 moveto
-12 f0
-( ) show
-18.1 290.7 moveto
-3.3 3.3 c fill
-31.5 282.6 moveto
-12 f1
-(Murder Inc.) show
-94.8 282.6 moveto
-12 f0
-( ) show
-31.5 269.3 moveto
-12 f2
-(1992:) show
-59.4 269.3 moveto
-12 f0
-( Murder Inc. ) show
-18.1 256.6 moveto
-3.3 3.3 c fill
-31.5 248.5 moveto
-12 f1
-(Mussolini Headkick) show
-133.8 248.5 moveto
-12 f0
-( ) show
-31.5 235.2 moveto
-12 f2
-(1990:) show
-59.4 235.2 moveto
-12 f0
-( Blood on the Flag ) show
-18.1 222.5 moveto
-3.3 3.3 c fill
-31.5 214.4 moveto
-12 f1
-(Murphy, Peter) show
-107.4 214.4 moveto
-12 f0
-( ) show
-31.5 201.1 moveto
-12 f2
-(1986:) show
-59.4 201.1 moveto
-12 f0
-( Should the World Fail to Fall Apart ) show
-298.1 214.9 moveto
-12 f2
-(UBL Card: ) show
-355.4 214.9 moveto
-12 f0
-(1235) show
-379.4 214.9 moveto
-12 f0
-( ) show
-298.1 201.6 moveto
-12 f2
-(See also: ) show
-344.7 201.6 moveto
-12 f0
-(gothic.acs.csulb.edu) show
-441.6 201.6 moveto
-12 f0
-( ) show
-298.1 188.3 moveto
-12 f2
-(See also: ) show
-344.7 188.3 moveto
-12 f0
-(isvpc146.isv.uit.no) show
-435.7 188.3 moveto
-12 f0
-( ) show
-18.1 175.6 moveto
-3.3 3.3 c fill
-31.5 167.5 moveto
-12 f1
-(My Bloody Valentine) show
-140.1 167.5 moveto
-12 f0
-( ) show
-31.5 154.2 moveto
-12 f2
-(1988:) show
-59.4 154.2 moveto
-12 f0
-( Isn't Anything ) show
-31.5 140.9 moveto
-12 f2
-(1991:) show
-59.4 140.9 moveto
-12 f0
-( Loveless ) show
-299.1 168 moveto
-12 f2
-(UBL Card: ) show
-356.4 168 moveto
-12 f0
-(1912) show
-380.4 168 moveto
-12 f0
-( ) show
-18.1 128.2 moveto
-3.3 3.3 c fill
-31.5 120.1 moveto
-12 f1
-(My Life with the Thrill Kill Kult) show
-198.8 120.1 moveto
-12 f0
-( ) show
-31.5 106.8 moveto
-12 f2
-(1988:) show
-59.4 106.8 moveto
-12 f0
-( I See Good Spirits and I See Bad Spirits ) show
-31.5 93.5 moveto
-12 f2
-(1989:) show
-59.4 93.5 moveto
-12 f0
-( K00Ler than Jesus ) show
-31.5 80.2 moveto
-12 f2
-(1990:) show
-59.4 80.2 moveto
-12 f0
-( Confessions of a Knife... ) show
-302.9 120.6 moveto
-12 f2
-(UBL Card: ) show
-360.2 120.6 moveto
-12 f0
-(3478) show
-384.2 120.6 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 19 19
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-31.5 709.2 moveto
-12 f2
-(1990:) show
-59.4 709.2 moveto
-12 f0
-( Swine & Roses / Naive \(KMFDM\) ) show
-233.7 709.2 moveto
-12 f2
-(\(single\)) show
-270.3 709.2 moveto
-12 f0
-( ) show
-18.1 696.5 moveto
-3.3 3.3 c fill
-31.5 688.4 moveto
-12 f1
-(Neither/Neither World) show
-148.4 688.4 moveto
-12 f0
-( ) show
-31.5 675.1 moveto
-12 f2
-(1994:) show
-59.4 675.1 moveto
-12 f0
-( Tales of True Crime ) show
-18.1 662.4 moveto
-3.3 3.3 c fill
-31.5 654.3 moveto
-12 f1
-(Neotek) show
-67.4 654.3 moveto
-12 f0
-( ) show
-31.5 641 moveto
-12 f2
-(1995:) show
-59.4 641 moveto
-12 f0
-( Brain over Muscle ) show
-18.1 628.3 moveto
-3.3 3.3 c fill
-31.5 620.2 moveto
-12 f1
-(New Fast Automatic Daffodils) show
-185.8 620.2 moveto
-12 f0
-( ) show
-31.5 606.9 moveto
-12 f2
-(1991:) show
-59.4 606.9 moveto
-12 f0
-( Pigeonhole ) show
-31.5 593.6 moveto
-12 f2
-(1992:) show
-59.4 593.6 moveto
-12 f0
-( Bong ) show
-18.1 580.9 moveto
-3.3 3.3 c fill
-31.5 572.8 moveto
-12 f1
-(New Order) show
-89.1 572.8 moveto
-12 f0
-( ) show
-31.5 559.5 moveto
-12 f2
-(1981:) show
-59.4 559.5 moveto
-12 f0
-( Movement ) show
-31.5 546.2 moveto
-12 f2
-(1981:) show
-59.4 546.2 moveto
-12 f0
-( Temptation / Hurt ) show
-152 546.2 moveto
-12 f2
-(\(single\)) show
-188.6 546.2 moveto
-12 f0
-( ) show
-31.5 532.9 moveto
-12 f2
-(1982:) show
-59.4 532.9 moveto
-12 f0
-( Factus 8 ) show
-31.5 519.6 moveto
-12 f2
-(1984:) show
-59.4 519.6 moveto
-12 f0
-( Power, Corruption, and Lies ) show
-31.5 506.3 moveto
-12 f2
-(1984:) show
-59.4 506.3 moveto
-12 f0
-( Blue Monday ) show
-131 506.3 moveto
-12 f2
-(\(single\)) show
-167.6 506.3 moveto
-12 f0
-( ) show
-31.5 493 moveto
-12 f2
-(1985:) show
-59.4 493 moveto
-12 f0
-( The Perfect Kiss ) show
-145.3 493 moveto
-12 f2
-(\(single\)) show
-181.9 493 moveto
-12 f0
-( ) show
-31.5 479.7 moveto
-12 f2
-(1985:) show
-59.4 479.7 moveto
-12 f0
-( Confusion ) show
-115.4 479.7 moveto
-12 f2
-(\(single\)) show
-152 479.7 moveto
-12 f0
-( ) show
-31.5 466.4 moveto
-12 f2
-(1985:) show
-59.4 466.4 moveto
-12 f0
-( Low Life ) show
-31.5 453.1 moveto
-12 f2
-(1983-5:) show
-69.4 453.1 moveto
-12 f0
-( various singles ) show
-31.5 439.8 moveto
-12 f2
-(1986:) show
-59.4 439.8 moveto
-12 f0
-( Brotherhood ) show
-298.1 573.3 moveto
-12 f2
-(UBL Card: ) show
-355.4 573.3 moveto
-12 f0
-(1126) show
-379.4 573.3 moveto
-12 f0
-( ) show
-298.1 560 moveto
-12 f2
-(See also: ) show
-344.7 560 moveto
-12 f0
-(topquark.cecer.army.mil) show
-462.3 560 moveto
-12 f0
-( ) show
-18.1 427.1 moveto
-3.3 3.3 c fill
-31.5 419 moveto
-12 f1
-(Nine Inch Nails) show
-110.8 419 moveto
-12 f0
-( ) show
-31.5 405.7 moveto
-12 f2
-(1989:) show
-59.4 405.7 moveto
-12 f0
-( Pretty Hate Machine ) show
-31.5 392.4 moveto
-12 f2
-(1989:) show
-59.4 392.4 moveto
-12 f0
-( Head Like a Hole ) show
-150.3 392.4 moveto
-12 f2
-(\(remixes\)) show
-195.6 392.4 moveto
-12 f0
-( ) show
-31.5 379.1 moveto
-12 f2
-(1990:) show
-59.4 379.1 moveto
-12 f0
-( Sin ) show
-81.4 379.1 moveto
-12 f2
-(\(remixes\)) show
-126.7 379.1 moveto
-12 f0
-( ) show
-31.5 365.8 moveto
-12 f2
-(1992:) show
-59.4 365.8 moveto
-12 f0
-( Broken ) show
-100.7 365.8 moveto
-12 f2
-(\(EP\)) show
-123.3 365.8 moveto
-12 f0
-( ) show
-31.5 352.5 moveto
-12 f2
-(1992:) show
-59.4 352.5 moveto
-12 f0
-( Fixed ) show
-92.7 352.5 moveto
-12 f2
-(\(remixes\)) show
-138 352.5 moveto
-12 f0
-( ) show
-31.5 339.2 moveto
-12 f2
-(1994:) show
-59.4 339.2 moveto
-12 f0
-( March of the Pigs ) show
-151 339.2 moveto
-12 f2
-(\(EP\)) show
-173.6 339.2 moveto
-12 f0
-( ) show
-31.5 325.9 moveto
-12 f2
-(1994:) show
-59.4 325.9 moveto
-12 f0
-( The Downward Spiral ) show
-31.5 312.6 moveto
-12 f2
-(1994:) show
-59.4 312.6 moveto
-12 f0
-( Closer to God ) show
-132.7 312.6 moveto
-12 f2
-(\(EP\)) show
-155.3 312.6 moveto
-12 f0
-( ) show
-31.5 299.3 moveto
-12 f2
-(1994:) show
-59.4 299.3 moveto
-12 f0
-( Closer \(Further Away\) ) show
-174.7 299.3 moveto
-12 f2
-(\(EP\)) show
-197.3 299.3 moveto
-12 f0
-( ) show
-31.5 286 moveto
-12 f2
-(1994:) show
-59.4 286 moveto
-12 f0
-( Further Down the Spiral ) show
-182.3 286 moveto
-12 f2
-(\(remixes\)) show
-227.6 286 moveto
-12 f0
-( ) show
-298.1 419.5 moveto
-12 f2
-(UBL Card: ) show
-355.4 419.5 moveto
-12 f0
-(1046) show
-379.4 419.5 moveto
-12 f0
-( ) show
-298.1 406.2 moveto
-12 f2
-(See also: ) show
-344.7 406.2 moveto
-12 f0
-(www.scri.fsu.edu) show
-429 406.2 moveto
-12 f0
-( ) show
-298.1 392.9 moveto
-12 f2
-(See also: ) show
-344.7 392.9 moveto
-12 f0
-(metaverse.com) show
-417 392.9 moveto
-12 f0
-( ) show
-18.1 273.3 moveto
-3.3 3.3 c fill
-31.5 265.2 moveto
-12 f1
-(Nirvana) show
-73.5 265.2 moveto
-12 f0
-( ) show
-31.5 251.9 moveto
-12 f2
-(1991:) show
-59.4 251.9 moveto
-12 f0
-( Nevermind ) show
-298.1 265.7 moveto
-12 f2
-(UBL Card: ) show
-355.4 265.7 moveto
-12 f0
-(1052) show
-379.4 265.7 moveto
-12 f0
-( ) show
-298.1 252.4 moveto
-12 f2
-(See also: ) show
-344.7 252.4 moveto
-12 f0
-(www.ludd.luth.se) show
-429.6 252.4 moveto
-12 f0
-( ) show
-298.1 239.1 moveto
-12 f2
-(See also: ) show
-344.7 239.1 moveto
-12 f0
-(home.earthlink.net) show
-434.7 239.1 moveto
-12 f0
-( ) show
-18.1 226.4 moveto
-3.3 3.3 c fill
-31.5 218.3 moveto
-12 f1
-(Nitzer Ebb) show
-87.8 218.3 moveto
-12 f0
-( ) show
-31.5 205 moveto
-12 f2
-(1987:) show
-59.4 205 moveto
-12 f0
-( That Total Age ) show
-31.5 191.7 moveto
-12 f2
-(1987:) show
-59.4 191.7 moveto
-12 f0
-( Warsaw Ghetto ) show
-140.3 191.7 moveto
-12 f2
-(\(EP\)) show
-162.9 191.7 moveto
-12 f0
-( ) show
-31.5 178.4 moveto
-12 f2
-(1987:) show
-59.4 178.4 moveto
-12 f0
-( So Bright So Strong ) show
-162.4 178.4 moveto
-12 f2
-(\(remixes\)) show
-207.7 178.4 moveto
-12 f0
-( ) show
-31.5 165.1 moveto
-12 f2
-(1987:) show
-59.4 165.1 moveto
-12 f0
-( Get Clean ) show
-113.7 165.1 moveto
-12 f2
-(\(remixes\)) show
-159 165.1 moveto
-12 f0
-( ) show
-31.5 151.8 moveto
-12 f2
-(1988:) show
-59.4 151.8 moveto
-12 f0
-( Control: I'm Here ) show
-152 151.8 moveto
-12 f2
-(\(single\)) show
-188.6 151.8 moveto
-12 f0
-( ) show
-31.5 138.5 moveto
-12 f2
-(1989:) show
-59.4 138.5 moveto
-12 f0
-( Hearts and Minds ) show
-150.7 138.5 moveto
-12 f2
-(\(single\)) show
-187.3 138.5 moveto
-12 f0
-( ) show
-31.5 125.2 moveto
-12 f2
-(1989:) show
-59.4 125.2 moveto
-12 f0
-( Belief ) show
-31.5 111.9 moveto
-12 f2
-(1990:) show
-59.4 111.9 moveto
-12 f0
-( Showtime ) show
-31.5 98.6 moveto
-12 f2
-(1991:) show
-59.4 98.6 moveto
-12 f0
-( I Give to You ) show
-131.7 98.6 moveto
-12 f2
-(\(single\)) show
-168.3 98.6 moveto
-12 f0
-( ) show
-31.5 85.3 moveto
-12 f2
-(1991:) show
-59.4 85.3 moveto
-12 f0
-( As Is ) show
-90.3 85.3 moveto
-12 f2
-(\(single\)) show
-126.9 85.3 moveto
-12 f0
-( ) show
-298.1 218.8 moveto
-12 f2
-(UBL Card: ) show
-355.4 218.8 moveto
-12 f0
-(1164) show
-379.4 218.8 moveto
-12 f0
-( ) show
-298.1 205.5 moveto
-12 f2
-(See also: ) show
-344.7 205.5 moveto
-12 f0
-(www.eecs.nwu.edu) show
-438.3 205.5 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 20 20
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-31.5 709.2 moveto
-12 f2
-(1991:) show
-59.4 709.2 moveto
-12 f0
-( Ebbhead ) show
-31.5 695.9 moveto
-12 f2
-(1991:) show
-59.4 695.9 moveto
-12 f0
-( Godhead ) show
-108.7 695.9 moveto
-12 f2
-(\(EP\)) show
-131.3 695.9 moveto
-12 f0
-( ) show
-18.1 683.2 moveto
-3.3 3.3 c fill
-31.5 675.1 moveto
-12 f1
-(No Doubt) show
-81.1 675.1 moveto
-12 f0
-( ) show
-31.5 661.8 moveto
-12 f2
-(1995:) show
-59.4 661.8 moveto
-12 f0
-( Tragic Kingdom ) show
-18.1 649.1 moveto
-3.3 3.3 c fill
-31.5 641 moveto
-12 f1
-(Noise Unit) show
-85.1 641 moveto
-12 f0
-( ) show
-31.5 627.7 moveto
-12 f2
-(1989:) show
-59.4 627.7 moveto
-12 f0
-( Grinding Into Emptiness ) show
-18.1 615 moveto
-3.3 3.3 c fill
-31.5 606.9 moveto
-12 f1
-(Nosferatu) show
-82.1 606.9 moveto
-12 f0
-( ) show
-31.5 593.6 moveto
-12 f2
-(1993:) show
-59.4 593.6 moveto
-12 f0
-( Rise ) show
-18.1 580.9 moveto
-3.3 3.3 c fill
-31.5 572.8 moveto
-12 f1
-(Numan, Gary) show
-102.1 572.8 moveto
-12 f0
-( ) show
-31.5 559.5 moveto
-12 f2
-(1978:) show
-59.4 559.5 moveto
-12 f0
-( Tubeway Army ) show
-31.5 546.2 moveto
-12 f2
-(1978:) show
-59.4 546.2 moveto
-12 f0
-( The Plan ) show
-31.5 532.9 moveto
-12 f2
-(1979:) show
-59.4 532.9 moveto
-12 f0
-( Replicas ) show
-31.5 519.6 moveto
-12 f2
-(1979:) show
-59.4 519.6 moveto
-12 f0
-( The Pleasure Principle ) show
-31.5 506.3 moveto
-12 f2
-(1980:) show
-59.4 506.3 moveto
-12 f0
-( Telekon ) show
-31.5 493 moveto
-12 f2
-(1981:) show
-59.4 493 moveto
-12 f0
-( Warriors ) show
-31.5 479.7 moveto
-12 f2
-(1981:) show
-59.4 479.7 moveto
-12 f0
-( Dance ) show
-31.5 466.4 moveto
-12 f2
-(1982:) show
-59.4 466.4 moveto
-12 f0
-( I, Assassin ) show
-31.5 453.1 moveto
-12 f2
-(1984:) show
-59.4 453.1 moveto
-12 f0
-( White Noise ) show
-125.7 453.1 moveto
-12 f2
-(\(double live\)) show
-186.6 453.1 moveto
-12 f0
-( ) show
-31.5 439.8 moveto
-12 f2
-(1987:) show
-59.4 439.8 moveto
-12 f0
-( Ghost ) show
-94 439.8 moveto
-12 f2
-(\(double live\)) show
-154.9 439.8 moveto
-12 f0
-( ) show
-298.1 573.3 moveto
-12 f2
-(UBL Card: ) show
-355.4 573.3 moveto
-12 f0
-(1409) show
-379.4 573.3 moveto
-12 f0
-( ) show
-18.1 427.1 moveto
-3.3 3.3 c fill
-31.5 419 moveto
-12 f1
-(Offspring) show
-81.5 419 moveto
-12 f0
-( ) show
-31.5 405.7 moveto
-12 f2
-(1994:) show
-59.4 405.7 moveto
-12 f0
-( Smash ) show
-18.1 393 moveto
-3.3 3.3 c fill
-31.5 384.9 moveto
-12 f1
-(Oingo Boingo) show
-101.8 384.9 moveto
-12 f0
-( ) show
-31.5 371.6 moveto
-12 f2
-(1980:) show
-59.4 371.6 moveto
-12 f0
-( Forbidden Zone ) show
-142.3 371.6 moveto
-12 f2
-(\(soundtrack\)) show
-203.6 371.6 moveto
-12 f0
-( ) show
-31.5 358.3 moveto
-12 f2
-(1981:) show
-59.4 358.3 moveto
-12 f0
-( Only a Lad ) show
-31.5 345 moveto
-12 f2
-(1983:) show
-59.4 345 moveto
-12 f0
-( Good for Your Soul ) show
-31.5 331.7 moveto
-12 f2
-(1986:) show
-59.4 331.7 moveto
-12 f0
-( Dead Man's Party ) show
-31.5 318.4 moveto
-12 f2
-(1987:) show
-59.4 318.4 moveto
-12 f0
-( Nothing to Fear ) show
-298.1 385.4 moveto
-12 f2
-(UBL Card: ) show
-355.4 385.4 moveto
-12 f0
-(1089) show
-379.4 385.4 moveto
-12 f0
-( ) show
-298.1 372.1 moveto
-12 f2
-(See also: ) show
-344.7 372.1 moveto
-12 f0
-(rhino.harvard.edu) show
-430 372.1 moveto
-12 f0
-( ) show
-18.1 305.7 moveto
-3.3 3.3 c fill
-31.5 297.6 moveto
-12 f1
-(Orb, The) show
-78.8 297.6 moveto
-12 f0
-( ) show
-31.5 284.3 moveto
-12 f2
-(1991:) show
-59.4 284.3 moveto
-12 f0
-( The Orb's Adventures Beyond the Ultraworld ) show
-31.5 271 moveto
-12 f2
-(1991:) show
-59.4 271 moveto
-12 f0
-( Aubrey Mixes, the Ultraworld Excursions ) show
-31.5 257.7 moveto
-12 f2
-(1991:) show
-59.4 257.7 moveto
-12 f0
-( Little Fluffy Clouds ) show
-161.4 257.7 moveto
-12 f2
-(\(EP\)) show
-184 257.7 moveto
-12 f0
-( ) show
-31.5 244.4 moveto
-12 f2
-(1992:) show
-59.4 244.4 moveto
-12 f0
-( U.F.Orb ) show
-31.5 231.1 moveto
-12 f2
-(1993:) show
-59.4 231.1 moveto
-12 f0
-( live 93 ) show
-98.4 231.1 moveto
-12 f2
-(\(double live\)) show
-159.3 231.1 moveto
-12 f0
-( ) show
-31.5 217.8 moveto
-12 f2
-(1994:) show
-59.4 217.8 moveto
-12 f0
-( Pomme Fritz ) show
-298.1 298.1 moveto
-12 f2
-(UBL Card: ) show
-355.4 298.1 moveto
-12 f0
-(1121) show
-379.4 298.1 moveto
-12 f0
-( ) show
-298.1 284.8 moveto
-12 f2
-(See also: ) show
-344.7 284.8 moveto
-12 f0
-(www.hyperlink.com) show
-443.3 284.8 moveto
-12 f0
-( ) show
-298.1 271.5 moveto
-12 f2
-(See also: ) show
-344.7 271.5 moveto
-12 f0
-(www.phlab.missouri.edu) show
-465 271.5 moveto
-12 f0
-( ) show
-298.1 258.2 moveto
-12 f2
-(See also: ) show
-344.7 258.2 moveto
-12 f0
-(rt66.com) show
-387.6 258.2 moveto
-12 f0
-( ) show
-18.1 205.1 moveto
-3.3 3.3 c fill
-31.5 197 moveto
-12 f1
-(Orbital) show
-69.5 197 moveto
-12 f0
-( ) show
-31.5 183.7 moveto
-12 f2
-(1993:) show
-59.4 183.7 moveto
-12 f0
-( Orbital 2 ) show
-298.1 197.5 moveto
-12 f2
-(UBL Card: ) show
-355.4 197.5 moveto
-12 f0
-(2049) show
-379.4 197.5 moveto
-12 f0
-( ) show
-298.1 184.2 moveto
-12 f2
-(See also: ) show
-344.7 184.2 moveto
-12 f0
-(rt66.com) show
-387.6 184.2 moveto
-12 f0
-( ) show
-18.1 171 moveto
-3.3 3.3 c fill
-31.5 162.9 moveto
-12 f1
-(Orchestral Manoeuvers in the Dark) show
-214.8 162.9 moveto
-12 f0
-( ) show
-31.5 149.6 moveto
-12 f2
-(1980:) show
-59.4 149.6 moveto
-12 f0
-( OMD ) show
-93.3 149.6 moveto
-12 f2
-(\(US release\)) show
-153.6 149.6 moveto
-12 f0
-( ) show
-31.5 136.3 moveto
-12 f2
-(1980:) show
-59.4 136.3 moveto
-12 f0
-( OMD ) show
-93.3 136.3 moveto
-12 f2
-(\(UK release\)) show
-155.6 136.3 moveto
-12 f0
-( ) show
-31.5 123 moveto
-12 f2
-(1981:) show
-59.4 123 moveto
-12 f0
-( Bunker Soldiers ) show
-31.5 109.7 moveto
-12 f2
-(1981:) show
-59.4 109.7 moveto
-12 f0
-( Architecture & Morality ) show
-31.5 96.4 moveto
-12 f2
-(1983:) show
-59.4 96.4 moveto
-12 f0
-( Dazzle Ships ) show
-31.5 83.1 moveto
-12 f2
-(1984:) show
-59.4 83.1 moveto
-12 f0
-( Junk Culture ) show
-304.9 163.4 moveto
-12 f2
-(UBL Card: ) show
-362.2 163.4 moveto
-12 f0
-(5370) show
-386.2 163.4 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 21 21
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-31.5 709.2 moveto
-12 f2
-(1985:) show
-59.4 709.2 moveto
-12 f0
-( Crush ) show
-18.1 696.5 moveto
-3.3 3.3 c fill
-31.5 688.4 moveto
-12 f1
-(Oxygiene 23) show
-94.5 688.4 moveto
-12 f0
-( ) show
-31.5 675.1 moveto
-12 f2
-(1995:) show
-59.4 675.1 moveto
-12 f0
-( Blue ) show
-18.1 662.4 moveto
-3.3 3.3 c fill
-31.5 654.3 moveto
-12 f1
-(187 Calm) show
-80.4 654.3 moveto
-12 f0
-( ) show
-31.5 641 moveto
-12 f2
-(1995:) show
-59.4 641 moveto
-12 f0
-( One Eighty Seven Calm ) show
-181.7 641 moveto
-12 f2
-(\(EP\)) show
-204.3 641 moveto
-12 f0
-( ) show
-18.1 628.3 moveto
-3.3 3.3 c fill
-31.5 620.2 moveto
-12 f1
-(1000 Homo DJs) show
-112.1 620.2 moveto
-12 f0
-( ) show
-31.5 606.9 moveto
-12 f2
-(1990:) show
-59.4 606.9 moveto
-12 f0
-( Supernaut ) show
-114 606.9 moveto
-12 f2
-(\(EP\)) show
-136.6 606.9 moveto
-12 f0
-( ) show
-18.1 594.2 moveto
-3.3 3.3 c fill
-31.5 586.1 moveto
-12 f1
-(Opus III) show
-75.8 586.1 moveto
-12 f0
-( ) show
-31.5 572.8 moveto
-12 f2
-(1991:) show
-59.4 572.8 moveto
-12 f0
-( Mind Fruit ) show
-31.5 559.5 moveto
-12 f2
-(1994:) show
-59.4 559.5 moveto
-12 f0
-( Guru Mother ) show
-18.1 546.8 moveto
-3.3 3.3 c fill
-31.5 538.7 moveto
-12 f1
-(Pain Teens) show
-87.8 538.7 moveto
-12 f0
-( ) show
-31.5 525.4 moveto
-12 f2
-(1990:) show
-59.4 525.4 moveto
-12 f0
-( Born in Blood / Case Histories ) show
-31.5 512.1 moveto
-12 f2
-(1992:) show
-59.4 512.1 moveto
-12 f0
-( Stimulation Festival ) show
-31.5 498.8 moveto
-12 f2
-(1993:) show
-59.4 498.8 moveto
-12 f0
-( Destroy Me, Lover ) show
-31.5 485.5 moveto
-12 f2
-(1995:) show
-59.4 485.5 moveto
-12 f0
-( Beast of Dreams ) show
-18.1 472.8 moveto
-3.3 3.3 c fill
-31.5 464.7 moveto
-12 f1
-(Paralysed Age) show
-105.1 464.7 moveto
-12 f0
-( ) show
-31.5 451.4 moveto
-12 f2
-(1994:) show
-59.4 451.4 moveto
-12 f0
-( Nocturne ) show
-18.1 438.7 moveto
-3.3 3.3 c fill
-31.5 430.6 moveto
-12 f1
-(Pigface) show
-68.8 430.6 moveto
-12 f0
-( ) show
-31.5 417.3 moveto
-12 f2
-(1990:) show
-59.4 417.3 moveto
-12 f0
-( Gub ) show
-298.1 431.1 moveto
-12 f2
-(UBL Card: ) show
-355.4 431.1 moveto
-12 f0
-(1165) show
-379.4 431.1 moveto
-12 f0
-( ) show
-298.1 417.8 moveto
-12 f2
-(See also: ) show
-344.7 417.8 moveto
-12 f0
-(www.eecs.nwu.edu) show
-438.3 417.8 moveto
-12 f0
-( ) show
-18.1 404.6 moveto
-3.3 3.3 c fill
-31.5 396.5 moveto
-12 f1
-(Pink Floyd) show
-87.8 396.5 moveto
-12 f0
-( ) show
-31.5 383.2 moveto
-12 f2
-(1973:) show
-59.4 383.2 moveto
-12 f0
-( Dark Side of the Moon ) show
-31.5 369.9 moveto
-12 f2
-(1975:) show
-59.4 369.9 moveto
-12 f0
-( Wish You were Here ) show
-31.5 356.6 moveto
-12 f2
-(1978:) show
-59.4 356.6 moveto
-12 f0
-( The Wall ) show
-110.3 356.6 moveto
-12 f2
-(\(double soundtrack\)) show
-207.2 356.6 moveto
-12 f0
-( ) show
-31.5 343.3 moveto
-12 f2
-(1981:) show
-59.4 343.3 moveto
-12 f0
-( A Collection of Great Dance Songs ) show
-235.7 343.3 moveto
-12 f2
-(\(comp\)) show
-269.6 343.3 moveto
-12 f0
-( ) show
-31.5 330 moveto
-12 f2
-(1995:) show
-59.4 330 moveto
-12 f0
-( A Saucerful of Pink: a Tribute ) show
-211 330 moveto
-12 f2
-(\(double, various\)) show
-293.6 330 moveto
-12 f0
-( ) show
-302.4 397 moveto
-12 f2
-(UBL Card: ) show
-359.7 397 moveto
-12 f0
-(1008) show
-383.7 397 moveto
-12 f0
-( ) show
-18.1 317.3 moveto
-3.3 3.3 c fill
-31.5 309.2 moveto
-12 f1
-(Polygon Window) show
-119.1 309.2 moveto
-12 f0
-( ) show
-31.5 295.9 moveto
-12 f2
-(1993:) show
-59.4 295.9 moveto
-12 f0
-( Surfing on Sine Waves ) show
-298.1 309.7 moveto
-12 f2
-(UBL Card: ) show
-355.4 309.7 moveto
-12 f0
-(5279) show
-379.4 309.7 moveto
-12 f0
-( ) show
-18.1 283.2 moveto
-3.3 3.3 c fill
-31.5 275.1 moveto
-12 f1
-(Police) show
-62.1 275.1 moveto
-12 f0
-( ) show
-31.5 261.8 moveto
-12 f2
-(1979:) show
-59.4 261.8 moveto
-12 f0
-( Outlandos D'Amour ) show
-31.5 248.5 moveto
-12 f2
-(1980:) show
-59.4 248.5 moveto
-12 f0
-( Ghost in the Machine ) show
-31.5 235.2 moveto
-12 f2
-(1981:) show
-59.4 235.2 moveto
-12 f0
-( Zenyatta Mondatta ) show
-31.5 221.9 moveto
-12 f2
-(1983:) show
-59.4 221.9 moveto
-12 f0
-( Synchronicity ) show
-306.4 275.6 moveto
-12 f2
-(UBL Card: ) show
-363.7 275.6 moveto
-12 f0
-(1172) show
-387.7 275.6 moveto
-12 f0
-( ) show
-18.1 209.2 moveto
-3.3 3.3 c fill
-31.5 201.1 moveto
-12 f1
-(Poe) show
-50.1 201.1 moveto
-12 f0
-( ) show
-31.5 187.8 moveto
-12 f2
-(1995:) show
-59.4 187.8 moveto
-12 f0
-( Hello ) show
-18.1 175.1 moveto
-3.3 3.3 c fill
-31.5 167 moveto
-12 f1
-(Pop, Iggy) show
-80.1 167 moveto
-12 f0
-( ) show
-31.5 153.7 moveto
-12 f2
-(1977:) show
-59.4 153.7 moveto
-12 f0
-( Lust for Life ) show
-298.1 167.5 moveto
-12 f2
-(UBL Card: ) show
-355.4 167.5 moveto
-12 f0
-(4345) show
-379.4 167.5 moveto
-12 f0
-( ) show
-18.1 141 moveto
-3.3 3.3 c fill
-31.5 132.9 moveto
-12 f1
-(Powerman 5000) show
-113.8 132.9 moveto
-12 f0
-( ) show
-31.5 119.6 moveto
-12 f2
-(1995:) show
-59.4 119.6 moveto
-12 f0
-( The Blood Splat Rating System ) show
-18.1 106.9 moveto
-3.3 3.3 c fill
-31.5 98.8 moveto
-12 f1
-(Powerstation, The) show
-124.8 98.8 moveto
-12 f0
-( ) show
-31.5 85.5 moveto
-12 f2
-(1985:) show
-59.4 85.5 moveto
-12 f0
-( The Powerstation ) show
-306.4 99.3 moveto
-12 f2
-(UBL Card: ) show
-363.7 99.3 moveto
-12 f0
-(1259) show
-387.7 99.3 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 22 22
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-18.1 716.6 moveto
-3.3 3.3 c fill
-31.5 708.5 moveto
-12 f1
-(Pram) show
-60.1 708.5 moveto
-12 f0
-( ) show
-31.5 695.2 moveto
-12 f2
-(199?:) show
-59.4 695.2 moveto
-12 f0
-( Iron Lung ) show
-113.7 695.2 moveto
-12 f2
-(\(EP\)) show
-136.3 695.2 moveto
-12 f0
-( ) show
-31.5 681.9 moveto
-12 f2
-(1995:) show
-59.4 681.9 moveto
-12 f0
-( Helium ) show
-31.5 668.6 moveto
-12 f2
-(1995:) show
-59.4 668.6 moveto
-12 f0
-( Sargasso Sea ) show
-18.1 655.9 moveto
-3.3 3.3 c fill
-31.5 647.8 moveto
-12 f1
-(Prick) show
-59.4 647.8 moveto
-12 f0
-( ) show
-31.5 634.5 moveto
-12 f2
-(1995:) show
-59.4 634.5 moveto
-12 f0
-( Prick ) show
-298.1 648.3 moveto
-12 f2
-(UBL Card: ) show
-355.4 648.3 moveto
-12 f0
-(3683) show
-379.4 648.3 moveto
-12 f0
-( ) show
-18.1 621.8 moveto
-3.3 3.3 c fill
-31.5 613.7 moveto
-12 f1
-(Primus) show
-68.8 613.7 moveto
-12 f0
-( ) show
-31.5 600.4 moveto
-12 f2
-(1991:) show
-59.4 600.4 moveto
-12 f0
-( Sailing on the Seas of Cheese ) show
-298.1 614.2 moveto
-12 f2
-(UBL Card: ) show
-355.4 614.2 moveto
-12 f0
-(1055) show
-379.4 614.2 moveto
-12 f0
-( ) show
-18.1 587.7 moveto
-3.3 3.3 c fill
-31.5 579.6 moveto
-12 f1
-(Project Pitchfork) show
-120.4 579.6 moveto
-12 f0
-( ) show
-31.5 566.3 moveto
-12 f2
-(1991:) show
-59.4 566.3 moveto
-12 f0
-( Dhyani ) show
-18.1 553.6 moveto
-3.3 3.3 c fill
-31.5 545.5 moveto
-12 f1
-(Propaganda) show
-94.1 545.5 moveto
-12 f0
-( ) show
-31.5 532.2 moveto
-12 f2
-(1985:) show
-59.4 532.2 moveto
-12 f0
-( A Secret Wish, US version ) show
-31.5 518.9 moveto
-12 f2
-(1985:) show
-59.4 518.9 moveto
-12 f0
-( A Secret Wish, UK version ) show
-197 518.9 moveto
-12 f2
-(\(remixes\)) show
-242.3 518.9 moveto
-12 f0
-( ) show
-31.5 505.6 moveto
-12 f2
-(1985:) show
-59.4 505.6 moveto
-12 f0
-( p:machinery \(polish / passive\) / Frozen Faces) show
-31.5 492.3 moveto
-12 f2
-(\(single\)) show
-68.1 492.3 moveto
-12 f0
-( ) show
-31.5 479 moveto
-12 f2
-(1985:) show
-59.4 479 moveto
-12 f0
-( Duel / Jewel ) show
-125.3 479 moveto
-12 f2
-(\(single\)) show
-161.9 479 moveto
-12 f0
-( ) show
-31.5 465.7 moveto
-12 f2
-(1985:) show
-59.4 465.7 moveto
-12 f0
-( Wishful Thinking ) show
-151 465.7 moveto
-12 f2
-(\(remixes\)) show
-196.3 465.7 moveto
-12 f0
-( ) show
-31.5 452.4 moveto
-12 f2
-(1990:) show
-59.4 452.4 moveto
-12 f0
-( Heaven Give Me Words ) show
-182.3 452.4 moveto
-12 f2
-(\(EP\)) show
-204.9 452.4 moveto
-12 f0
-( ) show
-31.5 439.1 moveto
-12 f2
-(1995:) show
-59.4 439.1 moveto
-12 f0
-( p:machinery t-empo remix ) show
-193.3 439.1 moveto
-12 f2
-(\(single\)) show
-229.9 439.1 moveto
-12 f0
-( ) show
-298.1 546 moveto
-12 f2
-(UBL Card: ) show
-355.4 546 moveto
-12 f0
-(4636) show
-379.4 546 moveto
-12 f0
-( ) show
-298.1 532.7 moveto
-12 f2
-(See also: ) show
-344.7 532.7 moveto
-12 f0
-(rt66.com) show
-387.6 532.7 moveto
-12 f0
-( ) show
-298.1 519.4 moveto
-12 f2
-(See also: ) show
-344.7 519.4 moveto
-12 f0
-(hcl.chass.ncsu.edu) show
-433.6 519.4 moveto
-12 f0
-( ) show
-18.1 426.4 moveto
-3.3 3.3 c fill
-31.5 418.3 moveto
-12 f1
-(Prophetess, The) show
-113.4 418.3 moveto
-12 f0
-( ) show
-31.5 405 moveto
-12 f2
-(1993:) show
-59.4 405 moveto
-12 f0
-( The Prophetess ) show
-18.1 392.3 moveto
-3.3 3.3 c fill
-31.5 384.2 moveto
-12 f1
-(Public Image Limited) show
-142.8 384.2 moveto
-12 f0
-( ) show
-31.5 370.9 moveto
-12 f2
-(1985:) show
-59.4 370.9 moveto
-12 f0
-( Album ) show
-18.1 358.2 moveto
-3.3 3.3 c fill
-31.5 350.1 moveto
-12 f1
-(Rage Against the Machine) show
-166.4 350.1 moveto
-12 f0
-( ) show
-31.5 336.8 moveto
-12 f2
-(1992:) show
-59.4 336.8 moveto
-12 f0
-( Rage Against the Machine ) show
-298.1 350.6 moveto
-12 f2
-(UBL Card: ) show
-355.4 350.6 moveto
-12 f0
-(1424) show
-379.4 350.6 moveto
-12 f0
-( ) show
-18.1 324.1 moveto
-3.3 3.3 c fill
-31.5 316 moveto
-12 f1
-(Romeo Void) show
-95.1 316 moveto
-12 f0
-( ) show
-31.5 302.7 moveto
-12 f2
-(1981:) show
-59.4 302.7 moveto
-12 f0
-( Never Say Never / Present Tense ) show
-224.3 302.7 moveto
-12 f2
-(\(single\)) show
-260.9 302.7 moveto
-12 f0
-( ) show
-18.1 290 moveto
-3.3 3.3 c fill
-31.5 281.9 moveto
-12 f1
-(Blaine Reininger) show
-117.8 281.9 moveto
-12 f0
-( ) show
-31.5 268.6 moveto
-12 f2
-(1989:) show
-59.4 268.6 moveto
-12 f0
-( Expatriate Journals ) show
-18.1 255.9 moveto
-3.3 3.3 c fill
-31.5 247.8 moveto
-12 f1
-(Red Aunts) show
-85.8 247.8 moveto
-12 f0
-( ) show
-31.5 234.5 moveto
-12 f2
-(1993:) show
-59.4 234.5 moveto
-12 f0
-( Drag ) show
-31.5 221.2 moveto
-12 f2
-(1994:) show
-59.4 221.2 moveto
-12 f0
-( Bad Motherfucker 400-Z ) show
-31.5 207.9 moveto
-12 f2
-(1995:) show
-59.4 207.9 moveto
-12 f0
-( #1 Chicken ) show
-306 248.3 moveto
-12 f2
-(UBL Card: ) show
-363.3 248.3 moveto
-12 f0
-(4619) show
-387.3 248.3 moveto
-12 f0
-( ) show
-18.1 195.2 moveto
-3.3 3.3 c fill
-31.5 187.1 moveto
-12 f1
-(Re-Flex) show
-71.4 187.1 moveto
-12 f0
-( ) show
-31.5 173.8 moveto
-12 f2
-(1983:) show
-59.4 173.8 moveto
-12 f0
-( The Politics of Dancing / Re-Flex It ) show
-238 173.8 moveto
-12 f2
-(\(single\)) show
-274.6 173.8 moveto
-12 f0
-( ) show
-18.1 161.1 moveto
-3.3 3.3 c fill
-31.5 153 moveto
-12 f1
-(Revolting Cocks) show
-115.1 153 moveto
-12 f0
-( ) show
-31.5 139.7 moveto
-12 f2
-(1986:) show
-59.4 139.7 moveto
-12 f0
-( Big Sexy Land ) show
-31.5 126.4 moveto
-12 f2
-(1988:) show
-59.4 126.4 moveto
-12 f0
-( You Goddamned Son of a Bitch ) show
-219.7 126.4 moveto
-12 f2
-(\(double live\)) show
-280.6 126.4 moveto
-12 f0
-( ) show
-31.5 113.1 moveto
-12 f2
-(1989:) show
-59.4 113.1 moveto
-12 f0
-( Stainless Steel Providers ) show
-184 113.1 moveto
-12 f2
-(\(EP\)) show
-206.6 113.1 moveto
-12 f0
-( ) show
-31.5 99.8 moveto
-12 f2
-(1990:) show
-59.4 99.8 moveto
-12 f0
-( Beers, Steers, and Queers ) show
-31.5 86.5 moveto
-12 f2
-(1993:) show
-59.4 86.5 moveto
-12 f0
-( Linger Ficken' Good ) show
-303 153.5 moveto
-12 f2
-(UBL Card: ) show
-360.3 153.5 moveto
-12 f0
-(1100) show
-384.3 153.5 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 23 23
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-18.1 716.6 moveto
-3.3 3.3 c fill
-31.5 708.5 moveto
-12 f1
-(Ridgway, Stan) show
-106.1 708.5 moveto
-12 f0
-( ) show
-31.5 695.2 moveto
-12 f2
-(1986:) show
-59.4 695.2 moveto
-12 f0
-( The Big Heat ) show
-298.1 709 moveto
-12 f2
-(UBL Card: ) show
-355.4 709 moveto
-12 f0
-(2904) show
-379.4 709 moveto
-12 f0
-( ) show
-18.1 682.5 moveto
-3.3 3.3 c fill
-31.5 674.4 moveto
-12 f1
-(Rosemarys, The) show
-114.1 674.4 moveto
-12 f0
-( ) show
-31.5 661.1 moveto
-12 f2
-(1993:) show
-59.4 661.1 moveto
-12 f0
-( Providence ) show
-18.1 648.4 moveto
-3.3 3.3 c fill
-31.5 640.3 moveto
-12 f1
-(Rosetta Stone) show
-101.8 640.3 moveto
-12 f0
-( ) show
-31.5 627 moveto
-12 f2
-(1993:) show
-59.4 627 moveto
-12 f0
-( Adrenaline ) show
-31.5 613.7 moveto
-12 f2
-(1995:) show
-59.4 613.7 moveto
-12 f0
-( The Tyrrany of Inaction ) show
-18.1 601 moveto
-3.3 3.3 c fill
-31.5 592.9 moveto
-12 f1
-(Ruby) show
-59.5 592.9 moveto
-12 f0
-( ) show
-31.5 579.6 moveto
-12 f2
-(1995:) show
-59.4 579.6 moveto
-12 f0
-( Salt Peter ) show
-18.1 566.9 moveto
-3.3 3.3 c fill
-31.5 558.8 moveto
-12 f1
-(Rump) show
-63.5 558.8 moveto
-12 f0
-( ) show
-31.5 545.5 moveto
-12 f2
-(1994:) show
-59.4 545.5 moveto
-12 f0
-( Hating Brenda ) show
-18.1 532.8 moveto
-3.3 3.3 c fill
-31.5 524.7 moveto
-12 f1
-(Rush) show
-58.1 524.7 moveto
-12 f0
-( ) show
-31.5 511.4 moveto
-12 f2
-(1984:) show
-59.4 511.4 moveto
-12 f0
-( Grace Under Pressure ) show
-298.1 525.2 moveto
-12 f2
-(UBL Card: ) show
-355.4 525.2 moveto
-12 f0
-(1039) show
-379.4 525.2 moveto
-12 f0
-( ) show
-18.1 498.7 moveto
-3.3 3.3 c fill
-31.5 490.6 moveto
-12 f1
-(Sandoz) show
-68.8 490.6 moveto
-12 f0
-( ) show
-31.5 477.3 moveto
-12 f2
-(1993:) show
-59.4 477.3 moveto
-12 f0
-( Digital Lifeforms ) show
-18.1 464.6 moveto
-3.3 3.3 c fill
-31.5 456.5 moveto
-12 f1
-(Scatterbrain) show
-96.1 456.5 moveto
-12 f0
-( ) show
-31.5 443.2 moveto
-12 f2
-(1990:) show
-59.4 443.2 moveto
-12 f0
-( Here Comes Trouble ) show
-18.1 430.5 moveto
-3.3 3.3 c fill
-31.5 422.4 moveto
-12 f1
-(Scar Tissue) show
-90.5 422.4 moveto
-12 f0
-( ) show
-31.5 409.1 moveto
-12 f2
-(1995:) show
-59.4 409.1 moveto
-12 f0
-( Scar Tissue ) show
-18.1 396.4 moveto
-3.3 3.3 c fill
-31.5 388.3 moveto
-12 f1
-(Scritti Politti) show
-97.8 388.3 moveto
-12 f0
-( ) show
-31.5 375 moveto
-12 f2
-(1985:) show
-59.4 375 moveto
-12 f0
-( Cupid & Psyche ) show
-18.1 362.3 moveto
-3.3 3.3 c fill
-31.5 354.2 moveto
-12 f1
-(Severed Heads) show
-107.1 354.2 moveto
-12 f0
-( ) show
-31.5 340.9 moveto
-12 f2
-(1983:) show
-59.4 340.9 moveto
-12 f0
-( Since the Accident ) show
-31.5 327.6 moveto
-12 f2
-(1986:) show
-59.4 327.6 moveto
-12 f0
-( Come Visit the Big Bigot ) show
-31.5 314.3 moveto
-12 f2
-(1987:) show
-59.4 314.3 moveto
-12 f0
-( Bad Mood Guy ) show
-298.1 354.7 moveto
-12 f2
-(UBL Card: ) show
-355.4 354.7 moveto
-12 f0
-(1480) show
-379.4 354.7 moveto
-12 f0
-( ) show
-18.1 301.6 moveto
-3.3 3.3 c fill
-31.5 293.5 moveto
-12 f1
-(Sex Gang, Andi) show
-111.8 293.5 moveto
-12 f0
-( ) show
-31.5 280.2 moveto
-12 f2
-(1994:) show
-59.4 280.2 moveto
-12 f0
-( Arco Valley ) show
-18.1 267.5 moveto
-3.3 3.3 c fill
-31.5 259.4 moveto
-12 f1
-(Sex Gang Children) show
-129.5 259.4 moveto
-12 f0
-( ) show
-31.5 246.1 moveto
-12 f2
-(1992:) show
-59.4 246.1 moveto
-12 f0
-( Blind ) show
-31.5 232.8 moveto
-12 f2
-(1993:) show
-59.4 232.8 moveto
-12 f0
-( Dieche ) show
-31.5 219.5 moveto
-12 f2
-(1993:) show
-59.4 219.5 moveto
-12 f0
-( Medea ) show
-18.1 206.8 moveto
-3.3 3.3 c fill
-31.5 198.7 moveto
-12 f1
-(Shadow Project) show
-112.4 198.7 moveto
-12 f0
-( ) show
-31.5 185.4 moveto
-12 f2
-(1991:) show
-59.4 185.4 moveto
-12 f0
-( Shadow Project ) show
-18.1 172.7 moveto
-3.3 3.3 c fill
-31.5 164.6 moveto
-12 f1
-(Sharkbait) show
-82.8 164.6 moveto
-12 f0
-( ) show
-31.5 151.3 moveto
-12 f2
-(1991:) show
-59.4 151.3 moveto
-12 f0
-( Blowtorch Facelift ) show
-31.5 138 moveto
-12 f2
-(1993:) show
-59.4 138 moveto
-12 f0
-( Crushits ) show
-18.1 125.3 moveto
-3.3 3.3 c fill
-31.5 117.2 moveto
-12 f1
-(Sheep on Drugs) show
-112.1 117.2 moveto
-12 f0
-( ) show
-31.5 103.9 moveto
-12 f2
-(1993:) show
-59.4 103.9 moveto
-12 f0
-( Greatest Hits ) show
-128.3 103.9 moveto
-12 f2
-(\(comp\)) show
-162.2 103.9 moveto
-12 f0
-( ) show
-31.5 90.6 moveto
-12 f2
-(1995:) show
-59.4 90.6 moveto
-12 f0
-( Suck ) show
-89.4 90.6 moveto
-12 f2
-(\(EP\)) show
-112 90.6 moveto
-12 f0
-( ) show
-18.1 77.9 moveto
-3.3 3.3 c fill
-pagelevel restore
-showpage
-%%Page: 24 24
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-18.1 716.8 moveto
-3.3 3.3 c fill
-31.5 708.7 moveto
-12 f1
-(Shriekback) show
-90.1 708.7 moveto
-12 f0
-( ) show
-31.5 695.4 moveto
-12 f2
-(1982:) show
-59.4 695.4 moveto
-12 f0
-( Tench ) show
-31.5 682.1 moveto
-12 f2
-(1983:) show
-59.4 682.1 moveto
-12 f0
-( Care ) show
-31.5 668.8 moveto
-12 f2
-(1983:) show
-59.4 668.8 moveto
-12 f0
-( Care ) show
-88 668.8 moveto
-12 f2
-(\(Y version\)) show
-140.9 668.8 moveto
-12 f0
-( ) show
-31.5 655.5 moveto
-12 f2
-(1983:) show
-59.4 655.5 moveto
-12 f0
-( Lined Up / Hapax Legomena ) show
-205.3 655.5 moveto
-12 f2
-(\(single\)) show
-241.9 655.5 moveto
-12 f0
-( ) show
-31.5 642.2 moveto
-12 f2
-(1983:) show
-59.4 642.2 moveto
-12 f0
-( Lined Up / My Spine / Accretions /Into Method) show
-31.5 628.9 moveto
-12 f2
-(\(single\)) show
-68.1 628.9 moveto
-12 f0
-( ) show
-31.5 615.6 moveto
-12 f2
-(1983:) show
-59.4 615.6 moveto
-12 f0
-( My Spine / Accretions / Clear Trails ) show
-240 615.6 moveto
-12 f2
-(\(single\)) show
-276.6 615.6 moveto
-12 f0
-( ) show
-31.5 602.3 moveto
-12 f2
-(1983:) show
-59.4 602.3 moveto
-12 f0
-( Sexthinkone / Here Comes My Hand ) show
-243 602.3 moveto
-12 f2
-(\(single\)) show
-279.6 602.3 moveto
-12 f0
-( ) show
-31.5 589 moveto
-12 f2
-(1984:) show
-59.4 589 moveto
-12 f0
-( Jamscience ) show
-120 589 moveto
-12 f2
-(\(UK release\)) show
-182.3 589 moveto
-12 f0
-( ) show
-31.5 575.7 moveto
-12 f2
-(1984:) show
-59.4 575.7 moveto
-12 f0
-( Jamscience ) show
-120 575.7 moveto
-12 f2
-(\(Holland release\)) show
-204.9 575.7 moveto
-12 f0
-( ) show
-31.5 562.4 moveto
-12 f2
-(1984:) show
-59.4 562.4 moveto
-12 f0
-( Knowledge, Power, Truth, and Sex ) show
-31.5 549.1 moveto
-12 f2
-(1984:) show
-59.4 549.1 moveto
-12 f0
-( Mercy Dash ) show
-124.3 549.1 moveto
-12 f2
-(\(picture disc, single\)) show
-223.2 549.1 moveto
-12 f0
-( ) show
-31.5 535.8 moveto
-12 f2
-(1984:) show
-59.4 535.8 moveto
-12 f0
-( Hand on my Heart ) show
-154.3 535.8 moveto
-12 f2
-(\(picture disc, single\)) show
-253.2 535.8 moveto
-12 f0
-( ) show
-31.5 522.5 moveto
-12 f2
-(1985:) show
-59.4 522.5 moveto
-12 f0
-( The Infinite ) show
-122.3 522.5 moveto
-12 f2
-(\(comp\)) show
-156.2 522.5 moveto
-12 f0
-( ) show
-31.5 509.2 moveto
-12 f2
-(1985:) show
-59.4 509.2 moveto
-12 f0
-( Oil and Gold ) show
-31.5 495.9 moveto
-12 f2
-(1985:) show
-59.4 495.9 moveto
-12 f0
-( Fish Below the Ice ) show
-155.7 495.9 moveto
-12 f2
-(\(EP\)) show
-178.3 495.9 moveto
-12 f0
-( ) show
-31.5 482.6 moveto
-12 f2
-(1983-1985:) show
-87.4 482.6 moveto
-12 f0
-( Priests and Kannibals ) show
-197.3 482.6 moveto
-12 f2
-(\(comp\)) show
-231.2 482.6 moveto
-12 f0
-( ) show
-31.5 469.3 moveto
-12 f2
-(1986:) show
-59.4 469.3 moveto
-12 f0
-( Big Night Music ) show
-31.5 456 moveto
-12 f2
-(1986:) show
-59.4 456 moveto
-12 f0
-( Islam Grotto ) show
-126.3 456 moveto
-12 f2
-(\(live boot\)) show
-175.9 456 moveto
-12 f0
-( ) show
-31.5 442.7 moveto
-12 f2
-(1988:) show
-59.4 442.7 moveto
-12 f0
-( Evolution ) show
-112.7 442.7 moveto
-12 f2
-(\(comp\)) show
-146.6 442.7 moveto
-12 f0
-( ) show
-31.5 429.4 moveto
-12 f2
-(1990:) show
-59.4 429.4 moveto
-12 f0
-( The Dancing Years ) show
-158.7 429.4 moveto
-12 f2
-(\(remixes\)) show
-204 429.4 moveto
-12 f0
-( ) show
-31.5 416.1 moveto
-12 f2
-(1993:) show
-59.4 416.1 moveto
-12 f0
-( Sacred City ) show
-298.1 709.2 moveto
-12 f2
-(UBL Card: ) show
-355.4 709.2 moveto
-12 f0
-(1248) show
-379.4 709.2 moveto
-12 f0
-( ) show
-298.1 695.9 moveto
-12 f2
-(See also: ) show
-344.7 695.9 moveto
-12 f0
-(http2.brunel.ac.uk) show
-431.7 695.9 moveto
-12 f0
-( ) show
-18.1 403.4 moveto
-3.3 3.3 c fill
-31.5 395.3 moveto
-12 f1
-(Siglo XX) show
-77.1 395.3 moveto
-12 f0
-( ) show
-31.5 382 moveto
-12 f2
-(1983-1986:) show
-87.4 382 moveto
-12 f0
-( Antler Tracks I ) show
-166.7 382 moveto
-12 f2
-(\(comp\)) show
-200.6 382 moveto
-12 f0
-( ) show
-31.5 368.7 moveto
-12 f2
-(1986:) show
-59.4 368.7 moveto
-12 f0
-( Fear and Desire ) show
-18.1 356 moveto
-3.3 3.3 c fill
-31.5 347.9 moveto
-12 f1
-(Single Gun Theory) show
-128.8 347.9 moveto
-12 f0
-( ) show
-31.5 334.6 moveto
-12 f2
-(1989?:) show
-65.4 334.6 moveto
-12 f0
-( Exorcise this Wasteland ) show
-31.5 321.3 moveto
-12 f2
-(1991:) show
-59.4 321.3 moveto
-12 f0
-( Like Stars in my Hands ) show
-31.5 308 moveto
-12 f2
-(1993:) show
-59.4 308 moveto
-12 f0
-( Burning Bright \(but Unseen\) ) show
-203.7 308 moveto
-12 f2
-(\(EP\)) show
-226.3 308 moveto
-12 f0
-( ) show
-31.5 294.7 moveto
-12 f2
-(1994:) show
-59.4 294.7 moveto
-12 f0
-( Flow, River of my Soul ) show
-298.1 348.4 moveto
-12 f2
-(UBL Card: ) show
-355.4 348.4 moveto
-12 f0
-(1404) show
-379.4 348.4 moveto
-12 f0
-( ) show
-298.1 335.1 moveto
-12 f2
-(See also: ) show
-344.7 335.1 moveto
-12 f0
-(www.magna.com.au) show
-443.6 335.1 moveto
-12 f0
-( ) show
-18.1 282 moveto
-3.3 3.3 c fill
-31.5 273.9 moveto
-12 f1
-(Siouxsie and the Banshees) show
-165.1 273.9 moveto
-12 f0
-( ) show
-31.5 260.6 moveto
-12 f2
-(1977:) show
-59.4 260.6 moveto
-12 f0
-( Peel Sessions ) show
-130.4 260.6 moveto
-12 f2
-(\(live EP\)) show
-173.3 260.6 moveto
-12 f0
-( ) show
-31.5 247.3 moveto
-12 f2
-(1978:) show
-59.4 247.3 moveto
-12 f0
-( Peel Sessions 2 ) show
-139.4 247.3 moveto
-12 f2
-(\(live EP\)) show
-182.3 247.3 moveto
-12 f0
-( ) show
-31.5 234 moveto
-12 f2
-(1978:) show
-59.4 234 moveto
-12 f0
-( The Scream ) show
-31.5 220.7 moveto
-12 f2
-(1979:) show
-59.4 220.7 moveto
-12 f0
-( Join Hands ) show
-31.5 207.4 moveto
-12 f2
-(1980:) show
-59.4 207.4 moveto
-12 f0
-( Kaleidoscope ) show
-31.5 194.1 moveto
-12 f2
-(1981:) show
-59.4 194.1 moveto
-12 f0
-( juju ) show
-31.5 180.8 moveto
-12 f2
-(1981:) show
-59.4 180.8 moveto
-12 f0
-( Once Upon a Time ) show
-157 180.8 moveto
-12 f2
-(\(comp\)) show
-190.9 180.8 moveto
-12 f0
-( ) show
-31.5 167.5 moveto
-12 f2
-(1981:) show
-59.4 167.5 moveto
-12 f0
-( Spellbound / Follow the Sun / Slap Dash Snap) show
-31.5 154.2 moveto
-12 f2
-(\(single\)) show
-68.1 154.2 moveto
-12 f0
-( ) show
-31.5 140.9 moveto
-12 f2
-(1982:) show
-59.4 140.9 moveto
-12 f0
-( Slowdive / Obsession II / Cannibal Roses ) show
-264.7 140.9 moveto
-12 f2
-(\(single\)) show
-31.5 114.3 moveto
-12 f2
-(1982:) show
-59.4 114.3 moveto
-12 f0
-( A Kiss in the Dream House ) show
-31.5 101 moveto
-12 f2
-(1983:) show
-59.4 101 moveto
-12 f0
-( Nocturne ) show
-110 101 moveto
-12 f2
-(\(double live\)) show
-170.9 101 moveto
-12 f0
-( ) show
-31.5 87.7 moveto
-12 f2
-(1984:) show
-59.4 87.7 moveto
-12 f0
-( Hyaena ) show
-305.7 274.4 moveto
-12 f2
-(UBL Card: ) show
-363 274.4 moveto
-12 f0
-(1216) show
-387 274.4 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 25 25
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-31.5 709.2 moveto
-12 f2
-(1985:) show
-59.4 709.2 moveto
-12 f0
-( Tinderbox ) show
-31.5 695.9 moveto
-12 f2
-(1986:) show
-59.4 695.9 moveto
-12 f0
-( Through the Looking Glass ) show
-31.5 682.6 moveto
-12 f2
-(1987:) show
-59.4 682.6 moveto
-12 f0
-( Song from the Edge of the World ) show
-226 682.6 moveto
-12 f2
-(\(single\)) show
-262.6 682.6 moveto
-12 f0
-( ) show
-31.5 669.3 moveto
-12 f2
-(1988:) show
-59.4 669.3 moveto
-12 f0
-( Peekaboo / False Face / Catwalk ) show
-221.7 669.3 moveto
-12 f2
-(\(single\)) show
-258.3 669.3 moveto
-12 f0
-( ) show
-31.5 656 moveto
-12 f2
-(1988:) show
-59.4 656 moveto
-12 f0
-( Peepshow ) show
-31.5 642.7 moveto
-12 f2
-(1991:) show
-59.4 642.7 moveto
-12 f0
-( Superstition ) show
-31.5 629.4 moveto
-12 f2
-(1991:) show
-59.4 629.4 moveto
-12 f0
-( Kiss Them for Me ) show
-153.7 629.4 moveto
-12 f2
-(\(EP\)) show
-176.3 629.4 moveto
-12 f0
-( ) show
-31.5 616.1 moveto
-12 f2
-(1995:) show
-59.4 616.1 moveto
-12 f0
-( The Rapture ) show
-18.1 603.4 moveto
-3.3 3.3 c fill
-31.5 595.3 moveto
-12 f1
-(Sister Machine Gun) show
-134.1 595.3 moveto
-12 f0
-( ) show
-31.5 582 moveto
-12 f2
-(1992:) show
-59.4 582 moveto
-12 f0
-( Sins of the Flesh ) show
-31.5 568.7 moveto
-12 f2
-(1994:) show
-59.4 568.7 moveto
-12 f0
-( The Torture Technique ) show
-31.5 555.4 moveto
-12 f2
-(1994:) show
-59.4 555.4 moveto
-12 f0
-( Nothing ) show
-104.7 555.4 moveto
-12 f2
-(\(single\)) show
-141.3 555.4 moveto
-12 f0
-( ) show
-31.5 542.1 moveto
-12 f2
-(1994:) show
-59.4 542.1 moveto
-12 f0
-( Wired / Lung ) show
-130 542.1 moveto
-12 f2
-(\(single\)) show
-166.6 542.1 moveto
-12 f0
-( ) show
-31.5 528.8 moveto
-12 f2
-(1995:) show
-59.4 528.8 moveto
-12 f0
-( Burn ) show
-299.7 595.8 moveto
-12 f2
-(UBL Card: ) show
-357 595.8 moveto
-12 f0
-(3612) show
-381 595.8 moveto
-12 f0
-( ) show
-18.1 516.1 moveto
-3.3 3.3 c fill
-31.5 508 moveto
-12 f1
-(Sisterhood, The) show
-112.1 508 moveto
-12 f0
-( ) show
-31.5 494.7 moveto
-12 f2
-(1986:) show
-59.4 494.7 moveto
-12 f0
-( Gift ) show
-298.1 508.5 moveto
-12 f2
-(UBL Card: ) show
-355.4 508.5 moveto
-12 f0
-(1115) show
-379.4 508.5 moveto
-12 f0
-( ) show
-298.1 495.2 moveto
-12 f2
-(See also: ) show
-344.7 495.2 moveto
-12 f0
-(www.cm.cf.ac.uk) show
-429.3 495.2 moveto
-12 f0
-( ) show
-18.1 482 moveto
-3.3 3.3 c fill
-31.5 473.9 moveto
-12 f1
-(Sisters of Mercy) show
-114.8 473.9 moveto
-12 f0
-( ) show
-31.5 460.6 moveto
-12 f2
-(1985:) show
-59.4 460.6 moveto
-12 f0
-( First and Last and Always ) show
-31.5 447.3 moveto
-12 f2
-(1988:) show
-59.4 447.3 moveto
-12 f0
-( Floodland ) show
-31.5 434 moveto
-12 f2
-(1988:) show
-59.4 434 moveto
-12 f0
-( More / You Could be the One ) show
-208.7 434 moveto
-12 f2
-(\(single\)) show
-245.3 434 moveto
-12 f0
-( ) show
-31.5 420.7 moveto
-12 f2
-(1990:) show
-59.4 420.7 moveto
-12 f0
-( Vision Thing ) show
-31.5 407.4 moveto
-12 f2
-(1992:) show
-59.4 407.4 moveto
-12 f0
-( Some Girls Wander by Mistake ) show
-217.3 407.4 moveto
-12 f2
-(\(comp\)) show
-251.2 407.4 moveto
-12 f0
-( ) show
-31.5 394.1 moveto
-12 f2
-(1992:) show
-59.4 394.1 moveto
-12 f0
-( Temple of Love 1992 ) show
-169.7 394.1 moveto
-12 f2
-(\(single\)) show
-206.3 394.1 moveto
-12 f0
-( ) show
-31.5 380.8 moveto
-12 f2
-(1993:) show
-59.4 380.8 moveto
-12 f0
-( First and Last and Forever: A Tribute ) show
-245.3 380.8 moveto
-12 f2
-(\(various\)) show
-289.2 380.8 moveto
-12 f0
-( ) show
-31.5 367.5 moveto
-12 f2
-(1993:) show
-59.4 367.5 moveto
-12 f0
-( Under the Gun / Alice 1993 ) show
-199 367.5 moveto
-12 f2
-(\(single\)) show
-235.6 367.5 moveto
-12 f0
-( ) show
-298.1 474.4 moveto
-12 f2
-(UBL Card: ) show
-355.4 474.4 moveto
-12 f0
-(1062) show
-379.4 474.4 moveto
-12 f0
-( ) show
-298.1 461.1 moveto
-12 f2
-(See also: ) show
-344.7 461.1 moveto
-12 f0
-(www.cm.cf.ac.uk) show
-429.3 461.1 moveto
-12 f0
-( ) show
-18.1 354.8 moveto
-3.3 3.3 c fill
-31.5 346.7 moveto
-12 f1
-(Skeletal Family) show
-111.1 346.7 moveto
-12 f0
-( ) show
-31.5 333.4 moveto
-12 f2
-(1984-1985:) show
-87.4 333.4 moveto
-12 f0
-( Burning Oil / Futile Combat ) show
-18.1 320.7 moveto
-3.3 3.3 c fill
-31.5 312.6 moveto
-12 f1
-(Skinny Puppy) show
-103.8 312.6 moveto
-12 f0
-( ) show
-31.5 299.3 moveto
-12 f2
-(1983:) show
-59.4 299.3 moveto
-12 f0
-( Back and Forth, Series Two ) show
-31.5 286 moveto
-12 f2
-(1984:) show
-59.4 286 moveto
-12 f0
-( Bites ) show
-31.5 272.7 moveto
-12 f2
-(1984:) show
-59.4 272.7 moveto
-12 f0
-( Remission ) show
-31.5 259.4 moveto
-12 f2
-(1984:) show
-59.4 259.4 moveto
-12 f0
-( Bites and Remission ) show
-31.5 246.1 moveto
-12 f2
-(1986:) show
-59.4 246.1 moveto
-12 f0
-( Mind: the Perpetual Intercourse ) show
-31.5 232.8 moveto
-12 f2
-(1986:) show
-59.4 232.8 moveto
-12 f0
-( Dig It ) show
-93.7 232.8 moveto
-12 f2
-(\(EP\)) show
-116.3 232.8 moveto
-12 f0
-( ) show
-31.5 219.5 moveto
-12 f2
-(1987:) show
-59.4 219.5 moveto
-12 f0
-( Cleanse, Fold, and Manipulate ) show
-31.5 206.2 moveto
-12 f2
-(1988:) show
-59.4 206.2 moveto
-12 f0
-( Vivisect VI ) show
-31.5 192.9 moveto
-12 f2
-(1989:) show
-59.4 192.9 moveto
-12 f0
-( Rabies ) show
-31.5 179.6 moveto
-12 f2
-(1990:) show
-59.4 179.6 moveto
-12 f0
-( Too Dark Park ) show
-31.5 166.3 moveto
-12 f2
-(1990:) show
-59.4 166.3 moveto
-12 f0
-( Censor ) show
-99.3 166.3 moveto
-12 f2
-(\(EP\)) show
-121.9 166.3 moveto
-12 f0
-( ) show
-31.5 153 moveto
-12 f2
-(1992:) show
-59.4 153 moveto
-12 f0
-( 12 Inch Anthology ) show
-156 153 moveto
-12 f2
-(\(comp\)) show
-189.9 153 moveto
-12 f0
-( ) show
-31.5 139.7 moveto
-12 f2
-(1992:) show
-59.4 139.7 moveto
-12 f0
-( Last Rights ) show
-298.1 313.1 moveto
-12 f2
-(UBL Card: ) show
-355.4 313.1 moveto
-12 f0
-(1166) show
-379.4 313.1 moveto
-12 f0
-( ) show
-298.1 299.8 moveto
-12 f2
-(See also: ) show
-344.7 299.8 moveto
-12 f0
-(www.eecs.nwu.edu) show
-438.3 299.8 moveto
-12 f0
-( ) show
-18.1 127 moveto
-3.3 3.3 c fill
-31.5 118.9 moveto
-12 f1
-(Sky Cries Mary) show
-112.8 118.9 moveto
-12 f0
-( ) show
-31.5 105.6 moveto
-12 f2
-(1993:) show
-59.4 105.6 moveto
-12 f0
-( A Return to the Inner Experience ) show
-31.5 92.3 moveto
-12 f2
-(1994:) show
-59.4 92.3 moveto
-12 f0
-( This Timeless Turning ) show
-31.5 79 moveto
-12 f2
-(1994:) show
-59.4 79 moveto
-12 f0
-( Every Iceberg is Afire / Deep Sunless Sea /) show
-298.1 119.4 moveto
-12 f2
-(UBL Card: ) show
-355.4 119.4 moveto
-12 f0
-(1437) show
-379.4 119.4 moveto
-12 f0
-( ) show
-298.1 106.1 moveto
-12 f2
-(See also: ) show
-344.7 106.1 moveto
-12 f0
-(www.starwave.com) show
-440 106.1 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 26 26
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-31.5 709.2 moveto
-12 f0
-(Cornerman ) show
-88.4 709.2 moveto
-12 f2
-(\(single\)) show
-125 709.2 moveto
-12 f0
-( ) show
-18.1 696.5 moveto
-3.3 3.3 c fill
-31.5 688.4 moveto
-12 f1
-(Snog) show
-56.8 688.4 moveto
-12 f0
-( ) show
-31.5 675.1 moveto
-12 f2
-(1995:) show
-59.4 675.1 moveto
-12 f0
-( Dear Valued Customer ) show
-18.1 662.4 moveto
-3.3 3.3 c fill
-31.5 654.3 moveto
-12 f1
-(Soh Daiko) show
-84.5 654.3 moveto
-12 f0
-( ) show
-31.5 641 moveto
-12 f2
-(1990:) show
-59.4 641 moveto
-12 f0
-( Taiko Drum Ensemble ) show
-18.1 628.3 moveto
-3.3 3.3 c fill
-31.5 620.2 moveto
-12 f1
-(Some, Belouis) show
-102.8 620.2 moveto
-12 f0
-( ) show
-31.5 606.9 moveto
-12 f2
-(1984:) show
-59.4 606.9 moveto
-12 f0
-( Some People ) show
-128.4 606.9 moveto
-12 f2
-(\(single\)) show
-165 606.9 moveto
-12 f0
-( ) show
-18.1 594.2 moveto
-3.3 3.3 c fill
-31.5 586.1 moveto
-12 f1
-(Southern Death Cult) show
-138.1 586.1 moveto
-12 f0
-( ) show
-31.5 572.8 moveto
-12 f2
-(1982-1983:) show
-87.4 572.8 moveto
-12 f0
-( Southern Death Cult ) show
-192 572.8 moveto
-12 f2
-(\(comp\)) show
-225.9 572.8 moveto
-12 f0
-( ) show
-18.1 560.1 moveto
-3.3 3.3 c fill
-31.5 552 moveto
-12 f1
-(Spahn Ranch) show
-100.5 552 moveto
-12 f0
-( ) show
-31.5 538.7 moveto
-12 f2
-(1995:) show
-59.4 538.7 moveto
-12 f0
-( The Coiled One ) show
-18.1 526 moveto
-3.3 3.3 c fill
-31.5 517.9 moveto
-12 f1
-(SSQ) show
-54.1 517.9 moveto
-12 f0
-( ) show
-31.5 504.6 moveto
-12 f2
-(1984:) show
-59.4 504.6 moveto
-12 f0
-( Playback ) show
-31.5 491.3 moveto
-12 f2
-(1986:) show
-59.4 491.3 moveto
-12 f0
-( Insecurity ) show
-113.3 491.3 moveto
-12 f2
-(\(single\)) show
-149.9 491.3 moveto
-12 f0
-( ) show
-18.1 478.6 moveto
-3.3 3.3 c fill
-31.5 470.5 moveto
-12 f1
-(Stabbing Westward) show
-133.1 470.5 moveto
-12 f0
-( ) show
-31.5 457.2 moveto
-12 f2
-(1993:) show
-59.4 457.2 moveto
-12 f0
-( Violent Mood Swings ) show
-171.4 457.2 moveto
-12 f2
-(\(EP\)) show
-194 457.2 moveto
-12 f0
-( ) show
-31.5 443.9 moveto
-12 f2
-(1994:) show
-59.4 443.9 moveto
-12 f0
-( Ungod ) show
-31.5 430.6 moveto
-12 f2
-(1995:) show
-59.4 430.6 moveto
-12 f0
-( What Do I Have to Do / Falls Apart ) show
-237.3 430.6 moveto
-12 f2
-(\(single\)) show
-273.9 430.6 moveto
-12 f0
-( ) show
-31.5 417.3 moveto
-12 f2
-(1995:) show
-59.4 417.3 moveto
-12 f0
-( Wither Blister Burn and Peel ) show
-300.5 471 moveto
-12 f2
-(UBL Card: ) show
-357.8 471 moveto
-12 f0
-(2415) show
-381.8 471 moveto
-12 f0
-( ) show
-18.1 404.6 moveto
-3.3 3.3 c fill
-31.5 396.5 moveto
-12 f1
-(Strange Boutique) show
-121.1 396.5 moveto
-12 f0
-( ) show
-31.5 383.2 moveto
-12 f2
-(199?:) show
-59.4 383.2 moveto
-12 f0
-( Charm ) show
-31.5 369.9 moveto
-12 f2
-(199?:) show
-59.4 369.9 moveto
-12 f0
-( The Kindest Words ) show
-31.5 356.6 moveto
-12 f2
-(199?:) show
-59.4 356.6 moveto
-12 f0
-( The Loved One ) show
-298.1 397 moveto
-12 f2
-(See also: ) show
-344.7 397 moveto
-12 f0
-(www.iuma.com) show
-421.3 397 moveto
-12 f0
-( ) show
-18.1 343.9 moveto
-3.3 3.3 c fill
-31.5 335.8 moveto
-12 f1
-(Steroid Maximus) show
-119.8 335.8 moveto
-12 f0
-( ) show
-31.5 322.5 moveto
-12 f2
-(1991:) show
-59.4 322.5 moveto
-12 f0
-( Quilombo ) show
-31.5 309.2 moveto
-12 f2
-(1992:) show
-59.4 309.2 moveto
-12 f0
-( Gondwanaland ) show
-306.4 336.3 moveto
-12 f2
-(UBL Card: ) show
-363.7 336.3 moveto
-12 f0
-(2750) show
-387.7 336.3 moveto
-12 f0
-( ) show
-18.1 296.5 moveto
-3.3 3.3 c fill
-31.5 288.4 moveto
-12 f1
-(Sugarcubes, The) show
-116.8 288.4 moveto
-12 f0
-( ) show
-31.5 275.1 moveto
-12 f2
-(1988:) show
-59.4 275.1 moveto
-12 f0
-( Life's Too Good ) show
-298.1 288.9 moveto
-12 f2
-(UBL Card: ) show
-355.4 288.9 moveto
-12 f0
-(3419) show
-379.4 288.9 moveto
-12 f0
-( ) show
-298.1 275.6 moveto
-12 f2
-(See also: ) show
-344.7 275.6 moveto
-12 f0
-(math-www.uio.no) show
-432 275.6 moveto
-12 f0
-( ) show
-18.1 262.4 moveto
-3.3 3.3 c fill
-31.5 254.3 moveto
-12 f1
-(Sunscreem) show
-87.4 254.3 moveto
-12 f0
-( ) show
-31.5 241 moveto
-12 f2
-(1992:) show
-59.4 241 moveto
-12 f0
-( O3 ) show
-18.1 228.3 moveto
-3.3 3.3 c fill
-31.5 220.2 moveto
-12 f1
-(Switchblade Symphony) show
-151.8 220.2 moveto
-12 f0
-( ) show
-31.5 206.9 moveto
-12 f2
-(1992:) show
-59.4 206.9 moveto
-12 f0
-( Fable ) show
-92 206.9 moveto
-12 f2
-(\(tape/EP\)) show
-138.6 206.9 moveto
-12 f0
-( ) show
-31.5 193.6 moveto
-12 f2
-(1993:) show
-59.4 193.6 moveto
-12 f0
-( Elegy ) show
-93.3 193.6 moveto
-12 f2
-(\(tape/EP\)) show
-139.9 193.6 moveto
-12 f0
-( ) show
-31.5 180.3 moveto
-12 f2
-(1995:) show
-59.4 180.3 moveto
-12 f0
-( Serpentine Gallery ) show
-18.1 167.6 moveto
-3.3 3.3 c fill
-31.5 159.5 moveto
-12 f1
-(Talking Heads) show
-106.5 159.5 moveto
-12 f0
-( ) show
-31.5 146.2 moveto
-12 f2
-(1977:) show
-59.4 146.2 moveto
-12 f0
-( Talking Heads '77 ) show
-31.5 132.9 moveto
-12 f2
-(1978:) show
-59.4 132.9 moveto
-12 f0
-( More Songs About Buildings and Food ) show
-31.5 119.6 moveto
-12 f2
-(1979:) show
-59.4 119.6 moveto
-12 f0
-( The Name of This Band is Talking Heads) show
-31.5 106.3 moveto
-12 f2
-(\(double live\)) show
-92.4 106.3 moveto
-12 f0
-( ) show
-31.5 93 moveto
-12 f2
-(1981:) show
-59.4 93 moveto
-12 f0
-( Fear of Music ) show
-31.5 79.7 moveto
-12 f2
-(1983:) show
-59.4 79.7 moveto
-12 f0
-( Sp eak in gI n To ngu es ) show
-302.4 160 moveto
-12 f2
-(UBL Card: ) show
-359.7 160 moveto
-12 f0
-(1012) show
-383.7 160 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 27 27
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-31.5 709.2 moveto
-12 f2
-(1985:) show
-59.4 709.2 moveto
-12 f0
-( Stop Making Sense ) show
-158.7 709.2 moveto
-12 f2
-(\(live soundtrack\)) show
-240.3 709.2 moveto
-12 f0
-( ) show
-31.5 695.9 moveto
-12 f2
-(1985:) show
-59.4 695.9 moveto
-12 f0
-( Little Creatures ) show
-18.1 683.2 moveto
-3.3 3.3 c fill
-31.5 675.1 moveto
-12 f1
-(Tears For Fears) show
-114.1 675.1 moveto
-12 f0
-( ) show
-31.5 661.8 moveto
-12 f2
-(1983:) show
-59.4 661.8 moveto
-12 f0
-( The Hurting ) show
-31.5 648.5 moveto
-12 f2
-(1985:) show
-59.4 648.5 moveto
-12 f0
-( Songs From the Big Chair ) show
-298.1 675.6 moveto
-12 f2
-(UBL Card: ) show
-355.4 675.6 moveto
-12 f0
-(2763) show
-379.4 675.6 moveto
-12 f0
-( ) show
-18.1 635.8 moveto
-3.3 3.3 c fill
-31.5 627.7 moveto
-12 f1
-(Tel Basta) show
-79.8 627.7 moveto
-12 f0
-( ) show
-31.5 614.4 moveto
-12 f2
-(1996:) show
-59.4 614.4 moveto
-12 f0
-( Lickerish ) show
-18.1 601.7 moveto
-3.3 3.3 c fill
-31.5 593.6 moveto
-12 f1
-(Thanatos) show
-79.5 593.6 moveto
-12 f0
-( ) show
-31.5 580.3 moveto
-12 f2
-(1995:) show
-59.4 580.3 moveto
-12 f0
-( An Embassy in Gaius ) show
-18.1 567.6 moveto
-3.3 3.3 c fill
-31.5 559.5 moveto
-12 f1
-(Therapy?) show
-81.5 559.5 moveto
-12 f0
-( ) show
-31.5 546.2 moveto
-12 f2
-(1992:) show
-59.4 546.2 moveto
-12 f0
-( Caucasian Psychosis ) show
-31.5 532.9 moveto
-12 f2
-(1992:) show
-59.4 532.9 moveto
-12 f0
-( Nurse ) show
-299.1 560 moveto
-12 f2
-(UBL Card: ) show
-356.4 560 moveto
-12 f0
-(2044) show
-380.4 560 moveto
-12 f0
-( ) show
-18.1 520.2 moveto
-3.3 3.3 c fill
-31.5 512.1 moveto
-12 f1
-(13 Mg.) show
-66.8 512.1 moveto
-12 f0
-( ) show
-31.5 498.8 moveto
-12 f2
-(1995:) show
-59.4 498.8 moveto
-12 f0
-( Trust and Obey ) show
-18.1 486.1 moveto
-3.3 3.3 c fill
-31.5 478 moveto
-12 f1
-(This Ascension) show
-108.5 478 moveto
-12 f0
-( ) show
-31.5 464.7 moveto
-12 f2
-(1991:) show
-59.4 464.7 moveto
-12 f0
-( Light and Shade ) show
-31.5 451.4 moveto
-12 f2
-(1994:) show
-59.4 451.4 moveto
-12 f0
-( Walk Softly, a Dream Lies Here ) show
-18.1 438.7 moveto
-3.3 3.3 c fill
-31.5 430.6 moveto
-12 f1
-(Throwing Muses) show
-117.8 430.6 moveto
-12 f0
-( ) show
-31.5 417.3 moveto
-12 f2
-(1986:) show
-59.4 417.3 moveto
-12 f0
-( Throwing Muses ) show
-298.4 431.1 moveto
-12 f2
-(UBL Card: ) show
-355.7 431.1 moveto
-12 f0
-(1357) show
-379.7 431.1 moveto
-12 f0
-( ) show
-18.1 404.6 moveto
-3.3 3.3 c fill
-31.5 396.5 moveto
-12 f1
-(Tinfed) show
-65.5 396.5 moveto
-12 f0
-( ) show
-31.5 383.2 moveto
-12 f2
-(1993:) show
-59.4 383.2 moveto
-12 f0
-( Synaptic Hardware ) show
-18.1 370.5 moveto
-3.3 3.3 c fill
-31.5 362.4 moveto
-12 f1
-(Tin Machine) show
-97.1 362.4 moveto
-12 f0
-( ) show
-31.5 349.1 moveto
-12 f2
-(1989:) show
-59.4 349.1 moveto
-12 f0
-( Tin Machine ) show
-298.1 362.9 moveto
-12 f2
-(UBL Card: ) show
-355.4 362.9 moveto
-12 f0
-(1098) show
-379.4 362.9 moveto
-12 f0
-( ) show
-18.1 336.4 moveto
-3.3 3.3 c fill
-31.5 328.3 moveto
-12 f1
-(Tit Wrench United) show
-128.8 328.3 moveto
-12 f0
-( ) show
-31.5 315 moveto
-12 f2
-(1993:) show
-59.4 315 moveto
-12 f0
-( Full Employment ) show
-18.1 302.3 moveto
-3.3 3.3 c fill
-31.5 294.2 moveto
-12 f1
-(Tom Tom Club) show
-110.8 294.2 moveto
-12 f0
-( ) show
-31.5 280.9 moveto
-12 f2
-(1981:) show
-59.4 280.9 moveto
-12 f0
-( Tom Tom Club ) show
-31.5 267.6 moveto
-12 f2
-(1983:) show
-59.4 267.6 moveto
-12 f0
-( Close to the Bone ) show
-298.1 294.7 moveto
-12 f2
-(UBL Card: ) show
-355.4 294.7 moveto
-12 f0
-(1012) show
-379.4 294.7 moveto
-12 f0
-( ) show
-18.1 254.9 moveto
-3.3 3.3 c fill
-31.5 246.8 moveto
-12 f1
-(Tones on Tail) show
-101.5 246.8 moveto
-12 f0
-( ) show
-31.5 233.5 moveto
-12 f2
-(1982:) show
-59.4 233.5 moveto
-12 f0
-( Tones on Tail ) show
-31.5 220.2 moveto
-12 f2
-(1984:) show
-59.4 220.2 moveto
-12 f0
-( Pop ) show
-31.5 206.9 moveto
-12 f2
-(1984:) show
-59.4 206.9 moveto
-12 f0
-( Performance / Shakes ) show
-170 206.9 moveto
-12 f2
-(\(single\)) show
-206.6 206.9 moveto
-12 f0
-( ) show
-31.5 193.6 moveto
-12 f2
-(1982-1984:) show
-87.4 193.6 moveto
-12 f0
-( Night Music ) show
-153.7 193.6 moveto
-12 f2
-(\(comp\)) show
-187.6 193.6 moveto
-12 f0
-( ) show
-298.1 247.3 moveto
-12 f2
-(UBL Card: ) show
-355.4 247.3 moveto
-12 f0
-(1235) show
-379.4 247.3 moveto
-12 f0
-( ) show
-298.1 234 moveto
-12 f2
-(See also: ) show
-344.7 234 moveto
-12 f0
-(gothic.acs.csulb.edu) show
-441.6 234 moveto
-12 f0
-( ) show
-298.1 220.7 moveto
-12 f2
-(See also: ) show
-344.7 220.7 moveto
-12 f0
-(isvpc146.isv.uit.no) show
-435.7 220.7 moveto
-12 f0
-( ) show
-18.1 180.9 moveto
-3.3 3.3 c fill
-31.5 172.8 moveto
-12 f1
-(Trance Mission) show
-111.1 172.8 moveto
-12 f0
-( ) show
-31.5 159.5 moveto
-12 f2
-(1993:) show
-59.4 159.5 moveto
-12 f0
-( Trance Mission ) show
-18.1 146.8 moveto
-3.3 3.3 c fill
-31.5 138.7 moveto
-12 f1
-(Trance to the Sun) show
-123.1 138.7 moveto
-12 f0
-( ) show
-31.5 125.4 moveto
-12 f2
-(1994:) show
-59.4 125.4 moveto
-12 f0
-( Ghost Forest ) show
-31.5 112.1 moveto
-12 f2
-(1995:) show
-59.4 112.1 moveto
-12 f0
-( Bloom, Flowers, Bloom! ) show
-31.5 98.8 moveto
-12 f2
-(1995:) show
-59.4 98.8 moveto
-12 f0
-( Venomous Eve ) show
-18.1 86.1 moveto
-3.3 3.3 c fill
-31.5 78 moveto
-12 f1
-(Transvision Vamp) show
-126.5 78 moveto
-12 f0
-( ) show
-302.5 78.5 moveto
-12 f2
-(UBL Card: ) show
-359.8 78.5 moveto
-12 f0
-(5305) show
-383.8 78.5 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 28 28
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-31.5 709.2 moveto
-12 f2
-(1991:) show
-59.4 709.2 moveto
-12 f0
-( Little Magnets versus the Bubble of Babble ) show
-18.1 696.5 moveto
-3.3 3.3 c fill
-31.5 688.4 moveto
-12 f1
-(Trio) show
-54.1 688.4 moveto
-12 f0
-( ) show
-31.5 675.1 moveto
-12 f2
-(1983:) show
-59.4 675.1 moveto
-12 f0
-( Trio and Error ) show
-18.1 662.4 moveto
-3.3 3.3 c fill
-31.5 654.3 moveto
-12 f1
-(Tubes, The) show
-88.8 654.3 moveto
-12 f0
-( ) show
-31.5 641 moveto
-12 f2
-(1981:) show
-59.4 641 moveto
-12 f0
-( Tubes Rarities And Smash Hits [T.R.A.S.H] ) show
-18.1 628.3 moveto
-3.3 3.3 c fill
-31.5 620.2 moveto
-12 f1
-(Tuxedomoon) show
-98.8 620.2 moveto
-12 f0
-( ) show
-31.5 606.9 moveto
-12 f2
-(1980:) show
-59.4 606.9 moveto
-12 f0
-( Half-Mute ) show
-31.5 593.6 moveto
-12 f2
-(1983:) show
-59.4 593.6 moveto
-12 f0
-( A Thousand Lives by Picture ) show
-31.5 580.3 moveto
-12 f2
-(1985:) show
-59.4 580.3 moveto
-12 f0
-( Holy Wars ) show
-18.1 567.6 moveto
-3.3 3.3 c fill
-31.5 559.5 moveto
-12 f1
-(Underflowers) show
-101.4 559.5 moveto
-12 f0
-( ) show
-31.5 546.2 moveto
-12 f2
-(1995:) show
-59.4 546.2 moveto
-12 f0
-( Underflowers ) show
-18.1 533.5 moveto
-3.3 3.3 c fill
-31.5 525.4 moveto
-12 f1
-(Urban Dance Squad) show
-135.5 525.4 moveto
-12 f0
-( ) show
-31.5 512.1 moveto
-12 f2
-(1991:) show
-59.4 512.1 moveto
-12 f0
-( Life'n Perspectives of a Genuine Crossover ) show
-303.5 525.9 moveto
-12 f2
-(UBL Card: ) show
-360.8 525.9 moveto
-12 f0
-(4626) show
-384.8 525.9 moveto
-12 f0
-( ) show
-18.1 499.4 moveto
-3.3 3.3 c fill
-31.5 491.3 moveto
-12 f1
-(Usherhouse) show
-91.5 491.3 moveto
-12 f0
-( ) show
-31.5 478 moveto
-12 f2
-(1993:) show
-59.4 478 moveto
-12 f0
-( Molting ) show
-31.5 464.7 moveto
-12 f2
-(1994:) show
-59.4 464.7 moveto
-12 f0
-( Flux ) show
-18.1 452 moveto
-3.3 3.3 c fill
-31.5 443.9 moveto
-12 f1
-(Ultravox) show
-76.8 443.9 moveto
-12 f0
-( ) show
-31.5 430.6 moveto
-12 f2
-(1978:) show
-59.4 430.6 moveto
-12 f0
-( Systems of Romance ) show
-18.1 417.9 moveto
-3.3 3.3 c fill
-31.5 409.8 moveto
-12 f1
-(Van Acker, Luc) show
-113.1 409.8 moveto
-12 f0
-( ) show
-31.5 396.5 moveto
-12 f2
-(1980:) show
-59.4 396.5 moveto
-12 f0
-( Taking Snapshots, Volume 1 ) show
-300.1 410.3 moveto
-12 f2
-(UBL Card: ) show
-357.4 410.3 moveto
-12 f0
-(1100) show
-381.4 410.3 moveto
-12 f0
-( ) show
-18.1 383.8 moveto
-3.3 3.3 c fill
-31.5 375.7 moveto
-12 f1
-(Vangelis) show
-75.5 375.7 moveto
-12 f0
-( ) show
-31.5 362.4 moveto
-12 f2
-(1994:) show
-59.4 362.4 moveto
-12 f0
-( Blade Runner ) show
-131.7 362.4 moveto
-12 f2
-(\(soundtrack\)) show
-193 362.4 moveto
-12 f0
-( ) show
-298.1 376.2 moveto
-12 f2
-(UBL Card: ) show
-355.4 376.2 moveto
-12 f0
-(1023) show
-379.4 376.2 moveto
-12 f0
-( ) show
-298.1 362.9 moveto
-12 f2
-(See also: ) show
-344.7 362.9 moveto
-12 f0
-(rt66.com) show
-387.6 362.9 moveto
-12 f0
-( ) show
-18.1 349.7 moveto
-3.3 3.3 c fill
-31.5 341.6 moveto
-12 f1
-(various) show
-69.5 341.6 moveto
-12 f0
-( ) show
-31.5 328.3 moveto
-12 f2
-(1980:) show
-59.4 328.3 moveto
-12 f0
-( URGH! A Music War ) show
-171.7 328.3 moveto
-12 f2
-(\(live comp\)) show
-226 328.3 moveto
-12 f0
-( ) show
-31.5 315 moveto
-12 f2
-(1981-1994:) show
-87.4 315 moveto
-12 f0
-( Wax Trax Black Box ) show
-195.7 315 moveto
-12 f2
-(\(comp\)) show
-229.6 315 moveto
-12 f0
-( ) show
-31.5 301.7 moveto
-12 f2
-(1982-198?:) show
-87.4 301.7 moveto
-12 f0
-( In Goth Daze \(Anagram version\) ) show
-252 301.7 moveto
-12 f2
-(\(comp\)) show
-285.9 301.7 moveto
-12 f0
-( ) show
-31.5 288.4 moveto
-12 f2
-(1982-1994:) show
-87.4 288.4 moveto
-12 f0
-( In Goth Daze \(Cleopatra version\) ) show
-254 288.4 moveto
-12 f2
-(\(comp\)) show
-287.9 288.4 moveto
-12 f0
-( ) show
-31.5 275.1 moveto
-12 f2
-(1982-1993:) show
-87.4 275.1 moveto
-12 f0
-( The Whip \(Cleopatra\) ) show
-199.3 275.1 moveto
-12 f2
-(\(comp\)) show
-233.2 275.1 moveto
-12 f0
-( ) show
-31.5 261.8 moveto
-12 f2
-(1984-1985:) show
-87.4 261.8 moveto
-12 f0
-( IQ6: Zang Tumb Tuum Sampled ) show
-251.3 261.8 moveto
-12 f2
-(\(comp\)) show
-285.2 261.8 moveto
-12 f0
-( ) show
-31.5 248.5 moveto
-12 f2
-(1984-1995:) show
-87.4 248.5 moveto
-12 f0
-( DEC ADE NCE \(Nettwerk\) ) show
-227.7 248.5 moveto
-12 f2
-(\(comp\)) show
-261.6 248.5 moveto
-12 f0
-( ) show
-31.5 235.2 moveto
-12 f2
-(1988:) show
-59.4 235.2 moveto
-12 f0
-( This is Electronic Body Music ) show
-212 235.2 moveto
-12 f2
-(\(comp\)) show
-245.9 235.2 moveto
-12 f0
-( ) show
-31.5 221.9 moveto
-12 f2
-(1990:) show
-59.4 221.9 moveto
-12 f0
-( From Across This Gray Land #2 \(Projekt\) ) show
-267.3 221.9 moveto
-12 f2
-(\(comp\)) show
-301.2 221.9 moveto
-12 f0
-( ) show
-31.5 208.6 moveto
-12 f2
-(1990:) show
-59.4 208.6 moveto
-12 f0
-( Doctor Death IV: The Marvels of Insect Life ) show
-281 208.6 moveto
-12 f2
-(\(double comp\)) show
-350.6 208.6 moveto
-12 f0
-( ) show
-31.5 195.3 moveto
-12 f2
-(1990:) show
-59.4 195.3 moveto
-12 f0
-( Red Hot + Blue ) show
-141.1 195.3 moveto
-12 f2
-(\(comp\)) show
-175 195.3 moveto
-12 f0
-( ) show
-31.5 182 moveto
-12 f2
-(1991:) show
-59.4 182 moveto
-12 f0
-( Bouquet of Dreams ) show
-159.3 182 moveto
-12 f2
-(\(comp\)) show
-193.2 182 moveto
-12 f0
-( ) show
-31.5 168.7 moveto
-12 f2
-(1980-1992:) show
-87.4 168.7 moveto
-12 f0
-( Gothic Rock ) show
-154.3 168.7 moveto
-12 f2
-(\(comp\)) show
-188.2 168.7 moveto
-12 f0
-( ) show
-31.5 155.4 moveto
-12 f2
-(1992:) show
-59.4 155.4 moveto
-12 f0
-( Mindfield \(Third Mind\) ) show
-180 155.4 moveto
-12 f2
-(\(comp\)) show
-213.9 155.4 moveto
-12 f0
-( ) show
-31.5 142.1 moveto
-12 f2
-(1992:) show
-59.4 142.1 moveto
-12 f0
-( From Across This Gray Land #3 \(Projekt\) ) show
-267.3 142.1 moveto
-12 f2
-(\(comp\)) show
-301.2 142.1 moveto
-12 f0
-( ) show
-31.5 128.8 moveto
-12 f2
-(1992:) show
-59.4 128.8 moveto
-12 f0
-( The Cyberflesh Conspiracy ) show
-197.3 128.8 moveto
-12 f2
-(\(comp\)) show
-231.2 128.8 moveto
-12 f0
-( ) show
-31.5 115.5 moveto
-12 f2
-(1992:) show
-59.4 115.5 moveto
-12 f0
-( G\341rgula Mec\342nica: World Electrostatic Assembly ) show
-304.6 115.5 moveto
-12 f2
-(\(comp\)) show
-338.5 115.5 moveto
-12 f0
-( ) show
-31.5 102.2 moveto
-12 f2
-(1992:) show
-59.4 102.2 moveto
-12 f0
-( CCCC: California Cyber Crash Compilation \(Cop\) ) show
-309.7 102.2 moveto
-12 f2
-(\(comp\)) show
-343.6 102.2 moveto
-12 f0
-( ) show
-31.5 88.9 moveto
-12 f2
-(1993:) show
-59.4 88.9 moveto
-12 f0
-( Shut Up Kitty ) show
-132.7 88.9 moveto
-12 f2
-(\(comp\)) show
-166.6 88.9 moveto
-12 f0
-( ) show
-31.5 75.6 moveto
-12 f2
-(1988-1993:) show
-87.4 75.6 moveto
-12 f0
-( Can You See It Yet? \(Invisible\) ) show
-245.7 75.6 moveto
-12 f2
-(\(comp\)) show
-279.6 75.6 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 29 29
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-31.5 709.2 moveto
-12 f2
-(1994:) show
-59.4 709.2 moveto
-12 f0
-( Mysterious Encounters \(Cleopatra\) ) show
-234 709.2 moveto
-12 f2
-(\(comp\)) show
-267.9 709.2 moveto
-12 f0
-( ) show
-31.5 695.9 moveto
-12 f2
-(1994:) show
-59.4 695.9 moveto
-12 f0
-( The Crow ) show
-113.7 695.9 moveto
-12 f2
-(\(comp\)) show
-147.6 695.9 moveto
-12 f0
-( ) show
-31.5 682.6 moveto
-12 f2
-(1994:) show
-59.4 682.6 moveto
-12 f0
-( Totentanz: The Best of Zoth Ommog ) show
-243.7 682.6 moveto
-12 f2
-(\(double comp\)) show
-313.3 682.6 moveto
-12 f0
-( ) show
-31.5 669.3 moveto
-12 f2
-(1992:) show
-59.4 669.3 moveto
-12 f0
-( Hy! \(Hyperium Compilation volume 1\) ) show
-254.7 669.3 moveto
-12 f2
-(\(comp\)) show
-288.6 669.3 moveto
-12 f0
-( ) show
-31.5 656 moveto
-12 f2
-(1993:) show
-59.4 656 moveto
-12 f0
-( World Domination Sampler ) show
-199.3 656 moveto
-12 f2
-(\(comp\)) show
-233.2 656 moveto
-12 f0
-( ) show
-31.5 642.7 moveto
-12 f2
-(1993:) show
-59.4 642.7 moveto
-12 f0
-( Rivet Head Culture ) show
-158.7 642.7 moveto
-12 f2
-(\(comp\)) show
-192.6 642.7 moveto
-12 f0
-( ) show
-31.5 629.4 moveto
-12 f2
-(1993:) show
-59.4 629.4 moveto
-12 f0
-( Artificial Intelligence \(Warp\) ) show
-206.6 629.4 moveto
-12 f2
-(\(comp\)) show
-240.5 629.4 moveto
-12 f0
-( ) show
-31.5 616.1 moveto
-12 f2
-(1994:) show
-59.4 616.1 moveto
-12 f0
-( Artificial Intelligence II \(Warp\) ) show
-217.6 616.1 moveto
-12 f2
-(\(comp\)) show
-251.5 616.1 moveto
-12 f0
-( ) show
-31.5 602.8 moveto
-12 f2
-(1994:) show
-59.4 602.8 moveto
-12 f0
-( Big Hard Disk #2 \(Smash\) ) show
-193.3 602.8 moveto
-12 f2
-(\(comp\)) show
-227.2 602.8 moveto
-12 f0
-( ) show
-31.5 589.5 moveto
-12 f2
-(1994:) show
-59.4 589.5 moveto
-12 f0
-( Kindred Spirits \(Bedazzled\) ) show
-200 589.5 moveto
-12 f2
-(\(comp\)) show
-233.9 589.5 moveto
-12 f0
-( ) show
-31.5 576.2 moveto
-12 f2
-(1994:) show
-59.4 576.2 moveto
-12 f0
-( Plug In + Turn On \(Instinct\) ) show
-201.1 576.2 moveto
-12 f2
-(\(comp\)) show
-235 576.2 moveto
-12 f0
-( ) show
-31.5 562.9 moveto
-12 f2
-(1994:) show
-59.4 562.9 moveto
-12 f0
-( The Disease of Lady Madeline \(Anubis\) ) show
-259 562.9 moveto
-12 f2
-(\(comp\)) show
-292.9 562.9 moveto
-12 f0
-( ) show
-31.5 549.6 moveto
-12 f2
-(1994:) show
-59.4 549.6 moveto
-12 f0
-( Natural Born Killers ) show
-164 549.6 moveto
-12 f2
-(\(soundtrack comp\)) show
-254.3 549.6 moveto
-12 f0
-( ) show
-31.5 536.3 moveto
-12 f2
-(1994:) show
-59.4 536.3 moveto
-12 f0
-( Afterburn \(Wax Trax\) ) show
-172 536.3 moveto
-12 f2
-(\(comp\)) show
-205.9 536.3 moveto
-12 f0
-( ) show
-31.5 523 moveto
-12 f2
-(1994:) show
-59.4 523 moveto
-12 f0
-( Chaos Compilation \(Cop\) ) show
-189.4 523 moveto
-12 f2
-(\(comp\)) show
-223.3 523 moveto
-12 f0
-( ) show
-31.5 509.7 moveto
-12 f2
-(1994:) show
-59.4 509.7 moveto
-12 f0
-( Electrocity Vol. 5 ) show
-151 509.7 moveto
-12 f2
-(\(comp\)) show
-184.9 509.7 moveto
-12 f0
-( ) show
-31.5 496.4 moveto
-12 f2
-(1995:) show
-59.4 496.4 moveto
-12 f0
-( Gothik \(Cleopatra\) ) show
-156.3 496.4 moveto
-12 f2
-(\(double comp\)) show
-225.9 496.4 moveto
-12 f0
-( ) show
-31.5 483.1 moveto
-12 f2
-(1995:) show
-59.4 483.1 moveto
-12 f0
-( Godfathers of German Gothic ) show
-209 483.1 moveto
-12 f2
-(\(comp\)) show
-242.9 483.1 moveto
-12 f0
-( ) show
-31.5 469.8 moveto
-12 f2
-(1995:) show
-59.4 469.8 moveto
-12 f0
-( Heavenly Voices III \(Hyperium\) ) show
-222.3 469.8 moveto
-12 f2
-(\(comp\)) show
-256.2 469.8 moveto
-12 f0
-( ) show
-31.5 456.5 moveto
-12 f2
-(1995:) show
-59.4 456.5 moveto
-12 f0
-( Mortal Kombat ) show
-139.7 456.5 moveto
-12 f2
-(\(soundtrack comp\)) show
-230 456.5 moveto
-12 f0
-( ) show
-31.5 443.2 moveto
-12 f2
-(1995:) show
-59.4 443.2 moveto
-12 f0
-( The Tyranny Off the Beat \(Off Beat/Cleopatra\) ) show
-292.6 443.2 moveto
-12 f2
-(\(comp\)) show
-326.5 443.2 moveto
-12 f0
-( ) show
-31.5 429.9 moveto
-12 f2
-(1995:) show
-59.4 429.9 moveto
-12 f0
-( Forced Cranial Removal \(Fifth Colvmn\) ) show
-259.3 429.9 moveto
-12 f2
-(\(comp\)) show
-293.2 429.9 moveto
-12 f0
-( ) show
-31.5 416.6 moveto
-12 f2
-(1995:) show
-59.4 416.6 moveto
-12 f0
-( Dreams in the Witch House \(Grave News\) ) show
-269.3 416.6 moveto
-12 f2
-(\(comp\)) show
-303.2 416.6 moveto
-12 f0
-( ) show
-18.1 403.9 moveto
-3.3 3.3 c fill
-31.5 395.8 moveto
-12 f1
-(Vega, Suzanne) show
-106.8 395.8 moveto
-12 f0
-( ) show
-31.5 382.5 moveto
-12 f2
-(1992:) show
-59.4 382.5 moveto
-12 f0
-( 99.9F ) show
-298.1 396.3 moveto
-12 f2
-(UBL Card: ) show
-355.4 396.3 moveto
-12 f0
-(2088) show
-379.4 396.3 moveto
-12 f0
-( ) show
-18.1 369.8 moveto
-3.3 3.3 c fill
-31.5 361.7 moveto
-12 f1
-(Vinyl Devotion) show
-108.5 361.7 moveto
-12 f0
-( ) show
-31.5 348.4 moveto
-12 f2
-(1994:) show
-59.4 348.4 moveto
-12 f0
-( If They Know You're Trying ) show
-18.1 335.7 moveto
-3.3 3.3 c fill
-31.5 327.6 moveto
-12 f1
-(Volume Magazine) show
-124.4 327.6 moveto
-12 f0
-( ) show
-31.5 314.3 moveto
-12 f2
-(1991:) show
-59.4 314.3 moveto
-12 f0
-( Volume: 1 ) show
-116.4 314.3 moveto
-12 f2
-(\(comp\)) show
-150.3 314.3 moveto
-12 f0
-( ) show
-31.5 301 moveto
-12 f2
-(1991:) show
-59.4 301 moveto
-12 f0
-( Volume: 2 ) show
-116.4 301 moveto
-12 f2
-(\(comp\)) show
-150.3 301 moveto
-12 f0
-( ) show
-31.5 287.7 moveto
-12 f2
-(1992:) show
-59.4 287.7 moveto
-12 f0
-( Volume: 3 ) show
-116.4 287.7 moveto
-12 f2
-(\(comp\)) show
-150.3 287.7 moveto
-12 f0
-( ) show
-31.5 274.4 moveto
-12 f2
-(1992:) show
-59.4 274.4 moveto
-12 f0
-( Volume: 4 ) show
-116.4 274.4 moveto
-12 f2
-(\(comp\)) show
-150.3 274.4 moveto
-12 f0
-( ) show
-31.5 261.1 moveto
-12 f2
-(1995:) show
-59.4 261.1 moveto
-12 f0
-( Wasted: The Best of Volume ) show
-205.3 261.1 moveto
-12 f2
-(\(double comp\)) show
-274.9 261.1 moveto
-12 f0
-( ) show
-18.1 248.4 moveto
-3.3 3.3 c fill
-31.5 240.3 moveto
-12 f1
-(Waitresses, The) show
-112.8 240.3 moveto
-12 f0
-( ) show
-31.5 227 moveto
-12 f2
-(1981:) show
-59.4 227 moveto
-12 f0
-( Wasn't Tomorrow Wonderful? ) show
-31.5 213.7 moveto
-12 f2
-(1982:) show
-59.4 213.7 moveto
-12 f0
-( Bruiseology ) show
-31.5 200.4 moveto
-12 f2
-(1978-1981:) show
-87.4 200.4 moveto
-12 f0
-( Best Of ) show
-130.3 200.4 moveto
-12 f2
-(\(comp\)) show
-164.2 200.4 moveto
-12 f0
-( ) show
-18.1 187.7 moveto
-3.3 3.3 c fill
-31.5 179.6 moveto
-12 f1
-(Wake, The) show
-87.5 179.6 moveto
-12 f0
-( ) show
-31.5 166.3 moveto
-12 f2
-(1993:) show
-59.4 166.3 moveto
-12 f0
-( Masked ) show
-18.1 153.6 moveto
-3.3 3.3 c fill
-31.5 145.5 moveto
-12 f1
-(Wall of Voodoo) show
-111.5 145.5 moveto
-12 f0
-( ) show
-31.5 132.2 moveto
-12 f2
-(1980:) show
-59.4 132.2 moveto
-12 f0
-( fpfpfpfpfpfp ) show
-31.5 118.9 moveto
-12 f2
-(1981:) show
-59.4 118.9 moveto
-12 f0
-( Dark Continent ) show
-31.5 105.6 moveto
-12 f2
-(1982:) show
-59.4 105.6 moveto
-12 f0
-( Call of the West ) show
-31.5 92.3 moveto
-12 f2
-(1986:) show
-59.4 92.3 moveto
-12 f0
-( Seven Days in Sammystown ) show
-31.5 79 moveto
-12 f2
-(1987:) show
-59.4 79 moveto
-12 f0
-( Happy Planet ) show
-pagelevel restore
-showpage
-%%Page: 30 30
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-18.1 714.3 moveto
-3.3 3.3 c fill
-31.5 706.2 moveto
-12 f1
-(Wang Chung) show
-99.8 706.2 moveto
-12 f0
-( ) show
-31.5 692.9 moveto
-12 f2
-(1983:) show
-59.4 692.9 moveto
-12 f0
-( Points On the Curve ) show
-31.5 679.6 moveto
-12 f2
-(1985:) show
-59.4 679.6 moveto
-12 f0
-( To Live and Die in L.A. ) show
-181.7 679.6 moveto
-12 f2
-(\(soundtrack\)) show
-243 679.6 moveto
-12 f0
-( ) show
-304.1 706.7 moveto
-12 f2
-(UBL Card: ) show
-361.4 706.7 moveto
-12 f0
-(2245) show
-385.4 706.7 moveto
-12 f0
-( ) show
-18.1 666.9 moveto
-3.3 3.3 c fill
-31.5 658.8 moveto
-12 f1
-(Westworld) show
-87.4 658.8 moveto
-12 f0
-( ) show
-31.5 645.5 moveto
-12 f2
-(1987:) show
-59.4 645.5 moveto
-12 f0
-( Rockulator ) show
-31.5 632.2 moveto
-12 f2
-(1991:) show
-59.4 632.2 moveto
-12 f0
-( Movers and Shakers ) show
-31.5 618.9 moveto
-12 f2
-(1991:) show
-59.4 618.9 moveto
-12 f0
-( Do No Wrong ) show
-134 618.9 moveto
-12 f2
-(\(single\)) show
-170.6 618.9 moveto
-12 f0
-( ) show
-18.1 606.2 moveto
-3.3 3.3 c fill
-31.5 598.1 moveto
-12 f1
-(Whale) show
-64.8 598.1 moveto
-12 f0
-( ) show
-31.5 584.8 moveto
-12 f2
-(1994:) show
-59.4 584.8 moveto
-12 f0
-( Hobo Humpin Slobo Babe / Eye 842 ) show
-242 584.8 moveto
-12 f2
-(\(single\)) show
-278.6 584.8 moveto
-12 f0
-( ) show
-31.5 571.5 moveto
-12 f2
-(1994:) show
-59.4 571.5 moveto
-12 f0
-( Hobo Humpin Slobo Babe / Lips / Eye 842) show
-31.5 558.2 moveto
-12 f2
-(\(single\)) show
-68.1 558.2 moveto
-12 f0
-( ) show
-31.5 544.9 moveto
-12 f2
-(1994:) show
-59.4 544.9 moveto
-12 f0
-( Pay for Me ) show
-119.3 544.9 moveto
-12 f2
-(\(EP\)) show
-141.9 544.9 moveto
-12 f0
-( ) show
-31.5 531.6 moveto
-12 f2
-(1995:) show
-59.4 531.6 moveto
-12 f0
-( We Care ) show
-31.5 518.3 moveto
-12 f2
-(1995:) show
-59.4 518.3 moveto
-12 f0
-( I'll Do Ya ) show
-114.7 518.3 moveto
-12 f2
-(\(EP\)) show
-137.3 518.3 moveto
-12 f0
-( ) show
-31.5 505 moveto
-12 f2
-(1995:) show
-59.4 505 moveto
-12 f0
-( Hobo Humpin Slobo Babe \(3 mixes\) ) show
-241.7 505 moveto
-12 f2
-(\(single\)) show
-278.3 505 moveto
-12 f0
-( ) show
-31.5 491.7 moveto
-12 f2
-(1995:) show
-59.4 491.7 moveto
-12 f0
-( Hobo Humpin Slobo Babe / You and Your) show
-31.5 478.4 moveto
-12 f0
-(Sister / Singer Star ) show
-124.8 478.4 moveto
-12 f2
-(\(single\)) show
-161.4 478.4 moveto
-12 f0
-( ) show
-298.1 598.6 moveto
-12 f2
-(UBL Card: ) show
-355.4 598.6 moveto
-12 f0
-(3790) show
-379.4 598.6 moveto
-12 f0
-( ) show
-298.1 585.3 moveto
-12 f2
-(See also: ) show
-344.7 585.3 moveto
-12 f0
-(www.vmg.co.uk) show
-424.4 585.3 moveto
-12 f0
-( ) show
-18.1 465.7 moveto
-3.3 3.3 c fill
-31.5 457.6 moveto
-12 f1
-(White Zombie) show
-105.1 457.6 moveto
-12 f0
-( ) show
-31.5 444.3 moveto
-12 f2
-(1992:) show
-59.4 444.3 moveto
-12 f0
-( Nightcrawlers: the KMFDM Remixes ) show
-247.7 444.3 moveto
-12 f2
-(\(EP\)) show
-270.3 444.3 moveto
-12 f0
-( ) show
-18.1 431.6 moveto
-3.3 3.3 c fill
-31.5 423.5 moveto
-12 f1
-(Wilde, Kim) show
-90.8 423.5 moveto
-12 f0
-( ) show
-31.5 410.2 moveto
-12 f2
-(1981:) show
-59.4 410.2 moveto
-12 f0
-( Kim Wilde ) show
-31.5 396.9 moveto
-12 f2
-(1984:) show
-59.4 396.9 moveto
-12 f0
-( Teases & Dares ) show
-31.5 383.6 moveto
-12 f2
-(1981-1993:) show
-87.4 383.6 moveto
-12 f0
-( The Singles Collection ) show
-203.4 383.6 moveto
-12 f2
-(\(comp\)) show
-237.3 383.6 moveto
-12 f0
-( ) show
-18.1 370.9 moveto
-3.3 3.3 c fill
-31.5 362.8 moveto
-12 f1
-(X) show
-40.1 362.8 moveto
-12 f0
-( ) show
-31.5 349.5 moveto
-12 f2
-(1988:) show
-59.4 349.5 moveto
-12 f0
-( Live at the Whiskey-a-Go-Go ) show
-209 349.5 moveto
-12 f2
-(\(double live\)) show
-269.9 349.5 moveto
-12 f0
-( ) show
-18.1 336.8 moveto
-3.3 3.3 c fill
-31.5 328.7 moveto
-12 f1
-(X Marks the Pedwalk) show
-143.1 328.7 moveto
-12 f0
-( ) show
-31.5 315.4 moveto
-12 f2
-(1994:) show
-59.4 315.4 moveto
-12 f0
-( The Killing Had Begun ) show
-18.1 302.7 moveto
-3.3 3.3 c fill
-31.5 294.6 moveto
-12 f1
-(Xorcist) show
-68.8 294.6 moveto
-12 f0
-( ) show
-31.5 281.3 moveto
-12 f2
-(1991:) show
-59.4 281.3 moveto
-12 f0
-( Damned Souls ) show
-31.5 268 moveto
-12 f2
-(1993:) show
-59.4 268 moveto
-12 f0
-( Bitches ) show
-101.4 268 moveto
-12 f2
-(\(EP\)) show
-124 268 moveto
-12 f0
-( ) show
-18.1 255.3 moveto
-3.3 3.3 c fill
-31.5 247.2 moveto
-12 f1
-(XTC) show
-56.8 247.2 moveto
-12 f0
-( ) show
-31.5 233.9 moveto
-12 f2
-(1982:) show
-59.4 233.9 moveto
-12 f0
-( Waxworks ) show
-31.5 220.6 moveto
-12 f2
-(1983:) show
-59.4 220.6 moveto
-12 f0
-( Mummer ) show
-31.5 207.3 moveto
-12 f2
-(1984:) show
-59.4 207.3 moveto
-12 f0
-( The Big Express ) show
-31.5 194 moveto
-12 f2
-(1985:) show
-59.4 194 moveto
-12 f0
-( 25 O'Clock ) show
-300.2 247.7 moveto
-12 f2
-(UBL Card: ) show
-357.5 247.7 moveto
-12 f0
-(1044) show
-381.5 247.7 moveto
-12 f0
-( ) show
-18.1 181.3 moveto
-3.3 3.3 c fill
-31.5 173.2 moveto
-12 f1
-(Xymox) show
-68.1 173.2 moveto
-12 f0
-( ) show
-31.5 159.9 moveto
-12 f2
-(1985:) show
-59.4 159.9 moveto
-12 f0
-( Clan of Xymox ) show
-298.1 173.7 moveto
-12 f2
-(UBL Card: ) show
-355.4 173.7 moveto
-12 f0
-(1295) show
-379.4 173.7 moveto
-12 f0
-( ) show
-298.1 160.4 moveto
-12 f2
-(See also: ) show
-344.7 160.4 moveto
-12 f0
-(isvpc146.isv.uit.no) show
-435.7 160.4 moveto
-12 f0
-( ) show
-18.1 147.2 moveto
-3.3 3.3 c fill
-31.5 139.1 moveto
-12 f1
-(Yamashirogumi, Geinoh) show
-157.5 139.1 moveto
-12 f0
-( ) show
-31.5 125.8 moveto
-12 f2
-(1990:) show
-59.4 125.8 moveto
-12 f0
-( Akira ) show
-92.7 125.8 moveto
-12 f2
-(\(soundtrack\)) show
-154 125.8 moveto
-12 f0
-( ) show
-18.1 113.1 moveto
-3.3 3.3 c fill
-31.5 105 moveto
-12 f1
-(Yazoo) show
-63.4 105 moveto
-12 f0
-( ) show
-31.5 91.7 moveto
-12 f2
-(1982:) show
-59.4 91.7 moveto
-12 f0
-( Upstairs at Eric's ) show
-31.5 78.4 moveto
-12 f2
-(1982:) show
-59.4 78.4 moveto
-12 f0
-( The Other Side of Love ) show
-179.3 78.4 moveto
-12 f2
-(\(single\)) show
-215.9 78.4 moveto
-12 f0
-( ) show
-298.1 105.5 moveto
-12 f2
-(UBL Card: ) show
-355.4 105.5 moveto
-12 f0
-(4309) show
-379.4 105.5 moveto
-12 f0
-( ) show
-298.1 92.2 moveto
-12 f2
-(See also: ) show
-344.7 92.2 moveto
-12 f0
-(rt66.com) show
-387.6 92.2 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%Page: 31 31
-%%BeginPageSetup
-/pagelevel save def
-54 0 translate
-%%EndPageSetup
-newpath 0 72 moveto 504 0 rlineto 0 648 rlineto -504 0 rlineto closepath clip newpath
-31.5 709.2 moveto
-12 f2
-(1983:) show
-59.4 709.2 moveto
-12 f0
-( You and Me Both ) show
-31.5 695.9 moveto
-12 f2
-(1983:) show
-59.4 695.9 moveto
-12 f0
-( Nobody's Diary / State Farm ) show
-204.7 695.9 moveto
-12 f2
-(\(single\)) show
-241.3 695.9 moveto
-12 f0
-( ) show
-31.5 682.6 moveto
-12 f2
-(1983:) show
-59.4 682.6 moveto
-12 f0
-( Situation ) show
-108.7 682.6 moveto
-12 f2
-(\(EP\)) show
-131.3 682.6 moveto
-12 f0
-( ) show
-18.1 669.9 moveto
-3.3 3.3 c fill
-31.5 661.8 moveto
-12 f1
-(Yello) show
-58.1 661.8 moveto
-12 f0
-( ) show
-31.5 648.5 moveto
-12 f2
-(1980:) show
-59.4 648.5 moveto
-12 f0
-( Solid Pleasure ) show
-31.5 635.2 moveto
-12 f2
-(1981:) show
-59.4 635.2 moveto
-12 f0
-( Stella ) show
-31.5 621.9 moveto
-12 f2
-(1983:) show
-59.4 621.9 moveto
-12 f0
-( You Gotta Say Yes to Another Excess ) show
-31.5 608.6 moveto
-12 f2
-(1987:) show
-59.4 608.6 moveto
-12 f0
-( One Second ) show
-31.5 595.3 moveto
-12 f2
-(1988:) show
-59.4 595.3 moveto
-12 f0
-( Flag ) show
-298.1 662.3 moveto
-12 f2
-(UBL Card: ) show
-355.4 662.3 moveto
-12 f0
-(1506) show
-379.4 662.3 moveto
-12 f0
-( ) show
-298.1 649 moveto
-12 f2
-(See also: ) show
-344.7 649 moveto
-12 f0
-(newton.space.net) show
-427.3 649 moveto
-12 f0
-( ) show
-298.1 635.7 moveto
-12 f2
-(See also: ) show
-344.7 635.7 moveto
-12 f0
-(rt66.com) show
-387.6 635.7 moveto
-12 f0
-( ) show
-18.1 582.6 moveto
-3.3 3.3 c fill
-31.5 574.5 moveto
-12 f1
-(Yes) show
-50.1 574.5 moveto
-12 f0
-( ) show
-31.5 561.2 moveto
-12 f2
-(1972:) show
-59.4 561.2 moveto
-12 f0
-( Fragile ) show
-31.5 547.9 moveto
-12 f2
-(1975:) show
-59.4 547.9 moveto
-12 f0
-( Classic Yes ) show
-31.5 534.6 moveto
-12 f2
-(1980:) show
-59.4 534.6 moveto
-12 f0
-( Drama ) show
-31.5 521.3 moveto
-12 f2
-(1983:) show
-59.4 521.3 moveto
-12 f0
-( 90125 ) show
-298.1 575 moveto
-12 f2
-(UBL Card: ) show
-355.4 575 moveto
-12 f0
-(1038) show
-379.4 575 moveto
-12 f0
-( ) show
-pagelevel restore
-showpage
-%%EOF
-
---------------167E2781446B--
-
---------------outer--
-
-eof.
diff --git a/tests/ui-tests/test-multipart-mixed.msg b/tests/ui-tests/test-multipart-mixed.msg
deleted file mode 100644
index 5216c6d6b6..0000000000
--- a/tests/ui-tests/test-multipart-mixed.msg
+++ /dev/null
@@ -1,377 +0,0 @@
-Return-Path: <beatty@COSMOS.VLSI.CS.CMU.EDU>
-Received: from thumper.bellcore.com by greenbush.bellcore.com (4.1/4.7)
- id <AA15292> for nsb; Fri, 28 Aug 92 15:13:14 EDT
-Received: from flash.bellcore.com by thumper.bellcore.com (4.1/4.7)
- id <AA15320> for nsb@greenbush; Fri, 28 Aug 92 15:13:12 EDT
-Received: from COSMOS.VLSI.CS.CMU.EDU by flash.bellcore.com (5.65/1.34)
- id AA24840; Fri, 28 Aug 92 15:13:07 -0400
-Message-Id: <9208281913.AA24840@flash.bellcore.com>
-Mime-Version: 1.0
-To: nsb@flash.bellcore.com
-Subject: mew-law encoding?
-Content-Type: multipart/mixed;
- boundary="PART.BOUNDARY.2418.16114.COSMOS.VLSI.CS.CMU.EDU.715029153.2"
-Date: Fri, 28 Aug 92 15:12:35 EDT
-From: beatty@COSMOS.VLSI.CS.CMU.EDU
-Sender: beatty@COSMOS.VLSI.CS.CMU.EDU
-
-> THIS IS A MESSAGE IN 'MIME' FORMAT. Your mail reader does not support MIME.
-> Some parts of this will be readable as plain text.
-> To see the rest, you will need to upgrade your mail reader.
-
---PART.BOUNDARY.2418.16114.COSMOS.VLSI.CS.CMU.EDU.715029153.2
-Content-type: text/richtext
-Content-Transfer-Encoding: quoted-printable
-
-I recently got hold of a filter that davecb@nexus.yorku.ca wrote, and whi=
-le
-it's not perfect, at least I've been able to take the "No NeXTmail!" slog=
-an
-out of my .signature. And now that I just thought of such a terrible pun=
-,
-as is in the Subject: above, I couldn't resist inflicting it on someone,
-and you seem to be the most appropriate victim. Anyhow, I guess this is =
-a
-"fan letter:" thanks for MIME.
-<nl><nl>
-
-
---PART.BOUNDARY.2418.16114.COSMOS.VLSI.CS.CMU.EDU.715029153.2
-Content-type: message/rfc822
-
-26-Aug-92 22:15:02-LCL,22076;000000000000
-Received: from po3.andrew.cmu.edu by COSMOS.VLSI.CS.CMU.EDU id aa13358;
- 26 Aug 92 22:14:26 EDT
-Received: from sqhilton.pc.cs.cmu.edu by po3.andrew.cmu.edu (5.54/3.15) id <AA21478> for beatty@cosmos.vlsi.cs.cmu.edu; Wed, 26 Aug 92 22:14:07 EDT
-Received: by sqhilton.pc.cs.cmu.edu (NeXT-1.0 (From Sendmail 5.52)/NeXT-2.0)
- id AA21178; Wed, 26 Aug 92 22:13:24 EDT
-Date: Wed, 26 Aug 92 22:13:24 EDT
-From: beatty@sqhilton.pc.cs.cmu.edu (Derek Beatty)
-Message-Id: <9208270213.AA21178@sqhilton.pc.cs.cmu.edu>
-Received: by NeXT Mailer (1.63)
-To: dragel@sqhilton.pc.cs.cmu.edu, beatty@sqhilton.pc.cs.cmu.edu
-Subject: mail from Wacky
-X-Next-Attachment: .tar.192.mail_from_Wacky.attach, 23976, 1/1, 33000, 0
-MIME-Version: 1.0
-Content-Type: multipart/mixed; boundary=n2m-MIME-boundary----------
-
-The following is NeXT mail translated to
-MIME format with n2m. This always starts
-with a file called index.rtf, which is
-the actual mail message in Microsoft's
-proprietary rtf, containing references
-of the form "\attachment<number> <name>"
-referring to the other components.
-
---n2m-MIME-boundary----------
-Content-Type: text/plain; type=microsoft-rtf; name=index.rtf
-Content-Transfer-Encoding: 7bit
-
-{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;}
-\margl120
-\margr120
-{{\attachment0 VoiceMail_beatty0.vox
-}
-}
-
---n2m-MIME-boundary----------
-Content-Type: audio/basic; name=VoiceMail_beatty0.vox
-Content-Transfer-Encoding: base64
-
-LnNuZAAAAJgAADsAAAAAAQAAH0wAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+cW9ze/Lg09XT
-09/d7W/56e30+HH29/vybf/x5eP6dm11b2FeW1dXV1xjZXR5b23+dmBaXmRoa2psb/9wcXLy
-6OTZ3ev+WFNYW3zk3dPNzs7N2uj0aWxqXmNjWlxfcOrk2tjW0djqfWFUTkpKSktOV2NgW198
-/Pfp4Nfb3+Hz+2piYFpt/Pbr9f1uZ3P23tTY09HT2PF0bGJmbXLv4Nza3+j8b2pfW1po+vDk
-82plY15ZXFxeXFpoaGRsXVVXXGFibO7f1NTc7Gx4fGrw39rX3dnd83dtcv/m3t7h9vrn72ln
-YWFdXW57cmhpY2VkaftybW9lbnBoYldYYWf67f9nX19lfHJ89fD6cG59++Xe4d7b2tvc5OPi
-3+Ht5OPo7Pzx9PnzeG5xa2FhW1haXV9YWllYXV9tfXJraGllZWFt9+XZ19bb2d/veGRfWltl
-c+ji6/b9b2hoaP3c19fY4Pj15+Pd09HU0tjlbF9ZS0lJS1VhZmZhY2RdX2ReZV9ibG3+d2df
-XWVte/r983z7eWZmX2d+7tvV087O0c/P0trj/3ZtaXNx6+z68Pv6d3b28e/m7HphU05LTE5R
-XGd0697W1+Hn7/ZsXFZST0xOUVZcc+3k29fX2Njd4up8bv3s4t/d3tnZ3Nvg4vn8+WpxfmJc
-VlVYWWlv69zb2+NsXF1eX1RRWltfWVhdVlFTWGrs3tbW3N7i5u18/Hb/7Oze2d3j4O94eHR6
-++vv8erv5+ni5e/s7//w3uXv/2deWVhYWVVYYWRiZWNr+nFxY15jVVlfW11kX1/939na39rT
-0NLX2+TpfmNud/vxd/Tq2s/S1tnjemlgV1FQU1pjbHJ18vDq6v50ZFxVVVdQUFBNU1lXYXXk
-2NjZ2t77YF1iaW9w+ODe2dTR0dzh7fx79urm3d/r5fL09m/0/XdybGxqYl1nbfTp5t3c3eV5
-XVdNS0xLUldcb3j5/+7n7HlkaWddX2xyem53/3NzduPW0M7P2+t3fv1tfvzs39rZ2d3v7vdv
-Z11ganL4+3JlW1tfX1tebG5sZ1xQSk1QV2br3NrZ1tTj7u9oX19j++rh4fv07Ore2tva2tve
-aVlZVVdcavnp2tLO1eh7YlhVVVZaXF5eYm/89Hx1en7s4t7n6PNpYl5XVFxu/PXi3ur1/Xxv
-ZGVmXV1lbu3a1trY0dHV2dnf9vbu83FlYVtlfHL07uvnfXNkVVBMTU9SYWlxbWZqZl1XUFBb
-Z+ve9Oze3dXZ4eXj3NPW3uh9/2x37u3h4ufp6+z2dWxgbHhpb373+fHve3FpZWxscfbvfW9f
-Uk1NUVNbbmtpfHh+7eng63vv8Xt7a2Ztbe/h4N3e2t3f3N7o6vbq6vz07e3yeP3qdm/57/T3
-/n309nZtZlhWWFdYXGRjW1ZbXlhSUFRdeefh2tTU197d2uXufW9tZF1YXmd99nfw8ebf7e/s
-6ejr8vH9+urp5N3W1+Dt83dsXVlfXl5hXFZVTk9QU2VvbnJy/ezr6Ojl5ffv7/Dq+OXl3tri
-6O7x7+rm3dLT5X5lX15cbXZ3/v7s7HJfWFZVX37r5vrv3ud5aGFjX15dWFdWU1NRVlpbYWFs
-/e7l7vdybXBqaf3n29LS0c3O1t/Z1dbZ2NjY229mZmBpZGNdX2tiYmNbW1xgaGVqZGFgX2Jt
-fWttaGl0eW1pZ2jq39nceGRZVVhbY3zx5N7b2Nzi7eXe2dLP0tfe4/X79XH6/Ovi5OLl43dc
-V1lYTUpLT1FPUlBTXWVqbnbt5O14cWtmX1NUXvjb0s/OzdDW5/94ZGBlcvZ2dHl57OTf3+je
-5Ozs9fZ89H1tal9lZ3Dx/25nbHt4evxybGtqbmNfXVlZXF5fY1tTXHrr6Orf3uXn6ur3aXN7
-/d7d1s/RzdLV1+Dk5uHl9v/9bmVfW1ZTV1VTVVJQWFRPWGJ95t/h4eXu+v31/v96cG5jXl5o
-Z2p19ev8cmplZmhsdfTr5Nvc2dbU0dve4+no8/j2+Ozk3N/vbmdlW2JfVlZWVFRUUlZcY299
-bHrudW5iXGNeX2NvbXrk29HR0tbb5ubk693Z19Xj6OL4e2tfWFZbXWZ5bGZjXV9ocfTr4dbe
-49/5a19j+ent7n3s/V5ZTUtMSk5UXmJhdO7g4ejf6ezg5t3Z4ud8/+3n4u/p593c6eLm4Oh4
-dl9rfHrweXBsY19scmxtXFhZVVVOTVFTX23y4d3e7fTr4t/f5/jy7vZrWl1u9NnV0dDZ3fho
-XmV6d3RjdOl7dGtkX1xnfuzWz9HV3+XzamJcW2FXVVtcZmlmaGBibfHp9HhiXV5ZVFNZZ23h
-1NPP0Nj0Z11kePTq3tna3u93bXN77Onq5efubWFiaWxpamdvemtlXF1eYGBhYlxoaWRsa3j9
-fW937Ojm7+7l5+v07+7/ff979vju7H5vanv9dfLi3+X77+De4fbt4er/efr/fPjk4eDe3up5
-YFFLR0ZISkxPVmP96+jn3dzd5u36cP78fPvud29+9vHt4+ne19rlbFpQVVlbaXfq7unV0tzh
-9XTx+vdyXl9XWGBeWl9zdPbm5OpybnppbGlnY2d3fOrj5ezz+HtlX2Zpam997+zl3NbV3OXv
-eG5tb+/s6dva19fV3PL/eG5iU01LSEhIT1pqevjc1NfW1dvqeGJsaF5gXFpcX2FgXV1p69fS
-z9fn9Wty/P3u7N7X3ePq8HhpbmlhZ25++HFhV09NT1VaX2d0ePvq3+Dk6ufo6ubf3+95cWZZ
-VFVXWlxYW2Fo89vV2NTPztXg7vbl5O/q39ve5Obp63z97f95//11bmJaVlBYYmZ78fHm4fNj
-WVhcX19eW1tbV1RUV1haZWv04eDm+/jq5ePj29jQzMvN0d7u6ndfW1xic/1uZ3F2aGpva/Pt
-5N3l7mNbVFNeXWRsfd/j82NXVFBOUVVZWlx1ePvw/ejo29DMzM7R2d7vcl9bZvfh3OD1dGl0
-ZV5jYn7z7eXt5+Pr4uf7+XhtY19kYGFbXWtwdPj9fvrx82NSTExLTVpefeLh3tzZ3NbP2t/e
-625nb3d6fvv16+Hf4ux1aGZjZ2pzc3Pq7Pf7dnD9+XxwZGNhVVRUUFVaX2Rrb25rbW5oZWV5
-7N/Y2dzl5efc19zi7OTs+nj68fDv6OLn7u/1fu37bGJUXmds7u/l5np+8fp5/P7792tcX11W
-T05UWFtncnVxbG13/3vq5+/s7+zxdG58/Hv/9e3r4d7Y2dvX3+rtfmtsbHXt3t3f3+Df7Hpn
-X2FbWVVPV09OVVNUWl1jXVNXV11oX2Vlb93U0M/OzdDNz9PX3eZ5dm9kXFtZXWhraGVy+uzf
-3+Xk6OTu9nx0/Wxufu33ePT073t093txZ19dWVlYXmBZXWBrfv/+/Xr+831++nX+7PD7fOvf
-2dPY3ub16tzb3eLn5nppaGBlW1xdVVhUT1JPUVlbYmh9/m95a2xrfOvg2tvj5+n9/3Jo+319
-+Pzu/Xj/efj+aHHu6ert3t3f3dzb3uTs7OXi3+ri3+fr/mdfXVtdXWFeXFxdX2BeXFZRUFRX
-UVZdYWhv8ebh397d1dDY2Nbe5/dtaW3t4t/d4+Dg8/T15+vf2flkXltYWVxfX2dob+7p421Y
-V1FTUlRbYG1v//T+bGVoZWht8+Pr9v9pXmRofOjf1NLb3N7zev57fPHu6eTp5ezp397l4ebq
-5OLi4Nzna15YVVxaWF5lY1hYWVBRV1lcbPLp5uLf6PHv5enq93ZgV1ZVWF5gft7b1tfc4N/l
-8+jo4dXV1dTU2On2+2dfXFpXV1dPTlFbX1laYHB0c3dtZ1tdZGJk9e/46eLj7HpqZmZibe/k
-297t9XR99/7p4dnRz9Lf6+13ZGR373FfYV9eanF97u/b0tTb7+7+X1hTU1peY37/9GpdXVdX
-WFtkdX53ZGFcWFxhanH139nU1dvW1tzY0s/U1tLT19zo/3tdUltaXWJkdX11ZFpaWltdW11l
-YV5aWV9aW19p+nj/7/t0eO75anRvefFoZnVmaGdr+fLp5+TWz87P09TT1ePr93lmXWRdXmx3
-79/d3+fz8356fmddXWNdWFlXXmFdXVpZWVpjc/Xo8fLw9+Pe19DQ0dvsbV1gYV5cXW/t7Ovg
-3epzdfvm3+vs7v59fWRfZXb/9/NvdP13bGNcWFZYYGhsa2dhX19ZVllbXlxpenH97+fd2dTU
-3e3/5Nzt9vj44tjV1tna3uXtaWjz83doZ19ZVlNXZXNoaHbr3ehybG1u/ejyfHhqXFdcW1tq
-cujd5uzv7/X8a2NjX2VrZG91b+3j2M/Nzs/P3ev1amJz+//u9HR5dWxrZltYVltibfVyYmNe
-VlRUW3VsX2JZU1hUU1dbeeng3eLc297h4tnY0s7R1Nvne19fXVtq//Pt7OPj5uPv7+n9//dz
-e3dvbWVgZGV47OXf6u52X2BhXlxbWlxfZFxaWFleZ3p5/unu/HhlYmp149rW2N3Uz9XZ3Xxv
-fe7h4enzdfnp7+7r393l7HZWU01JSkdKTk5RW2N1/f3u7u7n5Ofq6PNvbGpjaXD74t7d2NDS
-2ufue2ZwaV9eXGRuYmb66Orn393e2tzg5ern821iXWNnaGNqbXP9bntzX1tVVVhXXW567eLb
-2ujzamVvZHHz/vfs5t/g93VsbOrn7/VoYmz23dvb2dzb3Nvb2NvtcmRcVU9NTExPWmdrYFdV
-U1xeW2Vrcmxq9XRlY2P88+vZzsvKy87Q1OF3ZFtVVFNYYm70397p6PN98fTv5une2+Hp7/j4
-9GxdaGNhblhRUk9OT1ZfaGv67uro7uzh5O7x9+/t6u5+fv729n3p5ufr6u58ZVxXU2Pu593Q
-ysbIz9Tf5exrc2hlXlNRT1ZcYV5XV1xfW11fXV9aWGJjau34bPt7b3doX1hYXGfx7uTY19vn
-9uzm8/rt69na2drk3dva1tznfWlfYVhWW1xgWV1zamt17eHi4+n89vRuYmN3Z19nZWxfXGhg
-W11ibnl7dnf1+fbi2tDQzczSz87S2Oh5al9eXWRtcHBpamNfXGJfXG3+/29kZV1aWFRUWWBp
-bXN0eHz+em1dV1lYXGp2b/T+/Ofk3djUzs/U2d/5//NveGpibnvy7eLX1tfa6vd7/f1vemNc
-YlhYWFpcXWBkbmNlZFlgaXJqWl1XVldVXHjl18zGxMXH0e59altWVFVcaHL15dza2dfX1tLa
-3dzv/2NcXV5z6t7q6u96clxXVllXU1dVU1RRT05PUl1cXHL87n59eX3x/vXr39rY3Obt/nty
-bnrk2tfc3Nnt6tzd3tvb2tvkdF1VT1RXVl1cWltbZG1lZW1+6eHb19ra2uHmb1lST1NWVlJV
-WXHm5dzX1dTX1tnf5X1yZ19gW1tv7NvV0M/T2Nnfffx+aGReV1RPWGBaW1xneHd6eGxsZ2Nm
-XVpaXWNubGRaVVZYavHe1tLR1t3e3O365t7c4fHs6uzw7/J2dGtufGxtcW1xdHNpX11gYnLn
-5PRvZV9cWFhm/+Ti5fFweW9sZWlkX2JqdW747vDd3d3T2+vs4NjX3uXub3Vlb/N88O94cv9y
-bPj8+Hhsc37p/19bW1pgXFpZVVpYX29m++ji3eLj4fRtXVZRU11ZX296fvrn6N/c3Nne6u3p
-6PHx6N7c3eLo5+7i2+Lj83Ryb2Nea2RhXF1eVE5PVFhga3JsbGVrbV5pb2lubG729Px78d7e
-6Onf3tjT0Nvo5e7t+ntvaPr05eDs7u7i4+31fPtxYmhcXF1ZWVteaXn+/Xz8bWFbU1BSWVxg
-aXjv+21rdnF0c//+5trf29na3eba2Nne7/R2/WVeY1xcY3rs5+Hc3uv6dmZgX19pbmRteG9o
-Z2djbHhwYV1cWVlTV1team156dzi39/i2+Dv7urh39XX3d7e3Nzh7vL092xobnv/eurl4t3h
-5uxxa2NaWFZaWFhZV1pfXlxXWWVw7urreGRrffv88+v8/WZkamRkYG748ere3d/p5PdldVxk
-a151eXT97t3W1dDS09DY5WtlZGVqZF9hamhobG1pXFdcV1NZXmZiYmJfWl1qb3n94NvV1tnY
-393z8eLs4d3b3/Hf6O/1ZGZ3bfzu9uLk/GhcX15p7Ovl73NtYV1gZGJufHF89X399fPlbV9p
-cndfZFZQVVBba354YV5gYWn86d7Sy8rLztze6nZlZXdsdff4fX11bfbn5/D7dmRZVE5MTktM
-V2f593pkZG17/nTu3NPO22xdbO7o7N3Pzc7X1dTa7Whu/+19aW1cWmdeWFNRYmlk/fTf1t3m
-6+Pe5Hrm3uTkam5nWllQTE1NTmdrYmlu5etzaGFjZ2Nq7m/x52/s9ffc0srL1d7f/HV2bvJ7
-9ebe3+Lrb/5hXFlaaFJOWVlaW01XcltmX2DseG/t5ej7Z/fb5d/v7t5xeenn5+j95t996295
-c1Zlef3/+OvT1eHeam/vaHTv5eHpdOPvYnJd+/Jd9e/5bF9cWFVQaXDq3XnscGNnXltjWk9h
-XmplTllYX3lv6M7MzMbP0tTm1dfa09vse2tbXk9PVk1bY2zs93T193Xva2piWWpwYV1eW2xl
-YO324d/s2+ns61xOVU9PWlj24+/Ry8rKzc/N2vR8XWdmWmZqZmds+eJ+/e3t5HdmYmJeXVxf
-b1xx6+jg5dnX321na2x+WV9tamhRUFlbWVtd/OJ05vJ2dV9kcuHV0trR1e7Z3dbc+frv3vP7
-bX1eVFtYal9cafXd7uv++F5TW1RcVE9cbn1lZmpyV1t0b9zf29HQ2vTm93leaPz82+Lc6HBp
-Vltq/mbr3O3Z3tjT2N3u3+znbnV5aHVTXW9sYllsYWJcZm5o6WRk+m9yanZcU1BUW1v8+ezm
-49zt2Oj06vvb6t3gdP1x7ufb2tnb39vs6XJXV1lgZHFpbfh0+11mYVZkZf1pffxtZlNVT15l
-XX545vLvfHJ5ZeP14Odl697Y6un3ce5z8Xju39/b29Ti3t/p6fbg9u5vWl1ZXU5SW2dvXfr2
-fHJfW2BgWG7v6W5q7WFnYllt9+D/7edxW1p9+uTm4dPKyNna5fxta3JfbGR14NTP5+f2enhv
-7Ork4fdyYllNTExMS1d7YXduWldRTElf83n34dff4eTt/nh+bdra/HZod15jbF9ndN7ZzcbO
-0tTT6O7b7uTf3+975l5OU1pZYuH1fvH7YFFeUFlmaW9k7GFXV1RYUmdcYOfs91xuYFp1b31r
-29TWzNDU5djZ3tHa2OzZ319uaPV27OHy2el9X2BuW19dWlpZYFVST05SXm9fa3n7aV9pZnJh
-Xm357OnudfDvb3Tw4dzd393m4O5gdW136dfLztTf2djV1e78Zl9TTFlZV1lZbunf6X5vam9u
-9n5bYWFfaWVmVVJVWFtd+m9ka2l8/+Xd2tXa2eTm3eLl6N/2/uPe2ebq/nXe4PNsZn1u893h
-eWzyZmR5ZVlbW1ZUXlZNTlFYUVxpW2dqZ3bq2vDz3dvd6t7xbXhncejY3+ni9+bs6Ofs3/b+
-6eHj49/m6ubr9O3feF5jaWRmbG5eXl5UYHF6Zl1eXGV3c19fZldfbH5+eftsavbm93n5c2v6
-4dnc5nV66+v493pr6t/b1tXY4vTs397Uz915bnBdW19VU1VUW1tnXlFWVl5obW9eZGZdXFlg
-WVJYYurj4+Hj1dXTzs/L1+Dd4N/r7uxuaG7u59/f825kYF1kbGhaUVJYW2dnYGx+6/7v2ufs
-9XJ+ZHBfVVdXXVvr1+jk39zxdup1aGNzZGff5v3w3N3o29Hd9PVqa/3sfmVvem923djee3dz
-dvVqV09XXVpodmhbWWVqaXBoVFReXlxbbnxfYP3te/n7W2fu6+/XyMrOz8zQ1c/c6Ozs8nPb
-23NdXGVXU2FfTk9UUlpjZllRX2ll79nZ4N7d3/jt/Vdd8+lwZnZrYWViXF/5cmBj/uV49OZu
-af/t9uPP1uLi0MzXz8vV7Pd0XX3id15h/2FYanNdVFlaWGRtXFFNV1JQanx0Yl9vY/n6W1dd
-5e1y3uFwfN/Z3tbT2+rr3+vp39vm/u/0fN/Z6nt+9l5Zef9dWWVlbOnyfX11b2dq+PNdWGZm
-Xm/+Zl1cYFtm/WVVV3NgauHc3+7f2dzb2dv7at/e49nk+Pnx9e3l2tfscndcW3Roa2Vo5tfe
-4+RvXGlrY/NqXV9MSElLVVROTFhfYevv+unt3dXf3tve7+bZ3NLX7G9h8eHm4t/ucf5pWm1u
-ZXho++J49+94bP35dt/h7HpaX2VicmheXGZqX+zm+HFXXGZfZ21dWmpnZ+ff4/9p9eze3uL4
-59bf6dvX5vjx5Nba2tnm397vYmhvXV5UWF9ZVlxZV2psaeLsd/9cXW5kXWFSTVJPTV9taHl2
-6dzd5djW6dnU39TW5v9faur+au7s9+jh9N3fdvZmY/DufOzj6e/yYnjuX2xWVW9qanJra2Vi
-W334XV5WVGNmWltdY27r8d3Z79/rcefe9+ff293b3dnX9OfwX/bq7OPs8WX+9nF6XP7tVnzc
-bGpobV9dZW75X2ZfSk1RSU9aZ2v42dXW693fW2zfbnHx6f128P31aWn8XXzT4Ord2+Xm09LO
-29nO6PzlWU1OUE5KVV/3eHHoWVnrY1pud29eY19eXFdkWF3Ny9nR0eJ0+n3v/2n0a1/Y21tk
-bGNccOHb2tTL3Xva4F//3Oxpeuf5/29yV0ZSZVRab3ds6Nfe6vjyWEdXZE5RX1RPWmV5++/Y
-1uPVyt7p1uVra/n/e/Pq6WBj1uX70dji5t3e7vxwYU5W9V9UbnhqePPq3+jo4mtZcFNET05O
-UllfZH3s5WBb5uZm4Nnm493V0NXRz+T22NZu+21dYGZya/n68G1d5etZ5+B0+3Zvd+Pe331W
-ae5bdvBgXVxbVltVWlhQcfJo3dPu9vX99uzu7GpX+uVp+upmXF1h7dfc3Opq39R689746NjT
-1NTf4nZXZWtOUlxPUVlSTVVRUlFNb+5n7tPa4t3j8+3z4uB63tlxd9t+ZvL/b+7w6vxYZvdZ
-Ydvd2tDP2Nvf4vldat92etTd7Ox3XWNfZmRQUlxTUmtaU11jZPvo5eVoXnFfVuvqcPbxbn3/
-ZV5XY+PffNPY8fP55t7Y2Nro9tbUeuTpZGJaW2BoX1xVUV12W3fsXm348/9samthXXjfaWjn
-b3b2dfbt9nddV27hXlb0/e3j4eDf2tvpbnPf6fPT5vXd4OXf4drl/O7t/GTpemNr/3N4d11X
-TVBcU09naGNmc3r17GZmWVRfbmD37m1seG1o7G/959zQz9ve3+t5evt33+Lj6X3/cVZWYGd3
-/PTv3P5eVk5NUVlh5NzS1d777OxfWE9QXHH02d7b2Ptj8+Zzcv1wbv1teWdrdmZq39LU1NTa
-8/xt/2peZVlY/9jmevX3bPDq5ubu5fJreN7vX15ZUVZYTU5XZGhYZ9rd/H1rVlZpbGNy5t7v
-69jb6t3X4PXZ0+7q2uJqW/niamNrZFdu8l9eeXZPU2f8emvo8Wbj1Hd43u9XTFn0aVljcWNs
-3Hxe99/scOvZ3ujm9WFm4WxZ7tjrdOXW1+fg6FtPbu1l79rnc+jb1+Px625n5uVbWV9XTFBd
-ZmRicVxSXX5jaOfoamtreOn09Whn7tba4dTY6fz8fevvZVxYV2JmZu3q/nrh1dDP1N7/Y2Zq
-WFdXVlp29t7b7WtXUU1TW2z2fnt4X1/x9XNpfO7j2NjS3Ph3b3Lk3vlveOji6O53ZWFeXWTl
-z9fua19XW2Fo7t7d3+fUzd9dT1BQX3zv3uPvb1FPY1pMTmFvb9vd3tvs+l9c/fldWGlfV2n0
-6ufXysrNxb/M3uHxW11nXFpfZ11XdedgVVVZT01cVFJaXlNLVvPq6+DU1drW3+Z7YmBRXNva
-e19mYVltb2L83dXU0snH2fr+bFpkcGv8/O1tX3ni72ru43ru2uLq6/ViWXbc52tZUVNPXWtm
-cW5hVlZw83BiYHp0c3loaX78aWjj0d3q593T0MzN09TY5mxo5vBeU1VZTE1SVl1s6/z32Nbe
-ZGZlT01NTE5QWV5h6N7e5ObU2t7W19/o7GlVUmJcTk1bZ17z0tPX1Njd3trQ1ejl3t/s4995
-ev3u39vT1O9kX1NQW15RT11cV1pbW09LUVNPXuXf3tfY4Xt09nBYXWtlceXh6t7a2dTS1dHV
-2dLW7OrZ7fDqcGFZVVlVUFVYWFxvZlZTU1FefeTlZFpWU1Rn+vXk3trd4t7Y521fXFhp/Ftd
-YWN0c//o4eTb0Nba0+rv7/na1tHLyszS2+1eZ15XWFBaX15faGJYU1hXYuDh72hvXk1LTk1M
-TFRdadrb1dva09TR1dLS2uLn7drc4fNj8ufv+e7n5m5tZ11pXlxVU1pgbW7/9WlfYWby7nRq
-bu/e33F3bV1OTE9RY1xaX11ucmRrbvX9Z+zc09Dh39vOytLY3dTN49zT3Nh7WVdPXGBaan7k
-blpxa/36dfhiZ3dgXVpdUk1YX219Z15fddvZ7mx+/FtbZmro5fvf2tTP2d3b2Od4aF5eXVZe
-7NzN0ePd1tjkfndqbGBPUFBf+2dne3j7bWh4ZnxiTU5LTVVTXnPs53Fvbnf6YWTy4t7ydvbk
-2NbUzszN1tXP1NHW6O1sWVRRV1575nr67vtrWV5gZWxpaml1/WVaZlxUV1FVXnj/Xmvm29ns
-7npzeWddWV9gXF12593a3dXW083b59jS3XV2/HF3YWbj3dfX7+vk5vtlevr/aVFSTk1TTUpN
-VVVLTVlr5eHc4/Xm7mdv8uxdT2Fw6t/+/3P63d/n3dDP4uLc4NnsZWxu8OP3/e3j73Ll4dnS
-73Z3YWVQS1RYXVxea2/r5Pp5aWZkWVZZXmJi/erc1d/n5eXk9W1ye3L5d2R36+tya/5v7eXW
-ysrM0tfe3vNqYWB4cW5la19YVUxMS0xIR0tXaW57evV5fXJfWVlaZOno2+d9e+jY3NPO1dHV
-9Pr1bv5jbOTg3eTP0+Te3/BrZXxnWnv4fW5kZ1xdZF9hc3D0al979+hmWF1ZWFpSW+7h33f6
-3+fobmZrfu33bXPvfmFXbN3PztLPzs3L1ODi7PlZTllYZ3Fr8Xls//r363xkVE9YYWBZX1tc
-ZFtkbWFcVFFid/D6YWhoZFleanL9/drd1tDRzM7R29/zbXrs7Pbv/+TtbnZqeunvev/+6ejo
-9OrcfXBcXVtOUlhtb25gWllZX2RlZ3ZqaWVvbnL2bPbo5urt/XHu5fLo2trS0s7P5NjW3e9w
-7nBdY2Zz+mZiYVpnXlVMSFhiZ/Pn4+94bGRcXmVuZWR5bmRoaV7+cHz7fd3f3G905Pf0/GJf
-9m5lXmbe29LV1dHSzNba2Nng/llSXFpcVF5la+rv7Ozj+2pWUltaV05WWWNsdHHr2up7XGP1
-allQW3Vpde3r2NDOzM/My9Pna2deV1NNTvXUztHY0tXV8G5sZmpdWV72c1xSWPbm71xlb2FX
-T0xIUUxITljy7ODq3c3R2vNl99vs+3X64utwX/3f2s/OzM3T/ldMTlhgZHPcz8/X5Pve3Gxd
-UlhcWE9IT1NYXWJv39ffenrc1tnxXWjzeV9SVODX6vls3+T4bE9WbGlkY/PKyNDS2crJ1elZ
-b/V0W0tMXf1ZU1/j0M/W6d3fZU0+P01RS05a69bY5mjy83dfXPvl8F5RWPTZ1ujqy8jR53Lu
-5/1WUFv02tfZ3NLT9Wtabtr8XVhdbmZeU05q9mZfZPDfelpNT2p5/W5w2NTdcltv5edZVGXs
-23xZW/71bW51zsPGyc/Oy9f+Wk1cd1xcW2bk3OPu2tLf9VVRb2tdVU9QXGNkaW7b2uX2WWtp
-VVBGR1RobWlf8t96Z1nu23ttXmTt1M/T1czHz99v5dLT3F9VbHjvaV5fYnpvYH3V2HhbWXfo
-a1xPWmxnZmZs+mlUTEtf69nkeeTV1OxjXejxb2lPcdPO2fve2tnsZGXq71ZRT2nU0dt4dODY
-5Xxr5djn/Vln4udwVVhga2tsb+fcYUxERlNoY1FWZeff+m753nRhWl3fzs/zXG/j5OXu3M/X
-2e372M/SbVpk69HY9evedVdLR1N832RQVmzpZFdQYXZbUlH5zcvbZ2H37PxlXe3kdlhMV+vf
-Z1Nc38zL1dvNydVuU1rj1ulPSllu/mRt69bXfmFf0sjTfVntzthvXWvZ5k5DQ1d5YU1HVfrl
-bV9lfPtNQkRZ3dvsa+bMzNLe2c7L41hZd87N3Wxz6vZmVVlp6vVXVF7bztxtW+rZ3fBtZmdc
-RkBEWd3jd2Bq4NHY2NHUz+1cYmXp6mBXT1/oe3Hr3tniZl1aY+ttXF1cZWNr6NzR0N3m4M7J
-zdfk/Ojkfm9iX2BYTUpOUlNTTk9PWWVo8dra5Xpz+eHS1tzta3tuY3FiW2VqX2Vn+dfX1dvp
-3eTo3ubr9GpkV1hxe3RoWGX9593saFxiWlJPWPz6a1lUZ+3h3eXx3u39bm/k3e1gWGrb1+R4
-XGv8Z2Vq7dXRz9vkzszO32VrdGJbWGHb2eHrZWx7cV9WW3L6/15QXmNVTUlP6dHW6Hd9aFpN
-UmLv2+1zaXH3aFdXYvXa5fTk2tHc5/bq29bf7+/h1eH2fW5vY1xmev10ZVxWXWzw9WRtbGpm
-Wl5aVFRUVmB37+Hx5+f79nBuef766uXV0d3e73XtcPXd3NLb6fNdbuvz63v+fWhdWV1eZ3Lz
-19LMys/V6GxbTEtOTU5NSk1TV19oa3B0+ur4+Pfx72hcXGh+29bb1tbb6Off19HT3PD58N7g
-+GtpY1ZNTFVUWVtVVVRde+v47NvY2uTm5ejk/1lcXGnu8Orr7N/tbmpbXmZbW19i8+Tk4t3m
-8Wxr6trO2GhaWlple2Z05NrQ1tXQ0tt+WFNabvb+693b6l5PS01UU01JT118/FxXWWJmVlr9
-2NDW6/zs7Ozr8trMycze6tza4WRXXmzs29jj4/NeUUxPXXZtXFxn7ODkem/m3+J7av7792JW
-V1dnc3X7/nljXlhVX292X1ZWZfHu5d7Xz9DY5+ff1tr9bHDs7ndsdujf3vP629LR4GNdXWFm
-ZmRtd35xV1FYWllNS05TYGBdcOLV1uZ67t3c5vZsYfjf3N3o3dPY5X15dPP4W1RVYGhteW74
-6ud89+bl4vhoa3X4//vuePxrYmNbX21zYV9mZfzvenfv5P1dUk5YeGxsenJ+eHFtcH7u29nk
-4tvW2eDa29ze39/i5/N9ZFxbZvfm3OHi33JcUkpKTFFVV1dbYFpZWmD05dvZ1NHc6W1fXF1f
-au/c08/b5eT48eTh19ne6/v2b2ZfXWNp/+Xf6X1vYFhYWW3x8Ojg5fhyYGFfWlZQVlRUXV1j
-bGxqbGpu/nVrYmFlZGZgZ+vc087PztHW09rj7unr6+76evvu9f9u+Ojm7nd2fXvt5+316u/x
-eV1dW1pWTUpISVBWX2VrfW1sc/De3dne4u3t5//0fP/17vR649vQ0dzf7fLu6un87v5tbGhj
-YGT5eV5eX2luYldWWFtgXl5namJXTk5Xc+nj2tnf4OTc0dXZ4u5vXFxZWWBkaWt46tnPzszQ
-3ODn/vDi+W5gW2FiY3zj5OV4aWdf+nT9emj9Y1dXWmt4bGZrb3V2Zl9eYWFiYmVw7+t2aVxZ
-X+/h4dXN0M7NzM3S1ON2aWd18XpsamhkXVVSX3Rsb21kYV5eYl1dY15bXm703+Dtbl1fWl1s
-Yl5ibfVzdfJ6fHl27uve3eLj4t7r8vD16eHo7Pz47Ovf4efl4NvRz8/P0Nn1W09JSEtPUFFY
-W1tbWlxrdG1dW15haHJ98ez9fe7u6NTS1+5qZFxu/e/e2tfY2dbc29nsbFpYY2BmX11sa37i
-3NbZ2upqXFhYVFRRTUxNUltu/vXl9nJrdd7d6uz7fnpdXGj14NnZ4ujydejh7dve7/h6fnNq
-dm535ujf2NXc3+v9aVpbV1pfaG5sbXBnbnzzfnnn7nBlXVtWTUtMV2ppa//t6nRhdPj07fLv
-6t3Szs/Oz9fe4dzf6Oj4+X1jXV9ibfz/93Zud2lkX2dvZl1gbW7x+W17b15WUFFVWF9oV1RZ
-WV5fd+Te293j3tnf397Wzs7P1NnucW1gXllcZXjr3d/k7Wpqanvn6eTZ3+328nBgXVZWV1pW
-W1tbaWVhV1Nda29tZ15YVldq6uff3NfS2NjY3t/qffro2drh5vF8YmhsbuTd2N7e3+7sbG1r
-bu7p7G9cWV9dWVFLTFBQUldZWVdbYmX73tLS1tzl3eHc2t/o6uvz6vRvaVtVVVxtfuTn7OF8
-a2pfbOXW09ba6PP07u50bmlma3ZnU09OTU5VY3zj2M/O2t/vcnP+5+t+bnL+cWdnbXdnZmth
-Z11eaGJx9uTa19TV09XX2u54bHjs6/h3bmRkZF1jYl5hXVdWW1ldXV1eWmV97+fh4/dmVlNP
-V3r74t7f3ePi5t7e3tra0dTa3ObifGxsaOvo393v9V5VU01NTVFUWWlvbXj69vprb2hq+eXT
-0NnffXnu7vPz/2tnXlxcXF5aYWpu7O/o4d3Y1trf3+jq7+/u+H1rcvt67drZ3OHx+W5582ld
-ZGJbXlxbYGFrb15ZUU5XWlZXWE5NUFv23NXNyc7X3uz18uv9aV1TUGDn3NTS09bk5t/f3d/v
-Z11daXBz6+Xh2t7q731udGJZVk5NUF1rc3dyeG1mZmxtfO7tb19fbXZx9/91Z11kcPzv9Pn1
-9unn6eTe18/Nz9PV1tnmfGlfZWx74uDv4eh5ZlhWT01NSkpMUllgZVxfbv7n6OXme25oZFpb
-aXjv29XS09bb5+/zbl9kePPn39/u+vD/8eT18u3r7nX5+W9kXV9od/Ts6/jt9XprWldUU19m
-Y2dxdmdoXl9iZWtmeOzs3drg4/Z7d3Xo4t/rdG9obWp95OTb1NPW4eHX2dvpeWlZW1hYXlZn
-+X3t8PV1dmVZVk1JSUtSXGhx/+745ut7fGRreWn/8vHm7+Ln7OTv3dPTz8zN0NLe+2pdYmVh
-+/n77v7yZV5hWVZPU1dYU1NaXP3s5dvb2dTd6vpnWlNRWGNieHdy8nr15uPc3+Z6ZXNkX2Nm
-ffbm1c3P19/k3+To3d7g7XL373f9c25wWltVT1dfb2xmXlhbZnj+4fNsbVZYUUtUWGhvYnRo
-b3313tfQ19TO2uJ8Y25v8OLk2tPS2N3ubGVaXmdmZltdbX19bO/rdndoZG9lYn7i4N/hbWVf
-W1pWWVNOSkxZXG/l7u3o39rm39nd09Xa2d/l/3N5cnN479/d1s/P1NrY2u99/mxmYFtVT1ZZ
-XndsbXx3cnpkWVROTkpKSklRXWnz4evc19zZ5eLj9+Ph3tnc0tPY2Off5+/9Z2ldW19jbvnz
-fHp1bmRfcur7d3tmYFVRWGD79OTc3eL7ZlxeWVBVW11jYWZna3Xt2Nvm7ujc5vDy++jm4N3m
-3dnc2+Hi4/T+cGt1e3rzfO7f5d/b4vtnWVlZXFlbZWvybF1dU01MTE5PUlVWV1xreO3f39fQ
-y8nP2OL7dXzu5+715NzS0NTX1tz9bmFaUU1PT1RTT1NbcuLZ19rg9Hl5ZWRjYF9ibWhdW19b
-W2NebHhvfe3g3eZ8/fzr4uXk4tnY3uTy+uvi1M7Pz8/S1+dvbWZWVFZka19fWl9lZmz98fxl
-VU9UU0xQVmBobfl+bXX4+O/n4X15+Ph4ae3v69TQzM/g43BaTUZJSE5j+9DP1dbn5+Le3t/f
-3t7e4nxlX1xjbG5nZF9dX1xZTk5NS1ZgdPji2Nna2dXT1dnq5PtjXE5LSE1hcurU0M3JyMvU
-2vlud2dvdXB0Xmjc2d7l29joe/ZsUlBSS0xMTlVNWGD89O/c6Xd25ebq8/ns9PxqdGxjcm18
-/Pvj8+x9Yfp96d3j3u/s//7f6PNsaG1+7/R2d2RgbWFYXWFgXnjb4elzamhZXlZVYWz/ZGz9
-bnl5durd1NPT1Nvl+v/+/vL99+Xl7uvxdHhmW2N0amnp3Nzd1tfd3t7deGRhU05OSkhHSk9X
-W3jm4+Xs6+5mZ2dfbX3k3NvW2NXX3+H+bGNcZmVmW1lqZGjz+O/2/N/X0NPd2tfY2vRvaFxY
-YGppcH70b11ZU0xHSE1XX1lYZ/zs39/q8era1tfe2dno/XJjXV9dbt/Z2eT86NfN0NXd8ubs
-9fVydv72fm1lXVJQUU9YW2JjXGpjZGdx73f59Pbp6d3pfXJmcnBkYF5q9ufg631cV1tcZ2/x
-3dTR09PY2uHk3tvd6vJnYlxUWFNZW2F8ampiXl9ZY2Rr/mx2+X1uZ2tqdPB4fuv4e2NaV1Vf
-euvo6ens6ejx6+ns2NXSz9XZ3+Pb2Nzg5u/7+fJ+b2FVTUpMTE5ZZHTu6ubd3+Xc2+l3aWNm
-XlhRTE1TX3Tl19vd4/VzZWRsc3X0/216em9z39fSztHY5/R1amFgXV9mYGh+/u349+3n4/dz
-aV9lX1diZWJueX5xbV9XVlVVWVtndfvf4d3a9HZ2+PJ54dnY197h6mpqaf/p4N7e3+bpenvv
-5Nzb29/9YlxcXV1eaGtsfOvqc213ZFxXUlZcXm3z7un8cG1candpYmnv7vj/Z2JeaHlw5t3a
-09PV2eTvffl99+Td2Nvn9/9iWltWW3P5c2ZbWllQWFpUWF5laHN0Y21yamdhZ21+4t7b2uLv
-+Pn0597Z2t3e4Nze4ebn3t3Z2uV7aVxeX15dXWNqbGdkZF5cWl5x8fl+9+/t7u/v83z86vxq
-YmBeWlVSUE5adera1t3a29/c5ejk393mfm1qbXr+5uPb29fT3epsXFJOTlFUWFlaXV5kdXp+
-6uTh6P3zalRMS09WVlxo9+Tl3dnd2dfc2Nzxfmlsc3f2eGxvePrl29bV1dPS0dLb7np3b2lj
-WlRYWFhWV1xoen3n6OnrcXBfWlZZXl5nYmBsdmRfZWr86ePf7Ovl6uXo7nJreHb49n11eevs
-6Ob06unl3ejk3Nfb7N/k8vZpX1lVVVRWWVpcWVNXXmJaWFxca2Znc2767+Pe4eHh3d/p8/p7
-b29qZ29xcufd1s7Q2uf7/Ht79Hf7e2dyc2tyc3fr5+vn7Pb59ff/Z19gXV1cYl9gamZeXGBk
-b/v/b2pnaWdy+vny9+rh4dra3Nvb2Nvd8H54ffJ4bmNs+vN9/urs9v94bWxhWVxbVVJPTU1P
-UlpbYPnp5ebw4t/t8ezo7P1uYF9z6uTg3dnc3u/6c2FjYXD6+O3j4+/u7OPj6ejp4tzb3u18
-eGpuZGny+vn9aVxUTUpKUF1z7OPj8u/ybm9laf1t+vhoalhSVFZldt3Py8rLys/g9f57aXXt
-+uh+aWteaO/c1+De2t3feWRaVlJMS0xPV11ibmZfXV1cZvjo5+vwd2ZaWFlj/uzr9vPn5+zq
-3dva2t3f4+nr5evj3Nnb5e53Yl1fXVldX2/yYFxt/fHv9Ozq7+/9amZdWFNPVV1jfOnt9fn7
-bnzo5uXj5uPf3+To93JxbWxr8urf19/r+nRmY2R23t3c3+zu/nhqZm5yaGBeVE1MTExOVlte
-Z2xtcWtvcWJoZWl19un+897l+f91++Pe1s/S0dXZ297lbmt2aH56bf3v49/h3N7m6O3p4uD0
-aF1XXF5mcWxwbl9TTk1OTVFXXWtmXVdaX11gZ/7d19XQ09bb4eLs4tva1tXV1t3pbWhjYGFl
-+vH4fXFsfOjs8e94fPR4bmNZV05NT1ZeW2n75Nje7XxmXFdXWVJPVVpcX2j36+zq4t7d3NvZ
-1NbZ1trd3+rx//97d+rf6vp9dnx4/Ph77+no9nFiW1tTTk5TVlZi7d/h42xfZ3h8+PP+6uPx
-a2VcXvnu7dzS0Nnh7G9paVli+//p6fHu7en9Z238//rq7eTc5+fi6XRleOzp/mVfXFFOTktH
-SExPVF1iYGFhbO/l5d3V1tbT2eDo8e3t39ze2eLp6Px7cG1fXmNp9fbg3NnV2dne3+9ybF5Z
-UE1QTlFYV2x98N/f4e1vYFtnePnp7f1mX2RdXF1da/ng3d7m7OP1ZXv++uTu7Ovn3+7x49PN
-zMrP09Tie2BWUExNTktNUlZbWl9hXGJ76tzh6+v7dmVYUFBSXXF2/u3n6ez2+Pd989/X2N/u
-7t3a3Ovv5eHd6nFkXltbYv/l29vr5t/me1tXXFxbWFlgXWL98/x19O77dGRhYGFdW15fZf3h
-4Off39/c3ud3Z2hga2dw7+7j5tzZ0c/T1tba9P5mXF9cZmFZXWdYU1lXZ2dgdm1naVxYVFll
-cvXu72lcXVteee7i2NzY2dvX4Ont6flvbmpvdPLt6dvf4uXo5/ZzZmtzbnH56vT5cmRpaGJt
-cWZcXmNaYHRsaWxsYV5jfe3r4ux+9nlqZWpwbG92/fHo7e7s7+/69vXq3uTj4+nl4u3r3eHb
-1t3ieWZeU01NU1tt9d/X2d/v/m5ZWVdYXWNlX1xbV1FUXGh38u7q9l9VUFJcaHbj1s7Oz9Pb
-2t/f2dvk9/rr5e7i5Pj39fT7+/tuY2JiX1lZXVpkbXPv+nFrZWVcUlNUUFZea/rj2NbW2Njc
-7mhdV1li/+Pd2Njb1dHPz9bd8fv4dmdiXVZQT1pmb+vi3N3v+fh+8fh9eGptaGBdXFxaW19f
-ZmRfaGRrbGltcv3x8X3/9u/f1dvg8n74dm1sa2RdX2p98Ozp39ze4u34eXby6vh07O9+/2lk
-aGFZVVRST05PUldXZnzk1c7O1dTZ3t7m4+bc3t7a5+jm82Zhal5aXGZtb25q/ebb197k6Orf
-4t7a4+f2ZWBcV1RQVFheZGdfXVtYX2lnXlpgX2FqZW5zae3s8Ot6bm3x7/ry8+vp5tjX2Nfa
-3d/q593d5ezycnn0/nlta29dVllaWVRTVVZbX2JeXWptbG1cWl5s4tbX087S2Nzf3ufu9X1v
-Yl9dWVlice3i29LU2t7f4vd2d3RpX2htem9y7d7W1dje6flxYFZPS0VESExPWGn9++ne4O9y
-X19qaV9j/uHl3dzs7Pft7O/g4t7c2tjj73x0dvjv3trk6W9hYlxmb2pv++//d3RzXlRNSE5W
-XGNp6uf1/mxw8OXf3dXS3OL4aGNaWVRTYHvv7W9kbW5t8N7V0tXW1dfY193c19nd3NzoeGBV
-UlRWWVdTWGJeWV9rdnJsbV9hZl5aW19jd+3m5Ofs7/Xu8W9fYWRdWV5rcevh4OPg6N3Y2tze
-2tfhfPnvfWplcPjq5/l7Yl1dW2lhW11aW2lsbG9sbGx1bmReXWBueXd8fXP+8u3q8+vf2dPU
-1tru/HZ28HlybnBzYV9jdP7+3Nfc4Ojo+mpkZXP89/pzfuvp3+l5bmlrZGdfVlFTVFhfcfbx
-6+x8bWdeWFhbYnz36uvr297Z09jZ7HF5Z3J5bnl8dvt4bGtud/La1dzl6/9mV1JYXF5pc3fx
-/nJeVFRPU19hcu7g2t/ecmN9fvHa0dHR09rrZ1xbWV/45t7V3O30fXRjZ37v3NbX2OdqW1hX
-TlJSaGhobWloYlpZW19t++fc5flzZ2x0ZHN3e+7d397f5+5qYl9dYl1j/OXc19vj5Onb29jR
-1d/zYWNgWltYYV9dYGVdW19dZWR68XRwbWdkYmRpeOni3e79dGJXU1Zn++Prfu/u6Ol4fO35
-6+Hd1dPY3N7c2+Tw6u7s6+nkd2NYT09RWWd489/d5PpvX1hdXmF393luZ1xRWVtTWl1kXmV5
-6+bu+P/z5+jg3trT2t3la2VfYmpo79/c19fSz9bueG1iYl5bWVlo7OHj9mhkbW98eHNiWFta
-T0pFRUpOXmx+49bPz9LX7ff++uvl2Nre3+Df/2549OTf3eT0cF9l/+Lc2tTR19zral1YWFZO
-T1FXZm1raW92bGZnXVJUXHv2cG974tvc2tzk8P7ydGBbXnD67uf//O357O32+PH+++rb2tnP
-2Njb7vxnX1pSUU9RUU9QWWJq5dzY2PVoW1BOTk9UV2Jy9N3d3t/p29rX1t/d3+/6Z1tjePDk
-5+Xj4Of6cWhtX2x4/HX2/2966edybmRyefvf5trZ3uF+aV9VXGVrXVdbVl5hXWJcWV9pc3rq
-3uXd3tja73b3493d29zh3N/i82x17evz9GtfW2FfYGprYF1fXFxeXmRfW1xcW1ZVXl9q9nvj
-4e7i6vPq5+12am1xeHvp5+zy7Nzb3dfY393zZg==
-
---n2m-MIME-boundary----------
-
---PART.BOUNDARY.2418.16114.COSMOS.VLSI.CS.CMU.EDU.715029153.2
-Content-type: text/richtext
-Content-Transfer-Encoding: quoted-printable
-
-<nl>
-<signature>Derek_Beatty@cmu.edu ABD Comp Sci, CMU, 5000 Forbes, Pgh, =
-PA 15213 USA
-</signature>=
-
---PART.BOUNDARY.2418.16114.COSMOS.VLSI.CS.CMU.EDU.715029153.2--
-
diff --git a/widgets/.cvsignore b/widgets/.cvsignore
deleted file mode 100644
index d5b3a2ad62..0000000000
--- a/widgets/.cvsignore
+++ /dev/null
@@ -1,9 +0,0 @@
-.deps
-.libs
-Makefile
-Makefile.in
-*.lo
-*.la
-minicard-test
-minicard-label-test
-reflow-test
diff --git a/widgets/ChangeLog b/widgets/ChangeLog
deleted file mode 100644
index b9ada966b1..0000000000
--- a/widgets/ChangeLog
+++ /dev/null
@@ -1,218 +0,0 @@
-2001-05-21 Chris Toshok <toshok@ximian.com>
-
- * menus/gal-view-menus.c (build_menus): make the view menuitems
- radio items of the same group, and allocate the closure here.
- (free_verbs): only need to free the one DefineViews verb here.
- (closure_free): new function - EListFreeFunc for our
- listenerClosure list.
- (remove_listeners): new function, free our listener list.
- (gvm_destroy): call remove_listeners.
- (gvm_init): init listenerClosures list.
- (toggled_cb): callback for radio items.
- (build_verbs): strip out almost all the code since there's only 1
- verb now.
- (build_stuff): call remove_listeners.
-
-2001-05-08 Gediminas Paulauskas <menesis@delfi.lt>
-
- * misc/e-search-bar.c (add_dropdown), (set_option): first try to
- translate, then if not suceeded -- convert from utf8. This handles
- cases when menuitem needs to be translated (it is passed as N_()), or is
- utf8 search title. However you cannot have a search like "Folders" -- it
- is translated. Part of fix for #2253.
-
- * misc/e-filter-bar.c: d() debugging strings. Use E_FILTERBAR_ADVANCED
- macro instead of own "Advanced ..." for consistency.
-
-2001-05-07 Gediminas Paulauskas <menesis@delfi.lt>
-
- * menus/gal-view-menus.c (build_menus): convert label to locale
- encoding. Still displays truncated strings.
-
- * menus/Makefile.am: removed -DEVOLUTION_VERSION.
-
-2001-04-21 Gediminas Paulauskas <menesis@delfi.lt>
-
- * menus/gal-view-menus.c: bonobo_ui_node_set_attr expects unstranslated
- strings, so change _() to N_().
-
-2001-04-12 Dan Winship <danw@ximian.com>
-
- * menus/gal-view-menus.c (build_menus): Fix a memory leak.
- (Doesn't anyone ever change any other file in this directory? :)
-
-2001-04-10 Gediminas Paulauskas <menesis@delfi.lt>
-
- * menus/gal-view-menus.c: convert label to utf8.
-
-2001-04-04 Kjartan Maraas <kmaraas@gnome.org>
-
- * menus/gal-view-menus.c: Fix headers.
-
-2001-03-28 Christopher James Lahey <clahey@ximian.com>
-
- * menus/gal-view-menus.c (build_menus): Don't print the xml tree
- here.
-
-2001-03-16 Miguel de Icaza <miguel@ximian.com>
-
- * menus/gal-view-menus.c (build_menus): Hook this up under the
- "ViewBegin" node.
-
-2001-02-28 Miguel de Icaza <miguel@ximian.com>
-
- * menus/gal-view-menus.c (build_menus): Add translation string
- here.
-
-2001-03-05 Christopher James Lahey <clahey@ximian.com>
-
- * menus/gal-view-menus.c (collection_changed): Rebuild when the
- collection changes.
-
-2001-01-27 Jason Leach <jasonleach@usa.net>
-
- * cvs remove all files in shortcut-bar/, this widget is now in
- gal, will be maintained there.
-
- * Makefile.am (SUBDIRS): Remove shortcut-bar from here.
-
-2001-01-25 Christopher James Lahey <clahey@helixcode.com>
-
- * menus/gal-view-menus.c: Make this actually deploy the titles
- from the GalViewCollection and emit the display_view signals and
- such.
-
-2001-01-22 Jon Trowbridge <trow@gnu.org>
-
- * menus/gal-view-menus.c (define_views): Fixed
- gal_define_views_dialog_new to be called with its proper argument.
-
-2000-12-06 Christopher James Lahey <clahey@helixcode.com>
-
- * menus/gal-view-menus.c, menus/gal-view-menus.h: Added a
- GalViewCollection argument to the new function here.
-
-2000-12-04 Dan Winship <danw@helixcode.com>
-
- * menus/gal-view-menus.c: NULL-terminate gal_view_menus_apply's
- BonoboUIVerb array to prevent a crash. (Why are there gal* things
- in the evolution sources?)
-
-2000-11-05 Christopher James Lahey <clahey@helixcode.com>
-
- * e-paned/.cvsignore, e-table/.cvsignore, e-text/.cvsignore:
- Removed unnecessary .cvsignore files.
-
-2000-09-18 Christopher James Lahey <clahey@helixcode.com>
-
- * Makefile.am: Removed directories that have been moved to gal.
-
- * e-paned/.cvsignore, e-paned/Makefile.am, e-paned/e-hpaned.c,
- e-paned/e-hpaned.h, e-paned/e-paned.c, e-paned/e-paned.h,
- e-paned/e-vpaned.c, e-paned/e-vpaned.h: Moved to gal.
-
- * e-reflow/.cvsignore, e-reflow/Makefile.am,
- e-reflow/e-reflow-sorted.c, e-reflow/e-reflow-sorted.h,
- e-reflow/e-reflow.c, e-reflow/e-reflow.h: Moved to gal.
-
- * e-table/.cvsignore, e-table/ChangeLog, e-table/LICENSE,
- e-table/Makefile.am, e-table/ROADMAP.e-table, e-table/TODO,
- e-table/add-col.xpm, e-table/arrow-down.xpm, e-table/arrow-up.xpm,
- e-table/check-empty.xpm, e-table/check-filled.xpm,
- e-table/clip.png, e-table/e-cell-checkbox.c,
- e-table/e-cell-checkbox.h, e-table/e-cell-string.c,
- e-table/e-cell-text.c, e-table/e-cell-text.h,
- e-table/e-cell-toggle.c, e-table/e-cell-toggle.h,
- e-table/e-cell-tree.c, e-table/e-cell-tree.h, e-table/e-cell.c,
- e-table/e-cell.h, e-table/e-table-click-to-add.c,
- e-table/e-table-click-to-add.h, e-table/e-table-col-dnd.h,
- e-table/e-table-col.c, e-table/e-table-col.h,
- e-table/e-table-column-model.h, e-table/e-table-column.c,
- e-table/e-table-config.c, e-table/e-table-config.glade,
- e-table/e-table-config.glade.h, e-table/e-table-config.h,
- e-table/e-table-defines.h, e-table/e-table-example-1.c,
- e-table/e-table-example-2.c,
- e-table/e-table-field-chooser-dialog.c,
- e-table/e-table-field-chooser-dialog.h,
- e-table/e-table-field-chooser-item.c,
- e-table/e-table-field-chooser-item.h,
- e-table/e-table-field-chooser.c,
- e-table/e-table-field-chooser.glade,
- e-table/e-table-field-chooser.glade.h,
- e-table/e-table-field-chooser.h,
- e-table/e-table-group-container.c,
- e-table/e-table-group-container.h, e-table/e-table-group-leaf.c,
- e-table/e-table-group-leaf.h, e-table/e-table-group.c,
- e-table/e-table-group.glade, e-table/e-table-group.glade.h,
- e-table/e-table-group.h, e-table/e-table-header-item.c,
- e-table/e-table-header-item.h, e-table/e-table-header.c,
- e-table/e-table-header.h, e-table/e-table-item.c,
- e-table/e-table-item.h, e-table/e-table-model.c,
- e-table/e-table-model.h, e-table/e-table-one.c,
- e-table/e-table-one.h, e-table/e-table-scrolled.c,
- e-table/e-table-scrolled.h, e-table/e-table-selection-model.c,
- e-table/e-table-selection-model.h, e-table/e-table-simple.c,
- e-table/e-table-simple.h, e-table/e-table-size-test.c,
- e-table/e-table-sort-info.c, e-table/e-table-sort-info.h,
- e-table/e-table-sorted-variable.c,
- e-table/e-table-sorted-variable.h, e-table/e-table-sorted.c,
- e-table/e-table-sorted.h, e-table/e-table-sorter.c,
- e-table/e-table-sorter.h, e-table/e-table-subset-variable.c,
- e-table/e-table-subset-variable.h, e-table/e-table-subset.c,
- e-table/e-table-subset.h, e-table/e-table-text-model.c,
- e-table/e-table-text-model.h, e-table/e-table-tooltip.h,
- e-table/e-table-tree.h, e-table/e-table.c, e-table/e-table.h,
- e-table/e-tree-example-1.c, e-table/e-tree-example-2.c,
- e-table/e-tree-model.c, e-table/e-tree-model.h,
- e-table/e-tree-simple.c, e-table/e-tree-simple.h,
- e-table/image1.png, e-table/image2.png, e-table/image3.png,
- e-table/remove-col.xpm, e-table/sample.table,
- e-table/table-test.c, e-table/table-test.h, e-table/test-check.c,
- e-table/test-cols.c, e-table/test-table.c: Moved to gal.
-
- * e-text/.cvsignore, e-text/Makefile.am, e-text/e-entry-test.c,
- e-text/e-entry.c, e-text/e-entry.h,
- e-text/e-text-event-processor-emacs-like.c,
- e-text/e-text-event-processor-emacs-like.h,
- e-text/e-text-event-processor-types.h,
- e-text/e-text-event-processor.c, e-text/e-text-event-processor.h,
- e-text/e-text-model.c, e-text/e-text-model.h,
- e-text/e-text-test.c, e-text/e-text.c, e-text/e-text.h: Moved to
- gal.
-
-2000-09-14 Michael Meeks <michael@helixcode.com>
-
- * e-reflow/e-reflow-sorted.h: fix include.
-
-2000-09-13 Christopher James Lahey <clahey@helixcode.com>
-
- * Makefile.am (SUBDIRS): Added e-reflow.
-
- * e-reflow/e-reflow.c, e-reflow/e-reflow.h: Moved from
- addressbook/gui/minicard/.
-
- * e-reflow/Makefile.am, e-reflow/.cvsignore: New files for a new
- directory.
-
-2000-09-08 Lauris Kaplinski <lauris@helixcode.com>
-
- * e-text/e-text.c (calc_line_widths): Fix byte/char confusion
-
-2000-08-30 Federico Mena Quintero <federico@helixcode.com>
-
- * e-paned/e-hpaned.c (e_hpaned_motion): Do not flicker while
- trying to resize a quantized pane.
-
- * e-paned/e-vpaned.c (e_vpaned_motion): Likewise.
-
-2000-08-30 Federico Mena Quintero <federico@helixcode.com>
-
- * widgets/e-paned/e-vpaned.c (e_vpaned_size_allocate): Ensure that
- the child's allocation height is >= 1.
-
- * widgets/e-paned/e-hpaned.c (e_hpaned_size_allocate): Ensure that
- the child's allocation width is >= 1.
-
-2000-08-30 Federico Mena Quintero <federico@helixcode.com>
-
- * ChangeLog: Started a ChangeLog here.
diff --git a/widgets/LICENSE b/widgets/LICENSE
deleted file mode 100644
index b1f6ae08a4..0000000000
--- a/widgets/LICENSE
+++ /dev/null
@@ -1 +0,0 @@
-This code is released under the terms of the GNU GPL.
diff --git a/widgets/Makefile.am b/widgets/Makefile.am
deleted file mode 100644
index b5380daa7f..0000000000
--- a/widgets/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-
-SUBDIRS = \
- misc \
- meeting-time-sel \
- menus
diff --git a/widgets/meeting-time-sel/.cvsignore b/widgets/meeting-time-sel/.cvsignore
deleted file mode 100644
index 50530fdf4e..0000000000
--- a/widgets/meeting-time-sel/.cvsignore
+++ /dev/null
@@ -1,8 +0,0 @@
-.deps
-.libs
-.pure
-Makefile
-Makefile.in
-*.lo
-*.la
-test-meeting-time-selector
diff --git a/widgets/meeting-time-sel/ChangeLog b/widgets/meeting-time-sel/ChangeLog
deleted file mode 100644
index f2598d9fa2..0000000000
--- a/widgets/meeting-time-sel/ChangeLog
+++ /dev/null
@@ -1,82 +0,0 @@
-2001-05-04 JP Rosevear <jpr@ximian.com>
-
- * e-meeting-time-sel-list-item.c
- (e_meeting_time_selector_list_item_destroy): correct type where
- same pixmap mask was unreffed twice
-
-2001-04-24 Kjartan Maraas <kmaraas@gnome.org>
-
- * e-meeting-time-sel.c, test-meeting-time-sel.c: Added #include
- <glib.h>.
-
-2001-04-08 Federico Mena Quintero <federico@ximian.com>
-
- * e-meeting-time-sel-item.c (e_meeting_time_selector_item_init):
- Use a pretty arrow instead of GDK_TOP_LEFT_ARROW.
-
-2001-04-04 Kjartan Maraas <kmaraas@gnome.org>
-
- * e-meeting-time-sel-item.c: Fix headers.
- * e-meeting-time-sel-list-item.c: Same here.
- * e-meeting-time-sel.[ch]: Same here.
- * test-meeting-time-sel.c: Same here.
-
-2001-03-29 Larry Ewing <lewing@ximian.com>
-
- * e-meeting-time-sel-list-item.c: s/#include/#ifdef/ to fix
- Kjartan's commit.
-
-2001-03-29 Kjartan Maraas <kmaraas@gnome.org>
-
- * e-meeting-time-sel-item.c: #ifdef HAVE_CONFIG_H
- * e-meeting-time-sel-list-item.c: Same here.
- * e-meeting-time-sel.c: Same here.
- * test-meeting-time-sel.c: And here.
-
-2001-03-15 Dan Winship <danw@ximian.com>
-
- * e-meeting-time-sel.c
- (e_meeting_time_selector_on_text_item_event):
- * e-meeting-time-sel-list-item.c
- (e_meeting_time_selector_list_item_button_press): Update arguments
- to e_canvas_item_grab_focus.
-
-2000-12-25 Miguel de Icaza <miguel@helixcode.com>
-
- * e-meeting-time-sel.c (e_meeting_time_selector_attendee_add): Set
- draw_background to FALSE.
-
-2000-12-06 Christopher James Lahey <clahey@helixcode.com>
-
- * e-meeting-time-sel.c: Fixed a bunch of warnings.
-
-2000-09-25 Damon Chaplin <damon@helixcode.com>
-
- * e-meeting-time-sel-item.c:
- * e-meeting-time-sel.c: fixed use of date strings to support i18n
- better.
- (e_meeting_time_selector_update_attendees_list_positions): updated to
- use e_canvas_item_move_absolute() to position the EText items.
-
-2000-09-18 Christopher James Lahey <clahey@helixcode.com>
-
- * Makefile.am: Added $(EXTRA_GNOME_CFLAGS) and
- $(EXTRA_GNOME_LIBS). Removed unneeded libraries.
-
- * e-meeting-time-sel-list-item.c, e-meeting-time-sel.c,
- e-meeting-time-sel.h: Fixed the #include lines to deal properly
- with gal.
-
-2000-09-06 Ettore Perazzoli <ettore@helixcode.com>
-
- * Makefile.am (INCLUDES): Add `$(EXTRA_GNOME_CFLAGS)'.
-
-2000-06-26 Christopher James Lahey <clahey@helixcode.com>
-
- * Makefile.am: Added the include path to top_srcdir.
-
-2000-06-25 Ettore Perazzoli <ettore@helixcode.com>
-
- * e-meeting-time-sel.c: Specify the #include path for
- `e-canvas-utils.h' so that we build with builddir != srcdir.
-
diff --git a/widgets/meeting-time-sel/LICENSE b/widgets/meeting-time-sel/LICENSE
deleted file mode 100644
index 9babf4395f..0000000000
--- a/widgets/meeting-time-sel/LICENSE
+++ /dev/null
@@ -1 +0,0 @@
-This code is licensed under the terms of the GNU GPL
diff --git a/widgets/meeting-time-sel/Makefile.am b/widgets/meeting-time-sel/Makefile.am
deleted file mode 100644
index 767de5cd86..0000000000
--- a/widgets/meeting-time-sel/Makefile.am
+++ /dev/null
@@ -1,35 +0,0 @@
-
-INCLUDES = \
- $(EXTRA_GNOME_CFLAGS) \
- $(GNOME_INCLUDEDIR) \
- -I $(top_srcdir) \
- -DG_LOG_DOMAIN=\"meeting-time-sel\"
-
-noinst_LIBRARIES = \
- libevolutionmtsel.a
-
-libevolutionmtsel_a_SOURCES = \
- e-meeting-time-sel.c \
- e-meeting-time-sel.h \
- e-meeting-time-sel-item.c \
- e-meeting-time-sel-item.h \
- e-meeting-time-sel-list-item.c \
- e-meeting-time-sel-list-item.h
-
-noinst_PROGRAMS = \
- test-meeting-time-selector
-
-test_meeting_time_selector_SOURCES = \
- test-meeting-time-sel.c
-
-test_meeting_time_selector_LDADD = \
- libevolutionmtsel.a \
- $(EXTRA_GNOME_LIBS) \
- $(GNOMEUI_LIBS)
-
-test_meeting_time_selector_LDFLAGS = $(GNOME_LIBDIR)
-
-EXTRA_DIST = \
- e-meeting-time-sel-mail.xpm \
- e-meeting-time-sel-no-mail.xpm
-
diff --git a/widgets/meeting-time-sel/e-meeting-time-sel-item.c b/widgets/meeting-time-sel/e-meeting-time-sel-item.c
deleted file mode 100644
index f67524055a..0000000000
--- a/widgets/meeting-time-sel/e-meeting-time-sel-item.c
+++ /dev/null
@@ -1,993 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@gtk.org>
- *
- * Copyright 1999, Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * EMeetingTimeSelectorItem - A GnomeCanvasItem which is used for both the main
- * display canvas and the top display (with the dates, times & All Attendees).
- * I didn't make these separate GnomeCanvasItems since they share a lot of
- * code.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <time.h>
-#include <glib.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include "e-meeting-time-sel-item.h"
-#include "e-meeting-time-sel.h"
-
-/* Initially the grid lines were drawn at the bottom of cells, but this didn't
- line up well with the GtkEntry widgets, which in the default theme draw a
- black shadow line across the top. So I've switched our code to draw the
- lines across the top of cells. */
-#define E_MEETING_TIME_SELECTOR_DRAW_GRID_LINES_AT_BOTTOM 0
-
-static void e_meeting_time_selector_item_class_init (EMeetingTimeSelectorItemClass *mts_item_class);
-static void e_meeting_time_selector_item_init (EMeetingTimeSelectorItem *mts_item);
-static void e_meeting_time_selector_item_destroy (GtkObject *object);
-
-static void e_meeting_time_selector_item_set_arg (GtkObject *o, GtkArg *arg,
- guint arg_id);
-static void e_meeting_time_selector_item_realize (GnomeCanvasItem *item);
-static void e_meeting_time_selector_item_unrealize (GnomeCanvasItem *item);
-static void e_meeting_time_selector_item_update (GnomeCanvasItem *item,
- double *affine,
- ArtSVP *clip_path, int flags);
-static void e_meeting_time_selector_item_draw (GnomeCanvasItem *item,
- GdkDrawable *drawable,
- int x, int y,
- int width, int height);
-static double e_meeting_time_selector_item_point (GnomeCanvasItem *item,
- double x, double y,
- int cx, int cy,
- GnomeCanvasItem **actual_item);
-static gint e_meeting_time_selector_item_event (GnomeCanvasItem *item,
- GdkEvent *event);
-static gint e_meeting_time_selector_item_button_press (EMeetingTimeSelectorItem *mts_item,
- GdkEvent *event);
-static gint e_meeting_time_selector_item_button_release (EMeetingTimeSelectorItem *mts_item,
- GdkEvent *event);
-static gint e_meeting_time_selector_item_motion_notify (EMeetingTimeSelectorItem *mts_item,
- GdkEvent *event);
-
-static void e_meeting_time_selector_item_paint_day_top (EMeetingTimeSelectorItem *mts_item,
- GdkDrawable *drawable,
- GDate *date,
- int x, int scroll_y,
- int width, int height);
-static void e_meeting_time_selector_item_paint_all_attendees_busy_periods (EMeetingTimeSelectorItem *mts_item, GdkDrawable *drawable, GDate *date, int x, int y, int width, int height);
-static void e_meeting_time_selector_item_paint_day (EMeetingTimeSelectorItem *mts_item,
- GdkDrawable *drawable,
- GDate *date,
- int x, int scroll_y,
- int width, int height);
-static void e_meeting_time_selector_item_paint_busy_periods (EMeetingTimeSelectorItem *mts_item, GdkDrawable *drawable, GDate *date, int x, int scroll_y, int width, int height);
-static gint e_meeting_time_selector_item_find_first_busy_period (EMeetingTimeSelectorItem *mts_item, GDate *date, gint row);
-static void e_meeting_time_selector_item_paint_attendee_busy_periods (EMeetingTimeSelectorItem *mts_item, GdkDrawable *drawable, int row, int x, int y, int width, int first_period, EMeetingTimeSelectorBusyType busy_type);
-
-static EMeetingTimeSelectorPosition e_meeting_time_selector_item_get_drag_position (EMeetingTimeSelectorItem *mts_item, gint x, gint y);
-static gboolean e_meeting_time_selector_item_calculate_busy_range (EMeetingTimeSelector *mts,
- gint row,
- gint x,
- gint width,
- gint *start_x,
- gint *end_x);
-
-static GnomeCanvasItemClass *parent_class;
-
-/* The arguments we take */
-enum {
- ARG_0,
- ARG_MEETING_TIME_SELECTOR
-};
-
-
-GtkType
-e_meeting_time_selector_item_get_type (void)
-{
- static GtkType e_meeting_time_selector_item_type = 0;
-
- if (!e_meeting_time_selector_item_type) {
- GtkTypeInfo e_meeting_time_selector_item_info = {
- "EMeetingTimeSelectorItem",
- sizeof (EMeetingTimeSelectorItem),
- sizeof (EMeetingTimeSelectorItemClass),
- (GtkClassInitFunc) e_meeting_time_selector_item_class_init,
- (GtkObjectInitFunc) e_meeting_time_selector_item_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- e_meeting_time_selector_item_type = gtk_type_unique (gnome_canvas_item_get_type (), &e_meeting_time_selector_item_info);
- }
-
- return e_meeting_time_selector_item_type;
-}
-
-
-static void
-e_meeting_time_selector_item_class_init (EMeetingTimeSelectorItemClass *mts_item_class)
-{
- GtkObjectClass *object_class;
- GnomeCanvasItemClass *item_class;
-
- parent_class = gtk_type_class (gnome_canvas_item_get_type());
-
- object_class = (GtkObjectClass *) mts_item_class;
- item_class = (GnomeCanvasItemClass *) mts_item_class;
-
- gtk_object_add_arg_type ("EMeetingTimeSelectorItem::meeting_time_selector",
- GTK_TYPE_POINTER, GTK_ARG_WRITABLE,
- ARG_MEETING_TIME_SELECTOR);
-
- object_class->destroy = e_meeting_time_selector_item_destroy;
- object_class->set_arg = e_meeting_time_selector_item_set_arg;
-
- /* GnomeCanvasItem method overrides */
- item_class->realize = e_meeting_time_selector_item_realize;
- item_class->unrealize = e_meeting_time_selector_item_unrealize;
- item_class->update = e_meeting_time_selector_item_update;
- item_class->draw = e_meeting_time_selector_item_draw;
- item_class->point = e_meeting_time_selector_item_point;
- item_class->event = e_meeting_time_selector_item_event;
-}
-
-
-static void
-e_meeting_time_selector_item_init (EMeetingTimeSelectorItem *mts_item)
-{
- GnomeCanvasItem *item = GNOME_CANVAS_ITEM (mts_item);
-
- mts_item->mts = NULL;
-
- mts_item->main_gc = NULL;
- mts_item->stipple_gc = NULL;
-
- /* Create the cursors. */
- mts_item->normal_cursor = gdk_cursor_new (GDK_LEFT_PTR);
- mts_item->resize_cursor = gdk_cursor_new (GDK_SB_H_DOUBLE_ARROW);
- mts_item->last_cursor_set = NULL;
-
- item->x1 = 0;
- item->y1 = 0;
- item->x2 = 0;
- item->y2 = 0;
-}
-
-
-static void
-e_meeting_time_selector_item_destroy (GtkObject *object)
-{
- EMeetingTimeSelectorItem *mts_item;
-
- mts_item = E_MEETING_TIME_SELECTOR_ITEM (object);
-
- gdk_cursor_destroy (mts_item->normal_cursor);
- gdk_cursor_destroy (mts_item->resize_cursor);
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (*GTK_OBJECT_CLASS (parent_class)->destroy)(object);
-}
-
-
-static void
-e_meeting_time_selector_item_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- GnomeCanvasItem *item;
- EMeetingTimeSelectorItem *mts_item;
-
- item = GNOME_CANVAS_ITEM (o);
- mts_item = E_MEETING_TIME_SELECTOR_ITEM (o);
-
- switch (arg_id){
- case ARG_MEETING_TIME_SELECTOR:
- mts_item->mts = GTK_VALUE_POINTER (*arg);
- break;
- }
-}
-
-
-static void
-e_meeting_time_selector_item_realize (GnomeCanvasItem *item)
-{
- GnomeCanvas *canvas;
- GdkWindow *window;
- EMeetingTimeSelectorItem *mts_item;
-
- if (GNOME_CANVAS_ITEM_CLASS (parent_class)->realize)
- (*GNOME_CANVAS_ITEM_CLASS (parent_class)->realize)(item);
-
- mts_item = E_MEETING_TIME_SELECTOR_ITEM (item);
-
- canvas = item->canvas;
- window = GTK_WIDGET (canvas)->window;
-
- mts_item->main_gc = gdk_gc_new (window);
- mts_item->stipple_gc = gdk_gc_new (window);
-}
-
-
-static void
-e_meeting_time_selector_item_unrealize (GnomeCanvasItem *item)
-{
- EMeetingTimeSelectorItem *mts_item;
-
- mts_item = E_MEETING_TIME_SELECTOR_ITEM (item);
-
- gdk_gc_unref (mts_item->main_gc);
- mts_item->main_gc = NULL;
- gdk_gc_unref (mts_item->stipple_gc);
- mts_item->stipple_gc = NULL;
-
- if (GNOME_CANVAS_ITEM_CLASS (parent_class)->unrealize)
- (*GNOME_CANVAS_ITEM_CLASS (parent_class)->unrealize)(item);
-}
-
-
-static void
-e_meeting_time_selector_item_update (GnomeCanvasItem *item, double *affine, ArtSVP *clip_path, int flags)
-{
- if (GNOME_CANVAS_ITEM_CLASS (parent_class)->update)
- (* GNOME_CANVAS_ITEM_CLASS (parent_class)->update) (item, affine, clip_path, flags);
-
- /* The grid covers the entire canvas area. */
- item->x1 = 0;
- item->y1 = 0;
- item->x2 = INT_MAX;
- item->y2 = INT_MAX;
-}
-
-
-/*
- * DRAWING ROUTINES - functions to paint the canvas item.
- */
-
-static void
-e_meeting_time_selector_item_draw (GnomeCanvasItem *item, GdkDrawable *drawable, int x, int y, int width, int height)
-{
- EMeetingTimeSelector *mts;
- EMeetingTimeSelectorItem *mts_item;
- EMeetingTimeSelectorAttendee *attendee;
- gint day_x, meeting_start_x, meeting_end_x, bar_y, bar_height;
- gint row, row_y, start_x, end_x;
- GDate date, last_date, current_date;
- gboolean is_display_top, show_meeting_time;
- GdkGC *gc, *stipple_gc;
-
- mts_item = E_MEETING_TIME_SELECTOR_ITEM (item);
- mts = mts_item->mts;
- g_return_if_fail (mts != NULL);
- gc = mts_item->main_gc;
- stipple_gc = mts_item->stipple_gc;
-
- is_display_top = (GTK_WIDGET (item->canvas) == mts->display_top)
- ? TRUE : FALSE;
-
- /* Calculate the first and last visible days and positions. */
- e_meeting_time_selector_calculate_day_and_position (mts, x,
- &date, &day_x);
- e_meeting_time_selector_calculate_day_and_position (mts, x + width,
- &last_date, NULL);
-
- /* For the top display draw the 'All Attendees' row background. */
- if (is_display_top) {
- gdk_gc_set_foreground (gc, &mts->all_attendees_bg_color);
- gdk_draw_rectangle (drawable, gc, TRUE,
- 0, mts->row_height * 2 - y,
- width, mts->row_height);
- } else {
- gdk_gc_set_foreground (gc, &mts->bg_color);
- gdk_draw_rectangle (drawable, gc, TRUE, 0, 0, width, height);
- }
-
- /* Calculate the x coordinates of the meeting time. */
- show_meeting_time = e_meeting_time_selector_get_meeting_time_positions (mts, &meeting_start_x, &meeting_end_x);
-
- /* Draw the meeting time background. */
- if (show_meeting_time
- && (meeting_end_x - 1 >= x) && (meeting_start_x + 1 < x + width)
- && (meeting_end_x - meeting_start_x > 2)) {
- gdk_gc_set_foreground (gc, &mts->meeting_time_bg_color);
- if (is_display_top)
- gdk_draw_rectangle (drawable, gc, TRUE,
- meeting_start_x + 1 - x, mts->row_height * 2 - y,
- meeting_end_x - meeting_start_x - 2, mts->row_height);
- else
- gdk_draw_rectangle (drawable, gc, TRUE,
- meeting_start_x + 1 - x, 0,
- meeting_end_x - meeting_start_x - 2, height);
- }
-
- /* For the main display draw the stipple background for attendee's
- that have no calendar information. */
- if (!is_display_top) {
- gdk_gc_set_foreground (gc, &mts->grid_color);
- gdk_gc_set_foreground (stipple_gc, &mts->grid_color);
- gdk_gc_set_background (stipple_gc, &mts->stipple_bg_color);
- gdk_gc_set_stipple (stipple_gc, mts->stipple);
- gnome_canvas_set_stipple_origin (item->canvas, stipple_gc);
- gdk_gc_set_fill (stipple_gc, GDK_OPAQUE_STIPPLED);
- row = y / mts->row_height;
- row_y = row * mts->row_height - y;
- while (row < mts->attendees->len && row_y < height) {
- attendee = &g_array_index (mts->attendees,
- EMeetingTimeSelectorAttendee, row);
- if (attendee->has_calendar_info) {
- if (e_meeting_time_selector_item_calculate_busy_range (mts, row, x, width, &start_x, &end_x)) {
- if (start_x >= width || end_x <= 0) {
- gdk_draw_rectangle (drawable, stipple_gc, TRUE, 0, row_y, width, mts->row_height);
- } else {
- if (start_x >= 0) {
- gdk_draw_rectangle (drawable, stipple_gc, TRUE, 0, row_y, start_x, mts->row_height);
- gdk_draw_line (drawable, gc, start_x, row_y, start_x, row_y + mts->row_height);
- }
- if (end_x <= width) {
- gdk_draw_rectangle (drawable, stipple_gc, TRUE, end_x, row_y, width - end_x, mts->row_height);
- gdk_draw_line (drawable, gc, end_x, row_y, end_x, row_y + mts->row_height);
- }
- }
- }
- } else {
- gdk_draw_rectangle (drawable, stipple_gc, TRUE,
- 0, row_y,
- width, mts->row_height);
- }
- row++;
- row_y += mts->row_height;
- }
- gdk_gc_set_fill (gc, GDK_SOLID);
- }
-
- /* Now paint the visible days one by one. */
- current_date = date;
- for (;;) {
- /* Currently we use the same GnomeCanvasItem class for the
- top display and the main display. We may use separate
- classes in future if necessary. */
- if (is_display_top)
- e_meeting_time_selector_item_paint_day_top (mts_item, drawable, &current_date, day_x, y, width, height);
- else
- e_meeting_time_selector_item_paint_day (mts_item, drawable, &current_date, day_x, y, width, height);
-
- day_x += mts_item->mts->day_width;
- if (g_date_compare (&current_date, &last_date) == 0)
- break;
- g_date_add_days (&current_date, 1);
- }
-
- /* Draw the busy periods. */
- if (is_display_top)
- e_meeting_time_selector_item_paint_all_attendees_busy_periods (mts_item, drawable, &date, x, y, width, height);
- else
- e_meeting_time_selector_item_paint_busy_periods (mts_item, drawable, &date, x, y, width, height);
-
-
- /* Draw the currently-selected meeting time vertical bars. */
- if (show_meeting_time) {
- if (is_display_top) {
- bar_y = mts->row_height * 2 - y;
- bar_height = mts->row_height;
- } else {
- bar_y = 0;
- bar_height = height;
- }
-
- gdk_gc_set_foreground (gc, &mts->grid_color);
-
- if ((meeting_start_x + 2 >= x)
- && (meeting_start_x - 2 < x + width)) {
- gdk_draw_rectangle (drawable, gc, TRUE,
- meeting_start_x - 2 - x, bar_y,
- 5, bar_height);
- }
-
- if ((meeting_end_x + 2 >= x)
- && (meeting_end_x - 2 < x + width)) {
- gdk_draw_rectangle (drawable, gc, TRUE,
- meeting_end_x - 2 - x, bar_y,
- 5, bar_height);
- }
- }
-}
-
-
-static void
-e_meeting_time_selector_item_paint_day_top (EMeetingTimeSelectorItem *mts_item,
- GdkDrawable *drawable, GDate *date,
- int x, int scroll_y,
- int width, int height)
-{
- EMeetingTimeSelector *mts;
- GdkGC *gc;
- GdkFont *font;
- gint y, grid_x;
- gchar buffer[128], *format;
- gint hour, hour_x, hour_y;
- GdkRectangle clip_rect;
-
- mts = mts_item->mts;
- gc = mts_item->main_gc;
-
- gdk_gc_set_foreground (gc, &mts->grid_color);
-
- /* Draw the horizontal lines. */
- y = mts->row_height - 1 - scroll_y;
- gdk_draw_line (drawable, gc, x, y, x + mts->day_width - 1, y);
- gdk_gc_set_foreground (gc, &mts->grid_shadow_color);
- gdk_draw_line (drawable, gc, x, y + 1, x + mts->day_width - 1, y + 1);
- gdk_gc_set_foreground (gc, &mts->grid_color);
- y += mts->row_height;
- gdk_draw_line (drawable, gc, x, y, x + mts->day_width - 1, y);
- y += mts->row_height;
- gdk_draw_line (drawable, gc, x, y, x + mts->day_width - 1, y);
-
-
- /* Draw the vertical grid lines. */
- for (grid_x = mts->col_width - 1;
- grid_x < mts->day_width - mts->col_width;
- grid_x += mts->col_width) {
- gdk_draw_line (drawable, gc,
- x + grid_x, mts->row_height * 2 - 4 - scroll_y,
- x + grid_x, height);
- }
- grid_x = mts->day_width - 2;
- gdk_draw_line (drawable, gc, x + grid_x, 0, x + grid_x, height);
- grid_x++;
- gdk_draw_line (drawable, gc, x + grid_x, 0, x + grid_x, height);
-
- /* Draw the date. Set a clipping rectangle so we don't draw over the
- next day. */
- font = GTK_WIDGET (mts)->style->font;
- if (mts->date_format == E_MEETING_TIME_SELECTOR_DATE_FULL)
- /* This is a strftime() format string %A = full weekday name,
- %B = full month name, %d = month day, %Y = full year. */
- format = _("%A, %B %d, %Y");
- else if (mts->date_format == E_MEETING_TIME_SELECTOR_DATE_ABBREVIATED_DAY)
- /* This is a strftime() format string %a = abbreviated weekday
- name, %m = month number, %d = month day, %Y = full year. */
- format = _("%a %m/%d/%Y");
- else
- /* This is a strftime() format string %m = month number,
- %d = month day, %Y = full year. */
- format = _("%m/%d/%Y");
-
- g_date_strftime (buffer, sizeof (buffer), format, date);
-
- clip_rect.x = x;
- clip_rect.y = -scroll_y;
- clip_rect.width = mts->day_width - 2;
- clip_rect.height = mts->row_height - 2;
- gdk_gc_set_clip_rectangle (gc, &clip_rect);
- gdk_draw_string (drawable, font, gc,
- x + 4, 4 + font->ascent - scroll_y, buffer);
- gdk_gc_set_clip_rectangle (gc, NULL);
-
- /* Draw the hours. */
- hour = mts->first_hour_shown + (mts->zoomed_out ? 3 : 1);
- hour_x = x + mts->col_width;
- hour_y = mts->row_height + 4 + font->ascent - scroll_y;
- while (hour < mts->last_hour_shown) {
- gdk_draw_string (drawable, font, gc,
- hour_x - (mts->hour_widths[hour] / 2),
- hour_y, EMeetingTimeSelectorHours[hour]);
-
- hour += mts->zoomed_out ? 3 : 1;
- hour_x += mts->col_width;
- }
-}
-
-
-/* This paints the colored bars representing busy periods for the combined
- list of attendees. For now we just paint the bars for each attendee of
- each other. If we want to speed it up we could optimise it later. */
-static void
-e_meeting_time_selector_item_paint_all_attendees_busy_periods (EMeetingTimeSelectorItem *mts_item, GdkDrawable *drawable, GDate *date, int x, int scroll_y, int width, int height)
-{
- EMeetingTimeSelector *mts;
- EMeetingTimeSelectorBusyType busy_type;
- gint row, y;
- GdkGC *gc;
- gint *first_periods;
-
- mts = mts_item->mts;
- gc = mts_item->main_gc;
-
- /* Calculate the y coordinate to paint the row at in the drawable. */
- y = 2 * mts->row_height - scroll_y - 1;
-
- /* Get the first visible busy periods for all the attendees. */
- first_periods = g_new (gint, mts->attendees->len);
- for (row = 0; row < mts->attendees->len; row++) {
- first_periods[row] = e_meeting_time_selector_item_find_first_busy_period (mts_item, date, row);
- }
-
- for (busy_type = 0;
- busy_type < E_MEETING_TIME_SELECTOR_BUSY_LAST;
- busy_type++) {
- gdk_gc_set_foreground (gc, &mts->busy_colors[busy_type]);
- for (row = 0; row < mts->attendees->len; row++) {
- if (first_periods[row] == -1)
- continue;
- e_meeting_time_selector_item_paint_attendee_busy_periods (mts_item, drawable, x, y, width, row, first_periods[row], busy_type);
- }
- }
-
- g_free (first_periods);
-}
-
-
-static void
-e_meeting_time_selector_item_paint_day (EMeetingTimeSelectorItem *mts_item,
- GdkDrawable *drawable, GDate *date,
- int x, int scroll_y,
- int width, int height)
-{
- EMeetingTimeSelector *mts;
- GdkGC *gc;
- gint grid_x, grid_y, attendee_index, unused_y;
-
- mts = mts_item->mts;
- gc = mts_item->main_gc;
-
- /* Draw the grid lines. The grid lines around unused rows are drawn in
- a different color. */
-
- /* Draw the horizontal grid lines. */
- attendee_index = scroll_y / mts->row_height;
-#if E_MEETING_TIME_SELECTOR_DRAW_GRID_LINES_AT_BOTTOM
- for (grid_y = mts->row_height - 1 - (scroll_y % mts->row_height);
-#else
- for (grid_y = - (scroll_y % mts->row_height);
-#endif
- grid_y < height;
- grid_y += mts->row_height)
- {
- if (attendee_index <= mts->attendees->len) {
- gdk_gc_set_foreground (gc, &mts->grid_color);
- gdk_draw_line (drawable, gc, 0, grid_y,
- width, grid_y);
- } else {
- gdk_gc_set_foreground (gc, &mts->grid_unused_color);
- gdk_draw_line (drawable, gc, 0, grid_y,
- width, grid_y);
- }
- attendee_index++;
- }
-
- /* Draw the vertical grid lines. */
- unused_y = (mts->attendees->len * mts->row_height) - scroll_y;
- if (unused_y >= 0) {
- gdk_gc_set_foreground (gc, &mts->grid_color);
- for (grid_x = mts->col_width - 1;
- grid_x < mts->day_width - mts->col_width;
- grid_x += mts->col_width)
- {
- gdk_draw_line (drawable, gc,
- x + grid_x, 0,
- x + grid_x, unused_y - 1);
- }
- gdk_draw_rectangle (drawable, gc, TRUE,
- x + mts->day_width - 2, 0,
- 2, unused_y);
- }
-
- if (unused_y < height) {
- gdk_gc_set_foreground (gc, &mts->grid_unused_color);
- for (grid_x = mts->col_width - 1;
- grid_x < mts->day_width - mts->col_width;
- grid_x += mts->col_width)
- {
- gdk_draw_line (drawable, gc,
- x + grid_x, unused_y,
- x + grid_x, height);
- }
- gdk_draw_rectangle (drawable, gc, TRUE,
- x + mts->day_width - 2, unused_y,
- 2, height - unused_y);
- }
-
-
-}
-
-
-/* This paints the colored bars representing busy periods for the individual
- attendees. */
-static void
-e_meeting_time_selector_item_paint_busy_periods (EMeetingTimeSelectorItem *mts_item, GdkDrawable *drawable, GDate *date, int x, int scroll_y, int width, int height)
-{
- EMeetingTimeSelector *mts;
- EMeetingTimeSelectorBusyType busy_type;
- gint row, y, first_period;
- GdkGC *gc;
-
- mts = mts_item->mts;
- gc = mts_item->main_gc;
-
- /* Calculate the first visible attendee row. */
- row = scroll_y / mts->row_height;
-
- /* Calculate the y coordinate to paint the row at in the drawable. */
- y = row * mts->row_height - scroll_y;
-
- /* Step through the attendees painting the busy periods. */
- while (y < height && row < mts->attendees->len) {
-
- /* Find the first visible busy period. */
- first_period = e_meeting_time_selector_item_find_first_busy_period (mts_item, date, row);
- if (first_period != -1) {
- /* Paint the different types of busy periods, in
- reverse order of precedence, so the highest
- precedences are displayed. */
- for (busy_type = 0;
- busy_type < E_MEETING_TIME_SELECTOR_BUSY_LAST;
- busy_type++) {
- gdk_gc_set_foreground (gc, &mts->busy_colors[busy_type]);
- e_meeting_time_selector_item_paint_attendee_busy_periods (mts_item, drawable, x, y, width, row, first_period, busy_type);
- }
- }
- y += mts->row_height;
- row++;
- }
-}
-
-
-/* This subtracts the attendees longest_period_in_days from the given date,
- and does a binary search of the attendee's busy periods array to find the
- first one which could possible end on the given day or later.
- If none are found it returns -1. */
-static gint
-e_meeting_time_selector_item_find_first_busy_period (EMeetingTimeSelectorItem *mts_item, GDate *date, gint row)
-{
- EMeetingTimeSelector *mts;
- EMeetingTimeSelectorAttendee *attendee;
- EMeetingTimeSelectorPeriod *period;
- gint period_num;
-
- mts = mts_item->mts;
-
- attendee = &g_array_index (mts->attendees,
- EMeetingTimeSelectorAttendee, row);
-
- period_num = e_meeting_time_selector_find_first_busy_period (mts, attendee, date);
- if (period_num == -1)
- return -1;
-
- /* Check if the period starts after the end of the current canvas
- scroll area. */
- period = &g_array_index (attendee->busy_periods,
- EMeetingTimeSelectorPeriod, period_num);
- if (g_date_compare (&mts->last_date_shown, &period->start.date) < 0)
- return -1;
-
- return period_num;
-}
-
-
-/* This paints the visible busy periods for one attendee which are of a certain
- busy type, e.g out of office. It is passed the index of the first visible
- busy period of the attendee and continues until it runs off the screen. */
-static void
-e_meeting_time_selector_item_paint_attendee_busy_periods (EMeetingTimeSelectorItem *mts_item, GdkDrawable *drawable, int x, int y, int width, int row, int first_period, EMeetingTimeSelectorBusyType busy_type)
-{
- EMeetingTimeSelector *mts;
- EMeetingTimeSelectorAttendee *attendee;
- EMeetingTimeSelectorPeriod *period;
- GdkGC *gc;
- gint period_num, x1, x2, x2_within_day, x2_within_col;
-
- mts = mts_item->mts;
- gc = mts_item->main_gc;
-
- attendee = &g_array_index (mts->attendees,
- EMeetingTimeSelectorAttendee, row);
-
- for (period_num = first_period;
- period_num < attendee->busy_periods->len;
- period_num++) {
- period = &g_array_index (attendee->busy_periods,
- EMeetingTimeSelectorPeriod, period_num);
-
- if (period->busy_type != busy_type)
- continue;
-
- /* Convert the period start and end times to x coordinates. */
- x1 = e_meeting_time_selector_calculate_time_position (mts, &period->start);
- /* If the period is off the right of the area being drawn, we
- are finished. */
- if (x1 >= x + width)
- return;
-
- x2 = e_meeting_time_selector_calculate_time_position (mts, &period->end);
- /* If the period is off the left edge of the area skip it. */
- if (x2 <= x)
- continue;
-
- /* We paint from x1 to x2 - 1, so that for example a time
- from 5:00-6:00 is distinct from 6:00-7:00.
- We never finish on a grid line separating days, and we only
- ever paint on a normal vertical grid line if the period is
- only 1 pixel wide. */
- x2_within_day = x2 % mts->day_width;
- if (x2_within_day == 0) {
- x2 -= 2;
- } else if (x2_within_day == mts->day_width - 1) {
- x2 -= 1;
- } else {
- x2_within_col = x2_within_day % mts->col_width;
- if (x2_within_col == 0 && x2 > x1 + 1)
- x2 -= 1;
- }
-
- /* Paint the rectangle. We leave a gap of 2 pixels at the
- top and bottom, remembering that the grid is painted along
- the top/bottom line of each row. */
- if (x2 - x1 > 0) {
-#if E_MEETING_TIME_SELECTOR_DRAW_GRID_LINES_AT_BOTTOM
- gdk_draw_rectangle (drawable, gc, TRUE,
- x1 - x, y + 2,
- x2 - x1, mts->row_height - 5);
-#else
- gdk_draw_rectangle (drawable, gc, TRUE,
- x1 - x, y + 3,
- x2 - x1, mts->row_height - 5);
-#endif
- }
- }
-}
-
-
-/*
- * CANVAS ITEM ROUTINES - functions to be a GnomeCanvasItem.
- */
-
-/* This is supposed to return the nearest item the the point and the distance.
- Since we are the only item we just return ourself and 0 for the distance.
- This is needed so that we get button/motion events. */
-static double
-e_meeting_time_selector_item_point (GnomeCanvasItem *item, double x, double y,
- int cx, int cy,
- GnomeCanvasItem **actual_item)
-{
- *actual_item = item;
- return 0.0;
-}
-
-
-static gint
-e_meeting_time_selector_item_event (GnomeCanvasItem *item, GdkEvent *event)
-{
- EMeetingTimeSelectorItem *mts_item;
-
- mts_item = E_MEETING_TIME_SELECTOR_ITEM (item);
-
- switch (event->type) {
- case GDK_BUTTON_PRESS:
- return e_meeting_time_selector_item_button_press (mts_item,
- event);
- case GDK_BUTTON_RELEASE:
- return e_meeting_time_selector_item_button_release (mts_item,
- event);
- case GDK_MOTION_NOTIFY:
- return e_meeting_time_selector_item_motion_notify (mts_item,
- event);
- default:
- break;
- }
-
- return FALSE;
-}
-
-
-/* This handles all button press events for the item. If the cursor is over
- one of the meeting time vertical bars we start a drag. If not we set the
- meeting time to the nearest half-hour interval.
- Note that GnomeCanvas converts the event coords to world coords,
- i.e. relative to the entire canvas scroll area. */
-static gint
-e_meeting_time_selector_item_button_press (EMeetingTimeSelectorItem *mts_item,
- GdkEvent *event)
-{
- EMeetingTimeSelector *mts;
- EMeetingTimeSelectorTime start_time, end_time;
- EMeetingTimeSelectorPosition position;
- GDate *start_date, *end_date;
- gint x, y;
-
- mts = mts_item->mts;
- x = (gint) event->button.x;
- y = (gint) event->button.y;
-
- /* Check if we are starting a drag of the vertical meeting time bars.*/
- position = e_meeting_time_selector_item_get_drag_position (mts_item,
- x, y);
- if (position != E_MEETING_TIME_SELECTOR_POS_NONE) {
- if (gnome_canvas_item_grab (GNOME_CANVAS_ITEM (mts_item),
- GDK_POINTER_MOTION_MASK
- | GDK_BUTTON_RELEASE_MASK,
- mts_item->resize_cursor,
- event->button.time) == 0 /*Success*/) {
- mts->dragging_position = position;
- return TRUE;
- }
- }
-
- /* Convert the x coordinate into a EMeetingTimeSelectorTime. */
- e_meeting_time_selector_calculate_time (mts, x, &start_time);
- start_date = &start_time.date;
- end_date = &end_time.date;
-
- /* Find the nearest half-hour or hour interval, depending on whether
- zoomed_out is set. */
- if (mts->zoomed_out) {
- start_time.minute = 0;
- end_time = start_time;
- end_time.hour += 1;
- } else {
- start_time.minute -= start_time.minute % 30;
- end_time = start_time;
- end_time.minute += 30;
- }
-
- /* Fix any overflows. */
- e_meeting_time_selector_fix_time_overflows (&end_time);
-
- /* Set the new meeting time. */
- e_meeting_time_selector_set_meeting_time (mts_item->mts,
- g_date_year (start_date),
- g_date_month (start_date),
- g_date_day (start_date),
- start_time.hour,
- start_time.minute,
- g_date_year (end_date),
- g_date_month (end_date),
- g_date_day (end_date),
- end_time.hour,
- end_time.minute);
-
-
- return FALSE;
-}
-
-
-/* This handles all button release events for the item. If we were dragging,
- we finish the drag. */
-static gint
-e_meeting_time_selector_item_button_release (EMeetingTimeSelectorItem *mts_item,
- GdkEvent *event)
-{
- EMeetingTimeSelector *mts;
-
- mts = mts_item->mts;
-
- /* Reset any drag. */
- if (mts->dragging_position != E_MEETING_TIME_SELECTOR_POS_NONE) {
- mts->dragging_position = E_MEETING_TIME_SELECTOR_POS_NONE;
- e_meeting_time_selector_remove_timeout (mts);
- gnome_canvas_item_ungrab (GNOME_CANVAS_ITEM (mts_item),
- event->button.time);
- }
-
- return FALSE;
-}
-
-
-/* This handles all motion notify events for the item. If button1 is pressed
- we check if a drag is in progress. If not, we set the cursor if we are over
- the meeting time vertical bars. Note that GnomeCanvas doesn't use motion
- hints, which may affect performance. */
-static gint
-e_meeting_time_selector_item_motion_notify (EMeetingTimeSelectorItem *mts_item,
- GdkEvent *event)
-{
- EMeetingTimeSelector *mts;
- EMeetingTimeSelectorPosition position;
- GdkCursor *cursor;
- gint x, y;
-
- mts = mts_item->mts;
- x = (gint) event->motion.x;
- y = (gint) event->motion.y;
-
- if (mts->dragging_position != E_MEETING_TIME_SELECTOR_POS_NONE) {
- e_meeting_time_selector_drag_meeting_time (mts, x);
- return TRUE;
- }
-
- position = e_meeting_time_selector_item_get_drag_position (mts_item,
- x, y);
-
- /* Determine which cursor should be used. */
- if (position == E_MEETING_TIME_SELECTOR_POS_NONE)
- cursor = mts_item->normal_cursor;
- else
- cursor = mts_item->resize_cursor;
-
- /* Only set the cursor if it is different to the last one we set. */
- if (mts_item->last_cursor_set != cursor) {
- mts_item->last_cursor_set = cursor;
- gdk_window_set_cursor (GTK_WIDGET (GNOME_CANVAS_ITEM (mts_item)->canvas)->window, cursor);
- }
-
- return FALSE;
-}
-
-
-static EMeetingTimeSelectorPosition
-e_meeting_time_selector_item_get_drag_position (EMeetingTimeSelectorItem *mts_item,
- gint x, gint y)
-{
- EMeetingTimeSelector *mts;
- gboolean is_display_top;
- gint meeting_start_x, meeting_end_x;
-
- mts = mts_item->mts;
-
- is_display_top = (GTK_WIDGET (GNOME_CANVAS_ITEM (mts_item)->canvas) == mts->display_top) ? TRUE : FALSE;
-
- if (is_display_top && y < mts->row_height * 2)
- return E_MEETING_TIME_SELECTOR_POS_NONE;
-
- if (!e_meeting_time_selector_get_meeting_time_positions (mts, &meeting_start_x, &meeting_end_x))
- return E_MEETING_TIME_SELECTOR_POS_NONE;
-
- if (x >= meeting_end_x - 2 && x <= meeting_end_x + 2)
- return E_MEETING_TIME_SELECTOR_POS_END;
-
- if (x >= meeting_start_x - 2 && x <= meeting_start_x + 2)
- return E_MEETING_TIME_SELECTOR_POS_START;
-
- return E_MEETING_TIME_SELECTOR_POS_NONE;
-}
-
-
-static gboolean
-e_meeting_time_selector_item_calculate_busy_range (EMeetingTimeSelector *mts,
- gint row,
- gint x,
- gint width,
- gint *start_x,
- gint *end_x)
-{
- EMeetingTimeSelectorAttendee *attendee;
-
- attendee = &g_array_index (mts->attendees,
- EMeetingTimeSelectorAttendee, row);
-
- *start_x = -1;
- *end_x = -1;
-
- if (!g_date_valid (&attendee->busy_periods_start.date)
- || !g_date_valid (&attendee->busy_periods_end.date))
- return FALSE;
-
- *start_x = e_meeting_time_selector_calculate_time_position (mts, &attendee->busy_periods_start) - x - 1;
-
- *end_x = e_meeting_time_selector_calculate_time_position (mts, &attendee->busy_periods_end) - x;
-
- return TRUE;
-}
diff --git a/widgets/meeting-time-sel/e-meeting-time-sel-item.h b/widgets/meeting-time-sel/e-meeting-time-sel-item.h
deleted file mode 100644
index d9fe6c6a9b..0000000000
--- a/widgets/meeting-time-sel/e-meeting-time-sel-item.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@gtk.org>
- *
- * Copyright 1999, Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * MeetingTimeSelectorItem - A GnomeCanvasItem which is used for both the main
- * display canvas and the top display (with the dates, times & All Attendees).
- * I didn't make these separate GnomeCanvasItems since they share a lot of
- * code.
- */
-
-#ifndef _E_MEETING_TIME_SELECTOR_ITEM_H_
-#define _E_MEETING_TIME_SELECTOR_ITEM_H_
-
-#include "e-meeting-time-sel.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-#define E_MEETING_TIME_SELECTOR_ITEM(obj) (GTK_CHECK_CAST((obj), e_meeting_time_selector_item_get_type (), EMeetingTimeSelectorItem))
-#define E_MEETING_TIME_SELECTOR_ITEM_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), e_meeting_time_selector_item_get_type (), EMeetingTimeSelectorItemClass))
-#define IS_E_MEETING_TIME_SELECTOR_ITEM(o) (GTK_CHECK_TYPE((o), e_meeting_time_selector_item_get_type ()))
-
-
-typedef struct _EMeetingTimeSelectorItem EMeetingTimeSelectorItem;
-typedef struct _EMeetingTimeSelectorItemClass EMeetingTimeSelectorItemClass;
-
-struct _EMeetingTimeSelectorItem
-{
- GnomeCanvasItem canvas_item;
-
- /* The parent EMeetingTimeSelector widget. */
- EMeetingTimeSelector *mts;
-
- /* This GC is used for most of the drawing. The fg/bg colors are
- changed for each bit. */
- GdkGC *main_gc;
- GdkGC *stipple_gc;
-
- /* The normal & resize cursors. */
- GdkCursor *normal_cursor;
- GdkCursor *resize_cursor;
-
- /* This remembers the last cursor set on the window. */
- GdkCursor *last_cursor_set;
-};
-
-
-struct _EMeetingTimeSelectorItemClass
-{
- GnomeCanvasItemClass parent_class;
-};
-
-GtkType e_meeting_time_selector_item_get_type (void);
-
-
-#endif /* _E_MEETING_TIME_SELECTOR_ITEM_H_ */
diff --git a/widgets/meeting-time-sel/e-meeting-time-sel-list-item.c b/widgets/meeting-time-sel/e-meeting-time-sel-list-item.c
deleted file mode 100644
index 08fc45fae4..0000000000
--- a/widgets/meeting-time-sel/e-meeting-time-sel-list-item.c
+++ /dev/null
@@ -1,397 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@gtk.org>
- *
- * Copyright 1999, Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * EMeetingTimeSelectorListItem - A GnomeCanvasItem covering the entire attendee
- * list. It just draws the grid lines between the rows and after the icon
- * column.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <time.h>
-#include <gtk/gtksignal.h>
-#include <gal/widgets/e-canvas.h>
-#include "e-meeting-time-sel-list-item.h"
-#include "e-meeting-time-sel.h"
-
-/* This is the size of our icons. */
-#define E_MEETING_TIME_SELECTOR_ICON_WIDTH 19
-#define E_MEETING_TIME_SELECTOR_ICON_HEIGHT 16
-
-#include "e-meeting-time-sel-mail.xpm"
-#include "e-meeting-time-sel-no-mail.xpm"
-
-static void e_meeting_time_selector_list_item_class_init (EMeetingTimeSelectorListItemClass *mtsl_item_class);
-static void e_meeting_time_selector_list_item_init (EMeetingTimeSelectorListItem *mtsl_item);
-static void e_meeting_time_selector_list_item_destroy (GtkObject *object);
-
-static void e_meeting_time_selector_list_item_set_arg (GtkObject *o, GtkArg *arg,
- guint arg_id);
-static void e_meeting_time_selector_list_item_realize (GnomeCanvasItem *item);
-static void e_meeting_time_selector_list_item_unrealize (GnomeCanvasItem *item);
-static void e_meeting_time_selector_list_item_update (GnomeCanvasItem *item,
- double *affine,
- ArtSVP *clip_path, int flags);
-static void e_meeting_time_selector_list_item_draw (GnomeCanvasItem *item,
- GdkDrawable *drawable,
- int x, int y,
- int width, int height);
-static double e_meeting_time_selector_list_item_point (GnomeCanvasItem *item,
- double x, double y,
- int cx, int cy,
- GnomeCanvasItem **actual_item);
-static gint e_meeting_time_selector_list_item_event (GnomeCanvasItem *item,
- GdkEvent *event);
-static gboolean e_meeting_time_selector_list_item_button_press (EMeetingTimeSelectorListItem *mtsl_item,
- GdkEvent *event);
-
-
-static GnomeCanvasItemClass *e_meeting_time_selector_list_item_parent_class;
-
-/* The arguments we take */
-enum {
- ARG_0,
- ARG_MEETING_TIME_SELECTOR
-};
-
-
-GtkType
-e_meeting_time_selector_list_item_get_type (void)
-{
- static GtkType e_meeting_time_selector_list_item_type = 0;
-
- if (!e_meeting_time_selector_list_item_type) {
- GtkTypeInfo e_meeting_time_selector_list_item_info = {
- "EMeetingTimeSelectorListItem",
- sizeof (EMeetingTimeSelectorListItem),
- sizeof (EMeetingTimeSelectorListItemClass),
- (GtkClassInitFunc) e_meeting_time_selector_list_item_class_init,
- (GtkObjectInitFunc) e_meeting_time_selector_list_item_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- e_meeting_time_selector_list_item_type = gtk_type_unique (gnome_canvas_item_get_type (), &e_meeting_time_selector_list_item_info);
- }
-
- return e_meeting_time_selector_list_item_type;
-}
-
-
-static void
-e_meeting_time_selector_list_item_class_init (EMeetingTimeSelectorListItemClass *mtsl_item_class)
-{
- GtkObjectClass *object_class;
- GnomeCanvasItemClass *item_class;
-
- e_meeting_time_selector_list_item_parent_class = gtk_type_class (gnome_canvas_item_get_type());
-
- object_class = (GtkObjectClass *) mtsl_item_class;
- item_class = (GnomeCanvasItemClass *) mtsl_item_class;
-
- gtk_object_add_arg_type ("EMeetingTimeSelectorListItem::meeting_time_selector",
- GTK_TYPE_POINTER, GTK_ARG_WRITABLE,
- ARG_MEETING_TIME_SELECTOR);
-
- object_class->destroy = e_meeting_time_selector_list_item_destroy;
- object_class->set_arg = e_meeting_time_selector_list_item_set_arg;
-
- /* GnomeCanvasItem method overrides */
- item_class->realize = e_meeting_time_selector_list_item_realize;
- item_class->unrealize = e_meeting_time_selector_list_item_unrealize;
- item_class->update = e_meeting_time_selector_list_item_update;
- item_class->draw = e_meeting_time_selector_list_item_draw;
- item_class->point = e_meeting_time_selector_list_item_point;
- item_class->event = e_meeting_time_selector_list_item_event;
-}
-
-
-static void
-e_meeting_time_selector_list_item_init (EMeetingTimeSelectorListItem *mtsl_item)
-{
- GnomeCanvasItem *item = GNOME_CANVAS_ITEM (mtsl_item);
- GdkColormap *colormap;
-
- mtsl_item->mts = NULL;
-
- colormap = gtk_widget_get_default_colormap ();
- mtsl_item->mail_icon = gdk_pixmap_colormap_create_from_xpm_d (NULL, colormap, &mtsl_item->mail_icon_mask, NULL, e_meeting_time_sel_mail_xpm);
- mtsl_item->no_mail_icon = gdk_pixmap_colormap_create_from_xpm_d (NULL, colormap, &mtsl_item->no_mail_icon_mask, NULL, e_meeting_time_sel_no_mail_xpm);
-
- item->x1 = 0;
- item->y1 = 0;
- item->x2 = 0;
- item->y2 = 0;
-}
-
-
-static void
-e_meeting_time_selector_list_item_destroy (GtkObject *object)
-{
- EMeetingTimeSelectorListItem *mtsl_item;
-
- mtsl_item = E_MEETING_TIME_SELECTOR_LIST_ITEM (object);
-
- gdk_pixmap_unref (mtsl_item->mail_icon);
- gdk_pixmap_unref (mtsl_item->no_mail_icon);
- gdk_bitmap_unref (mtsl_item->mail_icon_mask);
- gdk_bitmap_unref (mtsl_item->no_mail_icon_mask);
-
- if (GTK_OBJECT_CLASS (e_meeting_time_selector_list_item_parent_class)->destroy)
- (*GTK_OBJECT_CLASS (e_meeting_time_selector_list_item_parent_class)->destroy)(object);
-}
-
-
-static void
-e_meeting_time_selector_list_item_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- GnomeCanvasItem *item;
- EMeetingTimeSelectorListItem *mtsl_item;
-
- item = GNOME_CANVAS_ITEM (o);
- mtsl_item = E_MEETING_TIME_SELECTOR_LIST_ITEM (o);
-
- switch (arg_id){
- case ARG_MEETING_TIME_SELECTOR:
- mtsl_item->mts = GTK_VALUE_POINTER (*arg);
- break;
- }
-}
-
-
-static void
-e_meeting_time_selector_list_item_realize (GnomeCanvasItem *item)
-{
- GnomeCanvas *canvas;
- GdkWindow *window;
- EMeetingTimeSelectorListItem *mtsl_item;
-
- if (GNOME_CANVAS_ITEM_CLASS (e_meeting_time_selector_list_item_parent_class)->realize)
- (*GNOME_CANVAS_ITEM_CLASS (e_meeting_time_selector_list_item_parent_class)->realize)(item);
-
- mtsl_item = E_MEETING_TIME_SELECTOR_LIST_ITEM (item);
-
- canvas = item->canvas;
- window = GTK_WIDGET (canvas)->window;
-
- mtsl_item->main_gc = gdk_gc_new (window);
-}
-
-
-static void
-e_meeting_time_selector_list_item_unrealize (GnomeCanvasItem *item)
-{
- EMeetingTimeSelectorListItem *mtsl_item;
-
- mtsl_item = E_MEETING_TIME_SELECTOR_LIST_ITEM (item);
-
- gdk_gc_unref (mtsl_item->main_gc);
- mtsl_item->main_gc = NULL;
-
- if (GNOME_CANVAS_ITEM_CLASS (e_meeting_time_selector_list_item_parent_class)->unrealize)
- (*GNOME_CANVAS_ITEM_CLASS (e_meeting_time_selector_list_item_parent_class)->unrealize)(item);
-}
-
-
-static void
-e_meeting_time_selector_list_item_update (GnomeCanvasItem *item, double *affine, ArtSVP *clip_path, int flags)
-{
- if (GNOME_CANVAS_ITEM_CLASS (e_meeting_time_selector_list_item_parent_class)->update)
- (* GNOME_CANVAS_ITEM_CLASS (e_meeting_time_selector_list_item_parent_class)->update) (item, affine, clip_path, flags);
-
- /* The item covers the entire canvas area. */
- item->x1 = 0;
- item->y1 = 0;
- item->x2 = INT_MAX;
- item->y2 = INT_MAX;
-}
-
-
-/*
- * DRAWING ROUTINES - functions to paint the canvas item.
- */
-
-static void
-e_meeting_time_selector_list_item_draw (GnomeCanvasItem *item, GdkDrawable *drawable, int x, int y, int width, int height)
-{
- EMeetingTimeSelectorListItem *mtsl_item;
- EMeetingTimeSelector *mts;
- EMeetingTimeSelectorAttendee *attendee;
- GdkGC *gc;
- GdkFont *font;
- gint row, row_y, icon_x, icon_y;
- GdkPixmap *pixmap;
- GdkBitmap *mask;
-
- mtsl_item = E_MEETING_TIME_SELECTOR_LIST_ITEM (item);
- mts = mtsl_item->mts;
- gc = mtsl_item->main_gc;
-
- gdk_gc_set_foreground (gc, &mts->attendee_list_bg_color);
- gdk_draw_rectangle (drawable, gc, TRUE, 0, 0, width, height);
-
- gdk_gc_set_foreground (gc, &mts->grid_unused_color);
- gdk_draw_line (drawable, gc, 24 - x, 0, 24 - x, height);
-
- /* Draw the grid line across the top of the row. */
- row = y / mts->row_height;
- row_y = row * mts->row_height - y;
- while (row_y < height) {
- gdk_draw_line (drawable, gc, 0, row_y, width, row_y);
- row_y += mts->row_height;
- }
-
- row = y / mts->row_height;
- row_y = row * mts->row_height - y;
- icon_x = (E_MEETING_TIME_SELECTOR_ICON_COLUMN_WIDTH - E_MEETING_TIME_SELECTOR_ICON_WIDTH + 1) / 2 - x;
- icon_y = row_y + (mts->row_height - E_MEETING_TIME_SELECTOR_ICON_HEIGHT + 1) / 2;
- while (row < mts->attendees->len && row_y < height) {
- attendee = &g_array_index (mts->attendees,
- EMeetingTimeSelectorAttendee, row);
-
- gdk_gc_set_clip_origin (gc, icon_x, icon_y);
-
- if (attendee->send_meeting_to) {
- pixmap = mtsl_item->mail_icon;
- mask = mtsl_item->mail_icon_mask;
- } else {
- pixmap = mtsl_item->no_mail_icon;
- mask = mtsl_item->no_mail_icon_mask;
- }
-
- gdk_gc_set_clip_mask (gc, mask);
- gdk_draw_pixmap (drawable, gc, pixmap, 0, 0,
- icon_x, icon_y, 24, 24);
-
- row++;
- row_y += mts->row_height;
- icon_y += mts->row_height;
- }
- gdk_gc_set_clip_mask (gc, NULL);
-
- /* Draw 'Click here to add attendee' on the last dummy row. */
- row_y = mts->attendees->len * mts->row_height;
-
- font = GTK_WIDGET (mts)->style->font;
- gdk_gc_set_foreground (gc, &mts->grid_unused_color);
- gdk_draw_string (drawable, font, gc,
- E_MEETING_TIME_SELECTOR_ICON_COLUMN_WIDTH
- + E_MEETING_TIME_SELECTOR_TEXT_X_PAD - x,
- row_y + E_MEETING_TIME_SELECTOR_TEXT_Y_PAD
- + font->ascent + 1 - y,
- "Click here to add attendee");
-}
-
-
-/* This is supposed to return the nearest item the the point and the distance.
- Since we cover the entire canvas we just return ourself and 0 for the
- distance. This is needed so that we get button/motion events. */
-static double
-e_meeting_time_selector_list_item_point (GnomeCanvasItem *item,
- double x, double y,
- int cx, int cy,
- GnomeCanvasItem **actual_item)
-{
- *actual_item = item;
- return 0.0;
-}
-
-
-static gint
-e_meeting_time_selector_list_item_event (GnomeCanvasItem *item,
- GdkEvent *event)
-{
- EMeetingTimeSelectorListItem *mtsl_item;
-
- mtsl_item = E_MEETING_TIME_SELECTOR_LIST_ITEM (item);
-
- switch (event->type) {
- case GDK_BUTTON_PRESS:
- return e_meeting_time_selector_list_item_button_press (mtsl_item, event);
- case GDK_BUTTON_RELEASE:
- break;
- case GDK_MOTION_NOTIFY:
- break;
- default:
- break;
- }
-
- return FALSE;
-}
-
-
-static gboolean
-e_meeting_time_selector_list_item_button_press (EMeetingTimeSelectorListItem *mtsl_item,
- GdkEvent *event)
-{
- EMeetingTimeSelector *mts;
- EMeetingTimeSelectorAttendee *attendee;
- gint row;
- gboolean return_val;
-
- mts = mtsl_item->mts;
- row = event->button.y / mts->row_height;
-
- g_print ("In e_meeting_time_selector_list_item_button_press: %g,%g row:%i\n",
- event->button.x, event->button.y, row);
-
- if (event->button.x >= E_MEETING_TIME_SELECTOR_ICON_COLUMN_WIDTH) {
- if (row < mts->attendees->len) {
- attendee = &g_array_index (mts->attendees, EMeetingTimeSelectorAttendee, row);
- gtk_signal_emit_by_name (GTK_OBJECT (attendee->text_item),
- "event", event, &return_val);
- return return_val;
- } else {
- row = e_meeting_time_selector_attendee_add (mts, "",
- NULL);
-
- /* Scroll down to show the last line.?? */
-#if 0
- adjustment = GTK_LAYOUT (mts->display_main)->vadjustment;
- adjustment->value = adjustment->upper - adjustment->page_size;
- gtk_adjustment_value_changed (adjustment);
-#endif
-
- attendee = &g_array_index (mts->attendees, EMeetingTimeSelectorAttendee, row);
- e_canvas_item_grab_focus (attendee->text_item, TRUE);
- return TRUE;
- }
- } else {
- attendee = &g_array_index (mts->attendees,
- EMeetingTimeSelectorAttendee, row);
-
- attendee->send_meeting_to = !attendee->send_meeting_to;
-
- gnome_canvas_request_redraw (GNOME_CANVAS_ITEM (mtsl_item)->canvas,
- 0, row * mts->row_height,
- E_MEETING_TIME_SELECTOR_ICON_COLUMN_WIDTH,
- (row + 1) * mts->row_height);
- return TRUE;
- }
-}
-
diff --git a/widgets/meeting-time-sel/e-meeting-time-sel-list-item.h b/widgets/meeting-time-sel/e-meeting-time-sel-list-item.h
deleted file mode 100644
index 07df052c08..0000000000
--- a/widgets/meeting-time-sel/e-meeting-time-sel-list-item.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@gtk.org>
- *
- * Copyright 1999, Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * MeetingTimeSelectorListItem - A GnomeCanvasItem covering the entire attendee
- * list. It just draws the grid lines between the rows and after the icon
- * column.
- */
-
-#ifndef _E_MEETING_TIME_SELECTOR_LIST_ITEM_H_
-#define _E_MEETING_TIME_SELECTOR_LIST_ITEM_H_
-
-#include "e-meeting-time-sel.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-#define E_MEETING_TIME_SELECTOR_LIST_ITEM(obj) (GTK_CHECK_CAST((obj), e_meeting_time_selector_list_item_get_type (), EMeetingTimeSelectorListItem))
-#define E_MEETING_TIME_SELECTOR_LIST_ITEM_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), e_meeting_time_selector_list_item_get_type (), EMeetingTimeSelectorListItemClass))
-#define IS_E_MEETING_TIME_SELECTOR_LIST_ITEM(o) (GTK_CHECK_TYPE((o), e_meeting_time_selector_list_item_get_type ()))
-
-
-typedef struct _EMeetingTimeSelectorListItem EMeetingTimeSelectorListItem;
-typedef struct _EMeetingTimeSelectorListItemClass EMeetingTimeSelectorListItemClass;
-
-struct _EMeetingTimeSelectorListItem
-{
- GnomeCanvasItem canvas_item;
-
- /* The parent EMeetingTimeSelector widget. */
- EMeetingTimeSelector *mts;
-
- /* This GC is used for most of the drawing. The fg/bg colors are
- changed for each bit. */
- GdkGC *main_gc;
-
- GdkPixmap *mail_icon, *no_mail_icon;
- GdkBitmap *mail_icon_mask, *no_mail_icon_mask;
-};
-
-
-struct _EMeetingTimeSelectorListItemClass
-{
- GnomeCanvasItemClass parent_class;
-};
-
-GtkType e_meeting_time_selector_list_item_get_type (void);
-
-
-#endif /* _E_MEETING_TIME_SELECTOR_LIST_ITEM_H_ */
diff --git a/widgets/meeting-time-sel/e-meeting-time-sel-mail.xpm b/widgets/meeting-time-sel/e-meeting-time-sel-mail.xpm
deleted file mode 100644
index 5a03c7ea8a..0000000000
--- a/widgets/meeting-time-sel/e-meeting-time-sel-mail.xpm
+++ /dev/null
@@ -1,135 +0,0 @@
-/* XPM */
-static char * e_meeting_time_sel_mail_xpm[] = {
-"19 16 116 2",
-" c None",
-". c #000000",
-"+ c #7B7B78",
-"@ c #C7C7C3",
-"# c #F1F0EB",
-"$ c #BFBFBC",
-"% c #5F5E5E",
-"& c #E3E3DF",
-"* c #F3F3EF",
-"= c #F2F2EE",
-"- c #F1F1EC",
-"; c #F0EFEB",
-"> c #D2D2CD",
-", c #969592",
-"' c #616060",
-") c #B5B5B4",
-"! c #F8F8F6",
-"~ c #F7F7F5",
-"{ c #F6F6F3",
-"] c #F5F5F2",
-"^ c #F4F4F0",
-"/ c #F2F1ED",
-"( c #F1F0EC",
-"_ c #F0EFEA",
-": c #EFEEE9",
-"< c #4F4F4D",
-"[ c #BDBCB8",
-"} c #A7A6A3",
-"| c #C6C6C4",
-"1 c #7C7C7B",
-"2 c #525251",
-"3 c #DBDBD9",
-"4 c #F5F4F1",
-"5 c #F4F3F0",
-"6 c #F3F2EE",
-"7 c #999894",
-"8 c #62625F",
-"9 c #BCBCB6",
-"0 c #EBE9E3",
-"a c #838381",
-"b c #D7D6D4",
-"c c #A8A8A6",
-"d c #515150",
-"e c #7E7D7C",
-"f c #DAD9D5",
-"g c #EFEEE8",
-"h c #EEEDE7",
-"i c #4F4E4C",
-"j c #BCBBB6",
-"k c #EBE9E2",
-"l c #EAE8E1",
-"m c #F6F5F2",
-"n c #F4F3EF",
-"o c #B5B4B1",
-"p c #9B9A97",
-"q c #646361",
-"r c #92918E",
-"s c #EEEDE8",
-"t c #EDECE6",
-"u c #4E4E4C",
-"v c #797976",
-"w c #797874",
-"x c #E9E8E1",
-"y c #E8E7DF",
-"z c #B4B3AF",
-"A c #D0D0CD",
-"B c #F2F2ED",
-"C c #BFBEBA",
-"D c #BEBDB9",
-"E c #7A7A77",
-"F c #979691",
-"G c #EAE9E2",
-"H c #959590",
-"I c #787773",
-"J c #B8B7B0",
-"K c #E6E4DC",
-"L c #A9A9A6",
-"M c #626260",
-"N c #ECEBE4",
-"O c #EBEAE3",
-"P c #E9E7E0",
-"Q c #E8E6DF",
-"R c #E7E5DD",
-"S c #777671",
-"T c #93918C",
-"U c #BEBDB8",
-"V c #989793",
-"W c #ECEAE4",
-"X c #E8E6DE",
-"Y c #E6E4DB",
-"Z c #E4E3DA",
-"` c #75746F",
-" . c #91908A",
-".. c #EEECE7",
-"+. c #62615F",
-"@. c #EBEAE4",
-"#. c #E7E6DE",
-"$. c #E6E5DC",
-"%. c #E5E4DB",
-"&. c #E4E2DA",
-"*. c #CCCBC4",
-"=. c #A3A29D",
-"-. c #B6B5B2",
-";. c #BCBCB7",
-">. c #CDCCC6",
-",. c #959490",
-"'. c #ECEBE5",
-"). c #61615E",
-"!. c #E9E8E0",
-"~. c #CECDC7",
-"{. c #797875",
-"]. c #969590",
-"^. c #CFCEC8",
-"/. c #AEADA8",
-"(. c #585754",
-"_. c #7B7A76",
-" . . . . ",
-" . . . . . + @ # $ . ",
-" . . . . . % $ & * = - ; > , . ",
-". ' ) ! ~ { ] ^ * / ( _ : < [ } . ",
-". | 1 2 3 4 5 6 / # _ : 7 8 9 0 . ",
-". a b c d e f / # _ g h i j k l . ",
-" . m 4 n o p q r s t u v w x y z . ",
-" . A * B ( ; C D E u F G H I J K . ",
-" . L / ( _ : M t N O l P Q R S T . ",
-" . # _ g U V W 0 l P X R Y Z ` .. ",
-" . ; g ..+.@.G x y #.$.%.&.*.=.. . ",
-" . -.t ;.F G x y #.K >.,.. . . ",
-" . '.).G !.Q ~.H . . . ",
-" . {.].^./.. . . ",
-" . (._.. . ",
-" . . "};
diff --git a/widgets/meeting-time-sel/e-meeting-time-sel-no-mail.xpm b/widgets/meeting-time-sel/e-meeting-time-sel-no-mail.xpm
deleted file mode 100644
index 747202b3e2..0000000000
--- a/widgets/meeting-time-sel/e-meeting-time-sel-no-mail.xpm
+++ /dev/null
@@ -1,123 +0,0 @@
-/* XPM */
-static char * e_meeting_time_sel_no_mail_xpm[] = {
-"19 16 104 2",
-" c None",
-". c #000000",
-"+ c #7B7B78",
-"@ c #C7C7C3",
-"# c #F1F0EB",
-"$ c #BFBFBC",
-"% c #5F5E5E",
-"& c #E3E3DF",
-"* c #F3F3EF",
-"= c #F2F2EE",
-"- c #F1F1EC",
-"; c #F0EFEB",
-"> c #D2D2CD",
-", c #969592",
-"' c #616060",
-") c #B5B5B4",
-"! c #F8F8F6",
-"~ c #F7F7F5",
-"{ c #F6F6F3",
-"] c #F5F5F2",
-"^ c #F4F4F0",
-"/ c #F2F1ED",
-"( c #F1F0EC",
-"_ c #F0EFEA",
-": c #EFEEE9",
-"< c #4F4F4D",
-"[ c #BDBCB8",
-"} c #A7A6A3",
-"| c #C6C6C4",
-"1 c #7C7C7B",
-"2 c #525251",
-"3 c #DBDBD9",
-"4 c #F5F4F1",
-"5 c #F4F3F0",
-"6 c #F3F2EE",
-"7 c #999894",
-"8 c #62625F",
-"9 c #BCBCB6",
-"0 c #EBE9E3",
-"a c #838381",
-"b c #D7D6D4",
-"c c #A8A8A6",
-"d c #515150",
-"e c #7E7D7C",
-"f c #DAD9D5",
-"g c #D16069",
-"h c #EEEDE7",
-"i c #4F4E4C",
-"j c #BCBBB6",
-"k c #F6F5F2",
-"l c #F4F3EF",
-"m c #B5B4B1",
-"n c #9B9A97",
-"o c #646361",
-"p c #92918E",
-"q c #9F3C44",
-"r c #797976",
-"s c #B5444E",
-"t c #B4B3AF",
-"u c #D0D0CD",
-"v c #F2F2ED",
-"w c #BFBEBA",
-"x c #BEBDB9",
-"y c #BB565F",
-"z c #812F36",
-"A c #E6E4DC",
-"B c #A9A9A6",
-"C c #626260",
-"D c #EDECE6",
-"E c #ECEBE4",
-"F c #BB555D",
-"G c #90353D",
-"H c #777671",
-"I c #93918C",
-"J c #EFEEE8",
-"K c #BEBDB8",
-"L c #989793",
-"M c #ECEAE4",
-"N c #E6E4DB",
-"O c #E4E3DA",
-"P c #75746F",
-"Q c #91908A",
-"R c #EEECE7",
-"S c #62615F",
-"T c #EBEAE4",
-"U c #EAE9E2",
-"V c #BD5A62",
-"W c #E4E2DA",
-"X c #CCCBC4",
-"Y c #A3A29D",
-"Z c #B6B5B2",
-"` c #BCBCB7",
-" . c #979691",
-".. c #BC5760",
-"+. c #A13C45",
-"@. c #ECEBE5",
-"#. c #61615E",
-"$. c #C0636B",
-"%. c #A83F48",
-"&. c #797875",
-"*. c #969590",
-"=. c #CFCEC8",
-"-. c #585754",
-";. c #7B7A76",
-" . . . . ",
-" . . . . . + @ # $ . ",
-" . . . . . % $ & * = - ; > , . ",
-". ' ) ! ~ { ] ^ * / ( _ : < [ } . ",
-". | 1 2 3 4 5 6 / # _ : 7 8 9 0 . ",
-". a b c d e f / # g g h i j g g . ",
-" . k 4 l m n o p g q g r g s g t . ",
-" . u * v ( ; w x g s g g y z g A . ",
-" . B / ( _ : C D E g s F G g H I . ",
-" . # _ J K L M 0 g s s g N O P Q . ",
-" . ; J R S T U g V s s g W X Y . . ",
-" . Z D ` .U g ..G g g +.g . . ",
-" . @.#.U g $.G g . g %.g ",
-" . &.*.=.g g g . g g ",
-" . -.;.. . ",
-" . . "};
diff --git a/widgets/meeting-time-sel/e-meeting-time-sel.c b/widgets/meeting-time-sel/e-meeting-time-sel.c
deleted file mode 100644
index 6a7c7a0f26..0000000000
--- a/widgets/meeting-time-sel/e-meeting-time-sel.c
+++ /dev/null
@@ -1,3308 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@gtk.org>
- *
- * Copyright 1999, Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "e-meeting-time-sel.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <time.h>
-#include <glib.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtkalignment.h>
-#include <gtk/gtkarrow.h>
-#include <gtk/gtkbutton.h>
-#include <gtk/gtkdrawingarea.h>
-#include <gtk/gtkentry.h>
-#include <gtk/gtkhbox.h>
-#include <gtk/gtkhscrollbar.h>
-#include <gtk/gtkhseparator.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkmenu.h>
-#include <gtk/gtkradiomenuitem.h>
-#include <gtk/gtksignal.h>
-#include <gtk/gtkvbox.h>
-#include <gtk/gtkvscrollbar.h>
-#include <libgnomeui/gnome-dateedit.h>
-#include <libgnome/gnome-i18n.h>
-#include <libgnomeui/gnome-canvas-widget.h>
-
-#include <gal/widgets/e-canvas.h>
-#include <gal/widgets/e-canvas-utils.h>
-#include "e-meeting-time-sel-item.h"
-#include "e-meeting-time-sel-list-item.h"
-
-/* An array of hour strings, "0:00" .. "23:00". */
-const gchar *EMeetingTimeSelectorHours[24] = {
- "0:00", "1:00", "2:00", "3:00", "4:00", "5:00", "6:00", "7:00",
- "8:00", "9:00", "10:00", "11:00", "12:00", "13:00", "14:00", "15:00",
- "16:00", "17:00", "18:00", "19:00", "20:00", "21:00", "22:00", "23:00"
-};
-
-/* The number of days shown in the entire canvas. */
-#define E_MEETING_TIME_SELECTOR_DAYS_SHOWN 365
-
-/* This is the number of pixels between the mouse has to move before the
- scroll speed is incremented. */
-#define E_MEETING_TIME_SELECTOR_SCROLL_INCREMENT_WIDTH 10
-
-/* This is the maximum scrolling speed. */
-#define E_MEETING_TIME_SELECTOR_MAX_SCROLL_SPEED 4
-
-
-static void e_meeting_time_selector_class_init (EMeetingTimeSelectorClass * klass);
-static void e_meeting_time_selector_init (EMeetingTimeSelector * mts);
-static void e_meeting_time_selector_destroy (GtkObject *object);
-static void e_meeting_time_selector_alloc_named_color (EMeetingTimeSelector * mts,
- const char *name, GdkColor *c);
-static void e_meeting_time_selector_add_key_color (EMeetingTimeSelector * mts,
- GtkWidget *hbox,
- gchar *label_text,
- GdkColor *color);
-static gint e_meeting_time_selector_expose_key_color (GtkWidget *darea,
- GdkEventExpose *event,
- GdkColor *color);
-static gint e_meeting_time_selector_expose_title_bar (GtkWidget *darea,
- GdkEventExpose *event,
- gpointer data);
-static void e_meeting_time_selector_options_menu_detacher (GtkWidget *widget,
- GtkMenu *menu);
-static void e_meeting_time_selector_autopick_menu_detacher (GtkWidget *widget,
- GtkMenu *menu);
-static void e_meeting_time_selector_realize (GtkWidget *widget);
-static void e_meeting_time_selector_unrealize (GtkWidget *widget);
-static void e_meeting_time_selector_style_set (GtkWidget *widget,
- GtkStyle *previous_style);
-static gint e_meeting_time_selector_expose_event (GtkWidget *widget,
- GdkEventExpose *event);
-static void e_meeting_time_selector_draw (GtkWidget *widget,
- GdkRectangle *area);
-static void e_meeting_time_selector_draw_shadow (EMeetingTimeSelector *mts);
-static void e_meeting_time_selector_hadjustment_changed (GtkAdjustment *adjustment,
- EMeetingTimeSelector *mts);
-static void e_meeting_time_selector_vadjustment_changed (GtkAdjustment *adjustment,
- EMeetingTimeSelector *mts);
-
-static void e_meeting_time_selector_on_canvas_realized (GtkWidget *widget,
- EMeetingTimeSelector *mts);
-
-static gint e_meeting_time_selector_compare_period_starts (const void *arg1,
- const void *arg2);
-#if 0
-static gint e_meeting_time_selector_compare_periods (const void *arg1,
- const void *arg2);
-#endif
-static gint e_meeting_time_selector_compare_times (EMeetingTimeSelectorTime *time1,
- EMeetingTimeSelectorTime *time2);
-static void e_meeting_time_selector_on_options_button_clicked (GtkWidget *button,
- EMeetingTimeSelector *mts);
-static void e_meeting_time_selector_options_menu_position_callback (GtkMenu *menu,
- gint *x,
- gint *y,
- gpointer user_data);
-static void e_meeting_time_selector_on_zoomed_out_toggled (GtkWidget *button,
- EMeetingTimeSelector *mts);
-static void e_meeting_time_selector_on_working_hours_toggled (GtkWidget *button,
- EMeetingTimeSelector *mts);
-static void e_meeting_time_selector_on_invite_others_button_clicked (GtkWidget *button,
- EMeetingTimeSelector *mts);
-static void e_meeting_time_selector_on_update_free_busy (GtkWidget *button,
- EMeetingTimeSelector *mts);
-static void e_meeting_time_selector_on_autopick_button_clicked (GtkWidget *button,
- EMeetingTimeSelector *mts);
-static void e_meeting_time_selector_autopick_menu_position_callback (GtkMenu *menu,
- gint *x,
- gint *y,
- gpointer user_data);
-static void e_meeting_time_selector_on_autopick_option_toggled (GtkWidget *button,
- EMeetingTimeSelector *mts);
-static void e_meeting_time_selector_on_prev_button_clicked (GtkWidget *button,
- EMeetingTimeSelector *mts);
-static void e_meeting_time_selector_on_next_button_clicked (GtkWidget *button,
- EMeetingTimeSelector *mts);
-static void e_meeting_time_selector_autopick (EMeetingTimeSelector *mts,
- gboolean forward);
-static void e_meeting_time_selector_calculate_time_difference (EMeetingTimeSelectorTime *start,
- EMeetingTimeSelectorTime *end,
- gint *days,
- gint *hours,
- gint *minutes);
-static void e_meeting_time_selector_find_nearest_interval (EMeetingTimeSelector *mts,
- EMeetingTimeSelectorTime *start_time,
- EMeetingTimeSelectorTime *end_time,
- gint days, gint hours, gint mins);
-static void e_meeting_time_selector_find_nearest_interval_backward (EMeetingTimeSelector *mts,
- EMeetingTimeSelectorTime *start_time,
- EMeetingTimeSelectorTime *end_time,
- gint days, gint hours, gint mins);
-static void e_meeting_time_selector_adjust_time (EMeetingTimeSelectorTime *mtstime,
- gint days, gint hours, gint minutes);
-static EMeetingTimeSelectorPeriod* e_meeting_time_selector_find_time_clash (EMeetingTimeSelector *mts,
- EMeetingTimeSelectorAttendee *attendee,
- EMeetingTimeSelectorTime *start_time,
- EMeetingTimeSelectorTime *end_time);
-
-
-static void e_meeting_time_selector_recalc_grid (EMeetingTimeSelector *mts);
-static void e_meeting_time_selector_recalc_date_format (EMeetingTimeSelector *mts);
-static void e_meeting_time_selector_save_position (EMeetingTimeSelector *mts,
- EMeetingTimeSelectorTime *mtstime);
-static void e_meeting_time_selector_restore_position (EMeetingTimeSelector *mts,
- EMeetingTimeSelectorTime *mtstime);
-static void e_meeting_time_selector_on_start_time_changed (GtkWidget *widget,
- EMeetingTimeSelector *mts);
-static void e_meeting_time_selector_on_end_time_changed (GtkWidget *widget,
- EMeetingTimeSelector *mts);
-static void e_meeting_time_selector_update_date_popup_menus (EMeetingTimeSelector *mts);
-static void e_meeting_time_selector_on_attendees_list_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation,
- EMeetingTimeSelector *mts);
-static void e_meeting_time_selector_on_canvas_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation,
- EMeetingTimeSelector *mts);
-static void e_meeting_time_selector_update_main_canvas_scroll_region (EMeetingTimeSelector *mts);
-static void e_meeting_time_selector_update_attendees_list_scroll_region (EMeetingTimeSelector *mts);
-static gboolean e_meeting_time_selector_timeout_handler (gpointer data);
-static void e_meeting_time_selector_update_start_date_edit (EMeetingTimeSelector *mts);
-static void e_meeting_time_selector_update_end_date_edit (EMeetingTimeSelector *mts);
-static void e_meeting_time_selector_ensure_meeting_time_shown (EMeetingTimeSelector *mts);
-static void e_meeting_time_selector_update_dates_shown (EMeetingTimeSelector *mts);
-
-static void e_meeting_time_selector_update_attendees_list_positions (EMeetingTimeSelector *mts);
-static gboolean e_meeting_time_selector_on_text_item_event (GnomeCanvasItem *item,
- GdkEvent *event,
- EMeetingTimeSelector *mts);
-static gint e_meeting_time_selector_find_row_from_text_item (EMeetingTimeSelector *mts,
- GnomeCanvasItem *item);
-
-static GtkTableClass *parent_class;
-
-
-GtkType
-e_meeting_time_selector_get_type (void)
-{
- static guint e_meeting_time_selector_type = 0;
-
- if (!e_meeting_time_selector_type) {
- GtkTypeInfo e_meeting_time_selector_info =
- {
- "EMeetingTimeSelector",
- sizeof (EMeetingTimeSelector),
- sizeof (EMeetingTimeSelectorClass),
- (GtkClassInitFunc) e_meeting_time_selector_class_init,
- (GtkObjectInitFunc) e_meeting_time_selector_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- e_meeting_time_selector_type = gtk_type_unique (GTK_TYPE_TABLE,
- &e_meeting_time_selector_info);
- }
- return e_meeting_time_selector_type;
-}
-
-
-static void
-e_meeting_time_selector_class_init (EMeetingTimeSelectorClass * klass)
-{
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
-
- parent_class = gtk_type_class (gtk_table_get_type());
-
- object_class = (GtkObjectClass *) klass;
- widget_class = (GtkWidgetClass *) klass;
-
- object_class->destroy = e_meeting_time_selector_destroy;
-
- widget_class->realize = e_meeting_time_selector_realize;
- widget_class->unrealize = e_meeting_time_selector_unrealize;
- widget_class->style_set = e_meeting_time_selector_style_set;
- widget_class->expose_event = e_meeting_time_selector_expose_event;
- widget_class->draw = e_meeting_time_selector_draw;
-}
-
-
-static void
-e_meeting_time_selector_init (EMeetingTimeSelector * mts)
-{
- GtkWidget *hbox, *separator, *button, *label, *table;
- GtkWidget *alignment, *child_hbox, *arrow, *menuitem;
- GSList *group;
- GdkVisual *visual;
- GdkColormap *colormap;
- guint accel_key;
- GtkAccelGroup *menu_accel_group;
- time_t meeting_start_time;
- struct tm *meeting_start_tm;
- guchar stipple_bits[] = {
- 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
- };
-
- /* The shadow is drawn in the border so it must be >= 2 pixels. */
- gtk_container_set_border_width (GTK_CONTAINER (mts), 2);
-
- mts->accel_group = gtk_accel_group_new ();
-
- mts->attendees = g_array_new (FALSE, FALSE,
- sizeof (EMeetingTimeSelectorAttendee));
-
- mts->working_hours_only = TRUE;
- mts->day_start_hour = 9;
- mts->day_start_minute = 0;
- mts->day_end_hour = 18;
- mts->day_end_minute = 0;
- mts->zoomed_out = FALSE;
- mts->dragging_position = E_MEETING_TIME_SELECTOR_POS_NONE;
-
- /* The default meeting time is the nearest half-hour interval in the
- future, in working hours. */
- meeting_start_time = time (NULL);
- g_date_clear (&mts->meeting_start_time.date, 1);
- g_date_set_time (&mts->meeting_start_time.date, meeting_start_time);
- meeting_start_tm = localtime (&meeting_start_time);
- mts->meeting_start_time.hour = meeting_start_tm->tm_hour;
- mts->meeting_start_time.minute = meeting_start_tm->tm_min;
-
- e_meeting_time_selector_find_nearest_interval (mts, &mts->meeting_start_time,
- &mts->meeting_end_time,
- 0, 0, 30);
-
- e_meeting_time_selector_update_dates_shown (mts);
-
- mts->meeting_positions_valid = FALSE;
-
- mts->row_height = 30;
- mts->col_width = 50;
- mts->day_width = 50 * 24 + 1;
-
- mts->auto_scroll_timeout_id = 0;
-
-
- mts->attendees_title_bar_vbox = gtk_vbox_new (FALSE, 2);
- /* Add some horizontal padding for the shadow around the display. */
- gtk_table_attach (GTK_TABLE (mts),
- mts->attendees_title_bar_vbox,
- 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 2, 0);
- gtk_widget_show (mts->attendees_title_bar_vbox);
-
- mts->attendees_title_bar = gtk_drawing_area_new ();
- gtk_box_pack_end (GTK_BOX (mts->attendees_title_bar_vbox),
- mts->attendees_title_bar, FALSE, FALSE, 0);
- gtk_widget_show (mts->attendees_title_bar);
- gtk_signal_connect (GTK_OBJECT (mts->attendees_title_bar),
- "expose_event",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_expose_title_bar), mts);
-
- mts->attendees_list = e_canvas_new ();
- /* Add some horizontal padding for the shadow around the display. */
- gtk_table_attach (GTK_TABLE (mts), mts->attendees_list,
- 0, 1, 1, 2,
- GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 2, 0);
- gtk_widget_show (mts->attendees_list);
- gtk_signal_connect (GTK_OBJECT (mts->attendees_list), "realize",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_on_canvas_realized), mts);
- gtk_signal_connect (GTK_OBJECT (mts->attendees_list), "size_allocate",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_on_attendees_list_size_allocate), mts);
-
- /* Create the item in the list canvas. */
- gnome_canvas_item_new (GNOME_CANVAS_GROUP (GNOME_CANVAS (mts->attendees_list)->root),
- e_meeting_time_selector_list_item_get_type (),
- "EMeetingTimeSelectorListItem::meeting_time_selector", mts,
- NULL);
-
- mts->display_top = gnome_canvas_new ();
- gnome_canvas_set_scroll_region (GNOME_CANVAS (mts->display_top),
- 0, 0,
- mts->day_width * E_MEETING_TIME_SELECTOR_DAYS_SHOWN,
- mts->row_height * 3);
- /* Add some horizontal padding for the shadow around the display. */
- gtk_table_attach (GTK_TABLE (mts), mts->display_top,
- 1, 4, 0, 1, GTK_EXPAND | GTK_FILL, 0, 2, 0);
- gtk_widget_show (mts->display_top);
- gtk_signal_connect (GTK_OBJECT (mts->display_top), "realize",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_on_canvas_realized), mts);
-
- mts->display_main = gnome_canvas_new ();
- e_meeting_time_selector_update_main_canvas_scroll_region (mts);
- /* Add some horizontal padding for the shadow around the display. */
- gtk_table_attach (GTK_TABLE (mts), mts->display_main,
- 1, 4, 1, 2,
- GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 2, 0);
- gtk_widget_show (mts->display_main);
- gtk_signal_connect (GTK_OBJECT (mts->display_main), "realize",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_on_canvas_realized), mts);
- gtk_signal_connect (GTK_OBJECT (mts->display_main), "size_allocate",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_on_canvas_size_allocate), mts);
-
- mts->hscrollbar = gtk_hscrollbar_new (GTK_LAYOUT (mts->display_main)->hadjustment);
- gtk_table_attach (GTK_TABLE (mts), mts->hscrollbar,
- 1, 4, 2, 3, GTK_EXPAND | GTK_FILL, 0, 0, 0);
- gtk_widget_show (mts->hscrollbar);
-
- mts->vscrollbar = gtk_vscrollbar_new (GTK_LAYOUT (mts->display_main)->vadjustment);
- gtk_table_attach (GTK_TABLE (mts), mts->vscrollbar,
- 4, 5, 1, 2, 0, GTK_EXPAND | GTK_FILL, 0, 0);
- gtk_widget_show (mts->vscrollbar);
-
- /* Create the item in the top canvas. */
- gnome_canvas_item_new (GNOME_CANVAS_GROUP (GNOME_CANVAS (mts->display_top)->root),
- e_meeting_time_selector_item_get_type (),
- "EMeetingTimeSelectorItem::meeting_time_selector", mts,
- NULL);
-
- /* Create the item in the main canvas. */
- gnome_canvas_item_new (GNOME_CANVAS_GROUP (GNOME_CANVAS (mts->display_main)->root),
- e_meeting_time_selector_item_get_type (),
- "EMeetingTimeSelectorItem::meeting_time_selector", mts,
- NULL);
-
- /* Create the hbox containing the color key. */
- hbox = gtk_hbox_new (FALSE, 2);
- gtk_table_attach (GTK_TABLE (mts), hbox,
- 1, 4, 3, 4, GTK_FILL, 0, 0, 8);
- gtk_widget_show (hbox);
-
- e_meeting_time_selector_add_key_color (mts, hbox, _("Tentative"), &mts->busy_colors[E_MEETING_TIME_SELECTOR_BUSY_TENTATIVE]);
- e_meeting_time_selector_add_key_color (mts, hbox, _("Busy"), &mts->busy_colors[E_MEETING_TIME_SELECTOR_BUSY_BUSY]);
- e_meeting_time_selector_add_key_color (mts, hbox, _("Out of Office"), &mts->busy_colors[E_MEETING_TIME_SELECTOR_BUSY_OUT_OF_OFFICE]);
- e_meeting_time_selector_add_key_color (mts, hbox, _("No Information"),
- NULL);
-
- separator = gtk_hseparator_new ();
- gtk_table_attach (GTK_TABLE (mts), separator,
- 0, 5, 4, 5, GTK_FILL, 0, 0, 0);
- gtk_widget_show (separator);
-
- /* Create the Invite Others & Options buttons on the left. */
- hbox = gtk_hbox_new (FALSE, 4);
- gtk_table_attach (GTK_TABLE (mts), hbox,
- 0, 1, 3, 4, GTK_FILL, 0, 0, 0);
- gtk_widget_show (hbox);
-
- button = gtk_button_new_with_label ("");
- accel_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (button)->child),
- _("_Invite Others..."));
- gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
- gtk_widget_show (button);
- gtk_widget_add_accelerator (button, "clicked", mts->accel_group,
- accel_key, GDK_MOD1_MASK, 0);
- gtk_signal_connect (GTK_OBJECT (button), "clicked",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_on_invite_others_button_clicked), mts);
-
- mts->options_button = gtk_button_new ();
- gtk_box_pack_start (GTK_BOX (hbox), mts->options_button, TRUE, TRUE, 0);
- gtk_widget_show (mts->options_button);
-
- gtk_signal_connect (GTK_OBJECT (mts->options_button), "clicked",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_on_options_button_clicked), mts);
-
- child_hbox = gtk_hbox_new (FALSE, 2);
- gtk_container_add (GTK_CONTAINER (mts->options_button), child_hbox);
- gtk_widget_show (child_hbox);
-
- label = gtk_label_new ("");
- accel_key = gtk_label_parse_uline (GTK_LABEL (label), _("_Options"));
- gtk_box_pack_start (GTK_BOX (child_hbox), label, TRUE, TRUE, 0);
- gtk_widget_show (label);
- gtk_widget_add_accelerator (mts->options_button, "clicked", mts->accel_group,
- accel_key, GDK_MOD1_MASK, 0);
-
- arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_OUT);
- gtk_box_pack_start (GTK_BOX (child_hbox), arrow, FALSE, FALSE, 2);
- gtk_widget_show (arrow);
-
- /* Create the Options menu. */
- mts->options_menu = gtk_menu_new ();
- gtk_menu_attach_to_widget (GTK_MENU (mts->options_menu), mts->options_button,
- e_meeting_time_selector_options_menu_detacher);
- menu_accel_group = gtk_menu_ensure_uline_accel_group (GTK_MENU (mts->options_menu));
-
- menuitem = gtk_check_menu_item_new_with_label ("");
- accel_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (menuitem)->child), _("Show _Only Working Hours"));
- gtk_menu_append (GTK_MENU (mts->options_menu), menuitem);
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem),
- mts->working_hours_only);
- gtk_widget_add_accelerator (menuitem, "activate", menu_accel_group,
- accel_key, 0, 0);
- gtk_widget_add_accelerator (menuitem, "activate", menu_accel_group,
- accel_key, GDK_MOD1_MASK, 0);
- gtk_signal_connect (GTK_OBJECT (menuitem), "toggled",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_on_working_hours_toggled), mts);
- gtk_widget_show (menuitem);
-
- menuitem = gtk_check_menu_item_new_with_label ("");
- accel_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (menuitem)->child), _("Show _Zoomed Out"));
- gtk_menu_append (GTK_MENU (mts->options_menu), menuitem);
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem),
- mts->zoomed_out);
- gtk_widget_add_accelerator (menuitem, "activate", menu_accel_group,
- accel_key, 0, 0);
- gtk_widget_add_accelerator (menuitem, "activate", menu_accel_group,
- accel_key, GDK_MOD1_MASK, 0);
- gtk_signal_connect (GTK_OBJECT (menuitem), "toggled",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_on_zoomed_out_toggled), mts);
- gtk_widget_show (menuitem);
-
- menuitem = gtk_menu_item_new ();
- gtk_menu_append (GTK_MENU (mts->options_menu), menuitem);
- gtk_widget_set_sensitive (menuitem, FALSE);
- gtk_widget_show (menuitem);
-
- menuitem = gtk_menu_item_new_with_label ("");
- accel_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (menuitem)->child), _("_Update Free/Busy"));
- gtk_menu_append (GTK_MENU (mts->options_menu), menuitem);
- gtk_widget_add_accelerator (menuitem, "activate", menu_accel_group,
- accel_key, 0, 0);
- gtk_widget_add_accelerator (menuitem, "activate", menu_accel_group,
- accel_key, GDK_MOD1_MASK, 0);
- gtk_signal_connect (GTK_OBJECT (menuitem), "activate",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_on_update_free_busy), mts);
- gtk_widget_show (menuitem);
-
- /* Create the 3 AutoPick buttons on the left. */
- hbox = gtk_hbox_new (FALSE, 0);
- gtk_table_attach (GTK_TABLE (mts), hbox,
- 0, 1, 5, 6, GTK_FILL, 0, 0, 0);
- gtk_widget_show (hbox);
-
- button = gtk_button_new_with_label ("");
- accel_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (button)->child),
- _("_<<"));
- gtk_widget_add_accelerator (button, "clicked", mts->accel_group,
- accel_key, GDK_MOD1_MASK | GDK_SHIFT_MASK, 0);
- gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
- gtk_widget_show (button);
- gtk_signal_connect (GTK_OBJECT (button), "clicked",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_on_prev_button_clicked), mts);
-
- mts->autopick_button = gtk_button_new ();
- gtk_box_pack_start (GTK_BOX (hbox), mts->autopick_button, TRUE, TRUE, 0);
- gtk_widget_show (mts->autopick_button);
-
- child_hbox = gtk_hbox_new (FALSE, 2);
- gtk_container_add (GTK_CONTAINER (mts->autopick_button), child_hbox);
- gtk_widget_show (child_hbox);
-
- label = gtk_label_new ("");
- accel_key = gtk_label_parse_uline (GTK_LABEL (label), _("_Autopick"));
- gtk_box_pack_start (GTK_BOX (child_hbox), label, TRUE, TRUE, 0);
- gtk_widget_show (label);
- gtk_widget_add_accelerator (mts->autopick_button, "clicked", mts->accel_group,
- accel_key, GDK_MOD1_MASK, 0);
- gtk_signal_connect (GTK_OBJECT (mts->autopick_button), "clicked",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_on_autopick_button_clicked), mts);
-
- arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_OUT);
- gtk_box_pack_start (GTK_BOX (child_hbox), arrow, FALSE, FALSE, 2);
- gtk_widget_show (arrow);
-
- button = gtk_button_new_with_label ("");
- accel_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (button)->child),
- _(">_>"));
- gtk_widget_add_accelerator (button, "clicked", mts->accel_group,
- accel_key, GDK_MOD1_MASK | GDK_SHIFT_MASK, 0);
- gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
- gtk_widget_show (button);
- gtk_signal_connect (GTK_OBJECT (button), "clicked",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_on_next_button_clicked), mts);
-
- /* Create the Autopick menu. */
- mts->autopick_menu = gtk_menu_new ();
- gtk_menu_attach_to_widget (GTK_MENU (mts->autopick_menu), mts->autopick_button,
- e_meeting_time_selector_autopick_menu_detacher);
- menu_accel_group = gtk_menu_ensure_uline_accel_group (GTK_MENU (mts->autopick_menu));
-
- menuitem = gtk_radio_menu_item_new_with_label (NULL, "");
- mts->autopick_all_item = menuitem;
- group = gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (menuitem));
- accel_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (menuitem)->child), _("_All People and Resources"));
- gtk_menu_append (GTK_MENU (mts->autopick_menu), menuitem);
- gtk_widget_add_accelerator (menuitem, "activate", menu_accel_group,
- accel_key, 0, 0);
- gtk_widget_add_accelerator (menuitem, "activate", menu_accel_group,
- accel_key, GDK_MOD1_MASK, 0);
- gtk_signal_connect (GTK_OBJECT (menuitem), "toggled",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_on_autopick_option_toggled), mts);
- gtk_widget_show (menuitem);
-
- menuitem = gtk_radio_menu_item_new_with_label (group, "");
- mts->autopick_all_people_one_resource_item = menuitem;
- group = gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (menuitem));
- accel_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (menuitem)->child), _("All _People and One Resource"));
- gtk_menu_append (GTK_MENU (mts->autopick_menu), menuitem);
- gtk_widget_add_accelerator (menuitem, "activate", menu_accel_group,
- accel_key, 0, 0);
- gtk_widget_add_accelerator (menuitem, "activate", menu_accel_group,
- accel_key, GDK_MOD1_MASK, 0);
- gtk_signal_connect (GTK_OBJECT (menuitem), "toggled",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_on_autopick_option_toggled), mts);
- gtk_widget_show (menuitem);
-
- menuitem = gtk_radio_menu_item_new_with_label (group, "");
- mts->autopick_required_people_item = menuitem;
- group = gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (menuitem));
- accel_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (menuitem)->child), _("_Required People"));
- gtk_menu_append (GTK_MENU (mts->autopick_menu), menuitem);
- gtk_widget_add_accelerator (menuitem, "activate", menu_accel_group,
- accel_key, 0, 0);
- gtk_widget_add_accelerator (menuitem, "activate", menu_accel_group,
- accel_key, GDK_MOD1_MASK, 0);
- gtk_signal_connect (GTK_OBJECT (menuitem), "activate",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_on_autopick_option_toggled), mts);
- gtk_widget_show (menuitem);
-
- menuitem = gtk_radio_menu_item_new_with_label (group, "");
- mts->autopick_required_people_one_resource_item = menuitem;
- group = gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (menuitem));
- accel_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (menuitem)->child), _("Required People and _One Resource"));
- gtk_menu_append (GTK_MENU (mts->autopick_menu), menuitem);
- gtk_widget_add_accelerator (menuitem, "activate", menu_accel_group,
- accel_key, 0, 0);
- gtk_widget_add_accelerator (menuitem, "activate", menu_accel_group,
- accel_key, GDK_MOD1_MASK, 0);
- gtk_signal_connect (GTK_OBJECT (menuitem), "activate",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_on_autopick_option_toggled), mts);
- gtk_widget_show (menuitem);
-
- /* Create the date entry fields on the right. */
- alignment = gtk_alignment_new (0.5, 0.5, 0, 0);
- gtk_table_attach (GTK_TABLE (mts), alignment,
- 1, 4, 5, 6, GTK_FILL, 0, 0, 0);
- gtk_widget_show (alignment);
-
- table = gtk_table_new (2, 2, FALSE);
- gtk_table_set_row_spacings (GTK_TABLE (table), 4);
- gtk_container_add (GTK_CONTAINER (alignment), table);
- gtk_widget_show (table);
-
- label = gtk_label_new ("");
- accel_key = gtk_label_parse_uline (GTK_LABEL (label),
- _("Meeting _start time:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach (GTK_TABLE (table), label,
- 0, 1, 0, 1, GTK_FILL, 0, 4, 0);
- gtk_widget_show (label);
-
- mts->start_date_edit = gnome_date_edit_new (0, TRUE, TRUE);
- /* I don't like the 'Calendar' label. */
- gtk_widget_hide (GNOME_DATE_EDIT (mts->start_date_edit)->cal_label);
- gtk_table_attach (GTK_TABLE (table), mts->start_date_edit,
- 1, 2, 0, 1, GTK_FILL, 0, 0, 0);
- gtk_widget_show (mts->start_date_edit);
- gtk_signal_connect (GTK_OBJECT (mts->start_date_edit), "date_changed",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_on_start_time_changed), mts);
- gtk_signal_connect (GTK_OBJECT (mts->start_date_edit), "time_changed",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_on_start_time_changed), mts);
- gtk_signal_connect (GTK_OBJECT (GNOME_DATE_EDIT (mts->start_date_edit)->date_entry), "activate", GTK_SIGNAL_FUNC (e_meeting_time_selector_on_start_time_changed), mts);
- gtk_signal_connect (GTK_OBJECT (GNOME_DATE_EDIT (mts->start_date_edit)->time_entry), "activate", GTK_SIGNAL_FUNC (e_meeting_time_selector_on_start_time_changed), mts);
- gtk_widget_add_accelerator (GNOME_DATE_EDIT (mts->start_date_edit)->date_entry,
- "grab_focus", mts->accel_group,
- accel_key, GDK_MOD1_MASK, 0);
-
- label = gtk_label_new ("");
- accel_key = gtk_label_parse_uline (GTK_LABEL (label),
- _("Meeting _end time:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach (GTK_TABLE (table), label,
- 0, 1, 1, 2, GTK_FILL, 0, 4, 0);
- gtk_widget_show (label);
-
- mts->end_date_edit = gnome_date_edit_new (0, TRUE, TRUE);
- gtk_widget_hide (GNOME_DATE_EDIT (mts->end_date_edit)->cal_label);
- gtk_table_attach (GTK_TABLE (table), mts->end_date_edit,
- 1, 2, 1, 2, GTK_FILL, 0, 0, 0);
- gtk_widget_show (mts->end_date_edit);
- gtk_signal_connect (GTK_OBJECT (mts->end_date_edit), "date_changed",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_on_end_time_changed), mts);
- gtk_signal_connect (GTK_OBJECT (mts->end_date_edit), "time_changed",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_on_end_time_changed), mts);
- gtk_signal_connect (GTK_OBJECT (GNOME_DATE_EDIT (mts->end_date_edit)->date_entry), "activate", GTK_SIGNAL_FUNC (e_meeting_time_selector_on_end_time_changed), mts);
- gtk_signal_connect (GTK_OBJECT (GNOME_DATE_EDIT (mts->end_date_edit)->time_entry), "activate", GTK_SIGNAL_FUNC (e_meeting_time_selector_on_end_time_changed), mts);
- gtk_widget_add_accelerator (GNOME_DATE_EDIT (mts->end_date_edit)->date_entry,
- "grab_focus", mts->accel_group,
- accel_key, GDK_MOD1_MASK, 0);
-
- gtk_table_set_col_spacing (GTK_TABLE (mts), 0, 4);
- gtk_table_set_row_spacing (GTK_TABLE (mts), 4, 12);
-
- /* Allocate the colors. */
- visual = gtk_widget_get_visual (GTK_WIDGET (mts));
- colormap = gtk_widget_get_colormap (GTK_WIDGET (mts));
- mts->color_context = gdk_color_context_new (visual, colormap);
- e_meeting_time_selector_alloc_named_color (mts, "gray75", &mts->bg_color);
- e_meeting_time_selector_alloc_named_color (mts, "gray50", &mts->all_attendees_bg_color);
- gdk_color_black (colormap, &mts->grid_color);
- gdk_color_white (colormap, &mts->grid_shadow_color);
- e_meeting_time_selector_alloc_named_color (mts, "gray50", &mts->grid_unused_color);
- gdk_color_white (colormap, &mts->meeting_time_bg_color);
- gdk_color_white (colormap, &mts->stipple_bg_color);
- gdk_color_white (colormap, &mts->attendee_list_bg_color);
-
- e_meeting_time_selector_alloc_named_color (mts, "LightSkyBlue2", &mts->busy_colors[E_MEETING_TIME_SELECTOR_BUSY_TENTATIVE]);
- e_meeting_time_selector_alloc_named_color (mts, "blue", &mts->busy_colors[E_MEETING_TIME_SELECTOR_BUSY_BUSY]);
- e_meeting_time_selector_alloc_named_color (mts, "HotPink3", &mts->busy_colors[E_MEETING_TIME_SELECTOR_BUSY_OUT_OF_OFFICE]);
-
- /* Create the stipple, for attendees with no data. */
- mts->stipple = gdk_bitmap_create_from_data (NULL, (gchar*)stipple_bits,
- 8, 8);
-
- /* Connect handlers to the adjustments in the main canvas, so we can
- scroll the other 2 canvases. */
- gtk_signal_connect (GTK_OBJECT (GTK_LAYOUT (mts->display_main)->hadjustment), "value_changed", GTK_SIGNAL_FUNC (e_meeting_time_selector_hadjustment_changed), mts);
- gtk_signal_connect (GTK_OBJECT (GTK_LAYOUT (mts->display_main)->vadjustment), "value_changed", GTK_SIGNAL_FUNC (e_meeting_time_selector_vadjustment_changed), mts);
- gtk_signal_connect (GTK_OBJECT (GTK_LAYOUT (mts->display_main)->vadjustment), "changed", GTK_SIGNAL_FUNC (e_meeting_time_selector_vadjustment_changed), mts);
-
- e_meeting_time_selector_recalc_grid (mts);
- e_meeting_time_selector_ensure_meeting_time_shown (mts);
- e_meeting_time_selector_update_start_date_edit (mts);
- e_meeting_time_selector_update_end_date_edit (mts);
- e_meeting_time_selector_update_date_popup_menus (mts);
-}
-
-
-/* This adds a color to the color key beneath the main display. If color is
- NULL, it displays the No Info stipple instead. */
-static void
-e_meeting_time_selector_add_key_color (EMeetingTimeSelector * mts,
- GtkWidget *hbox,
- gchar *label_text, GdkColor *color)
-{
- GtkWidget *child_hbox, *darea, *label;
-
- child_hbox = gtk_hbox_new (FALSE, 4);
- gtk_box_pack_start (GTK_BOX (hbox), child_hbox, TRUE, TRUE, 0);
- gtk_widget_show (child_hbox);
-
- darea = gtk_drawing_area_new ();
- gtk_box_pack_start (GTK_BOX (child_hbox), darea, FALSE, FALSE, 0);
- gtk_object_set_user_data (GTK_OBJECT (darea), mts);
- gtk_widget_set_usize (darea, 14, 14);
- gtk_widget_show (darea);
-
- label = gtk_label_new (label_text);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_box_pack_start (GTK_BOX (child_hbox), label, TRUE, TRUE, 0);
- gtk_widget_show (label);
-
- gtk_signal_connect (GTK_OBJECT (darea), "expose_event",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_expose_key_color),
- color);
-}
-
-
-static gint
-e_meeting_time_selector_expose_title_bar (GtkWidget *widget,
- GdkEventExpose *event,
- gpointer data)
-{
- EMeetingTimeSelector * mts;
- GdkFont *font;
-
- mts = E_MEETING_TIME_SELECTOR (data);
-
- gtk_draw_shadow (widget->style, widget->window, GTK_STATE_NORMAL,
- GTK_SHADOW_OUT, 0, 0,
- E_MEETING_TIME_SELECTOR_ICON_COLUMN_WIDTH + 1,
- widget->allocation.height);
- gtk_draw_shadow (widget->style, widget->window, GTK_STATE_NORMAL,
- GTK_SHADOW_OUT,
- E_MEETING_TIME_SELECTOR_ICON_COLUMN_WIDTH + 1, 0,
- widget->allocation.width - E_MEETING_TIME_SELECTOR_ICON_COLUMN_WIDTH - 1,
- widget->allocation.height);
-
- font = widget->style->font;
- gdk_draw_string (widget->window, font,
- widget->style->fg_gc[GTK_STATE_NORMAL],
- E_MEETING_TIME_SELECTOR_ICON_COLUMN_WIDTH + 4,
- 4 + font->ascent, _("All Attendees"));
-
- return FALSE;
-}
-
-
-static gint
-e_meeting_time_selector_expose_key_color (GtkWidget *darea,
- GdkEventExpose *event,
- GdkColor *color)
-{
- EMeetingTimeSelector * mts;
- GdkGC *gc;
- gint width, height;
-
- mts = gtk_object_get_user_data (GTK_OBJECT (darea));
- gc = mts->color_key_gc;
- width = darea->allocation.width;
- height = darea->allocation.height;
-
- gtk_draw_shadow (darea->style, darea->window, GTK_STATE_NORMAL,
- GTK_SHADOW_IN, 0, 0, width, height);
-
- if (color) {
- gdk_gc_set_foreground (gc, color);
- gdk_draw_rectangle (darea->window, gc, TRUE, 1, 1,
- width - 2, height - 2);
- } else {
- gdk_gc_set_foreground (gc, &mts->grid_color);
- gdk_gc_set_background (gc, &mts->stipple_bg_color);
- gdk_gc_set_stipple (gc, mts->stipple);
- gdk_gc_set_fill (gc, GDK_OPAQUE_STIPPLED);
- gdk_draw_rectangle (darea->window, gc, TRUE, 1, 1,
- width - 2, height - 2);
- gdk_gc_set_fill (gc, GDK_SOLID);
- }
-
- return TRUE;
-}
-
-
-static void
-e_meeting_time_selector_alloc_named_color (EMeetingTimeSelector * mts,
- const char *name, GdkColor *c)
-{
- int failed;
-
- g_return_if_fail (name != NULL);
- g_return_if_fail (c != NULL);
-
- gdk_color_parse (name, c);
- c->pixel = 0;
- c->pixel = gdk_color_context_get_pixel (mts->color_context,
- c->red, c->green, c->blue,
- &failed);
- if (failed)
- g_warning ("Failed to allocate color: %s\n", name);
-}
-
-
-static void
-e_meeting_time_selector_options_menu_detacher (GtkWidget *widget,
- GtkMenu *menu)
-{
- EMeetingTimeSelector *mts;
-
- g_return_if_fail (widget != NULL);
- g_return_if_fail (IS_E_MEETING_TIME_SELECTOR (widget));
-
- mts = E_MEETING_TIME_SELECTOR (widget);
- g_return_if_fail (mts->options_menu == (GtkWidget*) menu);
-
- mts->options_menu = NULL;
-}
-
-
-static void
-e_meeting_time_selector_autopick_menu_detacher (GtkWidget *widget,
- GtkMenu *menu)
-{
- EMeetingTimeSelector *mts;
-
- g_return_if_fail (widget != NULL);
- g_return_if_fail (IS_E_MEETING_TIME_SELECTOR (widget));
-
- mts = E_MEETING_TIME_SELECTOR (widget);
- g_return_if_fail (mts->autopick_menu == (GtkWidget*) menu);
-
- mts->autopick_menu = NULL;
-}
-
-
-GtkWidget *
-e_meeting_time_selector_new (void)
-{
- GtkWidget *mts;
-
- mts = GTK_WIDGET (gtk_type_new (e_meeting_time_selector_get_type ()));
-
- return mts;
-}
-
-
-static void
-e_meeting_time_selector_destroy (GtkObject *object)
-{
- EMeetingTimeSelector *mts;
- EMeetingTimeSelectorAttendee *attendee;
- gint row;
-
- mts = E_MEETING_TIME_SELECTOR (object);
-
- e_meeting_time_selector_remove_timeout (mts);
-
- gdk_color_context_free (mts->color_context);
- gdk_bitmap_unref (mts->stipple);
-
- for (row = 0; row < mts->attendees->len; row++) {
- attendee = &g_array_index (mts->attendees,
- EMeetingTimeSelectorAttendee, row);
- g_free (attendee->name);
- g_array_free (attendee->busy_periods, TRUE);
- }
-
- g_array_free (mts->attendees, TRUE);
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (*GTK_OBJECT_CLASS (parent_class)->destroy)(object);
-}
-
-
-static void
-e_meeting_time_selector_realize (GtkWidget *widget)
-{
- EMeetingTimeSelector *mts;
-
- if (GTK_WIDGET_CLASS (parent_class)->realize)
- (*GTK_WIDGET_CLASS (parent_class)->realize)(widget);
-
- mts = E_MEETING_TIME_SELECTOR (widget);
-
- mts->color_key_gc = gdk_gc_new (widget->window);
-}
-
-
-static void
-e_meeting_time_selector_unrealize (GtkWidget *widget)
-{
- EMeetingTimeSelector *mts;
-
- mts = E_MEETING_TIME_SELECTOR (widget);
-
- gdk_gc_unref (mts->color_key_gc);
- mts->color_key_gc = NULL;
-
- if (GTK_WIDGET_CLASS (parent_class)->unrealize)
- (*GTK_WIDGET_CLASS (parent_class)->unrealize)(widget);
-}
-
-
-static void
-e_meeting_time_selector_style_set (GtkWidget *widget,
- GtkStyle *previous_style)
-{
- EMeetingTimeSelector *mts;
- EMeetingTimeSelectorTime saved_time;
- GdkFont *font;
- gint hour, max_hour_width;
-
- if (GTK_WIDGET_CLASS (parent_class)->style_set)
- (*GTK_WIDGET_CLASS (parent_class)->style_set)(widget, previous_style);
-
- mts = E_MEETING_TIME_SELECTOR (widget);
- font = widget->style->font;
-
- /* Calculate the widths of the hour strings in the style's font. */
- max_hour_width = 0;
- for (hour = 0; hour < 24; hour++) {
- mts->hour_widths[hour] = gdk_string_width (font, EMeetingTimeSelectorHours[hour]);
- max_hour_width = MAX (max_hour_width, mts->hour_widths[hour]);
- }
-
- mts->row_height = font->ascent + font->descent
- + E_MEETING_TIME_SELECTOR_TEXT_Y_PAD * 2 + 1;
- mts->col_width = max_hour_width + 4;
-
- e_meeting_time_selector_save_position (mts, &saved_time);
- e_meeting_time_selector_recalc_grid (mts);
- e_meeting_time_selector_restore_position (mts, &saved_time);
-
- gtk_widget_set_usize (mts->display_top, -1, mts->row_height * 3);
- gtk_widget_set_usize (mts->attendees_title_bar, -1, mts->row_height);
-
- GTK_LAYOUT (mts->display_main)->hadjustment->step_increment = mts->col_width;
- GTK_LAYOUT (mts->display_main)->vadjustment->step_increment = mts->row_height;
-}
-
-
-/* This draws a shadow around the top display and main display. */
-static gint
-e_meeting_time_selector_expose_event (GtkWidget *widget,
- GdkEventExpose *event)
-{
- EMeetingTimeSelector *mts;
-
- mts = E_MEETING_TIME_SELECTOR (widget);
-
- e_meeting_time_selector_draw_shadow (mts);
-
- if (GTK_WIDGET_CLASS (parent_class)->expose_event)
- (*GTK_WIDGET_CLASS (parent_class)->expose_event)(widget, event);
-
- return FALSE;
-}
-
-
-static void
-e_meeting_time_selector_draw (GtkWidget *widget,
- GdkRectangle *area)
-{
- EMeetingTimeSelector *mts;
-
- mts = E_MEETING_TIME_SELECTOR (widget);
-
- e_meeting_time_selector_draw_shadow (mts);
-
- if (GTK_WIDGET_CLASS (parent_class)->draw)
- (*GTK_WIDGET_CLASS (parent_class)->draw)(widget, area);
-}
-
-
-static void
-e_meeting_time_selector_draw_shadow (EMeetingTimeSelector *mts)
-{
- GtkWidget *widget;
- gint x, y, w, h;
-
- widget = GTK_WIDGET (mts);
-
- /* Draw the shadow around the attendees title bar and list. */
- x = mts->attendees_title_bar->allocation.x - 2;
- y = mts->attendees_title_bar->allocation.y - 2;
- w = mts->attendees_title_bar->allocation.width + 4;
- h = mts->attendees_title_bar->allocation.height + mts->attendees_list->allocation.height + 4;
-
- gtk_draw_shadow (widget->style, widget->window, GTK_STATE_NORMAL,
- GTK_SHADOW_IN, x, y, w, h);
-
- /* Draw the shadow around the graphical displays. */
- x = mts->display_top->allocation.x - 2;
- y = mts->display_top->allocation.y - 2;
- w = mts->display_top->allocation.width + 4;
- h = mts->display_top->allocation.height + mts->display_main->allocation.height + 4;
-
- gtk_draw_shadow (widget->style, widget->window, GTK_STATE_NORMAL,
- GTK_SHADOW_IN, x, y, w, h);
-}
-
-
-/* When the main canvas scrolls, we scroll the other canvases. */
-static void
-e_meeting_time_selector_hadjustment_changed (GtkAdjustment *adjustment,
- EMeetingTimeSelector *mts)
-{
- GtkAdjustment *adj;
-
- adj = GTK_LAYOUT (mts->display_top)->hadjustment;
- if (adj->value != adjustment->value) {
- adj->value = adjustment->value;
- gtk_adjustment_value_changed (adj);
- }
-}
-
-
-static void
-e_meeting_time_selector_vadjustment_changed (GtkAdjustment *adjustment,
- EMeetingTimeSelector *mts)
-{
- GtkAdjustment *adj;
-
- adj = GTK_LAYOUT (mts->attendees_list)->vadjustment;
- if (adj->value != adjustment->value) {
- adj->value = adjustment->value;
- gtk_adjustment_value_changed (adj);
- }
-}
-
-
-void
-e_meeting_time_selector_get_meeting_time (EMeetingTimeSelector *mts,
- gint *start_year,
- gint *start_month,
- gint *start_day,
- gint *start_hour,
- gint *start_minute,
- gint *end_year,
- gint *end_month,
- gint *end_day,
- gint *end_hour,
- gint *end_minute)
-{
- *start_year = g_date_year (&mts->meeting_start_time.date);
- *start_month = g_date_month (&mts->meeting_start_time.date);
- *start_day = g_date_day (&mts->meeting_start_time.date);
- *start_hour = mts->meeting_start_time.hour;
- *start_minute = mts->meeting_start_time.minute;
-
- *end_year = g_date_year (&mts->meeting_end_time.date);
- *end_month = g_date_month (&mts->meeting_end_time.date);
- *end_day = g_date_day (&mts->meeting_end_time.date);
- *end_hour = mts->meeting_end_time.hour;
- *end_minute = mts->meeting_end_time.minute;
-}
-
-
-gboolean
-e_meeting_time_selector_set_meeting_time (EMeetingTimeSelector *mts,
- gint start_year,
- gint start_month,
- gint start_day,
- gint start_hour,
- gint start_minute,
- gint end_year,
- gint end_month,
- gint end_day,
- gint end_hour,
- gint end_minute)
-{
- g_return_val_if_fail (IS_E_MEETING_TIME_SELECTOR (mts), FALSE);
-
- /* Check the dates are valid. */
- if (!g_date_valid_dmy (start_day, start_month, start_year)
- || !g_date_valid_dmy (end_day, end_month, end_year)
- || start_hour < 0 || start_hour > 23
- || end_hour < 0 || end_hour > 23
- || start_minute < 0 || start_minute > 59
- || end_minute < 0 || end_minute > 59)
- return FALSE;
-
- g_date_set_dmy (&mts->meeting_start_time.date, start_day, start_month,
- start_year);
- mts->meeting_start_time.hour = start_hour;
- mts->meeting_start_time.minute = start_minute;
- g_date_set_dmy (&mts->meeting_end_time.date, end_day, end_month,
- end_year);
- mts->meeting_end_time.hour = end_hour;
- mts->meeting_end_time.minute = end_minute;
-
- mts->meeting_positions_valid = FALSE;
-
- gtk_widget_queue_draw (mts->display_top);
- gtk_widget_queue_draw (mts->display_main);
-
- /* Set the times in the GnomeDateEdit widgets. */
- e_meeting_time_selector_update_start_date_edit (mts);
- e_meeting_time_selector_update_end_date_edit (mts);
-
- return TRUE;
-}
-
-
-void
-e_meeting_time_selector_set_working_hours_only (EMeetingTimeSelector *mts,
- gboolean working_hours_only)
-{
- EMeetingTimeSelectorTime saved_time;
-
- g_return_if_fail (IS_E_MEETING_TIME_SELECTOR (mts));
-
- if (mts->working_hours_only == working_hours_only)
- return;
-
- mts->working_hours_only = working_hours_only;
-
- e_meeting_time_selector_save_position (mts, &saved_time);
- e_meeting_time_selector_recalc_grid (mts);
- e_meeting_time_selector_restore_position (mts, &saved_time);
-
- gtk_widget_queue_draw (mts->display_top);
- gtk_widget_queue_draw (mts->display_main);
- e_meeting_time_selector_update_date_popup_menus (mts);
-}
-
-
-void
-e_meeting_time_selector_set_working_hours (EMeetingTimeSelector *mts,
- gint day_start_hour,
- gint day_start_minute,
- gint day_end_hour,
- gint day_end_minute)
-{
- EMeetingTimeSelectorTime saved_time;
-
- g_return_if_fail (IS_E_MEETING_TIME_SELECTOR (mts));
-
- if (mts->day_start_hour == day_start_hour
- && mts->day_start_minute == day_start_minute
- && mts->day_end_hour == day_end_hour
- && mts->day_end_minute == day_end_minute)
- return;
-
- mts->day_start_hour = day_start_hour;
- mts->day_start_minute = day_start_minute;
- mts->day_end_hour = day_end_hour;
- mts->day_end_minute = day_end_minute;
-
- e_meeting_time_selector_save_position (mts, &saved_time);
- e_meeting_time_selector_recalc_grid (mts);
- e_meeting_time_selector_restore_position (mts, &saved_time);
-
- gtk_widget_queue_draw (mts->display_top);
- gtk_widget_queue_draw (mts->display_main);
- e_meeting_time_selector_update_date_popup_menus (mts);
-}
-
-
-void
-e_meeting_time_selector_set_zoomed_out (EMeetingTimeSelector *mts,
- gboolean zoomed_out)
-{
- EMeetingTimeSelectorTime saved_time;
-
- g_return_if_fail (IS_E_MEETING_TIME_SELECTOR (mts));
-
- if (mts->zoomed_out == zoomed_out)
- return;
-
- mts->zoomed_out = zoomed_out;
-
- e_meeting_time_selector_save_position (mts, &saved_time);
- e_meeting_time_selector_recalc_grid (mts);
- e_meeting_time_selector_restore_position (mts, &saved_time);
-
- gtk_widget_queue_draw (mts->display_top);
- gtk_widget_queue_draw (mts->display_main);
-}
-
-
-EMeetingTimeSelectorAutopickOption
-e_meeting_time_selector_get_autopick_option (EMeetingTimeSelector *mts)
-{
- if (GTK_CHECK_MENU_ITEM (mts->autopick_all_item)->active)
- return E_MEETING_TIME_SELECTOR_ALL_PEOPLE_AND_RESOURCES;
- if (GTK_CHECK_MENU_ITEM (mts->autopick_all_people_one_resource_item)->active)
- return E_MEETING_TIME_SELECTOR_ALL_PEOPLE_AND_ONE_RESOURCE;
- if (GTK_CHECK_MENU_ITEM (mts->autopick_required_people_item)->active)
- return E_MEETING_TIME_SELECTOR_REQUIRED_PEOPLE;
- return E_MEETING_TIME_SELECTOR_REQUIRED_PEOPLE_AND_ONE_RESOURCE;
-}
-
-
-void
-e_meeting_time_selector_set_autopick_option (EMeetingTimeSelector *mts,
- EMeetingTimeSelectorAutopickOption autopick_option)
-{
- g_return_if_fail (IS_E_MEETING_TIME_SELECTOR (mts));
-
- switch (autopick_option) {
- case E_MEETING_TIME_SELECTOR_ALL_PEOPLE_AND_RESOURCES:
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mts->autopick_all_item), TRUE);
- break;
- case E_MEETING_TIME_SELECTOR_ALL_PEOPLE_AND_ONE_RESOURCE:
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mts->autopick_all_people_one_resource_item), TRUE);
- break;
- case E_MEETING_TIME_SELECTOR_REQUIRED_PEOPLE:
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mts->autopick_required_people_item), TRUE);
- break;
- case E_MEETING_TIME_SELECTOR_REQUIRED_PEOPLE_AND_ONE_RESOURCE:
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mts->autopick_required_people_one_resource_item), TRUE);
- break;
- }
-}
-
-
-/* Adds an attendee to the list, returning the row. The data is meant for
- something like an address book id, though if the user edits the name this
- will become invalid. We'll probably have to handle address book lookup
- ourself. */
-gint
-e_meeting_time_selector_attendee_add (EMeetingTimeSelector *mts,
- gchar *attendee_name,
- gpointer data)
-{
- EMeetingTimeSelectorAttendee attendee;
- gint list_width, item_width;
- GdkFont *font;
-
- g_return_val_if_fail (IS_E_MEETING_TIME_SELECTOR (mts), -1);
- g_return_val_if_fail (attendee_name != NULL, -1);
-
- attendee.name = g_strdup (attendee_name);
- attendee.type = E_MEETING_TIME_SELECTOR_REQUIRED_PERSON;
- attendee.has_calendar_info = FALSE;
- attendee.send_meeting_to = TRUE;
- g_date_clear (&attendee.busy_periods_start.date, 1);
- attendee.busy_periods_start.hour = 0;
- attendee.busy_periods_start.minute = 0;
- g_date_clear (&attendee.busy_periods_end.date, 1);
- attendee.busy_periods_end.hour = 0;
- attendee.busy_periods_end.minute = 0;
- attendee.busy_periods = g_array_new (FALSE, FALSE,
- sizeof (EMeetingTimeSelectorPeriod));
- attendee.busy_periods_sorted = TRUE;
- attendee.longest_period_in_days = 0;
- attendee.data = data;
-
- /* Add to the list on the left. */
- list_width = GTK_WIDGET (mts->attendees_list)->allocation.width;
- item_width = MAX (1, list_width - E_MEETING_TIME_SELECTOR_ICON_COLUMN_WIDTH - E_MEETING_TIME_SELECTOR_TEXT_X_PAD * 2);
- font = GTK_WIDGET (mts)->style->font;
- attendee.text_item = gnome_canvas_item_new
- (GNOME_CANVAS_GROUP (GNOME_CANVAS (mts->attendees_list)->root),
- e_text_get_type (),
- "font_gdk", font,
- "anchor", GTK_ANCHOR_NW,
- "clip", TRUE,
- "max_lines", 1,
- "editable", TRUE,
- "text", attendee_name ? attendee_name : "",
- "clip_width", (gdouble) item_width,
- "clip_height", (gdouble) font->ascent + font->descent,
- "draw_background", FALSE,
- NULL);
-
- e_canvas_item_move_absolute(attendee.text_item,
- E_MEETING_TIME_SELECTOR_ICON_COLUMN_WIDTH
- + E_MEETING_TIME_SELECTOR_TEXT_X_PAD,
- mts->attendees->len * mts->row_height + 1
- + E_MEETING_TIME_SELECTOR_TEXT_Y_PAD);
-#if 0
- gnome_canvas_item_hide (attendee.text_item);
-#endif
-
- gtk_signal_connect (GTK_OBJECT (attendee.text_item), "event",
- GTK_SIGNAL_FUNC (e_meeting_time_selector_on_text_item_event),
- mts);
-
- g_array_append_val (mts->attendees, attendee);
-
- /* Update the scroll region. */
- e_meeting_time_selector_update_attendees_list_scroll_region (mts);
- e_meeting_time_selector_update_main_canvas_scroll_region (mts);
-
- /* Redraw the canvases. */
- gtk_widget_queue_draw (mts->display_top);
- gtk_widget_queue_draw (mts->display_main);
-
-
- return mts->attendees->len - 1;
-}
-
-
-gint
-e_meeting_time_selector_attendee_find_by_name (EMeetingTimeSelector *mts,
- gchar *attendee_name,
- gint start_row)
-{
- EMeetingTimeSelectorAttendee *attendee;
- gint row;
-
- g_return_val_if_fail (IS_E_MEETING_TIME_SELECTOR (mts), -1);
- g_return_val_if_fail (start_row >= 0, -1);
- g_return_val_if_fail (start_row < mts->attendees->len, -1);
-
- for (row = start_row; row < mts->attendees->len; row++) {
- attendee = &g_array_index (mts->attendees,
- EMeetingTimeSelectorAttendee, row);
- if (!strcmp (attendee->name, attendee_name))
- return row;
- }
-
- return -1;
-}
-
-
-gint
-e_meeting_time_selector_attendee_find_by_data (EMeetingTimeSelector *mts,
- gpointer data,
- gint start_row)
-{
- EMeetingTimeSelectorAttendee *attendee;
- gint row;
-
- g_return_val_if_fail (IS_E_MEETING_TIME_SELECTOR (mts), -1);
- g_return_val_if_fail (start_row >= 0, -1);
- g_return_val_if_fail (start_row < mts->attendees->len, -1);
-
- for (row = start_row; row < mts->attendees->len; row++) {
- attendee = &g_array_index (mts->attendees,
- EMeetingTimeSelectorAttendee, row);
- if (attendee->data == data)
- return row;
- }
-
- return -1;
-}
-
-
-void
-e_meeting_time_selector_attendee_remove (EMeetingTimeSelector *mts,
- gint row)
-{
- EMeetingTimeSelectorAttendee *attendee;
-
- g_return_if_fail (IS_E_MEETING_TIME_SELECTOR (mts));
- g_return_if_fail (row >= 0);
- g_return_if_fail (row < mts->attendees->len);
-
- attendee = &g_array_index (mts->attendees,
- EMeetingTimeSelectorAttendee, row);
-
- g_free (attendee->name);
- g_array_free (attendee->busy_periods, TRUE);
-
- /* Destroy the GtkEntry in the list. */
- gtk_object_destroy (GTK_OBJECT (attendee->text_item));
-
- g_array_remove_index (mts->attendees, row);
-
- /* Update the positions of all the other GtkEntry widgets. */
- e_meeting_time_selector_update_attendees_list_positions (mts);
-
- e_meeting_time_selector_update_attendees_list_scroll_region (mts);
- e_meeting_time_selector_update_main_canvas_scroll_region (mts);
- gtk_widget_queue_draw (mts->display_top);
- gtk_widget_queue_draw (mts->display_main);
-}
-
-
-void
-e_meeting_time_selector_attendee_set_type (EMeetingTimeSelector *mts,
- gint row,
- EMeetingTimeSelectorAttendeeType type)
-{
- EMeetingTimeSelectorAttendee *attendee;
-
- g_return_if_fail (IS_E_MEETING_TIME_SELECTOR (mts));
- g_return_if_fail (row >= 0);
- g_return_if_fail (row < mts->attendees->len);
-
- attendee = &g_array_index (mts->attendees,
- EMeetingTimeSelectorAttendee, row);
- attendee->type = type;
-}
-
-
-void
-e_meeting_time_selector_attendee_set_has_calendar_info (EMeetingTimeSelector *mts,
- gint row,
- gboolean has_calendar_info)
-{
- EMeetingTimeSelectorAttendee *attendee;
-
- g_return_if_fail (IS_E_MEETING_TIME_SELECTOR (mts));
- g_return_if_fail (row >= 0);
- g_return_if_fail (row < mts->attendees->len);
-
- attendee = &g_array_index (mts->attendees,
- EMeetingTimeSelectorAttendee, row);
- attendee->has_calendar_info = has_calendar_info;
-}
-
-
-void
-e_meeting_time_selector_attendee_set_send_meeting_to (EMeetingTimeSelector *mts,
- gint row,
- gboolean send_meeting_to)
-{
- EMeetingTimeSelectorAttendee *attendee;
-
- g_return_if_fail (IS_E_MEETING_TIME_SELECTOR (mts));
- g_return_if_fail (row >= 0);
- g_return_if_fail (row < mts->attendees->len);
-
- attendee = &g_array_index (mts->attendees,
- EMeetingTimeSelectorAttendee, row);
- attendee->send_meeting_to = send_meeting_to;
-}
-
-
-gboolean
-e_meeting_time_selector_attendee_set_busy_range (EMeetingTimeSelector *mts,
- gint row,
- gint start_year,
- gint start_month,
- gint start_day,
- gint start_hour,
- gint start_minute,
- gint end_year,
- gint end_month,
- gint end_day,
- gint end_hour,
- gint end_minute)
-{
- EMeetingTimeSelectorAttendee *attendee;
-
- g_return_val_if_fail (IS_E_MEETING_TIME_SELECTOR (mts), FALSE);
- g_return_val_if_fail (row >= 0, FALSE);
- g_return_val_if_fail (row < mts->attendees->len, FALSE);
-
- /* Check the dates are valid. */
- if (!g_date_valid_dmy (start_day, start_month, start_year))
- return FALSE;
- if (!g_date_valid_dmy (end_day, end_month, end_year))
- return FALSE;
- if (start_hour < 0 || start_hour > 23)
- return FALSE;
- if (end_hour < 0 || end_hour > 23)
- return FALSE;
- if (start_minute < 0 || start_minute > 59)
- return FALSE;
- if (end_minute < 0 || end_minute > 59)
- return FALSE;
-
- attendee = &g_array_index (mts->attendees,
- EMeetingTimeSelectorAttendee, row);
-
- g_date_clear (&attendee->busy_periods_start.date, 1);
- g_date_clear (&attendee->busy_periods_end.date, 1);
- g_date_set_dmy (&attendee->busy_periods_start.date,
- start_day, start_month, start_year);
- g_date_set_dmy (&attendee->busy_periods_end.date,
- end_day, end_month, end_year);
- attendee->busy_periods_start.hour = start_hour;
- attendee->busy_periods_start.minute = start_minute;
- attendee->busy_periods_end.hour = end_hour;
- attendee->busy_periods_end.minute = end_minute;
-
- return TRUE;
-}
-
-
-/* Clears all busy times for the given attendee. */
-void
-e_meeting_time_selector_attendee_clear_busy_periods (EMeetingTimeSelector *mts,
- gint row)
-{
- EMeetingTimeSelectorAttendee *attendee;
-
- g_return_if_fail (IS_E_MEETING_TIME_SELECTOR (mts));
- g_return_if_fail (row >= 0);
- g_return_if_fail (row < mts->attendees->len);
-
- attendee = &g_array_index (mts->attendees,
- EMeetingTimeSelectorAttendee, row);
-
- g_array_set_size (attendee->busy_periods, 0);
- attendee->busy_periods_sorted = TRUE;
- attendee->longest_period_in_days = 0;
-}
-
-
-/* Adds one busy time for the given attendee. It returns FALSE if the date
- or time is invalid. Months and days count from 1. */
-gboolean
-e_meeting_time_selector_attendee_add_busy_period (EMeetingTimeSelector *mts,
- gint row,
- gint start_year,
- gint start_month,
- gint start_day,
- gint start_hour,
- gint start_minute,
- gint end_year,
- gint end_month,
- gint end_day,
- gint end_hour,
- gint end_minute,
- EMeetingTimeSelectorBusyType busy_type)
-{
- EMeetingTimeSelectorAttendee *attendee;
- EMeetingTimeSelectorPeriod period;
- gint period_in_days;
-
- g_return_val_if_fail (IS_E_MEETING_TIME_SELECTOR (mts), FALSE);
- g_return_val_if_fail (row >= 0, FALSE);
- g_return_val_if_fail (row < mts->attendees->len, FALSE);
- g_return_val_if_fail (busy_type >= 0, FALSE);
- g_return_val_if_fail (busy_type < E_MEETING_TIME_SELECTOR_BUSY_LAST, FALSE);
-
- /* Check the dates are valid. */
- if (!g_date_valid_dmy (start_day, start_month, start_year))
- return FALSE;
- if (!g_date_valid_dmy (end_day, end_month, end_year))
- return FALSE;
- if (start_hour < 0 || start_hour > 23)
- return FALSE;
- if (end_hour < 0 || end_hour > 23)
- return FALSE;
- if (start_minute < 0 || start_minute > 59)
- return FALSE;
- if (end_minute < 0 || end_minute > 59)
- return FALSE;
-
- g_date_clear (&period.start.date, 1);
- g_date_clear (&period.end.date, 1);
- g_date_set_dmy (&period.start.date, start_day, start_month, start_year);
- g_date_set_dmy (&period.end.date, end_day, end_month, end_year);
- period.start.hour = start_hour;
- period.start.minute = start_minute;
- period.end.hour = end_hour;
- period.end.minute = end_minute;
- period.busy_type = busy_type;
-
- /* Check that the start time is before or equal to the end time. */
- if (e_meeting_time_selector_compare_times (&period.start, &period.end) > 0)
- return FALSE;
-
- attendee = &g_array_index (mts->attendees,
- EMeetingTimeSelectorAttendee, row);
- g_array_append_val (attendee->busy_periods, period);
- attendee->has_calendar_info = TRUE;
- attendee->busy_periods_sorted = FALSE;
-
- period_in_days = g_date_julian (&period.end.date) - g_date_julian (&period.start.date) + 1;
- attendee->longest_period_in_days = MAX (attendee->longest_period_in_days, period_in_days);
-
- return TRUE;
-}
-
-
-void
-e_meeting_time_selector_attendee_ensure_periods_sorted (EMeetingTimeSelector *mts,
- EMeetingTimeSelectorAttendee *attendee)
-{
- if (attendee->busy_periods_sorted)
- return;
-
- qsort (attendee->busy_periods->data, attendee->busy_periods->len,
- sizeof (EMeetingTimeSelectorPeriod),
- e_meeting_time_selector_compare_period_starts);
- attendee->busy_periods_sorted = TRUE;
-}
-
-
-/* This compares two time periods, using their end times. */
-static gint
-e_meeting_time_selector_compare_period_starts (const void *arg1,
- const void *arg2)
-{
- EMeetingTimeSelectorPeriod *period1, *period2;
-
- period1 = (EMeetingTimeSelectorPeriod *) arg1;
- period2 = (EMeetingTimeSelectorPeriod *) arg2;
-
- return e_meeting_time_selector_compare_times (&period1->start,
- &period2->start);
-}
-
-
-/* This compares two time periods, using start and end times, mainly to see if
- they overlap at all. If they overlap it returns 0. Or -1 if arg1 < arg2.
- Or 1 if arg1 > arg2. */
-/* Currently unused. */
-#if 0
-static gint
-e_meeting_time_selector_compare_periods (const void *arg1,
- const void *arg2)
-{
- EMeetingTimeSelectorPeriod *period1, *period2;
-
- period1 = (EMeetingTimeSelectorPeriod *) arg1;
- period2 = (EMeetingTimeSelectorPeriod *) arg2;
-
- /* If period 2 starts after period 1 ends, return 1. */
- if (e_meeting_time_selector_compare_times (&period2->start, &period1->end) >= 0)
- return 1;
-
- /* If period 1 starts after period 2 ends, return -1. */
- if (e_meeting_time_selector_compare_times (&period1->start, &period2->end) >= 0)
- return -1;
-
- /* They must overlap so return 0. */
- return 0;
-}
-#endif
-
-
-static gint
-e_meeting_time_selector_compare_times (EMeetingTimeSelectorTime *time1,
- EMeetingTimeSelectorTime *time2)
-{
- gint day_comparison;
-
- day_comparison = g_date_compare (&time1->date,
- &time2->date);
- if (day_comparison != 0)
- return day_comparison;
-
- if (time1->hour < time2->hour)
- return -1;
- if (time1->hour > time2->hour)
- return 1;
-
- if (time1->minute < time2->minute)
- return -1;
- if (time1->minute > time2->minute)
- return 1;
-
- /* The start times are exactly the same. */
- return 0;
-}
-
-
-/*
- * DEBUGGING ROUTINES - functions to output various bits of data.
- */
-
-#ifdef E_MEETING_TIME_SELECTOR_DEBUG
-
-/* Debugging function to dump information on all attendees. */
-void
-e_meeting_time_selector_dump (EMeetingTimeSelector *mts)
-{
- EMeetingTimeSelectorAttendee *attendee;
- EMeetingTimeSelectorPeriod *period;
- gint row, period_num;
- gchar buffer[128];
-
- g_return_if_fail (IS_E_MEETING_TIME_SELECTOR (mts));
-
- g_print ("\n\nAttendee Information:\n");
-
- for (row = 0; row < mts->attendees->len; row++) {
- attendee = &g_array_index (mts->attendees,
- EMeetingTimeSelectorAttendee, row);
- g_print ("Attendee: %s\n", attendee->name);
- g_print (" Longest Busy Period: %i days\n",
- attendee->longest_period_in_days);
-
- e_meeting_time_selector_attendee_ensure_periods_sorted (mts, attendee);
-#if 1
- for (period_num = 0;
- period_num < attendee->busy_periods->len;
- period_num++) {
- period = &g_array_index (attendee->busy_periods,
- EMeetingTimeSelectorPeriod,
- period_num);
-
- /* These are just for debugging so don't need i18n. */
- g_date_strftime (buffer, sizeof (buffer),
- "%A, %B %d, %Y", &period->start.date);
- g_print (" Start: %s %i:%02i\n", buffer,
- period->start.hour, period->start.minute);
-
- g_date_strftime (buffer, sizeof (buffer),
- "%A, %B %d, %Y", &period->end.date);
- g_print (" End : %s %i:%02i\n", buffer,
- period->end.hour, period->end.minute);
- }
-#endif
- }
-
-}
-
-
-/* This formats a EMeetingTimeSelectorTime in a string and returns it.
- Note that it uses a static buffer. */
-gchar*
-e_meeting_time_selector_dump_time (EMeetingTimeSelectorTime *mtstime)
-{
- static gchar buffer[128];
-
- gchar buffer2[128];
-
- /* This is just for debugging so doesn't need i18n. */
- g_date_strftime (buffer, sizeof (buffer), "%A, %B %d, %Y",
- &mtstime->date);
- sprintf (buffer2, " at %i:%02i", (gint) mtstime->hour,
- (gint) mtstime->minute);
- strcat (buffer, buffer2);
-
- return buffer;
-}
-
-
-/* This formats a GDate in a string and returns it.
- Note that it uses a static buffer. */
-gchar*
-e_meeting_time_selector_dump_date (GDate *date)
-{
- static gchar buffer[128];
-
- /* This is just for debugging so doesn't need i18n. */
- g_date_strftime (buffer, sizeof (buffer), "%A, %B %d, %Y", date);
- return buffer;
-}
-
-#endif /* E_MEETING_TIME_SELECTOR_DEBUG */
-
-
-static void
-e_meeting_time_selector_on_invite_others_button_clicked (GtkWidget *button,
- EMeetingTimeSelector *mts)
-{
-
-
-}
-
-
-static void
-e_meeting_time_selector_on_options_button_clicked (GtkWidget *button,
- EMeetingTimeSelector *mts)
-{
- gtk_menu_popup (GTK_MENU (mts->options_menu), NULL, NULL,
- e_meeting_time_selector_options_menu_position_callback,
- mts, 1, GDK_CURRENT_TIME);
-}
-
-
-static void
-e_meeting_time_selector_options_menu_position_callback (GtkMenu *menu,
- gint *x,
- gint *y,
- gpointer user_data)
-{
- EMeetingTimeSelector *mts;
- GtkRequisition menu_requisition;
- gint max_x, max_y;
-
- mts = E_MEETING_TIME_SELECTOR (user_data);
-
- /* Calculate our preferred position. */
- gdk_window_get_origin (mts->options_button->window, x, y);
- *y += mts->options_button->allocation.height;
-
- /* Now make sure we are on the screen. */
- gtk_widget_size_request (mts->options_menu, &menu_requisition);
- max_x = MAX (0, gdk_screen_width () - menu_requisition.width);
- max_y = MAX (0, gdk_screen_height () - menu_requisition.height);
- *x = CLAMP (*x, 0, max_x);
- *y = CLAMP (*y, 0, max_y);
-}
-
-
-static void
-e_meeting_time_selector_on_update_free_busy (GtkWidget *button,
- EMeetingTimeSelector *mts)
-{
-
- /* Make sure the menu pops down, which doesn't happen by default if
- keyboard accelerators are used. */
- if (GTK_WIDGET_VISIBLE (mts->options_menu))
- gtk_menu_popdown (GTK_MENU (mts->options_menu));
-}
-
-
-static void
-e_meeting_time_selector_on_autopick_button_clicked (GtkWidget *button,
- EMeetingTimeSelector *mts)
-{
- gtk_menu_popup (GTK_MENU (mts->autopick_menu), NULL, NULL,
- e_meeting_time_selector_autopick_menu_position_callback,
- mts, 1, GDK_CURRENT_TIME);
-}
-
-
-static void
-e_meeting_time_selector_autopick_menu_position_callback (GtkMenu *menu,
- gint *x,
- gint *y,
- gpointer user_data)
-{
- EMeetingTimeSelector *mts;
- GtkRequisition menu_requisition;
- gint max_x, max_y;
-
- mts = E_MEETING_TIME_SELECTOR (user_data);
-
- /* Calculate our preferred position. */
- gdk_window_get_origin (mts->autopick_button->window, x, y);
- *y += mts->autopick_button->allocation.height;
-
- /* Now make sure we are on the screen. */
- gtk_widget_size_request (mts->autopick_menu, &menu_requisition);
- max_x = MAX (0, gdk_screen_width () - menu_requisition.width);
- max_y = MAX (0, gdk_screen_height () - menu_requisition.height);
- *x = CLAMP (*x, 0, max_x);
- *y = CLAMP (*y, 0, max_y);
-}
-
-
-static void
-e_meeting_time_selector_on_autopick_option_toggled (GtkWidget *button,
- EMeetingTimeSelector *mts)
-{
- /* Make sure the menu pops down, which doesn't happen by default if
- keyboard accelerators are used. */
- if (GTK_WIDGET_VISIBLE (mts->autopick_menu))
- gtk_menu_popdown (GTK_MENU (mts->autopick_menu));
-}
-
-
-static void
-e_meeting_time_selector_on_prev_button_clicked (GtkWidget *button,
- EMeetingTimeSelector *mts)
-{
- e_meeting_time_selector_autopick (mts, FALSE);
-}
-
-
-static void
-e_meeting_time_selector_on_next_button_clicked (GtkWidget *button,
- EMeetingTimeSelector *mts)
-{
- e_meeting_time_selector_autopick (mts, TRUE);
-}
-
-
-/* This tries to find the previous or next meeting time for which all
- attendees will be available. */
-static void
-e_meeting_time_selector_autopick (EMeetingTimeSelector *mts,
- gboolean forward)
-{
- EMeetingTimeSelectorTime start_time, end_time, *resource_free;
- EMeetingTimeSelectorAttendee *attendee;
- EMeetingTimeSelectorPeriod *period;
- EMeetingTimeSelectorAutopickOption autopick_option;
- gint duration_days, duration_hours, duration_minutes, row;
- gboolean meeting_time_ok, skip_optional = FALSE;
- gboolean need_one_resource = FALSE, found_resource;
-
- /* Get the current meeting duration in days + hours + minutes. */
- e_meeting_time_selector_calculate_time_difference (&mts->meeting_start_time, &mts->meeting_end_time, &duration_days, &duration_hours, &duration_minutes);
-
- /* Find the first appropriate start time. */
- start_time = mts->meeting_start_time;
- if (forward)
- e_meeting_time_selector_find_nearest_interval (mts, &start_time, &end_time, duration_days, duration_hours, duration_minutes);
- else
- e_meeting_time_selector_find_nearest_interval_backward (mts, &start_time, &end_time, duration_days, duration_hours, duration_minutes);
-
- /* Determine if we can skip optional people and if we only need one
- resource based on the autopick option. */
- autopick_option = e_meeting_time_selector_get_autopick_option (mts);
- if (autopick_option == E_MEETING_TIME_SELECTOR_REQUIRED_PEOPLE
- || autopick_option == E_MEETING_TIME_SELECTOR_REQUIRED_PEOPLE_AND_ONE_RESOURCE)
- skip_optional = TRUE;
- if (autopick_option == E_MEETING_TIME_SELECTOR_ALL_PEOPLE_AND_ONE_RESOURCE
- || autopick_option == E_MEETING_TIME_SELECTOR_REQUIRED_PEOPLE_AND_ONE_RESOURCE)
- need_one_resource = TRUE;
-
- /* Keep moving forward or backward until we find a possible meeting
- time. */
- for (;;) {
- meeting_time_ok = TRUE;
- found_resource = FALSE;
- resource_free = NULL;
-
- /* Step through each attendee, checking if the meeting time
- intersects one of the attendees busy periods. */
- for (row = 0; row < mts->attendees->len; row++) {
- attendee = &g_array_index (mts->attendees,
- EMeetingTimeSelectorAttendee,
- row);
-
- /* Skip optional people if they don't matter. */
- if (skip_optional && attendee->type == E_MEETING_TIME_SELECTOR_OPTIONAL_PERSON)
- continue;
-
- period = e_meeting_time_selector_find_time_clash (mts, attendee, &start_time, &end_time);
-
- if (need_one_resource && attendee->type == E_MEETING_TIME_SELECTOR_RESOURCE) {
- if (period) {
- /* We want to remember the closest
- prev/next time that one resource is
- available, in case we don't find any
- free resources. */
- if (forward) {
- if (!resource_free || e_meeting_time_selector_compare_times (resource_free, &period->end) > 0)
- resource_free = &period->end;
- } else {
- if (!resource_free || e_meeting_time_selector_compare_times (resource_free, &period->start) < 0)
- resource_free = &period->start;
- }
-
- } else {
- found_resource = TRUE;
- }
- } else if (period) {
- /* Skip the period which clashed. */
- if (forward) {
- start_time = period->end;
- } else {
- start_time = period->start;
- e_meeting_time_selector_adjust_time (&start_time, -duration_days, -duration_hours, -duration_minutes);
- }
- meeting_time_ok = FALSE;
- break;
- }
- }
-
- /* Check that we found one resource if necessary. If not, skip
- to the closest time that a resource is free. Note that if
- there are no resources, resource_free will never get set,
- so we assume the meeting time is OK. */
- if (meeting_time_ok && need_one_resource && !found_resource
- && resource_free) {
- if (forward) {
- start_time = *resource_free;
- } else {
- start_time = *resource_free;
- e_meeting_time_selector_adjust_time (&start_time, -duration_days, -duration_hours, -duration_minutes);
- }
- meeting_time_ok = FALSE;
- }
-
- if (meeting_time_ok) {
- mts->meeting_start_time = start_time;
- mts->meeting_end_time = end_time;
- mts->meeting_positions_valid = FALSE;
- gtk_widget_queue_draw (mts->display_top);
- gtk_widget_queue_draw (mts->display_main);
-
- /* Make sure the time is shown. */
- e_meeting_time_selector_ensure_meeting_time_shown (mts);
-
- /* Set the times in the GnomeDateEdit widgets. */
- e_meeting_time_selector_update_start_date_edit (mts);
- e_meeting_time_selector_update_end_date_edit (mts);
- return;
- }
-
- /* Move forward to the next possible interval. */
- if (forward)
- e_meeting_time_selector_find_nearest_interval (mts, &start_time, &end_time, duration_days, duration_hours, duration_minutes);
- else
- e_meeting_time_selector_find_nearest_interval_backward (mts, &start_time, &end_time, duration_days, duration_hours, duration_minutes);
- }
-}
-
-
-static void
-e_meeting_time_selector_calculate_time_difference (EMeetingTimeSelectorTime *start,
- EMeetingTimeSelectorTime *end,
- gint *days,
- gint *hours,
- gint *minutes)
-{
- *days = g_date_julian (&end->date) - g_date_julian (&start->date);
- *hours = end->hour - start->hour;
- *minutes = end->minute - start->minute;
- if (*minutes < 0) {
- *minutes += 60;
- *hours = *hours - 1;
- }
- if (*hours < 0) {
- *hours += 24;
- *days = *days - 1;
- }
-}
-
-
-/* This moves the given time forward to the next suitable start of a meeting.
- If zoomed_out is set, this means every hour. If not every half-hour. */
-static void
-e_meeting_time_selector_find_nearest_interval (EMeetingTimeSelector *mts,
- EMeetingTimeSelectorTime *start_time,
- EMeetingTimeSelectorTime *end_time,
- gint days, gint hours, gint mins)
-{
- gint minutes_shown;
- gboolean set_to_start_of_working_day = FALSE;
-
- if (mts->zoomed_out) {
- start_time->hour++;
- start_time->minute = 0;
- } else {
- start_time->minute += 30;
- start_time->minute -= start_time->minute % 30;
- }
- e_meeting_time_selector_fix_time_overflows (start_time);
-
- *end_time = *start_time;
- e_meeting_time_selector_adjust_time (end_time, days, hours, mins);
-
- /* Check if the interval is less than a day as seen in the display.
- If it isn't we don't worry about the working day. */
- if (!mts->working_hours_only || days > 0)
- return;
- minutes_shown = (mts->day_end_hour - mts->day_start_hour) * 60;
- minutes_shown += mts->day_end_minute - mts->day_start_minute;
- if (hours * 60 + mins > minutes_shown)
- return;
-
- /* If the meeting time finishes past the end of the working day, move
- onto the start of the next working day. If the meeting time starts
- before the working day, move it on as well. */
- if (start_time->hour > mts->day_end_hour
- || (start_time->hour == mts->day_end_hour
- && start_time->minute > mts->day_end_minute)
- || end_time->hour > mts->day_end_hour
- || (end_time->hour == mts->day_end_hour
- && end_time->minute > mts->day_end_minute)) {
- g_date_add_days (&start_time->date, 1);
- set_to_start_of_working_day = TRUE;
- } else if (start_time->hour < mts->day_start_hour
- || (start_time->hour == mts->day_start_hour
- && start_time->minute < mts->day_start_minute)) {
- set_to_start_of_working_day = TRUE;
- }
-
- if (set_to_start_of_working_day) {
- start_time->hour = mts->day_start_hour;
- start_time->minute = mts->day_start_minute;
-
- if (mts->zoomed_out) {
- if (start_time->minute > 0) {
- start_time->hour++;
- start_time->minute = 0;
- }
- } else {
- start_time->minute += 29;
- start_time->minute -= start_time->minute % 30;
- }
- e_meeting_time_selector_fix_time_overflows (start_time);
-
- *end_time = *start_time;
- e_meeting_time_selector_adjust_time (end_time, days, hours, mins);
- }
-}
-
-
-/* This moves the given time backward to the next suitable start of a meeting.
- If zoomed_out is set, this means every hour. If not every half-hour. */
-static void
-e_meeting_time_selector_find_nearest_interval_backward (EMeetingTimeSelector *mts,
- EMeetingTimeSelectorTime *start_time,
- EMeetingTimeSelectorTime *end_time,
- gint days, gint hours, gint mins)
-{
- gint new_hour, minutes_shown;
- gboolean set_to_end_of_working_day = FALSE;
-
- new_hour = start_time->hour;
- if (mts->zoomed_out) {
- if (start_time->minute == 0)
- new_hour--;
- start_time->minute = 0;
- } else {
- if (start_time->minute == 0) {
- start_time->minute = 30;
- new_hour--;
- } else if (start_time->minute <= 30)
- start_time->minute = 0;
- else
- start_time->minute = 30;
- }
- if (new_hour < 0) {
- new_hour += 24;
- g_date_subtract_days (&start_time->date, 1);
- }
- start_time->hour = new_hour;
-
- *end_time = *start_time;
- e_meeting_time_selector_adjust_time (end_time, days, hours, mins);
-
- /* Check if the interval is less than a day as seen in the display.
- If it isn't we don't worry about the working day. */
- if (!mts->working_hours_only || days > 0)
- return;
- minutes_shown = (mts->day_end_hour - mts->day_start_hour) * 60;
- minutes_shown += mts->day_end_minute - mts->day_start_minute;
- if (hours * 60 + mins > minutes_shown)
- return;
-
- /* If the meeting time finishes past the end of the working day, move
- back to the end of the working day. If the meeting time starts
- before the working day, move it back to the end of the previous
- working day. */
- if (start_time->hour > mts->day_end_hour
- || (start_time->hour == mts->day_end_hour
- && start_time->minute > mts->day_end_minute)
- || end_time->hour > mts->day_end_hour
- || (end_time->hour == mts->day_end_hour
- && end_time->minute > mts->day_end_minute)) {
- set_to_end_of_working_day = TRUE;
- } else if (start_time->hour < mts->day_start_hour
- || (start_time->hour == mts->day_start_hour
- && start_time->minute < mts->day_start_minute)) {
- g_date_subtract_days (&end_time->date, 1);
- set_to_end_of_working_day = TRUE;
- }
-
- if (set_to_end_of_working_day) {
- end_time->hour = mts->day_end_hour;
- end_time->minute = mts->day_end_minute;
- *start_time = *end_time;
- e_meeting_time_selector_adjust_time (start_time, -days, -hours, -mins);
-
- if (mts->zoomed_out) {
- start_time->minute = 0;
- } else {
- start_time->minute -= start_time->minute % 30;
- }
-
- *end_time = *start_time;
- e_meeting_time_selector_adjust_time (end_time, days, hours, mins);
- }
-}
-
-
-/* This adds on the given days, hours & minutes to a EMeetingTimeSelectorTime.
- It is used to calculate the end of a period given a start & duration.
- Days, hours & minutes can be negative, to move backwards, but they should
- be within normal ranges, e.g. hours should be between -23 and 23. */
-static void
-e_meeting_time_selector_adjust_time (EMeetingTimeSelectorTime *mtstime,
- gint days, gint hours, gint minutes)
-{
- gint new_hours, new_minutes;
-
- /* We have to handle negative values for hous and minutes here, since
- EMeetingTimeSelectorTime uses guint8s to store them. */
- new_minutes = mtstime->minute + minutes;
- if (new_minutes < 0) {
- new_minutes += 60;
- hours -= 1;
- }
-
- new_hours = mtstime->hour + hours;
- if (new_hours < 0) {
- new_hours += 24;
- days -= 1;
- }
-
- g_date_add_days (&mtstime->date, days);
- mtstime->hour = new_hours;
- mtstime->minute = new_minutes;
-
- e_meeting_time_selector_fix_time_overflows (mtstime);
-}
-
-
-/* This looks for any busy period of the given attendee which clashes with
- the start and end time. It uses a binary search. */
-static EMeetingTimeSelectorPeriod*
-e_meeting_time_selector_find_time_clash (EMeetingTimeSelector *mts,
- EMeetingTimeSelectorAttendee *attendee,
- EMeetingTimeSelectorTime *start_time,
- EMeetingTimeSelectorTime *end_time)
-{
- EMeetingTimeSelectorPeriod *period;
- gint period_num;
-
- period_num = e_meeting_time_selector_find_first_busy_period (mts, attendee, &start_time->date);
-
- if (period_num == -1)
- return NULL;
-
- /* Step forward through the busy periods until we find a clash or we
- go past the end_time. */
- while (period_num < attendee->busy_periods->len) {
- period = &g_array_index (attendee->busy_periods,
- EMeetingTimeSelectorPeriod,
- period_num);
-
- /* If the period starts at or after the end time, there is no
- clash and we are finished. The busy periods are sorted by
- their start times, so all the rest will be later. */
- if (e_meeting_time_selector_compare_times (&period->start,
- end_time) >= 0)
- return NULL;
-
- /* If the period ends after the start time, we have found a
- clash. From the above test we already know the busy period
- isn't completely after the meeting time. */
- if (e_meeting_time_selector_compare_times (&period->end,
- start_time) > 0) {
- return period;
- }
-
- period_num++;
- }
-
- return NULL;
-}
-
-
-/* This subtracts the attendees longest_period_in_days from the given date,
- and does a binary search of the attendee's busy periods array to find the
- first one which could possible end on the given day or later.
- If none are found it returns -1. */
-gint
-e_meeting_time_selector_find_first_busy_period (EMeetingTimeSelector *mts,
- EMeetingTimeSelectorAttendee *attendee,
- GDate *date)
-{
- EMeetingTimeSelectorPeriod *period;
- gint lower, upper, middle = 0, cmp = 0;
- GDate tmp_date;
-
- /* Make sure the busy periods have been sorted. */
- e_meeting_time_selector_attendee_ensure_periods_sorted (mts, attendee);
-
- /* Calculate the first day which could have a busy period which
- continues onto our given date. */
- tmp_date = *date;
- g_date_subtract_days (&tmp_date, attendee->longest_period_in_days);
-
- /* We want the first busy period which starts on tmp_date. */
- lower = 0;
- upper = attendee->busy_periods->len;
-
- if (upper == 0)
- return -1;
-
- while (lower < upper) {
- middle = (lower + upper) >> 1;
-
- period = &g_array_index (attendee->busy_periods,
- EMeetingTimeSelectorPeriod, middle);
-
- cmp = g_date_compare (&tmp_date, &period->start.date);
-
- if (cmp == 0)
- break;
- else if (cmp < 0)
- upper = middle;
- else
- lower = middle + 1;
- }
-
- /* There may be several busy periods on the same day so we step
- backwards to the first one. */
- if (cmp == 0) {
- while (middle > 0) {
- period = &g_array_index (attendee->busy_periods,
- EMeetingTimeSelectorPeriod, middle - 1);
- if (g_date_compare (&tmp_date, &period->start.date) != 0)
- break;
- middle--;
- }
- } else if (cmp > 0) {
- /* This means we couldn't find a period on the given day, and
- the last one we looked at was before it, so if there are
- any more periods after this one we return it. */
- middle++;
- if (attendee->busy_periods->len <= middle)
- return -1;
- }
-
- return middle;
-}
-
-
-static void
-e_meeting_time_selector_on_zoomed_out_toggled (GtkWidget *menuitem,
- EMeetingTimeSelector *mts)
-{
- /* Make sure the menu pops down, which doesn't happen by default if
- keyboard accelerators are used. */
- if (GTK_WIDGET_VISIBLE (mts->options_menu))
- gtk_menu_popdown (GTK_MENU (mts->options_menu));
-
- e_meeting_time_selector_set_zoomed_out (mts, GTK_CHECK_MENU_ITEM (menuitem)->active);
-}
-
-
-static void
-e_meeting_time_selector_on_working_hours_toggled (GtkWidget *menuitem,
- EMeetingTimeSelector *mts)
-{
- /* Make sure the menu pops down, which doesn't happen by default if
- keyboard accelerators are used. */
- if (GTK_WIDGET_VISIBLE (mts->options_menu))
- gtk_menu_popdown (GTK_MENU (mts->options_menu));
-
- e_meeting_time_selector_set_working_hours_only (mts, GTK_CHECK_MENU_ITEM (menuitem)->active);
-}
-
-
-/* This recalculates day_width, first_hour_shown and last_hour_shown. */
-static void
-e_meeting_time_selector_recalc_grid (EMeetingTimeSelector *mts)
-{
- if (mts->working_hours_only) {
- mts->first_hour_shown = mts->day_start_hour;
- mts->last_hour_shown = mts->day_end_hour;
- if (mts->day_end_minute != 0)
- mts->last_hour_shown += 1;
- } else {
- mts->first_hour_shown = 0;
- mts->last_hour_shown = 24;
- }
-
- /* In the brief view we use the nearest hours divisible by 3. */
- if (mts->zoomed_out) {
- mts->first_hour_shown -= mts->first_hour_shown % 3;
- mts->last_hour_shown += 2;
- mts->last_hour_shown -= mts->last_hour_shown % 3;
- }
-
- mts->day_width = mts->col_width * (mts->last_hour_shown - mts->first_hour_shown);
- if (mts->zoomed_out)
- mts->day_width /= 3;
-
- /* Add one pixel for the extra vertical grid line. */
- mts->day_width++;
-
- gnome_canvas_set_scroll_region (GNOME_CANVAS (mts->display_top),
- 0, 0,
- mts->day_width * E_MEETING_TIME_SELECTOR_DAYS_SHOWN,
- mts->row_height * 3);
- e_meeting_time_selector_update_main_canvas_scroll_region (mts);
-
- e_meeting_time_selector_recalc_date_format (mts);
- mts->meeting_positions_valid = FALSE;
-}
-
-
-/* This saves the first visible time in the given EMeetingTimeSelectorTime. */
-static void
-e_meeting_time_selector_save_position (EMeetingTimeSelector *mts,
- EMeetingTimeSelectorTime *mtstime)
-{
- gint scroll_x, scroll_y;
-
- gnome_canvas_get_scroll_offsets (GNOME_CANVAS (mts->display_main),
- &scroll_x, &scroll_y);
- e_meeting_time_selector_calculate_time (mts, scroll_x, mtstime);
-}
-
-
-/* This restores a saved position. */
-static void
-e_meeting_time_selector_restore_position (EMeetingTimeSelector *mts,
- EMeetingTimeSelectorTime *mtstime)
-{
- gint scroll_x, scroll_y, new_scroll_x;
-
- new_scroll_x = e_meeting_time_selector_calculate_time_position (mts,
- mtstime);
- gnome_canvas_get_scroll_offsets (GNOME_CANVAS (mts->display_main),
- &scroll_x, &scroll_y);
- gnome_canvas_scroll_to (GNOME_CANVAS (mts->display_main),
- new_scroll_x, scroll_y);
-}
-
-
-/* This returns the x pixel coords of the meeting time in the entire scroll
- region. It recalculates them if they have been marked as invalid.
- If it returns FALSE then no meeting time is set or the meeting time is
- not visible in the current scroll area. */
-gboolean
-e_meeting_time_selector_get_meeting_time_positions (EMeetingTimeSelector *mts,
- gint *start_x,
- gint *end_x)
-{
- if (mts->meeting_positions_valid) {
- if (mts->meeting_positions_in_scroll_area) {
- *start_x = mts->meeting_start_x;
- *end_x = mts->meeting_end_x;
- return TRUE;
- } else {
- return FALSE;
- }
- }
-
- mts->meeting_positions_valid = TRUE;
-
- /* Check if the days aren't in our current range. */
- if (g_date_compare (&mts->meeting_start_time.date, &mts->last_date_shown) > 0
- || g_date_compare (&mts->meeting_end_time.date, &mts->first_date_shown) < 0) {
- mts->meeting_positions_in_scroll_area = FALSE;
- return FALSE;
- }
-
- mts->meeting_positions_in_scroll_area = TRUE;
- *start_x = mts->meeting_start_x = e_meeting_time_selector_calculate_time_position (mts, &mts->meeting_start_time);
- *end_x = mts->meeting_end_x = e_meeting_time_selector_calculate_time_position (mts, &mts->meeting_end_time);
-
- return TRUE;
-}
-
-
-/* This recalculates the date format to used, by computing the width of the
- longest date strings in the widget's font and seeing if they fit. */
-static void
-e_meeting_time_selector_recalc_date_format (EMeetingTimeSelector *mts)
-{
- /* An array of dates, one for each month in the year 2000. They must
- all be Sundays. */
- static const int days[12] = { 23, 20, 19, 23, 21, 18,
- 23, 20, 17, 22, 19, 24 };
- GDate date;
- gint max_date_width, longest_weekday_width, longest_month_width, width;
- gint day, longest_weekday, month, longest_month;
- gchar buffer[128];
- GdkFont *font;
-
- font = GTK_WIDGET (mts)->style->font;
-
- /* Calculate the maximum date width we can fit into the display. */
- max_date_width = mts->day_width - 2;
-
- /* Find the biggest full weekday name. We start on a particular
- Monday and go through seven days. */
- g_date_clear (&date, 1);
- g_date_set_dmy (&date, 3, 1, 2000); /* Monday 3rd Jan 2000. */
- longest_weekday_width = 0;
- longest_weekday = G_DATE_MONDAY;
- for (day = G_DATE_MONDAY; day <= G_DATE_SUNDAY; day++) {
- g_date_strftime (buffer, sizeof (buffer), "%A", &date);
- width = gdk_string_width (font, buffer);
- if (width > longest_weekday_width) {
- longest_weekday = day;
- longest_weekday_width = width;
- }
- g_date_add_days (&date, 1);
- }
-
- /* Now find the biggest month name. */
- longest_month_width = 0;
- longest_month = G_DATE_JANUARY;
- for (month = G_DATE_JANUARY; month <= G_DATE_DECEMBER; month++) {
- g_date_set_month (&date, month);
- g_date_strftime (buffer, sizeof (buffer), "%B", &date);
- width = gdk_string_width (font, buffer);
- if (width > longest_month_width) {
- longest_month = month;
- longest_month_width = width;
- }
- }
-
- /* See if we can use the full date. We want to use a date with a
- month day > 20 and also the longest weekday. We use a
- pre-calculated array of days for each month and add on the
- weekday (which is 1 (Mon) to 7 (Sun). */
- g_date_set_dmy (&date, days[longest_month - 1] + longest_weekday,
- longest_month, 2000);
- /* This is a strftime() format string %A = full weekday name,
- %B = full month name, %d = month day, %Y = full year. */
- g_date_strftime (buffer, sizeof (buffer), _("%A, %B %d, %Y"), &date);
-
- g_print ("longest_month: %i longest_weekday: %i date: %s\n",
- longest_month, longest_weekday, buffer);
-
- if (gdk_string_width (font, buffer) < max_date_width) {
- mts->date_format = E_MEETING_TIME_SELECTOR_DATE_FULL;
- return;
- }
-
- /* Now try it with abbreviated weekday names. */
- longest_weekday_width = 0;
- longest_weekday = G_DATE_MONDAY;
- g_date_set_dmy (&date, 3, 1, 2000); /* Monday 3rd Jan 2000. */
- for (day = G_DATE_MONDAY; day <= G_DATE_SUNDAY; day++) {
- g_date_strftime (buffer, sizeof (buffer), "%a", &date);
- width = gdk_string_width (font, buffer);
- if (width > longest_weekday_width) {
- longest_weekday = day;
- longest_weekday_width = width;
- }
- g_date_add_days (&date, 1);
- }
-
- g_date_set_dmy (&date, days[longest_month - 1] + longest_weekday,
- longest_month, 2000);
- /* This is a strftime() format string %a = abbreviated weekday name,
- %m = month number, %d = month day, %Y = full year. */
- g_date_strftime (buffer, sizeof (buffer), _("%a %m/%d/%Y"), &date);
-
- g_print ("longest_month: %i longest_weekday: %i date: %s\n",
- longest_month, longest_weekday, buffer);
-
- if (gdk_string_width (font, buffer) < max_date_width)
- mts->date_format = E_MEETING_TIME_SELECTOR_DATE_ABBREVIATED_DAY;
- else
- mts->date_format = E_MEETING_TIME_SELECTOR_DATE_SHORT;
-}
-
-
-/* Turn off the background of the canvas windows. This reduces flicker
- considerably when scrolling. (Why isn't it in GnomeCanvas?). */
-static void
-e_meeting_time_selector_on_canvas_realized (GtkWidget *widget,
- EMeetingTimeSelector *mts)
-{
- gdk_window_set_back_pixmap (GTK_LAYOUT (widget)->bin_window,
- NULL, FALSE);
-}
-
-
-/* This is called when the meeting start time GnomeDateEdit is changed,
- either via the "date_changed". "time_changed" or "activate" signals on one
- of the GtkEntry widgets. So don't use the widget parameter since it may be
- one of the child GtkEntry widgets. */
-static void
-e_meeting_time_selector_on_start_time_changed (GtkWidget *widget,
- EMeetingTimeSelector *mts)
-{
- gint duration_days, duration_hours, duration_minutes;
- EMeetingTimeSelectorTime mtstime;
- time_t newtime;
- struct tm *newtime_tm;
-
- newtime = gnome_date_edit_get_date (GNOME_DATE_EDIT (mts->start_date_edit));
- newtime_tm = localtime (&newtime);
- g_date_clear (&mtstime.date, 1);
- g_date_set_time (&mtstime.date, newtime);
- mtstime.hour = newtime_tm->tm_hour;
- mtstime.minute = newtime_tm->tm_min;
-
- /* If the time hasn't changed, just return. */
- if (e_meeting_time_selector_compare_times (&mtstime, &mts->meeting_start_time) == 0)
- return;
-
- /* Calculate the current meeting duration. */
- e_meeting_time_selector_calculate_time_difference (&mts->meeting_start_time, &mts->meeting_end_time, &duration_days, &duration_hours, &duration_minutes);
-
- /* Set the new start time. */
- mts->meeting_start_time = mtstime;
-
- /* Update the end time so the meeting duration stays the same. */
- mts->meeting_end_time = mts->meeting_start_time;
- e_meeting_time_selector_adjust_time (&mts->meeting_end_time, duration_days, duration_hours, duration_minutes);
- e_meeting_time_selector_update_end_date_edit (mts);
-
- mts->meeting_positions_valid = FALSE;
- e_meeting_time_selector_ensure_meeting_time_shown (mts);
- gtk_widget_queue_draw (mts->display_top);
- gtk_widget_queue_draw (mts->display_main);
-}
-
-
-/* This is called when the meeting end time GnomeDateEdit is changed,
- either via the "date_changed", "time_changed" or "activate" signals on one
- of the GtkEntry widgets. So don't use the widget parameter since it may be
- one of the child GtkEntry widgets. */
-static void
-e_meeting_time_selector_on_end_time_changed (GtkWidget *widget,
- EMeetingTimeSelector *mts)
-{
- EMeetingTimeSelectorTime mtstime;
- time_t newtime;
- struct tm *newtime_tm;
-
- newtime = gnome_date_edit_get_date (GNOME_DATE_EDIT (mts->end_date_edit));
- newtime_tm = localtime (&newtime);
- g_date_clear (&mtstime.date, 1);
- g_date_set_time (&mtstime.date, newtime);
- mtstime.hour = newtime_tm->tm_hour;
- mtstime.minute = newtime_tm->tm_min;
-
- /* If the time hasn't changed, just return. */
- if (e_meeting_time_selector_compare_times (&mtstime, &mts->meeting_end_time) == 0)
- return;
-
- /* Set the new end time. */
- mts->meeting_end_time = mtstime;
-
- /* If the start time is after the end time, set it to the same time. */
- if (e_meeting_time_selector_compare_times (&mtstime, &mts->meeting_start_time) < 0) {
- /* We set it first, before updating the widget, so the signal
- handler will just return. */
- mts->meeting_start_time = mtstime;
- e_meeting_time_selector_update_start_date_edit (mts);
- }
-
- mts->meeting_positions_valid = FALSE;
- e_meeting_time_selector_ensure_meeting_time_shown (mts);
- gtk_widget_queue_draw (mts->display_top);
- gtk_widget_queue_draw (mts->display_main);
-}
-
-
-/* This updates the ranges shown in the GnomeDateEdit popup menus, according
- to working_hours_only etc. */
-static void
-e_meeting_time_selector_update_date_popup_menus (EMeetingTimeSelector *mts)
-{
- GnomeDateEdit *start_edit, *end_edit;
- gint low_hour, high_hour;
-
- start_edit = GNOME_DATE_EDIT (mts->start_date_edit);
- end_edit = GNOME_DATE_EDIT (mts->end_date_edit);
-
- if (mts->working_hours_only) {
- low_hour = mts->day_start_hour;
- high_hour = mts->day_end_hour;
- } else {
- low_hour = 0;
- high_hour = 23;
- }
-
- gnome_date_edit_set_popup_range (start_edit, low_hour, high_hour);
- gnome_date_edit_set_popup_range (end_edit, low_hour, high_hour);
-}
-
-
-static void
-e_meeting_time_selector_on_canvas_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation,
- EMeetingTimeSelector *mts)
-{
- e_meeting_time_selector_update_main_canvas_scroll_region (mts);
-
- e_meeting_time_selector_ensure_meeting_time_shown (mts);
-}
-
-
-static void
-e_meeting_time_selector_on_attendees_list_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation,
- EMeetingTimeSelector *mts)
-{
- e_meeting_time_selector_update_attendees_list_scroll_region (mts);
- e_meeting_time_selector_update_attendees_list_positions (mts);
-}
-
-
-/* This updates the list canvas scroll region according to the number of
- attendees. If the total height needed is less than the height of the canvas,
- we must use the height of the canvas, or it causes problems. */
-static void
-e_meeting_time_selector_update_attendees_list_scroll_region (EMeetingTimeSelector *mts)
-{
- gint height, canvas_width, canvas_height;
-
- height = mts->row_height * mts->attendees->len;
- canvas_width = GTK_WIDGET (mts->attendees_list)->allocation.width;
- canvas_height = GTK_WIDGET (mts->attendees_list)->allocation.height;
-
- height = MAX (height, canvas_height);
-
- gnome_canvas_set_scroll_region (GNOME_CANVAS (mts->attendees_list),
- 0, 0,
- canvas_width,
- height);
-}
-
-
-/* This updates the canvas scroll regions according to the number of attendees.
- If the total height needed is less than the height of the canvas, we must
- use the height of the canvas, or it causes problems. */
-static void
-e_meeting_time_selector_update_main_canvas_scroll_region (EMeetingTimeSelector *mts)
-{
- gint height, canvas_height, list_width;
-
- height = mts->row_height * (mts->attendees->len + 1);
- canvas_height = GTK_WIDGET (mts->display_main)->allocation.height;
- list_width = GTK_WIDGET (mts->attendees_list)->allocation.width;
-
- height = MAX (height, canvas_height);
-
- gnome_canvas_set_scroll_region (GNOME_CANVAS (mts->attendees_list),
- 0, 0,
- list_width,
- height);
- gnome_canvas_set_scroll_region (GNOME_CANVAS (mts->display_main),
- 0, 0,
- mts->day_width * E_MEETING_TIME_SELECTOR_DAYS_SHOWN,
- height);
-}
-
-
-/* This changes the meeting time based on the given x coordinate and whether
- we are dragging the start or end bar. It returns the new position, which
- will be swapped if the start bar is dragged past the end bar or vice versa.
- It make sure the meeting time is never dragged outside the visible canvas
- area. */
-void
-e_meeting_time_selector_drag_meeting_time (EMeetingTimeSelector *mts,
- gint x)
-{
- EMeetingTimeSelectorTime first_time, last_time, drag_time, *time_to_set;
- gint scroll_x, scroll_y, canvas_width;
- gboolean set_both_times = FALSE;
-
- /* Get the x coords of visible part of the canvas. */
- gnome_canvas_get_scroll_offsets (GNOME_CANVAS (mts->display_main),
- &scroll_x, &scroll_y);
- canvas_width = mts->display_main->allocation.width;
-
- /* Save the x coordinate for the timeout handler. */
- mts->last_drag_x = (x < scroll_x) ? x - scroll_x
- : x - scroll_x - canvas_width + 1;
-
- /* Check if the mouse is off the edge of the canvas. */
- if (x < scroll_x || x > scroll_x + canvas_width) {
- /* If we haven't added a timeout function, add one. */
- if (mts->auto_scroll_timeout_id == 0) {
- mts->auto_scroll_timeout_id = g_timeout_add (60, e_meeting_time_selector_timeout_handler, mts);
- mts->scroll_count = 0;
-
- /* Call the handler to start scrolling now. */
- e_meeting_time_selector_timeout_handler (mts);
- return;
- }
- } else {
- e_meeting_time_selector_remove_timeout (mts);
- }
-
- /* Calculate the minimum & maximum times we can use, based on the
- scroll offsets and whether zoomed_out is set. */
- e_meeting_time_selector_calculate_time (mts, scroll_x, &first_time);
- e_meeting_time_selector_calculate_time (mts, scroll_x + canvas_width - 1,
- &last_time);
- if (mts->zoomed_out) {
- if (first_time.minute > 30)
- first_time.hour++;
- first_time.minute = 0;
- last_time.minute = 0;
- } else {
- first_time.minute += 15;
- first_time.minute -= first_time.minute % 30;
- last_time.minute -= last_time.minute % 30;
- }
- e_meeting_time_selector_fix_time_overflows (&first_time);
- e_meeting_time_selector_fix_time_overflows (&last_time);
-
- /* Calculate the time from x coordinate. */
- e_meeting_time_selector_calculate_time (mts, x, &drag_time);
-
- /* Calculate the nearest half-hour or hour, depending on whether
- zoomed_out is set. */
- if (mts->zoomed_out) {
- if (drag_time.minute > 30)
- drag_time.hour++;
- drag_time.minute = 0;
- } else {
- drag_time.minute += 15;
- drag_time.minute -= drag_time.minute % 30;
- }
- e_meeting_time_selector_fix_time_overflows (&drag_time);
-
- /* Now make sure we are between first_time & last_time. */
- if (e_meeting_time_selector_compare_times (&drag_time, &first_time) < 0)
- drag_time = first_time;
- if (e_meeting_time_selector_compare_times (&drag_time, &last_time) > 0)
- drag_time = last_time;
-
- /* Set the meeting start or end time to drag_time. */
- if (mts->dragging_position == E_MEETING_TIME_SELECTOR_POS_START)
- time_to_set = &mts->meeting_start_time;
- else
- time_to_set = &mts->meeting_end_time;
-
- /* If the time is unchanged, just return. */
- if (e_meeting_time_selector_compare_times (time_to_set, &drag_time) == 0)
- return;
-
- *time_to_set = drag_time;
-
- /* Check if the start time and end time need to be switched. */
- if (e_meeting_time_selector_compare_times (&mts->meeting_start_time,
- &mts->meeting_end_time) > 0) {
- drag_time = mts->meeting_start_time;
- mts->meeting_start_time = mts->meeting_end_time;
- mts->meeting_end_time = drag_time;
-
- if (mts->dragging_position == E_MEETING_TIME_SELECTOR_POS_START)
- mts->dragging_position = E_MEETING_TIME_SELECTOR_POS_END;
- else
- mts->dragging_position = E_MEETING_TIME_SELECTOR_POS_START;
-
- set_both_times = TRUE;
- }
-
- /* Mark the calculated positions as invalid. */
- mts->meeting_positions_valid = FALSE;
-
- /* Redraw the canvases. */
- gtk_widget_queue_draw (mts->display_top);
- gtk_widget_queue_draw (mts->display_main);
-
- /* Set the times in the GnomeDateEdit widgets. */
- if (set_both_times
- || mts->dragging_position == E_MEETING_TIME_SELECTOR_POS_START)
- e_meeting_time_selector_update_start_date_edit (mts);
-
- if (set_both_times
- || mts->dragging_position == E_MEETING_TIME_SELECTOR_POS_END)
- e_meeting_time_selector_update_end_date_edit (mts);
-}
-
-
-/* This is the timeout function which handles auto-scrolling when the user is
- dragging one of the meeting time vertical bars outside the left or right
- edge of the canvas. */
-static gboolean
-e_meeting_time_selector_timeout_handler (gpointer data)
-{
- EMeetingTimeSelector *mts;
- EMeetingTimeSelectorTime drag_time, *time_to_set;
- gint scroll_x, max_scroll_x, scroll_y, canvas_width;
- gint scroll_speed, scroll_offset;
- gboolean set_both_times = FALSE;
-
- mts = E_MEETING_TIME_SELECTOR (data);
-
- GDK_THREADS_ENTER ();
-
- /* Return if we don't need to scroll yet. */
- if (mts->scroll_count-- > 0) {
- GDK_THREADS_LEAVE ();
- return TRUE;
- }
-
- /* Get the x coords of visible part of the canvas. */
- gnome_canvas_get_scroll_offsets (GNOME_CANVAS (mts->display_main),
- &scroll_x, &scroll_y);
- canvas_width = mts->display_main->allocation.width;
-
- /* Calculate the scroll delay, between 0 and MAX_SCROLL_SPEED. */
- scroll_speed = abs (mts->last_drag_x / E_MEETING_TIME_SELECTOR_SCROLL_INCREMENT_WIDTH);
- scroll_speed = MIN (scroll_speed,
- E_MEETING_TIME_SELECTOR_MAX_SCROLL_SPEED);
-
- /* Reset the scroll count. */
- mts->scroll_count = E_MEETING_TIME_SELECTOR_MAX_SCROLL_SPEED - scroll_speed;
-
- /* Calculate how much we need to scroll. */
- if (mts->last_drag_x >= 0)
- scroll_offset = mts->col_width;
- else
- scroll_offset = -mts->col_width;
-
- scroll_x += scroll_offset;
- max_scroll_x = (mts->day_width * E_MEETING_TIME_SELECTOR_DAYS_SHOWN)
- - canvas_width;
- scroll_x = CLAMP (scroll_x, 0, max_scroll_x);
-
- /* Calculate the minimum or maximum visible time in the canvas, which
- we will now set the dragged time to. */
- if (scroll_offset > 0) {
- e_meeting_time_selector_calculate_time (mts,
- scroll_x + canvas_width - 1,
- &drag_time);
- if (mts->zoomed_out) {
- drag_time.minute = 0;
- } else {
- drag_time.minute -= drag_time.minute % 30;
- }
- } else {
- e_meeting_time_selector_calculate_time (mts, scroll_x,
- &drag_time);
- if (mts->zoomed_out) {
- if (drag_time.minute > 30)
- drag_time.hour++;
- drag_time.minute = 0;
- } else {
- drag_time.minute += 15;
- drag_time.minute -= drag_time.minute % 30;
- }
- }
- e_meeting_time_selector_fix_time_overflows (&drag_time);
-
- /* Set the meeting start or end time to drag_time. */
- if (mts->dragging_position == E_MEETING_TIME_SELECTOR_POS_START)
- time_to_set = &mts->meeting_start_time;
- else
- time_to_set = &mts->meeting_end_time;
-
- /* If the time is unchanged, just return. */
- if (e_meeting_time_selector_compare_times (time_to_set, &drag_time) == 0) {
- GDK_THREADS_LEAVE ();
- return TRUE;
- }
-
- *time_to_set = drag_time;
-
- /* Check if the start time and end time need to be switched. */
- if (e_meeting_time_selector_compare_times (&mts->meeting_start_time, &mts->meeting_end_time) > 0) {
- drag_time = mts->meeting_start_time;
- mts->meeting_start_time = mts->meeting_end_time;
- mts->meeting_end_time = drag_time;
-
- if (mts->dragging_position == E_MEETING_TIME_SELECTOR_POS_START)
- mts->dragging_position = E_MEETING_TIME_SELECTOR_POS_END;
- else
- mts->dragging_position = E_MEETING_TIME_SELECTOR_POS_START;
-
- set_both_times = TRUE;
- }
-
- /* Mark the calculated positions as invalid. */
- mts->meeting_positions_valid = FALSE;
-
- /* Set the times in the GnomeDateEdit widgets. */
- if (set_both_times
- || mts->dragging_position == E_MEETING_TIME_SELECTOR_POS_START)
- e_meeting_time_selector_update_start_date_edit (mts);
-
- if (set_both_times
- || mts->dragging_position == E_MEETING_TIME_SELECTOR_POS_END)
- e_meeting_time_selector_update_end_date_edit (mts);
-
- /* Redraw the canvases. We freeze and thaw the layouts so that they
- get redrawn completely. Otherwise the pixels get scrolled left or
- right which is not good for us (since our vertical bars have been
- moved) and causes flicker. */
- gtk_layout_freeze (GTK_LAYOUT (mts->display_main));
- gtk_layout_freeze (GTK_LAYOUT (mts->display_top));
- gnome_canvas_scroll_to (GNOME_CANVAS (mts->display_main),
- scroll_x, scroll_y);
- gnome_canvas_scroll_to (GNOME_CANVAS (mts->display_top),
- scroll_x, scroll_y);
- gtk_layout_thaw (GTK_LAYOUT (mts->display_main));
- gtk_layout_thaw (GTK_LAYOUT (mts->display_top));
-
- GDK_THREADS_LEAVE ();
- return TRUE;
-}
-
-
-/* This removes our auto-scroll timeout function, if we have one installed. */
-void
-e_meeting_time_selector_remove_timeout (EMeetingTimeSelector *mts)
-{
- if (mts->auto_scroll_timeout_id) {
- g_source_remove (mts->auto_scroll_timeout_id);
- mts->auto_scroll_timeout_id = 0;
- }
-}
-
-
-/* This updates the GnomeDateEdit widget displaying the meeting start time. */
-static void
-e_meeting_time_selector_update_start_date_edit (EMeetingTimeSelector *mts)
-{
- struct tm start_tm;
- time_t start_time_t;
-
- g_date_to_struct_tm (&mts->meeting_start_time.date, &start_tm);
- start_tm.tm_hour = mts->meeting_start_time.hour;
- start_tm.tm_min = mts->meeting_start_time.minute;
- start_time_t = mktime (&start_tm);
- gnome_date_edit_set_time (GNOME_DATE_EDIT (mts->start_date_edit),
- start_time_t);
-}
-
-
-/* This updates the GnomeDateEdit widget displaying the meeting end time. */
-static void
-e_meeting_time_selector_update_end_date_edit (EMeetingTimeSelector *mts)
-{
- struct tm end_tm;
- time_t end_time_t;
-
- g_date_to_struct_tm (&mts->meeting_end_time.date, &end_tm);
- end_tm.tm_hour = mts->meeting_end_time.hour;
- end_tm.tm_min = mts->meeting_end_time.minute;
- end_time_t = mktime (&end_tm);
- gnome_date_edit_set_time (GNOME_DATE_EDIT (mts->end_date_edit),
- end_time_t);
-}
-
-
-/* This ensures that the meeting time is shown on screen, by scrolling the
- canvas and possibly by changing the range of dates shown in the canvas. */
-static void
-e_meeting_time_selector_ensure_meeting_time_shown (EMeetingTimeSelector *mts)
-{
- gint start_x, end_x, scroll_x, scroll_y, canvas_width;
- gint new_scroll_x;
- gboolean fits_in_canvas;
-
- /* Check if we need to change the range of dates shown. */
- if (g_date_compare (&mts->meeting_start_time.date,
- &mts->first_date_shown) < 0
- || g_date_compare (&mts->meeting_end_time.date,
- &mts->last_date_shown) > 0) {
- e_meeting_time_selector_update_dates_shown (mts);
- gtk_widget_queue_draw (mts->display_top);
- gtk_widget_queue_draw (mts->display_main);
- }
-
- /* If all of the meeting time is visible, just return. */
- e_meeting_time_selector_get_meeting_time_positions (mts, &start_x,
- &end_x);
- gnome_canvas_get_scroll_offsets (GNOME_CANVAS (mts->display_main),
- &scroll_x, &scroll_y);
- canvas_width = mts->display_main->allocation.width;
- if (start_x > scroll_x && end_x <= scroll_x + canvas_width)
- return;
-
- fits_in_canvas = end_x - start_x < canvas_width ? TRUE : FALSE;
-
- /* If the meeting is not entirely visible, either center it if it is
- smaller than the canvas, or show the start of it if it is big. */
- if (fits_in_canvas) {
- new_scroll_x = (start_x + end_x - canvas_width) / 2;
- } else {
- new_scroll_x = start_x;
- }
- gnome_canvas_scroll_to (GNOME_CANVAS (mts->display_main),
- new_scroll_x, scroll_y);
-}
-
-
-/* This updates the range of dates shown in the canvas, to make sure that the
- currently selected meeting time is in the range. */
-static void
-e_meeting_time_selector_update_dates_shown (EMeetingTimeSelector *mts)
-{
- mts->first_date_shown = mts->meeting_start_time.date;
- g_date_subtract_days (&mts->first_date_shown, 60);
-
- mts->last_date_shown = mts->first_date_shown;
- g_date_add_days (&mts->last_date_shown, E_MEETING_TIME_SELECTOR_DAYS_SHOWN - 1);
-}
-
-
-/* This checks if the time's hour is over 24 or its minute is over 60 and if
- so it updates the day/hour appropriately. Note that hours and minutes are
- stored in guint8's so they can't overflow by much. */
-void
-e_meeting_time_selector_fix_time_overflows (EMeetingTimeSelectorTime *mtstime)
-{
- gint hours_to_add, days_to_add;
-
- hours_to_add = mtstime->minute / 60;
- if (hours_to_add > 0) {
- mtstime->minute -= hours_to_add * 60;
- mtstime->hour += hours_to_add;
- }
-
- days_to_add = mtstime->hour / 24;
- if (days_to_add > 0) {
- mtstime->hour -= days_to_add * 24;
- g_date_add_days (&mtstime->date, days_to_add);
- }
-}
-
-
-static void
-e_meeting_time_selector_update_attendees_list_positions (EMeetingTimeSelector *mts)
-{
- EMeetingTimeSelectorAttendee *attendee;
- gint list_width, item_width;
- gint row;
- GdkFont *font;
-
- list_width = GTK_WIDGET (mts->attendees_list)->allocation.width;
- item_width = MAX (1, list_width - E_MEETING_TIME_SELECTOR_ICON_COLUMN_WIDTH - E_MEETING_TIME_SELECTOR_TEXT_X_PAD * 2);
- font = GTK_WIDGET (mts)->style->font;
- for (row = 0; row < mts->attendees->len; row++) {
- attendee = &g_array_index (mts->attendees,
- EMeetingTimeSelectorAttendee, row);
-
- gnome_canvas_item_set
- (attendee->text_item,
- "font_gdk", font,
- "clip_width", (gdouble) item_width,
- "clip_height", (gdouble) (font->ascent
- + font->descent),
- NULL);
-
- e_canvas_item_move_absolute (attendee->text_item,
- E_MEETING_TIME_SELECTOR_ICON_COLUMN_WIDTH
- + E_MEETING_TIME_SELECTOR_TEXT_X_PAD,
- row * mts->row_height + 1 + E_MEETING_TIME_SELECTOR_TEXT_Y_PAD);
-
- gnome_canvas_item_show (attendee->text_item);
- }
-}
-
-
-/*
- * CONVERSION ROUTINES - functions to convert between different coordinate
- * spaces and dates.
- */
-
-/* This takes an x pixel coordinate within the entire canvas scroll region and
- returns the date in which it falls. If day_position is not NULL it also
- returns the x coordinate within the date, relative to the visible part of
- the canvas. It is used when painting the days in the item_draw function.
- Note that it must handle negative x coordinates in case we are dragging off
- the edge of the canvas. */
-void
-e_meeting_time_selector_calculate_day_and_position (EMeetingTimeSelector *mts,
- gint x,
- GDate *date,
- gint *day_position)
-{
- gint days_from_first_shown;
-
- *date = mts->first_date_shown;
-
- if (x >= 0) {
- days_from_first_shown = x / mts->day_width;
- g_date_add_days (date, days_from_first_shown);
- if (day_position)
- *day_position = - x % mts->day_width;
- } else {
- days_from_first_shown = -x / mts->day_width + 1;
- g_date_subtract_days (date, days_from_first_shown);
- if (day_position)
- *day_position = -mts->day_width - x % mts->day_width;
- }
-}
-
-
-/* This takes an x pixel coordinate within a day, and converts it to hours
- and minutes, depending on working_hours_only and zoomed_out. */
-void
-e_meeting_time_selector_convert_day_position_to_hours_and_mins (EMeetingTimeSelector *mts, gint day_position, guint8 *hours, guint8 *minutes)
-{
- if (mts->zoomed_out)
- day_position *= 3;
-
- /* Calculate the hours & minutes from the first displayed. */
- *hours = day_position / mts->col_width;
- *minutes = (day_position % mts->col_width) * 60 / mts->col_width;
-
- /* Now add on the first hour shown. */
- *hours += mts->first_hour_shown;
-}
-
-
-/* This takes an x pixel coordinate within the entire canvas scroll region and
- returns the time in which it falls. Note that it won't be extremely
- accurate since hours may only be a few pixels wide in the display.
- With zoomed_out set each pixel may represent 5 minutes or more, depending
- on how small the font is. */
-void
-e_meeting_time_selector_calculate_time (EMeetingTimeSelector *mts,
- gint x,
- EMeetingTimeSelectorTime *time)
-{
- gint day_position;
-
- /* First get the day and the x position within the day. */
- e_meeting_time_selector_calculate_day_and_position (mts, x, &time->date,
- NULL);
-
- /* Now convert the day_position into an hour and minute. */
- if (x >= 0)
- day_position = x % mts->day_width;
- else
- day_position = mts->day_width + x % mts->day_width;
-
- e_meeting_time_selector_convert_day_position_to_hours_and_mins (mts, day_position, &time->hour, &time->minute);
-}
-
-
-/* This takes a EMeetingTimeSelectorTime and calculates the x pixel coordinate
- within the entire canvas scroll region. It is used to draw the selected
- meeting time and all the busy periods. */
-gint
-e_meeting_time_selector_calculate_time_position (EMeetingTimeSelector *mts,
- EMeetingTimeSelectorTime *mtstime)
-{
- gint x, date_offset, day_offset;
-
- /* Calculate the number of days since the first date shown in the
- entire canvas scroll region. */
- date_offset = g_date_julian (&mtstime->date) - g_date_julian (&mts->first_date_shown);
-
- /* Calculate the x pixel coordinate of the start of the day. */
- x = date_offset * mts->day_width;
-
- /* Add on the hours and minutes, depending on whether zoomed_out and
- working_hours_only are set. */
- day_offset = (mtstime->hour - mts->first_hour_shown) * 60
- + mtstime->minute;
- /* The day width includes an extra vertical grid line so subtract 1. */
- day_offset *= (mts->day_width - 1);
- day_offset /= (mts->last_hour_shown - mts->first_hour_shown) * 60;
-
- /* Clamp the day_offset in case the time isn't actually visible. */
- x += CLAMP (day_offset, 0, mts->day_width);
-
- return x;
-}
-
-
-static gboolean
-e_meeting_time_selector_on_text_item_event (GnomeCanvasItem *item,
- GdkEvent *event,
- EMeetingTimeSelector *mts)
-{
- EMeetingTimeSelectorAttendee *attendee;
- gint row, min;
- ETextEventProcessor *event_processor = NULL;
- ETextEventProcessorCommand command;
- GtkAdjustment *adj;
- gchar *text;
- gboolean empty = FALSE;
-
- switch (event->type) {
- case GDK_KEY_PRESS:
- if (event && event->key.keyval == GDK_Return) {
- row = e_meeting_time_selector_find_row_from_text_item (mts, item);
- g_return_val_if_fail (row != -1, FALSE);
-
- if (row == mts->attendees->len - 1)
- row = e_meeting_time_selector_attendee_add (mts, "", NULL);
- else
- row++;
-
- /* Make sure the item is visible. */
- adj = GTK_LAYOUT (mts->display_main)->vadjustment;
- min = ((row + 1) * mts->row_height) - adj->page_size;
- if (adj->value < min) {
- adj->value = min;
- gtk_adjustment_value_changed (adj);
- }
-
- attendee = &g_array_index (mts->attendees, EMeetingTimeSelectorAttendee, row);
- e_canvas_item_grab_focus (attendee->text_item, TRUE);
-
- /* Try to move the cursor to the end of the text. */
- gtk_object_get (GTK_OBJECT (attendee->text_item),
- "event_processor", &event_processor,
- NULL);
- if (event_processor) {
- command.action = E_TEP_MOVE;
- command.position = E_TEP_END_OF_BUFFER;
- gtk_signal_emit_by_name (GTK_OBJECT (event_processor),
- "command", &command);
- }
-
- /* Stop the signal last or we will also stop any
- other events getting to the EText item. */
- gtk_signal_emit_stop_by_name (GTK_OBJECT (item),
- "event");
- return TRUE;
- }
- break;
- case GDK_FOCUS_CHANGE:
- if (!event->focus_change.in) {
- gtk_object_get (GTK_OBJECT (item),
- "text", &text,
- NULL);
- if (!text || !text[0])
- empty = TRUE;
- g_free (text);
-
- if (empty) {
- row = e_meeting_time_selector_find_row_from_text_item (mts, item);
- g_return_val_if_fail (row != -1, FALSE);
- e_meeting_time_selector_attendee_remove (mts,
- row);
- }
- }
- break;
- default:
- break;
- }
-
- return FALSE;
-}
-
-
-static gint
-e_meeting_time_selector_find_row_from_text_item (EMeetingTimeSelector *mts,
- GnomeCanvasItem *item)
-{
- EMeetingTimeSelectorAttendee *attendee;
- gint row;
-
- for (row = 0; row < mts->attendees->len; row++) {
- attendee = &g_array_index (mts->attendees,
- EMeetingTimeSelectorAttendee, row);
- if (attendee->text_item == item)
- return row;
- }
-
- return -1;
-}
-
diff --git a/widgets/meeting-time-sel/e-meeting-time-sel.h b/widgets/meeting-time-sel/e-meeting-time-sel.h
deleted file mode 100644
index 0cfe7685b4..0000000000
--- a/widgets/meeting-time-sel/e-meeting-time-sel.h
+++ /dev/null
@@ -1,521 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@gtk.org>
- *
- * Copyright 1999, Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-#ifndef _E_MEETING_TIME_SELECTOR_H_
-#define _E_MEETING_TIME_SELECTOR_H_
-
-#include <glib.h>
-#include <gtk/gtkaccelgroup.h>
-#include <gtk/gtktable.h>
-#include <gtk/gtkwidget.h>
-#include <libgnomeui/gnome-canvas.h>
-#include <gal/e-text/e-text.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/*
- * EMeetingTimeSelector displays a list of attendees for a meeting and a
- * graphical summary of the times which they are free and busy, allowing the
- * user to select an appropriate time for a meeting.
- */
-
-/* Define this to include the debugging functions. */
-#undef E_MEETING_TIME_SELECTOR_DEBUG
-
-/* This is the width of the icon column in the attendees list. */
-#define E_MEETING_TIME_SELECTOR_ICON_COLUMN_WIDTH 24
-
-#define E_MEETING_TIME_SELECTOR_TEXT_Y_PAD 3
-#define E_MEETING_TIME_SELECTOR_TEXT_X_PAD 2
-
-/* These specify the type of attendee. Either a person or a resource (e.g. a
- meeting room). These are used for the Autopick options, where the user can
- ask for a time when, for example, all people and one resource are free.
- The default is E_MEETING_TIME_SELECTOR_REQUIRED_PERSON. */
-typedef enum
-{
- E_MEETING_TIME_SELECTOR_REQUIRED_PERSON,
- E_MEETING_TIME_SELECTOR_OPTIONAL_PERSON,
- E_MEETING_TIME_SELECTOR_RESOURCE
-} EMeetingTimeSelectorAttendeeType;
-
-
-/* These are used to specify whether an attendee is free or busy at a
- particular time. We'll probably replace this with a global calendar type.
- These should be ordered in increasing order of preference. Higher precedence
- busy periods will be painted over lower precedence ones. These are also
- used as for loop counters, so they should start at 0 and be ordered. */
-typedef enum
-{
- E_MEETING_TIME_SELECTOR_BUSY_TENTATIVE = 0,
- E_MEETING_TIME_SELECTOR_BUSY_OUT_OF_OFFICE = 1,
- E_MEETING_TIME_SELECTOR_BUSY_BUSY = 2,
-
- E_MEETING_TIME_SELECTOR_BUSY_LAST = 3
-} EMeetingTimeSelectorBusyType;
-
-
-/* This is used to specify the format used when displaying the dates.
- The full format is like 'Sunday, September 12, 1999'. The abbreviated format
- is like 'Sun 12/9/99'. The short format is like '12/9/99'. The actual
- format used is determined in e_meeting_time_selector_style_set(), once we
- know the font being used. */
-typedef enum
-{
- E_MEETING_TIME_SELECTOR_DATE_FULL,
- E_MEETING_TIME_SELECTOR_DATE_ABBREVIATED_DAY,
- E_MEETING_TIME_SELECTOR_DATE_SHORT
-} EMeetingTimeSelectorDateFormat;
-
-
-/* This is used to specify a position regarding the vertical bars around the
- current meeting time, so we know which one is being dragged. */
-typedef enum
-{
- E_MEETING_TIME_SELECTOR_POS_NONE,
- E_MEETING_TIME_SELECTOR_POS_START,
- E_MEETING_TIME_SELECTOR_POS_END
-} EMeetingTimeSelectorPosition;
-
-
-/* This is used to specify the autopick option, which determines how we choose
- the previous/next appropriate meeting time. */
-typedef enum
-{
- E_MEETING_TIME_SELECTOR_ALL_PEOPLE_AND_RESOURCES,
- E_MEETING_TIME_SELECTOR_ALL_PEOPLE_AND_ONE_RESOURCE,
- E_MEETING_TIME_SELECTOR_REQUIRED_PEOPLE,
- E_MEETING_TIME_SELECTOR_REQUIRED_PEOPLE_AND_ONE_RESOURCE
-} EMeetingTimeSelectorAutopickOption;
-
-
-/* This is our representation of a time. We use a GDate to store the day,
- and guint8s for the hours and minutes. */
-typedef struct _EMeetingTimeSelectorTime EMeetingTimeSelectorTime;
-struct _EMeetingTimeSelectorTime
-{
- GDate date;
- guint8 hour;
- guint8 minute;
-};
-
-
-/* This represents a busy period. */
-typedef struct _EMeetingTimeSelectorPeriod EMeetingTimeSelectorPeriod;
-struct _EMeetingTimeSelectorPeriod
-{
- EMeetingTimeSelectorTime start;
- EMeetingTimeSelectorTime end;
- EMeetingTimeSelectorBusyType busy_type;
-};
-
-
-/* This contains information on one attendee. */
-typedef struct _EMeetingTimeSelectorAttendee EMeetingTimeSelectorAttendee;
-struct _EMeetingTimeSelectorAttendee
-{
- gchar *name;
-
- /* The type of attendee, e.g. a person or a resource. */
- EMeetingTimeSelectorAttendeeType type;
-
- /* This is TRUE if the attendee has calendar information available.
- It is set to TRUE when a busy period is added, but can also be set
- to TRUE explicitly to indicate that the attendee has calendar
- information available, but no current busy periods. If it is FALSE
- then a diagonal stipple pattern is used to fill the entire row in
- the main graphical display. */
- gboolean has_calendar_info;
-
- /* This is TRUE if the meeting request is sent to this attendee. */
- gboolean send_meeting_to;
-
- /* This is the period for which free/busy data for the attendee is
- available. */
- EMeetingTimeSelectorTime busy_periods_start;
- EMeetingTimeSelectorTime busy_periods_end;
-
- /* This is an array of EMeetingTimeSelectorPeriod elements. When it is
- updated busy_periods_sorted is set to FALSE, and if a function
- needs them sorted, it should call this to re-sort them if needed:
- e_meeting_time_selector_attendee_ensure_periods_sorted(). Note that
- they are sorted by the start times. */
- GArray *busy_periods;
- gboolean busy_periods_sorted;
-
- /* This holds the length of the longest busy period in days, rounded
- up. It is used to determine where to start looking in the
- busy_periods array. If we didn't use this we'd have to go through
- most of the busy_periods array every time we wanted to paint part
- of the display. */
- gint longest_period_in_days;
-
- /* This is the canvas text item where the name is edited. */
- GnomeCanvasItem *text_item;
-
- /* This is supposed to be something like an address book id. */
- gpointer data;
-};
-
-/* An array of hour strings, "0:00" .. "23:00". */
-extern const gchar *EMeetingTimeSelectorHours[24];
-
-
-#define E_MEETING_TIME_SELECTOR(obj) GTK_CHECK_CAST (obj, e_meeting_time_selector_get_type (), EMeetingTimeSelector)
-#define E_MEETING_TIME_SELECTOR_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, e_meeting_time_selector_get_type (), EMeetingTimeSelectorClass)
-#define IS_E_MEETING_TIME_SELECTOR(obj) GTK_CHECK_TYPE (obj, e_meeting_time_selector_get_type ())
-
-
-typedef struct _EMeetingTimeSelector EMeetingTimeSelector;
-typedef struct _EMeetingTimeSelectorClass EMeetingTimeSelectorClass;
-
-struct _EMeetingTimeSelector
-{
- /* We subclass a GtkTable which makes it easy to add extra widgets
- if neccesary. */
- GtkTable table;
-
- /*
- * User Interface stuff - widgets, colors etc.
- */
-
- /* This contains our keyboard accelerators, which need to be added to
- the toplevel window. */
- GtkAccelGroup *accel_group;
-
- /* The vbox in the top-left corner, containing the 'All Attendees'
- title bar packed at the end. Extra widgets can be added here
- with PACK_START if necessary. */
- GtkWidget *attendees_title_bar_vbox;
-
- /* The 'All Attendees' title bar above the list of attendees. */
- GtkWidget *attendees_title_bar;
-
- /* The list of attendees. */
- GtkWidget *attendees_list;
-
- /* The canvas displaying the dates, times, and the summary
- 'All Attendees' free/busy display. */
- GtkWidget *display_top;
-
- /* The canvas containing the free/busy displays of individual
- attendees. This is separate from display_top since it also scrolls
- vertically. */
- GtkWidget *display_main;
-
- /* This is the 'Options' button & menu. */
- GtkWidget *options_button;
- GtkWidget *options_menu;
-
- /* This is the 'Autopick' button, menu & radio menu items. */
- GtkWidget *autopick_button;
- GtkWidget *autopick_menu;
- GtkWidget *autopick_all_item;
- GtkWidget *autopick_all_people_one_resource_item;
- GtkWidget *autopick_required_people_item;
- GtkWidget *autopick_required_people_one_resource_item;
-
- /* The horizontal scrollbar which scrolls display_top & display_main.*/
- GtkWidget *hscrollbar;
-
- /* The vertical scrollbar which scrolls attendees & display_main. */
- GtkWidget *vscrollbar;
-
- /* The 2 GnomeDateEdit widgets for the meeting start & end times. */
- GtkWidget *start_date_edit;
- GtkWidget *end_date_edit;
-
- /* Colors. */
- GdkColorContext *color_context;
- GdkColor bg_color;
- GdkColor all_attendees_bg_color;
- GdkColor meeting_time_bg_color;
- GdkColor stipple_bg_color;
- GdkColor attendee_list_bg_color;
- GdkColor grid_color;
- GdkColor grid_shadow_color;
- GdkColor grid_unused_color;
- GdkColor busy_colors[E_MEETING_TIME_SELECTOR_BUSY_LAST];
-
- /* The stipple used for attendees with no data. */
- GdkPixmap *stipple;
-
- /* GC for drawing the color key. */
- GdkGC *color_key_gc;
-
- /* Width of the hours strings (e.g. "1:00") in the current font. */
- gint hour_widths[24];
-
- /* Whether we are using the full, abbreviated or short date format. */
- EMeetingTimeSelectorDateFormat date_format;
-
-
- /*
- * Attendee Data.
- */
-
- /* This is an array of EMeetingTimeSelectorAttendee elements. */
- GArray *attendees;
-
-
- /*
- * Option Settings.
- */
-
- /* If this is TRUE we only show hours between day_start_hour and
- day_end_hour, defaults to TRUE (9am-6pm). */
- gboolean working_hours_only;
- gint day_start_hour;
- gint day_start_minute;
- gint day_end_hour;
- gint day_end_minute;
-
- /* If TRUE, view is compressed, with one cell for every 3 hours rather
- than every hour. Defaults to FALSE. */
- gboolean zoomed_out;
-
-
- /*
- * Internal Data.
- */
-
- /* These are the first & last dates shown in the current scroll area.
- We show E_MEETING_TIME_SELECTOR_DAYS_SHOWN days at a time. */
- GDate first_date_shown;
- GDate last_date_shown;
-
- /* This is the current selection of the meeting time. */
- EMeetingTimeSelectorTime meeting_start_time;
- EMeetingTimeSelectorTime meeting_end_time;
-
- /* These are the x pixel coordinates in the entire scroll region of
- the start and end times. Set to meeting_positions_valid to FALSE to
- invalidate. They will then be recomputed when needed. Always access
- with e_meeting_time_selector_get_meeting_time_positions(). */
- gint meeting_positions_valid;
- gint meeting_positions_in_scroll_area;
- gint meeting_start_x;
- gint meeting_end_x;
-
- /* These are the width and height of the cells, including the grid
- lines which are displayed on the right and top or bottom of cells.*/
- gint row_height;
- gint col_width;
-
- /* This is the width of a day in the display, which depends on
- col_width, working_hours_only and zoomed_out. */
- gint day_width;
-
- /* These are the first and last hour of each day we display, depending
- on working_hours_only and zoomed_out. */
- gint first_hour_shown;
- gint last_hour_shown;
-
- /* The id of the source function for auto-scroll timeouts. */
- guint auto_scroll_timeout_id;
-
- /* This specifies if we are dragging one of the vertical bars around
- the meeting time. */
- EMeetingTimeSelectorPosition dragging_position;
-
- /* The last x coordinate of the mouse, relative to either the left or
- right edge of the canvas. Used in the auto_scroll_timeout function
- to determine which way to scroll and how fast. */
- gint last_drag_x;
-
- /* This is used to determine the delay between scrolls. */
- gint scroll_count;
-};
-
-
-struct _EMeetingTimeSelectorClass
-{
- GtkTableClass parent_class;
-};
-
-
-/*
- * PUBLIC INTERFACE - note that this interface will probably change, when I
- * know where the data is coming from. This is mainly just for testing for now.
- */
-
-GtkType e_meeting_time_selector_get_type (void);
-GtkWidget* e_meeting_time_selector_new (void);
-
-/* This returns the currently selected meeting time.
- Note that months are 1-12 and days are 1-31. The start time is guaranteed to
- be before or equal to the end time. You may want to check if they are equal
- if that if it is a problem. */
-void e_meeting_time_selector_get_meeting_time (EMeetingTimeSelector *mts,
- gint *start_year,
- gint *start_month,
- gint *start_day,
- gint *start_hour,
- gint *start_minute,
- gint *end_year,
- gint *end_month,
- gint *end_day,
- gint *end_hour,
- gint *end_minute);
-
-/* This sets the meeting time, returning TRUE if it is valid. */
-gboolean e_meeting_time_selector_set_meeting_time (EMeetingTimeSelector *mts,
- gint start_year,
- gint start_month,
- gint start_day,
- gint start_hour,
- gint start_minute,
- gint end_year,
- gint end_month,
- gint end_day,
- gint end_hour,
- gint end_minute);
-
-void e_meeting_time_selector_set_working_hours_only (EMeetingTimeSelector *mts,
- gboolean working_hours_only);
-void e_meeting_time_selector_set_working_hours (EMeetingTimeSelector *mts,
- gint day_start_hour,
- gint day_start_minute,
- gint day_end_hour,
- gint day_end_minute);
-
-void e_meeting_time_selector_set_zoomed_out (EMeetingTimeSelector *mts,
- gboolean zoomed_out);
-
-EMeetingTimeSelectorAutopickOption e_meeting_time_selector_get_autopick_option (EMeetingTimeSelector *mts);
-void e_meeting_time_selector_set_autopick_option (EMeetingTimeSelector *mts,
- EMeetingTimeSelectorAutopickOption autopick_option);
-
-/* Adds an attendee to the list, returning the row. The data is meant for
- something like an address book id, though if the user edits the name this
- will become invalid. We'll probably have to handle address book lookup
- ourself. */
-gint e_meeting_time_selector_attendee_add (EMeetingTimeSelector *mts,
- gchar *attendee_name,
- gpointer data);
-gint e_meeting_time_selector_attendee_find_by_name (EMeetingTimeSelector *mts,
- gchar *attendee_name,
- gint start_row);
-gint e_meeting_time_selector_attendee_find_by_data (EMeetingTimeSelector *mts,
- gpointer data,
- gint start_row);
-void e_meeting_time_selector_attendee_remove (EMeetingTimeSelector *mts,
- gint row);
-
-void e_meeting_time_selector_attendee_set_type (EMeetingTimeSelector *mts,
- gint row,
- EMeetingTimeSelectorAttendeeType type);
-void e_meeting_time_selector_attendee_set_has_calendar_info (EMeetingTimeSelector *mts,
- gint row,
- gboolean has_calendar_info);
-void e_meeting_time_selector_attendee_set_send_meeting_to (EMeetingTimeSelector *mts,
- gint row,
- gboolean send_meeting_to);
-
-gboolean e_meeting_time_selector_attendee_set_busy_range (EMeetingTimeSelector *mts,
- gint row,
- gint start_year,
- gint start_month,
- gint start_day,
- gint start_hour,
- gint start_minute,
- gint end_year,
- gint end_month,
- gint end_day,
- gint end_hour,
- gint end_minute);
-
-
-/* Clears all busy times for the given attendee. */
-void e_meeting_time_selector_attendee_clear_busy_periods (EMeetingTimeSelector *mts,
- gint row);
-/* Adds one busy time for the given attendee. */
-gboolean e_meeting_time_selector_attendee_add_busy_period (EMeetingTimeSelector *mts,
- gint row,
- gint start_year,
- gint start_month,
- gint start_day,
- gint start_hour,
- gint start_minute,
- gint end_year,
- gint end_month,
- gint end_day,
- gint end_hour,
- gint end_minute,
- EMeetingTimeSelectorBusyType busy_type);
-
-
-
-/*
- * INTERNAL ROUTINES - functions to communicate with the canvas items within
- * the EMeetingTimeSelector.
- */
-
-/* This returns the x pixel coordinates of the meeting start and end times,
- in the entire canvas scroll area. If it returns FALSE, then the meeting
- time isn't in the current scroll area (which shouldn't really happen). */
-gboolean e_meeting_time_selector_get_meeting_time_positions (EMeetingTimeSelector *mts,
- gint *start_x,
- gint *end_x);
-
-void e_meeting_time_selector_drag_meeting_time (EMeetingTimeSelector *mts,
- gint x);
-
-void e_meeting_time_selector_remove_timeout (EMeetingTimeSelector *mts);
-
-void e_meeting_time_selector_fix_time_overflows (EMeetingTimeSelectorTime *mtstime);
-
-gint e_meeting_time_selector_find_first_busy_period (EMeetingTimeSelector *mts,
- EMeetingTimeSelectorAttendee *attendee,
- GDate *date);
-
-/* Makes sure the busy periods are sorted, so we can do binary searches. */
-void e_meeting_time_selector_attendee_ensure_periods_sorted (EMeetingTimeSelector *mts,
- EMeetingTimeSelectorAttendee *attendee);
-
-void e_meeting_time_selector_calculate_day_and_position (EMeetingTimeSelector *mts,
- gint x,
- GDate *date,
- gint *day_position);
-void e_meeting_time_selector_convert_day_position_to_hours_and_mins (EMeetingTimeSelector *mts, gint day_position, guint8 *hours, guint8 *minutes);
-void e_meeting_time_selector_calculate_time (EMeetingTimeSelector *mts,
- gint x,
- EMeetingTimeSelectorTime *time);
-gint e_meeting_time_selector_calculate_time_position (EMeetingTimeSelector *mts,
- EMeetingTimeSelectorTime *mtstime);
-
-/* Debugging function to dump information on all attendees. */
-#ifdef E_MEETING_TIME_SELECTOR_DEBUG
-void e_meeting_time_selector_dump (EMeetingTimeSelector *mts);
-gchar* e_meeting_time_selector_dump_time (EMeetingTimeSelectorTime *mtstime);
-gchar* e_meeting_time_selector_dump_date (GDate *date);
-#endif /* E_MEETING_TIME_SELECTOR_DEBUG */
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_MEETING_TIME_SELECTOR_H_ */
diff --git a/widgets/meeting-time-sel/test-meeting-time-sel.c b/widgets/meeting-time-sel/test-meeting-time-sel.c
deleted file mode 100644
index 78fdbf3b98..0000000000
--- a/widgets/meeting-time-sel/test-meeting-time-sel.c
+++ /dev/null
@@ -1,252 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@gtk.org>
- *
- * Copyright 1999, Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <time.h>
-#include <glib.h>
-#include <gtk/gtkmain.h>
-#include <gdk_imlib.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnomeui/gnome-dialog.h>
-#include <libgnomeui/gnome-init.h>
-#include <libgnomeui/gnome-stock.h>
-#include "e-meeting-time-sel.h"
-
-void add_random_attendee_test_data (EMeetingTimeSelector *mts);
-void add_simple_attendee_test_data (EMeetingTimeSelector *mts);
-gint get_random_int (gint max);
-
-int
-main (int argc, char *argv[])
-{
- GtkWidget *window, *mts;
- gint i;
-
- gnome_init ("test-meeting-time-selector", "0.1", argc, argv);
-
- gtk_widget_push_visual (gdk_imlib_get_visual ());
- gtk_widget_push_colormap (gdk_imlib_get_colormap ());
-
- window = gnome_dialog_new ("Plan a Meeting", "Make Meeting",
- GNOME_STOCK_BUTTON_CLOSE, NULL);
- gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
- gtk_window_set_policy (GTK_WINDOW (window), FALSE, TRUE, FALSE);
-
- mts = e_meeting_time_selector_new ();
- gtk_container_add (GTK_CONTAINER (GNOME_DIALOG (window)->vbox), mts);
- gtk_window_add_accel_group (GTK_WINDOW (window),
- E_MEETING_TIME_SELECTOR (mts)->accel_group);
- gtk_widget_show (mts);
-
- gtk_widget_pop_visual ();
- gtk_widget_pop_colormap ();
-
- i = 0;
-#if 1
- for (i = 0; i < 20; i++) {
- add_random_attendee_test_data (E_MEETING_TIME_SELECTOR (mts));
- }
-
- if (!e_meeting_time_selector_attendee_set_busy_range (E_MEETING_TIME_SELECTOR (mts), 3,
- 2000, 5, 1, 14, 0,
- 2000, 11, 1, 11, 30))
- g_print ("Error setting busy range\n");
-
-#else
- for (i = 0; i < 1; i++) {
- add_simple_attendee_test_data (E_MEETING_TIME_SELECTOR (mts));
- }
-#endif
-
-#if 0
- e_meeting_time_selector_dump (E_MEETING_TIME_SELECTOR (mts));
-#endif
-
- gnome_dialog_run (GNOME_DIALOG (window));
-
- gtk_main ();
- return 0;
-}
-
-
-/* Adds an attendee and a lot of random busy periods. The periods start 60
- days before the current date and extend over 365 days, to match the range
- that EMeetingTimeSelector currently displays. We generate a time_t and an
- interval and then convert them into a struct tm which provides everything
- we need. */
-void
-add_random_attendee_test_data (EMeetingTimeSelector *mts)
-{
- gchar buffer[128], *name;
- gint row, num_periods, busy_period, random_num, duration;
- EMeetingTimeSelectorAttendeeType type;
- EMeetingTimeSelectorBusyType busy_type;
- time_t range_start;
- time_t period_start;
- time_t period_end;
- struct tm *tmp_tm;
- struct tm tm1;
- struct tm tm2;
-
- /* Determine the type of attendee. */
- random_num = get_random_int (10);
- if (random_num < 4) {
- type = E_MEETING_TIME_SELECTOR_REQUIRED_PERSON;
- name = "Req. Attendee";
- } else if (random_num < 7) {
- type = E_MEETING_TIME_SELECTOR_OPTIONAL_PERSON;
- name = "Opt. Attendee";
- } else {
- type = E_MEETING_TIME_SELECTOR_RESOURCE;
- name = "Resource";
- }
-
- sprintf (buffer, "%s %i", name, mts->attendees->len + 1);
- row = e_meeting_time_selector_attendee_add (mts, buffer, NULL);
- e_meeting_time_selector_attendee_set_type (mts, row, type);
-
- /* Don't send the meeting request to some attendees. */
- if (get_random_int (10) <= 2)
- e_meeting_time_selector_attendee_set_send_meeting_to (mts, row,
- FALSE);
-
- /* Some attendees have no calendar information. */
- if (get_random_int (10) == 2)
- return;
-
- range_start = time (NULL) - 61 * 24 * 60 * 60;
- num_periods = get_random_int (1000);
-#if 0
- g_print ("num_periods: %i\n", num_periods);
-#endif
- for (busy_period = 0; busy_period < num_periods; busy_period++) {
-
- period_start = range_start + get_random_int (365 * 24 * 60 * 60);
-
- /* Make busy periods mainly 30 mins to a few hours, with a
- couple of week/fortnight periods as well. */
- random_num = get_random_int (10000);
- if (random_num < 2000)
- duration = 30;
- else if (random_num < 5000)
- duration = 60;
- else if (random_num < 7500)
- duration = 90;
- else if (random_num < 9995)
- duration = 120;
- else if (random_num < 9998)
- duration = 60 * 24 * 7;
- else
- duration = 60 * 24 * 14;
-#if 0
- g_print ("random_num: %i, duration: %i\n",
- random_num, duration);
-#endif
- period_end = period_start + duration * 60;
-
- tmp_tm = localtime (&period_start);
- tm1 = *tmp_tm;
- tmp_tm = localtime (&period_end);
- tm2 = *tmp_tm;
-
- /* A hack to avoid daylight-saving time problems. */
- if (tm2.tm_hour == tm1.tm_hour && tm2.tm_min < tm1.tm_min)
- tm2.tm_hour++;
-
- busy_type = get_random_int (E_MEETING_TIME_SELECTOR_BUSY_LAST);
-
- if (!e_meeting_time_selector_attendee_add_busy_period (mts, row, tm1.tm_year + 1900, tm1.tm_mon + 1, tm1.tm_mday, tm1.tm_hour, tm1.tm_min, tm2.tm_year + 1900, tm2.tm_mon + 1, tm2.tm_mday, tm2.tm_hour, tm2.tm_min, busy_type))
- {
- g_print ("Invalid busy period %i/%i/%i %i:%i to %i/%i/%i %i:%i\n", tm1.tm_year + 1900, tm1.tm_mon + 1, tm1.tm_mday, tm1.tm_hour, tm1.tm_min, tm2.tm_year + 1900, tm2.tm_mon + 1, tm2.tm_mday, tm2.tm_hour, tm2.tm_min);
- g_print ("random_num: %i, duration: %i\n",
- random_num, duration);
- }
- }
-}
-
-
-/* Returns a random integer between 0 and max - 1. */
-gint
-get_random_int (gint max)
-{
- gint random_num;
-
- random_num = (int) (max * (rand () / (RAND_MAX + 1.0)));
-#if 0
- g_print ("Random num (%i): %i\n", max, random_num);
-#endif
- return random_num;
-}
-
-
-void
-add_simple_attendee_test_data (EMeetingTimeSelector *mts)
-{
- gint row;
-
- row = e_meeting_time_selector_attendee_add (mts, "John Smith", NULL);
- if (!e_meeting_time_selector_attendee_add_busy_period (mts, row,
- 1999, 11, 7, 14, 30,
- 1999, 11, 7, 16, 30,
- E_MEETING_TIME_SELECTOR_BUSY_BUSY))
- g_warning ("Invalid busy period");
-
- e_meeting_time_selector_attendee_add_busy_period (mts, row,
- 1999, 11, 7, 10, 30,
- 1999, 11, 7, 11, 30,
- E_MEETING_TIME_SELECTOR_BUSY_OUT_OF_OFFICE);
- e_meeting_time_selector_attendee_add_busy_period (mts, row,
- 1999, 11, 4, 10, 30,
- 1999, 11, 7, 11, 30,
- E_MEETING_TIME_SELECTOR_BUSY_BUSY);
- row = e_meeting_time_selector_attendee_add (mts, "Dave Jones", NULL);
- e_meeting_time_selector_attendee_add_busy_period (mts, row,
- 1999, 11, 7, 15, 30,
- 1999, 11, 7, 18, 30,
- E_MEETING_TIME_SELECTOR_BUSY_TENTATIVE);
- e_meeting_time_selector_attendee_add_busy_period (mts, row,
- 1999, 11, 7, 11, 00,
- 1999, 11, 7, 12, 00,
- E_MEETING_TIME_SELECTOR_BUSY_BUSY);
-
- row = e_meeting_time_selector_attendee_add (mts, "Andrew Carlisle", NULL);
- e_meeting_time_selector_attendee_set_send_meeting_to (mts, row, FALSE);
-
- row = e_meeting_time_selector_attendee_add (mts, "Michael Cain", NULL);
- e_meeting_time_selector_attendee_add_busy_period (mts, row,
- 1999, 11, 7, 15, 30,
- 1999, 11, 7, 18, 30,
- E_MEETING_TIME_SELECTOR_BUSY_TENTATIVE);
- e_meeting_time_selector_attendee_add_busy_period (mts, row,
- 1999, 11, 7, 12, 30,
- 1999, 11, 7, 13, 30,
- E_MEETING_TIME_SELECTOR_BUSY_OUT_OF_OFFICE);
- e_meeting_time_selector_attendee_add_busy_period (mts, row,
- 1999, 11, 7, 11, 00,
- 1999, 11, 7, 12, 00,
- E_MEETING_TIME_SELECTOR_BUSY_TENTATIVE);
-}
diff --git a/widgets/menus/.cvsignore b/widgets/menus/.cvsignore
deleted file mode 100644
index 7708c3d120..0000000000
--- a/widgets/menus/.cvsignore
+++ /dev/null
@@ -1,8 +0,0 @@
-Makefile
-libmenus.la
-Makefile.in
-.deps
-.libs
-.pure
-*.o
-*.lo
diff --git a/widgets/menus/Makefile.am b/widgets/menus/Makefile.am
deleted file mode 100644
index 500f0672fc..0000000000
--- a/widgets/menus/Makefile.am
+++ /dev/null
@@ -1,11 +0,0 @@
-noinst_LTLIBRARIES = libmenus.la
-
-INCLUDES = \
- -I$(top_srcdir) \
- -I$(top_srcdir)/widgets/menus \
- $(EXTRA_GNOME_CFLAGS) \
- -DG_LOG_DOMAIN=\"menus\"
-
-libmenus_la_SOURCES = \
- gal-view-menus.c \
- gal-view-menus.h
diff --git a/widgets/menus/gal-define-views-dialog.c b/widgets/menus/gal-define-views-dialog.c
deleted file mode 100644
index 8ca28adfac..0000000000
--- a/widgets/menus/gal-define-views-dialog.c
+++ /dev/null
@@ -1,329 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* gal-define-views-dialog.c
- * Copyright (C) 2000 Helix Code, Inc.
- * Author: Chris Lahey <clahey@helixcode.com>
- *
- * This library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <libgnomeui/gnome-dialog.h>
-#include <libgnomeui/gnome-stock.h>
-#include "gal-define-views-dialog.h"
-#include "gal-define-views-model.h"
-#include "gal-view-new-dialog.h"
-#include <gal/e-table/e-table-scrolled.h>
-
-static void gal_define_views_dialog_init (GalDefineViewsDialog *card);
-static void gal_define_views_dialog_class_init (GalDefineViewsDialogClass *klass);
-static void gal_define_views_dialog_set_arg (GtkObject *o, GtkArg *arg, guint arg_id);
-static void gal_define_views_dialog_get_arg (GtkObject *object, GtkArg *arg, guint arg_id);
-static void gal_define_views_dialog_destroy (GtkObject *object);
-
-static GnomeDialogClass *parent_class = NULL;
-#define PARENT_TYPE gnome_dialog_get_type()
-
-/* The arguments we take */
-enum {
- ARG_0,
- ARG_COLLECTION,
-};
-
-typedef struct {
- char *title;
- ETableModel *model;
- GalDefineViewsDialog *names;
-} GalDefineViewsDialogChild;
-
-GtkType
-gal_define_views_dialog_get_type (void)
-{
- static GtkType type = 0;
-
- if (!type) {
- static const GtkTypeInfo info =
- {
- "GalDefineViewsDialog",
- sizeof (GalDefineViewsDialog),
- sizeof (GalDefineViewsDialogClass),
- (GtkClassInitFunc) gal_define_views_dialog_class_init,
- (GtkObjectInitFunc) gal_define_views_dialog_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- type = gtk_type_unique (PARENT_TYPE, &info);
- }
-
- return type;
-}
-
-static void
-gal_define_views_dialog_class_init (GalDefineViewsDialogClass *klass)
-{
- GtkObjectClass *object_class;
-
- object_class = (GtkObjectClass*) klass;
-
- parent_class = gtk_type_class (PARENT_TYPE);
-
- object_class->set_arg = gal_define_views_dialog_set_arg;
- object_class->get_arg = gal_define_views_dialog_get_arg;
- object_class->destroy = gal_define_views_dialog_destroy;
-
- gtk_object_add_arg_type("GalDefineViewsDialog::collection", GAL_VIEW_COLLECTION_TYPE,
- GTK_ARG_READWRITE, ARG_COLLECTION);
-}
-
-/* ETable creation */
-#define SPEC "<ETableSpecification cursor-mode=\"line\" draw-grid=\"true\" selection-mode=\"single\">" \
- "<ETableColumn model_col= \"0\" _title=\"Name\" expansion=\"1.0\" minimum_width=\"18\" resizable=\"true\" cell=\"string\" compare=\"string\"/>" \
- "<ETableState> <column source=\"0\"/> <grouping> </grouping> </ETableState>" \
- "</ETableSpecification>"
-
-/* For use from libglade. */
-GtkWidget *gal_define_views_dialog_create_etable(char *name, char *string1, char *string2, int int1, int int2);
-
-GtkWidget *
-gal_define_views_dialog_create_etable(char *name, char *string1, char *string2, int int1, int int2)
-{
- GtkWidget *table;
- ETableModel *model;
- model = gal_define_views_model_new();
- table = e_table_scrolled_new(model, NULL, SPEC, NULL);
- gtk_object_set_data(GTK_OBJECT(table), "GalDefineViewsDialog::model", model);
- return table;
-}
-
-/* Button callbacks */
-
-static void
-gdvd_button_new_dialog_callback(GtkWidget *widget, int button, GalDefineViewsDialog *dialog)
-{
- gchar *name;
- GalView *view;
- GalViewFactory *factory;
- switch (button) {
- case 0:
- gtk_object_get(GTK_OBJECT(widget),
- "name", &name,
- "factory", &factory,
- NULL);
- if (name && factory) {
- view = gal_view_factory_new_view(factory,
- name);
- gal_define_views_model_append(GAL_DEFINE_VIEWS_MODEL(dialog->model), view);
- gtk_object_unref(GTK_OBJECT(view));
- }
- break;
- }
- gnome_dialog_close(GNOME_DIALOG(widget));
-}
-
-static void
-gdvd_button_new_callback(GtkWidget *widget, GalDefineViewsDialog *dialog)
-{
- GtkWidget *view_new_dialog = gal_view_new_dialog_new(dialog->collection);
- gtk_signal_connect(GTK_OBJECT(view_new_dialog), "clicked",
- GTK_SIGNAL_FUNC(gdvd_button_new_dialog_callback), dialog);
- gtk_widget_show(GTK_WIDGET(view_new_dialog));
-}
-
-static void
-gdvd_button_modify_callback(GtkWidget *widget, GalDefineViewsDialog *dialog)
-{
- int row;
- GtkWidget *scrolled;
- ETable *etable;
-
- scrolled = glade_xml_get_widget(dialog->gui, "custom-table");
- etable = e_table_scrolled_get_table(E_TABLE_SCROLLED(scrolled));
- row = e_table_get_cursor_row (E_TABLE(etable));
-
- if (row != -1) {
- GalView *view;
- view = gal_define_views_model_get_view(GAL_DEFINE_VIEWS_MODEL(dialog->model),
- row);
- gal_view_edit(view);
- }
-
-}
-
-static void
-gdvd_button_delete_callback(GtkWidget *widget, GalDefineViewsDialog *dialog)
-{
- int row;
- GtkWidget *scrolled;
- ETable *etable;
-
- scrolled = glade_xml_get_widget(dialog->gui, "custom-table");
- etable = e_table_scrolled_get_table(E_TABLE_SCROLLED(scrolled));
- row = e_table_get_cursor_row (E_TABLE(etable));
-
- if (row != -1) {
- gal_define_views_model_delete_view(GAL_DEFINE_VIEWS_MODEL(dialog->model),
- row);
- }
-
-}
-
-static void
-gdvd_button_copy_callback(GtkWidget *widget, GalDefineViewsDialog *dialog)
-{
- int row;
- GtkWidget *scrolled;
- ETable *etable;
-
- scrolled = glade_xml_get_widget(dialog->gui, "custom-table");
- etable = e_table_scrolled_get_table(E_TABLE_SCROLLED(scrolled));
- row = e_table_get_cursor_row (E_TABLE(etable));
-
- if (row != -1) {
- gal_define_views_model_copy_view(GAL_DEFINE_VIEWS_MODEL(dialog->model),
- row);
- }
-
-}
-
-static void
-gdvd_connect_signal(GalDefineViewsDialog *dialog, char *widget_name, char *signal, GtkSignalFunc handler)
-{
- GtkWidget *widget;
-
- widget = glade_xml_get_widget(dialog->gui, widget_name);
-
- if (widget)
- gtk_signal_connect(GTK_OBJECT(widget), signal, handler, dialog);
-}
-
-static void
-gal_define_views_dialog_init (GalDefineViewsDialog *dialog)
-{
- GladeXML *gui;
- GtkWidget *widget;
- GtkWidget *etable;
-
- dialog->collection = NULL;
-
- gui = glade_xml_new_with_domain (GAL_GLADEDIR "/gal-define-views.glade", NULL, PACKAGE);
- dialog->gui = gui;
-
- widget = glade_xml_get_widget(gui, "table-top");
- if (!widget) {
- return;
- }
- gtk_widget_ref(widget);
- gtk_widget_unparent(widget);
- gtk_box_pack_start(GTK_BOX(GNOME_DIALOG(dialog)->vbox), widget, TRUE, TRUE, 0);
- gtk_widget_unref(widget);
-
- gnome_dialog_append_buttons(GNOME_DIALOG(dialog),
- GNOME_STOCK_BUTTON_OK,
- GNOME_STOCK_BUTTON_CANCEL,
- NULL);
-
- gdvd_connect_signal(dialog, "button-new", "clicked", GTK_SIGNAL_FUNC(gdvd_button_new_callback));
- gdvd_connect_signal(dialog, "button-modify", "clicked", GTK_SIGNAL_FUNC(gdvd_button_modify_callback));
- gdvd_connect_signal(dialog, "button-delete", "clicked", GTK_SIGNAL_FUNC(gdvd_button_delete_callback));
- gdvd_connect_signal(dialog, "button-copy", "clicked", GTK_SIGNAL_FUNC(gdvd_button_copy_callback));
-
- dialog->model = NULL;
- etable = glade_xml_get_widget(dialog->gui, "custom-table");
- if (etable) {
- dialog->model = gtk_object_get_data(GTK_OBJECT(etable), "GalDefineViewsDialog::model");
- gtk_object_set(GTK_OBJECT(dialog->model),
- "collection", dialog->collection,
- NULL);
- }
-
- gtk_window_set_policy(GTK_WINDOW(dialog), FALSE, TRUE, FALSE);
-}
-
-static void
-gal_define_views_dialog_destroy (GtkObject *object) {
- GalDefineViewsDialog *gal_define_views_dialog = GAL_DEFINE_VIEWS_DIALOG(object);
-
- gtk_object_unref(GTK_OBJECT(gal_define_views_dialog->gui));
-}
-
-static void
-gal_define_views_dialog_set_collection(GalDefineViewsDialog *dialog,
- GalViewCollection *collection)
-{
- dialog->collection = collection;
- if (dialog->model) {
- gtk_object_set(GTK_OBJECT(dialog->model),
- "collection", collection,
- NULL);
- }
-}
-
-/**
- * gal_define_views_dialog_new
- *
- * Returns a new dialog for defining views.
- *
- * Returns: The GalDefineViewsDialog.
- */
-GtkWidget*
-gal_define_views_dialog_new (GalViewCollection *collection)
-{
- GtkWidget *widget = GTK_WIDGET (gtk_type_new (gal_define_views_dialog_get_type ()));
- gal_define_views_dialog_set_collection(GAL_DEFINE_VIEWS_DIALOG (widget), collection);
- return widget;
-}
-
-static void
-gal_define_views_dialog_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- GalDefineViewsDialog *dialog;
-
- dialog = GAL_DEFINE_VIEWS_DIALOG (o);
-
- switch (arg_id){
- case ARG_COLLECTION:
- if (GTK_VALUE_OBJECT(*arg))
- gal_define_views_dialog_set_collection(dialog, GAL_VIEW_COLLECTION(GTK_VALUE_OBJECT(*arg)));
- else
- gal_define_views_dialog_set_collection(dialog, NULL);
- break;
-
- default:
- return;
- }
-}
-
-static void
-gal_define_views_dialog_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- GalDefineViewsDialog *dialog;
-
- dialog = GAL_DEFINE_VIEWS_DIALOG (object);
-
- switch (arg_id) {
- case ARG_COLLECTION:
- if (dialog->collection)
- GTK_VALUE_OBJECT(*arg) = GTK_OBJECT(dialog->collection);
- else
- GTK_VALUE_OBJECT(*arg) = NULL;
- break;
-
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
diff --git a/widgets/menus/gal-define-views-dialog.h b/widgets/menus/gal-define-views-dialog.h
deleted file mode 100644
index 27ed2d257b..0000000000
--- a/widgets/menus/gal-define-views-dialog.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* gal-define-views-dialog.h
- * Copyright (C) 2000 Helix Code, Inc.
- * Author: Chris Lahey <clahey@helixcode.com>
- *
- * This library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-#ifndef __GAL_DEFINE_VIEWS_DIALOG_H__
-#define __GAL_DEFINE_VIEWS_DIALOG_H__
-
-#include <libgnomeui/gnome-dialog.h>
-#include <glade/glade.h>
-#include <gal/e-table/e-table-model.h>
-#include <gal/menus/gal-view-collection.h>
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-/* GalDefineViewsDialog - A dialog displaying information about a contact.
- *
- * The following arguments are available:
- *
- * name type read/write description
- * --------------------------------------------------------------------------------
- */
-
-#define GAL_DEFINE_VIEWS_DIALOG_TYPE (gal_define_views_dialog_get_type ())
-#define GAL_DEFINE_VIEWS_DIALOG(obj) (GTK_CHECK_CAST ((obj), GAL_DEFINE_VIEWS_DIALOG_TYPE, GalDefineViewsDialog))
-#define GAL_DEFINE_VIEWS_DIALOG_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GAL_DEFINE_VIEWS_DIALOG_TYPE, GalDefineViewsDialogClass))
-#define GAL_IS_DEFINE_VIEWS_DIALOG(obj) (GTK_CHECK_TYPE ((obj), GAL_DEFINE_VIEWS_DIALOG_TYPE))
-#define GAL_IS_DEFINE_VIEWS_DIALOG_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), GAL_DEFINE_VIEWS_DIALOG_TYPE))
-
-typedef struct _GalDefineViewsDialog GalDefineViewsDialog;
-typedef struct _GalDefineViewsDialogClass GalDefineViewsDialogClass;
-
-struct _GalDefineViewsDialog
-{
- GnomeDialog parent;
-
- /* item specific fields */
- GladeXML *gui;
- ETableModel *model;
-
- GalViewCollection *collection;
-};
-
-struct _GalDefineViewsDialogClass
-{
- GnomeDialogClass parent_class;
-};
-
-GtkWidget *gal_define_views_dialog_new (GalViewCollection *collection);
-GtkType gal_define_views_dialog_get_type (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* __GAL_DEFINE_VIEWS_DIALOG_H__ */
diff --git a/widgets/menus/gal-define-views-model.c b/widgets/menus/gal-define-views-model.c
deleted file mode 100644
index 103b46af5c..0000000000
--- a/widgets/menus/gal-define-views-model.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- *
- * Author:
- * Christopher James Lahey <clahey@helixcode.com>
- *
- * (C) 1999 Helix Code, Inc.
- */
-
-#include <config.h>
-#include <gnome-xml/tree.h>
-#include <gnome-xml/parser.h>
-#include <gnome-xml/xmlmemory.h>
-#include "gal-define-views-model.h"
-
-#define PARENT_TYPE e_table_model_get_type()
-static ETableModelClass *parent_class;
-
-/*
- * GalDefineViewsModel callbacks
- * These are the callbacks that define the behavior of our custom model.
- */
-static void gal_define_views_model_set_arg (GtkObject *o, GtkArg *arg, guint arg_id);
-static void gal_define_views_model_get_arg (GtkObject *object, GtkArg *arg, guint arg_id);
-
-
-enum {
- ARG_0,
- ARG_EDITABLE,
- ARG_COLLECTION
-};
-
-static void
-gdvm_destroy(GtkObject *object)
-{
- GalDefineViewsModel *model = GAL_DEFINE_VIEWS_MODEL(object);
-
- gtk_object_unref(GTK_OBJECT(model->collection));
-}
-
-/* This function returns the number of columns in our ETableModel. */
-static int
-gdvm_col_count (ETableModel *etc)
-{
- return 1;
-}
-
-/* This function returns the number of rows in our ETableModel. */
-static int
-gdvm_row_count (ETableModel *etc)
-{
- GalDefineViewsModel *views = GAL_DEFINE_VIEWS_MODEL(etc);
- if (views->collection)
- return gal_view_collection_get_count(views->collection);
- else
- return 0;
-}
-
-/* This function returns the value at a particular point in our ETableModel. */
-static void *
-gdvm_value_at (ETableModel *etc, int col, int row)
-{
- GalDefineViewsModel *views = GAL_DEFINE_VIEWS_MODEL(etc);
- const char *value;
-
- value = gal_view_get_title (gal_view_collection_get_view(views->collection, row));
-
- return (void *)(value ? value : "");
-}
-
-/* This function sets the value at a particular point in our ETableModel. */
-static void
-gdvm_set_value_at (ETableModel *etc, int col, int row, const void *val)
-{
- GalDefineViewsModel *views = GAL_DEFINE_VIEWS_MODEL(etc);
- if (views->editable) {
- gal_view_set_title(gal_view_collection_get_view(views->collection, row), val);
- e_table_model_cell_changed(etc, col, row);
- }
-}
-
-/* This function returns whether a particular cell is editable. */
-static gboolean
-gdvm_is_cell_editable (ETableModel *etc, int col, int row)
-{
- return GAL_DEFINE_VIEWS_MODEL(etc)->editable;
-}
-
-static void
-gdvm_append_row (ETableModel *etm, ETableModel *source, gint row)
-{
-}
-
-/* This function duplicates the value passed to it. */
-static void *
-gdvm_duplicate_value (ETableModel *etc, int col, const void *value)
-{
- return g_strdup(value);
-}
-
-/* This function frees the value passed to it. */
-static void
-gdvm_free_value (ETableModel *etc, int col, void *value)
-{
- g_free(value);
-}
-
-static void *
-gdvm_initialize_value (ETableModel *etc, int col)
-{
- return g_strdup("");
-}
-
-static gboolean
-gdvm_value_is_empty (ETableModel *etc, int col, const void *value)
-{
- return !(value && *(char *)value);
-}
-
-static char *
-gdvm_value_to_string (ETableModel *etc, int col, const void *value)
-{
- return g_strdup(value);
-}
-
-/**
- * gal_define_views_model_append
- * @model: The model to add to.
- * @view: The view to add.
- *
- * Adds the given view to the gal define views model.
- */
-void
-gal_define_views_model_append (GalDefineViewsModel *model,
- GalView *view)
-{
- ETableModel *etm = E_TABLE_MODEL(model);
-
- e_table_model_pre_change(etm);
- gal_view_collection_append(model->collection, view);
- e_table_model_row_inserted(etm, gal_view_collection_get_count(model->collection) - 1);
-}
-
-static void
-gal_define_views_model_class_init (GtkObjectClass *object_class)
-{
- ETableModelClass *model_class = (ETableModelClass *) object_class;
-
- parent_class = gtk_type_class (PARENT_TYPE);
-
- object_class->destroy = gdvm_destroy;
- object_class->set_arg = gal_define_views_model_set_arg;
- object_class->get_arg = gal_define_views_model_get_arg;
-
- gtk_object_add_arg_type ("GalDefineViewsModel::editable", GTK_TYPE_BOOL,
- GTK_ARG_READWRITE, ARG_EDITABLE);
- gtk_object_add_arg_type ("GalDefineViewsModel::collection", GAL_VIEW_COLLECTION_TYPE,
- GTK_ARG_READWRITE, ARG_COLLECTION);
-
- model_class->column_count = gdvm_col_count;
- model_class->row_count = gdvm_row_count;
- model_class->value_at = gdvm_value_at;
- model_class->set_value_at = gdvm_set_value_at;
- model_class->is_cell_editable = gdvm_is_cell_editable;
- model_class->append_row = gdvm_append_row;
- model_class->duplicate_value = gdvm_duplicate_value;
- model_class->free_value = gdvm_free_value;
- model_class->initialize_value = gdvm_initialize_value;
- model_class->value_is_empty = gdvm_value_is_empty;
- model_class->value_to_string = gdvm_value_to_string;
-}
-
-static void
-gal_define_views_model_init (GtkObject *object)
-{
- GalDefineViewsModel *model = GAL_DEFINE_VIEWS_MODEL(object);
-
- model->collection = NULL;
-}
-
-static void
-gal_define_views_model_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- GalDefineViewsModel *model;
-
- model = GAL_DEFINE_VIEWS_MODEL (o);
-
- switch (arg_id){
- case ARG_EDITABLE:
- model->editable = GTK_VALUE_BOOL (*arg);
- break;
-
- case ARG_COLLECTION:
- if (GTK_VALUE_OBJECT (*arg))
- model->collection = GAL_VIEW_COLLECTION(GTK_VALUE_OBJECT (*arg));
- else
- model->collection = NULL;
- e_table_model_changed(E_TABLE_MODEL(o));
- break;
- }
-}
-
-static void
-gal_define_views_model_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- GalDefineViewsModel *model;
-
- model = GAL_DEFINE_VIEWS_MODEL (object);
-
- switch (arg_id) {
- case ARG_EDITABLE:
- GTK_VALUE_BOOL (*arg) = model->editable;
- break;
-
- case ARG_COLLECTION:
- if (model->collection)
- GTK_VALUE_OBJECT (*arg) = GTK_OBJECT(model->collection);
- else
- GTK_VALUE_OBJECT (*arg) = NULL;
- break;
-
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
-
-GtkType
-gal_define_views_model_get_type (void)
-{
- static GtkType type = 0;
-
- if (!type){
- GtkTypeInfo info = {
- "GalDefineViewsModel",
- sizeof (GalDefineViewsModel),
- sizeof (GalDefineViewsModelClass),
- (GtkClassInitFunc) gal_define_views_model_class_init,
- (GtkObjectInitFunc) gal_define_views_model_init,
- NULL, /* reserved 1 */
- NULL, /* reserved 2 */
- (GtkClassInitFunc) NULL
- };
-
- type = gtk_type_unique (PARENT_TYPE, &info);
- }
-
- return type;
-}
-
-/**
- * gal_define_views_model_new
- *
- * Returns a new define views model. This is a list of views as an
- * ETable for use in the GalDefineViewsDialog.
- *
- * Returns: The new GalDefineViewsModel.
- */
-ETableModel *
-gal_define_views_model_new (void)
-{
- GalDefineViewsModel *et;
-
- et = gtk_type_new (gal_define_views_model_get_type ());
-
- return E_TABLE_MODEL(et);
-}
-
-/**
- * gal_define_views_model_get_view:
- * @model: The GalDefineViewsModel.
- * @n: Which view to get.
- *
- * Gets the nth view.
- *
- * Returns: The view.
- */
-GalView *
-gal_define_views_model_get_view (GalDefineViewsModel *model,
- int n)
-{
- return gal_view_collection_get_view(model->collection, n);
-}
-
-/**
- * gal_define_views_model_delete_view:
- * @model: The GalDefineViewsModel.
- * @n: Which view to delete.
- *
- * Deletes the nth view.
- */
-void
-gal_define_views_model_delete_view (GalDefineViewsModel *model,
- int n)
-{
- e_table_model_pre_change(E_TABLE_MODEL(model));
- gal_view_collection_delete_view(model->collection, n);
- e_table_model_row_deleted(E_TABLE_MODEL(model), n);
-}
-
-/**
- * gal_define_views_model_copy_view:
- * @model: The GalDefineViewsModel.
- * @n: Which view to copy.
- *
- * Copys the nth view.
- */
-void
-gal_define_views_model_copy_view (GalDefineViewsModel *model,
- int n)
-{
- ETableModel *etm = E_TABLE_MODEL(model);
- gal_view_collection_copy_view(model->collection, n);
- e_table_model_row_inserted(etm, gal_view_collection_get_count(model->collection) - 1);
-}
diff --git a/widgets/menus/gal-define-views-model.h b/widgets/menus/gal-define-views-model.h
deleted file mode 100644
index 4aac712df6..0000000000
--- a/widgets/menus/gal-define-views-model.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _GAL_DEFINE_VIEWS_MODEL_H_
-#define _GAL_DEFINE_VIEWS_MODEL_H_
-
-#include <gal/e-table/e-table-model.h>
-#include <gal/menus/gal-view.h>
-#include <gal/menus/gal-view-collection.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define GAL_DEFINE_VIEWS_MODEL_TYPE (gal_define_views_model_get_type ())
-#define GAL_DEFINE_VIEWS_MODEL(o) (GTK_CHECK_CAST ((o), GAL_DEFINE_VIEWS_MODEL_TYPE, GalDefineViewsModel))
-#define GAL_DEFINE_VIEWS_MODEL_CLASS(k) (GTK_CHECK_CLASS_CAST((k), GAL_DEFINE_VIEWS_MODEL_TYPE, GalDefineViewsModelClass))
-#define GAL_IS_DEFINE_VIEWS_MODEL(o) (GTK_CHECK_TYPE ((o), GAL_DEFINE_VIEWS_MODEL_TYPE))
-#define GAL_IS_DEFINE_VIEWS_MODEL_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), GAL_DEFINE_VIEWS_MODEL_TYPE))
-
-typedef struct {
- ETableModel parent;
-
- /* item specific fields */
- GalViewCollection *collection;
-
- guint editable : 1;
-} GalDefineViewsModel;
-
-
-typedef struct {
- ETableModelClass parent_class;
-} GalDefineViewsModelClass;
-
-
-GtkType gal_define_views_model_get_type (void);
-ETableModel *gal_define_views_model_new (void);
-
-void gal_define_views_model_append (GalDefineViewsModel *model,
- GalView *view);
-GalView *gal_define_views_model_get_view (GalDefineViewsModel *model,
- int i);
-void gal_define_views_model_delete_view (GalDefineViewsModel *model,
- int i);
-void gal_define_views_model_copy_view (GalDefineViewsModel *model,
- int i);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _GAL_DEFINE_VIEWS_MODEL_H_ */
diff --git a/widgets/menus/gal-define-views.glade b/widgets/menus/gal-define-views.glade
deleted file mode 100644
index b393d97d2e..0000000000
--- a/widgets/menus/gal-define-views.glade
+++ /dev/null
@@ -1,311 +0,0 @@
-<?xml version="1.0"?>
-<GTK-Interface>
-
-<project>
- <name>gal-define-views</name>
- <program_name>gal-define-views</program_name>
- <directory></directory>
- <source_directory>src</source_directory>
- <pixmaps_directory>pixmaps</pixmaps_directory>
- <language>C</language>
- <gnome_support>True</gnome_support>
- <gettext_support>True</gettext_support>
- <use_widget_names>True</use_widget_names>
- <output_main_file>False</output_main_file>
- <output_support_files>False</output_support_files>
- <output_build_files>False</output_build_files>
- <gnome_help_support>True</gnome_help_support>
-</project>
-
-<widget>
- <class>GnomeDialog</class>
- <name>dialog1</name>
- <visible>False</visible>
- <title>Define Views for &quot;%s&quot;</title>
- <type>GTK_WINDOW_TOPLEVEL</type>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>True</allow_grow>
- <auto_shrink>False</auto_shrink>
- <auto_close>False</auto_close>
- <hide_on_close>False</hide_on_close>
-
- <widget>
- <class>GtkVBox</class>
- <child_name>GnomeDialog:vbox</child_name>
- <name>dialog-vbox1</name>
- <homogeneous>False</homogeneous>
- <spacing>8</spacing>
- <child>
- <padding>4</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHButtonBox</class>
- <child_name>GnomeDialog:action_area</child_name>
- <name>dialog-action_area1</name>
- <layout_style>GTK_BUTTONBOX_END</layout_style>
- <spacing>8</spacing>
- <child_min_width>85</child_min_width>
- <child_min_height>27</child_min_height>
- <child_ipad_x>7</child_ipad_x>
- <child_ipad_y>0</child_ipad_y>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- <pack>GTK_PACK_END</pack>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>button1</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button7</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
- </widget>
- </widget>
-
- <widget>
- <class>GtkTable</class>
- <name>table-top</name>
- <rows>5</rows>
- <columns>1</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>6</row_spacing>
- <column_spacing>6</column_spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame1</name>
- <label>Description</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>3</top_attach>
- <bottom_attach>4</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkTable</class>
- <name>table-description</name>
- <border_width>6</border_width>
- <rows>1</rows>
- <columns>2</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>6</row_spacing>
- <column_spacing>6</column_spacing>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox1</name>
- <homogeneous>False</homogeneous>
- <spacing>6</spacing>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>True</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>Custom</class>
- <name>custom-table</name>
- <creation_function>gal_define_views_dialog_create_etable</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Fri, 10 Nov 2000 16:37:39 GMT</last_modification_time>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox1</name>
- <homogeneous>False</homogeneous>
- <spacing>6</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>button-new</name>
- <can_focus>True</can_focus>
- <label>_New...</label>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button-copy</name>
- <can_focus>True</can_focus>
- <label>_Copy...</label>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button-modify</name>
- <can_focus>True</can_focus>
- <label>_Edit...</label>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button-delete</name>
- <can_focus>True</can_focus>
- <label>_Delete...</label>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHButtonBox</class>
- <name>hbuttonbox1</name>
- <layout_style>GTK_BUTTONBOX_END</layout_style>
- <spacing>6</spacing>
- <child_min_width>85</child_min_width>
- <child_min_height>27</child_min_height>
- <child_ipad_x>7</child_ipad_x>
- <child_ipad_y>0</child_ipad_y>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>4</top_attach>
- <bottom_attach>5</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkAlignment</class>
- <name>alignment3</name>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xscale>0</xscale>
- <yscale>1</yscale>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>2</top_attach>
- <bottom_attach>3</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>button-reset</name>
- <can_focus>True</can_focus>
- <label>Re_set to Factory Defaults...</label>
- <relief>GTK_RELIEF_NORMAL</relief>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label-views</name>
- <label>Views for &quot;%s&quot;</label>
- <justify>GTK_JUSTIFY_LEFT</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
- </widget>
- </widget>
-</widget>
-
-</GTK-Interface>
diff --git a/widgets/menus/gal-view-collection.c b/widgets/menus/gal-view-collection.c
deleted file mode 100644
index 1935688408..0000000000
--- a/widgets/menus/gal-view-collection.c
+++ /dev/null
@@ -1,578 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * gal-view-collection.c: a View Collection
- *
- * Authors:
- * Chris Lahey (clahey@helixcode.com)
- *
- * (C) 1999, 2000 Helix Code, Inc.
- */
-#include <config.h>
-
-#include <util/e-i18n.h>
-#include <ctype.h>
-#include <string.h>
-#include <gtk/gtksignal.h>
-#include <gnome-xml/parser.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-util.h>
-#include <gal/util/e-util.h>
-#include <gal/util/e-xml-utils.h>
-#include <gal/widgets/e-unicode.h>
-#include "gal-view-collection.h"
-
-#define GVC_CLASS(e) ((GalViewCollectionClass *)((GtkObject *)e)->klass)
-
-#define PARENT_TYPE gtk_object_get_type ()
-
-static GtkObjectClass *gal_view_collection_parent_class;
-
-enum {
- DISPLAY_VIEW,
- CHANGED,
- LAST_SIGNAL
-};
-
-static guint gal_view_collection_signals [LAST_SIGNAL] = { 0, };
-
-/**
- * gal_view_collection_display_view:
- * @collection: The GalViewCollection to send the signal on.
- * @view: The view to display.
- *
- */
-void
-gal_view_collection_display_view (GalViewCollection *collection,
- GalView *view)
-{
- g_return_if_fail (collection != NULL);
- g_return_if_fail (GAL_IS_VIEW_COLLECTION (collection));
-
- gtk_signal_emit (GTK_OBJECT (collection),
- gal_view_collection_signals [DISPLAY_VIEW],
- view);
-}
-
-static void
-gal_view_collection_changed (GalViewCollection *collection)
-{
- g_return_if_fail (collection != NULL);
- g_return_if_fail (GAL_IS_VIEW_COLLECTION (collection));
-
- gtk_signal_emit (GTK_OBJECT (collection),
- gal_view_collection_signals [CHANGED]);
-}
-
-static void
-gal_view_collection_item_free (GalViewCollectionItem *item)
-{
- g_free(item->id);
- if (item->view)
- gtk_object_unref(GTK_OBJECT(item->view));
- g_free(item);
-}
-
-static void
-gal_view_collection_destroy (GtkObject *object)
-{
- GalViewCollection *collection = GAL_VIEW_COLLECTION(object);
- int i;
-
- for (i = 0; i < collection->view_count; i++) {
- gal_view_collection_item_free (collection->view_data[i]);
- }
- g_free(collection->view_data);
- e_free_object_list(collection->factory_list);
-
- for (i = 0; i < collection->removed_view_count; i++) {
- gal_view_collection_item_free (collection->removed_view_data[i]);
- }
- g_free(collection->removed_view_data);
-
- g_free(collection->system_dir);
- g_free(collection->local_dir);
-
- if (gal_view_collection_parent_class->destroy)
- (*gal_view_collection_parent_class->destroy)(object);
-}
-
-static void
-gal_view_collection_class_init (GtkObjectClass *object_class)
-{
- GalViewCollectionClass *klass = GAL_VIEW_COLLECTION_CLASS(object_class);
- gal_view_collection_parent_class = gtk_type_class (PARENT_TYPE);
-
- object_class->destroy = gal_view_collection_destroy;
-
- gal_view_collection_signals [DISPLAY_VIEW] =
- gtk_signal_new ("display_view",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (GalViewCollectionClass, display_view),
- gtk_marshal_NONE__OBJECT,
- GTK_TYPE_NONE, 1, GAL_VIEW_TYPE);
-
- gal_view_collection_signals [CHANGED] =
- gtk_signal_new ("changed",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (GalViewCollectionClass, changed),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- gtk_object_class_add_signals (object_class, gal_view_collection_signals, LAST_SIGNAL);
-
- klass->display_view = NULL;
- klass->changed = NULL;
-}
-
-static void
-gal_view_collection_init (GalViewCollection *collection)
-{
- collection->view_data = NULL;
- collection->view_count = 0;
- collection->factory_list = NULL;
-
- collection->removed_view_data = NULL;
- collection->removed_view_count = 0;
-
- collection->system_dir = NULL;
- collection->local_dir = NULL;
-}
-
-/**
- * gal_view_collection_get_type:
- *
- */
-guint
-gal_view_collection_get_type (void)
-{
- static guint type = 0;
-
- if (!type)
- {
- GtkTypeInfo info =
- {
- "GalViewCollection",
- sizeof (GalViewCollection),
- sizeof (GalViewCollectionClass),
- (GtkClassInitFunc) gal_view_collection_class_init,
- (GtkObjectInitFunc) gal_view_collection_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- type = gtk_type_unique (PARENT_TYPE, &info);
- }
-
- return type;
-}
-
-/**
- * gal_view_collection_new:
- *
- * A collection of views and view factories.
- */
-GalViewCollection *
-gal_view_collection_new (void)
-{
- return gtk_type_new(gal_view_collection_get_type());
-}
-
-/**
- * gal_view_collection_set_storage_directories
- * @collection: The view collection to initialize
- * @system_dir: The location of the system built in views
- * @local_dir: The location to store the users set up views
- *
- * Sets up the GalViewCollection.
- */
-void
-gal_view_collection_set_storage_directories (GalViewCollection *collection,
- const char *system_dir,
- const char *local_dir)
-{
- g_free(collection->system_dir);
- g_free(collection->local_dir);
-
- collection->system_dir = g_strdup(system_dir);
- collection->local_dir = g_strdup(local_dir);
-}
-
-/**
- * gal_view_collection_add_factory
- * @collection: The view collection to add a factory to
- * @factory: The factory to add
- *
- * Adds the given factory to this collection. This list is used both
- * when loading views from their xml description as well as when the
- * user tries to create a new view.
- */
-void
-gal_view_collection_add_factory (GalViewCollection *collection,
- GalViewFactory *factory)
-{
- gtk_object_ref(GTK_OBJECT(factory));
- collection->factory_list = g_list_prepend(collection->factory_list, factory);
-}
-
-static void
-view_changed (GalView *view,
- GalViewCollectionItem *item)
-{
- item->changed = TRUE;
- item->ever_changed = TRUE;
-
- gal_view_collection_changed(item->collection);
-}
-
-static GalViewCollectionItem *
-load_single_file (GalViewCollection *collection,
- gchar *dir,
- gboolean local,
- xmlNode *node)
-{
- GalViewCollectionItem *item;
- item = g_new(GalViewCollectionItem, 1);
- item->ever_changed = local;
- item->changed = FALSE;
- item->built_in = !local;
- item->id = e_xml_get_string_prop_by_name(node, "id");
- item->filename = e_xml_get_string_prop_by_name(node, "filename");
- item->title = e_xml_get_translated_utf8_string_prop_by_name(node, "title");
- item->type = e_xml_get_string_prop_by_name(node, "type");
- item->collection = collection;
-
- if (item->filename) {
- GalViewFactory *factory;
- GList *factories;
-
- factory = NULL;
- for (factories = collection->factory_list; factories; factories = factories->next) {
- if (!strcmp(gal_view_factory_get_type_code(factories->data), item->type)) {
- factory = factories->data;
- break;
- }
- }
- if (factory) {
- char *filename;
-
- filename = g_concat_dir_and_file(dir, item->filename);
- item->view = gal_view_factory_new_view (factory, item->title);
- gal_view_load(item->view, filename);
- gal_view_set_title (item->view, item->title);
- gtk_signal_connect(GTK_OBJECT(item->view), "changed",
- GTK_SIGNAL_FUNC(view_changed), item);
- g_free(filename);
- }
-
- }
- return item;
-}
-
-static void
-load_single_dir (GalViewCollection *collection,
- char *dir,
- gboolean local)
-{
- xmlDoc *doc;
- xmlNode *root;
- xmlNode *child;
- char *filename = g_concat_dir_and_file(dir, "galview.xml");
-
- doc = xmlParseFile(filename);
- if (!doc) {
- g_free (filename);
- return;
- }
- root = xmlDocGetRootElement(doc);
- for (child = root->xmlChildrenNode; child; child = child->next) {
- gchar *id = e_xml_get_string_prop_by_name(child, "id");
- gboolean found = FALSE;
- int i;
-
- for (i = 0; i < collection->view_count; i++) {
- if (!strcmp(id, collection->view_data[i]->id)) {
- if (!local)
- collection->view_data[i]->built_in = TRUE;
- found = TRUE;
- break;
- }
- }
- if (!found) {
- for (i = 0; i < collection->removed_view_count; i++) {
- if (!strcmp(id, collection->removed_view_data[i]->id)) {
- if (!local)
- collection->removed_view_data[i]->built_in = TRUE;
- found = TRUE;
- break;
- }
- }
- }
-
- if (!found) {
- GalViewCollectionItem *item = load_single_file (collection, dir, local, child);
- if (item->filename && *item->filename) {
- collection->view_data = g_renew(GalViewCollectionItem *, collection->view_data, collection->view_count + 1);
- collection->view_data[collection->view_count] = item;
- collection->view_count ++;
- } else {
- collection->removed_view_data = g_renew(GalViewCollectionItem *, collection->removed_view_data, collection->removed_view_count + 1);
- collection->removed_view_data[collection->removed_view_count] = item;
- collection->removed_view_count ++;
- }
- }
- g_free(id);
- }
-
- g_free(filename);
- xmlFreeDoc(doc);
-}
-
-/**
- * gal_view_collection_load
- * @collection: The view collection to load information for
- *
- * Loads the data from the system and user directories specified in
- * set storage directories. This is primarily for internal use by
- * other parts of gal_view.
- */
-void
-gal_view_collection_load (GalViewCollection *collection)
-{
- load_single_dir(collection, collection->local_dir, TRUE);
- load_single_dir(collection, collection->system_dir, FALSE);
-}
-
-/**
- * gal_view_collection_save
- * @collection: The view collection to save information for
- *
- * Saves the data to the user directory specified in set storage
- * directories. This is primarily for internal use by other parts of
- * gal_view.
- */
-void
-gal_view_collection_save (GalViewCollection *collection)
-{
- int i;
- xmlDoc *doc;
- xmlNode *root;
- char *filename;
-
- e_create_directory(collection->local_dir);
-
- doc = xmlNewDoc("1.0");
- root = xmlNewNode(NULL, "GalViewCollection");
- xmlDocSetRootElement(doc, root);
- for (i = 0; i < collection->view_count; i++) {
- xmlNode *child;
- GalViewCollectionItem *item;
-
- item = collection->view_data[i];
- if (item->ever_changed) {
- child = xmlNewChild(root, NULL, "GalView", NULL);
- e_xml_set_string_prop_by_name(child, "id", item->id);
- e_xml_set_string_prop_by_name(child, "title", item->title);
- e_xml_set_string_prop_by_name(child, "filename", item->filename);
- e_xml_set_string_prop_by_name(child, "type", item->type);
-
- if (item->changed) {
- filename = g_concat_dir_and_file(collection->local_dir, item->filename);
- gal_view_save(item->view, filename);
- g_free(filename);
- }
- }
- }
- for (i = 0; i < collection->removed_view_count; i++) {
- xmlNode *child;
- GalViewCollectionItem *item;
-
- item = collection->removed_view_data[i];
-
- child = xmlNewChild(root, NULL, "GalView", NULL);
- e_xml_set_string_prop_by_name(child, "id", item->id);
- e_xml_set_string_prop_by_name(child, "title", item->title);
- e_xml_set_string_prop_by_name(child, "type", item->type);
- }
- filename = g_concat_dir_and_file(collection->local_dir, "galview.xml");
- xmlSaveFile(filename, doc);
- xmlFreeDoc(doc);
- g_free(filename);
-}
-
-/**
- * gal_view_collection_get_count
- * @collection: The view collection to count
- *
- * Calculates the number of views in the given collection.
- *
- * Returns: The number of views in the collection.
- */
-gint
-gal_view_collection_get_count (GalViewCollection *collection)
-{
- return collection->view_count;
-}
-
-/**
- * gal_view_collection_get_view
- * @collection: The view collection to query
- * @n: The view to get.
- *
- * Returns: The nth view in the collection
- */
-GalView *
-gal_view_collection_get_view (GalViewCollection *collection,
- int n)
-{
- g_return_val_if_fail(n < collection->view_count, NULL);
- g_return_val_if_fail(n >= 0, NULL);
-
- return collection->view_data[n]->view;
-}
-
-/**
- * gal_view_collection_get_view_item
- * @collection: The view collection to query
- * @n: The view item to get.
- *
- * Returns: The nth view item in the collection
- */
-GalViewCollectionItem *
-gal_view_collection_get_view_item (GalViewCollection *collection,
- int n)
-{
- g_return_val_if_fail(n < collection->view_count, NULL);
- g_return_val_if_fail(n >= 0, NULL);
-
- return collection->view_data[n];
-}
-
-static char *
-gal_view_generate_string (GalViewCollection *collection,
- GalView *view,
- int which)
-{
- char *ret_val;
- char *pointer;
-
- if (which == 1)
- ret_val = g_strdup(gal_view_get_title(view));
- else
- ret_val = g_strdup_printf("%s_%d", gal_view_get_title(view), which);
- for (pointer = ret_val; *pointer; pointer++) {
- if (!isalnum((guint) *pointer)) {
- *pointer = '_';
- }
- }
- return ret_val;
-}
-
-static gint
-gal_view_check_string (GalViewCollection *collection,
- char *string)
-{
- int i;
-
- for (i = 0; i < collection->view_count; i++) {
- if (!strcmp(string, collection->view_data[i]->id))
- return FALSE;
- }
- for (i = 0; i < collection->removed_view_count; i++) {
- if (!strcmp(string, collection->removed_view_data[i]->id))
- return FALSE;
- }
- return TRUE;
-}
-
-static char *
-gal_view_generate_id (GalViewCollection *collection,
- GalView *view)
-{
- int i;
- for (i = 1; TRUE; i++) {
- char *try;
-
- try = gal_view_generate_string(collection, view, i);
- if (gal_view_check_string(collection, try))
- return try;
- g_free(try);
- }
-}
-
-void
-gal_view_collection_append (GalViewCollection *collection,
- GalView *view)
-{
- GalViewCollectionItem *item;
- item = g_new(GalViewCollectionItem, 1);
- item->ever_changed = TRUE;
- item->changed = TRUE;
- item->built_in = FALSE;
- item->title = g_strdup(gal_view_get_title(view));
- item->type = g_strdup(gal_view_get_type_code(view));
- item->id = gal_view_generate_id(collection, view);
- item->filename = g_strdup_printf("%s.galview", item->id);
- item->view = view;
- item->collection = collection;
- gtk_object_ref(GTK_OBJECT(view));
-
- gtk_signal_connect(GTK_OBJECT(item->view), "changed",
- GTK_SIGNAL_FUNC(view_changed), item);
-
- collection->view_data = g_renew(GalViewCollectionItem *, collection->view_data, collection->view_count + 1);
- collection->view_data[collection->view_count] = item;
- collection->view_count ++;
-
- gal_view_collection_changed(collection);
-}
-
-void
-gal_view_collection_delete_view (GalViewCollection *collection,
- int i)
-{
- GalViewCollectionItem *item = collection->view_data[i];
- memmove(collection->view_data + i, collection->view_data + i + 1, (collection->view_count - i - 1) * sizeof(GalViewCollectionItem *));
- if (item->built_in) {
- g_free(item->filename);
- item->filename = NULL;
-
- collection->removed_view_data = g_renew(GalViewCollectionItem *, collection->removed_view_data, collection->removed_view_count + 1);
- collection->removed_view_data[collection->removed_view_count] = item;
- collection->removed_view_count ++;
- } else {
- gal_view_collection_item_free (item);
- }
-
- gal_view_collection_changed(collection);
-}
-
-void
-gal_view_collection_copy_view (GalViewCollection *collection,
- int i)
-{
- GalViewCollectionItem *item;
- GalView *view = collection->view_data[i]->view;
-
- item = g_new(GalViewCollectionItem, 1);
- item->ever_changed = TRUE;
- item->changed = FALSE;
- item->built_in = FALSE;
- item->title = g_strdup(gal_view_get_title(view));
- item->type = g_strdup(gal_view_get_type_code(view));
- item->id = gal_view_generate_id(collection, view);
- item->filename = g_strdup_printf("%s.galview", item->id);
- item->view = gal_view_clone(view);
- item->collection = collection;
-
- gtk_signal_connect(GTK_OBJECT(item->view), "changed",
- GTK_SIGNAL_FUNC(view_changed), item);
-
- collection->view_data = g_renew(GalViewCollectionItem *, collection->view_data, collection->view_count + 1);
- collection->view_data[collection->view_count] = item;
- collection->view_count ++;
-
- gal_view_collection_changed(collection);
-}
diff --git a/widgets/menus/gal-view-collection.h b/widgets/menus/gal-view-collection.h
deleted file mode 100644
index 82da6a2de6..0000000000
--- a/widgets/menus/gal-view-collection.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _GAL_VIEW_SET_H_
-#define _GAL_VIEW_SET_H_
-
-#include <gtk/gtkobject.h>
-#include <gal/menus/gal-view-factory.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-#define GAL_VIEW_COLLECTION_TYPE (gal_view_collection_get_type ())
-#define GAL_VIEW_COLLECTION(o) (GTK_CHECK_CAST ((o), GAL_VIEW_COLLECTION_TYPE, GalViewCollection))
-#define GAL_VIEW_COLLECTION_CLASS(k) (GTK_CHECK_CLASS_CAST((k), GAL_VIEW_COLLECTION_TYPE, GalViewCollectionClass))
-#define GAL_IS_VIEW_COLLECTION(o) (GTK_CHECK_TYPE ((o), GAL_VIEW_COLLECTION_TYPE))
-#define GAL_IS_VIEW_COLLECTION_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), GAL_VIEW_COLLECTION_TYPE))
-
-typedef struct GalViewCollectionItem GalViewCollectionItem;
-
-typedef struct {
- GtkObject base;
-
- GalViewCollectionItem **view_data;
- int view_count;
- GList *factory_list;
-
- GalViewCollectionItem **removed_view_data;
- int removed_view_count;
-
- char *system_dir;
- char *local_dir;
-} GalViewCollection;
-
-typedef struct {
- GtkObjectClass parent_class;
-
- /*
- * Signals
- */
- void (*display_view) (GalViewCollection *collection,
- GalView *view);
- void (*changed) (GalViewCollection *collection);
-} GalViewCollectionClass;
-
-struct GalViewCollectionItem {
- GalView *view;
- char *id;
- gboolean changed;
- gboolean ever_changed;
- gboolean built_in;
- char *filename;
- char *title;
- char *type;
- GalViewCollection *collection;
-};
-
-/* Standard functions */
-GtkType gal_view_collection_get_type (void);
-GalViewCollection *gal_view_collection_new (void);
-
-/* Set up the view collection */
-void gal_view_collection_set_storage_directories (GalViewCollection *collection,
- const char *system_dir,
- const char *local_dir);
-void gal_view_collection_add_factory (GalViewCollection *collection,
- GalViewFactory *factory);
-
-/* Send the display view signal. */
-void gal_view_collection_display_view (GalViewCollection *collection,
- GalView *view);
-gint gal_view_collection_get_count (GalViewCollection *collection);
-GalView *gal_view_collection_get_view (GalViewCollection *collection,
- int n);
-GalViewCollectionItem *gal_view_collection_get_view_item (GalViewCollection *collection,
- int n);
-
-void gal_view_collection_append (GalViewCollection *collection,
- GalView *view);
-void gal_view_collection_delete_view (GalViewCollection *collection,
- int i);
-void gal_view_collection_copy_view (GalViewCollection *collection,
- int i);
-/* Call set_storage_directories and add factories for anything that
- * might be found there before doing either of these. */
-void gal_view_collection_load (GalViewCollection *collection);
-void gal_view_collection_save (GalViewCollection *collection);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* _GAL_VIEW_COLLECTION_H_ */
diff --git a/widgets/menus/gal-view-etable.c b/widgets/menus/gal-view-etable.c
deleted file mode 100644
index d7ef2e2c0e..0000000000
--- a/widgets/menus/gal-view-etable.c
+++ /dev/null
@@ -1,199 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * gal-view-etable.c: An ETable View
- *
- * Authors:
- * Chris Lahey (clahey@helixcode.com)
- *
- * (C) 2000 Helix Code, Inc.
- */
-#include <config.h>
-#include <gtk/gtksignal.h>
-#include "gal-view-etable.h"
-#include <gal/e-table/e-table-config.h>
-
-#define PARENT_TYPE gal_view_get_type ()
-
-static GalViewClass *gal_view_etable_parent_class;
-
-
-static void
-config_changed (ETableConfig *config, ETableState *state, GalViewEtable *view)
-{
- if (view->state)
- gtk_object_unref(GTK_OBJECT(view->state));
- view->state = e_table_state_duplicate(state);
- gal_view_changed(GAL_VIEW(view));
-}
-
-static void
-gal_view_etable_edit (GalView *view)
-{
- GalViewEtable *etable_view = GAL_VIEW_ETABLE(view);
- ETableConfig *config;
-
- config = e_table_config_new(etable_view->title,
- etable_view->spec,
- etable_view->state);
-
- gtk_signal_connect(GTK_OBJECT(config), "changed",
- GTK_SIGNAL_FUNC(config_changed), view);
-}
-
-static void
-gal_view_etable_load (GalView *view,
- const char *filename)
-{
- e_table_state_load_from_file(GAL_VIEW_ETABLE(view)->state, filename);
-}
-
-static void
-gal_view_etable_save (GalView *view,
- const char *filename)
-{
- e_table_state_save_to_file(GAL_VIEW_ETABLE(view)->state, filename);
-}
-
-static const char *
-gal_view_etable_get_title (GalView *view)
-{
- return GAL_VIEW_ETABLE(view)->title;
-}
-
-static void
-gal_view_etable_set_title (GalView *view,
- const char *title)
-{
- g_free(GAL_VIEW_ETABLE(view)->title);
- GAL_VIEW_ETABLE(view)->title = g_strdup(title);
-}
-
-static const char *
-gal_view_etable_get_type_code (GalView *view)
-{
- return "etable";
-}
-
-static GalView *
-gal_view_etable_clone (GalView *view)
-{
- GalViewEtable *gve, *new;
-
- gve = GAL_VIEW_ETABLE(view);
-
- new = gtk_type_new (gal_view_etable_get_type ());
- new->spec = gve->spec;
- new->title = g_strdup (gve->title);
- new->state = e_table_state_duplicate(gve->state);
-
- gtk_object_ref(GTK_OBJECT(new->spec));
-
- return GAL_VIEW(new);
-}
-
-static void
-gal_view_etable_destroy (GtkObject *object)
-{
- GalViewEtable *view = GAL_VIEW_ETABLE(object);
- g_free(view->title);
- if (view->spec)
- gtk_object_unref(GTK_OBJECT(view->spec));
- if (view->state)
- gtk_object_unref(GTK_OBJECT(view->state));
-}
-
-static void
-gal_view_etable_class_init (GtkObjectClass *object_class)
-{
- GalViewClass *gal_view_class = GAL_VIEW_CLASS(object_class);
- gal_view_etable_parent_class = gtk_type_class (PARENT_TYPE);
-
- gal_view_class->edit = gal_view_etable_edit ;
- gal_view_class->load = gal_view_etable_load ;
- gal_view_class->save = gal_view_etable_save ;
- gal_view_class->get_title = gal_view_etable_get_title ;
- gal_view_class->set_title = gal_view_etable_set_title ;
- gal_view_class->get_type_code = gal_view_etable_get_type_code;
- gal_view_class->clone = gal_view_etable_clone ;
-
- object_class->destroy = gal_view_etable_destroy ;
-}
-
-static void
-gal_view_etable_init (GalViewEtable *gve)
-{
- gve->spec = NULL;
- gve->state = e_table_state_new();
- gve->title = NULL;
-}
-
-/**
- * gal_view_etable_new
- * @spec: The ETableSpecification that this view will be based upon.
- * @title: The name of the new view.
- *
- * Returns a new GalViewEtable. This is primarily for use by
- * GalViewFactoryEtable.
- *
- * Returns: The new GalViewEtable.
- */
-GalView *
-gal_view_etable_new (ETableSpecification *spec,
- const gchar *title)
-{
- return gal_view_etable_construct (gtk_type_new (gal_view_etable_get_type ()), spec, title);
-}
-
-/**
- * gal_view_etable_construct
- * @view: The view to construct.
- * @spec: The ETableSpecification that this view will be based upon.
- * @title: The name of the new view.
- *
- * constructs the GalViewEtable. To be used by subclasses and
- * language bindings.
- *
- * Returns: The GalViewEtable.
- */
-GalView *
-gal_view_etable_construct (GalViewEtable *view,
- ETableSpecification *spec,
- const gchar *title)
-{
- if (spec)
- gtk_object_ref(GTK_OBJECT(spec));
- view->spec = spec;
-
- if (view->state)
- gtk_object_unref(GTK_OBJECT(view->state));
- view->state = e_table_state_duplicate(spec->state);
-
- view->title = g_strdup(title);
-
- return GAL_VIEW(view);
-}
-
-GtkType
-gal_view_etable_get_type (void)
-{
- static guint type = 0;
-
- if (!type)
- {
- GtkTypeInfo info =
- {
- "GalViewEtable",
- sizeof (GalViewEtable),
- sizeof (GalViewEtableClass),
- (GtkClassInitFunc) gal_view_etable_class_init,
- (GtkObjectInitFunc) gal_view_etable_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- type = gtk_type_unique (PARENT_TYPE, &info);
- }
-
- return type;
-}
diff --git a/widgets/menus/gal-view-etable.h b/widgets/menus/gal-view-etable.h
deleted file mode 100644
index 9fde64a9cb..0000000000
--- a/widgets/menus/gal-view-etable.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _GAL_VIEW_ETABLE_H_
-#define _GAL_VIEW_ETABLE_H_
-
-#include <gtk/gtkobject.h>
-#include <gal/menus/gal-view.h>
-#include <gal/e-table/e-table-state.h>
-#include <gal/e-table/e-table-specification.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define GAL_VIEW_ETABLE_TYPE (gal_view_etable_get_type ())
-#define GAL_VIEW_ETABLE(o) (GTK_CHECK_CAST ((o), GAL_VIEW_ETABLE_TYPE, GalViewEtable))
-#define GAL_VIEW_ETABLE_CLASS(k) (GTK_CHECK_CLASS_CAST((k), GAL_VIEW_ETABLE_TYPE, GalViewEtableClass))
-#define GAL_IS_VIEW_ETABLE(o) (GTK_CHECK_TYPE ((o), GAL_VIEW_ETABLE_TYPE))
-#define GAL_IS_VIEW_ETABLE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), GAL_VIEW_ETABLE_TYPE))
-
-typedef struct {
- GalView base;
-
- ETableSpecification *spec;
- ETableState *state;
- char *title;
-} GalViewEtable;
-
-typedef struct {
- GalViewClass parent_class;
-} GalViewEtableClass;
-
-/* Standard functions */
-GtkType gal_view_etable_get_type (void);
-GalView *gal_view_etable_new (ETableSpecification *spec,
- const gchar *title);
-GalView *gal_view_etable_construct (GalViewEtable *view,
- ETableSpecification *spec,
- const gchar *title);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _GAL_VIEW_ETABLE_H_ */
diff --git a/widgets/menus/gal-view-factory-etable.c b/widgets/menus/gal-view-factory-etable.c
deleted file mode 100644
index 4fddcdc70a..0000000000
--- a/widgets/menus/gal-view-factory-etable.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * gal-view-factory.c: A View Factory
- *
- * Authors:
- * Chris Lahey (clahey@helixcode.com)
- *
- * (C) 2000 Helix Code, Inc.
- */
-#include <config.h>
-#include "gal/util/e-i18n.h"
-#include "gal-view-factory-etable.h"
-#include "gal-view-etable.h"
-
-#define GVFE_CLASS(e) ((GalViewFactoryEtableClass *)((GtkObject *)e)->klass)
-
-#define PARENT_TYPE gal_view_factory_get_type ()
-
-static GalViewFactoryClass *gal_view_factory_etable_parent_class;
-
-static const char *
-gal_view_factory_etable_get_title (GalViewFactory *factory)
-{
- return _("Table");
-}
-
-static GalView *
-gal_view_factory_etable_new_view (GalViewFactory *factory,
- const char *name)
-{
- return gal_view_etable_new(GAL_VIEW_FACTORY_ETABLE(factory)->spec, name);
-}
-
-static const char *
-gal_view_factory_etable_get_type_code (GalViewFactory *factory)
-{
- return "etable";
-}
-
-static void
-gal_view_factory_etable_destroy (GtkObject *object)
-{
- GalViewFactoryEtable *factory = GAL_VIEW_FACTORY_ETABLE(object);
-
- if (factory->spec)
- gtk_object_unref(GTK_OBJECT(factory->spec));
-}
-
-static void
-gal_view_factory_etable_class_init (GtkObjectClass *object_class)
-{
- GalViewFactoryClass *view_factory_class = GAL_VIEW_FACTORY_CLASS(object_class);
- gal_view_factory_etable_parent_class = gtk_type_class (PARENT_TYPE);
-
- view_factory_class->get_title = gal_view_factory_etable_get_title;
- view_factory_class->new_view = gal_view_factory_etable_new_view;
- view_factory_class->get_type_code = gal_view_factory_etable_get_type_code;
-
- object_class->destroy = gal_view_factory_etable_destroy;
-}
-
-static void
-gal_view_factory_etable_init (GalViewFactoryEtable *factory)
-{
- factory->spec = NULL;
-}
-
-/**
- * gal_view_etable_new
- * @spec: The spec to create GalViewEtables based upon.
- *
- * A new GalViewFactory for creating ETable views. Create one of
- * these and pass it to GalViewCollection for use.
- *
- * Returns: The new GalViewFactoryEtable.
- */
-GalViewFactory *
-gal_view_factory_etable_new (ETableSpecification *spec)
-{
- return gal_view_factory_etable_construct (gtk_type_new (gal_view_factory_etable_get_type ()), spec);
-}
-
-/**
- * gal_view_etable_construct
- * @factory: The factory to construct
- * @spec: The spec to create GalViewEtables based upon.
- *
- * constructs the GalViewFactoryEtable. To be used by subclasses and
- * language bindings.
- *
- * Returns: The GalViewFactoryEtable.
- */
-GalViewFactory *
-gal_view_factory_etable_construct (GalViewFactoryEtable *factory,
- ETableSpecification *spec)
-{
- if (spec)
- gtk_object_ref(GTK_OBJECT(spec));
- factory->spec = spec;
- return GAL_VIEW_FACTORY(factory);
-}
-
-GtkType
-gal_view_factory_etable_get_type (void)
-{
- static guint type = 0;
-
- if (!type)
- {
- GtkTypeInfo info =
- {
- "GalViewFactoryEtable",
- sizeof (GalViewFactoryEtable),
- sizeof (GalViewFactoryEtableClass),
- (GtkClassInitFunc) gal_view_factory_etable_class_init,
- (GtkObjectInitFunc) gal_view_factory_etable_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- type = gtk_type_unique (PARENT_TYPE, &info);
- }
-
- return type;
-}
diff --git a/widgets/menus/gal-view-factory-etable.h b/widgets/menus/gal-view-factory-etable.h
deleted file mode 100644
index f41697f9f5..0000000000
--- a/widgets/menus/gal-view-factory-etable.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _GAL_VIEW_FACTORY_ETABLE_H_
-#define _GAL_VIEW_FACTORY_ETABLE_H_
-
-#include <gtk/gtkobject.h>
-#include <gal/menus/gal-view-factory.h>
-#include <gal/e-table/e-table-specification.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define GAL_VIEW_FACTORY_ETABLE_TYPE (gal_view_factory_etable_get_type ())
-#define GAL_VIEW_FACTORY_ETABLE(o) (GTK_CHECK_CAST ((o), GAL_VIEW_FACTORY_ETABLE_TYPE, GalViewFactoryEtable))
-#define GAL_VIEW_FACTORY_ETABLE_CLASS(k) (GTK_CHECK_CLASS_CAST((k), GAL_VIEW_FACTORY_ETABLE_TYPE, GalViewFactoryEtableClass))
-#define GAL_IS_VIEW_FACTORY_ETABLE(o) (GTK_CHECK_TYPE ((o), GAL_VIEW_FACTORY_ETABLE_TYPE))
-#define GAL_IS_VIEW_FACTORY_ETABLE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), GAL_VIEW_FACTORY_ETABLE_TYPE))
-
-typedef struct {
- GalViewFactory base;
-
- ETableSpecification *spec;
-} GalViewFactoryEtable;
-
-typedef struct {
- GalViewFactoryClass parent_class;
-} GalViewFactoryEtableClass;
-
-/* Standard functions */
-GtkType gal_view_factory_etable_get_type (void);
-GalViewFactory *gal_view_factory_etable_new (ETableSpecification *spec);
-GalViewFactory *gal_view_factory_etable_construct (GalViewFactoryEtable *factory,
- ETableSpecification *spec);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _GAL_VIEW_FACTORY_ETABLE_H_ */
diff --git a/widgets/menus/gal-view-factory.c b/widgets/menus/gal-view-factory.c
deleted file mode 100644
index 569dc59b92..0000000000
--- a/widgets/menus/gal-view-factory.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * gal-view-factory.c: A View Factory
- *
- * Authors:
- * Chris Lahey (clahey@helixcode.com)
- *
- * (C) 2000 Helix Code, Inc.
- */
-#include <config.h>
-#include "gal-view-factory.h"
-
-#define GVF_CLASS(e) ((GalViewFactoryClass *)((GtkObject *)e)->klass)
-
-#define PARENT_TYPE gtk_object_get_type ()
-
-#define d(x)
-
-d(static gint depth = 0);
-
-static GtkObjectClass *gal_view_factory_parent_class;
-
-/**
- * gal_view_factory_get_title:
- * @factory: The factory to query.
- *
- * Returns: The title of the factory.
- */
-const char *
-gal_view_factory_get_title (GalViewFactory *factory)
-{
- g_return_val_if_fail (factory != NULL, 0);
- g_return_val_if_fail (GAL_IS_VIEW_FACTORY (factory), 0);
-
- if (GVF_CLASS (factory)->get_title)
- return GVF_CLASS (factory)->get_title (factory);
- else
- return NULL;
-}
-
-/**
- * gal_view_factory_new_view:
- * @factory: The factory to use
- * @name: the name for the view.
- *
- * Returns: The new view
- */
-GalView *
-gal_view_factory_new_view (GalViewFactory *factory,
- const char *name)
-{
- g_return_val_if_fail (factory != NULL, NULL);
- g_return_val_if_fail (GAL_IS_VIEW_FACTORY (factory), NULL);
-
- if (GVF_CLASS (factory)->new_view)
- return GVF_CLASS (factory)->new_view (factory, name);
- else
- return NULL;
-}
-
-/**
- * gal_view_factory_get_type_code:
- * @factory: The factory to use
- *
- * Returns: The type code
- */
-const char *
-gal_view_factory_get_type_code (GalViewFactory *factory)
-{
- g_return_val_if_fail (factory != NULL, NULL);
- g_return_val_if_fail (GAL_IS_VIEW_FACTORY (factory), NULL);
-
- if (GVF_CLASS (factory)->get_type_code)
- return GVF_CLASS (factory)->get_type_code (factory);
- else
- return NULL;
-}
-
-static void
-gal_view_factory_class_init (GtkObjectClass *object_class)
-{
- GalViewFactoryClass *klass = GAL_VIEW_FACTORY_CLASS(object_class);
- gal_view_factory_parent_class = gtk_type_class (PARENT_TYPE);
-
- klass->get_title = NULL;
- klass->new_view = NULL;
-}
-
-GtkType
-gal_view_factory_get_type (void)
-{
- static guint type = 0;
-
- if (!type)
- {
- GtkTypeInfo info =
- {
- "GalViewFactory",
- sizeof (GalViewFactory),
- sizeof (GalViewFactoryClass),
- (GtkClassInitFunc) gal_view_factory_class_init,
- NULL,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- type = gtk_type_unique (PARENT_TYPE, &info);
- }
-
- return type;
-}
diff --git a/widgets/menus/gal-view-factory.h b/widgets/menus/gal-view-factory.h
deleted file mode 100644
index dd828145e5..0000000000
--- a/widgets/menus/gal-view-factory.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _GAL_VIEW_FACTORY_H_
-#define _GAL_VIEW_FACTORY_H_
-
-#include <gtk/gtkobject.h>
-#include <gal/menus/gal-view.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define GAL_VIEW_FACTORY_TYPE (gal_view_factory_get_type ())
-#define GAL_VIEW_FACTORY(o) (GTK_CHECK_CAST ((o), GAL_VIEW_FACTORY_TYPE, GalViewFactory))
-#define GAL_VIEW_FACTORY_CLASS(k) (GTK_CHECK_CLASS_CAST((k), GAL_VIEW_FACTORY_TYPE, GalViewFactoryClass))
-#define GAL_IS_VIEW_FACTORY(o) (GTK_CHECK_TYPE ((o), GAL_VIEW_FACTORY_TYPE))
-#define GAL_IS_VIEW_FACTORY_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), GAL_VIEW_FACTORY_TYPE))
-
-typedef struct {
- GtkObject base;
-} GalViewFactory;
-
-typedef struct {
- GtkObjectClass parent_class;
-
- /*
- * Virtual methods
- */
- const char *(*get_title) (GalViewFactory *factory);
- const char *(*get_type_code) (GalViewFactory *factory);
- GalView *(*new_view) (GalViewFactory *factory,
- const char *name);
-} GalViewFactoryClass;
-
-/* Standard functions */
-GtkType gal_view_factory_get_type (void);
-
-/* Query functions */
-/* Returns already translated title. */
-const char *gal_view_factory_get_title (GalViewFactory *factory);
-
-/* Returns the code for use in identifying this type of object in the
- * view list. This identifier should identify this as being the
- * unique factory for xml files which were written out with this
- * identifier. Thus each factory should have a unique type code. */
-const char *gal_view_factory_get_type_code (GalViewFactory *factory);
-
-/* Create a new view */
-GalView *gal_view_factory_new_view (GalViewFactory *factory,
- const char *name);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* _GAL_VIEW_FACTORY_H_ */
diff --git a/widgets/menus/gal-view-menus.c b/widgets/menus/gal-view-menus.c
deleted file mode 100644
index 89eb38022a..0000000000
--- a/widgets/menus/gal-view-menus.c
+++ /dev/null
@@ -1,319 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * gal-view-menus.c: Deploy a GalViewCollection in the menus.
- *
- * Author:
- * Chris Lahey <clahey@helixcode.com>
- *
- * (C) 2000, 2001 Ximian, Inc.
- */
-#include <config.h>
-
-#include "gal-view-menus.h"
-
-#include <stdlib.h>
-#include <gtk/gtksignal.h>
-#include <gnome-xml/parser.h>
-#include <gnome-xml/xmlmemory.h>
-#include <libgnomeui/gnome-dialog.h>
-#include <libgnome/gnome-i18n.h>
-#include <gal/util/e-util.h>
-#include <gal/util/e-xml-utils.h>
-#include <gal/menus/gal-define-views-dialog.h>
-#include <gal/widgets/e-unicode.h>
-#include <e-util/e-list.h>
-
-struct _GalViewMenusPrivate {
- GalViewCollection *collection;
- int collection_changed_id;
- BonoboUIVerb *verbs;
- BonoboUIComponent *component;
- EList *listenerClosures;
-};
-
-typedef struct {
- GalViewCollection *collection;
- GalView *view;
- const char *id;
-} ListenerClosure;
-
-#define PARENT_TYPE (gtk_object_get_type())
-
-static GtkObjectClass *gvm_parent_class;
-static void collection_changed (GalViewCollection *collection,
- GalViewMenus *gvm);
-
-#define d(x)
-
-static void
-free_verbs (GalViewMenus *gvm)
-{
- if (gvm->priv->verbs) {
- g_free(gvm->priv->verbs->cname);
- g_free(gvm->priv->verbs);
- }
- gvm->priv->verbs = NULL;
-}
-
-static void
-closure_free (void *data, void *user_data)
-{
- ListenerClosure *closure = data;
- GalViewMenus *gvm = user_data;
-
- gtk_object_ref(GTK_OBJECT(closure->view));
- gtk_object_ref(GTK_OBJECT(closure->collection));
-
- bonobo_ui_component_remove_listener (gvm->priv->component, closure->id);
-
- g_free (closure);
-}
-
-static void
-remove_listeners (GalViewMenus *gvm)
-{
- if (gvm->priv->listenerClosures) {
- gtk_object_unref (GTK_OBJECT(gvm->priv->listenerClosures));
- }
- gvm->priv->listenerClosures = NULL;
-}
-
-static void
-remove_xml (GalViewMenus *gvm)
-{
-}
-
-static void
-gvm_destroy (GtkObject *object)
-{
- GalViewMenus *gvm = GAL_VIEW_MENUS (object);
-
- if (gvm->priv->collection && gvm->priv->collection_changed_id != 0) {
- gtk_signal_disconnect(GTK_OBJECT(gvm->priv->collection), gvm->priv->collection_changed_id);
- }
-
- if (gvm->priv->collection)
- gtk_object_unref(GTK_OBJECT(gvm->priv->collection));
- free_verbs(gvm);
- remove_xml(gvm);
- remove_listeners(gvm);
- g_free(gvm->priv);
- gvm->priv = NULL;
-
- GTK_OBJECT_CLASS (gvm_parent_class)->destroy (object);
-}
-
-static void
-gvm_class_init (GtkObjectClass *klass)
-{
- gvm_parent_class = gtk_type_class (PARENT_TYPE);
-
- klass->destroy = gvm_destroy;
-}
-
-static void
-gvm_init (GalViewMenus *gvm)
-{
- gvm->priv = g_new(GalViewMenusPrivate, 1);
- gvm->priv->collection = NULL;
- gvm->priv->collection_changed_id = 0;
- gvm->priv->verbs = NULL;
- gvm->priv->component = NULL;
- gvm->priv->listenerClosures = NULL;
-}
-
-E_MAKE_TYPE(gal_view_menus, "GalViewMenus", GalViewMenus, gvm_class_init, gvm_init, PARENT_TYPE);
-
-GalViewMenus *
-gal_view_menus_new (GalViewCollection *collection)
-{
- GalViewMenus *gvm = gtk_type_new (GAL_VIEW_MENUS_TYPE);
-
- gal_view_menus_construct(gvm, collection);
-
- return gvm;
-}
-
-GalViewMenus *
-gal_view_menus_construct (GalViewMenus *gvm,
- GalViewCollection *collection)
-{
- if (collection)
- gtk_object_ref(GTK_OBJECT(collection));
- gvm->priv->collection = collection;
-
- gtk_signal_connect(GTK_OBJECT(collection), "changed",
- GTK_SIGNAL_FUNC(collection_changed), gvm);
- return gvm;
-}
-
-static void
-dialog_clicked(GtkWidget *dialog, int button, GalViewMenus *menus)
-{
- if (button == 0) {
- gal_view_collection_save(menus->priv->collection);
- }
- gnome_dialog_close(GNOME_DIALOG(dialog));
-}
-
-static void
-define_views(BonoboUIComponent *component,
- GalViewMenus *menus,
- char *cname)
-{
- GtkWidget *dialog = gal_define_views_dialog_new(menus->priv->collection);
- gtk_signal_connect(GTK_OBJECT(dialog), "clicked",
- GTK_SIGNAL_FUNC(dialog_clicked), menus);
- gtk_widget_show(dialog);
-}
-
-static void
-toggled_cb (BonoboUIComponent *component,
- const char *path,
- Bonobo_UIComponent_EventType type,
- const char *state,
- gpointer user_data)
-{
- ListenerClosure *closure = user_data;
-
- /* do nothing on state change to untoggled */
- if (!strcmp (state, "0"))
- return;
-
- gal_view_collection_display_view(closure->collection, closure->view);
-}
-
-static char *
-build_menus(GalViewMenus *menus)
-{
- BonoboUINode *root, *menu, *submenu, *place, *menuitem;
- char *xml;
- xmlChar *string;
- int length;
- int i;
- GalViewCollection *collection = menus->priv->collection;
-
- root = bonobo_ui_node_new("Root");
- menu = bonobo_ui_node_new_child(root, "menu");
-
- submenu = bonobo_ui_node_new_child(menu, "submenu");
- bonobo_ui_node_set_attr(submenu, "name", "View");
-
- place = bonobo_ui_node_new_child(submenu, "placeholder");
- bonobo_ui_node_set_attr(place, "name", "ViewBegin");
-
- submenu = bonobo_ui_node_new_child(place, "submenu");
- bonobo_ui_node_set_attr(submenu, "name", "CurrentView");
- bonobo_ui_node_set_attr(submenu, "_label", N_("_Current View"));
-
- length = gal_view_collection_get_count(collection);
-
- menus->priv->listenerClosures = e_list_new (NULL, closure_free, menus);
-
- for (i = 0; i < length; i++) {
- char *label;
- GalViewCollectionItem *item = gal_view_collection_get_view_item(collection, i);
- ListenerClosure *closure;
-
- menuitem = bonobo_ui_node_new_child(submenu, "menuitem");
- bonobo_ui_node_set_attr(menuitem, "name", item->id);
- bonobo_ui_node_set_attr(menuitem, "id", item->id);
- bonobo_ui_node_set_attr(menuitem, "group", "GalViewMenus");
- bonobo_ui_node_set_attr(menuitem, "type", "radio");
-
- /* bonobo displays this string so it must be in locale */
- label = e_utf8_to_locale_string(item->title);
- /* All labels are bonobo_ui_util_decode_str()ed,
- * so even translated label must be set with _label */
- bonobo_ui_node_set_attr(menuitem, "_label", label);
- g_free(label);
-
- closure = g_new (ListenerClosure, 1);
- closure->collection = collection;
- closure->view = item->view;
- closure->id = item->id;
-
- gtk_object_ref(GTK_OBJECT(closure->view));
- gtk_object_ref(GTK_OBJECT(closure->collection));
-
- bonobo_ui_component_add_listener (menus->priv->component, item->id, toggled_cb, closure);
-
- e_list_append (menus->priv->listenerClosures, closure);
- }
-
- menuitem = bonobo_ui_node_new_child(submenu, "separator");
-
- menuitem = bonobo_ui_node_new_child(submenu, "menuitem");
- bonobo_ui_node_set_attr(menuitem, "name", "DefineViews");
- bonobo_ui_node_set_attr(menuitem, "_label", N_("Define Views"));
- bonobo_ui_node_set_attr(menuitem, "verb", "DefineViews");
-
- string = bonobo_ui_node_to_string(root, TRUE);
- xml = g_strdup(string);
- bonobo_ui_node_free_string(string);
-
- bonobo_ui_node_free(root);
-
- d(g_print (xml));
-
- return xml;
-}
-
-static BonoboUIVerb *
-build_verbs (GalViewMenus *menus)
-{
- BonoboUIVerb *verbs = g_new(BonoboUIVerb, 2);
- BonoboUIVerb *verb;
-
- verb = verbs;
- verb->cname = g_strdup("DefineViews");
- verb->cb = (BonoboUIVerbFn) define_views;
- verb->user_data = menus;
- verb->dummy = NULL;
- verb ++;
-
- verb->cname = NULL;
- verb->cb = NULL;
- verb->user_data = NULL;
- verb->dummy = NULL;
- verb++;
-
- return verbs;
-}
-
-static void
-build_stuff (GalViewMenus *gvm,
- CORBA_Environment *ev)
-{
- char *xml;
-
- remove_xml(gvm);
- remove_listeners(gvm);
- xml = build_menus(gvm);
- bonobo_ui_component_set_translate(gvm->priv->component, "/", xml, ev);
- g_free(xml);
-
- free_verbs(gvm);
- gvm->priv->verbs = build_verbs(gvm);
- bonobo_ui_component_add_verb_list(gvm->priv->component, gvm->priv->verbs);
-}
-
-void gal_view_menus_apply (GalViewMenus *gvm,
- BonoboUIComponent *component,
- CORBA_Environment *ev)
-{
- gvm->priv->component = component;
-
- build_stuff (gvm, ev);
-}
-
-static void
-collection_changed (GalViewCollection *collection,
- GalViewMenus *gvm)
-{
- CORBA_Environment ev;
-
- CORBA_exception_init (&ev);
- build_stuff(gvm, &ev);
- CORBA_exception_free (&ev);
-}
diff --git a/widgets/menus/gal-view-menus.h b/widgets/menus/gal-view-menus.h
deleted file mode 100644
index 21b302771c..0000000000
--- a/widgets/menus/gal-view-menus.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _GAL_VIEW_MENUS_H_
-#define _GAL_VIEW_MENUS_H_
-
-#include <gtk/gtkobject.h>
-#include <gnome-xml/tree.h>
-#include <bonobo/bonobo-ui-component.h>
-#include <gal/menus/gal-view-collection.h>
-
-#define GAL_VIEW_MENUS_TYPE (gal_view_menus_get_type ())
-#define GAL_VIEW_MENUS(o) (GTK_CHECK_CAST ((o), GAL_VIEW_MENUS_TYPE, GalViewMenus))
-#define GAL_VIEW_MENUS_CLASS(k) (GTK_CHECK_CLASS_CAST((k), GAL_VIEW_MENUS_TYPE, GalViewMenusClass))
-#define GAL_IS_VIEW_MENUS(o) (GTK_CHECK_TYPE ((o), GAL_VIEW_MENUS_TYPE))
-#define GAL_IS_VIEW_MENUS_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), GAL_VIEW_MENUS_TYPE))
-
-typedef struct _GalViewMenusPrivate GalViewMenusPrivate;
-
-typedef struct {
- GtkObject base;
- GalViewMenusPrivate *priv;
-} GalViewMenus;
-
-typedef struct {
- GtkObjectClass parent_class;
-} GalViewMenusClass;
-
-GtkType gal_view_menus_get_type (void);
-GalViewMenus *gal_view_menus_new (GalViewCollection *collection);
-GalViewMenus *gal_view_menus_construct (GalViewMenus *menus,
- GalViewCollection *collection);
-
-void gal_view_menus_apply (GalViewMenus *menus,
- BonoboUIComponent *component,
- CORBA_Environment *ev);
-
-#endif /* _GAL_VIEW_MENUS_H_ */
diff --git a/widgets/menus/gal-view-new-dialog.c b/widgets/menus/gal-view-new-dialog.c
deleted file mode 100644
index 4b7d298fb6..0000000000
--- a/widgets/menus/gal-view-new-dialog.c
+++ /dev/null
@@ -1,218 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* gal-view-new-dialog.c
- * Copyright (C) 2000 Helix Code, Inc.
- * Author: Chris Lahey <clahey@helixcode.com>
- *
- * This library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <libgnomeui/gnome-dialog.h>
-#include <libgnomeui/gnome-stock.h>
-#include "gal-view-new-dialog.h"
-#include "gal-define-views-model.h"
-#include <gal/widgets/e-unicode.h>
-#include <gal/e-table/e-table-scrolled.h>
-
-static void gal_view_new_dialog_init (GalViewNewDialog *card);
-static void gal_view_new_dialog_class_init (GalViewNewDialogClass *klass);
-static void gal_view_new_dialog_set_arg (GtkObject *o, GtkArg *arg, guint arg_id);
-static void gal_view_new_dialog_get_arg (GtkObject *object, GtkArg *arg, guint arg_id);
-static void gal_view_new_dialog_destroy (GtkObject *object);
-
-static GnomeDialogClass *parent_class = NULL;
-#define PARENT_TYPE gnome_dialog_get_type()
-
-/* The arguments we take */
-enum {
- ARG_0,
- ARG_NAME,
- ARG_FACTORY,
-};
-
-GtkType
-gal_view_new_dialog_get_type (void)
-{
- static GtkType type = 0;
-
- if (!type) {
- static const GtkTypeInfo info =
- {
- "GalViewNewDialog",
- sizeof (GalViewNewDialog),
- sizeof (GalViewNewDialogClass),
- (GtkClassInitFunc) gal_view_new_dialog_class_init,
- (GtkObjectInitFunc) gal_view_new_dialog_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- type = gtk_type_unique (PARENT_TYPE, &info);
- }
-
- return type;
-}
-
-static void
-gal_view_new_dialog_class_init (GalViewNewDialogClass *klass)
-{
- GtkObjectClass *object_class;
-
- object_class = (GtkObjectClass*) klass;
-
- parent_class = gtk_type_class (PARENT_TYPE);
-
- object_class->set_arg = gal_view_new_dialog_set_arg;
- object_class->get_arg = gal_view_new_dialog_get_arg;
- object_class->destroy = gal_view_new_dialog_destroy;
-
- gtk_object_add_arg_type ("GalViewNewDialog::name", GTK_TYPE_STRING,
- GTK_ARG_READWRITE, ARG_NAME);
- gtk_object_add_arg_type ("GalViewNewDialog::factory", GTK_TYPE_OBJECT,
- GTK_ARG_READABLE, ARG_FACTORY);
-}
-
-static void
-gal_view_new_dialog_init (GalViewNewDialog *dialog)
-{
- GladeXML *gui;
- GtkWidget *widget;
-
- gui = glade_xml_new_with_domain (GAL_GLADEDIR "/gal-view-new-dialog.glade", NULL, PACKAGE);
- dialog->gui = gui;
-
- widget = glade_xml_get_widget(gui, "table-top");
- if (!widget) {
- return;
- }
- gtk_widget_ref(widget);
- gtk_widget_unparent(widget);
- gtk_box_pack_start(GTK_BOX(GNOME_DIALOG(dialog)->vbox), widget, TRUE, TRUE, 0);
- gtk_widget_unref(widget);
-
- gnome_dialog_append_buttons(GNOME_DIALOG(dialog),
- GNOME_STOCK_BUTTON_OK,
- GNOME_STOCK_BUTTON_CANCEL,
- NULL);
-
- gtk_window_set_policy(GTK_WINDOW(dialog), FALSE, TRUE, FALSE);
-
- dialog->collection = NULL;
- dialog->selected_factory = NULL;
-}
-
-static void
-gal_view_new_dialog_destroy (GtkObject *object) {
- GalViewNewDialog *gal_view_new_dialog = GAL_VIEW_NEW_DIALOG(object);
-
- gtk_object_unref(GTK_OBJECT(gal_view_new_dialog->gui));
-}
-
-GtkWidget*
-gal_view_new_dialog_new (GalViewCollection *collection)
-{
- GtkWidget *widget =
- gal_view_new_dialog_construct(gtk_type_new (gal_view_new_dialog_get_type ()),
- collection);
- return widget;
-}
-
-
-static void
-gal_view_new_dialog_select_row_callback(GtkCList *list,
- gint row,
- gint column,
- GdkEventButton *event,
- GalViewNewDialog *dialog)
-{
- dialog->selected_factory = gtk_clist_get_row_data(list,
- row);
-}
-
-GtkWidget*
-gal_view_new_dialog_construct (GalViewNewDialog *dialog,
- GalViewCollection *collection)
-{
- GtkWidget *list = glade_xml_get_widget(dialog->gui,
- "clist-type-list");
- GList *iterator;
- dialog->collection = collection;
-
- iterator = dialog->collection->factory_list;
-
- for ( ; iterator; iterator = g_list_next(iterator) ) {
- GalViewFactory *factory = iterator->data;
- char *text[1];
- int row;
-
- gtk_object_ref(GTK_OBJECT(factory));
- text[0] = (char *) gal_view_factory_get_title(factory);
- row = gtk_clist_append(GTK_CLIST(list), text);
- gtk_clist_set_row_data(GTK_CLIST(list), row, factory);
- }
-
- gtk_signal_connect(GTK_OBJECT (list),
- "select_row",
- GTK_SIGNAL_FUNC(gal_view_new_dialog_select_row_callback),
- dialog);
-
- return GTK_WIDGET(dialog);
-}
-
-static void
-gal_view_new_dialog_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- GalViewNewDialog *dialog;
- GtkWidget *entry;
-
- dialog = GAL_VIEW_NEW_DIALOG (o);
-
- switch (arg_id){
- case ARG_NAME:
- entry = glade_xml_get_widget(dialog->gui, "entry-name");
- if (entry && GTK_IS_EDITABLE(entry)) {
- e_utf8_gtk_editable_set_text(GTK_EDITABLE(entry), GTK_VALUE_STRING(*arg));
- }
- break;
- default:
- return;
- }
-}
-
-static void
-gal_view_new_dialog_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- GalViewNewDialog *dialog;
- GtkWidget *entry;
-
- dialog = GAL_VIEW_NEW_DIALOG (object);
-
- switch (arg_id) {
- case ARG_NAME:
- entry = glade_xml_get_widget(dialog->gui, "entry-name");
- if (entry && GTK_IS_EDITABLE(entry)) {
- GTK_VALUE_STRING(*arg) = e_utf8_gtk_editable_get_text(GTK_EDITABLE(entry));
- }
- break;
- case ARG_FACTORY:
- GTK_VALUE_OBJECT(*arg) = dialog->selected_factory ? GTK_OBJECT(dialog->selected_factory) : NULL;
- break;
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
diff --git a/widgets/menus/gal-view-new-dialog.glade b/widgets/menus/gal-view-new-dialog.glade
deleted file mode 100644
index 173fa6c3af..0000000000
--- a/widgets/menus/gal-view-new-dialog.glade
+++ /dev/null
@@ -1,220 +0,0 @@
-<?xml version="1.0"?>
-<GTK-Interface>
-
-<project>
- <name>gal-view-new-dialog</name>
- <program_name>gal-view-new-dialog</program_name>
- <directory></directory>
- <source_directory>src</source_directory>
- <pixmaps_directory>pixmaps</pixmaps_directory>
- <language>C</language>
- <gnome_support>True</gnome_support>
- <gettext_support>True</gettext_support>
- <use_widget_names>True</use_widget_names>
- <output_main_file>False</output_main_file>
- <output_support_files>False</output_support_files>
- <output_build_files>False</output_build_files>
- <gnome_help_support>True</gnome_help_support>
-</project>
-
-<widget>
- <class>GnomeDialog</class>
- <name>dialog1</name>
- <visible>False</visible>
- <type>GTK_WINDOW_TOPLEVEL</type>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>True</allow_grow>
- <auto_shrink>False</auto_shrink>
- <auto_close>False</auto_close>
- <hide_on_close>False</hide_on_close>
-
- <widget>
- <class>GtkVBox</class>
- <child_name>GnomeDialog:vbox</child_name>
- <name>dialog-vbox1</name>
- <homogeneous>False</homogeneous>
- <spacing>8</spacing>
- <child>
- <padding>4</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHButtonBox</class>
- <child_name>GnomeDialog:action_area</child_name>
- <name>dialog-action_area1</name>
- <layout_style>GTK_BUTTONBOX_END</layout_style>
- <spacing>8</spacing>
- <child_min_width>85</child_min_width>
- <child_min_height>27</child_min_height>
- <child_ipad_x>7</child_ipad_x>
- <child_ipad_y>0</child_ipad_y>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- <pack>GTK_PACK_END</pack>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>button1</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button3</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
- </widget>
- </widget>
-
- <widget>
- <class>GtkTable</class>
- <name>table-top</name>
- <rows>4</rows>
- <columns>1</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>6</row_spacing>
- <column_spacing>6</column_spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label1</name>
- <label>Name of new view:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <focus_target>entry-name</focus_target>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkEntry</class>
- <name>entry-name</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label2</name>
- <label>Type of view:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>2</top_attach>
- <bottom_attach>3</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow1</name>
- <hscrollbar_policy>GTK_POLICY_AUTOMATIC</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>3</top_attach>
- <bottom_attach>4</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>True</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkCList</class>
- <name>clist-type-list</name>
- <can_focus>True</can_focus>
- <columns>1</columns>
- <column_widths>80</column_widths>
- <selection_mode>GTK_SELECTION_SINGLE</selection_mode>
- <show_titles>False</show_titles>
- <shadow_type>GTK_SHADOW_IN</shadow_type>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>CList:title</child_name>
- <name>label5</name>
- <label>label5</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
-</widget>
-
-</GTK-Interface>
diff --git a/widgets/menus/gal-view-new-dialog.h b/widgets/menus/gal-view-new-dialog.h
deleted file mode 100644
index 87e187f400..0000000000
--- a/widgets/menus/gal-view-new-dialog.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* gal-view-new-dialog.h
- * Copyright (C) 2000 Helix Code, Inc.
- * Author: Chris Lahey <clahey@helixcode.com>
- *
- * This library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-#ifndef __GAL_VIEW_NEW_DIALOG_H__
-#define __GAL_VIEW_NEW_DIALOG_H__
-
-#include <glade/glade.h>
-#include <gal-view-collection.h>
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-/* GalViewNewDialog - A dialog displaying information about a contact.
- *
- * The following arguments are available:
- *
- * name type read/write description
- * --------------------------------------------------------------------------------
- */
-
-#define GAL_VIEW_NEW_DIALOG_TYPE (gal_view_new_dialog_get_type ())
-#define GAL_VIEW_NEW_DIALOG(obj) (GTK_CHECK_CAST ((obj), GAL_VIEW_NEW_DIALOG_TYPE, GalViewNewDialog))
-#define GAL_VIEW_NEW_DIALOG_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GAL_VIEW_NEW_DIALOG_TYPE, GalViewNewDialogClass))
-#define GAL_IS_VIEW_NEW_DIALOG(obj) (GTK_CHECK_TYPE ((obj), GAL_VIEW_NEW_DIALOG_TYPE))
-#define GAL_IS_VIEW_NEW_DIALOG_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), GAL_VIEW_NEW_DIALOG_TYPE))
-
-typedef struct _GalViewNewDialog GalViewNewDialog;
-typedef struct _GalViewNewDialogClass GalViewNewDialogClass;
-
-struct _GalViewNewDialog
-{
- GnomeDialog parent;
-
- /* item specific fields */
- GladeXML *gui;
-
- GalViewCollection *collection;
- GalViewFactory *selected_factory;
-};
-
-struct _GalViewNewDialogClass
-{
- GnomeDialogClass parent_class;
-};
-
-GtkWidget *gal_view_new_dialog_new (GalViewCollection *collection);
-GtkType gal_view_new_dialog_get_type (void);
-
-GtkWidget *gal_view_new_dialog_construct (GalViewNewDialog *dialog,
- GalViewCollection *collection);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* __GAL_VIEW_NEW_DIALOG_H__ */
diff --git a/widgets/menus/gal-view.c b/widgets/menus/gal-view.c
deleted file mode 100644
index f48a6f0026..0000000000
--- a/widgets/menus/gal-view.c
+++ /dev/null
@@ -1,210 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * gal-view.c: A View
- *
- * Authors:
- * Chris Lahey (clahey@helixcode.com)
- *
- * (C) 2000 Helix Code, Inc.
- */
-#include <config.h>
-#include <gtk/gtksignal.h>
-#include "gal-view.h"
-
-#define GV_CLASS(e) ((GalViewClass *)((GtkObject *)e)->klass)
-
-#define PARENT_TYPE gtk_object_get_type ()
-
-#define d(x)
-
-d(static gint depth = 0);
-
-
-static GtkObjectClass *gal_view_parent_class;
-
-enum {
- CHANGED,
- LAST_SIGNAL
-};
-
-static guint gal_view_signals [LAST_SIGNAL] = { 0, };
-
-/**
- * gal_view_edit
- * @view: The view to edit
- */
-void
-gal_view_edit (GalView *view)
-{
- g_return_if_fail (view != NULL);
- g_return_if_fail (GAL_IS_VIEW (view));
-
- if (GV_CLASS (view)->edit)
- GV_CLASS (view)->edit (view);
-}
-
-/**
- * gal_view_load
- * @view: The view to load to
- * @filename: The file to load from
- */
-void
-gal_view_load (GalView *view,
- const char *filename)
-{
- g_return_if_fail (view != NULL);
- g_return_if_fail (GAL_IS_VIEW (view));
-
- if (GV_CLASS (view)->load)
- GV_CLASS (view)->load (view, filename);
-}
-
-/**
- * gal_view_save
- * @view: The view to save
- * @filename: The file to save to
- */
-void
-gal_view_save (GalView *view,
- const char *filename)
-{
- g_return_if_fail (view != NULL);
- g_return_if_fail (GAL_IS_VIEW (view));
-
- if (GV_CLASS (view)->save)
- GV_CLASS (view)->save (view, filename);
-}
-
-/**
- * gal_view_get_title
- * @view: The view to query.
- *
- * Returns: The title of the view.
- */
-const char *
-gal_view_get_title (GalView *view)
-{
- g_return_val_if_fail (view != NULL, NULL);
- g_return_val_if_fail (GAL_IS_VIEW (view), NULL);
-
- if (GV_CLASS (view)->get_title)
- return GV_CLASS (view)->get_title (view);
- else
- return NULL;
-}
-
-/**
- * gal_view_set_title
- * @view: The view to set.
- * @title: The new title value.
- */
-void
-gal_view_set_title (GalView *view,
- const char *title)
-{
- g_return_if_fail (view != NULL);
- g_return_if_fail (GAL_IS_VIEW (view));
-
- if (GV_CLASS (view)->set_title)
- GV_CLASS (view)->set_title (view, title);
-}
-
-/**
- * gal_view_get_type_code
- * @view: The view to get.
- *
- * Returns: The type of the view.
- */
-const char *
-gal_view_get_type_code (GalView *view)
-{
- g_return_val_if_fail (view != NULL, NULL);
- g_return_val_if_fail (GAL_IS_VIEW (view), NULL);
-
- if (GV_CLASS (view)->get_type_code)
- return GV_CLASS (view)->get_type_code (view);
- else
- return NULL;
-}
-
-/**
- * gal_view_clone
- * @view: The view to clone.
- *
- * Returns: The clone.
- */
-GalView *
-gal_view_clone (GalView *view)
-{
- g_return_val_if_fail (view != NULL, NULL);
- g_return_val_if_fail (GAL_IS_VIEW (view), NULL);
-
- if (GV_CLASS (view)->clone)
- return GV_CLASS (view)->clone (view);
- else
- return NULL;
-}
-
-/**
- * gal_view_changed
- * @view: The view that changed.
- */
-void
-gal_view_changed (GalView *view)
-{
- g_return_if_fail (view != NULL);
- g_return_if_fail (GAL_IS_VIEW (view));
-
- gtk_signal_emit(GTK_OBJECT(view),
- gal_view_signals [CHANGED]);
-}
-
-static void
-gal_view_class_init (GtkObjectClass *object_class)
-{
- GalViewClass *klass = GAL_VIEW_CLASS(object_class);
- gal_view_parent_class = gtk_type_class (PARENT_TYPE);
-
- klass->edit = NULL;
- klass->load = NULL;
- klass->save = NULL;
- klass->get_title = NULL;
- klass->clone = NULL;
-
- klass->changed = NULL;
-
- gal_view_signals [CHANGED] =
- gtk_signal_new ("changed",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (GalViewClass, changed),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- gtk_object_class_add_signals (object_class, gal_view_signals, LAST_SIGNAL);
-}
-
-GtkType
-gal_view_get_type (void)
-{
- static guint type = 0;
-
- if (!type)
- {
- GtkTypeInfo info =
- {
- "GalView",
- sizeof (GalView),
- sizeof (GalViewClass),
- (GtkClassInitFunc) gal_view_class_init,
- NULL,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- type = gtk_type_unique (PARENT_TYPE, &info);
- }
-
- return type;
-}
diff --git a/widgets/menus/gal-view.h b/widgets/menus/gal-view.h
deleted file mode 100644
index 5cc7cc679c..0000000000
--- a/widgets/menus/gal-view.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _GAL_VIEW_H_
-#define _GAL_VIEW_H_
-
-#include <gtk/gtkobject.h>
-#include <gnome-xml/tree.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define GAL_VIEW_TYPE (gal_view_get_type ())
-#define GAL_VIEW(o) (GTK_CHECK_CAST ((o), GAL_VIEW_TYPE, GalView))
-#define GAL_VIEW_CLASS(k) (GTK_CHECK_CLASS_CAST((k), GAL_VIEW_TYPE, GalViewClass))
-#define GAL_IS_VIEW(o) (GTK_CHECK_TYPE ((o), GAL_VIEW_TYPE))
-#define GAL_IS_VIEW_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), GAL_VIEW_TYPE))
-
-typedef struct {
- GtkObject base;
-} GalView;
-
-typedef struct {
- GtkObjectClass parent_class;
-
- /*
- * Virtual methods
- */
- void (*edit) (GalView *view);
- void (*load) (GalView *view,
- const char *filename);
- void (*save) (GalView *view,
- const char *filename);
- const char *(*get_title) (GalView *view);
- void (*set_title) (GalView *view,
- const char *title);
- const char *(*get_type_code) (GalView *view);
- GalView *(*clone) (GalView *view);
-
- /* Signals */
- void (*changed) (GalView *view);
-} GalViewClass;
-
-/* Standard functions */
-GtkType gal_view_get_type (void);
-
-/* Open an editor dialog for this view. */
-void gal_view_edit (GalView *view);
-
-/* xml load and save functions */
-void gal_view_load (GalView *view,
- const char *filename);
-void gal_view_save (GalView *view,
- const char *filename);
-
-/* Title functions */
-const char *gal_view_get_title (GalView *view);
-void gal_view_set_title (GalView *view,
- const char *title);
-
-/* View type. */
-const char *gal_view_get_type_code (GalView *view);
-
-/* Cloning the view */
-GalView *gal_view_clone (GalView *view);
-
-/* Changed signal */
-void gal_view_changed (GalView *view);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _GAL_VIEW_H_ */
diff --git a/widgets/misc/.cvsignore b/widgets/misc/.cvsignore
deleted file mode 100644
index f7ea0db71c..0000000000
--- a/widgets/misc/.cvsignore
+++ /dev/null
@@ -1,11 +0,0 @@
-.deps
-.libs
-.pure
-Makefile
-Makefile.in
-*.lo
-*.la
-test-title-bar
-test-calendar
-test-dateedit
-test-dropdown-button \ No newline at end of file
diff --git a/widgets/misc/ChangeLog b/widgets/misc/ChangeLog
deleted file mode 100644
index 92e92a21b2..0000000000
--- a/widgets/misc/ChangeLog
+++ /dev/null
@@ -1,470 +0,0 @@
-2001-05-07 Gediminas Paulauskas <menesis@delfi.lt>
-
- * misc/e-filter-bar.h: xgettext does not find N_() in #defines. So
- created fake enum. Also removed spaces before "..."
-
-2001-04-24 Kjartan Maraas <kmaraas@gnome.org>
-
- * e-calendar-item.c, e-calendar.c, e-cell-date-edit.c,
- e-clipped-label.c, e-dateedit.c, e-dropdown-button:
- Added #include <glib.h> and moved corresponding local headers
- to the top.
-
-2001-04-15 Federico Mena Quintero <federico@ximian.com>
-
- * e-search-bar.c (e_search_bar_get_option_choice): New function,
- because it is ridiculous to have to hunt down object arguments to
- fetch values.
- (e_search_bar_get_text): Likewise.
- (impl_get_arg): Use the functions above so that we have to
- maintain only one version of the getters.
-
-2001-04-04 Kjartan Maraas <kmaraas@gnome.org>
-
- * e-calendar.c: More header fixes.
- * e-cell-date-edit.c: Same.
- * e-dateedit.[ch]: Same.
- * e-title-bar.c: Same here.
- * e-search-bar.c: More header fixes.
- * test-calendar.c: Same here.
-
-2001-03-29 Kjartan Maraas <kmaraas@gnome.org>
-
- * e-dropdown-button.c: Replace #include <gtk/gtk.h>
- * e-dropdown-button.h: Remove #include <gnome.h>
- * e-filter-bar.c: Replace #include <gtk/gtk.h>
- * e-filter-bar.h: Replace #include <gtk/gtk.h>
- * e-messagebox.c: Add #includes to count for removed <gnome.h> in
- e-messagebox.h:
- * e-messagebox.h: Replace #include <gnome.h>
- * e-search-bar.c: Replace #include <gnome.h>
- * e-search-bar.h: Same here
- * test-calendar.c: Remove #include <gnome.h>
- * test-dateedit.c: Replace #include <gnome.h>
- * test-dropdown-button.c: Same here.
- * test-title-bar.c: Same here.
-
-2001-03-22 Jeffrey Stedfast <fejj@ximian.com>
-
- * e-filter-bar.c (rule_editor_clicked): Validate the filter rule.
-
-2001-03-18 Damon Chaplin <damon@ximian.com>
-
- * e-cell-date-edit.c (e_cell_date_edit_show_time_invalid_warning):
- use gnome_dialog_run() to make the warning dialog modal. Also created
- a better warning message showing the format expected.
- Also used e_time_format_time() to format all times.
-
-2001-03-15 Not Zed <NotZed@Ximian.com>
-
- * e-filter-bar.c (menubar_activated): If we click on the edit
- menu, then bring up a rule editor. If the user adds/removes rules
- though, they are neither saved, nor added to the menu's. sigh.
-
-2001-03-04 Damon Chaplin <damon@ximian.com>
-
- * e-cell-date-edit.c: pretty much working now.
-
-2001-03-01 Not Zed <NotZed@Ximian.com>
-
- * e-filter-bar.c: New type of search bar that interacts with
- filter contexts to save filters etc. Still probably needs a
- little cleanpu.
-
-2001-02-28 Not Zed <NotZed@Ximian.com>
-
- * e-search-bar.c (add_dropdown): Save the dropdown menu in the
- struct too. Sigh, this is only so we can scan its content later,
- ick.
- (e_search_bar_set_menu_sensitive): New function to se tthe
- sentisitivty of menyu items based on id.
- (find_id): New function to find the row and widget for a specific
- id.
- (add_option): Renamed to set_option.
- (add_dropdown): Renamed to set_dropdown.
- (add_dropdown): ?New function to add a single item.
- (set_dropdown): Call add_dropdown to add each item.
- (e_search_bar_add_menu): New public function to add a single item.
-
-2001-02-27 Not Zed <NotZed@Ximian.com>
-
- * Makefile.am (libemiscwidgets_a_SOURCES): Added filter-bar.[ch].
-
- * e-search-bar.c (class_init): Init virtual functions.
- (e_search_bar_set_option):
- (e_search_bar_set_menu): virtualise calling.
- (e_search_bar_construct): Call virtual functions to setup menus.
-
- * e-search-bar.h (struct _ESearchBarClass): Virtualise
- add_dropdown/add_option, so certain base options can be created.
-
-2001-02-25 Damon Chaplin <damon@ximian.com>
-
- * e-cell-date-edit.[hc]: new files to implement an ECell for showing
- and editing dates & times. (Unfinished)
-
- * Makefile.am (libemiscwidgets_a_SOURCES): added e-cell-date-edit.[hc]
-
-2001-02-24 Not Zed <NotZed@Ximian.com>
-
- * e-search-bar.c (add_dropdown): Move the event box into the
- esb->dropdown_holder. Changed so it can be called again on the
- same esb, to rebuild the menu.
- (e_search_bar_set_menu): New function to (re)set the menu.
- (add_option): Setup so it can be re-called to rebuild the option
- list.
- (e_search_bar_set_option): New function to build the menu's.
-
-2001-02-05 Jeffrey Stedfast <fejj@ximian.com>
-
- * .cvsignore: Ignore test-dropdown-button
-
-2001-01-28 Ettore Perazzoli <ettore@ximian.com>
-
- * e-search-bar.c (add_spacer): Make the spacer 4 pixels wider.
- (add_dropdown): Put the dropdown button into an event box with a
- 1-pixel border, so that we match the [Hardcoded! Stupid GTK+!]
- border around the option menu.
-
-2001-01-28 Ettore Perazzoli <ettore@ximian.com>
-
- * e-dropdown-button.c (menu_deactivate_cb): New function to change
- the state of the toggle button when the pop-up menu disappears.
- (impl_clicked): Removed.
- (impl_button_press_event): New, implementation for
- `::button_press_event'. Pop-up the menu, and toggle the button.
- (class_init): Override `::button_press_event' with
- `impl_button_press_event'; don't override `::clicked' anymore.
-
- * e-dropdown-button.h, e-dropdown-button.c: Derive from
- `GtkToggleButton', instead of plain `GtkButton'.
-
-2001-01-27 Ettore Perazzoli <ettore@ximian.com>
-
- * e-search-bar.c (add_dropdown): Make the dropdown button
- non-focusable.
-
-2001-01-27 Ettore Perazzoli <ettore@ximian.com>
-
- * e-search-bar.c (e_search_bar_init): Don't create the widgets
- here.
- (e_search_bar_construct): New. Do it here instead.
- (e_search_bar_new): Call it. Added preconditions.
- (esb_pack_menubar): Removed.
- (add_dropdown): New.
- (add_option): New.
- (add_entry): New.
- (e_search_bar_construct): Use `add_dropdown()', `add_option()',
- `add_entry()'.
- (class_init): Renamed from `e_seearch_bar_class_init'.
- (init): Renamed from `e_search_bar_init'.
- (impl_destroy): Renamed from `e_search_bar_destroy'.
- (emit_menu_activated): Renamed from `esb_menu_activated'.
- (emit_query_changed): Renamed from `esb_query_changed'.
- (menubar_activated_cb): Renamed from `esb_menubar_activated'.
- (option_activated_cb): Renamed from `esb_option_activated'.
- (esb_entry_activated): Renamed from `esb_entry_activated'.
- (impl_set_arg): Renamed from `e_search_bar_set_arg'.
- (impl_get_arg): Renamed from `e_search_bar_get_arg'.
-
- * e-search-bar.h (struct _ESearchBar): Removed member `menubar';
- replaced it with `dropdown'.
-
-2001-01-27 Ettore Perazzoli <ettore@ximian.com>
-
- * e-dropdown-button.c (e_dropdown_button_construct): Removed
- @ui_info and @data args. Obviously I am not very smart at this
- time of the night.
- (e_dropdown_button_new): Likewise.
-
-2001-01-27 Ettore Perazzoli <ettore@ximian.com>
-
- * e-dropdown-button.c, e-dropdown-button.h: New.
-
-2001-01-25 Damon Chaplin <damon@ximian.com>
-
- * e-calendar-item.[hc]: e_calendar_item_get_date_range() now returns
- a boolean, which is FALSE if no dates are currently shown.
- Plus a couple of minor sanity checks.
-
-2001-01-19 Federico Mena Quintero <federico@ximian.com>
-
- * e-calendar.c (e_calendar_init): Unset the GTK_CAN_FOCUS flag on
- the ECalendar.
- (e_calendar_focus_in): Removed function since it did nothing.
- (e_calendar_focus_out): Likewise.
- (e_calendar_key_press): Likewise.
- (e_calendar_init): Turn off the GTK_CAN_FOCUS flag for both arrow
- buttons.
-
-2001-01-17 Federico Mena Quintero <federico@ximian.com>
-
- * e-calendar-item.c (e_calendar_item_set_max_days_sel): Make zero
- the minimum number of days that can be specified.
- (e_calendar_item_set_arg): We do need an update when the maximum
- number of selected days is changed.
- (e_calendar_item_set_max_days_sel): Request an update of the
- canvas item.
- (e_calendar_item_button_press): Do not start selecting days if the
- max_days_selected is less than 1.
-
-2001-01-17 Jeffrey Stedfast <fejj@ximian.com>
-
- * e-messagebox.c (e_message_box_get_id): Oops. Delete this. I
- never meant for this to get commit'd.
-
-2001-01-17 JP Rosevear <jpr@ximian.com>
-
- * e-messagebox.c (e_message_box_get_id): Dont remove the function, give
- it the proper name
-
-2001-01-17 Ettore Perazzoli <ettore@ximian.com>
-
- * e-messagebox.c (e_message_box_get_checkbox): Remove the version
- returning `const char *' as of course it doesn't compile. Please
- compile before committing.
-
-2001-01-17 Jeffrey Stedfast <fejj@ximian.com>
-
- * Makefile.am: Added e-messagebox to the build.
-
- * e-messagebox.[c,h]: Added a new messagebox window that contains
- a checkbox for "Don't show me this again."
-
-2001-01-16 Jason Leach <jasonleach@usa.net>
-
- * e-search-bar.[ch]: Moved here from $(toplevel)/filter.
-
-2000-12-22 JP Rosevear <jpr@helixcode.com>
-
- * e-calendar-item.h: add prototypes
-
- * e-calendar-item.c (e_calendar_item_init): Set max_days_selected to
- 1 and days_to_start_week_selection to -1 as documented in header
- (e_calendar_item_set_arg): use new accessor methods
- (e_calendar_item_get_arg): ditto
- (e_calendar_item_get_max_days_sel): accessor
- (e_calendar_item_set_max_days_sel): ditto
- (e_calendar_item_get_days_start_week_sel): ditto
- (e_calendar_item_set_days_start_week_sel): ditto
- (e_calendar_item_class_init): add display_popup argument
- (e_calendar_item_init): initialize display_popup member
- (e_calendar_item_get_arg): get display_popup member
- (e_calendar_item_set_arg): set display_popup member
- (e_calendar_item_button_press): only show the popup menu if the
- member is set
- (e_calendar_item_get_display_popup): acessor
- (e_calendar_item_set_display_popup): ditto
-
-2000-12-14 Federico Mena Quintero <federico@helixcode.com>
-
- * e-dateedit.h: #include <time.h>
-
-2000-12-08 JP Rosevear <jpr@helixcode.com>
-
- * e-calendar.c (e_calendar_destroy): Call the parent class destroyer
- as well
-
-2000-10-26 Damon Chaplin <damon@helixcode.com>
-
- * e-dateedit.[hc]: updated to emit "changed" when appropriate, which
- turned out to be amazingly difficult :(
- Also added e_date_edit_get/set_date() to get/set just the date.
- Added e_date_edit_date_is_valid() & e_date_edit_time_is_valid() so
- you can check if the user has tried to enter an invalid date.
- (All the get_date/time functions return the last valid date entered.)
-
- * test-dateedit.c: updated a bit.
-
-2000-11-02 Federico Mena Quintero <federico@helixcode.com>
-
- * e-dateedit.h (EDateEditClass): Removed the "time_changed"
- signal, since it was never being emitted in the first place. Time
- values *are* both date and time together anyways, so whenever one
- changes we should notify about the whole date/time value being
- changed.
- Renamed the remaining "date_changed" signal to just "changed".
-
- * e-dateedit.c (e_date_edit_class_init): Do not create the
- "time_changed" signal; rename the other one to "changed".
- (set_time): Moved the core functionality from
- e_date_edit_set_time() to here. This function just sets the
- widgets' values without emitting any signals.
- (e_date_edit_set_time): Emit the "changed" signal unconditionally.
- This is to be consistent with the rest of the GTK+ widgets, and it
- actually makes writing client code easier.
- (e_date_edit_new): Use set_time().
- (on_date_popup_now_button_clicked): Do not emit the signal here.
- (on_date_popup_none_button_clicked): Likewise.
- (e_date_edit_set_time_of_day): Emit the signal, since we do not
- call e_date_edit_set_time().
-
-2000-10-30 Kjartan Maraas <kmaraas@gnome.org>
-
- * e-calendar-item.c: #include <string.h> to get rid of warning.
- * e-clipped-label.c: Same here.
-
-2000-10-27 Federico Mena Quintero <federico@helixcode.com>
-
- * e-dateedit.c (e_date_edit_destroy): Do not unref the cal_popup
- since we already destroyed it.
-
-2000-10-11 Damon Chaplin <damon@helixcode.com>
-
- * e-calendar-item.c (e_calendar_item_recalc_sizes): fixed to
- recalculate min_cell_width/height in case the show_week_numbers option
- is changed.
-
- * e-dateedit.c: added support for hiding the date field, and added
- get/set_time_of_day() functions to get/set just the time.
-
-2000-09-30 Damon Chaplin <damon@helixcode.com>
-
- * e-calendar-item.c:
- * e-dateedit.c: better i18n of strftime strings.
-
-2000-09-29 Ettore Perazzoli <ettore@helixcode.com>
-
- * e-title-bar.c: New member `pin_gtk_pixmap' in
- `ETitleBarPrivate'. Signal "close_button_clicked" renamed to
- "button_clicked". Signal "title_button_press_event" renamed to
- "label_button_press_event".
- (init): Init new members.
- (close_button_realize_cb): Create the pin pixmap. Call
- `show_and_hide_pixmaps_according_to_mode()'.
- (e_title_bar_show_close_button): Renamed to
- `e_title_bar_show_button'.
- (e_title_bar_get_button_mode): New.
- (e_title_bar_set_button_mode): New.
-
-2000-09-23 Damon Chaplin <damon@helixcode.com>
-
- * e-calendar.c: use pixmaps instead of GtkArrows to look better.
- Also set the canvas window's background when realized so that we can
- set the button reliefs to none.
-
-2000-09-22 Damon Chaplin <damon@helixcode.com>
-
- * test-dateedit.c: updated a bit, adding a few EDateEdits with
- different options.
-
- * e-calendar-item.c (e_calendar_item_set_selection): aborted any
- current selection operation and initialize all of the selection fields.
- (e_calendar_item_unmap): new function to abort any current selection
- operation. Otherwise GnomeCanvas gets in a muddle about grabs.
-
- * e-dateedit.c: marked some strftime()/strptime() format strings for
- translation and used "%m/%d/%Y" instead of "%x" so we get the complete
- year number. Also changed e_date_edit_get_time() so it returns -2 if
- it can't parse the date or time, and -1 if it is explicitly set to
- None.
- (e_date_edit_parse_date): new function to parse the date string and
- add on the current century if a year of 0-99 is entered.
-
-2000-09-21 Damon Chaplin <damon@helixcode.com>
-
- * e-dateedit.c (on_date_button_clicked): only check return of strptime
- for NULL. It should now select the correct day set in the popup.
-
- * e-calendar.c:
- * e-calendar-item.c:
- * test-calendar.c: removed support for buttons within the ECalendar.
- It is cleaner to add them outside it, as EDateEdit does.
-
-2000-09-18 Dan Winship <danw@helixcode.com>
-
- * e-dateedit.c (_XOPEN_SOURCE): set this to 4 to specify how much
- X/Open we want with that.
-
-2000-09-18 Christopher James Lahey <clahey@helixcode.com>
-
- * Makefile.am: Added $(EXTRA_GNOME_CFLAGS) and
- $(EXTRA_GNOME_LIBS). Removed unneeded libraries.
-
- * e-calendar-item.c, e-calendar.c, e-calendar.h, e-title-bar.c:
- Fixed the #include lines to deal properly with gal.
-
- * e-scroll-frame.c, e-scroll-frame.h: Moved to gal.
-
-2000-09-11 Damon Chaplin <damon@helixcode.com>
-
- * Makefile.am (libemiscwidgets_a_SOURCES): added e-dateedit.[hc]
- and the test-dateedit app.
-
- * e-dateedit.[hc]: new widget to use instead of GnomeDateEdit. It
- uses the new ECalendar widget for the calendar and also supports
- "None", "Today" and "Now" buttons, and goes away with a single click.
-
- * test-dateedit.c: app to test the EDateEdit widget.
-
- * e-calendar-item.c: updated to support the EDateEdit better,
- mainly by adding the "move_selection_when_moving" arg so we can turn
- it off to keep the same day selected when changing the months shown.
-
-2000-09-05 Damon Chaplin <damon@helixcode.com>
-
- * e-calendar-item.c (e_calendar_item_draw_month): make sure we get
- the start_weekday since we need it for draw_days(). Fixes a drawing
- bug.
-
-2000-08-31 Damon Chaplin <damon@helixcode.com>
-
- * e-calendar-item.c (e_calendar_item_button_press):
- (e_calendar_item_button_release): grab/ungrab the pointer so we
- always get the button_release event.
-
-2000-08-30 Damon Chaplin <damon@helixcode.com>
-
- * e-calendar-item.[hc]:
- * e-calendar.[hc]: Updated.
-
-2000-08-10 Christopher James Lahey <clahey@helixcode.com>
-
- * e-calendar-item.c, e-calendar.c: Fixed some warnings.
-
-2000-07-25 Damon Chaplin <damon@helixcode.com>
-
- * e-calendar-item.h:
- * e-calendar.[hc]: new widget and canvas item to replace GtkCalendar.
- Not quite finished yet.
-
-2000-07-21 Ettore Perazzoli <ettore@helixcode.com>
-
- * e-title-bar.c (e_title_bar_set_title): We have a `EClippedLabel',
- not a `GtkLabel' here: use the right function to change the text.
-
-2000-07-12 Christopher James Lahey <clahey@helixcode.com>
-
- * e-scroll-frame.c: Tried rearranging the casts to try for a more
- correct computation.
-
-2000-07-08 Dan Winship <danw@helixcode.com>
-
- * e-scroll-frame.c (e_scroll_frame_add): comment out true but
- confused warning about non-scrollable widgets until Chris and/or
- Federico fix this correctly.
- (e_scroll_frame_size_allocate): If the available space for the
- child is less than the width/height of the frame, give the child
- an allocation of 0 rather than some small negative number cast to
- unsigned.
-
-2000-07-05 Dan Winship <danw@helixcode.com>
-
- * Makefile.am (INCLUDES): Set G_LOG_DOMAIN=__FILE__ rather than
- "e-title-bar" in all three widgets.
-
-2000-06-13 Anders Carlsson <andersca@gnu.org>
-
- * e-scroll-frame.c (e_scroll_frame_button_press): Control does
- horizontal scrolling, a la gimp.
-
-2000-06-11 Anders Carlsson <andersca@gnu.org>
-
- * e-scroll-frame.c (e_scroll_frame_button_press): Add support
- for mouse wheel scrolling in EScrollFrame.
-
-2000-06-10 Ettore Perazzoli <ettore@helixcode.com>
-
- * e-title-bar.c (close_button_realize_cb): Unref the pixmap and
- the mask.
-
diff --git a/widgets/misc/Makefile.am b/widgets/misc/Makefile.am
deleted file mode 100644
index 401aac64a0..0000000000
--- a/widgets/misc/Makefile.am
+++ /dev/null
@@ -1,78 +0,0 @@
-# FIXME we use the EClippedLabel widget from EShortcutBar. Probably
-# it should be moved somewhere else.
-
-INCLUDES = \
- -I$(top_srcdir) \
- -I$(top_srcdir)/widgets/shortcut-bar \
- $(EXTRA_GNOME_CFLAGS) \
- -DG_LOG_DOMAIN=__FILE__
-
-noinst_LIBRARIES = \
- libemiscwidgets.a
-
-libemiscwidgets_a_SOURCES = \
- e-calendar.c \
- e-calendar.h \
- e-calendar-item.c \
- e-calendar-item.h \
- e-cell-date-edit.c \
- e-cell-date-edit.h \
- e-clipped-label.c \
- e-clipped-label.h \
- e-dateedit.c \
- e-dateedit.h \
- e-dropdown-button.c \
- e-dropdown-button.h \
- e-filter-bar.c \
- e-filter-bar.h \
- e-messagebox.c \
- e-messagebox.h \
- e-search-bar.c \
- e-search-bar.h \
- e-title-bar.c \
- e-title-bar.h
-
-noinst_PROGRAMS = \
- test-calendar \
- test-dateedit \
- test-dropdown-button \
- test-title-bar
-
-# test-calendar
-
-test_calendar_SOURCES = \
- test-calendar.c
-
-test_calendar_LDADD = \
- ./libemiscwidgets.a \
- ../../e-util/libeutil.la \
- $(EXTRA_GNOME_LIBS)
-
-# test-dateedit
-
-test_dateedit_SOURCES = \
- test-dateedit.c
-
-test_dateedit_LDADD = \
- ./libemiscwidgets.a \
- ../../e-util/libeutil.la \
- $(EXTRA_GNOME_LIBS)
-
-# test-dropdown-button
-
-test_dropdown_button_SOURCES = \
- test-dropdown-button.c
-
-test_dropdown_button_LDADD = \
- ./libemiscwidgets.a \
- $(EXTRA_GNOME_LIBS)
-
-# test-title-bar
-
-test_title_bar_SOURCES = \
- test-title-bar.c
-
-test_title_bar_LDADD = \
- ./libemiscwidgets.a \
- $(EXTRA_GNOME_LIBS)
-
diff --git a/widgets/misc/e-calendar-item.c b/widgets/misc/e-calendar-item.c
deleted file mode 100644
index e17bf6aa62..0000000000
--- a/widgets/misc/e-calendar-item.c
+++ /dev/null
@@ -1,2886 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@helixcode.com>
- *
- * Copyright 2000, Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * ECalendarItem - canvas item displaying a calendar.
- */
-
-#include <config.h>
-
-#include "e-calendar-item.h"
-
-#include <time.h>
-#include <string.h>
-#include <glib.h>
-#include <gtk/gtkmain.h>
-#include <gtk/gtkmenu.h>
-#include <gtk/gtkmenuitem.h>
-#include <gtk/gtksignal.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <gal/util/e-util.h>
-
-/*
- * These are the padding sizes between various pieces of the calendar.
- */
-
-/* The minimum padding around the numbers in each cell/day. */
-#define E_CALENDAR_ITEM_MIN_CELL_XPAD 4
-#define E_CALENDAR_ITEM_MIN_CELL_YPAD 0
-
-/* Vertical padding. */
-#define E_CALENDAR_ITEM_YPAD_ABOVE_DAY_LETTERS 1
-#define E_CALENDAR_ITEM_YPAD_BELOW_DAY_LETTERS 0
-#define E_CALENDAR_ITEM_YPAD_ABOVE_CELLS 1
-#define E_CALENDAR_ITEM_YPAD_BELOW_CELLS 2
-
-/* Horizontal padding in the heading bars. */
-#define E_CALENDAR_ITEM_XPAD_BEFORE_MONTH_NAME_WITH_BUTTON 16
-#define E_CALENDAR_ITEM_XPAD_BEFORE_MONTH_NAME 3
-#define E_CALENDAR_ITEM_XPAD_AFTER_MONTH_NAME 3
-#define E_CALENDAR_ITEM_XPAD_AFTER_MONTH_NAME_WITH_BUTTON 16
-
-/* Horizontal padding in the month displays. */
-#define E_CALENDAR_ITEM_XPAD_BEFORE_WEEK_NUMBERS 4
-#define E_CALENDAR_ITEM_XPAD_AFTER_WEEK_NUMBERS 2
-#define E_CALENDAR_ITEM_XPAD_BEFORE_CELLS 1
-#define E_CALENDAR_ITEM_XPAD_AFTER_CELLS 4
-
-/* The number of rows & columns of days in each month. */
-#define E_CALENDAR_ROWS_PER_MONTH 6
-#define E_CALENDAR_COLS_PER_MONTH 7
-
-static const int e_calendar_item_days_in_month[12] = {
- 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
-};
-
-#define DAYS_IN_MONTH(year, month) \
- e_calendar_item_days_in_month[month] + (((month) == 1 \
- && ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))) ? 1 : 0)
-
-
-static void e_calendar_item_class_init (ECalendarItemClass *class);
-static void e_calendar_item_init (ECalendarItem *calitem);
-static void e_calendar_item_destroy (GtkObject *o);
-static void e_calendar_item_get_arg (GtkObject *o,
- GtkArg *arg,
- guint arg_id);
-static void e_calendar_item_set_arg (GtkObject *o,
- GtkArg *arg,
- guint arg_id);
-static void e_calendar_item_realize (GnomeCanvasItem *item);
-static void e_calendar_item_unrealize (GnomeCanvasItem *item);
-static void e_calendar_item_unmap (GnomeCanvasItem *item);
-static void e_calendar_item_update (GnomeCanvasItem *item,
- double *affine,
- ArtSVP *clip_path,
- int flags);
-static void e_calendar_item_draw (GnomeCanvasItem *item,
- GdkDrawable *drawable,
- int x,
- int y,
- int width,
- int height);
-static void e_calendar_item_draw_month (ECalendarItem *calitem,
- GdkDrawable *drawable,
- int x,
- int y,
- int width,
- int height,
- int row,
- int col);
-static void e_calendar_item_draw_day_numbers (ECalendarItem *calitem,
- GdkDrawable *drawable,
- int width,
- int height,
- int row,
- int col,
- int year,
- int month,
- int start_weekday,
- gint cells_x,
- gint cells_y);
-static double e_calendar_item_point (GnomeCanvasItem *item,
- double x,
- double y,
- int cx,
- int cy,
- GnomeCanvasItem **actual_item);
-static gint e_calendar_item_event (GnomeCanvasItem *item,
- GdkEvent *event);
-static gboolean e_calendar_item_button_press (ECalendarItem *calitem,
- GdkEvent *event);
-static gboolean e_calendar_item_button_release (ECalendarItem *calitem,
- GdkEvent *event);
-static gboolean e_calendar_item_motion (ECalendarItem *calitem,
- GdkEvent *event);
-
-static gboolean e_calendar_item_convert_position_to_day (ECalendarItem *calitem,
- gint x,
- gint y,
- gboolean round_empty_positions,
- gint *month_offset,
- gint *day,
- gboolean *entire_week);
-static void e_calendar_item_get_month_info (ECalendarItem *calitem,
- gint row,
- gint col,
- gint *first_day_offset,
- gint *days_in_month,
- gint *days_in_prev_month);
-static void e_calendar_item_recalc_sizes(ECalendarItem *calitem);
-
-static gint e_calendar_item_get_week_number (ECalendarItem *calitem,
- gint day,
- gint month,
- gint year);
-
-static void e_calendar_item_get_day_style (ECalendarItem *calitem,
- gint year,
- gint month,
- gint day,
- gint day_style,
- gboolean today,
- gboolean prev_or_next_month,
- gboolean selected,
- gboolean has_focus,
- gboolean drop_target,
- GdkColor **bg_color,
- GdkColor **fg_color,
- GdkColor **box_color,
- gboolean *bold);
-static void e_calendar_item_check_selection_end (ECalendarItem *calitem,
- gint start_month,
- gint start_day,
- gint *end_month,
- gint *end_day);
-static void e_calendar_item_check_selection_start(ECalendarItem *calitem,
- gint *start_month,
- gint *start_day,
- gint end_month,
- gint end_day);
-static void e_calendar_item_normalize_date (ECalendarItem *calitem,
- gint *year,
- gint *month);
-static void e_calendar_item_add_days_to_selection(ECalendarItem *calitem,
- gint days);
-static void e_calendar_item_round_up_selection (ECalendarItem *calitem,
- gint *month_offset,
- gint *day);
-static void e_calendar_item_round_down_selection (ECalendarItem *calitem,
- gint *month_offset,
- gint *day);
-static gint e_calendar_item_get_inclusive_days (ECalendarItem *calitem,
- gint start_month_offset,
- gint start_day,
- gint end_month_offset,
- gint end_day);
-static void e_calendar_item_ensure_valid_day (ECalendarItem *calitem,
- gint *month_offset,
- gint *day);
-static gboolean e_calendar_item_ensure_days_visible (ECalendarItem *calitem,
- gint start_year,
- gint start_month,
- gint start_day,
- gint end_year,
- gint end_month,
- gint end_day);
-static void e_calendar_item_show_popup_menu (ECalendarItem *calitem,
- GdkEventButton *event,
- gint month_offset);
-static void e_calendar_item_on_menu_item_activate(GtkWidget *menuitem,
- ECalendarItem *calitem);
-static void e_calendar_item_position_menu (GtkMenu *menu,
- gint *x,
- gint *y,
- gpointer user_data);
-static void e_calendar_item_date_range_changed (ECalendarItem *calitem);
-static void e_calendar_item_queue_signal_emission (ECalendarItem *calitem);
-static gboolean e_calendar_item_signal_emission_idle_cb (gpointer data);
-
-/* Our arguments. */
-enum {
- ARG_0,
- ARG_YEAR,
- ARG_MONTH,
- ARG_X1,
- ARG_Y1,
- ARG_X2,
- ARG_Y2,
- ARG_FONT,
- ARG_WEEK_NUMBER_FONT,
- ARG_ROW_HEIGHT,
- ARG_COLUMN_WIDTH,
- ARG_MINIMUM_ROWS,
- ARG_MINIMUM_COLUMNS,
- ARG_MAXIMUM_ROWS,
- ARG_MAXIMUM_COLUMNS,
- ARG_WEEK_START_DAY,
- ARG_SHOW_WEEK_NUMBERS,
- ARG_MAXIMUM_DAYS_SELECTED,
- ARG_DAYS_TO_START_WEEK_SELECTION,
- ARG_MOVE_SELECTION_WHEN_MOVING,
- ARG_ROUND_SELECTION_WHEN_MOVING,
- ARG_DISPLAY_POPUP
-};
-
-enum {
- DATE_RANGE_CHANGED,
- SELECTION_CHANGED,
- LAST_SIGNAL
-};
-
-
-static GnomeCanvasItemClass *parent_class;
-static guint e_calendar_item_signals[LAST_SIGNAL] = { 0 };
-
-
-E_MAKE_TYPE (e_calendar_item, "ECalendarItem", ECalendarItem,
- e_calendar_item_class_init, e_calendar_item_init,
- GNOME_TYPE_CANVAS_ITEM)
-
-
-static void
-e_calendar_item_class_init (ECalendarItemClass *class)
-{
- GtkObjectClass *object_class;
- GnomeCanvasItemClass *item_class;
-
- parent_class = gtk_type_class (gnome_canvas_item_get_type());
-
- object_class = (GtkObjectClass *) class;
- item_class = (GnomeCanvasItemClass *) class;
-
- gtk_object_add_arg_type ("ECalendarItem::year",
- GTK_TYPE_INT, GTK_ARG_READWRITE,
- ARG_YEAR);
- gtk_object_add_arg_type ("ECalendarItem::month",
- GTK_TYPE_INT, GTK_ARG_READWRITE,
- ARG_MONTH);
- gtk_object_add_arg_type ("ECalendarItem::x1",
- GTK_TYPE_DOUBLE, GTK_ARG_READWRITE,
- ARG_X1);
- gtk_object_add_arg_type ("ECalendarItem::y1",
- GTK_TYPE_DOUBLE, GTK_ARG_READWRITE,
- ARG_Y1);
- gtk_object_add_arg_type ("ECalendarItem::x2",
- GTK_TYPE_DOUBLE, GTK_ARG_READWRITE,
- ARG_X2);
- gtk_object_add_arg_type ("ECalendarItem::y2",
- GTK_TYPE_DOUBLE, GTK_ARG_READWRITE,
- ARG_Y2);
- gtk_object_add_arg_type ("ECalendarItem::font",
- GTK_TYPE_GDK_FONT, GTK_ARG_READWRITE,
- ARG_FONT);
- gtk_object_add_arg_type ("ECalendarItem::week_number_font",
- GTK_TYPE_GDK_FONT, GTK_ARG_READWRITE,
- ARG_WEEK_NUMBER_FONT);
- gtk_object_add_arg_type ("ECalendarItem::row_height",
- GTK_TYPE_INT, GTK_ARG_READABLE,
- ARG_ROW_HEIGHT);
- gtk_object_add_arg_type ("ECalendarItem::column_width",
- GTK_TYPE_INT, GTK_ARG_READABLE,
- ARG_COLUMN_WIDTH);
- gtk_object_add_arg_type ("ECalendarItem::minimum_rows",
- GTK_TYPE_INT, GTK_ARG_READWRITE,
- ARG_MINIMUM_ROWS);
- gtk_object_add_arg_type ("ECalendarItem::minimum_columns",
- GTK_TYPE_INT, GTK_ARG_READWRITE,
- ARG_MINIMUM_COLUMNS);
- gtk_object_add_arg_type ("ECalendarItem::maximum_rows",
- GTK_TYPE_INT, GTK_ARG_READWRITE,
- ARG_MAXIMUM_ROWS);
- gtk_object_add_arg_type ("ECalendarItem::maximum_columns",
- GTK_TYPE_INT, GTK_ARG_READWRITE,
- ARG_MAXIMUM_COLUMNS);
- gtk_object_add_arg_type ("ECalendarItem::week_start_day",
- GTK_TYPE_INT, GTK_ARG_READWRITE,
- ARG_WEEK_START_DAY);
- gtk_object_add_arg_type ("ECalendarItem::show_week_numbers",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE,
- ARG_SHOW_WEEK_NUMBERS);
- gtk_object_add_arg_type ("ECalendarItem::maximum_days_selected",
- GTK_TYPE_INT, GTK_ARG_READWRITE,
- ARG_MAXIMUM_DAYS_SELECTED);
- gtk_object_add_arg_type ("ECalendarItem::days_to_start_week_selection",
- GTK_TYPE_INT, GTK_ARG_READWRITE,
- ARG_DAYS_TO_START_WEEK_SELECTION);
- gtk_object_add_arg_type ("ECalendarItem::move_selection_when_moving",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE,
- ARG_MOVE_SELECTION_WHEN_MOVING);
- gtk_object_add_arg_type ("ECalendarItem::round_selection_when_moving",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE,
- ARG_ROUND_SELECTION_WHEN_MOVING);
- gtk_object_add_arg_type ("ECalendarItem::display_popup",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE,
- ARG_DISPLAY_POPUP);
-
- e_calendar_item_signals[DATE_RANGE_CHANGED] =
- gtk_signal_new ("date_range_changed",
- GTK_RUN_FIRST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ECalendarItemClass, date_range_changed),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
- e_calendar_item_signals[SELECTION_CHANGED] =
- gtk_signal_new ("selection_changed",
- GTK_RUN_FIRST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ECalendarItemClass, selection_changed),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- gtk_object_class_add_signals (object_class, e_calendar_item_signals,
- LAST_SIGNAL);
-
-
- object_class->destroy = e_calendar_item_destroy;
- object_class->get_arg = e_calendar_item_get_arg;
- object_class->set_arg = e_calendar_item_set_arg;
-
- /* GnomeCanvasItem method overrides */
- item_class->realize = e_calendar_item_realize;
- item_class->unrealize = e_calendar_item_unrealize;
- item_class->unmap = e_calendar_item_unmap;
- item_class->update = e_calendar_item_update;
- item_class->draw = e_calendar_item_draw;
- item_class->point = e_calendar_item_point;
- item_class->event = e_calendar_item_event;
-
- class->date_range_changed = NULL;
- class->selection_changed = NULL;
-}
-
-
-static void
-e_calendar_item_init (ECalendarItem *calitem)
-{
- struct tm *tmp_tm;
- time_t t;
-
- /* Set the default time to the current month. */
- t = time (NULL);
- tmp_tm = localtime (&t);
- calitem->year = tmp_tm->tm_year + 1900;
- calitem->month = tmp_tm->tm_mon;
-
- calitem->styles = NULL;
-
- calitem->min_cols = 1;
- calitem->min_rows = 1;
- calitem->max_cols = -1;
- calitem->max_rows = -1;
-
- calitem->rows = 0;
- calitem->cols = 0;
-
- calitem->show_week_numbers = FALSE;
- calitem->week_start_day = 0;
- calitem->expand = TRUE;
- calitem->max_days_selected = 1;
- calitem->days_to_start_week_selection = -1;
- calitem->move_selection_when_moving = TRUE;
- calitem->round_selection_when_moving = FALSE;
- calitem->display_popup = TRUE;
-
- calitem->x1 = 0.0;
- calitem->y1 = 0.0;
- calitem->x2 = 0.0;
- calitem->y2 = 0.0;
-
- calitem->selection_set = FALSE;
-
- calitem->selection_changed = FALSE;
- calitem->date_range_changed = FALSE;
-
- calitem->style_callback = NULL;
- calitem->style_callback_destroy = NULL;
-
- /* Translators: These are the first characters of each day of the
- week, 'M' for 'Monday', 'T' for Tuesday etc. */
- calitem->days = _("MTWTFSS");
-
- calitem->signal_emission_idle_id = 0;
-}
-
-
-static void
-e_calendar_item_destroy (GtkObject *o)
-{
- ECalendarItem *calitem;
-
- calitem = E_CALENDAR_ITEM (o);
-
- e_calendar_item_set_style_callback (calitem, NULL, NULL, NULL);
-
- g_free (calitem->styles);
-
- if (calitem->signal_emission_idle_id != 0) {
- g_source_remove (calitem->signal_emission_idle_id);
- calitem->signal_emission_idle_id = 0;
- }
-
- if (calitem->old_font)
- gdk_font_unref (calitem->old_font);
- if (calitem->old_week_number_font)
- gdk_font_unref (calitem->old_week_number_font);
-}
-
-
-static void
-e_calendar_item_get_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- GnomeCanvasItem *item;
- ECalendarItem *calitem;
-
- item = GNOME_CANVAS_ITEM (o);
- calitem = E_CALENDAR_ITEM (o);
-
- switch (arg_id) {
- case ARG_YEAR:
- GTK_VALUE_INT (*arg) = calitem->year;
- break;
- case ARG_MONTH:
- GTK_VALUE_INT (*arg) = calitem->month;
- break;
- case ARG_X1:
- GTK_VALUE_DOUBLE (*arg) = calitem->x1;
- break;
- case ARG_Y1:
- GTK_VALUE_DOUBLE (*arg) = calitem->y1;
- break;
- case ARG_X2:
- GTK_VALUE_DOUBLE (*arg) = calitem->x2;
- break;
- case ARG_Y2:
- GTK_VALUE_DOUBLE (*arg) = calitem->y2;
- break;
- case ARG_FONT:
- GTK_VALUE_BOXED (*arg) = calitem->font;
- break;
- case ARG_WEEK_NUMBER_FONT:
- GTK_VALUE_BOXED (*arg) = calitem->week_number_font;
- break;
- case ARG_ROW_HEIGHT:
- e_calendar_item_recalc_sizes (calitem);
- GTK_VALUE_INT (*arg) = calitem->min_month_height;
- break;
- case ARG_COLUMN_WIDTH:
- e_calendar_item_recalc_sizes (calitem);
- GTK_VALUE_INT (*arg) = calitem->min_month_width;
- break;
- case ARG_MINIMUM_ROWS:
- GTK_VALUE_INT (*arg) = calitem->min_rows;
- break;
- case ARG_MINIMUM_COLUMNS:
- GTK_VALUE_INT (*arg) = calitem->min_cols;
- break;
- case ARG_MAXIMUM_ROWS:
- GTK_VALUE_INT (*arg) = calitem->max_rows;
- break;
- case ARG_MAXIMUM_COLUMNS:
- GTK_VALUE_INT (*arg) = calitem->max_cols;
- break;
- case ARG_WEEK_START_DAY:
- GTK_VALUE_INT (*arg) = calitem->week_start_day;
- break;
- case ARG_SHOW_WEEK_NUMBERS:
- GTK_VALUE_BOOL (*arg) = calitem->show_week_numbers;
- break;
- case ARG_MAXIMUM_DAYS_SELECTED:
- GTK_VALUE_INT (*arg) = e_calendar_item_get_max_days_sel (calitem);
- break;
- case ARG_DAYS_TO_START_WEEK_SELECTION:
- GTK_VALUE_INT (*arg) = e_calendar_item_get_days_start_week_sel (calitem);
- break;
- case ARG_MOVE_SELECTION_WHEN_MOVING:
- GTK_VALUE_BOOL (*arg) = calitem->move_selection_when_moving;
- break;
- case ARG_ROUND_SELECTION_WHEN_MOVING:
- GTK_VALUE_BOOL (*arg) = calitem->round_selection_when_moving;
- break;
- case ARG_DISPLAY_POPUP:
- GTK_VALUE_BOOL (*arg) = e_calendar_item_get_display_popup (calitem);
- break;
- default:
- g_warning ("Invalid arg");
- }
-}
-
-
-static void
-e_calendar_item_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- GnomeCanvasItem *item;
- ECalendarItem *calitem;
- GdkFont *font;
- gboolean need_update = FALSE;
- gdouble dvalue;
- gint ivalue;
- gboolean bvalue;
-
- item = GNOME_CANVAS_ITEM (o);
- calitem = E_CALENDAR_ITEM (o);
-
- switch (arg_id){
- case ARG_YEAR:
- ivalue = GTK_VALUE_INT (*arg);
- e_calendar_item_set_first_month (calitem, ivalue,
- calitem->month);
- break;
- case ARG_MONTH:
- ivalue = GTK_VALUE_INT (*arg);
- e_calendar_item_set_first_month (calitem, calitem->year,
- ivalue);
- break;
- case ARG_X1:
- dvalue = GTK_VALUE_DOUBLE (*arg);
- if (calitem->x1 != dvalue) {
- calitem->x1 = dvalue;
- need_update = TRUE;
- }
- break;
- case ARG_Y1:
- dvalue = GTK_VALUE_DOUBLE (*arg);
- if (calitem->y1 != dvalue) {
- calitem->y1 = dvalue;
- need_update = TRUE;
- }
- break;
- case ARG_X2:
- dvalue = GTK_VALUE_DOUBLE (*arg);
- if (calitem->x2 != dvalue) {
- calitem->x2 = dvalue;
- need_update = TRUE;
- }
- break;
- case ARG_Y2:
- dvalue = GTK_VALUE_DOUBLE (*arg);
- if (calitem->y2 != dvalue) {
- calitem->y2 = dvalue;
- need_update = TRUE;
- }
- break;
- case ARG_FONT:
- font = GTK_VALUE_BOXED (*arg);
- if (calitem->font != font) {
- if (calitem->font)
- gdk_font_unref (calitem->font);
- calitem->font = font;
- if (font)
- gdk_font_ref (font);
- need_update = TRUE;
- }
- break;
- case ARG_WEEK_NUMBER_FONT:
- font = GTK_VALUE_BOXED (*arg);
- if (calitem->week_number_font != font) {
- if (calitem->week_number_font)
- gdk_font_unref (calitem->week_number_font);
- calitem->week_number_font = font;
- if (font)
- gdk_font_ref (font);
- need_update = TRUE;
- }
- break;
- case ARG_MINIMUM_ROWS:
- ivalue = GTK_VALUE_INT (*arg);
- ivalue = MAX (1, ivalue);
- if (calitem->min_rows != ivalue) {
- calitem->min_rows = ivalue;
- need_update = TRUE;
- }
- break;
- case ARG_MINIMUM_COLUMNS:
- ivalue = GTK_VALUE_INT (*arg);
- ivalue = MAX (1, ivalue);
- if (calitem->min_cols != ivalue) {
- calitem->min_cols = ivalue;
- need_update = TRUE;
- }
- break;
- case ARG_MAXIMUM_ROWS:
- ivalue = GTK_VALUE_INT (*arg);
- if (calitem->max_rows != ivalue) {
- calitem->max_rows = ivalue;
- need_update = TRUE;
- }
- break;
- case ARG_MAXIMUM_COLUMNS:
- ivalue = GTK_VALUE_INT (*arg);
- if (calitem->max_cols != ivalue) {
- calitem->max_cols = ivalue;
- need_update = TRUE;
- }
- break;
- case ARG_WEEK_START_DAY:
- ivalue = GTK_VALUE_INT (*arg);
- if (calitem->week_start_day != ivalue) {
- calitem->week_start_day = ivalue;
- need_update = TRUE;
- }
- break;
- case ARG_SHOW_WEEK_NUMBERS:
- bvalue = GTK_VALUE_BOOL (*arg);
- if (calitem->show_week_numbers != bvalue) {
- calitem->show_week_numbers = bvalue;
- need_update = TRUE;
- }
- break;
- case ARG_MAXIMUM_DAYS_SELECTED:
- ivalue = GTK_VALUE_INT (*arg);
- e_calendar_item_set_max_days_sel (calitem, ivalue);
- break;
- case ARG_DAYS_TO_START_WEEK_SELECTION:
- ivalue = GTK_VALUE_INT (*arg);
- e_calendar_item_set_days_start_week_sel (calitem, ivalue);
- break;
- case ARG_MOVE_SELECTION_WHEN_MOVING:
- bvalue = GTK_VALUE_BOOL (*arg);
- calitem->move_selection_when_moving = bvalue;
- break;
- case ARG_ROUND_SELECTION_WHEN_MOVING:
- bvalue = GTK_VALUE_BOOL (*arg);
- calitem->round_selection_when_moving = bvalue;
- break;
- case ARG_DISPLAY_POPUP:
- bvalue = GTK_VALUE_BOOL (*arg);
- e_calendar_item_set_display_popup (calitem, bvalue);
- break;
- default:
- g_warning ("Invalid arg");
- }
-
- if (need_update) {
- gnome_canvas_item_request_update (item);
- }
-}
-
-
-static void
-e_calendar_item_realize (GnomeCanvasItem *item)
-{
- ECalendarItem *calitem;
- GdkColormap *colormap;
- gboolean success[E_CALENDAR_ITEM_COLOR_LAST];
- gint nfailed;
-
- if (GNOME_CANVAS_ITEM_CLASS (parent_class)->realize)
- (* GNOME_CANVAS_ITEM_CLASS (parent_class)->realize) (item);
-
- calitem = E_CALENDAR_ITEM (item);
-
- colormap = gtk_widget_get_colormap (GTK_WIDGET (item->canvas));
-
- calitem->colors[E_CALENDAR_ITEM_COLOR_TODAY_BOX].red = 65535;
- calitem->colors[E_CALENDAR_ITEM_COLOR_TODAY_BOX].green = 0;
- calitem->colors[E_CALENDAR_ITEM_COLOR_TODAY_BOX].blue = 0;
-
- calitem->colors[E_CALENDAR_ITEM_COLOR_SELECTION_FG].red = 65535;
- calitem->colors[E_CALENDAR_ITEM_COLOR_SELECTION_FG].green = 65535;
- calitem->colors[E_CALENDAR_ITEM_COLOR_SELECTION_FG].blue = 65535;
-
- calitem->colors[E_CALENDAR_ITEM_COLOR_SELECTION_BG].red = 47000;
- calitem->colors[E_CALENDAR_ITEM_COLOR_SELECTION_BG].green = 47000;
- calitem->colors[E_CALENDAR_ITEM_COLOR_SELECTION_BG].blue = 48000;
-
- calitem->colors[E_CALENDAR_ITEM_COLOR_PREV_OR_NEXT_MONTH_FG].red = 47000;
- calitem->colors[E_CALENDAR_ITEM_COLOR_PREV_OR_NEXT_MONTH_FG].green = 47000;
- calitem->colors[E_CALENDAR_ITEM_COLOR_PREV_OR_NEXT_MONTH_FG].blue = 48000;
-
- nfailed = gdk_colormap_alloc_colors (colormap, calitem->colors,
- E_CALENDAR_ITEM_COLOR_LAST, FALSE,
- TRUE, success);
- if (nfailed)
- g_warning ("Failed to allocate all colors");
-}
-
-
-static void
-e_calendar_item_unrealize (GnomeCanvasItem *item)
-{
- ECalendarItem *calitem;
- GdkColormap *colormap;
- gint i;
-
- calitem = E_CALENDAR_ITEM (item);
-
- colormap = gtk_widget_get_colormap (GTK_WIDGET (item->canvas));
-
- for (i = 0; i < E_CALENDAR_ITEM_COLOR_LAST; i++)
- gdk_colors_free (colormap, &calitem->colors[i].pixel, 1, 0);
-
- if (GNOME_CANVAS_ITEM_CLASS (parent_class)->unrealize)
- (* GNOME_CANVAS_ITEM_CLASS (parent_class)->unrealize) (item);
-}
-
-
-static void
-e_calendar_item_unmap (GnomeCanvasItem *item)
-{
- ECalendarItem *calitem;
-
- calitem = E_CALENDAR_ITEM (item);
-
- if (calitem->selecting) {
- gnome_canvas_item_ungrab (item, GDK_CURRENT_TIME);
- calitem->selecting = FALSE;
- }
-
- if (GNOME_CANVAS_ITEM_CLASS (parent_class)->unmap)
- (* GNOME_CANVAS_ITEM_CLASS (parent_class)->unmap) (item);
-}
-
-
-static void
-e_calendar_item_update (GnomeCanvasItem *item,
- double *affine,
- ArtSVP *clip_path,
- int flags)
-{
- ECalendarItem *calitem;
- GtkStyle *style;
- GdkFont *font;
- gint char_height, width, height, space, space_per_cal, space_per_cell;
- gint rows, cols, xthickness, ythickness;
-
- if (GNOME_CANVAS_ITEM_CLASS (parent_class)->update)
- (* GNOME_CANVAS_ITEM_CLASS (parent_class)->update) (item, affine, clip_path, flags);
-
- calitem = E_CALENDAR_ITEM (item);
- style = GTK_WIDGET (item->canvas)->style;
- xthickness = style->klass->xthickness;
- ythickness = style->klass->ythickness;
-
- item->x1 = calitem->x1;
- item->y1 = calitem->y1;
- item->x2 = calitem->x2 >= calitem->x1 ? calitem->x2 : calitem->x1;
- item->y2 = calitem->y2 >= calitem->y1 ? calitem->y2 : calitem->y1;
-
- /*
- * Calculate the new layout of the calendar.
- */
-
- /* Make sure the minimum row width & cell height and the widths of
- all the digits and characters are up to date. */
- e_calendar_item_recalc_sizes (calitem);
-
- /* Calculate how many rows & cols we can fit in. */
- width = item->x2 - item->x1;
- height = item->y2 - item->y1;
-
- width -= xthickness * 2;
- height -= ythickness * 2;
-
- if (calitem->min_month_height == 0)
- rows = 1;
- else
- rows = height / calitem->min_month_height;
- rows = MAX (rows, calitem->min_rows);
- if (calitem->max_rows > 0)
- rows = MIN (rows, calitem->max_rows);
-
- if (calitem->min_month_width == 0)
- cols = 1;
- else
- cols = width / calitem->min_month_width;
- cols = MAX (cols, calitem->min_cols);
- if (calitem->max_cols > 0)
- cols = MIN (cols, calitem->max_cols);
-
- if (rows != calitem->rows || cols != calitem->cols)
- e_calendar_item_date_range_changed (calitem);
-
- calitem->rows = rows;
- calitem->cols = cols;
-
- /* Split up the empty space according to the configuration.
- If the calendar is set to expand, we divide the space between the
- cells and the spaces around the calendar, otherwise we place the
- calendars in the center of the available area. */
-
- font = calitem->font;
- if (!font)
- font = style->font;
- char_height = font->ascent + font->descent;
-
- calitem->month_width = calitem->min_month_width;
- calitem->month_height = calitem->min_month_height;
- calitem->cell_width = calitem->max_digit_width * 2
- + E_CALENDAR_ITEM_MIN_CELL_XPAD;
- calitem->cell_height = char_height
- + E_CALENDAR_ITEM_MIN_CELL_YPAD;
- calitem->month_tpad = 0;
- calitem->month_bpad = 0;
- calitem->month_lpad = 0;
- calitem->month_rpad = 0;
-
- space = height - calitem->rows * calitem->month_height;
- if (space > 0) {
- space_per_cal = space / calitem->rows;
- calitem->month_height += space_per_cal;
-
- if (calitem->expand) {
- space_per_cell = space_per_cal / E_CALENDAR_ROWS_PER_MONTH;
- calitem->cell_height += space_per_cell;
- space_per_cal -= space_per_cell * E_CALENDAR_ROWS_PER_MONTH;
- }
-
- calitem->month_tpad = space_per_cal / 2;
- calitem->month_bpad = space_per_cal - calitem->month_tpad;
- }
-
- space = width - calitem->cols * calitem->month_width;
- if (space > 0) {
- space_per_cal = space / calitem->cols;
- calitem->month_width += space_per_cal;
- space -= space_per_cal * calitem->cols;
-
- if (calitem->expand) {
- space_per_cell = space_per_cal / E_CALENDAR_COLS_PER_MONTH;
- calitem->cell_width += space_per_cell;
- space_per_cal -= space_per_cell * E_CALENDAR_COLS_PER_MONTH;
- }
-
- calitem->month_lpad = space_per_cal / 2;
- calitem->month_rpad = space_per_cal - calitem->month_lpad;
- }
-
- space = MAX (0, space);
- calitem->x_offset = space / 2;
-
- gnome_canvas_request_redraw (item->canvas, item->x1, item->y1,
- item->x2, item->y2);
-}
-
-
-/*
- * DRAWING ROUTINES - functions to paint the canvas item.
- */
-
-static void
-e_calendar_item_draw (GnomeCanvasItem *canvas_item,
- GdkDrawable *drawable,
- int x,
- int y,
- int width,
- int height)
-{
- ECalendarItem *calitem;
- GtkStyle *style;
- GdkFont *font;
- GdkGC *base_gc, *bg_gc;
- gint char_height, row, col, row_y, bar_height, col_x;
- gint xthickness, ythickness;
-
-#if 0
- g_print ("In e_calendar_item_draw %i,%i %ix%i\n",
- x, y, width, height);
-#endif
- calitem = E_CALENDAR_ITEM (canvas_item);
- style = GTK_WIDGET (canvas_item->canvas)->style;
- font = calitem->font;
- if (!font)
- font = style->font;
- char_height = font->ascent + font->descent;
- xthickness = style->klass->xthickness;
- ythickness = style->klass->ythickness;
- base_gc = style->base_gc[GTK_STATE_NORMAL];
- bg_gc = style->bg_gc[GTK_STATE_NORMAL];
-
- /* Clear the entire background. */
- gdk_draw_rectangle (drawable, base_gc, TRUE,
- calitem->x1 - x, calitem->y1 - y,
- calitem->x2 - calitem->x1 + 1,
- calitem->y2 - calitem->y1 + 1);
-
- /* Draw the shadow around the entire item. */
- gtk_draw_shadow (style, drawable,
- GTK_STATE_NORMAL, GTK_SHADOW_IN,
- calitem->x1 - x, calitem->y1 - y,
- calitem->x2 - calitem->x1 + 1,
- calitem->y2 - calitem->y1 + 1);
-
- row_y = canvas_item->y1 + ythickness;
- bar_height = ythickness * 2
- + E_CALENDAR_ITEM_YPAD_ABOVE_MONTH_NAME + char_height
- + E_CALENDAR_ITEM_YPAD_BELOW_MONTH_NAME;
-
- for (row = 0; row < calitem->rows; row++) {
- /* Draw the background for the title bars and the shadow around
- it, and the vertical lines between columns. */
-
- gdk_draw_rectangle (drawable, bg_gc, TRUE,
- calitem->x1 + xthickness - x, row_y - y,
- calitem->x2 - calitem->x1 + 1
- - xthickness * 2,
- bar_height);
-
- gtk_draw_shadow (style, drawable,
- GTK_STATE_NORMAL, GTK_SHADOW_OUT,
- calitem->x1 + xthickness - x, row_y - y,
- calitem->x2 - calitem->x1 + 1
- - xthickness * 2,
- bar_height);
-
-
- for (col = 0; col < calitem->cols; col++) {
- if (col != 0) {
- col_x = calitem->x1 + calitem->x_offset
- + calitem->month_width * col;
- gtk_draw_vline (style, drawable,
- GTK_STATE_NORMAL,
- row_y + ythickness + 1 - y,
- row_y + bar_height
- - ythickness - 2 - y,
- col_x - 1 - x);
- }
-
-
- e_calendar_item_draw_month (calitem, drawable, x, y,
- width, height, row, col);
- }
-
- row_y += calitem->month_height;
- }
-}
-
-
-static void
-e_calendar_item_draw_month (ECalendarItem *calitem,
- GdkDrawable *drawable,
- int x,
- int y,
- int width,
- int height,
- int row,
- int col)
-{
- GnomeCanvasItem *item;
- GtkWidget *widget;
- GtkStyle *style;
- GdkFont *font;
- GdkGC *fg_gc;
- struct tm tmp_tm;
- GdkRectangle clip_rect;
- gint char_height, xthickness, ythickness, start_weekday;
- gint year, month;
- gint month_x, month_y, month_w, month_h;
- gint min_x, max_x, text_x, text_y;
- gint day, day_index, cells_x, cells_y, min_cell_width, text_width;
- gint clip_width, clip_height;
- gchar buffer[64];
-
-#if 0
- g_print ("In e_calendar_item_draw_month: %i,%i %ix%i row:%i col:%i\n",
- x, y, width, height, row, col);
-#endif
- item = GNOME_CANVAS_ITEM (calitem);
- widget = GTK_WIDGET (item->canvas);
- style = widget->style;
- font = calitem->font;
- if (!font)
- font = style->font;
- char_height = font->ascent + font->descent;
- xthickness = style->klass->xthickness;
- ythickness = style->klass->ythickness;
- fg_gc = style->fg_gc[GTK_STATE_NORMAL];
-
- /* Calculate the top-left position of the entire month display. */
- month_x = item->x1 + xthickness + calitem->x_offset
- + col * calitem->month_width - x;
- month_w = item->x2 - item->x1 - xthickness * 2;
- month_w = MIN (month_w, calitem->month_width);
- month_y = item->y1 + ythickness + row * calitem->month_height - y;
- month_h = item->y2 - item->y1 - ythickness * 2;
- month_h = MIN (month_h, calitem->month_height);
-
- /* Just return if the month is outside the given area. */
- if (month_x >= width || month_x + calitem->month_width <= 0
- || month_y >= height || month_y + calitem->month_height <= 0)
- return;
-
- month = calitem->month + row * calitem->cols + col;
- year = calitem->year + month / 12;
- month %= 12;
-
- /* Draw the month name & year, with clipping. Note that the top row
- needs extra space around it for the buttons. */
- if (row == 0 && col == 0)
- min_x = E_CALENDAR_ITEM_XPAD_BEFORE_MONTH_NAME_WITH_BUTTON;
- else
- min_x = E_CALENDAR_ITEM_XPAD_BEFORE_MONTH_NAME;
-
- max_x = month_w;
- if (row == 0 && col == calitem->cols - 1)
- max_x -= E_CALENDAR_ITEM_XPAD_AFTER_MONTH_NAME_WITH_BUTTON;
- else
- max_x -= E_CALENDAR_ITEM_XPAD_AFTER_MONTH_NAME;
-
- text_y = month_y + style->klass->ythickness
- + E_CALENDAR_ITEM_YPAD_ABOVE_MONTH_NAME;
- clip_rect.x = month_x + min_x;
- clip_rect.x = MAX (0, clip_rect.x);
- clip_rect.y = MAX (0, text_y);
-
- memset (&tmp_tm, 0, sizeof (tmp_tm));
- tmp_tm.tm_year = year - 1900;
- tmp_tm.tm_mon = month;
- tmp_tm.tm_mday = 1;
- tmp_tm.tm_isdst = -1;
- mktime (&tmp_tm);
- start_weekday = (tmp_tm.tm_wday + 6) % 7;
-
- if (month_x + max_x - clip_rect.x > 0) {
- clip_rect.width = month_x + max_x - clip_rect.x;
- clip_rect.height = text_y + char_height - clip_rect.y;
- gdk_gc_set_clip_rectangle (fg_gc, &clip_rect);
-
- /* This is a strftime() format. %B = Month name, %Y = Year. */
- strftime (buffer, sizeof (buffer), _("%B %Y"), &tmp_tm);
-
- /* Ideally we place the text centered in the month, but we
- won't go to the left of the minimum x position. */
- text_width = gdk_string_width (font, buffer);
- text_x = (calitem->month_width - text_width) / 2;
- text_x = MAX (min_x, text_x);
-
- gdk_draw_string (drawable, font, fg_gc,
- month_x + text_x, text_y + font->ascent, buffer);
- }
-
- /* Set the clip rectangle for the main month display. */
- clip_rect.x = MAX (0, month_x);
- clip_rect.y = MAX (0, month_y);
- clip_width = month_x + month_w - clip_rect.x;
- clip_height = month_y + month_h - clip_rect.y;
-
- if (clip_width <= 0 || clip_height <= 0)
- return;
-
- clip_rect.width = clip_width;
- clip_rect.height = clip_height;
-
- gdk_gc_set_clip_rectangle (fg_gc, &clip_rect);
-
-
- /* Draw the day initials across the top of the month. */
- min_cell_width = calitem->max_digit_width * 2
- + E_CALENDAR_ITEM_MIN_CELL_XPAD;
-
- cells_x = month_x + E_CALENDAR_ITEM_XPAD_BEFORE_WEEK_NUMBERS + calitem->month_lpad
- + E_CALENDAR_ITEM_XPAD_BEFORE_CELLS;
- if (calitem->show_week_numbers)
- cells_x += calitem->max_week_number_digit_width * 2
- + E_CALENDAR_ITEM_XPAD_AFTER_WEEK_NUMBERS + 1;
- text_x = cells_x + calitem->cell_width
- - (calitem->cell_width - min_cell_width) / 2;
- text_x -= E_CALENDAR_ITEM_MIN_CELL_XPAD / 2;
- text_y = month_y + ythickness * 2
- + E_CALENDAR_ITEM_YPAD_ABOVE_MONTH_NAME
- + char_height + E_CALENDAR_ITEM_YPAD_BELOW_MONTH_NAME
- + E_CALENDAR_ITEM_YPAD_ABOVE_DAY_LETTERS + calitem->month_tpad;
-
- cells_y = text_y + char_height
- + E_CALENDAR_ITEM_YPAD_BELOW_DAY_LETTERS + 1
- + E_CALENDAR_ITEM_YPAD_ABOVE_CELLS;
-
- text_y += font->ascent;
- day_index = calitem->week_start_day;
- for (day = 0; day < 7; day++) {
- gdk_draw_text (drawable, font, fg_gc,
- text_x - calitem->day_widths[day_index], text_y,
- &calitem->days[day_index], 1);
- text_x += calitem->cell_width;
- day_index++;
- if (day_index == 7)
- day_index = 0;
- }
-
-
- /* Draw the horizontal line beneath the day initials. */
- gdk_draw_line (drawable, fg_gc,
- cells_x - E_CALENDAR_ITEM_XPAD_BEFORE_CELLS,
- cells_y - E_CALENDAR_ITEM_YPAD_ABOVE_CELLS - 1,
- cells_x + E_CALENDAR_COLS_PER_MONTH * calitem->cell_width - 1,
- cells_y - E_CALENDAR_ITEM_YPAD_ABOVE_CELLS - 1);
-
- e_calendar_item_draw_day_numbers (calitem, drawable, width, height,
- row, col, year, month, start_weekday,
- cells_x, cells_y);
-
- /* Draw the vertical line after the week number. */
- if (calitem->show_week_numbers) {
- gdk_draw_line (drawable, fg_gc,
- cells_x - E_CALENDAR_ITEM_XPAD_BEFORE_CELLS - 1,
- cells_y - E_CALENDAR_ITEM_YPAD_ABOVE_CELLS - 1,
- cells_x - E_CALENDAR_ITEM_XPAD_BEFORE_CELLS - 1,
- cells_y + E_CALENDAR_ROWS_PER_MONTH * calitem->cell_height - 1);
- }
-
- gdk_gc_set_clip_rectangle (fg_gc, NULL);
-}
-
-
-static void
-e_calendar_item_draw_day_numbers (ECalendarItem *calitem,
- GdkDrawable *drawable,
- int width,
- int height,
- int row,
- int col,
- int year,
- int month,
- int start_weekday,
- gint cells_x,
- gint cells_y)
-{
- GnomeCanvasItem *item;
- GtkWidget *widget;
- GtkStyle *style;
- GdkFont *font, *wkfont;
- GdkGC *fg_gc;
- GdkColor *bg_color, *fg_color, *box_color;
- struct tm *today_tm;
- time_t t;
- gint char_height, min_cell_width, min_cell_height;
- gint day_num, drow, dcol, day_x, day_y;
- gint text_x, text_y;
- gint num_chars, digit;
- gint week_num, mon, days_from_week_start;
- gint years[3], months[3], days_in_month[3];
- gboolean today, selected, has_focus = FALSE, drop_target = FALSE;
- gboolean bold, draw_day, finished = FALSE;
- gint today_year, today_month, today_mday, month_offset;
- gchar buffer[2];
- gint day_style = 0;
-
- item = GNOME_CANVAS_ITEM (calitem);
- widget = GTK_WIDGET (item->canvas);
- style = widget->style;
- font = calitem->font;
- if (!font)
- font = style->font;
- wkfont = calitem->week_number_font;
- if (!wkfont)
- wkfont = font;
- fg_gc = style->fg_gc[GTK_STATE_NORMAL];
- char_height = font->ascent + font->descent;
-
- min_cell_width = calitem->max_digit_width * 2
- + E_CALENDAR_ITEM_MIN_CELL_XPAD;
- min_cell_height = char_height + E_CALENDAR_ITEM_MIN_CELL_YPAD;
-
- /* Calculate the number of days in the previous, current, and next
- months. */
- years[0] = years[1] = years[2] = year;
- months[0] = month - 1;
- months[1] = month;
- months[2] = month + 1;
- if (months[0] == -1) {
- months[0] = 11;
- years[0]--;
- }
- if (months[2] == 12) {
- months[2] = 0;
- years[2]++;
- }
-
- days_in_month[0] = DAYS_IN_MONTH (years[0], months[0]);
- days_in_month[1] = DAYS_IN_MONTH (years[1], months[1]);
- days_in_month[2] = DAYS_IN_MONTH (years[2], months[2]);
-
- /* Mon 0 is the previous month, which we may show the end of. Mon 1 is
- the current month, and mon 2 is the next month. */
- mon = 0;
-
- month_offset = row * calitem->cols + col - 1;
- day_num = days_in_month[0];
- days_from_week_start = (start_weekday + 7 - calitem->week_start_day)
- % 7;
- /* For the top-left month we show the end of the previous month, and
- if the new month starts on the first day of the week we show a
- complete week from the previous month. */
- if (days_from_week_start == 0) {
- if (row == 0 && col == 0) {
- day_num -= 6;
- } else {
- mon++;
- month_offset++;
- day_num = 1;
- }
- } else {
- day_num -= days_from_week_start - 1;
- }
-
- /* Get today's date, so we can highlight it. */
- t = time (NULL);
- today_tm = localtime (&t);
- today_year = today_tm->tm_year + 1900;
- today_month = today_tm->tm_mon;
- today_mday = today_tm->tm_mday;
-
- /* We usually skip the last days of the previous month (mon = 0),
- except for the top-left month displayed. */
- draw_day = (mon == 1 || (row == 0 && col == 0));
-
- for (drow = 0; drow < 6; drow++) {
- /* Draw the week number. */
- if (calitem->show_week_numbers) {
- week_num = e_calendar_item_get_week_number (calitem,
- day_num,
- months[mon],
- years[mon]);
-
- text_x = cells_x - E_CALENDAR_ITEM_XPAD_BEFORE_CELLS - 1
- - E_CALENDAR_ITEM_XPAD_AFTER_WEEK_NUMBERS;
- text_y = cells_y + drow * calitem->cell_height +
- + (calitem->cell_height - min_cell_height + 1) / 2;
-
- num_chars = 0;
- if (week_num >= 10) {
- digit = week_num / 10;
- text_x -= calitem->week_number_digit_widths[digit];
- buffer[num_chars++] = digit + '0';
- }
-
- digit = week_num % 10;
- text_x -= calitem->week_number_digit_widths[digit];
- buffer[num_chars++] = digit + '0';
-
- gdk_gc_set_foreground (fg_gc,
- &style->fg[GTK_STATE_NORMAL]);
- gdk_draw_text (drawable, wkfont, fg_gc,
- text_x, text_y + font->ascent,
- buffer, num_chars);
- }
-
- for (dcol = 0; dcol < 7; dcol++) {
- if (draw_day) {
- day_x = cells_x + dcol * calitem->cell_width;
- day_y = cells_y + drow * calitem->cell_height;
-
- today = years[mon] == today_year
- && months[mon] == today_month
- && day_num == today_mday;
-
- selected = calitem->selection_set
- && (calitem->selection_start_month_offset < month_offset
- || (calitem->selection_start_month_offset == month_offset
- && calitem->selection_start_day <= day_num))
- && (calitem->selection_end_month_offset > month_offset
- || (calitem->selection_end_month_offset == month_offset
- && calitem->selection_end_day >= day_num));
-
- if (calitem->styles)
- day_style = calitem->styles[(month_offset + 1) * 32 + day_num];
-
- /* Get the colors & style to use for the day.*/
- if (calitem->style_callback)
- (*calitem->style_callback)
- (calitem,
- years[mon],
- months[mon],
- day_num,
- day_style,
- today,
- mon != 1,
- selected,
- has_focus,
- drop_target,
- &bg_color,
- &fg_color,
- &box_color,
- &bold,
- calitem->style_callback_data);
- else
- e_calendar_item_get_day_style
- (calitem,
- years[mon],
- months[mon],
- day_num,
- day_style,
- today,
- mon != 1,
- selected,
- has_focus,
- drop_target,
- &bg_color,
- &fg_color,
- &box_color,
- &bold);
-
- /* Draw the background, if set. */
- if (bg_color) {
- gdk_gc_set_foreground (fg_gc, bg_color);
- gdk_draw_rectangle (drawable, fg_gc,
- TRUE,
- day_x, day_y,
- calitem->cell_width,
- calitem->cell_height);
- }
-
- /* Draw the box, if set. */
- if (box_color) {
- gdk_gc_set_foreground (fg_gc, box_color);
- gdk_draw_rectangle (drawable, fg_gc,
- FALSE,
- day_x, day_y,
- calitem->cell_width - 1,
- calitem->cell_height - 1);
- }
-
- /* Draw the 1- or 2-digit day number. */
- day_x += calitem->cell_width - (calitem->cell_width - min_cell_width) / 2;
- day_x -= E_CALENDAR_ITEM_MIN_CELL_XPAD / 2;
- day_y += (calitem->cell_height - min_cell_height + 1) / 2;
- day_y += E_CALENDAR_ITEM_MIN_CELL_YPAD / 2;
-
- num_chars = 0;
- if (day_num >= 10) {
- digit = day_num / 10;
- day_x -= calitem->digit_widths[digit];
- buffer[num_chars++] = digit + '0';
- }
-
- digit = day_num % 10;
- day_x -= calitem->digit_widths[digit];
- buffer[num_chars++] = digit + '0';
-
- if (fg_color) {
- gdk_gc_set_foreground (fg_gc,
- fg_color);
- } else {
- gdk_gc_set_foreground (fg_gc,
- &style->fg[GTK_STATE_NORMAL]);
- }
-
- gdk_draw_text (drawable, font, fg_gc,
- day_x,
- day_y + font->ascent,
- buffer, num_chars);
- /* We use a stupid technique for bold. Just
- draw it again 1 pixel to the left. */
- if (bold)
- gdk_draw_text (drawable, font, fg_gc,
- day_x - 1,
- day_y + font->ascent,
- buffer, num_chars);
- }
-
- /* See if we've reached the end of a month. */
- if (day_num == days_in_month[mon]) {
- month_offset++;
- mon++;
- /* We only draw the start of the next month
- for the bottom-right month displayed. */
- if (mon == 2 && (row != calitem->rows - 1
- || col != calitem->cols - 1)) {
- /* Set a flag so we exit the loop. */
- finished = TRUE;
- break;
- }
- day_num = 1;
- draw_day = TRUE;
- } else {
- day_num++;
- }
- }
-
- /* Exit the loop if the flag is set. */
- if (finished)
- break;
- }
-
- /* Reset the foreground color. */
- gdk_gc_set_foreground (fg_gc, &style->fg[GTK_STATE_NORMAL]);
-}
-
-
-static gint
-e_calendar_item_get_week_number (ECalendarItem *calitem,
- gint day,
- gint month,
- gint year)
-{
- GDate tmp_date;
- gint weekday, yearday, offset, week_num;
-
- /* FIXME: check what happens at year boundaries. */
-
- g_date_clear (&tmp_date, 1);
- g_date_set_dmy (&tmp_date, day, month + 1, year);
-
- /* This results in a value of 0 (Monday) - 6 (Sunday). */
- weekday = g_date_weekday (&tmp_date) - 1;
-
- /* Calculate the offset from the start of the week. */
- offset = (calitem->week_start_day + 7 - weekday) % 7;
-
- /* Calculate the day of the year, from 0 to 365. */
- yearday = g_date_day_of_year (&tmp_date) - 1;
-
- /* If the week starts on or after 29th December, it is week 1 of the
- next year, since there are 4 days in the next year. */
- g_date_subtract_days (&tmp_date, offset);
- if (g_date_month (&tmp_date) == 12 && g_date_day (&tmp_date) >= 29)
- return 1;
-
- /* Calculate the week number, from 0. */
- week_num = (yearday - offset) / 7;
-
- /* If the first week starts on or after Jan 5th, then we need to add
- 1 since the previous week will really be the first week. */
- if ((yearday - offset) % 7 >= 4)
- week_num++;
-
- /* Add 1 so week numbers are from 1 to 53. */
- return week_num + 1;
-}
-
-
-
-/* This is supposed to return the nearest item the the point and the distance.
- Since we are the only item we just return ourself and 0 for the distance.
- This is needed so that we get button/motion events. */
-static double
-e_calendar_item_point (GnomeCanvasItem *item, double x, double y,
- int cx, int cy,
- GnomeCanvasItem **actual_item)
-{
- *actual_item = item;
- return 0.0;
-}
-
-
-static gint
-e_calendar_item_event (GnomeCanvasItem *item, GdkEvent *event)
-{
- ECalendarItem *calitem;
-
- calitem = E_CALENDAR_ITEM (item);
-
- switch (event->type) {
- case GDK_BUTTON_PRESS:
- return e_calendar_item_button_press (calitem, event);
- case GDK_BUTTON_RELEASE:
- return e_calendar_item_button_release (calitem, event);
- case GDK_MOTION_NOTIFY:
- return e_calendar_item_motion (calitem, event);
- default:
- break;
- }
-
- return FALSE;
-}
-
-
-
-/* This checks if any fonts have changed, and if so it recalculates the
- text sizes and the minimum month size. */
-static void
-e_calendar_item_recalc_sizes (ECalendarItem *calitem)
-{
- GnomeCanvasItem *canvas_item;
- GtkStyle *style;
- GdkFont *font, *wkfont;
- gchar *digits = "0123456789";
- gint day, digit, max_digit_width, max_week_number_digit_width;
- gint char_height, width, min_cell_width, min_cell_height;
-
- canvas_item = GNOME_CANVAS_ITEM (calitem);
- style = GTK_WIDGET (canvas_item->canvas)->style;
-
- if (!style)
- return;
-
- font = calitem->font;
- if (!font)
- font = style->font;
- wkfont = calitem->week_number_font;
- if (!wkfont)
- wkfont = font;
-
- g_return_if_fail (font != NULL);
- g_return_if_fail (wkfont != NULL);
-
- char_height = font->ascent + font->descent;
-
- /* If both fonts are the same, just return. */
- if (font != calitem->old_font
- || wkfont != calitem->old_week_number_font) {
- if (calitem->old_font)
- gdk_font_unref (calitem->old_font);
- calitem->old_font = font;
- gdk_font_ref (font);
-
- if (calitem->old_week_number_font)
- gdk_font_unref (calitem->old_week_number_font);
- calitem->old_week_number_font = wkfont;
- gdk_font_ref (wkfont);
-
- for (day = 0; day < 7; day++)
- calitem->day_widths[day] = gdk_char_width (font, calitem->days[day]);
-
- max_digit_width = 0;
- max_week_number_digit_width = 0;
- for (digit = 0; digit < 10; digit++) {
- width = gdk_char_width (font, digits[digit]);
- calitem->digit_widths[digit] = width;
- max_digit_width = MAX (max_digit_width, width);
-
- if (wkfont) {
- width = gdk_char_width (wkfont, digits[digit]);
- calitem->week_number_digit_widths[digit] = width;
- max_week_number_digit_width = MAX (max_week_number_digit_width, width);
- } else {
- calitem->week_number_digit_widths[digit] = width;
- max_week_number_digit_width = max_digit_width;
- }
- }
- calitem->max_digit_width = max_digit_width;
- calitem->max_week_number_digit_width = max_week_number_digit_width;
- }
-
- min_cell_width = calitem->max_digit_width * 2
- + E_CALENDAR_ITEM_MIN_CELL_XPAD;
- min_cell_height = char_height + E_CALENDAR_ITEM_MIN_CELL_YPAD;
-
- calitem->min_month_width = E_CALENDAR_ITEM_XPAD_BEFORE_WEEK_NUMBERS
- + E_CALENDAR_ITEM_XPAD_BEFORE_CELLS + min_cell_width * 7
- + E_CALENDAR_ITEM_XPAD_AFTER_CELLS;
- if (calitem->show_week_numbers) {
- calitem->min_month_width += calitem->max_week_number_digit_width * 2
- + E_CALENDAR_ITEM_XPAD_AFTER_WEEK_NUMBERS + 1;
- }
-
- calitem->min_month_height = style->klass->ythickness * 2
- + E_CALENDAR_ITEM_YPAD_ABOVE_MONTH_NAME + char_height
- + E_CALENDAR_ITEM_YPAD_BELOW_MONTH_NAME + 1
- + E_CALENDAR_ITEM_YPAD_ABOVE_DAY_LETTERS
- + char_height + E_CALENDAR_ITEM_YPAD_BELOW_DAY_LETTERS + 1
- + E_CALENDAR_ITEM_YPAD_ABOVE_CELLS + min_cell_height * 6
- + E_CALENDAR_ITEM_YPAD_BELOW_CELLS;
-}
-
-
-static void
-e_calendar_item_get_day_style (ECalendarItem *calitem,
- gint year,
- gint month,
- gint day,
- gint day_style,
- gboolean today,
- gboolean prev_or_next_month,
- gboolean selected,
- gboolean has_focus,
- gboolean drop_target,
- GdkColor **bg_color,
- GdkColor **fg_color,
- GdkColor **box_color,
- gboolean *bold)
-{
- *bg_color = NULL;
- *fg_color = NULL;
- *box_color = NULL;
- *bold = FALSE;
-
- if (day_style == 1)
- *bold = TRUE;
-
- if (today)
- *box_color = &calitem->colors[E_CALENDAR_ITEM_COLOR_TODAY_BOX];
-
- if (prev_or_next_month)
- *fg_color = &calitem->colors[E_CALENDAR_ITEM_COLOR_PREV_OR_NEXT_MONTH_FG];
-
- if (selected) {
- *fg_color = &calitem->colors[E_CALENDAR_ITEM_COLOR_SELECTION_FG];
- *bg_color = &calitem->colors[E_CALENDAR_ITEM_COLOR_SELECTION_BG];
- }
-}
-
-
-
-static gboolean
-e_calendar_item_button_press (ECalendarItem *calitem,
- GdkEvent *event)
-{
- gint month_offset, day;
- gboolean all_week, round_up_end = FALSE, round_down_start = FALSE;
-
- if (event->button.button == 4)
- e_calendar_item_set_first_month (calitem, calitem->year,
- calitem->month - 1);
- else if (event->button.button == 5)
- e_calendar_item_set_first_month (calitem, calitem->year,
- calitem->month + 1);
-
- if (!e_calendar_item_convert_position_to_day (calitem,
- event->button.x,
- event->button.y,
- TRUE,
- &month_offset, &day,
- &all_week))
- return FALSE;
-
- if (event->button.button == 3 && day == -1
- && e_calendar_item_get_display_popup (calitem)) {
- e_calendar_item_show_popup_menu (calitem,
- (GdkEventButton*) event,
- month_offset);
- return TRUE;
- }
-
- if (event->button.button != 1 || day == -1)
- return FALSE;
-
- if (calitem->max_days_selected < 1)
- return TRUE;
-
- if (gnome_canvas_item_grab (GNOME_CANVAS_ITEM (calitem),
- GDK_POINTER_MOTION_MASK
- | GDK_BUTTON_RELEASE_MASK,
- NULL, event->button.time) != 0)
- return FALSE;
-
- calitem->selection_set = TRUE;
- calitem->selection_start_month_offset = month_offset;
- calitem->selection_start_day = day;
- calitem->selection_end_month_offset = month_offset;
- calitem->selection_end_day = day;
-
- calitem->selection_real_start_month_offset = month_offset;
- calitem->selection_real_start_day = day;
-
- calitem->selection_from_full_week = FALSE;
- calitem->selecting = TRUE;
- calitem->selection_dragging_end = TRUE;
-
- if (all_week) {
- calitem->selection_from_full_week = TRUE;
- round_up_end = TRUE;
- }
-
- if (calitem->days_to_start_week_selection == 1) {
- round_down_start = TRUE;
- round_up_end = TRUE;
- }
-
- /* Don't round up or down if we can't select a week or more. */
- if (calitem->max_days_selected < 7) {
- round_down_start = FALSE;
- round_up_end = FALSE;
- }
-
- if (round_up_end)
- e_calendar_item_round_up_selection (calitem, &calitem->selection_end_month_offset, &calitem->selection_end_day);
-
- if (round_down_start)
- e_calendar_item_round_down_selection (calitem, &calitem->selection_start_month_offset, &calitem->selection_start_day);
-
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM (calitem));
-
- return TRUE;
-}
-
-
-static gboolean
-e_calendar_item_button_release (ECalendarItem *calitem,
- GdkEvent *event)
-{
- if (!calitem->selecting)
- return FALSE;
-
- gnome_canvas_item_ungrab (GNOME_CANVAS_ITEM (calitem),
- event->button.time);
-
- calitem->selecting = FALSE;
-
- /* If the user selects the grayed dates before the first month or
- after the last month, we move backwards or forwards one month.
- The set_month() call should take care of updating the selection. */
- if (calitem->selection_end_month_offset == -1)
- e_calendar_item_set_first_month (calitem, calitem->year,
- calitem->month - 1);
- else if (calitem->selection_start_month_offset == calitem->rows * calitem->cols)
- e_calendar_item_set_first_month (calitem, calitem->year,
- calitem->month + 1);
-
- calitem->selection_changed = TRUE;
- e_calendar_item_queue_signal_emission (calitem);
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM (calitem));
-
- return FALSE;
-}
-
-
-static gboolean
-e_calendar_item_motion (ECalendarItem *calitem,
- GdkEvent *event)
-{
- gint start_month, start_day, end_month, end_day, month_offset, day;
- gint tmp_month, tmp_day, days_in_selection;
- gboolean all_week, round_up_end = FALSE, round_down_start = FALSE;
-
- if (!calitem->selecting)
- return FALSE;
-
- if (!e_calendar_item_convert_position_to_day (calitem,
- event->button.x,
- event->button.y,
- TRUE,
- &month_offset, &day,
- &all_week))
- return FALSE;
-
- if (day == -1)
- return FALSE;
-
- if (calitem->selection_dragging_end) {
- start_month = calitem->selection_real_start_month_offset;
- start_day = calitem->selection_real_start_day;
- end_month = month_offset;
- end_day = day;
- } else {
- start_month = month_offset;
- start_day = day;
- end_month = calitem->selection_real_start_month_offset;
- end_day = calitem->selection_real_start_day;
- }
-
- if (start_month > end_month || (start_month == end_month
- && start_day > end_day)) {
- tmp_month = start_month;
- tmp_day = start_day;
- start_month = end_month;
- start_day = end_day;
- end_month = tmp_month;
- end_day = tmp_day;
-
- calitem->selection_dragging_end = !calitem->selection_dragging_end;
- }
-
- if (calitem->days_to_start_week_selection > 0) {
- days_in_selection = e_calendar_item_get_inclusive_days (calitem, start_month, start_day, end_month, end_day);
- if (days_in_selection >= calitem->days_to_start_week_selection) {
- round_down_start = TRUE;
- round_up_end = TRUE;
- }
- }
-
- /* If we are over a week number and we are dragging the end of the
- selection, we round up to the end of this week. */
- if (all_week && calitem->selection_dragging_end)
- round_up_end = TRUE;
-
- /* If the selection was started from a week number and we are dragging
- the start of the selection, we need to round up the end to include
- all of the original week selected. */
- if (calitem->selection_from_full_week
- && !calitem->selection_dragging_end)
- round_up_end = TRUE;
-
- /* Don't round up or down if we can't select a week or more. */
- if (calitem->max_days_selected < 7) {
- round_down_start = FALSE;
- round_up_end = FALSE;
- }
-
- if (round_up_end)
- e_calendar_item_round_up_selection (calitem, &end_month,
- &end_day);
- if (round_down_start)
- e_calendar_item_round_down_selection (calitem, &start_month,
- &start_day);
-
-
- /* Check we don't go over the maximum number of days to select. */
- if (calitem->selection_dragging_end) {
- e_calendar_item_check_selection_end (calitem,
- start_month,
- start_day,
- &end_month,
- &end_day);
- } else {
- e_calendar_item_check_selection_start (calitem,
- &start_month,
- &start_day,
- end_month,
- end_day);
- }
-
- if (start_month == calitem->selection_start_month_offset
- && start_day == calitem->selection_start_day
- && end_month == calitem->selection_end_month_offset
- && end_day == calitem->selection_end_day)
- return FALSE;
-
- calitem->selection_start_month_offset = start_month;
- calitem->selection_start_day = start_day;
- calitem->selection_end_month_offset = end_month;
- calitem->selection_end_day = end_day;
-
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM (calitem));
-
- return TRUE;
-}
-
-
-static void
-e_calendar_item_check_selection_end (ECalendarItem *calitem,
- gint start_month,
- gint start_day,
- gint *end_month,
- gint *end_day)
-{
- gint year, month, max_month, max_day, days_in_month;
-
- if (calitem->max_days_selected <= 0)
- return;
-
- year = calitem->year;
- month = calitem->month + start_month;
- e_calendar_item_normalize_date (calitem, &year, &month);
-
- max_month = start_month;
- max_day = start_day + calitem->max_days_selected - 1;
-
- for (;;) {
- days_in_month = DAYS_IN_MONTH (year, month);
- if (max_day <= days_in_month)
- break;
- max_month++;
- month++;
- if (month == 12) {
- year++;
- month = 0;
- }
- max_day -= days_in_month;
- }
-
- if (*end_month > max_month) {
- *end_month = max_month;
- *end_day = max_day;
- } else if (*end_month == max_month && *end_day > max_day) {
- *end_day = max_day;
- }
-}
-
-
-static void
-e_calendar_item_check_selection_start (ECalendarItem *calitem,
- gint *start_month,
- gint *start_day,
- gint end_month,
- gint end_day)
-{
- gint year, month, min_month, min_day, days_in_month;
-
- if (calitem->max_days_selected <= 0)
- return;
-
- year = calitem->year;
- month = calitem->month + end_month;
- e_calendar_item_normalize_date (calitem, &year, &month);
-
- min_month = end_month;
- min_day = end_day - calitem->max_days_selected + 1;
-
- while (min_day <= 0) {
- min_month--;
- month--;
- if (month == -1) {
- year--;
- month = 11;
- }
- days_in_month = DAYS_IN_MONTH (year, month);
- min_day += days_in_month;
- }
-
- if (*start_month < min_month) {
- *start_month = min_month;
- *start_day = min_day;
- } else if (*start_month == min_month && *start_day < min_day) {
- *start_day = min_day;
- }
-}
-
-
-/* Converts a position within the item to a month & day.
- The month returned is 0 for the top-left month displayed.
- If the position is over the month heading -1 is returned for the day.
- If the position is over a week number the first day of the week is returned
- and entire_week is set to TRUE.
- It returns FALSE if the position is completely outside all months. */
-static gboolean
-e_calendar_item_convert_position_to_day (ECalendarItem *calitem,
- gint event_x,
- gint event_y,
- gboolean round_empty_positions,
- gint *month_offset,
- gint *day,
- gboolean *entire_week)
-{
- GnomeCanvasItem *item;
- GtkWidget *widget;
- GtkStyle *style;
- gint xthickness, ythickness, char_height;
- gint x, y, row, col, cells_x, cells_y, day_row, day_col;
- gint first_day_offset, days_in_month, days_in_prev_month;
- gint week_num_x1, week_num_x2;
-
- item = GNOME_CANVAS_ITEM (calitem);
- widget = GTK_WIDGET (item->canvas);
- style = widget->style;
- char_height = style->font->ascent + style->font->descent;
- xthickness = style->klass->xthickness;
- ythickness = style->klass->ythickness;
-
- *entire_week = FALSE;
-
- x = event_x - xthickness - calitem->x_offset;
- y = event_y - ythickness;
-
- if (x < 0 || y < 0)
- return FALSE;
-
- row = y / calitem->month_height;
- col = x / calitem->month_width;
-
- if (row >= calitem->rows || col >= calitem->cols)
- return FALSE;
-
- *month_offset = row * calitem->cols + col;
-
- x = x % calitem->month_width;
- y = y % calitem->month_height;
-
- if (y < ythickness * 2 + E_CALENDAR_ITEM_YPAD_ABOVE_MONTH_NAME
- + char_height + E_CALENDAR_ITEM_YPAD_BELOW_MONTH_NAME) {
- *day = -1;
- return TRUE;
- }
-
- cells_y = ythickness * 2 + E_CALENDAR_ITEM_YPAD_ABOVE_MONTH_NAME
- + char_height + E_CALENDAR_ITEM_YPAD_BELOW_MONTH_NAME
- + E_CALENDAR_ITEM_YPAD_ABOVE_DAY_LETTERS + calitem->month_tpad
- + char_height + E_CALENDAR_ITEM_YPAD_BELOW_DAY_LETTERS + 1
- + E_CALENDAR_ITEM_YPAD_ABOVE_CELLS;
- y -= cells_y;
- if (y < 0)
- return FALSE;
- day_row = y / calitem->cell_height;
- if (day_row >= E_CALENDAR_ROWS_PER_MONTH)
- return FALSE;
-
- week_num_x1 = E_CALENDAR_ITEM_XPAD_BEFORE_WEEK_NUMBERS + calitem->month_lpad;
-
- if (calitem->show_week_numbers) {
- week_num_x2 = week_num_x1
- + calitem->max_week_number_digit_width * 2;
- if (x >= week_num_x1 && x < week_num_x2)
- *entire_week = TRUE;
- cells_x = week_num_x2 + E_CALENDAR_ITEM_XPAD_AFTER_WEEK_NUMBERS + 1;
- } else {
- cells_x = week_num_x1;
- }
-
- if (*entire_week) {
- day_col = 0;
- } else {
- cells_x += E_CALENDAR_ITEM_XPAD_BEFORE_CELLS;
- x -= cells_x;
- if (x < 0)
- return FALSE;
- day_col = x / calitem->cell_width;
- if (day_col >= E_CALENDAR_COLS_PER_MONTH)
- return FALSE;
- }
-
- *day = day_row * E_CALENDAR_COLS_PER_MONTH + day_col;
-
- e_calendar_item_get_month_info (calitem, row, col, &first_day_offset,
- &days_in_month, &days_in_prev_month);
- if (*day < first_day_offset) {
- if (*entire_week || (row == 0 && col == 0)) {
- (*month_offset)--;
- *day = days_in_prev_month + 1 - first_day_offset
- + *day;
- return TRUE;
- } else if (round_empty_positions) {
- *day = first_day_offset;
- } else {
- return FALSE;
- }
- }
-
- *day -= first_day_offset - 1;
-
- if (*day > days_in_month) {
- if (row == calitem->rows - 1 && col == calitem->cols - 1) {
- (*month_offset)++;
- *day -= days_in_month;
- return TRUE;
- } else if (round_empty_positions) {
- *day = days_in_month;
- } else {
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-
-static void
-e_calendar_item_get_month_info (ECalendarItem *calitem,
- gint row,
- gint col,
- gint *first_day_offset,
- gint *days_in_month,
- gint *days_in_prev_month)
-{
- gint year, month, start_weekday, first_day_of_month;
- struct tm tmp_tm = { 0 };
-
- month = calitem->month + row * calitem->cols + col;
- year = calitem->year + month / 12;
- month = month % 12;
-
- *days_in_month = DAYS_IN_MONTH (year, month);
- if (month == 0)
- *days_in_prev_month = DAYS_IN_MONTH (year - 1, 11);
- else
- *days_in_prev_month = DAYS_IN_MONTH (year, month - 1);
-
- tmp_tm.tm_year = year - 1900;
- tmp_tm.tm_mon = month;
- tmp_tm.tm_mday = 1;
- tmp_tm.tm_isdst = -1;
- mktime (&tmp_tm);
-
- /* Convert to 0 (Monday) to 6 (Sunday). */
- start_weekday = (tmp_tm.tm_wday + 6) % 7;
-
- first_day_of_month = (start_weekday + 7 - calitem->week_start_day) % 7;
-
- if (row == 0 && col == 0 && first_day_of_month == 0)
- *first_day_offset = 7;
- else
- *first_day_offset = first_day_of_month;
-}
-
-
-void
-e_calendar_item_get_first_month(ECalendarItem *calitem,
- gint *year,
- gint *month)
-{
- *year = calitem->year;
- *month = calitem->month;
-}
-
-
-/* This also handles values of month < 0 or > 11 by updating the year. */
-void
-e_calendar_item_set_first_month(ECalendarItem *calitem,
- gint year,
- gint month)
-{
- gint new_year, new_month, months_diff, num_months;
- gint old_days_in_selection, new_days_in_selection;
-
- new_year = year;
- new_month = month;
- e_calendar_item_normalize_date (calitem, &new_year, &new_month);
-
- if (calitem->year == new_year && calitem->month == new_month)
- return;
-
- /* Update the selection. */
- num_months = calitem->rows * calitem->cols;
- months_diff = (new_year - calitem->year) * 12
- + new_month - calitem->month;
-
- if (calitem->selection_set) {
- if (!calitem->move_selection_when_moving
- || (calitem->selection_start_month_offset - months_diff >= 0
- && calitem->selection_end_month_offset - months_diff < num_months)) {
- calitem->selection_start_month_offset -= months_diff;
- calitem->selection_end_month_offset -= months_diff;
- calitem->selection_real_start_month_offset -= months_diff;
-
- calitem->year = new_year;
- calitem->month = new_month;
- } else {
- old_days_in_selection = e_calendar_item_get_inclusive_days (calitem, calitem->selection_start_month_offset, calitem->selection_start_day, calitem->selection_end_month_offset, calitem->selection_end_day);
-
- /* Make sure the selection will be displayed. */
- if (calitem->selection_start_month_offset < 0
- || calitem->selection_start_month_offset >= num_months) {
- calitem->selection_end_month_offset -= calitem->selection_start_month_offset;
- calitem->selection_start_month_offset = 0;
- }
-
- /* We want to ensure that the same number of days are
- selected after we have moved the selection. */
- calitem->year = new_year;
- calitem->month = new_month;
-
- e_calendar_item_ensure_valid_day (calitem, &calitem->selection_start_month_offset, &calitem->selection_start_day);
- e_calendar_item_ensure_valid_day (calitem, &calitem->selection_end_month_offset, &calitem->selection_end_day);
-
- if (calitem->round_selection_when_moving) {
- e_calendar_item_round_down_selection (calitem, &calitem->selection_start_month_offset, &calitem->selection_start_day);
- }
-
- new_days_in_selection = e_calendar_item_get_inclusive_days (calitem, calitem->selection_start_month_offset, calitem->selection_start_day, calitem->selection_end_month_offset, calitem->selection_end_day);
-
- if (old_days_in_selection != new_days_in_selection)
- e_calendar_item_add_days_to_selection (calitem, old_days_in_selection - new_days_in_selection);
-
- /* Flag that we need to emit the "selection_changed"
- signal. We don't want to emit it here since setting
- the "year" and "month" args would result in 2
- signals emitted. */
- calitem->selection_changed = TRUE;
- }
- } else {
- calitem->year = new_year;
- calitem->month = new_month;
- }
-
- e_calendar_item_date_range_changed (calitem);
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM (calitem));
-}
-
-/* Get the maximum number of days selectable */
-gint
-e_calendar_item_get_max_days_sel (ECalendarItem *calitem)
-{
- return calitem->max_days_selected;
-}
-
-
-/* Set the maximum number of days selectable */
-void
-e_calendar_item_set_max_days_sel (ECalendarItem *calitem,
- gint days)
-{
- calitem->max_days_selected = MAX (0, days);
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM (calitem));
-}
-
-
-/* Get the maximum number of days before whole weeks are selected */
-gint
-e_calendar_item_get_days_start_week_sel(ECalendarItem *calitem)
-{
- return calitem->days_to_start_week_selection;
-}
-
-
-/* Set the maximum number of days before whole weeks are selected */
-void
-e_calendar_item_set_days_start_week_sel(ECalendarItem *calitem,
- gint days)
-{
- calitem->days_to_start_week_selection = days;
-}
-
-gboolean
-e_calendar_item_get_display_popup (ECalendarItem *calitem)
-{
- return calitem->display_popup;
-}
-
-
-void
-e_calendar_item_set_display_popup (ECalendarItem *calitem,
- gboolean display)
-{
- calitem->display_popup = display;
-}
-
-
-/* This will make sure that the given year & month are valid, i.e. if month
- is < 0 or > 11 the year and month will be updated accordingly. */
-static void
-e_calendar_item_normalize_date (ECalendarItem *calitem,
- gint *year,
- gint *month)
-{
- if (*month >= 0) {
- *year += *month / 12;
- *month = *month % 12;
- } else {
- *year += *month / 12 - 1;
- *month = *month % 12;
- if (*month != 0)
- *month += 12;
- }
-}
-
-
-/* Adds or subtracts days from the selection. It is used when we switch months
- and the selection extends past the end of a month but we want to keep the
- number of days selected the same. days should not be more than 30. */
-static void
-e_calendar_item_add_days_to_selection (ECalendarItem *calitem,
- gint days)
-{
- gint year, month, days_in_month;
-
- year = calitem->year;
- month = calitem->month + calitem->selection_end_month_offset;
- e_calendar_item_normalize_date (calitem, &year, &month);
-
- calitem->selection_end_day += days;
- if (calitem->selection_end_day <= 0) {
- month--;
- e_calendar_item_normalize_date (calitem, &year, &month);
- calitem->selection_end_month_offset--;
- calitem->selection_end_day += DAYS_IN_MONTH (year, month);
- } else {
- days_in_month = DAYS_IN_MONTH (year, month);
- if (calitem->selection_end_day > days_in_month) {
- calitem->selection_end_month_offset++;
- calitem->selection_end_day -= days_in_month;
- }
- }
-}
-
-
-/* Gets the range of dates actually shown. Months are 0 to 11.
- This also includes the last days of the previous month and the first days
- of the following month, which are normally shown in gray.
- It returns FALSE if no dates are currently shown. */
-gboolean
-e_calendar_item_get_date_range (ECalendarItem *calitem,
- gint *start_year,
- gint *start_month,
- gint *start_day,
- gint *end_year,
- gint *end_month,
- gint *end_day)
-{
- gint first_day_offset, days_in_month, days_in_prev_month;
-
- if (calitem->rows == 0 || calitem->cols == 0)
- return FALSE;
-
- /* Calculate the first day shown. This will be one of the greyed-out
- days before the first full month begins. */
- e_calendar_item_get_month_info (calitem, 0, 0, &first_day_offset,
- &days_in_month, &days_in_prev_month);
- *start_year = calitem->year;
- *start_month = calitem->month - 1;
- if (*start_month == -1) {
- (*start_year)--;
- *start_month = 11;
- }
- *start_day = days_in_prev_month + 1 - first_day_offset;
-
-
- /* Calculate the last day shown. This will be one of the greyed-out
- days after the last full month ends. */
- e_calendar_item_get_month_info (calitem, calitem->rows - 1,
- calitem->cols - 1, &first_day_offset,
- &days_in_month, &days_in_prev_month);
- *end_month = calitem->month + calitem->rows * calitem->cols;
- *end_year = calitem->year + *end_month / 12;
- *end_month %= 12;
- *end_day = E_CALENDAR_ROWS_PER_MONTH * E_CALENDAR_COLS_PER_MONTH
- - first_day_offset - days_in_month;
-
- return TRUE;
-}
-
-
-/* Simple way to mark days so they appear bold.
- A more flexible interface may be added later. */
-void
-e_calendar_item_clear_marks (ECalendarItem *calitem)
-{
- GnomeCanvasItem *item;
-
- item = GNOME_CANVAS_ITEM (calitem);
-
- g_free (calitem->styles);
- calitem->styles = NULL;
-
- gnome_canvas_request_redraw (item->canvas, item->x1, item->y1,
- item->x2, item->y2);
-}
-
-
-void
-e_calendar_item_mark_day (ECalendarItem *calitem,
- gint year,
- gint month,
- gint day,
- guint8 day_style)
-{
- gint month_offset;
-
- month_offset = (year - calitem->year) * 12 + month - calitem->month;
- if (month_offset < -1 || month_offset > calitem->rows * calitem->cols)
- return;
-
- if (!calitem->styles)
- calitem->styles = g_new0 (guint8, (calitem->rows * calitem->cols + 2) * 32);
-
- calitem->styles[(month_offset + 1) * 32 + day] = day_style;
-}
-
-
-void
-e_calendar_item_mark_days (ECalendarItem *calitem,
- gint start_year,
- gint start_month,
- gint start_day,
- gint end_year,
- gint end_month,
- gint end_day,
- guint8 day_style)
-{
- gint month_offset, end_month_offset, day;
-
- month_offset = (start_year - calitem->year) * 12 + start_month
- - calitem->month;
- day = start_day;
- if (month_offset > calitem->rows * calitem->cols)
- return;
- if (month_offset < -1) {
- month_offset = -1;
- day = 1;
- }
-
- end_month_offset = (end_year - calitem->year) * 12 + end_month
- - calitem->month;
- if (end_month_offset < -1)
- return;
- if (end_month_offset > calitem->rows * calitem->cols) {
- end_month_offset = calitem->rows * calitem->cols;
- end_day = 31;
- }
-
- if (month_offset > end_month_offset)
- return;
-
- if (!calitem->styles)
- calitem->styles = g_new0 (guint8, (calitem->rows * calitem->cols + 2) * 32);
-
- for (;;) {
- if (month_offset == end_month_offset && day > end_day)
- break;
-
- calitem->styles[(month_offset + 1) * 32 + day] = day_style;
-
- day++;
- if (day == 32) {
- month_offset++;
- day = 1;
- if (month_offset > end_month_offset)
- break;
- }
- }
-}
-
-
-/* Rounds up the given day to the end of the week. */
-static void
-e_calendar_item_round_up_selection (ECalendarItem *calitem,
- gint *month_offset,
- gint *day)
-{
- gint year, month, weekday, days, days_in_month;
- struct tm tmp_tm = { 0 };
-
- year = calitem->year;
- month = calitem->month + *month_offset;
- e_calendar_item_normalize_date (calitem, &year, &month);
-
- tmp_tm.tm_year = year - 1900;
- tmp_tm.tm_mon = month;
- tmp_tm.tm_mday = *day;
- tmp_tm.tm_isdst = -1;
- mktime (&tmp_tm);
-
- /* Convert to 0 (Monday) to 6 (Sunday). */
- weekday = (tmp_tm.tm_wday + 6) % 7;
-
- /* Calculate how many days to the end of the row. */
- days = (calitem->week_start_day + 6 - weekday) % 7;
-
- *day += days;
- days_in_month = DAYS_IN_MONTH (year, month);
- if (*day > days_in_month) {
- (*month_offset)++;
- *day -= days_in_month;
- }
-}
-
-
-/* Rounds down the given day to the start of the week. */
-static void
-e_calendar_item_round_down_selection (ECalendarItem *calitem,
- gint *month_offset,
- gint *day)
-{
- gint year, month, weekday, days, days_in_month;
- struct tm tmp_tm = { 0 };
-
- year = calitem->year;
- month = calitem->month + *month_offset;
- e_calendar_item_normalize_date (calitem, &year, &month);
-
- tmp_tm.tm_year = year - 1900;
- tmp_tm.tm_mon = month;
- tmp_tm.tm_mday = *day;
- tmp_tm.tm_isdst = -1;
- mktime (&tmp_tm);
-
- /* Convert to 0 (Monday) to 6 (Sunday). */
- weekday = (tmp_tm.tm_wday + 6) % 7;
-
- /* Calculate how many days to the start of the row. */
- days = (weekday + 7 - calitem->week_start_day) % 7;
-
- *day -= days;
- if (*day <= 0) {
- month--;
- if (month == -1) {
- year--;
- month = 11;
- }
- days_in_month = DAYS_IN_MONTH (year, month);
- (*month_offset)--;
- *day += days_in_month;
- }
-}
-
-
-static gint
-e_calendar_item_get_inclusive_days (ECalendarItem *calitem,
- gint start_month_offset,
- gint start_day,
- gint end_month_offset,
- gint end_day)
-{
- gint start_year, start_month, end_year, end_month, days = 0;
-
- start_year = calitem->year;
- start_month = calitem->month + start_month_offset;
- e_calendar_item_normalize_date (calitem, &start_year, &start_month);
-
- end_year = calitem->year;
- end_month = calitem->month + end_month_offset;
- e_calendar_item_normalize_date (calitem, &end_year, &end_month);
-
- while (start_year < end_year || start_month < end_month) {
- days += DAYS_IN_MONTH (start_year, start_month);
- start_month++;
- if (start_month == 12) {
- start_year++;
- start_month = 0;
- }
- }
-
- days += end_day - start_day + 1;
-
- return days;
-}
-
-
-/* If the day is off the end of the month it is set to the last day of the
- month. */
-static void
-e_calendar_item_ensure_valid_day (ECalendarItem *calitem,
- gint *month_offset,
- gint *day)
-{
- gint year, month, days_in_month;
-
- year = calitem->year;
- month = calitem->month + *month_offset;
- e_calendar_item_normalize_date (calitem, &year, &month);
-
- days_in_month = DAYS_IN_MONTH (year, month);
- if (*day > days_in_month)
- *day = days_in_month;
-}
-
-
-gboolean
-e_calendar_item_get_selection (ECalendarItem *calitem,
- GDate *start_date,
- GDate *end_date)
-{
- gint start_year, start_month, start_day;
- gint end_year, end_month, end_day;
-
- g_date_clear (start_date, 1);
- g_date_clear (end_date, 1);
-
- if (!calitem->selection_set)
- return FALSE;
-
- start_year = calitem->year;
- start_month = calitem->month + calitem->selection_start_month_offset;
- e_calendar_item_normalize_date (calitem, &start_year, &start_month);
- start_day = calitem->selection_start_day;
-
- end_year = calitem->year;
- end_month = calitem->month + calitem->selection_end_month_offset;
- e_calendar_item_normalize_date (calitem, &end_year, &end_month);
- end_day = calitem->selection_end_day;
-
- g_date_set_dmy (start_date, start_day, start_month + 1, start_year);
- g_date_set_dmy (end_date, end_day, end_month + 1, end_year);
-
- return TRUE;
-}
-
-
-void
-e_calendar_item_set_selection (ECalendarItem *calitem,
- GDate *start_date,
- GDate *end_date)
-{
- gint start_year, start_month, start_day;
- gint end_year, end_month, end_day;
- gint new_start_month_offset, new_start_day;
- gint new_end_month_offset, new_end_day;
- gboolean need_update;
-
- g_return_if_fail (E_IS_CALENDAR_ITEM (calitem));
-
- /* If the user is in the middle of a selection, we must abort it. */
- if (calitem->selecting) {
- gnome_canvas_item_ungrab (GNOME_CANVAS_ITEM (calitem),
- GDK_CURRENT_TIME);
- calitem->selecting = FALSE;
- }
-
- /* If start_date is NULL, we clear the selection without changing the
- month shown. */
- if (start_date == NULL) {
- calitem->selection_set = FALSE;
- calitem->selection_changed = TRUE;
- e_calendar_item_queue_signal_emission (calitem);
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM (calitem));
- return;
- }
-
- if (end_date == NULL)
- end_date = start_date;
-
- g_return_if_fail (g_date_compare (start_date, end_date) <= 0);
-
- start_year = g_date_year (start_date);
- start_month = g_date_month (start_date) - 1;
- start_day = g_date_day (start_date);
- end_year = g_date_year (end_date);
- end_month = g_date_month (end_date) - 1;
- end_day = g_date_day (end_date);
-
- need_update = e_calendar_item_ensure_days_visible (calitem,
- start_year,
- start_month,
- start_day,
- end_year,
- end_month,
- end_day);
-
- new_start_month_offset = (start_year - calitem->year) * 12
- + start_month - calitem->month;
- new_start_day = start_day;
-
- /* This may go outside the visible months, but we don't care. */
- new_end_month_offset = (end_year - calitem->year) * 12
- + end_month - calitem->month;
- new_end_day = end_day;
-
-
- if (!calitem->selection_set
- || calitem->selection_start_month_offset != new_start_month_offset
- || calitem->selection_start_day != new_start_day
- || calitem->selection_end_month_offset != new_end_month_offset
- || calitem->selection_end_day != new_end_day) {
- need_update = TRUE;
- calitem->selection_changed = TRUE;
- e_calendar_item_queue_signal_emission (calitem);
- calitem->selection_set = TRUE;
- calitem->selection_start_month_offset = new_start_month_offset;
- calitem->selection_start_day = new_start_day;
- calitem->selection_end_month_offset = new_end_month_offset;
- calitem->selection_end_day = new_end_day;
-
- calitem->selection_real_start_month_offset = new_start_month_offset;
- calitem->selection_real_start_day = new_start_day;
- calitem->selection_from_full_week = FALSE;
- }
-
- if (need_update)
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM (calitem));
-}
-
-
-/* This tries to ensure that the given time range is visible. If the range
- given is longer than we can show, only the start of it will be visible.
- Note that this will not update the selection. That should be done somewhere
- else. It returns TRUE if the visible range has been changed. */
-static gboolean
-e_calendar_item_ensure_days_visible (ECalendarItem *calitem,
- gint start_year,
- gint start_month,
- gint start_day,
- gint end_year,
- gint end_month,
- gint end_day)
-{
- gint current_end_year, current_end_month;
- gint months_shown, months;
- gint first_day_offset, days_in_month, days_in_prev_month;
- gboolean need_update = FALSE;
-
- months_shown = calitem->rows * calitem->cols;
- months = (end_year - start_year) * 12 + end_month - start_month;
-
- /* Calculate the range of months currently displayed. */
- current_end_year = calitem->year;
- current_end_month = calitem->month + months_shown - 1;
- e_calendar_item_normalize_date (calitem, &current_end_year,
- &current_end_month);
-
- /* Try to ensure that the end month is shown. */
- if (end_year > current_end_year
- || (end_year == current_end_year
- && end_month > current_end_month)) {
- need_update = TRUE;
- calitem->year = end_year;
- calitem->month = end_month - months_shown + 1;
- e_calendar_item_normalize_date (calitem, &calitem->year,
- &calitem->month);
- }
-
- /* Now try to ensure that the start month is shown. We do this after
- the end month so that the start month will always be shown. */
- if (start_year < calitem->year
- || (start_year == calitem->year
- && start_month < calitem->month)) {
- need_update = TRUE;
-
- /* First we see if the start of the selection will fit in the
- leftover days of the month before the first one shown. */
- calitem->year = start_year;
- calitem->month = start_month + 1;
- e_calendar_item_normalize_date (calitem, &calitem->year,
- &calitem->month);
-
- e_calendar_item_get_month_info (calitem, 0, 0,
- &first_day_offset,
- &days_in_month,
- &days_in_prev_month);
-
- if (start_day <= days_in_prev_month - first_day_offset) {
- calitem->year = start_year;
- calitem->month = start_month;
- }
- }
-
- if (need_update)
- e_calendar_item_date_range_changed (calitem);
-
- return need_update;
-}
-
-
-static void
-e_calendar_item_show_popup_menu (ECalendarItem *calitem,
- GdkEventButton *event,
- gint month_offset)
-{
- GtkWidget *menu, *submenu, *menuitem;
- gint year, month;
- gchar buffer[64];
- struct tm tmp_tm;
-
- menu = gtk_menu_new ();
-
- for (year = calitem->year - 2; year <= calitem->year + 2; year++) {
- g_snprintf (buffer, 64, "%i", year);
- menuitem = gtk_menu_item_new_with_label (buffer);
- gtk_widget_show (menuitem);
- gtk_container_add (GTK_CONTAINER (menu), menuitem);
-
- submenu = gtk_menu_new ();
- gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), submenu);
-
- gtk_object_set_data (GTK_OBJECT (submenu), "year",
- GINT_TO_POINTER (year));
- gtk_object_set_data (GTK_OBJECT (submenu), "month_offset",
- GINT_TO_POINTER (month_offset));
-
- for (month = 0; month < 12; month++) {
- memset (&tmp_tm, 0, sizeof (tmp_tm));
- tmp_tm.tm_year = year - 1900;
- tmp_tm.tm_mon = month;
- tmp_tm.tm_mday = 1;
- tmp_tm.tm_isdst = -1;
- mktime (&tmp_tm);
- /* This is a strftime() format. %B = Month name, %Y = Year. */
- strftime (buffer, sizeof (buffer), _("%B %Y"), &tmp_tm);
-
- menuitem = gtk_menu_item_new_with_label (buffer);
- gtk_widget_show (menuitem);
- gtk_container_add (GTK_CONTAINER (submenu), menuitem);
-
- gtk_object_set_data (GTK_OBJECT (menuitem), "month",
- GINT_TO_POINTER (month));
-
- gtk_signal_connect (GTK_OBJECT (menuitem), "activate",
- GTK_SIGNAL_FUNC (e_calendar_item_on_menu_item_activate), calitem);
- }
- }
-
- /* Run the menu modal so we can destroy it after. */
- gtk_signal_connect (GTK_OBJECT (menu), "deactivate",
- GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
- gtk_menu_popup (GTK_MENU (menu), NULL, NULL,
- e_calendar_item_position_menu, calitem,
- event->button, event->time);
- gtk_grab_add (menu);
- gtk_main ();
- gtk_grab_remove (menu);
- gtk_widget_destroy (menu);
-}
-
-
-static void
-e_calendar_item_on_menu_item_activate (GtkWidget *menuitem,
- ECalendarItem *calitem)
-{
- gint year, month_offset, month;
-
- year = GPOINTER_TO_INT (gtk_object_get_data (GTK_OBJECT (menuitem->parent), "year"));
- month_offset = GPOINTER_TO_INT (gtk_object_get_data (GTK_OBJECT (menuitem->parent), "month_offset"));
- month = GPOINTER_TO_INT (gtk_object_get_data (GTK_OBJECT (menuitem), "month"));
-
- month -= month_offset;
- e_calendar_item_normalize_date (calitem, &year, &month);
- e_calendar_item_set_first_month (calitem, year, month);
-}
-
-
-static void
-e_calendar_item_position_menu (GtkMenu *menu,
- gint *x,
- gint *y,
- gpointer user_data)
-{
- GtkRequisition requisition;
- gint screen_width, screen_height;
-
- gtk_widget_get_child_requisition (GTK_WIDGET (menu), &requisition);
-
- *x -= 2;
- *y -= requisition.height / 2;
-
- screen_width = gdk_screen_width ();
- screen_height = gdk_screen_height ();
-
- *x = CLAMP (*x, 0, screen_width - requisition.width);
- *y = CLAMP (*y, 0, screen_height - requisition.height);
-}
-
-
-/* Sets the function to call to get the colors to use for a particular day. */
-void
-e_calendar_item_set_style_callback (ECalendarItem *calitem,
- ECalendarItemStyleCallback cb,
- gpointer data,
- GtkDestroyNotify destroy)
-{
- g_return_if_fail (E_IS_CALENDAR_ITEM (calitem));
-
- if (calitem->style_callback_data)
- (*calitem->style_callback_destroy) (calitem->style_callback_data);
-
- calitem->style_callback = cb;
- calitem->style_callback_data = data;
- calitem->style_callback_destroy = destroy;
-}
-
-
-static void
-e_calendar_item_date_range_changed (ECalendarItem *calitem)
-{
- g_free (calitem->styles);
- calitem->styles = NULL;
- calitem->date_range_changed = TRUE;
- e_calendar_item_queue_signal_emission (calitem);
-}
-
-
-static void
-e_calendar_item_queue_signal_emission (ECalendarItem *calitem)
-{
- if (calitem->signal_emission_idle_id == 0) {
- calitem->signal_emission_idle_id = g_idle_add_full (G_PRIORITY_HIGH, e_calendar_item_signal_emission_idle_cb, calitem, NULL);
- }
-}
-
-
-static gboolean
-e_calendar_item_signal_emission_idle_cb (gpointer data)
-{
- ECalendarItem *calitem;
-
- g_return_val_if_fail (E_IS_CALENDAR_ITEM (data), FALSE);
-
- GDK_THREADS_ENTER ();
-
- calitem = E_CALENDAR_ITEM (data);
-
- calitem->signal_emission_idle_id = 0;
-
- if (calitem->date_range_changed) {
- gtk_signal_emit (GTK_OBJECT (calitem),
- e_calendar_item_signals[DATE_RANGE_CHANGED]);
- calitem->date_range_changed = FALSE;
- }
-
- if (calitem->selection_changed) {
- gtk_signal_emit (GTK_OBJECT (calitem),
- e_calendar_item_signals[SELECTION_CHANGED]);
- calitem->selection_changed = FALSE;
- }
-
- GDK_THREADS_LEAVE ();
- return FALSE;
-}
-
diff --git a/widgets/misc/e-calendar-item.h b/widgets/misc/e-calendar-item.h
deleted file mode 100644
index 0e655cf355..0000000000
--- a/widgets/misc/e-calendar-item.h
+++ /dev/null
@@ -1,320 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@helixcode.com>
- *
- * Copyright 2000, Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-#ifndef _E_CALENDAR_ITEM_H_
-#define _E_CALENDAR_ITEM_H_
-
-#include <libgnomeui/gnome-canvas.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/*
- * ECalendarItem - canvas item displaying a calendar.
- */
-
-#define E_CALENDAR_ITEM_YPAD_ABOVE_MONTH_NAME 1
-#define E_CALENDAR_ITEM_YPAD_BELOW_MONTH_NAME 1
-
-/* Used to mark days as bold in e_calendar_item_mark_day(). */
-#define E_CALENDAR_ITEM_MARK_BOLD 1
-
-
-/* These index our colors array. */
-typedef enum
-{
- E_CALENDAR_ITEM_COLOR_TODAY_BOX,
- E_CALENDAR_ITEM_COLOR_SELECTION_FG,
- E_CALENDAR_ITEM_COLOR_SELECTION_BG,
- E_CALENDAR_ITEM_COLOR_PREV_OR_NEXT_MONTH_FG,
-
- E_CALENDAR_ITEM_COLOR_LAST
-} ECalendarItemColors;
-
-typedef struct _ECalendarItem ECalendarItem;
-typedef struct _ECalendarItemClass ECalendarItemClass;
-
-typedef void (*ECalendarItemStyleCallback) (ECalendarItem *calitem,
- gint year,
- gint month,
- gint day,
- gint day_style,
- gboolean today,
- gboolean prev_or_next_month,
- gboolean selected,
- gboolean has_focus,
- gboolean drop_target,
- GdkColor **bg_color,
- GdkColor **fg_color,
- GdkColor **box_color,
- gboolean *bold,
- gpointer data);
-
-
-#define E_CALENDAR_ITEM(obj) (GTK_CHECK_CAST((obj), \
- e_calendar_item_get_type (), ECalendarItem))
-#define E_CALENDAR_ITEM_CLASS(k) (GTK_CHECK_CLASS_CAST ((k),\
- e_calendar_item_get_type ()))
-#define E_IS_CALENDAR_ITEM(o) (GTK_CHECK_TYPE((o), \
- e_calendar_item_get_type ()))
-
-struct _ECalendarItem
-{
- GnomeCanvasItem canvas_item;
-
- /* The year & month of the first calendar being displayed. */
- gint year;
- gint month; /* 0 to 11 */
-
- /* Points to an array of styles, one char for each day. We use 32
- chars for each month, with n + 2 months, where n is the number of
- complete months shown (since we show some days before the first
- month and after the last month grayes out).
- A value of 0 is the default, and 1 is bold. */
- guint8 *styles;
-
- /*
- * Options.
- */
-
- /* The minimum & maximum number of rows & columns of months.
- If the maximum values are -1 then there is no maximum.
- The minimum valies default to 1. The maximum values to -1. */
- gint min_rows;
- gint min_cols;
- gint max_rows;
- gint max_cols;
-
- /* The actual number of rows & columns of months. */
- gint rows;
- gint cols;
-
- /* Whether we show week nubers. */
- gboolean show_week_numbers;
-
- /* The first day of the week, 0 (Monday) to 6 (Sunday). */
- gint week_start_day;
-
- /* Whether the cells expand to fill extra space. */
- gboolean expand;
-
- /* The maximum number of days that can be selected. Defaults to 1. */
- gint max_days_selected;
-
- /* The number of days selected before we switch to selecting whole
- weeks, or -1 if we never switch. Defaults to -1. */
- gint days_to_start_week_selection;
-
- /* Whether the selection is moved when we move back/forward one month.
- Used for things like the EDateEdit which only want the selection to
- be changed when the user explicitly selects a day. */
- gboolean move_selection_when_moving;
-
- /* Whether the selection is rounded down to the nearest week when we
- move back/forward one month. Used for the week view. */
- gboolean round_selection_when_moving;
-
- /* Whether to display the pop-up, TRUE by default */
- gboolean display_popup;
-
- /*
- * Internal stuff.
- */
-
- /* Bounds of item. */
- gdouble x1, y1, x2, y2;
-
- /* The minimum size of each month, based on the fonts used. */
- gint min_month_width;
- gint min_month_height;
-
- /* The actual size of each month, after dividing extra space. */
- gint month_width;
- gint month_height;
-
- /* The offset to the left edge of the first calendar. */
- gint x_offset;
-
- /* The padding around each calendar month. */
- gint month_lpad, month_rpad;
- gint month_tpad, month_bpad;
-
- /* The size of each cell. */
- gint cell_width;
- gint cell_height;
-
- /* The current selection. The month offsets are from 0, which is the
- top-left calendar month view. Note that -1 is used for the last days
- from the previous month. The days are real month days. */
- gboolean selecting;
- gboolean selection_dragging_end;
- gboolean selection_from_full_week;
- gboolean selection_set;
- gint selection_start_month_offset;
- gint selection_start_day;
- gint selection_end_month_offset;
- gint selection_end_day;
- gint selection_real_start_month_offset;
- gint selection_real_start_day;
-
- /* The first character of each day of the week, e.g. 'MTWTFSS'. */
- gchar *days;
-
- /* Widths of the day characters. */
- gint day_widths[7];
-
- /* Widths of the digits, '0' .. '9'. */
- gint digit_widths[10];
- gint max_digit_width;
- gint week_number_digit_widths[10];
- gint max_week_number_digit_width;
-
- /* Fonts for drawing text. If font isn't set it uses the font from the
- canvas widget. If week_number_font isn't set it uses font. */
- GdkFont *font, *old_font;
- GdkFont *week_number_font, *old_week_number_font;
-
- ECalendarItemStyleCallback style_callback;
- gpointer style_callback_data;
- GtkDestroyNotify style_callback_destroy;
-
- /* Colors for drawing. */
- GdkColor colors[E_CALENDAR_ITEM_COLOR_LAST];
-
- /* Our idle handler for emitting signals. */
- gint signal_emission_idle_id;
-
- /* A flag to indicate that the selection or date range has changed.
- When set the idle function will emit the signal and reset it to
- FALSE. This is so we don't emit it several times when args are set
- etc. */
- gboolean selection_changed;
- gboolean date_range_changed;
-};
-
-struct _ECalendarItemClass
-{
- GnomeCanvasItemClass parent_class;
-
- void (* date_range_changed) (ECalendarItem *calitem);
- void (* selection_changed) (ECalendarItem *calitem);
-};
-
-
-GtkType e_calendar_item_get_type (void);
-
-/* FIXME: months are 0-11 throughout, but 1-12 may be better. */
-
-void e_calendar_item_get_first_month (ECalendarItem *calitem,
- gint *year,
- gint *month);
-void e_calendar_item_set_first_month (ECalendarItem *calitem,
- gint year,
- gint month);
-
-/* Get the maximum number of days selectable */
-gint e_calendar_item_get_max_days_sel (ECalendarItem *calitem);
-
-/* Set the maximum number of days selectable */
-void e_calendar_item_set_max_days_sel (ECalendarItem *calitem,
- gint days);
-
-/* Get the maximum number of days selectable */
-gint e_calendar_item_get_days_start_week_sel(ECalendarItem *calitem);
-
-/* Get the maximum number of days before whole weeks are selected */
-void e_calendar_item_set_days_start_week_sel(ECalendarItem *calitem,
- gint days);
-
-/* Set the maximum number of days before whole weeks are selected */
-gboolean e_calendar_item_get_display_popup (ECalendarItem *calitem);
-
-/* Get the maximum number of days before whole weeks are selected */
-void e_calendar_item_set_display_popup (ECalendarItem *calitem,
- gboolean display);
-
-/* Set the maximum number of days before whole weeks are selected */
-gint e_calendar_item_get_days_start_week_sel(ECalendarItem *calitem);
-
-/* Set the maximum number of days selectable */
-void e_calendar_item_set_days_start_week_sel(ECalendarItem *calitem,
- gint days);
-
-/* Gets the range of dates actually shown. Months are 0 to 11.
- This also includes the last days of the previous month and the first days
- of the following month, which are normally shown in gray.
- It returns FALSE if no dates are currently shown. */
-gboolean e_calendar_item_get_date_range (ECalendarItem *calitem,
- gint *start_year,
- gint *start_month,
- gint *start_day,
- gint *end_year,
- gint *end_month,
- gint *end_day);
-
-/* Returns the selected date range. It returns FALSE if no days are currently
- selected. */
-gboolean e_calendar_item_get_selection (ECalendarItem *calitem,
- GDate *start_date,
- GDate *end_date);
-/* Sets the selected date range, and changes the date range shown so at least
- the start of the selection is shown. If start_date is NULL it clears the
- selection. */
-void e_calendar_item_set_selection (ECalendarItem *calitem,
- GDate *start_date,
- GDate *end_date);
-
-/* Marks a particular day. Passing E_CALENDAR_ITEM_MARK_BOLD as the day style
- will result in the day being shown as bold by default. The style callback
- could support more day_styles, or the style callback could determine the
- colors itself, without needing to mark days. */
-void e_calendar_item_clear_marks (ECalendarItem *calitem);
-void e_calendar_item_mark_day (ECalendarItem *calitem,
- gint year,
- gint month,
- gint day,
- guint8 day_style);
-
-/* Mark a range of days. Any days outside the currently shown range are
- ignored. */
-void e_calendar_item_mark_days (ECalendarItem *calitem,
- gint start_year,
- gint start_month,
- gint start_day,
- gint end_year,
- gint end_month,
- gint end_day,
- guint8 day_style);
-
-/* Sets the function to call to get the colors to use for a particular day. */
-void e_calendar_item_set_style_callback (ECalendarItem *calitem,
- ECalendarItemStyleCallback cb,
- gpointer data,
- GtkDestroyNotify destroy);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_CALENDAR_ITEM_H_ */
diff --git a/widgets/misc/e-calendar.c b/widgets/misc/e-calendar.c
deleted file mode 100644
index b0cc00a13f..0000000000
--- a/widgets/misc/e-calendar.c
+++ /dev/null
@@ -1,604 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@helixcode.com>
- *
- * Copyright 2000, Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * ECalendar - displays a table of monthly calendars, allowing highlighting
- * and selection of one or more days. Like GtkCalendar with more features.
- * Most of the functionality is in the ECalendarItem canvas item, though
- * we also add GnomeCanvasWidget buttons to go to the previous/next month and
- * to got to the current day.
- */
-
-#include <config.h>
-
-#include "e-calendar.h"
-
-#include <glib.h>
-#include <gtk/gtkbutton.h>
-#include <gtk/gtkmain.h>
-#include <gtk/gtkpixmap.h>
-#include <gtk/gtksignal.h>
-#include <libgnomeui/gnome-canvas-widget.h>
-#include <gal/util/e-util.h>
-
-#define E_CALENDAR_SMALL_FONT \
- "-adobe-utopia-regular-r-normal-*-*-100-*-*-p-*-iso8859-*"
-#define E_CALENDAR_SMALL_FONT_FALLBACK \
- "-adobe-helvetica-medium-r-normal-*-*-80-*-*-p-*-iso8859-*"
-
-/* The space between the arrow buttons and the edge of the widget. */
-#define E_CALENDAR_ARROW_BUTTON_X_PAD 2
-#define E_CALENDAR_ARROW_BUTTON_Y_PAD 0
-
-/* Vertical padding. The padding above the button includes the space for the
- horizontal line. */
-#define E_CALENDAR_YPAD_ABOVE_LOWER_BUTTONS 4
-#define E_CALENDAR_YPAD_BELOW_LOWER_BUTTONS 3
-
-/* Horizontal padding inside & between buttons. */
-#define E_CALENDAR_IXPAD_BUTTONS 4
-#define E_CALENDAR_XPAD_BUTTONS 8
-
-/* The time between steps when the prev/next buttons is pressed, in 1/1000ths
- of a second, and the number of timeouts we skip before we start
- automatically moving back/forward. */
-#define E_CALENDAR_AUTO_MOVE_TIMEOUT 150
-#define E_CALENDAR_AUTO_MOVE_TIMEOUT_DELAY 2
-
-static char * left_arrow_xpm[] = {
- "7 7 3 1",
- " c None",
- ". c #949594",
- "+ c #000000",
- " .+",
- " .+++",
- " .+++++",
- "+++++++",
- " .+++++",
- " .+++",
- " .+"
-};
-
-static char * right_arrow_xpm[] = {
- "7 7 3 1",
- " c None",
- ". c #949594",
- "+ c #000000",
- "+. ",
- "+++. ",
- "+++++. ",
- "+++++++",
- "+++++. ",
- "+++. ",
- "+. "
-};
-
-
-static void e_calendar_class_init (ECalendarClass *class);
-static void e_calendar_init (ECalendar *cal);
-static void e_calendar_destroy (GtkObject *object);
-static void e_calendar_realize (GtkWidget *widget);
-static void e_calendar_style_set (GtkWidget *widget,
- GtkStyle *previous_style);
-static void e_calendar_size_request (GtkWidget *widget,
- GtkRequisition *requisition);
-static void e_calendar_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation);
-static void e_calendar_draw (GtkWidget *widget,
- GdkRectangle *area);
-static gint e_calendar_drag_motion (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time);
-static void e_calendar_drag_leave (GtkWidget *widget,
- GdkDragContext *context,
- guint time);
-
-static void e_calendar_on_prev_pressed (ECalendar *cal);
-static void e_calendar_on_prev_released (ECalendar *cal);
-static void e_calendar_on_next_pressed (ECalendar *cal);
-static void e_calendar_on_next_released (ECalendar *cal);
-
-static void e_calendar_start_auto_move (ECalendar *cal,
- gboolean moving_forward);
-static gboolean e_calendar_auto_move_handler (gpointer data);
-static void e_calendar_stop_auto_move (ECalendar *cal);
-
-static GnomeCanvasClass *parent_class;
-static GtkLayoutClass *grandparent_class;
-
-E_MAKE_TYPE (e_calendar, "ECalendar", ECalendar,
- e_calendar_class_init, e_calendar_init, E_CANVAS_TYPE)
-
-
-static void
-e_calendar_class_init (ECalendarClass *class)
-{
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
-
- object_class = (GtkObjectClass *) class;
- widget_class = (GtkWidgetClass *) class;
-
- parent_class = gtk_type_class (E_CANVAS_TYPE);
- grandparent_class = gtk_type_class (GTK_TYPE_LAYOUT);
-
- object_class->destroy = e_calendar_destroy;
-
- widget_class->realize = e_calendar_realize;
- widget_class->style_set = e_calendar_style_set;
- widget_class->size_request = e_calendar_size_request;
- widget_class->size_allocate = e_calendar_size_allocate;
- widget_class->draw = e_calendar_draw;
- widget_class->drag_motion = e_calendar_drag_motion;
- widget_class->drag_leave = e_calendar_drag_leave;
-}
-
-
-static void
-e_calendar_init (ECalendar *cal)
-{
- GnomeCanvasGroup *canvas_group;
- GdkFont *small_font;
- GtkWidget *button, *pixmap;
- GdkColormap *colormap;
- GdkPixmap *gdk_pixmap;
- GdkBitmap *gdk_mask;
-
- GTK_WIDGET_UNSET_FLAGS (cal, GTK_CAN_FOCUS);
-
- /* Create the small font. */
- small_font = gdk_font_load (E_CALENDAR_SMALL_FONT);
- if (!small_font)
- small_font = gdk_font_load (E_CALENDAR_SMALL_FONT_FALLBACK);
- if (!small_font)
- g_warning ("Couldn't load font");
-
- canvas_group = GNOME_CANVAS_GROUP (GNOME_CANVAS (cal)->root);
-
- cal->calitem = E_CALENDAR_ITEM (gnome_canvas_item_new (canvas_group,
- e_calendar_item_get_type (),
- "week_number_font", small_font,
- NULL));
-
- if (small_font)
- gdk_font_unref (small_font);
-
-
- /* Create the arrow buttons to move to the previous/next month. */
- button = gtk_button_new ();
- GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS);
- gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
- gtk_widget_show (button);
- gtk_signal_connect_object (GTK_OBJECT (button), "pressed",
- GTK_SIGNAL_FUNC (e_calendar_on_prev_pressed),
- GTK_OBJECT (cal));
- gtk_signal_connect_object (GTK_OBJECT (button), "released",
- GTK_SIGNAL_FUNC (e_calendar_on_prev_released),
- GTK_OBJECT (cal));
-
- colormap = gtk_widget_get_colormap (GTK_WIDGET (cal));
- gdk_pixmap = gdk_pixmap_colormap_create_from_xpm_d (NULL, colormap,
- &gdk_mask, NULL,
- left_arrow_xpm);
- pixmap = gtk_pixmap_new (gdk_pixmap, gdk_mask);
- gtk_widget_show (pixmap);
- gdk_pixmap_unref (gdk_pixmap);
- gdk_bitmap_unref (gdk_mask);
- gtk_container_add (GTK_CONTAINER (button), pixmap);
-
- cal->prev_item = gnome_canvas_item_new (canvas_group,
- gnome_canvas_widget_get_type (),
- "widget", button,
- NULL);
-
- button = gtk_button_new ();
- GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS);
- gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
- gtk_widget_show (button);
- gtk_signal_connect_object (GTK_OBJECT (button), "pressed",
- GTK_SIGNAL_FUNC (e_calendar_on_next_pressed),
- GTK_OBJECT (cal));
- gtk_signal_connect_object (GTK_OBJECT (button), "released",
- GTK_SIGNAL_FUNC (e_calendar_on_next_released),
- GTK_OBJECT (cal));
-
- gdk_pixmap = gdk_pixmap_colormap_create_from_xpm_d (NULL, colormap,
- &gdk_mask, NULL,
- right_arrow_xpm);
- pixmap = gtk_pixmap_new (gdk_pixmap, gdk_mask);
- gtk_widget_show (pixmap);
- gdk_pixmap_unref (gdk_pixmap);
- gdk_bitmap_unref (gdk_mask);
- gtk_container_add (GTK_CONTAINER (button), pixmap);
-
- cal->next_item = gnome_canvas_item_new (canvas_group,
- gnome_canvas_widget_get_type (),
- "widget", button,
- NULL);
-
- cal->min_rows = 1;
- cal->min_cols = 1;
- cal->max_rows = -1;
- cal->max_cols = -1;
-
- cal->timeout_id = 0;
-}
-
-
-/**
- * e_calendar_new:
- * @Returns: a new #ECalendar.
- *
- * Creates a new #ECalendar.
- **/
-GtkWidget *
-e_calendar_new (void)
-{
- GtkWidget *cal;
-
- cal = gtk_type_new (e_calendar_get_type ());
-
- return cal;
-}
-
-
-static void
-e_calendar_destroy (GtkObject *object)
-{
- ECalendar *cal;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (E_IS_CALENDAR (object));
-
- cal = E_CALENDAR (object);
-
- if (cal->timeout_id != 0) {
- gtk_timeout_remove (cal->timeout_id);
- cal->timeout_id = 0;
- }
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-
-static void
-e_calendar_realize (GtkWidget *widget)
-{
- (*GTK_WIDGET_CLASS (parent_class)->realize) (widget);
-
- /* Set the background of the canvas window to the normal color,
- or the arrow buttons are not displayed properly. */
- gdk_window_set_background (GTK_LAYOUT (widget)->bin_window,
- &widget->style->bg[GTK_STATE_NORMAL]);
-}
-
-
-static void
-e_calendar_style_set (GtkWidget *widget,
- GtkStyle *previous_style)
-{
- if (GTK_WIDGET_CLASS (parent_class)->style_set)
- (*GTK_WIDGET_CLASS (parent_class)->style_set) (widget,
- previous_style);
-
- /* Set the background of the canvas window to the normal color,
- or the arrow buttons are not displayed properly. */
- if (GTK_WIDGET_REALIZED (widget->parent))
- gdk_window_set_background (GTK_LAYOUT (widget)->bin_window,
- &widget->style->bg[GTK_STATE_NORMAL]);
-}
-
-
-static void
-e_calendar_size_request (GtkWidget *widget,
- GtkRequisition *requisition)
-{
- ECalendar *cal;
- GtkStyle *style;
- gint col_width, row_height, width, height;
-
- cal = E_CALENDAR (widget);
- style = GTK_WIDGET (cal)->style;
-
- gtk_object_get (GTK_OBJECT (cal->calitem),
- "row_height", &row_height,
- "column_width", &col_width,
- NULL);
-
- height = row_height * cal->min_rows;
- width = col_width * cal->min_cols;
-
- requisition->width = width + style->klass->xthickness * 2;
- requisition->height = height + style->klass->ythickness * 2;
-}
-
-
-static void
-e_calendar_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation)
-{
- ECalendar *cal;
- GdkFont *font;
- gdouble old_x2, old_y2, new_x2, new_y2;
- gdouble xthickness, ythickness, arrow_button_size;
-
- cal = E_CALENDAR (widget);
- font = widget->style->font;
- xthickness = widget->style->klass->xthickness;
- ythickness = widget->style->klass->ythickness;
-
- (*GTK_WIDGET_CLASS (parent_class)->size_allocate) (widget, allocation);
-
- /* Set the scroll region to its allocated size, if changed. */
- gnome_canvas_get_scroll_region (GNOME_CANVAS (cal),
- NULL, NULL, &old_x2, &old_y2);
- new_x2 = widget->allocation.width - 1;
- new_y2 = widget->allocation.height - 1;
- if (old_x2 != new_x2 || old_y2 != new_y2)
- gnome_canvas_set_scroll_region (GNOME_CANVAS (cal),
- 0, 0, new_x2, new_y2);
-
- /* Take off space for line & buttons if shown. */
- gnome_canvas_item_set (GNOME_CANVAS_ITEM (cal->calitem),
- "x1", 0.0,
- "y1", 0.0,
- "x2", new_x2,
- "y2", new_y2,
- NULL);
-
-
- /* Position the arrow buttons. */
- arrow_button_size = font->ascent + font->descent
- + E_CALENDAR_ITEM_YPAD_ABOVE_MONTH_NAME
- + E_CALENDAR_ITEM_YPAD_BELOW_MONTH_NAME
- - E_CALENDAR_ARROW_BUTTON_Y_PAD * 2;
-
- gnome_canvas_item_set (cal->prev_item,
- "x", xthickness * 2
- + E_CALENDAR_ARROW_BUTTON_X_PAD,
- "y", ythickness * 2
- + E_CALENDAR_ARROW_BUTTON_Y_PAD,
- "width", arrow_button_size,
- "height", arrow_button_size,
- NULL);
-
- gnome_canvas_item_set (cal->next_item,
- "x", new_x2 + 1 - xthickness * 2
- - E_CALENDAR_ARROW_BUTTON_X_PAD
- - arrow_button_size,
- "y", ythickness * 2
- + E_CALENDAR_ARROW_BUTTON_Y_PAD,
- "width", arrow_button_size,
- "height", arrow_button_size,
- NULL);
-}
-
-
-static void
-e_calendar_draw (GtkWidget *widget,
- GdkRectangle *area)
-{
- ECalendar *cal;
-
- cal = E_CALENDAR (widget);
-
- (*GTK_WIDGET_CLASS (parent_class)->draw) (widget, area);
-
- /* GnomeCanvas bug workaround to draw the GnomeCanvasWidgets. */
-#if 0
- (*GTK_WIDGET_CLASS (grandparent_class)->draw) (widget, area);
-#endif
-}
-
-
-void
-e_calendar_set_minimum_size (ECalendar *cal,
- gint rows,
- gint cols)
-{
- g_return_if_fail (E_IS_CALENDAR (cal));
-
- cal->min_rows = rows;
- cal->min_cols = cols;
-
- gnome_canvas_item_set (GNOME_CANVAS_ITEM (cal->calitem),
- "minimum_rows", rows,
- "minimum_columns", cols,
- NULL);
-
- gtk_widget_queue_resize (GTK_WIDGET (cal));
-}
-
-
-void
-e_calendar_set_maximum_size (ECalendar *cal,
- gint rows,
- gint cols)
-{
- g_return_if_fail (E_IS_CALENDAR (cal));
-
- cal->max_rows = rows;
- cal->max_cols = cols;
-
- gnome_canvas_item_set (GNOME_CANVAS_ITEM (cal->calitem),
- "maximum_rows", rows,
- "maximum_columns", cols,
- NULL);
-
- gtk_widget_queue_resize (GTK_WIDGET (cal));
-}
-
-
-/* Returns the border size on each side of the month displays. */
-void
-e_calendar_get_border_size (ECalendar *cal,
- gint *top,
- gint *bottom,
- gint *left,
- gint *right)
-{
- GtkStyle *style;
-
- g_return_if_fail (E_IS_CALENDAR (cal));
-
- style = GTK_WIDGET (cal)->style;
-
- if (style) {
- *top = style->klass->ythickness;
- *bottom = style->klass->ythickness;
- *left = style->klass->xthickness;
- *right = style->klass->xthickness;
- } else {
- *top = *bottom = *left = *right = 0;
- }
-}
-
-
-static void
-e_calendar_on_prev_pressed (ECalendar *cal)
-{
- e_calendar_start_auto_move (cal, FALSE);
-}
-
-
-static void
-e_calendar_on_next_pressed (ECalendar *cal)
-{
- e_calendar_start_auto_move (cal, TRUE);
-}
-
-
-static void
-e_calendar_start_auto_move (ECalendar *cal,
- gboolean moving_forward)
-{
- ECalendarItem *calitem;
- gint offset;
-
- if (cal->timeout_id == 0) {
- cal->timeout_id = g_timeout_add (E_CALENDAR_AUTO_MOVE_TIMEOUT,
- e_calendar_auto_move_handler,
- cal);
- }
- cal->timeout_delay = E_CALENDAR_AUTO_MOVE_TIMEOUT_DELAY;
- cal->moving_forward = moving_forward;
-
- calitem = cal->calitem;
- offset = cal->moving_forward ? 1 : -1;
- e_calendar_item_set_first_month (calitem, calitem->year,
- calitem->month + offset);
-}
-
-
-static gboolean
-e_calendar_auto_move_handler (gpointer data)
-{
- ECalendar *cal;
- ECalendarItem *calitem;
- gint offset;
-
- g_return_val_if_fail (E_IS_CALENDAR (data), FALSE);
-
- cal = E_CALENDAR (data);
- calitem = cal->calitem;
-
- GDK_THREADS_ENTER ();
-
- if (cal->timeout_delay > 0) {
- cal->timeout_delay--;
- } else {
- offset = cal->moving_forward ? 1 : -1;
- e_calendar_item_set_first_month (calitem, calitem->year,
- calitem->month + offset);
- }
-
- GDK_THREADS_LEAVE ();
- return TRUE;
-}
-
-
-static void
-e_calendar_on_prev_released (ECalendar *cal)
-{
- e_calendar_stop_auto_move (cal);
-}
-
-
-static void
-e_calendar_on_next_released (ECalendar *cal)
-{
- e_calendar_stop_auto_move (cal);
-}
-
-
-static void
-e_calendar_stop_auto_move (ECalendar *cal)
-{
- if (cal->timeout_id != 0) {
- gtk_timeout_remove (cal->timeout_id);
- cal->timeout_id = 0;
- }
-}
-
-
-static gint
-e_calendar_drag_motion (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time)
-{
- ECalendar *cal;
-
- g_return_val_if_fail (E_IS_CALENDAR (widget), FALSE);
-
- cal = E_CALENDAR (widget);
-
-#if 0
- g_print ("In e_calendar_drag_motion\n");
-#endif
-
- return FALSE;
-}
-
-
-static void
-e_calendar_drag_leave (GtkWidget *widget,
- GdkDragContext *context,
- guint time)
-{
- ECalendar *cal;
-
- g_return_if_fail (E_IS_CALENDAR (widget));
-
- cal = E_CALENDAR (widget);
-
-#if 0
- g_print ("In e_calendar_drag_leave\n");
-#endif
-}
-
diff --git a/widgets/misc/e-calendar.h b/widgets/misc/e-calendar.h
deleted file mode 100644
index 417b90d630..0000000000
--- a/widgets/misc/e-calendar.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@helixcode.com>
- *
- * Copyright 2000, Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-#ifndef _E_CALENDAR_H_
-#define _E_CALENDAR_H_
-
-#include <gtk/gtkwidget.h>
-#include <gal/widgets/e-canvas.h>
-#include "e-calendar-item.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/*
- * ECalendar - displays a table of monthly calendars, allowing highlighting
- * and selection of one or more days. Like GtkCalendar with more features.
- * Most of the functionality is in the ECalendarItem canvas item, though
- * we also add GnomeCanvasWidget buttons to go to the previous/next month and
- * to got to the current day.
- */
-
-#define E_CALENDAR(obj) GTK_CHECK_CAST (obj, e_calendar_get_type (), ECalendar)
-#define E_CALENDAR_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, e_calendar_get_type (), ECalendarClass)
-#define E_IS_CALENDAR(obj) GTK_CHECK_TYPE (obj, e_calendar_get_type ())
-
-
-typedef struct _ECalendar ECalendar;
-typedef struct _ECalendarClass ECalendarClass;
-
-struct _ECalendar
-{
- ECanvas canvas;
-
- ECalendarItem *calitem;
-
- GnomeCanvasItem *prev_item;
- GnomeCanvasItem *next_item;
-
- gint min_rows;
- gint min_cols;
-
- gint max_rows;
- gint max_cols;
-
- /* These are all used when the prev/next buttons are held down.
- moving_forward is TRUE if we are moving forward in time, i.e. the
- next button is pressed. */
- gint timeout_id;
- gint timeout_delay;
- gboolean moving_forward;
-};
-
-struct _ECalendarClass
-{
- ECanvasClass parent_class;
-};
-
-
-GtkType e_calendar_get_type (void);
-GtkWidget* e_calendar_new (void);
-
-void e_calendar_set_minimum_size (ECalendar *cal,
- gint rows,
- gint cols);
-void e_calendar_set_maximum_size (ECalendar *cal,
- gint rows,
- gint cols);
-
-/* Returns the border size on each side of the month displays. */
-void e_calendar_get_border_size (ECalendar *cal,
- gint *top,
- gint *bottom,
- gint *left,
- gint *right);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_CALENDAR_H_ */
diff --git a/widgets/misc/e-canvas-utils.c b/widgets/misc/e-canvas-utils.c
deleted file mode 100644
index 50fcf0d7e5..0000000000
--- a/widgets/misc/e-canvas-utils.c
+++ /dev/null
@@ -1,137 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-canvas-utils.c
- * Copyright (C) 2000 Helix Code, Inc.
- * Author: Chris Lahey <clahey@helixcode.com>
- *
- * This library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "e-canvas-utils.h"
-
-void
-e_canvas_item_move_absolute (GnomeCanvasItem *item, double dx, double dy)
-{
- double translate[6];
-
- g_return_if_fail (item != NULL);
- g_return_if_fail (GNOME_IS_CANVAS_ITEM (item));
-
- art_affine_translate (translate, dx, dy);
-
- gnome_canvas_item_affine_absolute (item, translate);
-}
-
-static double
-compute_offset(int top, int bottom, int page_top, int page_bottom)
-{
- int size = bottom - top;
- int offset = 0;
-
- if (top <= page_top && bottom >= page_bottom)
- return 0;
-
- if (bottom > page_bottom)
- offset = (bottom - page_bottom);
- if (top < page_top + offset)
- offset = (top - page_top);
-
- if (top <= page_top + offset && bottom >= page_bottom + offset)
- return offset;
-
- if (top < page_top + size * 3 / 2 + offset)
- offset = top - (page_top + size * 3 / 2);
- if (bottom > page_bottom - size * 3 / 2 + offset)
- offset = bottom - (page_bottom - size * 3 / 2);
- if (top < page_top + size * 3 / 2 + offset)
- offset = top - ((page_top + page_bottom - (bottom - top)) / 2);
-
- return offset;
-}
-
-
-static void
-e_canvas_show_area (GnomeCanvas *canvas, double x1, double y1, double x2, double y2)
-{
- GtkAdjustment *h, *v;
- int dx = 0, dy = 0;
-
- g_return_if_fail (canvas != NULL);
- g_return_if_fail (GNOME_IS_CANVAS (canvas));
-
- h = gtk_layout_get_hadjustment(GTK_LAYOUT(canvas));
- dx = compute_offset(x1, x2, h->value, h->value + h->page_size);
- if (dx)
- gtk_adjustment_set_value(h, CLAMP(h->value + dx, h->lower, h->upper - h->page_size));
-
- v = gtk_layout_get_vadjustment(GTK_LAYOUT(canvas));
- dy = compute_offset(y1, y2, v->value, v->value + v->page_size);
- if (dy)
- gtk_adjustment_set_value(v, CLAMP(v->value + dy, v->lower, v->upper - v->page_size));
-}
-
-void
-e_canvas_item_show_area (GnomeCanvasItem *item, double x1, double y1, double x2, double y2)
-{
- g_return_if_fail (item != NULL);
- g_return_if_fail (GNOME_IS_CANVAS_ITEM (item));
-
- gnome_canvas_item_i2w(item, &x1, &y1);
- gnome_canvas_item_i2w(item, &x2, &y2);
-
- e_canvas_show_area(item->canvas, x1, y1, x2, y2);
-}
-
-typedef struct {
- double x1;
- double y1;
- double x2;
- double y2;
- GnomeCanvas *canvas;
-} DoubsAndCanvas;
-
-static gboolean
-show_area_timeout (gpointer data)
-{
- DoubsAndCanvas *dac = data;
-
- if (!GTK_OBJECT_DESTROYED(dac->canvas))
- e_canvas_show_area(dac->canvas, dac->x1, dac->y1, dac->x2, dac->y2);
- gtk_object_unref(GTK_OBJECT(dac->canvas));
- g_free(dac);
- return FALSE;
-}
-
-void
-e_canvas_item_show_area_delayed (GnomeCanvasItem *item, double x1, double y1, double x2, double y2, gint delay)
-{
- DoubsAndCanvas *dac;
-
- g_return_if_fail (item != NULL);
- g_return_if_fail (GNOME_IS_CANVAS_ITEM (item));
-
- gnome_canvas_item_i2w(item, &x1, &y1);
- gnome_canvas_item_i2w(item, &x2, &y2);
-
- dac = g_new(DoubsAndCanvas, 1);
- dac->x1 = x1;
- dac->y1 = y1;
- dac->x2 = x2;
- dac->y2 = y2;
- dac->canvas = item->canvas;
- gtk_object_ref(GTK_OBJECT(item->canvas));
- g_timeout_add(delay, show_area_timeout, dac);
-}
diff --git a/widgets/misc/e-canvas-utils.h b/widgets/misc/e-canvas-utils.h
deleted file mode 100644
index 97a9989fb9..0000000000
--- a/widgets/misc/e-canvas-utils.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-canvas-utils.h
- * Copyright (C) 2000 Helix Code, Inc.
- * Author: Chris Lahey <clahey@helixcode.com>
- *
- * This library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __E_CANVAS_UTILS__
-#define __E_CANVAS_UTILS__
-
-#include <libgnomeui/gnome-canvas.h>
-
-BEGIN_GNOME_DECLS
-
-void e_canvas_item_move_absolute (GnomeCanvasItem *item, double dx, double dy);
-void e_canvas_item_show_area (GnomeCanvasItem *item, double x1, double y1, double x2, double y2);
-void e_canvas_item_show_area_delayed (GnomeCanvasItem *item, double x1, double y1, double x2, double y2, gint delay);
-
-END_GNOME_DECLS
-
-#endif /* __E_CANVAS_UTILS__ */
diff --git a/widgets/misc/e-canvas-vbox.c b/widgets/misc/e-canvas-vbox.c
deleted file mode 100644
index 5879d4f672..0000000000
--- a/widgets/misc/e-canvas-vbox.c
+++ /dev/null
@@ -1,350 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-canvas-vbox.c
- * Copyright (C) 2000 Helix Code, Inc.
- * Author: Chris Lahey <clahey@helixcode.com>
- *
- * This library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <math.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtksignal.h>
-#include "e-canvas-vbox.h"
-#include "e-canvas-utils.h"
-#include "e-canvas.h"
-#include "gal/util/e-util.h"
-
-static void e_canvas_vbox_init (ECanvasVbox *CanvasVbox);
-static void e_canvas_vbox_class_init (ECanvasVboxClass *klass);
-static void e_canvas_vbox_set_arg (GtkObject *o, GtkArg *arg, guint arg_id);
-static void e_canvas_vbox_get_arg (GtkObject *object, GtkArg *arg, guint arg_id);
-static void e_canvas_vbox_destroy (GtkObject *object);
-
-static gint e_canvas_vbox_event (GnomeCanvasItem *item, GdkEvent *event);
-static void e_canvas_vbox_realize (GnomeCanvasItem *item);
-
-static void e_canvas_vbox_reflow (GnomeCanvasItem *item, int flags);
-
-static void e_canvas_vbox_real_add_item(ECanvasVbox *e_canvas_vbox, GnomeCanvasItem *item);
-static void e_canvas_vbox_resize_children (GnomeCanvasItem *item);
-
-static GnomeCanvasGroupClass *parent_class = NULL;
-
-/* The arguments we take */
-enum {
- ARG_0,
- ARG_WIDTH,
- ARG_MINIMUM_WIDTH,
- ARG_HEIGHT,
- ARG_SPACING,
-};
-
-GtkType
-e_canvas_vbox_get_type (void)
-{
- static GtkType type = 0;
-
- if (!type)
- {
- static const GtkTypeInfo info =
- {
- "ECanvasVbox",
- sizeof (ECanvasVbox),
- sizeof (ECanvasVboxClass),
- (GtkClassInitFunc) e_canvas_vbox_class_init,
- (GtkObjectInitFunc) e_canvas_vbox_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- type = gtk_type_unique (gnome_canvas_group_get_type (), &info);
- }
-
- return type;
-}
-
-static void
-e_canvas_vbox_class_init (ECanvasVboxClass *klass)
-{
- GtkObjectClass *object_class;
- GnomeCanvasItemClass *item_class;
-
- object_class = (GtkObjectClass*) klass;
- item_class = (GnomeCanvasItemClass *) klass;
-
- parent_class = gtk_type_class (gnome_canvas_group_get_type ());
-
- gtk_object_add_arg_type ("ECanvasVbox::width", GTK_TYPE_DOUBLE,
- GTK_ARG_READWRITE, ARG_WIDTH);
- gtk_object_add_arg_type ("ECanvasVbox::minimum_width", GTK_TYPE_DOUBLE,
- GTK_ARG_READWRITE, ARG_MINIMUM_WIDTH);
- gtk_object_add_arg_type ("ECanvasVbox::height", GTK_TYPE_DOUBLE,
- GTK_ARG_READABLE, ARG_HEIGHT);
- gtk_object_add_arg_type ("ECanvasVbox::spacing", GTK_TYPE_DOUBLE,
- GTK_ARG_READWRITE, ARG_SPACING);
-
- klass->add_item = e_canvas_vbox_real_add_item;
-
- object_class->set_arg = e_canvas_vbox_set_arg;
- object_class->get_arg = e_canvas_vbox_get_arg;
- object_class->destroy = e_canvas_vbox_destroy;
-
- /* GnomeCanvasItem method overrides */
- item_class->event = e_canvas_vbox_event;
- item_class->realize = e_canvas_vbox_realize;
-}
-
-static void
-e_canvas_vbox_init (ECanvasVbox *vbox)
-{
- vbox->items = NULL;
-
- vbox->width = 10;
- vbox->minimum_width = 10;
- vbox->height = 10;
- vbox->spacing = 0;
-
- e_canvas_item_set_reflow_callback(GNOME_CANVAS_ITEM(vbox), e_canvas_vbox_reflow);
-}
-
-static void
-e_canvas_vbox_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- GnomeCanvasItem *item;
- ECanvasVbox *e_canvas_vbox;
-
- item = GNOME_CANVAS_ITEM (o);
- e_canvas_vbox = E_CANVAS_VBOX (o);
-
- switch (arg_id){
- case ARG_WIDTH:
- case ARG_MINIMUM_WIDTH:
- e_canvas_vbox->minimum_width = GTK_VALUE_DOUBLE (*arg);
- e_canvas_vbox_resize_children(item);
- e_canvas_item_request_reflow(item);
- break;
- case ARG_SPACING:
- e_canvas_vbox->spacing = GTK_VALUE_DOUBLE (*arg);
- e_canvas_item_request_reflow(item);
- break;
- }
-}
-
-static void
-e_canvas_vbox_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- ECanvasVbox *e_canvas_vbox;
-
- e_canvas_vbox = E_CANVAS_VBOX (object);
-
- switch (arg_id) {
- case ARG_WIDTH:
- GTK_VALUE_DOUBLE (*arg) = e_canvas_vbox->width;
- break;
- case ARG_MINIMUM_WIDTH:
- GTK_VALUE_DOUBLE (*arg) = e_canvas_vbox->minimum_width;
- break;
- case ARG_HEIGHT:
- GTK_VALUE_DOUBLE (*arg) = e_canvas_vbox->height;
- break;
- case ARG_SPACING:
- GTK_VALUE_DOUBLE (*arg) = e_canvas_vbox->spacing;
- break;
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
-
-/* Used from g_list_foreach(); disconnects from an item's signals */
-static void
-disconnect_item_cb (gpointer data, gpointer user_data)
-{
- ECanvasVbox *vbox;
- GnomeCanvasItem *item;
-
- vbox = E_CANVAS_VBOX (user_data);
-
- item = GNOME_CANVAS_ITEM (data);
- gtk_signal_disconnect_by_data (GTK_OBJECT (item), vbox);
-}
-
-static void
-e_canvas_vbox_destroy (GtkObject *object)
-{
- ECanvasVbox *vbox = E_CANVAS_VBOX(object);
-
- g_list_foreach(vbox->items, disconnect_item_cb, vbox);
- g_list_free(vbox->items);
- vbox->items = NULL;
-
- GTK_OBJECT_CLASS(parent_class)->destroy (object);
-}
-
-static gint
-e_canvas_vbox_event (GnomeCanvasItem *item, GdkEvent *event)
-{
- gint return_val = TRUE;
-
- switch (event->type) {
- case GDK_KEY_PRESS:
- switch (event->key.keyval) {
- case GDK_Left:
- case GDK_KP_Left:
- case GDK_Right:
- case GDK_KP_Right:
- case GDK_Down:
- case GDK_KP_Down:
- case GDK_Up:
- case GDK_KP_Up:
- case GDK_Return:
- case GDK_KP_Enter:
- return_val = TRUE;
- break;
- default:
- return_val = FALSE;
- break;
- }
- break;
- default:
- return_val = FALSE;
- break;
- }
- if (!return_val) {
- if (GNOME_CANVAS_ITEM_CLASS(parent_class)->event)
- return GNOME_CANVAS_ITEM_CLASS (parent_class)->event (item, event);
- }
- return return_val;
-
-}
-
-static void
-e_canvas_vbox_realize (GnomeCanvasItem *item)
-{
- if (GNOME_CANVAS_ITEM_CLASS(parent_class)->realize)
- (* GNOME_CANVAS_ITEM_CLASS(parent_class)->realize) (item);
-
- e_canvas_vbox_resize_children(item);
- e_canvas_item_request_reflow(item);
-}
-
-static void
-e_canvas_vbox_remove_item (GnomeCanvasItem *item, ECanvasVbox *vbox)
-{
- if (!GTK_OBJECT_DESTROYED (vbox))
- vbox->items = g_list_remove(vbox->items, item);
-}
-
-static void
-e_canvas_vbox_real_add_item(ECanvasVbox *e_canvas_vbox, GnomeCanvasItem *item)
-{
- e_canvas_vbox->items = g_list_append(e_canvas_vbox->items, item);
- gtk_signal_connect(GTK_OBJECT(item), "destroy",
- GTK_SIGNAL_FUNC(e_canvas_vbox_remove_item), e_canvas_vbox);
- if ( GTK_OBJECT_FLAGS( e_canvas_vbox ) & GNOME_CANVAS_ITEM_REALIZED ) {
- gnome_canvas_item_set(item,
- "width", (double) e_canvas_vbox->minimum_width,
- NULL);
- e_canvas_item_request_reflow(item);
- }
-}
-
-static void
-e_canvas_vbox_resize_children (GnomeCanvasItem *item)
-{
- GList *list;
- ECanvasVbox *e_canvas_vbox;
-
- e_canvas_vbox = E_CANVAS_VBOX (item);
- for ( list = e_canvas_vbox->items; list; list = list->next ) {
- GnomeCanvasItem *child = GNOME_CANVAS_ITEM(list->data);
- gnome_canvas_item_set(child,
- "width", (double) e_canvas_vbox->minimum_width,
- NULL);
- }
-}
-
-static void
-e_canvas_vbox_reflow( GnomeCanvasItem *item, int flags )
-{
- ECanvasVbox *e_canvas_vbox = E_CANVAS_VBOX(item);
- if ( GTK_OBJECT_FLAGS( e_canvas_vbox ) & GNOME_CANVAS_ITEM_REALIZED ) {
-
- gdouble old_height;
- gdouble running_height;
- gdouble old_width;
- gdouble max_width;
-
- old_width = e_canvas_vbox->width;
- max_width = e_canvas_vbox->minimum_width;
-
- old_height = e_canvas_vbox->height;
- running_height = 0;
-
- if (e_canvas_vbox->items == NULL) {
- } else {
- GList *list;
- gdouble item_height;
- gdouble item_width;
-
- list = e_canvas_vbox->items;
- gtk_object_get (GTK_OBJECT(list->data),
- "height", &item_height,
- "width", &item_width,
- NULL);
- e_canvas_item_move_absolute(GNOME_CANVAS_ITEM(list->data),
- (double) 0,
- (double) running_height);
- running_height += item_height;
- if (max_width < item_width)
- max_width = item_width;
- list = g_list_next(list);
-
- for( ; list; list = g_list_next(list)) {
- running_height += e_canvas_vbox->spacing;
-
- gtk_object_get (GTK_OBJECT(list->data),
- "height", &item_height,
- "width", &item_width,
- NULL);
-
- e_canvas_item_move_absolute(GNOME_CANVAS_ITEM(list->data),
- (double) 0,
- (double) running_height);
-
- running_height += item_height;
- if (max_width < item_width)
- max_width = item_width;
- }
-
- }
- e_canvas_vbox->height = running_height;
- e_canvas_vbox->width = max_width;
- if (old_height != e_canvas_vbox->height ||
- old_width != e_canvas_vbox->width)
- e_canvas_item_request_parent_reflow(item);
- }
-}
-
-void
-e_canvas_vbox_add_item(ECanvasVbox *e_canvas_vbox, GnomeCanvasItem *item)
-{
- if (E_CANVAS_VBOX_CLASS(GTK_OBJECT(e_canvas_vbox)->klass)->add_item)
- (E_CANVAS_VBOX_CLASS(GTK_OBJECT(e_canvas_vbox)->klass)->add_item) (e_canvas_vbox, item);
-}
diff --git a/widgets/misc/e-canvas-vbox.h b/widgets/misc/e-canvas-vbox.h
deleted file mode 100644
index 1dfaf7a726..0000000000
--- a/widgets/misc/e-canvas-vbox.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* e-canvas-vbox.h
- * Copyright (C) 2000 Helix Code, Inc.
- * Author: Chris Lahey <clahey@helixcode.com>
- *
- * This library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-#ifndef __E_CANVAS_VBOX_H__
-#define __E_CANVAS_VBOX_H__
-
-#include <gtk/gtktypeutils.h>
-#include <libgnomeui/gnome-canvas.h>
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-/* ECanvasVbox - A canvas item container.
- *
- * The following arguments are available:
- *
- * name type read/write description
- * --------------------------------------------------------------------------------
- * width double RW width of the CanvasVbox
- * height double R height of the CanvasVbox
- * spacing double RW Spacing between items.
- */
-
-#define E_CANVAS_VBOX_TYPE (e_canvas_vbox_get_type ())
-#define E_CANVAS_VBOX(obj) (GTK_CHECK_CAST ((obj), E_CANVAS_VBOX_TYPE, ECanvasVbox))
-#define E_CANVAS_VBOX_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_CANVAS_VBOX_TYPE, ECanvasVboxClass))
-#define E_IS_CANVAS_VBOX(obj) (GTK_CHECK_TYPE ((obj), E_CANVAS_VBOX_TYPE))
-#define E_IS_CANVAS_VBOX_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), E_CANVAS_VBOX_TYPE))
-
-
-typedef struct _ECanvasVbox ECanvasVbox;
-typedef struct _ECanvasVboxClass ECanvasVboxClass;
-
-struct _ECanvasVbox
-{
- GnomeCanvasGroup parent;
-
- /* item specific fields */
- GList *items; /* Of type GnomeCanvasItem */
-
- double width;
- double minimum_width;
- double height;
- double spacing;
-};
-
-struct _ECanvasVboxClass
-{
- GnomeCanvasGroupClass parent_class;
-
- /* Virtual methods. */
- void (* add_item) (ECanvasVbox *CanvasVbox, GnomeCanvasItem *item);
-};
-
-/*
- * To be added to a CanvasVbox, an item must have the argument "width" as
- * a Read/Write argument and "height" as a Read Only argument. It
- * should also do an ECanvas parent CanvasVbox request if its size
- * changes.
- */
-void e_canvas_vbox_add_item(ECanvasVbox *e_canvas_vbox, GnomeCanvasItem *item);
-GtkType e_canvas_vbox_get_type (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* __E_CANVAS_VBOX_H__ */
diff --git a/widgets/misc/e-canvas.c b/widgets/misc/e-canvas.c
deleted file mode 100644
index e48c6bb821..0000000000
--- a/widgets/misc/e-canvas.c
+++ /dev/null
@@ -1,760 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-canvas.c
- * Copyright (C) 2000 Helix Code, Inc.
- * Author: Chris Lahey <clahey@helixcode.com>
- *
- * This library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <gtk/gtksignal.h>
-#include "e-canvas.h"
-
-static void e_canvas_init (ECanvas *card);
-static void e_canvas_destroy (GtkObject *object);
-static void e_canvas_class_init (ECanvasClass *klass);
-static void e_canvas_realize (GtkWidget *widget);
-static void e_canvas_unrealize (GtkWidget *widget);
-static gint e_canvas_key (GtkWidget *widget,
- GdkEventKey *event);
-
-static gint e_canvas_visibility (GtkWidget *widget,
- GdkEventVisibility *event,
- ECanvas *canvas);
-
-static gint e_canvas_focus_in (GtkWidget *widget,
- GdkEventFocus *event);
-static gint e_canvas_focus_out (GtkWidget *widget,
- GdkEventFocus *event);
-
-static int emit_event (GnomeCanvas *canvas, GdkEvent *event);
-
-static GnomeCanvasClass *parent_class = NULL;
-
-enum {
- REFLOW,
- LAST_SIGNAL
-};
-
-static guint e_canvas_signals [LAST_SIGNAL] = { 0, };
-
-GtkType
-e_canvas_get_type (void)
-{
- static GtkType canvas_type = 0;
-
- if (!canvas_type)
- {
- static const GtkTypeInfo canvas_info =
- {
- "ECanvas",
- sizeof (ECanvas),
- sizeof (ECanvasClass),
- (GtkClassInitFunc) e_canvas_class_init,
- (GtkObjectInitFunc) e_canvas_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- canvas_type = gtk_type_unique (gnome_canvas_get_type (), &canvas_info);
- }
-
- return canvas_type;
-}
-
-static void
-e_canvas_class_init (ECanvasClass *klass)
-{
- GtkObjectClass *object_class;
- GnomeCanvasClass *canvas_class;
- GtkWidgetClass *widget_class;
-
- object_class = (GtkObjectClass*) klass;
- canvas_class = (GnomeCanvasClass *) klass;
- widget_class = (GtkWidgetClass *) klass;
-
- parent_class = gtk_type_class (gnome_canvas_get_type ());
-
- object_class->destroy = e_canvas_destroy;
-
- widget_class->key_press_event = e_canvas_key;
- widget_class->key_release_event = e_canvas_key;
- widget_class->focus_in_event = e_canvas_focus_in;
- widget_class->focus_out_event = e_canvas_focus_out;
- widget_class->realize = e_canvas_realize;
- widget_class->unrealize = e_canvas_unrealize;
-
- klass->reflow = NULL;
-
- e_canvas_signals [REFLOW] =
- gtk_signal_new ("reflow",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ECanvasClass, reflow),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- gtk_object_class_add_signals (object_class, e_canvas_signals, LAST_SIGNAL);
-}
-
-static void
-e_canvas_init (ECanvas *canvas)
-{
- canvas->selection = NULL;
- canvas->cursor = NULL;
- canvas->ic = NULL;
- canvas->ic_attr = NULL;
- canvas->tooltip_window = NULL;
-}
-
-static void
-e_canvas_destroy (GtkObject *object)
-{
- ECanvas *canvas = E_CANVAS(object);
-
- if (canvas->idle_id)
- g_source_remove(canvas->idle_id);
-
- if (canvas->toplevel) {
- if (canvas->visibility_notify_id)
- gtk_signal_disconnect (GTK_OBJECT(canvas->toplevel),
- canvas->visibility_notify_id);
- canvas->visibility_notify_id = 0;
-
- gtk_object_unref(GTK_OBJECT(canvas->toplevel));
- canvas->toplevel = NULL;
- }
-
- if ((GTK_OBJECT_CLASS (parent_class))->destroy)
- (*(GTK_OBJECT_CLASS (parent_class))->destroy) (object);
-}
-
-GtkWidget *
-e_canvas_new ()
-{
- return GTK_WIDGET (gtk_type_new (e_canvas_get_type ()));
-}
-
-
-/* Returns whether the item is an inferior of or is equal to the parent. */
-static int
-is_descendant (GnomeCanvasItem *item, GnomeCanvasItem *parent)
-{
- for (; item; item = item->parent)
- if (item == parent)
- return TRUE;
-
- return FALSE;
-}
-
-/* Emits an event for an item in the canvas, be it the current item, grabbed
- * item, or focused item, as appropriate.
- */
-static int
-emit_event (GnomeCanvas *canvas, GdkEvent *event)
-{
- GdkEvent ev;
- gint finished;
- GnomeCanvasItem *item;
- GnomeCanvasItem *parent;
- guint mask;
-
- /* Perform checks for grabbed items */
-
- if (canvas->grabbed_item && !is_descendant (canvas->current_item, canvas->grabbed_item))
- return FALSE;
-
- if (canvas->grabbed_item) {
- switch (event->type) {
- case GDK_ENTER_NOTIFY:
- mask = GDK_ENTER_NOTIFY_MASK;
- break;
-
- case GDK_LEAVE_NOTIFY:
- mask = GDK_LEAVE_NOTIFY_MASK;
- break;
-
- case GDK_MOTION_NOTIFY:
- mask = GDK_POINTER_MOTION_MASK;
- break;
-
- case GDK_BUTTON_PRESS:
- case GDK_2BUTTON_PRESS:
- case GDK_3BUTTON_PRESS:
- mask = GDK_BUTTON_PRESS_MASK;
- break;
-
- case GDK_BUTTON_RELEASE:
- mask = GDK_BUTTON_RELEASE_MASK;
- break;
-
- case GDK_KEY_PRESS:
- mask = GDK_KEY_PRESS_MASK;
- break;
-
- case GDK_KEY_RELEASE:
- mask = GDK_KEY_RELEASE_MASK;
- break;
-
- default:
- mask = 0;
- break;
- }
-
- if (!(mask & canvas->grabbed_event_mask))
- return FALSE;
- }
-
- /* Convert to world coordinates -- we have two cases because of diferent
- * offsets of the fields in the event structures.
- */
-
- ev = *event;
-
- switch (ev.type) {
- case GDK_ENTER_NOTIFY:
- case GDK_LEAVE_NOTIFY:
- gnome_canvas_window_to_world (canvas,
- ev.crossing.x, ev.crossing.y,
- &ev.crossing.x, &ev.crossing.y);
- break;
-
- case GDK_MOTION_NOTIFY:
- case GDK_BUTTON_PRESS:
- case GDK_2BUTTON_PRESS:
- case GDK_3BUTTON_PRESS:
- case GDK_BUTTON_RELEASE:
- gnome_canvas_window_to_world (canvas,
- ev.motion.x, ev.motion.y,
- &ev.motion.x, &ev.motion.y);
- break;
-
- default:
- break;
- }
-
- /* Choose where we send the event */
-
- item = canvas->current_item;
-
- if (canvas->focused_item
- && ((event->type == GDK_KEY_PRESS) || (event->type == GDK_KEY_RELEASE) || (event->type == GDK_FOCUS_CHANGE)))
- item = canvas->focused_item;
-
- /* The event is propagated up the hierarchy (for if someone connected to
- * a group instead of a leaf event), and emission is stopped if a
- * handler returns TRUE, just like for GtkWidget events.
- */
-
- finished = FALSE;
-
- while (item && !finished) {
- gtk_object_ref (GTK_OBJECT (item));
-
- gtk_signal_emit_by_name (GTK_OBJECT (item), "event",
- &ev,
- &finished);
-
- if (GTK_OBJECT_DESTROYED (item))
- finished = TRUE;
-
- parent = item->parent;
- gtk_object_unref (GTK_OBJECT (item));
-
- item = parent;
- }
-
- return finished;
-}
-
-/* Key event handler for the canvas */
-static gint
-e_canvas_key (GtkWidget *widget, GdkEventKey *event)
-{
- GnomeCanvas *canvas;
- GdkEvent full_event;
-
- g_return_val_if_fail (widget != NULL, FALSE);
- g_return_val_if_fail (GNOME_IS_CANVAS (widget), FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
- canvas = GNOME_CANVAS (widget);
-
- full_event.key = *event;
-
- return emit_event (canvas, &full_event);
-}
-
-/* Key event handler for the canvas */
-static gint
-e_canvas_visibility (GtkWidget *widget, GdkEventVisibility *event, ECanvas *canvas)
-{
- if (! canvas->visibility_first) {
- e_canvas_hide_tooltip(canvas);
- }
- canvas->visibility_first = FALSE;
-
- return FALSE;
-}
-
-
-/**
- * e_canvas_item_grab_focus:
- * @item: A canvas item.
- * @widget_too: Whether or not to grab the widget-level focus too
- *
- * Makes the specified item take the keyboard focus, so all keyboard
- * events will be sent to it. If the canvas widget itself did not have
- * the focus and @widget_too is %TRUE, it grabs that focus as well.
- **/
-void
-e_canvas_item_grab_focus (GnomeCanvasItem *item, gboolean widget_too)
-{
- GnomeCanvasItem *focused_item;
- GdkEvent ev;
-
- g_return_if_fail (item != NULL);
- g_return_if_fail (GNOME_IS_CANVAS_ITEM (item));
- g_return_if_fail (GTK_WIDGET_CAN_FOCUS (GTK_WIDGET (item->canvas)));
-
- focused_item = item->canvas->focused_item;
-
- if (focused_item) {
- ev.focus_change.type = GDK_FOCUS_CHANGE;
- ev.focus_change.window = GTK_LAYOUT (item->canvas)->bin_window;
- ev.focus_change.send_event = FALSE;
- ev.focus_change.in = FALSE;
-
- emit_event (item->canvas, &ev);
- }
-
- item->canvas->focused_item = item;
-
- if (widget_too && !GTK_WIDGET_HAS_FOCUS (GTK_WIDGET(item->canvas))) {
- gtk_widget_grab_focus (GTK_WIDGET (item->canvas));
- }
-
- if (focused_item) {
- ev.focus_change.type = GDK_FOCUS_CHANGE;
- ev.focus_change.window = GTK_LAYOUT (item->canvas)->bin_window;
- ev.focus_change.send_event = FALSE;
- ev.focus_change.in = TRUE;
-
- emit_event (item->canvas, &ev);
- }
-}
-
-/* Focus in handler for the canvas */
-static gint
-e_canvas_focus_in (GtkWidget *widget, GdkEventFocus *event)
-{
- GnomeCanvas *canvas;
- ECanvas *ecanvas;
- GdkEvent full_event;
-
- canvas = GNOME_CANVAS (widget);
- ecanvas = E_CANVAS (widget);
-
- GTK_WIDGET_SET_FLAGS (widget, GTK_HAS_FOCUS);
-
- if (ecanvas->ic)
- gdk_im_begin (ecanvas->ic, canvas->layout.bin_window);
-
- if (canvas->focused_item) {
- full_event.focus_change = *event;
- return emit_event (canvas, &full_event);
- } else {
- return FALSE;
- }
-}
-
-/* Focus out handler for the canvas */
-static gint
-e_canvas_focus_out (GtkWidget *widget, GdkEventFocus *event)
-{
- GnomeCanvas *canvas;
- ECanvas *ecanvas;
- GdkEvent full_event;
-
- canvas = GNOME_CANVAS (widget);
- ecanvas = E_CANVAS (widget);
-
- GTK_WIDGET_UNSET_FLAGS (widget, GTK_HAS_FOCUS);
-
- if (ecanvas->ic)
- gdk_im_end ();
-
- if (canvas->focused_item) {
- full_event.focus_change = *event;
- return emit_event (canvas, &full_event);
- } else {
- return FALSE;
- }
-}
-
-static void
-e_canvas_realize (GtkWidget *widget)
-{
- ECanvas *ecanvas = E_CANVAS (widget);
-
- if (GTK_WIDGET_CLASS (parent_class)->realize)
- (* GTK_WIDGET_CLASS (parent_class)->realize) (widget);
-
- gdk_window_set_back_pixmap (GTK_LAYOUT (widget)->bin_window, NULL, FALSE);
-
- if (gdk_im_ready () && (ecanvas->ic_attr = gdk_ic_attr_new ()) != NULL) {
- GdkEventMask mask;
- GdkICAttr *attr = ecanvas->ic_attr;
- GdkICAttributesType attrmask = GDK_IC_ALL_REQ;
- GdkIMStyle style;
- GdkIMStyle supported_style = GDK_IM_PREEDIT_NONE |
- GDK_IM_PREEDIT_NOTHING |
- GDK_IM_STATUS_NONE |
- GDK_IM_STATUS_NOTHING;
-
- attr->style = style = gdk_im_decide_style (supported_style);
- attr->client_window = ecanvas->parent.layout.bin_window;
-
- ecanvas->ic = gdk_ic_new (attr, attrmask);
- if (ecanvas->ic != NULL) {
- mask = gdk_window_get_events (attr->client_window);
- mask |= gdk_ic_get_events (ecanvas->ic);
- gdk_window_set_events (attr->client_window, mask);
-
- if (GTK_WIDGET_HAS_FOCUS (widget))
- gdk_im_begin (ecanvas->ic, attr->client_window);
- } else
- g_warning ("Can't create input context.");
- }
-
-}
-
-static void
-e_canvas_unrealize (GtkWidget *widget)
-{
- ECanvas * ecanvas = E_CANVAS (widget);
- if (ecanvas->ic) {
- gdk_ic_destroy (ecanvas->ic);
- ecanvas->ic = NULL;
- }
- if (ecanvas->ic_attr) {
- gdk_ic_attr_destroy (ecanvas->ic_attr);
- ecanvas->ic_attr = NULL;
- }
- if (GTK_WIDGET_CLASS (parent_class)->unrealize)
- (* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget);
-}
-
-static void
-e_canvas_item_invoke_reflow (GnomeCanvasItem *item, int flags)
-{
- GnomeCanvasGroup *group;
- GList *list;
- GnomeCanvasItem *child;
-
- if (GNOME_IS_CANVAS_GROUP (item)) {
- group = GNOME_CANVAS_GROUP (item);
- for (list = group->item_list; list; list = list->next) {
- child = GNOME_CANVAS_ITEM (list->data);
- if (child->object.flags & E_CANVAS_ITEM_DESCENDENT_NEEDS_REFLOW)
- e_canvas_item_invoke_reflow (child, flags);
- }
- }
-
- if (item->object.flags & E_CANVAS_ITEM_NEEDS_REFLOW) {
- ECanvasItemReflowFunc func;
- func = gtk_object_get_data (GTK_OBJECT (item),
- "ECanvasItem::reflow_callback");
- if (func)
- func (item, flags);
- }
-
- item->object.flags &= ~E_CANVAS_ITEM_NEEDS_REFLOW;
- item->object.flags &= ~E_CANVAS_ITEM_DESCENDENT_NEEDS_REFLOW;
-}
-
-static void
-do_reflow (ECanvas *canvas)
-{
- if (GNOME_CANVAS(canvas)->root->object.flags & E_CANVAS_ITEM_DESCENDENT_NEEDS_REFLOW)
- e_canvas_item_invoke_reflow (GNOME_CANVAS(canvas)->root, 0);
-}
-
-/* Idle handler for the e-canvas. It deals with pending reflows. */
-static gint
-idle_handler (gpointer data)
-{
- ECanvas *canvas;
-
- GDK_THREADS_ENTER();
-
- canvas = E_CANVAS (data);
- do_reflow (canvas);
-
- /* Reset idle id */
- canvas->idle_id = 0;
-
- gtk_signal_emit (GTK_OBJECT (canvas),
- e_canvas_signals [REFLOW]);
-
- GDK_THREADS_LEAVE();
-
- return FALSE;
-}
-
-/* Convenience function to add an idle handler to a canvas */
-static void
-add_idle (ECanvas *canvas)
-{
- if (canvas->idle_id != 0)
- return;
-
- canvas->idle_id = g_idle_add_full (G_PRIORITY_HIGH_IDLE, idle_handler, (gpointer) canvas, NULL);
-}
-
-static void
-e_canvas_item_descendent_needs_reflow (GnomeCanvasItem *item)
-{
- if (item->object.flags & E_CANVAS_ITEM_DESCENDENT_NEEDS_REFLOW)
- return;
-
- item->object.flags |= E_CANVAS_ITEM_DESCENDENT_NEEDS_REFLOW;
- if (item->parent)
- e_canvas_item_descendent_needs_reflow(item->parent);
-}
-
-void
-e_canvas_item_request_reflow (GnomeCanvasItem *item)
-{
- if (item->object.flags & GNOME_CANVAS_ITEM_REALIZED) {
- item->object.flags |= E_CANVAS_ITEM_NEEDS_REFLOW;
- e_canvas_item_descendent_needs_reflow(item);
- add_idle(E_CANVAS(item->canvas));
- }
-}
-
-void
-e_canvas_item_request_parent_reflow (GnomeCanvasItem *item)
-{
- g_return_if_fail(item != NULL);
- g_return_if_fail(GNOME_IS_CANVAS_ITEM(item));
- e_canvas_item_request_reflow(item->parent);
-}
-
-void
-e_canvas_item_set_reflow_callback (GnomeCanvasItem *item, ECanvasItemReflowFunc func)
-{
- gtk_object_set_data(GTK_OBJECT(item), "ECanvasItem::reflow_callback", (gpointer) func);
-}
-
-
-void
-e_canvas_item_set_selection_callback (GnomeCanvasItem *item, ECanvasItemSelectionFunc func)
-{
- gtk_object_set_data(GTK_OBJECT(item), "ECanvasItem::selection_callback", (gpointer) func);
-}
-
-void
-e_canvas_item_set_selection_compare_callback (GnomeCanvasItem *item, ECanvasItemSelectionCompareFunc func)
-{
- gtk_object_set_data(GTK_OBJECT(item), "ECanvasItem::selection_compare_callback", (gpointer) func);
-}
-
-void
-e_canvas_item_set_cursor (GnomeCanvasItem *item, gpointer id)
-{
- GList *list;
- int flags;
- ECanvas *canvas;
- ECanvasSelectionInfo *info;
- ECanvasItemSelectionFunc func;
-
- g_return_if_fail(item != NULL);
- g_return_if_fail(GNOME_IS_CANVAS_ITEM(item));
- g_return_if_fail(item->canvas != NULL);
- g_return_if_fail(E_IS_CANVAS(item->canvas));
-
- canvas = E_CANVAS(item->canvas);
- flags = E_CANVAS_ITEM_SELECTION_DELETE_DATA;
-
- for (list = canvas->selection; list; list = g_list_next(list)) {
- info = list->data;
-
- func = gtk_object_get_data(GTK_OBJECT(info->item), "ECanvasItem::selection_callback");
- if (func)
- func(info->item, flags, info->id);
- g_message ("ECANVAS: free info (2): item %p, id %p",
- info->item, info->id);
- gtk_object_unref (GTK_OBJECT (info->item));
- g_free(info);
- }
- g_list_free(canvas->selection);
-
- canvas->selection = NULL;
-
- gnome_canvas_item_grab_focus(item);
-
- info = g_new(ECanvasSelectionInfo, 1);
- info->item = item;
- gtk_object_ref (GTK_OBJECT (info->item));
- info->id = id;
- g_message ("ECANVAS: new info item %p, id %p", item, id);
-
- flags = E_CANVAS_ITEM_SELECTION_SELECT | E_CANVAS_ITEM_SELECTION_CURSOR;
- func = gtk_object_get_data(GTK_OBJECT(item), "ECanvasItem::selection_callback");
- if (func)
- func(item, flags, id);
-
- canvas->selection = g_list_prepend(canvas->selection, info);
- canvas->cursor = info;
-}
-
-void
-e_canvas_item_set_cursor_end (GnomeCanvasItem *item, gpointer id)
-{
-}
-
-void
-e_canvas_item_add_selection (GnomeCanvasItem *item, gpointer id)
-{
- int flags;
- ECanvas *canvas;
- ECanvasSelectionInfo *info;
- ECanvasItemSelectionFunc func;
- GList *list;
-
- g_return_if_fail(item != NULL);
- g_return_if_fail(GNOME_IS_CANVAS_ITEM(item));
- g_return_if_fail(item->canvas != NULL);
- g_return_if_fail(E_IS_CANVAS(item->canvas));
-
- flags = E_CANVAS_ITEM_SELECTION_SELECT;
- canvas = E_CANVAS(item->canvas);
-
- if (canvas->cursor) {
- func = gtk_object_get_data(GTK_OBJECT(canvas->cursor->item), "ECanvasItem::selection_callback");
- if (func)
- func(canvas->cursor->item, flags, canvas->cursor->id);
- }
-
- gnome_canvas_item_grab_focus(item);
-
- flags = E_CANVAS_ITEM_SELECTION_SELECT | E_CANVAS_ITEM_SELECTION_CURSOR;
-
- for (list = canvas->selection; list; list = g_list_next(list)) {
- ECanvasSelectionInfo *search;
- search = list->data;
-
- if (search->item == item) {
- ECanvasItemSelectionCompareFunc compare_func;
- compare_func = gtk_object_get_data(GTK_OBJECT(search->item), "ECanvasItem::selection_compare_callback");
-
- if (compare_func(search->item, search->id, id, 0) == 0) {
- canvas->cursor = search;
- func = gtk_object_get_data(GTK_OBJECT(item), "ECanvasItem::selection_callback");
- if (func)
- func(item, flags, search->id);
- return;
- }
- }
- }
-
- info = g_new(ECanvasSelectionInfo, 1);
- info->item = item;
- gtk_object_ref (GTK_OBJECT (info->item));
- info->id = id;
- g_message ("ECANVAS: new info (2): item %p, id %p", item, id);
-
- func = gtk_object_get_data(GTK_OBJECT(item), "ECanvasItem::selection_callback");
- if (func)
- func(item, flags, id);
-
- canvas->selection = g_list_prepend(canvas->selection, info);
- canvas->cursor = info;
-}
-
-void
-e_canvas_item_remove_selection (GnomeCanvasItem *item, gpointer id)
-{
- int flags;
- ECanvas *canvas;
- ECanvasSelectionInfo *info;
- GList *list;
-
- g_return_if_fail(item != NULL);
- g_return_if_fail(GNOME_IS_CANVAS_ITEM(item));
- g_return_if_fail(item->canvas != NULL);
- g_return_if_fail(E_IS_CANVAS(item->canvas));
-
- flags = E_CANVAS_ITEM_SELECTION_DELETE_DATA;
- canvas = E_CANVAS(item->canvas);
-
- for (list = canvas->selection; list; list = g_list_next(list)) {
- info = list->data;
-
- if (info->item == item) {
- ECanvasItemSelectionCompareFunc compare_func;
- compare_func = gtk_object_get_data(GTK_OBJECT(info->item), "ECanvasItem::selection_compare_callback");
-
- if (compare_func(info->item, info->id, id, 0) == 0) {
- ECanvasItemSelectionFunc func;
- func = gtk_object_get_data(GTK_OBJECT(info->item), "ECanvasItem::selection_callback");
- if (func)
- func(info->item, flags, info->id);
- canvas->selection = g_list_remove_link(canvas->selection, list);
-
- if (canvas->cursor == info)
- canvas->cursor = NULL;
-
- g_message ("ECANVAS: removing info: item %p, info %p",
- info->item, info->id);
- gtk_object_unref (GTK_OBJECT (info->item));
- g_free(info);
- g_list_free_1(list);
- break;
- }
- }
- }
-}
-
-void e_canvas_popup_tooltip (ECanvas *canvas, GtkWidget *widget, int x, int y)
-{
- if (canvas->tooltip_window && canvas->tooltip_window != widget) {
- e_canvas_hide_tooltip(canvas);
- }
- canvas->tooltip_window = widget;
- canvas->visibility_first = TRUE;
- if (canvas->toplevel == NULL) {
- canvas->toplevel = gtk_widget_get_toplevel (GTK_WIDGET(canvas));
- if (canvas->toplevel) {
- gtk_widget_add_events(canvas->toplevel, GDK_VISIBILITY_NOTIFY_MASK);
- gtk_object_ref(GTK_OBJECT(canvas->toplevel));
- canvas->visibility_notify_id =
- gtk_signal_connect (GTK_OBJECT (canvas->toplevel), "visibility_notify_event",
- GTK_SIGNAL_FUNC (e_canvas_visibility), canvas);
- }
- }
- gtk_widget_popup (widget, x, y);
-}
-
-void e_canvas_hide_tooltip (ECanvas *canvas)
-{
- if (canvas->tooltip_window) {
- gtk_widget_destroy (canvas->tooltip_window);
- canvas->tooltip_window = NULL;
- }
-}
diff --git a/widgets/misc/e-canvas.h b/widgets/misc/e-canvas.h
deleted file mode 100644
index 820dcddc2e..0000000000
--- a/widgets/misc/e-canvas.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* e-canvas.h
- * Copyright (C) 2000 Helix Code, Inc.
- * Author: Chris Lahey <clahey@helixcode.com>
- *
- * This library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-#ifndef __E_CANVAS_H__
-#define __E_CANVAS_H__
-
-#include <libgnomeui/gnome-canvas.h>
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-/* ECanvas - A class derived from canvas for the purpose of adding
- * evolution specific canvas hacks.
- */
-
-#define E_CANVAS_TYPE (e_canvas_get_type ())
-#define E_CANVAS(obj) (GTK_CHECK_CAST ((obj), E_CANVAS_TYPE, ECanvas))
-#define E_CANVAS_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_CANVAS_TYPE, ECanvasClass))
-#define E_IS_CANVAS(obj) (GTK_CHECK_TYPE ((obj), E_CANVAS_TYPE))
-#define E_IS_CANVAS_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), E_CANVAS_TYPE))
-
-typedef void (*ECanvasItemReflowFunc) (GnomeCanvasItem *item,
- gint flags);
-
-typedef void (*ECanvasItemSelectionFunc) (GnomeCanvasItem *item,
- gint flags,
- gpointer user_data);
-/* Returns the same as strcmp does. */
-typedef gint (*ECanvasItemSelectionCompareFunc) (GnomeCanvasItem *item,
- gpointer data1,
- gpointer data2,
- gint flags);
-
-
-typedef struct _ECanvas ECanvas;
-typedef struct _ECanvasClass ECanvasClass;
-
-/* Object flags for items */
-enum {
- E_CANVAS_ITEM_NEEDS_REFLOW = 1 << 13,
- E_CANVAS_ITEM_DESCENDENT_NEEDS_REFLOW = 1 << 14
-};
-
-enum {
- E_CANVAS_ITEM_SELECTION_SELECT = 1 << 0, /* TRUE = select. FALSE = unselect. */
- E_CANVAS_ITEM_SELECTION_CURSOR = 1 << 1, /* TRUE = has become cursor. FALSE = not cursor. */
- E_CANVAS_ITEM_SELECTION_DELETE_DATA = 1 << 2,
-};
-
-typedef struct {
- GnomeCanvasItem *item;
- gpointer id;
-} ECanvasSelectionInfo;
-
-struct _ECanvas
-{
- GnomeCanvas parent;
-
- int idle_id;
- GList *selection;
- ECanvasSelectionInfo *cursor;
-
- GtkWidget *tooltip_window;
- int visibility_notify_id;
- GtkWidget *toplevel;
- guint visibility_first : 1;
-
- /* Input context for dead key support */
- GdkIC *ic;
- GdkICAttr *ic_attr;
-};
-
-struct _ECanvasClass
-{
- GnomeCanvasClass parent_class;
- void (* reflow) (ECanvas *canvas);
-};
-
-
-GtkType e_canvas_get_type (void);
-GtkWidget *e_canvas_new (void);
-
-/* Used to send all of the keystroke events to a specific item as well as
- * GDK_FOCUS_CHANGE events.
- */
-void e_canvas_item_grab_focus (GnomeCanvasItem *item, gboolean widget_too);
-
-void e_canvas_item_request_reflow (GnomeCanvasItem *item);
-void e_canvas_item_request_parent_reflow (GnomeCanvasItem *item);
-void e_canvas_item_set_reflow_callback (GnomeCanvasItem *item, ECanvasItemReflowFunc func);
-
-void e_canvas_item_set_selection_callback (GnomeCanvasItem *item, ECanvasItemSelectionFunc func);
-void e_canvas_item_set_selection_compare_callback (GnomeCanvasItem *item, ECanvasItemSelectionCompareFunc func);
-
-void e_canvas_item_set_cursor (GnomeCanvasItem *item, gpointer id);
-void e_canvas_item_add_selection (GnomeCanvasItem *item, gpointer id);
-void e_canvas_item_remove_selection (GnomeCanvasItem *item, gpointer id);
-
-/* Not implemented yet. */
-void e_canvas_item_set_cursor_end (GnomeCanvasItem *item, gpointer id);
-
-void e_canvas_popup_tooltip (ECanvas *canvas, GtkWidget *widget, int x, int y);
-void e_canvas_hide_tooltip (ECanvas *canvas);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* __E_CANVAS_H__ */
diff --git a/widgets/misc/e-cell-date-edit.c b/widgets/misc/e-cell-date-edit.c
deleted file mode 100644
index 7cd54891f7..0000000000
--- a/widgets/misc/e-cell-date-edit.c
+++ /dev/null
@@ -1,875 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 2001, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * ECellDateEdit - a subclass of ECellPopup used to show a date with a popup
- * window to edit it.
- */
-
-#include <config.h>
-
-#include "e-cell-date-edit.h"
-
-#include <string.h>
-#include <time.h>
-#include <glib.h>
-#include <gdk/gdkkeysyms.h>
-#include <gal/util/e-util.h>
-#include <gal/e-table/e-table-item.h>
-#include <libgnomeui/gnome-messagebox.h>
-#include <libgnomeui/gnome-stock.h>
-#include <libgnome/gnome-i18n.h>
-#include "e-util/e-time-utils.h"
-/* This depends on ECalendar which is why I didn't put it in gal. */
-#include "e-calendar.h"
-
-static void e_cell_date_edit_class_init (GtkObjectClass *object_class);
-static void e_cell_date_edit_init (ECellDateEdit *ecde);
-static void e_cell_date_edit_destroy (GtkObject *object);
-static void e_cell_date_edit_get_arg (GtkObject *o,
- GtkArg *arg,
- guint arg_id);
-static void e_cell_date_edit_set_arg (GtkObject *o,
- GtkArg *arg,
- guint arg_id);
-
-static gint e_cell_date_edit_do_popup (ECellPopup *ecp,
- GdkEvent *event);
-static void e_cell_date_edit_set_popup_values (ECellDateEdit *ecde);
-static void e_cell_date_edit_select_matching_time(ECellDateEdit *ecde,
- char *time);
-static void e_cell_date_edit_show_popup (ECellDateEdit *ecde);
-static void e_cell_date_edit_get_popup_pos (ECellDateEdit *ecde,
- gint *x,
- gint *y,
- gint *height,
- gint *width);
-
-static void e_cell_date_edit_rebuild_time_list (ECellDateEdit *ecde);
-
-static int e_cell_date_edit_key_press (GtkWidget *popup_window,
- GdkEventKey *event,
- ECellDateEdit *ecde);
-static void e_cell_date_edit_on_ok_clicked (GtkWidget *button,
- ECellDateEdit *ecde);
-static void e_cell_date_edit_show_time_invalid_warning (ECellDateEdit *ecde);
-static void e_cell_date_edit_on_now_clicked (GtkWidget *button,
- ECellDateEdit *ecde);
-static void e_cell_date_edit_on_none_clicked (GtkWidget *button,
- ECellDateEdit *ecde);
-static void e_cell_date_edit_on_today_clicked (GtkWidget *button,
- ECellDateEdit *ecde);
-static void e_cell_date_edit_update_cell (ECellDateEdit *ecde,
- char *text);
-static void e_cell_date_edit_on_time_selected (GtkList *list,
- ECellDateEdit *ecde);
-static void e_cell_date_edit_hide_popup (ECellDateEdit *ecde);
-
-/* Our arguments. */
-enum {
- ARG_0,
- ARG_SHOW_TIME,
- ARG_SHOW_NOW_BUTTON,
- ARG_SHOW_TODAY_BUTTON,
- ARG_ALLOW_NO_DATE_SET,
- ARG_USE_24_HOUR_FORMAT,
- ARG_LOWER_HOUR,
- ARG_UPPER_HOUR
-};
-
-static ECellPopupClass *parent_class;
-
-
-E_MAKE_TYPE (e_cell_date_edit, "ECellDateEdit", ECellDateEdit,
- e_cell_date_edit_class_init, e_cell_date_edit_init,
- e_cell_popup_get_type());
-
-
-static void
-e_cell_date_edit_class_init (GtkObjectClass *object_class)
-{
- ECellPopupClass *ecpc = (ECellPopupClass *) object_class;
-
- gtk_object_add_arg_type ("ECellDateEdit::show_time",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE,
- ARG_SHOW_TIME);
- gtk_object_add_arg_type ("ECellDateEdit::show_now_button",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE,
- ARG_SHOW_NOW_BUTTON);
- gtk_object_add_arg_type ("ECellDateEdit::show_today_button",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE,
- ARG_SHOW_TODAY_BUTTON);
- gtk_object_add_arg_type ("ECellDateEdit::allow_no_date_set",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE,
- ARG_ALLOW_NO_DATE_SET);
- gtk_object_add_arg_type ("ECellDateEdit::use_24_hour_format",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE,
- ARG_USE_24_HOUR_FORMAT);
- gtk_object_add_arg_type ("ECellDateEdit::lower_hour",
- GTK_TYPE_INT, GTK_ARG_READWRITE,
- ARG_LOWER_HOUR);
- gtk_object_add_arg_type ("ECellDateEdit::upper_hour",
- GTK_TYPE_INT, GTK_ARG_READWRITE,
- ARG_UPPER_HOUR);
-
- object_class->destroy = e_cell_date_edit_destroy;
- object_class->get_arg = e_cell_date_edit_get_arg;
- object_class->set_arg = e_cell_date_edit_set_arg;
-
- ecpc->popup = e_cell_date_edit_do_popup;
-
- parent_class = gtk_type_class (e_cell_popup_get_type ());
-}
-
-
-static void
-e_cell_date_edit_init (ECellDateEdit *ecde)
-{
- GtkWidget *frame, *vbox, *hbox, *vbox2;
- GtkWidget *scrolled_window, *list, *bbox;
- GtkWidget *now_button, *today_button, *none_button, *ok_button;
-
- ecde->lower_hour = 0;
- ecde->upper_hour = 24;
- ecde->use_24_hour_format = TRUE;
- ecde->need_time_list_rebuild = TRUE;
- ecde->freeze_count = 0;
-
- /* We create one popup window for the ECell, since there will only
- ever be one popup in use at a time. */
- ecde->popup_window = gtk_window_new (GTK_WINDOW_POPUP);
-
- gtk_window_set_policy (GTK_WINDOW (ecde->popup_window),
- TRUE, TRUE, FALSE);
-
- frame = gtk_frame_new (NULL);
- gtk_container_add (GTK_CONTAINER (ecde->popup_window), frame);
- gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT);
- gtk_widget_show (frame);
-
- vbox = gtk_vbox_new (FALSE, 0);
- gtk_container_add (GTK_CONTAINER (frame), vbox);
- gtk_widget_show (vbox);
-
- hbox = gtk_hbox_new (FALSE, 4);
- gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
- gtk_widget_show (hbox);
-
- ecde->calendar = e_calendar_new ();
- gnome_canvas_item_set (GNOME_CANVAS_ITEM (E_CALENDAR (ecde->calendar)->calitem),
- "move_selection_when_moving", FALSE,
- NULL);
- gtk_box_pack_start (GTK_BOX (hbox), ecde->calendar, TRUE, TRUE, 0);
- gtk_widget_show (ecde->calendar);
-
- vbox2 = gtk_vbox_new (FALSE, 2);
- gtk_box_pack_start (GTK_BOX (hbox), vbox2, TRUE, TRUE, 0);
- gtk_widget_show (vbox2);
-
- ecde->time_entry = gtk_entry_new ();
- gtk_widget_set_usize (ecde->time_entry, 50, -1);
- gtk_box_pack_start (GTK_BOX (vbox2), ecde->time_entry,
- FALSE, FALSE, 0);
- gtk_widget_show (ecde->time_entry);
-
- scrolled_window = gtk_scrolled_window_new (NULL, NULL);
- gtk_box_pack_start (GTK_BOX (vbox2), scrolled_window, TRUE, TRUE, 0);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
- GTK_POLICY_NEVER,
- GTK_POLICY_ALWAYS);
- gtk_widget_show (scrolled_window);
-
- list = gtk_list_new ();
- gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), list);
- gtk_container_set_focus_vadjustment (GTK_CONTAINER (list),
- gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (scrolled_window)));
- gtk_widget_show (list);
- ecde->time_list = list;
- gtk_signal_connect (GTK_OBJECT (list), "selection-changed",
- GTK_SIGNAL_FUNC (e_cell_date_edit_on_time_selected),
- ecde);
-
- bbox = gtk_hbutton_box_new ();
- gtk_container_set_border_width (GTK_CONTAINER (bbox), 4);
- gtk_button_box_set_spacing (GTK_BUTTON_BOX (bbox), 2);
- gtk_button_box_set_child_ipadding (GTK_BUTTON_BOX (bbox), 2, 0);
- gtk_button_box_set_child_size (GTK_BUTTON_BOX (bbox), 0, 0);
- gtk_box_pack_start (GTK_BOX (vbox), bbox, FALSE, FALSE, 0);
- gtk_widget_show (bbox);
-
- now_button = gtk_button_new_with_label (_("Now"));
- gtk_container_add (GTK_CONTAINER (bbox), now_button);
- gtk_widget_show (now_button);
- gtk_signal_connect (GTK_OBJECT (now_button), "clicked",
- GTK_SIGNAL_FUNC (e_cell_date_edit_on_now_clicked),
- ecde);
- ecde->now_button = now_button;
-
- today_button = gtk_button_new_with_label (_("Today"));
- gtk_container_add (GTK_CONTAINER (bbox), today_button);
- gtk_widget_show (today_button);
- gtk_signal_connect (GTK_OBJECT (today_button), "clicked",
- GTK_SIGNAL_FUNC (e_cell_date_edit_on_today_clicked),
- ecde);
- ecde->today_button = today_button;
-
- none_button = gtk_button_new_with_label (_("None"));
- gtk_container_add (GTK_CONTAINER (bbox), none_button);
- gtk_widget_show (none_button);
- gtk_signal_connect (GTK_OBJECT (none_button), "clicked",
- GTK_SIGNAL_FUNC (e_cell_date_edit_on_none_clicked),
- ecde);
- ecde->none_button = none_button;
-
- ok_button = gtk_button_new_with_label (_("OK"));
- gtk_container_add (GTK_CONTAINER (bbox), ok_button);
- gtk_widget_show (ok_button);
- gtk_signal_connect (GTK_OBJECT (ok_button), "clicked",
- GTK_SIGNAL_FUNC (e_cell_date_edit_on_ok_clicked),
- ecde);
-
-
- gtk_signal_connect (GTK_OBJECT (ecde->popup_window),
- "key_press_event",
- GTK_SIGNAL_FUNC (e_cell_date_edit_key_press),
- ecde);
-}
-
-
-/**
- * e_cell_date_edit_new:
- *
- * Creates a new ECellDateEdit renderer.
- *
- * Returns: an ECellDateEdit object.
- */
-ECell *
-e_cell_date_edit_new (void)
-{
- ECellDateEdit *ecde = gtk_type_new (e_cell_date_edit_get_type ());
-
- return (ECell*) ecde;
-}
-
-
-/*
- * GtkObject::destroy method
- */
-static void
-e_cell_date_edit_destroy (GtkObject *object)
-{
- ECellDateEdit *ecde = E_CELL_DATE_EDIT (object);
-
- gtk_widget_unref (ecde->popup_window);
-
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
-}
-
-
-static void
-e_cell_date_edit_get_arg (GtkObject *o,
- GtkArg *arg,
- guint arg_id)
-{
- ECellDateEdit *ecde;
-
- ecde = E_CELL_DATE_EDIT (o);
-
- switch (arg_id) {
- case ARG_SHOW_TIME:
- GTK_VALUE_BOOL (*arg) = GTK_WIDGET_VISIBLE (ecde->time_entry) ? TRUE : FALSE;
- break;
- case ARG_SHOW_NOW_BUTTON:
- GTK_VALUE_BOOL (*arg) = GTK_WIDGET_VISIBLE (ecde->now_button) ? TRUE : FALSE;
- break;
- case ARG_SHOW_TODAY_BUTTON:
- GTK_VALUE_BOOL (*arg) = GTK_WIDGET_VISIBLE (ecde->today_button) ? TRUE : FALSE;
- break;
- case ARG_ALLOW_NO_DATE_SET:
- GTK_VALUE_BOOL (*arg) = GTK_WIDGET_VISIBLE (ecde->none_button) ? TRUE : FALSE;
- break;
- case ARG_USE_24_HOUR_FORMAT:
- GTK_VALUE_BOOL (*arg) = ecde->use_24_hour_format;
- break;
- case ARG_LOWER_HOUR:
- GTK_VALUE_INT (*arg) = ecde->lower_hour;
- break;
- case ARG_UPPER_HOUR:
- GTK_VALUE_INT (*arg) = ecde->upper_hour;
- break;
- default:
- g_warning ("Invalid arg");
- }
-}
-
-
-static void
-e_cell_date_edit_set_arg (GtkObject *o,
- GtkArg *arg,
- guint arg_id)
-{
- ECellDateEdit *ecde;
- gint ivalue;
- gboolean bvalue;
-
- ecde = E_CELL_DATE_EDIT (o);
-
- switch (arg_id){
- case ARG_SHOW_TIME:
- bvalue = GTK_VALUE_BOOL (*arg);
- if (bvalue) {
- gtk_widget_show (ecde->time_entry);
- gtk_widget_show (ecde->time_list);
- } else {
- gtk_widget_hide (ecde->time_entry);
- gtk_widget_hide (ecde->time_list);
- }
- break;
- case ARG_SHOW_NOW_BUTTON:
- bvalue = GTK_VALUE_BOOL (*arg);
- if (bvalue) {
- gtk_widget_show (ecde->now_button);
- } else {
- gtk_widget_hide (ecde->now_button);
- }
- break;
- case ARG_SHOW_TODAY_BUTTON:
- bvalue = GTK_VALUE_BOOL (*arg);
- if (bvalue) {
- gtk_widget_show (ecde->today_button);
- } else {
- gtk_widget_hide (ecde->today_button);
- }
- break;
- case ARG_ALLOW_NO_DATE_SET:
- bvalue = GTK_VALUE_BOOL (*arg);
- if (bvalue) {
- gtk_widget_show (ecde->none_button);
- } else {
- /* FIXME: What if we have no date set now. */
- gtk_widget_hide (ecde->none_button);
- }
- break;
- case ARG_USE_24_HOUR_FORMAT:
- bvalue = GTK_VALUE_BOOL (*arg);
- if (ecde->use_24_hour_format != bvalue) {
- ecde->use_24_hour_format = bvalue;
- ecde->need_time_list_rebuild = TRUE;
- }
- break;
- case ARG_LOWER_HOUR:
- ivalue = GTK_VALUE_INT (*arg);
- ivalue = CLAMP (ivalue, 0, 24);
- if (ecde->lower_hour != ivalue) {
- ecde->lower_hour = ivalue;
- ecde->need_time_list_rebuild = TRUE;
- }
- break;
- case ARG_UPPER_HOUR:
- ivalue = GTK_VALUE_INT (*arg);
- ivalue = CLAMP (ivalue, 0, 24);
- if (ecde->upper_hour != ivalue) {
- ecde->upper_hour = ivalue;
- ecde->need_time_list_rebuild = TRUE;
- }
- break;
- default:
- g_warning ("Invalid arg");
- }
-
-#if 0
- if (ecde->need_time_list_rebuild && ecde->freeze_count == 0)
- e_cell_date_edit_rebuild_time_list (ecde);
-#endif
-}
-
-
-static gint
-e_cell_date_edit_do_popup (ECellPopup *ecp,
- GdkEvent *event)
-{
- ECellDateEdit *ecde = E_CELL_DATE_EDIT (ecp);
- guint32 time;
-
- e_cell_date_edit_show_popup (ecde);
- e_cell_date_edit_set_popup_values (ecde);
-
- if (event->type == GDK_BUTTON_PRESS) {
- time = event->button.time;
- } else {
- time = event->key.time;
- }
-
- gtk_grab_add (ecde->popup_window);
-
- return TRUE;
-}
-
-
-static void
-e_cell_date_edit_set_popup_values (ECellDateEdit *ecde)
-{
- ECellPopup *ecp = E_CELL_POPUP (ecde);
- ECellView *ecv = (ECellView*) ecp->popup_cell_view;
- ETableItem *eti = E_TABLE_ITEM (ecp->popup_cell_view->cell_view.e_table_item_view);
- ETableCol *ecol;
- char *cell_text;
- ETimeParseStatus status;
- struct tm date_tm;
- GDate date;
- ECalendarItem *calitem;
- char buffer[64];
-
- ecol = e_table_header_get_column (eti->header, ecp->popup_view_col);
- cell_text = e_table_model_value_at (ecv->e_table_model,
- ecol->col_idx, ecp->popup_row);
-
- status = e_time_parse_date_and_time (cell_text, &date_tm);
-
- /* If there is no date and time set, or the date is invalid, we clear
- the selections, else we select the appropriate date & time. */
- calitem = E_CALENDAR_ITEM (E_CALENDAR (ecde->calendar)->calitem);
- if (status == E_TIME_PARSE_NONE || status == E_TIME_PARSE_INVALID) {
- gtk_entry_set_text (GTK_ENTRY (ecde->time_entry), "");
- e_calendar_item_set_selection (calitem, NULL, NULL);
- gtk_list_unselect_all (GTK_LIST (ecde->time_list));
- } else {
- e_time_format_time (&date_tm, ecde->use_24_hour_format, FALSE,
- buffer, sizeof (buffer));
- gtk_entry_set_text (GTK_ENTRY (ecde->time_entry), buffer);
-
- g_date_clear (&date, 1);
- g_date_set_dmy (&date, date_tm.tm_mday, date_tm.tm_mon + 1,
- date_tm.tm_year + 1900);
- e_calendar_item_set_selection (calitem, &date, &date);
-
- e_cell_date_edit_select_matching_time (ecde, buffer);
- }
-}
-
-
-static void
-e_cell_date_edit_select_matching_time (ECellDateEdit *ecde,
- char *time)
-{
- GtkList *list;
- GtkWidget *listitem, *label;
- GList *elem;
- gboolean found = FALSE;
- char *list_item_text;
-
- list = GTK_LIST (ecde->time_list);
- elem = list->children;
- while (elem) {
- listitem = GTK_WIDGET (elem->data);
- label = GTK_BIN (listitem)->child;
- gtk_label_get (GTK_LABEL (label), &list_item_text);
-
- if (!strcmp (list_item_text, time)) {
- found = TRUE;
- gtk_list_select_child (list, listitem);
- break;
- }
-
- elem = elem->next;
- }
-
- if (!found)
- gtk_list_unselect_all (list);
-}
-
-
-static void
-e_cell_date_edit_show_popup (ECellDateEdit *ecde)
-{
- gint x, y, width, height, old_width, old_height;
-
- if (ecde->need_time_list_rebuild)
- e_cell_date_edit_rebuild_time_list (ecde);
-
- /* This code is practically copied from GtkCombo. */
- old_width = ecde->popup_window->allocation.width;
- old_height = ecde->popup_window->allocation.height;
-
- e_cell_date_edit_get_popup_pos (ecde, &x, &y, &height, &width);
-
- gtk_widget_set_uposition (ecde->popup_window, x, y);
- gtk_widget_set_usize (ecde->popup_window, width, height);
- gtk_widget_realize (ecde->popup_window);
- gdk_window_resize (ecde->popup_window->window, width, height);
- gtk_widget_show (ecde->popup_window);
-
- /* Set the focus to the first widget. */
- gtk_widget_grab_focus (ecde->time_entry);
-
- E_CELL_POPUP (ecde)->popup_shown = TRUE;
-}
-
-
-/* Calculates the size and position of the popup window (like GtkCombo). */
-static void
-e_cell_date_edit_get_popup_pos (ECellDateEdit *ecde,
- gint *x,
- gint *y,
- gint *height,
- gint *width)
-{
- ECellPopup *ecp = E_CELL_POPUP (ecde);
- ETableItem *eti = E_TABLE_ITEM (ecp->popup_cell_view->cell_view.e_table_item_view);
- GtkWidget *canvas = GTK_WIDGET (GNOME_CANVAS_ITEM (eti)->canvas);
- GtkRequisition popup_requisition;
- gint avail_height, screen_width, column_width, row_height;
- double x1, y1;
-
- gdk_window_get_origin (canvas->window, x, y);
-
- x1 = e_table_header_col_diff (eti->header, 0, eti->editing_col + 1);
- y1 = e_table_item_row_diff (eti, 0, eti->editing_row + 1);
- column_width = e_table_header_col_diff (eti->header, eti->editing_col,
- eti->editing_col + 1);
- row_height = e_table_item_row_diff (eti, eti->editing_row,
- eti->editing_row + 1);
- gnome_canvas_item_i2w (GNOME_CANVAS_ITEM (eti), &x1, &y1);
-
- *x += x1;
- /* The ETable positions don't include the grid lines, I think, so we
- add 1. */
- *y += y1 + 1;
-
- avail_height = gdk_screen_height () - *y;
-
- /* We'll use the entire screen width if needed, but we save space for
- the vertical scrollbar in case we need to show that. */
- screen_width = gdk_screen_width ();
-
- gtk_widget_size_request (ecde->popup_window, &popup_requisition);
-
- /* Calculate the desired width. */
- *width = popup_requisition.width;
-
- /* Use at least the same width as the column. */
- if (*width < column_width)
- *width = column_width;
-
- /* Check if it fits in the available height. */
- if (popup_requisition.height > avail_height) {
- /* It doesn't fit, so we see if we have the minimum space
- needed. */
- if (*y - row_height > avail_height) {
- /* We don't, so we show the popup above the cell
- instead of below it. */
- avail_height = *y - row_height;
- *y -= (popup_requisition.height + row_height);
- if (*y < 0)
- *y = 0;
- }
- }
-
- /* We try to line it up with the right edge of the column, but we don't
- want it to go off the edges of the screen. */
- if (*x > screen_width)
- *x = screen_width;
- *x -= *width;
- if (*x < 0)
- *x = 0;
-
- *height = popup_requisition.height;
-}
-
-
-/* This handles key press events in the popup window. If the Escape key is
- pressed we hide the popup, and do not change the cell contents. */
-static int
-e_cell_date_edit_key_press (GtkWidget *popup_window,
- GdkEventKey *event,
- ECellDateEdit *ecde)
-{
- g_print ("In e_cell_date_edit_key_press\n");
-
- /* If the Escape key is pressed we hide the popup. */
- if (event->keyval != GDK_Escape)
- return FALSE;
-
- e_cell_date_edit_hide_popup (ecde);
-
- return TRUE;
-}
-
-
-/* Clears the time list and rebuilds it using the lower_hour, upper_hour
- and use_24_hour_format settings. */
-static void
-e_cell_date_edit_rebuild_time_list (ECellDateEdit *ecde)
-{
- GtkList *list;
- GtkWidget *listitem;
- char buffer[40], *format;
- struct tm tmp_tm;
- gint hour, min;
-
- list = GTK_LIST (ecde->time_list);
-
- gtk_list_clear_items (list, 0, -1);
-
- /* Fill the struct tm with some sane values. */
- tmp_tm.tm_year = 2000;
- tmp_tm.tm_mon = 0;
- tmp_tm.tm_mday = 1;
- tmp_tm.tm_sec = 0;
- tmp_tm.tm_isdst = 0;
-
- for (hour = ecde->lower_hour; hour <= ecde->upper_hour; hour++) {
-
- /* We don't want to display midnight at the end, since that is
- really in the next day. */
- if (hour == 24)
- break;
-
- /* We want to finish on upper_hour, with min == 0. */
- for (min = 0;
- min == 0 || (min < 60 && hour != ecde->upper_hour);
- min += 30) {
- tmp_tm.tm_hour = hour;
- tmp_tm.tm_min = min;
- e_time_format_time (&tmp_tm, ecde->use_24_hour_format,
- FALSE, buffer, sizeof (buffer));
- listitem = gtk_list_item_new_with_label (buffer);
- gtk_widget_show (listitem);
- gtk_container_add (GTK_CONTAINER (list), listitem);
- }
- }
-
- ecde->need_time_list_rebuild = FALSE;
-}
-
-
-static void
-e_cell_date_edit_on_ok_clicked (GtkWidget *button,
- ECellDateEdit *ecde)
-{
- ECalendarItem *calitem;
- GDate start_date, end_date;
- gboolean day_selected;
- struct tm date_tm;
- char buffer[64], *text;
- ETimeParseStatus status;
-
- calitem = E_CALENDAR_ITEM (E_CALENDAR (ecde->calendar)->calitem);
- day_selected = e_calendar_item_get_selection (calitem, &start_date,
- &end_date);
-
- text = gtk_entry_get_text (GTK_ENTRY (ecde->time_entry));
- status = e_time_parse_time (text, &date_tm);
- if (status == E_TIME_PARSE_INVALID) {
- e_cell_date_edit_show_time_invalid_warning (ecde);
- return;
- }
-
- if (day_selected) {
- date_tm.tm_year = g_date_year (&start_date) - 1900;
- date_tm.tm_mon = g_date_month (&start_date) - 1;
- date_tm.tm_mday = g_date_day (&start_date);
- /* We need to call this to set the weekday. */
- mktime (&date_tm);
- e_time_format_date_and_time (&date_tm,
- ecde->use_24_hour_format,
- TRUE, FALSE,
- buffer, sizeof (buffer));
- } else {
- buffer[0] = '\0';
- }
-
- e_cell_date_edit_update_cell (ecde, buffer);
- e_cell_date_edit_hide_popup (ecde);
-}
-
-
-static void
-e_cell_date_edit_show_time_invalid_warning (ECellDateEdit *ecde)
-{
- GtkWidget *dialog;
- struct tm date_tm;
- char buffer[64], *message;
-
- /* Create a useful error message showing the correct format. */
- date_tm.tm_year = 100;
- date_tm.tm_mon = 0;
- date_tm.tm_mday = 1;
- date_tm.tm_hour = 1;
- date_tm.tm_min = 30;
- date_tm.tm_sec = 0;
- date_tm.tm_isdst = -1;
- e_time_format_time (&date_tm, ecde->use_24_hour_format, FALSE,
- buffer, sizeof (buffer));
-
- message = g_strdup_printf (_("The time must be in the format: %s"),
- buffer);
-
- dialog = gnome_message_box_new (message, GNOME_MESSAGE_BOX_ERROR,
- GNOME_STOCK_BUTTON_OK, NULL);
- /* FIXME: Fix transient settings - I'm not sure it works with popup
- windows. Maybe we need to use a normal window without decorations.*/
- gtk_window_set_transient_for (GTK_WINDOW (dialog),
- GTK_WINDOW (ecde->popup_window));
- gnome_dialog_run (GNOME_DIALOG (dialog));
-
- g_free (message);
-}
-
-
-static void
-e_cell_date_edit_on_now_clicked (GtkWidget *button,
- ECellDateEdit *ecde)
-{
- struct tm *tmp_tm;
- time_t t;
- char buffer[64];
-
- g_print ("In e_cell_date_edit_on_now_clicked\n");
-
- t = time (NULL);
- tmp_tm = localtime (&t);
- e_time_format_date_and_time (tmp_tm,
- ecde->use_24_hour_format,
- TRUE, FALSE,
- buffer, sizeof (buffer));
-
- e_cell_date_edit_update_cell (ecde, buffer);
- e_cell_date_edit_hide_popup (ecde);
-}
-
-
-static void
-e_cell_date_edit_on_none_clicked (GtkWidget *button,
- ECellDateEdit *ecde)
-{
- g_print ("In e_cell_date_edit_on_none_clicked\n");
-
- e_cell_date_edit_update_cell (ecde, "");
- e_cell_date_edit_hide_popup (ecde);
-}
-
-
-static void
-e_cell_date_edit_on_today_clicked (GtkWidget *button,
- ECellDateEdit *ecde)
-{
- struct tm *tmp_tm;
- time_t t;
- char buffer[64];
-
- g_print ("In e_cell_date_edit_on_today_clicked\n");
-
- t = time (NULL);
- tmp_tm = localtime (&t);
- tmp_tm->tm_hour = 0;
- tmp_tm->tm_min = 0;
- tmp_tm->tm_sec = 0;
- e_time_format_date_and_time (tmp_tm,
- ecde->use_24_hour_format,
- FALSE, FALSE,
- buffer, sizeof (buffer));
-
- e_cell_date_edit_update_cell (ecde, buffer);
- e_cell_date_edit_hide_popup (ecde);
-}
-
-
-static void
-e_cell_date_edit_update_cell (ECellDateEdit *ecde,
- char *text)
-{
- ECellPopup *ecp = E_CELL_POPUP (ecde);
- ECellView *ecv = (ECellView*) ecp->popup_cell_view;
- ETableItem *eti = E_TABLE_ITEM (ecv->e_table_item_view);
- ETableCol *ecol;
- gchar *old_text;
-
- /* Compare the new text with the existing cell contents. */
- ecol = e_table_header_get_column (eti->header, ecp->popup_view_col);
- old_text = e_table_model_value_at (ecv->e_table_model,
- ecol->col_idx, ecp->popup_row);
-
- /* If they are different, update the cell contents. */
- if (strcmp (old_text, text)) {
- e_table_model_set_value_at (ecv->e_table_model,
- ecol->col_idx, ecp->popup_row,
- text);
- }
-}
-
-
-static void
-e_cell_date_edit_on_time_selected (GtkList *list,
- ECellDateEdit *ecde)
-{
- GtkWidget *listitem, *label;
- char *list_item_text;
-
- g_print ("In e_cell_date_edit_on_time_selected\n");
-
- if (!list->selection)
- return;
-
- listitem = list->selection->data;
- label = GTK_BIN (listitem)->child;
- gtk_label_get (GTK_LABEL (label), &list_item_text);
- gtk_entry_set_text (GTK_ENTRY (ecde->time_entry), list_item_text);
-}
-
-
-static void
-e_cell_date_edit_hide_popup (ECellDateEdit *ecde)
-{
- gtk_grab_remove (ecde->popup_window);
- gtk_widget_hide (ecde->popup_window);
- E_CELL_POPUP (ecde)->popup_shown = FALSE;
-}
-
-
-/* These freeze and thaw the rebuilding of the time list. They are useful when
- setting several properties which result in rebuilds of the list, e.g. the
- lower_hour, upper_hour and use_24_hour_format properties. */
-void
-e_cell_date_edit_freeze (ECellDateEdit *ecde)
-{
- g_return_if_fail (E_IS_CELL_DATE_EDIT (ecde));
-
- ecde->freeze_count++;
-}
-
-
-void
-e_cell_date_edit_thaw (ECellDateEdit *ecde)
-{
- g_return_if_fail (E_IS_CELL_DATE_EDIT (ecde));
-
- if (ecde->freeze_count > 0) {
- ecde->freeze_count--;
-
- if (ecde->freeze_count == 0)
- e_cell_date_edit_rebuild_time_list (ecde);
- }
-}
-
diff --git a/widgets/misc/e-cell-date-edit.h b/widgets/misc/e-cell-date-edit.h
deleted file mode 100644
index f3f8beb02b..0000000000
--- a/widgets/misc/e-cell-date-edit.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 2001, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * ECellDateEdit - a subclass of ECellPopup used to show a date with a popup
- * window to edit it.
- */
-
-#ifndef _E_CELL_DATE_EDIT_H_
-#define _E_CELL_DATE_EDIT_H_
-
-#include <gal/e-table/e-cell-popup.h>
-
-#define E_CELL_DATE_EDIT_TYPE (e_cell_date_edit_get_type ())
-#define E_CELL_DATE_EDIT(o) (GTK_CHECK_CAST ((o), E_CELL_DATE_EDIT_TYPE, ECellDateEdit))
-#define E_CELL_DATE_EDIT_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_CELL_DATE_EDIT_TYPE, ECellDateEditClass))
-#define E_IS_CELL_DATE_EDIT(o) (GTK_CHECK_TYPE ((o), E_CELL_DATE_EDIT_TYPE))
-#define E_IS_CELL_DATE_EDIT_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_CELL_DATE_EDIT_TYPE))
-
-
-typedef struct {
- ECellPopup parent;
-
- GtkWidget *popup_window;
- GtkWidget *calendar;
- GtkWidget *time_entry;
- GtkWidget *time_list;
-
- GtkWidget *now_button;
- GtkWidget *today_button;
- GtkWidget *none_button;
-
- /* This is the range of hours we show in the time list. */
- gint lower_hour;
- gint upper_hour;
-
- /* TRUE if we use 24-hour format for the time list and entry. */
- gboolean use_24_hour_format;
-
- /* This is TRUE if we need to rebuild the list of times. */
- gboolean need_time_list_rebuild;
-
- /* The freeze count for rebuilding the time list. We only rebuild when
- this is 0. */
- gint freeze_count;
-} ECellDateEdit;
-
-typedef struct {
- ECellPopupClass parent_class;
-} ECellDateEditClass;
-
-
-GtkType e_cell_date_edit_get_type (void);
-ECell *e_cell_date_edit_new (void);
-
-
-/* These freeze and thaw the rebuilding of the time list. They are useful when
- setting several properties which result in rebuilds of the list, e.g. the
- lower_hour, upper_hour and use_24_hour_format properties. */
-void e_cell_date_edit_freeze (ECellDateEdit *ecde);
-void e_cell_date_edit_thaw (ECellDateEdit *ecde);
-
-#endif /* _E_CELL_DATE_EDIT_H_ */
diff --git a/widgets/misc/e-clipped-label.c b/widgets/misc/e-clipped-label.c
deleted file mode 100644
index 8675b544dd..0000000000
--- a/widgets/misc/e-clipped-label.c
+++ /dev/null
@@ -1,384 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@helixcode.com>
- *
- * Copyright 1999, Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * This is similar to GtkLabel but clips itself and displays '...' if it
- * can't fit inside its allocated area. The intended use is for inside buttons
- * that are a fixed size. The GtkLabel would normally display only the middle
- * part of the text, which doesn't look very good. This only supports one line
- * of text (so no wrapping/justification), without underlined characters.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "e-clipped-label.h"
-
-#include <math.h>
-#include <string.h>
-
-#include <glib.h>
-#include <gdk/gdki18n.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-
-
-static void e_clipped_label_class_init (EClippedLabelClass *class);
-static void e_clipped_label_init (EClippedLabel *label);
-static void e_clipped_label_size_request (GtkWidget *widget,
- GtkRequisition *requisition);
-static void e_clipped_label_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation);
-static gint e_clipped_label_expose (GtkWidget *widget,
- GdkEventExpose *event);
-static void e_clipped_label_recalc_chars_displayed (EClippedLabel *label);
-static void e_clipped_label_destroy (GtkObject *object);
-
-
-static GtkMiscClass *parent_class;
-
-/* This is the string to draw when the label is clipped, e.g. '...'. */
-static gchar *e_clipped_label_ellipsis;
-
-/* Flags used in chars_displayed field. Must be negative. */
-#define E_CLIPPED_LABEL_NEED_RECALC -1
-#define E_CLIPPED_LABEL_SHOW_ENTIRE_LABEL -2
-
-
-GtkType
-e_clipped_label_get_type (void)
-{
- static GtkType e_clipped_label_type = 0;
-
- if (!e_clipped_label_type){
- GtkTypeInfo e_clipped_label_info = {
- "EClippedLabel",
- sizeof (EClippedLabel),
- sizeof (EClippedLabelClass),
- (GtkClassInitFunc) e_clipped_label_class_init,
- (GtkObjectInitFunc) e_clipped_label_init,
- NULL, /* reserved 1 */
- NULL, /* reserved 2 */
- (GtkClassInitFunc) NULL
- };
-
- parent_class = gtk_type_class (GTK_TYPE_MISC);
- e_clipped_label_type = gtk_type_unique (GTK_TYPE_MISC,
- &e_clipped_label_info);
- }
-
- return e_clipped_label_type;
-}
-
-
-static void
-e_clipped_label_class_init (EClippedLabelClass *class)
-{
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
-
- object_class = (GtkObjectClass *) class;
- widget_class = (GtkWidgetClass *) class;
-
- /* Method override */
- widget_class->size_request = e_clipped_label_size_request;
- widget_class->size_allocate = e_clipped_label_size_allocate;
- widget_class->expose_event = e_clipped_label_expose;
-
- object_class->destroy = e_clipped_label_destroy;
-
- e_clipped_label_ellipsis = _("...");
-}
-
-
-static void
-e_clipped_label_init (EClippedLabel *label)
-{
- GTK_WIDGET_SET_FLAGS (label, GTK_NO_WINDOW);
-
- label->label = NULL;
- label->label_wc = NULL;
- label->chars_displayed = E_CLIPPED_LABEL_NEED_RECALC;
-}
-
-
-/**
- * e_clipped_label_new:
- *
- * @text: The label text.
- * @Returns: A new #EClippedLabel.
- *
- * Creates a new #EClippedLabel with the given text.
- **/
-GtkWidget *
-e_clipped_label_new (const gchar *text)
-{
- GtkWidget *label;
-
- label = GTK_WIDGET (gtk_type_new (e_clipped_label_get_type ()));
-
- if (text && *text)
- e_clipped_label_set_text (E_CLIPPED_LABEL (label), text);
-
- return label;
-}
-
-
-static void
-e_clipped_label_size_request (GtkWidget *widget,
- GtkRequisition *requisition)
-{
- EClippedLabel *label;
- GdkFont *font;
-
- g_return_if_fail (E_IS_CLIPPED_LABEL (widget));
- g_return_if_fail (requisition != NULL);
-
- label = E_CLIPPED_LABEL (widget);
- font = widget->style->font;
-
- requisition->width = 0;
- requisition->height = font->ascent + font->descent
- + 2 * GTK_MISC (widget)->ypad;
-}
-
-
-static void
-e_clipped_label_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation)
-{
- EClippedLabel *label;
-
- label = E_CLIPPED_LABEL (widget);
-
- widget->allocation = *allocation;
-
- /* Flag that we need to recalculate how many characters to display. */
- label->chars_displayed = E_CLIPPED_LABEL_NEED_RECALC;
-}
-
-
-static gint
-e_clipped_label_expose (GtkWidget *widget,
- GdkEventExpose *event)
-{
- EClippedLabel *label;
- GtkMisc *misc;
- gint x, y;
- GdkFont *font;
- gchar *tmp_str, tmp_ch;
-
- g_return_val_if_fail (E_IS_CLIPPED_LABEL (widget), FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
- label = E_CLIPPED_LABEL (widget);
- misc = GTK_MISC (widget);
- font = widget->style->font;
-
- /* If the label isn't visible or has no text, just return. */
- if (!GTK_WIDGET_VISIBLE (widget) || !GTK_WIDGET_MAPPED (widget)
- || !label->label || (*label->label == '\0'))
- return TRUE;
-
- /* Recalculate the number of characters displayed, if necessary. */
- if (label->chars_displayed == E_CLIPPED_LABEL_NEED_RECALC)
- e_clipped_label_recalc_chars_displayed (label);
-
- /*
- * GC Clipping
- */
- gdk_gc_set_clip_rectangle (widget->style->white_gc,
- &event->area);
- gdk_gc_set_clip_rectangle (widget->style->fg_gc[widget->state],
- &event->area);
-
- y = floor (widget->allocation.y + (gint)misc->ypad
- + (((gint)widget->allocation.height - 2 * (gint)misc->ypad
- - (gint)font->ascent - font->descent)
- * misc->yalign) + 0.5) + font->ascent;
-
- if (label->chars_displayed == E_CLIPPED_LABEL_SHOW_ENTIRE_LABEL) {
- x = floor (widget->allocation.x + (gint)misc->xpad
- + (((gint)widget->allocation.width -
- (gint)label->label_width - 2 * (gint)misc->xpad)
- * misc->xalign) + 0.5);
-
- gtk_paint_string (widget->style, widget->window, widget->state,
- &event->area, widget, "label",
- x, y, label->label);
- } else {
- x = widget->allocation.x + (gint)misc->xpad;
-
- tmp_ch = label->label_wc[label->chars_displayed];
- label->label_wc[label->chars_displayed] = '\0';
- tmp_str = gdk_wcstombs (label->label_wc);
- if (tmp_str) {
- gtk_paint_string (widget->style, widget->window,
- widget->state, &event->area,
- widget, "label",
- x, y, tmp_str);
- g_free (tmp_str);
- }
- label->label_wc[label->chars_displayed] = tmp_ch;
-
- x = widget->allocation.x + (gint)misc->xpad
- + label->ellipsis_x;
- gtk_paint_string (widget->style, widget->window, widget->state,
- &event->area, widget, "label",
- x, y, e_clipped_label_ellipsis);
- }
-
- gdk_gc_set_clip_mask (widget->style->white_gc, NULL);
- gdk_gc_set_clip_mask (widget->style->fg_gc[widget->state], NULL);
-
- return TRUE;
-}
-
-
-static void
-e_clipped_label_destroy (GtkObject *object)
-{
- EClippedLabel *label;
-
- g_return_if_fail (E_IS_CLIPPED_LABEL (object));
-
- label = E_CLIPPED_LABEL(object);
-
- g_free (label->label);
- g_free (label->label_wc);
-}
-
-
-/**
- * e_clipped_label_get_text:
- *
- * @label: An #EClippedLabel.
- * @Return: The label text.
- *
- * Returns the label text, or NULL.
- **/
-gchar*
-e_clipped_label_get_text (EClippedLabel *label)
-{
- g_return_val_if_fail (E_IS_CLIPPED_LABEL (label), NULL);
-
- return label->label;
-}
-
-
-/**
- * e_clipped_label_set_text:
- *
- * @label: An #EClippedLabel.
- * @text: The new label text.
- *
- * Sets the label text.
- **/
-void
-e_clipped_label_set_text (EClippedLabel *label,
- const gchar *text)
-{
- gint len;
-
- g_return_if_fail (E_IS_CLIPPED_LABEL (label));
-
- if (label->label != text || !label->label || !text
- || strcmp (label->label, text)) {
- g_free (label->label);
- g_free (label->label_wc);
- label->label = NULL;
- label->label_wc = NULL;
-
- if (text) {
- label->label = g_strdup (text);
- len = strlen (text);
- label->label_wc = g_new (GdkWChar, len + 1);
- label->wc_len = gdk_mbstowcs (label->label_wc,
- label->label, len + 1);
- label->label_wc[label->wc_len] = '\0';
- }
-
- /* Reset the number of characters displayed, so it is
- recalculated when needed. */
- label->chars_displayed = E_CLIPPED_LABEL_NEED_RECALC;
-
- /* We don't queue a resize, since the label should not affect
- the widget size, but we queue a draw. */
- gtk_widget_queue_draw (GTK_WIDGET (label));
- }
-}
-
-
-static void
-e_clipped_label_recalc_chars_displayed (EClippedLabel *label)
-{
- GdkFont *font;
- gint max_width, width, ch, last_width;
-
- font = GTK_WIDGET (label)->style->font;
-
- max_width = GTK_WIDGET (label)->allocation.width
- - 2 * GTK_MISC (label)->xpad;
-
- if (!label->label) {
- label->chars_displayed = 0;
- return;
- }
-
- /* See if the entire label fits in the allocated width. */
- label->label_width = gdk_string_width (font, label->label);
- if (label->label_width <= max_width) {
- label->chars_displayed = E_CLIPPED_LABEL_SHOW_ENTIRE_LABEL;
- return;
- }
-
- /* Calculate the width of the ellipsis string. */
- max_width -= gdk_string_measure (font, e_clipped_label_ellipsis);
-
- if (max_width <= 0) {
- label->chars_displayed = 0;
- label->ellipsis_x = 0;
- return;
- }
-
- /* Step through the wide-char label, adding on the widths of the
- characters, until we can't fit any more in. */
- width = last_width = 0;
- for (ch = 0; ch < label->wc_len; ch++) {
- width += gdk_char_width_wc (font, label->label_wc[ch]);
-
- if (width > max_width) {
- label->chars_displayed = ch;
- label->ellipsis_x = last_width;
- return;
- }
-
- last_width = width;
- }
-
- g_warning ("Clipped label width not exceeded as expected");
- label->chars_displayed = E_CLIPPED_LABEL_SHOW_ENTIRE_LABEL;
-}
-
diff --git a/widgets/misc/e-clipped-label.h b/widgets/misc/e-clipped-label.h
deleted file mode 100644
index a21ceadeca..0000000000
--- a/widgets/misc/e-clipped-label.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@helixcode.com>
- *
- * Copyright 1999, Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * This is similar to GtkLabel but clips itself and displays '...' if it
- * can't fit inside its allocated area. The intended use is for inside buttons
- * that are a fixed size. The GtkLabel would normally display only the middle
- * part of the text, which doesn't look very good. This only supports one line
- * of text (so no wrapping/justification), without underlined characters.
- */
-#ifndef _E_CLIPPED_LABEL_H_
-#define _E_CLIPPED_LABEL_H_
-
-#include <gtk/gtkmisc.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define E_CLIPPED_LABEL(obj) GTK_CHECK_CAST (obj, e_clipped_label_get_type (), EClippedLabel)
-#define E_CLIPPED_LABEL_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, e_clipped_label_get_type (), EClippedLabelClass)
-#define E_IS_CLIPPED_LABEL(obj) GTK_CHECK_TYPE (obj, e_clipped_label_get_type ())
-
-
-typedef struct _EClippedLabel EClippedLabel;
-typedef struct _EClippedLabelClass EClippedLabelClass;
-
-struct _EClippedLabel
-{
- GtkMisc misc;
-
- gchar *label;
- GdkWChar *label_wc;
-
- /* This is the number of wide characters in the label. */
- gint wc_len;
-
- /* This is the width of the entire label string, in pixels. */
- gint label_width;
-
- /* This is the number of characters we can fit in, or
- E_CLIPPED_LABEL_NEED_RECALC if it needs to be recalculated, or
- E_CLIPPED_LABEL_SHOW_ENTIRE_LABEL to show the entire label. */
- gint chars_displayed;
-
- /* This is the x position to display the ellipsis string, e.g. '...',
- relative to the start of the label. */
- gint ellipsis_x;
-};
-
-struct _EClippedLabelClass
-{
- GtkMiscClass parent_class;
-};
-
-
-GtkType e_clipped_label_get_type (void);
-GtkWidget* e_clipped_label_new (const gchar *text);
-
-gchar* e_clipped_label_get_text (EClippedLabel *label);
-void e_clipped_label_set_text (EClippedLabel *label,
- const gchar *text);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_CLIPPED_LABEL_H_ */
diff --git a/widgets/misc/e-colors.c b/widgets/misc/e-colors.c
deleted file mode 100644
index 2325d659e4..0000000000
--- a/widgets/misc/e-colors.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * e_color.c: General color allocation utilities
- *
- * Author:
- * Miguel de Icaza (miguel@kernel.org)
- *
- * We keep our own color context, as the color allocation might take place
- * before things are realized.
- */
-#include <config.h>
-#include <gtk/gtkwidget.h>
-#include "e-colors.h"
-
-static gboolean e_color_inited;
-static GdkColorContext *e_color_context;
-
-GdkColor e_white, e_dark_gray, e_black;
-
-int
-e_color_alloc (gushort red, gushort green, gushort blue)
-{
- int failed;
-
- if (!e_color_inited)
- e_color_init ();
-
- return gdk_color_context_get_pixel (e_color_context,
- red, green, blue, &failed);
-}
-
-void
-e_color_alloc_gdk (GdkColor *c)
-{
- int failed;
-
- g_return_if_fail (c != NULL);
-
- if (!e_color_inited)
- e_color_init ();
-
- c->pixel = gdk_color_context_get_pixel (e_color_context, c->red, c->green, c->blue, &failed);
-}
-
-void
-e_color_alloc_name (const char *name, GdkColor *c)
-{
- int failed;
-
- g_return_if_fail (name != NULL);
- g_return_if_fail (c != NULL);
-
- if (!e_color_inited)
- e_color_init ();
-
- gdk_color_parse (name, c);
- c->pixel = 0;
- c->pixel = gdk_color_context_get_pixel (e_color_context, c->red, c->green, c->blue, &failed);
-}
-
-void
-e_color_init (void)
-{
- GdkColormap *colormap;
-
- /* It's surprisingly easy to end up calling this twice. Survive. */
- if (e_color_inited)
- return;
-
- colormap = gtk_widget_get_default_colormap ();
-
- /* Initialize the color context */
- e_color_context = gdk_color_context_new (
- gtk_widget_get_default_visual (), colormap);
-
- e_color_inited = TRUE;
-
- /* Allocate the default colors */
- gdk_color_white (colormap, &e_white);
- gdk_color_black (colormap, &e_black);
- e_color_alloc_name ("gray20", &e_dark_gray);
-}
diff --git a/widgets/misc/e-colors.h b/widgets/misc/e-colors.h
deleted file mode 100644
index 6cfceb664c..0000000000
--- a/widgets/misc/e-colors.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef GNOME_APP_LIBS_COLOR_H
-#define GNOME_APP_LIBS_COLOR_H
-
-#include <glib.h>
-#include <gdk/gdk.h>
-#include <libgnome/gnome-defs.h>
-
-BEGIN_GNOME_DECLS
-
-void e_color_init (void);
-
-/* Return the pixel value for the given red, green and blue */
-int e_color_alloc (gushort red, gushort green, gushort blue);
-void e_color_alloc_name (const char *name, GdkColor *color);
-void e_color_alloc_gdk (GdkColor *color);
-
-extern GdkColor e_white, e_dark_gray, e_black;
-
-END_GNOME_DECLS
-
-#endif /* GNOME_APP_LIBS_COLOR_H */
diff --git a/widgets/misc/e-cursors.c b/widgets/misc/e-cursors.c
deleted file mode 100644
index 1b5a8a226e..0000000000
--- a/widgets/misc/e-cursors.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * cursors.c: cursor handling for Gnumeric
- *
- * Authors:
- * Miguel de Icaza (miguel@gnu.org)
- */
-#include <config.h>
-
-#include "e-cursors.h"
-
-#include "e-colors.h"
-#include "pixmaps/cursor_cross.xpm"
-#include "pixmaps/cursor_zoom_in.xpm"
-#include "pixmaps/cursor_zoom_out.xpm"
-#include "pixmaps/cursor_hand_open.xpm"
-#include "pixmaps/cursor_hand_closed.xpm"
-#include <stdio.h>
-
-#define GDK_INTERNAL_CURSOR -1
-
-typedef struct {
- GdkCursor *cursor;
- int hot_x, hot_y;
- char **xpm;
-} CursorDef;
-
-static CursorDef cursors [] = {
- { NULL, 17, 17, cursor_cross_xpm },
- { NULL, GDK_INTERNAL_CURSOR, GDK_CROSSHAIR, NULL },
- { NULL, GDK_INTERNAL_CURSOR, GDK_ARROW, NULL },
- { NULL, GDK_INTERNAL_CURSOR, GDK_FLEUR, NULL },
- { NULL, 24, 24, cursor_zoom_in_xpm },
- { NULL, 24, 24, cursor_zoom_out_xpm },
- { NULL, GDK_INTERNAL_CURSOR, GDK_SB_H_DOUBLE_ARROW, NULL },
- { NULL, GDK_INTERNAL_CURSOR, GDK_SB_V_DOUBLE_ARROW, NULL },
- { NULL, GDK_INTERNAL_CURSOR, GDK_SIZING, NULL },
- { NULL, GDK_INTERNAL_CURSOR, GDK_SIZING, NULL },
- { NULL, GDK_INTERNAL_CURSOR, GDK_HAND2, NULL },
- { NULL, 10, 10, cursor_hand_open_xpm },
- { NULL, 10, 10, cursor_hand_closed_xpm },
- { NULL, 0, 0, NULL }
-};
-
-
-static void
-create_bitmap_and_mask_from_xpm (GdkBitmap **bitmap, GdkBitmap **mask, gchar **xpm)
-{
- int height, width, colors;
- char pixmap_buffer [(32 * 32)/8];
- char mask_buffer [(32 * 32)/8];
- int x, y, pix, yofs;
- int transparent_color, black_color;
-
- sscanf (xpm [0], "%d %d %d %d", &height, &width, &colors, &pix);
-
- g_assert (height == 32);
- g_assert (width == 32);
- g_assert (colors <= 3);
-
- transparent_color = ' ';
- black_color = '.';
-
- yofs = colors + 1;
- for (y = 0; y < 32; y++){
- for (x = 0; x < 32;){
- char value = 0, maskv = 0;
-
- for (pix = 0; pix < 8; pix++, x++){
- if (xpm [y + yofs][x] != transparent_color){
- maskv |= 1 << pix;
-
- /*
- * Invert the colours here because it seems
- * to workaround a bug the Matrox G100 Xserver?
- * We reverse the foreground & background in the next
- * routine to compensate.
- */
- if (xpm [y + yofs][x] == black_color){
- value |= 1 << pix;
- }
- }
- }
- pixmap_buffer [(y * 4 + x/8)-1] = value;
- mask_buffer [(y * 4 + x/8)-1] = maskv;
- }
- }
- *bitmap = gdk_bitmap_create_from_data (NULL, pixmap_buffer, 32, 32);
- *mask = gdk_bitmap_create_from_data (NULL, mask_buffer, 32, 32);
-}
-
-void
-e_cursors_init (void)
-{
- int i;
-
- for (i = 0; cursors [i].hot_x; i++){
- GdkBitmap *bitmap, *mask;
-
- if (cursors [i].hot_x < 0)
- cursors [i].cursor = gdk_cursor_new (cursors [i].hot_y);
- else {
- create_bitmap_and_mask_from_xpm (&bitmap, &mask, cursors [i].xpm);
-
- /* The foreground and background colours are reversed.
- * See comment above for explanation.
- */
- cursors [i].cursor =
- gdk_cursor_new_from_pixmap (
- bitmap, mask,
- &e_black, &e_white,
- cursors [i].hot_x,
- cursors [i].hot_y);
- }
- }
-
- g_assert (i == E_CURSOR_NUM_CURSORS);
-}
-
-void
-e_cursors_shutdown (void)
-{
- int i;
-
- for (i = 0; cursors [i].hot_x; i++)
- gdk_cursor_destroy (cursors [i].cursor);
-}
-
-
-/* Returns a cursor given its type */
-GdkCursor *
-e_cursor_get (ECursorType type)
-{
- g_return_val_if_fail (type >= 0 && type < E_CURSOR_NUM_CURSORS, NULL);
-
- return cursors [type].cursor;
-}
diff --git a/widgets/misc/e-cursors.h b/widgets/misc/e-cursors.h
deleted file mode 100644
index 4f04ff08cc..0000000000
--- a/widgets/misc/e-cursors.h
+++ /dev/null
@@ -1,45 +0,0 @@
-#ifndef GNOME_APP_LIB_CURSORS_H
-#define GNOME_APP_LIB_CURSORS_H
-
-#include <gdk/gdk.h>
-#include <libgnome/gnome-defs.h>
-
-BEGIN_GNOME_DECLS
-
-typedef enum {
- E_CURSOR_FAT_CROSS,
- E_CURSOR_THIN_CROSS,
- E_CURSOR_ARROW,
- E_CURSOR_MOVE,
- E_CURSOR_ZOOM_IN,
- E_CURSOR_ZOOM_OUT,
- E_CURSOR_SIZE_X,
- E_CURSOR_SIZE_Y,
- E_CURSOR_SIZE_TL,
- E_CURSOR_SIZE_TR,
- E_CURSOR_PRESS,
- E_CURSOR_HAND_OPEN,
- E_CURSOR_HAND_CLOSED,
- E_CURSOR_NUM_CURSORS
-} ECursorType;
-
-void e_cursors_init (void);
-void e_cursors_shutdown (void);
-
-#define e_cursor_set(win, c) \
-G_STMT_START { \
- if (win) \
- gdk_window_set_cursor (win, e_cursor_get (c)); \
-} G_STMT_END
-
-#define e_cursor_set_widget(w, c) \
-G_STMT_START { \
- if (GTK_WIDGET (w)->window) \
- gdk_window_set_cursor (GTK_WIDGET (w)->window, e_cursor_get (c)); \
-} G_STMT_END
-
-GdkCursor *e_cursor_get (ECursorType type);
-
-END_GNOME_DECLS
-
-#endif /* GNOME_APP_LIB_CURSORS_H */
diff --git a/widgets/misc/e-dateedit.c b/widgets/misc/e-dateedit.c
deleted file mode 100644
index af8c968f50..0000000000
--- a/widgets/misc/e-dateedit.c
+++ /dev/null
@@ -1,1733 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@helixcode.com>
- *
- * Copyright 2000, Helix Code, Inc.
- *
- * Based on the GnomeDateEdit, part of the Gnome Library.
- * Copyright (C) 1997, 1998, 1999, 2000 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * EDateEdit - a widget based on GnomeDateEdit to provide a date & optional
- * time field with popups for entering a date.
- */
-
-/* We need this for strptime. */
-#define _XOPEN_SOURCE 4
-
-#include <config.h>
-
-#include "e-dateedit.h"
-
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtkarrow.h>
-#include <gtk/gtkbbox.h>
-#include <gtk/gtkcombo.h>
-#include <gtk/gtkdrawingarea.h>
-#include <gtk/gtkentry.h>
-#include <gtk/gtkframe.h>
-#include <gtk/gtkhbbox.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtklist.h>
-#include <gtk/gtkmenu.h>
-#include <gtk/gtkmenuitem.h>
-#include <gtk/gtkoptionmenu.h>
-#include <gtk/gtkwindow.h>
-#include <gtk/gtkmain.h>
-#include <gtk/gtksignal.h>
-#include <gtk/gtkvbox.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include "e-calendar.h"
-
-
-
-struct _EDateEditPrivate {
- GtkWidget *date_entry;
- GtkWidget *date_button;
-
- GtkWidget *space;
-
- GtkWidget *time_combo;
-
- GtkWidget *cal_popup;
- GtkWidget *calendar;
- GtkWidget *now_button;
- GtkWidget *today_button;
- GtkWidget *none_button; /* This will only be visible if a
- 'None' date/time is permitted. */
-
- gboolean show_date;
- gboolean show_time;
- gboolean use_24_hour_format;
-
- /* This is the range of hours we show in the time popup. */
- gint lower_hour;
- gint upper_hour;
-
- /* This indicates whether the last date committed was invalid.
- (A date is committed by hitting Return, moving the keyboard focus,
- or selecting a date in the popup). Note that this only indicates
- that the date couldn't be parsed. A date set to 'None' is valid
- here, though e_date_edit_date_is_valid() will return FALSE if an
- empty date isn't actually permitted. */
- gboolean date_is_valid;
-
- /* This is the last valid date which was set. If the date was set to
- 'None' or empty, date_set_to_none will be TRUE and the other fields
- are undefined, so don't use them. */
- gboolean date_set_to_none;
- gint year;
- gint month;
- gint day;
-
- /* This indicates whether the last time committed was invalid.
- (A time is committed by hitting Return, moving the keyboard focus,
- or selecting a time in the popup). Note that this only indicates
- that the time couldn't be parsed. An empty/None time is valid
- here, though e_date_edit_time_is_valid() will return FALSE if an
- empty time isn't actually permitted. */
- gboolean time_is_valid;
-
- /* This is the last valid time which was set. If the time was set to
- 'None' or empty, time_set_to_none will be TRUE and the other fields
- are undefined, so don't use them. */
- gboolean time_set_to_none;
- gint hour;
- gint minute;
-};
-
-enum {
- CHANGED,
- LAST_SIGNAL
-};
-
-
-static gint date_edit_signals [LAST_SIGNAL] = { 0 };
-
-
-static void e_date_edit_class_init (EDateEditClass *class);
-static void e_date_edit_init (EDateEdit *dedit);
-static void create_children (EDateEdit *dedit);
-static void e_date_edit_destroy (GtkObject *object);
-static void e_date_edit_forall (GtkContainer *container,
- gboolean include_internals,
- GtkCallback callback,
- gpointer callback_data);
-
-static gint on_date_entry_key_press (GtkWidget *widget,
- GdkEventKey *event,
- EDateEdit *dedit);
-static void on_date_button_clicked (GtkWidget *widget,
- EDateEdit *dedit);
-static void e_date_edit_show_date_popup (EDateEdit *dedit);
-static void position_date_popup (EDateEdit *dedit);
-static void on_date_popup_none_button_clicked (GtkWidget *button,
- EDateEdit *dedit);
-static void on_date_popup_today_button_clicked (GtkWidget *button,
- EDateEdit *dedit);
-static void on_date_popup_now_button_clicked (GtkWidget *button,
- EDateEdit *dedit);
-static gint on_date_popup_delete_event (GtkWidget *widget,
- EDateEdit *dedit);
-static gint on_date_popup_key_press (GtkWidget *widget,
- GdkEventKey *event,
- EDateEdit *dedit);
-static gint on_date_popup_button_press (GtkWidget *widget,
- GdkEventButton *event,
- gpointer data);
-static void on_date_popup_date_selected (ECalendarItem *calitem,
- EDateEdit *dedit);
-static void hide_date_popup (EDateEdit *dedit);
-static void rebuild_time_popup (EDateEdit *dedit);
-static gboolean field_set_to_none (char *text);
-static gboolean e_date_edit_parse_date (EDateEdit *dedit,
- char *date_text,
- struct tm *date_tm);
-static gboolean e_date_edit_parse_time (EDateEdit *dedit,
- gchar *time_text,
- struct tm *time_tm);
-static void on_date_edit_time_selected (GtkList *list,
- EDateEdit *dedit);
-static gint on_time_entry_key_press (GtkWidget *widget,
- GdkEventKey *event,
- EDateEdit *dedit);
-static gint on_date_entry_focus_out (GtkEntry *entry,
- GdkEventFocus *event,
- EDateEdit *dedit);
-static gint on_time_entry_focus_out (GtkEntry *entry,
- GdkEventFocus *event,
- EDateEdit *dedit);
-static void e_date_edit_update_date_entry (EDateEdit *dedit);
-static void e_date_edit_update_time_entry (EDateEdit *dedit);
-static void e_date_edit_update_time_combo_state (EDateEdit *dedit);
-static void e_date_edit_check_date_changed (EDateEdit *dedit);
-static void e_date_edit_check_time_changed (EDateEdit *dedit);
-static gboolean e_date_edit_set_date_internal (EDateEdit *dedit,
- gboolean valid,
- gboolean none,
- gint year,
- gint month,
- gint day);
-static gboolean e_date_edit_set_time_internal (EDateEdit *dedit,
- gboolean valid,
- gboolean none,
- gint hour,
- gint minute);
-
-
-static GtkHBoxClass *parent_class;
-
-/**
- * e_date_edit_get_type:
- *
- * Returns the GtkType for the EDateEdit widget
- */
-guint
-e_date_edit_get_type (void)
-{
- static guint date_edit_type = 0;
-
- if (!date_edit_type){
- GtkTypeInfo date_edit_info = {
- "EDateEdit",
- sizeof (EDateEdit),
- sizeof (EDateEditClass),
- (GtkClassInitFunc) e_date_edit_class_init,
- (GtkObjectInitFunc) e_date_edit_init,
- NULL,
- NULL,
- };
-
- date_edit_type = gtk_type_unique (gtk_hbox_get_type (), &date_edit_info);
- }
-
- return date_edit_type;
-}
-
-
-static void
-e_date_edit_class_init (EDateEditClass *class)
-{
- GtkObjectClass *object_class = (GtkObjectClass *) class;
- GtkContainerClass *container_class = (GtkContainerClass *) class;
-
- object_class = (GtkObjectClass*) class;
-
- parent_class = gtk_type_class (gtk_hbox_get_type ());
-
- date_edit_signals [CHANGED] =
- gtk_signal_new ("changed",
- GTK_RUN_FIRST, object_class->type,
- GTK_SIGNAL_OFFSET (EDateEditClass,
- changed),
- gtk_signal_default_marshaller,
- GTK_TYPE_NONE, 0);
-
- gtk_object_class_add_signals (object_class, date_edit_signals,
- LAST_SIGNAL);
-
- object_class->destroy = e_date_edit_destroy;
-
- container_class->forall = e_date_edit_forall;
-
- class->changed = NULL;
-}
-
-
-static void
-e_date_edit_init (EDateEdit *dedit)
-{
- EDateEditPrivate *priv;
-
- dedit->priv = priv = g_new0 (EDateEditPrivate, 1);
-
- priv->show_date = TRUE;
- priv->show_time = TRUE;
- priv->use_24_hour_format = TRUE;
-
- priv->lower_hour = 0;
- priv->upper_hour = 24;
-
- priv->date_is_valid = TRUE;
- priv->date_set_to_none = TRUE;
- priv->time_is_valid = TRUE;
- priv->time_set_to_none = TRUE;
-
- create_children (dedit);
-
- /* Set it to the current time. */
- e_date_edit_set_time (dedit, 0);
-}
-
-
-/**
- * e_date_edit_new:
- *
- * Description: Creates a new #EDateEdit widget which can be used
- * to provide an easy to use way for entering dates and times.
- *
- * Returns: a new #EDateEdit widget.
- */
-GtkWidget *
-e_date_edit_new (void)
-{
- EDateEdit *dedit;
-
- dedit = gtk_type_new (e_date_edit_get_type ());
-
- return GTK_WIDGET (dedit);
-}
-
-
-static void
-create_children (EDateEdit *dedit)
-{
- EDateEditPrivate *priv;
- ECalendar *calendar;
- GtkWidget *frame, *arrow;
- GtkWidget *vbox, *bbox;
-
- priv = dedit->priv;
-
- priv->date_entry = gtk_entry_new ();
- gtk_widget_set_usize (priv->date_entry, 90, 0);
- gtk_box_pack_start (GTK_BOX (dedit), priv->date_entry, FALSE, TRUE, 0);
-
- gtk_signal_connect (GTK_OBJECT (priv->date_entry), "key_press_event",
- (GtkSignalFunc) on_date_entry_key_press,
- dedit);
- gtk_signal_connect_after (GTK_OBJECT (priv->date_entry),
- "focus_out_event",
- (GtkSignalFunc) on_date_entry_focus_out,
- dedit);
-
- priv->date_button = gtk_button_new ();
- gtk_signal_connect (GTK_OBJECT (priv->date_button), "clicked",
- GTK_SIGNAL_FUNC (on_date_button_clicked), dedit);
- gtk_box_pack_start (GTK_BOX (dedit), priv->date_button,
- FALSE, FALSE, 0);
-
- arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_OUT);
- gtk_container_add (GTK_CONTAINER (priv->date_button), arrow);
- gtk_widget_show (arrow);
-
- if (priv->show_date) {
- gtk_widget_show (priv->date_entry);
- gtk_widget_show (priv->date_button);
- }
-
- /* This is just to create a space between the date & time parts. */
- priv->space = gtk_drawing_area_new ();
- gtk_box_pack_start (GTK_BOX (dedit), priv->space, FALSE, FALSE, 2);
-
-
- priv->time_combo = gtk_combo_new ();
- gtk_widget_set_usize (GTK_COMBO (priv->time_combo)->entry, 90, 0);
- gtk_box_pack_start (GTK_BOX (dedit), priv->time_combo, FALSE, TRUE, 0);
- rebuild_time_popup (dedit);
-
- gtk_signal_connect (GTK_OBJECT (GTK_COMBO (priv->time_combo)->entry),
- "key_press_event",
- (GtkSignalFunc) on_time_entry_key_press,
- dedit);
- gtk_signal_connect_after (GTK_OBJECT (GTK_COMBO (priv->time_combo)->entry),
- "focus_out_event",
- (GtkSignalFunc) on_time_entry_focus_out,
- dedit);
- gtk_signal_connect_after (GTK_OBJECT (GTK_COMBO (priv->time_combo)->list),
- "selection_changed",
- (GtkSignalFunc) on_date_edit_time_selected,
- dedit);
-
- if (priv->show_time)
- gtk_widget_show (priv->time_combo);
-
- if (priv->show_date && priv->show_time)
- gtk_widget_show (priv->space);
-
- priv->cal_popup = gtk_window_new (GTK_WINDOW_POPUP);
- gtk_widget_set_events (priv->cal_popup,
- gtk_widget_get_events (priv->cal_popup)
- | GDK_KEY_PRESS_MASK);
- gtk_signal_connect (GTK_OBJECT (priv->cal_popup), "delete_event",
- (GtkSignalFunc) on_date_popup_delete_event,
- dedit);
- gtk_signal_connect (GTK_OBJECT (priv->cal_popup), "key_press_event",
- (GtkSignalFunc) on_date_popup_key_press,
- dedit);
- gtk_signal_connect (GTK_OBJECT (priv->cal_popup), "button_press_event",
- (GtkSignalFunc) on_date_popup_button_press,
- dedit);
- gtk_window_set_policy (GTK_WINDOW (priv->cal_popup),
- FALSE, FALSE, TRUE);
-
- frame = gtk_frame_new (NULL);
- gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT);
- gtk_container_add (GTK_CONTAINER (priv->cal_popup), frame);
- gtk_widget_show (frame);
-
- vbox = gtk_vbox_new (FALSE, 0);
- gtk_container_add (GTK_CONTAINER (frame), vbox);
- gtk_widget_show (vbox);
-
- priv->calendar = e_calendar_new ();
- calendar = E_CALENDAR (priv->calendar);
- gnome_canvas_item_set (GNOME_CANVAS_ITEM (calendar->calitem),
- "maximum_days_selected", 1,
- "move_selection_when_moving", FALSE,
- NULL);
-
- gtk_signal_connect (GTK_OBJECT (calendar->calitem),
- "selection_changed",
- GTK_SIGNAL_FUNC (on_date_popup_date_selected), dedit);
-
- gtk_box_pack_start (GTK_BOX (vbox), priv->calendar, FALSE, FALSE, 0);
- gtk_widget_show (priv->calendar);
-
- bbox = gtk_hbutton_box_new ();
- gtk_container_set_border_width (GTK_CONTAINER (bbox), 4);
- gtk_button_box_set_spacing (GTK_BUTTON_BOX (bbox), 2);
- gtk_button_box_set_child_ipadding (GTK_BUTTON_BOX (bbox), 2, 0);
- gtk_button_box_set_child_size (GTK_BUTTON_BOX (bbox), 0, 0);
- gtk_box_pack_start (GTK_BOX (vbox), bbox, FALSE, FALSE, 0);
- gtk_widget_show (bbox);
-
- priv->now_button = gtk_button_new_with_label (_("Now"));
- gtk_container_add (GTK_CONTAINER (bbox), priv->now_button);
- gtk_widget_show (priv->now_button);
- gtk_signal_connect (GTK_OBJECT (priv->now_button), "clicked",
- GTK_SIGNAL_FUNC (on_date_popup_now_button_clicked), dedit);
-
- priv->today_button = gtk_button_new_with_label (_("Today"));
- gtk_container_add (GTK_CONTAINER (bbox), priv->today_button);
- gtk_widget_show (priv->today_button);
- gtk_signal_connect (GTK_OBJECT (priv->today_button), "clicked",
- GTK_SIGNAL_FUNC (on_date_popup_today_button_clicked), dedit);
-
- /* Note that we don't show this here, since by default a 'None' date
- is not permitted. */
- priv->none_button = gtk_button_new_with_label (_("None"));
- gtk_container_add (GTK_CONTAINER (bbox), priv->none_button);
- gtk_signal_connect (GTK_OBJECT (priv->none_button), "clicked",
- GTK_SIGNAL_FUNC (on_date_popup_none_button_clicked), dedit);
-}
-
-
-static void
-e_date_edit_destroy (GtkObject *object)
-{
- EDateEdit *dedit;
-
- g_return_if_fail (E_IS_DATE_EDIT (object));
-
- dedit = E_DATE_EDIT (object);
-
- gtk_widget_destroy (dedit->priv->cal_popup);
- dedit->priv->cal_popup = NULL;
-
- g_free (dedit->priv);
- dedit->priv = NULL;
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-
-static void
-e_date_edit_forall (GtkContainer *container,
- gboolean include_internals,
- GtkCallback callback,
- gpointer callback_data)
-{
- g_return_if_fail (E_IS_DATE_EDIT (container));
- g_return_if_fail (callback != NULL);
-
- /* Let GtkBox handle the internal widgets if needed. */
- if (include_internals) {
- if (GTK_CONTAINER_CLASS (parent_class)->forall)
- (* GTK_CONTAINER_CLASS (parent_class)->forall)
- (container, include_internals,
- callback, callback_data);
- }
-}
-
-
-/**
- * e_date_edit_get_time:
- * @dedit: an #EDateEdit widget.
- * @the_time: returns the last valid time entered.
- * @Returns: the last valid time entered, or -1 if the time is not set.
- *
- * Returns the last valid time entered. If empty times are valid, by calling
- * e_date_edit_set_allow_no_date_set(), then it may return -1.
- *
- * Note that the last time entered may actually have been invalid. You can
- * check this with e_date_edit_time_is_valid().
- */
-time_t
-e_date_edit_get_time (EDateEdit *dedit)
-{
- EDateEditPrivate *priv;
- struct tm tmp_tm = { 0 };
-
- g_return_val_if_fail (E_IS_DATE_EDIT (dedit), -1);
-
- priv = dedit->priv;
-
- /* Try to parse any new value now. */
- e_date_edit_check_date_changed (dedit);
- e_date_edit_check_time_changed (dedit);
-
- if (priv->date_set_to_none)
- return -1;
-
- tmp_tm.tm_year = priv->year;
- tmp_tm.tm_mon = priv->month;
- tmp_tm.tm_mday = priv->day;
-
- if (!priv->show_time || priv->time_set_to_none) {
- tmp_tm.tm_hour = 0;
- tmp_tm.tm_min = 0;
- } else {
- tmp_tm.tm_hour = priv->hour;
- tmp_tm.tm_min = priv->minute;
- }
- tmp_tm.tm_sec = 0;
- tmp_tm.tm_isdst = -1;
-
- return mktime (&tmp_tm);
-}
-
-
-/**
- * e_date_edit_set_time:
- * @dedit: the EDateEdit widget
- * @the_time: The time and date that should be set on the widget
- *
- * Description: Changes the displayed date and time in the EDateEdit
- * widget to be the one represented by @the_time. If @the_time is 0
- * then current time is used. If it is -1, then the date is set to None.
- */
-void
-e_date_edit_set_time (EDateEdit *dedit,
- time_t the_time)
-{
- EDateEditPrivate *priv;
- struct tm *tmp_tm;
- gboolean date_changed = FALSE, time_changed = FALSE;
-
- g_return_if_fail (E_IS_DATE_EDIT (dedit));
-
- priv = dedit->priv;
-
- if (the_time == -1) {
- date_changed = e_date_edit_set_date_internal (dedit, TRUE,
- TRUE, 0, 0, 0);
- time_changed = e_date_edit_set_time_internal (dedit, TRUE,
- TRUE, 0, 0);
- } else {
- if (the_time == 0)
- the_time = time (NULL);
-
- tmp_tm = localtime (&the_time);
-
- date_changed = e_date_edit_set_date_internal (dedit, TRUE,
- FALSE,
- tmp_tm->tm_year,
- tmp_tm->tm_mon,
- tmp_tm->tm_mday);
- time_changed = e_date_edit_set_time_internal (dedit, TRUE,
- FALSE,
- tmp_tm->tm_hour,
- tmp_tm->tm_min);
- }
-
- e_date_edit_update_date_entry (dedit);
- e_date_edit_update_time_entry (dedit);
- e_date_edit_update_time_combo_state (dedit);
-
- /* Emit the signals if the date and/or time has actually changed. */
- if (date_changed || time_changed)
- gtk_signal_emit (GTK_OBJECT (dedit),
- date_edit_signals [CHANGED]);
-}
-
-
-/**
- * e_date_edit_get_date:
- * @dedit: an #EDateEdit widget.
- * @year: returns the year set.
- * @month: returns the month set (1 - 12).
- * @day: returns the day set (1 - 31).
- * @Returns: TRUE if a time was set, or FALSE if the field is empty or 'None'.
- *
- * Returns the last valid date entered into the date field.
- */
-gboolean
-e_date_edit_get_date (EDateEdit *dedit,
- gint *year,
- gint *month,
- gint *day)
-{
- EDateEditPrivate *priv;
-
- g_return_val_if_fail (E_IS_DATE_EDIT (dedit), FALSE);
-
- priv = dedit->priv;
-
- /* Try to parse any new value now. */
- e_date_edit_check_date_changed (dedit);
-
- if (priv->date_set_to_none)
- return FALSE;
-
- *year = priv->year + 1900;
- *month = priv->month + 1;
- *day = priv->day;
-
- return TRUE;
-}
-
-
-/**
- * e_date_edit_set_date:
- * @dedit: an #EDateEdit widget.
- * @year: the year to set.
- * @month: the month to set (1 - 12).
- * @day: the day to set (1 - 31).
- *
- * Sets the date in the date field.
- */
-void
-e_date_edit_set_date (EDateEdit *dedit,
- gint year,
- gint month,
- gint day)
-{
- EDateEditPrivate *priv;
- gboolean date_changed = FALSE;
-
- g_return_if_fail (E_IS_DATE_EDIT (dedit));
-
- priv = dedit->priv;
-
- date_changed = e_date_edit_set_date_internal (dedit, TRUE, FALSE,
- year - 1900, month - 1,
- day);
-
- e_date_edit_update_date_entry (dedit);
- e_date_edit_update_time_combo_state (dedit);
-
- /* Emit the signals if the date has actually changed. */
- if (date_changed)
- gtk_signal_emit (GTK_OBJECT (dedit),
- date_edit_signals [CHANGED]);
-}
-
-
-/**
- * e_date_edit_get_time_of_day:
- * @dedit: an #EDateEdit widget.
- * @hour: returns the hour set.
- * @minute: returns the minute set.
- * @Returns: TRUE if a time was set, or FALSE if the field is empty or 'None'.
- *
- * Returns the last valid time entered into the time field.
- */
-gboolean
-e_date_edit_get_time_of_day (EDateEdit *dedit,
- gint *hour,
- gint *minute)
-{
- EDateEditPrivate *priv;
-
- g_return_val_if_fail (E_IS_DATE_EDIT (dedit), FALSE);
-
- priv = dedit->priv;
-
- /* Try to parse any new value now. */
- e_date_edit_check_time_changed (dedit);
-
- if (priv->time_set_to_none)
- return FALSE;
-
- *hour = priv->hour;
- *minute = priv->minute;
-
- return TRUE;
-}
-
-
-/**
- * e_date_edit_set_time_of_day:
- * @dedit: an #EDateEdit widget.
- * @hour: the hour to set.
- * @minute: the minute to set.
- *
- * Description: Sets the time in the time field.
- */
-void
-e_date_edit_set_time_of_day (EDateEdit *dedit,
- gint hour,
- gint minute)
-{
- EDateEditPrivate *priv;
- gboolean time_changed = FALSE;
-
- g_return_if_fail (E_IS_DATE_EDIT (dedit));
-
- priv = dedit->priv;
-
- if (priv->time_set_to_none
- || priv->hour != hour
- || priv->minute != minute) {
- priv->time_set_to_none = FALSE;
- priv->hour = hour;
- priv->minute = minute;
- time_changed = TRUE;
- }
-
- e_date_edit_update_time_entry (dedit);
-
- if (time_changed)
- gtk_signal_emit (GTK_OBJECT (dedit),
- date_edit_signals [CHANGED]);
-}
-
-
-/**
- * e_date_edit_get_show_date:
- * @dedit: an #EDateEdit widget.
- * @Returns: Whether the date field is shown.
- *
- * Description: Returns TRUE if the date field is currently shown.
- */
-gboolean
-e_date_edit_get_show_date (EDateEdit *dedit)
-{
- g_return_val_if_fail (E_IS_DATE_EDIT (dedit), TRUE);
-
- return dedit->priv->show_date;
-}
-
-
-/**
- * e_date_edit_set_show_date:
- * @dedit: an #EDateEdit widget.
- * @show_time: TRUE if the date field should be shown.
- *
- * Description: Specifies whether the date field should be shown. The date
- * field would be hidden if only a time needed to be entered.
- */
-void
-e_date_edit_set_show_date (EDateEdit *dedit,
- gboolean show_date)
-{
- EDateEditPrivate *priv;
-
- g_return_if_fail (E_IS_DATE_EDIT (dedit));
-
- priv = dedit->priv;
-
- if (priv->show_date == show_date)
- return;
-
- priv->show_date = show_date;
-
- if (show_date) {
- gtk_widget_show (priv->date_entry);
- gtk_widget_show (priv->date_button);
- } else {
- gtk_widget_hide (priv->date_entry);
- gtk_widget_hide (priv->date_button);
- }
-
- e_date_edit_update_time_combo_state (dedit);
-
- if (priv->show_date && priv->show_time)
- gtk_widget_show (priv->space);
- else
- gtk_widget_hide (priv->space);
-}
-
-
-/**
- * e_date_edit_get_show_time:
- * @dedit: an #EDateEdit widget
- * @Returns: Whether the time field is shown.
- *
- * Description: Returns TRUE if the time field is currently shown.
- */
-gboolean
-e_date_edit_get_show_time (EDateEdit *dedit)
-{
- g_return_val_if_fail (E_IS_DATE_EDIT (dedit), TRUE);
-
- return dedit->priv->show_time;
-}
-
-
-/**
- * e_date_edit_set_show_time:
- * @dedit: an #EDateEdit widget
- * @show_time: TRUE if the time field should be shown.
- *
- * Description: Specifies whether the time field should be shown. The time
- * field would be hidden if only a date needed to be entered.
- */
-void
-e_date_edit_set_show_time (EDateEdit *dedit,
- gboolean show_time)
-{
- EDateEditPrivate *priv;
-
- g_return_if_fail (E_IS_DATE_EDIT (dedit));
-
- priv = dedit->priv;
-
- if (priv->show_time == show_time)
- return;
-
- priv->show_time = show_time;
-
- if (show_time) {
- gtk_widget_show (priv->time_combo);
- } else {
- gtk_widget_hide (priv->time_combo);
- gtk_widget_hide (priv->now_button);
- }
-
- if (priv->show_date && priv->show_time)
- gtk_widget_show (priv->space);
- else
- gtk_widget_hide (priv->space);
-}
-
-
-/**
- * e_date_edit_get_week_start_day:
- * @dedit: an #EDateEdit widget
- * @Returns: the week start day, from 0 (Sunday) to 6 (Saturday).
- *
- * Description: Returns the week start day currently used in the calendar
- * popup.
- */
-gint
-e_date_edit_get_week_start_day (EDateEdit *dedit)
-{
- gint week_start_day;
-
- g_return_val_if_fail (E_IS_DATE_EDIT (dedit), 1);
-
- gtk_object_get (GTK_OBJECT (E_CALENDAR (dedit->priv->calendar)->calitem),
- "week_start_day", &week_start_day,
- NULL);
-
- return week_start_day;
-}
-
-
-/**
- * e_date_edit_set_week_start_day:
- * @dedit: an #EDateEdit widget
- * @week_start_day: the week start day, from 0 (Sunday) to 6 (Saturday).
- *
- * Description: Sets the week start day to use in the calendar popup.
- */
-void
-e_date_edit_set_week_start_day (EDateEdit *dedit,
- gint week_start_day)
-{
- g_return_if_fail (E_IS_DATE_EDIT (dedit));
-
- gnome_canvas_item_set (GNOME_CANVAS_ITEM (E_CALENDAR (dedit->priv->calendar)->calitem),
- "week_start_day", week_start_day,
- NULL);
-}
-
-
-/* Whether we show week numbers in the date popup. */
-gboolean
-e_date_edit_get_show_week_numbers (EDateEdit *dedit)
-{
- gboolean show_week_numbers;
-
- g_return_val_if_fail (E_IS_DATE_EDIT (dedit), FALSE);
-
- gtk_object_get (GTK_OBJECT (E_CALENDAR (dedit->priv->calendar)->calitem),
- "show_week_numbers", &show_week_numbers,
- NULL);
-
- return show_week_numbers;
-}
-
-
-void
-e_date_edit_set_show_week_numbers (EDateEdit *dedit,
- gboolean show_week_numbers)
-{
- g_return_if_fail (E_IS_DATE_EDIT (dedit));
-
- gnome_canvas_item_set (GNOME_CANVAS_ITEM (E_CALENDAR (dedit->priv->calendar)->calitem),
- "show_week_numbers", show_week_numbers,
- NULL);
-}
-
-
-/* Whether we use 24 hour format in the time field & popup. */
-gboolean
-e_date_edit_get_use_24_hour_format (EDateEdit *dedit)
-{
- g_return_val_if_fail (E_IS_DATE_EDIT (dedit), TRUE);
-
- return dedit->priv->use_24_hour_format;
-}
-
-
-void
-e_date_edit_set_use_24_hour_format (EDateEdit *dedit,
- gboolean use_24_hour_format)
-{
- g_return_if_fail (E_IS_DATE_EDIT (dedit));
-
- if (dedit->priv->use_24_hour_format == use_24_hour_format)
- return;
-
- dedit->priv->use_24_hour_format = use_24_hour_format;
-
- rebuild_time_popup (dedit);
-
- e_date_edit_update_time_entry (dedit);
-}
-
-
-/* Whether we allow the date to be set to 'None'. e_date_edit_get_time() will
- return (time_t) -1 in this case. */
-gboolean
-e_date_edit_get_allow_no_date_set (EDateEdit *dedit)
-{
- g_return_val_if_fail (E_IS_DATE_EDIT (dedit), FALSE);
-
- return GTK_WIDGET_VISIBLE (dedit->priv->none_button);
-}
-
-
-void
-e_date_edit_set_allow_no_date_set (EDateEdit *dedit,
- gboolean allow_no_date_set)
-{
- g_return_if_fail (E_IS_DATE_EDIT (dedit));
-
- if (allow_no_date_set) {
- gtk_widget_show (dedit->priv->none_button);
- } else {
- gtk_widget_hide (dedit->priv->none_button);
-
- /* If the date is showing, we make sure it isn't 'None' (we
- don't really mind if the time is empty), else if just the
- time is showing we make sure it isn't 'None'. */
- if (dedit->priv->show_date) {
- if (dedit->priv->date_set_to_none)
- e_date_edit_set_time (dedit, time (NULL));
- } else {
- if (dedit->priv->time_set_to_none)
- e_date_edit_set_time (dedit, time (NULL));
- }
- }
-}
-
-
-/* The range of time to show in the time combo popup. */
-void
-e_date_edit_get_time_popup_range (EDateEdit *dedit,
- gint *lower_hour,
- gint *upper_hour)
-{
- g_return_if_fail (E_IS_DATE_EDIT (dedit));
-
- *lower_hour = dedit->priv->lower_hour;
- *upper_hour = dedit->priv->upper_hour;
-}
-
-
-void
-e_date_edit_set_time_popup_range (EDateEdit *dedit,
- gint lower_hour,
- gint upper_hour)
-{
- EDateEditPrivate *priv;
-
- g_return_if_fail (E_IS_DATE_EDIT (dedit));
-
- priv = dedit->priv;
-
- if (priv->lower_hour == lower_hour
- && priv->upper_hour == upper_hour)
- return;
-
- priv->lower_hour = lower_hour;
- priv->upper_hour = upper_hour;
-
- rebuild_time_popup (dedit);
-
- /* Setting the combo list items seems to mess up the time entry, so
- we set it again. We have to reset it to its last valid time. */
- priv->time_is_valid = TRUE;
- e_date_edit_update_time_entry (dedit);
-}
-
-
-/* The arrow button beside the date field has been clicked, so we show the
- popup with the ECalendar in. */
-static void
-on_date_button_clicked (GtkWidget *widget,
- EDateEdit *dedit)
-{
- e_date_edit_show_date_popup (dedit);
-}
-
-
-static void
-e_date_edit_show_date_popup (EDateEdit *dedit)
-{
- EDateEditPrivate *priv;
- ECalendar *calendar;
- struct tm mtm;
- gchar *date_text;
- GDate selected_day;
- gboolean clear_selection = FALSE;
-
- priv = dedit->priv;
- calendar = E_CALENDAR (priv->calendar);
-
- date_text = gtk_entry_get_text (GTK_ENTRY (priv->date_entry));
- if (field_set_to_none (date_text)
- || !e_date_edit_parse_date (dedit, date_text, &mtm))
- clear_selection = TRUE;
-
- if (clear_selection) {
- e_calendar_item_set_selection (calendar->calitem, NULL, NULL);
- } else {
- g_date_clear (&selected_day, 1);
- g_date_set_dmy (&selected_day, mtm.tm_mday, mtm.tm_mon + 1,
- mtm.tm_year + 1900);
- e_calendar_item_set_selection (calendar->calitem,
- &selected_day, NULL);
- }
-
- /* FIXME: Hack. Change ECalendarItem so it doesn't queue signal
- emissions. */
- calendar->calitem->selection_changed = FALSE;
-
- position_date_popup (dedit);
- gtk_widget_show (priv->cal_popup);
- gtk_widget_grab_focus (priv->cal_popup);
- gtk_grab_add (priv->cal_popup);
- gdk_pointer_grab (priv->cal_popup->window, TRUE,
- (GDK_BUTTON_PRESS_MASK
- | GDK_BUTTON_RELEASE_MASK
- | GDK_POINTER_MOTION_MASK),
- NULL, NULL, GDK_CURRENT_TIME);
-}
-
-
-/* This positions the date popup below and to the left of the arrow button,
- just before it is shown. */
-static void
-position_date_popup (EDateEdit *dedit)
-{
- gint x, y;
- gint bwidth, bheight;
- GtkRequisition req;
- gint screen_width, screen_height;
-
- gtk_widget_size_request (dedit->priv->cal_popup, &req);
-
- gdk_window_get_origin (dedit->priv->date_button->window, &x, &y);
- gdk_window_get_size (dedit->priv->date_button->window,
- &bwidth, &bheight);
-
- screen_width = gdk_screen_width ();
- screen_height = gdk_screen_height ();
-
- x += bwidth - req.width;
- y += bheight;
-
- x = CLAMP (x, 0, MAX (0, screen_width - req.width));
- y = CLAMP (y, 0, MAX (0, screen_height - req.height));
-
- gtk_widget_set_uposition (dedit->priv->cal_popup, x, y);
-}
-
-
-/* A date has been selected in the date popup, so we set the date field
- and hide the popup. */
-static void
-on_date_popup_date_selected (ECalendarItem *calitem,
- EDateEdit *dedit)
-{
- EDateEditPrivate *priv;
- GDate start_date, end_date;
-
- priv = dedit->priv;
-
- hide_date_popup (dedit);
-
- if (!e_calendar_item_get_selection (calitem, &start_date, &end_date))
- return;
-
- e_date_edit_set_date (dedit, g_date_year (&start_date),
- g_date_month (&start_date),
- g_date_day (&start_date));
-}
-
-
-static void
-on_date_popup_now_button_clicked (GtkWidget *button,
- EDateEdit *dedit)
-{
- hide_date_popup (dedit);
- e_date_edit_set_time (dedit, time (NULL));
-}
-
-
-static void
-on_date_popup_today_button_clicked (GtkWidget *button,
- EDateEdit *dedit)
-{
- struct tm *tmp_tm;
- time_t t;
-
- hide_date_popup (dedit);
-
- t = time (NULL);
- tmp_tm = localtime (&t);
-
- e_date_edit_set_date (dedit, tmp_tm->tm_year + 1900,
- tmp_tm->tm_mon + 1, tmp_tm->tm_mday);
-}
-
-
-static void
-on_date_popup_none_button_clicked (GtkWidget *button,
- EDateEdit *dedit)
-{
- hide_date_popup (dedit);
- e_date_edit_set_time (dedit, -1);
-}
-
-
-/* A key has been pressed while the date popup is showing. If it is the Escape
- key we hide the popup. */
-static gint
-on_date_popup_key_press (GtkWidget *widget,
- GdkEventKey *event,
- EDateEdit *dedit)
-{
- if (event->keyval != GDK_Escape)
- return FALSE;
-
- gtk_signal_emit_stop_by_name (GTK_OBJECT (widget), "key_press_event");
- hide_date_popup (dedit);
-
- return TRUE;
-}
-
-
-/* A mouse button has been pressed while the date popup is showing.
- Any button press events used to select days etc. in the popup will have
- have been handled elsewhere, so here we just hide the popup.
- (This function is yanked from gtkcombo.c) */
-static gint
-on_date_popup_button_press (GtkWidget *widget,
- GdkEventButton *event,
- gpointer data)
-{
- EDateEdit *dedit;
- GtkWidget *child;
-
- dedit = data;
-
- child = gtk_get_event_widget ((GdkEvent *) event);
-
- /* We don't ask for button press events on the grab widget, so
- * if an event is reported directly to the grab widget, it must
- * be on a window outside the application (and thus we remove
- * the popup window). Otherwise, we check if the widget is a child
- * of the grab widget, and only remove the popup window if it
- * is not.
- */
- if (child != widget) {
- while (child) {
- if (child == widget)
- return FALSE;
- child = child->parent;
- }
- }
-
- hide_date_popup (dedit);
-
- return TRUE;
-}
-
-
-/* A delete event has been received for the date popup, so we hide it and
- return TRUE so it doesn't get destroyed. */
-static gint
-on_date_popup_delete_event (GtkWidget *widget,
- EDateEdit *dedit)
-{
- hide_date_popup (dedit);
- return TRUE;
-}
-
-
-/* Hides the date popup, removing any grabs. */
-static void
-hide_date_popup (EDateEdit *dedit)
-{
- gtk_widget_hide (dedit->priv->cal_popup);
- gtk_grab_remove (dedit->priv->cal_popup);
- gdk_pointer_ungrab (GDK_CURRENT_TIME);
-}
-
-
-/* Clears the time popup and rebuilds it using the lower_hour, upper_hour
- and use_24_hour_format settings. */
-static void
-rebuild_time_popup (EDateEdit *dedit)
-{
- EDateEditPrivate *priv;
- GtkList *list;
- GtkWidget *listitem;
- char buffer[40], *format;
- struct tm tmp_tm;
- gint hour, min;
-
- priv = dedit->priv;
-
- list = GTK_LIST (GTK_COMBO (priv->time_combo)->list);
-
- gtk_list_clear_items (list, 0, -1);
-
- /* Fill the struct tm with some sane values. */
- tmp_tm.tm_year = 2000;
- tmp_tm.tm_mon = 0;
- tmp_tm.tm_mday = 1;
- tmp_tm.tm_sec = 0;
- tmp_tm.tm_isdst = 0;
-
- for (hour = priv->lower_hour; hour <= priv->upper_hour; hour++) {
-
- /* We don't want to display midnight at the end, since that is
- really in the next day. */
- if (hour == 24)
- break;
-
- /* We want to finish on upper_hour, with min == 0. */
- for (min = 0;
- min == 0 || (min < 60 && hour != priv->upper_hour);
- min += 30) {
- tmp_tm.tm_hour = hour;
- tmp_tm.tm_min = min;
-
- if (priv->use_24_hour_format)
- /* This is a strftime() format. %H = hour (0-23), %M = minute. */
- format = _("%H:%M");
- else
- /* This is a strftime() format. %I = hour (1-12), %M = minute, %p = am/pm string. */
- format = _("%I:%M %p");
-
- strftime (buffer, sizeof (buffer), format, &tmp_tm);
-
- listitem = gtk_list_item_new_with_label (buffer);
- gtk_widget_show (listitem);
- gtk_container_add (GTK_CONTAINER (list), listitem);
- }
- }
-}
-
-
-static gboolean
-e_date_edit_parse_date (EDateEdit *dedit,
- gchar *date_text,
- struct tm *date_tm)
-{
- struct tm *tmp_tm;
- time_t t;
-
- /* This is a strptime() format for a short date. %m = month,
- %d = day of month, %Y = year (all digits). */
- if (!strptime (date_text, _("%m/%d/%Y"), date_tm))
- return FALSE;
-
- /* If the user entered a 2-digit year we use the current century. */
- if (date_tm->tm_year < 0) {
- t = time (NULL);
- tmp_tm = localtime (&t);
-
- /* This should convert it into a value from 0 to 99. */
- date_tm->tm_year += 1900;
-
- /* Now add on the century. */
- date_tm->tm_year += tmp_tm->tm_year - (tmp_tm->tm_year % 100);
- }
-
- return TRUE;
-}
-
-
-static gboolean
-e_date_edit_parse_time (EDateEdit *dedit,
- gchar *time_text,
- struct tm *time_tm)
-{
- gchar *format;
-
- if (field_set_to_none (time_text)) {
- time_tm->tm_hour = 0;
- time_tm->tm_min = 0;
- return TRUE;
- }
-
- if (dedit->priv->use_24_hour_format)
- /* This is a strptime() format. %H = hour (0-23), %M = minute. */
- format = _("%H:%M");
- else
- /* This is a strptime() format. %I = hour (1-12), %M = minute, %p = am/pm string. */
- format = _("%I:%M %p");
-
- if (!strptime (time_text, format, time_tm))
- return FALSE;
-
- return TRUE;
-}
-
-
-/* Returns TRUE if the string is empty or is "None" in the current locale.
- It ignores whitespace. */
-static gboolean
-field_set_to_none (char *text)
-{
- char *pos, *none_string;
-
- pos = text;
- while (isspace (*pos))
- pos++;
-
- none_string = _("None");
-
- if (*pos == '\0' || !strncmp (pos, none_string, strlen (none_string)))
- return TRUE;
- return FALSE;
-}
-
-
-static void
-on_date_edit_time_selected (GtkList *list,
- EDateEdit *dedit)
-{
- GtkWidget *toplevel;
-
- /* We only want to emit signals when an item is selected explicitly,
- not when it is selected by the silly combo update thing. */
- if (!list->selection)
- return;
-
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (list));
- if (!GTK_WIDGET_MAPPED (toplevel))
- return;
-
- e_date_edit_check_time_changed (dedit);
-}
-
-
-static gint
-on_date_entry_key_press (GtkWidget *widget,
- GdkEventKey *event,
- EDateEdit *dedit)
-{
- if (event->state & GDK_MOD1_MASK
- && (event->keyval == GDK_Up || event->keyval == GDK_Down
- || event->keyval == GDK_Return)) {
- gtk_signal_emit_stop_by_name (GTK_OBJECT (widget),
- "key_press_event");
- e_date_edit_show_date_popup (dedit);
- return TRUE;
- }
-
- /* If the user hits the return key emit a "date_changed" signal if
- needed. But let the signal carry on. */
- if (event->keyval == GDK_Return) {
- e_date_edit_check_date_changed (dedit);
- return FALSE;
- }
-
- return FALSE;
-}
-
-
-static gint
-on_time_entry_key_press (GtkWidget *widget,
- GdkEventKey *event,
- EDateEdit *dedit)
-{
- /* I'd like to use Alt+Up/Down for popping up the list, like Win32,
- but the combo steals any Up/Down keys, so we use Alt+Return. */
-#if 0
- if (event->state & GDK_MOD1_MASK
- && (event->keyval == GDK_Up || event->keyval == GDK_Down)) {
-#else
- if (event->state & GDK_MOD1_MASK && event->keyval == GDK_Return) {
-#endif
- gtk_signal_emit_stop_by_name (GTK_OBJECT (widget),
- "key_press_event");
- gtk_signal_emit_by_name (GTK_OBJECT (GTK_COMBO (dedit->priv->time_combo)->entry), "activate");
- return TRUE;
- }
-
- /* Stop the return key from emitting the activate signal, and check
- if we need to emit a "time_changed" signal. */
- if (event->keyval == GDK_Return) {
- gtk_signal_emit_stop_by_name (GTK_OBJECT (widget),
- "key_press_event");
- e_date_edit_check_time_changed (dedit);
- return TRUE;
- }
-
- return FALSE;
-}
-
-
-static gint
-on_date_entry_focus_out (GtkEntry *entry,
- GdkEventFocus *event,
- EDateEdit *dedit)
-{
- e_date_edit_check_date_changed (dedit);
- return FALSE;
-}
-
-
-static gint
-on_time_entry_focus_out (GtkEntry *entry,
- GdkEventFocus *event,
- EDateEdit *dedit)
-{
- e_date_edit_check_time_changed (dedit);
- return FALSE;
-}
-
-
-/* This sets the text in the date entry according to the current settings. */
-static void
-e_date_edit_update_date_entry (EDateEdit *dedit)
-{
- EDateEditPrivate *priv;
- char buffer[40];
- struct tm tmp_tm = { 0 };
-
- priv = dedit->priv;
-
- if (priv->date_set_to_none || !priv->date_is_valid) {
- gtk_entry_set_text (GTK_ENTRY (priv->date_entry), _("None"));
- } else {
- tmp_tm.tm_year = priv->year;
- tmp_tm.tm_mon = priv->month;
- tmp_tm.tm_mday = priv->day;
- tmp_tm.tm_isdst = -1;
-
- /* This is a strftime() format for a short date. %m = month,
- %d = day of month, %Y = year (all digits). */
- strftime (buffer, sizeof (buffer), _("%m/%d/%Y"), &tmp_tm);
- gtk_entry_set_text (GTK_ENTRY (priv->date_entry), buffer);
- }
-}
-
-
-/* This sets the text in the time entry according to the current settings. */
-static void
-e_date_edit_update_time_entry (EDateEdit *dedit)
-{
- EDateEditPrivate *priv;
- char buffer[40], *format;
- struct tm tmp_tm = { 0 };
-
- priv = dedit->priv;
-
- if (priv->time_set_to_none || !priv->time_is_valid) {
- gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (priv->time_combo)->entry), "");
- } else {
- /* Set these to reasonable values just in case. */
- tmp_tm.tm_year = 2000;
- tmp_tm.tm_mon = 0;
- tmp_tm.tm_mday = 1;
-
- tmp_tm.tm_hour = priv->hour;
- tmp_tm.tm_min = priv->minute;
-
- tmp_tm.tm_sec = 0;
- tmp_tm.tm_isdst = -1;
-
- if (priv->use_24_hour_format)
- /* This is a strftime() format. %H = hour (0-23), %M = minute. */
- format = _("%H:%M");
- else
- /* This is a strftime() format. %I = hour (1-12), %M = minute, %p = am/pm string. */
- format = _("%I:%M %p");
-
- strftime (buffer, sizeof (buffer), format, &tmp_tm);
- gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (priv->time_combo)->entry),
- buffer);
- }
-}
-
-
-static void
-e_date_edit_update_time_combo_state (EDateEdit *dedit)
-{
- EDateEditPrivate *priv;
- gchar *text;
-
- priv = dedit->priv;
-
- /* If the date entry is currently shown, and it is set to None,
- clear the time entry and disable the time combo, else enable it. */
- if (priv->show_date && priv->date_set_to_none) {
- text = gtk_entry_get_text (GTK_ENTRY (GTK_COMBO (priv->time_combo)->entry));
- if (text[0])
- gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (priv->time_combo)->entry), "");
- gtk_widget_set_sensitive (priv->time_combo, FALSE);
- } else {
- gtk_widget_set_sensitive (priv->time_combo, TRUE);
- }
-}
-
-
-/* Parses the date, and if it is different from the current settings it
- updates the settings and emits a "date_changed" signal. */
-static void
-e_date_edit_check_date_changed (EDateEdit *dedit)
-{
- EDateEditPrivate *priv;
- gchar *date_text;
- struct tm tmp_tm;
- gboolean none = FALSE, valid = TRUE, date_changed;
-
- priv = dedit->priv;
-
- date_text = gtk_entry_get_text (GTK_ENTRY (priv->date_entry));
- if (field_set_to_none (date_text))
- none = TRUE;
- else if (!e_date_edit_parse_date (dedit, date_text, &tmp_tm))
- valid = FALSE;
-
- date_changed = e_date_edit_set_date_internal (dedit, valid, none,
- tmp_tm.tm_year,
- tmp_tm.tm_mon,
- tmp_tm.tm_mday);
-
- if (date_changed)
- gtk_signal_emit (GTK_OBJECT (dedit),
- date_edit_signals [CHANGED]);
-}
-
-
-/* Parses the time, and if it is different from the current settings it
- updates the settings and emits a "time_changed" signal. */
-static void
-e_date_edit_check_time_changed (EDateEdit *dedit)
-{
- EDateEditPrivate *priv;
- gchar *time_text;
- struct tm tmp_tm;
- gboolean none = FALSE, valid = TRUE, time_changed;
-
- priv = dedit->priv;
-
- time_text = gtk_entry_get_text (GTK_ENTRY (GTK_COMBO (priv->time_combo)->entry));
- if (field_set_to_none (time_text))
- none = TRUE;
- else if (!e_date_edit_parse_time (dedit, time_text, &tmp_tm))
- valid = FALSE;
-
- time_changed = e_date_edit_set_time_internal (dedit, valid, none,
- tmp_tm.tm_hour,
- tmp_tm.tm_min);
-
- if (time_changed)
- gtk_signal_emit (GTK_OBJECT (dedit),
- date_edit_signals [CHANGED]);
-}
-
-
-/**
- * e_date_edit_date_is_valid:
- * @dedit: an #EDateEdit widget.
- * @Returns: TRUE if the last date entered was valid.
- *
- * Returns TRUE if the last date entered was valid.
- *
- * Note that if this returns FALSE, you can still use e_date_edit_get_time()
- * or e_date_edit_get_date() to get the last time or date entered which was
- * valid.
- */
-gboolean
-e_date_edit_date_is_valid (EDateEdit *dedit)
-{
- g_return_val_if_fail (E_IS_DATE_EDIT (dedit), FALSE);
-
- if (!dedit->priv->date_is_valid)
- return FALSE;
-
- /* If the date is empty/None and that isn't permitted, return FALSE. */
- if (dedit->priv->date_set_to_none
- && !e_date_edit_get_allow_no_date_set (dedit))
- return FALSE;
-
- return TRUE;
-}
-
-
-/**
- * e_date_edit_time_is_valid:
- * @dedit: an #EDateEdit widget.
- * @Returns: TRUE if the last time entered was valid.
- *
- * Returns TRUE if the last time entered was valid.
- *
- * Note that if this returns FALSE, you can still use e_date_edit_get_time()
- * or e_date_edit_get_time_of_day() to get the last time or time of the day
- * entered which was valid.
- */
-gboolean
-e_date_edit_time_is_valid (EDateEdit *dedit)
-{
- g_return_val_if_fail (E_IS_DATE_EDIT (dedit), FALSE);
-
- if (!dedit->priv->time_is_valid)
- return FALSE;
-
- /* If the time is empty and that isn't permitted, return FALSE.
- Note that we don't mind an empty time if the date field is shown
- - in that case we just assume 0:00. */
- if (dedit->priv->time_set_to_none && !dedit->priv->show_date
- && !e_date_edit_get_allow_no_date_set (dedit))
- return FALSE;
-
- return TRUE;
-}
-
-
-static gboolean
-e_date_edit_set_date_internal (EDateEdit *dedit,
- gboolean valid,
- gboolean none,
- gint year,
- gint month,
- gint day)
-{
- EDateEditPrivate *priv;
- gboolean date_changed = FALSE;
-
- priv = dedit->priv;
-
- if (!valid) {
- /* Date is invalid. */
- if (priv->date_is_valid) {
- priv->date_is_valid = FALSE;
- date_changed = TRUE;
- }
- } else if (none) {
- /* Date has been set to 'None'. */
- if (!priv->date_is_valid
- || !priv->date_set_to_none) {
- priv->date_is_valid = TRUE;
- priv->date_set_to_none = TRUE;
- date_changed = TRUE;
- }
- } else {
- /* Date has been set to a specific date. */
- if (!priv->date_is_valid
- || priv->date_set_to_none
- || priv->year != year
- || priv->month != month
- || priv->day != day) {
- priv->date_is_valid = TRUE;
- priv->date_set_to_none = FALSE;
- priv->year = year;
- priv->month = month;
- priv->day = day;
- date_changed = TRUE;
- }
- }
-
- return date_changed;
-}
-
-
-static gboolean
-e_date_edit_set_time_internal (EDateEdit *dedit,
- gboolean valid,
- gboolean none,
- gint hour,
- gint minute)
-{
- EDateEditPrivate *priv;
- gboolean time_changed = FALSE;
-
- priv = dedit->priv;
-
- if (!valid) {
- /* Time is invalid. */
- if (priv->time_is_valid) {
- priv->time_is_valid = FALSE;
- time_changed = TRUE;
- }
- } else if (none) {
- /* Time has been set to empty/'None'. */
- if (!priv->time_is_valid
- || !priv->time_set_to_none) {
- priv->time_is_valid = TRUE;
- priv->time_set_to_none = TRUE;
- time_changed = TRUE;
- }
- } else {
- /* Time has been set to a specific time. */
- if (!priv->time_is_valid
- || priv->time_set_to_none
- || priv->hour != hour
- || priv->minute != minute) {
- priv->time_is_valid = TRUE;
- priv->time_set_to_none = FALSE;
- priv->hour = hour;
- priv->minute = minute;
- time_changed = TRUE;
- }
- }
-
- return time_changed;
-}
diff --git a/widgets/misc/e-dateedit.h b/widgets/misc/e-dateedit.h
deleted file mode 100644
index a83690844f..0000000000
--- a/widgets/misc/e-dateedit.h
+++ /dev/null
@@ -1,155 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@helixcode.com>
- *
- * Copyright 2000, Helix Code, Inc.
- *
- * Based on the GnomeDateEdit, part of the Gnome Library.
- * Copyright (C) 1997, 1998, 1999, 2000 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * EDateEdit - a widget based on GnomeDateEdit to provide a date & optional
- * time field with popups for entering a date.
- *
- * It emits a "changed" signal when the date and/or time has changed.
- * You can check if the last date or time entered was invalid by
- * calling e_date_edit_date_is_valid() and e_date_edit_time_is_valid().
- *
- * Note that when the user types in a date or time, it will only emit the
- * signals when the user presses the return key or switches the keyboard
- * focus to another widget, or you call one of the _get_time/date functions.
- */
-
-#ifndef __E_DATE_EDIT_H_
-#define __E_DATE_EDIT_H_
-
-#include <time.h>
-#include <glib.h>
-#include <gtk/gtkhbox.h>
-#include <gtk/gtkwidget.h>
-#include <libgnome/gnome-defs.h>
-
-BEGIN_GNOME_DECLS
-
-
-#define E_TYPE_DATE_EDIT (e_date_edit_get_type ())
-#define E_DATE_EDIT(obj) (GTK_CHECK_CAST ((obj), E_TYPE_DATE_EDIT, EDateEdit))
-#define E_DATE_EDIT_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_TYPE_DATE_EDIT, EDateEditClass))
-#define E_IS_DATE_EDIT(obj) (GTK_CHECK_TYPE ((obj), E_TYPE_DATE_EDIT))
-#define E_IS_DATE_EDIT_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), E_TYPE_DATE_EDIT))
-
-
-typedef struct _EDateEdit EDateEdit;
-typedef struct _EDateEditPrivate EDateEditPrivate;
-typedef struct _EDateEditClass EDateEditClass;
-
-struct _EDateEdit {
- GtkHBox hbox;
-
- /*< private >*/
- EDateEditPrivate *priv;
-};
-
-struct _EDateEditClass {
- GtkHBoxClass parent_class;
-
- void (* changed) (EDateEdit *dedit);
-};
-
-guint e_date_edit_get_type (void);
-GtkWidget* e_date_edit_new (void);
-
-/* Returns TRUE if the last date and time set were valid. The date and time
- are only set when the user hits Return or switches keyboard focus, or
- selects a date or time from the popup. */
-gboolean e_date_edit_date_is_valid (EDateEdit *dedit);
-gboolean e_date_edit_time_is_valid (EDateEdit *dedit);
-
-/* Returns the last valid date & time set, or -1 if the date & time was set to
- 'None' and this is permitted via e_date_edit_set_allow_no_date_set. */
-time_t e_date_edit_get_time (EDateEdit *dedit);
-void e_date_edit_set_time (EDateEdit *dedit,
- time_t the_time);
-
-/* This returns the last valid date set, without the time. It returns TRUE
- if a date is set, or FALSE if the date is set to 'None' and this is
- permitted via e_date_edit_set_allow_no_date_set. */
-gboolean e_date_edit_get_date (EDateEdit *dedit,
- gint *year,
- gint *month,
- gint *day);
-void e_date_edit_set_date (EDateEdit *dedit,
- gint year,
- gint month,
- gint day);
-
-/* This returns the last valid time set, without the date. It returns TRUE
- if a time is set, or FALSE if the time is set to 'None' and this is
- permitted via e_date_edit_set_allow_no_date_set. */
-gboolean e_date_edit_get_time_of_day (EDateEdit *dedit,
- gint *hour,
- gint *minute);
-void e_date_edit_set_time_of_day (EDateEdit *dedit,
- gint hour,
- gint minute);
-
-/* Whether we show the date field. */
-gboolean e_date_edit_get_show_date (EDateEdit *dedit);
-void e_date_edit_set_show_date (EDateEdit *dedit,
- gboolean show_date);
-
-/* Whether we show the time field. */
-gboolean e_date_edit_get_show_time (EDateEdit *dedit);
-void e_date_edit_set_show_time (EDateEdit *dedit,
- gboolean show_time);
-
-/* The week start day, used in the date popup. 0 (Mon) to 6 (Sun). */
-gint e_date_edit_get_week_start_day (EDateEdit *dedit);
-void e_date_edit_set_week_start_day (EDateEdit *dedit,
- gint week_start_day);
-
-/* Whether we show week numbers in the date popup. */
-gboolean e_date_edit_get_show_week_numbers (EDateEdit *dedit);
-void e_date_edit_set_show_week_numbers (EDateEdit *dedit,
- gboolean show_week_numbers);
-
-/* Whether we use 24 hour format in the time field & popup. */
-gboolean e_date_edit_get_use_24_hour_format (EDateEdit *dedit);
-void e_date_edit_set_use_24_hour_format (EDateEdit *dedit,
- gboolean use_24_hour_format);
-
-/* Whether we allow the date to be set to 'None'. e_date_edit_get_time() will
- return (time_t) -1 in this case. */
-gboolean e_date_edit_get_allow_no_date_set (EDateEdit *dedit);
-void e_date_edit_set_allow_no_date_set (EDateEdit *dedit,
- gboolean allow_no_date_set);
-
-/* The range of time to show in the time combo popup. */
-void e_date_edit_get_time_popup_range (EDateEdit *dedit,
- gint *lower_hour,
- gint *upper_hour);
-void e_date_edit_set_time_popup_range (EDateEdit *dedit,
- gint lower_hour,
- gint upper_hour);
-
-END_GNOME_DECLS
-
-#endif
diff --git a/widgets/misc/e-dropdown-button.c b/widgets/misc/e-dropdown-button.c
deleted file mode 100644
index 334cab878f..0000000000
--- a/widgets/misc/e-dropdown-button.c
+++ /dev/null
@@ -1,252 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-dropdown-menu.c
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Authors:
- * Ettore Perazzoli <ettore@ximian.com>
- * Damon Chaplin <damon@ximian.com>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "e-dropdown-button.h"
-
-
-#include <stdio.h>
-#include <gtk/gtkarrow.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkwidget.h>
-#include <libgnomeui/gnome-popup-menu.h>
-#include <gal/util/e-util.h>
-
-
-struct _EDropdownButtonPrivate {
- GtkAccelGroup *accel_group;
- GtkWidget *menu;
-};
-
-#define PARENT_TYPE gtk_toggle_button_get_type ()
-static GtkToggleButtonClass *parent_class = NULL;
-
-
-/* Callback to position the pop-up menu. */
-
-static void
-menu_position_cb (GtkMenu *menu,
- int *x,
- int *y,
- void *data)
-{
- EDropdownButton *dropdown_button;
- EDropdownButtonPrivate *priv;
- GtkRequisition menu_requisition;
- int max_x, max_y;
-
- dropdown_button = E_DROPDOWN_BUTTON (data);
- priv = dropdown_button->priv;
-
- /* Calculate our preferred position. */
- gdk_window_get_origin (GTK_WIDGET (dropdown_button)->window, x, y);
- *y += GTK_WIDGET (dropdown_button)->allocation.height;
-
- /* Now make sure we are on the screen. */
- gtk_widget_size_request (GTK_WIDGET (priv->menu), &menu_requisition);
- max_x = MAX (0, gdk_screen_width () - menu_requisition.width);
- max_y = MAX (0, gdk_screen_height () - menu_requisition.height);
-
- *x = CLAMP (*x, 0, max_x);
- *y = CLAMP (*y, 0, max_y);
-}
-
-/* Callback for the "deactivate" signal on the pop-up menu. This is used so
- that we unset the state of the toggle button when the pop-up menu
- disappears. */
-
-static int
-menu_deactivate_cb (GtkMenuShell *menu_shell,
- void *data)
-{
- EDropdownButton *dropdown_button;
-
- puts (__FUNCTION__);
-
- dropdown_button = E_DROPDOWN_BUTTON (data);
-
- gtk_button_clicked (GTK_BUTTON (dropdown_button));
- return TRUE;
-}
-
-
-/* GtkObject methods. */
-
-static void
-impl_destroy (GtkObject *object)
-{
- EDropdownButton *dropdown_button;
- EDropdownButtonPrivate *priv;
-
- dropdown_button = E_DROPDOWN_BUTTON (object);
- priv = dropdown_button->priv;
-
- gtk_accel_group_unref (priv->accel_group);
- gtk_widget_destroy (priv->menu);
-
- g_free (priv);
-}
-
-
-/* GtkWidget methods. */
-
-static int
-impl_button_press_event (GtkWidget *widget,
- GdkEventButton *event)
-{
- EDropdownButton *dropdown_button;
- EDropdownButtonPrivate *priv;
- GtkStateType new_state;
-
- dropdown_button = E_DROPDOWN_BUTTON (widget);
- priv = dropdown_button->priv;
-
- gtk_menu_popup (GTK_MENU (priv->menu), NULL, NULL,
- menu_position_cb, dropdown_button,
- 1, GDK_CURRENT_TIME);
-
- gnome_popup_menu_do_popup (GTK_WIDGET (priv->menu), menu_position_cb, dropdown_button,
- event, NULL);
-
- if (! GTK_WIDGET_HAS_FOCUS (widget))
- gtk_widget_grab_focus (widget);
-
- gtk_button_clicked (GTK_BUTTON (widget));
-
- return TRUE;
-}
-
-
-static void
-class_init (EDropdownButtonClass *klass)
-{
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
-
- object_class = GTK_OBJECT_CLASS (klass);
- widget_class = GTK_WIDGET_CLASS (klass);
-
- object_class->destroy = impl_destroy;
-
- widget_class->button_press_event = impl_button_press_event;
-
- parent_class = gtk_type_class (PARENT_TYPE);
-}
-
-
-static void
-init (EDropdownButton *dropdown_button)
-{
- EDropdownButtonPrivate *priv;
-
- priv = g_new (EDropdownButtonPrivate, 1);
- priv->accel_group = gtk_accel_group_new ();
- priv->menu = NULL;
-
- dropdown_button->priv = priv;
-}
-
-
-/**
- * e_dropdown_button_construct:
- * @dropdown_button: A pointer to an %EDropdownButton object
- * @label_text: Text to display in the button
- * @menu: The menu to pop up when the button is pressed
- *
- * Construct the @dropdown_button with the specified @label_text and the
- * associated @menu.
- **/
-void
-e_dropdown_button_construct (EDropdownButton *dropdown_button,
- const char *label_text,
- GtkMenu *menu)
-{
- EDropdownButtonPrivate *priv;
- GtkWidget *hbox;
- GtkWidget *arrow;
- GtkWidget *label;
- unsigned int accel_key;
-
- g_return_if_fail (dropdown_button != NULL);
- g_return_if_fail (E_IS_DROPDOWN_BUTTON (dropdown_button));
- g_return_if_fail (label_text != NULL);
- g_return_if_fail (menu != NULL);
- g_return_if_fail (GTK_IS_MENU (menu));
-
- priv = dropdown_button->priv;
-
- hbox = gtk_hbox_new (FALSE, 2);
- gtk_container_add (GTK_CONTAINER (dropdown_button), hbox);
- gtk_widget_show (hbox);
-
- label = gtk_label_new ("");
- accel_key = gtk_label_parse_uline (GTK_LABEL (label), label_text);
- gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
- gtk_widget_show (label);
- gtk_widget_add_accelerator (GTK_WIDGET (dropdown_button), "clicked",
- priv->accel_group, accel_key, GDK_MOD1_MASK, 0);
-
- arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_OUT);
- gtk_box_pack_start (GTK_BOX (hbox), arrow, FALSE, FALSE, 2);
- gtk_widget_show (arrow);
-
- priv->menu = GTK_WIDGET (menu);
-
- gtk_signal_connect_while_alive (GTK_OBJECT (priv->menu), "deactivate",
- GTK_SIGNAL_FUNC (menu_deactivate_cb),
- dropdown_button, GTK_OBJECT (dropdown_button));
-}
-
-/**
- * e_dropdown_button_new:
- * @label_text: Text to display in the button
- * @menu: The menu to pop up when the button is pressed
- *
- * Create a new dropdown button. When the button is clicked, the specified
- * @menu will be popped up.
- *
- * Return value: A pointer to the newly created %EDropdownButton.
- **/
-GtkWidget *
-e_dropdown_button_new (const char *label_text,
- GtkMenu *menu)
-{
- GtkWidget *widget;
-
- g_return_val_if_fail (label_text != NULL, NULL);
- g_return_val_if_fail (menu != NULL, NULL);
- g_return_val_if_fail (GTK_IS_MENU (menu), NULL);
-
- widget = gtk_type_new (e_dropdown_button_get_type ());
-
- e_dropdown_button_construct (E_DROPDOWN_BUTTON (widget), label_text, menu);
- return widget;
-}
-
-
-E_MAKE_TYPE (e_dropdown_button, "EDropdownButton", EDropdownButton, class_init, init, PARENT_TYPE)
diff --git a/widgets/misc/e-dropdown-button.h b/widgets/misc/e-dropdown-button.h
deleted file mode 100644
index 6aa92d0bd8..0000000000
--- a/widgets/misc/e-dropdown-button.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-dropdown-menu.h
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli
- */
-
-#ifndef _E_DROPDOWN_BUTTON_H_
-#define _E_DROPDOWN_BUTTON_H_
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gtk/gtktogglebutton.h>
-#include <gtk/gtkmenu.h>
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-#define E_TYPE_DROPDOWN_BUTTON (e_dropdown_button_get_type ())
-#define E_DROPDOWN_BUTTON(obj) (GTK_CHECK_CAST ((obj), E_TYPE_DROPDOWN_BUTTON, EDropdownButton))
-#define E_DROPDOWN_BUTTON_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_TYPE_DROPDOWN_BUTTON, EDropdownButtonClass))
-#define E_IS_DROPDOWN_BUTTON(obj) (GTK_CHECK_TYPE ((obj), E_TYPE_DROPDOWN_BUTTON))
-#define E_IS_DROPDOWN_BUTTON_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), E_TYPE_DROPDOWN_BUTTON))
-
-
-typedef struct _EDropdownButton EDropdownButton;
-typedef struct _EDropdownButtonPrivate EDropdownButtonPrivate;
-typedef struct _EDropdownButtonClass EDropdownButtonClass;
-
-struct _EDropdownButton {
- GtkToggleButton parent;
-
- EDropdownButtonPrivate *priv;
-};
-
-struct _EDropdownButtonClass {
- GtkToggleButtonClass parent_class;
-};
-
-
-GtkType e_dropdown_button_get_type (void);
-void e_dropdown_button_construct (EDropdownButton *dropdown_button,
- const char *label_text,
- GtkMenu *menu);
-GtkWidget *e_dropdown_button_new (const char *label_text,
- GtkMenu *menu);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_DROPDOWN_BUTTON_H_ */
diff --git a/widgets/misc/e-filter-bar.c b/widgets/misc/e-filter-bar.c
deleted file mode 100644
index 2a84912d62..0000000000
--- a/widgets/misc/e-filter-bar.c
+++ /dev/null
@@ -1,472 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-search-bar.c
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors:
- * Michael Zucchi <notzed@ximian.com>
- *
- * This library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-
-#include <glib.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <libgnomeui/gnome-stock.h>
-
-#include "e-dropdown-button.h"
-#include "e-filter-bar.h"
-#include "filter/rule-editor.h"
-
-#include <gal/widgets/e-unicode.h>
-#include <gal/widgets/e-gui-utils.h>
-
-#define d(x)
-
-
-enum {
- LAST_SIGNAL
-};
-
-/*static gint esb_signals [LAST_SIGNAL] = { 0, };*/
-
-static ESearchBarClass *parent_class = NULL;
-
-/* The arguments we take */
-enum {
- ARG_0,
- ARG_QUERY,
-};
-
-
-/* Callbacks. */
-
-/* rule editor thingy */
-static void rule_editor_destroyed(GtkWidget *w, EFilterBar *efb)
-{
- efb->save_dialogue = NULL;
- e_search_bar_set_menu_sensitive((ESearchBar *)efb, E_FILTERBAR_SAVE_ID, TRUE);
-}
-
-/* FIXME: need to update the popup menu to match any edited rules, sigh */
-static void full_rule_editor_clicked(GtkWidget *w, int button, void *data)
-{
- EFilterBar *efb = data;
-
- switch (button) {
- case 0:
- rule_context_save(efb->context, efb->userrules);
- case 1:
- default:
- gnome_dialog_close((GnomeDialog *)w);
- case -1:
- }
-}
-
-static void rule_editor_clicked(GtkWidget *w, int button, void *data)
-{
- EFilterBar *efb = data;
- ESearchBarItem item;
- FilterRule *rule;
-
- switch(button) {
- case 0:
- rule = gtk_object_get_data((GtkObject *)w, "rule");
- if (rule) {
- if (!filter_rule_validate (rule))
- return;
-
- item.text = rule->name;
- item.id = efb->menu_base + efb->menu_rules->len;
-
- g_ptr_array_add(efb->menu_rules, rule);
-
- rule_context_add_rule(efb->context, rule);
- /* FIXME: check return */
- rule_context_save(efb->context, efb->userrules);
- e_search_bar_add_menu((ESearchBar *)efb, &item);
- }
- case 1:
- gnome_dialog_close((GnomeDialog *)w);
- break;
- case -1:
- }
-}
-
-static void rule_advanced_clicked(GtkWidget *w, int button, void *data)
-{
- EFilterBar *efb = data;
- FilterRule *rule;
-
- switch(button) {
- case 0: /* 'ok' */
- case 1:
- rule = gtk_object_get_data((GtkObject *)w, "rule");
- if (rule) {
- efb->current_query = rule;
- gtk_object_ref((GtkObject *)rule);
- gtk_signal_emit_by_name((GtkObject *)efb, "query_changed");
- }
- if (button == 1)
- rule_editor_clicked(w, 0, data);
- case 2:
- gnome_dialog_close((GnomeDialog *)w);
- break;
- case -1:
- }
-}
-
-static void
-menubar_activated (ESearchBar *esb, int id, void *data)
-{
- EFilterBar *efb = (EFilterBar *)esb;
-
- switch(id) {
- case E_FILTERBAR_RESET_ID:
- d(printf("Reset menu\n"));
- efb->current_query = NULL;
- gtk_object_set((GtkObject *)esb, "option_choice", efb->option_base, NULL);
- gtk_object_set((GtkObject *)esb, "text", NULL, NULL);
- gtk_widget_set_sensitive(esb->entry, TRUE);
- break;
- case E_FILTERBAR_EDIT_ID:
- if (!efb->save_dialogue) {
- GnomeDialog *gd;
-
- gd = (GnomeDialog *)rule_editor_new(efb->context, FILTER_SOURCE_INCOMING);
- gtk_signal_connect((GtkObject *)gd, "clicked", full_rule_editor_clicked, efb);
- gtk_signal_connect((GtkObject *)gd, "destroy", rule_editor_destroyed, efb);
- gtk_widget_show((GtkWidget *)gd);
- }
- break;
- case E_FILTERBAR_SAVE_ID:
- if (efb->current_query && !efb->save_dialogue) {
- GtkWidget *w;
- GnomeDialog *gd;
- FilterRule *rule;
-
- rule = filter_rule_clone(efb->current_query, efb->context);
-
- w = filter_rule_get_widget(rule, efb->context);
- filter_rule_set_source(rule, FILTER_SOURCE_INCOMING);
- gd = (GnomeDialog *)gnome_dialog_new(_("Save Search"),
- GNOME_STOCK_BUTTON_OK,
- GNOME_STOCK_BUTTON_CANCEL,
- NULL);
- efb->save_dialogue = (GtkWidget *)gd;
- gnome_dialog_set_default (gd, 0);
-
- gtk_window_set_policy(GTK_WINDOW(gd), FALSE, TRUE, FALSE);
- /*gtk_window_set_default_size (GTK_WINDOW (gd), 500, 500);*/
- gtk_box_pack_start((GtkBox *)gd->vbox, w, TRUE, TRUE, 0);
- gtk_widget_show((GtkWidget *)gd);
- gtk_object_ref((GtkObject *)rule);
- gtk_object_set_data_full((GtkObject *)gd, "rule", rule, (GtkDestroyNotify)gtk_object_unref);
- gtk_signal_connect((GtkObject *)gd, "clicked", rule_editor_clicked, efb);
- gtk_signal_connect((GtkObject *)gd, "destroy", rule_editor_destroyed, efb);
-
- e_search_bar_set_menu_sensitive(esb, E_FILTERBAR_SAVE_ID, FALSE);
- gtk_widget_set_sensitive(esb->entry, FALSE);
-
- gtk_widget_show((GtkWidget *)gd);
- }
-
- d(printf("Save menu\n"));
- break;
- default:
- if (id >= efb->menu_base && id < efb->menu_base + efb->menu_rules->len) {
- GString *out = g_string_new("");
- d(printf("Selected rule: %s\n", ((FilterRule *)efb->menu_rules->pdata[id - efb->menu_base])->name));
- filter_rule_build_code(efb->menu_rules->pdata[id - efb->menu_base], out);
- d(printf("query: '%s'\n", out->str));
- g_string_free(out, 1);
-
- efb->current_query = (FilterRule *)efb->menu_rules->pdata[id - efb->menu_base];
- efb->setquery = TRUE;
- gtk_object_set((GtkObject *)esb, "option_choice", E_FILTERBAR_ADVANCED_ID, NULL);
-
- gtk_widget_set_sensitive(esb->entry, FALSE);
- } else {
- gtk_widget_set_sensitive(esb->entry, TRUE);
- return;
- }
- }
-
- gtk_signal_emit_stop_by_name((GtkObject *)esb, "menu_activated");
-}
-
-static void
-option_changed (ESearchBar *esb, void *data)
-{
- EFilterBar *efb = (EFilterBar *)esb;
- int id = esb->option_choice;
- char *query;
-
- d(printf("option changed, id = %d\n", id));
-
- switch(id) {
- case E_FILTERBAR_ADVANCED_ID: {
- d(printf("Advanced search!\n"));
-
- if (!efb->save_dialogue && !efb->setquery) {
- GtkWidget *w;
- GnomeDialog *gd;
- FilterRule *rule;
-
- if (efb->current_query)
- rule = filter_rule_clone(efb->current_query, efb->context);
- else
- rule = filter_rule_new();
-
- w = filter_rule_get_widget(rule, efb->context);
- filter_rule_set_source(rule, FILTER_SOURCE_INCOMING);
- gd = (GnomeDialog *)gnome_dialog_new(_("Advanced Search"),
- GNOME_STOCK_BUTTON_OK,
- _("Save"),
- GNOME_STOCK_BUTTON_CANCEL,
- NULL);
- efb->save_dialogue = (GtkWidget *)gd;
- gnome_dialog_set_default (gd, 0);
-
- gtk_window_set_policy(GTK_WINDOW(gd), FALSE, TRUE, FALSE);
- /*gtk_window_set_default_size (GTK_WINDOW (gd), 500, 500);*/
- gtk_box_pack_start((GtkBox *)gd->vbox, w, TRUE, TRUE, 0);
- gtk_widget_show((GtkWidget *)gd);
- gtk_object_ref((GtkObject *)rule);
- gtk_object_set_data_full((GtkObject *)gd, "rule", rule, (GtkDestroyNotify)gtk_object_unref);
- gtk_signal_connect((GtkObject *)gd, "clicked", rule_advanced_clicked, efb);
- gtk_signal_connect((GtkObject *)gd, "destroy", rule_editor_destroyed, efb);
-
- e_search_bar_set_menu_sensitive(esb, E_FILTERBAR_SAVE_ID, FALSE);
- gtk_widget_set_sensitive(esb->entry, FALSE);
-
- gtk_widget_show((GtkWidget *)gd);
- }
- } break;
- default:
- if (id >= efb->option_base && id < efb->option_base + efb->option_rules->len) {
- efb->current_query = (FilterRule *)efb->option_rules->pdata[id - efb->option_base];
- if (efb->config) {
- gtk_object_get((GtkObject *)esb, "text", &query, NULL);
- efb->config(efb, efb->current_query, id, query, efb->config_data);
- g_free(query);
- }
- gtk_widget_set_sensitive(esb->entry, TRUE);
- } else {
- gtk_widget_set_sensitive(esb->entry, FALSE);
- efb->current_query = NULL;
- }
- }
- efb->setquery = FALSE;
-}
-
-static GArray *build_items(ESearchBar *esb, ESearchBarItem *items, int type, int *start, GPtrArray *rules)
-{
- FilterRule *rule = NULL;
- EFilterBar *efb = (EFilterBar *)esb;
- int id = 0, i;
- GArray *menu = g_array_new(FALSE, FALSE, sizeof(ESearchBarItem));
- ESearchBarItem item;
- char *source;
-
- /* find a unique starting point for the id's of our items */
- for (i=0;items[i].id != -1;i++) {
- if (items[i].id >= id)
- id = items[i].id+1;
- }
-
- /* add the user menus */
- g_array_append_vals(menu, items, i);
-
- *start = id;
-
- if (type == 0) {
- /* and add ours */
- item.id = 0;
- item.text = NULL;
- g_array_append_vals(menu, &item, 1);
- source = FILTER_SOURCE_INCOMING;
- } else {
- source = FILTER_SOURCE_DEMAND;
- }
-
- while ( (rule = rule_context_next_rule(efb->context, rule, source)) ) {
- item.id = id++;
- item.text = rule->name;
- g_array_append_vals(menu, &item, 1);
- g_ptr_array_add(rules, rule);
- }
-
- /* always add on the advanced menu */
- if (type == 1) {
- ESearchBarItem advanced_item = E_FILTERBAR_ADVANCED;
- g_array_append_vals(menu, &advanced_item, 1);
- }
-
- item.id = -1;
- item.text = NULL;
- g_array_append_vals(menu, &item, 1);
-
- return menu;
-}
-
-/* Virtual methods */
-static void
-set_menu(ESearchBar *esb, ESearchBarItem *items)
-{
- GArray *menu;
- EFilterBar *efb = (EFilterBar *)esb;
-
- g_ptr_array_set_size(efb->menu_rules, 0);
- menu = build_items(esb, items, 0, &efb->menu_base, efb->menu_rules);
- ((ESearchBarClass *)parent_class)->set_menu(esb, (ESearchBarItem *)menu->data);
- g_array_free(menu, TRUE);
-}
-
-static void
-set_option(ESearchBar *esb, ESearchBarItem *items)
-{
- GArray *menu;
- EFilterBar *efb = (EFilterBar *)esb;
-
- g_ptr_array_set_size(efb->option_rules, 0);
- menu = build_items(esb, items, 1, &efb->option_base, efb->option_rules);
- ((ESearchBarClass *)parent_class)->set_option(esb, (ESearchBarItem *)menu->data);
- g_array_free(menu, TRUE);
-}
-
-
-/* GtkObject methods. */
-
-static void
-impl_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- EFilterBar *efb = E_FILTER_BAR(object);
-
- switch (arg_id) {
- case ARG_QUERY:
- if (efb->current_query) {
- GString *out = g_string_new("");
-
- filter_rule_build_code(efb->current_query, out);
- GTK_VALUE_STRING(*arg) = out->str;
- g_string_free(out, FALSE);
- } else {
- GTK_VALUE_STRING(*arg) = NULL;
- }
- break;
- }
-}
-
-
-static void
-class_init (EFilterBarClass *klass)
-{
- GtkObjectClass *object_class;
- ESearchBarClass *esb_class = (ESearchBarClass *)klass;
-
- object_class = GTK_OBJECT_CLASS(klass);
-
- parent_class = gtk_type_class(e_search_bar_get_type());
-
- object_class->get_arg = impl_get_arg;
-
- esb_class->set_menu = set_menu;
- esb_class->set_option = set_option;
-
- gtk_object_add_arg_type ("EFilterBar::query", GTK_TYPE_STRING, GTK_ARG_READABLE, ARG_QUERY);
-
-#if 0
- esb_signals [QUERY_CHANGED] =
- gtk_signal_new ("query_changed",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (EFilterBarClass, query_changed),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- esb_signals [MENU_ACTIVATED] =
- gtk_signal_new ("menu_activated",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (EFilterBarClass, menu_activated),
- gtk_marshal_NONE__INT,
- GTK_TYPE_NONE, 1, GTK_TYPE_INT);
-
- gtk_object_class_add_signals (object_class, esb_signals, LAST_SIGNAL);
-#endif
-}
-
-static void
-init (EFilterBar *efb)
-{
- gtk_signal_connect((GtkObject *)efb, "menu_activated", menubar_activated, NULL);
- gtk_signal_connect((GtkObject *)efb, "query_changed", option_changed, NULL);
-
- efb->menu_rules = g_ptr_array_new();
- efb->option_rules = g_ptr_array_new();
-}
-
-
-/* Object construction. */
-
-EFilterBar *e_filter_bar_new (RuleContext *context, const char *systemrules, const char *userrules, EFilterBarConfigRule config, void *data)
-{
- EFilterBar *bar;
- ESearchBarItem item = { NULL, -1 };
-
- bar = gtk_type_new(e_filter_bar_get_type());
-
- bar->context = context;
- gtk_object_ref((GtkObject *)context);
- bar->systemrules = g_strdup(systemrules);
- bar->userrules = g_strdup(userrules);
- rule_context_load(context, systemrules, userrules);
-
- bar->config = config;
- bar->config_data = data;
-
- e_search_bar_construct((ESearchBar *)bar, &item, &item);
-
- return bar;
-}
-
-GtkType
-e_filter_bar_get_type (void)
-{
- static GtkType type = 0;
-
- if (!type) {
- static const GtkTypeInfo info = {
- "EFilterBar",
- sizeof (EFilterBar),
- sizeof (EFilterBarClass),
- (GtkClassInitFunc) class_init,
- (GtkObjectInitFunc) init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- type = gtk_type_unique (e_search_bar_get_type (), &info);
- }
-
- return type;
-}
-
diff --git a/widgets/misc/e-filter-bar.h b/widgets/misc/e-filter-bar.h
deleted file mode 100644
index c6777630e8..0000000000
--- a/widgets/misc/e-filter-bar.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* e-filter-bar.h
- * Copyright (C) 2001 Ximian Inc.
- * Author: Michael Zucchi <notzed@ximian.com>
- *
- * This library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-#ifndef __E_FILTER_BAR_H__
-#define __E_FILTER_BAR_H__
-
-#include <gtk/gtkobject.h>
-#include <gtk/gtkwidget.h>
-#include "e-search-bar.h"
-
-#include "filter/rule-context.h"
-#include "filter/filter-rule.h"
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-/* EFilterBar - A filter rule driven search bar.
- *
- * The following arguments are available:
- *
- * name type read/write description
- * ---------------------------------------------------------------------------------
- * query string R String representing query.
- */
-
-#define E_FILTER_BAR_TYPE (e_filter_bar_get_type ())
-#define E_FILTER_BAR(obj) (GTK_CHECK_CAST ((obj), E_FILTER_BAR_TYPE, EFilterBar))
-#define E_FILTER_BAR_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_FILTER_BAR_TYPE, EFilterBarClass))
-#define E_IS_FILTER_BAR(obj) (GTK_CHECK_TYPE ((obj), E_FILTER_BAR_TYPE))
-#define E_IS_FILTER_BAR_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), E_FILTER_BAR_TYPE))
-
-typedef struct _EFilterBar EFilterBar;
-typedef struct _EFilterBarClass EFilterBarClass;
-
-typedef void (*EFilterBarConfigRule)(EFilterBar *, FilterRule *rule, int id, const char *query, void *data);
-
-struct _EFilterBar
-{
- ESearchBar parent;
-
- int menu_base, option_base;
- GPtrArray *menu_rules, *option_rules;
-
- GtkWidget *save_dialogue; /* current save dialogue (so we dont pop up multiple ones) */
-
- FilterRule *current_query; /* as it says */
- int setquery; /* true when we're setting a query directly to advanced, so dont popup the dialogue */
-
- RuleContext *context;
- char *systemrules;
- char *userrules;
-
- EFilterBarConfigRule config;
- void *config_data;
-};
-
-struct _EFilterBarClass
-{
- ESearchBarClass parent_class;
-};
-
-/* "preset" items */
-enum {
- /* preset menu options */
- E_FILTERBAR_RESET_ID = -2,
- E_FILTERBAR_SAVE_ID = -3,
- E_FILTERBAR_EDIT_ID = -4,
-
- /* preset option options */
- E_FILTERBAR_ADVANCED_ID = -5,
-
- E_FILTERBAR_LAST_ID = -6,
-};
-
-#define E_FILTERBAR_SAVE { N_("Save As..."), E_FILTERBAR_SAVE_ID }
-#define E_FILTERBAR_RESET { N_("Show All"), E_FILTERBAR_RESET_ID }
-#define E_FILTERBAR_EDIT { N_("Edit..."), E_FILTERBAR_EDIT_ID }
-#define E_FILTERBAR_ADVANCED { N_("Advanced..."), E_FILTERBAR_ADVANCED_ID }
-
-#ifdef JUST_FOR_TRANSLATORS
-const char * strings[] = {
- N_("Save As..."),
- N_("Show All"),
- N_("Edit..."),
- N_("Advanced...")
-};
-#endif
-
-
-GtkType e_filter_bar_get_type (void);
-EFilterBar*e_filter_bar_new (RuleContext *, const char *sys, const char *user, EFilterBarConfigRule config, void *data);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* __E_FILTER_BAR_H__ */
diff --git a/widgets/misc/e-gui-utils.c b/widgets/misc/e-gui-utils.c
deleted file mode 100644
index b92c155f59..0000000000
--- a/widgets/misc/e-gui-utils.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * GUI utility functions
- *
- * Author:
- * Miguel de Icaza <miguel@helixcode.com>
- *
- * Copyright (C) 1999 Miguel de Icaza
- * Copyright (C) 2000, 2001 Ximian, Inc.
- */
-#include <config.h>
-
-#include "e-gui-utils.h"
-
-#include <gtk/gtkentry.h>
-#include <gtk/gtksignal.h>
-#include <libgnomeui/gnome-messagebox.h>
-#include <libgnomeui/gnome-stock.h>
-#include <gdk-pixbuf/gdk-pixbuf.h>
-#include <gdk-pixbuf/gnome-canvas-pixbuf.h>
-
-void
-e_notice (GtkWindow *window, const char *type, const char *format, ...)
-{
- GtkWidget *dialog;
- va_list args;
- char *str;
-
- va_start (args, format);
- str = g_strdup_vprintf (format, args);
- dialog = gnome_message_box_new (str, type, GNOME_STOCK_BUTTON_OK, NULL);
- va_end (args);
- g_free (str);
-
- if (window)
- gnome_dialog_set_parent (GNOME_DIALOG (dialog), window);
-
- gnome_dialog_run (GNOME_DIALOG (dialog));
-}
-
-static void
-kill_popup_menu (GtkWidget *widget, GtkMenu *menu)
-{
- g_return_if_fail (menu != NULL);
- g_return_if_fail (GTK_IS_MENU (menu));
-
- gtk_object_unref (GTK_OBJECT (menu));
-}
-
-void
-e_auto_kill_popup_menu_on_hide (GtkMenu *menu)
-{
- g_return_if_fail (menu != NULL);
- g_return_if_fail (GTK_IS_MENU (menu));
-
- gtk_signal_connect (GTK_OBJECT (menu), "hide",
- GTK_SIGNAL_FUNC (kill_popup_menu), menu);
-}
-
-void
-e_popup_menu (GtkMenu *menu, GdkEvent *event)
-{
- g_return_if_fail (menu != NULL);
- g_return_if_fail (GTK_IS_MENU (menu));
-
- e_auto_kill_popup_menu_on_hide (menu);
-
- if (event->type == GDK_KEY_PRESS)
- gtk_menu_popup (menu, NULL, NULL, 0, NULL, 0, event->key.time);
- else if ((event->type == GDK_BUTTON_PRESS) ||
- (event->type == GDK_BUTTON_RELEASE) ||
- (event->type == GDK_2BUTTON_PRESS) ||
- (event->type == GDK_3BUTTON_PRESS)){
- gtk_menu_popup (menu, NULL, NULL, 0, NULL, event->button.button, event->button.time);
- } else
- gtk_menu_popup (menu, NULL, NULL, 0, NULL, 0, GDK_CURRENT_TIME);
-}
-
-typedef struct {
- GtkCallback callback;
- gpointer closure;
-} CallbackClosure;
-
-static void
-e_container_foreach_leaf_callback(GtkWidget *widget, CallbackClosure *callback_closure)
-{
- if (GTK_IS_CONTAINER(widget)) {
- e_container_foreach_leaf(GTK_CONTAINER(widget), callback_closure->callback, callback_closure->closure);
- } else {
- (*callback_closure->callback) (widget, callback_closure->closure);
- }
-}
-
-void
-e_container_foreach_leaf(GtkContainer *container,
- GtkCallback callback,
- gpointer closure)
-{
- CallbackClosure callback_closure;
- callback_closure.callback = callback;
- callback_closure.closure = closure;
- gtk_container_foreach(container, (GtkCallback) e_container_foreach_leaf_callback, &callback_closure);
-}
-
-static void
-e_container_change_tab_order_destroy_notify(gpointer data)
-{
- GList *list = data;
- g_list_foreach(list, (GFunc) gtk_object_unref, NULL);
- g_list_free(list);
-}
-
-
-static gint
-e_container_change_tab_order_callback(GtkContainer *container,
- GtkDirectionType direction,
- GList *children)
-{
- GtkWidget *focus_child;
- GtkWidget *child;
-
- if (direction != GTK_DIR_TAB_FORWARD &&
- direction != GTK_DIR_TAB_BACKWARD)
- return FALSE;
-
- focus_child = container->focus_child;
-
- if (direction == GTK_DIR_TAB_BACKWARD) {
- children = g_list_last(children);
- }
-
- while (children) {
- child = children->data;
- if (direction == GTK_DIR_TAB_FORWARD)
- children = children->next;
- else
- children = children->prev;
-
- if (!child)
- continue;
-
- if (focus_child) {
- if (focus_child == child) {
- focus_child = NULL;
-
- if (GTK_WIDGET_DRAWABLE (child) &&
- GTK_IS_CONTAINER (child) &&
- !GTK_WIDGET_HAS_FOCUS (child))
- if (gtk_container_focus (GTK_CONTAINER (child), direction)) {
- gtk_signal_emit_stop_by_name(GTK_OBJECT(container), "focus");
- return TRUE;
- }
- }
- }
- else if (GTK_WIDGET_DRAWABLE (child)) {
- if (GTK_IS_CONTAINER (child)) {
- if (gtk_container_focus (GTK_CONTAINER (child), direction)) {
- gtk_signal_emit_stop_by_name(GTK_OBJECT(container), "focus");
- return TRUE;
- }
- }
- else if (GTK_WIDGET_CAN_FOCUS (child)) {
- gtk_widget_grab_focus (child);
- gtk_signal_emit_stop_by_name(GTK_OBJECT(container), "focus");
- return TRUE;
- }
- }
- }
-
- return FALSE;
-}
-
-gint
-e_container_change_tab_order(GtkContainer *container, GList *widgets)
-{
- GList *list;
- list = g_list_copy(widgets);
- g_list_foreach(list, (GFunc) gtk_object_ref, NULL);
- return gtk_signal_connect_full(GTK_OBJECT(container), "focus",
- GTK_SIGNAL_FUNC(e_container_change_tab_order_callback),
- NULL, list,
- e_container_change_tab_order_destroy_notify,
- FALSE, FALSE);
-}
-
-struct widgetandint {
- GtkWidget *widget;
- int count;
-};
-
-static void
-nth_entry_callback(GtkWidget *widget, struct widgetandint *data)
-{
- if (GTK_IS_ENTRY(widget)) {
- if (data->count > 1) {
- data->count --;
- data->widget = widget;
- } else if (data->count == 1) {
- data->count --;
- data->widget = NULL;
- gtk_widget_grab_focus(widget);
- }
- }
-}
-
-void
-e_container_focus_nth_entry(GtkContainer *container, int n)
-{
- struct widgetandint data;
- data.widget = NULL;
- data.count = n;
- e_container_foreach_leaf(container, (GtkCallback) nth_entry_callback, &data);
- if (data.widget)
- gtk_widget_grab_focus(data.widget);
-}
diff --git a/widgets/misc/e-gui-utils.h b/widgets/misc/e-gui-utils.h
deleted file mode 100644
index 8a04ee24ae..0000000000
--- a/widgets/misc/e-gui-utils.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef GAL_GUI_UTILS_H
-#define GAL_GUI_UTILS_H
-
-#include <gtk/gtkmenu.h>
-#include <gtk/gtkwindow.h>
-
-#include <libgnomeui/gnome-messagebox.h>
-
-BEGIN_GNOME_DECLS
-
-void e_popup_menu (GtkMenu *menu,
- GdkEvent *event);
-void e_auto_kill_popup_menu_on_hide (GtkMenu *menu);
-void e_notice (GtkWindow *window,
- const char *type,
- const char *format,
- ...);
-void e_container_foreach_leaf (GtkContainer *container,
- GtkCallback callback,
- gpointer closure);
-void e_container_focus_nth_entry (GtkContainer *container,
- int n);
-gint e_container_change_tab_order (GtkContainer *container,
- GList *widgets);
-
-END_GNOME_DECLS
-
-#endif /* GAL_GUI_UTILS_H */
diff --git a/widgets/misc/e-hsv-utils.c b/widgets/misc/e-hsv-utils.c
deleted file mode 100644
index 31561436dd..0000000000
--- a/widgets/misc/e-hsv-utils.c
+++ /dev/null
@@ -1,166 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-hsv-utils.c: utilites for manipulating colours in HSV space
- *
- * Author:
- * Seth Nickell <seth@eazel.com>
- *
- * Copyright (C) 1995-2001 Seth Nickell, Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- */
-
-#include <config.h>
-
-#include "e-hsv-utils.h"
-
-/* tweak_hsv is a really tweaky function. it modifies its first argument, which
- should be the colour you want tweaked. delta_h, delta_s and delta_v specify
- how much you want their respective channels modified (and in what direction).
- if it can't do the specified modification, it does it in the oppositon direction */
-void
-e_hsv_tweak (GdkColor *colour, gdouble delta_h, gdouble delta_s, gdouble delta_v)
-{
- gdouble h, s, v, r, g, b;
-
- r = colour->red / 65535.0f;
- g = colour->green / 65535.0f;
- b = colour->blue / 65535.0f;
-
- e_rgb_to_hsv (r, g, b, &h, &s, &v);
-
- if (h + delta_h < 0) {
- h -= delta_h;
- } else {
- h += delta_h;
- }
-
- if (s + delta_s < 0) {
- s -= delta_s;
- } else {
- s += delta_s;
- }
-
- if (v + delta_v < 0) {
- v -= delta_v;
- } else {
- v += delta_v;
- }
-
- e_hsv_to_rgb (h, s, v, &r, &g, &b);
-
- colour->red = r * 65535.0f;
- colour->green = g * 65535.0f;
- colour->blue = b * 65535.0f;
-}
-
-/* Copy n' Paste code from the GTK+ colour selector (gtkcolorsel.c) */
-/* Originally lifted, I suspect, from "Foley, van Dam" */
-void
-e_hsv_to_rgb (gdouble h, gdouble s, gdouble v,
- gdouble *r, gdouble *g, gdouble *b)
-{
- gint i;
- gdouble f, w, q, t;
-
- if (s == 0.0)
- s = 0.000001;
-
- if (h == -1.0)
- {
- *r = v;
- *g = v;
- *b = v;
- }
- else
- {
- if (h == 360.0)
- h = 0.0;
- h = h / 60.0;
- i = (gint) h;
- f = h - i;
- w = v * (1.0 - s);
- q = v * (1.0 - (s * f));
- t = v * (1.0 - (s * (1.0 - f)));
-
- switch (i)
- {
- case 0:
- *r = v;
- *g = t;
- *b = w;
- break;
- case 1:
- *r = q;
- *g = v;
- *b = w;
- break;
- case 2:
- *r = w;
- *g = v;
- *b = t;
- break;
- case 3:
- *r = w;
- *g = q;
- *b = v;
- break;
- case 4:
- *r = t;
- *g = w;
- *b = v;
- break;
- case 5:
- *r = v;
- *g = w;
- *b = q;
- break;
- }
- }
-}
-
-void
-e_rgb_to_hsv (gdouble r, gdouble g, gdouble b,
- gdouble *h, gdouble *s, gdouble *v)
-{
- double max, min, delta;
-
- max = r;
- if (g > max)
- max = g;
- if (b > max)
- max = b;
-
- min = r;
- if (g < min)
- min = g;
- if (b < min)
- min = b;
-
- *v = max;
-
- if (max != 0.0)
- *s = (max - min) / max;
- else
- *s = 0.0;
-
- if (*s == 0.0)
- *h = -1.0;
- else
- {
- delta = max - min;
-
- if (r == max)
- *h = (g - b) / delta;
- else if (g == max)
- *h = 2.0 + (b - r) / delta;
- else if (b == max)
- *h = 4.0 + (r - g) / delta;
-
- *h = *h * 60.0;
-
- if (*h < 0.0)
- *h = *h + 360;
- }
-}
-
-
diff --git a/widgets/misc/e-hsv-utils.h b/widgets/misc/e-hsv-utils.h
deleted file mode 100644
index 774d18585c..0000000000
--- a/widgets/misc/e-hsv-utils.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_HSV_UTILS_H_
-#define _E_HSV_UTILS_H_
-
-#include <libgnome/gnome-defs.h>
-#include <gdk/gdk.h>
-
-BEGIN_GNOME_DECLS
-
-void e_hsv_to_rgb (gdouble h,
- gdouble s,
- gdouble v,
- gdouble *r,
- gdouble *g,
- gdouble *b);
-
-void e_rgb_to_hsv (gdouble r,
- gdouble g,
- gdouble b,
- gdouble *h,
- gdouble *s,
- gdouble *v);
-
-void e_hsv_tweak (GdkColor *colour,
- gdouble delta_h,
- gdouble delta_s,
- gdouble delta_v);
-
-END_GNOME_DECLS
-
-#endif /* _E_HSV_UTILS_H_ */
diff --git a/widgets/misc/e-messagebox.c b/widgets/misc/e-messagebox.c
deleted file mode 100644
index 6549476e1d..0000000000
--- a/widgets/misc/e-messagebox.c
+++ /dev/null
@@ -1,356 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Original Author: Jay Painter
- * Modified: Jeffrey Stedfast
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-
-#include <config.h>
-#include <stdarg.h>
-#include <string.h> /* for strcmp */
-
-#include <glib.h>
-#include <gtk/gtkalignment.h>
-#include <gtk/gtkcheckbutton.h>
-#include <gtk/gtkhbox.h>
-#include <gtk/gtklabel.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <libgnome/gnome-triggers.h>
-#include <libgnome/gnome-util.h>
-#include <libgnomeui/gnome-pixmap.h>
-#include <libgnomeui/gnome-uidefs.h>
-#include "e-messagebox.h"
-
-#define E_MESSAGE_BOX_WIDTH 425
-#define E_MESSAGE_BOX_HEIGHT 125
-
-struct _EMessageBoxPrivate {
- GtkWidget *label;
- GtkWidget *checkbox;
-};
-
-static void e_message_box_class_init (EMessageBoxClass *klass);
-static void e_message_box_init (EMessageBox *messagebox);
-static void e_message_box_destroy (GtkObject *object);
-static void e_message_box_finalize (GtkObject *object);
-
-static GnomeDialogClass *parent_class;
-
-GtkType
-e_message_box_get_type (void)
-{
- static GtkType message_box_type = 0;
-
- if (!message_box_type) {
- GtkTypeInfo message_box_info = {
- "EMessageBox",
- sizeof (EMessageBox),
- sizeof (EMessageBoxClass),
- (GtkClassInitFunc) e_message_box_class_init,
- (GtkObjectInitFunc) e_message_box_init,
- NULL,
- NULL
- };
-
- message_box_type = gtk_type_unique (gnome_dialog_get_type (), &message_box_info);
- }
-
- return message_box_type;
-}
-
-static void
-e_message_box_class_init (EMessageBoxClass *klass)
-{
- GtkObjectClass *object_class;
-
- object_class = (GtkObjectClass *)klass;
- parent_class = gtk_type_class (gnome_dialog_get_type ());
-
- object_class->destroy = e_message_box_destroy;
- object_class->finalize = e_message_box_finalize;
-}
-
-static void
-e_message_box_init (EMessageBox *message_box)
-{
- message_box->_priv = g_new0 (EMessageBoxPrivate, 1);
-}
-
-static void
-e_message_box_destroy (GtkObject *object)
-{
- /* remember, destroy can be run multiple times! */
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-static void
-e_message_box_finalize (GtkObject *object)
-{
- EMessageBox *mbox = E_MESSAGE_BOX (object);
-
- g_free (mbox->_priv);
- mbox->_priv = NULL;
-
- if (GTK_OBJECT_CLASS (parent_class)->finalize)
- (* GTK_OBJECT_CLASS (parent_class)->finalize) (object);
-}
-
-/**
- * e_message_box_construct:
- * @messagebox: The message box to construct
- * @message: The message to be displayed.
- * @message_box_type: The type of the message
- * @buttons: a NULL terminated array with the buttons to insert.
- *
- * For language bindings or subclassing, from C use #e_message_box_new or
- * #e_message_box_newv
- *
- * Returns:
- */
-void
-e_message_box_construct (EMessageBox *messagebox,
- const gchar *message,
- const gchar *message_box_type,
- const gchar **buttons)
-{
- GtkWidget *hbox;
- GtkWidget *pixmap = NULL;
- GtkWidget *alignment;
- char *s;
- GtkStyle *style;
- const gchar* title = NULL;
- gint i = 0;
-
- g_return_if_fail (messagebox != NULL);
- g_return_if_fail (E_IS_MESSAGE_BOX (messagebox));
- g_return_if_fail (message != NULL);
- g_return_if_fail (message_box_type != NULL);
-
- style = gtk_widget_get_style (GTK_WIDGET (messagebox));
-
- /* Make noises, basically */
- gnome_triggers_vdo (message, message_box_type, NULL);
-
- if (strcmp (E_MESSAGE_BOX_INFO, message_box_type) == 0) {
- title = _("Information");
- s = gnome_unconditional_pixmap_file("gnome-info.png");
- if (s) {
- pixmap = gnome_pixmap_new_from_file (s);
- g_free(s);
- }
- } else if (strcmp (E_MESSAGE_BOX_WARNING, message_box_type) == 0) {
- title = _("Warning");
- s = gnome_unconditional_pixmap_file ("gnome-warning.png");
- if (s) {
- pixmap = gnome_pixmap_new_from_file (s);
- g_free (s);
- }
- } else if (strcmp (E_MESSAGE_BOX_ERROR, message_box_type) == 0) {
- title = _("Error");
- s = gnome_unconditional_pixmap_file ("gnome-error");
- if (s) {
- pixmap = gnome_pixmap_new_from_file (s);
- g_free(s);
- }
- } else if (strcmp (E_MESSAGE_BOX_QUESTION, message_box_type) == 0) {
- title = _("Question");
- s = gnome_unconditional_pixmap_file ("gnome-question.png");
- if (s) {
- pixmap = gnome_pixmap_new_from_file (s);
- g_free (s);
- }
- } else {
- title = _("Message");
- }
-
- g_assert (title != NULL);
-
- gtk_window_set_title (GTK_WINDOW (messagebox), title);
-
- hbox = gtk_hbox_new (FALSE, 0);
- gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (messagebox)->vbox),
- hbox, TRUE, TRUE, 10);
- gtk_widget_show (hbox);
-
- if ((pixmap == NULL) || (GNOME_PIXMAP (pixmap)->pixmap == NULL)) {
- if (pixmap)
- gtk_widget_destroy (pixmap);
- s = gnome_unconditional_pixmap_file ("gnome-default.png");
- if (s) {
- pixmap = gnome_pixmap_new_from_file (s);
- g_free (s);
- } else
- pixmap = NULL;
- }
- if (pixmap) {
- gtk_box_pack_start (GTK_BOX (hbox), pixmap, FALSE, TRUE, 0);
- gtk_widget_show (pixmap);
- }
-
- messagebox->_priv->label = gtk_label_new (message);
- gtk_label_set_justify (GTK_LABEL (messagebox->_priv->label), GTK_JUSTIFY_LEFT);
- gtk_label_set_line_wrap (GTK_LABEL (messagebox->_priv->label), TRUE);
- gtk_misc_set_padding (GTK_MISC (messagebox->_priv->label), GNOME_PAD, 0);
- gtk_box_pack_start (GTK_BOX (hbox), messagebox->_priv->label, TRUE, TRUE, 0);
- gtk_widget_show (messagebox->_priv->label);
-
- /* Add some extra space on the right to balance the pixmap */
- if (pixmap) {
- alignment = gtk_alignment_new (0., 0., 0., 0.);
- gtk_widget_set_usize (alignment, GNOME_PAD, -1);
- gtk_widget_show (alignment);
-
- gtk_box_pack_start (GTK_BOX (hbox), alignment, FALSE, FALSE, 0);
- }
-
- /* Add the "Don't show this message again." checkbox */
- messagebox->_priv->checkbox = gtk_check_button_new_with_label (_("Don't show this message again."));
- gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (messagebox)->vbox),
- messagebox->_priv->checkbox, TRUE, TRUE, 10);
- gtk_widget_show (messagebox->_priv->checkbox);
-
- if (buttons) {
- while (buttons[i]) {
- gnome_dialog_append_button (GNOME_DIALOG (messagebox),
- buttons[i]);
- i++;
- };
- }
-
- if (GNOME_DIALOG (messagebox)->buttons)
- gtk_widget_grab_focus (g_list_last (GNOME_DIALOG (messagebox)->buttons)->data);
-
- gnome_dialog_set_close (GNOME_DIALOG (messagebox), TRUE);
-}
-
-/**
- * e_message_box_new:
- * @message: The message to be displayed.
- * @message_box_type: The type of the message
- * @...: A NULL terminated list of strings to use in each button.
- *
- * Creates a dialog box of type @message_box_type with @message. A number
- * of buttons are inserted on it. You can use the GNOME stock identifiers
- * to create gnome-stock-buttons.
- *
- * Returns a widget that has the dialog box.
- */
-GtkWidget*
-e_message_box_new (const gchar *message,
- const gchar *message_box_type, ...)
-{
- va_list ap;
- EMessageBox *message_box;
-
- g_return_val_if_fail (message != NULL, NULL);
- g_return_val_if_fail (message_box_type != NULL, NULL);
-
- va_start (ap, message_box_type);
-
- message_box = gtk_type_new (e_message_box_get_type ());
-
- e_message_box_construct (message_box, message, message_box_type, NULL);
-
- /* we need to add buttons by hand here */
- while (TRUE) {
- gchar * button_name;
-
- button_name = va_arg (ap, gchar *);
-
- if (button_name == NULL) {
- break;
- }
-
- gnome_dialog_append_button (GNOME_DIALOG (message_box), button_name);
- }
-
- va_end (ap);
-
- gtk_widget_grab_focus (g_list_last (GNOME_DIALOG (message_box)->buttons)->data);
-
- return GTK_WIDGET (message_box);
-}
-
-/**
- * e_message_box_newv:
- * @message: The message to be displayed.
- * @message_box_type: The type of the message
- * @buttons: a NULL terminated array with the buttons to insert.
- *
- * Creates a dialog box of type @message_box_type with @message. A number
- * of buttons are inserted on it, the messages come from the @buttons array.
- * You can use the GNOME stock identifiers to create gnome-stock-buttons.
- * The buttons array can be NULL if you wish to add buttons yourself later.
- *
- * Returns a widget that has the dialog box.
- */
-GtkWidget*
-e_message_box_newv (const gchar *message,
- const gchar *message_box_type,
- const gchar **buttons)
-{
- EMessageBox *message_box;
-
- g_return_val_if_fail (message != NULL, NULL);
- g_return_val_if_fail (message_box_type != NULL, NULL);
-
- message_box = gtk_type_new (e_message_box_get_type ());
-
- e_message_box_construct (message_box, message,
- message_box_type, buttons);
-
- return GTK_WIDGET (message_box);
-}
-
-
-/**
- * e_message_box_get_label:
- * @messagebox: The message box to work on
- *
- * Gets the label widget of the message box. You should use this
- * function instead of using the structure directly.
- *
- * Returns: the widget of the label with the message */
-GtkWidget *
-e_message_box_get_label (EMessageBox *messagebox)
-{
- g_return_val_if_fail (messagebox != NULL, NULL);
- g_return_val_if_fail (E_IS_MESSAGE_BOX (messagebox), NULL);
-
- return messagebox->_priv->label;
-}
-
-
-/**
- * e_message_box_get_checkbox:
- * @messagebox: The message box to work on
- *
- * Gets the checkbox widget of the message box. You should use this
- * function instead of using the structure directly.
- *
- * Returns: the checkbox widget */
-GtkWidget *
-e_message_box_get_checkbox (EMessageBox *messagebox)
-{
- g_return_val_if_fail (messagebox != NULL, NULL);
- g_return_val_if_fail (E_IS_MESSAGE_BOX (messagebox), NULL);
-
- return messagebox->_priv->checkbox;
-}
diff --git a/widgets/misc/e-messagebox.h b/widgets/misc/e-messagebox.h
deleted file mode 100644
index 11a4026848..0000000000
--- a/widgets/misc/e-messagebox.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Original Author: Jay Painter
- * Modified: Jeffrey Stedfast
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-
-#ifndef __E_MESSAGE_BOX_H__
-#define __E_MESSAGE_BOX_H__
-
-#include <glib.h>
-#include <gtk/gtkwidget.h>
-#include <libgnomeui/gnome-dialog.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_TYPE_MESSAGE_BOX (e_message_box_get_type ())
-#define E_MESSAGE_BOX(obj) (GTK_CHECK_CAST ((obj), E_TYPE_MESSAGE_BOX, EMessageBox))
-#define E_MESSAGE_BOX_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_TYPE_MESSAGE_BOX, EMessageBoxClass))
-#define E_IS_MESSAGE_BOX(obj) (GTK_CHECK_TYPE ((obj), E_TYPE_MESSAGE_BOX))
-#define E_IS_MESSAGE_BOX_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), E_TYPE_MESSAGE_BOX))
-#define E_MESSAGE_BOX_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), E_TYPE_MESSAGE_BOX, EMessageBoxClass))
-
-
-#define E_MESSAGE_BOX_INFO "info"
-#define E_MESSAGE_BOX_WARNING "warning"
-#define E_MESSAGE_BOX_ERROR "error"
-#define E_MESSAGE_BOX_QUESTION "question"
-#define E_MESSAGE_BOX_GENERIC "generic"
-
-
-typedef struct _EMessageBox EMessageBox;
-typedef struct _EMessageBoxPrivate EMessageBoxPrivate;
-typedef struct _EMessageBoxClass EMessageBoxClass;
-typedef struct _EMessageBoxButton EMessageBoxButton;
-
-struct _EMessageBox
-{
- GnomeDialog dialog;
- /*< private >*/
- EMessageBoxPrivate *_priv;
-};
-
-struct _EMessageBoxClass
-{
- GnomeDialogClass parent_class;
-};
-
-
-guint e_message_box_get_type (void) G_GNUC_CONST;
-GtkWidget* e_message_box_new (const gchar *message,
- const gchar *messagebox_type,
- ...);
-
-GtkWidget* e_message_box_newv (const gchar *message,
- const gchar *messagebox_type,
- const gchar **buttons);
-
-void e_message_box_construct (EMessageBox *messagebox,
- const gchar *message,
- const gchar *messagebox_type,
- const gchar **buttons);
-
-GtkWidget *e_message_box_get_label (EMessageBox *messagebox);
-
-GtkWidget *e_message_box_get_checkbox (EMessageBox *messagebox);
-
-END_GNOME_DECLS
-
-#endif /* __E_MESSAGE_BOX_H__ */
diff --git a/widgets/misc/e-popup-menu.c b/widgets/misc/e-popup-menu.c
deleted file mode 100644
index da28926677..0000000000
--- a/widgets/misc/e-popup-menu.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-popup-menu.c: popup menu display
-nnn *
- * Authors:
- * Miguel de Icaza (miguel@kernel.org)
- * Jody Goldberg (jgoldberg@home.com)
- * Jeffrey Stedfast <fejj@helixcode.com>
- *
- * (C) 2000 Helix Code, Inc.
- */
-#include <config.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtkaccellabel.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkmenuitem.h>
-#include <gtk/gtksignal.h>
-#include <libgnomeui/gtkpixmapmenuitem.h>
-#include <libgnomeui/gnome-stock.h>
-
-#include "e-popup-menu.h"
-#include "e-gui-utils.h"
-
-#include <libgnome/gnome-i18n.h>
-
-#ifndef GNOME_APP_HELPER_H
-/* Copied this i18n function to use for the same purpose */
-
-#ifdef ENABLE_NLS
-#define L_(x) gnome_app_helper_gettext(x)
-
-static gchar *
-gnome_app_helper_gettext (const gchar *str)
-{
- char *s;
-
- s = gettext (str);
- if ( s == str )
- s = dgettext (PACKAGE, str);
-
- return s;
-}
-
-#else
-#define L_(x) x
-#endif
-
-#endif
-
-/*
- * Creates an item with an optional icon
- */
-static GtkWidget *
-make_item (GtkMenu *menu, const char *name, const char *pixname)
-{
- GtkWidget *label, *item;
- guint label_accel;
-
- if (*name == '\0')
- return gtk_menu_item_new ();
-
- /*
- * Ugh. This needs to go into Gtk+
- */
- label = gtk_accel_label_new ("");
- label_accel = gtk_label_parse_uline (GTK_LABEL (label), name);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_widget_show (label);
-
- item = pixname ? gtk_pixmap_menu_item_new () : gtk_menu_item_new ();
- gtk_container_add (GTK_CONTAINER (item), label);
-
- if (label_accel != GDK_VoidSymbol){
- gtk_widget_add_accelerator (
- item,
- "activate_item",
- gtk_menu_ensure_uline_accel_group (GTK_MENU (menu)),
- label_accel, 0,
- GTK_ACCEL_LOCKED);
- }
-
- if (pixname){
- GtkWidget *pixmap = gnome_stock_pixmap_widget (item, pixname);
-
- gtk_widget_show (pixmap);
- gtk_pixmap_menu_item_set_pixmap (
- GTK_PIXMAP_MENU_ITEM (item), pixmap);
- }
-
- return item;
-}
-
-GtkMenu *
-e_popup_menu_create (EPopupMenu *menu_list, guint32 disable_mask, guint32 hide_mask, void *closure)
-{
- GtkMenu *menu = GTK_MENU (gtk_menu_new ());
- gboolean last_item_seperator = TRUE;
- gint last_non_seperator = -1;
- gint i;
-
- for (i = 0; menu_list[i].name; i++) {
- if (strcmp ("", menu_list[i].name) && !(menu_list [i].disable_mask & hide_mask)) {
- last_non_seperator = i;
- }
- }
-
- for (i = 0; i <= last_non_seperator; i++) {
- gboolean seperator;
-
- seperator = !strcmp ("", menu_list[i].name);
-
- if ((!(seperator && last_item_seperator)) && !(menu_list [i].disable_mask & hide_mask)) {
- GtkWidget *item;
-
- item = make_item (menu, seperator ? "" : L_(menu_list[i].name), menu_list[i].pixname);
- gtk_menu_append (menu, item);
-
- if (!menu_list[i].submenu) {
- if (menu_list[i].fn)
- gtk_signal_connect (GTK_OBJECT (item), "activate",
- GTK_SIGNAL_FUNC (menu_list[i].fn),
- closure);
- } else {
- /* submenu */
- GtkMenu *submenu;
-
- submenu = e_popup_menu_create (menu_list[i].submenu, disable_mask, hide_mask, closure);
-
- gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), GTK_WIDGET (submenu));
- }
-
- if (menu_list[i].disable_mask & disable_mask)
- gtk_widget_set_sensitive (item, FALSE);
-
- gtk_widget_show (item);
- }
-
- last_item_seperator = seperator;
- }
-
- return menu;
-}
-
-void
-e_popup_menu_run (EPopupMenu *menu_list, GdkEvent *event, guint32 disable_mask, guint32 hide_mask, void *closure)
-{
- GtkMenu *menu;
-
- g_return_if_fail (menu_list != NULL);
- g_return_if_fail (event != NULL);
-
- menu = e_popup_menu_create (menu_list, disable_mask, hide_mask, closure);
-
- e_popup_menu (menu, event);
-}
-
diff --git a/widgets/misc/e-popup-menu.h b/widgets/misc/e-popup-menu.h
deleted file mode 100644
index 26e06476b3..0000000000
--- a/widgets/misc/e-popup-menu.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef E_POPUP_MENU_H
-#define E_POPUP_MENU_H
-
-#include <gtk/gtkmenu.h>
-#include <gtk/gtkwidget.h>
-#include <libgnome/gnome-defs.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_POPUP_SEPARATOR { "", NULL, (NULL), NULL, 0 }
-#define E_POPUP_TERMINATOR { NULL, NULL, (NULL), NULL, 0 }
-
-typedef struct _EPopupMenu EPopupMenu;
-
-struct _EPopupMenu {
- char *name;
- char *pixname;
- void (*fn) (GtkWidget *widget, void *closure);
- EPopupMenu *submenu;
- guint32 disable_mask;
-};
-
-GtkMenu *e_popup_menu_create (EPopupMenu *menu_list,
- guint32 disable_mask,
- guint32 hide_mask,
- void *closure);
-
-void e_popup_menu_run (EPopupMenu *menu_list,
- GdkEvent *event,
- guint32 disable_mask,
- guint32 hide_mask,
- void *closure);
-
-END_GNOME_DECLS
-
-#endif /* E_POPUP_MENU_H */
diff --git a/widgets/misc/e-printable.c b/widgets/misc/e-printable.c
deleted file mode 100644
index f029e88573..0000000000
--- a/widgets/misc/e-printable.c
+++ /dev/null
@@ -1,207 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-printable.c: an object printer.
- *
- * Author:
- * Christopher James Lahey <clahey@helixcode.com>
- *
- * (C) 2000 Helix Code, Inc.
- */
-#include <config.h>
-#include <gtk/gtksignal.h>
-#include "gal/util/e-util.h"
-#include "e-printable.h"
-
-#define EP_CLASS(e) ((EPrintableClass *)((GtkObject *)e)->klass)
-
-#define PARENT_TYPE gtk_object_get_type ()
-
-
-static GtkObjectClass *e_printable_parent_class;
-
-enum {
- PRINT_PAGE,
- DATA_LEFT,
- RESET,
- HEIGHT,
- WILL_FIT,
- LAST_SIGNAL
-};
-
-static guint e_printable_signals [LAST_SIGNAL] = { 0, };
-
-static void
-e_printable_class_init (GtkObjectClass *object_class)
-{
- EPrintableClass *klass = E_PRINTABLE_CLASS(object_class);
- e_printable_parent_class = gtk_type_class (PARENT_TYPE);
-
- e_printable_signals [PRINT_PAGE] =
- gtk_signal_new ("print_page",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (EPrintableClass, print_page),
- e_marshal_NONE__OBJECT_DOUBLE_DOUBLE_BOOL,
- GTK_TYPE_NONE, 4, GTK_TYPE_OBJECT, GTK_TYPE_DOUBLE, GTK_TYPE_DOUBLE, GTK_TYPE_BOOL);
-
- e_printable_signals [DATA_LEFT] =
- gtk_signal_new ("data_left",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (EPrintableClass, data_left),
- gtk_marshal_BOOL__NONE,
- GTK_TYPE_BOOL, 0, GTK_TYPE_NONE);
-
- e_printable_signals [RESET] =
- gtk_signal_new ("reset",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (EPrintableClass, reset),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0, GTK_TYPE_NONE);
-
- e_printable_signals [HEIGHT] =
- gtk_signal_new ("height",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (EPrintableClass, height),
- e_marshal_DOUBLE__OBJECT_DOUBLE_DOUBLE_BOOL,
- GTK_TYPE_DOUBLE, 4, GTK_TYPE_OBJECT, GTK_TYPE_DOUBLE, GTK_TYPE_DOUBLE, GTK_TYPE_BOOL);
-
- e_printable_signals [WILL_FIT] =
- gtk_signal_new ("will_fit",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (EPrintableClass, will_fit),
- e_marshal_BOOL__OBJECT_DOUBLE_DOUBLE_BOOL,
- GTK_TYPE_BOOL, 4, GTK_TYPE_OBJECT, GTK_TYPE_DOUBLE, GTK_TYPE_DOUBLE, GTK_TYPE_BOOL);
-
- gtk_object_class_add_signals (object_class, e_printable_signals, LAST_SIGNAL);
-
- klass->print_page = NULL;
- klass->data_left = NULL;
- klass->reset = NULL;
- klass->height = NULL;
- klass->will_fit = NULL;
-}
-
-
-guint
-e_printable_get_type (void)
-{
- static guint type = 0;
-
- if (!type)
- {
- GtkTypeInfo info =
- {
- "EPrintable",
- sizeof (EPrintable),
- sizeof (EPrintableClass),
- (GtkClassInitFunc) e_printable_class_init,
- NULL,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- type = gtk_type_unique (gtk_object_get_type (), &info);
- }
-
- return type;
-}
-
-EPrintable *
-e_printable_new(void)
-{
- return E_PRINTABLE(gtk_type_new(e_printable_get_type()));
-}
-
-void
-e_printable_print_page (EPrintable *e_printable,
- GnomePrintContext *context,
- gdouble width,
- gdouble height,
- gboolean quantized)
-{
- g_return_if_fail (e_printable != NULL);
- g_return_if_fail (E_IS_PRINTABLE (e_printable));
-
- gtk_signal_emit (GTK_OBJECT (e_printable),
- e_printable_signals [PRINT_PAGE],
- context,
- width,
- height,
- quantized);
-}
-
-gboolean
-e_printable_data_left (EPrintable *e_printable)
-{
- gboolean ret_val;
-
- g_return_val_if_fail (e_printable != NULL, FALSE);
- g_return_val_if_fail (E_IS_PRINTABLE (e_printable), FALSE);
-
- gtk_signal_emit (GTK_OBJECT (e_printable),
- e_printable_signals [DATA_LEFT],
- &ret_val);
-
- return ret_val;
-}
-
-void
-e_printable_reset (EPrintable *e_printable)
-{
- g_return_if_fail (e_printable != NULL);
- g_return_if_fail (E_IS_PRINTABLE (e_printable));
-
- gtk_signal_emit (GTK_OBJECT (e_printable),
- e_printable_signals [RESET]);
-}
-
-gdouble
-e_printable_height (EPrintable *e_printable,
- GnomePrintContext *context,
- gdouble width,
- gdouble max_height,
- gboolean quantized)
-{
- gdouble ret_val;
-
- g_return_val_if_fail (e_printable != NULL, -1);
- g_return_val_if_fail (E_IS_PRINTABLE (e_printable), -1);
-
- gtk_signal_emit (GTK_OBJECT (e_printable),
- e_printable_signals [HEIGHT],
- context,
- width,
- max_height,
- quantized,
- &ret_val);
-
- return ret_val;
-}
-
-gboolean
-e_printable_will_fit (EPrintable *e_printable,
- GnomePrintContext *context,
- gdouble width,
- gdouble max_height,
- gboolean quantized)
-{
- gboolean ret_val;
-
- g_return_val_if_fail (e_printable != NULL, -1);
- g_return_val_if_fail (E_IS_PRINTABLE (e_printable), -1);
-
- gtk_signal_emit (GTK_OBJECT (e_printable),
- e_printable_signals [WILL_FIT],
- context,
- width,
- max_height,
- quantized,
- &ret_val);
-
- return ret_val;
-}
diff --git a/widgets/misc/e-printable.h b/widgets/misc/e-printable.h
deleted file mode 100644
index 581b1e6f63..0000000000
--- a/widgets/misc/e-printable.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-printable.h: an object printer.
- *
- * Author:
- * Christopher James Lahey <clahey@helixcode.com>
- *
- * (C) 2000 Helix Code, Inc.
- */
-#ifndef _E_PRINTABLE_H_
-#define _E_PRINTABLE_H_
-
-#include <gtk/gtkobject.h>
-#include <libgnomeprint/gnome-print.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_PRINTABLE_TYPE (e_printable_get_type ())
-#define E_PRINTABLE(o) (GTK_CHECK_CAST ((o), E_PRINTABLE_TYPE, EPrintable))
-#define E_PRINTABLE_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_PRINTABLE_TYPE, EPrintableClass))
-#define E_IS_PRINTABLE(o) (GTK_CHECK_TYPE ((o), E_PRINTABLE_TYPE))
-#define E_IS_PRINTABLE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_PRINTABLE_TYPE))
-
-typedef struct {
- GtkObject base;
-} EPrintable;
-
-typedef struct {
- GtkObjectClass parent_class;
-
- /*
- * Signals
- */
-
- void (*print_page) (EPrintable *etm, GnomePrintContext *context, gdouble width, gdouble height, gboolean quantized);
- gboolean (*data_left) (EPrintable *etm);
- void (*reset) (EPrintable *etm);
- gdouble (*height) (EPrintable *etm, GnomePrintContext *context, gdouble width, gdouble max_height, gboolean quantized);
-
- /* e_printable_will_fit (ep, ...) should be equal in value to
- * (e_printable_print_page (ep, ...),
- * !e_printable_data_left(ep)) except that the latter has the
- * side effect of doing the printing and advancing the
- * position of the printable.
- */
-
- gboolean (*will_fit) (EPrintable *etm, GnomePrintContext *context, gdouble width, gdouble max_height, gboolean quantized);
-} EPrintableClass;
-
-GtkType e_printable_get_type (void);
-
-EPrintable *e_printable_new (void);
-
-/*
- * Routines for emitting signals on the e_table */
-void e_printable_print_page (EPrintable *e_printable,
- GnomePrintContext *context,
- gdouble width,
- gdouble height,
- gboolean quantized);
-gboolean e_printable_data_left (EPrintable *e_printable);
-void e_printable_reset (EPrintable *e_printable);
-gdouble e_printable_height (EPrintable *e_printable,
- GnomePrintContext *context,
- gdouble width,
- gdouble max_height,
- gboolean quantized);
-gboolean e_printable_will_fit (EPrintable *e_printable,
- GnomePrintContext *context,
- gdouble width,
- gdouble max_height,
- gboolean quantized);
-
-END_GNOME_DECLS
-
-#endif /* _E_PRINTABLE_H_ */
diff --git a/widgets/misc/e-reflow-model.c b/widgets/misc/e-reflow-model.c
deleted file mode 100644
index 74e7b1726c..0000000000
--- a/widgets/misc/e-reflow-model.c
+++ /dev/null
@@ -1,288 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-reflow-model.c: a Reflow Model
- *
- * Authors:
- * Chris Lahey <clahey@ximian.com>
- *
- * (C) 2001 Ximian, Inc.
- */
-#include <config.h>
-#include "e-reflow-model.h"
-#include <gtk/gtksignal.h>
-
-#define ERM_CLASS(e) ((EReflowModelClass *)((GtkObject *)e)->klass)
-
-#define PARENT_TYPE gtk_object_get_type ()
-
-#define d(x)
-
-d(static gint depth = 0);
-
-
-static GtkObjectClass *e_reflow_model_parent_class;
-
-enum {
- MODEL_CHANGED,
- MODEL_ITEMS_INSERTED,
- MODEL_ITEM_CHANGED,
- LAST_SIGNAL
-};
-
-static guint e_reflow_model_signals [LAST_SIGNAL] = { 0, };
-
-/**
- * e_reflow_model_set_width:
- * @e_reflow_model: The e-reflow-model to operate on
- * @width: The new value for the width of each item.
- */
-void
-e_reflow_model_set_width (EReflowModel *e_reflow_model, int width)
-{
- g_return_if_fail (e_reflow_model != NULL);
- g_return_if_fail (E_IS_REFLOW_MODEL (e_reflow_model));
-
- ERM_CLASS (e_reflow_model)->set_width (e_reflow_model, width);
-}
-
-/**
- * e_reflow_model_count:
- * @e_reflow_model: The e-reflow-model to operate on
- *
- * Returns: the number of items in the reflow model.
- */
-int
-e_reflow_model_count (EReflowModel *e_reflow_model)
-{
- g_return_val_if_fail (e_reflow_model != NULL, 0);
- g_return_val_if_fail (E_IS_REFLOW_MODEL (e_reflow_model), 0);
-
- return ERM_CLASS (e_reflow_model)->count (e_reflow_model);
-}
-
-/**
- * e_reflow_model_height:
- * @e_reflow_model: The e-reflow-model to operate on
- * @n: The item number to get the height of.
- * @parent: The parent GnomeCanvasItem.
- *
- * Returns: the height of the nth item.
- */
-int
-e_reflow_model_height (EReflowModel *e_reflow_model, int n, GnomeCanvasGroup *parent)
-{
- g_return_val_if_fail (e_reflow_model != NULL, 0);
- g_return_val_if_fail (E_IS_REFLOW_MODEL (e_reflow_model), 0);
-
- return ERM_CLASS (e_reflow_model)->height (e_reflow_model, n, parent);
-}
-
-/**
- * e_reflow_model_incarnate:
- * @e_reflow_model: The e-reflow-model to operate on
- * @n: The item to create.
- * @parent: The parent GnomeCanvasItem to create a child of.
- *
- * Create a GnomeCanvasItem to represent the nth piece of data.
- *
- * Returns: the new GnomeCanvasItem.
- */
-GnomeCanvasItem *
-e_reflow_model_incarnate (EReflowModel *e_reflow_model, int n, GnomeCanvasGroup *parent)
-{
- g_return_val_if_fail (e_reflow_model != NULL, NULL);
- g_return_val_if_fail (E_IS_REFLOW_MODEL (e_reflow_model), NULL);
-
- return ERM_CLASS (e_reflow_model)->incarnate (e_reflow_model, n, parent);
-}
-
-/**
- * e_reflow_model_compare:
- * @e_reflow_model: The e-reflow-model to operate on
- * @n1: The first item to compare
- * @n2: The second item to compare
- *
- * Compares item n1 and item n2 to see which should come first.
- *
- * Returns: strcmp like semantics for the comparison value.
- */
-int
-e_reflow_model_compare (EReflowModel *e_reflow_model, int n1, int n2)
-{
-#if 0
- g_return_val_if_fail (e_reflow_model != NULL, 0);
- g_return_val_if_fail (E_IS_REFLOW_MODEL (e_reflow_model), 0);
-#endif
-
- return ERM_CLASS (e_reflow_model)->compare (e_reflow_model, n1, n2);
-}
-
-/**
- * e_reflow_model_reincarnate:
- * @e_reflow_model: The e-reflow-model to operate on
- * @n: The item to create.
- * @item: The item to reuse.
- *
- * Update item to represent the nth piece of data.
- */
-void
-e_reflow_model_reincarnate (EReflowModel *e_reflow_model, int n, GnomeCanvasItem *item)
-{
- g_return_if_fail (e_reflow_model != NULL);
- g_return_if_fail (E_IS_REFLOW_MODEL (e_reflow_model));
-
- ERM_CLASS (e_reflow_model)->reincarnate (e_reflow_model, n, item);
-}
-
-static void
-e_reflow_model_class_init (GtkObjectClass *object_class)
-{
- EReflowModelClass *klass = E_REFLOW_MODEL_CLASS(object_class);
- e_reflow_model_parent_class = gtk_type_class (PARENT_TYPE);
-
- e_reflow_model_signals [MODEL_CHANGED] =
- gtk_signal_new ("model_changed",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (EReflowModelClass, model_changed),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- e_reflow_model_signals [MODEL_ITEMS_INSERTED] =
- gtk_signal_new ("model_items_inserted",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (EReflowModelClass, model_items_inserted),
- gtk_marshal_NONE__INT_INT,
- GTK_TYPE_NONE, 2, GTK_TYPE_INT, GTK_TYPE_INT);
-
- e_reflow_model_signals [MODEL_ITEM_CHANGED] =
- gtk_signal_new ("model_item_changed",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (EReflowModelClass, model_item_changed),
- gtk_marshal_NONE__INT,
- GTK_TYPE_NONE, 1, GTK_TYPE_INT);
-
- gtk_object_class_add_signals (object_class, e_reflow_model_signals, LAST_SIGNAL);
-
- klass->set_width = NULL;
- klass->count = NULL;
- klass->height = NULL;
- klass->incarnate = NULL;
- klass->reincarnate = NULL;
-
- klass->model_changed = NULL;
- klass->model_items_inserted = NULL;
- klass->model_item_changed = NULL;
-}
-
-
-guint
-e_reflow_model_get_type (void)
-{
- static guint type = 0;
-
- if (!type)
- {
- GtkTypeInfo info =
- {
- "EReflowModel",
- sizeof (EReflowModel),
- sizeof (EReflowModelClass),
- (GtkClassInitFunc) e_reflow_model_class_init,
- NULL,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- type = gtk_type_unique (PARENT_TYPE, &info);
- }
-
- return type;
-}
-
-#if d(!)0
-static void
-print_tabs (void)
-{
- int i;
- for (i = 0; i < depth; i++)
- g_print("\t");
-}
-#endif
-
-/**
- * e_reflow_model_changed:
- * @e_reflow_model: the reflow model to notify of the change
- *
- * Use this function to notify any views of this reflow model that
- * the contents of the reflow model have changed. This will emit
- * the signal "model_changed" on the @e_reflow_model object.
- *
- * It is preferable to use the e_reflow_model_item_changed() signal to
- * notify of smaller changes than to invalidate the entire model, as
- * the views might have ways of caching the information they render
- * from the model.
- */
-void
-e_reflow_model_changed (EReflowModel *e_reflow_model)
-{
- g_return_if_fail (e_reflow_model != NULL);
- g_return_if_fail (E_IS_REFLOW_MODEL (e_reflow_model));
-
- d(print_tabs());
- d(g_print("Emitting model_changed on model 0x%p.\n", e_reflow_model));
- d(depth++);
- gtk_signal_emit (GTK_OBJECT (e_reflow_model),
- e_reflow_model_signals [MODEL_CHANGED]);
- d(depth--);
-}
-
-/**
- * e_reflow_model_items_inserted:
- * @e_reflow_model: The model changed.
- * @position: The position the items were insert in.
- * @count: The number of items inserted.
- *
- * Use this function to notify any views of the reflow model that a number of items have been inserted.
- **/
-void
-e_reflow_model_items_inserted (EReflowModel *e_reflow_model, int position, int count)
-{
- g_return_if_fail (e_reflow_model != NULL);
- g_return_if_fail (E_IS_REFLOW_MODEL (e_reflow_model));
-
- d(print_tabs());
- d(g_print("Emitting items_inserted on model 0x%p, position=%d, count=%d.\n", e_reflow_model, position, count));
- d(depth++);
- gtk_signal_emit (GTK_OBJECT (e_reflow_model),
- e_reflow_model_signals [MODEL_ITEMS_INSERTED], position, count);
- d(depth--);
-}
-
-/**
- * e_reflow_model_item_changed:
- * @e_reflow_model: the reflow model to notify of the change
- * @item: the item that was changed in the model.
- *
- * Use this function to notify any views of the reflow model that the
- * contents of item @item have changed in model such that the height
- * has changed or the item needs to be reincarnated. This function
- * will emit the "model_item_changed" signal on the @e_reflow_model
- * object
- */
-void
-e_reflow_model_item_changed (EReflowModel *e_reflow_model, int n)
-{
- g_return_if_fail (e_reflow_model != NULL);
- g_return_if_fail (E_IS_REFLOW_MODEL (e_reflow_model));
-
- d(print_tabs());
- d(g_print("Emitting item_changed on model 0x%p, n=%d.\n", e_reflow_model, n));
- d(depth++);
- gtk_signal_emit (GTK_OBJECT (e_reflow_model),
- e_reflow_model_signals [MODEL_ITEM_CHANGED], n);
- d(depth--);
-}
diff --git a/widgets/misc/e-reflow-model.h b/widgets/misc/e-reflow-model.h
deleted file mode 100644
index db26335a35..0000000000
--- a/widgets/misc/e-reflow-model.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_REFLOW_MODEL_H_
-#define _E_REFLOW_MODEL_H_
-
-#include <gtk/gtkobject.h>
-#include <libgnomeui/gnome-canvas.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define E_REFLOW_MODEL_TYPE (e_reflow_model_get_type ())
-#define E_REFLOW_MODEL(o) (GTK_CHECK_CAST ((o), E_REFLOW_MODEL_TYPE, EReflowModel))
-#define E_REFLOW_MODEL_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_REFLOW_MODEL_TYPE, EReflowModelClass))
-#define E_IS_REFLOW_MODEL(o) (GTK_CHECK_TYPE ((o), E_REFLOW_MODEL_TYPE))
-#define E_IS_REFLOW_MODEL_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_REFLOW_MODEL_TYPE))
-
-typedef struct {
- GtkObject base;
-} EReflowModel;
-
-typedef struct {
- GtkObjectClass parent_class;
-
- /*
- * Virtual methods
- */
- void (*set_width) (EReflowModel *etm, int width);
-
- int (*count) (EReflowModel *etm);
- int (*height) (EReflowModel *etm, int n, GnomeCanvasGroup *parent);
- GnomeCanvasItem *(*incarnate) (EReflowModel *etm, int n, GnomeCanvasGroup *parent);
- int (*compare) (EReflowModel *etm, int n1, int n2);
- void (*reincarnate) (EReflowModel *etm, int n, GnomeCanvasItem *item);
-
- /*
- * Signals
- */
-
- /*
- * These all come after the change has been made.
- * Major structural changes: model_changed
- * Changes only in an item: item_changed
- */
- void (*model_changed) (EReflowModel *etm);
- void (*model_items_inserted) (EReflowModel *etm, int position, int count);
- void (*model_item_changed) (EReflowModel *etm, int n);
-} EReflowModelClass;
-
-GtkType e_reflow_model_get_type (void);
-
-/**/
-void e_reflow_model_set_width (EReflowModel *e_reflow_model,
- int width);
-int e_reflow_model_count (EReflowModel *e_reflow_model);
-int e_reflow_model_height (EReflowModel *e_reflow_model,
- int n,
- GnomeCanvasGroup *parent);
-GnomeCanvasItem *e_reflow_model_incarnate (EReflowModel *e_reflow_model,
- int n,
- GnomeCanvasGroup *parent);
-int e_reflow_model_compare (EReflowModel *e_reflow_model,
- int n1,
- int n2);
-void e_reflow_model_reincarnate (EReflowModel *e_reflow_model,
- int n,
- GnomeCanvasItem *item);
-
-/*
- * Routines for emitting signals on the e_reflow
- */
-void e_reflow_model_changed (EReflowModel *e_reflow_model);
-void e_reflow_model_items_inserted (EReflowModel *e_reflow_model,
- int position,
- int count);
-void e_reflow_model_item_changed (EReflowModel *e_reflow_model,
- int n);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_REFLOW_MODEL_H_ */
diff --git a/widgets/misc/e-reflow.c b/widgets/misc/e-reflow.c
deleted file mode 100644
index a2842f7f6f..0000000000
--- a/widgets/misc/e-reflow.c
+++ /dev/null
@@ -1,1263 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-reflow.c
- * Copyright (C) 2000, 2001 Ximian, Inc.
- * Author: Chris Lahey <clahey@helixcode.com>
- *
- * This library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-
-#include "e-reflow.h"
-
-#include <math.h>
-#include <gdk/gdkkeysyms.h>
-#include "e-canvas-utils.h"
-#include "e-canvas.h"
-#include "gal/e-text/e-text.h"
-#include "gal/util/e-util.h"
-#include <gtk/gtksignal.h>
-#include "e-selection-model-simple.h"
-
-#include <string.h>
-
-static gboolean e_reflow_event (GnomeCanvasItem *item, GdkEvent *event);
-static void e_reflow_realize (GnomeCanvasItem *item);
-static void e_reflow_unrealize (GnomeCanvasItem *item);
-static void e_reflow_draw (GnomeCanvasItem *item, GdkDrawable *drawable,
- int x, int y, int width, int height);
-static void e_reflow_update (GnomeCanvasItem *item, double affine[6], ArtSVP *clip_path, gint flags);
-static double e_reflow_point (GnomeCanvasItem *item, double x, double y, int cx, int cy, GnomeCanvasItem **actual_item);
-static void e_reflow_reflow (GnomeCanvasItem *item, int flags);
-static void set_empty(EReflow *reflow);
-
-static void e_reflow_resize_children (GnomeCanvasItem *item);
-
-#define E_REFLOW_DIVIDER_WIDTH 2
-#define E_REFLOW_BORDER_WIDTH 7
-#define E_REFLOW_FULL_GUTTER (E_REFLOW_DIVIDER_WIDTH + E_REFLOW_BORDER_WIDTH * 2)
-
-static GnomeCanvasGroupClass *parent_class = NULL;
-
-/* The arguments we take */
-enum {
- ARG_0,
- ARG_MINIMUM_WIDTH,
- ARG_WIDTH,
- ARG_HEIGHT,
- ARG_EMPTY_MESSAGE,
- ARG_MODEL,
-};
-
-enum {
- SELECTION_EVENT,
- LAST_SIGNAL
-};
-
-static guint signals [LAST_SIGNAL] = {0, };
-
-static gint
-er_compare (int i1, int i2, gpointer user_data)
-{
- EReflow *reflow = user_data;
- return e_reflow_model_compare (reflow->model, i1, i2);
-}
-
-static gint
-e_reflow_pick_line (EReflow *reflow, double x)
-{
- x += E_REFLOW_BORDER_WIDTH + E_REFLOW_DIVIDER_WIDTH;
- x /= reflow->column_width + E_REFLOW_FULL_GUTTER;
- return x;
-}
-
-static int
-er_find_item (EReflow *reflow, GnomeCanvasItem *item)
-{
- int i;
- for (i = 0; i < reflow->count; i++) {
- if (reflow->items[i] == item)
- return i;
- }
- return -1;
-}
-
-static void
-e_reflow_resize_children (GnomeCanvasItem *item)
-{
- EReflow *reflow;
- int i;
- int count;
-
- reflow = E_REFLOW (item);
-
- count = reflow->count;
- for (i = 0; i < count; i++) {
- if (reflow->items[i])
- gnome_canvas_item_set(reflow->items[i],
- "width", (double) reflow->column_width,
- NULL);
- }
-}
-
-static void
-e_reflow_update_selection (EReflow *reflow)
-{
- int i;
- int count;
-
- count = reflow->count;
- for (i = 0; i < count; i++) {
- if (reflow->items[i]) {
- gtk_object_set(GTK_OBJECT(reflow->items[i]),
- "selected", e_selection_model_is_row_selected(E_SELECTION_MODEL(reflow->selection), i),
- NULL);
- } else if (e_selection_model_is_row_selected (E_SELECTION_MODEL (reflow->selection), i)) {
- reflow->items[i] = e_reflow_model_incarnate (reflow->model, i, GNOME_CANVAS_GROUP (reflow));
- gtk_object_set (GTK_OBJECT (reflow->items[i]),
- "selected", e_selection_model_is_row_selected(E_SELECTION_MODEL(reflow->selection), i),
- "width", (double) reflow->column_width,
- NULL);
- }
- }
-}
-
-static void
-selection_changed (ESelectionModel *selection, EReflow *reflow)
-{
- e_reflow_update_selection (reflow);
-}
-
-static void
-incarnate (EReflow *reflow)
-{
- int column_width;
- int first_column;
- int last_column;
- int first_cell;
- int last_cell;
- int i;
- GtkAdjustment *adjustment = gtk_layout_get_hadjustment (GTK_LAYOUT (GNOME_CANVAS_ITEM (reflow)->canvas));
-
- column_width = reflow->column_width;
-
- first_column = adjustment->value - 1 + E_REFLOW_BORDER_WIDTH;
- first_column /= column_width + E_REFLOW_FULL_GUTTER;
-
- last_column = adjustment->value + adjustment->page_size + 1 - E_REFLOW_BORDER_WIDTH - E_REFLOW_DIVIDER_WIDTH;
- last_column /= column_width + E_REFLOW_FULL_GUTTER;
- last_column ++;
-
- if (first_column >= 0 && first_column < reflow->column_count)
- first_cell = reflow->columns[first_column];
- else
- first_cell = 0;
-
- if (last_column >= 0 && last_column < reflow->column_count)
- last_cell = reflow->columns[last_column];
- else
- last_cell = reflow->count;
-
- for (i = first_cell; i < last_cell; i++) {
- int unsorted = e_sorter_sorted_to_model (E_SORTER (reflow->sorter), i);
- if (reflow->items[unsorted] == NULL) {
- if (reflow->model) {
- reflow->items[unsorted] = e_reflow_model_incarnate (reflow->model, unsorted, GNOME_CANVAS_GROUP (reflow));
- gtk_object_set (GTK_OBJECT (reflow->items[unsorted]),
- "selected", e_selection_model_is_row_selected(E_SELECTION_MODEL(reflow->selection), unsorted),
- "width", (double) reflow->column_width,
- NULL);
- }
- }
- }
- reflow->incarnate_idle_id = 0;
-}
-
-static gboolean
-invoke_incarnate (gpointer user_data)
-{
- EReflow *reflow = user_data;
- incarnate (reflow);
- return FALSE;
-}
-
-static void
-queue_incarnate (EReflow *reflow)
-{
- if (reflow->incarnate_idle_id == 0)
- reflow->incarnate_idle_id =
- g_idle_add_full (25, invoke_incarnate, reflow, NULL);
-}
-
-static void
-reflow_columns (EReflow *reflow)
-{
- GSList *list;
- int count;
- int i;
- int column_count;
- double running_height;
-
- g_free (reflow->columns);
- reflow->column_count = 0;
- reflow->columns = NULL;
-
- list = NULL;
-
- running_height = E_REFLOW_BORDER_WIDTH;
- column_count = 1;
-
- count = reflow->count;
- for (i = 0; i < count; i++) {
- int unsorted = e_sorter_sorted_to_model (E_SORTER (reflow->sorter), i);
- if (reflow->heights[unsorted] == -1) {
- if (reflow->model)
- reflow->heights[unsorted] = e_reflow_model_height (reflow->model, unsorted, GNOME_CANVAS_GROUP (reflow));
- else
- reflow->heights[unsorted] = 0;
- }
- if (i != 0 && running_height + reflow->heights[unsorted] + E_REFLOW_BORDER_WIDTH > reflow->height) {
- list = g_slist_prepend (list, GINT_TO_POINTER(i));
- column_count ++;
- running_height = E_REFLOW_BORDER_WIDTH * 2 + reflow->heights[2];
- } else
- running_height += reflow->heights[unsorted] + E_REFLOW_BORDER_WIDTH;
- }
-
- reflow->column_count = column_count;
- reflow->columns = g_new (int, column_count);
- column_count --;
- for (; column_count > 0; column_count--) {
- GSList *to_free;
- reflow->columns[column_count] = GPOINTER_TO_INT(list->data);
- to_free = list;
- list = list->next;
- g_slist_free_1 (to_free);
- }
- reflow->columns[0] = 0;
-
- queue_incarnate (reflow);
-
- reflow->need_reflow_columns = FALSE;
-}
-
-static void
-item_changed (EReflowModel *model, int i, EReflow *reflow)
-{
- if (i < 0 || i >= reflow->count)
- return;
-
- reflow->heights[i] = -1;
- if (reflow->items[i] != NULL)
- e_reflow_model_reincarnate (model, i, reflow->items[i]);
- e_sorter_array_clean (reflow->sorter);
- reflow->need_reflow_columns = TRUE;
- e_canvas_item_request_reflow(GNOME_CANVAS_ITEM (reflow));
-}
-
-static void
-items_inserted (EReflowModel *model, int position, int count, EReflow *reflow)
-{
- int i;
- int oldcount;
- if (position < 0 || position > reflow->count)
- return;
-
- oldcount = reflow->count;
-
- reflow->count += count;
-
- if (reflow->count > reflow->allocated_count) {
- while (reflow->count > reflow->allocated_count)
- reflow->allocated_count += 256;
- reflow->heights = g_renew (int, reflow->heights, reflow->allocated_count);
- reflow->items = g_renew (GnomeCanvasItem *, reflow->items, reflow->allocated_count);
- }
- memmove (reflow->heights + position + count, reflow->heights + position, (reflow->count - position - count) * sizeof (int));
- memmove (reflow->items + position + count, reflow->items + position, (reflow->count - position - count) * sizeof (GnomeCanvasItem *));
- for (i = position; i < position + count; i++) {
- reflow->items[i] = 0;
- reflow->heights[i] = -1;
- }
-
- e_selection_model_simple_set_row_count (E_SELECTION_MODEL_SIMPLE (reflow->selection), reflow->count);
- if (position == oldcount)
- e_sorter_array_append (reflow->sorter, count);
- else
- e_sorter_array_set_count (reflow->sorter, reflow->count);
- reflow->need_reflow_columns = TRUE;
- set_empty (reflow);
- e_canvas_item_request_reflow(GNOME_CANVAS_ITEM (reflow));
-}
-
-static void
-model_changed (EReflowModel *model, EReflow *reflow)
-{
- int i;
- int count;
- int oldcount;
-
- count = reflow->count;
- oldcount = count;
-
- for (i = 0; i < count; i++) {
- if (reflow->items[i])
- gtk_object_destroy (GTK_OBJECT (reflow->items[i]));
- }
- g_free (reflow->items);
- g_free (reflow->heights);
- reflow->count = e_reflow_model_count (model);
- reflow->allocated_count = reflow->count;
- reflow->items = g_new (GnomeCanvasItem *, reflow->count);
- reflow->heights = g_new (int, reflow->count);
-
- count = reflow->count;
- for (i = 0; i < count; i++) {
- reflow->items[i] = 0;
- reflow->heights[i] = -1;
- }
-
- e_selection_model_simple_set_row_count (E_SELECTION_MODEL_SIMPLE (reflow->selection), count);
- e_sorter_array_set_count (reflow->sorter, reflow->count);
-
- reflow->need_reflow_columns = TRUE;
- if (oldcount > reflow->count)
- reflow_columns (reflow);
- set_empty (reflow);
- e_canvas_item_request_reflow(GNOME_CANVAS_ITEM (reflow));
-}
-
-static void
-set_empty(EReflow *reflow)
-{
- if (reflow->count == 0) {
- if (reflow->empty_text) {
- if (reflow->empty_message) {
- gnome_canvas_item_set(reflow->empty_text,
- "width", reflow->minimum_width,
- "text", reflow->empty_message,
- NULL);
- e_canvas_item_move_absolute(reflow->empty_text,
- reflow->minimum_width / 2,
- 0);
- } else {
- gtk_object_destroy(GTK_OBJECT(reflow->empty_text));
- reflow->empty_text = NULL;
- }
- } else {
- if (reflow->empty_message)
- reflow->empty_text =
- gnome_canvas_item_new(GNOME_CANVAS_GROUP(reflow),
- e_text_get_type(),
- "anchor", GTK_ANCHOR_N,
- "width", reflow->minimum_width,
- "clip", TRUE,
- "use_ellipsis", TRUE,
- "font_gdk", GTK_WIDGET(GNOME_CANVAS_ITEM(reflow)->canvas)->style->font,
- "fill_color", "black",
- "justification", GTK_JUSTIFY_CENTER,
- "text", reflow->empty_message,
- "draw_background", FALSE,
- NULL);
- e_canvas_item_move_absolute(reflow->empty_text,
- reflow->minimum_width / 2,
- 0);
- }
- } else {
- if (reflow->empty_text) {
- gtk_object_destroy(GTK_OBJECT(reflow->empty_text));
- reflow->empty_text = NULL;
- }
- }
-}
-
-static void
-disconnect_model (EReflow *reflow)
-{
- if (reflow->model == NULL)
- return;
-
- gtk_signal_disconnect (GTK_OBJECT (reflow->model),
- reflow->model_changed_id);
- gtk_signal_disconnect (GTK_OBJECT (reflow->model),
- reflow->model_items_inserted_id);
- gtk_signal_disconnect (GTK_OBJECT (reflow->model),
- reflow->model_item_changed_id);
- gtk_object_unref (GTK_OBJECT (reflow->model));
-
- reflow->model_changed_id = 0;
- reflow->model_items_inserted_id = 0;
- reflow->model_item_changed_id = 0;
- reflow->model = NULL;
-}
-
-static void
-disconnect_selection (EReflow *reflow)
-{
- if (reflow->selection == NULL)
- return;
-
- gtk_signal_disconnect (GTK_OBJECT (reflow->selection),
- reflow->selection_changed_id);
- gtk_object_unref (GTK_OBJECT (reflow->selection));
-
- reflow->selection_changed_id = 0;
- reflow->selection = NULL;
-}
-
-static void
-connect_model (EReflow *reflow, EReflowModel *model)
-{
- if (reflow->model != NULL)
- disconnect_model (reflow);
-
- if (model == NULL)
- return;
-
- reflow->model = model;
- gtk_object_ref (GTK_OBJECT (reflow->model));
- reflow->model_changed_id =
- gtk_signal_connect (GTK_OBJECT (reflow->model), "model_changed",
- GTK_SIGNAL_FUNC (model_changed), reflow);
- reflow->model_items_inserted_id =
- gtk_signal_connect (GTK_OBJECT (reflow->model), "model_items_inserted",
- GTK_SIGNAL_FUNC (items_inserted), reflow);
- reflow->model_item_changed_id =
- gtk_signal_connect (GTK_OBJECT (reflow->model), "model_item_changed",
- GTK_SIGNAL_FUNC (item_changed), reflow);
-}
-
-static void
-adjustment_changed (GtkAdjustment *adjustment, EReflow *reflow)
-{
- incarnate (reflow);
-}
-
-static void
-disconnect_adjustment (EReflow *reflow)
-{
- if (reflow->adjustment == NULL)
- return;
-
- gtk_signal_disconnect (GTK_OBJECT (reflow->adjustment),
- reflow->adjustment_changed_id);
- gtk_signal_disconnect (GTK_OBJECT (reflow->adjustment),
- reflow->adjustment_value_changed_id);
-
- gtk_object_unref (GTK_OBJECT (reflow->adjustment));
-
- reflow->adjustment_changed_id = 0;
- reflow->adjustment_value_changed_id = 0;
- reflow->adjustment = NULL;
-}
-
-static void
-connect_adjustment (EReflow *reflow, GtkAdjustment *adjustment)
-{
- if (reflow->adjustment != NULL)
- disconnect_adjustment (reflow);
-
- if (adjustment == NULL)
- return;
-
- reflow->adjustment = adjustment;
- reflow->adjustment_changed_id =
- gtk_signal_connect (GTK_OBJECT (adjustment), "changed",
- adjustment_changed, reflow);
- reflow->adjustment_value_changed_id =
- gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed",
- adjustment_changed, reflow);
- gtk_object_ref (GTK_OBJECT (adjustment));
-}
-
-static void
-set_scroll_adjustments (GtkLayout *layout, GtkAdjustment *hadj, GtkAdjustment *vadj, EReflow *reflow)
-{
- connect_adjustment (reflow, hadj);
-}
-
-static void
-disconnect_set_adjustment (EReflow *reflow)
-{
- gtk_signal_disconnect (GTK_OBJECT (GNOME_CANVAS_ITEM (reflow)->canvas),
- reflow->set_scroll_adjustments_id);
- reflow->set_scroll_adjustments_id = 0;
-}
-
-static void
-connect_set_adjustment (EReflow *reflow)
-{
- reflow->set_scroll_adjustments_id =
- gtk_signal_connect (GTK_OBJECT (GNOME_CANVAS_ITEM (reflow)->canvas),
- "set_scroll_adjustments",
- GTK_SIGNAL_FUNC (set_scroll_adjustments), reflow);
-}
-
-
-
-
-/* Virtual functions */
-static void
-e_reflow_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- GnomeCanvasItem *item;
- EReflow *reflow;
-
- item = GNOME_CANVAS_ITEM (o);
- reflow = E_REFLOW (o);
-
- switch (arg_id){
- case ARG_HEIGHT:
- reflow->height = GTK_VALUE_DOUBLE (*arg);
- reflow->need_reflow_columns = TRUE;
- e_canvas_item_request_reflow(item);
- break;
- case ARG_MINIMUM_WIDTH:
- reflow->minimum_width = GTK_VALUE_DOUBLE (*arg);
- if (GNOME_CANVAS_ITEM_REALIZED & GTK_OBJECT_FLAGS(o))
- set_empty(reflow);
- e_canvas_item_request_reflow(item);
- break;
- case ARG_EMPTY_MESSAGE:
- g_free(reflow->empty_message);
- reflow->empty_message = g_strdup(GTK_VALUE_STRING (*arg));
- if (GNOME_CANVAS_ITEM_REALIZED & GTK_OBJECT_FLAGS(o))
- set_empty(reflow);
- break;
- case ARG_MODEL:
- connect_model (reflow, (EReflowModel *) GTK_VALUE_OBJECT (*arg));
- break;
- }
-}
-
-static void
-e_reflow_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- EReflow *reflow;
-
- reflow = E_REFLOW (object);
-
- switch (arg_id) {
- case ARG_MINIMUM_WIDTH:
- GTK_VALUE_DOUBLE (*arg) = reflow->minimum_width;
- break;
- case ARG_WIDTH:
- GTK_VALUE_DOUBLE (*arg) = reflow->width;
- break;
- case ARG_HEIGHT:
- GTK_VALUE_DOUBLE (*arg) = reflow->height;
- break;
- case ARG_EMPTY_MESSAGE:
- GTK_VALUE_STRING (*arg) = g_strdup(reflow->empty_message);
- break;
- case ARG_MODEL:
- GTK_VALUE_OBJECT (*arg) = (GtkObject *) reflow->model;
- break;
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
-
-static void
-e_reflow_destroy (GtkObject *object)
-{
- EReflow *reflow = E_REFLOW(object);
-
- g_free (reflow->items);
- g_free (reflow->heights);
- g_free (reflow->columns);
-
- reflow->items = NULL;
- reflow->heights = NULL;
- reflow->columns = NULL;
- reflow->count = 0;
- reflow->allocated_count = 0;
-
- if (reflow->incarnate_idle_id != 0)
- g_source_remove (reflow->incarnate_idle_id);
-
- disconnect_model (reflow);
- disconnect_selection (reflow);
-
- g_free(reflow->empty_message);
-
- GTK_OBJECT_CLASS(parent_class)->destroy (object);
-}
-
-static void
-e_reflow_realize (GnomeCanvasItem *item)
-{
- EReflow *reflow;
- GnomeCanvasGroup *group;
- GtkAdjustment *adjustment;
- int count;
- int i;
-
- reflow = E_REFLOW (item);
- group = GNOME_CANVAS_GROUP (item);
-
- if (GNOME_CANVAS_ITEM_CLASS(parent_class)->realize)
- (* GNOME_CANVAS_ITEM_CLASS(parent_class)->realize) (item);
-
- reflow->arrow_cursor = gdk_cursor_new (GDK_SB_H_DOUBLE_ARROW);
- reflow->default_cursor = gdk_cursor_new (GDK_LEFT_PTR);
-
- count = reflow->count;
- for(i = 0; i < count; i++) {
- if (reflow->items[i])
- gnome_canvas_item_set(reflow->items[i],
- "width", (double) reflow->column_width,
- NULL);
- }
-
- set_empty(reflow);
-
- reflow->need_reflow_columns = TRUE;
- e_canvas_item_request_reflow(item);
-
- adjustment = gtk_layout_get_hadjustment(GTK_LAYOUT(item->canvas));
-
- connect_set_adjustment (reflow);
- connect_adjustment (reflow, adjustment);
-
- adjustment->step_increment = (reflow->column_width + E_REFLOW_FULL_GUTTER) / 2;
- adjustment->page_increment = adjustment->page_size - adjustment->step_increment;
- gtk_adjustment_changed(adjustment);
-
- if (!item->canvas->aa) {
- }
-}
-
-static void
-e_reflow_unrealize (GnomeCanvasItem *item)
-{
- EReflow *reflow;
-
- reflow = E_REFLOW (item);
-
- if (!item->canvas->aa) {
- }
-
- gdk_cursor_destroy (reflow->arrow_cursor);
- gdk_cursor_destroy (reflow->default_cursor);
- reflow->arrow_cursor = NULL;
- reflow->default_cursor = NULL;
-
- g_free (reflow->columns);
- reflow->columns = NULL;
-
- disconnect_set_adjustment (reflow);
- disconnect_adjustment (reflow);
-
- if (GNOME_CANVAS_ITEM_CLASS(parent_class)->unrealize)
- (* GNOME_CANVAS_ITEM_CLASS(parent_class)->unrealize) (item);
-}
-
-static gboolean
-e_reflow_event (GnomeCanvasItem *item, GdkEvent *event)
-{
- EReflow *reflow;
- int return_val = FALSE;
-
- reflow = E_REFLOW (item);
-
- switch( event->type )
- {
- case GDK_KEY_PRESS:
- return_val = e_selection_model_key_press(reflow->selection, (GdkEventKey *) event);
- break;
-#if 0
- if (event->key.keyval == GDK_Tab ||
- event->key.keyval == GDK_KP_Tab ||
- event->key.keyval == GDK_ISO_Left_Tab) {
- int i;
- int count;
- count = reflow->count;
- for (i = 0; i < count; i++) {
- int unsorted = e_sorter_sorted_to_model (E_SORTER (reflow->sorter), i);
- GnomeCanvasItem *item = reflow->items[unsorted];
- EFocus has_focus;
- if (item) {
- gtk_object_get(GTK_OBJECT(item),
- "has_focus", &has_focus,
- NULL);
- if (has_focus) {
- if (event->key.state & GDK_SHIFT_MASK) {
- if (i == 0)
- return 0;
- i--;
- } else {
- if (i == count - 1)
- return 0;
- i++;
- }
-
- unsorted = e_sorter_sorted_to_model (E_SORTER (reflow->sorter), i);
- if (reflow->items[unsorted] == NULL) {
- reflow->items[unsorted] = e_reflow_model_incarnate (reflow->model, unsorted, GNOME_CANVAS_GROUP (reflow));
- }
-
- item = reflow->items[unsorted];
- gnome_canvas_item_set(item,
- "has_focus", (event->key.state & GDK_SHIFT_MASK) ? E_FOCUS_END : E_FOCUS_START,
- NULL);
- return 1;
- }
- }
- }
- }
-#endif
- break;
- case GDK_BUTTON_PRESS:
- switch(event->button.button)
- {
- case 1:
- {
- GdkEventButton *button = (GdkEventButton *) event;
- double n_x, max_x;
- n_x = button->x;
- n_x += E_REFLOW_BORDER_WIDTH + E_REFLOW_DIVIDER_WIDTH;
- n_x = fmod(n_x,(reflow->column_width + E_REFLOW_FULL_GUTTER));
-
- max_x = E_REFLOW_BORDER_WIDTH;
- max_x += (reflow->column_width + E_REFLOW_FULL_GUTTER) * reflow->column_count;
- if ( button->y >= E_REFLOW_BORDER_WIDTH && button->y <= reflow->height - E_REFLOW_BORDER_WIDTH && n_x < E_REFLOW_FULL_GUTTER && max_x > button->x ) {
- reflow->which_column_dragged = e_reflow_pick_line(reflow, button->x);
- reflow->start_x = reflow->which_column_dragged * (reflow->column_width + E_REFLOW_FULL_GUTTER) - E_REFLOW_DIVIDER_WIDTH / 2;
- reflow->temp_column_width = reflow->column_width;
- reflow->column_drag = TRUE;
-
- gnome_canvas_item_grab (item,
- GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK,
- reflow->arrow_cursor,
- button->time);
-
- reflow->previous_temp_column_width = -1;
- reflow->need_column_resize = TRUE;
- gnome_canvas_item_request_update(item);
- return TRUE;
- }
- }
- break;
- case 4:
- {
- GtkAdjustment *adjustment = gtk_layout_get_hadjustment(GTK_LAYOUT(item->canvas));
- gdouble new_value = adjustment->value;
- new_value -= adjustment->step_increment;
- gtk_adjustment_set_value(adjustment, new_value);
- }
- break;
- case 5:
- {
- GtkAdjustment *adjustment = gtk_layout_get_hadjustment(GTK_LAYOUT(item->canvas));
- gdouble new_value = adjustment->value;
- new_value += adjustment->step_increment;
- if ( new_value > adjustment->upper - adjustment->page_size )
- new_value = adjustment->upper - adjustment->page_size;
- gtk_adjustment_set_value(adjustment, new_value);
- }
- break;
- }
- break;
- case GDK_BUTTON_RELEASE:
- if (reflow->column_drag) {
- gdouble old_width = reflow->column_width;
- GdkEventButton *button = (GdkEventButton *) event;
- GtkAdjustment *adjustment = gtk_layout_get_hadjustment(GTK_LAYOUT(item->canvas));
- reflow->temp_column_width = reflow->column_width +
- (button->x - reflow->start_x)/(reflow->which_column_dragged - e_reflow_pick_line(reflow, adjustment->value));
- if ( reflow->temp_column_width < 50 )
- reflow->temp_column_width = 50;
- reflow->column_drag = FALSE;
- if ( old_width != reflow->temp_column_width ) {
- gtk_adjustment_set_value(adjustment, adjustment->value + e_reflow_pick_line(reflow, adjustment->value) * (reflow->temp_column_width - reflow->column_width));
- reflow->column_width = reflow->temp_column_width;
- adjustment->step_increment = (reflow->column_width + E_REFLOW_FULL_GUTTER) / 2;
- adjustment->page_increment = adjustment->page_size - adjustment->step_increment;
- gtk_adjustment_changed(adjustment);
- e_reflow_resize_children(item);
- e_canvas_item_request_reflow(item);
- }
- reflow->need_column_resize = TRUE;
- gnome_canvas_item_request_update(item);
- gnome_canvas_item_ungrab (item, button->time);
- return TRUE;
- }
- break;
- case GDK_MOTION_NOTIFY:
- if (reflow->column_drag) {
- double old_width = reflow->temp_column_width;
- GdkEventMotion *motion = (GdkEventMotion *) event;
- GtkAdjustment *adjustment = gtk_layout_get_hadjustment(GTK_LAYOUT(item->canvas));
- reflow->temp_column_width = reflow->column_width +
- (motion->x - reflow->start_x)/(reflow->which_column_dragged - e_reflow_pick_line(reflow, adjustment->value));
- if (reflow->temp_column_width < 50)
- reflow->temp_column_width = 50;
- if (old_width != reflow->temp_column_width) {
- reflow->need_column_resize = TRUE;
- gnome_canvas_item_request_update(item);
- }
- return TRUE;
- } else {
- GdkEventMotion *motion = (GdkEventMotion *) event;
- double n_x, max_x;
-
- n_x = motion->x;
- n_x += E_REFLOW_BORDER_WIDTH + E_REFLOW_DIVIDER_WIDTH;
- n_x = fmod(n_x,(reflow->column_width + E_REFLOW_FULL_GUTTER));
-
- max_x = E_REFLOW_BORDER_WIDTH;
- max_x += (reflow->column_width + E_REFLOW_FULL_GUTTER) * reflow->column_count;
-
- if ( motion->y >= E_REFLOW_BORDER_WIDTH && motion->y <= reflow->height - E_REFLOW_BORDER_WIDTH && n_x < E_REFLOW_FULL_GUTTER && max_x > motion->x) {
- if ( reflow->default_cursor_shown ) {
- gdk_window_set_cursor(GTK_WIDGET(item->canvas)->window, reflow->arrow_cursor);
- reflow->default_cursor_shown = FALSE;
- }
- } else
- if ( ! reflow->default_cursor_shown ) {
- gdk_window_set_cursor(GTK_WIDGET(item->canvas)->window, reflow->default_cursor);
- reflow->default_cursor_shown = TRUE;
- }
-
- }
- break;
- case GDK_ENTER_NOTIFY:
- if (!reflow->column_drag) {
- GdkEventCrossing *crossing = (GdkEventCrossing *) event;
- double n_x, max_x;
- n_x = crossing->x;
- n_x += E_REFLOW_BORDER_WIDTH + E_REFLOW_DIVIDER_WIDTH;
- n_x = fmod(n_x,(reflow->column_width + E_REFLOW_FULL_GUTTER));
-
- max_x = E_REFLOW_BORDER_WIDTH;
- max_x += (reflow->column_width + E_REFLOW_FULL_GUTTER) * reflow->column_count;
- if ( crossing->y >= E_REFLOW_BORDER_WIDTH && crossing->y <= reflow->height - E_REFLOW_BORDER_WIDTH && n_x < E_REFLOW_FULL_GUTTER && max_x > crossing->x) {
- if ( reflow->default_cursor_shown ) {
- gdk_window_set_cursor(GTK_WIDGET(item->canvas)->window, reflow->arrow_cursor);
- reflow->default_cursor_shown = FALSE;
- }
- }
- }
- break;
- case GDK_LEAVE_NOTIFY:
- if (!reflow->column_drag) {
- GdkEventCrossing *crossing = (GdkEventCrossing *) event;
- double n_x;
- n_x = crossing->x;
- n_x += E_REFLOW_BORDER_WIDTH + E_REFLOW_DIVIDER_WIDTH;
- n_x = fmod(n_x,(reflow->column_width + E_REFLOW_FULL_GUTTER));
- if ( !( crossing->y >= E_REFLOW_BORDER_WIDTH && crossing->y <= reflow->height - E_REFLOW_BORDER_WIDTH && n_x < E_REFLOW_FULL_GUTTER ) ) {
- if ( ! reflow->default_cursor_shown ) {
- gdk_window_set_cursor(GTK_WIDGET(item->canvas)->window, reflow->default_cursor);
- reflow->default_cursor_shown = TRUE;
- }
- }
- }
- break;
- default:
- break;
- }
- if (return_val)
- return return_val;
- else if (GNOME_CANVAS_ITEM_CLASS( parent_class )->event)
- return (* GNOME_CANVAS_ITEM_CLASS( parent_class )->event) (item, event);
- else
- return FALSE;
-}
-
-static void e_reflow_draw (GnomeCanvasItem *item, GdkDrawable *drawable,
- int x, int y, int width, int height)
-{
- int x_rect, y_rect, width_rect, height_rect;
- gdouble running_width;
- EReflow *reflow = E_REFLOW(item);
- int i;
- double column_width;
-
- if (GNOME_CANVAS_ITEM_CLASS(parent_class)->draw)
- GNOME_CANVAS_ITEM_CLASS(parent_class)->draw (item, drawable, x, y, width, height);
- column_width = reflow->column_width;
- running_width = E_REFLOW_BORDER_WIDTH + column_width + E_REFLOW_BORDER_WIDTH;
- x_rect = running_width;
- y_rect = E_REFLOW_BORDER_WIDTH;
- width_rect = E_REFLOW_DIVIDER_WIDTH;
- height_rect = reflow->height - (E_REFLOW_BORDER_WIDTH * 2);
-
- /* Compute first column to draw. */
- i = x;
- i /= column_width + E_REFLOW_FULL_GUTTER;
- running_width += i * (column_width + E_REFLOW_FULL_GUTTER);
-
- for ( ; i < reflow->column_count; i++) {
- if ( running_width > x + width )
- break;
- x_rect = running_width;
- gtk_paint_flat_box(GTK_WIDGET(item->canvas)->style,
- drawable,
- GTK_STATE_ACTIVE,
- GTK_SHADOW_NONE,
- NULL,
- GTK_WIDGET(item->canvas),
- "reflow",
- x_rect - x,
- y_rect - y,
- width_rect,
- height_rect);
- running_width += E_REFLOW_DIVIDER_WIDTH + E_REFLOW_BORDER_WIDTH + column_width + E_REFLOW_BORDER_WIDTH;
- }
- if (reflow->column_drag) {
- int start_line = e_reflow_pick_line(reflow,
- gtk_layout_get_hadjustment(GTK_LAYOUT(item->canvas))->value);
- i = x - start_line * (column_width + E_REFLOW_FULL_GUTTER);
- running_width = start_line * (column_width + E_REFLOW_FULL_GUTTER);
- column_width = reflow->temp_column_width;
- running_width -= start_line * (column_width + E_REFLOW_FULL_GUTTER);
- i += start_line * (column_width + E_REFLOW_FULL_GUTTER);
- running_width += E_REFLOW_BORDER_WIDTH + column_width + E_REFLOW_BORDER_WIDTH;
- x_rect = running_width;
- y_rect = E_REFLOW_BORDER_WIDTH;
- width_rect = E_REFLOW_DIVIDER_WIDTH;
- height_rect = reflow->height - (E_REFLOW_BORDER_WIDTH * 2);
-
- /* Compute first column to draw. */
- i /= column_width + E_REFLOW_FULL_GUTTER;
- running_width += i * (column_width + E_REFLOW_FULL_GUTTER);
-
- for ( ; i < reflow->column_count; i++) {
- if ( running_width > x + width )
- break;
- x_rect = running_width;
- gdk_draw_rectangle(drawable,
- GTK_WIDGET(item->canvas)->style->fg_gc[GTK_STATE_NORMAL],
- TRUE,
- x_rect - x,
- y_rect - y,
- width_rect - 1,
- height_rect - 1);
- running_width += E_REFLOW_DIVIDER_WIDTH + E_REFLOW_BORDER_WIDTH + column_width + E_REFLOW_BORDER_WIDTH;
- }
- }
-}
-
-static void
-e_reflow_update (GnomeCanvasItem *item, double affine[6], ArtSVP *clip_path, gint flags)
-{
- EReflow *reflow;
- double x0, x1, y0, y1;
-
- reflow = E_REFLOW (item);
-
- if (GNOME_CANVAS_ITEM_CLASS(parent_class)->update)
- GNOME_CANVAS_ITEM_CLASS(parent_class)->update (item, affine, clip_path, flags);
-
- x0 = item->x1;
- y0 = item->y1;
- x1 = item->x2;
- y1 = item->y2;
- if ( x1 < x0 + reflow->width )
- x1 = x0 + reflow->width;
- if ( y1 < y0 + reflow->height )
- y1 = y0 + reflow->height;
- item->x2 = x1;
- item->y2 = y1;
-
- if (reflow->need_height_update) {
- x0 = item->x1;
- y0 = item->y1;
- x1 = item->x2;
- y1 = item->y2;
- if ( x0 > 0 )
- x0 = 0;
- if ( y0 > 0 )
- y0 = 0;
- if ( x1 < E_REFLOW(item)->width )
- x1 = E_REFLOW(item)->width;
- if ( x1 < E_REFLOW(item)->height )
- x1 = E_REFLOW(item)->height;
-
- gnome_canvas_request_redraw(item->canvas, x0, y0, x1, y1);
- reflow->need_height_update = FALSE;
- } else if (reflow->need_column_resize) {
- int x_rect, y_rect, width_rect, height_rect;
- int start_line = e_reflow_pick_line(reflow,
- gtk_layout_get_hadjustment(GTK_LAYOUT(item->canvas))->value);
- gdouble running_width;
- int i;
- double column_width;
-
- if ( reflow->previous_temp_column_width != -1 ) {
- running_width = start_line * (reflow->column_width + E_REFLOW_FULL_GUTTER);
- column_width = reflow->previous_temp_column_width;
- running_width -= start_line * (column_width + E_REFLOW_FULL_GUTTER);
- running_width += E_REFLOW_BORDER_WIDTH + column_width + E_REFLOW_BORDER_WIDTH;
- y_rect = E_REFLOW_BORDER_WIDTH;
- width_rect = E_REFLOW_DIVIDER_WIDTH;
- height_rect = reflow->height - (E_REFLOW_BORDER_WIDTH * 2);
-
- for ( i = 0; i < reflow->column_count; i++) {
- x_rect = running_width;
- gnome_canvas_request_redraw(item->canvas, x_rect, y_rect, x_rect + width_rect, y_rect + height_rect);
- running_width += E_REFLOW_DIVIDER_WIDTH + E_REFLOW_BORDER_WIDTH + column_width + E_REFLOW_BORDER_WIDTH;
- }
- }
-
- if ( reflow->temp_column_width != -1 ) {
- running_width = start_line * (reflow->column_width + E_REFLOW_FULL_GUTTER);
- column_width = reflow->temp_column_width;
- running_width -= start_line * (column_width + E_REFLOW_FULL_GUTTER);
- running_width += E_REFLOW_BORDER_WIDTH + column_width + E_REFLOW_BORDER_WIDTH;
- y_rect = E_REFLOW_BORDER_WIDTH;
- width_rect = E_REFLOW_DIVIDER_WIDTH;
- height_rect = reflow->height - (E_REFLOW_BORDER_WIDTH * 2);
-
- for ( i = 0; i < reflow->column_count; i++) {
- x_rect = running_width;
- gnome_canvas_request_redraw(item->canvas, x_rect, y_rect, x_rect + width_rect, y_rect + height_rect);
- running_width += E_REFLOW_DIVIDER_WIDTH + E_REFLOW_BORDER_WIDTH + column_width + E_REFLOW_BORDER_WIDTH;
- }
- }
-
- reflow->previous_temp_column_width = reflow->temp_column_width;
- reflow->need_column_resize = FALSE;
- }
-}
-
-static double
-e_reflow_point (GnomeCanvasItem *item,
- double x, double y, int cx, int cy,
- GnomeCanvasItem **actual_item)
-{
- double distance = 1;
-
- *actual_item = NULL;
-
- if (GNOME_CANVAS_ITEM_CLASS(parent_class)->point)
- distance = GNOME_CANVAS_ITEM_CLASS(parent_class)->point (item, x, y, cx, cy, actual_item);
- if ((int) (distance * item->canvas->pixels_per_unit + 0.5) <= item->canvas->close_enough && *actual_item)
- return distance;
-
- *actual_item = item;
- return 0;
-#if 0
- if (y >= E_REFLOW_BORDER_WIDTH && y <= reflow->height - E_REFLOW_BORDER_WIDTH) {
- float n_x;
- n_x = x;
- n_x += E_REFLOW_BORDER_WIDTH + E_REFLOW_DIVIDER_WIDTH;
- n_x = fmod(n_x, (reflow->column_width + E_REFLOW_FULL_GUTTER));
- if (n_x < E_REFLOW_FULL_GUTTER) {
- *actual_item = item;
- return 0;
- }
- }
- return distance;
-#endif
-}
-
-static void
-e_reflow_reflow( GnomeCanvasItem *item, int flags )
-{
- EReflow *reflow = E_REFLOW(item);
- gdouble old_width;
- gdouble running_width;
- gdouble running_height;
- int next_column;
- int i;
-
- if (! (GTK_OBJECT_FLAGS (reflow) & GNOME_CANVAS_ITEM_REALIZED))
- return;
-
- if (reflow->need_reflow_columns) {
- reflow_columns (reflow);
- }
-
- old_width = reflow->width;
-
- running_width = E_REFLOW_BORDER_WIDTH;
- running_height = E_REFLOW_BORDER_WIDTH;
-
- next_column = 1;
-
- for (i = 0; i < reflow->count; i++) {
- int unsorted = e_sorter_sorted_to_model (E_SORTER (reflow->sorter), i);
- if (next_column < reflow->column_count && i == reflow->columns[next_column]) {
- running_height = E_REFLOW_BORDER_WIDTH;
- running_width += reflow->column_width + E_REFLOW_FULL_GUTTER;
- next_column ++;
- }
-
- if (reflow->items[unsorted])
- e_canvas_item_move_absolute(GNOME_CANVAS_ITEM(reflow->items[unsorted]),
- (double) running_width,
- (double) running_height);
- running_height += reflow->heights[unsorted] + E_REFLOW_BORDER_WIDTH;
- }
- reflow->width = running_width + reflow->column_width + E_REFLOW_BORDER_WIDTH;
- if ( reflow->width < reflow->minimum_width )
- reflow->width = reflow->minimum_width;
- if (old_width != reflow->width)
- e_canvas_item_request_parent_reflow(item);
-}
-
-static int
-e_reflow_selection_event_real (EReflow *reflow, GnomeCanvasItem *item, GdkEvent *event)
-{
- int row;
- int return_val = TRUE;
- switch (event->type) {
- case GDK_BUTTON_PRESS:
- switch (event->button.button) {
- case 1: /* Fall through. */
- case 2:
- row = er_find_item (reflow, item);
- e_selection_model_do_something(reflow->selection, row, 0, event->button.state);
- break;
- case 3:
- row = er_find_item (reflow, item);
- e_selection_model_maybe_do_something(reflow->selection, row, 0, event->button.state);
- break;
- default:
- return_val = FALSE;
- break;
- }
- break;
- case GDK_KEY_PRESS:
- return_val = e_selection_model_key_press(reflow->selection, (GdkEventKey *) event);
- break;
- default:
- return_val = FALSE;
- break;
- }
-
- return return_val;
-}
-
-static void
-e_reflow_class_init (EReflowClass *klass)
-{
- GtkObjectClass *object_class;
- GnomeCanvasItemClass *item_class;
-
- object_class = (GtkObjectClass*) klass;
- item_class = (GnomeCanvasItemClass *) klass;
-
- parent_class = gtk_type_class (gnome_canvas_group_get_type ());
-
- gtk_object_add_arg_type ("EReflow::minimum_width", GTK_TYPE_DOUBLE,
- GTK_ARG_READWRITE, ARG_MINIMUM_WIDTH);
- gtk_object_add_arg_type ("EReflow::width", GTK_TYPE_DOUBLE,
- GTK_ARG_READABLE, ARG_WIDTH);
- gtk_object_add_arg_type ("EReflow::height", GTK_TYPE_DOUBLE,
- GTK_ARG_READWRITE, ARG_HEIGHT);
- gtk_object_add_arg_type ("EReflow::empty_message", GTK_TYPE_STRING,
- GTK_ARG_READWRITE, ARG_EMPTY_MESSAGE);
- gtk_object_add_arg_type ("EReflow::model", E_REFLOW_MODEL_TYPE,
- GTK_ARG_READWRITE, ARG_MODEL);
-
- signals [SELECTION_EVENT] =
- gtk_signal_new ("selection_event",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (EReflowClass, selection_event),
- e_marshal_INT__OBJECT_POINTER,
- GTK_TYPE_INT, 2, GTK_TYPE_OBJECT, GTK_TYPE_GDK_EVENT);
-
- gtk_object_class_add_signals (object_class, signals, LAST_SIGNAL);
-
- object_class->set_arg = e_reflow_set_arg;
- object_class->get_arg = e_reflow_get_arg;
- object_class->destroy = e_reflow_destroy;
-
- /* GnomeCanvasItem method overrides */
- item_class->event = e_reflow_event;
- item_class->realize = e_reflow_realize;
- item_class->unrealize = e_reflow_unrealize;
- item_class->draw = e_reflow_draw;
- item_class->update = e_reflow_update;
- item_class->point = e_reflow_point;
-
- klass->selection_event = e_reflow_selection_event_real;
-}
-
-static void
-e_reflow_init (EReflow *reflow)
-{
- reflow->model = NULL;
- reflow->items = NULL;
- reflow->heights = NULL;
- reflow->count = 0;
-
- reflow->columns = NULL;
- reflow->column_count = 0;
-
- reflow->empty_text = NULL;
- reflow->empty_message = NULL;
-
- reflow->minimum_width = 10;
- reflow->width = 10;
- reflow->height = 10;
-
- reflow->column_width = 150;
-
- reflow->column_drag = FALSE;
-
- reflow->need_height_update = FALSE;
- reflow->need_column_resize = FALSE;
-
- reflow->default_cursor_shown = TRUE;
- reflow->arrow_cursor = NULL;
- reflow->default_cursor = NULL;
-
- reflow->incarnate_idle_id = 0;
-
- reflow->selection = E_SELECTION_MODEL (e_selection_model_simple_new());
- reflow->sorter = e_sorter_array_new (er_compare, reflow);
-
- gtk_object_set (GTK_OBJECT (reflow->selection),
- "sorter", reflow->sorter,
- NULL);
-
- reflow->selection_changed_id =
- gtk_signal_connect(GTK_OBJECT(reflow->selection), "selection_changed",
- GTK_SIGNAL_FUNC(selection_changed), reflow);
-
- e_canvas_item_set_reflow_callback(GNOME_CANVAS_ITEM(reflow), e_reflow_reflow);
-}
-
-GtkType
-e_reflow_get_type (void)
-{
- static GtkType type = 0;
-
- if (!type) {
- static const GtkTypeInfo info = {
- "EReflow",
- sizeof (EReflow),
- sizeof (EReflowClass),
- (GtkClassInitFunc) e_reflow_class_init,
- (GtkObjectInitFunc) e_reflow_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- type = gtk_type_unique (gnome_canvas_group_get_type (), &info);
- }
-
- return type;
-}
diff --git a/widgets/misc/e-reflow.h b/widgets/misc/e-reflow.h
deleted file mode 100644
index 9ecbb5c529..0000000000
--- a/widgets/misc/e-reflow.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* e-reflow.h
- * Copyright (C) 2000 Helix Code, Inc.
- * Author: Chris Lahey <clahey@helixcode.com>
- *
- * This library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-#ifndef __E_REFLOW_H__
-#define __E_REFLOW_H__
-
-#include <libgnomeui/gnome-canvas.h>
-#include <gal/widgets/e-reflow-model.h>
-#include <gal/widgets/e-selection-model.h>
-#include <gal/util/e-sorter-array.h>
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-/* EReflow - A canvas item container.
- *
- * The following arguments are available:
- *
- * name type read/write description
- * --------------------------------------------------------------------------------
- * minimum_width double RW minimum width of the reflow. width >= minimum_width
- * width double R width of the reflow
- * height double RW height of the reflow
- */
-
-#define E_REFLOW_TYPE (e_reflow_get_type ())
-#define E_REFLOW(obj) (GTK_CHECK_CAST ((obj), E_REFLOW_TYPE, EReflow))
-#define E_REFLOW_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_REFLOW_TYPE, EReflowClass))
-#define E_IS_REFLOW(obj) (GTK_CHECK_TYPE ((obj), E_REFLOW_TYPE))
-#define E_IS_REFLOW_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), E_REFLOW_TYPE))
-
-
-typedef struct EReflowPriv EReflowPriv;
-
-typedef struct _EReflow EReflow;
-typedef struct _EReflowClass EReflowClass;
-
-struct _EReflow
-{
- GnomeCanvasGroup parent;
-
- /* item specific fields */
- EReflowModel *model;
- guint model_changed_id;
- guint model_items_inserted_id;
- guint model_item_changed_id;
-
- ESelectionModel *selection;
- guint selection_changed_id;
- ESorterArray *sorter;
-
- GtkAdjustment *adjustment;
- guint adjustment_changed_id;
- guint adjustment_value_changed_id;
- guint set_scroll_adjustments_id;
-
- int *heights;
- GnomeCanvasItem **items;
- int count;
- int allocated_count;
-
- int *columns;
- gint column_count; /* Number of columnns */
-
- GnomeCanvasItem *empty_text;
- gchar *empty_message;
-
- double minimum_width;
- double width;
- double height;
-
- double column_width;
-
- int incarnate_idle_id;
-
- /* These are all for when the column is being dragged. */
- gdouble start_x;
- gint which_column_dragged;
- double temp_column_width;
- double previous_temp_column_width;
-
- guint column_drag : 1;
-
- guint need_height_update : 1;
- guint need_column_resize : 1;
- guint need_reflow_columns : 1;
-
- guint default_cursor_shown : 1;
- GdkCursor *arrow_cursor;
- GdkCursor *default_cursor;
-};
-
-struct _EReflowClass
-{
- GnomeCanvasGroupClass parent_class;
-
- int (*selection_event) (EReflow *reflow, GnomeCanvasItem *item, GdkEvent *event);
-};
-
-/*
- * To be added to a reflow, an item must have the argument "width" as
- * a Read/Write argument and "height" as a Read Only argument. It
- * should also do an ECanvas parent reflow request if its size
- * changes.
- */
-GtkType e_reflow_get_type (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __E_REFLOW_H__ */
diff --git a/widgets/misc/e-search-bar.c b/widgets/misc/e-search-bar.c
deleted file mode 100644
index 4d563208a2..0000000000
--- a/widgets/misc/e-search-bar.c
+++ /dev/null
@@ -1,525 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-search-bar.c
- *
- * Copyright (C) 2000, 2001 Ximian, Inc.
- *
- * Authors:
- * Chris Lahey <clahey@ximian.com>
- * Ettore Perazzoli <ettore@ximian.com>
- *
- * This library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-
-#include <stdio.h> /* printf */
-#include <gtk/gtkdrawingarea.h>
-#include <gtk/gtkeventbox.h>
-#include <gtk/gtkmenuitem.h>
-#include <gtk/gtkoptionmenu.h>
-
-#include <gal/widgets/e-unicode.h>
-#include <gal/widgets/e-gui-utils.h>
-
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-
-#include "e-search-bar.h"
-#include "e-dropdown-button.h"
-
-
-enum {
- QUERY_CHANGED,
- MENU_ACTIVATED,
-
- LAST_SIGNAL
-};
-
-static gint esb_signals [LAST_SIGNAL] = { 0, };
-
-static GtkHBoxClass *parent_class = NULL;
-
-/* The arguments we take */
-enum {
- ARG_0,
- ARG_OPTION_CHOICE,
- ARG_TEXT,
-};
-
-
-/* Signals. */
-
-static void
-emit_query_changed (ESearchBar *esb)
-{
- gtk_signal_emit(GTK_OBJECT (esb),
- esb_signals [QUERY_CHANGED]);
-}
-
-static void
-emit_menu_activated (ESearchBar *esb, int item)
-{
- gtk_signal_emit(GTK_OBJECT (esb),
- esb_signals [MENU_ACTIVATED],
- item);
-}
-
-
-/* Callbacks. */
-
-static void
-menubar_activated_cb (GtkWidget *widget, ESearchBar *esb)
-{
- int id;
-
- id = GPOINTER_TO_INT(gtk_object_get_data (GTK_OBJECT (widget), "EsbMenuId"));
-
- emit_menu_activated(esb, id);
-}
-
-static void
-option_activated_cb (GtkWidget *widget,
- ESearchBar *esb)
-{
- int id;
-
- id = GPOINTER_TO_INT (gtk_object_get_data (GTK_OBJECT (widget), "EsbChoiceId"));
-
- esb->option_choice = id;
- emit_query_changed (esb);
-}
-
-static void
-entry_activated_cb (GtkWidget *widget,
- ESearchBar *esb)
-{
- emit_query_changed (esb);
-}
-
-
-/* Widgetry creation. */
-
-static void add_dropdown(ESearchBar *esb, ESearchBarItem *items)
-{
- GtkWidget *menu = esb->dropdown_menu;
- GtkWidget *item;
-
- if (items->text) {
- char *str;
- str = _(items->text);
- if (str == items->text) {
- /* It may be english string, or utf8 rule name */
- item = e_utf8_gtk_menu_item_new_with_label (GTK_MENU (menu), str);
- } else
- item = gtk_menu_item_new_with_label (str);
- }
- else
- item = gtk_menu_item_new();
-
- gtk_widget_show(item);
- gtk_menu_append (GTK_MENU (menu), item);
- gtk_object_set_data (GTK_OBJECT (item), "EsbMenuId", GINT_TO_POINTER(items->id));
- gtk_signal_connect (GTK_OBJECT (item), "activate",
- GTK_SIGNAL_FUNC (menubar_activated_cb),
- esb);
-}
-
-static void
-set_dropdown (ESearchBar *esb,
- ESearchBarItem *items)
-{
- GtkWidget *menu;
- GtkWidget *dropdown;
- int i;
-
- menu = esb->dropdown_menu = gtk_menu_new ();
- for (i = 0; items[i].id != -1; i++)
- add_dropdown(esb, items+i);
-
- gtk_widget_show_all (menu);
-
- dropdown = e_dropdown_button_new (_("Sear_ch"), GTK_MENU (menu));
- GTK_WIDGET_UNSET_FLAGS (dropdown, GTK_CAN_FOCUS);
- gtk_widget_show (dropdown);
-
- if (esb->dropdown_holder == NULL) {
-
- /* So, GtkOptionMenu is stupid; it adds a 1-pixel-wide empty border
- around the button for no reason. So we add a 1-pixel-wide border
- around the button as well, by using an event box. */
-
- esb->dropdown_holder = gtk_event_box_new ();
- gtk_container_set_border_width (GTK_CONTAINER (esb->dropdown_holder), 1);
- esb->dropdown = dropdown;
- gtk_container_add (GTK_CONTAINER (esb->dropdown_holder), esb->dropdown);
- gtk_widget_show (esb->dropdown_holder);
-
- gtk_box_pack_start(GTK_BOX(esb), esb->dropdown_holder, FALSE, FALSE, 0);
- } else {
- gtk_widget_destroy(esb->dropdown);
- esb->dropdown = dropdown;
- gtk_container_add (GTK_CONTAINER (esb->dropdown_holder), esb->dropdown);
- }
-}
-
-static void
-set_option(ESearchBar *esb, ESearchBarItem *items)
-{
- GtkWidget *menu;
- GtkRequisition dropdown_requisition;
- GtkRequisition option_requisition;
- int i;
-
- if (esb->option) {
- gtk_widget_destroy(esb->option_menu);
- } else {
- esb->option = gtk_option_menu_new();
- gtk_widget_show(esb->option);
- gtk_box_pack_start(GTK_BOX(esb), esb->option, FALSE, FALSE, 0);
- }
-
- esb->option_menu = menu = gtk_menu_new ();
- for (i = 0; items[i].id != -1; i++) {
- GtkWidget *item;
-
- if (items[i].text) {
- char *str;
- str = _(items[i].text);
- if (str == items[i].text) {
- /* It may be english string, or utf8 rule name */
- item = e_utf8_gtk_menu_item_new_with_label (GTK_MENU (menu), str);
- } else
- item = gtk_menu_item_new_with_label (str);
- }
- else
- item = gtk_menu_item_new();
-
- gtk_menu_append (GTK_MENU (menu), item);
-
- gtk_object_set_data (GTK_OBJECT (item), "EsbChoiceId", GINT_TO_POINTER(items[i].id));
-
- gtk_signal_connect (GTK_OBJECT (item), "activate",
- GTK_SIGNAL_FUNC (option_activated_cb),
- esb);
- }
- gtk_widget_show_all (menu);
-
- gtk_option_menu_set_menu (GTK_OPTION_MENU (esb->option), menu);
- gtk_option_menu_set_history (GTK_OPTION_MENU (esb->option), 0);
-
- gtk_widget_set_sensitive (esb->option, TRUE);
-
- /* Set the minimum height of this widget to that of the dropdown
- button, for a better look. */
- g_assert (esb->dropdown != NULL);
-
- gtk_widget_size_request (esb->dropdown, &dropdown_requisition);
- gtk_widget_size_request (esb->option, &option_requisition);
-
- gtk_container_set_border_width (GTK_CONTAINER (esb->dropdown), GTK_CONTAINER (esb->option)->border_width);
-}
-
-static void
-add_entry (ESearchBar *esb)
-{
- esb->entry = gtk_entry_new();
- gtk_signal_connect (GTK_OBJECT (esb->entry), "activate",
- GTK_SIGNAL_FUNC (entry_activated_cb), esb);
- gtk_widget_show(esb->entry);
- gtk_box_pack_start(GTK_BOX(esb), esb->entry, TRUE, TRUE, 0);
-}
-
-static void
-add_spacer (ESearchBar *esb)
-{
- GtkWidget *spacer;
-
- spacer = gtk_drawing_area_new();
- gtk_widget_show(spacer);
- gtk_box_pack_start(GTK_BOX(esb), spacer, FALSE, FALSE, 0);
-
- gtk_widget_set_usize(spacer, 19, 1);
-}
-
-static int
-find_id(GtkWidget *menu, int idin, const char *type, GtkWidget **widget)
-{
- GList *l = GTK_MENU_SHELL(menu)->children;
- int row = -1, i = 0, id;
-
- if (widget)
- *widget = NULL;
- while (l) {
- id = GPOINTER_TO_INT(gtk_object_get_data(l->data, type));
- printf("comparing id %d to query %d\n", id, idin);
- if (id == idin) {
- row = i;
- if (widget)
- *widget = l->data;
- break;
- }
- i++;
- l = l->next;
- }
- return row;
-}
-
-
-/* GtkObject methods. */
-
-static void
-impl_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- ESearchBar *esb = E_SEARCH_BAR(object);
-
- switch (arg_id) {
- case ARG_OPTION_CHOICE:
- GTK_VALUE_ENUM (*arg) = e_search_bar_get_option_choice (esb);
- break;
-
- case ARG_TEXT:
- GTK_VALUE_STRING (*arg) = e_search_bar_get_text (esb);
- break;
-
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
-
-static void
-impl_set_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- ESearchBar *esb = E_SEARCH_BAR(object);
- int row;
-
- switch (arg_id) {
- case ARG_OPTION_CHOICE:
- esb->option_choice = GTK_VALUE_ENUM(*arg);
- row = find_id(esb->option_menu, esb->option_choice, "EsbChoiceId", NULL);
- if (row == -1)
- row = 0;
- gtk_option_menu_set_history (GTK_OPTION_MENU (esb->option), row);
- emit_query_changed (esb);
- break;
-
- case ARG_TEXT:
- e_utf8_gtk_editable_set_text(GTK_EDITABLE(esb->entry), GTK_VALUE_STRING (*arg));
- emit_query_changed (esb);
- break;
-
- default:
- break;
- }
-}
-
-static void
-impl_destroy (GtkObject *object)
-{
- if (GTK_OBJECT_CLASS(parent_class)->destroy)
- GTK_OBJECT_CLASS(parent_class)->destroy (object);
-}
-
-
-static void
-class_init (ESearchBarClass *klass)
-{
- GtkObjectClass *object_class;
-
- object_class = GTK_OBJECT_CLASS(klass);
-
- parent_class = gtk_type_class (gtk_hbox_get_type ());
-
- object_class->set_arg = impl_set_arg;
- object_class->get_arg = impl_get_arg;
- object_class->destroy = impl_destroy;
-
- klass->set_menu = set_dropdown;
- klass->set_option = set_option;
-
- gtk_object_add_arg_type ("ESearchBar::option_choice", GTK_TYPE_ENUM,
- GTK_ARG_READWRITE, ARG_OPTION_CHOICE);
- gtk_object_add_arg_type ("ESearchBar::text", GTK_TYPE_STRING,
- GTK_ARG_READWRITE, ARG_TEXT);
-
- esb_signals [QUERY_CHANGED] =
- gtk_signal_new ("query_changed",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ESearchBarClass, query_changed),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- esb_signals [MENU_ACTIVATED] =
- gtk_signal_new ("menu_activated",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ESearchBarClass, menu_activated),
- gtk_marshal_NONE__INT,
- GTK_TYPE_NONE, 1, GTK_TYPE_INT);
-
- gtk_object_class_add_signals (object_class, esb_signals, LAST_SIGNAL);
-}
-
-static void
-init (ESearchBar *esb)
-{
- esb->dropdown = NULL;
- esb->option = NULL;
- esb->entry = NULL;
-
- esb->option_choice = 0;
-}
-
-
-/* Object construction. */
-
-void
-e_search_bar_construct (ESearchBar *search_bar,
- ESearchBarItem *menu_items,
- ESearchBarItem *option_items)
-{
- g_return_if_fail (search_bar != NULL);
- g_return_if_fail (E_IS_SEARCH_BAR (search_bar));
- g_return_if_fail (menu_items != NULL);
- g_return_if_fail (option_items != NULL);
-
- gtk_box_set_spacing (GTK_BOX (search_bar), 1);
-
- e_search_bar_set_menu(search_bar, menu_items);
-
- e_search_bar_set_option(search_bar, option_items);
-
- add_entry (search_bar);
-
- add_spacer (search_bar);
-}
-
-void
-e_search_bar_set_menu(ESearchBar *search_bar, ESearchBarItem *menu_items)
-{
- g_return_if_fail (search_bar != NULL);
- g_return_if_fail (E_IS_SEARCH_BAR (search_bar));
- g_return_if_fail (menu_items != NULL);
-
- ((ESearchBarClass *)((GtkObject *)search_bar)->klass)->set_menu(search_bar, menu_items);
-}
-
-void
-e_search_bar_add_menu(ESearchBar *search_bar, ESearchBarItem *menu_item)
-{
- g_return_if_fail (search_bar != NULL);
- g_return_if_fail (E_IS_SEARCH_BAR (search_bar));
- g_return_if_fail (menu_item != NULL);
-
- add_dropdown(search_bar, menu_item);
-}
-
-void
-e_search_bar_set_option(ESearchBar *search_bar, ESearchBarItem *option_items)
-{
- g_return_if_fail (search_bar != NULL);
- g_return_if_fail (E_IS_SEARCH_BAR (search_bar));
- g_return_if_fail (option_items != NULL);
-
- ((ESearchBarClass *)((GtkObject *)search_bar)->klass)->set_option(search_bar, option_items);
-}
-
-GtkWidget *
-e_search_bar_new (ESearchBarItem *menu_items,
- ESearchBarItem *option_items)
-{
- GtkWidget *widget;
-
- g_return_val_if_fail (menu_items != NULL, NULL);
- g_return_val_if_fail (option_items != NULL, NULL);
-
- widget = GTK_WIDGET (gtk_type_new (e_search_bar_get_type ()));
-
- e_search_bar_construct (E_SEARCH_BAR (widget), menu_items, option_items);
-
- return widget;
-}
-
-void
-e_search_bar_set_menu_sensitive(ESearchBar *esb, int id, gboolean state)
-{
- int row;
- GtkWidget *widget;
-
- row = find_id(esb->dropdown_menu, id, "EsbMenuId", &widget);
- if (row != -1)
- gtk_widget_set_sensitive(widget, state);
-}
-
-GtkType
-e_search_bar_get_type (void)
-{
- static GtkType type = 0;
-
- if (!type) {
- static const GtkTypeInfo info = {
- "ESearchBar",
- sizeof (ESearchBar),
- sizeof (ESearchBarClass),
- (GtkClassInitFunc) class_init,
- (GtkObjectInitFunc) init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- type = gtk_type_unique (gtk_hbox_get_type (), &info);
- }
-
- return type;
-}
-
-/**
- * e_search_bar_get_option_choice:
- * @search_bar: A search bar.
- *
- * Queries the currently selected item in the options menu of a search bar.
- *
- * Return value: Identifier of the selected item in the options menu.
- **/
-int
-e_search_bar_get_option_choice (ESearchBar *search_bar)
-{
- g_return_val_if_fail (search_bar != NULL, -1);
- g_return_val_if_fail (E_IS_SEARCH_BAR (search_bar), -1);
-
- return search_bar->option_choice;
-}
-
-/**
- * e_search_bar_get_text:
- * @search_bar: A search bar.
- *
- * Queries the text of the entry line in a search bar.
- *
- * Return value: The text string that is in the entry line of the search bar.
- * This must be freed using g_free().
- **/
-char *
-e_search_bar_get_text (ESearchBar *search_bar)
-{
- g_return_val_if_fail (search_bar != NULL, NULL);
- g_return_val_if_fail (E_IS_SEARCH_BAR (search_bar), NULL);
-
- return e_utf8_gtk_editable_get_text (GTK_EDITABLE (search_bar->entry));
-}
diff --git a/widgets/misc/e-search-bar.h b/widgets/misc/e-search-bar.h
deleted file mode 100644
index 8b262a0f4f..0000000000
--- a/widgets/misc/e-search-bar.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* e-search-bar.h
- * Copyright (C) 2000 Helix Code, Inc.
- * Author: Chris Lahey <clahey@helixcode.com>
- *
- * This library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-#ifndef __E_SEARCH_BAR_H__
-#define __E_SEARCH_BAR_H__
-
-#include <gtk/gtkhbox.h>
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-/* ESearchBar - A card displaying information about a contact.
- *
- * The following arguments are available:
- *
- * name type read/write description
- * ---------------------------------------------------------------------------------
- * option_choice int RW Which option choice is currently selected.
- * text string RW Text in the entry box.
- */
-
-#define E_SEARCH_BAR_TYPE (e_search_bar_get_type ())
-#define E_SEARCH_BAR(obj) (GTK_CHECK_CAST ((obj), E_SEARCH_BAR_TYPE, ESearchBar))
-#define E_SEARCH_BAR_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_SEARCH_BAR_TYPE, ESearchBarClass))
-#define E_IS_SEARCH_BAR(obj) (GTK_CHECK_TYPE ((obj), E_SEARCH_BAR_TYPE))
-#define E_IS_SEARCH_BAR_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), E_SEARCH_BAR_TYPE))
-
-typedef struct {
- char *text;
- int id;
-} ESearchBarItem;
-
-typedef struct _ESearchBar ESearchBar;
-typedef struct _ESearchBarClass ESearchBarClass;
-
-struct _ESearchBar
-{
- GtkHBox parent;
-
- /* item specific fields */
- GtkWidget *dropdown;
- GtkWidget *option;
- GtkWidget *entry;
-
- /* PRIVATE */
- GtkWidget *dropdown_holder; /* holds the dropdown */
- GtkWidget *option_menu;
- GtkWidget *dropdown_menu;
-
- int option_choice;
-};
-
-struct _ESearchBarClass
-{
- GtkHBoxClass parent_class;
-
- void (*set_menu) (ESearchBar *, ESearchBarItem *);
- void (*set_option) (ESearchBar *, ESearchBarItem *);
-
- void (*query_changed) (ESearchBar *search);
- void (*menu_activated) (ESearchBar *search, int item);
-};
-
-
-GtkType e_search_bar_get_type (void);
-void e_search_bar_set_menu (ESearchBar *search_bar, ESearchBarItem *menu_items);
-void e_search_bar_add_menu (ESearchBar *search_bar, ESearchBarItem *menu_item);
-
-void e_search_bar_set_option (ESearchBar *search_bar, ESearchBarItem *option_items);
-void e_search_bar_construct (ESearchBar *search_bar,
- ESearchBarItem *menu_items,
- ESearchBarItem *option_items);
-GtkWidget *e_search_bar_new (ESearchBarItem *menu_items,
- ESearchBarItem *option_items);
-
-void e_search_bar_set_menu_sensitive(ESearchBar *search_bar, int id, gboolean state);
-
-int e_search_bar_get_option_choice (ESearchBar *search_bar);
-char *e_search_bar_get_text (ESearchBar *search_bar);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* __E_SEARCH_BAR_H__ */
diff --git a/widgets/misc/e-selection-model-array.c b/widgets/misc/e-selection-model-array.c
deleted file mode 100644
index de8265ce2a..0000000000
--- a/widgets/misc/e-selection-model-array.c
+++ /dev/null
@@ -1,466 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-selection-model-array.c: a Selection Model
- *
- * Author:
- * Christopher James Lahey <clahey@ximian.com>
- *
- * (C) 2000, 2001 Ximian, Inc.
- */
-#include <config.h>
-#include <gtk/gtksignal.h>
-#include "e-selection-model-array.h"
-#include "gal/util/e-util.h"
-
-#define ESMA_CLASS(e) ((ESelectionModelArrayClass *)((GtkObject *)e)->klass)
-
-#define PARENT_TYPE e_selection_model_get_type ()
-
-static ESelectionModelClass *parent_class;
-
-enum {
- ARG_0,
- ARG_CURSOR_ROW,
- ARG_CURSOR_COL,
-};
-
-void
-e_selection_model_array_confirm_row_count(ESelectionModelArray *esma)
-{
- if (esma->eba == NULL) {
- int row_count = e_selection_model_array_get_row_count(esma);
- esma->eba = e_bit_array_new(row_count);
- }
-}
-
-/* FIXME: Should this deal with moving the selection if it's in single mode? */
-void
-e_selection_model_array_delete_rows(ESelectionModelArray *esma, int row, int count)
-{
- if (esma->eba) {
-
- if (E_SELECTION_MODEL(esma)->mode == GTK_SELECTION_SINGLE)
- e_bit_array_delete_single_mode(esma->eba, row, count);
- else
- e_bit_array_delete(esma->eba, row, count);
-
- if (esma->cursor_row > row + count)
- esma->cursor_row -= count;
- else if (esma->cursor_row > row)
- esma->cursor_row = row;
-
- e_selection_model_selection_changed(E_SELECTION_MODEL(esma));
- e_selection_model_cursor_changed(E_SELECTION_MODEL(esma), esma->cursor_row, esma->cursor_col);
- }
-}
-
-void
-e_selection_model_array_insert_rows(ESelectionModelArray *esma, int row, int count)
-{
- if (esma->eba) {
- e_bit_array_insert(esma->eba, row, count);
-
- if (esma->cursor_row >= row)
- esma->cursor_row += count;
-
- e_selection_model_selection_changed(E_SELECTION_MODEL(esma));
- e_selection_model_cursor_changed(E_SELECTION_MODEL(esma), esma->cursor_row, esma->cursor_col);
- }
-}
-
-void
-e_selection_model_array_move_row(ESelectionModelArray *esma, int old_row, int new_row)
-{
- ESelectionModel *esm = E_SELECTION_MODEL(esma);
-
- if (esma->eba) {
- gboolean selected = e_bit_array_value_at(esma->eba, old_row);
- gboolean cursor = (esma->cursor_row == old_row);
-
- if (old_row < esma->cursor_row && esma->cursor_row < new_row)
- esma->cursor_row --;
- else if (new_row < esma->cursor_row && esma->cursor_row < old_row)
- esma->cursor_row ++;
-
- e_bit_array_move_row(esma->eba, old_row, new_row);
-
- if (selected) {
- if (esm->mode == GTK_SELECTION_SINGLE)
- e_bit_array_select_single_row (esma->eba, new_row);
- else
- e_bit_array_change_one_row(esma->eba, new_row, TRUE);
- }
- if (cursor) {
- esma->cursor_row = new_row;
- }
- e_selection_model_selection_changed(esm);
- e_selection_model_cursor_changed(esm, esma->cursor_row, esma->cursor_col);
- }
-}
-
-static void
-esma_destroy (GtkObject *object)
-{
- ESelectionModelArray *esma;
-
- esma = E_SELECTION_MODEL_ARRAY (object);
-
- if (esma->eba) {
- gtk_object_unref(GTK_OBJECT(esma->eba));
- esma->eba = NULL;
- }
-}
-
-static void
-esma_get_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- ESelectionModelArray *esma = E_SELECTION_MODEL_ARRAY (o);
-
- switch (arg_id){
- case ARG_CURSOR_ROW:
- GTK_VALUE_INT(*arg) = esma->cursor_row;
- break;
-
- case ARG_CURSOR_COL:
- GTK_VALUE_INT(*arg) = esma->cursor_col;
- break;
- }
-}
-
-static void
-esma_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- ESelectionModel *esm = E_SELECTION_MODEL (o);
- ESelectionModelArray *esma = E_SELECTION_MODEL_ARRAY (o);
-
- switch (arg_id){
- case ARG_CURSOR_ROW:
- e_selection_model_do_something(esm, GTK_VALUE_INT(*arg), esma->cursor_col, 0);
- break;
-
- case ARG_CURSOR_COL:
- e_selection_model_do_something(esm, esma->cursor_row, GTK_VALUE_INT(*arg), 0);
- break;
- }
-}
-
-/**
- * e_selection_model_is_row_selected
- * @selection: #ESelectionModel to check
- * @n: The row to check
- *
- * This routine calculates whether the given row is selected.
- *
- * Returns: %TRUE if the given row is selected
- */
-static gboolean
-esma_is_row_selected (ESelectionModel *selection,
- gint n)
-{
- ESelectionModelArray *esma = E_SELECTION_MODEL_ARRAY(selection);
- if (esma->eba)
- return e_bit_array_value_at(esma->eba, n);
- else
- return FALSE;
-}
-
-/**
- * e_selection_model_foreach
- * @selection: #ESelectionModel to traverse
- * @callback: The callback function to call back.
- * @closure: The closure
- *
- * This routine calls the given callback function once for each
- * selected row, passing closure as the closure.
- */
-static void
-esma_foreach (ESelectionModel *selection,
- EForeachFunc callback,
- gpointer closure)
-{
- ESelectionModelArray *esma = E_SELECTION_MODEL_ARRAY(selection);
- if (esma->eba)
- e_bit_array_foreach(esma->eba, callback, closure);
-}
-
-/**
- * e_selection_model_clear
- * @selection: #ESelectionModel to clear
- *
- * This routine clears the selection to no rows selected.
- */
-static void
-esma_clear(ESelectionModel *selection)
-{
- ESelectionModelArray *esma = E_SELECTION_MODEL_ARRAY(selection);
- if (esma->eba) {
- gtk_object_unref(GTK_OBJECT(esma->eba));
- esma->eba = NULL;
- }
- esma->cursor_row = -1;
- esma->cursor_col = -1;
- e_selection_model_selection_changed(E_SELECTION_MODEL(esma));
- e_selection_model_cursor_changed(E_SELECTION_MODEL(esma), -1, -1);
-}
-
-#define PART(x,n) (((x) & (0x01010101 << n)) >> n)
-#define SECTION(x, n) (((x) >> (n * 8)) & 0xff)
-
-/**
- * e_selection_model_selected_count
- * @selection: #ESelectionModel to count
- *
- * This routine calculates the number of rows selected.
- *
- * Returns: The number of rows selected in the given model.
- */
-static gint
-esma_selected_count (ESelectionModel *selection)
-{
- ESelectionModelArray *esma = E_SELECTION_MODEL_ARRAY(selection);
- if (esma->eba)
- return e_bit_array_selected_count(esma->eba);
- else
- return 0;
-}
-
-/**
- * e_selection_model_select_all
- * @selection: #ESelectionModel to select all
- *
- * This routine selects all the rows in the given
- * #ESelectionModel.
- */
-static void
-esma_select_all (ESelectionModel *selection)
-{
- ESelectionModelArray *esma = E_SELECTION_MODEL_ARRAY(selection);
-
- e_selection_model_array_confirm_row_count(esma);
-
- e_bit_array_select_all(esma->eba);
-
- esma->cursor_col = 0;
- esma->cursor_row = 0;
- esma->selection_start_row = 0;
- e_selection_model_selection_changed(E_SELECTION_MODEL(esma));
- e_selection_model_cursor_changed(E_SELECTION_MODEL(esma), 0, 0);
-}
-
-/**
- * e_selection_model_invert_selection
- * @selection: #ESelectionModel to invert
- *
- * This routine inverts all the rows in the given
- * #ESelectionModel.
- */
-static void
-esma_invert_selection (ESelectionModel *selection)
-{
- ESelectionModelArray *esma = E_SELECTION_MODEL_ARRAY(selection);
-
- e_selection_model_array_confirm_row_count(esma);
-
- e_bit_array_invert_selection(esma->eba);
-
- esma->cursor_col = -1;
- esma->cursor_row = -1;
- esma->selection_start_row = 0;
- e_selection_model_selection_changed(E_SELECTION_MODEL(esma));
- e_selection_model_cursor_changed(E_SELECTION_MODEL(esma), -1, -1);
-}
-
-static int
-esma_row_count (ESelectionModel *selection)
-{
- ESelectionModelArray *esma = E_SELECTION_MODEL_ARRAY(selection);
- e_selection_model_array_confirm_row_count(esma);
- return e_bit_array_bit_count(esma->eba);
-}
-
-static void
-esma_change_one_row(ESelectionModel *selection, int row, gboolean grow)
-{
- ESelectionModelArray *esma = E_SELECTION_MODEL_ARRAY(selection);
- e_selection_model_array_confirm_row_count(esma);
- e_bit_array_change_one_row(esma->eba, row, grow);
-}
-
-static void
-esma_change_cursor (ESelectionModel *selection, int row, int col)
-{
- ESelectionModelArray *esma;
-
- g_return_if_fail(selection != NULL);
- g_return_if_fail(E_IS_SELECTION_MODEL(selection));
-
- esma = E_SELECTION_MODEL_ARRAY(selection);
-
- esma->cursor_row = row;
- esma->cursor_col = col;
-}
-
-static void
-esma_change_range(ESelectionModel *selection, int start, int end, gboolean grow)
-{
- int i;
- ESelectionModelArray *esma = E_SELECTION_MODEL_ARRAY(selection);
- if (start != end) {
- if (selection->sorter && e_sorter_needs_sorting(selection->sorter)) {
- for ( i = start; i < end; i++) {
- e_bit_array_change_one_row(esma->eba, e_sorter_sorted_to_model(selection->sorter, i), grow);
- }
- } else {
- e_selection_model_array_confirm_row_count(esma);
- e_bit_array_change_range(esma->eba, start, end, grow);
- }
- }
-}
-
-static int
-esma_cursor_row (ESelectionModel *selection)
-{
- ESelectionModelArray *esma = E_SELECTION_MODEL_ARRAY(selection);
- return esma->cursor_row;
-}
-
-static int
-esma_cursor_col (ESelectionModel *selection)
-{
- ESelectionModelArray *esma = E_SELECTION_MODEL_ARRAY(selection);
- return esma->cursor_col;
-}
-
-static void
-esma_select_single_row (ESelectionModel *selection, int row)
-{
- ESelectionModelArray *esma = E_SELECTION_MODEL_ARRAY(selection);
-
- e_selection_model_array_confirm_row_count(esma);
- e_bit_array_select_single_row(esma->eba, row);
-
- e_selection_model_selection_changed(E_SELECTION_MODEL(esma));
- esma->selection_start_row = row;
-}
-
-static void
-esma_toggle_single_row (ESelectionModel *selection, int row)
-{
- ESelectionModelArray *esma = E_SELECTION_MODEL_ARRAY(selection);
-
- e_selection_model_array_confirm_row_count(esma);
- e_bit_array_toggle_single_row(esma->eba, row);
-
- esma->selection_start_row = row;
- e_selection_model_selection_changed(E_SELECTION_MODEL(esma));
-}
-
-static void
-esma_move_selection_end (ESelectionModel *selection, int row)
-{
- ESelectionModelArray *esma = E_SELECTION_MODEL_ARRAY(selection);
- int old_start;
- int old_end;
- int new_start;
- int new_end;
- if (selection->sorter && e_sorter_needs_sorting(selection->sorter)) {
- old_start = MIN (e_sorter_model_to_sorted(selection->sorter, esma->selection_start_row),
- e_sorter_model_to_sorted(selection->sorter, esma->cursor_row));
- old_end = MAX (e_sorter_model_to_sorted(selection->sorter, esma->selection_start_row),
- e_sorter_model_to_sorted(selection->sorter, esma->cursor_row)) + 1;
- new_start = MIN (e_sorter_model_to_sorted(selection->sorter, esma->selection_start_row),
- e_sorter_model_to_sorted(selection->sorter, row));
- new_end = MAX (e_sorter_model_to_sorted(selection->sorter, esma->selection_start_row),
- e_sorter_model_to_sorted(selection->sorter, row)) + 1;
- } else {
- old_start = MIN (esma->selection_start_row, esma->cursor_row);
- old_end = MAX (esma->selection_start_row, esma->cursor_row) + 1;
- new_start = MIN (esma->selection_start_row, row);
- new_end = MAX (esma->selection_start_row, row) + 1;
- }
- /* This wouldn't work nearly so smoothly if one end of the selection weren't held in place. */
- if (old_start < new_start)
- esma_change_range(selection, old_start, new_start, FALSE);
- if (new_start < old_start)
- esma_change_range(selection, new_start, old_start, TRUE);
- if (old_end < new_end)
- esma_change_range(selection, old_end, new_end, TRUE);
- if (new_end < old_end)
- esma_change_range(selection, new_end, old_end, FALSE);
- e_selection_model_selection_changed(E_SELECTION_MODEL(esma));
-}
-
-static void
-esma_set_selection_end (ESelectionModel *selection, int row)
-{
- ESelectionModelArray *esma = E_SELECTION_MODEL_ARRAY(selection);
- esma_select_single_row(selection, esma->selection_start_row);
- esma->cursor_row = esma->selection_start_row;
- esma_move_selection_end(selection, row);
-}
-
-int
-e_selection_model_array_get_row_count (ESelectionModelArray *esma)
-{
- g_return_val_if_fail(esma != NULL, 0);
- g_return_val_if_fail(E_IS_SELECTION_MODEL_ARRAY(esma), 0);
-
- if (ESMA_CLASS(esma)->get_row_count)
- return ESMA_CLASS(esma)->get_row_count (esma);
- else
- return 0;
-}
-
-
-static void
-e_selection_model_array_init (ESelectionModelArray *esma)
-{
- esma->eba = NULL;
- esma->selection_start_row = 0;
- esma->cursor_row = -1;
- esma->cursor_col = -1;
-}
-
-static void
-e_selection_model_array_class_init (ESelectionModelArrayClass *klass)
-{
- GtkObjectClass *object_class;
- ESelectionModelClass *esm_class;
-
- parent_class = gtk_type_class (e_selection_model_get_type ());
-
- object_class = GTK_OBJECT_CLASS(klass);
- esm_class = E_SELECTION_MODEL_CLASS(klass);
-
- object_class->destroy = esma_destroy;
- object_class->get_arg = esma_get_arg;
- object_class->set_arg = esma_set_arg;
-
- esm_class->is_row_selected = esma_is_row_selected ;
- esm_class->foreach = esma_foreach ;
- esm_class->clear = esma_clear ;
- esm_class->selected_count = esma_selected_count ;
- esm_class->select_all = esma_select_all ;
- esm_class->invert_selection = esma_invert_selection ;
- esm_class->row_count = esma_row_count ;
-
- esm_class->change_one_row = esma_change_one_row ;
- esm_class->change_cursor = esma_change_cursor ;
- esm_class->cursor_row = esma_cursor_row ;
- esm_class->cursor_col = esma_cursor_col ;
-
- esm_class->select_single_row = esma_select_single_row ;
- esm_class->toggle_single_row = esma_toggle_single_row ;
- esm_class->move_selection_end = esma_move_selection_end ;
- esm_class->set_selection_end = esma_set_selection_end ;
-
- klass->get_row_count = NULL ;
-
- gtk_object_add_arg_type ("ESelectionModelArray::cursor_row", GTK_TYPE_INT,
- GTK_ARG_READWRITE, ARG_CURSOR_ROW);
- gtk_object_add_arg_type ("ESelectionModelArray::cursor_col", GTK_TYPE_INT,
- GTK_ARG_READWRITE, ARG_CURSOR_COL);
-}
-
-E_MAKE_TYPE(e_selection_model_array, "ESelectionModelArray", ESelectionModelArray,
- e_selection_model_array_class_init, e_selection_model_array_init, PARENT_TYPE);
diff --git a/widgets/misc/e-selection-model-array.h b/widgets/misc/e-selection-model-array.h
deleted file mode 100644
index 990f688060..0000000000
--- a/widgets/misc/e-selection-model-array.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_SELECTION_MODEL_ARRAY_H_
-#define _E_SELECTION_MODEL_ARRAY_H_
-
-#include <gtk/gtkobject.h>
-#include <gal/widgets/e-selection-model.h>
-#include <gal/util/e-bit-array.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define E_SELECTION_MODEL_ARRAY_TYPE (e_selection_model_array_get_type ())
-#define E_SELECTION_MODEL_ARRAY(o) (GTK_CHECK_CAST ((o), E_SELECTION_MODEL_ARRAY_TYPE, ESelectionModelArray))
-#define E_SELECTION_MODEL_ARRAY_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_SELECTION_MODEL_ARRAY_TYPE, ESelectionModelArrayClass))
-#define E_IS_SELECTION_MODEL_ARRAY(o) (GTK_CHECK_TYPE ((o), E_SELECTION_MODEL_ARRAY_TYPE))
-#define E_IS_SELECTION_MODEL_ARRAY_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_SELECTION_MODEL_ARRAY_TYPE))
-
-typedef struct {
- ESelectionModel base;
-
- EBitArray *eba;
-
- gint cursor_row;
- gint cursor_col;
- gint selection_start_row;
-
- guint model_changed_id;
- guint model_row_inserted_id, model_row_deleted_id;
-
- guint frozen : 1;
- guint selection_model_changed : 1;
- guint group_info_changed : 1;
-} ESelectionModelArray;
-
-typedef struct {
- ESelectionModelClass parent_class;
-
- gint (*get_row_count) (ESelectionModelArray *selection);
-} ESelectionModelArrayClass;
-
-GtkType e_selection_model_array_get_type (void);
-
-/* Protected Functions */
-void e_selection_model_array_insert_rows (ESelectionModelArray *esm,
- int row,
- int count);
-void e_selection_model_array_delete_rows (ESelectionModelArray *esm,
- int row,
- int count);
-void e_selection_model_array_move_row (ESelectionModelArray *esm,
- int old_row,
- int new_row);
-void e_selection_model_array_confirm_row_count (ESelectionModelArray *esm);
-
-/* Protected Virtual Function */
-gint e_selection_model_array_get_row_count (ESelectionModelArray *esm);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* _E_SELECTION_MODEL_ARRAY_H_ */
diff --git a/widgets/misc/e-selection-model-simple.c b/widgets/misc/e-selection-model-simple.c
deleted file mode 100644
index 80654e3097..0000000000
--- a/widgets/misc/e-selection-model-simple.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-selection-model-simple.c: a Table Selection Model
- *
- * Author:
- * Christopher James Lahey <clahey@ximian.com>
- *
- * (C) 2000, 2001 Ximian, Inc.
- */
-#include <config.h>
-#include <gal/util/e-util.h>
-#include "e-selection-model-array.h"
-#include "e-selection-model-simple.h"
-
-#define ESMS_CLASS(e) ((ESelectionModelSimpleClass *)((GtkObject *)e)->klass)
-
-#define PARENT_TYPE e_selection_model_array_get_type ()
-
-static ESelectionModelArray *parent_class;
-
-static gint esms_get_row_count (ESelectionModelArray *esma);
-
-static void
-e_selection_model_simple_init (ESelectionModelSimple *selection)
-{
- selection->row_count = 0;
-}
-
-static void
-e_selection_model_simple_class_init (ESelectionModelSimpleClass *klass)
-{
- ESelectionModelArrayClass *esma_class;
-
- parent_class = gtk_type_class (PARENT_TYPE);
-
- esma_class = E_SELECTION_MODEL_ARRAY_CLASS(klass);
-
- esma_class->get_row_count = esms_get_row_count;
-}
-
-E_MAKE_TYPE(e_selection_model_simple, "ESelectionModelSimple", ESelectionModelSimple,
- e_selection_model_simple_class_init, e_selection_model_simple_init, PARENT_TYPE);
-
-/**
- * e_selection_model_simple_new
- *
- * This routine creates a new #ESelectionModelSimple.
- *
- * Returns: The new #ESelectionModelSimple.
- */
-ESelectionModelSimple *
-e_selection_model_simple_new (void)
-{
- return gtk_type_new (e_selection_model_simple_get_type ());
-}
-
-void
-e_selection_model_simple_set_row_count (ESelectionModelSimple *esms,
- int row_count)
-{
- if (esms->row_count != row_count) {
- ESelectionModelArray *esma = E_SELECTION_MODEL_ARRAY(esms);
- if (esma->eba)
- gtk_object_unref(GTK_OBJECT(esma->eba));
- esma->eba = NULL;
- }
- esms->row_count = row_count;
-}
-
-static gint
-esms_get_row_count (ESelectionModelArray *esma)
-{
- ESelectionModelSimple *esms = E_SELECTION_MODEL_SIMPLE(esma);
-
- return esms->row_count;
-}
-
-void e_selection_model_simple_insert_rows (ESelectionModelSimple *esms,
- int row,
- int count)
-{
- esms->row_count += count;
- e_selection_model_array_insert_rows (E_SELECTION_MODEL_ARRAY(esms), row, count);
-}
-
-void
-e_selection_model_simple_delete_rows (ESelectionModelSimple *esms,
- int row,
- int count)
-{
- esms->row_count -= count;
- e_selection_model_array_delete_rows (E_SELECTION_MODEL_ARRAY(esms), row, count);
-}
-
-void
-e_selection_model_simple_move_row (ESelectionModelSimple *esms,
- int old_row,
- int new_row)
-{
- e_selection_model_array_move_row (E_SELECTION_MODEL_ARRAY(esms), old_row, new_row);
-}
diff --git a/widgets/misc/e-selection-model-simple.h b/widgets/misc/e-selection-model-simple.h
deleted file mode 100644
index 1fe312e4b4..0000000000
--- a/widgets/misc/e-selection-model-simple.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_SELECTION_MODEL_SIMPLE_H_
-#define _E_SELECTION_MODEL_SIMPLE_H_
-
-#include <gal/widgets/e-selection-model-array.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define E_SELECTION_MODEL_SIMPLE_TYPE (e_selection_model_simple_get_type ())
-#define E_SELECTION_MODEL_SIMPLE(o) (GTK_CHECK_CAST ((o), E_SELECTION_MODEL_SIMPLE_TYPE, ESelectionModelSimple))
-#define E_SELECTION_MODEL_SIMPLE_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_SELECTION_MODEL_SIMPLE_TYPE, ESelectionModelSimpleClass))
-#define E_IS_SELECTION_MODEL_SIMPLE(o) (GTK_CHECK_TYPE ((o), E_SELECTION_MODEL_SIMPLE_TYPE))
-#define E_IS_SELECTION_MODEL_SIMPLE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_SELECTION_MODEL_SIMPLE_TYPE))
-
-typedef struct {
- ESelectionModelArray parent;
-
- int row_count;
-} ESelectionModelSimple;
-
-typedef struct {
- ESelectionModelArrayClass parent_class;
-} ESelectionModelSimpleClass;
-
-GtkType e_selection_model_simple_get_type (void);
-ESelectionModelSimple *e_selection_model_simple_new (void);
-
-void e_selection_model_simple_insert_rows (ESelectionModelSimple *esms,
- int row,
- int count);
-void e_selection_model_simple_delete_rows (ESelectionModelSimple *esms,
- int row,
- int count);
-void e_selection_model_simple_move_row (ESelectionModelSimple *esms,
- int old_row,
- int new_row);
-
-void e_selection_model_simple_set_row_count (ESelectionModelSimple *selection,
- int row_count);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_SELECTION_MODEL_SIMPLE_H_ */
-
diff --git a/widgets/misc/e-selection-model.c b/widgets/misc/e-selection-model.c
deleted file mode 100644
index 8734bd58ad..0000000000
--- a/widgets/misc/e-selection-model.c
+++ /dev/null
@@ -1,592 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-selection-model.c: a Selection Model
- *
- * Author:
- * Christopher James Lahey <clahey@ximian.com>
- *
- * (C) 2000, 2001 Ximian, Inc.
- */
-#include <config.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtksignal.h>
-#include "e-selection-model.h"
-#include "gal/util/e-util.h"
-
-#define ESM_CLASS(e) ((ESelectionModelClass *)((GtkObject *)e)->klass)
-
-#define PARENT_TYPE gtk_object_get_type ()
-
-static GtkObjectClass *e_selection_model_parent_class;
-
-enum {
- CURSOR_CHANGED,
- CURSOR_ACTIVATED,
- SELECTION_CHANGED,
- LAST_SIGNAL
-};
-
-static guint e_selection_model_signals [LAST_SIGNAL] = { 0, };
-
-enum {
- ARG_0,
- ARG_SORTER,
- ARG_SELECTION_MODE,
- ARG_CURSOR_MODE,
-};
-
-inline static void
-add_sorter(ESelectionModel *esm, ESorter *sorter)
-{
- esm->sorter = sorter;
- if (sorter) {
- gtk_object_ref(GTK_OBJECT(sorter));
- }
-}
-
-inline static void
-drop_sorter(ESelectionModel *esm)
-{
- if (esm->sorter) {
- gtk_object_unref(GTK_OBJECT(esm->sorter));
- }
- esm->sorter = NULL;
-}
-
-static void
-esm_destroy (GtkObject *object)
-{
- ESelectionModel *esm;
-
- esm = E_SELECTION_MODEL (object);
-
- drop_sorter(esm);
-}
-
-static void
-esm_get_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- ESelectionModel *esm = E_SELECTION_MODEL (o);
-
- switch (arg_id){
- case ARG_SORTER:
- GTK_VALUE_OBJECT (*arg) = GTK_OBJECT(esm->sorter);
- break;
-
- case ARG_SELECTION_MODE:
- GTK_VALUE_ENUM(*arg) = esm->mode;
- break;
-
- case ARG_CURSOR_MODE:
- GTK_VALUE_ENUM(*arg) = esm->cursor_mode;
- break;
- }
-}
-
-static void
-esm_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- ESelectionModel *esm = E_SELECTION_MODEL (o);
-
- switch (arg_id){
- case ARG_SORTER:
- drop_sorter(esm);
- add_sorter(esm, GTK_VALUE_OBJECT (*arg) ? E_SORTER(GTK_VALUE_OBJECT (*arg)) : NULL);
- break;
-
- case ARG_SELECTION_MODE:
- esm->mode = GTK_VALUE_ENUM(*arg);
- if (esm->mode == GTK_SELECTION_SINGLE) {
- int cursor_row = e_selection_model_cursor_row(esm);
- int cursor_col = e_selection_model_cursor_col(esm);
- e_selection_model_do_something(esm, cursor_row, cursor_col, 0);
- }
- break;
-
- case ARG_CURSOR_MODE:
- esm->cursor_mode = GTK_VALUE_ENUM(*arg);
- break;
- }
-}
-
-static void
-e_selection_model_init (ESelectionModel *selection)
-{
- selection->mode = GTK_SELECTION_MULTIPLE;
- selection->cursor_mode = E_CURSOR_SIMPLE;
-}
-
-static void
-e_selection_model_class_init (ESelectionModelClass *klass)
-{
- GtkObjectClass *object_class;
-
- e_selection_model_parent_class = gtk_type_class (gtk_object_get_type ());
-
- object_class = GTK_OBJECT_CLASS(klass);
-
- object_class->destroy = esm_destroy;
- object_class->get_arg = esm_get_arg;
- object_class->set_arg = esm_set_arg;
-
- e_selection_model_signals [CURSOR_CHANGED] =
- gtk_signal_new ("cursor_changed",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ESelectionModelClass, cursor_changed),
- gtk_marshal_NONE__INT_INT,
- GTK_TYPE_NONE, 2, GTK_TYPE_INT, GTK_TYPE_INT);
-
- e_selection_model_signals [CURSOR_ACTIVATED] =
- gtk_signal_new ("cursor_activated",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ESelectionModelClass, cursor_activated),
- gtk_marshal_NONE__INT_INT,
- GTK_TYPE_NONE, 2, GTK_TYPE_INT, GTK_TYPE_INT);
-
- e_selection_model_signals [SELECTION_CHANGED] =
- gtk_signal_new ("selection_changed",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ESelectionModelClass, selection_changed),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- klass->cursor_changed = NULL;
- klass->cursor_activated = NULL;
- klass->selection_changed = NULL;
-
- klass->is_row_selected = NULL;
- klass->foreach = NULL;
- klass->clear = NULL;
- klass->selected_count = NULL;
- klass->select_all = NULL;
- klass->invert_selection = NULL;
- klass->row_count = NULL;
-
- klass->change_one_row = NULL;
- klass->change_cursor = NULL;
- klass->cursor_row = NULL;
- klass->cursor_col = NULL;
-
- klass->select_single_row = NULL;
- klass->toggle_single_row = NULL;
- klass->move_selection_end = NULL;
- klass->set_selection_end = NULL;
-
-
- gtk_object_class_add_signals (object_class, e_selection_model_signals, LAST_SIGNAL);
-
- gtk_object_add_arg_type ("ESelectionModel::sorter", GTK_TYPE_OBJECT,
- GTK_ARG_READWRITE, ARG_SORTER);
- gtk_object_add_arg_type ("ESelectionModel::selection_mode", GTK_TYPE_ENUM,
- GTK_ARG_READWRITE, ARG_SELECTION_MODE);
- gtk_object_add_arg_type ("ESelectionModel::cursor_mode", GTK_TYPE_ENUM,
- GTK_ARG_READWRITE, ARG_CURSOR_MODE);
-}
-
-E_MAKE_TYPE(e_selection_model, "ESelectionModel", ESelectionModel,
- e_selection_model_class_init, e_selection_model_init, PARENT_TYPE);
-
-/**
- * e_selection_model_is_row_selected
- * @selection: #ESelectionModel to check
- * @n: The row to check
- *
- * This routine calculates whether the given row is selected.
- *
- * Returns: %TRUE if the given row is selected
- */
-gboolean
-e_selection_model_is_row_selected (ESelectionModel *selection,
- gint n)
-{
- if (ESM_CLASS(selection)->is_row_selected)
- return ESM_CLASS(selection)->is_row_selected (selection, n);
- else
- return FALSE;
-}
-
-/**
- * e_selection_model_foreach
- * @selection: #ESelectionModel to traverse
- * @callback: The callback function to call back.
- * @closure: The closure
- *
- * This routine calls the given callback function once for each
- * selected row, passing closure as the closure.
- */
-void
-e_selection_model_foreach (ESelectionModel *selection,
- EForeachFunc callback,
- gpointer closure)
-{
- if (ESM_CLASS(selection)->foreach)
- ESM_CLASS(selection)->foreach (selection, callback, closure);
-}
-
-/**
- * e_selection_model_clear
- * @selection: #ESelectionModel to clear
- *
- * This routine clears the selection to no rows selected.
- */
-void
-e_selection_model_clear(ESelectionModel *selection)
-{
- if (ESM_CLASS(selection)->clear)
- ESM_CLASS(selection)->clear (selection);
-}
-
-/**
- * e_selection_model_selected_count
- * @selection: #ESelectionModel to count
- *
- * This routine calculates the number of rows selected.
- *
- * Returns: The number of rows selected in the given model.
- */
-gint
-e_selection_model_selected_count (ESelectionModel *selection)
-{
- if (ESM_CLASS(selection)->selected_count)
- return ESM_CLASS(selection)->selected_count (selection);
- else
- return 0;
-}
-
-/**
- * e_selection_model_select_all
- * @selection: #ESelectionModel to select all
- *
- * This routine selects all the rows in the given
- * #ESelectionModel.
- */
-void
-e_selection_model_select_all (ESelectionModel *selection)
-{
- if (ESM_CLASS(selection)->select_all)
- ESM_CLASS(selection)->select_all (selection);
-}
-
-/**
- * e_selection_model_invert_selection
- * @selection: #ESelectionModel to invert
- *
- * This routine inverts all the rows in the given
- * #ESelectionModel.
- */
-void
-e_selection_model_invert_selection (ESelectionModel *selection)
-{
- if (ESM_CLASS(selection)->invert_selection)
- ESM_CLASS(selection)->invert_selection (selection);
-}
-
-int
-e_selection_model_row_count (ESelectionModel *selection)
-{
- if (ESM_CLASS(selection)->row_count)
- return ESM_CLASS(selection)->row_count (selection);
- else
- return 0;
-}
-
-void
-e_selection_model_change_one_row(ESelectionModel *selection, int row, gboolean grow)
-{
- if (ESM_CLASS(selection)->change_one_row)
- ESM_CLASS(selection)->change_one_row (selection, row, grow);
-}
-
-void
-e_selection_model_change_cursor (ESelectionModel *selection, int row, int col)
-{
- if (ESM_CLASS(selection)->change_cursor)
- ESM_CLASS(selection)->change_cursor (selection, row, col);
-}
-
-int
-e_selection_model_cursor_row (ESelectionModel *selection)
-{
- if (ESM_CLASS(selection)->cursor_row)
- return ESM_CLASS(selection)->cursor_row (selection);
- else
- return -1;
-}
-
-int
-e_selection_model_cursor_col (ESelectionModel *selection)
-{
- if (ESM_CLASS(selection)->cursor_col)
- return ESM_CLASS(selection)->cursor_col (selection);
- else
- return -1;
-}
-
-void
-e_selection_model_select_single_row (ESelectionModel *selection, int row)
-{
- if (ESM_CLASS(selection)->select_single_row)
- ESM_CLASS(selection)->select_single_row (selection, row);
-}
-
-void
-e_selection_model_toggle_single_row (ESelectionModel *selection, int row)
-{
- if (ESM_CLASS(selection)->toggle_single_row)
- ESM_CLASS(selection)->toggle_single_row (selection, row);
-}
-
-void
-e_selection_model_move_selection_end (ESelectionModel *selection, int row)
-{
- if (ESM_CLASS(selection)->move_selection_end)
- ESM_CLASS(selection)->move_selection_end (selection, row);
-}
-
-void
-e_selection_model_set_selection_end (ESelectionModel *selection, int row)
-{
- if (ESM_CLASS(selection)->set_selection_end)
- ESM_CLASS(selection)->set_selection_end (selection, row);
-}
-
-/**
- * e_selection_model_do_something
- * @selection: #ESelectionModel to do something to.
- * @row: The row to do something in.
- * @col: The col to do something in.
- * @state: The state in which to do something.
- *
- * This routine does whatever is appropriate as if the user clicked
- * the mouse in the given row and column.
- */
-void
-e_selection_model_do_something (ESelectionModel *selection,
- guint row,
- guint col,
- GdkModifierType state)
-{
- gint shift_p = state & GDK_SHIFT_MASK;
- gint ctrl_p = state & GDK_CONTROL_MASK;
- int row_count;
-
- if (row == -1 && col != -1)
- row = 0;
- if (col == -1 && row != -1)
- col = 0;
-
- row_count = e_selection_model_row_count(selection);
- if (row_count >= 0 && row < row_count) {
- switch (selection->mode) {
- case GTK_SELECTION_SINGLE:
- e_selection_model_select_single_row (selection, row);
- break;
- case GTK_SELECTION_BROWSE:
- case GTK_SELECTION_MULTIPLE:
- case GTK_SELECTION_EXTENDED:
- if (shift_p) {
- e_selection_model_set_selection_end (selection, row);
- } else {
- if (ctrl_p) {
- e_selection_model_toggle_single_row (selection, row);
- } else {
- e_selection_model_select_single_row (selection, row);
- }
- }
- break;
- }
- e_selection_model_change_cursor(selection, row, col);
- gtk_signal_emit(GTK_OBJECT(selection),
- e_selection_model_signals[CURSOR_CHANGED], row, col);
- gtk_signal_emit(GTK_OBJECT(selection),
- e_selection_model_signals[CURSOR_ACTIVATED], row, col);
- }
-}
-
-/**
- * e_selection_model_maybe_do_something
- * @selection: #ESelectionModel to do something to.
- * @row: The row to do something in.
- * @col: The col to do something in.
- * @state: The state in which to do something.
- *
- * If this row is selected, this routine just moves the cursor row and
- * column. Otherwise, it does the same thing as
- * e_selection_model_do_something(). This is for being used on
- * right clicks and other events where if the user hit the selection,
- * they don't want it to change.
- */
-void
-e_selection_model_maybe_do_something (ESelectionModel *selection,
- guint row,
- guint col,
- GdkModifierType state)
-{
- if (e_selection_model_is_row_selected(selection, row)) {
- e_selection_model_change_cursor(selection, row, col);
- gtk_signal_emit(GTK_OBJECT(selection),
- e_selection_model_signals[CURSOR_CHANGED], row, col);
- } else {
- e_selection_model_do_something(selection, row, col, state);
- }
-}
-
-static gint
-move_selection (ESelectionModel *selection,
- gboolean up,
- GdkModifierType state)
-{
- int row = e_selection_model_cursor_row(selection);
- int col = e_selection_model_cursor_col(selection);
- int cursor_activated = TRUE;
- int row_count;
-
- gint shift_p = state & GDK_SHIFT_MASK;
- gint ctrl_p = state & GDK_CONTROL_MASK;
-
- row = e_sorter_model_to_sorted(selection->sorter, row);
- if (up)
- row--;
- else
- row++;
- if (row < 0)
- row = 0;
- row_count = e_selection_model_row_count(selection);
- if (row >= row_count)
- row = row_count - 1;
- row = e_sorter_sorted_to_model(selection->sorter, row);
-
- switch (selection->mode) {
- case GTK_SELECTION_BROWSE:
- if (shift_p) {
- e_selection_model_set_selection_end (selection, row);
- } else if (!ctrl_p) {
- e_selection_model_select_single_row (selection, row);
- } else
- cursor_activated = FALSE;
- break;
- case GTK_SELECTION_SINGLE:
- case GTK_SELECTION_MULTIPLE:
- case GTK_SELECTION_EXTENDED:
- e_selection_model_select_single_row (selection, row);
- break;
- }
- if (row != -1) {
- e_selection_model_change_cursor(selection, row, col);
- gtk_signal_emit(GTK_OBJECT(selection),
- e_selection_model_signals[CURSOR_CHANGED], row, col);
- if (cursor_activated)
- gtk_signal_emit(GTK_OBJECT(selection),
- e_selection_model_signals[CURSOR_ACTIVATED], row, col);
- }
- return TRUE;
-}
-
-/**
- * e_selection_model_key_press
- * @selection: #ESelectionModel to affect.
- * @key: The event.
- *
- * This routine does whatever is appropriate as if the user pressed
- * the given key.
- *
- * Returns: %TRUE if the #ESelectionModel used the key.
- */
-gint
-e_selection_model_key_press (ESelectionModel *selection,
- GdkEventKey *key)
-{
- switch (key->keyval) {
- case GDK_Up:
- return move_selection(selection, TRUE, key->state);
- break;
- case GDK_Down:
- return move_selection(selection, FALSE, key->state);
- break;
- case GDK_space:
- case GDK_KP_Space:
- if (selection->mode != GTK_SELECTION_SINGLE) {
- int row = e_selection_model_cursor_row(selection);
- int col = e_selection_model_cursor_col(selection);
- e_selection_model_toggle_single_row (selection, row);
- gtk_signal_emit(GTK_OBJECT(selection),
- e_selection_model_signals[CURSOR_ACTIVATED], row, col);
- return TRUE;
- }
- break;
- case GDK_Return:
- case GDK_KP_Enter:
- if (selection->mode != GTK_SELECTION_SINGLE) {
- int row = e_selection_model_cursor_row(selection);
- int col = e_selection_model_cursor_col(selection);
- e_selection_model_select_single_row (selection, row);
- gtk_signal_emit(GTK_OBJECT(selection),
- e_selection_model_signals[CURSOR_ACTIVATED], row, col);
- return TRUE;
- }
- break;
- case GDK_Home:
- case GDK_KP_Home:
- if (selection->cursor_mode == E_CURSOR_LINE) {
- int row = 0;
- int cursor_col = e_selection_model_cursor_col(selection);
-
- row = e_sorter_sorted_to_model(selection->sorter, row);
- e_selection_model_change_cursor(selection, row, cursor_col);
-
- e_selection_model_select_single_row (selection, row);
- gtk_signal_emit(GTK_OBJECT(selection),
- e_selection_model_signals[CURSOR_CHANGED], row, cursor_col);
- gtk_signal_emit(GTK_OBJECT(selection),
- e_selection_model_signals[CURSOR_ACTIVATED], row, cursor_col);
- return TRUE;
- }
- break;
- case GDK_End:
- case GDK_KP_End:
- if (selection->cursor_mode == E_CURSOR_LINE) {
- int row = e_selection_model_row_count(selection) - 1;
- int cursor_col = e_selection_model_cursor_col(selection);
-
- row = e_sorter_sorted_to_model(selection->sorter, row);
- e_selection_model_change_cursor(selection, row, cursor_col);
-
- e_selection_model_select_single_row (selection, row);
- gtk_signal_emit(GTK_OBJECT(selection),
- e_selection_model_signals[CURSOR_CHANGED], row, cursor_col);
- gtk_signal_emit(GTK_OBJECT(selection),
- e_selection_model_signals[CURSOR_ACTIVATED], row, cursor_col);
- return TRUE;
- }
- break;
- }
- return FALSE;
-}
-
-void
-e_selection_model_cursor_changed (ESelectionModel *selection,
- int row,
- int col)
-{
- gtk_signal_emit(GTK_OBJECT(selection),
- e_selection_model_signals[CURSOR_CHANGED], row, col);
-}
-
-void
-e_selection_model_cursor_activated (ESelectionModel *selection,
- int row,
- int col)
-{
- gtk_signal_emit(GTK_OBJECT(selection),
- e_selection_model_signals[CURSOR_ACTIVATED], row, col);
-}
-
-void
-e_selection_model_selection_changed (ESelectionModel *selection)
-{
- gtk_signal_emit(GTK_OBJECT(selection),
- e_selection_model_signals[SELECTION_CHANGED]);
-}
diff --git a/widgets/misc/e-selection-model.h b/widgets/misc/e-selection-model.h
deleted file mode 100644
index cdd161f96a..0000000000
--- a/widgets/misc/e-selection-model.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_SELECTION_MODEL_H_
-#define _E_SELECTION_MODEL_H_
-
-#include <gtk/gtkobject.h>
-#include <gal/util/e-sorter.h>
-#include <gdk/gdktypes.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define E_SELECTION_MODEL_TYPE (e_selection_model_get_type ())
-#define E_SELECTION_MODEL(o) (GTK_CHECK_CAST ((o), E_SELECTION_MODEL_TYPE, ESelectionModel))
-#define E_SELECTION_MODEL_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_SELECTION_MODEL_TYPE, ESelectionModelClass))
-#define E_IS_SELECTION_MODEL(o) (GTK_CHECK_TYPE ((o), E_SELECTION_MODEL_TYPE))
-#define E_IS_SELECTION_MODEL_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_SELECTION_MODEL_TYPE))
-
-#ifndef _E_FOREACH_FUNC_H_
-#define _E_FOREACH_FUNC_H_
-typedef void (*EForeachFunc) (int model_row,
- gpointer closure);
-#endif
-
-/* list selection modes */
-typedef enum {
- E_CURSOR_LINE,
- E_CURSOR_SIMPLE,
- E_CURSOR_SPREADSHEET,
-} ECursorMode;
-
-typedef struct {
- GtkObject base;
-
- ESorter *sorter;
-
- GtkSelectionMode mode;
- ECursorMode cursor_mode;
-} ESelectionModel;
-
-typedef struct {
- GtkObjectClass parent_class;
-
- /* Virtual methods */
- gboolean (*is_row_selected) (ESelectionModel *esm, int row);
- void (*foreach) (ESelectionModel *esm, EForeachFunc callback, gpointer closure);
- void (*clear) (ESelectionModel *esm);
- gint (*selected_count) (ESelectionModel *esm);
- void (*select_all) (ESelectionModel *esm);
- void (*invert_selection) (ESelectionModel *esm);
- int (*row_count) (ESelectionModel *esm);
-
- /* Protected virtual methods. */
- void (*change_one_row) (ESelectionModel *esm, int row, gboolean on);
- void (*change_cursor) (ESelectionModel *esm, int row, int col);
- int (*cursor_row) (ESelectionModel *esm);
- int (*cursor_col) (ESelectionModel *esm);
-
- void (*select_single_row) (ESelectionModel *selection, int row);
- void (*toggle_single_row) (ESelectionModel *selection, int row);
- void (*move_selection_end) (ESelectionModel *selection, int row);
- void (*set_selection_end) (ESelectionModel *selection, int row);
-
- /*
- * Signals
- */
-
- void (*cursor_changed) (ESelectionModel *esm, int row, int col);
- void (*cursor_activated) (ESelectionModel *esm, int row, int col);
- void (*selection_changed) (ESelectionModel *esm);
-
-} ESelectionModelClass;
-
-
-GtkType e_selection_model_get_type (void);
-void e_selection_model_do_something (ESelectionModel *esm,
- guint row,
- guint col,
- GdkModifierType state);
-void e_selection_model_maybe_do_something (ESelectionModel *esm,
- guint row,
- guint col,
- GdkModifierType state);
-gint e_selection_model_key_press (ESelectionModel *esm,
- GdkEventKey *key);
-
-/* Virtual functions */
-gboolean e_selection_model_is_row_selected (ESelectionModel *esm,
- gint n);
-void e_selection_model_foreach (ESelectionModel *esm,
- EForeachFunc callback,
- gpointer closure);
-void e_selection_model_clear (ESelectionModel *esm);
-gint e_selection_model_selected_count (ESelectionModel *esm);
-void e_selection_model_select_all (ESelectionModel *esm);
-void e_selection_model_invert_selection (ESelectionModel *esm);
-int e_selection_model_row_count (ESelectionModel *esm);
-
-
-/* Private virtual Functions */
-void e_selection_model_change_one_row (ESelectionModel *esm,
- int row,
- gboolean on);
-void e_selection_model_change_cursor (ESelectionModel *esm,
- int row,
- int col);
-int e_selection_model_cursor_row (ESelectionModel *esm);
-int e_selection_model_cursor_col (ESelectionModel *esm);
-void e_selection_model_select_single_row (ESelectionModel *selection,
- int row);
-void e_selection_model_toggle_single_row (ESelectionModel *selection,
- int row);
-void e_selection_model_move_selection_end (ESelectionModel *selection,
- int row);
-void e_selection_model_set_selection_end (ESelectionModel *selection,
- int row);
-
-/* Signals */
-void e_selection_model_cursor_changed (ESelectionModel *selection,
- int row,
- int col);
-void e_selection_model_cursor_activated (ESelectionModel *selection,
- int row,
- int col);
-void e_selection_model_selection_changed (ESelectionModel *selection);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* _E_SELECTION_MODEL_H_ */
diff --git a/widgets/misc/e-title-bar.c b/widgets/misc/e-title-bar.c
deleted file mode 100644
index 8ca6885ccf..0000000000
--- a/widgets/misc/e-title-bar.c
+++ /dev/null
@@ -1,402 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-title-bar.c
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gtk/gtkbox.h>
-#include <gtk/gtkbutton.h>
-#include <gtk/gtkhbox.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkpixmap.h>
-#include <gtk/gtksignal.h>
-#include <gtk/gtktypeutils.h>
-
-#include <gal/util/e-util.h>
-#include "e-clipped-label.h"
-
-#include "e-title-bar.h"
-
-
-enum {
- LABEL_BUTTON_PRESS_EVENT,
- BUTTON_CLICKED,
- LAST_SIGNAL
-};
-static guint signals[LAST_SIGNAL] = { 0 };
-
-
-/* The pixmaps. */
-
-static char *close_xpm[] = {
- "12 12 2 1",
- " c none",
- ". c #000000000000",
- " ",
- " .. .. ",
- " ... ... ",
- " ... ... ",
- " ...... ",
- " .... ",
- " .... ",
- " ...... ",
- " ... ... ",
- " ... ... ",
- " .. .. ",
- " "
-};
-
-static char *pin_xpm[] = {
- "16 16 33 1",
- " c None",
- ". c #000000",
- "+ c #74744D",
- "@ c #B2B279",
- "# c #6C6C46",
- "$ c #CACA9C",
- "% c #F4F4AD",
- "& c #85855A",
- "* c #B1B175",
- "= c #9A9A66",
- "- c #A9A98A",
- "; c #B0B07B",
- "> c #535353",
- ", c #818181",
- "' c #B7B7B7",
- ") c #D8D8D8",
- "! c #FFFFFF",
- "~ c #EBEBA1",
- "{ c #8A8A75",
- "] c #9F9F76",
- "^ c #9E9E75",
- "/ c #8A8A66",
- "( c #979770",
- "_ c #6B6B46",
- ": c #28281A",
- "< c #505034",
- "[ c #666645",
- "} c #61614D",
- "| c #818155",
- "1 c #4A4A31",
- "2 c #4D4D34",
- "3 c #6C6C48",
- "4 c #5D5D3E",
- " ",
- " ",
- " ",
- " . . ",
- " .. .+. ",
- " .@...#$. ",
- " ......%&*=-;. ",
- ".>,')!.~{]^/(. ",
- " ......_:<[}|. ",
- " .1...23. ",
- " .. .4. ",
- " . . ",
- " ",
- " ",
- " ",
- " "
-};
-
-
-#define PARENT_TYPE GTK_TYPE_FRAME
-static GtkFrameClass *parent_class = NULL;
-
-struct _ETitleBarPrivate {
- ETitleBarButtonMode button_mode;
- GtkWidget *label;
- GtkWidget *button;
- GtkWidget *close_gtk_pixmap;
- GtkWidget *pin_gtk_pixmap;
-};
-
-
-/* Mode handling. We put both the close and pin GtkPixmaps into an hbox in the
- button, and hide one of them according to the mode. */
-
-static void
-show_and_hide_pixmaps_according_to_mode (ETitleBar *title_bar)
-{
- ETitleBarPrivate *priv;
-
- priv = title_bar->priv;
-
- if (priv->close_gtk_pixmap == NULL || priv->pin_gtk_pixmap == NULL)
- return;
-
- switch (priv->button_mode) {
- case E_TITLE_BAR_BUTTON_MODE_PIN:
- gtk_widget_hide (priv->close_gtk_pixmap);
- gtk_widget_show (priv->pin_gtk_pixmap);
- break;
- case E_TITLE_BAR_BUTTON_MODE_CLOSE:
- gtk_widget_hide (priv->pin_gtk_pixmap);
- gtk_widget_show (priv->close_gtk_pixmap);
- break;
- default:
- g_assert_not_reached ();
- }
-}
-
-
-/* Child signal callbacks. */
-
-static void
-button_realize_cb (GtkWidget *widget,
- gpointer data)
-{
- GdkPixmap *close_pixmap;
- GdkBitmap *close_mask;
- GdkPixmap *pin_pixmap;
- GdkBitmap *pin_mask;
- GtkWidget *hbox;
- ETitleBar *title_bar;
- ETitleBarPrivate *priv;
-
- title_bar = E_TITLE_BAR (data);
- priv = title_bar->priv;
-
- if (priv->close_gtk_pixmap != NULL)
- return;
-
- close_pixmap = gdk_pixmap_create_from_xpm_d (GTK_WIDGET (priv->button)->window,
- &close_mask, NULL, close_xpm);
- priv->close_gtk_pixmap = gtk_pixmap_new (close_pixmap, close_mask);
-
- pin_pixmap = gdk_pixmap_create_from_xpm_d (GTK_WIDGET (priv->button)->window,
- &pin_mask, NULL, pin_xpm);
- priv->pin_gtk_pixmap = gtk_pixmap_new (pin_pixmap, pin_mask);
-
- hbox = gtk_hbox_new (TRUE, 0);
- gtk_widget_show (hbox);
- gtk_box_pack_start (GTK_BOX (hbox), priv->pin_gtk_pixmap, TRUE, TRUE, 0);
- gtk_box_pack_start (GTK_BOX (hbox), priv->close_gtk_pixmap, TRUE, TRUE, 0);
-
- gtk_container_add (GTK_CONTAINER (priv->button), hbox);
-
- gdk_pixmap_unref (close_pixmap);
- gdk_bitmap_unref (close_mask);
- gdk_pixmap_unref (pin_pixmap);
- gdk_bitmap_unref (pin_mask);
-
- show_and_hide_pixmaps_according_to_mode (title_bar);
-}
-
-static void
-button_clicked_cb (GtkButton *button,
- gpointer data)
-{
- ETitleBar *title_bar;
-
- title_bar = E_TITLE_BAR (data);
-
- gtk_signal_emit (GTK_OBJECT (title_bar), signals[BUTTON_CLICKED]);
-}
-
-static void
-label_button_press_event_cb (GtkWidget *widget,
- GdkEventButton *event,
- gpointer data)
-{
- ETitleBar *title_bar;
-
- title_bar = E_TITLE_BAR (data);
-
- gtk_signal_emit (GTK_OBJECT (title_bar), signals[LABEL_BUTTON_PRESS_EVENT], event);
-}
-
-
-/* GtkObject methods. */
-
-static void
-destroy (GtkObject *object)
-{
- ETitleBar *title_bar;
- ETitleBarPrivate *priv;
-
- title_bar = E_TITLE_BAR (object);
- priv = title_bar->priv;
-
- g_free (priv);
-
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-
-static void
-class_init (ETitleBarClass *klass)
-{
- GtkObjectClass *object_class;
-
- object_class = (GtkObjectClass*) klass;
- object_class->destroy = destroy;
-
- parent_class = gtk_type_class (gtk_frame_get_type ());
-
- signals[LABEL_BUTTON_PRESS_EVENT] =
- gtk_signal_new ("label_button_press_event",
- GTK_RUN_FIRST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETitleBarClass, label_button_press_event),
- gtk_marshal_NONE__POINTER,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_GDK_EVENT);
-
- signals[BUTTON_CLICKED] =
- gtk_signal_new ("button_clicked",
- GTK_RUN_FIRST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETitleBarClass, button_clicked),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- gtk_object_class_add_signals (object_class, signals, LAST_SIGNAL);
-}
-
-static void
-init (ETitleBar *title_bar)
-{
- ETitleBarPrivate *priv;
-
- priv = g_new (ETitleBarPrivate, 1);
-
- priv->button_mode = E_TITLE_BAR_BUTTON_MODE_CLOSE;
- priv->label = NULL;
- priv->button = NULL;
- priv->close_gtk_pixmap = NULL;
- priv->pin_gtk_pixmap = NULL;
-
- title_bar->priv = priv;
-}
-
-
-void
-e_title_bar_construct (ETitleBar *title_bar,
- const char *title)
-{
- ETitleBarPrivate *priv;
- GtkWidget *hbox;
-
- g_return_if_fail (title_bar != NULL);
- g_return_if_fail (E_IS_TITLE_BAR (title_bar));
-
- priv = title_bar->priv;
-
- priv->label = e_clipped_label_new (title);
- gtk_misc_set_alignment (GTK_MISC (priv->label), 0.0, 0.5);
- gtk_widget_show (priv->label);
-
- priv->button = gtk_button_new ();
- GTK_WIDGET_UNSET_FLAGS (priv->button, GTK_CAN_FOCUS);
- gtk_container_set_border_width (GTK_CONTAINER (priv->button), 1);
- gtk_button_set_relief (GTK_BUTTON (priv->button), GTK_RELIEF_NONE);
- gtk_widget_show (priv->button);
-
- hbox = gtk_hbox_new (FALSE, 0);
- gtk_box_pack_start (GTK_BOX (hbox), priv->label, TRUE, TRUE, 2);
- gtk_box_pack_start (GTK_BOX (hbox), priv->button, FALSE, TRUE, 1);
- gtk_widget_show (hbox);
-
- gtk_container_add (GTK_CONTAINER (title_bar), hbox);
-
- gtk_signal_connect (GTK_OBJECT (priv->button), "realize",
- GTK_SIGNAL_FUNC (button_realize_cb), title_bar);
- gtk_signal_connect (GTK_OBJECT (priv->button), "clicked",
- GTK_SIGNAL_FUNC (button_clicked_cb), title_bar);
- gtk_signal_connect (GTK_OBJECT (priv->label), "button_press_event",
- GTK_SIGNAL_FUNC (label_button_press_event_cb), title_bar);
-}
-
-GtkWidget *
-e_title_bar_new (const char *title)
-{
- ETitleBar *title_bar;
-
- title_bar = gtk_type_new (e_title_bar_get_type ());
-
- e_title_bar_construct (title_bar, title);
-
- return GTK_WIDGET (title_bar);
-}
-
-
-void
-e_title_bar_set_title (ETitleBar *title_bar,
- const char *title)
-{
- g_return_if_fail (title_bar != NULL);
- g_return_if_fail (E_IS_TITLE_BAR (title_bar));
-
- e_clipped_label_set_text (E_CLIPPED_LABEL (title_bar->priv->label), title);
-}
-
-void
-e_title_bar_show_button (ETitleBar *title_bar,
- gboolean show)
-{
- ETitleBarPrivate *priv;
-
- g_return_if_fail (title_bar != NULL);
- g_return_if_fail (E_IS_TITLE_BAR (title_bar));
-
- priv = title_bar->priv;
-
- if (show)
- gtk_widget_show (priv->button);
- else
- gtk_widget_hide (priv->button);
-}
-
-void
-e_title_bar_set_button_mode (ETitleBar *title_bar,
- ETitleBarButtonMode button_mode)
-{
- ETitleBarPrivate *priv;
-
- g_return_if_fail (title_bar != NULL);
- g_return_if_fail (E_IS_TITLE_BAR (title_bar));
- g_return_if_fail (button_mode == E_TITLE_BAR_BUTTON_MODE_CLOSE
- || button_mode == E_TITLE_BAR_BUTTON_MODE_PIN);
-
- priv = title_bar->priv;
-
- if (priv->button_mode == button_mode)
- return;
-
- priv->button_mode = button_mode;
- show_and_hide_pixmaps_according_to_mode (title_bar);
-}
-
-ETitleBarButtonMode
-e_title_bar_get_button_mode (ETitleBar *title_bar)
-{
- g_return_val_if_fail (title_bar != NULL, E_TITLE_BAR_BUTTON_MODE_CLOSE);
- g_return_val_if_fail (E_IS_TITLE_BAR (title_bar), E_TITLE_BAR_BUTTON_MODE_CLOSE);
-
- return title_bar->priv->button_mode;
-}
-
-
-E_MAKE_TYPE (e_title_bar, "ETitleBar", ETitleBar, class_init, init, PARENT_TYPE)
diff --git a/widgets/misc/e-title-bar.h b/widgets/misc/e-title-bar.h
deleted file mode 100644
index f91e76c889..0000000000
--- a/widgets/misc/e-title-bar.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-title-bar.h
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli
- */
-
-#ifndef __E_TITLE_BAR_H__
-#define __E_TITLE_BAR_H__
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gtk/gtkframe.h>
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-#define E_TYPE_TITLE_BAR (e_title_bar_get_type ())
-#define E_TITLE_BAR(obj) (GTK_CHECK_CAST ((obj), E_TYPE_TITLE_BAR, ETitleBar))
-#define E_TITLE_BAR_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_TYPE_TITLE_BAR, ETitleBarClass))
-#define E_IS_TITLE_BAR(obj) (GTK_CHECK_TYPE ((obj), E_TYPE_TITLE_BAR))
-#define E_IS_TITLE_BAR_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), E_TYPE_TITLE_BAR))
-
-
-enum _ETitleBarButtonMode {
- E_TITLE_BAR_BUTTON_MODE_PIN,
- E_TITLE_BAR_BUTTON_MODE_CLOSE
-};
-typedef enum _ETitleBarButtonMode ETitleBarButtonMode;
-
-typedef struct _ETitleBar ETitleBar;
-typedef struct _ETitleBarPrivate ETitleBarPrivate;
-typedef struct _ETitleBarClass ETitleBarClass;
-
-struct _ETitleBar {
- GtkFrame parent;
-
- ETitleBarPrivate *priv;
-};
-
-struct _ETitleBarClass {
- GtkFrameClass parent_class;
-
- /* Signals. */
-
- void (* label_button_press_event) (ETitleBar *title_bar, GdkEventButton *event);
- void (* button_clicked) (ETitleBar *title_bar);
-};
-
-
-GtkType e_title_bar_get_type (void);
-void e_title_bar_construct (ETitleBar *title_bar,
- const char *title);
-GtkWidget *e_title_bar_new (const char *title);
-void e_title_bar_set_title (ETitleBar *title_bar,
- const char *title);
-void e_title_bar_show_button (ETitleBar *title_bar,
- gboolean show);
-void e_title_bar_set_button_mode (ETitleBar *title_bar,
- ETitleBarButtonMode button_mode);
-ETitleBarButtonMode e_title_bar_get_button_mode (ETitleBar *title_bar);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __E_TITLE_BAR_H__ */
diff --git a/widgets/misc/e-unicode.c b/widgets/misc/e-unicode.c
deleted file mode 100644
index d84ed0e683..0000000000
--- a/widgets/misc/e-unicode.c
+++ /dev/null
@@ -1,3005 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Authors: Lauris Kaplinski <lauris@helixcode.com>
- *
- * TODO: Break simple ligatures in e_utf8_strstrcasedecomp
- *
- */
-
-#include <config.h>
-
-#include "e-unicode.h"
-
-#include "gal/util/e-i18n.h"
-#include <ctype.h>
-#include <string.h>
-#include <stdio.h>
-#include <iconv.h>
-#include <gdk/gdk.h>
-#include <gdk/gdkx.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtkmenuitem.h>
-#include "e-font.h"
-#include <gnome-xml/xmlmemory.h>
-#include <stdlib.h>
-
-#define d(x) x
-
-#define FONT_TESTING
-#define MAX_DECOMP 8
-
-static gint e_canonical_decomposition (gunichar ch, gunichar * buf);
-static gunichar e_stripped_char (gunichar ch);
-
-/*
- * This my favourite
- *
- * strstr doing case insensitive, decomposing search
- *
- * Lauris
- */
-
-const gchar *
-e_utf8_strstrcasedecomp (const gchar *haystack, const gchar *needle)
-{
- gunichar *nuni;
- gunichar unival;
- gint nlen;
- const guchar *o, *p;
-
- if (haystack == NULL) return NULL;
- if (needle == NULL) return NULL;
- if (strlen (needle) == 0) return haystack;
- if (strlen (haystack) == 0) return NULL;
-
- nuni = alloca (sizeof (gunichar) * strlen (needle));
-
- nlen = 0;
- for (p = e_unicode_get_utf8 (needle, &unival); p && unival; p = e_unicode_get_utf8 (p, &unival)) {
- gint sc;
- sc = e_stripped_char (unival);
- if (sc) {
- nuni[nlen++] = sc;
- }
- }
- /* NULL means there was illegal utf-8 sequence */
- if (!p) return NULL;
- /* If everything is correct, we have decomposed, lowercase, stripped needle */
- if (nlen < 1) return haystack;
-
- o = haystack;
- for (p = e_unicode_get_utf8 (o, &unival); p && unival; p = e_unicode_get_utf8 (p, &unival)) {
- gint sc;
- sc = e_stripped_char (unival);
- if (sc) {
- /* We have valid stripped char */
- if (sc == nuni[0]) {
- const gchar *q = p;
- gint npos = 1;
- while (npos < nlen) {
- q = e_unicode_get_utf8 (q, &unival);
- if (!q || !unival) return NULL;
- sc = e_stripped_char (unival);
- if ((!sc) || (sc != nuni[npos])) break;
- npos++;
- }
- if (npos == nlen) {
- return p;
- }
- }
- }
- o = p;
- }
-
- return NULL;
-}
-
-const gchar *
-e_utf8_strstrcase (const gchar *haystack, const gchar *needle)
-{
- gunichar *nuni;
- gunichar unival;
- gint nlen;
- const guchar *o, *p;
-
- if (haystack == NULL) return NULL;
- if (needle == NULL) return NULL;
- if (strlen (needle) == 0) return haystack;
- if (strlen (haystack) == 0) return NULL;
-
- nuni = alloca (sizeof (gunichar) * strlen (needle));
-
- nlen = 0;
- for (p = e_unicode_get_utf8 (needle, &unival); p && unival; p = e_unicode_get_utf8 (p, &unival)) {
- nuni[nlen++] = g_unichar_tolower (unival);
- }
- /* NULL means there was illegal utf-8 sequence */
- if (!p) return NULL;
-
- o = haystack;
- for (p = e_unicode_get_utf8 (o, &unival); p && unival; p = e_unicode_get_utf8 (p, &unival)) {
- gint sc;
- sc = g_unichar_tolower (unival);
- /* We have valid stripped char */
- if (sc == nuni[0]) {
- const gchar *q = p;
- gint npos = 1;
- while (npos < nlen) {
- q = e_unicode_get_utf8 (q, &unival);
- if (!q || !unival) return NULL;
- sc = g_unichar_tolower (unival);
- if (sc != nuni[npos]) break;
- npos++;
- }
- if (npos == nlen) {
- return p;
- }
- }
- o = p;
- }
-
- return NULL;
-}
-
-#if 0
-const gchar *
-e_utf8_strstrcase (const gchar *haystack, const gchar *needle)
-{
- gchar *p;
- gunichar *huni, *nuni;
- gunichar unival;
- gint hlen, nlen, hp, np;
-
- if (haystack == NULL) return NULL;
- if (needle == NULL) return NULL;
- if (strlen (needle) == 0) return haystack;
-
- huni = alloca (sizeof (gunichar) * strlen (haystack));
-
- for (hlen = 0, p = e_unicode_get_utf8 (haystack, &unival); p && unival; hlen++, p = e_unicode_get_utf8 (p, &unival)) {
- huni[hlen] = g_unichar_tolower (unival);
- }
-
- if (!p) return NULL;
- if (hlen == 0) return NULL;
-
- nuni = alloca (sizeof (gunichar) * strlen (needle));
-
- for (nlen = 0, p = e_unicode_get_utf8 (needle, &unival); p && unival; nlen++, p = e_unicode_get_utf8 (p, &unival)) {
- nuni[nlen] = g_unichar_tolower (unival);
- }
-
- if (!p) return NULL;
- if (nlen == 0) return NULL;
-
- if (hlen < nlen) return NULL;
-
- for (hp = 0; hp <= hlen - nlen; hp++) {
- for (np = 0; np < nlen; np++) {
- if (huni[hp + np] != nuni[np]) break;
- }
- if (np == nlen) return haystack + unicode_offset_to_index (haystack, hp);
- }
-
- return NULL;
-}
-#endif
-
-gchar *
-e_utf8_from_gtk_event_key (GtkWidget *widget, guint keyval, const gchar *string)
-{
- gint unival;
- gchar *utf;
- gint unilen;
-
- if (keyval == GDK_VoidSymbol) {
- utf = e_utf8_from_gtk_string (widget, string);
- } else {
- unival = gdk_keyval_to_unicode (keyval);
-
- if (unival < ' ') return NULL;
-
- utf = g_new (gchar, 7);
-
- unilen = e_unichar_to_utf8 (unival, utf);
-
- utf[unilen] = '\0';
- }
-
- return utf;
-}
-
-gchar *
-e_utf8_from_gtk_string_sized (GtkWidget *widget, const gchar *string, gint bytes)
-{
- iconv_t ic;
- char *new, *ob;
- gchar * ib;
- size_t ibl, obl;
-
- g_return_val_if_fail (widget != NULL, NULL);
- g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
-
- if (!string) return NULL;
-
- g_return_val_if_fail (widget, NULL);
-
- ic = e_iconv_from_gdk_font (widget->style->font);
- if (ic == (iconv_t) -1) {
- XFontStruct *xfs;
- /* If iconv is missing we assume either iso-10646 or iso-8859-1 */
- xfs = GDK_FONT_XFONT (widget->style->font);
- if (widget->style->font->type == GDK_FONT_FONTSET || ((xfs->min_byte1 != 0) || (xfs->max_byte1 != 0))) {
- gint i;
- const guchar *ib;
- guchar * ob, * new;
- /* iso-10646 */
- ib = string;
- new = ob = g_new (unsigned char, bytes * 6 + 1);
- for (i = 0; i < (bytes - 1); i += 2) {
- ob += e_unichar_to_utf8 (ib[i] * 256 + ib[i + 1], ob);
- }
- *ob = '\0';
- return new;
- } else {
- gint i;
- /* iso-8859-1 */
- ib = (char *) string;
- new = ob = g_new (unsigned char, bytes * 2 + 1);
- for (i = 0; i < (bytes); i ++) {
- ob += e_unichar_to_utf8 (ib[i], ob);
- }
- *ob = '\0';
- return new;
- }
- }
-
- ib = (char *) string;
- ibl = bytes;
- new = ob = g_new (gchar, ibl * 6 + 1);
- obl = ibl * 6 + 1;
-
- while (ibl > 0) {
- iconv (ic, &ib, &ibl, &ob, &obl);
- if (ibl > 0) {
- gint len;
- if ((*ib & 0x80) == 0x00) len = 1;
- else if ((*ib &0xe0) == 0xc0) len = 2;
- else if ((*ib &0xf0) == 0xe0) len = 3;
- else if ((*ib &0xf8) == 0xf0) len = 4;
- else {
- g_warning ("Invalid UTF-8 sequence");
- break;
- }
- ib += len;
- ibl = bytes - (ib - string);
- if (ibl > bytes) ibl = 0;
- *ob++ = '_';
- obl--;
- }
- }
-
- *ob = '\0';
-
- return new;
-}
-
-gchar *
-e_utf8_from_gtk_string (GtkWidget *widget, const gchar *string)
-{
- if (!string) return NULL;
- return e_utf8_from_gtk_string_sized (widget, string, strlen (string));
-}
-
-gchar *
-e_utf8_to_gtk_string_sized (GtkWidget *widget, const gchar *string, gint bytes)
-{
- iconv_t ic;
- char *new, *ob;
- gchar * ib;
- size_t ibl, obl;
-
- if (!string) return NULL;
-
- g_return_val_if_fail (widget, NULL);
-
- ic = e_iconv_to_gdk_font (widget->style->font);
- if (ic == (iconv_t) -1) {
- XFontStruct *xfs;
- gboolean twobyte;
- gint len;
- const gchar *u;
- gunichar uc;
- /* If iconv is missing we assume either iso-10646 or iso-8859-1 */
- xfs = GDK_FONT_XFONT (widget->style->font);
- twobyte = (widget->style->font->type == GDK_FONT_FONTSET || ((xfs->min_byte1 != 0) || (xfs->max_byte1 != 0)));
-
- new = g_new (unsigned char, bytes * 4 + 1);
- u = string;
- len = 0;
-
- while ((u) && (u - string < bytes)) {
- u = e_unicode_get_utf8 (u, &uc);
- if (twobyte) {
- new[len++] = (uc & 0xff00) >> 8;
- }
- new[len++] = uc & 0xff;
- }
- new[len] = '\0';
- d(printf("utf8_to_gtk: %s => %s\n", string, new));
- return new;
- }
-
- ib = (char *) string;
- ibl = bytes;
- new = ob = g_new (gchar, ibl * 4 + 1);
- obl = ibl * 4 + 1;
-
- while (ibl > 0) {
- iconv (ic, &ib, &ibl, &ob, &obl);
- if (ibl > 0) {
- gint len;
- if ((*ib & 0x80) == 0x00) len = 1;
- else if ((*ib &0xe0) == 0xc0) len = 2;
- else if ((*ib &0xf0) == 0xe0) len = 3;
- else if ((*ib &0xf8) == 0xf0) len = 4;
- else {
- g_warning ("Invalid UTF-8 sequence");
- break;
- }
- ib += len;
- ibl = bytes - (ib - string);
- if (ibl > bytes) ibl = 0;
- *ob++ = '_';
- obl--;
- }
- }
-
- *ob = '\0';
-
- d(printf("utf8_to_gtk: %s => %s\n", string, new));
- return new;
-}
-
-gchar *
-e_utf8_to_gtk_string (GtkWidget *widget, const gchar *string)
-{
- if (!string) return NULL;
- return e_utf8_to_gtk_string_sized (widget, string, strlen (string));
-}
-
-gchar *
-e_utf8_from_locale_string_sized (const gchar *string, gint bytes)
-{
- iconv_t ic;
- char *new, *ob;
- gchar * ib;
- size_t ibl, obl;
-
- if (!string) return NULL;
-
- ic = e_iconv_from_locale ();
- if (ic == (iconv_t) -1) {
- gint i;
- /* iso-8859-1 */
- ib = (char *) string;
- new = ob = g_new (unsigned char, bytes * 2 + 1);
- for (i = 0; i < (bytes); i ++) {
- ob += e_unichar_to_utf8 (ib[i], ob);
- }
- *ob = '\0';
- return new;
- }
-
- ib = (char *) string;
- ibl = bytes;
- new = ob = g_new (gchar, ibl * 6 + 1);
- obl = ibl * 6 + 1;
-
- while (ibl > 0) {
- iconv (ic, &ib, &ibl, &ob, &obl);
- if (ibl > 0) {
- gint len;
- if ((*ib & 0x80) == 0x00) len = 1;
- else if ((*ib &0xe0) == 0xc0) len = 2;
- else if ((*ib &0xf0) == 0xe0) len = 3;
- else if ((*ib &0xf8) == 0xf0) len = 4;
- else {
- g_warning ("Invalid UTF-8 sequence");
- break;
- }
- ib += len;
- ibl = bytes - (ib - string);
- if (ibl > bytes) ibl = 0;
- *ob++ = '_';
- obl--;
- }
- }
-
- *ob = '\0';
-
- return new;
-}
-
-gchar *
-e_utf8_from_locale_string (const gchar *string)
-{
- if (!string) return NULL;
- return e_utf8_from_locale_string_sized (string, strlen (string));
-}
-
-gchar *
-e_utf8_to_locale_string_sized (const gchar *string, gint bytes)
-{
- iconv_t ic;
- char *new, *ob;
- gchar * ib;
- size_t ibl, obl;
-
- if (!string) return NULL;
-
- ic = e_iconv_to_locale ();
- if (ic == (iconv_t) -1) {
- gint len;
- const gchar *u;
- gunichar uc;
-
- new = g_new (unsigned char, bytes * 4 + 1);
- u = string;
- len = 0;
-
- while ((u) && (u - string < bytes)) {
- u = e_unicode_get_utf8 (u, &uc);
- new[len++] = uc & 0xff;
- }
- new[len] = '\0';
- return new;
- }
-
- ib = (char *) string;
- ibl = bytes;
- new = ob = g_new (gchar, ibl * 4 + 1);
- obl = ibl * 4 + 1;
-
- while (ibl > 0) {
- iconv (ic, &ib, &ibl, &ob, &obl);
- if (ibl > 0) {
- gint len;
- if ((*ib & 0x80) == 0x00) len = 1;
- else if ((*ib &0xe0) == 0xc0) len = 2;
- else if ((*ib &0xf0) == 0xe0) len = 3;
- else if ((*ib &0xf8) == 0xf0) len = 4;
- else {
- g_warning ("Invalid UTF-8 sequence");
- break;
- }
- ib += len;
- ibl = bytes - (ib - string);
- if (ibl > bytes) ibl = 0;
- *ob++ = '_';
- obl--;
- }
- }
-
- *ob = '\0';
-
- return new;
-}
-
-gchar *
-e_utf8_to_locale_string (const gchar *string)
-{
- if (!string) return NULL;
- return e_utf8_to_locale_string_sized (string, strlen (string));
-}
-
-gchar *
-e_utf8_gtk_entry_get_text (GtkEntry *entry)
-{
- gchar *s, *u;
-
- s = gtk_entry_get_text (entry);
- if (!s) return NULL;
- u = e_utf8_from_gtk_string ((GtkWidget *) entry, s);
- return u;
-}
-
-gchar *
-e_utf8_gtk_editable_get_text (GtkEditable *editable)
-{
- return e_utf8_gtk_editable_get_chars(editable, 0, -1);
-}
-
-gchar *
-e_utf8_gtk_editable_get_chars (GtkEditable *editable, gint start, gint end)
-{
- gchar *s, *u;
-
- s = gtk_editable_get_chars (editable, start, end);
- u = e_utf8_from_gtk_string ((GtkWidget *) editable, s);
- g_free (s);
- return u;
-}
-
-void
-e_utf8_gtk_editable_insert_text (GtkEditable *editable, const gchar *text, gint length, gint *position)
-{
- gchar *s;
-
- s = e_utf8_to_gtk_string_sized ((GtkWidget *) editable, text, length);
-
- gtk_editable_insert_text (editable, s, length, position);
-
- g_free (s);
-}
-
-void
-e_utf8_gtk_editable_set_text (GtkEditable *editable, const gchar *text)
-{
- int position;
- gtk_editable_delete_text(editable, 0, -1);
- if (text)
- e_utf8_gtk_editable_insert_text(editable, text, strlen(text), &position);
-}
-
-void
-e_utf8_gtk_entry_set_text (GtkEntry *entry, const gchar *text)
-{
- if (!text)
- gtk_entry_set_text(entry, "");
- else {
- gchar *s;
-
- s = e_utf8_to_gtk_string ((GtkWidget *) entry, text);
- gtk_entry_set_text (entry, s);
-
- if (s) g_free (s);
- }
-}
-
-GtkWidget *
-e_utf8_gtk_menu_item_new_with_label (GtkMenu *menu, const gchar *label)
-{
- GtkWidget *w;
- gchar *s;
-
- if (!label) return NULL;
-
- s = e_utf8_to_gtk_string ((GtkWidget *) menu, label);
- w = gtk_menu_item_new_with_label (s);
-
- g_free (s);
-
- return w;
-}
-
-void
-e_utf8_gtk_clist_set_text (GtkCList *clist, gint row, gint col, const gchar *text)
-{
- gchar *s;
-
- if (!text) return;
-
- s = e_utf8_to_gtk_string ((GtkWidget *) clist, text);
- gtk_clist_set_text (clist, row, col, s);
-
- if (s) g_free (s);
-}
-
-gint
-e_utf8_gtk_clist_append (GtkCList *clist, gchar *text[])
-{
- gint row, i;
- gchar **v;
-
- if (!text) return 0;
-
- v = g_new (gchar *, clist->columns);
- for (i = 0; i < clist->columns; i++)
- v[i] = e_utf8_to_gtk_string ((GtkWidget *) clist, text[i]);
-
- row = gtk_clist_append (clist, v);
-
- for (i = 0; i < clist->columns; i++)
- if (v[i]) g_free (v[i]);
-
- return row;
-}
-
-/*
- * Translate \U+XXXX\ sequences to utf8 chars
- */
-
-gchar *
-e_utf8_xml1_decode (const gchar *text)
-{
- const guchar *c;
- guchar *u, *d;
- int len, s;
-
- g_return_val_if_fail (text != NULL, NULL);
-
- len = strlen (text)+1;
- /* len * 2 is absolute maximum */
- u = d = g_malloc (len * 2);
-
- c = text;
- s = 0;
- while (s < len) {
- if ((s <= (len - 8)) &&
- (c[s ] == '\\') &&
- (c[s + 1] == 'U' ) &&
- (c[s + 2] == '+' ) &&
- isxdigit (c[s + 3]) &&
- isxdigit (c[s + 4]) &&
- isxdigit (c[s + 5]) &&
- isxdigit (c[s + 6]) &&
- (c[s + 7] == '\\')) {
- /* Valid \U+XXXX\ sequence */
- unsigned int unival;
- unival = strtol (c + s + 3, NULL, 16);
- d += e_unichar_to_utf8 (unival, d);
- s += 8;
- } else if (c[s] > 127) {
- /* fixme: We assume iso-8859-1 currently */
- d += e_unichar_to_utf8 (c[s], d);
- s += 1;
- } else {
- *d++ = c[s++];
- }
- }
- *d++ = '\0';
- u = g_realloc (u, (d - u));
-
- return u;
-}
-
-gchar *
-e_utf8_xml1_encode (const gchar *text)
-{
- guchar *u, *d, *c;
- int unival;
- int len;
-
- g_return_val_if_fail (text != NULL, NULL);
-
- len = 0;
- for (u = e_unicode_get_utf8 (text, &unival); u && unival; u = e_unicode_get_utf8 (u, &unival)) {
- if ((unival >= 0x80) || (unival == '\\')) {
- len += 8;
- } else {
- len += 1;
- }
- }
- d = c = g_new (guchar, len + 1);
-
- for (u = e_unicode_get_utf8 (text, &unival); u && unival; u = e_unicode_get_utf8 (u, &unival)) {
- if ((unival >= 0x80) || (unival == '\\')) {
- *c++ = '\\';
- *c++ = 'U';
- *c++ = '+';
- c += sprintf (c, "%04x", unival);
- *c++ = '\\';
- } else {
- *c++ = unival;
- }
- }
- *c = '\0';
-
- return d;
-}
-
-/**
- * e_unichar_to_utf8:
- * @c: a ISO10646 character code
- * @outbuf: output buffer, must have at least 6 bytes of space.
- * If %NULL, the length will be computed and returned
- * and nothing will be written to @out.
- *
- * Convert a single character to utf8
- *
- * Return value: number of bytes written
- **/
-
-gint
-e_unichar_to_utf8 (gint c, gchar *outbuf)
-{
- size_t len = 0;
- int first;
- int i;
-
- if (c < 0x80)
- {
- first = 0;
- len = 1;
- }
- else if (c < 0x800)
- {
- first = 0xc0;
- len = 2;
- }
- else if (c < 0x10000)
- {
- first = 0xe0;
- len = 3;
- }
- else if (c < 0x200000)
- {
- first = 0xf0;
- len = 4;
- }
- else if (c < 0x4000000)
- {
- first = 0xf8;
- len = 5;
- }
- else
- {
- first = 0xfc;
- len = 6;
- }
-
- if (outbuf)
- {
- for (i = len - 1; i > 0; --i)
- {
- outbuf[i] = (c & 0x3f) | 0x80;
- c >>= 6;
- }
- outbuf[0] = c | first;
- }
-
- return len;
-}
-
-gchar *
-e_unicode_get_utf8 (const gchar *text, gunichar *out)
-{
- *out = g_utf8_get_char (text);
- return (*out == (gunichar)-1) ? NULL : g_utf8_next_char (text);
-}
-
-/*
- * The following is borrowed from Gtk+ 1.3
- */
-
-/* Thanks to Markus G. Kuhn <mkuhn@acm.org> for the ksysym<->Unicode
- * mapping functions, from the xterm sources.
- */
-
-/* These tables could be compressed by contiguous ranges, but the benefit of doing so
- * is smallish. It would save about ~1000 bytes total.
- */
-
-static struct {
- unsigned short keysym;
- unsigned short ucs;
-} gdk_keysym_to_unicode_tab[] = {
- { 0x01a1, 0x0104 }, /* Aogonek Ä„ LATIN CAPITAL LETTER A WITH OGONEK */
- { 0x01a2, 0x02d8 }, /* breve ˘ BREVE */
- { 0x01a3, 0x0141 }, /* Lstroke Å LATIN CAPITAL LETTER L WITH STROKE */
- { 0x01a5, 0x013d }, /* Lcaron Ľ LATIN CAPITAL LETTER L WITH CARON */
- { 0x01a6, 0x015a }, /* Sacute Åš LATIN CAPITAL LETTER S WITH ACUTE */
- { 0x01a9, 0x0160 }, /* Scaron Å  LATIN CAPITAL LETTER S WITH CARON */
- { 0x01aa, 0x015e }, /* Scedilla Åž LATIN CAPITAL LETTER S WITH CEDILLA */
- { 0x01ab, 0x0164 }, /* Tcaron Ť LATIN CAPITAL LETTER T WITH CARON */
- { 0x01ac, 0x0179 }, /* Zacute Ź LATIN CAPITAL LETTER Z WITH ACUTE */
- { 0x01ae, 0x017d }, /* Zcaron Ž LATIN CAPITAL LETTER Z WITH CARON */
- { 0x01af, 0x017b }, /* Zabovedot Å» LATIN CAPITAL LETTER Z WITH DOT ABOVE */
- { 0x01b1, 0x0105 }, /* aogonek Ä… LATIN SMALL LETTER A WITH OGONEK */
- { 0x01b2, 0x02db }, /* ogonek Ë› OGONEK */
- { 0x01b3, 0x0142 }, /* lstroke Å‚ LATIN SMALL LETTER L WITH STROKE */
- { 0x01b5, 0x013e }, /* lcaron ľ LATIN SMALL LETTER L WITH CARON */
- { 0x01b6, 0x015b }, /* sacute Å› LATIN SMALL LETTER S WITH ACUTE */
- { 0x01b7, 0x02c7 }, /* caron ˇ CARON */
- { 0x01b9, 0x0161 }, /* scaron Å¡ LATIN SMALL LETTER S WITH CARON */
- { 0x01ba, 0x015f }, /* scedilla ÅŸ LATIN SMALL LETTER S WITH CEDILLA */
- { 0x01bb, 0x0165 }, /* tcaron ť LATIN SMALL LETTER T WITH CARON */
- { 0x01bc, 0x017a }, /* zacute ź LATIN SMALL LETTER Z WITH ACUTE */
- { 0x01bd, 0x02dd }, /* doubleacute Ë DOUBLE ACUTE ACCENT */
- { 0x01be, 0x017e }, /* zcaron ž LATIN SMALL LETTER Z WITH CARON */
- { 0x01bf, 0x017c }, /* zabovedot ż LATIN SMALL LETTER Z WITH DOT ABOVE */
- { 0x01c0, 0x0154 }, /* Racute Å” LATIN CAPITAL LETTER R WITH ACUTE */
- { 0x01c3, 0x0102 }, /* Abreve Ä‚ LATIN CAPITAL LETTER A WITH BREVE */
- { 0x01c5, 0x0139 }, /* Lacute Ĺ LATIN CAPITAL LETTER L WITH ACUTE */
- { 0x01c6, 0x0106 }, /* Cacute Ć LATIN CAPITAL LETTER C WITH ACUTE */
- { 0x01c8, 0x010c }, /* Ccaron Č LATIN CAPITAL LETTER C WITH CARON */
- { 0x01ca, 0x0118 }, /* Eogonek Ę LATIN CAPITAL LETTER E WITH OGONEK */
- { 0x01cc, 0x011a }, /* Ecaron Äš LATIN CAPITAL LETTER E WITH CARON */
- { 0x01cf, 0x010e }, /* Dcaron ÄŽ LATIN CAPITAL LETTER D WITH CARON */
- { 0x01d0, 0x0110 }, /* Dstroke Ä LATIN CAPITAL LETTER D WITH STROKE */
- { 0x01d1, 0x0143 }, /* Nacute Ń LATIN CAPITAL LETTER N WITH ACUTE */
- { 0x01d2, 0x0147 }, /* Ncaron Ň LATIN CAPITAL LETTER N WITH CARON */
- { 0x01d5, 0x0150 }, /* Odoubleacute Å LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */
- { 0x01d8, 0x0158 }, /* Rcaron Ř LATIN CAPITAL LETTER R WITH CARON */
- { 0x01d9, 0x016e }, /* Uring Å® LATIN CAPITAL LETTER U WITH RING ABOVE */
- { 0x01db, 0x0170 }, /* Udoubleacute Å° LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */
- { 0x01de, 0x0162 }, /* Tcedilla Ţ LATIN CAPITAL LETTER T WITH CEDILLA */
- { 0x01e0, 0x0155 }, /* racute Å• LATIN SMALL LETTER R WITH ACUTE */
- { 0x01e3, 0x0103 }, /* abreve ă LATIN SMALL LETTER A WITH BREVE */
- { 0x01e5, 0x013a }, /* lacute ĺ LATIN SMALL LETTER L WITH ACUTE */
- { 0x01e6, 0x0107 }, /* cacute ć LATIN SMALL LETTER C WITH ACUTE */
- { 0x01e8, 0x010d }, /* ccaron Ä LATIN SMALL LETTER C WITH CARON */
- { 0x01ea, 0x0119 }, /* eogonek Ä™ LATIN SMALL LETTER E WITH OGONEK */
- { 0x01ec, 0x011b }, /* ecaron Ä› LATIN SMALL LETTER E WITH CARON */
- { 0x01ef, 0x010f }, /* dcaron Ä LATIN SMALL LETTER D WITH CARON */
- { 0x01f0, 0x0111 }, /* dstroke Ä‘ LATIN SMALL LETTER D WITH STROKE */
- { 0x01f1, 0x0144 }, /* nacute Å„ LATIN SMALL LETTER N WITH ACUTE */
- { 0x01f2, 0x0148 }, /* ncaron ň LATIN SMALL LETTER N WITH CARON */
- { 0x01f5, 0x0151 }, /* odoubleacute Å‘ LATIN SMALL LETTER O WITH DOUBLE ACUTE */
- { 0x01f8, 0x0159 }, /* rcaron Å™ LATIN SMALL LETTER R WITH CARON */
- { 0x01f9, 0x016f }, /* uring ů LATIN SMALL LETTER U WITH RING ABOVE */
- { 0x01fb, 0x0171 }, /* udoubleacute ű LATIN SMALL LETTER U WITH DOUBLE ACUTE */
- { 0x01fe, 0x0163 }, /* tcedilla ţ LATIN SMALL LETTER T WITH CEDILLA */
- { 0x01ff, 0x02d9 }, /* abovedot Ë™ DOT ABOVE */
- { 0x02a1, 0x0126 }, /* Hstroke Ħ LATIN CAPITAL LETTER H WITH STROKE */
- { 0x02a6, 0x0124 }, /* Hcircumflex Ĥ LATIN CAPITAL LETTER H WITH CIRCUMFLEX */
- { 0x02a9, 0x0130 }, /* Iabovedot Ä° LATIN CAPITAL LETTER I WITH DOT ABOVE */
- { 0x02ab, 0x011e }, /* Gbreve Äž LATIN CAPITAL LETTER G WITH BREVE */
- { 0x02ac, 0x0134 }, /* Jcircumflex Ä´ LATIN CAPITAL LETTER J WITH CIRCUMFLEX */
- { 0x02b1, 0x0127 }, /* hstroke ħ LATIN SMALL LETTER H WITH STROKE */
- { 0x02b6, 0x0125 }, /* hcircumflex ĥ LATIN SMALL LETTER H WITH CIRCUMFLEX */
- { 0x02b9, 0x0131 }, /* idotless ı LATIN SMALL LETTER DOTLESS I */
- { 0x02bb, 0x011f }, /* gbreve ÄŸ LATIN SMALL LETTER G WITH BREVE */
- { 0x02bc, 0x0135 }, /* jcircumflex ĵ LATIN SMALL LETTER J WITH CIRCUMFLEX */
- { 0x02c5, 0x010a }, /* Cabovedot ÄŠ LATIN CAPITAL LETTER C WITH DOT ABOVE */
- { 0x02c6, 0x0108 }, /* Ccircumflex Ĉ LATIN CAPITAL LETTER C WITH CIRCUMFLEX */
- { 0x02d5, 0x0120 }, /* Gabovedot Ä  LATIN CAPITAL LETTER G WITH DOT ABOVE */
- { 0x02d8, 0x011c }, /* Gcircumflex Ĝ LATIN CAPITAL LETTER G WITH CIRCUMFLEX */
- { 0x02dd, 0x016c }, /* Ubreve Ŭ LATIN CAPITAL LETTER U WITH BREVE */
- { 0x02de, 0x015c }, /* Scircumflex Ŝ LATIN CAPITAL LETTER S WITH CIRCUMFLEX */
- { 0x02e5, 0x010b }, /* cabovedot Ä‹ LATIN SMALL LETTER C WITH DOT ABOVE */
- { 0x02e6, 0x0109 }, /* ccircumflex ĉ LATIN SMALL LETTER C WITH CIRCUMFLEX */
- { 0x02f5, 0x0121 }, /* gabovedot Ä¡ LATIN SMALL LETTER G WITH DOT ABOVE */
- { 0x02f8, 0x011d }, /* gcircumflex Ä LATIN SMALL LETTER G WITH CIRCUMFLEX */
- { 0x02fd, 0x016d }, /* ubreve Å­ LATIN SMALL LETTER U WITH BREVE */
- { 0x02fe, 0x015d }, /* scircumflex Å LATIN SMALL LETTER S WITH CIRCUMFLEX */
- { 0x03a2, 0x0138 }, /* kra ĸ LATIN SMALL LETTER KRA */
- { 0x03a3, 0x0156 }, /* Rcedilla Å– LATIN CAPITAL LETTER R WITH CEDILLA */
- { 0x03a5, 0x0128 }, /* Itilde Ĩ LATIN CAPITAL LETTER I WITH TILDE */
- { 0x03a6, 0x013b }, /* Lcedilla Ä» LATIN CAPITAL LETTER L WITH CEDILLA */
- { 0x03aa, 0x0112 }, /* Emacron Ä’ LATIN CAPITAL LETTER E WITH MACRON */
- { 0x03ab, 0x0122 }, /* Gcedilla Ģ LATIN CAPITAL LETTER G WITH CEDILLA */
- { 0x03ac, 0x0166 }, /* Tslash Ŧ LATIN CAPITAL LETTER T WITH STROKE */
- { 0x03b3, 0x0157 }, /* rcedilla Å— LATIN SMALL LETTER R WITH CEDILLA */
- { 0x03b5, 0x0129 }, /* itilde Ä© LATIN SMALL LETTER I WITH TILDE */
- { 0x03b6, 0x013c }, /* lcedilla ļ LATIN SMALL LETTER L WITH CEDILLA */
- { 0x03ba, 0x0113 }, /* emacron Ä“ LATIN SMALL LETTER E WITH MACRON */
- { 0x03bb, 0x0123 }, /* gcedilla ģ LATIN SMALL LETTER G WITH CEDILLA */
- { 0x03bc, 0x0167 }, /* tslash ŧ LATIN SMALL LETTER T WITH STROKE */
- { 0x03bd, 0x014a }, /* ENG ÅŠ LATIN CAPITAL LETTER ENG */
- { 0x03bf, 0x014b }, /* eng Å‹ LATIN SMALL LETTER ENG */
- { 0x03c0, 0x0100 }, /* Amacron Ā LATIN CAPITAL LETTER A WITH MACRON */
- { 0x03c7, 0x012e }, /* Iogonek Ä® LATIN CAPITAL LETTER I WITH OGONEK */
- { 0x03cc, 0x0116 }, /* Eabovedot Ä– LATIN CAPITAL LETTER E WITH DOT ABOVE */
- { 0x03cf, 0x012a }, /* Imacron Ī LATIN CAPITAL LETTER I WITH MACRON */
- { 0x03d1, 0x0145 }, /* Ncedilla Å… LATIN CAPITAL LETTER N WITH CEDILLA */
- { 0x03d2, 0x014c }, /* Omacron Ō LATIN CAPITAL LETTER O WITH MACRON */
- { 0x03d3, 0x0136 }, /* Kcedilla Ķ LATIN CAPITAL LETTER K WITH CEDILLA */
- { 0x03d9, 0x0172 }, /* Uogonek Ų LATIN CAPITAL LETTER U WITH OGONEK */
- { 0x03dd, 0x0168 }, /* Utilde Ũ LATIN CAPITAL LETTER U WITH TILDE */
- { 0x03de, 0x016a }, /* Umacron Ū LATIN CAPITAL LETTER U WITH MACRON */
- { 0x03e0, 0x0101 }, /* amacron Ä LATIN SMALL LETTER A WITH MACRON */
- { 0x03e7, 0x012f }, /* iogonek į LATIN SMALL LETTER I WITH OGONEK */
- { 0x03ec, 0x0117 }, /* eabovedot Ä— LATIN SMALL LETTER E WITH DOT ABOVE */
- { 0x03ef, 0x012b }, /* imacron Ä« LATIN SMALL LETTER I WITH MACRON */
- { 0x03f1, 0x0146 }, /* ncedilla ņ LATIN SMALL LETTER N WITH CEDILLA */
- { 0x03f2, 0x014d }, /* omacron Å LATIN SMALL LETTER O WITH MACRON */
- { 0x03f3, 0x0137 }, /* kcedilla Ä· LATIN SMALL LETTER K WITH CEDILLA */
- { 0x03f9, 0x0173 }, /* uogonek ų LATIN SMALL LETTER U WITH OGONEK */
- { 0x03fd, 0x0169 }, /* utilde Å© LATIN SMALL LETTER U WITH TILDE */
- { 0x03fe, 0x016b }, /* umacron Å« LATIN SMALL LETTER U WITH MACRON */
- { 0x047e, 0x203e }, /* overline ‾ OVERLINE */
- { 0x04a1, 0x3002 }, /* kana_fullstop 。 IDEOGRAPHIC FULL STOP */
- { 0x04a2, 0x300c }, /* kana_openingbracket 「 LEFT CORNER BRACKET */
- { 0x04a3, 0x300d }, /* kana_closingbracket 〠RIGHT CORNER BRACKET */
- { 0x04a4, 0x3001 }, /* kana_comma 〠IDEOGRAPHIC COMMA */
- { 0x04a5, 0x30fb }, /* kana_conjunctive ・ KATAKANA MIDDLE DOT */
- { 0x04a6, 0x30f2 }, /* kana_WO ヲ KATAKANA LETTER WO */
- { 0x04a7, 0x30a1 }, /* kana_a ã‚¡ KATAKANA LETTER SMALL A */
- { 0x04a8, 0x30a3 }, /* kana_i ã‚£ KATAKANA LETTER SMALL I */
- { 0x04a9, 0x30a5 }, /* kana_u ã‚¥ KATAKANA LETTER SMALL U */
- { 0x04aa, 0x30a7 }, /* kana_e ェ KATAKANA LETTER SMALL E */
- { 0x04ab, 0x30a9 }, /* kana_o ã‚© KATAKANA LETTER SMALL O */
- { 0x04ac, 0x30e3 }, /* kana_ya ャ KATAKANA LETTER SMALL YA */
- { 0x04ad, 0x30e5 }, /* kana_yu ュ KATAKANA LETTER SMALL YU */
- { 0x04ae, 0x30e7 }, /* kana_yo ョ KATAKANA LETTER SMALL YO */
- { 0x04af, 0x30c3 }, /* kana_tsu ッ KATAKANA LETTER SMALL TU */
- { 0x04b0, 0x30fc }, /* prolongedsound ー KATAKANA-HIRAGANA PROLONGED SOUND MARK */
- { 0x04b1, 0x30a2 }, /* kana_A ã‚¢ KATAKANA LETTER A */
- { 0x04b2, 0x30a4 }, /* kana_I イ KATAKANA LETTER I */
- { 0x04b3, 0x30a6 }, /* kana_U ウ KATAKANA LETTER U */
- { 0x04b4, 0x30a8 }, /* kana_E エ KATAKANA LETTER E */
- { 0x04b5, 0x30aa }, /* kana_O オ KATAKANA LETTER O */
- { 0x04b6, 0x30ab }, /* kana_KA ã‚« KATAKANA LETTER KA */
- { 0x04b7, 0x30ad }, /* kana_KI ã‚­ KATAKANA LETTER KI */
- { 0x04b8, 0x30af }, /* kana_KU ク KATAKANA LETTER KU */
- { 0x04b9, 0x30b1 }, /* kana_KE ケ KATAKANA LETTER KE */
- { 0x04ba, 0x30b3 }, /* kana_KO コ KATAKANA LETTER KO */
- { 0x04bb, 0x30b5 }, /* kana_SA サ KATAKANA LETTER SA */
- { 0x04bc, 0x30b7 }, /* kana_SHI ã‚· KATAKANA LETTER SI */
- { 0x04bd, 0x30b9 }, /* kana_SU ス KATAKANA LETTER SU */
- { 0x04be, 0x30bb }, /* kana_SE ã‚» KATAKANA LETTER SE */
- { 0x04bf, 0x30bd }, /* kana_SO ソ KATAKANA LETTER SO */
- { 0x04c0, 0x30bf }, /* kana_TA ã‚¿ KATAKANA LETTER TA */
- { 0x04c1, 0x30c1 }, /* kana_CHI ムKATAKANA LETTER TI */
- { 0x04c2, 0x30c4 }, /* kana_TSU ツ KATAKANA LETTER TU */
- { 0x04c3, 0x30c6 }, /* kana_TE テ KATAKANA LETTER TE */
- { 0x04c4, 0x30c8 }, /* kana_TO ト KATAKANA LETTER TO */
- { 0x04c5, 0x30ca }, /* kana_NA ナ KATAKANA LETTER NA */
- { 0x04c6, 0x30cb }, /* kana_NI ニ KATAKANA LETTER NI */
- { 0x04c7, 0x30cc }, /* kana_NU ヌ KATAKANA LETTER NU */
- { 0x04c8, 0x30cd }, /* kana_NE ムKATAKANA LETTER NE */
- { 0x04c9, 0x30ce }, /* kana_NO ノ KATAKANA LETTER NO */
- { 0x04ca, 0x30cf }, /* kana_HA ムKATAKANA LETTER HA */
- { 0x04cb, 0x30d2 }, /* kana_HI ヒ KATAKANA LETTER HI */
- { 0x04cc, 0x30d5 }, /* kana_FU フ KATAKANA LETTER HU */
- { 0x04cd, 0x30d8 }, /* kana_HE ヘ KATAKANA LETTER HE */
- { 0x04ce, 0x30db }, /* kana_HO ホ KATAKANA LETTER HO */
- { 0x04cf, 0x30de }, /* kana_MA マ KATAKANA LETTER MA */
- { 0x04d0, 0x30df }, /* kana_MI ミ KATAKANA LETTER MI */
- { 0x04d1, 0x30e0 }, /* kana_MU ム KATAKANA LETTER MU */
- { 0x04d2, 0x30e1 }, /* kana_ME メ KATAKANA LETTER ME */
- { 0x04d3, 0x30e2 }, /* kana_MO モ KATAKANA LETTER MO */
- { 0x04d4, 0x30e4 }, /* kana_YA ヤ KATAKANA LETTER YA */
- { 0x04d5, 0x30e6 }, /* kana_YU ユ KATAKANA LETTER YU */
- { 0x04d6, 0x30e8 }, /* kana_YO ヨ KATAKANA LETTER YO */
- { 0x04d7, 0x30e9 }, /* kana_RA ラ KATAKANA LETTER RA */
- { 0x04d8, 0x30ea }, /* kana_RI リ KATAKANA LETTER RI */
- { 0x04d9, 0x30eb }, /* kana_RU ル KATAKANA LETTER RU */
- { 0x04da, 0x30ec }, /* kana_RE レ KATAKANA LETTER RE */
- { 0x04db, 0x30ed }, /* kana_RO ロ KATAKANA LETTER RO */
- { 0x04dc, 0x30ef }, /* kana_WA ワ KATAKANA LETTER WA */
- { 0x04dd, 0x30f3 }, /* kana_N ン KATAKANA LETTER N */
- { 0x04de, 0x309b }, /* voicedsound ã‚› KATAKANA-HIRAGANA VOICED SOUND MARK */
- { 0x04df, 0x309c }, /* semivoicedsound ゜ KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */
- { 0x05ac, 0x060c }, /* Arabic_comma ، ARABIC COMMA */
- { 0x05bb, 0x061b }, /* Arabic_semicolon Ø› ARABIC SEMICOLON */
- { 0x05bf, 0x061f }, /* Arabic_question_mark ØŸ ARABIC QUESTION MARK */
- { 0x05c1, 0x0621 }, /* Arabic_hamza Ø¡ ARABIC LETTER HAMZA */
- { 0x05c2, 0x0622 }, /* Arabic_maddaonalef آ ARABIC LETTER ALEF WITH MADDA ABOVE */
- { 0x05c3, 0x0623 }, /* Arabic_hamzaonalef أ ARABIC LETTER ALEF WITH HAMZA ABOVE */
- { 0x05c4, 0x0624 }, /* Arabic_hamzaonwaw ؤ ARABIC LETTER WAW WITH HAMZA ABOVE */
- { 0x05c5, 0x0625 }, /* Arabic_hamzaunderalef إ ARABIC LETTER ALEF WITH HAMZA BELOW */
- { 0x05c6, 0x0626 }, /* Arabic_hamzaonyeh ئ ARABIC LETTER YEH WITH HAMZA ABOVE */
- { 0x05c7, 0x0627 }, /* Arabic_alef ا ARABIC LETTER ALEF */
- { 0x05c8, 0x0628 }, /* Arabic_beh ب ARABIC LETTER BEH */
- { 0x05c9, 0x0629 }, /* Arabic_tehmarbuta Ø© ARABIC LETTER TEH MARBUTA */
- { 0x05ca, 0x062a }, /* Arabic_teh ت ARABIC LETTER TEH */
- { 0x05cb, 0x062b }, /* Arabic_theh Ø« ARABIC LETTER THEH */
- { 0x05cc, 0x062c }, /* Arabic_jeem ج ARABIC LETTER JEEM */
- { 0x05cd, 0x062d }, /* Arabic_hah Ø­ ARABIC LETTER HAH */
- { 0x05ce, 0x062e }, /* Arabic_khah Ø® ARABIC LETTER KHAH */
- { 0x05cf, 0x062f }, /* Arabic_dal د ARABIC LETTER DAL */
- { 0x05d0, 0x0630 }, /* Arabic_thal Ø° ARABIC LETTER THAL */
- { 0x05d1, 0x0631 }, /* Arabic_ra ر ARABIC LETTER REH */
- { 0x05d2, 0x0632 }, /* Arabic_zain ز ARABIC LETTER ZAIN */
- { 0x05d3, 0x0633 }, /* Arabic_seen س ARABIC LETTER SEEN */
- { 0x05d4, 0x0634 }, /* Arabic_sheen Ø´ ARABIC LETTER SHEEN */
- { 0x05d5, 0x0635 }, /* Arabic_sad ص ARABIC LETTER SAD */
- { 0x05d6, 0x0636 }, /* Arabic_dad ض ARABIC LETTER DAD */
- { 0x05d7, 0x0637 }, /* Arabic_tah Ø· ARABIC LETTER TAH */
- { 0x05d8, 0x0638 }, /* Arabic_zah ظ ARABIC LETTER ZAH */
- { 0x05d9, 0x0639 }, /* Arabic_ain ع ARABIC LETTER AIN */
- { 0x05da, 0x063a }, /* Arabic_ghain غ ARABIC LETTER GHAIN */
- { 0x05e0, 0x0640 }, /* Arabic_tatweel Ù€ ARABIC TATWEEL */
- { 0x05e1, 0x0641 }, /* Arabic_feh Ù ARABIC LETTER FEH */
- { 0x05e2, 0x0642 }, /* Arabic_qaf Ù‚ ARABIC LETTER QAF */
- { 0x05e3, 0x0643 }, /* Arabic_kaf Ùƒ ARABIC LETTER KAF */
- { 0x05e4, 0x0644 }, /* Arabic_lam Ù„ ARABIC LETTER LAM */
- { 0x05e5, 0x0645 }, /* Arabic_meem Ù… ARABIC LETTER MEEM */
- { 0x05e6, 0x0646 }, /* Arabic_noon Ù† ARABIC LETTER NOON */
- { 0x05e7, 0x0647 }, /* Arabic_ha Ù‡ ARABIC LETTER HEH */
- { 0x05e8, 0x0648 }, /* Arabic_waw Ùˆ ARABIC LETTER WAW */
- { 0x05e9, 0x0649 }, /* Arabic_alefmaksura Ù‰ ARABIC LETTER ALEF MAKSURA */
- { 0x05ea, 0x064a }, /* Arabic_yeh ÙŠ ARABIC LETTER YEH */
- { 0x05eb, 0x064b }, /* Arabic_fathatan Ù‹ ARABIC FATHATAN */
- { 0x05ec, 0x064c }, /* Arabic_dammatan ٌ ARABIC DAMMATAN */
- { 0x05ed, 0x064d }, /* Arabic_kasratan Ù ARABIC KASRATAN */
- { 0x05ee, 0x064e }, /* Arabic_fatha ÙŽ ARABIC FATHA */
- { 0x05ef, 0x064f }, /* Arabic_damma Ù ARABIC DAMMA */
- { 0x05f0, 0x0650 }, /* Arabic_kasra Ù ARABIC KASRA */
- { 0x05f1, 0x0651 }, /* Arabic_shadda Ù‘ ARABIC SHADDA */
- { 0x05f2, 0x0652 }, /* Arabic_sukun Ù’ ARABIC SUKUN */
- { 0x06a1, 0x0452 }, /* Serbian_dje Ñ’ CYRILLIC SMALL LETTER DJE */
- { 0x06a2, 0x0453 }, /* Macedonia_gje Ñ“ CYRILLIC SMALL LETTER GJE */
- { 0x06a3, 0x0451 }, /* Cyrillic_io Ñ‘ CYRILLIC SMALL LETTER IO */
- { 0x06a4, 0x0454 }, /* Ukrainian_ie Ñ” CYRILLIC SMALL LETTER UKRAINIAN IE */
- { 0x06a5, 0x0455 }, /* Macedonia_dse Ñ• CYRILLIC SMALL LETTER DZE */
- { 0x06a6, 0x0456 }, /* Ukrainian_i Ñ– CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */
- { 0x06a7, 0x0457 }, /* Ukrainian_yi Ñ— CYRILLIC SMALL LETTER YI */
- { 0x06a8, 0x0458 }, /* Cyrillic_je ј CYRILLIC SMALL LETTER JE */
- { 0x06a9, 0x0459 }, /* Cyrillic_lje Ñ™ CYRILLIC SMALL LETTER LJE */
- { 0x06aa, 0x045a }, /* Cyrillic_nje Ñš CYRILLIC SMALL LETTER NJE */
- { 0x06ab, 0x045b }, /* Serbian_tshe Ñ› CYRILLIC SMALL LETTER TSHE */
- { 0x06ac, 0x045c }, /* Macedonia_kje ќ CYRILLIC SMALL LETTER KJE */
- { 0x06ae, 0x045e }, /* Byelorussian_shortu Ñž CYRILLIC SMALL LETTER SHORT U */
- { 0x06af, 0x045f }, /* Cyrillic_dzhe ÑŸ CYRILLIC SMALL LETTER DZHE */
- { 0x06b0, 0x2116 }, /* numerosign â„– NUMERO SIGN */
- { 0x06b1, 0x0402 }, /* Serbian_DJE Ђ CYRILLIC CAPITAL LETTER DJE */
- { 0x06b2, 0x0403 }, /* Macedonia_GJE Ѓ CYRILLIC CAPITAL LETTER GJE */
- { 0x06b3, 0x0401 }, /* Cyrillic_IO Ð CYRILLIC CAPITAL LETTER IO */
- { 0x06b4, 0x0404 }, /* Ukrainian_IE Є CYRILLIC CAPITAL LETTER UKRAINIAN IE */
- { 0x06b5, 0x0405 }, /* Macedonia_DSE Ð… CYRILLIC CAPITAL LETTER DZE */
- { 0x06b6, 0x0406 }, /* Ukrainian_I І CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */
- { 0x06b7, 0x0407 }, /* Ukrainian_YI Ї CYRILLIC CAPITAL LETTER YI */
- { 0x06b8, 0x0408 }, /* Cyrillic_JE Ј CYRILLIC CAPITAL LETTER JE */
- { 0x06b9, 0x0409 }, /* Cyrillic_LJE Љ CYRILLIC CAPITAL LETTER LJE */
- { 0x06ba, 0x040a }, /* Cyrillic_NJE Њ CYRILLIC CAPITAL LETTER NJE */
- { 0x06bb, 0x040b }, /* Serbian_TSHE Ћ CYRILLIC CAPITAL LETTER TSHE */
- { 0x06bc, 0x040c }, /* Macedonia_KJE Ќ CYRILLIC CAPITAL LETTER KJE */
- { 0x06be, 0x040e }, /* Byelorussian_SHORTU ÐŽ CYRILLIC CAPITAL LETTER SHORT U */
- { 0x06bf, 0x040f }, /* Cyrillic_DZHE Ð CYRILLIC CAPITAL LETTER DZHE */
- { 0x06c0, 0x044e }, /* Cyrillic_yu ÑŽ CYRILLIC SMALL LETTER YU */
- { 0x06c1, 0x0430 }, /* Cyrillic_a а CYRILLIC SMALL LETTER A */
- { 0x06c2, 0x0431 }, /* Cyrillic_be б CYRILLIC SMALL LETTER BE */
- { 0x06c3, 0x0446 }, /* Cyrillic_tse ц CYRILLIC SMALL LETTER TSE */
- { 0x06c4, 0x0434 }, /* Cyrillic_de д CYRILLIC SMALL LETTER DE */
- { 0x06c5, 0x0435 }, /* Cyrillic_ie е CYRILLIC SMALL LETTER IE */
- { 0x06c6, 0x0444 }, /* Cyrillic_ef Ñ„ CYRILLIC SMALL LETTER EF */
- { 0x06c7, 0x0433 }, /* Cyrillic_ghe г CYRILLIC SMALL LETTER GHE */
- { 0x06c8, 0x0445 }, /* Cyrillic_ha Ñ… CYRILLIC SMALL LETTER HA */
- { 0x06c9, 0x0438 }, /* Cyrillic_i и CYRILLIC SMALL LETTER I */
- { 0x06ca, 0x0439 }, /* Cyrillic_shorti й CYRILLIC SMALL LETTER SHORT I */
- { 0x06cb, 0x043a }, /* Cyrillic_ka к CYRILLIC SMALL LETTER KA */
- { 0x06cc, 0x043b }, /* Cyrillic_el л CYRILLIC SMALL LETTER EL */
- { 0x06cd, 0x043c }, /* Cyrillic_em м CYRILLIC SMALL LETTER EM */
- { 0x06ce, 0x043d }, /* Cyrillic_en н CYRILLIC SMALL LETTER EN */
- { 0x06cf, 0x043e }, /* Cyrillic_o о CYRILLIC SMALL LETTER O */
- { 0x06d0, 0x043f }, /* Cyrillic_pe п CYRILLIC SMALL LETTER PE */
- { 0x06d1, 0x044f }, /* Cyrillic_ya Ñ CYRILLIC SMALL LETTER YA */
- { 0x06d2, 0x0440 }, /* Cyrillic_er р CYRILLIC SMALL LETTER ER */
- { 0x06d3, 0x0441 }, /* Cyrillic_es Ñ CYRILLIC SMALL LETTER ES */
- { 0x06d4, 0x0442 }, /* Cyrillic_te Ñ‚ CYRILLIC SMALL LETTER TE */
- { 0x06d5, 0x0443 }, /* Cyrillic_u у CYRILLIC SMALL LETTER U */
- { 0x06d6, 0x0436 }, /* Cyrillic_zhe ж CYRILLIC SMALL LETTER ZHE */
- { 0x06d7, 0x0432 }, /* Cyrillic_ve в CYRILLIC SMALL LETTER VE */
- { 0x06d8, 0x044c }, /* Cyrillic_softsign ь CYRILLIC SMALL LETTER SOFT SIGN */
- { 0x06d9, 0x044b }, /* Cyrillic_yeru Ñ‹ CYRILLIC SMALL LETTER YERU */
- { 0x06da, 0x0437 }, /* Cyrillic_ze з CYRILLIC SMALL LETTER ZE */
- { 0x06db, 0x0448 }, /* Cyrillic_sha ш CYRILLIC SMALL LETTER SHA */
- { 0x06dc, 0x044d }, /* Cyrillic_e Ñ CYRILLIC SMALL LETTER E */
- { 0x06dd, 0x0449 }, /* Cyrillic_shcha щ CYRILLIC SMALL LETTER SHCHA */
- { 0x06de, 0x0447 }, /* Cyrillic_che ч CYRILLIC SMALL LETTER CHE */
- { 0x06df, 0x044a }, /* Cyrillic_hardsign ÑŠ CYRILLIC SMALL LETTER HARD SIGN */
- { 0x06e0, 0x042e }, /* Cyrillic_YU Ю CYRILLIC CAPITAL LETTER YU */
- { 0x06e1, 0x0410 }, /* Cyrillic_A Ð CYRILLIC CAPITAL LETTER A */
- { 0x06e2, 0x0411 }, /* Cyrillic_BE Б CYRILLIC CAPITAL LETTER BE */
- { 0x06e3, 0x0426 }, /* Cyrillic_TSE Ц CYRILLIC CAPITAL LETTER TSE */
- { 0x06e4, 0x0414 }, /* Cyrillic_DE Д CYRILLIC CAPITAL LETTER DE */
- { 0x06e5, 0x0415 }, /* Cyrillic_IE Е CYRILLIC CAPITAL LETTER IE */
- { 0x06e6, 0x0424 }, /* Cyrillic_EF Ф CYRILLIC CAPITAL LETTER EF */
- { 0x06e7, 0x0413 }, /* Cyrillic_GHE Г CYRILLIC CAPITAL LETTER GHE */
- { 0x06e8, 0x0425 }, /* Cyrillic_HA Х CYRILLIC CAPITAL LETTER HA */
- { 0x06e9, 0x0418 }, /* Cyrillic_I И CYRILLIC CAPITAL LETTER I */
- { 0x06ea, 0x0419 }, /* Cyrillic_SHORTI Й CYRILLIC CAPITAL LETTER SHORT I */
- { 0x06eb, 0x041a }, /* Cyrillic_KA К CYRILLIC CAPITAL LETTER KA */
- { 0x06ec, 0x041b }, /* Cyrillic_EL Л CYRILLIC CAPITAL LETTER EL */
- { 0x06ed, 0x041c }, /* Cyrillic_EM М CYRILLIC CAPITAL LETTER EM */
- { 0x06ee, 0x041d }, /* Cyrillic_EN Ð CYRILLIC CAPITAL LETTER EN */
- { 0x06ef, 0x041e }, /* Cyrillic_O О CYRILLIC CAPITAL LETTER O */
- { 0x06f0, 0x041f }, /* Cyrillic_PE П CYRILLIC CAPITAL LETTER PE */
- { 0x06f1, 0x042f }, /* Cyrillic_YA Я CYRILLIC CAPITAL LETTER YA */
- { 0x06f2, 0x0420 }, /* Cyrillic_ER Р CYRILLIC CAPITAL LETTER ER */
- { 0x06f3, 0x0421 }, /* Cyrillic_ES С CYRILLIC CAPITAL LETTER ES */
- { 0x06f4, 0x0422 }, /* Cyrillic_TE Т CYRILLIC CAPITAL LETTER TE */
- { 0x06f5, 0x0423 }, /* Cyrillic_U У CYRILLIC CAPITAL LETTER U */
- { 0x06f6, 0x0416 }, /* Cyrillic_ZHE Ж CYRILLIC CAPITAL LETTER ZHE */
- { 0x06f7, 0x0412 }, /* Cyrillic_VE Ð’ CYRILLIC CAPITAL LETTER VE */
- { 0x06f8, 0x042c }, /* Cyrillic_SOFTSIGN Ь CYRILLIC CAPITAL LETTER SOFT SIGN */
- { 0x06f9, 0x042b }, /* Cyrillic_YERU Ы CYRILLIC CAPITAL LETTER YERU */
- { 0x06fa, 0x0417 }, /* Cyrillic_ZE З CYRILLIC CAPITAL LETTER ZE */
- { 0x06fb, 0x0428 }, /* Cyrillic_SHA Ш CYRILLIC CAPITAL LETTER SHA */
- { 0x06fc, 0x042d }, /* Cyrillic_E Э CYRILLIC CAPITAL LETTER E */
- { 0x06fd, 0x0429 }, /* Cyrillic_SHCHA Щ CYRILLIC CAPITAL LETTER SHCHA */
- { 0x06fe, 0x0427 }, /* Cyrillic_CHE Ч CYRILLIC CAPITAL LETTER CHE */
- { 0x06ff, 0x042a }, /* Cyrillic_HARDSIGN Ъ CYRILLIC CAPITAL LETTER HARD SIGN */
- { 0x07a1, 0x0386 }, /* Greek_ALPHAaccent Ά GREEK CAPITAL LETTER ALPHA WITH TONOS */
- { 0x07a2, 0x0388 }, /* Greek_EPSILONaccent Έ GREEK CAPITAL LETTER EPSILON WITH TONOS */
- { 0x07a3, 0x0389 }, /* Greek_ETAaccent Ή GREEK CAPITAL LETTER ETA WITH TONOS */
- { 0x07a4, 0x038a }, /* Greek_IOTAaccent Ί GREEK CAPITAL LETTER IOTA WITH TONOS */
- { 0x07a5, 0x03aa }, /* Greek_IOTAdiaeresis Ϊ GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */
- { 0x07a7, 0x038c }, /* Greek_OMICRONaccent Ό GREEK CAPITAL LETTER OMICRON WITH TONOS */
- { 0x07a8, 0x038e }, /* Greek_UPSILONaccent ÎŽ GREEK CAPITAL LETTER UPSILON WITH TONOS */
- { 0x07a9, 0x03ab }, /* Greek_UPSILONdieresis Ϋ GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */
- { 0x07ab, 0x038f }, /* Greek_OMEGAaccent Î GREEK CAPITAL LETTER OMEGA WITH TONOS */
- { 0x07ae, 0x0385 }, /* Greek_accentdieresis Î… GREEK DIALYTIKA TONOS */
- { 0x07af, 0x2015 }, /* Greek_horizbar ― HORIZONTAL BAR */
- { 0x07b1, 0x03ac }, /* Greek_alphaaccent ά GREEK SMALL LETTER ALPHA WITH TONOS */
- { 0x07b2, 0x03ad }, /* Greek_epsilonaccent έ GREEK SMALL LETTER EPSILON WITH TONOS */
- { 0x07b3, 0x03ae }, /* Greek_etaaccent ή GREEK SMALL LETTER ETA WITH TONOS */
- { 0x07b4, 0x03af }, /* Greek_iotaaccent ί GREEK SMALL LETTER IOTA WITH TONOS */
- { 0x07b5, 0x03ca }, /* Greek_iotadieresis ÏŠ GREEK SMALL LETTER IOTA WITH DIALYTIKA */
- { 0x07b6, 0x0390 }, /* Greek_iotaaccentdieresis Î GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
- { 0x07b7, 0x03cc }, /* Greek_omicronaccent ό GREEK SMALL LETTER OMICRON WITH TONOS */
- { 0x07b8, 0x03cd }, /* Greek_upsilonaccent Ï GREEK SMALL LETTER UPSILON WITH TONOS */
- { 0x07b9, 0x03cb }, /* Greek_upsilondieresis Ï‹ GREEK SMALL LETTER UPSILON WITH DIALYTIKA */
- { 0x07ba, 0x03b0 }, /* Greek_upsilonaccentdieresis ΰ GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */
- { 0x07bb, 0x03ce }, /* Greek_omegaaccent ÏŽ GREEK SMALL LETTER OMEGA WITH TONOS */
- { 0x07c1, 0x0391 }, /* Greek_ALPHA Α GREEK CAPITAL LETTER ALPHA */
- { 0x07c2, 0x0392 }, /* Greek_BETA Î’ GREEK CAPITAL LETTER BETA */
- { 0x07c3, 0x0393 }, /* Greek_GAMMA Γ GREEK CAPITAL LETTER GAMMA */
- { 0x07c4, 0x0394 }, /* Greek_DELTA Δ GREEK CAPITAL LETTER DELTA */
- { 0x07c5, 0x0395 }, /* Greek_EPSILON Ε GREEK CAPITAL LETTER EPSILON */
- { 0x07c6, 0x0396 }, /* Greek_ZETA Ζ GREEK CAPITAL LETTER ZETA */
- { 0x07c7, 0x0397 }, /* Greek_ETA Η GREEK CAPITAL LETTER ETA */
- { 0x07c8, 0x0398 }, /* Greek_THETA Θ GREEK CAPITAL LETTER THETA */
- { 0x07c9, 0x0399 }, /* Greek_IOTA Ι GREEK CAPITAL LETTER IOTA */
- { 0x07ca, 0x039a }, /* Greek_KAPPA Κ GREEK CAPITAL LETTER KAPPA */
- { 0x07cb, 0x039b }, /* Greek_LAMBDA Λ GREEK CAPITAL LETTER LAMDA */
- { 0x07cc, 0x039c }, /* Greek_MU Μ GREEK CAPITAL LETTER MU */
- { 0x07cd, 0x039d }, /* Greek_NU Î GREEK CAPITAL LETTER NU */
- { 0x07ce, 0x039e }, /* Greek_XI Ξ GREEK CAPITAL LETTER XI */
- { 0x07cf, 0x039f }, /* Greek_OMICRON Ο GREEK CAPITAL LETTER OMICRON */
- { 0x07d0, 0x03a0 }, /* Greek_PI Π GREEK CAPITAL LETTER PI */
- { 0x07d1, 0x03a1 }, /* Greek_RHO Ρ GREEK CAPITAL LETTER RHO */
- { 0x07d2, 0x03a3 }, /* Greek_SIGMA Σ GREEK CAPITAL LETTER SIGMA */
- { 0x07d4, 0x03a4 }, /* Greek_TAU Τ GREEK CAPITAL LETTER TAU */
- { 0x07d5, 0x03a5 }, /* Greek_UPSILON Υ GREEK CAPITAL LETTER UPSILON */
- { 0x07d6, 0x03a6 }, /* Greek_PHI Φ GREEK CAPITAL LETTER PHI */
- { 0x07d7, 0x03a7 }, /* Greek_CHI Χ GREEK CAPITAL LETTER CHI */
- { 0x07d8, 0x03a8 }, /* Greek_PSI Ψ GREEK CAPITAL LETTER PSI */
- { 0x07d9, 0x03a9 }, /* Greek_OMEGA Ω GREEK CAPITAL LETTER OMEGA */
- { 0x07e1, 0x03b1 }, /* Greek_alpha α GREEK SMALL LETTER ALPHA */
- { 0x07e2, 0x03b2 }, /* Greek_beta β GREEK SMALL LETTER BETA */
- { 0x07e3, 0x03b3 }, /* Greek_gamma γ GREEK SMALL LETTER GAMMA */
- { 0x07e4, 0x03b4 }, /* Greek_delta δ GREEK SMALL LETTER DELTA */
- { 0x07e5, 0x03b5 }, /* Greek_epsilon ε GREEK SMALL LETTER EPSILON */
- { 0x07e6, 0x03b6 }, /* Greek_zeta ζ GREEK SMALL LETTER ZETA */
- { 0x07e7, 0x03b7 }, /* Greek_eta η GREEK SMALL LETTER ETA */
- { 0x07e8, 0x03b8 }, /* Greek_theta θ GREEK SMALL LETTER THETA */
- { 0x07e9, 0x03b9 }, /* Greek_iota ι GREEK SMALL LETTER IOTA */
- { 0x07ea, 0x03ba }, /* Greek_kappa κ GREEK SMALL LETTER KAPPA */
- { 0x07eb, 0x03bb }, /* Greek_lambda λ GREEK SMALL LETTER LAMDA */
- { 0x07ec, 0x03bc }, /* Greek_mu μ GREEK SMALL LETTER MU */
- { 0x07ed, 0x03bd }, /* Greek_nu ν GREEK SMALL LETTER NU */
- { 0x07ee, 0x03be }, /* Greek_xi ξ GREEK SMALL LETTER XI */
- { 0x07ef, 0x03bf }, /* Greek_omicron ο GREEK SMALL LETTER OMICRON */
- { 0x07f0, 0x03c0 }, /* Greek_pi π GREEK SMALL LETTER PI */
- { 0x07f1, 0x03c1 }, /* Greek_rho Ï GREEK SMALL LETTER RHO */
- { 0x07f2, 0x03c3 }, /* Greek_sigma σ GREEK SMALL LETTER SIGMA */
- { 0x07f3, 0x03c2 }, /* Greek_finalsmallsigma Ï‚ GREEK SMALL LETTER FINAL SIGMA */
- { 0x07f4, 0x03c4 }, /* Greek_tau Ï„ GREEK SMALL LETTER TAU */
- { 0x07f5, 0x03c5 }, /* Greek_upsilon Ï… GREEK SMALL LETTER UPSILON */
- { 0x07f6, 0x03c6 }, /* Greek_phi φ GREEK SMALL LETTER PHI */
- { 0x07f7, 0x03c7 }, /* Greek_chi χ GREEK SMALL LETTER CHI */
- { 0x07f8, 0x03c8 }, /* Greek_psi ψ GREEK SMALL LETTER PSI */
- { 0x07f9, 0x03c9 }, /* Greek_omega ω GREEK SMALL LETTER OMEGA */
-/* 0x08a1 leftradical ? ??? */
-/* 0x08a2 topleftradical ? ??? */
-/* 0x08a3 horizconnector ? ??? */
- { 0x08a4, 0x2320 }, /* topintegral ⌠ TOP HALF INTEGRAL */
- { 0x08a5, 0x2321 }, /* botintegral ⌡ BOTTOM HALF INTEGRAL */
- { 0x08a6, 0x2502 }, /* vertconnector │ BOX DRAWINGS LIGHT VERTICAL */
-/* 0x08a7 topleftsqbracket ? ??? */
-/* 0x08a8 botleftsqbracket ? ??? */
-/* 0x08a9 toprightsqbracket ? ??? */
-/* 0x08aa botrightsqbracket ? ??? */
-/* 0x08ab topleftparens ? ??? */
-/* 0x08ac botleftparens ? ??? */
-/* 0x08ad toprightparens ? ??? */
-/* 0x08ae botrightparens ? ??? */
-/* 0x08af leftmiddlecurlybrace ? ??? */
-/* 0x08b0 rightmiddlecurlybrace ? ??? */
-/* 0x08b1 topleftsummation ? ??? */
-/* 0x08b2 botleftsummation ? ??? */
-/* 0x08b3 topvertsummationconnector ? ??? */
-/* 0x08b4 botvertsummationconnector ? ??? */
-/* 0x08b5 toprightsummation ? ??? */
-/* 0x08b6 botrightsummation ? ??? */
-/* 0x08b7 rightmiddlesummation ? ??? */
- { 0x08bc, 0x2264 }, /* lessthanequal ≤ LESS-THAN OR EQUAL TO */
- { 0x08bd, 0x2260 }, /* notequal ≠ NOT EQUAL TO */
- { 0x08be, 0x2265 }, /* greaterthanequal ≥ GREATER-THAN OR EQUAL TO */
- { 0x08bf, 0x222b }, /* integral ∫ INTEGRAL */
- { 0x08c0, 0x2234 }, /* therefore ∴ THEREFORE */
- { 0x08c1, 0x221d }, /* variation ∠PROPORTIONAL TO */
- { 0x08c2, 0x221e }, /* infinity ∞ INFINITY */
- { 0x08c5, 0x2207 }, /* nabla ∇ NABLA */
- { 0x08c8, 0x2245 }, /* approximate ≅ APPROXIMATELY EQUAL TO */
-/* 0x08c9 similarequal ? ??? */
- { 0x08cd, 0x21d4 }, /* ifonlyif ⇔ LEFT RIGHT DOUBLE ARROW */
- { 0x08ce, 0x21d2 }, /* implies ⇒ RIGHTWARDS DOUBLE ARROW */
- { 0x08cf, 0x2261 }, /* identical ≡ IDENTICAL TO */
- { 0x08d6, 0x221a }, /* radical √ SQUARE ROOT */
- { 0x08da, 0x2282 }, /* includedin ⊂ SUBSET OF */
- { 0x08db, 0x2283 }, /* includes ⊃ SUPERSET OF */
- { 0x08dc, 0x2229 }, /* intersection ∩ INTERSECTION */
- { 0x08dd, 0x222a }, /* union ∪ UNION */
- { 0x08de, 0x2227 }, /* logicaland ∧ LOGICAL AND */
- { 0x08df, 0x2228 }, /* logicalor ∨ LOGICAL OR */
- { 0x08ef, 0x2202 }, /* partialderivative ∂ PARTIAL DIFFERENTIAL */
- { 0x08f6, 0x0192 }, /* function Æ’ LATIN SMALL LETTER F WITH HOOK */
- { 0x08fb, 0x2190 }, /* leftarrow ↠LEFTWARDS ARROW */
- { 0x08fc, 0x2191 }, /* uparrow ↑ UPWARDS ARROW */
- { 0x08fd, 0x2192 }, /* rightarrow → RIGHTWARDS ARROW */
- { 0x08fe, 0x2193 }, /* downarrow ↓ DOWNWARDS ARROW */
- { 0x09df, 0x2422 }, /* blank ⢠BLANK SYMBOL */
- { 0x09e0, 0x25c6 }, /* soliddiamond â—† BLACK DIAMOND */
- { 0x09e1, 0x2592 }, /* checkerboard â–’ MEDIUM SHADE */
- { 0x09e2, 0x2409 }, /* ht ≠SYMBOL FOR HORIZONTAL TABULATION */
- { 0x09e3, 0x240c }, /* ff ⌠SYMBOL FOR FORM FEED */
- { 0x09e4, 0x240d }, /* cr â SYMBOL FOR CARRIAGE RETURN */
- { 0x09e5, 0x240a }, /* lf ⊠SYMBOL FOR LINE FEED */
- { 0x09e8, 0x2424 }, /* nl ⤠SYMBOL FOR NEWLINE */
- { 0x09e9, 0x240b }, /* vt â‹ SYMBOL FOR VERTICAL TABULATION */
- { 0x09ea, 0x2518 }, /* lowrightcorner ┘ BOX DRAWINGS LIGHT UP AND LEFT */
- { 0x09eb, 0x2510 }, /* uprightcorner â” BOX DRAWINGS LIGHT DOWN AND LEFT */
- { 0x09ec, 0x250c }, /* upleftcorner ┌ BOX DRAWINGS LIGHT DOWN AND RIGHT */
- { 0x09ed, 0x2514 }, /* lowleftcorner â”” BOX DRAWINGS LIGHT UP AND RIGHT */
- { 0x09ee, 0x253c }, /* crossinglines ┼ BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */
-/* 0x09ef horizlinescan1 ? ??? */
-/* 0x09f0 horizlinescan3 ? ??? */
- { 0x09f1, 0x2500 }, /* horizlinescan5 ─ BOX DRAWINGS LIGHT HORIZONTAL */
-/* 0x09f2 horizlinescan7 ? ??? */
-/* 0x09f3 horizlinescan9 ? ??? */
- { 0x09f4, 0x251c }, /* leftt ├ BOX DRAWINGS LIGHT VERTICAL AND RIGHT */
- { 0x09f5, 0x2524 }, /* rightt ┤ BOX DRAWINGS LIGHT VERTICAL AND LEFT */
- { 0x09f6, 0x2534 }, /* bott â”´ BOX DRAWINGS LIGHT UP AND HORIZONTAL */
- { 0x09f7, 0x252c }, /* topt ┬ BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */
- { 0x09f8, 0x2502 }, /* vertbar │ BOX DRAWINGS LIGHT VERTICAL */
- { 0x0aa1, 0x2003 }, /* emspace   EM SPACE */
- { 0x0aa2, 0x2002 }, /* enspace   EN SPACE */
- { 0x0aa3, 0x2004 }, /* em3space   THREE-PER-EM SPACE */
- { 0x0aa4, 0x2005 }, /* em4space   FOUR-PER-EM SPACE */
- { 0x0aa5, 0x2007 }, /* digitspace   FIGURE SPACE */
- { 0x0aa6, 0x2008 }, /* punctspace   PUNCTUATION SPACE */
- { 0x0aa7, 0x2009 }, /* thinspace   THIN SPACE */
- { 0x0aa8, 0x200a }, /* hairspace   HAIR SPACE */
- { 0x0aa9, 0x2014 }, /* emdash — EM DASH */
- { 0x0aaa, 0x2013 }, /* endash – EN DASH */
-/* 0x0aac signifblank ? ??? */
- { 0x0aae, 0x2026 }, /* ellipsis … HORIZONTAL ELLIPSIS */
-/* 0x0aaf doubbaselinedot ? ??? */
- { 0x0ab0, 0x2153 }, /* onethird â…“ VULGAR FRACTION ONE THIRD */
- { 0x0ab1, 0x2154 }, /* twothirds â…” VULGAR FRACTION TWO THIRDS */
- { 0x0ab2, 0x2155 }, /* onefifth â…• VULGAR FRACTION ONE FIFTH */
- { 0x0ab3, 0x2156 }, /* twofifths â…– VULGAR FRACTION TWO FIFTHS */
- { 0x0ab4, 0x2157 }, /* threefifths â…— VULGAR FRACTION THREE FIFTHS */
- { 0x0ab5, 0x2158 }, /* fourfifths â…˜ VULGAR FRACTION FOUR FIFTHS */
- { 0x0ab6, 0x2159 }, /* onesixth â…™ VULGAR FRACTION ONE SIXTH */
- { 0x0ab7, 0x215a }, /* fivesixths â…š VULGAR FRACTION FIVE SIXTHS */
- { 0x0ab8, 0x2105 }, /* careof â„… CARE OF */
- { 0x0abb, 0x2012 }, /* figdash ‒ FIGURE DASH */
- { 0x0abc, 0x2329 }, /* leftanglebracket 〈 LEFT-POINTING ANGLE BRACKET */
- { 0x0abd, 0x002e }, /* decimalpoint . FULL STOP */
- { 0x0abe, 0x232a }, /* rightanglebracket 〉 RIGHT-POINTING ANGLE BRACKET */
-/* 0x0abf marker ? ??? */
- { 0x0ac3, 0x215b }, /* oneeighth â…› VULGAR FRACTION ONE EIGHTH */
- { 0x0ac4, 0x215c }, /* threeeighths ⅜ VULGAR FRACTION THREE EIGHTHS */
- { 0x0ac5, 0x215d }, /* fiveeighths â… VULGAR FRACTION FIVE EIGHTHS */
- { 0x0ac6, 0x215e }, /* seveneighths â…ž VULGAR FRACTION SEVEN EIGHTHS */
- { 0x0ac9, 0x2122 }, /* trademark â„¢ TRADE MARK SIGN */
- { 0x0aca, 0x2613 }, /* signaturemark ☓ SALTIRE */
-/* 0x0acb trademarkincircle ? ??? */
- { 0x0acc, 0x25c1 }, /* leftopentriangle â— WHITE LEFT-POINTING TRIANGLE */
- { 0x0acd, 0x25b7 }, /* rightopentriangle â–· WHITE RIGHT-POINTING TRIANGLE */
- { 0x0ace, 0x25cb }, /* emopencircle â—‹ WHITE CIRCLE */
- { 0x0acf, 0x25a1 }, /* emopenrectangle â–¡ WHITE SQUARE */
- { 0x0ad0, 0x2018 }, /* leftsinglequotemark ‘ LEFT SINGLE QUOTATION MARK */
- { 0x0ad1, 0x2019 }, /* rightsinglequotemark ’ RIGHT SINGLE QUOTATION MARK */
- { 0x0ad2, 0x201c }, /* leftdoublequotemark “ LEFT DOUBLE QUOTATION MARK */
- { 0x0ad3, 0x201d }, /* rightdoublequotemark †RIGHT DOUBLE QUOTATION MARK */
- { 0x0ad4, 0x211e }, /* prescription â„ž PRESCRIPTION TAKE */
- { 0x0ad6, 0x2032 }, /* minutes ′ PRIME */
- { 0x0ad7, 0x2033 }, /* seconds ″ DOUBLE PRIME */
- { 0x0ad9, 0x271d }, /* latincross ✠LATIN CROSS */
-/* 0x0ada hexagram ? ??? */
- { 0x0adb, 0x25ac }, /* filledrectbullet â–¬ BLACK RECTANGLE */
- { 0x0adc, 0x25c0 }, /* filledlefttribullet â—€ BLACK LEFT-POINTING TRIANGLE */
- { 0x0add, 0x25b6 }, /* filledrighttribullet â–¶ BLACK RIGHT-POINTING TRIANGLE */
- { 0x0ade, 0x25cf }, /* emfilledcircle â— BLACK CIRCLE */
- { 0x0adf, 0x25a0 }, /* emfilledrect â–  BLACK SQUARE */
- { 0x0ae0, 0x25e6 }, /* enopencircbullet â—¦ WHITE BULLET */
- { 0x0ae1, 0x25ab }, /* enopensquarebullet â–« WHITE SMALL SQUARE */
- { 0x0ae2, 0x25ad }, /* openrectbullet â–­ WHITE RECTANGLE */
- { 0x0ae3, 0x25b3 }, /* opentribulletup â–³ WHITE UP-POINTING TRIANGLE */
- { 0x0ae4, 0x25bd }, /* opentribulletdown â–½ WHITE DOWN-POINTING TRIANGLE */
- { 0x0ae5, 0x2606 }, /* openstar ☆ WHITE STAR */
- { 0x0ae6, 0x2022 }, /* enfilledcircbullet • BULLET */
- { 0x0ae7, 0x25aa }, /* enfilledsqbullet â–ª BLACK SMALL SQUARE */
- { 0x0ae8, 0x25b2 }, /* filledtribulletup â–² BLACK UP-POINTING TRIANGLE */
- { 0x0ae9, 0x25bc }, /* filledtribulletdown â–¼ BLACK DOWN-POINTING TRIANGLE */
- { 0x0aea, 0x261c }, /* leftpointer ☜ WHITE LEFT POINTING INDEX */
- { 0x0aeb, 0x261e }, /* rightpointer ☞ WHITE RIGHT POINTING INDEX */
- { 0x0aec, 0x2663 }, /* club ♣ BLACK CLUB SUIT */
- { 0x0aed, 0x2666 }, /* diamond ♦ BLACK DIAMOND SUIT */
- { 0x0aee, 0x2665 }, /* heart ♥ BLACK HEART SUIT */
- { 0x0af0, 0x2720 }, /* maltesecross ✠ MALTESE CROSS */
- { 0x0af1, 0x2020 }, /* dagger † DAGGER */
- { 0x0af2, 0x2021 }, /* doubledagger ‡ DOUBLE DAGGER */
- { 0x0af3, 0x2713 }, /* checkmark ✓ CHECK MARK */
- { 0x0af4, 0x2717 }, /* ballotcross ✗ BALLOT X */
- { 0x0af5, 0x266f }, /* musicalsharp ♯ MUSIC SHARP SIGN */
- { 0x0af6, 0x266d }, /* musicalflat â™­ MUSIC FLAT SIGN */
- { 0x0af7, 0x2642 }, /* malesymbol ♂ MALE SIGN */
- { 0x0af8, 0x2640 }, /* femalesymbol ♀ FEMALE SIGN */
- { 0x0af9, 0x260e }, /* telephone ☎ BLACK TELEPHONE */
- { 0x0afa, 0x2315 }, /* telephonerecorder ⌕ TELEPHONE RECORDER */
- { 0x0afb, 0x2117 }, /* phonographcopyright â„— SOUND RECORDING COPYRIGHT */
- { 0x0afc, 0x2038 }, /* caret ‸ CARET */
- { 0x0afd, 0x201a }, /* singlelowquotemark ‚ SINGLE LOW-9 QUOTATION MARK */
- { 0x0afe, 0x201e }, /* doublelowquotemark „ DOUBLE LOW-9 QUOTATION MARK */
-/* 0x0aff cursor ? ??? */
- { 0x0ba3, 0x003c }, /* leftcaret < LESS-THAN SIGN */
- { 0x0ba6, 0x003e }, /* rightcaret > GREATER-THAN SIGN */
- { 0x0ba8, 0x2228 }, /* downcaret ∨ LOGICAL OR */
- { 0x0ba9, 0x2227 }, /* upcaret ∧ LOGICAL AND */
- { 0x0bc0, 0x00af }, /* overbar ¯ MACRON */
- { 0x0bc2, 0x22a4 }, /* downtack ⊤ DOWN TACK */
- { 0x0bc3, 0x2229 }, /* upshoe ∩ INTERSECTION */
- { 0x0bc4, 0x230a }, /* downstile ⌊ LEFT FLOOR */
- { 0x0bc6, 0x005f }, /* underbar _ LOW LINE */
- { 0x0bca, 0x2218 }, /* jot ∘ RING OPERATOR */
- { 0x0bcc, 0x2395 }, /* quad ⎕ APL FUNCTIONAL SYMBOL QUAD (Unicode 3.0) */
- { 0x0bce, 0x22a5 }, /* uptack ⊥ UP TACK */
- { 0x0bcf, 0x25cb }, /* circle â—‹ WHITE CIRCLE */
- { 0x0bd3, 0x2308 }, /* upstile ⌈ LEFT CEILING */
- { 0x0bd6, 0x222a }, /* downshoe ∪ UNION */
- { 0x0bd8, 0x2283 }, /* rightshoe ⊃ SUPERSET OF */
- { 0x0bda, 0x2282 }, /* leftshoe ⊂ SUBSET OF */
- { 0x0bdc, 0x22a3 }, /* lefttack ⊣ LEFT TACK */
- { 0x0bfc, 0x22a2 }, /* righttack ⊢ RIGHT TACK */
- { 0x0cdf, 0x2017 }, /* hebrew_doublelowline ‗ DOUBLE LOW LINE */
- { 0x0ce0, 0x05d0 }, /* hebrew_aleph × HEBREW LETTER ALEF */
- { 0x0ce1, 0x05d1 }, /* hebrew_bet ב HEBREW LETTER BET */
- { 0x0ce2, 0x05d2 }, /* hebrew_gimel ×’ HEBREW LETTER GIMEL */
- { 0x0ce3, 0x05d3 }, /* hebrew_dalet ד HEBREW LETTER DALET */
- { 0x0ce4, 0x05d4 }, /* hebrew_he ×” HEBREW LETTER HE */
- { 0x0ce5, 0x05d5 }, /* hebrew_waw ו HEBREW LETTER VAV */
- { 0x0ce6, 0x05d6 }, /* hebrew_zain ×– HEBREW LETTER ZAYIN */
- { 0x0ce7, 0x05d7 }, /* hebrew_chet ×— HEBREW LETTER HET */
- { 0x0ce8, 0x05d8 }, /* hebrew_tet ט HEBREW LETTER TET */
- { 0x0ce9, 0x05d9 }, /* hebrew_yod ×™ HEBREW LETTER YOD */
- { 0x0cea, 0x05da }, /* hebrew_finalkaph ך HEBREW LETTER FINAL KAF */
- { 0x0ceb, 0x05db }, /* hebrew_kaph ×› HEBREW LETTER KAF */
- { 0x0cec, 0x05dc }, /* hebrew_lamed ל HEBREW LETTER LAMED */
- { 0x0ced, 0x05dd }, /* hebrew_finalmem × HEBREW LETTER FINAL MEM */
- { 0x0cee, 0x05de }, /* hebrew_mem מ HEBREW LETTER MEM */
- { 0x0cef, 0x05df }, /* hebrew_finalnun ן HEBREW LETTER FINAL NUN */
- { 0x0cf0, 0x05e0 }, /* hebrew_nun ×  HEBREW LETTER NUN */
- { 0x0cf1, 0x05e1 }, /* hebrew_samech ס HEBREW LETTER SAMEKH */
- { 0x0cf2, 0x05e2 }, /* hebrew_ayin ×¢ HEBREW LETTER AYIN */
- { 0x0cf3, 0x05e3 }, /* hebrew_finalpe ×£ HEBREW LETTER FINAL PE */
- { 0x0cf4, 0x05e4 }, /* hebrew_pe פ HEBREW LETTER PE */
- { 0x0cf5, 0x05e5 }, /* hebrew_finalzade ×¥ HEBREW LETTER FINAL TSADI */
- { 0x0cf6, 0x05e6 }, /* hebrew_zade צ HEBREW LETTER TSADI */
- { 0x0cf7, 0x05e7 }, /* hebrew_qoph ק HEBREW LETTER QOF */
- { 0x0cf8, 0x05e8 }, /* hebrew_resh ר HEBREW LETTER RESH */
- { 0x0cf9, 0x05e9 }, /* hebrew_shin ש HEBREW LETTER SHIN */
- { 0x0cfa, 0x05ea }, /* hebrew_taw ת HEBREW LETTER TAV */
- { 0x0da1, 0x0e01 }, /* Thai_kokai ภTHAI CHARACTER KO KAI */
- { 0x0da2, 0x0e02 }, /* Thai_khokhai ข THAI CHARACTER KHO KHAI */
- { 0x0da3, 0x0e03 }, /* Thai_khokhuat ฃ THAI CHARACTER KHO KHUAT */
- { 0x0da4, 0x0e04 }, /* Thai_khokhwai ค THAI CHARACTER KHO KHWAI */
- { 0x0da5, 0x0e05 }, /* Thai_khokhon ฅ THAI CHARACTER KHO KHON */
- { 0x0da6, 0x0e06 }, /* Thai_khorakhang ฆ THAI CHARACTER KHO RAKHANG */
- { 0x0da7, 0x0e07 }, /* Thai_ngongu ง THAI CHARACTER NGO NGU */
- { 0x0da8, 0x0e08 }, /* Thai_chochan จ THAI CHARACTER CHO CHAN */
- { 0x0da9, 0x0e09 }, /* Thai_choching ฉ THAI CHARACTER CHO CHING */
- { 0x0daa, 0x0e0a }, /* Thai_chochang ช THAI CHARACTER CHO CHANG */
- { 0x0dab, 0x0e0b }, /* Thai_soso ซ THAI CHARACTER SO SO */
- { 0x0dac, 0x0e0c }, /* Thai_chochoe ฌ THAI CHARACTER CHO CHOE */
- { 0x0dad, 0x0e0d }, /* Thai_yoying ภTHAI CHARACTER YO YING */
- { 0x0dae, 0x0e0e }, /* Thai_dochada ฎ THAI CHARACTER DO CHADA */
- { 0x0daf, 0x0e0f }, /* Thai_topatak ภTHAI CHARACTER TO PATAK */
- { 0x0db0, 0x0e10 }, /* Thai_thothan ภTHAI CHARACTER THO THAN */
- { 0x0db1, 0x0e11 }, /* Thai_thonangmontho ฑ THAI CHARACTER THO NANGMONTHO */
- { 0x0db2, 0x0e12 }, /* Thai_thophuthao ฒ THAI CHARACTER THO PHUTHAO */
- { 0x0db3, 0x0e13 }, /* Thai_nonen ณ THAI CHARACTER NO NEN */
- { 0x0db4, 0x0e14 }, /* Thai_dodek ด THAI CHARACTER DO DEK */
- { 0x0db5, 0x0e15 }, /* Thai_totao ต THAI CHARACTER TO TAO */
- { 0x0db6, 0x0e16 }, /* Thai_thothung ถ THAI CHARACTER THO THUNG */
- { 0x0db7, 0x0e17 }, /* Thai_thothahan ท THAI CHARACTER THO THAHAN */
- { 0x0db8, 0x0e18 }, /* Thai_thothong ธ THAI CHARACTER THO THONG */
- { 0x0db9, 0x0e19 }, /* Thai_nonu น THAI CHARACTER NO NU */
- { 0x0dba, 0x0e1a }, /* Thai_bobaimai บ THAI CHARACTER BO BAIMAI */
- { 0x0dbb, 0x0e1b }, /* Thai_popla ป THAI CHARACTER PO PLA */
- { 0x0dbc, 0x0e1c }, /* Thai_phophung ผ THAI CHARACTER PHO PHUNG */
- { 0x0dbd, 0x0e1d }, /* Thai_fofa ภTHAI CHARACTER FO FA */
- { 0x0dbe, 0x0e1e }, /* Thai_phophan พ THAI CHARACTER PHO PHAN */
- { 0x0dbf, 0x0e1f }, /* Thai_fofan ฟ THAI CHARACTER FO FAN */
- { 0x0dc0, 0x0e20 }, /* Thai_phosamphao ภ THAI CHARACTER PHO SAMPHAO */
- { 0x0dc1, 0x0e21 }, /* Thai_moma ม THAI CHARACTER MO MA */
- { 0x0dc2, 0x0e22 }, /* Thai_yoyak ย THAI CHARACTER YO YAK */
- { 0x0dc3, 0x0e23 }, /* Thai_rorua ร THAI CHARACTER RO RUA */
- { 0x0dc4, 0x0e24 }, /* Thai_ru ฤ THAI CHARACTER RU */
- { 0x0dc5, 0x0e25 }, /* Thai_loling ล THAI CHARACTER LO LING */
- { 0x0dc6, 0x0e26 }, /* Thai_lu ฦ THAI CHARACTER LU */
- { 0x0dc7, 0x0e27 }, /* Thai_wowaen ว THAI CHARACTER WO WAEN */
- { 0x0dc8, 0x0e28 }, /* Thai_sosala ศ THAI CHARACTER SO SALA */
- { 0x0dc9, 0x0e29 }, /* Thai_sorusi ษ THAI CHARACTER SO RUSI */
- { 0x0dca, 0x0e2a }, /* Thai_sosua ส THAI CHARACTER SO SUA */
- { 0x0dcb, 0x0e2b }, /* Thai_hohip ห THAI CHARACTER HO HIP */
- { 0x0dcc, 0x0e2c }, /* Thai_lochula ฬ THAI CHARACTER LO CHULA */
- { 0x0dcd, 0x0e2d }, /* Thai_oang อ THAI CHARACTER O ANG */
- { 0x0dce, 0x0e2e }, /* Thai_honokhuk ฮ THAI CHARACTER HO NOKHUK */
- { 0x0dcf, 0x0e2f }, /* Thai_paiyannoi ฯ THAI CHARACTER PAIYANNOI */
- { 0x0dd0, 0x0e30 }, /* Thai_saraa ะ THAI CHARACTER SARA A */
- { 0x0dd1, 0x0e31 }, /* Thai_maihanakat ั THAI CHARACTER MAI HAN-AKAT */
- { 0x0dd2, 0x0e32 }, /* Thai_saraaa า THAI CHARACTER SARA AA */
- { 0x0dd3, 0x0e33 }, /* Thai_saraam ำ THAI CHARACTER SARA AM */
- { 0x0dd4, 0x0e34 }, /* Thai_sarai ิ THAI CHARACTER SARA I */
- { 0x0dd5, 0x0e35 }, /* Thai_saraii ี THAI CHARACTER SARA II */
- { 0x0dd6, 0x0e36 }, /* Thai_saraue ึ THAI CHARACTER SARA UE */
- { 0x0dd7, 0x0e37 }, /* Thai_sarauee ื THAI CHARACTER SARA UEE */
- { 0x0dd8, 0x0e38 }, /* Thai_sarau ุ THAI CHARACTER SARA U */
- { 0x0dd9, 0x0e39 }, /* Thai_sarauu ู THAI CHARACTER SARA UU */
- { 0x0dda, 0x0e3a }, /* Thai_phinthu ฺ THAI CHARACTER PHINTHU */
- { 0x0dde, 0x0e3e }, /* Thai_maihanakat_maitho ฾ ??? */
- { 0x0ddf, 0x0e3f }, /* Thai_baht ฿ THAI CURRENCY SYMBOL BAHT */
- { 0x0de0, 0x0e40 }, /* Thai_sarae เ THAI CHARACTER SARA E */
- { 0x0de1, 0x0e41 }, /* Thai_saraae ๠THAI CHARACTER SARA AE */
- { 0x0de2, 0x0e42 }, /* Thai_sarao โ THAI CHARACTER SARA O */
- { 0x0de3, 0x0e43 }, /* Thai_saraaimaimuan ใ THAI CHARACTER SARA AI MAIMUAN */
- { 0x0de4, 0x0e44 }, /* Thai_saraaimaimalai ไ THAI CHARACTER SARA AI MAIMALAI */
- { 0x0de5, 0x0e45 }, /* Thai_lakkhangyao ๅ THAI CHARACTER LAKKHANGYAO */
- { 0x0de6, 0x0e46 }, /* Thai_maiyamok ๆ THAI CHARACTER MAIYAMOK */
- { 0x0de7, 0x0e47 }, /* Thai_maitaikhu ็ THAI CHARACTER MAITAIKHU */
- { 0x0de8, 0x0e48 }, /* Thai_maiek ่ THAI CHARACTER MAI EK */
- { 0x0de9, 0x0e49 }, /* Thai_maitho ้ THAI CHARACTER MAI THO */
- { 0x0dea, 0x0e4a }, /* Thai_maitri ๊ THAI CHARACTER MAI TRI */
- { 0x0deb, 0x0e4b }, /* Thai_maichattawa ๋ THAI CHARACTER MAI CHATTAWA */
- { 0x0dec, 0x0e4c }, /* Thai_thanthakhat ์ THAI CHARACTER THANTHAKHAT */
- { 0x0ded, 0x0e4d }, /* Thai_nikhahit ๠THAI CHARACTER NIKHAHIT */
- { 0x0df0, 0x0e50 }, /* Thai_leksun ๠THAI DIGIT ZERO */
- { 0x0df1, 0x0e51 }, /* Thai_leknung ๑ THAI DIGIT ONE */
- { 0x0df2, 0x0e52 }, /* Thai_leksong ๒ THAI DIGIT TWO */
- { 0x0df3, 0x0e53 }, /* Thai_leksam ๓ THAI DIGIT THREE */
- { 0x0df4, 0x0e54 }, /* Thai_leksi ๔ THAI DIGIT FOUR */
- { 0x0df5, 0x0e55 }, /* Thai_lekha ๕ THAI DIGIT FIVE */
- { 0x0df6, 0x0e56 }, /* Thai_lekhok ๖ THAI DIGIT SIX */
- { 0x0df7, 0x0e57 }, /* Thai_lekchet ๗ THAI DIGIT SEVEN */
- { 0x0df8, 0x0e58 }, /* Thai_lekpaet ๘ THAI DIGIT EIGHT */
- { 0x0df9, 0x0e59 }, /* Thai_lekkao ๙ THAI DIGIT NINE */
- { 0x0ea1, 0x3131 }, /* Hangul_Kiyeog ㄱ HANGUL LETTER KIYEOK */
- { 0x0ea2, 0x3132 }, /* Hangul_SsangKiyeog ㄲ HANGUL LETTER SSANGKIYEOK */
- { 0x0ea3, 0x3133 }, /* Hangul_KiyeogSios ㄳ HANGUL LETTER KIYEOK-SIOS */
- { 0x0ea4, 0x3134 }, /* Hangul_Nieun ã„´ HANGUL LETTER NIEUN */
- { 0x0ea5, 0x3135 }, /* Hangul_NieunJieuj ㄵ HANGUL LETTER NIEUN-CIEUC */
- { 0x0ea6, 0x3136 }, /* Hangul_NieunHieuh ㄶ HANGUL LETTER NIEUN-HIEUH */
- { 0x0ea7, 0x3137 }, /* Hangul_Dikeud ã„· HANGUL LETTER TIKEUT */
- { 0x0ea8, 0x3138 }, /* Hangul_SsangDikeud ㄸ HANGUL LETTER SSANGTIKEUT */
- { 0x0ea9, 0x3139 }, /* Hangul_Rieul ㄹ HANGUL LETTER RIEUL */
- { 0x0eaa, 0x313a }, /* Hangul_RieulKiyeog ㄺ HANGUL LETTER RIEUL-KIYEOK */
- { 0x0eab, 0x313b }, /* Hangul_RieulMieum ã„» HANGUL LETTER RIEUL-MIEUM */
- { 0x0eac, 0x313c }, /* Hangul_RieulPieub ㄼ HANGUL LETTER RIEUL-PIEUP */
- { 0x0ead, 0x313d }, /* Hangul_RieulSios ㄽ HANGUL LETTER RIEUL-SIOS */
- { 0x0eae, 0x313e }, /* Hangul_RieulTieut ㄾ HANGUL LETTER RIEUL-THIEUTH */
- { 0x0eaf, 0x313f }, /* Hangul_RieulPhieuf ã„¿ HANGUL LETTER RIEUL-PHIEUPH */
- { 0x0eb0, 0x3140 }, /* Hangul_RieulHieuh ã…€ HANGUL LETTER RIEUL-HIEUH */
- { 0x0eb1, 0x3141 }, /* Hangul_Mieum ã… HANGUL LETTER MIEUM */
- { 0x0eb2, 0x3142 }, /* Hangul_Pieub ã…‚ HANGUL LETTER PIEUP */
- { 0x0eb3, 0x3143 }, /* Hangul_SsangPieub ã…ƒ HANGUL LETTER SSANGPIEUP */
- { 0x0eb4, 0x3144 }, /* Hangul_PieubSios ã…„ HANGUL LETTER PIEUP-SIOS */
- { 0x0eb5, 0x3145 }, /* Hangul_Sios ã…… HANGUL LETTER SIOS */
- { 0x0eb6, 0x3146 }, /* Hangul_SsangSios ã…† HANGUL LETTER SSANGSIOS */
- { 0x0eb7, 0x3147 }, /* Hangul_Ieung ã…‡ HANGUL LETTER IEUNG */
- { 0x0eb8, 0x3148 }, /* Hangul_Jieuj ã…ˆ HANGUL LETTER CIEUC */
- { 0x0eb9, 0x3149 }, /* Hangul_SsangJieuj ã…‰ HANGUL LETTER SSANGCIEUC */
- { 0x0eba, 0x314a }, /* Hangul_Cieuc ã…Š HANGUL LETTER CHIEUCH */
- { 0x0ebb, 0x314b }, /* Hangul_Khieuq ã…‹ HANGUL LETTER KHIEUKH */
- { 0x0ebc, 0x314c }, /* Hangul_Tieut ㅌ HANGUL LETTER THIEUTH */
- { 0x0ebd, 0x314d }, /* Hangul_Phieuf ã… HANGUL LETTER PHIEUPH */
- { 0x0ebe, 0x314e }, /* Hangul_Hieuh ã…Ž HANGUL LETTER HIEUH */
- { 0x0ebf, 0x314f }, /* Hangul_A ã… HANGUL LETTER A */
- { 0x0ec0, 0x3150 }, /* Hangul_AE ã… HANGUL LETTER AE */
- { 0x0ec1, 0x3151 }, /* Hangul_YA ã…‘ HANGUL LETTER YA */
- { 0x0ec2, 0x3152 }, /* Hangul_YAE ã…’ HANGUL LETTER YAE */
- { 0x0ec3, 0x3153 }, /* Hangul_EO ã…“ HANGUL LETTER EO */
- { 0x0ec4, 0x3154 }, /* Hangul_E ã…” HANGUL LETTER E */
- { 0x0ec5, 0x3155 }, /* Hangul_YEO ã…• HANGUL LETTER YEO */
- { 0x0ec6, 0x3156 }, /* Hangul_YE ã…– HANGUL LETTER YE */
- { 0x0ec7, 0x3157 }, /* Hangul_O ã…— HANGUL LETTER O */
- { 0x0ec8, 0x3158 }, /* Hangul_WA ã…˜ HANGUL LETTER WA */
- { 0x0ec9, 0x3159 }, /* Hangul_WAE ã…™ HANGUL LETTER WAE */
- { 0x0eca, 0x315a }, /* Hangul_OE ã…š HANGUL LETTER OE */
- { 0x0ecb, 0x315b }, /* Hangul_YO ã…› HANGUL LETTER YO */
- { 0x0ecc, 0x315c }, /* Hangul_U ㅜ HANGUL LETTER U */
- { 0x0ecd, 0x315d }, /* Hangul_WEO ã… HANGUL LETTER WEO */
- { 0x0ece, 0x315e }, /* Hangul_WE ã…ž HANGUL LETTER WE */
- { 0x0ecf, 0x315f }, /* Hangul_WI ã…Ÿ HANGUL LETTER WI */
- { 0x0ed0, 0x3160 }, /* Hangul_YU ã…  HANGUL LETTER YU */
- { 0x0ed1, 0x3161 }, /* Hangul_EU ã…¡ HANGUL LETTER EU */
- { 0x0ed2, 0x3162 }, /* Hangul_YI ã…¢ HANGUL LETTER YI */
- { 0x0ed3, 0x3163 }, /* Hangul_I ã…£ HANGUL LETTER I */
- { 0x0ed4, 0x11a8 }, /* Hangul_J_Kiyeog ᆨ HANGUL JONGSEONG KIYEOK */
- { 0x0ed5, 0x11a9 }, /* Hangul_J_SsangKiyeog ᆩ HANGUL JONGSEONG SSANGKIYEOK */
- { 0x0ed6, 0x11aa }, /* Hangul_J_KiyeogSios ᆪ HANGUL JONGSEONG KIYEOK-SIOS */
- { 0x0ed7, 0x11ab }, /* Hangul_J_Nieun ᆫ HANGUL JONGSEONG NIEUN */
- { 0x0ed8, 0x11ac }, /* Hangul_J_NieunJieuj ᆬ HANGUL JONGSEONG NIEUN-CIEUC */
- { 0x0ed9, 0x11ad }, /* Hangul_J_NieunHieuh ᆭ HANGUL JONGSEONG NIEUN-HIEUH */
- { 0x0eda, 0x11ae }, /* Hangul_J_Dikeud ᆮ HANGUL JONGSEONG TIKEUT */
- { 0x0edb, 0x11af }, /* Hangul_J_Rieul ᆯ HANGUL JONGSEONG RIEUL */
- { 0x0edc, 0x11b0 }, /* Hangul_J_RieulKiyeog ᆰ HANGUL JONGSEONG RIEUL-KIYEOK */
- { 0x0edd, 0x11b1 }, /* Hangul_J_RieulMieum ᆱ HANGUL JONGSEONG RIEUL-MIEUM */
- { 0x0ede, 0x11b2 }, /* Hangul_J_RieulPieub ᆲ HANGUL JONGSEONG RIEUL-PIEUP */
- { 0x0edf, 0x11b3 }, /* Hangul_J_RieulSios ᆳ HANGUL JONGSEONG RIEUL-SIOS */
- { 0x0ee0, 0x11b4 }, /* Hangul_J_RieulTieut ᆴ HANGUL JONGSEONG RIEUL-THIEUTH */
- { 0x0ee1, 0x11b5 }, /* Hangul_J_RieulPhieuf ᆵ HANGUL JONGSEONG RIEUL-PHIEUPH */
- { 0x0ee2, 0x11b6 }, /* Hangul_J_RieulHieuh ᆶ HANGUL JONGSEONG RIEUL-HIEUH */
- { 0x0ee3, 0x11b7 }, /* Hangul_J_Mieum ᆷ HANGUL JONGSEONG MIEUM */
- { 0x0ee4, 0x11b8 }, /* Hangul_J_Pieub ᆸ HANGUL JONGSEONG PIEUP */
- { 0x0ee5, 0x11b9 }, /* Hangul_J_PieubSios ᆹ HANGUL JONGSEONG PIEUP-SIOS */
- { 0x0ee6, 0x11ba }, /* Hangul_J_Sios ᆺ HANGUL JONGSEONG SIOS */
- { 0x0ee7, 0x11bb }, /* Hangul_J_SsangSios ᆻ HANGUL JONGSEONG SSANGSIOS */
- { 0x0ee8, 0x11bc }, /* Hangul_J_Ieung ᆼ HANGUL JONGSEONG IEUNG */
- { 0x0ee9, 0x11bd }, /* Hangul_J_Jieuj ᆽ HANGUL JONGSEONG CIEUC */
- { 0x0eea, 0x11be }, /* Hangul_J_Cieuc ᆾ HANGUL JONGSEONG CHIEUCH */
- { 0x0eeb, 0x11bf }, /* Hangul_J_Khieuq ᆿ HANGUL JONGSEONG KHIEUKH */
- { 0x0eec, 0x11c0 }, /* Hangul_J_Tieut ᇀ HANGUL JONGSEONG THIEUTH */
- { 0x0eed, 0x11c1 }, /* Hangul_J_Phieuf ᇠHANGUL JONGSEONG PHIEUPH */
- { 0x0eee, 0x11c2 }, /* Hangul_J_Hieuh ᇂ HANGUL JONGSEONG HIEUH */
- { 0x0eef, 0x316d }, /* Hangul_RieulYeorinHieuh ã…­ HANGUL LETTER RIEUL-YEORINHIEUH */
- { 0x0ef0, 0x3171 }, /* Hangul_SunkyeongeumMieum ã…± HANGUL LETTER KAPYEOUNMIEUM */
- { 0x0ef1, 0x3178 }, /* Hangul_SunkyeongeumPieub ã…¸ HANGUL LETTER KAPYEOUNPIEUP */
- { 0x0ef2, 0x317f }, /* Hangul_PanSios ã…¿ HANGUL LETTER PANSIOS */
-/* 0x0ef3 Hangul_KkogjiDalrinIeung ? ??? */
- { 0x0ef4, 0x3184 }, /* Hangul_SunkyeongeumPhieuf ㆄ HANGUL LETTER KAPYEOUNPHIEUPH */
- { 0x0ef5, 0x3186 }, /* Hangul_YeorinHieuh ㆆ HANGUL LETTER YEORINHIEUH */
- { 0x0ef6, 0x318d }, /* Hangul_AraeA ㆠHANGUL LETTER ARAEA */
- { 0x0ef7, 0x318e }, /* Hangul_AraeAE ㆎ HANGUL LETTER ARAEAE */
- { 0x0ef8, 0x11eb }, /* Hangul_J_PanSios ᇫ HANGUL JONGSEONG PANSIOS */
-/* 0x0ef9 Hangul_J_KkogjiDalrinIeung ? ??? */
- { 0x0efa, 0x11f9 }, /* Hangul_J_YeorinHieuh ᇹ HANGUL JONGSEONG YEORINHIEUH */
- { 0x0eff, 0x20a9 }, /* Korean_Won â‚© WON SIGN */
- { 0x13bc, 0x0152 }, /* OE Å’ LATIN CAPITAL LIGATURE OE */
- { 0x13bd, 0x0153 }, /* oe Å“ LATIN SMALL LIGATURE OE */
- { 0x13be, 0x0178 }, /* Ydiaeresis Ÿ LATIN CAPITAL LETTER Y WITH DIAERESIS */
- { 0x20a0, 0x20a0 }, /* EcuSign â‚  EURO-CURRENCY SIGN */
- { 0x20a1, 0x20a1 }, /* ColonSign â‚¡ COLON SIGN */
- { 0x20a2, 0x20a2 }, /* CruzeiroSign â‚¢ CRUZEIRO SIGN */
- { 0x20a3, 0x20a3 }, /* FFrancSign â‚£ FRENCH FRANC SIGN */
- { 0x20a4, 0x20a4 }, /* LiraSign ₤ LIRA SIGN */
- { 0x20a5, 0x20a5 }, /* MillSign â‚¥ MILL SIGN */
- { 0x20a6, 0x20a6 }, /* NairaSign ₦ NAIRA SIGN */
- { 0x20a7, 0x20a7 }, /* PesetaSign ₧ PESETA SIGN */
- { 0x20a8, 0x20a8 }, /* RupeeSign ₨ RUPEE SIGN */
- { 0x20a9, 0x20a9 }, /* WonSign â‚© WON SIGN */
- { 0x20aa, 0x20aa }, /* NewSheqelSign ₪ NEW SHEQEL SIGN */
- { 0x20ab, 0x20ab }, /* DongSign â‚« DONG SIGN */
- { 0x20ac, 0x20ac }, /* EuroSign € EURO SIGN */
-};
-
-/**
- * gdk_keyval_to_unicode:
- * @keysym: a GDK key symbol
- *
- * Convert from a GDK key symbol to the corresponding ISO10646 (Unicode)
- * character.
- *
- * Return value: the corresponding unicode character, or 0 if there
- * is no corresponding character.
- **/
-
-guint32
-gdk_keyval_to_unicode (guint keysym)
-{
- int min = 0;
- int max = sizeof (gdk_keysym_to_unicode_tab) / sizeof (gdk_keysym_to_unicode_tab[0]) - 1;
- int mid;
-
- /* First check for Latin-1 characters (1:1 mapping) */
- if ((keysym >= 0x0020 && keysym <= 0x007e) ||
- (keysym >= 0x00a0 && keysym <= 0x00ff))
- return keysym;
-
- /* Also check for directly encoded 24-bit UCS characters:
- */
- if ((keysym & 0xff000000) == 0x01000000)
- return keysym & 0x00ffffff;
-
- /* binary search in table */
- while (max >= min) {
- mid = (min + max) / 2;
- if (gdk_keysym_to_unicode_tab[mid].keysym < keysym)
- min = mid + 1;
- else if (gdk_keysym_to_unicode_tab[mid].keysym > keysym)
- max = mid - 1;
- else {
- /* found it */
- return gdk_keysym_to_unicode_tab[mid].ucs;
- }
- }
-
- /* No matching Unicode value found */
- return 0;
-}
-
-/*
- * Canonical decomposition
- *
- * It is copied here from libunicode, because we do not want malloc
- *
- */
-
-typedef struct
-{
- unsigned short ch;
- unsigned char *expansion;
-} e_decomposition;
-
-static e_decomposition e_decomp_table[] =
-{
- { 0x00c0, "\x00\x41\x03\x00\0" },
- { 0x00c1, "\x00\x41\x03\x01\0" },
- { 0x00c2, "\x00\x41\x03\x02\0" },
- { 0x00c3, "\x00\x41\x03\x03\0" },
- { 0x00c4, "\x00\x41\x03\x08\0" },
- { 0x00c5, "\x00\x41\x03\x0a\0" },
- { 0x00c7, "\x00\x43\x03\x27\0" },
- { 0x00c8, "\x00\x45\x03\x00\0" },
- { 0x00c9, "\x00\x45\x03\x01\0" },
- { 0x00ca, "\x00\x45\x03\x02\0" },
- { 0x00cb, "\x00\x45\x03\x08\0" },
- { 0x00cc, "\x00\x49\x03\x00\0" },
- { 0x00cd, "\x00\x49\x03\x01\0" },
- { 0x00ce, "\x00\x49\x03\x02\0" },
- { 0x00cf, "\x00\x49\x03\x08\0" },
- { 0x00d1, "\x00\x4e\x03\x03\0" },
- { 0x00d2, "\x00\x4f\x03\x00\0" },
- { 0x00d3, "\x00\x4f\x03\x01\0" },
- { 0x00d4, "\x00\x4f\x03\x02\0" },
- { 0x00d5, "\x00\x4f\x03\x03\0" },
- { 0x00d6, "\x00\x4f\x03\x08\0" },
- { 0x00d9, "\x00\x55\x03\x00\0" },
- { 0x00da, "\x00\x55\x03\x01\0" },
- { 0x00db, "\x00\x55\x03\x02\0" },
- { 0x00dc, "\x00\x55\x03\x08\0" },
- { 0x00dd, "\x00\x59\x03\x01\0" },
- { 0x00e0, "\x00\x61\x03\x00\0" },
- { 0x00e1, "\x00\x61\x03\x01\0" },
- { 0x00e2, "\x00\x61\x03\x02\0" },
- { 0x00e3, "\x00\x61\x03\x03\0" },
- { 0x00e4, "\x00\x61\x03\x08\0" },
- { 0x00e5, "\x00\x61\x03\x0a\0" },
- { 0x00e7, "\x00\x63\x03\x27\0" },
- { 0x00e8, "\x00\x65\x03\x00\0" },
- { 0x00e9, "\x00\x65\x03\x01\0" },
- { 0x00ea, "\x00\x65\x03\x02\0" },
- { 0x00eb, "\x00\x65\x03\x08\0" },
- { 0x00ec, "\x00\x69\x03\x00\0" },
- { 0x00ed, "\x00\x69\x03\x01\0" },
- { 0x00ee, "\x00\x69\x03\x02\0" },
- { 0x00ef, "\x00\x69\x03\x08\0" },
- { 0x00f1, "\x00\x6e\x03\x03\0" },
- { 0x00f2, "\x00\x6f\x03\x00\0" },
- { 0x00f3, "\x00\x6f\x03\x01\0" },
- { 0x00f4, "\x00\x6f\x03\x02\0" },
- { 0x00f5, "\x00\x6f\x03\x03\0" },
- { 0x00f6, "\x00\x6f\x03\x08\0" },
- { 0x00f9, "\x00\x75\x03\x00\0" },
- { 0x00fa, "\x00\x75\x03\x01\0" },
- { 0x00fb, "\x00\x75\x03\x02\0" },
- { 0x00fc, "\x00\x75\x03\x08\0" },
- { 0x00fd, "\x00\x79\x03\x01\0" },
- { 0x00ff, "\x00\x79\x03\x08\0" },
- { 0x0100, "\x00\x41\x03\x04\0" },
- { 0x0101, "\x00\x61\x03\x04\0" },
- { 0x0102, "\x00\x41\x03\x06\0" },
- { 0x0103, "\x00\x61\x03\x06\0" },
- { 0x0104, "\x00\x41\x03\x28\0" },
- { 0x0105, "\x00\x61\x03\x28\0" },
- { 0x0106, "\x00\x43\x03\x01\0" },
- { 0x0107, "\x00\x63\x03\x01\0" },
- { 0x0108, "\x00\x43\x03\x02\0" },
- { 0x0109, "\x00\x63\x03\x02\0" },
- { 0x010a, "\x00\x43\x03\x07\0" },
- { 0x010b, "\x00\x63\x03\x07\0" },
- { 0x010c, "\x00\x43\x03\x0c\0" },
- { 0x010d, "\x00\x63\x03\x0c\0" },
- { 0x010e, "\x00\x44\x03\x0c\0" },
- { 0x010f, "\x00\x64\x03\x0c\0" },
- { 0x0112, "\x00\x45\x03\x04\0" },
- { 0x0113, "\x00\x65\x03\x04\0" },
- { 0x0114, "\x00\x45\x03\x06\0" },
- { 0x0115, "\x00\x65\x03\x06\0" },
- { 0x0116, "\x00\x45\x03\x07\0" },
- { 0x0117, "\x00\x65\x03\x07\0" },
- { 0x0118, "\x00\x45\x03\x28\0" },
- { 0x0119, "\x00\x65\x03\x28\0" },
- { 0x011a, "\x00\x45\x03\x0c\0" },
- { 0x011b, "\x00\x65\x03\x0c\0" },
- { 0x011c, "\x00\x47\x03\x02\0" },
- { 0x011d, "\x00\x67\x03\x02\0" },
- { 0x011e, "\x00\x47\x03\x06\0" },
- { 0x011f, "\x00\x67\x03\x06\0" },
- { 0x0120, "\x00\x47\x03\x07\0" },
- { 0x0121, "\x00\x67\x03\x07\0" },
- { 0x0122, "\x00\x47\x03\x27\0" },
- { 0x0123, "\x00\x67\x03\x27\0" },
- { 0x0124, "\x00\x48\x03\x02\0" },
- { 0x0125, "\x00\x68\x03\x02\0" },
- { 0x0128, "\x00\x49\x03\x03\0" },
- { 0x0129, "\x00\x69\x03\x03\0" },
- { 0x012a, "\x00\x49\x03\x04\0" },
- { 0x012b, "\x00\x69\x03\x04\0" },
- { 0x012c, "\x00\x49\x03\x06\0" },
- { 0x012d, "\x00\x69\x03\x06\0" },
- { 0x012e, "\x00\x49\x03\x28\0" },
- { 0x012f, "\x00\x69\x03\x28\0" },
- { 0x0130, "\x00\x49\x03\x07\0" },
- { 0x0134, "\x00\x4a\x03\x02\0" },
- { 0x0135, "\x00\x6a\x03\x02\0" },
- { 0x0136, "\x00\x4b\x03\x27\0" },
- { 0x0137, "\x00\x6b\x03\x27\0" },
- { 0x0139, "\x00\x4c\x03\x01\0" },
- { 0x013a, "\x00\x6c\x03\x01\0" },
- { 0x013b, "\x00\x4c\x03\x27\0" },
- { 0x013c, "\x00\x6c\x03\x27\0" },
- { 0x013d, "\x00\x4c\x03\x0c\0" },
- { 0x013e, "\x00\x6c\x03\x0c\0" },
- { 0x0143, "\x00\x4e\x03\x01\0" },
- { 0x0144, "\x00\x6e\x03\x01\0" },
- { 0x0145, "\x00\x4e\x03\x27\0" },
- { 0x0146, "\x00\x6e\x03\x27\0" },
- { 0x0147, "\x00\x4e\x03\x0c\0" },
- { 0x0148, "\x00\x6e\x03\x0c\0" },
- { 0x014c, "\x00\x4f\x03\x04\0" },
- { 0x014d, "\x00\x6f\x03\x04\0" },
- { 0x014e, "\x00\x4f\x03\x06\0" },
- { 0x014f, "\x00\x6f\x03\x06\0" },
- { 0x0150, "\x00\x4f\x03\x0b\0" },
- { 0x0151, "\x00\x6f\x03\x0b\0" },
- { 0x0154, "\x00\x52\x03\x01\0" },
- { 0x0155, "\x00\x72\x03\x01\0" },
- { 0x0156, "\x00\x52\x03\x27\0" },
- { 0x0157, "\x00\x72\x03\x27\0" },
- { 0x0158, "\x00\x52\x03\x0c\0" },
- { 0x0159, "\x00\x72\x03\x0c\0" },
- { 0x015a, "\x00\x53\x03\x01\0" },
- { 0x015b, "\x00\x73\x03\x01\0" },
- { 0x015c, "\x00\x53\x03\x02\0" },
- { 0x015d, "\x00\x73\x03\x02\0" },
- { 0x015e, "\x00\x53\x03\x27\0" },
- { 0x015f, "\x00\x73\x03\x27\0" },
- { 0x0160, "\x00\x53\x03\x0c\0" },
- { 0x0161, "\x00\x73\x03\x0c\0" },
- { 0x0162, "\x00\x54\x03\x27\0" },
- { 0x0163, "\x00\x74\x03\x27\0" },
- { 0x0164, "\x00\x54\x03\x0c\0" },
- { 0x0165, "\x00\x74\x03\x0c\0" },
- { 0x0168, "\x00\x55\x03\x03\0" },
- { 0x0169, "\x00\x75\x03\x03\0" },
- { 0x016a, "\x00\x55\x03\x04\0" },
- { 0x016b, "\x00\x75\x03\x04\0" },
- { 0x016c, "\x00\x55\x03\x06\0" },
- { 0x016d, "\x00\x75\x03\x06\0" },
- { 0x016e, "\x00\x55\x03\x0a\0" },
- { 0x016f, "\x00\x75\x03\x0a\0" },
- { 0x0170, "\x00\x55\x03\x0b\0" },
- { 0x0171, "\x00\x75\x03\x0b\0" },
- { 0x0172, "\x00\x55\x03\x28\0" },
- { 0x0173, "\x00\x75\x03\x28\0" },
- { 0x0174, "\x00\x57\x03\x02\0" },
- { 0x0175, "\x00\x77\x03\x02\0" },
- { 0x0176, "\x00\x59\x03\x02\0" },
- { 0x0177, "\x00\x79\x03\x02\0" },
- { 0x0178, "\x00\x59\x03\x08\0" },
- { 0x0179, "\x00\x5a\x03\x01\0" },
- { 0x017a, "\x00\x7a\x03\x01\0" },
- { 0x017b, "\x00\x5a\x03\x07\0" },
- { 0x017c, "\x00\x7a\x03\x07\0" },
- { 0x017d, "\x00\x5a\x03\x0c\0" },
- { 0x017e, "\x00\x7a\x03\x0c\0" },
- { 0x01a0, "\x00\x4f\x03\x1b\0" },
- { 0x01a1, "\x00\x6f\x03\x1b\0" },
- { 0x01af, "\x00\x55\x03\x1b\0" },
- { 0x01b0, "\x00\x75\x03\x1b\0" },
- { 0x01cd, "\x00\x41\x03\x0c\0" },
- { 0x01ce, "\x00\x61\x03\x0c\0" },
- { 0x01cf, "\x00\x49\x03\x0c\0" },
- { 0x01d0, "\x00\x69\x03\x0c\0" },
- { 0x01d1, "\x00\x4f\x03\x0c\0" },
- { 0x01d2, "\x00\x6f\x03\x0c\0" },
- { 0x01d3, "\x00\x55\x03\x0c\0" },
- { 0x01d4, "\x00\x75\x03\x0c\0" },
- { 0x01d5, "\x00\x55\x03\x08\x03\x04\0" },
- { 0x01d6, "\x00\x75\x03\x08\x03\x04\0" },
- { 0x01d7, "\x00\x55\x03\x08\x03\x01\0" },
- { 0x01d8, "\x00\x75\x03\x08\x03\x01\0" },
- { 0x01d9, "\x00\x55\x03\x08\x03\x0c\0" },
- { 0x01da, "\x00\x75\x03\x08\x03\x0c\0" },
- { 0x01db, "\x00\x55\x03\x08\x03\x00\0" },
- { 0x01dc, "\x00\x75\x03\x08\x03\x00\0" },
- { 0x01de, "\x00\x41\x03\x08\x03\x04\0" },
- { 0x01df, "\x00\x61\x03\x08\x03\x04\0" },
- { 0x01e0, "\x00\x41\x03\x07\x03\x04\0" },
- { 0x01e1, "\x00\x61\x03\x07\x03\x04\0" },
- { 0x01e2, "\x00\xc6\x03\x04\0" },
- { 0x01e3, "\x00\xe6\x03\x04\0" },
- { 0x01e6, "\x00\x47\x03\x0c\0" },
- { 0x01e7, "\x00\x67\x03\x0c\0" },
- { 0x01e8, "\x00\x4b\x03\x0c\0" },
- { 0x01e9, "\x00\x6b\x03\x0c\0" },
- { 0x01ea, "\x00\x4f\x03\x28\0" },
- { 0x01eb, "\x00\x6f\x03\x28\0" },
- { 0x01ec, "\x00\x4f\x03\x28\x03\x04\0" },
- { 0x01ed, "\x00\x6f\x03\x28\x03\x04\0" },
- { 0x01ee, "\x01\xb7\x03\x0c\0" },
- { 0x01ef, "\x02\x92\x03\x0c\0" },
- { 0x01f0, "\x00\x6a\x03\x0c\0" },
- { 0x01f4, "\x00\x47\x03\x01\0" },
- { 0x01f5, "\x00\x67\x03\x01\0" },
- { 0x01fa, "\x00\x41\x03\x0a\x03\x01\0" },
- { 0x01fb, "\x00\x61\x03\x0a\x03\x01\0" },
- { 0x01fc, "\x00\xc6\x03\x01\0" },
- { 0x01fd, "\x00\xe6\x03\x01\0" },
- { 0x01fe, "\x00\xd8\x03\x01\0" },
- { 0x01ff, "\x00\xf8\x03\x01\0" },
- { 0x0200, "\x00\x41\x03\x0f\0" },
- { 0x0201, "\x00\x61\x03\x0f\0" },
- { 0x0202, "\x00\x41\x03\x11\0" },
- { 0x0203, "\x00\x61\x03\x11\0" },
- { 0x0204, "\x00\x45\x03\x0f\0" },
- { 0x0205, "\x00\x65\x03\x0f\0" },
- { 0x0206, "\x00\x45\x03\x11\0" },
- { 0x0207, "\x00\x65\x03\x11\0" },
- { 0x0208, "\x00\x49\x03\x0f\0" },
- { 0x0209, "\x00\x69\x03\x0f\0" },
- { 0x020a, "\x00\x49\x03\x11\0" },
- { 0x020b, "\x00\x69\x03\x11\0" },
- { 0x020c, "\x00\x4f\x03\x0f\0" },
- { 0x020d, "\x00\x6f\x03\x0f\0" },
- { 0x020e, "\x00\x4f\x03\x11\0" },
- { 0x020f, "\x00\x6f\x03\x11\0" },
- { 0x0210, "\x00\x52\x03\x0f\0" },
- { 0x0211, "\x00\x72\x03\x0f\0" },
- { 0x0212, "\x00\x52\x03\x11\0" },
- { 0x0213, "\x00\x72\x03\x11\0" },
- { 0x0214, "\x00\x55\x03\x0f\0" },
- { 0x0215, "\x00\x75\x03\x0f\0" },
- { 0x0216, "\x00\x55\x03\x11\0" },
- { 0x0217, "\x00\x75\x03\x11\0" },
- { 0x0340, "\x03\x00\0" },
- { 0x0341, "\x03\x01\0" },
- { 0x0343, "\x03\x13\0" },
- { 0x0344, "\x03\x08\x03\x01\0" },
- { 0x0374, "\x02\xb9\0" },
- { 0x037e, "\x00\x3b\0" },
- { 0x0385, "\x00\xa8\x03\x01\0" },
- { 0x0386, "\x03\x91\x03\x01\0" },
- { 0x0387, "\x00\xb7\0" },
- { 0x0388, "\x03\x95\x03\x01\0" },
- { 0x0389, "\x03\x97\x03\x01\0" },
- { 0x038a, "\x03\x99\x03\x01\0" },
- { 0x038c, "\x03\x9f\x03\x01\0" },
- { 0x038e, "\x03\xa5\x03\x01\0" },
- { 0x038f, "\x03\xa9\x03\x01\0" },
- { 0x0390, "\x03\xb9\x03\x08\x03\x01\0" },
- { 0x03aa, "\x03\x99\x03\x08\0" },
- { 0x03ab, "\x03\xa5\x03\x08\0" },
- { 0x03ac, "\x03\xb1\x03\x01\0" },
- { 0x03ad, "\x03\xb5\x03\x01\0" },
- { 0x03ae, "\x03\xb7\x03\x01\0" },
- { 0x03af, "\x03\xb9\x03\x01\0" },
- { 0x03b0, "\x03\xc5\x03\x08\x03\x01\0" },
- { 0x03ca, "\x03\xb9\x03\x08\0" },
- { 0x03cb, "\x03\xc5\x03\x08\0" },
- { 0x03cc, "\x03\xbf\x03\x01\0" },
- { 0x03cd, "\x03\xc5\x03\x01\0" },
- { 0x03ce, "\x03\xc9\x03\x01\0" },
- { 0x03d3, "\x03\xd2\x03\x01\0" },
- { 0x03d4, "\x03\xd2\x03\x08\0" },
- { 0x0401, "\x04\x15\x03\x08\0" },
- { 0x0403, "\x04\x13\x03\x01\0" },
- { 0x0407, "\x04\x06\x03\x08\0" },
- { 0x040c, "\x04\x1a\x03\x01\0" },
- { 0x040e, "\x04\x23\x03\x06\0" },
- { 0x0419, "\x04\x18\x03\x06\0" },
- { 0x0439, "\x04\x38\x03\x06\0" },
- { 0x0451, "\x04\x35\x03\x08\0" },
- { 0x0453, "\x04\x33\x03\x01\0" },
- { 0x0457, "\x04\x56\x03\x08\0" },
- { 0x045c, "\x04\x3a\x03\x01\0" },
- { 0x045e, "\x04\x43\x03\x06\0" },
- { 0x0476, "\x04\x74\x03\x0f\0" },
- { 0x0477, "\x04\x75\x03\x0f\0" },
- { 0x04c1, "\x04\x16\x03\x06\0" },
- { 0x04c2, "\x04\x36\x03\x06\0" },
- { 0x04d0, "\x04\x10\x03\x06\0" },
- { 0x04d1, "\x04\x30\x03\x06\0" },
- { 0x04d2, "\x04\x10\x03\x08\0" },
- { 0x04d3, "\x04\x30\x03\x08\0" },
- { 0x04d6, "\x04\x15\x03\x06\0" },
- { 0x04d7, "\x04\x35\x03\x06\0" },
- { 0x04da, "\x04\xd8\x03\x08\0" },
- { 0x04db, "\x04\xd9\x03\x08\0" },
- { 0x04dc, "\x04\x16\x03\x08\0" },
- { 0x04dd, "\x04\x36\x03\x08\0" },
- { 0x04de, "\x04\x17\x03\x08\0" },
- { 0x04df, "\x04\x37\x03\x08\0" },
- { 0x04e2, "\x04\x18\x03\x04\0" },
- { 0x04e3, "\x04\x38\x03\x04\0" },
- { 0x04e4, "\x04\x18\x03\x08\0" },
- { 0x04e5, "\x04\x38\x03\x08\0" },
- { 0x04e6, "\x04\x1e\x03\x08\0" },
- { 0x04e7, "\x04\x3e\x03\x08\0" },
- { 0x04ea, "\x04\xe8\x03\x08\0" },
- { 0x04eb, "\x04\xe9\x03\x08\0" },
- { 0x04ee, "\x04\x23\x03\x04\0" },
- { 0x04ef, "\x04\x43\x03\x04\0" },
- { 0x04f0, "\x04\x23\x03\x08\0" },
- { 0x04f1, "\x04\x43\x03\x08\0" },
- { 0x04f2, "\x04\x23\x03\x0b\0" },
- { 0x04f3, "\x04\x43\x03\x0b\0" },
- { 0x04f4, "\x04\x27\x03\x08\0" },
- { 0x04f5, "\x04\x47\x03\x08\0" },
- { 0x04f8, "\x04\x2b\x03\x08\0" },
- { 0x04f9, "\x04\x4b\x03\x08\0" },
- { 0x0929, "\x09\x28\x09\x3c\0" },
- { 0x0931, "\x09\x30\x09\x3c\0" },
- { 0x0934, "\x09\x33\x09\x3c\0" },
- { 0x0958, "\x09\x15\x09\x3c\0" },
- { 0x0959, "\x09\x16\x09\x3c\0" },
- { 0x095a, "\x09\x17\x09\x3c\0" },
- { 0x095b, "\x09\x1c\x09\x3c\0" },
- { 0x095c, "\x09\x21\x09\x3c\0" },
- { 0x095d, "\x09\x22\x09\x3c\0" },
- { 0x095e, "\x09\x2b\x09\x3c\0" },
- { 0x095f, "\x09\x2f\x09\x3c\0" },
- { 0x09b0, "\x09\xac\x09\xbc\0" },
- { 0x09cb, "\x09\xc7\x09\xbe\0" },
- { 0x09cc, "\x09\xc7\x09\xd7\0" },
- { 0x09dc, "\x09\xa1\x09\xbc\0" },
- { 0x09dd, "\x09\xa2\x09\xbc\0" },
- { 0x09df, "\x09\xaf\x09\xbc\0" },
- { 0x0a59, "\x0a\x16\x0a\x3c\0" },
- { 0x0a5a, "\x0a\x17\x0a\x3c\0" },
- { 0x0a5b, "\x0a\x1c\x0a\x3c\0" },
- { 0x0a5c, "\x0a\x21\x0a\x3c\0" },
- { 0x0a5e, "\x0a\x2b\x0a\x3c\0" },
- { 0x0b48, "\x0b\x47\x0b\x56\0" },
- { 0x0b4b, "\x0b\x47\x0b\x3e\0" },
- { 0x0b4c, "\x0b\x47\x0b\x57\0" },
- { 0x0b5c, "\x0b\x21\x0b\x3c\0" },
- { 0x0b5d, "\x0b\x22\x0b\x3c\0" },
- { 0x0b5f, "\x0b\x2f\x0b\x3c\0" },
- { 0x0b94, "\x0b\x92\x0b\xd7\0" },
- { 0x0bca, "\x0b\xc6\x0b\xbe\0" },
- { 0x0bcb, "\x0b\xc7\x0b\xbe\0" },
- { 0x0bcc, "\x0b\xc6\x0b\xd7\0" },
- { 0x0c48, "\x0c\x46\x0c\x56\0" },
- { 0x0cc0, "\x0c\xbf\x0c\xd5\0" },
- { 0x0cc7, "\x0c\xc6\x0c\xd5\0" },
- { 0x0cc8, "\x0c\xc6\x0c\xd6\0" },
- { 0x0cca, "\x0c\xc6\x0c\xc2\0" },
- { 0x0ccb, "\x0c\xc6\x0c\xc2\x0c\xd5\0" },
- { 0x0d4a, "\x0d\x46\x0d\x3e\0" },
- { 0x0d4b, "\x0d\x47\x0d\x3e\0" },
- { 0x0d4c, "\x0d\x46\x0d\x57\0" },
- { 0x0e33, "\x0e\x4d\x0e\x32\0" },
- { 0x0eb3, "\x0e\xcd\x0e\xb2\0" },
- { 0x0f43, "\x0f\x42\x0f\xb7\0" },
- { 0x0f4d, "\x0f\x4c\x0f\xb7\0" },
- { 0x0f52, "\x0f\x51\x0f\xb7\0" },
- { 0x0f57, "\x0f\x56\x0f\xb7\0" },
- { 0x0f5c, "\x0f\x5b\x0f\xb7\0" },
- { 0x0f69, "\x0f\x40\x0f\xb5\0" },
- { 0x0f73, "\x0f\x71\x0f\x72\0" },
- { 0x0f75, "\x0f\x71\x0f\x74\0" },
- { 0x0f76, "\x0f\xb2\x0f\x80\0" },
- { 0x0f78, "\x0f\xb3\x0f\x80\0" },
- { 0x0f81, "\x0f\x71\x0f\x80\0" },
- { 0x0f93, "\x0f\x92\x0f\xb7\0" },
- { 0x0f9d, "\x0f\x9c\x0f\xb7\0" },
- { 0x0fa2, "\x0f\xa1\x0f\xb7\0" },
- { 0x0fa7, "\x0f\xa6\x0f\xb7\0" },
- { 0x0fac, "\x0f\xab\x0f\xb7\0" },
- { 0x0fb9, "\x0f\x90\x0f\xb5\0" },
- { 0x1e00, "\x00\x41\x03\x25\0" },
- { 0x1e01, "\x00\x61\x03\x25\0" },
- { 0x1e02, "\x00\x42\x03\x07\0" },
- { 0x1e03, "\x00\x62\x03\x07\0" },
- { 0x1e04, "\x00\x42\x03\x23\0" },
- { 0x1e05, "\x00\x62\x03\x23\0" },
- { 0x1e06, "\x00\x42\x03\x31\0" },
- { 0x1e07, "\x00\x62\x03\x31\0" },
- { 0x1e08, "\x00\x43\x03\x27\x03\x01\0" },
- { 0x1e09, "\x00\x63\x03\x27\x03\x01\0" },
- { 0x1e0a, "\x00\x44\x03\x07\0" },
- { 0x1e0b, "\x00\x64\x03\x07\0" },
- { 0x1e0c, "\x00\x44\x03\x23\0" },
- { 0x1e0d, "\x00\x64\x03\x23\0" },
- { 0x1e0e, "\x00\x44\x03\x31\0" },
- { 0x1e0f, "\x00\x64\x03\x31\0" },
- { 0x1e10, "\x00\x44\x03\x27\0" },
- { 0x1e11, "\x00\x64\x03\x27\0" },
- { 0x1e12, "\x00\x44\x03\x2d\0" },
- { 0x1e13, "\x00\x64\x03\x2d\0" },
- { 0x1e14, "\x00\x45\x03\x04\x03\x00\0" },
- { 0x1e15, "\x00\x65\x03\x04\x03\x00\0" },
- { 0x1e16, "\x00\x45\x03\x04\x03\x01\0" },
- { 0x1e17, "\x00\x65\x03\x04\x03\x01\0" },
- { 0x1e18, "\x00\x45\x03\x2d\0" },
- { 0x1e19, "\x00\x65\x03\x2d\0" },
- { 0x1e1a, "\x00\x45\x03\x30\0" },
- { 0x1e1b, "\x00\x65\x03\x30\0" },
- { 0x1e1c, "\x00\x45\x03\x27\x03\x06\0" },
- { 0x1e1d, "\x00\x65\x03\x27\x03\x06\0" },
- { 0x1e1e, "\x00\x46\x03\x07\0" },
- { 0x1e1f, "\x00\x66\x03\x07\0" },
- { 0x1e20, "\x00\x47\x03\x04\0" },
- { 0x1e21, "\x00\x67\x03\x04\0" },
- { 0x1e22, "\x00\x48\x03\x07\0" },
- { 0x1e23, "\x00\x68\x03\x07\0" },
- { 0x1e24, "\x00\x48\x03\x23\0" },
- { 0x1e25, "\x00\x68\x03\x23\0" },
- { 0x1e26, "\x00\x48\x03\x08\0" },
- { 0x1e27, "\x00\x68\x03\x08\0" },
- { 0x1e28, "\x00\x48\x03\x27\0" },
- { 0x1e29, "\x00\x68\x03\x27\0" },
- { 0x1e2a, "\x00\x48\x03\x2e\0" },
- { 0x1e2b, "\x00\x68\x03\x2e\0" },
- { 0x1e2c, "\x00\x49\x03\x30\0" },
- { 0x1e2d, "\x00\x69\x03\x30\0" },
- { 0x1e2e, "\x00\x49\x03\x08\x03\x01\0" },
- { 0x1e2f, "\x00\x69\x03\x08\x03\x01\0" },
- { 0x1e30, "\x00\x4b\x03\x01\0" },
- { 0x1e31, "\x00\x6b\x03\x01\0" },
- { 0x1e32, "\x00\x4b\x03\x23\0" },
- { 0x1e33, "\x00\x6b\x03\x23\0" },
- { 0x1e34, "\x00\x4b\x03\x31\0" },
- { 0x1e35, "\x00\x6b\x03\x31\0" },
- { 0x1e36, "\x00\x4c\x03\x23\0" },
- { 0x1e37, "\x00\x6c\x03\x23\0" },
- { 0x1e38, "\x00\x4c\x03\x23\x03\x04\0" },
- { 0x1e39, "\x00\x6c\x03\x23\x03\x04\0" },
- { 0x1e3a, "\x00\x4c\x03\x31\0" },
- { 0x1e3b, "\x00\x6c\x03\x31\0" },
- { 0x1e3c, "\x00\x4c\x03\x2d\0" },
- { 0x1e3d, "\x00\x6c\x03\x2d\0" },
- { 0x1e3e, "\x00\x4d\x03\x01\0" },
- { 0x1e3f, "\x00\x6d\x03\x01\0" },
- { 0x1e40, "\x00\x4d\x03\x07\0" },
- { 0x1e41, "\x00\x6d\x03\x07\0" },
- { 0x1e42, "\x00\x4d\x03\x23\0" },
- { 0x1e43, "\x00\x6d\x03\x23\0" },
- { 0x1e44, "\x00\x4e\x03\x07\0" },
- { 0x1e45, "\x00\x6e\x03\x07\0" },
- { 0x1e46, "\x00\x4e\x03\x23\0" },
- { 0x1e47, "\x00\x6e\x03\x23\0" },
- { 0x1e48, "\x00\x4e\x03\x31\0" },
- { 0x1e49, "\x00\x6e\x03\x31\0" },
- { 0x1e4a, "\x00\x4e\x03\x2d\0" },
- { 0x1e4b, "\x00\x6e\x03\x2d\0" },
- { 0x1e4c, "\x00\x4f\x03\x03\x03\x01\0" },
- { 0x1e4d, "\x00\x6f\x03\x03\x03\x01\0" },
- { 0x1e4e, "\x00\x4f\x03\x03\x03\x08\0" },
- { 0x1e4f, "\x00\x6f\x03\x03\x03\x08\0" },
- { 0x1e50, "\x00\x4f\x03\x04\x03\x00\0" },
- { 0x1e51, "\x00\x6f\x03\x04\x03\x00\0" },
- { 0x1e52, "\x00\x4f\x03\x04\x03\x01\0" },
- { 0x1e53, "\x00\x6f\x03\x04\x03\x01\0" },
- { 0x1e54, "\x00\x50\x03\x01\0" },
- { 0x1e55, "\x00\x70\x03\x01\0" },
- { 0x1e56, "\x00\x50\x03\x07\0" },
- { 0x1e57, "\x00\x70\x03\x07\0" },
- { 0x1e58, "\x00\x52\x03\x07\0" },
- { 0x1e59, "\x00\x72\x03\x07\0" },
- { 0x1e5a, "\x00\x52\x03\x23\0" },
- { 0x1e5b, "\x00\x72\x03\x23\0" },
- { 0x1e5c, "\x00\x52\x03\x23\x03\x04\0" },
- { 0x1e5d, "\x00\x72\x03\x23\x03\x04\0" },
- { 0x1e5e, "\x00\x52\x03\x31\0" },
- { 0x1e5f, "\x00\x72\x03\x31\0" },
- { 0x1e60, "\x00\x53\x03\x07\0" },
- { 0x1e61, "\x00\x73\x03\x07\0" },
- { 0x1e62, "\x00\x53\x03\x23\0" },
- { 0x1e63, "\x00\x73\x03\x23\0" },
- { 0x1e64, "\x00\x53\x03\x01\x03\x07\0" },
- { 0x1e65, "\x00\x73\x03\x01\x03\x07\0" },
- { 0x1e66, "\x00\x53\x03\x0c\x03\x07\0" },
- { 0x1e67, "\x00\x73\x03\x0c\x03\x07\0" },
- { 0x1e68, "\x00\x53\x03\x23\x03\x07\0" },
- { 0x1e69, "\x00\x73\x03\x23\x03\x07\0" },
- { 0x1e6a, "\x00\x54\x03\x07\0" },
- { 0x1e6b, "\x00\x74\x03\x07\0" },
- { 0x1e6c, "\x00\x54\x03\x23\0" },
- { 0x1e6d, "\x00\x74\x03\x23\0" },
- { 0x1e6e, "\x00\x54\x03\x31\0" },
- { 0x1e6f, "\x00\x74\x03\x31\0" },
- { 0x1e70, "\x00\x54\x03\x2d\0" },
- { 0x1e71, "\x00\x74\x03\x2d\0" },
- { 0x1e72, "\x00\x55\x03\x24\0" },
- { 0x1e73, "\x00\x75\x03\x24\0" },
- { 0x1e74, "\x00\x55\x03\x30\0" },
- { 0x1e75, "\x00\x75\x03\x30\0" },
- { 0x1e76, "\x00\x55\x03\x2d\0" },
- { 0x1e77, "\x00\x75\x03\x2d\0" },
- { 0x1e78, "\x00\x55\x03\x03\x03\x01\0" },
- { 0x1e79, "\x00\x75\x03\x03\x03\x01\0" },
- { 0x1e7a, "\x00\x55\x03\x04\x03\x08\0" },
- { 0x1e7b, "\x00\x75\x03\x04\x03\x08\0" },
- { 0x1e7c, "\x00\x56\x03\x03\0" },
- { 0x1e7d, "\x00\x76\x03\x03\0" },
- { 0x1e7e, "\x00\x56\x03\x23\0" },
- { 0x1e7f, "\x00\x76\x03\x23\0" },
- { 0x1e80, "\x00\x57\x03\x00\0" },
- { 0x1e81, "\x00\x77\x03\x00\0" },
- { 0x1e82, "\x00\x57\x03\x01\0" },
- { 0x1e83, "\x00\x77\x03\x01\0" },
- { 0x1e84, "\x00\x57\x03\x08\0" },
- { 0x1e85, "\x00\x77\x03\x08\0" },
- { 0x1e86, "\x00\x57\x03\x07\0" },
- { 0x1e87, "\x00\x77\x03\x07\0" },
- { 0x1e88, "\x00\x57\x03\x23\0" },
- { 0x1e89, "\x00\x77\x03\x23\0" },
- { 0x1e8a, "\x00\x58\x03\x07\0" },
- { 0x1e8b, "\x00\x78\x03\x07\0" },
- { 0x1e8c, "\x00\x58\x03\x08\0" },
- { 0x1e8d, "\x00\x78\x03\x08\0" },
- { 0x1e8e, "\x00\x59\x03\x07\0" },
- { 0x1e8f, "\x00\x79\x03\x07\0" },
- { 0x1e90, "\x00\x5a\x03\x02\0" },
- { 0x1e91, "\x00\x7a\x03\x02\0" },
- { 0x1e92, "\x00\x5a\x03\x23\0" },
- { 0x1e93, "\x00\x7a\x03\x23\0" },
- { 0x1e94, "\x00\x5a\x03\x31\0" },
- { 0x1e95, "\x00\x7a\x03\x31\0" },
- { 0x1e96, "\x00\x68\x03\x31\0" },
- { 0x1e97, "\x00\x74\x03\x08\0" },
- { 0x1e98, "\x00\x77\x03\x0a\0" },
- { 0x1e99, "\x00\x79\x03\x0a\0" },
- { 0x1e9b, "\x01\x7f\x03\x07\0" },
- { 0x1ea0, "\x00\x41\x03\x23\0" },
- { 0x1ea1, "\x00\x61\x03\x23\0" },
- { 0x1ea2, "\x00\x41\x03\x09\0" },
- { 0x1ea3, "\x00\x61\x03\x09\0" },
- { 0x1ea4, "\x00\x41\x03\x02\x03\x01\0" },
- { 0x1ea5, "\x00\x61\x03\x02\x03\x01\0" },
- { 0x1ea6, "\x00\x41\x03\x02\x03\x00\0" },
- { 0x1ea7, "\x00\x61\x03\x02\x03\x00\0" },
- { 0x1ea8, "\x00\x41\x03\x02\x03\x09\0" },
- { 0x1ea9, "\x00\x61\x03\x02\x03\x09\0" },
- { 0x1eaa, "\x00\x41\x03\x02\x03\x03\0" },
- { 0x1eab, "\x00\x61\x03\x02\x03\x03\0" },
- { 0x1eac, "\x00\x41\x03\x23\x03\x02\0" },
- { 0x1ead, "\x00\x61\x03\x23\x03\x02\0" },
- { 0x1eae, "\x00\x41\x03\x06\x03\x01\0" },
- { 0x1eaf, "\x00\x61\x03\x06\x03\x01\0" },
- { 0x1eb0, "\x00\x41\x03\x06\x03\x00\0" },
- { 0x1eb1, "\x00\x61\x03\x06\x03\x00\0" },
- { 0x1eb2, "\x00\x41\x03\x06\x03\x09\0" },
- { 0x1eb3, "\x00\x61\x03\x06\x03\x09\0" },
- { 0x1eb4, "\x00\x41\x03\x06\x03\x03\0" },
- { 0x1eb5, "\x00\x61\x03\x06\x03\x03\0" },
- { 0x1eb6, "\x00\x41\x03\x23\x03\x06\0" },
- { 0x1eb7, "\x00\x61\x03\x23\x03\x06\0" },
- { 0x1eb8, "\x00\x45\x03\x23\0" },
- { 0x1eb9, "\x00\x65\x03\x23\0" },
- { 0x1eba, "\x00\x45\x03\x09\0" },
- { 0x1ebb, "\x00\x65\x03\x09\0" },
- { 0x1ebc, "\x00\x45\x03\x03\0" },
- { 0x1ebd, "\x00\x65\x03\x03\0" },
- { 0x1ebe, "\x00\x45\x03\x02\x03\x01\0" },
- { 0x1ebf, "\x00\x65\x03\x02\x03\x01\0" },
- { 0x1ec0, "\x00\x45\x03\x02\x03\x00\0" },
- { 0x1ec1, "\x00\x65\x03\x02\x03\x00\0" },
- { 0x1ec2, "\x00\x45\x03\x02\x03\x09\0" },
- { 0x1ec3, "\x00\x65\x03\x02\x03\x09\0" },
- { 0x1ec4, "\x00\x45\x03\x02\x03\x03\0" },
- { 0x1ec5, "\x00\x65\x03\x02\x03\x03\0" },
- { 0x1ec6, "\x00\x45\x03\x23\x03\x02\0" },
- { 0x1ec7, "\x00\x65\x03\x23\x03\x02\0" },
- { 0x1ec8, "\x00\x49\x03\x09\0" },
- { 0x1ec9, "\x00\x69\x03\x09\0" },
- { 0x1eca, "\x00\x49\x03\x23\0" },
- { 0x1ecb, "\x00\x69\x03\x23\0" },
- { 0x1ecc, "\x00\x4f\x03\x23\0" },
- { 0x1ecd, "\x00\x6f\x03\x23\0" },
- { 0x1ece, "\x00\x4f\x03\x09\0" },
- { 0x1ecf, "\x00\x6f\x03\x09\0" },
- { 0x1ed0, "\x00\x4f\x03\x02\x03\x01\0" },
- { 0x1ed1, "\x00\x6f\x03\x02\x03\x01\0" },
- { 0x1ed2, "\x00\x4f\x03\x02\x03\x00\0" },
- { 0x1ed3, "\x00\x6f\x03\x02\x03\x00\0" },
- { 0x1ed4, "\x00\x4f\x03\x02\x03\x09\0" },
- { 0x1ed5, "\x00\x6f\x03\x02\x03\x09\0" },
- { 0x1ed6, "\x00\x4f\x03\x02\x03\x03\0" },
- { 0x1ed7, "\x00\x6f\x03\x02\x03\x03\0" },
- { 0x1ed8, "\x00\x4f\x03\x23\x03\x02\0" },
- { 0x1ed9, "\x00\x6f\x03\x23\x03\x02\0" },
- { 0x1eda, "\x00\x4f\x03\x1b\x03\x01\0" },
- { 0x1edb, "\x00\x6f\x03\x1b\x03\x01\0" },
- { 0x1edc, "\x00\x4f\x03\x1b\x03\x00\0" },
- { 0x1edd, "\x00\x6f\x03\x1b\x03\x00\0" },
- { 0x1ede, "\x00\x4f\x03\x1b\x03\x09\0" },
- { 0x1edf, "\x00\x6f\x03\x1b\x03\x09\0" },
- { 0x1ee0, "\x00\x4f\x03\x1b\x03\x03\0" },
- { 0x1ee1, "\x00\x6f\x03\x1b\x03\x03\0" },
- { 0x1ee2, "\x00\x4f\x03\x1b\x03\x23\0" },
- { 0x1ee3, "\x00\x6f\x03\x1b\x03\x23\0" },
- { 0x1ee4, "\x00\x55\x03\x23\0" },
- { 0x1ee5, "\x00\x75\x03\x23\0" },
- { 0x1ee6, "\x00\x55\x03\x09\0" },
- { 0x1ee7, "\x00\x75\x03\x09\0" },
- { 0x1ee8, "\x00\x55\x03\x1b\x03\x01\0" },
- { 0x1ee9, "\x00\x75\x03\x1b\x03\x01\0" },
- { 0x1eea, "\x00\x55\x03\x1b\x03\x00\0" },
- { 0x1eeb, "\x00\x75\x03\x1b\x03\x00\0" },
- { 0x1eec, "\x00\x55\x03\x1b\x03\x09\0" },
- { 0x1eed, "\x00\x75\x03\x1b\x03\x09\0" },
- { 0x1eee, "\x00\x55\x03\x1b\x03\x03\0" },
- { 0x1eef, "\x00\x75\x03\x1b\x03\x03\0" },
- { 0x1ef0, "\x00\x55\x03\x1b\x03\x23\0" },
- { 0x1ef1, "\x00\x75\x03\x1b\x03\x23\0" },
- { 0x1ef2, "\x00\x59\x03\x00\0" },
- { 0x1ef3, "\x00\x79\x03\x00\0" },
- { 0x1ef4, "\x00\x59\x03\x23\0" },
- { 0x1ef5, "\x00\x79\x03\x23\0" },
- { 0x1ef6, "\x00\x59\x03\x09\0" },
- { 0x1ef7, "\x00\x79\x03\x09\0" },
- { 0x1ef8, "\x00\x59\x03\x03\0" },
- { 0x1ef9, "\x00\x79\x03\x03\0" },
- { 0x1f00, "\x03\xb1\x03\x13\0" },
- { 0x1f01, "\x03\xb1\x03\x14\0" },
- { 0x1f02, "\x03\xb1\x03\x13\x03\x00\0" },
- { 0x1f03, "\x03\xb1\x03\x14\x03\x00\0" },
- { 0x1f04, "\x03\xb1\x03\x13\x03\x01\0" },
- { 0x1f05, "\x03\xb1\x03\x14\x03\x01\0" },
- { 0x1f06, "\x03\xb1\x03\x13\x03\x42\0" },
- { 0x1f07, "\x03\xb1\x03\x14\x03\x42\0" },
- { 0x1f08, "\x03\x91\x03\x13\0" },
- { 0x1f09, "\x03\x91\x03\x14\0" },
- { 0x1f0a, "\x03\x91\x03\x13\x03\x00\0" },
- { 0x1f0b, "\x03\x91\x03\x14\x03\x00\0" },
- { 0x1f0c, "\x03\x91\x03\x13\x03\x01\0" },
- { 0x1f0d, "\x03\x91\x03\x14\x03\x01\0" },
- { 0x1f0e, "\x03\x91\x03\x13\x03\x42\0" },
- { 0x1f0f, "\x03\x91\x03\x14\x03\x42\0" },
- { 0x1f10, "\x03\xb5\x03\x13\0" },
- { 0x1f11, "\x03\xb5\x03\x14\0" },
- { 0x1f12, "\x03\xb5\x03\x13\x03\x00\0" },
- { 0x1f13, "\x03\xb5\x03\x14\x03\x00\0" },
- { 0x1f14, "\x03\xb5\x03\x13\x03\x01\0" },
- { 0x1f15, "\x03\xb5\x03\x14\x03\x01\0" },
- { 0x1f18, "\x03\x95\x03\x13\0" },
- { 0x1f19, "\x03\x95\x03\x14\0" },
- { 0x1f1a, "\x03\x95\x03\x13\x03\x00\0" },
- { 0x1f1b, "\x03\x95\x03\x14\x03\x00\0" },
- { 0x1f1c, "\x03\x95\x03\x13\x03\x01\0" },
- { 0x1f1d, "\x03\x95\x03\x14\x03\x01\0" },
- { 0x1f20, "\x03\xb7\x03\x13\0" },
- { 0x1f21, "\x03\xb7\x03\x14\0" },
- { 0x1f22, "\x03\xb7\x03\x13\x03\x00\0" },
- { 0x1f23, "\x03\xb7\x03\x14\x03\x00\0" },
- { 0x1f24, "\x03\xb7\x03\x13\x03\x01\0" },
- { 0x1f25, "\x03\xb7\x03\x14\x03\x01\0" },
- { 0x1f26, "\x03\xb7\x03\x13\x03\x42\0" },
- { 0x1f27, "\x03\xb7\x03\x14\x03\x42\0" },
- { 0x1f28, "\x03\x97\x03\x13\0" },
- { 0x1f29, "\x03\x97\x03\x14\0" },
- { 0x1f2a, "\x03\x97\x03\x13\x03\x00\0" },
- { 0x1f2b, "\x03\x97\x03\x14\x03\x00\0" },
- { 0x1f2c, "\x03\x97\x03\x13\x03\x01\0" },
- { 0x1f2d, "\x03\x97\x03\x14\x03\x01\0" },
- { 0x1f2e, "\x03\x97\x03\x13\x03\x42\0" },
- { 0x1f2f, "\x03\x97\x03\x14\x03\x42\0" },
- { 0x1f30, "\x03\xb9\x03\x13\0" },
- { 0x1f31, "\x03\xb9\x03\x14\0" },
- { 0x1f32, "\x03\xb9\x03\x13\x03\x00\0" },
- { 0x1f33, "\x03\xb9\x03\x14\x03\x00\0" },
- { 0x1f34, "\x03\xb9\x03\x13\x03\x01\0" },
- { 0x1f35, "\x03\xb9\x03\x14\x03\x01\0" },
- { 0x1f36, "\x03\xb9\x03\x13\x03\x42\0" },
- { 0x1f37, "\x03\xb9\x03\x14\x03\x42\0" },
- { 0x1f38, "\x03\x99\x03\x13\0" },
- { 0x1f39, "\x03\x99\x03\x14\0" },
- { 0x1f3a, "\x03\x99\x03\x13\x03\x00\0" },
- { 0x1f3b, "\x03\x99\x03\x14\x03\x00\0" },
- { 0x1f3c, "\x03\x99\x03\x13\x03\x01\0" },
- { 0x1f3d, "\x03\x99\x03\x14\x03\x01\0" },
- { 0x1f3e, "\x03\x99\x03\x13\x03\x42\0" },
- { 0x1f3f, "\x03\x99\x03\x14\x03\x42\0" },
- { 0x1f40, "\x03\xbf\x03\x13\0" },
- { 0x1f41, "\x03\xbf\x03\x14\0" },
- { 0x1f42, "\x03\xbf\x03\x13\x03\x00\0" },
- { 0x1f43, "\x03\xbf\x03\x14\x03\x00\0" },
- { 0x1f44, "\x03\xbf\x03\x13\x03\x01\0" },
- { 0x1f45, "\x03\xbf\x03\x14\x03\x01\0" },
- { 0x1f48, "\x03\x9f\x03\x13\0" },
- { 0x1f49, "\x03\x9f\x03\x14\0" },
- { 0x1f4a, "\x03\x9f\x03\x13\x03\x00\0" },
- { 0x1f4b, "\x03\x9f\x03\x14\x03\x00\0" },
- { 0x1f4c, "\x03\x9f\x03\x13\x03\x01\0" },
- { 0x1f4d, "\x03\x9f\x03\x14\x03\x01\0" },
- { 0x1f50, "\x03\xc5\x03\x13\0" },
- { 0x1f51, "\x03\xc5\x03\x14\0" },
- { 0x1f52, "\x03\xc5\x03\x13\x03\x00\0" },
- { 0x1f53, "\x03\xc5\x03\x14\x03\x00\0" },
- { 0x1f54, "\x03\xc5\x03\x13\x03\x01\0" },
- { 0x1f55, "\x03\xc5\x03\x14\x03\x01\0" },
- { 0x1f56, "\x03\xc5\x03\x13\x03\x42\0" },
- { 0x1f57, "\x03\xc5\x03\x14\x03\x42\0" },
- { 0x1f59, "\x03\xa5\x03\x14\0" },
- { 0x1f5b, "\x03\xa5\x03\x14\x03\x00\0" },
- { 0x1f5d, "\x03\xa5\x03\x14\x03\x01\0" },
- { 0x1f5f, "\x03\xa5\x03\x14\x03\x42\0" },
- { 0x1f60, "\x03\xc9\x03\x13\0" },
- { 0x1f61, "\x03\xc9\x03\x14\0" },
- { 0x1f62, "\x03\xc9\x03\x13\x03\x00\0" },
- { 0x1f63, "\x03\xc9\x03\x14\x03\x00\0" },
- { 0x1f64, "\x03\xc9\x03\x13\x03\x01\0" },
- { 0x1f65, "\x03\xc9\x03\x14\x03\x01\0" },
- { 0x1f66, "\x03\xc9\x03\x13\x03\x42\0" },
- { 0x1f67, "\x03\xc9\x03\x14\x03\x42\0" },
- { 0x1f68, "\x03\xa9\x03\x13\0" },
- { 0x1f69, "\x03\xa9\x03\x14\0" },
- { 0x1f6a, "\x03\xa9\x03\x13\x03\x00\0" },
- { 0x1f6b, "\x03\xa9\x03\x14\x03\x00\0" },
- { 0x1f6c, "\x03\xa9\x03\x13\x03\x01\0" },
- { 0x1f6d, "\x03\xa9\x03\x14\x03\x01\0" },
- { 0x1f6e, "\x03\xa9\x03\x13\x03\x42\0" },
- { 0x1f6f, "\x03\xa9\x03\x14\x03\x42\0" },
- { 0x1f70, "\x03\xb1\x03\x00\0" },
- { 0x1f71, "\x03\xb1\x03\x01\0" },
- { 0x1f72, "\x03\xb5\x03\x00\0" },
- { 0x1f73, "\x03\xb5\x03\x01\0" },
- { 0x1f74, "\x03\xb7\x03\x00\0" },
- { 0x1f75, "\x03\xb7\x03\x01\0" },
- { 0x1f76, "\x03\xb9\x03\x00\0" },
- { 0x1f77, "\x03\xb9\x03\x01\0" },
- { 0x1f78, "\x03\xbf\x03\x00\0" },
- { 0x1f79, "\x03\xbf\x03\x01\0" },
- { 0x1f7a, "\x03\xc5\x03\x00\0" },
- { 0x1f7b, "\x03\xc5\x03\x01\0" },
- { 0x1f7c, "\x03\xc9\x03\x00\0" },
- { 0x1f7d, "\x03\xc9\x03\x01\0" },
- { 0x1f80, "\x03\xb1\x03\x13\x03\x45\0" },
- { 0x1f81, "\x03\xb1\x03\x14\x03\x45\0" },
- { 0x1f82, "\x03\xb1\x03\x13\x03\x00\x03\x45\0" },
- { 0x1f83, "\x03\xb1\x03\x14\x03\x00\x03\x45\0" },
- { 0x1f84, "\x03\xb1\x03\x13\x03\x01\x03\x45\0" },
- { 0x1f85, "\x03\xb1\x03\x14\x03\x01\x03\x45\0" },
- { 0x1f86, "\x03\xb1\x03\x13\x03\x42\x03\x45\0" },
- { 0x1f87, "\x03\xb1\x03\x14\x03\x42\x03\x45\0" },
- { 0x1f88, "\x03\x91\x03\x13\x03\x45\0" },
- { 0x1f89, "\x03\x91\x03\x14\x03\x45\0" },
- { 0x1f8a, "\x03\x91\x03\x13\x03\x00\x03\x45\0" },
- { 0x1f8b, "\x03\x91\x03\x14\x03\x00\x03\x45\0" },
- { 0x1f8c, "\x03\x91\x03\x13\x03\x01\x03\x45\0" },
- { 0x1f8d, "\x03\x91\x03\x14\x03\x01\x03\x45\0" },
- { 0x1f8e, "\x03\x91\x03\x13\x03\x42\x03\x45\0" },
- { 0x1f8f, "\x03\x91\x03\x14\x03\x42\x03\x45\0" },
- { 0x1f90, "\x03\xb7\x03\x13\x03\x45\0" },
- { 0x1f91, "\x03\xb7\x03\x14\x03\x45\0" },
- { 0x1f92, "\x03\xb7\x03\x13\x03\x00\x03\x45\0" },
- { 0x1f93, "\x03\xb7\x03\x14\x03\x00\x03\x45\0" },
- { 0x1f94, "\x03\xb7\x03\x13\x03\x01\x03\x45\0" },
- { 0x1f95, "\x03\xb7\x03\x14\x03\x01\x03\x45\0" },
- { 0x1f96, "\x03\xb7\x03\x13\x03\x42\x03\x45\0" },
- { 0x1f97, "\x03\xb7\x03\x14\x03\x42\x03\x45\0" },
- { 0x1f98, "\x03\x97\x03\x13\x03\x45\0" },
- { 0x1f99, "\x03\x97\x03\x14\x03\x45\0" },
- { 0x1f9a, "\x03\x97\x03\x13\x03\x00\x03\x45\0" },
- { 0x1f9b, "\x03\x97\x03\x14\x03\x00\x03\x45\0" },
- { 0x1f9c, "\x03\x97\x03\x13\x03\x01\x03\x45\0" },
- { 0x1f9d, "\x03\x97\x03\x14\x03\x01\x03\x45\0" },
- { 0x1f9e, "\x03\x97\x03\x13\x03\x42\x03\x45\0" },
- { 0x1f9f, "\x03\x97\x03\x14\x03\x42\x03\x45\0" },
- { 0x1fa0, "\x03\xc9\x03\x13\x03\x45\0" },
- { 0x1fa1, "\x03\xc9\x03\x14\x03\x45\0" },
- { 0x1fa2, "\x03\xc9\x03\x13\x03\x00\x03\x45\0" },
- { 0x1fa3, "\x03\xc9\x03\x14\x03\x00\x03\x45\0" },
- { 0x1fa4, "\x03\xc9\x03\x13\x03\x01\x03\x45\0" },
- { 0x1fa5, "\x03\xc9\x03\x14\x03\x01\x03\x45\0" },
- { 0x1fa6, "\x03\xc9\x03\x13\x03\x42\x03\x45\0" },
- { 0x1fa7, "\x03\xc9\x03\x14\x03\x42\x03\x45\0" },
- { 0x1fa8, "\x03\xa9\x03\x13\x03\x45\0" },
- { 0x1fa9, "\x03\xa9\x03\x14\x03\x45\0" },
- { 0x1faa, "\x03\xa9\x03\x13\x03\x00\x03\x45\0" },
- { 0x1fab, "\x03\xa9\x03\x14\x03\x00\x03\x45\0" },
- { 0x1fac, "\x03\xa9\x03\x13\x03\x01\x03\x45\0" },
- { 0x1fad, "\x03\xa9\x03\x14\x03\x01\x03\x45\0" },
- { 0x1fae, "\x03\xa9\x03\x13\x03\x42\x03\x45\0" },
- { 0x1faf, "\x03\xa9\x03\x14\x03\x42\x03\x45\0" },
- { 0x1fb0, "\x03\xb1\x03\x06\0" },
- { 0x1fb1, "\x03\xb1\x03\x04\0" },
- { 0x1fb2, "\x03\xb1\x03\x00\x03\x45\0" },
- { 0x1fb3, "\x03\xb1\x03\x45\0" },
- { 0x1fb4, "\x03\xb1\x03\x01\x03\x45\0" },
- { 0x1fb6, "\x03\xb1\x03\x42\0" },
- { 0x1fb7, "\x03\xb1\x03\x42\x03\x45\0" },
- { 0x1fb8, "\x03\x91\x03\x06\0" },
- { 0x1fb9, "\x03\x91\x03\x04\0" },
- { 0x1fba, "\x03\x91\x03\x00\0" },
- { 0x1fbb, "\x03\x91\x03\x01\0" },
- { 0x1fbc, "\x03\x91\x03\x45\0" },
- { 0x1fbe, "\x03\xb9\0" },
- { 0x1fc1, "\x00\xa8\x03\x42\0" },
- { 0x1fc2, "\x03\xb7\x03\x00\x03\x45\0" },
- { 0x1fc3, "\x03\xb7\x03\x45\0" },
- { 0x1fc4, "\x03\xb7\x03\x01\x03\x45\0" },
- { 0x1fc6, "\x03\xb7\x03\x42\0" },
- { 0x1fc7, "\x03\xb7\x03\x42\x03\x45\0" },
- { 0x1fc8, "\x03\x95\x03\x00\0" },
- { 0x1fc9, "\x03\x95\x03\x01\0" },
- { 0x1fca, "\x03\x97\x03\x00\0" },
- { 0x1fcb, "\x03\x97\x03\x01\0" },
- { 0x1fcc, "\x03\x97\x03\x45\0" },
- { 0x1fcd, "\x1f\xbf\x03\x00\0" },
- { 0x1fce, "\x1f\xbf\x03\x01\0" },
- { 0x1fcf, "\x1f\xbf\x03\x42\0" },
- { 0x1fd0, "\x03\xb9\x03\x06\0" },
- { 0x1fd1, "\x03\xb9\x03\x04\0" },
- { 0x1fd2, "\x03\xb9\x03\x08\x03\x00\0" },
- { 0x1fd3, "\x03\xb9\x03\x08\x03\x01\0" },
- { 0x1fd6, "\x03\xb9\x03\x42\0" },
- { 0x1fd7, "\x03\xb9\x03\x08\x03\x42\0" },
- { 0x1fd8, "\x03\x99\x03\x06\0" },
- { 0x1fd9, "\x03\x99\x03\x04\0" },
- { 0x1fda, "\x03\x99\x03\x00\0" },
- { 0x1fdb, "\x03\x99\x03\x01\0" },
- { 0x1fdd, "\x1f\xfe\x03\x00\0" },
- { 0x1fde, "\x1f\xfe\x03\x01\0" },
- { 0x1fdf, "\x1f\xfe\x03\x42\0" },
- { 0x1fe0, "\x03\xc5\x03\x06\0" },
- { 0x1fe1, "\x03\xc5\x03\x04\0" },
- { 0x1fe2, "\x03\xc5\x03\x08\x03\x00\0" },
- { 0x1fe3, "\x03\xc5\x03\x08\x03\x01\0" },
- { 0x1fe4, "\x03\xc1\x03\x13\0" },
- { 0x1fe5, "\x03\xc1\x03\x14\0" },
- { 0x1fe6, "\x03\xc5\x03\x42\0" },
- { 0x1fe7, "\x03\xc5\x03\x08\x03\x42\0" },
- { 0x1fe8, "\x03\xa5\x03\x06\0" },
- { 0x1fe9, "\x03\xa5\x03\x04\0" },
- { 0x1fea, "\x03\xa5\x03\x00\0" },
- { 0x1feb, "\x03\xa5\x03\x01\0" },
- { 0x1fec, "\x03\xa1\x03\x14\0" },
- { 0x1fed, "\x00\xa8\x03\x00\0" },
- { 0x1fee, "\x00\xa8\x03\x01\0" },
- { 0x1fef, "\x00\x60\0" },
- { 0x1ff2, "\x03\xc9\x03\x00\x03\x45\0" },
- { 0x1ff3, "\x03\xc9\x03\x45\0" },
- { 0x1ff4, "\x03\xc9\x03\x01\x03\x45\0" },
- { 0x1ff6, "\x03\xc9\x03\x42\0" },
- { 0x1ff7, "\x03\xc9\x03\x42\x03\x45\0" },
- { 0x1ff8, "\x03\x9f\x03\x00\0" },
- { 0x1ff9, "\x03\x9f\x03\x01\0" },
- { 0x1ffa, "\x03\xa9\x03\x00\0" },
- { 0x1ffb, "\x03\xa9\x03\x01\0" },
- { 0x1ffc, "\x03\xa9\x03\x45\0" },
- { 0x1ffd, "\x00\xb4\0" },
- { 0x2000, "\x20\x02\0" },
- { 0x2001, "\x20\x03\0" },
- { 0x2126, "\x03\xa9\0" },
- { 0x212a, "\x00\x4b\0" },
- { 0x212b, "\x00\x41\x03\x0a\0" },
- { 0x2204, "\x22\x03\x03\x38\0" },
- { 0x2209, "\x22\x08\x03\x38\0" },
- { 0x220c, "\x22\x0b\x03\x38\0" },
- { 0x2224, "\x22\x23\x03\x38\0" },
- { 0x2226, "\x22\x25\x03\x38\0" },
- { 0x2241, "\x00\x7e\x03\x38\0" },
- { 0x2244, "\x22\x43\x03\x38\0" },
- { 0x2247, "\x22\x45\x03\x38\0" },
- { 0x2249, "\x22\x48\x03\x38\0" },
- { 0x2260, "\x00\x3d\x03\x38\0" },
- { 0x2262, "\x22\x61\x03\x38\0" },
- { 0x226d, "\x22\x4d\x03\x38\0" },
- { 0x226e, "\x00\x3c\x03\x38\0" },
- { 0x226f, "\x00\x3e\x03\x38\0" },
- { 0x2270, "\x22\x64\x03\x38\0" },
- { 0x2271, "\x22\x65\x03\x38\0" },
- { 0x2274, "\x22\x72\x03\x38\0" },
- { 0x2275, "\x22\x73\x03\x38\0" },
- { 0x2278, "\x22\x76\x03\x38\0" },
- { 0x2279, "\x22\x77\x03\x38\0" },
- { 0x2280, "\x22\x7a\x03\x38\0" },
- { 0x2281, "\x22\x7b\x03\x38\0" },
- { 0x2284, "\x22\x82\x03\x38\0" },
- { 0x2285, "\x22\x83\x03\x38\0" },
- { 0x2288, "\x22\x86\x03\x38\0" },
- { 0x2289, "\x22\x87\x03\x38\0" },
- { 0x22ac, "\x22\xa2\x03\x38\0" },
- { 0x22ad, "\x22\xa8\x03\x38\0" },
- { 0x22ae, "\x22\xa9\x03\x38\0" },
- { 0x22af, "\x22\xab\x03\x38\0" },
- { 0x22e0, "\x22\x7c\x03\x38\0" },
- { 0x22e1, "\x22\x7d\x03\x38\0" },
- { 0x22e2, "\x22\x91\x03\x38\0" },
- { 0x22e3, "\x22\x92\x03\x38\0" },
- { 0x22ea, "\x22\xb2\x03\x38\0" },
- { 0x22eb, "\x22\xb3\x03\x38\0" },
- { 0x22ec, "\x22\xb4\x03\x38\0" },
- { 0x22ed, "\x22\xb5\x03\x38\0" },
- { 0x2329, "\x30\x08\0" },
- { 0x232a, "\x30\x09\0" },
- { 0x304c, "\x30\x4b\x30\x99\0" },
- { 0x304e, "\x30\x4d\x30\x99\0" },
- { 0x3050, "\x30\x4f\x30\x99\0" },
- { 0x3052, "\x30\x51\x30\x99\0" },
- { 0x3054, "\x30\x53\x30\x99\0" },
- { 0x3056, "\x30\x55\x30\x99\0" },
- { 0x3058, "\x30\x57\x30\x99\0" },
- { 0x305a, "\x30\x59\x30\x99\0" },
- { 0x305c, "\x30\x5b\x30\x99\0" },
- { 0x305e, "\x30\x5d\x30\x99\0" },
- { 0x3060, "\x30\x5f\x30\x99\0" },
- { 0x3062, "\x30\x61\x30\x99\0" },
- { 0x3065, "\x30\x64\x30\x99\0" },
- { 0x3067, "\x30\x66\x30\x99\0" },
- { 0x3069, "\x30\x68\x30\x99\0" },
- { 0x3070, "\x30\x6f\x30\x99\0" },
- { 0x3071, "\x30\x6f\x30\x9a\0" },
- { 0x3073, "\x30\x72\x30\x99\0" },
- { 0x3074, "\x30\x72\x30\x9a\0" },
- { 0x3076, "\x30\x75\x30\x99\0" },
- { 0x3077, "\x30\x75\x30\x9a\0" },
- { 0x3079, "\x30\x78\x30\x99\0" },
- { 0x307a, "\x30\x78\x30\x9a\0" },
- { 0x307c, "\x30\x7b\x30\x99\0" },
- { 0x307d, "\x30\x7b\x30\x9a\0" },
- { 0x3094, "\x30\x46\x30\x99\0" },
- { 0x309e, "\x30\x9d\x30\x99\0" },
- { 0x30ac, "\x30\xab\x30\x99\0" },
- { 0x30ae, "\x30\xad\x30\x99\0" },
- { 0x30b0, "\x30\xaf\x30\x99\0" },
- { 0x30b2, "\x30\xb1\x30\x99\0" },
- { 0x30b4, "\x30\xb3\x30\x99\0" },
- { 0x30b6, "\x30\xb5\x30\x99\0" },
- { 0x30b8, "\x30\xb7\x30\x99\0" },
- { 0x30ba, "\x30\xb9\x30\x99\0" },
- { 0x30bc, "\x30\xbb\x30\x99\0" },
- { 0x30be, "\x30\xbd\x30\x99\0" },
- { 0x30c0, "\x30\xbf\x30\x99\0" },
- { 0x30c2, "\x30\xc1\x30\x99\0" },
- { 0x30c5, "\x30\xc4\x30\x99\0" },
- { 0x30c7, "\x30\xc6\x30\x99\0" },
- { 0x30c9, "\x30\xc8\x30\x99\0" },
- { 0x30d0, "\x30\xcf\x30\x99\0" },
- { 0x30d1, "\x30\xcf\x30\x9a\0" },
- { 0x30d3, "\x30\xd2\x30\x99\0" },
- { 0x30d4, "\x30\xd2\x30\x9a\0" },
- { 0x30d6, "\x30\xd5\x30\x99\0" },
- { 0x30d7, "\x30\xd5\x30\x9a\0" },
- { 0x30d9, "\x30\xd8\x30\x99\0" },
- { 0x30da, "\x30\xd8\x30\x9a\0" },
- { 0x30dc, "\x30\xdb\x30\x99\0" },
- { 0x30dd, "\x30\xdb\x30\x9a\0" },
- { 0x30f4, "\x30\xa6\x30\x99\0" },
- { 0x30f7, "\x30\xef\x30\x99\0" },
- { 0x30f8, "\x30\xf0\x30\x99\0" },
- { 0x30f9, "\x30\xf1\x30\x99\0" },
- { 0x30fa, "\x30\xf2\x30\x99\0" },
- { 0x30fe, "\x30\xfd\x30\x99\0" },
- { 0xf900, "\x8c\x48\0" },
- { 0xf901, "\x66\xf4\0" },
- { 0xf902, "\x8e\xca\0" },
- { 0xf903, "\x8c\xc8\0" },
- { 0xf904, "\x6e\xd1\0" },
- { 0xf905, "\x4e\x32\0" },
- { 0xf906, "\x53\xe5\0" },
- { 0xf907, "\x9f\x9c\0" },
- { 0xf908, "\x9f\x9c\0" },
- { 0xf909, "\x59\x51\0" },
- { 0xf90a, "\x91\xd1\0" },
- { 0xf90b, "\x55\x87\0" },
- { 0xf90c, "\x59\x48\0" },
- { 0xf90d, "\x61\xf6\0" },
- { 0xf90e, "\x76\x69\0" },
- { 0xf90f, "\x7f\x85\0" },
- { 0xf910, "\x86\x3f\0" },
- { 0xf911, "\x87\xba\0" },
- { 0xf912, "\x88\xf8\0" },
- { 0xf913, "\x90\x8f\0" },
- { 0xf914, "\x6a\x02\0" },
- { 0xf915, "\x6d\x1b\0" },
- { 0xf916, "\x70\xd9\0" },
- { 0xf917, "\x73\xde\0" },
- { 0xf918, "\x84\x3d\0" },
- { 0xf919, "\x91\x6a\0" },
- { 0xf91a, "\x99\xf1\0" },
- { 0xf91b, "\x4e\x82\0" },
- { 0xf91c, "\x53\x75\0" },
- { 0xf91d, "\x6b\x04\0" },
- { 0xf91e, "\x72\x1b\0" },
- { 0xf91f, "\x86\x2d\0" },
- { 0xf920, "\x9e\x1e\0" },
- { 0xf921, "\x5d\x50\0" },
- { 0xf922, "\x6f\xeb\0" },
- { 0xf923, "\x85\xcd\0" },
- { 0xf924, "\x89\x64\0" },
- { 0xf925, "\x62\xc9\0" },
- { 0xf926, "\x81\xd8\0" },
- { 0xf927, "\x88\x1f\0" },
- { 0xf928, "\x5e\xca\0" },
- { 0xf929, "\x67\x17\0" },
- { 0xf92a, "\x6d\x6a\0" },
- { 0xf92b, "\x72\xfc\0" },
- { 0xf92c, "\x90\xce\0" },
- { 0xf92d, "\x4f\x86\0" },
- { 0xf92e, "\x51\xb7\0" },
- { 0xf92f, "\x52\xde\0" },
- { 0xf930, "\x64\xc4\0" },
- { 0xf931, "\x6a\xd3\0" },
- { 0xf932, "\x72\x10\0" },
- { 0xf933, "\x76\xe7\0" },
- { 0xf934, "\x80\x01\0" },
- { 0xf935, "\x86\x06\0" },
- { 0xf936, "\x86\x5c\0" },
- { 0xf937, "\x8d\xef\0" },
- { 0xf938, "\x97\x32\0" },
- { 0xf939, "\x9b\x6f\0" },
- { 0xf93a, "\x9d\xfa\0" },
- { 0xf93b, "\x78\x8c\0" },
- { 0xf93c, "\x79\x7f\0" },
- { 0xf93d, "\x7d\xa0\0" },
- { 0xf93e, "\x83\xc9\0" },
- { 0xf93f, "\x93\x04\0" },
- { 0xf940, "\x9e\x7f\0" },
- { 0xf941, "\x8a\xd6\0" },
- { 0xf942, "\x58\xdf\0" },
- { 0xf943, "\x5f\x04\0" },
- { 0xf944, "\x7c\x60\0" },
- { 0xf945, "\x80\x7e\0" },
- { 0xf946, "\x72\x62\0" },
- { 0xf947, "\x78\xca\0" },
- { 0xf948, "\x8c\xc2\0" },
- { 0xf949, "\x96\xf7\0" },
- { 0xf94a, "\x58\xd8\0" },
- { 0xf94b, "\x5c\x62\0" },
- { 0xf94c, "\x6a\x13\0" },
- { 0xf94d, "\x6d\xda\0" },
- { 0xf94e, "\x6f\x0f\0" },
- { 0xf94f, "\x7d\x2f\0" },
- { 0xf950, "\x7e\x37\0" },
- { 0xf951, "\x96\xfb\0" },
- { 0xf952, "\x52\xd2\0" },
- { 0xf953, "\x80\x8b\0" },
- { 0xf954, "\x51\xdc\0" },
- { 0xf955, "\x51\xcc\0" },
- { 0xf956, "\x7a\x1c\0" },
- { 0xf957, "\x7d\xbe\0" },
- { 0xf958, "\x83\xf1\0" },
- { 0xf959, "\x96\x75\0" },
- { 0xf95a, "\x8b\x80\0" },
- { 0xf95b, "\x62\xcf\0" },
- { 0xf95c, "\x6a\x02\0" },
- { 0xf95d, "\x8a\xfe\0" },
- { 0xf95e, "\x4e\x39\0" },
- { 0xf95f, "\x5b\xe7\0" },
- { 0xf960, "\x60\x12\0" },
- { 0xf961, "\x73\x87\0" },
- { 0xf962, "\x75\x70\0" },
- { 0xf963, "\x53\x17\0" },
- { 0xf964, "\x78\xfb\0" },
- { 0xf965, "\x4f\xbf\0" },
- { 0xf966, "\x5f\xa9\0" },
- { 0xf967, "\x4e\x0d\0" },
- { 0xf968, "\x6c\xcc\0" },
- { 0xf969, "\x65\x78\0" },
- { 0xf96a, "\x7d\x22\0" },
- { 0xf96b, "\x53\xc3\0" },
- { 0xf96c, "\x58\x5e\0" },
- { 0xf96d, "\x77\x01\0" },
- { 0xf96e, "\x84\x49\0" },
- { 0xf96f, "\x8a\xaa\0" },
- { 0xf970, "\x6b\xba\0" },
- { 0xf971, "\x8f\xb0\0" },
- { 0xf972, "\x6c\x88\0" },
- { 0xf973, "\x62\xfe\0" },
- { 0xf974, "\x82\xe5\0" },
- { 0xf975, "\x63\xa0\0" },
- { 0xf976, "\x75\x65\0" },
- { 0xf977, "\x4e\xae\0" },
- { 0xf978, "\x51\x69\0" },
- { 0xf979, "\x51\xc9\0" },
- { 0xf97a, "\x68\x81\0" },
- { 0xf97b, "\x7c\xe7\0" },
- { 0xf97c, "\x82\x6f\0" },
- { 0xf97d, "\x8a\xd2\0" },
- { 0xf97e, "\x91\xcf\0" },
- { 0xf97f, "\x52\xf5\0" },
- { 0xf980, "\x54\x42\0" },
- { 0xf981, "\x59\x73\0" },
- { 0xf982, "\x5e\xec\0" },
- { 0xf983, "\x65\xc5\0" },
- { 0xf984, "\x6f\xfe\0" },
- { 0xf985, "\x79\x2a\0" },
- { 0xf986, "\x95\xad\0" },
- { 0xf987, "\x9a\x6a\0" },
- { 0xf988, "\x9e\x97\0" },
- { 0xf989, "\x9e\xce\0" },
- { 0xf98a, "\x52\x9b\0" },
- { 0xf98b, "\x66\xc6\0" },
- { 0xf98c, "\x6b\x77\0" },
- { 0xf98d, "\x8f\x62\0" },
- { 0xf98e, "\x5e\x74\0" },
- { 0xf98f, "\x61\x90\0" },
- { 0xf990, "\x62\x00\0" },
- { 0xf991, "\x64\x9a\0" },
- { 0xf992, "\x6f\x23\0" },
- { 0xf993, "\x71\x49\0" },
- { 0xf994, "\x74\x89\0" },
- { 0xf995, "\x79\xca\0" },
- { 0xf996, "\x7d\xf4\0" },
- { 0xf997, "\x80\x6f\0" },
- { 0xf998, "\x8f\x26\0" },
- { 0xf999, "\x84\xee\0" },
- { 0xf99a, "\x90\x23\0" },
- { 0xf99b, "\x93\x4a\0" },
- { 0xf99c, "\x52\x17\0" },
- { 0xf99d, "\x52\xa3\0" },
- { 0xf99e, "\x54\xbd\0" },
- { 0xf99f, "\x70\xc8\0" },
- { 0xf9a0, "\x88\xc2\0" },
- { 0xf9a1, "\x8a\xaa\0" },
- { 0xf9a2, "\x5e\xc9\0" },
- { 0xf9a3, "\x5f\xf5\0" },
- { 0xf9a4, "\x63\x7b\0" },
- { 0xf9a5, "\x6b\xae\0" },
- { 0xf9a6, "\x7c\x3e\0" },
- { 0xf9a7, "\x73\x75\0" },
- { 0xf9a8, "\x4e\xe4\0" },
- { 0xf9a9, "\x56\xf9\0" },
- { 0xf9aa, "\x5b\xe7\0" },
- { 0xf9ab, "\x5d\xba\0" },
- { 0xf9ac, "\x60\x1c\0" },
- { 0xf9ad, "\x73\xb2\0" },
- { 0xf9ae, "\x74\x69\0" },
- { 0xf9af, "\x7f\x9a\0" },
- { 0xf9b0, "\x80\x46\0" },
- { 0xf9b1, "\x92\x34\0" },
- { 0xf9b2, "\x96\xf6\0" },
- { 0xf9b3, "\x97\x48\0" },
- { 0xf9b4, "\x98\x18\0" },
- { 0xf9b5, "\x4f\x8b\0" },
- { 0xf9b6, "\x79\xae\0" },
- { 0xf9b7, "\x91\xb4\0" },
- { 0xf9b8, "\x96\xb8\0" },
- { 0xf9b9, "\x60\xe1\0" },
- { 0xf9ba, "\x4e\x86\0" },
- { 0xf9bb, "\x50\xda\0" },
- { 0xf9bc, "\x5b\xee\0" },
- { 0xf9bd, "\x5c\x3f\0" },
- { 0xf9be, "\x65\x99\0" },
- { 0xf9bf, "\x6a\x02\0" },
- { 0xf9c0, "\x71\xce\0" },
- { 0xf9c1, "\x76\x42\0" },
- { 0xf9c2, "\x84\xfc\0" },
- { 0xf9c3, "\x90\x7c\0" },
- { 0xf9c4, "\x9f\x8d\0" },
- { 0xf9c5, "\x66\x88\0" },
- { 0xf9c6, "\x96\x2e\0" },
- { 0xf9c7, "\x52\x89\0" },
- { 0xf9c8, "\x67\x7b\0" },
- { 0xf9c9, "\x67\xf3\0" },
- { 0xf9ca, "\x6d\x41\0" },
- { 0xf9cb, "\x6e\x9c\0" },
- { 0xf9cc, "\x74\x09\0" },
- { 0xf9cd, "\x75\x59\0" },
- { 0xf9ce, "\x78\x6b\0" },
- { 0xf9cf, "\x7d\x10\0" },
- { 0xf9d0, "\x98\x5e\0" },
- { 0xf9d1, "\x51\x6d\0" },
- { 0xf9d2, "\x62\x2e\0" },
- { 0xf9d3, "\x96\x78\0" },
- { 0xf9d4, "\x50\x2b\0" },
- { 0xf9d5, "\x5d\x19\0" },
- { 0xf9d6, "\x6d\xea\0" },
- { 0xf9d7, "\x8f\x2a\0" },
- { 0xf9d8, "\x5f\x8b\0" },
- { 0xf9d9, "\x61\x44\0" },
- { 0xf9da, "\x68\x17\0" },
- { 0xf9db, "\x73\x87\0" },
- { 0xf9dc, "\x96\x86\0" },
- { 0xf9dd, "\x52\x29\0" },
- { 0xf9de, "\x54\x0f\0" },
- { 0xf9df, "\x5c\x65\0" },
- { 0xf9e0, "\x66\x13\0" },
- { 0xf9e1, "\x67\x4e\0" },
- { 0xf9e2, "\x68\xa8\0" },
- { 0xf9e3, "\x6c\xe5\0" },
- { 0xf9e4, "\x74\x06\0" },
- { 0xf9e5, "\x75\xe2\0" },
- { 0xf9e6, "\x7f\x79\0" },
- { 0xf9e7, "\x88\xcf\0" },
- { 0xf9e8, "\x88\xe1\0" },
- { 0xf9e9, "\x91\xcc\0" },
- { 0xf9ea, "\x96\xe2\0" },
- { 0xf9eb, "\x53\x3f\0" },
- { 0xf9ec, "\x6e\xba\0" },
- { 0xf9ed, "\x54\x1d\0" },
- { 0xf9ee, "\x71\xd0\0" },
- { 0xf9ef, "\x74\x98\0" },
- { 0xf9f0, "\x85\xfa\0" },
- { 0xf9f1, "\x96\xa3\0" },
- { 0xf9f2, "\x9c\x57\0" },
- { 0xf9f3, "\x9e\x9f\0" },
- { 0xf9f4, "\x67\x97\0" },
- { 0xf9f5, "\x6d\xcb\0" },
- { 0xf9f6, "\x81\xe8\0" },
- { 0xf9f7, "\x7a\xcb\0" },
- { 0xf9f8, "\x7b\x20\0" },
- { 0xf9f9, "\x7c\x92\0" },
- { 0xf9fa, "\x72\xc0\0" },
- { 0xf9fb, "\x70\x99\0" },
- { 0xf9fc, "\x8b\x58\0" },
- { 0xf9fd, "\x4e\xc0\0" },
- { 0xf9fe, "\x83\x36\0" },
- { 0xf9ff, "\x52\x3a\0" },
- { 0xfa00, "\x52\x07\0" },
- { 0xfa01, "\x5e\xa6\0" },
- { 0xfa02, "\x62\xd3\0" },
- { 0xfa03, "\x7c\xd6\0" },
- { 0xfa04, "\x5b\x85\0" },
- { 0xfa05, "\x6d\x1e\0" },
- { 0xfa06, "\x66\xb4\0" },
- { 0xfa07, "\x8f\x3b\0" },
- { 0xfa08, "\x88\x4c\0" },
- { 0xfa09, "\x96\x4d\0" },
- { 0xfa0a, "\x89\x8b\0" },
- { 0xfa0b, "\x5e\xd3\0" },
- { 0xfa0c, "\x51\x40\0" },
- { 0xfa0d, "\x55\xc0\0" },
- { 0xfa10, "\x58\x5a\0" },
- { 0xfa12, "\x66\x74\0" },
- { 0xfa15, "\x51\xde\0" },
- { 0xfa16, "\x73\x2a\0" },
- { 0xfa17, "\x76\xca\0" },
- { 0xfa18, "\x79\x3c\0" },
- { 0xfa19, "\x79\x5e\0" },
- { 0xfa1a, "\x79\x65\0" },
- { 0xfa1b, "\x79\x8f\0" },
- { 0xfa1c, "\x97\x56\0" },
- { 0xfa1d, "\x7c\xbe\0" },
- { 0xfa1e, "\x7f\xbd\0" },
- { 0xfa20, "\x86\x12\0" },
- { 0xfa22, "\x8a\xf8\0" },
- { 0xfa25, "\x90\x38\0" },
- { 0xfa26, "\x90\xfd\0" },
- { 0xfa2a, "\x98\xef\0" },
- { 0xfa2b, "\x98\xfc\0" },
- { 0xfa2c, "\x99\x28\0" },
- { 0xfa2d, "\x9d\xb4\0" },
- { 0xfb1f, "\x05\xf2\x05\xb7\0" },
- { 0xfb2a, "\x05\xe9\x05\xc1\0" },
- { 0xfb2b, "\x05\xe9\x05\xc2\0" },
- { 0xfb2c, "\x05\xe9\x05\xbc\x05\xc1\0" },
- { 0xfb2d, "\x05\xe9\x05\xbc\x05\xc2\0" },
- { 0xfb2e, "\x05\xd0\x05\xb7\0" },
- { 0xfb2f, "\x05\xd0\x05\xb8\0" },
- { 0xfb30, "\x05\xd0\x05\xbc\0" },
- { 0xfb31, "\x05\xd1\x05\xbc\0" },
- { 0xfb32, "\x05\xd2\x05\xbc\0" },
- { 0xfb33, "\x05\xd3\x05\xbc\0" },
- { 0xfb34, "\x05\xd4\x05\xbc\0" },
- { 0xfb35, "\x05\xd5\x05\xbc\0" },
- { 0xfb36, "\x05\xd6\x05\xbc\0" },
- { 0xfb38, "\x05\xd8\x05\xbc\0" },
- { 0xfb39, "\x05\xd9\x05\xbc\0" },
- { 0xfb3a, "\x05\xda\x05\xbc\0" },
- { 0xfb3b, "\x05\xdb\x05\xbc\0" },
- { 0xfb3c, "\x05\xdc\x05\xbc\0" },
- { 0xfb3e, "\x05\xde\x05\xbc\0" },
- { 0xfb40, "\x05\xe0\x05\xbc\0" },
- { 0xfb41, "\x05\xe1\x05\xbc\0" },
- { 0xfb43, "\x05\xe3\x05\xbc\0" },
- { 0xfb44, "\x05\xe4\x05\xbc\0" },
- { 0xfb46, "\x05\xe6\x05\xbc\0" },
- { 0xfb47, "\x05\xe7\x05\xbc\0" },
- { 0xfb48, "\x05\xe8\x05\xbc\0" },
- { 0xfb49, "\x05\xe9\x05\xbc\0" },
- { 0xfb4a, "\x05\xea\x05\xbc\0" },
- { 0xfb4b, "\x05\xd5\x05\xb9\0" },
- { 0xfb4c, "\x05\xd1\x05\xbf\0" },
- { 0xfb4d, "\x05\xdb\x05\xbf\0" },
- { 0xfb4e, "\x05\xe4\x05\xbf\0" }
-};
-
-/*
- * WARNING!
- *
- * NO BUFFER CHECKING AHEAD!
- *
- */
-
-static gint
-e_canonical_decomposition (gunichar ch, gunichar * buf)
-{
- gint len = 0;
-
- if (ch <= 0xffff)
- {
- int start = 0;
- int end = sizeof (e_decomp_table) / sizeof (e_decomp_table[0]);
- while (start != end)
- {
- int half = (start + end) / 2;
- if (ch == e_decomp_table[half].ch) {
- /* Found it. */
- int i;
- /* We store as a double-nul terminated string. */
- for (len = 0; (e_decomp_table[half].expansion[len] || e_decomp_table[half].expansion[len + 1]); len += 2) ;
-
- /* We've counted twice as many bytes as there are
- characters. */
- len /= 2;
-
- for (i = 0; i < len; i ++) {
- buf[i] = (e_decomp_table[half].expansion[2 * i] << 8) | e_decomp_table[half].expansion[2 * i + 1];
- }
- break;
- } else if (ch > e_decomp_table[half].ch) {
- if (start == half) break;
- start = half;
- } else {
- if (end == half) break;
- end = half;
- }
- }
- }
-
- if (len == 0)
- {
- /* Not in our table. */
- *buf = ch;
- len = 1;
- }
-
- /* Supposedly following the Unicode 2.1.9 table means that the
- decompositions come out in canonical order. I haven't tested
- this, but we rely on it here. */
- return len;
-}
-
-static gunichar
-e_stripped_char (gunichar ch)
-{
- gunichar decomp[MAX_DECOMP];
- GUnicodeType utype;
- gint dlen;
-
- utype = g_unichar_type (ch);
-
- switch (utype) {
- case G_UNICODE_CONTROL:
- case G_UNICODE_FORMAT:
- case G_UNICODE_UNASSIGNED:
- case G_UNICODE_COMBINING_MARK:
- /* Ignore those */
- return 0;
- break;
- default:
- /* Convert to lowercase, fall through */
- ch = g_unichar_tolower (ch);
- case G_UNICODE_LOWERCASE_LETTER:
- dlen = e_canonical_decomposition (ch, decomp);
- if (dlen > 0) return *decomp;
- break;
- }
-
- return 0;
-}
-
-gchar *
-e_xml_get_translated_utf8_string_prop_by_name (const xmlNode *parent, const xmlChar *prop_name)
-{
- xmlChar *prop;
- gchar *ret_val = NULL;
- gchar *combined_name;
-
- g_return_val_if_fail (parent != NULL, 0);
- g_return_val_if_fail (prop_name != NULL, 0);
-
- prop = xmlGetProp ((xmlNode *) parent, prop_name);
- if (prop != NULL) {
- ret_val = g_strdup (prop);
- xmlFree (prop);
- return ret_val;
- }
-
- combined_name = g_strdup_printf("_%s", prop_name);
- prop = xmlGetProp ((xmlNode *) parent, combined_name);
- if (prop != NULL) {
- ret_val = e_utf8_from_locale_string (gettext (prop));
- xmlFree (prop);
- }
- g_free(combined_name);
-
- return ret_val;
-}
diff --git a/widgets/misc/e-unicode.h b/widgets/misc/e-unicode.h
deleted file mode 100644
index 019505948f..0000000000
--- a/widgets/misc/e-unicode.h
+++ /dev/null
@@ -1,86 +0,0 @@
-#ifndef _E_UNICODE_H_
-#define _E_UNICODE_H_
-
-/*
- * UTF-8 support functions for gal
- *
- * Authors:
- * Lauris Kaplinski <lauris@helixcode.com>
- *
- * Copyright (C) 2000-2001 Helix Code, Inc.
- *
- */
-
-#include <sys/types.h>
-#include <glib.h>
-#include <gtk/gtkclist.h>
-#include <gtk/gtkentry.h>
-#include <gtk/gtkmenu.h>
-#include <gtk/gtkwidget.h>
-#include <libgnome/gnome-defs.h>
-#include <gnome-xml/tree.h>
-#include <gal/unicode/gunicode.h>
-
-BEGIN_GNOME_DECLS
-
-#define G_UTF8_IN_GAL
-
-/*
- * UTF-8 searching implementations
- *
- * e_utf8_strstrcase - case insensitive search
- * e_utf8_strstrcasedecomp - case insensitive and decompositing search (i.e. accented
- * letters are treated equal to their base letters, explicit accent marks (unicode
- * not ascii/iso ones) are ignored).
- */
-
-const gchar *e_utf8_strstrcase (const gchar *haystack, const gchar *needle);
-const gchar *e_utf8_strstrcasedecomp (const gchar *haystack, const gchar *needle);
-
-gchar *e_utf8_from_gtk_event_key (GtkWidget *widget, guint keyval, const gchar *string);
-
-gchar *e_utf8_from_gtk_string (GtkWidget *widget, const gchar *string);
-gchar *e_utf8_from_gtk_string_sized (GtkWidget *widget, const gchar *string, gint bytes);
-
-gchar *e_utf8_to_gtk_string (GtkWidget *widget, const gchar *string);
-gchar *e_utf8_to_gtk_string_sized (GtkWidget *widget, const gchar *string, gint bytes);
-
-gchar *e_utf8_from_locale_string (const gchar *string);
-gchar *e_utf8_from_locale_string_sized (const gchar *string, gint bytes);
-
-gchar *e_utf8_to_locale_string (const gchar *string);
-gchar *e_utf8_to_locale_string_sized (const gchar *string, gint bytes);
-/*
- * These are simple wrappers that save us some typing
- */
-
-/* NB! This return newly allocated string, not const as gtk+ one */
-
-gchar *e_utf8_gtk_entry_get_text (GtkEntry *entry);
-void e_utf8_gtk_entry_set_text (GtkEntry *entry, const gchar *text);
-
-gchar *e_utf8_gtk_editable_get_text (GtkEditable *editable);
-void e_utf8_gtk_editable_set_text (GtkEditable *editable, const gchar *text);
-gchar *e_utf8_gtk_editable_get_chars (GtkEditable *editable, gint start, gint end);
-void e_utf8_gtk_editable_insert_text (GtkEditable *editable, const gchar *text, gint length, gint *position);
-
-GtkWidget *e_utf8_gtk_menu_item_new_with_label (GtkMenu *menu, const gchar *label);
-
-void e_utf8_gtk_clist_set_text (GtkCList *clist, gint row, gint col, const gchar *text);
-gint e_utf8_gtk_clist_append (GtkCList *clist, gchar *text[]);
-
-gchar * e_utf8_xml1_decode (const gchar *text);
-gchar * e_utf8_xml1_encode (const gchar *text);
-
-gint e_unichar_to_utf8 (gint c, gchar *outbuf);
-gchar *e_unicode_get_utf8 (const gchar *text, gunichar *out);
-guint32 gdk_keyval_to_unicode (guint keysym);
-
-gchar *e_xml_get_translated_utf8_string_prop_by_name (const xmlNode *parent,
- const xmlChar *prop_name);
-
-END_GNOME_DECLS
-
-#endif
-
-
diff --git a/widgets/misc/gal-categories.glade b/widgets/misc/gal-categories.glade
deleted file mode 100644
index 42141d466d..0000000000
--- a/widgets/misc/gal-categories.glade
+++ /dev/null
@@ -1,197 +0,0 @@
-<?xml version="1.0"?>
-<GTK-Interface>
-
-<project>
- <name>categories</name>
- <program_name>categories</program_name>
- <directory></directory>
- <source_directory>src</source_directory>
- <pixmaps_directory>pixmaps</pixmaps_directory>
- <language>C</language>
- <gnome_support>True</gnome_support>
- <gettext_support>False</gettext_support>
- <output_main_file>False</output_main_file>
- <output_support_files>False</output_support_files>
- <output_build_files>False</output_build_files>
- <backup_source_files>False</backup_source_files>
- <output_translatable_strings>True</output_translatable_strings>
- <translatable_strings_file>gal-categories.glade.h</translatable_strings_file>
-</project>
-
-<widget>
- <class>GnomeDialog</class>
- <name>categories</name>
- <visible>False</visible>
- <title>categories</title>
- <type>GTK_WINDOW_TOPLEVEL</type>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>True</allow_grow>
- <auto_shrink>False</auto_shrink>
- <auto_close>False</auto_close>
- <hide_on_close>False</hide_on_close>
-
- <widget>
- <class>GtkVBox</class>
- <child_name>GnomeDialog:vbox</child_name>
- <name>dialog-vbox1</name>
- <homogeneous>False</homogeneous>
- <spacing>8</spacing>
- <child>
- <padding>4</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHButtonBox</class>
- <child_name>GnomeDialog:action_area</child_name>
- <name>dialog-action_area1</name>
- <layout_style>GTK_BUTTONBOX_END</layout_style>
- <spacing>8</spacing>
- <child_min_width>85</child_min_width>
- <child_min_height>27</child_min_height>
- <child_ipad_x>7</child_ipad_x>
- <child_ipad_y>0</child_ipad_y>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- <pack>GTK_PACK_END</pack>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>button3</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button4</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
- </widget>
- </widget>
-
- <widget>
- <class>GtkTable</class>
- <name>table-categories</name>
- <rows>5</rows>
- <columns>1</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>0</row_spacing>
- <column_spacing>0</column_spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkEntry</class>
- <name>entry-categories</name>
- <can_focus>True</can_focus>
- <editable>True</editable>
- <text_visible>True</text_visible>
- <text_max_length>0</text_max_length>
- <text></text>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label-header</name>
- <label>Item(s) belong to these _categories:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <focus_target>entry-categories</focus_target>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label2</name>
- <label>_Available Categories:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>2</top_attach>
- <bottom_attach>3</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button-ecmld</name>
- <can_focus>True</can_focus>
- <label>Edit Master Category List...</label>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>4</top_attach>
- <bottom_attach>5</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
- </widget>
- </widget>
- </widget>
-</widget>
-
-</GTK-Interface>
diff --git a/widgets/misc/pixmaps/.cvsignore b/widgets/misc/pixmaps/.cvsignore
deleted file mode 100644
index 3dda72986f..0000000000
--- a/widgets/misc/pixmaps/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile.in
-Makefile
diff --git a/widgets/misc/pixmaps/cursor_cross.xpm b/widgets/misc/pixmaps/cursor_cross.xpm
deleted file mode 100644
index cf9d0aca33..0000000000
--- a/widgets/misc/pixmaps/cursor_cross.xpm
+++ /dev/null
@@ -1,38 +0,0 @@
-/* XPM */
-static char * cursor_cross_xpm[] = {
-"32 32 3 1",
-" c None",
-". c #000000",
-"+ c #FFFFFF",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ....... ",
-" .+++++.. ",
-" .+++++.. ",
-" .+++++.. ",
-" .+++++.. ",
-" ......+++++...... ",
-" .+++++++++++++++.. ",
-" .+++++++++++++++.. ",
-" .+++++++++++++++.. ",
-" .+++++++++++++++.. ",
-" .+++++++++++++++.. ",
-" ......+++++....... ",
-" .....+++++....... ",
-" .+++++.. ",
-" .+++++.. ",
-" .+++++.. ",
-" ........ ",
-" ....... ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" "};
diff --git a/widgets/misc/pixmaps/cursor_hand_closed.xpm b/widgets/misc/pixmaps/cursor_hand_closed.xpm
deleted file mode 100644
index 61a6de4b88..0000000000
--- a/widgets/misc/pixmaps/cursor_hand_closed.xpm
+++ /dev/null
@@ -1,38 +0,0 @@
-/* XPM */
-static char * cursor_hand_closed_xpm[] = {
-"32 32 3 1",
-" c None",
-". c #000000",
-"+ c #FFFFFF",
-" ",
-" ",
-" ",
-" ",
-" ",
-" .. ",
-" ..++... ",
-" .+++++++.. ",
-" .+++++++++. ",
-" ...+++++++++. ",
-" .++.+++++++++. ",
-" .++++++++++++. ",
-" .+++++++++++. ",
-" .++++++++++. ",
-" .+++++++++. ",
-" .+++++++. ",
-" .++++++. ",
-" .++++++. ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" "};
diff --git a/widgets/misc/pixmaps/cursor_hand_open.xpm b/widgets/misc/pixmaps/cursor_hand_open.xpm
deleted file mode 100644
index 048acc8054..0000000000
--- a/widgets/misc/pixmaps/cursor_hand_open.xpm
+++ /dev/null
@@ -1,38 +0,0 @@
-/* XPM */
-static char * cursor_hand_open_xpm[] = {
-"32 32 3 1",
-" c None",
-". c #000000",
-"+ c #FFFFFF",
-" ",
-" ",
-" .. ",
-" .. .++... ",
-" .++..++.++. ",
-" .++..++.++. . ",
-" .++.++.++..+. ",
-" .++.++.++.++. ",
-" .. .+++++++.++. ",
-" .++..++++++++++. ",
-" .+++.+++++++++. ",
-" .++++++++++++. ",
-" .+++++++++++. ",
-" .++++++++++. ",
-" .+++++++++. ",
-" .+++++++. ",
-" .++++++. ",
-" .++++++. ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" "};
diff --git a/widgets/misc/pixmaps/cursor_zoom_in.xpm b/widgets/misc/pixmaps/cursor_zoom_in.xpm
deleted file mode 100644
index 1caf9e3e2a..0000000000
--- a/widgets/misc/pixmaps/cursor_zoom_in.xpm
+++ /dev/null
@@ -1,37 +0,0 @@
-/* XPM */
-static char * cursor_zoom_in_xpm[] = {
-"32 32 2 1",
-" c None",
-". c #000000",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ...... ",
-" .. .. ",
-" .. .. ",
-" . . ",
-" . ... . ",
-" . ... . ",
-" . ....... . ",
-" . ....... . ",
-" . ... . ",
-" . ... .. ",
-" .. . . ",
-" .. . . . ",
-" ........ . . ",
-" ..... . . . ",
-" . . . ",
-" . . . ",
-" . . . ",
-" . . . ",
-" . . ",
-" . . ",
-" .. ",
-" ",
-" ",
-" ",
-" ",
-" "};
diff --git a/widgets/misc/pixmaps/cursor_zoom_out.xpm b/widgets/misc/pixmaps/cursor_zoom_out.xpm
deleted file mode 100644
index af1b698521..0000000000
--- a/widgets/misc/pixmaps/cursor_zoom_out.xpm
+++ /dev/null
@@ -1,37 +0,0 @@
-/* XPM */
-static char * cursor_zoom_out_xpm[] = {
-"32 32 2 1",
-" c None",
-". c #000000",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ...... ",
-" .. .. ",
-" .. .. ",
-" . . ",
-" . . ",
-" . . ",
-" . ....... . ",
-" . ....... . ",
-" . . ",
-" . .. ",
-" .. . . ",
-" .. . . . ",
-" ........ . . ",
-" ..... . . . ",
-" . . . ",
-" . . . ",
-" . . . ",
-" . . . ",
-" . . ",
-" . . ",
-" .. ",
-" ",
-" ",
-" ",
-" ",
-" "};
diff --git a/widgets/misc/test-calendar.c b/widgets/misc/test-calendar.c
deleted file mode 100644
index 735633424f..0000000000
--- a/widgets/misc/test-calendar.c
+++ /dev/null
@@ -1,220 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@helixcode.com>
- *
- * Copyright 2000, Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * test-calendar - tests the ECalendar widget.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gtk/gtkdnd.h>
-#include <gtk/gtkmain.h>
-#include <gtk/gtkvbox.h>
-#include <libgnomeui/gnome-app.h>
-#include <libgnomeui/gnome-init.h>
-#include "e-calendar.h"
-
-/* Drag and Drop stuff. */
-enum {
- TARGET_SHORTCUT
-};
-static GtkTargetEntry target_table[] = {
- { "E-SHORTCUT", 0, TARGET_SHORTCUT }
-};
-static guint n_targets = sizeof(target_table) / sizeof(target_table[0]);
-
-
-static void on_date_range_changed (ECalendarItem *calitem);
-static void on_selection_changed (ECalendarItem *calitem);
-static void get_day_style (ECalendarItem *calitem,
- gint year,
- gint month,
- gint day,
- gint day_style,
- gboolean today,
- gboolean prev_or_next_month,
- gboolean selected,
- gboolean has_focus,
- gboolean drop_target,
- GdkColor **bg_color,
- GdkColor **fg_color,
- GdkColor **box_color,
- gboolean *bold,
- gpointer data);
-
-static void
-delete_event_cb (GtkWidget *widget,
- GdkEventAny *event,
- gpointer data)
-{
- gtk_main_quit ();
-}
-
-int
-main (int argc, char **argv)
-{
- GtkWidget *app;
- GtkWidget *cal;
- GtkWidget *vbox;
- ECalendarItem *calitem;
-
- gnome_init ("test-calendar", "0.0", argc, argv);
-
- app = gnome_app_new ("Test", "Test");
- gtk_window_set_default_size (GTK_WINDOW (app), 400, 400);
- gtk_window_set_policy (GTK_WINDOW (app), FALSE, TRUE, FALSE);
- gtk_container_set_border_width (GTK_CONTAINER (app), 8);
-
- gtk_signal_connect (GTK_OBJECT (app), "delete_event",
- GTK_SIGNAL_FUNC (delete_event_cb), NULL);
-
- cal = e_calendar_new ();
- e_calendar_set_minimum_size (E_CALENDAR (cal), 1, 1);
- calitem = E_CALENDAR (cal)->calitem;
- gtk_widget_show (cal);
- e_calendar_item_set_style_callback (calitem, get_day_style,
- NULL, NULL);
-
- gtk_signal_connect (GTK_OBJECT (calitem), "date_range_changed",
- GTK_SIGNAL_FUNC (on_date_range_changed), NULL);
- gtk_signal_connect (GTK_OBJECT (calitem), "selection_changed",
- GTK_SIGNAL_FUNC (on_selection_changed), NULL);
-
-
- gtk_drag_dest_set (cal,
- GTK_DEST_DEFAULT_ALL,
- target_table, n_targets,
- GDK_ACTION_COPY | GDK_ACTION_MOVE);
-
-
- vbox = gtk_vbox_new (FALSE, 0);
- gtk_box_pack_start (GTK_BOX (vbox), cal, TRUE, TRUE, 0);
- gtk_widget_show (vbox);
-
- gnome_app_set_contents (GNOME_APP (app), vbox);
- gtk_widget_show (app);
-
- gtk_main ();
-
- return 0;
-}
-
-
-static void
-on_date_range_changed (ECalendarItem *calitem)
-{
- gint start_year, start_month, start_day;
- gint end_year, end_month, end_day;
-
- e_calendar_item_get_date_range (calitem,
- &start_year, &start_month, &start_day,
- &end_year, &end_month, &end_day);
-
- g_print ("Date range changed (D/M/Y): %i/%i/%i - %i/%i/%i\n",
- start_day, start_month + 1, start_year,
- end_day, end_month + 1, end_year);
-
- /* These days should appear bold. Remember month is 0 to 11. */
- e_calendar_item_mark_day (calitem, 2000, 7, 26, /* 26th Aug 2000. */
- E_CALENDAR_ITEM_MARK_BOLD);
- e_calendar_item_mark_day (calitem, 2000, 8, 13, /* 13th Sep 2000. */
- E_CALENDAR_ITEM_MARK_BOLD);
-}
-
-
-static void
-on_selection_changed (ECalendarItem *calitem)
-{
- GDate start_date, end_date;
-
- e_calendar_item_get_selection (calitem, &start_date, &end_date);
-
- g_print ("Selection changed (D/M/Y): %i/%i/%i - %i/%i/%i\n",
- g_date_day (&start_date),
- g_date_month (&start_date),
- g_date_year (&start_date),
- g_date_day (&end_date),
- g_date_month (&end_date),
- g_date_year (&end_date));
-}
-
-
-static void
-get_day_style (ECalendarItem *calitem,
- gint year,
- gint month,
- gint day,
- gint day_style,
- gboolean today,
- gboolean prev_or_next_month,
- gboolean selected,
- gboolean has_focus,
- gboolean drop_target,
- GdkColor **bg_color,
- GdkColor **fg_color,
- GdkColor **box_color,
- gboolean *bold,
- gpointer data)
-{
- *bg_color = NULL;
- *fg_color = NULL;
- *box_color = NULL;
- *bold = FALSE;
-
-#if 1
-
- if (day_style == 1)
- *bold = TRUE;
-
- if (today)
- *box_color = &calitem->colors[E_CALENDAR_ITEM_COLOR_TODAY_BOX];
-
- if (prev_or_next_month)
- *fg_color = &calitem->colors[E_CALENDAR_ITEM_COLOR_PREV_OR_NEXT_MONTH_FG];
-
- if (selected) {
- *fg_color = &calitem->colors[E_CALENDAR_ITEM_COLOR_SELECTION_FG];
- *bg_color = &calitem->colors[E_CALENDAR_ITEM_COLOR_SELECTION_BG];
- }
-
-#else
-
- if (day_style == 1)
- *bold = TRUE;
-
- if (today)
- *box_color = &calitem->colors[E_CALENDAR_ITEM_COLOR_PREV_OR_NEXT_MONTH_FG];
-
- if (prev_or_next_month)
- *fg_color = &calitem->colors[E_CALENDAR_ITEM_COLOR_TODAY_BOX];
-
- if (selected) {
- *fg_color = &calitem->colors[E_CALENDAR_ITEM_COLOR_SELECTION_FG];
- *bg_color = &calitem->colors[E_CALENDAR_ITEM_COLOR_PREV_OR_NEXT_MONTH_FG];
- }
-
-#endif
-}
diff --git a/widgets/misc/test-color.c b/widgets/misc/test-color.c
deleted file mode 100644
index 2e6df9cb17..0000000000
--- a/widgets/misc/test-color.c
+++ /dev/null
@@ -1,47 +0,0 @@
-#include <gnome.h>
-#include "widget-color-combo.h"
-#include "color-palette.h"
-#include "e-colors.h"
-#include "pixmaps/cursor_hand_open.xpm"
-
-/* To compile (from src/widgets):
-
-gcc -I.. -I../.. -L. -Wall -o tester tester.c ../color.c `gnome-config --cflags --libs gnome gnomeui` -lwidgets
-
-*/
-
-gint
-main ( gint argc, gchar* argv[] )
-{
- GtkWidget * dialog;
- GtkWidget * T;
- ColorGroup *cg;
-
- gnome_init ("tester", "1.0", argc, argv);
-
- dialog = gnome_dialog_new ("TESTER", GNOME_STOCK_BUTTON_OK,
- GNOME_STOCK_BUTTON_CANCEL, NULL);
- cg = color_group_fetch ("fore_color_group", dialog);
- T = color_palette_new ("Color Palette", NULL, cg);
-
- gtk_box_pack_start(GTK_BOX (GNOME_DIALOG (dialog)-> vbox ),
- T, TRUE, TRUE, 5);
- gtk_widget_show_all (T);
-
- cg = color_group_fetch ("fore_color_group", dialog);
- T = color_combo_new (cursor_hand_open_xpm, _("Automatic"),
- &e_black, cg);
- gtk_box_pack_start(GTK_BOX (GNOME_DIALOG (dialog)-> vbox ),
- T, TRUE, TRUE, 5);
- gtk_widget_show_all (T);
-
- cg = color_group_fetch ("back_color_group", dialog);
- T = color_combo_new (cursor_hand_open_xpm, _("Automatic"),
- &e_black, cg);
- gtk_box_pack_start(GTK_BOX (GNOME_DIALOG (dialog)-> vbox ),
- T, TRUE, TRUE, 5);
- gtk_widget_show_all (T);
-
- gnome_dialog_run_and_close ( GNOME_DIALOG (dialog) );
- return 0;
-}
diff --git a/widgets/misc/test-dateedit.c b/widgets/misc/test-dateedit.c
deleted file mode 100644
index 74b10b8c8b..0000000000
--- a/widgets/misc/test-dateedit.c
+++ /dev/null
@@ -1,284 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@helixcode.com>
- *
- * Copyright 2000, Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * test-dateedit - tests the EDateEdit widget.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <glib.h>
-#include <gtk/gtkbutton.h>
-#include <gtk/gtkmain.h>
-#include <gtk/gtktable.h>
-#include <gtk/gtkwindow.h>
-#include <libgnomeui/gnome-app.h>
-#include <libgnomeui/gnome-init.h>
-#include "e-dateedit.h"
-
-static void delete_event_cb (GtkWidget *widget,
- GdkEventAny *event,
- GtkWidget *app);
-static void on_get_date_clicked (GtkWidget *button,
- EDateEdit *dedit);
-static void on_toggle_24_hour_clicked (GtkWidget *button,
- EDateEdit *dedit);
-static void on_changed (EDateEdit *dedit,
- gchar *name);
-#if 0
-static void on_date_changed (EDateEdit *dedit,
- gchar *name);
-static void on_time_changed (EDateEdit *dedit,
- gchar *name);
-#endif
-
-int
-main (int argc, char **argv)
-{
- GtkWidget *app;
- EDateEdit *dedit;
- GtkWidget *table, *button;
-
- gnome_init ("test-dateedit", "0.0", argc, argv);
-
- app = gnome_app_new ("Test", "Test");
- gtk_window_set_default_size (GTK_WINDOW (app), 300, 200);
- gtk_window_set_policy (GTK_WINDOW (app), FALSE, TRUE, TRUE);
- gtk_container_set_border_width (GTK_CONTAINER (app), 8);
-
- gtk_signal_connect (GTK_OBJECT (app), "delete_event",
- GTK_SIGNAL_FUNC (delete_event_cb), app);
-
- table = gtk_table_new (3, 3, FALSE);
- gtk_table_set_row_spacings (GTK_TABLE (table), 4);
- gtk_table_set_col_spacings (GTK_TABLE (table), 4);
- gtk_widget_show (table);
- gnome_app_set_contents (GNOME_APP (app), table);
-
- /* EDateEdit 1. */
- dedit = E_DATE_EDIT (e_date_edit_new ());
- gtk_table_attach (GTK_TABLE (table), (GtkWidget*) dedit,
- 0, 1, 0, 1, GTK_FILL, GTK_EXPAND, 0, 0);
- gtk_widget_show ((GtkWidget*) (dedit));
-
-#if 0
- gtk_signal_connect (GTK_OBJECT (dedit), "date_changed",
- GTK_SIGNAL_FUNC (on_date_changed), "1");
- gtk_signal_connect (GTK_OBJECT (dedit), "time_changed",
- GTK_SIGNAL_FUNC (on_time_changed), "1");
-#else
- gtk_signal_connect (GTK_OBJECT (dedit), "changed",
- GTK_SIGNAL_FUNC (on_changed), "1");
-#endif
-
- button = gtk_button_new_with_label ("Print Date");
- gtk_table_attach (GTK_TABLE (table), button,
- 1, 2, 0, 1, 0, 0, 0, 0);
- gtk_widget_show (button);
- gtk_signal_connect (GTK_OBJECT (button), "clicked",
- GTK_SIGNAL_FUNC (on_get_date_clicked), dedit);
-
- /* EDateEdit 2. */
- dedit = E_DATE_EDIT (e_date_edit_new ());
- gtk_table_attach (GTK_TABLE (table), (GtkWidget*) dedit,
- 0, 1, 1, 2, GTK_FILL, GTK_EXPAND, 0, 0);
- gtk_widget_show ((GtkWidget*) (dedit));
- e_date_edit_set_week_start_day (dedit, 1);
- e_date_edit_set_show_week_numbers (dedit, TRUE);
- e_date_edit_set_use_24_hour_format (dedit, FALSE);
- e_date_edit_set_time_popup_range (dedit, 8, 18);
- e_date_edit_set_show_time (dedit, FALSE);
-
-#if 0
- gtk_signal_connect (GTK_OBJECT (dedit), "date_changed",
- GTK_SIGNAL_FUNC (on_date_changed), "2");
- gtk_signal_connect (GTK_OBJECT (dedit), "time_changed",
- GTK_SIGNAL_FUNC (on_time_changed), "2");
-#else
- gtk_signal_connect (GTK_OBJECT (dedit), "changed",
- GTK_SIGNAL_FUNC (on_changed), "2");
-#endif
-
- button = gtk_button_new_with_label ("Print Date");
- gtk_table_attach (GTK_TABLE (table), button,
- 1, 2, 1, 2, 0, 0, 0, 0);
- gtk_widget_show (button);
- gtk_signal_connect (GTK_OBJECT (button), "clicked",
- GTK_SIGNAL_FUNC (on_get_date_clicked), dedit);
-
- /* EDateEdit 3. */
- dedit = E_DATE_EDIT (e_date_edit_new ());
- gtk_table_attach (GTK_TABLE (table), (GtkWidget*) dedit,
- 0, 1, 2, 3, GTK_FILL, GTK_EXPAND, 0, 0);
- gtk_widget_show ((GtkWidget*) (dedit));
- e_date_edit_set_week_start_day (dedit, 1);
- e_date_edit_set_show_week_numbers (dedit, TRUE);
- e_date_edit_set_use_24_hour_format (dedit, FALSE);
- e_date_edit_set_time_popup_range (dedit, 8, 18);
- e_date_edit_set_allow_no_date_set (dedit, TRUE);
-
-#if 0
- gtk_signal_connect (GTK_OBJECT (dedit), "date_changed",
- GTK_SIGNAL_FUNC (on_date_changed), "3");
- gtk_signal_connect (GTK_OBJECT (dedit), "time_changed",
- GTK_SIGNAL_FUNC (on_time_changed), "3");
-#else
- gtk_signal_connect (GTK_OBJECT (dedit), "changed",
- GTK_SIGNAL_FUNC (on_changed), "3");
-#endif
-
- button = gtk_button_new_with_label ("Print Date");
- gtk_table_attach (GTK_TABLE (table), button,
- 1, 2, 2, 3, 0, 0, 0, 0);
- gtk_widget_show (button);
- gtk_signal_connect (GTK_OBJECT (button), "clicked",
- GTK_SIGNAL_FUNC (on_get_date_clicked), dedit);
-
- button = gtk_button_new_with_label ("Toggle 24-hour");
- gtk_table_attach (GTK_TABLE (table), button,
- 2, 3, 2, 3, 0, 0, 0, 0);
- gtk_widget_show (button);
- gtk_signal_connect (GTK_OBJECT (button), "clicked",
- GTK_SIGNAL_FUNC (on_toggle_24_hour_clicked),
- dedit);
-
- gtk_widget_show (app);
-
- gtk_main ();
-
- return 0;
-}
-
-
-static void
-delete_event_cb (GtkWidget *widget,
- GdkEventAny *event,
- GtkWidget *app)
-{
- gtk_widget_destroy (app);
-
- gtk_main_quit ();
-}
-
-
-static void
-on_get_date_clicked (GtkWidget *button,
- EDateEdit *dedit)
-{
- time_t t;
-
- t = e_date_edit_get_time (dedit);
- if (t == -1)
- g_print ("Time: None\n");
- else
- g_print ("Time: %s", ctime (&t));
-
- if (!e_date_edit_date_is_valid (dedit))
- g_print (" Date invalid\n");
-
- if (!e_date_edit_time_is_valid (dedit))
- g_print (" Time invalid\n");
-}
-
-
-static void
-on_toggle_24_hour_clicked (GtkWidget *button,
- EDateEdit *dedit)
-{
- e_date_edit_set_use_24_hour_format (dedit, !e_date_edit_get_use_24_hour_format (dedit));
-}
-
-
-#if 0
-static void
-on_date_changed (EDateEdit *dedit,
- gchar *name)
-{
- gint year, month, day;
-
- if (e_date_edit_date_is_valid (dedit)) {
- if (e_date_edit_get_date (dedit, &year, &month, &day)) {
- g_print ("Date %s changed to: %i/%i/%i (M/D/Y)\n",
- name, month, day, year);
- } else {
- g_print ("Date %s changed to: None\n", name);
- }
- } else {
- g_print ("Date %s changed to: Not Valid\n", name);
- }
-}
-
-
-static void
-on_time_changed (EDateEdit *dedit,
- gchar *name)
-{
- gint hour, minute;
-
- if (e_date_edit_time_is_valid (dedit)) {
- if (e_date_edit_get_time_of_day (dedit, &hour, &minute)) {
- g_print ("Time %s changed to: %02i:%02i\n", name,
- hour, minute);
- } else {
- g_print ("Time %s changed to: None\n", name);
- }
- } else {
- g_print ("Time %s changed to: Not Valid\n", name);
- }
-}
-#endif
-
-
-static void
-on_changed (EDateEdit *dedit,
- gchar *name)
-{
- gint year, month, day, hour, minute;
-
- g_print ("Date %s changed ", name);
-
- if (e_date_edit_date_is_valid (dedit)) {
- if (e_date_edit_get_date (dedit, &year, &month, &day)) {
- g_print ("M/D/Y: %i/%i/%i", month, day, year);
- } else {
- g_print ("None");
- }
- } else {
- g_print ("Date Invalid");
- }
-
- if (e_date_edit_time_is_valid (dedit)) {
- if (e_date_edit_get_time_of_day (dedit, &hour, &minute)) {
- g_print (" %02i:%02i\n", hour, minute);
- } else {
- g_print (" None\n");
- }
- } else {
- g_print (" Time Invalid\n");
- }
-}
-
-
diff --git a/widgets/misc/test-dropdown-button.c b/widgets/misc/test-dropdown-button.c
deleted file mode 100644
index 259e344bcb..0000000000
--- a/widgets/misc/test-dropdown-button.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-dropdown-menu.c
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Authors:
- * Ettore Perazzoli <ettore@ximian.com>
- * Damon Chaplin <damon@ximian.com>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <glib.h>
-#include <gtk/gtkmain.h>
-#include <gtk/gtkmenu.h>
-#include <gtk/gtkwindow.h>
-#include <libgnomeui/gnome-app.h>
-#include <libgnomeui/gnome-app-helper.h>
-#include <libgnomeui/gnome-init.h>
-#include <libgnomeui/gnome-stock.h>
-#include "e-dropdown-button.h"
-
-
-/* (The following is shameless stolen from `testgnome.c'. */
-
-static void
-item_activated (GtkWidget *widget,
- void *data)
-{
- printf ("%s activated.\n", (char *) data);
-}
-
-static GnomeUIInfo ui_info[] = {
- { GNOME_APP_UI_ITEM, "_New", "Create a new file", item_activated, "file/new", NULL,
- GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_NEW, 'n', GDK_CONTROL_MASK, NULL },
- { GNOME_APP_UI_ITEM, "_Open...", "Open an existing file", item_activated, "file/open", NULL,
- GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_OPEN, 'o', GDK_CONTROL_MASK, NULL },
- { GNOME_APP_UI_ITEM, "_Save", "Save the current file", item_activated, "file/save", NULL,
- GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_SAVE, 's', GDK_CONTROL_MASK, NULL },
- { GNOME_APP_UI_ITEM, "Save _as...", "Save the current file with a new name", item_activated, "file/save as", NULL,
- GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_SAVE_AS, 0, 0, NULL },
-
- GNOMEUIINFO_SEPARATOR,
-
- { GNOME_APP_UI_ITEM, "_Print...", "Print the current file", item_activated, "file/print", NULL,
- GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_PRINT, 'p', GDK_CONTROL_MASK, NULL },
-
- GNOMEUIINFO_SEPARATOR,
-
- { GNOME_APP_UI_ITEM, "_Close", "Close the current file", item_activated, "file/close", NULL,
- GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_CLOSE, 0, 0, NULL },
- { GNOME_APP_UI_ITEM, "E_xit", "Exit the program", item_activated, "file/exit", NULL,
- GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_EXIT, 'q', GDK_CONTROL_MASK, NULL },
- GNOMEUIINFO_END
-};
-
-
-int
-main (int argc, char **argv)
-{
- GtkWidget *window;
- GtkWidget *menu;
- GtkWidget *dropdown_button;
-
- gnome_init ("test-dropdown-button", "0.0", argc, argv);
-
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- gtk_window_set_default_size (GTK_WINDOW (window), 1, 1);
-
- menu = gtk_menu_new ();
-
- gnome_app_fill_menu (GTK_MENU_SHELL (menu), ui_info, NULL, TRUE, 0);
-
- dropdown_button = e_dropdown_button_new ("Me_nu", GTK_MENU (menu));
- gtk_container_add (GTK_CONTAINER (window), dropdown_button);
-
- gtk_widget_show (window);
- gtk_widget_show (dropdown_button);
-
- gtk_main ();
-
- return 0;
-}
diff --git a/widgets/misc/test-title-bar.c b/widgets/misc/test-title-bar.c
deleted file mode 100644
index 2cbd392e49..0000000000
--- a/widgets/misc/test-title-bar.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-title-bar.c
- *
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gtk/gtkbox.h>
-#include <gtk/gtkmain.h>
-#include <gtk/gtktext.h>
-#include <gtk/gtkvbox.h>
-#include <libgnomeui/gnome-app.h>
-#include <libgnomeui/gnome-init.h>
-#include "e-title-bar.h"
-
-static void
-delete_event_cb (GtkWidget *widget,
- GdkEventAny *event,
- gpointer data)
-{
- gtk_main_quit ();
-}
-
-int
-main (int argc, char **argv)
-{
- GtkWidget *app;
- GtkWidget *title_bar;
- GtkWidget *text;
- GtkWidget *vbox;
-
- gnome_init ("test-title-bar", "0.0", argc, argv);
-
- app = gnome_app_new ("Test", "Test");
- gtk_window_set_default_size (GTK_WINDOW (app), 400, 400);
- gtk_window_set_policy (GTK_WINDOW (app), FALSE, TRUE, FALSE);
-
- gtk_signal_connect (GTK_OBJECT (app), "delete_event", GTK_SIGNAL_FUNC (delete_event_cb), NULL);
-
- title_bar = e_title_bar_new ("This is a very annoyingly long title bar");
- gtk_widget_show (title_bar);
-
- text = gtk_text_new (NULL, NULL);
- gtk_widget_show (text);
-
- vbox = gtk_vbox_new (FALSE, 0);
- gtk_box_pack_start (GTK_BOX (vbox), title_bar, FALSE, TRUE, 0);
- gtk_box_pack_start (GTK_BOX (vbox), text, TRUE, TRUE, 0);
- gtk_widget_show (vbox);
-
- gnome_app_set_contents (GNOME_APP (app), vbox);
- gtk_widget_show (app);
-
- gtk_main ();
-
- return 0;
-}
diff --git a/widgets/table/.cvsignore b/widgets/table/.cvsignore
deleted file mode 100644
index b1004fee2c..0000000000
--- a/widgets/table/.cvsignore
+++ /dev/null
@@ -1,13 +0,0 @@
-.deps
-.libs
-.pure
-Makefile
-Makefile.in
-*.lo
-*.la
-table-test
-table-example-1
-table-example-2
-table-size-test
-tree-example-1
-tree-example-2
diff --git a/widgets/table/add-col.xpm b/widgets/table/add-col.xpm
deleted file mode 100644
index 9c5f314c8e..0000000000
--- a/widgets/table/add-col.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * add_col_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #000000",
-"+ c #FFFFFF",
-" ",
-" ",
-" ",
-" ",
-" .............. ",
-" .++++++++++++. ",
-" .++++++++++++. ",
-" ....+++....... ",
-" .+. ",
-" . ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" "};
diff --git a/widgets/table/arrow-down.xpm b/widgets/table/arrow-down.xpm
deleted file mode 100644
index f1e6cb4b3c..0000000000
--- a/widgets/table/arrow-down.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static const char * arrow_down_xpm[] = {
-"13 16 2 1",
-" c None",
-". c #FF0000",
-" ... ",
-" ... ",
-" ... ",
-" ... ",
-" ... ",
-" ... ",
-" ... ",
-" ... ",
-" ... ",
-".............",
-" ........... ",
-" ......... ",
-" ....... ",
-" ..... ",
-" ... ",
-" . "};
diff --git a/widgets/table/arrow-up.xpm b/widgets/table/arrow-up.xpm
deleted file mode 100644
index 0cc5b9a00c..0000000000
--- a/widgets/table/arrow-up.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static const char * arrow_up_xpm[] = {
-"13 16 2 1",
-" c None",
-". c #FF0000",
-" . ",
-" ... ",
-" ..... ",
-" ....... ",
-" ......... ",
-" ........... ",
-".............",
-" ... ",
-" ... ",
-" ... ",
-" ... ",
-" ... ",
-" ... ",
-" ... ",
-" ... ",
-" ... "};
diff --git a/widgets/table/check-empty.xpm b/widgets/table/check-empty.xpm
deleted file mode 100644
index 746b20234e..0000000000
--- a/widgets/table/check-empty.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static const char * check_empty_xpm[] = {
-"16 16 2 1",
-" c None",
-". c #000000",
-" ",
-" ",
-" ............ ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" ............ ",
-" ",
-" "};
diff --git a/widgets/table/check-filled.xpm b/widgets/table/check-filled.xpm
deleted file mode 100644
index c0468fc25b..0000000000
--- a/widgets/table/check-filled.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static const char * check_filled_xpm[] = {
-"16 16 2 1",
-" c None",
-". c #000000",
-" ",
-" ",
-" ............ ",
-" . . ",
-" . . . ",
-" . .. . ",
-" . ... . ",
-" . . ... . ",
-" . .. ... . ",
-" . ..... . ",
-" . ... . ",
-" . . . ",
-" . . ",
-" ............ ",
-" ",
-" "};
diff --git a/widgets/table/clip.png b/widgets/table/clip.png
deleted file mode 100644
index 27aa5f072f..0000000000
--- a/widgets/table/clip.png
+++ /dev/null
Binary files differ
diff --git a/widgets/table/e-cell-checkbox.c b/widgets/table/e-cell-checkbox.c
deleted file mode 100644
index 2857388cb6..0000000000
--- a/widgets/table/e-cell-checkbox.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * e-cell-checkbox.c: Checkbox cell renderer
- *
- * Author:
- * Miguel de Icaza (miguel@kernel.org)
- *
- * (C) 1999, 2000 Ximian, Inc
- */
-#include <config.h>
-#include <gtk/gtkenums.h>
-#include <gtk/gtkentry.h>
-#include <gtk/gtkwindow.h>
-#include <gtk/gtksignal.h>
-#include <gdk/gdkkeysyms.h>
-#include <libgnomeui/gnome-canvas.h>
-#include "e-cell-checkbox.h"
-#include "gal/util/e-util.h"
-#include "e-table-item.h"
-
-#include "check-empty.xpm"
-#include "check-filled.xpm"
-
-#define PARENT_TYPE e_cell_toggle_get_type ()
-
-static GdkPixbuf *checks [2];
-
-static void
-e_cell_checkbox_class_init (GtkObjectClass *object_class)
-{
- checks [0] = gdk_pixbuf_new_from_xpm_data (check_empty_xpm);
- checks [1] = gdk_pixbuf_new_from_xpm_data (check_filled_xpm);
-}
-
-E_MAKE_TYPE(e_cell_checkbox, "ECellCheckbox", ECellCheckbox, e_cell_checkbox_class_init, NULL, PARENT_TYPE);
-
-/**
- * e_cell_checkbox_new:
- *
- * Creates a new ECell renderer that can be used to render check
- * boxes. the data provided from the model is cast to an integer.
- * zero is used for the off display, and non-zero for checked status.
- *
- * Returns: an ECell object that can be used to render checkboxes.
- */
-ECell *
-e_cell_checkbox_new (void)
-{
- ECellCheckbox *eccb = gtk_type_new (e_cell_checkbox_get_type ());
-
- e_cell_toggle_construct (E_CELL_TOGGLE (eccb), 2, 2, checks);
-
- return (ECell *) eccb;
-}
diff --git a/widgets/table/e-cell-checkbox.h b/widgets/table/e-cell-checkbox.h
deleted file mode 100644
index 60c0341fe7..0000000000
--- a/widgets/table/e-cell-checkbox.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef _E_CELL_CHECKBOX_H_
-#define _E_CELL_CHECKBOX_H_
-
-#include <gal/e-table/e-cell-toggle.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_CELL_CHECKBOX_TYPE (e_cell_checkbox_get_type ())
-#define E_CELL_CHECKBOX(o) (GTK_CHECK_CAST ((o), E_CELL_CHECKBOX_TYPE, ECellCheckbox))
-#define E_CELL_CHECKBOX_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_CELL_CHECKBOX_TYPE, ECellCheckboxClass))
-#define E_IS_CELL_CHECKBOX(o) (GTK_CHECK_TYPE ((o), E_CELL_CHECKBOX_TYPE))
-#define E_IS_CELL_CHECKBOX_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_CELL_CHECKBOX_TYPE))
-
-typedef struct {
- ECellToggle parent;
-} ECellCheckbox;
-
-typedef struct {
- ECellToggleClass parent_class;
-} ECellCheckboxClass;
-
-GtkType e_cell_checkbox_get_type (void);
-ECell *e_cell_checkbox_new (void);
-
-END_GNOME_DECLS
-
-#endif /* _E_CELL_CHECKBOX_H_ */
-
diff --git a/widgets/table/e-cell-combo.c b/widgets/table/e-cell-combo.c
deleted file mode 100644
index 07a14340b9..0000000000
--- a/widgets/table/e-cell-combo.c
+++ /dev/null
@@ -1,619 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 2001, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * ECellCombo - a subclass of ECellPopup used to support popup lists like a
- * GtkCombo widget. It only supports a basic popup list of strings at present,
- * with no auto-completion.
- */
-
-/*
- * Notes: (handling pointer grabs and GTK+ grabs is a nightmare!)
- *
- * o We must grab the pointer when we show the popup, so that if any buttons
- * are pressed outside the application we hide the popup.
- *
- * o We have to be careful when popping up any widgets which also grab the
- * pointer at some point, since we will lose our own pointer grab.
- * When we pop up a list it will grab the pointer itself when an item is
- * selected, and release the grab when the button is released.
- * Fortunately we hide the popup at this point, so it isn't a problem.
- * But for other types of widgets in the popup it could cause trouble.
- * - I think GTK+ should provide help for this (nested pointer grabs?).
- *
- * o We must set the 'owner_events' flag of the pointer grab to TRUE so that
- * pointer events get reported to all the application windows as normal.
- * If we don't do this then the widgets in the popup may not work properly.
- *
- * o We must do a gtk_grab_add() so that we only allow events to go to the
- * widgets within the popup (though some special events still get reported
- * to the widget owning the window). Doing th gtk_grab_add() on the toplevel
- * popup window should be fine. We can then check for any events that should
- * close the popup, like the Escape key, or a button press outside the popup.
- */
-
-#include <config.h>
-#include <string.h> /* strcmp() */
-#include <gdk/gdkkeysyms.h>
-#include "gal/util/e-util.h"
-#include "e-table-item.h"
-#include "e-cell-combo.h"
-
-
-/* The height to make the popup list if there aren't any items in it. */
-#define E_CELL_COMBO_LIST_EMPTY_HEIGHT 15
-
-
-static void e_cell_combo_class_init (GtkObjectClass *object_class);
-static void e_cell_combo_init (ECellCombo *ecc);
-static void e_cell_combo_destroy (GtkObject *object);
-
-static gint e_cell_combo_do_popup (ECellPopup *ecp,
- GdkEvent *event);
-static void e_cell_combo_select_matching_item (ECellCombo *ecc);
-static void e_cell_combo_show_popup (ECellCombo *ecc);
-static void e_cell_combo_get_popup_pos (ECellCombo *ecc,
- gint *x,
- gint *y,
- gint *height,
- gint *width);
-
-static gint e_cell_combo_button_press (GtkWidget *popup_window,
- GdkEvent *event,
- ECellCombo *ecc);
-static gint e_cell_combo_button_release (GtkWidget *popup_window,
- GdkEventButton *event,
- ECellCombo *ecc);
-static int e_cell_combo_key_press (GtkWidget *popup_window,
- GdkEventKey *event,
- ECellCombo *ecc);
-
-static void e_cell_combo_update_cell (ECellCombo *ecc);
-static void e_cell_combo_restart_edit (ECellCombo *ecc);
-
-
-static ECellPopupClass *parent_class;
-
-
-E_MAKE_TYPE (e_cell_combo, "ECellCombo", ECellCombo,
- e_cell_combo_class_init, e_cell_combo_init,
- e_cell_popup_get_type());
-
-
-static void
-e_cell_combo_class_init (GtkObjectClass *object_class)
-{
- ECellPopupClass *ecpc = (ECellPopupClass *) object_class;
-
- object_class->destroy = e_cell_combo_destroy;
-
- ecpc->popup = e_cell_combo_do_popup;
-
- parent_class = gtk_type_class (e_cell_popup_get_type ());
-}
-
-
-static void
-e_cell_combo_init (ECellCombo *ecc)
-{
- GtkWidget *frame;
-
- /* We create one popup window for the ECell, since there will only
- ever be one popup in use at a time. */
- ecc->popup_window = gtk_window_new (GTK_WINDOW_POPUP);
-
- gtk_window_set_policy (GTK_WINDOW (ecc->popup_window),
- TRUE, TRUE, FALSE);
-
- frame = gtk_frame_new (NULL);
- gtk_container_add (GTK_CONTAINER (ecc->popup_window), frame);
- gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT);
- gtk_widget_show (frame);
-
- ecc->popup_scrolled_window = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (ecc->popup_scrolled_window),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
- GTK_WIDGET_UNSET_FLAGS (GTK_SCROLLED_WINDOW (ecc->popup_scrolled_window)->hscrollbar, GTK_CAN_FOCUS);
- GTK_WIDGET_UNSET_FLAGS (GTK_SCROLLED_WINDOW (ecc->popup_scrolled_window)->vscrollbar, GTK_CAN_FOCUS);
- gtk_container_add (GTK_CONTAINER (frame), ecc->popup_scrolled_window);
- gtk_widget_show (ecc->popup_scrolled_window);
-
- ecc->popup_list = gtk_list_new ();
- gtk_list_set_selection_mode (GTK_LIST (ecc->popup_list),
- GTK_SELECTION_BROWSE);
- gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (ecc->popup_scrolled_window), ecc->popup_list);
- gtk_container_set_focus_vadjustment (GTK_CONTAINER (ecc->popup_list),
- gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (ecc->popup_scrolled_window)));
- gtk_container_set_focus_hadjustment (GTK_CONTAINER (ecc->popup_list),
- gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (ecc->popup_scrolled_window)));
- gtk_widget_show (ecc->popup_list);
-
- gtk_signal_connect (GTK_OBJECT (ecc->popup_window),
- "button_press_event",
- GTK_SIGNAL_FUNC (e_cell_combo_button_press),
- ecc);
- /* We use connect_after here so the list updates the selection before
- we hide the popup and update the cell. */
- gtk_signal_connect_after (GTK_OBJECT (ecc->popup_window),
- "button_release_event",
- GTK_SIGNAL_FUNC (e_cell_combo_button_release),
- ecc);
- gtk_signal_connect (GTK_OBJECT (ecc->popup_window),
- "key_press_event",
- GTK_SIGNAL_FUNC (e_cell_combo_key_press), ecc);
-}
-
-
-/**
- * e_cell_combo_new:
- *
- * Creates a new ECellCombo renderer.
- *
- * Returns: an ECellCombo object.
- */
-ECell *
-e_cell_combo_new (void)
-{
- ECellCombo *ecc = gtk_type_new (e_cell_combo_get_type ());
-
- return (ECell*) ecc;
-}
-
-
-/*
- * GtkObject::destroy method
- */
-static void
-e_cell_combo_destroy (GtkObject *object)
-{
- ECellCombo *ecc = E_CELL_COMBO (object);
-
- gtk_widget_unref (ecc->popup_window);
-
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
-}
-
-
-
-void
-e_cell_combo_set_popdown_strings (ECellCombo *ecc,
- GList *strings)
-{
- GList *elem;
- GtkWidget *listitem;
-
- g_return_if_fail (E_IS_CELL_COMBO (ecc));
- g_return_if_fail (strings != NULL);
-
- gtk_list_clear_items (GTK_LIST (ecc->popup_list), 0, -1);
- elem = strings;
- while (elem) {
- listitem = gtk_list_item_new_with_label ((gchar *) elem->data);
- gtk_widget_show (listitem);
- gtk_container_add (GTK_CONTAINER (ecc->popup_list), listitem);
- elem = elem->next;
- }
-}
-
-
-static gint
-e_cell_combo_do_popup (ECellPopup *ecp,
- GdkEvent *event)
-{
- ECellCombo *ecc = E_CELL_COMBO (ecp);
- guint32 time;
- gint error_code;
-
- e_cell_combo_show_popup (ecc);
- e_cell_combo_select_matching_item (ecc);
-
- if (event->type == GDK_BUTTON_PRESS) {
- GTK_LIST (ecc->popup_list)->drag_selection = TRUE;
- time = event->button.time;
- } else {
- time = event->key.time;
- }
-
- error_code = gdk_pointer_grab (ecc->popup_list->window, TRUE,
- GDK_ENTER_NOTIFY_MASK |
- GDK_BUTTON_PRESS_MASK |
- GDK_BUTTON_RELEASE_MASK |
- GDK_POINTER_MOTION_HINT_MASK |
- GDK_BUTTON1_MOTION_MASK,
- NULL, NULL, time);
- if (error_code != 0)
- g_warning ("Failed to get pointer grab (%i)", error_code);
- gtk_grab_add (ecc->popup_window);
-
- return TRUE;
-}
-
-
-static void
-e_cell_combo_select_matching_item (ECellCombo *ecc)
-{
- ECellPopup *ecp = E_CELL_POPUP (ecc);
- ECellView *ecv = (ECellView*) ecp->popup_cell_view;
- ETableItem *eti = E_TABLE_ITEM (ecp->popup_cell_view->cell_view.e_table_item_view);
- ETableCol *ecol;
- GtkList *list;
- GtkWidget *listitem, *label;
- GList *elem;
- gboolean found = FALSE;
- char *cell_text, *list_item_text;
-
- ecol = e_table_header_get_column (eti->header, ecp->popup_view_col);
- cell_text = e_table_model_value_at (ecv->e_table_model,
- ecol->col_idx, ecp->popup_row);
-
- list = GTK_LIST (ecc->popup_list);
- elem = list->children;
- while (elem) {
- listitem = GTK_WIDGET (elem->data);
- label = GTK_BIN (listitem)->child;
- gtk_label_get (GTK_LABEL (label), &list_item_text);
-
- if (!strcmp (list_item_text, cell_text)) {
- found = TRUE;
- gtk_list_select_child (list, listitem);
- gtk_widget_grab_focus (listitem);
- break;
- }
-
- elem = elem->next;
- }
-
- if (!found) {
- gtk_list_unselect_all (list);
- if (list->children)
- gtk_widget_grab_focus (GTK_WIDGET (list->children->data));
- }
-}
-
-
-static void
-e_cell_combo_show_popup (ECellCombo *ecc)
-{
- gint x, y, width, height, old_width, old_height;
-
- g_print ("In e_cell_popup_popup_list\n");
-
- /* This code is practically copied from GtkCombo. */
- old_width = ecc->popup_window->allocation.width;
- old_height = ecc->popup_window->allocation.height;
-
- e_cell_combo_get_popup_pos (ecc, &x, &y, &height, &width);
-
- /* workaround for gtk_scrolled_window_size_allocate bug */
- if (old_width != width || old_height != height) {
- gtk_widget_hide (GTK_SCROLLED_WINDOW (ecc->popup_scrolled_window)->hscrollbar);
- gtk_widget_hide (GTK_SCROLLED_WINDOW (ecc->popup_scrolled_window)->vscrollbar);
- }
-
- gtk_widget_set_uposition (ecc->popup_window, x, y);
- gtk_widget_set_usize (ecc->popup_window, width, height);
- gtk_widget_realize (ecc->popup_window);
- gdk_window_resize (ecc->popup_window->window, width, height);
- gtk_widget_show (ecc->popup_window);
-
- E_CELL_POPUP (ecc)->popup_shown = TRUE;
-}
-
-
-/* Calculates the size and position of the popup window (like GtkCombo). */
-static void
-e_cell_combo_get_popup_pos (ECellCombo *ecc,
- gint *x,
- gint *y,
- gint *height,
- gint *width)
-{
- ECellPopup *ecp = E_CELL_POPUP (ecc);
- ETableItem *eti = E_TABLE_ITEM (ecp->popup_cell_view->cell_view.e_table_item_view);
- GtkWidget *canvas = GTK_WIDGET (GNOME_CANVAS_ITEM (eti)->canvas);
- GtkBin *popwin;
- GtkScrolledWindow *popup;
- GtkRequisition list_requisition;
- gboolean show_vscroll = FALSE, show_hscroll = FALSE;
- gint avail_height, avail_width, min_height, work_height, screen_width;
- gint column_width, row_height, scrollbar_width;
- double x1, y1;
-
- /* This code is practically copied from GtkCombo. */
- popup = GTK_SCROLLED_WINDOW (ecc->popup_scrolled_window);
- popwin = GTK_BIN (ecc->popup_window);
-
- gdk_window_get_origin (canvas->window, x, y);
-
- x1 = e_table_header_col_diff (eti->header, 0, eti->editing_col + 1);
- y1 = e_table_item_row_diff (eti, 0, eti->editing_row + 1);
- column_width = e_table_header_col_diff (eti->header, eti->editing_col,
- eti->editing_col + 1);
- row_height = e_table_item_row_diff (eti, eti->editing_row,
- eti->editing_row + 1);
- gnome_canvas_item_i2w (GNOME_CANVAS_ITEM (eti), &x1, &y1);
-
- *x += x1;
- /* The ETable positions don't include the grid lines, I think, so we
- add 1. */
- *y += y1 + 1;
-
- scrollbar_width = popup->vscrollbar->requisition.width
- + GTK_SCROLLED_WINDOW_CLASS (GTK_OBJECT (popup)->klass)->scrollbar_spacing;
-
- avail_height = gdk_screen_height () - *y;
-
- /* We'll use the entire screen width if needed, but we save space for
- the vertical scrollbar in case we need to show that. */
- screen_width = gdk_screen_width ();
- avail_width = screen_width - scrollbar_width;
-
- gtk_widget_size_request (ecc->popup_list, &list_requisition);
- min_height = MIN (list_requisition.height,
- popup->vscrollbar->requisition.height);
- if (!GTK_LIST (ecc->popup_list)->children)
- list_requisition.height += E_CELL_COMBO_LIST_EMPTY_HEIGHT;
-
- /* Calculate the desired width. */
- *width = list_requisition.width
- + 2 * popwin->child->style->klass->xthickness
- + 2 * GTK_CONTAINER (popwin->child)->border_width
- + 2 * GTK_CONTAINER (popup)->border_width
- + 2 * GTK_CONTAINER (GTK_BIN (popup)->child)->border_width
- + 2 * GTK_BIN (popup)->child->style->klass->xthickness;
-
- /* Use at least the same width as the column. */
- if (*width < column_width)
- *width = column_width;
-
- /* If it is larger than the available width, use that instead and show
- the horizontal scrollbar. */
- if (*width > avail_width) {
- *width = avail_width;
- show_hscroll = TRUE;
- }
-
- /* Calculate all the borders etc. that we need to add to the height. */
- work_height = (2 * popwin->child->style->klass->ythickness
- + 2 * GTK_CONTAINER (popwin->child)->border_width
- + 2 * GTK_CONTAINER (popup)->border_width
- + 2 * GTK_CONTAINER (GTK_BIN (popup)->child)->border_width
- + 2 * GTK_BIN (popup)->child->style->klass->xthickness);
-
- /* Add on the height of the horizontal scrollbar if we need it. */
- if (show_hscroll)
- work_height += popup->hscrollbar->requisition.height +
- GTK_SCROLLED_WINDOW_CLASS (GTK_OBJECT (popup)->klass)->scrollbar_spacing;
-
- /* Check if it fits in the available height. */
- if (work_height + list_requisition.height > avail_height) {
- /* It doesn't fit, so we see if we have the minimum space
- needed. */
- if (work_height + min_height > avail_height
- && *y - row_height > avail_height) {
- /* We don't, so we show the popup above the cell
- instead of below it. */
- avail_height = *y - row_height;
- *y -= (work_height + list_requisition.height
- + row_height);
- if (*y < 0)
- *y = 0;
- }
- }
-
- /* Check if we still need the vertical scrollbar. */
- if (work_height + list_requisition.height > avail_height) {
- *width += scrollbar_width;
- show_vscroll = TRUE;
- }
-
- /* We try to line it up with the right edge of the column, but we don't
- want it to go off the edges of the screen. */
- if (*x > screen_width)
- *x = screen_width;
- *x -= *width;
- if (*x < 0)
- *x = 0;
-
- if (show_vscroll)
- *height = avail_height;
- else
- *height = work_height + list_requisition.height;
-}
-
-
-
-
-
-
-/* This handles button press events in the popup window.
- Note that since we have a pointer grab on this window, we also get button
- press events for windows outside the application here, so we hide the popup
- window if that happens. We also get propagated events from child widgets
- which we ignore. */
-static gint
-e_cell_combo_button_press (GtkWidget *popup_window,
- GdkEvent *event,
- ECellCombo *ecc)
-{
- GtkWidget *event_widget;
-
- g_print ("In e_cell_combo_button_press\n");
-
- event_widget = gtk_get_event_widget (event);
-
- /* If the button press was for a widget inside the popup list, but
- not the popup window itself, then we ignore the event and return
- FALSE. Otherwise we will hide the popup.
- Note that since we have a pointer grab on the popup list, button
- presses outside the application will be reported to this window,
- which is why we hide the popup in this case. */
- while (event_widget) {
- event_widget = event_widget->parent;
- if (event_widget == ecc->popup_list)
- return FALSE;
- }
-
- gtk_grab_remove (ecc->popup_window);
- gdk_pointer_ungrab (event->button.time);
- gtk_widget_hide (ecc->popup_window);
-
- E_CELL_POPUP (ecc)->popup_shown = FALSE;
-
- /* We don't want to update the cell here. Since the list is in browse
- mode there will always be one item selected, so when we popup the
- list one item is selected even if it doesn't match the current text
- in the cell. So if you click outside the popup (which is what has
- happened here) it is better to not update the cell. */
- /*e_cell_combo_update_cell (ecc);*/
- e_cell_combo_restart_edit (ecc);
-
- return TRUE;
-}
-
-
-/* This handles button release events in the popup window. If the button is
- released inside the list, we want to hide the popup window and update the
- cell with the new selection. */
-static gint
-e_cell_combo_button_release (GtkWidget *popup_window,
- GdkEventButton *event,
- ECellCombo *ecc)
-{
- GtkWidget *event_widget;
-
- event_widget = gtk_get_event_widget ((GdkEvent*) event);
-
- g_print ("In e_cell_popup_button_release event_widget:%s\n",
- gtk_widget_get_name (event_widget));
-
- /* See if the button was released in the list (or its children). */
- while (event_widget && event_widget != ecc->popup_list)
- event_widget = event_widget->parent;
-
- /* If it wasn't, then we just ignore the event. */
- if (event_widget != ecc->popup_list)
- return FALSE;
-
- /* The button was released inside the list, so we hide the popup and
- update the cell to reflect the new selection. */
- gtk_grab_remove (ecc->popup_window);
- gdk_pointer_ungrab (event->time);
- gtk_widget_hide (ecc->popup_window);
-
- E_CELL_POPUP (ecc)->popup_shown = FALSE;
-
- e_cell_combo_update_cell (ecc);
- e_cell_combo_restart_edit (ecc);
-
- return TRUE;
-}
-
-
-/* This handles key press events in the popup window. If the Escape key is
- pressed we hide the popup, and do not change the cell contents. */
-static int
-e_cell_combo_key_press (GtkWidget *popup_window,
- GdkEventKey *event,
- ECellCombo *ecc)
-{
- g_print ("In e_cell_popup_key_press\n");
-
- /* If the Escape key is pressed we hide the popup. */
- if (event->keyval != GDK_Escape
- && event->keyval != GDK_Return
- && event->keyval != GDK_KP_Enter
- && event->keyval != GDK_ISO_Enter
- && event->keyval != GDK_3270_Enter)
- return FALSE;
-
- gtk_grab_remove (ecc->popup_window);
- gdk_pointer_ungrab (event->time);
- gtk_widget_hide (ecc->popup_window);
-
- E_CELL_POPUP (ecc)->popup_shown = FALSE;
-
- if (event->keyval != GDK_Escape)
- e_cell_combo_update_cell (ecc);
-
- e_cell_combo_restart_edit (ecc);
-
- return TRUE;
-}
-
-
-static void
-e_cell_combo_update_cell (ECellCombo *ecc)
-{
- ECellPopup *ecp = E_CELL_POPUP (ecc);
- ECellView *ecv = (ECellView*) ecp->popup_cell_view;
- ETableItem *eti = E_TABLE_ITEM (ecv->e_table_item_view);
- ETableCol *ecol;
- GtkList *list = GTK_LIST (ecc->popup_list);
- GtkListItem *listitem;
- gchar *text, *old_text;
-
- g_print ("In e_cell_popup_update_cell\n");
-
- /* Return if no item is selected. */
- if (list->selection == NULL)
- return;
-
- /* Get the text of the selected item. */
- listitem = list->selection->data;
- gtk_label_get (GTK_LABEL (GTK_BIN (listitem)->child), &text);
-
- /* Compare it with the existing cell contents. */
- ecol = e_table_header_get_column (eti->header, ecp->popup_view_col);
- old_text = e_table_model_value_at (ecv->e_table_model,
- ecol->col_idx, ecp->popup_row);
-
- g_print (" Old text: %s New text: %s\n", old_text, text);
-
- /* If they are different, update the cell contents. */
- if (strcmp (old_text, text)) {
- g_print (" Setting cell text...\n");
- e_table_model_set_value_at (ecv->e_table_model,
- ecol->col_idx, ecp->popup_row,
- text);
- g_print (" Set cell text.\n");
- }
-}
-
-
-static void
-e_cell_combo_restart_edit (ECellCombo *ecc)
-{
- /* This doesn't work. ETable stops the edit straight-away again. */
-#if 0
- ECellView *ecv = (ECellView*) ecc->popup_cell_view;
- ETableItem *eti = E_TABLE_ITEM (ecv->e_table_item_view);
-
- e_table_item_enter_edit (eti, ecc->popup_view_col, ecc->popup_row);
-#endif
-}
-
-
-
diff --git a/widgets/table/e-cell-combo.h b/widgets/table/e-cell-combo.h
deleted file mode 100644
index 9f8833d029..0000000000
--- a/widgets/table/e-cell-combo.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 2001, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * ECellCombo - a subclass of ECellPopup used to support popup lists like a
- * GtkCombo widget. It only supports a basic popup list of strings at present,
- * with no auto-completion.
- */
-
-#ifndef _E_CELL_COMBO_H_
-#define _E_CELL_COMBO_H_
-
-#include <gal/e-table/e-cell-popup.h>
-
-#define E_CELL_COMBO_TYPE (e_cell_combo_get_type ())
-#define E_CELL_COMBO(o) (GTK_CHECK_CAST ((o), E_CELL_COMBO_TYPE, ECellCombo))
-#define E_CELL_COMBO_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_CELL_COMBO_TYPE, ECellComboClass))
-#define E_IS_CELL_COMBO(o) (GTK_CHECK_TYPE ((o), E_CELL_COMBO_TYPE))
-#define E_IS_CELL_COMBO_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_CELL_COMBO_TYPE))
-
-
-typedef struct {
- ECellPopup parent;
-
- GtkWidget *popup_window;
- GtkWidget *popup_scrolled_window;
- GtkWidget *popup_list;
-} ECellCombo;
-
-typedef struct {
- ECellPopupClass parent_class;
-} ECellComboClass;
-
-
-GtkType e_cell_combo_get_type (void);
-ECell *e_cell_combo_new (void);
-
-void e_cell_combo_set_popdown_strings (ECellCombo *ecc,
- GList *strings);
-
-#endif /* _E_CELL_COMBO_H_ */
diff --git a/widgets/table/e-cell-date.c b/widgets/table/e-cell-date.c
deleted file mode 100644
index c8e2dd5f09..0000000000
--- a/widgets/table/e-cell-date.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* ECellDate - Date item for e-table.
- * Copyright (C) 2001 Ximian, Inc.
- * Author: Chris Lahey <clahey@ximian.com>
- */
-
-#include <config.h>
-#include <sys/time.h>
-#include <time.h>
-#include <unistd.h>
-#include <gal/util/e-util.h>
-#include <gal/widgets/e-unicode.h>
-#include <gal/util/e-i18n.h>
-#include "e-cell-date.h"
-
-#define PARENT_TYPE e_cell_text_get_type ()
-
-static ECellTextClass *parent_class;
-
-static char *
-ecd_get_text(ECellText *cell, ETableModel *model, int col, int row)
-{
- time_t date = GPOINTER_TO_INT (e_table_model_value_at(model, col, row));
- time_t nowdate = time(NULL);
- time_t yesdate;
- struct tm then, now, yesterday;
- char buf[26];
- gboolean done = FALSE;
-
- if (date == 0) {
- return e_utf8_from_locale_string (_("?"));
- }
-
- localtime_r (&date, &then);
- localtime_r (&nowdate, &now);
-
- if (nowdate - date < 60 * 60 * 8 && nowdate > date) {
- strftime (buf, 26, _("%l:%M %p"), &then);
- done = TRUE;
- }
-
- if (!done) {
- if (then.tm_mday == now.tm_mday &&
- then.tm_mon == now.tm_mon &&
- then.tm_year == now.tm_year) {
- strftime (buf, 26, _("Today %l:%M %p"), &then);
- done = TRUE;
- }
- }
- if (!done) {
- yesdate = nowdate - 60 * 60 * 24;
- localtime_r (&yesdate, &yesterday);
- if (then.tm_mday == yesterday.tm_mday &&
- then.tm_mon == yesterday.tm_mon &&
- then.tm_year == yesterday.tm_year) {
-#if 0
- if (nowdate - date < 60 * 60 * 12) {
- strftime (buf, 26, _("Late Yesterday %l:%M %p"), &then);
- } else {
-#endif
- strftime (buf, 26, _("Yesterday %l:%M %p"), &then);
-#if 0
- }
-#endif
- done = TRUE;
- }
- }
- if (!done) {
- int i;
- for (i = 2; i < 7; i++) {
- yesdate = nowdate - 60 * 60 * 24 * i;
- localtime_r (&yesdate, &yesterday);
- if (then.tm_mday == yesterday.tm_mday &&
- then.tm_mon == yesterday.tm_mon &&
- then.tm_year == yesterday.tm_year) {
- strftime (buf, 26, _("%a %l:%M %p"), &then);
- done = TRUE;
- break;
- }
- }
- }
- if (!done) {
- if (then.tm_year == now.tm_year) {
- strftime (buf, 26, _("%b %d %l:%M %p"), &then);
- } else {
- strftime (buf, 26, _("%b %d %Y"), &then);
- }
- }
-#if 0
-#ifdef CTIME_R_THREE_ARGS
- ctime_r (&date, buf, 26);
-#else
- ctime_r (&date, buf);
-#endif
-#endif
-
- return e_utf8_from_locale_string (buf);
-}
-
-static void
-ecd_free_text(ECellText *cell, char *text)
-{
- g_free(text);
-}
-
-static void
-e_cell_date_class_init (GtkObjectClass *object_class)
-{
- ECellTextClass *ectc = (ECellTextClass *) object_class;
-
- parent_class = gtk_type_class (PARENT_TYPE);
-
- ectc->get_text = ecd_get_text;
- ectc->free_text = ecd_free_text;
-}
-
-static void
-e_cell_date_init (GtkObject *object)
-{
-}
-
-/**
- * e_cell_date_new:
- * @fontname: font to be used to render on the screen
- * @justify: Justification of the string in the cell.
- *
- * Creates a new ECell renderer that can be used to render dates that
- * that come from the model. The value returned from the model is
- * interpreted as being a time_t.
- *
- * The ECellDate object support a large set of properties that can be
- * configured through the Gtk argument system and allows the user to have
- * a finer control of the way the string is displayed. The arguments supported
- * allow the control of strikeout, bold, color and a date filter.
- *
- * The arguments "strikeout_column", "bold_column" and "color_column" set
- * and return an integer that points to a column in the model that controls
- * these settings. So controlling the way things are rendered is achieved
- * by having special columns in the model that will be used to flag whether
- * the date should be rendered with strikeout, or bolded. In the case of
- * the "color_column" argument, the column in the model is expected to have
- * a string that can be parsed by gdk_color_parse().
- *
- * Returns: an ECell object that can be used to render dates.
- */
-ECell *
-e_cell_date_new (const char *fontname, GtkJustification justify)
-{
- ECellDate *ecd = gtk_type_new (e_cell_date_get_type ());
-
- e_cell_text_construct(E_CELL_TEXT(ecd), fontname, justify);
-
- return (ECell *) ecd;
-}
-
-E_MAKE_TYPE(e_cell_date, "ECellDate", ECellDate, e_cell_date_class_init, e_cell_date_init, PARENT_TYPE);
diff --git a/widgets/table/e-cell-date.h b/widgets/table/e-cell-date.h
deleted file mode 100644
index 25bde7a85a..0000000000
--- a/widgets/table/e-cell-date.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* ECellDate - Date item for e-table.
- * Copyright (C) 2001 Ximian, Inc.
- * Author: Chris Lahey <clahey@ximian.com>
- */
-#ifndef _E_CELL_DATE_H_
-#define _E_CELL_DATE_H_
-
-#include <gal/e-table/e-cell-text.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_CELL_DATE_TYPE (e_cell_date_get_type ())
-#define E_CELL_DATE(o) (GTK_CHECK_CAST ((o), E_CELL_DATE_TYPE, ECellDate))
-#define E_CELL_DATE_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_CELL_DATE_TYPE, ECellDateClass))
-#define E_IS_CELL_DATE(o) (GTK_CHECK_TYPE ((o), E_CELL_DATE_TYPE))
-#define E_IS_CELL_DATE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_CELL_DATE_TYPE))
-
-typedef struct {
- ECellText base;
-} ECellDate;
-
-typedef struct {
- ECellTextClass parent_class;
-} ECellDateClass;
-
-GtkType e_cell_date_get_type (void);
-ECell *e_cell_date_new (const char *fontname, GtkJustification justify);
-
-END_GNOME_DECLS
-
-#endif /* _E_CELL_DATE_H_ */
diff --git a/widgets/table/e-cell-float.c b/widgets/table/e-cell-float.c
deleted file mode 100644
index c11c8e945c..0000000000
--- a/widgets/table/e-cell-float.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2001 CodeFactory AB
- * Copyright (C) 2001 Mikael Hallendal <micke@codefactory.se>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Derived from e-cell-number by Chris Lahey <clahey@ximian.com>
- * ECellFloat - Float item for e-table.
- *
- * Author: Mikael Hallendal <micke@codefactory.se>
- */
-
-#include <config.h>
-#include <sys/time.h>
-#include <unistd.h>
-#include <gal/util/e-util.h>
-#include <gal/util/e-i18n.h>
-#include "e-cell-float.h"
-
-#define PARENT_TYPE e_cell_text_get_type ()
-
-static ECellTextClass *parent_class;
-
-static char *
-ecn_get_text(ECellText *cell, ETableModel *model, int col, int row)
-{
- gfloat *fvalue;
-
- fvalue = e_table_model_value_at (model, col, row);
-
- return e_format_number_float (*fvalue);
-}
-
-static void
-ecn_free_text(ECellText *cell, char *text)
-{
- g_free(text);
-}
-
-static void
-e_cell_float_class_init (GtkObjectClass *object_class)
-{
- ECellTextClass *ectc = (ECellTextClass *) object_class;
-
- parent_class = gtk_type_class (PARENT_TYPE);
-
- ectc->get_text = ecn_get_text;
- ectc->free_text = ecn_free_text;
-}
-
-static void
-e_cell_float_init (GtkObject *object)
-{
-}
-
-/**
- * e_cell_float_new:
- * @fontname: font to be used to render on the screen
- * @justify: Justification of the string in the cell.
- *
- * Creates a new ECell renderer that can be used to render floats that
- * that come from the model. The value returned from the model is
- * interpreted as being an int.
- *
- * See ECellText for other features.
- *
- * Returns: an ECell object that can be used to render floats.
- */
-ECell *
-e_cell_float_new (const char *fontname, GtkJustification justify)
-{
- ECellFloat *ecn = gtk_type_new (e_cell_float_get_type ());
-
- e_cell_text_construct(E_CELL_TEXT(ecn), fontname, justify);
-
- return (ECell *) ecn;
-}
-
-E_MAKE_TYPE(e_cell_float, "ECellFloat", ECellFloat, e_cell_float_class_init, e_cell_float_init, PARENT_TYPE);
diff --git a/widgets/table/e-cell-float.h b/widgets/table/e-cell-float.h
deleted file mode 100644
index fe598f3831..0000000000
--- a/widgets/table/e-cell-float.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2001 CodeFactory AB
- * Copyright (C) 2001 Mikael Hallendal <micke@codefactory.se>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Derived from e-cell-number by Chros Lahey <clahey@ximian.com>
- * ECellFloat - Float item for e-table.
- *
- * Author: Mikael Hallendal <micke@codefactory.se>
- */
-
-#ifndef _E_CELL_FLOAT_H_
-#define _E_CELL_FLOAT_H_
-
-#include <gal/e-table/e-cell-text.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_CELL_FLOAT_TYPE (e_cell_float_get_type ())
-#define E_CELL_FLOAT(o) (GTK_CHECK_CAST ((o), E_CELL_FLOAT_TYPE, ECellFloat))
-#define E_CELL_FLOAT_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_CELL_FLOAT_TYPE, ECellFloatClass))
-#define E_IS_CELL_FLOAT(o) (GTK_CHECK_TYPE ((o), E_CELL_FLOAT_TYPE))
-#define E_IS_CELL_FLOAT_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_CELL_FLOAT_TYPE))
-
-typedef struct {
- ECellText base;
-} ECellFloat;
-
-typedef struct {
- ECellTextClass parent_class;
-} ECellFloatClass;
-
-GtkType e_cell_float_get_type (void);
-ECell *e_cell_float_new (const char *fontname, GtkJustification justify);
-
-END_GNOME_DECLS
-
-#endif /* _E_CELL_FLOAT_H_ */
diff --git a/widgets/table/e-cell-number.c b/widgets/table/e-cell-number.c
deleted file mode 100644
index d5f04d9d57..0000000000
--- a/widgets/table/e-cell-number.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* ECellNumber - Number item for e-table.
- * Copyright (C) 2001 Ximian, Inc.
- * Author: Chris Lahey <clahey@ximian.com>
- */
-
-#include <config.h>
-#include <sys/time.h>
-#include <unistd.h>
-#include <gal/util/e-util.h>
-#include <gal/util/e-i18n.h>
-#include "e-cell-number.h"
-
-#define PARENT_TYPE e_cell_text_get_type ()
-
-static ECellTextClass *parent_class;
-
-static char *
-ecn_get_text(ECellText *cell, ETableModel *model, int col, int row)
-{
- return e_format_number(GPOINTER_TO_INT (e_table_model_value_at(model, col, row)));
-}
-
-static void
-ecn_free_text(ECellText *cell, char *text)
-{
- g_free(text);
-}
-
-static void
-e_cell_number_class_init (GtkObjectClass *object_class)
-{
- ECellTextClass *ectc = (ECellTextClass *) object_class;
-
- parent_class = gtk_type_class (PARENT_TYPE);
-
- ectc->get_text = ecn_get_text;
- ectc->free_text = ecn_free_text;
-}
-
-static void
-e_cell_number_init (GtkObject *object)
-{
-}
-
-/**
- * e_cell_number_new:
- * @fontname: font to be used to render on the screen
- * @justify: Justification of the string in the cell.
- *
- * Creates a new ECell renderer that can be used to render numbers that
- * that come from the model. The value returned from the model is
- * interpreted as being an int.
- *
- * See ECellText for other features.
- *
- * Returns: an ECell object that can be used to render numbers.
- */
-ECell *
-e_cell_number_new (const char *fontname, GtkJustification justify)
-{
- ECellNumber *ecn = gtk_type_new (e_cell_number_get_type ());
-
- e_cell_text_construct(E_CELL_TEXT(ecn), fontname, justify);
-
- return (ECell *) ecn;
-}
-
-E_MAKE_TYPE(e_cell_number, "ECellNumber", ECellNumber, e_cell_number_class_init, e_cell_number_init, PARENT_TYPE);
diff --git a/widgets/table/e-cell-number.h b/widgets/table/e-cell-number.h
deleted file mode 100644
index b9124bb2b0..0000000000
--- a/widgets/table/e-cell-number.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* ECellNumber - Number item for e-table.
- * Copyright (C) 2001 Ximian, Inc.
- * Author: Chris Lahey <clahey@ximian.com>
- */
-#ifndef _E_CELL_NUMBER_H_
-#define _E_CELL_NUMBER_H_
-
-#include <gal/e-table/e-cell-text.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_CELL_NUMBER_TYPE (e_cell_number_get_type ())
-#define E_CELL_NUMBER(o) (GTK_CHECK_CAST ((o), E_CELL_NUMBER_TYPE, ECellNumber))
-#define E_CELL_NUMBER_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_CELL_NUMBER_TYPE, ECellNumberClass))
-#define E_IS_CELL_NUMBER(o) (GTK_CHECK_TYPE ((o), E_CELL_NUMBER_TYPE))
-#define E_IS_CELL_NUMBER_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_CELL_NUMBER_TYPE))
-
-typedef struct {
- ECellText base;
-} ECellNumber;
-
-typedef struct {
- ECellTextClass parent_class;
-} ECellNumberClass;
-
-GtkType e_cell_number_get_type (void);
-ECell *e_cell_number_new (const char *fontname, GtkJustification justify);
-
-END_GNOME_DECLS
-
-#endif /* _E_CELL_NUMBER_H_ */
diff --git a/widgets/table/e-cell-pixbuf.c b/widgets/table/e-cell-pixbuf.c
deleted file mode 100644
index 9b829fbc0b..0000000000
--- a/widgets/table/e-cell-pixbuf.c
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * e-cell-pixbuf.c: An ECell that displays a GdkPixbuf
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Vladimir Vukicevic <vladimir@ximian.com>
- *
- */
-
-#include <stdio.h>
-#include <libgnomeui/gnome-canvas.h>
-#include "e-cell-pixbuf.h"
-
-static ECellClass *parent_class;
-
-typedef struct _ECellPixbufView ECellPixbufView;
-
-struct _ECellPixbufView {
- ECellView cell_view;
- GdkGC *gc;
- GnomeCanvas *canvas;
-};
-
-/*
- * ECellPixbuf functions
- */
-
-ECell *
-e_cell_pixbuf_new (void)
-{
- ECellPixbuf *ecp;
-
- ecp = gtk_type_new (E_CELL_PIXBUF_TYPE);
- e_cell_pixbuf_construct (ecp);
-
- return (ECell *) ecp;
-}
-
-void
-e_cell_pixbuf_construct (ECellPixbuf *ecp)
-{
- /* noop */
- return;
-}
-
-/*
- * ECell methods
- */
-
-static ECellView *
-pixbuf_new_view (ECell *ecell, ETableModel *table_model, void *e_table_item_view)
-{
- ECellPixbufView *pixbuf_view = g_new0 (ECellPixbufView, 1);
- ETableItem *eti = E_TABLE_ITEM (e_table_item_view);
- GnomeCanvas *canvas = GNOME_CANVAS_ITEM (eti)->canvas;
-
- pixbuf_view->cell_view.ecell = ecell;
- pixbuf_view->cell_view.e_table_model = table_model;
- pixbuf_view->cell_view.e_table_item_view = e_table_item_view;
- pixbuf_view->canvas = canvas;
-
- return (ECellView *) pixbuf_view;
-}
-
-static void
-pixbuf_kill_view (ECellView *ecell_view)
-{
- ECellPixbufView *pixbuf_view = (ECellPixbufView *) ecell_view;
-
- g_free (pixbuf_view);
-}
-
-static void
-pixbuf_realize (ECellView *ecell_view)
-{
- ECellPixbufView *pixbuf_view = (ECellPixbufView *) ecell_view;
-
- pixbuf_view->gc = gdk_gc_new (GTK_WIDGET (pixbuf_view->canvas)->window);
-}
-
-static void
-pixbuf_unrealize (ECellView *ecell_view)
-{
- ECellPixbufView *pixbuf_view = (ECellPixbufView *) ecell_view;
-
- gdk_gc_unref (pixbuf_view->gc);
-}
-
-static void
-pixbuf_draw (ECellView *ecell_view, GdkDrawable *drawable,
- int model_col, int view_col, int row, ECellFlags flags,
- int x1, int y1, int x2, int y2)
-{
- ECellPixbufView *pixbuf_view = (ECellPixbufView *) ecell_view;
- GdkPixbuf *cell_pixbuf;
- int real_x, real_y, real_w, real_h;
- int pix_w, pix_h;
-
- cell_pixbuf = (GdkPixbuf *) e_table_model_value_at (ecell_view->e_table_model,
- model_col, row);
- /* we can't make sure we really got a pixbuf since, well, it's a Gdk thing */
-
- if (x2 - x1 == 0)
- return;
-
- pix_w = gdk_pixbuf_get_width (cell_pixbuf);
- pix_h = gdk_pixbuf_get_height (cell_pixbuf);
-
- /* We center the pixbuf within our allocated space */
- if (x2 - x1 > pix_w) {
- int diff = (x2 - x1) - pix_w;
- real_x = x1 + diff/2;
- real_w = pix_w;
- } else {
- real_x = x1;
- real_w = x2 - x1;
- }
-
- if (y2 - y1 > pix_h) {
- int diff = (y2 - y1) - pix_h;
- real_y = y1 + diff/2;
- real_h = pix_h;
- } else {
- real_y = y1;
- real_h = y2 - y1;
- }
-
-
- gdk_pixbuf_render_to_drawable (cell_pixbuf,
- drawable,
- pixbuf_view->gc,
- 0, 0,
- real_x, real_y,
- real_w, real_h,
- GDK_RGB_DITHER_NORMAL,
- 0, 0);
-}
-
-static gint
-pixbuf_event (ECellView *ecell_view, GdkEvent *event,
- int model_col, int view_col, int row,
- ECellFlags flags, ECellActions *actions)
-{
- /* noop */
-
- return FALSE;
-}
-
-static gint
-pixbuf_height (ECellView *ecell_view, int model_col, int view_col, int row)
-{
- GdkPixbuf *pixbuf;
-
- pixbuf = (GdkPixbuf *) e_table_model_value_at (ecell_view->e_table_model, model_col, row);
- if (!pixbuf) {
- /* ??? */
- g_warning ("e-cell-pixbuf: height with NULL pixbuf at %d %d %d\n", model_col, view_col, row);
- return 0;
- }
-
- /* We give ourselves 3 pixels of padding on either side */
- return gdk_pixbuf_get_height (pixbuf) + 6;
-}
-
-static gint
-pixbuf_max_width (ECellView *ecell_view, int model_col, int view_col)
-{
- gint num_rows, i;
- gint max_width = -1;
-
- if (model_col == 0) {
- num_rows = e_table_model_row_count (ecell_view->e_table_model);
-
- for (i = 0; i <= num_rows; i++) {
- GdkPixbuf *pixbuf = (GdkPixbuf *) e_table_model_value_at
- (ecell_view->e_table_model,
- model_col,
- i);
- int pw = gdk_pixbuf_get_width (pixbuf);
- if (max_width < pw)
- max_width = pw;
- }
- } else {
- return -1;
- }
-
- return max_width;
-}
-
-static void
-pixbuf_destroy (GtkObject *object)
-{
- /* ... */
-}
-
-static void
-e_cell_pixbuf_init (GtkObject *object)
-{
- /* ... */
-}
-
-static void
-e_cell_pixbuf_class_init (GtkObjectClass *object_class)
-{
- ECellClass *ecc = (ECellClass *) object_class;
-
- object_class->destroy = pixbuf_destroy;
-
- ecc->new_view = pixbuf_new_view;
- ecc->kill_view = pixbuf_kill_view;
- ecc->realize = pixbuf_realize;
- ecc->unrealize = pixbuf_unrealize;
- ecc->draw = pixbuf_draw;
- ecc->event = pixbuf_event;
- ecc->height = pixbuf_height;
- ecc->max_width = pixbuf_max_width;
-
- parent_class = gtk_type_class (E_CELL_TYPE);
-}
-
-guint
-e_cell_pixbuf_get_type (void)
-{
- static guint type = 0;
-
- if (!type) {
- GtkTypeInfo type_info = {
- "ECellPixbuf",
- sizeof (ECellPixbuf),
- sizeof (ECellPixbufClass),
- (GtkClassInitFunc) e_cell_pixbuf_class_init,
- (GtkObjectInitFunc) e_cell_pixbuf_init,
- (GtkArgSetFunc) NULL,
- (GtkArgGetFunc) NULL,
- };
-
- type = gtk_type_unique (e_cell_get_type (), &type_info);
- }
-
- return type;
-}
-
diff --git a/widgets/table/e-cell-pixbuf.h b/widgets/table/e-cell-pixbuf.h
deleted file mode 100644
index 4bb009b655..0000000000
--- a/widgets/table/e-cell-pixbuf.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * e-cell-pixbuf.h: An ECell that displays a GdkPixbuf
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Vladimir Vukicevic <vladimir@ximian.com>
- *
- */
-
-#ifndef _E_CELL_PIXBUF_H_
-#define _E_CELL_PIXBUF_H_
-
-#include <gal/e-table/e-table.h>
-
-#define E_CELL_PIXBUF_TYPE (e_cell_pixbuf_get_type ())
-#define E_CELL_PIXBUF(o) (GTK_CHECK_CAST ((o), E_CELL_PIXBUF_TYPE, ECellPixbuf))
-#define E_CELL_PIXBUF_CLASS(k) (GTK_CHECK_CAST_CLASS ((k), E_CELL_PIXBUF_TYPE, ECellPixbufClass))
-#define E_IS_CELL_PIXBUF(o) (GTK_CHECK_TYPE ((o), E_CELL_PIXBUF_TYPE))
-#define E_IS_CELL_PIXBUF_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_CELL_PIXBUF_TYPE))
-
-typedef struct _ECellPixbuf ECellPixbuf;
-typedef struct _ECellPixbufClass ECellPixbufClass;
-
-struct _ECellPixbuf {
- ECell parent;
-};
-
-struct _ECellPixbufClass {
- ECellClass parent_class;
-};
-
-GtkType e_cell_pixbuf_get_type (void);
-ECell *e_cell_pixbuf_new (void);
-void e_cell_pixbuf_construct (ECellPixbuf *ecp);
-
-#endif
diff --git a/widgets/table/e-cell-popup.c b/widgets/table/e-cell-popup.c
deleted file mode 100644
index 224227e209..0000000000
--- a/widgets/table/e-cell-popup.c
+++ /dev/null
@@ -1,504 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 2001, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * ECellPopup - an abstract ECell class used to support popup selections like
- * a GtkCombo widget. It contains a child ECell, e.g. an ECellText, but when
- * selected it displays an arrow on the right edge which the user can click to
- * show a popup. Subclasses implement the popup class function to show the
- * popup.
- */
-
-#include <config.h>
-#include <gdk/gdkkeysyms.h>
-#include "gal/util/e-util.h"
-#include "e-table-item.h"
-#include "e-cell-popup.h"
-
-
-#define E_CELL_POPUP_ARROW_WIDTH 16
-#define E_CELL_POPUP_ARROW_XPAD 3
-#define E_CELL_POPUP_ARROW_YPAD 3
-
-
-static void e_cell_popup_class_init (GtkObjectClass *object_class);
-static void e_cell_popup_init (ECellPopup *ecp);
-static void e_cell_popup_destroy (GtkObject *object);
-
-
-static ECellView* ecp_new_view (ECell *ecell,
- ETableModel *table_model,
- void *e_table_item_view);
-static void ecp_kill_view (ECellView *ecv);
-static void ecp_realize (ECellView *ecv);
-static void ecp_unrealize (ECellView *ecv);
-static void ecp_draw (ECellView *ecv,
- GdkDrawable *drawable,
- int model_col,
- int view_col,
- int row,
- ECellFlags flags,
- int x1,
- int y1,
- int x2,
- int y2);
-static gint ecp_event (ECellView *ecv,
- GdkEvent *event,
- int model_col,
- int view_col,
- int row,
- ECellFlags flags,
- ECellActions *actions);
-static int ecp_height (ECellView *ecv,
- int model_col,
- int view_col,
- int row);
-static void* ecp_enter_edit (ECellView *ecv,
- int model_col,
- int view_col,
- int row);
-static void ecp_leave_edit (ECellView *ecv,
- int model_col,
- int view_col,
- int row,
- void *edit_context);
-static void ecp_print (ECellView *ecv,
- GnomePrintContext *context,
- int model_col,
- int view_col,
- int row,
- double width,
- double height);
-static gdouble ecp_print_height (ECellView *ecv,
- GnomePrintContext *context,
- int model_col,
- int view_col,
- int row,
- double width);
-static int ecp_max_width (ECellView *ecv,
- int model_col,
- int view_col);
-static void ecp_show_tooltip (ECellView *ecv,
- int model_col,
- int view_col,
- int row,
- int col_width,
- ETableTooltip *tooltip);
-
-static gint e_cell_popup_do_popup (ECellPopupView *ecp_view,
- GdkEvent *event);
-
-static ECellClass *parent_class;
-
-
-E_MAKE_TYPE (e_cell_popup, "ECellPopup", ECellPopup, e_cell_popup_class_init,
- e_cell_popup_init, e_cell_get_type());
-
-
-static void
-e_cell_popup_class_init (GtkObjectClass *object_class)
-{
- ECellClass *ecc = (ECellClass *) object_class;
-
- object_class->destroy = e_cell_popup_destroy;
-
- ecc->new_view = ecp_new_view;
- ecc->kill_view = ecp_kill_view;
- ecc->realize = ecp_realize;
- ecc->unrealize = ecp_unrealize;
- ecc->draw = ecp_draw;
- ecc->event = ecp_event;
- ecc->height = ecp_height;
- ecc->enter_edit = ecp_enter_edit;
- ecc->leave_edit = ecp_leave_edit;
- ecc->print = ecp_print;
- ecc->print_height = ecp_print_height;
- ecc->max_width = ecp_max_width;
- ecc->show_tooltip = ecp_show_tooltip;
-
- parent_class = gtk_type_class (e_cell_get_type ());
-}
-
-
-static void
-e_cell_popup_init (ECellPopup *ecp)
-{
- ecp->popup_shown = FALSE;
-}
-
-
-/**
- * e_cell_popup_new:
- *
- * Creates a new ECellPopup renderer.
- *
- * Returns: an ECellPopup object.
- */
-ECell *
-e_cell_popup_new (void)
-{
- ECellPopup *ecp = gtk_type_new (e_cell_popup_get_type ());
-
- return (ECell*) ecp;
-}
-
-
-/*
- * GtkObject::destroy method
- */
-static void
-e_cell_popup_destroy (GtkObject *object)
-{
- ECellPopup *ecp = E_CELL_POPUP (object);
-
- gtk_object_unref (GTK_OBJECT (ecp->child));
-
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
-}
-
-
-
-/*
- * ECell::new_view method
- */
-static ECellView *
-ecp_new_view (ECell *ecell, ETableModel *table_model, void *e_table_item_view)
-{
- ECellPopup *ecp = E_CELL_POPUP (ecell);
- ECellPopupView *ecp_view;
-
- /* We must have a child ECell before we create any views. */
- g_return_val_if_fail (ecp->child != NULL, NULL);
-
- ecp_view = g_new0 (ECellPopupView, 1);
-
- ecp_view->cell_view.ecell = ecell;
- ecp_view->cell_view.e_table_model = table_model;
- ecp_view->cell_view.e_table_item_view = e_table_item_view;
-
- ecp_view->child_view = e_cell_new_view (ecp->child, table_model,
- e_table_item_view);
-
- return (ECellView*) ecp_view;
-}
-
-
-/*
- * ECell::kill_view method
- */
-static void
-ecp_kill_view (ECellView *ecv)
-{
- ECellPopupView *ecp_view = (ECellPopupView *) ecv;
-
- if (ecp_view->child_view)
- e_cell_kill_view (ecp_view->child_view);
- g_free (ecp_view);
-}
-
-
-/*
- * ECell::realize method
- */
-static void
-ecp_realize (ECellView *ecv)
-{
- ECellPopupView *ecp_view = (ECellPopupView *) ecv;
-
- e_cell_realize (ecp_view->child_view);
-
- if (parent_class->realize)
- (* parent_class->realize) (ecv);
-}
-
-
-/*
- * ECell::unrealize method
- */
-static void
-ecp_unrealize (ECellView *ecv)
-{
- ECellPopupView *ecp_view = (ECellPopupView *) ecv;
-
- e_cell_unrealize (ecp_view->child_view);
-
- if (parent_class->unrealize)
- (* parent_class->unrealize) (ecv);
-}
-
-
-/*
- * ECell::draw method
- */
-static void
-ecp_draw (ECellView *ecv, GdkDrawable *drawable,
- int model_col, int view_col, int row, ECellFlags flags,
- int x1, int y1, int x2, int y2)
-{
- ECellPopup *ecp = E_CELL_POPUP (ecv->ecell);
- ETableItem *eti = E_TABLE_ITEM (ecv->e_table_item_view);
- ECellPopupView *ecp_view = (ECellPopupView *) ecv;
- GtkWidget *canvas = GTK_WIDGET (GNOME_CANVAS_ITEM (ecv->e_table_item_view)->canvas);
- GtkShadowType shadow;
- GdkRectangle rect;
- gboolean show_popup_arrow = FALSE;
-
- /* Display the popup arrow if we are editing this cell, or the popup
- is shown for this cell. */
- if (eti->editing_col == view_col && eti->editing_row == row) {
- show_popup_arrow = TRUE;
- ecp->popup_arrow_shown = TRUE;
-
- } else if (ecp->popup_shown && ecp->popup_view_col == view_col
- && ecp->popup_row == row) {
- show_popup_arrow = TRUE;
- }
-
- if (eti->editing_col == -1)
- ecp->popup_arrow_shown = FALSE;
-
-#if 0
- g_print ("In ecp_draw row:%i col: %i %i,%i %i,%i Show Arrow:%i\n",
- row, view_col, x1, y1, x2, y2, show_popup_arrow);
-#endif
-
- if (show_popup_arrow) {
- e_cell_draw (ecp_view->child_view, drawable, model_col,
- view_col, row, flags,
- x1, y1, x2 - E_CELL_POPUP_ARROW_WIDTH, y2);
-
- rect.x = x2 - E_CELL_POPUP_ARROW_WIDTH;
- rect.y = y1 + 1;
- rect.width = E_CELL_POPUP_ARROW_WIDTH;
- rect.height = y2 - y1 - 2;
-
- if (ecp->popup_shown)
- shadow = GTK_SHADOW_IN;
- else
- shadow = GTK_SHADOW_OUT;
-
- gtk_paint_box (canvas->style, drawable,
- GTK_STATE_NORMAL, shadow,
- &rect, canvas, "ecellpopup",
- rect.x, rect.y, rect.width, rect.height);
- gtk_paint_arrow (canvas->style, drawable,
- GTK_STATE_NORMAL, shadow,
- &rect, canvas, NULL,
- GTK_ARROW_DOWN, TRUE,
- rect.x + E_CELL_POPUP_ARROW_XPAD,
- rect.y + E_CELL_POPUP_ARROW_YPAD,
- rect.width - E_CELL_POPUP_ARROW_XPAD * 2,
- rect.height - E_CELL_POPUP_ARROW_YPAD * 2);
- } else {
- e_cell_draw (ecp_view->child_view, drawable, model_col,
- view_col, row, flags, x1, y1, x2, y2);
- }
-}
-
-
-/*
- * ECell::event method
- */
-static gint
-ecp_event (ECellView *ecv, GdkEvent *event, int model_col, int view_col,
- int row, ECellFlags flags, ECellActions *actions)
-{
- ECellPopupView *ecp_view = (ECellPopupView *) ecv;
- ECellPopup *ecp = E_CELL_POPUP (ecp_view->cell_view.ecell);
- ETableItem *eti = E_TABLE_ITEM (ecv->e_table_item_view);
- int width;
-
- switch (event->type) {
- case GDK_BUTTON_PRESS:
- if (eti->editing_col == view_col && eti->editing_row == row
- && ecp->popup_arrow_shown) {
- width = e_table_header_col_diff (eti->header, view_col,
- view_col + 1);
-
- g_print ("Event in item popup width: %i button: %g,%g\n",
- width, event->button.x, event->button.y);
-
- /* FIXME: The event coords seem to be relative to the
- text within the cell, so we have to add 4. */
- if (event->button.x + 4 >= width - E_CELL_POPUP_ARROW_WIDTH) {
- return e_cell_popup_do_popup (ecp_view, event);
- }
- }
- break;
- case GDK_BUTTON_RELEASE:
- break;
- case GDK_KEY_PRESS:
- if (event->key.state & GDK_MOD1_MASK
- && event->key.keyval == GDK_Down) {
- g_print ("## Alt-Down pressed\n");
- return e_cell_popup_do_popup (ecp_view, event);
- }
- g_print ("Key Press Event ECellPopup\n");
- break;
- default:
- break;
- }
-
- return e_cell_event (ecp_view->child_view, event, model_col, view_col,
- row, flags, actions);
-}
-
-
-/*
- * ECell::height method
- */
-static int
-ecp_height (ECellView *ecv, int model_col, int view_col, int row)
-{
- ECellPopupView *ecp_view = (ECellPopupView *) ecv;
-
- return e_cell_height (ecp_view->child_view, model_col, view_col, row);
-}
-
-
-/*
- * ECellView::enter_edit method
- */
-static void *
-ecp_enter_edit (ECellView *ecv, int model_col, int view_col, int row)
-{
- ECellPopupView *ecp_view = (ECellPopupView *) ecv;
- ECellPopup *ecp = E_CELL_POPUP (ecp_view->cell_view.ecell);
-
- g_print ("In ecp_enter_edit model_col: %i view_col: %i row: %i\n",
- model_col, view_col, row);
-
- if (ecp->popup_view_col != view_col || ecp->popup_row != row)
- ecp->popup_arrow_shown = FALSE;
-
- ecp->popup_view_col = view_col;
- ecp->popup_row = row;
-
- return e_cell_enter_edit (ecp_view->child_view, model_col, view_col, row);
-}
-
-
-/*
- * ECellView::leave_edit method
- */
-static void
-ecp_leave_edit (ECellView *ecv, int model_col, int view_col, int row,
- void *edit_context)
-{
- ECellPopupView *ecp_view = (ECellPopupView *) ecv;
-
- g_print ("In ecp_leave_edit model_col: %i view_col: %i row: %i\n",
- model_col, view_col, row);
-
- e_cell_leave_edit (ecp_view->child_view, model_col, view_col, row,
- edit_context);
-}
-
-
-static void
-ecp_print (ECellView *ecv, GnomePrintContext *context,
- int model_col, int view_col, int row, double width, double height)
-{
- ECellPopupView *ecp_view = (ECellPopupView *) ecv;
-
- e_cell_print (ecp_view->child_view, context, model_col, view_col, row,
- width, height);
-}
-
-
-static gdouble
-ecp_print_height (ECellView *ecv, GnomePrintContext *context,
- int model_col, int view_col, int row,
- double width)
-{
- ECellPopupView *ecp_view = (ECellPopupView *) ecv;
-
- return e_cell_print_height (ecp_view->child_view, context, model_col,
- view_col, row, width);
-}
-
-
-static int
-ecp_max_width (ECellView *ecv,
- int model_col,
- int view_col)
-{
- ECellPopupView *ecp_view = (ECellPopupView *) ecv;
-
- return e_cell_max_width (ecp_view->child_view, model_col, view_col);
-}
-
-
-static void
-ecp_show_tooltip (ECellView *ecv,
- int model_col,
- int view_col,
- int row,
- int col_width,
- ETableTooltip *tooltip)
-{
- ECellPopupView *ecp_view = (ECellPopupView *) ecv;
-
- e_cell_show_tooltip (ecp_view->child_view, model_col, view_col, row,
- col_width, tooltip);
-}
-
-
-
-ECell*
-e_cell_popup_get_child (ECellPopup *ecp)
-{
- g_return_val_if_fail (E_IS_CELL_POPUP (ecp), NULL);
-
- return ecp->child;
-}
-
-
-void
-e_cell_popup_set_child (ECellPopup *ecp,
- ECell *child)
-{
- g_return_if_fail (E_IS_CELL_POPUP (ecp));
-
- if (ecp->child)
- gtk_object_unref (GTK_OBJECT (ecp->child));
-
- ecp->child = child;
- gtk_object_ref (GTK_OBJECT (child));
-}
-
-
-static gint
-e_cell_popup_do_popup (ECellPopupView *ecp_view,
- GdkEvent *event)
-{
- ECellPopup *ecp = E_CELL_POPUP (ecp_view->cell_view.ecell);
- gint (*popup_func) (ECellPopup *ecp, GdkEvent *event);
-
- ecp->popup_cell_view = ecp_view;
-
- popup_func = E_CELL_POPUP_CLASS (GTK_OBJECT (ecp)->klass)->popup;
-
- return popup_func ? popup_func (ecp, event) : FALSE;
-}
diff --git a/widgets/table/e-cell-popup.h b/widgets/table/e-cell-popup.h
deleted file mode 100644
index 2ccfd730ae..0000000000
--- a/widgets/table/e-cell-popup.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * Author :
- * Damon Chaplin <damon@ximian.com>
- *
- * Copyright 2001, Ximian, Inc.
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-/*
- * ECellPopup - an ECell used to support popup selections like a GtkCombo
- * widget. It contains a child ECell, e.g. an ECellText, but when selected it
- * displays an arrow on the right edge which the user can click to show a
- * popup. It will support subclassing or signals so that different types of
- * popup can be provided.
- */
-
-#ifndef _E_CELL_POPUP_H_
-#define _E_CELL_POPUP_H_
-
-#include <libgnomeui/gnome-canvas.h>
-#include <gal/e-table/e-cell.h>
-
-#define E_CELL_POPUP_TYPE (e_cell_popup_get_type ())
-#define E_CELL_POPUP(o) (GTK_CHECK_CAST ((o), E_CELL_POPUP_TYPE, ECellPopup))
-#define E_CELL_POPUP_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_CELL_POPUP_TYPE, ECellPopupClass))
-#define E_IS_CELL_POPUP(o) (GTK_CHECK_TYPE ((o), E_CELL_POPUP_TYPE))
-#define E_IS_CELL_POPUP_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_CELL_POPUP_TYPE))
-
-typedef struct _ECellPopupView ECellPopupView;
-
-typedef struct {
- ECell parent;
-
- ECell *child;
-
- /* This is TRUE if the popup window is shown for the cell being
- edited. While shown we display the arrow indented. */
- gboolean popup_shown;
-
- /* This is TRUE if the popup arrow is shown for the cell being edited.
- This is needed to stop the first click on the cell from popping up
- the popup window. We only popup the window after we have drawn the
- arrow. */
- gboolean popup_arrow_shown;
-
- /* The view in which the popup is shown. */
- ECellPopupView *popup_cell_view;
-
- gint popup_view_col;
- gint popup_row;
-} ECellPopup;
-
-
-typedef struct {
- ECellClass parent_class;
-
- /* Virtual function for subclasses to override. */
- gint (*popup) (ECellPopup *ecp, GdkEvent *event);
-} ECellPopupClass;
-
-
-struct _ECellPopupView {
- ECellView cell_view;
-
- ECellView *child_view;
-};
-
-
-GtkType e_cell_popup_get_type (void);
-ECell *e_cell_popup_new (void);
-
-/* Get and set the child ECell. */
-ECell *e_cell_popup_get_child (ECellPopup *ecp);
-void e_cell_popup_set_child (ECellPopup *ecp,
- ECell *child);
-
-#endif /* _E_CELL_POPUP_H_ */
diff --git a/widgets/table/e-cell-size.c b/widgets/table/e-cell-size.c
deleted file mode 100644
index 09133d9dff..0000000000
--- a/widgets/table/e-cell-size.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* ECellSize - Size item for e-table.
- * Copyright (C) 2001 Ximian, Inc.
- * Author: Chris Lahey <clahey@ximian.com>
- */
-
-#include <config.h>
-#include <sys/time.h>
-#include <unistd.h>
-#include <gal/util/e-util.h>
-#include "e-cell-size.h"
-
-#define PARENT_TYPE e_cell_text_get_type ()
-
-static ECellTextClass *parent_class;
-
-static char *
-ecd_get_text(ECellText *cell, ETableModel *model, int col, int row)
-{
- gint size = GPOINTER_TO_INT(e_table_model_value_at(model, col, row));
- gfloat fsize;
-
- if (size < 1024) {
- return g_strdup_printf ("%d", size);
- } else {
- fsize = ((gfloat) size) / 1024.0;
- if (fsize < 1024.0) {
- return g_strdup_printf ("%.2f K", fsize);
- } else {
- fsize /= 1024.0;
- return g_strdup_printf ("%.2f M", fsize);
- }
- }
-}
-
-static void
-ecd_free_text(ECellText *cell, char *text)
-{
- g_free(text);
-}
-
-static void
-e_cell_size_class_init (GtkObjectClass *object_class)
-{
- ECellTextClass *ectc = (ECellTextClass *) object_class;
-
- parent_class = gtk_type_class (PARENT_TYPE);
-
- ectc->get_text = ecd_get_text;
- ectc->free_text = ecd_free_text;
-}
-
-static void
-e_cell_size_init (GtkObject *object)
-{
-}
-
-/**
- * e_cell_size_new:
- * @fontname: font to be used to render on the screen
- * @justify: Justification of the string in the cell.
- *
- * Creates a new ECell renderer that can be used to render file sizes
- * that that come from the model. The value returned from the model
- * is interpreted as being a time_t.
- *
- * The ECellSize object support a large set of properties that can be
- * configured through the Gtk argument system and allows the user to have
- * a finer control of the way the string is displayed. The arguments supported
- * allow the control of strikeout, bold, color and a size filter.
- *
- * The arguments "strikeout_column", "bold_column" and "color_column" set
- * and return an integer that points to a column in the model that controls
- * these settings. So controlling the way things are rendered is achieved
- * by having special columns in the model that will be used to flag whether
- * the size should be rendered with strikeout, or bolded. In the case of
- * the "color_column" argument, the column in the model is expected to have
- * a string that can be parsed by gdk_color_parse().
- *
- * Returns: an ECell object that can be used to render file sizes. */
-ECell *
-e_cell_size_new (const char *fontname, GtkJustification justify)
-{
- ECellSize *ecd = gtk_type_new (e_cell_size_get_type ());
-
- e_cell_text_construct(E_CELL_TEXT(ecd), fontname, justify);
-
- return (ECell *) ecd;
-}
-
-E_MAKE_TYPE(e_cell_size, "ECellSize", ECellSize, e_cell_size_class_init, e_cell_size_init, PARENT_TYPE);
diff --git a/widgets/table/e-cell-size.h b/widgets/table/e-cell-size.h
deleted file mode 100644
index db976a4eb6..0000000000
--- a/widgets/table/e-cell-size.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* ECellSize - Size item for e-table.
- * Copyright (C) 2001 Ximian, Inc.
- * Author: Chris Lahey <clahey@ximian.com>
- */
-#ifndef _E_CELL_SIZE_H_
-#define _E_CELL_SIZE_H_
-
-#include <gal/e-table/e-cell-text.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_CELL_SIZE_TYPE (e_cell_size_get_type ())
-#define E_CELL_SIZE(o) (GTK_CHECK_CAST ((o), E_CELL_SIZE_TYPE, ECellSize))
-#define E_CELL_SIZE_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_CELL_SIZE_TYPE, ECellSizeClass))
-#define E_IS_CELL_SIZE(o) (GTK_CHECK_TYPE ((o), E_CELL_SIZE_TYPE))
-#define E_IS_CELL_SIZE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_CELL_SIZE_TYPE))
-
-typedef struct {
- ECellText base;
-} ECellSize;
-
-typedef struct {
- ECellTextClass parent_class;
-} ECellSizeClass;
-
-GtkType e_cell_size_get_type (void);
-ECell *e_cell_size_new (const char *fontname, GtkJustification justify);
-
-END_GNOME_DECLS
-
-#endif /* _E_CELL_SIZE_H_ */
diff --git a/widgets/table/e-cell-spin-button.c b/widgets/table/e-cell-spin-button.c
deleted file mode 100644
index ae28af3885..0000000000
--- a/widgets/table/e-cell-spin-button.c
+++ /dev/null
@@ -1,663 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2001 CodeFactory AB
- * Copyright (C) 2001 Mikael Hallendal <micke@codefactory.se>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Mikael Hallendal <micke@codefactory.se>
- *
- * Celltype for drawing a spinbutton in a cell.
- *
- * Used ECellPopup by Damon Chaplin <damon@ximian.com> as base for
- * buttondrawings.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gtk/gtksignal.h>
-#include <gal/e-table/e-table-item.h>
-#include <gal/e-table/e-table-model.h>
-#include <gal/e-table/e-cell-float.h>
-#include <gal/e-table/e-cell-number.h>
-#include <gal/util/e-util.h>
-#include "e-cell-spin-button.h"
-
-#define E_CELL_SPIN_BUTTON_ARROW_WIDTH 16
-#define PARENT_TYPE e_cell_get_type ()
-
-static void e_cell_spin_button_class_init (GtkObjectClass *klass);
-static void e_cell_spin_button_init (GtkObject *object);
-
-static void ecsb_destroy (GtkObject *object);
-
-/* ECell Functions */
-static ECellView * ecsb_new_view (ECell *ecell,
- ETableModel *etm,
- void *eti_view);
-static void ecsb_realize (ECellView *ecv);
-static void ecsb_kill_view (ECellView *ecv);
-static void ecsb_unrealize (ECellView *ecv);
-static void ecsb_draw (ECellView *ecv,
- GdkDrawable *drawable,
- int model_col,
- int view_col,
- int row,
- ECellFlags flags,
- int x1,
- int y1,
- int x2,
- int y2);
-
-static gint ecsb_event (ECellView *ecv,
- GdkEvent *event,
- int model_col,
- int view_col,
- int row,
- ECellFlags flags,
- ECellActions *actions);
-
-static gint ecsb_height (ECellView *ecv,
- int model_col,
- int view_col,
- int row);
-
-static void * ecsb_enter_edit (ECellView *ecv,
- int model_col,
- int view_col,
- int row);
-
-static void ecsb_leave_edit (ECellView *ecv,
- int model_col,
- int view_col,
- int row,
- void *context);
-static void ecsb_focus (ECellView *ecell_view,
- int model_col,
- int view_col,
- int row,
- int x1,
- int y1,
- int x2,
- int y2);
-static void ecsb_unfocus (ECellView *ecell_view);
-
-static void ecsb_show_tooltip (ECellView *ecv,
- int model_col,
- int view_col,
- int row,
- int col_width,
- ETableTooltip *tooltip);
-
-typedef struct {
- ECellView cell_view;
-
- ECellView *child_view;
-} ECellSpinButtonView;
-
-enum {
- STEP,
- LAST_SIGNAL
-};
-
-static gint signals[LAST_SIGNAL] = { 0 };
-static ECell *parent_class;
-
-static void
-e_cell_spin_button_class_init (GtkObjectClass *klass)
-{
- ECellClass *ecc = (ECellClass *) klass;
- ECellSpinButtonClass *ecsbc = (ECellSpinButtonClass *) klass;
-
- klass->destroy = ecsb_destroy;
-
- ecc->realize = ecsb_realize;
- ecc->unrealize = ecsb_unrealize;
- ecc->new_view = ecsb_new_view;
- ecc->kill_view = ecsb_kill_view;
- ecc->draw = ecsb_draw;
- ecc->event = ecsb_event;
- ecc->height = ecsb_height;
- ecc->enter_edit = ecsb_enter_edit;
- ecc->leave_edit = ecsb_leave_edit;
- ecc->focus = ecsb_focus;
- ecc->unfocus = ecsb_unfocus; ecc->print = NULL;
- ecc->print_height = NULL;
- ecc->max_width = NULL;
- ecc->show_tooltip = ecsb_show_tooltip;
-
- ecsbc->step = NULL;
-
- parent_class = gtk_type_class (E_CELL_TYPE);
-
- signals[STEP] =
- gtk_signal_new ("step",
- GTK_RUN_LAST,
- klass->type,
- GTK_SIGNAL_OFFSET (ECellSpinButtonClass, step),
- e_marshal_NONE__POINTER_INT_INT_INT,
- GTK_TYPE_NONE,
- 4, GTK_TYPE_POINTER, GTK_TYPE_INT,
- GTK_TYPE_INT, GTK_TYPE_INT);
-
- gtk_object_class_add_signals (klass, signals, LAST_SIGNAL);
-}
-
-static void
-e_cell_spin_button_init (GtkObject *object)
-{
- ECellSpinButton *ecsb;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (M_IS_CELL_SPIN_BUTTON (object));
-
- ecsb = E_CELL_SPIN_BUTTON (object);
-
- ecsb->up_pressed = FALSE;
- ecsb->down_pressed = FALSE;
-}
-
-static ECellView *
-ecsb_new_view (ECell *ecell,
- ETableModel *etm,
- void *eti_view)
-{
- ECellSpinButton *ecsb = E_CELL_SPIN_BUTTON (ecell);
- ECellSpinButtonView *ecsb_view;
-
- g_return_val_if_fail (ecsb->child != NULL, NULL);
-
- ecsb_view = g_new0 (ECellSpinButtonView, 1);
-
- ecsb_view->cell_view.ecell = ecell;
- ecsb_view->cell_view.e_table_model = etm;
- ecsb_view->cell_view.e_table_item_view = eti_view;
-
- ecsb_view->child_view = e_cell_new_view (ecsb->child, etm, eti_view);
-
- return (ECellView *) ecsb_view;
-}
-
-static void
-ecsb_realize (ECellView *ecv)
-{
- ECellSpinButtonView *ecsb_view;
-
- g_return_if_fail (ecv != NULL);
-
- ecsb_view = (ECellSpinButtonView *) ecv;
-
- e_cell_realize (ecsb_view->child_view);
-}
-
-static void
-ecsb_kill_view (ECellView *ecv)
-{
- ECellSpinButtonView *ecsb_view;
-
- g_return_if_fail (ecv != NULL);
-
- ecsb_view = (ECellSpinButtonView *) ecv;
-
- if (ecsb_view->child_view) {
- e_cell_kill_view (ecsb_view->child_view);
- }
-
- g_free (ecsb_view);
-}
-
-static void
-ecsb_unrealize (ECellView *ecv)
-{
- ECellSpinButtonView *ecsb_view;
-
- g_return_if_fail (ecv != NULL);
-
- ecsb_view = (ECellSpinButtonView *) ecv;
-
- e_cell_unrealize (ecsb_view->child_view);
-}
-
-static void
-ecsb_draw (ECellView *ecv,
- GdkDrawable *drawable,
- int model_col,
- int view_col,
- int row,
- ECellFlags flags,
- int x1,
- int y1,
- int x2,
- int y2)
-{
- ECellSpinButton *ecsb;
- ECellSpinButtonView *ecsb_view;
- ETableItem *eti;
- GtkWidget *canvas;
- GtkShadowType shadow = GTK_SHADOW_OUT;
- GdkRectangle rect;
-
- g_return_if_fail (ecv != NULL);
-
- ecsb_view = (ECellSpinButtonView *) ecv;
- ecsb = E_CELL_SPIN_BUTTON (ecsb_view->cell_view.ecell);
-
- eti = E_TABLE_ITEM (ecsb_view->cell_view.e_table_item_view);
- canvas = GTK_WIDGET (GNOME_CANVAS_ITEM (eti)->canvas);
-
- if (eti->editing_col == view_col &&
- eti->editing_row == row) {
-
- /* Draw child (Whats shown under the buttons) */
- e_cell_draw (ecsb_view->child_view,
- drawable, model_col, view_col,
- row, flags,
- x1, y1,
- x2 - E_CELL_SPIN_BUTTON_ARROW_WIDTH, y2);
-
- /* Draw down-arrow */
- rect.x = x2 - E_CELL_SPIN_BUTTON_ARROW_WIDTH;
- rect.y = y1 + (y2 - y1) / 2;
- rect.width = E_CELL_SPIN_BUTTON_ARROW_WIDTH;
- rect.height = (y2 - y1) / 2;
-
- if (ecsb->down_pressed) {
- shadow = GTK_SHADOW_IN;
- } else {
- shadow = GTK_SHADOW_OUT;
- }
-
- gtk_paint_box (canvas->style, drawable,
- GTK_STATE_NORMAL, shadow,
- &rect, canvas, "ecellspinbutton_down",
- rect.x, rect.y, rect.width, rect.height);
-
- gtk_paint_arrow (canvas->style, drawable,
- GTK_STATE_NORMAL, shadow,
- &rect, canvas, NULL,
- GTK_ARROW_DOWN, TRUE,
- rect.x,
- rect.y,
- rect.width,
- rect.height);
-
- /* Draw up-arrow */
- rect.y = y1;
-
- if (ecsb->up_pressed) {
- shadow = GTK_SHADOW_IN;
- } else {
- shadow = GTK_SHADOW_OUT;
- }
-
- gtk_paint_box (canvas->style, drawable,
- GTK_STATE_NORMAL, shadow,
- &rect, canvas, "ecellspinbutton_up",
- rect.x, rect.y, rect.width, rect.height);
-
- gtk_paint_arrow (canvas->style, drawable,
- GTK_STATE_NORMAL, shadow,
- &rect, canvas, NULL,
- GTK_ARROW_UP, TRUE,
- rect.x,
- rect.y,
- rect.width,
- rect.height);
- } else {
- /* Draw child */
- e_cell_draw (ecsb_view->child_view,
- drawable, model_col, view_col,
- row, flags,
- x1, y1,
- x2, y2);
- }
-}
-
-static gint
-ecsb_event (ECellView *ecv,
- GdkEvent *event,
- int model_col,
- int view_col,
- int row,
- ECellFlags flags,
- ECellActions *actions)
-{
- ECellSpinButton *ecsb;
- ECellSpinButtonClass *ecsb_class;
- ECellSpinButtonView *ecsb_view;
- ETableItem *eti;
- gint height, width;
-
- g_return_val_if_fail (ecv != NULL, FALSE);
-
- ecsb_view = (ECellSpinButtonView *) ecv;
- ecsb = E_CELL_SPIN_BUTTON (ecsb_view->cell_view.ecell);
- ecsb_class = E_CELL_SPIN_BUTTON_CLASS (GTK_OBJECT(ecsb)->klass);
- eti = E_TABLE_ITEM (ecsb_view->cell_view.e_table_item_view);
-
- switch (event->type) {
- case GDK_BUTTON_PRESS:
- if (eti->editing_col == view_col &&
- eti->editing_row == row) {
- width = e_table_header_col_diff (eti->header,
- view_col,
- view_col + 1);
- height = e_table_item_row_diff (eti, row, row + 1);
-
- /* Check if inside a button */
- if (event->button.x >= width - E_CELL_SPIN_BUTTON_ARROW_WIDTH) {
- /* Yep, which one? */
- if (event->button.y <= height / 2) {
- ecsb->up_pressed = TRUE;
- gtk_signal_emit (GTK_OBJECT(ecsb),
- signals[STEP],
- ecv,
- STEP_UP,
- view_col,
- row);
- } else {
- ecsb->down_pressed = TRUE;
- gtk_signal_emit (GTK_OBJECT(ecsb),
- signals[STEP],
- ecv,
- STEP_DOWN,
- view_col,
- row);
- }
-
- e_table_item_redraw_range (eti,
- view_col,
- row,
- view_col,
- row);
-
- }
- }
-
- break;
- case GDK_BUTTON_RELEASE:
- ecsb->up_pressed = FALSE;
- ecsb->down_pressed = FALSE;
- e_table_item_redraw_range (eti,
- view_col,
- row,
- view_col,
- row);
- break;
- case GDK_KEY_PRESS:
- break;
- default:
- break;
- }
-
- return e_cell_event (ecsb_view->child_view, event, model_col,
- view_col, row, flags, actions);
-}
-
-static gint
-ecsb_height (ECellView *ecv,
- int model_col,
- int view_col,
- int row)
-{
- ECellSpinButtonView *ecsb_view;
-
- g_return_val_if_fail (ecv != NULL, -1);
-
- ecsb_view = (ECellSpinButtonView *) ecv;
-
- return e_cell_height (ecsb_view->child_view, model_col, view_col, row);
-}
-
-static void *
-ecsb_enter_edit (ECellView *ecv,
- int model_col,
- int view_col,
- int row)
-{
- ECellSpinButtonView *ecsb_view;
-
- g_return_val_if_fail (ecv != NULL, NULL);
-
- ecsb_view = (ECellSpinButtonView *) ecv;
-
- return e_cell_enter_edit (ecsb_view->child_view, model_col,
- view_col, row);
-}
-
-
-static void
-ecsb_leave_edit (ECellView *ecv,
- int model_col,
- int view_col,
- int row,
- void *context)
-{
- ECellSpinButtonView *ecsb_view;
-
- g_return_if_fail (ecv != NULL);
-
- ecsb_view = (ECellSpinButtonView *) ecv;
-
- e_cell_leave_edit (ecsb_view->child_view, model_col, view_col,
- row, context);
-}
-
-static void
-ecsb_focus (ECellView *ecell_view,
- int model_col,
- int view_col,
- int row,
- int x1,
- int y1,
- int x2,
- int y2)
-{
- ECellClass *klass;
- ECellSpinButtonView *ecsb_view;
-
- ecsb_view = (ECellSpinButtonView *) ecell_view;
-
- klass = E_CELL_CLASS (GTK_OBJECT (ecell_view->ecell)->klass);
-
- if (klass->focus) {
- klass->focus (ecell_view, model_col, view_col, row,
- x1, y1, x2, y2);
- }
-}
-
-static void
-ecsb_unfocus (ECellView *ecell_view)
-{
- ECellClass *klass;
- ECellSpinButtonView *ecsb_view;
-
- ecsb_view = (ECellSpinButtonView *) ecell_view;
- klass = E_CELL_CLASS (GTK_OBJECT (ecell_view->ecell)->klass);
-
- if (klass->unfocus) {
- klass->unfocus (ecell_view);
- }
-
-}
-
-static void
-ecsb_show_tooltip (ECellView *ecv,
- int model_col,
- int view_col,
- int row,
- int col_width,
- ETableTooltip *tooltip)
-{
- ECellSpinButtonView *ecsb_view;
-
- g_return_if_fail (ecv != NULL);
-
- ecsb_view = (ECellSpinButtonView *) ecv;
-
- e_cell_show_tooltip (ecsb_view->child_view, model_col, view_col,
- row, col_width, tooltip);
-}
-
-static void
-ecsb_destroy (GtkObject *object)
-{
- ECellSpinButton *mcsp;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (M_IS_CELL_SPIN_BUTTON (object));
-
- mcsp = E_CELL_SPIN_BUTTON (object);
-
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
-}
-
-ECell *
-e_cell_spin_button_new (gint min,
- gint max,
- gint step,
- ECell *child_cell)
-{
- ECellSpinButton *ecsb;
-
- ecsb = gtk_type_new (E_CELL_SPIN_BUTTON_TYPE);
-
- if (!child_cell) {
- child_cell = e_cell_number_new (NULL,
- GTK_JUSTIFY_LEFT);
-
- gtk_signal_connect (GTK_OBJECT (ecsb), "step",
- e_cell_spin_button_step,
- NULL);
- }
-
- ecsb->child = child_cell;
- ecsb->min.i = min;
- ecsb->max.i = max;
- ecsb->step.i = step;
-
- return E_CELL (ecsb);
-}
-
-ECell *
-e_cell_spin_button_new_float (gfloat min,
- gfloat max,
- gfloat step,
- ECell *child_cell)
-{
- ECellSpinButton *ecsb;
-
- ecsb = gtk_type_new (E_CELL_SPIN_BUTTON_TYPE);
-
- if (!child_cell) {
- child_cell = e_cell_float_new (NULL, GTK_JUSTIFY_LEFT);
- gtk_signal_connect (GTK_OBJECT (ecsb), "step",
- e_cell_spin_button_step_float,
- NULL);
- }
-
- ecsb->child = child_cell;
- ecsb->min.f = min;
- ecsb->max.f = max;
- ecsb->step.f = step;
-
- return E_CELL (ecsb);
-}
-
-void
-e_cell_spin_button_step (ECellSpinButton *ecsb,
- ECellView *ecv,
- ECellSpinButtonStep direction,
- gint col,
- gint row)
-{
- ECellSpinButtonView *ecsb_view;
-
- ETableModel *etm;
- gint value;
- gint new_value;
-
- g_return_if_fail (ecsb != NULL);
- g_return_if_fail (M_IS_CELL_SPIN_BUTTON (ecsb));
- g_return_if_fail (ecv != NULL);
-
- ecsb_view = (ECellSpinButtonView *) ecv;
- etm = ecsb_view->cell_view.e_table_model;
-
- value = GPOINTER_TO_INT (e_table_model_value_at (etm, col, row));
- new_value = value;
-
- switch (direction) {
- case STEP_UP:
- new_value = CLAMP (value + ecsb->step.i,
- ecsb->min.i, ecsb->max.i);
- break;
- case STEP_DOWN:
- new_value = CLAMP (value - ecsb->step.i,
- ecsb->min.i, ecsb->max.i);
- break;
- default:
- break;
- };
-
- e_table_model_set_value_at (etm, col, row, GINT_TO_POINTER(new_value));
-}
-
-void
-e_cell_spin_button_step_float (ECellSpinButton *ecsb,
- ECellView *ecv,
- ECellSpinButtonStep direction,
- gint col,
- gint row)
-{
- ECellSpinButtonView *ecsb_view;
-
- ETableModel *etm;
- gfloat value;
- gfloat new_value;
-
- g_return_if_fail (ecsb != NULL);
- g_return_if_fail (M_IS_CELL_SPIN_BUTTON (ecsb));
- g_return_if_fail (ecv != NULL);
-
- ecsb_view = (ECellSpinButtonView *) ecv;
- etm = ecsb_view->cell_view.e_table_model;
-
- value = *(gfloat *) e_table_model_value_at (etm, col, row);
-
- switch (direction) {
- case STEP_UP:
- new_value = CLAMP (value + ecsb->step.f,
- ecsb->min.f, ecsb->max.f);
- break;
- case STEP_DOWN:
- new_value = CLAMP (value - ecsb->step.f,
- ecsb->min.f, ecsb->max.f);
- break;
- default:
- break;
- };
-
- e_table_model_set_value_at (etm, col, row, &new_value);
-}
-
-E_MAKE_TYPE (e_cell_spin_button, "ECellSpinButton", ECellSpinButton,
- e_cell_spin_button_class_init, e_cell_spin_button_init,
- PARENT_TYPE);
-
diff --git a/widgets/table/e-cell-spin-button.h b/widgets/table/e-cell-spin-button.h
deleted file mode 100644
index e091b37e6c..0000000000
--- a/widgets/table/e-cell-spin-button.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2001 CodeFactory AB
- * Copyright (C) 2001 Mikael Hallendal <micke@codefactory.se>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Mikael Hallendal <micke@codefactory.se>
- */
-
-#ifndef __E_CELL_SPIN_BUTTON_H__
-#define __E_CELL_SPIN_BUTTON_H__
-
-#include <glib.h>
-#include <gtk/gtktypeutils.h>
-#include <gal/e-table/e-cell.h>
-
-#define E_CELL_SPIN_BUTTON_TYPE (e_cell_spin_button_get_type ())
-#define E_CELL_SPIN_BUTTON(o) (GTK_CHECK_CAST ((o), E_CELL_SPIN_BUTTON_TYPE, ECellSpinButton))
-#define E_CELL_SPIN_BUTTON_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_CELL_SPIN_BUTTON_TYPE, ECellSpinButtonClass))
-#define M_IS_CELL_SPIN_BUTTON(o) (GTK_CHECK_TYPE ((o), E_CELL_SPIN_BUTTON_TYPE))
-#define M_IS_CELL_SPIN_BUTTON_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_CELL_SPIN_BUTTON_TYPE))
-
-typedef union {
- gint i;
- gfloat f;
-} ECellSpinButtonData;
-
-typedef enum {
- STEP_UP,
- STEP_DOWN
-} ECellSpinButtonStep;
-
-typedef struct {
- ECell parent;
-
- ECell *child;
-
- ECellSpinButtonData min;
- ECellSpinButtonData max;
- ECellSpinButtonData step;
-
- gboolean up_pressed;
- gboolean down_pressed;
-
-} ECellSpinButton;
-
-typedef struct {
- ECellClass parent_class;
-
- /* Functions */
- void (*step) (ECellSpinButton *mcsb,
- ECellView *ecv,
- ECellSpinButtonStep direction,
- gint col,
- gint row);
-} ECellSpinButtonClass;
-
-GtkType e_cell_spin_button_get_type (void);
-ECell * e_cell_spin_button_new (gint min,
- gint max,
- gint step,
- ECell *child_cell);
-
-ECell * e_cell_spin_button_new_float (gfloat min,
- gfloat max,
- gfloat step,
- ECell *child_cell);
-
-
-void e_cell_spin_button_step (ECellSpinButton *mcsb,
- ECellView *ecv,
- ECellSpinButtonStep direction,
- gint col,
- gint row);
-
-void e_cell_spin_button_step_float (ECellSpinButton *mcsb,
- ECellView *ecv,
- ECellSpinButtonStep direction,
- gint col,
- gint row);
-
-#endif /* __E_CELL_SPIN_BUTTON__ */
-
diff --git a/widgets/table/e-cell-string.c b/widgets/table/e-cell-string.c
deleted file mode 100644
index 992b1bd10e..0000000000
--- a/widgets/table/e-cell-string.c
+++ /dev/null
@@ -1,9 +0,0 @@
-ECell *
-e_cell_string_new (void)
-{
- ECell *ecell;
-
- ecell = gtk_type_new (ecell);
-
- return ecell;
-}
diff --git a/widgets/table/e-cell-text.c b/widgets/table/e-cell-text.c
deleted file mode 100644
index 717c4d8abc..0000000000
--- a/widgets/table/e-cell-text.c
+++ /dev/null
@@ -1,2431 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* e-cell-text.c - Text cell renderer
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Authors: Miguel de Icaza <miguel@ximian.com>
- * Chris Lahey <clahey@ximian.com>
- *
- * (C) 1999, 2000 Ximian, Inc.
- *
- * A lot of code taken from:
- *
- * Text item type for GnomeCanvas widget
- *
- * GnomeCanvas is basically a port of the Tk toolkit's most excellent
- * canvas widget. Tk is copyrighted by the Regents of the University
- * of California, Sun Microsystems, and other parties.
- *
- * Copyright (C) 1998 The Free Software Foundation
- *
- * Author: Federico Mena <federico@nuclecu.unam.mx>
- *
- * TODO:
- * Clean up UTF-8 handling
- * UTF-8 selection
- */
-
-#include <config.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <math.h>
-#include <string.h>
-#include <gdk/gdkx.h> /* for BlackPixel */
-#include <gtk/gtkenums.h>
-#include <gtk/gtkentry.h>
-#include <gtk/gtkwindow.h>
-#include <gtk/gtkinvisible.h>
-#include <gtk/gtksignal.h>
-#include <gdk/gdkkeysyms.h>
-#include <libgnomeui/gnome-canvas.h>
-#include <libgnomeui/gnome-canvas-rect-ellipse.h>
-#include "e-cell-text.h"
-#include "gal/util/e-util.h"
-#include "gal/widgets/e-canvas.h"
-#include "gal/widgets/e-font.h"
-#include "gal/widgets/e-unicode.h"
-#include "e-table-item.h"
-#include "gal/util/e-text-event-processor.h"
-#include "gal/e-text/e-text.h"
-#include "gal/util/e-text-event-processor-emacs-like.h"
-#include "e-table-tooltip.h"
-
-
-#define ECT_CLASS(c) (E_CELL_TEXT_CLASS(GTK_OBJECT((c))->klass))
-
-/* This defines a line of text */
-struct line {
- char *text; /* Line's text UTF-8, it is a pointer into the text->text string */
- int length; /* Line's length in BYTES */
- int width; /* Line's width in pixels */
- int ellipsis_length; /* Length before adding ellipsis in BYTES */
-};
-
-/* Object argument IDs */
-enum {
- ARG_0,
-
- ARG_STRIKEOUT_COLUMN,
- ARG_BOLD_COLUMN,
- ARG_COLOR_COLUMN,
- ARG_EDITABLE,
-};
-
-
-enum {
- E_SELECTION_PRIMARY,
- E_SELECTION_CLIPBOARD
-};
-
-static GdkAtom clipboard_atom = GDK_NONE;
-
-#define PARENT_TYPE e_cell_get_type ()
-
-#define TEXT_PAD 4
-
-typedef struct {
- gpointer lines; /* Text split into lines (private field) */
- int num_lines; /* Number of lines of text */
- int max_width;
- int ref_count;
-} ECellTextLineBreaks;
-
-
-typedef struct _CellEdit CellEdit;
-
-typedef struct {
- ECellView cell_view;
- GdkGC *gc;
- EFont *font;
- GdkCursor *i_cursor;
- GdkBitmap *stipple; /* Stipple for text */
-
- GnomeCanvas *canvas;
-
- /*
- * During editing.
- */
- CellEdit *edit;
-
-
- int xofs, yofs; /* This gets added to the x
- and y for the cell text. */
- double ellipsis_width[2]; /* The width of the ellipsis. */
-
-} ECellTextView;
-
-typedef struct _CurrentCell{
- ECellTextView *text_view;
- int width;
- char *text;
- int model_col, view_col, row;
- ECellTextLineBreaks *breaks;
- EFontStyle style;
-} CurrentCell;
-
-#define CURRENT_CELL(x) ((CurrentCell *)(x))
-
-struct _CellEdit {
- CurrentCell cell;
-
- char *old_text;
-
- /*
- * Where the editing is taking place
- */
-
- int xofs_edit, yofs_edit; /* Offset because of editing.
- This is negative compared
- to the other offsets. */
-
- /* This needs to be reworked a bit once we get line wrapping. */
- int selection_start; /* Start of selection - IN BYTES */
- int selection_end; /* End of selection - IN BYTES */
- gboolean select_by_word; /* Current selection is by word */
-
- /* This section is for drag scrolling and blinking cursor. */
- /* Cursor handling. */
- gint timeout_id; /* Current timeout id for scrolling */
- GTimer *timer; /* Timer for blinking cursor and scrolling */
-
- gint lastx, lasty; /* Last x and y motion events */
- gint last_state; /* Last state */
- gulong scroll_start; /* Starting time for scroll (microseconds) */
-
- gint show_cursor; /* Is cursor currently shown */
- gboolean button_down; /* Is mouse button 1 down */
-
- ETextEventProcessor *tep; /* Text Event Processor */
-
- /* Hmmm... this should probably be in native encoding? */
-
- GtkWidget *invisible; /* For selection handling */
- gboolean has_selection; /* TRUE if we have the selection */
- gchar *primary_selection; /* Primary selection text */
- gint primary_length; /* Primary selection text length in BYTES */
- gchar *clipboard_selection; /* Clipboard selection text */
- gint clipboard_length; /* Clipboard selection text length in BYTES */
-
- guint pointer_in : 1;
- guint default_cursor_shown : 1;
-
- ECellActions actions;
-};
-
-static void e_cell_text_view_command (ETextEventProcessor *tep, ETextEventProcessorCommand *command, gpointer data);
-
-static void e_cell_text_view_get_selection (CellEdit *edit, GdkAtom selection, guint32 time);
-static void e_cell_text_view_supply_selection (CellEdit *edit, guint time, GdkAtom selection, char *data, gint length);
-
-static GtkWidget *e_cell_text_view_get_invisible (CellEdit *edit);
-static void _selection_clear_event (GtkInvisible *invisible,
- GdkEventSelection *event,
- CellEdit *edit);
-static void _selection_get (GtkInvisible *invisible,
- GtkSelectionData *selection_data,
- guint info,
- guint time_stamp,
- CellEdit *edit);
-static void _selection_received (GtkInvisible *invisible,
- GtkSelectionData *selection_data,
- guint time,
- CellEdit *edit);
-static int number_of_lines (char *text);
-static void split_into_lines (CurrentCell *cell);
-static void unref_lines (CurrentCell *cell);
-static void calc_line_widths (CurrentCell *cell);
-static int get_line_ypos (CurrentCell *cell, struct line *line);
-static int get_line_xpos (CurrentCell *cell, struct line *line);
-static void _get_tep (CellEdit *edit);
-
-static gint _get_position_from_xy (CurrentCell *cell, gint x, gint y);
-static void _get_xy_from_position (CurrentCell *cell, gint position, gint *xp, gint *yp);
-static gboolean _blink_scroll_timeout (gpointer data);
-
-static void build_current_cell (CurrentCell *cell, ECellTextView *text_view, int model_col, int view_col, int row);
-static void unbuild_current_cell (CurrentCell *cell);
-static void calc_ellipsis (ECellTextView *text_view);
-static void ect_free_color (gchar *color_spec, GdkColor *color, GdkColormap *colormap);
-static GdkColor* e_cell_text_get_color (ECellTextView *cell_view, gchar *color_spec);
-
-static ECellClass *parent_class;
-
-static char *
-ect_get_text (ECellText *cell, ETableModel *model, int col, int row)
-{
- if (ECT_CLASS(cell)->get_text)
- return ECT_CLASS(cell)->get_text (cell, model, col, row);
- else
- return NULL;
-}
-
-static void
-ect_free_text (ECellText *cell, char *text)
-{
- if (ECT_CLASS(cell)->free_text)
- ECT_CLASS(cell)->free_text (cell, text);
-}
-
-static char *
-ect_real_get_text (ECellText *cell, ETableModel *model, int col, int row)
-{
- return e_table_model_value_at(model, col, row);
-}
-
-static void
-ect_real_free_text (ECellText *cell, char *text)
-{
-}
-
-static void
-ect_queue_redraw (ECellTextView *text_view, int view_col, int view_row)
-{
- e_table_item_redraw_range (
- text_view->cell_view.e_table_item_view,
- view_col, view_row, view_col, view_row);
-}
-
-/*
- * Accept the currently edited text. if it's the same as what's in the cell, do nothing.
- */
-static void
-ect_accept_edits (ECellTextView *text_view)
-{
- CurrentCell *cell = (CurrentCell *) text_view->edit;
-
- if (strcmp (text_view->edit->old_text, cell->text)) {
- e_table_model_set_value_at (text_view->cell_view.e_table_model,
- cell->model_col, cell->row, cell->text);
- }
-}
-
-/*
- * Shuts down the editing process
- */
-static void
-ect_stop_editing (ECellTextView *text_view)
-{
- CellEdit *edit = text_view->edit;
- int row, view_col;
-
- if (!edit)
- return;
-
- row = edit->cell.row;
- view_col = edit->cell.view_col;
-
- g_free (edit->old_text);
- edit->old_text = NULL;
- g_free (edit->cell.text);
- edit->cell.text = NULL;
- if (edit->invisible)
- gtk_widget_unref (edit->invisible);
- if (edit->tep)
- gtk_object_unref (GTK_OBJECT(edit->tep));
- if (edit->primary_selection)
- g_free (edit->primary_selection);
- if (edit->clipboard_selection)
- g_free (edit->clipboard_selection);
- if (! edit->default_cursor_shown){
- gdk_window_set_cursor (GTK_WIDGET(text_view->canvas)->window, NULL);
- edit->default_cursor_shown = TRUE;
- }
- if (edit->timeout_id) {
- g_source_remove (edit->timeout_id);
- edit->timeout_id = 0;
- }
- if (edit->timer) {
- g_timer_stop (edit->timer);
- g_timer_destroy (edit->timer);
- edit->timer = NULL;
- }
-
- g_free (edit);
-
- text_view->edit = NULL;
- ect_queue_redraw (text_view, view_col, row);
-}
-
-/*
- * Cancels the edits
- */
-static void
-ect_cancel_edit (ECellTextView *text_view)
-{
- ect_stop_editing (text_view);
-}
-
-/*
- * ECell::new_view method
- */
-static ECellView *
-ect_new_view (ECell *ecell, ETableModel *table_model, void *e_table_item_view)
-{
- ECellTextView *text_view = g_new0 (ECellTextView, 1);
- GnomeCanvas *canvas = GNOME_CANVAS_ITEM (e_table_item_view)->canvas;
-
- text_view->cell_view.ecell = ecell;
- text_view->cell_view.e_table_model = table_model;
- text_view->cell_view.e_table_item_view = e_table_item_view;
-
- text_view->canvas = canvas;
-
- text_view->xofs = 0.0;
- text_view->yofs = 0.0;
-
- return (ECellView *)text_view;
-}
-
-/*
- * ECell::kill_view method
- */
-static void
-ect_kill_view (ECellView *ecv)
-{
- ECellTextView *text_view = (ECellTextView *) ecv;
-
- g_free (text_view);
-}
-
-/*
- * ECell::realize method
- */
-static void
-ect_realize (ECellView *ecell_view)
-{
- ECellTextView *text_view = (ECellTextView *) ecell_view;
- ECellText *ect = (ECellText *) ecell_view->ecell;
-
- text_view->gc = gdk_gc_new (GTK_WIDGET (text_view->canvas)->window);
-
- text_view->i_cursor = gdk_cursor_new (GDK_XTERM);
-
- if (ect->font_name){
- text_view->font = e_font_from_gdk_name (ect->font_name);
- }
- if (!text_view->font){
- gdk_font_ref (GTK_WIDGET (text_view->canvas)->style->font);
- text_view->font = e_font_from_gdk_font (GTK_WIDGET (text_view->canvas)->style->font);
- }
-
- calc_ellipsis (text_view);
-
- if (parent_class->realize)
- (* parent_class->realize) (ecell_view);
-}
-
-/*
- * ECell::unrealize method
- */
-static void
-ect_unrealize (ECellView *ecv)
-{
- ECellTextView *text_view = (ECellTextView *) ecv;
- ECellText *ect = (ECellText*) ecv->ecell;
- GdkColormap *colormap;
-
- gdk_gc_unref (text_view->gc);
- text_view->gc = NULL;
-
- if (text_view->edit){
- ect_cancel_edit (text_view);
- }
-
- if (text_view->font)
- e_font_unref (text_view->font);
-
- if (text_view->stipple)
- gdk_bitmap_unref (text_view->stipple);
-
- gdk_cursor_destroy (text_view->i_cursor);
-
- if (ect->colors) {
- colormap = gtk_widget_get_colormap (GTK_WIDGET (text_view->canvas));
- g_hash_table_foreach (ect->colors, (GHFunc) ect_free_color,
- colormap);
- g_hash_table_destroy (ect->colors);
- ect->colors = NULL;
- }
-
- if (parent_class->unrealize)
- (* parent_class->unrealize) (ecv);
-}
-
-static void
-ect_free_color (gchar *color_spec, GdkColor *color, GdkColormap *colormap)
-{
-
- g_free (color_spec);
-
- /* This frees the color. Note we don't free it if it is the special
- value. */
- if (color != (GdkColor*) 1) {
- gdk_colors_free (colormap, &color->pixel, 1, 0);
-
- /* This frees the memory for the GdkColor. */
- gdk_color_free (color);
- }
-}
-
-static void
-set_style(ECellView *ecell_view, CurrentCell *cell, int row)
-{
- EFontStyle style = E_FONT_PLAIN;
- ECellText *ect = E_CELL_TEXT (ecell_view->ecell);
-
- if (ect->bold_column >= 0 && e_table_model_value_at(ecell_view->e_table_model, ect->bold_column, row))
- style = E_FONT_BOLD;
-
- cell->style = style;
-}
-
-/*
- * ECell::draw method
- */
-static void
-ect_draw (ECellView *ecell_view, GdkDrawable *drawable,
- int model_col, int view_col, int row, ECellFlags flags,
- int x1, int y1, int x2, int y2)
-{
- /* New ECellText */
- ECellText *ect = E_CELL_TEXT (ecell_view->ecell);
- ECellTextView *text_view = (ECellTextView *) ecell_view;
- GtkWidget *canvas = GTK_WIDGET (text_view->canvas);
- GdkRectangle rect, *clip_rect;
- struct line *lines;
- int i;
- int xpos, ypos;
- int start_char, end_char;
- int sel_start, sel_end;
- GdkRectangle sel_rect;
- GdkGC *fg_gc;
- EFont *font = text_view->font;
- const int height = e_font_height (text_view->font);
- CellEdit *edit = text_view->edit;
- gboolean edit_display = FALSE;
- ECellTextLineBreaks *linebreaks;
- GdkColor *foreground, *cell_foreground, *cursor_color;
- gchar *color_spec;
- gboolean selected;
- EFontStyle style = E_FONT_PLAIN;
-
- selected = flags & E_CELL_SELECTED;
-
- if (edit){
- if ((edit->cell.view_col == view_col) && (edit->cell.row == row)) {
- edit_display = TRUE;
- fg_gc = canvas->style->fg_gc[edit->has_selection ? GTK_STATE_SELECTED : GTK_STATE_ACTIVE];
- } else
- fg_gc = canvas->style->fg_gc[GTK_STATE_ACTIVE];
- } else {
- fg_gc = canvas->style->fg_gc[GTK_STATE_ACTIVE];
- }
-
- /*
- * Be a nice citizen: clip to the region we are supposed to draw on
- */
- rect.x = x1;
- rect.y = y1;
- rect.width = x2 - x1;
- rect.height = y2 - y1;
-
- gdk_gc_set_clip_rectangle (text_view->gc, &rect);
- gdk_gc_set_clip_rectangle (fg_gc, &rect);
- clip_rect = &rect;
-
- if (selected){
- if (flags & E_CELL_FOCUSED)
- foreground = &canvas->style->text [GTK_STATE_SELECTED];
- else
- foreground = &canvas->style->text [GTK_STATE_ACTIVE];
- } else {
- foreground = &canvas->style->text [GTK_STATE_NORMAL];
- }
-
- cursor_color = foreground;
-
- if (ect->color_column != -1 && ! selected) {
- color_spec = e_table_model_value_at (ecell_view->e_table_model,
- ect->color_column, row);
- cell_foreground = e_cell_text_get_color (text_view,
- color_spec);
- if (cell_foreground)
- foreground = cell_foreground;
- }
-
- gdk_gc_set_foreground (text_view->gc, foreground);
-
- x1 += 4;
- y1 += 1;
- x2 -= 4;
- y2 -= 1;
-
- rect.x = x1;
- rect.y = y1;
- rect.width = x2 - x1;
- rect.height = y2 - y1;
-
- gdk_gc_set_clip_rectangle (text_view->gc, &rect);
- gdk_gc_set_clip_rectangle (fg_gc, &rect);
- clip_rect = &rect;
-
- if (edit_display){
- CellEdit *edit = text_view->edit;
- CurrentCell *cell = CURRENT_CELL(edit);
-
- set_style(ecell_view, cell, row);
-
- style = cell->style;
-
- cell->width = x2 - x1;
-
- split_into_lines (cell);
-
- linebreaks = cell->breaks;
-
- lines = linebreaks->lines;
- ypos = get_line_ypos (cell, lines);
- ypos += e_font_ascent (text_view->font);
- ypos -= edit->yofs_edit;
-
- for (i = 0; i < linebreaks->num_lines; i++) {
- xpos = get_line_xpos (cell, lines);
- xpos -= edit->xofs_edit;
-
- /* start_char, end_char, sel_start and sel_end are IN BYTES */
-
- start_char = lines->text - cell->text;
- end_char = start_char + lines->length;
-
- sel_start = edit->selection_start;
- sel_end = edit->selection_end;
-
- if (sel_start > sel_end){
- sel_start ^= sel_end;
- sel_end ^= sel_start;
- sel_start ^= sel_end;
- }
- if (sel_start < start_char)
- sel_start = start_char;
- if (sel_end > end_char)
- sel_end = end_char;
-
- if (sel_start < sel_end){
- sel_rect.x = xpos + x1 + e_font_utf8_text_width (font, style, lines->text, sel_start - start_char);
- sel_rect.y = ypos + y1 - e_font_ascent (font);
- sel_rect.width = e_font_utf8_text_width (font, style,
- lines->text + sel_start - start_char,
- sel_end - sel_start);
- sel_rect.height = height;
- gtk_paint_flat_box (canvas->style,
- drawable,
-
- edit->has_selection ? GTK_STATE_SELECTED : GTK_STATE_ACTIVE,
- GTK_SHADOW_NONE,
- clip_rect,
- canvas,
- "text",
- sel_rect.x,
- sel_rect.y,
- sel_rect.width,
- sel_rect.height);
-
- e_font_draw_utf8_text (drawable, font, style, text_view->gc, xpos + x1, ypos + y1,
- lines->text,
- sel_start - start_char);
- e_font_draw_utf8_text (drawable, font, style, fg_gc,
- xpos + x1 + e_font_utf8_text_width (font, style, lines->text, sel_start - start_char),
- ypos + y1,
- lines->text + sel_start - start_char,
- sel_end - sel_start);
- e_font_draw_utf8_text (drawable, font, style, text_view->gc,
- xpos + x1 + e_font_utf8_text_width (font, style, lines->text, sel_end - start_char),
- ypos + y1,
- lines->text + sel_end - start_char,
- end_char - sel_end);
- } else {
- e_font_draw_utf8_text (drawable, font, style, text_view->gc,
- xpos + x1, ypos + y1,
- lines->text,
- lines->length);
- }
- if (edit->selection_start == edit->selection_end &&
- edit->selection_start >= start_char &&
- edit->selection_start <= end_char &&
- edit->show_cursor) {
- gdk_gc_set_foreground (text_view->gc, cursor_color);
- gdk_draw_rectangle (drawable,
- text_view->gc,
- TRUE,
- xpos + x1 + e_font_utf8_text_width (font, style, lines->text, sel_start - start_char),
- ypos + y1 - e_font_ascent (font),
- 1,
- height);
- }
- if (ect->strikeout_column >= 0 && e_table_model_value_at(ecell_view->e_table_model, ect->strikeout_column, row)) {
- gdk_draw_rectangle (drawable,
- text_view->gc,
- TRUE,
- x1, ypos + y1 - (e_font_ascent (font) / 2),
- x2 - x1,
- 1);
- }
- ypos += height;
- lines ++;
- }
- unref_lines (cell);
- } else {
-
- ECellTextLineBreaks *linebreaks;
- CurrentCell cell;
- build_current_cell (&cell, text_view, model_col, view_col, row);
-
- set_style(ecell_view, &cell, row);
-
- style = cell.style;
-
- cell.width = x2 - x1;
-
- split_into_lines (&cell);
-
- linebreaks = cell.breaks;
- lines = linebreaks->lines;
- ypos = get_line_ypos (&cell, lines);
- ypos += e_font_ascent (text_view->font);
-
-
- for (i = 0; i < linebreaks->num_lines; i++) {
- xpos = get_line_xpos (&cell, lines);
- if (ect->use_ellipsis && lines->ellipsis_length < lines->length) {
- e_font_draw_utf8_text (drawable, font, style, text_view->gc,
- xpos + x1, ypos + y1,
- lines->text,
- lines->ellipsis_length);
- e_font_draw_utf8_text (drawable, font, style, text_view->gc,
- xpos + x1 + lines->width - text_view->ellipsis_width[style],
- ypos + y1,
- ect->ellipsis ? ect->ellipsis : "...",
- ect->ellipsis ? strlen (ect->ellipsis) : 3);
- } else {
- e_font_draw_utf8_text (drawable, font, style, text_view->gc,
- xpos + x1,
- ypos + y1,
- lines->text,
- lines->length);
- }
- if (ect->strikeout_column >= 0 && e_table_model_value_at(ecell_view->e_table_model, ect->strikeout_column, row)) {
- gdk_draw_rectangle (drawable,
- text_view->gc,
- TRUE,
- x1, ypos + y1 - (e_font_ascent (font) / 2),
- x2 - x1,
- 1);
- }
- ypos += height;
- lines++;
- }
- unref_lines (&cell);
- unbuild_current_cell (&cell);
- }
-
- gdk_gc_set_clip_rectangle (text_view->gc, NULL);
- gdk_gc_set_clip_rectangle (fg_gc, NULL);
-}
-
-/*
- * Selects the entire string
- */
-static void
-ect_edit_select_all (ECellTextView *text_view)
-{
- g_assert (text_view->edit);
-
- text_view->edit->selection_start = 0;
- text_view->edit->selection_end = strlen (text_view->edit->cell.text);
-}
-
-static gboolean
-key_begins_editing (GdkEventKey *event)
-{
- if (event->length == 0)
- return FALSE;
-
- return TRUE;
-}
-
-/*
- * ECell::event method
- */
-static gint
-ect_event (ECellView *ecell_view, GdkEvent *event, int model_col, int view_col, int row, ECellFlags flags, ECellActions *actions)
-{
- ECellTextView *text_view = (ECellTextView *) ecell_view;
- ETextEventProcessorEvent e_tep_event;
- gboolean edit_display = FALSE;
- CellEdit *edit = text_view->edit;
- GtkWidget *canvas = GTK_WIDGET (text_view->canvas);
- gint return_val = 0;
- CurrentCell cell, *cellptr;
-
- if (flags & !E_CELL_EDITING)
- return 0;
-
- build_current_cell (&cell, text_view, model_col, view_col, row);
-
-
- if (edit){
- if ((edit->cell.view_col == view_col) && (edit->cell.row == row)) {
- edit_display = TRUE;
- cellptr = CURRENT_CELL(edit);
- } else {
- cellptr = &cell;
- }
- } else {
- cellptr = &cell;
- }
-
- set_style(ecell_view, cellptr, row);
-
- e_tep_event.type = event->type;
- switch (event->type) {
- case GDK_FOCUS_CHANGE:
- break;
- case GDK_KEY_PRESS: /* Fall Through */
- case GDK_KEY_RELEASE:
- if (event->key.keyval == GDK_Escape){
- ect_cancel_edit (text_view);
- return_val = TRUE;
- break;
- }
-
- if ((!edit_display) &&
- e_table_model_is_cell_editable (ecell_view->e_table_model, model_col, row) &&
- key_begins_editing (&event->key)) {
- e_table_item_enter_edit (text_view->cell_view.e_table_item_view, view_col, row);
- ect_edit_select_all (text_view);
- edit = text_view->edit;
- cellptr = CURRENT_CELL(edit);
- edit_display = TRUE;
- }
- if (edit_display) {
- GdkEventKey key = event->key;
- if (key.keyval == GDK_KP_Enter || key.keyval == GDK_Return){
- e_table_item_leave_edit (text_view->cell_view.e_table_item_view);
- } else {
- e_tep_event.key.time = key.time;
- e_tep_event.key.state = key.state;
- e_tep_event.key.keyval = key.keyval;
-
- /* This is probably ugly hack, but we have to handle UTF-8 input somehow */
-#if 0
- e_tep_event.key.length = key.length;
- e_tep_event.key.string = key.string;
-#else
- e_tep_event.key.string = e_utf8_from_gtk_event_key (canvas, key.keyval, key.string);
- if (e_tep_event.key.string != NULL) {
- e_tep_event.key.length = strlen (e_tep_event.key.string);
- } else {
- e_tep_event.key.length = 0;
- }
-#endif
-
- _get_tep (edit);
- return_val = e_text_event_processor_handle_event (edit->tep, &e_tep_event);
- *actions = edit->actions;
- if (e_tep_event.key.string) g_free (e_tep_event.key.string);
- break;
- }
- }
-
- break;
- case GDK_BUTTON_PRESS: /* Fall Through */
- case GDK_BUTTON_RELEASE:
- event->button.x -= 4;
- event->button.y -= 1;
- if ((!edit_display)
- && e_table_model_is_cell_editable (ecell_view->e_table_model, model_col, row)
- && event->type == GDK_BUTTON_RELEASE
- && event->button.button == 1) {
- GdkEventButton button = event->button;
-
- e_table_item_enter_edit (text_view->cell_view.e_table_item_view, view_col, row);
- edit = text_view->edit;
- cellptr = CURRENT_CELL(edit);
- edit_display = TRUE;
-
- e_tep_event.button.type = GDK_BUTTON_PRESS;
- e_tep_event.button.time = button.time;
- e_tep_event.button.state = button.state;
- e_tep_event.button.button = button.button;
- e_tep_event.button.position = _get_position_from_xy (cellptr, button.x, button.y);
- _get_tep (edit);
- return_val = e_text_event_processor_handle_event (edit->tep,
- &e_tep_event);
- *actions = edit->actions;
- if (event->button.button == 1) {
- if (event->type == GDK_BUTTON_PRESS)
- edit->button_down = TRUE;
- else
- edit->button_down = FALSE;
- }
- edit->lastx = button.x;
- edit->lasty = button.y;
- edit->last_state = button.state;
-
- e_tep_event.button.type = GDK_BUTTON_RELEASE;
- }
- if (edit_display) {
- GdkEventButton button = event->button;
- e_tep_event.button.time = button.time;
- e_tep_event.button.state = button.state;
- e_tep_event.button.button = button.button;
- e_tep_event.button.position = _get_position_from_xy (cellptr, button.x, button.y);
- _get_tep (edit);
- return_val = e_text_event_processor_handle_event (edit->tep,
- &e_tep_event);
- *actions = edit->actions;
- if (event->button.button == 1) {
- if (event->type == GDK_BUTTON_PRESS)
- edit->button_down = TRUE;
- else
- edit->button_down = FALSE;
- }
- edit->lastx = button.x;
- edit->lasty = button.y;
- edit->last_state = button.state;
- }
- break;
- case GDK_MOTION_NOTIFY:
- event->motion.x -= 4;
- event->motion.y -= 1;
- if (edit_display) {
- GdkEventMotion motion = event->motion;
- e_tep_event.motion.time = motion.time;
- e_tep_event.motion.state = motion.state;
- e_tep_event.motion.position = _get_position_from_xy (cellptr, motion.x, motion.y);
- _get_tep (edit);
- return_val = e_text_event_processor_handle_event (edit->tep,
- &e_tep_event);
- *actions = edit->actions;
- edit->lastx = motion.x;
- edit->lasty = motion.y;
- edit->last_state = motion.state;
- }
- break;
- case GDK_ENTER_NOTIFY:
-#if 0
- edit->pointer_in = TRUE;
-#endif
- if (edit_display) {
- if (edit->default_cursor_shown){
- gdk_window_set_cursor (canvas->window, text_view->i_cursor);
- edit->default_cursor_shown = FALSE;
- }
- }
- break;
- case GDK_LEAVE_NOTIFY:
-#if 0
- text_view->pointer_in = FALSE;
-#endif
- if (edit_display) {
- if (! edit->default_cursor_shown){
- gdk_window_set_cursor (canvas->window, NULL);
- edit->default_cursor_shown = TRUE;
- }
- }
- break;
- default:
- break;
- }
-
- unbuild_current_cell (&cell);
- if (return_val)
- return return_val;
-#if 0
- if (GNOME_CANVAS_ITEM_CLASS(parent_class)->event)
- return GNOME_CANVAS_ITEM_CLASS(parent_class)->event (item, event);
-#endif
- else
- return 0;
-
-}
-
-/*
- * ECell::height method
- */
-static int
-ect_height (ECellView *ecell_view, int model_col, int view_col, int row)
-{
- ECellTextView *text_view = (ECellTextView *) ecell_view;
- EFont *font;
- ECellText *ect = E_CELL_TEXT(ecell_view->ecell);
- gchar *string;
- gint value;
-
- font = text_view->font;
-
- string = ect_get_text(ect, ecell_view->e_table_model, model_col, row);
- value = e_font_height (font) * number_of_lines(string) + TEXT_PAD;
- ect_free_text(ect, string);
-
- return value;
-}
-
-/*
- * ECellView::enter_edit method
- */
-static void *
-ect_enter_edit (ECellView *ecell_view, int model_col, int view_col, int row)
-{
- ECellTextView *text_view = (ECellTextView *) ecell_view;
- CellEdit *edit;
- ECellText *ect = E_CELL_TEXT(ecell_view->ecell);
- char *temp;
-
- edit = g_new (CellEdit, 1);
- text_view->edit = edit;
-
- build_current_cell (CURRENT_CELL(edit), text_view, model_col, view_col, row);
-
- set_style(ecell_view, CURRENT_CELL(edit), row);
-
- edit->xofs_edit = 0.0;
- edit->yofs_edit = 0.0;
-
- edit->selection_start = 0;
- edit->selection_end = 0;
- edit->select_by_word = FALSE;
-
- edit->timeout_id = g_timeout_add (10, _blink_scroll_timeout, text_view);
- edit->timer = g_timer_new ();
- g_timer_elapsed (edit->timer, &(edit->scroll_start));
- g_timer_start (edit->timer);
-
- edit->lastx = 0;
- edit->lasty = 0;
- edit->last_state = 0;
-
- edit->scroll_start = 0;
- edit->show_cursor = TRUE;
- edit->button_down = FALSE;
-
- edit->tep = NULL;
-
- edit->has_selection = FALSE;
-
- edit->invisible = NULL;
- edit->primary_selection = NULL;
- edit->primary_length = 0;
- edit->clipboard_selection = NULL;
- edit->clipboard_length = 0;
-
- edit->pointer_in = FALSE;
- edit->default_cursor_shown = TRUE;
-
- temp = ect_get_text(ect, ecell_view->e_table_model, model_col, row);
- edit->old_text = g_strdup (temp);
- ect_free_text(ect, temp);
- edit->cell.text = g_strdup (edit->old_text);
-
-#if 0
- if (edit->pointer_in){
- if (edit->default_cursor_shown){
- gdk_window_set_cursor (GTK_WIDGET(item->canvas)->window, text_view->i_cursor);
- edit->default_cursor_shown = FALSE;
- }
- }
-#endif
-
- ect_queue_redraw (text_view, view_col, row);
-
- return NULL;
-}
-
-/*
- * ECellView::leave_edit method
- */
-static void
-ect_leave_edit (ECellView *ecell_view, int model_col, int view_col, int row, void *edit_context)
-{
- ECellTextView *text_view = (ECellTextView *) ecell_view;
- CellEdit *edit = text_view->edit;
-
- if (edit){
- ect_accept_edits (text_view);
- ect_stop_editing (text_view);
- /* FIXME: edit is freed in ect_stop_editing() so I've
- commented this out - Damon. */
- /*unbuild_current_cell (CURRENT_CELL(edit));*/
- } else {
- /*
- * We did invoke this leave edit internally
- */
- }
-}
-
-static void
-ect_print (ECellView *ecell_view, GnomePrintContext *context,
- int model_col, int view_col, int row,
- double width, double height)
-{
- GnomeFont *font = gnome_font_new ("Helvetica", 12);
- char *string;
- ECellText *ect = E_CELL_TEXT(ecell_view->ecell);
- string = ect_get_text(ect, ecell_view->e_table_model, model_col, row);
- gnome_print_gsave(context);
- if (gnome_print_moveto(context, 2, 2) == -1)
- /* FIXME */;
- if (gnome_print_lineto(context, width - 2, 2) == -1)
- /* FIXME */;
- if (gnome_print_lineto(context, width - 2, height - 2) == -1)
- /* FIXME */;
- if (gnome_print_lineto(context, 2, height - 2) == -1)
- /* FIXME */;
- if (gnome_print_lineto(context, 2, 2) == -1)
- /* FIXME */;
- if (gnome_print_clip(context) == -1)
- /* FIXME */;
- gnome_print_moveto(context, 2, (height - gnome_font_get_ascender(font) + gnome_font_get_descender(font)) / 2);
- gnome_print_setfont(context, font);
- gnome_print_show(context, string);
- gnome_print_grestore(context);
- ect_free_text(ect, string);
-}
-
-static gdouble
-ect_print_height (ECellView *ecell_view, GnomePrintContext *context,
- int model_col, int view_col, int row,
- double width)
-{
- return 16;
-}
-
-static int
-ect_max_width (ECellView *ecell_view,
- int model_col,
- int view_col)
-{
- /* New ECellText */
- ECellTextView *text_view = (ECellTextView *) ecell_view;
- EFont *font;
- int row;
- int number_of_rows;
- int max_width = 0;
-
- font = text_view->font;
- number_of_rows = e_table_model_row_count (ecell_view->e_table_model);
-
- for (row = 0; row < number_of_rows; row++) {
- CurrentCell cell;
- struct line *line;
- int width;
-
- build_current_cell (&cell, text_view, model_col, view_col, row);
- split_into_lines (&cell);
- calc_line_widths (&cell);
-
- line = (struct line *)cell.breaks->lines;
- width = e_font_utf8_text_width (font, cell.style,
- line->text, line->length);
- max_width = MAX (max_width, width);
- unref_lines (&cell);
- unbuild_current_cell (&cell);
- }
-
- return max_width;
-}
-
-static gint
-tooltip_event (GtkWidget *window,
- GdkEvent *event,
- ETableTooltip *tooltip)
-{
- gint ret_val = FALSE;
-
- switch (event->type) {
- case GDK_LEAVE_NOTIFY:
- e_canvas_hide_tooltip (E_CANVAS(GNOME_CANVAS_ITEM(tooltip->eti)->canvas));
- break;
- case GDK_BUTTON_PRESS:
- case GDK_BUTTON_RELEASE:
- if (event->type == GDK_BUTTON_RELEASE) {
- e_canvas_hide_tooltip (E_CANVAS(GNOME_CANVAS_ITEM(tooltip->eti)->canvas));
- }
-
- event->button.x = tooltip->cx;
- event->button.y = tooltip->cy;
- gtk_signal_emit_by_name (GTK_OBJECT (tooltip->eti), "event",
- event, &ret_val);
- if (!ret_val)
- gtk_propagate_event (GTK_WIDGET(GNOME_CANVAS_ITEM(tooltip->eti)->canvas), event);
- ret_val = TRUE;
- break;
- case GDK_KEY_PRESS:
- e_canvas_hide_tooltip (E_CANVAS(GNOME_CANVAS_ITEM(tooltip->eti)->canvas));
- gtk_signal_emit_by_name (GTK_OBJECT (tooltip->eti), "event",
- event, &ret_val);
- if (!ret_val)
- gtk_propagate_event (GTK_WIDGET(GNOME_CANVAS_ITEM(tooltip->eti)->canvas), event);
- ret_val = TRUE;
- break;
- default:
- break;
- }
-
- return ret_val;
-}
-
-static void
-ect_show_tooltip (ECellView *ecell_view,
- int model_col,
- int view_col,
- int row,
- int col_width,
- ETableTooltip *tooltip)
-{
- ECellTextView *text_view = (ECellTextView *) ecell_view;
- CurrentCell cell;
- struct line *lines;
- GtkWidget *canvas;
- int i;
- gdouble max_width;
- gboolean cut_off;
- double i2c[6];
- ArtPoint origin = {0, 0};
- ArtPoint pixel_origin;
- int canvas_x, canvas_y;
- GnomeCanvasItem *tooltip_text;
- double tooltip_width;
- double tooltip_height;
- double tooltip_x;
- double tooltip_y;
- GnomeCanvasItem *rect;
- double text_height;
- ECellText *ect = E_CELL_TEXT(ecell_view->ecell);
- GtkWidget *window;
-
- tooltip->timer = 0;
-
- build_current_cell (&cell, text_view, model_col, view_col, row);
-
- set_style(ecell_view, &cell, row);
-
- cell.width = col_width - 8;
- split_into_lines (&cell);
- calc_line_widths (&cell);
-
- cut_off = FALSE;
- for (lines = cell.breaks->lines, i = 0; i < cell.breaks->num_lines;
- lines++, i++) {
- if (lines->length > lines->ellipsis_length) {
- cut_off = TRUE;
- break;
- }
- }
-
- if (!cut_off) {
- tooltip->timer = 0;
- unref_lines (&cell);
- unbuild_current_cell (&cell);
- return;
- }
-
- gnome_canvas_item_i2c_affine (GNOME_CANVAS_ITEM (tooltip->eti), i2c);
- art_affine_point (&pixel_origin, &origin, i2c);
-
- gdk_window_get_origin (GTK_WIDGET (text_view->canvas)->window,
- &canvas_x, &canvas_y);
- pixel_origin.x += canvas_x;
- pixel_origin.y += canvas_y;
- pixel_origin.x -= (int) gtk_layout_get_hadjustment (GTK_LAYOUT (text_view->canvas))->value;
- pixel_origin.y -= (int) gtk_layout_get_vadjustment (GTK_LAYOUT (text_view->canvas))->value;
-
- window = gtk_window_new (GTK_WINDOW_POPUP);
- gtk_container_set_border_width (GTK_CONTAINER (window), 1);
-
- canvas = e_canvas_new ();
- gtk_container_add (GTK_CONTAINER (window), canvas);
-
- max_width = 0.0;
- for (lines = cell.breaks->lines, i = 0; i < cell.breaks->num_lines;
- lines++, i++) {
- gdouble line_width;
-
- line_width = e_font_utf8_text_width (text_view->font,
- cell.style, lines->text,
- lines->length);
- max_width = MAX (max_width, line_width);
- }
-
- text_height = e_font_height (text_view->font) * cell.breaks->num_lines + 4;
- rect = gnome_canvas_item_new (gnome_canvas_root (GNOME_CANVAS (canvas)),
- gnome_canvas_rect_get_type (),
- "x1", (double) 0.0,
- "y1", (double) 0.0,
- "x2", (double) max_width + 4,
- "y2", (double) text_height,
- "fill_color_gdk", tooltip->background,
- NULL);
-
- tooltip_text = gnome_canvas_item_new (gnome_canvas_root (GNOME_CANVAS (canvas)),
- e_text_get_type (),
- "anchor", GTK_ANCHOR_NW,
-/* "font_gdk", text_view->font, */
- "bold", (gboolean) ect->bold_column >= 0 && e_table_model_value_at(ecell_view->e_table_model, ect->bold_column, row),
- "strikeout", (gboolean) ect->strikeout_column >= 0 && e_table_model_value_at(ecell_view->e_table_model, ect->strikeout_column, row),
- "fill_color_gdk", tooltip->foreground,
- "text", cell.text,
- "editable", FALSE,
- "clip_width", max_width,
- "clip_height", (double) text_height,
- "clip", TRUE,
- "line_wrap", FALSE,
- "justification", E_CELL_TEXT (text_view->cell_view.ecell)->justify,
- "draw_background", FALSE,
- NULL);
-
- tooltip_width = max_width;
- tooltip_height = text_height;
- tooltip_y = tooltip->y;
-
- switch (E_CELL_TEXT (text_view->cell_view.ecell)->justify) {
- case GTK_JUSTIFY_CENTER:
- tooltip_x = - tooltip_width / 2;
- break;
- case GTK_JUSTIFY_RIGHT:
- tooltip_x = tooltip_width / 2;
- break;
- case GTK_JUSTIFY_FILL:
- case GTK_JUSTIFY_LEFT:
- tooltip_x = tooltip->x;
- break;
- }
-
- gnome_canvas_item_move (tooltip_text, 3.0, 1.0);
- gnome_canvas_item_set (rect,
- "x2", (double) tooltip_width + 6,
- "y2", (double) tooltip->row_height + 1,
- NULL);
- gtk_widget_set_usize (window, tooltip_width + 6,
- tooltip->row_height + 1);
- gnome_canvas_set_scroll_region (GNOME_CANVAS (canvas), 0.0, 0.0,
- (double) tooltip_width + 6,
- (double) tooltip_height);
- gtk_widget_show (canvas);
- gtk_widget_realize (window);
- gtk_signal_connect (GTK_OBJECT (window), "event",
- GTK_SIGNAL_FUNC (tooltip_event), tooltip);
-
- e_canvas_popup_tooltip (E_CANVAS(text_view->canvas), window, pixel_origin.x + tooltip->x,
- pixel_origin.y + tooltip->y - 1);
-
- unref_lines (&cell);
- unbuild_current_cell (&cell);
-
- return;
-}
-
-/*
- * GtkObject::destroy method
- */
-static void
-ect_destroy (GtkObject *object)
-{
- ECellText *ect = E_CELL_TEXT (object);
-
- g_free (ect->font_name);
-
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
-}
-/* Set_arg handler for the text item */
-static void
-ect_set_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- ECellText *text;
-
- text = E_CELL_TEXT (object);
-
- switch (arg_id) {
- case ARG_STRIKEOUT_COLUMN:
- text->strikeout_column = GTK_VALUE_INT (*arg);
- break;
-
- case ARG_BOLD_COLUMN:
- text->bold_column = GTK_VALUE_INT (*arg);
- break;
-
- case ARG_COLOR_COLUMN:
- text->color_column = GTK_VALUE_INT (*arg);
- break;
-
- case ARG_EDITABLE:
- text->editable = GTK_VALUE_BOOL (*arg) ? TRUE : FALSE;
- break;
-
- default:
- return;
- }
-}
-
-/* Get_arg handler for the text item */
-static void
-ect_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- ECellText *text;
-
- text = E_CELL_TEXT (object);
-
- switch (arg_id) {
- case ARG_STRIKEOUT_COLUMN:
- GTK_VALUE_INT (*arg) = text->strikeout_column;
- break;
-
- case ARG_BOLD_COLUMN:
- GTK_VALUE_INT (*arg) = text->bold_column;
- break;
-
- case ARG_COLOR_COLUMN:
- GTK_VALUE_INT (*arg) = text->color_column;
- break;
-
- case ARG_EDITABLE:
- GTK_VALUE_BOOL (*arg) = text->editable ? TRUE : FALSE;
- break;
-
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
-
-static void
-e_cell_text_class_init (GtkObjectClass *object_class)
-{
- ECellClass *ecc = (ECellClass *) object_class;
- ECellTextClass *ectc = (ECellTextClass *) object_class;
-
- object_class->destroy = ect_destroy;
-
- ecc->new_view = ect_new_view;
- ecc->kill_view = ect_kill_view;
- ecc->realize = ect_realize;
- ecc->unrealize = ect_unrealize;
- ecc->draw = ect_draw;
- ecc->event = ect_event;
- ecc->height = ect_height;
- ecc->enter_edit = ect_enter_edit;
- ecc->leave_edit = ect_leave_edit;
- ecc->print = ect_print;
- ecc->print_height = ect_print_height;
- ecc->max_width = ect_max_width;
- ecc->show_tooltip = ect_show_tooltip;
-
- ectc->get_text = ect_real_get_text;
- ectc->free_text = ect_real_free_text;
-
- object_class->get_arg = ect_get_arg;
- object_class->set_arg = ect_set_arg;
-
- parent_class = gtk_type_class (PARENT_TYPE);
-
- gtk_object_add_arg_type ("ECellText::strikeout_column",
- GTK_TYPE_INT, GTK_ARG_READWRITE, ARG_STRIKEOUT_COLUMN);
- gtk_object_add_arg_type ("ECellText::bold_column",
- GTK_TYPE_INT, GTK_ARG_READWRITE, ARG_BOLD_COLUMN);
- gtk_object_add_arg_type ("ECellText::color_column",
- GTK_TYPE_INT, GTK_ARG_READWRITE, ARG_COLOR_COLUMN);
- gtk_object_add_arg_type ("ECellText::editable",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_EDITABLE);
-
- if (!clipboard_atom)
- clipboard_atom = gdk_atom_intern ("CLIPBOARD", FALSE);
-}
-
-static void
-e_cell_text_init (ECellText *ect)
-{
- ect->ellipsis = NULL;
- ect->use_ellipsis = TRUE;
- ect->strikeout_column = -1;
- ect->bold_column = -1;
- ect->color_column = -1;
- ect->editable = TRUE;
-}
-
-E_MAKE_TYPE(e_cell_text, "ECellText", ECellText, e_cell_text_class_init, e_cell_text_init, PARENT_TYPE);
-
-/**
- * e_cell_text_construct:
- * @cell: The cell to construct
- * @fontname: font to be used to render on the screen
- * @justify: Justification of the string in the cell
- *
- * constructs the ECellText. To be used by subclasses and language
- * bindings.
- *
- * Returns: The ECellText.
- */
-ECell *
-e_cell_text_construct (ECellText *cell, const char *fontname, GtkJustification justify)
-{
- cell->font_name = g_strdup (fontname);
- cell->justify = justify;
- return E_CELL(cell);
-}
-
-/**
- * e_cell_text_new:
- * @fontname: font to be used to render on the screen
- * @justify: Justification of the string in the cell.
- *
- * Creates a new ECell renderer that can be used to render strings that
- * that come from the model. The value returned from the model is
- * interpreted as being a char *.
- *
- * The ECellText object support a large set of properties that can be
- * configured through the Gtk argument system and allows the user to have
- * a finer control of the way the string is displayed. The arguments supported
- * allow the control of strikeout, bold, and color.
- *
- * The arguments "strikeout_column", "bold_column" and "color_column" set
- * and return an integer that points to a column in the model that controls
- * these settings. So controlling the way things are rendered is achieved
- * by having special columns in the model that will be used to flag whether
- * the text should be rendered with strikeout, or bolded. In the case of
- * the "color_column" argument, the column in the model is expected to have
- * a string that can be parsed by gdk_color_parse().
- *
- * Returns: an ECell object that can be used to render strings.
- */
-ECell *
-e_cell_text_new (const char *fontname, GtkJustification justify)
-{
- ECellText *ect = gtk_type_new (e_cell_text_get_type ());
-
- e_cell_text_construct(ect, fontname, justify);
-
- return (ECell *) ect;
-}
-
-/* Calculates the x position of the specified line of text, based on the text's justification */
-static int
-get_line_xpos (CurrentCell *cell, struct line *line)
-{
- int x;
-
- ECellTextView *text_view = cell->text_view;
- ECellText *ect = E_CELL_TEXT (((ECellView *)cell->text_view)->ecell);
-
- x = text_view->xofs + ect->x;
-
- switch (ect->justify) {
- case GTK_JUSTIFY_RIGHT:
- x += cell->width - line->width;
- break;
-
- case GTK_JUSTIFY_CENTER:
- x += (cell->width - line->width) / 2;
- break;
-
- default:
- /* For GTK_JUSTIFY_LEFT, we don't have to do anything. We do not support
- * GTK_JUSTIFY_FILL, yet.
- */
- break;
- }
-
- return x;
-}
-
-/* Calculates the x position of the specified line of text, based on the text's justification */
-static int
-get_line_ypos (CurrentCell *cell, struct line *line)
-{
- int y;
-
- ECellTextView *text_view = cell->text_view;
- ECellText *ect = E_CELL_TEXT (((ECellView *)cell->text_view)->ecell);
- ECellTextLineBreaks *linebreaks = cell->breaks;
-
- struct line *lines = linebreaks->lines;
-
- EFont *font;
-
- font = text_view->font;
-
- y = text_view->yofs + ect->y;
- y += (line - lines) * e_font_height (font);
-
- return y;
-}
-
-/* fixme: Handle Font attributes */
-/* position is in BYTES */
-
-static void
-_get_xy_from_position (CurrentCell *cell, gint position, gint *xp, gint *yp)
-{
- if (xp || yp) {
- struct line *lines;
- int x, y;
- int j;
- ECellTextView *text_view = cell->text_view;
- ECellTextLineBreaks *linebreaks;
- EFont *font;
-
- font = text_view->font;
-
- split_into_lines (cell);
-
- linebreaks = cell->breaks;
- lines = linebreaks->lines;
-
- x = get_line_xpos (cell, lines);
- y = get_line_ypos (cell, lines);
- for (j = 0, lines = linebreaks->lines; j < linebreaks->num_lines; lines++, j++) {
- if (lines->text > cell->text + position)
- break;
- y += e_font_height (font);
- }
- lines --;
- y -= e_font_descent (font);
-
- x += e_font_utf8_text_width (font, cell->style,
- lines->text,
- position - (lines->text - cell->text));
- if ((CellEdit *) cell == cell->text_view->edit){
- x -= ((CellEdit *)cell)->xofs_edit;
- y -= ((CellEdit *)cell)->yofs_edit;
- }
- if (xp)
- *xp = x;
- if (yp)
- *yp = y;
- unref_lines (cell);
- }
-}
-
-static gint
-_get_position_from_xy (CurrentCell *cell, gint x, gint y)
-{
- int i, j;
- int xpos, ypos;
- struct line *lines;
- int return_val;
- gchar *p;
-
- ECellTextView *text_view = cell->text_view;
- ECellTextLineBreaks *linebreaks;
- EFont *font;
-
- font = text_view->font;
-
- split_into_lines (cell);
-
- linebreaks = cell->breaks;
-
- lines = linebreaks->lines;
-
- if ((CellEdit *) cell == cell->text_view->edit){
- x += ((CellEdit *)cell)->xofs_edit;
- y += ((CellEdit *)cell)->yofs_edit;
- }
-
- ypos = get_line_ypos (cell, linebreaks->lines);
- j = 0;
- while (y > ypos) {
- ypos += e_font_height (font);
- j ++;
- }
- j--;
- if (j >= linebreaks->num_lines)
- j = linebreaks->num_lines - 1;
- if (j < 0)
- j = 0;
- i = 0;
-
- lines += j;
- xpos = get_line_xpos (cell, lines);
-
- for (p = lines->text; p < lines->text + lines->length && g_unichar_validate (g_utf8_get_char (p)); p = g_utf8_next_char (p)) {
- gint charwidth;
-
- charwidth = e_font_utf8_char_width (font, cell->style, p);
-
- xpos += charwidth / 2;
- if (xpos > x) {
- break;
- }
- xpos += (charwidth + 1) / 2;
- }
-
- return_val = p - cell->text;
-
- unref_lines (cell);
-
- return return_val;
-}
-
-#define SCROLL_WAIT_TIME 30000
-
-static gboolean
-_blink_scroll_timeout (gpointer data)
-{
- ECellTextView *text_view = (ECellTextView *) data;
- ECellText *ect = E_CELL_TEXT (((ECellView *)text_view)->ecell);
- CellEdit *edit = text_view->edit;
- CurrentCell *cell = CURRENT_CELL(edit);
-
- gulong current_time;
- gboolean scroll = FALSE;
- gboolean redraw = FALSE;
-
- g_timer_elapsed (edit->timer, &current_time);
-
- if (edit->scroll_start + SCROLL_WAIT_TIME > 1000000) {
- if (current_time > edit->scroll_start - (1000000 - SCROLL_WAIT_TIME) &&
- current_time < edit->scroll_start)
- scroll = TRUE;
- } else {
- if (current_time > edit->scroll_start + SCROLL_WAIT_TIME ||
- current_time < edit->scroll_start)
- scroll = TRUE;
- }
- if (scroll && edit->button_down) {
- /* FIXME: Copy this for y. */
- if (edit->lastx - ect->x > cell->width) {
- ECellTextLineBreaks *linebreaks;
- split_into_lines (cell);
- linebreaks = cell->breaks;
- if (edit->xofs_edit < linebreaks->max_width - cell->width) {
- edit->xofs_edit += 4;
- if (edit->xofs_edit > linebreaks->max_width - cell->width + 1)
- edit->xofs_edit = linebreaks->max_width - cell->width + 1;
- redraw = TRUE;
- }
- unref_lines (cell);
- }
- if (edit->lastx - ect->x < 0 &&
- edit->xofs_edit > 0) {
- edit->xofs_edit -= 4;
- if (edit->xofs_edit < 0)
- edit->xofs_edit = 0;
- redraw = TRUE;
- }
- if (redraw) {
- ETextEventProcessorEvent e_tep_event;
- e_tep_event.type = GDK_MOTION_NOTIFY;
- e_tep_event.motion.state = edit->last_state;
- e_tep_event.motion.time = 0;
- e_tep_event.motion.position = _get_position_from_xy (cell, edit->lastx, edit->lasty);
- _get_tep (edit);
- e_text_event_processor_handle_event (edit->tep,
- &e_tep_event);
- edit->scroll_start = current_time;
- }
- }
-
- if (!((current_time / 500000) % 2)) {
- if (!edit->show_cursor)
- redraw = TRUE;
- edit->show_cursor = TRUE;
- } else {
- if (edit->show_cursor)
- redraw = TRUE;
- edit->show_cursor = FALSE;
- }
- if (redraw){
- ect_queue_redraw (text_view, edit->cell.view_col, edit->cell.row);
- }
- return TRUE;
-}
-
-static int
-_get_position (ECellTextView *text_view, ETextEventProcessorCommand *command)
-{
- int length;
- int x, y;
- CellEdit *edit = text_view->edit;
- CurrentCell *cell = CURRENT_CELL(edit);
- EFont *font;
- gchar *p;
- int unival;
-
- font = text_view->font;
-
- switch (command->position) {
-
- case E_TEP_VALUE:
- return command->value;
-
- case E_TEP_SELECTION:
- return edit->selection_end;
-
- case E_TEP_START_OF_BUFFER:
- return 0;
-
- /* fixme: this probably confuses TEP */
-
- case E_TEP_END_OF_BUFFER:
- return strlen (cell->text);
-
- case E_TEP_START_OF_LINE:
-
- if (edit->selection_end < 1) return 0;
-
- p = g_utf8_find_prev_char (cell->text, cell->text + edit->selection_end);
-
- if (p == cell->text) return 0;
-
- p = g_utf8_find_prev_char (cell->text, p);
-
- while (p && p > cell->text) {
- if (*p == '\n') return p - cell->text + 1;
- p = g_utf8_find_prev_char (cell->text, p);
- }
-
- return 0;
-
- case E_TEP_END_OF_LINE:
-
- length = strlen (cell->text);
- if (edit->selection_end >= length) return length;
-
- p = g_utf8_next_char (cell->text + edit->selection_end);
-
- while (*p && g_unichar_validate (g_utf8_get_char (p))) {
- if (*p == '\n') return p - cell->text;
- p = g_utf8_next_char (p);
- }
-
- return p - cell->text;
-
- case E_TEP_FORWARD_CHARACTER:
-
- length = strlen (cell->text);
- if (edit->selection_end >= length) return length;
-
- p = g_utf8_next_char (cell->text + edit->selection_end);
-
- return p - cell->text;
-
- case E_TEP_BACKWARD_CHARACTER:
-
- if (edit->selection_end < 1) return 0;
-
- p = g_utf8_find_prev_char (cell->text, cell->text + edit->selection_end);
-
- if (p == NULL) return 0;
-
- return p - cell->text;
-
- case E_TEP_FORWARD_WORD:
-
- length = strlen (cell->text);
- if (edit->selection_end >= length) return length;
-
- p = g_utf8_next_char (cell->text + edit->selection_end);
-
- while (*p && g_unichar_validate (g_utf8_get_char (p))) {
- unival = g_utf8_get_char (p);
- if (g_unichar_isspace (unival)) return p - cell->text;
- p = g_utf8_next_char (p);
- }
-
- return p - cell->text;
-
- case E_TEP_BACKWARD_WORD:
-
- if (edit->selection_end < 1) return 0;
-
- p = g_utf8_find_prev_char (cell->text, cell->text + edit->selection_end);
-
- if (p == cell->text) return 0;
-
- p = g_utf8_find_prev_char (cell->text, p);
-
- while (p && p > cell->text && g_unichar_validate (g_utf8_get_char (p))) {
- unival = g_utf8_get_char (p);
- if (g_unichar_isspace (unival)) {
- return (g_utf8_next_char (p) - cell->text);
- }
- p = g_utf8_find_prev_char (cell->text, p);
- }
-
- return 0;
-
- case E_TEP_FORWARD_LINE:
- _get_xy_from_position (cell, edit->selection_end, &x, &y);
- y += e_font_height (font);
- return _get_position_from_xy (cell, x, y);
- case E_TEP_BACKWARD_LINE:
- _get_xy_from_position (cell, edit->selection_end, &x, &y);
- y -= e_font_height (font);
- return _get_position_from_xy (cell, x, y);
-
- case E_TEP_FORWARD_PARAGRAPH:
- case E_TEP_BACKWARD_PARAGRAPH:
-
- case E_TEP_FORWARD_PAGE:
- case E_TEP_BACKWARD_PAGE:
- return edit->selection_end;
- default:
- return edit->selection_end;
- }
- g_assert_not_reached ();
- return 0; /* Kill warning */
-}
-
-static void
-_delete_selection (ECellTextView *text_view)
-{
- CellEdit *edit = text_view->edit;
- CurrentCell *cell = CURRENT_CELL(edit);
- gint length;
- gchar *sp, *ep;
-
- if (edit->selection_end == edit->selection_start) return;
-
- if (edit->selection_end < edit->selection_start) {
- edit->selection_end ^= edit->selection_start;
- edit->selection_start ^= edit->selection_end;
- edit->selection_end ^= edit->selection_start;
- }
-
- sp = cell->text + edit->selection_start;
- ep = cell->text + edit->selection_end;
- length = strlen (ep) + 1;
-
- memmove (sp, ep, length);
-
- edit->selection_end = edit->selection_start;
-}
-
-/* fixme: */
-/* NB! We expect value to be length IN BYTES */
-
-static void
-_insert (ECellTextView *text_view, char *string, int value)
-{
- CellEdit *edit = text_view->edit;
- CurrentCell *cell = CURRENT_CELL(edit);
- char *temp;
-
- if (value <= 0) return;
-
- temp = g_new (gchar, strlen (cell->text) + value + 1);
-
- strncpy (temp, cell->text, edit->selection_start);
- strncpy (temp + edit->selection_start, string, value);
- strcpy (temp + edit->selection_start + value, cell->text + edit->selection_end);
-
- g_free (cell->text);
-
- cell->text = temp;
-
- edit->selection_start += value;
- edit->selection_end = edit->selection_start;
-}
-
-static void
-e_cell_text_view_command (ETextEventProcessor *tep, ETextEventProcessorCommand *command, gpointer data)
-{
- CellEdit *edit = (CellEdit *) data;
- CurrentCell *cell = CURRENT_CELL(edit);
- ECellTextView *text_view = cell->text_view;
- ECellText *ect = E_CELL_TEXT (text_view->cell_view.ecell);
-
- gboolean change = FALSE;
- gboolean redraw = FALSE;
-
- int sel_start, sel_end;
- EFont *font;
-
- font = text_view->font;
-
- /* If the EText isn't editable, then ignore any commands that would
- modify the text. */
- if (!ect->editable && (command->action == E_TEP_DELETE
- || command->action == E_TEP_INSERT
- || command->action == E_TEP_PASTE
- || command->action == E_TEP_GET_SELECTION))
- return;
-
- switch (command->action) {
- case E_TEP_MOVE:
- edit->selection_start = _get_position (text_view, command);
- edit->selection_end = edit->selection_start;
- if (edit->timer) {
- g_timer_reset (edit->timer);
- }
- redraw = TRUE;
- break;
- case E_TEP_SELECT:
- edit->selection_end = _get_position (text_view, command);
- sel_start = MIN(edit->selection_start, edit->selection_end);
- sel_end = MAX(edit->selection_start, edit->selection_end);
- if (sel_start != sel_end) {
- e_cell_text_view_supply_selection (edit, command->time, GDK_SELECTION_PRIMARY,
- cell->text + sel_start,
- sel_end - sel_start);
- } else if (edit->timer) {
- g_timer_reset (edit->timer);
- }
- redraw = TRUE;
- break;
- case E_TEP_DELETE:
- if (edit->selection_end == edit->selection_start) {
- edit->selection_end = _get_position (text_view, command);
- }
- _delete_selection (text_view);
- if (edit->timer) {
- g_timer_reset (edit->timer);
- }
- redraw = TRUE;
- change = TRUE;
- break;
-
- case E_TEP_INSERT:
- if (edit->selection_end != edit->selection_start) {
- _delete_selection (text_view);
- }
- _insert (text_view, command->string, command->value);
- if (edit->timer) {
- g_timer_reset (edit->timer);
- }
- redraw = TRUE;
- change = TRUE;
- break;
- case E_TEP_COPY:
- sel_start = MIN(edit->selection_start, edit->selection_end);
- sel_end = MAX(edit->selection_start, edit->selection_end);
- if (sel_start != sel_end) {
- e_cell_text_view_supply_selection (edit, command->time, clipboard_atom,
- cell->text + sel_start,
- sel_end - sel_start);
- }
- if (edit->timer) {
- g_timer_reset (edit->timer);
- }
- break;
- case E_TEP_PASTE:
- e_cell_text_view_get_selection (edit, clipboard_atom, command->time);
- if (edit->timer) {
- g_timer_reset (edit->timer);
- }
- redraw = TRUE;
- change = TRUE;
- break;
- case E_TEP_GET_SELECTION:
- e_cell_text_view_get_selection (edit, GDK_SELECTION_PRIMARY, command->time);
- break;
- case E_TEP_ACTIVATE:
- e_table_item_leave_edit (text_view->cell_view.e_table_item_view);
- break;
- case E_TEP_SET_SELECT_BY_WORD:
- edit->select_by_word = command->value;
- break;
- case E_TEP_GRAB:
- edit->actions = E_CELL_GRAB;
- break;
- case E_TEP_UNGRAB:
- edit->actions = E_CELL_UNGRAB;
- break;
- case E_TEP_NOP:
- break;
- }
-
- if (!edit->button_down) {
- int x;
- int i;
- struct line *lines;
- ECellTextLineBreaks *linebreaks;
-
- split_into_lines (cell);
-
- linebreaks = cell->breaks;
-
- for (lines = linebreaks->lines, i = 0; i < linebreaks->num_lines ; i++, lines ++) {
- if ((lines->text - cell->text) > edit->selection_end) {
- break;
- }
- }
- lines --;
- x = e_font_utf8_text_width (font, cell->style,
- lines->text,
- edit->selection_end - (lines->text - cell->text));
-
-
- if (x < edit->xofs_edit) {
- edit->xofs_edit = x;
- redraw = TRUE;
- }
-
- if (2 + x - cell->width > edit->xofs_edit) {
- edit->xofs_edit = 2 + x - cell->width;
- redraw = TRUE;
- }
- unref_lines (cell);
- }
-
- if (redraw){
- ect_queue_redraw (text_view, edit->cell.view_col, edit->cell.row);
- }
-#if 0
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM(text));
-#endif
-}
-
-static void _invisible_destroy (GtkInvisible *invisible,
- CellEdit *edit)
-{
- edit->invisible = NULL;
-}
-
-static GtkWidget *e_cell_text_view_get_invisible (CellEdit *edit)
-{
- GtkWidget *invisible;
- if (edit->invisible) {
- invisible = edit->invisible;
- } else {
- invisible = gtk_invisible_new ();
- edit->invisible = invisible;
-
- gtk_selection_add_target (invisible,
- GDK_SELECTION_PRIMARY,
- GDK_SELECTION_TYPE_STRING,
- E_SELECTION_PRIMARY);
- gtk_selection_add_target (invisible,
- clipboard_atom,
- GDK_SELECTION_TYPE_STRING,
- E_SELECTION_CLIPBOARD);
-
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_get",
- GTK_SIGNAL_FUNC (_selection_get),
- edit);
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_clear_event",
- GTK_SIGNAL_FUNC (_selection_clear_event),
- edit);
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_received",
- GTK_SIGNAL_FUNC (_selection_received),
- edit);
-
- gtk_signal_connect (GTK_OBJECT(invisible), "destroy",
- GTK_SIGNAL_FUNC (_invisible_destroy),
- edit);
- }
- return invisible;
-}
-
-static void
-_selection_clear_event (GtkInvisible *invisible,
- GdkEventSelection *event,
- CellEdit *edit)
-{
- if (event->selection == GDK_SELECTION_PRIMARY) {
- g_free (edit->primary_selection);
- edit->primary_selection = NULL;
- edit->primary_length = 0;
-
- edit->has_selection = FALSE;
-#if 0
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM(text));
-#endif
-
- } else if (event->selection == clipboard_atom) {
- g_free (edit->clipboard_selection);
- edit->clipboard_selection = NULL;
- edit->clipboard_length = 0;
- }
-}
-
-static void
-_selection_get (GtkInvisible *invisible,
- GtkSelectionData *selection_data,
- guint info,
- guint time_stamp,
- CellEdit *edit)
-{
- switch (info) {
- case E_SELECTION_PRIMARY:
- gtk_selection_data_set (selection_data, GDK_SELECTION_TYPE_STRING,
- 8, edit->primary_selection, edit->primary_length);
- break;
- case E_SELECTION_CLIPBOARD:
- gtk_selection_data_set (selection_data, GDK_SELECTION_TYPE_STRING,
- 8, edit->clipboard_selection, edit->clipboard_length);
- break;
- }
-}
-
-/* fixme: What happens, if delivered string is not UTF-8? */
-
-static void
-_selection_received (GtkInvisible *invisible,
- GtkSelectionData *selection_data,
- guint time,
- CellEdit *edit)
-{
- if (selection_data->length < 0 || selection_data->type != GDK_SELECTION_TYPE_STRING) {
- return;
- } else {
- ETextEventProcessorCommand command;
- command.action = E_TEP_INSERT;
- command.position = E_TEP_SELECTION;
- command.string = selection_data->data;
- command.value = selection_data->length;
- command.time = time;
- e_cell_text_view_command (edit->tep, &command, edit);
- }
-}
-
-static void
-e_cell_text_view_supply_selection (CellEdit *edit, guint time, GdkAtom selection, char *data, gint length)
-{
- gboolean successful;
- GtkWidget *invisible;
-
- invisible = e_cell_text_view_get_invisible (edit);
-
- if (selection == GDK_SELECTION_PRIMARY){
- if (edit->primary_selection) {
- g_free (edit->primary_selection);
- }
- edit->primary_selection = g_strndup (data, length);
- edit->primary_length = length;
- } else if (selection == clipboard_atom) {
- if (edit->clipboard_selection) {
- g_free (edit->clipboard_selection);
- }
- edit->clipboard_selection = g_strndup (data, length);
- edit->clipboard_length = length;
- }
-
- successful = gtk_selection_owner_set (invisible,
- selection,
- time);
-
- if (selection == GDK_SELECTION_PRIMARY)
- edit->has_selection = successful;
-}
-
-static void
-e_cell_text_view_get_selection (CellEdit *edit, GdkAtom selection, guint32 time)
-{
- GtkWidget *invisible;
- invisible = e_cell_text_view_get_invisible (edit);
- gtk_selection_convert (invisible,
- selection,
- GDK_SELECTION_TYPE_STRING,
- time);
-}
-
-static void
-_get_tep (CellEdit *edit)
-{
- if (!edit->tep) {
- edit->tep = e_text_event_processor_emacs_like_new ();
- gtk_object_ref (GTK_OBJECT (edit->tep));
- gtk_object_sink (GTK_OBJECT (edit->tep));
- gtk_signal_connect (GTK_OBJECT(edit->tep),
- "command",
- GTK_SIGNAL_FUNC(e_cell_text_view_command),
- (gpointer) edit);
- }
-}
-
-static int
-number_of_lines (char *text)
-{
- int num_lines = 0;
- gchar *p;
-
- if (!text) return 0;
-
- for (p = text; *p && g_unichar_validate (g_utf8_get_char (p)); p = g_utf8_next_char (p)) {
- if (*p == '\n') num_lines++;
- }
-
- num_lines++;
- return num_lines;
-}
-
-/* Splits the text of the text item into lines */
-static void
-split_into_lines (CurrentCell *cell)
-{
- char *p;
- struct line *lines;
- gint len;
-
- char *text = cell->text;
- ECellTextLineBreaks *linebreaks;
-
- if (! cell->breaks) {
- cell->breaks = g_new (ECellTextLineBreaks, 1);
- cell->breaks->ref_count = 1;
- } else {
- cell->breaks->ref_count ++;
- return;
- }
- linebreaks = cell->breaks;
-
- /* Check if already split. */
- linebreaks->lines = NULL;
- linebreaks->num_lines = 0;
-
- if (!text)
- return;
-
- /* First, count the number of lines */
-
- linebreaks->num_lines = number_of_lines(cell->text);
-
- /* Allocate array of lines and calculate split positions */
-
- linebreaks->lines = lines = g_new0 (struct line, linebreaks->num_lines);
-
- len = 0;
- for (p = text; *p && g_unichar_validate (g_utf8_get_char (p)); p = g_utf8_next_char (p)) {
- if (len == 0) lines->text = p;
- if (*p == '\n') {
- lines->length = p - lines->text;
- lines++;
- len = 0;
- } else
- len++;
- }
-
- if (len == 0)
- lines->text = p;
- lines->length = p - lines->text;
-
- calc_line_widths (cell);
-}
-
-/* Free lines structure. */
-static void
-unref_lines (CurrentCell *cell)
-{
- if (cell->breaks){
- cell->breaks->ref_count --;
- if (cell->breaks->ref_count <= 0){
- g_free (cell->breaks->lines);
- g_free (cell->breaks);
- cell->breaks = NULL;
- }
- }
-}
-
-static void
-calc_ellipsis (ECellTextView *text_view)
-{
- ECellText *ect = E_CELL_TEXT (((ECellView *)text_view)->ecell);
- EFont *font;
-
- font = text_view->font;
- if (font) {
- text_view->ellipsis_width[E_FONT_PLAIN] =
- e_font_utf8_text_width (font, E_FONT_PLAIN,
- ect->ellipsis ? ect->ellipsis : "...",
- ect->ellipsis ? strlen (ect->ellipsis) : 3);
- text_view->ellipsis_width[E_FONT_BOLD] =
- e_font_utf8_text_width (font, E_FONT_BOLD,
- ect->ellipsis ? ect->ellipsis : "...",
- ect->ellipsis ? strlen (ect->ellipsis) : 3);
- }
-}
-
-/* Calculates the line widths (in pixels) of the text's splitted lines */
-static void
-calc_line_widths (CurrentCell *cell)
-{
- ECellTextView *text_view = cell->text_view;
- ECellText *ect = E_CELL_TEXT (((ECellView *)text_view)->ecell);
- ECellTextLineBreaks *linebreaks = cell->breaks;
- struct line *lines;
- int i;
- int j;
- EFont *font;
-
- font = text_view->font;
-
- lines = linebreaks->lines;
- linebreaks->max_width = 0;
-
- if (!lines) return;
-
- for (i = 0; i < linebreaks->num_lines; i++) {
- if (lines->length != 0) {
- if (font) {
- lines->width = e_font_utf8_text_width (font, cell->style,
- lines->text, lines->length);
- lines->ellipsis_length = 0;
- } else {
- lines->width = 0;
- }
-
- if (ect->use_ellipsis &&
- (!(text_view->edit &&
- cell->row == text_view->edit->cell.row &&
- cell->view_col == text_view->edit->cell.view_col)) &&
- lines->width > cell->width) {
- if (font) {
- lines->ellipsis_length = 0;
- for (j = 0; j < lines->length; j++){
- if (e_font_utf8_text_width (font, cell->style, lines->text, j) +
- text_view->ellipsis_width[cell->style] < cell->width) {
- lines->ellipsis_length = j;
- }
- else
- break;
- }
- }
- else
- lines->ellipsis_length = 0;
- lines->width = e_font_utf8_text_width (font, cell->style, lines->text, lines->ellipsis_length) +
- text_view->ellipsis_width[cell->style];
- }
- else
- lines->ellipsis_length = lines->length;
-
- if (lines->width > linebreaks->max_width)
- linebreaks->max_width = lines->width;
- } else {
- lines->width = 0;
- lines->ellipsis_length = 0;
- }
-
- lines++;
- }
-}
-
-static void
-build_current_cell (CurrentCell *cell, ECellTextView *text_view, int model_col, int view_col, int row)
-{
- ECellView *ecell_view = (ECellView *) text_view;
- ECellText *ect = E_CELL_TEXT (ecell_view->ecell);
- char *temp;
-
- cell->text_view = text_view;
- cell->model_col = model_col;
- cell->view_col = view_col;
- cell->row = row;
- cell->breaks = NULL;
-
- temp = ect_get_text(ect, ecell_view->e_table_model, model_col, row);
- cell->text = g_strdup(temp);
- ect_free_text(ect, temp);
-
- cell->width = e_table_header_get_column (
- ((ETableItem *)ecell_view->e_table_item_view)->header,
- view_col)->width - 8;
- cell->style = 0;
-}
-
-static void
-unbuild_current_cell (CurrentCell *cell)
-{
- g_free(cell->text);
- cell->text = NULL;
-}
-
-
-static GdkColor*
-e_cell_text_get_color (ECellTextView *cell_view, gchar *color_spec)
-{
- ECellText *ect = E_CELL_TEXT (((ECellView*) cell_view)->ecell);
- GdkColormap *colormap;
- GdkColor *color, tmp_color;
-
- /* If the color spec is NULL we use the default color. */
- if (color_spec == NULL)
- return NULL;
-
- /* Create the hash table if we haven't already. */
- if (!ect->colors)
- ect->colors = g_hash_table_new (g_str_hash, g_str_equal);
-
- /* See if we've already allocated the color. Note that we use a
- special value of (GdkColor*) 1 in the hash to indicate that we've
- already tried and failed to allocate the color, so we don't keep
- trying to allocate it. */
- color = g_hash_table_lookup (ect->colors, color_spec);
- if (color == (GdkColor*) 1)
- return NULL;
- if (color)
- return color;
-
- /* Try to parse the color. */
- if (gdk_color_parse (color_spec, &tmp_color)) {
- colormap = gtk_widget_get_colormap (GTK_WIDGET (cell_view->canvas));
-
- /* Try to allocate the color. */
- if (gdk_color_alloc (colormap, &tmp_color))
- color = gdk_color_copy (&tmp_color);
- }
-
- g_hash_table_insert (ect->colors, g_strdup (color_spec),
- color ? color : (GdkColor*) 1);
- return color;
-}
-
diff --git a/widgets/table/e-cell-text.h b/widgets/table/e-cell-text.h
deleted file mode 100644
index 8ea9c509bd..0000000000
--- a/widgets/table/e-cell-text.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* ECellText - Text item for e-table.
- * Copyright (C) 2000 Ximian, Inc.
- * Author: Chris Lahey <clahey@ximian.com>
- *
- * Drawing and event handling from:
- *
- * EText - Text item for evolution.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Chris Lahey <clahey@ximian.com>
- *
- * A majority of code taken from:
- *
- * Text item type for GnomeCanvas widget
- *
- * GnomeCanvas is basically a port of the Tk toolkit's most excellent
- * canvas widget. Tk is copyrighted by the Regents of the University
- * of California, Sun Microsystems, and other parties.
- *
- * Copyright (C) 1998 The Free Software Foundation
- *
- * Author: Federico Mena <federico@nuclecu.unam.mx> */
-#ifndef _E_CELL_TEXT_H_
-#define _E_CELL_TEXT_H_
-
-#include <libgnomeui/gnome-canvas.h>
-#include <gal/e-table/e-cell.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_CELL_TEXT_TYPE (e_cell_text_get_type ())
-#define E_CELL_TEXT(o) (GTK_CHECK_CAST ((o), E_CELL_TEXT_TYPE, ECellText))
-#define E_CELL_TEXT_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_CELL_TEXT_TYPE, ECellTextClass))
-#define E_IS_CELL_TEXT(o) (GTK_CHECK_TYPE ((o), E_CELL_TEXT_TYPE))
-#define E_IS_CELL_TEXT_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_CELL_TEXT_TYPE))
-
-typedef struct {
- ECell parent;
-
- GtkJustification justify;
- char *font_name;
-
- double x, y; /* Position at anchor */
-
- gulong pixel; /* Fill color */
-
- /* Clip handling */
- char *ellipsis; /* The ellipsis characters. NULL = "...". */
-
- guint use_ellipsis : 1; /* Whether to use the ellipsis. */
- guint editable : 1; /* Whether the text can be edited. */
-
- int strikeout_column;
- int bold_column;
-
- /* This column in the ETable should return a string specifying a color,
- either a color name like "red" or a color spec like "rgb:F/0/0".
- See the XParseColor man page for the formats available. */
- int color_column;
-
- /* This stores the colors we have allocated. */
- GHashTable *colors;
-} ECellText;
-
-typedef struct {
- ECellClass parent_class;
-
- char *(*get_text) (ECellText *cell, ETableModel *model, int col, int row);
- void (*free_text) (ECellText *cell, char *text);
-} ECellTextClass;
-
-GtkType e_cell_text_get_type (void);
-ECell *e_cell_text_new (const char *fontname, GtkJustification justify);
-ECell *e_cell_text_construct(ECellText *cell, const char *fontname, GtkJustification justify);
-
-END_GNOME_DECLS
-
-#endif /* _E_CELL_TEXT_H_ */
-
-
diff --git a/widgets/table/e-cell-toggle.c b/widgets/table/e-cell-toggle.c
deleted file mode 100644
index 45971f6f18..0000000000
--- a/widgets/table/e-cell-toggle.c
+++ /dev/null
@@ -1,342 +0,0 @@
-/*
- * e-cell-toggle.c: Multi-state image toggle cell object.
- *
- * Author:
- * Miguel de Icaza (miguel@kernel.org)
- *
- * (C) 1999, 2000 Ximian, Inc
- */
-#include <config.h>
-#include <gtk/gtkenums.h>
-#include <gtk/gtkentry.h>
-#include <gtk/gtkwindow.h>
-#include <gtk/gtksignal.h>
-#include <gdk/gdkkeysyms.h>
-#include <libgnomeui/gnome-canvas.h>
-#include "e-cell-toggle.h"
-#include "gal/util/e-util.h"
-#include "e-table-item.h"
-
-#define PARENT_TYPE e_cell_get_type ()
-
-typedef struct {
- ECellView cell_view;
- GdkGC *gc;
- GnomeCanvas *canvas;
-} ECellToggleView;
-
-static ECellClass *parent_class;
-
-static void
-etog_queue_redraw (ECellToggleView *text_view, int view_col, int view_row)
-{
- e_table_item_redraw_range (
- text_view->cell_view.e_table_item_view,
- view_col, view_row, view_col, view_row);
-}
-
-/*
- * ECell::realize method
- */
-static ECellView *
-etog_new_view (ECell *ecell, ETableModel *table_model, void *e_table_item_view)
-{
- ECellToggleView *toggle_view = g_new0 (ECellToggleView, 1);
- ETableItem *eti = E_TABLE_ITEM (e_table_item_view);
- GnomeCanvas *canvas = GNOME_CANVAS_ITEM (eti)->canvas;
-
- toggle_view->cell_view.ecell = ecell;
- toggle_view->cell_view.e_table_model = table_model;
- toggle_view->cell_view.e_table_item_view = e_table_item_view;
- toggle_view->canvas = canvas;
-
- return (ECellView *) toggle_view;
-}
-
-static void
-etog_kill_view (ECellView *ecell_view)
-{
- g_free (ecell_view);
-}
-
-static void
-etog_realize (ECellView *ecell_view)
-{
- ECellToggleView *toggle_view = (ECellToggleView *) ecell_view;
-
- toggle_view->gc = gdk_gc_new (GTK_WIDGET (toggle_view->canvas)->window);
-}
-
-/*
- * ECell::unrealize method
- */
-static void
-etog_unrealize (ECellView *ecv)
-{
- ECellToggleView *toggle_view = (ECellToggleView *) ecv;
-
- gdk_gc_unref (toggle_view->gc);
- toggle_view->gc = NULL;
-}
-
-/*
- * ECell::draw method
- */
-static void
-etog_draw (ECellView *ecell_view, GdkDrawable *drawable,
- int model_col, int view_col, int row, ECellFlags flags,
- int x1, int y1, int x2, int y2)
-{
- ECellToggle *toggle = E_CELL_TOGGLE (ecell_view->ecell);
- gboolean selected;
-#if 0
- ECellToggleView *toggle_view = (ECellToggleView *) ecell_view;
-#endif
- GdkPixbuf *image;
- int x, y, width, height;
-
- const int value = GPOINTER_TO_INT (
- e_table_model_value_at (ecell_view->e_table_model, model_col, row));
-
- selected = flags & E_CELL_SELECTED;
-
- if (value >= toggle->n_states){
- g_warning ("Value from the table model is %d, the states we support are [0..%d)\n",
- value, toggle->n_states);
- return;
- }
-
- image = toggle->images [value];
-
- if ((x2 - x1) < gdk_pixbuf_get_width (image)){
- x = x1;
- width = x2 - x1;
- } else {
- x = x1 + ((x2 - x1) - gdk_pixbuf_get_width (image)) / 2;
- width = gdk_pixbuf_get_width (image);
- }
-
- if ((y2 - y1) < gdk_pixbuf_get_height (image)){
- y = y1;
- height = y2 - y1;
- } else {
- y = y1 + ((y2 - y1) - gdk_pixbuf_get_height (image)) / 2;
- height = gdk_pixbuf_get_height (image);
- }
-
-#if 0 /* do alpha */
- if (gdk_pixbuf_get_has_alpha (image)) {
- flat = gdk_pixbuf_composite_color_simple (
- image,
- gdk_pixbuf_get_width (image),
- gdk_pixbuf_get_height (image),
- GDK_INTERP_NEAREST,
- 255,
- 32,
- 0xffffff, 0xffffff);
-
- gdk_pixbuf_render_to_drawable (flat, drawable,
- toggle_view->gc,
- 0, 0,
- x, y,
- width, height,
- GDK_RGB_DITHER_NORMAL,
- 0, 0);
- gdk_pixbuf_unref (flat);
- } else {
- gdk_pixbuf_render_to_drawable (image, drawable,
- toggle_view->gc,
- 0, 0,
- x, y,
- width, height,
- GDK_RGB_DITHER_NORMAL,
- 0, 0);
- }
-#else
- gdk_pixbuf_render_to_drawable_alpha (image, drawable,
- 0, 0,
- x, y,
- width, height,
- GDK_PIXBUF_ALPHA_BILEVEL,
- 128,
- GDK_RGB_DITHER_NORMAL,
- x, y);
-#endif
-}
-
-static void
-etog_set_value (ECellToggleView *toggle_view, int model_col, int view_col, int row, int value)
-{
- ECell *ecell = toggle_view->cell_view.ecell;
- ECellToggle *toggle = E_CELL_TOGGLE (ecell);
-
- if (value >= toggle->n_states)
- value = 0;
-
- e_table_model_set_value_at (toggle_view->cell_view.e_table_model,
- model_col, row, GINT_TO_POINTER (value));
- etog_queue_redraw (toggle_view, view_col, row);
-}
-
-/*
- * ECell::event method
- */
-static gint
-etog_event (ECellView *ecell_view, GdkEvent *event, int model_col, int view_col, int row, ECellFlags flags, ECellActions *actions)
-{
- ECellToggleView *toggle_view = (ECellToggleView *) ecell_view;
- void *_value = e_table_model_value_at (ecell_view->e_table_model, model_col, row);
- const int value = GPOINTER_TO_INT (_value);
-
- if (flags & !E_CELL_EDITING)
- return 0;
-
- switch (event->type){
- case GDK_BUTTON_RELEASE:
- if (!e_table_model_is_cell_editable(ecell_view->e_table_model, model_col, row))
- return FALSE;
-
- etog_set_value (toggle_view, model_col, view_col, row, value + 1);
- return TRUE;
-
- case GDK_KEY_PRESS:
- if (!e_table_model_is_cell_editable(ecell_view->e_table_model, model_col, row))
- return FALSE;
-
- if (event->key.keyval == GDK_space){
- etog_set_value (toggle_view, model_col, view_col, row, value + 1);
- return TRUE;
- }
- return FALSE;
-
- default:
- return FALSE;
- }
- return TRUE;
-}
-
-/*
- * ECell::height method
- */
-static int
-etog_height (ECellView *ecell_view, int model_col, int view_col, int row)
-{
- ECellToggle *toggle = E_CELL_TOGGLE (ecell_view->ecell);
-
- return toggle->height;
-}
-
-/*
- * ECell::max_width method
- */
-static int
-etog_max_width (ECellView *ecell_view, int model_col, int view_col)
-{
- ECellToggle *toggle = E_CELL_TOGGLE (ecell_view->ecell);
- void *_value = e_table_model_value_at (ecell_view->e_table_model, model_col, 0);
- int max_width = gdk_pixbuf_get_width (toggle->images[GPOINTER_TO_INT (_value)]);
- int number_of_rows;
- int row;
-
- number_of_rows = e_table_model_row_count (ecell_view->e_table_model);
- for (row = 1; row < number_of_rows; row++) {
- void *_value = e_table_model_value_at (ecell_view->e_table_model,
- model_col, row);
- max_width = MAX (max_width, gdk_pixbuf_get_width (toggle->images[GPOINTER_TO_INT (_value)]));
- }
-
- return max_width;
-}
-
-static void
-etog_destroy (GtkObject *object)
-{
- ECellToggle *etog = E_CELL_TOGGLE (object);
- int i;
-
- for (i = 0; i < etog->n_states; i++)
- gdk_pixbuf_unref (etog->images [i]);
-
- g_free (etog->images);
-
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
-}
-
-static void
-e_cell_toggle_class_init (GtkObjectClass *object_class)
-{
- ECellClass *ecc = (ECellClass *) object_class;
-
- object_class->destroy = etog_destroy;
-
- ecc->new_view = etog_new_view;
- ecc->kill_view = etog_kill_view;
- ecc->realize = etog_realize;
- ecc->unrealize = etog_unrealize;
- ecc->draw = etog_draw;
- ecc->event = etog_event;
- ecc->height = etog_height;
- ecc->max_width = etog_max_width;
-
- parent_class = gtk_type_class (PARENT_TYPE);
-}
-
-E_MAKE_TYPE(e_cell_toggle, "ECellToggle", ECellToggle, e_cell_toggle_class_init, NULL, PARENT_TYPE);
-
-/**
- * e_cell_toggle_construct:
- * @etog: a fresh ECellToggle object
- * @border: number of pixels used as a border
- * @n_states: number of states the toggle will have
- * @images: a collection of @n_states images, one for each state.
- *
- * Constructs the @etog object with the @border, @n_staes, and @images
- * arguments.
- */
-void
-e_cell_toggle_construct (ECellToggle *etog, int border, int n_states, GdkPixbuf **images)
-{
- int max_height = 0;
- int i;
-
- etog->border = border;
- etog->n_states = n_states;
-
- etog->images = g_new (GdkPixbuf *, n_states);
-
- for (i = 0; i < n_states; i++){
- etog->images [i] = images [i];
- gdk_pixbuf_ref (images [i]);
-
- if (gdk_pixbuf_get_height (images [i]) > max_height)
- max_height = gdk_pixbuf_get_height (images [i]);
- }
-
- etog->height = max_height;
-}
-
-/**
- * e_cell_checkbox_new:
- * @border: number of pixels used as a border
- * @n_states: number of states the toggle will have
- * @images: a collection of @n_states images, one for each state.
- *
- * Creates a new ECell renderer that can be used to render toggle
- * buttons with the images specified in @images. The value returned
- * by ETableModel::get_value is typecase into an integer and clamped
- * to the [0..n_states) range. That will select the image rendered.
- *
- * Returns: an ECell object that can be used to render multi-state
- * toggle cells.
- */
-ECell *
-e_cell_toggle_new (int border, int n_states, GdkPixbuf **images)
-{
- ECellToggle *etog = gtk_type_new (e_cell_toggle_get_type ());
-
- e_cell_toggle_construct (etog, border, n_states, images);
-
- return (ECell *) etog;
-}
-
-
diff --git a/widgets/table/e-cell-toggle.h b/widgets/table/e-cell-toggle.h
deleted file mode 100644
index 0916970b00..0000000000
--- a/widgets/table/e-cell-toggle.h
+++ /dev/null
@@ -1,39 +0,0 @@
-#ifndef _E_CELL_TOGGLE_H_
-#define _E_CELL_TOGGLE_H_
-
-#include <libgnomeui/gnome-canvas.h>
-#include <gdk-pixbuf/gdk-pixbuf.h>
-#include <gal/e-table/e-cell.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_CELL_TOGGLE_TYPE (e_cell_toggle_get_type ())
-#define E_CELL_TOGGLE(o) (GTK_CHECK_CAST ((o), E_CELL_TOGGLE_TYPE, ECellToggle))
-#define E_CELL_TOGGLE_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_CELL_TOGGLE_TYPE, ECellToggleClass))
-#define E_IS_CELL_TOGGLE(o) (GTK_CHECK_TYPE ((o), E_CELL_TOGGLE_TYPE))
-#define E_IS_CELL_TOGGLE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_CELL_TOGGLE_TYPE))
-
-typedef struct {
- ECell parent;
-
- int border;
- int n_states;
- GdkPixbuf **images;
-
- int height;
-} ECellToggle;
-
-typedef struct {
- ECellClass parent_class;
-} ECellToggleClass;
-
-GtkType e_cell_toggle_get_type (void);
-ECell *e_cell_toggle_new (int border, int n_states, GdkPixbuf **images);
-void e_cell_toggle_construct (ECellToggle *etog, int border,
- int n_states, GdkPixbuf **images);
-
-END_GNOME_DECLS
-
-#endif /* _E_CELL_TOGGLE_H_ */
-
-
diff --git a/widgets/table/e-cell-tree.c b/widgets/table/e-cell-tree.c
deleted file mode 100644
index af5997eed1..0000000000
--- a/widgets/table/e-cell-tree.c
+++ /dev/null
@@ -1,721 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* e-cell-tree.c - Tree cell renderer
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Chris Toshok <toshok@ximian.com>
- *
- * A majority of code taken from:
- *
- * the ECellText renderer.
- *
- * Copyright (C) 1998 The Free Software Foundation
- * Copyright (C) 1999, 2000 Ximian, Inc.
- */
-
-#include <config.h>
-
-#include <ctype.h>
-#include <math.h>
-#include <stdio.h>
-
-#include <gdk/gdkx.h> /* for BlackPixel */
-#include <gtk/gtkenums.h>
-#include <gtk/gtkentry.h>
-#include <gtk/gtkwindow.h>
-#include <gtk/gtkinvisible.h>
-#include <gtk/gtksignal.h>
-#include <gdk/gdkkeysyms.h>
-#include <libgnomeui/gnome-canvas.h>
-
-#include "e-tree-table-adapter.h"
-#include "e-tree-model.h"
-#include "gal/util/e-util.h"
-#include "e-table-item.h"
-#include "e-cell-tree.h"
-
-#include "tree-expanded.xpm"
-#include "tree-unexpanded.xpm"
-
-#define PARENT_TYPE e_cell_get_type ()
-
-typedef struct {
- ECellView cell_view;
- ECellView *subcell_view;
- GdkGC *gc;
-
- GnomeCanvas *canvas;
-
-} ECellTreeView;
-
-static ECellClass *parent_class;
-
-#define INDENT_AMOUNT 16
-
-static ETreePath
-e_cell_tree_get_node (ETableModel *table_model, int row)
-{
- return e_table_model_value_at (table_model, -1, row);
-}
-
-static ETreeModel*
-e_cell_tree_get_tree_model (ETableModel *table_model, int row)
-{
- return e_table_model_value_at (table_model, -2, row);
-}
-
-static ETreeTableAdapter *
-e_cell_tree_get_tree_table_adapter (ETableModel *table_model, int row)
-{
- return e_table_model_value_at (table_model, -3, row);
-}
-
-static int
-visible_depth_of_node (ETableModel *model, int row)
-{
- ETreeModel *tree_model = e_cell_tree_get_tree_model(model, row);
- ETreeTableAdapter *adapter = e_cell_tree_get_tree_table_adapter(model, row);
- ETreePath path = e_cell_tree_get_node(model, row);
- return (e_tree_model_node_depth (tree_model, path)
- - (e_tree_table_adapter_root_node_is_visible (adapter) ? 0 : 1));
-}
-
-static gint
-offset_of_node (ETableModel *table_model, int row)
-{
- ETreeModel *tree_model = e_cell_tree_get_tree_model(table_model, row);
- ETreePath path = e_cell_tree_get_node(table_model, row);
-
- if (visible_depth_of_node (table_model, row) > 0 ||
- e_tree_model_node_is_expandable(tree_model, path)) {
- return (visible_depth_of_node(table_model, row) + 1) * INDENT_AMOUNT;
- } else {
- return 0;
- }
-}
-
-/*
- * ECell::new_view method
- */
-static ECellView *
-ect_new_view (ECell *ecell, ETableModel *table_model, void *e_table_item_view)
-{
- ECellTree *ect = E_CELL_TREE (ecell);
- ECellTreeView *tree_view = g_new0 (ECellTreeView, 1);
- GnomeCanvas *canvas = GNOME_CANVAS_ITEM (e_table_item_view)->canvas;
-
- tree_view->cell_view.ecell = ecell;
- tree_view->cell_view.e_table_model = table_model;
- tree_view->cell_view.e_table_item_view = e_table_item_view;
-
- /* create our subcell view */
- tree_view->subcell_view = e_cell_new_view (ect->subcell, table_model, e_table_item_view /* XXX */);
-
- tree_view->canvas = canvas;
-
- return (ECellView *)tree_view;
-}
-
-/*
- * ECell::kill_view method
- */
-static void
-ect_kill_view (ECellView *ecv)
-{
- ECellTreeView *tree_view = (ECellTreeView *) ecv;
-
- /* kill our subcell view */
- e_cell_kill_view (tree_view->subcell_view);
-
- g_free (tree_view);
-}
-
-/*
- * ECell::realize method
- */
-static void
-ect_realize (ECellView *ecell_view)
-{
- ECellTreeView *tree_view = (ECellTreeView *) ecell_view;
-
- /* realize our subcell view */
- e_cell_realize (tree_view->subcell_view);
-
- tree_view->gc = gdk_gc_new (GTK_WIDGET (tree_view->canvas)->window);
-
- gdk_gc_set_line_attributes (tree_view->gc, 1,
- GDK_LINE_ON_OFF_DASH, None, None);
- gdk_gc_set_dashes (tree_view->gc, 0, "\1\1", 2);
-
- if (parent_class->realize)
- (* parent_class->realize) (ecell_view);
-}
-
-/*
- * ECell::unrealize method
- */
-static void
-ect_unrealize (ECellView *ecv)
-{
- ECellTreeView *tree_view = (ECellTreeView *) ecv;
-
- /* unrealize our subcell view. */
- e_cell_unrealize (tree_view->subcell_view);
-
- gdk_gc_unref (tree_view->gc);
- tree_view->gc = NULL;
-
- if (parent_class->unrealize)
- (* parent_class->unrealize) (ecv);
-}
-
-/*
- * ECell::draw method
- */
-static void
-ect_draw (ECellView *ecell_view, GdkDrawable *drawable,
- int model_col, int view_col, int row, ECellFlags flags,
- int x1, int y1, int x2, int y2)
-{
- ECellTreeView *tree_view = (ECellTreeView *)ecell_view;
- ETreeModel *tree_model = e_cell_tree_get_tree_model(ecell_view->e_table_model, row);
- ETreeTableAdapter *tree_table_adapter = e_cell_tree_get_tree_table_adapter(ecell_view->e_table_model, row);
- ETreePath node;
- GdkRectangle rect, *clip_rect;
- GtkWidget *canvas = GTK_WIDGET (tree_view->canvas);
- GdkGC *fg_gc = canvas->style->fg_gc[GTK_STATE_ACTIVE];
- GdkColor *foreground;
- gboolean selected;
-
- int offset, subcell_offset;
-
- selected = flags & E_CELL_SELECTED;
-
- /* only draw the tree effects if we're the active sort */
- if (/* XXX */ TRUE) {
- GdkPixbuf *node_image;
- int node_image_width = 0, node_image_height = 0;
- ETreePath parent_node;
-
- node = e_cell_tree_get_node (ecell_view->e_table_model, row);
-
- offset = offset_of_node (ecell_view->e_table_model, row);
- subcell_offset = offset;
-
- node_image = e_tree_model_icon_at (tree_model, node);
-
- if (node_image) {
- node_image_width = gdk_pixbuf_get_width (node_image);
- node_image_height = gdk_pixbuf_get_height (node_image);
- }
-
- /*
- * Be a nice citizen: clip to the region we are supposed to draw on
- */
- rect.x = x1;
- rect.y = y1;
- rect.width = subcell_offset + node_image_width;
- rect.height = y2 - y1;
-
- gdk_gc_set_clip_rectangle (tree_view->gc, &rect);
- gdk_gc_set_clip_rectangle (fg_gc, &rect);
- clip_rect = &rect;
-
- if (selected) {
- foreground = &canvas->style->text [GTK_STATE_SELECTED];
- } else {
- foreground = &canvas->style->text [GTK_STATE_NORMAL];
- }
-
- gdk_gc_set_foreground (tree_view->gc, foreground);
-
- /* draw our lines */
- if (E_CELL_TREE(tree_view->cell_view.ecell)->draw_lines) {
-
- int depth;
-
- if (visible_depth_of_node (ecell_view->e_table_model, row) > 0
- || e_tree_model_node_get_children (tree_model, node, NULL) > 0)
- gdk_draw_line (drawable, tree_view->gc,
- rect.x + offset - INDENT_AMOUNT / 2 + 1,
- rect.y + rect.height / 2,
- rect.x + offset,
- rect.y + rect.height / 2);
-
- if (visible_depth_of_node (ecell_view->e_table_model, row) != 0) {
- gdk_draw_line (drawable, tree_view->gc,
- rect.x + offset - INDENT_AMOUNT / 2,
- rect.y,
- rect.x + offset - INDENT_AMOUNT / 2,
- (e_tree_model_node_get_next (tree_model, node)
- ? rect.y + rect.height
- : rect.y + rect.height / 2));
- }
-
- /* now traverse back up to the root of the tree, checking at
- each level if the node has siblings, and drawing the
- correct vertical pipe for it's configuration. */
- parent_node = e_tree_model_node_get_parent (tree_model, node);
- offset -= INDENT_AMOUNT;
- depth = visible_depth_of_node (ecell_view->e_table_model, row) - 1;
- while (parent_node && depth != 0) {
- if (e_tree_model_node_get_next(tree_model, parent_node)) {
- gdk_draw_line (drawable, tree_view->gc,
- rect.x + offset - INDENT_AMOUNT / 2,
- rect.y,
- rect.x + offset - INDENT_AMOUNT / 2,
- rect.y + rect.height);
- }
- parent_node = e_tree_model_node_get_parent (tree_model, parent_node);
- depth --;
- offset -= INDENT_AMOUNT;
- }
- }
-
- /* now draw our icon if we're expandable */
- if (e_tree_model_node_is_expandable (tree_model, node)) {
- GdkPixbuf *image;
- int image_width, image_height;
-
- image = (e_tree_table_adapter_node_is_expanded (tree_table_adapter, node)
- ? E_CELL_TREE(tree_view->cell_view.ecell)->open_pixbuf
- : E_CELL_TREE(tree_view->cell_view.ecell)->closed_pixbuf);
-
- image_width = gdk_pixbuf_get_width(image);
- image_height = gdk_pixbuf_get_height(image);
-
- gdk_pixbuf_render_to_drawable_alpha (image,
- drawable,
- 0, 0,
- x1 + subcell_offset - INDENT_AMOUNT / 2 - image_width / 2,
- y1 + (y2 - y1) / 2 - image_height / 2,
- image_width, image_height,
- GDK_PIXBUF_ALPHA_BILEVEL,
- 128,
- GDK_RGB_DITHER_NORMAL,
- image_width, 0);
- }
-
- if (node_image) {
- gdk_pixbuf_render_to_drawable_alpha (node_image,
- drawable,
- 0, 0,
- x1 + subcell_offset,
- y1 + (y2 - y1) / 2 - node_image_height / 2,
- node_image_width, node_image_height,
- GDK_PIXBUF_ALPHA_BILEVEL,
- 128,
- GDK_RGB_DITHER_NORMAL,
- node_image_width, 0);
- subcell_offset += node_image_width;
- }
- }
-
- /* Now cause our subcell to draw its contents, shifted by
- subcell_offset pixels */
- e_cell_draw (tree_view->subcell_view, drawable,
- model_col, view_col, row, flags,
- x1 + subcell_offset, y1, x2, y2);
-}
-
-/*
- * ECell::event method
- */
-static gint
-ect_event (ECellView *ecell_view, GdkEvent *event, int model_col, int view_col, int row, ECellFlags flags, ECellActions *actions)
-{
- ECellTreeView *tree_view = (ECellTreeView *) ecell_view;
- ETreeModel *tree_model = e_cell_tree_get_tree_model (ecell_view->e_table_model, row);
- ETreeTableAdapter *tree_table_adapter = e_cell_tree_get_tree_table_adapter(ecell_view->e_table_model, row);
- ETreePath node = e_cell_tree_get_node (ecell_view->e_table_model, row);
- int offset = offset_of_node (ecell_view->e_table_model, row);
-
- switch (event->type) {
- case GDK_BUTTON_PRESS: {
- /* if the event happened in our area of control (and
- we care about it), handle it. */
-
- /* only activate the tree control if the click/release happens in the icon's area. */
- if (event->button.x > (offset - INDENT_AMOUNT) && event->button.x < offset) {
- if (e_tree_model_node_is_expandable (tree_model, node)) {
- e_tree_table_adapter_node_set_expanded (tree_table_adapter,
- node,
- !e_tree_table_adapter_node_is_expanded(tree_table_adapter, node));
- return TRUE;
- }
- }
- else if (event->button.x < (offset - INDENT_AMOUNT))
- return FALSE;
- }
- default: {
- gint return_value;
-
- /* modify the event and pass it off to our subcell_view */
- switch (event->type) {
- case GDK_BUTTON_PRESS:
- case GDK_BUTTON_RELEASE:
- case GDK_2BUTTON_PRESS:
- case GDK_3BUTTON_PRESS:
- event->button.x -= offset;
- break;
- case GDK_MOTION_NOTIFY:
- event->motion.x -= offset;
- break;
- default:
- /* nada */
- break;
- }
-
- return_value = e_cell_event(tree_view->subcell_view, event, model_col, view_col, row, flags, actions);
-
- /* modify the event and pass it off to our subcell_view */
- switch (event->type) {
- case GDK_BUTTON_PRESS:
- case GDK_BUTTON_RELEASE:
- case GDK_2BUTTON_PRESS:
- case GDK_3BUTTON_PRESS:
- event->button.x += offset;
- break;
- case GDK_MOTION_NOTIFY:
- event->motion.x += offset;
- break;
- default:
- /* nada */
- break;
- }
-
- return return_value;
- }
- }
-}
-
-/*
- * ECell::height method
- */
-static int
-ect_height (ECellView *ecell_view, int model_col, int view_col, int row)
-{
- ECellTreeView *tree_view = (ECellTreeView *) ecell_view;
-
- return e_cell_height (tree_view->subcell_view, model_col, view_col, row);
-}
-
-/*
- * ECell::max_width method
- */
-static int
-ect_max_width (ECellView *ecell_view, int model_col, int view_col)
-{
- ECellTreeView *tree_view = (ECellTreeView *) ecell_view;
- int row;
- int number_of_rows;
- int max_width = 0;
- int width = 0;
- int subcell_max_width;
-
- number_of_rows = e_table_model_row_count (ecell_view->e_table_model);
-
- subcell_max_width = e_cell_max_width (tree_view->subcell_view, model_col, view_col);
-
- for (row = 0; row < number_of_rows; row++) {
- ETreeModel *tree_model = e_cell_tree_get_tree_model(ecell_view->e_table_model, row);
- ETreeTableAdapter *tree_table_adapter = e_cell_tree_get_tree_table_adapter(ecell_view->e_table_model, row);
- ETreePath node;
- GdkPixbuf *node_image;
- int node_image_width = 0, node_image_height = 0;
-
- int offset, subcell_offset;
- gboolean expanded, expandable;
-
- node = e_cell_tree_get_node (ecell_view->e_table_model, row);
-
- offset = offset_of_node (ecell_view->e_table_model, row);
- expandable = e_tree_model_node_is_expandable (tree_model, node);
- expanded = e_tree_table_adapter_node_is_expanded (tree_table_adapter, node);
- subcell_offset = offset;
-
- node_image = e_tree_model_icon_at (tree_model, node);
-
- if (node_image) {
- node_image_width = gdk_pixbuf_get_width (node_image);
- node_image_height = gdk_pixbuf_get_height (node_image);
- }
-
- width = subcell_max_width + subcell_offset + node_image_width;
-
- if (expandable) {
- GdkPixbuf *image;
-
- image = (expanded
- ? E_CELL_TREE(tree_view->cell_view.ecell)->open_pixbuf
- : E_CELL_TREE(tree_view->cell_view.ecell)->closed_pixbuf);
-
- width += gdk_pixbuf_get_width(image);
- }
-
- max_width = MAX (max_width, width);
- }
-
- return max_width;
-}
-
-/*
- * ECellView::show_tooltip method
- */
-static void
-ect_show_tooltip (ECellView *ecell_view, int model_col, int view_col, int row,
- int col_width, ETableTooltip *tooltip)
-{
- ECellTreeView *tree_view = (ECellTreeView *) ecell_view;
- ETreeModel *tree_model = e_cell_tree_get_tree_model (ecell_view->e_table_model, row);
- ETreePath node = e_cell_tree_get_node (ecell_view->e_table_model, row);
- int offset = offset_of_node (ecell_view->e_table_model, row);
- GdkPixbuf *node_image;
-
- node_image = e_tree_model_icon_at (tree_model, node);
- if (node_image)
- offset += gdk_pixbuf_get_width (node_image);
-
- tooltip->x += offset;
- e_cell_show_tooltip (tree_view->subcell_view, model_col, view_col, row, col_width - offset, tooltip);
-}
-
-/*
- * ECellView::enter_edit method
- */
-static void *
-ect_enter_edit (ECellView *ecell_view, int model_col, int view_col, int row)
-{
- /* just defer to our subcell's view */
- ECellTreeView *tree_view = (ECellTreeView *) ecell_view;
-
- return e_cell_enter_edit (tree_view->subcell_view, model_col, view_col, row);
-}
-
-/*
- * ECellView::leave_edit method
- */
-static void
-ect_leave_edit (ECellView *ecell_view, int model_col, int view_col, int row, void *edit_context)
-{
- /* just defer to our subcell's view */
- ECellTreeView *tree_view = (ECellTreeView *) ecell_view;
-
- e_cell_leave_edit (tree_view->subcell_view, model_col, view_col, row, edit_context);
-}
-
-static void
-ect_print (ECellView *ecell_view, GnomePrintContext *context,
- int model_col, int view_col, int row,
- double width, double height)
-{
- ECellTreeView *tree_view = (ECellTreeView *) ecell_view;
-
- if (/* XXX only if we're the active sort */ TRUE) {
- ETreeModel *tree_model = e_cell_tree_get_tree_model (ecell_view->e_table_model, row);
- ETreeTableAdapter *tree_table_adapter = e_cell_tree_get_tree_table_adapter(ecell_view->e_table_model, row);
- ETreePath node = e_cell_tree_get_node (ecell_view->e_table_model, row);
- int offset = offset_of_node (ecell_view->e_table_model, row);
- int subcell_offset = offset;
- gboolean expandable = e_tree_model_node_is_expandable (tree_model, node);
- gboolean expanded = e_tree_table_adapter_node_is_expanded (tree_table_adapter, node);
-
- /* draw our lines */
- if (E_CELL_TREE(tree_view->cell_view.ecell)->draw_lines) {
- int depth;
-
- if (!e_tree_model_node_is_root (tree_model, node)
- || e_tree_model_node_get_children (tree_model, node, NULL) > 0) {
- gnome_print_moveto (context,
- offset - INDENT_AMOUNT / 2,
- height / 2);
-
- gnome_print_lineto (context,
- offset,
- height / 2);
- }
-
- if (visible_depth_of_node (ecell_view->e_table_model, row) != 0) {
- gnome_print_moveto (context,
- offset - INDENT_AMOUNT / 2,
- height);
- gnome_print_lineto (context,
- offset - INDENT_AMOUNT / 2,
- (e_tree_model_node_get_next (tree_model, node)
- ? 0
- : height / 2));
- }
-
- /* now traverse back up to the root of the tree, checking at
- each level if the node has siblings, and drawing the
- correct vertical pipe for it's configuration. */
- node = e_tree_model_node_get_parent (tree_model, node);
- depth = visible_depth_of_node (ecell_view->e_table_model, row) - 1;
- offset -= INDENT_AMOUNT;
- while (node && depth != 0) {
- if (e_tree_model_node_get_next(tree_model, node)) {
- gnome_print_moveto (context,
- offset - INDENT_AMOUNT / 2,
- height);
- gnome_print_lineto (context,
- offset - INDENT_AMOUNT / 2,
- 0);
- }
- node = e_tree_model_node_get_parent (tree_model, node);
- depth --;
- offset -= INDENT_AMOUNT;
- }
- }
-
- /* now draw our icon if we're expandable */
- if (expandable) {
- double image_matrix [6] = {16, 0, 0, 16, 0, 0};
- GdkPixbuf *image = (expanded
- ? E_CELL_TREE(tree_view->cell_view.ecell)->open_pixbuf
- : E_CELL_TREE(tree_view->cell_view.ecell)->closed_pixbuf);
- int image_width, image_height, image_rowstride;
- guchar *image_pixels;
-
- image_width = gdk_pixbuf_get_width(image);
- image_height = gdk_pixbuf_get_height(image);
- image_pixels = gdk_pixbuf_get_pixels(image);
- image_rowstride = gdk_pixbuf_get_rowstride(image);
-
- image_matrix [4] = subcell_offset - INDENT_AMOUNT / 2 - image_width / 2;
- image_matrix [5] = height / 2 - image_height / 2;
-
- gnome_print_gsave (context);
- gnome_print_concat (context, image_matrix);
-
- gnome_print_rgbaimage (context, image_pixels, image_width, image_height, image_rowstride);
- gnome_print_grestore (context);
- }
-
- gnome_print_stroke (context);
-
- if (gnome_print_translate(context, subcell_offset, 0) == -1)
- /* FIXME */;
- width -= subcell_offset;
- }
-
-
- e_cell_print (tree_view->subcell_view, context, model_col, view_col, row, width, height);
-}
-
-static gdouble
-ect_print_height (ECellView *ecell_view, GnomePrintContext *context,
- int model_col, int view_col, int row,
- double width)
-{
- return 12; /* XXX */
-}
-
-/*
- * GtkObject::destroy method
- */
-static void
-ect_destroy (GtkObject *object)
-{
- ECellTree *ect = E_CELL_TREE (object);
-
- /* destroy our subcell */
- if (ect->subcell)
- gtk_object_unref (GTK_OBJECT (ect->subcell));
- ect->subcell = NULL;
-
- gdk_pixbuf_unref (ect->open_pixbuf);
- gdk_pixbuf_unref (ect->closed_pixbuf);
-
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
-}
-
-static void
-e_cell_tree_class_init (GtkObjectClass *object_class)
-{
- ECellClass *ecc = (ECellClass *) object_class;
-
- object_class->destroy = ect_destroy;
-
- ecc->new_view = ect_new_view;
- ecc->kill_view = ect_kill_view;
- ecc->realize = ect_realize;
- ecc->unrealize = ect_unrealize;
- ecc->draw = ect_draw;
- ecc->event = ect_event;
- ecc->height = ect_height;
- ecc->enter_edit = ect_enter_edit;
- ecc->leave_edit = ect_leave_edit;
- ecc->print = ect_print;
- ecc->print_height = ect_print_height;
- ecc->max_width = ect_max_width;
- ecc->show_tooltip = ect_show_tooltip;
-
- parent_class = gtk_type_class (PARENT_TYPE);
-}
-
-E_MAKE_TYPE(e_cell_tree, "ECellTree", ECellTree, e_cell_tree_class_init, NULL, PARENT_TYPE);
-
-/**
- * e_cell_tree_construct:
- * @ect: the ECellTree we're constructing.
- * @open_pixbuf: pixbuf to be used instead of the '-' icon.
- * @closed_pixbuf: pixbuf to be used instead of the '+' icon.
- * @draw_lines: whether or not to draw the lines between parents/children/siblings.
- * @subcell: the ECell to render to the right of the tree effects.
- *
- * Constructs an ECellTree. used by subclasses that need to
- * initialize a nested ECellTree. See e_cell_tree_new() for more info.
- *
- **/
-void
-e_cell_tree_construct (ECellTree *ect,
- GdkPixbuf *open_pixbuf,
- GdkPixbuf *closed_pixbuf,
- gboolean draw_lines,
- ECell *subcell)
-{
- ect->subcell = subcell;
- if (subcell) {
- gtk_object_ref (GTK_OBJECT (subcell));
- gtk_object_sink (GTK_OBJECT (subcell));
- }
- if (open_pixbuf)
- ect->open_pixbuf = open_pixbuf;
- else
- ect->open_pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)tree_expanded_xpm);
- if (closed_pixbuf)
- ect->closed_pixbuf = closed_pixbuf;
- else
- ect->closed_pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)tree_unexpanded_xpm);
-
- ect->draw_lines = draw_lines;
-}
-
-
-/**
- * e_cell_tree_new:
- * @open_pixbuf: pixbuf to be used instead of the '-' icon.
- * @closed_pixbuf: pixbuf to be used instead of the '+' icon.
- * @draw_lines: whether or not to draw the lines between parents/children/siblings.
- * @subcell: the ECell to render to the right of the tree effects.
- *
- * Creates a new ECell renderer that can be used to render tree
- * effects that come from an ETreeModel. Various assumptions are made
- * as to the fact that the ETableModel the ETable this cell is
- * associated with is in fact an ETreeModel. The cell uses special
- * columns to get at structural information (needed to draw the
- * lines/icons.
- *
- * Return value: an ECell object that can be used to render trees.
- **/
-ECell *
-e_cell_tree_new (GdkPixbuf *open_pixbuf,
- GdkPixbuf *closed_pixbuf,
- gboolean draw_lines,
- ECell *subcell)
-{
- ECellTree *ect = gtk_type_new (e_cell_tree_get_type ());
-
- e_cell_tree_construct (ect, open_pixbuf, closed_pixbuf, draw_lines, subcell);
-
- return (ECell *) ect;
-}
diff --git a/widgets/table/e-cell-tree.h b/widgets/table/e-cell-tree.h
deleted file mode 100644
index 7b2d007159..0000000000
--- a/widgets/table/e-cell-tree.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* ECellTree - Tree item for e-table.
- * Copyright (C) 2000 Ximian, Inc.
- * Author: Chris Toshok <toshok@ximian.com>
- *
- */
-#ifndef _E_CELL_TREE_H_
-#define _E_CELL_TREE_H_
-
-#include <libgnomeui/gnome-canvas.h>
-#include <gal/e-table/e-cell.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_CELL_TREE_TYPE (e_cell_tree_get_type ())
-#define E_CELL_TREE(o) (GTK_CHECK_CAST ((o), E_CELL_TREE_TYPE, ECellTree))
-#define E_CELL_TREE_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_CELL_TREE_TYPE, ECellTreeClass))
-#define E_IS_CELL_TREE(o) (GTK_CHECK_TYPE ((o), E_CELL_TREE_TYPE))
-#define E_IS_CELL_TREE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_CELL_TREE_TYPE))
-
-typedef struct {
- ECell parent;
-
- gboolean draw_lines;
-
- GdkPixbuf *open_pixbuf;
- GdkPixbuf *closed_pixbuf;
-
- ECell *subcell;
-} ECellTree;
-
-typedef struct {
- ECellClass parent_class;
-} ECellTreeClass;
-
-GtkType e_cell_tree_get_type (void);
-ECell *e_cell_tree_new (GdkPixbuf *open_pixbuf,
- GdkPixbuf *closed_pixbuf,
- gboolean draw_lines,
- ECell *subcell);
-void e_cell_tree_construct (ECellTree *ect,
- GdkPixbuf *open_pixbuf,
- GdkPixbuf *closed_pixbuf,
- gboolean draw_lines,
- ECell *subcell);
-
-
-END_GNOME_DECLS
-
-#endif /* _E_CELL_TREE_H_ */
-
-
diff --git a/widgets/table/e-cell.c b/widgets/table/e-cell.c
deleted file mode 100644
index 79f0a0e9bd..0000000000
--- a/widgets/table/e-cell.c
+++ /dev/null
@@ -1,354 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-cell.c: base class for cell renderers in e-table
- *
- * Author:
- * Miguel de Icaza (miguel@kernel.org)
- *
- * (C) 1999 Ximian, Inc
- */
-#include <config.h>
-#include "e-cell.h"
-#include "gal/util/e-util.h"
-
-#define PARENT_TYPE gtk_object_get_type ()
-
-static ECellView *
-ec_new_view (ECell *ecell, ETableModel *table_model, void *e_table_item_view)
-{
- return NULL;
-}
-
-static void
-ec_realize (ECellView *e_cell)
-{
-}
-
-static void
-ec_kill_view (ECellView *ecell_view)
-{
-}
-
-static void
-ec_unrealize (ECellView *e_cell)
-{
-}
-
-static void
-ec_draw (ECellView *ecell_view, GdkDrawable *drawable,
- int model_col, int view_col, int row, ECellFlags flags,
- int x1, int y1, int x2, int y2)
-{
- g_error ("e-cell-draw invoked\n");
-}
-
-static gint
-ec_event (ECellView *ecell_view, GdkEvent *event, int model_col, int view_col, int row, ECellFlags flags, ECellActions *actions)
-{
- g_error ("e-cell-event invoked\n");
- return 0;
-}
-
-static gint
-ec_height (ECellView *ecell_view, int model_col, int view_col, int row)
-{
- g_error ("e-cell-height invoked\n");
- return 0;
-}
-
-static void
-ec_focus (ECellView *ecell_view, int model_col, int view_col, int row, int x1, int y1, int x2, int y2)
-{
- ecell_view->focus_col = view_col;
- ecell_view->focus_row = row;
- ecell_view->focus_x1 = x1;
- ecell_view->focus_y1 = y1;
- ecell_view->focus_x2 = x2;
- ecell_view->focus_y2 = y2;
-}
-
-static void
-ec_unfocus (ECellView *ecell_view)
-{
- ecell_view->focus_col = -1;
- ecell_view->focus_row = -1;
- ecell_view->focus_x1 = -1;
- ecell_view->focus_y1 = -1;
- ecell_view->focus_x2 = -1;
- ecell_view->focus_y2 = -1;
-}
-
-static void *
-ec_enter_edit (ECellView *ecell_view, int model_col, int view_col, int row)
-{
- return NULL;
-}
-
-static void
-ec_leave_edit (ECellView *ecell_view, int model_col, int view_col, int row, void *context)
-{
-}
-
-static void
-ec_show_tooltip (ECellView *ecell_view, int model_col, int view_col, int row, int col_width, ETableTooltip *tooltip)
-{
- /* Do nothing */
-}
-
-static void
-e_cell_class_init (GtkObjectClass *object_class)
-{
- ECellClass *ecc = (ECellClass *) object_class;
-
- ecc->realize = ec_realize;
- ecc->unrealize = ec_unrealize;
- ecc->new_view = ec_new_view;
- ecc->kill_view = ec_kill_view;
- ecc->draw = ec_draw;
- ecc->event = ec_event;
- ecc->focus = ec_focus;
- ecc->unfocus = ec_unfocus;
- ecc->height = ec_height;
- ecc->enter_edit = ec_enter_edit;
- ecc->leave_edit = ec_leave_edit;
- ecc->print = NULL;
- ecc->print_height = NULL;
- ecc->max_width = NULL;
- ecc->show_tooltip = ec_show_tooltip;
-}
-
-static void
-e_cell_init (GtkObject *object)
-{
-}
-
-E_MAKE_TYPE(e_cell, "ECell", ECell, e_cell_class_init, e_cell_init, PARENT_TYPE);
-
-/**
- * e_cell_event:
- * @ecell_view: The ECellView where the event will be dispatched
- * @event: The GdkEvent.
- * @model_col: the column in the model
- * @view_col: the column in the view
- * @row: the row
- * @flags: flags about the current state
- * @actions: A second return value in case the cell wants to take some action (specifically grabbing & ungrabbing)
- *
- * Dispatches the event @event to the @ecell_view for.
- *
- * Returns: processing state from the GdkEvent handling.
- */
-gint
-e_cell_event (ECellView *ecell_view, GdkEvent *event, int model_col, int view_col, int row, ECellFlags flags, ECellActions *actions)
-{
- return E_CELL_CLASS (GTK_OBJECT (ecell_view->ecell)->klass)->event (
- ecell_view, event, model_col, view_col, row, flags, actions);
-}
-
-/**
- * e_cell_new_view:
- * @ecell: the Ecell that will create the new view
- * @table_model: the table model the ecell is bound to
- * @e_table_item_view: An ETableItem object (the CanvasItem that reprensents the view of the table)
- *
- * ECell renderers new to be bound to a table_model and to the actual view
- * during their life time to actually render the data. This method is invoked
- * by the ETableItem canvas item to instatiate a new view of the ECell.
- *
- * This is invoked when the ETableModel is attached to the ETableItem (a CanvasItem
- * that can render ETableModels in the screen).
- *
- * Returns: a new ECellView for this @ecell on the @table_model displayed on the @e_table_item_view.
- */
-ECellView *
-e_cell_new_view (ECell *ecell, ETableModel *table_model, void *e_table_item_view)
-{
- return E_CELL_CLASS (GTK_OBJECT (ecell)->klass)->new_view (
- ecell, table_model, e_table_item_view);
-}
-
-/**
- * e_cell_realize:
- * @ecell_view: The ECellView to be realized.
- *
- * This function is invoked to give a chance to the ECellView to allocate
- * any resources it needs from Gdk, equivalent to the GtkWidget::realize
- * signal.
- */
-void
-e_cell_realize (ECellView *ecell_view)
-{
- E_CELL_CLASS (GTK_OBJECT (ecell_view->ecell)->klass)->realize (ecell_view);
-}
-
-/**
- * e_cell_kill_view:
- * @ecell_view: view to be destroyed.
- *
- * This method it used to destroy a view of an ECell renderer
- */
-void
-e_cell_kill_view (ECellView *ecell_view)
-{
- E_CELL_CLASS (GTK_OBJECT (ecell_view->ecell)->klass)->kill_view (ecell_view);
-}
-
-/**
- * e_cell_unrealize:
- * @ecell_view: The ECellView to be unrealized.
- *
- * This function is invoked to give a chance to the ECellView to
- * release any resources it allocated during the realize method,
- * equivalent to the GtkWidget::unrealize signal.
- */
-void
-e_cell_unrealize (ECellView *ecell_view)
-{
- E_CELL_CLASS (GTK_OBJECT (ecell_view->ecell)->klass)->unrealize (ecell_view);
-}
-
-/**
- * e_cell_draw:
- * @ecell_view: the ECellView to redraw
- * @drawable: draw desination
- * @model_col: the column in the model being drawn.
- * @view_col: the column in the view being drawn (what the model maps to).
- * @row: the row being drawn
- * @flags: rendering flags.
- * @x1: boudary for the rendering
- * @y1: boudary for the rendering
- * @x2: boudary for the rendering
- * @y2: boudary for the rendering
- *
- * This instructs the ECellView to render itself into the drawable. The
- * region to be drawn in given by (x1,y1)-(x2,y2).
- *
- * The most important flags are %E_CELL_SELECTED and %E_CELL_FOCUSED, other
- * flags include alignments and justifications.
- */
-void
-e_cell_draw (ECellView *ecell_view, GdkDrawable *drawable,
- int model_col, int view_col, int row, ECellFlags flags,
- int x1, int y1, int x2, int y2)
-{
- g_return_if_fail (ecell_view != NULL);
- g_return_if_fail (row >= 0);
- g_return_if_fail (row < e_table_model_row_count(ecell_view->e_table_model));
-
- E_CELL_CLASS (GTK_OBJECT (ecell_view->ecell)->klass)->draw (
- ecell_view, drawable, model_col, view_col, row, flags, x1, y1, x2, y2);
-}
-
-/**
- * e_cell_print:
- * @ecell_view: the ECellView to redraw
- * @context: The GnomePrintContext where we output our printed data.
- * @model_col: the column in the model being drawn.
- * @view_col: the column in the view being drawn (what the model maps to).
- * @row: the row being drawn
- * @width: width
- * @height: height
- *
- * FIXME:
- */
-void
-e_cell_print (ECellView *ecell_view, GnomePrintContext *context,
- int model_col, int view_col, int row,
- double width, double height)
-{
- E_CELL_CLASS (GTK_OBJECT (ecell_view->ecell)->klass)->print
- (ecell_view, context, model_col, view_col, row, width, height);
-}
-
-/**
- * e_cell_print:
- *
- * FIXME:
- */
-gdouble
-e_cell_print_height (ECellView *ecell_view, GnomePrintContext *context,
- int model_col, int view_col, int row,
- double width)
-{
- if (E_CELL_CLASS (GTK_OBJECT (ecell_view->ecell)->klass)->print_height)
- return E_CELL_CLASS (GTK_OBJECT (ecell_view->ecell)->klass)->print_height
- (ecell_view, context, model_col, view_col, row, width);
- else
- return 0.0;
-}
-
-/**
- * e_cell_height:
- * @ecell_view: the ECellView.
- * @model_col: the column in the model
- * @view_col: the column in the view.
- * @row: the row to me measured
- *
- * Returns: the height of the cell at @model_col, @row rendered at
- * @view_col, @row.
- */
-int
-e_cell_height (ECellView *ecell_view, int model_col, int view_col, int row)
-{
- return E_CELL_CLASS (GTK_OBJECT (ecell_view->ecell)->klass)->height (
- ecell_view, model_col, view_col, row);
-}
-
-/**
- * e_cell_enter_edit:
- * @ecell_view: the ECellView that will enter editing
- * @model_col: the column in the model
- * @view_col: the column in the view
- * @row: the row
- *
- * Notifies the ECellView that it is about to enter editing mode for
- * @model_col, @row rendered at @view_col, @row.
- */
-void *
-e_cell_enter_edit (ECellView *ecell_view, int model_col, int view_col, int row)
-{
- return E_CELL_CLASS (GTK_OBJECT (ecell_view->ecell)->klass)->enter_edit (
- ecell_view, model_col, view_col, row);
-}
-
-/**
- * e_cell_leave_edit:
- * @ecell_view: the ECellView that will leave editing
- * @model_col: the column in the model
- * @view_col: the column in the view
- * @row: the row
- * @edit_context: the editing context
- *
- * Notifies the ECellView that editing is finished at @model_col, @row
- * rendered at @view_col, @row.
- */
-void
-e_cell_leave_edit (ECellView *ecell_view, int model_col, int view_col, int row, void *edit_context)
-{
- E_CELL_CLASS (GTK_OBJECT (ecell_view->ecell)->klass)->leave_edit (
- ecell_view, model_col, view_col, row, edit_context);
-}
-
-/**
- * e_cell_max_width:
- * @ecell_view: the ECellView that will leave editing
- * @model_col: the column in the model
- * @view_col: the column in the view.
- *
- * Returns: the maximum width for the ECellview at @model_col which
- * is being rendered as @view_col
- */
-int
-e_cell_max_width (ECellView *ecell_view, int model_col, int view_col)
-{
- return E_CELL_CLASS (GTK_OBJECT (ecell_view->ecell)->klass)->max_width
- (ecell_view, model_col, view_col);
-}
-
-void
-e_cell_show_tooltip (ECellView *ecell_view, int model_col, int view_col,
- int row, int col_width, ETableTooltip *tooltip)
-{
- E_CELL_CLASS (GTK_OBJECT (ecell_view->ecell)->klass)->show_tooltip
- (ecell_view, model_col, view_col, row, col_width, tooltip);
-}
diff --git a/widgets/table/e-cell.h b/widgets/table/e-cell.h
deleted file mode 100644
index b9927114bb..0000000000
--- a/widgets/table/e-cell.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_CELL_H_
-#define _E_CELL_H_
-
-#include <gdk/gdktypes.h>
-#include <libgnomeprint/gnome-print.h>
-#include <gal/e-table/e-table-model.h>
-#include <gal/e-table/e-table-tooltip.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_CELL_TYPE (e_cell_get_type ())
-#define E_CELL(o) (GTK_CHECK_CAST ((o), E_CELL_TYPE, ECell))
-#define E_CELL_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_CELL_TYPE, ECellClass))
-#define E_IS_CELL(o) (GTK_CHECK_TYPE ((o), E_CELL_TYPE))
-#define E_IS_CELL_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_CELL_TYPE))
-
-typedef enum {
- E_CELL_SELECTED = 1 << 0,
-
- E_CELL_JUSTIFICATION = 3 << 1,
- E_CELL_JUSTIFY_CENTER = 0 << 1,
- E_CELL_JUSTIFY_LEFT = 1 << 1,
- E_CELL_JUSTIFY_RIGHT = 2 << 1,
- E_CELL_JUSTIFY_FILL = 3 << 1,
-
- E_CELL_ALIGN_LEFT = 1 << 1,
- E_CELL_ALIGN_RIGHT = 1 << 2,
-
- E_CELL_FOCUSED = 1 << 3,
-
- E_CELL_EDITING = 1 << 4,
-} ECellFlags;
-
-typedef enum {
- E_CELL_GRAB = 1 << 0,
- E_CELL_UNGRAB = 1 << 1,
-} ECellActions;
-
-typedef struct {
- GtkObject object;
-} ECell;
-
-typedef struct {
- ECell *ecell;
- ETableModel *e_table_model;
- void *e_table_item_view;
-
- gint focus_x1, focus_y1, focus_x2, focus_y2;
- gint focus_col, focus_row;
-} ECellView;
-
-#define E_CELL_IS_FOCUSED(ecell_view) (ecell_view->focus_x1 != -1)
-
-typedef struct {
- GtkObjectClass parent_class;
-
- ECellView *(*new_view) (ECell *ecell, ETableModel *table_model, void *e_table_item_view);
- void (*kill_view) (ECellView *ecell_view);
-
- void (*realize) (ECellView *ecell_view);
- void (*unrealize) (ECellView *ecell_view);
-
- void (*draw) (ECellView *ecell_view, GdkDrawable *drawable,
- int model_col, int view_col, int row,
- ECellFlags flags, int x1, int y1, int x2, int y2);
- gint (*event) (ECellView *ecell_view, GdkEvent *event, int model_col, int view_col, int row, ECellFlags flags, ECellActions *actions);
- void (*focus) (ECellView *ecell_view, int model_col, int view_col,
- int row, int x1, int y1, int x2, int y2);
- void (*unfocus) (ECellView *ecell_view);
- int (*height) (ECellView *ecell_view, int model_col, int view_col, int row);
-
- void *(*enter_edit) (ECellView *ecell_view, int model_col, int view_col, int row);
- void (*leave_edit) (ECellView *ecell_view, int model_col, int view_col, int row, void *context);
- void (*print) (ECellView *ecell_view, GnomePrintContext *context,
- int model_col, int view_col, int row,
- gdouble width, gdouble height);
- gdouble (*print_height) (ECellView *ecell_view, GnomePrintContext *context,
- int model_col, int view_col, int row, gdouble width);
- int (*max_width) (ECellView *ecell_view, int model_col, int view_col);
- void (*show_tooltip) (ECellView *ecell_view, int model_col, int view_col, int row, int col_width, ETableTooltip *tooltip);
-} ECellClass;
-
-GtkType e_cell_get_type (void);
-ECellView *e_cell_new_view (ECell *ecell, ETableModel *table_model, void *e_table_item_view);
-void e_cell_kill_view (ECellView *ecell_view);
-
-gint e_cell_event (ECellView *ecell_view, GdkEvent *event, int model_col, int view_col, int row, ECellFlags flags, ECellActions *actions);
-
-void e_cell_realize (ECellView *ecell_view);
-void e_cell_unrealize (ECellView *ecell_view);
-
-void e_cell_draw (ECellView *ecell_view, GdkDrawable *drawable,
- int model_col, int view_col, int row, ECellFlags flags,
- int x1, int y1, int x2, int y2);
-void e_cell_print (ECellView *ecell_view, GnomePrintContext *context,
- int model_col, int view_col, int row,
- double width, double height);
-gdouble e_cell_print_height (ECellView *ecell_view, GnomePrintContext *context,
- int model_col, int view_col, int row, gdouble width);
-int e_cell_max_width (ECellView *ecell_view, int model_col, int view_col);
-void e_cell_show_tooltip (ECellView *ecell_view, int model_col, int view_col, int row, int col_width, ETableTooltip *tooltip);
-void e_cell_focus (ECellView *ecell_view, int model_col, int view_col, int row,
- int x1, int y1, int x2, int y2);
-void e_cell_unfocus (ECellView *ecell_view);
-int e_cell_height (ECellView *ecell_view, int model_col, int view_col, int row);
-
-void *e_cell_enter_edit (ECellView *ecell_view, int model_col, int view_col, int row);
-void e_cell_leave_edit (ECellView *ecell_view, int model_col, int view_col, int row, void *edit_context);
-
-END_GNOME_DECLS
-
-#endif /* _E_CELL_H_ */
diff --git a/widgets/table/e-table-click-to-add.c b/widgets/table/e-table-click-to-add.c
deleted file mode 100644
index 72fe24c6c0..0000000000
--- a/widgets/table/e-table-click-to-add.c
+++ /dev/null
@@ -1,544 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-table-click-to-add.c: A canvas item based view of the ETableColumn.
- *
- * Author:
- * Miguel de Icaza (miguel@gnu.org)
- *
- * Copyright 1999, 2000 Ximian, Inc.
- */
-#include <config.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtksignal.h>
-#include <libgnomeui/gnome-canvas.h>
-#include <libgnomeui/gnome-canvas-util.h>
-#include <libgnomeui/gnome-canvas-rect-ellipse.h>
-#include <gdk-pixbuf/gdk-pixbuf.h>
-
-#include "e-table-header.h"
-#include "e-table-click-to-add.h"
-#include "e-table-defines.h"
-#include "e-table-one.h"
-#include "gal/e-text/e-text.h"
-#include "gal/widgets/e-canvas.h"
-#include "gal/widgets/e-canvas-utils.h"
-
-enum {
- CURSOR_CHANGE,
- LAST_SIGNAL
-};
-
-static gint etcta_signals [LAST_SIGNAL] = { 0, };
-
-#define PARENT_OBJECT_TYPE gnome_canvas_group_get_type ()
-
-#define ELEMENTS(x) (sizeof (x) / sizeof (x[0]))
-
-static GnomeCanvasGroupClass *etcta_parent_class;
-
-enum {
- ARG_0,
- ARG_HEADER,
- ARG_MODEL,
- ARG_MESSAGE,
- ARG_WIDTH,
- ARG_HEIGHT,
-};
-
-static void
-etcta_cursor_change (GtkObject *object, gint row, gint col, ETableClickToAdd *etcta)
-{
- gtk_signal_emit (GTK_OBJECT (etcta),
- etcta_signals [CURSOR_CHANGE],
- row, col);
-}
-
-static void
-etcta_add_table_header (ETableClickToAdd *etcta, ETableHeader *header)
-{
- etcta->eth = header;
- if (etcta->eth)
- gtk_object_ref (GTK_OBJECT (etcta->eth));
- if (etcta->row)
- gnome_canvas_item_set(GNOME_CANVAS_ITEM(etcta->row),
- "ETableHeader", header,
- NULL);
-}
-
-static void
-etcta_drop_table_header (ETableClickToAdd *etcta)
-{
- GtkObject *header;
-
- if (!etcta->eth)
- return;
-
- header = GTK_OBJECT (etcta->eth);
-
- gtk_object_unref (header);
- etcta->eth = NULL;
-}
-
-static void
-etcta_add_one (ETableClickToAdd *etcta, ETableModel *one)
-{
- etcta->one = one;
- if (etcta->one)
- gtk_object_ref (GTK_OBJECT(etcta->one));
- if (etcta->row)
- gnome_canvas_item_set(GNOME_CANVAS_ITEM(etcta->row),
- "ETableModel", one,
- NULL);
- gtk_object_set(GTK_OBJECT(etcta->selection),
- "model", one,
- NULL);
-}
-
-static void
-etcta_drop_one (ETableClickToAdd *etcta)
-{
- if (!etcta->one)
- return;
- gtk_object_unref (GTK_OBJECT(etcta->one));
- etcta->one = NULL;
- gtk_object_set(GTK_OBJECT(etcta->selection),
- "model", NULL,
- NULL);
-}
-
-static void
-etcta_add_model (ETableClickToAdd *etcta, ETableModel *model)
-{
- etcta->model = model;
- if (etcta->model)
- gtk_object_ref (GTK_OBJECT(etcta->model));
-}
-
-static void
-etcta_drop_model (ETableClickToAdd *etcta)
-{
- etcta_drop_one (etcta);
- if (!etcta->model)
- return;
- gtk_object_unref (GTK_OBJECT(etcta->model));
- etcta->model = NULL;
-}
-
-static void
-etcta_add_message (ETableClickToAdd *etcta, char *message)
-{
- etcta->message = g_strdup(message);
-}
-
-static void
-etcta_drop_message (ETableClickToAdd *etcta)
-{
- g_free(etcta->message);
- etcta->message = NULL;
-}
-
-
-static void
-etcta_destroy (GtkObject *object){
- ETableClickToAdd *etcta = E_TABLE_CLICK_TO_ADD (object);
-
- etcta_drop_table_header (etcta);
- etcta_drop_model (etcta);
- etcta_drop_message (etcta);
- gtk_object_unref(GTK_OBJECT(etcta->selection));
-
- if (GTK_OBJECT_CLASS (etcta_parent_class)->destroy)
- (*GTK_OBJECT_CLASS (etcta_parent_class)->destroy) (object);
-}
-
-static void
-etcta_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- GnomeCanvasItem *item;
- ETableClickToAdd *etcta;
-
- item = GNOME_CANVAS_ITEM (o);
- etcta = E_TABLE_CLICK_TO_ADD (o);
-
- switch (arg_id){
- case ARG_HEADER:
- etcta_drop_table_header (etcta);
- etcta_add_table_header (etcta, E_TABLE_HEADER(GTK_VALUE_OBJECT (*arg)));
- break;
- case ARG_MODEL:
- etcta_drop_model (etcta);
- etcta_add_model (etcta, E_TABLE_MODEL(GTK_VALUE_OBJECT (*arg)));
- break;
- case ARG_MESSAGE:
- etcta_drop_message (etcta);
- etcta_add_message (etcta, GTK_VALUE_STRING (*arg));
- break;
- case ARG_WIDTH:
- etcta->width = GTK_VALUE_DOUBLE (*arg);
- if (etcta->row)
- gnome_canvas_item_set(etcta->row,
- "minimum_width", etcta->width,
- NULL);
- if (etcta->text)
- gnome_canvas_item_set(etcta->text,
- "width", etcta->width - 4,
- NULL);
- if (etcta->rect)
- gnome_canvas_item_set(etcta->rect,
- "x2", etcta->width - 1,
- NULL);
- break;
- }
- gnome_canvas_item_request_update(item);
-}
-
-static void
-etcta_get_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- ETableClickToAdd *etcta;
-
- etcta = E_TABLE_CLICK_TO_ADD (o);
-
- switch (arg_id){
- case ARG_HEADER:
- GTK_VALUE_OBJECT (*arg) = GTK_OBJECT(etcta->eth);
- break;
- case ARG_MODEL:
- GTK_VALUE_OBJECT (*arg) = GTK_OBJECT(etcta->model);
- break;
- case ARG_MESSAGE:
- GTK_VALUE_STRING (*arg) = g_strdup(etcta->message);
- break;
- case ARG_WIDTH:
- GTK_VALUE_DOUBLE (*arg) = etcta->width;
- break;
- case ARG_HEIGHT:
- GTK_VALUE_DOUBLE (*arg) = etcta->height;
- break;
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
-
-static void
-etcta_realize (GnomeCanvasItem *item)
-{
- ETableClickToAdd *etcta = E_TABLE_CLICK_TO_ADD (item);
-
- etcta->rect = gnome_canvas_item_new(GNOME_CANVAS_GROUP(item),
- gnome_canvas_rect_get_type(),
- "x1", (double) 0,
- "y1", (double) 0,
- "x2", (double) etcta->width - 1,
- "y2", (double) etcta->height - 1,
- "outline_color", "black",
- "fill_color", "white",
- NULL);
-
- etcta->text = gnome_canvas_item_new(GNOME_CANVAS_GROUP(item),
- e_text_get_type(),
- "text", etcta->message ? etcta->message : "",
- "anchor", GTK_ANCHOR_NW,
- "width", etcta->width - 4,
- "draw_background", FALSE,
- NULL);
- e_canvas_item_move_absolute (etcta->text, 2, 2);
-
- if (GNOME_CANVAS_ITEM_CLASS (etcta_parent_class)->realize)
- (*GNOME_CANVAS_ITEM_CLASS (etcta_parent_class)->realize)(item);
-}
-
-static void
-etcta_unrealize (GnomeCanvasItem *item)
-{
- if (GNOME_CANVAS_ITEM_CLASS (etcta_parent_class)->unrealize)
- (*GNOME_CANVAS_ITEM_CLASS (etcta_parent_class)->unrealize)(item);
-}
-
-static double
-etcta_point (GnomeCanvasItem *item, double x, double y, int cx, int cy,
- GnomeCanvasItem **actual_item)
-{
- *actual_item = item;
- return 0.0;
-}
-
-static void finish_editing (ETableClickToAdd *etcta);
-
-static int
-item_key_press (ETableItem *item, int row, int col, GdkEvent *event, ETableClickToAdd *etcta)
-{
- switch (event->key.keyval) {
- case GDK_Return:
- case GDK_KP_Enter:
- case GDK_ISO_Enter:
- case GDK_3270_Enter:
- finish_editing(etcta);
- return TRUE;
- }
- return FALSE;
-}
-
-static void
-finish_editing (ETableClickToAdd *etcta)
-{
- if (etcta->row) {
- ETableModel *one;
-
- e_table_one_commit(E_TABLE_ONE(etcta->one));
- etcta_drop_one (etcta);
- gtk_object_destroy(GTK_OBJECT(etcta->row));
- etcta->row = NULL;
-
- one = e_table_one_new(etcta->model);
- etcta_add_one (etcta, one);
- gtk_object_unref(GTK_OBJECT(one));
-
- e_selection_model_clear(E_SELECTION_MODEL(etcta->selection));
-
- etcta->row = gnome_canvas_item_new(GNOME_CANVAS_GROUP(etcta),
- e_table_item_get_type(),
- "ETableHeader", etcta->eth,
- "ETableModel", etcta->one,
- "minimum_width", etcta->width,
- "horizontal_draw_grid", FALSE,
- "vertical_draw_grid", TRUE,
- "selection_model", etcta->selection,
- "cursor_mode", E_CURSOR_SPREADSHEET,
- NULL);
-
- gtk_signal_connect(GTK_OBJECT(etcta->row), "key_press",
- GTK_SIGNAL_FUNC(item_key_press), etcta);
-
- e_table_item_set_cursor(E_TABLE_ITEM(etcta->row), 0, 0);
- }
-}
-
-/*
- * Handles the events on the ETableClickToAdd, particularly it creates the ETableItem and passes in some events.
- */
-static int
-etcta_event (GnomeCanvasItem *item, GdkEvent *e)
-{
- ETableClickToAdd *etcta = E_TABLE_CLICK_TO_ADD (item);
- int ret_val = TRUE;
-
- switch (e->type){
- case GDK_BUTTON_PRESS:
- if (etcta->text) {
- gtk_object_destroy(GTK_OBJECT(etcta->text));
- etcta->text = NULL;
- }
- if (etcta->rect) {
- gtk_object_destroy(GTK_OBJECT(etcta->rect));
- etcta->rect = NULL;
- }
- if (!etcta->row) {
- ETableModel *one;
-
- one = e_table_one_new(etcta->model);
- etcta_add_one (etcta, one);
- gtk_object_unref(GTK_OBJECT(one));
-
- e_selection_model_clear(E_SELECTION_MODEL(etcta->selection));
-
- etcta->row = gnome_canvas_item_new(GNOME_CANVAS_GROUP(item),
- e_table_item_get_type(),
- "ETableHeader", etcta->eth,
- "ETableModel", etcta->one,
- "minimum_width", etcta->width,
- "horizontal_draw_grid", FALSE,
- "vertical_draw_grid", TRUE,
- "selection_model", etcta->selection,
- "cursor_mode", E_CURSOR_SPREADSHEET,
- NULL);
-
- gtk_signal_connect(GTK_OBJECT(etcta->row), "key_press",
- GTK_SIGNAL_FUNC(item_key_press), etcta);
- }
- /* Fall through. No break; */
- case GDK_BUTTON_RELEASE:
- case GDK_2BUTTON_PRESS:
- case GDK_3BUTTON_PRESS:
- if (etcta->row) {
- gnome_canvas_item_i2w (item, &e->button.x, &e->button.y);
- gnome_canvas_item_w2i (etcta->row, &e->button.x, &e->button.y);
- gtk_signal_emit_by_name(GTK_OBJECT(etcta->row), "event", e, &ret_val);
- gnome_canvas_item_i2w (etcta->row, &e->button.x, &e->button.y);
- gnome_canvas_item_w2i (item, &e->button.x, &e->button.y);
- }
- break;
-
- case GDK_KEY_PRESS:
- switch (e->key.keyval) {
- case GDK_Tab:
- case GDK_KP_Tab:
- case GDK_ISO_Left_Tab:
- finish_editing (etcta);
- break;
- default:
- return FALSE;
- break;
- }
-
- default:
- return FALSE;
- }
- return TRUE;
-}
-
-static void
-etcta_reflow (GnomeCanvasItem *item, int flags)
-{
- ETableClickToAdd *etcta = E_TABLE_CLICK_TO_ADD (item);
-
- double old_height = etcta->height;
-
- if (etcta->text) {
- gtk_object_get(GTK_OBJECT(etcta->text),
- "height", &etcta->height,
- NULL);
- etcta->height += 6;
- }
- if (etcta->row) {
- gtk_object_get(GTK_OBJECT(etcta->row),
- "height", &etcta->height,
- NULL);
- }
-
- if (etcta->rect) {
- gtk_object_set(GTK_OBJECT(etcta->rect),
- "y2", etcta->height - 1,
- NULL);
- }
- if (old_height != etcta->height)
- e_canvas_item_request_parent_reflow(item);
-}
-
-static void
-etcta_class_init (ETableClickToAddClass *klass)
-{
- GnomeCanvasItemClass *item_class = GNOME_CANVAS_ITEM_CLASS(klass);
- GtkObjectClass *object_class = GTK_OBJECT_CLASS(klass);
-
- etcta_parent_class = gtk_type_class (PARENT_OBJECT_TYPE);
-
- klass->cursor_change = NULL;
-
- object_class->destroy = etcta_destroy;
- object_class->set_arg = etcta_set_arg;
- object_class->get_arg = etcta_get_arg;
-
- item_class->realize = etcta_realize;
- item_class->unrealize = etcta_unrealize;
- item_class->point = etcta_point;
- item_class->event = etcta_event;
-
- gtk_object_add_arg_type ("ETableClickToAdd::header", GTK_TYPE_OBJECT,
- GTK_ARG_READWRITE, ARG_HEADER);
- gtk_object_add_arg_type ("ETableClickToAdd::model", GTK_TYPE_OBJECT,
- GTK_ARG_READWRITE, ARG_MODEL);
- gtk_object_add_arg_type ("ETableClickToAdd::message", GTK_TYPE_STRING,
- GTK_ARG_READWRITE, ARG_MESSAGE);
- gtk_object_add_arg_type ("ETableClickToAdd::width", GTK_TYPE_DOUBLE,
- GTK_ARG_READWRITE, ARG_WIDTH);
- gtk_object_add_arg_type ("ETableClickToAdd::height", GTK_TYPE_DOUBLE,
- GTK_ARG_READABLE, ARG_HEIGHT);
-
- etcta_signals [CURSOR_CHANGE] =
- gtk_signal_new ("cursor_change",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableClickToAddClass, cursor_change),
- gtk_marshal_NONE__INT_INT,
- GTK_TYPE_NONE, 2, GTK_TYPE_INT, GTK_TYPE_INT);
-
- gtk_object_class_add_signals (object_class, etcta_signals, LAST_SIGNAL);
-}
-
-static void
-etcta_init (GnomeCanvasItem *item)
-{
- ETableClickToAdd *etcta = E_TABLE_CLICK_TO_ADD (item);
-
- etcta->one = NULL;
- etcta->model = NULL;
- etcta->eth = NULL;
-
- etcta->message = NULL;
-
- etcta->row = NULL;
- etcta->text = NULL;
- etcta->rect = NULL;
-
- etcta->selection = e_table_selection_model_new();
- gtk_signal_connect(GTK_OBJECT(etcta->selection), "cursor_changed",
- GTK_SIGNAL_FUNC(etcta_cursor_change), etcta);
-
- e_canvas_item_set_reflow_callback(item, etcta_reflow);
-}
-
-GtkType
-e_table_click_to_add_get_type (void)
-{
- static GtkType type = 0;
-
- if (!type){
- GtkTypeInfo info = {
- "ETableClickToAdd",
- sizeof (ETableClickToAdd),
- sizeof (ETableClickToAddClass),
- (GtkClassInitFunc) etcta_class_init,
- (GtkObjectInitFunc) etcta_init,
- NULL, /* reserved 1 */
- NULL, /* reserved 2 */
- (GtkClassInitFunc) NULL
- };
-
- type = gtk_type_unique (PARENT_OBJECT_TYPE, &info);
- }
-
- return type;
-}
-
-
-/* The colors in this need to be themefied. */
-/**
- * e_table_click_to_add_commit:
- * @etcta: The %ETableClickToAdd to commit.
- *
- * This routine commits the current thing being edited and returns to
- * just displaying the click to add message.
- **/
-void
-e_table_click_to_add_commit (ETableClickToAdd *etcta)
-{
- if (etcta->row) {
- e_table_one_commit(E_TABLE_ONE(etcta->one));
- etcta_drop_one (etcta);
- gtk_object_destroy(GTK_OBJECT(etcta->row));
- etcta->row = NULL;
- }
- if (!etcta->rect) {
- etcta->rect = gnome_canvas_item_new(GNOME_CANVAS_GROUP(etcta),
- gnome_canvas_rect_get_type(),
- "x1", (double) 0,
- "y1", (double) 0,
- "x2", (double) etcta->width - 1,
- "y2", (double) etcta->height - 1,
- "outline_color", "black",
- "fill_color", "white",
- NULL);
- }
- if (!etcta->text) {
- etcta->text = gnome_canvas_item_new(GNOME_CANVAS_GROUP(etcta),
- e_text_get_type(),
- "text", etcta->message ? etcta->message : "",
- "anchor", GTK_ANCHOR_NW,
- "width", etcta->width - 4,
- "draw_background", FALSE,
- NULL);
- e_canvas_item_move_absolute (etcta->text, 3, 3);
- }
-}
diff --git a/widgets/table/e-table-click-to-add.h b/widgets/table/e-table-click-to-add.h
deleted file mode 100644
index 5163825a7b..0000000000
--- a/widgets/table/e-table-click-to-add.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_CLICK_TO_ADD_H_
-#define _E_TABLE_CLICK_TO_ADD_H_
-
-#include <gnome-xml/tree.h>
-#include <libgnomeui/gnome-canvas.h>
-#include <gal/e-table/e-table-header.h>
-#include <gal/e-table/e-table-sort-info.h>
-#include <gal/e-table/e-table-item.h>
-#include <gal/e-table/e-table-selection-model.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_TABLE_CLICK_TO_ADD_TYPE (e_table_click_to_add_get_type ())
-#define E_TABLE_CLICK_TO_ADD(o) (GTK_CHECK_CAST ((o), E_TABLE_CLICK_TO_ADD_TYPE, ETableClickToAdd))
-#define E_TABLE_CLICK_TO_ADD_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_CLICK_TO_ADD_TYPE, ETableClickToAddClass))
-#define E_IS_TABLE_CLICK_TO_ADD(o) (GTK_CHECK_TYPE ((o), E_TABLE_CLICK_TO_ADD_TYPE))
-#define E_IS_TABLE_CLICK_TO_ADD_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_CLICK_TO_ADD_TYPE))
-
-typedef struct {
- GnomeCanvasGroup parent;
-
- ETableModel *one; /* The ETableOne. */
-
- ETableModel *model; /* The backend model. */
- ETableHeader *eth; /* This is just to give to the ETableItem. */
-
- char *message;
-
- GnomeCanvasItem *row; /* If row is NULL, we're sitting with no data and a "Click here" message. */
- GnomeCanvasItem *text; /* If text is NULL, row shouldn't be. */
- GnomeCanvasItem *rect; /* What the heck. Why not. */
-
- gdouble width;
- gdouble height;
-
- ETableSelectionModel *selection;
-} ETableClickToAdd;
-
-typedef struct {
- GnomeCanvasGroupClass parent_class;
-
- /*
- * signals
- */
- void (*cursor_change) (ETableClickToAdd *etcta, gint row, gint col);
-} ETableClickToAddClass;
-
-GtkType e_table_click_to_add_get_type (void);
-
-void e_table_click_to_add_commit (ETableClickToAdd *etcta);
-
-END_GNOME_DECLS
-
-#endif /* _E_TABLE_CLICK_TO_ADD_H_ */
diff --git a/widgets/table/e-table-col-dnd.h b/widgets/table/e-table-col-dnd.h
deleted file mode 100644
index 98b489b7c0..0000000000
--- a/widgets/table/e-table-col-dnd.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef _E_TABLE_COL_DND_H_
-#define _E_TABLE_COL_DND_H_
-
-BEGIN_GNOME_DECLS
-
-#define TARGET_ETABLE_COL_TYPE "application/x-etable-column-header"
-
-enum {
- TARGET_ETABLE_COL_HEADER
-};
-
-END_GNOME_DECLS
-
-#endif /* _E_TABLE_COL_DND_H_ */
diff --git a/widgets/table/e-table-col.c b/widgets/table/e-table-col.c
deleted file mode 100644
index 7a67a7cf55..0000000000
--- a/widgets/table/e-table-col.c
+++ /dev/null
@@ -1,207 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * E-table-col.c: ETableCol implementation
- *
- * Author:
- * Miguel de Icaza (miguel@gnu.org)
- *
- * (C) 1999 Ximian, Inc
- */
-#include <config.h>
-#include <gtk/gtkobject.h>
-#include <gtk/gtksignal.h>
-#include "e-table-col.h"
-#include "gal/util/e-util.h"
-
-#define PARENT_TYPE (gtk_object_get_type ())
-
-static GtkObjectClass *parent_class;
-
-
-enum {
- ARG_0,
- ARG_SORTABLE,
-};
-
-static void
-etc_destroy (GtkObject *object)
-{
- ETableCol *etc = E_TABLE_COL (object);
-
- gtk_object_unref (GTK_OBJECT(etc->ecell));
-
- if (etc->pixbuf)
- gdk_pixbuf_unref (etc->pixbuf);
- if (etc->text)
- g_free (etc->text);
-
- (*parent_class->destroy)(object);
-}
-
-
-static void
-etc_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- ETableCol *etc = E_TABLE_COL (o);
-
- switch (arg_id){
- case ARG_SORTABLE:
- etc->sortable = GTK_VALUE_BOOL(*arg);
- break;
- }
-}
-
-static void
-etc_get_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- ETableCol *etc = E_TABLE_COL (o);
-
- switch (arg_id){
- case ARG_SORTABLE:
- GTK_VALUE_BOOL(*arg) = etc->sortable;
- break;
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
-
-static void
-e_table_col_class_init (GtkObjectClass *object_class)
-{
- parent_class = gtk_type_class (PARENT_TYPE);
- object_class->destroy = etc_destroy;
- object_class->get_arg = etc_get_arg;
- object_class->set_arg = etc_set_arg;
-
- gtk_object_add_arg_type ("ETableCol::sortable",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_SORTABLE);
-}
-
-static void
-e_table_col_init (ETableCol *etc)
-{
- etc->width = 0;
- etc->sortable = 1;
- etc->groupable = 1;
- etc->justification = GTK_JUSTIFY_LEFT;
-}
-
-E_MAKE_TYPE(e_table_col, "ETableCol", ETableCol, e_table_col_class_init, e_table_col_init, PARENT_TYPE);
-
-/**
- * e_table_col_new:
- * @col_idx: the column we represent in the model
- * @text: a title for this column
- * @expansion: FIXME
- * @min_width: minimum width in pixels for this column
- * @ecell: the renderer to be used for this column
- * @compare: comparision function for the elements stored in this column
- * @resizable: whether the column can be resized interactively by the user
- *
- * The ETableCol represents a column to be used inside an ETable. The
- * ETableCol objects are inserted inside an ETableHeader (which is just a collection
- * of ETableCols). The ETableHeader is the definition of the order in which
- * columns are shown to the user.
- *
- * The @text argument is the the text that will be shown as a header to the
- * user. @col_idx reflects where the data for this ETableCol object will
- * be fetch from an ETableModel. So even if the user changes the order
- * of the columns being viewed (the ETableCols in the ETableHeader), the
- * column will always point to the same column inside the ETableModel.
- *
- * The @ecell argument is an ECell object that needs to know how to render the
- * data in the ETableModel for this specific row.
- *
- * Returns: the newly created ETableCol object.
- */
-ETableCol *
-e_table_col_new (int col_idx, const char *text, double expansion, int min_width,
- ECell *ecell, GCompareFunc compare, gboolean resizable)
-{
- ETableCol *etc;
-
- g_return_val_if_fail (expansion >= 0, NULL);
- g_return_val_if_fail (min_width >= 0, NULL);
- g_return_val_if_fail (ecell != NULL, NULL);
- g_return_val_if_fail (compare != NULL, NULL);
- g_return_val_if_fail (text != NULL, NULL);
-
- etc = gtk_type_new (E_TABLE_COL_TYPE);
-
- etc->is_pixbuf = FALSE;
-
- etc->col_idx = col_idx;
- etc->text = g_strdup (text);
- etc->pixbuf = NULL;
- etc->expansion = expansion;
- etc->min_width = min_width;
- etc->ecell = ecell;
- etc->compare = compare;
-
- etc->selected = 0;
- etc->resizable = resizable;
-
- gtk_object_ref (GTK_OBJECT(etc->ecell));
-
- return etc;
-}
-
-/**
- * e_table_col_new_with_pixbuf:
- * @col_idx: the column we represent in the model
- * @pixbuf: the image to be used for the header
- * @expansion: FIXME
- * @min_width: minimum width in pixels for this column
- * @ecell: the renderer to be used for this column
- * @compare: comparision function for the elements stored in this column
- * @resizable: whether the column can be resized interactively by the user
- *
- * The ETableCol represents a column to be used inside an ETable. The
- * ETableCol objects are inserted inside an ETableHeader (which is just a collection
- * of ETableCols). The ETableHeader is the definition of the order in which
- * columns are shown to the user.
- *
- * The @text argument is the the text that will be shown as a header to the
- * user. @col_idx reflects where the data for this ETableCol object will
- * be fetch from an ETableModel. So even if the user changes the order
- * of the columns being viewed (the ETableCols in the ETableHeader), the
- * column will always point to the same column inside the ETableModel.
- *
- * The @ecell argument is an ECell object that needs to know how to render the
- * data in the ETableModel for this specific row.
- *
- * Returns: the newly created ETableCol object.
- */
-ETableCol *
-e_table_col_new_with_pixbuf (int col_idx, const char *text, GdkPixbuf *pixbuf, double expansion, int min_width,
- ECell *ecell, GCompareFunc compare, gboolean resizable)
-{
- ETableCol *etc;
-
- g_return_val_if_fail (expansion >= 0, NULL);
- g_return_val_if_fail (min_width >= 0, NULL);
- g_return_val_if_fail (ecell != NULL, NULL);
- g_return_val_if_fail (compare != NULL, NULL);
- g_return_val_if_fail (pixbuf != NULL, NULL);
-
- etc = gtk_type_new (E_TABLE_COL_TYPE);
-
- etc->is_pixbuf = TRUE;
-
- etc->col_idx = col_idx;
- etc->text = g_strdup(text);
- etc->pixbuf = pixbuf;
- etc->expansion = expansion;
- etc->min_width = min_width;
- etc->ecell = ecell;
- etc->compare = compare;
-
- etc->selected = 0;
- etc->resizable = resizable;
-
- gtk_object_ref (GTK_OBJECT(etc->ecell));
- gdk_pixbuf_ref (etc->pixbuf);
-
- return etc;
-}
diff --git a/widgets/table/e-table-col.h b/widgets/table/e-table-col.h
deleted file mode 100644
index 8377beb37e..0000000000
--- a/widgets/table/e-table-col.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_COL_H_
-#define _E_TABLE_COL_H_
-
-#include <gdk-pixbuf/gdk-pixbuf.h>
-#include <gal/e-table/e-cell.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define E_TABLE_COL_TYPE (e_table_col_get_type ())
-#define E_TABLE_COL(o) (GTK_CHECK_CAST ((o), E_TABLE_COL_TYPE, ETableCol))
-#define E_TABLE_COL_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_COL_TYPE, ETableColClass))
-#define E_IS_TABLE_COL(o) (GTK_CHECK_TYPE ((o), E_TABLE_COL_TYPE))
-#define E_IS_TABLE_COL_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_COL_TYPE))
-
-typedef enum {
- E_TABLE_COL_ARROW_NONE = 0,
- E_TABLE_COL_ARROW_UP,
- E_TABLE_COL_ARROW_DOWN
-} ETableColArrow;
-
-/*
- * Information about a single column
- */
-typedef struct {
- GtkObject base;
- char *text;
- GdkPixbuf *pixbuf;
- int min_width;
- int width;
- double expansion;
- short x;
- GCompareFunc compare;
- unsigned int is_pixbuf:1;
- unsigned int selected:1;
- unsigned int resizable:1;
- unsigned int sortable:1;
- unsigned int groupable:1;
- int col_idx;
-
- GtkJustification justification;
-
- ECell *ecell;
-} ETableCol;
-
-typedef struct {
- GtkObjectClass parent_class;
-} ETableColClass;
-
-GtkType e_table_col_get_type (void);
-ETableCol *e_table_col_new (int col_idx, const char *text,
- double expansion, int min_width,
- ECell *ecell, GCompareFunc compare,
- gboolean resizable);
-ETableCol *e_table_col_new_with_pixbuf (int col_idx, const char *text,
- GdkPixbuf *pixbuf,
- double expansion, int min_width,
- ECell *ecell, GCompareFunc compare,
- gboolean resizable);
-void e_table_col_destroy (ETableCol *etc);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* _E_TABLE_COL_H_ */
-
diff --git a/widgets/table/e-table-column-specification.c b/widgets/table/e-table-column-specification.c
deleted file mode 100644
index 68c19188b1..0000000000
--- a/widgets/table/e-table-column-specification.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * E-table-column-specification.c: Savable specification of a column.
- *
- * Author:
- * Chris Lahey <clahey@ximian.com>
- *
- * (C) 2000 Ximian, Inc.
- */
-#include <config.h>
-#include <stdlib.h>
-#include <gtk/gtksignal.h>
-#include <gnome-xml/parser.h>
-#include <gnome-xml/xmlmemory.h>
-#include "gal/util/e-xml-utils.h"
-#include "gal/util/e-util.h"
-#include "e-table-column-specification.h"
-
-#define PARENT_TYPE (gtk_object_get_type())
-
-static GtkObjectClass *etcs_parent_class;
-
-static void
-free_strings (ETableColumnSpecification *etcs)
-{
- g_free(etcs->title);
- g_free(etcs->pixbuf);
- g_free(etcs->cell);
- g_free(etcs->compare);
-}
-
-static void
-etcs_destroy (GtkObject *object)
-{
- ETableColumnSpecification *etcs = E_TABLE_COLUMN_SPECIFICATION (object);
-
- free_strings(etcs);
-
- GTK_OBJECT_CLASS (etcs_parent_class)->destroy (object);
-}
-
-static void
-etcs_class_init (GtkObjectClass *klass)
-{
- etcs_parent_class = gtk_type_class (PARENT_TYPE);
-
- klass->destroy = etcs_destroy;
-}
-
-static void
-etcs_init (ETableColumnSpecification *specification)
-{
- specification->model_col = 0;
- specification->title = g_strdup("");
- specification->pixbuf = NULL;
-
- specification->expansion = 0;
- specification->minimum_width = 0;
- specification->resizable = FALSE;
-
- specification->cell = NULL;
- specification->compare = NULL;
-}
-
-E_MAKE_TYPE(e_table_column_specification, "ETableColumnSpecification", ETableColumnSpecification, etcs_class_init, etcs_init, PARENT_TYPE);
-
-ETableColumnSpecification *
-e_table_column_specification_new (void)
-{
- ETableColumnSpecification *etcs = gtk_type_new (E_TABLE_COLUMN_SPECIFICATION_TYPE);
-
- return (ETableColumnSpecification *) etcs;
-}
-
-void
-e_table_column_specification_load_from_node (ETableColumnSpecification *etcs,
- const xmlNode *node)
-{
- free_strings(etcs);
-
- etcs->model_col = e_xml_get_integer_prop_by_name(node, "model_col");
- etcs->title = e_xml_get_string_prop_by_name(node, "_title");
- etcs->pixbuf = e_xml_get_string_prop_by_name(node, "pixbuf");
-
- etcs->expansion = e_xml_get_double_prop_by_name(node, "expansion");
- etcs->minimum_width = e_xml_get_integer_prop_by_name(node, "minimum_width");
- etcs->resizable = e_xml_get_bool_prop_by_name(node, "resizable");
-
- etcs->cell = e_xml_get_string_prop_by_name(node, "cell");
- etcs->compare = e_xml_get_string_prop_by_name(node, "compare");
-
- if (etcs->title == NULL)
- etcs->title = g_strdup("");
-}
-
-xmlNode *
-e_table_column_specification_save_to_node (ETableColumnSpecification *specification,
- xmlNode *parent)
-{
- xmlNode *node;
- if (parent)
- node = xmlNewChild(parent, NULL, "ETableColumn", NULL);
- else
- node = xmlNewNode(NULL, "ETableColumn");
-
- e_xml_set_integer_prop_by_name(node, "model_col", specification->model_col);
- e_xml_set_string_prop_by_name(node, "_title", specification->title);
- e_xml_set_string_prop_by_name(node, "pixbuf", specification->pixbuf);
-
- e_xml_set_double_prop_by_name(node, "expansion", specification->expansion);
- e_xml_set_integer_prop_by_name(node, "minimum_width", specification->minimum_width);
- e_xml_set_bool_prop_by_name(node, "resizable", specification->resizable);
-
- e_xml_set_string_prop_by_name(node, "cell", specification->cell);
- e_xml_set_string_prop_by_name(node, "compare", specification->compare);
-
- return node;
-}
-
diff --git a/widgets/table/e-table-column-specification.h b/widgets/table/e-table-column-specification.h
deleted file mode 100644
index 2bcbe75e20..0000000000
--- a/widgets/table/e-table-column-specification.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_COLUMN_SPECIFICATION_H_
-#define _E_TABLE_COLUMN_SPECIFICATION_H_
-
-#include <glib.h>
-#include <gtk/gtkobject.h>
-#include <gnome-xml/tree.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-#define E_TABLE_COLUMN_SPECIFICATION_TYPE (e_table_column_specification_get_type ())
-#define E_TABLE_COLUMN_SPECIFICATION(o) (GTK_CHECK_CAST ((o), E_TABLE_COLUMN_SPECIFICATION_TYPE, ETableColumnSpecification))
-#define E_TABLE_COLUMN_SPECIFICATION_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_COLUMN_SPECIFICATION_TYPE, ETableColumnSpecificationClass))
-#define E_IS_TABLE_COLUMN_SPECIFICATION(o) (GTK_CHECK_TYPE ((o), E_TABLE_COLUMN_SPECIFICATION_TYPE))
-#define E_IS_TABLE_COLUMN_SPECIFICATION_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_COLUMN_SPECIFICATION_TYPE))
-
-typedef struct {
- GtkObject base;
- int model_col;
- char *title;
- char *pixbuf;
-
- double expansion;
- int minimum_width;
- guint resizable : 1;
-
- char *cell;
- char *compare;
-} ETableColumnSpecification;
-
-typedef struct {
- GtkObjectClass parent_class;
-} ETableColumnSpecificationClass;
-
-GtkType e_table_column_specification_get_type (void);
-
-ETableColumnSpecification *e_table_column_specification_new (void);
-
-void e_table_column_specification_load_from_node (ETableColumnSpecification *state,
- const xmlNode *node);
-xmlNode *e_table_column_specification_save_to_node (ETableColumnSpecification *state,
- xmlNode *parent);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_TABLE_COLUMN_SPECIFICATION_H_ */
diff --git a/widgets/table/e-table-column.c b/widgets/table/e-table-column.c
deleted file mode 100644
index a3d6201ffd..0000000000
--- a/widgets/table/e-table-column.c
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
- * e-table-column.c: TableColumn implementation
- *
- * Author:
- * Miguel de Icaza (miguel@gnu.org)
- *
- * (C) 1999 Ximian, Inc
- */
-#include <config.h>
-#include "e-table-column.h"
-
-enum {
- STRUCTURE_CHANGE,
- DIMENSION_CHANGE,
- LAST_SIGNAL
-};
-
-static guint etc_signals [LAST_SIGNAL] = { 0, };
-
-static GtkObjectClass *e_table_column_parent_class;
-
-static void
-e_table_column_destroy (GtkObject *object)
-{
- ETableColumn *etc = E_TABLE_COLUMN (object);
- const int cols = etc->col_count;
-
- /*
- * Destroy listeners
- */
- for (l = etc->listeners; l; l = l->next)
- g_free (l->data);
- g_slist_free (etc->listeners);
- etc->listeners = NULL;
-
- /*
- * Destroy columns
- */
- for (i = 0; i < cols; i++)
- e_table_column_remove (etc, i);
-
- if (e_table_column_parent_class->destroy)
- e_table_column_parent_class->destroy (object);
-}
-
-static void
-e_table_column_class_init (GtkObjectClass *object_class)
-{
- object_class->destroy = e_table_column_destroy;
-
- e_table_column_parent_class = (gtk_type_class (gtk_object_get_type ()));
-
- etc_signals [STRUCTURE_CHANGE] =
- gtk_signal_new ("structure_change",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableColumn, structure_change),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
- etc_signals [DIMENSION_CHANGE] =
- gtk_signal_new ("dimension_change",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableColumn, dimension_change),
- gtk_marshal_NONE__INT,
- GTK_TYPE_NONE, 1, GTK_TYPE_INT);
-
- gtk_object_class_add_signals (object_class, etc_signals, LAST_SIGNAL);
-}
-
-GtkType
-e_table_column_get_type (void)
-{
- static GtkType type = 0;
-
- if (!type){
- GtkTypeInfo info = {
- "ETableColumn",
- sizeof (ETableColumn),
- sizeof (ETableColumnClass),
- (GtkClassInitFunc) e_table_column_class_init,
- (GtkObjectInitFunc) NULL,
- NULL, /* reserved 1 */
- NULL, /* reserved 2 */
- (GtkClassInitFunc) NULL
- };
-
- type = gtk_type_unique (gtk_object_get_type (), &info);
- }
-
- return type;
-}
-
-static void
-etc_do_insert (ETableColumn *etc, int pos, ETableCol *val)
-{
- memcpy (&etc->columns [pos+1], &etc->columns [pos],
- sizeof (ETableCol *) * (etc->col_count - pos));
- etc->columns [pos] = val;
-}
-
-void
-e_table_column_add_column (ETableColumn *etc, ETableCol *tc, int pos)
-{
- ETableCol **new_ptr;
-
- g_return_if_fail (etc != NULL);
- g_return_if_fail (E_IS_TABLE_COLUMN (etc));
- g_return_if_fail (tc != NULL);
- g_return_if_fail (pos >= 0 && pos < etc->col_count);
-
- if (pos == -1)
- pos = etc->col_count;
- etc->columns = g_realloc (etc->columns, sizeof (ETableCol *) * (etc->col_count + 1));
- etc_do_insert (etc, pos, tc);
- etc->col_count++;
-
- gtk_signal_emit (GTK_OBJECT (etc), etc_signals [STRUCTURE_CHANGE]);
-}
-
-ETableCol *
-e_table_column_get_column (ETableColumn *etc, int column)
-{
- g_return_val_if_fail (etc != NULL, NULL);
- g_return_val_if_fail (E_IS_TABLE_COLUMN (etc), NULL);
-
- if (column < 0)
- return NULL;
-
- if (column >= etc->col_count)
- return NULL;
-
- return etc->columns [column];
-}
-
-int
-e_table_column_count (ETableColumn *etc)
-{
- g_return_val_if_fail (etc != NULL, 0);
- g_return_val_if_fail (E_IS_TABLE_COLUMN (etc), 0);
-
- return etc->col_count;
-}
-
-int
-e_table_column_index (ETableColumn *etc, const char *identifier)
-{
- int i;
-
- g_return_val_if_fail (etc != NULL, 0);
- g_return_val_if_fail (E_IS_TABLE_COLUMN (etc), 0);
- g_return_val_if_fail (identifier != NULL, 0);
-
- for (i = 0; i < etc->col_count; i++){
- ETableCol *tc = etc->columns [i];
-
- if (strcmp (i->id, identifier) == 0)
- return i;
- }
-
- return -1;
-}
-
-int
-e_table_column_get_index_at (ETableColumn *etc, int x_offset)
-{
- int i, total;
-
- g_return_val_if_fail (etc != NULL, 0);
- g_return_val_if_fail (E_IS_TABLE_COLUMN (etc), 0);
- g_return_val_if_fail (identifier != NULL, 0);
-
- total = 0;
- for (i = 0; i < etc->col_count; i++){
- total += etc->columns [i]->width;
-
- if (x_offset < total)
- return i;
- }
-
- return -1;
-}
-
-ETableCol **
-e_table_column_get_columns (ETableColumn *etc)
-{
- ETableCol **ret;
- int i;
-
- g_return_val_if_fail (etc != NULL, 0);
- g_return_val_if_fail (E_IS_TABLE_COLUMN (etc), 0);
-
- ret = g_new (ETableCol *, etc->col_count + 1);
- memcpy (ret, etc->columns, sizeof (ETableCol *) * etc->col_count);
- ret [etc->col_count] = NULL;
-
- return ret;
-}
-
-gboolean
-e_table_column_selection_ok (ETableColumn *etc)
-{
- g_return_val_if_fail (etc != NULL, FALSE);
- g_return_val_if_fail (E_IS_TABLE_COLUMN (etc), FALSE);
-
- return etc->selectable;
-}
-
-int
-ve_table_column_get_selected (ETableColumn *etc)
-{
- int i;
- int selected = 0;
-
- g_return_val_if_fail (etc != NULL, 0);
- g_return_val_if_fail (E_IS_TABLE_COLUMN (etc), 0);
-
- for (i = 0; i < etc->col_count; i++){
- if (etc->columns [i]->selected)
- selected++;
- }
-
- return selected;
-}
-
-int
-e_table_column_total_width (ETableColumn *etc)
-{
- int total;
-
- g_return_val_if_fail (etc != NULL, 0);
- g_return_val_if_fail (E_IS_TABLE_COLUMN (etc), 0);
-
- total = 0;
- for (i = 0; i < etc->col_count; i++)
- total += etc->columns [i].width;
-
- return total;
-}
-
-static void
-etc_do_remove (ETableColumn *etc, int idx)
-{
- memcpy (&etc->columns [idx], &etc->columns [idx+1],
- sizeof (ETableCol *) * etc->col_count - idx);
- etc->col_count--;
-}
-
-void
-e_table_column_move (ETableColumn *etc, int source_index, int target_index)
-{
- g_return_if_fail (etc != NULL);
- g_return_if_fail (E_IS_TABLE_COLUMN (etc));
- g_return_if_fail (source_index >= 0);
- g_return_if_fail (target_index >= 0);
- g_return_if_fail (source_index < etc->col_count);
- g_return_if_fail (target_index < etc->col_count);
-
- old = etc->columns [source_index];
- etc_do_remove (etc, source_index);
- etc_do_insert (etc, target_index, old);
- gtk_signal_emit (GTK_OBJECT (etc), etc_signals [STRUCTURE_CHANGE]);
-}
-
-void
-e_table_column_remove (ETableColumn *etc, int idx)
-{
- g_return_if_fail (etc != NULL);
- g_return_if_fail (E_IS_TABLE_COLUMN (etc));
- g_return_if_fail (idx >= 0);
- g_return_if_fail (idx < etc->col_count);
-
- etc_do_remove (etc, idx);
- gtk_signal_emit (GTK_OBJECT (etc), etc_signals [STRUCTURE_CHANGE]);
-}
-
-void
-e_table_column_set_selection (ETableColumn *etc, gboolean allow_selection);
-{
-}
-
-void
-e_table_column_set_size (ETableColumn *etc, int idx, int size)
-{
- g_return_if_fail (etc != NULL);
- g_return_if_fail (E_IS_TABLE_COLUMN (etc));
- g_return_if_fail (idx >= 0);
- g_return_if_fail (idx < etc->col_count);
- g_return_if_fail (size > 0);
-
- etc->columns [idx]->width = size;
- gtk_signal_emit (GTK_OBJECT (etc), etc_signals [SIZE_CHANGE], idx);
-}
diff --git a/widgets/table/e-table-config-field.c b/widgets/table/e-table-config-field.c
deleted file mode 100644
index d5116b1a11..0000000000
--- a/widgets/table/e-table-config-field.c
+++ /dev/null
@@ -1,278 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * E-table-config-field.c: One field of either the sort or group dialog.
- *
- * Author:
- * Chris Lahey <clahey@ximian.com>
- *
- * (C) 2000 Ximian, Inc.
- */
-#include <config.h>
-#include <stdlib.h>
-#include "gal/util/e-util.h"
-#include "e-table-config-field.h"
-
-#define PARENT_TYPE (gtk_vbox_get_type())
-
-static GtkVBoxClass *etcf_parent_class;
-
-static void
-etcf_destroy (GtkObject *object)
-{
- ETableConfigField *etcf = E_TABLE_CONFIG_FIELD (object);
-
- gtk_object_unref(GTK_OBJECT(etcf->spec));
- gtk_object_unref(GTK_OBJECT(etcf->sort_info));
-
- GTK_OBJECT_CLASS (etcf_parent_class)->destroy (object);
-}
-
-static void
-etcf_class_init (GtkObjectClass *klass)
-{
- etcf_parent_class = gtk_type_class (PARENT_TYPE);
-
- klass->destroy = etcf_destroy;
-}
-
-static void
-etcf_init (ETableConfigField *etcf)
-{
- etcf->spec = NULL;
- etcf->sort_info = NULL;
-
- etcf->combo = NULL;
- etcf->radio_ascending = NULL;
- etcf->radio_descending = NULL;
- etcf->child_fields = NULL;
-}
-
-E_MAKE_TYPE(e_table_config_field, "ETableConfigField", ETableConfigField, etcf_class_init, etcf_init, PARENT_TYPE);
-
-ETableConfigField *
-e_table_config_field_new (ETableSpecification *spec,
- ETableSortInfo *sort_info,
- gboolean grouping)
-{
- ETableConfigField *etcf = gtk_type_new (E_TABLE_CONFIG_FIELD_TYPE);
-
- e_table_config_field_construct (etcf, spec, sort_info, grouping);
-
- return (ETableConfigField *) etcf;
-}
-
-inline static int
-etcf_get_count (ETableConfigField *etcf)
-{
- if (etcf->grouping)
- return e_table_sort_info_grouping_get_count(etcf->sort_info);
- else
- return e_table_sort_info_sorting_get_count(etcf->sort_info);
-}
-
-inline static ETableSortColumn
-etcf_get_nth (ETableConfigField *etcf)
-{
- if (etcf->grouping)
- return e_table_sort_info_grouping_get_nth(etcf->sort_info, etcf->n);
- else
- return e_table_sort_info_sorting_get_nth(etcf->sort_info, etcf->n);
-}
-
-inline static void
-etcf_set_nth (ETableConfigField *etcf, ETableSortColumn column)
-{
- if (etcf->grouping)
- e_table_sort_info_grouping_set_nth(etcf->sort_info, etcf->n, column);
- else
- e_table_sort_info_sorting_set_nth(etcf->sort_info, etcf->n, column);
-}
-
-inline static void
-etcf_truncate (ETableConfigField *etcf)
-{
- if (etcf->grouping)
- e_table_sort_info_grouping_truncate(etcf->sort_info, etcf->n);
- else
- e_table_sort_info_sorting_truncate(etcf->sort_info, etcf->n);
-}
-
-static void
-etcf_set_sensitivity(ETableConfigField *etcf)
-{
- int count = etcf_get_count(etcf);
-
- if (etcf->n >= count) {
- gtk_widget_set_sensitive(etcf->radio_ascending, FALSE);
- gtk_widget_set_sensitive(etcf->radio_descending, FALSE);
- if (etcf->child_fields)
- gtk_widget_set_sensitive(etcf->child_fields, FALSE);
- } else {
- gtk_widget_set_sensitive(etcf->radio_ascending, TRUE);
- gtk_widget_set_sensitive(etcf->radio_descending, TRUE);
- if (etcf->child_fields)
- gtk_widget_set_sensitive(etcf->child_fields, TRUE);
- }
-}
-
-static void
-toggled(GtkWidget *widget, ETableConfigField *etcf)
-{
- int count;
-
- count = etcf_get_count(etcf);
- if (count > etcf->n) {
- ETableSortColumn sort_column;
-
- sort_column = etcf_get_nth(etcf);
- sort_column.ascending = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(etcf->radio_ascending));
- etcf_set_nth(etcf, sort_column);
- }
-}
-
-static void
-changed(GtkWidget *widget, ETableConfigField *etcf)
-{
- ETableColumnSpecification **column;
- gchar *text;
-
- text = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(etcf->combo)->entry));
- for (column = etcf->spec->columns; *column; column++) {
- if (!strcmp((*column)->title_, text)) {
- ETableSortColumn sort_column;
-
- sort_column.ascending = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(etcf->radio_ascending));
- sort_column.column = (*column)->model_col;
-
- etcf_set_nth(etcf, sort_column);
- etcf_set_sensitivity(etcf);
- return;
- }
- }
- etcf_truncate(etcf);
- etcf_set_sensitivity(etcf);
-}
-
-static void
-etcf_setup(ETableConfigField *etcf)
-{
- int count;
- GList *list = NULL;
- ETableColumnSpecification **column;
- ETableColumnSpecification *chosen_column = NULL;
- int model_col = -1;
-
- etcf_set_sensitivity(etcf);
-
- count = etcf_get_count(etcf);
-
- if (count > etcf->n) {
- ETableSortColumn sort_column;
-
- sort_column = etcf_get_nth(etcf);
- model_col = sort_column.column;
- if (sort_column.ascending)
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(etcf->radio_ascending), TRUE);
- else
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(etcf->radio_descending), TRUE);
- }
-
- for (column = etcf->spec->columns; *column; column++) {
- list = g_list_prepend(list, (*column)->title_);
- if (count > etcf->n && chosen_column == NULL && (*column)->model_col == model_col) {
- chosen_column = *column;
- }
- }
- list = g_list_reverse(list);
- list = g_list_prepend(list, "None");
-
- gtk_combo_set_popdown_strings(GTK_COMBO(etcf->combo), list);
- g_list_free(list);
-
- if (chosen_column) {
- gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(etcf->combo)->entry), chosen_column->title_);
- } else {
- gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(etcf->combo)->entry), "None");
- }
-
- gtk_signal_connect(GTK_OBJECT(GTK_COMBO(etcf->combo)->entry), "changed",
- GTK_SIGNAL_FUNC(changed), etcf);
- gtk_signal_connect(GTK_OBJECT(etcf->radio_ascending), "toggled",
- GTK_SIGNAL_FUNC(toggled), etcf);
- gtk_signal_connect(GTK_OBJECT(etcf->radio_descending), "toggled",
- GTK_SIGNAL_FUNC(toggled), etcf);
-}
-
-static ETableConfigField *
-e_table_config_field_construct_nth (ETableConfigField *etcf,
- ETableSpecification *spec,
- ETableSortInfo *sort_info,
- gboolean grouping,
- int n)
-{
- GtkWidget *frame;
- GtkWidget *internal_hbox;
- GtkWidget *internal_vbox1;
- GtkWidget *internal_vbox2;
-
- etcf->spec = spec;
- gtk_object_ref(GTK_OBJECT(spec));
-
- etcf->sort_info = sort_info;
- gtk_object_ref(GTK_OBJECT(sort_info));
-
- etcf->grouping = grouping;
- etcf->n = n;
-
- gtk_box_set_spacing(GTK_BOX(etcf), 6);
-
- frame = gtk_frame_new(n > 0 ? _("Then By") : (grouping ? _("Group By") : _("Sort By")));
- gtk_box_pack_start(GTK_BOX(etcf), frame, FALSE, FALSE, 0);
-
- internal_hbox = gtk_hbox_new(FALSE, 6);
- gtk_container_add(GTK_CONTAINER(frame), internal_hbox);
- gtk_container_set_border_width(GTK_CONTAINER(internal_hbox), 6);
-
- internal_vbox1 = gtk_vbox_new(FALSE, 6);
- gtk_box_pack_start(GTK_BOX(internal_hbox), internal_vbox1, FALSE, FALSE, 0);
-
- etcf->combo = gtk_combo_new();
- gtk_box_pack_start(GTK_BOX(internal_vbox1), etcf->combo, FALSE, FALSE, 0);
-
- internal_vbox2 = gtk_vbox_new(FALSE, 6);
- gtk_box_pack_start(GTK_BOX(internal_hbox), internal_vbox2, FALSE, FALSE, 0);
-
- etcf->radio_ascending = gtk_radio_button_new_with_label (NULL, _("Ascending"));
- gtk_box_pack_start(GTK_BOX(internal_vbox2), etcf->radio_ascending, FALSE, FALSE, 0);
-
- etcf->radio_descending = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON(etcf->radio_ascending), _("Descending"));
- gtk_box_pack_start(GTK_BOX(internal_vbox2), etcf->radio_descending, FALSE, FALSE, 0);
-
- if (n < 3) {
- etcf->child_fields = GTK_WIDGET(gtk_type_new (E_TABLE_CONFIG_FIELD_TYPE));
- e_table_config_field_construct_nth(E_TABLE_CONFIG_FIELD(etcf->child_fields), spec, sort_info, grouping, n + 1);
- gtk_box_pack_start(GTK_BOX(etcf), etcf->child_fields, FALSE, FALSE, 0);
- gtk_widget_show(etcf->child_fields);
- } else
- etcf->child_fields = NULL;
-
- etcf_setup(etcf);
-
- gtk_widget_show(etcf->radio_descending);
- gtk_widget_show(etcf->radio_ascending);
- gtk_widget_show(internal_vbox2);
- gtk_widget_show(etcf->combo);
- gtk_widget_show(internal_vbox1);
- gtk_widget_show(internal_hbox);
- gtk_widget_show(frame);
- return etcf;
-}
-
-ETableConfigField *
-e_table_config_field_construct (ETableConfigField *etcf,
- ETableSpecification *spec,
- ETableSortInfo *sort_info,
- gboolean grouping)
-{
- return e_table_config_field_construct_nth(etcf, spec, sort_info, grouping, 0);
-}
diff --git a/widgets/table/e-table-config-field.h b/widgets/table/e-table-config-field.h
deleted file mode 100644
index 9df83238ee..0000000000
--- a/widgets/table/e-table-config-field.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_CONFIG_FIELD_H_
-#define _E_TABLE_CONFIG_FIELD_H_
-
-#include <gtk/gtkvbox.h>
-#include <gal/e-table/e-table-sort-info.h>
-#include <gal/e-table/e-table-specification.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_TABLE_CONFIG_FIELD_TYPE (e_table_config_field_get_type ())
-#define E_TABLE_CONFIG_FIELD(o) (GTK_CHECK_CAST ((o), E_TABLE_CONFIG_FIELD_TYPE, ETableConfigField))
-#define E_TABLE_CONFIG_FIELD_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_CONFIG_FIELD_TYPE, ETableConfigFieldClass))
-#define E_IS_TABLE_CONFIG_FIELD(o) (GTK_CHECK_TYPE ((o), E_TABLE_CONFIG_FIELD_TYPE))
-#define E_IS_TABLE_CONFIG_FIELD_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_CONFIG_FIELD_TYPE))
-
-typedef struct {
- GtkVBox base;
-
- ETableSpecification *spec;
- ETableSortInfo *sort_info;
- guint grouping : 1;
- int n;
-
- GtkWidget *combo;
- GtkWidget *radio_ascending;
- GtkWidget *radio_descending;
-
- GtkWidget *child_fields;
-} ETableConfigField;
-
-typedef struct {
- GtkVBoxClass parent_class;
-} ETableConfigFieldClass;
-
-GtkType e_table_config_field_get_type (void);
-ETableConfigField *e_table_config_field_new (ETableSpecification *spec,
- ETableSortInfo *sort_info,
- gboolean grouping);
-ETableConfigField *e_table_config_field_construct (ETableConfigField *field,
- ETableSpecification *spec,
- ETableSortInfo *sort_info,
- gboolean grouping);
-
-END_GNOME_DECLS
-
-#endif /* _E_TABLE_CONFIG_FIELD_H_ */
diff --git a/widgets/table/e-table-config.c b/widgets/table/e-table-config.c
deleted file mode 100644
index 58f11a1e3a..0000000000
--- a/widgets/table/e-table-config.c
+++ /dev/null
@@ -1,790 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * E-table-config.c: The ETable config dialog.
- *
- * Authors:
- * Chris Lahey (clahey@ximian.com)
- * Miguel de Icaza (miguel@ximian.com)
- *
- * FIXME:
- * Sort Dialog: when text is selected, the toggle button switches state.
- * Make Clear all work.
- *
- * (C) 2000, 2001 Ximian, Inc.
- */
-
-#include <config.h>
-
-#include "e-table-config.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <gtk/gtkentry.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtknotebook.h>
-#include <gtk/gtksignal.h>
-#include <gtk/gtktogglebutton.h>
-#include <libgnomeui/gnome-dialog.h>
-#include <libgnomeui/gnome-propertybox.h>
-#include <glade/glade.h>
-#include "gal/util/e-util.h"
-#include "gal/util/e-i18n.h"
-
-
-#define PARENT_TYPE (gtk_object_get_type())
-
-static GtkObjectClass *config_parent_class;
-
-enum {
- CHANGED,
- LAST_SIGNAL
-};
-
-static guint e_table_config_signals [LAST_SIGNAL] = { 0, };
-
-static void
-config_destroy (GtkObject *object)
-{
- ETableConfig *config = E_TABLE_CONFIG (object);
-
- gtk_object_destroy (GTK_OBJECT (config->state));
- gtk_object_unref (GTK_OBJECT (config->source_state));
- gtk_object_unref (GTK_OBJECT (config->source_spec));
-
- g_slist_free (config->column_names);
- config->column_names = NULL;
-
- GTK_OBJECT_CLASS (config_parent_class)->destroy (object);
-}
-
-static void
-e_table_config_changed (ETableConfig *config, ETableState *state)
-{
- g_return_if_fail (config != NULL);
- g_return_if_fail (E_IS_TABLE_CONFIG (config));
-
-
- gtk_signal_emit(GTK_OBJECT(config),
- e_table_config_signals [CHANGED],
- state);
-}
-
-static void
-config_class_init (GtkObjectClass *object_class)
-{
- ETableConfigClass *klass = E_TABLE_CONFIG_CLASS(object_class);
-
- config_parent_class = gtk_type_class (PARENT_TYPE);
-
- klass->changed = NULL;
-
- object_class->destroy = config_destroy;
-
- e_table_config_signals [CHANGED] =
- gtk_signal_new ("changed",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableConfigClass, changed),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- gtk_object_class_add_signals (object_class, e_table_config_signals, LAST_SIGNAL);
-}
-
-static ETableColumnSpecification *
-find_column_in_spec (ETableSpecification *spec, int model_col)
-{
- ETableColumnSpecification **column;
-
- for (column = spec->columns; *column; column++){
- if ((*column)->model_col != model_col)
- continue;
-
- return *column;
- }
-
- return NULL;
-}
-
-static int
-find_model_column_by_name (ETableSpecification *spec, const char *s)
-{
- ETableColumnSpecification **column;
-
- for (column = spec->columns; *column; column++){
-
- if (g_strcasecmp ((*column)->title, s) == 0)
- return (*column)->model_col;
- }
- return -1;
-}
-
-static void
-update_sort_and_group_config_dialog (ETableConfig *config, gboolean is_sort)
-{
- ETableConfigSortWidgets *widgets;
- int count, i;
-
- if (is_sort){
- count = e_table_sort_info_sorting_get_count (
- config->temp_state->sort_info);
- widgets = &config->sort [0];
- } else {
- count = e_table_sort_info_grouping_get_count (
- config->temp_state->sort_info);
- widgets = &config->group [0];
- }
-
- for (i = 0; i < 4; i++){
- gboolean sensitive = (i <= count);
- char *text = "";
-
- gtk_widget_set_sensitive (widgets [i].frames, sensitive);
-
- /*
- * Sorting is set, auto select the text
- */
- gtk_signal_handler_block (
- GTK_OBJECT (widgets [i].radio_ascending),
- widgets [i].toggled_id);
- gtk_signal_handler_block (
- GTK_OBJECT (widgets [i].combo->entry),
- widgets [i].changed_id);
-
- if (i < count){
- GtkToggleButton *a, *d;
- ETableSortColumn col =
- is_sort
- ? e_table_sort_info_sorting_get_nth (
- config->temp_state->sort_info,
- i)
- : e_table_sort_info_grouping_get_nth (
- config->temp_state->sort_info,
- i);
-
- ETableColumnSpecification *column =
- find_column_in_spec (config->source_spec, col.column);
-
- if (!column){
- /*
- * This is a bug in the programmer
- * stuff, but by the time we arrive
- * here, the user has been given a
- * warning
- */
- continue;
- }
-
- text = gettext (column->title);
-
- /*
- * Update radio buttons
- */
- a = GTK_TOGGLE_BUTTON (
- widgets [i].radio_ascending);
- d = GTK_TOGGLE_BUTTON (
- widgets [i].radio_descending);
-
- gtk_toggle_button_set_active (col.ascending ? a:d, 1);
- } else {
- GtkToggleButton *t;
-
- t = GTK_TOGGLE_BUTTON (
- widgets [i].radio_ascending);
-
- if (is_sort)
- g_assert (widgets [i].radio_ascending != config->group [i].radio_ascending);
- else
- g_assert (widgets [i].radio_ascending != config->sort [i].radio_ascending);
- gtk_toggle_button_set_active (t, 1);
- }
-
- /* Set the text */
- gtk_combo_text_set_text (widgets [i].combo, text);
-
- gtk_signal_handler_unblock (
- GTK_OBJECT (widgets [i].radio_ascending),
- widgets [i].toggled_id);
- gtk_signal_handler_unblock (
- GTK_OBJECT (widgets [i].combo->entry),
- widgets [i].changed_id);
- }
-}
-
-static void
-config_sort_info_update (ETableConfig *config)
-{
- ETableSortInfo *info = config->state->sort_info;
- GString *res;
- int count, i;
-
- count = e_table_sort_info_sorting_get_count (info);
- res = g_string_new ("");
-
- for (i = 0; i < count; i++) {
- ETableSortColumn col = e_table_sort_info_sorting_get_nth (info, i);
- ETableColumnSpecification *column;
-
- column = find_column_in_spec (config->source_spec, col.column);
- if (!column){
- g_warning ("Could not find column model in specification");
- continue;
- }
-
- g_string_append (res, gettext ((column)->title));
- g_string_append_c (res, ' ');
- g_string_append (
- res,
- col.ascending ?
- _("(Ascending)") : _("(Descending)"));
-
- if ((i + 1) != count)
- g_string_append (res, ", ");
- }
-
- if (res->str [0] == 0)
- g_string_append (res, _("Not sorted"));
-
- gtk_label_set_text (GTK_LABEL(config->sort_label), res->str);
-
- g_string_free (res, TRUE);
-}
-
-static void
-config_group_info_update (ETableConfig *config)
-{
- ETableSortInfo *info = config->state->sort_info;
- GString *res;
- int count, i;
-
- count = e_table_sort_info_grouping_get_count (info);
- res = g_string_new ("");
-
- for (i = 0; i < count; i++) {
- ETableSortColumn col = e_table_sort_info_grouping_get_nth (info, i);
- ETableColumnSpecification *column;
-
- column = find_column_in_spec (config->source_spec, col.column);
- if (!column){
- g_warning ("Could not find model column in specification");
- continue;
- }
-
- g_string_append (res, gettext ((column)->title));
- g_string_append_c (res, ' ');
- g_string_append (
- res,
- col.ascending ?
- _("(Ascending)") : _("(Descending)"));
-
- if ((i+1) != count)
- g_string_append (res, ", ");
- }
- if (res->str [0] == 0)
- g_string_append (res, _("No grouping"));
-
- gtk_label_set_text (GTK_LABEL (config->group_label), res->str);
- g_string_free (res, TRUE);
-}
-
-static void
-config_fields_info_update (ETableConfig *config)
-{
- ETableColumnSpecification **column;
- GString *res = g_string_new ("");
- int i;
-
- for (i = 0; i < config->state->col_count; i++){
- for (column = config->source_spec->columns; *column; column++){
-
- if (config->state->columns [i] != (*column)->model_col)
- continue;
-
- g_string_append (res, gettext ((*column)->title));
- if (column [1])
- g_string_append (res, ", ");
- }
- }
-
- gtk_label_set_text (GTK_LABEL (config->fields_label), res->str);
- g_string_free (res, TRUE);
-}
-
-static void
-do_sort_and_group_config_dialog (ETableConfig *config, gboolean is_sort)
-{
- GnomeDialog *dialog;
- int button, running = 1;
-
- config->temp_state = e_table_state_duplicate (config->state);
-
- update_sort_and_group_config_dialog (config, is_sort);
-
- gtk_widget_grab_focus (GTK_WIDGET (
- is_sort
- ? config->sort [0].combo
- : config->group [0].combo));
-
-
- if (is_sort)
- dialog = GNOME_DIALOG (config->dialog_sort);
- else
- dialog = GNOME_DIALOG (config->dialog_group_by);
-
- do {
- button = gnome_dialog_run (dialog);
- switch (button){
- case 0:
- if (is_sort){
- e_table_sort_info_sorting_truncate (
- config->state->sort_info, 0);
- } else {
- e_table_sort_info_grouping_truncate (
- config->state->sort_info, 0);
- }
- update_sort_and_group_config_dialog (config, is_sort);
- continue;
-
- /* OK */
- case 1:
- gtk_object_unref (GTK_OBJECT (config->state));
- config->state = config->temp_state;
- config->temp_state = 0;
- running = 0;
- gnome_property_box_changed (
- GNOME_PROPERTY_BOX (config->dialog_toplevel));
- break;
-
- /* CANCEL */
- case 2:
- gtk_object_unref (GTK_OBJECT (config->temp_state));
- config->temp_state = 0;
- running = 0;
- break;
- }
-
- } while (running);
- gnome_dialog_close (GNOME_DIALOG (dialog));
-
- if (is_sort)
- config_sort_info_update (config);
- else
- config_group_info_update (config);
-}
-
-#if 0
-static GtkWidget *
-e_table_proxy_etable_new (void)
-{
- return gtk_label_new ("Waiting for the ETable/ETree\nmerger to be commited");
-}
-#endif
-
-static void
-config_button_fields (GtkWidget *widget, ETableConfig *config)
-{
- gnome_dialog_run (GNOME_DIALOG(config->dialog_show_fields));
- gnome_dialog_close (GNOME_DIALOG (config->dialog_show_fields));
-}
-
-static void
-config_button_sort (GtkWidget *widget, ETableConfig *config)
-{
- do_sort_and_group_config_dialog (config, TRUE);
-}
-
-static void
-config_button_group (GtkWidget *widget, ETableConfig *config)
-{
- do_sort_and_group_config_dialog (config, FALSE);
-}
-
-static void
-dialog_destroyed (GtkObject *dialog, ETableConfig *config)
-{
- gtk_object_destroy (GTK_OBJECT (config));
-}
-
-static void
-dialog_apply (GnomePropertyBox *pbox, gint page_num, ETableConfig *config)
-{
- if (page_num != -1)
- return;
-
- e_table_config_changed (config, config->state);
-}
-
-/*
- * Invoked by the Glade auto-connect code
- */
-GtkWidget *e_table_proxy_gtk_combo_text_new (void);
-GtkWidget *
-e_table_proxy_gtk_combo_text_new (void)
-{
- return gtk_combo_text_new (TRUE);
-}
-
-#if 0
-static GtkWidget *
-configure_dialog (GladeXML *gui, const char *widget_name, ETableConfig *config)
-{
- GtkWidget *w;
-
- w = glade_xml_get_widget (gui, widget_name);
-
- return w;
-}
-#endif
-
-static void
-connect_button (ETableConfig *config, GladeXML *gui, const char *widget_name, void *cback)
-{
- GtkWidget *button = glade_xml_get_widget (gui, widget_name);
-
- gtk_signal_connect(
- GTK_OBJECT (button), "clicked",
- GTK_SIGNAL_FUNC (cback), config);
-}
-
-static void
-sort_entry_changed (GtkEntry *entry, ETableConfigSortWidgets *sort)
-{
- ETableConfig *config = sort->e_table_config;
- ETableSortInfo *sort_info = config->temp_state->sort_info;
- ETableConfigSortWidgets *base = &config->sort[0];
- int idx = sort - base;
-
- char *s = gtk_entry_get_text (entry);
-
- if (s && s [0] && g_hash_table_lookup (sort->combo->elements, s)){
- ETableSortColumn c;
- int col;
-
- col = find_model_column_by_name (config->source_spec, s);
- if (col == -1){
- g_warning ("sort: This should not happen (%s)", s);
- return;
- }
-
- c.ascending = GTK_TOGGLE_BUTTON (
- config->sort [idx].radio_ascending)->active;
- c.column = col;
- e_table_sort_info_sorting_set_nth (sort_info, idx, c);
-
- update_sort_and_group_config_dialog (config, TRUE);
- } else {
- e_table_sort_info_sorting_truncate (sort_info, idx);
- update_sort_and_group_config_dialog (config, TRUE);
- }
-}
-
-static void
-sort_ascending_toggled (GtkToggleButton *t, ETableConfigSortWidgets *sort)
-{
- ETableConfig *config = sort->e_table_config;
- ETableSortInfo *si = config->temp_state->sort_info;
- ETableConfigSortWidgets *base = &config->sort[0];
- int idx = sort - base;
- ETableSortColumn c;
-
- c = e_table_sort_info_sorting_get_nth (si, idx);
- c.ascending = t->active;
- e_table_sort_info_sorting_set_nth (si, idx, c);
-}
-
-static void
-configure_sort_dialog (ETableConfig *config, GladeXML *gui)
-{
- GSList *l;
- int i;
-
- for (i = 0; i < 4; i++){
- char buffer [80];
-
- snprintf (buffer, sizeof (buffer), "sort-combo-%d", i + 1);
- config->sort [i].combo = GTK_COMBO_TEXT (
- glade_xml_get_widget (gui, buffer));
-
- gtk_combo_text_add_item (config->sort [i].combo, "", "");
-
- snprintf (buffer, sizeof (buffer), "frame-sort-%d", i + 1);
- config->sort [i].frames =
- glade_xml_get_widget (gui, buffer);
-
- snprintf (
- buffer, sizeof (buffer),
- "radiobutton-ascending-sort-%d", i+1);
- config->sort [i].radio_ascending = glade_xml_get_widget (
- gui, buffer);
-
- snprintf (
- buffer, sizeof (buffer),
- "radiobutton-descending-sort-%d", i+1);
- config->sort [i].radio_descending = glade_xml_get_widget (
- gui, buffer);
-
- config->sort [i].e_table_config = config;
- }
-
- for (l = config->column_names; l; l = l->next){
- char *label = l->data;
-
- for (i = 0; i < 4; i++){
- gtk_combo_text_add_item (
- config->sort [i].combo,
- gettext (label), label);
- }
- }
-
- /*
- * After we have runtime modified things, signal connect
- */
- for (i = 0; i < 4; i++){
- config->sort [i].changed_id = gtk_signal_connect (
- GTK_OBJECT (config->sort [i].combo->entry),
- "changed", sort_entry_changed, &config->sort [i]);
-
- config->sort [i].toggled_id = gtk_signal_connect (
- GTK_OBJECT (config->sort [i].radio_ascending),
- "toggled", sort_ascending_toggled, &config->sort [i]);
- }
-}
-
-static void
-group_entry_changed (GtkEntry *entry, ETableConfigSortWidgets *group)
-{
- ETableConfig *config = group->e_table_config;
- ETableSortInfo *sort_info = config->temp_state->sort_info;
- ETableConfigSortWidgets *base = &config->group[0];
- int idx = group - base;
- char *s = gtk_entry_get_text (entry);
-
- if (s && s [0] && g_hash_table_lookup (group->combo->elements, s)){
- ETableSortColumn c;
- int col;
-
- col = find_model_column_by_name (config->source_spec, s);
- if (col == -1){
- g_warning ("grouping: this should not happen, %s", s);
- return;
- }
-
- c.ascending = GTK_TOGGLE_BUTTON (
- config->group [idx].radio_ascending)->active;
- c.column = col;
- e_table_sort_info_grouping_set_nth (sort_info, idx, c);
-
- update_sort_and_group_config_dialog (config, FALSE);
- } else {
- e_table_sort_info_grouping_truncate (sort_info, idx);
- update_sort_and_group_config_dialog (config, FALSE);
- }
-}
-
-static void
-group_ascending_toggled (GtkToggleButton *t, ETableConfigSortWidgets *group)
-{
- ETableConfig *config = group->e_table_config;
- ETableSortInfo *si = config->temp_state->sort_info;
- ETableConfigSortWidgets *base = &config->group[0];
- int idx = group - base;
- ETableSortColumn c;
-
- c = e_table_sort_info_grouping_get_nth (si, idx);
- c.ascending = t->active;
- e_table_sort_info_grouping_set_nth (si, idx, c);
-}
-
-static void
-configure_group_dialog (ETableConfig *config, GladeXML *gui)
-{
- GSList *l;
- int i;
-
- for (i = 0; i < 4; i++){
- char buffer [80];
-
- snprintf (buffer, sizeof (buffer), "group-combo-%d", i + 1);
- config->group [i].combo = GTK_COMBO_TEXT (
- glade_xml_get_widget (gui, buffer));
-
- gtk_combo_text_add_item (config->group [i].combo, "", "");
-
- snprintf (buffer, sizeof (buffer), "frame-group-%d", i + 1);
- config->group [i].frames =
- glade_xml_get_widget (gui, buffer);
-
- snprintf (
- buffer, sizeof (buffer),
- "radiobutton-ascending-group-%d", i+1);
- config->group [i].radio_ascending = glade_xml_get_widget (
- gui, buffer);
-
- snprintf (
- buffer, sizeof (buffer),
- "radiobutton-descending-group-%d", i+1);
- config->group [i].radio_descending = glade_xml_get_widget (
- gui, buffer);
-
- snprintf (
- buffer, sizeof (buffer),
- "checkbutton-group-%d", i+1);
- config->group [i].view_check = glade_xml_get_widget (
- gui, buffer);
-
- config->group [i].e_table_config = config;
- }
-
-
- for (l = config->column_names; l; l = l->next){
- char *label = l->data;
-
- for (i = 0; i < 4; i++){
- gtk_combo_text_add_item (
- config->group [i].combo,
- gettext (label), label);
- }
- }
-
- /*
- * After we have runtime modified things, signal connect
- */
- for (i = 0; i < 4; i++){
- config->group [i].changed_id = gtk_signal_connect (
- GTK_OBJECT (config->group [i].combo->entry),
- "changed", group_entry_changed, &config->group [i]);
-
- config->group [i].toggled_id = gtk_signal_connect (
- GTK_OBJECT (config->group [i].radio_ascending),
- "toggled", group_ascending_toggled, &config->group [i]);
- }
-}
-
-static void
-setup_gui (ETableConfig *config)
-{
- GladeXML *gui = glade_xml_new_with_domain (
- ETABLE_GLADEDIR "/e-table-config.glade", NULL, PACKAGE);
-
- config->dialog_toplevel = glade_xml_get_widget (
- gui, "e-table-config");
-
- gtk_notebook_set_show_tabs (
- GTK_NOTEBOOK (GNOME_PROPERTY_BOX (
- config->dialog_toplevel)->notebook),
- FALSE);
-
- config->dialog_show_fields = glade_xml_get_widget (
- gui, "dialog-show-fields");
- config->dialog_group_by = glade_xml_get_widget (
- gui, "dialog-group-by");
- config->dialog_sort = glade_xml_get_widget (
- gui, "dialog-sort");
-
- config->sort_label = glade_xml_get_widget (
- gui, "label-sort");
- config->group_label = glade_xml_get_widget (
- gui, "label-group");
- config->fields_label = glade_xml_get_widget (
- gui, "label-fields");
-
- connect_button (config, gui, "button-sort", config_button_sort);
- connect_button (config, gui, "button-group", config_button_group);
- connect_button (config, gui, "button-fields", config_button_fields);
-
- configure_sort_dialog (config, gui);
- configure_group_dialog (config, gui);
-
- gtk_signal_connect (
- GTK_OBJECT (config->dialog_toplevel), "destroy",
- GTK_SIGNAL_FUNC (dialog_destroyed), config);
-
- gtk_signal_connect (
- GTK_OBJECT (config->dialog_toplevel), "apply",
- GTK_SIGNAL_FUNC (dialog_apply), config);
-
- gtk_object_unref (GTK_OBJECT (gui));
-}
-
-static void
-config_init (ETableConfig *config)
-{
- glade_gnome_init ();
-}
-
-ETableConfig *
-e_table_config_construct (ETableConfig *config,
- const char *header,
- ETableSpecification *spec,
- ETableState *state)
-{
- ETableColumnSpecification **column;
-
- g_return_val_if_fail (config != NULL, NULL);
- g_return_val_if_fail (header != NULL, NULL);
- g_return_val_if_fail (spec != NULL, NULL);
- g_return_val_if_fail (state != NULL, NULL);
-
- config->source_spec = spec;
- config->source_state = state;
-
- gtk_object_ref (GTK_OBJECT (config->source_spec));
- gtk_object_ref (GTK_OBJECT (config->source_state));
-
- config->state = e_table_state_duplicate (state);
-
- for (column = config->source_spec->columns; *column; column++){
- char *label = (*column)->title;
-
- config->column_names = g_slist_append (
- config->column_names, label);
- }
-
- setup_gui (config);
-
- config_sort_info_update (config);
- config_group_info_update (config);
- config_fields_info_update (config);
-
- return E_TABLE_CONFIG (config);
-}
-
-/**
- * e_table_config_new:
- * @header: The title of the dialog for the ETableConfig.
- * @spec: The specification for the columns to allow.
- * @state: The current state of the configuration.
- *
- * Creates a new ETable config object.
- *
- * Returns: The config object.
- */
-ETableConfig *
-e_table_config_new (const char *header,
- ETableSpecification *spec,
- ETableState *state)
-{
- ETableConfig *config = gtk_type_new (E_TABLE_CONFIG_TYPE);
-
- if (e_table_config_construct (config, header, spec, state) == NULL){
- gtk_object_destroy (GTK_OBJECT (config));
- return NULL;
- }
-
- gtk_widget_show (config->dialog_toplevel);
- return E_TABLE_CONFIG (config);
-}
-
-/**
- * e_table_config_raise:
- * @config: The ETableConfig object.
- *
- * Raises the dialog associated with this ETableConfig object.
- */
-void
-e_table_config_raise (ETableConfig *config)
-{
- gdk_window_raise (GTK_WIDGET (config->dialog_toplevel)->window);
-}
-
-E_MAKE_TYPE(e_table_config, "ETableConfig", ETableConfig, config_class_init, config_init, PARENT_TYPE);
diff --git a/widgets/table/e-table-config.glade b/widgets/table/e-table-config.glade
deleted file mode 100644
index 7ed753664e..0000000000
--- a/widgets/table/e-table-config.glade
+++ /dev/null
@@ -1,1870 +0,0 @@
-<?xml version="1.0"?>
-<GTK-Interface>
-
-<project>
- <name>E-table</name>
- <program_name>e-table</program_name>
- <directory></directory>
- <source_directory></source_directory>
- <pixmaps_directory></pixmaps_directory>
- <language>C</language>
- <gnome_support>True</gnome_support>
- <gettext_support>True</gettext_support>
- <output_main_file>False</output_main_file>
- <output_support_files>False</output_support_files>
- <output_build_files>False</output_build_files>
-</project>
-
-<widget>
- <class>GnomeDialog</class>
- <name>dialog-show-fields</name>
- <visible>False</visible>
- <title>Show Fields</title>
- <type>GTK_WINDOW_TOPLEVEL</type>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>True</allow_grow>
- <auto_shrink>False</auto_shrink>
- <auto_close>False</auto_close>
- <hide_on_close>True</hide_on_close>
-
- <widget>
- <class>GtkVBox</class>
- <child_name>GnomeDialog:vbox</child_name>
- <name>dialog-vbox3</name>
- <homogeneous>False</homogeneous>
- <spacing>8</spacing>
- <child>
- <padding>4</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHButtonBox</class>
- <child_name>GnomeDialog:action_area</child_name>
- <name>dialog-action_area3</name>
- <layout_style>GTK_BUTTONBOX_END</layout_style>
- <spacing>8</spacing>
- <child_min_width>85</child_min_width>
- <child_min_height>27</child_min_height>
- <child_ipad_x>7</child_ipad_x>
- <child_ipad_y>0</child_ipad_y>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- <pack>GTK_PACK_END</pack>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>button20</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button22</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox2</name>
- <homogeneous>False</homogeneous>
- <spacing>6</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkTable</class>
- <name>table2</name>
- <rows>1</rows>
- <columns>5</columns>
- <homogeneous>True</homogeneous>
- <row_spacing>6</row_spacing>
- <column_spacing>6</column_spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label-available</name>
- <label>A_vailable Fields:</label>
- <justify>GTK_JUSTIFY_LEFT</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>0</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label-displayed</name>
- <label>Sh_ow these fields in order:</label>
- <justify>GTK_JUSTIFY_LEFT</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>3</left_attach>
- <right_attach>5</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkTable</class>
- <name>table3</name>
- <rows>1</rows>
- <columns>5</columns>
- <homogeneous>True</homogeneous>
- <row_spacing>6</row_spacing>
- <column_spacing>6</column_spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox4</name>
- <homogeneous>False</homogeneous>
- <spacing>6</spacing>
- <child>
- <left_attach>0</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>True</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow1</name>
- <hscrollbar_policy>GTK_POLICY_AUTOMATIC</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkViewport</class>
- <name>viewport1</name>
- <shadow_type>GTK_SHADOW_IN</shadow_type>
-
- <widget>
- <class>Custom</class>
- <name>available-field-list</name>
- <creation_function>e_table_proxy_etable_new</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Sun, 18 Mar 2001 23:59:35 GMT</last_modification_time>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox5</name>
- <homogeneous>False</homogeneous>
- <spacing>6</spacing>
- <child>
- <left_attach>3</left_attach>
- <right_attach>5</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>True</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow2</name>
- <hscrollbar_policy>GTK_POLICY_AUTOMATIC</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkViewport</class>
- <name>viewport2</name>
- <shadow_type>GTK_SHADOW_IN</shadow_type>
-
- <widget>
- <class>Custom</class>
- <name>fields-shown</name>
- <creation_function>e_table_proxy_etable_new</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Sun, 18 Mar 2001 23:59:49 GMT</last_modification_time>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox4</name>
- <homogeneous>True</homogeneous>
- <spacing>6</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>button-up</name>
- <can_focus>True</can_focus>
- <label>Move _Up</label>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button-down</name>
- <can_focus>True</can_focus>
- <label>Move _Down</label>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox6</name>
- <homogeneous>False</homogeneous>
- <spacing>6</spacing>
- <child>
- <left_attach>2</left_attach>
- <right_attach>3</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>True</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>button-add</name>
- <can_focus>True</can_focus>
- <label>_Add -&gt;</label>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button-remove</name>
- <can_focus>True</can_focus>
- <label>&lt;- _Remove</label>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>Placeholder</class>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
-</widget>
-
-<widget>
- <class>GnomeDialog</class>
- <name>dialog-group-by</name>
- <visible>False</visible>
- <title>Group</title>
- <type>GTK_WINDOW_TOPLEVEL</type>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>True</allow_grow>
- <auto_shrink>False</auto_shrink>
- <auto_close>False</auto_close>
- <hide_on_close>True</hide_on_close>
-
- <widget>
- <class>GtkVBox</class>
- <child_name>GnomeDialog:vbox</child_name>
- <name>dialog-vbox4</name>
- <homogeneous>False</homogeneous>
- <spacing>8</spacing>
- <child>
- <padding>4</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHButtonBox</class>
- <child_name>GnomeDialog:action_area</child_name>
- <name>dialog-action_area4</name>
- <layout_style>GTK_BUTTONBOX_END</layout_style>
- <spacing>8</spacing>
- <child_min_width>85</child_min_width>
- <child_min_height>27</child_min_height>
- <child_ipad_x>7</child_ipad_x>
- <child_ipad_y>0</child_ipad_y>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- <pack>GTK_PACK_END</pack>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>button39</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <label>Clear All</label>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button41</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button42</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox24</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox13</name>
- <homogeneous>False</homogeneous>
- <spacing>6</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame-group-1</name>
- <label>Group Items By</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox5</name>
- <homogeneous>False</homogeneous>
- <spacing>6</spacing>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox7</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>Custom</class>
- <name>group-combo-1</name>
- <creation_function>e_table_proxy_gtk_combo_text_new</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Fri, 19 Jan 2001 04:52:09 GMT</last_modification_time>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>checkbutton-group-1</name>
- <can_focus>True</can_focus>
- <label>Show field in View</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox8</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton-ascending-group-1</name>
- <can_focus>True</can_focus>
- <label>Ascending</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>g-group-1</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton-descending-group-1</name>
- <can_focus>True</can_focus>
- <label>Descending</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>g-group-1</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label8</name>
- <label></label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label9</name>
- <label></label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label10</name>
- <label></label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox14</name>
- <homogeneous>False</homogeneous>
- <spacing>6</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label11</name>
- <label></label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame-group-2</name>
- <label>Then By</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox6</name>
- <homogeneous>False</homogeneous>
- <spacing>6</spacing>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox9</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>Custom</class>
- <name>group-combo-2</name>
- <creation_function>e_table_proxy_gtk_combo_text_new</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Fri, 19 Jan 2001 04:52:14 GMT</last_modification_time>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>checkbutton-group-2</name>
- <can_focus>True</can_focus>
- <label>Show field in View</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox10</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton-ascending-group-2</name>
- <can_focus>True</can_focus>
- <label>Ascending</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>g-group-2</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton-descending-group-2</name>
- <can_focus>True</can_focus>
- <label>Descending</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>g-group-2</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label19</name>
- <label></label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label18</name>
- <label></label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox15</name>
- <homogeneous>False</homogeneous>
- <spacing>6</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label13</name>
- <label></label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label12</name>
- <label></label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame-group-3</name>
- <label>Then By</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox7</name>
- <homogeneous>False</homogeneous>
- <spacing>6</spacing>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox11</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>Custom</class>
- <name>group-combo-3</name>
- <creation_function>e_table_proxy_gtk_combo_text_new</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Fri, 19 Jan 2001 04:52:18 GMT</last_modification_time>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>checkbutton-group-3</name>
- <can_focus>True</can_focus>
- <label>Show field in View</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox12</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton-ascending-group-3</name>
- <can_focus>True</can_focus>
- <label>Ascending</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>g-group-3</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton-descending-group-3</name>
- <can_focus>True</can_focus>
- <label>Descending</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>g-group-3</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label17</name>
- <label></label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox16</name>
- <homogeneous>False</homogeneous>
- <spacing>6</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label14</name>
- <label></label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label16</name>
- <label></label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label15</name>
- <label></label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame-group-4</name>
- <label>Then By</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox8</name>
- <homogeneous>False</homogeneous>
- <spacing>6</spacing>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox13</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>Custom</class>
- <name>group-combo-4</name>
- <creation_function>e_table_proxy_gtk_combo_text_new</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Fri, 19 Jan 2001 04:52:21 GMT</last_modification_time>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>checkbutton-group-4</name>
- <can_focus>True</can_focus>
- <label>Show field in View</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox14</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton-ascending-group-4</name>
- <can_focus>True</can_focus>
- <label>Ascending</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>g-group-4</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton-descending-group-4</name>
- <can_focus>True</can_focus>
- <label>Descending</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>g-group-4</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
-</widget>
-
-<widget>
- <class>GnomeDialog</class>
- <name>dialog-sort</name>
- <visible>False</visible>
- <title>Sort</title>
- <type>GTK_WINDOW_TOPLEVEL</type>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>True</allow_grow>
- <auto_shrink>False</auto_shrink>
- <auto_close>False</auto_close>
- <hide_on_close>True</hide_on_close>
-
- <widget>
- <class>GtkVBox</class>
- <child_name>GnomeDialog:vbox</child_name>
- <name>vbox15</name>
- <homogeneous>False</homogeneous>
- <spacing>8</spacing>
- <child>
- <padding>4</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHButtonBox</class>
- <child_name>GnomeDialog:action_area</child_name>
- <name>hbuttonbox1</name>
- <layout_style>GTK_BUTTONBOX_END</layout_style>
- <spacing>8</spacing>
- <child_min_width>85</child_min_width>
- <child_min_height>27</child_min_height>
- <child_ipad_x>7</child_ipad_x>
- <child_ipad_y>0</child_ipad_y>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- <pack>GTK_PACK_END</pack>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>button43</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <label>Clear All</label>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button44</name>
- <can_default>True</can_default>
- <has_default>True</has_default>
- <can_focus>True</can_focus>
- <stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button45</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
- </widget>
- </widget>
-
- <widget>
- <class>GtkTable</class>
- <name>table5</name>
- <rows>4</rows>
- <columns>1</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>6</row_spacing>
- <column_spacing>6</column_spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame-sort-4</name>
- <label>Then By</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>3</top_attach>
- <bottom_attach>4</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox9</name>
- <homogeneous>False</homogeneous>
- <spacing>6</spacing>
-
- <widget>
- <class>GtkAlignment</class>
- <name>alignment1</name>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xscale>1</xscale>
- <yscale>0</yscale>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>Custom</class>
- <name>sort-combo-4</name>
- <creation_function>e_table_proxy_gtk_combo_text_new</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Tue, 16 Jan 2001 08:33:52 GMT</last_modification_time>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox17</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton-ascending-sort-4</name>
- <can_focus>True</can_focus>
- <label>Ascending</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>group-4</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton-descending-sort-4</name>
- <can_focus>True</can_focus>
- <label>Descending</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>group-4</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame-sort-3</name>
- <label>Then By</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>2</top_attach>
- <bottom_attach>3</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox10</name>
- <homogeneous>False</homogeneous>
- <spacing>6</spacing>
-
- <widget>
- <class>GtkAlignment</class>
- <name>alignment2</name>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xscale>1</xscale>
- <yscale>0</yscale>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>Custom</class>
- <name>sort-combo-3</name>
- <creation_function>e_table_proxy_gtk_combo_text_new</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Tue, 16 Jan 2001 05:22:22 GMT</last_modification_time>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox19</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton-ascending-sort-3</name>
- <can_focus>True</can_focus>
- <label>Ascending</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>group-3</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton-descending-sort-3</name>
- <can_focus>True</can_focus>
- <label>Descending</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>group-3</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame-sort-2</name>
- <label>Then By</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox11</name>
- <homogeneous>False</homogeneous>
- <spacing>6</spacing>
-
- <widget>
- <class>GtkAlignment</class>
- <name>alignment3</name>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xscale>1</xscale>
- <yscale>0</yscale>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>Custom</class>
- <name>sort-combo-2</name>
- <creation_function>e_table_proxy_gtk_combo_text_new</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Tue, 16 Jan 2001 05:22:15 GMT</last_modification_time>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox21</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton-ascending-sort-2</name>
- <can_focus>True</can_focus>
- <label>Ascending</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>group-2</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton-descending-sort-2</name>
- <can_focus>True</can_focus>
- <label>Descending</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>group-2</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame-sort-1</name>
- <label>Sort Items By</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox12</name>
- <homogeneous>False</homogeneous>
- <spacing>6</spacing>
-
- <widget>
- <class>GtkAlignment</class>
- <name>alignment4</name>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xscale>1</xscale>
- <yscale>0</yscale>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>Custom</class>
- <name>sort-combo-1</name>
- <can_focus>True</can_focus>
- <has_focus>True</has_focus>
- <creation_function>e_table_proxy_gtk_combo_text_new</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Tue, 16 Jan 2001 05:22:00 GMT</last_modification_time>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox23</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton-ascending-sort-1</name>
- <can_focus>True</can_focus>
- <label>Ascending</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>group-1</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton-descending-sort-1</name>
- <can_focus>True</can_focus>
- <label>Descending</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>group-1</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
-</widget>
-
-<widget>
- <class>GnomePropertyBox</class>
- <name>e-table-config</name>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>False</allow_grow>
- <auto_shrink>False</auto_shrink>
-
- <widget>
- <class>GtkNotebook</class>
- <child_name>GnomePropertyBox:notebook</child_name>
- <name>notebook1</name>
- <show_tabs>False</show_tabs>
- <show_border>True</show_border>
- <tab_pos>GTK_POS_TOP</tab_pos>
- <scrollable>False</scrollable>
- <tab_hborder>2</tab_hborder>
- <tab_vborder>2</tab_vborder>
- <popup_enable>False</popup_enable>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkFrame</class>
- <name>top-frame</name>
- <border_width>2</border_width>
- <label>Description</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
-
- <widget>
- <class>GtkTable</class>
- <name>table1</name>
- <border_width>2</border_width>
- <rows>3</rows>
- <columns>3</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>2</row_spacing>
- <column_spacing>4</column_spacing>
-
- <widget>
- <class>GtkLabel</class>
- <name>label2</name>
- <label></label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>2</left_attach>
- <right_attach>3</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label3</name>
- <label></label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>2</left_attach>
- <right_attach>3</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label4</name>
- <label></label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>2</left_attach>
- <right_attach>3</right_attach>
- <top_attach>2</top_attach>
- <bottom_attach>3</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button-fields</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <signal>
- <name>clicked</name>
- <handler>on_fields_clicked</handler>
- <last_modification_time>Tue, 03 Oct 2000 22:11:12 GMT</last_modification_time>
- </signal>
- <label>_Fields...</label>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button-sort</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <signal>
- <name>clicked</name>
- <handler>on_sort_clicked</handler>
- <last_modification_time>Tue, 03 Oct 2000 22:10:58 GMT</last_modification_time>
- </signal>
- <label>_Sort...</label>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>2</top_attach>
- <bottom_attach>3</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button-group</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <signal>
- <name>clicked</name>
- <handler>on_group_by_clicked</handler>
- <last_modification_time>Tue, 03 Oct 2000 22:10:50 GMT</last_modification_time>
- </signal>
- <label>_Group By...</label>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label-group</name>
- <label></label>
- <justify>GTK_JUSTIFY_LEFT</justify>
- <wrap>True</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label-sort</name>
- <label></label>
- <justify>GTK_JUSTIFY_LEFT</justify>
- <wrap>True</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>2</top_attach>
- <bottom_attach>3</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label-fields</name>
- <label></label>
- <justify>GTK_JUSTIFY_LEFT</justify>
- <wrap>True</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>Notebook:tab</child_name>
- <name>label20</name>
- <label>label20</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
-</widget>
-
-</GTK-Interface>
diff --git a/widgets/table/e-table-config.h b/widgets/table/e-table-config.h
deleted file mode 100644
index 13b1d69f38..0000000000
--- a/widgets/table/e-table-config.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_CONFIG_H_
-#define _E_TABLE_CONFIG_H_
-
-#include <libgnome/gnome-defs.h>
-#include <gal/e-table/e-table-sort-info.h>
-#include <gal/e-table/e-table-specification.h>
-#include <gal/widgets/gtk-combo-text.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_TABLE_CONFIG_TYPE (e_table_config_get_type ())
-#define E_TABLE_CONFIG(o) (GTK_CHECK_CAST ((o), E_TABLE_CONFIG_TYPE, ETableConfig))
-#define E_TABLE_CONFIG_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_CONFIG_TYPE, ETableConfigClass))
-#define E_IS_TABLE_CONFIG(o) (GTK_CHECK_TYPE ((o), E_TABLE_CONFIG_TYPE))
-#define E_IS_TABLE_CONFIG_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_CONFIG_TYPE))
-
-typedef struct {
- GtkComboText *combo;
- GtkWidget *frames;
- GtkWidget *radio_ascending;
- GtkWidget *radio_descending;
- GtkWidget *view_check; /* Only for group dialog */
- guint changed_id, toggled_id;
- void *e_table_config;
-} ETableConfigSortWidgets;
-
-
-typedef struct {
- GtkObject parent;
-
- /*
- * Our various dialog boxes
- */
- GtkWidget *dialog_toplevel;
- GtkWidget *dialog_show_fields;
- GtkWidget *dialog_group_by;
- GtkWidget *dialog_sort;
-
- /*
- * The state we manipulate
- */
- ETableSpecification *source_spec;
- ETableState *source_state, *state, *temp_state;
-
- GtkWidget *sort_label;
- GtkWidget *group_label;
- GtkWidget *fields_label;
-
- ETableConfigSortWidgets sort [4];
- ETableConfigSortWidgets group [4];
-
- /*
- * List of valid column names
- */
- GSList *column_names;
-} ETableConfig;
-
-typedef struct {
- GtkObjectClass parent_class;
-
- /* Signals */
- void (*changed) (ETableConfig *config);
-} ETableConfigClass;
-
-GtkType e_table_config_get_type (void);
-ETableConfig *e_table_config_new (const char *header,
- ETableSpecification *spec,
- ETableState *state);
-ETableConfig *e_table_config_construct (ETableConfig *etco,
- const char *header,
- ETableSpecification *spec,
- ETableState *state);
-void e_table_config_raise (ETableConfig *config);
-
-END_GNOME_DECLS
-
-#endif /* _E_TABLE_CONFIG_H */
diff --git a/widgets/table/e-table-defines.h b/widgets/table/e-table-defines.h
deleted file mode 100644
index 23bca8bc64..0000000000
--- a/widgets/table/e-table-defines.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef __E_TABLE_DEFINES__
-#define __E_TABLE_DEFINES__ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define BUTTON_HEIGHT 10
-#define BUTTON_PADDING 2
-#define GROUP_INDENT (BUTTON_HEIGHT + (BUTTON_PADDING * 2))
-
-/* Padding around the contents of a header button */
-#define HEADER_PADDING 1
-
-#define MIN_ARROW_SIZE 10
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif
diff --git a/widgets/table/e-table-example-1.c b/widgets/table/e-table-example-1.c
deleted file mode 100644
index bac91c3060..0000000000
--- a/widgets/table/e-table-example-1.c
+++ /dev/null
@@ -1,286 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* This code is GPL. */
-#include <stdio.h>
-#include <string.h>
-#include <gdk-pixbuf/gdk-pixbuf.h>
-
-#include "gal/e-util/e-cursors.h"
-#include "e-table-simple.h"
-#include "e-table-header.h"
-#include "e-table-header-item.h"
-#include "e-table-item.h"
-#include "e-cell-text.h"
-#include "e-cell-checkbox.h"
-#include "e-table.h"
-
-#include "table-test.h"
-
-/*
- * One way in which we make it simpler to build an ETableModel is through
- * the ETableSimple class. Instead of creating your own ETableModel
- * class, you simply create a new object of the ETableSimple class. You
- * give it a bunch of functions that act as callbacks.
- *
- * You also get to pass a void * to ETableSimple and it gets passed to
- * your callbacks. This would be for having multiple models of the same
- * type. This is just an example though, so we statically define all the
- * data and ignore the void *data parameter.
- *
- * In our example we will be creating a table model with 6 columns and 10
- * rows. This corresponds to having 6 different types of information and
- * 10 different sets of data in our database.
- *
- * The headers will be hard coded, as will be the example data.
- *
- */
-
-/*
- * There are two different meanings to the word "column". The first is
- * the model column. A model column corresponds to a specific type of
- * data. This is very much like the usage in a database table where a
- * column is a field in the database.
- *
- * The second type of column is a view column. A view column
- * corresponds to a visually displayed column. Each view column
- * corresponds to a specific model column, though a model column may
- * have any number of view columns associated with it, from zero to
- * greater than one.
- *
- * Also, a view column doesn't necessarily depend on only one model
- * column. In some cases, the view column renderer can be given a
- * reference to another column to get extra information about its
- * display.
-*/
-
-#define ROWS 10
-#define COLS 4
-
-#define IMPORTANCE_COLUMN 4
-#define COLOR_COLUMN 5
-
-/*
- * Here we define the initial layout of the table. This is an xml
- * format that allows you to change the initial ordering of the
- * columns or to do sorting or grouping initially. This specification
- * shows all 5 columns, but moves the importance column nearer to the
- * front. It also sorts by the "Full Name" column (ascending.)
- * Sorting and grouping take the model column as their arguments
- * (sorting is specified by the "column" argument to the leaf elemnt.
- */
-
-#define INITIAL_SPEC "<ETableSpecification> \
- <columns-shown> \
- <column> 0 </column> \
- <column> 4 </column> \
- <column> 1 </column> \
- <column> 2 </column> \
- <column> 3 </column> \
- </columns-shown> \
- <grouping> <leaf column=\"1\" ascending=\"true\"/> </grouping> \
-</ETableSpecification>"
-
-char *headers [COLS] = {
- "Email",
- "Full Name",
- "Address",
- "Phone"
-};
-
-/*
- * Virtual Column list:
- * 0 Email
- * 1 Full Name
- * 2 Address
- * 3 Phone
- */
-
-char *table_data [ROWS] [COLS];
-
-/*
- * ETableSimple callbacks
- * These are the callbacks that define the behavior of our custom model.
- */
-
-/*
- * Since our model is a constant size, we can just return its size in
- * the column and row count fields.
- */
-
-/* This function returns the number of columns in our ETableModel. */
-static int
-my_col_count (ETableModel *etc, void *data)
-{
- return COLS;
-}
-
-/* This function returns the number of rows in our ETableModel. */
-static int
-my_row_count (ETableModel *etc, void *data)
-{
- return ROWS;
-}
-
-/* This function returns the value at a particular point in our ETableModel. */
-static void *
-my_value_at (ETableModel *etc, int col, int row, void *data)
-{
- return (void *) table_data [row] [col];
-}
-
-/* This function sets the value at a particular point in our ETableModel. */
-static void
-my_set_value_at (ETableModel *etc, int col, int row, const void *val, void *data)
-{
- g_free (table_data [row] [col]);
- table_data [row] [col] = g_strdup (val);
-}
-
-/* This function returns whether a particular cell is editable. */
-static gboolean
-my_is_cell_editable (ETableModel *etc, int col, int row, void *data)
-{
- return TRUE;
-}
-
-/* This function duplicates the value passed to it. */
-static void *
-my_duplicate_value (ETableModel *etc, int col, const void *value, void *data)
-{
- return g_strdup (value);
-}
-
-/* This function frees the value passed to it. */
-static void
-my_free_value (ETableModel *etc, int col, void *value, void *data)
-{
- g_free (value);
-}
-
-/* This function creates an empty value. */
-static void *
-my_initialize_value (ETableModel *etc, int col, void *data)
-{
- return g_strdup ("");
-}
-
-/* This function reports if a value is empty. */
-static gboolean
-my_value_is_empty (ETableModel *etc, int col, const void *value, void *data)
-{
- return !(value && *(char *)value);
-}
-
-/* This function reports if a value is empty. */
-static char *
-my_value_to_string (ETableModel *etc, int col, const void *value, void *data)
-{
- return g_strdup(value);
-}
-
-/* We create a window containing our new table. */
-static void
-create_table (void)
-{
- GtkWidget *e_table, *window, *frame;
- ECell *cell_left_just;
- ETableHeader *e_table_header;
- int i, j;
- ETableModel *e_table_model = NULL;
-
- /* First we fill in the simple data. */
- for (i = 0; i < ROWS; i++){
- for (j = 0; j < COLS; j++)
- table_data [i] [j] = g_strdup ("");
- }
- /* Next we create our model. This uses the functions we defined
- earlier. */
- e_table_model = e_table_simple_new (
- my_col_count, my_row_count, my_value_at,
- my_set_value_at, my_is_cell_editable,
- my_duplicate_value, my_free_value,
- my_initialize_value, my_value_is_empty,
- my_value_to_string,
- NULL);
- /*
- * Next we create a header. The ETableHeader is used in two
- * different way. The first is the full_header. This is the
- * list of possible columns in the view. The second use is
- * completely internal. Many of the ETableHeader functions are
- * for that purpose. The only functions we really need are
- * e_table_header_new and e_table_header_add_col.
- *
- * First we create the header.
- */
- e_table_header = e_table_header_new ();
-
- /*
- * Next we have to build renderers for all of the columns.
- * Since all our columns are text columns, we can simply use
- * the same renderer over and over again. If we had different
- * types of columns, we could use a different renderer for
- * each column.
- */
- cell_left_just = e_cell_text_new (e_table_model, NULL, GTK_JUSTIFY_LEFT);
-
- /*
- * Next we create a column object for each view column and add
- * them to the header. We don't create a column object for
- * the importance column since it will not be shown.
- */
- for (i = 0; i < COLS; i++) {
- /* Create the column. */
- ETableCol *ecol = e_table_col_new (
- i, headers [i],
- 1.0, 20, cell_left_just,
- g_str_compare, TRUE);
- /* Add it to the header. */
- e_table_header_add_column (e_table_header, ecol, i);
- }
-
- /*
- * Here we create a window for our new table. This window
- * will get shown and the person will be able to test their
- * item.
- */
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-
- /* This frame is simply to get a bevel around our table. */
- frame = gtk_frame_new (NULL);
-
- /*
- * Here we create the table. We give it the three pieces of
- * the table we've created, the header, the model, and the
- * initial layout. It does the rest.
- */
- e_table = e_table_new (e_table_header, e_table_model, INITIAL_SPEC);
-
- /* Build the gtk widget hierarchy. */
- gtk_container_add (GTK_CONTAINER (frame), e_table);
- gtk_container_add (GTK_CONTAINER (window), frame);
-
- /* Size the initial window. */
- gtk_widget_set_usize (window, 200, 200);
-
- /* Show it all. */
- gtk_widget_show_all (window);
-}
-
-/* This is the main function which just initializes gnome and call our create_table function */
-
-int
-main (int argc, char *argv [])
-{
- gnome_init ("TableExample", "TableExample", argc, argv);
- e_cursors_init ();
-
- gtk_widget_push_visual (gdk_rgb_get_visual ());
- gtk_widget_push_colormap (gdk_rgb_get_cmap ());
-
- create_table ();
-
- gtk_main ();
-
- e_cursors_shutdown ();
- return 0;
-}
-
diff --git a/widgets/table/e-table-example-2.c b/widgets/table/e-table-example-2.c
deleted file mode 100644
index 2d892f0589..0000000000
--- a/widgets/table/e-table-example-2.c
+++ /dev/null
@@ -1,329 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* This code is GPL. */
-#include <stdio.h>
-#include <string.h>
-#include <gdk-pixbuf/gdk-pixbuf.h>
-
-#include "gal/e-util/e-cursors.h"
-#include "e-table-simple.h"
-#include "e-table-header.h"
-#include "e-table-header-item.h"
-#include "e-table-item.h"
-#include "e-cell-text.h"
-#include "e-cell-checkbox.h"
-#include "e-table.h"
-
-#include "table-test.h"
-
-/*
-One way in which we make it simpler to build an ETableModel is through
-the ETableSimple class. Instead of creating your own ETableModel
-class, you simply create a new object of the ETableSimple class. You
-give it a bunch of functions that act as callbacks.
-
-You also get to pass a void * to ETableSimple and it gets passed to
-your callbacks. This would be for having multiple models of the same
-type. This is just an example though, so we statically define all the
-data and ignore the void *data parameter.
-
-In our example we will be creating a table model with 6 columns and 10
-rows. This corresponds to having 6 different types of information and
-10 different sets of data in our database.
-
-The headers will be hard coded, as will be the example data.
-
-*/
-
-/*
- There are two different meanings to the word "column". The first is
- the model column. A model column corresponds to a specific type of
- data. This is very much like the usage in a database table where a
- column is a field in the database.
-
- The second type of column is a view column. A view column
- corresponds to a visually displayed column. Each view column
- corresponds to a specific model column, though a model column may
- have any number of view columns associated with it, from zero to
- greater than one.
-
- Also, a view column doesn't necessarily depend on only one model
- column. In some cases, the view column renderer can be given a
- reference to another column to get extra information about its
- display.
-*/
-
-#define ROWS 10
-#define VIEW_COLS 4
-#define PHYSICAL_COLS 5
-#define VIRTUAL_COLS 6
-
-#define IMPORTANCE_COLUMN 4
-#define COLOR_COLUMN 5
-
-/* Here we define the initial layout of the table. This is an xml
- format that allows you to change the initial ordering of the
- columns or to do sorting or grouping initially. This specification
- shows all 5 columns, but moves the importance column nearer to the
- front. It also sorts by the "Full Name" column (ascending.)
- Sorting and grouping take the model column as their arguments
- (sorting is specified by the "column" argument to the leaf elemnt. */
-#define INITIAL_SPEC "<ETableSpecification> \
- <columns-shown> \
- <column> 0 </column> \
- <column> 4 </column> \
- <column> 1 </column> \
- <column> 2 </column> \
- <column> 3 </column> \
- </columns-shown> \
- <grouping> <leaf column=\"1\" ascending=\"true\"/> </grouping> \
-</ETableSpecification>"
-
-char *headers[VIEW_COLS] = {
- "Email",
- "Full Name",
- "Address",
- "Phone"
-};
-
-/* Virtual Column list:
- 0 Full Name
- 1 Email
- 2 Address
- 3 Phone
- 4 Importance field. This field will be a boolean. It also has a
- special header, so doesn't appear in the headers list.
- 5 Color field. This column is also not displayed. It is also
- not stored in the database. It's calculated based on the
- Importance field.
-*/
-
-char *table_data[ROWS][VIEW_COLS];
-gboolean importance_data[ROWS];
-
-/*
- * ETableSimple callbacks
- * These are the callbacks that define the behavior of our custom model.
- */
-
-/* Since our model is a constant size, we can just return its size in
- the column and row count fields. */
-
-static GdkColor *color1;
-static GdkColor *color2;
-
-static int
-my_col_count (ETableModel *etc, void *data)
-{
- return VIRTUAL_COLS;
-}
-
-static int
-my_row_count (ETableModel *etc, void *data)
-{
- return ROWS;
-}
-
-static void *
-my_value_at (ETableModel *etc, int col, int row, void *data)
-{
- if (col == COLOR_COLUMN){
- if (importance_data[row]){
- return color1;
- } else {
- return color2;
- }
- } else if (col == IMPORTANCE_COLUMN){
- return (gpointer) importance_data[row];
- } else {
- return (void *) table_data [row][col];
- }
-}
-
-static void
-my_set_value_at (ETableModel *etc, int col, int row, const void *val, void *data)
-{
- if (col == COLOR_COLUMN){
- } else if (col == IMPORTANCE_COLUMN){
- importance_data[row] = (gboolean) val;
- } else {
- g_free (table_data [row][col]);
- table_data [row][col] = g_strdup (val);
- }
-}
-
-static gboolean
-my_is_cell_editable (ETableModel *etc, int col, int row, void *data)
-{
- if (col == IMPORTANCE_COLUMN)
- return FALSE;
- else
- return TRUE;
-}
-
-static void *
-my_duplicate_value (ETableModel *etc, int col, const void *value, void *data)
-{
- if (col == COLOR_COLUMN){
- return (void *) value;
- } else if (col == IMPORTANCE_COLUMN){
- return (void *) value;
- } else {
- return g_strdup (value);
- }
-}
-
-static void
-my_free_value (ETableModel *etc, int col, void *value, void *data)
-{
- if (col == COLOR_COLUMN){
- } else if (col == IMPORTANCE_COLUMN){
- } else {
- g_free (value);
- }
-}
-
-static void *
-my_initialize_value (ETableModel *etc, int col, void *data)
-{
- if (col == COLOR_COLUMN){
- return NULL;
- } else if (col == IMPORTANCE_COLUMN){
- return NULL;
- } else {
- return g_strdup ("");
- }
-}
-
-static gboolean
-my_value_is_empty (ETableModel *etc, int col, const void *value, void *data)
-{
- if (col == COLOR_COLUMN){
- return value == NULL;
- } else if (col == IMPORTANCE_COLUMN){
- return value == NULL;
- } else {
- return !(value && *(char *)value);
- }
-}
-
-static char *
-my_value_to_string (ETableModel *etc, int col, const void *value, void *data)
-{
- if (col == COLOR_COLUMN){
- return g_strdup_printf("%d", (int) value);
- } else if (col == IMPORTANCE_COLUMN){
- return g_strdup_printf("%d", (int) value);
- } else {
- return g_strdup(value);
- }
-}
-
-/* We create a window containing our new table. */
-static void
-create_table ()
-{
- GtkWidget *e_table, *window, *frame;
- ECell *cell_left_just;
- ECell *cell_checkbox;
- ETableHeader *e_table_header;
- int i, j;
- ETableModel *e_table_model = NULL;
- ETableCol *ecol;
- GdkPixbuf *pixbuf;
-
- /* First we fill in the simple data. */
- for (i = 0; i < ROWS; i++){
- for (j = 0; j < VIEW_COLS; j++){
- table_data[i][j] = g_strdup ("");
- }
- importance_data[i] = FALSE;
- }
- /* Next we create our model. This uses the functions we defined
- earlier. */
- e_table_model = e_table_simple_new (
- my_col_count, my_row_count, my_value_at,
- my_set_value_at, my_is_cell_editable,
- my_duplicate_value, my_free_value,
- my_initialize_value, my_value_is_empty,
- my_value_to_string,
- NULL);
- /*
- Next we create a header. The ETableHeader is used in two
- different way. The first is the full_header. This is the
- list of possible columns in the view. The second use is
- completely internal. Many of the ETableHeader functions are
- for that purpose. The only functions we really need are
- e_table_header_new and e_table_header_add_col.
-
- First we create the header. */
- e_table_header = e_table_header_new ();
-
- /* Next we have to build renderers for all of the columns.
- Since all our columns are text columns, we can simply use
- the same renderer over and over again. If we had different
- types of columns, we could use a different renderer for
- each column. */
- cell_left_just = e_cell_text_new (e_table_model, NULL, GTK_JUSTIFY_LEFT);
-
- /* Next we create a column object for each view column and add
- them to the header. We don't create a column object for
- the importance column since it will not be shown. */
- for (i = 0; i < VIEW_COLS; i++){
- /* Create the column. */
- ETableCol *ecol = e_table_col_new (
- i, headers [i],
- 1.0, 20, cell_left_just,
- g_str_compare, TRUE);
- /* Add it to the header. */
- e_table_header_add_column (e_table_header, ecol, i);
- }
-
- /* Next we add a special column for the check box. */
-
- cell_checkbox = e_cell_checkbox_new ();
- pixbuf = gdk_pixbuf_new_from_file ("clip.png");
- ecol = e_table_col_new_with_pixbuf (i, pixbuf, 0.0, 18, cell_checkbox, g_int_compare, TRUE);
- e_table_header_add_column (e_table_header, ecol, i);
-
- /*
- * Setup GUI
- */
- /* Here we create a window for our new table. This window
- will get shown and the person will be able to test their
- item. */
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- /* This frame is simply to get a bevel around our table. */
- frame = gtk_frame_new (NULL);
- /* Here we create the table. We give it the three pieces of
- the table we've created, the header, the model, and the
- initial layout. It does the rest. */
- e_table = e_table_new (e_table_header, e_table_model, INITIAL_SPEC);
-
- /* Build the gtk widget hierarchy. */
- gtk_container_add (GTK_CONTAINER (frame), e_table);
- gtk_container_add (GTK_CONTAINER (window), frame);
-
- /* Size the initial window. */
- gtk_widget_set_usize (window, 200, 200);
- /* Show it all. */
- gtk_widget_show_all (window);
-}
-
-
-
-int
-main (int argc, char *argv [])
-{
- gnome_init ("TableExample", "TableExample", argc, argv);
- e_cursors_init ();
-
- gtk_widget_push_visual (gdk_rgb_get_visual ());
- gtk_widget_push_colormap (gdk_rgb_get_cmap ());
-
- create_table ();
-
- gtk_main ();
-
- e_cursors_shutdown ();
- return 0;
-}
diff --git a/widgets/table/e-table-extras.c b/widgets/table/e-table-extras.c
deleted file mode 100644
index 85945a8109..0000000000
--- a/widgets/table/e-table-extras.c
+++ /dev/null
@@ -1,191 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * E-table-extras.c: Pair of hash table sort of thingies.
- *
- * Author:
- * Chris Lahey <clahey@ximian.com>
- *
- * (C) 2000 Ximian, Inc.
- */
-#include <config.h>
-#include <stdlib.h>
-#include <gtk/gtksignal.h>
-#include "gal/util/e-util.h"
-#include "gal/e-table/e-cell-text.h"
-#include "gal/e-table/e-cell-checkbox.h"
-#include "gal/e-table/e-cell-date.h"
-#include "gal/e-table/e-cell-number.h"
-#include "gal/e-table/e-cell-pixbuf.h"
-#include "gal/e-table/e-cell-size.h"
-#include "gal/e-table/e-cell-tree.h"
-#include "e-table-extras.h"
-
-#define PARENT_TYPE (gtk_object_get_type())
-
-static GtkObjectClass *ete_parent_class;
-
-static void
-cell_hash_free(gchar *key,
- ECell *cell,
- gpointer user_data)
-{
- g_free(key);
- if (cell)
- gtk_object_unref( GTK_OBJECT (cell));
-}
-
-static void
-pixbuf_hash_free(gchar *key,
- GdkPixbuf *pixbuf,
- gpointer user_data)
-{
- g_free(key);
- if (pixbuf)
- gdk_pixbuf_unref(pixbuf);
-}
-
-static void
-ete_destroy (GtkObject *object)
-{
- ETableExtras *ete = E_TABLE_EXTRAS (object);
-
- g_hash_table_foreach (ete->cells, (GHFunc) cell_hash_free, NULL);
- g_hash_table_foreach (ete->compares, (GHFunc) g_free, NULL);
- g_hash_table_foreach (ete->pixbufs, (GHFunc) pixbuf_hash_free, NULL);
-
- g_hash_table_destroy (ete->cells);
- g_hash_table_destroy (ete->compares);
- g_hash_table_destroy (ete->pixbufs);
-
- ete->cells = NULL;
- ete->compares = NULL;
- ete->pixbufs = NULL;
-
- GTK_OBJECT_CLASS (ete_parent_class)->destroy (object);
-}
-
-static void
-ete_class_init (GtkObjectClass *klass)
-{
- ete_parent_class = gtk_type_class (PARENT_TYPE);
-
- klass->destroy = ete_destroy;
-}
-
-static gint
-e_strint_compare(gconstpointer data1, gconstpointer data2)
-{
- int int1 = atoi(data1);
- int int2 = atoi(data2);
-
- return g_int_compare(GINT_TO_POINTER(int1), GINT_TO_POINTER(int2));
-}
-
-static void
-ete_init (ETableExtras *extras)
-{
- extras->cells = g_hash_table_new(g_str_hash, g_str_equal);
- extras->compares = g_hash_table_new(g_str_hash, g_str_equal);
- extras->pixbufs = g_hash_table_new(g_str_hash, g_str_equal);
-
- e_table_extras_add_compare(extras, "string", g_str_compare);
- e_table_extras_add_compare(extras, "integer", g_int_compare);
- e_table_extras_add_compare(extras, "string-integer", e_strint_compare);
-
- e_table_extras_add_cell(extras, "checkbox", e_cell_checkbox_new());
- e_table_extras_add_cell(extras, "date", e_cell_date_new (NULL, GTK_JUSTIFY_LEFT));
- e_table_extras_add_cell(extras, "number", e_cell_number_new (NULL, GTK_JUSTIFY_RIGHT));
- e_table_extras_add_cell(extras, "pixbuf", e_cell_pixbuf_new ());
- e_table_extras_add_cell(extras, "size", e_cell_size_new (NULL, GTK_JUSTIFY_RIGHT));
- e_table_extras_add_cell(extras, "string", e_cell_text_new (NULL, GTK_JUSTIFY_LEFT));
- e_table_extras_add_cell(extras, "tree-string", e_cell_tree_new (NULL, NULL, TRUE, e_cell_text_new (NULL, GTK_JUSTIFY_LEFT)));
-}
-
-E_MAKE_TYPE(e_table_extras, "ETableExtras", ETableExtras, ete_class_init, ete_init, PARENT_TYPE);
-
-ETableExtras *
-e_table_extras_new (void)
-{
- ETableExtras *ete = gtk_type_new (E_TABLE_EXTRAS_TYPE);
-
- return (ETableExtras *) ete;
-}
-
-void
-e_table_extras_add_cell (ETableExtras *extras,
- char *id,
- ECell *cell)
-{
- gchar *old_key;
- ECell *old_cell;
-
- if (g_hash_table_lookup_extended (extras->cells, id, (gpointer *)&old_key, (gpointer *)&old_cell)) {
- g_hash_table_remove (extras->cells, old_key);
- g_free (old_key);
- if (old_cell)
- gtk_object_unref (GTK_OBJECT(old_cell));
- }
-
- if (cell) {
- gtk_object_ref (GTK_OBJECT (cell));
- gtk_object_sink (GTK_OBJECT (cell));
- }
- g_hash_table_insert (extras->cells, g_strdup(id), cell);
-}
-
-ECell *
-e_table_extras_get_cell (ETableExtras *extras,
- char *id)
-{
- return g_hash_table_lookup(extras->cells, id);
-}
-
-void
-e_table_extras_add_compare (ETableExtras *extras,
- char *id,
- GCompareFunc compare)
-{
- gchar *old_key;
- GCompareFunc old_compare;
-
- if (g_hash_table_lookup_extended (extras->cells, id, (gpointer *)&old_key, (gpointer *)&old_compare)) {
- g_hash_table_remove (extras->cells, old_key);
- g_free (old_key);
- }
-
- g_hash_table_insert(extras->compares, g_strdup(id), compare);
-}
-
-GCompareFunc
-e_table_extras_get_compare (ETableExtras *extras,
- char *id)
-{
- return g_hash_table_lookup(extras->compares, id);
-}
-
-void
-e_table_extras_add_pixbuf (ETableExtras *extras,
- char *id,
- GdkPixbuf *pixbuf)
-{
- gchar *old_key;
- GdkPixbuf *old_pixbuf;
-
- if (g_hash_table_lookup_extended (extras->pixbufs, id, (gpointer *)&old_key, (gpointer *)&old_pixbuf)) {
- g_hash_table_remove (extras->cells, old_key);
- g_free (old_key);
- if (old_pixbuf)
- gdk_pixbuf_unref (old_pixbuf);
- }
-
- if (pixbuf)
- gdk_pixbuf_ref(pixbuf);
- g_hash_table_insert (extras->pixbufs, g_strdup(id), pixbuf);
-}
-
-GdkPixbuf *
-e_table_extras_get_pixbuf (ETableExtras *extras,
- char *id)
-{
- return g_hash_table_lookup(extras->pixbufs, id);
-}
diff --git a/widgets/table/e-table-extras.h b/widgets/table/e-table-extras.h
deleted file mode 100644
index d39fe9066f..0000000000
--- a/widgets/table/e-table-extras.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_EXTRAS_H_
-#define _E_TABLE_EXTRAS_H_
-
-#include <gtk/gtkobject.h>
-#include <gal/e-table/e-cell.h>
-#include <gdk-pixbuf/gdk-pixbuf.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_TABLE_EXTRAS_TYPE (e_table_extras_get_type ())
-#define E_TABLE_EXTRAS(o) (GTK_CHECK_CAST ((o), E_TABLE_EXTRAS_TYPE, ETableExtras))
-#define E_TABLE_EXTRAS_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_EXTRAS_TYPE, ETableExtrasClass))
-#define E_IS_TABLE_EXTRAS(o) (GTK_CHECK_TYPE ((o), E_TABLE_EXTRAS_TYPE))
-#define E_IS_TABLE_EXTRAS_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_EXTRAS_TYPE))
-
-typedef struct {
- GtkObject base;
-
- GHashTable *cells;
- GHashTable *compares;
- GHashTable *pixbufs;
-} ETableExtras;
-
-typedef struct {
- GtkObjectClass parent_class;
-} ETableExtrasClass;
-
-GtkType e_table_extras_get_type (void);
-ETableExtras *e_table_extras_new (void);
-
-void e_table_extras_add_cell (ETableExtras *extras,
- char *id,
- ECell *cell);
-ECell *e_table_extras_get_cell (ETableExtras *extras,
- char *id);
-
-void e_table_extras_add_compare (ETableExtras *extras,
- char *id,
- GCompareFunc compare);
-GCompareFunc e_table_extras_get_compare (ETableExtras *extras,
- char *id);
-
-void e_table_extras_add_pixbuf (ETableExtras *extras,
- char *id,
- GdkPixbuf *pixbuf);
-GdkPixbuf *e_table_extras_get_pixbuf (ETableExtras *extras,
- char *id);
-
-END_GNOME_DECLS
-
-#endif /* _E_TABLE_EXTRAS_H_ */
diff --git a/widgets/table/e-table-field-chooser-dialog.c b/widgets/table/e-table-field-chooser-dialog.c
deleted file mode 100644
index 894490baf0..0000000000
--- a/widgets/table/e-table-field-chooser-dialog.c
+++ /dev/null
@@ -1,190 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-table-field-chooser-dialog.c
- * Copyright (C) 2000 Ximian, Inc.
- * Author: Chris Lahey <clahey@ximian.com>
- *
- * This library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <libgnomeui/gnome-stock.h>
-#include "e-table-field-chooser-dialog.h"
-
-static void e_table_field_chooser_dialog_init (ETableFieldChooserDialog *card);
-static void e_table_field_chooser_dialog_class_init (ETableFieldChooserDialogClass *klass);
-static void e_table_field_chooser_dialog_set_arg (GtkObject *o, GtkArg *arg, guint arg_id);
-static void e_table_field_chooser_dialog_get_arg (GtkObject *object, GtkArg *arg, guint arg_id);
-static void e_table_field_chooser_dialog_destroy (GtkObject *object);
-static void e_table_field_chooser_dialog_clicked (GnomeDialog *dialog, gint button);
-
-static GnomeDialogClass *parent_class = NULL;
-
-/* The arguments we take */
-enum {
- ARG_0,
- ARG_DND_CODE,
- ARG_FULL_HEADER,
-};
-
-GtkType
-e_table_field_chooser_dialog_get_type (void)
-{
- static GtkType table_field_chooser_dialog_type = 0;
-
- if (!table_field_chooser_dialog_type)
- {
- static const GtkTypeInfo table_field_chooser_dialog_info =
- {
- "ETableFieldChooserDialog",
- sizeof (ETableFieldChooserDialog),
- sizeof (ETableFieldChooserDialogClass),
- (GtkClassInitFunc) e_table_field_chooser_dialog_class_init,
- (GtkObjectInitFunc) e_table_field_chooser_dialog_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- table_field_chooser_dialog_type = gtk_type_unique (gnome_dialog_get_type (), &table_field_chooser_dialog_info);
- }
-
- return table_field_chooser_dialog_type;
-}
-
-static void
-e_table_field_chooser_dialog_class_init (ETableFieldChooserDialogClass *klass)
-{
- GtkObjectClass *object_class;
- GnomeDialogClass *dialog_class;
-
- object_class = (GtkObjectClass*) klass;
- dialog_class = GNOME_DIALOG_CLASS (klass);
-
- parent_class = gtk_type_class (gnome_dialog_get_type ());
-
- object_class->destroy = e_table_field_chooser_dialog_destroy;
- object_class->set_arg = e_table_field_chooser_dialog_set_arg;
- object_class->get_arg = e_table_field_chooser_dialog_get_arg;
-
- dialog_class->clicked = e_table_field_chooser_dialog_clicked;
-
- gtk_object_add_arg_type ("ETableFieldChooserDialog::dnd_code", GTK_TYPE_STRING,
- GTK_ARG_READWRITE, ARG_DND_CODE);
- gtk_object_add_arg_type ("ETableFieldChooserDialog::full_header", GTK_TYPE_OBJECT,
- GTK_ARG_READWRITE, ARG_FULL_HEADER);
-}
-
-static void
-e_table_field_chooser_dialog_init (ETableFieldChooserDialog *e_table_field_chooser_dialog)
-{
- GtkWidget *widget;
-
- e_table_field_chooser_dialog->etfc = NULL;
- e_table_field_chooser_dialog->dnd_code = g_strdup("");
- e_table_field_chooser_dialog->full_header = NULL;
-
- gnome_dialog_append_buttons(GNOME_DIALOG(e_table_field_chooser_dialog),
- GNOME_STOCK_BUTTON_CLOSE,
- NULL);
-
- gtk_window_set_policy(GTK_WINDOW(e_table_field_chooser_dialog), FALSE, TRUE, FALSE);
-
- widget = e_table_field_chooser_new();
- e_table_field_chooser_dialog->etfc = E_TABLE_FIELD_CHOOSER(widget);
-
- gtk_object_set(GTK_OBJECT(widget),
- "dnd_code", e_table_field_chooser_dialog->dnd_code,
- "full_header", e_table_field_chooser_dialog->full_header,
- NULL);
-
- gtk_box_pack_start(GTK_BOX(GNOME_DIALOG(e_table_field_chooser_dialog)->vbox),
- widget, TRUE, TRUE, 0);
-
- gtk_widget_show(GTK_WIDGET(widget));
-}
-
-GtkWidget*
-e_table_field_chooser_dialog_new (void)
-{
- GtkWidget *widget = GTK_WIDGET (gtk_type_new (e_table_field_chooser_dialog_get_type ()));
- return widget;
-}
-
-static void
-e_table_field_chooser_dialog_destroy (GtkObject *object)
-{
- ETableFieldChooserDialog *etfcd = E_TABLE_FIELD_CHOOSER_DIALOG (object);
- g_free(etfcd->dnd_code);
- if (etfcd->full_header)
- gtk_object_unref(GTK_OBJECT(etfcd->full_header));
-}
-
-static void
-e_table_field_chooser_dialog_set_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- ETableFieldChooserDialog *etfcd = E_TABLE_FIELD_CHOOSER_DIALOG(object);
- switch (arg_id){
- case ARG_DND_CODE:
- g_free(etfcd->dnd_code);
- etfcd->dnd_code = g_strdup(GTK_VALUE_STRING (*arg));
- if (etfcd->etfc)
- gtk_object_set(GTK_OBJECT(etfcd->etfc),
- "dnd_code", etfcd->dnd_code,
- NULL);
- break;
- case ARG_FULL_HEADER:
- if (etfcd->full_header)
- gtk_object_unref(GTK_OBJECT(etfcd->full_header));
- if (GTK_VALUE_OBJECT(*arg))
- etfcd->full_header = E_TABLE_HEADER(GTK_VALUE_OBJECT(*arg));
- else
- etfcd->full_header = NULL;
- if (etfcd->full_header)
- gtk_object_ref(GTK_OBJECT(etfcd->full_header));
- if (etfcd->etfc)
- gtk_object_set(GTK_OBJECT(etfcd->etfc),
- "full_header", etfcd->full_header,
- NULL);
- break;
- default:
- break;
- }
-}
-
-static void
-e_table_field_chooser_dialog_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- ETableFieldChooserDialog *etfcd = E_TABLE_FIELD_CHOOSER_DIALOG(object);
- switch (arg_id) {
- case ARG_DND_CODE:
- GTK_VALUE_STRING (*arg) = g_strdup (etfcd->dnd_code);
- break;
- case ARG_FULL_HEADER:
- GTK_VALUE_OBJECT (*arg) = GTK_OBJECT(etfcd->full_header);
- break;
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
-
-static void
-e_table_field_chooser_dialog_clicked (GnomeDialog *dialog, int button)
-{
- if (button == 0)
- gnome_dialog_close(dialog);
-}
diff --git a/widgets/table/e-table-field-chooser-dialog.h b/widgets/table/e-table-field-chooser-dialog.h
deleted file mode 100644
index 4e8992f54a..0000000000
--- a/widgets/table/e-table-field-chooser-dialog.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* e-table-field-chooser-dialog.h
- * Copyright (C) 2000 Ximian, Inc.
- * Author: Chris Lahey <clahey@ximian.com>
- *
- * This library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-#ifndef __E_TABLE_FIELD_CHOOSER_DIALOG_H__
-#define __E_TABLE_FIELD_CHOOSER_DIALOG_H__
-
-#include <libgnomeui/gnome-dialog.h>
-#include <gal/e-table/e-table-field-chooser.h>
-#include <gal/e-table/e-table-header.h>
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-/* ETableFieldChooserDialog - A dialog displaying information about a contact.
- *
- * The following arguments are available:
- *
- * name type read/write description
- * --------------------------------------------------------------------------------
- */
-
-#define E_TABLE_FIELD_CHOOSER_DIALOG_TYPE (e_table_field_chooser_dialog_get_type ())
-#define E_TABLE_FIELD_CHOOSER_DIALOG(obj) (GTK_CHECK_CAST ((obj), E_TABLE_FIELD_CHOOSER_DIALOG_TYPE, ETableFieldChooserDialog))
-#define E_TABLE_FIELD_CHOOSER_DIALOG_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_TABLE_FIELD_CHOOSER_DIALOG_TYPE, ETableFieldChooserDialogClass))
-#define E_IS_TABLE_FIELD_CHOOSER_DIALOG(obj) (GTK_CHECK_TYPE ((obj), E_TABLE_FIELD_CHOOSER_DIALOG_TYPE))
-#define E_IS_TABLE_FIELD_CHOOSER_DIALOG_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), E_TABLE_FIELD_CHOOSER_DIALOG_TYPE))
-
-
-typedef struct _ETableFieldChooserDialog ETableFieldChooserDialog;
-typedef struct _ETableFieldChooserDialogClass ETableFieldChooserDialogClass;
-
-struct _ETableFieldChooserDialog
-{
- GnomeDialog parent;
-
- /* item specific fields */
- ETableFieldChooser *etfc;
- gchar *dnd_code;
- ETableHeader *full_header;
-};
-
-struct _ETableFieldChooserDialogClass
-{
- GnomeDialogClass parent_class;
-};
-
-
-GtkWidget *e_table_field_chooser_dialog_new(void);
-GtkType e_table_field_chooser_dialog_get_type (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* __E_TABLE_FIELD_CHOOSER_DIALOG_H__ */
diff --git a/widgets/table/e-table-field-chooser-item.c b/widgets/table/e-table-field-chooser-item.c
deleted file mode 100644
index a551f75c6a..0000000000
--- a/widgets/table/e-table-field-chooser-item.c
+++ /dev/null
@@ -1,561 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * E-table-column-view.c: A canvas item based view of the ETableColumn.
- *
- * Author:
- * Miguel de Icaza (miguel@gnu.org)
- *
- * Copyright 1999, 2000 Ximian, Inc.
- */
-#include <config.h>
-#include <string.h>
-#include <gtk/gtksignal.h>
-#include <gtk/gtkdnd.h>
-#include <libgnomeui/gnome-canvas.h>
-#include <libgnomeui/gnome-canvas-util.h>
-#include <libgnomeui/gnome-canvas-polygon.h>
-#include <libgnomeui/gnome-canvas-rect-ellipse.h>
-#include <gdk-pixbuf/gdk-pixbuf.h>
-
-#include "gal/util/e-xml-utils.h"
-#include "gal/widgets/e-canvas.h"
-
-#include "e-table-header.h"
-#include "e-table-col-dnd.h"
-#include "e-table-defines.h"
-#include "e-table-header-utils.h"
-
-#include "e-table-field-chooser-item.h"
-
-#if 0
-enum {
- BUTTON_PRESSED,
- LAST_SIGNAL
-};
-
-static guint etfci_signals [LAST_SIGNAL] = { 0, };
-#endif
-
-#define PARENT_OBJECT_TYPE gnome_canvas_item_get_type ()
-
-#define ELEMENTS(x) (sizeof (x) / sizeof (x[0]))
-
-static GnomeCanvasItemClass *etfci_parent_class;
-
-static void etfci_drop_table_header (ETableFieldChooserItem *etfci);
-
-enum {
- ARG_0,
- ARG_FULL_HEADER,
- ARG_DND_CODE,
- ARG_WIDTH,
- ARG_HEIGHT,
-};
-
-static void
-etfci_destroy (GtkObject *object){
- ETableFieldChooserItem *etfci = E_TABLE_FIELD_CHOOSER_ITEM (object);
-
- etfci_drop_table_header (etfci);
-
- gdk_font_unref(etfci->font);
-
- if (GTK_OBJECT_CLASS (etfci_parent_class)->destroy)
- (*GTK_OBJECT_CLASS (etfci_parent_class)->destroy) (object);
-}
-
-static gint
-etfci_find_button (ETableFieldChooserItem *etfci, double loc)
-{
- int i;
- int count;
- double height = 0;
- GtkStyle *style;
-
- style = GTK_WIDGET (GNOME_CANVAS_ITEM (etfci)->canvas)->style;
-
- count = e_table_header_count(etfci->full_header);
- for (i = 0; i < count; i++) {
- ETableCol *ecol;
-
- ecol = e_table_header_get_column (etfci->full_header, i);
- height += e_table_header_compute_height (ecol, style, etfci->font);
- if (height > loc)
- return i;
- }
- return MAX(0, count - 1);
-}
-
-static void
-etfci_reflow (GnomeCanvasItem *item, gint flags)
-{
- ETableFieldChooserItem *etfci = E_TABLE_FIELD_CHOOSER_ITEM (item);
- double old_height;
- int i;
- int count;
- double height = 0;
- GtkStyle *style;
-
- style = GTK_WIDGET (GNOME_CANVAS_ITEM (etfci)->canvas)->style;
-
- old_height = etfci->height;
-
- count = e_table_header_count(etfci->full_header);
- for (i = 0; i < count; i++) {
- ETableCol *ecol;
-
- ecol = e_table_header_get_column (etfci->full_header, i);
- height += e_table_header_compute_height (ecol, style, etfci->font);
- }
-
- etfci->height = height;
-
- if (old_height != etfci->height)
- e_canvas_item_request_parent_reflow(item);
-
- gnome_canvas_item_request_update(item);
-}
-
-static void
-etfci_update (GnomeCanvasItem *item, double *affine, ArtSVP *clip_path, int flags)
-{
- ETableFieldChooserItem *etfci = E_TABLE_FIELD_CHOOSER_ITEM (item);
- double i2c [6];
- ArtPoint c1, c2, i1, i2;
-
- if (GNOME_CANVAS_ITEM_CLASS (etfci_parent_class)->update)
- (*GNOME_CANVAS_ITEM_CLASS (etfci_parent_class)->update)(item, affine, clip_path, flags);
-
- i1.x = i1.y = 0;
- i2.x = etfci->width;
- i2.y = etfci->height;
-
- gnome_canvas_item_i2c_affine (item, i2c);
- art_affine_point (&c1, &i1, i2c);
- art_affine_point (&c2, &i2, i2c);
-
- if (item->x1 != c1.x ||
- item->y1 != c1.y ||
- item->x2 != c2.x ||
- item->y2 != c2.y)
- {
- gnome_canvas_request_redraw (item->canvas, item->x1, item->y1, item->x2, item->y2);
- item->x1 = c1.x;
- item->y1 = c1.y;
- item->x2 = c2.x;
- item->y2 = c2.y;
-
- gnome_canvas_group_child_bounds (GNOME_CANVAS_GROUP (item->parent), item);
- }
- gnome_canvas_request_redraw (item->canvas, item->x1, item->y1, item->x2, item->y2);
-}
-
-static void
-etfci_font_load (ETableFieldChooserItem *etfci, char *font)
-{
- if (etfci->font)
- gdk_font_unref (etfci->font);
- etfci->font = NULL;
-
- if (font)
- etfci->font = gdk_fontset_load (font);
-
- if (etfci->font == NULL) {
- etfci->font = GTK_WIDGET(GNOME_CANVAS_ITEM(etfci)->canvas)->style->font;
- gdk_font_ref(etfci->font);
- }
-}
-
-static void
-etfci_drop_table_header (ETableFieldChooserItem *etfci)
-{
- GtkObject *header;
-
- if (!etfci->full_header)
- return;
-
- header = GTK_OBJECT (etfci->full_header);
- if (etfci->structure_change_id)
- gtk_signal_disconnect (header, etfci->structure_change_id);
- if (etfci->dimension_change_id)
- gtk_signal_disconnect (header, etfci->dimension_change_id);
- etfci->structure_change_id = 0;
- etfci->dimension_change_id = 0;
-
- if (header)
- gtk_object_unref (header);
- etfci->full_header = NULL;
- etfci->height = 0;
- e_canvas_item_request_reflow(GNOME_CANVAS_ITEM(etfci));
-}
-
-static void
-structure_changed (ETableHeader *header, ETableFieldChooserItem *etfci)
-{
- e_canvas_item_request_reflow(GNOME_CANVAS_ITEM(etfci));
-}
-
-static void
-dimension_changed (ETableHeader *header, int col, ETableFieldChooserItem *etfci)
-{
- e_canvas_item_request_reflow(GNOME_CANVAS_ITEM(etfci));
-}
-
-static void
-etfci_add_table_header (ETableFieldChooserItem *etfci, ETableHeader *header)
-{
- etfci->full_header = header;
- gtk_object_ref (GTK_OBJECT (etfci->full_header));
-
- etfci->structure_change_id = gtk_signal_connect (
- GTK_OBJECT (header), "structure_change",
- GTK_SIGNAL_FUNC(structure_changed), etfci);
- etfci->dimension_change_id = gtk_signal_connect (
- GTK_OBJECT (header), "dimension_change",
- GTK_SIGNAL_FUNC(dimension_changed), etfci);
- e_canvas_item_request_reflow(GNOME_CANVAS_ITEM(etfci));
-}
-
-static void
-etfci_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- GnomeCanvasItem *item;
- ETableFieldChooserItem *etfci;
-
- item = GNOME_CANVAS_ITEM (o);
- etfci = E_TABLE_FIELD_CHOOSER_ITEM (o);
-
- switch (arg_id){
- case ARG_FULL_HEADER:
- etfci_drop_table_header (etfci);
- if (GTK_VALUE_OBJECT (*arg))
- etfci_add_table_header (etfci, E_TABLE_HEADER(GTK_VALUE_OBJECT (*arg)));
- break;
-
- case ARG_DND_CODE:
- g_free(etfci->dnd_code);
- etfci->dnd_code = g_strdup(GTK_VALUE_STRING (*arg));
- break;
-
- case ARG_WIDTH:
- etfci->width = GTK_VALUE_DOUBLE (*arg);
- gnome_canvas_item_request_update(item);
- break;
- }
-}
-
-static void
-etfci_get_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- GnomeCanvasItem *item;
- ETableFieldChooserItem *etfci;
-
- item = GNOME_CANVAS_ITEM (o);
- etfci = E_TABLE_FIELD_CHOOSER_ITEM (o);
-
- switch (arg_id){
-
- case ARG_DND_CODE:
- GTK_VALUE_STRING (*arg) = g_strdup (etfci->dnd_code);
- break;
- case ARG_WIDTH:
- GTK_VALUE_DOUBLE (*arg) = etfci->width;
- break;
- case ARG_HEIGHT:
- GTK_VALUE_DOUBLE (*arg) = etfci->height;
- break;
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
-
-static void
-etfci_drag_data_get (GtkWidget *widget,
- GdkDragContext *context,
- GtkSelectionData *selection_data,
- guint info,
- guint time,
- ETableFieldChooserItem *etfci)
-{
- if (etfci->drag_col != -1) {
- gchar *string = g_strdup_printf("%d", etfci->drag_col);
- gtk_selection_data_set(selection_data,
- GDK_SELECTION_TYPE_STRING,
- sizeof(string[0]),
- string,
- strlen(string));
- g_free(string);
- }
-}
-
-static void
-etfci_drag_end (GtkWidget *canvas,
- GdkDragContext *context,
- ETableFieldChooserItem *etfci)
-{
- etfci->drag_col = -1;
-}
-
-static void
-etfci_realize (GnomeCanvasItem *item)
-{
- ETableFieldChooserItem *etfci = E_TABLE_FIELD_CHOOSER_ITEM (item);
- GdkWindow *window;
-
- if (GNOME_CANVAS_ITEM_CLASS (etfci_parent_class)-> realize)
- (*GNOME_CANVAS_ITEM_CLASS (etfci_parent_class)->realize)(item);
-
- window = GTK_WIDGET (item->canvas)->window;
-
- if (!etfci->font)
- etfci_font_load (etfci, NULL);
-
- etfci->drag_end_id = gtk_signal_connect (
- GTK_OBJECT (item->canvas), "drag_end",
- GTK_SIGNAL_FUNC (etfci_drag_end), etfci);
- etfci->drag_data_get_id = gtk_signal_connect (
- GTK_OBJECT (item->canvas), "drag_data_get",
- GTK_SIGNAL_FUNC (etfci_drag_data_get), etfci);
- e_canvas_item_request_reflow(GNOME_CANVAS_ITEM(etfci));
-}
-
-static void
-etfci_unrealize (GnomeCanvasItem *item)
-{
- ETableFieldChooserItem *etfci = E_TABLE_FIELD_CHOOSER_ITEM (item);
-
- if (etfci->font)
- gdk_font_unref (etfci->font);
- etfci->font = NULL;
-
- gtk_signal_disconnect (GTK_OBJECT (item->canvas), etfci->drag_end_id);
- etfci->drag_end_id = 0;
- gtk_signal_disconnect (GTK_OBJECT (item->canvas), etfci->drag_data_get_id);
- etfci->drag_data_get_id = 0;
-
- if (GNOME_CANVAS_ITEM_CLASS (etfci_parent_class)->unrealize)
- (*GNOME_CANVAS_ITEM_CLASS (etfci_parent_class)->unrealize)(item);
-}
-
-static void
-etfci_draw (GnomeCanvasItem *item, GdkDrawable *drawable, int x, int y, int width, int height)
-{
- ETableFieldChooserItem *etfci = E_TABLE_FIELD_CHOOSER_ITEM (item);
- GnomeCanvas *canvas = item->canvas;
- const int rows = e_table_header_count (etfci->full_header);
- int y1, y2;
- int row;
- GtkStyle *style;
- GtkStateType state;
-
- style = GTK_WIDGET (canvas)->style;
- state = GTK_WIDGET_STATE (canvas);
-
- y1 = y2 = 0;
- for (row = 0; row < rows; row++, y1 = y2){
- ETableCol *ecol;
-
- ecol = e_table_header_get_column (etfci->full_header, row);
-
- y2 += e_table_header_compute_height (ecol, style, etfci->font);
-
- if (y1 > (y + height))
- break;
-
- if (y2 < y)
- continue;
-
- e_table_header_draw_button (drawable, ecol,
- style, etfci->font, state,
- GTK_WIDGET (canvas), style->fg_gc[GTK_STATE_NORMAL],
- -x, y1 - y,
- width, height,
- etfci->width, y2 - y1,
- E_TABLE_COL_ARROW_NONE);
- }
-}
-
-static double
-etfci_point (GnomeCanvasItem *item, double x, double y, int cx, int cy,
- GnomeCanvasItem **actual_item)
-{
- *actual_item = item;
- return 0.0;
-}
-
-static gboolean
-etfci_maybe_start_drag (ETableFieldChooserItem *etfci, double x, double y)
-{
- if (!etfci->maybe_drag)
- return FALSE;
-
- if (MAX (abs (etfci->click_x - x),
- abs (etfci->click_y - y)) <= 3)
- return FALSE;
-
- return TRUE;
-}
-
-static void
-etfci_start_drag (ETableFieldChooserItem *etfci, GdkEvent *event, double x, double y)
-{
- GtkWidget *widget = GTK_WIDGET (GNOME_CANVAS_ITEM (etfci)->canvas);
- GtkTargetList *list;
- GdkDragContext *context;
- ETableCol *ecol;
- GdkPixmap *pixmap;
- int drag_col;
- int button_height;
-
- GtkTargetEntry etfci_drag_types [] = {
- { TARGET_ETABLE_COL_TYPE, 0, TARGET_ETABLE_COL_HEADER },
- };
-
- drag_col = etfci_find_button(etfci, y);
-
- if (drag_col < 0 || drag_col > e_table_header_count(etfci->full_header))
- return;
-
- ecol = e_table_header_get_column (etfci->full_header, drag_col);
-
- etfci->drag_col = ecol->col_idx;
-
- etfci_drag_types[0].target = g_strdup_printf("%s-%s", etfci_drag_types[0].target, etfci->dnd_code);
- list = gtk_target_list_new (etfci_drag_types, ELEMENTS (etfci_drag_types));
- context = gtk_drag_begin (widget, list, GDK_ACTION_MOVE, 1, event);
- g_free(etfci_drag_types[0].target);
-
- button_height = e_table_header_compute_height (ecol, widget->style, etfci->font);
- pixmap = gdk_pixmap_new (widget->window, etfci->width, button_height, -1);
-
- e_table_header_draw_button (pixmap, e_table_header_get_column (etfci->full_header, drag_col),
- widget->style, etfci->font, GTK_WIDGET_STATE (widget),
- widget, widget->style->fg_gc[GTK_STATE_NORMAL],
- 0, 0,
- etfci->width, button_height,
- etfci->width, button_height,
- E_TABLE_COL_ARROW_NONE);
-
- gtk_drag_set_icon_pixmap (context,
- gdk_window_get_colormap (widget->window),
- pixmap,
- NULL,
- etfci->width / 2,
- button_height / 2);
- gdk_pixmap_unref (pixmap);
- etfci->maybe_drag = FALSE;
-}
-
-/*
- * Handles the events on the ETableFieldChooserItem
- */
-static int
-etfci_event (GnomeCanvasItem *item, GdkEvent *e)
-{
- ETableFieldChooserItem *etfci = E_TABLE_FIELD_CHOOSER_ITEM (item);
- GnomeCanvas *canvas = item->canvas;
- int x, y;
-
- switch (e->type){
- case GDK_MOTION_NOTIFY:
- gnome_canvas_w2c (canvas, e->motion.x, e->motion.y, &x, &y);
-
- if (etfci_maybe_start_drag (etfci, x, y))
- etfci_start_drag (etfci, e, x, y);
- break;
-
- case GDK_BUTTON_PRESS:
- gnome_canvas_w2c (canvas, e->button.x, e->button.y, &x, &y);
-
- if (e->button.button == 1){
- etfci->click_x = x;
- etfci->click_y = y;
- etfci->maybe_drag = TRUE;
- }
- break;
-
- case GDK_BUTTON_RELEASE: {
- etfci->maybe_drag = FALSE;
- break;
- }
-
- default:
- return FALSE;
- }
- return TRUE;
-}
-
-static void
-etfci_class_init (GtkObjectClass *object_class)
-{
- GnomeCanvasItemClass *item_class = (GnomeCanvasItemClass *) object_class;
-
- etfci_parent_class = gtk_type_class (PARENT_OBJECT_TYPE);
-
- object_class->destroy = etfci_destroy;
- object_class->set_arg = etfci_set_arg;
- object_class->get_arg = etfci_get_arg;
-
- item_class->update = etfci_update;
- item_class->realize = etfci_realize;
- item_class->unrealize = etfci_unrealize;
- item_class->draw = etfci_draw;
- item_class->point = etfci_point;
- item_class->event = etfci_event;
-
- gtk_object_add_arg_type ("ETableFieldChooserItem::dnd_code", GTK_TYPE_STRING,
- GTK_ARG_READWRITE, ARG_DND_CODE);
- gtk_object_add_arg_type ("ETableFieldChooserItem::full_header", GTK_TYPE_OBJECT,
- GTK_ARG_WRITABLE, ARG_FULL_HEADER);
- gtk_object_add_arg_type ("ETableFieldChooserItem::width", GTK_TYPE_DOUBLE,
- GTK_ARG_READWRITE, ARG_WIDTH);
- gtk_object_add_arg_type ("ETableFieldChooserItem::height", GTK_TYPE_DOUBLE,
- GTK_ARG_READABLE, ARG_HEIGHT);
-}
-
-static void
-etfci_init (GnomeCanvasItem *item)
-{
- ETableFieldChooserItem *etfci = E_TABLE_FIELD_CHOOSER_ITEM (item);
-
- etfci->full_header = NULL;
-
- etfci->height = etfci->width = 0;
-
- etfci->font = NULL;
-
- etfci->structure_change_id = 0;
- etfci->dimension_change_id = 0;
-
- etfci->dnd_code = NULL;
-
- etfci->maybe_drag = 0;
- etfci->drag_end_id = 0;
-
- e_canvas_item_set_reflow_callback(item, etfci_reflow);
-}
-
-GtkType
-e_table_field_chooser_item_get_type (void)
-{
- static GtkType type = 0;
-
- if (!type){
- GtkTypeInfo info = {
- "ETableFieldChooserItem",
- sizeof (ETableFieldChooserItem),
- sizeof (ETableFieldChooserItemClass),
- (GtkClassInitFunc) etfci_class_init,
- (GtkObjectInitFunc) etfci_init,
- NULL, /* reserved 1 */
- NULL, /* reserved 2 */
- (GtkClassInitFunc) NULL
- };
-
- type = gtk_type_unique (PARENT_OBJECT_TYPE, &info);
- }
-
- return type;
-}
-
diff --git a/widgets/table/e-table-field-chooser-item.h b/widgets/table/e-table-field-chooser-item.h
deleted file mode 100644
index d91c36d52b..0000000000
--- a/widgets/table/e-table-field-chooser-item.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_FIELD_CHOOSER_ITEM_H_
-#define _E_TABLE_FIELD_CHOOSER_ITEM_H_
-
-#include <libgnomeui/gnome-canvas.h>
-#include <gnome-xml/tree.h>
-#include <gal/e-table/e-table-header.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_TABLE_FIELD_CHOOSER_ITEM_TYPE (e_table_field_chooser_item_get_type ())
-#define E_TABLE_FIELD_CHOOSER_ITEM(o) (GTK_CHECK_CAST ((o), E_TABLE_FIELD_CHOOSER_ITEM_TYPE, ETableFieldChooserItem))
-#define E_TABLE_FIELD_CHOOSER_ITEM_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_FIELD_CHOOSER_ITEM_TYPE, ETableFieldChooserItemClass))
-#define E_IS_TABLE_FIELD_CHOOSER_ITEM(o) (GTK_CHECK_TYPE ((o), E_TABLE_FIELD_CHOOSER_ITEM_TYPE))
-#define E_IS_TABLE_FIELD_CHOOSER_ITEM_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_FIELD_CHOOSER_ITEM_TYPE))
-
-typedef struct {
- GnomeCanvasItem parent;
- ETableHeader *full_header;
-
- double height, width;
-
- GdkFont *font;
-
- /*
- * Ids
- */
- int structure_change_id, dimension_change_id;
-
- gchar *dnd_code;
-
- /*
- * For dragging columns
- */
- guint maybe_drag:1;
- int click_x, click_y;
- int drag_col;
- guint drag_data_get_id;
- guint drag_end_id;
-} ETableFieldChooserItem;
-
-typedef struct {
- GnomeCanvasItemClass parent_class;
-} ETableFieldChooserItemClass;
-
-GtkType e_table_field_chooser_item_get_type (void);
-
-END_GNOME_DECLS
-
-#endif /* _E_TABLE_FIELD_CHOOSER_ITEM_H_ */
diff --git a/widgets/table/e-table-field-chooser.c b/widgets/table/e-table-field-chooser.c
deleted file mode 100644
index 345883cb89..0000000000
--- a/widgets/table/e-table-field-chooser.c
+++ /dev/null
@@ -1,248 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-table-field-chooser.c
- * Copyright (C) 2000 Ximian, Inc.
- * Author: Chris Lahey <clahey@ximian.com>
- *
- * This library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <libgnomeui/gnome-canvas-rect-ellipse.h>
-#include "e-table-field-chooser.h"
-#include "e-table-field-chooser-item.h"
-
-static void e_table_field_chooser_init (ETableFieldChooser *card);
-static void e_table_field_chooser_class_init (ETableFieldChooserClass *klass);
-static void e_table_field_chooser_set_arg (GtkObject *o, GtkArg *arg, guint arg_id);
-static void e_table_field_chooser_get_arg (GtkObject *object, GtkArg *arg, guint arg_id);
-static void e_table_field_chooser_destroy (GtkObject *object);
-
-static GtkVBoxClass *parent_class = NULL;
-
-/* The arguments we take */
-enum {
- ARG_0,
- ARG_FULL_HEADER,
- ARG_DND_CODE,
-};
-
-GtkType
-e_table_field_chooser_get_type (void)
-{
- static GtkType table_field_chooser_type = 0;
-
- if (!table_field_chooser_type)
- {
- static const GtkTypeInfo table_field_chooser_info =
- {
- "ETableFieldChooser",
- sizeof (ETableFieldChooser),
- sizeof (ETableFieldChooserClass),
- (GtkClassInitFunc) e_table_field_chooser_class_init,
- (GtkObjectInitFunc) e_table_field_chooser_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- table_field_chooser_type = gtk_type_unique (gtk_vbox_get_type (), &table_field_chooser_info);
- }
-
- return table_field_chooser_type;
-}
-
-static void
-e_table_field_chooser_class_init (ETableFieldChooserClass *klass)
-{
- GtkObjectClass *object_class;
- GtkVBoxClass *vbox_class;
-
- object_class = (GtkObjectClass*) klass;
- vbox_class = (GtkVBoxClass *) klass;
-
- glade_gnome_init();
-
- parent_class = gtk_type_class (gtk_vbox_get_type ());
-
- object_class->set_arg = e_table_field_chooser_set_arg;
- object_class->get_arg = e_table_field_chooser_get_arg;
- object_class->destroy = e_table_field_chooser_destroy;
- gtk_object_add_arg_type ("ETableFieldChooser::dnd_code", GTK_TYPE_STRING,
- GTK_ARG_READWRITE, ARG_DND_CODE);
- gtk_object_add_arg_type ("ETableFieldChooser::full_header", GTK_TYPE_OBJECT,
- GTK_ARG_READWRITE, ARG_FULL_HEADER);
-}
-
-static void allocate_callback(GtkWidget *canvas, GtkAllocation *allocation, ETableFieldChooser *etfc)
-{
- double height;
- etfc->last_alloc = *allocation;
- gnome_canvas_item_set( etfc->item,
- "width", (double) allocation->width,
- NULL );
- gtk_object_get(GTK_OBJECT(etfc->item),
- "height", &height,
- NULL);
- height = MAX(height, allocation->height);
- gnome_canvas_set_scroll_region(GNOME_CANVAS( etfc->canvas ), 0, 0, allocation->width - 1, height - 1);
- gnome_canvas_item_set( etfc->rect,
- "x2", (double) allocation->width,
- "y2", (double) height,
- NULL );
-}
-
-static void resize(GnomeCanvas *canvas, ETableFieldChooser *etfc)
-{
- double height;
- gtk_object_get(GTK_OBJECT(etfc->item),
- "height", &height,
- NULL);
-
- height = MAX(height, etfc->last_alloc.height);
-
- gnome_canvas_set_scroll_region (GNOME_CANVAS(etfc->canvas), 0, 0, etfc->last_alloc.width - 1, height - 1);
- gnome_canvas_item_set( etfc->rect,
- "x2", (double) etfc->last_alloc.width,
- "y2", (double) height,
- NULL );
-}
-
-static void
-e_table_field_chooser_init (ETableFieldChooser *etfc)
-{
- GladeXML *gui;
- GtkWidget *widget;
-
- gui = glade_xml_new_with_domain (ETABLE_GLADEDIR "/e-table-field-chooser.glade", NULL, PACKAGE);
- etfc->gui = gui;
-
- widget = glade_xml_get_widget(gui, "vbox-top");
- if (!widget) {
- return;
- }
- gtk_widget_reparent(widget,
- GTK_WIDGET(etfc));
-
- gtk_widget_push_visual (gdk_rgb_get_visual ());
- gtk_widget_push_colormap (gdk_rgb_get_cmap ());
-
- etfc->canvas = GNOME_CANVAS(glade_xml_get_widget(gui, "canvas-buttons"));
-
- etfc->rect = gnome_canvas_item_new(gnome_canvas_root( GNOME_CANVAS( etfc->canvas ) ),
- gnome_canvas_rect_get_type(),
- "x1", (double) 0,
- "y1", (double) 0,
- "x2", (double) 100,
- "y2", (double) 100,
- "fill_color", "white",
- NULL );
-
- etfc->item = gnome_canvas_item_new(gnome_canvas_root(etfc->canvas),
- e_table_field_chooser_item_get_type(),
- "width", (double) 100,
- "full_header", etfc->full_header,
- "dnd_code", etfc->dnd_code,
- NULL );
-
- gtk_signal_connect( GTK_OBJECT( etfc->canvas ), "reflow",
- GTK_SIGNAL_FUNC( resize ),
- etfc);
-
- gnome_canvas_set_scroll_region ( GNOME_CANVAS( etfc->canvas ),
- 0, 0,
- 100, 100 );
-
- /* Connect the signals */
- gtk_signal_connect (GTK_OBJECT (etfc->canvas), "size_allocate",
- GTK_SIGNAL_FUNC (allocate_callback),
- etfc);
-
- gtk_widget_pop_visual ();
- gtk_widget_pop_colormap ();
- gtk_widget_show(widget);
-}
-
-static void
-e_table_field_chooser_destroy (GtkObject *object)
-{
- ETableFieldChooser *etfc = E_TABLE_FIELD_CHOOSER(object);
-
- g_free(etfc->dnd_code);
- if (etfc->full_header)
- gtk_object_unref(GTK_OBJECT(etfc->full_header));
-
- if (etfc->gui)
- gtk_object_unref(GTK_OBJECT(etfc->gui));
-}
-
-GtkWidget*
-e_table_field_chooser_new (void)
-{
- GtkWidget *widget = GTK_WIDGET (gtk_type_new (e_table_field_chooser_get_type ()));
- return widget;
-}
-
-static void
-e_table_field_chooser_set_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- ETableFieldChooser *etfc = E_TABLE_FIELD_CHOOSER(object);
-
- switch (arg_id){
- case ARG_DND_CODE:
- g_free(etfc->dnd_code);
- etfc->dnd_code = g_strdup(GTK_VALUE_STRING (*arg));
- if (etfc->item)
- gtk_object_set(GTK_OBJECT(etfc->item),
- "dnd_code", etfc->dnd_code,
- NULL);
- break;
- case ARG_FULL_HEADER:
- if (etfc->full_header)
- gtk_object_unref(GTK_OBJECT(etfc->full_header));
- if (GTK_VALUE_OBJECT(*arg))
- etfc->full_header = E_TABLE_HEADER(GTK_VALUE_OBJECT(*arg));
- else
- etfc->full_header = NULL;
- if (etfc->full_header)
- gtk_object_ref(GTK_OBJECT(etfc->full_header));
- if (etfc->item)
- gtk_object_set(GTK_OBJECT(etfc->item),
- "full_header", etfc->full_header,
- NULL);
- break;
- default:
- break;
- }
-}
-
-static void
-e_table_field_chooser_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- ETableFieldChooser *etfc = E_TABLE_FIELD_CHOOSER(object);
-
- switch (arg_id) {
- case ARG_DND_CODE:
- GTK_VALUE_STRING (*arg) = g_strdup (etfc->dnd_code);
- break;
- case ARG_FULL_HEADER:
- GTK_VALUE_OBJECT (*arg) = GTK_OBJECT(etfc->full_header);
- break;
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
diff --git a/widgets/table/e-table-field-chooser.glade b/widgets/table/e-table-field-chooser.glade
deleted file mode 100644
index e09d618a7f..0000000000
--- a/widgets/table/e-table-field-chooser.glade
+++ /dev/null
@@ -1,129 +0,0 @@
-<?xml version="1.0"?>
-<GTK-Interface>
-
-<project>
- <name>e-table-field-chooser</name>
- <program_name>e-table-field-chooser</program_name>
- <directory></directory>
- <source_directory>src</source_directory>
- <pixmaps_directory>pixmaps</pixmaps_directory>
- <language>C</language>
- <gnome_support>True</gnome_support>
- <gettext_support>True</gettext_support>
- <use_widget_names>True</use_widget_names>
- <output_main_file>False</output_main_file>
- <output_support_files>False</output_support_files>
- <output_build_files>False</output_build_files>
- <gnome_help_support>True</gnome_help_support>
-</project>
-
-<widget>
- <class>GnomeDialog</class>
- <name>dialog-field-chooser</name>
- <visible>False</visible>
- <title>Field Chooser</title>
- <type>GTK_WINDOW_TOPLEVEL</type>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>True</allow_grow>
- <auto_shrink>False</auto_shrink>
- <auto_close>False</auto_close>
- <hide_on_close>False</hide_on_close>
-
- <widget>
- <class>GtkVBox</class>
- <child_name>GnomeDialog:vbox</child_name>
- <name>dialog-vbox1</name>
- <homogeneous>False</homogeneous>
- <spacing>8</spacing>
- <child>
- <padding>4</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkHButtonBox</class>
- <child_name>GnomeDialog:action_area</child_name>
- <name>dialog-action_area1</name>
- <layout_style>GTK_BUTTONBOX_END</layout_style>
- <spacing>8</spacing>
- <child_min_width>85</child_min_width>
- <child_min_height>27</child_min_height>
- <child_ipad_x>7</child_ipad_x>
- <child_ipad_y>0</child_ipad_y>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- <pack>GTK_PACK_END</pack>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>button3</name>
- <can_default>True</can_default>
- <can_focus>True</can_focus>
- <stock_button>GNOME_STOCK_BUTTON_CLOSE</stock_button>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox-top</name>
- <homogeneous>False</homogeneous>
- <spacing>4</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label1</name>
- <label>To add a column to your table, drag it into
-the location in which you want it to appear.</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow1</name>
- <width>200</width>
- <height>200</height>
- <hscrollbar_policy>GTK_POLICY_AUTOMATIC</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>Custom</class>
- <name>canvas-buttons</name>
- <creation_function>e_canvas_new</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Thu, 08 Jun 2000 07:27:33 GMT</last_modification_time>
- </widget>
- </widget>
- </widget>
- </widget>
-</widget>
-
-</GTK-Interface>
diff --git a/widgets/table/e-table-field-chooser.h b/widgets/table/e-table-field-chooser.h
deleted file mode 100644
index ff24ebbab4..0000000000
--- a/widgets/table/e-table-field-chooser.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* e-contact-editor-fullname.h
- * Copyright (C) 2000 Ximian, Inc.
- * Author: Chris Lahey <clahey@ximian.com>
- *
- * This library 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-#ifndef __E_TABLE_FIELD_CHOOSER_H__
-#define __E_TABLE_FIELD_CHOOSER_H__
-
-#include <glade/glade.h>
-#include <gal/e-table/e-table-header.h>
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-/* ETableFieldChooser - A dialog displaying information about a contact.
- *
- * The following arguments are available:
- *
- * name type read/write description
- * --------------------------------------------------------------------------------
- */
-
-#define E_TABLE_FIELD_CHOOSER_TYPE (e_table_field_chooser_get_type ())
-#define E_TABLE_FIELD_CHOOSER(obj) (GTK_CHECK_CAST ((obj), E_TABLE_FIELD_CHOOSER_TYPE, ETableFieldChooser))
-#define E_TABLE_FIELD_CHOOSER_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_TABLE_FIELD_CHOOSER_TYPE, ETableFieldChooserClass))
-#define E_IS_TABLE_FIELD_CHOOSER(obj) (GTK_CHECK_TYPE ((obj), E_TABLE_FIELD_CHOOSER_TYPE))
-#define E_IS_TABLE_FIELD_CHOOSER_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), E_TABLE_FIELD_CHOOSER_TYPE))
-
-
-typedef struct _ETableFieldChooser ETableFieldChooser;
-typedef struct _ETableFieldChooserClass ETableFieldChooserClass;
-
-struct _ETableFieldChooser
-{
- GtkVBox parent;
-
- /* item specific fields */
- GladeXML *gui;
- GnomeCanvas *canvas;
- GnomeCanvasItem *item;
-
- GnomeCanvasItem *rect;
- GtkAllocation last_alloc;
-
- gchar *dnd_code;
- ETableHeader *full_header;
-};
-
-struct _ETableFieldChooserClass
-{
- GtkVBoxClass parent_class;
-};
-
-
-GtkWidget *e_table_field_chooser_new(void);
-GtkType e_table_field_chooser_get_type (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* __E_TABLE_FIELD_CHOOSER_H__ */
diff --git a/widgets/table/e-table-group-container.c b/widgets/table/e-table-group-container.c
deleted file mode 100644
index 5d55d17415..0000000000
--- a/widgets/table/e-table-group-container.c
+++ /dev/null
@@ -1,1408 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * E-Table-Group.c: Implements the grouping objects for elements on a table
- *
- * Author:
- * Chris Lahey <clahey@ximian.com>
- * Miguel de Icaza (miguel@gnu.org)
- *
- * Copyright 1999, 2000 Ximian, Inc.
- */
-
-#include <config.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtksignal.h>
-#include <libgnomeui/gnome-canvas-rect-ellipse.h>
-#include "e-table-group-container.h"
-#include "e-table-group-leaf.h"
-#include "e-table-item.h"
-#include "gal/util/e-util.h"
-#include "gal/widgets/e-canvas.h"
-#include "gal/widgets/e-canvas-utils.h"
-#include "gal/e-text/e-text.h"
-#include "e-table-defines.h"
-
-#define TITLE_HEIGHT 16
-
-#define PARENT_TYPE e_table_group_get_type ()
-
-static GnomeCanvasGroupClass *etgc_parent_class;
-
-/* The arguments we take */
-enum {
- ARG_0,
- ARG_HEIGHT,
- ARG_WIDTH,
- ARG_MINIMUM_WIDTH,
- ARG_FROZEN,
- ARG_TABLE_ALTERNATING_ROW_COLORS,
- ARG_TABLE_HORIZONTAL_DRAW_GRID,
- ARG_TABLE_VERTICAL_DRAW_GRID,
- ARG_TABLE_DRAW_FOCUS,
- ARG_CURSOR_MODE,
- ARG_SELECTION_MODEL,
- ARG_LENGTH_THRESHOLD,
-};
-
-typedef struct {
- ETableGroup *child;
- void *key;
- char *string;
- GnomeCanvasItem *text;
- GnomeCanvasItem *rect;
- gint count;
-} ETableGroupContainerChildNode;
-
-static EPrintable *
-etgc_get_printable (ETableGroup *etg);
-
-
-static void
-e_table_group_container_child_node_free (ETableGroupContainer *etgc,
- ETableGroupContainerChildNode *child_node)
-{
- ETableGroup *etg = E_TABLE_GROUP (etgc);
- ETableGroup *child = child_node->child;
-
- gtk_object_destroy (GTK_OBJECT (child));
- e_table_model_free_value (etg->model, etgc->ecol->col_idx,
- child_node->key);
- g_free(child_node->string);
- gtk_object_destroy (GTK_OBJECT (child_node->text));
- gtk_object_destroy (GTK_OBJECT (child_node->rect));
-}
-
-static void
-e_table_group_container_list_free (ETableGroupContainer *etgc)
-{
- ETableGroupContainerChildNode *child_node;
- GList *list;
-
- for (list = etgc->children; list; list = g_list_next (list)) {
- child_node = (ETableGroupContainerChildNode *) list->data;
- e_table_group_container_child_node_free (etgc, child_node);
- }
-
- g_list_free (etgc->children);
-}
-
-static void
-etgc_destroy (GtkObject *object)
-{
- ETableGroupContainer *etgc = E_TABLE_GROUP_CONTAINER (object);
-
- if (etgc->font)
- gdk_font_unref (etgc->font);
- etgc->font = NULL;
-
- if (etgc->ecol)
- gtk_object_unref (GTK_OBJECT(etgc->ecol));
-
- if (etgc->sort_info)
- gtk_object_unref (GTK_OBJECT(etgc->sort_info));
-
- if (etgc->selection_model)
- gtk_object_unref (GTK_OBJECT(etgc->selection_model));
-
- if (etgc->rect)
- gtk_object_destroy (GTK_OBJECT(etgc->rect));
-
- e_table_group_container_list_free (etgc);
-
- GTK_OBJECT_CLASS (etgc_parent_class)->destroy (object);
-}
-
-/**
- * e_table_group_container_construct
- * @parent: The %GnomeCanvasGroup to create a child of.
- * @etgc: The %ETableGroupContainer.
- * @full_header: The full header of the %ETable.
- * @header: The current header of the %ETable.
- * @model: The %ETableModel of the %ETable.
- * @sort_info: The %ETableSortInfo of the %ETable.
- * @n: Which grouping level this is (Starts at 0 and sends n + 1 to any child %ETableGroups.
- *
- * This routine constructs the new %ETableGroupContainer.
- */
-void
-e_table_group_container_construct (GnomeCanvasGroup *parent, ETableGroupContainer *etgc,
- ETableHeader *full_header,
- ETableHeader *header,
- ETableModel *model, ETableSortInfo *sort_info, int n)
-{
- ETableCol *col;
- ETableSortColumn column = e_table_sort_info_grouping_get_nth(sort_info, n);
-
- col = e_table_header_get_column_by_col_idx(full_header, column.column);
- if (col == NULL)
- col = e_table_header_get_column (full_header, e_table_header_count (full_header) - 1);
-
- e_table_group_construct (parent, E_TABLE_GROUP (etgc), full_header, header, model);
- etgc->ecol = col;
- gtk_object_ref (GTK_OBJECT(etgc->ecol));
- etgc->sort_info = sort_info;
- gtk_object_ref (GTK_OBJECT(etgc->sort_info));
- etgc->n = n;
- etgc->ascending = column.ascending;
-
-
- etgc->font = gdk_font_load ("lucidasans-10");
- if (!etgc->font){
- etgc->font = GTK_WIDGET (GNOME_CANVAS_ITEM (etgc)->canvas)->style->font;
-
- gdk_font_ref (etgc->font);
- }
- etgc->open = TRUE;
-}
-
-/**
- * e_table_group_container_new
- * @parent: The %GnomeCanvasGroup to create a child of.
- * @full_header: The full header of the %ETable.
- * @header: The current header of the %ETable.
- * @model: The %ETableModel of the %ETable.
- * @sort_info: The %ETableSortInfo of the %ETable.
- * @n: Which grouping level this is (Starts at 0 and sends n + 1 to any child %ETableGroups.
- *
- * %ETableGroupContainer is an %ETableGroup which groups by the nth
- * grouping of the %ETableSortInfo. It creates %ETableGroups as
- * children.
- *
- * Returns: The new %ETableGroupContainer.
- */
-ETableGroup *
-e_table_group_container_new (GnomeCanvasGroup *parent, ETableHeader *full_header,
- ETableHeader *header,
- ETableModel *model, ETableSortInfo *sort_info, int n)
-{
- ETableGroupContainer *etgc;
-
- g_return_val_if_fail (parent != NULL, NULL);
-
- etgc = gtk_type_new (e_table_group_container_get_type ());
-
- e_table_group_container_construct (parent, etgc, full_header, header,
- model, sort_info, n);
- return E_TABLE_GROUP (etgc);
-}
-
-
-static int
-etgc_event (GnomeCanvasItem *item, GdkEvent *event)
-{
- ETableGroupContainer *etgc = E_TABLE_GROUP_CONTAINER(item);
- gboolean return_val = TRUE;
- gboolean change_focus = FALSE;
- gboolean use_col = FALSE;
- gint start_col = 0;
- gint old_col;
- EFocus direction = E_FOCUS_START;
-
- switch (event->type) {
- case GDK_KEY_PRESS:
- if (event->key.keyval == GDK_Tab ||
- event->key.keyval == GDK_KP_Tab ||
- event->key.keyval == GDK_ISO_Left_Tab) {
- change_focus = TRUE;
- use_col = TRUE;
- start_col = (event->key.state & GDK_SHIFT_MASK) ? -1 : 0;
- direction = (event->key.state & GDK_SHIFT_MASK) ? E_FOCUS_END : E_FOCUS_START;
- } else if (event->key.keyval == GDK_Left ||
- event->key.keyval == GDK_KP_Left) {
- change_focus = TRUE;
- use_col = TRUE;
- start_col = -1;
- direction = E_FOCUS_END;
- } else if (event->key.keyval == GDK_Right ||
- event->key.keyval == GDK_KP_Right) {
- change_focus = TRUE;
- use_col = TRUE;
- start_col = 0;
- direction = E_FOCUS_START;
- } else if (event->key.keyval == GDK_Down ||
- event->key.keyval == GDK_KP_Down) {
- change_focus = TRUE;
- use_col = FALSE;
- direction = E_FOCUS_START;
- } else if (event->key.keyval == GDK_Up ||
- event->key.keyval == GDK_KP_Up) {
- change_focus = TRUE;
- use_col = FALSE;
- direction = E_FOCUS_END;
- } else if (event->key.keyval == GDK_Return ||
- event->key.keyval == GDK_KP_Enter) {
- change_focus = TRUE;
- use_col = FALSE;
- direction = E_FOCUS_START;
- }
- if (change_focus){
- GList *list;
- for (list = etgc->children; list; list = list->next) {
- ETableGroupContainerChildNode *child_node;
- ETableGroup *child;
-
- child_node = (ETableGroupContainerChildNode *)list->data;
- child = child_node->child;
-
- if (e_table_group_get_focus (child)) {
- old_col = e_table_group_get_focus_column (child);
- if (old_col == -1)
- old_col = 0;
- if (start_col == -1)
- start_col = e_table_header_count (e_table_group_get_header (child)) - 1;
-
- if (direction == E_FOCUS_END)
- list = list->prev;
- else
- list = list->next;
-
- if (list) {
- child_node = (ETableGroupContainerChildNode *)list->data;
- child = child_node->child;
- if (use_col)
- e_table_group_set_focus (child, direction, start_col);
- else
- e_table_group_set_focus (child, direction, old_col);
- return 1;
- } else {
- return 0;
- }
- }
- }
- if (direction == E_FOCUS_END)
- list = g_list_last(etgc->children);
- else
- list = etgc->children;
- if (list) {
- ETableGroupContainerChildNode *child_node;
- ETableGroup *child;
-
- child_node = (ETableGroupContainerChildNode *)list->data;
- child = child_node->child;
-
- if (start_col == -1)
- start_col = e_table_header_count (e_table_group_get_header (child)) - 1;
-
- e_table_group_set_focus (child, direction, start_col);
- return 1;
- }
- }
- return_val = FALSE;
- break;
- default:
- return_val = FALSE;
- break;
- }
- if (return_val == FALSE) {
- if (GNOME_CANVAS_ITEM_CLASS(etgc_parent_class)->event)
- return GNOME_CANVAS_ITEM_CLASS (etgc_parent_class)->event (item, event);
- }
- return return_val;
-
-}
-
-/* Realize handler for the text item */
-static void
-etgc_realize (GnomeCanvasItem *item)
-{
- ETableGroupContainer *etgc;
-
- if (GNOME_CANVAS_ITEM_CLASS (etgc_parent_class)->realize)
- (* GNOME_CANVAS_ITEM_CLASS (etgc_parent_class)->realize) (item);
-
- etgc = E_TABLE_GROUP_CONTAINER (item);
-
- e_canvas_item_request_reflow (GNOME_CANVAS_ITEM (etgc));
-}
-
-/* Unrealize handler for the etgc item */
-static void
-etgc_unrealize (GnomeCanvasItem *item)
-{
- ETableGroupContainer *etgc;
-
- etgc = E_TABLE_GROUP_CONTAINER (item);
-
- if (GNOME_CANVAS_ITEM_CLASS (etgc_parent_class)->unrealize)
- (* GNOME_CANVAS_ITEM_CLASS (etgc_parent_class)->unrealize) (item);
-}
-
-static void
-compute_text (ETableGroupContainer *etgc, ETableGroupContainerChildNode *child_node)
-{
- gchar *text;
- if (etgc->ecol->text)
- text = g_strdup_printf ("%s : %s (%d item%s)",
- etgc->ecol->text,
- child_node->string,
- (gint) child_node->count,
- child_node->count == 1 ? "" : "s");
- else
- text = g_strdup_printf ("%s (%d item%s)",
- child_node->string,
- (gint) child_node->count,
- child_node->count == 1 ? "" : "s");
- gnome_canvas_item_set (child_node->text,
- "text", text,
- NULL);
- g_free (text);
-}
-
-static void
-child_cursor_change (ETableGroup *etg, int row,
- ETableGroupContainer *etgc)
-{
- e_table_group_cursor_change (E_TABLE_GROUP (etgc), row);
-}
-
-static void
-child_cursor_activated (ETableGroup *etg, int row,
- ETableGroupContainer *etgc)
-{
- e_table_group_cursor_activated (E_TABLE_GROUP (etgc), row);
-}
-
-static void
-child_double_click (ETableGroup *etg, int row, int col, GdkEvent *event,
- ETableGroupContainer *etgc)
-{
- e_table_group_double_click (E_TABLE_GROUP (etgc), row, col, event);
-}
-
-static gint
-child_right_click (ETableGroup *etg, int row, int col, GdkEvent *event,
- ETableGroupContainer *etgc)
-{
- return e_table_group_right_click (E_TABLE_GROUP (etgc), row, col, event);
-}
-
-static gint
-child_click (ETableGroup *etg, int row, int col, GdkEvent *event,
- ETableGroupContainer *etgc)
-{
- return e_table_group_click (E_TABLE_GROUP (etgc), row, col, event);
-}
-
-static gint
-child_key_press (ETableGroup *etg, int row, int col, GdkEvent *event,
- ETableGroupContainer *etgc)
-{
- return e_table_group_key_press (E_TABLE_GROUP (etgc), row, col, event);
-}
-
-static ETableGroupContainerChildNode *
-create_child_node (ETableGroupContainer *etgc, void *val)
-{
- ETableGroup *child;
- ETableGroupContainerChildNode *child_node;
- ETableGroup *etg = E_TABLE_GROUP(etgc);
-
- child_node = g_new (ETableGroupContainerChildNode, 1);
- child_node->rect = gnome_canvas_item_new (GNOME_CANVAS_GROUP (etgc),
- gnome_canvas_rect_get_type (),
- "fill_color", "grey70",
- "outline_color", "grey50",
- NULL);
- child_node->text = gnome_canvas_item_new (GNOME_CANVAS_GROUP (etgc),
- e_text_get_type (),
- "font_gdk", etgc->font,
- "anchor", GTK_ANCHOR_SW,
- "fill_color", "black",
- "draw_background", FALSE,
- NULL);
- child = e_table_group_new (GNOME_CANVAS_GROUP (etgc), etg->full_header,
- etg->header, etg->model, etgc->sort_info, etgc->n + 1);
- gnome_canvas_item_set(GNOME_CANVAS_ITEM(child),
- "alternating_row_colors", etgc->alternating_row_colors,
- "horizontal_draw_grid", etgc->horizontal_draw_grid,
- "vertical_draw_grid", etgc->vertical_draw_grid,
- "drawfocus", etgc->draw_focus,
- "cursor_mode", etgc->cursor_mode,
- "selection_model", etgc->selection_model,
- "length_threshold", etgc->length_threshold,
- "minimum_width", etgc->minimum_width - GROUP_INDENT,
- NULL);
-
- gtk_signal_connect (GTK_OBJECT (child), "cursor_change",
- GTK_SIGNAL_FUNC (child_cursor_change), etgc);
- gtk_signal_connect (GTK_OBJECT (child), "cursor_activated",
- GTK_SIGNAL_FUNC (child_cursor_activated), etgc);
- gtk_signal_connect (GTK_OBJECT (child), "double_click",
- GTK_SIGNAL_FUNC (child_double_click), etgc);
- gtk_signal_connect (GTK_OBJECT (child), "right_click",
- GTK_SIGNAL_FUNC (child_right_click), etgc);
- gtk_signal_connect (GTK_OBJECT (child), "click",
- GTK_SIGNAL_FUNC (child_click), etgc);
- gtk_signal_connect (GTK_OBJECT (child), "key_press",
- GTK_SIGNAL_FUNC (child_key_press), etgc);
- child_node->child = child;
- child_node->key = e_table_model_duplicate_value (etg->model, etgc->ecol->col_idx, val);
- child_node->string = e_table_model_value_to_string (etg->model, etgc->ecol->col_idx, val);
- child_node->count = 0;
-
- return child_node;
-}
-
-static void
-etgc_add (ETableGroup *etg, gint row)
-{
- ETableGroupContainer *etgc = E_TABLE_GROUP_CONTAINER (etg);
- void *val = e_table_model_value_at (etg->model, etgc->ecol->col_idx, row);
- GCompareFunc comp = etgc->ecol->compare;
- GList *list = etgc->children;
- ETableGroup *child;
- ETableGroupContainerChildNode *child_node;
- int i = 0;
-
- for (; list; list = g_list_next (list), i++){
- int comp_val;
-
- child_node = list->data;
- comp_val = (*comp)(child_node->key, val);
- if (comp_val == 0) {
- child = child_node->child;
- child_node->count ++;
- e_table_group_add (child, row);
- compute_text (etgc, child_node);
- return;
- }
- if ((comp_val > 0 && etgc->ascending) ||
- (comp_val < 0 && (!etgc->ascending)))
- break;
- }
- child_node = create_child_node (etgc, val);
- child = child_node->child;
- child_node->count = 1;
- e_table_group_add (child, row);
-
- if (list)
- etgc->children = g_list_insert (etgc->children, child_node, i);
- else
- etgc->children = g_list_append (etgc->children, child_node);
-
- compute_text (etgc, child_node);
- e_canvas_item_request_reflow (GNOME_CANVAS_ITEM (etgc));
-}
-
-static void
-etgc_add_array (ETableGroup *etg, const int *array, int count)
-{
- int i;
- ETableGroupContainer *etgc = E_TABLE_GROUP_CONTAINER (etg);
- void *lastval = 0;
- int laststart = 0;
- GCompareFunc comp = etgc->ecol->compare;
- ETableGroupContainerChildNode *child_node;
- ETableGroup *child;
-
- if (count <= 0)
- return;
-
- e_table_group_container_list_free (etgc);
- etgc->children = NULL;
-
- lastval = e_table_model_value_at (etg->model, etgc->ecol->col_idx, array[0]);
-
- for (i = 1; i < count; i++) {
- void *val = e_table_model_value_at (etg->model, etgc->ecol->col_idx, array[i]);
- int comp_val;
-
- comp_val = (*comp)(lastval, val);
- if (comp_val != 0) {
- child_node = create_child_node(etgc, lastval);
- child = child_node->child;
-
- e_table_group_add_array(child, array + laststart, i - laststart);
- child_node->count = i - laststart;
-
- etgc->children = g_list_append (etgc->children, child_node);
- compute_text (etgc, child_node);
- laststart = i;
- lastval = val;
- }
- }
-
- child_node = create_child_node(etgc, lastval);
- child = child_node->child;
-
- e_table_group_add_array(child, array + laststart, i - laststart);
- child_node->count = i - laststart;
-
- etgc->children = g_list_append (etgc->children, child_node);
- compute_text (etgc, child_node);
-
- e_canvas_item_request_reflow (GNOME_CANVAS_ITEM (etgc));
-}
-
-static void
-etgc_add_all (ETableGroup *etg)
-{
- ETableGroupContainer *etgc = E_TABLE_GROUP_CONTAINER (etg);
- ESorter *sorter = etgc->selection_model->sorter;
- int *array;
- int count;
-
- e_sorter_get_sorted_to_model_array(sorter, &array, &count);
-
- etgc_add_array(etg, array, count);
-}
-
-static gboolean
-etgc_remove (ETableGroup *etg, gint row)
-{
- ETableGroupContainer *etgc = E_TABLE_GROUP_CONTAINER(etg);
- GList *list;
-
- for (list = etgc->children ; list; list = g_list_next (list)) {
- ETableGroupContainerChildNode *child_node = list->data;
- ETableGroup *child = child_node->child;
-
- if (e_table_group_remove (child, row)) {
- child_node->count --;
- if (child_node->count == 0) {
- e_table_group_container_child_node_free (etgc, child_node);
- etgc->children = g_list_remove (etgc->children, child_node);
- g_free (child_node);
- } else
- compute_text (etgc, child_node);
-
- e_canvas_item_request_reflow (GNOME_CANVAS_ITEM (etgc));
-
- return TRUE;
- }
- }
- return FALSE;
-}
-
-static int
-etgc_row_count (ETableGroup *etg)
-{
- ETableGroupContainer *etgc = E_TABLE_GROUP_CONTAINER(etg);
- GList *list;
- gint count = 0;
- for (list = etgc->children; list; list = g_list_next(list)) {
- ETableGroup *group = ((ETableGroupContainerChildNode *)list->data)->child;
- gint this_count = e_table_group_row_count(group);
- count += this_count;
- }
- return count;
-}
-
-static void
-etgc_increment (ETableGroup *etg, gint position, gint amount)
-{
- ETableGroupContainer *etgc = E_TABLE_GROUP_CONTAINER(etg);
- GList *list = etgc->children;
-
- for (list = etgc->children ; list; list = g_list_next (list))
- e_table_group_increment (((ETableGroupContainerChildNode *)list->data)->child,
- position, amount);
-}
-
-static void
-etgc_decrement (ETableGroup *etg, gint position, gint amount)
-{
- ETableGroupContainer *etgc = E_TABLE_GROUP_CONTAINER(etg);
- GList *list = etgc->children;
-
- for (list = etgc->children ; list; list = g_list_next (list))
- e_table_group_decrement (((ETableGroupContainerChildNode *)list->data)->child,
- position, amount);
-}
-
-static void
-etgc_set_focus (ETableGroup *etg, EFocus direction, gint view_col)
-{
- ETableGroupContainer *etgc = E_TABLE_GROUP_CONTAINER(etg);
- if (etgc->children) {
- if (direction == E_FOCUS_END)
- e_table_group_set_focus (((ETableGroupContainerChildNode *)g_list_last (etgc->children)->data)->child,
- direction, view_col);
- else
- e_table_group_set_focus (((ETableGroupContainerChildNode *)etgc->children->data)->child,
- direction, view_col);
- }
-}
-
-static gint
-etgc_get_focus_column (ETableGroup *etg)
-{
- ETableGroupContainer *etgc = E_TABLE_GROUP_CONTAINER(etg);
- if (etgc->children) {
- GList *list;
- for (list = etgc->children; list; list = list->next) {
- ETableGroupContainerChildNode *child_node = (ETableGroupContainerChildNode *)list->data;
- ETableGroup *child = child_node->child;
- if (e_table_group_get_focus (child)) {
- return e_table_group_get_focus_column (child);
- }
- }
- }
- return 0;
-}
-
-static void
-etgc_compute_location (ETableGroup *etg, int *x, int *y, int *row, int *col)
-{
- ETableGroupContainer *etgc = E_TABLE_GROUP_CONTAINER(etg);
-
- if (row)
- *row = -1;
- if (col)
- *col = -1;
-
- *x -= GROUP_INDENT;
- *y -= TITLE_HEIGHT;
-
- if (*x >= 0 && *y >= 0 && etgc->children) {
- GList *list;
- for (list = etgc->children; list; list = list->next) {
- ETableGroupContainerChildNode *child_node = (ETableGroupContainerChildNode *)list->data;
- ETableGroup *child = child_node->child;
-
- e_table_group_compute_location (child, x, y, row, col);
- if ((*row != -1) && (*col != -1))
- return;
- }
- }
-}
-
-static void
-etgc_get_cell_geometry (ETableGroup *etg, int *row, int *col, int *x, int *y, int *width, int *height)
-{
- ETableGroupContainer *etgc = E_TABLE_GROUP_CONTAINER(etg);
-
- int ypos;
-
- ypos = 0;
-
- if (etgc->children) {
- GList *list;
- for (list = etgc->children; list; list = list->next) {
- ETableGroupContainerChildNode *child_node = (ETableGroupContainerChildNode *)list->data;
- ETableGroup *child = child_node->child;
- int thisy;
-
- e_table_group_get_cell_geometry (child, row, col, x, &thisy, width, height);
- ypos += thisy;
- if ((*row == -1) || (*col == -1)) {
- ypos += TITLE_HEIGHT;
- *x += GROUP_INDENT;
- *y = ypos;
- return;
- }
- }
- }
-}
-
-static void etgc_thaw (ETableGroup *etg)
-{
- e_canvas_item_request_reflow (GNOME_CANVAS_ITEM(etg));
-}
-
-static void
-etgc_set_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- ETableGroup *etg = E_TABLE_GROUP (object);
- ETableGroupContainer *etgc = E_TABLE_GROUP_CONTAINER (object);
- GList *list;
-
- switch (arg_id) {
- case ARG_FROZEN:
- if (GTK_VALUE_BOOL (*arg))
- etg->frozen = TRUE;
- else {
- etg->frozen = FALSE;
- etgc_thaw (etg);
- }
- break;
- case ARG_MINIMUM_WIDTH:
- case ARG_WIDTH:
- etgc->minimum_width = GTK_VALUE_DOUBLE(*arg);
-
- for (list = etgc->children; list; list = g_list_next (list)) {
- ETableGroupContainerChildNode *child_node = (ETableGroupContainerChildNode *)list->data;
- gtk_object_set (GTK_OBJECT(child_node->child),
- "minimum_width", etgc->minimum_width - GROUP_INDENT,
- NULL);
- }
- break;
- case ARG_LENGTH_THRESHOLD:
- etgc->length_threshold = GTK_VALUE_INT (*arg);
- for (list = etgc->children; list; list = g_list_next (list)) {
- ETableGroupContainerChildNode *child_node = (ETableGroupContainerChildNode *)list->data;
- gtk_object_set (GTK_OBJECT(child_node->child),
- "length_threshold", GTK_VALUE_INT (*arg),
- NULL);
- }
- break;
-
- case ARG_SELECTION_MODEL:
- if (etgc->selection_model)
- gtk_object_unref(GTK_OBJECT(etgc->selection_model));
- etgc->selection_model = E_SELECTION_MODEL(GTK_VALUE_OBJECT (*arg));
- if (etgc->selection_model)
- gtk_object_ref(GTK_OBJECT(etgc->selection_model));
- for (list = etgc->children; list; list = g_list_next (list)) {
- ETableGroupContainerChildNode *child_node = (ETableGroupContainerChildNode *)list->data;
- gtk_object_set (GTK_OBJECT(child_node->child),
- "selection_model", etgc->selection_model,
- NULL);
- }
- break;
-
- case ARG_TABLE_ALTERNATING_ROW_COLORS:
- etgc->alternating_row_colors = GTK_VALUE_BOOL (*arg);
- for (list = etgc->children; list; list = g_list_next (list)) {
- ETableGroupContainerChildNode *child_node = (ETableGroupContainerChildNode *)list->data;
- gtk_object_set (GTK_OBJECT(child_node->child),
- "alternating_row_colors", GTK_VALUE_BOOL (*arg),
- NULL);
- }
- break;
-
- case ARG_TABLE_HORIZONTAL_DRAW_GRID:
- etgc->horizontal_draw_grid = GTK_VALUE_BOOL (*arg);
- for (list = etgc->children; list; list = g_list_next (list)) {
- ETableGroupContainerChildNode *child_node = (ETableGroupContainerChildNode *)list->data;
- gtk_object_set (GTK_OBJECT(child_node->child),
- "horizontal_draw_grid", GTK_VALUE_BOOL (*arg),
- NULL);
- }
- break;
-
- case ARG_TABLE_VERTICAL_DRAW_GRID:
- etgc->vertical_draw_grid = GTK_VALUE_BOOL (*arg);
- for (list = etgc->children; list; list = g_list_next (list)) {
- ETableGroupContainerChildNode *child_node = (ETableGroupContainerChildNode *)list->data;
- gtk_object_set (GTK_OBJECT(child_node->child),
- "vertical_draw_grid", GTK_VALUE_BOOL (*arg),
- NULL);
- }
- break;
-
- case ARG_TABLE_DRAW_FOCUS:
- etgc->draw_focus = GTK_VALUE_BOOL (*arg);
- for (list = etgc->children; list; list = g_list_next (list)) {
- ETableGroupContainerChildNode *child_node = (ETableGroupContainerChildNode *)list->data;
- gtk_object_set (GTK_OBJECT(child_node->child),
- "drawfocus", GTK_VALUE_BOOL (*arg),
- NULL);
- }
- break;
-
- case ARG_CURSOR_MODE:
- etgc->cursor_mode = GTK_VALUE_INT (*arg);
- for (list = etgc->children; list; list = g_list_next (list)) {
- ETableGroupContainerChildNode *child_node = (ETableGroupContainerChildNode *)list->data;
- gtk_object_set (GTK_OBJECT(child_node->child),
- "cursor_mode", GTK_VALUE_INT (*arg),
- NULL);
- }
- break;
- default:
- break;
- }
-}
-
-static void
-etgc_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- ETableGroup *etg = E_TABLE_GROUP (object);
- ETableGroupContainer *etgc = E_TABLE_GROUP_CONTAINER (object);
-
- switch (arg_id) {
- case ARG_FROZEN:
- GTK_VALUE_BOOL (*arg) = etg->frozen;
- break;
- case ARG_HEIGHT:
- GTK_VALUE_DOUBLE (*arg) = etgc->height;
- break;
- case ARG_WIDTH:
- GTK_VALUE_DOUBLE (*arg) = etgc->width;
- break;
- case ARG_MINIMUM_WIDTH:
- etgc->minimum_width = GTK_VALUE_DOUBLE(*arg);
- break;
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
-
-static void
-etgc_class_init (GtkObjectClass *object_class)
-{
- GnomeCanvasItemClass *item_class = (GnomeCanvasItemClass *) object_class;
- ETableGroupClass *e_group_class = E_TABLE_GROUP_CLASS(object_class);
-
- object_class->destroy = etgc_destroy;
- object_class->set_arg = etgc_set_arg;
- object_class->get_arg = etgc_get_arg;
-
- item_class->event = etgc_event;
- item_class->realize = etgc_realize;
- item_class->unrealize = etgc_unrealize;
-
- etgc_parent_class = gtk_type_class (PARENT_TYPE);
-
- e_group_class->add = etgc_add;
- e_group_class->add_array = etgc_add_array;
- e_group_class->add_all = etgc_add_all;
- e_group_class->remove = etgc_remove;
- e_group_class->increment = etgc_increment;
- e_group_class->decrement = etgc_decrement;
- e_group_class->row_count = etgc_row_count;
- e_group_class->set_focus = etgc_set_focus;
- e_group_class->get_focus_column = etgc_get_focus_column;
- e_group_class->get_printable = etgc_get_printable;
- e_group_class->compute_location = etgc_compute_location;
- e_group_class->get_cell_geometry = etgc_get_cell_geometry;
-
- gtk_object_add_arg_type ("ETableGroupContainer::alternating_row_colors", GTK_TYPE_BOOL,
- GTK_ARG_WRITABLE, ARG_TABLE_ALTERNATING_ROW_COLORS);
- gtk_object_add_arg_type ("ETableGroupContainer::horizontal_draw_grid", GTK_TYPE_BOOL,
- GTK_ARG_WRITABLE, ARG_TABLE_HORIZONTAL_DRAW_GRID);
- gtk_object_add_arg_type ("ETableGroupContainer::vertical_draw_grid", GTK_TYPE_BOOL,
- GTK_ARG_WRITABLE, ARG_TABLE_VERTICAL_DRAW_GRID);
- gtk_object_add_arg_type ("ETableGroupContainer::drawfocus", GTK_TYPE_BOOL,
- GTK_ARG_WRITABLE, ARG_TABLE_DRAW_FOCUS);
- gtk_object_add_arg_type ("ETableGroupContainer::cursor_mode", GTK_TYPE_INT,
- GTK_ARG_WRITABLE, ARG_CURSOR_MODE);
- gtk_object_add_arg_type ("ETableGroupContainer::selection_model", E_SELECTION_MODEL_TYPE,
- GTK_ARG_WRITABLE, ARG_SELECTION_MODEL);
- gtk_object_add_arg_type ("ETableGroupContainer::length_threshold", GTK_TYPE_INT,
- GTK_ARG_WRITABLE, ARG_LENGTH_THRESHOLD);
-
- gtk_object_add_arg_type ("ETableGroupContainer::frozen", GTK_TYPE_BOOL,
- GTK_ARG_READWRITE, ARG_FROZEN);
- gtk_object_add_arg_type ("ETableGroupContainer::height", GTK_TYPE_DOUBLE,
- GTK_ARG_READABLE, ARG_HEIGHT);
- gtk_object_add_arg_type ("ETableGroupContainer::width", GTK_TYPE_DOUBLE,
- GTK_ARG_READWRITE, ARG_WIDTH);
- gtk_object_add_arg_type ("ETableGroupContainer::minimum_width", GTK_TYPE_DOUBLE,
- GTK_ARG_READWRITE, ARG_MINIMUM_WIDTH);
-}
-
-static void
-etgc_reflow (GnomeCanvasItem *item, gint flags)
-{
- ETableGroupContainer *etgc = E_TABLE_GROUP_CONTAINER(item);
- gboolean frozen;
-
- gtk_object_get (GTK_OBJECT(etgc),
- "frozen", &frozen,
- NULL);
-
- if (frozen)
- return;
-
-
- if (GTK_OBJECT_FLAGS(etgc)& GNOME_CANVAS_ITEM_REALIZED){
- gdouble running_height = 0;
- gdouble running_width = 0;
- gdouble old_height;
- gdouble old_width;
-
- old_height = etgc->height;
- old_width = etgc->width;
- if (etgc->children == NULL){
- } else {
- GList *list;
- gdouble extra_height = 0;
- gdouble item_height = 0;
- gdouble item_width = 0;
-
- if (etgc->font)
- extra_height += etgc->font->ascent + etgc->font->descent + BUTTON_PADDING * 2;
-
- extra_height = MAX(extra_height, BUTTON_HEIGHT + BUTTON_PADDING * 2);
-
- running_height = extra_height;
-
- for ( list = etgc->children; list; list = g_list_next (list)){
- ETableGroupContainerChildNode *child_node = (ETableGroupContainerChildNode *) list->data;
- ETableGroup *child = child_node->child;
-
- gtk_object_get (GTK_OBJECT(child),
- "width", &item_width,
- NULL);
-
- if (item_width > running_width)
- running_width = item_width;
- }
- for ( list = etgc->children; list; list = g_list_next (list)){
- ETableGroupContainerChildNode *child_node = (ETableGroupContainerChildNode *) list->data;
- ETableGroup *child = child_node->child;
- gtk_object_get (GTK_OBJECT(child),
- "height", &item_height,
- NULL);
-
- e_canvas_item_move_absolute (GNOME_CANVAS_ITEM(child_node->text),
- GROUP_INDENT,
- running_height - BUTTON_PADDING);
-
- e_canvas_item_move_absolute (GNOME_CANVAS_ITEM(child),
- GROUP_INDENT,
- running_height);
-
- gnome_canvas_item_set (GNOME_CANVAS_ITEM(child_node->rect),
- "x1", (double) 0,
- "x2", (double) running_width + GROUP_INDENT,
- "y1", (double) running_height - extra_height,
- "y2", (double) running_height + item_height,
- NULL);
-
- running_height += item_height + extra_height;
- }
- running_height -= extra_height;
- }
- if (running_height != old_height || running_width != old_width) {
- etgc->height = running_height;
- etgc->width = running_width;
- e_canvas_item_request_parent_reflow (item);
- }
- }
-}
-
-static void
-etgc_init (GtkObject *object)
-{
- ETableGroupContainer *container = E_TABLE_GROUP_CONTAINER(object);
- container->children = FALSE;
-
- e_canvas_item_set_reflow_callback (GNOME_CANVAS_ITEM(object), etgc_reflow);
-
- container->alternating_row_colors = 1;
- container->horizontal_draw_grid = 1;
- container->vertical_draw_grid = 1;
- container->draw_focus = 1;
- container->cursor_mode = E_CURSOR_SIMPLE;
- container->length_threshold = -1;
- container->selection_model = NULL;
-}
-
-E_MAKE_TYPE (e_table_group_container, "ETableGroupContainer", ETableGroupContainer, etgc_class_init, etgc_init, PARENT_TYPE);
-
-void
-e_table_group_apply_to_leafs (ETableGroup *etg, ETableGroupLeafFn fn, void *closure)
-{
- if (E_IS_TABLE_GROUP_CONTAINER (etg)){
- ETableGroupContainer *etgc = E_TABLE_GROUP_CONTAINER (etg);
- GList *list = etgc->children;
-
- /* Protect from unrefs in the callback functions */
- gtk_object_ref (GTK_OBJECT (etg));
-
- for (list = etgc->children; list; list = list->next){
- ETableGroupContainerChildNode *child_node = list->data;
-
- e_table_group_apply_to_leafs (child_node->child, fn, closure);
- }
-
- gtk_object_unref (GTK_OBJECT (etg));
- } else if (E_IS_TABLE_GROUP_LEAF (etg)){
- (*fn) (E_TABLE_GROUP_LEAF (etg)->item, closure);
- } else {
- g_error ("Unknown ETableGroup found: %s",
- gtk_type_name (GTK_OBJECT (etg)->klass->type));
- }
-}
-
-
-typedef struct {
- ETableGroupContainer *etgc;
- GList *child;
- EPrintable *child_printable;
-} ETGCPrintContext;
-
-#if 0
-#define CHECK(x) if((x) == -1) return -1;
-
-static gint
-gp_draw_rect (GnomePrintContext *context, gdouble x, gdouble y, gdouble width, gdouble height, gdouble r, gdouble g, gdouble b)
-{
- CHECK(gnome_print_moveto(context, x, y));
- CHECK(gnome_print_lineto(context, x + width, y));
- CHECK(gnome_print_lineto(context, x + width, y - height));
- CHECK(gnome_print_lineto(context, x, y - height));
- CHECK(gnome_print_lineto(context, x, y));
- return gnome_print_fill(context);
-}
-#endif
-
-#define CHECK(x) if((x) == -1) return -1;
-
-static gint
-gp_draw_rect (GnomePrintContext *context, gdouble x, gdouble y, gdouble width, gdouble height)
-{
- CHECK(gnome_print_moveto(context, x, y));
- CHECK(gnome_print_lineto(context, x + width, y));
- CHECK(gnome_print_lineto(context, x + width, y - height));
- CHECK(gnome_print_lineto(context, x, y - height));
- CHECK(gnome_print_lineto(context, x, y));
- return gnome_print_fill(context);
-}
-
-#define TEXT_HEIGHT (12)
-#define TEXT_AREA_HEIGHT (TEXT_HEIGHT + 4)
-
-static void
-e_table_group_container_print_page (EPrintable *ep,
- GnomePrintContext *context,
- gdouble width,
- gdouble height,
- gboolean quantize,
- ETGCPrintContext *groupcontext)
-{
- gdouble yd = height;
- gdouble child_height;
- ETableGroupContainerChildNode *child_node;
- GList *child;
- EPrintable *child_printable;
- gchar *string;
-
- GnomeFont *font = gnome_font_new ("Helvetica", TEXT_HEIGHT);
-
- child_printable = groupcontext->child_printable;
- child = groupcontext->child;
-
- if (child_printable) {
- if (child)
- child_node = child->data;
- else
- child_node = NULL;
- gtk_object_ref(GTK_OBJECT(child_printable));
- } else {
- if (!child) {
- return;
- } else {
- child_node = child->data;
- child_printable = e_table_group_get_printable(child_node->child);
- if (child_printable)
- gtk_object_ref(GTK_OBJECT(child_printable));
- e_printable_reset(child_printable);
- }
- }
-
- while (1) {
- child_height = e_printable_height(child_printable, context, width - 36, yd - TEXT_AREA_HEIGHT, quantize);
-
- if (gnome_print_gsave(context) == -1)
- /* FIXME */;
- if (gnome_print_moveto(context, 0, yd - child_height - TEXT_AREA_HEIGHT) == -1)
- /* FIXME */;
- if (gnome_print_lineto(context, 36, yd - child_height - TEXT_AREA_HEIGHT) == -1)
- /* FIXME */;
- if (gnome_print_lineto(context, 36, yd - TEXT_AREA_HEIGHT) == -1)
- /* FIXME */;
- if (gnome_print_lineto(context, width, yd - TEXT_AREA_HEIGHT) == -1)
- /* FIXME */;
- if (gnome_print_lineto(context, width, yd) == -1)
- /* FIXME */;
- if (gnome_print_lineto(context, 0, yd) == -1)
- /* FIXME */;
- if (gnome_print_lineto(context, 0, yd - child_height - TEXT_AREA_HEIGHT) == -1)
- /* FIXME */;
- if (gnome_print_setrgbcolor(context, .7, .7, .7) == -1)
- /* FIXME */;
- if (gnome_print_fill(context) == -1)
- /* FIXME */;
- if (gnome_print_grestore(context) == -1)
- /* FIXME */;
-
- if (gnome_print_gsave(context) == -1)
- /* FIXME */;
- if (gnome_print_moveto(context, 0, yd - TEXT_AREA_HEIGHT) == -1)
- /* FIXME */;
- if (gnome_print_lineto(context, width, yd - TEXT_AREA_HEIGHT) == -1)
- /* FIXME */;
- if (gnome_print_lineto(context, width, yd) == -1)
- /* FIXME */;
- if (gnome_print_lineto(context, 0, yd) == -1)
- /* FIXME */;
- if (gnome_print_lineto(context, 0, yd - TEXT_AREA_HEIGHT) == -1)
- /* FIXME */;
- if (gnome_print_clip(context) == -1)
- /* FIXME */;
-
- if (gnome_print_moveto(context, 2, yd - (TEXT_AREA_HEIGHT + gnome_font_get_ascender(font) - gnome_font_get_descender(font)) / 2) == -1)
- /* FIXME */;
- if (gnome_print_setfont(context, font))
- /* FIXME */;
- if (groupcontext->etgc->ecol->text)
- string = g_strdup_printf ("%s : %s (%d item%s)",
- groupcontext->etgc->ecol->text,
- child_node->string,
- (gint) child_node->count,
- child_node->count == 1 ? "" : "s");
- else
- string = g_strdup_printf ("%s (%d item%s)",
- child_node->string,
- (gint) child_node->count,
- child_node->count == 1 ? "" : "s");
- if (gnome_print_show(context, string))
- /* FIXME */;
- g_free(string);
- if (gnome_print_grestore(context) == -1)
- /* FIXME */;
-
- if (gnome_print_gsave(context) == -1)
- /* FIXME */;
- if (gnome_print_translate(context, 36, yd - TEXT_AREA_HEIGHT - child_height) == -1)
- /* FIXME */;
- if (gnome_print_moveto(context, 0, 0) == -1)
- /* FIXME */;
- if (gnome_print_lineto(context, width - 36, 0) == -1)
- /* FIXME */;
- if (gnome_print_lineto(context, width - 36, child_height) == -1)
- /* FIXME */;
- if (gnome_print_lineto(context, 0, child_height) == -1)
- /* FIXME */;
- if (gnome_print_lineto(context, 0, 0) == -1)
- /* FIXME */;
- if (gnome_print_clip(context) == -1)
- /* FIXME */;
- e_printable_print_page(child_printable, context, width - 36, child_height, quantize);
- if (gnome_print_grestore(context) == -1)
- /* FIXME */;
-
- gp_draw_rect(context, 0, yd - child_height - TEXT_AREA_HEIGHT + 1, width, 1);
- gp_draw_rect(context, width - 1, yd, 1, yd - child_height - TEXT_AREA_HEIGHT);
- gp_draw_rect(context, 0, yd, 1, yd - child_height - TEXT_AREA_HEIGHT);
-
- yd -= child_height + TEXT_AREA_HEIGHT;
-
- if (e_printable_data_left(child_printable))
- break;
-
- child = child->next;
- if (!child) {
- child_printable = NULL;
- break;
- }
-
- child_node = child->data;
- if (child_printable)
- gtk_object_unref(GTK_OBJECT(child_printable));
- child_printable = e_table_group_get_printable(child_node->child);
- if (child_printable)
- gtk_object_ref(GTK_OBJECT(child_printable));
- e_printable_reset(child_printable);
- }
-
- gp_draw_rect(context, 0, height, width, 1);
-
- if (groupcontext->child_printable)
- gtk_object_unref(GTK_OBJECT(groupcontext->child_printable));
- groupcontext->child_printable = child_printable;
- groupcontext->child = child;
-
-}
-
-static gboolean
-e_table_group_container_data_left (EPrintable *ep,
- ETGCPrintContext *groupcontext)
-{
- gtk_signal_emit_stop_by_name(GTK_OBJECT(ep), "data_left");
- return groupcontext->child != NULL;
-}
-
-static void
-e_table_group_container_reset (EPrintable *ep,
- ETGCPrintContext *groupcontext)
-{
- groupcontext->child = groupcontext->etgc->children;
- if (groupcontext->child_printable)
- gtk_object_unref(GTK_OBJECT(groupcontext->child_printable));
- groupcontext->child_printable = NULL;
-}
-
-static gdouble
-e_table_group_container_height (EPrintable *ep,
- GnomePrintContext *context,
- gdouble width,
- gdouble max_height,
- gboolean quantize,
- ETGCPrintContext *groupcontext)
-{
- gdouble height = 0;
- gdouble child_height;
- gdouble yd = max_height;
- ETableGroupContainerChildNode *child_node;
- GList *child;
- EPrintable *child_printable;
-
- child_printable = groupcontext->child_printable;
- child = groupcontext->child;
-
- if (child_printable)
- gtk_object_ref(GTK_OBJECT(child_printable));
- else {
- if (!child) {
- gtk_signal_emit_stop_by_name(GTK_OBJECT(ep), "height");
- return 0;
- } else {
- child_node = child->data;
- child_printable = e_table_group_get_printable(child_node->child);
- if (child_printable)
- gtk_object_ref(GTK_OBJECT(child_printable));
- e_printable_reset(child_printable);
- }
- }
-
- if (yd != -1 && yd < TEXT_AREA_HEIGHT)
- return 0;
-
- while (1) {
- child_height = e_printable_height(child_printable, context, width - 36, yd - (yd == -1 ? 0 : TEXT_AREA_HEIGHT), quantize);
-
- height += child_height + TEXT_AREA_HEIGHT;
-
- if (yd != -1) {
- if (!e_printable_will_fit(child_printable, context, width - 36, yd - (yd == -1 ? 0 : TEXT_AREA_HEIGHT), quantize)) {
- break;
- }
-
- yd -= child_height + TEXT_AREA_HEIGHT;
- }
-
- child = child->next;
- if (!child) {
- break;
- }
-
- child_node = child->data;
- if (child_printable)
- gtk_object_unref(GTK_OBJECT(child_printable));
- child_printable = e_table_group_get_printable(child_node->child);
- if (child_printable)
- gtk_object_ref(GTK_OBJECT(child_printable));
- e_printable_reset(child_printable);
- }
- if (child_printable)
- gtk_object_unref(GTK_OBJECT(child_printable));
- gtk_signal_emit_stop_by_name(GTK_OBJECT(ep), "height");
- return height;
-}
-
-static gboolean
-e_table_group_container_will_fit (EPrintable *ep,
- GnomePrintContext *context,
- gdouble width,
- gdouble max_height,
- gboolean quantize,
- ETGCPrintContext *groupcontext)
-{
- gboolean will_fit = TRUE;
- gdouble child_height;
- gdouble yd = max_height;
- ETableGroupContainerChildNode *child_node;
- GList *child;
- EPrintable *child_printable;
-
- child_printable = groupcontext->child_printable;
- child = groupcontext->child;
-
- if (child_printable)
- gtk_object_ref(GTK_OBJECT(child_printable));
- else {
- if (!child) {
- gtk_signal_emit_stop_by_name(GTK_OBJECT(ep), "will_fit");
- return will_fit;
- } else {
- child_node = child->data;
- child_printable = e_table_group_get_printable(child_node->child);
- if (child_printable)
- gtk_object_ref(GTK_OBJECT(child_printable));
- e_printable_reset(child_printable);
- }
- }
-
- if (yd != -1 && yd < TEXT_AREA_HEIGHT)
- will_fit = FALSE;
- else {
- while (1) {
- child_height = e_printable_height(child_printable, context, width - 36, yd - (yd == -1 ? 0 : TEXT_AREA_HEIGHT), quantize);
-
- if (yd != -1) {
- if (!e_printable_will_fit(child_printable, context, width - 36, yd - (yd == -1 ? 0 : TEXT_AREA_HEIGHT), quantize)) {
- will_fit = FALSE;
- break;
- }
-
- yd -= child_height + TEXT_AREA_HEIGHT;
- }
-
- child = child->next;
- if (!child) {
- break;
- }
-
- child_node = child->data;
- if (child_printable)
- gtk_object_unref(GTK_OBJECT(child_printable));
- child_printable = e_table_group_get_printable(child_node->child);
- if (child_printable)
- gtk_object_ref(GTK_OBJECT(child_printable));
- e_printable_reset(child_printable);
- }
- }
-
- if (child_printable)
- gtk_object_unref(GTK_OBJECT(child_printable));
-
- gtk_signal_emit_stop_by_name(GTK_OBJECT(ep), "will_fit");
- return will_fit;
-}
-
-static void
-e_table_group_container_printable_destroy (GtkObject *object,
- ETGCPrintContext *groupcontext)
-{
- gtk_object_unref(GTK_OBJECT(groupcontext->etgc));
- if (groupcontext->child_printable)
- gtk_object_ref(GTK_OBJECT(groupcontext->child_printable));
- g_free(groupcontext);
-}
-
-static EPrintable *
-etgc_get_printable (ETableGroup *etg)
-{
- ETableGroupContainer *etgc = E_TABLE_GROUP_CONTAINER(etg);
- EPrintable *printable = e_printable_new();
- ETGCPrintContext *groupcontext;
-
- groupcontext = g_new(ETGCPrintContext, 1);
- groupcontext->etgc = etgc;
- gtk_object_ref(GTK_OBJECT(etgc));
- groupcontext->child = etgc->children;
- groupcontext->child_printable = NULL;
-
- gtk_signal_connect (GTK_OBJECT(printable),
- "print_page",
- GTK_SIGNAL_FUNC(e_table_group_container_print_page),
- groupcontext);
- gtk_signal_connect (GTK_OBJECT(printable),
- "data_left",
- GTK_SIGNAL_FUNC(e_table_group_container_data_left),
- groupcontext);
- gtk_signal_connect (GTK_OBJECT(printable),
- "reset",
- GTK_SIGNAL_FUNC(e_table_group_container_reset),
- groupcontext);
- gtk_signal_connect (GTK_OBJECT(printable),
- "height",
- GTK_SIGNAL_FUNC(e_table_group_container_height),
- groupcontext);
- gtk_signal_connect (GTK_OBJECT(printable),
- "will_fit",
- GTK_SIGNAL_FUNC(e_table_group_container_will_fit),
- groupcontext);
- gtk_signal_connect (GTK_OBJECT(printable),
- "destroy",
- GTK_SIGNAL_FUNC(e_table_group_container_printable_destroy),
- groupcontext);
-
- return printable;
-}
diff --git a/widgets/table/e-table-group-container.h b/widgets/table/e-table-group-container.h
deleted file mode 100644
index d7e314d517..0000000000
--- a/widgets/table/e-table-group-container.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_GROUP_CONTAINER_H_
-#define _E_TABLE_GROUP_CONTAINER_H_
-
-#include <libgnomeui/gnome-canvas.h>
-#include <gal/e-table/e-table-model.h>
-#include <gal/e-table/e-table-header.h>
-#include <gal/e-table/e-table-group.h>
-#include <gal/e-table/e-table-item.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_TABLE_GROUP_CONTAINER_TYPE (e_table_group_container_get_type ())
-#define E_TABLE_GROUP_CONTAINER(o) (GTK_CHECK_CAST ((o), E_TABLE_GROUP_CONTAINER_TYPE, ETableGroupContainer))
-#define E_TABLE_GROUP_CONTAINER_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_GROUP_CONTAINER_TYPE, ETableGroupContainerClass))
-#define E_IS_TABLE_GROUP_CONTAINER(o) (GTK_CHECK_TYPE ((o), E_TABLE_GROUP_CONTAINER_TYPE))
-#define E_IS_TABLE_GROUP_CONTAINER_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_GROUP_CONTAINER_TYPE))
-
-typedef struct {
- ETableGroup group;
-
- /*
- * The ETableCol used to group this set
- */
- ETableCol *ecol;
- gint ascending;
-
- /*
- * List of ETableGroups we stack
- */
- GList *children;
-
- /*
- * The canvas rectangle that contains the children
- */
- GnomeCanvasItem *rect;
-
- GdkFont *font;
-
- gdouble width, height, minimum_width;
-
- ETableSortInfo *sort_info;
- int n;
- int length_threshold;
-
- ESelectionModel *selection_model;
-
- guint alternating_row_colors : 1;
- guint horizontal_draw_grid : 1;
- guint vertical_draw_grid : 1;
- guint draw_focus : 1;
- ECursorMode cursor_mode;
-
- /*
- * State: the ETableGroup is open or closed
- */
- guint open:1;
-} ETableGroupContainer;
-
-typedef struct {
- ETableGroupClass parent_class;
-} ETableGroupContainerClass;
-
-ETableGroup *e_table_group_container_new (GnomeCanvasGroup *parent, ETableHeader *full_header, ETableHeader *header,
- ETableModel *model, ETableSortInfo *sort_info, int n);
-void e_table_group_container_construct (GnomeCanvasGroup *parent, ETableGroupContainer *etgc,
- ETableHeader *full_header,
- ETableHeader *header,
- ETableModel *model, ETableSortInfo *sort_info, int n);
-
-GtkType e_table_group_container_get_type (void);
-
-END_GNOME_DECLS
-
-#endif /* _E_TABLE_GROUP_CONTAINER_H_ */
diff --git a/widgets/table/e-table-group-leaf.c b/widgets/table/e-table-group-leaf.c
deleted file mode 100644
index d527991a41..0000000000
--- a/widgets/table/e-table-group-leaf.c
+++ /dev/null
@@ -1,499 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * E-Table-Group.c: Implements the grouping objects for elements on a table
- *
- * Author:
- * Miguel de Icaza (miguel@gnu.org ()
- *
- * Copyright 1999, Ximian, Inc.
- */
-
-#include <config.h>
-#include <gtk/gtksignal.h>
-#include <libgnomeui/gnome-canvas-rect-ellipse.h>
-#include "e-table-group-leaf.h"
-#include "e-table-item.h"
-#include "e-table-sorted-variable.h"
-#include "e-table-sorted.h"
-#include "gal/util/e-util.h"
-#include "gal/widgets/e-canvas.h"
-
-#define PARENT_TYPE e_table_group_get_type ()
-
-static GnomeCanvasGroupClass *etgl_parent_class;
-
-/* The arguments we take */
-enum {
- ARG_0,
- ARG_HEIGHT,
- ARG_WIDTH,
- ARG_MINIMUM_WIDTH,
- ARG_FROZEN,
- ARG_TABLE_ALTERNATING_ROW_COLORS,
- ARG_TABLE_HORIZONTAL_DRAW_GRID,
- ARG_TABLE_VERTICAL_DRAW_GRID,
- ARG_TABLE_DRAW_FOCUS,
- ARG_CURSOR_MODE,
- ARG_LENGTH_THRESHOLD,
- ARG_SELECTION_MODEL,
-};
-
-static void etgl_set_arg (GtkObject *object, GtkArg *arg, guint arg_id);
-static void etgl_get_arg (GtkObject *object, GtkArg *arg, guint arg_id);
-
-static void
-etgl_destroy (GtkObject *object)
-{
- ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF(object);
- if (etgl->ets)
- gtk_object_unref (GTK_OBJECT(etgl->ets));
- if (etgl->item)
- gtk_object_destroy (GTK_OBJECT(etgl->item));
- if (etgl->selection_model)
- gtk_object_unref (GTK_OBJECT(etgl->selection_model));
- if (GTK_OBJECT_CLASS (etgl_parent_class)->destroy)
- GTK_OBJECT_CLASS (etgl_parent_class)->destroy (object);
-}
-
-static void
-e_table_group_leaf_construct (GnomeCanvasGroup *parent,
- ETableGroupLeaf *etgl,
- ETableHeader *full_header,
- ETableHeader *header,
- ETableModel *model,
- ETableSortInfo *sort_info)
-{
- etgl->is_grouped = e_table_sort_info_grouping_get_count(sort_info);
- if (etgl->is_grouped)
- etgl->ets = E_TABLE_SUBSET(e_table_sorted_variable_new (model, full_header, sort_info));
- else
- etgl->ets = E_TABLE_SUBSET(e_table_sorted_new (model, full_header, sort_info));
- gtk_object_ref(GTK_OBJECT(etgl->ets));
- gtk_object_sink(GTK_OBJECT(etgl->ets));
- e_table_group_construct (parent, E_TABLE_GROUP (etgl), full_header, header, model);
-}
-
-/**
- * e_table_group_leaf_new
- * @parent: The %GnomeCanvasGroup to create a child of.
- * @full_header: The full header of the %ETable.
- * @header: The current header of the %ETable.
- * @model: The %ETableModel of the %ETable.
- * @sort_info: The %ETableSortInfo of the %ETable.
- *
- * %ETableGroupLeaf is an %ETableGroup which simply contains an
- * %ETableItem.
- *
- * Returns: The new %ETableGroupLeaf.
- */
-ETableGroup *
-e_table_group_leaf_new (GnomeCanvasGroup *parent,
- ETableHeader *full_header,
- ETableHeader *header,
- ETableModel *model,
- ETableSortInfo *sort_info)
-{
- ETableGroupLeaf *etgl;
-
- g_return_val_if_fail (parent != NULL, NULL);
-
- etgl = gtk_type_new (e_table_group_leaf_get_type ());
-
- e_table_group_leaf_construct (parent, etgl, full_header,
- header, model, sort_info);
- return E_TABLE_GROUP (etgl);
-}
-
-static void
-etgl_cursor_change (GtkObject *object, gint row, ETableGroupLeaf *etgl)
-{
- if (row < E_TABLE_SUBSET(etgl->ets)->n_map)
- e_table_group_cursor_change (E_TABLE_GROUP(etgl), E_TABLE_SUBSET(etgl->ets)->map_table[row]);
-}
-
-static void
-etgl_cursor_activated (GtkObject *object, gint row, ETableGroupLeaf *etgl)
-{
- if (row < E_TABLE_SUBSET(etgl->ets)->n_map)
- e_table_group_cursor_activated (E_TABLE_GROUP(etgl), E_TABLE_SUBSET(etgl->ets)->map_table[row]);
-}
-
-static void
-etgl_double_click (GtkObject *object, gint row, gint col, GdkEvent *event, ETableGroupLeaf *etgl)
-{
- e_table_group_double_click (E_TABLE_GROUP(etgl), row, col, event);
-}
-
-static gint
-etgl_key_press (GtkObject *object, gint row, gint col, GdkEvent *event, ETableGroupLeaf *etgl)
-{
- if (row < E_TABLE_SUBSET(etgl->ets)->n_map)
- return e_table_group_key_press (E_TABLE_GROUP(etgl), E_TABLE_SUBSET(etgl->ets)->map_table[row], col, event);
- else
- return 0;
-}
-
-static gint
-etgl_right_click (GtkObject *object, gint row, gint col, GdkEvent *event, ETableGroupLeaf *etgl)
-{
- if (row < E_TABLE_SUBSET(etgl->ets)->n_map)
- return e_table_group_right_click (E_TABLE_GROUP(etgl), E_TABLE_SUBSET(etgl->ets)->map_table[row], col, event);
- else
- return 0;
-}
-
-static gint
-etgl_click (GtkObject *object, gint row, gint col, GdkEvent *event, ETableGroupLeaf *etgl)
-{
- if (row < E_TABLE_SUBSET(etgl->ets)->n_map)
- return e_table_group_click (E_TABLE_GROUP(etgl), E_TABLE_SUBSET(etgl->ets)->map_table[row], col, event);
- else
- return 0;
-}
-
-static void
-etgl_reflow (GnomeCanvasItem *item, gint flags)
-{
- ETableGroupLeaf *leaf = E_TABLE_GROUP_LEAF(item);
- gtk_object_get(GTK_OBJECT(leaf->item),
- "height", &leaf->height,
- NULL);
- gtk_object_get(GTK_OBJECT(leaf->item),
- "width", &leaf->width,
- NULL);
- e_canvas_item_request_parent_reflow (item);
-}
-
-static void
-etgl_realize (GnomeCanvasItem *item)
-{
- ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF(item);
-
- if (GNOME_CANVAS_ITEM_CLASS (etgl_parent_class)->realize)
- GNOME_CANVAS_ITEM_CLASS (etgl_parent_class)->realize (item);
-
- etgl->item = E_TABLE_ITEM(gnome_canvas_item_new (GNOME_CANVAS_GROUP(etgl),
- e_table_item_get_type (),
- "ETableHeader", E_TABLE_GROUP(etgl)->header,
- "ETableModel", etgl->ets,
- "alternating_row_colors", etgl->alternating_row_colors,
- "horizontal_draw_grid", etgl->horizontal_draw_grid,
- "vertical_draw_grid", etgl->vertical_draw_grid,
- "drawfocus", etgl->draw_focus,
- "cursor_mode", etgl->cursor_mode,
- "minimum_width", etgl->minimum_width,
- "length_threshold", etgl->length_threshold,
- "selection_model", etgl->selection_model,
- NULL));
-
- gtk_signal_connect (GTK_OBJECT(etgl->item), "cursor_change",
- GTK_SIGNAL_FUNC(etgl_cursor_change), etgl);
- gtk_signal_connect (GTK_OBJECT(etgl->item), "cursor_activated",
- GTK_SIGNAL_FUNC(etgl_cursor_activated), etgl);
- gtk_signal_connect (GTK_OBJECT(etgl->item), "double_click",
- GTK_SIGNAL_FUNC(etgl_double_click), etgl);
- gtk_signal_connect (GTK_OBJECT(etgl->item), "right_click",
- GTK_SIGNAL_FUNC(etgl_right_click), etgl);
- gtk_signal_connect (GTK_OBJECT(etgl->item), "click",
- GTK_SIGNAL_FUNC(etgl_click), etgl);
- gtk_signal_connect (GTK_OBJECT(etgl->item), "key_press",
- GTK_SIGNAL_FUNC(etgl_key_press), etgl);
- e_canvas_item_request_reflow(item);
-}
-
-static void
-etgl_add (ETableGroup *etg, gint row)
-{
- ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (etg);
- if (E_IS_TABLE_SUBSET_VARIABLE(etgl->ets)) {
- e_table_subset_variable_add (E_TABLE_SUBSET_VARIABLE(etgl->ets), row);
- }
-}
-
-static void
-etgl_add_array (ETableGroup *etg, const gint *array, gint count)
-{
- ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (etg);
- if (E_IS_TABLE_SUBSET_VARIABLE(etgl->ets)) {
- e_table_subset_variable_add_array (E_TABLE_SUBSET_VARIABLE(etgl->ets), array, count);
- }
-}
-
-static void
-etgl_add_all (ETableGroup *etg)
-{
- ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (etg);
- if (E_IS_TABLE_SUBSET_VARIABLE(etgl->ets)) {
- e_table_subset_variable_add_all (E_TABLE_SUBSET_VARIABLE(etgl->ets));
- }
-}
-
-static gboolean
-etgl_remove (ETableGroup *etg, gint row)
-{
- ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (etg);
- if (E_IS_TABLE_SUBSET_VARIABLE(etgl->ets)) {
- return e_table_subset_variable_remove (E_TABLE_SUBSET_VARIABLE(etgl->ets), row);
- }
- return FALSE;
-}
-
-static void
-etgl_increment (ETableGroup *etg, gint position, gint amount)
-{
- ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (etg);
- if (E_IS_TABLE_SUBSET_VARIABLE(etgl->ets)) {
- e_table_subset_variable_increment (E_TABLE_SUBSET_VARIABLE(etgl->ets), position, amount);
- }
-}
-
-static void
-etgl_decrement (ETableGroup *etg, gint position, gint amount)
-{
- ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (etg);
- if (E_IS_TABLE_SUBSET_VARIABLE(etgl->ets)) {
- e_table_subset_variable_decrement (E_TABLE_SUBSET_VARIABLE(etgl->ets), position, amount);
- }
-}
-
-static int
-etgl_row_count (ETableGroup *etg)
-{
- ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (etg);
- return e_table_model_row_count(E_TABLE_MODEL(etgl->ets));
-}
-
-static void
-etgl_set_focus (ETableGroup *etg, EFocus direction, gint view_col)
-{
- ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (etg);
- if (direction == E_FOCUS_END) {
- e_table_item_set_cursor (etgl->item, view_col, e_table_model_row_count(E_TABLE_MODEL(etgl->ets)) - 1);
- } else {
- e_table_item_set_cursor (etgl->item, view_col, 0);
- }
-}
-
-static gint
-etgl_get_focus_column (ETableGroup *etg)
-{
- ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (etg);
- return e_table_item_get_focused_column (etgl->item);
-}
-
-static EPrintable *
-etgl_get_printable (ETableGroup *etg)
-{
- ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (etg);
- return e_table_item_get_printable (etgl->item);
-}
-
-static void
-etgl_compute_location (ETableGroup *etg, int *x, int *y, int *row, int *col)
-{
- ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (etg);
- e_table_item_compute_location (etgl->item, x, y, row, col);
-}
-
-static void
-etgl_get_cell_geometry (ETableGroup *etg, int *row, int *col, int *x, int *y, int *width, int *height)
-{
- ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (etg);
- e_table_item_get_cell_geometry (etgl->item, row, col, x, y, width, height);
-}
-
-static void
-etgl_set_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- ETableGroup *etg = E_TABLE_GROUP (object);
- ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (object);
-
- switch (arg_id) {
- case ARG_FROZEN:
- if (GTK_VALUE_BOOL (*arg))
- etg->frozen = TRUE;
- else {
- etg->frozen = FALSE;
- }
- break;
- case ARG_MINIMUM_WIDTH:
- case ARG_WIDTH:
- etgl->minimum_width = GTK_VALUE_DOUBLE(*arg);
- if (etgl->item) {
- gnome_canvas_item_set (GNOME_CANVAS_ITEM(etgl->item),
- "minimum_width", etgl->minimum_width,
- NULL);
- }
- break;
- case ARG_LENGTH_THRESHOLD:
- etgl->length_threshold = GTK_VALUE_INT (*arg);
- if (etgl->item) {
- gnome_canvas_item_set (GNOME_CANVAS_ITEM(etgl->item),
- "length_threshold", GTK_VALUE_INT (*arg),
- NULL);
- }
- break;
- case ARG_SELECTION_MODEL:
- if (etgl->selection_model)
- gtk_object_unref(GTK_OBJECT(etgl->selection_model));
- etgl->selection_model = E_SELECTION_MODEL(GTK_VALUE_OBJECT (*arg));
- if (etgl->selection_model)
- gtk_object_ref(GTK_OBJECT(etgl->selection_model));
- if (etgl->item) {
- gnome_canvas_item_set (GNOME_CANVAS_ITEM(etgl->item),
- "selection_model", etgl->selection_model,
- NULL);
- }
- break;
-
- case ARG_TABLE_ALTERNATING_ROW_COLORS:
- etgl->alternating_row_colors = GTK_VALUE_BOOL (*arg);
- if (etgl->item) {
- gnome_canvas_item_set (GNOME_CANVAS_ITEM(etgl->item),
- "alternating_row_colors", GTK_VALUE_BOOL (*arg),
- NULL);
- }
- break;
-
- case ARG_TABLE_HORIZONTAL_DRAW_GRID:
- etgl->horizontal_draw_grid = GTK_VALUE_BOOL (*arg);
- if (etgl->item) {
- gnome_canvas_item_set (GNOME_CANVAS_ITEM(etgl->item),
- "horizontal_draw_grid", GTK_VALUE_BOOL (*arg),
- NULL);
- }
- break;
-
- case ARG_TABLE_VERTICAL_DRAW_GRID:
- etgl->vertical_draw_grid = GTK_VALUE_BOOL (*arg);
- if (etgl->item) {
- gnome_canvas_item_set (GNOME_CANVAS_ITEM(etgl->item),
- "vertical_draw_grid", GTK_VALUE_BOOL (*arg),
- NULL);
- }
- break;
-
- case ARG_TABLE_DRAW_FOCUS:
- etgl->draw_focus = GTK_VALUE_BOOL (*arg);
- if (etgl->item) {
- gnome_canvas_item_set (GNOME_CANVAS_ITEM(etgl->item),
- "drawfocus", GTK_VALUE_BOOL (*arg),
- NULL);
- }
- break;
-
- case ARG_CURSOR_MODE:
- etgl->cursor_mode = GTK_VALUE_INT (*arg);
- if (etgl->item) {
- gnome_canvas_item_set (GNOME_CANVAS_ITEM(etgl->item),
- "cursor_mode", GTK_VALUE_INT (*arg),
- NULL);
- }
- break;
- default:
- break;
- }
-}
-
-static void
-etgl_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- ETableGroup *etg = E_TABLE_GROUP (object);
- ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (object);
-
- switch (arg_id) {
- case ARG_FROZEN:
- GTK_VALUE_BOOL (*arg) = etg->frozen;
- break;
- case ARG_HEIGHT:
- GTK_VALUE_DOUBLE (*arg) = etgl->height;
- break;
- case ARG_WIDTH:
- GTK_VALUE_DOUBLE (*arg) = etgl->width;
- break;
- case ARG_MINIMUM_WIDTH:
- GTK_VALUE_DOUBLE (*arg) = etgl->minimum_width;
- break;
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
-
-static void
-etgl_class_init (GtkObjectClass *object_class)
-{
- GnomeCanvasItemClass *item_class = (GnomeCanvasItemClass *) object_class;
- ETableGroupClass *e_group_class = E_TABLE_GROUP_CLASS(object_class);
-
- object_class->destroy = etgl_destroy;
- object_class->set_arg = etgl_set_arg;
- object_class->get_arg = etgl_get_arg;
-
- item_class->realize = etgl_realize;
-
- etgl_parent_class = gtk_type_class (PARENT_TYPE);
-
- e_group_class->add = etgl_add;
- e_group_class->add_array = etgl_add_array;
- e_group_class->add_all = etgl_add_all;
- e_group_class->remove = etgl_remove;
- e_group_class->increment = etgl_increment;
- e_group_class->decrement = etgl_decrement;
- e_group_class->row_count = etgl_row_count;
- e_group_class->set_focus = etgl_set_focus;
- e_group_class->get_focus_column = etgl_get_focus_column;
- e_group_class->get_printable = etgl_get_printable;
- e_group_class->compute_location = etgl_compute_location;
- e_group_class->get_cell_geometry = etgl_get_cell_geometry;
-
- gtk_object_add_arg_type ("ETableGroupLeaf::alternating_row_colors", GTK_TYPE_BOOL,
- GTK_ARG_WRITABLE, ARG_TABLE_ALTERNATING_ROW_COLORS);
- gtk_object_add_arg_type ("ETableGroupLeaf::horizontal_draw_grid", GTK_TYPE_BOOL,
- GTK_ARG_WRITABLE, ARG_TABLE_HORIZONTAL_DRAW_GRID);
- gtk_object_add_arg_type ("ETableGroupLeaf::vertical_draw_grid", GTK_TYPE_BOOL,
- GTK_ARG_WRITABLE, ARG_TABLE_VERTICAL_DRAW_GRID);
- gtk_object_add_arg_type ("ETableGroupLeaf::drawfocus", GTK_TYPE_BOOL,
- GTK_ARG_WRITABLE, ARG_TABLE_DRAW_FOCUS);
- gtk_object_add_arg_type ("ETableGroupLeaf::cursor_mode", GTK_TYPE_INT,
- GTK_ARG_WRITABLE, ARG_CURSOR_MODE);
- gtk_object_add_arg_type ("ETableGroupLeaf::length_threshold", GTK_TYPE_INT,
- GTK_ARG_WRITABLE, ARG_LENGTH_THRESHOLD);
- gtk_object_add_arg_type ("ETableGroupLeaf::selection_model", E_SELECTION_MODEL_TYPE,
- GTK_ARG_WRITABLE, ARG_SELECTION_MODEL);
-
- gtk_object_add_arg_type ("ETableGroupLeaf::height", GTK_TYPE_DOUBLE,
- GTK_ARG_READABLE, ARG_HEIGHT);
- gtk_object_add_arg_type ("ETableGroupLeaf::width", GTK_TYPE_DOUBLE,
- GTK_ARG_READWRITE, ARG_WIDTH);
- gtk_object_add_arg_type ("ETableGroupLeaf::minimum_width", GTK_TYPE_DOUBLE,
- GTK_ARG_READWRITE, ARG_MINIMUM_WIDTH);
- gtk_object_add_arg_type ("ETableGroupLeaf::frozen", GTK_TYPE_BOOL,
- GTK_ARG_READWRITE, ARG_FROZEN);
-}
-
-static void
-etgl_init (GtkObject *object)
-{
- ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (object);
-
- etgl->width = 1;
- etgl->height = 1;
- etgl->minimum_width = 0;
-
- etgl->ets = NULL;
- etgl->item = NULL;
-
- etgl->alternating_row_colors = 1;
- etgl->horizontal_draw_grid = 1;
- etgl->vertical_draw_grid = 1;
- etgl->draw_focus = 1;
- etgl->cursor_mode = E_CURSOR_SIMPLE;
- etgl->length_threshold = -1;
-
- etgl->selection_model = NULL;
-
- e_canvas_item_set_reflow_callback (GNOME_CANVAS_ITEM(object), etgl_reflow);
-}
-
-E_MAKE_TYPE (e_table_group_leaf, "ETableGroupLeaf", ETableGroupLeaf, etgl_class_init, etgl_init, PARENT_TYPE);
diff --git a/widgets/table/e-table-group-leaf.h b/widgets/table/e-table-group-leaf.h
deleted file mode 100644
index de6a63013b..0000000000
--- a/widgets/table/e-table-group-leaf.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_GROUP_LEAF_H_
-#define _E_TABLE_GROUP_LEAF_H_
-
-#include <libgnomeui/gnome-canvas.h>
-#include <gal/e-table/e-table-group.h>
-#include <gal/e-table/e-table-subset.h>
-#include <gal/e-table/e-table-item.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_TABLE_GROUP_LEAF_TYPE (e_table_group_leaf_get_type ())
-#define E_TABLE_GROUP_LEAF(o) (GTK_CHECK_CAST ((o), E_TABLE_GROUP_LEAF_TYPE, ETableGroupLeaf))
-#define E_TABLE_GROUP_LEAF_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_GROUP_LEAF_TYPE, ETableGroupLeafClass))
-#define E_IS_TABLE_GROUP_LEAF(o) (GTK_CHECK_TYPE ((o), E_TABLE_GROUP_LEAF_TYPE))
-#define E_IS_TABLE_GROUP_LEAF_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_GROUP_LEAF_TYPE))
-
-typedef struct {
- ETableGroup group;
-
- /*
- * Item.
- */
- ETableItem *item;
-
- gdouble height;
- gdouble width;
- gdouble minimum_width;
-
- int length_threshold;
-
- ETableSubset *ets;
- guint is_grouped : 1;
-
- guint alternating_row_colors : 1;
- guint horizontal_draw_grid : 1;
- guint vertical_draw_grid : 1;
- guint draw_focus : 1;
- ECursorMode cursor_mode;
-
- ESelectionModel *selection_model;
-} ETableGroupLeaf;
-
-typedef struct {
- ETableGroupClass parent_class;
-} ETableGroupLeafClass;
-
-ETableGroup *e_table_group_leaf_new (GnomeCanvasGroup *parent,
- ETableHeader *full_header,
- ETableHeader *header,
- ETableModel *model,
- ETableSortInfo *sort_info);
-GtkType e_table_group_leaf_get_type (void);
-
-
-END_GNOME_DECLS
-
-#endif /* _E_TABLE_GROUP_LEAF_H_ */
-
diff --git a/widgets/table/e-table-group.c b/widgets/table/e-table-group.c
deleted file mode 100644
index c31be579d4..0000000000
--- a/widgets/table/e-table-group.c
+++ /dev/null
@@ -1,656 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * E-Table-Group.c: Implements the grouping objects for elements on a table
- *
- * Author:
- * Miguel de Icaza (miguel@ximian.com)
- * Chris Lahey (clahey@ximian.com)
- *
- * Copyright 1999, 2000 Ximian, Inc.
- */
-
-#include <config.h>
-#include <gtk/gtksignal.h>
-#include <libgnomeui/gnome-canvas-rect-ellipse.h>
-#include "e-table-group.h"
-#include "e-table-group-container.h"
-#include "e-table-group-leaf.h"
-#include "e-table-item.h"
-#include "gal/util/e-util.h"
-
-#define PARENT_TYPE gnome_canvas_group_get_type ()
-
-#define ETG_CLASS(e) (E_TABLE_GROUP_CLASS(GTK_OBJECT(e)->klass))
-
-static GnomeCanvasGroupClass *etg_parent_class;
-
-enum {
- CURSOR_CHANGE,
- CURSOR_ACTIVATED,
- DOUBLE_CLICK,
- RIGHT_CLICK,
- CLICK,
- KEY_PRESS,
- LAST_SIGNAL
-};
-
-static gint etg_signals [LAST_SIGNAL] = { 0, };
-
-static gboolean etg_get_focus (ETableGroup *etg);
-static void etg_destroy (GtkObject *object);
-
-static void
-etg_destroy (GtkObject *object)
-{
- ETableGroup *etg = E_TABLE_GROUP(object);
- if (etg->header)
- gtk_object_unref (GTK_OBJECT(etg->header));
- if (etg->full_header)
- gtk_object_unref (GTK_OBJECT(etg->full_header));
- if (etg->model)
- gtk_object_unref (GTK_OBJECT(etg->model));
- if (GTK_OBJECT_CLASS (etg_parent_class)->destroy)
- GTK_OBJECT_CLASS (etg_parent_class)->destroy (object);
-}
-
-/**
- * e_table_group_new
- * @parent: The %GnomeCanvasGroup to create a child of.
- * @full_header: The full header of the %ETable.
- * @header: The current header of the %ETable.
- * @model: The %ETableModel of the %ETable.
- * @sort_info: The %ETableSortInfo of the %ETable.
- * @n: The grouping information object to group by.
- *
- * %ETableGroup is a collection of rows of an %ETable. It's a
- * %GnomeCanvasItem. There are two different forms. If n < the
- * number of groupings in the given %ETableSortInfo, then the
- * %ETableGroup will need to contain other %ETableGroups, thus it
- * creates an %ETableGroupContainer. Otherwise, it will just contain
- * an %ETableItem, and thus it creates an %ETableGroupLeaf.
- *
- * Returns: The new %ETableGroup.
- */
-ETableGroup *
-e_table_group_new (GnomeCanvasGroup *parent,
- ETableHeader *full_header,
- ETableHeader *header,
- ETableModel *model,
- ETableSortInfo *sort_info,
- int n)
-{
- g_return_val_if_fail (model != NULL, NULL);
-
- if (n < e_table_sort_info_grouping_get_count(sort_info)) {
- return e_table_group_container_new (parent, full_header, header, model, sort_info, n);
- } else {
- return e_table_group_leaf_new (parent, full_header, header, model, sort_info);
- }
- return NULL;
-}
-
-/**
- * e_table_group_construct
- * @parent: The %GnomeCanvasGroup to create a child of.
- * @etg: The %ETableGroup to construct.
- * @full_header: The full header of the %ETable.
- * @header: The current header of the %ETable.
- * @model: The %ETableModel of the %ETable.
- *
- * This routine does the base construction of the %ETableGroup.
- */
-void
-e_table_group_construct (GnomeCanvasGroup *parent,
- ETableGroup *etg,
- ETableHeader *full_header,
- ETableHeader *header,
- ETableModel *model)
-{
- etg->full_header = full_header;
- gtk_object_ref (GTK_OBJECT(etg->full_header));
- etg->header = header;
- gtk_object_ref (GTK_OBJECT(etg->header));
- etg->model = model;
- gtk_object_ref (GTK_OBJECT(etg->model));
- gnome_canvas_item_constructv (GNOME_CANVAS_ITEM (etg), parent, 0, NULL);
-}
-
-/**
- * e_table_group_add
- * @etg: The %ETableGroup to add a row to
- * @row: The row to add.
- *
- * This routine adds the given row from the %ETableModel to this set
- * of rows.
- */
-void
-e_table_group_add (ETableGroup *etg,
- gint row)
-{
- g_return_if_fail (etg != NULL);
- g_return_if_fail (E_IS_TABLE_GROUP (etg));
-
- if (ETG_CLASS (etg)->add)
- ETG_CLASS (etg)->add (etg, row);
-}
-
-/**
- * e_table_group_add_array
- * @etg: The %ETableGroup to add to
- * @array: The array to add.
- * @count: The number of times to add
- *
- * This routine adds all the rows in the array to this set of rows.
- * It assumes that the array is already sorted properly.
- */
-void
-e_table_group_add_array (ETableGroup *etg,
- const int *array,
- int count)
-{
- g_return_if_fail (etg != NULL);
- g_return_if_fail (E_IS_TABLE_GROUP (etg));
-
- if (ETG_CLASS (etg)->add_array)
- ETG_CLASS (etg)->add_array (etg, array, count);
-}
-
-/**
- * e_table_group_add_all
- * @etg: The %ETableGroup to add to
- *
- * This routine adds all the rows from the %ETableModel to this set
- * of rows.
- */
-void
-e_table_group_add_all (ETableGroup *etg)
-{
- g_return_if_fail (etg != NULL);
- g_return_if_fail (E_IS_TABLE_GROUP (etg));
-
- if (ETG_CLASS (etg)->add_all)
- ETG_CLASS (etg)->add_all (etg);
-}
-
-/**
- * e_table_group_remove
- * @etg: The %ETableGroup to remove a row from
- * @row: The row to remove.
- *
- * This routine removes the given row from the %ETableModel from this
- * set of rows.
- *
- * Returns: TRUE if the row was deleted and FALSE if the row was not
- * found.
- */
-gboolean
-e_table_group_remove (ETableGroup *etg,
- gint row)
-{
- g_return_val_if_fail (etg != NULL, FALSE);
- g_return_val_if_fail (E_IS_TABLE_GROUP (etg), FALSE);
-
- if (ETG_CLASS (etg)->remove)
- return ETG_CLASS (etg)->remove (etg, row);
- else
- return FALSE;
-}
-
-/**
- * e_table_group_increment
- * @etg: The %ETableGroup to increment
- * @position: The position to increment from
- * @amount: The amount to increment.
- *
- * This routine adds amount to all rows greater than or equal to
- * position. This is to handle when a row gets inserted into the
- * model.
- */
-void
-e_table_group_increment (ETableGroup *etg,
- gint position,
- gint amount)
-{
- g_return_if_fail (etg != NULL);
- g_return_if_fail (E_IS_TABLE_GROUP (etg));
-
- if (ETG_CLASS (etg)->increment)
- ETG_CLASS (etg)->increment (etg, position, amount);
-}
-
-/**
- * e_table_group_increment
- * @etg: The %ETableGroup to decrement
- * @position: The position to decrement from
- * @amount: The amount to decrement
- *
- * This routine removes amount from all rows greater than or equal to
- * position. This is to handle when a row gets deleted from the
- * model.
- */
-void
-e_table_group_decrement (ETableGroup *etg,
- gint position,
- gint amount)
-{
- g_return_if_fail (etg != NULL);
- g_return_if_fail (E_IS_TABLE_GROUP (etg));
-
- if (ETG_CLASS (etg)->decrement)
- ETG_CLASS (etg)->decrement (etg, position, amount);
-}
-
-/**
- * e_table_group_increment
- * @etg: The %ETableGroup to count
- *
- * This routine calculates the number of rows shown in this group.
- *
- * Returns: The number of rows.
- */
-gint
-e_table_group_row_count (ETableGroup *etg)
-{
- g_return_val_if_fail (etg != NULL, 0);
- g_return_val_if_fail (E_IS_TABLE_GROUP (etg), 0);
-
- if (ETG_CLASS (etg)->row_count)
- return ETG_CLASS (etg)->row_count (etg);
- else
- return 0;
-}
-
-/**
- * e_table_group_set_focus
- * @etg: The %ETableGroup to set
- * @direction: The direction the focus is coming from.
- * @view_col: The column to set the focus in.
- *
- * Sets the focus to this widget. Places the focus in the view column
- * coming from direction direction.
- */
-void
-e_table_group_set_focus (ETableGroup *etg,
- EFocus direction,
- gint view_col)
-{
- g_return_if_fail (etg != NULL);
- g_return_if_fail (E_IS_TABLE_GROUP (etg));
-
- if (ETG_CLASS (etg)->set_focus)
- ETG_CLASS (etg)->set_focus (etg, direction, view_col);
-}
-
-/**
- * e_table_group_get_focus
- * @etg: The %ETableGroup to check
- *
- * Calculates if this group has the focus.
- *
- * Returns: TRUE if this group has the focus.
- */
-gboolean
-e_table_group_get_focus (ETableGroup *etg)
-{
- g_return_val_if_fail (etg != NULL, FALSE);
- g_return_val_if_fail (E_IS_TABLE_GROUP (etg), FALSE);
-
- if (ETG_CLASS (etg)->get_focus)
- return ETG_CLASS (etg)->get_focus (etg);
- else
- return FALSE;
-}
-
-/**
- * e_table_group_get_focus_column
- * @etg: The %ETableGroup to check
- *
- * Calculates which column in this group has the focus.
- *
- * Returns: The column index (view column).
- */
-gint
-e_table_group_get_focus_column (ETableGroup *etg)
-{
- g_return_val_if_fail (etg != NULL, FALSE);
- g_return_val_if_fail (E_IS_TABLE_GROUP (etg), FALSE);
-
- if (ETG_CLASS (etg)->get_focus_column)
- return ETG_CLASS (etg)->get_focus_column (etg);
- else
- return -1;
-}
-
-/**
- * e_table_group_get_printable
- * @etg: %ETableGroup which will be printed
- *
- * This routine creates and returns an %EPrintable that can be used to
- * print the given %ETableGroup.
- *
- * Returns: The %EPrintable.
- */
-EPrintable *
-e_table_group_get_printable (ETableGroup *etg)
-{
- g_return_val_if_fail (etg != NULL, NULL);
- g_return_val_if_fail (E_IS_TABLE_GROUP (etg), NULL);
-
- if (ETG_CLASS (etg)->get_printable)
- return ETG_CLASS (etg)->get_printable (etg);
- else
- return NULL;
-}
-
-/**
- * e_table_group_compute_location
- * @eti: %ETableGroup to look in.
- * @x: A pointer to the x location to find in the %ETableGroup.
- * @y: A pointer to the y location to find in the %ETableGroup.
- * @row: A pointer to the location to store the found row in.
- * @col: A pointer to the location to store the found col in.
- *
- * This routine locates the pixel location (*x, *y) in the
- * %ETableGroup. If that location is in the %ETableGroup, *row and
- * *col are set to the view row and column where it was found. If
- * that location is not in the %ETableGroup, the height of the
- * %ETableGroup is removed from the value y points to.
- */
-void
-e_table_group_compute_location (ETableGroup *etg, int *x, int *y, int *row, int *col)
-{
- g_return_if_fail (etg != NULL);
- g_return_if_fail (E_IS_TABLE_GROUP (etg));
-
- if (ETG_CLASS (etg)->compute_location)
- ETG_CLASS (etg)->compute_location (etg, x, y, row, col);
-}
-
-/**
- * e_table_group_get_position
- * @eti: %ETableGroup to look in.
- * @x: A pointer to the location to store the found x location in.
- * @y: A pointer to the location to store the found y location in.
- * @row: A pointer to the row number to find.
- * @col: A pointer to the col number to find.
- *
- * This routine finds the view cell (row, col) in the %ETableGroup.
- * If that location is in the %ETableGroup *x and *y are set to the
- * upper left hand corner of the cell found. If that location is not
- * in the %ETableGroup, the number of rows in the %ETableGroup is
- * removed from the value row points to.
- */
-void
-e_table_group_get_cell_geometry (ETableGroup *etg,
- int *row,
- int *col,
- int *x,
- int *y,
- int *width,
- int *height)
-{
- g_return_if_fail (etg != NULL);
- g_return_if_fail (E_IS_TABLE_GROUP (etg));
-
- if (ETG_CLASS (etg)->get_cell_geometry)
- ETG_CLASS (etg)->get_cell_geometry (etg, row, col, x, y, width, height);
-}
-
-/**
- * e_table_group_cursor_change
- * @eti: %ETableGroup to emit the signal on
- * @row: The new cursor row (model row)
- *
- * This routine emits the "cursor_change" signal.
- */
-void
-e_table_group_cursor_change (ETableGroup *e_table_group, gint row)
-{
- g_return_if_fail (e_table_group != NULL);
- g_return_if_fail (E_IS_TABLE_GROUP (e_table_group));
-
- gtk_signal_emit (GTK_OBJECT (e_table_group),
- etg_signals [CURSOR_CHANGE],
- row);
-}
-
-/**
- * e_table_group_cursor_activated
- * @eti: %ETableGroup to emit the signal on
- * @row: The cursor row (model row)
- *
- * This routine emits the "cursor_activated" signal.
- */
-void
-e_table_group_cursor_activated (ETableGroup *e_table_group, gint row)
-{
- g_return_if_fail (e_table_group != NULL);
- g_return_if_fail (E_IS_TABLE_GROUP (e_table_group));
-
- gtk_signal_emit (GTK_OBJECT (e_table_group),
- etg_signals [CURSOR_ACTIVATED],
- row);
-}
-
-/**
- * e_table_group_double_click
- * @eti: %ETableGroup to emit the signal on
- * @row: The row clicked on (model row)
- * @col: The col clicked on (model col)
- * @event: The event that caused this signal
- *
- * This routine emits the "double_click" signal.
- */
-void
-e_table_group_double_click (ETableGroup *e_table_group, gint row, gint col, GdkEvent *event)
-{
- g_return_if_fail (e_table_group != NULL);
- g_return_if_fail (E_IS_TABLE_GROUP (e_table_group));
-
- gtk_signal_emit (GTK_OBJECT (e_table_group),
- etg_signals [DOUBLE_CLICK],
- row, col, event);
-}
-
-/**
- * e_table_group_right_click
- * @eti: %ETableGroup to emit the signal on
- * @row: The row clicked on (model row)
- * @col: The col clicked on (model col)
- * @event: The event that caused this signal
- *
- * This routine emits the "right_click" signal.
- */
-gint
-e_table_group_right_click (ETableGroup *e_table_group, gint row, gint col, GdkEvent *event)
-{
- gint return_val = 0;
-
- g_return_val_if_fail (e_table_group != NULL, 0);
- g_return_val_if_fail (E_IS_TABLE_GROUP (e_table_group), 0);
-
- gtk_signal_emit (GTK_OBJECT (e_table_group),
- etg_signals [RIGHT_CLICK],
- row, col, event, &return_val);
-
- return return_val;
-}
-
-/**
- * e_table_group_click
- * @eti: %ETableGroup to emit the signal on
- * @row: The row clicked on (model row)
- * @col: The col clicked on (model col)
- * @event: The event that caused this signal
- *
- * This routine emits the "click" signal.
- */
-gint
-e_table_group_click (ETableGroup *e_table_group, gint row, gint col, GdkEvent *event)
-{
- gint return_val = 0;
-
- g_return_val_if_fail (e_table_group != NULL, 0);
- g_return_val_if_fail (E_IS_TABLE_GROUP (e_table_group), 0);
-
- gtk_signal_emit (GTK_OBJECT (e_table_group),
- etg_signals [CLICK],
- row, col, event, &return_val);
-
- return return_val;
-}
-
-/**
- * e_table_group_key_press
- * @eti: %ETableGroup to emit the signal on
- * @row: The cursor row (model row)
- * @col: The cursor col (model col)
- * @event: The event that caused this signal
- *
- * This routine emits the "key_press" signal.
- */
-gint
-e_table_group_key_press (ETableGroup *e_table_group, gint row, gint col, GdkEvent *event)
-{
- gint return_val = 0;
-
- g_return_val_if_fail (e_table_group != NULL, 0);
- g_return_val_if_fail (E_IS_TABLE_GROUP (e_table_group), 0);
-
- gtk_signal_emit (GTK_OBJECT (e_table_group),
- etg_signals [KEY_PRESS],
- row, col, event, &return_val);
-
- return return_val;
-}
-
-/**
- * e_table_group_get_header
- * @eti: %ETableGroup to check
- *
- * This routine returns the %ETableGroup's header.
- *
- * Returns: The %ETableHeader.
- */
-ETableHeader *
-e_table_group_get_header (ETableGroup *etg)
-{
- g_return_val_if_fail (etg != NULL, NULL);
- g_return_val_if_fail (E_IS_TABLE_GROUP (etg), NULL);
-
- return etg->header;
-}
-
-static int
-etg_event (GnomeCanvasItem *item, GdkEvent *event)
-{
- ETableGroup *etg = E_TABLE_GROUP (item);
- gboolean return_val = TRUE;
-
- switch (event->type) {
-
- case GDK_FOCUS_CHANGE:
- etg->has_focus = event->focus_change.in;
- return_val = FALSE;
-
- default:
- return_val = FALSE;
- }
- if (return_val == FALSE){
- if (GNOME_CANVAS_ITEM_CLASS(etg_parent_class)->event)
- return GNOME_CANVAS_ITEM_CLASS(etg_parent_class)->event (item, event);
- }
- return return_val;
-
-}
-
-static gboolean
-etg_get_focus (ETableGroup *etg)
-{
- return etg->has_focus;
-}
-
-static void
-etg_class_init (GtkObjectClass *object_class)
-{
- GnomeCanvasItemClass *item_class = (GnomeCanvasItemClass *) object_class;
- ETableGroupClass *klass = (ETableGroupClass *) object_class;
-
- object_class->destroy = etg_destroy;
-
- item_class->event = etg_event;
-
- klass->cursor_change = NULL;
- klass->cursor_activated = NULL;
- klass->double_click = NULL;
- klass->right_click = NULL;
- klass->click = NULL;
- klass->key_press = NULL;
-
- klass->add = NULL;
- klass->add_array = NULL;
- klass->add_all = NULL;
- klass->remove = NULL;
- klass->row_count = NULL;
- klass->increment = NULL;
- klass->decrement = NULL;
- klass->set_focus = NULL;
- klass->get_focus = etg_get_focus;
- klass->get_printable = NULL;
- klass->compute_location = NULL;
- klass->get_cell_geometry = NULL;
-
- etg_parent_class = gtk_type_class (PARENT_TYPE);
-
- etg_signals [CURSOR_CHANGE] =
- gtk_signal_new ("cursor_change",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableGroupClass, cursor_change),
- gtk_marshal_NONE__INT,
- GTK_TYPE_NONE, 1, GTK_TYPE_INT);
-
- etg_signals [CURSOR_ACTIVATED] =
- gtk_signal_new ("cursor_activated",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableGroupClass, cursor_activated),
- gtk_marshal_NONE__INT,
- GTK_TYPE_NONE, 1, GTK_TYPE_INT);
-
- etg_signals [DOUBLE_CLICK] =
- gtk_signal_new ("double_click",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableGroupClass, double_click),
- gtk_marshal_NONE__INT_INT_POINTER,
- GTK_TYPE_NONE, 3, GTK_TYPE_INT, GTK_TYPE_INT, GTK_TYPE_GDK_EVENT);
-
- etg_signals [RIGHT_CLICK] =
- gtk_signal_new ("right_click",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableGroupClass, right_click),
- e_marshal_INT__INT_INT_POINTER,
- GTK_TYPE_INT, 3, GTK_TYPE_INT, GTK_TYPE_INT, GTK_TYPE_GDK_EVENT);
-
- etg_signals [CLICK] =
- gtk_signal_new ("click",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableGroupClass, click),
- e_marshal_INT__INT_INT_POINTER,
- GTK_TYPE_INT, 3, GTK_TYPE_INT, GTK_TYPE_INT, GTK_TYPE_GDK_EVENT);
-
- etg_signals [KEY_PRESS] =
- gtk_signal_new ("key_press",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableGroupClass, key_press),
- e_marshal_INT__INT_INT_POINTER,
- GTK_TYPE_INT, 3, GTK_TYPE_INT, GTK_TYPE_INT, GTK_TYPE_GDK_EVENT);
-
- gtk_object_class_add_signals (object_class, etg_signals, LAST_SIGNAL);
-}
-
-E_MAKE_TYPE (e_table_group, "ETableGroup", ETableGroup, etg_class_init, NULL, PARENT_TYPE);
diff --git a/widgets/table/e-table-group.glade b/widgets/table/e-table-group.glade
deleted file mode 100644
index 20ab88cfca..0000000000
--- a/widgets/table/e-table-group.glade
+++ /dev/null
@@ -1,206 +0,0 @@
-<?xml version="1.0"?>
-<GTK-Interface>
-
-<project>
- <directory></directory>
- <source_directory>src</source_directory>
- <pixmaps_directory>pixmaps</pixmaps_directory>
- <language>C</language>
- <gnome_support>True</gnome_support>
- <gettext_support>True</gettext_support>
- <use_widget_names>False</use_widget_names>
- <output_main_file>False</output_main_file>
- <output_support_files>False</output_support_files>
- <output_build_files>False</output_build_files>
- <backup_source_files>False</backup_source_files>
- <main_source_file>interface.c</main_source_file>
- <main_header_file>interface.h</main_header_file>
- <handler_source_file>callbacks.c</handler_source_file>
- <handler_header_file>callbacks.h</handler_header_file>
- <support_source_file>support.c</support_source_file>
- <support_header_file>support.h</support_header_file>
-</project>
-
-<widget>
- <class>GtkWindow</class>
- <name>window1</name>
- <title>window1</title>
- <type>GTK_WINDOW_TOPLEVEL</type>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>True</allow_grow>
- <auto_shrink>False</auto_shrink>
-
- <widget>
- <class>GtkTable</class>
- <name>table1</name>
- <rows>3</rows>
- <columns>3</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>0</row_spacing>
- <column_spacing>0</column_spacing>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame1</name>
- <border_width>4</border_width>
- <label>Available fields</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>True</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow1</name>
- <hscrollbar_policy>GTK_POLICY_ALWAYS</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_ALWAYS</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
-
- <widget>
- <class>GtkCList</class>
- <name>clist1</name>
- <can_focus>True</can_focus>
- <columns>1</columns>
- <column_widths>80</column_widths>
- <selection_mode>GTK_SELECTION_SINGLE</selection_mode>
- <show_titles>False</show_titles>
- <shadow_type>GTK_SHADOW_NONE</shadow_type>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>CList:title</child_name>
- <name>label1</name>
- <label>label1</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame2</name>
- <border_width>4</border_width>
- <label>Show in this order</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <left_attach>2</left_attach>
- <right_attach>3</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow2</name>
- <hscrollbar_policy>GTK_POLICY_ALWAYS</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_ALWAYS</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
-
- <widget>
- <class>GtkCList</class>
- <name>clist2</name>
- <can_focus>True</can_focus>
- <columns>1</columns>
- <column_widths>80</column_widths>
- <selection_mode>GTK_SELECTION_SINGLE</selection_mode>
- <show_titles>False</show_titles>
- <shadow_type>GTK_SHADOW_NONE</shadow_type>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>CList:title</child_name>
- <name>label2</name>
- <label>label2</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox1</name>
- <border_width>4</border_width>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>4</xpad>
- <ypad>4</ypad>
- <xexpand>True</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>False</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkButton</class>
- <name>button1</name>
- <border_width>4</border_width>
- <can_focus>True</can_focus>
- <label>Add &gt;&gt;</label>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button2</name>
- <border_width>4</border_width>
- <can_focus>True</can_focus>
- <label>&lt;&lt; Remove</label>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
-</widget>
-
-</GTK-Interface>
diff --git a/widgets/table/e-table-group.h b/widgets/table/e-table-group.h
deleted file mode 100644
index 18866b7ad5..0000000000
--- a/widgets/table/e-table-group.h
+++ /dev/null
@@ -1,151 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_GROUP_H_
-#define _E_TABLE_GROUP_H_
-
-#include <libgnomeui/gnome-canvas.h>
-#include <gal/e-table/e-table-model.h>
-#include <gal/e-table/e-table-header.h>
-#include <gal/e-table/e-table-sort-info.h>
-#include <gal/e-table/e-table-defines.h>
-#include <gal/util/e-util.h>
-#include <gal/widgets/e-printable.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_TABLE_GROUP_TYPE (e_table_group_get_type ())
-#define E_TABLE_GROUP(o) (GTK_CHECK_CAST ((o), E_TABLE_GROUP_TYPE, ETableGroup))
-#define E_TABLE_GROUP_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_GROUP_TYPE, ETableGroupClass))
-#define E_IS_TABLE_GROUP(o) (GTK_CHECK_TYPE ((o), E_TABLE_GROUP_TYPE))
-#define E_IS_TABLE_GROUP_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_GROUP_TYPE))
-
-typedef struct {
- GnomeCanvasGroup group;
-
- /*
- * The full header.
- */
- ETableHeader *full_header;
- ETableHeader *header;
-
- /*
- * The model we pull data from.
- */
- ETableModel *model;
-
- /*
- * Whether we should add indentation and open/close markers,
- * or if we just act as containers of subtables.
- */
- guint transparent : 1;
-
- guint has_focus : 1;
-
- guint frozen : 1;
-} ETableGroup;
-
-typedef struct {
- GnomeCanvasGroupClass parent_class;
-
- /* Signals */
- void (*cursor_change) (ETableGroup *etg, int row);
- void (*cursor_activated) (ETableGroup *etg, int row);
- void (*double_click) (ETableGroup *etg, int row, int col, GdkEvent *event);
- gint (*right_click) (ETableGroup *etg, int row, int col, GdkEvent *event);
- gint (*click) (ETableGroup *etg, int row, int col, GdkEvent *event);
- gint (*key_press) (ETableGroup *etg, int row, int col, GdkEvent *event);
-
- /* Virtual functions. */
- void (*add) (ETableGroup *etg, gint row);
- void (*add_array) (ETableGroup *etg, const int *array, int count);
- void (*add_all) (ETableGroup *etg);
- gboolean (*remove) (ETableGroup *etg, gint row);
- gint (*row_count) (ETableGroup *etg);
- void (*increment) (ETableGroup *etg, gint position, gint amount);
- void (*decrement) (ETableGroup *etg, gint position, gint amount);
- void (*set_focus) (ETableGroup *etg, EFocus direction, gint view_col);
- gboolean (*get_focus) (ETableGroup *etg);
- gint (*get_focus_column) (ETableGroup *etg);
- EPrintable *(*get_printable) (ETableGroup *etg);
- void (*compute_location) (ETableGroup *etg, int *x, int *y, int *row, int *col);
- void (*get_cell_geometry) (ETableGroup *etg, int *row, int *col, int *x, int *y, int *width, int *height);
-
-} ETableGroupClass;
-
-/* Virtual functions */
-void e_table_group_add (ETableGroup *etg,
- gint row);
-void e_table_group_add_array (ETableGroup *etg,
- const int *array,
- int count);
-void e_table_group_add_all (ETableGroup *etg);
-gboolean e_table_group_remove (ETableGroup *etg,
- gint row);
-void e_table_group_increment (ETableGroup *etg,
- gint position,
- gint amount);
-void e_table_group_decrement (ETableGroup *etg,
- gint position,
- gint amount);
-gint e_table_group_row_count (ETableGroup *etg);
-void e_table_group_set_focus (ETableGroup *etg,
- EFocus direction,
- gint view_col);
-gboolean e_table_group_get_focus (ETableGroup *etg);
-gint e_table_group_get_focus_column (ETableGroup *etg);
-ETableHeader *e_table_group_get_header (ETableGroup *etg);
-EPrintable *e_table_group_get_printable (ETableGroup *etg);
-void e_table_group_compute_location (ETableGroup *etg,
- int *x,
- int *y,
- int *row,
- int *col);
-void e_table_group_get_cell_geometry (ETableGroup *etg,
- int *row,
- int *col,
- int *x,
- int *y,
- int *width,
- int *height);
-ETableGroup *e_table_group_new (GnomeCanvasGroup *parent,
- ETableHeader *full_header,
- ETableHeader *header,
- ETableModel *model,
- ETableSortInfo *sort_info,
- int n);
-void e_table_group_construct (GnomeCanvasGroup *parent,
- ETableGroup *etg,
- ETableHeader *full_header,
- ETableHeader *header,
- ETableModel *model);
-
-/* For emitting the signals */
-void e_table_group_cursor_change (ETableGroup *etg,
- gint row);
-void e_table_group_cursor_activated (ETableGroup *etg,
- gint row);
-void e_table_group_double_click (ETableGroup *etg,
- gint row,
- gint col,
- GdkEvent *event);
-gint e_table_group_right_click (ETableGroup *etg,
- gint row,
- gint col,
- GdkEvent *event);
-gint e_table_group_click (ETableGroup *etg,
- gint row,
- gint col,
- GdkEvent *event);
-gint e_table_group_key_press (ETableGroup *etg,
- gint row,
- gint col,
- GdkEvent *event);
-GtkType e_table_group_get_type (void);
-
-typedef void (*ETableGroupLeafFn) (void *e_table_item, void *closure);
-void e_table_group_apply_to_leafs (ETableGroup *etg,
- ETableGroupLeafFn fn,
- void *closure);
-
-END_GNOME_DECLS
-
-#endif /* _E_TABLE_GROUP_H_ */
diff --git a/widgets/table/e-table-header-item.c b/widgets/table/e-table-header-item.c
deleted file mode 100644
index f811b3c04b..0000000000
--- a/widgets/table/e-table-header-item.c
+++ /dev/null
@@ -1,1602 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * E-table-column-view.c: A canvas item based view of the ETableColumn.
- *
- * Author:
- * Miguel de Icaza (miguel@gnu.org)
- *
- * Copyright 1999, 2000, 2001 Ximian, Inc.
- */
-#include <config.h>
-
-#include "e-table-header-item.h"
-
-#include <string.h>
-#include <gtk/gtksignal.h>
-#include <gtk/gtkdnd.h>
-#include <libgnomeui/gnome-canvas.h>
-#include <libgnomeui/gnome-canvas-util.h>
-#include <libgnomeui/gnome-canvas-polygon.h>
-#include <libgnomeui/gnome-canvas-rect-ellipse.h>
-#include <gdk-pixbuf/gdk-pixbuf.h>
-#include "gal/widgets/e-cursors.h"
-#include "gal/util/e-i18n.h"
-#include "gal/util/e-xml-utils.h"
-#include "gal/widgets/e-canvas.h"
-#include "gal/widgets/e-popup-menu.h"
-#include "e-table-header.h"
-#include "e-table-header-utils.h"
-#include "e-table-col-dnd.h"
-#include "e-table-defines.h"
-#include "e-table-field-chooser-dialog.h"
-#include "e-table-config.h"
-#include "e-table.h"
-
-#include "add-col.xpm"
-#include "remove-col.xpm"
-#include "arrow-up.xpm"
-#include "arrow-down.xpm"
-
-enum {
- BUTTON_PRESSED,
- LAST_SIGNAL
-};
-
-static guint ethi_signals [LAST_SIGNAL] = { 0, };
-
-#define ARROW_DOWN_HEIGHT 16
-#define ARROW_PTR 7
-
-/* Defines the tolerance for proximity of the column division to the cursor position */
-#define TOLERANCE 4
-
-#define ETHI_RESIZING(x) ((x)->resize_col != -1)
-
-#define PARENT_OBJECT_TYPE gnome_canvas_item_get_type ()
-
-#define ELEMENTS(x) (sizeof (x) / sizeof (x[0]))
-
-static GnomeCanvasItemClass *ethi_parent_class;
-
-static void ethi_drop_table_header (ETableHeaderItem *ethi);
-
-/*
- * They display the arrows for the drop location.
- */
-
-static GtkWidget *arrow_up, *arrow_down;
-
-/*
- * DnD icons
- */
-static GdkColormap *dnd_colormap;
-static GdkPixmap *remove_col_pixmap, *remove_col_mask;
-static GdkPixmap *add_col_pixmap, *add_col_mask;
-
-enum {
- ARG_0,
- ARG_TABLE_HEADER,
- ARG_FULL_HEADER,
- ARG_DND_CODE,
- ARG_TABLE_FONTSET,
- ARG_SORT_INFO,
- ARG_TABLE,
-};
-
-static void
-ethi_destroy (GtkObject *object){
- ETableHeaderItem *ethi = E_TABLE_HEADER_ITEM (object);
-
- ethi_drop_table_header (ethi);
-
- if (ethi->dnd_code) {
- g_free (ethi->dnd_code);
- ethi->dnd_code = NULL;
- }
-
- if (ethi->sort_info) {
- if (ethi->sort_info_changed_id)
- gtk_signal_disconnect (GTK_OBJECT(ethi->sort_info), ethi->sort_info_changed_id);
- if (ethi->group_info_changed_id)
- gtk_signal_disconnect (GTK_OBJECT(ethi->sort_info), ethi->group_info_changed_id);
- gtk_object_unref (GTK_OBJECT(ethi->sort_info));
- ethi->sort_info = NULL;
- }
-
- if (ethi->full_header)
- gtk_object_unref (GTK_OBJECT(ethi->full_header));
-
- if (ethi->config)
- gtk_object_destroy (GTK_OBJECT (ethi->config));
-
- if (GTK_OBJECT_CLASS (ethi_parent_class)->destroy)
- (*GTK_OBJECT_CLASS (ethi_parent_class)->destroy) (object);
-}
-
-static int
-e_table_header_item_get_height (ETableHeaderItem *ethi)
-{
- ETableHeader *eth;
- int numcols, col;
- int maxheight;
- GtkStyle *style;
-
- g_return_val_if_fail (ethi != NULL, 0);
- g_return_val_if_fail (E_IS_TABLE_HEADER_ITEM (ethi), 0);
-
- eth = ethi->eth;
- numcols = e_table_header_count (eth);
-
- maxheight = 0;
-
- style = GTK_WIDGET (GNOME_CANVAS_ITEM (ethi)->canvas)->style;
-
- for (col = 0; col < numcols; col++) {
- ETableCol *ecol = e_table_header_get_column (eth, col);
- int height;
-
- height = e_table_header_compute_height (ecol, style, ethi->font);
-
- if (height > maxheight)
- maxheight = height;
- }
-
- return maxheight;
-}
-
-static void
-ethi_update (GnomeCanvasItem *item, double *affine, ArtSVP *clip_path, int flags)
-{
- ETableHeaderItem *ethi = E_TABLE_HEADER_ITEM (item);
-
- double i2c [6];
- ArtPoint c1, c2, i1, i2;
-
- if (GNOME_CANVAS_ITEM_CLASS (ethi_parent_class)->update)
- (*GNOME_CANVAS_ITEM_CLASS (ethi_parent_class)->update)(item, affine, clip_path, flags);
-
-
- if (ethi->sort_info)
- ethi->group_indent_width = e_table_sort_info_grouping_get_count(ethi->sort_info) * GROUP_INDENT;
- else
- ethi->group_indent_width = 0;
-
- ethi->width = e_table_header_total_width (ethi->eth) + ethi->group_indent_width;
-
- i1.x = i1.y = 0;
- i2.x = ethi->width;
- i2.y = ethi->height;
-
- gnome_canvas_item_i2c_affine (item, i2c);
- art_affine_point (&c1, &i1, i2c);
- art_affine_point (&c2, &i2, i2c);
-
- if (item->x1 != c1.x ||
- item->y1 != c1.y ||
- item->x2 != c2.x ||
- item->y2 != c2.y)
- {
- gnome_canvas_request_redraw (item->canvas, item->x1, item->y1, item->x2, item->y2);
- item->x1 = c1.x;
- item->y1 = c1.y;
- item->x2 = c2.x;
- item->y2 = c2.y;
-
- gnome_canvas_group_child_bounds (GNOME_CANVAS_GROUP (item->parent), item);
- }
- gnome_canvas_request_redraw (item->canvas, item->x1, item->y1, item->x2, item->y2);
-}
-
-static void
-ethi_font_set (ETableHeaderItem *ethi, GdkFont *font)
-{
- if (ethi->font)
- gdk_font_unref (ethi->font);
-
- ethi->font = font;
-
- ethi->height = e_table_header_item_get_height (ethi);
- e_canvas_item_request_reflow(GNOME_CANVAS_ITEM(ethi));
-}
-
-static void
-ethi_font_load (ETableHeaderItem *ethi, char *fontname)
-{
- GdkFont *font;
-
- font = gdk_fontset_load (fontname);
- if (font == NULL)
- font = gdk_font_load ("-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1");
-
- ethi_font_set (ethi, font);
-}
-
-static void
-ethi_drop_table_header (ETableHeaderItem *ethi)
-{
- GtkObject *header;
-
- if (!ethi->eth)
- return;
-
- header = GTK_OBJECT (ethi->eth);
- gtk_signal_disconnect (header, ethi->structure_change_id);
- gtk_signal_disconnect (header, ethi->dimension_change_id);
-
- gtk_object_unref (header);
- ethi->eth = NULL;
- ethi->width = 0;
-}
-
-static void
-structure_changed (ETableHeader *header, ETableHeaderItem *ethi)
-{
- gnome_canvas_item_request_update(GNOME_CANVAS_ITEM(ethi));
-}
-
-static void
-dimension_changed (ETableHeader *header, int col, ETableHeaderItem *ethi)
-{
- gnome_canvas_item_request_update(GNOME_CANVAS_ITEM(ethi));
-}
-
-static void
-ethi_add_table_header (ETableHeaderItem *ethi, ETableHeader *header)
-{
- ethi->eth = header;
- gtk_object_ref (GTK_OBJECT (ethi->eth));
-
- ethi->height = e_table_header_item_get_height (ethi);
-
- ethi->structure_change_id = gtk_signal_connect (
- GTK_OBJECT (header), "structure_change",
- GTK_SIGNAL_FUNC(structure_changed), ethi);
- ethi->dimension_change_id = gtk_signal_connect (
- GTK_OBJECT (header), "dimension_change",
- GTK_SIGNAL_FUNC(dimension_changed), ethi);
- e_canvas_item_request_reflow(GNOME_CANVAS_ITEM(ethi));
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM(ethi));
-}
-
-static void
-ethi_sort_info_changed (ETableSortInfo *sort_info, ETableHeaderItem *ethi)
-{
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM(ethi));
-}
-
-static void
-ethi_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- GnomeCanvasItem *item;
- ETableHeaderItem *ethi;
-
- item = GNOME_CANVAS_ITEM (o);
- ethi = E_TABLE_HEADER_ITEM (o);
-
- switch (arg_id){
- case ARG_TABLE_HEADER:
- ethi_drop_table_header (ethi);
- ethi_add_table_header (ethi, E_TABLE_HEADER(GTK_VALUE_OBJECT (*arg)));
- break;
-
- case ARG_FULL_HEADER:
- if (ethi->full_header)
- gtk_object_unref(GTK_OBJECT(ethi->full_header));
- ethi->full_header = E_TABLE_HEADER(GTK_VALUE_OBJECT (*arg));
- if (ethi->full_header)
- gtk_object_ref(GTK_OBJECT(ethi->full_header));
- break;
-
- case ARG_DND_CODE:
- g_free(ethi->dnd_code);
- ethi->dnd_code = g_strdup (GTK_VALUE_STRING (*arg));
- break;
-
- case ARG_TABLE_FONTSET:
- ethi_font_load (ethi, GTK_VALUE_STRING (*arg));
- break;
-
- case ARG_SORT_INFO:
- if (ethi->sort_info){
- if (ethi->sort_info_changed_id)
- gtk_signal_disconnect (
- GTK_OBJECT(ethi->sort_info),
- ethi->sort_info_changed_id);
-
- if (ethi->group_info_changed_id)
- gtk_signal_disconnect (
- GTK_OBJECT(ethi->sort_info),
- ethi->group_info_changed_id);
- gtk_object_unref (GTK_OBJECT(ethi->sort_info));
- }
- ethi->sort_info = GTK_VALUE_POINTER (*arg);
- gtk_object_ref (GTK_OBJECT(ethi->sort_info));
- ethi->sort_info_changed_id =
- gtk_signal_connect (
- GTK_OBJECT(ethi->sort_info), "sort_info_changed",
- GTK_SIGNAL_FUNC(ethi_sort_info_changed), ethi);
- ethi->group_info_changed_id =
- gtk_signal_connect (
- GTK_OBJECT(ethi->sort_info), "group_info_changed",
- GTK_SIGNAL_FUNC(ethi_sort_info_changed), ethi);
- break;
- case ARG_TABLE:
- if (GTK_VALUE_OBJECT(*arg))
- ethi->table = E_TABLE(GTK_VALUE_OBJECT(*arg));
- else
- ethi->table = NULL;
- break;
- }
- gnome_canvas_item_request_update(item);
-}
-
-static void
-ethi_get_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- ETableHeaderItem *ethi;
-
- ethi = E_TABLE_HEADER_ITEM (o);
-
- switch (arg_id){
- case ARG_FULL_HEADER:
- GTK_VALUE_OBJECT (*arg) = GTK_OBJECT (ethi->full_header);
- break;
- case ARG_DND_CODE:
- GTK_VALUE_STRING (*arg) = g_strdup (ethi->dnd_code);
- break;
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
-
-static int
-ethi_find_col_by_x (ETableHeaderItem *ethi, int x)
-{
- const int cols = e_table_header_count (ethi->eth);
- int x1 = 0;
- int col;
-
- if (x < x1)
- return -1;
-
- x1 += ethi->group_indent_width;
-
- for (col = 0; col < cols; col++){
- ETableCol *ecol = e_table_header_get_column (ethi->eth, col);
-
- if ((x >= x1) && (x <= x1 + ecol->width))
- return col;
-
- x1 += ecol->width;
- }
- return -1;
-}
-
-static int
-ethi_find_col_by_x_nearest (ETableHeaderItem *ethi, int x)
-{
- const int cols = e_table_header_count (ethi->eth);
- int x1 = 0;
- int col;
-
- if (x < x1)
- return -1;
-
- x1 += ethi->group_indent_width;
-
- for (col = 0; col < cols; col++){
- ETableCol *ecol = e_table_header_get_column (ethi->eth, col);
-
- x1 += (ecol->width / 2);
-
- if (x <= x1)
- return col;
-
- x1 += (ecol->width + 1) / 2;
- }
- return col;
-}
-
-static void
-ethi_remove_drop_marker (ETableHeaderItem *ethi)
-{
- if (ethi->drag_mark == -1)
- return;
-
- gtk_widget_hide (arrow_up);
- gtk_widget_hide (arrow_down);
-
- ethi->drag_mark = -1;
-}
-
-static GtkWidget *
-make_shaped_window_from_xpm (const char **xpm)
-{
- GdkPixbuf *pixbuf;
- GdkPixmap *pixmap;
- GdkBitmap *bitmap;
- GtkWidget *win, *pix;
-
- pixbuf = gdk_pixbuf_new_from_xpm_data (xpm);
- gdk_pixbuf_render_pixmap_and_mask (pixbuf, &pixmap, &bitmap, 128);
- gdk_pixbuf_unref (pixbuf);
-
- gtk_widget_push_visual (gdk_rgb_get_visual ());
- gtk_widget_push_colormap (gdk_rgb_get_cmap ());
- win = gtk_window_new (GTK_WINDOW_POPUP);
- pix = gtk_pixmap_new (pixmap, bitmap);
- gtk_widget_realize (win);
- gtk_container_add (GTK_CONTAINER (win), pix);
- gtk_widget_shape_combine_mask (win, bitmap, 0, 0);
- gtk_widget_pop_visual ();
- gtk_widget_pop_colormap ();
-
- gdk_pixmap_unref (pixmap);
- gdk_bitmap_unref (bitmap);
-
- return win;
-}
-
-static void
-ethi_add_drop_marker (ETableHeaderItem *ethi, int col)
-{
- int rx, ry;
- int x;
-
- if (ethi->drag_mark == col)
- return;
-
- ethi->drag_mark = col;
-
- x = e_table_header_col_diff (ethi->eth, 0, col);
- if (col > 0)
- x += ethi->group_indent_width;
-
- if (!arrow_up){
- arrow_up = make_shaped_window_from_xpm (arrow_up_xpm);
- arrow_down = make_shaped_window_from_xpm (arrow_down_xpm);
- }
-
- gdk_window_get_origin (
- GTK_WIDGET (GNOME_CANVAS_ITEM (ethi)->canvas)->window,
- &rx, &ry);
-
- gtk_widget_set_uposition (arrow_down, rx + x - ARROW_PTR, ry - ARROW_DOWN_HEIGHT);
- gtk_widget_show_all (arrow_down);
-
- gtk_widget_set_uposition (arrow_up, rx + x - ARROW_PTR, ry + ethi->height);
- gtk_widget_show_all (arrow_up);
-}
-
-#define gray50_width 2
-#define gray50_height 2
-static char gray50_bits [] = {
- 0x02, 0x01, };
-
-static void
-ethi_add_destroy_marker (ETableHeaderItem *ethi)
-{
- double x1;
-
- if (ethi->remove_item)
- gtk_object_destroy (GTK_OBJECT (ethi->remove_item));
-
- if (!ethi->stipple)
- ethi->stipple = gdk_bitmap_create_from_data (
- NULL, gray50_bits, gray50_width, gray50_height);
-
- x1 = (double) e_table_header_col_diff (ethi->eth, 0, ethi->drag_col);
- if (ethi->drag_col > 0)
- x1 += ethi->group_indent_width;
-
- ethi->remove_item = gnome_canvas_item_new (
- GNOME_CANVAS_GROUP (GNOME_CANVAS_ITEM (ethi)->canvas->root),
- gnome_canvas_rect_get_type (),
- "x1", x1 + 1,
- "y1", (double) 1,
- "x2", (double) x1 + e_table_header_col_diff (
- ethi->eth, ethi->drag_col, ethi->drag_col+1) - 2,
-
- "y2", (double) ethi->height - 2,
- "fill_color", "red",
- "fill_stipple", ethi->stipple,
- NULL);
-}
-
-static void
-ethi_remove_destroy_marker (ETableHeaderItem *ethi)
-{
- if (!ethi->remove_item)
- return;
-
- gtk_object_destroy (GTK_OBJECT (ethi->remove_item));
- ethi->remove_item = NULL;
-}
-
-#if 0
-static gboolean
-moved (ETableHeaderItem *ethi, guint col, guint model_col)
-{
- if (col == -1)
- return TRUE;
- ecol = e_table_header_get_column (ethi->eth, col);
- if (ecol->col_idx == model_col)
- return FALSE;
- if (col > 0) {
- ecol = e_table_header_get_column (ethi->eth, col - 1);
- if (ecol->col_idx == model_col)
- return FALSE;
- }
- return TRUE;
-}
-#endif
-
-static gboolean
-ethi_drag_motion (GtkObject *canvas, GdkDragContext *context,
- gint x, gint y, guint time,
- ETableHeaderItem *ethi)
-{
- char *droptype, *headertype;
-
- gdk_drag_status (context, 0, time);
-
- droptype = gdk_atom_name (GPOINTER_TO_INT (context->targets->data));
- headertype = g_strdup_printf ("%s-%s", TARGET_ETABLE_COL_TYPE,
- ethi->dnd_code);
-
- if (strcmp (droptype, headertype) != 0) {
- g_free (headertype);
- return FALSE;
- }
-
- g_free (headertype);
-
- if ((x >= 0) && (x <= (ethi->width)) &&
- (y >= 0) && (y <= (ethi->height))){
- int col;
-
- col = ethi_find_col_by_x_nearest (ethi, x);
-
- if (col == ethi->drag_col || col == ethi->drag_col + 1) {
- if (ethi->drag_col != -1)
- ethi_remove_destroy_marker (ethi);
-
- ethi_remove_drop_marker (ethi);
- gdk_drag_status (context, context->suggested_action, time);
- }
- else if (col != -1){
- if (ethi->drag_col != -1)
- ethi_remove_destroy_marker (ethi);
-
- ethi_add_drop_marker (ethi, col);
- gdk_drag_status (context, context->suggested_action, time);
- } else {
- ethi_remove_drop_marker (ethi);
- if (ethi->drag_col != -1)
- ethi_add_destroy_marker (ethi);
- }
- } else {
- ethi_remove_drop_marker (ethi);
- if (ethi->drag_col != -1)
- ethi_add_destroy_marker (ethi);
- }
-
- return TRUE;
-}
-
-static void
-ethi_drag_end (GtkWidget *canvas, GdkDragContext *context, ETableHeaderItem *ethi)
-{
- if (context->action == 0) {
- e_table_header_remove (ethi->eth, ethi->drag_col);
- gnome_canvas_item_request_update(GNOME_CANVAS_ITEM(ethi));
- }
- ethi_remove_drop_marker (ethi);
- ethi_remove_destroy_marker (ethi);
- ethi->drag_col = -1;
-}
-
-static void
-ethi_drag_data_received (GtkWidget *canvas,
- GdkDragContext *drag_context,
- gint x,
- gint y,
- GtkSelectionData *data,
- guint info,
- guint time,
- ETableHeaderItem *ethi)
-{
- int found = FALSE;
- int count = e_table_header_count(ethi->eth);
- int column = atoi(data->data);
- int drop_col = ethi->drop_col;
- int i;
- ethi->drop_col = -1;
-
- if (column < 0)
- return;
- for (i = 0; i < count; i++) {
- ETableCol *ecol = e_table_header_get_column (ethi->eth, i);
- if (ecol->col_idx == column) {
- e_table_header_move(ethi->eth, i, drop_col);
- found = TRUE;
- break;
- }
- }
- if (!found) {
- count = e_table_header_count(ethi->full_header);
- for (i = 0; i < count; i++) {
- ETableCol *ecol = e_table_header_get_column (ethi->full_header, i);
- if (ecol->col_idx == column) {
- e_table_header_add_column (ethi->eth, ecol, drop_col);
- break;
- }
- }
- }
- ethi_remove_drop_marker (ethi);
- gnome_canvas_item_request_update(GNOME_CANVAS_ITEM(ethi));
-}
-
-static void
-ethi_drag_data_get (GtkWidget *canvas,
- GdkDragContext *context,
- GtkSelectionData *selection_data,
- guint info,
- guint time,
- ETableHeaderItem *ethi)
-{
- if (ethi->drag_col != -1) {
- ETableCol *ecol = e_table_header_get_column (ethi->eth, ethi->drag_col);
-
- gchar *string = g_strdup_printf("%d", ecol->col_idx);
- gtk_selection_data_set(selection_data,
- GDK_SELECTION_TYPE_STRING,
- sizeof(string[0]),
- string,
- strlen(string));
- g_free(string);
- }
-}
-
-static gboolean
-ethi_drag_drop (GtkWidget *canvas,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time,
- ETableHeaderItem *ethi)
-{
- gboolean successful = FALSE;
-
- if ((x >= 0) && (x <= (ethi->width)) &&
- (y >= 0) && (y <= (ethi->height))){
- int col;
-
- col = ethi_find_col_by_x_nearest (ethi, x);
-
- ethi_add_drop_marker (ethi, col);
-
- ethi->drop_col = col;
-
- if (col != -1) {
- char *target = g_strdup_printf ("%s-%s", TARGET_ETABLE_COL_TYPE, ethi->dnd_code);
- gtk_drag_get_data (canvas, context, gdk_atom_intern(target, FALSE), time);
- g_free (target);
- }
- }
- gtk_drag_finish (context, successful, successful, time);
- return successful;
-}
-
-static void
-ethi_drag_leave (GtkWidget *widget, GdkDragContext *context, guint time, ETableHeaderItem *ethi)
-{
- ethi_remove_drop_marker (ethi);
- if (ethi->drag_col != -1)
- ethi_add_destroy_marker (ethi);
-}
-
-static void
-ethi_realize (GnomeCanvasItem *item)
-{
- ETableHeaderItem *ethi = E_TABLE_HEADER_ITEM (item);
- GdkWindow *window;
- GdkColor c;
- GtkTargetEntry ethi_drop_types [] = {
- { TARGET_ETABLE_COL_TYPE, 0, TARGET_ETABLE_COL_HEADER },
- };
-
-
- if (GNOME_CANVAS_ITEM_CLASS (ethi_parent_class)-> realize)
- (*GNOME_CANVAS_ITEM_CLASS (ethi_parent_class)->realize)(item);
-
- window = GTK_WIDGET (item->canvas)->window;
-
- ethi->gc = gdk_gc_new (window);
- gnome_canvas_get_color (item->canvas, "black", &c);
- gdk_gc_set_foreground (ethi->gc, &c);
-
- if (!ethi->font)
- ethi_font_set (ethi, GTK_WIDGET (item->canvas)->style->font);
-
- /*
- * Now, configure DnD
- */
- ethi_drop_types[0].target = g_strdup_printf("%s-%s", ethi_drop_types[0].target, ethi->dnd_code);
- gtk_drag_dest_set (GTK_WIDGET (item->canvas), 0,
- ethi_drop_types, ELEMENTS (ethi_drop_types),
- GDK_ACTION_MOVE);
- g_free(ethi_drop_types[0].target);
-
- /* Drop signals */
- ethi->drag_motion_id = gtk_signal_connect (GTK_OBJECT (item->canvas), "drag_motion",
- GTK_SIGNAL_FUNC (ethi_drag_motion), ethi);
- ethi->drag_leave_id = gtk_signal_connect (GTK_OBJECT (item->canvas), "drag_leave",
- GTK_SIGNAL_FUNC (ethi_drag_leave), ethi);
- ethi->drag_drop_id = gtk_signal_connect (GTK_OBJECT (item->canvas), "drag_drop",
- GTK_SIGNAL_FUNC (ethi_drag_drop), ethi);
- ethi->drag_data_received_id = gtk_signal_connect (GTK_OBJECT (item->canvas), "drag_data_received",
- GTK_SIGNAL_FUNC (ethi_drag_data_received), ethi);
-
- /* Drag signals */
- ethi->drag_end_id = gtk_signal_connect (GTK_OBJECT (item->canvas), "drag_end",
- GTK_SIGNAL_FUNC (ethi_drag_end), ethi);
- ethi->drag_data_get_id = gtk_signal_connect (GTK_OBJECT (item->canvas), "drag_data_get",
- GTK_SIGNAL_FUNC (ethi_drag_data_get), ethi);
-
-}
-
-static void
-ethi_unrealize (GnomeCanvasItem *item)
-{
- ETableHeaderItem *ethi = E_TABLE_HEADER_ITEM (item);
-
- gdk_gc_unref (ethi->gc);
- ethi->gc = NULL;
-
- gtk_signal_disconnect (GTK_OBJECT (item->canvas), ethi->drag_motion_id);
- gtk_signal_disconnect (GTK_OBJECT (item->canvas), ethi->drag_leave_id);
- gtk_signal_disconnect (GTK_OBJECT (item->canvas), ethi->drag_drop_id);
- gtk_signal_disconnect (GTK_OBJECT (item->canvas), ethi->drag_data_received_id);
-
- gtk_signal_disconnect (GTK_OBJECT (item->canvas), ethi->drag_end_id);
- gtk_signal_disconnect (GTK_OBJECT (item->canvas), ethi->drag_data_get_id);
-
- if (ethi->stipple){
- gdk_bitmap_unref (ethi->stipple);
- ethi->stipple = NULL;
- }
-
- if (GNOME_CANVAS_ITEM_CLASS (ethi_parent_class)->unrealize)
- (*GNOME_CANVAS_ITEM_CLASS (ethi_parent_class)->unrealize)(item);
-}
-
-static void
-ethi_draw (GnomeCanvasItem *item, GdkDrawable *drawable, int x, int y, int width, int height)
-{
- ETableHeaderItem *ethi = E_TABLE_HEADER_ITEM (item);
- GnomeCanvas *canvas = item->canvas;
- const int cols = e_table_header_count (ethi->eth);
- int x1, x2;
- int col;
- GHashTable *arrows = g_hash_table_new (NULL, NULL);
-
-
- if (ethi->sort_info) {
- int length = e_table_sort_info_grouping_get_count(ethi->sort_info);
- int i;
- for (i = 0; i < length; i++) {
- ETableSortColumn column = e_table_sort_info_grouping_get_nth(ethi->sort_info, i);
- g_hash_table_insert (arrows,
- (gpointer) column.column,
- (gpointer) (column.ascending ?
- E_TABLE_COL_ARROW_UP :
- E_TABLE_COL_ARROW_DOWN));
- }
- length = e_table_sort_info_sorting_get_count(ethi->sort_info);
- for (i = 0; i < length; i++) {
- ETableSortColumn column = e_table_sort_info_sorting_get_nth(ethi->sort_info, i);
- g_hash_table_insert (arrows,
- (gpointer) column.column,
- (gpointer) (column.ascending ?
- E_TABLE_COL_ARROW_UP :
- E_TABLE_COL_ARROW_DOWN));
- }
- }
-
- ethi->width = e_table_header_total_width (ethi->eth) + ethi->group_indent_width;
- x1 = x2 = 0;
- x2 += ethi->group_indent_width;
- for (col = 0; col < cols; col++, x1 = x2){
- ETableCol *ecol = e_table_header_get_column (ethi->eth, col);
- int col_width;
-
- col_width = ecol->width;
-
- x2 += col_width;
-
- if (x1 > (x + width))
- break;
-
- if (x2 < x)
- continue;
-
- if (x2 <= x1)
- continue;
-
- e_table_header_draw_button (drawable, ecol,
- GTK_WIDGET (canvas)->style, ethi->font,
- GTK_WIDGET_STATE (canvas),
- GTK_WIDGET (canvas), ethi->gc,
- x1 - x, -y,
- width, height,
- x2 - x1, ethi->height,
- (ETableColArrow) g_hash_table_lookup (
- arrows, (gpointer) ecol->col_idx));
- }
-
- g_hash_table_destroy (arrows);
-}
-
-static double
-ethi_point (GnomeCanvasItem *item, double x, double y, int cx, int cy,
- GnomeCanvasItem **actual_item)
-{
- *actual_item = item;
- return 0.0;
-}
-
-/*
- * is_pointer_on_division:
- *
- * Returns whether @pos is a column header division; If @the_total is not NULL,
- * then the actual position is returned here. If @return_ecol is not NULL,
- * then the ETableCol that actually contains this point is returned here
- */
-static gboolean
-is_pointer_on_division (ETableHeaderItem *ethi, int pos, int *the_total, int *return_col)
-{
- const int cols = e_table_header_count (ethi->eth);
- int col, total;
-
- total = 0;
- for (col = 0; col < cols; col++){
- ETableCol *ecol = e_table_header_get_column (ethi->eth, col);
-
- if (col == 0)
- total += ethi->group_indent_width;
-
- total += ecol->width;
-
- if ((total - TOLERANCE < pos)&& (pos < total + TOLERANCE)){
- if (return_col)
- *return_col = col;
- if (the_total)
- *the_total = total;
-
- return TRUE;
- }
-
- if (total > pos + TOLERANCE)
- return FALSE;
- }
-
- return FALSE;
-}
-
-#define convert(c,sx,sy,x,y) gnome_canvas_w2c (c,sx,sy,x,y)
-
-static void
-set_cursor (ETableHeaderItem *ethi, int pos)
-{
- int col;
- GtkWidget *canvas = GTK_WIDGET (GNOME_CANVAS_ITEM (ethi)->canvas);
- gboolean resizable = FALSE;
-
- /* We might be invoked before we are realized */
- if (!canvas->window)
- return;
-
- if (is_pointer_on_division (ethi, pos, NULL, &col)) {
- int last_col = ethi->eth->col_count - 1;
- ETableCol *ecol = e_table_header_get_column (ethi->eth, col);
-
- /* Last column is not resizable */
- if (ecol->resizable && col != last_col) {
- int c = col + 1;
-
- /* Column is not resizable if all columns after it
- are also not resizable */
- for (; c <= last_col; c++){
- ETableCol *ecol2;
-
- ecol2 = e_table_header_get_column (ethi->eth, c);
- if (ecol2->resizable) {
- resizable = TRUE;
- break;
- }
- }
- }
- }
-
- if (resizable)
- e_cursor_set (canvas->window, E_CURSOR_SIZE_X);
- else
- gdk_window_set_cursor (canvas->window, NULL);
- /* e_cursor_set (canvas->window, E_CURSOR_ARROW);*/
-}
-
-static void
-ethi_end_resize (ETableHeaderItem *ethi)
-{
- ethi->resize_col = -1;
- ethi->resize_guide = GINT_TO_POINTER (0);
-
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM(ethi));
-}
-
-static gboolean
-ethi_maybe_start_drag (ETableHeaderItem *ethi, GdkEventMotion *event)
-{
- if (!ethi->maybe_drag)
- return FALSE;
-
- if (ethi->eth->col_count < 2) {
- ethi->maybe_drag = FALSE;
- return FALSE;
- }
-
- if (MAX (abs (ethi->click_x - event->x),
- abs (ethi->click_y - event->y)) <= 3)
- return FALSE;
-
- return TRUE;
-}
-
-static void
-ethi_start_drag (ETableHeaderItem *ethi, GdkEvent *event)
-{
- GtkWidget *widget = GTK_WIDGET (GNOME_CANVAS_ITEM (ethi)->canvas);
- GtkTargetList *list;
- GdkDragContext *context;
- ETableCol *ecol;
- int col_width;
- GdkPixmap *pixmap;
- int group_indent = 0;
- GHashTable *arrows = g_hash_table_new (NULL, NULL);
-
- GtkTargetEntry ethi_drag_types [] = {
- { TARGET_ETABLE_COL_TYPE, 0, TARGET_ETABLE_COL_HEADER },
- };
-
- ethi->drag_col = ethi_find_col_by_x (ethi, event->motion.x);
-
- if (ethi->drag_col == -1)
- return;
-
- if (ethi->sort_info) {
- int length = e_table_sort_info_grouping_get_count(ethi->sort_info);
- int i;
- for (i = 0; i < length; i++) {
- ETableSortColumn column =
- e_table_sort_info_grouping_get_nth(
- ethi->sort_info, i);
- group_indent ++;
- g_hash_table_insert (
- arrows,
- (gpointer) column.column,
- (gpointer) (column.ascending ?
- E_TABLE_COL_ARROW_UP :
- E_TABLE_COL_ARROW_DOWN));
- }
- length = e_table_sort_info_sorting_get_count(ethi->sort_info);
- for (i = 0; i < length; i++) {
- ETableSortColumn column =
- e_table_sort_info_sorting_get_nth (
- ethi->sort_info, i);
-
- g_hash_table_insert (
- arrows,
- (gpointer) column.column,
- (gpointer) (column.ascending ?
- E_TABLE_COL_ARROW_UP :
- E_TABLE_COL_ARROW_DOWN));
- }
- }
-
- ethi_drag_types[0].target = g_strdup_printf(
- "%s-%s", ethi_drag_types[0].target, ethi->dnd_code);
- list = gtk_target_list_new (
- ethi_drag_types, ELEMENTS (ethi_drag_types));
- context = gtk_drag_begin (widget, list, GDK_ACTION_MOVE, 1, event);
- g_free(ethi_drag_types[0].target);
-
- ecol = e_table_header_get_column (ethi->eth, ethi->drag_col);
- col_width = ecol->width;
- pixmap = gdk_pixmap_new (widget->window, col_width, ethi->height, -1);
-
- e_table_header_draw_button (
- pixmap, ecol,
- widget->style, ethi->font,
- GTK_WIDGET_STATE (widget),
- widget, ethi->gc,
- 0, 0,
- col_width, ethi->height,
- col_width, ethi->height,
- (ETableColArrow) g_hash_table_lookup (
- arrows, (gpointer) ecol->col_idx));
- gtk_drag_set_icon_pixmap (
- context,
- gdk_window_get_colormap (widget->window),
- pixmap,
- NULL,
- col_width / 2,
- ethi->height / 2);
- gdk_pixmap_unref (pixmap);
-
- ethi->maybe_drag = FALSE;
- g_hash_table_destroy (arrows);
-}
-
-typedef struct {
- ETableHeaderItem *ethi;
- int col;
-} EthiHeaderInfo;
-
-static void
-ethi_popup_sort_ascending(GtkWidget *widget, EthiHeaderInfo *info)
-{
- ETableCol *col;
- int model_col;
- int length;
- int i;
- int found = FALSE;
- ETableHeaderItem *ethi = info->ethi;
-
- col = e_table_header_get_column (ethi->eth, info->col);
- model_col = col->col_idx;
-
- length = e_table_sort_info_grouping_get_count(ethi->sort_info);
- for (i = 0; i < length; i++) {
- ETableSortColumn column = e_table_sort_info_grouping_get_nth (
- ethi->sort_info, i);
-
- if (model_col == column.column){
- column.ascending = 1;
- e_table_sort_info_grouping_set_nth (
- ethi->sort_info, i, column);
- found = 1;
- break;
- }
- }
- if (!found) {
- length = e_table_sort_info_sorting_get_count (
- ethi->sort_info);
- for (i = 0; i < length; i++) {
- ETableSortColumn column =
- e_table_sort_info_sorting_get_nth(
- ethi->sort_info, i);
- if (model_col == column.column){
- column.ascending = 1;
- e_table_sort_info_sorting_set_nth (
- ethi->sort_info, i, column);
- found = 1;
- break;
- }
- }
- }
- if (!found) {
- ETableSortColumn column;
- column.column = model_col;
- column.ascending = 1;
- length = e_table_sort_info_sorting_get_count(ethi->sort_info);
- if (length == 0)
- length++;
- e_table_sort_info_sorting_set_nth(ethi->sort_info, length - 1, column);
- }
-}
-
-static void
-ethi_popup_sort_descending(GtkWidget *widget, EthiHeaderInfo *info)
-{
- ETableCol *col;
- int model_col;
- int length;
- int i;
- int found = FALSE;
- ETableHeaderItem *ethi = info->ethi;
-
- col = e_table_header_get_column (ethi->eth, info->col);
- model_col = col->col_idx;
-
- length = e_table_sort_info_grouping_get_count(ethi->sort_info);
- for (i = 0; i < length; i++) {
- ETableSortColumn column = e_table_sort_info_grouping_get_nth(
- ethi->sort_info, i);
- if (model_col == column.column){
- column.ascending = 0;
- e_table_sort_info_grouping_set_nth(
- ethi->sort_info, i, column);
- found = 1;
- break;
- }
- }
- if (!found) {
- length = e_table_sort_info_sorting_get_count (ethi->sort_info);
- for (i = 0; i < length; i++) {
- ETableSortColumn column =
- e_table_sort_info_sorting_get_nth(
- ethi->sort_info, i);
-
- if (model_col == column.column){
- column.ascending = 0;
- e_table_sort_info_sorting_set_nth (
- ethi->sort_info, i, column);
- found = 1;
- break;
- }
- }
- }
- if (!found) {
- ETableSortColumn column;
- column.column = model_col;
- column.ascending = 0;
- length = e_table_sort_info_sorting_get_count (ethi->sort_info);
- if (length == 0)
- length++;
- e_table_sort_info_sorting_set_nth (
- ethi->sort_info, length - 1, column);
- }
-}
-
-static void
-ethi_popup_unsort(GtkWidget *widget, EthiHeaderInfo *info)
-{
- ETableHeaderItem *ethi = info->ethi;
-
- e_table_sort_info_grouping_truncate(ethi->sort_info, 0);
- e_table_sort_info_sorting_truncate(ethi->sort_info, 0);
-}
-
-static void
-ethi_popup_group_field(GtkWidget *widget, EthiHeaderInfo *info)
-{
- ETableCol *col;
- int model_col;
- ETableHeaderItem *ethi = info->ethi;
- ETableSortColumn column;
-
- col = e_table_header_get_column (ethi->eth, info->col);
- model_col = col->col_idx;
-
- column.column = model_col;
- column.ascending = 1;
- e_table_sort_info_grouping_set_nth(ethi->sort_info, 0, column);
- e_table_sort_info_grouping_truncate(ethi->sort_info, 1);
-}
-
-static void
-ethi_popup_group_box(GtkWidget *widget, EthiHeaderInfo *info)
-{
-}
-
-static void
-ethi_popup_remove_column(GtkWidget *widget, EthiHeaderInfo *info)
-{
- e_table_header_remove(info->ethi->eth, info->col);
-}
-
-static void
-ethi_popup_field_chooser(GtkWidget *widget, EthiHeaderInfo *info)
-{
- GtkWidget *etfcd = e_table_field_chooser_dialog_new();
- gtk_object_set(GTK_OBJECT(etfcd),
- "full_header", info->ethi->full_header,
- "dnd_code", info->ethi->dnd_code,
- NULL);
- gtk_widget_show(etfcd);
-}
-
-static void
-ethi_popup_alignment(GtkWidget *widget, EthiHeaderInfo *info)
-{
-}
-
-static void
-ethi_popup_best_fit(GtkWidget *widget, EthiHeaderInfo *info)
-{
- ETableHeaderItem *ethi = info->ethi;
- int width;
-
- gtk_signal_emit_by_name (GTK_OBJECT (ethi->eth),
- "request_width",
- info->col, &width);
- /* Add 10 to stop it from "..."ing */
- e_table_header_set_size (ethi->eth, info->col, width + 10);
-
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM(ethi));
-
-}
-
-static void
-ethi_popup_format_columns(GtkWidget *widget, EthiHeaderInfo *info)
-{
-}
-
-static void
-config_destroyed (GtkObject *object, ETableHeaderItem *ethi)
-{
- ethi->config = NULL;
-}
-
-static void
-apply_changes (ETableConfig *config, ETableHeaderItem *ethi)
-{
- char *state = e_table_state_save_to_string (config->state);
-
- e_table_set_state (ethi->table, state);
- g_free (state);
-}
-
-static void
-ethi_popup_customize_view(GtkWidget *widget, EthiHeaderInfo *info)
-{
- ETableHeaderItem *ethi = info->ethi;
- ETableState *state;
-
- if (ethi->config)
- e_table_config_raise (E_TABLE_CONFIG (ethi->config));
- else {
- state = e_table_get_state_object(ethi->table);
-
- ethi->config = e_table_config_new (
- _("Configuring view: FIXME"),
- ethi->table->spec, state);
- gtk_signal_connect (
- GTK_OBJECT (ethi->config), "destroy",
- GTK_SIGNAL_FUNC (config_destroyed), ethi);
- gtk_signal_connect (
- GTK_OBJECT (ethi->config), "changed",
- GTK_SIGNAL_FUNC (apply_changes), ethi);
- }
-}
-
-/* Bit 1 is always disabled. */
-/* Bit 2 is disabled if not "sortable". */
-/* Bit 4 is disabled if we don't have a pointer to our table object. */
-static EPopupMenu ethi_context_menu [] = {
- { N_("Sort Ascending"), NULL, GTK_SIGNAL_FUNC(ethi_popup_sort_ascending), NULL, 2},
- { N_("Sort Descending"), NULL, GTK_SIGNAL_FUNC(ethi_popup_sort_descending), NULL, 2},
- { N_("Unsort"), NULL, GTK_SIGNAL_FUNC(ethi_popup_unsort), NULL, 0},
- { "", NULL, GTK_SIGNAL_FUNC(NULL), NULL, 0},
- { N_("Group By This Field"), NULL, GTK_SIGNAL_FUNC(ethi_popup_group_field), NULL, 0},
- { N_("Group By Box"), NULL, GTK_SIGNAL_FUNC(ethi_popup_group_box), NULL, 1},
- { "", NULL, GTK_SIGNAL_FUNC(NULL), NULL, 1},
- { N_("Remove This Column"), NULL, GTK_SIGNAL_FUNC(ethi_popup_remove_column), NULL, 0},
- { N_("Add a Column..."), NULL, GTK_SIGNAL_FUNC(ethi_popup_field_chooser), NULL, 0},
- { "", NULL, GTK_SIGNAL_FUNC(NULL), NULL, 1},
- { N_("Alignment"), NULL, GTK_SIGNAL_FUNC(ethi_popup_alignment), NULL, 1},
- { N_("Best Fit"), NULL, GTK_SIGNAL_FUNC(ethi_popup_best_fit), NULL, 2},
- { N_("Format Columns..."), NULL, GTK_SIGNAL_FUNC(ethi_popup_format_columns), NULL, 1},
- { "", NULL, GTK_SIGNAL_FUNC(NULL), NULL, 1},
- { N_("Customize Current View..."), NULL, GTK_SIGNAL_FUNC(ethi_popup_customize_view), NULL, 4},
- { NULL, NULL, NULL, NULL, 0 }
-};
-
-static void
-ethi_header_context_menu (ETableHeaderItem *ethi, GdkEventButton *event)
-{
- EthiHeaderInfo *info = g_new(EthiHeaderInfo, 1);
- ETableCol *col;
- info->ethi = ethi;
- info->col = ethi_find_col_by_x (ethi, event->x);
- col = e_table_header_get_column (ethi->eth, info->col);
- e_popup_menu_run (ethi_context_menu, (GdkEvent *) event,
- 1 +
- (col->sortable ? 0 : 2) +
- (ethi->table ? 0 : 4), 0, info);
-}
-
-static void
-ethi_button_pressed (ETableHeaderItem *ethi, GdkEventButton *event)
-{
- gtk_signal_emit (GTK_OBJECT (ethi),
- ethi_signals [BUTTON_PRESSED], event);
-}
-
-static void
-ethi_change_sort_state (ETableHeaderItem *ethi, gdouble x)
-{
- ETableCol *col;
- int model_col;
- int length;
- int i;
- int found = FALSE;
-
- col = e_table_header_get_column (ethi->eth, ethi_find_col_by_x (ethi, x));
- model_col = col->col_idx;
-
- length = e_table_sort_info_grouping_get_count(ethi->sort_info);
- for (i = 0; i < length; i++) {
- ETableSortColumn column = e_table_sort_info_grouping_get_nth(ethi->sort_info, i);
- if (model_col == column.column){
- int ascending = column.ascending;
- ascending = ! ascending;
- column.ascending = ascending;
- e_table_sort_info_grouping_set_nth(ethi->sort_info, i, column);
- found = 1;
- break;
- }
- }
-
- if (!col->sortable)
- return;
-
- if (!found) {
- length = e_table_sort_info_sorting_get_count(ethi->sort_info);
- for (i = 0; i < length; i++) {
- ETableSortColumn column = e_table_sort_info_sorting_get_nth(ethi->sort_info, i);
-
- if (model_col == column.column){
- int ascending = column.ascending;
-
- if (ascending == 0){
- /*
- * This means the user has clicked twice
- * already, lets kill sorting now.
- */
- e_table_sort_info_sorting_truncate (ethi->sort_info, i);
- } else {
- ascending = !ascending;
- column.ascending = ascending;
- e_table_sort_info_sorting_set_nth(ethi->sort_info, i, column);
- }
- found = 1;
- break;
- }
- }
- }
-
- if (!found) {
- ETableSortColumn column;
- column.column = model_col;
- column.ascending = 1;
- length = e_table_sort_info_sorting_get_count(ethi->sort_info);
- if (length == 0)
- length++;
- e_table_sort_info_sorting_set_nth(ethi->sort_info, length - 1, column);
- }
-}
-
-/*
- * Handles the events on the ETableHeaderItem, particularly it handles resizing
- */
-static int
-ethi_event (GnomeCanvasItem *item, GdkEvent *e)
-{
- ETableHeaderItem *ethi = E_TABLE_HEADER_ITEM (item);
- GnomeCanvas *canvas = item->canvas;
- const gboolean resizing = ETHI_RESIZING (ethi);
- int x, y, start, col;
- int was_maybe_drag = 0;
-
- switch (e->type){
- case GDK_ENTER_NOTIFY:
- convert (canvas, e->crossing.x, e->crossing.y, &x, &y);
- set_cursor (ethi, x);
- break;
-
- case GDK_LEAVE_NOTIFY:
- gdk_window_set_cursor (GTK_WIDGET (canvas)->window, NULL);
- /* e_cursor_set (GTK_WIDGET (canvas)->window, E_CURSOR_ARROW);*/
- break;
-
- case GDK_MOTION_NOTIFY:
-
- convert (canvas, e->motion.x, e->motion.y, &x, &y);
- if (resizing){
- int new_width;
-
- if (ethi->resize_guide == NULL){
- /* Quick hack until I actually bind the views */
- ethi->resize_guide = GINT_TO_POINTER (1);
-
- gnome_canvas_item_grab (item,
- GDK_POINTER_MOTION_MASK |
- GDK_BUTTON_RELEASE_MASK,
- e_cursor_get (E_CURSOR_SIZE_X),
- e->button.time);
- }
-
- new_width = x - ethi->resize_start_pos;
-
- e_table_header_set_size (ethi->eth, ethi->resize_col, new_width);
-
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM(ethi));
- } else if (ethi_maybe_start_drag (ethi, &e->motion)){
- ethi_start_drag (ethi, e);
- } else
- set_cursor (ethi, x);
- break;
-
- case GDK_BUTTON_PRESS:
- if (e->button.button > 3)
- return FALSE;
-
- convert (canvas, e->button.x, e->button.y, &x, &y);
-
- if (is_pointer_on_division (ethi, x, &start, &col) && e->button.button == 1){
- ETableCol *ecol;
-
- /*
- * Record the important bits.
- *
- * By setting resize_pos to a non -1 value,
- * we know that we are being resized (used in the
- * other event handlers).
- */
- ecol = e_table_header_get_column (ethi->eth, col);
-
- if (!ecol->resizable)
- break;
- ethi->resize_col = col;
- ethi->resize_start_pos = start - ecol->width;
- ethi->resize_min_width = ecol->min_width;
- } else {
- if (e->button.button == 1){
- ethi->click_x = e->button.x;
- ethi->click_y = e->button.y;
- ethi->maybe_drag = TRUE;
- } else if (e->button.button == 3){
- ethi_header_context_menu (ethi, &e->button);
- } else
- ethi_button_pressed (ethi, &e->button);
- }
- break;
-
- case GDK_2BUTTON_PRESS:
- if (!resizing)
- break;
-
- if (e->button.button != 1)
- break;
- else {
- int width = 0;
- gtk_signal_emit_by_name (GTK_OBJECT (ethi->eth),
- "request_width",
- (int)ethi->resize_col, &width);
- /* Add 10 to stop it from "..."ing */
- e_table_header_set_size (ethi->eth, ethi->resize_col, width + 10);
-
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM(ethi));
- ethi->maybe_drag = FALSE;
- }
- break;
-
- case GDK_BUTTON_RELEASE: {
- gboolean needs_ungrab = FALSE;
-
- was_maybe_drag = ethi->maybe_drag;
-
- ethi->maybe_drag = FALSE;
-
- if (ethi->resize_col != -1){
- needs_ungrab = (ethi->resize_guide != NULL);
- ethi_end_resize (ethi);
- } else if (was_maybe_drag && ethi->sort_info)
- ethi_change_sort_state (ethi, e->button.x);
-
- if (needs_ungrab)
- gnome_canvas_item_ungrab (item, e->button.time);
-
- break;
- }
-
- default:
- return FALSE;
- }
- return TRUE;
-}
-
-static void
-ethi_class_init (GtkObjectClass *object_class)
-{
- GnomeCanvasItemClass *item_class = (GnomeCanvasItemClass *) object_class;
-
- ethi_parent_class = gtk_type_class (PARENT_OBJECT_TYPE);
-
- object_class->destroy = ethi_destroy;
- object_class->set_arg = ethi_set_arg;
- object_class->get_arg = ethi_get_arg;
-
- item_class->update = ethi_update;
- item_class->realize = ethi_realize;
- item_class->unrealize = ethi_unrealize;
- item_class->draw = ethi_draw;
- item_class->point = ethi_point;
- item_class->event = ethi_event;
-
- gtk_object_add_arg_type ("ETableHeaderItem::ETableHeader", GTK_TYPE_OBJECT,
- GTK_ARG_WRITABLE, ARG_TABLE_HEADER);
- gtk_object_add_arg_type ("ETableHeaderItem::full_header", GTK_TYPE_OBJECT,
- GTK_ARG_READWRITE, ARG_FULL_HEADER);
- gtk_object_add_arg_type ("ETableHeaderItem::dnd_code", GTK_TYPE_STRING,
- GTK_ARG_READWRITE, ARG_DND_CODE);
- gtk_object_add_arg_type ("ETableHeaderItem::fontset", GTK_TYPE_STRING,
- GTK_ARG_WRITABLE, ARG_TABLE_FONTSET);
- gtk_object_add_arg_type ("ETableHeaderItem::sort_info", GTK_TYPE_OBJECT,
- GTK_ARG_WRITABLE, ARG_SORT_INFO);
- gtk_object_add_arg_type ("ETableHeaderItem::table", GTK_TYPE_OBJECT,
- GTK_ARG_WRITABLE, ARG_TABLE);
-
- /*
- * Create our pixmaps for DnD
- */
- dnd_colormap = gtk_widget_get_default_colormap ();
- remove_col_pixmap = gdk_pixmap_colormap_create_from_xpm_d (
- NULL, dnd_colormap,
- &remove_col_mask, NULL, remove_col_xpm);
-
- add_col_pixmap = gdk_pixmap_colormap_create_from_xpm_d (
- NULL, dnd_colormap,
- &add_col_mask, NULL, add_col_xpm);
-
- ethi_signals [BUTTON_PRESSED] =
- gtk_signal_new ("button_pressed",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableHeaderItemClass, button_pressed),
- gtk_marshal_NONE__POINTER,
- GTK_TYPE_NONE, 1, GTK_TYPE_GDK_EVENT);
-
- gtk_object_class_add_signals (object_class, ethi_signals, LAST_SIGNAL);
-}
-
-static void
-ethi_init (GnomeCanvasItem *item)
-{
- ETableHeaderItem *ethi = E_TABLE_HEADER_ITEM (item);
-
- ethi->resize_col = -1;
-
- item->x1 = 0;
- item->y1 = 0;
- item->x2 = 0;
- item->y2 = 0;
-
- ethi->drag_col = -1;
- ethi->drag_mark = -1;
-
- ethi->sort_info = NULL;
-
- ethi->sort_info_changed_id = 0;
- ethi->group_info_changed_id = 0;
-
- ethi->group_indent_width = 0;
- ethi->table = NULL;
-}
-
-GtkType
-e_table_header_item_get_type (void)
-{
- static GtkType type = 0;
-
- if (!type){
- GtkTypeInfo info = {
- "ETableHeaderItem",
- sizeof (ETableHeaderItem),
- sizeof (ETableHeaderItemClass),
- (GtkClassInitFunc) ethi_class_init,
- (GtkObjectInitFunc) ethi_init,
- NULL, /* reserved 1 */
- NULL, /* reserved 2 */
- (GtkClassInitFunc) NULL
- };
-
- type = gtk_type_unique (PARENT_OBJECT_TYPE, &info);
- }
-
- return type;
-}
-
diff --git a/widgets/table/e-table-header-item.h b/widgets/table/e-table-header-item.h
deleted file mode 100644
index 6186037d5d..0000000000
--- a/widgets/table/e-table-header-item.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_HEADER_ITEM_H_
-#define _E_TABLE_HEADER_ITEM_H_
-
-#include <gal/e-table/e-table.h>
-#include <libgnomeui/gnome-canvas.h>
-#include <gnome-xml/tree.h>
-#include <gal/e-table/e-table-header.h>
-#include <gal/e-table/e-table-sort-info.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_TABLE_HEADER_ITEM_TYPE (e_table_header_item_get_type ())
-#define E_TABLE_HEADER_ITEM(o) (GTK_CHECK_CAST ((o), E_TABLE_HEADER_ITEM_TYPE, ETableHeaderItem))
-#define E_TABLE_HEADER_ITEM_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_HEADER_ITEM_TYPE, ETableHeaderItemClass))
-#define E_IS_TABLE_HEADER_ITEM(o) (GTK_CHECK_TYPE ((o), E_TABLE_HEADER_ITEM_TYPE))
-#define E_IS_TABLE_HEADER_ITEM_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_HEADER_ITEM_TYPE))
-
-typedef struct {
- GnomeCanvasItem parent;
- ETableHeader *eth;
-
- GdkGC *gc;
- GdkCursor *change_cursor;
-
- short height, width;
- GdkFont *font;
-
- /*
- * Used during resizing; Could be shorts
- */
- int resize_col;
- int resize_start_pos;
- int resize_min_width;
-
- GtkObject *resize_guide;
-
- int group_indent_width;
-
- /*
- * Ids
- */
- int structure_change_id, dimension_change_id;
-
- /*
- * For dragging columns
- */
- guint maybe_drag:1;
- guint dnd_ready:1;
- int click_x, click_y;
- int drag_col, drop_col, drag_mark;
- guint drag_motion_id, drag_end_id, drag_leave_id, drag_drop_id, drag_data_received_id, drag_data_get_id;
- guint sort_info_changed_id, group_info_changed_id;
- GnomeCanvasItem *remove_item;
- GdkBitmap *stipple;
-
- gchar *dnd_code;
-
- /*
- * For column sorting info
- */
- ETableSortInfo *sort_info;
-
- /* For adding fields. */
- ETableHeader *full_header;
- ETable *table;
- void *config;
-} ETableHeaderItem;
-
-typedef struct {
- GnomeCanvasItemClass parent_class;
-
- /*
- * signals
- */
- void (*button_pressed) (ETableHeaderItem *ethi, GdkEventButton *button);
-} ETableHeaderItemClass;
-
-GtkType e_table_header_item_get_type (void);
-
-END_GNOME_DECLS
-
-#endif /* _E_TABLE_HEADER_ITEM_H_ */
diff --git a/widgets/table/e-table-header-utils.c b/widgets/table/e-table-header-utils.c
deleted file mode 100644
index 0933359206..0000000000
--- a/widgets/table/e-table-header-utils.c
+++ /dev/null
@@ -1,451 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* ETable widget - utilities for drawing table header buttons
- *
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Authors: Chris Lahey <clahey@ximian.com>
- * Miguel de Icaza <miguel@ximian.com>
- * Federico Mena-Quintero <federico@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h> /* strlen() */
-#include <glib.h>
-#include "e-table-defines.h"
-#include "e-table-header-utils.h"
-
-
-
-/**
- * e_table_header_compute_height:
- * @ecol: Table column description.
- * @style: Style for the button's bevel.
- * @font: Font for the button's text, or NULL if no font is available.
- *
- * Computes the minimum height required for a table header button.
- *
- * Return value: The height of the button, in pixels.
- **/
-double
-e_table_header_compute_height (ETableCol *ecol, GtkStyle *style, GdkFont *font)
-{
- int ythick;
- int height;
-
- g_return_val_if_fail (ecol != NULL, -1);
- g_return_val_if_fail (E_IS_TABLE_COL (ecol), -1);
- g_return_val_if_fail (style != NULL, -1);
-
- ythick = style->klass->ythickness;
-
- if (font)
- height = font->ascent + font->descent;
- else
- height = 16; /* FIXME: default? */
-
- if (ecol->is_pixbuf) {
- g_assert (ecol->pixbuf != NULL);
- height = MAX (height, gdk_pixbuf_get_height (ecol->pixbuf));
- }
-
- height = MAX (height, MIN_ARROW_SIZE);
-
- height += 2 * (ythick + HEADER_PADDING);
-
- return height;
-}
-
-double
-e_table_header_width_extras (GtkStyle *style)
-{
- g_return_val_if_fail (style != NULL, -1);
-
- return 2 * (style->klass->xthickness + HEADER_PADDING);
-}
-
-/* Creates a pixmap that is a composite of a background color and the upper-left
- * corner rectangle of a pixbuf.
- */
-static GdkPixmap *
-make_composite_pixmap (GdkDrawable *drawable, GdkGC *gc,
- GdkPixbuf *pixbuf, GdkColor *bg, int width, int height,
- int dither_xofs, int dither_yofs)
-{
- int pwidth, pheight;
- GdkPixmap *pixmap;
- GdkPixbuf *tmp;
- int color;
-
- pwidth = gdk_pixbuf_get_width (pixbuf);
- pheight = gdk_pixbuf_get_height (pixbuf);
- g_assert (width <= pwidth && height <= pheight);
-
- color = ((bg->red & 0xff00) << 8) | (bg->green & 0xff00) | ((bg->blue & 0xff00) >> 8);
-
- if (width >= pwidth && height >= pheight) {
- tmp = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, width, height);
- if (!tmp)
- return NULL;
-
- gdk_pixbuf_composite_color (pixbuf, tmp,
- 0, 0,
- width, height,
- 0, 0,
- 1.0, 1.0,
- GDK_INTERP_NEAREST,
- 255,
- 0, 0,
- 16,
- color, color);
- } else {
- int x, y, rowstride;
- GdkPixbuf *fade;
- guchar *pixels;
-
- /* Do a nice fade of the pixbuf down and to the right */
-
- fade = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, width, height);
- if (!fade)
- return NULL;
-
- gdk_pixbuf_copy_area (pixbuf,
- 0, 0,
- width, height,
- fade,
- 0, 0);
-
- rowstride = gdk_pixbuf_get_rowstride (fade);
- pixels = gdk_pixbuf_get_pixels (fade);
-
- for (y = 0; y < height; y++) {
- guchar *p;
- int yfactor;
-
- p = pixels + y * rowstride;
-
- if (height < pheight)
- yfactor = height - y;
- else
- yfactor = height;
-
- for (x = 0; x < width; x++) {
- int xfactor;
-
- if (width < pwidth)
- xfactor = width - x;
- else
- xfactor = width;
-
- p[3] = ((int) p[3] * xfactor * yfactor / (width * height));
- p += 4;
- }
- }
-
- tmp = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, width, height);
- if (!tmp) {
- gdk_pixbuf_unref (fade);
- return NULL;
- }
-
- gdk_pixbuf_composite_color (fade, tmp,
- 0, 0,
- width, height,
- 0, 0,
- 1.0, 1.0,
- GDK_INTERP_NEAREST,
- 255,
- 0, 0,
- 16,
- color, color);
-
- gdk_pixbuf_unref (fade);
- }
-
- pixmap = gdk_pixmap_new (drawable, width, height, gdk_rgb_get_visual ()->depth);
- gdk_draw_rgb_image_dithalign (pixmap, gc,
- 0, 0,
- width, height,
- GDK_RGB_DITHER_NORMAL,
- gdk_pixbuf_get_pixels (tmp),
- gdk_pixbuf_get_rowstride (tmp),
- dither_xofs, dither_yofs);
- gdk_pixbuf_unref (tmp);
-
- return pixmap;
-}
-
-/**
- * e_table_header_draw_button:
- * @drawable: Destination drawable.
- * @ecol: Table column for the header information.
- * @style: Style to use for drawing the button.
- * @font: Font for the button's text.
- * @state: State of the table widget.
- * @widget: The table widget.
- * @gc: GC to use for drawing.
- * @x: Leftmost coordinate of the button.
- * @y: Topmost coordinate of the button.
- * @width: Width of the region to draw.
- * @height: Height of the region to draw.
- * @button_width: Width for the complete button.
- * @button_height: Height for the complete button.
- * @arrow: Arrow type to use as a sort indicator.
- *
- * Draws a button suitable for a table header.
- **/
-void
-e_table_header_draw_button (GdkDrawable *drawable, ETableCol *ecol,
- GtkStyle *style, GdkFont *font, GtkStateType state,
- GtkWidget *widget, GdkGC *gc,
- int x, int y, int width, int height,
- int button_width, int button_height,
- ETableColArrow arrow)
-{
- int xthick, ythick;
- int inner_x, inner_y;
- int inner_width, inner_height;
-
- g_return_if_fail (drawable != NULL);
- g_return_if_fail (ecol != NULL);
- g_return_if_fail (E_IS_TABLE_COL (ecol));
- g_return_if_fail (style != NULL);
- g_return_if_fail (font != NULL);
- g_return_if_fail (widget != NULL);
- g_return_if_fail (GTK_IS_WIDGET (widget));
- g_return_if_fail (button_width > 0 && button_height > 0);
-
- xthick = style->klass->xthickness;
- ythick = style->klass->ythickness;
-
- /* Button bevel */
-
- gtk_paint_box (style, drawable, state, GTK_SHADOW_OUT,
- NULL, widget, "button",
- x, y, button_width, button_height);
-
- /* Inside area */
-
- inner_width = button_width - 2 * (xthick + HEADER_PADDING);
- inner_height = button_height - 2 * (ythick + HEADER_PADDING);
-
- if (inner_width < 1 || inner_height < 1)
- return; /* nothing fits */
-
- inner_x = x + xthick + HEADER_PADDING;
- inner_y = y + ythick + HEADER_PADDING;
-
- /* Arrow */
-
- switch (arrow) {
- case E_TABLE_COL_ARROW_NONE:
- break;
-
- case E_TABLE_COL_ARROW_UP:
- case E_TABLE_COL_ARROW_DOWN: {
- int arrow_width, arrow_height;
-
- arrow_width = MIN (MIN_ARROW_SIZE, inner_width);
- arrow_height = MIN (MIN_ARROW_SIZE, inner_height);
-
- gtk_paint_arrow (style, drawable, state,
- GTK_SHADOW_IN, NULL, widget, "header",
- (arrow == E_TABLE_COL_ARROW_UP) ? GTK_ARROW_UP : GTK_ARROW_DOWN,
- TRUE,
- inner_x + inner_width - arrow_width,
- inner_y + (inner_height - arrow_height) / 2,
- arrow_width, arrow_height);
-
- inner_width -= arrow_width + HEADER_PADDING;
- break;
- }
-
- default:
- g_assert_not_reached ();
- return;
- }
-
- if (inner_width < 1)
- return; /* nothing else fits */
-
- /* Pixbuf or label */
-
- if (ecol->is_pixbuf) {
- int pwidth, pheight;
- int clip_width, clip_height;
- int xpos;
- GdkPixmap *pixmap;
-
- g_assert (ecol->pixbuf != NULL);
-
- pwidth = gdk_pixbuf_get_width (ecol->pixbuf);
- pheight = gdk_pixbuf_get_height (ecol->pixbuf);
-
- clip_width = MIN (pwidth, inner_width);
- clip_height = MIN (pheight, inner_height);
-
- xpos = inner_x;
-
- if (inner_width - pwidth > 11) {
- int rbearing;
- int width;
- int ypos;
-
- gdk_string_extents (font, ecol->text, NULL, &rbearing, &width, NULL, NULL);
- if (rbearing < inner_width - (pwidth + 1)) {
- xpos = inner_x + (inner_width - width - (pwidth + 1)) / 2;
- }
-
- ypos = inner_y + (inner_height - font->ascent - font->descent) / 2 + font->ascent;
-
- e_table_draw_elided_string (drawable, font, gc,
- xpos + pwidth + 1, ypos,
- ecol->text, inner_width - (xpos - inner_x), FALSE);
- }
-
- pixmap = make_composite_pixmap (drawable, gc,
- ecol->pixbuf, &style->bg[state],
- clip_width, clip_height,
- xpos,
- inner_y + (inner_height - clip_height) / 2);
- if (pixmap) {
- gdk_draw_pixmap (drawable, gc, pixmap,
- 0, 0,
- xpos,
- inner_y + (inner_height - clip_height) / 2,
- clip_width, clip_height);
- gdk_pixmap_unref (pixmap);
- }
- } else {
- int ypos;
-
- ypos = inner_y + (inner_height - font->ascent - font->descent) / 2 + font->ascent;
-
- e_table_draw_elided_string (drawable, font, gc,
- inner_x, ypos,
- ecol->text, inner_width, TRUE);
- }
-}
-
-/* Computes the length of a string that needs to be trimmed for elision */
-static int
-compute_elision_length (GdkFont *font, const char *str, int max_width)
-{
- int len;
- int l = 0, left, right;
- int rbearing;
-
- len = strlen (str);
-
- if (len <= 0)
- return 0;
-
- left = 0;
- right = len;
-
- while (left < right) {
- l = (left + right) / 2;
- gdk_text_extents (font, str, l, NULL, &rbearing, NULL, NULL, NULL);
-
- if (rbearing < max_width)
- left = l + 1;
- else if (rbearing > max_width)
- right = l;
- else
- return l;
- }
-
- if (rbearing > max_width)
- return MAX (0, l - 1);
- else
- return l;
-}
-
-/* Default width of the elision arrow in pixels */
-#define ARROW_WIDTH 4
-
-/**
- * e_table_draw_elided_string:
- * @drawable: Destination drawable.
- * @font: Font for the text.
- * @gc: GC to use for drawing.
- * @x: X insertion point for the string.
- * @y: Y insertion point for the string's baseline.
- * @str: String to draw.
- * @max_width: Maximum width in which the string must fit.
- * @center: Whether to center the string in the available area if it does fit.
- *
- * Draws a string, possibly trimming it so that it fits inside the specified
- * maximum width. If it does not fit, an elision indicator is drawn after the
- * last character that does fit.
- **/
-void
-e_table_draw_elided_string (GdkDrawable *drawable, GdkFont *font, GdkGC *gc,
- int x, int y, const char *str, int max_width, gboolean center)
-{
- int rbearing;
- int width;
-
- g_return_if_fail (drawable != NULL);
- g_return_if_fail (font != NULL);
- g_return_if_fail (gc != NULL);
- g_return_if_fail (str != NULL);
- g_return_if_fail (max_width >= 0);
-
- gdk_string_extents (font, str, NULL, &rbearing, &width, NULL, NULL);
-
- if (rbearing <= max_width) {
- int xpos;
-
- if (center)
- xpos = x + (max_width - width) / 2;
- else
- xpos = x;
-
- gdk_draw_string (drawable, font, gc, xpos, y, str);
- } else {
- int arrow_width;
- int len;
- int i;
-
- if (max_width < ARROW_WIDTH + 1)
- arrow_width = max_width - 1;
- else
- arrow_width = ARROW_WIDTH;
-
- len = compute_elision_length (font, str, max_width - arrow_width - 1);
- gdk_draw_text (drawable, font, gc, x, y, str, len);
-
- gdk_text_extents (font, str, len, NULL, &rbearing, NULL, NULL, NULL);
-
- y -= font->ascent;
-
- for (i = 0; i < arrow_width; i++) {
- int h;
-
- h = 2 * i + 1;
-
- gdk_draw_line (drawable, gc,
- x + rbearing + arrow_width - i,
- y + (font->ascent + font->descent - h) / 2,
- x + rbearing + arrow_width - i,
- y + (font->ascent + font->descent - h) / 2 + h - 1);
- }
- }
-}
diff --git a/widgets/table/e-table-header-utils.h b/widgets/table/e-table-header-utils.h
deleted file mode 100644
index 62f66e4bd3..0000000000
--- a/widgets/table/e-table-header-utils.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* ETable widget - utilities for drawing table header buttons
- *
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Authors: Chris Lahey <clahey@ximian.com>
- * Miguel de Icaza <miguel@ximian.com>
- * Federico Mena-Quintero <federico@ximian.com>
- *
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef E_TABLE_HEADER_UTILS_H
-#define E_TABLE_HEADER_UTILS_H
-
-#include <gal/e-table/e-table-col.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-double e_table_header_compute_height (ETableCol *ecol,
- GtkStyle *style,
- GdkFont *font);
-double e_table_header_width_extras (GtkStyle *style);
-void e_table_header_draw_button (GdkDrawable *drawable,
- ETableCol *ecol,
- GtkStyle *style,
- GdkFont *font,
- GtkStateType state,
- GtkWidget *widget,
- GdkGC *gc,
- int x,
- int y,
- int width,
- int height,
- int button_width,
- int button_height,
- ETableColArrow arrow);
-void e_table_draw_elided_string (GdkDrawable *drawable,
- GdkFont *font,
- GdkGC *gc,
- int x,
- int y,
- const char *str,
- int max_width,
- gboolean center);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
diff --git a/widgets/table/e-table-header.c b/widgets/table/e-table-header.c
deleted file mode 100644
index 56c7bed164..0000000000
--- a/widgets/table/e-table-header.c
+++ /dev/null
@@ -1,834 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * E-table-col-head.c: TableColHead implementation
- *
- * Author:
- * Miguel de Icaza (miguel@gnu.org)
- *
- * (C) 1999 Ximian, Inc
- */
-#include <config.h>
-#include <string.h>
-#include <gtk/gtkobject.h>
-#include <gtk/gtksignal.h>
-#include "e-table-header.h"
-#include "e-table-defines.h"
-
-/* The arguments we take */
-enum {
- ARG_0,
- ARG_SORT_INFO,
- ARG_WIDTH,
- ARG_WIDTH_EXTRAS,
-};
-
-enum {
- STRUCTURE_CHANGE,
- DIMENSION_CHANGE,
- REQUEST_WIDTH,
- LAST_SIGNAL
-};
-
-static void eth_set_size (ETableHeader *eth, int idx, int size);
-static void eth_calc_widths (ETableHeader *eth);
-
-static guint eth_signals [LAST_SIGNAL] = { 0, };
-
-static GtkObjectClass *e_table_header_parent_class;
-
-struct two_ints {
- int column;
- int width;
-};
-
-static void
-eth_set_width (ETableHeader *eth, int width)
-{
- eth->width = width;
-}
-
-static void
-dequeue (ETableHeader *eth, int *column, int *width)
-{
- GSList *head;
- struct two_ints *store;
- head = eth->change_queue;
- eth->change_queue = eth->change_queue->next;
- if (!eth->change_queue)
- eth->change_tail = NULL;
- store = head->data;
- g_slist_free_1(head);
- if (column)
- *column = store->column;
- if (width)
- *width = store->width;
- g_free(store);
-}
-
-static gboolean
-dequeue_idle (ETableHeader *eth)
-{
- int column, width;
-
- dequeue (eth, &column, &width);
- while (eth->change_queue && ((struct two_ints *) eth->change_queue->data)->column == column)
- dequeue (eth, &column, &width);
-
- if (column == -1)
- eth_set_width (eth, width);
- else if (column < eth->col_count)
- eth_set_size (eth, column, width);
- if (eth->change_queue)
- return TRUE;
- else {
- eth_calc_widths (eth);
- eth->idle = 0;
- return FALSE;
- }
-}
-
-static void
-enqueue (ETableHeader *eth, int column, int width)
-{
- struct two_ints *store;
- store = g_new(struct two_ints, 1);
- store->column = column;
- store->width = width;
-
- eth->change_tail = g_slist_last(g_slist_append(eth->change_tail, store));
- if (!eth->change_queue)
- eth->change_queue = eth->change_tail;
-
- if (!eth->idle) {
- eth->idle = g_idle_add_full(G_PRIORITY_LOW, (GSourceFunc) dequeue_idle, eth, NULL);
- }
-}
-
-void
-e_table_header_set_size (ETableHeader *eth, int idx, int size)
-{
- g_return_if_fail (eth != NULL);
- g_return_if_fail (E_IS_TABLE_HEADER (eth));
-
- enqueue (eth, idx, size);
-}
-
-static void
-eth_do_remove (ETableHeader *eth, int idx, gboolean do_unref)
-{
- if (do_unref)
- gtk_object_unref (GTK_OBJECT (eth->columns [idx]));
-
- memmove (&eth->columns [idx], &eth->columns [idx+1],
- sizeof (ETableCol *) * (eth->col_count - idx - 1));
- eth->col_count--;
-}
-
-static void
-eth_destroy (GtkObject *object)
-{
- ETableHeader *eth = E_TABLE_HEADER (object);
- const int cols = eth->col_count;
- int i;
-
- if (eth->sort_info) {
- if (eth->sort_info_group_change_id)
- gtk_signal_disconnect(GTK_OBJECT(eth->sort_info),
- eth->sort_info_group_change_id);
- gtk_object_unref(GTK_OBJECT(eth->sort_info));
- }
-
- if (eth->idle)
- g_source_remove(eth->idle);
- g_slist_foreach(eth->change_queue, (GFunc) g_free, NULL);
- g_slist_free(eth->change_queue);
-
- /*
- * Destroy columns
- */
- for (i = cols - 1; i >= 0; i--){
- eth_do_remove (eth, i, TRUE);
- }
- g_free (eth->columns);
-
- if (e_table_header_parent_class->destroy)
- e_table_header_parent_class->destroy (object);
-}
-
-static void
-eth_group_info_changed(ETableSortInfo *info, ETableHeader *eth)
-{
- enqueue(eth, -1, eth->nominal_width);
-}
-
-static void
-eth_set_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- ETableHeader *eth = E_TABLE_HEADER (object);
-
- switch (arg_id) {
- case ARG_WIDTH:
- eth->nominal_width = GTK_VALUE_DOUBLE (*arg);
- enqueue(eth, -1, GTK_VALUE_DOUBLE (*arg));
- break;
- case ARG_WIDTH_EXTRAS:
- eth->width_extras = GTK_VALUE_DOUBLE (*arg);
- enqueue(eth, -1, eth->nominal_width);
- break;
- case ARG_SORT_INFO:
- if (eth->sort_info) {
- if (eth->sort_info_group_change_id)
- gtk_signal_disconnect(GTK_OBJECT(eth->sort_info), eth->sort_info_group_change_id);
- gtk_object_unref(GTK_OBJECT(eth->sort_info));
- }
- eth->sort_info = E_TABLE_SORT_INFO(GTK_VALUE_OBJECT (*arg));
- if (eth->sort_info) {
- gtk_object_ref(GTK_OBJECT(eth->sort_info));
- eth->sort_info_group_change_id
- = gtk_signal_connect(GTK_OBJECT(eth->sort_info), "group_info_changed",
- GTK_SIGNAL_FUNC(eth_group_info_changed), eth);
- }
- enqueue(eth, -1, eth->nominal_width);
- break;
- default:
- break;
- }
-}
-
-static void
-eth_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- ETableHeader *eth = E_TABLE_HEADER (object);
-
- switch (arg_id) {
- case ARG_SORT_INFO:
- GTK_VALUE_OBJECT (*arg) = GTK_OBJECT(eth->sort_info);
- break;
- case ARG_WIDTH:
- GTK_VALUE_DOUBLE (*arg) = eth->nominal_width;
- break;
- case ARG_WIDTH_EXTRAS:
- GTK_VALUE_DOUBLE (*arg) = eth->width_extras;
- break;
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
-
-static void
-e_table_header_class_init (GtkObjectClass *object_class)
-{
- object_class->destroy = eth_destroy;
- object_class->set_arg = eth_set_arg;
- object_class->get_arg = eth_get_arg;
-
-
- e_table_header_parent_class = (gtk_type_class (gtk_object_get_type ()));
-
- gtk_object_add_arg_type ("ETableHeader::width", GTK_TYPE_DOUBLE,
- GTK_ARG_READWRITE, ARG_WIDTH);
- gtk_object_add_arg_type ("ETableHeader::width_extras", GTK_TYPE_DOUBLE,
- GTK_ARG_READWRITE, ARG_WIDTH_EXTRAS);
- gtk_object_add_arg_type ("ETableHeader::sort_info", GTK_TYPE_OBJECT,
- GTK_ARG_READWRITE, ARG_SORT_INFO);
-
- eth_signals [STRUCTURE_CHANGE] =
- gtk_signal_new ("structure_change",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableHeaderClass, structure_change),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
- eth_signals [DIMENSION_CHANGE] =
- gtk_signal_new ("dimension_change",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableHeaderClass, dimension_change),
- gtk_marshal_NONE__INT,
- GTK_TYPE_NONE, 1, GTK_TYPE_INT);
- eth_signals [REQUEST_WIDTH] =
- gtk_signal_new ("request_width",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableHeaderClass, request_width),
- gtk_marshal_INT__INT,
- GTK_TYPE_INT, 1, GTK_TYPE_INT);
-
- gtk_object_class_add_signals (object_class, eth_signals, LAST_SIGNAL);
-}
-
-static void
-e_table_header_init (ETableHeader *eth)
-{
- eth->col_count = 0;
- eth->width = 0;
-
- eth->sort_info = NULL;
- eth->sort_info_group_change_id = 0;
-
- eth->columns = NULL;
-
- eth->change_queue = NULL;
- eth->change_tail = NULL;
-
- eth->width_extras = 0;
-}
-
-/**
- * e_table_header_new:
- *
- * Returns: A new @ETableHeader object.
- */
-ETableHeader *
-e_table_header_new (void)
-{
- ETableHeader *eth;
-
- eth = gtk_type_new (e_table_header_get_type ());
-
- return eth;
-}
-
-static void
-eth_update_offsets (ETableHeader *eth)
-{
- int i;
- int x = 0;
-
- for (i = 0; i < eth->col_count; i++){
- ETableCol *etc = eth->columns [i];
-
- etc->x = x;
- x += etc->width;
- }
-}
-
-static void
-eth_do_insert (ETableHeader *eth, int pos, ETableCol *val)
-{
- memmove (&eth->columns [pos+1], &eth->columns [pos],
- sizeof (ETableCol *) * (eth->col_count - pos));
- eth->columns [pos] = val;
- eth->col_count ++;
-}
-
-/**
- * e_table_header_add_column:
- * @eth: the table header to add the column to.
- * @tc: the ETableCol definition
- * @pos: position where the ETableCol will go.
- *
- * This function adds the @tc ETableCol definition into the @eth ETableHeader
- * at position @pos. This is the way you add new ETableCols to the
- * ETableHeader.
- *
- * This function will emit the "structure_change" signal on the @eth object.
- * The ETableCol is assumed
- */
-void
-e_table_header_add_column (ETableHeader *eth, ETableCol *tc, int pos)
-{
- g_return_if_fail (eth != NULL);
- g_return_if_fail (E_IS_TABLE_HEADER (eth));
- g_return_if_fail (tc != NULL);
- g_return_if_fail (E_IS_TABLE_COL (tc));
- g_return_if_fail (pos >= -1 && pos <= eth->col_count);
-
- if (pos == -1)
- pos = eth->col_count;
- eth->columns = g_realloc (eth->columns, sizeof (ETableCol *) * (eth->col_count + 1));
-
- /*
- * We are the primary owners of the column
- */
- gtk_object_ref (GTK_OBJECT (tc));
- gtk_object_sink (GTK_OBJECT (tc));
-
- eth_do_insert (eth, pos, tc);
-
- enqueue(eth, -1, eth->nominal_width);
- gtk_signal_emit (GTK_OBJECT (eth), eth_signals [STRUCTURE_CHANGE]);
-}
-
-/**
- * e_table_header_get_column:
- * @eth: the ETableHeader to query
- * @column: the column inside the @eth.
- *
- * Returns: The ETableCol at @column in the @eth object
- */
-ETableCol *
-e_table_header_get_column (ETableHeader *eth, int column)
-{
- g_return_val_if_fail (eth != NULL, NULL);
- g_return_val_if_fail (E_IS_TABLE_HEADER (eth), NULL);
-
- if (column < 0)
- return NULL;
-
- if (column >= eth->col_count)
- return NULL;
-
- return eth->columns [column];
-}
-
-/**
- * e_table_header_get_column_by_col_id:
- * @eth: the ETableHeader to query
- * @col_id: the col_id to search for.
- *
- * Returns: The ETableCol with col_idx = @col_idx in the @eth object
- */
-ETableCol *
-e_table_header_get_column_by_col_idx (ETableHeader *eth, int col_idx)
-{
- int i;
- g_return_val_if_fail (eth != NULL, NULL);
- g_return_val_if_fail (E_IS_TABLE_HEADER (eth), NULL);
-
- for (i = 0; i < eth->col_count; i++) {
- if (eth->columns[i]->col_idx == col_idx) {
- return eth->columns [i];
- }
- }
-
- return NULL;
-}
-
-/**
- * e_table_header_count:
- * @eth: the ETableHeader to query
- *
- * Returns: the number of columns in this ETableHeader.
- */
-int
-e_table_header_count (ETableHeader *eth)
-{
- g_return_val_if_fail (eth != NULL, 0);
- g_return_val_if_fail (E_IS_TABLE_HEADER (eth), 0);
-
- return eth->col_count;
-}
-
-/**
- * e_table_header_index:
- * @eth: the ETableHeader to query
- * @col: the column to fetch.
- *
- * ETableHeaders contain the visual list of columns that the user will
- * view. The visible columns will typically map to different columns
- * in the ETableModel (because the user reordered the data for
- * example).
- *
- * Returns: the column in the model that the @col column
- * in the ETableHeader points to. */
-int
-e_table_header_index (ETableHeader *eth, int col)
-{
- g_return_val_if_fail (eth != NULL, -1);
- g_return_val_if_fail (E_IS_TABLE_HEADER (eth), -1);
- g_return_val_if_fail (col >= 0 && col < eth->col_count, -1);
-
- return eth->columns [col]->col_idx;
-}
-
-/**
- * e_table_header_get_index_at:
- * @eth: the ETableHeader to query
- * @x_offset: a pixel count from the beginning of the ETableHeader
- *
- * This will return the ETableHeader column that would contain
- * the @x_offset pixel.
- *
- * Returns: the column that contains pixel @x_offset, or -1
- * if no column inside this ETableHeader contains that pixel.
- */
-int
-e_table_header_get_index_at (ETableHeader *eth, int x_offset)
-{
- int i, total;
-
- g_return_val_if_fail (eth != NULL, 0);
- g_return_val_if_fail (E_IS_TABLE_HEADER (eth), 0);
-
- total = 0;
- for (i = 0; i < eth->col_count; i++){
- total += eth->columns [i]->width;
-
- if (x_offset < total)
- return i;
- }
-
- return -1;
-}
-
-/**
- * e_table_header_get_columns:
- * @eth: The ETableHeader to query
- *
- * Returns: A NULL terminated array of the ETableCols
- * contained in the ETableHeader @eth. Note that every
- * returned ETableCol in the array has been referenced, to release
- * this information you need to g_free the buffer returned
- * and you need to gtk_object_unref every element returned
- */
-ETableCol **
-e_table_header_get_columns (ETableHeader *eth)
-{
- ETableCol **ret;
- int i;
-
- g_return_val_if_fail (eth != NULL, 0);
- g_return_val_if_fail (E_IS_TABLE_HEADER (eth), 0);
-
- ret = g_new (ETableCol *, eth->col_count + 1);
- memcpy (ret, eth->columns, sizeof (ETableCol *) * eth->col_count);
- ret [eth->col_count] = NULL;
-
- for (i = 0; i < eth->col_count; i++) {
- gtk_object_ref(GTK_OBJECT(ret[i]));
- }
-
- return ret;
-}
-
-/**
- * e_table_header_get_selected:
- * @eth: The ETableHeader to query
- *
- * Returns: The number of selected columns in the @eth object.
- */
-int
-e_table_header_get_selected (ETableHeader *eth)
-{
- int i;
- int selected = 0;
-
- g_return_val_if_fail (eth != NULL, 0);
- g_return_val_if_fail (E_IS_TABLE_HEADER (eth), 0);
-
- for (i = 0; i < eth->col_count; i++){
- if (eth->columns [i]->selected)
- selected++;
- }
-
- return selected;
-}
-
-/**
- * e_table_header_total_width:
- * @eth: The ETableHeader to query
- *
- * Returns: the number of pixels used by the @eth object
- * when rendered on screen
- */
-int
-e_table_header_total_width (ETableHeader *eth)
-{
- int total, i;
-
- g_return_val_if_fail (eth != NULL, 0);
- g_return_val_if_fail (E_IS_TABLE_HEADER (eth), 0);
-
- total = 0;
- for (i = 0; i < eth->col_count; i++)
- total += eth->columns [i]->width;
-
- return total;
-}
-
-/**
- * e_table_header_move:
- * @eth: The ETableHeader to operate on.
- * @source_index: the source column to move.
- * @target_index: the target location for the column
- *
- * This function moves the column @source_index to @target_index
- * inside the @eth ETableHeader. The signals "dimension_change"
- * and "structure_change" will be emmited
- */
-void
-e_table_header_move (ETableHeader *eth, int source_index, int target_index)
-{
- ETableCol *old;
-
- g_return_if_fail (eth != NULL);
- g_return_if_fail (E_IS_TABLE_HEADER (eth));
- g_return_if_fail (source_index >= 0);
- g_return_if_fail (target_index >= 0);
- g_return_if_fail (source_index < eth->col_count);
- g_return_if_fail (target_index < eth->col_count + 1); /* Can be moved beyond the last item. */
-
- if (source_index < target_index)
- target_index --;
-
- old = eth->columns [source_index];
- eth_do_remove (eth, source_index, FALSE);
- eth_do_insert (eth, target_index, old);
- eth_update_offsets (eth);
-
- gtk_signal_emit (GTK_OBJECT (eth), eth_signals [DIMENSION_CHANGE]);
- gtk_signal_emit (GTK_OBJECT (eth), eth_signals [STRUCTURE_CHANGE]);
-}
-
-/**
- * e_table_header_remove:
- * @eth: The ETableHeader to operate on.
- * @idx: the index to the column to be removed.
- *
- * Removes the column at @idx position in the ETableHeader @eth.
- * This emmits the "structure_change" signal on the @eth object.
- */
-void
-e_table_header_remove (ETableHeader *eth, int idx)
-{
- g_return_if_fail (eth != NULL);
- g_return_if_fail (E_IS_TABLE_HEADER (eth));
- g_return_if_fail (idx >= 0);
- g_return_if_fail (idx < eth->col_count);
-
- eth_do_remove (eth, idx, TRUE);
- enqueue(eth, -1, eth->nominal_width);
- gtk_signal_emit (GTK_OBJECT (eth), eth_signals [STRUCTURE_CHANGE]);
-}
-
-/*
- * FIXME: deprecated?
- */
-void
-e_table_header_set_selection (ETableHeader *eth, gboolean allow_selection)
-{
- g_return_if_fail (eth != NULL);
- g_return_if_fail (E_IS_TABLE_HEADER (eth));
-}
-
-static void
-eth_set_size (ETableHeader *eth, int idx, int size)
-{
- double expansion;
- double old_expansion;
- int min_width;
- int left_width;
- int total_extra;
- int expandable_count;
- int usable_width;
- int i;
- g_return_if_fail (eth != NULL);
- g_return_if_fail (E_IS_TABLE_HEADER (eth));
- g_return_if_fail (idx >= 0);
- g_return_if_fail (idx < eth->col_count);
-
- /* If this column is not resizable, don't do anything. */
- if (!eth->columns[idx]->resizable)
- return;
-
- expansion = 0;
- min_width = 0;
- left_width = 0;
- expandable_count = -1;
-
- /* Calculate usable area. */
- for (i = 0; i < idx; i++) {
- left_width += eth->columns[i]->width;
- }
- /* - 1 to account for the last pixel border. */
- usable_width = eth->width - left_width - 1;
-
- if (eth->sort_info)
- usable_width -= e_table_sort_info_grouping_get_count(eth->sort_info) * GROUP_INDENT;
-
- /* Calculate minimum_width of stuff on the right as well as
- * total usable expansion on the right.
- */
- for (; i < eth->col_count; i++) {
- min_width += eth->columns[i]->min_width + eth->width_extras;
- if (eth->columns[i]->resizable) {
- expansion += eth->columns[i]->expansion;
- expandable_count ++;
- }
- }
- /* If there's no room for anything, don't change. */
- if (expansion == 0)
- return;
-
- /* (1) If none of the columns to the right are expandable, use
- * all the expansion space in this column.
- */
- if(expandable_count == 0) {
- eth->columns[idx]->expansion = expansion;
- for (i = idx + 1; i < eth->col_count; i++) {
- eth->columns[i]->expansion = 0;
- }
- return;
- }
-
- total_extra = usable_width - min_width;
- /* If there's no extra space, set all expansions to 0. */
- if (total_extra <= 0) {
- for (i = idx; i < eth->col_count; i++) {
- eth->columns[i]->expansion = 0;
- }
- return;
- }
-
- /* If you try to resize smaller than the minimum width, it
- * uses the minimum. */
- if (size < eth->columns[idx]->min_width + eth->width_extras)
- size = eth->columns[idx]->min_width + eth->width_extras;
-
- /* If all the extra space will be used up in this column, use
- * all the expansion and set all others to 0.
- */
- if (size >= total_extra + eth->columns[idx]->min_width + eth->width_extras) {
- eth->columns[idx]->expansion = expansion;
- for (i = idx + 1; i < eth->col_count; i++) {
- eth->columns[i]->expansion = 0;
- }
- return;
- }
-
- /* The old_expansion used by columns to the right. */
- old_expansion = expansion;
- old_expansion -= eth->columns[idx]->expansion;
- /* Set the new expansion so that it will generate the desired size. */
- eth->columns[idx]->expansion = expansion * (((double)(size - (eth->columns[idx]->min_width + eth->width_extras)))/((double)total_extra));
- /* The expansion left for the columns on the right. */
- expansion -= eth->columns[idx]->expansion;
-
- /* (2) If the old columns to the right didn't have any
- * expansion before, expand them evenly. old_expansion > 0 by
- * expansion = SUM(i=idx to col_count -1,
- * columns[i]->min_width) - columns[idx]->min_width) =
- * SUM(non-negatives).
- */
- if (old_expansion == 0) {
- for (i = idx + 1; i < eth->col_count; i++) {
- if (eth->columns[idx]->resizable) {
- /* expandable_count != 0 by (1) */
- eth->columns[i]->expansion = expansion / expandable_count;
- }
- }
- return;
- }
-
- /* Remove from total_extra the amount used for this column. */
- total_extra -= size - (eth->columns[idx]->min_width + eth->width_extras);
- for (i = idx + 1; i < eth->col_count; i++) {
- if (eth->columns[idx]->resizable) {
- /* old_expansion != 0 by (2) */
- eth->columns[i]->expansion *= expansion / old_expansion;
- }
- }
-}
-
-/**
- * e_table_header_col_diff:
- * @eth: the ETableHeader to query.
- * @start_col: the starting column
- * @end_col: the ending column.
- *
- * Computes the number of pixels between the columns @start_col and
- * @end_col.
- *
- * Returns: the number of pixels between @start_col and @end_col on the
- * @eth ETableHeader object
- */
-int
-e_table_header_col_diff (ETableHeader *eth, int start_col, int end_col)
-{
- int total, col;
-
- g_return_val_if_fail (eth != NULL, 0);
- g_return_val_if_fail (E_IS_TABLE_HEADER (eth), 0);
-
- if (start_col < 0)
- start_col = 0;
- if (end_col > eth->col_count)
- end_col = eth->col_count;
-
- total = 0;
- for (col = start_col; col < end_col; col++){
-
- total += eth->columns [col]->width;
- }
-
- return total;
-}
-
-static void
-eth_calc_widths (ETableHeader *eth)
-{
- int i;
- int extra;
- double expansion;
- int last_position = 0;
- double next_position = 0;
- int last_resizable = -1;
- /* - 1 to account for the last pixel border. */
- extra = eth->width - 1;
- expansion = 0;
- for (i = 0; i < eth->col_count; i++) {
- extra -= eth->columns[i]->min_width + eth->width_extras;
- if (eth->columns[i]->resizable && eth->columns[i]->expansion > 0)
- last_resizable = i;
- expansion += eth->columns[i]->resizable ? eth->columns[i]->expansion : 0;
- eth->columns[i]->width = eth->columns[i]->min_width + eth->width_extras;
- }
- if (eth->sort_info)
- extra -= e_table_sort_info_grouping_get_count(eth->sort_info) * GROUP_INDENT;
- if (expansion != 0 && extra > 0) {
- for (i = 0; i < last_resizable; i++) {
- next_position += extra * (eth->columns[i]->resizable ? eth->columns[i]->expansion : 0)/expansion;
- eth->columns[i]->width += next_position - last_position;
- last_position = next_position;
- }
- eth->columns[i]->width += extra - last_position;
- }
-
- eth_update_offsets (eth);
- gtk_signal_emit (GTK_OBJECT (eth), eth_signals [DIMENSION_CHANGE]);
-}
-
-void
-e_table_header_update_horizontal (ETableHeader *eth)
-{
- int i;
- int cols;
-
- cols = eth->col_count;
-
- for (i = 0; i < cols; i++) {
- int width = 0;
-
- gtk_signal_emit_by_name (GTK_OBJECT (eth),
- "request_width",
- i, &width);
- eth->columns[i]->min_width = width + 10;
- eth->columns[i]->expansion = 1;
- }
- enqueue(eth, -1, eth->nominal_width);
-}
-
-GtkType
-e_table_header_get_type (void)
-{
- static GtkType type = 0;
-
- if (!type){
- GtkTypeInfo info = {
- "ETableHeader",
- sizeof (ETableHeader),
- sizeof (ETableHeaderClass),
- (GtkClassInitFunc) e_table_header_class_init,
- (GtkObjectInitFunc) e_table_header_init,
- NULL, /* reserved 1 */
- NULL, /* reserved 2 */
- (GtkClassInitFunc) NULL
- };
-
- type = gtk_type_unique (gtk_object_get_type (), &info);
- }
-
- return type;
-}
diff --git a/widgets/table/e-table-header.h b/widgets/table/e-table-header.h
deleted file mode 100644
index c186a8c48c..0000000000
--- a/widgets/table/e-table-header.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_COLUMN_H_
-#define _E_TABLE_COLUMN_H_
-
-#include <gtk/gtkobject.h>
-#include <gdk/gdk.h>
-#include <gal/e-table/e-table-sort-info.h>
-#include <gal/e-table/e-table-col.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-typedef struct _ETableHeader ETableHeader;
-
-#define E_TABLE_HEADER_TYPE (e_table_header_get_type ())
-#define E_TABLE_HEADER(o) (GTK_CHECK_CAST ((o), E_TABLE_HEADER_TYPE, ETableHeader))
-#define E_TABLE_HEADER_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_HEADER_TYPE, ETableHeaderClass))
-#define E_IS_TABLE_HEADER(o) (GTK_CHECK_TYPE ((o), E_TABLE_HEADER_TYPE))
-#define E_IS_TABLE_HEADER_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_HEADER_TYPE))
-
-/*
- * A Columnar header.
- */
-struct _ETableHeader {
- GtkObject base;
-
- int col_count;
- int width;
- int nominal_width;
- int width_extras;
-
- ETableSortInfo *sort_info;
- int sort_info_group_change_id;
-
- ETableCol **columns;
-
- GSList *change_queue, *change_tail;
- gint idle;
-};
-
-typedef struct {
- GtkObjectClass parent_class;
-
- void (*structure_change) (ETableHeader *eth);
- void (*dimension_change) (ETableHeader *eth, int col);
- int (*request_width) (ETableHeader *eth, int col);
-} ETableHeaderClass;
-
-GtkType e_table_header_get_type (void);
-ETableHeader *e_table_header_new (void);
-
-void e_table_header_add_column (ETableHeader *eth,
- ETableCol *tc,
- int pos);
-ETableCol *e_table_header_get_column (ETableHeader *eth,
- int column);
-ETableCol *e_table_header_get_column_by_col_idx (ETableHeader *eth,
- int col_idx);
-int e_table_header_count (ETableHeader *eth);
-int e_table_header_index (ETableHeader *eth,
- int col);
-int e_table_header_get_index_at (ETableHeader *eth,
- int x_offset);
-ETableCol **e_table_header_get_columns (ETableHeader *eth);
-int e_table_header_get_selected (ETableHeader *eth);
-
-int e_table_header_total_width (ETableHeader *eth);
-void e_table_header_move (ETableHeader *eth,
- int source_index,
- int target_index);
-void e_table_header_remove (ETableHeader *eth,
- int idx);
-void e_table_header_set_size (ETableHeader *eth,
- int idx,
- int size);
-void e_table_header_set_selection (ETableHeader *eth,
- gboolean allow_selection);
-int e_table_header_col_diff (ETableHeader *eth,
- int start_col,
- int end_col);
-
-void e_table_header_calc_widths (ETableHeader *eth);
-GList *e_table_header_get_selected_indexes (ETableHeader *eth);
-
-void e_table_header_update_horizontal (ETableHeader *eth);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_TABLE_HEADER_H_ */
-
diff --git a/widgets/table/e-table-item.c b/widgets/table/e-table-item.c
deleted file mode 100644
index 035609d5a7..0000000000
--- a/widgets/table/e-table-item.c
+++ /dev/null
@@ -1,2778 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * E-table-item.c: A GnomeCanvasItem that is a view of an ETableModel.
- *
- * Author:
- * Christopher James Lahey <clahey@ximian.com>
- * Miguel de Icaza (miguel@gnu.org)
- *
- * Copyright 1999, 2000, 2001, Ximian, Inc.
- *
- * TODO:
- * Add a border to the thing, so that focusing works properly.
- *
- */
-#include <config.h>
-
-#include "e-table-item.h"
-
-#include <math.h>
-#include <stdio.h>
-#include <gtk/gtksignal.h>
-#include <gdk/gdkkeysyms.h>
-#include "e-table-subset.h"
-#include "e-cell.h"
-#include "gal/widgets/e-hsv-utils.h"
-#include "gal/widgets/e-canvas.h"
-#include "gal/widgets/e-canvas-utils.h"
-#include "gal/util/e-util.h"
-#include <string.h>
-
-#define PARENT_OBJECT_TYPE gnome_canvas_item_get_type ()
-
-#define FOCUSED_BORDER 2
-
-#define DO_TOOLTIPS 1
-
-#define d(x)
-
-/* FIXME: Do an analysis of which cell functions are needed before
- realize and make sure that all of them are doable by all the cells
- and that all of the others are only done after realization. */
-
-static GnomeCanvasItemClass *eti_parent_class;
-
-enum {
- CURSOR_CHANGE,
- CURSOR_ACTIVATED,
- DOUBLE_CLICK,
- RIGHT_CLICK,
- CLICK,
- KEY_PRESS,
- LAST_SIGNAL
-};
-
-static gint eti_signals [LAST_SIGNAL] = { 0, };
-
-enum {
- ARG_0,
- ARG_TABLE_HEADER,
- ARG_TABLE_MODEL,
- ARG_SELECTION_MODEL,
- ARG_TABLE_ALTERNATING_ROW_COLORS,
- ARG_TABLE_HORIZONTAL_DRAW_GRID,
- ARG_TABLE_VERTICAL_DRAW_GRID,
- ARG_TABLE_DRAW_FOCUS,
- ARG_CURSOR_MODE,
- ARG_LENGTH_THRESHOLD,
- ARG_CURSOR_ROW,
-
- ARG_MINIMUM_WIDTH,
- ARG_WIDTH,
- ARG_HEIGHT,
-};
-
-#define DOUBLE_CLICK_TIME 250
-#define TRIPLE_CLICK_TIME 500
-
-
-static int eti_get_height (ETableItem *eti);
-static int eti_row_height (ETableItem *eti, int row);
-static void e_table_item_focus (ETableItem *eti, int col, int row, GdkModifierType state);
-static void eti_cursor_change (ESelectionModel *selection, int row, int col, ETableItem *eti);
-static void eti_cursor_activated (ESelectionModel *selection, int row, int col, ETableItem *eti);
-static void eti_selection_change (ESelectionModel *selection, ETableItem *eti);
-#ifdef SHOW_ON_CHANGED
-static void eti_request_region_show (ETableItem *eti,
- int start_col, int start_row,
- int end_col, int end_row);
-#endif
-#define ETI_ROW_HEIGHT(eti,row) ((eti)->height_cache && (eti)->height_cache[(row)] != -1 ? (eti)->height_cache[(row)] : eti_row_height((eti),(row)))
-
-inline static gint
-model_to_view_row(ETableItem *eti, int row)
-{
- int i;
- if (eti->uses_source_model) {
- ETableSubset *etss = E_TABLE_SUBSET(eti->table_model);
- if (eti->row_guess >= 0 && eti->row_guess < etss->n_map) {
- if (etss->map_table[eti->row_guess] == row) {
- return eti->row_guess;
- }
- }
- for (i = 0; i < etss->n_map; i++) {
- if (etss->map_table[i] == row)
- return i;
- }
- return -1;
- } else
- return row;
-}
-
-inline static gint
-view_to_model_row(ETableItem *eti, int row)
-{
- if (eti->uses_source_model) {
- ETableSubset *etss = E_TABLE_SUBSET(eti->table_model);
- if (row >= 0 && row < etss->n_map)
- return etss->map_table[row];
- else
- return -1;
- } else
- return row;
-}
-
-inline static gint
-model_to_view_col(ETableItem *eti, int col)
-{
- int i;
- for (i = 0; i < eti->cols; i++) {
- ETableCol *ecol = e_table_header_get_column (eti->header, i);
- if (ecol->col_idx == col)
- return i;
- }
- return -1;
-}
-
-inline static gint
-view_to_model_col(ETableItem *eti, int col)
-{
- ETableCol *ecol = e_table_header_get_column (eti->header, col);
- return ecol ? ecol->col_idx : -1;
-}
-
-inline static gboolean
-eti_editing (ETableItem *eti)
-{
- if (eti->editing_col == -1)
- return FALSE;
- else
- return TRUE;
-}
-
-inline static GdkColor *
-eti_get_cell_background_color (ETableItem *eti, int row, int col, gboolean selected, gboolean *allocated)
-{
- GtkWidget *canvas = GTK_WIDGET(GNOME_CANVAS_ITEM(eti)->canvas);
- GdkColor *background;
-
- if (allocated)
- *allocated = FALSE;
-
- if (selected){
- if (GTK_WIDGET_HAS_FOCUS(canvas))
- background = &canvas->style->bg [GTK_STATE_SELECTED];
- else
- background = &canvas->style->bg [GTK_STATE_ACTIVE];
- } else {
- background = &canvas->style->base [GTK_STATE_NORMAL];
- }
-
- if (eti->alternating_row_colors) {
- if (row % 2) {
-
- } else {
- if (allocated)
- *allocated = TRUE;
- background = gdk_color_copy (background);
- e_hsv_tweak (background, 0.0f, 0.0f, -0.05f);
- gdk_color_alloc (gtk_widget_get_colormap (GTK_WIDGET (canvas)), background);
- }
- }
-
- return background;
-}
-
-inline static GdkColor *
-eti_get_cell_foreground_color (ETableItem *eti, int row, int col, gboolean selected, gboolean *allocated)
-{
- GtkWidget *canvas = GTK_WIDGET(GNOME_CANVAS_ITEM(eti)->canvas);
- GdkColor *foreground;
-
- if (allocated)
- *allocated = FALSE;
-
- if (selected){
- if (GTK_WIDGET_HAS_FOCUS (canvas))
- foreground = &canvas->style->text [GTK_STATE_SELECTED];
- else
- foreground = &canvas->style->text [GTK_STATE_ACTIVE];
- } else {
- foreground = &canvas->style->text [GTK_STATE_NORMAL];
- }
-
- return foreground;
-}
-
-/*
- * During realization, we have to invoke the per-ecell realize routine
- * (On our current setup, we have one e-cell per column.
- *
- * We might want to optimize this to only realize the unique e-cells:
- * ie, a strings-only table, uses the same e-cell for every column, and
- * we might want to avoid realizing each e-cell.
- */
-static void
-eti_realize_cell_views (ETableItem *eti)
-{
- int i;
-
- if (eti->cell_views_realized)
- return;
-
- if (!(GTK_OBJECT_FLAGS(eti) & GNOME_CANVAS_ITEM_REALIZED))
- return;
-
- for (i = 0; i < eti->n_cells; i++)
- e_cell_realize (eti->cell_views [i]);
- eti->cell_views_realized = 1;
-}
-
-static void
-eti_attach_cell_views (ETableItem *eti)
-{
- int i;
-
- g_assert (eti->header);
- g_assert (eti->table_model);
-
- /*
- * Now realize the various ECells
- */
- eti->n_cells = eti->cols;
- eti->cell_views = g_new (ECellView *, eti->n_cells);
-
- for (i = 0; i < eti->n_cells; i++){
- ETableCol *ecol = e_table_header_get_column (eti->header, i);
-
- eti->cell_views [i] = e_cell_new_view (ecol->ecell, eti->table_model, eti);
- }
-
- eti->needs_compute_height = 1;
- e_canvas_item_request_reflow (GNOME_CANVAS_ITEM (eti));
- eti->needs_redraw = 1;
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM (eti));
-}
-
-/*
- * During unrealization: we invoke every e-cell (one per column in the current
- * setup) to dispose all X resources allocated
- */
-static void
-eti_unrealize_cell_views (ETableItem *eti)
-{
- int i;
-
- if (eti->cell_views_realized == 0)
- return;
-
- for (i = 0; i < eti->n_cells; i++)
- e_cell_unrealize (eti->cell_views [i]);
- eti->cell_views_realized = 0;
-}
-
-static void
-eti_detach_cell_views (ETableItem *eti)
-{
- int i;
-
- for (i = 0; i < eti->n_cells; i++){
- e_cell_kill_view (eti->cell_views [i]);
- eti->cell_views [i] = NULL;
- }
-
- g_free (eti->cell_views);
- eti->cell_views = NULL;
- eti->n_cells = 0;
-}
-
-static void
-eti_bounds (GnomeCanvasItem *item, double *x1, double *y1, double *x2, double *y2)
-{
- double i2c [6];
- ArtPoint c1, c2, i1, i2;
- ETableItem *eti = E_TABLE_ITEM (item);
-
- /* Wrong BBox's are the source of redraw nightmares */
-
- gnome_canvas_item_i2c_affine (GNOME_CANVAS_ITEM (eti), i2c);
-
- i1.x = eti->x1;
- i1.y = eti->y1;
- i2.x = eti->x1 + eti->width;
- i2.y = eti->y1 + eti->height;
- art_affine_point (&c1, &i1, i2c);
- art_affine_point (&c2, &i2, i2c);
-
- *x1 = c1.x;
- *y1 = c1.y;
- *x2 = c2.x + 1;
- *y2 = c2.y + 1;
-}
-
-static void
-eti_reflow (GnomeCanvasItem *item, gint flags)
-{
- ETableItem *eti = E_TABLE_ITEM (item);
-
- if (eti->needs_compute_height) {
- int new_height = eti_get_height (eti);
-
- if (new_height != eti->height) {
- eti->height = new_height;
- e_canvas_item_request_parent_reflow (GNOME_CANVAS_ITEM (eti));
- eti->needs_redraw = 1;
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM (eti));
- }
- eti->needs_compute_height = 0;
- }
- if (eti->needs_compute_width) {
- int new_width = e_table_header_total_width(eti->header);
- if (new_width != eti->width) {
- eti->width = new_width;
- e_canvas_item_request_parent_reflow (GNOME_CANVAS_ITEM (eti));
- eti->needs_redraw = 1;
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM (eti));
- }
- eti->needs_compute_width = 0;
- }
-}
-
-/*
- * GnomeCanvasItem::update method
- */
-static void
-eti_update (GnomeCanvasItem *item, double *affine, ArtSVP *clip_path, int flags)
-{
- ArtPoint o1, o2;
- ETableItem *eti = E_TABLE_ITEM (item);
-
- if (GNOME_CANVAS_ITEM_CLASS (eti_parent_class)->update)
- (*GNOME_CANVAS_ITEM_CLASS (eti_parent_class)->update)(item, affine, clip_path, flags);
-
- o1.x = item->x1;
- o1.y = item->y1;
- o2.x = item->x2;
- o2.y = item->y2;
-
- eti_bounds (item, &item->x1, &item->y1, &item->x2, &item->y2);
- if (item->x1 != o1.x ||
- item->y1 != o1.y ||
- item->x2 != o2.x ||
- item->y2 != o2.y) {
- gnome_canvas_request_redraw (item->canvas, o1.x, o1.y, o2.x, o2.y);
- eti->needs_redraw = 1;
- }
-
- if (eti->needs_redraw) {
- gnome_canvas_request_redraw (item->canvas, item->x1, item->y1,
- item->x2, item->y2);
- eti->needs_redraw = 0;
- }
-}
-
-/*
- * eti_remove_table_model:
- *
- * Invoked to release the table model associated with this ETableItem
- */
-static void
-eti_remove_table_model (ETableItem *eti)
-{
- if (!eti->table_model)
- return;
-
- gtk_signal_disconnect (GTK_OBJECT (eti->table_model),
- eti->table_model_pre_change_id);
- gtk_signal_disconnect (GTK_OBJECT (eti->table_model),
- eti->table_model_change_id);
- gtk_signal_disconnect (GTK_OBJECT (eti->table_model),
- eti->table_model_row_change_id);
- gtk_signal_disconnect (GTK_OBJECT (eti->table_model),
- eti->table_model_cell_change_id);
- gtk_signal_disconnect (GTK_OBJECT (eti->table_model),
- eti->table_model_rows_inserted_id);
- gtk_signal_disconnect (GTK_OBJECT (eti->table_model),
- eti->table_model_rows_deleted_id);
- gtk_object_unref (GTK_OBJECT (eti->table_model));
- if (eti->source_model)
- gtk_object_unref (GTK_OBJECT (eti->source_model));
-
- eti->table_model_pre_change_id = 0;
- eti->table_model_change_id = 0;
- eti->table_model_row_change_id = 0;
- eti->table_model_cell_change_id = 0;
- eti->table_model_rows_inserted_id = 0;
- eti->table_model_rows_deleted_id = 0;
- eti->table_model = NULL;
- eti->source_model = NULL;
- eti->uses_source_model = 0;
-}
-
-/*
- * eti_remove_table_model:
- *
- * Invoked to release the table model associated with this ETableItem
- */
-static void
-eti_remove_selection_model (ETableItem *eti)
-{
- if (!eti->selection)
- return;
-
- gtk_signal_disconnect (GTK_OBJECT (eti->selection),
- eti->selection_change_id);
- gtk_signal_disconnect (GTK_OBJECT (eti->selection),
- eti->cursor_change_id);
- gtk_signal_disconnect (GTK_OBJECT (eti->selection),
- eti->cursor_activated_id);
- gtk_object_unref (GTK_OBJECT (eti->selection));
-
- eti->selection_change_id = 0;
- eti->cursor_activated_id = 0;
- eti->selection = NULL;
-}
-
-/*
- * eti_remove_header_model:
- *
- * Invoked to release the header model associated with this ETableItem
- */
-static void
-eti_remove_header_model (ETableItem *eti)
-{
- if (!eti->header)
- return;
-
- gtk_signal_disconnect (GTK_OBJECT (eti->header),
- eti->header_structure_change_id);
- gtk_signal_disconnect (GTK_OBJECT (eti->header),
- eti->header_dim_change_id);
- gtk_signal_disconnect (GTK_OBJECT (eti->header),
- eti->header_request_width_id);
-
- if (eti->cell_views){
- eti_unrealize_cell_views (eti);
- eti_detach_cell_views (eti);
- }
- gtk_object_unref (GTK_OBJECT (eti->header));
-
-
- eti->header_structure_change_id = 0;
- eti->header_dim_change_id = 0;
- eti->header_request_width_id = 0;
- eti->header = NULL;
-}
-
-/*
- * eti_row_height_real:
- *
- * Returns the height used by row @row. This does not include the one-pixel
- * used as a separator between rows
- */
-static int
-eti_row_height_real (ETableItem *eti, int row)
-{
- const int cols = e_table_header_count (eti->header);
- int col;
- int h, max_h;
-
- g_assert (cols == 0 || eti->cell_views);
-
- max_h = 0;
-
- for (col = 0; col < cols; col++){
- h = e_cell_height (eti->cell_views [col], view_to_model_col(eti, col), col, row);
-
- if (h > max_h)
- max_h = h;
- }
- return max_h;
-}
-
-static void
-confirm_height_cache (ETableItem *eti)
-{
- int i;
-
- if (eti->height_cache)
- return;
- eti->height_cache = g_new(int, eti->rows);
- for (i = 0; i < eti->rows; i++) {
- eti->height_cache[i] = -1;
- }
-}
-
-static gboolean
-height_cache_idle(ETableItem *eti)
-{
- int changed = 0;
- int i;
- confirm_height_cache(eti);
- for (i = eti->height_cache_idle_count; i < eti->rows; i++) {
- if (eti->height_cache[i] == -1) {
- eti_row_height(eti, i);
- changed ++;
- if (changed >= 20)
- break;
- }
- }
- if (changed >= 20) {
- eti->height_cache_idle_count = i;
- return TRUE;
- }
- eti->height_cache_idle_id = 0;
- return FALSE;
-}
-
-static void
-free_height_cache (ETableItem *eti)
-{
- if (eti->height_cache)
- g_free (eti->height_cache);
- eti->height_cache = NULL;
- eti->height_cache_idle_count = 0;
-
- if (eti->height_cache_idle_id == 0)
- eti->height_cache_idle_id = g_idle_add_full(G_PRIORITY_LOW, (GSourceFunc) height_cache_idle, eti, NULL);
-}
-
-static void
-calculate_height_cache (ETableItem *eti)
-{
- free_height_cache(eti);
- confirm_height_cache(eti);
-}
-
-
-/*
- * eti_row_height:
- *
- * Returns the height used by row @row. This does not include the one-pixel
- * used as a separator between rows
- */
-static int
-eti_row_height (ETableItem *eti, int row)
-{
- if (!eti->height_cache) {
- calculate_height_cache (eti);
- }
- if (eti->height_cache[row] == -1) {
- eti->height_cache[row] = eti_row_height_real(eti, row);
- if (row > 0 &&
- eti->length_threshold != -1 &&
- eti->rows > eti->length_threshold &&
- eti->height_cache[row] != eti_row_height(eti, 0)) {
- eti->needs_compute_height = 1;
- e_canvas_item_request_reflow(GNOME_CANVAS_ITEM(eti));
- }
- }
- return eti->height_cache[row];
-}
-
-/*
- * eti_get_height:
- *
- * Returns the height of the ETableItem.
- *
- * The ETableItem might compute the whole height by asking every row its
- * size. There is a special mode (designed to work when there are too
- * many rows in the table that performing the previous step could take
- * too long) set by the ETableItem->length_threshold that would determine
- * when the height is computed by using the first row as the size for
- * every other row in the ETableItem.
- */
-static int
-eti_get_height (ETableItem *eti)
-{
- const int rows = eti->rows;
- int row;
- int height;
- int height_extra = eti->horizontal_draw_grid ? 1 : 0;
-
- if (rows == 0)
- return 0;
-
- if (eti->length_threshold != -1){
- if (rows > eti->length_threshold){
- int row_height = eti_row_height(eti, 0);
- if (eti->height_cache) {
- height = 0;
- for (row = 0; row < rows; row++) {
- if (eti->height_cache[row] == -1) {
- height += (row_height + height_extra) * (rows - row);
- break;
- }
- else
- height += eti->height_cache[row] + height_extra;
- }
- } else
- height = (eti_row_height (eti, 0) + height_extra) * rows;
-
- /*
- * 1 pixel at the top
- */
- return height + height_extra;
- }
- }
-
- height = height_extra;
- for (row = 0; row < rows; row++)
- height += eti_row_height (eti, row) + height_extra;
-
- return height;
-}
-
-static void
-eti_item_region_redraw (ETableItem *eti, int x0, int y0, int x1, int y1)
-{
- GnomeCanvasItem *item = GNOME_CANVAS_ITEM (eti);
- ArtDRect rect;
- double i2c [6];
-
- rect.x0 = x0;
- rect.y0 = y0;
- rect.x1 = x1;
- rect.y1 = y1;
-
- gnome_canvas_item_i2c_affine (item, i2c);
- art_drect_affine_transform (&rect, &rect, i2c);
-
- gnome_canvas_request_redraw (item->canvas, rect.x0, rect.y0, rect.x1, rect.y1);
-}
-
-/*
- * Callback routine: invoked before the ETableModel has suffers a change
- */
-static void
-eti_table_model_pre_change (ETableModel *table_model, ETableItem *eti)
-{
- if (eti_editing (eti))
- e_table_item_leave_edit (eti);
-}
-
-/*
- * Callback routine: invoked when the ETableModel has suffered a change
- */
-static void
-eti_table_model_changed (ETableModel *table_model, ETableItem *eti)
-{
- if (!(GTK_OBJECT_FLAGS(eti) & GNOME_CANVAS_ITEM_REALIZED))
- return;
-#ifdef SHOW_ON_CHANGED
- int view_row;
-#endif
-
- eti->rows = e_table_model_row_count (eti->table_model);
-
- free_height_cache(eti);
-
- eti->needs_compute_height = 1;
- e_canvas_item_request_reflow (GNOME_CANVAS_ITEM (eti));
- eti->needs_redraw = 1;
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM (eti));
-
-#ifdef SHOW_ON_CHANGED
- view_row = model_to_view_row(eti, eti->cursor_row);
- if (view_row >= 0 && eti->cursor_col >= 0)
- eti_request_region_show (eti, eti->cursor_col, view_row, eti->cursor_col, view_row);
-#endif
-}
-
-/*
- * Computes the distance between @start_row and @end_row in pixels
- */
-int
-e_table_item_row_diff (ETableItem *eti, int start_row, int end_row)
-{
- int row, total;
- int height_extra = eti->horizontal_draw_grid ? 1 : 0;
-
- total = 0;
-
- for (row = start_row; row < end_row; row++)
- total += eti_row_height (eti, row) + height_extra;
-
- return total;
-}
-
-/*
- * eti_request_region_redraw:
- *
- * Request a canvas redraw on the range (start_col, start_row) to (end_col, end_row).
- * This is inclusive (ie, you can use: 0,0-0,0 to redraw the first cell).
- *
- * The @border argument is a number of pixels around the region that should also be queued
- * for redraw. This is typically used by the focus routines to queue a redraw for the
- * border as well.
- */
-static void
-eti_request_region_redraw (ETableItem *eti,
- int start_col, int start_row,
- int end_col, int end_row, int border)
-{
- int x1, y1, width, height;
-
- if (eti->rows > 0) {
-
- x1 = e_table_header_col_diff (eti->header, 0, start_col);
- y1 = e_table_item_row_diff (eti, 0, start_row);
- width = e_table_header_col_diff (eti->header, start_col, end_col + 1);
- height = e_table_item_row_diff (eti, start_row, end_row + 1);
-
- eti_item_region_redraw (eti, eti->x1 + x1 - border,
- eti->y1 + y1 - border,
- eti->x1 + x1 + width + 1 + border,
- eti->y1 + y1 + height + 1 + border);
- }
-}
-
-/*
- * eti_request_region_show
- *
- * Request a canvas show on the range (start_col, start_row) to (end_col, end_row).
- * This is inclusive (ie, you can use: 0,0-0,0 to show the first cell).
- */
-static void
-eti_request_region_show (ETableItem *eti,
- int start_col, int start_row,
- int end_col, int end_row, int delay)
-{
- int x1, y1, x2, y2;
-
- x1 = e_table_header_col_diff (eti->header, 0, start_col);
- y1 = e_table_item_row_diff (eti, 0, start_row);
- x2 = x1 + e_table_header_col_diff (eti->header, start_col, end_col + 1);
- y2 = y1 + e_table_item_row_diff (eti, start_row, end_row + 1);
-
- if (delay)
- e_canvas_item_show_area_delayed(GNOME_CANVAS_ITEM(eti), x1, y1, x2, y2, delay);
- else
- e_canvas_item_show_area(GNOME_CANVAS_ITEM(eti), x1, y1, x2, y2);
-}
-
-static void
-eti_table_model_row_changed (ETableModel *table_model, int row, ETableItem *eti)
-{
- if (!(GTK_OBJECT_FLAGS(eti) & GNOME_CANVAS_ITEM_REALIZED))
- return;
- if (eti->renderers_can_change_size &&
- eti->height_cache && eti->height_cache[row] != -1 &&
- eti_row_height_real(eti, row) != eti->height_cache[row]) {
- eti_table_model_changed (table_model, eti);
- return;
- }
-
- eti_request_region_redraw (eti, 0, row, eti->cols - 1, row, 0);
-}
-
-static void
-eti_table_model_cell_changed (ETableModel *table_model, int col, int row, ETableItem *eti)
-{
- if (!(GTK_OBJECT_FLAGS(eti) & GNOME_CANVAS_ITEM_REALIZED))
- return;
- if (eti->renderers_can_change_size &&
- eti->height_cache && eti->height_cache[row] != -1 &&
- eti_row_height_real(eti, row) != eti->height_cache[row]) {
- eti_table_model_changed (table_model, eti);
- return;
- }
-
- eti_request_region_redraw (eti, 0, row, eti->cols - 1, row, 0);
-}
-
-static void
-eti_table_model_rows_inserted (ETableModel *table_model, int row, int count, ETableItem *eti)
-{
- if (!(GTK_OBJECT_FLAGS(eti) & GNOME_CANVAS_ITEM_REALIZED))
- return;
- eti->rows = e_table_model_row_count (eti->table_model);
-
- if (eti->height_cache) {
- int i;
- eti->height_cache = g_renew(int, eti->height_cache, eti->rows);
- memmove(eti->height_cache + row + count, eti->height_cache + row, (eti->rows - count - row) * sizeof(int));
- for (i = row; i < row + count; i++)
- eti->height_cache[i] = -1;
- }
-
- eti->needs_compute_height = 1;
- e_canvas_item_request_reflow (GNOME_CANVAS_ITEM (eti));
- eti->needs_redraw = 1;
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM (eti));
-}
-
-static void
-eti_table_model_rows_deleted (ETableModel *table_model, int row, int count, ETableItem *eti)
-{
- if (!(GTK_OBJECT_FLAGS(eti) & GNOME_CANVAS_ITEM_REALIZED))
- return;
- eti->rows = e_table_model_row_count (eti->table_model);
-
- if (eti->height_cache)
- memmove(eti->height_cache + row, eti->height_cache + row + count, (eti->rows - row) * sizeof(int));
-
- eti->needs_compute_height = 1;
- e_canvas_item_request_reflow (GNOME_CANVAS_ITEM (eti));
- eti->needs_redraw = 1;
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM (eti));
-}
-
-/**
- * e_table_item_redraw_range
- * @eti: %ETableItem which will be redrawn
- * @start_col: The first col to redraw.
- * @start_row: The first row to redraw.
- * @end_col: The last col to redraw.
- * @end_row: The last row to redraw.
- *
- * This routine redraws the given %ETableItem in the range given. The
- * range is inclusive at both ends.
- */
-void
-e_table_item_redraw_range (ETableItem *eti,
- int start_col, int start_row,
- int end_col, int end_row)
-{
- int border;
- int cursor_col, cursor_row;
-
- g_return_if_fail (eti != NULL);
- g_return_if_fail (E_IS_TABLE_ITEM (eti));
-
- gtk_object_get(GTK_OBJECT(eti->selection),
- "cursor_col", &cursor_col,
- "cursor_row", &cursor_row,
- NULL);
-
- if ((start_col == cursor_col) ||
- (end_col == cursor_col) ||
- (view_to_model_row(eti, start_row) == cursor_row) ||
- (view_to_model_row(eti, end_row) == cursor_row))
- border = 2;
- else
- border = 0;
-
- eti_request_region_redraw(eti, start_col, start_row, end_col, end_row, border);
-}
-
-static void
-eti_add_table_model (ETableItem *eti, ETableModel *table_model)
-{
- g_assert (eti->table_model == NULL);
-
- eti->table_model = table_model;
- gtk_object_ref (GTK_OBJECT (eti->table_model));
-
- eti->table_model_pre_change_id = gtk_signal_connect (
- GTK_OBJECT (table_model), "model_pre_change",
- GTK_SIGNAL_FUNC (eti_table_model_pre_change), eti);
-
- eti->table_model_change_id = gtk_signal_connect (
- GTK_OBJECT (table_model), "model_changed",
- GTK_SIGNAL_FUNC (eti_table_model_changed), eti);
-
- eti->table_model_row_change_id = gtk_signal_connect (
- GTK_OBJECT (table_model), "model_row_changed",
- GTK_SIGNAL_FUNC (eti_table_model_row_changed), eti);
-
- eti->table_model_cell_change_id = gtk_signal_connect (
- GTK_OBJECT (table_model), "model_cell_changed",
- GTK_SIGNAL_FUNC (eti_table_model_cell_changed), eti);
-
- eti->table_model_rows_inserted_id = gtk_signal_connect (
- GTK_OBJECT (table_model), "model_rows_inserted",
- GTK_SIGNAL_FUNC (eti_table_model_rows_inserted), eti);
-
- eti->table_model_rows_deleted_id = gtk_signal_connect (
- GTK_OBJECT (table_model), "model_rows_deleted",
- GTK_SIGNAL_FUNC (eti_table_model_rows_deleted), eti);
-
- if (eti->header) {
- eti_detach_cell_views (eti);
- eti_attach_cell_views (eti);
- }
-
- if (E_IS_TABLE_SUBSET(table_model)) {
- eti->uses_source_model = 1;
- eti->source_model = E_TABLE_SUBSET(table_model)->source;
- if (eti->source_model)
- gtk_object_ref(GTK_OBJECT(eti->source_model));
- }
-
- eti_table_model_changed (table_model, eti);
-}
-
-static void
-eti_add_selection_model (ETableItem *eti, ESelectionModel *selection)
-{
- g_assert (eti->selection == NULL);
-
- eti->selection = selection;
- gtk_object_ref (GTK_OBJECT (eti->selection));
-
- eti->selection_change_id = gtk_signal_connect (
- GTK_OBJECT (selection), "selection_changed",
- GTK_SIGNAL_FUNC (eti_selection_change), eti);
-
- eti->cursor_change_id = gtk_signal_connect (
- GTK_OBJECT (selection), "cursor_changed",
- GTK_SIGNAL_FUNC (eti_cursor_change), eti);
-
- eti->cursor_activated_id = gtk_signal_connect (
- GTK_OBJECT (selection), "cursor_activated",
- GTK_SIGNAL_FUNC (eti_cursor_activated), eti);
-
- eti_selection_change(selection, eti);
-}
-
-static void
-eti_header_dim_changed (ETableHeader *eth, int col, ETableItem *eti)
-{
- eti->needs_compute_width = 1;
- e_canvas_item_request_reflow (GNOME_CANVAS_ITEM (eti));
- eti->needs_redraw = 1;
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM (eti));
-}
-
-static void
-eti_header_structure_changed (ETableHeader *eth, ETableItem *eti)
-{
- eti->cols = e_table_header_count (eti->header);
-
- /*
- * There should be at least one column
- * BUT: then you can't remove all columns from a header and add new ones.
- */
- /*g_assert (eti->cols != 0);*/
-
- if (eti->cell_views){
- eti_unrealize_cell_views (eti);
- eti_detach_cell_views (eti);
- eti_attach_cell_views (eti);
- eti_realize_cell_views (eti);
- } else {
- if (eti->table_model) {
- eti_attach_cell_views (eti);
- eti_realize_cell_views (eti);
- }
- }
- eti->needs_compute_width = 1;
- e_canvas_item_request_reflow (GNOME_CANVAS_ITEM (eti));
- eti->needs_redraw = 1;
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM (eti));
-}
-
-static int
-eti_request_column_width (ETableHeader *eth, int col, ETableItem *eti)
-{
- int width = 0;
-
- if (eti->cell_views && eti->cell_views_realized) {
- width = e_cell_max_width (eti->cell_views[col], view_to_model_col(eti, col), col);
- }
-
- return width;
-}
-
-static void
-eti_add_header_model (ETableItem *eti, ETableHeader *header)
-{
- g_assert (eti->header == NULL);
-
- eti->header = header;
- gtk_object_ref (GTK_OBJECT (header));
-
- eti_header_structure_changed (header, eti);
-
- eti->header_dim_change_id = gtk_signal_connect (
- GTK_OBJECT (header), "dimension_change",
- GTK_SIGNAL_FUNC (eti_header_dim_changed), eti);
-
- eti->header_structure_change_id = gtk_signal_connect (
- GTK_OBJECT (header), "structure_change",
- GTK_SIGNAL_FUNC (eti_header_structure_changed), eti);
-
- eti->header_request_width_id = gtk_signal_connect
- (GTK_OBJECT (header), "request_width",
- GTK_SIGNAL_FUNC (eti_request_column_width), eti);
-}
-
-/*
- * GtkObject::destroy method
- */
-static void
-eti_destroy (GtkObject *object)
-{
- ETableItem *eti = E_TABLE_ITEM (object);
-
- eti_remove_header_model (eti);
- eti_remove_table_model (eti);
- eti_remove_selection_model (eti);
-
- if (eti->height_cache_idle_id)
- g_source_remove(eti->height_cache_idle_id);
-
- if (eti->height_cache)
- g_free (eti->height_cache);
- eti->height_cache = NULL;
- eti->height_cache_idle_count = 0;
-
- e_canvas_hide_tooltip (E_CANVAS(GNOME_CANVAS_ITEM(eti)->canvas));
- if (eti->tooltip->background)
- gdk_color_free (eti->tooltip->background);
- if (eti->tooltip->foreground)
- gdk_color_free (eti->tooltip->foreground);
- if (eti->tooltip->timer) {
- gtk_timeout_remove (eti->tooltip->timer);
- eti->tooltip->timer = 0;
- }
- g_free (eti->tooltip);
-
- if (GTK_OBJECT_CLASS (eti_parent_class)->destroy)
- (*GTK_OBJECT_CLASS (eti_parent_class)->destroy) (object);
-}
-
-static void
-eti_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- GnomeCanvasItem *item;
- ETableItem *eti;
- int cursor_col;
-
- item = GNOME_CANVAS_ITEM (o);
- eti = E_TABLE_ITEM (o);
-
- switch (arg_id){
- case ARG_TABLE_HEADER:
- eti_remove_header_model (eti);
- eti_add_header_model (eti, E_TABLE_HEADER(GTK_VALUE_OBJECT (*arg)));
- break;
-
- case ARG_TABLE_MODEL:
- eti_remove_table_model (eti);
- eti_add_table_model (eti, E_TABLE_MODEL(GTK_VALUE_OBJECT (*arg)));
- break;
-
- case ARG_SELECTION_MODEL:
- eti_remove_selection_model (eti);
- if (GTK_VALUE_OBJECT (*arg))
- eti_add_selection_model (eti, E_SELECTION_MODEL(GTK_VALUE_OBJECT (*arg)));
- break;
-
- case ARG_LENGTH_THRESHOLD:
- eti->length_threshold = GTK_VALUE_INT (*arg);
- break;
-
- case ARG_TABLE_ALTERNATING_ROW_COLORS:
- eti->alternating_row_colors = GTK_VALUE_BOOL (*arg);
- break;
-
- case ARG_TABLE_HORIZONTAL_DRAW_GRID:
- eti->horizontal_draw_grid = GTK_VALUE_BOOL (*arg);
- break;
-
- case ARG_TABLE_VERTICAL_DRAW_GRID:
- eti->vertical_draw_grid = GTK_VALUE_BOOL (*arg);
- break;
-
- case ARG_TABLE_DRAW_FOCUS:
- eti->draw_focus = GTK_VALUE_BOOL (*arg);
- break;
-
- case ARG_CURSOR_MODE:
- eti->cursor_mode = GTK_VALUE_INT (*arg);
- break;
-
- case ARG_MINIMUM_WIDTH:
- case ARG_WIDTH:
- if ((eti->minimum_width == eti->width && GTK_VALUE_DOUBLE (*arg) > eti->width) ||
- GTK_VALUE_DOUBLE (*arg) < eti->width) {
- eti->needs_compute_width = 1;
- e_canvas_item_request_reflow (GNOME_CANVAS_ITEM(eti));
- }
- eti->minimum_width = GTK_VALUE_DOUBLE (*arg);
- break;
- case ARG_CURSOR_ROW:
- gtk_object_get(GTK_OBJECT(eti->selection),
- "cursor_col", &cursor_col,
- NULL);
-
- e_table_item_focus (eti, cursor_col != -1 ? cursor_col : 0, view_to_model_row(eti, GTK_VALUE_INT (*arg)), 0);
- break;
- }
- eti->needs_redraw = 1;
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM(eti));
-}
-
-static void
-eti_get_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- GnomeCanvasItem *item;
- ETableItem *eti;
- int row;
-
- item = GNOME_CANVAS_ITEM (o);
- eti = E_TABLE_ITEM (o);
-
- switch (arg_id){
- case ARG_WIDTH:
- GTK_VALUE_DOUBLE (*arg) = eti->width;
- break;
- case ARG_HEIGHT:
- GTK_VALUE_DOUBLE (*arg) = eti->height;
- break;
- case ARG_MINIMUM_WIDTH:
- GTK_VALUE_DOUBLE (*arg) = eti->minimum_width;
- break;
- case ARG_CURSOR_ROW:
- gtk_object_get(GTK_OBJECT(eti->selection),
- "cursor_row", &row,
- NULL);
- GTK_VALUE_INT (*arg) = model_to_view_row(eti, row);
- break;
- default:
- arg->type = GTK_TYPE_INVALID;
- }
-}
-
-static void
-eti_init (GnomeCanvasItem *item)
-{
- ETableItem *eti = E_TABLE_ITEM (item);
-
- eti->editing_col = -1;
- eti->editing_row = -1;
- eti->height = 0;
- eti->width = 0;
- eti->minimum_width = 0;
-
- eti->height_cache = NULL;
- eti->height_cache_idle_id = 0;
- eti->height_cache_idle_count = 0;
-
- eti->length_threshold = -1;
- eti->renderers_can_change_size = 1;
-
- eti->uses_source_model = 0;
- eti->source_model = NULL;
-
- eti->row_guess = -1;
- eti->cursor_mode = E_CURSOR_SIMPLE;
-
- eti->selection_change_id = 0;
- eti->cursor_change_id = 0;
- eti->cursor_activated_id = 0;
- eti->selection = NULL;
-
- eti->needs_redraw = 0;
- eti->needs_compute_height = 0;
-
- eti->in_key_press = 0;
-
- eti->tooltip = g_new0 (ETableTooltip, 1);
- eti->tooltip->timer = 0;
- eti->tooltip->eti = GNOME_CANVAS_ITEM (eti);
- eti->tooltip->background = NULL;
- eti->tooltip->foreground = NULL;
-
- eti->grabbed_col = -1;
- eti->grabbed_row = -1;
-
- e_canvas_item_set_reflow_callback (GNOME_CANVAS_ITEM (eti), eti_reflow);
-}
-
-#define gray50_width 2
-#define gray50_height 2
-static const char gray50_bits[] = {
- 0x02, 0x01, };
-
-static void
-eti_realize (GnomeCanvasItem *item)
-{
- ETableItem *eti = E_TABLE_ITEM (item);
- GtkWidget *canvas_widget = GTK_WIDGET (item->canvas);
- GdkWindow *window;
-
- if (GNOME_CANVAS_ITEM_CLASS (eti_parent_class)->realize)
- (*GNOME_CANVAS_ITEM_CLASS (eti_parent_class)->realize)(item);
-
-
- eti->rows = e_table_model_row_count (eti->table_model);
-
- /*
- * Gdk Resource allocation
- */
- window = canvas_widget->window;
-
- eti->fill_gc = gdk_gc_new (window);
-
- eti->grid_gc = gdk_gc_new (window);
- gdk_gc_set_foreground (eti->grid_gc, &canvas_widget->style->dark [GTK_STATE_NORMAL]);
- eti->focus_gc = gdk_gc_new (window);
- gdk_gc_set_foreground (eti->focus_gc, &canvas_widget->style->bg [GTK_STATE_NORMAL]);
- gdk_gc_set_background (eti->focus_gc, &canvas_widget->style->fg [GTK_STATE_NORMAL]);
- eti->stipple = gdk_bitmap_create_from_data (NULL, gray50_bits, gray50_width, gray50_height);
- gdk_gc_set_ts_origin (eti->focus_gc, 0, 0);
- gdk_gc_set_stipple (eti->focus_gc, eti->stipple);
- gdk_gc_set_fill (eti->focus_gc, GDK_OPAQUE_STIPPLED);
-
-
- if (eti->cell_views == NULL)
- eti_attach_cell_views (eti);
-
- eti_realize_cell_views (eti);
-
- free_height_cache(eti);
-
- eti->needs_compute_height = 1;
- eti->needs_compute_width = 1;
- e_canvas_item_request_reflow (GNOME_CANVAS_ITEM (eti));
- eti->needs_redraw = 1;
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM (eti));
-}
-
-static void
-eti_unrealize (GnomeCanvasItem *item)
-{
- ETableItem *eti = E_TABLE_ITEM (item);
-
- if (eti_editing (eti))
- e_table_item_leave_edit (eti);
-
- gdk_gc_unref (eti->fill_gc);
- eti->fill_gc = NULL;
- gdk_gc_unref (eti->grid_gc);
- eti->grid_gc = NULL;
- gdk_gc_unref (eti->focus_gc);
- eti->focus_gc = NULL;
- gdk_bitmap_unref (eti->stipple);
- eti->stipple = NULL;
-
- eti_unrealize_cell_views (eti);
-
- eti->height = 0;
-
- if (GNOME_CANVAS_ITEM_CLASS (eti_parent_class)->unrealize)
- (*GNOME_CANVAS_ITEM_CLASS (eti_parent_class)->unrealize)(item);
-}
-
-
-
-static void
-eti_draw (GnomeCanvasItem *item, GdkDrawable *drawable, int x, int y, int width, int height)
-{
- ETableItem *eti = E_TABLE_ITEM (item);
- const int rows = eti->rows;
- const int cols = eti->cols;
- int row, col, y1, y2;
- int first_col, last_col, x_offset;
- int first_row, last_row, y_offset, yd;
- int x1, x2;
- int f_x1, f_x2, f_y1, f_y2;
- gboolean f_found;
- double i2c [6];
- ArtPoint eti_base, eti_base_item, lower_right;
- GtkWidget *canvas = GTK_WIDGET(item->canvas);
- int height_extra = eti->horizontal_draw_grid ? 1 : 0;
-
- /*
- * Find out our real position after grouping
- */
- gnome_canvas_item_i2c_affine (item, i2c);
- eti_base_item.x = eti->x1;
- eti_base_item.y = eti->y1;
- art_affine_point (&eti_base, &eti_base_item, i2c);
-
- eti_base_item.x = eti->x1 + eti->width;
- eti_base_item.y = eti->y1 + eti->height;
- art_affine_point (&lower_right, &eti_base_item, i2c);
-
- /*
- * First column to draw, last column to draw
- */
- first_col = -1;
- last_col = x_offset = 0;
- x1 = x2 = floor (eti_base.x);
- for (col = 0; col < cols; col++, x1 = x2){
- ETableCol *ecol = e_table_header_get_column (eti->header, col);
-
- x2 = x1 + ecol->width;
-
- if (x1 > (x + width))
- break;
- if (x2 < x)
- continue;
- if (first_col == -1){
- x_offset = x1 - x;
- first_col = col;
- }
- }
- last_col = col;
-
- /*
- * Nothing to paint
- */
- if (first_col == -1)
- return;
-
- /*
- * Compute row span.
- */
- first_row = -1;
- y_offset = 0;
- y1 = y2 = floor (eti_base.y) + height_extra;
- for (row = 0; row < rows; row++, y1 = y2){
-
- y2 += ETI_ROW_HEIGHT (eti, row) + height_extra;
-
- if (y1 > y + height)
- break;
-
- if (y2 < y)
- continue;
-
- if (first_row == -1){
- y_offset = y1 - y;
- first_row = row;
- }
- }
- last_row = row;
-
- if (first_row == -1)
- return;
-
- /*
- * Draw cells
- */
- yd = y_offset;
- f_x1 = f_x2 = f_y1 = f_y2 = -1;
- f_found = FALSE;
-
- if (eti->horizontal_draw_grid && first_row == 0){
- gdk_draw_line (
- drawable, eti->grid_gc,
- eti_base.x - x, yd, eti_base.x + eti->width - x, yd);
- }
-
- yd += height_extra;
-
- for (row = first_row; row < last_row; row++){
- int xd, height;
- gboolean selected;
- gint cursor_col, cursor_row;
-
- height = ETI_ROW_HEIGHT (eti, row);
-
- xd = x_offset;
-/* printf ("paint: %d %d\n", yd, yd + height); */
-
- selected = e_selection_model_is_row_selected(E_SELECTION_MODEL (eti->selection), view_to_model_row(eti,row));
-
- gtk_object_get(GTK_OBJECT(eti->selection),
- "cursor_col", &cursor_col,
- "cursor_row", &cursor_row,
- NULL);
-
- for (col = first_col; col < last_col; col++){
- ETableCol *ecol = e_table_header_get_column (eti->header, col);
- ECellView *ecell_view = eti->cell_views [col];
- gboolean col_selected = selected;
- ECellFlags flags;
- gboolean free_background;
- GdkColor *background;
-
- switch (eti->cursor_mode) {
- case E_CURSOR_SIMPLE:
- case E_CURSOR_SPREADSHEET:
- if (cursor_col == ecol->col_idx && cursor_row == view_to_model_row(eti, row))
- col_selected = !col_selected;
- break;
- case E_CURSOR_LINE:
- /* Nothing */
- break;
- }
-
- background = eti_get_cell_background_color (eti, row, col, col_selected, &free_background);
-
- gdk_gc_set_foreground (eti->fill_gc, background);
- gdk_draw_rectangle (drawable, eti->fill_gc, TRUE,
- xd, yd, ecol->width, height);
-
- if (free_background)
- gdk_color_free (background);
-
- flags = col_selected ? E_CELL_SELECTED : 0;
- flags |= GTK_WIDGET_HAS_FOCUS(canvas) ? E_CELL_FOCUSED : 0;
- switch (ecol->justification) {
- case GTK_JUSTIFY_LEFT:
- flags |= E_CELL_JUSTIFY_LEFT;
- break;
- case GTK_JUSTIFY_RIGHT:
- flags |= E_CELL_JUSTIFY_RIGHT;
- break;
- case GTK_JUSTIFY_CENTER:
- flags |= E_CELL_JUSTIFY_CENTER;
- break;
- case GTK_JUSTIFY_FILL:
- flags |= E_CELL_JUSTIFY_FILL;
- break;
- }
-
- e_cell_draw (ecell_view, drawable, ecol->col_idx, col, row, flags,
- xd, yd, xd + ecol->width, yd + height);
-
- if (!f_found) {
- switch (eti->cursor_mode) {
- case E_CURSOR_LINE:
- if (view_to_model_row(eti, row) == cursor_row) {
- f_x1 = floor (eti_base.x) - x;
- f_x2 = floor (lower_right.x) - x;
- f_y1 = yd;
- f_y2 = yd + height;
- f_found = TRUE;
- }
- break;
- case E_CURSOR_SIMPLE:
- case E_CURSOR_SPREADSHEET:
- if (view_to_model_col(eti, col) == cursor_col && view_to_model_row(eti, row) == cursor_row) {
- f_x1 = xd;
- f_x2 = xd + ecol->width;
- f_y1 = yd;
- f_y2 = yd + height;
- f_found = TRUE;
- }
- break;
- }
- }
-
- xd += ecol->width;
- }
- yd += height;
-
- if (eti->horizontal_draw_grid) {
- gdk_draw_line (
- drawable, eti->grid_gc,
- eti_base.x - x, yd, eti_base.x + eti->width - x, yd);
-
- yd++;
- }
- }
-
- if (eti->vertical_draw_grid){
- int xd = x_offset;
-
- for (col = first_col; col <= last_col; col++){
- ETableCol *ecol = e_table_header_get_column (eti->header, col);
-
- gdk_draw_line (
- drawable, eti->grid_gc,
- xd, y_offset, xd, yd - 1);
-
- /*
- * This looks wierd, but it is to draw the last line
- */
- if (ecol)
- xd += ecol->width;
- }
- }
-
- /*
- * Draw focus
- */
- if (eti->draw_focus && f_found) {
- gdk_gc_set_ts_origin (eti->focus_gc, f_x1, f_y1);
- gdk_draw_rectangle (drawable, eti->focus_gc, FALSE,
- f_x1, f_y1, f_x2 - f_x1 - 1, f_y2 - f_y1 - 1);
- }
-}
-
-static double
-eti_point (GnomeCanvasItem *item, double x, double y, int cx, int cy,
- GnomeCanvasItem **actual_item)
-{
- *actual_item = item;
-
- return 0.0;
-}
-
-static gboolean
-find_cell (ETableItem *eti, double x, double y, int *col_res, int *row_res, double *x1_res, double *y1_res)
-{
- const int cols = eti->cols;
- const int rows = eti->rows;
- gdouble x1, y1, x2, y2;
- int col, row;
-
- int height_extra = eti->horizontal_draw_grid ? 1 : 0;
-
- /* FIXME: this routine is inneficient, fix later */
-
- if (eti->grabbed_col >= 0 && eti->grabbed_row >= 0) {
- *col_res = eti->grabbed_col;
- *row_res = eti->grabbed_row;
- *x1_res = x - eti->x1 - e_table_header_col_diff (eti->header, 0, eti->grabbed_col);
- *y1_res = y - eti->y1 - e_table_item_row_diff (eti, 0, eti->grabbed_row);
- return TRUE;
- }
-
- if (cols == 0 || rows == 0)
- return FALSE;
-
- x -= eti->x1;
- y -= eti->y1;
-
- x1 = 0;
- for (col = 0; col < cols - 1; col++, x1 = x2){
- ETableCol *ecol = e_table_header_get_column (eti->header, col);
-
- if (x < x1)
- return FALSE;
-
- x2 = x1 + ecol->width;
-
- if (x <= x2)
- break;
- }
-
- y1 = y2 = 0;
- for (row = 0; row < rows - 1; row++, y1 = y2){
- if (y < y1)
- return FALSE;
-
- y2 += ETI_ROW_HEIGHT (eti, row) + height_extra;
-
- if (y <= y2)
- break;
- }
- *col_res = col;
- if (x1_res)
- *x1_res = x - x1;
- *row_res = row;
- if (y1_res)
- *y1_res = y - y1;
- return TRUE;
-}
-
-static void
-eti_cursor_move (ETableItem *eti, gint row, gint column)
-{
- e_table_item_leave_edit (eti);
- e_table_item_focus (eti, view_to_model_col(eti, column), view_to_model_row(eti, row), 0);
-}
-
-static void
-eti_cursor_move_left (ETableItem *eti)
-{
- int cursor_col, cursor_row;
- gtk_object_get(GTK_OBJECT(eti->selection),
- "cursor_col", &cursor_col,
- "cursor_row", &cursor_row,
- NULL);
-
- eti_cursor_move (eti, model_to_view_row(eti, cursor_row), model_to_view_col(eti, cursor_col) - 1);
-}
-
-static void
-eti_cursor_move_right (ETableItem *eti)
-{
- int cursor_col, cursor_row;
- gtk_object_get(GTK_OBJECT(eti->selection),
- "cursor_col", &cursor_col,
- "cursor_row", &cursor_row,
- NULL);
-
- eti_cursor_move (eti, model_to_view_row(eti, cursor_row), model_to_view_col(eti, cursor_col) + 1);
-}
-
-#ifdef DO_TOOLTIPS
-static int
-_do_tooltip (ETableItem *eti)
-{
- ECellView *ecell_view;
- int x = 0, y = 0;
- int i;
- int height_extra = eti->horizontal_draw_grid ? 1 : 0;
- gboolean free_color;
- ETableCol *ecol;
- gboolean selected;
- int cursor_row, cursor_col;
-
- e_canvas_hide_tooltip (E_CANVAS(GNOME_CANVAS_ITEM(eti)->canvas));
-
- if (eti_editing (eti))
- return FALSE;
-
- ecell_view = eti->cell_views[eti->tooltip->col];
-
- for (i = 0; i < eti->tooltip->col; i++)
- x += eti->header->columns[i]->width;
- eti->tooltip->x = x;
-
- for (i = 0; i < eti->tooltip->row; i++)
- y += (ETI_ROW_HEIGHT (eti, i) + height_extra);
- eti->tooltip->y = y;
- eti->tooltip->row_height = ETI_ROW_HEIGHT (eti, i);
-
- selected = e_selection_model_is_row_selected(E_SELECTION_MODEL (eti->selection), view_to_model_row(eti,eti->tooltip->row));
-
- if (eti->tooltip->foreground)
- gdk_color_free (eti->tooltip->foreground);
- if (eti->tooltip->background)
- gdk_color_free (eti->tooltip->background);
-
- switch (eti->cursor_mode) {
- case E_CURSOR_SIMPLE:
- case E_CURSOR_SPREADSHEET:
- ecol = e_table_header_get_column (eti->header, eti->tooltip->col);
-
- gtk_object_get(GTK_OBJECT(eti->selection),
- "cursor_row", &cursor_row,
- "cursor_col", &cursor_col,
- NULL);
-
- if (cursor_col == ecol->col_idx && cursor_row == view_to_model_row(eti, eti->tooltip->row))
- selected = !selected;
- break;
- case E_CURSOR_LINE:
- /* Nothing */
- break;
- }
-
- eti->tooltip->background = eti_get_cell_background_color (eti, eti->tooltip->row, eti->tooltip->col, selected, &free_color);
- if (!free_color)
- eti->tooltip->background = gdk_color_copy(eti->tooltip->background);
-
- eti->tooltip->foreground = eti_get_cell_foreground_color (eti, eti->tooltip->row, eti->tooltip->col, selected, &free_color);
- if (!free_color)
- eti->tooltip->foreground = gdk_color_copy(eti->tooltip->foreground);
-
- e_cell_show_tooltip (ecell_view,
- view_to_model_col (eti, eti->tooltip->col),
- eti->tooltip->col,
- eti->tooltip->row,
- eti->header->columns[eti->tooltip->col]->width,
- eti->tooltip);
- return FALSE;
-}
-#endif
-
-static gint
-eti_e_cell_event (ETableItem *item, ECellView *ecell_view, GdkEvent *event, int time, int model_col, int view_col, int row, ECellFlags flags)
-{
- ECellActions actions = 0;
- gint ret_val;
-
- ret_val = e_cell_event (ecell_view, event, model_col, view_col, row, flags, &actions);
-
- if (actions & E_CELL_GRAB) {
- gnome_canvas_item_grab(GNOME_CANVAS_ITEM(item), GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK, NULL, time);
- item->grabbed_col = view_col;
- item->grabbed_row = row;
- }
-
- if (actions & E_CELL_UNGRAB) {
- gnome_canvas_item_ungrab(GNOME_CANVAS_ITEM(item), time);
- item->grabbed_col = -1;
- item->grabbed_row = -1;
- }
-
- return ret_val;
-}
-
-/* FIXME: cursor */
-static int
-eti_event (GnomeCanvasItem *item, GdkEvent *e)
-{
- ETableItem *eti = E_TABLE_ITEM (item);
- ECellView *ecell_view;
- gint return_val = TRUE;
-
- switch (e->type){
- case GDK_BUTTON_PRESS: {
- double x1, y1;
- GdkEventButton button;
- int col, row;
- gint cursor_row, cursor_col;
-
- if (eti->tooltip->timer) {
- gtk_timeout_remove (eti->tooltip->timer);
- eti->tooltip->timer = 0;
- }
-
- switch (e->button.button) {
- case 1: /* Fall through. */
- case 2:
- e_canvas_item_grab_focus(GNOME_CANVAS_ITEM(eti), TRUE);
- gnome_canvas_item_w2i (item, &e->button.x, &e->button.y);
-
- if (!find_cell (eti, e->button.x, e->button.y, &col, &row, &x1, &y1)) {
- if (eti_editing (eti))
- e_table_item_leave_edit (eti);
- return TRUE;
- }
-
- ecell_view = eti->cell_views [col];
- button = *(GdkEventButton *)e;
- button.x = x1;
- button.y = y1;
-
- return_val = eti_e_cell_event (eti, ecell_view, (GdkEvent *) &button, button.time, view_to_model_col(eti, col), col, row, 0);
- if (return_val)
- return TRUE;
-
- return_val = FALSE;
- gtk_signal_emit (GTK_OBJECT (eti), eti_signals [CLICK],
- row, view_to_model_col(eti, col), &button, &return_val);
- if (return_val)
- return TRUE;
-
- e_selection_model_do_something(E_SELECTION_MODEL (eti->selection), view_to_model_row(eti, row), view_to_model_col(eti, col), button.state);
-
- gtk_object_get(GTK_OBJECT(eti->selection),
- "cursor_row", &cursor_row,
- "cursor_col", &cursor_col,
- NULL);
-
- if (cursor_row == view_to_model_row(eti, row) && cursor_col == view_to_model_col(eti, col)){
-
- if ((!eti_editing(eti)) && e_table_model_is_cell_editable(eti->table_model, col, row)) {
- e_table_item_enter_edit (eti, col, row);
- }
-
- /*
- * Adjust the event positions
- */
-
- return_val = eti_e_cell_event (eti, ecell_view, (GdkEvent *) &button, button.time,
- view_to_model_col(eti, col), col, row, E_CELL_EDITING);
- }
- d(g_print("Single click\n"));
-
- break;
- case 3:
- e_canvas_item_grab_focus(GNOME_CANVAS_ITEM(eti), TRUE);
- gnome_canvas_item_w2i (item, &e->button.x, &e->button.y);
- if (!find_cell (eti, e->button.x, e->button.y, &col, &row, &x1, &y1))
- return TRUE;
-
- e_selection_model_maybe_do_something(E_SELECTION_MODEL (eti->selection), view_to_model_row(eti, row), view_to_model_col(eti, col), 0);
-
- gtk_signal_emit (GTK_OBJECT (eti), eti_signals [RIGHT_CLICK],
- row, view_to_model_col(eti, col), e, &return_val);
- break;
- case 4:
- case 5:
- return FALSE;
- break;
-
- }
- break;
- }
-
- case GDK_BUTTON_RELEASE: {
- double x1, y1;
- int col, row;
- gint cursor_row, cursor_col;
-
- if (eti->tooltip->timer) {
- gtk_timeout_remove (eti->tooltip->timer);
- eti->tooltip->timer = 0;
- }
- e_canvas_hide_tooltip (E_CANVAS(GNOME_CANVAS_ITEM(eti)->canvas));
- switch (e->button.button) {
- case 1: /* Fall through. */
- case 2:
- gnome_canvas_item_w2i (item, &e->button.x, &e->button.y);
-
- if (!find_cell (eti, e->button.x, e->button.y, &col, &row, &x1, &y1))
- return TRUE;
-
- gtk_object_get(GTK_OBJECT(eti->selection),
- "cursor_row", &cursor_row,
- "cursor_col", &cursor_col,
- NULL);
-
- if (cursor_row == view_to_model_row(eti, row) && cursor_col == view_to_model_col(eti, col)){
-
- ecell_view = eti->cell_views [col];
-
- /*
- * Adjust the event positions
- */
- e->button.x = x1;
- e->button.y = y1;
-
- return_val = eti_e_cell_event (eti, ecell_view, e, e->button.time,
- view_to_model_col(eti, col), col, row, E_CELL_EDITING);
- }
- d(g_print ("Release\n"));
- break;
- case 3:
- case 4:
- case 5:
- return FALSE;
- break;
-
- }
- break;
- }
-
- case GDK_2BUTTON_PRESS: {
- int col, row;
- GdkEventButton button;
-
- if (e->button.button == 5 ||
- e->button.button == 4)
- return FALSE;
-
- gnome_canvas_item_w2i (item, &e->button.x, &e->button.y);
-
-#if 0
- if (!find_cell (eti, e->button.x, e->button.y, &col, &row, &x1, &y1))
- return TRUE;
-#endif
- gtk_object_get(GTK_OBJECT(eti->selection),
- "cursor_row", &row,
- "cursor_col", &col,
- NULL);
-
-#if 0
- button = *(GdkEventButton *)e;
- button.x = x1;
- button.y = y1;
-#endif
-
- gtk_signal_emit (GTK_OBJECT (eti), eti_signals [DOUBLE_CLICK],
- row, col, &button);
- d(g_print("Double click\n"));
- break;
- }
- case GDK_MOTION_NOTIFY: {
- int col, row;
- double x1, y1;
- gint cursor_col, cursor_row;
-
- gnome_canvas_item_w2i (item, &e->motion.x, &e->motion.y);
-
- if (!find_cell (eti, e->motion.x, e->motion.y, &col, &row, &x1, &y1))
- return TRUE;
-
- gtk_object_get(GTK_OBJECT(eti->selection),
- "cursor_row", &cursor_row,
- "cursor_col", &cursor_col,
- NULL);
-
- e_canvas_hide_tooltip (E_CANVAS(GNOME_CANVAS_ITEM(eti)->canvas));
-
-#ifdef DO_TOOLTIPS
- if (g_getenv ("GAL_DO_TOOLTIPS")) {
- if (eti->tooltip->timer > 0)
- gtk_timeout_remove (eti->tooltip->timer);
- eti->tooltip->col = col;
- eti->tooltip->row = row;
- eti->tooltip->cx = e->motion.x;
- eti->tooltip->cy = e->motion.y;
- eti->tooltip->timer = gtk_timeout_add (100, (GSourceFunc)_do_tooltip, eti);
- }
-#endif
-
- if (cursor_row == view_to_model_row(eti, row) && cursor_col == view_to_model_col(eti, col)){
- ecell_view = eti->cell_views [col];
-
- /*
- * Adjust the event positions
- */
- e->motion.x = x1;
- e->motion.y = y1;
-
- return_val = eti_e_cell_event (eti, ecell_view, e, e->motion.time,
- view_to_model_col(eti, col), col, row, E_CELL_EDITING);
- }
- break;
- }
-
- case GDK_KEY_PRESS: {
- gint cursor_row, cursor_col;
- gint handled = TRUE;
-
- gtk_object_get(GTK_OBJECT(eti->selection),
- "cursor_row", &cursor_row,
- "cursor_col", &cursor_col,
- NULL);
-
- if (eti->tooltip->timer) {
- gtk_timeout_remove (eti->tooltip->timer);
- eti->tooltip->timer = 0;
- }
- e_canvas_hide_tooltip (E_CANVAS(GNOME_CANVAS_ITEM(eti)->canvas));
-
- if (cursor_col == -1)
- return FALSE;
-
- eti->in_key_press = TRUE;
-
- switch (e->key.keyval){
- case GDK_Left:
- if (eti_editing (eti)) {
- handled = FALSE;
- break;
- }
-
- gtk_signal_emit (GTK_OBJECT (eti), eti_signals [KEY_PRESS],
- model_to_view_row(eti, cursor_row), cursor_col, e, &return_val);
- if ((!return_val) && eti->cursor_mode != E_CURSOR_LINE && cursor_col != view_to_model_col(eti, 0))
- eti_cursor_move_left (eti);
- break;
-
- case GDK_Right:
- if (eti_editing (eti)) {
- handled = FALSE;
- break;
- }
-
- gtk_signal_emit (GTK_OBJECT (eti), eti_signals [KEY_PRESS],
- model_to_view_row(eti, cursor_row), cursor_col, e, &return_val);
- if ((!return_val) && eti->cursor_mode != E_CURSOR_LINE && cursor_col != view_to_model_col(eti, eti->cols - 1))
- eti_cursor_move_right (eti);
- break;
-
- case GDK_Up:
- case GDK_Down:
- return_val = e_selection_model_key_press(E_SELECTION_MODEL (eti->selection), (GdkEventKey *) e);
- break;
- case GDK_Home:
- case GDK_KP_Home:
- if (eti->cursor_mode != E_CURSOR_LINE) {
- eti_cursor_move (eti, model_to_view_row(eti, cursor_row), 0);
- return_val = TRUE;
- } else
- return_val = e_selection_model_key_press(E_SELECTION_MODEL (eti->selection), (GdkEventKey *) e);
- break;
- case GDK_End:
- case GDK_KP_End:
- if (eti->cursor_mode != E_CURSOR_LINE) {
- eti_cursor_move (eti, model_to_view_row(eti, cursor_row), eti->cols - 1);
- return_val = TRUE;
- } else
- return_val = e_selection_model_key_press(E_SELECTION_MODEL (eti->selection), (GdkEventKey *) e);
- break;
- case GDK_Tab:
- case GDK_KP_Tab:
- case GDK_ISO_Left_Tab:
- if (eti->cursor_mode == E_CURSOR_SPREADSHEET) {
- if ((e->key.state & GDK_SHIFT_MASK) != 0){
- /* shift tab */
- if (cursor_col != view_to_model_col(eti, 0))
- eti_cursor_move_left (eti);
- else if (cursor_row != view_to_model_row(eti, 0))
- eti_cursor_move (eti, model_to_view_row(eti, cursor_row) - 1, eti->cols - 1);
- else
- return_val = FALSE;
- } else {
- if (cursor_col != view_to_model_col (eti, eti->cols - 1))
- eti_cursor_move_right (eti);
- else if (cursor_row != view_to_model_row(eti, eti->rows - 1))
- eti_cursor_move (eti, model_to_view_row(eti, cursor_row) + 1, 0);
- else
- return_val = FALSE;
- }
- gtk_object_get(GTK_OBJECT(eti->selection),
- "cursor_row", &cursor_row,
- "cursor_col", &cursor_col,
- NULL);
-
- if (cursor_col >= 0 && cursor_row >= 0 && return_val &&
- (!eti_editing(eti)) && e_table_model_is_cell_editable(eti->table_model, model_to_view_col(eti, cursor_col), model_to_view_row(eti, cursor_row))) {
- e_table_item_enter_edit (eti, model_to_view_col(eti, cursor_col), model_to_view_row(eti, cursor_row));
- }
- break;
- } else {
- /* Let tab send you to the next widget. */
- return_val = FALSE;
- break;
- }
-
- case GDK_Return:
- case GDK_KP_Enter:
- case GDK_ISO_Enter:
- case GDK_3270_Enter:
- if (eti_editing (eti)){
- e_table_item_leave_edit (eti);
-#if 0
- ecell_view = eti->cell_views [eti->editing_col];
- return_val = eti_e_cell_event (eti, ecell_view, e, e->key.time,
- view_to_model_col(eti, eti->editing_col),
- eti->editing_col, eti->editing_row, E_CELL_EDITING);
-#endif
- }
- gtk_signal_emit (GTK_OBJECT (eti), eti_signals [KEY_PRESS],
- model_to_view_row(eti, cursor_row), cursor_col, e, &return_val);
- if (!return_val)
- return_val = e_selection_model_key_press(E_SELECTION_MODEL (eti->selection), (GdkEventKey *) e);
- break;
-
- default:
- handled = FALSE;
- break;
- }
- if (!handled) {
- if (!eti_editing (eti)){
- gint col, row;
- row = model_to_view_row(eti, cursor_row);
- col = model_to_view_col(eti, cursor_col);
- if (col != -1 && row != -1 && e_table_model_is_cell_editable(eti->table_model, col, row)) {
- e_table_item_enter_edit (eti, col, row);
- }
- }
- if (!eti_editing (eti)){
- gtk_signal_emit (GTK_OBJECT (eti), eti_signals [KEY_PRESS],
- model_to_view_row(eti, cursor_row), cursor_col, e, &return_val);
- if (!return_val)
- e_selection_model_key_press(E_SELECTION_MODEL (eti->selection), (GdkEventKey *) e);
- } else {
- ecell_view = eti->cell_views [eti->editing_col];
- return_val = eti_e_cell_event (eti, ecell_view, e, e->key.time,
- view_to_model_col(eti, eti->editing_col),
- eti->editing_col, eti->editing_row, E_CELL_EDITING);
- if (!return_val)
- e_selection_model_key_press(E_SELECTION_MODEL (eti->selection), (GdkEventKey *) e);
- }
- }
- eti->in_key_press = FALSE;
- break;
- }
-
- case GDK_KEY_RELEASE: {
- gint cursor_row, cursor_col;
-
- gtk_object_get(GTK_OBJECT(eti->selection),
- "cursor_row", &cursor_row,
- "cursor_col", &cursor_col,
- NULL);
-
- if (cursor_col == -1)
- return FALSE;
-
- if (eti_editing (eti)){
- ecell_view = eti->cell_views [eti->editing_col];
- return_val = eti_e_cell_event (eti, ecell_view, e, e->key.time,
- view_to_model_col(eti, eti->editing_col),
- eti->editing_col, eti->editing_row, E_CELL_EDITING);
- }
- break;
- }
-
- case GDK_LEAVE_NOTIFY:
- case GDK_ENTER_NOTIFY:
- if (eti->tooltip->timer > 0)
- gtk_timeout_remove (eti->tooltip->timer);
- eti->tooltip->timer = 0;
- break;
-
- case GDK_FOCUS_CHANGE:
- if (! e->focus_change.in) {
- if (eti_editing (eti))
- e_table_item_leave_edit (eti);
- }
-
- default:
- return_val = FALSE;
- }
- return return_val;
-}
-
-static void
-eti_class_init (GtkObjectClass *object_class)
-{
- GnomeCanvasItemClass *item_class = (GnomeCanvasItemClass *) object_class;
- ETableItemClass *eti_class = (ETableItemClass *) object_class;
-
- eti_parent_class = gtk_type_class (PARENT_OBJECT_TYPE);
-
- object_class->destroy = eti_destroy;
- object_class->set_arg = eti_set_arg;
- object_class->get_arg = eti_get_arg;
-
- item_class->update = eti_update;
- item_class->realize = eti_realize;
- item_class->unrealize = eti_unrealize;
- item_class->draw = eti_draw;
- item_class->point = eti_point;
- item_class->event = eti_event;
-
- eti_class->cursor_change = NULL;
- eti_class->cursor_activated = NULL;
- eti_class->double_click = NULL;
- eti_class->right_click = NULL;
- eti_class->click = NULL;
- eti_class->key_press = NULL;
-
- gtk_object_add_arg_type ("ETableItem::ETableHeader", E_TABLE_HEADER_TYPE,
- GTK_ARG_WRITABLE, ARG_TABLE_HEADER);
- gtk_object_add_arg_type ("ETableItem::ETableModel", E_TABLE_MODEL_TYPE,
- GTK_ARG_WRITABLE, ARG_TABLE_MODEL);
- gtk_object_add_arg_type ("ETableItem::selection_model", E_SELECTION_MODEL_TYPE,
- GTK_ARG_WRITABLE, ARG_SELECTION_MODEL);
- gtk_object_add_arg_type ("ETableItem::alternating_row_colors", GTK_TYPE_BOOL,
- GTK_ARG_WRITABLE, ARG_TABLE_ALTERNATING_ROW_COLORS);
- gtk_object_add_arg_type ("ETableItem::horizontal_draw_grid", GTK_TYPE_BOOL,
- GTK_ARG_WRITABLE, ARG_TABLE_HORIZONTAL_DRAW_GRID);
- gtk_object_add_arg_type ("ETableItem::vertical_draw_grid", GTK_TYPE_BOOL,
- GTK_ARG_WRITABLE, ARG_TABLE_VERTICAL_DRAW_GRID);
- gtk_object_add_arg_type ("ETableItem::drawfocus", GTK_TYPE_BOOL,
- GTK_ARG_WRITABLE, ARG_TABLE_DRAW_FOCUS);
- gtk_object_add_arg_type ("ETableItem::cursor_mode", GTK_TYPE_INT,
- GTK_ARG_WRITABLE, ARG_CURSOR_MODE);
- gtk_object_add_arg_type ("ETableItem::length_threshold", GTK_TYPE_INT,
- GTK_ARG_WRITABLE, ARG_LENGTH_THRESHOLD);
-
- gtk_object_add_arg_type ("ETableItem::minimum_width", GTK_TYPE_DOUBLE,
- GTK_ARG_READWRITE, ARG_MINIMUM_WIDTH);
- gtk_object_add_arg_type ("ETableItem::width", GTK_TYPE_DOUBLE,
- GTK_ARG_READWRITE, ARG_WIDTH);
- gtk_object_add_arg_type ("ETableItem::height", GTK_TYPE_DOUBLE,
- GTK_ARG_READABLE, ARG_HEIGHT);
- gtk_object_add_arg_type ("ETableItem::cursor_row", GTK_TYPE_INT,
- GTK_ARG_READWRITE, ARG_CURSOR_ROW);
-
- eti_signals [CURSOR_CHANGE] =
- gtk_signal_new ("cursor_change",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableItemClass, cursor_change),
- gtk_marshal_NONE__INT,
- GTK_TYPE_NONE, 1, GTK_TYPE_INT);
-
- eti_signals [CURSOR_ACTIVATED] =
- gtk_signal_new ("cursor_activated",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableItemClass, cursor_activated),
- gtk_marshal_NONE__INT,
- GTK_TYPE_NONE, 1, GTK_TYPE_INT);
-
- eti_signals [DOUBLE_CLICK] =
- gtk_signal_new ("double_click",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableItemClass, double_click),
- gtk_marshal_NONE__INT_INT_POINTER,
- GTK_TYPE_NONE, 3, GTK_TYPE_INT, GTK_TYPE_INT, GTK_TYPE_GDK_EVENT);
-
- eti_signals [RIGHT_CLICK] =
- gtk_signal_new ("right_click",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableItemClass, right_click),
- e_marshal_INT__INT_INT_POINTER,
- GTK_TYPE_INT, 3, GTK_TYPE_INT, GTK_TYPE_INT, GTK_TYPE_GDK_EVENT);
-
- eti_signals [CLICK] =
- gtk_signal_new ("click",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableItemClass, click),
- e_marshal_INT__INT_INT_POINTER,
- GTK_TYPE_INT, 3, GTK_TYPE_INT, GTK_TYPE_INT, GTK_TYPE_GDK_EVENT);
-
- eti_signals [KEY_PRESS] =
- gtk_signal_new ("key_press",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableItemClass, key_press),
- e_marshal_INT__INT_INT_POINTER,
- GTK_TYPE_INT, 3, GTK_TYPE_INT, GTK_TYPE_INT, GTK_TYPE_GDK_EVENT);
-
- gtk_object_class_add_signals (object_class, eti_signals, LAST_SIGNAL);
-
-}
-
-GtkType
-e_table_item_get_type (void)
-{
- static GtkType type = 0;
-
- if (!type){
- GtkTypeInfo info = {
- "ETableItem",
- sizeof (ETableItem),
- sizeof (ETableItemClass),
- (GtkClassInitFunc) eti_class_init,
- (GtkObjectInitFunc) eti_init,
- NULL, /* reserved 1 */
- NULL, /* reserved 2 */
- (GtkClassInitFunc) NULL
- };
-
- type = gtk_type_unique (PARENT_OBJECT_TYPE, &info);
- }
-
- return type;
-}
-
-/**
- * e_table_item_set_cursor:
- * @eti: %ETableItem which will have the cursor set.
- * @col: Column to select. -1 means the last column.
- * @row: Row to select. -1 means the last row.
- *
- * This routine sets the cursor of the %ETableItem canvas item.
- */
-void
-e_table_item_set_cursor (ETableItem *eti, int col, int row)
-{
- e_table_item_focus(eti, col, view_to_model_row(eti, row), 0);
-}
-
-static void
-e_table_item_focus (ETableItem *eti, int col, int row, GdkModifierType state)
-{
- g_return_if_fail (eti != NULL);
- g_return_if_fail (E_IS_TABLE_ITEM (eti));
-
- if (row == -1) {
- row = view_to_model_row(eti, eti->rows - 1);
- }
-
- if (col == -1) {
- col = eti->cols - 1;
- }
-
- if (row != -1) {
- e_selection_model_do_something(E_SELECTION_MODEL (eti->selection),
- row, col,
- state);
- }
-}
-
-/**
- * e_table_item_get_focused_column:
- * @eti: %ETableItem which will have the cursor retrieved.
- *
- * This routine gets the cursor of the %ETableItem canvas item.
- *
- * Returns: The current cursor column.
- */
-gint
-e_table_item_get_focused_column (ETableItem *eti)
-{
- int cursor_col;
-
- g_return_val_if_fail (eti != NULL, -1);
- g_return_val_if_fail (E_IS_TABLE_ITEM (eti), -1);
-
- gtk_object_get(GTK_OBJECT(eti->selection),
- "cursor_col", &cursor_col,
- NULL);
-
- return cursor_col;
-}
-
-static void
-eti_cursor_change (ESelectionModel *selection, int row, int col, ETableItem *eti)
-{
- int view_row;
- int view_col;
-
- if (!(GTK_OBJECT_FLAGS(eti) & GNOME_CANVAS_ITEM_REALIZED))
- return;
-
- view_row = model_to_view_row(eti, row);
- view_col = model_to_view_col(eti, col);
-
- if (view_row == -1 || view_col == -1) {
- e_table_item_leave_edit (eti);
- return;
- }
-
- if (! e_table_model_has_change_pending (eti->table_model)) {
- if (!eti->in_key_press) {
- eti_request_region_show (eti, view_col, view_row, view_col, view_row, DOUBLE_CLICK_TIME + 10);
- } else {
- eti_request_region_show (eti, view_col, view_row, view_col, view_row, 0);
- }
- }
-
- e_canvas_item_grab_focus(GNOME_CANVAS_ITEM(eti), FALSE);
- if (eti_editing(eti))
- e_table_item_leave_edit (eti);
- gtk_signal_emit (GTK_OBJECT (eti), eti_signals [CURSOR_CHANGE],
- view_row);
- eti->needs_redraw = TRUE;
- gnome_canvas_item_request_update(GNOME_CANVAS_ITEM(eti));
-}
-
-static void
-eti_cursor_activated (ESelectionModel *selection, int row, int col, ETableItem *eti)
-{
- int view_row;
- int view_col;
-
- if (!(GTK_OBJECT_FLAGS(eti) & GNOME_CANVAS_ITEM_REALIZED))
- return;
-
- view_row = model_to_view_row(eti, row);
- view_col = model_to_view_col(eti, col);
-
- if (view_row == -1 || view_col == -1) {
- e_table_item_leave_edit (eti);
- return;
- }
-
- if (eti_editing(eti))
- e_table_item_leave_edit (eti);
- gtk_signal_emit (GTK_OBJECT (eti), eti_signals [CURSOR_ACTIVATED],
- view_row);
-}
-
-static void
-eti_selection_change (ESelectionModel *selection, ETableItem *eti)
-{
- if (!(GTK_OBJECT_FLAGS(eti) & GNOME_CANVAS_ITEM_REALIZED))
- return;
-
- eti->needs_redraw = TRUE;
- gnome_canvas_item_request_update(GNOME_CANVAS_ITEM(eti));
-}
-
-
-/**
- * e_table_item_enter_edit
- * @eti: %ETableItem which will start being edited
- * @col: The view col to edit.
- * @row: The view row to edit.
- *
- * This routine starts the given %ETableItem editing at the given view
- * column and row.
- */
-void
-e_table_item_enter_edit (ETableItem *eti, int col, int row)
-{
- g_return_if_fail (eti != NULL);
- g_return_if_fail (E_IS_TABLE_ITEM (eti));
-
- if (eti_editing (eti))
- e_table_item_leave_edit(eti);
-
- eti->editing_col = col;
- eti->editing_row = row;
-
- eti->edit_ctx = e_cell_enter_edit (eti->cell_views [col], view_to_model_col(eti, col), col, row);
-}
-
-/**
- * e_table_item_leave_edit
- * @eti: %ETableItem which will stop being edited
- *
- * This routine stops the given %ETableItem from editing.
- */
-void
-e_table_item_leave_edit (ETableItem *eti)
-{
- int col, row;
- void *edit_ctx;
-
- g_return_if_fail (eti != NULL);
- g_return_if_fail (E_IS_TABLE_ITEM (eti));
-
- if (!eti_editing (eti))
- return;
-
- col = eti->editing_col;
- row = eti->editing_row;
- edit_ctx = eti->edit_ctx;
-
- eti->editing_col = -1;
- eti->editing_row = -1;
- eti->edit_ctx = NULL;
-
- e_cell_leave_edit (eti->cell_views [col],
- view_to_model_col(eti, col),
- col, row, edit_ctx);
-}
-
-/**
- * e_table_item_compute_location
- * @eti: %ETableItem to look in.
- * @x: A pointer to the x location to find in the %ETableItem.
- * @y: A pointer to the y location to find in the %ETableItem.
- * @row: A pointer to the location to store the found row in.
- * @col: A pointer to the location to store the found col in.
- *
- * This routine locates the pixel location (*x, *y) in the
- * %ETableItem. If that location is in the %ETableItem, *row and *col
- * are set to the view row and column where it was found. If that
- * location is not in the %ETableItem, the height of the %ETableItem
- * is removed from the value y points to.
- */
-void
-e_table_item_compute_location (ETableItem *eti,
- int *x,
- int *y,
- int *row,
- int *col)
-{
- /* Save the grabbed row but make sure that we don't get flawed
- results because the cursor is grabbed. */
- int grabbed_row = eti->grabbed_row;
- eti->grabbed_row = -1;
-
- if (!find_cell (eti, *x, *y, col, row, NULL, NULL)) {
- *y -= eti_get_height(eti);
- }
-
- eti->grabbed_row = grabbed_row;
-}
-
-void
-e_table_item_get_cell_geometry (ETableItem *eti,
- int *row,
- int *col,
- int *x,
- int *y,
- int *width,
- int *height)
-{
- if (eti->rows > *row) {
- if (x)
- *x = e_table_header_col_diff (eti->header, 0, *col);
- if (y)
- *y = e_table_item_row_diff (eti, 0, *row);
- if (width)
- *width = e_table_header_col_diff (eti->header, *col, *col + 1);
- if (height)
- *height = ETI_ROW_HEIGHT (eti, *row);
- *row = -1;
- *col = -1;
- } else {
- *row -= eti->rows;
- }
-}
-
-typedef struct {
- ETableItem *item;
- int rows_printed;
-} ETableItemPrintContext;
-
-static gdouble *
-e_table_item_calculate_print_widths (ETableHeader *eth, gdouble width)
-{
- int i;
- double extra;
- double expansion;
- int last_resizable = -1;
- gdouble scale = 300.0L / 70.0L;
- gdouble *widths = g_new(gdouble, e_table_header_count(eth));
- /* - 1 to account for the last pixel border. */
- extra = width - 1;
- expansion = 0;
- for (i = 0; i < eth->col_count; i++) {
- extra -= eth->columns[i]->min_width * scale;
- if (eth->columns[i]->resizable && eth->columns[i]->expansion > 0)
- last_resizable = i;
- expansion += eth->columns[i]->resizable ? eth->columns[i]->expansion : 0;
- widths[i] = eth->columns[i]->min_width * scale;
- }
- for (i = 0; i <= last_resizable; i++) {
- widths[i] += extra * (eth->columns[i]->resizable ? eth->columns[i]->expansion : 0)/expansion;
- }
-
- return widths;
-}
-
-static gdouble
-eti_printed_row_height (ETableItem *eti, gdouble *widths, GnomePrintContext *context, gint row)
-{
- int col;
- int cols = eti->cols;
- gdouble height = 0;
- for (col = 0; col < cols; col++) {
- ECellView *ecell_view = eti->cell_views [col];
- gdouble this_height = e_cell_print_height (ecell_view, context, view_to_model_col(eti, col), col, row,
- widths[col] - 1);
- if (this_height > height)
- height = this_height;
- }
- return height;
-}
-
-#define CHECK(x) if((x) == -1) return -1;
-
-static gint
-gp_draw_rect (GnomePrintContext *context, gdouble x, gdouble y, gdouble width, gdouble height)
-{
- CHECK(gnome_print_moveto(context, x, y));
- CHECK(gnome_print_lineto(context, x + width, y));
- CHECK(gnome_print_lineto(context, x + width, y - height));
- CHECK(gnome_print_lineto(context, x, y - height));
- CHECK(gnome_print_lineto(context, x, y));
- return gnome_print_fill(context);
-}
-
-static void
-e_table_item_print_page (EPrintable *ep,
- GnomePrintContext *context,
- gdouble width,
- gdouble height,
- gboolean quantize,
- ETableItemPrintContext *itemcontext)
-{
- ETableItem *eti = itemcontext->item;
- const int rows = eti->rows;
- const int cols = eti->cols;
- int rows_printed = itemcontext->rows_printed;
- gdouble *widths;
- int row, col;
- gdouble yd = height;
-
- widths = e_table_item_calculate_print_widths (itemcontext->item->header, width);
-
- /*
- * Draw cells
- */
- if (eti->horizontal_draw_grid){
- gp_draw_rect(context, 0, yd, width, 1);
- }
- yd--;
-
- for (row = rows_printed; row < rows; row++){
- gdouble xd = 1, row_height;
-
- row_height = eti_printed_row_height(eti, widths, context, row);
- if (quantize) {
- if (yd - row_height - 1 < 0 && row != rows_printed) {
- break;
- }
- } else {
- if (yd < 0) {
- break;
- }
- }
-
- for (col = 0; col < cols; col++){
- ECellView *ecell_view = eti->cell_views [col];
-
- if (gnome_print_gsave(context) == -1)
- /* FIXME */;
- if (gnome_print_translate(context, xd, yd - row_height) == -1)
- /* FIXME */;
-
- if (gnome_print_moveto(context, 0, 0) == -1)
- /* FIXME */;
- if (gnome_print_lineto(context, widths[col] - 1, 0) == -1)
- /* FIXME */;
- if (gnome_print_lineto(context, widths[col] - 1, row_height) == -1)
- /* FIXME */;
- if (gnome_print_lineto(context, 0, row_height) == -1)
- /* FIXME */;
- if (gnome_print_lineto(context, 0, 0) == -1)
- /* FIXME */;
- if (gnome_print_clip(context) == -1)
- /* FIXME */;
-
- e_cell_print (ecell_view, context, view_to_model_col(eti, col), col, row,
- widths[col] - 1, row_height);
-
- if (gnome_print_grestore(context) == -1)
- /* FIXME */;
-
- xd += widths[col];
- }
- yd -= row_height;
-
- if (eti->horizontal_draw_grid){
- gp_draw_rect(context, 0, yd, width, 1);
- }
- yd--;
- }
-
- itemcontext->rows_printed = row;
-
- if (eti->vertical_draw_grid){
- gdouble xd = 0;
-
- for (col = 0; col < cols; col++){
- gp_draw_rect(context, xd, height, 1, height - yd);
-
- xd += widths[col];
- }
- gp_draw_rect(context, xd, height, 1, height - yd);
- }
-
- g_free (widths);
-}
-
-static gboolean
-e_table_item_data_left (EPrintable *ep,
- ETableItemPrintContext *itemcontext)
-{
- ETableItem *item = itemcontext->item;
- int rows_printed = itemcontext->rows_printed;
-
- gtk_signal_emit_stop_by_name(GTK_OBJECT(ep), "data_left");
- return rows_printed < item->rows;
-}
-
-static void
-e_table_item_reset (EPrintable *ep,
- ETableItemPrintContext *itemcontext)
-{
- itemcontext->rows_printed = 0;
-}
-
-static gdouble
-e_table_item_height (EPrintable *ep,
- GnomePrintContext *context,
- gdouble width,
- gdouble max_height,
- gboolean quantize,
- ETableItemPrintContext *itemcontext)
-{
- ETableItem *item = itemcontext->item;
- const int rows = item->rows;
- int rows_printed = itemcontext->rows_printed;
- gdouble *widths;
- int row;
- gdouble yd = 0;
-
- widths = e_table_item_calculate_print_widths (itemcontext->item->header, width);
-
- /*
- * Draw cells
- */
- yd++;
-
- for (row = rows_printed; row < rows; row++){
- gdouble row_height;
-
- row_height = eti_printed_row_height(item, widths, context, row);
- if (quantize) {
- if (max_height != -1 && yd + row_height + 1 > max_height && row != rows_printed) {
- break;
- }
- } else {
- if (max_height != -1 && yd > max_height) {
- break;
- }
- }
-
- yd += row_height;
-
- yd++;
- }
-
- g_free (widths);
-
- if (max_height != -1 && (!quantize) && yd > max_height)
- yd = max_height;
-
- gtk_signal_emit_stop_by_name(GTK_OBJECT(ep), "height");
- return yd;
-}
-
-static gboolean
-e_table_item_will_fit (EPrintable *ep,
- GnomePrintContext *context,
- gdouble width,
- gdouble max_height,
- gboolean quantize,
- ETableItemPrintContext *itemcontext)
-{
- ETableItem *item = itemcontext->item;
- const int rows = item->rows;
- int rows_printed = itemcontext->rows_printed;
- gdouble *widths;
- int row;
- gdouble yd = 0;
- gboolean ret_val = TRUE;
-
- widths = e_table_item_calculate_print_widths (itemcontext->item->header, width);
-
- /*
- * Draw cells
- */
- yd++;
-
- for (row = rows_printed; row < rows; row++){
- gdouble row_height;
-
- row_height = eti_printed_row_height(item, widths, context, row);
- if (quantize) {
- if (max_height != -1 && yd + row_height + 1 > max_height && row != rows_printed) {
- ret_val = FALSE;
- break;
- }
- } else {
- if (max_height != -1 && yd > max_height) {
- ret_val = FALSE;
- break;
- }
- }
-
- yd += row_height;
-
- yd++;
- }
-
- g_free (widths);
-
- gtk_signal_emit_stop_by_name(GTK_OBJECT(ep), "will_fit");
- return ret_val;
-}
-
-static void
-e_table_item_printable_destroy (GtkObject *object,
- ETableItemPrintContext *itemcontext)
-{
- gtk_object_unref(GTK_OBJECT(itemcontext->item));
- g_free(itemcontext);
-}
-
-/**
- * e_table_item_get_printable
- * @eti: %ETableItem which will be printed
- *
- * This routine creates and returns an %EPrintable that can be used to
- * print the given %ETableItem.
- *
- * Returns: The %EPrintable.
- */
-EPrintable *
-e_table_item_get_printable (ETableItem *item)
-{
- EPrintable *printable = e_printable_new();
- ETableItemPrintContext *itemcontext;
-
- itemcontext = g_new(ETableItemPrintContext, 1);
- itemcontext->item = item;
- gtk_object_ref(GTK_OBJECT(item));
- itemcontext->rows_printed = 0;
-
- gtk_signal_connect (GTK_OBJECT(printable),
- "print_page",
- GTK_SIGNAL_FUNC(e_table_item_print_page),
- itemcontext);
- gtk_signal_connect (GTK_OBJECT(printable),
- "data_left",
- GTK_SIGNAL_FUNC(e_table_item_data_left),
- itemcontext);
- gtk_signal_connect (GTK_OBJECT(printable),
- "reset",
- GTK_SIGNAL_FUNC(e_table_item_reset),
- itemcontext);
- gtk_signal_connect (GTK_OBJECT(printable),
- "height",
- GTK_SIGNAL_FUNC(e_table_item_height),
- itemcontext);
- gtk_signal_connect (GTK_OBJECT(printable),
- "will_fit",
- GTK_SIGNAL_FUNC(e_table_item_will_fit),
- itemcontext);
- gtk_signal_connect (GTK_OBJECT(printable),
- "destroy",
- GTK_SIGNAL_FUNC(e_table_item_printable_destroy),
- itemcontext);
-
- return printable;
-}
diff --git a/widgets/table/e-table-item.h b/widgets/table/e-table-item.h
deleted file mode 100644
index ff785e0068..0000000000
--- a/widgets/table/e-table-item.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_ITEM_H_
-#define _E_TABLE_ITEM_H_
-
-#include <libgnomeui/gnome-canvas.h>
-#include <gal/e-table/e-table-model.h>
-#include <gal/e-table/e-table-header.h>
-#include <gal/e-table/e-table-defines.h>
-#include <gal/e-table/e-table-tooltip.h>
-#include <gal/widgets/e-selection-model.h>
-#include <gal/widgets/e-printable.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_TABLE_ITEM_TYPE (e_table_item_get_type ())
-#define E_TABLE_ITEM(o) (GTK_CHECK_CAST ((o), E_TABLE_ITEM_TYPE, ETableItem))
-#define E_TABLE_ITEM_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_ITEM_TYPE, ETableItemClass))
-#define E_IS_TABLE_ITEM(o) (GTK_CHECK_TYPE ((o), E_TABLE_ITEM_TYPE))
-#define E_IS_TABLE_ITEM_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_ITEM_TYPE))
-
-typedef struct {
- GnomeCanvasItem parent;
- ETableModel *table_model;
- ETableHeader *header;
-
- ETableModel *source_model;
- ESelectionModel *selection;
-
- int x1, y1;
- int minimum_width, width, height;
-
- int cols, rows;
-
- /*
- * Ids for the signals we connect to
- */
- int header_dim_change_id;
- int header_structure_change_id;
- int header_request_width_id;
- int table_model_pre_change_id;
- int table_model_change_id;
- int table_model_row_change_id;
- int table_model_cell_change_id;
- int table_model_rows_inserted_id;
- int table_model_rows_deleted_id;
-
- int selection_change_id;
- int cursor_change_id;
- int cursor_activated_id;
-
- GdkGC *fill_gc;
- GdkGC *grid_gc;
- GdkGC *focus_gc;
- GdkBitmap *stipple;
-
- guint alternating_row_colors:1;
- guint horizontal_draw_grid:1;
- guint vertical_draw_grid:1;
- guint draw_focus:1;
- guint renderers_can_change_size:1;
- guint cell_views_realized:1;
-
- guint needs_redraw : 1;
- guint needs_compute_height : 1;
- guint needs_compute_width : 1;
-
- guint uses_source_model : 1;
-
- guint in_key_press : 1;
-
- /*
- * Realized views, per column
- */
- ECellView **cell_views;
- int n_cells;
-
- int *height_cache;
- int height_cache_idle_id;
- int height_cache_idle_count;
-
- /*
- * Lengh Threshold: above this, we stop computing correctly
- * the size
- */
- int length_threshold;
-
- gint row_guess;
- ECursorMode cursor_mode;
-
- /*
- * During editing
- */
- int editing_col, editing_row;
- void *edit_ctx;
-
- int grabbed_col, grabbed_row;
-
- /*
- * Tooltip
- */
- ETableTooltip *tooltip;
-
-} ETableItem;
-
-typedef struct {
- GnomeCanvasItemClass parent_class;
-
- void (*cursor_change) (ETableItem *eti, int row);
- void (*cursor_activated) (ETableItem *eti, int row);
- void (*double_click) (ETableItem *eti, int row, int col, GdkEvent *event);
- gint (*right_click) (ETableItem *eti, int row, int col, GdkEvent *event);
- gint (*click) (ETableItem *eti, int row, int col, GdkEvent *event);
- gint (*key_press) (ETableItem *eti, int row, int col, GdkEvent *event);
-} ETableItemClass;
-GtkType e_table_item_get_type (void);
-
-
-/*
- * Focus
- */
-void e_table_item_set_cursor (ETableItem *eti,
- int col,
- int row);
-
-gint e_table_item_get_focused_column (ETableItem *eti);
-
-void e_table_item_leave_edit (ETableItem *eti);
-void e_table_item_enter_edit (ETableItem *eti,
- int col,
- int row);
-
-void e_table_item_redraw_range (ETableItem *eti,
- int start_col,
- int start_row,
- int end_col,
- int end_row);
-
-EPrintable *e_table_item_get_printable (ETableItem *eti);
-void e_table_item_compute_location (ETableItem *eti,
- int *x,
- int *y,
- int *row,
- int *col);
-void e_table_item_get_cell_geometry (ETableItem *eti,
- int *row,
- int *col,
- int *x,
- int *y,
- int *width,
- int *height);
-
-int e_table_item_row_diff (ETableItem *eti,
- int start_row,
- int end_row);
-
-END_GNOME_DECLS
-
-#endif /* _E_TABLE_ITEM_H_ */
diff --git a/widgets/table/e-table-memory-callbacks.c b/widgets/table/e-table-memory-callbacks.c
deleted file mode 100644
index c1089b5f28..0000000000
--- a/widgets/table/e-table-memory-callbacks.c
+++ /dev/null
@@ -1,254 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-table-memory-callbacks.c: a simple table model implementation
- * that uses function pointers to simplify the creation of new, exotic
- * and colorful tables in no time.
- *
- * Author:
- * Miguel de Icaza (miguel@gnu.org)
- *
- * (C) 1999, 2000 Ximian, Inc.
- */
-
-#include <config.h>
-#include "e-table-memory-callbacks.h"
-
-enum {
- ARG_0,
- ARG_APPEND_ROW,
-};
-
-#define PARENT_TYPE e_table_memory_get_type ()
-
-static int
-etmc_column_count (ETableModel *etm)
-{
- ETableMemoryCalbacks *etmc = E_TABLE_MEMORY_CALLBACKS(etm);
-
- if (etmc->col_count)
- return etmc->col_count (etm, etmc->data);
- else
- return 0;
-}
-
-static void *
-etmc_value_at (ETableModel *etm, int col, int row)
-{
- ETableMemoryCalbacks *etmc = E_TABLE_MEMORY_CALLBACKS(etm);
-
- if (etmc->value_at)
- return etmc->value_at (etm, col, row, etmc->data);
- else
- return NULL;
-}
-
-static void
-etmc_set_value_at (ETableModel *etm, int col, int row, const void *val)
-{
- ETableMemoryCalbacks *etmc = E_TABLE_MEMORY_CALLBACKS(etm);
-
- if (etmc->set_value_at)
- etmc->set_value_at (etm, col, row, val, etmc->data);
-}
-
-static gboolean
-etmc_is_cell_editable (ETableModel *etm, int col, int row)
-{
- ETableMemoryCalbacks *etmc = E_TABLE_MEMORY_CALLBACKS(etm);
-
- if (etmc->is_cell_editable)
- return etmc->is_cell_editable (etm, col, row, etmc->data);
- else
- return FALSE;
-}
-
-/* The default for etmc_duplicate_value is to return the raw value. */
-static void *
-etmc_duplicate_value (ETableModel *etm, int col, const void *value)
-{
- ETableMemoryCalbacks *etmc = E_TABLE_MEMORY_CALLBACKS(etm);
-
- if (etmc->duplicate_value)
- return etmc->duplicate_value (etm, col, value, etmc->data);
- else
- return (void *)value;
-}
-
-static void
-etmc_free_value (ETableModel *etm, int col, void *value)
-{
- ETableMemoryCalbacks *etmc = E_TABLE_MEMORY_CALLBACKS(etm);
-
- if (etmc->free_value)
- etmc->free_value (etm, col, value, etmc->data);
-}
-
-static void *
-etmc_initialize_value (ETableModel *etm, int col)
-{
- ETableMemoryCalbacks *etmc = E_TABLE_MEMORY_CALLBACKS(etm);
-
- if (etmc->initialize_value)
- return etmc->initialize_value (etm, col, etmc->data);
- else
- return NULL;
-}
-
-static gboolean
-etmc_value_is_empty (ETableModel *etm, int col, const void *value)
-{
- ETableMemoryCalbacks *etmc = E_TABLE_MEMORY_CALLBACKS(etm);
-
- if (etmc->value_is_empty)
- return etmc->value_is_empty (etm, col, value, etmc->data);
- else
- return FALSE;
-}
-
-static char *
-etmc_value_to_string (ETableModel *etm, int col, const void *value)
-{
- ETableMemoryCalbacks *etmc = E_TABLE_MEMORY_CALLBACKS(etm);
-
- if (etmc->value_to_string)
- return etmc->value_to_string (etm, col, value, etmc->data);
- else
- return g_strdup ("");
-}
-
-static void
-etmc_append_row (ETableModel *etm, ETableModel *source, int row)
-{
- ETableMemoryCalbacks *etmc = E_TABLE_MEMORY_CALLBACKS(etm);
-
- if (etmc->append_row)
- etmc->append_row (etm, source, row, etmc->data);
-}
-
-static void
-etmc_get_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- ETableMemoryCalbacks *etmc = E_TABLE_MEMORY_CALLBACKS (o);
-
- switch (arg_id){
- case ARG_APPEND_ROW:
- GTK_VALUE_POINTER(*arg) = etmc->append_row;
- break;
- }
-}
-
-static void
-etmc_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- ETableMemoryCalbacks *etmc = E_TABLE_MEMORY_CALLBACKS (o);
-
- switch (arg_id){
- case ARG_APPEND_ROW:
- etmc->append_row = GTK_VALUE_POINTER(*arg);
- break;
- default:
- arg->type = GTK_TYPE_INVALID;
- }
-}
-
-static void
-e_table_memory_callbacks_class_init (GtkObjectClass *object_class)
-{
- ETableModelClass *model_class = (ETableModelClass *) object_class;
-
- object_class->set_arg = etmc_set_arg;
- object_class->get_arg = etmc_get_arg;
-
- model_class->column_count = etmc_column_count;
- model_class->value_at = etmc_value_at;
- model_class->set_value_at = etmc_set_value_at;
- model_class->is_cell_editable = etmc_is_cell_editable;
- model_class->duplicate_value = etmc_duplicate_value;
- model_class->free_value = etmc_free_value;
- model_class->initialize_value = etmc_initialize_value;
- model_class->value_is_empty = etmc_value_is_empty;
- model_class->value_to_string = etmc_value_to_string;
- model_class->append_row = etmc_append_row;
-
- gtk_object_add_arg_type ("ETableMemoryCalbacks::append_row", GTK_TYPE_POINTER,
- GTK_ARG_READWRITE, ARG_APPEND_ROW);
-}
-
-GtkType
-e_table_memory_callbacks_get_type (void)
-{
- static GtkType type = 0;
-
- if (!type){
- GtkTypeInfo info = {
- "ETableMemoryCalbacks",
- sizeof (ETableMemoryCalbacks),
- sizeof (ETableMemoryCalbacksClass),
- (GtkClassInitFunc) e_table_memory_callbacks_class_init,
- (GtkObjectInitFunc) NULL,
- NULL, /* reserved 1 */
- NULL, /* reserved 2 */
- (GtkClassInitFunc) NULL
- };
-
- type = gtk_type_unique (PARENT_TYPE, &info);
- }
-
- return type;
-}
-
-/**
- * e_table_memory_callbacks_new:
- * @col_count:
- * @value_at:
- * @set_value_at:
- * @is_cell_editable:
- * @duplicate_value:
- * @free_value:
- * @initialize_value:
- * @value_is_empty:
- * @value_to_string:
- * @data: closure pointer.
- *
- * This initializes a new ETableMemoryCalbacksModel object. ETableMemoryCalbacksModel is
- * an implementaiton of the abstract class ETableModel. The ETableMemoryCalbacksModel
- * is designed to allow people to easily create ETableModels without having
- * to create a new GtkType derived from ETableModel every time they need one.
- *
- * Instead, ETableMemoryCalbacksModel uses a setup based in callback functions, every
- * callback function signature mimics the signature of each ETableModel method
- * and passes the extra @data pointer to each one of the method to provide them
- * with any context they might want to use.
- *
- * Returns: An ETableMemoryCalbacksModel object (which is also an ETableModel
- * object).
- */
-ETableModel *
-e_table_memory_callbacks_new (ETableMemoryCalbacksColumnCountFn col_count,
- ETableMemoryCalbacksValueAtFn value_at,
- ETableMemoryCalbacksSetValueAtFn set_value_at,
- ETableMemoryCalbacksIsCellEditableFn is_cell_editable,
- ETableMemoryCalbacksDuplicateValueFn duplicate_value,
- ETableMemoryCalbacksFreeValueFn free_value,
- ETableMemoryCalbacksInitializeValueFn initialize_value,
- ETableMemoryCalbacksValueIsEmptyFn value_is_empty,
- ETableMemoryCalbacksValueToStringFn value_to_string,
- void *data)
-{
- ETableMemoryCalbacks *et;
-
- et = gtk_type_new (e_table_memory_callbacks_get_type ());
-
- et->col_count = col_count;
- et->value_at = value_at;
- et->set_value_at = set_value_at;
- et->is_cell_editable = is_cell_editable;
- et->duplicate_value = duplicate_value;
- et->free_value = free_value;
- et->initialize_value = initialize_value;
- et->value_is_empty = value_is_empty;
- et->value_to_string = value_to_string;
- et->data = data;
-
- return (ETableModel *) et;
- }
diff --git a/widgets/table/e-table-memory-callbacks.h b/widgets/table/e-table-memory-callbacks.h
deleted file mode 100644
index 72f637f764..0000000000
--- a/widgets/table/e-table-memory-callbacks.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_MEMORY_CALLBACKS_H_
-#define _E_TABLE_MEMORY_CALLBACKS_H_
-
-#include <gal/e-table/e-table-memory.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define E_TABLE_MEMORY_CALLBACKS_TYPE (e_table_memory_callbacks_get_type ())
-#define E_TABLE_MEMORY_CALLBACKS(o) (GTK_CHECK_CAST ((o), E_TABLE_MEMORY_CALLBACKS_TYPE, ETableMemoryCalbacks))
-#define E_TABLE_MEMORY_CALLBACKS_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_MEMORY_CALLBACKS_TYPE, ETableMemoryCalbacksClass))
-#define E_IS_TABLE_MEMORY_CALLBACKS(o) (GTK_CHECK_TYPE ((o), E_TABLE_MEMORY_CALLBACKS_TYPE))
-#define E_IS_TABLE_MEMORY_CALLBACKS_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_MEMORY_CALLBACKS_TYPE))
-
-typedef int (*ETableMemoryCalbacksColumnCountFn) (ETableModel *etm, void *data);
-typedef void (*ETableMemoryCalbacksAppendRowFn) (ETableModel *etm, ETableModel *model, int row, void *data);
-
-typedef void *(*ETableMemoryCalbacksValueAtFn) (ETableModel *etm, int col, int row, void *data);
-typedef void (*ETableMemoryCalbacksSetValueAtFn) (ETableModel *etm, int col, int row, const void *val, void *data);
-typedef gboolean (*ETableMemoryCalbacksIsCellEditableFn) (ETableModel *etm, int col, int row, void *data);
-
-typedef void *(*ETableMemoryCalbacksDuplicateValueFn) (ETableModel *etm, int col, const void *val, void *data);
-typedef void (*ETableMemoryCalbacksFreeValueFn) (ETableModel *etm, int col, void *val, void *data);
-typedef void *(*ETableMemoryCalbacksInitializeValueFn) (ETableModel *etm, int col, void *data);
-typedef gboolean (*ETableMemoryCalbacksValueIsEmptyFn) (ETableModel *etm, int col, const void *val, void *data);
-typedef char *(*ETableMemoryCalbacksValueToStringFn) (ETableModel *etm, int col, const void *val, void *data);
-
-typedef struct {
- ETableMemory parent;
-
- ETableMemoryCalbacksColumnCountFn col_count;
- ETableMemoryCalbacksAppendRowFn append_row;
-
- ETableMemoryCalbacksValueAtFn value_at;
- ETableMemoryCalbacksSetValueAtFn set_value_at;
- ETableMemoryCalbacksIsCellEditableFn is_cell_editable;
-
- ETableMemoryCalbacksDuplicateValueFn duplicate_value;
- ETableMemoryCalbacksFreeValueFn free_value;
- ETableMemoryCalbacksInitializeValueFn initialize_value;
- ETableMemoryCalbacksValueIsEmptyFn value_is_empty;
- ETableMemoryCalbacksValueToStringFn value_to_string;
- void *data;
-} ETableMemoryCalbacks;
-
-typedef struct {
- ETableMemoryClass parent_class;
-} ETableMemoryCalbacksClass;
-
-GtkType e_table_memory_callbacks_get_type (void);
-
-ETableModel *e_table_memory_callbacks_new (ETableMemoryCalbacksColumnCountFn col_count,
-
- ETableMemoryCalbacksValueAtFn value_at,
- ETableMemoryCalbacksSetValueAtFn set_value_at,
- ETableMemoryCalbacksIsCellEditableFn is_cell_editable,
-
- ETableMemoryCalbacksDuplicateValueFn duplicate_value,
- ETableMemoryCalbacksFreeValueFn free_value,
- ETableMemoryCalbacksInitializeValueFn initialize_value,
- ETableMemoryCalbacksValueIsEmptyFn value_is_empty,
- ETableMemoryCalbacksValueToStringFn value_to_string,
- void *data);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_TABLE_MEMORY_CALLBACKS_H_ */
-
diff --git a/widgets/table/e-table-memory.c b/widgets/table/e-table-memory.c
deleted file mode 100644
index b92881a847..0000000000
--- a/widgets/table/e-table-memory.c
+++ /dev/null
@@ -1,284 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-table-memory.c: a Table Model implementation that the programmer builds in memory.
- *
- * Author:
- * Chris Toshok (toshok@ximian.com)
- * Chris Lahey <clahey@ximian.com>
- *
- * Adapted from the gtable code and ETableModel.
- *
- * (C) 2000, 2001 Ximian, Inc.
- */
-#include <config.h>
-
-#include "e-table-memory.h"
-
-#include <stdio.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <fcntl.h>
-
-#include <gtk/gtksignal.h>
-#include <gnome-xml/parser.h>
-#include <gnome-xml/xmlmemory.h>
-
-#include "gal/util/e-util.h"
-#include "gal/util/e-xml-utils.h"
-#include <string.h>
-
-#define PARENT_TYPE E_TABLE_MODEL_TYPE
-
-static ETableModel *parent_class;
-
-struct ETableMemoryPriv {
- gpointer *data;
- int num_rows;
- gint frozen;
-};
-
-
-/* virtual methods */
-
-static void
-etmm_destroy (GtkObject *object)
-{
- ETableMemory *etmm = E_TABLE_MEMORY (object);
- ETableMemoryPriv *priv = etmm->priv;
-
- /* XXX lots of stuff to free here */
-
- g_free (priv->data);
- g_free (priv);
-
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
-}
-
-static int
-etmm_row_count (ETableModel *etm)
-{
- ETableMemory *etmm = E_TABLE_MEMORY (etm);
-
- return etmm->priv->num_rows;
-}
-
-
-static void
-e_table_memory_class_init (GtkObjectClass *klass)
-{
- ETableModelClass *table_class = (ETableModelClass *) klass;
-
- parent_class = gtk_type_class (PARENT_TYPE);
-
- klass->destroy = etmm_destroy;
-
- table_class->row_count = etmm_row_count;
-}
-
-static void
-e_table_memory_init (GtkObject *object)
-{
- ETableMemory *etmm = (ETableMemory *)object;
-
- ETableMemoryPriv *priv;
-
- priv = g_new0 (ETableMemoryPriv, 1);
- etmm->priv = priv;
-
- priv->data = NULL;
- priv->num_rows = 0;
- priv->frozen = 0;
-}
-
-E_MAKE_TYPE(e_table_memory, "ETableMemory", ETableMemory, e_table_memory_class_init, e_table_memory_init, PARENT_TYPE)
-
-
-
-/**
- * e_table_memory_construct:
- * @etable:
- *
- *
- **/
-void
-e_table_memory_construct (ETableMemory *etmm)
-{
-}
-
-/**
- * e_table_memory_new
- *
- * XXX docs here.
- *
- * return values: a newly constructed ETableMemory.
- */
-ETableMemory *
-e_table_memory_new (void)
-{
- ETableMemory *etmm;
-
- etmm = gtk_type_new (e_table_memory_get_type ());
-
- e_table_memory_construct(etmm);
-
- return etmm;
-}
-
-/**
- * e_table_memory_get_data:
- * @etmm:
- * @row:
- *
- *
- *
- * Return value:
- **/
-gpointer
-e_table_memory_get_data (ETableMemory *etmm, int row)
-{
- g_return_val_if_fail(row >= 0, NULL);
- g_return_val_if_fail(row < etmm->priv->num_rows, NULL);
-
- return etmm->priv->data[row];
-}
-
-/**
- * e_table_memory_set_data:
- * @etmm:
- * @row:
- * @data:
- *
- *
- **/
-void
-e_table_memory_set_data (ETableMemory *etmm, int row, gpointer data)
-{
- g_return_if_fail(row >= 0);
- g_return_if_fail(row < etmm->priv->num_rows);
-
- etmm->priv->data[row] = data;
-}
-
-/**
- * e_table_memory_insert:
- * @table_model:
- * @parent_path:
- * @position:
- * @data:
- *
- *
- *
- * Return value:
- **/
-void
-e_table_memory_insert (ETableMemory *etmm,
- int row,
- gpointer data)
-{
- g_return_if_fail(row >= -1);
- g_return_if_fail(row <= etmm->priv->num_rows);
-
- if (!etmm->priv->frozen)
- e_table_model_pre_change(E_TABLE_MODEL(etmm));
-
- if (row == -1)
- row = etmm->priv->num_rows;
- etmm->priv->data = g_renew(gpointer, etmm->priv->data, etmm->priv->num_rows + 1);
- memmove(etmm->priv->data + row + 1, etmm->priv->data + row, (etmm->priv->num_rows - row) * sizeof (gpointer));
- etmm->priv->data[row] = data;
- etmm->priv->num_rows ++;
- if (!etmm->priv->frozen)
- e_table_model_row_inserted(E_TABLE_MODEL(etmm), row);
-}
-
-
-
-/**
- * e_table_memory_remove:
- * @etable:
- * @path:
- *
- *
- *
- * Return value:
- **/
-gpointer
-e_table_memory_remove (ETableMemory *etmm, int row)
-{
- gpointer ret;
-
- g_return_val_if_fail(row >= 0, NULL);
- g_return_val_if_fail(row < etmm->priv->num_rows, NULL);
-
- if (!etmm->priv->frozen)
- e_table_model_pre_change(E_TABLE_MODEL(etmm));
- ret = etmm->priv->data[row];
- memmove(etmm->priv->data + row, etmm->priv->data + row + 1, (etmm->priv->num_rows - row - 1) * sizeof (gpointer));
- etmm->priv->num_rows --;
- if (!etmm->priv->frozen)
- e_table_model_row_deleted(E_TABLE_MODEL(etmm), row);
- return ret;
-}
-
-/**
- * e_table_memory_clear:
- * @etable:
- * @path:
- *
- *
- *
- * Return value:
- **/
-void
-e_table_memory_clear (ETableMemory *etmm)
-{
- if (!etmm->priv->frozen)
- e_table_model_pre_change(E_TABLE_MODEL(etmm));
- g_free(etmm->priv->data);
- etmm->priv->data = NULL;
- etmm->priv->num_rows = 0;
- if (!etmm->priv->frozen)
- e_table_model_changed(E_TABLE_MODEL(etmm));
-}
-
-/**
- * e_table_memory_freeze:
- * @etmm: the ETableModel to freeze.
- *
- * This function prepares an ETableModel for a period of much change.
- * All signals regarding changes to the table are deferred until we
- * thaw the table.
- *
- **/
-void
-e_table_memory_freeze(ETableMemory *etmm)
-{
- ETableMemoryPriv *priv = etmm->priv;
-
- if (priv->frozen == 0)
- e_table_model_pre_change(E_TABLE_MODEL(etmm));
-
- priv->frozen ++;
-}
-
-/**
- * e_table_memory_thaw:
- * @etmm: the ETableMemory to thaw.
- *
- * This function thaws an ETableMemory. All the defered signals can add
- * up to a lot, we don't know - so we just emit a model_changed
- * signal.
- *
- **/
-void
-e_table_memory_thaw(ETableMemory *etmm)
-{
- ETableMemoryPriv *priv = etmm->priv;
-
- if (priv->frozen > 0)
- priv->frozen --;
- if (priv->frozen == 0) {
- e_table_model_changed(E_TABLE_MODEL(etmm));
- }
-}
diff --git a/widgets/table/e-table-memory.h b/widgets/table/e-table-memory.h
deleted file mode 100644
index e1a70d506c..0000000000
--- a/widgets/table/e-table-memory.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_MEMORY_H_
-#define _E_TABLE_MEMORY_H_
-
-#include <gdk-pixbuf/gdk-pixbuf.h>
-#include <gal/e-table/e-table-model.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-#define E_TABLE_MEMORY_TYPE (e_table_memory_get_type ())
-#define E_TABLE_MEMORY(o) (GTK_CHECK_CAST ((o), E_TABLE_MEMORY_TYPE, ETableMemory))
-#define E_TABLE_MEMORY_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_MEMORY_TYPE, ETableMemoryClass))
-#define E_IS_TABLE_MEMORY(o) (GTK_CHECK_TYPE ((o), E_TABLE_MEMORY_TYPE))
-#define E_IS_TABLE_MEMORY_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_MEMORY_TYPE))
-
-typedef struct ETableMemory ETableMemory;
-typedef struct ETableMemoryPriv ETableMemoryPriv;
-typedef struct ETableMemoryClass ETableMemoryClass;
-
-struct ETableMemory {
- ETableModel base;
- ETableMemoryPriv *priv;
-};
-
-struct ETableMemoryClass {
- ETableModelClass parent_class;
-};
-
-
-GtkType e_table_memory_get_type (void);
-void e_table_memory_construct (ETableMemory *etable);
-ETableMemory *e_table_memory_new (void);
-
-/* row operations */
-void e_table_memory_insert (ETableMemory *etable,
- int row,
- gpointer data);
-gpointer e_table_memory_remove (ETableMemory *etable,
- int row);
-void e_table_memory_clear (ETableMemory *etable);
-
-/* Freeze and thaw */
-void e_table_memory_freeze (ETableMemory *etable);
-void e_table_memory_thaw (ETableMemory *etable);
-gpointer e_table_memory_get_data (ETableMemory *etm,
- int row);
-void e_table_memory_set_data (ETableMemory *etm,
- int row,
- gpointer data);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_TABLE_MEMORY_H */
diff --git a/widgets/table/e-table-model.c b/widgets/table/e-table-model.c
deleted file mode 100644
index 9429aeb0f9..0000000000
--- a/widgets/table/e-table-model.c
+++ /dev/null
@@ -1,541 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-table-model.c: a Table Model
- *
- * Authors:
- * Miguel de Icaza (miguel@gnu.org)
- * Chris Lahey (clahey@ximian.com)
- *
- * (C) 1999, 2000 Ximian, Inc.
- */
-#include <config.h>
-#include <gtk/gtksignal.h>
-#include "e-table-model.h"
-
-#define ETM_CLASS(e) ((ETableModelClass *)((GtkObject *)e)->klass)
-
-#define PARENT_TYPE gtk_object_get_type ()
-
-#define d(x)
-
-d(static gint depth = 0);
-
-
-static GtkObjectClass *e_table_model_parent_class;
-
-enum {
- MODEL_CHANGED,
- MODEL_PRE_CHANGE,
- MODEL_ROW_CHANGED,
- MODEL_CELL_CHANGED,
- MODEL_ROWS_INSERTED,
- MODEL_ROWS_DELETED,
- ROW_SELECTION,
- LAST_SIGNAL
-};
-
-static guint e_table_model_signals [LAST_SIGNAL] = { 0, };
-
-/**
- * e_table_model_column_count:
- * @e_table_model: The e-table-model to operate on
- *
- * Returns: the number of columns in the table model.
- */
-int
-e_table_model_column_count (ETableModel *e_table_model)
-{
- g_return_val_if_fail (e_table_model != NULL, 0);
- g_return_val_if_fail (E_IS_TABLE_MODEL (e_table_model), 0);
-
- return ETM_CLASS (e_table_model)->column_count (e_table_model);
-}
-
-
-/**
- * e_table_model_row_count:
- * @e_table_model: the e-table-model to operate on
- *
- * Returns: the number of rows in the Table model.
- */
-int
-e_table_model_row_count (ETableModel *e_table_model)
-{
- g_return_val_if_fail (e_table_model != NULL, 0);
- g_return_val_if_fail (E_IS_TABLE_MODEL (e_table_model), 0);
-
- return ETM_CLASS (e_table_model)->row_count (e_table_model);
-}
-
-/**
- * e_table_model_append_row:
- * @e_table_model: the table model to append the a row to.
- * @source:
- * @row:
- *
- */
-void
-e_table_model_append_row (ETableModel *e_table_model, ETableModel *source, int row)
-{
- g_return_if_fail (e_table_model != NULL);
- g_return_if_fail (E_IS_TABLE_MODEL (e_table_model));
-
- if (ETM_CLASS (e_table_model)->append_row)
- ETM_CLASS (e_table_model)->append_row (e_table_model, source, row);
-}
-
-/**
- * e_table_value_at:
- * @e_table_model: the e-table-model to operate on
- * @col: column in the model to pull data from.
- * @row: row in the model to pull data from.
- *
- * Return value: This function returns the value that is stored
- * by the @e_table_model in column @col and row @row. The data
- * returned can be a pointer or any data value that can be stored
- * inside a pointer.
- *
- * The data returned is typically used by an ECell renderer
- */
-void *
-e_table_model_value_at (ETableModel *e_table_model, int col, int row)
-{
- g_return_val_if_fail (e_table_model != NULL, NULL);
- g_return_val_if_fail (E_IS_TABLE_MODEL (e_table_model), NULL);
-
- return ETM_CLASS (e_table_model)->value_at (e_table_model, col, row);
-}
-
-/**
- * e_table_model_set_value_at:
- * @e_table_model: the table model to operate on.
- * @col: the column where the data will be stored in the model.
- * @row: the row where the data will be stored in the model.
- * @value: the data to be stored.
- *
- * This function instructs the model to store the value in @data in the
- * the @e_table_model at column @col and row @row. The @data typically
- * comes from one of the ECell rendering objects.
- *
- * There should be an agreement between the Table Model and the user
- * of this function about the data being stored. Typically it will
- * be a pointer to a set of data, or a datum that fits inside a void *.
- */
-void
-e_table_model_set_value_at (ETableModel *e_table_model, int col, int row, const void *value)
-{
- g_return_if_fail (e_table_model != NULL);
- g_return_if_fail (E_IS_TABLE_MODEL (e_table_model));
-
- ETM_CLASS (e_table_model)->set_value_at (e_table_model, col, row, value);
-}
-
-/**
- * e_table_model_is_cell_editable:
- * @e_table_model: the table model to query.
- * @col: column to query.
- * @row: row to query.
- *
- * Returns: %TRUE if the cell in @e_table_model at @col,@row can be
- * edited, %FALSE otherwise
- */
-gboolean
-e_table_model_is_cell_editable (ETableModel *e_table_model, int col, int row)
-{
- g_return_val_if_fail (e_table_model != NULL, FALSE);
- g_return_val_if_fail (E_IS_TABLE_MODEL (e_table_model), FALSE);
-
- return ETM_CLASS (e_table_model)->is_cell_editable (e_table_model, col, row);
-}
-
-
-void *
-e_table_model_duplicate_value (ETableModel *e_table_model, int col, const void *value)
-{
- g_return_val_if_fail (e_table_model != NULL, NULL);
- g_return_val_if_fail (E_IS_TABLE_MODEL (e_table_model), NULL);
-
- if (ETM_CLASS (e_table_model)->duplicate_value)
- return ETM_CLASS (e_table_model)->duplicate_value (e_table_model, col, value);
- else
- return NULL;
-}
-
-void
-e_table_model_free_value (ETableModel *e_table_model, int col, void *value)
-{
- g_return_if_fail (e_table_model != NULL);
- g_return_if_fail (E_IS_TABLE_MODEL (e_table_model));
-
- if (ETM_CLASS (e_table_model)->free_value)
- ETM_CLASS (e_table_model)->free_value (e_table_model, col, value);
-}
-
-char *
-e_table_model_get_save_id(ETableModel *e_table_model, int row)
-{
- g_return_val_if_fail (e_table_model != NULL, "/");
- g_return_val_if_fail (E_IS_TABLE_MODEL (e_table_model), "/");
-
- if (ETM_CLASS (e_table_model)->get_save_id)
- return ETM_CLASS (e_table_model)->get_save_id (e_table_model, row);
- else
- return NULL;
-}
-
-gboolean
-e_table_model_has_save_id(ETableModel *e_table_model)
-{
- g_return_val_if_fail (e_table_model != NULL, FALSE);
- g_return_val_if_fail (E_IS_TABLE_MODEL (e_table_model), FALSE);
-
- if (ETM_CLASS (e_table_model)->has_save_id)
- return ETM_CLASS (e_table_model)->has_save_id (e_table_model);
- else
- return FALSE;
-}
-
-gboolean
-e_table_model_has_change_pending(ETableModel *e_table_model)
-{
- g_return_val_if_fail (e_table_model != NULL, FALSE);
- g_return_val_if_fail (E_IS_TABLE_MODEL (e_table_model), FALSE);
-
- if (ETM_CLASS (e_table_model)->has_change_pending)
- return ETM_CLASS (e_table_model)->has_change_pending (e_table_model);
- else
- return FALSE;
-}
-
-void *
-e_table_model_initialize_value (ETableModel *e_table_model, int col)
-{
- g_return_val_if_fail (e_table_model != NULL, NULL);
- g_return_val_if_fail (E_IS_TABLE_MODEL (e_table_model), NULL);
-
- if (ETM_CLASS (e_table_model)->initialize_value)
- return ETM_CLASS (e_table_model)->initialize_value (e_table_model, col);
- else
- return NULL;
-}
-
-gboolean
-e_table_model_value_is_empty (ETableModel *e_table_model, int col, const void *value)
-{
- g_return_val_if_fail (e_table_model != NULL, FALSE);
- g_return_val_if_fail (E_IS_TABLE_MODEL (e_table_model), FALSE);
-
- if (ETM_CLASS (e_table_model)->value_is_empty)
- return ETM_CLASS (e_table_model)->value_is_empty (e_table_model, col, value);
- else
- return FALSE;
-}
-
-char *
-e_table_model_value_to_string (ETableModel *e_table_model, int col, const void *value)
-{
- g_return_val_if_fail (e_table_model != NULL, NULL);
- g_return_val_if_fail (E_IS_TABLE_MODEL (e_table_model), NULL);
-
- if (ETM_CLASS (e_table_model)->value_to_string)
- return ETM_CLASS (e_table_model)->value_to_string (e_table_model, col, value);
- else
- return g_strdup("");
-}
-
-static void
-e_table_model_destroy (GtkObject *object)
-{
- if (e_table_model_parent_class->destroy)
- (*e_table_model_parent_class->destroy)(object);
-}
-
-static void
-e_table_model_class_init (GtkObjectClass *object_class)
-{
- ETableModelClass *klass = E_TABLE_MODEL_CLASS(object_class);
- e_table_model_parent_class = gtk_type_class (PARENT_TYPE);
-
- object_class->destroy = e_table_model_destroy;
-
- e_table_model_signals [MODEL_CHANGED] =
- gtk_signal_new ("model_changed",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableModelClass, model_changed),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- e_table_model_signals [MODEL_PRE_CHANGE] =
- gtk_signal_new ("model_pre_change",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableModelClass, model_pre_change),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- e_table_model_signals [MODEL_ROW_CHANGED] =
- gtk_signal_new ("model_row_changed",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableModelClass, model_row_changed),
- gtk_marshal_NONE__INT,
- GTK_TYPE_NONE, 1, GTK_TYPE_INT);
-
- e_table_model_signals [MODEL_CELL_CHANGED] =
- gtk_signal_new ("model_cell_changed",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableModelClass, model_cell_changed),
- gtk_marshal_NONE__INT_INT,
- GTK_TYPE_NONE, 2, GTK_TYPE_INT, GTK_TYPE_INT);
-
- e_table_model_signals [MODEL_ROWS_INSERTED] =
- gtk_signal_new ("model_rows_inserted",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableModelClass, model_rows_inserted),
- gtk_marshal_NONE__INT_INT,
- GTK_TYPE_NONE, 2, GTK_TYPE_INT, GTK_TYPE_INT);
-
- e_table_model_signals [MODEL_ROWS_DELETED] =
- gtk_signal_new ("model_rows_deleted",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableModelClass, model_rows_deleted),
- gtk_marshal_NONE__INT_INT,
- GTK_TYPE_NONE, 2, GTK_TYPE_INT, GTK_TYPE_INT);
-
- gtk_object_class_add_signals (object_class, e_table_model_signals, LAST_SIGNAL);
-
- klass->column_count = NULL;
- klass->row_count = NULL;
- klass->append_row = NULL;
-
- klass->value_at = NULL;
- klass->set_value_at = NULL;
- klass->is_cell_editable = NULL;
-
- klass->get_save_id = NULL;
- klass->has_save_id = NULL;
-
- klass->has_change_pending = NULL;
-
- klass->duplicate_value = NULL;
- klass->free_value = NULL;
- klass->initialize_value = NULL;
- klass->value_is_empty = NULL;
- klass->value_to_string = NULL;
-
- klass->model_changed = NULL;
- klass->model_row_changed = NULL;
- klass->model_cell_changed = NULL;
- klass->model_rows_inserted = NULL;
- klass->model_rows_deleted = NULL;
-}
-
-
-guint
-e_table_model_get_type (void)
-{
- static guint type = 0;
-
- if (!type)
- {
- GtkTypeInfo info =
- {
- "ETableModel",
- sizeof (ETableModel),
- sizeof (ETableModelClass),
- (GtkClassInitFunc) e_table_model_class_init,
- NULL,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- type = gtk_type_unique (PARENT_TYPE, &info);
- }
-
- return type;
-}
-
-#if d(!)0
-static void
-print_tabs (void)
-{
- int i;
- for (i = 0; i < depth; i++)
- g_print("\t");
-}
-#endif
-
-void
-e_table_model_pre_change (ETableModel *e_table_model)
-{
- g_return_if_fail (e_table_model != NULL);
- g_return_if_fail (E_IS_TABLE_MODEL (e_table_model));
-
- d(print_tabs());
- d(g_print("Emitting pre_change on model 0x%p.\n", e_table_model));
- d(depth++);
- gtk_signal_emit (GTK_OBJECT (e_table_model),
- e_table_model_signals [MODEL_PRE_CHANGE]);
- d(depth--);
-}
-
-/**
- * e_table_model_changed:
- * @e_table_model: the table model to notify of the change
- *
- * Use this function to notify any views of this table model that
- * the contents of the table model have changed. This will emit
- * the signal "model_changed" on the @e_table_model object.
- *
- * It is preferable to use the e_table_model_row_changed() and
- * the e_table_model_cell_changed() to notify of smaller changes
- * than to invalidate the entire model, as the views might have
- * ways of caching the information they render from the model.
- */
-void
-e_table_model_changed (ETableModel *e_table_model)
-{
- g_return_if_fail (e_table_model != NULL);
- g_return_if_fail (E_IS_TABLE_MODEL (e_table_model));
-
- d(print_tabs());
- d(g_print("Emitting model_changed on model 0x%p.\n", e_table_model));
- d(depth++);
- gtk_signal_emit (GTK_OBJECT (e_table_model),
- e_table_model_signals [MODEL_CHANGED]);
- d(depth--);
-}
-
-/**
- * e_table_model_row_changed:
- * @e_table_model: the table model to notify of the change
- * @row: the row that was changed in the model.
- *
- * Use this function to notify any views of the table model that
- * the contents of row @row have changed in model. This function
- * will emit the "model_row_changed" signal on the @e_table_model
- * object
- */
-void
-e_table_model_row_changed (ETableModel *e_table_model, int row)
-{
- g_return_if_fail (e_table_model != NULL);
- g_return_if_fail (E_IS_TABLE_MODEL (e_table_model));
-
- d(print_tabs());
- d(g_print("Emitting row_changed on model 0x%p, row %d.\n", e_table_model, row));
- d(depth++);
- gtk_signal_emit (GTK_OBJECT (e_table_model),
- e_table_model_signals [MODEL_ROW_CHANGED], row);
- d(depth--);
-}
-
-/**
- * e_table_model_cell_changed:
- * @e_table_model: the table model to notify of the change
- * @col: the column.
- * @row: the row
- *
- * Use this function to notify any views of the table model that
- * contents of the cell at @col,@row has changed. This will emit
- * the "model_cell_changed" signal on the @e_table_model
- * object
- */
-void
-e_table_model_cell_changed (ETableModel *e_table_model, int col, int row)
-{
- g_return_if_fail (e_table_model != NULL);
- g_return_if_fail (E_IS_TABLE_MODEL (e_table_model));
-
- d(print_tabs());
- d(g_print("Emitting cell_changed on model 0x%p, row %d, col %d.\n", e_table_model, row, col));
- d(depth++);
- gtk_signal_emit (GTK_OBJECT (e_table_model),
- e_table_model_signals [MODEL_CELL_CHANGED], col, row);
- d(depth--);
-}
-
-/**
- * e_table_model_rows_inserted:
- * @e_table_model: the table model to notify of the change
- * @row: the row that was inserted into the model.
- * @count: The number of rows that were inserted.
- *
- * Use this function to notify any views of the table model that
- * @count rows at row @row have been inserted into the model. This
- * function will emit the "model_rows_inserted" signal on the
- * @e_table_model object
- */
-void
-e_table_model_rows_inserted (ETableModel *e_table_model, int row, int count)
-{
- g_return_if_fail (e_table_model != NULL);
- g_return_if_fail (E_IS_TABLE_MODEL (e_table_model));
-
- d(print_tabs());
- d(g_print("Emitting row_inserted on model 0x%p, row %d.\n", e_table_model, row));
- d(depth++);
- gtk_signal_emit (GTK_OBJECT (e_table_model),
- e_table_model_signals [MODEL_ROWS_INSERTED], row, count);
- d(depth--);
-}
-
-/**
- * e_table_model_row_inserted:
- * @e_table_model: the table model to notify of the change
- * @row: the row that was inserted into the model.
- *
- * Use this function to notify any views of the table model that the
- * row @row has been inserted into the model. This function will emit
- * the "model_rows_inserted" signal on the @e_table_model object
- */
-void
-e_table_model_row_inserted (ETableModel *e_table_model, int row)
-{
- e_table_model_rows_inserted(e_table_model, row, 1);
-}
-
-/**
- * e_table_model_row_deleted:
- * @e_table_model: the table model to notify of the change
- * @row: the row that was deleted
- * @count: The number of rows deleted
- *
- * Use this function to notify any views of the table model that
- * @count rows at row @row have been deleted from the model. This
- * function will emit the "model_rows_deleted" signal on the
- * @e_table_model object
- */
-void
-e_table_model_rows_deleted (ETableModel *e_table_model, int row, int count)
-{
- g_return_if_fail (e_table_model != NULL);
- g_return_if_fail (E_IS_TABLE_MODEL (e_table_model));
-
- d(print_tabs());
- d(g_print("Emitting row_deleted on model 0x%p, row %d.\n", e_table_model, row));
- d(depth++);
- gtk_signal_emit (GTK_OBJECT (e_table_model),
- e_table_model_signals [MODEL_ROWS_DELETED], row, count);
- d(depth--);
-}
-
-/**
- * e_table_model_row_deleted:
- * @e_table_model: the table model to notify of the change
- * @row: the row that was deleted
- *
- * Use this function to notify any views of the table model that the
- * row @row has been deleted from the model. This function will emit
- * the "model_rows_deleted" signal on the @e_table_model object
- */
-void
-e_table_model_row_deleted (ETableModel *e_table_model, int row)
-{
- e_table_model_rows_deleted(e_table_model, row, 1);
-}
diff --git a/widgets/table/e-table-model.h b/widgets/table/e-table-model.h
deleted file mode 100644
index 333ab0fcfc..0000000000
--- a/widgets/table/e-table-model.h
+++ /dev/null
@@ -1,148 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_MODEL_H_
-#define _E_TABLE_MODEL_H_
-
-#include <gtk/gtkobject.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define E_TABLE_MODEL_TYPE (e_table_model_get_type ())
-#define E_TABLE_MODEL(o) (GTK_CHECK_CAST ((o), E_TABLE_MODEL_TYPE, ETableModel))
-#define E_TABLE_MODEL_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_MODEL_TYPE, ETableModelClass))
-#define E_IS_TABLE_MODEL(o) (GTK_CHECK_TYPE ((o), E_TABLE_MODEL_TYPE))
-#define E_IS_TABLE_MODEL_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_MODEL_TYPE))
-
-typedef struct {
- GtkObject base;
-} ETableModel;
-
-typedef struct {
- GtkObjectClass parent_class;
-
- /*
- * Virtual methods
- */
- int (*column_count) (ETableModel *etm);
- int (*row_count) (ETableModel *etm);
- void (*append_row) (ETableModel *etm, ETableModel *source, int row);
-
- void *(*value_at) (ETableModel *etm, int col, int row);
- void (*set_value_at) (ETableModel *etm, int col, int row, const void *value);
- gboolean (*is_cell_editable) (ETableModel *etm, int col, int row);
-
- char *(*get_save_id) (ETableModel *etm, int row);
- gboolean (*has_save_id) (ETableModel *etm);
-
- gboolean (*has_change_pending) (ETableModel *etm);
-
- /* Allocate a copy of the given value. */
- void *(*duplicate_value) (ETableModel *etm, int col, const void *value);
- /* Free an allocated value. */
- void (*free_value) (ETableModel *etm, int col, void *value);
- /* Return an allocated empty value. */
- void *(*initialize_value) (ETableModel *etm, int col);
- /* Return TRUE if value is equivalent to an empty cell. */
- gboolean (*value_is_empty) (ETableModel *etm, int col, const void *value);
- /* Return an allocated string. */
- char *(*value_to_string) (ETableModel *etm, int col, const void *value);
-
-
- /*
- * Signals
- */
-
- /*
- * These all come after the change has been made.
- * Major structural changes: model_changed
- * Changes only in a row: row_changed
- * Only changes in a cell: cell_changed
- * A row inserted: row_inserted
- * A row deleted: row_deleted
- */
- void (*model_pre_change) (ETableModel *etm);
-
- void (*model_changed) (ETableModel *etm);
- void (*model_row_changed) (ETableModel *etm, int row);
- void (*model_cell_changed) (ETableModel *etm, int col, int row);
- void (*model_rows_inserted) (ETableModel *etm, int row, int count);
- void (*model_rows_deleted) (ETableModel *etm, int row, int count);
-} ETableModelClass;
-
-GtkType e_table_model_get_type (void);
-
-/**/
-int e_table_model_column_count (ETableModel *e_table_model);
-const char *e_table_model_column_name (ETableModel *e_table_model,
- int col);
-int e_table_model_row_count (ETableModel *e_table_model);
-void e_table_model_append_row (ETableModel *e_table_model,
- ETableModel *source,
- int row);
-
-/**/
-void *e_table_model_value_at (ETableModel *e_table_model,
- int col,
- int row);
-void e_table_model_set_value_at (ETableModel *e_table_model,
- int col,
- int row,
- const void *value);
-gboolean e_table_model_is_cell_editable (ETableModel *e_table_model,
- int col,
- int row);
-
-/**/
-char *e_table_model_get_save_id (ETableModel *etm,
- int row);
-gboolean e_table_model_has_save_id (ETableModel *etm);
-
-/**/
-gboolean e_table_model_has_change_pending (ETableModel *etm);
-
-
-/**/
-void *e_table_model_duplicate_value (ETableModel *e_table_model,
- int col,
- const void *value);
-void e_table_model_free_value (ETableModel *e_table_model,
- int col,
- void *value);
-void *e_table_model_initialize_value (ETableModel *e_table_model,
- int col);
-gboolean e_table_model_value_is_empty (ETableModel *e_table_model,
- int col,
- const void *value);
-char *e_table_model_value_to_string (ETableModel *e_table_model,
- int col,
- const void *value);
-
-/*
- * Routines for emitting signals on the e_table
- */
-void e_table_model_pre_change (ETableModel *e_table_model);
-void e_table_model_changed (ETableModel *e_table_model);
-void e_table_model_row_changed (ETableModel *e_table_model,
- int row);
-void e_table_model_cell_changed (ETableModel *e_table_model,
- int col,
- int row);
-void e_table_model_rows_inserted (ETableModel *e_table_model,
-int row,
-int count);
-void e_table_model_rows_deleted (ETableModel *e_table_model,
-int row,
-int count);
-
-/**/
-void e_table_model_row_inserted (ETableModel *e_table_model,
-int row);
-void e_table_model_row_deleted (ETableModel *e_table_model,
-int row);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_TABLE_MODEL_H_ */
diff --git a/widgets/table/e-table-one.c b/widgets/table/e-table-one.c
deleted file mode 100644
index 524005cd6e..0000000000
--- a/widgets/table/e-table-one.c
+++ /dev/null
@@ -1,236 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-table-model.c: a one table model implementation that uses function
- * pointers to simplify the creation of new, exotic and colorful tables in
- * no time.
- *
- * Author:
- * Miguel de Icaza (miguel@gnu.org)
- *
- * (C) 1999 Ximian, Inc.
- */
-
-#include <config.h>
-#include "e-table-one.h"
-
-#define PARENT_TYPE e_table_model_get_type ()
-
-static int
-one_column_count (ETableModel *etm)
-{
- ETableOne *one = E_TABLE_ONE(etm);
-
- if (one->source)
- return e_table_model_column_count(one->source);
- else
- return 0;
-}
-
-static int
-one_row_count (ETableModel *etm)
-{
- return 1;
-}
-
-static void *
-one_value_at (ETableModel *etm, int col, int row)
-{
- ETableOne *one = E_TABLE_ONE(etm);
-
- if (one->data)
- return one->data[col];
- else
- return NULL;
-}
-
-static void
-one_set_value_at (ETableModel *etm, int col, int row, const void *val)
-{
- ETableOne *one = E_TABLE_ONE(etm);
-
- if (one->data && one->source) {
- e_table_model_free_value(one->source, col, one->data[col]);
- one->data[col] = e_table_model_duplicate_value(one->source, col, val);
- }
-}
-
-static gboolean
-one_is_cell_editable (ETableModel *etm, int col, int row)
-{
- ETableOne *one = E_TABLE_ONE(etm);
-
- if (one->source)
- return e_table_model_is_cell_editable(one->source, 0, row);
- else
- return FALSE;
-}
-
-/* The default for one_duplicate_value is to return the raw value. */
-static void *
-one_duplicate_value (ETableModel *etm, int col, const void *value)
-{
- ETableOne *one = E_TABLE_ONE(etm);
-
- if (one->source)
- return e_table_model_duplicate_value(one->source, col, value);
- else
- return (void *)value;
-}
-
-static void
-one_free_value (ETableModel *etm, int col, void *value)
-{
- ETableOne *one = E_TABLE_ONE(etm);
-
- if (one->source)
- e_table_model_free_value(one->source, col, value);
-}
-
-static void *
-one_initialize_value (ETableModel *etm, int col)
-{
- ETableOne *one = E_TABLE_ONE(etm);
-
- if (one->source)
- return e_table_model_initialize_value (one->source, col);
- else
- return NULL;
-}
-
-static gboolean
-one_value_is_empty (ETableModel *etm, int col, const void *value)
-{
- ETableOne *one = E_TABLE_ONE(etm);
-
- if (one->source)
- return e_table_model_value_is_empty (one->source, col, value);
- else
- return FALSE;
-}
-
-static char *
-one_value_to_string (ETableModel *etm, int col, const void *value)
-{
- ETableOne *one = E_TABLE_ONE(etm);
-
- if (one->source)
- return e_table_model_value_to_string (one->source, col, value);
- else
- return g_strdup("");
-}
-
-static void
-one_destroy (GtkObject *object)
-{
- ETableOne *one = E_TABLE_ONE(object);
-
- if (one->source) {
- int i;
- int col_count;
-
- col_count = e_table_model_column_count(one->source);
-
- if (one->data) {
- for (i = 0; i < col_count; i++) {
- e_table_model_free_value(one->source, i, one->data[i]);
- }
- }
-
- gtk_object_unref(GTK_OBJECT(one->source));
- }
-
- g_free(one->data);
-}
-
-static void
-e_table_one_class_init (GtkObjectClass *object_class)
-{
- ETableModelClass *model_class = (ETableModelClass *) object_class;
-
- model_class->column_count = one_column_count;
- model_class->row_count = one_row_count;
- model_class->value_at = one_value_at;
- model_class->set_value_at = one_set_value_at;
- model_class->is_cell_editable = one_is_cell_editable;
- model_class->duplicate_value = one_duplicate_value;
- model_class->free_value = one_free_value;
- model_class->initialize_value = one_initialize_value;
- model_class->value_is_empty = one_value_is_empty;
- model_class->value_to_string = one_value_to_string;
-
- object_class->destroy = one_destroy;
-}
-
-static void
-e_table_one_init (GtkObject *object)
-{
- ETableOne *one = E_TABLE_ONE(object);
-
- one->source = NULL;
- one->data = NULL;
-}
-
-GtkType
-e_table_one_get_type (void)
-{
- static GtkType type = 0;
-
- if (!type){
- GtkTypeInfo info = {
- "ETableOne",
- sizeof (ETableOne),
- sizeof (ETableOneClass),
- (GtkClassInitFunc) e_table_one_class_init,
- (GtkObjectInitFunc) e_table_one_init,
- NULL, /* reserved 1 */
- NULL, /* reserved 2 */
- (GtkClassInitFunc) NULL
- };
-
- type = gtk_type_unique (PARENT_TYPE, &info);
- }
-
- return type;
-}
-
-ETableModel *
-e_table_one_new (ETableModel *source)
-{
- ETableOne *eto;
- int col_count;
- int i;
-
- eto = gtk_type_new (e_table_one_get_type ());
-
- eto->source = source;
-
- col_count = e_table_model_column_count(source);
- eto->data = g_new(void *, col_count);
- for (i = 0; i < col_count; i++) {
- eto->data[i] = e_table_model_initialize_value(source, i);
- }
-
- if (source)
- gtk_object_ref(GTK_OBJECT(source));
-
- return (ETableModel *) eto;
-}
-
-void
-e_table_one_commit (ETableOne *one)
-{
- if (one->source) {
- int empty = TRUE;
- int col;
- int cols = e_table_model_column_count(one->source);
- for (col = 0; col < cols; col++) {
- if (!e_table_model_value_is_empty(one->source, col, one->data[col])) {
- empty = FALSE;
- break;
- }
- }
- if (!empty) {
- e_table_model_append_row(one->source, E_TABLE_MODEL(one), 0);
- }
- }
-}
diff --git a/widgets/table/e-table-one.h b/widgets/table/e-table-one.h
deleted file mode 100644
index 2636f018ab..0000000000
--- a/widgets/table/e-table-one.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_ONE_H_
-#define _E_TABLE_ONE_H_
-
-#include <gal/e-table/e-table-model.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-#define E_TABLE_ONE_TYPE (e_table_one_get_type ())
-#define E_TABLE_ONE(o) (GTK_CHECK_CAST ((o), E_TABLE_ONE_TYPE, ETableOne))
-#define E_TABLE_ONE_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_ONE_TYPE, ETableOneClass))
-#define E_IS_TABLE_ONE(o) (GTK_CHECK_TYPE ((o), E_TABLE_ONE_TYPE))
-#define E_IS_TABLE_ONE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_ONE_TYPE))
-
-typedef struct {
- ETableModel parent;
-
- ETableModel *source;
- void **data;
-} ETableOne;
-
-typedef struct {
- ETableModelClass parent_class;
-} ETableOneClass;
-
-GtkType e_table_one_get_type (void);
-
-ETableModel *e_table_one_new (ETableModel *source);
-void e_table_one_commit (ETableOne *one);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_TABLE_ONE_H_ */
-
diff --git a/widgets/table/e-table-scrolled.c b/widgets/table/e-table-scrolled.c
deleted file mode 100644
index fcf9d64199..0000000000
--- a/widgets/table/e-table-scrolled.c
+++ /dev/null
@@ -1,211 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * E-table-scrolled.c: A graphical view of a Table.
- *
- * Author:
- * Chris Lahey <clahey@ximian.com>
- * Miguel de Icaza (miguel@ximian.com)
- *
- * Copyright 2000, 1999, Ximian, Inc
- */
-#include <config.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdio.h>
-#include <libgnomeui/gnome-canvas.h>
-#include <gtk/gtksignal.h>
-#include <gnome-xml/parser.h>
-#include <gnome-xml/xmlmemory.h>
-
-#include "e-table.h"
-#include "e-table-scrolled.h"
-
-#define COLUMN_HEADER_HEIGHT 16
-
-#define PARENT_TYPE e_scroll_frame_get_type ()
-
-static GtkObjectClass *parent_class;
-
-enum {
- ARG_0,
- ARG_TABLE,
-};
-
-static void
-e_table_scrolled_init (GtkObject *object)
-{
- ETableScrolled *ets;
- EScrollFrame *scroll_frame;
-
- ets = E_TABLE_SCROLLED (object);
- scroll_frame = E_SCROLL_FRAME (object);
-
- GTK_WIDGET_SET_FLAGS (ets, GTK_CAN_FOCUS);
-
- ets->table = gtk_type_new(e_table_get_type());
-
- e_scroll_frame_set_policy (scroll_frame, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
- e_scroll_frame_set_shadow_type (scroll_frame, GTK_SHADOW_IN);
-}
-
-static void
-e_table_scrolled_real_construct (ETableScrolled *ets)
-{
- gtk_container_add(GTK_CONTAINER(ets), GTK_WIDGET(ets->table));
-
- gtk_widget_show(GTK_WIDGET(ets->table));
-}
-
-ETableScrolled *e_table_scrolled_construct (ETableScrolled *ets,
- ETableModel *etm,
- ETableExtras *ete,
- const char *spec,
- const char *state)
-{
- g_return_val_if_fail(ets != NULL, NULL);
- g_return_val_if_fail(E_IS_TABLE_SCROLLED(ets), NULL);
- g_return_val_if_fail(etm != NULL, NULL);
- g_return_val_if_fail(E_IS_TABLE_MODEL(etm), NULL);
- g_return_val_if_fail(ete == NULL || E_IS_TABLE_EXTRAS(ete), NULL);
- g_return_val_if_fail(spec != NULL, NULL);
-
- e_table_construct(ets->table, etm, ete, spec, state);
-
- e_table_scrolled_real_construct(ets);
-
- return ets;
-}
-
-GtkWidget *e_table_scrolled_new (ETableModel *etm,
- ETableExtras *ete,
- const char *spec,
- const char *state)
-{
- ETableScrolled *ets;
-
- g_return_val_if_fail(etm != NULL, NULL);
- g_return_val_if_fail(E_IS_TABLE_MODEL(etm), NULL);
- g_return_val_if_fail(ete == NULL || E_IS_TABLE_EXTRAS(ete), NULL);
- g_return_val_if_fail(spec != NULL, NULL);
-
- ets = E_TABLE_SCROLLED (gtk_widget_new (e_table_scrolled_get_type (),
- "hadjustment", NULL,
- "vadjustment", NULL,
- NULL));
-
- ets = e_table_scrolled_construct (ets, etm, ete, spec, state);
-
- return GTK_WIDGET (ets);
-}
-
-ETableScrolled *e_table_scrolled_construct_from_spec_file (ETableScrolled *ets,
- ETableModel *etm,
- ETableExtras *ete,
- const char *spec_fn,
- const char *state_fn)
-{
- g_return_val_if_fail(ets != NULL, NULL);
- g_return_val_if_fail(E_IS_TABLE_SCROLLED(ets), NULL);
- g_return_val_if_fail(etm != NULL, NULL);
- g_return_val_if_fail(E_IS_TABLE_MODEL(etm), NULL);
- g_return_val_if_fail(ete == NULL || E_IS_TABLE_EXTRAS(ete), NULL);
- g_return_val_if_fail(spec_fn != NULL, NULL);
-
- e_table_construct_from_spec_file(ets->table, etm, ete, spec_fn, state_fn);
-
- e_table_scrolled_real_construct(ets);
-
- return ets;
-}
-
-GtkWidget *e_table_scrolled_new_from_spec_file (ETableModel *etm,
- ETableExtras *ete,
- const char *spec_fn,
- const char *state_fn)
-{
- ETableScrolled *ets;
-
- g_return_val_if_fail(etm != NULL, NULL);
- g_return_val_if_fail(E_IS_TABLE_MODEL(etm), NULL);
- g_return_val_if_fail(ete == NULL || E_IS_TABLE_EXTRAS(ete), NULL);
- g_return_val_if_fail(spec_fn != NULL, NULL);
-
- ets = E_TABLE_SCROLLED (gtk_widget_new (e_table_scrolled_get_type (),
- "hadjustment", NULL,
- "vadjustment", NULL,
- NULL));
-
- ets = e_table_scrolled_construct_from_spec_file (ets, etm, ete, spec_fn, state_fn);
-
- return GTK_WIDGET (ets);
-}
-
-ETable *
-e_table_scrolled_get_table (ETableScrolled *ets)
-{
- return ets->table;
-}
-
-static void
-ets_get_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- ETableScrolled *ets = E_TABLE_SCROLLED (o);
-
- switch (arg_id){
- case ARG_TABLE:
- if (ets->table)
- GTK_VALUE_OBJECT (*arg) = GTK_OBJECT(ets->table);
- else
- GTK_VALUE_OBJECT (*arg) = NULL;
- break;
- }
-}
-
-/* Grab_focus handler for the scrolled ETable */
-static void
-ets_grab_focus (GtkWidget *widget)
-{
- ETableScrolled *ets;
-
- ets = E_TABLE_SCROLLED (widget);
-
- gtk_widget_grab_focus (GTK_WIDGET (ets->table));
-}
-
-/* Focus handler for the scrolled ETable */
-static gint
-ets_focus (GtkContainer *container, GtkDirectionType direction)
-{
- ETableScrolled *ets;
-
- ets = E_TABLE_SCROLLED (container);
-
- return gtk_container_focus (GTK_CONTAINER (ets->table), direction);
-}
-
-static void
-e_table_scrolled_class_init (ETableScrolledClass *class)
-{
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
- GtkContainerClass *container_class;
-
- object_class = (GtkObjectClass *) class;
- widget_class = (GtkWidgetClass *) class;
- container_class = (GtkContainerClass *) class;
-
- parent_class = gtk_type_class (PARENT_TYPE);
-
- object_class->get_arg = ets_get_arg;
-
- widget_class->grab_focus = ets_grab_focus;
-
- container_class->focus = ets_focus;
-
- gtk_object_add_arg_type ("ETableScrolled::table", GTK_TYPE_OBJECT,
- GTK_ARG_READABLE, ARG_TABLE);
-}
-
-E_MAKE_TYPE(e_table_scrolled, "ETableScrolled", ETableScrolled, e_table_scrolled_class_init, e_table_scrolled_init, PARENT_TYPE);
-
diff --git a/widgets/table/e-table-scrolled.h b/widgets/table/e-table-scrolled.h
deleted file mode 100644
index 82643b214d..0000000000
--- a/widgets/table/e-table-scrolled.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_SCROLLED_H_
-#define _E_TABLE_SCROLLED_H_
-
-#include <gal/widgets/e-scroll-frame.h>
-#include <gal/e-table/e-table-model.h>
-#include <gal/e-table/e-table.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_TABLE_SCROLLED_TYPE (e_table_scrolled_get_type ())
-#define E_TABLE_SCROLLED(o) (GTK_CHECK_CAST ((o), E_TABLE_SCROLLED_TYPE, ETableScrolled))
-#define E_TABLE_SCROLLED_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_SCROLLED_TYPE, ETableScrolledClass))
-#define E_IS_TABLE_SCROLLED(o) (GTK_CHECK_TYPE ((o), E_TABLE_SCROLLED_TYPE))
-#define E_IS_TABLE_SCROLLED_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_SCROLLED_TYPE))
-
-typedef struct {
- EScrollFrame parent;
-
- ETable *table;
-} ETableScrolled;
-
-typedef struct {
- EScrollFrameClass parent_class;
-} ETableScrolledClass;
-
-GtkType e_table_scrolled_get_type (void);
-
-ETableScrolled *e_table_scrolled_construct (ETableScrolled *ets,
- ETableModel *etm,
- ETableExtras *ete,
- const char *spec,
- const char *state);
-GtkWidget *e_table_scrolled_new (ETableModel *etm,
- ETableExtras *ete,
- const char *spec,
- const char *state);
-
-ETableScrolled *e_table_scrolled_construct_from_spec_file (ETableScrolled *ets,
- ETableModel *etm,
- ETableExtras *ete,
- const char *spec_fn,
- const char *state_fn);
-GtkWidget *e_table_scrolled_new_from_spec_file (ETableModel *etm,
- ETableExtras *ete,
- const char *spec_fn,
- const char *state_fn);
-
-ETable *e_table_scrolled_get_table (ETableScrolled *ets);
-
-END_GNOME_DECLS
-
-#endif /* _E_TABLE_SCROLLED_H_ */
-
diff --git a/widgets/table/e-table-selection-model.c b/widgets/table/e-table-selection-model.c
deleted file mode 100644
index d8d806afb8..0000000000
--- a/widgets/table/e-table-selection-model.c
+++ /dev/null
@@ -1,303 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-table-selection-model.c: a Table Selection Model
- *
- * Author:
- * Christopher James Lahey <clahey@ximian.com>
- *
- * (C) 2000, 2001 Ximian, Inc.
- */
-#include <config.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtksignal.h>
-#include "e-table-selection-model.h"
-#include "gal/util/e-util.h"
-
-#define ETSM_CLASS(e) ((ETableSelectionModelClass *)((GtkObject *)e)->klass)
-
-#define PARENT_TYPE e_selection_model_array_get_type ()
-
-static ESelectionModelArray *parent_class;
-
-static gint etsm_get_row_count (ESelectionModelArray *esm);
-
-enum {
- ARG_0,
- ARG_MODEL,
-};
-
-#if 0
-static void
-save_to_hash(int model_row, gpointer closure)
-{
- ETableSelectionModel *etsm = closure;
- gchar *key = e_table_model_get_save_id(etsm->model, model_row);
-
- g_hash_table_insert(etsm->hash, key, key);
-}
-#endif
-
-static void
-free_key(gpointer key, gpointer value, gpointer closure)
-{
- g_free(key);
-}
-
-static void
-free_hash(ETableSelectionModel *etsm)
-{
- if (etsm->hash) {
- g_hash_table_foreach(etsm->hash, free_key, NULL);
- g_hash_table_destroy(etsm->hash);
- etsm->hash = NULL;
- }
- g_free(etsm->cursor_id);
- etsm->cursor_id = NULL;
-}
-
-static void
-model_pre_change (ETableModel *etm, ETableSelectionModel *etsm)
-{
- free_hash(etsm);
-
-#if 0
- if (etsm->model && (!etsm->hash) && e_table_model_has_save_id(etsm->model)) {
- gint cursor_row;
- etsm->hash = g_hash_table_new(g_str_hash, g_str_equal);
- e_selection_model_foreach(E_SELECTION_MODEL(etsm), save_to_hash, etsm);
- gtk_object_get(GTK_OBJECT(etsm),
- "cursor_row", &cursor_row,
- NULL);
- if (cursor_row != -1) {
- etsm->cursor_id = e_table_model_get_save_id(etm, cursor_row);
- }
- }
-#endif
-}
-
-#if 0
-static gint
-model_changed_idle(ETableSelectionModel *etsm)
-{
- ETableModel *etm = etsm->model;
-
- e_selection_model_clear(E_SELECTION_MODEL(etsm));
-
- if (etsm->hash && etm && e_table_model_has_save_id(etm)) {
- int row_count = e_table_model_row_count(etm);
- int i;
- e_selection_model_array_confirm_row_count(E_SELECTION_MODEL_ARRAY(etsm));
- for (i = 0; i < row_count; i++) {
- char *save_id = e_table_model_get_save_id(etm, i);
- if (g_hash_table_lookup(etsm->hash, save_id))
- e_selection_model_change_one_row(E_SELECTION_MODEL(etsm), i, TRUE);
- if (etsm->cursor_id && !strcmp(etsm->cursor_id, save_id)) {
- e_selection_model_change_cursor(E_SELECTION_MODEL(etsm), i, e_selection_model_cursor_row(E_SELECTION_MODEL(etsm)));
- g_free(etsm->cursor_id);
- etsm->cursor_id = NULL;
- }
- g_free(save_id);
- }
- free_hash(etsm);
- }
- etsm->model_changed_idle_id = 0;
- return FALSE;
-}
-#endif
-
-static void
-model_changed(ETableModel *etm, ETableSelectionModel *etsm)
-{
- e_selection_model_clear(E_SELECTION_MODEL(etsm));
-#if 0
- if (!etsm->model_changed_idle_id && etm && e_table_model_has_save_id(etm)) {
- etsm->model_changed_idle_id = g_idle_add_full(G_PRIORITY_HIGH, (GSourceFunc) model_changed_idle, etsm, NULL);
- }
-#endif
-}
-
-static void
-model_row_changed(ETableModel *etm, int row, ETableSelectionModel *etsm)
-{
- if (etsm->hash)
- free_hash(etsm);
-}
-
-static void
-model_cell_changed(ETableModel *etm, int col, int row, ETableSelectionModel *etsm)
-{
- if (etsm->hash)
- free_hash(etsm);
-}
-
-#if 1
-static void
-model_rows_inserted(ETableModel *etm, int row, int count, ETableSelectionModel *etsm)
-{
- e_selection_model_array_insert_rows(E_SELECTION_MODEL_ARRAY(etsm), row, count);
- if (etsm->hash)
- free_hash(etsm);
-}
-
-static void
-model_rows_deleted(ETableModel *etm, int row, int count, ETableSelectionModel *etsm)
-{
- e_selection_model_array_delete_rows(E_SELECTION_MODEL_ARRAY(etsm), row, count);
- if (etsm->hash)
- free_hash(etsm);
-}
-
-#else
-
-static void
-model_rows_inserted(ETableModel *etm, int row, int count, ETableSelectionModel *etsm)
-{
- model_changed(etm, etsm);
-}
-
-static void
-model_rows_deleted(ETableModel *etm, int row, int count, ETableSelectionModel *etsm)
-{
- model_changed(etm, etsm);
-}
-#endif
-
-inline static void
-add_model(ETableSelectionModel *etsm, ETableModel *model)
-{
- etsm->model = model;
- if (model) {
- gtk_object_ref(GTK_OBJECT(model));
- etsm->model_pre_change_id = gtk_signal_connect(GTK_OBJECT(model), "model_pre_change",
- GTK_SIGNAL_FUNC(model_pre_change), etsm);
- etsm->model_changed_id = gtk_signal_connect(GTK_OBJECT(model), "model_changed",
- GTK_SIGNAL_FUNC(model_changed), etsm);
- etsm->model_row_changed_id = gtk_signal_connect(GTK_OBJECT(model), "model_row_changed",
- GTK_SIGNAL_FUNC(model_row_changed), etsm);
- etsm->model_cell_changed_id = gtk_signal_connect(GTK_OBJECT(model), "model_cell_changed",
- GTK_SIGNAL_FUNC(model_cell_changed), etsm);
- etsm->model_rows_inserted_id = gtk_signal_connect(GTK_OBJECT(model), "model_rows_inserted",
- GTK_SIGNAL_FUNC(model_rows_inserted), etsm);
- etsm->model_rows_deleted_id = gtk_signal_connect(GTK_OBJECT(model), "model_rows_deleted",
- GTK_SIGNAL_FUNC(model_rows_deleted), etsm);
- }
-}
-
-inline static void
-drop_model(ETableSelectionModel *etsm)
-{
- if (etsm->model) {
- gtk_signal_disconnect(GTK_OBJECT(etsm->model),
- etsm->model_pre_change_id);
- gtk_signal_disconnect(GTK_OBJECT(etsm->model),
- etsm->model_changed_id);
- gtk_signal_disconnect(GTK_OBJECT(etsm->model),
- etsm->model_row_changed_id);
- gtk_signal_disconnect(GTK_OBJECT(etsm->model),
- etsm->model_cell_changed_id);
- gtk_signal_disconnect(GTK_OBJECT(etsm->model),
- etsm->model_rows_inserted_id);
- gtk_signal_disconnect(GTK_OBJECT(etsm->model),
- etsm->model_rows_deleted_id);
-
- gtk_object_unref(GTK_OBJECT(etsm->model));
- }
- etsm->model = NULL;
-}
-
-static void
-etsm_destroy (GtkObject *object)
-{
- ETableSelectionModel *etsm;
-
- etsm = E_TABLE_SELECTION_MODEL (object);
-
- if (etsm->model_changed_idle_id) {
- g_source_remove(etsm->model_changed_idle_id);
- }
- drop_model(etsm);
- free_hash(etsm);
-
- if (GTK_OBJECT_CLASS(parent_class)->destroy)
- GTK_OBJECT_CLASS(parent_class)->destroy (object);
-}
-
-static void
-etsm_get_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- ETableSelectionModel *etsm = E_TABLE_SELECTION_MODEL (o);
-
- switch (arg_id){
- case ARG_MODEL:
- GTK_VALUE_OBJECT (*arg) = GTK_OBJECT(etsm->model);
- break;
- }
-}
-
-static void
-etsm_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- ETableSelectionModel *etsm = E_TABLE_SELECTION_MODEL (o);
-
- switch (arg_id){
- case ARG_MODEL:
- drop_model(etsm);
- add_model(etsm, GTK_VALUE_OBJECT (*arg) ? E_TABLE_MODEL(GTK_VALUE_OBJECT (*arg)) : NULL);
- break;
- }
-}
-
-static void
-e_table_selection_model_init (ETableSelectionModel *selection)
-{
- selection->model = NULL;
- selection->hash = NULL;
- selection->cursor_id = NULL;
-
- selection->model_changed_idle_id = 0;
-}
-
-static void
-e_table_selection_model_class_init (ETableSelectionModelClass *klass)
-{
- GtkObjectClass *object_class;
- ESelectionModelArrayClass *esma_class;
-
- parent_class = gtk_type_class (PARENT_TYPE);
-
- object_class = GTK_OBJECT_CLASS(klass);
- esma_class = E_SELECTION_MODEL_ARRAY_CLASS(klass);
-
- object_class->destroy = etsm_destroy;
- object_class->get_arg = etsm_get_arg;
- object_class->set_arg = etsm_set_arg;
-
- esma_class->get_row_count = etsm_get_row_count;
-
- gtk_object_add_arg_type ("ETableSelectionModel::model", GTK_TYPE_OBJECT,
- GTK_ARG_READWRITE, ARG_MODEL);
-}
-
-E_MAKE_TYPE(e_table_selection_model, "ETableSelectionModel", ETableSelectionModel,
- e_table_selection_model_class_init, e_table_selection_model_init, PARENT_TYPE);
-
-/**
- * e_table_selection_model_new
- *
- * This routine creates a new #ETableSelectionModel.
- *
- * Returns: The new #ETableSelectionModel.
- */
-ETableSelectionModel *
-e_table_selection_model_new (void)
-{
- return gtk_type_new (e_table_selection_model_get_type ());
-}
-
-static gint
-etsm_get_row_count (ESelectionModelArray *esma)
-{
- ETableSelectionModel *etsm = E_TABLE_SELECTION_MODEL(esma);
-
- return e_table_model_row_count (etsm->model);
-}
diff --git a/widgets/table/e-table-selection-model.h b/widgets/table/e-table-selection-model.h
deleted file mode 100644
index 94eaf2bb94..0000000000
--- a/widgets/table/e-table-selection-model.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_SELECTION_MODEL_H_
-#define _E_TABLE_SELECTION_MODEL_H_
-
-#include <gtk/gtkobject.h>
-#include <gal/widgets/e-selection-model-array.h>
-#include <gal/e-table/e-table-model.h>
-#include <gal/e-table/e-table-defines.h>
-#include <gal/e-table/e-table-sorter.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define E_TABLE_SELECTION_MODEL_TYPE (e_table_selection_model_get_type ())
-#define E_TABLE_SELECTION_MODEL(o) (GTK_CHECK_CAST ((o), E_TABLE_SELECTION_MODEL_TYPE, ETableSelectionModel))
-#define E_TABLE_SELECTION_MODEL_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_SELECTION_MODEL_TYPE, ETableSelectionModelClass))
-#define E_IS_TABLE_SELECTION_MODEL(o) (GTK_CHECK_TYPE ((o), E_TABLE_SELECTION_MODEL_TYPE))
-#define E_IS_TABLE_SELECTION_MODEL_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_SELECTION_MODEL_TYPE))
-
-typedef struct {
- ESelectionModelArray base;
-
- ETableModel *model;
-
- guint model_pre_change_id;
- guint model_changed_id;
- guint model_row_changed_id;
- guint model_cell_changed_id;
- guint model_rows_inserted_id;
- guint model_rows_deleted_id;
-
- guint model_changed_idle_id;
-
- guint frozen : 1;
- guint selection_model_changed : 1;
- guint group_info_changed : 1;
-
- GHashTable *hash;
- gchar *cursor_id;
-} ETableSelectionModel;
-
-typedef struct {
- ESelectionModelArrayClass parent_class;
-} ETableSelectionModelClass;
-
-GtkType e_table_selection_model_get_type (void);
-ETableSelectionModel *e_table_selection_model_new (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* _E_TABLE_SELECTION_MODEL_H_ */
diff --git a/widgets/table/e-table-simple.c b/widgets/table/e-table-simple.c
deleted file mode 100644
index 82d29bd6c7..0000000000
--- a/widgets/table/e-table-simple.c
+++ /dev/null
@@ -1,269 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-table-model.c: a simple table model implementation that uses function
- * pointers to simplify the creation of new, exotic and colorful tables in
- * no time.
- *
- * Author:
- * Miguel de Icaza (miguel@gnu.org)
- *
- * (C) 1999, 2000 Ximian, Inc.
- */
-
-#include <config.h>
-#include "e-table-simple.h"
-
-enum {
- ARG_0,
- ARG_APPEND_ROW,
-};
-
-#define PARENT_TYPE e_table_model_get_type ()
-
-static int
-simple_column_count (ETableModel *etm)
-{
- ETableSimple *simple = E_TABLE_SIMPLE(etm);
-
- if (simple->col_count)
- return simple->col_count (etm, simple->data);
- else
- return 0;
-}
-
-static int
-simple_row_count (ETableModel *etm)
-{
- ETableSimple *simple = E_TABLE_SIMPLE(etm);
-
- if (simple->row_count)
- return simple->row_count (etm, simple->data);
- else
- return 0;
-}
-
-static void *
-simple_value_at (ETableModel *etm, int col, int row)
-{
- ETableSimple *simple = E_TABLE_SIMPLE(etm);
-
- if (simple->value_at)
- return simple->value_at (etm, col, row, simple->data);
- else
- return NULL;
-}
-
-static void
-simple_set_value_at (ETableModel *etm, int col, int row, const void *val)
-{
- ETableSimple *simple = E_TABLE_SIMPLE(etm);
-
- if (simple->set_value_at)
- simple->set_value_at (etm, col, row, val, simple->data);
-}
-
-static gboolean
-simple_is_cell_editable (ETableModel *etm, int col, int row)
-{
- ETableSimple *simple = E_TABLE_SIMPLE(etm);
-
- if (simple->is_cell_editable)
- return simple->is_cell_editable (etm, col, row, simple->data);
- else
- return FALSE;
-}
-
-/* The default for simple_duplicate_value is to return the raw value. */
-static void *
-simple_duplicate_value (ETableModel *etm, int col, const void *value)
-{
- ETableSimple *simple = E_TABLE_SIMPLE(etm);
-
- if (simple->duplicate_value)
- return simple->duplicate_value (etm, col, value, simple->data);
- else
- return (void *)value;
-}
-
-static void
-simple_free_value (ETableModel *etm, int col, void *value)
-{
- ETableSimple *simple = E_TABLE_SIMPLE(etm);
-
- if (simple->free_value)
- simple->free_value (etm, col, value, simple->data);
-}
-
-static void *
-simple_initialize_value (ETableModel *etm, int col)
-{
- ETableSimple *simple = E_TABLE_SIMPLE(etm);
-
- if (simple->initialize_value)
- return simple->initialize_value (etm, col, simple->data);
- else
- return NULL;
-}
-
-static gboolean
-simple_value_is_empty (ETableModel *etm, int col, const void *value)
-{
- ETableSimple *simple = E_TABLE_SIMPLE(etm);
-
- if (simple->value_is_empty)
- return simple->value_is_empty (etm, col, value, simple->data);
- else
- return FALSE;
-}
-
-static char *
-simple_value_to_string (ETableModel *etm, int col, const void *value)
-{
- ETableSimple *simple = E_TABLE_SIMPLE(etm);
-
- if (simple->value_to_string)
- return simple->value_to_string (etm, col, value, simple->data);
- else
- return g_strdup ("");
-}
-
-static void
-simple_append_row (ETableModel *etm, ETableModel *source, int row)
-{
- ETableSimple *simple = E_TABLE_SIMPLE(etm);
-
- if (simple->append_row)
- simple->append_row (etm, source, row, simple->data);
-}
-
-static void
-simple_get_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- ETableSimple *simple = E_TABLE_SIMPLE (o);
-
- switch (arg_id){
- case ARG_APPEND_ROW:
- GTK_VALUE_POINTER(*arg) = simple->append_row;
- break;
- }
-}
-
-static void
-simple_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- ETableSimple *simple = E_TABLE_SIMPLE (o);
-
- switch (arg_id){
- case ARG_APPEND_ROW:
- simple->append_row = GTK_VALUE_POINTER(*arg);
- break;
- default:
- arg->type = GTK_TYPE_INVALID;
- }
-}
-
-static void
-e_table_simple_class_init (GtkObjectClass *object_class)
-{
- ETableModelClass *model_class = (ETableModelClass *) object_class;
-
- object_class->set_arg = simple_set_arg;
- object_class->get_arg = simple_get_arg;
-
- model_class->column_count = simple_column_count;
- model_class->row_count = simple_row_count;
- model_class->value_at = simple_value_at;
- model_class->set_value_at = simple_set_value_at;
- model_class->is_cell_editable = simple_is_cell_editable;
- model_class->duplicate_value = simple_duplicate_value;
- model_class->free_value = simple_free_value;
- model_class->initialize_value = simple_initialize_value;
- model_class->value_is_empty = simple_value_is_empty;
- model_class->value_to_string = simple_value_to_string;
- model_class->append_row = simple_append_row;
-
- gtk_object_add_arg_type ("ETableSimple::append_row", GTK_TYPE_POINTER,
- GTK_ARG_READWRITE, ARG_APPEND_ROW);
-}
-
-GtkType
-e_table_simple_get_type (void)
-{
- static GtkType type = 0;
-
- if (!type){
- GtkTypeInfo info = {
- "ETableSimple",
- sizeof (ETableSimple),
- sizeof (ETableSimpleClass),
- (GtkClassInitFunc) e_table_simple_class_init,
- (GtkObjectInitFunc) NULL,
- NULL, /* reserved 1 */
- NULL, /* reserved 2 */
- (GtkClassInitFunc) NULL
- };
-
- type = gtk_type_unique (PARENT_TYPE, &info);
- }
-
- return type;
-}
-
-/**
- * e_table_simple_new:
- * @col_count:
- * @row_count:
- * @value_at:
- * @set_value_at:
- * @is_cell_editable:
- * @duplicate_value:
- * @free_value:
- * @initialize_value:
- * @value_is_empty:
- * @value_to_string:
- * @data: closure pointer.
- *
- * This initializes a new ETableSimpleModel object. ETableSimpleModel is
- * an implementaiton of the abstract class ETableModel. The ETableSimpleModel
- * is designed to allow people to easily create ETableModels without having
- * to create a new GtkType derived from ETableModel every time they need one.
- *
- * Instead, ETableSimpleModel uses a setup based in callback functions, every
- * callback function signature mimics the signature of each ETableModel method
- * and passes the extra @data pointer to each one of the method to provide them
- * with any context they might want to use.
- *
- * Returns: An ETableSimpleModel object (which is also an ETableModel
- * object).
- */
-ETableModel *
-e_table_simple_new (ETableSimpleColumnCountFn col_count,
- ETableSimpleRowCountFn row_count,
- ETableSimpleValueAtFn value_at,
- ETableSimpleSetValueAtFn set_value_at,
- ETableSimpleIsCellEditableFn is_cell_editable,
- ETableSimpleDuplicateValueFn duplicate_value,
- ETableSimpleFreeValueFn free_value,
- ETableSimpleInitializeValueFn initialize_value,
- ETableSimpleValueIsEmptyFn value_is_empty,
- ETableSimpleValueToStringFn value_to_string,
- void *data)
-{
- ETableSimple *et;
-
- et = gtk_type_new (e_table_simple_get_type ());
-
- et->col_count = col_count;
- et->row_count = row_count;
- et->value_at = value_at;
- et->set_value_at = set_value_at;
- et->is_cell_editable = is_cell_editable;
- et->duplicate_value = duplicate_value;
- et->free_value = free_value;
- et->initialize_value = initialize_value;
- et->value_is_empty = value_is_empty;
- et->value_to_string = value_to_string;
- et->data = data;
-
- return (ETableModel *) et;
- }
diff --git a/widgets/table/e-table-simple.h b/widgets/table/e-table-simple.h
deleted file mode 100644
index f0f949afc0..0000000000
--- a/widgets/table/e-table-simple.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_SIMPLE_H_
-#define _E_TABLE_SIMPLE_H_
-
-#include <gal/e-table/e-table-model.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define E_TABLE_SIMPLE_TYPE (e_table_simple_get_type ())
-#define E_TABLE_SIMPLE(o) (GTK_CHECK_CAST ((o), E_TABLE_SIMPLE_TYPE, ETableSimple))
-#define E_TABLE_SIMPLE_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_SIMPLE_TYPE, ETableSimpleClass))
-#define E_IS_TABLE_SIMPLE(o) (GTK_CHECK_TYPE ((o), E_TABLE_SIMPLE_TYPE))
-#define E_IS_TABLE_SIMPLE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_SIMPLE_TYPE))
-
-typedef int (*ETableSimpleColumnCountFn) (ETableModel *etm, void *data);
-typedef int (*ETableSimpleRowCountFn) (ETableModel *etm, void *data);
-typedef void (*ETableSimpleAppendRowFn) (ETableModel *etm, ETableModel *model, int row, void *data);
-
-typedef void *(*ETableSimpleValueAtFn) (ETableModel *etm, int col, int row, void *data);
-typedef void (*ETableSimpleSetValueAtFn) (ETableModel *etm, int col, int row, const void *val, void *data);
-typedef gboolean (*ETableSimpleIsCellEditableFn) (ETableModel *etm, int col, int row, void *data);
-
-typedef void *(*ETableSimpleDuplicateValueFn) (ETableModel *etm, int col, const void *val, void *data);
-typedef void (*ETableSimpleFreeValueFn) (ETableModel *etm, int col, void *val, void *data);
-typedef void *(*ETableSimpleInitializeValueFn) (ETableModel *etm, int col, void *data);
-typedef gboolean (*ETableSimpleValueIsEmptyFn) (ETableModel *etm, int col, const void *val, void *data);
-typedef char *(*ETableSimpleValueToStringFn) (ETableModel *etm, int col, const void *val, void *data);
-
-typedef struct {
- ETableModel parent;
-
- ETableSimpleColumnCountFn col_count;
- ETableSimpleRowCountFn row_count;
- ETableSimpleAppendRowFn append_row;
-
- ETableSimpleValueAtFn value_at;
- ETableSimpleSetValueAtFn set_value_at;
- ETableSimpleIsCellEditableFn is_cell_editable;
-
- ETableSimpleDuplicateValueFn duplicate_value;
- ETableSimpleFreeValueFn free_value;
- ETableSimpleInitializeValueFn initialize_value;
- ETableSimpleValueIsEmptyFn value_is_empty;
- ETableSimpleValueToStringFn value_to_string;
- void *data;
-} ETableSimple;
-
-typedef struct {
- ETableModelClass parent_class;
-} ETableSimpleClass;
-
-GtkType e_table_simple_get_type (void);
-
-ETableModel *e_table_simple_new (ETableSimpleColumnCountFn col_count,
- ETableSimpleRowCountFn row_count,
-
- ETableSimpleValueAtFn value_at,
- ETableSimpleSetValueAtFn set_value_at,
- ETableSimpleIsCellEditableFn is_cell_editable,
-
- ETableSimpleDuplicateValueFn duplicate_value,
- ETableSimpleFreeValueFn free_value,
- ETableSimpleInitializeValueFn initialize_value,
- ETableSimpleValueIsEmptyFn value_is_empty,
- ETableSimpleValueToStringFn value_to_string,
- void *data);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_TABLE_SIMPLE_H_ */
-
diff --git a/widgets/table/e-table-size-test.c b/widgets/table/e-table-size-test.c
deleted file mode 100644
index acb6e4296d..0000000000
--- a/widgets/table/e-table-size-test.c
+++ /dev/null
@@ -1,287 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* This code is GPL. */
-#include <stdio.h>
-#include <string.h>
-#include <gnome.h>
-#include <gdk-pixbuf/gdk-pixbuf.h>
-#include "gal/e-util/e-cursors.h"
-#include "e-table-simple.h"
-#include "e-table-header.h"
-#include "e-table-header-item.h"
-#include "e-table-item.h"
-#include "e-cell-text.h"
-#include "e-cell-checkbox.h"
-#include "e-table.h"
-
-#include "table-test.h"
-
-/*
- * One way in which we make it simpler to build an ETableModel is through
- * the ETableSimple class. Instead of creating your own ETableModel
- * class, you simply create a new object of the ETableSimple class. You
- * give it a bunch of functions that act as callbacks.
- *
- * You also get to pass a void * to ETableSimple and it gets passed to
- * your callbacks. This would be for having multiple models of the same
- * type. This is just an example though, so we statically define all the
- * data and ignore the void *data parameter.
- *
- * In our example we will be creating a table model with 6 columns and 10
- * rows. This corresponds to having 6 different types of information and
- * 10 different sets of data in our database.
- *
- * The headers will be hard coded, as will be the example data.
- *
- */
-
-/*
- * There are two different meanings to the word "column". The first is
- * the model column. A model column corresponds to a specific type of
- * data. This is very much like the usage in a database table where a
- * column is a field in the database.
- *
- * The second type of column is a view column. A view column
- * corresponds to a visually displayed column. Each view column
- * corresponds to a specific model column, though a model column may
- * have any number of view columns associated with it, from zero to
- * greater than one.
- *
- * Also, a view column doesn't necessarily depend on only one model
- * column. In some cases, the view column renderer can be given a
- * reference to another column to get extra information about its
- * display.
-*/
-
-#define ROWS 5000
-#define COLS 4
-
-#define IMPORTANCE_COLUMN 4
-#define COLOR_COLUMN 5
-
-/*
- * Here we define the initial layout of the table. This is an xml
- * format that allows you to change the initial ordering of the
- * columns or to do sorting or grouping initially. This specification
- * shows all 5 columns, but moves the importance column nearer to the
- * front. It also sorts by the "Full Name" column (ascending.)
- * Sorting and grouping take the model column as their arguments
- * (sorting is specified by the "column" argument to the leaf elemnt.
- */
-
-#define INITIAL_SPEC "<ETableSpecification> \
- <columns-shown> \
- <column> 0 </column> \
- <column> 4 </column> \
- <column> 1 </column> \
- <column> 2 </column> \
- <column> 3 </column> \
- </columns-shown> \
- <grouping> <leaf column=\"1\" ascending=\"true\"/> </grouping> \
-</ETableSpecification>"
-
-char *headers [COLS] = {
- "Email",
- "Full Name",
- "Address",
- "Phone"
-};
-
-/*
- * Virtual Column list:
- * 0 Email
- * 1 Full Name
- * 2 Address
- * 3 Phone
- */
-
-/*
- * ETableSimple callbacks
- * These are the callbacks that define the behavior of our custom model.
- */
-
-/*
- * Since our model is a constant size, we can just return its size in
- * the column and row count fields.
- */
-
-/* This function returns the number of columns in our ETableModel. */
-static int
-my_col_count (ETableModel *etc, void *data)
-{
- return COLS;
-}
-
-/* This function returns the number of rows in our ETableModel. */
-static int
-my_row_count (ETableModel *etc, void *data)
-{
- return ROWS;
-}
-
-/* This function returns the value at a particular point in our ETableModel. */
-static void *
-my_value_at (ETableModel *etc, int col, int row, void *data)
-{
- static guchar t[] = {'A', 0xc3, 0x84, 0xc3, 0x95, 0xc3, 0x94, 0xc3, 0xb5, 0x00};
-
-#if 0
- if (col == 1) return "toshok@ximian.com";
-#else
- if (col == 1) return t;
-#endif
- else if (col == 2) return "Chris Toshok";
- else if (col == 3) return "43 Vicksburg, SF";
- else if (col == 4) return "415-867-5309";
- else return NULL;
-}
-
-/* This function sets the value at a particular point in our ETableModel. */
-static void
-my_set_value_at (ETableModel *etc, int col, int row, const void *val, void *data)
-{
-}
-
-/* This function returns whether a particular cell is editable. */
-static gboolean
-my_is_cell_editable (ETableModel *etc, int col, int row, void *data)
-{
- return FALSE;
-}
-
-/* This function duplicates the value passed to it. */
-static void *
-my_duplicate_value (ETableModel *etc, int col, const void *value, void *data)
-{
- return g_strdup (value);
-}
-
-/* This function frees the value passed to it. */
-static void
-my_free_value (ETableModel *etc, int col, void *value, void *data)
-{
- g_free (value);
-}
-
-/* This function creates an empty value. */
-static void *
-my_initialize_value (ETableModel *etc, int col, void *data)
-{
- return g_strdup ("");
-}
-
-/* This function reports if a value is empty. */
-static gboolean
-my_value_is_empty (ETableModel *etc, int col, const void *value, void *data)
-{
- return !(value && *(char *)value);
-}
-
-/* This function reports if a value is empty. */
-static char *
-my_value_to_string (ETableModel *etc, int col, const void *value, void *data)
-{
- return g_strdup(value);
-}
-
-/* We create a window containing our new table. */
-static void
-create_table (void)
-{
- GtkWidget *e_table, *window, *frame;
- ECell *cell_left_just;
- ETableHeader *e_table_header;
- ETableModel *e_table_model = NULL;
- int i;
-
- /* Next we create our model. This uses the functions we defined
- earlier. */
- e_table_model = e_table_simple_new (
- my_col_count, my_row_count, my_value_at,
- my_set_value_at, my_is_cell_editable,
- my_duplicate_value, my_free_value,
- my_initialize_value, my_value_is_empty,
- my_value_to_string,
- NULL);
- /*
- * Next we create a header. The ETableHeader is used in two
- * different way. The first is the full_header. This is the
- * list of possible columns in the view. The second use is
- * completely internal. Many of the ETableHeader functions are
- * for that purpose. The only functions we really need are
- * e_table_header_new and e_table_header_add_col.
- *
- * First we create the header.
- */
- e_table_header = e_table_header_new ();
-
- /*
- * Next we have to build renderers for all of the columns.
- * Since all our columns are text columns, we can simply use
- * the same renderer over and over again. If we had different
- * types of columns, we could use a different renderer for
- * each column.
- */
- cell_left_just = e_cell_text_new (e_table_model, NULL, GTK_JUSTIFY_LEFT);
-
- /*
- * Next we create a column object for each view column and add
- * them to the header. We don't create a column object for
- * the importance column since it will not be shown.
- */
- for (i = 0; i < COLS; i++) {
- /* Create the column. */
- ETableCol *ecol = e_table_col_new (
- i, headers [i],
- 1.0, 20, cell_left_just,
- g_str_compare, TRUE);
- /* Add it to the header. */
- e_table_header_add_column (e_table_header, ecol, i);
- }
-
- /*
- * Here we create a window for our new table. This window
- * will get shown and the person will be able to test their
- * item.
- */
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-
- /* This frame is simply to get a bevel around our table. */
- frame = gtk_frame_new (NULL);
-
- /*
- * Here we create the table. We give it the three pieces of
- * the table we've created, the header, the model, and the
- * initial layout. It does the rest.
- */
- e_table = e_table_new (e_table_header, e_table_model, INITIAL_SPEC);
-
- /* Build the gtk widget hierarchy. */
- gtk_container_add (GTK_CONTAINER (frame), e_table);
- gtk_container_add (GTK_CONTAINER (window), frame);
-
- /* Size the initial window. */
- gtk_widget_set_usize (window, 300, 200);
-
- /* Show it all. */
- gtk_widget_show_all (window);
-}
-
-/* This is the main function which just initializes gnome and call our create_table function */
-
-int
-main (int argc, char *argv [])
-{
- gnome_init ("TableExample", "TableExample", argc, argv);
- e_cursors_init ();
-
- gtk_widget_push_visual (gdk_rgb_get_visual ());
- gtk_widget_push_colormap (gdk_rgb_get_cmap ());
-
- create_table ();
-
- gtk_main ();
-
- e_cursors_shutdown ();
- return 0;
-}
-
diff --git a/widgets/table/e-table-sort-info.c b/widgets/table/e-table-sort-info.c
deleted file mode 100644
index bc4cf16f39..0000000000
--- a/widgets/table/e-table-sort-info.c
+++ /dev/null
@@ -1,452 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-table-sort-info.c: a Table Model
- *
- * Author:
- * Miguel de Icaza (miguel@gnu.org)
- * Chris Lahey (clahey@ximian.com)
- *
- * (C) 1999, 2000, 2001 Ximian, Inc.
- */
-#include <config.h>
-
-#include "e-table-sort-info.h"
-
-#include <gtk/gtksignal.h>
-#include "gal/util/e-util.h"
-#include "gal/util/e-xml-utils.h"
-#include <string.h>
-
-#define ETM_CLASS(e) ((ETableSortInfoClass *)((GtkObject *)e)->klass)
-
-#define PARENT_TYPE gtk_object_get_type ()
-
-
-static GtkObjectClass *e_table_sort_info_parent_class;
-
-enum {
- SORT_INFO_CHANGED,
- GROUP_INFO_CHANGED,
- LAST_SIGNAL
-};
-
-static guint e_table_sort_info_signals [LAST_SIGNAL] = { 0, };
-
-static void
-etsi_destroy (GtkObject *object)
-{
- ETableSortInfo *etsi;
-
- etsi = E_TABLE_SORT_INFO (object);
-
- if (etsi->groupings)
- g_free(etsi->groupings);
- if (etsi->sortings)
- g_free(etsi->sortings);
-}
-
-static void
-e_table_sort_info_init (ETableSortInfo *info)
-{
- GTK_OBJECT_UNSET_FLAGS (GTK_OBJECT (info), GTK_FLOATING);
-
- info->group_count = 0;
- info->groupings = NULL;
- info->sort_count = 0;
- info->sortings = NULL;
- info->frozen = 0;
- info->sort_info_changed = 0;
- info->group_info_changed = 0;
-}
-
-static void
-e_table_sort_info_class_init (ETableSortInfoClass *klass)
-{
- GtkObjectClass *object_class;
-
- e_table_sort_info_parent_class = gtk_type_class (gtk_object_get_type ());
-
- object_class = GTK_OBJECT_CLASS(klass);
-
- object_class->destroy = etsi_destroy;
-
- e_table_sort_info_signals [SORT_INFO_CHANGED] =
- gtk_signal_new ("sort_info_changed",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableSortInfoClass, sort_info_changed),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- e_table_sort_info_signals [GROUP_INFO_CHANGED] =
- gtk_signal_new ("group_info_changed",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableSortInfoClass, group_info_changed),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- klass->sort_info_changed = NULL;
- klass->group_info_changed = NULL;
-
- gtk_object_class_add_signals (object_class, e_table_sort_info_signals, LAST_SIGNAL);
-}
-
-E_MAKE_TYPE(e_table_sort_info, "ETableSortInfo", ETableSortInfo,
- e_table_sort_info_class_init, e_table_sort_info_init, PARENT_TYPE);
-
-static void
-e_table_sort_info_sort_info_changed (ETableSortInfo *info)
-{
- g_return_if_fail (info != NULL);
- g_return_if_fail (E_IS_TABLE_SORT_INFO (info));
-
- if (info->frozen) {
- info->sort_info_changed = 1;
- } else {
- gtk_signal_emit (GTK_OBJECT (info),
- e_table_sort_info_signals [SORT_INFO_CHANGED]);
- }
-}
-
-static void
-e_table_sort_info_group_info_changed (ETableSortInfo *info)
-{
- g_return_if_fail (info != NULL);
- g_return_if_fail (E_IS_TABLE_SORT_INFO (info));
-
- if (info->frozen) {
- info->group_info_changed = 1;
- } else {
- gtk_signal_emit (GTK_OBJECT (info),
- e_table_sort_info_signals [GROUP_INFO_CHANGED]);
- }
-}
-
-/**
- * e_table_sort_info_freeze:
- * @info: The ETableSortInfo object
- *
- * This functions allows the programmer to cluster various changes to the
- * ETableSortInfo (grouping and sorting) without having the object emit
- * "group_info_changed" or "sort_info_changed" signals on each change.
- *
- * To thaw, invoke the e_table_sort_info_thaw() function, which will
- * trigger any signals that might have been queued.
- */
-void
-e_table_sort_info_freeze (ETableSortInfo *info)
-{
- info->frozen++;
-}
-
-/**
- * e_table_sort_info_thaw:
- * @info: The ETableSortInfo object
- *
- * This functions allows the programmer to cluster various changes to the
- * ETableSortInfo (grouping and sorting) without having the object emit
- * "group_info_changed" or "sort_info_changed" signals on each change.
- *
- * This function will flush any pending signals that might be emited by
- * this object.
- */
-void
-e_table_sort_info_thaw (ETableSortInfo *info)
-{
- info->frozen--;
- if (info->frozen != 0)
- return;
-
- if (info->sort_info_changed) {
- info->sort_info_changed = 0;
- e_table_sort_info_sort_info_changed(info);
- }
- if (info->group_info_changed) {
- info->group_info_changed = 0;
- e_table_sort_info_group_info_changed(info);
- }
-}
-
-/**
- * e_table_sort_info_grouping_get_count:
- * @info: The ETableSortInfo object
- *
- * Returns: the number of grouping criteria in the object.
- */
-guint
-e_table_sort_info_grouping_get_count (ETableSortInfo *info)
-{
- return info->group_count;
-}
-
-static void
-e_table_sort_info_grouping_real_truncate (ETableSortInfo *info, int length)
-{
- if (length < info->group_count) {
- info->group_count = length;
- }
- if (length > info->group_count) {
- info->groupings = g_realloc(info->groupings, length * sizeof(ETableSortColumn));
- info->group_count = length;
- }
-}
-
-/**
- * e_table_sort_info_grouping_truncate:
- * @info: The ETableSortInfo object
- * @lenght: position where the truncation happens.
- *
- * This routine can be used to reduce or grow the number of grouping
- * criteria in the object.
- */
-void
-e_table_sort_info_grouping_truncate (ETableSortInfo *info, int length)
-{
- e_table_sort_info_grouping_real_truncate(info, length);
- e_table_sort_info_group_info_changed(info);
-}
-
-/**
- * e_table_sort_info_grouping_get_nth:
- * @info: The ETableSortInfo object
- * @n: Item information to fetch.
- *
- * Returns: the description of the @n-th grouping criteria in the @info object.
- */
-ETableSortColumn
-e_table_sort_info_grouping_get_nth (ETableSortInfo *info, int n)
-{
- if (n < info->group_count) {
- return info->groupings[n];
- } else {
- ETableSortColumn fake = {0, 0};
- return fake;
- }
-}
-
-/**
- * e_table_sort_info_grouping_set_nth:
- * @info: The ETableSortInfo object
- * @n: Item information to fetch.
- * @column: new values for the grouping
- *
- * Sets the grouping criteria for index @n to be given by @column (a column number and
- * whether it is ascending or descending).
- */
-void
-e_table_sort_info_grouping_set_nth (ETableSortInfo *info, int n, ETableSortColumn column)
-{
- if (n >= info->group_count) {
- e_table_sort_info_grouping_real_truncate(info, n + 1);
- }
- info->groupings[n] = column;
- e_table_sort_info_group_info_changed(info);
-}
-
-
-/**
- * e_table_sort_info_get_count:
- * @info: The ETableSortInfo object
- *
- * Returns: the number of sorting criteria in the object.
- */
-guint
-e_table_sort_info_sorting_get_count (ETableSortInfo *info)
-{
- return info->sort_count;
-}
-
-static void
-e_table_sort_info_sorting_real_truncate (ETableSortInfo *info, int length)
-{
- if (length < info->sort_count) {
- info->sort_count = length;
- }
- if (length > info->sort_count) {
- info->sortings = g_realloc(info->sortings, length * sizeof(ETableSortColumn));
- info->sort_count = length;
- }
-}
-
-/**
- * e_table_sort_info_sorting_truncate:
- * @info: The ETableSortInfo object
- * @lenght: position where the truncation happens.
- *
- * This routine can be used to reduce or grow the number of sort
- * criteria in the object.
- */
-void
-e_table_sort_info_sorting_truncate (ETableSortInfo *info, int length)
-{
- e_table_sort_info_sorting_real_truncate (info, length);
- e_table_sort_info_sort_info_changed(info);
-}
-
-/**
- * e_table_sort_info_sorting_get_nth:
- * @info: The ETableSortInfo object
- * @n: Item information to fetch.
- *
- * Returns: the description of the @n-th grouping criteria in the @info object.
- */
-ETableSortColumn
-e_table_sort_info_sorting_get_nth (ETableSortInfo *info, int n)
-{
- if (n < info->sort_count) {
- return info->sortings[n];
- } else {
- ETableSortColumn fake = {0, 0};
- return fake;
- }
-}
-
-/**
- * e_table_sort_info_sorting_get_nth:
- * @info: The ETableSortInfo object
- * @n: Item information to fetch.
- * @column: new values for the sorting
- *
- * Sets the sorting criteria for index @n to be given by @column (a
- * column number and whether it is ascending or descending).
- */
-void
-e_table_sort_info_sorting_set_nth (ETableSortInfo *info, int n, ETableSortColumn column)
-{
- if (n >= info->sort_count) {
- e_table_sort_info_sorting_real_truncate(info, n + 1);
- }
- info->sortings[n] = column;
- e_table_sort_info_sort_info_changed(info);
-}
-
-/**
- * e_table_sort_info_new:
- *
- * This creates a new e_table_sort_info object that contains no
- * grouping and no sorting defined as of yet. This object is used
- * to keep track of multi-level sorting and multi-level grouping of
- * the ETable.
- *
- * Returns: A new %ETableSortInfo object
- */
-ETableSortInfo *
-e_table_sort_info_new (void)
-{
- return gtk_type_new (e_table_sort_info_get_type ());
-}
-
-/**
- * e_table_sort_info_load_from_node:
- * @info: The ETableSortInfo object
- * @node: pointer to the xmlNode that describes the sorting and grouping information
- * @state_version:
- *
- * This loads the state for the %ETableSortInfo object @info from the
- * xml node @node.
- */
-void
-e_table_sort_info_load_from_node (ETableSortInfo *info,
- xmlNode *node,
- gdouble state_version)
-{
- int i;
- xmlNode *grouping;
-
- if (state_version <= 0.05) {
- i = 0;
- for (grouping = node->childs; grouping && !strcmp (grouping->name, "group"); grouping = grouping->childs) {
- ETableSortColumn column;
- column.column = e_xml_get_integer_prop_by_name (grouping, "column");
- column.ascending = e_xml_get_bool_prop_by_name (grouping, "ascending");
- e_table_sort_info_grouping_set_nth(info, i++, column);
- }
- i = 0;
- for (; grouping && !strcmp (grouping->name, "leaf"); grouping = grouping->childs) {
- ETableSortColumn column;
- column.column = e_xml_get_integer_prop_by_name (grouping, "column");
- column.ascending = e_xml_get_bool_prop_by_name (grouping, "ascending");
- e_table_sort_info_sorting_set_nth(info, i++, column);
- }
- } else {
- i = 0;
- for (grouping = node->childs; grouping && !strcmp (grouping->name, "group"); grouping = grouping->next) {
- ETableSortColumn column;
- column.column = e_xml_get_integer_prop_by_name (grouping, "column");
- column.ascending = e_xml_get_bool_prop_by_name (grouping, "ascending");
- e_table_sort_info_grouping_set_nth(info, i++, column);
- }
- i = 0;
- for (; grouping && !strcmp (grouping->name, "leaf"); grouping = grouping->next) {
- ETableSortColumn column;
- column.column = e_xml_get_integer_prop_by_name (grouping, "column");
- column.ascending = e_xml_get_bool_prop_by_name (grouping, "ascending");
- e_table_sort_info_sorting_set_nth(info, i++, column);
- }
- }
- gtk_signal_emit (GTK_OBJECT (info),
- e_table_sort_info_signals [SORT_INFO_CHANGED]);
-
-}
-
-/**
- * e_table_sort_info_save_to_node:
- * @info: The ETableSortInfo object
- * @parent: xmlNode that will be hosting the saved state of the @info object.
- *
- * This function is used
- *
- * Returns: the node that has been appended to @parent as a child containing
- * the sorting and grouping information for this ETableSortInfo object.
- */
-xmlNode *
-e_table_sort_info_save_to_node (ETableSortInfo *info,
- xmlNode *parent)
-{
- xmlNode *grouping;
- xmlNode *node;
- int i;
- const int sort_count = e_table_sort_info_sorting_get_count (info);
- const int group_count = e_table_sort_info_grouping_get_count (info);
-
- grouping = xmlNewChild (parent, NULL, "grouping", NULL);
-
- for (i = 0; i < group_count; i++) {
- ETableSortColumn column = e_table_sort_info_grouping_get_nth(info, i);
- xmlNode *new_node = xmlNewChild(grouping, NULL, "group", NULL);
-
- e_xml_set_integer_prop_by_name (new_node, "column", column.column);
- e_xml_set_bool_prop_by_name (new_node, "ascending", column.ascending);
- node = new_node;
- }
-
- for (i = 0; i < sort_count; i++) {
- ETableSortColumn column = e_table_sort_info_sorting_get_nth(info, i);
- xmlNode *new_node = xmlNewChild(grouping, NULL, "leaf", NULL);
-
- e_xml_set_integer_prop_by_name (new_node, "column", column.column);
- e_xml_set_bool_prop_by_name (new_node, "ascending", column.ascending);
- node = new_node;
- }
-
- return grouping;
-}
-
-ETableSortInfo *
-e_table_sort_info_duplicate (ETableSortInfo *info)
-{
- ETableSortInfo *new_info;
-
- new_info = e_table_sort_info_new();
-
- new_info->group_count = info->group_count;
- new_info->groupings = g_new(ETableSortColumn, new_info->group_count);
- memmove(new_info->groupings, info->groupings, sizeof (ETableSortColumn) * new_info->group_count);
-
- new_info->sort_count = info->sort_count;
- new_info->sortings = g_new(ETableSortColumn, new_info->sort_count);
- memmove(new_info->sortings, info->sortings, sizeof (ETableSortColumn) * new_info->sort_count);
-
- return new_info;
-}
diff --git a/widgets/table/e-table-sort-info.h b/widgets/table/e-table-sort-info.h
deleted file mode 100644
index a2cd4f43a0..0000000000
--- a/widgets/table/e-table-sort-info.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_SORT_INFO_H_
-#define _E_TABLE_SORT_INFO_H_
-
-#include <gtk/gtkobject.h>
-#include <gnome-xml/tree.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define E_TABLE_SORT_INFO_TYPE (e_table_sort_info_get_type ())
-#define E_TABLE_SORT_INFO(o) (GTK_CHECK_CAST ((o), E_TABLE_SORT_INFO_TYPE, ETableSortInfo))
-#define E_TABLE_SORT_INFO_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_SORT_INFO_TYPE, ETableSortInfoClass))
-#define E_IS_TABLE_SORT_INFO(o) (GTK_CHECK_TYPE ((o), E_TABLE_SORT_INFO_TYPE))
-#define E_IS_TABLE_SORT_INFO_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_SORT_INFO_TYPE))
-
-typedef struct _ETableSortColumn ETableSortColumn;
-
-struct _ETableSortColumn {
- guint column : 31;
- guint ascending : 1;
-};
-
-typedef struct {
- GtkObject base;
-
- gint group_count;
- ETableSortColumn *groupings;
- gint sort_count;
- ETableSortColumn *sortings;
-
- guint frozen : 1;
- guint sort_info_changed : 1;
- guint group_info_changed : 1;
-} ETableSortInfo;
-
-typedef struct {
- GtkObjectClass parent_class;
-
- /*
- * Signals
- */
- void (*sort_info_changed) (ETableSortInfo *info);
- void (*group_info_changed) (ETableSortInfo *info);
-} ETableSortInfoClass;
-
-GtkType e_table_sort_info_get_type (void);
-
-void e_table_sort_info_freeze (ETableSortInfo *info);
-void e_table_sort_info_thaw (ETableSortInfo *info);
-
-guint e_table_sort_info_grouping_get_count (ETableSortInfo *info);
-void e_table_sort_info_grouping_truncate (ETableSortInfo *info,
- int length);
-ETableSortColumn e_table_sort_info_grouping_get_nth (ETableSortInfo *info,
- int n);
-void e_table_sort_info_grouping_set_nth (ETableSortInfo *info,
- int n,
- ETableSortColumn column);
-
-guint e_table_sort_info_sorting_get_count (ETableSortInfo *info);
-void e_table_sort_info_sorting_truncate (ETableSortInfo *info,
- int length);
-ETableSortColumn e_table_sort_info_sorting_get_nth (ETableSortInfo *info,
- int n);
-void e_table_sort_info_sorting_set_nth (ETableSortInfo *info,
- int n,
- ETableSortColumn column);
-
-ETableSortInfo *e_table_sort_info_new (void);
-void e_table_sort_info_load_from_node (ETableSortInfo *info,
- xmlNode *node,
- gdouble state_version);
-xmlNode *e_table_sort_info_save_to_node (ETableSortInfo *info,
- xmlNode *parent);
-ETableSortInfo *e_table_sort_info_duplicate (ETableSortInfo *info);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_TABLE_SORT_INFO_H_ */
diff --git a/widgets/table/e-table-sorted-variable.c b/widgets/table/e-table-sorted-variable.c
deleted file mode 100644
index 665d5fd1d7..0000000000
--- a/widgets/table/e-table-sorted-variable.c
+++ /dev/null
@@ -1,210 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * E-table-sorted.c: Implements a table that sorts another table
- *
- * Author:
- * Miguel de Icaza (miguel@gnu.org)
- *
- * (C) 1999 Ximian, Inc.
- */
-#include <config.h>
-#include <stdlib.h>
-#include <gtk/gtksignal.h>
-#include <string.h>
-#include "gal/util/e-util.h"
-#include "e-table-sorted-variable.h"
-#include "e-table-sorting-utils.h"
-
-#define d(x)
-
-#define PARENT_TYPE E_TABLE_SUBSET_VARIABLE_TYPE
-
-#define INCREMENT_AMOUNT 100
-
-/* maximum insertions between an idle event that we will do without scheduling an idle sort */
-#define ETSV_INSERT_MAX (4)
-
-static ETableSubsetVariableClass *etsv_parent_class;
-
-static void etsv_sort_info_changed (ETableSortInfo *info, ETableSortedVariable *etsv);
-static void etsv_sort (ETableSortedVariable *etsv);
-static void etsv_add (ETableSubsetVariable *etssv, gint row);
-static void etsv_add_all (ETableSubsetVariable *etssv);
-
-static void
-etsv_destroy (GtkObject *object)
-{
- ETableSortedVariable *etsv = E_TABLE_SORTED_VARIABLE (object);
-
- gtk_signal_disconnect (GTK_OBJECT (etsv->sort_info),
- etsv->sort_info_changed_id);
-
- if (etsv->sort_idle_id) {
- g_source_remove(etsv->sort_idle_id);
- }
- if (etsv->insert_idle_id) {
- g_source_remove(etsv->insert_idle_id);
- }
-
- if (etsv->sort_info)
- gtk_object_unref(GTK_OBJECT(etsv->sort_info));
- if (etsv->full_header)
- gtk_object_unref(GTK_OBJECT(etsv->full_header));
-
- GTK_OBJECT_CLASS (etsv_parent_class)->destroy (object);
-}
-
-static void
-etsv_class_init (GtkObjectClass *object_class)
-{
- ETableSubsetVariableClass *etssv_class = E_TABLE_SUBSET_VARIABLE_CLASS(object_class);
-
- etsv_parent_class = gtk_type_class (PARENT_TYPE);
-
- object_class->destroy = etsv_destroy;
-
- etssv_class->add = etsv_add;
- etssv_class->add_all = etsv_add_all;
-}
-
-static void
-etsv_init (ETableSortedVariable *etsv)
-{
- etsv->full_header = NULL;
- etsv->sort_info = NULL;
-
- etsv->sort_info_changed_id = 0;
-
- etsv->sort_idle_id = 0;
- etsv->insert_count = 0;
-}
-
-E_MAKE_TYPE(e_table_sorted_variable, "ETableSortedVariable", ETableSortedVariable, etsv_class_init, etsv_init, PARENT_TYPE);
-
-static gboolean
-etsv_sort_idle(ETableSortedVariable *etsv)
-{
- gtk_object_ref(GTK_OBJECT(etsv));
- etsv_sort(etsv);
- etsv->sort_idle_id = 0;
- etsv->insert_count = 0;
- gtk_object_unref(GTK_OBJECT(etsv));
- return FALSE;
-}
-
-static gboolean
-etsv_insert_idle(ETableSortedVariable *etsv)
-{
- etsv->insert_count = 0;
- etsv->insert_idle_id = 0;
- return FALSE;
-}
-
-
-static void
-etsv_add (ETableSubsetVariable *etssv,
- gint row)
-{
- ETableModel *etm = E_TABLE_MODEL(etssv);
- ETableSubset *etss = E_TABLE_SUBSET(etssv);
- ETableSortedVariable *etsv = E_TABLE_SORTED_VARIABLE (etssv);
- int i;
-
- if (etss->n_map + 1 > etssv->n_vals_allocated) {
- etssv->n_vals_allocated += INCREMENT_AMOUNT;
- etss->map_table = g_realloc (etss->map_table, (etssv->n_vals_allocated) * sizeof(int));
- }
- i = etss->n_map;
- if (etsv->sort_idle_id == 0) {
- /* this is to see if we're inserting a lot of things between idle loops.
- If we are, we're busy, its faster to just append and perform a full sort later */
- etsv->insert_count++;
- if (etsv->insert_count > ETSV_INSERT_MAX) {
- /* schedule a sort, and append instead */
- etsv->sort_idle_id = g_idle_add_full(50, (GSourceFunc) etsv_sort_idle, etsv, NULL);
- } else {
- /* make sure we have an idle handler to reset the count every now and then */
- if (etsv->insert_idle_id == 0) {
- etsv->insert_idle_id = g_idle_add_full(40, (GSourceFunc) etsv_insert_idle, etsv, NULL);
- }
- i = e_table_sorting_utils_insert(etss->source, etsv->sort_info, etsv->full_header, etss->map_table, etss->n_map, row);
- memmove(etss->map_table + i + 1, etss->map_table + i, (etss->n_map - i) * sizeof(int));
- }
- }
- etss->map_table[i] = row;
- etss->n_map++;
-
- e_table_model_row_inserted (etm, i);
-}
-
-static void
-etsv_add_all (ETableSubsetVariable *etssv)
-{
- ETableModel *etm = E_TABLE_MODEL(etssv);
- ETableSubset *etss = E_TABLE_SUBSET(etssv);
- ETableSortedVariable *etsv = E_TABLE_SORTED_VARIABLE (etssv);
- int rows;
- int i;
-
- e_table_model_pre_change(etm);
-
- rows = e_table_model_row_count(etss->source);
-
- if (etss->n_map + rows > etssv->n_vals_allocated){
- etssv->n_vals_allocated += MAX(INCREMENT_AMOUNT, rows);
- etss->map_table = g_realloc (etss->map_table, etssv->n_vals_allocated * sizeof(int));
- }
- for (i = 0; i < rows; i++)
- etss->map_table[etss->n_map++] = i;
-
- if (etsv->sort_idle_id == 0) {
- etsv->sort_idle_id = g_idle_add_full(50, (GSourceFunc) etsv_sort_idle, etsv, NULL);
- }
-
- e_table_model_changed (etm);
-}
-
-ETableModel *
-e_table_sorted_variable_new (ETableModel *source, ETableHeader *full_header, ETableSortInfo *sort_info)
-{
- ETableSortedVariable *etsv = gtk_type_new (E_TABLE_SORTED_VARIABLE_TYPE);
- ETableSubsetVariable *etssv = E_TABLE_SUBSET_VARIABLE (etsv);
-
- if (e_table_subset_variable_construct (etssv, source) == NULL){
- gtk_object_unref (GTK_OBJECT (etsv));
- return NULL;
- }
-
- etsv->sort_info = sort_info;
- gtk_object_ref(GTK_OBJECT(etsv->sort_info));
- etsv->full_header = full_header;
- gtk_object_ref(GTK_OBJECT(etsv->full_header));
-
- etsv->sort_info_changed_id = gtk_signal_connect (GTK_OBJECT (sort_info), "sort_info_changed",
- GTK_SIGNAL_FUNC (etsv_sort_info_changed), etsv);
-
- return E_TABLE_MODEL(etsv);
-}
-
-static void
-etsv_sort_info_changed (ETableSortInfo *info, ETableSortedVariable *etsv)
-{
- etsv_sort(etsv);
-}
-
-static void
-etsv_sort(ETableSortedVariable *etsv)
-{
- ETableSubset *etss = E_TABLE_SUBSET(etsv);
- static int reentering = 0;
- if (reentering)
- return;
- reentering = 1;
-
- e_table_model_pre_change(E_TABLE_MODEL(etsv));
-
- e_table_sorting_utils_sort(etss->source, etsv->sort_info, etsv->full_header, etss->map_table, etss->n_map);
-
- e_table_model_changed (E_TABLE_MODEL(etsv));
- reentering = 0;
-}
diff --git a/widgets/table/e-table-sorted-variable.h b/widgets/table/e-table-sorted-variable.h
deleted file mode 100644
index d326e26df8..0000000000
--- a/widgets/table/e-table-sorted-variable.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_SORTED_VARIABLE_H_
-#define _E_TABLE_SORTED_VARIABLE_H_
-
-#include <gtk/gtkobject.h>
-#include <gal/e-table/e-table-model.h>
-#include <gal/e-table/e-table-subset-variable.h>
-#include <gal/e-table/e-table-sort-info.h>
-#include <gal/e-table/e-table-header.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define E_TABLE_SORTED_VARIABLE_TYPE (e_table_sorted_variable_get_type ())
-#define E_TABLE_SORTED_VARIABLE(o) (GTK_CHECK_CAST ((o), E_TABLE_SORTED_VARIABLE_TYPE, ETableSortedVariable))
-#define E_TABLE_SORTED_VARIABLE_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_SORTED_VARIABLE_TYPE, ETableSortedVariableClass))
-#define E_IS_TABLE_SORTED_VARIABLE(o) (GTK_CHECK_TYPE ((o), E_TABLE_SORTED_VARIABLE_TYPE))
-#define E_IS_TABLE_SORTED_VARIABLE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_SORTED_VARIABLE_TYPE))
-
-typedef struct {
- ETableSubsetVariable base;
-
- ETableSortInfo *sort_info;
-
- ETableHeader *full_header;
-
- int sort_info_changed_id;
- int sort_idle_id;
- int insert_idle_id;
- int insert_count;
-
-} ETableSortedVariable;
-
-typedef struct {
- ETableSubsetVariableClass parent_class;
-} ETableSortedVariableClass;
-
-GtkType e_table_sorted_variable_get_type (void);
-ETableModel *e_table_sorted_variable_new (ETableModel *etm, ETableHeader *header, ETableSortInfo *sort_info);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_TABLE_SORTED_VARIABLE_H_ */
diff --git a/widgets/table/e-table-sorted.c b/widgets/table/e-table-sorted.c
deleted file mode 100644
index 71cbce1671..0000000000
--- a/widgets/table/e-table-sorted.c
+++ /dev/null
@@ -1,274 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * E-table-sorted.c: Implements a table that sorts another table
- *
- * Author:
- * Miguel de Icaza (miguel@gnu.org)
- *
- * (C) 1999 Ximian, Inc.
- */
-#include <config.h>
-#include <stdlib.h>
-#include <gtk/gtksignal.h>
-#include <string.h>
-#include "gal/util/e-util.h"
-#include "e-table-sorted.h"
-#include "e-table-sorting-utils.h"
-
-#define d(x)
-
-#define PARENT_TYPE E_TABLE_SUBSET_TYPE
-
-#define INCREMENT_AMOUNT 100
-
-/* maximum insertions between an idle event that we will do without scheduling an idle sort */
-#define ETS_INSERT_MAX (4)
-
-static ETableSubsetClass *ets_parent_class;
-
-static void ets_sort_info_changed (ETableSortInfo *info, ETableSorted *ets);
-static void ets_sort (ETableSorted *ets);
-static void ets_proxy_model_changed (ETableSubset *etss, ETableModel *source);
-static void ets_proxy_model_row_changed (ETableSubset *etss, ETableModel *source, int row);
-static void ets_proxy_model_cell_changed (ETableSubset *etss, ETableModel *source, int col, int row);
-static void ets_proxy_model_rows_inserted (ETableSubset *etss, ETableModel *source, int row, int count);
-static void ets_proxy_model_rows_deleted (ETableSubset *etss, ETableModel *source, int row, int count);
-
-static void
-ets_destroy (GtkObject *object)
-{
- ETableSorted *ets = E_TABLE_SORTED (object);
-
- if (ets->sort_idle_id) {
- g_source_remove(ets->sort_idle_id);
- }
- if (ets->insert_idle_id) {
- g_source_remove(ets->insert_idle_id);
- }
-
- if (ets->sort_info) {
- gtk_signal_disconnect (GTK_OBJECT (ets->sort_info),
- ets->sort_info_changed_id);
- gtk_object_unref(GTK_OBJECT(ets->sort_info));
- }
-
- if (ets->full_header)
- gtk_object_unref(GTK_OBJECT(ets->full_header));
-
- GTK_OBJECT_CLASS (ets_parent_class)->destroy (object);
-}
-
-static void
-ets_class_init (GtkObjectClass *object_class)
-{
- ETableSubsetClass *etss_class = E_TABLE_SUBSET_CLASS(object_class);
-
- ets_parent_class = gtk_type_class (PARENT_TYPE);
-
- etss_class->proxy_model_changed = ets_proxy_model_changed;
- etss_class->proxy_model_row_changed = ets_proxy_model_row_changed;
- etss_class->proxy_model_cell_changed = ets_proxy_model_cell_changed;
- etss_class->proxy_model_rows_inserted = ets_proxy_model_rows_inserted;
- etss_class->proxy_model_rows_deleted = ets_proxy_model_rows_deleted;
-
- object_class->destroy = ets_destroy;
-}
-
-static void
-ets_init (ETableSorted *ets)
-{
- ets->full_header = NULL;
- ets->sort_info = NULL;
-
- ets->sort_info_changed_id = 0;
-
- ets->sort_idle_id = 0;
- ets->insert_count = 0;
-}
-
-E_MAKE_TYPE(e_table_sorted, "ETableSorted", ETableSorted, ets_class_init, ets_init, PARENT_TYPE);
-
-static gboolean
-ets_sort_idle(ETableSorted *ets)
-{
- gtk_object_ref(GTK_OBJECT(ets));
- ets_sort(ets);
- ets->sort_idle_id = 0;
- ets->insert_count = 0;
- gtk_object_unref(GTK_OBJECT(ets));
- return FALSE;
-}
-
-static gboolean
-ets_insert_idle(ETableSorted *ets)
-{
- ets->insert_count = 0;
- ets->insert_idle_id = 0;
- return FALSE;
-}
-
-ETableModel *
-e_table_sorted_new (ETableModel *source, ETableHeader *full_header, ETableSortInfo *sort_info)
-{
- ETableSorted *ets = gtk_type_new (E_TABLE_SORTED_TYPE);
- ETableSubset *etss = E_TABLE_SUBSET (ets);
-
- if (e_table_subset_construct (etss, source, 0) == NULL){
- gtk_object_unref (GTK_OBJECT (ets));
- return NULL;
- }
-
- ets->sort_info = sort_info;
- gtk_object_ref(GTK_OBJECT(ets->sort_info));
- ets->full_header = full_header;
- gtk_object_ref(GTK_OBJECT(ets->full_header));
-
- ets_proxy_model_changed(etss, source);
-
- ets->sort_info_changed_id = gtk_signal_connect (GTK_OBJECT (sort_info), "sort_info_changed",
- GTK_SIGNAL_FUNC (ets_sort_info_changed), ets);
-
- return E_TABLE_MODEL(ets);
-}
-
-static void
-ets_sort_info_changed (ETableSortInfo *info, ETableSorted *ets)
-{
- ets_sort(ets);
-}
-
-static void
-ets_proxy_model_changed (ETableSubset *subset, ETableModel *source)
-{
- int rows, i;
-
- rows = e_table_model_row_count(source);
-
- g_free(subset->map_table);
- subset->n_map = rows;
- subset->map_table = g_new(int, rows);
-
- for (i = 0; i < rows; i++) {
- subset->map_table[i] = i;
- }
-
- if (!E_TABLE_SORTED(subset)->sort_idle_id)
- E_TABLE_SORTED(subset)->sort_idle_id = g_idle_add_full(50, (GSourceFunc) ets_sort_idle, subset, NULL);
-
- e_table_model_changed(E_TABLE_MODEL(subset));
-}
-
-static void
-ets_proxy_model_row_changed (ETableSubset *subset, ETableModel *source, int row)
-{
- if (!E_TABLE_SORTED(subset)->sort_idle_id)
- E_TABLE_SORTED(subset)->sort_idle_id = g_idle_add_full(50, (GSourceFunc) ets_sort_idle, subset, NULL);
-
- if (ets_parent_class->proxy_model_row_changed)
- (ets_parent_class->proxy_model_row_changed) (subset, source, row);
-}
-
-static void
-ets_proxy_model_cell_changed (ETableSubset *subset, ETableModel *source, int col, int row)
-{
- ETableSorted *ets = E_TABLE_SORTED(subset);
- if (e_table_sorting_utils_affects_sort(ets->sort_info, ets->full_header, col))
- ets_proxy_model_row_changed(subset, source, row);
- else if (ets_parent_class->proxy_model_cell_changed)
- (ets_parent_class->proxy_model_cell_changed) (subset, source, col, row);
-}
-
-static void
-ets_proxy_model_rows_inserted (ETableSubset *etss, ETableModel *source, int row, int count)
-{
- ETableModel *etm = E_TABLE_MODEL(etss);
- ETableSorted *ets = E_TABLE_SORTED(etss);
- int i;
-
- e_table_model_pre_change (etm);
-
- for (i = 0; i < etss->n_map; i++) {
- if (etss->map_table[i] >= row)
- etss->map_table[i] += count;
- }
-
- etss->map_table = g_realloc (etss->map_table, (etss->n_map + count) * sizeof(int));
-
- for (; count > 0; count --) {
- i = etss->n_map;
- if (ets->sort_idle_id == 0) {
- /* this is to see if we're inserting a lot of things between idle loops.
- If we are, we're busy, its faster to just append and perform a full sort later */
- ets->insert_count++;
- if (ets->insert_count > ETS_INSERT_MAX) {
- /* schedule a sort, and append instead */
- ets->sort_idle_id = g_idle_add_full(50, (GSourceFunc) ets_sort_idle, ets, NULL);
- } else {
- /* make sure we have an idle handler to reset the count every now and then */
- if (ets->insert_idle_id == 0) {
- ets->insert_idle_id = g_idle_add_full(40, (GSourceFunc) ets_insert_idle, ets, NULL);
- }
- i = e_table_sorting_utils_insert(etss->source, ets->sort_info, ets->full_header, etss->map_table, etss->n_map, row);
- memmove(etss->map_table + i + 1, etss->map_table + i, (etss->n_map - i) * sizeof(int));
- }
- }
- etss->map_table[i] = row;
- etss->n_map++;
-
- e_table_model_row_inserted (etm, i);
- d(g_print("inserted row %d", row));
- row++;
- }
- d(e_table_subset_print_debugging(etss));
-}
-
-static void
-ets_proxy_model_rows_deleted (ETableSubset *etss, ETableModel *source, int row, int count)
-{
- ETableModel *etm = E_TABLE_MODEL(etss);
- int i;
- gboolean shift;
- int j;
-
- shift = row == etss->n_map - 1;
-
- for (j = 0; j < count; j++) {
- for (i = 0; i < etss->n_map; i++){
- if (etss->map_table[i] == row + j) {
- e_table_model_pre_change (etm);
- memmove (etss->map_table + i, etss->map_table + i + 1, (etss->n_map - i - 1) * sizeof(int));
- etss->n_map --;
- if (shift)
- e_table_model_row_deleted (etm, i);
- }
- }
- }
- if (!shift) {
- for (i = 0; i < etss->n_map; i++) {
- if (etss->map_table[i] >= row)
- etss->map_table[i] -= count;
- }
-
- e_table_model_changed (etm);
- }
-
- d(g_print("deleted row %d count %d", row, count));
- d(e_table_subset_print_debugging(etss));
-}
-
-static void
-ets_sort(ETableSorted *ets)
-{
- ETableSubset *etss = E_TABLE_SUBSET(ets);
- static int reentering = 0;
- if (reentering)
- return;
- reentering = 1;
-
- e_table_model_pre_change(E_TABLE_MODEL(ets));
-
- e_table_sorting_utils_sort(etss->source, ets->sort_info, ets->full_header, etss->map_table, etss->n_map);
-
- e_table_model_changed (E_TABLE_MODEL(ets));
- reentering = 0;
-}
diff --git a/widgets/table/e-table-sorted.h b/widgets/table/e-table-sorted.h
deleted file mode 100644
index a138cdeb04..0000000000
--- a/widgets/table/e-table-sorted.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_SORTED_H_
-#define _E_TABLE_SORTED_H_
-
-#include <gtk/gtkobject.h>
-#include <gal/e-table/e-table-model.h>
-#include <gal/e-table/e-table-subset.h>
-#include <gal/e-table/e-table-sort-info.h>
-#include <gal/e-table/e-table-header.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define E_TABLE_SORTED_TYPE (e_table_sorted_get_type ())
-#define E_TABLE_SORTED(o) (GTK_CHECK_CAST ((o), E_TABLE_SORTED_TYPE, ETableSorted))
-#define E_TABLE_SORTED_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_SORTED_TYPE, ETableSortedClass))
-#define E_IS_TABLE_SORTED(o) (GTK_CHECK_TYPE ((o), E_TABLE_SORTED_TYPE))
-#define E_IS_TABLE_SORTED_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_SORTED_TYPE))
-
-typedef struct {
- ETableSubset base;
-
- ETableSortInfo *sort_info;
-
- ETableHeader *full_header;
-
- int sort_info_changed_id;
- int sort_idle_id;
- int insert_idle_id;
- int insert_count;
-
-} ETableSorted;
-
-typedef struct {
- ETableSubsetClass parent_class;
-} ETableSortedClass;
-
-GtkType e_table_sorted_get_type (void);
-ETableModel *e_table_sorted_new (ETableModel *etm, ETableHeader *header, ETableSortInfo *sort_info);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_TABLE_SORTED_H_ */
diff --git a/widgets/table/e-table-sorter.c b/widgets/table/e-table-sorter.c
deleted file mode 100644
index 4f4ddfc7ba..0000000000
--- a/widgets/table/e-table-sorter.c
+++ /dev/null
@@ -1,395 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * E-table-sorted.c: Implements a table that sorts another table
- *
- * Author:
- * Miguel de Icaza (miguel@gnu.org)
- *
- * (C) 1999 Ximian, Inc.
- */
-#include <config.h>
-#include <stdlib.h>
-#include <string.h>
-#include <gtk/gtksignal.h>
-#include "gal/util/e-util.h"
-#include "e-table-sorter.h"
-
-#define d(x)
-
-/* The arguments we take */
-enum {
- ARG_0,
- ARG_SORT_INFO
-};
-
-#define PARENT_TYPE e_sorter_get_type()
-
-#define INCREMENT_AMOUNT 100
-
-static ESorterClass *parent_class;
-
-static void ets_model_changed (ETableModel *etm, ETableSorter *ets);
-static void ets_model_row_changed (ETableModel *etm, int row, ETableSorter *ets);
-static void ets_model_cell_changed (ETableModel *etm, int col, int row, ETableSorter *ets);
-static void ets_sort_info_changed (ETableSortInfo *info, ETableSorter *ets);
-static void ets_clean (ETableSorter *ets);
-static void ets_sort (ETableSorter *ets);
-static void ets_backsort (ETableSorter *ets);
-
-static gint ets_model_to_sorted (ESorter *sorter, int row);
-static gint ets_sorted_to_model (ESorter *sorter, int row);
-static void ets_get_model_to_sorted_array (ESorter *sorter, int **array, int *count);
-static void ets_get_sorted_to_model_array (ESorter *sorter, int **array, int *count);
-static gboolean ets_needs_sorting (ESorter *ets);
-
-static void
-ets_destroy (GtkObject *object)
-{
- ETableSorter *ets = E_TABLE_SORTER (object);
-
- gtk_signal_disconnect (GTK_OBJECT (ets->source),
- ets->table_model_changed_id);
- gtk_signal_disconnect (GTK_OBJECT (ets->source),
- ets->table_model_row_changed_id);
- gtk_signal_disconnect (GTK_OBJECT (ets->source),
- ets->table_model_cell_changed_id);
- gtk_signal_disconnect (GTK_OBJECT (ets->sort_info),
- ets->sort_info_changed_id);
-
- ets->table_model_changed_id = 0;
- ets->table_model_row_changed_id = 0;
- ets->table_model_cell_changed_id = 0;
- ets->sort_info_changed_id = 0;
-
- if (ets->sort_info)
- gtk_object_unref(GTK_OBJECT(ets->sort_info));
- if (ets->full_header)
- gtk_object_unref(GTK_OBJECT(ets->full_header));
- if (ets->source)
- gtk_object_unref(GTK_OBJECT(ets->source));
-
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
-}
-
-static void
-ets_set_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- ETableSorter *ets = E_TABLE_SORTER (object);
-
- switch (arg_id) {
- case ARG_SORT_INFO:
- if (ets->sort_info) {
- if (ets->sort_info_changed_id)
- gtk_signal_disconnect(GTK_OBJECT(ets->sort_info), ets->sort_info_changed_id);
- gtk_object_unref(GTK_OBJECT(ets->sort_info));
- }
-
- ets->sort_info = E_TABLE_SORT_INFO(GTK_VALUE_OBJECT (*arg));
- gtk_object_ref(GTK_OBJECT(ets->sort_info));
- ets->sort_info_changed_id = gtk_signal_connect (GTK_OBJECT (ets->sort_info), "sort_info_changed",
- GTK_SIGNAL_FUNC (ets_sort_info_changed), ets);
-
- ets_clean (ets);
- break;
- default:
- break;
- }
-}
-
-static void
-ets_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- ETableSorter *ets = E_TABLE_SORTER (object);
- switch (arg_id) {
- case ARG_SORT_INFO:
- GTK_VALUE_OBJECT (*arg) = GTK_OBJECT(ets->sort_info);
- break;
- }
-}
-
-static void
-ets_class_init (ETableSorterClass *klass)
-{
- GtkObjectClass *object_class = GTK_OBJECT_CLASS(klass);
- ESorterClass *sorter_class = E_SORTER_CLASS(klass);
-
- parent_class = gtk_type_class (PARENT_TYPE);
-
- object_class->destroy = ets_destroy;
- object_class->set_arg = ets_set_arg;
- object_class->get_arg = ets_get_arg;
-
- sorter_class->model_to_sorted = ets_model_to_sorted ;
- sorter_class->sorted_to_model = ets_sorted_to_model ;
- sorter_class->get_model_to_sorted_array = ets_get_model_to_sorted_array ;
- sorter_class->get_sorted_to_model_array = ets_get_sorted_to_model_array ;
- sorter_class->needs_sorting = ets_needs_sorting ;
-
- gtk_object_add_arg_type ("ETableSorter::sort_info", GTK_TYPE_OBJECT,
- GTK_ARG_READWRITE, ARG_SORT_INFO);
-}
-
-static void
-ets_init (ETableSorter *ets)
-{
- ets->full_header = NULL;
- ets->sort_info = NULL;
- ets->source = NULL;
-
- ets->needs_sorting = -1;
-
- ets->table_model_changed_id = 0;
- ets->table_model_row_changed_id = 0;
- ets->table_model_cell_changed_id = 0;
- ets->sort_info_changed_id = 0;
-}
-
-E_MAKE_TYPE(e_table_sorter, "ETableSorter", ETableSorter, ets_class_init, ets_init, PARENT_TYPE);
-
-ETableSorter *
-e_table_sorter_new (ETableModel *source, ETableHeader *full_header, ETableSortInfo *sort_info)
-{
- ETableSorter *ets = gtk_type_new (E_TABLE_SORTER_TYPE);
-
- ets->sort_info = sort_info;
- gtk_object_ref(GTK_OBJECT(ets->sort_info));
- ets->full_header = full_header;
- gtk_object_ref(GTK_OBJECT(ets->full_header));
- ets->source = source;
- gtk_object_ref(GTK_OBJECT(ets->source));
-
- ets->table_model_changed_id = gtk_signal_connect (GTK_OBJECT (source), "model_changed",
- GTK_SIGNAL_FUNC (ets_model_changed), ets);
- ets->table_model_row_changed_id = gtk_signal_connect (GTK_OBJECT (source), "model_row_changed",
- GTK_SIGNAL_FUNC (ets_model_row_changed), ets);
- ets->table_model_cell_changed_id = gtk_signal_connect (GTK_OBJECT (source), "model_cell_changed",
- GTK_SIGNAL_FUNC (ets_model_cell_changed), ets);
- ets->sort_info_changed_id = gtk_signal_connect (GTK_OBJECT (sort_info), "sort_info_changed",
- GTK_SIGNAL_FUNC (ets_sort_info_changed), ets);
-
- return ets;
-}
-
-static void
-ets_model_changed (ETableModel *etm, ETableSorter *ets)
-{
- ets_clean(ets);
-}
-
-static void
-ets_model_row_changed (ETableModel *etm, int row, ETableSorter *ets)
-{
- ets_clean(ets);
-}
-
-static void
-ets_model_cell_changed (ETableModel *etm, int col, int row, ETableSorter *ets)
-{
- ets_clean(ets);
-}
-
-static void
-ets_sort_info_changed (ETableSortInfo *info, ETableSorter *ets)
-{
- printf ("sort info changed\n");
- ets_clean(ets);
-}
-
-static ETableSorter *ets_closure;
-static void **vals_closure;
-static int cols_closure;
-static int *ascending_closure;
-static GCompareFunc *compare_closure;
-
-/* FIXME: Make it not cache the second and later columns (as if anyone cares.) */
-
-static int
-qsort_callback(const void *data1, const void *data2)
-{
- gint row1 = *(int *)data1;
- gint row2 = *(int *)data2;
- int j;
- int sort_count = e_table_sort_info_sorting_get_count(ets_closure->sort_info) + e_table_sort_info_grouping_get_count(ets_closure->sort_info);
- int comp_val = 0;
- int ascending = 1;
- for (j = 0; j < sort_count; j++) {
- comp_val = (*(compare_closure[j]))(vals_closure[cols_closure * row1 + j], vals_closure[cols_closure * row2 + j]);
- ascending = ascending_closure[j];
- if (comp_val != 0)
- break;
- }
- if (comp_val == 0) {
- if (row1 < row2)
- comp_val = -1;
- if (row1 > row2)
- comp_val = 1;
- }
- if (!ascending)
- comp_val = -comp_val;
- return comp_val;
-}
-
-static void
-ets_clean(ETableSorter *ets)
-{
- g_free(ets->sorted);
- ets->sorted = NULL;
-
- g_free(ets->backsorted);
- ets->backsorted = NULL;
-
- ets->needs_sorting = -1;
-}
-
-
-static void
-ets_sort(ETableSorter *ets)
-{
- int rows;
- int i;
- int j;
- int cols;
- int group_cols;
-
- if (ets->sorted)
- return;
-
- rows = e_table_model_row_count(ets->source);
- group_cols = e_table_sort_info_grouping_get_count(ets->sort_info);
- cols = e_table_sort_info_sorting_get_count(ets->sort_info) + group_cols;
-
- ets->sorted = g_new(int, rows);
- for (i = 0; i < rows; i++)
- ets->sorted[i] = i;
-
- cols_closure = cols;
- ets_closure = ets;
-
- vals_closure = g_new(void *, rows * cols);
- ascending_closure = g_new(int, cols);
- compare_closure = g_new(GCompareFunc, cols);
-
- for (j = 0; j < cols; j++) {
- ETableSortColumn column;
- ETableCol *col;
-
- if (j < group_cols)
- column = e_table_sort_info_grouping_get_nth(ets->sort_info, j);
- else
- column = e_table_sort_info_sorting_get_nth(ets->sort_info, j - group_cols);
-
- col = e_table_header_get_column_by_col_idx(ets->full_header, column.column);
- if (col == NULL)
- col = e_table_header_get_column (ets->full_header, e_table_header_count (ets->full_header) - 1);
-
- for (i = 0; i < rows; i++) {
- vals_closure[i * cols + j] = e_table_model_value_at (ets->source, col->col_idx, i);
- }
-
- compare_closure[j] = col->compare;
- ascending_closure[j] = column.ascending;
- }
-
- qsort(ets->sorted, rows, sizeof(int), qsort_callback);
-
- g_free(vals_closure);
- g_free(ascending_closure);
- g_free(compare_closure);
-}
-
-static void
-ets_backsort(ETableSorter *ets)
-{
- int i, rows;
-
- if (ets->backsorted)
- return;
-
- ets_sort(ets);
-
- rows = e_table_model_row_count(ets->source);
- ets->backsorted = g_new0(int, rows);
-
- for (i = 0; i < rows; i++) {
- ets->backsorted[ets->sorted[i]] = i;
- }
-}
-
-
-static gint
-ets_model_to_sorted (ESorter *es, int row)
-{
- ETableSorter *ets = E_TABLE_SORTER(es);
- int rows = e_table_model_row_count(ets->source);
-
- g_return_val_if_fail(row >= 0, -1);
- g_return_val_if_fail(row < rows, -1);
-
- if (ets_needs_sorting(es))
- ets_backsort(ets);
-
- if (ets->backsorted)
- return ets->backsorted[row];
- else
- return row;
-}
-
-static gint
-ets_sorted_to_model (ESorter *es, int row)
-{
- ETableSorter *ets = E_TABLE_SORTER(es);
- int rows = e_table_model_row_count(ets->source);
-
- g_return_val_if_fail(row >= 0, -1);
- g_return_val_if_fail(row < rows, -1);
-
- if (ets_needs_sorting(es))
- ets_sort(ets);
-
- if (ets->sorted)
- return ets->sorted[row];
- else
- return row;
-}
-
-static void
-ets_get_model_to_sorted_array (ESorter *es, int **array, int *count)
-{
- ETableSorter *ets = E_TABLE_SORTER(es);
- if (array || count) {
- ets_backsort(ets);
-
- if (array)
- *array = ets->backsorted;
- if (count)
- *count = e_table_model_row_count(ets->source);
- }
-}
-
-static void
-ets_get_sorted_to_model_array (ESorter *es, int **array, int *count)
-{
- ETableSorter *ets = E_TABLE_SORTER(es);
- if (array || count) {
- ets_sort(ets);
-
- if (array)
- *array = ets->sorted;
- if (count)
- *count = e_table_model_row_count(ets->source);
- }
-}
-
-
-static gboolean
-ets_needs_sorting(ESorter *es)
-{
- ETableSorter *ets = E_TABLE_SORTER(es);
- if (ets->needs_sorting < 0) {
- if (e_table_sort_info_sorting_get_count(ets->sort_info) + e_table_sort_info_grouping_get_count(ets->sort_info))
- ets->needs_sorting = 1;
- else
- ets->needs_sorting = 0;
- }
- return ets->needs_sorting;
-}
diff --git a/widgets/table/e-table-sorter.h b/widgets/table/e-table-sorter.h
deleted file mode 100644
index a6c999f744..0000000000
--- a/widgets/table/e-table-sorter.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_SORTER_H_
-#define _E_TABLE_SORTER_H_
-
-#include <gtk/gtkobject.h>
-#include <gal/util/e-sorter.h>
-#include <gal/e-table/e-table-model.h>
-#include <gal/e-table/e-table-subset-variable.h>
-#include <gal/e-table/e-table-sort-info.h>
-#include <gal/e-table/e-table-header.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_TABLE_SORTER_TYPE (e_table_sorter_get_type ())
-#define E_TABLE_SORTER(o) (GTK_CHECK_CAST ((o), E_TABLE_SORTER_TYPE, ETableSorter))
-#define E_TABLE_SORTER_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_SORTER_TYPE, ETableSorterClass))
-#define E_IS_TABLE_SORTER(o) (GTK_CHECK_TYPE ((o), E_TABLE_SORTER_TYPE))
-#define E_IS_TABLE_SORTER_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_SORTER_TYPE))
-
-typedef struct {
- ESorter base;
-
- ETableModel *source;
- ETableHeader *full_header;
- ETableSortInfo *sort_info;
-
- /* If needs_sorting is 0, then model_to_sorted and sorted_to_model are no-ops. */
- int needs_sorting;
-
- int *sorted;
- int *backsorted;
-
- int table_model_changed_id;
- int table_model_row_changed_id;
- int table_model_cell_changed_id;
- int sort_info_changed_id;
-} ETableSorter;
-
-typedef struct {
- ESorterClass parent_class;
-} ETableSorterClass;
-
-GtkType e_table_sorter_get_type (void);
-ETableSorter *e_table_sorter_new (ETableModel *etm,
- ETableHeader *full_header,
- ETableSortInfo *sort_info);
-END_GNOME_DECLS
-
-#endif /* _E_TABLE_SORTER_H_ */
diff --git a/widgets/table/e-table-sorting-utils.c b/widgets/table/e-table-sorting-utils.c
deleted file mode 100644
index 4b2d581206..0000000000
--- a/widgets/table/e-table-sorting-utils.c
+++ /dev/null
@@ -1,328 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-#include <config.h>
-#include <string.h>
-#include <e-table-sorting-utils.h>
-#include <gal/util/e-util.h>
-
-#define d(x)
-
-/* This takes source rows. */
-static int
-etsu_compare(ETableModel *source, ETableSortInfo *sort_info, ETableHeader *full_header, int row1, int row2)
-{
- int j;
- int sort_count = e_table_sort_info_sorting_get_count(sort_info);
- int comp_val = 0;
- int ascending = 1;
-
- for (j = 0; j < sort_count; j++) {
- ETableSortColumn column = e_table_sort_info_sorting_get_nth(sort_info, j);
- ETableCol *col;
- col = e_table_header_get_column_by_col_idx(full_header, column.column);
- if (col == NULL)
- col = e_table_header_get_column (full_header, e_table_header_count (full_header) - 1);
- comp_val = (*col->compare)(e_table_model_value_at (source, col->col_idx, row1),
- e_table_model_value_at (source, col->col_idx, row2));
- ascending = column.ascending;
- if (comp_val != 0)
- break;
- }
- if (comp_val == 0) {
- if (row1 < row2)
- comp_val = -1;
- if (row1 > row2)
- comp_val = 1;
- }
- if (!ascending)
- comp_val = -comp_val;
- return comp_val;
-}
-
-typedef struct {
- int cols;
- void **vals;
- int *ascending;
- GCompareFunc *compare;
-} ETableSortClosure;
-
-typedef struct {
- ETreeModel *tree;
- ETableSortInfo *sort_info;
- ETableHeader *full_header;
-} ETreeSortClosure;
-
-/* FIXME: Make it not cache the second and later columns (as if anyone cares.) */
-
-static int
-e_sort_callback(const void *data1, const void *data2, gpointer user_data)
-{
- gint row1 = *(int *)data1;
- gint row2 = *(int *)data2;
- ETableSortClosure *closure = user_data;
- int j;
- int sort_count = closure->cols;
- int comp_val = 0;
- int ascending = 1;
- for (j = 0; j < sort_count; j++) {
- comp_val = (*(closure->compare[j]))(closure->vals[closure->cols * row1 + j], closure->vals[closure->cols * row2 + j]);
- ascending = closure->ascending[j];
- if (comp_val != 0)
- break;
- }
- if (comp_val == 0) {
- if (row1 < row2)
- comp_val = -1;
- if (row1 > row2)
- comp_val = 1;
- }
- if (!ascending)
- comp_val = -comp_val;
- return comp_val;
-}
-
-void
-e_table_sorting_utils_sort(ETableModel *source, ETableSortInfo *sort_info, ETableHeader *full_header, int *map_table, int rows)
-{
- int total_rows;
- int i;
- int j;
- int cols;
- ETableSortClosure closure;
-
- g_return_if_fail(source != NULL);
- g_return_if_fail(E_IS_TABLE_MODEL(source));
- g_return_if_fail(sort_info != NULL);
- g_return_if_fail(E_IS_TABLE_SORT_INFO(sort_info));
- g_return_if_fail(full_header != NULL);
- g_return_if_fail(E_IS_TABLE_HEADER(full_header));
-
- total_rows = e_table_model_row_count(source);
- cols = e_table_sort_info_sorting_get_count(sort_info);
- closure.cols = cols;
-
- closure.vals = g_new(void *, total_rows * cols);
- closure.ascending = g_new(int, cols);
- closure.compare = g_new(GCompareFunc, cols);
-
- for (j = 0; j < cols; j++) {
- ETableSortColumn column = e_table_sort_info_sorting_get_nth(sort_info, j);
- ETableCol *col;
- col = e_table_header_get_column_by_col_idx(full_header, column.column);
- if (col == NULL)
- col = e_table_header_get_column (full_header, e_table_header_count (full_header) - 1);
- for (i = 0; i < rows; i++) {
- closure.vals[map_table[i] * cols + j] = e_table_model_value_at (source, col->col_idx, map_table[i]);
- }
- closure.compare[j] = col->compare;
- closure.ascending[j] = column.ascending;
- }
-
- e_sort(map_table, rows, sizeof(int), e_sort_callback, &closure);
-
- g_free(closure.vals);
- g_free(closure.ascending);
- g_free(closure.compare);
-}
-
-gboolean
-e_table_sorting_utils_affects_sort (ETableSortInfo *sort_info,
- ETableHeader *full_header,
- int col)
-{
- int j;
- int cols;
-
- g_return_val_if_fail(sort_info != NULL, TRUE);
- g_return_val_if_fail(E_IS_TABLE_SORT_INFO(sort_info), TRUE);
- g_return_val_if_fail(full_header != NULL, TRUE);
- g_return_val_if_fail(E_IS_TABLE_HEADER(full_header), TRUE);
-
- cols = e_table_sort_info_sorting_get_count(sort_info);
-
- for (j = 0; j < cols; j++) {
- ETableSortColumn column = e_table_sort_info_sorting_get_nth(sort_info, j);
- ETableCol *tablecol;
- tablecol = e_table_header_get_column_by_col_idx(full_header, column.column);
- if (tablecol == NULL)
- tablecol = e_table_header_get_column (full_header, e_table_header_count (full_header) - 1);
- if (col == tablecol->col_idx)
- return TRUE;
- }
- return FALSE;
-}
-
-
-/* FIXME: This could be done in time log n instead of time n with a binary search. */
-int
-e_table_sorting_utils_insert(ETableModel *source, ETableSortInfo *sort_info, ETableHeader *full_header, int *map_table, int rows, int row)
-{
- int i;
-
- i = 0;
- /* handle insertions when we have a 'sort group' */
- while (i < rows && etsu_compare(source, sort_info, full_header, map_table[i], row) < 0)
- i++;
-
- return i;
-}
-
-/* FIXME: This could be done in time log n instead of time n with a binary search. */
-int
-e_table_sorting_utils_check_position (ETableModel *source, ETableSortInfo *sort_info, ETableHeader *full_header, int *map_table, int rows, int view_row)
-{
- int i;
- int row;
-
- i = view_row;
- row = map_table[i];
-
- i = view_row;
- if (i < rows - 1 && etsu_compare(source, sort_info, full_header, map_table[i + 1], row) < 0) {
- i ++;
- while (i < rows - 1 && etsu_compare(source, sort_info, full_header, map_table[i], row) < 0)
- i ++;
- } else if (i > 0 && etsu_compare(source, sort_info, full_header, map_table[i - 1], row) > 0) {
- i --;
- while (i > 0 && etsu_compare(source, sort_info, full_header, map_table[i], row) > 0)
- i --;
- }
- return i;
-}
-
-
-
-
-/* This takes source rows. */
-static int
-etsu_tree_compare(ETreeModel *source, ETableSortInfo *sort_info, ETableHeader *full_header, ETreePath path1, ETreePath path2)
-{
- int j;
- int sort_count = e_table_sort_info_sorting_get_count(sort_info);
- int comp_val = 0;
- int ascending = 1;
-
- for (j = 0; j < sort_count; j++) {
- ETableSortColumn column = e_table_sort_info_sorting_get_nth(sort_info, j);
- ETableCol *col;
- col = e_table_header_get_column_by_col_idx(full_header, column.column);
- if (col == NULL)
- col = e_table_header_get_column (full_header, e_table_header_count (full_header) - 1);
- comp_val = (*col->compare)(e_tree_model_value_at (source, path1, col->col_idx),
- e_tree_model_value_at (source, path2, col->col_idx));
- ascending = column.ascending;
- if (comp_val != 0)
- break;
- }
- if (!ascending)
- comp_val = -comp_val;
- return comp_val;
-}
-
-static int
-e_sort_tree_callback(const void *data1, const void *data2, gpointer user_data)
-{
- ETreePath *path1 = *(ETreePath *)data1;
- ETreePath *path2 = *(ETreePath *)data2;
- ETreeSortClosure *closure = user_data;
-
- return etsu_tree_compare(closure->tree, closure->sort_info, closure->full_header, path1, path2);
-}
-
-void
-e_table_sorting_utils_tree_sort(ETreeModel *source, ETableSortInfo *sort_info, ETableHeader *full_header, ETreePath *map_table, int count)
-{
- ETableSortClosure closure;
- int cols;
- int i, j;
- int *map;
- ETreePath *map_copy;
- g_return_if_fail(source != NULL);
- g_return_if_fail(E_IS_TREE_MODEL(source));
- g_return_if_fail(sort_info != NULL);
- g_return_if_fail(E_IS_TABLE_SORT_INFO(sort_info));
- g_return_if_fail(full_header != NULL);
- g_return_if_fail(E_IS_TABLE_HEADER(full_header));
-
- cols = e_table_sort_info_sorting_get_count(sort_info);
- closure.cols = cols;
-
- closure.vals = g_new(void *, count * cols);
- closure.ascending = g_new(int, cols);
- closure.compare = g_new(GCompareFunc, cols);
-
- for (j = 0; j < cols; j++) {
- ETableSortColumn column = e_table_sort_info_sorting_get_nth(sort_info, j);
- ETableCol *col;
-
- col = e_table_header_get_column_by_col_idx(full_header, column.column);
- if (col == NULL)
- col = e_table_header_get_column (full_header, e_table_header_count (full_header) - 1);
-
- for (i = 0; i < count; i++) {
- closure.vals[i * cols + j] = e_tree_model_value_at (source, map_table[i], col->col_idx);
- }
- closure.ascending[j] = column.ascending;
- closure.compare[j] = col->compare;
- }
-
- map = g_new(int, count);
- for (i = 0; i < count; i++) {
- map[i] = i;
- }
-
- e_sort(map, count, sizeof(int), e_sort_callback, &closure);
-
- map_copy = g_new(ETreePath, count);
- for (i = 0; i < count; i++) {
- map_copy[i] = map_table[i];
- }
- for (i = 0; i < count; i++) {
- map_table[i] = map_copy[map[i]];
- }
-
- g_free(map);
- g_free(map_copy);
-
- g_free(closure.vals);
- g_free(closure.ascending);
- g_free(closure.compare);
-}
-
-/* FIXME: This could be done in time log n instead of time n with a binary search. */
-int
-e_table_sorting_utils_tree_check_position (ETreeModel *source, ETableSortInfo *sort_info, ETableHeader *full_header, ETreePath *map_table, int count, int old_index)
-{
- int i;
- ETreePath path;
-
- i = old_index;
- path = map_table[i];
-
- if (i < count - 1 && etsu_tree_compare(source, sort_info, full_header, map_table[i + 1], path) < 0) {
- i ++;
- while (i < count - 1 && etsu_tree_compare(source, sort_info, full_header, map_table[i], path) < 0)
- i ++;
- } else if (i > 0 && etsu_tree_compare(source, sort_info, full_header, map_table[i - 1], path) > 0) {
- i --;
- while (i > 0 && etsu_tree_compare(source, sort_info, full_header, map_table[i], path) > 0)
- i --;
- }
- return i;
-}
-
-/* FIXME: This does not pay attention to making sure that it's a stable insert. This needs to be fixed. */
-int
-e_table_sorting_utils_tree_insert(ETreeModel *source, ETableSortInfo *sort_info, ETableHeader *full_header, ETreePath *map_table, int count, ETreePath path)
-{
- int start;
- int end;
- ETreeSortClosure closure;
-
- closure.tree = source;
- closure.sort_info = sort_info;
- closure.full_header = full_header;
-
- e_bsearch(&path, map_table, count, sizeof(ETreePath), e_sort_tree_callback, &closure, &start, &end);
- return end;
-}
diff --git a/widgets/table/e-table-sorting-utils.h b/widgets/table/e-table-sorting-utils.h
deleted file mode 100644
index 559bd8e82c..0000000000
--- a/widgets/table/e-table-sorting-utils.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_SORTING_UTILS_H_
-#define _E_TABLE_SORTING_UTILS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#include <gal/e-table/e-table-model.h>
-#include <gal/e-table/e-tree-model.h>
-#include <gal/e-table/e-table-sort-info.h>
-#include <gal/e-table/e-table-header.h>
-gboolean e_table_sorting_utils_affects_sort (ETableSortInfo *sort_info,
- ETableHeader *full_header,
- int col);
-
-
-
-void e_table_sorting_utils_sort (ETableModel *source,
- ETableSortInfo *sort_info,
- ETableHeader *full_header,
- int *map_table,
- int rows);
-int e_table_sorting_utils_insert (ETableModel *source,
- ETableSortInfo *sort_info,
- ETableHeader *full_header,
- int *map_table,
- int rows,
- int row);
-int e_table_sorting_utils_check_position (ETableModel *source,
- ETableSortInfo *sort_info,
- ETableHeader *full_header,
- int *map_table,
- int rows,
- int view_row);
-
-
-
-void e_table_sorting_utils_tree_sort (ETreeModel *source,
- ETableSortInfo *sort_info,
- ETableHeader *full_header,
- ETreePath *map_table,
- int count);
-int e_table_sorting_utils_tree_check_position (ETreeModel *source,
- ETableSortInfo *sort_info,
- ETableHeader *full_header,
- ETreePath *map_table,
- int count,
- int old_index);
-int e_table_sorting_utils_tree_insert (ETreeModel *source,
- ETableSortInfo *sort_info,
- ETableHeader *full_header,
- ETreePath *map_table,
- int count,
- ETreePath path);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_TABLE_SORTING_UTILS_H_ */
diff --git a/widgets/table/e-table-specification.c b/widgets/table/e-table-specification.c
deleted file mode 100644
index b5acc017e3..0000000000
--- a/widgets/table/e-table-specification.c
+++ /dev/null
@@ -1,377 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * E-table-specification.c: Implements a savable description of the inital state of a table.
- *
- * Authors:
- * Chris Lahey <clahey@ximian.com>
- * Miguel de Icaza (miguel@ximian.com)
- *
- * (C) 2000, 2001 Ximian, Inc.
- */
-#include <config.h>
-
-#include "e-table-specification.h"
-
-#include <stdlib.h>
-#include <gtk/gtksignal.h>
-#include <gnome-xml/parser.h>
-#include <gnome-xml/xmlmemory.h>
-#include "gal/util/e-util.h"
-#include "gal/util/e-xml-utils.h"
-
-#define PARENT_TYPE (gtk_object_get_type ())
-
-static GtkObjectClass *etsp_parent_class;
-
-static void
-etsp_destroy (GtkObject *object)
-{
- ETableSpecification *etsp = E_TABLE_SPECIFICATION (object);
- int i;
-
- if (etsp->columns) {
- for (i = 0; etsp->columns[i]; i++) {
- gtk_object_unref (GTK_OBJECT (etsp->columns[i]));
- }
- g_free (etsp->columns);
- }
-
- if (etsp->state)
- gtk_object_unref (GTK_OBJECT (etsp->state));
- g_free (etsp->click_to_add_message);
-
- etsp->columns = NULL;
- etsp->state = NULL;
- etsp->click_to_add_message = NULL;
-
- GTK_OBJECT_CLASS (etsp_parent_class)->destroy (object);
-}
-
-static void
-etsp_class_init (GtkObjectClass *klass)
-{
- etsp_parent_class = gtk_type_class (PARENT_TYPE);
-
- klass->destroy = etsp_destroy;
-}
-
-static void
-etsp_init (ETableSpecification *etsp)
-{
- etsp->columns = NULL;
- etsp->state = NULL;
-
- etsp->alternating_row_colors = TRUE;
- etsp->no_headers = FALSE;
- etsp->click_to_add = FALSE;
- etsp->horizontal_draw_grid = FALSE;
- etsp->vertical_draw_grid = FALSE;
- etsp->draw_focus = TRUE;
- etsp->horizontal_scrolling = FALSE;
-
- etsp->cursor_mode = E_CURSOR_SIMPLE;
- etsp->selection_mode = GTK_SELECTION_MULTIPLE;
-
- etsp->click_to_add_message = NULL;
-}
-
-E_MAKE_TYPE (e_table_specification, "ETableSpecification", ETableSpecification, etsp_class_init, etsp_init, PARENT_TYPE);
-
-/**
- * e_table_specification_new:
- *
- * Creates a new %ETableSpecification object. This object is used to hold the
- * information about the rendering information for ETable.
- *
- * Returns: a newly created %ETableSpecification object.
- */
-ETableSpecification *
-e_table_specification_new (void)
-{
- ETableSpecification *etsp = gtk_type_new (E_TABLE_SPECIFICATION_TYPE);
-
- return (ETableSpecification *) etsp;
-}
-
-/**
- * e_table_specification_load_from_file:
- * @specification: An ETableSpecification that you want to modify
- * @filename: a filename that contains an ETableSpecification
- *
- * This routine modifies @specification to reflect the state described
- * by the file @filename.
- *
- * Returns: TRUE on success, FALSE on failure.
- */
-gboolean
-e_table_specification_load_from_file (ETableSpecification *specification,
- const char *filename)
-{
- xmlDoc *doc;
- doc = xmlParseFile (filename);
- if (doc) {
- xmlNode *node = xmlDocGetRootElement (doc);
- e_table_specification_load_from_node (specification, node);
- xmlFreeDoc (doc);
- return TRUE;
- }
- return FALSE;
-}
-
-/**
- * e_table_specification_load_from_string:
- * @specification: An ETableSpecification that you want to modify
- * @xml: a stringified representation of an ETableSpecification description.
- *
- * This routine modifies @specification to reflect the state described
- * by @xml. @xml is typically returned by e_table_specification_save_to_string
- * or it can be embedded in your source code.
- *
- * Returns: TRUE on success, FALSE on failure.
- */
-gboolean
-e_table_specification_load_from_string (ETableSpecification *specification,
- const char *xml)
-{
- xmlDoc *doc;
- doc = xmlParseMemory ( (char *) xml, strlen (xml));
- if (doc) {
- xmlNode *node = xmlDocGetRootElement (doc);
- e_table_specification_load_from_node (specification, node);
- xmlFreeDoc (doc);
- return TRUE;
- }
-
- return FALSE;
-}
-
-/**
- * e_table_specification_load_from_node:
- * @specification: An ETableSpecification that you want to modify
- * @node: an xmlNode with an XML ETableSpecification description.
- *
- * This routine modifies @specification to reflect the state described
- * by @node.
- */
-void
-e_table_specification_load_from_node (ETableSpecification *specification,
- const xmlNode *node)
-{
- char *temp;
- xmlNode *children;
- GList *list = NULL, *list2;
- int i;
-
- specification->no_headers = e_xml_get_bool_prop_by_name (node, "no-headers");
- specification->click_to_add = e_xml_get_bool_prop_by_name (node, "click-to-add");
- specification->alternating_row_colors = e_xml_get_bool_prop_by_name_with_default (node, "alternating-row-colors", TRUE);
- specification->horizontal_draw_grid = e_xml_get_bool_prop_by_name (node, "horizontal-draw-grid");
- specification->vertical_draw_grid = e_xml_get_bool_prop_by_name (node, "vertical-draw-grid");
- if (e_xml_get_bool_prop_by_name_with_default(node, "draw-grid", TRUE) ==
- e_xml_get_bool_prop_by_name_with_default(node, "draw-grid", FALSE)) {
- specification->horizontal_draw_grid =
- specification->vertical_draw_grid = e_xml_get_bool_prop_by_name (node, "draw-grid");
- }
- specification->draw_focus = e_xml_get_bool_prop_by_name_with_default (node, "draw-focus", TRUE);
- specification->horizontal_scrolling = e_xml_get_bool_prop_by_name_with_default (node, "horizontal-scrolling", FALSE);
-
- specification->selection_mode = GTK_SELECTION_MULTIPLE;
- temp = e_xml_get_string_prop_by_name (node, "selection-mode");
- if (temp && !g_strcasecmp (temp, "single")) {
- specification->selection_mode = GTK_SELECTION_SINGLE;
- } else if (temp && !g_strcasecmp (temp, "browse")) {
- specification->selection_mode = GTK_SELECTION_BROWSE;
- } else if (temp && !g_strcasecmp (temp, "extended")) {
- specification->selection_mode = GTK_SELECTION_EXTENDED;
- }
- g_free (temp);
-
- specification->cursor_mode = E_CURSOR_SIMPLE;
- temp = e_xml_get_string_prop_by_name (node, "cursor-mode");
- if (temp && !g_strcasecmp (temp, "line")) {
- specification->cursor_mode = E_CURSOR_LINE;
- } else if (temp && !g_strcasecmp (temp, "spreadsheet")) {
- specification->cursor_mode = E_CURSOR_SPREADSHEET;
- }
- g_free (temp);
- g_free (specification->click_to_add_message);
-
- specification->click_to_add_message =
- e_xml_get_string_prop_by_name (
- node, "_click-to-add-message");
-
- if (specification->state)
- gtk_object_unref (GTK_OBJECT (specification->state));
- specification->state = NULL;
- if (specification->columns) {
- for (i = 0; specification->columns[i]; i++) {
- gtk_object_unref (GTK_OBJECT (specification->columns[i]));
- }
- g_free (specification->columns);
- }
- specification->columns = NULL;
-
- for (children = node->xmlChildrenNode; children; children = children->next) {
- if (!strcmp (children->name, "ETableColumn")) {
- ETableColumnSpecification *col_spec = e_table_column_specification_new ();
-
- e_table_column_specification_load_from_node (col_spec, children);
- list = g_list_append (list, col_spec);
- } else if (specification->state == NULL && !strcmp (children->name, "ETableState")) {
- specification->state = e_table_state_new ();
- e_table_state_load_from_node (specification->state, children);
- }
- }
-
- specification->columns = g_new (ETableColumnSpecification *, g_list_length (list) + 1);
- for (list2 = list, i = 0; list2; list2 = g_list_next (list2), i++) {
- specification->columns[i] = list2->data;
- }
- specification->columns[i] = NULL;
- g_list_free (list);
-}
-
-/**
- * e_table_specification_save_to_file:
- * @specification: An %ETableSpecification that you want to save
- * @filename: a file name to store the specification.
- *
- * This routine stores the @specification into @filename.
- *
- * Returns: the number of bytes written or -1 on error.
- */
-int
-e_table_specification_save_to_file (ETableSpecification *specification,
- const char *filename)
-{
- xmlDoc *doc;
-
- g_return_val_if_fail (specification != NULL, -1);
- g_return_val_if_fail (filename != NULL, -1);
- g_return_val_if_fail (E_IS_TABLE_SPECIFICATION (specification), -1);
-
- doc = xmlNewDoc ("1.0");
- xmlDocSetRootElement (doc, e_table_specification_save_to_node (specification, doc));
- return xmlSaveFile (filename, doc);
-}
-
-/**
- * e_table_specification_save_to_string:
- * @specification: An %ETableSpecification that you want to stringify
- *
- * Saves the state of @specification to a string.
- *
- * Returns: an g_alloc() allocated string containing the stringified
- * representation of @specification. This stringified representation
- * uses XML as a convenience.
- */
-char *
-e_table_specification_save_to_string (ETableSpecification *specification)
-{
- char *ret_val;
- xmlChar *string;
- int length;
- xmlDoc *doc;
-
- g_return_val_if_fail (specification != NULL, NULL);
- g_return_val_if_fail (E_IS_TABLE_SPECIFICATION (specification), NULL);
-
- doc = xmlNewDoc ("1.0");
- xmlDocSetRootElement (doc, e_table_specification_save_to_node (specification, doc));
- xmlDocDumpMemory (doc, &string, &length);
-
- ret_val = g_strdup (string);
- xmlFree (string);
- return ret_val;
-}
-
-/**
- * e_table_specification_save_to_node:
- * @specification: An ETableSpecification that you want to store.
- * @doc: Node where the specification is saved
- *
- * This routine saves the %ETableSpecification state in the object @specification
- * into the xmlDoc represented by @doc.
- *
- * Returns: The node that has been attached to @doc with the contents
- * of the ETableSpecification.
- */
-xmlNode *
-e_table_specification_save_to_node (ETableSpecification *specification,
- xmlDoc *doc)
-{
- xmlNode *node;
- char *s;
-
- g_return_val_if_fail (doc != NULL, NULL);
- g_return_val_if_fail (specification != NULL, NULL);
- g_return_val_if_fail (E_IS_TABLE_SPECIFICATION (specification), NULL);
-
- node = xmlNewNode (NULL, "ETableSpecification");
- e_xml_set_bool_prop_by_name (node, "no-headers", specification->no_headers);
- e_xml_set_bool_prop_by_name (node, "click-to-add", specification->click_to_add);
- e_xml_set_bool_prop_by_name (node, "alternating-row-colors", specification->alternating_row_colors);
- e_xml_set_bool_prop_by_name (node, "horizontal-draw-grid", specification->horizontal_draw_grid);
- e_xml_set_bool_prop_by_name (node, "vertical-draw-grid", specification->vertical_draw_grid);
- e_xml_set_bool_prop_by_name (node, "draw-focus", specification->draw_focus);
- e_xml_set_bool_prop_by_name (node, "horizontal-scrolling", specification->horizontal_scrolling);
-
- switch (specification->selection_mode){
- case GTK_SELECTION_SINGLE:
- s = "single";
- break;
- case GTK_SELECTION_BROWSE:
- s = "browse";
- break;
- default:
- case GTK_SELECTION_EXTENDED:
- s = "extended";
- }
- xmlSetProp (node, "selection-mode", s);
- if (specification->cursor_mode == E_CURSOR_LINE)
- s = "line";
- else
- s = "cell";
- xmlSetProp (node, "cursor-mode", s);
-
- xmlSetProp (node, "_click-to-add-message", specification->click_to_add_message);
-
- if (specification->columns){
- int i;
-
- for (i = 0; specification->columns [i]; i++)
- e_table_column_specification_save_to_node (
- specification->columns [i],
- node);
- }
-
- if (specification->state)
- e_table_state_save_to_node (specification->state, node);
-
- return node;
-}
-
-/**
- * e_table_specification_duplicate:
- * @spec: specification to duplicate
- *
- * This creates a copy of the %ETableSpecification @spec
- *
- * Returns: The duplicated %ETableSpecification.
- */
-ETableSpecification *
-e_table_specification_duplicate (ETableSpecification *spec)
-{
- ETableSpecification *new_spec;
- char *spec_str;
-
- g_return_val_if_fail (spec != NULL, NULL);
- g_return_val_if_fail (E_IS_TABLE_SPECIFICATION (spec), NULL);
-
- new_spec = e_table_specification_new ();
- spec_str = e_table_specification_save_to_string (spec);
- e_table_specification_load_from_string (new_spec, spec_str);
- g_free (spec_str);
-
- return new_spec;
-}
diff --git a/widgets/table/e-table-specification.h b/widgets/table/e-table-specification.h
deleted file mode 100644
index b2941f38d3..0000000000
--- a/widgets/table/e-table-specification.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_SPECIFICATION_H_
-#define _E_TABLE_SPECIFICATION_H_
-
-#include <gtk/gtkobject.h>
-#include <gnome-xml/tree.h>
-#include <gal/widgets/e-selection-model.h>
-#include <gal/e-table/e-table-state.h>
-#include <gal/e-table/e-table-column-specification.h>
-#include <gal/e-table/e-table-defines.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define E_TABLE_SPECIFICATION_TYPE (e_table_specification_get_type ())
-#define E_TABLE_SPECIFICATION(o) (GTK_CHECK_CAST ((o), E_TABLE_SPECIFICATION_TYPE, ETableSpecification))
-#define E_TABLE_SPECIFICATION_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_SPECIFICATION_TYPE, ETableSpecificationClass))
-#define E_IS_TABLE_SPECIFICATION(o) (GTK_CHECK_TYPE ((o), E_TABLE_SPECIFICATION_TYPE))
-#define E_IS_TABLE_SPECIFICATION_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_SPECIFICATION_TYPE))
-
-typedef struct {
- GtkObject base;
-
- ETableColumnSpecification **columns;
- ETableState *state;
-
- guint alternating_row_colors : 1;
- guint no_headers : 1;
- guint click_to_add : 1;
- guint horizontal_draw_grid : 1;
- guint vertical_draw_grid : 1;
- guint draw_focus : 1;
- guint horizontal_scrolling : 1;
- GtkSelectionMode selection_mode;
- ECursorMode cursor_mode;
-
- char *click_to_add_message;
-} ETableSpecification;
-
-typedef struct {
- GtkObjectClass parent_class;
-} ETableSpecificationClass;
-
-GtkType e_table_specification_get_type (void);
-ETableSpecification *e_table_specification_new (void);
-
-gboolean e_table_specification_load_from_file (ETableSpecification *specification,
- const char *filename);
-gboolean e_table_specification_load_from_string (ETableSpecification *specification,
- const char *xml);
-void e_table_specification_load_from_node (ETableSpecification *specification,
- const xmlNode *node);
-
-int e_table_specification_save_to_file (ETableSpecification *specification,
- const char *filename);
-char *e_table_specification_save_to_string (ETableSpecification *specification);
-xmlNode *e_table_specification_save_to_node (ETableSpecification *specification,
- xmlDoc *doc);
-ETableSpecification *e_table_specification_duplicate (ETableSpecification *spec);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_TABLE_SPECIFICATION_H_ */
diff --git a/widgets/table/e-table-state.c b/widgets/table/e-table-state.c
deleted file mode 100644
index 0e0fa9f6ef..0000000000
--- a/widgets/table/e-table-state.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * E-table-state.c: Savable state of a table.
- *
- * Authors:
- * Chris Lahey <clahey@ximian.com>
- * Miguel de Icaza (miguel@ximian.com)
- *
- * (C) 2000 Ximian, Inc.
- */
-#include <config.h>
-#include <stdlib.h>
-#include <gtk/gtksignal.h>
-#include <gtk/gtkobject.h>
-#include <gnome-xml/parser.h>
-#include <gnome-xml/xmlmemory.h>
-#include "gal/util/e-util.h"
-#include "gal/util/e-xml-utils.h"
-#include "e-table-state.h"
-
-
-#define PARENT_TYPE (gtk_object_get_type())
-
-#define STATE_VERSION 0.1
-
-static GtkObjectClass *etst_parent_class;
-
-static void
-etst_destroy (GtkObject *object)
-{
- ETableState *etst = E_TABLE_STATE (object);
-
- gtk_object_unref (GTK_OBJECT (etst->sort_info));
- if (etst->columns) {
- g_free (etst->columns);
- etst->columns = NULL;
- }
-
- if (etst->expansions) {
- g_free (etst->expansions);
- etst->expansions = NULL;
- }
-
- GTK_OBJECT_CLASS (etst_parent_class)->destroy (object);
-}
-
-static void
-etst_class_init (GtkObjectClass *klass)
-{
- etst_parent_class = gtk_type_class (PARENT_TYPE);
-
- klass->destroy = etst_destroy;
-}
-
-static void
-etst_init (ETableState *state)
-{
- GTK_OBJECT_UNSET_FLAGS (GTK_OBJECT (state), GTK_FLOATING);
-
- state->columns = NULL;
- state->expansions = NULL;
- state->sort_info = e_table_sort_info_new();
-}
-
-E_MAKE_TYPE(e_table_state, "ETableState", ETableState, etst_class_init, etst_init, PARENT_TYPE);
-
-ETableState *
-e_table_state_new (void)
-{
- ETableState *etst = gtk_type_new (E_TABLE_STATE_TYPE);
-
- return (ETableState *) etst;
-}
-
-gboolean
-e_table_state_load_from_file (ETableState *state,
- const char *filename)
-{
- xmlDoc *doc;
- doc = xmlParseFile (filename);
- if (doc) {
- xmlNode *node = xmlDocGetRootElement(doc);
- e_table_state_load_from_node(state, node);
- xmlFreeDoc(doc);
- return TRUE;
- }
- return FALSE;
-}
-
-void
-e_table_state_load_from_string (ETableState *state,
- const char *xml)
-{
- xmlDoc *doc;
- doc = xmlParseMemory ((char *) xml, strlen(xml));
- if (doc) {
- xmlNode *node = xmlDocGetRootElement(doc);
- e_table_state_load_from_node(state, node);
- xmlFreeDoc(doc);
- }
-}
-
-typedef struct {
- int column;
- double expansion;
-} int_and_double;
-
-void
-e_table_state_load_from_node (ETableState *state,
- const xmlNode *node)
-{
- xmlNode *children;
- GList *list = NULL, *iterator;
- gdouble state_version;
- int i;
-
- state_version = e_xml_get_double_prop_by_name_with_default (
- node, "state-version", STATE_VERSION);
-
- if (state->sort_info)
- gtk_object_unref (GTK_OBJECT(state->sort_info));
-
- state->sort_info = NULL;
- children = node->xmlChildrenNode;
- for (; children; children = children->next) {
- if (!strcmp (children->name, "column")) {
- int_and_double *column_info = g_new(int_and_double, 1);
-
- column_info->column = e_xml_get_integer_prop_by_name(
- children, "source");
- column_info->expansion =
- e_xml_get_double_prop_by_name_with_default(
- children, "expansion", 1);
-
- list = g_list_append (list, column_info);
- } else if (state->sort_info == NULL &&
- !strcmp (children->name, "grouping")) {
- state->sort_info = e_table_sort_info_new();
- e_table_sort_info_load_from_node(
- state->sort_info, children, state_version);
- }
- }
- g_free(state->columns);
- g_free(state->expansions);
- state->col_count = g_list_length(list);
- state->columns = g_new(int, state->col_count);
- state->expansions = g_new(double, state->col_count);
-
- for (iterator = list, i = 0; iterator; i++) {
- int_and_double *column_info = iterator->data;
-
- state->columns [i] = column_info->column;
- state->expansions [i] = column_info->expansion;
- g_free (column_info);
- iterator = g_list_next (iterator);
- }
- g_list_free(list);
-}
-
-void
-e_table_state_save_to_file (ETableState *state,
- const char *filename)
-{
- xmlDoc *doc;
- doc = xmlNewDoc("1.0");
- xmlDocSetRootElement(doc, e_table_state_save_to_node(state, NULL));
- xmlSaveFile(filename, doc);
- xmlFreeDoc(doc);
-}
-
-char *
-e_table_state_save_to_string (ETableState *state)
-{
- char *ret_val;
- xmlChar *string;
- int length;
- xmlDoc *doc;
-
- doc = xmlNewDoc("1.0");
- xmlDocSetRootElement(doc, e_table_state_save_to_node(state, NULL));
- xmlDocDumpMemory(doc, &string, &length);
- xmlFreeDoc(doc);
-
- ret_val = g_strdup(string);
- xmlFree(string);
- return ret_val;
-}
-
-xmlNode *
-e_table_state_save_to_node (ETableState *state,
- xmlNode *parent)
-{
- int i;
- xmlNode *node;
-
- if (parent)
- node = xmlNewChild (parent, NULL, "ETableState", NULL);
- else
- node = xmlNewNode (NULL, "ETableState");
-
- e_xml_set_double_prop_by_name(node, "state-version", STATE_VERSION);
-
- for (i = 0; i < state->col_count; i++) {
- int column = state->columns[i];
- double expansion = state->expansions[i];
- xmlNode *new_node;
-
- new_node = xmlNewChild(node, NULL, "column", NULL);
- e_xml_set_integer_prop_by_name (new_node, "source", column);
- if (expansion >= -1)
- e_xml_set_double_prop_by_name(new_node, "expansion", expansion);
- }
-
-
- e_table_sort_info_save_to_node(state->sort_info, node);
-
- return node;
-}
-
-/**
- * e_table_state_duplicate:
- * @state: The ETableState to duplicate
- *
- * This creates a copy of the %ETableState @state
- *
- * Returns: The duplicated %ETableState.
- */
-ETableState *
-e_table_state_duplicate (ETableState *state)
-{
- ETableState *new_state;
- char *copy;
-
- g_return_val_if_fail (state != NULL, NULL);
- g_return_val_if_fail (E_IS_TABLE_STATE (state), NULL);
-
- new_state = e_table_state_new ();
- copy = e_table_state_save_to_string (state);
- e_table_state_load_from_string (new_state, copy);
- g_free (copy);
-
- return new_state;
-}
diff --git a/widgets/table/e-table-state.h b/widgets/table/e-table-state.h
deleted file mode 100644
index 446d560fff..0000000000
--- a/widgets/table/e-table-state.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_STATE_H_
-#define _E_TABLE_STATE_H_
-
-#include <gtk/gtkobject.h>
-#include <gnome-xml/tree.h>
-#include <gal/e-table/e-table-sort-info.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-#define E_TABLE_STATE_TYPE (e_table_state_get_type ())
-#define E_TABLE_STATE(o) (GTK_CHECK_CAST ((o), E_TABLE_STATE_TYPE, ETableState))
-#define E_TABLE_STATE_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_STATE_TYPE, ETableStateClass))
-#define E_IS_TABLE_STATE(o) (GTK_CHECK_TYPE ((o), E_TABLE_STATE_TYPE))
-#define E_IS_TABLE_STATE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_STATE_TYPE))
-
-typedef struct {
- GtkObject base;
-
- ETableSortInfo *sort_info;
- int col_count;
- int *columns;
- double *expansions;
-} ETableState;
-
-typedef struct {
- GtkObjectClass parent_class;
-} ETableStateClass;
-
-GtkType e_table_state_get_type (void);
-ETableState *e_table_state_new (void);
-
-gboolean e_table_state_load_from_file (ETableState *state,
- const char *filename);
-void e_table_state_load_from_string (ETableState *state,
- const char *xml);
-void e_table_state_load_from_node (ETableState *state,
- const xmlNode *node);
-
-void e_table_state_save_to_file (ETableState *state,
- const char *filename);
-char *e_table_state_save_to_string (ETableState *state);
-xmlNode *e_table_state_save_to_node (ETableState *state,
- xmlNode *parent);
-ETableState *e_table_state_duplicate (ETableState *state);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_TABLE_STATE_H_ */
diff --git a/widgets/table/e-table-subset-variable.c b/widgets/table/e-table-subset-variable.c
deleted file mode 100644
index 8124f9b666..0000000000
--- a/widgets/table/e-table-subset-variable.c
+++ /dev/null
@@ -1,227 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * E-table-subset.c: Implements a table that contains a subset of another table.
- *
- * Author:
- * Miguel de Icaza (miguel@gnu.org)
- *
- * (C) 1999 Ximian, Inc.
- */
-#include <config.h>
-#include <stdlib.h>
-#include <string.h>
-#include <gtk/gtksignal.h>
-#include "gal/util/e-util.h"
-#include "e-table-subset-variable.h"
-
-#define ETSSV_CLASS(e) ((ETableSubsetVariableClass *)((GtkObject *)e)->klass)
-
-#define PARENT_TYPE E_TABLE_SUBSET_TYPE
-
-#define INCREMENT_AMOUNT 10
-
-static ETableSubsetClass *etssv_parent_class;
-
-static void
-etssv_add (ETableSubsetVariable *etssv,
- gint row)
-{
- ETableModel *etm = E_TABLE_MODEL(etssv);
- ETableSubset *etss = E_TABLE_SUBSET(etssv);
-
- e_table_model_pre_change(etm);
-
- if (etss->n_map + 1 > etssv->n_vals_allocated){
- etssv->n_vals_allocated += INCREMENT_AMOUNT;
- etss->map_table = g_realloc (etss->map_table, etssv->n_vals_allocated * sizeof(int));
- }
-
- etss->map_table[etss->n_map++] = row;
-
- e_table_model_row_inserted (etm, etss->n_map - 1);
-}
-
-static void
-etssv_add_array (ETableSubsetVariable *etssv,
- const gint *array,
- gint count)
-{
- ETableModel *etm = E_TABLE_MODEL(etssv);
- ETableSubset *etss = E_TABLE_SUBSET(etssv);
- int i;
-
- e_table_model_pre_change(etm);
-
- if (etss->n_map + count > etssv->n_vals_allocated){
- etssv->n_vals_allocated += MAX(INCREMENT_AMOUNT, count);
- etss->map_table = g_realloc (etss->map_table, etssv->n_vals_allocated * sizeof(int));
- }
- for (i = 0; i < count; i++)
- etss->map_table[etss->n_map++] = array[i];
-
- e_table_model_changed (etm);
-}
-
-static void
-etssv_add_all (ETableSubsetVariable *etssv)
-{
- ETableModel *etm = E_TABLE_MODEL(etssv);
- ETableSubset *etss = E_TABLE_SUBSET(etssv);
- int rows;
- int i;
-
- e_table_model_pre_change(etm);
-
- rows = e_table_model_row_count(etss->source);
- if (etss->n_map + rows > etssv->n_vals_allocated){
- etssv->n_vals_allocated += MAX(INCREMENT_AMOUNT, rows);
- etss->map_table = g_realloc (etss->map_table, etssv->n_vals_allocated * sizeof(int));
- }
- for (i = 0; i < rows; i++)
- etss->map_table[etss->n_map++] = i;
-
- e_table_model_changed (etm);
-}
-
-static gboolean
-etssv_remove (ETableSubsetVariable *etssv,
- gint row)
-{
- ETableModel *etm = E_TABLE_MODEL(etssv);
- ETableSubset *etss = E_TABLE_SUBSET(etssv);
- int i;
-
- for (i = 0; i < etss->n_map; i++){
- if (etss->map_table[i] == row) {
- e_table_model_pre_change (etm);
- memmove (etss->map_table + i, etss->map_table + i + 1, (etss->n_map - i - 1) * sizeof(int));
- etss->n_map --;
-
- e_table_model_row_deleted (etm, i);
- return TRUE;
- }
- }
- return FALSE;
-}
-
-static void
-etssv_class_init (GtkObjectClass *object_class)
-{
- ETableSubsetVariableClass *klass = E_TABLE_SUBSET_VARIABLE_CLASS(object_class);
- etssv_parent_class = gtk_type_class (PARENT_TYPE);
-
- klass->add = etssv_add;
- klass->add_array = etssv_add_array;
- klass->add_all = etssv_add_all;
- klass->remove = etssv_remove;
-}
-
-E_MAKE_TYPE(e_table_subset_variable, "ETableSubsetVariable", ETableSubsetVariable, etssv_class_init, NULL, PARENT_TYPE);
-
-ETableModel *
-e_table_subset_variable_construct (ETableSubsetVariable *etssv,
- ETableModel *source)
-{
- if (e_table_subset_construct (E_TABLE_SUBSET(etssv), source, 1) == NULL)
- return NULL;
- E_TABLE_SUBSET(etssv)->n_map = 0;
-
- return E_TABLE_MODEL (etssv);
-}
-
-ETableModel *
-e_table_subset_variable_new (ETableModel *source)
-{
- ETableSubsetVariable *etssv = gtk_type_new (E_TABLE_SUBSET_VARIABLE_TYPE);
-
- if (e_table_subset_variable_construct (etssv, source) == NULL){
- gtk_object_unref (GTK_OBJECT (etssv));
- return NULL;
- }
-
- return (ETableModel *) etssv;
-}
-
-void
-e_table_subset_variable_add (ETableSubsetVariable *etssv,
- gint row)
-{
- g_return_if_fail (etssv != NULL);
- g_return_if_fail (E_IS_TABLE_SUBSET_VARIABLE(etssv));
-
- if (ETSSV_CLASS(etssv)->add)
- ETSSV_CLASS (etssv)->add (etssv, row);
-}
-
-void
-e_table_subset_variable_add_array (ETableSubsetVariable *etssv,
- const gint *array,
- gint count)
-{
- g_return_if_fail (etssv != NULL);
- g_return_if_fail (E_IS_TABLE_SUBSET_VARIABLE(etssv));
-
- if (ETSSV_CLASS(etssv)->add_array)
- ETSSV_CLASS (etssv)->add_array (etssv, array, count);
-}
-
-void
-e_table_subset_variable_add_all (ETableSubsetVariable *etssv)
-{
- g_return_if_fail (etssv != NULL);
- g_return_if_fail (E_IS_TABLE_SUBSET_VARIABLE(etssv));
-
- if (ETSSV_CLASS(etssv)->add_all)
- ETSSV_CLASS (etssv)->add_all (etssv);
-}
-
-gboolean
-e_table_subset_variable_remove (ETableSubsetVariable *etssv,
- gint row)
-{
- g_return_val_if_fail (etssv != NULL, FALSE);
- g_return_val_if_fail (E_IS_TABLE_SUBSET_VARIABLE(etssv), FALSE);
-
- if (ETSSV_CLASS(etssv)->remove)
- return ETSSV_CLASS (etssv)->remove (etssv, row);
- else
- return FALSE;
-}
-
-void
-e_table_subset_variable_increment (ETableSubsetVariable *etssv,
- gint position,
- gint amount)
-{
- int i;
- ETableSubset *etss = E_TABLE_SUBSET(etssv);
- for (i = 0; i < etss->n_map; i++) {
- if (etss->map_table[i] >= position)
- etss->map_table[i] += amount;
- }
-}
-
-void
-e_table_subset_variable_decrement (ETableSubsetVariable *etssv,
- gint position,
- gint amount)
-{
- int i;
- ETableSubset *etss = E_TABLE_SUBSET(etssv);
- for (i = 0; i < etss->n_map; i++) {
- if (etss->map_table[i] >= position)
- etss->map_table[i] -= amount;
- }
-}
-
-void
-e_table_subset_variable_set_allocation (ETableSubsetVariable *etssv,
- gint total)
-{
- ETableSubset *etss = E_TABLE_SUBSET(etssv);
- if (total <= 0)
- total = 1;
- if (total > etss->n_map){
- etss->map_table = g_realloc (etss->map_table, total * sizeof(int));
- }
-}
diff --git a/widgets/table/e-table-subset-variable.h b/widgets/table/e-table-subset-variable.h
deleted file mode 100644
index f09c612f13..0000000000
--- a/widgets/table/e-table-subset-variable.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_SUBSET_VARIABLE_H_
-#define _E_TABLE_SUBSET_VARIABLE_H_
-
-#include <gtk/gtkobject.h>
-#include <gal/e-table/e-table-subset.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define E_TABLE_SUBSET_VARIABLE_TYPE (e_table_subset_variable_get_type ())
-#define E_TABLE_SUBSET_VARIABLE(o) (GTK_CHECK_CAST ((o), E_TABLE_SUBSET_VARIABLE_TYPE, ETableSubsetVariable))
-#define E_TABLE_SUBSET_VARIABLE_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_SUBSET_VARIABLE_TYPE, ETableSubsetVariableClass))
-#define E_IS_TABLE_SUBSET_VARIABLE(o) (GTK_CHECK_TYPE ((o), E_TABLE_SUBSET_VARIABLE_TYPE))
-#define E_IS_TABLE_SUBSET_VARIABLE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_SUBSET_VARIABLE_TYPE))
-
-typedef struct {
- ETableSubset base;
-
- int n_vals_allocated;
-} ETableSubsetVariable;
-
-typedef struct {
- ETableSubsetClass parent_class;
-
- void (*add) (ETableSubsetVariable *ets,
- gint row);
- void (*add_array) (ETableSubsetVariable *ets,
- const gint *array,
- gint count);
- void (*add_all) (ETableSubsetVariable *ets);
- gboolean (*remove) (ETableSubsetVariable *ets,
- gint row);
-} ETableSubsetVariableClass;
-
-GtkType e_table_subset_variable_get_type (void);
-ETableModel *e_table_subset_variable_new (ETableModel *etm);
-ETableModel *e_table_subset_variable_construct (ETableSubsetVariable *etssv,
- ETableModel *source);
-void e_table_subset_variable_add (ETableSubsetVariable *ets,
- gint row);
-void e_table_subset_variable_add_array (ETableSubsetVariable *ets,
- const gint *array,
- gint count);
-void e_table_subset_variable_add_all (ETableSubsetVariable *ets);
-gboolean e_table_subset_variable_remove (ETableSubsetVariable *ets,
- gint row);
-void e_table_subset_variable_increment (ETableSubsetVariable *ets,
- gint position,
- gint amount);
-void e_table_subset_variable_decrement (ETableSubsetVariable *ets,
- gint position,
- gint amount);
-void e_table_subset_variable_set_allocation (ETableSubsetVariable *ets,
- gint total);
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* _E_TABLE_SUBSET_VARIABLE_H_ */
-
diff --git a/widgets/table/e-table-subset.c b/widgets/table/e-table-subset.c
deleted file mode 100644
index 4edb093d26..0000000000
--- a/widgets/table/e-table-subset.c
+++ /dev/null
@@ -1,390 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * E-table-subset.c: Implements a table that contains a subset of another table.
- *
- * Author:
- * Miguel de Icaza (miguel@gnu.org)
- *
- * (C) 1999 Ximian, Inc.
- */
-#include <config.h>
-#include <stdlib.h>
-#include <gtk/gtksignal.h>
-#include "gal/util/e-util.h"
-#include "e-table-subset.h"
-
-static void etss_proxy_model_pre_change_real (ETableSubset *etss, ETableModel *etm);
-static void etss_proxy_model_changed_real (ETableSubset *etss, ETableModel *etm);
-static void etss_proxy_model_row_changed_real (ETableSubset *etss, ETableModel *etm, int row);
-static void etss_proxy_model_cell_changed_real (ETableSubset *etss, ETableModel *etm, int col, int row);
-
-#define PARENT_TYPE E_TABLE_MODEL_TYPE
-#define d(x)
-
-static ETableModelClass *etss_parent_class;
-
-#define ETSS_CLASS(object) (E_TABLE_SUBSET_CLASS(GTK_OBJECT(object)->klass))
-
-static void
-etss_destroy (GtkObject *object)
-{
- ETableSubset *etss = E_TABLE_SUBSET (object);
-
- if (etss->source) {
- gtk_signal_disconnect (GTK_OBJECT (etss->source),
- etss->table_model_pre_change_id);
- gtk_signal_disconnect (GTK_OBJECT (etss->source),
- etss->table_model_changed_id);
- gtk_signal_disconnect (GTK_OBJECT (etss->source),
- etss->table_model_row_changed_id);
- gtk_signal_disconnect (GTK_OBJECT (etss->source),
- etss->table_model_cell_changed_id);
- gtk_signal_disconnect (GTK_OBJECT (etss->source),
- etss->table_model_rows_inserted_id);
- gtk_signal_disconnect (GTK_OBJECT (etss->source),
- etss->table_model_rows_deleted_id);
-
- gtk_object_unref (GTK_OBJECT (etss->source));
- etss->source = NULL;
-
- etss->table_model_changed_id = 0;
- etss->table_model_row_changed_id = 0;
- etss->table_model_cell_changed_id = 0;
- etss->table_model_rows_inserted_id = 0;
- etss->table_model_rows_deleted_id = 0;
- }
-
- g_free (etss->map_table);
-
- GTK_OBJECT_CLASS (etss_parent_class)->destroy (object);
-}
-
-static int
-etss_column_count (ETableModel *etm)
-{
- ETableSubset *etss = (ETableSubset *)etm;
-
- return e_table_model_column_count (etss->source);
-}
-
-static int
-etss_row_count (ETableModel *etm)
-{
- ETableSubset *etss = (ETableSubset *)etm;
-
- return etss->n_map;
-}
-
-static void *
-etss_value_at (ETableModel *etm, int col, int row)
-{
- ETableSubset *etss = (ETableSubset *)etm;
-
- etss->last_access = row;
- d(g_print("g) Setting last_access to %d\n", row));
- return e_table_model_value_at (etss->source, col, etss->map_table [row]);
-}
-
-static void
-etss_set_value_at (ETableModel *etm, int col, int row, const void *val)
-{
- ETableSubset *etss = (ETableSubset *)etm;
-
- etss->last_access = row;
- d(g_print("h) Setting last_access to %d\n", row));
- e_table_model_set_value_at (etss->source, col, etss->map_table [row], val);
-}
-
-static gboolean
-etss_is_cell_editable (ETableModel *etm, int col, int row)
-{
- ETableSubset *etss = (ETableSubset *)etm;
-
- return e_table_model_is_cell_editable (etss->source, col, etss->map_table [row]);
-}
-
-static void
-etss_append_row (ETableModel *etm, ETableModel *source, int row)
-{
- ETableSubset *etss = (ETableSubset *)etm;
- e_table_model_append_row (etss->source, source, row);
-}
-
-static void *
-etss_duplicate_value (ETableModel *etm, int col, const void *value)
-{
- ETableSubset *etss = (ETableSubset *)etm;
-
- return e_table_model_duplicate_value (etss->source, col, value);
-}
-
-static void
-etss_free_value (ETableModel *etm, int col, void *value)
-{
- ETableSubset *etss = (ETableSubset *)etm;
-
- e_table_model_free_value (etss->source, col, value);
-}
-
-static void *
-etss_initialize_value (ETableModel *etm, int col)
-{
- ETableSubset *etss = (ETableSubset *)etm;
-
- return e_table_model_initialize_value (etss->source, col);
-}
-
-static gboolean
-etss_value_is_empty (ETableModel *etm, int col, const void *value)
-{
- ETableSubset *etss = (ETableSubset *)etm;
-
- return e_table_model_value_is_empty (etss->source, col, value);
-}
-
-static char *
-etss_value_to_string (ETableModel *etm, int col, const void *value)
-{
- ETableSubset *etss = (ETableSubset *)etm;
-
- return e_table_model_value_to_string (etss->source, col, value);
-}
-
-static void
-etss_class_init (GtkObjectClass *object_class)
-{
- ETableSubsetClass *klass = (ETableSubsetClass *) object_class;
- ETableModelClass *table_class = (ETableModelClass *) object_class;
-
- etss_parent_class = gtk_type_class (PARENT_TYPE);
-
- object_class->destroy = etss_destroy;
-
- table_class->column_count = etss_column_count;
- table_class->row_count = etss_row_count;
- table_class->value_at = etss_value_at;
- table_class->set_value_at = etss_set_value_at;
- table_class->is_cell_editable = etss_is_cell_editable;
- table_class->append_row = etss_append_row;
- table_class->duplicate_value = etss_duplicate_value;
- table_class->free_value = etss_free_value;
- table_class->initialize_value = etss_initialize_value;
- table_class->value_is_empty = etss_value_is_empty;
- table_class->value_to_string = etss_value_to_string;
-
- klass->proxy_model_pre_change = etss_proxy_model_pre_change_real;
- klass->proxy_model_changed = etss_proxy_model_changed_real;
- klass->proxy_model_row_changed = etss_proxy_model_row_changed_real;
- klass->proxy_model_cell_changed = etss_proxy_model_cell_changed_real;
- klass->proxy_model_rows_inserted = NULL;
- klass->proxy_model_rows_deleted = NULL;
-}
-
-static void
-etss_init (ETableSubset *etss)
-{
- etss->last_access = 0;
-}
-
-E_MAKE_TYPE(e_table_subset, "ETableSubset", ETableSubset, etss_class_init, etss_init, PARENT_TYPE);
-
-static void
-etss_proxy_model_pre_change_real (ETableSubset *etss, ETableModel *etm)
-{
- e_table_model_pre_change (E_TABLE_MODEL (etss));
-}
-
-static void
-etss_proxy_model_changed_real (ETableSubset *etss, ETableModel *etm)
-{
- e_table_model_changed (E_TABLE_MODEL (etss));
-}
-
-static void
-etss_proxy_model_row_changed_real (ETableSubset *etss, ETableModel *etm, int row)
-{
- int limit;
- const int n = etss->n_map;
- const int * const map_table = etss->map_table;
- int i;
-
- limit = MIN(n, etss->last_access + 10);
- for (i = etss->last_access; i < limit; i++) {
- if (map_table [i] == row){
- e_table_model_row_changed (E_TABLE_MODEL (etss), i);
- d(g_print("a) Found %d from %d\n", i, etss->last_access));
- etss->last_access = i;
- return;
- }
- }
-
- limit = MAX(0, etss->last_access - 10);
- for (i = etss->last_access - 1; i >= limit; i--) {
- if (map_table [i] == row){
- e_table_model_row_changed (E_TABLE_MODEL (etss), i);
- d(g_print("b) Found %d from %d\n", i, etss->last_access));
- etss->last_access = i;
- return;
- }
- }
-
- for (i = 0; i < n; i++){
- if (map_table [i] == row){
- e_table_model_row_changed (E_TABLE_MODEL (etss), i);
- d(g_print("c) Found %d from %d\n", i, etss->last_access));
- etss->last_access = i;
- return;
- }
- }
-}
-
-static void
-etss_proxy_model_cell_changed_real (ETableSubset *etss, ETableModel *etm, int col, int row)
-{
- int limit;
- const int n = etss->n_map;
- const int * const map_table = etss->map_table;
- int i;
-
- limit = MIN(n, etss->last_access + 10);
- for (i = etss->last_access; i < limit; i++) {
- if (map_table [i] == row){
- e_table_model_cell_changed (E_TABLE_MODEL (etss), col, i);
- d(g_print("d) Found %d from %d\n", i, etss->last_access));
- etss->last_access = i;
- return;
- }
- }
-
- limit = MAX(0, etss->last_access - 10);
- for (i = etss->last_access - 1; i >= limit; i--) {
- if (map_table [i] == row){
- e_table_model_cell_changed (E_TABLE_MODEL (etss), col, i);
- d(g_print("e) Found %d from %d\n", i, etss->last_access));
- etss->last_access = i;
- return;
- }
- }
-
- for (i = 0; i < n; i++){
- if (map_table [i] == row){
- e_table_model_cell_changed (E_TABLE_MODEL (etss), col, i);
- d(g_print("f) Found %d from %d\n", i, etss->last_access));
- etss->last_access = i;
- return;
- }
- }
-}
-
-static void
-etss_proxy_model_pre_change (ETableModel *etm, ETableSubset *etss)
-{
- if (ETSS_CLASS(etss)->proxy_model_pre_change)
- (ETSS_CLASS(etss)->proxy_model_pre_change) (etss, etm);
-}
-
-static void
-etss_proxy_model_changed (ETableModel *etm, ETableSubset *etss)
-{
- if (ETSS_CLASS(etss)->proxy_model_changed)
- (ETSS_CLASS(etss)->proxy_model_changed) (etss, etm);
-}
-
-static void
-etss_proxy_model_row_changed (ETableModel *etm, int row, ETableSubset *etss)
-{
- if (ETSS_CLASS(etss)->proxy_model_row_changed)
- (ETSS_CLASS(etss)->proxy_model_row_changed) (etss, etm, row);
-}
-
-static void
-etss_proxy_model_cell_changed (ETableModel *etm, int row, int col, ETableSubset *etss)
-{
- if (ETSS_CLASS(etss)->proxy_model_cell_changed)
- (ETSS_CLASS(etss)->proxy_model_cell_changed) (etss, etm, col, row);
-}
-
-static void
-etss_proxy_model_rows_inserted (ETableModel *etm, int row, int col, ETableSubset *etss)
-{
- if (ETSS_CLASS(etss)->proxy_model_rows_inserted)
- (ETSS_CLASS(etss)->proxy_model_rows_inserted) (etss, etm, row, col);
-}
-
-static void
-etss_proxy_model_rows_deleted (ETableModel *etm, int row, int col, ETableSubset *etss)
-{
- if (ETSS_CLASS(etss)->proxy_model_rows_deleted)
- (ETSS_CLASS(etss)->proxy_model_rows_deleted) (etss, etm, row, col);
-}
-
-ETableModel *
-e_table_subset_construct (ETableSubset *etss, ETableModel *source, int nvals)
-{
- unsigned int *buffer;
- int i;
-
- if (nvals) {
- buffer = (unsigned int *) g_malloc (sizeof (unsigned int) * nvals);
- if (buffer == NULL)
- return NULL;
- } else
- buffer = NULL;
- etss->map_table = buffer;
- etss->n_map = nvals;
- etss->source = source;
- gtk_object_ref (GTK_OBJECT (source));
-
- /* Init */
- for (i = 0; i < nvals; i++)
- etss->map_table [i] = i;
-
- etss->table_model_pre_change_id = gtk_signal_connect (GTK_OBJECT (source), "model_pre_change",
- GTK_SIGNAL_FUNC (etss_proxy_model_pre_change), etss);
- etss->table_model_changed_id = gtk_signal_connect (GTK_OBJECT (source), "model_changed",
- GTK_SIGNAL_FUNC (etss_proxy_model_changed), etss);
- etss->table_model_row_changed_id = gtk_signal_connect (GTK_OBJECT (source), "model_row_changed",
- GTK_SIGNAL_FUNC (etss_proxy_model_row_changed), etss);
- etss->table_model_cell_changed_id = gtk_signal_connect (GTK_OBJECT (source), "model_cell_changed",
- GTK_SIGNAL_FUNC (etss_proxy_model_cell_changed), etss);
- etss->table_model_rows_inserted_id = gtk_signal_connect (GTK_OBJECT (source), "model_rows_inserted",
- GTK_SIGNAL_FUNC (etss_proxy_model_rows_inserted), etss);
- etss->table_model_rows_deleted_id = gtk_signal_connect (GTK_OBJECT (source), "model_rows_deleted",
- GTK_SIGNAL_FUNC (etss_proxy_model_rows_deleted), etss);
-
- return E_TABLE_MODEL (etss);
-}
-
-ETableModel *
-e_table_subset_new (ETableModel *source, const int nvals)
-{
- ETableSubset *etss = gtk_type_new (E_TABLE_SUBSET_TYPE);
-
- if (e_table_subset_construct (etss, source, nvals) == NULL){
- gtk_object_unref (GTK_OBJECT (etss));
- return NULL;
- }
-
- return (ETableModel *) etss;
-}
-
-ETableModel *
-e_table_subset_get_toplevel (ETableSubset *table)
-{
- g_return_val_if_fail (table != NULL, NULL);
- g_return_val_if_fail (E_IS_TABLE_SUBSET (table), NULL);
-
- if (E_IS_TABLE_SUBSET (table->source))
- return e_table_subset_get_toplevel (E_TABLE_SUBSET (table->source));
- else
- return table->source;
-}
-
-void
-e_table_subset_print_debugging (ETableSubset *table_model)
-{
- int i;
- for (i = 0; i < table_model->n_map; i++) {
- g_print("%8d\n", table_model->map_table[i]);
- }
-}
diff --git a/widgets/table/e-table-subset.h b/widgets/table/e-table-subset.h
deleted file mode 100644
index cd26fbb203..0000000000
--- a/widgets/table/e-table-subset.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_SUBSET_H_
-#define _E_TABLE_SUBSET_H_
-
-#include <gtk/gtkobject.h>
-#include <gal/e-table/e-table-model.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define E_TABLE_SUBSET_TYPE (e_table_subset_get_type ())
-#define E_TABLE_SUBSET(o) (GTK_CHECK_CAST ((o), E_TABLE_SUBSET_TYPE, ETableSubset))
-#define E_TABLE_SUBSET_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_SUBSET_TYPE, ETableSubsetClass))
-#define E_IS_TABLE_SUBSET(o) (GTK_CHECK_TYPE ((o), E_TABLE_SUBSET_TYPE))
-#define E_IS_TABLE_SUBSET_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_SUBSET_TYPE))
-
-typedef struct {
- ETableModel base;
-
- ETableModel *source;
- int n_map;
- int *map_table;
-
- int last_access;
-
- int table_model_pre_change_id;
- int table_model_changed_id;
- int table_model_row_changed_id;
- int table_model_cell_changed_id;
- int table_model_rows_inserted_id;
- int table_model_rows_deleted_id;
-} ETableSubset;
-
-typedef struct {
- ETableModelClass parent_class;
-
- void (*proxy_model_pre_change) (ETableSubset *etss, ETableModel *etm);
- void (*proxy_model_changed) (ETableSubset *etss, ETableModel *etm);
- void (*proxy_model_row_changed) (ETableSubset *etss, ETableModel *etm, int row);
- void (*proxy_model_cell_changed) (ETableSubset *etss, ETableModel *etm, int col, int row);
- void (*proxy_model_rows_inserted) (ETableSubset *etss, ETableModel *etm, int row, int count);
- void (*proxy_model_rows_deleted) (ETableSubset *etss, ETableModel *etm, int row, int count);
-} ETableSubsetClass;
-
-GtkType e_table_subset_get_type (void);
-ETableModel *e_table_subset_new (ETableModel *etm,
- int n_vals);
-ETableModel *e_table_subset_construct (ETableSubset *ets,
- ETableModel *source,
- int nvals);
-
-ETableModel *e_table_subset_get_toplevel (ETableSubset *table_model);
-
-void e_table_subset_print_debugging (ETableSubset *table_model);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_TABLE_SUBSET_H_ */
-
diff --git a/widgets/table/e-table-tooltip.h b/widgets/table/e-table-tooltip.h
deleted file mode 100644
index 259d6398db..0000000000
--- a/widgets/table/e-table-tooltip.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_TOOLTIP_H_
-#define _E_TABLE_TOOLTIP_H_
-
-#include <libgnomeui/gnome-canvas.h>
-
-BEGIN_GNOME_DECLS
-
-typedef struct {
- gint timer;
- int col, row;
- int row_height;
- int x, y;
- int cx, cy;
- GdkColor *foreground;
- GdkColor *background;
- GnomeCanvasItem *eti;
-} ETableTooltip;
-
-END_GNOME_DECLS
-
-#endif
diff --git a/widgets/table/e-table-tree.h b/widgets/table/e-table-tree.h
deleted file mode 100644
index ab0378473a..0000000000
--- a/widgets/table/e-table-tree.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef _E_TABLE_TREE_H_
-#define _E_TABLE_TREE_H_
-
-BEGIN_GNOME_DECLS
-
-typedef struct {
- char *title;
-
- union {
- ETableModel *table;
- GList *children;
- } u;
-
- guint expanded :1;
- guint is_leaf :1;
-} ETableGroup;
-
-ETableGroup *e_table_group_new (const char *title, ETableModel *table);
-ETableGroup *e_table_group_new_leaf (const char *title);
-
-END_GNOME_DECLS
-
-#endif /* _E_TABLE_TREE_H_ */
diff --git a/widgets/table/e-table-utils.c b/widgets/table/e-table-utils.c
deleted file mode 100644
index 9c9aea6911..0000000000
--- a/widgets/table/e-table-utils.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-table.utils.c: Utilities for ETable.
- *
- * Author:
- * Chris Lahey <clahey@ximian.com>
- *
- * Copyright 2001, Ximian, Inc
- */
-
-#include <config.h>
-#include "gal/util/e-i18n.h"
-#include "e-table-utils.h"
-#include "e-table-header-utils.h"
-
-ETableHeader *
-e_table_state_to_header (GtkWidget *widget, ETableHeader *full_header, ETableState *state)
-{
- ETableHeader *nh;
- const int max_cols = e_table_header_count (full_header);
- int column;
-
- g_return_val_if_fail (widget, NULL);
- g_return_val_if_fail (full_header, NULL);
- g_return_val_if_fail (state, NULL);
-
- nh = e_table_header_new ();
-
- gtk_object_set(GTK_OBJECT(nh),
- "width_extras", e_table_header_width_extras(widget->style),
- NULL);
-
- for (column = 0; column < state->col_count; column++) {
- int col;
- double expansion;
- ETableCol *table_col;
-
- col = state->columns[column];
- expansion = state->expansions[column];
-
- if (col >= max_cols)
- continue;
-
- table_col = e_table_header_get_column (full_header, col);
-
- if (expansion >= -1)
- table_col->expansion = expansion;
-
- e_table_header_add_column (nh, table_col, -1);
- }
-
- return nh;
-}
-
-static ETableCol *
-et_col_spec_to_col (ETableColumnSpecification *col_spec,
- ETableExtras *ete)
-{
- ETableCol *col = NULL;
- ECell *cell;
- GCompareFunc compare;
-
- cell = e_table_extras_get_cell(ete, col_spec->cell);
- compare = e_table_extras_get_compare(ete, col_spec->compare);
-
- if (cell && compare) {
- if (col_spec->pixbuf && *col_spec->pixbuf) {
- GdkPixbuf *pixbuf;
-
- pixbuf = e_table_extras_get_pixbuf(
- ete, col_spec->pixbuf);
- if (pixbuf) {
- col = e_table_col_new_with_pixbuf (
- col_spec->model_col, gettext (col_spec->title),
- pixbuf, col_spec->expansion,
- col_spec->minimum_width,
- cell, compare, col_spec->resizable);
- }
- }
- if (col == NULL && col_spec->title && *col_spec->title) {
- col = e_table_col_new (
- col_spec->model_col, gettext (col_spec->title),
- col_spec->expansion, col_spec->minimum_width,
- cell, compare, col_spec->resizable);
- }
- }
- return col;
-}
-
-ETableHeader *
-e_table_spec_to_full_header (ETableSpecification *spec,
- ETableExtras *ete)
-{
- ETableHeader *nh;
- int column;
-
- g_return_val_if_fail (spec, NULL);
- g_return_val_if_fail (ete, NULL);
-
- nh = e_table_header_new ();
-
- for (column = 0; spec->columns[column]; column++) {
- ETableCol *col = et_col_spec_to_col (
- spec->columns[column], ete);
-
- if (col)
- e_table_header_add_column (nh, col, -1);
- }
-
- return nh;
-}
diff --git a/widgets/table/e-table-utils.h b/widgets/table/e-table-utils.h
deleted file mode 100644
index d78f1a5da2..0000000000
--- a/widgets/table/e-table-utils.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_UTILS_H_
-#define _E_TABLE_UTILS_H_
-
-#include <gal/e-table/e-table-header.h>
-#include <gal/e-table/e-table-state.h>
-#include <gal/e-table/e-table-specification.h>
-#include <gal/e-table/e-table-extras.h>
-
-BEGIN_GNOME_DECLS
-
-ETableHeader *
-e_table_state_to_header (GtkWidget *widget, ETableHeader *full_header, ETableState *state);
-
-ETableHeader *
-e_table_spec_to_full_header (ETableSpecification *spec,
- ETableExtras *ete);
-
-END_GNOME_DECLS
-
-#endif /* _E_TABLE_UTILS_H_ */
-
diff --git a/widgets/table/e-table.c b/widgets/table/e-table.c
deleted file mode 100644
index 2112b2ee2d..0000000000
--- a/widgets/table/e-table.c
+++ /dev/null
@@ -1,2293 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * E-table.c: A graphical view of a Table.
- *
- * Author:
- * Miguel de Icaza (miguel@ximian.com)
- * Chris Lahey <clahey@ximian.com>
- *
- * Copyright 1999, 2000, 2001, Ximian, Inc
- */
-#include <config.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdio.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtksignal.h>
-#include <libgnomeui/gnome-canvas.h>
-#include <libgnomeui/gnome-canvas-rect-ellipse.h>
-
-#include "gal/util/e-i18n.h"
-#include "gal/util/e-util.h"
-#include "gal/widgets/e-canvas.h"
-#include "gal/widgets/e-canvas-vbox.h"
-#include "gal/widgets/e-unicode.h"
-#include "e-table.h"
-#include "e-table-header-item.h"
-#include "e-table-header-utils.h"
-#include "e-table-subset.h"
-#include "e-table-item.h"
-#include "e-table-group.h"
-#include "e-table-group-leaf.h"
-#include "e-table-click-to-add.h"
-#include "e-table-specification.h"
-#include "e-table-state.h"
-#include "e-table-column-specification.h"
-
-#include "e-table-utils.h"
-
-#define COLUMN_HEADER_HEIGHT 16
-
-#define PARENT_TYPE gtk_table_get_type ()
-
-static GtkObjectClass *e_table_parent_class;
-
-enum {
- CURSOR_CHANGE,
- CURSOR_ACTIVATED,
- SELECTION_CHANGE,
- DOUBLE_CLICK,
- RIGHT_CLICK,
- CLICK,
- KEY_PRESS,
-
- TABLE_DRAG_BEGIN,
- TABLE_DRAG_END,
- TABLE_DRAG_DATA_GET,
- TABLE_DRAG_DATA_DELETE,
-
- TABLE_DRAG_LEAVE,
- TABLE_DRAG_MOTION,
- TABLE_DRAG_DROP,
- TABLE_DRAG_DATA_RECEIVED,
-
- LAST_SIGNAL
-};
-
-enum {
- ARG_0,
- ARG_LENGTH_THRESHOLD,
- ARG_MODEL,
-};
-
-static gint et_signals [LAST_SIGNAL] = { 0, };
-
-static void e_table_fill_table (ETable *e_table, ETableModel *model);
-static gboolean changed_idle (gpointer data);
-
-static void et_grab_focus (GtkWidget *widget);
-
-static void et_drag_begin (GtkWidget *widget,
- GdkDragContext *context,
- ETable *et);
-static void et_drag_end (GtkWidget *widget,
- GdkDragContext *context,
- ETable *et);
-static void et_drag_data_get(GtkWidget *widget,
- GdkDragContext *context,
- GtkSelectionData *selection_data,
- guint info,
- guint time,
- ETable *et);
-static void et_drag_data_delete(GtkWidget *widget,
- GdkDragContext *context,
- ETable *et);
-
-static void et_drag_leave(GtkWidget *widget,
- GdkDragContext *context,
- guint time,
- ETable *et);
-static gboolean et_drag_motion(GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time,
- ETable *et);
-static gboolean et_drag_drop(GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time,
- ETable *et);
-static void et_drag_data_received(GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- GtkSelectionData *selection_data,
- guint info,
- guint time,
- ETable *et);
-static gint e_table_drag_source_event_cb (GtkWidget *widget,
- GdkEvent *event,
- ETable *table);
-
-static gint et_focus (GtkContainer *container, GtkDirectionType direction);
-
-static void
-et_disconnect_model (ETable *et)
-{
- if (et->model == NULL)
- return;
-
- if (et->table_model_change_id != 0)
- gtk_signal_disconnect (GTK_OBJECT (et->model),
- et->table_model_change_id);
- if (et->table_row_change_id != 0)
- gtk_signal_disconnect (GTK_OBJECT (et->model),
- et->table_row_change_id);
- if (et->table_cell_change_id != 0)
- gtk_signal_disconnect (GTK_OBJECT (et->model),
- et->table_cell_change_id);
- if (et->table_rows_inserted_id != 0)
- gtk_signal_disconnect (GTK_OBJECT (et->model),
- et->table_rows_inserted_id);
- if (et->table_rows_deleted_id != 0)
- gtk_signal_disconnect (GTK_OBJECT (et->model),
- et->table_rows_deleted_id);
-
- et->table_model_change_id = 0;
- et->table_row_change_id = 0;
- et->table_cell_change_id = 0;
- et->table_rows_inserted_id = 0;
- et->table_rows_deleted_id = 0;
-}
-
-static void
-et_destroy (GtkObject *object)
-{
- ETable *et = E_TABLE (object);
-
- et_disconnect_model (et);
-
- if (et->group_info_change_id)
- gtk_signal_disconnect (GTK_OBJECT (et->sort_info),
- et->group_info_change_id);
-
- if (et->reflow_idle_id)
- g_source_remove(et->reflow_idle_id);
- et->reflow_idle_id = 0;
-
- gtk_object_unref (GTK_OBJECT (et->model));
- gtk_object_unref (GTK_OBJECT (et->full_header));
- gtk_object_unref (GTK_OBJECT (et->header));
- gtk_object_unref (GTK_OBJECT (et->sort_info));
- gtk_object_unref (GTK_OBJECT (et->sorter));
- gtk_object_unref (GTK_OBJECT (et->selection));
- if (et->spec)
- gtk_object_unref (GTK_OBJECT (et->spec));
-
- if (et->header_canvas != NULL)
- gtk_widget_destroy (GTK_WIDGET (et->header_canvas));
-
- if (et->site != NULL)
- e_table_drag_source_unset (et);
-
- gtk_widget_destroy (GTK_WIDGET (et->table_canvas));
-
- if (et->rebuild_idle_id) {
- g_source_remove (et->rebuild_idle_id);
- et->rebuild_idle_id = 0;
- }
-
- g_free(et->click_to_add_message);
-
- (*e_table_parent_class->destroy)(object);
-}
-
-static void
-e_table_init (GtkObject *object)
-{
- ETable *e_table = E_TABLE (object);
- GtkTable *gtk_table = GTK_TABLE (object);
-
- GTK_WIDGET_SET_FLAGS (e_table, GTK_CAN_FOCUS);
-
- gtk_table->homogeneous = FALSE;
-
- e_table->sort_info = NULL;
- e_table->group_info_change_id = 0;
- e_table->reflow_idle_id = 0;
-
- e_table->alternating_row_colors = 1;
- e_table->horizontal_draw_grid = 1;
- e_table->vertical_draw_grid = 1;
- e_table->draw_focus = 1;
- e_table->cursor_mode = E_CURSOR_SIMPLE;
- e_table->length_threshold = 200;
-
- e_table->need_rebuild = 0;
- e_table->rebuild_idle_id = 0;
-
- e_table->horizontal_scrolling = FALSE;
-
- e_table->click_to_add_message = NULL;
-
- e_table->drag_get_data_row = -1;
- e_table->drag_get_data_col = -1;
- e_table->drop_row = -1;
- e_table->drop_col = -1;
- e_table->site = NULL;
- e_table->drag_source_button_press_event_id = 0;
- e_table->drag_source_motion_notify_event_id = 0;
-
- e_table->sorter = NULL;
- e_table->selection = e_table_selection_model_new();
- e_table->cursor_loc = E_TABLE_CURSOR_LOC_NONE;
- e_table->spec = NULL;
-}
-
-/* Grab_focus handler for the ETable */
-static void
-et_grab_focus (GtkWidget *widget)
-{
- ETable *e_table;
-
- e_table = E_TABLE (widget);
-
- gtk_widget_grab_focus (GTK_WIDGET (e_table->table_canvas));
-}
-
-/* Focus handler for the ETable */
-static gint
-et_focus (GtkContainer *container, GtkDirectionType direction)
-{
- ETable *e_table;
-
- e_table = E_TABLE (container);
-
- if (container->focus_child) {
- gtk_container_set_focus_child (container, NULL);
- return FALSE;
- }
-
- return gtk_container_focus (GTK_CONTAINER (e_table->table_canvas), direction);
-}
-
-static void
-set_header_canvas_width (ETable *e_table)
-{
- double oldwidth, oldheight, width;
-
- if (!(e_table->header_item && e_table->header_canvas && e_table->table_canvas))
- return;
-
- gnome_canvas_get_scroll_region (GNOME_CANVAS (e_table->table_canvas),
- NULL, NULL, &width, NULL);
- gnome_canvas_get_scroll_region (GNOME_CANVAS (e_table->header_canvas),
- NULL, NULL, &oldwidth, &oldheight);
-
- if (oldwidth != width ||
- oldheight != E_TABLE_HEADER_ITEM (e_table->header_item)->height - 1)
- gnome_canvas_set_scroll_region (
- GNOME_CANVAS (e_table->header_canvas),
- 0, 0, width, /* COLUMN_HEADER_HEIGHT - 1 */
- E_TABLE_HEADER_ITEM (e_table->header_item)->height - 1);
-
-}
-
-static void
-header_canvas_size_allocate (GtkWidget *widget, GtkAllocation *alloc, ETable *e_table)
-{
- set_header_canvas_width (e_table);
-
- /* When the header item is created ->height == 0,
- as the font is only created when everything is realized.
- So we set the usize here as well, so that the size of the
- header is correct */
- if (GTK_WIDGET (e_table->header_canvas)->allocation.height !=
- E_TABLE_HEADER_ITEM (e_table->header_item)->height)
- gtk_widget_set_usize (GTK_WIDGET (e_table->header_canvas), -1,
- E_TABLE_HEADER_ITEM (e_table->header_item)->height);
-}
-
-static void
-sort_info_changed (ETableSortInfo *info, ETable *et)
-{
- gboolean will_be_grouped = e_table_sort_info_grouping_get_count(info) > 0;
- if (et->is_grouped || will_be_grouped) {
- et->need_rebuild = TRUE;
- if (!et->rebuild_idle_id)
- et->rebuild_idle_id = g_idle_add_full (20, changed_idle, et, NULL);
- }
-}
-
-static void
-e_table_setup_header (ETable *e_table)
-{
- char *pointer;
- e_table->header_canvas = GNOME_CANVAS (e_canvas_new ());
- GTK_WIDGET_UNSET_FLAGS (e_table->header_canvas, GTK_CAN_FOCUS);
-
- gtk_widget_show (GTK_WIDGET (e_table->header_canvas));
-
- pointer = g_strdup_printf("%p", e_table);
-
- e_table->header_item = gnome_canvas_item_new (
- gnome_canvas_root (e_table->header_canvas),
- e_table_header_item_get_type (),
- "ETableHeader", e_table->header,
- "full_header", e_table->full_header,
- "sort_info", e_table->sort_info,
- "dnd_code", pointer,
- "table", e_table,
- NULL);
-
- g_free(pointer);
-
- gtk_signal_connect (
- GTK_OBJECT (e_table->header_canvas), "size_allocate",
- GTK_SIGNAL_FUNC (header_canvas_size_allocate), e_table);
-
- gtk_widget_set_usize (GTK_WIDGET (e_table->header_canvas), -1,
- E_TABLE_HEADER_ITEM (e_table->header_item)->height);
-}
-
-static gboolean
-table_canvas_reflow_idle (ETable *e_table)
-{
- gdouble height, width;
- gdouble item_height;
- gdouble oldheight, oldwidth;
- GtkAllocation *alloc = &(GTK_WIDGET (e_table->table_canvas)->allocation);
-
- gtk_object_get (GTK_OBJECT (e_table->canvas_vbox),
- "height", &height,
- "width", &width,
- NULL);
- item_height = height;
- height = MAX ((int)height, alloc->height);
- width = MAX((int)width, alloc->width);
- /* I have no idea why this needs to be -1, but it works. */
- gnome_canvas_get_scroll_region (GNOME_CANVAS (e_table->table_canvas),
- NULL, NULL, &oldwidth, &oldheight);
-
- if (oldwidth != width - 1 ||
- oldheight != height - 1) {
- gnome_canvas_set_scroll_region (GNOME_CANVAS (e_table->table_canvas),
- 0, 0, width - 1, height - 1);
- set_header_canvas_width (e_table);
- }
- gtk_object_set (GTK_OBJECT (e_table->white_item),
- "y1", item_height,
- "x2", width,
- "y2", height,
- NULL);
- e_table->reflow_idle_id = 0;
- return FALSE;
-}
-
-static void
-table_canvas_size_allocate (GtkWidget *widget, GtkAllocation *alloc,
- ETable *e_table)
-{
- gdouble width;
- gdouble height;
- gdouble item_height;
-
- width = alloc->width;
- gtk_object_get (GTK_OBJECT (e_table->canvas_vbox),
- "height", &height,
- NULL);
- item_height = height;
- height = MAX ((int)height, alloc->height);
-
- gtk_object_set (GTK_OBJECT (e_table->canvas_vbox),
- "width", width,
- NULL);
- gtk_object_set (GTK_OBJECT (e_table->header),
- "width", width,
- NULL);
- gtk_object_set (GTK_OBJECT (e_table->white_item),
- "y1", item_height + 1,
- "x2", width,
- "y2", height,
- NULL);
- if (e_table->reflow_idle_id)
- g_source_remove(e_table->reflow_idle_id);
- table_canvas_reflow_idle(e_table);
-}
-
-static void
-table_canvas_reflow (GnomeCanvas *canvas, ETable *e_table)
-{
- if (!e_table->reflow_idle_id)
- e_table->reflow_idle_id = g_idle_add_full (400, (GSourceFunc) table_canvas_reflow_idle, e_table, NULL);
-}
-
-static void
-click_to_add_cursor_change (ETableClickToAdd *etcta, int row, int col, ETable *et)
-{
- if (et->cursor_loc == E_TABLE_CURSOR_LOC_TABLE) {
- e_selection_model_clear(E_SELECTION_MODEL (et->selection));
- }
- et->cursor_loc = E_TABLE_CURSOR_LOC_ETCTA;
-}
-
-static void
-group_cursor_change (ETableGroup *etg, int row, ETable *et)
-{
- if (et->cursor_loc == E_TABLE_CURSOR_LOC_ETCTA && et->click_to_add) {
- e_table_click_to_add_commit(E_TABLE_CLICK_TO_ADD(et->click_to_add));
- }
- et->cursor_loc = E_TABLE_CURSOR_LOC_TABLE;
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [CURSOR_CHANGE],
- row);
-}
-
-static void
-group_cursor_activated (ETableGroup *etg, int row, ETable *et)
-{
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [CURSOR_ACTIVATED],
- row);
-}
-
-static void
-group_double_click (ETableGroup *etg, int row, int col, GdkEvent *event, ETable *et)
-{
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [DOUBLE_CLICK],
- row, col, event);
-}
-
-static gint
-group_right_click (ETableGroup *etg, int row, int col, GdkEvent *event, ETable *et)
-{
- int return_val = 0;
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [RIGHT_CLICK],
- row, col, event, &return_val);
- return return_val;
-}
-
-static gint
-group_click (ETableGroup *etg, int row, int col, GdkEvent *event, ETable *et)
-{
- int return_val = 0;
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [CLICK],
- row, col, event, &return_val);
- return return_val;
-}
-
-static gint
-group_key_press (ETableGroup *etg, int row, int col, GdkEvent *event, ETable *et)
-{
- int return_val = 0;
- GdkEventKey *key = (GdkEventKey *) event;
- GdkEventButton click;
- switch (key->keyval) {
- case GDK_Page_Down:
- gtk_adjustment_set_value(
- gtk_layout_get_vadjustment (GTK_LAYOUT (et->table_canvas)),
- CLAMP(gtk_layout_get_vadjustment (GTK_LAYOUT (et->table_canvas))->value +
- (gtk_layout_get_vadjustment (GTK_LAYOUT (et->table_canvas))->page_size - 20),
- 0,
- gtk_layout_get_vadjustment (GTK_LAYOUT (et->table_canvas))->upper -
- gtk_layout_get_vadjustment (GTK_LAYOUT (et->table_canvas))->page_size));
- click.type = GDK_BUTTON_PRESS;
- click.window = GTK_LAYOUT (et->table_canvas)->bin_window;
- click.send_event = key->send_event;
- click.time = key->time;
- click.x = 30;
- click.y = gtk_layout_get_vadjustment (GTK_LAYOUT (et->table_canvas))->page_size - 1;
- click.state = key->state;
- click.button = 1;
- gtk_widget_event(GTK_WIDGET(et->table_canvas),
- (GdkEvent *) &click);
- return_val = 1;
- break;
- case GDK_Page_Up:
- gtk_adjustment_set_value(
- gtk_layout_get_vadjustment (GTK_LAYOUT (et->table_canvas)),
- gtk_layout_get_vadjustment (GTK_LAYOUT (et->table_canvas))->value -
- (gtk_layout_get_vadjustment (GTK_LAYOUT (et->table_canvas))->page_size - 20));
- click.type = GDK_BUTTON_PRESS;
- click.window = GTK_LAYOUT (et->table_canvas)->bin_window;
- click.send_event = key->send_event;
- click.time = key->time;
- click.x = 30;
- click.y = 1;
- click.state = key->state;
- click.button = 1;
- gtk_widget_event(GTK_WIDGET(et->table_canvas),
- (GdkEvent *) &click);
- return_val = 1;
- break;
- default:
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [KEY_PRESS],
- row, col, event, &return_val);
- break;
- }
- return return_val;
-}
-
-static void
-et_table_model_changed (ETableModel *model, ETable *et)
-{
- et->need_rebuild = TRUE;
- if (!et->rebuild_idle_id)
- et->rebuild_idle_id = g_idle_add_full (20, changed_idle, et, NULL);
-}
-
-static void
-et_table_row_changed (ETableModel *table_model, int row, ETable *et)
-{
- if (!et->need_rebuild) {
- if (e_table_group_remove (et->group, row))
- e_table_group_add (et->group, row);
- if (et->horizontal_scrolling)
- e_table_header_update_horizontal(et->header);
- }
-}
-
-static void
-et_table_cell_changed (ETableModel *table_model, int view_col, int row, ETable *et)
-{
- et_table_row_changed (table_model, row, et);
-}
-
-static void
-et_table_rows_inserted (ETableModel *table_model, int row, int count, ETable *et)
-{
- /* This number has already been decremented. */
- int row_count = e_table_model_row_count(table_model);
- if (!et->need_rebuild) {
- int i;
- if (row != row_count - count)
- e_table_group_increment(et->group, row, count);
- for (i = 0; i < count; i++)
- e_table_group_add (et->group, row);
- if (et->horizontal_scrolling)
- e_table_header_update_horizontal(et->header);
- }
-}
-
-static void
-et_table_rows_deleted (ETableModel *table_model, int row, int count, ETable *et)
-{
- int row_count = e_table_model_row_count(table_model);
- if (!et->need_rebuild) {
- int i;
- for (i = 0; i < count; i++)
- e_table_group_remove (et->group, row);
- if (row != row_count)
- e_table_group_decrement(et->group, row, count);
- if (et->horizontal_scrolling)
- e_table_header_update_horizontal(et->header);
- }
-}
-
-static void
-et_build_groups (ETable *et)
-{
- gboolean was_grouped = et->is_grouped;
-
- et->is_grouped = e_table_sort_info_grouping_get_count(et->sort_info) > 0;
-
- et->group = e_table_group_new (GNOME_CANVAS_GROUP (et->canvas_vbox),
- et->full_header,
- et->header,
- et->model,
- et->sort_info,
- 0);
- e_canvas_vbox_add_item(E_CANVAS_VBOX(et->canvas_vbox), GNOME_CANVAS_ITEM(et->group));
- gnome_canvas_item_set(GNOME_CANVAS_ITEM(et->group),
- "alternating_row_colors", et->alternating_row_colors,
- "horizontal_draw_grid", et->horizontal_draw_grid,
- "vertical_draw_grid", et->vertical_draw_grid,
- "drawfocus", et->draw_focus,
- "cursor_mode", et->cursor_mode,
- "length_threshold", et->length_threshold,
- "selection_model", et->selection,
- NULL);
-
- gtk_signal_connect (GTK_OBJECT (et->group), "cursor_change",
- GTK_SIGNAL_FUNC (group_cursor_change), et);
- gtk_signal_connect (GTK_OBJECT (et->group), "cursor_activated",
- GTK_SIGNAL_FUNC (group_cursor_activated), et);
- gtk_signal_connect (GTK_OBJECT (et->group), "double_click",
- GTK_SIGNAL_FUNC (group_double_click), et);
- gtk_signal_connect (GTK_OBJECT (et->group), "right_click",
- GTK_SIGNAL_FUNC (group_right_click), et);
- gtk_signal_connect (GTK_OBJECT (et->group), "click",
- GTK_SIGNAL_FUNC (group_click), et);
- gtk_signal_connect (GTK_OBJECT (et->group), "key_press",
- GTK_SIGNAL_FUNC (group_key_press), et);
-
-
- if (!(et->is_grouped) && was_grouped)
- et_disconnect_model (et);
-
- if (et->is_grouped && (!was_grouped)) {
- et->table_model_change_id = gtk_signal_connect (GTK_OBJECT (et->model), "model_changed",
- GTK_SIGNAL_FUNC (et_table_model_changed), et);
-
- et->table_row_change_id = gtk_signal_connect (GTK_OBJECT (et->model), "model_row_changed",
- GTK_SIGNAL_FUNC (et_table_row_changed), et);
-
- et->table_cell_change_id = gtk_signal_connect (GTK_OBJECT (et->model), "model_cell_changed",
- GTK_SIGNAL_FUNC (et_table_cell_changed), et);
-
- et->table_rows_inserted_id = gtk_signal_connect (GTK_OBJECT (et->model), "model_rows_inserted",
- GTK_SIGNAL_FUNC (et_table_rows_inserted), et);
-
- et->table_rows_deleted_id = gtk_signal_connect (GTK_OBJECT (et->model), "model_rows_deleted",
- GTK_SIGNAL_FUNC (et_table_rows_deleted), et);
-
- }
-
- if (et->is_grouped)
- e_table_fill_table (et, et->model);
-}
-
-static gboolean
-changed_idle (gpointer data)
-{
- ETable *et = E_TABLE (data);
-
- if (et->need_rebuild) {
- gtk_object_destroy (GTK_OBJECT (et->group));
- et_build_groups(et);
- gtk_object_set (GTK_OBJECT (et->canvas_vbox),
- "width", (double) GTK_WIDGET (et->table_canvas)->allocation.width,
- NULL);
-
- if (GTK_WIDGET_REALIZED(et->table_canvas))
- table_canvas_size_allocate (GTK_WIDGET(et->table_canvas), &GTK_WIDGET(et->table_canvas)->allocation, et);
- }
-
- et->need_rebuild = 0;
- et->rebuild_idle_id = 0;
-
- if (et->horizontal_scrolling)
- e_table_header_update_horizontal(et->header);
-
- return FALSE;
-}
-
-static void
-et_canvas_realize (GtkWidget *canvas, ETable *e_table)
-{
- gnome_canvas_item_set(
- e_table->white_item,
- "fill_color_gdk", &GTK_WIDGET(e_table->table_canvas)->style->base[GTK_STATE_NORMAL],
- NULL);
-}
-
-static void
-et_canvas_button_press (GtkWidget *canvas, GdkEvent *event, ETable *e_table)
-{
- if (GTK_WIDGET_HAS_FOCUS(canvas)) {
- GnomeCanvasItem *item = GNOME_CANVAS(canvas)->focused_item;
-
- if (E_IS_TABLE_ITEM(item)) {
- e_table_item_leave_edit(E_TABLE_ITEM(item));
- }
- }
-}
-
-static void
-e_table_setup_table (ETable *e_table, ETableHeader *full_header, ETableHeader *header,
- ETableModel *model)
-{
- e_table->table_canvas = GNOME_CANVAS (e_canvas_new ());
- gtk_signal_connect (
- GTK_OBJECT (e_table->table_canvas), "size_allocate",
- GTK_SIGNAL_FUNC (table_canvas_size_allocate), e_table);
- gtk_signal_connect (
- GTK_OBJECT (e_table->table_canvas), "focus_in_event",
- GTK_SIGNAL_FUNC (gtk_widget_queue_draw), e_table);
- gtk_signal_connect (
- GTK_OBJECT (e_table->table_canvas), "focus_out_event",
- GTK_SIGNAL_FUNC (gtk_widget_queue_draw), e_table);
-
- gtk_signal_connect (
- GTK_OBJECT (e_table), "drag_begin",
- GTK_SIGNAL_FUNC (et_drag_begin), e_table);
- gtk_signal_connect (
- GTK_OBJECT (e_table), "drag_end",
- GTK_SIGNAL_FUNC (et_drag_end), e_table);
- gtk_signal_connect (
- GTK_OBJECT (e_table), "drag_data_get",
- GTK_SIGNAL_FUNC (et_drag_data_get), e_table);
- gtk_signal_connect (
- GTK_OBJECT (e_table), "drag_data_delete",
- GTK_SIGNAL_FUNC (et_drag_data_delete), e_table);
- gtk_signal_connect (
- GTK_OBJECT (e_table), "drag_motion",
- GTK_SIGNAL_FUNC (et_drag_motion), e_table);
- gtk_signal_connect (
- GTK_OBJECT (e_table), "drag_leave",
- GTK_SIGNAL_FUNC (et_drag_leave), e_table);
- gtk_signal_connect (
- GTK_OBJECT (e_table), "drag_drop",
- GTK_SIGNAL_FUNC (et_drag_drop), e_table);
- gtk_signal_connect (
- GTK_OBJECT (e_table), "drag_data_received",
- GTK_SIGNAL_FUNC (et_drag_data_received), e_table);
-
- gtk_signal_connect (GTK_OBJECT(e_table->table_canvas), "reflow",
- GTK_SIGNAL_FUNC (table_canvas_reflow), e_table);
-
- gtk_widget_show (GTK_WIDGET (e_table->table_canvas));
-
-
- e_table->white_item = gnome_canvas_item_new(
- gnome_canvas_root(e_table->table_canvas),
- gnome_canvas_rect_get_type(),
- "x1", (double) 0,
- "y1", (double) 0,
- "x2", (double) 100,
- "y2", (double) 100,
- "fill_color_gdk", &GTK_WIDGET(e_table->table_canvas)->style->base[GTK_STATE_NORMAL],
- NULL);
-
- gtk_signal_connect (
- GTK_OBJECT(e_table->table_canvas), "realize",
- GTK_SIGNAL_FUNC(et_canvas_realize), e_table);
- gtk_signal_connect (
- GTK_OBJECT(e_table->table_canvas), "button_press_event",
- GTK_SIGNAL_FUNC(et_canvas_button_press), e_table);
- e_table->canvas_vbox = gnome_canvas_item_new(
- gnome_canvas_root(e_table->table_canvas),
- e_canvas_vbox_get_type(),
- "spacing", 10.0,
- NULL);
-
- if (e_table->use_click_to_add) {
- e_table->click_to_add = gnome_canvas_item_new (
- GNOME_CANVAS_GROUP(e_table->canvas_vbox),
- e_table_click_to_add_get_type (),
- "header", e_table->header,
- "model", e_table->model,
- "message", e_table->click_to_add_message,
- NULL);
-
- e_canvas_vbox_add_item (
- E_CANVAS_VBOX(e_table->canvas_vbox),
- e_table->click_to_add);
- gtk_signal_connect (
- GTK_OBJECT (e_table->click_to_add), "cursor_change",
- GTK_SIGNAL_FUNC(click_to_add_cursor_change), e_table);
- }
-
- et_build_groups(e_table);
-}
-
-static void
-e_table_fill_table (ETable *e_table, ETableModel *model)
-{
- e_table_group_add_all (e_table->group);
-}
-
-void
-e_table_set_state_object(ETable *e_table, ETableState *state)
-{
- if (e_table->header)
- gtk_object_unref(GTK_OBJECT(e_table->header));
- e_table->header = e_table_state_to_header (GTK_WIDGET(e_table), e_table->full_header, state);
-
- gtk_object_set (GTK_OBJECT (e_table->header),
- "width", (double) (GTK_WIDGET(e_table->table_canvas)->allocation.width),
- NULL);
-
- if (e_table->sort_info) {
- if (e_table->group_info_change_id)
- gtk_signal_disconnect (GTK_OBJECT (e_table->sort_info),
- e_table->group_info_change_id);
- gtk_object_unref(GTK_OBJECT(e_table->sort_info));
- }
- if (state->sort_info) {
- e_table->sort_info = e_table_sort_info_duplicate(state->sort_info);
- e_table->group_info_change_id =
- gtk_signal_connect (GTK_OBJECT (e_table->sort_info),
- "group_info_changed",
- GTK_SIGNAL_FUNC (sort_info_changed),
- e_table);
- }
- else
- e_table->sort_info = NULL;
-
- if (e_table->sorter)
- gtk_object_set(GTK_OBJECT(e_table->sorter),
- "sort_info", e_table->sort_info,
- NULL);
- if (e_table->header_item)
- gtk_object_set(GTK_OBJECT(e_table->header_item),
- "ETableHeader", e_table->header,
- "sort_info", e_table->sort_info,
- NULL);
- if (e_table->click_to_add)
- gtk_object_set(GTK_OBJECT(e_table->click_to_add),
- "header", e_table->header,
- NULL);
-
- e_table->need_rebuild = TRUE;
- if (!e_table->rebuild_idle_id)
- e_table->rebuild_idle_id = g_idle_add_full (20, changed_idle, e_table, NULL);
-}
-
-/**
- * e_table_set_state:
- * @e_table: %ETable object that will be modified
- * @state_str: a string with the XML representation of the ETableState.
- *
- * This routine sets the state (as described by %ETableState) of the
- * %ETable object.
- */
-void
-e_table_set_state (ETable *e_table,
- const gchar *state_str)
-{
- ETableState *state;
-
- g_return_if_fail(e_table != NULL);
- g_return_if_fail(E_IS_TABLE(e_table));
- g_return_if_fail(state_str != NULL);
-
- state = e_table_state_new();
- e_table_state_load_from_string(state, state_str);
-
- if (state->col_count > 0)
- e_table_set_state_object(e_table, state);
-
- gtk_object_unref(GTK_OBJECT(state));
-}
-
-/**
- * e_table_load_state:
- * @e_table: %ETable object that will be modified
- * @filename: name of the file containing the state to be loaded into the %ETable
- *
- * An %ETableState will be loaded form the file pointed by @filename into the
- * @e_table object.
- */
-void
-e_table_load_state (ETable *e_table,
- const gchar *filename)
-{
- ETableState *state;
-
- g_return_if_fail(e_table != NULL);
- g_return_if_fail(E_IS_TABLE(e_table));
- g_return_if_fail(filename != NULL);
-
- state = e_table_state_new();
- e_table_state_load_from_file(state, filename);
-
- if (state->col_count > 0)
- e_table_set_state_object(e_table, state);
-
- gtk_object_unref(GTK_OBJECT(state));
-}
-
-/**
- * e_table_get_state_object:
- * @e_table: %ETable object that will be modified
- *
- * Returns: the %ETableState object that encapsulates the current
- * state of the @e_table object
- */
-ETableState *
-e_table_get_state_object (ETable *e_table)
-{
- ETableState *state;
- int full_col_count;
- int i, j;
-
- state = e_table_state_new();
- state->sort_info = e_table->sort_info;
- gtk_object_ref(GTK_OBJECT(state->sort_info));
-
-
- state->col_count = e_table_header_count (e_table->header);
- full_col_count = e_table_header_count (e_table->full_header);
- state->columns = g_new(int, state->col_count);
- state->expansions = g_new(double, state->col_count);
- for (i = 0; i < state->col_count; i++) {
- ETableCol *col = e_table_header_get_column(e_table->header, i);
- state->columns[i] = -1;
- for (j = 0; j < full_col_count; j++) {
- if (col->col_idx == e_table_header_index(e_table->full_header, j)) {
- state->columns[i] = j;
- break;
- }
- }
- state->expansions[i] = col->expansion;
- }
-
- return state;
-}
-
-gchar *e_table_get_state (ETable *e_table)
-{
- ETableState *state;
- gchar *string;
-
- state = e_table_get_state_object(e_table);
- string = e_table_state_save_to_string(state);
- gtk_object_unref(GTK_OBJECT(state));
- return string;
-}
-
-/**
- * e_table_save_state:
- * @e_table: %ETable object that will be modified
- * @filename: name of the file containing the state to be loaded into the %ETable
- *
- * This routine saves the state of the @e_table object into the file pointed
- * by @filename
- */
-void
-e_table_save_state (ETable *e_table,
- const gchar *filename)
-{
- ETableState *state;
-
- state = e_table_get_state_object(e_table);
- e_table_state_save_to_file(state, filename);
- gtk_object_unref(GTK_OBJECT(state));
-}
-
-static void
-et_selection_model_selection_change (ETableGroup *etg, ETable *et)
-{
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [SELECTION_CHANGE]);
-}
-
-static ETable *
-et_real_construct (ETable *e_table, ETableModel *etm, ETableExtras *ete,
- ETableSpecification *specification, ETableState *state)
-{
- int row = 0;
-
- if (ete)
- gtk_object_ref(GTK_OBJECT(ete));
- else
- ete = e_table_extras_new();
-
- e_table->use_click_to_add = specification->click_to_add;
- e_table->click_to_add_message = e_utf8_from_locale_string (gettext (specification->click_to_add_message));
- e_table->alternating_row_colors = specification->alternating_row_colors;
- e_table->horizontal_draw_grid = specification->horizontal_draw_grid;
- e_table->vertical_draw_grid = specification->vertical_draw_grid;
- e_table->draw_focus = specification->draw_focus;
- e_table->cursor_mode = specification->cursor_mode;
- e_table->full_header = e_table_spec_to_full_header(specification, ete);
-
- gtk_object_set(GTK_OBJECT(e_table->selection),
- "selection_mode", specification->selection_mode,
- "cursor_mode", specification->cursor_mode,
- NULL);
-
- e_table->model = etm;
- gtk_object_ref (GTK_OBJECT (etm));
-
- gtk_widget_push_visual (gdk_rgb_get_visual ());
- gtk_widget_push_colormap (gdk_rgb_get_cmap ());
-
- e_table->header = e_table_state_to_header (GTK_WIDGET(e_table), e_table->full_header, state);
- e_table->horizontal_scrolling = specification->horizontal_scrolling;
-
- e_table->sort_info = state->sort_info;
- gtk_object_ref (GTK_OBJECT (state->sort_info));
-
- e_table->group_info_change_id =
- gtk_signal_connect (GTK_OBJECT (e_table->sort_info), "group_info_changed",
- GTK_SIGNAL_FUNC (sort_info_changed), e_table);
-
-
- gtk_object_set(GTK_OBJECT(e_table->header),
- "sort_info", e_table->sort_info,
- NULL);
-
- e_table->sorter = e_table_sorter_new(etm, e_table->full_header, e_table->sort_info);
-
- gtk_object_set (GTK_OBJECT (e_table->selection),
- "model", etm,
- "sorter", e_table->sorter,
- NULL);
-
- gtk_signal_connect(GTK_OBJECT(e_table->selection), "selection_changed",
- GTK_SIGNAL_FUNC(et_selection_model_selection_change), e_table);
-
- if (!specification->no_headers) {
- e_table_setup_header (e_table);
- }
- e_table_setup_table (e_table, e_table->full_header, e_table->header, etm);
- e_table_fill_table (e_table, etm);
-
- gtk_layout_get_vadjustment (GTK_LAYOUT (e_table->table_canvas))->step_increment = 20;
- gtk_adjustment_changed(gtk_layout_get_vadjustment (GTK_LAYOUT (e_table->table_canvas)));
-
- if (!specification->no_headers) {
- /*
- * The header
- */
- gtk_table_attach (GTK_TABLE (e_table), GTK_WIDGET (e_table->header_canvas),
- 0, 1, 0 + row, 1 + row,
- GTK_FILL | GTK_EXPAND,
- GTK_FILL, 0, 0);
- row ++;
- }
- gtk_table_attach (GTK_TABLE (e_table), GTK_WIDGET (e_table->table_canvas),
- 0, 1, 0 + row, 1 + row,
- GTK_FILL | GTK_EXPAND,
- GTK_FILL | GTK_EXPAND,
- 0, 0);
-
- gtk_widget_pop_colormap ();
- gtk_widget_pop_visual ();
-
- gtk_object_unref(GTK_OBJECT(ete));
-
- return e_table;
-}
-
-ETable *
-e_table_construct (ETable *e_table, ETableModel *etm, ETableExtras *ete,
- const char *spec_str, const char *state_str)
-{
- ETableSpecification *specification;
- ETableState *state;
-
- g_return_val_if_fail(e_table != NULL, NULL);
- g_return_val_if_fail(E_IS_TABLE(e_table), NULL);
- g_return_val_if_fail(etm != NULL, NULL);
- g_return_val_if_fail(E_IS_TABLE_MODEL(etm), NULL);
- g_return_val_if_fail(ete == NULL || E_IS_TABLE_EXTRAS(ete), NULL);
- g_return_val_if_fail(spec_str != NULL, NULL);
-
- specification = e_table_specification_new();
- e_table_specification_load_from_string(specification, spec_str);
- if (state_str) {
- state = e_table_state_new();
- e_table_state_load_from_string(state, state_str);
- if (state->col_count <= 0) {
- gtk_object_unref(GTK_OBJECT(state));
- state = specification->state;
- gtk_object_ref(GTK_OBJECT(state));
- }
- } else {
- state = specification->state;
- gtk_object_ref(GTK_OBJECT(state));
- }
-
- e_table = et_real_construct (e_table, etm, ete, specification, state);
-
- e_table->spec = specification;
- gtk_object_unref(GTK_OBJECT(state));
-
- return e_table;
-}
-
-ETable *
-e_table_construct_from_spec_file (ETable *e_table, ETableModel *etm, ETableExtras *ete,
- const char *spec_fn, const char *state_fn)
-{
- ETableSpecification *specification;
- ETableState *state;
-
- g_return_val_if_fail(e_table != NULL, NULL);
- g_return_val_if_fail(E_IS_TABLE(e_table), NULL);
- g_return_val_if_fail(etm != NULL, NULL);
- g_return_val_if_fail(E_IS_TABLE_MODEL(etm), NULL);
- g_return_val_if_fail(ete == NULL || E_IS_TABLE_EXTRAS(ete), NULL);
- g_return_val_if_fail(spec_fn != NULL, NULL);
-
- specification = e_table_specification_new();
- if (!e_table_specification_load_from_file(specification, spec_fn)) {
- gtk_object_unref(GTK_OBJECT(specification));
- return NULL;
- }
-
- if (state_fn) {
- state = e_table_state_new();
- if (!e_table_state_load_from_file(state, state_fn)) {
- gtk_object_unref(GTK_OBJECT(state));
- state = specification->state;
- gtk_object_ref(GTK_OBJECT(state));
- }
- if (state->col_count <= 0) {
- gtk_object_unref(GTK_OBJECT(state));
- state = specification->state;
- gtk_object_ref(GTK_OBJECT(state));
- }
- } else {
- state = specification->state;
- gtk_object_ref(GTK_OBJECT(state));
- }
-
- e_table = et_real_construct (e_table, etm, ete, specification, state);
-
- e_table->spec = specification;
- gtk_object_unref(GTK_OBJECT(state));
-
- return e_table;
-}
-
-GtkWidget *
-e_table_new (ETableModel *etm, ETableExtras *ete, const char *spec, const char *state)
-{
- ETable *e_table;
-
- g_return_val_if_fail(etm != NULL, NULL);
- g_return_val_if_fail(E_IS_TABLE_MODEL(etm), NULL);
- g_return_val_if_fail(ete == NULL || E_IS_TABLE_EXTRAS(ete), NULL);
- g_return_val_if_fail(spec != NULL, NULL);
-
- e_table = gtk_type_new (e_table_get_type ());
-
- e_table = e_table_construct (e_table, etm, ete, spec, state);
-
- return GTK_WIDGET (e_table);
-}
-
-GtkWidget *
-e_table_new_from_spec_file (ETableModel *etm, ETableExtras *ete, const char *spec_fn, const char *state_fn)
-{
- ETable *e_table;
-
- g_return_val_if_fail(etm != NULL, NULL);
- g_return_val_if_fail(E_IS_TABLE_MODEL(etm), NULL);
- g_return_val_if_fail(ete == NULL || E_IS_TABLE_EXTRAS(ete), NULL);
- g_return_val_if_fail(spec_fn != NULL, NULL);
-
- e_table = gtk_type_new (e_table_get_type ());
-
- e_table = e_table_construct_from_spec_file (e_table, etm, ete, spec_fn, state_fn);
-
- return GTK_WIDGET (e_table);
-}
-
-#if 0
-static xmlNode *
-et_build_column_spec (ETable *e_table)
-{
- xmlNode *columns_shown;
- gint i;
- gint col_count;
-
- columns_shown = xmlNewNode (NULL, "columns-shown");
-
- col_count = e_table_header_count (e_table->header);
- for (i = 0; i < col_count; i++){
- gchar *text = g_strdup_printf ("%d", e_table_header_index(e_table->header, i));
- xmlNewChild (columns_shown, NULL, "column", text);
- g_free (text);
- }
-
- return columns_shown;
-}
-
-static xmlNode *
-et_build_grouping_spec (ETable *e_table)
-{
- xmlNode *node;
- xmlNode *grouping;
- int i;
- const int sort_count = e_table_sort_info_sorting_get_count (e_table->sort_info);
- const int group_count = e_table_sort_info_grouping_get_count (e_table->sort_info);
-
- grouping = xmlNewNode (NULL, "grouping");
- node = grouping;
-
- for (i = 0; i < group_count; i++) {
- ETableSortColumn column = e_table_sort_info_grouping_get_nth(e_table->sort_info, i);
- xmlNode *new_node = xmlNewChild(node, NULL, "group", NULL);
-
- e_xml_set_integer_prop_by_name (new_node, "column", column.column);
- e_xml_set_integer_prop_by_name (new_node, "ascending", column.ascending);
- node = new_node;
- }
-
- for (i = 0; i < sort_count; i++) {
- ETableSortColumn column = e_table_sort_info_sorting_get_nth(e_table->sort_info, i);
- xmlNode *new_node = xmlNewChild(node, NULL, "leaf", NULL);
-
- e_xml_set_integer_prop_by_name (new_node, "column", column.column);
- e_xml_set_integer_prop_by_name (new_node, "ascending", column.ascending);
- node = new_node;
- }
-
- return grouping;
-}
-
-static xmlDoc *
-et_build_tree (ETable *e_table)
-{
- xmlDoc *doc;
- xmlNode *root;
-
- doc = xmlNewDoc ("1.0");
- if (doc == NULL)
- return NULL;
-
- root = xmlNewDocNode (doc, NULL, "ETableSpecification", NULL);
- xmlDocSetRootElement (doc, root);
- xmlAddChild (root, et_build_column_spec (e_table));
- xmlAddChild (root, et_build_grouping_spec (e_table));
-
- return doc;
-}
-
-gchar *
-e_table_get_specification (ETable *e_table)
-{
- xmlDoc *doc;
- xmlChar *buffer;
- gint size;
-
- g_return_val_if_fail(e_table != NULL, NULL);
- g_return_val_if_fail(E_IS_TABLE(e_table), NULL);
-
- doc = et_build_tree (e_table);
- xmlDocDumpMemory (doc, &buffer, &size);
- xmlFreeDoc (doc);
-
- return buffer;
-}
-
-int
-e_table_set_specification (ETable *e_table, const char *spec)
-{
- xmlDoc *xmlSpec;
- int ret;
-
- g_return_val_if_fail(e_table != NULL, -1);
- g_return_val_if_fail(E_IS_TABLE(e_table), -1);
- g_return_val_if_fail(spec != NULL, -1);
-
- /* doesn't work yet, sigh */
- xmlSpec = xmlParseMemory ((char *)spec, strlen(spec));
- ret = et_real_set_specification(e_table, xmlSpec);
- xmlFreeDoc (xmlSpec);
-
- return ret;
-}
-
-void
-e_table_save_specification (ETable *e_table, gchar *filename)
-{
- xmlDoc *doc = et_build_tree (e_table);
-
- g_return_if_fail(e_table != NULL);
- g_return_if_fail(E_IS_TABLE(e_table));
- g_return_if_fail(filename != NULL);
-
- xmlSaveFile (filename, doc);
- xmlFreeDoc (doc);
-}
-
-int
-e_table_load_specification (ETable *e_table, gchar *filename)
-{
- xmlDoc *xmlSpec;
- int ret;
-
- g_return_val_if_fail(e_table != NULL, -1);
- g_return_val_if_fail(E_IS_TABLE(e_table), -1);
- g_return_val_if_fail(filename != NULL, -1);
-
- /* doesn't work yet, yay */
- xmlSpec = xmlParseFile (filename);
- ret = et_real_set_specification(e_table, xmlSpec);
- xmlFreeDoc (xmlSpec);
-
- return ret;
-}
-#endif
-
-void
-e_table_set_cursor_row (ETable *e_table, int row)
-{
- g_return_if_fail(e_table != NULL);
- g_return_if_fail(E_IS_TABLE(e_table));
- g_return_if_fail(row >= 0);
-
- gtk_object_set(GTK_OBJECT(e_table->selection),
- "cursor_row", row,
- NULL);
-}
-
-int
-e_table_get_cursor_row (ETable *e_table)
-{
- int row;
- g_return_val_if_fail(e_table != NULL, -1);
- g_return_val_if_fail(E_IS_TABLE(e_table), -1);
-
- gtk_object_get(GTK_OBJECT(e_table->selection),
- "cursor_row", &row,
- NULL);
- return row;
-}
-
-void
-e_table_selected_row_foreach (ETable *e_table,
- EForeachFunc callback,
- gpointer closure)
-{
- g_return_if_fail(e_table != NULL);
- g_return_if_fail(E_IS_TABLE(e_table));
-
- e_selection_model_foreach(E_SELECTION_MODEL (e_table->selection),
- callback,
- closure);
-}
-
-gint
-e_table_selected_count (ETable *e_table)
-{
- g_return_val_if_fail(e_table != NULL, -1);
- g_return_val_if_fail(E_IS_TABLE(e_table), -1);
-
- return e_selection_model_selected_count(E_SELECTION_MODEL (e_table->selection));
-}
-
-void
-e_table_select_all (ETable *table)
-{
- g_return_if_fail (table != NULL);
- g_return_if_fail (E_IS_TABLE (table));
-
- e_selection_model_select_all (E_SELECTION_MODEL (table->selection));
-}
-
-void
-e_table_invert_selection (ETable *table)
-{
- g_return_if_fail (table != NULL);
- g_return_if_fail (E_IS_TABLE (table));
-
- e_selection_model_invert_selection (E_SELECTION_MODEL (table->selection));
-}
-
-
-EPrintable *
-e_table_get_printable (ETable *e_table)
-{
- g_return_val_if_fail(e_table != NULL, NULL);
- g_return_val_if_fail(E_IS_TABLE(e_table), NULL);
-
- return e_table_group_get_printable(e_table->group);
-}
-
-static void
-et_get_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- ETable *etable = E_TABLE (o);
-
- switch (arg_id){
- case ARG_MODEL:
- GTK_VALUE_OBJECT (*arg) = (GtkObject *) etable->model;
- break;
-
- default:
- break;
- }
-}
-
-typedef struct {
- char *arg;
- gboolean setting;
-} bool_closure;
-
-static void
-et_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- ETable *etable = E_TABLE (o);
-
- switch (arg_id){
- case ARG_LENGTH_THRESHOLD:
- etable->length_threshold = GTK_VALUE_INT (*arg);
- if (etable->group) {
- gnome_canvas_item_set (GNOME_CANVAS_ITEM(etable->group),
- "length_threshold", GTK_VALUE_INT (*arg),
- NULL);
- }
- break;
-
- }
-}
-
-static void
-set_scroll_adjustments (ETable *table,
- GtkAdjustment *hadjustment,
- GtkAdjustment *vadjustment)
-{
- if (vadjustment != NULL) {
- vadjustment->step_increment = 20;
- gtk_adjustment_changed(vadjustment);
- }
-
- gtk_layout_set_hadjustment (GTK_LAYOUT(table->table_canvas),
- hadjustment);
- gtk_layout_set_vadjustment (GTK_LAYOUT(table->table_canvas),
- vadjustment);
-
- if (table->header_canvas != NULL)
- gtk_layout_set_hadjustment (GTK_LAYOUT(table->header_canvas),
- hadjustment);
-}
-
-gint
-e_table_get_next_row (ETable *e_table,
- gint model_row)
-{
- g_return_val_if_fail(e_table != NULL, -1);
- g_return_val_if_fail(E_IS_TABLE(e_table), -1);
-
- if (e_table->sorter) {
- int i;
- i = e_sorter_model_to_sorted(E_SORTER (e_table->sorter), model_row);
- i++;
- if (i < e_table_model_row_count(e_table->model)) {
- return e_sorter_sorted_to_model(E_SORTER (e_table->sorter), i);
- } else
- return -1;
- } else
- if (model_row < e_table_model_row_count(e_table->model) - 1)
- return model_row + 1;
- else
- return -1;
-}
-
-gint
-e_table_get_prev_row (ETable *e_table,
- gint model_row)
-{
- g_return_val_if_fail(e_table != NULL, -1);
- g_return_val_if_fail(E_IS_TABLE(e_table), -1);
-
- if (e_table->sorter) {
- int i;
- i = e_sorter_model_to_sorted(E_SORTER (e_table->sorter), model_row);
- i--;
- if (i >= 0)
- return e_sorter_sorted_to_model(E_SORTER (e_table->sorter), i);
- else
- return -1;
- } else
- return model_row - 1;
-}
-
-gint
-e_table_model_to_view_row (ETable *e_table,
- gint model_row)
-{
- g_return_val_if_fail(e_table != NULL, -1);
- g_return_val_if_fail(E_IS_TABLE(e_table), -1);
-
- if (e_table->sorter)
- return e_sorter_model_to_sorted(E_SORTER (e_table->sorter), model_row);
- else
- return model_row;
-}
-
-gint
-e_table_view_to_model_row (ETable *e_table,
- gint view_row)
-{
- g_return_val_if_fail(e_table != NULL, -1);
- g_return_val_if_fail(E_IS_TABLE(e_table), -1);
-
- if (e_table->sorter)
- return e_sorter_sorted_to_model (E_SORTER (e_table->sorter), view_row);
- else
- return view_row;
-}
-
-/**
- * e_table_get_cell_at:
- * @table: An ETable widget
- * @x: X coordinate for the pixel
- * @y: Y coordinate for the pixel
- * @row_return: Pointer to return the row value
- * @col_return: Pointer to return the column value
- *
- * Return the row and column for the cell in which the pixel at (@x, @y) is
- * contained.
- **/
-void
-e_table_get_cell_at (ETable *table,
- int x, int y,
- int *row_return, int *col_return)
-{
- g_return_if_fail (table != NULL);
- g_return_if_fail (E_IS_TABLE (table));
- g_return_if_fail (row_return != NULL);
- g_return_if_fail (col_return != NULL);
-
- /* FIXME it would be nice if it could handle a NULL row_return or
- * col_return gracefully. */
-
- x += GTK_LAYOUT(table->table_canvas)->hadjustment->value;
- y += GTK_LAYOUT(table->table_canvas)->vadjustment->value;
- e_table_group_compute_location(table->group, &x, &y, row_return, col_return);
-}
-
-/**
- * e_table_get_cell_geometry:
- * @table: The table.
- * @row: The row to get the geometry of.
- * @col: The col to get the geometry of.
- * @x_return: Returns the x coordinate of the upper right hand corner of the cell with respect to the widget.
- * @y_return: Returns the y coordinate of the upper right hand corner of the cell with respect to the widget.
- * @width_return: Returns the width of the cell.
- * @height_return: Returns the height of the cell.
- *
- * Computes the data about this cell.
- **/
-void
-e_table_get_cell_geometry (ETable *table,
- int row, int col,
- int *x_return, int *y_return,
- int *width_return, int *height_return)
-{
- g_return_if_fail (table != NULL);
- g_return_if_fail (E_IS_TABLE (table));
-
- /* FIXME it would be nice if it could handle a NULL row_return or
- * col_return gracefully. */
-
- e_table_group_get_cell_geometry(table->group, &row, &col, x_return, y_return, width_return, height_return);
-
- if (x_return)
- (*x_return) -= GTK_LAYOUT(table->table_canvas)->hadjustment->value;
- if (y_return) {
- (*y_return) -= GTK_LAYOUT(table->table_canvas)->vadjustment->value;
- (*y_return) += GTK_WIDGET(table->header_canvas)->allocation.height;
- }
-}
-
-struct _ETableDragSourceSite
-{
- GdkModifierType start_button_mask;
- GtkTargetList *target_list; /* Targets for drag data */
- GdkDragAction actions; /* Possible actions */
- GdkColormap *colormap; /* Colormap for drag icon */
- GdkPixmap *pixmap; /* Icon for drag data */
- GdkBitmap *mask;
-
- /* Stored button press information to detect drag beginning */
- gint state;
- gint x, y;
- gint row, col;
-};
-
-typedef enum
-{
- GTK_DRAG_STATUS_DRAG,
- GTK_DRAG_STATUS_WAIT,
- GTK_DRAG_STATUS_DROP
-} GtkDragStatus;
-
-typedef struct _GtkDragDestInfo GtkDragDestInfo;
-typedef struct _GtkDragSourceInfo GtkDragSourceInfo;
-
-struct _GtkDragDestInfo
-{
- GtkWidget *widget; /* Widget in which drag is in */
- GdkDragContext *context; /* Drag context */
- GtkDragSourceInfo *proxy_source; /* Set if this is a proxy drag */
- GtkSelectionData *proxy_data; /* Set while retrieving proxied data */
- gboolean dropped : 1; /* Set after we receive a drop */
- guint32 proxy_drop_time; /* Timestamp for proxied drop */
- gboolean proxy_drop_wait : 1; /* Set if we are waiting for a
- * status reply before sending
- * a proxied drop on.
- */
- gint drop_x, drop_y; /* Position of drop */
-};
-
-struct _GtkDragSourceInfo
-{
- GtkWidget *widget;
- GtkTargetList *target_list; /* Targets for drag data */
- GdkDragAction possible_actions; /* Actions allowed by source */
- GdkDragContext *context; /* drag context */
- GtkWidget *icon_window; /* Window for drag */
- GtkWidget *ipc_widget; /* GtkInvisible for grab, message passing */
- GdkCursor *cursor; /* Cursor for drag */
- gint hot_x, hot_y; /* Hot spot for drag */
- gint button; /* mouse button starting drag */
-
- GtkDragStatus status; /* drag status */
- GdkEvent *last_event; /* motion event waiting for response */
-
- gint start_x, start_y; /* Initial position */
- gint cur_x, cur_y; /* Current Position */
-
- GList *selections; /* selections we've claimed */
-
- GtkDragDestInfo *proxy_dest; /* Set if this is a proxy drag */
-
- guint drop_timeout; /* Timeout for aborting drop */
- guint destroy_icon : 1; /* If true, destroy icon_window
- */
-};
-
-/* Drag & drop stuff. */
-/* Target */
-void
-e_table_drag_get_data (ETable *table,
- int row,
- int col,
- GdkDragContext *context,
- GdkAtom target,
- guint32 time)
-{
- g_return_if_fail(table != NULL);
- g_return_if_fail(E_IS_TABLE(table));
-
- table->drag_get_data_row = row;
- table->drag_get_data_col = col;
- gtk_drag_get_data(GTK_WIDGET(table),
- context,
- target,
- time);
-
-}
-
-/**
- * e_table_drag_highlight:
- * @table:
- * @row:
- * @col:
- *
- * Set col to -1 to highlight the entire row.
- */
-void
-e_table_drag_highlight (ETable *table,
- int row,
- int col)
-{
- g_return_if_fail(table != NULL);
- g_return_if_fail(E_IS_TABLE(table));
-}
-
-void
-e_table_drag_unhighlight (ETable *table)
-{
- g_return_if_fail(table != NULL);
- g_return_if_fail(E_IS_TABLE(table));
-}
-
-void e_table_drag_dest_set (ETable *table,
- GtkDestDefaults flags,
- const GtkTargetEntry *targets,
- gint n_targets,
- GdkDragAction actions)
-{
- g_return_if_fail(table != NULL);
- g_return_if_fail(E_IS_TABLE(table));
-
- gtk_drag_dest_set(GTK_WIDGET(table),
- flags,
- targets,
- n_targets,
- actions);
-}
-
-void e_table_drag_dest_set_proxy (ETable *table,
- GdkWindow *proxy_window,
- GdkDragProtocol protocol,
- gboolean use_coordinates)
-{
- g_return_if_fail(table != NULL);
- g_return_if_fail(E_IS_TABLE(table));
-
- gtk_drag_dest_set_proxy(GTK_WIDGET(table),
- proxy_window,
- protocol,
- use_coordinates);
-}
-
-/*
- * There probably should be functions for setting the targets
- * as a GtkTargetList
- */
-
-void
-e_table_drag_dest_unset (GtkWidget *widget)
-{
- g_return_if_fail(widget != NULL);
- g_return_if_fail(E_IS_TABLE(widget));
-
- gtk_drag_dest_unset(widget);
-}
-
-/* Source side */
-
-void
-e_table_drag_source_set (ETable *table,
- GdkModifierType start_button_mask,
- const GtkTargetEntry *targets,
- gint n_targets,
- GdkDragAction actions)
-{
- ETableDragSourceSite *site;
- GtkWidget *canvas;
-
- g_return_if_fail(table != NULL);
- g_return_if_fail(E_IS_TABLE(table));
-
- canvas = GTK_WIDGET(table->table_canvas);
- site = table->site;
-
- gtk_widget_add_events (canvas,
- gtk_widget_get_events (canvas) |
- GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
- GDK_BUTTON_MOTION_MASK | GDK_STRUCTURE_MASK);
-
- if (site) {
- if (site->target_list)
- gtk_target_list_unref (site->target_list);
- } else {
- site = g_new0 (ETableDragSourceSite, 1);
-
- table->drag_source_button_press_event_id =
- gtk_signal_connect (GTK_OBJECT (canvas), "button_press_event",
- GTK_SIGNAL_FUNC (e_table_drag_source_event_cb),
- table);
- table->drag_source_motion_notify_event_id =
- gtk_signal_connect (GTK_OBJECT (canvas), "motion_notify_event",
- GTK_SIGNAL_FUNC (e_table_drag_source_event_cb),
- table);
-
- table->site = site;
- }
-
- site->start_button_mask = start_button_mask;
-
- if (targets)
- site->target_list = gtk_target_list_new (targets, n_targets);
- else
- site->target_list = NULL;
-
- site->actions = actions;
-}
-
-void
-e_table_drag_source_unset (ETable *table)
-{
- ETableDragSourceSite *site;
-
- g_return_if_fail (table != NULL);
- g_return_if_fail (E_IS_TABLE(table));
-
- site = table->site;
-
- if (site) {
- gtk_signal_disconnect (
- GTK_OBJECT (table->table_canvas),
- table->drag_source_button_press_event_id);
- gtk_signal_disconnect (
- GTK_OBJECT (table->table_canvas),
- table->drag_source_motion_notify_event_id);
- g_free (site);
- table->site = NULL;
- }
-}
-
-/* There probably should be functions for setting the targets
- * as a GtkTargetList
- */
-
-GdkDragContext *
-e_table_drag_begin (ETable *table,
- int row,
- int col,
- GtkTargetList *targets,
- GdkDragAction actions,
- gint button,
- GdkEvent *event)
-{
- g_return_val_if_fail (table != NULL, NULL);
- g_return_val_if_fail (E_IS_TABLE(table), NULL);
-
- table->drag_row = row;
- table->drag_col = col;
-
- return gtk_drag_begin(GTK_WIDGET(table),
- targets,
- actions,
- button,
- event);
-}
-
-static void
-et_drag_begin (GtkWidget *widget,
- GdkDragContext *context,
- ETable *et)
-{
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [TABLE_DRAG_BEGIN],
- et->drag_row,
- et->drag_col,
- context);
-}
-
-static void
-et_drag_end (GtkWidget *widget,
- GdkDragContext *context,
- ETable *et)
-{
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [TABLE_DRAG_END],
- et->drag_row,
- et->drag_col,
- context);
-}
-
-static void
-et_drag_data_get(GtkWidget *widget,
- GdkDragContext *context,
- GtkSelectionData *selection_data,
- guint info,
- guint time,
- ETable *et)
-{
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [TABLE_DRAG_DATA_GET],
- et->drag_row,
- et->drag_col,
- context,
- selection_data,
- info,
- time);
-}
-
-static void
-et_drag_data_delete(GtkWidget *widget,
- GdkDragContext *context,
- ETable *et)
-{
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [TABLE_DRAG_DATA_DELETE],
- et->drag_row,
- et->drag_col,
- context);
-}
-
-static void
-et_drag_leave(GtkWidget *widget,
- GdkDragContext *context,
- guint time,
- ETable *et)
-{
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [TABLE_DRAG_LEAVE],
- et->drop_row,
- et->drop_col,
- context,
- time);
- et->drop_row = -1;
- et->drop_col = -1;
-}
-
-static gboolean
-et_drag_motion(GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time,
- ETable *et)
-{
- gboolean ret_val;
- int row, col;
-
- e_table_get_cell_at (et, x, y, &row, &col);
-
- if (et->drop_row >= 0 && et->drop_col >= 0 &&
- row != et->drop_row && col != et->drop_row) {
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [TABLE_DRAG_LEAVE],
- et->drop_row,
- et->drop_col,
- context,
- time);
- }
- et->drop_row = row;
- et->drop_col = col;
- if (row >= 0 && col >= 0)
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [TABLE_DRAG_MOTION],
- et->drop_row,
- et->drop_col,
- context,
- x,
- y,
- time,
- &ret_val);
- return ret_val;
-}
-
-static gboolean
-et_drag_drop(GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time,
- ETable *et)
-{
- gboolean ret_val;
- int row, col;
-
- e_table_get_cell_at (et, x, y, &row, &col);
-
- if (et->drop_row >= 0 && et->drop_col >= 0 &&
- row != et->drop_row && col != et->drop_row) {
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [TABLE_DRAG_LEAVE],
- et->drop_row,
- et->drop_col,
- context,
- time);
- if (row >= 0 && col >= 0)
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [TABLE_DRAG_MOTION],
- row,
- col,
- context,
- x,
- y,
- time,
- &ret_val);
- }
- et->drop_row = row;
- et->drop_col = col;
- if (row >= 0 && col >= 0)
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [TABLE_DRAG_DROP],
- et->drop_row,
- et->drop_col,
- context,
- x,
- y,
- time,
- &ret_val);
- et->drop_row = -1;
- et->drop_col = -1;
- return ret_val;
-}
-
-static void
-et_drag_data_received(GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- GtkSelectionData *selection_data,
- guint info,
- guint time,
- ETable *et)
-{
- int row, col;
-
- e_table_get_cell_at (et, x, y, &row, &col);
-
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [TABLE_DRAG_DATA_RECEIVED],
- row,
- col,
- context,
- x,
- y,
- selection_data,
- info,
- time);
-}
-
-static gint
-e_table_drag_source_event_cb (GtkWidget *widget,
- GdkEvent *event,
- ETable *table)
-{
- ETableDragSourceSite *site;
- site = table->site;
-
- switch (event->type) {
- case GDK_BUTTON_PRESS:
- if ((GDK_BUTTON1_MASK << (event->button.button - 1)) & site->start_button_mask) {
- int row, col;
- e_table_get_cell_at (table, event->button.x, event->button.y, &row, &col);
- if (row >= 0 && col >= 0) {
- site->state |= (GDK_BUTTON1_MASK << (event->button.button - 1));
- site->x = event->button.x;
- site->y = event->button.y;
- site->row = row;
- site->col = col;
- }
- }
- break;
-
- case GDK_BUTTON_RELEASE:
- if ((GDK_BUTTON1_MASK << (event->button.button - 1)) & site->start_button_mask) {
- site->state &= ~(GDK_BUTTON1_MASK << (event->button.button - 1));
- }
- break;
-
- case GDK_MOTION_NOTIFY:
- if (site->state & event->motion.state & site->start_button_mask) {
- /* FIXME: This is really broken and can leave us
- * with a stuck grab
- */
- int i;
- for (i=1; i<6; i++) {
- if (site->state & event->motion.state &
- GDK_BUTTON1_MASK << (i - 1))
- break;
- }
-
- if (MAX (abs (site->x - event->motion.x),
- abs (site->y - event->motion.y)) > 3) {
- GtkDragSourceInfo *info;
- GdkDragContext *context;
-
- site->state = 0;
- context = e_table_drag_begin (table, site->row, site->col,
- site->target_list,
- site->actions,
- i, event);
-
-
- info = g_dataset_get_data (context, "gtk-info");
-
- if (!info->icon_window) {
- if (site->pixmap)
- gtk_drag_set_icon_pixmap (context,
- site->colormap,
- site->pixmap,
- site->mask, -2, -2);
- else
- gtk_drag_set_icon_default (context);
- }
-
- return TRUE;
- }
- }
- break;
-
- default: /* hit for 2/3BUTTON_PRESS */
- break;
- }
- return FALSE;
-}
-
-static void
-e_table_class_init (ETableClass *class)
-{
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
- GtkContainerClass *container_class;
-
- object_class = (GtkObjectClass *) class;
- widget_class = (GtkWidgetClass *) class;
- container_class = (GtkContainerClass *) class;
-
- e_table_parent_class = gtk_type_class (PARENT_TYPE);
-
- object_class->destroy = et_destroy;
- object_class->set_arg = et_set_arg;
- object_class->get_arg = et_get_arg;
-
- widget_class->grab_focus = et_grab_focus;
-
- container_class->focus = et_focus;
-
- class->cursor_change = NULL;
- class->cursor_activated = NULL;
- class->selection_change = NULL;
- class->double_click = NULL;
- class->right_click = NULL;
- class->click = NULL;
- class->key_press = NULL;
-
- class->table_drag_begin = NULL;
- class->table_drag_end = NULL;
- class->table_drag_data_get = NULL;
- class->table_drag_data_delete = NULL;
-
- class->table_drag_leave = NULL;
- class->table_drag_motion = NULL;
- class->table_drag_drop = NULL;
- class->table_drag_data_received = NULL;
-
- et_signals [CURSOR_CHANGE] =
- gtk_signal_new ("cursor_change",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableClass, cursor_change),
- gtk_marshal_NONE__INT,
- GTK_TYPE_NONE, 1, GTK_TYPE_INT);
-
- et_signals [CURSOR_ACTIVATED] =
- gtk_signal_new ("cursor_activated",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableClass, cursor_activated),
- gtk_marshal_NONE__INT,
- GTK_TYPE_NONE, 1, GTK_TYPE_INT);
-
- et_signals [SELECTION_CHANGE] =
- gtk_signal_new ("selection_change",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableClass, selection_change),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- et_signals [DOUBLE_CLICK] =
- gtk_signal_new ("double_click",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableClass, double_click),
- gtk_marshal_NONE__INT_INT_POINTER,
- GTK_TYPE_NONE, 3, GTK_TYPE_INT, GTK_TYPE_INT, GTK_TYPE_GDK_EVENT);
-
- et_signals [RIGHT_CLICK] =
- gtk_signal_new ("right_click",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableClass, right_click),
- e_marshal_INT__INT_INT_POINTER,
- GTK_TYPE_INT, 3, GTK_TYPE_INT, GTK_TYPE_INT, GTK_TYPE_GDK_EVENT);
-
- et_signals [CLICK] =
- gtk_signal_new ("click",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableClass, click),
- e_marshal_INT__INT_INT_POINTER,
- GTK_TYPE_INT, 3, GTK_TYPE_INT, GTK_TYPE_INT, GTK_TYPE_GDK_EVENT);
-
- et_signals [KEY_PRESS] =
- gtk_signal_new ("key_press",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableClass, key_press),
- e_marshal_INT__INT_INT_POINTER,
- GTK_TYPE_INT, 3, GTK_TYPE_INT, GTK_TYPE_INT, GTK_TYPE_GDK_EVENT);
-
- et_signals[TABLE_DRAG_BEGIN] =
- gtk_signal_new ("table_drag_begin",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableClass, table_drag_begin),
- gtk_marshal_NONE__INT_INT_POINTER,
- GTK_TYPE_NONE, 3,
- GTK_TYPE_INT,
- GTK_TYPE_INT,
- GTK_TYPE_GDK_DRAG_CONTEXT);
- et_signals[TABLE_DRAG_END] =
- gtk_signal_new ("table_drag_end",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableClass, table_drag_end),
- gtk_marshal_NONE__INT_INT_POINTER,
- GTK_TYPE_NONE, 3,
- GTK_TYPE_INT,
- GTK_TYPE_INT,
- GTK_TYPE_GDK_DRAG_CONTEXT);
- et_signals[TABLE_DRAG_DATA_GET] =
- gtk_signal_new ("table_drag_data_get",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableClass, table_drag_data_get),
- e_marshal_NONE__INT_INT_POINTER_POINTER_UINT_UINT,
- GTK_TYPE_NONE, 6,
- GTK_TYPE_INT,
- GTK_TYPE_INT,
- GTK_TYPE_GDK_DRAG_CONTEXT,
- GTK_TYPE_SELECTION_DATA,
- GTK_TYPE_UINT,
- GTK_TYPE_UINT);
- et_signals[TABLE_DRAG_DATA_DELETE] =
- gtk_signal_new ("table_drag_data_delete",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableClass, table_drag_data_delete),
- gtk_marshal_NONE__INT_INT_POINTER,
- GTK_TYPE_NONE, 3,
- GTK_TYPE_INT,
- GTK_TYPE_INT,
- GTK_TYPE_GDK_DRAG_CONTEXT);
-
- et_signals[TABLE_DRAG_LEAVE] =
- gtk_signal_new ("table_drag_leave",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableClass, table_drag_leave),
- e_marshal_NONE__INT_INT_POINTER_UINT,
- GTK_TYPE_NONE, 4,
- GTK_TYPE_INT,
- GTK_TYPE_INT,
- GTK_TYPE_GDK_DRAG_CONTEXT,
- GTK_TYPE_UINT);
- et_signals[TABLE_DRAG_MOTION] =
- gtk_signal_new ("table_drag_motion",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableClass, table_drag_motion),
- e_marshal_BOOL__INT_INT_POINTER_INT_INT_UINT,
- GTK_TYPE_BOOL, 6,
- GTK_TYPE_INT,
- GTK_TYPE_INT,
- GTK_TYPE_GDK_DRAG_CONTEXT,
- GTK_TYPE_INT,
- GTK_TYPE_INT,
- GTK_TYPE_UINT);
- et_signals[TABLE_DRAG_DROP] =
- gtk_signal_new ("table_drag_drop",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableClass, table_drag_drop),
- e_marshal_BOOL__INT_INT_POINTER_INT_INT_UINT,
- GTK_TYPE_BOOL, 6,
- GTK_TYPE_INT,
- GTK_TYPE_INT,
- GTK_TYPE_GDK_DRAG_CONTEXT,
- GTK_TYPE_INT,
- GTK_TYPE_INT,
- GTK_TYPE_UINT);
- et_signals[TABLE_DRAG_DATA_RECEIVED] =
- gtk_signal_new ("table_drag_data_received",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableClass, table_drag_data_received),
- e_marshal_NONE__INT_INT_POINTER_INT_INT_POINTER_UINT_UINT,
- GTK_TYPE_NONE, 8,
- GTK_TYPE_INT,
- GTK_TYPE_INT,
- GTK_TYPE_GDK_DRAG_CONTEXT,
- GTK_TYPE_INT,
- GTK_TYPE_INT,
- GTK_TYPE_SELECTION_DATA,
- GTK_TYPE_UINT,
- GTK_TYPE_UINT);
-
- gtk_object_class_add_signals (object_class, et_signals, LAST_SIGNAL);
-
- class->set_scroll_adjustments = set_scroll_adjustments;
-
- widget_class->set_scroll_adjustments_signal =
- gtk_signal_new ("set_scroll_adjustments",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETableClass, set_scroll_adjustments),
- gtk_marshal_NONE__POINTER_POINTER,
- GTK_TYPE_NONE, 2, GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT);
-
- gtk_object_add_arg_type ("ETable::length_threshold", GTK_TYPE_INT,
- GTK_ARG_WRITABLE, ARG_LENGTH_THRESHOLD);
- gtk_object_add_arg_type ("ETable::model", E_TABLE_MODEL_TYPE,
- GTK_ARG_READABLE, ARG_MODEL);
-}
-
-E_MAKE_TYPE(e_table, "ETable", ETable, e_table_class_init, e_table_init, PARENT_TYPE);
diff --git a/widgets/table/e-table.dia b/widgets/table/e-table.dia
deleted file mode 100644
index 5aeb01228c..0000000000
--- a/widgets/table/e-table.dia
+++ /dev/null
Binary files differ
diff --git a/widgets/table/e-table.h b/widgets/table/e-table.h
deleted file mode 100644
index 829b8ffcaf..0000000000
--- a/widgets/table/e-table.h
+++ /dev/null
@@ -1,292 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TABLE_H_
-#define _E_TABLE_H_
-
-#include <libgnomeui/gnome-canvas.h>
-#include <gtk/gtktable.h>
-#include <gnome-xml/tree.h>
-#include <gal/e-table/e-table-model.h>
-#include <gal/e-table/e-table-header.h>
-#include <gal/e-table/e-table-group.h>
-#include <gal/e-table/e-table-sort-info.h>
-#include <gal/e-table/e-table-item.h>
-#include <gal/e-table/e-table-selection-model.h>
-#include <gal/e-table/e-table-extras.h>
-#include <gal/e-table/e-table-specification.h>
-#include <gal/widgets/e-printable.h>
-#include <gal/e-table/e-table-state.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_TABLE_TYPE (e_table_get_type ())
-#define E_TABLE(o) (GTK_CHECK_CAST ((o), E_TABLE_TYPE, ETable))
-#define E_TABLE_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TABLE_TYPE, ETableClass))
-#define E_IS_TABLE(o) (GTK_CHECK_TYPE ((o), E_TABLE_TYPE))
-#define E_IS_TABLE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TABLE_TYPE))
-
-typedef struct _ETableDragSourceSite ETableDragSourceSite;
-
-typedef enum {
- E_TABLE_CURSOR_LOC_NONE = 0,
- E_TABLE_CURSOR_LOC_ETCTA = 1 << 0,
- E_TABLE_CURSOR_LOC_TABLE = 1 << 1,
-} ETableCursorLoc;
-
-typedef struct {
- GtkTable parent;
-
- ETableModel *model;
-
- ETableHeader *full_header, *header;
-
- GnomeCanvasItem *canvas_vbox;
- ETableGroup *group;
-
- ETableSortInfo *sort_info;
- ETableSorter *sorter;
-
- ETableSelectionModel *selection;
- ETableCursorLoc cursor_loc;
- ETableSpecification *spec;
-
- int table_model_change_id;
- int table_row_change_id;
- int table_cell_change_id;
- int table_rows_inserted_id;
- int table_rows_deleted_id;
-
- int group_info_change_id;
-
- int reflow_idle_id;
-
- GnomeCanvas *header_canvas, *table_canvas;
-
- GnomeCanvasItem *header_item, *root;
-
- GnomeCanvasItem *white_item;
-
- gint length_threshold;
-
- gint rebuild_idle_id;
- guint need_rebuild:1;
-
- /*
- * Configuration settings
- */
- guint alternating_row_colors : 1;
- guint horizontal_draw_grid : 1;
- guint vertical_draw_grid : 1;
- guint draw_focus : 1;
- guint row_selection_active : 1;
-
- guint horizontal_scrolling : 1;
-
- guint is_grouped : 1;
-
- char *click_to_add_message;
- GnomeCanvasItem *click_to_add;
- gboolean use_click_to_add;
-
- ECursorMode cursor_mode;
-
- int drag_get_data_row;
- int drag_get_data_col;
-
- int drop_row;
- int drop_col;
-
- int drag_row;
- int drag_col;
- ETableDragSourceSite *site;
-
- int drag_source_button_press_event_id;
- int drag_source_motion_notify_event_id;
-} ETable;
-
-typedef struct {
- GtkTableClass parent_class;
-
- void (*cursor_change) (ETable *et, int row);
- void (*cursor_activated) (ETable *et, int row);
- void (*selection_change) (ETable *et);
- void (*double_click) (ETable *et, int row, int col, GdkEvent *event);
- gint (*right_click) (ETable *et, int row, int col, GdkEvent *event);
- gint (*click) (ETable *et, int row, int col, GdkEvent *event);
- gint (*key_press) (ETable *et, int row, int col, GdkEvent *event);
-
- void (*set_scroll_adjustments) (ETable *table,
- GtkAdjustment *hadjustment,
- GtkAdjustment *vadjustment);
-
- /* Source side drag signals */
- void (* table_drag_begin) (ETable *table,
- int row,
- int col,
- GdkDragContext *context);
- void (* table_drag_end) (ETable *table,
- int row,
- int col,
- GdkDragContext *context);
- void (* table_drag_data_get) (ETable *table,
- int row,
- int col,
- GdkDragContext *context,
- GtkSelectionData *selection_data,
- guint info,
- guint time);
- void (* table_drag_data_delete) (ETable *table,
- int row,
- int col,
- GdkDragContext *context);
-
- /* Target side drag signals */
- void (* table_drag_leave) (ETable *table,
- int row,
- int col,
- GdkDragContext *context,
- guint time);
- gboolean (* table_drag_motion) (ETable *table,
- int row,
- int col,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time);
- gboolean (* table_drag_drop) (ETable *table,
- int row,
- int col,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time);
- void (* table_drag_data_received) (ETable *table,
- int row,
- int col,
- GdkDragContext *context,
- gint x,
- gint y,
- GtkSelectionData *selection_data,
- guint info,
- guint time);
-} ETableClass;
-
-GtkType e_table_get_type (void);
-
-ETable *e_table_construct (ETable *e_table,
- ETableModel *etm,
- ETableExtras *ete,
- const char *spec,
- const char *state);
-GtkWidget *e_table_new (ETableModel *etm,
- ETableExtras *ete,
- const char *spec,
- const char *state);
-
-/* Create an ETable using files. */
-ETable *e_table_construct_from_spec_file (ETable *e_table,
- ETableModel *etm,
- ETableExtras *ete,
- const char *spec_fn,
- const char *state_fn);
-GtkWidget *e_table_new_from_spec_file (ETableModel *etm,
- ETableExtras *ete,
- const char *spec_fn,
- const char *state_fn);
-
-/* To save the state */
-gchar *e_table_get_state (ETable *e_table);
-void e_table_save_state (ETable *e_table,
- const gchar *filename);
-ETableState *e_table_get_state_object (ETable *e_table);
-
-/* note that it is more efficient to provide the state at creation time */
-void e_table_set_state (ETable *e_table,
- const gchar *state);
-void e_table_set_state_object (ETable *e_table,
- ETableState *state);
-void e_table_load_state (ETable *e_table,
- const gchar *filename);
-
-void e_table_set_cursor_row (ETable *e_table,
- int row);
-
-/* -1 means we don't have the cursor. */
-int e_table_get_cursor_row (ETable *e_table);
-void e_table_selected_row_foreach (ETable *e_table,
- EForeachFunc callback,
- gpointer closure);
-gint e_table_selected_count (ETable *e_table);
-EPrintable *e_table_get_printable (ETable *e_table);
-
-gint e_table_get_next_row (ETable *e_table,
- gint model_row);
-gint e_table_get_prev_row (ETable *e_table,
- gint model_row);
-
-gint e_table_model_to_view_row (ETable *e_table,
- gint model_row);
-gint e_table_view_to_model_row (ETable *e_table,
- gint view_row);
-void e_table_get_cell_at (ETable *table,
- int x, int y,
- int *row_return, int *col_return);
-
-void e_table_get_cell_geometry (ETable *table,
- int row, int col,
- int *x_return, int *y_return,
- int *width_return, int *height_return);
-
-/* Drag & drop stuff. */
-/* Target */
-void e_table_drag_get_data (ETable *table,
- int row,
- int col,
- GdkDragContext *context,
- GdkAtom target,
- guint32 time);
-void e_table_drag_highlight (ETable *table,
- int row,
- int col); /* col == -1 to highlight entire row. */
-void e_table_drag_unhighlight (ETable *table);
-void e_table_drag_dest_set (ETable *table,
- GtkDestDefaults flags,
- const GtkTargetEntry *targets,
- gint n_targets,
- GdkDragAction actions);
-void e_table_drag_dest_set_proxy (ETable *table,
- GdkWindow *proxy_window,
- GdkDragProtocol protocol,
- gboolean use_coordinates);
-
-/* There probably should be functions for setting the targets
- * as a GtkTargetList
- */
-void e_table_drag_dest_unset (GtkWidget *widget);
-
-/* Source side */
-void e_table_drag_source_set (ETable *table,
- GdkModifierType start_button_mask,
- const GtkTargetEntry *targets,
- gint n_targets,
- GdkDragAction actions);
-void e_table_drag_source_unset (ETable *table);
-
-/* There probably should be functions for setting the targets
- * as a GtkTargetList
- */
-GdkDragContext *e_table_drag_begin (ETable *table,
- int row,
- int col,
- GtkTargetList *targets,
- GdkDragAction actions,
- gint button,
- GdkEvent *event);
-
-/* selection stuff */
-void e_table_select_all (ETable *table);
-void e_table_invert_selection (ETable *table);
-
-END_GNOME_DECLS
-
-#endif /* _E_TABLE_H_ */
-
diff --git a/widgets/table/e-tree-memory-callbacks.c b/widgets/table/e-tree-memory-callbacks.c
deleted file mode 100644
index adb5160bc2..0000000000
--- a/widgets/table/e-tree-memory-callbacks.c
+++ /dev/null
@@ -1,262 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-tree-memory-callbacks.c: a Tree Model that offers a function pointer
- * interface to using ETreeModel, similar to ETableSimple.
- *
- * Author:
- * Chris Toshok (toshok@ximian.com)
- *
- * (C) 2000 Ximian, Inc. */
-
-#include <config.h>
-#include <gtk/gtksignal.h>
-#include "gal/util/e-util.h"
-#include "e-tree-memory-callbacks.h"
-
-#define PARENT_TYPE E_TREE_MEMORY_TYPE
-
-static GdkPixbuf *
-etmc_icon_at (ETreeModel *etm, ETreePath node)
-{
- ETreeMemoryCallbacks *etmc = E_TREE_MEMORY_CALLBACKS(etm);
-
- return etmc->icon_at (etm, node, etmc->model_data);
-}
-
-static int
-etmc_column_count (ETreeModel *etm)
-{
- ETreeMemoryCallbacks *etmc = E_TREE_MEMORY_CALLBACKS(etm);
-
- if (etmc->column_count)
- return etmc->column_count (etm, etmc->model_data);
- else
- return 0;
-}
-
-
-static gboolean
-etmc_has_save_id (ETreeModel *etm)
-{
- ETreeMemoryCallbacks *etmc = E_TREE_MEMORY_CALLBACKS(etm);
-
- if (etmc->has_save_id)
- return etmc->has_save_id (etm, etmc->model_data);
- else
- return FALSE;
-}
-
-static char *
-etmc_get_save_id (ETreeModel *etm, ETreePath node)
-{
- ETreeMemoryCallbacks *etmc = E_TREE_MEMORY_CALLBACKS(etm);
-
- if (etmc->get_save_id)
- return etmc->get_save_id (etm, node, etmc->model_data);
- else
- return NULL;
-}
-
-static gboolean
-etmc_has_get_node_by_id (ETreeModel *etm)
-{
- ETreeMemoryCallbacks *etmc = E_TREE_MEMORY_CALLBACKS(etm);
-
- if (etmc->has_get_node_by_id)
- return etmc->has_get_node_by_id (etm, etmc->model_data);
- else
- return FALSE;
-}
-
-static ETreePath
-etmc_get_node_by_id (ETreeModel *etm, gchar *save_id)
-{
- ETreeMemoryCallbacks *etmc = E_TREE_MEMORY_CALLBACKS(etm);
-
- if (etmc->get_node_by_id)
- return etmc->get_node_by_id (etm, save_id, etmc->model_data);
- else
- return NULL;
-}
-
-
-static void *
-etmc_value_at (ETreeModel *etm, ETreePath node, int col)
-{
- ETreeMemoryCallbacks *etmc = E_TREE_MEMORY_CALLBACKS(etm);
-
- return etmc->value_at (etm, node, col, etmc->model_data);
-}
-
-static void
-etmc_set_value_at (ETreeModel *etm, ETreePath node, int col, const void *val)
-{
- ETreeMemoryCallbacks *etmc = E_TREE_MEMORY_CALLBACKS(etm);
-
- etmc->set_value_at (etm, node, col, val, etmc->model_data);
-}
-
-static gboolean
-etmc_is_editable (ETreeModel *etm, ETreePath node, int col)
-{
- ETreeMemoryCallbacks *etmc = E_TREE_MEMORY_CALLBACKS(etm);
-
- return etmc->is_editable (etm, node, col, etmc->model_data);
-}
-
-
-/* The default for etmc_duplicate_value is to return the raw value. */
-static void *
-etmc_duplicate_value (ETreeModel *etm, int col, const void *value)
-{
- ETreeMemoryCallbacks *etmc = E_TREE_MEMORY_CALLBACKS(etm);
-
- if (etmc->duplicate_value)
- return etmc->duplicate_value (etm, col, value, etmc->model_data);
- else
- return (void *)value;
-}
-
-static void
-etmc_free_value (ETreeModel *etm, int col, void *value)
-{
- ETreeMemoryCallbacks *etmc = E_TREE_MEMORY_CALLBACKS(etm);
-
- if (etmc->free_value)
- etmc->free_value (etm, col, value, etmc->model_data);
-}
-
-static void *
-etmc_initialize_value (ETreeModel *etm, int col)
-{
- ETreeMemoryCallbacks *etmc = E_TREE_MEMORY_CALLBACKS(etm);
-
- if (etmc->initialize_value)
- return etmc->initialize_value (etm, col, etmc->model_data);
- else
- return NULL;
-}
-
-static gboolean
-etmc_value_is_empty (ETreeModel *etm, int col, const void *value)
-{
- ETreeMemoryCallbacks *etmc = E_TREE_MEMORY_CALLBACKS(etm);
-
- if (etmc->value_is_empty)
- return etmc->value_is_empty (etm, col, value, etmc->model_data);
- else
- return FALSE;
-}
-
-static char *
-etmc_value_to_string (ETreeModel *etm, int col, const void *value)
-{
- ETreeMemoryCallbacks *etmc = E_TREE_MEMORY_CALLBACKS(etm);
-
- if (etmc->value_to_string)
- return etmc->value_to_string (etm, col, value, etmc->model_data);
- else
- return g_strdup ("");
-}
-
-static void
-e_tree_memory_callbacks_class_init (GtkObjectClass *object_class)
-{
- ETreeModelClass *model_class = (ETreeModelClass *) object_class;
-
- model_class->icon_at = etmc_icon_at;
-
- model_class->column_count = etmc_column_count;
-
- model_class->has_save_id = etmc_has_save_id;
- model_class->get_save_id = etmc_get_save_id;
-
- model_class->has_get_node_by_id = etmc_has_get_node_by_id;
- model_class->get_node_by_id = etmc_get_node_by_id;
-
- model_class->value_at = etmc_value_at;
- model_class->set_value_at = etmc_set_value_at;
- model_class->is_editable = etmc_is_editable;
-
- model_class->duplicate_value = etmc_duplicate_value;
- model_class->free_value = etmc_free_value;
- model_class->initialize_value = etmc_initialize_value;
- model_class->value_is_empty = etmc_value_is_empty;
- model_class->value_to_string = etmc_value_to_string;
-}
-
-E_MAKE_TYPE(e_tree_memory_callbacks, "ETreeMemoryCallbacks", ETreeMemoryCallbacks, e_tree_memory_callbacks_class_init, NULL, PARENT_TYPE)
-
-/**
- * e_tree_memory_callbacks_new:
- *
- * This initializes a new ETreeMemoryCallbacksModel object.
- * ETreeMemoryCallbacksModel is an implementaiton of the somewhat
- * abstract class ETreeMemory. The ETreeMemoryCallbacksModel is
- * designed to allow people to easily create ETreeMemorys without
- * having to create a new GtkType derived from ETreeMemory every time
- * they need one.
- *
- * Instead, ETreeMemoryCallbacksModel uses a setup based in callback functions, every
- * callback function signature mimics the signature of each ETreeModel method
- * and passes the extra @data pointer to each one of the method to provide them
- * with any context they might want to use.
- *
- * ETreeMemoryCallbacks is to ETreeMemory as ETableSimple is to ETableModel.
- *
- * Return value: An ETreeMemoryCallbacks object (which is also an
- * ETreeMemory and thus an ETreeModel object).
- *
- */
-ETreeModel *
-e_tree_memory_callbacks_new (ETreeMemoryCallbacksIconAtFn icon_at,
-
- ETreeMemoryCallbacksColumnCountFn column_count,
-
- ETreeMemoryCallbacksHasSaveIdFn has_save_id,
- ETreeMemoryCallbacksGetSaveIdFn get_save_id,
-
- ETreeMemoryCallbacksHasGetNodeByIdFn has_get_node_by_id,
- ETreeMemoryCallbacksGetNodeByIdFn get_node_by_id,
-
- ETreeMemoryCallbacksValueAtFn value_at,
- ETreeMemoryCallbacksSetValueAtFn set_value_at,
- ETreeMemoryCallbacksIsEditableFn is_editable,
-
- ETreeMemoryCallbacksDuplicateValueFn duplicate_value,
- ETreeMemoryCallbacksFreeValueFn free_value,
- ETreeMemoryCallbacksInitializeValueFn initialize_value,
- ETreeMemoryCallbacksValueIsEmptyFn value_is_empty,
- ETreeMemoryCallbacksValueToStringFn value_to_string,
-
- gpointer model_data)
-{
- ETreeMemoryCallbacks *etmc;
-
- etmc = gtk_type_new (e_tree_memory_callbacks_get_type ());
-
- etmc->icon_at = icon_at;
-
- etmc->column_count = column_count;
-
- etmc->has_save_id = has_save_id;
- etmc->get_save_id = get_save_id;
-
- etmc->has_get_node_by_id = has_get_node_by_id;
- etmc->get_node_by_id = get_node_by_id;
-
- etmc->value_at = value_at;
- etmc->set_value_at = set_value_at;
- etmc->is_editable = is_editable;
-
- etmc->duplicate_value = duplicate_value;
- etmc->free_value = free_value;
- etmc->initialize_value = initialize_value;
- etmc->value_is_empty = value_is_empty;
- etmc->value_to_string = value_to_string;
-
- etmc->model_data = model_data;
-
- return (ETreeModel*)etmc;
-}
-
diff --git a/widgets/table/e-tree-memory-callbacks.h b/widgets/table/e-tree-memory-callbacks.h
deleted file mode 100644
index 441c5be9f4..0000000000
--- a/widgets/table/e-tree-memory-callbacks.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-#ifndef _E_TREE_MEMORY_CALLBACKS_H_
-#define _E_TREE_MEMORY_CALLBACKS_H_
-
-#include <gal/e-table/e-tree-memory.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define E_TREE_MEMORY_CALLBACKS_TYPE (e_tree_memory_callbacks_get_type ())
-#define E_TREE_MEMORY_CALLBACKS(o) (GTK_CHECK_CAST ((o), E_TREE_MEMORY_CALLBACKS_TYPE, ETreeMemoryCallbacks))
-#define E_TREE_MEMORY_CALLBACKS_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TREE_MEMORY_CALLBACKS_TYPE, ETreeMemoryCallbacksClass))
-#define E_IS_TREE_MEMORY_CALLBACKS(o) (GTK_CHECK_TYPE ((o), E_TREE_MEMORY_CALLBACKS_TYPE))
-#define E_IS_TREE_MEMORY_CALLBACKS_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TREE_MEMORY_CALLBACKS_TYPE))
-
-
-typedef GdkPixbuf* (*ETreeMemoryCallbacksIconAtFn) (ETreeModel *etree, ETreePath path, void *model_data);
-
-typedef gint (*ETreeMemoryCallbacksColumnCountFn) (ETreeModel *etree, void *model_data);
-
-typedef gboolean (*ETreeMemoryCallbacksHasSaveIdFn) (ETreeModel *etree, void *model_data);
-typedef gchar *(*ETreeMemoryCallbacksGetSaveIdFn) (ETreeModel *etree, ETreePath path, void *model_data);
-
-typedef gboolean (*ETreeMemoryCallbacksHasGetNodeByIdFn) (ETreeModel *etree, void *model_data);
-typedef ETreePath (*ETreeMemoryCallbacksGetNodeByIdFn) (ETreeModel *etree, gchar *save_id, void *model_data);
-
-typedef void* (*ETreeMemoryCallbacksValueAtFn) (ETreeModel *etree, ETreePath path, int col, void *model_data);
-typedef void (*ETreeMemoryCallbacksSetValueAtFn) (ETreeModel *etree, ETreePath path, int col, const void *val, void *model_data);
-typedef gboolean (*ETreeMemoryCallbacksIsEditableFn) (ETreeModel *etree, ETreePath path, int col, void *model_data);
-
-typedef void *(*ETreeMemoryCallbacksDuplicateValueFn) (ETreeModel *etm, int col, const void *val, void *data);
-typedef void (*ETreeMemoryCallbacksFreeValueFn) (ETreeModel *etm, int col, void *val, void *data);
-typedef void *(*ETreeMemoryCallbacksInitializeValueFn) (ETreeModel *etm, int col, void *data);
-typedef gboolean (*ETreeMemoryCallbacksValueIsEmptyFn) (ETreeModel *etm, int col, const void *val, void *data);
-typedef char *(*ETreeMemoryCallbacksValueToStringFn) (ETreeModel *etm, int col, const void *val, void *data);
-
-typedef struct {
- ETreeMemory parent;
-
- ETreeMemoryCallbacksIconAtFn icon_at;
-
- ETreeMemoryCallbacksColumnCountFn column_count;
-
- ETreeMemoryCallbacksHasSaveIdFn has_save_id;
- ETreeMemoryCallbacksGetSaveIdFn get_save_id;
-
- ETreeMemoryCallbacksHasGetNodeByIdFn has_get_node_by_id;
- ETreeMemoryCallbacksGetNodeByIdFn get_node_by_id;
-
- ETreeMemoryCallbacksValueAtFn value_at;
- ETreeMemoryCallbacksSetValueAtFn set_value_at;
- ETreeMemoryCallbacksIsEditableFn is_editable;
-
- ETreeMemoryCallbacksDuplicateValueFn duplicate_value;
- ETreeMemoryCallbacksFreeValueFn free_value;
- ETreeMemoryCallbacksInitializeValueFn initialize_value;
- ETreeMemoryCallbacksValueIsEmptyFn value_is_empty;
- ETreeMemoryCallbacksValueToStringFn value_to_string;
-
- gpointer model_data;
-} ETreeMemoryCallbacks;
-
-typedef struct {
- ETreeMemoryClass parent_class;
-} ETreeMemoryCallbacksClass;
-
-GtkType e_tree_memory_callbacks_get_type (void);
-
-ETreeModel *e_tree_memory_callbacks_new (ETreeMemoryCallbacksIconAtFn icon_at,
-
- ETreeMemoryCallbacksColumnCountFn column_count,
-
- ETreeMemoryCallbacksHasSaveIdFn has_save_id,
- ETreeMemoryCallbacksGetSaveIdFn get_save_id,
-
- ETreeMemoryCallbacksHasGetNodeByIdFn has_get_node_by_id,
- ETreeMemoryCallbacksGetNodeByIdFn get_node_by_id,
-
- ETreeMemoryCallbacksValueAtFn value_at,
- ETreeMemoryCallbacksSetValueAtFn set_value_at,
- ETreeMemoryCallbacksIsEditableFn is_editable,
-
- ETreeMemoryCallbacksDuplicateValueFn duplicate_value,
- ETreeMemoryCallbacksFreeValueFn free_value,
- ETreeMemoryCallbacksInitializeValueFn initialize_value,
- ETreeMemoryCallbacksValueIsEmptyFn value_is_empty,
- ETreeMemoryCallbacksValueToStringFn value_to_string,
-
- gpointer model_data);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_TREE_MEMORY_CALLBACKS_H_ */
diff --git a/widgets/table/e-tree-memory.c b/widgets/table/e-tree-memory.c
deleted file mode 100644
index e3283f7730..0000000000
--- a/widgets/table/e-tree-memory.c
+++ /dev/null
@@ -1,644 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-tree-memory.c: a Tree Model implementation that the programmer builds in memory.
- *
- * Author:
- * Chris Toshok (toshok@ximian.com)
- * Chris Lahey <clahey@ximian.com>
- *
- * Adapted from the gtree code and ETableModel.
- *
- * (C) 2000, 2001 Ximian, Inc.
- */
-#include <config.h>
-
-#include <stdio.h>
-#include <errno.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <stdlib.h>
-
-#include <gnome-xml/parser.h>
-#include <gnome-xml/xmlmemory.h>
-
-#include <gtk/gtksignal.h>
-#include "gal/util/e-util.h"
-#include "gal/util/e-xml-utils.h"
-#include "e-tree-memory.h"
-
-#define PARENT_TYPE E_TREE_MODEL_TYPE
-
-#define TREEPATH_CHUNK_AREA_SIZE (30 * sizeof (ETreeMemoryPath))
-
-static ETreeModel *parent_class;
-static GMemChunk *node_chunk;
-
-typedef struct ETreeMemoryPath ETreeMemoryPath;
-
-struct ETreeMemoryPath {
- gpointer node_data;
-
- /* parent/child/sibling pointers */
- ETreeMemoryPath *parent;
- ETreeMemoryPath *next_sibling;
- ETreeMemoryPath *prev_sibling;
- ETreeMemoryPath *first_child;
- ETreeMemoryPath *last_child;
-
- gint num_children;
-};
-
-struct ETreeMemoryPriv {
- ETreeMemoryPath *root;
- gboolean expanded_default; /* whether nodes are created expanded or collapsed by default */
- gint frozen;
- GFunc destroy_func;
- gpointer destroy_user_data;
-};
-
-
-/* ETreeMemoryPath functions */
-
-static int
-e_tree_memory_path_depth (ETreeMemoryPath *path)
-{
- int depth = 0;
-
- g_return_val_if_fail(path != NULL, -1);
-
- for ( path = path->parent; path; path = path->parent)
- depth ++;
- return depth;
-}
-
-static void
-e_tree_memory_path_insert (ETreeMemoryPath *parent, int position, ETreeMemoryPath *child)
-{
- g_return_if_fail (position <= parent->num_children && position >= -1);
-
- child->parent = parent;
-
- if (parent->first_child == NULL)
- parent->first_child = child;
-
- if (position == -1 || position == parent->num_children) {
- child->prev_sibling = parent->last_child;
- if (parent->last_child)
- parent->last_child->next_sibling = child;
- parent->last_child = child;
- } else {
- ETreeMemoryPath *c;
- for (c = parent->first_child; c; c = c->next_sibling) {
- if (position == 0) {
- child->next_sibling = c;
- child->prev_sibling = c->prev_sibling;
-
- if (child->next_sibling)
- child->next_sibling->prev_sibling = child;
- if (child->prev_sibling)
- child->prev_sibling->next_sibling = child;
-
- if (parent->first_child == c)
- parent->first_child = child;
- break;
- }
- position --;
- }
- }
-
- parent->num_children++;
-}
-
-static void
-e_tree_path_unlink (ETreeMemoryPath *path)
-{
- ETreeMemoryPath *parent = path->parent;
-
- /* unlink first/last child if applicable */
- if (parent) {
- if (path == parent->first_child)
- parent->first_child = path->next_sibling;
- if (path == parent->last_child)
- parent->last_child = path->prev_sibling;
-
- parent->num_children --;
- }
-
- /* unlink prev/next sibling links */
- if (path->next_sibling)
- path->next_sibling->prev_sibling = path->prev_sibling;
- if (path->prev_sibling)
- path->prev_sibling->next_sibling = path->next_sibling;
-
- path->parent = NULL;
- path->next_sibling = NULL;
- path->prev_sibling = NULL;
-}
-
-
-
-/**
- * e_tree_memory_freeze:
- * @etmm: the ETreeModel to freeze.
- *
- * This function prepares an ETreeModel for a period of much change.
- * All signals regarding changes to the tree are deferred until we
- * thaw the tree.
- *
- **/
-void
-e_tree_memory_freeze(ETreeMemory *etmm)
-{
- ETreeMemoryPriv *priv = etmm->priv;
-
- e_tree_model_pre_change(E_TREE_MODEL(etmm));
-
- priv->frozen ++;
-}
-
-/**
- * e_tree_memory_thaw:
- * @etmm: the ETreeMemory to thaw.
- *
- * This function thaws an ETreeMemory. All the defered signals can add
- * up to a lot, we don't know - so we just emit a model_changed
- * signal.
- *
- **/
-void
-e_tree_memory_thaw(ETreeMemory *etmm)
-{
- ETreeMemoryPriv *priv = etmm->priv;
-
- if (priv->frozen > 0)
- priv->frozen --;
- if (priv->frozen == 0) {
- e_tree_model_node_changed(E_TREE_MODEL(etmm), priv->root);
- }
-}
-
-
-/* virtual methods */
-
-static void
-etmm_destroy (GtkObject *object)
-{
- ETreeMemory *etmm = E_TREE_MEMORY (object);
- ETreeMemoryPriv *priv = etmm->priv;
-
- /* XXX lots of stuff to free here */
-
- if (priv->root)
- e_tree_memory_node_remove (etmm, priv->root);
-
- g_free (priv);
-
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
-}
-
-static ETreePath
-etmm_get_root (ETreeModel *etm)
-{
- ETreeMemoryPriv *priv = E_TREE_MEMORY(etm)->priv;
- return priv->root;
-}
-
-static ETreePath
-etmm_get_parent (ETreeModel *etm, ETreePath node)
-{
- ETreeMemoryPath *path = node;
- return path->parent;
-}
-
-static ETreePath
-etmm_get_first_child (ETreeModel *etm, ETreePath node)
-{
- ETreeMemoryPath *path = node;
- return path->first_child;
-}
-
-static ETreePath
-etmm_get_last_child (ETreeModel *etm, ETreePath node)
-{
- ETreeMemoryPath *path = node;
- return path->last_child;
-}
-
-static ETreePath
-etmm_get_next (ETreeModel *etm, ETreePath node)
-{
- ETreeMemoryPath *path = node;
- return path->next_sibling;
-}
-
-static ETreePath
-etmm_get_prev (ETreeModel *etm, ETreePath node)
-{
- ETreeMemoryPath *path = node;
- return path->prev_sibling;
-}
-
-static gboolean
-etmm_is_root (ETreeModel *etm, ETreePath node)
-{
- ETreeMemoryPath *path = node;
- return e_tree_memory_path_depth (path) == 0;
-}
-
-static gboolean
-etmm_is_expandable (ETreeModel *etm, ETreePath node)
-{
- ETreeMemoryPath *path = node;
- return path->first_child != NULL;
-}
-
-static guint
-etmm_get_children (ETreeModel *etm, ETreePath node, ETreePath **nodes)
-{
- ETreeMemoryPath *path = node;
- guint n_children;
-
- n_children = path->num_children;
-
- if (nodes) {
- ETreeMemoryPath *p;
- int i = 0;
-
- (*nodes) = g_malloc (sizeof (ETreePath) * n_children);
- for (p = path->first_child; p; p = p->next_sibling) {
- (*nodes)[i++] = p;
- }
- }
-
- return n_children;
-}
-
-static guint
-etmm_depth (ETreeModel *etm, ETreePath path)
-{
- return e_tree_memory_path_depth(path);
-}
-
-static gboolean
-etmm_get_expanded_default (ETreeModel *etm)
-{
- ETreeMemory *etmm = E_TREE_MEMORY (etm);
- ETreeMemoryPriv *priv = etmm->priv;
-
- return priv->expanded_default;
-}
-
-
-static void
-e_tree_memory_class_init (GtkObjectClass *klass)
-{
- ETreeModelClass *tree_class = (ETreeModelClass *) klass;
-
- parent_class = gtk_type_class (PARENT_TYPE);
-
- node_chunk = g_mem_chunk_create (ETreeMemoryPath, TREEPATH_CHUNK_AREA_SIZE, G_ALLOC_AND_FREE);
-
- klass->destroy = etmm_destroy;
-
- tree_class->get_root = etmm_get_root;
- tree_class->get_prev = etmm_get_prev;
- tree_class->get_next = etmm_get_next;
- tree_class->get_first_child = etmm_get_first_child;
- tree_class->get_last_child = etmm_get_last_child;
- tree_class->get_parent = etmm_get_parent;
-
- tree_class->is_root = etmm_is_root;
- tree_class->is_expandable = etmm_is_expandable;
- tree_class->get_children = etmm_get_children;
- tree_class->depth = etmm_depth;
- tree_class->get_expanded_default = etmm_get_expanded_default;
-}
-
-static void
-e_tree_memory_init (GtkObject *object)
-{
- ETreeMemory *etmm = (ETreeMemory *)object;
-
- ETreeMemoryPriv *priv;
-
- priv = g_new0 (ETreeMemoryPriv, 1);
- etmm->priv = priv;
-
- priv->root = NULL;
- priv->frozen = 0;
- priv->expanded_default = 0;
- priv->destroy_func = NULL;
- priv->destroy_user_data = NULL;
-}
-
-E_MAKE_TYPE(e_tree_memory, "ETreeMemory", ETreeMemory, e_tree_memory_class_init, e_tree_memory_init, PARENT_TYPE)
-
-
-
-/**
- * e_tree_memory_construct:
- * @etree:
- *
- *
- **/
-void
-e_tree_memory_construct (ETreeMemory *etmm)
-{
-}
-
-/**
- * e_tree_memory_new
- *
- * XXX docs here.
- *
- * return values: a newly constructed ETreeMemory.
- */
-ETreeMemory *
-e_tree_memory_new (void)
-{
- ETreeMemory *etmm;
-
- etmm = gtk_type_new (e_tree_memory_get_type ());
-
- e_tree_memory_construct(etmm);
-
- return etmm;
-}
-
-void
-e_tree_memory_set_expanded_default (ETreeMemory *etree, gboolean expanded)
-{
- etree->priv->expanded_default = expanded;
-}
-
-/**
- * e_tree_memory_node_get_data:
- * @etmm:
- * @node:
- *
- *
- *
- * Return value:
- **/
-gpointer
-e_tree_memory_node_get_data (ETreeMemory *etmm, ETreePath node)
-{
- ETreeMemoryPath *path = node;
-
- g_return_val_if_fail (path, NULL);
-
- return path->node_data;
-}
-
-/**
- * e_tree_memory_node_set_data:
- * @etmm:
- * @node:
- * @node_data:
- *
- *
- **/
-void
-e_tree_memory_node_set_data (ETreeMemory *etmm, ETreePath node, gpointer node_data)
-{
- ETreeMemoryPath *path = node;
-
- g_return_if_fail (path);
-
- path->node_data = node_data;
-}
-
-/**
- * e_tree_memory_node_insert:
- * @tree_model:
- * @parent_path:
- * @position:
- * @node_data:
- *
- *
- *
- * Return value:
- **/
-ETreePath
-e_tree_memory_node_insert (ETreeMemory *tree_model,
- ETreePath parent_node,
- int position,
- gpointer node_data)
-{
- ETreeMemoryPriv *priv;
- ETreeMemoryPath *new_path;
- ETreeMemoryPath *parent_path = parent_node;
-
- g_return_val_if_fail(tree_model != NULL, NULL);
-
- priv = tree_model->priv;
-
- g_return_val_if_fail (parent_path != NULL || priv->root == NULL, NULL);
-
- priv = tree_model->priv;
-
- if (!tree_model->priv->frozen)
- e_tree_model_pre_change(E_TREE_MODEL(tree_model));
-
- new_path = g_chunk_new0 (ETreeMemoryPath, node_chunk);
-
- new_path->node_data = node_data;
-
- if (parent_path != NULL) {
- e_tree_memory_path_insert (parent_path, position, new_path);
- if (!tree_model->priv->frozen)
- e_tree_model_node_inserted (E_TREE_MODEL(tree_model), parent_path, new_path);
- }
- else {
- priv->root = new_path;
- if (!tree_model->priv->frozen)
- e_tree_model_node_changed(E_TREE_MODEL(tree_model), new_path);
- }
-
- return new_path;
-}
-
-ETreePath e_tree_memory_node_insert_id (ETreeMemory *etree, ETreePath parent, int position, gpointer node_data, char *id)
-{
- return e_tree_memory_node_insert(etree, parent, position, node_data);
-}
-
-/**
- * e_tree_memory_node_insert_before:
- * @etree:
- * @parent:
- * @sibling:
- * @node_data:
- *
- *
- *
- * Return value:
- **/
-ETreePath
-e_tree_memory_node_insert_before (ETreeMemory *etree,
- ETreePath parent,
- ETreePath sibling,
- gpointer node_data)
-{
- ETreeMemoryPath *child;
- ETreeMemoryPath *parent_path = parent;
- ETreeMemoryPath *sibling_path = sibling;
- int position = 0;
-
- g_return_val_if_fail(etree != NULL, NULL);
-
- if (sibling != NULL) {
- for (child = parent_path->first_child; child; child = child->next_sibling) {
- if (child == sibling_path)
- break;
- position ++;
- }
- } else
- position = parent_path->num_children;
- return e_tree_memory_node_insert (etree, parent, position, node_data);
-}
-
-/* just blows away child data, doesn't take into account unlinking/etc */
-static void
-child_free(ETreeMemory *etree, ETreeMemoryPath *node)
-{
- ETreeMemoryPath *child, *next;
-
- child = node->first_child;
- while (child) {
- next = child->next_sibling;
- child_free(etree, child);
- child = next;
- }
-
- if (etree->priv->destroy_func) {
- etree->priv->destroy_func (node->node_data, etree->priv->destroy_user_data);
- }
-
- g_chunk_free(node, node_chunk);
-}
-
-/**
- * e_tree_memory_node_remove:
- * @etree:
- * @path:
- *
- *
- *
- * Return value:
- **/
-gpointer
-e_tree_memory_node_remove (ETreeMemory *etree, ETreePath node)
-{
- ETreeMemoryPath *path = node;
- ETreeMemoryPath *parent = path->parent;
- ETreeMemoryPath *sibling;
- gpointer ret = path->node_data;
- int old_position = 0;
-
- g_return_val_if_fail(etree != NULL, NULL);
-
- if (!etree->priv->frozen) {
- e_tree_model_pre_change(E_TREE_MODEL(etree));
- for (old_position = 0, sibling = path;
- sibling;
- old_position++, sibling = sibling->prev_sibling)
- /* Empty intentionally*/;
- old_position --;
- }
-
- /* unlink this node - we only have to unlink the root node being removed,
- since the others are only references from this node */
- e_tree_path_unlink (path);
-
- /*printf("removing %d nodes from position %d\n", visible, base);*/
- if (!etree->priv->frozen)
- e_tree_model_node_removed(E_TREE_MODEL(etree), parent, path, old_position);
-
- child_free(etree, path);
-
- if (path == etree->priv->root)
- etree->priv->root = NULL;
-
- return ret;
-}
-
-typedef struct {
- ETreeMemory *memory;
- gpointer closure;
- ETreeMemorySortCallback callback;
-} MemoryAndClosure;
-
-static int
-sort_callback(const void *data1, const void *data2, gpointer user_data)
-{
- ETreePath path1 = *(ETreePath *)data1;
- ETreePath path2 = *(ETreePath *)data2;
- MemoryAndClosure *mac = user_data;
- return (*mac->callback) (mac->memory, path1, path2, mac->closure);
-}
-
-void
-e_tree_memory_sort_node (ETreeMemory *etmm,
- ETreePath node,
- ETreeMemorySortCallback callback,
- gpointer user_data)
-{
- ETreeMemoryPath **children;
- ETreeMemoryPath *child;
- int count;
- int i;
- ETreeMemoryPath *path = node;
- MemoryAndClosure mac;
- ETreeMemoryPath *last;
-
- i = 0;
- for (child = path->first_child; child; child = child->next_sibling)
- i++;
-
- children = g_new(ETreeMemoryPath *, i);
-
- count = i;
-
- for (child = path->first_child, i = 0;
- child;
- child = child->next_sibling, i++) {
- children[i] = child;
- }
-
- mac.memory = etmm;
- mac.closure = user_data;
- mac.callback = callback;
-
- e_sort (children, count, sizeof (ETreeMemoryPath *), sort_callback, &mac);
-
- path->first_child = NULL;
- last = NULL;
- for (i = 0;
- i < count;
- i++) {
- children[i]->prev_sibling = last;
- if (last)
- last->next_sibling = children[i];
- else
- path->first_child = children[i];
- last = children[i];
- }
- if (last)
- last->next_sibling = NULL;
-
- path->last_child = last;
-
- g_free(children);
-
- e_tree_model_node_changed(E_TREE_MODEL(etmm), node);
-}
-
-void
-e_tree_memory_set_node_destroy_func (ETreeMemory *etmm,
- GFunc destroy_func,
- gpointer user_data)
-{
- etmm->priv->destroy_func = destroy_func;
- etmm->priv->destroy_user_data = user_data;
-}
diff --git a/widgets/table/e-tree-memory.h b/widgets/table/e-tree-memory.h
deleted file mode 100644
index c14940b6ac..0000000000
--- a/widgets/table/e-tree-memory.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TREE_MEMORY_H_
-#define _E_TREE_MEMORY_H_
-
-#include <gdk-pixbuf/gdk-pixbuf.h>
-#include <gal/e-table/e-tree-model.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-#define E_TREE_MEMORY_TYPE (e_tree_memory_get_type ())
-#define E_TREE_MEMORY(o) (GTK_CHECK_CAST ((o), E_TREE_MEMORY_TYPE, ETreeMemory))
-#define E_TREE_MEMORY_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TREE_MEMORY_TYPE, ETreeMemoryClass))
-#define E_IS_TREE_MEMORY(o) (GTK_CHECK_TYPE ((o), E_TREE_MEMORY_TYPE))
-#define E_IS_TREE_MEMORY_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TREE_MEMORY_TYPE))
-
-typedef struct ETreeMemory ETreeMemory;
-typedef struct ETreeMemoryPriv ETreeMemoryPriv;
-typedef struct ETreeMemoryClass ETreeMemoryClass;
-
-typedef int (*ETreeMemorySortCallback) (ETreeMemory *etmm, ETreePath path1, ETreePath path2, gpointer closure);
-
-struct ETreeMemory {
- ETreeModel base;
- ETreeMemoryPriv *priv;
-};
-
-struct ETreeMemoryClass {
- ETreeModelClass parent_class;
-};
-
-
-GtkType e_tree_memory_get_type (void);
-void e_tree_memory_construct (ETreeMemory *etree);
-ETreeMemory *e_tree_memory_new (void);
-
-/* node operations */
-ETreePath e_tree_memory_node_insert (ETreeMemory *etree,
- ETreePath parent,
- int position,
- gpointer node_data);
-ETreePath e_tree_memory_node_insert_id (ETreeMemory *etree,
- ETreePath parent,
- int position,
- gpointer node_data,
- char *id);
-ETreePath e_tree_memory_node_insert_before (ETreeMemory *etree,
- ETreePath parent,
- ETreePath sibling,
- gpointer node_data);
-gpointer e_tree_memory_node_remove (ETreeMemory *etree,
- ETreePath path);
-
-/* Freeze and thaw */
-void e_tree_memory_freeze (ETreeMemory *etree);
-void e_tree_memory_thaw (ETreeMemory *etree);
-void e_tree_memory_set_expanded_default (ETreeMemory *etree,
- gboolean expanded);
-gpointer e_tree_memory_node_get_data (ETreeMemory *etm,
- ETreePath node);
-void e_tree_memory_node_set_data (ETreeMemory *etm,
- ETreePath node,
- gpointer node_data);
-void e_tree_memory_sort_node (ETreeMemory *etm,
- ETreePath node,
- ETreeMemorySortCallback callback,
- gpointer user_data);
-void e_tree_memory_set_node_destroy_func (ETreeMemory *etmm,
- GFunc destroy_func,
- gpointer user_data);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_TREE_MEMORY_H */
-
diff --git a/widgets/table/e-tree-model.c b/widgets/table/e-tree-model.c
deleted file mode 100644
index 90ed489a74..0000000000
--- a/widgets/table/e-tree-model.c
+++ /dev/null
@@ -1,876 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-tree-model.c: a Tree Model
- *
- * Author:
- * Chris Toshok (toshok@ximian.com)
- * Chris Lahey <clahey@ximian.com>
- *
- * Adapted from the gtree code and ETableModel.
- *
- * (C) 2000, 2001 Ximian, Inc.
- */
-#include <config.h>
-
-#include <stdio.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <fcntl.h>
-
-#include <gnome-xml/parser.h>
-#include <gnome-xml/xmlmemory.h>
-
-#include <gtk/gtksignal.h>
-#include "gal/util/e-util.h"
-#include "gal/util/e-xml-utils.h"
-#include "e-tree-model.h"
-
-#define ETM_CLASS(e) ((ETreeModelClass *)((GtkObject *)e)->klass)
-
-#define PARENT_TYPE (gtk_object_get_type())
-
-static GtkObjectClass *parent_class;
-
-enum {
- PRE_CHANGE,
- NODE_CHANGED,
- NODE_DATA_CHANGED,
- NODE_COL_CHANGED,
- NODE_INSERTED,
- NODE_REMOVED,
- LAST_SIGNAL
-};
-
-static guint e_tree_model_signals [LAST_SIGNAL] = {0, };
-
-
-static void
-e_tree_model_class_init (GtkObjectClass *klass)
-{
- ETreeModelClass *tree_class = (ETreeModelClass *) klass;
-
- parent_class = gtk_type_class (PARENT_TYPE);
-
- e_tree_model_signals [PRE_CHANGE] =
- gtk_signal_new ("pre_change",
- GTK_RUN_LAST,
- klass->type,
- GTK_SIGNAL_OFFSET (ETreeModelClass, pre_change),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- e_tree_model_signals [NODE_CHANGED] =
- gtk_signal_new ("node_changed",
- GTK_RUN_LAST,
- klass->type,
- GTK_SIGNAL_OFFSET (ETreeModelClass, node_changed),
- gtk_marshal_NONE__POINTER,
- GTK_TYPE_NONE, 1, GTK_TYPE_POINTER);
-
- e_tree_model_signals [NODE_DATA_CHANGED] =
- gtk_signal_new ("node_data_changed",
- GTK_RUN_LAST,
- klass->type,
- GTK_SIGNAL_OFFSET (ETreeModelClass, node_data_changed),
- gtk_marshal_NONE__POINTER,
- GTK_TYPE_NONE, 1, GTK_TYPE_POINTER);
-
- e_tree_model_signals [NODE_COL_CHANGED] =
- gtk_signal_new ("node_col_changed",
- GTK_RUN_LAST,
- klass->type,
- GTK_SIGNAL_OFFSET (ETreeModelClass, node_col_changed),
- gtk_marshal_NONE__POINTER_INT,
- GTK_TYPE_NONE, 2, GTK_TYPE_POINTER, GTK_TYPE_INT);
-
- e_tree_model_signals [NODE_INSERTED] =
- gtk_signal_new ("node_inserted",
- GTK_RUN_LAST,
- klass->type,
- GTK_SIGNAL_OFFSET (ETreeModelClass, node_inserted),
- gtk_marshal_NONE__POINTER_POINTER,
- GTK_TYPE_NONE, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER);
-
- e_tree_model_signals [NODE_REMOVED] =
- gtk_signal_new ("node_removed",
- GTK_RUN_LAST,
- klass->type,
- GTK_SIGNAL_OFFSET (ETreeModelClass, node_removed),
- e_marshal_NONE__POINTER_POINTER_INT,
- GTK_TYPE_NONE, 3, GTK_TYPE_POINTER, GTK_TYPE_POINTER, GTK_TYPE_INT);
-
- gtk_object_class_add_signals (klass, e_tree_model_signals, LAST_SIGNAL);
-
- tree_class->get_root = NULL;
-
- tree_class->get_parent = NULL;
- tree_class->get_first_child = NULL;
- tree_class->get_last_child = NULL;
- tree_class->get_next = NULL;
- tree_class->get_prev = NULL;
-
- tree_class->is_root = NULL;
- tree_class->is_expandable = NULL;
- tree_class->get_children = NULL;
- tree_class->depth = NULL;
-
- tree_class->icon_at = NULL;
-
- tree_class->get_expanded_default = NULL;
- tree_class->column_count = NULL;
-
- tree_class->has_save_id = NULL;
- tree_class->get_save_id = NULL;
- tree_class->has_get_node_by_id = NULL;
- tree_class->get_node_by_id = NULL;
-
- tree_class->has_change_pending = NULL;
-
- tree_class->value_at = NULL;
- tree_class->set_value_at = NULL;
- tree_class->is_editable = NULL;
-
- tree_class->duplicate_value = NULL;
- tree_class->free_value = NULL;
- tree_class->initialize_value = NULL;
- tree_class->value_is_empty = NULL;
- tree_class->value_to_string = NULL;
-
- tree_class->pre_change = NULL;
- tree_class->node_changed = NULL;
- tree_class->node_data_changed = NULL;
- tree_class->node_col_changed = NULL;
- tree_class->node_inserted = NULL;
- tree_class->node_removed = NULL;
-}
-
-static void
-e_tree_init (GtkObject *object)
-{
-}
-
-E_MAKE_TYPE(e_tree_model, "ETreeModel", ETreeModel, e_tree_model_class_init, e_tree_init, PARENT_TYPE)
-
-
-/* signals */
-
-/**
- * e_tree_model_node_changed:
- * @tree_model:
- * @node:
- *
- *
- *
- * Return value:
- **/
-void
-e_tree_model_pre_change (ETreeModel *tree_model)
-{
- g_return_if_fail (tree_model != NULL);
- g_return_if_fail (E_IS_TREE_MODEL (tree_model));
-
- gtk_signal_emit (GTK_OBJECT (tree_model),
- e_tree_model_signals [PRE_CHANGE]);
-}
-
-/**
- * e_tree_model_node_changed:
- * @tree_model:
- * @node:
- *
- *
- *
- * Return value:
- **/
-void
-e_tree_model_node_changed (ETreeModel *tree_model, ETreePath node)
-{
- g_return_if_fail (tree_model != NULL);
- g_return_if_fail (E_IS_TREE_MODEL (tree_model));
-
- gtk_signal_emit (GTK_OBJECT (tree_model),
- e_tree_model_signals [NODE_CHANGED], node);
-}
-
-/**
- * e_tree_model_node_data_changed:
- * @tree_model:
- * @node:
- *
- *
- *
- * Return value:
- **/
-void
-e_tree_model_node_data_changed (ETreeModel *tree_model, ETreePath node)
-{
- g_return_if_fail (tree_model != NULL);
- g_return_if_fail (E_IS_TREE_MODEL (tree_model));
-
- gtk_signal_emit (GTK_OBJECT (tree_model),
- e_tree_model_signals [NODE_DATA_CHANGED], node);
-}
-
-/**
- * e_tree_model_node_col_changed:
- * @tree_model:
- * @node:
- *
- *
- *
- * Return value:
- **/
-void
-e_tree_model_node_col_changed (ETreeModel *tree_model, ETreePath node, int col)
-{
- g_return_if_fail (tree_model != NULL);
- g_return_if_fail (E_IS_TREE_MODEL (tree_model));
-
- gtk_signal_emit (GTK_OBJECT (tree_model),
- e_tree_model_signals [NODE_COL_CHANGED], node, col);
-}
-
-/**
- * e_tree_model_node_inserted:
- * @tree_model:
- * @parent_node:
- * @inserted_node:
- *
- *
- **/
-void
-e_tree_model_node_inserted (ETreeModel *tree_model,
- ETreePath parent_node,
- ETreePath inserted_node)
-{
- g_return_if_fail (tree_model != NULL);
- g_return_if_fail (E_IS_TREE_MODEL (tree_model));
-
- gtk_signal_emit (GTK_OBJECT (tree_model),
- e_tree_model_signals [NODE_INSERTED],
- parent_node, inserted_node);
-}
-
-/**
- * e_tree_model_node_removed:
- * @tree_model:
- * @parent_node:
- * @removed_node:
- *
- *
- **/
-void
-e_tree_model_node_removed (ETreeModel *tree_model, ETreePath parent_node, ETreePath removed_node, int old_position)
-{
- g_return_if_fail (tree_model != NULL);
- g_return_if_fail (E_IS_TREE_MODEL (tree_model));
-
- gtk_signal_emit (GTK_OBJECT (tree_model),
- e_tree_model_signals [NODE_REMOVED],
- parent_node, removed_node, old_position);
-}
-
-
-
-/**
- * e_tree_model_new
- *
- * XXX docs here.
- *
- * return values: a newly constructed ETreeModel.
- */
-ETreeModel *
-e_tree_model_new ()
-{
- ETreeModel *et;
-
- et = gtk_type_new (e_tree_model_get_type ());
-
- return et;
-}
-
-/**
- * e_tree_model_get_root
- * @etree: the ETreeModel of which we want the root node.
- *
- * Accessor for the root node of @etree.
- *
- * return values: the ETreePath corresponding to the root node.
- */
-ETreePath
-e_tree_model_get_root (ETreeModel *etree)
-{
- g_return_val_if_fail (etree != NULL, NULL);
- g_return_val_if_fail (E_IS_TREE_MODEL (etree), NULL);
-
- if (ETM_CLASS(etree)->get_root)
- return ETM_CLASS(etree)->get_root(etree);
- else
- return NULL;
-}
-
-/**
- * e_tree_model_node_get_parent:
- * @etree:
- * @path:
- *
- *
- *
- * Return value:
- **/
-ETreePath
-e_tree_model_node_get_parent (ETreeModel *etree, ETreePath node)
-{
- g_return_val_if_fail(etree != NULL, NULL);
- if (ETM_CLASS(etree)->get_parent)
- return ETM_CLASS(etree)->get_parent(etree, node);
- else
- return NULL;
-}
-
-/**
- * e_tree_model_node_get_first_child:
- * @etree:
- * @node:
- *
- *
- *
- * Return value:
- **/
-ETreePath
-e_tree_model_node_get_first_child (ETreeModel *etree, ETreePath node)
-{
- g_return_val_if_fail (etree != NULL, NULL);
- g_return_val_if_fail (E_IS_TREE_MODEL (etree), NULL);
-
- if (ETM_CLASS(etree)->get_first_child)
- return ETM_CLASS(etree)->get_first_child(etree, node);
- else
- return NULL;
-}
-
-/**
- * e_tree_model_node_get_last_child:
- * @etree:
- * @node:
- *
- *
- *
- * Return value:
- **/
-ETreePath
-e_tree_model_node_get_last_child (ETreeModel *etree, ETreePath node)
-{
- g_return_val_if_fail (etree != NULL, NULL);
- g_return_val_if_fail (E_IS_TREE_MODEL (etree), NULL);
-
- if (ETM_CLASS(etree)->get_last_child)
- return ETM_CLASS(etree)->get_last_child(etree, node);
- else
- return NULL;
-}
-
-
-/**
- * e_tree_model_node_get_next:
- * @etree:
- * @node:
- *
- *
- *
- * Return value:
- **/
-ETreePath
-e_tree_model_node_get_next (ETreeModel *etree, ETreePath node)
-{
- g_return_val_if_fail (etree != NULL, NULL);
- g_return_val_if_fail (E_IS_TREE_MODEL (etree), NULL);
-
- if (ETM_CLASS(etree)->get_next)
- return ETM_CLASS(etree)->get_next(etree, node);
- else
- return NULL;
-}
-
-/**
- * e_tree_model_node_get_prev:
- * @etree:
- * @node:
- *
- *
- *
- * Return value:
- **/
-ETreePath
-e_tree_model_node_get_prev (ETreeModel *etree, ETreePath node)
-{
- g_return_val_if_fail (etree != NULL, NULL);
- g_return_val_if_fail (E_IS_TREE_MODEL (etree), NULL);
-
- if (ETM_CLASS(etree)->get_prev)
- return ETM_CLASS(etree)->get_prev(etree, node);
- else
- return NULL;
-}
-
-/**
- * e_tree_model_node_is_root:
- * @etree:
- * @path:
- *
- *
- *
- * Return value:
- **/
-gboolean
-e_tree_model_node_is_root (ETreeModel *etree, ETreePath node)
-{
- g_return_val_if_fail(etree != NULL, FALSE);
-
- if (ETM_CLASS(etree)->is_root)
- return ETM_CLASS(etree)->is_root(etree, node);
- else
- return FALSE;
-}
-
-/**
- * e_tree_model_node_is_expandable:
- * @etree:
- * @path:
- *
- *
- *
- * Return value:
- **/
-gboolean
-e_tree_model_node_is_expandable (ETreeModel *etree, ETreePath node)
-{
- g_return_val_if_fail(etree != NULL, FALSE);
-
- if (ETM_CLASS(etree)->is_expandable)
- return ETM_CLASS(etree)->is_expandable(etree, node);
- else
- return FALSE;
-}
-
-guint
-e_tree_model_node_get_children (ETreeModel *etree, ETreePath node, ETreePath **nodes)
-{
- g_return_val_if_fail(etree != NULL, 0);
- if (ETM_CLASS(etree)->get_children)
- return ETM_CLASS(etree)->get_children (etree, node, nodes);
- else
- return 0;
-}
-
-/**
- * e_tree_model_node_depth:
- * @etree:
- * @path:
- *
- *
- *
- * Return value:
- **/
-guint
-e_tree_model_node_depth (ETreeModel *etree, ETreePath node)
-{
- g_return_val_if_fail (etree != NULL, 0);
- g_return_val_if_fail (E_IS_TREE_MODEL (etree), 0);
-
- if (ETM_CLASS(etree)->depth)
- return ETM_CLASS(etree)->depth(etree, node);
- else
- return 0;
-}
-
-/**
- * e_tree_model_icon_at
- * @etree: The ETreeModel.
- * @path: The ETreePath to the node we're getting the icon of.
- *
- * XXX docs here.
- *
- * return values: the GdkPixbuf associated with this node.
- */
-GdkPixbuf *
-e_tree_model_icon_at (ETreeModel *etree, ETreePath node)
-{
- g_return_val_if_fail (etree != NULL, NULL);
- g_return_val_if_fail (E_IS_TREE_MODEL (etree), NULL);
-
- if (ETM_CLASS(etree)->icon_at)
- return ETM_CLASS(etree)->icon_at (etree, node);
- else
- return NULL;
-}
-
-/**
- * e_tree_model_get_expanded_default
- * @etree: The ETreeModel.
- *
- * XXX docs here.
- *
- * return values: Whether nodes should be expanded by default.
- */
-gboolean
-e_tree_model_get_expanded_default (ETreeModel *etree)
-{
- g_return_val_if_fail (etree != NULL, FALSE);
- g_return_val_if_fail (E_IS_TREE_MODEL (etree), FALSE);
-
- if (ETM_CLASS(etree)->get_expanded_default)
- return ETM_CLASS(etree)->get_expanded_default (etree);
- else
- return FALSE;
-}
-
-/**
- * e_tree_model_column_count
- * @etree: The ETreeModel.
- *
- * XXX docs here.
- *
- * return values: The number of columns
- */
-gint
-e_tree_model_column_count (ETreeModel *etree)
-{
- g_return_val_if_fail (etree != NULL, 0);
- g_return_val_if_fail (E_IS_TREE_MODEL (etree), 0);
-
- if (ETM_CLASS(etree)->column_count)
- return ETM_CLASS(etree)->column_count (etree);
- else
- return 0;
-}
-
-/**
- * e_tree_model_has_save_id
- * @etree: The ETreeModel.
- *
- * XXX docs here.
- *
- * return values: Whether this tree has valid save id data.
- */
-gboolean
-e_tree_model_has_save_id (ETreeModel *etree)
-{
- g_return_val_if_fail (etree != NULL, FALSE);
- g_return_val_if_fail (E_IS_TREE_MODEL (etree), FALSE);
-
- if (ETM_CLASS(etree)->has_save_id)
- return ETM_CLASS(etree)->has_save_id (etree);
- else
- return FALSE;
-}
-
-/**
- * e_tree_model_get_save_id
- * @etree: The ETreeModel.
- * @node: The ETreePath.
- *
- * XXX docs here.
- *
- * return values: The save id for this path.
- */
-gchar *
-e_tree_model_get_save_id (ETreeModel *etree, ETreePath node)
-{
- g_return_val_if_fail (etree != NULL, NULL);
- g_return_val_if_fail (E_IS_TREE_MODEL (etree), NULL);
-
- if (ETM_CLASS(etree)->get_save_id)
- return ETM_CLASS(etree)->get_save_id (etree, node);
- else
- return NULL;
-}
-
-/**
- * e_tree_model_has_get_node_by_id
- * @etree: The ETreeModel.
- *
- * XXX docs here.
- *
- * return values: Whether this tree can quickly get a node from its save id.
- */
-gboolean
-e_tree_model_has_get_node_by_id (ETreeModel *etree)
-{
- g_return_val_if_fail (etree != NULL, FALSE);
- g_return_val_if_fail (E_IS_TREE_MODEL (etree), FALSE);
-
- if (ETM_CLASS(etree)->has_get_node_by_id)
- return ETM_CLASS(etree)->has_get_node_by_id (etree);
- else
- return FALSE;
-}
-
-/**
- * e_tree_model_get_node_by_id
- * @etree: The ETreeModel.
- * @node: The ETreePath.
- *
- * get_node_by_id(get_save_id(node)) should be the original node.
- * Likewise if get_node_by_id is not NULL, then
- * get_save_id(get_node_by_id(string)) should be a copy of the
- * original string.
- *
- * return values: The path for this save id.
- */
-ETreePath
-e_tree_model_get_node_by_id (ETreeModel *etree, gchar *save_id)
-{
- g_return_val_if_fail (etree != NULL, NULL);
- g_return_val_if_fail (E_IS_TREE_MODEL (etree), NULL);
-
- if (ETM_CLASS(etree)->get_node_by_id)
- return ETM_CLASS(etree)->get_node_by_id (etree, save_id);
- else
- return NULL;
-}
-
-/**
- * e_tree_model_has_change_pending
- * @etree: The ETreeModel.
- *
- * XXX docs here.
- *
- * return values: Whether this tree has valid save id data.
- */
-gboolean
-e_tree_model_has_change_pending (ETreeModel *etree)
-{
- g_return_val_if_fail (etree != NULL, FALSE);
- g_return_val_if_fail (E_IS_TREE_MODEL (etree), FALSE);
-
- if (ETM_CLASS(etree)->has_change_pending)
- return ETM_CLASS(etree)->has_change_pending (etree);
- else
- return FALSE;
-}
-
-/**
- * e_tree_model_icon_of_node
- * @etree: The ETreeModel.
- * @path: The ETreePath to the node we're getting the icon of.
- *
- * XXX docs here.
- *
- * return values: the GdkPixbuf associated with this node.
- */
-void *
-e_tree_model_value_at (ETreeModel *etree, ETreePath node, int col)
-{
- g_return_val_if_fail (etree != NULL, NULL);
- g_return_val_if_fail (E_IS_TREE_MODEL (etree), NULL);
-
- if (ETM_CLASS(etree)->value_at)
- return ETM_CLASS(etree)->value_at (etree, node, col);
- else
- return NULL;
-}
-
-/**
- * e_tree_model_icon_of_node
- * @etree: The ETreeModel.
- * @path: The ETreePath to the node we're getting the icon of.
- *
- * XXX docs here.
- *
- * return values: the GdkPixbuf associated with this node.
- */
-void
-e_tree_model_set_value_at (ETreeModel *etree, ETreePath node, int col, const void *val)
-{
- g_return_if_fail (etree != NULL);
- g_return_if_fail (E_IS_TREE_MODEL (etree));
-
- if (ETM_CLASS(etree)->set_value_at)
- ETM_CLASS(etree)->set_value_at (etree, node, col, val);
-}
-
-/**
- * e_tree_model_node_is_editable:
- * @etree:
- * @path:
- *
- *
- *
- * Return value:
- **/
-gboolean
-e_tree_model_node_is_editable (ETreeModel *etree, ETreePath node, int col)
-{
- g_return_val_if_fail(etree != NULL, FALSE);
-
- if (ETM_CLASS(etree)->is_editable)
- return ETM_CLASS(etree)->is_editable(etree, node, col);
- else
- return FALSE;
-}
-
-/**
- * e_tree_model_duplicate_value:
- * @etree:
- * @path:
- *
- *
- *
- * Return value:
- **/
-void *
-e_tree_model_duplicate_value (ETreeModel *etree, int col, const void *value)
-{
- g_return_val_if_fail(etree != NULL, NULL);
-
- if (ETM_CLASS(etree)->duplicate_value)
- return ETM_CLASS(etree)->duplicate_value(etree, col, value);
- else
- return NULL;
-}
-
-/**
- * e_tree_model_free_value:
- * @etree:
- * @path:
- *
- *
- *
- * Return value:
- **/
-void
-e_tree_model_free_value (ETreeModel *etree, int col, void *value)
-{
- g_return_if_fail(etree != NULL);
-
- if (ETM_CLASS(etree)->free_value)
- ETM_CLASS(etree)->free_value(etree, col, value);
-}
-
-/**
- * e_tree_model_initialize_value:
- * @etree:
- * @path:
- *
- *
- *
- * Return value:
- **/
-void *
-e_tree_model_initialize_value (ETreeModel *etree, int col)
-{
- g_return_val_if_fail(etree != NULL, NULL);
-
- if (ETM_CLASS(etree)->initialize_value)
- return ETM_CLASS(etree)->initialize_value(etree, col);
- else
- return NULL;
-}
-
-/**
- * e_tree_model_value_is_empty:
- * @etree:
- * @path:
- *
- *
- *
- * Return value:
- **/
-gboolean
-e_tree_model_value_is_empty (ETreeModel *etree, int col, const void *value)
-{
- g_return_val_if_fail(etree != NULL, TRUE);
-
- if (ETM_CLASS(etree)->value_is_empty)
- return ETM_CLASS(etree)->value_is_empty(etree, col, value);
- else
- return TRUE;
-}
-
-/**
- * e_tree_model_value_to_string:
- * @etree:
- * @path:
- *
- *
- *
- * Return value:
- **/
-char *
-e_tree_model_value_to_string (ETreeModel *etree, int col, const void *value)
-{
- g_return_val_if_fail(etree != NULL, g_strdup(""));
-
- if (ETM_CLASS(etree)->value_to_string)
- return ETM_CLASS(etree)->value_to_string(etree, col, value);
- else
- return g_strdup("");
-}
-
-/**
- * e_tree_model_node_traverse:
- * @model:
- * @path:
- * @func:
- * @data:
- *
- *
- **/
-void
-e_tree_model_node_traverse (ETreeModel *model, ETreePath path, ETreePathFunc func, gpointer data)
-{
- ETreePath child;
-
- g_return_if_fail (model != NULL);
- g_return_if_fail (E_IS_TREE_MODEL (model));
- g_return_if_fail (path != NULL);
-
- child = e_tree_model_node_get_first_child (model, path);
-
- while (child) {
- ETreePath next_child;
-
- next_child = e_tree_model_node_get_next (model, child);
- e_tree_model_node_traverse (model, child, func, data);
- if (func (model, child, data) == TRUE)
- return;
-
- child = next_child;
- }
-}
-
-/**
- * e_tree_model_node_traverse_preorder:
- * @model:
- * @path:
- * @func:
- * @data:
- *
- *
- **/
-void
-e_tree_model_node_traverse_preorder (ETreeModel *model, ETreePath path, ETreePathFunc func, gpointer data)
-{
- ETreePath child;
-
- g_return_if_fail (model != NULL);
- g_return_if_fail (E_IS_TREE_MODEL (model));
- g_return_if_fail (path != NULL);
-
- child = e_tree_model_node_get_first_child (model, path);
-
- while (child) {
- ETreePath next_child;
-
- if (func (model, child, data) == TRUE)
- return;
-
- next_child = e_tree_model_node_get_next (model, child);
- e_tree_model_node_traverse_preorder (model, child, func, data);
-
- child = next_child;
- }
-}
-
diff --git a/widgets/table/e-tree-model.h b/widgets/table/e-tree-model.h
deleted file mode 100644
index 1b48e23963..0000000000
--- a/widgets/table/e-tree-model.h
+++ /dev/null
@@ -1,184 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TREE_MODEL_H_
-#define _E_TREE_MODEL_H_
-
-#include <gdk-pixbuf/gdk-pixbuf.h>
-#include <gtk/gtkobject.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-#define E_TREE_MODEL_TYPE (e_tree_model_get_type ())
-#define E_TREE_MODEL(o) (GTK_CHECK_CAST ((o), E_TREE_MODEL_TYPE, ETreeModel))
-#define E_TREE_MODEL_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TREE_MODEL_TYPE, ETreeModelClass))
-#define E_IS_TREE_MODEL(o) (GTK_CHECK_TYPE ((o), E_TREE_MODEL_TYPE))
-#define E_IS_TREE_MODEL_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TREE_MODEL_TYPE))
-
-typedef void * ETreePath;
-typedef struct ETreeModel ETreeModel;
-typedef struct ETreeModelClass ETreeModelClass;
-typedef gint (*ETreePathCompareFunc)(ETreeModel *model, ETreePath path1, ETreePath path2);
-typedef gboolean (*ETreePathFunc)(ETreeModel *model, ETreePath path, gpointer data);
-
-struct ETreeModel {
- GtkObject base;
-};
-
-struct ETreeModelClass {
- GtkObjectClass parent_class;
-
- /*
- * Virtual methods
- */
- ETreePath (*get_root) (ETreeModel *etm);
-
- ETreePath (*get_parent) (ETreeModel *etm, ETreePath node);
- ETreePath (*get_first_child) (ETreeModel *etm, ETreePath node);
- ETreePath (*get_last_child) (ETreeModel *etm, ETreePath node);
- ETreePath (*get_next) (ETreeModel *etm, ETreePath node);
- ETreePath (*get_prev) (ETreeModel *etm, ETreePath node);
-
- gboolean (*is_root) (ETreeModel *etm, ETreePath node);
- gboolean (*is_expandable) (ETreeModel *etm, ETreePath node);
- guint (*get_children) (ETreeModel *etm, ETreePath node, ETreePath **paths);
- guint (*depth) (ETreeModel *etm, ETreePath node);
-
- GdkPixbuf *(*icon_at) (ETreeModel *etm, ETreePath node);
-
- gboolean (*get_expanded_default) (ETreeModel *etm);
- gint (*column_count) (ETreeModel *etm);
-
- gboolean (*has_save_id) (ETreeModel *etm);
- gchar *(*get_save_id) (ETreeModel *etm, ETreePath node);
-
- gboolean (*has_get_node_by_id) (ETreeModel *etm);
- ETreePath (*get_node_by_id) (ETreeModel *etm, gchar *save_id);
-
- gboolean (*has_change_pending) (ETreeModel *etm);
-
- /*
- * ETable analogs
- */
- void *(*value_at) (ETreeModel *etm, ETreePath node, int col);
- void (*set_value_at) (ETreeModel *etm, ETreePath node, int col, const void *val);
- gboolean (*is_editable) (ETreeModel *etm, ETreePath node, int col);
-
- void *(*duplicate_value) (ETreeModel *etm, int col, const void *value);
- void (*free_value) (ETreeModel *etm, int col, void *value);
- void *(*initialize_value) (ETreeModel *etm, int col);
- gboolean (*value_is_empty) (ETreeModel *etm, int col, const void *value);
- char *(*value_to_string) (ETreeModel *etm, int col, const void *value);
-
- /*
- * Signals
- */
- void (*pre_change) (ETreeModel *etm);
- void (*node_changed) (ETreeModel *etm, ETreePath node);
- void (*node_data_changed) (ETreeModel *etm, ETreePath node);
- void (*node_col_changed) (ETreeModel *etm, ETreePath node, int col);
- void (*node_inserted) (ETreeModel *etm, ETreePath parent, ETreePath inserted_node);
- void (*node_removed) (ETreeModel *etm, ETreePath parent, ETreePath removed_node, int old_position);
-};
-GtkType e_tree_model_get_type (void);
-ETreeModel *e_tree_model_new (void);
-
-/* tree traversal operations */
-ETreePath e_tree_model_get_root (ETreeModel *etree);
-ETreePath e_tree_model_node_get_parent (ETreeModel *etree,
- ETreePath path);
-ETreePath e_tree_model_node_get_first_child (ETreeModel *etree,
- ETreePath path);
-ETreePath e_tree_model_node_get_last_child (ETreeModel *etree,
- ETreePath path);
-ETreePath e_tree_model_node_get_next (ETreeModel *etree,
- ETreePath path);
-ETreePath e_tree_model_node_get_prev (ETreeModel *etree,
- ETreePath path);
-
-/* node accessors */
-gboolean e_tree_model_node_is_root (ETreeModel *etree,
- ETreePath path);
-gboolean e_tree_model_node_is_expandable (ETreeModel *etree,
- ETreePath path);
-guint e_tree_model_node_get_children (ETreeModel *etree,
- ETreePath path,
- ETreePath **paths);
-guint e_tree_model_node_depth (ETreeModel *etree,
- ETreePath path);
-GdkPixbuf *e_tree_model_icon_at (ETreeModel *etree,
- ETreePath path);
-gboolean e_tree_model_get_expanded_default (ETreeModel *model);
-gint e_tree_model_column_count (ETreeModel *model);
-
-
-gboolean e_tree_model_has_save_id (ETreeModel *model);
-gchar *e_tree_model_get_save_id (ETreeModel *model,
- ETreePath node);
-
-gboolean e_tree_model_has_get_node_by_id (ETreeModel *model);
-ETreePath e_tree_model_get_node_by_id (ETreeModel *model,
- gchar *save_id);
-
-gboolean e_tree_model_has_change_pending (ETreeModel *model);
-
-void *e_tree_model_value_at (ETreeModel *etree,
- ETreePath node,
- int col);
-void e_tree_model_set_value_at (ETreeModel *etree,
- ETreePath node,
- int col,
- const void *val);
-gboolean e_tree_model_node_is_editable (ETreeModel *etree,
- ETreePath node,
- int col);
-void *e_tree_model_duplicate_value (ETreeModel *etree,
- int col,
- const void *value);
-void e_tree_model_free_value (ETreeModel *etree,
- int col,
- void *value);
-void *e_tree_model_initialize_value (ETreeModel *etree,
- int col);
-gboolean e_tree_model_value_is_empty (ETreeModel *etree,
- int col,
- const void *value);
-char *e_tree_model_value_to_string (ETreeModel *etree,
- int col,
- const void *value);
-
-/* depth first traversal of path's descendents, calling func on each one */
-void e_tree_model_node_traverse (ETreeModel *model,
- ETreePath path,
- ETreePathFunc func,
- gpointer data);
-void e_tree_model_node_traverse_preorder (ETreeModel *model,
- ETreePath path,
- ETreePathFunc func,
- gpointer data);
-
-/*
-** Routines for emitting signals on the ETreeModel
-*/
-void e_tree_model_pre_change (ETreeModel *tree_model);
-void e_tree_model_node_changed (ETreeModel *tree_model,
- ETreePath node);
-void e_tree_model_node_data_changed (ETreeModel *tree_model,
- ETreePath node);
-void e_tree_model_node_col_changed (ETreeModel *tree_model,
- ETreePath node,
- int col);
-void e_tree_model_node_inserted (ETreeModel *tree_model,
- ETreePath parent_node,
- ETreePath inserted_node);
-void e_tree_model_node_removed (ETreeModel *tree_model,
- ETreePath parent_node,
- ETreePath removed_node,
- int old_position);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_TREE_MODEL_H */
diff --git a/widgets/table/e-tree-scrolled.c b/widgets/table/e-tree-scrolled.c
deleted file mode 100644
index ba1780036c..0000000000
--- a/widgets/table/e-tree-scrolled.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * E-tree-scrolled.c: A graphical view of a Tree.
- *
- * Author:
- * Chris Lahey <clahey@ximian.com>
- * Miguel de Icaza (miguel@ximian.com)
- *
- * Copyright 2000, 1999, Ximian, Inc
- */
-#include <config.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdio.h>
-#include <libgnomeui/gnome-canvas.h>
-#include <gtk/gtksignal.h>
-#include <gnome-xml/parser.h>
-#include <gnome-xml/xmlmemory.h>
-#include <gal/util/e-util.h>
-
-#include "e-tree-scrolled.h"
-
-#define COLUMN_HEADER_HEIGHT 16
-
-#define PARENT_TYPE e_scroll_frame_get_type ()
-
-static GtkObjectClass *parent_class;
-
-enum {
- ARG_0,
- ARG_TREE,
-};
-
-static void
-e_tree_scrolled_init (GtkObject *object)
-{
- ETreeScrolled *ets;
- EScrollFrame *scroll_frame;
-
- ets = E_TREE_SCROLLED (object);
- scroll_frame = E_SCROLL_FRAME (object);
-
- GTK_WIDGET_SET_FLAGS (ets, GTK_CAN_FOCUS);
-
- ets->tree = gtk_type_new(e_tree_get_type());
-
- e_scroll_frame_set_policy (scroll_frame, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
- e_scroll_frame_set_shadow_type (scroll_frame, GTK_SHADOW_IN);
-}
-
-static void
-e_tree_scrolled_real_construct (ETreeScrolled *ets)
-{
- gtk_container_add(GTK_CONTAINER(ets), GTK_WIDGET(ets->tree));
-
- gtk_widget_show(GTK_WIDGET(ets->tree));
-}
-
-ETreeScrolled *e_tree_scrolled_construct (ETreeScrolled *ets,
- ETreeModel *etm,
- ETableExtras *ete,
- const char *spec,
- const char *state)
-{
- g_return_val_if_fail(ets != NULL, NULL);
- g_return_val_if_fail(E_IS_TREE_SCROLLED(ets), NULL);
- g_return_val_if_fail(etm != NULL, NULL);
- g_return_val_if_fail(E_IS_TREE_MODEL(etm), NULL);
- g_return_val_if_fail(ete == NULL || E_IS_TABLE_EXTRAS(ete), NULL);
- g_return_val_if_fail(spec != NULL, NULL);
-
- e_tree_construct(ets->tree, etm, ete, spec, state);
-
- e_tree_scrolled_real_construct(ets);
-
- return ets;
-}
-
-GtkWidget *e_tree_scrolled_new (ETreeModel *etm,
- ETableExtras *ete,
- const char *spec,
- const char *state)
-{
- ETreeScrolled *ets;
-
- g_return_val_if_fail(etm != NULL, NULL);
- g_return_val_if_fail(E_IS_TREE_MODEL(etm), NULL);
- g_return_val_if_fail(ete == NULL || E_IS_TABLE_EXTRAS(ete), NULL);
- g_return_val_if_fail(spec != NULL, NULL);
-
- ets = E_TREE_SCROLLED (gtk_widget_new (e_tree_scrolled_get_type (),
- "hadjustment", NULL,
- "vadjustment", NULL,
- NULL));
-
- ets = e_tree_scrolled_construct (ets, etm, ete, spec, state);
-
- return GTK_WIDGET (ets);
-}
-
-ETreeScrolled *e_tree_scrolled_construct_from_spec_file (ETreeScrolled *ets,
- ETreeModel *etm,
- ETableExtras *ete,
- const char *spec_fn,
- const char *state_fn)
-{
- g_return_val_if_fail(ets != NULL, NULL);
- g_return_val_if_fail(E_IS_TREE_SCROLLED(ets), NULL);
- g_return_val_if_fail(etm != NULL, NULL);
- g_return_val_if_fail(E_IS_TREE_MODEL(etm), NULL);
- g_return_val_if_fail(ete == NULL || E_IS_TABLE_EXTRAS(ete), NULL);
- g_return_val_if_fail(spec_fn != NULL, NULL);
-
- e_tree_construct_from_spec_file(ets->tree, etm, ete, spec_fn, state_fn);
-
- e_tree_scrolled_real_construct(ets);
-
- return ets;
-}
-
-GtkWidget *e_tree_scrolled_new_from_spec_file (ETreeModel *etm,
- ETableExtras *ete,
- const char *spec_fn,
- const char *state_fn)
-{
- ETreeScrolled *ets;
-
- g_return_val_if_fail(etm != NULL, NULL);
- g_return_val_if_fail(E_IS_TREE_MODEL(etm), NULL);
- g_return_val_if_fail(ete == NULL || E_IS_TABLE_EXTRAS(ete), NULL);
- g_return_val_if_fail(spec_fn != NULL, NULL);
-
- ets = gtk_type_new (e_tree_scrolled_get_type ());
-
- ets = e_tree_scrolled_construct_from_spec_file (ets, etm, ete, spec_fn, state_fn);
-
- return GTK_WIDGET (ets);
-}
-
-ETree *
-e_tree_scrolled_get_tree (ETreeScrolled *ets)
-{
- return ets->tree;
-}
-
-static void
-ets_get_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- ETreeScrolled *ets = E_TREE_SCROLLED (o);
-
- switch (arg_id){
- case ARG_TREE:
- if (ets->tree)
- GTK_VALUE_OBJECT (*arg) = GTK_OBJECT(ets->tree);
- else
- GTK_VALUE_OBJECT (*arg) = NULL;
- break;
- }
-}
-
-/* Grab_focus handler for the scrolled ETree */
-static void
-ets_grab_focus (GtkWidget *widget)
-{
- ETreeScrolled *ets;
-
- ets = E_TREE_SCROLLED (widget);
-
- gtk_widget_grab_focus (GTK_WIDGET (ets->tree));
-}
-
-/* Focus handler for the scrolled ETree */
-static gint
-ets_focus (GtkContainer *container, GtkDirectionType direction)
-{
- ETreeScrolled *ets;
-
- ets = E_TREE_SCROLLED (container);
-
- return gtk_container_focus (GTK_CONTAINER (ets->tree), direction);
-}
-
-static void
-e_tree_scrolled_class_init (ETreeScrolledClass *class)
-{
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
- GtkContainerClass *container_class;
-
- object_class = (GtkObjectClass *) class;
- widget_class = (GtkWidgetClass *) class;
- container_class = (GtkContainerClass *) class;
-
- parent_class = gtk_type_class (PARENT_TYPE);
-
- object_class->get_arg = ets_get_arg;
-
- widget_class->grab_focus = ets_grab_focus;
-
- container_class->focus = ets_focus;
-
- gtk_object_add_arg_type ("ETreeScrolled::tree", GTK_TYPE_OBJECT,
- GTK_ARG_READABLE, ARG_TREE);
-}
-
-E_MAKE_TYPE(e_tree_scrolled, "ETreeScrolled", ETreeScrolled, e_tree_scrolled_class_init, e_tree_scrolled_init, PARENT_TYPE);
-
diff --git a/widgets/table/e-tree-scrolled.h b/widgets/table/e-tree-scrolled.h
deleted file mode 100644
index 374a036f0b..0000000000
--- a/widgets/table/e-tree-scrolled.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TREE_SCROLLED_H_
-#define _E_TREE_SCROLLED_H_
-
-#include <gal/widgets/e-scroll-frame.h>
-#include <gal/e-table/e-tree-model.h>
-#include <gal/e-table/e-tree.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_TREE_SCROLLED_TYPE (e_tree_scrolled_get_type ())
-#define E_TREE_SCROLLED(o) (GTK_CHECK_CAST ((o), E_TREE_SCROLLED_TYPE, ETreeScrolled))
-#define E_TREE_SCROLLED_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TREE_SCROLLED_TYPE, ETreeScrolledClass))
-#define E_IS_TREE_SCROLLED(o) (GTK_CHECK_TYPE ((o), E_TREE_SCROLLED_TYPE))
-#define E_IS_TREE_SCROLLED_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TREE_SCROLLED_TYPE))
-
-typedef struct {
- EScrollFrame parent;
-
- ETree *tree;
-} ETreeScrolled;
-
-typedef struct {
- EScrollFrameClass parent_class;
-} ETreeScrolledClass;
-
-GtkType e_tree_scrolled_get_type (void);
-
-ETreeScrolled *e_tree_scrolled_construct (ETreeScrolled *ets,
- ETreeModel *etm,
- ETableExtras *ete,
- const char *spec,
- const char *state);
-GtkWidget *e_tree_scrolled_new (ETreeModel *etm,
- ETableExtras *ete,
- const char *spec,
- const char *state);
-
-ETreeScrolled *e_tree_scrolled_construct_from_spec_file (ETreeScrolled *ets,
- ETreeModel *etm,
- ETableExtras *ete,
- const char *spec_fn,
- const char *state_fn);
-GtkWidget *e_tree_scrolled_new_from_spec_file (ETreeModel *etm,
- ETableExtras *ete,
- const char *spec_fn,
- const char *state_fn);
-
-ETree *e_tree_scrolled_get_tree (ETreeScrolled *ets);
-
-END_GNOME_DECLS
-
-#endif /* _E_TREE_SCROLLED_H_ */
-
diff --git a/widgets/table/e-tree-selection-model.c b/widgets/table/e-tree-selection-model.c
deleted file mode 100644
index 4c8a45c92d..0000000000
--- a/widgets/table/e-tree-selection-model.c
+++ /dev/null
@@ -1,1242 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-tree-selection-model.c: a Selection Model
- *
- * Author:
- * Christopher James Lahey <clahey@ximian.com>
- *
- * (C) 2000, 2001 Ximian, Inc.
- */
-#include <config.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtksignal.h>
-#include "e-tree-selection-model.h"
-#include <gal/util/e-bit-array.h>
-#include <gal/util/e-sorter.h>
-#include <gal/util/e-util.h>
-#include <gdk/gdkkeysyms.h>
-#include <gal/e-table/e-tree-sorted.h>
-#include <gal/e-table/e-tree-table-adapter.h>
-
-#define ETSM_CLASS(e) ((ETreeSelectionModelClass *)((GtkObject *)e)->klass)
-
-#define PARENT_TYPE e_selection_model_get_type ()
-
-static ESelectionModelClass *parent_class;
-
-enum {
- ARG_0,
- ARG_CURSOR_ROW,
- ARG_CURSOR_COL,
- ARG_MODEL,
- ARG_ETTA,
- ARG_ETS,
-};
-
-typedef struct ETreeSelectionModelNode {
- guint selected : 1;
- guint all_children_selected : 1;
- guint any_children_selected : 1;
- EBitArray *all_children_selected_array;
- EBitArray *any_children_selected_array;
- struct ETreeSelectionModelNode **children;
- int num_children;
-} ETreeSelectionModelNode;
-
-struct ETreeSelectionModelPriv {
- ETreeTableAdapter *etta;
- ETreeSorted *ets;
- ETreeModel *model;
-
- ETreeSelectionModelNode *root;
-
- ETreePath cursor_path;
- gint cursor_col;
- ETreePath selection_start_path;
-
- char *cursor_save_id;
-
- int tree_model_pre_change_id;
- int tree_model_node_changed_id;
- int tree_model_node_data_changed_id;
- int tree_model_node_col_changed_id;
- int tree_model_node_inserted_id;
- int tree_model_node_removed_id;
-
- int sorted_model_pre_change_id;
- int sorted_model_node_changed_id;
- int sorted_model_node_data_changed_id;
- int sorted_model_node_col_changed_id;
- int sorted_model_node_inserted_id;
- int sorted_model_node_removed_id;
-};
-
-/* ETreeSelectionModelNode helpers */
-
-static ETreeSelectionModelNode *
-e_tree_selection_model_node_new (void)
-{
- ETreeSelectionModelNode *node = g_new(ETreeSelectionModelNode, 1);
-
- node->selected = 0;
- node->all_children_selected = 0;
- node->any_children_selected = 0;
- node->all_children_selected_array = NULL;
- node->any_children_selected_array = NULL;
- node->children = NULL;
- node->num_children = -1;
-
- return node;
-}
-
-static void
-e_tree_selection_model_node_fill_children(ETreeSelectionModel *etsm, ETreePath path, ETreeSelectionModelNode *selection_node)
-{
- int i;
- selection_node->num_children = e_tree_sorted_node_num_children(etsm->priv->ets, path);
- selection_node->children = g_new(ETreeSelectionModelNode *, selection_node->num_children);
- for (i = 0; i < selection_node->num_children; i++) {
- selection_node->children[i] = NULL;
- }
-}
-
-static void
-e_tree_selection_model_node_free(ETreeSelectionModelNode *node)
-{
- int i;
-
- if (node->all_children_selected_array)
- gtk_object_unref(GTK_OBJECT(node->all_children_selected_array));
- if (node->any_children_selected_array)
- gtk_object_unref(GTK_OBJECT(node->any_children_selected_array));
-
- for (i = 0; i < node->num_children; i++)
- if (node->children[i])
- e_tree_selection_model_node_free(node->children[i]);
- g_free(node->children);
-
- g_free(node);
-}
-
-
-/* Other helper functions */
-static ETreePath
-etsm_node_at_row(ETreeSelectionModel *etsm, int row)
-{
- ETreePath path;
-
- if (!(row >= 0 && row < e_table_model_row_count(E_TABLE_MODEL(etsm->priv->etta))))
- return NULL;
-
- path = e_tree_table_adapter_node_at_row(etsm->priv->etta, row);
-
- if (path)
- path = e_tree_sorted_view_to_model_path(etsm->priv->ets, path);
-
- return path;
-}
-
-static int
-etsm_row_of_node(ETreeSelectionModel *etsm, ETreePath path)
-{
- path = e_tree_sorted_model_to_view_path(etsm->priv->ets, path);
-
- if (path)
- return e_tree_table_adapter_row_of_node(etsm->priv->etta, path);
- else
- return -1;
-}
-
-static int
-etsm_cursor_row_real (ETreeSelectionModel *etsm)
-{
- if (etsm->priv->cursor_path)
- return etsm_row_of_node(etsm, etsm->priv->cursor_path);
- else
- return -1;
-}
-
-static void
-etsm_real_clear (ETreeSelectionModel *etsm)
-{
- if (etsm->priv->root) {
- e_tree_selection_model_node_free(etsm->priv->root);
- etsm->priv->root = NULL;
- }
-}
-
-static ETreeSelectionModelNode *
-etsm_find_node_unless_equals (ETreeSelectionModel *etsm,
- ETreePath path,
- gboolean grow)
-{
- ETreeSelectionModelNode *selection_node;
- ETreeSorted *ets = etsm->priv->ets;
- ETreePath parent;
-
- parent = e_tree_model_node_get_parent(E_TREE_MODEL(ets), path);
-
- if (parent) {
- selection_node = etsm_find_node_unless_equals(etsm, parent, grow);
- if (selection_node) {
- int position = e_tree_sorted_orig_position(ets, path);
- if (selection_node->all_children_selected && grow)
- return NULL;
- if (!(selection_node->any_children_selected || grow))
- return NULL;
- if (selection_node->all_children_selected_array && e_bit_array_value_at(selection_node->all_children_selected_array, position) && grow)
- return NULL;
- if (selection_node->any_children_selected_array && ! (e_bit_array_value_at(selection_node->any_children_selected_array, position) || grow))
- return NULL;
- if (selection_node->children == NULL) {
- e_tree_selection_model_node_fill_children(etsm, parent, selection_node);
- }
- if (!selection_node->children[position])
- selection_node->children[position] = e_tree_selection_model_node_new();
-
- return selection_node->children[position];
- } else
- return NULL;
- } else {
- if (!etsm->priv->root)
- etsm->priv->root = e_tree_selection_model_node_new();
- return etsm->priv->root;
- }
-}
-
-#if 0
-static ETreeSelectionModelNode *
-find_or_create_node (ETreeSelectionModel *etsm,
- ETreePath path)
-{
- ETreeSelectionModelNode *selection_node;
- ETreeSelectionModelNode **place = NULL;
- ETreeSorted *ets = etsm->priv->ets;
- ETreePath parent;
-
- parent = e_tree_model_node_get_parent(E_TREE_MODEL(ets), path);
-
- if (parent) {
- selection_node = find_or_create_node(etsm, parent);
- if (selection_node) {
- int position = e_tree_sorted_orig_position(ets, path);
- if (!selection_node->children) {
- e_tree_selection_model_node_fill_children(etsm, parent, selection_node);
- }
- if (!selection_node->children[position])
- slection_node->children[position] = e_tree_selection_model_node_new();
-
- return selection_node->children[position];
- } else
- return NULL;
- } else {
- if (!etsm->priv->root)
- etsm->priv->root = e_tree_selection_model_node_new();
- return etsm->priv->root;
- }
-}
-#endif
-
-static void
-update_parents (ETreeSelectionModel *etsm, ETreePath path)
-{
- int i;
- int depth;
- ETreeSorted *ets = etsm->priv->ets;
- int *orig_position_sequence;
- ETreeSelectionModelNode **node_sequence;
- ETreePath parents;
-
- if (!etsm->priv->root)
- return;
-
- depth = e_tree_model_node_depth (E_TREE_MODEL(ets), path);
-
- orig_position_sequence = g_new(int, depth + 1);
- node_sequence = g_new(ETreeSelectionModelNode *, depth + 1);
-
- parents = path;
-
- for (i = depth; i > 0; i--) {
- if (!parents) {
- g_free(orig_position_sequence);
- g_free(node_sequence);
- return;
- }
- orig_position_sequence[i] = e_tree_sorted_orig_position(etsm->priv->ets, parents);
- parents = e_tree_model_node_get_parent(E_TREE_MODEL(etsm->priv->ets), parents);
- }
-
- node_sequence[0] = etsm->priv->root;
- for (i = 0; i < depth; i++) {
- node_sequence[i + 1] = NULL;
-
- if (node_sequence[i]->children)
- node_sequence[i + 1] = node_sequence[i]->children[orig_position_sequence[i + 1]];
-
- if (node_sequence[i + 1] == NULL) {
- g_free(orig_position_sequence);
- g_free(node_sequence);
- return;
- }
- }
-
- if (node_sequence[depth]->num_children == -1)
- e_tree_selection_model_node_fill_children(etsm, path, node_sequence[depth]);
-
- if (!node_sequence[depth]->all_children_selected_array)
- node_sequence[depth]->all_children_selected_array = e_bit_array_new(node_sequence[depth]->num_children);
- if (!node_sequence[depth]->any_children_selected_array)
- node_sequence[depth]->any_children_selected_array = e_bit_array_new(node_sequence[depth]->num_children);
-
- node_sequence[depth]->all_children_selected =
- e_bit_array_cross_and(node_sequence[depth]->all_children_selected_array) &&
- node_sequence[depth]->selected;
-
- node_sequence[depth]->any_children_selected =
- e_bit_array_cross_or(node_sequence[depth]->any_children_selected_array) ||
- node_sequence[depth]->selected;
-
- for (i = depth - 1; i >= 0; i--) {
- gboolean all_children, any_children;
-
- if (!node_sequence[i]->all_children_selected_array)
- node_sequence[i]->all_children_selected_array = e_bit_array_new(node_sequence[i]->num_children);
- if (!node_sequence[i]->any_children_selected_array)
- node_sequence[i]->any_children_selected_array = e_bit_array_new(node_sequence[i]->num_children);
-
- e_bit_array_change_one_row(node_sequence[i]->all_children_selected_array,
- orig_position_sequence[i + 1], node_sequence[i + 1]->all_children_selected);
- e_bit_array_change_one_row(node_sequence[i]->any_children_selected_array,
- orig_position_sequence[i + 1], node_sequence[i + 1]->any_children_selected);
-
- all_children = node_sequence[i]->all_children_selected;
- any_children = node_sequence[i]->any_children_selected;
-
- node_sequence[i]->all_children_selected =
- e_bit_array_cross_and(node_sequence[i]->all_children_selected_array) &&
- node_sequence[i]->selected;
- node_sequence[i]->any_children_selected =
- e_bit_array_cross_or(node_sequence[i]->any_children_selected_array) ||
- node_sequence[i]->selected;
-
- if (all_children == node_sequence[i]->all_children_selected &&
- any_children == node_sequence[i]->any_children_selected)
- break;
- }
-
- g_free(orig_position_sequence);
- g_free(node_sequence);
-}
-
-
-/* Signal handlers */
-
-static void
-etsm_pre_change (ETreeModel *etm, ETreeSelectionModel *etsm)
-{
- g_free (etsm->priv->cursor_save_id);
- etsm->priv->cursor_save_id = NULL;
-
- if (e_tree_model_has_get_node_by_id (etm) &&
- e_tree_model_has_save_id (etm) &&
- etsm->priv->cursor_path) {
- etsm->priv->cursor_save_id = e_tree_model_get_save_id (etm, etsm->priv->cursor_path);
- }
-}
-
-static void
-etsm_node_changed (ETreeModel *etm, ETreePath node, ETreeSelectionModel *etsm)
-{
- int cursor_row;
-
- etsm_real_clear (etsm);
-
- if (e_tree_model_has_get_node_by_id (etm) && etsm->priv->cursor_save_id) {
- ETreePath cursor_path;
-
- cursor_path = e_tree_model_get_node_by_id (etm, etsm->priv->cursor_save_id);
- etsm->priv->cursor_path = cursor_path;
- if (cursor_path != NULL && etsm->priv->cursor_col == -1)
- etsm->priv->cursor_col = 0;
-
- e_tree_selection_model_select_single_path(etsm, cursor_path);
- }
-
- cursor_row = etsm_cursor_row_real (etsm);
- e_selection_model_selection_changed(E_SELECTION_MODEL(etsm));
- if (cursor_row != -1)
- e_selection_model_cursor_changed(E_SELECTION_MODEL(etsm), cursor_row, etsm->priv->cursor_col);
- else {
- e_selection_model_cursor_changed(E_SELECTION_MODEL(etsm), -1, -1);
- e_selection_model_cursor_activated(E_SELECTION_MODEL(etsm), -1, -1);
- }
-
- g_free (etsm->priv->cursor_save_id);
- etsm->priv->cursor_save_id = NULL;
-}
-
-static void
-etsm_node_data_changed (ETreeModel *etm, ETreePath node, ETreeSelectionModel *etsm)
-{
- g_free (etsm->priv->cursor_save_id);
- etsm->priv->cursor_save_id = NULL;
-}
-
-static void
-etsm_node_col_changed (ETreeModel *etm, ETreePath node, int col, ETreeSelectionModel *etsm)
-{
- g_free (etsm->priv->cursor_save_id);
- etsm->priv->cursor_save_id = NULL;
-}
-
-static void
-etsm_node_inserted (ETreeModel *etm, ETreePath parent, ETreePath child, ETreeSelectionModel *etsm)
-{
- etsm_node_changed(etm, parent, etsm);
-#if 0
- ETreeSelectionModelNode *node;
- ETreePath path;
-
- path = e_tree_sorted_model_to_view_path(etsm->priv->ets, parent);
-
- if (!path)
- return;
-
- node = etsm_find_node_unless_equals (etsm, path, FALSE);
-
- if (node) {
- node->selected = FALSE;
- update_parents(etsm, path);
- }
-#endif
-}
-
-static void
-etsm_node_removed (ETreeModel *etm, ETreePath parent, ETreePath child, int old_position, ETreeSelectionModel *etsm)
-{
- etsm_node_changed(etm, parent, etsm);
-}
-
-
-
-static void
-etsm_sorted_pre_change (ETreeModel *etm, ETreeSelectionModel *etsm)
-{
-}
-
-static void
-etsm_sorted_node_changed (ETreeModel *etm, ETreePath node, ETreeSelectionModel *etsm)
-{
- int cursor_row = etsm_cursor_row_real (etsm);
- e_selection_model_selection_changed(E_SELECTION_MODEL(etsm));
-
- if (cursor_row != -1)
- e_selection_model_cursor_changed(E_SELECTION_MODEL(etsm), cursor_row, etsm->priv->cursor_col);
- else
- e_selection_model_cursor_changed(E_SELECTION_MODEL(etsm), -1, -1);
-}
-
-static void
-etsm_sorted_node_data_changed (ETreeModel *etm, ETreePath node, ETreeSelectionModel *etsm)
-{
-}
-
-static void
-etsm_sorted_node_col_changed (ETreeModel *etm, ETreePath node, int col, ETreeSelectionModel *etsm)
-{
-}
-
-static void
-etsm_sorted_node_inserted (ETreeModel *etm, ETreePath parent, ETreePath child, ETreeSelectionModel *etsm)
-{
- etsm_sorted_node_changed(etm, parent, etsm);
-}
-
-static void
-etsm_sorted_node_removed (ETreeModel *etm, ETreePath parent, ETreePath child, int old_position, ETreeSelectionModel *etsm)
-{
- etsm_sorted_node_changed(etm, parent, etsm);
-}
-
-
-static void
-add_model(ETreeSelectionModel *etsm, ETreeModel *model)
-{
- ETreeSelectionModelPriv *priv = etsm->priv;
-
- priv->model = model;
-
- if (!priv->model)
- return;
-
- gtk_object_ref(GTK_OBJECT(priv->model));
- priv->tree_model_pre_change_id = gtk_signal_connect (GTK_OBJECT (priv->model), "pre_change",
- GTK_SIGNAL_FUNC (etsm_pre_change), etsm);
- priv->tree_model_node_changed_id = gtk_signal_connect (GTK_OBJECT (priv->model), "node_changed",
- GTK_SIGNAL_FUNC (etsm_node_changed), etsm);
- priv->tree_model_node_data_changed_id = gtk_signal_connect (GTK_OBJECT (priv->model), "node_data_changed",
- GTK_SIGNAL_FUNC (etsm_node_data_changed), etsm);
- priv->tree_model_node_col_changed_id = gtk_signal_connect (GTK_OBJECT (priv->model), "node_col_changed",
- GTK_SIGNAL_FUNC (etsm_node_col_changed), etsm);
- priv->tree_model_node_inserted_id = gtk_signal_connect (GTK_OBJECT (priv->model), "node_inserted",
- GTK_SIGNAL_FUNC (etsm_node_inserted), etsm);
- priv->tree_model_node_removed_id = gtk_signal_connect (GTK_OBJECT (priv->model), "node_removed",
- GTK_SIGNAL_FUNC (etsm_node_removed), etsm);
-}
-
-static void
-drop_model(ETreeSelectionModel *etsm)
-{
- ETreeSelectionModelPriv *priv = etsm->priv;
-
- if (!priv->model)
- return;
-
- gtk_signal_disconnect (GTK_OBJECT (priv->model),
- priv->tree_model_pre_change_id);
- gtk_signal_disconnect (GTK_OBJECT (priv->model),
- priv->tree_model_node_changed_id);
- gtk_signal_disconnect (GTK_OBJECT (priv->model),
- priv->tree_model_node_data_changed_id);
- gtk_signal_disconnect (GTK_OBJECT (priv->model),
- priv->tree_model_node_col_changed_id);
- gtk_signal_disconnect (GTK_OBJECT (priv->model),
- priv->tree_model_node_inserted_id);
- gtk_signal_disconnect (GTK_OBJECT (priv->model),
- priv->tree_model_node_removed_id);
-
- gtk_object_unref (GTK_OBJECT (priv->model));
- priv->model = NULL;
-
- priv->tree_model_pre_change_id = 0;
- priv->tree_model_node_changed_id = 0;
- priv->tree_model_node_data_changed_id = 0;
- priv->tree_model_node_col_changed_id = 0;
- priv->tree_model_node_inserted_id = 0;
- priv->tree_model_node_removed_id = 0;
-}
-
-
-static void
-add_ets(ETreeSelectionModel *etsm, ETreeSorted *ets)
-{
- ETreeSelectionModelPriv *priv = etsm->priv;
-
- priv->ets = ets;
-
- if (!priv->ets)
- return;
-
- gtk_object_ref(GTK_OBJECT(priv->ets));
- priv->sorted_model_pre_change_id = gtk_signal_connect (GTK_OBJECT (priv->ets), "pre_change",
- GTK_SIGNAL_FUNC (etsm_sorted_pre_change), etsm);
- priv->sorted_model_node_changed_id = gtk_signal_connect (GTK_OBJECT (priv->ets), "node_changed",
- GTK_SIGNAL_FUNC (etsm_sorted_node_changed), etsm);
- priv->sorted_model_node_data_changed_id = gtk_signal_connect (GTK_OBJECT (priv->ets), "node_data_changed",
- GTK_SIGNAL_FUNC (etsm_sorted_node_data_changed), etsm);
- priv->sorted_model_node_col_changed_id = gtk_signal_connect (GTK_OBJECT (priv->ets), "node_col_changed",
- GTK_SIGNAL_FUNC (etsm_sorted_node_col_changed), etsm);
- priv->sorted_model_node_inserted_id = gtk_signal_connect (GTK_OBJECT (priv->ets), "node_inserted",
- GTK_SIGNAL_FUNC (etsm_sorted_node_inserted), etsm);
- priv->sorted_model_node_removed_id = gtk_signal_connect (GTK_OBJECT (priv->ets), "node_removed",
- GTK_SIGNAL_FUNC (etsm_sorted_node_removed), etsm);
-}
-
-static void
-drop_ets(ETreeSelectionModel *etsm)
-{
- ETreeSelectionModelPriv *priv = etsm->priv;
-
- if (!priv->ets)
- return;
-
- gtk_signal_disconnect (GTK_OBJECT (priv->ets),
- priv->sorted_model_pre_change_id);
- gtk_signal_disconnect (GTK_OBJECT (priv->ets),
- priv->sorted_model_node_changed_id);
- gtk_signal_disconnect (GTK_OBJECT (priv->ets),
- priv->sorted_model_node_data_changed_id);
- gtk_signal_disconnect (GTK_OBJECT (priv->ets),
- priv->sorted_model_node_col_changed_id);
- gtk_signal_disconnect (GTK_OBJECT (priv->ets),
- priv->sorted_model_node_inserted_id);
- gtk_signal_disconnect (GTK_OBJECT (priv->ets),
- priv->sorted_model_node_removed_id);
-
- gtk_object_unref (GTK_OBJECT (priv->ets));
- priv->ets = NULL;
-
- priv->sorted_model_pre_change_id = 0;
- priv->sorted_model_node_changed_id = 0;
- priv->sorted_model_node_data_changed_id = 0;
- priv->sorted_model_node_col_changed_id = 0;
- priv->sorted_model_node_inserted_id = 0;
- priv->sorted_model_node_removed_id = 0;
-}
-
-/* Virtual functions */
-static void
-etsm_destroy (GtkObject *object)
-{
- ETreeSelectionModel *etsm;
-
- etsm = E_TREE_SELECTION_MODEL (object);
-
- etsm_real_clear (etsm);
- drop_model(etsm);
- drop_ets(etsm);
-
- g_free (etsm->priv->cursor_save_id);
-
- g_free(etsm->priv);
- etsm->priv = NULL;
-}
-
-static void
-etsm_get_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- ETreeSelectionModel *etsm = E_TREE_SELECTION_MODEL (o);
-
- switch (arg_id){
- case ARG_CURSOR_ROW:
- GTK_VALUE_INT(*arg) = etsm_cursor_row_real(etsm);
- break;
-
- case ARG_CURSOR_COL:
- GTK_VALUE_INT(*arg) = etsm->priv->cursor_col;
- break;
-
- case ARG_MODEL:
- GTK_VALUE_OBJECT(*arg) = (GtkObject *) etsm->priv->model;
- break;
-
- case ARG_ETTA:
- GTK_VALUE_OBJECT(*arg) = (GtkObject *) etsm->priv->etta;
- break;
-
- case ARG_ETS:
- GTK_VALUE_OBJECT(*arg) = (GtkObject *) etsm->priv->ets;
- break;
- }
-}
-
-static void
-etsm_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- ESelectionModel *esm = E_SELECTION_MODEL (o);
- ETreeSelectionModel *etsm = E_TREE_SELECTION_MODEL (o);
-
- switch (arg_id){
- case ARG_CURSOR_ROW:
- e_selection_model_do_something(esm, GTK_VALUE_INT(*arg), etsm->priv->cursor_col, 0);
- break;
-
- case ARG_CURSOR_COL:
- e_selection_model_do_something(esm, etsm_cursor_row_real(etsm), GTK_VALUE_INT(*arg), 0);
- break;
-
- case ARG_MODEL:
- drop_model(etsm);
- add_model(etsm, (ETreeModel *) GTK_VALUE_OBJECT(*arg));
- break;
-
- case ARG_ETTA:
- etsm->priv->etta = (ETreeTableAdapter *) GTK_VALUE_OBJECT(*arg);
- break;
-
- case ARG_ETS:
- drop_ets(etsm);
- add_ets(etsm, (ETreeSorted *) GTK_VALUE_OBJECT(*arg));
- break;
- }
-}
-
-static ETreeSelectionModelNode *
-etsm_recurse_is_path_selected (ESelectionModel *selection,
- ETreePath path,
- gboolean *is_selected)
-{
- ETreeSelectionModelNode *selection_node;
- ETreeSelectionModel *etsm = E_TREE_SELECTION_MODEL(selection);
- ETreeSorted *ets = etsm->priv->ets;
- ETreePath parent;
-
- parent = e_tree_model_node_get_parent(E_TREE_MODEL(ets), path);
-
- if (parent) {
- selection_node = etsm_recurse_is_path_selected (selection, parent, is_selected);
- if (selection_node) {
- int position = e_tree_sorted_orig_position(ets, path);
- if (position < 0 || position >= selection_node->num_children) {
- *is_selected = FALSE;
- return NULL;
- }
- if (selection_node->all_children_selected) {
- *is_selected = TRUE;
- return NULL;
- }
- if (! selection_node->any_children_selected) {
- *is_selected = FALSE;
- return NULL;
- }
- if (selection_node->all_children_selected_array && e_bit_array_value_at(selection_node->all_children_selected_array, position)) {
- *is_selected = TRUE;
- return NULL;
- }
- if (selection_node->any_children_selected_array && ! e_bit_array_value_at(selection_node->any_children_selected_array, position)) {
- *is_selected = FALSE;
- return NULL;
- }
- if (!selection_node->children) {
- *is_selected = FALSE;
- return NULL;
- }
- return selection_node->children[position];
- } else
- return NULL;
- } else {
- if (etsm->priv->root) {
- return etsm->priv->root;
- } else {
- *is_selected = FALSE;
- return NULL;
- }
- }
-}
-
-/**
- * e_selection_model_is_row_selected
- * @selection: #ESelectionModel to check
- * @n: The row to check
- *
- * This routine calculates whether the given row is selected.
- *
- * Returns: %TRUE if the given row is selected
- */
-static gboolean
-etsm_is_row_selected (ESelectionModel *selection,
- gint row)
-{
- ETreeSelectionModel *etsm = E_TREE_SELECTION_MODEL(selection);
- ETreePath path;
- ETreeSelectionModelNode *selection_node;
-
- gboolean ret_val;
-
- g_return_val_if_fail(row < e_table_model_row_count(E_TABLE_MODEL(etsm->priv->etta)), FALSE);
- g_return_val_if_fail(row >= 0, FALSE);
- g_return_val_if_fail(selection != NULL, FALSE);
-
- path = e_tree_table_adapter_node_at_row(etsm->priv->etta, row);
-
- selection_node = etsm_recurse_is_path_selected (selection, path, &ret_val);
-
- if (selection_node)
- ret_val = selection_node->selected;
-
- return ret_val;
-}
-
-
-typedef struct {
- ETreeSelectionModel *etsm;
- EForeachFunc callback;
- gpointer closure;
-} ModelAndCallback;
-
-static void
-etsm_row_foreach_cb (ETreePath path, gpointer user_data)
-{
- ModelAndCallback *mac = user_data;
- int row = etsm_row_of_node(mac->etsm, path);
- if (row >= 0)
- mac->callback(row, mac->closure);
-}
-
-/**
- * e_selection_model_foreach
- * @selection: #ESelectionModel to traverse
- * @callback: The callback function to call back.
- * @closure: The closure
- *
- * This routine calls the given callback function once for each
- * selected row, passing closure as the closure.
- */
-static void
-etsm_foreach (ESelectionModel *selection,
- EForeachFunc callback,
- gpointer closure)
-{
- ETreeSelectionModel *etsm = E_TREE_SELECTION_MODEL(selection);
- ModelAndCallback mac;
-
- mac.etsm = etsm;
- mac.callback = callback;
- mac.closure = closure;
-
- e_tree_selection_model_foreach(etsm, etsm_row_foreach_cb, &mac);
-}
-
-/**
- * e_selection_model_clear
- * @selection: #ESelectionModel to clear
- *
- * This routine clears the selection to no rows selected.
- */
-static void
-etsm_clear(ESelectionModel *selection)
-{
- ETreeSelectionModel *etsm = E_TREE_SELECTION_MODEL(selection);
-
- etsm_real_clear (etsm);
-
- etsm->priv->cursor_path = NULL;
- etsm->priv->cursor_col = -1;
- e_selection_model_selection_changed(E_SELECTION_MODEL(etsm));
- e_selection_model_cursor_changed(E_SELECTION_MODEL(etsm), -1, -1);
-}
-
-#if 0
-/**
- * e_selection_model_selected_count
- * @selection: #ESelectionModel to count
- *
- * This routine calculates the number of rows selected.
- *
- * Returns: The number of rows selected in the given model.
- */
-static gint
-etsm_selected_count (ESelectionModel *selection)
-{
- ETreeSelectionModel *etsm = E_TREE_SELECTION_MODEL(selection);
-
- return g_hash_table_size(etsm->priv->data);
-}
-#endif
-
-/**
- * e_selection_model_select_all
- * @selection: #ESelectionModel to select all
- *
- * This routine selects all the rows in the given
- * #ESelectionModel.
- */
-static void
-etsm_select_all (ESelectionModel *selection)
-{
- ETreeSelectionModel *etsm = E_TREE_SELECTION_MODEL(selection);
-
- etsm_real_clear (etsm);
-
- etsm->priv->root = e_tree_selection_model_node_new();
- etsm->priv->root->selected = TRUE;
- etsm->priv->root->all_children_selected = TRUE;
- etsm->priv->root->any_children_selected = TRUE;
-
- e_tree_selection_model_node_fill_children(etsm, e_tree_model_get_root(E_TREE_MODEL(etsm->priv->ets)), etsm->priv->root);
- etsm->priv->root->all_children_selected_array = e_bit_array_new(etsm->priv->root->num_children);
- etsm->priv->root->any_children_selected_array = e_bit_array_new(etsm->priv->root->num_children);
- e_bit_array_select_all(etsm->priv->root->all_children_selected_array);
- e_bit_array_select_all(etsm->priv->root->any_children_selected_array);
-
- if (etsm->priv->cursor_col == -1)
- etsm->priv->cursor_col = 0;
- if (etsm->priv->cursor_path == NULL)
- etsm->priv->cursor_path = etsm_node_at_row(etsm, 0);
- etsm->priv->selection_start_path = etsm_node_at_row(etsm, 0);
- e_selection_model_selection_changed(E_SELECTION_MODEL(etsm));
- e_selection_model_cursor_changed(E_SELECTION_MODEL(etsm), etsm_cursor_row_real(etsm), etsm->priv->cursor_col);
-}
-
-static void
-etsm_invert_selection_recurse (ETreeSelectionModel *etsm,
- ETreeSelectionModelNode *selection_node)
-{
- gboolean temp;
- EBitArray *temp_eba;
- selection_node->selected = ! selection_node->selected;
-
- temp = selection_node->all_children_selected;
- selection_node->all_children_selected = ! selection_node->any_children_selected;
- selection_node->any_children_selected = ! temp;
-
- temp_eba = selection_node->all_children_selected_array;
- selection_node->all_children_selected_array = selection_node->any_children_selected_array;
- selection_node->any_children_selected_array = temp_eba;
- if (selection_node->all_children_selected_array)
- e_bit_array_invert_selection(selection_node->all_children_selected_array);
- if (selection_node->any_children_selected_array)
- e_bit_array_invert_selection(selection_node->any_children_selected_array);
- if (selection_node->children) {
- int i;
- for (i = 0; i < selection_node->num_children; i++) {
- if (selection_node->children[i])
- etsm_invert_selection_recurse (etsm, selection_node->children[i]);
- }
- }
-}
-
-/**
- * e_selection_model_invert_selection
- * @selection: #ESelectionModel to invert
- *
- * This routine inverts all the rows in the given
- * #ESelectionModel.
- */
-static void
-etsm_invert_selection (ESelectionModel *selection)
-{
- ETreeSelectionModel *etsm = E_TREE_SELECTION_MODEL(selection);
-
- if (etsm->priv->root)
- etsm_invert_selection_recurse (etsm, etsm->priv->root);
-
- etsm->priv->cursor_col = -1;
- etsm->priv->cursor_path = NULL;
- etsm->priv->selection_start_path = etsm_node_at_row(etsm, 0);
- e_selection_model_selection_changed(E_SELECTION_MODEL(etsm));
- e_selection_model_cursor_changed(E_SELECTION_MODEL(etsm), -1, -1);
-}
-
-static int
-etsm_row_count (ESelectionModel *selection)
-{
- ETreeSelectionModel *etsm = E_TREE_SELECTION_MODEL(selection);
- return e_table_model_row_count(E_TABLE_MODEL(etsm->priv->etta));
-}
-
-static void
-etsm_change_one_row(ESelectionModel *selection, int row, gboolean grow)
-{
- ETreeSelectionModel *etsm = E_TREE_SELECTION_MODEL(selection);
- ETreeSelectionModelNode *node;
- ETreePath path;
-
- g_return_if_fail(row < e_table_model_row_count(E_TABLE_MODEL(etsm->priv->etta)));
- g_return_if_fail(row >= 0);
- g_return_if_fail(selection != NULL);
-
- path = e_tree_table_adapter_node_at_row(etsm->priv->etta, row);
-
- if (!path)
- return;
-
- node = etsm_find_node_unless_equals (etsm, path, grow);
-
- if (node) {
- node->selected = grow;
- update_parents(etsm, path);
- }
-}
-
-static void
-etsm_change_one_path(ETreeSelectionModel *etsm, ETreePath path, gboolean grow)
-{
- ETreeSelectionModelNode *node;
-
- if (!path)
- return;
-
- path = e_tree_sorted_model_to_view_path(etsm->priv->ets, path);
-
- if (!path)
- return;
-
- node = etsm_find_node_unless_equals (etsm, path, grow);
-
- if (node) {
- node->selected = grow;
- update_parents(etsm, path);
- }
-}
-
-static void
-etsm_change_cursor (ESelectionModel *selection, int row, int col)
-{
- ETreeSelectionModel *etsm;
-
- g_return_if_fail(selection != NULL);
- g_return_if_fail(E_IS_SELECTION_MODEL(selection));
-
- etsm = E_TREE_SELECTION_MODEL(selection);
-
- if (row == -1) {
- etsm->priv->cursor_path = NULL;
- } else {
- etsm->priv->cursor_path = etsm_node_at_row(etsm, row);
- }
- etsm->priv->cursor_col = col;
-}
-
-static void
-etsm_change_range(ESelectionModel *selection, int start, int end, gboolean grow)
-{
- int i;
- if (start != end) {
- if (selection->sorter && e_sorter_needs_sorting(selection->sorter)) {
- for ( i = start; i < end; i++) {
- e_selection_model_change_one_row(selection, e_sorter_sorted_to_model(selection->sorter, i), grow);
- }
- } else {
- for ( i = start; i < end; i++) {
- e_selection_model_change_one_row(selection, i, grow);
- }
- }
- }
-}
-
-static int
-etsm_cursor_row (ESelectionModel *selection)
-{
- return etsm_cursor_row_real(E_TREE_SELECTION_MODEL(selection));
-}
-
-static int
-etsm_cursor_col (ESelectionModel *selection)
-{
- ETreeSelectionModel *etsm = E_TREE_SELECTION_MODEL(selection);
- return etsm->priv->cursor_col;
-}
-
-static void
-etsm_select_single_row (ESelectionModel *selection, int row)
-{
- ETreeSelectionModel *etsm = E_TREE_SELECTION_MODEL(selection);
-
- etsm_real_clear (etsm);
- etsm_change_one_row(selection, row, TRUE);
- etsm->priv->selection_start_path = etsm_node_at_row(etsm, row);
-
- e_selection_model_selection_changed(E_SELECTION_MODEL(etsm));
-}
-
-static void
-etsm_toggle_single_row (ESelectionModel *selection, int row)
-{
- ETreeSelectionModel *etsm = E_TREE_SELECTION_MODEL(selection);
-
- etsm->priv->selection_start_path = etsm_node_at_row(etsm, row);
-
- etsm_change_one_row(selection, row, !etsm_is_row_selected(selection, row));
-
- e_selection_model_selection_changed(E_SELECTION_MODEL(etsm));
-}
-
-static void
-etsm_move_selection_end (ESelectionModel *selection, int row)
-{
- ETreeSelectionModel *etsm = E_TREE_SELECTION_MODEL(selection);
- int old_start;
- int old_end;
- int new_start;
- int new_end;
- int start_row = etsm_row_of_node(etsm, etsm->priv->selection_start_path);
- if (selection->sorter && e_sorter_needs_sorting(selection->sorter)) {
- old_start = MIN (e_sorter_model_to_sorted(selection->sorter, start_row),
- e_sorter_model_to_sorted(selection->sorter, etsm_cursor_row_real(etsm)));
- old_end = MAX (e_sorter_model_to_sorted(selection->sorter, start_row),
- e_sorter_model_to_sorted(selection->sorter, etsm_cursor_row_real(etsm))) + 1;
- new_start = MIN (e_sorter_model_to_sorted(selection->sorter, start_row),
- e_sorter_model_to_sorted(selection->sorter, row));
- new_end = MAX (e_sorter_model_to_sorted(selection->sorter, start_row),
- e_sorter_model_to_sorted(selection->sorter, row)) + 1;
- } else {
- old_start = MIN (start_row, etsm_cursor_row_real(etsm));
- old_end = MAX (start_row, etsm_cursor_row_real(etsm)) + 1;
- new_start = MIN (start_row, row);
- new_end = MAX (start_row, row) + 1;
- }
- /* This wouldn't work nearly so smoothly if one end of the selection weren't held in place. */
- if (old_start < new_start)
- etsm_change_range(selection, old_start, new_start, FALSE);
- if (new_start < old_start)
- etsm_change_range(selection, new_start, old_start, TRUE);
- if (old_end < new_end)
- etsm_change_range(selection, old_end, new_end, TRUE);
- if (new_end < old_end)
- etsm_change_range(selection, new_end, old_end, FALSE);
- e_selection_model_selection_changed(E_SELECTION_MODEL(etsm));
-}
-
-static void
-etsm_set_selection_end (ESelectionModel *selection, int row)
-{
- ETreeSelectionModel *etsm = E_TREE_SELECTION_MODEL(selection);
- e_tree_selection_model_select_single_path(etsm, etsm->priv->selection_start_path);
- etsm->priv->cursor_path = etsm->priv->selection_start_path;
- e_selection_model_move_selection_end(selection, row);
-}
-
-
-/* Standard functions */
-static void
-etsm_foreach_all_recurse (ETreeSelectionModel *etsm,
- ETreePath path,
- ETreeForeachFunc callback,
- gpointer closure)
-{
- ETreePath child;
-
- callback(path, closure);
-
- child = e_tree_model_node_get_first_child(E_TREE_MODEL(etsm->priv->model), path);
- for ( ; child; child = e_tree_model_node_get_next(E_TREE_MODEL(etsm->priv->model), child))
- if (child)
- etsm_foreach_all_recurse (etsm, child, callback, closure);
-}
-
-static void
-etsm_foreach_recurse (ETreeSelectionModel *etsm,
- ETreeSelectionModelNode *selection_node,
- ETreePath path,
- ETreeForeachFunc callback,
- gpointer closure)
-{
- if (selection_node->all_children_selected) {
- if (path)
- etsm_foreach_all_recurse(etsm, path, callback, closure);
- return;
- }
- if (!selection_node->any_children_selected)
- return;
-
- if (selection_node->selected) {
- callback(path, closure);
- }
-
- if (selection_node->children) {
- ETreePath child = e_tree_model_node_get_first_child(E_TREE_MODEL(etsm->priv->model), path);
- int i;
- for (i = 0; i < selection_node->num_children; i++, child = e_tree_model_node_get_next(E_TREE_MODEL(etsm->priv->model), child))
- if (selection_node->children[i])
- etsm_foreach_recurse (etsm, selection_node->children[i], child, callback, closure);
- }
-}
-
-void
-e_tree_selection_model_foreach (ETreeSelectionModel *etsm,
- ETreeForeachFunc callback,
- gpointer closure)
-{
- if (etsm->priv->root) {
- ETreePath model_root;
- model_root = e_tree_model_get_root(etsm->priv->model);
- etsm_foreach_recurse(etsm, etsm->priv->root, model_root, callback, closure);
- }
-}
-
-void
-e_tree_selection_model_select_single_path (ETreeSelectionModel *etsm, ETreePath path)
-{
- etsm_real_clear (etsm);
- etsm_change_one_path(etsm, path, TRUE);
- etsm->priv->selection_start_path = path;
-
- e_selection_model_selection_changed(E_SELECTION_MODEL(etsm));
-}
-
-void
-e_tree_selection_model_change_cursor (ETreeSelectionModel *etsm, ETreePath path)
-{
- int row;
-
- etsm->priv->cursor_path = path;
-
- row = etsm_cursor_row_real(etsm);
-
- e_selection_model_cursor_changed(E_SELECTION_MODEL(etsm), row, etsm->priv->cursor_col);
- e_selection_model_cursor_activated(E_SELECTION_MODEL(etsm), row, etsm->priv->cursor_col);
-}
-
-
-static void
-e_tree_selection_model_init (ETreeSelectionModel *etsm)
-{
- ETreeSelectionModelPriv *priv;
- priv = g_new(ETreeSelectionModelPriv, 1);
- etsm->priv = priv;
-
- priv->etta = NULL;
- priv->ets = NULL;
- priv->model = NULL;
-
- priv->root = NULL;
-
- priv->cursor_path = NULL;
- priv->cursor_col = -1;
- priv->selection_start_path = NULL;
-
- priv->cursor_save_id = NULL;
-
-
- priv->tree_model_pre_change_id = 0;
- priv->tree_model_node_changed_id = 0;
- priv->tree_model_node_data_changed_id = 0;
- priv->tree_model_node_col_changed_id = 0;
- priv->tree_model_node_inserted_id = 0;
- priv->tree_model_node_removed_id = 0;
-
- priv->sorted_model_pre_change_id = 0;
- priv->sorted_model_node_changed_id = 0;
- priv->sorted_model_node_data_changed_id = 0;
- priv->sorted_model_node_col_changed_id = 0;
- priv->sorted_model_node_inserted_id = 0;
- priv->sorted_model_node_removed_id = 0;
-}
-
-static void
-e_tree_selection_model_class_init (ETreeSelectionModelClass *klass)
-{
- GtkObjectClass *object_class;
- ESelectionModelClass *esm_class;
-
- parent_class = gtk_type_class (e_selection_model_get_type ());
-
- object_class = GTK_OBJECT_CLASS(klass);
- esm_class = E_SELECTION_MODEL_CLASS(klass);
-
- object_class->destroy = etsm_destroy;
- object_class->get_arg = etsm_get_arg;
- object_class->set_arg = etsm_set_arg;
-
- esm_class->is_row_selected = etsm_is_row_selected ;
- esm_class->foreach = etsm_foreach ;
- esm_class->clear = etsm_clear ;
-#if 0
- esm_class->selected_count = etsm_selected_count ;
-#endif
- esm_class->select_all = etsm_select_all ;
- esm_class->invert_selection = etsm_invert_selection ;
- esm_class->row_count = etsm_row_count ;
-
- esm_class->change_one_row = etsm_change_one_row ;
- esm_class->change_cursor = etsm_change_cursor ;
- esm_class->cursor_row = etsm_cursor_row ;
- esm_class->cursor_col = etsm_cursor_col ;
-
- esm_class->select_single_row = etsm_select_single_row ;
- esm_class->toggle_single_row = etsm_toggle_single_row ;
- esm_class->move_selection_end = etsm_move_selection_end ;
- esm_class->set_selection_end = etsm_set_selection_end ;
-
- gtk_object_add_arg_type ("ETreeSelectionModel::cursor_row", GTK_TYPE_INT,
- GTK_ARG_READWRITE, ARG_CURSOR_ROW);
- gtk_object_add_arg_type ("ETreeSelectionModel::cursor_col", GTK_TYPE_INT,
- GTK_ARG_READWRITE, ARG_CURSOR_COL);
- gtk_object_add_arg_type ("ETreeSelectionModel::model", E_TREE_MODEL_TYPE,
- GTK_ARG_READWRITE, ARG_MODEL);
- gtk_object_add_arg_type ("ETreeSelectionModel::etta", E_TREE_TABLE_ADAPTER_TYPE,
- GTK_ARG_READWRITE, ARG_ETTA);
- gtk_object_add_arg_type ("ETreeSelectionModel::ets", E_TREE_SORTED_TYPE,
- GTK_ARG_READWRITE, ARG_ETS);
-}
-
-ESelectionModel *
-e_tree_selection_model_new (void)
-{
- return gtk_type_new(e_tree_selection_model_get_type());
-}
-
-E_MAKE_TYPE(e_tree_selection_model, "ETreeSelectionModel", ETreeSelectionModel,
- e_tree_selection_model_class_init, e_tree_selection_model_init, PARENT_TYPE);
diff --git a/widgets/table/e-tree-selection-model.h b/widgets/table/e-tree-selection-model.h
deleted file mode 100644
index ffed337835..0000000000
--- a/widgets/table/e-tree-selection-model.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TREE_SELECTION_MODEL_H_
-#define _E_TREE_SELECTION_MODEL_H_
-
-#include <gdk/gdktypes.h>
-#include <gtk/gtkobject.h>
-#include <gal/util/e-sorter.h>
-#include <gal/widgets/e-selection-model.h>
-#include <gal/e-table/e-tree-model.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-typedef void (*ETreeForeachFunc) (ETreePath path,
- gpointer closure);
-
-typedef struct ETreeSelectionModelPriv ETreeSelectionModelPriv;
-
-#define E_TREE_SELECTION_MODEL_TYPE (e_tree_selection_model_get_type ())
-#define E_TREE_SELECTION_MODEL(o) (GTK_CHECK_CAST ((o), E_TREE_SELECTION_MODEL_TYPE, ETreeSelectionModel))
-#define E_TREE_SELECTION_MODEL_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TREE_SELECTION_MODEL_TYPE, ETreeSelectionModelClass))
-#define E_IS_TREE_SELECTION_MODEL(o) (GTK_CHECK_TYPE ((o), E_TREE_SELECTION_MODEL_TYPE))
-#define E_IS_TREE_SELECTION_MODEL_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TREE_SELECTION_MODEL_TYPE))
-
-typedef struct {
- ESelectionModel base;
-
- ETreeSelectionModelPriv *priv;
-} ETreeSelectionModel;
-
-typedef struct {
- ESelectionModelClass parent_class;
-} ETreeSelectionModelClass;
-
-
-GtkType e_tree_selection_model_get_type (void);
-ESelectionModel *e_tree_selection_model_new (void);
-void e_tree_selection_model_foreach (ETreeSelectionModel *etsm,
- ETreeForeachFunc callback,
- gpointer closure);
-void e_tree_selection_model_select_single_path (ETreeSelectionModel *etsm,
- ETreePath path);
-void e_tree_selection_model_change_cursor (ETreeSelectionModel *etsm,
- ETreePath path);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* _E_TREE_SELECTION_MODEL_H_ */
diff --git a/widgets/table/e-tree-simple.c b/widgets/table/e-tree-simple.c
deleted file mode 100644
index 5ff26b088a..0000000000
--- a/widgets/table/e-tree-simple.c
+++ /dev/null
@@ -1,200 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-tree-simple.c: a Tree Model that offers a function pointer
- * interface to using ETreeModel, similar to ETableSimple.
- *
- * Author:
- * Chris Toshok (toshok@ximian.com)
- *
- * (C) 2000 Ximian, Inc. */
-
-#include <config.h>
-#include <gtk/gtksignal.h>
-#include "gal/util/e-util.h"
-#include "e-tree-simple.h"
-
-#define PARENT_TYPE E_TREE_MODEL_TYPE
-
-static int
-simple_column_count (ETableModel *etm)
-{
- ETreeSimple *simple = E_TREE_SIMPLE(etm);
-
- if (simple->col_count)
- return simple->col_count (etm, simple->model_data);
- else
- return 0;
-}
-
-/* The default for simple_duplicate_value is to return the raw value. */
-static void *
-simple_duplicate_value (ETableModel *etm, int col, const void *value)
-{
- ETreeSimple *simple = E_TREE_SIMPLE(etm);
-
- if (simple->duplicate_value)
- return simple->duplicate_value (etm, col, value, simple->model_data);
- else
- return (void *)value;
-}
-
-static void
-simple_free_value (ETableModel *etm, int col, void *value)
-{
- ETreeSimple *simple = E_TREE_SIMPLE(etm);
-
- if (simple->free_value)
- simple->free_value (etm, col, value, simple->model_data);
-}
-
-static void *
-simple_initialize_value (ETableModel *etm, int col)
-{
- ETreeSimple *simple = E_TREE_SIMPLE(etm);
-
- if (simple->initialize_value)
- return simple->initialize_value (etm, col, simple->model_data);
- else
- return NULL;
-}
-
-static gboolean
-simple_value_is_empty (ETableModel *etm, int col, const void *value)
-{
- ETreeSimple *simple = E_TREE_SIMPLE(etm);
-
- if (simple->value_is_empty)
- return simple->value_is_empty (etm, col, value, simple->model_data);
- else
- return FALSE;
-}
-
-static char *
-simple_value_to_string (ETableModel *etm, int col, const void *value)
-{
- ETreeSimple *simple = E_TREE_SIMPLE(etm);
-
- if (simple->value_to_string)
- return simple->value_to_string (etm, col, value, simple->model_data);
- else
- return g_strdup ("");
-}
-
-static void *
-simple_value_at (ETreeModel *etm, ETreePath *node, int col)
-{
- ETreeSimple *simple = E_TREE_SIMPLE(etm);
-
- return simple->value_at (etm, node, col, simple->model_data);
-}
-
-static GdkPixbuf *
-simple_icon_at (ETreeModel *etm, ETreePath *node)
-{
- ETreeSimple *simple = E_TREE_SIMPLE(etm);
-
- return simple->icon_at (etm, node, simple->model_data);
-}
-
-static void
-simple_set_value_at (ETreeModel *etm, ETreePath *node, int col, const void *val)
-{
- ETreeSimple *simple = E_TREE_SIMPLE(etm);
-
- simple->set_value_at (etm, node, col, val, simple->model_data);
-}
-
-static gboolean
-simple_is_editable (ETreeModel *etm, ETreePath *node, int col)
-{
- ETreeSimple *simple = E_TREE_SIMPLE(etm);
-
- return simple->is_editable (etm, node, col, simple->model_data);
-}
-
-static void
-e_tree_simple_class_init (GtkObjectClass *object_class)
-{
- ETreeModelClass *model_class = (ETreeModelClass *) object_class;
- ETableModelClass *table_model_class = (ETableModelClass *) object_class;
-
- table_model_class->column_count = simple_column_count;
- table_model_class->duplicate_value = simple_duplicate_value;
- table_model_class->free_value = simple_free_value;
- table_model_class->initialize_value = simple_initialize_value;
- table_model_class->value_is_empty = simple_value_is_empty;
- table_model_class->value_to_string = simple_value_to_string;
-
- model_class ->icon_at = simple_icon_at;
- model_class ->value_at = simple_value_at;
- model_class ->set_value_at = simple_set_value_at;
- model_class ->is_editable = simple_is_editable;
-}
-
-E_MAKE_TYPE(e_tree_simple, "ETreeSimple", ETreeSimple, e_tree_simple_class_init, NULL, PARENT_TYPE)
-
-/**
- * e_tree_simple_new:
- * @col_count:
- * @duplicate_value:
- * @free_value:
- * @initialize_value:
- * @value_is_empty:
- * @value_to_string:
- * @icon_at:
- * @value_at:
- * @set_value_at:
- * @is_editable:
- * @model_data:
- *
- * This initializes a new ETreeSimpleModel object. ETreeSimpleModel is
- * an implementaiton of the abstract class ETreeModel. The ETreeSimpleModel
- * is designed to allow people to easily create ETreeModels without having
- * to create a new GtkType derived from ETreeModel every time they need one.
- *
- * Instead, ETreeSimpleModel uses a setup based in callback functions, every
- * callback function signature mimics the signature of each ETreeModel method
- * and passes the extra @data pointer to each one of the method to provide them
- * with any context they might want to use.
- *
- * ETreeSimple is to ETreeModel as ETableSimple is to ETableModel.
- *
- * Return value: An ETreeSimple object (which is also an ETreeModel
- * object).
- **/
-ETreeModel *
-e_tree_simple_new (ETableSimpleColumnCountFn col_count,
- ETableSimpleDuplicateValueFn duplicate_value,
- ETableSimpleFreeValueFn free_value,
- ETableSimpleInitializeValueFn initialize_value,
- ETableSimpleValueIsEmptyFn value_is_empty,
- ETableSimpleValueToStringFn value_to_string,
-
- ETreeSimpleIconAtFn icon_at,
- ETreeSimpleValueAtFn value_at,
- ETreeSimpleSetValueAtFn set_value_at,
- ETreeSimpleIsEditableFn is_editable,
-
- gpointer model_data)
-{
- ETreeSimple *etg;
-
- etg = gtk_type_new (e_tree_simple_get_type ());
-
- etg->col_count = col_count;
- etg->duplicate_value = duplicate_value;
- etg->free_value = free_value;
- etg->initialize_value = initialize_value;
- etg->value_is_empty = value_is_empty;
- etg->value_to_string = value_to_string;
-
- etg->icon_at = icon_at;
- etg->value_at = value_at;
- etg->set_value_at = set_value_at;
- etg->is_editable = is_editable;
-
- etg->model_data = model_data;
-
- return (ETreeModel*)etg;
-}
-
diff --git a/widgets/table/e-tree-simple.h b/widgets/table/e-tree-simple.h
deleted file mode 100644
index 797de7c8a7..0000000000
--- a/widgets/table/e-tree-simple.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-#ifndef _E_TREE_SIMPLE_H_
-#define _E_TREE_SIMPLE_H_
-
-#include <gal/e-table/e-tree-model.h>
-#include <gal/e-table/e-table-simple.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define E_TREE_SIMPLE_TYPE (e_tree_simple_get_type ())
-#define E_TREE_SIMPLE(o) (GTK_CHECK_CAST ((o), E_TREE_SIMPLE_TYPE, ETreeSimple))
-#define E_TREE_SIMPLE_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TREE_SIMPLE_TYPE, ETreeSimpleClass))
-#define E_IS_TREE_SIMPLE(o) (GTK_CHECK_TYPE ((o), E_TREE_SIMPLE_TYPE))
-#define E_IS_TREE_SIMPLE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TREE_SIMPLE_TYPE))
-
-
-typedef GdkPixbuf* (*ETreeSimpleIconAtFn) (ETreeModel *etree, ETreePath *path, void *model_data);
-typedef void* (*ETreeSimpleValueAtFn) (ETreeModel *etree, ETreePath *path, int col, void *model_data);
-typedef void (*ETreeSimpleSetValueAtFn) (ETreeModel *etree, ETreePath *path, int col, const void *val, void *model_data);
-typedef gboolean (*ETreeSimpleIsEditableFn) (ETreeModel *etree, ETreePath *path, int col, void *model_data);
-
-typedef struct {
- ETreeModel parent;
-
- /* Table methods */
- ETableSimpleColumnCountFn col_count;
- ETableSimpleDuplicateValueFn duplicate_value;
- ETableSimpleFreeValueFn free_value;
- ETableSimpleInitializeValueFn initialize_value;
- ETableSimpleValueIsEmptyFn value_is_empty;
- ETableSimpleValueToStringFn value_to_string;
-
- /* Tree methods */
- ETreeSimpleIconAtFn icon_at;
- ETreeSimpleValueAtFn value_at;
- ETreeSimpleSetValueAtFn set_value_at;
- ETreeSimpleIsEditableFn is_editable;
-
- gpointer model_data;
-} ETreeSimple;
-
-typedef struct {
- ETreeModelClass parent_class;
-} ETreeSimpleClass;
-
-GtkType e_tree_simple_get_type (void);
-
-ETreeModel *e_tree_simple_new (ETableSimpleColumnCountFn col_count,
- ETableSimpleDuplicateValueFn duplicate_value,
- ETableSimpleFreeValueFn free_value,
- ETableSimpleInitializeValueFn initialize_value,
- ETableSimpleValueIsEmptyFn value_is_empty,
- ETableSimpleValueToStringFn value_to_string,
- ETreeSimpleIconAtFn icon_at,
- ETreeSimpleValueAtFn value_at,
- ETreeSimpleSetValueAtFn set_value_at,
- ETreeSimpleIsEditableFn is_editable,
- gpointer model_data);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_TREE_SIMPLE_H_ */
diff --git a/widgets/table/e-tree-sorted-variable.c b/widgets/table/e-tree-sorted-variable.c
deleted file mode 100644
index 06f9b1b261..0000000000
--- a/widgets/table/e-tree-sorted-variable.c
+++ /dev/null
@@ -1,458 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-tree-sorted-variable.c: Implements a table that sorts another table
- *
- * Author:
- * Miguel de Icaza (miguel@gnu.org)
- *
- * (C) 1999 Ximian, Inc.
- */
-#include <config.h>
-#include <stdlib.h>
-#include <string.h>
-#include <gtk/gtksignal.h>
-#include "gal/util/e-util.h"
-#include "e-tree-sorted-variable.h"
-
-#define d(x)
-
-#define PARENT_TYPE E_TREE_MODEL_TYPE
-
-#define INCREMENT_AMOUNT 100
-
-/* maximum insertions between an idle event that we will do without scheduling an idle sort */
-#define ETSV_INSERT_MAX (4)
-
-static ETreeModelClass *etsv_parent_class;
-
-struct ETreePath {
- GNode node;
-};
-
-struct ETreeSortedVariablePrivate {
- GNode *root;
-};
-
-static void etsv_proxy_model_changed (ETableModel *etm, ETreeSortedVariable *etsv);
-#if 0
-static void etsv_proxy_model_row_changed (ETableModel *etm, int row, ETreeSortedVariable *etsv);
-static void etsv_proxy_model_cell_changed (ETableModel *etm, int col, int row, ETreeSortedVariable *etsv);
-#endif
-static void etsv_sort_info_changed (ETableSortInfo *info, ETreeSortedVariable *etsv);
-static void etsv_sort (ETreeSortedVariable *etsv);
-static void etsv_add (ETreeSortedVariable *etsv, gint row);
-static void etsv_add_all (ETreeSortedVariable *etsv);
-
-static void
-etsv_destroy (GtkObject *object)
-{
- ETreeSortedVariable *etsv = E_TREE_SORTED_VARIABLE (object);
-
- gtk_signal_disconnect (GTK_OBJECT (etss->source),
- etsv->table_model_changed_id);
-#if 0
- gtk_signal_disconnect (GTK_OBJECT (etss->source),
- etsv->table_model_row_changed_id);
- gtk_signal_disconnect (GTK_OBJECT (etss->source),
- etsv->table_model_cell_changed_id);
-#endif
- gtk_signal_disconnect (GTK_OBJECT (etsv->sort_info),
- etsv->sort_info_changed_id);
-
- if (etsv->sort_idle_id) {
- g_source_remove(etsv->sort_idle_id);
- }
- if (etsv->insert_idle_id) {
- g_source_remove(etsv->insert_idle_id);
- }
-
- etsv->table_model_changed_id = 0;
- etsv->table_model_row_changed_id = 0;
- etsv->table_model_cell_changed_id = 0;
-
- if (etsv->sort_info)
- gtk_object_unref(GTK_OBJECT(etsv->sort_info));
- if (etsv->full_header)
- gtk_object_unref(GTK_OBJECT(etsv->full_header));
-
- GTK_OBJECT_CLASS (etsv_parent_class)->destroy (object);
-}
-
-static void
-etsv_class_init (GtkObjectClass *object_class)
-{
- ETreeSortedVariableClass *etsv_class = E_TREE_MODEL_CLASS(object_class);
-
- etsv_parent_class = gtk_type_class (PARENT_TYPE);
-
- object_class->destroy = etsv_destroy;
-
- etsv_class->add = etsv_add;
- etsv_class->add_all = etsv_add_all;
-}
-
-static void
-etsv_init (ETreeSortedVariable *etsv)
-{
- etsv->full_header = NULL;
- etsv->sort_info = NULL;
-
- etsv->table_model_changed_id = 0;
- etsv->table_model_row_changed_id = 0;
- etsv->table_model_cell_changed_id = 0;
- etsv->sort_info_changed_id = 0;
-
- etsv->sort_idle_id = 0;
- etsv->insert_count = 0;
-}
-
-E_MAKE_TYPE(e_tree_sorted_variable, "ETreeSortedVariable", ETreeSortedVariable, etsv_class_init, etsv_init, PARENT_TYPE);
-
-static gboolean
-etsv_sort_idle(ETreeSortedVariable *etsv)
-{
- gtk_object_ref(GTK_OBJECT(etsv));
- etsv_sort(etsv);
- etsv->sort_idle_id = 0;
- etsv->insert_count = 0;
- gtk_object_unref(GTK_OBJECT(etsv));
- return FALSE;
-}
-
-static gboolean
-etsv_insert_idle(ETreeSortedVariable *etsv)
-{
- etsv->insert_count = 0;
- etsv->insert_idle_id = 0;
- return FALSE;
-}
-
-
-ETableModel *
-e_tree_sorted_variable_new (ETreeModel *source, ETableHeader *full_header, ETableSortInfo *sort_info)
-{
- ETreeSortedVariable *etsv = gtk_type_new (E_TREE_SORTED_VARIABLE_TYPE);
- ETreeSortedVariable *etsv = E_TABLE_SUBSET_VARIABLE (etsv);
-
- if (e_table_subset_variable_construct (etsv, source) == NULL){
- gtk_object_unref (GTK_OBJECT (etsv));
- return NULL;
- }
-
- etsv->sort_info = sort_info;
- gtk_object_ref(GTK_OBJECT(etsv->sort_info));
- etsv->full_header = full_header;
- gtk_object_ref(GTK_OBJECT(etsv->full_header));
-
- etsv->table_model_changed_id = gtk_signal_connect (GTK_OBJECT (source), "model_changed",
- GTK_SIGNAL_FUNC (etsv_proxy_model_changed), etsv);
-#if 0
- etsv->table_model_row_changed_id = gtk_signal_connect (GTK_OBJECT (source), "model_row_changed",
- GTK_SIGNAL_FUNC (etsv_proxy_model_row_changed), etsv);
- etsv->table_model_cell_changed_id = gtk_signal_connect (GTK_OBJECT (source), "model_cell_changed",
- GTK_SIGNAL_FUNC (etsv_proxy_model_cell_changed), etsv);
-#endif
- etsv->sort_info_changed_id = gtk_signal_connect (GTK_OBJECT (sort_info), "sort_info_changed",
- GTK_SIGNAL_FUNC (etsv_sort_info_changed), etsv);
-
- return E_TABLE_MODEL(etsv);
-}
-
-static void
-etsv_proxy_model_changed (ETableModel *etm, ETreeSortedVariable *etsv)
-{
- /* FIXME: do_resort (); */
-}
-#if 0
-static void
-etsv_proxy_model_row_changed (ETableModel *etm, int row, ETreeSortedVariable *etsv)
-{
- ETreeSortedVariable *etsv = E_TABLE_SUBSET_VARIABLE(etsv);
-
- if (e_table_subset_variable_remove(etsv, row))
- e_table_subset_variable_add (etsv, row);
-}
-
-static void
-etsv_proxy_model_cell_changed (ETableModel *etm, int col, int row, ETreeSortedVariable *etsv)
-{
- ETreeSortedVariable *etsv = E_TABLE_SUBSET_VARIABLE(etsv);
-
- if (e_table_subset_variable_remove(etsv, row))
- e_table_subset_variable_add (etsv, row);
-}
-#endif
-
-static void
-etsv_sort_info_changed (ETableSortInfo *info, ETreeSortedVariable *etsv)
-{
- etsv_sort(etsv);
-}
-
-/* This takes source rows. */
-static int
-etsv_compare(ETreeSortedVariable *etsv, const ETreePath *path1, const ETreePath *path2)
-{
- int j;
- int sort_count = e_table_sort_info_sorting_get_count(etsv->sort_info);
- int comp_val = 0;
- int ascending = 1;
-
- for (j = 0; j < sort_count; j++) {
- ETableSortColumn column = e_table_sort_info_sorting_get_nth(etsv->sort_info, j);
- ETableCol *col;
- col = e_table_header_get_column_by_col_idx(etsv->full_header, column.column);
- if (col == NULL)
- col = e_table_header_get_column (etsv->full_header, e_table_header_count (etsv->full_header) - 1);
- comp_val = (*col->compare)(e_tree_model_value_at (etsv->source, path1, col->col_idx),
- e_tree_model_value_at (etsv->source, path2, col->col_idx));
- ascending = column.ascending;
- if (comp_val != 0)
- break;
- }
- if (comp_val == 0) {
- if (row1 < row2)
- comp_val = -1;
- if (row1 > row2)
- comp_val = 1;
- }
- if (!ascending)
- comp_val = -comp_val;
- return comp_val;
-}
-
-
-static ETreeSortedVariable *etsv_closure;
-int cols_closure;
-int *ascending_closure;
-int *col_idx_closure;
-GCompareFunc *compare_closure;
-
-static int
-etsv_compare_closure(const ETreePath *path1, const ETreePath *path2)
-{
- int j;
- int sort_count = e_table_sort_info_sorting_get_count(etsv_closure->sort_info);
- int comp_val = 0;
- int ascending = 1;
- for (j = 0; j < sort_count; j++) {
-
- comp_val = (*(compare_closure[j]))(e_tree_model_value_at (etsv_closure->source, path1, col_idx_closure[j]),
- e_tree_model_value_at (etsv_closure->source, path2, col_idx_closure[j]));
- ascending = ascending_closure[j];
- if (comp_val != 0)
- break;
- }
- if (comp_val == 0) {
- if (row1 < row2)
- comp_val = -1;
- if (row1 > row2)
- comp_val = 1;
- }
- if (!ascending)
- comp_val = -comp_val;
- return comp_val;
-}
-
-static int
-qsort_callback(const void *data1, const void *data2)
-{
- GNode *node1 = *(GNode **)data1;
- GNode *node2 = *(GNode **)data2;
- return etsv_compare_closure(node1->data, node2->data);
-}
-
-static int
-qsort_callback_source(const void *data1, const void *data2)
-{
- return etsv_compare_closure(data1, data2);
-}
-
-static void
-etsv_setup_closures(ETreeSortedVariable *etsv)
-{
- int j;
- int cols;
-
- cols = e_table_sort_info_sorting_get_count(etsv->sort_info);
- cols_closure = cols;
- etsv_closure = etsv;
-
- ascending_closure = g_new(int, cols);
- col_idx_closure = g_new(int, cols);
- compare_closure = g_new(GCompareFunc, cols);
-
- for (j = 0; j < cols; j++) {
- ETableSortColumn column = e_table_sort_info_sorting_get_nth(etsv->sort_info, j);
- ETableCol *col;
-
- col = e_table_header_get_column_by_col_idx(etsv->full_header, column.column);
- if (col == NULL) {
- col = e_table_header_get_column (etsv->full_header, e_table_header_count (etsv->full_header) - 1);
- }
-
- ascending_closure[j] = column.ascending;
- col_idx_closure[j] = col->col_idx;
- compare_closure[j] = col->compare;
- }
-}
-
-static void
-etsv_free_closures(ETreeSortedVariable *etsv)
-{
- g_free(ascending_closure);
- g_free(col_idx_closure);
- g_free(compare_closure);
-
-}
-
-static void
-etsv_sort_node(ETreeSortedVariable *etsv, GNode *node)
-{
- gint n;
- gint i;
- GNode **children;
- GNode *child;
- GNode *prev;
-
- n = g_node_n_children(node);
- children = g_new(GNode *, n);
- for (i = 0, child = node->children; child && i; child = child->next, i++) {
- children[i] = child;
- }
- qsort(children, n, sizeof(GNode *), qsort_callback);
-
- prev = NULL;
- for (i = 0; i < n; i++) {
- children[i]->prev = prev;
- if (prev) prev->next = children[i];
- prev = children[i];
- children[i]->next = NULL;
- }
-}
-
-static void
-etsv_sort_tree(ETreeSortedVariable *etsv, GNode *root)
-{
- GNode *childr;
-
- etsv_sort_node(etsv, node);
-
- for (child = node->child; child; child = child->next) {
- etsv_sort_tree(etsv, child);
- }
-}
-
-static void
-etsv_sort(ETreeSortedVariable *etsv)
-{
- static int reentering = 0;
- if (reentering)
- return;
- reentering = 1;
-
- e_table_model_pre_change(E_TABLE_MODEL(etsv));
-
- etsv_setup_closures(etsv);
-
- etsv_sort_tree(etsv, etsv->root);
-
- etsv_free_closures(etsv);
-
- e_table_model_changed (E_TABLE_MODEL(etsv));
- reentering = 0;
-}
-
-static void
-etsv_add_node (ETreeSortedVariable *etsv, ETreePath *path, GNode *root)
-{
- GNode *node;
- GNode *new_node;
- for (node = root; node; node = node->next) {
- if (e_tree_model_node_is_ancestor(etsv->source, path, node->data)) {
- etsv_add_node(etsv, path, node->data);
- return;
- }
- }
- new_node = g_node_new(path);
- for (node = root; node; ) {
- if (e_tree_model_node_is_ancestor(etsv->source, node->data, path)) {
- GNode *next;
- next = node->next;
- g_node_unlink(node);
- g_node_prepend(new_node, node);
- node = next;
- } else
- node = node->next;
- }
-
- etsv_sort_node(etsv, new_node);
-
-
-#if 0
- g_node_prepend(root, new_node);
- etsv_sort_node(etsv, root);
-#else
- /* Insert sort to be a bit faster than the above prepend and then sort. */
- for (node = root; node; node = node->next) {
- if (etsv_compare(etsv, path, node->data) > 0) {
- g_node_insert_before (root, node, new_node);
- return;
- }
- }
- g_node_append(root, new_node);
-#endif
-}
-
-etsv_add(ETreeSortedVariable *etsv, gint row)
-{
- ETreeModel *source = etsv->source;
- ETreePath *path;
-
- path = e_table_model_value_at (E_TABLE_MODEL(source), -1, row);
- etsv_add_node(etsv, path, etsv->root);
-}
-
-/* Optimize by doing the qsorts as we build. But we'll do that later. */
-static void
-etsv_add_all_node (ETreeSortedVariable *etsv, ETreePath *path, GNode *node)
-{
- ETreeModel *source = etsv->source;
- ETreePath **children;
- int n;
- int i;
-
- n = e_tree_model_node_get_children(source, path, &children);
- qsort(children, n, sizeof(ETreePath *), qsort_callback_source);
-
- for (i = n - 1; i >= 0; i--) {
- GNode *new_child = g_node_new(children[i]);
- g_node_prepend(path, new_child);
- etsv_add_all_node (etsv, children[i], new_child)
- }
-
- g_free(children);
-}
-
-static void
-etsv_add_all (ETreeSortedVariable *etsv)
-{
- GNode *node;
- ETreePath *path;
-
- e_table_model_pre_change(etm);
-
- if (etsv->root)
- g_node_destroy(etsv->root);
-
- etsv_setup_closures(etsv);
-
- path = e_tree_model_get_root(etsv->source);
- node = g_node_new(path);
- etsv_add_all_node(etsv, path, node);
- etsv->root = node;
-
- etsv_free_closures(etsv);
-
- e_tree_model_node_changed (etsv, etsv->root);
-}
diff --git a/widgets/table/e-tree-sorted-variable.h b/widgets/table/e-tree-sorted-variable.h
deleted file mode 100644
index a86ea9f602..0000000000
--- a/widgets/table/e-tree-sorted-variable.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TREE_SORTED_VARIABLE_H_
-#define _E_TREE_SORTED_VARIABLE_H_
-
-#include <gtk/gtkobject.h>
-#include <gal/e-tree/e-tree-model.h>
-#include <gal/e-table/e-table-subset-variable.h>
-#include <gal/e-table/e-table-sort-info.h>
-#include <gal/e-table/e-table-header.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_TREE_SORTED_VARIABLE_TYPE (e_tree_sorted_variable_get_type ())
-#define E_TREE_SORTED_VARIABLE(o) (GTK_CHECK_CAST ((o), E_TREE_SORTED_VARIABLE_TYPE, ETreeSortedVariable))
-#define E_TREE_SORTED_VARIABLE_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TREE_SORTED_VARIABLE_TYPE, ETreeSortedVariableClass))
-#define E_IS_TREE_SORTED_VARIABLE(o) (GTK_CHECK_TYPE ((o), E_TREE_SORTED_VARIABLE_TYPE))
-#define E_IS_TREE_SORTED_VARIABLE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TREE_SORTED_VARIABLE_TYPE))
-
-typedef struct {
- ETreeModel base;
-
- ETableSortInfo *sort_info;
-
- ETableHeader *full_header;
-
- int table_model_changed_id;
- int table_model_row_changed_id;
- int table_model_cell_changed_id;
- int sort_info_changed_id;
- int sort_idle_id;
- int insert_idle_id;
- int insert_count;
-
-} ETreeSortedVariable;
-
-typedef struct {
- ETreeModelClass parent_class;
-} ETreeSortedVariableClass;
-
-GtkType e_tree_sorted_variable_get_type (void);
-ETableModel *e_tree_sorted_variable_new (ETreeModel *etm,
- ETableHeader *header,
- ETableSortInfo *sort_info);
-
-ETreeModel *e_tree_sorted_get_toplevel (ETreeSortedVariable *tree_model);
-
-void e_tree_sorted_variable_add (ETreeSortedVariable *ets,
- gint row);
-void e_tree_sorted_variable_add_all (ETreeSortedVariable *ets);
-gboolean e_tree_sorted_variable_remove (ETreeSortedVariable *ets,
- gint row);
-void e_tree_sorted_variable_increment (ETreeSortedVariable *ets,
- gint position,
- gint amount);
-void e_tree_sorted_variable_decrement (ETreeSortedVariable *ets,
- gint position,
- gint amount);
-void e_tree_sorted_variable_set_allocation (ETreeSortedVariable *ets,
- gint total);
-END_GNOME_DECLS
-
-#endif /* _E_TREE_SORTED_VARIABLE_H_ */
diff --git a/widgets/table/e-tree-sorted.c b/widgets/table/e-tree-sorted.c
deleted file mode 100644
index 5581aa6fe7..0000000000
--- a/widgets/table/e-tree-sorted.c
+++ /dev/null
@@ -1,1280 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-tree-sorted.c: a Tree Model implementation that the programmer builds in sorted.
- *
- * Author:
- * Chris Toshok (toshok@ximian.com)
- * Chris Lahey <clahey@ximian.com>
- *
- * Adapted from the gtree code and ETableModel.
- *
- * (C) 2000, 2001 Ximian, Inc.
- */
-
-/* FIXME: Overall e-tree-sorted.c needs to be made more efficient. */
-
-
-#include <config.h>
-
-#include "e-tree-sorted.h"
-
-#include <stdio.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <string.h>
-
-#include <gnome-xml/parser.h>
-#include <gnome-xml/xmlmemory.h>
-
-#include <gtk/gtksignal.h>
-#include "gal/util/e-util.h"
-#include "gal/util/e-xml-utils.h"
-#include "e-table-sorting-utils.h"
-
-#define PARENT_TYPE E_TREE_MODEL_TYPE
-
-/* maximum insertions between an idle event that we will do without scheduling an idle sort */
-#define ETS_INSERT_MAX (4)
-
-#define TREEPATH_CHUNK_AREA_SIZE (30 * sizeof (ETreeSortedPath))
-
-#define d(x)
-
-static ETreeModel *parent_class;
-static GMemChunk *node_chunk;
-
-typedef struct ETreeSortedPath ETreeSortedPath;
-
-struct ETreeSortedPath {
- ETreePath corresponding;
-
- /* parent/child/sibling pointers */
- ETreeSortedPath *parent;
- gint num_children;
- ETreeSortedPath **children;
- int position;
- int orig_position;
-
- guint needs_resort : 1;
- guint child_needs_resort : 1;
- guint resort_all_children : 1;
- guint needs_regen_to_sort : 1;
-};
-
-struct ETreeSortedPriv {
- ETreeModel *source;
- ETreeSortedPath *root;
-
- ETableSortInfo *sort_info;
- ETableHeader *full_header;
-
- ETreeSortedPath *last_access;
-
- int tree_model_pre_change_id;
- int tree_model_node_changed_id;
- int tree_model_node_data_changed_id;
- int tree_model_node_col_changed_id;
- int tree_model_node_inserted_id;
- int tree_model_node_removed_id;
-
- int sort_info_changed_id;
- int sort_idle_id;
- int insert_idle_id;
- int insert_count;
-};
-
-enum {
- ARG_0,
-
- ARG_SORT_INFO,
-};
-
-static void ets_sort_info_changed (ETableSortInfo *sort_info, ETreeSorted *ets);
-static void resort_node (ETreeSorted *ets, ETreeSortedPath *path, gboolean resort_all_children, gboolean needs_regen, gboolean send_signals);
-static void mark_path_needs_resort (ETreeSorted *ets, ETreeSortedPath *path, gboolean needs_rebuild, gboolean resort_all_children);
-static void schedule_resort (ETreeSorted *ets, ETreeSortedPath *path, gboolean needs_regen, gboolean resort_all_children);
-static void free_path (ETreeSortedPath *path);
-static void generate_children(ETreeSorted *ets, ETreeSortedPath *path);
-static void regenerate_children(ETreeSorted *ets, ETreeSortedPath *path);
-
-
-
-/* idle callbacks */
-
-static gboolean
-ets_sort_idle(gpointer user_data)
-{
- ETreeSorted *ets = user_data;
- ets->priv->sort_idle_id = 0;
- if (ets->priv->root) {
- resort_node (ets, ets->priv->root, FALSE, FALSE, TRUE);
- }
- return FALSE;
-}
-
-static gboolean
-ets_insert_idle(ETreeSorted *ets)
-{
- ets->priv->insert_count = 0;
- ets->priv->insert_idle_id = 0;
- return FALSE;
-}
-
-
-
-/* Helper functions */
-
-#define CHECK_AROUND_LAST_ACCESS
-
-static inline ETreeSortedPath *
-check_last_access (ETreeSorted *ets, ETreePath corresponding)
-{
-#ifdef CHECK_AROUND_LAST_ACCESS
- ETreeSortedPath *parent;
- int end;
- int start;
- int i;
-#endif
-
- if (ets->priv->last_access == NULL)
- return NULL;
-
- if (ets->priv->last_access == corresponding) {
- d(g_print("Found last access %p at %p.", ets->priv->last_access, ets->priv->last_access));
- return ets->priv->last_access;
- }
-
-#ifdef CHECK_AROUND_LAST_ACCESS
- parent = ets->priv->last_access->parent;
- if (parent && parent->children) {
- i = ets->priv->last_access->position;
- end = MIN(parent->num_children, i + 10);
- for (; i < end; i++) {
- if (parent->children[i] && parent->children[i]->corresponding == corresponding) {
- d(g_print("Found last access %p at %p.", ets->priv->last_access, parent->children[i]));
- return parent->children[i];
- }
- }
-
- i = ets->priv->last_access->position - 1;
- start = MAX(0, i - 10);
- for (; i >= start; i--) {
- if (parent->children[i] && parent->children[i]->corresponding == corresponding) {
- d(g_print("Found last access %p at %p.", ets->priv->last_access, parent->children[i]));
- return parent->children[i];
- }
- }
- }
-#endif
- return NULL;
-}
-
-static ETreeSortedPath *
-find_path(ETreeSorted *ets, ETreePath corresponding)
-{
- int depth;
- ETreePath *sequence;
- int i;
- ETreeSortedPath *path;
- ETreeSortedPath *check_last;
-
- if (corresponding == NULL)
- return NULL;
-
- check_last = check_last_access (ets, corresponding);
- if (check_last) {
- d(g_print(" (find_path)\n"));
- return check_last;
- }
-
- depth = e_tree_model_node_depth(ets->priv->source, corresponding);
-
- sequence = g_new(ETreePath, depth + 1);
-
- sequence[0] = corresponding;
-
- for (i = 0; i < depth; i++)
- sequence[i + 1] = e_tree_model_node_get_parent(ets->priv->source, sequence[i]);
-
- path = ets->priv->root;
-
- for (i = depth - 1; i >= 0 && path != NULL; i --) {
- int j;
-
- if (path->num_children == -1) {
- path = NULL;
- break;
- }
-
- for (j = 0; j < path->num_children; j++) {
- if (path->children[j]->corresponding == sequence[i]) {
- break;
- }
- }
-
- if (j < path->num_children) {
- path = path->children[j];
- } else {
- path = NULL;
- }
- }
- g_free (sequence);
-
- d(g_print("Didn't find last access %p. Setting to %p. (find_path)\n", ets->priv->last_access, path));
- ets->priv->last_access = path;
-
- return path;
-}
-
-static ETreeSortedPath *
-find_child_path(ETreeSorted *ets, ETreeSortedPath *parent, ETreePath corresponding)
-{
- int i;
-
- if (corresponding == NULL)
- return NULL;
-
- if (parent->num_children == -1) {
- return NULL;
- }
-
- for (i = 0; i < parent->num_children; i++)
- if (parent->children[i]->corresponding == corresponding)
- return parent->children[i];
-
- return NULL;
-}
-
-static ETreeSortedPath *
-find_or_create_path(ETreeSorted *ets, ETreePath corresponding)
-{
- int depth;
- ETreePath *sequence;
- int i;
- ETreeSortedPath *path;
- ETreeSortedPath *check_last;
-
- if (corresponding == NULL)
- return NULL;
-
- check_last = check_last_access (ets, corresponding);
- if (check_last) {
- d(g_print(" (find_or_create_path)\n"));
- return check_last;
- }
-
- depth = e_tree_model_node_depth(ets->priv->source, corresponding);
-
- sequence = g_new(ETreePath, depth + 1);
-
- sequence[0] = corresponding;
-
- for (i = 0; i < depth; i++)
- sequence[i + 1] = e_tree_model_node_get_parent(ets->priv->source, sequence[i]);
-
- path = ets->priv->root;
-
- for (i = depth - 1; i >= 0 && path != NULL; i --) {
- int j;
-
- if (path->num_children == -1) {
- generate_children(ets, path);
- }
-
- for (j = 0; j < path->num_children; j++) {
- if (path->children[j]->corresponding == sequence[i]) {
- break;
- }
- }
-
- if (j < path->num_children) {
- path = path->children[j];
- } else {
- path = NULL;
- }
- }
- g_free (sequence);
-
- d(g_print("Didn't find last access %p. Setting to %p. (find_or_create_path)\n", ets->priv->last_access, path));
- ets->priv->last_access = path;
-
- return path;
-}
-
-static void
-free_children (ETreeSortedPath *path)
-{
- int i;
-
- if (path == NULL)
- return;
-
- for (i = 0; i < path->num_children; i++) {
- free_path(path->children[i]);
- }
-
- g_free(path->children);
- path->children = NULL;
- path->num_children = -1;
-}
-
-static void
-free_path (ETreeSortedPath *path)
-{
- free_children(path);
- g_chunk_free(path, node_chunk);
-}
-
-static ETreeSortedPath *
-new_path (ETreeSortedPath *parent, ETreePath corresponding)
-{
- ETreeSortedPath *path;
-
- path = g_chunk_new0 (ETreeSortedPath, node_chunk);
-
- path->corresponding = corresponding;
- path->parent = parent;
- path->num_children = -1;
- path->children = NULL;
- path->position = -1;
- path->orig_position = -1;
- path->child_needs_resort = 0;
- path->resort_all_children = 0;
- path->needs_resort = 0;
- path->needs_regen_to_sort = 0;
-
- return path;
-}
-
-static void
-reposition_path (ETreeSorted *ets, ETreeSortedPath *path)
-{
- int new_index;
- int old_index = path->position;
- ETreeSortedPath *parent = path->parent;
- if (parent) {
- if (ets->priv->sort_idle_id == 0) {
- if (ets->priv->insert_count > ETS_INSERT_MAX) {
- /* schedule a sort, and append instead */
- schedule_resort(ets, parent, TRUE, FALSE);
- } else {
- /* make sure we have an idle handler to reset the count every now and then */
- if (ets->priv->insert_idle_id == 0) {
- ets->priv->insert_idle_id = g_idle_add_full(40, (GSourceFunc) ets_insert_idle, ets, NULL);
- }
-
- new_index = e_table_sorting_utils_tree_check_position
- (E_TREE_MODEL(ets),
- ets->priv->sort_info,
- ets->priv->full_header,
- (ETreePath *) parent->children,
- parent->num_children,
- old_index);
-
- if (new_index > old_index) {
- int i;
- ets->priv->insert_count++;
- memmove(parent->children + old_index, parent->children + old_index + 1, sizeof (ETreePath) * (new_index - old_index));
- parent->children[new_index] = path;
- for (i = old_index; i <= new_index; i++)
- parent->children[i]->position = i;
- e_tree_model_node_changed(E_TREE_MODEL(ets), parent);
- e_tree_model_pre_change(E_TREE_MODEL(ets));
- } else if (new_index < old_index) {
- int i;
- ets->priv->insert_count++;
- memmove(parent->children + new_index + 1, parent->children + new_index, sizeof (ETreePath) * (old_index - new_index));
- parent->children[new_index] = path;
- for (i = new_index; i <= old_index; i++)
- parent->children[i]->position = i;
- e_tree_model_node_changed(E_TREE_MODEL(ets), parent);
- e_tree_model_pre_change(E_TREE_MODEL(ets));
- }
- }
- } else
- mark_path_needs_resort(ets, parent, TRUE, FALSE);
- }
-}
-
-static void
-regenerate_children(ETreeSorted *ets, ETreeSortedPath *path)
-{
- ETreeSortedPath **children;
- int i;
-
- children = g_new(ETreeSortedPath *, path->num_children);
- for (i = 0; i < path->num_children; i++)
- children[path->children[i]->orig_position] = path->children[i];
- g_free(path->children);
- path->children = children;
-}
-
-static void
-generate_children(ETreeSorted *ets, ETreeSortedPath *path)
-{
- ETreePath child;
- int i;
- int count;
-
- free_children(path);
-
- count = 0;
- for (child = e_tree_model_node_get_first_child(ets->priv->source, path->corresponding);
- child;
- child = e_tree_model_node_get_next(ets->priv->source, child)) {
- count ++;
- }
-
- path->num_children = count;
- path->children = g_new(ETreeSortedPath *, count);
- for (child = e_tree_model_node_get_first_child(ets->priv->source, path->corresponding), i = 0;
- child;
- child = e_tree_model_node_get_next(ets->priv->source, child), i++) {
- path->children[i] = new_path(path, child);
- path->children[i]->position = i;
- path->children[i]->orig_position = i;
- }
- if (path->num_children > 0)
- schedule_resort (ets, path, FALSE, TRUE);
-}
-
-static void
-resort_node (ETreeSorted *ets, ETreeSortedPath *path, gboolean resort_all_children, gboolean needs_regen, gboolean send_signals)
-{
- gboolean needs_resort;
- if (path) {
- needs_resort = path->needs_resort || resort_all_children;
- needs_regen = path->needs_regen_to_sort || needs_regen;
- if (path->num_children > 0) {
- if (needs_resort && send_signals)
- e_tree_model_pre_change(E_TREE_MODEL(ets));
- if (needs_resort) {
- int i;
- d(g_print("Start sort of node %p\n", path));
- if (needs_regen)
- regenerate_children(ets, path);
- d(g_print("Regened sort of node %p\n", path));
- e_table_sorting_utils_tree_sort (E_TREE_MODEL(ets),
- ets->priv->sort_info,
- ets->priv->full_header,
- (ETreePath *) path->children,
- path->num_children);
- d(g_print("Renumbering sort of node %p\n", path));
- for (i = 0; i < path->num_children; i++) {
- path->children[i]->position = i;
- }
- d(g_print("End sort of node %p\n", path));
- }
- if (path->resort_all_children)
- resort_all_children = TRUE;
- if ((resort_all_children || path->child_needs_resort) && path->num_children >= 0) {
- int i;
- for (i = 0; i < path->num_children; i++) {
- resort_node(ets, path->children[i], resort_all_children, needs_regen, send_signals && !needs_resort);
- }
- path->child_needs_resort = 0;
- }
- }
- path->needs_resort = 0;
- path->child_needs_resort = 0;
- path->needs_regen_to_sort = 0;
- path->resort_all_children = 0;
- if (needs_resort && send_signals && path->num_children > 0)
- e_tree_model_node_changed(E_TREE_MODEL(ets), path);
- }
-}
-
-static void
-mark_path_child_needs_resort (ETreeSorted *ets, ETreeSortedPath *path)
-{
- if (path == NULL)
- return;
- if (!path->child_needs_resort) {
- path->child_needs_resort = 1;
- mark_path_child_needs_resort (ets, path->parent);
- }
-}
-
-static void
-mark_path_needs_resort (ETreeSorted *ets, ETreeSortedPath *path, gboolean needs_regen, gboolean resort_all_children)
-{
- if (path == NULL)
- return;
- if (path->num_children == 0)
- return;
- path->needs_resort = 1;
- path->needs_regen_to_sort = needs_regen;
- path->resort_all_children = resort_all_children;
- mark_path_child_needs_resort(ets, path->parent);
-}
-
-static void
-schedule_resort (ETreeSorted *ets, ETreeSortedPath *path, gboolean needs_regen, gboolean resort_all_children)
-{
- ets->priv->insert_count = 0;
- if (ets->priv->insert_idle_id != 0) {
- g_source_remove(ets->priv->insert_idle_id);
- ets->priv->insert_idle_id = 0;
- }
-
- if (path == NULL)
- return;
- if (path->num_children == 0)
- return;
-
- mark_path_needs_resort(ets, path, needs_regen, resort_all_children);
- if (ets->priv->sort_idle_id == 0) {
- ets->priv->sort_idle_id = g_idle_add_full(50, (GSourceFunc) ets_sort_idle, ets, NULL);
- }
-}
-
-
-
-/* virtual methods */
-
-static void
-ets_destroy (GtkObject *object)
-{
- ETreeSorted *ets = E_TREE_SORTED (object);
- ETreeSortedPriv *priv = ets->priv;
-
- /* FIXME lots of stuff to free here */
-
- free_path(priv->root);
-
- if (priv->source) {
- gtk_signal_disconnect (GTK_OBJECT (priv->source),
- priv->tree_model_pre_change_id);
- gtk_signal_disconnect (GTK_OBJECT (priv->source),
- priv->tree_model_node_changed_id);
- gtk_signal_disconnect (GTK_OBJECT (priv->source),
- priv->tree_model_node_data_changed_id);
- gtk_signal_disconnect (GTK_OBJECT (priv->source),
- priv->tree_model_node_col_changed_id);
- gtk_signal_disconnect (GTK_OBJECT (priv->source),
- priv->tree_model_node_inserted_id);
- gtk_signal_disconnect (GTK_OBJECT (priv->source),
- priv->tree_model_node_removed_id);
-
- gtk_object_unref (GTK_OBJECT (priv->source));
- priv->source = NULL;
-
- priv->tree_model_pre_change_id = 0;
- priv->tree_model_node_changed_id = 0;
- priv->tree_model_node_data_changed_id = 0;
- priv->tree_model_node_col_changed_id = 0;
- priv->tree_model_node_inserted_id = 0;
- priv->tree_model_node_removed_id = 0;
- }
-
- if (priv->sort_info) {
- gtk_signal_disconnect (GTK_OBJECT (priv->sort_info),
- priv->sort_info_changed_id);
-
- gtk_object_unref (GTK_OBJECT (priv->sort_info));
- priv->sort_info = NULL;
-
- priv->sort_info_changed_id = 0;
- }
-
- if (ets->priv->sort_idle_id) {
- g_source_remove(ets->priv->sort_idle_id);
- ets->priv->sort_idle_id = 0;
- }
- if (ets->priv->insert_idle_id) {
- g_source_remove(ets->priv->insert_idle_id);
- ets->priv->insert_idle_id = 0;
- }
-
- if (priv->full_header)
- gtk_object_unref(GTK_OBJECT(priv->full_header));
-
- g_free (priv);
-
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
-}
-
-/* Set_arg handler for the text item */
-static void
-ets_set_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- ETreeSorted *ets;
-
- ets = E_TREE_SORTED (object);
-
- switch (arg_id) {
- case ARG_SORT_INFO:
- if (ets->priv->sort_info) {
- gtk_signal_disconnect (GTK_OBJECT (ets->priv->sort_info),
- ets->priv->sort_info_changed_id);
-
- gtk_object_unref (GTK_OBJECT (ets->priv->sort_info));
- ets->priv->sort_info_changed_id = 0;
- }
- if (GTK_VALUE_OBJECT (*arg))
- ets->priv->sort_info = E_TABLE_SORT_INFO(GTK_VALUE_OBJECT (*arg));
- else
- ets->priv->sort_info = NULL;
- if (ets->priv->sort_info) {
- gtk_object_ref(GTK_OBJECT(ets->priv->sort_info));
-
- ets->priv->sort_info_changed_id = gtk_signal_connect (GTK_OBJECT (ets->priv->sort_info), "sort_info_changed",
- GTK_SIGNAL_FUNC (ets_sort_info_changed), ets);
- }
- if (ets->priv->root)
- schedule_resort (ets, ets->priv->root, TRUE, TRUE);
- break;
-
- default:
- return;
- }
-}
-
-/* Get_arg handler for the text item */
-static void
-ets_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- ETreeSorted *ets;
-
- ets = E_TREE_SORTED (object);
-
- switch (arg_id) {
- case ARG_SORT_INFO:
- if (ets->priv->sort_info)
- GTK_VALUE_OBJECT (*arg) = GTK_OBJECT(ets->priv->sort_info);
- else
- GTK_VALUE_OBJECT (*arg) = NULL;
- break;
-
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
-
-static ETreePath
-ets_get_root (ETreeModel *etm)
-{
- ETreeSortedPriv *priv = E_TREE_SORTED(etm)->priv;
- if (priv->root == NULL) {
- ETreeSorted *ets = E_TREE_SORTED(etm);
- ETreePath corresponding = e_tree_model_get_root(ets->priv->source);
-
- if (corresponding) {
- priv->root = new_path(NULL, corresponding);
- }
- }
- if (priv->root && priv->root->num_children == -1) {
- generate_children(E_TREE_SORTED(etm), priv->root);
- }
-
- return priv->root;
-}
-
-static ETreePath
-ets_get_parent (ETreeModel *etm, ETreePath node)
-{
- ETreeSortedPath *path = node;
- return path->parent;
-}
-
-static ETreePath
-ets_get_first_child (ETreeModel *etm, ETreePath node)
-{
- ETreeSortedPath *path = node;
- ETreeSorted *ets = E_TREE_SORTED(etm);
-
- if (path->num_children == -1)
- generate_children(ets, path);
-
- if (path->num_children > 0)
- return path->children[0];
- else
- return NULL;
-}
-
-static ETreePath
-ets_get_last_child (ETreeModel *etm, ETreePath node)
-{
- ETreeSortedPath *path = node;
- ETreeSorted *ets = E_TREE_SORTED(etm);
-
- if (path->num_children == -1)
- generate_children(ets, path);
-
- if (path->num_children > 0)
- return path->children[path->num_children - 1];
- else
- return NULL;
-}
-
-static ETreePath
-ets_get_next (ETreeModel *etm, ETreePath node)
-{
- ETreeSortedPath *path = node;
- ETreeSortedPath *parent = path->parent;
- if (parent) {
- if (parent->num_children > path->position + 1)
- return parent->children[path->position + 1];
- else
- return NULL;
- } else
- return NULL;
-}
-
-static ETreePath
-ets_get_prev (ETreeModel *etm, ETreePath node)
-{
- ETreeSortedPath *path = node;
- ETreeSortedPath *parent = path->parent;
- if (parent) {
- if (path->position - 1 >= 0)
- return parent->children[path->position - 1];
- else
- return NULL;
- } else
- return NULL;
-}
-
-static gboolean
-ets_is_root (ETreeModel *etm, ETreePath node)
-{
- ETreeSortedPath *path = node;
- ETreeSorted *ets = E_TREE_SORTED(etm);
-
- return e_tree_model_node_is_root (ets->priv->source, path->corresponding);
-}
-
-static gboolean
-ets_is_expandable (ETreeModel *etm, ETreePath node)
-{
- ETreeSortedPath *path = node;
- ETreeSorted *ets = E_TREE_SORTED(etm);
- gboolean expandable = e_tree_model_node_is_expandable (ets->priv->source, path->corresponding);
-
- if (path->num_children == -1) {
- generate_children(ets, node);
- }
-
- return expandable;
-}
-
-static guint
-ets_get_children (ETreeModel *etm, ETreePath node, ETreePath **nodes)
-{
- ETreeSortedPath *path = node;
- guint n_children;
-
- if (path->num_children == -1) {
- generate_children(E_TREE_SORTED(etm), node);
- }
-
- n_children = path->num_children;
-
- if (nodes) {
- int i;
-
- (*nodes) = g_malloc (sizeof (ETreePath) * n_children);
- for (i = 0; i < n_children; i ++) {
- (*nodes)[i] = path->children[i];
- }
- }
-
- return n_children;
-}
-
-static guint
-ets_depth (ETreeModel *etm, ETreePath node)
-{
- ETreeSortedPath *path = node;
- ETreeSorted *ets = E_TREE_SORTED(etm);
-
- return e_tree_model_node_depth(ets->priv->source, path->corresponding);
-}
-
-static GdkPixbuf *
-ets_icon_at (ETreeModel *etm, ETreePath node)
-{
- ETreeSortedPath *path = node;
- ETreeSorted *ets = E_TREE_SORTED(etm);
-
- return e_tree_model_icon_at(ets->priv->source, path->corresponding);
-}
-
-static gboolean
-ets_get_expanded_default (ETreeModel *etm)
-{
- ETreeSorted *ets = E_TREE_SORTED(etm);
-
- return e_tree_model_get_expanded_default(ets->priv->source);
-}
-
-static gint
-ets_column_count (ETreeModel *etm)
-{
- ETreeSorted *ets = E_TREE_SORTED(etm);
-
- return e_tree_model_column_count(ets->priv->source);
-}
-
-
-static gboolean
-ets_has_save_id (ETreeModel *etm)
-{
- return TRUE;
-}
-
-static gchar *
-ets_get_save_id (ETreeModel *etm, ETreePath node)
-{
- ETreeSorted *ets = E_TREE_SORTED(etm);
- ETreeSortedPath *path = node;
-
- if (e_tree_model_has_save_id(ets->priv->source))
- return e_tree_model_get_save_id(ets->priv->source, path->corresponding);
- else
- return g_strdup_printf("%p", path->corresponding);
-}
-
-static gboolean
-ets_has_get_node_by_id (ETreeModel *etm)
-{
- ETreeSorted *ets = E_TREE_SORTED(etm);
- return e_tree_model_has_get_node_by_id(ets->priv->source);
-}
-
-static ETreePath
-ets_get_node_by_id (ETreeModel *etm, gchar *save_id)
-{
- ETreeSorted *ets = E_TREE_SORTED(etm);
- ETreePath node;
-
- node = e_tree_model_get_node_by_id (ets->priv->source, save_id);
-
- return find_path(ets, node);
-}
-
-static gboolean
-ets_has_change_pending (ETreeModel *etm)
-{
- ETreeSorted *ets = E_TREE_SORTED(etm);
-
- return ets->priv->sort_idle_id != 0;
-}
-
-
-static void *
-ets_value_at (ETreeModel *etm, ETreePath node, int col)
-{
- ETreeSorted *ets = E_TREE_SORTED(etm);
- ETreeSortedPath *path = node;
-
- return e_tree_model_value_at(ets->priv->source, path->corresponding, col);
-}
-
-static void
-ets_set_value_at (ETreeModel *etm, ETreePath node, int col, const void *val)
-{
- ETreeSorted *ets = E_TREE_SORTED(etm);
- ETreeSortedPath *path = node;
-
- e_tree_model_set_value_at (ets->priv->source, path->corresponding, col, val);
-}
-
-static gboolean
-ets_is_editable (ETreeModel *etm, ETreePath node, int col)
-{
- ETreeSorted *ets = E_TREE_SORTED(etm);
- ETreeSortedPath *path = node;
-
- return e_tree_model_node_is_editable (ets->priv->source, path->corresponding, col);
-}
-
-
-/* The default for ets_duplicate_value is to return the raw value. */
-static void *
-ets_duplicate_value (ETreeModel *etm, int col, const void *value)
-{
- ETreeSorted *ets = E_TREE_SORTED(etm);
-
- return e_tree_model_duplicate_value (ets->priv->source, col, value);
-}
-
-static void
-ets_free_value (ETreeModel *etm, int col, void *value)
-{
- ETreeSorted *ets = E_TREE_SORTED(etm);
-
- e_tree_model_free_value (ets->priv->source, col, value);
-}
-
-static void *
-ets_initialize_value (ETreeModel *etm, int col)
-{
- ETreeSorted *ets = E_TREE_SORTED(etm);
-
- return e_tree_model_initialize_value (ets->priv->source, col);
-}
-
-static gboolean
-ets_value_is_empty (ETreeModel *etm, int col, const void *value)
-{
- ETreeSorted *ets = E_TREE_SORTED(etm);
-
- return e_tree_model_value_is_empty (ets->priv->source, col, value);
-}
-
-static char *
-ets_value_to_string (ETreeModel *etm, int col, const void *value)
-{
- ETreeSorted *ets = E_TREE_SORTED(etm);
-
- return e_tree_model_value_to_string (ets->priv->source, col, value);
-}
-
-
-
-/* Proxy functions */
-
-static void
-ets_proxy_pre_change (ETreeModel *etm, ETreeSorted *ets)
-{
- e_tree_model_pre_change(E_TREE_MODEL(ets));
-}
-
-static void
-ets_proxy_node_changed (ETreeModel *etm, ETreePath node, ETreeSorted *ets)
-{
- ets->priv->last_access = NULL;
- d(g_print("Setting last access %p. (ets_proxy_node_changed)\n", ets->priv->last_access));
-
- if (e_tree_model_node_is_root(ets->priv->source, node)) {
- if (ets->priv->root) {
- free_path(ets->priv->root);
- }
- ets->priv->root = new_path(NULL, node);
- e_tree_model_node_changed(E_TREE_MODEL(ets), ets->priv->root);
- } else {
- ETreeSortedPath *path = find_path(ets, node);
-
- if (path) {
- free_children(path);
- reposition_path(ets, path);
- e_tree_model_node_changed(E_TREE_MODEL(ets), path);
- }
- }
-}
-
-static void
-ets_proxy_node_data_changed (ETreeModel *etm, ETreePath node, ETreeSorted *ets)
-{
- ETreeSortedPath *path = find_path(ets, node);
-
- if (path) {
- reposition_path(ets, path);
- e_tree_model_node_data_changed(E_TREE_MODEL(ets), path);
- }
-}
-
-static void
-ets_proxy_node_col_changed (ETreeModel *etm, ETreePath node, int col, ETreeSorted *ets)
-{
- ETreeSortedPath *path = find_path(ets, node);
-
- if (path) {
- if (e_table_sorting_utils_affects_sort(ets->priv->sort_info, ets->priv->full_header, col))
- reposition_path(ets, path);
- e_tree_model_node_col_changed(E_TREE_MODEL(ets), path, col);
- }
-}
-
-static void
-ets_proxy_node_inserted (ETreeModel *etm, ETreePath parent, ETreePath child, ETreeSorted *ets)
-{
- ETreeSortedPath *parent_path = find_path(ets, parent);
-
- if (parent_path && parent_path->num_children != -1) {
- int i;
- int j;
- ETreeSortedPath *path;
- int position = parent_path->num_children;
- ETreePath counter;
-
- for (counter = e_tree_model_node_get_next(etm, child);
- counter;
- counter = e_tree_model_node_get_next(etm, counter))
- position --;
-
- if (position != parent_path->num_children) {
- for (i = 0; i < parent_path->num_children; i++) {
- if (parent_path->children[i]->orig_position >= position)
- parent_path->children[i]->orig_position++;
- }
- }
-
- i = parent_path->num_children;
- path = new_path(parent_path, child);
- path->orig_position = position;
- if (ets->priv->sort_idle_id == 0) {
- ets->priv->insert_count++;
- if (ets->priv->insert_count > ETS_INSERT_MAX) {
- /* schedule a sort, and append instead */
- schedule_resort(ets, parent_path, TRUE, FALSE);
- } else {
- /* make sure we have an idle handler to reset the count every now and then */
- if (ets->priv->insert_idle_id == 0) {
- ets->priv->insert_idle_id = g_idle_add_full(40, (GSourceFunc) ets_insert_idle, ets, NULL);
- }
- i = e_table_sorting_utils_tree_insert
- (ets->priv->source,
- ets->priv->sort_info,
- ets->priv->full_header,
- (ETreePath *) parent_path->children,
- parent_path->num_children,
- path);
- }
- } else {
- mark_path_needs_resort(ets, parent_path, TRUE, FALSE);
- }
- parent_path->num_children ++;
- parent_path->children = g_renew(ETreeSortedPath *, parent_path->children, parent_path->num_children);
- memmove(parent_path->children + i + 1, parent_path->children + i, (parent_path->num_children - 1 - i) * sizeof(int));
- parent_path->children[i] = path;
- for (j = i; j < parent_path->num_children; j++) {
- parent_path->children[j]->position = j;
- }
- e_tree_model_node_inserted(E_TREE_MODEL(ets), parent_path, parent_path->children[i]);
- } else if (ets->priv->root == NULL && parent == NULL) {
- if (child) {
- ets->priv->root = new_path(NULL, child);
- e_tree_model_node_inserted(E_TREE_MODEL(ets), NULL, ets->priv->root);
- }
- }
-}
-
-static void
-ets_proxy_node_removed (ETreeModel *etm, ETreePath parent, ETreePath child, int old_position, ETreeSorted *ets)
-{
- ETreeSortedPath *parent_path = find_path(ets, parent);
- ETreeSortedPath *path;
-
- if (parent_path)
- path = find_child_path(ets, parent_path, child);
- else
- path = find_path(ets, child);
-
- d(g_print("Setting last access %p. (ets_proxy_node_removed)\n ", ets->priv->last_access));
- ets->priv->last_access = NULL;
-
- if (path && parent_path && parent_path->num_children != -1) {
- int i;
- for (i = 0; i < parent_path->num_children; i++) {
- if (parent_path->children[i]->orig_position > old_position)
- parent_path->children[i]->orig_position --;
- }
-
- i = path->position;
-
- parent_path->num_children --;
- memmove(parent_path->children + i, parent_path->children + i + 1, sizeof(ETreeSortedPath *) * (parent_path->num_children - i));
- for (; i < parent_path->num_children; i++) {
- parent_path->children[i]->position = i;
- }
- e_tree_model_node_removed(E_TREE_MODEL(ets), parent_path, path, path->position);
- free_path(path);
- } else if (path && path == ets->priv->root) {
- ets->priv->root = NULL;
- e_tree_model_node_removed(E_TREE_MODEL(ets), NULL, path, -1);
- free_path(path);
- }
-}
-
-static void
-ets_sort_info_changed (ETableSortInfo *sort_info, ETreeSorted *ets)
-{
- schedule_resort(ets, ets->priv->root, TRUE, TRUE);
-}
-
-
-
-/* Initialization and creation */
-
-static void
-e_tree_sorted_class_init (GtkObjectClass *klass)
-{
- ETreeModelClass *tree_class = (ETreeModelClass *) klass;
-
- parent_class = gtk_type_class (PARENT_TYPE);
-
- node_chunk = g_mem_chunk_create (ETreeSortedPath, TREEPATH_CHUNK_AREA_SIZE, G_ALLOC_AND_FREE);
-
- klass->destroy = ets_destroy;
- klass->set_arg = ets_set_arg;
- klass->get_arg = ets_get_arg;
-
- tree_class->get_root = ets_get_root;
- tree_class->get_parent = ets_get_parent;
- tree_class->get_first_child = ets_get_first_child;
- tree_class->get_last_child = ets_get_last_child;
- tree_class->get_prev = ets_get_prev;
- tree_class->get_next = ets_get_next;
-
- tree_class->is_root = ets_is_root;
- tree_class->is_expandable = ets_is_expandable;
- tree_class->get_children = ets_get_children;
- tree_class->depth = ets_depth;
-
- tree_class->icon_at = ets_icon_at;
-
- tree_class->get_expanded_default = ets_get_expanded_default;
- tree_class->column_count = ets_column_count;
-
- tree_class->has_save_id = ets_has_save_id;
- tree_class->get_save_id = ets_get_save_id;
-
- tree_class->has_get_node_by_id = ets_has_get_node_by_id;
- tree_class->get_node_by_id = ets_get_node_by_id;
-
- tree_class->has_change_pending = ets_has_change_pending;
-
-
-
-
- tree_class->value_at = ets_value_at;
- tree_class->set_value_at = ets_set_value_at;
- tree_class->is_editable = ets_is_editable;
-
- tree_class->duplicate_value = ets_duplicate_value;
- tree_class->free_value = ets_free_value;
- tree_class->initialize_value = ets_initialize_value;
- tree_class->value_is_empty = ets_value_is_empty;
- tree_class->value_to_string = ets_value_to_string;
-
- gtk_object_add_arg_type ("ETreeSorted::sort_info", E_TABLE_SORT_INFO_TYPE,
- GTK_ARG_READWRITE, ARG_SORT_INFO);
-}
-
-static void
-e_tree_sorted_init (GtkObject *object)
-{
- ETreeSorted *ets = (ETreeSorted *)object;
-
- ETreeSortedPriv *priv;
-
- priv = g_new0 (ETreeSortedPriv, 1);
- ets->priv = priv;
-
- priv->root = NULL;
- priv->source = NULL;
-
- priv->sort_info = NULL;
- priv->full_header = NULL;
-
- priv->last_access = NULL;
-
- priv->tree_model_pre_change_id = 0;
- priv->tree_model_node_changed_id = 0;
- priv->tree_model_node_data_changed_id = 0;
- priv->tree_model_node_col_changed_id = 0;
- priv->tree_model_node_inserted_id = 0;
- priv->tree_model_node_removed_id = 0;
-
- priv->sort_info_changed_id = 0;
- priv->sort_idle_id = 0;
- priv->insert_idle_id = 0;
- priv->insert_count = 0;
-}
-
-E_MAKE_TYPE(e_tree_sorted, "ETreeSorted", ETreeSorted, e_tree_sorted_class_init, e_tree_sorted_init, PARENT_TYPE)
-
-/**
- * e_tree_sorted_construct:
- * @etree:
- *
- *
- **/
-void
-e_tree_sorted_construct (ETreeSorted *ets, ETreeModel *source, ETableHeader *full_header, ETableSortInfo *sort_info)
-{
- ets->priv->source = source;
- if (source) gtk_object_ref(GTK_OBJECT(source));
-
- ets->priv->full_header = full_header;
- if (full_header) gtk_object_ref(GTK_OBJECT(full_header));
-
- ets->priv->sort_info = sort_info;
- if (sort_info) gtk_object_ref(GTK_OBJECT(sort_info));
-
- ets->priv->tree_model_pre_change_id = gtk_signal_connect (GTK_OBJECT (source), "pre_change",
- GTK_SIGNAL_FUNC (ets_proxy_pre_change), ets);
- ets->priv->tree_model_node_changed_id = gtk_signal_connect (GTK_OBJECT (source), "node_changed",
- GTK_SIGNAL_FUNC (ets_proxy_node_changed), ets);
- ets->priv->tree_model_node_data_changed_id = gtk_signal_connect (GTK_OBJECT (source), "node_data_changed",
- GTK_SIGNAL_FUNC (ets_proxy_node_data_changed), ets);
- ets->priv->tree_model_node_col_changed_id = gtk_signal_connect (GTK_OBJECT (source), "node_col_changed",
- GTK_SIGNAL_FUNC (ets_proxy_node_col_changed), ets);
- ets->priv->tree_model_node_inserted_id = gtk_signal_connect (GTK_OBJECT (source), "node_inserted",
- GTK_SIGNAL_FUNC (ets_proxy_node_inserted), ets);
- ets->priv->tree_model_node_removed_id = gtk_signal_connect (GTK_OBJECT (source), "node_removed",
- GTK_SIGNAL_FUNC (ets_proxy_node_removed), ets);
-
- ets->priv->sort_info_changed_id = gtk_signal_connect (GTK_OBJECT (sort_info), "sort_info_changed",
- GTK_SIGNAL_FUNC (ets_sort_info_changed), ets);
-}
-
-/**
- * e_tree_sorted_new
- *
- * FIXME docs here.
- *
- * return values: a newly constructed ETreeSorted.
- */
-ETreeSorted *
-e_tree_sorted_new (ETreeModel *source, ETableHeader *full_header, ETableSortInfo *sort_info)
-{
- ETreeSorted *ets;
-
- ets = gtk_type_new (e_tree_sorted_get_type ());
-
- e_tree_sorted_construct(ets, source, full_header, sort_info);
-
- return ets;
-}
-
-ETreePath
-e_tree_sorted_view_to_model_path (ETreeSorted *ets,
- ETreePath view_path)
-{
- ETreeSortedPath *path = view_path;
- if (path) {
- ets->priv->last_access = path;
- d(g_print("Setting last access %p. (e_tree_sorted_view_to_model_path)\n", ets->priv->last_access));
- return path->corresponding;
- } else
- return NULL;
-}
-
-ETreePath
-e_tree_sorted_model_to_view_path (ETreeSorted *ets,
- ETreePath model_path)
-{
- return find_or_create_path(ets, model_path);
-}
-
-int
-e_tree_sorted_orig_position (ETreeSorted *ets,
- ETreePath path)
-{
- ETreeSortedPath *sorted_path = path;
- return sorted_path->orig_position;
-}
-
-int
-e_tree_sorted_node_num_children (ETreeSorted *ets,
- ETreePath path)
-{
- ETreeSortedPath *sorted_path = path;
- return sorted_path->num_children;
-}
diff --git a/widgets/table/e-tree-sorted.h b/widgets/table/e-tree-sorted.h
deleted file mode 100644
index 1ad5438c29..0000000000
--- a/widgets/table/e-tree-sorted.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TREE_SORTED_H_
-#define _E_TREE_SORTED_H_
-
-#include <gdk-pixbuf/gdk-pixbuf.h>
-#include <gal/e-table/e-tree-model.h>
-#include <gal/e-table/e-table-sort-info.h>
-#include <gal/e-table/e-table-header.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-#define E_TREE_SORTED_TYPE (e_tree_sorted_get_type ())
-#define E_TREE_SORTED(o) (GTK_CHECK_CAST ((o), E_TREE_SORTED_TYPE, ETreeSorted))
-#define E_TREE_SORTED_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TREE_SORTED_TYPE, ETreeSortedClass))
-#define E_IS_TREE_SORTED(o) (GTK_CHECK_TYPE ((o), E_TREE_SORTED_TYPE))
-#define E_IS_TREE_SORTED_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TREE_SORTED_TYPE))
-
-typedef struct ETreeSorted ETreeSorted;
-typedef struct ETreeSortedPriv ETreeSortedPriv;
-typedef struct ETreeSortedClass ETreeSortedClass;
-
-struct ETreeSorted {
- ETreeModel base;
-
- ETreeSortedPriv *priv;
-};
-
-struct ETreeSortedClass {
- ETreeModelClass parent_class;
-};
-
-
-GtkType e_tree_sorted_get_type (void);
-void e_tree_sorted_construct (ETreeSorted *etree,
- ETreeModel *source,
- ETableHeader *full_header,
- ETableSortInfo *sort_info);
-ETreeSorted *e_tree_sorted_new (ETreeModel *source,
- ETableHeader *full_header,
- ETableSortInfo *sort_info);
-
-ETreePath e_tree_sorted_view_to_model_path (ETreeSorted *ets,
- ETreePath view_path);
-ETreePath e_tree_sorted_model_to_view_path (ETreeSorted *ets,
- ETreePath model_path);
-int e_tree_sorted_orig_position (ETreeSorted *ets,
- ETreePath path);
-int e_tree_sorted_node_num_children (ETreeSorted *ets,
- ETreePath path);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_TREE_SORTED_H */
diff --git a/widgets/table/e-tree-table-adapter.c b/widgets/table/e-tree-table-adapter.c
deleted file mode 100644
index bf15d1659b..0000000000
--- a/widgets/table/e-tree-table-adapter.c
+++ /dev/null
@@ -1,1035 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-tree-table-adapter.c: Implements a table that contains a subset of another table.
- *
- * Author:
- * Chris Lahey <clahey@ximian.com>
- * Chris Toshok <toshok@ximian.com>
- *
- * (C) 2000, 2001 Ximian, Inc.
- */
-#include <config.h>
-#include <stdlib.h>
-#include <string.h>
-#include <gtk/gtksignal.h>
-#include <gnome-xml/tree.h>
-#include <gnome-xml/parser.h>
-#include "gal/util/e-util.h"
-#include "gal/util/e-xml-utils.h"
-#include "e-tree-table-adapter.h"
-
-#define PARENT_TYPE E_TABLE_MODEL_TYPE
-#define d(x)
-
-#define INCREMENT_AMOUNT 100
-
-static ETableModelClass *parent_class;
-
-
-struct ETreeTableAdapterPriv {
- ETreeModel *source;
- int n_map;
- int n_vals_allocated;
- ETreePath *map_table;
- GHashTable *attributes;
-
- guint root_visible : 1;
-
- int last_access;
-
- int tree_model_pre_change_id;
- int tree_model_node_changed_id;
- int tree_model_node_data_changed_id;
- int tree_model_node_col_changed_id;
- int tree_model_node_inserted_id;
- int tree_model_node_removed_id;
-};
-
-typedef struct ETreeTableAdapterNode {
- guint expanded : 1;
- guint expandable : 1;
- guint expandable_set : 1;
-
- /* parent/child/sibling pointers */
- guint32 num_visible_children;
-} ETreeTableAdapterNode;
-
-static ETreeTableAdapterNode *
-find_node(ETreeTableAdapter *adapter, ETreePath path)
-{
- ETreeTableAdapterNode *node;
-
- if (path == NULL)
- return NULL;
-
- if (e_tree_model_has_save_id(adapter->priv->source)) {
- char *save_id;
- save_id = e_tree_model_get_save_id(adapter->priv->source, path);
- node = g_hash_table_lookup(adapter->priv->attributes, save_id);
- g_free(save_id);
- } else {
- node = g_hash_table_lookup(adapter->priv->attributes, path);
- }
- if (node && !node->expandable_set) {
- node->expandable = e_tree_model_node_is_expandable(adapter->priv->source, path);
- node->expandable_set = 1;
- }
-
- return node;
-}
-
-static ETreeTableAdapterNode *
-find_or_create_node(ETreeTableAdapter *etta, ETreePath path)
-{
- ETreeTableAdapterNode *node;
-
- node = find_node(etta, path);
-
- if (!node) {
- node = g_new(ETreeTableAdapterNode, 1);
- if (e_tree_model_node_is_root(etta->priv->source, path))
- node->expanded = TRUE;
- else
- node->expanded = e_tree_model_get_expanded_default(etta->priv->source);
- node->expandable = e_tree_model_node_is_expandable(etta->priv->source, path);
- node->expandable_set = 1;
- node->num_visible_children = 0;
-
- if (e_tree_model_has_save_id(etta->priv->source)) {
- char *save_id;
- save_id = e_tree_model_get_save_id(etta->priv->source, path);
- g_hash_table_insert(etta->priv->attributes, save_id, node);
- } else {
- g_hash_table_insert(etta->priv->attributes, path, node);
- }
- }
-
- return node;
-}
-
-static void
-add_expanded_node(ETreeTableAdapter *etta, char *save_id, gboolean expanded)
-{
- ETreeTableAdapterNode *node;
-
- node = g_hash_table_lookup(etta->priv->attributes, save_id);
-
- if (node) {
- node->expandable_set = 0;
- node->expanded = expanded;
- return;
- }
-
- node = g_new(ETreeTableAdapterNode, 1);
-
- node->expanded = expanded;
- node->expandable = 0;
- node->expandable_set = 0;
- node->num_visible_children = 0;
-
- g_hash_table_insert(etta->priv->attributes, save_id, node);
-}
-
-static void
-etta_expand_to(ETreeTableAdapter *etta, int size)
-{
- if (size > etta->priv->n_vals_allocated) {
- etta->priv->n_vals_allocated = MAX(etta->priv->n_vals_allocated + INCREMENT_AMOUNT, size);
- etta->priv->map_table = g_renew (ETreePath, etta->priv->map_table, etta->priv->n_vals_allocated);
- }
-
-}
-
-static void
-etta_update_parent_child_counts(ETreeTableAdapter *etta, ETreePath path, int change)
-{
- for (path = e_tree_model_node_get_parent(etta->priv->source, path);
- path;
- path = e_tree_model_node_get_parent(etta->priv->source, path)) {
- ETreeTableAdapterNode *node = find_or_create_node(etta, path);
- node->num_visible_children += change;
- }
- etta->priv->n_map += change;
-}
-
-static int
-find_next_node_maybe_deleted(ETreeTableAdapter *adapter, int row)
-{
- ETreePath path = adapter->priv->map_table[row];
- if (path) {
- ETreeTableAdapterNode *current = find_node (adapter, path);
- return row + (current ? current->num_visible_children : 0) + 1;
- } else
- return -1;
-}
-
-static int
-find_first_child_node_maybe_deleted(ETreeTableAdapter *adapter, int row)
-{
- if (row != -1) {
- ETreePath path = adapter->priv->map_table[row];
- ETreeTableAdapterNode *current = find_node (adapter, path);
- if (current && current->expanded)
- return row + 1;
- else
- return -1;
- } else
- return 0;
-}
-
-static int
-find_next_node(ETreeTableAdapter *adapter, int row)
-{
- ETreePath path = adapter->priv->map_table[row];
- if (path) {
- ETreePath next_sibling = e_tree_model_node_get_next(adapter->priv->source, path);
- ETreeTableAdapterNode *current = find_node (adapter, path);
- if (next_sibling)
- return row + (current ? current->num_visible_children : 0) + 1;
- else
- return -1;
- } else
- return -1;
-}
-
-static int
-find_first_child_node(ETreeTableAdapter *adapter, int row)
-{
- if (row != -1) {
- ETreePath path = adapter->priv->map_table[row];
- ETreePath first_child = e_tree_model_node_get_first_child(adapter->priv->source, path);
- ETreeTableAdapterNode *current = find_node (adapter, path);
- if (first_child && current && current->expanded)
- return row + 1;
- else
- return -1;
- } else
- return 0;
-}
-
-static int
-find_child_row_num_maybe_deleted(ETreeTableAdapter *etta, int row, ETreePath path)
-{
- row = find_first_child_node_maybe_deleted(etta, row);
-
- while (row != -1 && path != etta->priv->map_table[row]) {
- row = find_next_node_maybe_deleted(etta, row);
- }
-
- return row;
-}
-
-static int
-find_row_num(ETreeTableAdapter *etta, ETreePath path)
-{
- int depth;
- ETreePath *sequence;
- int i;
- int row;
-
- if (etta->priv->map_table == NULL)
- return -1;
-
- if (path == NULL)
- return -1;
-
- if (etta->priv->last_access != -1) {
- int end = MIN(etta->priv->n_map, etta->priv->last_access + 10);
- int start = MAX(0, etta->priv->last_access - 10);
- for (i = etta->priv->last_access; i < end; i++) {
- if(etta->priv->map_table[i] == path) {
- d(g_print("Found last access %d at row %d. (find_row_num)\n", etta->priv->last_access, i));
- return i;
- }
- }
- for (i = etta->priv->last_access - 1; i >= start; i--) {
- if(etta->priv->map_table[i] == path) {
- d(g_print("Found last access %d at row %d. (find_row_num)\n", etta->priv->last_access, i));
- return i;
- }
- }
- }
-
-
- depth = e_tree_model_node_depth(etta->priv->source, path);
-
- sequence = g_new(ETreePath, depth + 1);
-
- sequence[0] = path;
-
- for (i = 0; i < depth; i++) {
- ETreeTableAdapterNode *node;
-
- sequence[i + 1] = e_tree_model_node_get_parent(etta->priv->source, sequence[i]);
-
- node = find_node(etta, sequence[i + 1]);
- if (! ((node && node->expanded) || e_tree_model_get_expanded_default(etta->priv->source))) {
- g_free(sequence);
- return -1;
- }
- }
-
- row = 0;
-
- for (i = depth; i >= 0; i --) {
- while (row != -1 && sequence[i] != etta->priv->map_table[row]) {
- row = find_next_node(etta, row);
- }
- if (row == -1)
- break;
- if (i == 0)
- break;
- row = find_first_child_node(etta, row);
- }
- g_free (sequence);
-
- d(g_print("Didn't find last access %d. Setting to %d. (find_row_num)\n", etta->priv->last_access, row));
- etta->priv->last_access = row;
- return row;
-}
-
-static int
-array_size_from_path(ETreeTableAdapter *etta, ETreePath path)
-{
- int size = 1;
-
- ETreeTableAdapterNode *node = NULL;
-
- if (e_tree_model_node_is_expandable(etta->priv->source, path))
- node = find_or_create_node(etta, path);
-
- if (node && node->expanded) {
- ETreePath children;
-
- for (children = e_tree_model_node_get_first_child(etta->priv->source, path);
- children;
- children = e_tree_model_node_get_next(etta->priv->source, children)) {
- size += array_size_from_path(etta, children);
- }
- }
-
- return size;
-}
-
-static int
-fill_array_from_path(ETreeTableAdapter *etta, ETreePath *array, ETreePath path)
-{
- ETreeTableAdapterNode *node = NULL;
- int index = 0;
-
- array[index] = path;
-
- index ++;
-
- if (e_tree_model_node_is_expandable(etta->priv->source, path))
- node = find_or_create_node(etta, path);
- else
- node = find_node(etta, path);
-
- if (node && node->expanded) {
- ETreePath children;
-
- for (children = e_tree_model_node_get_first_child(etta->priv->source, path);
- children;
- children = e_tree_model_node_get_next(etta->priv->source, children)) {
- index += fill_array_from_path(etta, array + index, children);
- }
- }
-
- if (node)
- node->num_visible_children = index - 1;
-
- return index;
-}
-
-static void
-free_string (gpointer key, gpointer value, gpointer data)
-{
- g_free(key);
-}
-
-static void
-etta_destroy (GtkObject *object)
-{
- ETreeTableAdapter *etta = E_TREE_TABLE_ADAPTER (object);
-
- if (etta->priv->source && e_tree_model_has_save_id(etta->priv->source)) {
- g_hash_table_foreach(etta->priv->attributes, free_string, NULL);
- }
- g_hash_table_destroy (etta->priv->attributes);
-
- if (etta->priv->source) {
- gtk_signal_disconnect (GTK_OBJECT (etta->priv->source),
- etta->priv->tree_model_pre_change_id);
- gtk_signal_disconnect (GTK_OBJECT (etta->priv->source),
- etta->priv->tree_model_node_changed_id);
- gtk_signal_disconnect (GTK_OBJECT (etta->priv->source),
- etta->priv->tree_model_node_data_changed_id);
- gtk_signal_disconnect (GTK_OBJECT (etta->priv->source),
- etta->priv->tree_model_node_col_changed_id);
- gtk_signal_disconnect (GTK_OBJECT (etta->priv->source),
- etta->priv->tree_model_node_inserted_id);
- gtk_signal_disconnect (GTK_OBJECT (etta->priv->source),
- etta->priv->tree_model_node_removed_id);
-
- gtk_object_unref (GTK_OBJECT (etta->priv->source));
- etta->priv->source = NULL;
-
- etta->priv->tree_model_pre_change_id = 0;
- etta->priv->tree_model_node_changed_id = 0;
- etta->priv->tree_model_node_data_changed_id = 0;
- etta->priv->tree_model_node_col_changed_id = 0;
- etta->priv->tree_model_node_inserted_id = 0;
- etta->priv->tree_model_node_removed_id = 0;
- }
-
- g_free (etta->priv->map_table);
-
- g_free (etta->priv);
-
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
-}
-
-static int
-etta_column_count (ETableModel *etm)
-{
- ETreeTableAdapter *etta = (ETreeTableAdapter *)etm;
-
- return e_tree_model_column_count (etta->priv->source);
-}
-
-static gboolean
-etta_has_save_id (ETableModel *etm)
-{
- ETreeTableAdapter *etta = (ETreeTableAdapter *)etm;
-
- return e_tree_model_has_save_id (etta->priv->source);
-}
-
-static gchar *
-etta_get_save_id (ETableModel *etm, int row)
-{
- ETreeTableAdapter *etta = (ETreeTableAdapter *)etm;
-
- if (etta->priv->root_visible)
- return e_tree_model_get_save_id (etta->priv->source, etta->priv->map_table [row]);
- else
- return e_tree_model_get_save_id (etta->priv->source, etta->priv->map_table [row + 1]);
-}
-
-static gboolean
-etta_has_change_pending (ETableModel *etm)
-{
- ETreeTableAdapter *etta = (ETreeTableAdapter *)etm;
-
- return e_tree_model_has_change_pending (etta->priv->source);
-}
-
-
-static int
-etta_row_count (ETableModel *etm)
-{
- ETreeTableAdapter *etta = (ETreeTableAdapter *)etm;
-
- if (etta->priv->root_visible)
- return etta->priv->n_map;
- else {
- if (etta->priv->n_map > 0)
- return etta->priv->n_map - 1;
- else
- return 0;
- }
-}
-
-static void *
-etta_value_at (ETableModel *etm, int col, int row)
-{
- ETreeTableAdapter *etta = (ETreeTableAdapter *)etm;
-
-#if 0
- etta->priv->last_access = row;
- d(g_print("g) Setting last_access to %d\n", row));
-#endif
-
- switch (col) {
- case -1:
- if (etta->priv->root_visible)
- return etta->priv->map_table [row];
- else
- return etta->priv->map_table [row + 1];
- case -2:
- return etta->priv->source;
- case -3:
- return etta;
- default:
- if (etta->priv->root_visible)
- return e_tree_model_value_at (etta->priv->source, etta->priv->map_table [row], col);
- else
- return e_tree_model_value_at (etta->priv->source, etta->priv->map_table [row + 1], col);
- }
-}
-
-static void
-etta_set_value_at (ETableModel *etm, int col, int row, const void *val)
-{
- ETreeTableAdapter *etta = (ETreeTableAdapter *)etm;
-
- etta->priv->last_access = row;
- d(g_print("h) Setting last_access to %d\n", row));
- if (etta->priv->root_visible)
- e_tree_model_set_value_at (etta->priv->source, etta->priv->map_table [row], col, val);
- else
- e_tree_model_set_value_at (etta->priv->source, etta->priv->map_table [row + 1], col, val);
-}
-
-static gboolean
-etta_is_cell_editable (ETableModel *etm, int col, int row)
-{
- ETreeTableAdapter *etta = (ETreeTableAdapter *)etm;
-
- if (etta->priv->root_visible)
- return e_tree_model_node_is_editable (etta->priv->source, etta->priv->map_table [row], col);
- else
- return e_tree_model_node_is_editable (etta->priv->source, etta->priv->map_table [row + 1], col);
-}
-
-static void
-etta_append_row (ETableModel *etm, ETableModel *source, int row)
-{
-#if 0
- ETreeTableAdapter *etta = (ETreeTableAdapter *)etm;
- e_table_model_append_row (etta->priv->source, source, row);
-#endif
-}
-
-static void *
-etta_duplicate_value (ETableModel *etm, int col, const void *value)
-{
- ETreeTableAdapter *etta = (ETreeTableAdapter *)etm;
-
- return e_tree_model_duplicate_value (etta->priv->source, col, value);
-}
-
-static void
-etta_free_value (ETableModel *etm, int col, void *value)
-{
- ETreeTableAdapter *etta = (ETreeTableAdapter *)etm;
-
- e_tree_model_free_value (etta->priv->source, col, value);
-}
-
-static void *
-etta_initialize_value (ETableModel *etm, int col)
-{
- ETreeTableAdapter *etta = (ETreeTableAdapter *)etm;
-
- return e_tree_model_initialize_value (etta->priv->source, col);
-}
-
-static gboolean
-etta_value_is_empty (ETableModel *etm, int col, const void *value)
-{
- ETreeTableAdapter *etta = (ETreeTableAdapter *)etm;
-
- return e_tree_model_value_is_empty (etta->priv->source, col, value);
-}
-
-static char *
-etta_value_to_string (ETableModel *etm, int col, const void *value)
-{
- ETreeTableAdapter *etta = (ETreeTableAdapter *)etm;
-
- return e_tree_model_value_to_string (etta->priv->source, col, value);
-}
-
-static void
-etta_class_init (ETreeTableAdapterClass *klass)
-{
- ETableModelClass *table_class = (ETableModelClass *) klass;
- GtkObjectClass *object_class = (GtkObjectClass *) klass;
-
- parent_class = gtk_type_class (PARENT_TYPE);
-
- object_class->destroy = etta_destroy;
-
- table_class->column_count = etta_column_count;
- table_class->has_save_id = etta_has_save_id;
- table_class->get_save_id = etta_get_save_id;
- table_class->has_change_pending = etta_has_change_pending;
- table_class->row_count = etta_row_count;
- table_class->value_at = etta_value_at;
- table_class->set_value_at = etta_set_value_at;
- table_class->is_cell_editable = etta_is_cell_editable;
- table_class->append_row = etta_append_row;
- table_class->duplicate_value = etta_duplicate_value;
- table_class->free_value = etta_free_value;
- table_class->initialize_value = etta_initialize_value;
- table_class->value_is_empty = etta_value_is_empty;
- table_class->value_to_string = etta_value_to_string;
-}
-
-static void
-etta_init (ETreeTableAdapter *etta)
-{
- etta->priv = g_new(ETreeTableAdapterPriv, 1);
-
- etta->priv->last_access = 0;
- etta->priv->map_table = NULL;
- etta->priv->n_map = 0;
- etta->priv->n_vals_allocated = 0;
-
- etta->priv->root_visible = TRUE;
-
- etta->priv->attributes = NULL;
-}
-
-E_MAKE_TYPE(e_tree_table_adapter, "ETreeTableAdapter", ETreeTableAdapter, etta_class_init, etta_init, PARENT_TYPE);
-
-static void
-etta_proxy_pre_change (ETreeModel *etm, ETreeTableAdapter *etta)
-{
- e_table_model_pre_change(E_TABLE_MODEL(etta));
-}
-
-static void
-etta_proxy_node_changed (ETreeModel *etm, ETreePath path, ETreeTableAdapter *etta)
-{
- if (e_tree_model_node_is_root(etm, path)) {
- int size;
-
- size = array_size_from_path(etta, path);
- etta_expand_to(etta, size);
- etta->priv->n_map = size;
- fill_array_from_path(etta, etta->priv->map_table, path);
- } else {
- int row = find_row_num(etta, path);
- int size;
- int old_size;
-
- if (row == -1)
- return;
-
- size = array_size_from_path(etta, path);
- if (e_tree_model_node_is_expandable(etta->priv->source, path)) {
- ETreeTableAdapterNode *node = find_or_create_node(etta, path);
- old_size = node->num_visible_children + 1;
- } else {
- ETreeTableAdapterNode *node = find_node(etta, path);
- if (node)
- old_size = node->num_visible_children + 1;
- else
- old_size = 1;
- }
-
- etta_expand_to(etta, etta->priv->n_map + size - old_size);
-
- memmove(etta->priv->map_table + row + size,
- etta->priv->map_table + row + old_size,
- (etta->priv->n_map - row - old_size) * sizeof (ETreePath));
- fill_array_from_path(etta, etta->priv->map_table + row, path);
- etta_update_parent_child_counts(etta, path, size - old_size);
- }
-
- e_table_model_changed(E_TABLE_MODEL(etta));
-}
-
-static void
-etta_proxy_node_data_changed (ETreeModel *etm, ETreePath path, ETreeTableAdapter *etta)
-{
- int row = find_row_num(etta, path);
- if (row != -1) {
- if (etta->priv->root_visible)
- e_table_model_row_changed(E_TABLE_MODEL(etta), row);
- else if (row != 0)
- e_table_model_row_changed(E_TABLE_MODEL(etta), row - 1);
- }
-}
-
-static void
-etta_proxy_node_col_changed (ETreeModel *etm, ETreePath path, int col, ETreeTableAdapter *etta)
-{
- int row = find_row_num(etta, path);
- if (row != -1) {
- if (etta->priv->root_visible)
- e_table_model_cell_changed(E_TABLE_MODEL(etta), col, row);
- else if (row != 0)
- e_table_model_cell_changed(E_TABLE_MODEL(etta), col, row - 1);
- }
-}
-
-static void
-etta_proxy_node_inserted (ETreeModel *etm, ETreePath parent, ETreePath child, ETreeTableAdapter *etta)
-{
- int row;
-
- if (e_tree_model_node_is_root(etm, child)) {
- row = 0;
- } else {
- ETreePath children;
- int parent_row;
- ETreeTableAdapterNode *parent_node;
-
- parent_row = find_row_num(etta, parent);
- if (parent_row == -1)
- return;
-
- parent_node = find_or_create_node(etta, parent);
- if (parent_node->expandable != e_tree_model_node_is_expandable(etta->priv->source, parent)) {
- parent_node->expandable = e_tree_model_node_is_expandable(etta->priv->source, parent);
- if (etta->priv->root_visible)
- e_table_model_row_changed(E_TABLE_MODEL(etta), parent_row);
- else if (parent_row != 0)
- e_table_model_row_changed(E_TABLE_MODEL(etta), parent_row - 1);
- }
- if (!parent_node->expanded)
- return;
-
- row = find_first_child_node(etta, parent_row);
- children = e_tree_model_node_get_first_child(etta->priv->source, parent);
-
- while (row != -1 &&
- row <= parent_row + parent_node->num_visible_children &&
- children != NULL &&
- children == etta->priv->map_table[row]) {
- children = e_tree_model_node_get_next(etta->priv->source, children);
- row = find_next_node(etta, row);
- }
- }
-
- if (row != -1) {
- int size;
-
- size = array_size_from_path(etta, child);
-
- etta_expand_to(etta, etta->priv->n_map + size);
-
- memmove(etta->priv->map_table + row + size,
- etta->priv->map_table + row,
- (etta->priv->n_map - row) * sizeof (ETreePath));
-
- fill_array_from_path(etta, etta->priv->map_table + row, child);
- etta_update_parent_child_counts(etta, child, size);
-
- if (etta->priv->root_visible)
- e_table_model_rows_inserted(E_TABLE_MODEL(etta), row, size);
- else if (row != 0)
- e_table_model_rows_inserted(E_TABLE_MODEL(etta), row - 1, size);
- else
- e_table_model_rows_inserted(E_TABLE_MODEL(etta), 0, size - 1);
- }
-}
-
-static void
-etta_proxy_node_removed (ETableModel *etm, ETreePath parent, ETreePath child, int old_position, ETreeTableAdapter *etta)
-{
- int parent_row = find_row_num(etta, parent);
- int row = find_child_row_num_maybe_deleted(etta, parent_row, child);
- ETreeTableAdapterNode *parent_node = find_node(etta, parent);
- if (parent_row != -1 && parent_node) {
- if (parent_node->expandable != e_tree_model_node_is_expandable(etta->priv->source, parent)) {
- parent_node->expandable = e_tree_model_node_is_expandable(etta->priv->source, parent);
- if (etta->priv->root_visible)
- e_table_model_row_changed(E_TABLE_MODEL(etta), parent_row);
- else if (parent_row != 0)
- e_table_model_row_changed(E_TABLE_MODEL(etta), parent_row - 1);
- }
- }
- if (row != -1) {
- ETreeTableAdapterNode *node = find_node(etta, child);
- int to_remove = (node ? node->num_visible_children : 0) + 1;
-
- memmove(etta->priv->map_table + row,
- etta->priv->map_table + row + to_remove,
- (etta->priv->n_map - row - to_remove) * sizeof (ETreePath));
-
- if (parent_node)
- parent_node->num_visible_children -= to_remove;
- if (parent)
- etta_update_parent_child_counts(etta, parent, - to_remove);
-
- if (etta->priv->root_visible)
- e_table_model_rows_deleted(E_TABLE_MODEL(etta), row, to_remove);
- else if (row != 0)
- e_table_model_rows_deleted(E_TABLE_MODEL(etta), row - 1, to_remove);
- else
- e_table_model_rows_deleted(E_TABLE_MODEL(etta), 0, to_remove - 1);
- }
-}
-
-ETableModel *
-e_tree_table_adapter_construct (ETreeTableAdapter *etta, ETreeModel *source)
-{
- ETreePath root;
-
- etta->priv->source = source;
- gtk_object_ref (GTK_OBJECT (source));
-
- if (e_tree_model_has_save_id(source))
- etta->priv->attributes = g_hash_table_new(g_str_hash, g_str_equal);
- else
- etta->priv->attributes = g_hash_table_new(NULL, NULL);
-
- root = e_tree_model_get_root (source);
-
- if (root) {
- etta->priv->n_map = array_size_from_path(etta, root);
- etta->priv->n_vals_allocated = etta->priv->n_map;
- etta->priv->map_table = g_new(ETreePath, etta->priv->n_map);
- fill_array_from_path(etta, etta->priv->map_table, root);
- }
-
- etta->priv->tree_model_pre_change_id = gtk_signal_connect (GTK_OBJECT (source), "pre_change",
- GTK_SIGNAL_FUNC (etta_proxy_pre_change), etta);
- etta->priv->tree_model_node_changed_id = gtk_signal_connect (GTK_OBJECT (source), "node_changed",
- GTK_SIGNAL_FUNC (etta_proxy_node_changed), etta);
- etta->priv->tree_model_node_data_changed_id = gtk_signal_connect (GTK_OBJECT (source), "node_data_changed",
- GTK_SIGNAL_FUNC (etta_proxy_node_data_changed), etta);
- etta->priv->tree_model_node_col_changed_id = gtk_signal_connect (GTK_OBJECT (source), "node_col_changed",
- GTK_SIGNAL_FUNC (etta_proxy_node_col_changed), etta);
- etta->priv->tree_model_node_inserted_id = gtk_signal_connect (GTK_OBJECT (source), "node_inserted",
- GTK_SIGNAL_FUNC (etta_proxy_node_inserted), etta);
- etta->priv->tree_model_node_removed_id = gtk_signal_connect (GTK_OBJECT (source), "node_removed",
- GTK_SIGNAL_FUNC (etta_proxy_node_removed), etta);
-
- return E_TABLE_MODEL (etta);
-}
-
-ETableModel *
-e_tree_table_adapter_new (ETreeModel *source)
-{
- ETreeTableAdapter *etta = gtk_type_new (E_TREE_TABLE_ADAPTER_TYPE);
-
- e_tree_table_adapter_construct (etta, source);
-
- return (ETableModel *) etta;
-}
-
-typedef struct {
- xmlNode *root;
- ETreeModel *tree;
-} TreeAndRoot;
-
-static void
-save_expanded_state_func (gpointer keyp, gpointer value, gpointer data)
-{
- gchar *key = keyp;
- ETreeTableAdapterNode *node = value;
- TreeAndRoot *tar = data;
- xmlNode *root = tar->root;
- ETreeModel *etm = tar->tree;
- xmlNode *xmlnode;
-
- if (node->expanded != e_tree_model_get_expanded_default(etm)) {
- xmlnode = xmlNewChild (root, NULL, "node", NULL);
- e_xml_set_string_prop_by_name(xmlnode, "id", key);
- }
-}
-
-void
-e_tree_table_adapter_save_expanded_state (ETreeTableAdapter *etta, const char *filename)
-{
- xmlDoc *doc;
- xmlNode *root;
- ETreeTableAdapterPriv *priv;
- TreeAndRoot tar;
-
- g_return_if_fail(etta != NULL);
-
- priv = etta->priv;
-
- doc = xmlNewDoc ((xmlChar*) "1.0");
- root = xmlNewDocNode (doc, NULL,
- (xmlChar *) "expanded_state",
- NULL);
- xmlDocSetRootElement (doc, root);
-
- e_xml_set_integer_prop_by_name(root, "vers", 1);
-
- tar.root = root;
- tar.tree = etta->priv->source;
-
- g_hash_table_foreach (priv->attributes,
- save_expanded_state_func,
- &tar);
-
- xmlSaveFile (filename, doc);
-
- xmlFreeDoc (doc);
-}
-
-void
-e_tree_table_adapter_load_expanded_state (ETreeTableAdapter *etta, const char *filename)
-{
- ETreeTableAdapterPriv *priv;
- xmlDoc *doc;
- xmlNode *root;
- xmlNode *child;
- int vers;
-
- g_return_if_fail(etta != NULL);
-
- priv = etta->priv;
-
- doc = xmlParseFile (filename);
- if (!doc)
- return;
-
- root = xmlDocGetRootElement (doc);
- if (root == NULL || strcmp (root->name, "expanded_state")) {
- xmlFreeDoc (doc);
- return;
- }
-
- vers = e_xml_get_integer_prop_by_name_with_default(root, "vers", 0);
- if (vers != 1) {
- xmlFreeDoc (doc);
- return;
- }
-
- for (child = root->childs; child; child = child->next) {
- char *id;
-
- if (strcmp (child->name, "node")) {
- d(g_warning ("unknown node '%s' in %s", child->name, filename));
- continue;
- }
-
- id = e_xml_get_string_prop_by_name_with_default (child, "id", "");
-
- if (!strcmp(id, "")) {
- g_free(id);
- return;
- }
-
- add_expanded_node(etta, id, !e_tree_model_get_expanded_default(etta->priv->source));
- }
-
- xmlFreeDoc (doc);
-}
-
-void e_tree_table_adapter_root_node_set_visible (ETreeTableAdapter *etta, gboolean visible)
-{
- if (etta->priv->root_visible == visible)
- return;
-
- e_table_model_pre_change (E_TABLE_MODEL(etta));
-
- etta->priv->root_visible = visible;
- if (!visible) {
- ETreePath root = e_tree_model_get_root(etta->priv->source);
- if (root)
- e_tree_table_adapter_node_set_expanded(etta, root, TRUE);
- }
- e_table_model_changed(E_TABLE_MODEL(etta));
-}
-
-void e_tree_table_adapter_node_set_expanded (ETreeTableAdapter *etta, ETreePath path, gboolean expanded)
-{
- ETreeTableAdapterNode *node;
- int row;
-
- node = find_or_create_node(etta, path);
- row = find_row_num(etta, path);
-
- if (expanded != node->expanded) {
- e_table_model_pre_change (E_TABLE_MODEL(etta));
-
- node->expanded = expanded;
-
- if (row != -1) {
- if (etta->priv->root_visible)
- e_table_model_row_changed(E_TABLE_MODEL(etta), row);
- else if (row != 0)
- e_table_model_row_changed(E_TABLE_MODEL(etta), row - 1);
-
- if (expanded) {
- int num_children = array_size_from_path(etta, path) - 1;
- etta_expand_to(etta, etta->priv->n_map + num_children);
- memmove(etta->priv->map_table + row + 1 + num_children,
- etta->priv->map_table + row + 1,
- (etta->priv->n_map - row - 1) * sizeof (ETreePath));
- fill_array_from_path(etta, etta->priv->map_table + row, path);
- etta_update_parent_child_counts(etta, path, num_children);
- if (num_children != 0) {
- if (etta->priv->root_visible)
- e_table_model_rows_inserted(E_TABLE_MODEL(etta), row + 1, num_children);
- else
- e_table_model_rows_inserted(E_TABLE_MODEL(etta), row, num_children);
- }
- } else {
- int num_children = node->num_visible_children;
- memmove(etta->priv->map_table + row + 1,
- etta->priv->map_table + row + 1 + num_children,
- (etta->priv->n_map - row - 1 - num_children) * sizeof (ETreePath));
- node->num_visible_children = 0;
- etta_update_parent_child_counts(etta, path, - num_children);
- if (num_children != 0) {
- if (etta->priv->root_visible)
- e_table_model_rows_deleted(E_TABLE_MODEL(etta), row + 1, num_children);
- else
- e_table_model_rows_deleted(E_TABLE_MODEL(etta), row, num_children);
- }
- }
- }
- }
-}
-
-void e_tree_table_adapter_node_set_expanded_recurse (ETreeTableAdapter *etta, ETreePath path, gboolean expanded)
-{
- ETreePath children;
-
- e_tree_table_adapter_node_set_expanded(etta, path, expanded);
-
- for (children = e_tree_model_node_get_first_child(etta->priv->source, path);
- children;
- children = e_tree_model_node_get_next(etta->priv->source, children)) {
- e_tree_table_adapter_node_set_expanded_recurse(etta, children, expanded);
- }
-}
-
-ETreePath e_tree_table_adapter_node_at_row (ETreeTableAdapter *etta, int row)
-{
- if (etta->priv->root_visible)
- return etta->priv->map_table[row];
- else
- return etta->priv->map_table[row + 1];
-}
-
-int e_tree_table_adapter_row_of_node (ETreeTableAdapter *etta, ETreePath path)
-{
- if (etta->priv->root_visible)
- return find_row_num(etta, path);
- else {
- int row_num = find_row_num (etta, path);
- if (row_num != -1)
- return row_num - 1;
- else
- return row_num;
- }
-}
-
-gboolean e_tree_table_adapter_root_node_is_visible(ETreeTableAdapter *etta)
-{
- return etta->priv->root_visible;
-}
-
-void e_tree_table_adapter_show_node (ETreeTableAdapter *etta, ETreePath path)
-{
- ETreePath parent;
-
- parent = e_tree_model_node_get_parent(etta->priv->source, path);
-
- if (parent) {
- e_tree_table_adapter_node_set_expanded(etta, parent, TRUE);
- e_tree_table_adapter_show_node(etta, parent);
- }
-}
-
-gboolean e_tree_table_adapter_node_is_expanded (ETreeTableAdapter *etta, ETreePath path)
-{
- if (e_tree_model_node_is_expandable(etta->priv->source, path)) {
- ETreeTableAdapterNode *node = find_or_create_node(etta, path);
- return node->expanded;
- } else
- return FALSE;
-}
diff --git a/widgets/table/e-tree-table-adapter.h b/widgets/table/e-tree-table-adapter.h
deleted file mode 100644
index 34e38c1fb7..0000000000
--- a/widgets/table/e-tree-table-adapter.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TREE_TABLE_ADAPTER_H_
-#define _E_TREE_TABLE_ADAPTER_H_
-
-#include <gtk/gtkobject.h>
-#include <gal/e-table/e-table-model.h>
-#include <gal/e-table/e-tree-model.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define E_TREE_TABLE_ADAPTER_TYPE (e_tree_table_adapter_get_type ())
-#define E_TREE_TABLE_ADAPTER(o) (GTK_CHECK_CAST ((o), E_TREE_TABLE_ADAPTER_TYPE, ETreeTableAdapter))
-#define E_TREE_TABLE_ADAPTER_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TREE_TABLE_ADAPTER_TYPE, ETreeTableAdapterClass))
-#define E_IS_TREE_TABLE_ADAPTER(o) (GTK_CHECK_TYPE ((o), E_TREE_TABLE_ADAPTER_TYPE))
-#define E_IS_TREE_TABLE_ADAPTER_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TREE_TABLE_ADAPTER_TYPE))
-
-typedef struct ETreeTableAdapterPriv ETreeTableAdapterPriv;
-
-typedef struct {
- ETableModel base;
-
- ETreeTableAdapterPriv *priv;
-} ETreeTableAdapter;
-
-typedef struct {
- ETableModelClass parent_class;
-} ETreeTableAdapterClass;
-
-GtkType e_tree_table_adapter_get_type (void);
-ETableModel *e_tree_table_adapter_new (ETreeModel *source);
-ETableModel *e_tree_table_adapter_construct (ETreeTableAdapter *ets,
- ETreeModel *source);
-
-gboolean e_tree_table_adapter_node_is_expanded (ETreeTableAdapter *etta,
- ETreePath path);
-void e_tree_table_adapter_node_set_expanded (ETreeTableAdapter *etta,
- ETreePath path,
- gboolean expanded);
-void e_tree_table_adapter_node_set_expanded_recurse (ETreeTableAdapter *etta,
- ETreePath path,
- gboolean expanded);
-void e_tree_table_adapter_root_node_set_visible (ETreeTableAdapter *etta,
- gboolean visible);
-ETreePath e_tree_table_adapter_node_at_row (ETreeTableAdapter *etta,
- int row);
-int e_tree_table_adapter_row_of_node (ETreeTableAdapter *etta,
- ETreePath path);
-gboolean e_tree_table_adapter_root_node_is_visible (ETreeTableAdapter *etta);
-
-void e_tree_table_adapter_show_node (ETreeTableAdapter *etta,
- ETreePath path);
-
-void e_tree_table_adapter_save_expanded_state (ETreeTableAdapter *etta,
- const char *filename);
-void e_tree_table_adapter_load_expanded_state (ETreeTableAdapter *etta,
- const char *filename);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_TREE_TABLE_ADAPTER_H_ */
diff --git a/widgets/table/e-tree.c b/widgets/table/e-tree.c
deleted file mode 100644
index 49fcc0732f..0000000000
--- a/widgets/table/e-tree.c
+++ /dev/null
@@ -1,2334 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * e-tree.c: A graphical view of a tree.
- *
- * Author:
- * Miguel de Icaza (miguel@ximian.com)
- * Chris Lahey <clahey@ximian.com>
- *
- * Copyright 1999, 2000, 2001, Ximian, Inc
- */
-#include <config.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdio.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtksignal.h>
-#include <libgnomeui/gnome-canvas-rect-ellipse.h>
-
-#include "gal/util/e-i18n.h"
-#include <gal/util/e-util.h>
-#include <gal/widgets/e-canvas.h>
-
-#include <gal/e-table/e-table-column-specification.h>
-#include <gal/e-table/e-table-header-item.h>
-#include <gal/e-table/e-table-header.h>
-#include <gal/e-table/e-table-item.h>
-#include <gal/e-table/e-table-sort-info.h>
-#include <gal/e-table/e-table-utils.h>
-
-#ifdef E_TREE_USE_TREE_SELECTION
-#include <gal/e-table/e-tree-selection-model.h>
-#else
-#include <gal/e-table/e-table-selection-model.h>
-#endif
-
-#include <gal/e-table/e-tree-sorted.h>
-#include <gal/e-table/e-tree-table-adapter.h>
-
-#include "e-tree.h"
-
-#define COLUMN_HEADER_HEIGHT 16
-
-#define PARENT_TYPE gtk_table_get_type ()
-
-static GtkObjectClass *parent_class;
-
-enum {
- CURSOR_CHANGE,
- CURSOR_ACTIVATED,
- SELECTION_CHANGE,
- DOUBLE_CLICK,
- RIGHT_CLICK,
- CLICK,
- KEY_PRESS,
-
- TREE_DRAG_BEGIN,
- TREE_DRAG_END,
- TREE_DRAG_DATA_GET,
- TREE_DRAG_DATA_DELETE,
-
- TREE_DRAG_LEAVE,
- TREE_DRAG_MOTION,
- TREE_DRAG_DROP,
- TREE_DRAG_DATA_RECEIVED,
-
- LAST_SIGNAL
-};
-
-enum {
- ARG_0,
- ARG_LENGTH_THRESHOLD,
- ARG_HORIZONTAL_DRAW_GRID,
- ARG_VERTICAL_DRAW_GRID,
- ARG_DRAW_FOCUS,
- ARG_ETTA
-};
-
-struct ETreePriv {
- ETreeModel *model;
- ETreeSorted *sorted;
- ETreeTableAdapter *etta;
-
- ETableHeader *full_header, *header;
-
- ETableSortInfo *sort_info;
- ESorter *sorter;
-
- ESelectionModel *selection;
- ETableSpecification *spec;
-
- int reflow_idle_id;
-
- int table_model_change_id;
- int table_row_change_id;
- int table_cell_change_id;
- int table_rows_inserted_id;
- int table_rows_deleted_id;
-
- GnomeCanvas *header_canvas, *table_canvas;
-
- GnomeCanvasItem *header_item, *root;
-
- GnomeCanvasItem *white_item;
- GnomeCanvasItem *item;
-
- gint length_threshold;
-
- /*
- * Configuration settings
- */
- guint alternating_row_colors : 1;
- guint horizontal_draw_grid : 1;
- guint vertical_draw_grid : 1;
- guint draw_focus : 1;
- guint row_selection_active : 1;
-
- guint horizontal_scrolling : 1;
-
- ECursorMode cursor_mode;
-
- int drop_row;
- ETreePath drop_path;
- int drop_col;
-
- int drag_row;
- ETreePath drag_path;
- int drag_col;
- ETreeDragSourceSite *site;
-
- int drag_source_button_press_event_id;
- int drag_source_motion_notify_event_id;
-};
-
-static gint et_signals [LAST_SIGNAL] = { 0, };
-
-static void et_grab_focus (GtkWidget *widget);
-
-static void et_drag_begin (GtkWidget *widget,
- GdkDragContext *context,
- ETree *et);
-static void et_drag_end (GtkWidget *widget,
- GdkDragContext *context,
- ETree *et);
-static void et_drag_data_get(GtkWidget *widget,
- GdkDragContext *context,
- GtkSelectionData *selection_data,
- guint info,
- guint time,
- ETree *et);
-static void et_drag_data_delete(GtkWidget *widget,
- GdkDragContext *context,
- ETree *et);
-
-static void et_drag_leave(GtkWidget *widget,
- GdkDragContext *context,
- guint time,
- ETree *et);
-static gboolean et_drag_motion(GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time,
- ETree *et);
-static gboolean et_drag_drop(GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time,
- ETree *et);
-static void et_drag_data_received(GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- GtkSelectionData *selection_data,
- guint info,
- guint time,
- ETree *et);
-static gint e_tree_drag_source_event_cb (GtkWidget *widget,
- GdkEvent *event,
- ETree *tree);
-
-static gint et_focus (GtkContainer *container, GtkDirectionType direction);
-
-static void
-et_disconnect_from_etta (ETree *et)
-{
- if (et->priv->table_model_change_id != 0)
- gtk_signal_disconnect (GTK_OBJECT (et->priv->etta),
- et->priv->table_model_change_id);
- if (et->priv->table_row_change_id != 0)
- gtk_signal_disconnect (GTK_OBJECT (et->priv->etta),
- et->priv->table_row_change_id);
- if (et->priv->table_cell_change_id != 0)
- gtk_signal_disconnect (GTK_OBJECT (et->priv->etta),
- et->priv->table_cell_change_id);
- if (et->priv->table_rows_inserted_id != 0)
- gtk_signal_disconnect (GTK_OBJECT (et->priv->etta),
- et->priv->table_rows_inserted_id);
- if (et->priv->table_rows_deleted_id != 0)
- gtk_signal_disconnect (GTK_OBJECT (et->priv->etta),
- et->priv->table_rows_deleted_id);
-
- et->priv->table_model_change_id = 0;
- et->priv->table_row_change_id = 0;
- et->priv->table_cell_change_id = 0;
- et->priv->table_rows_inserted_id = 0;
- et->priv->table_rows_deleted_id = 0;
-}
-
-static void
-et_destroy (GtkObject *object)
-{
- ETree *et = E_TREE (object);
-
- if (et->priv->reflow_idle_id)
- g_source_remove(et->priv->reflow_idle_id);
- et->priv->reflow_idle_id = 0;
-
- et_disconnect_from_etta (et);
-
- gtk_object_unref (GTK_OBJECT (et->priv->etta));
- gtk_object_unref (GTK_OBJECT (et->priv->model));
- gtk_object_unref (GTK_OBJECT (et->priv->sorted));
- gtk_object_unref (GTK_OBJECT (et->priv->full_header));
- gtk_object_unref (GTK_OBJECT (et->priv->header));
- gtk_object_unref (GTK_OBJECT (et->priv->sort_info));
- gtk_object_unref (GTK_OBJECT (et->priv->selection));
- if (et->priv->spec)
- gtk_object_unref (GTK_OBJECT (et->priv->spec));
-
- if (et->priv->sorter)
- gtk_object_unref (GTK_OBJECT (et->priv->sorter));
-
- if (et->priv->header_canvas)
- gtk_widget_destroy (GTK_WIDGET (et->priv->header_canvas));
-
- if (et->priv->site)
- e_tree_drag_source_unset (et);
-
- gtk_widget_destroy (GTK_WIDGET (et->priv->table_canvas));
-
- g_free(et->priv);
-
- (*parent_class->destroy)(object);
-}
-
-static void
-e_tree_init (GtkObject *object)
-{
- ETree *e_tree = E_TREE (object);
- GtkTable *gtk_table = GTK_TABLE (object);
-
- GTK_WIDGET_SET_FLAGS (e_tree, GTK_CAN_FOCUS);
-
- gtk_table->homogeneous = FALSE;
-
- e_tree->priv = g_new(ETreePriv, 1);
-
- e_tree->priv->model = NULL;
- e_tree->priv->sorted = NULL;
- e_tree->priv->etta = NULL;
-
- e_tree->priv->full_header = NULL;
- e_tree->priv->header = NULL;
-
- e_tree->priv->sort_info = NULL;
- e_tree->priv->sorter = NULL;
- e_tree->priv->reflow_idle_id = 0;
-
- e_tree->priv->alternating_row_colors = 1;
- e_tree->priv->horizontal_draw_grid = 1;
- e_tree->priv->vertical_draw_grid = 1;
- e_tree->priv->draw_focus = 1;
- e_tree->priv->cursor_mode = E_CURSOR_SIMPLE;
- e_tree->priv->length_threshold = 200;
-
- e_tree->priv->row_selection_active = FALSE;
- e_tree->priv->horizontal_scrolling = FALSE;
-
- e_tree->priv->drop_row = -1;
- e_tree->priv->drop_path = NULL;
- e_tree->priv->drop_col = -1;
-
- e_tree->priv->drag_row = -1;
- e_tree->priv->drag_path = NULL;
- e_tree->priv->drag_col = -1;
-
- e_tree->priv->site = NULL;
- e_tree->priv->drag_source_button_press_event_id = 0;
- e_tree->priv->drag_source_motion_notify_event_id = 0;
-
-#ifdef E_TREE_USE_TREE_SELECTION
- e_tree->priv->selection = E_SELECTION_MODEL(e_tree_selection_model_new());
-#else
- e_tree->priv->selection = E_SELECTION_MODEL(e_table_selection_model_new());
-#endif
- e_tree->priv->spec = NULL;
-
- e_tree->priv->header_canvas = NULL;
- e_tree->priv->table_canvas = NULL;
-
- e_tree->priv->header_item = NULL;
- e_tree->priv->root = NULL;
-
- e_tree->priv->white_item = NULL;
- e_tree->priv->item = NULL;
-}
-
-/* Grab_focus handler for the ETree */
-static void
-et_grab_focus (GtkWidget *widget)
-{
- ETree *e_tree;
-
- e_tree = E_TREE (widget);
-
- gtk_widget_grab_focus (GTK_WIDGET (e_tree->priv->table_canvas));
-}
-
-/* Focus handler for the ETree */
-static gint
-et_focus (GtkContainer *container, GtkDirectionType direction)
-{
- ETree *e_tree;
-
- e_tree = E_TREE (container);
-
- if (container->focus_child) {
- gtk_container_set_focus_child (container, NULL);
- return FALSE;
- }
-
- return gtk_container_focus (GTK_CONTAINER (e_tree->priv->table_canvas), direction);
-}
-
-static void
-set_header_canvas_width (ETree *e_tree)
-{
- double oldwidth, oldheight, width;
-
- if (!(e_tree->priv->header_item && e_tree->priv->header_canvas && e_tree->priv->table_canvas))
- return;
-
- gnome_canvas_get_scroll_region (GNOME_CANVAS (e_tree->priv->table_canvas),
- NULL, NULL, &width, NULL);
- gnome_canvas_get_scroll_region (GNOME_CANVAS (e_tree->priv->header_canvas),
- NULL, NULL, &oldwidth, &oldheight);
-
- if (oldwidth != width ||
- oldheight != E_TABLE_HEADER_ITEM (e_tree->priv->header_item)->height - 1)
- gnome_canvas_set_scroll_region (
- GNOME_CANVAS (e_tree->priv->header_canvas),
- 0, 0, width, /* COLUMN_HEADER_HEIGHT - 1 */
- E_TABLE_HEADER_ITEM (e_tree->priv->header_item)->height - 1);
-
-}
-
-static void
-header_canvas_size_allocate (GtkWidget *widget, GtkAllocation *alloc, ETree *e_tree)
-{
- set_header_canvas_width (e_tree);
-
- /* When the header item is created ->height == 0,
- as the font is only created when everything is realized.
- So we set the usize here as well, so that the size of the
- header is correct */
- if (GTK_WIDGET (e_tree->priv->header_canvas)->allocation.height !=
- E_TABLE_HEADER_ITEM (e_tree->priv->header_item)->height)
- gtk_widget_set_usize (GTK_WIDGET (e_tree->priv->header_canvas), -1,
- E_TABLE_HEADER_ITEM (e_tree->priv->header_item)->height);
-}
-
-static void
-e_tree_setup_header (ETree *e_tree)
-{
- char *pointer;
- e_tree->priv->header_canvas = GNOME_CANVAS (e_canvas_new ());
- GTK_WIDGET_UNSET_FLAGS (e_tree->priv->header_canvas, GTK_CAN_FOCUS);
-
- gtk_widget_show (GTK_WIDGET (e_tree->priv->header_canvas));
-
- pointer = g_strdup_printf("%p", e_tree);
-
- e_tree->priv->header_item = gnome_canvas_item_new (
- gnome_canvas_root (e_tree->priv->header_canvas),
- e_table_header_item_get_type (),
- "ETableHeader", e_tree->priv->header,
- "full_header", e_tree->priv->full_header,
- "sort_info", e_tree->priv->sort_info,
- "dnd_code", pointer,
- /* "table", e_tree, FIXME*/
- NULL);
-
- g_free(pointer);
-
- gtk_signal_connect (
- GTK_OBJECT (e_tree->priv->header_canvas), "size_allocate",
- GTK_SIGNAL_FUNC (header_canvas_size_allocate), e_tree);
-
- gtk_widget_set_usize (GTK_WIDGET (e_tree->priv->header_canvas), -1,
- E_TABLE_HEADER_ITEM (e_tree->priv->header_item)->height);
-}
-
-static gboolean
-tree_canvas_reflow_idle (ETree *e_tree)
-{
- gdouble height, width;
- gdouble item_height;
- gdouble oldheight, oldwidth;
- GtkAllocation *alloc = &(GTK_WIDGET (e_tree->priv->table_canvas)->allocation);
-
- gtk_object_get (GTK_OBJECT (e_tree->priv->item),
- "height", &height,
- "width", &width,
- NULL);
- item_height = height;
- height = MAX ((int)height, alloc->height);
- width = MAX((int)width, alloc->width);
- /* I have no idea why this needs to be -1, but it works. */
- gnome_canvas_get_scroll_region (GNOME_CANVAS (e_tree->priv->table_canvas),
- NULL, NULL, &oldwidth, &oldheight);
-
- if (oldwidth != width - 1 ||
- oldheight != height - 1) {
- gnome_canvas_set_scroll_region (GNOME_CANVAS (e_tree->priv->table_canvas),
- 0, 0, width - 1, height - 1);
- set_header_canvas_width (e_tree);
- }
- gtk_object_set (GTK_OBJECT (e_tree->priv->white_item),
- "y1", item_height,
- "x2", width,
- "y2", height,
- NULL);
- e_tree->priv->reflow_idle_id = 0;
- return FALSE;
-}
-
-static void
-tree_canvas_size_allocate (GtkWidget *widget, GtkAllocation *alloc,
- ETree *e_tree)
-{
- gdouble width;
- gdouble height;
- gdouble item_height;
-
- width = alloc->width;
- gtk_object_get (GTK_OBJECT (e_tree->priv->item),
- "height", &height,
- NULL);
- item_height = height;
- height = MAX ((int)height, alloc->height);
-
- gtk_object_set (GTK_OBJECT (e_tree->priv->item),
- "width", width,
- NULL);
- gtk_object_set (GTK_OBJECT (e_tree->priv->header),
- "width", width,
- NULL);
- if (e_tree->priv->reflow_idle_id)
- g_source_remove(e_tree->priv->reflow_idle_id);
- tree_canvas_reflow_idle(e_tree);
-}
-
-static void
-tree_canvas_reflow (GnomeCanvas *canvas, ETree *e_tree)
-{
- if (!e_tree->priv->reflow_idle_id)
- e_tree->priv->reflow_idle_id = g_idle_add_full (400, (GSourceFunc) tree_canvas_reflow_idle, e_tree, NULL);
-}
-
-static void
-item_cursor_change (ETableItem *eti, int row, ETree *et)
-{
- ETreePath path = e_tree_table_adapter_node_at_row(et->priv->etta, row);
- path = e_tree_sorted_view_to_model_path(et->priv->sorted, path);
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [CURSOR_CHANGE],
- row, path);
-}
-
-static void
-item_cursor_activated (ETableItem *eti, int row, ETree *et)
-{
- ETreePath path = e_tree_table_adapter_node_at_row(et->priv->etta, row);
- path = e_tree_sorted_view_to_model_path(et->priv->sorted, path);
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [CURSOR_ACTIVATED],
- row, path);
-}
-
-static void
-item_double_click (ETableItem *eti, int row, int col, GdkEvent *event, ETree *et)
-{
- ETreePath path = e_tree_table_adapter_node_at_row(et->priv->etta, row);
- path = e_tree_sorted_view_to_model_path(et->priv->sorted, path);
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [DOUBLE_CLICK],
- row, path, col, event);
-}
-
-static gint
-item_right_click (ETableItem *eti, int row, int col, GdkEvent *event, ETree *et)
-{
- int return_val = 0;
- ETreePath path = e_tree_table_adapter_node_at_row(et->priv->etta, row);
- path = e_tree_sorted_view_to_model_path(et->priv->sorted, path);
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [RIGHT_CLICK],
- row, path, col, event, &return_val);
- return return_val;
-}
-
-static gint
-item_click (ETableItem *eti, int row, int col, GdkEvent *event, ETree *et)
-{
- int return_val = 0;
- ETreePath path = e_tree_table_adapter_node_at_row(et->priv->etta, row);
- path = e_tree_sorted_view_to_model_path(et->priv->sorted, path);
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [CLICK],
- row, path, col, event, &return_val);
- return return_val;
-}
-
-static gint
-item_key_press (ETableItem *eti, int row, int col, GdkEvent *event, ETree *et)
-{
- int return_val = 0;
- GdkEventKey *key = (GdkEventKey *) event;
- GdkEventButton click;
- ETreePath path;
-
- switch (key->keyval) {
- case GDK_Page_Down:
- gtk_adjustment_set_value(
- gtk_layout_get_vadjustment (GTK_LAYOUT (et->priv->table_canvas)),
- CLAMP(gtk_layout_get_vadjustment (GTK_LAYOUT (et->priv->table_canvas))->value +
- (gtk_layout_get_vadjustment (GTK_LAYOUT (et->priv->table_canvas))->page_size - 20),
- 0,
- gtk_layout_get_vadjustment (GTK_LAYOUT (et->priv->table_canvas))->upper -
- gtk_layout_get_vadjustment (GTK_LAYOUT (et->priv->table_canvas))->page_size));
- click.type = GDK_BUTTON_PRESS;
- click.window = GTK_LAYOUT (et->priv->table_canvas)->bin_window;
- click.send_event = key->send_event;
- click.time = key->time;
- click.x = 30;
- click.y = gtk_layout_get_vadjustment (GTK_LAYOUT (et->priv->table_canvas))->page_size - 1;
- click.state = key->state;
- click.button = 1;
- gtk_widget_event(GTK_WIDGET(et->priv->table_canvas),
- (GdkEvent *) &click);
- return_val = 1;
- break;
- case GDK_Page_Up:
- gtk_adjustment_set_value(
- gtk_layout_get_vadjustment (GTK_LAYOUT (et->priv->table_canvas)),
- gtk_layout_get_vadjustment (GTK_LAYOUT (et->priv->table_canvas))->value -
- (gtk_layout_get_vadjustment (GTK_LAYOUT (et->priv->table_canvas))->page_size - 20));
- click.type = GDK_BUTTON_PRESS;
- click.window = GTK_LAYOUT (et->priv->table_canvas)->bin_window;
- click.send_event = key->send_event;
- click.time = key->time;
- click.x = 30;
- click.y = 1;
- click.state = key->state;
- click.button = 1;
- gtk_widget_event(GTK_WIDGET(et->priv->table_canvas),
- (GdkEvent *) &click);
- return_val = 1;
- break;
- case '=':
- case GDK_Right:
- path = e_tree_table_adapter_node_at_row(et->priv->etta, row);
- e_tree_table_adapter_node_set_expanded (et->priv->etta, path, TRUE);
- return_val = 1;
- break;
- case '-':
- case GDK_Left:
- path = e_tree_table_adapter_node_at_row(et->priv->etta, row);
- e_tree_table_adapter_node_set_expanded (et->priv->etta, path, FALSE);
- return_val = 1;
- break;
- default:
- path = e_tree_table_adapter_node_at_row(et->priv->etta, row);
- path = e_tree_sorted_view_to_model_path(et->priv->sorted, path);
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [KEY_PRESS],
- row, path, col, event, &return_val);
- break;
- }
- return return_val;
-}
-
-static void
-et_selection_model_selection_change (ETableSelectionModel *etsm, ETable *et)
-{
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [SELECTION_CHANGE]);
-}
-
-static void
-et_build_item (ETree *et)
-{
- et->priv->item = gnome_canvas_item_new(GNOME_CANVAS_GROUP (gnome_canvas_root(et->priv->table_canvas)),
- e_table_item_get_type(),
- "ETableHeader", et->priv->header,
- "ETableModel", et->priv->etta,
- "selection_model", et->priv->selection,
- "alternating_row_colors", et->priv->alternating_row_colors,
- "horizontal_draw_grid", et->priv->horizontal_draw_grid,
- "vertical_draw_grid", et->priv->vertical_draw_grid,
- "drawfocus", et->priv->draw_focus,
- "cursor_mode", et->priv->cursor_mode,
- "length_threshold", et->priv->length_threshold,
- NULL);
-
- gtk_signal_connect (GTK_OBJECT (et->priv->item), "cursor_change",
- GTK_SIGNAL_FUNC (item_cursor_change), et);
- gtk_signal_connect (GTK_OBJECT (et->priv->item), "cursor_activated",
- GTK_SIGNAL_FUNC (item_cursor_activated), et);
- gtk_signal_connect (GTK_OBJECT (et->priv->item), "double_click",
- GTK_SIGNAL_FUNC (item_double_click), et);
- gtk_signal_connect (GTK_OBJECT (et->priv->item), "right_click",
- GTK_SIGNAL_FUNC (item_right_click), et);
- gtk_signal_connect (GTK_OBJECT (et->priv->item), "click",
- GTK_SIGNAL_FUNC (item_click), et);
- gtk_signal_connect (GTK_OBJECT (et->priv->item), "key_press",
- GTK_SIGNAL_FUNC (item_key_press), et);
-}
-
-static void
-et_canvas_realize (GtkWidget *canvas, ETree *e_tree)
-{
- gnome_canvas_item_set(
- e_tree->priv->white_item,
- "fill_color_gdk", &GTK_WIDGET(e_tree->priv->table_canvas)->style->base[GTK_STATE_NORMAL],
- NULL);
-}
-
-static void
-et_canvas_button_press (GtkWidget *canvas, GdkEvent *event, ETree *e_tree)
-{
- if (GTK_WIDGET_HAS_FOCUS(canvas)) {
- GnomeCanvasItem *item = GNOME_CANVAS(canvas)->focused_item;
-
- if (E_IS_TABLE_ITEM(item)) {
- e_table_item_leave_edit(E_TABLE_ITEM(item));
- }
- }
-}
-
-static void
-e_tree_setup_table (ETree *e_tree)
-{
- e_tree->priv->table_canvas = GNOME_CANVAS (e_canvas_new ());
- gtk_signal_connect (
- GTK_OBJECT (e_tree->priv->table_canvas), "size_allocate",
- GTK_SIGNAL_FUNC (tree_canvas_size_allocate), e_tree);
- gtk_signal_connect (
- GTK_OBJECT (e_tree->priv->table_canvas), "focus_in_event",
- GTK_SIGNAL_FUNC (gtk_widget_queue_draw), e_tree);
- gtk_signal_connect (
- GTK_OBJECT (e_tree->priv->table_canvas), "focus_out_event",
- GTK_SIGNAL_FUNC (gtk_widget_queue_draw), e_tree);
-
- gtk_signal_connect (
- GTK_OBJECT (e_tree), "drag_begin",
- GTK_SIGNAL_FUNC (et_drag_begin), e_tree);
- gtk_signal_connect (
- GTK_OBJECT (e_tree), "drag_end",
- GTK_SIGNAL_FUNC (et_drag_end), e_tree);
- gtk_signal_connect (
- GTK_OBJECT (e_tree), "drag_data_get",
- GTK_SIGNAL_FUNC (et_drag_data_get), e_tree);
- gtk_signal_connect (
- GTK_OBJECT (e_tree), "drag_data_delete",
- GTK_SIGNAL_FUNC (et_drag_data_delete), e_tree);
- gtk_signal_connect (
- GTK_OBJECT (e_tree), "drag_motion",
- GTK_SIGNAL_FUNC (et_drag_motion), e_tree);
- gtk_signal_connect (
- GTK_OBJECT (e_tree), "drag_leave",
- GTK_SIGNAL_FUNC (et_drag_leave), e_tree);
- gtk_signal_connect (
- GTK_OBJECT (e_tree), "drag_drop",
- GTK_SIGNAL_FUNC (et_drag_drop), e_tree);
- gtk_signal_connect (
- GTK_OBJECT (e_tree), "drag_data_received",
- GTK_SIGNAL_FUNC (et_drag_data_received), e_tree);
-
- gtk_signal_connect (GTK_OBJECT(e_tree->priv->table_canvas), "reflow",
- GTK_SIGNAL_FUNC (tree_canvas_reflow), e_tree);
-
- gtk_widget_show (GTK_WIDGET (e_tree->priv->table_canvas));
-
- e_tree->priv->white_item = gnome_canvas_item_new(
- gnome_canvas_root(e_tree->priv->table_canvas),
- gnome_canvas_rect_get_type(),
- "x1", (double) 0,
- "y1", (double) 0,
- "x2", (double) 100,
- "y2", (double) 100,
- "fill_color_gdk", &GTK_WIDGET(e_tree->priv->table_canvas)->style->base[GTK_STATE_NORMAL],
- NULL);
-
- gtk_signal_connect (
- GTK_OBJECT(e_tree->priv->table_canvas), "realize",
- GTK_SIGNAL_FUNC(et_canvas_realize), e_tree);
- gtk_signal_connect (
- GTK_OBJECT(e_tree->priv->table_canvas), "button_press_event",
- GTK_SIGNAL_FUNC(et_canvas_button_press), e_tree);
-
- et_build_item(e_tree);
-}
-
-void
-e_tree_set_state_object(ETree *e_tree, ETableState *state)
-{
- if (e_tree->priv->header)
- gtk_object_unref(GTK_OBJECT(e_tree->priv->header));
- e_tree->priv->header = e_table_state_to_header (GTK_WIDGET(e_tree), e_tree->priv->full_header, state);
-
- gtk_object_set (GTK_OBJECT (e_tree->priv->header),
- "width", (double) (GTK_WIDGET(e_tree->priv->table_canvas)->allocation.width),
- NULL);
-
- if (e_tree->priv->sort_info)
- gtk_object_unref(GTK_OBJECT(e_tree->priv->sort_info));
-
- if (state->sort_info)
- e_tree->priv->sort_info = e_table_sort_info_duplicate(state->sort_info);
- else
- e_tree->priv->sort_info = NULL;
-
- if (e_tree->priv->header_item)
- gtk_object_set(GTK_OBJECT(e_tree->priv->header_item),
- "ETableHeader", e_tree->priv->header,
- "sort_info", e_tree->priv->sort_info,
- NULL);
-
- if (e_tree->priv->item)
- gtk_object_set(GTK_OBJECT(e_tree->priv->item),
- "ETableHeader", e_tree->priv->header,
- NULL);
-
- if (e_tree->priv->sorted)
- gtk_object_set(GTK_OBJECT(e_tree->priv->sorted),
- "sort_info", e_tree->priv->sort_info,
- NULL);
-}
-
-/**
- * e_tree_set_state:
- * @e_tree: %ETree object that will be modified
- * @state_str: a string with the XML representation of the ETableState.
- *
- * This routine sets the state (as described by %ETableState) of the
- * %ETree object.
- */
-void
-e_tree_set_state (ETree *e_tree,
- const gchar *state_str)
-{
- ETableState *state;
-
- g_return_if_fail(e_tree != NULL);
- g_return_if_fail(E_IS_TREE(e_tree));
- g_return_if_fail(state_str != NULL);
-
- state = e_table_state_new();
- e_table_state_load_from_string(state, state_str);
-
- if (state->col_count > 0)
- e_tree_set_state_object(e_tree, state);
-
- gtk_object_unref(GTK_OBJECT(state));
-}
-
-/**
- * e_tree_load_state:
- * @e_tree: %ETree object that will be modified
- * @filename: name of the file containing the state to be loaded into the %ETree
- *
- * An %ETableState will be loaded form the file pointed by @filename into the
- * @e_tree object.
- */
-void
-e_tree_load_state (ETree *e_tree,
- const gchar *filename)
-{
- ETableState *state;
-
- g_return_if_fail(e_tree != NULL);
- g_return_if_fail(E_IS_TREE(e_tree));
- g_return_if_fail(filename != NULL);
-
- state = e_table_state_new();
- e_table_state_load_from_file(state, filename);
-
- if (state->col_count > 0)
- e_tree_set_state_object(e_tree, state);
-
- gtk_object_unref(GTK_OBJECT(state));
-}
-
-/**
- * e_tree_get_state_object:
- * @e_tree: %ETree object that will be modified
- *
- * Returns: the %ETreeState object that encapsulates the current
- * state of the @e_tree object
- */
-ETableState *
-e_tree_get_state_object (ETree *e_tree)
-{
- ETableState *state;
- int full_col_count;
- int i, j;
-
- state = e_table_state_new();
- state->sort_info = e_tree->priv->sort_info;
- gtk_object_ref(GTK_OBJECT(state->sort_info));
-
- state->col_count = e_table_header_count (e_tree->priv->header);
- full_col_count = e_table_header_count (e_tree->priv->full_header);
- state->columns = g_new(int, state->col_count);
- state->expansions = g_new(double, state->col_count);
- for (i = 0; i < state->col_count; i++) {
- ETableCol *col = e_table_header_get_column(e_tree->priv->header, i);
- state->columns[i] = -1;
- for (j = 0; j < full_col_count; j++) {
- if (col->col_idx == e_table_header_index(e_tree->priv->full_header, j)) {
- state->columns[i] = j;
- break;
- }
- }
- state->expansions[i] = col->expansion;
- }
-
- return state;
-}
-
-gchar *e_tree_get_state (ETree *e_tree)
-{
- ETableState *state;
- gchar *string;
-
- state = e_tree_get_state_object(e_tree);
- string = e_table_state_save_to_string(state);
- gtk_object_unref(GTK_OBJECT(state));
- return string;
-}
-
-/**
- * e_tree_save_state:
- * @e_tree: %ETree object that will be modified
- * @filename: name of the file containing the state to be loaded into the %ETree
- *
- * This routine saves the state of the @e_tree object into the file pointed
- * by @filename
- */
-void
-e_tree_save_state (ETree *e_tree,
- const gchar *filename)
-{
- ETableState *state;
-
- state = e_tree_get_state_object(e_tree);
- e_table_state_save_to_file(state, filename);
- gtk_object_unref(GTK_OBJECT(state));
-}
-
-static void
-et_table_model_changed (ETableModel *model, ETree *et)
-{
- if (et->priv->horizontal_scrolling)
- e_table_header_update_horizontal(et->priv->header);
-}
-
-static void
-et_table_row_changed (ETableModel *table_model, int row, ETree *et)
-{
- et_table_model_changed (table_model, et);
-}
-
-static void
-et_table_cell_changed (ETableModel *table_model, int view_col, int row, ETree *et)
-{
- et_table_model_changed (table_model, et);
-}
-
-static void
-et_table_rows_inserted (ETableModel *table_model, int row, int count, ETree *et)
-{
- et_table_model_changed (table_model, et);
-}
-
-static void
-et_table_rows_deleted (ETableModel *table_model, int row, int count, ETree *et)
-{
- et_table_model_changed (table_model, et);
-}
-
-static void
-et_connect_to_etta (ETree *et)
-{
- et->priv->table_model_change_id = gtk_signal_connect (GTK_OBJECT (et->priv->etta), "model_changed",
- GTK_SIGNAL_FUNC (et_table_model_changed), et);
-
- et->priv->table_row_change_id = gtk_signal_connect (GTK_OBJECT (et->priv->etta), "model_row_changed",
- GTK_SIGNAL_FUNC (et_table_row_changed), et);
-
- et->priv->table_cell_change_id = gtk_signal_connect (GTK_OBJECT (et->priv->etta), "model_cell_changed",
- GTK_SIGNAL_FUNC (et_table_cell_changed), et);
-
- et->priv->table_rows_inserted_id = gtk_signal_connect (GTK_OBJECT (et->priv->etta), "model_rows_inserted",
- GTK_SIGNAL_FUNC (et_table_rows_inserted), et);
-
- et->priv->table_rows_deleted_id = gtk_signal_connect (GTK_OBJECT (et->priv->etta), "model_rows_deleted",
- GTK_SIGNAL_FUNC (et_table_rows_deleted), et);
-
-}
-
-static ETree *
-et_real_construct (ETree *e_tree, ETreeModel *etm, ETableExtras *ete,
- ETableSpecification *specification, ETableState *state)
-{
- int row = 0;
-
- if (ete)
- gtk_object_ref(GTK_OBJECT(ete));
- else
- ete = e_table_extras_new();
-
- e_tree->priv->alternating_row_colors = specification->alternating_row_colors;
- e_tree->priv->horizontal_draw_grid = specification->horizontal_draw_grid;
- e_tree->priv->vertical_draw_grid = specification->vertical_draw_grid;
- e_tree->priv->draw_focus = specification->draw_focus;
- e_tree->priv->cursor_mode = specification->cursor_mode;
- e_tree->priv->full_header = e_table_spec_to_full_header(specification, ete);
-
- e_tree->priv->header = e_table_state_to_header (GTK_WIDGET(e_tree), e_tree->priv->full_header, state);
- e_tree->priv->horizontal_scrolling = specification->horizontal_scrolling;
-
- e_tree->priv->sort_info = state->sort_info;
- gtk_object_ref (GTK_OBJECT (e_tree->priv->sort_info));
-
- gtk_object_set(GTK_OBJECT(e_tree->priv->header),
- "sort_info", e_tree->priv->sort_info,
- NULL);
-
- e_tree->priv->model = etm;
- gtk_object_ref (GTK_OBJECT (etm));
-
- e_tree->priv->sorted = e_tree_sorted_new(etm, e_tree->priv->full_header, e_tree->priv->sort_info);
-
- e_tree->priv->etta = E_TREE_TABLE_ADAPTER(e_tree_table_adapter_new(E_TREE_MODEL(e_tree->priv->sorted)));
-
- et_connect_to_etta (e_tree);
-
- gtk_widget_push_visual (gdk_rgb_get_visual ());
- gtk_widget_push_colormap (gdk_rgb_get_cmap ());
-
- e_tree->priv->sorter = e_sorter_new();
-
- gtk_object_set (GTK_OBJECT (e_tree->priv->selection),
- "sorter", e_tree->priv->sorter,
-#ifdef E_TREE_USE_TREE_SELECTION
- "model", e_tree->priv->model,
- "ets", e_tree->priv->sorted,
- "etta", e_tree->priv->etta,
-#else
- "model", e_tree->priv->etta,
-#endif
- "selection_mode", specification->selection_mode,
- "cursor_mode", specification->cursor_mode,
- NULL);
-
- gtk_signal_connect(GTK_OBJECT(e_tree->priv->selection), "selection_changed",
- GTK_SIGNAL_FUNC(et_selection_model_selection_change), e_tree);
-
- if (!specification->no_headers) {
- e_tree_setup_header (e_tree);
- }
- e_tree_setup_table (e_tree);
-
- gtk_layout_get_vadjustment (GTK_LAYOUT (e_tree->priv->table_canvas))->step_increment = 20;
- gtk_adjustment_changed(gtk_layout_get_vadjustment (GTK_LAYOUT (e_tree->priv->table_canvas)));
-
- if (!specification->no_headers) {
- /*
- * The header
- */
- gtk_table_attach (GTK_TABLE (e_tree), GTK_WIDGET (e_tree->priv->header_canvas),
- 0, 1, 0 + row, 1 + row,
- GTK_FILL | GTK_EXPAND,
- GTK_FILL, 0, 0);
- row ++;
- }
- gtk_table_attach (GTK_TABLE (e_tree), GTK_WIDGET (e_tree->priv->table_canvas),
- 0, 1, 0 + row, 1 + row,
- GTK_FILL | GTK_EXPAND,
- GTK_FILL | GTK_EXPAND,
- 0, 0);
-
- gtk_widget_pop_colormap ();
- gtk_widget_pop_visual ();
-
- gtk_object_unref(GTK_OBJECT(ete));
-
- return e_tree;
-}
-
-ETree *
-e_tree_construct (ETree *e_tree, ETreeModel *etm, ETableExtras *ete,
- const char *spec_str, const char *state_str)
-{
- ETableSpecification *specification;
- ETableState *state;
-
- g_return_val_if_fail(e_tree != NULL, NULL);
- g_return_val_if_fail(E_IS_TREE(e_tree), NULL);
- g_return_val_if_fail(etm != NULL, NULL);
- g_return_val_if_fail(E_IS_TREE_MODEL(etm), NULL);
- g_return_val_if_fail(ete == NULL || E_IS_TABLE_EXTRAS(ete), NULL);
- g_return_val_if_fail(spec_str != NULL, NULL);
-
- specification = e_table_specification_new();
- e_table_specification_load_from_string(specification, spec_str);
- if (state_str) {
- state = e_table_state_new();
- e_table_state_load_from_string(state, state_str);
- if (state->col_count <= 0) {
- gtk_object_unref(GTK_OBJECT(state));
- state = specification->state;
- gtk_object_ref(GTK_OBJECT(state));
- }
- } else {
- state = specification->state;
- gtk_object_ref(GTK_OBJECT(state));
- }
-
- e_tree = et_real_construct (e_tree, etm, ete, specification, state);
-
- e_tree->priv->spec = specification;
- gtk_object_unref(GTK_OBJECT(state));
-
- return e_tree;
-}
-
-ETree *
-e_tree_construct_from_spec_file (ETree *e_tree, ETreeModel *etm, ETableExtras *ete,
- const char *spec_fn, const char *state_fn)
-{
- ETableSpecification *specification;
- ETableState *state;
-
- g_return_val_if_fail(e_tree != NULL, NULL);
- g_return_val_if_fail(E_IS_TREE(e_tree), NULL);
- g_return_val_if_fail(etm != NULL, NULL);
- g_return_val_if_fail(E_IS_TREE_MODEL(etm), NULL);
- g_return_val_if_fail(ete == NULL || E_IS_TABLE_EXTRAS(ete), NULL);
- g_return_val_if_fail(spec_fn != NULL, NULL);
-
- specification = e_table_specification_new();
- if (!e_table_specification_load_from_file(specification, spec_fn)) {
- gtk_object_unref(GTK_OBJECT(specification));
- return NULL;
- }
-
- if (state_fn) {
- state = e_table_state_new();
- if (!e_table_state_load_from_file(state, state_fn)) {
- gtk_object_unref(GTK_OBJECT(state));
- state = specification->state;
- gtk_object_ref(GTK_OBJECT(state));
- }
- if (state->col_count <= 0) {
- gtk_object_unref(GTK_OBJECT(state));
- state = specification->state;
- gtk_object_ref(GTK_OBJECT(state));
- }
- } else {
- state = specification->state;
- gtk_object_ref(GTK_OBJECT(state));
- }
-
- e_tree = et_real_construct (e_tree, etm, ete, specification, state);
-
- e_tree->priv->spec = specification;
- gtk_object_unref(GTK_OBJECT(state));
-
- return e_tree;
-}
-
-GtkWidget *
-e_tree_new (ETreeModel *etm, ETableExtras *ete, const char *spec, const char *state)
-{
- ETree *e_tree;
-
- g_return_val_if_fail(etm != NULL, NULL);
- g_return_val_if_fail(E_IS_TREE_MODEL(etm), NULL);
- g_return_val_if_fail(ete == NULL || E_IS_TABLE_EXTRAS(ete), NULL);
- g_return_val_if_fail(spec != NULL, NULL);
-
- e_tree = gtk_type_new (e_tree_get_type ());
-
- e_tree = e_tree_construct (e_tree, etm, ete, spec, state);
-
- return GTK_WIDGET (e_tree);
-}
-
-GtkWidget *
-e_tree_new_from_spec_file (ETreeModel *etm, ETableExtras *ete, const char *spec_fn, const char *state_fn)
-{
- ETree *e_tree;
-
- g_return_val_if_fail(etm != NULL, NULL);
- g_return_val_if_fail(E_IS_TREE_MODEL(etm), NULL);
- g_return_val_if_fail(ete == NULL || E_IS_TABLE_EXTRAS(ete), NULL);
- g_return_val_if_fail(spec_fn != NULL, NULL);
-
- e_tree = gtk_type_new (e_tree_get_type ());
-
- e_tree = e_tree_construct_from_spec_file (e_tree, etm, ete, spec_fn, state_fn);
-
- return GTK_WIDGET (e_tree);
-}
-
-void
-e_tree_set_cursor (ETree *e_tree, ETreePath path)
-{
-#ifndef E_TREE_USE_TREE_SELECTION
- int row;
-#endif
- g_return_if_fail(e_tree != NULL);
- g_return_if_fail(E_IS_TREE(e_tree));
- g_return_if_fail(path != NULL);
-
-#ifdef E_TREE_USE_TREE_SELECTION
- e_tree_selection_model_select_single_path (E_TREE_SELECTION_MODEL(e_tree->priv->selection), path);
- e_tree_selection_model_change_cursor (E_TREE_SELECTION_MODEL(e_tree->priv->selection), path);
-#else
- path = e_tree_sorted_model_to_view_path(e_tree->priv->sorted, path);
-
- row = e_tree_table_adapter_row_of_node(E_TREE_TABLE_ADAPTER(e_tree->priv->etta), path);
-
- if (row == -1)
- return;
-
- gtk_object_set(GTK_OBJECT(e_tree->priv->selection),
- "cursor_row", row,
- NULL);
-#endif
-}
-
-ETreePath
-e_tree_get_cursor (ETree *e_tree)
-{
- int row;
- ETreePath path;
- g_return_val_if_fail(e_tree != NULL, NULL);
- g_return_val_if_fail(E_IS_TREE(e_tree), NULL);
-
- gtk_object_get(GTK_OBJECT(e_tree->priv->selection),
- "cursor_row", &row,
- NULL);
- path = e_tree_table_adapter_node_at_row(E_TREE_TABLE_ADAPTER(e_tree->priv->etta), row);
- path = e_tree_sorted_view_to_model_path(e_tree->priv->sorted, path);
- return path;
-}
-
-void
-e_tree_selected_row_foreach (ETree *e_tree,
- EForeachFunc callback,
- gpointer closure)
-{
- g_return_if_fail(e_tree != NULL);
- g_return_if_fail(E_IS_TREE(e_tree));
-
- e_selection_model_foreach(e_tree->priv->selection,
- callback,
- closure);
-}
-
-#ifdef E_TREE_USE_TREE_SELECTION
-void
-e_tree_selected_path_foreach (ETree *e_tree,
- ETreeForeachFunc callback,
- gpointer closure)
-{
- g_return_if_fail(e_tree != NULL);
- g_return_if_fail(E_IS_TREE(e_tree));
-
- e_tree_selection_model_foreach(E_TREE_SELECTION_MODEL (e_tree->priv->selection),
- callback,
- closure);
-}
-#endif
-
-gint
-e_tree_selected_count (ETree *e_tree)
-{
- g_return_val_if_fail(e_tree != NULL, -1);
- g_return_val_if_fail(E_IS_TREE(e_tree), -1);
-
- return e_selection_model_selected_count(E_SELECTION_MODEL (e_tree->priv->selection));
-}
-
-void
-e_tree_select_all (ETree *tree)
-{
- g_return_if_fail (tree != NULL);
- g_return_if_fail (E_IS_TREE (tree));
-
- e_selection_model_select_all (E_SELECTION_MODEL (tree->priv->selection));
-}
-
-void
-e_tree_invert_selection (ETree *tree)
-{
- g_return_if_fail (tree != NULL);
- g_return_if_fail (E_IS_TREE (tree));
-
- e_selection_model_invert_selection (E_SELECTION_MODEL (tree->priv->selection));
-}
-
-
-EPrintable *
-e_tree_get_printable (ETree *e_tree)
-{
- g_return_val_if_fail(e_tree != NULL, NULL);
- g_return_val_if_fail(E_IS_TREE(e_tree), NULL);
-
- return e_table_item_get_printable(E_TABLE_ITEM(e_tree->priv->item));
-}
-
-static void
-et_get_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- ETree *etree = E_TREE (o);
-
- switch (arg_id){
- case ARG_ETTA:
- if (etree->priv->item) {
- GTK_VALUE_OBJECT (*arg) = GTK_OBJECT (etree->priv->etta);
- }
- break;
-
- default:
- break;
- }
-}
-
-typedef struct {
- char *arg;
- gboolean setting;
-} bool_closure;
-
-static void
-et_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- ETree *etree = E_TREE (o);
-
- switch (arg_id){
- case ARG_LENGTH_THRESHOLD:
- etree->priv->length_threshold = GTK_VALUE_INT (*arg);
- if (etree->priv->item) {
- gnome_canvas_item_set (GNOME_CANVAS_ITEM(etree->priv->item),
- "length_threshold", GTK_VALUE_INT (*arg),
- NULL);
- }
- break;
-
- case ARG_HORIZONTAL_DRAW_GRID:
- etree->priv->horizontal_draw_grid = GTK_VALUE_BOOL (*arg);
- if (etree->priv->item) {
- gnome_canvas_item_set (GNOME_CANVAS_ITEM(etree->priv->item),
- "horizontal_draw_grid", GTK_VALUE_BOOL (*arg),
- NULL);
- }
- break;
-
- case ARG_VERTICAL_DRAW_GRID:
- etree->priv->vertical_draw_grid = GTK_VALUE_BOOL (*arg);
- if (etree->priv->item) {
- gnome_canvas_item_set (GNOME_CANVAS_ITEM(etree->priv->item),
- "vertical_draw_grid", GTK_VALUE_BOOL (*arg),
- NULL);
- }
- break;
-
- case ARG_DRAW_FOCUS:
- etree->priv->draw_focus = GTK_VALUE_BOOL (*arg);
- if (etree->priv->item) {
- gnome_canvas_item_set (GNOME_CANVAS_ITEM(etree->priv->item),
- "draw_focus", GTK_VALUE_BOOL (*arg),
- NULL);
- }
- break;
- }
-}
-
-static void
-set_scroll_adjustments (ETree *tree,
- GtkAdjustment *hadjustment,
- GtkAdjustment *vadjustment)
-{
- if (vadjustment != NULL) {
- vadjustment->step_increment = 20;
- gtk_adjustment_changed(vadjustment);
- }
-
- gtk_layout_set_hadjustment (GTK_LAYOUT(tree->priv->table_canvas),
- hadjustment);
- gtk_layout_set_vadjustment (GTK_LAYOUT(tree->priv->table_canvas),
- vadjustment);
-
- if (tree->priv->header_canvas != NULL)
- gtk_layout_set_hadjustment (GTK_LAYOUT(tree->priv->header_canvas),
- hadjustment);
-}
-
-gint
-e_tree_get_next_row (ETree *e_tree,
- gint model_row)
-{
- g_return_val_if_fail(e_tree != NULL, -1);
- g_return_val_if_fail(E_IS_TREE(e_tree), -1);
-
- if (e_tree->priv->sorter) {
- int i;
- i = e_sorter_model_to_sorted(E_SORTER (e_tree->priv->sorter), model_row);
- i++;
- if (i < e_table_model_row_count(E_TABLE_MODEL(e_tree->priv->etta))) {
- return e_sorter_sorted_to_model(E_SORTER (e_tree->priv->sorter), i);
- } else
- return -1;
- } else
- if (model_row < e_table_model_row_count(E_TABLE_MODEL(e_tree->priv->etta)) - 1)
- return model_row + 1;
- else
- return -1;
-}
-
-gint
-e_tree_get_prev_row (ETree *e_tree,
- gint model_row)
-{
- g_return_val_if_fail(e_tree != NULL, -1);
- g_return_val_if_fail(E_IS_TREE(e_tree), -1);
-
- if (e_tree->priv->sorter) {
- int i;
- i = e_sorter_model_to_sorted(E_SORTER (e_tree->priv->sorter), model_row);
- i--;
- if (i >= 0)
- return e_sorter_sorted_to_model(E_SORTER (e_tree->priv->sorter), i);
- else
- return -1;
- } else
- return model_row - 1;
-}
-
-gint
-e_tree_model_to_view_row (ETree *e_tree,
- gint model_row)
-{
- g_return_val_if_fail(e_tree != NULL, -1);
- g_return_val_if_fail(E_IS_TREE(e_tree), -1);
-
- if (e_tree->priv->sorter)
- return e_sorter_model_to_sorted(E_SORTER (e_tree->priv->sorter), model_row);
- else
- return model_row;
-}
-
-gint
-e_tree_view_to_model_row (ETree *e_tree,
- gint view_row)
-{
- g_return_val_if_fail(e_tree != NULL, -1);
- g_return_val_if_fail(E_IS_TREE(e_tree), -1);
-
- if (e_tree->priv->sorter)
- return e_sorter_sorted_to_model (E_SORTER (e_tree->priv->sorter), view_row);
- else
- return view_row;
-}
-
-
-gboolean
-e_tree_node_is_expanded (ETree *et, ETreePath path)
-{
- path = e_tree_sorted_model_to_view_path(et->priv->sorted, path);
-
- g_return_val_if_fail(path, FALSE);
-
- return e_tree_table_adapter_node_is_expanded (et->priv->etta, path);
-}
-
-void
-e_tree_node_set_expanded (ETree *et, ETreePath path, gboolean expanded)
-{
- g_return_if_fail (et != NULL);
- g_return_if_fail (E_IS_TREE(et));
-
- path = e_tree_sorted_model_to_view_path(et->priv->sorted, path);
-
- e_tree_table_adapter_node_set_expanded (et->priv->etta, path, expanded);
-}
-
-void
-e_tree_node_set_expanded_recurse (ETree *et, ETreePath path, gboolean expanded)
-{
- g_return_if_fail (et != NULL);
- g_return_if_fail (E_IS_TREE(et));
-
- path = e_tree_sorted_model_to_view_path(et->priv->sorted, path);
-
- e_tree_table_adapter_node_set_expanded_recurse (et->priv->etta, path, expanded);
-}
-
-void
-e_tree_root_node_set_visible (ETree *et, gboolean visible)
-{
- g_return_if_fail (et != NULL);
- g_return_if_fail (E_IS_TREE(et));
-
- e_tree_table_adapter_root_node_set_visible (et->priv->etta, visible);
-}
-
-ETreePath
-e_tree_node_at_row (ETree *et, int row)
-{
- ETreePath path;
-
- path = e_tree_table_adapter_node_at_row (et->priv->etta, row);
- path = e_tree_sorted_view_to_model_path(et->priv->sorted, path);
-
- return path;
-}
-
-int
-e_tree_row_of_node (ETree *et, ETreePath path)
-{
- path = e_tree_sorted_model_to_view_path(et->priv->sorted, path);
- return e_tree_table_adapter_row_of_node (et->priv->etta, path);
-}
-
-gboolean
-e_tree_root_node_is_visible(ETree *et)
-{
- return e_tree_table_adapter_root_node_is_visible (et->priv->etta);
-}
-
-void
-e_tree_show_node (ETree *et, ETreePath path)
-{
- g_return_if_fail (et != NULL);
- g_return_if_fail (E_IS_TREE(et));
-
- path = e_tree_sorted_model_to_view_path(et->priv->sorted, path);
-
- e_tree_table_adapter_show_node (et->priv->etta, path);
-}
-
-void
-e_tree_save_expanded_state (ETree *et, char *filename)
-{
- g_return_if_fail (et != NULL);
- g_return_if_fail (E_IS_TREE(et));
-
- e_tree_table_adapter_save_expanded_state (et->priv->etta, filename);
-}
-
-void
-e_tree_load_expanded_state (ETree *et, char *filename)
-{
- e_tree_table_adapter_load_expanded_state (et->priv->etta, filename);
-}
-
-gint
-e_tree_row_count (ETree *et)
-{
- return e_table_model_row_count (E_TABLE_MODEL(et->priv->etta));
-}
-
-GtkWidget *
-e_tree_get_tooltip (ETree *et)
-{
- return E_CANVAS(et->priv->table_canvas)->tooltip_window;
-}
-
-struct _ETreeDragSourceSite
-{
- GdkModifierType start_button_mask;
- GtkTargetList *target_list; /* Targets for drag data */
- GdkDragAction actions; /* Possible actions */
- GdkColormap *colormap; /* Colormap for drag icon */
- GdkPixmap *pixmap; /* Icon for drag data */
- GdkBitmap *mask;
-
- /* Stored button press information to detect drag beginning */
- gint state;
- gint x, y;
- gint row, col;
-};
-
-typedef enum
-{
- GTK_DRAG_STATUS_DRAG,
- GTK_DRAG_STATUS_WAIT,
- GTK_DRAG_STATUS_DROP
-} GtkDragStatus;
-
-typedef struct _GtkDragDestInfo GtkDragDestInfo;
-typedef struct _GtkDragSourceInfo GtkDragSourceInfo;
-
-struct _GtkDragDestInfo
-{
- GtkWidget *widget; /* Widget in which drag is in */
- GdkDragContext *context; /* Drag context */
- GtkDragSourceInfo *proxy_source; /* Set if this is a proxy drag */
- GtkSelectionData *proxy_data; /* Set while retrieving proxied data */
- gboolean dropped : 1; /* Set after we receive a drop */
- guint32 proxy_drop_time; /* Timestamp for proxied drop */
- gboolean proxy_drop_wait : 1; /* Set if we are waiting for a
- * status reply before sending
- * a proxied drop on.
- */
- gint drop_x, drop_y; /* Position of drop */
-};
-
-struct _GtkDragSourceInfo
-{
- GtkWidget *widget;
- GtkTargetList *target_list; /* Targets for drag data */
- GdkDragAction possible_actions; /* Actions allowed by source */
- GdkDragContext *context; /* drag context */
- GtkWidget *icon_window; /* Window for drag */
- GtkWidget *ipc_widget; /* GtkInvisible for grab, message passing */
- GdkCursor *cursor; /* Cursor for drag */
- gint hot_x, hot_y; /* Hot spot for drag */
- gint button; /* mouse button starting drag */
-
- GtkDragStatus status; /* drag status */
- GdkEvent *last_event; /* motion event waiting for response */
-
- gint start_x, start_y; /* Initial position */
- gint cur_x, cur_y; /* Current Position */
-
- GList *selections; /* selections we've claimed */
-
- GtkDragDestInfo *proxy_dest; /* Set if this is a proxy drag */
-
- guint drop_timeout; /* Timeout for aborting drop */
- guint destroy_icon : 1; /* If true, destroy icon_window
- */
-};
-
-/* Drag & drop stuff. */
-/* Target */
-void
-e_tree_drag_get_data (ETree *tree,
- int row,
- int col,
- GdkDragContext *context,
- GdkAtom target,
- guint32 time)
-{
- ETreePath path;
- g_return_if_fail(tree != NULL);
- g_return_if_fail(E_IS_TREE(tree));
-
- path = e_tree_table_adapter_node_at_row(tree->priv->etta, row);
- path = e_tree_sorted_view_to_model_path(tree->priv->sorted, path);
-
- gtk_drag_get_data(GTK_WIDGET(tree),
- context,
- target,
- time);
-
-}
-
-/**
- * e_tree_drag_highlight:
- * @tree:
- * @row:
- * @col:
- *
- * Set col to -1 to highlight the entire row.
- */
-void
-e_tree_drag_highlight (ETree *tree,
- int row,
- int col)
-{
- g_return_if_fail(tree != NULL);
- g_return_if_fail(E_IS_TREE(tree));
-}
-
-void
-e_tree_drag_unhighlight (ETree *tree)
-{
- g_return_if_fail(tree != NULL);
- g_return_if_fail(E_IS_TREE(tree));
-}
-
-void e_tree_drag_dest_set (ETree *tree,
- GtkDestDefaults flags,
- const GtkTargetEntry *targets,
- gint n_targets,
- GdkDragAction actions)
-{
- g_return_if_fail(tree != NULL);
- g_return_if_fail(E_IS_TREE(tree));
-
- gtk_drag_dest_set(GTK_WIDGET(tree),
- flags,
- targets,
- n_targets,
- actions);
-}
-
-void e_tree_drag_dest_set_proxy (ETree *tree,
- GdkWindow *proxy_window,
- GdkDragProtocol protocol,
- gboolean use_coordinates)
-{
- g_return_if_fail(tree != NULL);
- g_return_if_fail(E_IS_TREE(tree));
-
- gtk_drag_dest_set_proxy(GTK_WIDGET(tree),
- proxy_window,
- protocol,
- use_coordinates);
-}
-
-/*
- * There probably should be functions for setting the targets
- * as a GtkTargetList
- */
-
-void
-e_tree_drag_dest_unset (GtkWidget *widget)
-{
- g_return_if_fail(widget != NULL);
- g_return_if_fail(E_IS_TREE(widget));
-
- gtk_drag_dest_unset(widget);
-}
-
-/* Source side */
-
-void
-e_tree_drag_source_set (ETree *tree,
- GdkModifierType start_button_mask,
- const GtkTargetEntry *targets,
- gint n_targets,
- GdkDragAction actions)
-{
- ETreeDragSourceSite *site;
- GtkWidget *canvas;
-
- g_return_if_fail(tree != NULL);
- g_return_if_fail(E_IS_TREE(tree));
-
- canvas = GTK_WIDGET(tree->priv->table_canvas);
- site = tree->priv->site;
-
- gtk_widget_add_events (canvas,
- gtk_widget_get_events (canvas) |
- GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
- GDK_BUTTON_MOTION_MASK | GDK_STRUCTURE_MASK);
-
- if (site) {
- if (site->target_list)
- gtk_target_list_unref (site->target_list);
- } else {
- site = g_new0 (ETreeDragSourceSite, 1);
-
- tree->priv->drag_source_button_press_event_id =
- gtk_signal_connect (GTK_OBJECT (canvas), "button_press_event",
- GTK_SIGNAL_FUNC (e_tree_drag_source_event_cb),
- tree);
- tree->priv->drag_source_motion_notify_event_id =
- gtk_signal_connect (GTK_OBJECT (canvas), "motion_notify_event",
- GTK_SIGNAL_FUNC (e_tree_drag_source_event_cb),
- tree);
-
- tree->priv->site = site;
- }
-
- site->start_button_mask = start_button_mask;
-
- if (targets)
- site->target_list = gtk_target_list_new (targets, n_targets);
- else
- site->target_list = NULL;
-
- site->actions = actions;
-}
-
-void
-e_tree_drag_source_unset (ETree *tree)
-{
- ETreeDragSourceSite *site;
-
- g_return_if_fail (tree != NULL);
- g_return_if_fail (E_IS_TREE(tree));
-
- site = tree->priv->site;
-
- if (site) {
- gtk_signal_disconnect (
- GTK_OBJECT (tree->priv->table_canvas),
- tree->priv->drag_source_button_press_event_id);
- gtk_signal_disconnect (
- GTK_OBJECT (tree->priv->table_canvas),
- tree->priv->drag_source_motion_notify_event_id);
- g_free (site);
- tree->priv->site = NULL;
- }
-}
-
-/* There probably should be functions for setting the targets
- * as a GtkTargetList
- */
-
-GdkDragContext *
-e_tree_drag_begin (ETree *tree,
- int row,
- int col,
- GtkTargetList *targets,
- GdkDragAction actions,
- gint button,
- GdkEvent *event)
-{
- ETreePath path;
- g_return_val_if_fail (tree != NULL, NULL);
- g_return_val_if_fail (E_IS_TREE(tree), NULL);
-
- path = e_tree_table_adapter_node_at_row(tree->priv->etta, row);
- path = e_tree_sorted_view_to_model_path(tree->priv->sorted, path);
-
- tree->priv->drag_row = row;
- tree->priv->drag_path = path;
- tree->priv->drag_col = col;
-
- return gtk_drag_begin(GTK_WIDGET(tree),
- targets,
- actions,
- button,
- event);
-}
-
-/**
- * e_tree_get_cell_at:
- * @tree: An ETree widget
- * @x: X coordinate for the pixel
- * @y: Y coordinate for the pixel
- * @row_return: Pointer to return the row value
- * @col_return: Pointer to return the column value
- *
- * Return the row and column for the cell in which the pixel at (@x, @y) is
- * contained.
- **/
-void
-e_tree_get_cell_at (ETree *tree,
- int x, int y,
- int *row_return, int *col_return)
-{
- g_return_if_fail (tree != NULL);
- g_return_if_fail (E_IS_TREE (tree));
- g_return_if_fail (row_return != NULL);
- g_return_if_fail (col_return != NULL);
-
- /* FIXME it would be nice if it could handle a NULL row_return or
- * col_return gracefully. */
-
- x += GTK_LAYOUT(tree->priv->table_canvas)->hadjustment->value;
- y += GTK_LAYOUT(tree->priv->table_canvas)->vadjustment->value;
- e_table_item_compute_location(E_TABLE_ITEM(tree->priv->item), &x, &y, row_return, col_return);
-}
-
-/**
- * e_tree_get_cell_geometry:
- * @tree: The tree.
- * @row: The row to get the geometry of.
- * @col: The col to get the geometry of.
- * @x_return: Returns the x coordinate of the upper right hand corner of the cell with respect to the widget.
- * @y_return: Returns the y coordinate of the upper right hand corner of the cell with respect to the widget.
- * @width_return: Returns the width of the cell.
- * @height_return: Returns the height of the cell.
- *
- * Computes the data about this cell.
- **/
-void
-e_tree_get_cell_geometry (ETree *tree,
- int row, int col,
- int *x_return, int *y_return,
- int *width_return, int *height_return)
-{
- g_return_if_fail (tree != NULL);
- g_return_if_fail (E_IS_TREE (tree));
-
- /* FIXME it would be nice if it could handle a NULL row_return or
- * col_return gracefully. */
-
- e_table_item_get_cell_geometry(E_TABLE_ITEM(tree->priv->item), &row, &col, x_return, y_return, width_return, height_return);
-
- if (x_return)
- (*x_return) -= GTK_LAYOUT(tree->priv->table_canvas)->hadjustment->value;
- if (y_return)
- (*y_return) -= GTK_LAYOUT(tree->priv->table_canvas)->vadjustment->value;
-}
-
-static void
-et_drag_begin (GtkWidget *widget,
- GdkDragContext *context,
- ETree *et)
-{
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [TREE_DRAG_BEGIN],
- et->priv->drag_row,
- et->priv->drag_path,
- et->priv->drag_col,
- context);
-}
-
-static void
-et_drag_end (GtkWidget *widget,
- GdkDragContext *context,
- ETree *et)
-{
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [TREE_DRAG_END],
- et->priv->drag_row,
- et->priv->drag_path,
- et->priv->drag_col,
- context);
-}
-
-static void
-et_drag_data_get(GtkWidget *widget,
- GdkDragContext *context,
- GtkSelectionData *selection_data,
- guint info,
- guint time,
- ETree *et)
-{
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [TREE_DRAG_DATA_GET],
- et->priv->drag_row,
- et->priv->drag_path,
- et->priv->drag_col,
- context,
- selection_data,
- info,
- time);
-}
-
-static void
-et_drag_data_delete(GtkWidget *widget,
- GdkDragContext *context,
- ETree *et)
-{
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [TREE_DRAG_DATA_DELETE],
- et->priv->drag_row,
- et->priv->drag_path,
- et->priv->drag_col,
- context);
-}
-
-static void
-et_drag_leave(GtkWidget *widget,
- GdkDragContext *context,
- guint time,
- ETree *et)
-{
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [TREE_DRAG_LEAVE],
- et->priv->drop_row,
- et->priv->drop_path,
- et->priv->drop_col,
- context,
- time);
- et->priv->drop_row = -1;
- et->priv->drop_col = -1;
-}
-
-static gboolean
-et_drag_motion(GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time,
- ETree *et)
-{
- gboolean ret_val;
- int row, col;
- ETreePath path;
- e_tree_get_cell_at (et,
- x,
- y,
- &row,
- &col);
- if (et->priv->drop_row >= 0 && et->priv->drop_col >= 0 &&
- row != et->priv->drop_row && col != et->priv->drop_row) {
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [TREE_DRAG_LEAVE],
- et->priv->drop_row,
- et->priv->drop_path,
- et->priv->drop_col,
- context,
- time);
- }
-
- path = e_tree_table_adapter_node_at_row(et->priv->etta, row);
- path = e_tree_sorted_view_to_model_path(et->priv->sorted, path);
-
- et->priv->drop_row = row;
- et->priv->drop_path = path;
- et->priv->drop_col = col;
- if (row >= 0 && col >= 0)
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [TREE_DRAG_MOTION],
- et->priv->drop_row,
- et->priv->drop_path,
- et->priv->drop_col,
- context,
- x,
- y,
- time,
- &ret_val);
- return ret_val;
-}
-
-static gboolean
-et_drag_drop(GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time,
- ETree *et)
-{
- gboolean ret_val;
- int row, col;
- ETreePath path;
- e_tree_get_cell_at(et,
- x,
- y,
- &row,
- &col);
- path = e_tree_table_adapter_node_at_row(et->priv->etta, row);
- path = e_tree_sorted_view_to_model_path(et->priv->sorted, path);
-
- if (et->priv->drop_row >= 0 && et->priv->drop_col >= 0 &&
- row != et->priv->drop_row && col != et->priv->drop_row) {
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [TREE_DRAG_LEAVE],
- et->priv->drop_row,
- et->priv->drop_path,
- et->priv->drop_col,
- context,
- time);
- if (row >= 0 && col >= 0)
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [TREE_DRAG_MOTION],
- row,
- path,
- col,
- context,
- x,
- y,
- time,
- &ret_val);
- }
- et->priv->drop_row = row;
- et->priv->drop_path = path;
- et->priv->drop_col = col;
- if (row >= 0 && col >= 0)
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [TREE_DRAG_DROP],
- et->priv->drop_row,
- et->priv->drop_path,
- et->priv->drop_col,
- context,
- x,
- y,
- time,
- &ret_val);
- et->priv->drop_row = -1;
- et->priv->drop_path = NULL;
- et->priv->drop_col = -1;
- return ret_val;
-}
-
-static void
-et_drag_data_received(GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- GtkSelectionData *selection_data,
- guint info,
- guint time,
- ETree *et)
-{
- int row, col;
- ETreePath path;
- e_tree_get_cell_at(et,
- x,
- y,
- &row,
- &col);
- path = e_tree_table_adapter_node_at_row(et->priv->etta, row);
- path = e_tree_sorted_view_to_model_path(et->priv->sorted, path);
- gtk_signal_emit (GTK_OBJECT (et),
- et_signals [TREE_DRAG_DATA_RECEIVED],
- row,
- path,
- col,
- context,
- x,
- y,
- selection_data,
- info,
- time);
-}
-
-static gint
-e_tree_drag_source_event_cb (GtkWidget *widget,
- GdkEvent *event,
- ETree *tree)
-{
- ETreeDragSourceSite *site;
- site = tree->priv->site;
-
- switch (event->type) {
- case GDK_BUTTON_PRESS:
- if ((GDK_BUTTON1_MASK << (event->button.button - 1)) & site->start_button_mask) {
- int row, col;
- e_tree_get_cell_at(tree, event->button.x, event->button.y, &row, &col);
- if (row >= 0 && col >= 0) {
- site->state |= (GDK_BUTTON1_MASK << (event->button.button - 1));
- site->x = event->button.x;
- site->y = event->button.y;
- site->row = row;
- site->col = col;
- }
- }
- break;
-
- case GDK_BUTTON_RELEASE:
- if ((GDK_BUTTON1_MASK << (event->button.button - 1)) & site->start_button_mask) {
- site->state &= ~(GDK_BUTTON1_MASK << (event->button.button - 1));
- }
- break;
-
- case GDK_MOTION_NOTIFY:
- if (site->state & event->motion.state & site->start_button_mask) {
- /* FIXME: This is really broken and can leave us
- * with a stuck grab
- */
- int i;
- for (i=1; i<6; i++) {
- if (site->state & event->motion.state &
- GDK_BUTTON1_MASK << (i - 1))
- break;
- }
-
- if (MAX (abs (site->x - event->motion.x),
- abs (site->y - event->motion.y)) > 3) {
- GtkDragSourceInfo *info;
- GdkDragContext *context;
-
- site->state = 0;
- context = e_tree_drag_begin (tree, site->row, site->col,
- site->target_list,
- site->actions,
- i, event);
-
-
- info = g_dataset_get_data (context, "gtk-info");
-
- if (!info->icon_window) {
- if (site->pixmap)
- gtk_drag_set_icon_pixmap (context,
- site->colormap,
- site->pixmap,
- site->mask, -2, -2);
- else
- gtk_drag_set_icon_default (context);
- }
-
- return TRUE;
- }
- }
- break;
-
- default: /* hit for 2/3BUTTON_PRESS */
- break;
- }
- return FALSE;
-}
-
-static void
-e_tree_class_init (ETreeClass *class)
-{
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
- GtkContainerClass *container_class;
-
- object_class = (GtkObjectClass *) class;
- widget_class = (GtkWidgetClass *) class;
- container_class = (GtkContainerClass *) class;
-
- parent_class = gtk_type_class (PARENT_TYPE);
-
- object_class->destroy = et_destroy;
- object_class->set_arg = et_set_arg;
- object_class->get_arg = et_get_arg;
-
- widget_class->grab_focus = et_grab_focus;
-
- container_class->focus = et_focus;
-
- class->cursor_change = NULL;
- class->cursor_activated = NULL;
- class->selection_change = NULL;
- class->double_click = NULL;
- class->right_click = NULL;
- class->click = NULL;
- class->key_press = NULL;
-
- class->tree_drag_begin = NULL;
- class->tree_drag_end = NULL;
- class->tree_drag_data_get = NULL;
- class->tree_drag_data_delete = NULL;
-
- class->tree_drag_leave = NULL;
- class->tree_drag_motion = NULL;
- class->tree_drag_drop = NULL;
- class->tree_drag_data_received = NULL;
-
- et_signals [CURSOR_CHANGE] =
- gtk_signal_new ("cursor_change",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETreeClass, cursor_change),
- gtk_marshal_NONE__INT_POINTER,
- GTK_TYPE_NONE, 2, GTK_TYPE_INT, GTK_TYPE_POINTER);
-
- et_signals [CURSOR_ACTIVATED] =
- gtk_signal_new ("cursor_activated",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETreeClass, cursor_activated),
- gtk_marshal_NONE__INT_POINTER,
- GTK_TYPE_NONE, 2, GTK_TYPE_INT, GTK_TYPE_POINTER);
-
- et_signals [SELECTION_CHANGE] =
- gtk_signal_new ("selection_change",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETreeClass, selection_change),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- et_signals [DOUBLE_CLICK] =
- gtk_signal_new ("double_click",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETreeClass, double_click),
- e_marshal_NONE__INT_POINTER_INT_POINTER,
- GTK_TYPE_NONE, 4, GTK_TYPE_INT, GTK_TYPE_POINTER, GTK_TYPE_INT, GTK_TYPE_GDK_EVENT);
-
- et_signals [RIGHT_CLICK] =
- gtk_signal_new ("right_click",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETreeClass, right_click),
- e_marshal_INT__INT_POINTER_INT_POINTER,
- GTK_TYPE_INT, 4, GTK_TYPE_INT, GTK_TYPE_POINTER, GTK_TYPE_INT, GTK_TYPE_GDK_EVENT);
-
- et_signals [CLICK] =
- gtk_signal_new ("click",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETreeClass, click),
- e_marshal_INT__INT_POINTER_INT_POINTER,
- GTK_TYPE_INT, 4, GTK_TYPE_INT, GTK_TYPE_POINTER, GTK_TYPE_INT, GTK_TYPE_GDK_EVENT);
-
- et_signals [KEY_PRESS] =
- gtk_signal_new ("key_press",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETreeClass, key_press),
- e_marshal_INT__INT_POINTER_INT_POINTER,
- GTK_TYPE_INT, 4, GTK_TYPE_INT, GTK_TYPE_POINTER, GTK_TYPE_INT, GTK_TYPE_GDK_EVENT);
-
- et_signals[TREE_DRAG_BEGIN] =
- gtk_signal_new ("tree_drag_begin",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETreeClass, tree_drag_begin),
- e_marshal_NONE__INT_POINTER_INT_POINTER,
- GTK_TYPE_NONE, 4,
- GTK_TYPE_INT,
- GTK_TYPE_POINTER,
- GTK_TYPE_INT,
- GTK_TYPE_GDK_DRAG_CONTEXT);
- et_signals[TREE_DRAG_END] =
- gtk_signal_new ("tree_drag_end",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETreeClass, tree_drag_end),
- e_marshal_NONE__INT_POINTER_INT_POINTER,
- GTK_TYPE_NONE, 4,
- GTK_TYPE_INT,
- GTK_TYPE_POINTER,
- GTK_TYPE_INT,
- GTK_TYPE_GDK_DRAG_CONTEXT);
- et_signals[TREE_DRAG_DATA_GET] =
- gtk_signal_new ("tree_drag_data_get",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETreeClass, tree_drag_data_get),
- e_marshal_NONE__INT_POINTER_INT_POINTER_POINTER_UINT_UINT,
- GTK_TYPE_NONE, 7,
- GTK_TYPE_INT,
- GTK_TYPE_POINTER,
- GTK_TYPE_INT,
- GTK_TYPE_GDK_DRAG_CONTEXT,
- GTK_TYPE_SELECTION_DATA,
- GTK_TYPE_UINT,
- GTK_TYPE_UINT);
- et_signals[TREE_DRAG_DATA_DELETE] =
- gtk_signal_new ("tree_drag_data_delete",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETreeClass, tree_drag_data_delete),
- e_marshal_NONE__INT_POINTER_INT_POINTER,
- GTK_TYPE_NONE, 4,
- GTK_TYPE_INT,
- GTK_TYPE_POINTER,
- GTK_TYPE_INT,
- GTK_TYPE_GDK_DRAG_CONTEXT);
-
- et_signals[TREE_DRAG_LEAVE] =
- gtk_signal_new ("tree_drag_leave",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETreeClass, tree_drag_leave),
- e_marshal_NONE__INT_POINTER_INT_POINTER_UINT,
- GTK_TYPE_NONE, 5,
- GTK_TYPE_INT,
- GTK_TYPE_POINTER,
- GTK_TYPE_INT,
- GTK_TYPE_GDK_DRAG_CONTEXT,
- GTK_TYPE_UINT);
- et_signals[TREE_DRAG_MOTION] =
- gtk_signal_new ("tree_drag_motion",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETreeClass, tree_drag_motion),
- e_marshal_BOOL__INT_POINTER_INT_POINTER_INT_INT_UINT,
- GTK_TYPE_BOOL, 7,
- GTK_TYPE_INT,
- GTK_TYPE_POINTER,
- GTK_TYPE_INT,
- GTK_TYPE_GDK_DRAG_CONTEXT,
- GTK_TYPE_INT,
- GTK_TYPE_INT,
- GTK_TYPE_UINT);
- et_signals[TREE_DRAG_DROP] =
- gtk_signal_new ("tree_drag_drop",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETreeClass, tree_drag_drop),
- e_marshal_BOOL__INT_POINTER_INT_POINTER_INT_INT_UINT,
- GTK_TYPE_BOOL, 7,
- GTK_TYPE_INT,
- GTK_TYPE_POINTER,
- GTK_TYPE_INT,
- GTK_TYPE_GDK_DRAG_CONTEXT,
- GTK_TYPE_INT,
- GTK_TYPE_INT,
- GTK_TYPE_UINT);
- et_signals[TREE_DRAG_DATA_RECEIVED] =
- gtk_signal_new ("tree_drag_data_received",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETreeClass, tree_drag_data_received),
- e_marshal_NONE__INT_POINTER_INT_POINTER_INT_INT_POINTER_UINT_UINT,
- GTK_TYPE_NONE, 9,
- GTK_TYPE_INT,
- GTK_TYPE_POINTER,
- GTK_TYPE_INT,
- GTK_TYPE_GDK_DRAG_CONTEXT,
- GTK_TYPE_INT,
- GTK_TYPE_INT,
- GTK_TYPE_SELECTION_DATA,
- GTK_TYPE_UINT,
- GTK_TYPE_UINT);
-
- gtk_object_class_add_signals (object_class, et_signals, LAST_SIGNAL);
-
- class->set_scroll_adjustments = set_scroll_adjustments;
-
- widget_class->set_scroll_adjustments_signal =
- gtk_signal_new ("set_scroll_adjustments",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETreeClass, set_scroll_adjustments),
- gtk_marshal_NONE__POINTER_POINTER,
- GTK_TYPE_NONE, 2, GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT);
-
- gtk_object_add_arg_type ("ETree::length_threshold", GTK_TYPE_INT,
- GTK_ARG_WRITABLE, ARG_LENGTH_THRESHOLD);
- gtk_object_add_arg_type ("ETree::horizontal_draw_grid", GTK_TYPE_BOOL,
- GTK_ARG_WRITABLE, ARG_HORIZONTAL_DRAW_GRID);
- gtk_object_add_arg_type ("ETree::vertical_draw_grid", GTK_TYPE_BOOL,
- GTK_ARG_WRITABLE, ARG_VERTICAL_DRAW_GRID);
- gtk_object_add_arg_type ("ETree::draw_focus", GTK_TYPE_BOOL,
- GTK_ARG_WRITABLE, ARG_DRAW_FOCUS);
- gtk_object_add_arg_type ("ETree::ETreeTableAdapter", GTK_TYPE_OBJECT,
- GTK_ARG_READABLE, ARG_ETTA);
-}
-
-E_MAKE_TYPE(e_tree, "ETree", ETree, e_tree_class_init, e_tree_init, PARENT_TYPE);
diff --git a/widgets/table/e-tree.h b/widgets/table/e-tree.h
deleted file mode 100644
index 7ad9873d8b..0000000000
--- a/widgets/table/e-tree.h
+++ /dev/null
@@ -1,264 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-#ifndef _E_TREE_H_
-#define _E_TREE_H_
-
-#include <gtk/gtktable.h>
-#include <gnome-xml/tree.h>
-#include <libgnomeui/gnome-canvas.h>
-
-#include <gal/widgets/e-printable.h>
-
-#include <gal/e-table/e-table-extras.h>
-#include <gal/e-table/e-table-state.h>
-#include <gal/e-table/e-tree-model.h>
-
-#define E_TREE_USE_TREE_SELECTION
-
-#ifdef E_TREE_USE_TREE_SELECTION
-#include <gal/e-table/e-tree-selection-model.h>
-#endif
-
-BEGIN_GNOME_DECLS
-
-#define E_TREE_TYPE (e_tree_get_type ())
-#define E_TREE(o) (GTK_CHECK_CAST ((o), E_TREE_TYPE, ETree))
-#define E_TREE_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_TREE_TYPE, ETreeClass))
-#define E_IS_TREE(o) (GTK_CHECK_TYPE ((o), E_TREE_TYPE))
-#define E_IS_TREE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_TREE_TYPE))
-
-typedef struct _ETreeDragSourceSite ETreeDragSourceSite;
-typedef struct ETreePriv ETreePriv;
-
-typedef struct {
- GtkTable parent;
-
- ETreePriv *priv;
-} ETree;
-
-typedef struct {
- GtkTableClass parent_class;
-
- void (*cursor_change) (ETree *et, int row, ETreePath path);
- void (*cursor_activated) (ETree *et, int row, ETreePath path);
- void (*selection_change) (ETree *et);
- void (*double_click) (ETree *et, int row, ETreePath path, int col, GdkEvent *event);
- gint (*right_click) (ETree *et, int row, ETreePath path, int col, GdkEvent *event);
- gint (*click) (ETree *et, int row, ETreePath path, int col, GdkEvent *event);
- gint (*key_press) (ETree *et, int row, ETreePath path, int col, GdkEvent *event);
-
- void (*set_scroll_adjustments) (ETree *tree,
- GtkAdjustment *hadjustment,
- GtkAdjustment *vadjustment);
-
- /* Source side drag signals */
- void (* tree_drag_begin) (ETree *tree,
- int row,
- ETreePath path,
- int col,
- GdkDragContext *context);
- void (* tree_drag_end) (ETree *tree,
- int row,
- ETreePath path,
- int col,
- GdkDragContext *context);
- void (* tree_drag_data_get) (ETree *tree,
- int row,
- ETreePath path,
- int col,
- GdkDragContext *context,
- GtkSelectionData *selection_data,
- guint info,
- guint time);
- void (* tree_drag_data_delete) (ETree *tree,
- int row,
- ETreePath path,
- int col,
- GdkDragContext *context);
-
- /* Target side drag signals */
- void (* tree_drag_leave) (ETree *tree,
- int row,
- ETreePath path,
- int col,
- GdkDragContext *context,
- guint time);
- gboolean (* tree_drag_motion) (ETree *tree,
- int row,
- ETreePath path,
- int col,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time);
- gboolean (* tree_drag_drop) (ETree *tree,
- int row,
- ETreePath path,
- int col,
- GdkDragContext *context,
- gint x,
- gint y,
- guint time);
- void (* tree_drag_data_received) (ETree *tree,
- int row,
- ETreePath path,
- int col,
- GdkDragContext *context,
- gint x,
- gint y,
- GtkSelectionData *selection_data,
- guint info,
- guint time);
-} ETreeClass;
-
-GtkType e_tree_get_type (void);
-ETree *e_tree_construct (ETree *e_tree,
- ETreeModel *etm,
- ETableExtras *ete,
- const char *spec,
- const char *state);
-GtkWidget *e_tree_new (ETreeModel *etm,
- ETableExtras *ete,
- const char *spec,
- const char *state);
-
-/* Create an ETree using files. */
-ETree *e_tree_construct_from_spec_file (ETree *e_tree,
- ETreeModel *etm,
- ETableExtras *ete,
- const char *spec_fn,
- const char *state_fn);
-GtkWidget *e_tree_new_from_spec_file (ETreeModel *etm,
- ETableExtras *ete,
- const char *spec_fn,
- const char *state_fn);
-
-/* To save the state */
-gchar *e_tree_get_state (ETree *e_tree);
-void e_tree_save_state (ETree *e_tree,
- const gchar *filename);
-ETableState *e_tree_get_state_object (ETree *e_tree);
-
-/* note that it is more efficient to provide the state at creation time */
-void e_tree_set_state (ETree *e_tree,
- const gchar *state);
-void e_tree_set_state_object (ETree *e_tree,
- ETableState *state);
-void e_tree_load_state (ETree *e_tree,
- const gchar *filename);
-void e_tree_set_cursor (ETree *e_tree,
- ETreePath path);
-
-/* NULL means we don't have the cursor. */
-ETreePath e_tree_get_cursor (ETree *e_tree);
-void e_tree_selected_row_foreach (ETree *e_tree,
- EForeachFunc callback,
- gpointer closure);
-#ifdef E_TREE_USE_TREE_SELECTION
-void e_tree_selected_path_foreach (ETree *e_tree,
- ETreeForeachFunc callback,
- gpointer closure);
-#endif
-gint e_tree_selected_count (ETree *e_tree);
-EPrintable *e_tree_get_printable (ETree *e_tree);
-gint e_tree_get_next_row (ETree *e_tree,
- gint model_row);
-gint e_tree_get_prev_row (ETree *e_tree,
- gint model_row);
-gint e_tree_model_to_view_row (ETree *e_tree,
- gint model_row);
-gint e_tree_view_to_model_row (ETree *e_tree,
- gint view_row);
-void e_tree_get_cell_at (ETree *tree,
- int x,
- int y,
- int *row_return,
- int *col_return);
-void e_tree_get_cell_geometry (ETree *tree,
- int row,
- int col,
- int *x_return,
- int *y_return,
- int *width_return,
- int *height_return);
-
-
-/* Drag & drop stuff. */
-/* Target */
-void e_tree_drag_get_data (ETree *tree,
- int row,
- int col,
- GdkDragContext *context,
- GdkAtom target,
- guint32 time);
-void e_tree_drag_highlight (ETree *tree,
- int row,
- int col); /* col == -1 to highlight entire row. */
-void e_tree_drag_unhighlight (ETree *tree);
-void e_tree_drag_dest_set (ETree *tree,
- GtkDestDefaults flags,
- const GtkTargetEntry *targets,
- gint n_targets,
- GdkDragAction actions);
-void e_tree_drag_dest_set_proxy (ETree *tree,
- GdkWindow *proxy_window,
- GdkDragProtocol protocol,
- gboolean use_coordinates);
-
-/* There probably should be functions for setting the targets
- * as a GtkTargetList
- */
-void e_tree_drag_dest_unset (GtkWidget *widget);
-
-/* Source side */
-void e_tree_drag_source_set (ETree *tree,
- GdkModifierType start_button_mask,
- const GtkTargetEntry *targets,
- gint n_targets,
- GdkDragAction actions);
-void e_tree_drag_source_unset (ETree *tree);
-
-/* There probably should be functions for setting the targets
- * as a GtkTargetList
- */
-GdkDragContext *e_tree_drag_begin (ETree *tree,
- int row,
- int col,
- GtkTargetList *targets,
- GdkDragAction actions,
- gint button,
- GdkEvent *event);
-
-/* selection stuff */
-void e_tree_select_all (ETree *tree);
-void e_tree_invert_selection (ETree *tree);
-
-
-/* Adapter functions */
-gboolean e_tree_node_is_expanded (ETree *et,
- ETreePath path);
-void e_tree_node_set_expanded (ETree *et,
- ETreePath path,
- gboolean expanded);
-void e_tree_node_set_expanded_recurse (ETree *et,
- ETreePath path,
- gboolean expanded);
-void e_tree_root_node_set_visible (ETree *et,
- gboolean visible);
-ETreePath e_tree_node_at_row (ETree *et,
- int row);
-int e_tree_row_of_node (ETree *et,
- ETreePath path);
-gboolean e_tree_root_node_is_visible (ETree *et);
-void e_tree_show_node (ETree *et,
- ETreePath path);
-void e_tree_save_expanded_state (ETree *et,
- char *filename);
-void e_tree_load_expanded_state (ETree *et,
- char *filename);
-int e_tree_row_count (ETree *et);
-GtkWidget *e_tree_get_tooltip (ETree *et);
-
-END_GNOME_DECLS
-
-#endif /* _E_TREE_H_ */
-
diff --git a/widgets/table/image1.png b/widgets/table/image1.png
deleted file mode 100644
index 8326ac241f..0000000000
--- a/widgets/table/image1.png
+++ /dev/null
Binary files differ
diff --git a/widgets/table/image2.png b/widgets/table/image2.png
deleted file mode 100644
index e6a4c75dbe..0000000000
--- a/widgets/table/image2.png
+++ /dev/null
Binary files differ
diff --git a/widgets/table/image3.png b/widgets/table/image3.png
deleted file mode 100644
index 50e16e8620..0000000000
--- a/widgets/table/image3.png
+++ /dev/null
Binary files differ
diff --git a/widgets/table/remove-col.xpm b/widgets/table/remove-col.xpm
deleted file mode 100644
index ff1024f0c9..0000000000
--- a/widgets/table/remove-col.xpm
+++ /dev/null
@@ -1,22 +0,0 @@
-/* XPM */
-static char * remove_col_xpm[] = {
-"16 16 3 1",
-" c None",
-". c #000000",
-"+ c #FF0000",
-"... ...",
-".++. .++.",
-".+++. .+++.",
-" .+++. .+++. ",
-" .+++. .+++. ",
-" .+++..+++. ",
-" .++++++. ",
-" .++++. ",
-" .++++. ",
-" .++++++. ",
-" .+++..+++. ",
-" .+++. .+++. ",
-" .+++. .+++. ",
-".+++. .+++.",
-".++. .++.",
-"... ..."};
diff --git a/widgets/table/sample.table b/widgets/table/sample.table
deleted file mode 100644
index 45c8ff0691..0000000000
--- a/widgets/table/sample.table
+++ /dev/null
@@ -1,11 +0,0 @@
-Col1 Col2 Address Title Dorks
-c1.a c2.a a.a tit-1 DorkA
-c1.b c2.b a.b tit-2 DDork
-c1.c c2.c a.c tit-1 DorkB
-c1.d c2.d a.d tit-2 ADork
-c1.e c2.e a.e tit-1 DorkC
-c1.f c2.f a.f tit-2 UDork
-c1.g c2.g a.g tit-3 Dork---
-j k k tit-1 DorkA
-
-
diff --git a/widgets/table/spec.xml b/widgets/table/spec.xml
deleted file mode 100644
index a8e524484c..0000000000
--- a/widgets/table/spec.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<ETableSpecification no-headers="false" click-to-add="false"
- draw-grid="true" cursor-mode="simple"
- _click-to-add-message="">
- <ETableColumn model_col="0" _title="Email" expansion="1.0" minimum_width="20" resizable="true" cell="cell_left_just" compare="string"/>
- <ETableColumn model_col="1" _title="Full Name" expansion="1.0" minimum_width="20" resizable="true" cell="cell_left_just" compare="string"/>
- <ETableColumn model_col="2" _title="Address" expansion="1.0" minimum_width="20" resizable="true" cell="cell_left_just" compare="string"/>
- <ETableColumn model_col="3" _title="Phone" expansion="1.0" minimum_width="20" resizable="true" cell="cell_left_just" compare="string"/>
- <ETableState>
- <column source="0"/>
- <column source="3"/>
- <column source="1"/>
- <column source="2"/>
- <grouping>
- <group column="2" ascending="true">
- <leaf column="1" ascending="true"/>
- </group>
- </grouping>
- <!-- Column that's been added by hand. Not implemented yet.
- <ETableColumn model_col="custom-string" _title="Custom" expansion="1.0" minimum_widgth="20" resizable="true" cell="string" compare="string"/> -->
- </ETableState>
-</ETableSpecification>
diff --git a/widgets/table/table-test.c b/widgets/table/table-test.c
deleted file mode 100644
index dd0dee4d24..0000000000
--- a/widgets/table/table-test.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Test code for the ETable package
- *
- * Author:
- * Miguel de Icaza (miguel@gnu.org)
- */
-#include <config.h>
-#include <stdio.h>
-#include <string.h>
-#include <fcntl.h>
-#include <gnome.h>
-#include "gal/e-util/e-cursors.h"
-#include "table-test.h"
-
-int
-main (int argc, char *argv [])
-{
-
- if (isatty (0)){
- int fd;
-
- close (0);
- fd = open ("sample.table", O_RDONLY);
- if (fd == -1){
- fprintf (stderr, "Could not find sample.table, try feeding a table on stdin");
- exit (1);
- }
- dup2 (fd, 0);
- }
-
- gnome_init ("TableTest", "TableTest", argc, argv);
- e_cursors_init ();
-
-
-/* table_browser_test (); */
-/* multi_cols_test (); */
-/* check_test (); */
-
- e_table_test ();
-
- gtk_main ();
-
- e_cursors_shutdown ();
- return 0;
-}
diff --git a/widgets/table/table-test.h b/widgets/table/table-test.h
deleted file mode 100644
index ad8cfcc083..0000000000
--- a/widgets/table/table-test.h
+++ /dev/null
@@ -1,4 +0,0 @@
-void table_browser_test (void);
-void multi_cols_test (void);
-void check_test (void);
-void e_table_test (void);
diff --git a/widgets/table/test-check.c b/widgets/table/test-check.c
deleted file mode 100644
index 0cf1baf48a..0000000000
--- a/widgets/table/test-check.c
+++ /dev/null
@@ -1,206 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Test code for the ETable package
- *
- * Author:
- * Miguel de Icaza (miguel@gnu.org)
- */
-#include <config.h>
-#include <stdio.h>
-#include <string.h>
-#include <gnome.h>
-#include "e-table-simple.h"
-#include "e-table-header.h"
-#include "e-table-header-item.h"
-#include "e-table-item.h"
-#include "gal/widgets/e-cursors.h"
-#include "gal/widgets/e-canvas-utils.h"
-#include "gal/widgets/e-canvas.h"
-#include "gal/util/e-util.h"
-#include "e-cell-text.h"
-#include "e-cell-checkbox.h"
-
-#include "table-test.h"
-
-#define LINES 4
-
-static struct {
- int value;
- char *string;
-} my_table [LINES] = {
- { 0, "Buy food" },
- { 1, "Breathe " },
- { 0, "Cancel gdb session with shrink" },
- { 1, "Make screenshots" },
-};
-/*
- * ETableSimple callbacks
- */
-static int
-col_count (ETableModel *etc, void *data)
-{
- return 2;
-}
-
-static int
-row_count (ETableModel *etc, void *data)
-{
- return LINES;
-}
-
-static void *
-value_at (ETableModel *etc, int col, int row, void *data)
-{
- g_assert (col < 2);
- g_assert (row < LINES);
-
- if (col == 0)
- return GINT_TO_POINTER (my_table [row].value);
- else
- return my_table [row].string;
-
-}
-
-static void
-set_value_at (ETableModel *etc, int col, int row, const void *val, void *data)
-{
- g_assert (col < 2);
- g_assert (row < LINES);
-
- if (col == 0) {
- my_table [row].value = GPOINTER_TO_INT (val);
- printf ("Value at %d,%d set to %d\n", col, row, GPOINTER_TO_INT (val));
- } else {
- my_table [row].string = g_strdup (val);
- printf ("Value at %d,%d set to %s\n", col, row, (char *) val);
- }
-}
-
-static gboolean
-is_cell_editable (ETableModel *etc, int col, int row, void *data)
-{
- return TRUE;
-}
-
-static void *
-duplicate_value (ETableModel *etc, int col, const void *value, void *data)
-{
- if (col == 0) {
- return (void *) value;
- } else {
- return g_strdup (value);
- }
-}
-
-static void
-free_value (ETableModel *etc, int col, void *value, void *data)
-{
- if (col != 0) {
- g_free (value);
- }
-}
-
-static void *
-initialize_value (ETableModel *etc, int col, void *data)
-{
- if (col == 0)
- return NULL;
- else
- return g_strdup ("");
-}
-
-static gboolean
-value_is_empty (ETableModel *etc, int col, const void *value, void *data)
-{
- if (col == 0)
- return value == NULL;
- else
- return !(value && *(char *)value);
-}
-
-static char *
-value_to_string (ETableModel *etc, int col, const void *value, void *data)
-{
- if (col == 0)
- return g_strdup_printf("%d", (int) value);
- else
- return g_strdup(value);
-}
-
-static void
-set_canvas_size (GnomeCanvas *canvas, GtkAllocation *alloc)
-{
- gnome_canvas_set_scroll_region (canvas, 0, 0, alloc->width, alloc->height);
-}
-
-void
-check_test (void)
-{
- GtkWidget *canvas, *window;
- ETableModel *e_table_model;
- ETableHeader *e_table_header;
- ETableCol *col_0, *col_1;
- ECell *cell_left_just, *cell_image_check;
- GdkPixbuf *pixbuf;
- GnomeCanvasItem *item;
-
- gtk_widget_push_visual (gdk_rgb_get_visual ());
- gtk_widget_push_colormap (gdk_rgb_get_cmap ());
-
- e_table_model = e_table_simple_new (
- col_count, row_count, value_at,
- set_value_at, is_cell_editable,
- duplicate_value, free_value,
- initialize_value, value_is_empty,
- value_to_string,
- NULL);
-
- /*
- * Header
- */
- e_table_header = e_table_header_new ();
-
- cell_left_just = e_cell_text_new (e_table_model, NULL, GTK_JUSTIFY_LEFT);
-
- cell_image_check = e_cell_checkbox_new ();
- pixbuf = gdk_pixbuf_new_from_file ("clip.png");
- col_0 = e_table_col_new_with_pixbuf (0, pixbuf, 0.0, 18, cell_image_check, g_int_compare, TRUE);
- gdk_pixbuf_unref (pixbuf);
- e_table_header_add_column (e_table_header, col_0, 0);
-
- col_1 = e_table_col_new (1, "Item Name", 1.0, 20, cell_left_just, g_str_compare, TRUE);
- e_table_header_add_column (e_table_header, col_1, 1);
- e_table_col_set_arrow (col_1, E_TABLE_COL_ARROW_DOWN);
-
- /*
- * GUI
- */
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- canvas = e_canvas_new ();
-
- gtk_signal_connect (GTK_OBJECT (canvas), "size_allocate",
- GTK_SIGNAL_FUNC (set_canvas_size), NULL);
-
- gtk_container_add (GTK_CONTAINER (window), canvas);
- gtk_widget_show_all (window);
- gnome_canvas_item_new (
- gnome_canvas_root (GNOME_CANVAS (canvas)),
- e_table_header_item_get_type (),
- "ETableHeader", e_table_header,
- NULL);
-
- item = gnome_canvas_item_new (
- gnome_canvas_root (GNOME_CANVAS (canvas)),
- e_table_item_get_type (),
- "ETableHeader", e_table_header,
- "ETableModel", e_table_model,
- "drawgrid", TRUE,
- "drawfocus", TRUE,
-#if 0
- "spreadsheet", TRUE,
-#endif
- "cursor_mode", E_TABLE_CURSOR_SIMPLE,
- NULL);
- e_canvas_item_move_absolute (item, 0, 30);
-}
-
diff --git a/widgets/table/test-cols.c b/widgets/table/test-cols.c
deleted file mode 100644
index a82dae639a..0000000000
--- a/widgets/table/test-cols.c
+++ /dev/null
@@ -1,250 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Test code for the ETable package
- *
- * Author:
- * Miguel de Icaza (miguel@gnu.org)
- */
-#include <config.h>
-#include <stdio.h>
-#include <string.h>
-#include <gnome.h>
-#include "gal/widgets/e-canvas-utils.h"
-#include "gal/widgets/e-canvas.h"
-#include "gal/widgets/e-cursors.h"
-#include "gal/util/e-util.h"
-#include "e-table-simple.h"
-#include "e-table-header.h"
-#include "e-table-header-item.h"
-#include "e-table-item.h"
-#include "e-cell-text.h"
-#include "e-cell-toggle.h"
-
-#include "table-test.h"
-
-#define LINES 4
-
-static struct {
- int value;
- char *string;
-} my_table [LINES] = {
- { 0, "You are not" },
- { 1, "A beautiful and unique " },
- { 0, "Snowflake" },
- { 2, "You are not your wallet" },
-};
-/*
- * ETableSimple callbacks
- */
-static int
-col_count (ETableModel *etc, void *data)
-{
- return 2;
-}
-
-static int
-row_count (ETableModel *etc, void *data)
-{
- return LINES;
-}
-
-static void *
-value_at (ETableModel *etc, int col, int row, void *data)
-{
- g_assert (col < 2);
- g_assert (row < LINES);
-
- if (col == 0)
- return GINT_TO_POINTER (my_table [row].value);
- else
- return my_table [row].string;
-
-}
-
-static void
-set_value_at (ETableModel *etc, int col, int row, const void *val, void *data)
-{
- g_assert (col < 2);
- g_assert (row < LINES);
-
- if (col == 0){
- my_table [row].value = GPOINTER_TO_INT (val);
- printf ("Value at %d,%d set to %d\n", col, row, GPOINTER_TO_INT (val));
- } else {
- my_table [row].string = g_strdup (val);
- printf ("Value at %d,%d set to %s\n", col, row, (char *) val);
- }
-}
-
-static gboolean
-is_cell_editable (ETableModel *etc, int col, int row, void *data)
-{
- return TRUE;
-}
-
-static void *
-duplicate_value (ETableModel *etc, int col, const void *value, void *data)
-{
- if (col == 0){
- return (void *)value;
- } else {
- return g_strdup (value);
- }
-}
-
-static void
-free_value (ETableModel *etc, int col, void *value, void *data)
-{
- if (col != 0){
- g_free (value);
- }
-}
-
-static void *
-initialize_value (ETableModel *etc, int col, void *data)
-{
- if (col == 0)
- return NULL;
- else
- return g_strdup ("");
-}
-
-static gboolean
-value_is_empty (ETableModel *etc, int col, const void *value, void *data)
-{
- if (col == 0)
- return value == NULL;
- else
- return !(value && *(char *)value);
-}
-
-static char *
-value_to_string (ETableModel *etc, int col, const void *value, void *data)
-{
- if (col == 0)
- return g_strdup_printf("%d", (int) value);
- else
- return g_strdup(value);
-}
-
-static void
-set_canvas_size (GnomeCanvas *canvas, GtkAllocation *alloc)
-{
- gnome_canvas_set_scroll_region (canvas, 0, 0, alloc->width, alloc->height);
-}
-
-void
-multi_cols_test (void)
-{
- GtkWidget *canvas, *window;
- ETableModel *e_table_model;
- ETableHeader *e_table_header, *e_table_header_multiple;
- ETableCol *col_0, *col_1;
- ECell *cell_left_just, *cell_image_toggle;
- GnomeCanvasItem *item;
-
- gtk_widget_push_visual (gdk_rgb_get_visual ());
- gtk_widget_push_colormap (gdk_rgb_get_cmap ());
-
- e_table_model = e_table_simple_new (
- col_count, row_count, value_at,
- set_value_at, is_cell_editable,
- duplicate_value, free_value,
- initialize_value, value_is_empty,
- value_to_string,
- NULL);
-
- /*
- * Header
- */
- e_table_header = e_table_header_new ();
-
- cell_left_just = e_cell_text_new (e_table_model, NULL, GTK_JUSTIFY_LEFT);
-
- {
- GdkPixbuf **images = g_new (GdkPixbuf *, 3);
- int i;
-
- images [0] = gdk_pixbuf_new_from_file ("image1.png");
- images [1] = gdk_pixbuf_new_from_file ("image2.png");
- images [2] = gdk_pixbuf_new_from_file ("image3.png");
-
- cell_image_toggle = e_cell_toggle_new (0, 3, images);
-
- for (i = 0; i < 3; i++)
- gdk_pixbuf_unref (images [i]);
-
- g_free (images);
- }
-
- col_1 = e_table_col_new (1, "Item Name", 1.0, 20, cell_left_just, g_str_compare, TRUE);
- e_table_header_add_column (e_table_header, col_1, 0);
-
- col_0 = e_table_col_new (0, "A", 0.0, 48, cell_image_toggle, g_int_compare, TRUE);
- e_table_header_add_column (e_table_header, col_0, 1);
-
- /*
- * Second test
- */
- e_table_header_multiple = e_table_header_new ();
- e_table_header_add_column (e_table_header_multiple, col_0, 0);
- e_table_header_add_column (e_table_header_multiple, col_1, 1);
- e_table_header_add_column (e_table_header_multiple, col_1, 2);
-
- /*
- * GUI
- */
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- canvas = e_canvas_new ();
-
- gtk_signal_connect (GTK_OBJECT (canvas), "size_allocate",
- GTK_SIGNAL_FUNC (set_canvas_size), NULL);
-
- gtk_container_add (GTK_CONTAINER (window), canvas);
- gtk_widget_show_all (window);
-
- gnome_canvas_item_new (
- gnome_canvas_root (GNOME_CANVAS (canvas)),
- e_table_header_item_get_type (),
- "ETableHeader", e_table_header,
- NULL);
-
- item = gnome_canvas_item_new (
- gnome_canvas_root (GNOME_CANVAS (canvas)),
- e_table_item_get_type (),
- "ETableHeader", e_table_header,
- "ETableModel", e_table_model,
- "drawgrid", TRUE,
- "drawfocus", TRUE,
- "cursor_mode", E_TABLE_CURSOR_SIMPLE,
-#if 0
- "spreadsheet", TRUE,
-#endif
- NULL);
-
- e_canvas_item_move_absolute (item, 0, 30);
-
- gnome_canvas_item_new (
- gnome_canvas_root (GNOME_CANVAS (canvas)),
- e_table_header_item_get_type (),
- "ETableHeader", e_table_header_multiple,
- NULL);
- item = gnome_canvas_item_new (
- gnome_canvas_root (GNOME_CANVAS (canvas)),
- e_table_item_get_type (),
- "ETableHeader", e_table_header_multiple,
- "ETableModel", e_table_model,
- "drawgrid", TRUE,
- "drawfocus", TRUE,
-#if 0
- "spreadsheet", TRUE,
-#endif
- "cursor_mode", E_TABLE_CURSOR_SIMPLE,
- NULL);
- e_canvas_item_move_absolute (item, 300, 30);
-}
-
-
-
-
-
diff --git a/widgets/table/test-table.c b/widgets/table/test-table.c
deleted file mode 100644
index 314df1000e..0000000000
--- a/widgets/table/test-table.c
+++ /dev/null
@@ -1,394 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Test code for the ETable package
- *
- * Author:
- * Miguel de Icaza (miguel@gnu.org)
- */
-#include <config.h>
-#include <stdio.h>
-#include <string.h>
-#include <gnome.h>
-#include "gal/widgets/e-cursors.h"
-#include "gal/widgets/e-canvas.h"
-#include "e-table-simple.h"
-#include "e-table-header.h"
-#include "e-table-header-item.h"
-#include "e-table-item.h"
-#include "e-cell-text.h"
-#include "e-table.h"
-#include "e-table-config.h"
-
-#include "table-test.h"
-
-char buffer [1024];
-char **column_labels;
-char ***table_data;
-int cols = 0;
-int lines = 0;
-int lines_alloc = 0;
-
-static void
-parse_headers ()
-{
- char *p, *s;
- int in_value = 0, i;
-
- fgets (buffer, sizeof (buffer)-1, stdin);
-
- for (p = buffer; *p; p++){
- if (*p == ' ' || *p == '\t'){
- if (in_value){
- cols++;
- in_value = 0;
- }
- } else
- in_value = 1;
- }
- if (in_value)
- cols++;
-
- if (!cols){
- fprintf (stderr, "No columns in first row\n");
- exit (1);
- }
-
- column_labels = g_new0 (char *, cols);
-
- p = buffer;
- for (i = 0; (s = strtok (p, " \t")) != NULL; i++){
- column_labels [i] = g_strdup (s);
- if (strchr (column_labels [i], '\n'))
- *strchr (column_labels [i], '\n') = 0;
- p = NULL;
- }
-
- printf ("%d headers:\n", cols);
- for (i = 0; i < cols; i++){
- printf ("header %d: %s\n", i, column_labels [i]);
- }
-}
-
-static char **
-load_line (char *buffer, int cols)
-{
- char **line = g_new0 (char *, cols);
- char *p;
- int i;
-
- for (i = 0; i < cols; i++){
- p = strtok (buffer, " \t\n");
- if (p == NULL){
- for (; i < cols; i++)
- line [i] = g_strdup ("");
- return line;
- } else
- line [i] = g_strdup (p);
- buffer = NULL;
- }
- return line;
-}
-
-static void
-append_line (char **line)
-{
- if (lines <= lines_alloc){
- lines_alloc = lines + 50;
- table_data = g_renew (char **, table_data, lines_alloc);
- }
- table_data [lines] = line;
- lines++;
-}
-
-static void
-load_data ()
-{
- int i;
-
- {
- static int loaded;
-
- if (loaded)
- return;
-
- loaded = TRUE;
- }
-
-
- parse_headers ();
-
- while (fgets (buffer, sizeof (buffer)-1, stdin) != NULL){
- char **line;
-
- if (buffer [0] == '\n')
- continue;
- line = load_line (buffer, cols);
- append_line (line);
- }
-
- for (i = 0; i < lines; i++){
- int j;
-
- printf ("Line %d: ", i);
- for (j = 0; j < cols; j++)
- printf ("[%s] ", table_data [i][j]);
- printf ("\n");
- }
-}
-
-/*
- * ETableSimple callbacks
- */
-static int
-col_count (ETableModel *etc, void *data)
-{
- return cols;
-}
-
-static int
-row_count (ETableModel *etc, void *data)
-{
- return lines;
-}
-
-static void *
-value_at (ETableModel *etc, int col, int row, void *data)
-{
- g_assert (col < cols);
- g_assert (row < lines);
-
- return (void *) table_data [row][col];
-}
-
-static void
-set_value_at (ETableModel *etc, int col, int row, const void *val, void *data)
-{
- g_assert (col < cols);
- g_assert (row < lines);
-
- g_free (table_data [row][col]);
- table_data [row][col] = g_strdup (val);
-
- printf ("Value at %d,%d set to %s\n", col, row, (char *) val);
-}
-
-static gboolean
-is_cell_editable (ETableModel *etc, int col, int row, void *data)
-{
- return TRUE;
-}
-
-static void *
-duplicate_value (ETableModel *etc, int col, const void *value, void *data)
-{
- return g_strdup (value);
-}
-
-static void
-free_value (ETableModel *etc, int col, void *value, void *data)
-{
- g_free (value);
-}
-
-static void *
-initialize_value (ETableModel *etc, int col, void *data)
-{
- return g_strdup ("");
-}
-
-static gboolean
-value_is_empty (ETableModel *etc, int col, const void *value, void *data)
-{
- return !(value && *(char *)value);
-}
-
-static char *
-value_to_string (ETableModel *etc, int col, const void *value, void *data)
-{
- return g_strdup(value);
-}
-
-static void
-set_canvas_size (GnomeCanvas *canvas, GtkAllocation *alloc)
-{
- gnome_canvas_set_scroll_region (canvas, 0, 0, alloc->width, alloc->height);
-}
-
-void
-table_browser_test (void)
-{
- GtkWidget *canvas, *window;
- ETableModel *e_table_model;
- ETableHeader *e_table_header;
- ECell *cell_left_just;
- GnomeCanvasItem *group;
- int i;
-
- load_data ();
-
- /*
- * Data model
- */
- e_table_model = e_table_simple_new (
- col_count, row_count, value_at,
- set_value_at, is_cell_editable,
- duplicate_value, free_value,
- initialize_value, value_is_empty,
- value_to_string,
- NULL);
-
- /*
- * Header
- */
- e_table_header = e_table_header_new ();
- cell_left_just = e_cell_text_new (e_table_model, NULL, GTK_JUSTIFY_LEFT);
-
- for (i = 0; i < cols; i++){
- ETableCol *ecol = e_table_col_new (
- i, column_labels [i],
- 1.0, 20, cell_left_just,
- g_str_compare, TRUE);
-
- e_table_header_add_column (e_table_header, ecol, i);
- }
-
- /*
- * Setup GUI
- */
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- canvas = e_canvas_new ();
-
- gtk_signal_connect (GTK_OBJECT (canvas), "size_allocate",
- GTK_SIGNAL_FUNC (set_canvas_size), NULL);
-
- gtk_container_add (GTK_CONTAINER (window), canvas);
- gtk_widget_show_all (window);
- gnome_canvas_item_new (
- gnome_canvas_root (GNOME_CANVAS (canvas)),
- e_table_header_item_get_type (),
- "ETableHeader", e_table_header,
- NULL);
-
- group = gnome_canvas_item_new (
- gnome_canvas_root (GNOME_CANVAS (canvas)),
- gnome_canvas_group_get_type (),
- "x", 30.0,
- "y", 30.0,
- NULL);
-
- gnome_canvas_item_new (
- GNOME_CANVAS_GROUP (group),
- e_table_item_get_type (),
- "ETableHeader", e_table_header,
- "ETableModel", e_table_model,
- "drawgrid", TRUE,
- "drawfocus", TRUE,
-#if 0
- "spreadsheet", TRUE,
-#endif
- NULL);
-}
-
-static void
-save_spec (GtkWidget *button, ETable *e_table)
-{
- e_table_save_specification (e_table, "e-table-test.xml");
-}
-
-static void
-row_selection_test (ETable *table, int row, gboolean selected)
-{
- if (selected)
- g_print ("Row %d selected\n", row);
- else
- g_print ("Row %d unselected\n", row);
-}
-
-static void
-toggle_grid (void *nothing, ETable *etable)
-{
- static gboolean shown;
-
- gtk_object_get (GTK_OBJECT (etable), "drawgrid", &shown, NULL);
- gtk_object_set (GTK_OBJECT (etable), "drawgrid", !shown, NULL);
-}
-
-static void
-do_e_table_demo (const char *spec)
-{
- GtkWidget *e_table, *window, *frame, *vbox, *button, *bhide;
- ECell *cell_left_just;
- ETableHeader *full_header;
- int i;
-
- /*
- * Data model
- */
- static ETableModel *e_table_model = NULL;
-
- if (e_table_model == NULL)
- e_table_model =
- e_table_simple_new (col_count, row_count, value_at,
- set_value_at, is_cell_editable,
- duplicate_value, free_value,
- initialize_value, value_is_empty,
- value_to_string,
- NULL);
-
- full_header = e_table_header_new ();
- cell_left_just = e_cell_text_new (e_table_model, NULL, GTK_JUSTIFY_LEFT);
-
- for (i = 0; i < cols; i++){
- ETableCol *ecol = e_table_col_new (
- i, column_labels [i],
- 1.0, 20, cell_left_just,
- g_str_compare, TRUE);
-
- e_table_header_add_column (full_header, ecol, i);
- }
-
-
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- frame = gtk_frame_new (NULL);
- e_table = e_table_new (full_header, e_table_model, spec);
- gtk_signal_connect (GTK_OBJECT(e_table), "row_selection",
- GTK_SIGNAL_FUNC(row_selection_test), NULL);
-
- vbox = gtk_vbox_new (FALSE, 0);
- gtk_box_pack_start (GTK_BOX (vbox), e_table, TRUE, TRUE, 0);
- gtk_container_add (GTK_CONTAINER (frame), vbox);
- gtk_container_add (GTK_CONTAINER (window), frame);
-
- /*
- * gadgets
- */
- button = gtk_button_new_with_label ("Save spec");
- gtk_signal_connect (GTK_OBJECT (button), "clicked",
- GTK_SIGNAL_FUNC (save_spec), e_table);
- gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
-
- bhide = gtk_button_new_with_label ("Toggle Grid");
- gtk_signal_connect (GTK_OBJECT (bhide), "clicked",
- GTK_SIGNAL_FUNC (toggle_grid), e_table);
- gtk_box_pack_start (GTK_BOX (vbox), bhide, FALSE, FALSE, 0);
-
- gtk_widget_set_usize (window, 200, 200);
- gtk_widget_show_all (window);
-
- if (getenv ("TEST")){
- e_table_do_gui_config (NULL, E_TABLE(e_table));
- }
-}
-
-void
-e_table_test (void)
-{
- load_data ();
-
- if (1){/*getenv ("DO")){*/
- do_e_table_demo ("<ETableSpecification> <columns-shown> <column> 0 </column> <column> 1 </column> <column> 2 </column> <column> 3 </column> <column> 4 </column> </columns-shown> <grouping> <leaf column=\"3\" ascending=\"true\"/> </grouping> </ETableSpecification>");
- do_e_table_demo ("<ETableSpecification> <columns-shown> <column> 0 </column> <column> 0 </column> <column> 1 </column> <column> 2 </column> <column> 3 </column> <column> 4 </column> </columns-shown> <grouping> <group column=\"3\" ascending=\"true\"> <group column=\"4\" ascending=\"false\"> <leaf column=\"2\" ascending=\"true\"/> </group> </group> </grouping> </ETableSpecification>");
- }
- do_e_table_demo ("<ETableSpecification> <columns-shown> <column> 0 </column> <column> 1 </column> <column> 2 </column> <column> 3 </column> <column> 4 </column> </columns-shown> <grouping> <group column=\"4\" ascending=\"true\"> <leaf column=\"2\" ascending=\"true\"/> </group> </grouping> </ETableSpecification>");
- do_e_table_demo ("<ETableSpecification> <columns-shown> <column> 0 </column> <column> 1 </column> <column> 2 </column> <column> 3 </column> <column> 4 </column> </columns-shown> <grouping> <group column=\"3\" ascending=\"true\"> <leaf column=\"2\" ascending=\"true\"/> </group> </grouping> </ETableSpecification>");
-}
diff --git a/widgets/table/tree-expanded.xpm b/widgets/table/tree-expanded.xpm
deleted file mode 100644
index d9bda3694d..0000000000
--- a/widgets/table/tree-expanded.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * tree_expanded_xpm[] = {
-"16 16 4 1",
-" c None",
-". c #FFFFFF",
-"* c #000000",
-"+ c #666666",
-" ",
-" ",
-" ",
-" ",
-" +++++++++ ",
-" +.......+ ",
-" +.......+ ",
-" +.......+ ",
-" +.*****.+ ",
-" +.......+ ",
-" +.......+ ",
-" +.......+ ",
-" +++++++++ ",
-" ",
-" ",
-" "};
diff --git a/widgets/table/tree-unexpanded.xpm b/widgets/table/tree-unexpanded.xpm
deleted file mode 100644
index e1b48448ba..0000000000
--- a/widgets/table/tree-unexpanded.xpm
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */
-static char * tree_unexpanded_xpm[] = {
-"16 16 4 1",
-" c None",
-". c #FFFFFF",
-"* c #000000",
-"+ c #666666",
-" ",
-" ",
-" ",
-" ",
-" +++++++++ ",
-" +.......+ ",
-" +...*...+ ",
-" +...*...+ ",
-" +.*****.+ ",
-" +...*...+ ",
-" +...*...+ ",
-" +.......+ ",
-" +++++++++ ",
-" ",
-" ",
-" "};
diff --git a/widgets/text/.cvsignore b/widgets/text/.cvsignore
deleted file mode 100644
index 792b9f5af2..0000000000
--- a/widgets/text/.cvsignore
+++ /dev/null
@@ -1,11 +0,0 @@
-.deps
-.libs
-.pure
-Makefile
-Makefile.in
-*.lo
-*.la
-e-text-test
-e-entry-test
-e-text-model-test
-e-completion-test \ No newline at end of file
diff --git a/widgets/text/e-completion-test.c b/widgets/text/e-completion-test.c
deleted file mode 100644
index 8550e9a10f..0000000000
--- a/widgets/text/e-completion-test.c
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- ECompleteTest
-*/
-
-#include <gnome.h>
-#include "e-completion.h"
-#include "e-entry.h"
-
-#define TIMEOUT 10
-
-/* Dictionary Lookup test */
-
-static gint word_count = 0;
-static gchar **word_array = NULL;
-
-static void
-read_dict (void)
-{
- FILE *in = fopen ("/usr/share/dict/words", "r");
- gchar buffer[128];
- GList *word_list = NULL, *iter;
- gint i;
-
- while (fgets (buffer, 128, in)) {
- gint len = strlen (buffer);
- if (len > 0 && buffer[len-1] == '\n')
- buffer[len-1] = '\0';
- word_list = g_list_prepend (word_list, g_strdup (buffer));
- ++word_count;
- }
- fclose (in);
-
- word_array = g_new (gchar *, word_count);
- i = word_count-1;
- for (iter = word_list; iter != NULL; iter = g_list_next (iter)) {
- word_array[i] = (gchar *)iter->data;
- --i;
- }
-}
-
-static gint
-find_word (const gchar *str)
-{
- gint a, b;
-
- if (word_array == NULL)
- read_dict ();
-
- a = 0;
- b = word_count-1;
-
- while (b-a > 1) {
- gint m = (a+b)/2;
- gint cmp = g_strcasecmp (str, word_array[m]);
-
- if (cmp < 0)
- b = m;
- else if (cmp > 0)
- a = m;
- else
- return m;
- }
-
- return b;
-}
-
-struct {
- ECompletion *complete;
- const gchar *txt;
- gint start;
- gint current;
- gint len;
- gint limit;
- gint count;
-} dict_info;
-static guint dict_tag = 0;
-
-static gboolean
-dict_check (gpointer ptr)
-{
- gint limit = dict_info.limit;
- gint i;
-
- /* If this is the first iteration, do the binary search in our word list to figure out
- where to start. We do less work on the first iteration, to give more of a sense of
- immediate feedback. */
- if (dict_info.start < 0) {
- dict_info.start = dict_info.current = find_word (dict_info.txt);
- }
-
- i = dict_info.current;
- while (limit > 0
- && i < word_count
- && dict_info.count < 50
- && g_strncasecmp (dict_info.txt, word_array[i], dict_info.len) == 0) {
- e_completion_found_match_full (dict_info.complete, word_array[i],
- dict_info.len / (double)strlen (word_array[i]),
- NULL, NULL);
- ++i;
- --limit;
- ++dict_info.count;
- }
- dict_info.current = i;
- dict_info.limit = MIN (dict_info.limit*2, 400);
-
- if (limit != 0) {
- dict_tag = 0;
- e_completion_end_search (dict_info.complete);
- return FALSE;
- }
-
-
-
- return TRUE;
-}
-
-static void
-begin_dict_search (ECompletion *complete, const gchar *txt, gint pos, gint limit, gpointer user_data)
-{
- gint len = strlen (txt);
-
- if (dict_tag != 0) {
- gtk_timeout_remove (dict_tag);
- dict_tag = 0;
- }
-
- if (len > 0) {
- dict_info.complete = complete;
- dict_info.txt = txt;
- dict_info.start = -1;
- dict_info.current = -1;
- dict_info.len = len;
- dict_info.limit = 100;
- dict_info.count = 0;
- dict_tag = gtk_timeout_add (TIMEOUT, dict_check, NULL);
- } else {
- e_completion_end_search (complete);
- }
-}
-
-static void
-end_dict_search (ECompletion *complete, gpointer user_data)
-{
- if (dict_tag != 0) {
- gtk_timeout_remove (dict_tag);
- dict_tag = 0;
- }
-}
-
-static void
-popup_cb (EEntry *popup, GdkEventButton *ev, gint pos, gpointer user_data)
-{
- g_print ("popup at pos %d\n", pos);
-}
-
-int
-main (int argc, gchar **argv)
-{
- ECompletion* complete;
- GtkWidget *entry;
- GtkWidget *win;
-
- gnome_init ("ETextModelTest", "0.0", argc, argv);
-
- read_dict ();
-
- complete = e_completion_new ();
- gtk_signal_connect (GTK_OBJECT (complete),
- "begin_completion",
- GTK_SIGNAL_FUNC (begin_dict_search),
- NULL);
- gtk_signal_connect (GTK_OBJECT (complete),
- "end_completion",
- GTK_SIGNAL_FUNC (end_dict_search),
- NULL);
- gtk_signal_connect (GTK_OBJECT (complete),
- "cancel_completion",
- GTK_SIGNAL_FUNC (end_dict_search),
- NULL);
-
- win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- entry = e_entry_new ();
- e_entry_enable_completion_full (E_ENTRY (entry), complete, 0, NULL);
- e_entry_set_editable (E_ENTRY (entry), TRUE);
-
- gtk_signal_connect (GTK_OBJECT (entry),
- "popup",
- GTK_SIGNAL_FUNC (popup_cb),
- NULL);
-
- gtk_container_add (GTK_CONTAINER (win), entry);
- gtk_widget_show_all (win);
-
- gtk_main ();
-
- return 0;
-}
diff --git a/widgets/text/e-completion-view.c b/widgets/text/e-completion-view.c
deleted file mode 100644
index 2ffb19f3e3..0000000000
--- a/widgets/text/e-completion-view.c
+++ /dev/null
@@ -1,695 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * ECompletionView - A text completion selection widget
- * Copyright (C) 2000, 2001 Ximian, Inc.
- *
- * Author: Jon Trowbridge <trow@ximian.com>
- * Adapted from code by Miguel de Icaza <miguel@ximian.com>
- */
-
-/*
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#include <config.h>
-#include <math.h>
-#include <gdk/gdkkeysyms.h>
-#include <gal/e-table/e-table-simple.h>
-#include <gal/e-table/e-table-scrolled.h>
-#include "e-completion-view.h"
-
-enum {
- E_COMPLETION_VIEW_NONEMPTY,
- E_COMPLETION_VIEW_ADDED,
- E_COMPLETION_VIEW_FULL,
- E_COMPLETION_VIEW_BROWSE,
- E_COMPLETION_VIEW_UNBROWSE,
- E_COMPLETION_VIEW_ACTIVATE,
- E_COMPLETION_VIEW_LAST_SIGNAL
-};
-
-static guint e_completion_view_signals[E_COMPLETION_VIEW_LAST_SIGNAL] = { 0 };
-
-static void e_completion_view_disconnect (ECompletionView *cv);
-static ETable *e_completion_view_table (ECompletionView *cv);
-static void e_completion_view_clear_choices (ECompletionView *cv);
-static void e_completion_view_set_cursor_row (ECompletionView *cv, gint r);
-static void e_completion_view_select (ECompletionView *cv, gint r);
-
-static gint e_completion_view_key_press_handler (GtkWidget *w, GdkEventKey *key_event, gpointer user_data);
-
-static void e_completion_view_class_init (ECompletionViewClass *klass);
-static void e_completion_view_init (ECompletionView *completion);
-static void e_completion_view_destroy (GtkObject *object);
-
-static GtkObjectClass *parent_class;
-
-
-
-static gint
-e_completion_view_local_key_press_handler (GtkWidget *w, GdkEventKey *ev)
-{
- return e_completion_view_key_press_handler (w, ev, w);
-}
-
-GtkType
-e_completion_view_get_type (void)
-{
- static GtkType completion_view_type = 0;
-
- if (!completion_view_type) {
- GtkTypeInfo completion_view_info = {
- "ECompletionView",
- sizeof (ECompletionView),
- sizeof (ECompletionViewClass),
- (GtkClassInitFunc) e_completion_view_class_init,
- (GtkObjectInitFunc) e_completion_view_init,
- NULL, NULL, /* reserved */
- (GtkClassInitFunc) NULL
- };
-
- completion_view_type = gtk_type_unique (gtk_event_box_get_type (), &completion_view_info);
- }
-
- return completion_view_type;
-}
-
-static void
-e_completion_view_class_init (ECompletionViewClass *klass)
-{
- GtkObjectClass *object_class = (GtkObjectClass *) klass;
- GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
-
- parent_class = GTK_OBJECT_CLASS (gtk_type_class (gtk_event_box_get_type ()));
-
- e_completion_view_signals[E_COMPLETION_VIEW_NONEMPTY] =
- gtk_signal_new ("nonempty",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ECompletionViewClass, nonempty),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- e_completion_view_signals[E_COMPLETION_VIEW_ADDED] =
- gtk_signal_new ("added",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ECompletionViewClass, added),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- e_completion_view_signals[E_COMPLETION_VIEW_FULL] =
- gtk_signal_new ("full",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ECompletionViewClass, full),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- e_completion_view_signals[E_COMPLETION_VIEW_BROWSE] =
- gtk_signal_new ("browse",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ECompletionViewClass, browse),
- gtk_marshal_NONE__POINTER,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_POINTER);
-
- e_completion_view_signals[E_COMPLETION_VIEW_UNBROWSE] =
- gtk_signal_new ("unbrowse",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ECompletionViewClass, unbrowse),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- e_completion_view_signals[E_COMPLETION_VIEW_ACTIVATE] =
- gtk_signal_new ("activate",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ECompletionViewClass, activate),
- gtk_marshal_NONE__POINTER_POINTER,
- GTK_TYPE_NONE, 2,
- GTK_TYPE_POINTER, GTK_TYPE_POINTER);
-
- gtk_object_class_add_signals (object_class, e_completion_view_signals, E_COMPLETION_VIEW_LAST_SIGNAL);
-
- object_class->destroy = e_completion_view_destroy;
-
- widget_class->key_press_event = e_completion_view_local_key_press_handler;
-}
-
-static void
-e_completion_view_init (ECompletionView *completion)
-{
-}
-
-static void
-e_completion_view_destroy (GtkObject *object)
-{
- ECompletionView *cv = E_COMPLETION_VIEW (object);
-
- e_completion_view_disconnect (cv);
- e_completion_view_clear_choices (cv);
-
- if (cv->key_widget) {
- gtk_signal_disconnect (GTK_OBJECT (cv->key_widget), cv->key_signal_id);
- gtk_object_unref (GTK_OBJECT (cv->key_widget));
- }
-
- if (cv->completion)
- gtk_object_unref (GTK_OBJECT (cv->completion));
-
-
- if (parent_class->destroy)
- (parent_class->destroy) (object);
-}
-
-static void
-e_completion_view_disconnect (ECompletionView *cv)
-{
- g_return_if_fail (cv != NULL);
- g_return_if_fail (E_IS_COMPLETION_VIEW (cv));
-
- if (cv->begin_signal_id)
- gtk_signal_disconnect (GTK_OBJECT (cv->completion), cv->begin_signal_id);
- if (cv->comp_signal_id)
- gtk_signal_disconnect (GTK_OBJECT (cv->completion), cv->comp_signal_id);
- if (cv->restart_signal_id)
- gtk_signal_disconnect (GTK_OBJECT (cv->completion), cv->restart_signal_id);
- if (cv->cancel_signal_id)
- gtk_signal_disconnect (GTK_OBJECT (cv->completion), cv->cancel_signal_id);
- if (cv->end_signal_id)
- gtk_signal_disconnect (GTK_OBJECT (cv->completion), cv->end_signal_id);
-
- cv->begin_signal_id = 0;
- cv->comp_signal_id = 0;
- cv->restart_signal_id = 0;
- cv->end_signal_id = 0;
-}
-
-static ETable *
-e_completion_view_table (ECompletionView *cv)
-{
- return e_table_scrolled_get_table (E_TABLE_SCROLLED (cv->table));
-}
-
-static void
-e_completion_view_clear_choices (ECompletionView *cv)
-{
- GList *i;
-
- g_return_if_fail (cv != NULL);
- g_return_if_fail (E_IS_COMPLETION_VIEW (cv));
-
- for (i = cv->choices; i != NULL; i = g_list_next (i))
- g_free (i->data);
-
- g_list_free (cv->choices);
- cv->choices = NULL;
-
- cv->choice_count = 0;
-}
-
-static void
-e_completion_view_set_cursor_row (ECompletionView *cv, gint r)
-{
- ETable *table;
- GtkAdjustment *adj;
- gint x, y1, y2, r1, r2, c;
- double fracline;
- gint iteration_count=0;
-
- g_return_if_fail (cv != NULL);
- g_return_if_fail (E_IS_COMPLETION_VIEW (cv));
- g_return_if_fail (r < cv->choice_count);
-
- adj = e_scroll_frame_get_vadjustment (E_SCROLL_FRAME (cv->table));
-
- table = e_completion_view_table (cv);
-
- if (r < 0) {
- e_selection_model_clear (E_SELECTION_MODEL(table->selection));
-
- /* Move back to the top when we clear the selection */
- gtk_adjustment_set_value (adj, adj->lower);
- return;
- }
-
- e_table_set_cursor_row (table, r);
-
- /* OK, now the tricky bit. We try to insure that this row is
- visible. */
-
- /* If we are selecting the first or last row, then it is easy. We just
- cram the vadjustment all the way up/down. */
- if (r == 0) {
- gtk_adjustment_set_value (adj, adj->lower);
- return;
- } else if (r == cv->choice_count - 1) {
- gtk_adjustment_set_value (adj, adj->upper - adj->page_size);
- return;
- }
-
- fracline = ((adj->upper - adj->lower - adj->page_size) / cv->choice_count) / 4;
-
- while (iteration_count < 100) {
- x = GTK_LAYOUT(table->table_canvas)->hadjustment->value;
- y1 = GTK_LAYOUT(table->table_canvas)->vadjustment->value;
-
- y2 = y1 + cv->table->allocation.height;
-
- e_table_group_compute_location (e_completion_view_table (cv)->group, &x, &y1, &r1, &c);
- e_table_group_compute_location (e_completion_view_table (cv)->group, &x, &y2, &r2, &c);
-
- if (r <= r1) {
- gtk_adjustment_set_value (adj, adj->value - fracline);
- } else if (r >= r2) {
- gtk_adjustment_set_value (adj, adj->value + fracline);
- } else
- return;
-
- ++iteration_count;
- }
-
- g_assert_not_reached ();
-}
-
-static void
-e_completion_view_select (ECompletionView *cv, gint r)
-{
- const gchar *sel = (const gchar *) g_list_nth_data (cv->choices, r);
- gpointer extra = e_completion_find_extra_data (cv->completion, sel);
-
- cv->selection = r;
- e_completion_view_set_cursor_row (cv, r);
- gtk_signal_emit (GTK_OBJECT (cv), e_completion_view_signals[E_COMPLETION_VIEW_ACTIVATE], sel, extra);
-}
-
-static gint
-e_completion_view_key_press_handler (GtkWidget *w, GdkEventKey *key_event, gpointer user_data)
-{
- ECompletionView *cv = E_COMPLETION_VIEW (user_data);
- gint dir = 0;
- gboolean key_handled = TRUE;
-
- /* Start up a completion.*/
- if (cv->complete_key && key_event->keyval == cv->complete_key && !cv->editable) {
- gtk_signal_emit (GTK_OBJECT (cv), e_completion_view_signals[E_COMPLETION_VIEW_BROWSE], NULL);
- goto stop_emission;
- }
-
- /* Stop our completion. */
- if (cv->uncomplete_key && key_event->keyval == cv->uncomplete_key && cv->editable && cv->selection < 0) {
- e_completion_view_set_cursor_row (cv, -1);
- gtk_signal_emit (GTK_OBJECT (cv), e_completion_view_signals[E_COMPLETION_VIEW_UNBROWSE]);
- goto stop_emission;
- }
-
- if (!cv->editable)
- return FALSE;
-
- switch (key_event->keyval) {
- case GDK_Down:
- case GDK_KP_Down:
- dir = 1;
- break;
-
- case GDK_Up:
- case GDK_KP_Up:
- dir = -1;
- break;
-
- case GDK_Tab:
- /* Unbrowse, unhandled. */
- cv->selection = -1;
- dir = 0;
- key_handled = FALSE;
- break;
-
- case GDK_Return:
- case GDK_KP_Enter:
- case GDK_space:
- case GDK_KP_Space:
- /* Only handle these key presses if we have an active selection;
- otherwise, pass them on. */
- if (cv->selection >= 0) {
- e_completion_view_select (cv, cv->selection);
- goto stop_emission;
- }
- return FALSE;
-
- case GDK_Escape:
- /* Unbrowse hack */
- cv->selection = -1;
- dir = 0;
- break;
-
- default:
- return FALSE;
- }
-
- cv->selection += dir;
-
- if (cv->selection >= cv->choice_count) {
- cv->selection = cv->choice_count - 1;
- /* Don't re-emit the browse signal */
- goto stop_emission;
- }
-
- e_completion_view_set_cursor_row (cv, cv->selection);
-
- if (cv->selection >= 0)
- gtk_signal_emit (GTK_OBJECT (cv), e_completion_view_signals[E_COMPLETION_VIEW_BROWSE],
- g_list_nth_data (cv->choices, cv->selection));
- else
- gtk_signal_emit (GTK_OBJECT (cv), e_completion_view_signals[E_COMPLETION_VIEW_UNBROWSE]);
-
- stop_emission:
-
- if (key_handled)
- gtk_signal_emit_stop_by_name (GTK_OBJECT (w), "key_press_event");
-
- return key_handled;
-}
-
-static void
-begin_completion_cb (ECompletion *completion, const gchar *txt, gint pos, gint limit, gpointer user_data)
-{
- ECompletionView *cv = E_COMPLETION_VIEW (user_data);
-
- e_completion_view_clear_choices (cv);
- cv->have_all_choices = FALSE;
-
- e_table_model_changed (cv->model);
-}
-
-static void
-restart_completion_cb (ECompletion *completion, gpointer user_data)
-{
- /* For now, handle restarts like the beginning of a new completion. */
- begin_completion_cb (completion, NULL, 0, 0, user_data);
-}
-
-static void
-cancel_completion_cb (ECompletion *completion, gpointer user_data)
-{
- ECompletionView *cv = E_COMPLETION_VIEW (user_data);
-
- /* On a cancel, clear our choices and issue an "unbrowse" signal. */
- e_completion_view_clear_choices (cv);
- cv->have_all_choices = TRUE;
- e_completion_view_set_cursor_row (cv, -1);
- e_table_model_changed (cv->model);
-
- gtk_signal_emit (GTK_OBJECT (cv), e_completion_view_signals[E_COMPLETION_VIEW_UNBROWSE]);
-}
-
-static void
-completion_cb (ECompletion *completion, const gchar *text, gpointer extra_data, gpointer user_data)
-{
- ECompletionView *cv = E_COMPLETION_VIEW (user_data);
- gint r = cv->choice_count;
- gboolean first = (cv->choices == NULL);
-
- cv->choices = g_list_append (cv->choices, g_strdup (text));
- ++cv->choice_count;
-
- e_table_model_row_inserted (cv->model, r);
-
- if (first)
- gtk_signal_emit (GTK_OBJECT (cv), e_completion_view_signals[E_COMPLETION_VIEW_NONEMPTY]);
-
- gtk_signal_emit (GTK_OBJECT (cv), e_completion_view_signals[E_COMPLETION_VIEW_ADDED]);
-}
-
-static void
-end_completion_cb (ECompletion *completion, gpointer user_data)
-{
- ECompletionView *cv = E_COMPLETION_VIEW (user_data);
-
- /* Do a final refresh of the table. */
- e_table_model_changed (cv->model);
-
- cv->have_all_choices = TRUE;
- gtk_signal_emit (GTK_OBJECT (cv), e_completion_view_signals[E_COMPLETION_VIEW_FULL]);
-}
-
-/*** Table Callbacks ***/
-
-static char *simple_spec =
-"<ETableSpecification no-headers=\"true\" draw-grid=\"false\" cursor-mode=\"line\"> "
-" <ETableColumn model_col=\"0\" _title=\"Node\" expansion=\"1.0\" "
-" minimum_width=\"16\" resizable=\"true\" cell=\"string\" "
-" compare=\"string\"/> "
-" <ETableState> "
-" <column source=\"0\"/> "
-" <grouping></grouping> "
-" </ETableState> "
-"</ETableSpecification>";
-
-static gint
-table_col_count (ETableModel *etm, gpointer data)
-{
- return 1;
-}
-
-static gint
-table_row_count (ETableModel *etm, gpointer data)
-{
- ECompletionView *cv = E_COMPLETION_VIEW (data);
- return cv->choice_count;
-}
-
-static gboolean
-table_is_cell_editable (ETableModel *etm, gint c, gint r, gpointer data)
-{
- return FALSE;
-}
-
-static gpointer
-table_value_at (ETableModel *etm, gint c, gint r, gpointer data)
-{
- ECompletionView *cv = E_COMPLETION_VIEW (data);
- gpointer p;
-
- p = g_list_nth_data (cv->choices, r);
-
- return p;
-}
-
-static gchar *
-table_value_to_string (ETableModel *em, gint col, gconstpointer val, gpointer data)
-{
- return (gchar *) val;
-}
-
-static void
-table_click_cb (ETable *et, gint r, gint c, GdkEvent *ev, gpointer data)
-{
- ECompletionView *cv = E_COMPLETION_VIEW (data);
-
- e_completion_view_select (cv, r);
-}
-
-void
-e_completion_view_construct (ECompletionView *cv, ECompletion *completion)
-{
- GtkWidget *frame;
-
- g_return_if_fail (cv != NULL);
- g_return_if_fail (E_IS_COMPLETION_VIEW (cv));
- g_return_if_fail (completion != NULL);
- g_return_if_fail (E_IS_COMPLETION (completion));
-
- /* Make sure we don't call construct twice. */
- g_return_if_fail (cv->completion == NULL);
-
- GTK_WIDGET_SET_FLAGS (GTK_WIDGET (cv), GTK_CAN_FOCUS);
-
- cv->completion = completion;
- gtk_object_ref (GTK_OBJECT (completion));
-
- cv->begin_signal_id = gtk_signal_connect (GTK_OBJECT (completion),
- "begin_completion",
- GTK_SIGNAL_FUNC (begin_completion_cb),
- cv);
- cv->comp_signal_id = gtk_signal_connect (GTK_OBJECT (completion),
- "completion",
- GTK_SIGNAL_FUNC (completion_cb),
- cv);
- cv->restart_signal_id = gtk_signal_connect (GTK_OBJECT (completion),
- "restart_completion",
- GTK_SIGNAL_FUNC (restart_completion_cb),
- cv);
- cv->cancel_signal_id = gtk_signal_connect (GTK_OBJECT (completion),
- "cancel_completion",
- GTK_SIGNAL_FUNC (cancel_completion_cb),
- cv);
- cv->end_signal_id = gtk_signal_connect (GTK_OBJECT (completion),
- "end_completion",
- GTK_SIGNAL_FUNC (end_completion_cb),
- cv);
-
- cv->model = e_table_simple_new (table_col_count,
- table_row_count,
- table_value_at,
- NULL,
- table_is_cell_editable,
- NULL, NULL, NULL, NULL,
- table_value_to_string,
- cv);
-
- cv->table = e_table_scrolled_new (cv->model, NULL, simple_spec, NULL);
-
- e_scroll_frame_set_policy (E_SCROLL_FRAME (cv->table), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-
- frame = gtk_frame_new (NULL);
-
- gtk_container_add (GTK_CONTAINER (cv), frame);
- gtk_container_add (GTK_CONTAINER (frame), cv->table);
- gtk_widget_show_all (frame);
-
- gtk_signal_connect (GTK_OBJECT (e_completion_view_table (cv)),
- "click",
- GTK_SIGNAL_FUNC (table_click_cb),
- cv);
-
- cv->selection = -1;
-}
-
-GtkWidget *
-e_completion_view_new (ECompletion *completion)
-{
- gpointer p;
-
- g_return_val_if_fail (completion != NULL, NULL);
- g_return_val_if_fail (E_IS_COMPLETION (completion), NULL);
-
- p = gtk_type_new (e_completion_view_get_type ());
-
- e_completion_view_construct (E_COMPLETION_VIEW (p), completion);
-
- return GTK_WIDGET (p);
-}
-
-void
-e_completion_view_connect_keys (ECompletionView *cv, GtkWidget *w)
-{
- g_return_if_fail (cv != NULL);
- g_return_if_fail (E_IS_COMPLETION_VIEW (cv));
- g_return_if_fail (w == NULL || GTK_IS_WIDGET (w));
-
- if (cv->key_widget) {
- gtk_signal_disconnect (GTK_OBJECT (cv->key_widget), cv->key_signal_id);
- gtk_object_unref (GTK_OBJECT (cv->key_widget));
- }
-
- if (w) {
- cv->key_widget = w;
- gtk_object_ref (GTK_OBJECT (w));
-
- cv->key_signal_id = gtk_signal_connect (GTK_OBJECT (w),
- "key_press_event",
- GTK_SIGNAL_FUNC (e_completion_view_key_press_handler),
- cv);
- } else {
- cv->key_widget = NULL;
- cv->key_signal_id = 0;
- }
-}
-
-void
-e_completion_view_set_complete_key (ECompletionView *cv, gint keyval)
-{
- g_return_if_fail (cv != NULL);
- g_return_if_fail (E_IS_COMPLETION_VIEW (cv));
-
- cv->complete_key = keyval;
-}
-
-void
-e_completion_view_set_uncomplete_key (ECompletionView *cv, gint keyval)
-{
- g_return_if_fail (cv != NULL);
- g_return_if_fail (E_IS_COMPLETION_VIEW (cv));
-
- cv->uncomplete_key = keyval;
-}
-
-void
-e_completion_view_set_width (ECompletionView *cv, gint width)
-{
- GtkWidget *w;
- gint y, r, dummy, line_height;
- double drop_room, lines;
-
- g_return_if_fail (cv != NULL);
- g_return_if_fail (E_IS_COMPLETION_VIEW (cv));
- g_return_if_fail (width > 0);
-
- w = GTK_WIDGET (cv);
-
- if (! GTK_WIDGET_REALIZED (w)) {
- gtk_widget_set_usize (w, width, -1);
- return;
- }
-
- /* A Horrible Hack(tm) to figure out the height of a single table row */
-
- for (line_height=5, r=0; r == 0 && line_height < 1000; line_height += 2) {
- dummy = 0;
- e_table_group_compute_location (e_completion_view_table (cv)->group,
- &dummy, &line_height, &r, &dummy);
- }
-
- if (line_height >= 1000) {
- /* Something went wrong, so we make a (possibly very lame) guess */
- line_height = 30;
- }
-
-
- gdk_window_get_origin (w->window, NULL, &y);
- y += w->allocation.y;
-
- lines = 5; /* default maximum */
- lines = MIN (lines, cv->choice_count);
-
- drop_room = (gdk_screen_height () - y) / (double)line_height;
- drop_room = MAX (drop_room, 1);
-
- lines = MIN (lines, drop_room);
-
- /* We reduce the total height by a bit; in practice, this seems to work out well. */
- gtk_widget_set_usize (w, width, (gint) floor (line_height * lines * 0.97));
-}
-
-void
-e_completion_view_set_editable (ECompletionView *cv, gboolean x)
-{
- g_return_if_fail (cv != NULL);
- g_return_if_fail (E_IS_COMPLETION_VIEW (cv));
-
- if (x == cv->editable)
- return;
-
- cv->editable = x;
- cv->selection = -1;
- e_completion_view_set_cursor_row (cv, -1);
-}
-
diff --git a/widgets/text/e-completion-view.h b/widgets/text/e-completion-view.h
deleted file mode 100644
index 57268125c5..0000000000
--- a/widgets/text/e-completion-view.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * ECompletionView - A text completion selection widget
- * Copyright (C) 2000, 2001 Ximian, Inc.
- *
- * Author: Jon Trowbridge <trow@ximian.com>
- * Adapted from code by Miguel de Icaza <miguel@ximian.com>
- */
-
-/*
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef E_COMPLETION_VIEW_H
-#define E_COMPLETION_VIEW_H
-
-#include <libgnome/gnome-defs.h>
-#include <gtk/gtk.h>
-#include <gal/e-table/e-table.h>
-#include "e-completion.h"
-
-BEGIN_GNOME_DECLS
-
-#define E_COMPLETION_VIEW_TYPE (e_completion_view_get_type ())
-#define E_COMPLETION_VIEW(o) (GTK_CHECK_CAST ((o), E_COMPLETION_VIEW_TYPE, ECompletionView))
-#define E_COMPLETION_VIEW_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), E_COMPLETION_VIEW_TYPE, ECompletionViewClass))
-#define E_IS_COMPLETION_VIEW(o) (GTK_CHECK_TYPE ((o), E_COMPLETION_VIEW_TYPE))
-#define E_IS_COMPLETION_VIEW_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_COMPLETION_VIEW_TYPE))
-
-typedef struct _ECompletionView ECompletionView;
-typedef struct _ECompletionViewClass ECompletionViewClass;
-
-struct _ECompletionView {
- GtkEventBox parent;
-
- ETableModel *model;
- GtkWidget *table;
-
- ECompletion *completion;
- guint begin_signal_id;
- guint comp_signal_id;
- guint restart_signal_id;
- guint cancel_signal_id;
- guint end_signal_id;
-
- GtkWidget *key_widget;
- guint key_signal_id;
-
- gint complete_key;
- gint uncomplete_key;
-
- GList *choices;
- gint choice_count;
- gboolean have_all_choices;
-
- gboolean editable;
- gint selection;
-};
-
-struct _ECompletionViewClass {
- GtkEventBoxClass parent_class;
-
- /* Signals */
- void (*nonempty) (ECompletionView *cv);
- void (*added) (ECompletionView *cv);
- void (*full) (ECompletionView *cv);
- void (*browse) (ECompletionView *cv, const gchar *text);
- void (*unbrowse) (ECompletionView *cv);
- void (*activate) (ECompletionView *cv, const gchar *text, gpointer extra_data);
-};
-
-GtkType e_completion_view_get_type (void);
-
-void e_completion_view_construct (ECompletionView *cv, ECompletion *completion);
-GtkWidget *e_completion_view_new (ECompletion *completion);
-
-void e_completion_view_connect_keys (ECompletionView *cv, GtkWidget *w);
-
-void e_completion_view_set_complete_key (ECompletionView *cv, gint keyval);
-void e_completion_view_set_uncomplete_key (ECompletionView *cv, gint keyval);
-
-void e_completion_view_set_width (ECompletionView *cv, gint width);
-void e_completion_view_set_editable (ECompletionView *cv, gboolean);
-
-END_GNOME_DECLS
-
-
-#endif /* E_COMPLETION_H */
diff --git a/widgets/text/e-completion.c b/widgets/text/e-completion.c
deleted file mode 100644
index a8038b8184..0000000000
--- a/widgets/text/e-completion.c
+++ /dev/null
@@ -1,478 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/* ECompletion - A base class for text completion.
- * Copyright (C) 2000, 2001 Ximian, Inc.
- *
- * Author: Miguel de Icaza <miguel@ximian.com>
- * Adapted by Jon Trowbridge <trow@ximian.com>
- *
- */
-
-/*
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#include <config.h>
-#include <string.h> /* strcmp() */
-#include <gtk/gtk.h>
-#include "e-completion.h"
-
-enum {
- E_COMPLETION_BEGIN_COMPLETION,
- E_COMPLETION_COMPLETION,
- E_COMPLETION_RESTART_COMPLETION,
- E_COMPLETION_CANCEL_COMPLETION,
- E_COMPLETION_END_COMPLETION,
- E_COMPLETION_LAST_SIGNAL
-};
-
-static guint e_completion_signals[E_COMPLETION_LAST_SIGNAL] = { 0 };
-
-typedef struct _Match Match;
-struct _Match {
- gchar *text;
- double score;
- gpointer extra_data;
- GtkDestroyNotify extra_destroy;
-};
-
-struct _ECompletionPrivate {
- gboolean searching;
- gchar *search_text;
- gint pos;
- gint limit;
- gint match_count;
- GList *matches;
- double min_score, max_score;
-};
-
-static void e_completion_class_init (ECompletionClass *klass);
-static void e_completion_init (ECompletion *complete);
-static void e_completion_destroy (GtkObject *object);
-
-static Match *match_new (const gchar *txt, double score, gpointer extra_data, GtkDestroyNotify extra_destroy);
-static void match_free (Match *);
-static void match_list_free (GList *);
-
-static void e_completion_add_match (ECompletion *complete, const gchar *txt, double score, gpointer extra_data, GtkDestroyNotify);
-static void e_completion_clear_matches (ECompletion *complete);
-static gboolean e_completion_sort_by_score (ECompletion *complete);
-static void e_completion_restart (ECompletion *complete);
-
-static GtkObjectClass *parent_class;
-
-
-
-GtkType
-e_completion_get_type (void)
-{
- static GtkType complete_type = 0;
-
- if (!complete_type) {
- GtkTypeInfo complete_info = {
- "ECompletion",
- sizeof (ECompletion),
- sizeof (ECompletionClass),
- (GtkClassInitFunc) e_completion_class_init,
- (GtkObjectInitFunc) e_completion_init,
- NULL, NULL, /* reserved */
- (GtkClassInitFunc) NULL
- };
-
- complete_type = gtk_type_unique (gtk_object_get_type (), &complete_info);
- }
-
- return complete_type;
-}
-
-static void
-e_completion_class_init (ECompletionClass *klass)
-{
- GtkObjectClass *object_class = (GtkObjectClass *) klass;
-
- parent_class = GTK_OBJECT_CLASS (gtk_type_class (gtk_object_get_type ()));
-
- e_completion_signals[E_COMPLETION_BEGIN_COMPLETION] =
- gtk_signal_new ("begin_completion",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ECompletionClass, begin_completion),
- gtk_marshal_NONE__POINTER_INT_INT,
- GTK_TYPE_NONE, 3,
- GTK_TYPE_POINTER, GTK_TYPE_INT, GTK_TYPE_INT);
-
- e_completion_signals[E_COMPLETION_COMPLETION] =
- gtk_signal_new ("completion",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ECompletionClass, completion),
- gtk_marshal_NONE__POINTER_POINTER,
- GTK_TYPE_NONE, 2,
- GTK_TYPE_POINTER, GTK_TYPE_POINTER);
-
- e_completion_signals[E_COMPLETION_RESTART_COMPLETION] =
- gtk_signal_new ("restart_completion",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ECompletionClass, restart_completion),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- e_completion_signals[E_COMPLETION_CANCEL_COMPLETION] =
- gtk_signal_new ("cancel_completion",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ECompletionClass, cancel_completion),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- e_completion_signals[E_COMPLETION_END_COMPLETION] =
- gtk_signal_new ("end_completion",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ECompletionClass, end_completion),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- gtk_object_class_add_signals (object_class, e_completion_signals, E_COMPLETION_LAST_SIGNAL);
-
- object_class->destroy = e_completion_destroy;
-}
-
-static void
-e_completion_init (ECompletion *complete)
-{
- complete->priv = g_new0 (struct _ECompletionPrivate, 1);
-}
-
-static void
-e_completion_destroy (GtkObject *object)
-{
- ECompletion *complete = E_COMPLETION (object);
-
- g_free (complete->priv->search_text);
- complete->priv->search_text = NULL;
-
- e_completion_clear_matches (complete);
-
- g_free (complete->priv);
- complete->priv = NULL;
-
- if (parent_class->destroy)
- (parent_class->destroy) (object);
-}
-
-static Match *
-match_new (const gchar *text, double score, gpointer extra_data, GtkDestroyNotify extra_destroy)
-{
- Match *m;
-
- if (text == NULL)
- return NULL;
-
- m = g_new (Match, 1);
- m->text = g_strdup (text);
- m->score = score;
- m->extra_data = extra_data;
- m->extra_destroy = extra_destroy;
-
- return m;
-}
-
-static void
-match_free (Match *m)
-{
- if (m) {
- g_free (m->text);
- if (m->extra_destroy)
- m->extra_destroy (m->extra_data);
- g_free (m);
- }
-}
-
-static void
-match_list_free (GList *i)
-{
- while (i) {
- match_free ( (Match *) i->data );
- i = g_list_next (i);
- }
-}
-
-static void
-e_completion_add_match (ECompletion *complete, const gchar *txt, double score, gpointer extra_data, GtkDestroyNotify extra_destroy)
-{
- complete->priv->matches = g_list_append (complete->priv->matches, match_new (txt, score, extra_data, extra_destroy));
-
- if (complete->priv->match_count == 0) {
-
- complete->priv->min_score = complete->priv->max_score = score;
-
- } else {
-
- complete->priv->min_score = MIN (complete->priv->min_score, score);
- complete->priv->max_score = MAX (complete->priv->max_score, score);
-
- }
-
- ++complete->priv->match_count;
-}
-
-static void
-e_completion_clear_matches (ECompletion *complete)
-{
- match_list_free (complete->priv->matches);
- g_list_free (complete->priv->matches);
- complete->priv->matches = NULL;
-
- complete->priv->match_count = 0;
-
- complete->priv->min_score = 0;
- complete->priv->max_score = 0;
-}
-
-void
-e_completion_begin_search (ECompletion *complete, const gchar *text, gint pos, gint limit)
-{
- g_return_if_fail (complete != NULL);
- g_return_if_fail (E_IS_COMPLETION (complete));
- g_return_if_fail (text != NULL);
-
- /* Stop any prior search. */
- if (complete->priv->searching)
- e_completion_cancel_search (complete);
-
- g_free (complete->priv->search_text);
- complete->priv->search_text = g_strdup (text);
-
- complete->priv->pos = pos;
- complete->priv->searching = TRUE;
-
- e_completion_clear_matches (complete);
-
- complete->priv->limit = limit > 0 ? limit : G_MAXINT;
-
- gtk_signal_emit (GTK_OBJECT (complete), e_completion_signals[E_COMPLETION_BEGIN_COMPLETION], text, pos, limit);
-}
-
-void
-e_completion_cancel_search (ECompletion *complete)
-{
- g_return_if_fail (complete != NULL);
- g_return_if_fail (E_IS_COMPLETION (complete));
-
- /* If there is no search to cancel, just silently return. */
- if (!complete->priv->searching)
- return;
-
- gtk_signal_emit (GTK_OBJECT (complete), e_completion_signals[E_COMPLETION_CANCEL_COMPLETION]);
-
- complete->priv->searching = FALSE;
-}
-
-gboolean
-e_completion_searching (ECompletion *complete)
-{
- g_return_val_if_fail (complete != NULL, FALSE);
- g_return_val_if_fail (E_IS_COMPLETION (complete), FALSE);
-
- return complete->priv->searching;
-}
-
-const gchar *
-e_completion_search_text (ECompletion *complete)
-{
- g_return_val_if_fail (complete != NULL, NULL);
- g_return_val_if_fail (E_IS_COMPLETION (complete), NULL);
-
- return complete->priv->search_text;
-}
-
-gint
-e_completion_search_text_pos (ECompletion *complete)
-{
- g_return_val_if_fail (complete != NULL, -1);
- g_return_val_if_fail (E_IS_COMPLETION (complete), -1);
-
- return complete->priv->pos;
-}
-
-gint
-e_completion_match_count (ECompletion *complete)
-{
- g_return_val_if_fail (complete != NULL, 0);
- g_return_val_if_fail (E_IS_COMPLETION (complete), 0);
-
- return complete->priv->match_count;
-}
-
-void
-e_completion_foreach_match (ECompletion *complete, ECompletionMatchFn fn, gpointer user_data)
-{
- GList *i;
-
- g_return_if_fail (complete != NULL);
- g_return_if_fail (E_IS_COMPLETION (complete));
-
- if (fn == NULL)
- return;
-
- for (i = complete->priv->matches; i != NULL; i = g_list_next (i)) {
- Match *m = (Match *) i->data;
- fn (m->text, m->score, m->extra_data, user_data);
- }
-}
-
-gpointer
-e_completion_find_extra_data (ECompletion *complete, const gchar *text)
-{
- GList *i;
-
- g_return_val_if_fail (complete != NULL, NULL);
- g_return_val_if_fail (E_IS_COMPLETION (complete), NULL);
-
- for (i = complete->priv->matches; i != NULL; i = g_list_next (i)) {
- Match *m = (Match *) i->data;
- if (strcmp (m->text, text) == 0)
- return m->extra_data;
- }
-
- return NULL;
-}
-
-ECompletion *
-e_completion_new (void)
-{
- return E_COMPLETION (gtk_type_new (e_completion_get_type ()));
-}
-
-static gint
-score_cmp_fn (gconstpointer a, gconstpointer b)
-{
- double sa = ((const Match *) a)->score;
- double sb = ((const Match *) b)->score;
- gint cmp = (sa < sb) - (sb < sa);
- if (cmp == 0)
- cmp = g_strcasecmp (((const Match *) a)->text, ((const Match *) b)->text);
- return cmp;
-}
-
-static gboolean
-e_completion_sort_by_score (ECompletion *complete)
-{
- GList *sort_list = NULL, *i, *j;
- gboolean diff;
- gint count;
-
- /* If all scores are equal, there is nothing to do. */
- if (complete->priv->min_score == complete->priv->max_score)
- return FALSE;
-
- for (i = complete->priv->matches; i != NULL; i = g_list_next (i)) {
- sort_list = g_list_append (sort_list, i->data);
- }
-
- sort_list = g_list_sort (sort_list, score_cmp_fn);
-
-
- diff = FALSE;
- count = 0;
- i = complete->priv->matches;
- j = sort_list;
- while (i && j && !diff && count < complete->priv->limit) {
-
- if (i->data != j->data)
- diff = TRUE;
-
- i = g_list_next (i);
- j = g_list_next (j);
- ++count;
- }
-
- g_list_free (complete->priv->matches);
- complete->priv->matches = sort_list;
-
- return diff;
-}
-
-/* Emit a restart signal and re-declare our matches, up to the limit. */
-static void
-e_completion_restart (ECompletion *complete)
-{
- GList *i;
- gint count = 0;
-
- gtk_signal_emit (GTK_OBJECT (complete), e_completion_signals[E_COMPLETION_RESTART_COMPLETION]);
-
- i = complete->priv->matches;
- while (i != NULL && count < complete->priv->limit) {
- Match *m = (Match *) i->data;
- gtk_signal_emit (GTK_OBJECT (complete), e_completion_signals[E_COMPLETION_COMPLETION], m->text, m->extra_data);
-
- i = g_list_next (i);
- ++count;
- }
-}
-
-void
-e_completion_found_match (ECompletion *complete, const gchar *text)
-{
- g_return_if_fail (complete);
- g_return_if_fail (E_IS_COMPLETION (complete));
- g_return_if_fail (text != NULL);
-
- e_completion_found_match_full (complete, text, 0, NULL, NULL);
-}
-
-void
-e_completion_found_match_full (ECompletion *complete, const gchar *text, double score, gpointer extra_data, GtkDestroyNotify extra_destroy)
-{
- g_return_if_fail (complete);
- g_return_if_fail (E_IS_COMPLETION (complete));
- g_return_if_fail (text != NULL);
-
- if (! complete->priv->searching) {
- g_warning ("e_completion_found_match(...,\"%s\",...) called outside of a search", text);
- return;
- }
-
- e_completion_add_match (complete, text, score, extra_data, extra_destroy);
-
- /* For now, do nothing when we hit the limit --- just don't announce the incoming matches. */
- if (complete->priv->match_count >= complete->priv->limit) {
- return;
- }
-
- gtk_signal_emit (GTK_OBJECT (complete), e_completion_signals[E_COMPLETION_COMPLETION], text, extra_data);
-}
-
-void
-e_completion_end_search (ECompletion *complete)
-{
- g_return_if_fail (complete != NULL);
- g_return_if_fail (E_IS_COMPLETION (complete));
- g_return_if_fail (complete->priv->searching);
-
- /* If sorting by score accomplishes anything, issue a restart right before we end. */
- if (e_completion_sort_by_score (complete))
- e_completion_restart (complete);
-
- gtk_signal_emit (GTK_OBJECT (complete), e_completion_signals[E_COMPLETION_END_COMPLETION]);
-
- complete->priv->searching = FALSE;
-}
-
diff --git a/widgets/text/e-completion.h b/widgets/text/e-completion.h
deleted file mode 100644
index e101d6aa55..0000000000
--- a/widgets/text/e-completion.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/* ECompletion - A base class for text completion.
- * Copyright (C) 2000, 2001 Ximian, Inc.
- *
- * Author: Miguel de Icaza <miguel@ximian.com>
- * Adapted by Jon Trowbridge <trow@ximian.com>
- *
- */
-
-/*
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#ifndef E_COMPLETION_H
-#define E_COMPLETION_H
-
-#include <libgnome/gnome-defs.h>
-#include <gtk/gtkobject.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_COMPLETION_TYPE (e_completion_get_type ())
-#define E_COMPLETION(o) (GTK_CHECK_CAST ((o), E_COMPLETION_TYPE, ECompletion))
-#define E_COMPLETION_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), E_COMPLETION_TYPE, ECompletionClass))
-#define E_IS_COMPLETION(o) (GTK_CHECK_TYPE ((o), E_COMPLETION_TYPE))
-#define E_IS_COMPLETION_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_COMPLETION_TYPE))
-
-typedef struct _ECompletion ECompletion;
-typedef struct _ECompletionClass ECompletionClass;
-struct _ECompletionPrivate;
-
-typedef void (*ECompletionMatchFn) (const gchar *text, double score, gpointer extra_data, gpointer user_data);
-
-struct _ECompletion {
- GtkObject parent;
-
- struct _ECompletionPrivate *priv;
-};
-
-struct _ECompletionClass {
- GtkObjectClass parent_class;
-
- /* Signals */
- void (*begin_completion) (ECompletion *comp, const gchar *search_text, gint pos, gint limit);
- void (*completion) (ECompletion *comp, const gchar *match_text, gpointer extra_data);
- void (*restart_completion) (ECompletion *comp);
- void (*cancel_completion) (ECompletion *comp);
- void (*end_completion) (ECompletion *comp);
-};
-
-GtkType e_completion_get_type (void);
-
-void e_completion_begin_search (ECompletion *comp, const gchar *text, gint pos, gint limit);
-void e_completion_cancel_search (ECompletion *comp);
-
-gboolean e_completion_searching (ECompletion *comp);
-const gchar *e_completion_search_text (ECompletion *comp);
-gint e_completion_search_text_pos (ECompletion *comp);
-gint e_completion_match_count (ECompletion *comp);
-void e_completion_foreach_match (ECompletion *comp, ECompletionMatchFn fn, gpointer user_data);
-gpointer e_completion_find_extra_data (ECompletion *comp, const gchar *text);
-
-ECompletion *e_completion_new (void);
-
-
-
-/* These functions should only be called by derived classes or search callbacks,
- or very bad things might happen. */
-
-void e_completion_found_match (ECompletion *comp, const gchar *completion_text);
-void e_completion_found_match_full (ECompletion *comp, const gchar *completion_text, double score,
- gpointer extra_data, GtkDestroyNotify extra_data_destructor);
-void e_completion_end_search (ECompletion *comp);
-
-END_GNOME_DECLS
-
-
-#endif /* E_COMPLETION_H */
-
diff --git a/widgets/text/e-entry-test.c b/widgets/text/e-entry-test.c
deleted file mode 100644
index 411e8d693c..0000000000
--- a/widgets/text/e-entry-test.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* test-minicard.c
- *
- * Copyright (C) 2000 Helix Code, Inc.
- * Author: Chris Lahey <clahey@helixcode.com>
- *
- * 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, 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-
-
-
-#include "config.h"
-
-#include <gnome.h>
-#include "e-entry.h"
-
-static void destroy_callback(GtkWidget *app, gpointer data)
-{
- exit(0);
-}
-
-#if 0
-static void about_callback( GtkWidget *widget, gpointer data )
-{
-
- const gchar *authors[] =
- {
- "Christopher James Lahey <clahey@umich.edu>",
- NULL
- };
-
- GtkWidget *about =
- gnome_about_new ( _( "Minicard Test" ), VERSION,
- _( "Copyright (C) 2000, Helix Code, Inc." ),
- authors,
- _( "This should test the minicard canvas item" ),
- NULL);
- gtk_widget_show (about);
-}
-#endif
-
-int main( int argc, char *argv[] )
-{
- GtkWidget *app;
- GtkWidget *entry;
-
- /* bindtextdomain (PACKAGE, GNOMELOCALEDIR);
- textdomain (PACKAGE);*/
-
- gnome_init( "EEntry Test", VERSION, argc, argv);
- app = gnome_app_new("EEntry Test", NULL);
-
- entry = e_entry_new();
- gtk_object_set(GTK_OBJECT(entry),
- "editable", TRUE,
- "use_ellipsis", TRUE,
- NULL);
- gnome_app_set_contents( GNOME_APP( app ), entry );
-
- /* Connect the signals */
- gtk_signal_connect( GTK_OBJECT( app ), "destroy",
- GTK_SIGNAL_FUNC( destroy_callback ),
- ( gpointer ) app );
-
- gtk_widget_show_all( app );
-
- gtk_main();
-
- /* Not reached. */
- return 0;
-}
diff --git a/widgets/text/e-entry.c b/widgets/text/e-entry.c
deleted file mode 100644
index 02ca564532..0000000000
--- a/widgets/text/e-entry.c
+++ /dev/null
@@ -1,1194 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * EEntry: An EText-based entry widget
- *
- * Authors:
- * Miguel de Icaza <miguel@helixcode.com>
- * Chris Lahey <clahey@helixcode.com>
- * Jon Trowbridge <trow@ximian.com>
- *
- * Copyright (C) 1999, 2000, 2001 Ximian Inc.
- */
-
-/*
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-#include <config.h>
-#include <math.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#ifdef HAVE_ALLOCA_H
-#include <alloca.h>
-#endif
-#include <stdio.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtksignal.h>
-#include <gnome-xml/parser.h>
-#include <libgnomeui/gnome-canvas.h>
-#include "gal/util/e-util.h"
-#include "gal/widgets/e-canvas.h"
-#include "gal/widgets/e-canvas-utils.h"
-#include "e-completion-view.h"
-#include "e-text.h"
-#include "e-entry.h"
-
-#define EVIL_POINTER_WARPING_HACK
-
-#ifdef EVIL_POINTER_WARPING_HACK
-#include <gdk/gdkx.h>
-#endif
-
-#define MIN_ENTRY_WIDTH 150
-#define INNER_BORDER 2
-
-#define PARENT_TYPE gtk_table_get_type ()
-
-static GtkObjectClass *parent_class;
-
-enum {
- E_ENTRY_CHANGED,
- E_ENTRY_ACTIVATE,
- E_ENTRY_POPUP,
- E_ENTRY_LAST_SIGNAL
-};
-
-static guint e_entry_signals[E_ENTRY_LAST_SIGNAL] = { 0 };
-
-/* Object argument IDs */
-enum {
- ARG_0,
- ARG_MODEL,
- ARG_EVENT_PROCESSOR,
- ARG_TEXT,
- ARG_FONT,
- ARG_FONTSET,
- ARG_FONT_GDK,
- ARG_ANCHOR,
- ARG_JUSTIFICATION,
- ARG_X_OFFSET,
- ARG_Y_OFFSET,
- ARG_FILL_COLOR,
- ARG_FILL_COLOR_GDK,
- ARG_FILL_COLOR_RGBA,
- ARG_FILL_STIPPLE,
- ARG_EDITABLE,
- ARG_USE_ELLIPSIS,
- ARG_ELLIPSIS,
- ARG_LINE_WRAP,
- ARG_BREAK_CHARACTERS,
- ARG_MAX_LINES,
- ARG_ALLOW_NEWLINES,
- ARG_DRAW_BORDERS,
- ARG_DRAW_BACKGROUND,
- ARG_CURSOR_POS
-};
-
-typedef struct _EEntryPrivate EEntryPrivate;
-struct _EEntryPrivate {
- GtkJustification justification;
-
- guint changed_proxy_tag;
- guint activate_proxy_tag;
- guint popup_proxy_tag;
-
- /* Data related to completions */
- ECompletion *completion;
- EEntryCompletionHandler handler;
- GtkWidget *completion_view;
- guint nonempty_signal_id;
- guint added_signal_id;
- guint full_signal_id;
- guint browse_signal_id;
- guint unbrowse_signal_id;
- guint activate_signal_id;
- GtkWidget *completion_view_popup;
- gboolean popup_is_visible;
- gchar *pre_browse_text;
- gint completion_delay;
- guint completion_delay_tag;
- gboolean ptr_grab;
- gboolean changed_since_keypress;
- guint changed_since_keypress_tag;
- gint last_completion_pos;
-
- guint draw_borders : 1;
-};
-
-static gboolean e_entry_is_empty (EEntry *entry);
-static void e_entry_show_popup (EEntry *entry, gboolean x);
-static void e_entry_start_completion (EEntry *entry);
-static void e_entry_start_delayed_completion (EEntry *entry, gint delay);
-static void e_entry_cancel_delayed_completion (EEntry *entry);
-
-static void
-canvas_size_allocate (GtkWidget *widget, GtkAllocation *alloc,
- EEntry *entry)
-{
- gint xthick;
- gint ythick;
- gnome_canvas_set_scroll_region (entry->canvas,
- 0, 0, alloc->width, alloc->height);
- gtk_object_set (GTK_OBJECT (entry->item),
- "clip_width", (double) (alloc->width),
- "clip_height", (double) (alloc->height),
- NULL);
-
- if (entry->priv->draw_borders) {
- xthick = 0;
- ythick = 0;
- } else {
- xthick = widget->style->klass->xthickness;
- ythick = widget->style->klass->ythickness;
- }
-
- switch (entry->priv->justification) {
- case GTK_JUSTIFY_RIGHT:
- e_canvas_item_move_absolute(GNOME_CANVAS_ITEM(entry->item),
- alloc->width - xthick, ythick);
- break;
- case GTK_JUSTIFY_CENTER:
- e_canvas_item_move_absolute(GNOME_CANVAS_ITEM(entry->item),
- alloc->width / 2, ythick);
- break;
- default:
- e_canvas_item_move_absolute(GNOME_CANVAS_ITEM(entry->item),
- xthick, ythick);
- break;
- }
-}
-
-static void
-canvas_size_request (GtkWidget *widget, GtkRequisition *requisition,
- EEntry *entry)
-{
- int border;
-
- g_return_if_fail (widget != NULL);
- g_return_if_fail (GNOME_IS_CANVAS (widget));
- g_return_if_fail (requisition != NULL);
-
- if (entry->priv->draw_borders)
- border = INNER_BORDER;
- else
- border = 0;
-
- requisition->width = MIN_ENTRY_WIDTH + (widget->style->klass->xthickness + border) * 2;
- requisition->height = (widget->style->font->ascent +
- widget->style->font->descent +
- (widget->style->klass->ythickness + border) * 2);
-}
-
-static gint
-canvas_focus_in_event (GtkWidget *widget, GdkEventFocus *focus, EEntry *entry)
-{
- if (entry->canvas->focused_item != GNOME_CANVAS_ITEM(entry->item))
- gnome_canvas_item_grab_focus(GNOME_CANVAS_ITEM(entry->item));
-
- return FALSE;
-}
-
-static void
-e_entry_text_keypress (EText *text, guint keyval, guint state, EEntry *entry)
-{
- if (entry->priv->changed_since_keypress_tag) {
- gtk_timeout_remove (entry->priv->changed_since_keypress_tag);
- entry->priv->changed_since_keypress_tag = 0;
- }
-
- if (entry->priv->changed_since_keypress
- || (entry->priv->popup_is_visible && e_entry_get_position (entry) != entry->priv->last_completion_pos)) {
- if (e_entry_is_empty (entry)) {
- e_entry_cancel_delayed_completion (entry);
- e_entry_show_popup (entry, FALSE);
- } else if (entry->priv->popup_is_visible) {
- e_entry_start_delayed_completion (entry, 1);
- } else if (entry->priv->completion)
- e_entry_start_delayed_completion (entry, entry->priv->completion_delay);
- }
- entry->priv->changed_since_keypress = FALSE;
-}
-
-static gint
-changed_since_keypress_timeout_fn (gpointer user_data)
-{
- EEntry *entry = E_ENTRY (user_data);
- entry->priv->changed_since_keypress = FALSE;
- entry->priv->changed_since_keypress_tag = 0;
- return FALSE;
-}
-
-static void
-e_entry_proxy_changed (EText *text, EEntry *entry)
-{
- if (entry->priv->changed_since_keypress_tag)
- gtk_timeout_remove (entry->priv->changed_since_keypress_tag);
- entry->priv->changed_since_keypress = TRUE;
- entry->priv->changed_since_keypress_tag = gtk_timeout_add (20, changed_since_keypress_timeout_fn, entry);
-
- gtk_signal_emit (GTK_OBJECT (entry), e_entry_signals [E_ENTRY_CHANGED]);
-}
-
-static void
-e_entry_proxy_activate (EText *text, EEntry *entry)
-{
- gtk_signal_emit (GTK_OBJECT (entry), e_entry_signals [E_ENTRY_ACTIVATE]);
-}
-
-static void
-e_entry_proxy_popup (EText *text, GdkEventButton *ev, gint pos, EEntry *entry)
-{
- gtk_signal_emit (GTK_OBJECT (entry), e_entry_signals [E_ENTRY_POPUP], ev, pos);
-}
-
-static void
-e_entry_init (GtkObject *object)
-{
- EEntry *entry = E_ENTRY (object);
- GtkTable *gtk_table = GTK_TABLE (object);
-
- entry->priv = g_new0 (EEntryPrivate, 1);
-
- entry->canvas = GNOME_CANVAS (e_canvas_new ());
-
- gtk_signal_connect (GTK_OBJECT (entry->canvas),
- "size_allocate",
- GTK_SIGNAL_FUNC (canvas_size_allocate),
- entry);
-
- gtk_signal_connect (GTK_OBJECT (entry->canvas),
- "size_request",
- GTK_SIGNAL_FUNC (canvas_size_request),
- entry);
-
- gtk_signal_connect(GTK_OBJECT (entry->canvas),
- "focus_in_event",
- GTK_SIGNAL_FUNC(canvas_focus_in_event),
- entry);
-
- entry->priv->draw_borders = TRUE;
-
- entry->item = E_TEXT(gnome_canvas_item_new(
- gnome_canvas_root (entry->canvas),
- e_text_get_type(),
- "clip", TRUE,
- "fill_clip_rectangle", TRUE,
- "anchor", GTK_ANCHOR_NW,
- "draw_borders", TRUE,
- "draw_background", TRUE,
- "max_lines", 1,
- "editable", TRUE,
- NULL));
-
- gtk_signal_connect (GTK_OBJECT (entry->item),
- "keypress",
- GTK_SIGNAL_FUNC (e_entry_text_keypress),
- entry);
-
- entry->priv->justification = GTK_JUSTIFY_LEFT;
- gtk_table_attach (gtk_table, GTK_WIDGET (entry->canvas),
- 0, 1, 0, 1,
- GTK_EXPAND | GTK_FILL | GTK_SHRINK,
- GTK_EXPAND | GTK_FILL | GTK_SHRINK,
- 0, 0);
- gtk_widget_show (GTK_WIDGET (entry->canvas));
-
- /*
- * Proxy functions: we proxy the changed and activate signals
- * from the item to ourselves
- */
- entry->priv->changed_proxy_tag = gtk_signal_connect (
- GTK_OBJECT (entry->item),
- "changed",
- GTK_SIGNAL_FUNC (e_entry_proxy_changed),
- entry);
- entry->priv->activate_proxy_tag = gtk_signal_connect (
- GTK_OBJECT (entry->item),
- "activate",
- GTK_SIGNAL_FUNC (e_entry_proxy_activate),
- entry);
- entry->priv->popup_proxy_tag = gtk_signal_connect (
- GTK_OBJECT (entry->item),
- "popup",
- GTK_SIGNAL_FUNC (e_entry_proxy_popup),
- entry);
-
- entry->priv->completion_delay = 1;
-}
-
-/**
- * e_entry_construct
- *
- * Constructs the given EEntry.
- *
- **/
-void
-e_entry_construct (EEntry *entry)
-{
- /* Do nothing */
-}
-
-
-/**
- * e_entry_new
- *
- * Creates a new EEntry.
- *
- * Returns: The new EEntry
- **/
-GtkWidget *
-e_entry_new (void)
-{
- EEntry *entry;
- entry = gtk_type_new (e_entry_get_type ());
- e_entry_construct (entry);
-
- return GTK_WIDGET (entry);
-}
-
-const gchar *
-e_entry_get_text (EEntry *entry)
-{
- g_return_val_if_fail (entry != NULL && E_IS_ENTRY (entry), NULL);
-
- return e_text_model_get_text (entry->item->model);
-}
-
-void
-e_entry_set_text (EEntry *entry, const gchar *txt)
-{
- g_return_if_fail (entry != NULL && E_IS_ENTRY (entry));
-
- e_text_model_set_text (entry->item->model, txt);
-}
-
-static void
-e_entry_set_text_quiet (EEntry *entry, const gchar *txt)
-{
- g_return_if_fail (entry != NULL && E_IS_ENTRY (entry));
-
- gtk_signal_handler_block (GTK_OBJECT (entry->item), entry->priv->changed_proxy_tag);
- e_entry_set_text (entry, txt);
- gtk_signal_handler_unblock (GTK_OBJECT (entry->item), entry->priv->changed_proxy_tag);
-}
-
-
-void
-e_entry_set_editable (EEntry *entry, gboolean am_i_editable)
-{
- g_return_if_fail (entry != NULL && E_IS_ENTRY (entry));
-
- gtk_object_set (GTK_OBJECT (entry->item), "editable", am_i_editable, NULL);
-}
-
-gint
-e_entry_get_position (EEntry *entry)
-{
- g_return_val_if_fail (entry != NULL && E_IS_ENTRY (entry), -1);
-
- return entry->item->selection_start;
-}
-
-void
-e_entry_set_position (EEntry *entry, gint pos)
-{
- g_return_if_fail (entry != NULL && E_IS_ENTRY (entry));
- if (pos < 0)
- pos = 0;
- else if (pos > e_text_model_get_text_length (entry->item->model))
- pos = e_text_model_get_text_length (entry->item->model);
-
- entry->item->selection_start = entry->item->selection_end = pos;
-}
-
-void
-e_entry_select_region (EEntry *entry, gint pos1, gint pos2)
-{
- gint len;
-
- g_return_if_fail (entry != NULL && E_IS_ENTRY (entry));
-
- len = e_text_model_get_text_length (entry->item->model);
- pos1 = CLAMP (pos1, 0, len);
- pos2 = CLAMP (pos2, 0, len);
-
- entry->item->selection_start = MIN (pos1, pos2);
- entry->item->selection_end = MAX (pos1, pos2);
-}
-
-/** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **/
-
-/*** Completion-related code ***/
-
-static gboolean
-e_entry_is_empty (EEntry *entry)
-{
- const gchar *txt = e_entry_get_text (entry);
-
- if (txt == NULL)
- return TRUE;
-
- while (*txt) {
- if (!isspace ((gint) *txt))
- return FALSE;
- ++txt;
- }
-
- return TRUE;
-}
-
-static void
-e_entry_show_popup (EEntry *entry, gboolean visible)
-{
- GtkWidget *pop = entry->priv->completion_view_popup;
-
- if (pop == NULL)
- return;
-
- if (visible) {
- GtkAllocation *dim = &(GTK_WIDGET (entry)->allocation);
- gint x, y, xo, yo, fudge;
- const GdkEventMask grab_mask = (GdkEventMask)GDK_BUTTON_PRESS_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON_RELEASE_MASK;
-
- /* Figure out where to put our popup. */
- gdk_window_get_origin (GTK_WIDGET (entry)->window, &xo, &yo);
- x = xo + dim->x;
- y = yo + dim->height + dim->y;
-
- /* Put our popup slightly to the right and up, to try to give a visual cue that this popup
- is tied to this entry. Otherwise one-row popups can sort of "blend" with an entry
- directly below. */
- fudge = MAX (dim->height/10, 3); /* just in case we are using a really big font, etc. */
- x += 2*fudge;
- y -= fudge;
-
- gtk_widget_set_uposition (pop, x, y);
- e_completion_view_set_width (E_COMPLETION_VIEW (entry->priv->completion_view), dim->width);
-
-#ifdef EVIL_POINTER_WARPING_HACK
- /*
- I should have learned by now to listen to Havoc...
- http://developer.gnome.org/doc/GGAD/faqs.html
- */
-
- if (! entry->priv->popup_is_visible) {
- GdkWindow *gwin = GTK_WIDGET (entry)->window;
- gint xx, yy;
- gdk_window_get_pointer (gwin, &xx, &yy, NULL);
- xx += xo;
- yy += yo;
-
- /* If we are inside the "zone of death" where the popup will appear, warp the pointer to safety.
- This is a horrible thing to do. */
- if (y <= yy && yy < yy + dim->height && x <= xx && xx < xx + dim->width) {
- XWarpPointer (GDK_WINDOW_XDISPLAY (gwin), None, GDK_WINDOW_XWINDOW (gwin),
- 0, 0, 0, 0,
- xx - xo, (y-1) - yo);
- }
- }
-#endif
-
- gtk_widget_show (pop);
-
-
- if (! entry->priv->ptr_grab) {
- entry->priv->ptr_grab = (0 == gdk_pointer_grab (GTK_WIDGET (entry->priv->completion_view)->window, TRUE,
- grab_mask, NULL, NULL, GDK_CURRENT_TIME));
- if (entry->priv->ptr_grab) {
- gtk_grab_add (GTK_WIDGET (entry->priv->completion_view));
- }
- }
-
-
- } else {
-
- gtk_widget_hide (pop);
-
- if (entry->priv->ptr_grab) {
- gdk_pointer_ungrab (GDK_CURRENT_TIME);
- gtk_grab_remove (GTK_WIDGET (entry->priv->completion_view));
- }
-
- entry->priv->ptr_grab = FALSE;
-
- entry->priv->last_completion_pos = -1;
- }
-
- e_completion_view_set_editable (E_COMPLETION_VIEW (entry->priv->completion_view), visible);
- entry->priv->popup_is_visible = visible;
-}
-
-static void
-e_entry_refresh_popup (EEntry *entry)
-{
- if (entry->priv->popup_is_visible)
- e_entry_show_popup (entry, TRUE);
-}
-
-static void
-e_entry_start_completion (EEntry *entry)
-{
- if (entry->priv->completion == NULL)
- return;
-
- e_entry_cancel_delayed_completion (entry);
-
- if (e_entry_is_empty (entry))
- return;
-
- e_completion_begin_search (entry->priv->completion,
- e_entry_get_text (entry),
- entry->priv->last_completion_pos = e_entry_get_position (entry),
- 0); /* No limit. Probably a bad idea. */
-}
-
-static gboolean
-start_delayed_cb (gpointer user_data)
-{
- EEntry *entry = E_ENTRY (user_data);
- entry->priv->completion_delay_tag = 0;
- e_entry_start_completion (entry);
- return FALSE;
-}
-
-static void
-e_entry_start_delayed_completion (EEntry *entry, gint delay)
-{
- if (delay < 0)
- return;
-
- e_entry_cancel_delayed_completion (entry);
- entry->priv->completion_delay_tag = gtk_timeout_add (MAX (delay, 1), start_delayed_cb, entry);
-}
-
-static void
-e_entry_cancel_delayed_completion (EEntry *entry)
-{
- if (entry->priv->completion == NULL)
- return;
-
- if (entry->priv->completion_delay_tag) {
- gtk_timeout_remove (entry->priv->completion_delay_tag);
- entry->priv->completion_delay_tag = 0;
- }
-}
-
-static void
-nonempty_cb (ECompletionView *view, gpointer user_data)
-{
- EEntry *entry = E_ENTRY (user_data);
-
- e_entry_show_popup (entry, TRUE);
-}
-
-static void
-added_cb (ECompletionView *view, gpointer user_data)
-{
- EEntry *entry = E_ENTRY (user_data);
- e_entry_refresh_popup (entry);
-}
-
-static void
-full_cb (ECompletionView *view, gpointer user_data)
-{
- EEntry *entry = E_ENTRY (user_data);
-
- e_entry_show_popup (entry, view->choice_count > 0);
-}
-
-static void
-browse_cb (ECompletionView *view, const gchar *txt, gpointer user_data)
-{
- EEntry *entry = E_ENTRY (user_data);
-
- if (txt == NULL) {
- /* Requesting a completion. */
- e_entry_start_completion (entry);
- return;
- }
-
- if (entry->priv->pre_browse_text == NULL)
- entry->priv->pre_browse_text = g_strdup (e_entry_get_text (entry));
-
- /* If there is no other handler in place, echo the selected completion in
- the entry. */
- if (entry->priv->handler == NULL)
- e_entry_set_text_quiet (entry, txt);
-}
-
-static void
-unbrowse_cb (ECompletionView *view, gpointer user_data)
-{
- EEntry *entry = E_ENTRY (user_data);
-
- if (entry->priv->pre_browse_text) {
-
- if (entry->priv->handler == NULL)
- e_entry_set_text_quiet (entry, entry->priv->pre_browse_text);
-
- g_free (entry->priv->pre_browse_text);
- entry->priv->pre_browse_text = NULL;
- }
-
- e_entry_show_popup (entry, FALSE);
-}
-
-static void
-activate_cb (ECompletionView *view, const gchar *txt, gpointer extra_data, gpointer user_data)
-{
- EEntry *entry = E_ENTRY (user_data);
-
- e_entry_cancel_delayed_completion (entry);
-
- g_free (entry->priv->pre_browse_text);
- entry->priv->pre_browse_text = NULL;
- e_entry_show_popup (entry, FALSE);
-
- if (entry->priv->handler)
- entry->priv->handler (entry, txt, extra_data);
- else
- e_entry_set_text (entry, txt);
-
- e_entry_cancel_delayed_completion (entry);
-}
-
-void
-e_entry_enable_completion (EEntry *entry, ECompletion *completion)
-{
- g_return_if_fail (entry != NULL && E_IS_ENTRY (entry));
- g_return_if_fail (completion != NULL && E_IS_COMPLETION (completion));
-
- e_entry_enable_completion_full (entry, completion, -1, NULL);
-}
-
-static void
-button_press_cb (GtkWidget *w, GdkEvent *ev, gpointer user_data)
-{
- EEntry *entry = E_ENTRY (user_data);
- GtkWidget *child;
-
- /* Bail out if our click happened inside of our widget. */
- child = gtk_get_event_widget (ev);
- if (child != w) {
- while (child) {
- if (child == w)
- return;
- child = child->parent;
- }
- }
-
- /* Treat this as an unbrowse */
- unbrowse_cb (E_COMPLETION_VIEW (w), entry);
-}
-
-static gint
-key_press_cb (GtkWidget *w, GdkEventKey *ev, gpointer user_data)
-{
- gint rv = 0;
- /* Forward signal */
- gtk_signal_emit_by_name (GTK_OBJECT (user_data), "key_press_event", ev, &rv);
- return rv;
-}
-
-static gint
-key_release_cb (GtkWidget *w, GdkEventKey *ev, gpointer user_data)
-{
- gint rv = 0;
- /* Forward signal */
- gtk_signal_emit_by_name (GTK_OBJECT (user_data), "key_release_event", ev, &rv);
- return rv;
-}
-
-void
-e_entry_enable_completion_full (EEntry *entry, ECompletion *completion, gint delay, EEntryCompletionHandler handler)
-{
- g_return_if_fail (entry != NULL && E_IS_ENTRY (entry));
- g_return_if_fail (completion != NULL && E_IS_COMPLETION (completion));
-
- /* For now, completion can't be changed mid-stream. */
- g_return_if_fail (entry->priv->completion == NULL);
-
- entry->priv->completion = completion;
- gtk_object_ref (GTK_OBJECT (completion));
- gtk_object_sink (GTK_OBJECT (completion));
-
- entry->priv->completion_delay = delay;
- entry->priv->handler = handler;
-
- entry->priv->completion_view = e_completion_view_new (completion);
- /* Make the up and down keys enable and disable completions. */
- e_completion_view_set_complete_key (E_COMPLETION_VIEW (entry->priv->completion_view), GDK_Down);
- e_completion_view_set_uncomplete_key (E_COMPLETION_VIEW (entry->priv->completion_view), GDK_Up);
-
- gtk_signal_connect_after (GTK_OBJECT (entry->priv->completion_view),
- "button_press_event",
- GTK_SIGNAL_FUNC (button_press_cb),
- entry);
-
- entry->priv->nonempty_signal_id = gtk_signal_connect (GTK_OBJECT (entry->priv->completion_view),
- "nonempty",
- GTK_SIGNAL_FUNC (nonempty_cb),
- entry);
-
- entry->priv->added_signal_id = gtk_signal_connect (GTK_OBJECT (entry->priv->completion_view),
- "added",
- GTK_SIGNAL_FUNC (added_cb),
- entry);
-
- entry->priv->full_signal_id = gtk_signal_connect (GTK_OBJECT (entry->priv->completion_view),
- "full",
- GTK_SIGNAL_FUNC (full_cb),
- entry);
-
- entry->priv->browse_signal_id = gtk_signal_connect (GTK_OBJECT (entry->priv->completion_view),
- "browse",
- GTK_SIGNAL_FUNC (browse_cb),
- entry);
-
- entry->priv->unbrowse_signal_id = gtk_signal_connect (GTK_OBJECT (entry->priv->completion_view),
- "unbrowse",
- GTK_SIGNAL_FUNC (unbrowse_cb),
- entry);
-
- entry->priv->activate_signal_id = gtk_signal_connect (GTK_OBJECT (entry->priv->completion_view),
- "activate",
- GTK_SIGNAL_FUNC (activate_cb),
- entry);
-
- entry->priv->completion_view_popup = gtk_window_new (GTK_WINDOW_POPUP);
-
- gtk_signal_connect (GTK_OBJECT (entry->priv->completion_view_popup),
- "key_press_event",
- GTK_SIGNAL_FUNC (key_press_cb),
- entry->canvas);
- gtk_signal_connect (GTK_OBJECT (entry->priv->completion_view_popup),
- "key_release_event",
- GTK_SIGNAL_FUNC (key_release_cb),
- entry->canvas);
-
- gtk_object_ref (GTK_OBJECT (entry->priv->completion_view_popup));
- gtk_object_sink (GTK_OBJECT (entry->priv->completion_view_popup));
- gtk_window_set_policy (GTK_WINDOW (entry->priv->completion_view_popup), FALSE, TRUE, FALSE);
- gtk_container_add (GTK_CONTAINER (entry->priv->completion_view_popup), entry->priv->completion_view);
- gtk_widget_show (entry->priv->completion_view);
-
- e_completion_view_connect_keys (
- E_COMPLETION_VIEW (entry->priv->completion_view),
- GTK_WIDGET (entry->canvas));
-}
-
-/** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **/
-
-static void
-et_get_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- EEntry *entry = E_ENTRY (o);
- GtkObject *item = GTK_OBJECT (entry->item);
-
- switch (arg_id){
- case ARG_MODEL:
- gtk_object_get(item,
- "model", &GTK_VALUE_OBJECT (*arg),
- NULL);
- break;
-
- case ARG_EVENT_PROCESSOR:
- gtk_object_get(item,
- "event_processor", &GTK_VALUE_OBJECT (*arg),
- NULL);
- break;
-
- case ARG_TEXT:
- gtk_object_get(item,
- "text", &GTK_VALUE_STRING (*arg),
- NULL);
- break;
-
- case ARG_FONT_GDK:
- gtk_object_get(item,
- "font_gdk", &GTK_VALUE_BOXED (*arg),
- NULL);
- break;
-
- case ARG_JUSTIFICATION:
- gtk_object_get(item,
- "justification", &GTK_VALUE_ENUM (*arg),
- NULL);
- break;
-
- case ARG_FILL_COLOR_GDK:
- gtk_object_get(item,
- "fill_color_gdk", &GTK_VALUE_BOXED (*arg),
- NULL);
- break;
-
- case ARG_FILL_COLOR_RGBA:
- gtk_object_get(item,
- "fill_color_rgba", &GTK_VALUE_UINT (*arg),
- NULL);
- break;
-
- case ARG_FILL_STIPPLE:
- gtk_object_get(item,
- "fill_stiple", &GTK_VALUE_BOXED (*arg),
- NULL);
- break;
-
- case ARG_EDITABLE:
- gtk_object_get(item,
- "editable", &GTK_VALUE_BOOL (*arg),
- NULL);
- break;
-
- case ARG_USE_ELLIPSIS:
- gtk_object_get(item,
- "use_ellipsis", &GTK_VALUE_BOOL (*arg),
- NULL);
- break;
-
- case ARG_ELLIPSIS:
- gtk_object_get(item,
- "ellipsis", &GTK_VALUE_STRING (*arg),
- NULL);
- break;
-
- case ARG_LINE_WRAP:
- gtk_object_get(item,
- "line_wrap", &GTK_VALUE_BOOL (*arg),
- NULL);
- break;
-
- case ARG_BREAK_CHARACTERS:
- gtk_object_get(item,
- "break_characters", &GTK_VALUE_STRING (*arg),
- NULL);
- break;
-
- case ARG_MAX_LINES:
- gtk_object_get(item,
- "max_lines", &GTK_VALUE_INT (*arg),
- NULL);
- break;
- case ARG_ALLOW_NEWLINES:
- gtk_object_get(item,
- "allow_newlines", &GTK_VALUE_BOOL (*arg),
- NULL);
- break;
-
- case ARG_DRAW_BORDERS:
- GTK_VALUE_BOOL (*arg) = entry->priv->draw_borders;
- break;
-
- case ARG_DRAW_BACKGROUND:
- gtk_object_get (item,
- "draw_background", &GTK_VALUE_BOOL (*arg),
- NULL);
- break;
-
- case ARG_CURSOR_POS:
- gtk_object_get (item,
- "cursor_pos", &GTK_VALUE_INT (*arg),
- NULL);
-
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
-
-static void
-et_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
-{
- EEntry *entry = E_ENTRY (o);
- GtkObject *item = GTK_OBJECT (entry->item);
- GtkAnchorType anchor;
- double width, height;
- gint xthick;
- gint ythick;
- GtkWidget *widget = GTK_WIDGET(entry->canvas);
-
- switch (arg_id){
- case ARG_MODEL:
- gtk_object_set(item,
- "model", GTK_VALUE_OBJECT (*arg),
- NULL);
- break;
-
- case ARG_EVENT_PROCESSOR:
- gtk_object_set(item,
- "event_processor", GTK_VALUE_OBJECT (*arg),
- NULL);
- break;
-
- case ARG_TEXT:
-
- gtk_object_set(item,
- "text", GTK_VALUE_STRING (*arg),
- NULL);
- break;
-
- case ARG_FONT:
- gtk_object_set(item,
- "font", GTK_VALUE_STRING (*arg),
- NULL);
- break;
-
- case ARG_FONTSET:
- gtk_object_set(item,
- "fontset", GTK_VALUE_STRING (*arg),
- NULL);
- break;
-
- case ARG_FONT_GDK:
- gtk_object_set(item,
- "font_gdk", GTK_VALUE_BOXED (*arg),
- NULL);
- break;
-
- case ARG_JUSTIFICATION:
- entry->priv->justification = GTK_VALUE_ENUM (*arg);
- gtk_object_get(item,
- "clip_width", &width,
- "clip_height", &height,
- NULL);
-
- if (entry->priv->draw_borders) {
- xthick = 0;
- ythick = 0;
- } else {
- xthick = widget->style->klass->xthickness;
- ythick = widget->style->klass->ythickness;
- }
-
- switch (entry->priv->justification) {
- case GTK_JUSTIFY_CENTER:
- anchor = GTK_ANCHOR_N;
- e_canvas_item_move_absolute(GNOME_CANVAS_ITEM(entry->item), width / 2, ythick);
- break;
- case GTK_JUSTIFY_RIGHT:
- anchor = GTK_ANCHOR_NE;
- e_canvas_item_move_absolute(GNOME_CANVAS_ITEM(entry->item), width - xthick, ythick);
- break;
- default:
- anchor = GTK_ANCHOR_NW;
- e_canvas_item_move_absolute(GNOME_CANVAS_ITEM(entry->item), xthick, ythick);
- break;
- }
- gtk_object_set(item,
- "justification", entry->priv->justification,
- "anchor", anchor,
- NULL);
- break;
-
- case ARG_FILL_COLOR:
- gtk_object_set(item,
- "fill_color", GTK_VALUE_STRING (*arg),
- NULL);
- break;
-
- case ARG_FILL_COLOR_GDK:
- gtk_object_set(item,
- "fill_color_gdk", GTK_VALUE_BOXED (*arg),
- NULL);
- break;
-
- case ARG_FILL_COLOR_RGBA:
- gtk_object_set(item,
- "fill_color_rgba", GTK_VALUE_UINT (*arg),
- NULL);
- break;
-
- case ARG_FILL_STIPPLE:
- gtk_object_set(item,
- "fill_stiple", GTK_VALUE_BOXED (*arg),
- NULL);
- break;
-
- case ARG_EDITABLE:
- gtk_object_set(item,
- "editable", GTK_VALUE_BOOL (*arg),
- NULL);
- break;
-
- case ARG_USE_ELLIPSIS:
- gtk_object_set(item,
- "use_ellipsis", GTK_VALUE_BOOL (*arg),
- NULL);
- break;
-
- case ARG_ELLIPSIS:
- gtk_object_set(item,
- "ellipsis", GTK_VALUE_STRING (*arg),
- NULL);
- break;
-
- case ARG_LINE_WRAP:
- gtk_object_set(item,
- "line_wrap", GTK_VALUE_BOOL (*arg),
- NULL);
- break;
-
- case ARG_BREAK_CHARACTERS:
- gtk_object_set(item,
- "break_characters", GTK_VALUE_STRING (*arg),
- NULL);
- break;
-
- case ARG_MAX_LINES:
- gtk_object_set(item,
- "max_lines", GTK_VALUE_INT (*arg),
- NULL);
- break;
-
- case ARG_ALLOW_NEWLINES:
- gtk_object_set(item,
- "allow_newlines", GTK_VALUE_BOOL (*arg),
- NULL);
- break;
-
- case ARG_DRAW_BORDERS: {
- gboolean need_queue;
-
- need_queue = (entry->priv->draw_borders ^ GTK_VALUE_BOOL (*arg));
- gtk_object_set (item, "draw_borders", GTK_VALUE_BOOL (*arg), NULL);
- entry->priv->draw_borders = GTK_VALUE_BOOL (*arg);
- if (need_queue)
- gtk_widget_queue_resize (GTK_WIDGET (entry));
- break;
- }
-
- case ARG_CURSOR_POS:
- gtk_object_set (item,
- "cursor_pos", GTK_VALUE_INT (*arg), NULL);
- break;
-
- case ARG_DRAW_BACKGROUND:
- gtk_object_set (item, "draw_background",
- GTK_VALUE_BOOL (*arg), NULL);
- break;
- }
-}
-
-static void
-e_entry_destroy (GtkObject *object)
-{
- EEntry *entry = E_ENTRY (object);
-
- if (entry->priv->completion_delay_tag)
- gtk_timeout_remove (entry->priv->completion_delay_tag);
-
- if (entry->priv->completion)
- gtk_object_unref (GTK_OBJECT (entry->priv->completion));
- if (entry->priv->completion_view_popup)
- gtk_widget_destroy (entry->priv->completion_view_popup);
- g_free (entry->priv->pre_browse_text);
-
- if (entry->priv->changed_since_keypress_tag)
- gtk_timeout_remove (entry->priv->changed_since_keypress_tag);
-
- if (entry->priv->ptr_grab)
- gdk_pointer_ungrab (GDK_CURRENT_TIME);
-
- g_free (entry->priv);
- entry->priv = NULL;
-}
-
-static void
-e_entry_class_init (GtkObjectClass *object_class)
-{
- EEntryClass *klass = E_ENTRY_CLASS(object_class);
-
- parent_class = gtk_type_class (PARENT_TYPE);
-
- object_class->set_arg = et_set_arg;
- object_class->get_arg = et_get_arg;
- object_class->destroy = e_entry_destroy;
-
- klass->changed = NULL;
- klass->activate = NULL;
-
- e_entry_signals[E_ENTRY_CHANGED] = gtk_signal_new ("changed",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (EEntryClass, changed),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- e_entry_signals[E_ENTRY_ACTIVATE] = gtk_signal_new ("activate",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (EEntryClass, activate),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- e_entry_signals[E_ENTRY_POPUP] = gtk_signal_new ("popup",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (EEntryClass, popup),
- gtk_marshal_NONE__POINTER_INT,
- GTK_TYPE_NONE, 2, GTK_TYPE_POINTER, GTK_TYPE_INT);
-
-
- gtk_object_class_add_signals (object_class, e_entry_signals, E_ENTRY_LAST_SIGNAL);
-
- gtk_object_add_arg_type ("EEntry::model",
- GTK_TYPE_OBJECT, GTK_ARG_READWRITE, ARG_MODEL);
- gtk_object_add_arg_type ("EEntry::event_processor",
- GTK_TYPE_OBJECT, GTK_ARG_READWRITE, ARG_EVENT_PROCESSOR);
- gtk_object_add_arg_type ("EEntry::text",
- GTK_TYPE_STRING, GTK_ARG_READWRITE, ARG_TEXT);
- gtk_object_add_arg_type ("EEntry::font",
- GTK_TYPE_STRING, GTK_ARG_WRITABLE, ARG_FONT);
- gtk_object_add_arg_type ("EEntry::fontset",
- GTK_TYPE_STRING, GTK_ARG_WRITABLE, ARG_FONTSET);
- gtk_object_add_arg_type ("EEntry::font_gdk",
- GTK_TYPE_GDK_FONT, GTK_ARG_READWRITE, ARG_FONT_GDK);
- gtk_object_add_arg_type ("EEntry::justification",
- GTK_TYPE_JUSTIFICATION, GTK_ARG_READWRITE, ARG_JUSTIFICATION);
- gtk_object_add_arg_type ("EEntry::fill_color",
- GTK_TYPE_STRING, GTK_ARG_WRITABLE, ARG_FILL_COLOR);
- gtk_object_add_arg_type ("EEntry::fill_color_gdk",
- GTK_TYPE_GDK_COLOR, GTK_ARG_READWRITE, ARG_FILL_COLOR_GDK);
- gtk_object_add_arg_type ("EEntry::fill_color_rgba",
- GTK_TYPE_UINT, GTK_ARG_READWRITE, ARG_FILL_COLOR_RGBA);
- gtk_object_add_arg_type ("EEntry::fill_stipple",
- GTK_TYPE_GDK_WINDOW, GTK_ARG_READWRITE, ARG_FILL_STIPPLE);
- gtk_object_add_arg_type ("EEntry::editable",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_EDITABLE);
- gtk_object_add_arg_type ("EEntry::use_ellipsis",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_USE_ELLIPSIS);
- gtk_object_add_arg_type ("EEntry::ellipsis",
- GTK_TYPE_STRING, GTK_ARG_READWRITE, ARG_ELLIPSIS);
- gtk_object_add_arg_type ("EEntry::line_wrap",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_LINE_WRAP);
- gtk_object_add_arg_type ("EEntry::break_characters",
- GTK_TYPE_STRING, GTK_ARG_READWRITE, ARG_BREAK_CHARACTERS);
- gtk_object_add_arg_type ("EEntry::max_lines",
- GTK_TYPE_INT, GTK_ARG_READWRITE, ARG_MAX_LINES);
- gtk_object_add_arg_type ("EEntry::allow_newlines",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_ALLOW_NEWLINES);
- gtk_object_add_arg_type ("EEntry::draw_borders",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_DRAW_BORDERS);
- gtk_object_add_arg_type ("EEntry::draw_background",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_DRAW_BACKGROUND);
- gtk_object_add_arg_type ("EEntry::cursor_pos",
- GTK_TYPE_INT, GTK_ARG_READWRITE, ARG_CURSOR_POS);
-}
-
-E_MAKE_TYPE(e_entry, "EEntry", EEntry, e_entry_class_init, e_entry_init, PARENT_TYPE);
diff --git a/widgets/text/e-entry.h b/widgets/text/e-entry.h
deleted file mode 100644
index 373a6843e9..0000000000
--- a/widgets/text/e-entry.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/*
- * EEntry: An EText-based entry widget
- *
- * Authors:
- * Miguel de Icaza <miguel@helixcode.com>
- * Chris Lahey <clahey@helixcode.com>
- * Jon Trowbridge <trow@ximian.com>
- *
- * Copyright (C) 1999, 2000, 2001 Ximian Inc.
- */
-
-/*
- * 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-
-#ifndef _E_ENTRY_H_
-#define _E_ENTRY_H_
-
-#include <libgnomeui/gnome-canvas.h>
-#include <gtk/gtktable.h>
-#include <gnome-xml/tree.h>
-#include <gal/e-text/e-text.h>
-#include "e-completion.h"
-
-
-BEGIN_GNOME_DECLS
-
-#define E_ENTRY_TYPE (e_entry_get_type ())
-#define E_ENTRY(o) (GTK_CHECK_CAST ((o), E_ENTRY_TYPE, EEntry))
-#define E_ENTRY_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_ENTRY_TYPE, EEntryClass))
-#define E_IS_ENTRY(o) (GTK_CHECK_TYPE ((o), E_ENTRY_TYPE))
-#define E_IS_ENTRY_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_ENTRY_TYPE))
-
-typedef struct _EEntry EEntry;
-typedef struct _EEntryClass EEntryClass;
-struct _EEntryPrivate;
-
-typedef void (*EEntryCompletionHandler) (EEntry *entry, const gchar *text, gpointer extra_data);
-
-struct _EEntry {
- GtkTable parent;
-
- GnomeCanvas *canvas;
- EText *item;
-
- struct _EEntryPrivate *priv;
-};
-
-struct _EEntryClass {
- GtkTableClass parent_class;
-
- void (* changed) (EEntry *entry);
- void (* activate) (EEntry *entry);
- void (* popup) (EEntry *entry, GdkEventButton *ev, gint pos);
-};
-
-GtkType e_entry_get_type (void);
-
-void e_entry_construct (EEntry *entry);
-GtkWidget *e_entry_new (void);
-
-const gchar *e_entry_get_text (EEntry *entry);
-void e_entry_set_text (EEntry *entry, const gchar *text);
-
-gint e_entry_get_position (EEntry *entry);
-void e_entry_set_position (EEntry *entry, gint);
-void e_entry_select_region (EEntry *entry, gint start, gint end);
-
-void e_entry_set_editable (EEntry *entry, gboolean editable);
-
-void e_entry_enable_completion (EEntry *entry, ECompletion *completion);
-void e_entry_enable_completion_full (EEntry *entry, ECompletion *completion, gint autocomplete_delay,
- EEntryCompletionHandler handler);
-
-END_GNOME_DECLS
-
-#endif /* _E_ENTRY_H_ */
diff --git a/widgets/text/e-table-text-model.c b/widgets/text/e-table-text-model.c
deleted file mode 100644
index daf0456110..0000000000
--- a/widgets/text/e-table-text-model.c
+++ /dev/null
@@ -1,226 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* ETableTextModel - Text item model for evolution.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Chris Lahey <clahey@umich.edu>
- *
- * A majority of code taken from:
- *
- * Text item type for GnomeCanvas widget
- *
- * GnomeCanvas is basically a port of the Tk toolkit's most excellent
- * canvas widget. Tk is copyrighted by the Regents of the University
- * of California, Sun Microsystems, and other parties.
- *
- * Copyright (C) 1998 The Free Software Foundation
- *
- * Author: Federico Mena <federico@nuclecu.unam.mx> */
-
-#include <config.h>
-#include <ctype.h>
-#include <gtk/gtksignal.h>
-#include "e-table-text-model.h"
-
-static void e_table_text_model_class_init (ETableTextModelClass *class);
-static void e_table_text_model_init (ETableTextModel *model);
-static void e_table_text_model_destroy (GtkObject *object);
-
-static const gchar *e_table_text_model_get_text (ETextModel *model);
-static void e_table_text_model_set_text (ETextModel *model, const gchar *text);
-static void e_table_text_model_insert (ETextModel *model, gint postion, const gchar *text);
-static void e_table_text_model_insert_length (ETextModel *model, gint postion, const gchar *text, gint length);
-static void e_table_text_model_delete (ETextModel *model, gint postion, gint length);
-
-static GtkObject *parent_class;
-
-
-
-/**
- * e_table_text_model_get_type:
- * @void:
- *
- * Registers the &ETableTextModel class if necessary, and returns the type ID
- * associated to it.
- *
- * Return value: The type ID of the &ETableTextModel class.
- **/
-GtkType
-e_table_text_model_get_type (void)
-{
- static GtkType model_type = 0;
-
- if (!model_type) {
- GtkTypeInfo model_info = {
- "ETableTextModel",
- sizeof (ETableTextModel),
- sizeof (ETableTextModelClass),
- (GtkClassInitFunc) e_table_text_model_class_init,
- (GtkObjectInitFunc) e_table_text_model_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- model_type = gtk_type_unique (e_text_model_get_type (), &model_info);
- }
-
- return model_type;
-}
-
-/* Class initialization function for the text item */
-static void
-e_table_text_model_class_init (ETableTextModelClass *klass)
-{
- GtkObjectClass *object_class;
- ETextModelClass *model_class;
-
- object_class = (GtkObjectClass *) klass;
- model_class = (ETextModelClass *) klass;
-
- parent_class = gtk_type_class (e_text_model_get_type ());
-
- model_class->get_text = e_table_text_model_get_text;
- model_class->set_text = e_table_text_model_set_text;
- model_class->insert = e_table_text_model_insert;
- model_class->insert_length = e_table_text_model_insert_length;
- model_class->delete = e_table_text_model_delete;
-
- object_class->destroy = e_table_text_model_destroy;
-}
-
-/* Object initialization function for the text item */
-static void
-e_table_text_model_init (ETableTextModel *model)
-{
- model->model = NULL;
- model->row = 0;
- model->model_col = 0;
- model->cell_changed_signal_id = 0;
- model->row_changed_signal_id = 0;
-}
-
-/* Destroy handler for the text item */
-static void
-e_table_text_model_destroy (GtkObject *object)
-{
- ETableTextModel *model;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (E_IS_TABLE_TEXT_MODEL (object));
-
- model = E_TABLE_TEXT_MODEL (object);
-
- if (model->model)
- g_assert (GTK_IS_OBJECT (model->model));
-
- if (model->cell_changed_signal_id)
- gtk_signal_disconnect (GTK_OBJECT(model->model),
- model->cell_changed_signal_id);
-
- if (model->row_changed_signal_id)
- gtk_signal_disconnect (GTK_OBJECT(model->model),
- model->row_changed_signal_id);
-
- if (model->model)
- gtk_object_unref (GTK_OBJECT(model->model));
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-static const gchar *
-e_table_text_model_get_text (ETextModel *text_model)
-{
- ETableTextModel *model = E_TABLE_TEXT_MODEL(text_model);
- if (model->model)
- return (gchar *)e_table_model_value_at (model->model, model->model_col, model->row);
- else
- return "";
-}
-
-static void
-e_table_text_model_set_text (ETextModel *text_model, const gchar *text)
-{
- ETableTextModel *model = E_TABLE_TEXT_MODEL(text_model);
- if (model->model)
- e_table_model_set_value_at (model->model, model->model_col, model->row, (void *) text);
-}
-
-static void
-e_table_text_model_insert (ETextModel *text_model, gint position, const gchar *text)
-{
- ETableTextModel *model = E_TABLE_TEXT_MODEL(text_model);
- if (model->model){
- gchar *temp = (gchar *)e_table_model_value_at (model->model, model->model_col, model->row);
- temp = g_strdup_printf ("%.*s%s%s", position, temp, text, temp + position);
- e_table_model_set_value_at (model->model, model->model_col, model->row, temp);
- g_free (temp);
- }
-}
-
-static void
-e_table_text_model_insert_length (ETextModel *text_model, gint position, const gchar *text, gint length)
-{
- ETableTextModel *model = E_TABLE_TEXT_MODEL(text_model);
- if (model->model){
- gchar *temp = (gchar *)e_table_model_value_at (model->model, model->model_col, model->row);
- temp = g_strdup_printf ("%.*s%.*s%s", position, temp, length, text, temp + position);
- e_table_model_set_value_at (model->model, model->model_col, model->row, temp);
- g_free (temp);
- }
-}
-
-static void
-e_table_text_model_delete (ETextModel *text_model, gint position, gint length)
-{
- ETableTextModel *model = E_TABLE_TEXT_MODEL(text_model);
- if (model->model){
- gchar *temp = (gchar *)e_table_model_value_at (model->model, model->model_col, model->row);
- temp = g_strdup_printf ("%.*s%s", position, temp, temp + position + length);
- e_table_model_set_value_at (model->model, model->model_col, model->row, temp);
- g_free (temp);
- }
-}
-
-static void
-cell_changed (ETableModel *table_model, int model_col, int row, ETableTextModel *model)
-{
- if (model->model_col == model_col &&
- model->row == row)
- e_text_model_changed (E_TEXT_MODEL(model));
-}
-
-static void
-row_changed (ETableModel *table_model, int row, ETableTextModel *model)
-{
- if (model->row == row)
- e_text_model_changed (E_TEXT_MODEL(model));
-}
-
-ETableTextModel *
-e_table_text_model_new (ETableModel *table_model, int row, int model_col)
-{
- ETableTextModel *model;
-
- g_return_val_if_fail(table_model != NULL, NULL);
- g_return_val_if_fail(E_IS_TABLE_MODEL(table_model), NULL);
-
- model = gtk_type_new (e_table_text_model_get_type ());
- model->model = table_model;
- if (model->model){
- gtk_object_ref (GTK_OBJECT(model->model));
- model->cell_changed_signal_id =
- gtk_signal_connect (GTK_OBJECT(model->model),
- "model_cell_changed",
- GTK_SIGNAL_FUNC(cell_changed),
- model);
- model->row_changed_signal_id =
- gtk_signal_connect (GTK_OBJECT(model->model),
- "model_row_changed",
- GTK_SIGNAL_FUNC(row_changed),
- model);
- }
- model->row = row;
- model->model_col = model_col;
- return model;
-}
-
diff --git a/widgets/text/e-table-text-model.h b/widgets/text/e-table-text-model.h
deleted file mode 100644
index 8f3694843f..0000000000
--- a/widgets/text/e-table-text-model.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* ETableTextModel - Text item for evolution.
- * Copyright (C) 2000 Ximian, Inc.
- *
- * Author: Chris Lahey <clahey@umich.edu>
- *
- * A majority of code taken from:
- *
- * Text item type for GnomeCanvas widget
- *
- * GnomeCanvas is basically a port of the Tk toolkit's most excellent
- * canvas widget. Tk is copyrighted by the Regents of the University
- * of California, Sun Microsystems, and other parties.
- *
- * Copyright (C) 1998 The Free Software Foundation
- *
- * Author: Federico Mena <federico@nuclecu.unam.mx> */
-
-#ifndef E_TABLE_TEXT_MODEL_H
-#define E_TABLE_TEXT_MODEL_H
-
-#include <gal/e-text/e-text-model.h>
-#include <gal/e-table/e-table-model.h>
-
-
-BEGIN_GNOME_DECLS
-
-#define E_TYPE_TABLE_TEXT_MODEL (e_table_text_model_get_type ())
-#define E_TABLE_TEXT_MODEL(obj) (GTK_CHECK_CAST ((obj), E_TYPE_TABLE_TEXT_MODEL, ETableTextModel))
-#define E_TABLE_TEXT_MODEL_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_TYPE_TABLE_TEXT_MODEL, ETableTextModelClass))
-#define E_IS_TABLE_TEXT_MODEL(obj) (GTK_CHECK_TYPE ((obj), E_TYPE_TABLE_TEXT_MODEL))
-#define E_IS_TABLE_TEXT_MODEL_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), E_TYPE_TABLE_TEXT_MODEL))
-
-typedef struct _ETableTextModel ETableTextModel;
-typedef struct _ETableTextModelClass ETableTextModelClass;
-
-struct _ETableTextModel {
- ETextModel parent;
-
- ETableModel *model;
- int row;
- int model_col;
-
- int cell_changed_signal_id;
- int row_changed_signal_id;
-};
-
-struct _ETableTextModelClass {
- ETextModelClass parent_class;
-
-};
-
-
-/* Standard Gtk function */
-GtkType e_table_text_model_get_type (void);
-ETableTextModel *e_table_text_model_new (ETableModel *table_model, int row, int model_col);
-
-END_GNOME_DECLS
-
-#endif
diff --git a/widgets/text/e-text-model-repos.c b/widgets/text/e-text-model-repos.c
deleted file mode 100644
index 407a661b05..0000000000
--- a/widgets/text/e-text-model-repos.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/* Standard ETextModelReposFn definitions
- *
- * Copyright (C) 2001 Ximian Inc.
- *
- * Author: Jon Trowbridge <trow@ximian.com>
- */
-
-#include "e-text-model-repos.h"
-
-#define MODEL_CLAMP(model, pos) (CLAMP((pos), 0, strlen((model)->text)))
-
-gint
-e_repos_shift (gint pos, gpointer data)
-{
- EReposShift *info = (EReposShift *) data;
- g_return_val_if_fail (data, -1);
-
- return e_text_model_validate_position (info->model, pos + info->change);
-}
-
-gint
-e_repos_absolute (gint pos, gpointer data)
-{
- EReposAbsolute *info = (EReposAbsolute *) data;
- g_return_val_if_fail (data, -1);
-
- pos = info->pos;
- if (pos < 0) {
- gint len = e_text_model_get_text_length (info->model);
- pos += len + 1;
- }
-
- return e_text_model_validate_position (info->model, pos);
-}
-
-gint
-e_repos_insert_shift (gint pos, gpointer data)
-{
- EReposInsertShift *info = (EReposInsertShift *) data;
- g_return_val_if_fail (data, -1);
-
- if (pos >= info->pos)
- pos += info->len;
-
- return e_text_model_validate_position (info->model, pos);
-}
-
-gint
-e_repos_delete_shift (gint pos, gpointer data)
-{
- EReposDeleteShift *info = (EReposDeleteShift *) data;
- g_return_val_if_fail (data, -1);
-
- if (pos > info->pos + info->len)
- pos -= info->len;
- else if (pos > info->pos)
- pos = info->pos;
-
- return e_text_model_validate_position (info->model, pos);
-}
-
-gint
-e_repos_clamp (gint pos, gpointer data)
-{
- ETextModel *model;
-
- g_return_val_if_fail (data != NULL && E_IS_TEXT_MODEL (data), -1);
- model = E_TEXT_MODEL (data);
-
- return e_text_model_validate_position (model, pos);
-}
diff --git a/widgets/text/e-text-model-repos.h b/widgets/text/e-text-model-repos.h
deleted file mode 100644
index 620e41a415..0000000000
--- a/widgets/text/e-text-model-repos.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/* Standard ETextModelReposFn definitions
- *
- * Copyright (C) 2001 Ximian Inc.
- *
- * Author: Jon Trowbridge <trow@ximian.com>
- */
-
-#ifndef E_TEXT_MODEL_REPOS_H
-#define E_TEXT_MODEL_REPOS_H
-
-#include "e-text-model.h"
-
-typedef struct {
- ETextModel *model;
- gint change; /* Relative change to position. */
-} EReposShift;
-
-gint e_repos_shift (gint pos, gpointer data);
-
-
-typedef struct {
- ETextModel *model;
- gint pos; /* Position to move to. Negative values count from the end buffer.
- (i.e. -1 puts cursor at the end, -2 one character from end, etc.) */
-} EReposAbsolute;
-
-gint e_repos_absolute (gint pos, gpointer data);
-
-
-typedef struct {
- ETextModel *model;
- gint pos; /* Location of first inserted character. */
- gint len; /* Number of characters inserted. */
-} EReposInsertShift;
-
-gint e_repos_insert_shift (gint pos, gpointer data);
-
-
-typedef struct {
- ETextModel *model;
- gint pos; /* Location of first deleted character. */
- gint len; /* Number of characters deleted. */
-} EReposDeleteShift;
-
-gint e_repos_delete_shift (gint pos, gpointer data);
-
-
-/* For e_repos_clamp, data is a pointer to an ETextModel. The only repositioning
- that occurs is to avoid buffer overruns. */
-
-gint e_repos_clamp (gint pos, gpointer data);
-
-#endif
diff --git a/widgets/text/e-text-model-test.c b/widgets/text/e-text-model-test.c
deleted file mode 100644
index 9bf73962b0..0000000000
--- a/widgets/text/e-text-model-test.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- ETextModelTest
-*/
-
-#include <gnome.h>
-#include <gal/widgets/e-canvas.h>
-#include "e-text-model.h"
-#include "e-text-model-uri.h"
-#include "e-text.h"
-#include <gal/util/e-util.h>
-
-#if 0
-static void
-describe_model (ETextModel *model)
-{
- gint i, N;
- g_return_if_fail (E_IS_TEXT_MODEL (model));
-
- N = e_text_model_object_count (model);
-
- g_print ("text: %s\n", e_text_model_get_text (model));
- g_print ("objs: %d\n", N);
-
- for (i=0; i<N; ++i) {
- gchar *s = e_text_model_strdup_nth_object (model, i);
- g_print ("obj%d: %s\n", i, s);
- g_free (s);
- }
-}
-#endif
-
-int
-main (int argc, gchar **argv)
-{
- GtkWidget *win[2], *canvas[2];
- GnomeCanvasItem *item[2];
- ETextModel *model;
- gint i;
-
- gnome_init ("ETextModelTest", "0.0", argc, argv);
-
- model = e_text_model_uri_new ();
-
- e_text_model_set_text (model, "My favorite website is http://www.ximian.com. My next favorite www.assbarn.com.");
-
- // describe_model (model);
-
- for (i=0; i<2; ++i) {
- win[i] = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-
- gtk_widget_push_visual (gdk_rgb_get_visual ());
- gtk_widget_push_colormap (gdk_rgb_get_cmap ());
- canvas[i] = e_canvas_new ();
- gtk_widget_pop_visual ();
- gtk_widget_pop_colormap ();
-
- item[i] = gnome_canvas_item_new (gnome_canvas_root (GNOME_CANVAS (canvas[i])),
- e_text_get_type (),
- "model", model,
- "font", "-adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1",
- "anchor", GTK_ANCHOR_NORTH,
- "line_wrap", TRUE,
- "width", 150.0,
- "editable", TRUE,
- NULL);
-
- gtk_container_add (GTK_CONTAINER (win[i]), canvas[i]);
- gtk_widget_show_all (win[i]);
- }
-
- gtk_main ();
-
- return 0;
-}
diff --git a/widgets/text/e-text-model-uri.c b/widgets/text/e-text-model-uri.c
deleted file mode 100644
index 62790cbcc5..0000000000
--- a/widgets/text/e-text-model-uri.c
+++ /dev/null
@@ -1,345 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/* ETextModelURI - A Text Model w/ clickable URIs
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Author: Jon Trowbridge <trow@gnu.org>
- *
- */
-
-#include <config.h>
-
-#include "e-text-model-uri.h"
-
-#include <ctype.h>
-#include <sys/types.h>
-#include <regex.h>
-#include <gtk/gtkmain.h>
-#include <libgnome/gnome-url.h>
-
-static void e_text_model_uri_class_init (ETextModelURIClass *class);
-static void e_text_model_uri_init (ETextModelURI *model);
-static void e_text_model_uri_destroy (GtkObject *object);
-
-static void objectify_uris (ETextModelURI *model);
-
-static void e_text_model_uri_objectify (ETextModel *model);
-static gint e_text_model_uri_validate_pos (ETextModel *model, gint pos);
-static gint e_text_model_uri_get_obj_count (ETextModel *model);
-static const gchar *e_text_model_uri_get_nth_object (ETextModel *model, gint i, gint *len);
-static void e_text_model_uri_activate_nth_object (ETextModel *model, gint);
-
-typedef struct _ObjInfo ObjInfo;
-struct _ObjInfo {
- gint offset, len;
-};
-
-static GtkObject *parent_class;
-
-GtkType
-e_text_model_uri_get_type (void)
-{
- static GtkType model_uri_type = 0;
-
- if (!model_uri_type) {
- GtkTypeInfo model_uri_info = {
- "ETextModelURI",
- sizeof (ETextModelURI),
- sizeof (ETextModelURIClass),
- (GtkClassInitFunc) e_text_model_uri_class_init,
- (GtkObjectInitFunc) e_text_model_uri_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- model_uri_type = gtk_type_unique (e_text_model_get_type (), &model_uri_info);
- }
-
- return model_uri_type;
-}
-
-static void
-e_text_model_uri_class_init (ETextModelURIClass *klass)
-{
- GtkObjectClass *object_class;
- ETextModelClass *model_class;
-
- object_class = (GtkObjectClass *) klass;
- model_class = E_TEXT_MODEL_CLASS (klass);
-
- parent_class = gtk_type_class (e_text_model_get_type ());
-
- object_class->destroy = e_text_model_uri_destroy;
-
- model_class->object_activated = e_text_model_uri_activate_nth_object;
-
- model_class->objectify = e_text_model_uri_objectify;
- model_class->validate_pos = e_text_model_uri_validate_pos;
- model_class->obj_count = e_text_model_uri_get_obj_count;
- model_class->get_nth_obj = e_text_model_uri_get_nth_object;
-
-}
-
-static void
-e_text_model_uri_init (ETextModelURI *model)
-{
-
-}
-
-static void
-e_text_model_uri_destroy (GtkObject *object)
-{
- ETextModelURI *model_uri = E_TEXT_MODEL_URI (object);
- GList *iter;
-
- if (model_uri->objectify_idle) {
- gtk_idle_remove (model_uri->objectify_idle);
- model_uri->objectify_idle = 0;
- }
-
- for (iter = model_uri->uris; iter != NULL; iter = g_list_next (iter))
- g_free (iter->data);
- g_list_free (model_uri->uris);
- model_uri->uris = NULL;
-
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-
-}
-
-static const gchar *uri_regex[] = {
- "(((news|telnet|nttp|file|http|ftp|https)://)|(www|ftp))[-A-Za-z0-9\\.]+(:[0-9]*)?/[-A-Za-z0-9_\\$\\.\\+\\!\\*\\(\\),;:@&=\\?/~\\#\\%]*[^]'\\.}>\\) ,\\\"]",
- "(((news|telnet|nttp|file|http|ftp|https)://)|(www|ftp))[-A-Za-z0-9\\.]+[-A-Za-z0-9](:[0-9]*)?",
- "mailto:[A-Za-z0-9_]+@[-A-Za-z0-9_]+\\.[-A-Za-z0-9\\.]+[-A-Za-z0-9]",
- NULL
-};
-static gint regex_count = 0;
-static regex_t *regex_compiled = NULL;
-
-static void
-regex_init (void)
-{
- gint i;
-
- if (regex_count != 0)
- return;
-
- while (uri_regex[regex_count]) ++regex_count;
-
- regex_compiled = g_new0 (regex_t, regex_count);
-
- for (i=0; i<regex_count; ++i) {
- if (regcomp (&regex_compiled[i], uri_regex[i], REG_EXTENDED))
- g_error ("Bad regex?: %s", uri_regex[i]);
- }
-}
-
-
-static void
-objectify_uris (ETextModelURI *model_uri)
-{
- static gboolean objectifying = FALSE;
-
- ETextModel *model = E_TEXT_MODEL (model_uri);
- const gchar *txt;
- GList *iter, *old_uris;
- gint offset, len;
- gboolean found_match;
- regmatch_t match;
- gboolean changed;
-
- if (objectifying)
- return;
-
- objectifying = TRUE;
-
- if (regex_count == 0)
- regex_init ();
-
- txt = e_text_model_get_text (model);
- len = e_text_model_get_text_length (model);
-
- old_uris = model_uri->uris;
- model_uri->uris = NULL;
-
- if (txt) {
- offset = 0;
- found_match = TRUE;
-
- while (offset < len && found_match) {
-
- gint i, so=-1, eo=-1;
-
- found_match = FALSE;
-
- for (i=0; i<regex_count; ++i) {
-
- if (regexec (&regex_compiled[i], txt+offset, 1, &match, 0) == 0) {
-
- /* Take earliest match possible. In case of a tie, take the
- largest possible match. */
- if (!found_match
- || match.rm_so < so
- || (match.rm_so == so && match.rm_eo > eo)) {
- so = match.rm_so;
- eo = match.rm_eo;
- }
- found_match = TRUE;
- }
- }
-
- if (found_match) {
-
- ObjInfo *info = g_new0 (ObjInfo, 1);
- info->offset = offset + so;
- info->len = eo - so;
-
- model_uri->uris = g_list_append (model_uri->uris, info);
-
- offset += eo;
- }
- }
- }
-
- changed = (g_list_length (old_uris) != g_list_length (model_uri->uris));
-
- if (!changed) {
- /* Check that there is a 1-1 correspondence between object positions. */
- GList *jter;
-
- for (iter = model_uri->uris; iter != NULL && !changed; iter = g_list_next (iter)) {
- ObjInfo *info = (ObjInfo *) iter->data;
- found_match = FALSE;
- for (jter = old_uris; jter != NULL && !found_match; jter = g_list_next (jter)) {
- ObjInfo *jnfo = (ObjInfo *) jter->data;
-
- if (info->offset == jnfo->offset && info->len == jnfo->len)
- found_match = TRUE;
- }
- changed = !found_match;
- }
- }
-
- if (changed)
- e_text_model_changed (model);
-
- /* Free old uris */
- for (iter = old_uris; iter != NULL; iter = g_list_next (iter))
- g_free (iter->data);
- g_list_free (old_uris);
-
- objectifying = FALSE;
-}
-
-static gboolean
-objectify_idle_cb (gpointer ptr)
-{
- ETextModelURI *model_uri = E_TEXT_MODEL_URI (ptr);
-
- g_assert (model_uri->objectify_idle);
- objectify_uris (model_uri);
- model_uri->objectify_idle = 0;
-
- return FALSE;
-}
-
-static void
-e_text_model_uri_objectify (ETextModel *model)
-{
- ETextModelURI *model_uri = E_TEXT_MODEL_URI (model);
-
- if (model_uri->objectify_idle == 0)
- model_uri->objectify_idle = gtk_idle_add (objectify_idle_cb, model);
-
- if (E_TEXT_MODEL_CLASS(parent_class)->objectify)
- E_TEXT_MODEL_CLASS(parent_class)->objectify (model);
-}
-
-static void
-objectify_idle_flush (ETextModelURI *model_uri)
-{
- if (model_uri->objectify_idle) {
- gtk_idle_remove (model_uri->objectify_idle);
- model_uri->objectify_idle = 0;
- objectify_uris (model_uri);
- }
-}
-
-static gint
-e_text_model_uri_validate_pos (ETextModel *model, gint pos)
-{
- gint obj_num;
-
- /* Cause us to skip over objects */
-
- obj_num = e_text_model_get_object_at_offset (model, pos);
- if (obj_num != -1) {
- gint pos0, pos1, mp;
- e_text_model_get_nth_object_bounds (model, obj_num, &pos0, &pos1);
- mp = (pos0 + pos1)/2;
- if (pos0 < pos && pos < mp)
- pos = pos1;
- else if (mp <= pos && pos < pos1)
- pos = pos0;
- }
-
-
-
- if (E_TEXT_MODEL_CLASS (parent_class)->validate_pos)
- pos = E_TEXT_MODEL_CLASS (parent_class)->validate_pos (model, pos);
-
- return pos;
-}
-
-static gint
-e_text_model_uri_get_obj_count (ETextModel *model)
-{
- ETextModelURI *model_uri = E_TEXT_MODEL_URI (model);
-
- objectify_idle_flush (model_uri);
-
- return g_list_length (model_uri->uris);
-}
-
-static const gchar *
-e_text_model_uri_get_nth_object (ETextModel *model, gint i, gint *len)
-{
- ETextModelURI *model_uri = E_TEXT_MODEL_URI (model);
- ObjInfo *info;
- const gchar *txt;
-
- objectify_idle_flush (model_uri);
-
- txt = e_text_model_get_text (model);
-
- info = (ObjInfo *) g_list_nth_data (model_uri->uris, i);
- g_return_val_if_fail (info != NULL, NULL);
-
-
- if (len)
- *len = info->len;
- return txt + info->offset;
-}
-
-static void
-e_text_model_uri_activate_nth_object (ETextModel *model, gint i)
-{
- gchar *obj_str;
-
- objectify_idle_flush (E_TEXT_MODEL_URI (model));
-
- obj_str = e_text_model_strdup_nth_object (model, i);
- gnome_url_show (obj_str);
- g_free (obj_str);
-}
-
-ETextModel *
-e_text_model_uri_new (void)
-{
- return E_TEXT_MODEL (gtk_type_new (e_text_model_uri_get_type ()));
-}
-
-
-/* $Id$ */
diff --git a/widgets/text/e-text-model-uri.h b/widgets/text/e-text-model-uri.h
deleted file mode 100644
index 9743935529..0000000000
--- a/widgets/text/e-text-model-uri.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
-/* ETextModelURI - A Text Model w/ clickable URIs
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Author: Jon Trowbridge <trow@gnu.org>
- *
- */
-
-#ifndef E_TEXT_MODEL_URI_H
-#define E_TEXT_MODEL_URI_H
-
-#include <gal/e-text/e-text-model.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_TYPE_TEXT_MODEL_URI (e_text_model_get_type ())
-#define E_TEXT_MODEL_URI(obj) (GTK_CHECK_CAST ((obj), E_TYPE_TEXT_MODEL_URI, ETextModelURI))
-#define E_TEXT_MODEL_URI_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_TYPE_TEXT_MODEL_URI, ETextModelURIClass))
-#define E_IS_TEXT_MODEL_URI(obj) (GTK_CHECK_TYPE ((obj), E_TYPE_TEXT_MODEL_URI))
-#define E_IS_TEXT_MODEL_URI_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), E_TYPE_TEXT_MODEL_URI))
-
-typedef struct _ETextModelURI ETextModelURI;
-typedef struct _ETextModelURIClass ETextModelURIClass;
-
-struct _ETextModelURI {
- ETextModel item;
- GList *uris;
-
- guint objectify_idle;
-};
-
-struct _ETextModelURIClass {
- ETextModelClass parent_class;
-};
-
-GtkType e_text_model_uri_get_type (void);
-ETextModel *e_text_model_uri_new (void);
-
-END_GNOME_DECLS
-
-#endif
diff --git a/widgets/text/e-text-model.c b/widgets/text/e-text-model.c
deleted file mode 100644
index 4fec8724d8..0000000000
--- a/widgets/text/e-text-model.c
+++ /dev/null
@@ -1,592 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* ETextModel - Text item model for evolution.
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Author: Chris Lahey <clahey@umich.edu>
- *
- * A majority of code taken from:
- *
- * Text item type for GnomeCanvas widget
- *
- * GnomeCanvas is basically a port of the Tk toolkit's most excellent
- * canvas widget. Tk is copyrighted by the Regents of the University
- * of California, Sun Microsystems, and other parties.
- *
- * Copyright (C) 1998 The Free Software Foundation
- *
- * Author: Federico Mena <federico@nuclecu.unam.mx> */
-
-#undef PARANOID_DEBUGGING
-
-#include <config.h>
-#include <ctype.h>
-#include <string.h>
-#include <gtk/gtksignal.h>
-#include "e-text-model-repos.h"
-#include "e-text-model.h"
-
-#define CLASS(obj) (E_TEXT_MODEL_CLASS (GTK_OBJECT (obj)->klass))
-
-enum {
- E_TEXT_MODEL_CHANGED,
- E_TEXT_MODEL_REPOSITION,
- E_TEXT_MODEL_OBJECT_ACTIVATED,
- E_TEXT_MODEL_LAST_SIGNAL
-};
-
-static guint e_text_model_signals[E_TEXT_MODEL_LAST_SIGNAL] = { 0 };
-
-struct _ETextModelPrivate {
- gchar *text;
- gint len;
-};
-
-static void e_text_model_class_init (ETextModelClass *class);
-static void e_text_model_init (ETextModel *model);
-static void e_text_model_destroy (GtkObject *object);
-
-static gint e_text_model_real_validate_position (ETextModel *, gint pos);
-static const gchar *e_text_model_real_get_text (ETextModel *model);
-static gint e_text_model_real_get_text_length (ETextModel *model);
-static void e_text_model_real_set_text (ETextModel *model, const gchar *text);
-static void e_text_model_real_insert (ETextModel *model, gint postion, const gchar *text);
-static void e_text_model_real_insert_length (ETextModel *model, gint postion, const gchar *text, gint length);
-static void e_text_model_real_delete (ETextModel *model, gint postion, gint length);
-
-static GtkObject *parent_class;
-
-
-
-/**
- * e_text_model_get_type:
- * @void:
- *
- * Registers the &ETextModel class if necessary, and returns the type ID
- * associated to it.
- *
- * Return value: The type ID of the &ETextModel class.
- **/
-GtkType
-e_text_model_get_type (void)
-{
- static GtkType model_type = 0;
-
- if (!model_type) {
- GtkTypeInfo model_info = {
- "ETextModel",
- sizeof (ETextModel),
- sizeof (ETextModelClass),
- (GtkClassInitFunc) e_text_model_class_init,
- (GtkObjectInitFunc) e_text_model_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- model_type = gtk_type_unique (gtk_object_get_type (), &model_info);
- }
-
- return model_type;
-}
-
-/* Class initialization function for the text item */
-static void
-e_text_model_class_init (ETextModelClass *klass)
-{
- GtkObjectClass *object_class;
-
- object_class = (GtkObjectClass *) klass;
-
- parent_class = gtk_type_class (gtk_object_get_type ());
-
- e_text_model_signals[E_TEXT_MODEL_CHANGED] =
- gtk_signal_new ("changed",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETextModelClass, changed),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- e_text_model_signals[E_TEXT_MODEL_REPOSITION] =
- gtk_signal_new ("reposition",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETextModelClass, reposition),
- gtk_marshal_NONE__POINTER_POINTER,
- GTK_TYPE_NONE, 2,
- GTK_TYPE_POINTER, GTK_TYPE_POINTER);
-
- e_text_model_signals[E_TEXT_MODEL_OBJECT_ACTIVATED] =
- gtk_signal_new ("object_activated",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETextModelClass, object_activated),
- gtk_marshal_NONE__INT,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_INT);
-
- gtk_object_class_add_signals (object_class, e_text_model_signals, E_TEXT_MODEL_LAST_SIGNAL);
-
- /* No default signal handlers. */
- klass->changed = NULL;
- klass->reposition = NULL;
- klass->object_activated = NULL;
-
- klass->validate_pos = e_text_model_real_validate_position;
-
- klass->get_text = e_text_model_real_get_text;
- klass->get_text_len = e_text_model_real_get_text_length;
- klass->set_text = e_text_model_real_set_text;
- klass->insert = e_text_model_real_insert;
- klass->insert_length = e_text_model_real_insert_length;
- klass->delete = e_text_model_real_delete;
-
- /* We explicitly don't define default handlers for these. */
- klass->objectify = NULL;
- klass->obj_count = NULL;
- klass->get_nth_obj = NULL;
-
- object_class->destroy = e_text_model_destroy;
-}
-
-/* Object initialization function for the text item */
-static void
-e_text_model_init (ETextModel *model)
-{
- model->priv = g_new0 (struct _ETextModelPrivate, 1);
- model->priv->text = g_strdup ("");
- model->priv->len = 0;
-}
-
-/* Destroy handler for the text item */
-static void
-e_text_model_destroy (GtkObject *object)
-{
- ETextModel *model;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (E_IS_TEXT_MODEL (object));
-
- model = E_TEXT_MODEL (object);
-
- g_free (model->priv->text);
-
- g_free (model->priv);
- model->priv = NULL;
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
-}
-
-static gint
-e_text_model_real_validate_position (ETextModel *model, gint pos)
-{
- gint len;
-
- if (pos < 0)
- pos = 0;
- else if (pos > ( len = e_text_model_get_text_length (model) ))
- pos = len;
-
- return pos;
-}
-
-static const gchar *
-e_text_model_real_get_text (ETextModel *model)
-{
- if (model->priv->text)
- return model->priv->text;
- else
- return "";
-}
-
-static gint
-e_text_model_real_get_text_length (ETextModel *model)
-{
- if (model->priv->len < 0)
- model->priv->len = strlen (e_text_model_get_text (model));
-
- return model->priv->len;
-}
-
-static void
-e_text_model_real_set_text (ETextModel *model, const gchar *text)
-{
- EReposAbsolute repos;
- gboolean changed = FALSE;
-
- if (text == NULL) {
-
- changed = (model->priv->text != NULL);
-
- g_free (model->priv->text);
- model->priv->text = NULL;
- model->priv->len = -1;
-
- } else if (model->priv->text == NULL || strcmp (model->priv->text, text)) {
-
- g_free (model->priv->text);
- model->priv->text = g_strdup (text);
- model->priv->len = -1;
-
- changed = TRUE;
- }
-
- if (changed) {
- e_text_model_changed (model);
- repos.model = model;
- repos.pos = -1;
- e_text_model_reposition (model, e_repos_absolute, &repos);
- }
-}
-
-static void
-e_text_model_real_insert (ETextModel *model, gint position, const gchar *text)
-{
- EReposInsertShift repos;
- gchar *new_text;
- gint ins_len;
-
- new_text = g_strdup_printf ("%.*s%s%s", position, model->priv->text, text, model->priv->text + position);
- ins_len = strlen (text);
-
- if (model->priv->text)
- g_free (model->priv->text);
-
- model->priv->text = new_text;
-
- if (model->priv->len >= 0)
- model->priv->len += ins_len;
-
- e_text_model_changed (model);
-
- repos.model = model;
- repos.pos = position;
- repos.len = ins_len;
-
- e_text_model_reposition (model, e_repos_insert_shift, &repos);
-}
-
-static void
-e_text_model_real_insert_length (ETextModel *model, gint position, const gchar *text, gint length)
-{
- EReposInsertShift repos;
- gchar *new_text = g_strdup_printf ("%.*s%.*s%s", position, model->priv->text, length, text, model->priv->text + position);
-
- if (model->priv->text)
- g_free (model->priv->text);
- model->priv->text = new_text;
-
- if (model->priv->len >= 0)
- model->priv->len += length;
-
- e_text_model_changed (model);
-
- repos.model = model;
- repos.pos = position;
- repos.len = length;
-
- e_text_model_reposition (model, e_repos_insert_shift, &repos);
-}
-
-static void
-e_text_model_real_delete (ETextModel *model, gint position, gint length)
-{
- EReposDeleteShift repos;
-
- memmove (model->priv->text + position, model->priv->text + position + length, strlen (model->priv->text + position + length) + 1);
-
- if (model->priv->len >= 0)
- model->priv->len -= length;
-
- e_text_model_changed (model);
-
- repos.model = model;
- repos.pos = position;
- repos.len = length;
-
- e_text_model_reposition (model, e_repos_delete_shift, &repos);
-}
-
-void
-e_text_model_changed (ETextModel *model)
-{
- g_return_if_fail (model != NULL);
- g_return_if_fail (E_IS_TEXT_MODEL (model));
-
- /*
- Objectify before emitting any signal.
- While this method could, in theory, do pretty much anything, it is meant
- for scanning objects and converting substrings into embedded objects.
- */
- if (CLASS (model)->objectify)
- CLASS (model)->objectify (model);
-
- gtk_signal_emit (GTK_OBJECT (model),
- e_text_model_signals[E_TEXT_MODEL_CHANGED]);
-}
-
-void
-e_text_model_reposition (ETextModel *model, ETextModelReposFn fn, gpointer repos_data)
-{
- g_return_if_fail (model != NULL);
- g_return_if_fail (E_IS_TEXT_MODEL (model));
- g_return_if_fail (fn != NULL);
-
- gtk_signal_emit (GTK_OBJECT (model),
- e_text_model_signals[E_TEXT_MODEL_REPOSITION],
- fn, repos_data);
-}
-
-gint
-e_text_model_validate_position (ETextModel *model, gint pos)
-{
- g_return_val_if_fail (model != NULL, 0);
- g_return_val_if_fail (E_IS_TEXT_MODEL (model), 0);
-
- if (CLASS (model)->validate_pos)
- pos = CLASS (model)->validate_pos (model, pos);
-
- return pos;
-}
-
-const gchar *
-e_text_model_get_text (ETextModel *model)
-{
- g_return_val_if_fail (model != NULL, NULL);
- g_return_val_if_fail (E_IS_TEXT_MODEL (model), NULL);
-
- if (CLASS (model)->get_text)
- return CLASS (model)->get_text (model);
-
- return "";
-}
-
-gint
-e_text_model_get_text_length (ETextModel *model)
-{
- g_return_val_if_fail (model != NULL, 0);
- g_return_val_if_fail (E_IS_TEXT_MODEL (model), 0);
-
- if (CLASS (model)->get_text_len (model)) {
-
- gint len = CLASS (model)->get_text_len (model);
-
-#ifdef PARANOID_DEBUGGING
- const gchar *str = e_text_model_get_text (model);
- gint len2 = str ? strlen (str) : 0;
- if (len != len)
- g_error ("\"%s\" length reported as %d, not %d.", str, len, len2);
-#endif
-
- return len;
-
- } else {
- /* Calculate length the old-fashioned way... */
- const gchar *str = e_text_model_get_text (model);
- return str ? strlen (str) : 0;
- }
-}
-
-void
-e_text_model_set_text (ETextModel *model, const gchar *text)
-{
- g_return_if_fail (model != NULL);
- g_return_if_fail (E_IS_TEXT_MODEL (model));
-
- if (CLASS (model)->set_text)
- CLASS (model)->set_text (model, text);
-}
-
-void
-e_text_model_insert (ETextModel *model, gint position, const gchar *text)
-{
- g_return_if_fail (model != NULL);
- g_return_if_fail (E_IS_TEXT_MODEL (model));
-
- if (text == NULL)
- return;
-
- if (CLASS (model)->insert)
- CLASS (model)->insert (model, position, text);
-}
-
-void
-e_text_model_insert_length (ETextModel *model, gint position, const gchar *text, gint length)
-{
- g_return_if_fail (model != NULL);
- g_return_if_fail (E_IS_TEXT_MODEL (model));
- g_return_if_fail (length >= 0);
-
-
- if (text == NULL || length == 0)
- return;
-
- if (CLASS (model)->insert_length)
- CLASS (model)->insert_length (model, position, text, length);
-}
-
-void
-e_text_model_prepend (ETextModel *model, const gchar *text)
-{
- g_return_if_fail (model != NULL);
- g_return_if_fail (E_IS_TEXT_MODEL (model));
-
- if (text == NULL)
- return;
-
- e_text_model_insert (model, 0, text);
-}
-
-void
-e_text_model_append (ETextModel *model, const gchar *text)
-{
- g_return_if_fail (model != NULL);
- g_return_if_fail (E_IS_TEXT_MODEL (model));
-
- if (text == NULL)
- return;
-
- e_text_model_insert (model, e_text_model_get_text_length (model), text);
-}
-
-void
-e_text_model_delete (ETextModel *model, gint position, gint length)
-{
- gint txt_len;
-
- g_return_if_fail (model != NULL);
- g_return_if_fail (E_IS_TEXT_MODEL (model));
- g_return_if_fail (length >= 0);
-
- txt_len = e_text_model_get_text_length (model);
- if (position + length > txt_len)
- length = txt_len - position;
-
- if (length <= 0)
- return;
-
- if (CLASS (model)->delete)
- CLASS (model)->delete (model, position, length);
-}
-
-gint
-e_text_model_object_count (ETextModel *model)
-{
- g_return_val_if_fail (model != NULL, 0);
- g_return_val_if_fail (E_IS_TEXT_MODEL (model), 0);
-
- if (CLASS (model)->obj_count)
- return CLASS (model)->obj_count (model);
-
- return 0;
-}
-
-const gchar *
-e_text_model_get_nth_object (ETextModel *model, gint n, gint *len)
-{
- g_return_val_if_fail (model != NULL, NULL);
- g_return_val_if_fail (E_IS_TEXT_MODEL (model), NULL);
-
- if (n < 0 || n >= e_text_model_object_count (model))
- return NULL;
-
- if (CLASS (model)->get_nth_obj)
- return CLASS (model)->get_nth_obj (model, n, len);
-
- return NULL;
-}
-
-gchar *
-e_text_model_strdup_nth_object (ETextModel *model, gint n)
-{
- const gchar *obj;
- gint len = 0;
-
- g_return_val_if_fail (model != NULL, NULL);
- g_return_val_if_fail (E_IS_TEXT_MODEL (model), NULL);
-
- obj = e_text_model_get_nth_object (model, n, &len);
-
- return obj ? g_strndup (obj, n) : NULL;
-}
-
-void
-e_text_model_get_nth_object_bounds (ETextModel *model, gint n, gint *start, gint *end)
-{
- const gchar *txt = NULL, *obj = NULL;
- gint len = 0;
-
- g_return_if_fail (model != NULL);
- g_return_if_fail (E_IS_TEXT_MODEL (model));
-
- txt = e_text_model_get_text (model);
- obj = e_text_model_get_nth_object (model, n, &len);
-
- g_return_if_fail (obj != NULL);
-
- if (start)
- *start = obj - txt;
- if (end)
- *end = obj - txt + len;
-}
-
-gint
-e_text_model_get_object_at_offset (ETextModel *model, gint offset)
-{
- g_return_val_if_fail (model != NULL, -1);
- g_return_val_if_fail (E_IS_TEXT_MODEL (model), -1);
-
- if (offset < 0 || offset >= e_text_model_get_text_length (model))
- return -1;
-
- /* If an optimized version has been provided, we use it. */
- if (CLASS (model)->obj_at_offset) {
-
- return CLASS (model)->obj_at_offset (model, offset);
-
- } else {
- /* If not, we fake it.*/
-
- gint i, N, pos0, pos1;
-
- N = e_text_model_object_count (model);
-
- for (i = 0; i < N; ++i) {
- e_text_model_get_nth_object_bounds (model, i, &pos0, &pos1);
- if (pos0 <= offset && offset < pos1)
- return i;
- }
-
- }
-
- return -1;
-}
-
-gint
-e_text_model_get_object_at_pointer (ETextModel *model, const gchar *s)
-{
- g_return_val_if_fail (model != NULL, -1);
- g_return_val_if_fail (E_IS_TEXT_MODEL (model), -1);
- g_return_val_if_fail (s != NULL, -1);
-
- return e_text_model_get_object_at_offset (model, s - e_text_model_get_text (model));
-}
-
-void
-e_text_model_activate_nth_object (ETextModel *model, gint n)
-{
- g_return_if_fail (model != NULL);
- g_return_if_fail (E_IS_TEXT_MODEL (model));
- g_return_if_fail (n >= 0);
- g_return_if_fail (n < e_text_model_object_count (model));
-
- gtk_signal_emit (GTK_OBJECT (model), e_text_model_signals[E_TEXT_MODEL_OBJECT_ACTIVATED], n);
-}
-
-ETextModel *
-e_text_model_new (void)
-{
- ETextModel *model = gtk_type_new (e_text_model_get_type ());
- return model;
-}
diff --git a/widgets/text/e-text-model.h b/widgets/text/e-text-model.h
deleted file mode 100644
index b697ca8396..0000000000
--- a/widgets/text/e-text-model.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* ETextModel - Text item for evolution.
- * Copyright (C) 2000 Helix Code, Inc.
- *
- * Author: Chris Lahey <clahey@umich.edu>
- *
- * A majority of code taken from:
- *
- * Text item type for GnomeCanvas widget
- *
- * GnomeCanvas is basically a port of the Tk toolkit's most excellent
- * canvas widget. Tk is copyrighted by the Regents of the University
- * of California, Sun Microsystems, and other parties.
- *
- * Copyright (C) 1998 The Free Software Foundation
- *
- * Author: Federico Mena <federico@nuclecu.unam.mx> */
-
-
-#ifndef E_TEXT_MODEL_H
-#define E_TEXT_MODEL_H
-
-#include <glib.h>
-#include <gtk/gtkobject.h>
-#include <libgnome/gnome-defs.h>
-
-BEGIN_GNOME_DECLS
-
-#define E_TYPE_TEXT_MODEL (e_text_model_get_type ())
-#define E_TEXT_MODEL(obj) (GTK_CHECK_CAST ((obj), E_TYPE_TEXT_MODEL, ETextModel))
-#define E_TEXT_MODEL_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_TYPE_TEXT_MODEL, ETextModelClass))
-#define E_IS_TEXT_MODEL(obj) (GTK_CHECK_TYPE ((obj), E_TYPE_TEXT_MODEL))
-#define E_IS_TEXT_MODEL_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), E_TYPE_TEXT_MODEL))
-
-typedef struct _ETextModel ETextModel;
-typedef struct _ETextModelClass ETextModelClass;
-
-struct _ETextModelPrivate;
-
-typedef gint (*ETextModelReposFn) (gint, gpointer);
-
-struct _ETextModel {
- GtkObject item;
-
- struct _ETextModelPrivate *priv;
-};
-
-struct _ETextModelClass {
- GtkObjectClass parent_class;
-
- /* Signal */
- void (* changed) (ETextModel *model);
- void (* reposition) (ETextModel *model, ETextModelReposFn fn, gpointer repos_fn_data);
- void (* object_activated) (ETextModel *model, gint obj_num);
-
- /* Virtual methods */
-
- gint (* validate_pos) (ETextModel *model, gint pos);
-
- const char *(* get_text) (ETextModel *model);
- gint (* get_text_len) (ETextModel *model);
- void (* set_text) (ETextModel *model, const gchar *text);
- void (* insert) (ETextModel *model, gint position, const gchar *text);
- void (* insert_length) (ETextModel *model, gint position, const gchar *text, gint length);
- void (* delete) (ETextModel *model, gint position, gint length);
-
- void (* objectify) (ETextModel *model);
- gint (* obj_count) (ETextModel *model);
- const gchar *(* get_nth_obj) (ETextModel *model, gint n, gint *len);
- gint (* obj_at_offset) (ETextModel *model, gint offset);
-};
-
-GtkType e_text_model_get_type (void);
-
-ETextModel *e_text_model_new (void);
-
-void e_text_model_changed (ETextModel *model);
-
-void e_text_model_reposition (ETextModel *model, ETextModelReposFn fn, gpointer repos_data);
-gint e_text_model_validate_position (ETextModel *model, gint pos);
-
-
-/* Functions for manipulating the underlying text. */
-
-const gchar *e_text_model_get_text (ETextModel *model);
-gint e_text_model_get_text_length (ETextModel *model);
-void e_text_model_set_text (ETextModel *model, const gchar *text);
-void e_text_model_insert (ETextModel *model, gint position, const gchar *text);
-void e_text_model_insert_length (ETextModel *model, gint position, const gchar *text, gint length);
-void e_text_model_prepend (ETextModel *model, const gchar *text);
-void e_text_model_append (ETextModel *model, const gchar *text);
-void e_text_model_delete (ETextModel *model, gint position, gint length);
-
-
-/* Functions for accessing embedded objects. */
-
-gint e_text_model_object_count (ETextModel *model);
-const gchar *e_text_model_get_nth_object (ETextModel *model, gint n, gint *len);
-gchar *e_text_model_strdup_nth_object (ETextModel *model, gint n);
-void e_text_model_get_nth_object_bounds (ETextModel *model, gint n, gint *start_pos, gint *end_pos);
-gint e_text_model_get_object_at_offset (ETextModel *model, gint offset);
-gint e_text_model_get_object_at_pointer (ETextModel *model, const gchar *c);
-void e_text_model_activate_nth_object (ETextModel *model, gint n);
-
-
-
-
-
-
-
-END_GNOME_DECLS
-
-#endif
diff --git a/widgets/text/e-text-test.c b/widgets/text/e-text-test.c
deleted file mode 100644
index e3931da02f..0000000000
--- a/widgets/text/e-text-test.c
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- ETextTest: E-Text item test program
- Copyright (C)2000: Iain Holmes <ih@csd.abdn.ac.uk>
-
- This code is licensed under the GPL
-*/
-
-#include "e-text.h"
-#include <gnome.h>
-#include "gal/widgets/e-canvas.h"
-#include "gal/widgets/e-unicode.h"
-
-GnomeCanvasItem *rect;
-
-static void allocate_callback(GtkWidget *canvas, GtkAllocation *allocation, GnomeCanvasItem *item)
-{
- double height;
- gnome_canvas_item_set( item,
- "width", (double) allocation->width,
- NULL );
- gtk_object_get(GTK_OBJECT(item),
- "height", &height,
- NULL);
- height = MAX(height, allocation->height);
- gnome_canvas_set_scroll_region(GNOME_CANVAS( canvas ), 0, 0, allocation->width, height );
- gnome_canvas_item_set( rect,
- "x2", (double) allocation->width,
- "y2", (double) height,
- NULL );
-}
-
-static void
-reflow (GtkWidget *canvas, GnomeCanvasItem *item)
-{
- double height;
- gtk_object_get(GTK_OBJECT(item),
- "height", &height,
- NULL);
- height = MAX(height, canvas->allocation.height);
- gnome_canvas_set_scroll_region(GNOME_CANVAS( canvas ), 0, 0, canvas->allocation.width, height );
- gnome_canvas_item_set( rect,
- "x2", (double) canvas->allocation.width,
- "y2", (double) height,
- NULL );
-}
-
-static void
-quit_cb (GtkWidget *widget,
- gpointer data)
-{
- gtk_main_quit ();
-}
-
-static void
-change_text_cb (GtkEntry *entry,
- EText *text)
-{
- gchar *str;
-
- str = e_utf8_gtk_entry_get_text (entry);
- gnome_canvas_item_set (GNOME_CANVAS_ITEM (text),
- "text", str,
- NULL);
-}
-
-static void
-change_font_cb (GtkEntry *entry,
- EText *text)
-{
- gchar *font;
-
- font = gtk_entry_get_text (entry);
- gnome_canvas_item_set (GNOME_CANVAS_ITEM (text),
- "font", font,
- NULL);
-}
-
-int
-main (int argc,
- char **argv)
-{
- GtkWidget *window, *canvas, *scroller, *vbox, *text, *font;
- GtkWidget *frame;
- GnomeCanvasItem *item;
-
- gnome_init ("ETextTest", "0.0.1", argc, argv);
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- gtk_window_set_title (GTK_WINDOW (window), "EText Test");
- gtk_signal_connect (GTK_OBJECT (window), "destroy",
- GTK_SIGNAL_FUNC (quit_cb), NULL);
-
- gtk_widget_push_visual (gdk_rgb_get_visual ());
- gtk_widget_push_colormap (gdk_rgb_get_cmap ());
- canvas = e_canvas_new ();
- gtk_widget_pop_visual ();
- gtk_widget_pop_colormap ();
- scroller = gtk_scrolled_window_new (NULL, NULL);
- vbox = gtk_vbox_new (FALSE, 2);
-
- gtk_container_add (GTK_CONTAINER (window), vbox);
- gtk_box_pack_start (GTK_BOX (vbox), scroller, TRUE, TRUE, 2);
- gtk_container_add (GTK_CONTAINER (scroller), canvas);
-
- frame = gtk_frame_new ("Text");
- text = gtk_entry_new ();
- gtk_entry_set_text(GTK_ENTRY(text), "Hello World! This is a really long string to test out the ellipsis stuff.");
- gtk_container_add (GTK_CONTAINER (frame), text);
- gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
-
- frame = gtk_frame_new ("Font");
- font = gtk_entry_new ();
- gtk_entry_set_text(GTK_ENTRY(font), "fixed");
- gtk_container_add (GTK_CONTAINER (frame), font);
- gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
-
- rect = gnome_canvas_item_new( gnome_canvas_root( GNOME_CANVAS( canvas ) ),
- gnome_canvas_rect_get_type(),
- "x1", (double) 0,
- "y1", (double) 0,
- "x2", (double) 100,
- "y2", (double) 100,
- "fill_color", "white",
- NULL );
-
- item = gnome_canvas_item_new (gnome_canvas_root (GNOME_CANVAS (canvas)),
- e_text_get_type (),
- "text", "Hello World! This is a really long string to test out the ellipsis stuff.",
- "font", "fixed",
- "fill_color", "black",
- "anchor", GTK_ANCHOR_NW,
- "clip", TRUE,
- "use_ellipsis", TRUE,
- "editable", TRUE,
- "line_wrap", TRUE,
- "max_lines", 2,
- "width", 150.0,
- NULL);
-
- gtk_signal_connect (GTK_OBJECT (text), "activate",
- GTK_SIGNAL_FUNC (change_text_cb), item);
- gtk_signal_connect (GTK_OBJECT (font), "activate",
- GTK_SIGNAL_FUNC (change_font_cb), item);
-
- gtk_signal_connect( GTK_OBJECT( canvas ), "size_allocate",
- GTK_SIGNAL_FUNC( allocate_callback ),
- item );
- gtk_signal_connect( GTK_OBJECT( canvas ), "reflow",
- GTK_SIGNAL_FUNC( reflow ),
- item );
- gnome_canvas_set_scroll_region (GNOME_CANVAS (canvas), 0.0, 0.0, 400.0, 400.0);
- gtk_widget_show_all (window);
- gtk_main ();
-
- return 0;
-}
diff --git a/widgets/text/e-text.c b/widgets/text/e-text.c
deleted file mode 100644
index b2eb2ad3b0..0000000000
--- a/widgets/text/e-text.c
+++ /dev/null
@@ -1,3847 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* EText - Text item for evolution.
- * Copyright (C) 2000, 2001 Ximian Inc.
- *
- * Author: Chris Lahey <clahey@ximian.com>
- * Further hacking by Jon Trowbridge <trow@ximian.com>
- *
- * A majority of code taken from:
- *
- * Text item type for GnomeCanvas widget
- *
- * GnomeCanvas is basically a port of the Tk toolkit's most excellent
- * canvas widget. Tk is copyrighted by the Regents of the University
- * of California, Sun Microsystems, and other parties.
- *
- * Copyright (C) 1998 The Free Software Foundation
- *
- * Author: Federico Mena <federico@nuclecu.unam.mx> */
-
-#include <config.h>
-
-#include "e-text.h"
-
-#include <math.h>
-#include <ctype.h>
-#include <string.h>
-#include <gdk/gdkx.h> /* for BlackPixel */
-#include <gtk/gtkinvisible.h>
-#include <gtk/gtkmain.h>
-#include <gtk/gtkselection.h>
-#include <gtk/gtkwindow.h>
-#include <libgnomeui/gnome-canvas-rect-ellipse.h>
-
-#include "gal/widgets/e-canvas.h"
-#include "gal/widgets/e-canvas-utils.h"
-#include "gal/widgets/e-unicode.h"
-#include "gal/util/e-text-event-processor-emacs-like.h"
-#include <libart_lgpl/art_affine.h>
-#include <libart_lgpl/art_rgb.h>
-#include <libart_lgpl/art_rgb_bitmap_affine.h>
-
-#define BORDER_INDENT 4
-
-enum {
- E_TEXT_CHANGED,
- E_TEXT_ACTIVATE,
- E_TEXT_KEYPRESS,
- E_TEXT_POPUP,
- E_TEXT_LAST_SIGNAL
-};
-
-static guint e_text_signals[E_TEXT_LAST_SIGNAL] = { 0 };
-
-
-
-/* This defines a line of text */
-struct line {
- const char *text; /* Line's text, it is a pointer into the text->text string */
- int length; /* Line's length IN BYTES */
- int width; /* Line's width in pixels */
- int ellipsis_length; /* Length before adding ellipsis */
-};
-
-/* Object argument IDs */
-enum {
- ARG_0,
- ARG_MODEL,
- ARG_EVENT_PROCESSOR,
- ARG_TEXT,
- ARG_FONT,
- ARG_FONTSET,
- ARG_FONT_GDK,
- ARG_FONT_E,
- ARG_BOLD,
- ARG_STRIKEOUT,
- ARG_ANCHOR,
- ARG_JUSTIFICATION,
- ARG_CLIP_WIDTH,
- ARG_CLIP_HEIGHT,
- ARG_CLIP,
- ARG_FILL_CLIP_RECTANGLE,
- ARG_X_OFFSET,
- ARG_Y_OFFSET,
- ARG_FILL_COLOR,
- ARG_FILL_COLOR_GDK,
- ARG_FILL_COLOR_RGBA,
- ARG_FILL_STIPPLE,
- ARG_TEXT_WIDTH,
- ARG_TEXT_HEIGHT,
- ARG_EDITABLE,
- ARG_USE_ELLIPSIS,
- ARG_ELLIPSIS,
- ARG_LINE_WRAP,
- ARG_BREAK_CHARACTERS,
- ARG_MAX_LINES,
- ARG_WIDTH,
- ARG_HEIGHT,
- ARG_DRAW_BORDERS,
- ARG_ALLOW_NEWLINES,
- ARG_DRAW_BACKGROUND,
- ARG_CURSOR_POS
-};
-
-
-enum {
- E_SELECTION_PRIMARY,
- E_SELECTION_CLIPBOARD
-};
-enum {
- TARGET_STRING,
- TARGET_TEXT,
- TARGET_COMPOUND_TEXT
-};
-
-static void e_text_class_init (ETextClass *class);
-static void e_text_init (EText *text);
-static void e_text_destroy (GtkObject *object);
-static void e_text_set_arg (GtkObject *object, GtkArg *arg, guint arg_id);
-static void e_text_get_arg (GtkObject *object, GtkArg *arg, guint arg_id);
-
-static void e_text_reflow (GnomeCanvasItem *item, int flags);
-static void e_text_update (GnomeCanvasItem *item, double *affine,
- ArtSVP *clip_path, int flags);
-static void e_text_realize (GnomeCanvasItem *item);
-static void e_text_unrealize (GnomeCanvasItem *item);
-static void e_text_draw (GnomeCanvasItem *item, GdkDrawable *drawable,
- int x, int y, int width, int height);
-static double e_text_point (GnomeCanvasItem *item, double x, double y, int cx, int cy,
- GnomeCanvasItem **actual_item);
-static void e_text_bounds (GnomeCanvasItem *item,
- double *x1, double *y1, double *x2, double *y2);
-static void e_text_render (GnomeCanvasItem *item, GnomeCanvasBuf *buf);
-static gint e_text_event (GnomeCanvasItem *item, GdkEvent *event);
-
-static void e_text_command(ETextEventProcessor *tep, ETextEventProcessorCommand *command, gpointer data);
-
-static void e_text_get_selection(EText *text, GdkAtom selection, guint32 time);
-static void e_text_supply_selection (EText *text, guint time, GdkAtom selection, guchar *data, gint length);
-
-static void e_text_text_model_changed(ETextModel *model, EText *text);
-static void e_text_text_model_reposition (ETextModel *model, ETextModelReposFn fn, gpointer repos_data, gpointer data);
-
-static void _get_tep(EText *text);
-
-static GtkWidget *e_text_get_invisible(EText *text);
-static void _selection_clear_event (GtkInvisible *invisible,
- GdkEventSelection *event,
- EText *text);
-static void _selection_get (GtkInvisible *invisible,
- GtkSelectionData *selection_data,
- guint info,
- guint time_stamp,
- EText *text);
-static void _selection_received (GtkInvisible *invisible,
- GtkSelectionData *selection_data,
- guint time,
- EText *text);
-
-#if 0
-static ETextSuckFont *e_suck_font (GdkFont *font);
-static void e_suck_font_free (ETextSuckFont *suckfont);
-#endif
-
-static void e_text_free_lines(EText *text);
-
-static gint text_width_with_objects (ETextModel *model,
- EFont *font, EFontStyle style,
- const gchar *text, gint bytelen);
-
-static void calc_height (EText *text);
-static void calc_line_widths (EText *text);
-static void split_into_lines (EText *text);
-
-static GnomeCanvasItemClass *parent_class;
-static GdkAtom clipboard_atom = GDK_NONE;
-
-
-
-/**
- * e_text_get_type:
- * @void:
- *
- * Registers the &EText class if necessary, and returns the type ID
- * associated to it.
- *
- * Return value: The type ID of the &EText class.
- **/
-GtkType
-e_text_get_type (void)
-{
- static GtkType text_type = 0;
-
- if (!text_type) {
- GtkTypeInfo text_info = {
- "EText",
- sizeof (EText),
- sizeof (ETextClass),
- (GtkClassInitFunc) e_text_class_init,
- (GtkObjectInitFunc) e_text_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- text_type = gtk_type_unique (gnome_canvas_item_get_type (), &text_info);
- }
-
- return text_type;
-}
-
-/* Class initialization function for the text item */
-static void
-e_text_class_init (ETextClass *klass)
-{
- GtkObjectClass *object_class;
- GnomeCanvasItemClass *item_class;
-
- object_class = (GtkObjectClass *) klass;
- item_class = (GnomeCanvasItemClass *) klass;
-
- parent_class = gtk_type_class (gnome_canvas_item_get_type ());
-
- e_text_signals[E_TEXT_CHANGED] =
- gtk_signal_new ("changed",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETextClass, changed),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- e_text_signals[E_TEXT_ACTIVATE] =
- gtk_signal_new ("activate",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETextClass, activate),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- e_text_signals[E_TEXT_KEYPRESS] =
- gtk_signal_new ("keypress",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETextClass, keypress),
- gtk_marshal_NONE__INT_INT,
- GTK_TYPE_NONE, 2, GTK_TYPE_UINT, GTK_TYPE_UINT);
-
- e_text_signals[E_TEXT_POPUP] =
- gtk_signal_new ("popup",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ETextClass, popup),
- gtk_marshal_NONE__POINTER_INT,
- GTK_TYPE_NONE, 2, GTK_TYPE_POINTER, GTK_TYPE_INT);
-
- gtk_object_class_add_signals (object_class, e_text_signals, E_TEXT_LAST_SIGNAL);
-
-
- gtk_object_add_arg_type ("EText::model",
- GTK_TYPE_OBJECT, GTK_ARG_READWRITE, ARG_MODEL);
- gtk_object_add_arg_type ("EText::event_processor",
- GTK_TYPE_OBJECT, GTK_ARG_READWRITE, ARG_EVENT_PROCESSOR);
- gtk_object_add_arg_type ("EText::text",
- GTK_TYPE_STRING, GTK_ARG_READWRITE, ARG_TEXT);
- gtk_object_add_arg_type ("EText::font",
- GTK_TYPE_STRING, GTK_ARG_WRITABLE, ARG_FONT);
- gtk_object_add_arg_type ("EText::fontset",
- GTK_TYPE_STRING, GTK_ARG_WRITABLE, ARG_FONTSET);
- gtk_object_add_arg_type ("EText::font_gdk",
- GTK_TYPE_GDK_FONT, GTK_ARG_WRITABLE, ARG_FONT_GDK);
- gtk_object_add_arg_type ("EText::font_e",
- GTK_TYPE_POINTER, GTK_ARG_READWRITE, ARG_FONT_E);
- gtk_object_add_arg_type ("EText::bold",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_BOLD);
- gtk_object_add_arg_type ("EText::strikeout",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_STRIKEOUT);
- gtk_object_add_arg_type ("EText::anchor",
- GTK_TYPE_ANCHOR_TYPE, GTK_ARG_READWRITE, ARG_ANCHOR);
- gtk_object_add_arg_type ("EText::justification",
- GTK_TYPE_JUSTIFICATION, GTK_ARG_READWRITE, ARG_JUSTIFICATION);
- gtk_object_add_arg_type ("EText::clip_width",
- GTK_TYPE_DOUBLE, GTK_ARG_READWRITE, ARG_CLIP_WIDTH);
- gtk_object_add_arg_type ("EText::clip_height",
- GTK_TYPE_DOUBLE, GTK_ARG_READWRITE, ARG_CLIP_HEIGHT);
- gtk_object_add_arg_type ("EText::clip",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_CLIP);
- gtk_object_add_arg_type ("EText::fill_clip_rectangle",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_FILL_CLIP_RECTANGLE);
- gtk_object_add_arg_type ("EText::x_offset",
- GTK_TYPE_DOUBLE, GTK_ARG_READWRITE, ARG_X_OFFSET);
- gtk_object_add_arg_type ("EText::y_offset",
- GTK_TYPE_DOUBLE, GTK_ARG_READWRITE, ARG_Y_OFFSET);
- gtk_object_add_arg_type ("EText::fill_color",
- GTK_TYPE_STRING, GTK_ARG_WRITABLE, ARG_FILL_COLOR);
- gtk_object_add_arg_type ("EText::fill_color_gdk",
- GTK_TYPE_GDK_COLOR, GTK_ARG_READWRITE, ARG_FILL_COLOR_GDK);
- gtk_object_add_arg_type ("EText::fill_color_rgba",
- GTK_TYPE_UINT, GTK_ARG_READWRITE, ARG_FILL_COLOR_RGBA);
- gtk_object_add_arg_type ("EText::fill_stipple",
- GTK_TYPE_GDK_WINDOW, GTK_ARG_READWRITE, ARG_FILL_STIPPLE);
- gtk_object_add_arg_type ("EText::text_width",
- GTK_TYPE_DOUBLE, GTK_ARG_READABLE, ARG_TEXT_WIDTH);
- gtk_object_add_arg_type ("EText::text_height",
- GTK_TYPE_DOUBLE, GTK_ARG_READABLE, ARG_TEXT_HEIGHT);
- gtk_object_add_arg_type ("EText::editable",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_EDITABLE);
- gtk_object_add_arg_type ("EText::use_ellipsis",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_USE_ELLIPSIS);
- gtk_object_add_arg_type ("EText::ellipsis",
- GTK_TYPE_STRING, GTK_ARG_READWRITE, ARG_ELLIPSIS);
- gtk_object_add_arg_type ("EText::line_wrap",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_LINE_WRAP);
- gtk_object_add_arg_type ("EText::break_characters",
- GTK_TYPE_STRING, GTK_ARG_READWRITE, ARG_BREAK_CHARACTERS);
- gtk_object_add_arg_type ("EText::max_lines",
- GTK_TYPE_INT, GTK_ARG_READWRITE, ARG_MAX_LINES);
- gtk_object_add_arg_type ("EText::width",
- GTK_TYPE_DOUBLE, GTK_ARG_READWRITE, ARG_WIDTH);
- gtk_object_add_arg_type ("EText::height",
- GTK_TYPE_DOUBLE, GTK_ARG_READABLE, ARG_HEIGHT);
- gtk_object_add_arg_type ("EText::draw_borders",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_DRAW_BORDERS);
- gtk_object_add_arg_type ("EText::allow_newlines",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_ALLOW_NEWLINES);
- gtk_object_add_arg_type ("EText::draw_background",
- GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_DRAW_BACKGROUND);
- gtk_object_add_arg_type ("EText::cursor_pos",
- GTK_TYPE_INT, GTK_ARG_READWRITE, ARG_CURSOR_POS);
-
- if (!clipboard_atom)
- clipboard_atom = gdk_atom_intern ("CLIPBOARD", FALSE);
-
-
-
- klass->changed = NULL;
- klass->activate = NULL;
-
- object_class->destroy = e_text_destroy;
- object_class->set_arg = e_text_set_arg;
- object_class->get_arg = e_text_get_arg;
-
- item_class->update = e_text_update;
- item_class->realize = e_text_realize;
- item_class->unrealize = e_text_unrealize;
- item_class->draw = e_text_draw;
- item_class->point = e_text_point;
- item_class->bounds = e_text_bounds;
- item_class->render = e_text_render;
- item_class->event = e_text_event;
-}
-
-/* Object initialization function for the text item */
-static void
-e_text_init (EText *text)
-{
- text->model = e_text_model_new ();
- text->text = e_text_model_get_text (text->model);
-
- gtk_object_ref (GTK_OBJECT (text->model));
- gtk_object_sink (GTK_OBJECT (text->model));
-
- text->model_changed_signal_id =
- gtk_signal_connect (GTK_OBJECT (text->model),
- "changed",
- GTK_SIGNAL_FUNC (e_text_text_model_changed),
- text);
- text->model_repos_signal_id =
- gtk_signal_connect (GTK_OBJECT (text->model),
- "reposition",
- GTK_SIGNAL_FUNC (e_text_text_model_reposition),
- text);
-
- text->anchor = GTK_ANCHOR_CENTER;
- text->justification = GTK_JUSTIFY_LEFT;
- text->clip_width = -1.0;
- text->clip_height = -1.0;
- text->xofs = 0.0;
- text->yofs = 0.0;
-
- text->ellipsis = NULL;
- text->use_ellipsis = FALSE;
- text->ellipsis_width = 0;
-
- text->editable = FALSE;
- text->editing = FALSE;
- text->xofs_edit = 0;
- text->yofs_edit = 0;
-
- text->selection_start = 0;
- text->selection_end = 0;
- text->select_by_word = FALSE;
-
- text->timeout_id = 0;
- text->timer = NULL;
-
- text->lastx = 0;
- text->lasty = 0;
- text->last_state = 0;
-
- text->scroll_start = 0;
- text->show_cursor = TRUE;
- text->button_down = FALSE;
-
- text->tep = NULL;
- text->tep_command_id = 0;
-
- text->has_selection = FALSE;
-
- text->invisible = NULL;
- text->primary_selection = NULL;
- text->primary_length = 0;
- text->clipboard_selection = NULL;
- text->clipboard_length = 0;
-
- text->pointer_in = FALSE;
- text->default_cursor_shown = TRUE;
-
- text->line_wrap = FALSE;
- text->break_characters = NULL;
- text->max_lines = -1;
-
- text->tooltip_timeout = 0;
- text->tooltip_count = 0;
-
- text->dbl_timeout = 0;
- text->tpl_timeout = 0;
-
- text->draw_background = FALSE;
-
- text->bold = FALSE;
- text->strikeout = FALSE;
-
- text->style = E_FONT_PLAIN;
-
- e_canvas_item_set_reflow_callback(GNOME_CANVAS_ITEM(text), e_text_reflow);
-}
-
-/* Destroy handler for the text item */
-static void
-e_text_destroy (GtkObject *object)
-{
- EText *text;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (E_IS_TEXT (object));
-
- text = E_TEXT (object);
-
- if (text->model_changed_signal_id)
- gtk_signal_disconnect (GTK_OBJECT (text->model),
- text->model_changed_signal_id);
-
- if (text->model_repos_signal_id)
- gtk_signal_disconnect (GTK_OBJECT (text->model),
- text->model_repos_signal_id);
-
- if (text->model)
- gtk_object_unref(GTK_OBJECT(text->model));
-
- if (text->tep_command_id)
- gtk_signal_disconnect(GTK_OBJECT(text->tep),
- text->tep_command_id);
-
- if (text->tep)
- gtk_object_unref (GTK_OBJECT(text->tep));
-
- if (text->invisible)
- gtk_object_unref (GTK_OBJECT(text->invisible));
-
- if (text->lines)
- g_free (text->lines);
-
- if (text->font)
- e_font_unref (text->font);
-
-#if 0
- if (text->suckfont)
- e_suck_font_free (text->suckfont);
-#endif
-
- if (text->stipple)
- gdk_bitmap_unref (text->stipple);
-
- if (text->timeout_id) {
- g_source_remove(text->timeout_id);
- text->timeout_id = 0;
- }
-
- if (text->timer) {
- g_timer_stop(text->timer);
- g_timer_destroy(text->timer);
- text->timer = NULL;
- }
-
- if ( text->tooltip_timeout ) {
- gtk_timeout_remove (text->tooltip_timeout);
- text->tooltip_timeout = 0;
- }
-
- if ( text->dbl_timeout ) {
- gtk_timeout_remove (text->dbl_timeout);
- text->dbl_timeout = 0;
- }
-
- if ( text->tpl_timeout ) {
- gtk_timeout_remove (text->tpl_timeout);
- text->tpl_timeout = 0;
- }
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
-}
-
-static void
-e_text_text_model_changed (ETextModel *model, EText *text)
-{
- text->text = e_text_model_get_text(model);
- e_text_free_lines(text);
- gtk_signal_emit (GTK_OBJECT (text), e_text_signals[E_TEXT_CHANGED]);
- text->needs_split_into_lines = 1;
- e_canvas_item_request_reflow (GNOME_CANVAS_ITEM(text));
-}
-
-static void
-e_text_text_model_reposition (ETextModel *model, ETextModelReposFn fn, gpointer repos_data, gpointer user_data)
-{
- EText *text = E_TEXT (user_data);
- gint model_len = e_text_model_get_text_length (model);
-
- text->selection_start = fn (text->selection_start, repos_data);
- text->selection_end = fn (text->selection_end, repos_data);
-
- /* Our repos function should make sure we don't overrun the buffer, but it never
- hurts to be paranoid. */
- text->selection_start = CLAMP (text->selection_start, 0, model_len);
- text->selection_end = CLAMP (text->selection_end, 0, model_len);
-
- if (text->selection_start > text->selection_end) {
- gint tmp = text->selection_start;
- text->selection_start = text->selection_end;
- text->selection_end = tmp;
- }
-}
-
-static void
-get_bounds_item_relative (EText *text, double *px1, double *py1, double *px2, double *py2)
-{
- GnomeCanvasItem *item;
- double x, y;
- double clip_x, clip_y;
- int old_height;
-
- item = GNOME_CANVAS_ITEM (text);
-
- x = 0;
- y = 0;
-
- clip_x = x;
- clip_y = y;
-
- /* Calculate text dimensions */
-
- old_height = text->height;
-
- if (text->text && text->font)
- text->height = (e_font_height (text->font)) * text->num_lines;
- else
- text->height = 0;
-
- if (old_height != text->height)
- e_canvas_item_request_parent_reflow(item);
-
- /* Anchor text */
-
- switch (text->anchor) {
- case GTK_ANCHOR_NW:
- case GTK_ANCHOR_W:
- case GTK_ANCHOR_SW:
- break;
-
- case GTK_ANCHOR_N:
- case GTK_ANCHOR_CENTER:
- case GTK_ANCHOR_S:
- x -= text->max_width / 2;
- if ( text->clip_width >= 0)
- clip_x -= text->clip_width / 2;
- else
- clip_x -= text->width / 2;
- break;
-
- case GTK_ANCHOR_NE:
- case GTK_ANCHOR_E:
- case GTK_ANCHOR_SE:
- x -= text->max_width;
- if (text->clip_width >= 0)
- clip_x -= text->clip_width;
- else
- clip_x -= text->width;
- break;
- }
-
- switch (text->anchor) {
- case GTK_ANCHOR_NW:
- case GTK_ANCHOR_N:
- case GTK_ANCHOR_NE:
- break;
-
- case GTK_ANCHOR_W:
- case GTK_ANCHOR_CENTER:
- case GTK_ANCHOR_E:
- y -= text->height / 2;
- if ( text->clip_height >= 0 )
- clip_y -= text->clip_height / 2;
- else
- clip_y -= text->height / 2;
- break;
-
- case GTK_ANCHOR_SW:
- case GTK_ANCHOR_S:
- case GTK_ANCHOR_SE:
- y -= text->height;
- if ( text->clip_height >= 0 )
- clip_y -= text->clip_height;
- else
- clip_y -= text->height;
- break;
- }
-
- /* Bounds */
-
- if (text->clip) {
- /* maybe do bbox intersection here? */
- *px1 = clip_x;
- *py1 = clip_y;
- if (text->clip_width >= 0)
- *px2 = clip_x + text->clip_width;
- else
- *px2 = clip_x + text->width;
-
- if ( text->clip_height >= 0 )
- *py2 = clip_y + text->clip_height;
- else
- *py2 = clip_y + text->height;
- } else {
- *px1 = x;
- *py1 = y;
- *px2 = x + text->max_width;
- *py2 = y + text->height;
- }
-}
-
-static void
-get_bounds (EText *text, double *px1, double *py1, double *px2, double *py2)
-{
- GnomeCanvasItem *item;
- double wx, wy, clip_width;
-
- item = GNOME_CANVAS_ITEM (text);
-
- /* Get canvas pixel coordinates for text position */
-
- wx = 0;
- wy = 0;
- gnome_canvas_item_i2w (item, &wx, &wy);
- gnome_canvas_w2c (item->canvas, wx + text->xofs, wy + text->yofs, &text->cx, &text->cy);
-
- if (text->clip_width < 0)
- clip_width = text->max_width;
- else
- clip_width = text->clip_width;
-
- /* Get canvas pixel coordinates for clip rectangle position */
- gnome_canvas_w2c (item->canvas, wx, wy, &text->clip_cx, &text->clip_cy);
- text->clip_cwidth = clip_width * item->canvas->pixels_per_unit;
- if ( text->clip_height >= 0 )
- text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit;
- else
- text->clip_cheight = text->height * item->canvas->pixels_per_unit;
-
- /* Anchor text */
-
- switch (text->anchor) {
- case GTK_ANCHOR_NW:
- case GTK_ANCHOR_W:
- case GTK_ANCHOR_SW:
- break;
-
- case GTK_ANCHOR_N:
- case GTK_ANCHOR_CENTER:
- case GTK_ANCHOR_S:
- text->cx -= text->max_width / 2;
- text->clip_cx -= text->clip_cwidth / 2;
- break;
-
- case GTK_ANCHOR_NE:
- case GTK_ANCHOR_E:
- case GTK_ANCHOR_SE:
- text->cx -= text->max_width;
- text->clip_cx -= text->clip_cwidth;
- break;
- }
-
- switch (text->anchor) {
- case GTK_ANCHOR_NW:
- case GTK_ANCHOR_N:
- case GTK_ANCHOR_NE:
- break;
-
- case GTK_ANCHOR_W:
- case GTK_ANCHOR_CENTER:
- case GTK_ANCHOR_E:
- text->cy -= text->height / 2;
- text->clip_cy -= text->clip_cheight / 2;
- break;
-
- case GTK_ANCHOR_SW:
- case GTK_ANCHOR_S:
- case GTK_ANCHOR_SE:
- text->cy -= text->height;
- text->clip_cy -= text->clip_cheight;
- break;
- }
-
- /* Bounds */
-
- if (text->clip) {
- *px1 = text->clip_cx;
- *py1 = text->clip_cy;
- *px2 = text->clip_cx + text->clip_cwidth;
- *py2 = text->clip_cy + text->clip_cheight;
- } else {
- *px1 = text->cx;
- *py1 = text->cy;
- *px2 = text->cx + text->max_width;
- *py2 = text->cy + text->height;
- }
-}
-
-static void
-calc_height (EText *text)
-{
- GnomeCanvasItem *item;
- int old_height;
-
- item = GNOME_CANVAS_ITEM (text);
-
- /* Calculate text dimensions */
-
- old_height = text->height;
-
- if (text->text && text->font)
- text->height = e_font_height (text->font) * text->num_lines;
- else
- text->height = 0;
-
- if (old_height != text->height)
- e_canvas_item_request_parent_reflow(item);
-}
-
-static void
-calc_ellipsis (EText *text)
-{
- if (text->font)
- text->ellipsis_width =
- e_font_utf8_text_width (text->font, text->style,
- text->ellipsis ? text->ellipsis : "...",
- text->ellipsis ? strlen (text->ellipsis) : 3);
-}
-
-/* Calculates the line widths (in pixels) of the text's splitted lines */
-static void
-calc_line_widths (EText *text)
-{
- struct line *lines;
- int i;
- gdouble clip_width;
- const gchar *p;
-
- lines = text->lines;
- text->max_width = 0;
-
- clip_width = text->clip_width;
- if (clip_width >= 0 && text->draw_borders) {
- clip_width -= 6;
- if (clip_width < 0)
- clip_width = 0;
- }
-
-
- if (!lines)
- return;
-
- for (i = 0; i < text->num_lines; i++) {
- if (lines->length != 0) {
- if (text->font) {
- lines->width = text_width_with_objects (text->model,
- text->font, text->style,
- lines->text, lines->length);
- lines->ellipsis_length = 0;
- } else {
- lines->width = 0;
- }
-
- if (text->clip &&
- text->use_ellipsis &&
- ! text->editing &&
- lines->width > clip_width &&
- clip_width >= 0) {
- if (text->font) {
- lines->ellipsis_length = 0;
- for (p = lines->text;
- p && *p && g_unichar_validate (g_utf8_get_char (p)) && (p - lines->text) < lines->length;
- p = g_utf8_next_char (p)) {
- gint text_width = text_width_with_objects (text->model,
- text->font, text->style,
- lines->text, p - lines->text);
- if (clip_width >= text_width + text->ellipsis_width)
- lines->ellipsis_length = p - lines->text;
- else
- break;
- }
- }
- else
- lines->ellipsis_length = 0;
- lines->width = text_width_with_objects (text->model,
- text->font, text->style,
- lines->text, lines->ellipsis_length) +
- text->ellipsis_width;
- } else
- lines->ellipsis_length = lines->length;
-
- if (lines->width > text->max_width)
- text->max_width = lines->width;
- }
-
- lines++;
- }
-}
-
-static void
-e_text_free_lines(EText *text)
-{
- if (text->lines)
- g_free (text->lines);
-
- text->lines = NULL;
- text->num_lines = 0;
-}
-
-static gint
-text_width_with_objects (ETextModel *model,
- EFont *font, EFontStyle style,
- const gchar *text, gint numbytes)
-{
- return e_font_utf8_text_width (font, style, text, numbytes);
-}
-
-static void
-text_draw_with_objects (ETextModel *model,
- GdkDrawable *drawable,
- EFont *font, EFontStyle style,
- GdkGC *gc,
- gint x, gint y,
- const gchar *text, gint numbytes)
-{
- const gchar *c;
-
- while (*text && numbytes > 0) {
- gint obj_num = -1;
-
- c = text;
-
- while (*c
- && (obj_num = e_text_model_get_object_at_pointer (model, c)) == -1
- && numbytes > 0) {
- ++c;
- --numbytes;
- }
-
- e_font_draw_utf8_text (drawable, font, style, gc, x, y, text, c-text);
- x += e_font_utf8_text_width (font, style, text, c-text);
-
- if (obj_num != -1 && numbytes > 0) {
- gint len;
- gint start_x = x;
-
- e_text_model_get_nth_object (model, obj_num, &len);
-
- if (len > numbytes)
- len = numbytes;
- e_font_draw_utf8_text (drawable, font, style, gc, x, y, c, len);
- x += e_font_utf8_text_width (font, style, c, len);
-
- /* We underline our objects. */
- gdk_draw_line (drawable, gc, start_x, y+1, x, y+1);
-
- c += len;
- numbytes -= len;
- }
-
- text = c;
- }
-}
-
-#define IS_BREAKCHAR(text,c) ((text)->break_characters && g_utf8_strchr ((text)->break_characters, (c)))
-/* Splits the text of the text item into lines */
-static void
-split_into_lines (EText *text)
-{
- const char *p, *cp;
- struct line *lines;
- int len;
- int line_num;
- const char *laststart;
- const char *lastend;
- const char *linestart;
- double clip_width;
- gunichar unival;
-
-
- if (text->text == NULL)
- return;
-
- /* Free old array of lines */
- e_text_free_lines(text);
-
- /* First, count the number of lines */
-
- lastend = text->text;
- laststart = text->text;
- linestart = text->text;
-
- clip_width = text->clip_width;
- if (clip_width >= 0 && text->draw_borders) {
- clip_width -= 6;
- if (clip_width < 0)
- clip_width = 0;
- }
-
- cp = text->text;
-
- for (p = e_unicode_get_utf8 (cp, &unival); (unival && p); cp = p, p = e_unicode_get_utf8 (p, &unival)) {
- if (text->line_wrap
- && (g_unichar_isspace (unival) || unival == '\n')
- && e_text_model_get_object_at_pointer (text->model, cp) == -1) { /* don't break mid-object */
- if (laststart != lastend
- && clip_width < text_width_with_objects (text->model,
- text->font, text->style,
- linestart, cp - linestart)) {
- text->num_lines ++;
-
- linestart = laststart;
- laststart = p;
- lastend = cp;
- } else if (g_unichar_isspace (unival)) {
- laststart = p;
- lastend = cp;
- }
- } else if (text->line_wrap
- && IS_BREAKCHAR (text, unival)) {
-
- if (laststart != lastend
- && g_utf8_pointer_to_offset (linestart, cp) != 1
- && clip_width < text_width_with_objects (text->model,
- text->font, text->style,
- linestart, p - linestart)) {
- text->num_lines ++;
-
- linestart = laststart;
- laststart = p;
- lastend = p;
- } else {
- laststart = p;
- lastend = p;
- }
- }
-
- if (unival == '\n') {
- text->num_lines ++;
-
- lastend = p;
- laststart = p;
- linestart = p;
- }
- }
-
- if ( text->line_wrap
- && p
- && laststart != lastend
- && clip_width < text_width_with_objects (text->model,
- text->font, text->style,
- linestart, cp - linestart)) {
- text->num_lines ++;
- }
-
- text->num_lines++;
-
- if ( (!text->editing) && text->max_lines != -1 && text->num_lines > text->max_lines ) {
- text->num_lines = text->max_lines;
- }
-
- /* Allocate array of lines and calculate split positions */
-
- text->lines = lines = g_new0 (struct line, text->num_lines);
- len = 0;
- line_num = 1;
- lastend = text->text;
- laststart = text->text;
-
- cp = text->text;
-
- for (p = e_unicode_get_utf8 (cp, &unival); p && unival && line_num < text->num_lines; cp = p, p = e_unicode_get_utf8 (p, &unival)) {
- gboolean handled = FALSE;
-
- if (len == 0)
- lines->text = cp;
- if (text->line_wrap
- && (g_unichar_isspace (unival) || unival == '\n')
- && e_text_model_get_object_at_pointer (text->model, cp) == -1) { /* don't break mid-object */
- if (clip_width < text_width_with_objects (text->model,
- text->font, text->style,
- lines->text, cp - lines->text)
- && laststart != lastend) {
-
- lines->length = lastend - lines->text;
-
- lines++;
- line_num++;
- len = cp - laststart;
- lines->text = laststart;
- laststart = p;
- lastend = cp;
- } else if (g_unichar_isspace (unival)) {
- laststart = p;
- lastend = cp;
- len ++;
- }
- handled = TRUE;
- } else if (text->line_wrap
- && IS_BREAKCHAR(text, unival)
- && e_text_model_get_object_at_pointer (text->model, cp) == -1) {
- if (laststart != lastend
- && g_utf8_pointer_to_offset (lines->text, cp) != 1
- && clip_width < text_width_with_objects (text->model,
- text->font, text->style,
- lines->text, p - lines->text)) {
-
- lines->length = lastend - lines->text;
-
- lines++;
- line_num++;
- len = p - laststart;
- lines->text = laststart;
- laststart = p;
- lastend = p;
- } else {
- laststart = p;
- lastend = p;
- len ++;
- }
- }
- if (line_num >= text->num_lines)
- break;
- if (unival == '\n') {
-
- lines->length = cp - lines->text;
-
- lines++;
- line_num++;
- len = 0;
- lastend = p;
- laststart = p;
- handled = TRUE;
- }
- if (!handled)
- len++;
- }
-
- if ( line_num < text->num_lines && text->line_wrap ) {
- if (clip_width < text_width_with_objects (text->model,
- text->font, text->style,
- lines->text, cp - lines->text)
- && laststart != lastend ) {
-
- lines->length = lastend - lines->text;
-
- lines++;
- line_num++;
- len = cp - laststart;
- lines->text = laststart;
- laststart = p;
- lastend = cp;
- }
- }
-
- if (len == 0)
- lines->text = cp;
- lines->length = strlen (lines->text);
-}
-
-/* Convenience function to set the text's GC's foreground color */
-static void
-set_text_gc_foreground (EText *text)
-{
- if (!text->gc)
- return;
-
- gdk_gc_set_foreground (text->gc, &text->color);
-}
-
-/* Sets the stipple pattern for the text */
-static void
-set_stipple (EText *text, GdkBitmap *stipple, int reconfigure)
-{
- if (text->stipple && !reconfigure)
- gdk_bitmap_unref (text->stipple);
-
- text->stipple = stipple;
- if (stipple && !reconfigure)
- gdk_bitmap_ref (stipple);
-
- if (text->gc) {
- if (stipple) {
- gdk_gc_set_stipple (text->gc, stipple);
- gdk_gc_set_fill (text->gc, GDK_STIPPLED);
- } else
- gdk_gc_set_fill (text->gc, GDK_SOLID);
- }
-}
-
-/* Set_arg handler for the text item */
-static void
-e_text_set_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- GnomeCanvasItem *item;
- EText *text;
- GdkColor color = { 0, 0, 0, 0, };
- GdkColor *pcolor;
- gboolean color_changed;
- int have_pixel;
-
- gboolean needs_update = 0;
- gboolean needs_reflow = 0;
-
- item = GNOME_CANVAS_ITEM (object);
- text = E_TEXT (object);
-
- color_changed = FALSE;
- have_pixel = FALSE;
-
- switch (arg_id) {
- case ARG_MODEL:
-
- if ( text->model_changed_signal_id )
- gtk_signal_disconnect (GTK_OBJECT (text->model),
- text->model_changed_signal_id);
-
- if ( text->model_repos_signal_id )
- gtk_signal_disconnect (GTK_OBJECT (text->model),
- text->model_repos_signal_id);
-
- gtk_object_unref (GTK_OBJECT (text->model));
- text->model = E_TEXT_MODEL (GTK_VALUE_OBJECT (*arg));
- gtk_object_ref (GTK_OBJECT (text->model));
-
- text->model_changed_signal_id =
- gtk_signal_connect (GTK_OBJECT (text->model),
- "changed",
- GTK_SIGNAL_FUNC (e_text_text_model_changed),
- text);
-
- text->model_repos_signal_id =
- gtk_signal_connect (GTK_OBJECT (text->model),
- "reposition",
- GTK_SIGNAL_FUNC (e_text_text_model_reposition),
- text);
-
- e_text_free_lines(text);
-
- text->text = e_text_model_get_text(text->model);
- gtk_signal_emit (GTK_OBJECT (text), e_text_signals[E_TEXT_CHANGED]);
-
- text->needs_split_into_lines = 1;
- needs_reflow = 1;
- break;
-
- case ARG_EVENT_PROCESSOR:
- if ( text->tep && text->tep_command_id )
- gtk_signal_disconnect(GTK_OBJECT(text->tep),
- text->tep_command_id);
- if ( text->tep ) {
- gtk_object_unref(GTK_OBJECT(text->tep));
- }
- text->tep = E_TEXT_EVENT_PROCESSOR(GTK_VALUE_OBJECT (*arg));
- gtk_object_ref(GTK_OBJECT(text->tep));
- text->tep_command_id =
- gtk_signal_connect(GTK_OBJECT(text->tep),
- "command",
- GTK_SIGNAL_FUNC(e_text_command),
- text);
- break;
-
- case ARG_TEXT:
- text->num_lines = 1;
- e_text_model_set_text(text->model, GTK_VALUE_STRING (*arg));
- break;
-
- case ARG_FONT:
- if (text->font)
- e_font_unref (text->font);
-
- text->font = e_font_from_gdk_name (GTK_VALUE_STRING (*arg));
-
- calc_ellipsis (text);
- if ( text->line_wrap )
- text->needs_split_into_lines = 1;
- else {
- text->needs_calc_line_widths = 1;
- text->needs_calc_height = 1;
- }
- needs_reflow = 1;
- break;
-
- case ARG_FONTSET:
- if (text->font)
- e_font_unref (text->font);
-
- text->font = e_font_from_gdk_name (GTK_VALUE_STRING (*arg));
-
- calc_ellipsis (text);
- if ( text->line_wrap )
- text->needs_split_into_lines = 1;
- else {
- text->needs_calc_line_widths = 1;
- text->needs_calc_height = 1;
- }
- needs_reflow = 1;
- break;
-
- case ARG_FONT_GDK:
- /* Ref the font in case it was the font that is stored
- in the e-font */
- gdk_font_ref (GTK_VALUE_POINTER (*arg));
- if (text->font)
- e_font_unref (text->font);
-
- text->font = e_font_from_gdk_font (GTK_VALUE_POINTER (*arg));
-
- calc_ellipsis (text);
- if ( text->line_wrap )
- text->needs_split_into_lines = 1;
- else {
- text->needs_calc_line_widths = 1;
- text->needs_calc_height = 1;
- }
- needs_reflow = 1;
- break;
-
- case ARG_FONT_E:
- if (text->font)
- e_font_unref (text->font);
-
- text->font = GTK_VALUE_POINTER (*arg);
-
- calc_ellipsis (text);
- if (text->line_wrap)
- text->needs_split_into_lines = 1;
- else {
- text->needs_calc_line_widths = 1;
- text->needs_calc_height = 1;
- }
- needs_reflow = 1;
- break;
-
- case ARG_BOLD:
- text->bold = GTK_VALUE_BOOL (*arg);
- text->style = text->bold ? E_FONT_BOLD : E_FONT_PLAIN;
-
- text->needs_redraw = 1;
- text->needs_recalc_bounds = 1;
- if ( text->line_wrap )
- text->needs_split_into_lines = 1;
- else {
- text->needs_calc_line_widths = 1;
- text->needs_calc_height = 1;
- }
- needs_update = 1;
- needs_reflow = 1;
- break;
-
- case ARG_STRIKEOUT:
- text->strikeout = GTK_VALUE_BOOL (*arg);
- text->needs_redraw = 1;
- needs_update = 1;
- break;
-
- case ARG_ANCHOR:
- text->anchor = GTK_VALUE_ENUM (*arg);
- text->needs_recalc_bounds = 1;
- needs_update = 1;
- break;
-
- case ARG_JUSTIFICATION:
- text->justification = GTK_VALUE_ENUM (*arg);
- text->needs_redraw = 1;
- needs_update = 1;
- break;
-
- case ARG_CLIP_WIDTH:
- text->clip_width = fabs (GTK_VALUE_DOUBLE (*arg));
- calc_ellipsis (text);
- if ( text->line_wrap )
- text->needs_split_into_lines = 1;
- else {
- text->needs_calc_line_widths = 1;
- text->needs_calc_height = 1;
- }
- needs_reflow = 1;
- break;
-
- case ARG_CLIP_HEIGHT:
- text->clip_height = fabs (GTK_VALUE_DOUBLE (*arg));
- text->needs_recalc_bounds = 1;
- needs_reflow = 1;
- break;
-
- case ARG_CLIP:
- text->clip = GTK_VALUE_BOOL (*arg);
- calc_ellipsis (text);
- if ( text->line_wrap )
- text->needs_split_into_lines = 1;
- else {
- text->needs_calc_line_widths = 1;
- text->needs_calc_height = 1;
- }
- needs_reflow = 1;
- break;
-
- case ARG_FILL_CLIP_RECTANGLE:
- text->fill_clip_rectangle = GTK_VALUE_BOOL (*arg);
- needs_update = 1;
- break;
-
- case ARG_X_OFFSET:
- text->xofs = GTK_VALUE_DOUBLE (*arg);
- text->needs_recalc_bounds = 1;
- needs_update = 1;
- break;
-
- case ARG_Y_OFFSET:
- text->yofs = GTK_VALUE_DOUBLE (*arg);
- text->needs_recalc_bounds = 1;
- needs_update = 1;
- break;
-
- case ARG_FILL_COLOR:
- if (GTK_VALUE_STRING (*arg))
- gdk_color_parse (GTK_VALUE_STRING (*arg), &color);
-
- text->rgba = ((color.red & 0xff00) << 16 |
- (color.green & 0xff00) << 8 |
- (color.blue & 0xff00) |
- 0xff);
- color_changed = TRUE;
- break;
-
- case ARG_FILL_COLOR_GDK:
- pcolor = GTK_VALUE_BOXED (*arg);
- if (pcolor) {
- color = *pcolor;
- }
-
- text->rgba = ((color.red & 0xff00) << 16 |
- (color.green & 0xff00) << 8 |
- (color.blue & 0xff00) |
- 0xff);
- color_changed = TRUE;
- break;
-
- case ARG_FILL_COLOR_RGBA:
- text->rgba = GTK_VALUE_UINT (*arg);
- color.red = ((text->rgba >> 24) & 0xff) * 0x101;
- color.green = ((text->rgba >> 16) & 0xff) * 0x101;
- color.blue = ((text->rgba >> 8) & 0xff) * 0x101;
- color_changed = TRUE;
- break;
-
- case ARG_FILL_STIPPLE:
- set_stipple (text, GTK_VALUE_BOXED (*arg), FALSE);
- text->needs_redraw = 1;
- needs_update = 1;
- break;
-
- case ARG_EDITABLE:
- text->editable = GTK_VALUE_BOOL (*arg);
- text->needs_redraw = 1;
- needs_update = 1;
- break;
-
- case ARG_USE_ELLIPSIS:
- text->use_ellipsis = GTK_VALUE_BOOL (*arg);
- text->needs_calc_line_widths = 1;
- needs_reflow = 1;
- break;
-
- case ARG_ELLIPSIS:
- if (text->ellipsis)
- g_free (text->ellipsis);
-
- text->ellipsis = g_strdup (GTK_VALUE_STRING (*arg));
- calc_ellipsis (text);
- text->needs_calc_line_widths = 1;
- needs_reflow = 1;
- break;
-
- case ARG_LINE_WRAP:
- text->line_wrap = GTK_VALUE_BOOL (*arg);
- text->needs_split_into_lines = 1;
- needs_reflow = 1;
- break;
-
- case ARG_BREAK_CHARACTERS:
- if ( text->break_characters ) {
- g_free(text->break_characters);
- text->break_characters = NULL;
- }
- if ( GTK_VALUE_STRING (*arg) )
- text->break_characters = g_strdup( GTK_VALUE_STRING (*arg) );
- text->needs_split_into_lines = 1;
- needs_reflow = 1;
- break;
-
- case ARG_MAX_LINES:
- text->max_lines = GTK_VALUE_INT (*arg);
- text->needs_split_into_lines = 1;
- needs_reflow = 1;
- break;
-
- case ARG_WIDTH:
- text->clip_width = fabs (GTK_VALUE_DOUBLE (*arg));
- calc_ellipsis (text);
- if ( text->line_wrap )
- text->needs_split_into_lines = 1;
- else {
- text->needs_calc_line_widths = 1;
- text->needs_calc_height = 1;
- }
- needs_reflow = 1;
- break;
-
- case ARG_DRAW_BORDERS:
- if (text->draw_borders != GTK_VALUE_BOOL (*arg)) {
- text->draw_borders = GTK_VALUE_BOOL (*arg);
- text->needs_calc_height = 1;
- text->needs_redraw = 1;
- needs_reflow = 1;
- needs_update = 1;
- }
- break;
-
- case ARG_DRAW_BACKGROUND:
- if (text->draw_background != GTK_VALUE_BOOL (*arg)){
- text->draw_background = GTK_VALUE_BOOL (*arg);
- text->needs_redraw = 1;
- }
- break;
-
- case ARG_ALLOW_NEWLINES:
- _get_tep(text);
- gtk_object_set (GTK_OBJECT (text->tep),
- "allow_newlines", GTK_VALUE_BOOL (*arg),
- NULL);
- break;
-
- case ARG_CURSOR_POS: {
- ETextEventProcessorCommand command;
-
- command.action = E_TEP_MOVE;
- command.position = E_TEP_VALUE;
- command.value = GTK_VALUE_INT (*arg);
- command.time = GDK_CURRENT_TIME;
- e_text_command (text->tep, &command, text);
- break;
- }
-
- default:
- return;
- }
-
- if (color_changed) {
- if (GNOME_CANVAS_ITEM_REALIZED & GTK_OBJECT_FLAGS(item))
- gdk_color_context_query_color (item->canvas->cc, &color);
-
- text->color = color;
-
- if (!item->canvas->aa)
- set_text_gc_foreground (text);
-
- text->needs_redraw = 1;
- needs_update = 1;
- }
-
- if ( needs_reflow )
- e_canvas_item_request_reflow (item);
- if ( needs_update )
- gnome_canvas_item_request_update (item);
-}
-
-/* Get_arg handler for the text item */
-static void
-e_text_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
-{
- EText *text;
- GdkColor *color;
-
- text = E_TEXT (object);
-
- switch (arg_id) {
- case ARG_MODEL:
- GTK_VALUE_OBJECT (*arg) = GTK_OBJECT(text->model);
- break;
-
- case ARG_EVENT_PROCESSOR:
- _get_tep(text);
- GTK_VALUE_OBJECT (*arg) = GTK_OBJECT(text->tep);
- break;
-
- case ARG_TEXT:
- GTK_VALUE_STRING (*arg) = g_strdup (text->text);
- break;
-
- case ARG_FONT_E:
- GTK_VALUE_BOXED (*arg) = text->font;
- break;
-
- case ARG_BOLD:
- GTK_VALUE_BOOL (*arg) = text->bold;
- break;
-
- case ARG_STRIKEOUT:
- GTK_VALUE_BOOL (*arg) = text->strikeout;
- break;
-
- case ARG_ANCHOR:
- GTK_VALUE_ENUM (*arg) = text->anchor;
- break;
-
- case ARG_JUSTIFICATION:
- GTK_VALUE_ENUM (*arg) = text->justification;
- break;
-
- case ARG_CLIP_WIDTH:
- GTK_VALUE_DOUBLE (*arg) = text->clip_width;
- break;
-
- case ARG_CLIP_HEIGHT:
- GTK_VALUE_DOUBLE (*arg) = text->clip_height;
- break;
-
- case ARG_CLIP:
- GTK_VALUE_BOOL (*arg) = text->clip;
- break;
-
- case ARG_FILL_CLIP_RECTANGLE:
- GTK_VALUE_BOOL (*arg) = text->fill_clip_rectangle;
- break;
-
- case ARG_X_OFFSET:
- GTK_VALUE_DOUBLE (*arg) = text->xofs;
- break;
-
- case ARG_Y_OFFSET:
- GTK_VALUE_DOUBLE (*arg) = text->yofs;
- break;
-
- case ARG_FILL_COLOR_GDK:
- color = g_new (GdkColor, 1);
- *color = text->color;
- GTK_VALUE_BOXED (*arg) = color;
- break;
-
- case ARG_FILL_COLOR_RGBA:
- GTK_VALUE_UINT (*arg) = text->rgba;
- break;
-
- case ARG_FILL_STIPPLE:
- GTK_VALUE_BOXED (*arg) = text->stipple;
- break;
-
- case ARG_TEXT_WIDTH:
- GTK_VALUE_DOUBLE (*arg) = text->max_width / text->item.canvas->pixels_per_unit;
- break;
-
- case ARG_TEXT_HEIGHT:
- GTK_VALUE_DOUBLE (*arg) = text->height / text->item.canvas->pixels_per_unit;
- break;
-
- case ARG_EDITABLE:
- GTK_VALUE_BOOL (*arg) = text->editable;
- break;
-
- case ARG_USE_ELLIPSIS:
- GTK_VALUE_BOOL (*arg) = text->use_ellipsis;
- break;
-
- case ARG_ELLIPSIS:
- GTK_VALUE_STRING (*arg) = g_strdup (text->ellipsis);
- break;
-
- case ARG_LINE_WRAP:
- GTK_VALUE_BOOL (*arg) = text->line_wrap;
- break;
-
- case ARG_BREAK_CHARACTERS:
- GTK_VALUE_STRING (*arg) = g_strdup (text->break_characters);
- break;
-
- case ARG_MAX_LINES:
- GTK_VALUE_INT (*arg) = text->max_lines;
- break;
-
- case ARG_WIDTH:
- GTK_VALUE_DOUBLE (*arg) = text->clip_width;
- break;
-
- case ARG_HEIGHT:
- GTK_VALUE_DOUBLE (*arg) = text->clip && text->clip_height != -1 ? text->clip_height : text->height / text->item.canvas->pixels_per_unit;
- break;
-
- case ARG_DRAW_BORDERS:
- GTK_VALUE_BOOL (*arg) = text->draw_borders;
- break;
-
- case ARG_DRAW_BACKGROUND:
- GTK_VALUE_BOOL (*arg) = text->draw_background;
- break;
-
- case ARG_ALLOW_NEWLINES:
- {
- gboolean allow_newlines;
- _get_tep(text);
- gtk_object_get (GTK_OBJECT (text->tep),
- "allow_newlines", &allow_newlines,
- NULL);
- GTK_VALUE_BOOL (*arg) = allow_newlines;
- }
- break;
-
- case ARG_CURSOR_POS:
- GTK_VALUE_INT (*arg) = text->selection_start;
- break;
-
- default:
- arg->type = GTK_TYPE_INVALID;
- break;
- }
-}
-
-/* Update handler for the text item */
-static void
-e_text_reflow (GnomeCanvasItem *item, int flags)
-{
- EText *text;
-
- text = E_TEXT (item);
-
- if (text->needs_split_into_lines) {
- split_into_lines (text);
-
- text->needs_split_into_lines = 0;
- text->needs_calc_line_widths = 1;
- text->needs_calc_height = 1;
- }
-
- if ( text->needs_calc_line_widths ) {
- int x;
- int i;
- struct line *lines;
- gdouble clip_width;
- calc_line_widths (text);
- text->needs_calc_line_widths = 0;
- text->needs_redraw = 1;
-
- lines = text->lines;
- if ( !lines )
- return;
-
- for (lines = text->lines, i = 0; i < text->num_lines ; i++, lines ++) {
- if ((lines->text - text->text) > text->selection_end) {
- break;
- }
- }
- lines --;
- i--;
- x = text_width_with_objects (text->model,
- text->font, text->style,
- lines->text,
- text->selection_end - (lines->text - text->text));
-
- if (x < text->xofs_edit) {
- text->xofs_edit = x;
- }
-
- clip_width = text->clip_width;
- if (clip_width >= 0 && text->draw_borders) {
- clip_width -= 6;
- if (clip_width < 0)
- clip_width = 0;
- }
-
- if (2 + x - clip_width > text->xofs_edit) {
- text->xofs_edit = 2 + x - clip_width;
- }
-
- if (e_font_height (text->font) * i < text->yofs_edit)
- text->yofs_edit = e_font_height (text->font) * i;
-
- if (e_font_height (text->font) * (i + 1) -
- (text->clip_height != -1 ? text->clip_height : text->height) > text->yofs_edit)
- text->yofs_edit = e_font_height (text->font) * (i + 1) -
- (text->clip_height != -1 ? text->clip_height : text->height);
-
- gnome_canvas_item_request_update (item);
- }
- if ( text->needs_calc_height ) {
- calc_height (text);
- gnome_canvas_item_request_update(item);
- text->needs_calc_height = 0;
- text->needs_recalc_bounds = 1;
- }
-}
-
-/* Update handler for the text item */
-static void
-e_text_update (GnomeCanvasItem *item, double *affine, ArtSVP *clip_path, int flags)
-{
- EText *text;
- double x1, y1, x2, y2;
- ArtDRect i_bbox, c_bbox;
- int i;
-
- text = E_TEXT (item);
-
- if (parent_class->update)
- (* parent_class->update) (item, affine, clip_path, flags);
-
- if ( text->needs_recalc_bounds
- || (flags & GNOME_CANVAS_UPDATE_AFFINE)) {
- if (!item->canvas->aa) {
- set_text_gc_foreground (text);
- set_stipple (text, text->stipple, TRUE);
- get_bounds (text, &x1, &y1, &x2, &y2);
- if ( item->x1 != x1 ||
- item->x2 != x2 ||
- item->y1 != y1 ||
- item->y2 != y2 ) {
- gnome_canvas_request_redraw (item->canvas, item->x1, item->y1, item->x2, item->y2);
- item->x1 = x1;
- item->y1 = y1;
- item->x2 = x2;
- item->y2 = y2;
- text->needs_redraw = 1;
- item->canvas->need_repick = TRUE;
- }
- } else {
- /* aa rendering */
- for (i = 0; i < 6; i++)
- text->affine[i] = affine[i];
- get_bounds_item_relative (text, &i_bbox.x0, &i_bbox.y0, &i_bbox.x1, &i_bbox.y1);
- art_drect_affine_transform (&c_bbox, &i_bbox, affine);
- }
- text->needs_recalc_bounds = 0;
- }
- if ( text->needs_redraw ) {
- gnome_canvas_request_redraw (item->canvas, item->x1, item->y1, item->x2, item->y2);
- text->needs_redraw = 0;
- }
-}
-
-/* Realize handler for the text item */
-static void
-e_text_realize (GnomeCanvasItem *item)
-{
- EText *text;
-
- text = E_TEXT (item);
-
- if (parent_class->realize)
- (* parent_class->realize) (item);
-
- text->gc = gdk_gc_new (item->canvas->layout.bin_window);
- gdk_color_context_query_color (item->canvas->cc, &text->color);
- gdk_gc_set_foreground (text->gc, &text->color);
-
- text->i_cursor = gdk_cursor_new (GDK_XTERM);
- text->default_cursor = gdk_cursor_new (GDK_LEFT_PTR);
- if (text->font == NULL) {
- gdk_font_ref (GTK_WIDGET (item->canvas)->style->font);
- text->font = e_font_from_gdk_font (GTK_WIDGET (item->canvas)->style->font);
- }
-}
-
-/* Unrealize handler for the text item */
-static void
-e_text_unrealize (GnomeCanvasItem *item)
-{
- EText *text;
-
- text = E_TEXT (item);
-
- gdk_gc_unref (text->gc);
- text->gc = NULL;
-
- gdk_cursor_destroy (text->i_cursor);
- text->i_cursor = NULL;
- gdk_cursor_destroy (text->default_cursor);
- text->default_cursor = NULL;
-
- if (parent_class->unrealize)
- (* parent_class->unrealize) (item);
-}
-
-/* Calculates the x position of the specified line of text, based on the text's justification */
-static double
-get_line_xpos_item_relative (EText *text, struct line *line)
-{
- double x;
-
- x = 0;
-
- switch (text->anchor) {
- case GTK_ANCHOR_NW:
- case GTK_ANCHOR_W:
- case GTK_ANCHOR_SW:
- break;
-
- case GTK_ANCHOR_N:
- case GTK_ANCHOR_CENTER:
- case GTK_ANCHOR_S:
- x -= text->max_width / 2;
- break;
-
- case GTK_ANCHOR_NE:
- case GTK_ANCHOR_E:
- case GTK_ANCHOR_SE:
- x -= text->max_width;
- break;
- }
-
- switch (text->justification) {
- case GTK_JUSTIFY_RIGHT:
- x += text->max_width - line->width;
- break;
-
- case GTK_JUSTIFY_CENTER:
- x += (text->max_width - line->width) * 0.5;
- break;
-
- default:
- if (text->draw_borders)
- x += BORDER_INDENT;
-
- /* For GTK_JUSTIFY_LEFT, we don't have to do anything. We do not support
- * GTK_JUSTIFY_FILL, yet.
- */
- break;
- }
-
- return x;
-}
-
-#if 0
-/* Calculates the y position of the first line of text. */
-static double
-get_line_ypos_item_relative (EText *text)
-{
- double y;
-
- y = 0;
-
- switch (text->anchor) {
- case GTK_ANCHOR_NW:
- case GTK_ANCHOR_N:
- case GTK_ANCHOR_NE:
- break;
-
- case GTK_ANCHOR_W:
- case GTK_ANCHOR_CENTER:
- case GTK_ANCHOR_E:
- y -= text->height / 2;
- break;
-
- case GTK_ANCHOR_SW:
- case GTK_ANCHOR_S:
- case GTK_ANCHOR_SE:
- y -= text->height;
- break;
- }
-
- return y;
-}
-#endif
-
-/* Calculates the x position of the specified line of text, based on the text's justification */
-static int
-get_line_xpos (EText *text, struct line *line)
-{
- int x;
-
- x = text->cx;
-
- switch (text->justification) {
- case GTK_JUSTIFY_RIGHT:
- x += text->max_width - line->width;
- break;
-
- case GTK_JUSTIFY_CENTER:
- x += (text->max_width - line->width) / 2;
- break;
-
- default:
- if (text->draw_borders)
- x += BORDER_INDENT;
- /* For GTK_JUSTIFY_LEFT, we don't have to do anything. We do not support
- * GTK_JUSTIFY_FILL, yet.
- */
- break;
- }
-
-
- return x;
-}
-
-static void
-_get_tep(EText *text)
-{
- if (!text->tep) {
- text->tep = e_text_event_processor_emacs_like_new();
- gtk_object_ref (GTK_OBJECT (text->tep));
- gtk_object_sink (GTK_OBJECT (text->tep));
- text->tep_command_id =
- gtk_signal_connect(GTK_OBJECT(text->tep),
- "command",
- GTK_SIGNAL_FUNC(e_text_command),
- (gpointer) text);
- }
-}
-
-/* Draw handler for the text item */
-static void
-e_text_draw (GnomeCanvasItem *item, GdkDrawable *drawable,
- int x, int y, int width, int height)
-{
- EText *text;
- GdkRectangle rect, *clip_rect;
- struct line *lines;
- int i;
- int xpos, ypos;
- int start_char, end_char;
- int sel_start, sel_end;
- GdkRectangle sel_rect;
- GdkGC *fg_gc;
- GnomeCanvas *canvas;
- GtkWidget *widget;
-
- text = E_TEXT (item);
- canvas = GNOME_CANVAS_ITEM(text)->canvas;
- widget = GTK_WIDGET(canvas);
-
- fg_gc = widget->style->fg_gc[text->has_selection ? GTK_STATE_SELECTED : GTK_STATE_ACTIVE];
-
- if (text->draw_borders || text->draw_background) {
- gdouble thisx = item->x1 - x;
- gdouble thisy = item->y1 - y;
- gdouble thiswidth, thisheight;
- GtkWidget *widget = GTK_WIDGET(item->canvas);
-
- gtk_object_get(GTK_OBJECT(text),
- "width", &thiswidth,
- "height", &thisheight,
- NULL);
-
- if (text->draw_borders){
-
- if (text->editing) {
- thisx += 1;
- thisy += 1;
- thiswidth -= 2;
- thisheight -= 2;
- }
-
- gtk_paint_shadow (widget->style, drawable,
- GTK_STATE_NORMAL, GTK_SHADOW_IN,
- NULL, widget, "entry",
- thisx, thisy, thiswidth, thisheight);
-
- if (text->editing) {
- thisx -= 1;
- thisy -= 1;
- thiswidth += 2;
- thisheight += 2;
- /*
- * Chris: I am here "filling in" for the additions
- * and substractions done in the previous if (text->editing).
- * but you might have other plans for this. Please enlighten
- * me as to whether it should be:
- * thiswidth + 2 or thiswidth + 1.
- */
- gtk_paint_focus (widget->style, drawable,
- NULL, widget, "entry",
- thisx, thisy, thiswidth - 1, thisheight - 1);
- }
- }
-
- if (text->draw_background) {
- gtk_paint_flat_box (widget->style, drawable,
- GTK_WIDGET_STATE(widget), GTK_SHADOW_NONE,
- NULL, widget, "entry_bg",
- thisx + widget->style->klass->xthickness,
- thisy + widget->style->klass->ythickness,
- thiswidth - widget->style->klass->xthickness * 2,
- thisheight - widget->style->klass->ythickness * 2);
- }
- }
-
- if (!text->text || !text->font)
- return;
-
- lines = text->lines;
- if ( !lines ) {
- text->needs_split_into_lines = 1;
- e_canvas_item_request_reflow (item);
- return;
- }
-
- clip_rect = NULL;
- if (text->clip) {
- rect.x = text->clip_cx - x;
- rect.y = text->clip_cy - y;
- rect.width = text->clip_cwidth;
- rect.height = text->clip_cheight;
-
- gdk_gc_set_clip_rectangle (text->gc, &rect);
- gdk_gc_set_clip_rectangle (fg_gc, &rect);
- clip_rect = &rect;
- }
- ypos = text->cy + e_font_ascent (text->font);
- if (text->draw_borders)
- ypos += BORDER_INDENT;
-
- if (text->editing)
- ypos -= text->yofs_edit;
-
- if (text->stipple)
- gnome_canvas_set_stipple_origin (item->canvas, text->gc);
-
- for (i = 0; i < text->num_lines; i++) {
-
- xpos = get_line_xpos (text, lines);
- if (text->editing) {
- xpos -= text->xofs_edit;
- start_char = lines->text - text->text;
- end_char = start_char + lines->length;
- sel_start = text->selection_start;
- sel_end = text->selection_end;
- if (sel_start > sel_end ) {
- sel_start ^= sel_end;
- sel_end ^= sel_start;
- sel_start ^= sel_end;
- }
- if ( sel_start < start_char )
- sel_start = start_char;
- if ( sel_end > end_char )
- sel_end = end_char;
- if ( sel_start < sel_end ) {
- sel_rect.x = xpos - x + text_width_with_objects (text->model,
- text->font, text->style,
- lines->text,
- sel_start - start_char);
- sel_rect.y = ypos - y - e_font_ascent (text->font);
- sel_rect.width = text_width_with_objects (text->model,
- text->font, text->style,
- lines->text + sel_start - start_char,
- sel_end - sel_start);
- sel_rect.height = e_font_height (text->font);
- gtk_paint_flat_box(GTK_WIDGET(item->canvas)->style,
- drawable,
- text->has_selection ?
- GTK_STATE_SELECTED :
- GTK_STATE_ACTIVE,
- GTK_SHADOW_NONE,
- clip_rect,
- GTK_WIDGET(item->canvas),
- "text",
- sel_rect.x,
- sel_rect.y,
- sel_rect.width,
- sel_rect.height);
- text_draw_with_objects (text->model,
- drawable,
- text->font, text->style,
- text->gc,
- xpos - x,
- ypos - y,
- lines->text,
- sel_start - start_char);
- text_draw_with_objects (text->model,
- drawable,
- text->font, text->style,
- fg_gc,
- xpos - x + text_width_with_objects (text->model,
- text->font, text->style,
- lines->text,
- sel_start - start_char),
- ypos - y,
- lines->text + sel_start - start_char,
- sel_end - sel_start);
- text_draw_with_objects (text->model,
- drawable,
- text->font, text->style,
- text->gc,
- xpos - x + text_width_with_objects (text->model,
- text->font, text->style,
- lines->text,
- sel_end - start_char),
- ypos - y,
- lines->text + sel_end - start_char,
- end_char - sel_end);
- } else {
- text_draw_with_objects (text->model,
- drawable,
- text->font, text->style,
- text->gc,
- xpos - x,
- ypos - y,
- lines->text,
- lines->length);
- }
- if (text->selection_start == text->selection_end &&
- text->selection_start >= start_char &&
- text->selection_start <= end_char &&
- text->show_cursor) {
- gdk_draw_rectangle (drawable,
- text->gc,
- TRUE,
- xpos - x + text_width_with_objects (text->model,
- text->font, text->style,
- lines->text,
- sel_start - start_char),
- ypos - y - e_font_ascent (text->font),
- 1,
- e_font_height (text->font));
- }
- } else {
- if (text->clip && text->use_ellipsis && lines->ellipsis_length < lines->length) {
- text_draw_with_objects (text->model,
- drawable,
- text->font, text->style,
- text->gc,
- xpos - x,
- ypos - y,
- lines->text,
- lines->ellipsis_length);
- e_font_draw_utf8_text (drawable,
- text->font, text->style,
- text->gc,
- xpos - x + lines->width - text->ellipsis_width,
- ypos - y,
- text->ellipsis ? text->ellipsis : "...",
- text->ellipsis ? strlen (text->ellipsis) : 3);
- } else {
- text_draw_with_objects (text->model,
- drawable,
- text->font, text->style,
- text->gc,
- xpos - x,
- ypos - y,
- lines->text,
- lines->length);
- }
- }
-
- if (text->strikeout)
- gdk_draw_rectangle (drawable,
- text->gc,
- TRUE,
- xpos - x,
- ypos - y - e_font_ascent (text->font) / 2,
- lines->width, 1);
- ypos += e_font_height (text->font);
- lines++;
- }
-
- if (text->clip) {
- gdk_gc_set_clip_rectangle (text->gc, NULL);
- gdk_gc_set_clip_rectangle (fg_gc, NULL);
- }
-}
-
-/* Render handler for the text item */
-static void
-e_text_render (GnomeCanvasItem *item, GnomeCanvasBuf *buf)
-{
-#if 0
- EText *text;
- guint32 fg_color;
- double xpos, ypos;
- struct line *lines;
- int i, j;
- double affine[6];
- int dx, dy;
- ArtPoint start_i, start_c;
-
- text = E_TEXT (item);
-
- if (!text->text || !text->font || !text->suckfont)
- return;
-
- suckfont = text->suckfont;
-
- fg_color = text->rgba;
-
- gnome_canvas_buf_ensure_buf (buf);
-
- lines = text->lines;
- if ( !lines )
- return;
-
- start_i.y = get_line_ypos_item_relative (text);
-
- art_affine_scale (affine, item->canvas->pixels_per_unit, item->canvas->pixels_per_unit);
- for (i = 0; i < 6; i++)
- affine[i] = text->affine[i];
-
- for (i = 0; i < text->num_lines; i++) {
- if (lines->length != 0) {
- start_i.x = get_line_xpos_item_relative (text, lines);
- art_affine_point (&start_c, &start_i, text->affine);
- xpos = start_c.x;
- ypos = start_c.y;
-
- for (j = 0; j < lines->length; j++) {
- ETextSuckChar *ch;
-
- ch = &suckfont->chars[(unsigned char)((lines->text)[j])];
-
- affine[4] = xpos;
- affine[5] = ypos;
- art_rgb_bitmap_affine (
- buf->buf,
- buf->rect.x0, buf->rect.y0, buf->rect.x1, buf->rect.y1,
- buf->buf_rowstride,
- suckfont->bitmap + (ch->bitmap_offset >> 3),
- ch->width,
- suckfont->bitmap_height,
- suckfont->bitmap_width >> 3,
- fg_color,
- affine,
- ART_FILTER_NEAREST, NULL);
-
- dx = ch->left_sb + ch->width + ch->right_sb;
- xpos += dx * affine[0];
- ypos += dx * affine[1];
- }
- }
-
- dy = text->font->ascent + text->font->descent;
- start_i.y += dy;
- lines++;
- }
-
- buf->is_bg = 0;
-#endif
-}
-
-/* Point handler for the text item */
-static double
-e_text_point (GnomeCanvasItem *item, double x, double y,
- int cx, int cy, GnomeCanvasItem **actual_item)
-{
- EText *text;
- int i;
- struct line *lines;
- int x1, y1, x2, y2;
- int font_height;
- int dx, dy;
- double dist, best;
-
- text = E_TEXT (item);
-
- *actual_item = item;
-
- /* The idea is to build bounding rectangles for each of the lines of
- * text (clipped by the clipping rectangle, if it is activated) and see
- * whether the point is inside any of these. If it is, we are done.
- * Otherwise, calculate the distance to the nearest rectangle.
- */
-
- if (text->font)
- font_height = e_font_height (text->font);
- else
- font_height = 0;
-
- best = 1.0e36;
-
- lines = text->lines;
-
- if (text->fill_clip_rectangle) {
- double clip_width;
- double clip_height;
-
- if (text->clip_width < 0)
- clip_width = text->max_width;
- else
- clip_width = text->clip_width;
-
- /* Get canvas pixel coordinates for clip rectangle position */
- clip_width = clip_width * item->canvas->pixels_per_unit;
- if ( text->clip_height >= 0 )
- clip_height = text->clip_height * item->canvas->pixels_per_unit;
- else
- clip_height = text->height * item->canvas->pixels_per_unit;
-
- if (cx >= text->clip_cx &&
- cx <= text->clip_cx + clip_width &&
- cy >= text->clip_cy &&
- cy <= text->clip_cy + clip_height)
- return 0;
- else
- return 1;
- }
-
- for (i = 0; i < text->num_lines; i++) {
- /* Compute the coordinates of rectangle for the current line,
- * clipping if appropriate.
- */
-
- x1 = get_line_xpos (text, lines);
- y1 = text->cy + i * font_height;
- x2 = x1 + lines->width;
- y2 = y1 + font_height;
-
- if (text->clip) {
- if (x1 < text->clip_cx)
- x1 = text->clip_cx;
-
- if (y1 < text->clip_cy)
- y1 = text->clip_cy;
-
- if ( text->clip_width >= 0 ) {
- if (x2 > (text->clip_cx + text->clip_width))
- x2 = text->clip_cx + text->clip_width;
- }
-
- if ( text->clip_height >= 0 ) {
- if (y2 > (text->clip_cy + text->clip_height))
- y2 = text->clip_cy + text->clip_height;
- }
-
- if ((x1 >= x2) || (y1 >= y2))
- continue;
- }
-
- /* Calculate distance from point to rectangle */
-
- if (cx < x1)
- dx = x1 - cx;
- else if (cx >= x2)
- dx = cx - x2 + 1;
- else
- dx = 0;
-
- if (cy < y1)
- dy = y1 - cy;
- else if (cy >= y2)
- dy = cy - y2 + 1;
- else
- dy = 0;
-
- if ((dx == 0) && (dy == 0))
- return 0.0;
-
- dist = sqrt (dx * dx + dy * dy);
- if (dist < best)
- best = dist;
-
- /* Next! */
-
- lines++;
- }
-
- return best / item->canvas->pixels_per_unit;
-}
-
-/* Bounds handler for the text item */
-static void
-e_text_bounds (GnomeCanvasItem *item, double *x1, double *y1, double *x2, double *y2)
-{
- EText *text;
- double width, height;
-
- text = E_TEXT (item);
-
- *x1 = 0;
- *y1 = 0;
-
- if (text->clip) {
- width = text->clip_width;
- if ( text->clip_height >= 0 )
- height = text->clip_height;
- else height = text->height;
- } else {
- width = text->max_width / item->canvas->pixels_per_unit;
- height = text->height / item->canvas->pixels_per_unit;
- }
-
- switch (text->anchor) {
- case GTK_ANCHOR_NW:
- case GTK_ANCHOR_W:
- case GTK_ANCHOR_SW:
- break;
-
- case GTK_ANCHOR_N:
- case GTK_ANCHOR_CENTER:
- case GTK_ANCHOR_S:
- *x1 -= width / 2.0;
- break;
-
- case GTK_ANCHOR_NE:
- case GTK_ANCHOR_E:
- case GTK_ANCHOR_SE:
- *x1 -= width;
- break;
- }
-
- switch (text->anchor) {
- case GTK_ANCHOR_NW:
- case GTK_ANCHOR_N:
- case GTK_ANCHOR_NE:
- break;
-
- case GTK_ANCHOR_W:
- case GTK_ANCHOR_CENTER:
- case GTK_ANCHOR_E:
- *y1 -= height / 2.0;
- break;
-
- case GTK_ANCHOR_SW:
- case GTK_ANCHOR_S:
- case GTK_ANCHOR_SE:
- *y1 -= height;
- break;
- }
-
- *x2 = *x1 + width;
- *y2 = *y1 + height;
-}
-
-static gboolean
-_get_xy_from_position (EText *text, gint position, gint *xp, gint *yp)
-{
- if (text->lines && (xp || yp)) {
- struct line *lines = NULL;
- int x, y;
- double xd, yd;
- int j;
- x = get_line_xpos_item_relative (text, lines);
- y = text->yofs;
- y -= text->yofs_edit;
- for (j = 0, lines = text->lines; j < text->num_lines; lines++, j++) {
- if (lines->text > text->text + position)
- break;
- y += e_font_height (text->font);
- }
- lines --;
- y -= e_font_descent (text->font);
-
- x += text_width_with_objects (text->model,
- text->font, text->style,
- lines->text,
- position - (lines->text - text->text));
- x -= text->xofs_edit;
-
- xd = x; yd = y;
- gnome_canvas_item_i2w (GNOME_CANVAS_ITEM(text), &xd, &yd);
- gnome_canvas_w2c (GNOME_CANVAS_ITEM(text)->canvas, xd, yd, &x, &y);
-
- if (xp)
- *xp = x;
- if (yp)
- *yp = y;
-
- return TRUE;
- }
-
- return FALSE;
-}
-
-static gint
-_get_position_from_xy (EText *text, gint x, gint y)
-{
- int i, j;
- int ypos = text->yofs;
- int xpos;
- double xd, yd;
- const char *p;
- gunichar unival;
- gint font_ht, adjust=0;
- struct line *lines;
-
- xd = x; yd = y;
- gnome_canvas_c2w (GNOME_CANVAS_ITEM(text)->canvas, xd, yd, &xd, &yd);
- gnome_canvas_item_w2i (GNOME_CANVAS_ITEM(text), &xd, &yd);
- x = xd; y = yd;
-
- y += text->yofs_edit;
- font_ht = e_font_height (text->font);
-
- if (text->draw_borders)
- ypos += BORDER_INDENT;
-
- switch (text->anchor) {
- case GTK_ANCHOR_WEST:
- case GTK_ANCHOR_CENTER:
- case GTK_ANCHOR_EAST:
- y += (text->num_lines * font_ht)/2;
- break;
- case GTK_ANCHOR_SOUTH:
- case GTK_ANCHOR_SOUTH_EAST:
- case GTK_ANCHOR_SOUTH_WEST:
- y += text->num_lines * font_ht;
- default:
- /* Do nothing */
- break;
- }
-
-
- j = 0;
- while (y > ypos) {
- ypos += font_ht;
- j ++;
- }
- j--;
- if (j >= text->num_lines)
- j = text->num_lines - 1;
- if (j < 0)
- j = 0;
- i = 0;
- lines = text->lines;
-
- if ( !lines )
- return 0;
-
- lines += j;
- x += text->xofs_edit;
- xpos = get_line_xpos_item_relative (text, lines);
-
- for (i = 0, p = lines->text; p && i < lines->length; i++, p = e_unicode_get_utf8 (p, &unival)) {
- int charwidth;
- int step1, step2;
-
-#if 0
- if (unival == '\1') {
- const gchar *obj_str = NULL; /*e_text_model_get_nth_object (text->model, object_num);*/
- charwidth = e_font_utf8_text_width (text->font, text->style, obj_str, strlen (obj_str));
- ++object_num;
-
- step1 = charwidth;
- step2 = 0;
- adjust = -1;
-
- } else {
-#endif
- charwidth = e_font_utf8_char_width (text->font, text->style, (gchar *) p);
-
- step1 = charwidth / 2;
- step2 = (charwidth + 1) / 2;
- adjust = 0;
-#if 0
- }
-#endif
-
- xpos += step1;
- if (xpos > x) {
- break;
- }
- xpos += step2;
- }
-
- if (!p) return 0;
-
- return MAX (p - text->text + adjust, 0);
-}
-
-#define SCROLL_WAIT_TIME 30000
-
-static gboolean
-_blink_scroll_timeout (gpointer data)
-{
- EText *text = E_TEXT(data);
- gulong current_time;
- gboolean scroll = FALSE;
- gboolean redraw = FALSE;
-
- g_timer_elapsed(text->timer, &current_time);
-
- if (text->scroll_start + SCROLL_WAIT_TIME > 1000000) {
- if (current_time > text->scroll_start - (1000000 - SCROLL_WAIT_TIME) &&
- current_time < text->scroll_start)
- scroll = TRUE;
- } else {
- if (current_time > text->scroll_start + SCROLL_WAIT_TIME ||
- current_time < text->scroll_start)
- scroll = TRUE;
- }
- if (scroll && text->button_down) {
- if (text->lastx - text->clip_cx > text->clip_cwidth &&
- text->xofs_edit < text->max_width - text->clip_cwidth) {
- text->xofs_edit += 4;
- if (text->xofs_edit > text->max_width - text->clip_cwidth + 1)
- text->xofs_edit = text->max_width - text->clip_cwidth + 1;
- redraw = TRUE;
- }
- if (text->lastx - text->clip_cx < 0 &&
- text->xofs_edit > 0) {
- text->xofs_edit -= 4;
- if (text->xofs_edit < 0)
- text->xofs_edit = 0;
- redraw = TRUE;
- }
-
- if (text->lasty - text->clip_cy > text->clip_cheight &&
- text->yofs_edit < text->height - text->clip_cheight) {
- text->yofs_edit += 4;
- if (text->yofs_edit > text->height - text->clip_cheight + 1)
- text->yofs_edit = text->height - text->clip_cheight + 1;
- redraw = TRUE;
- }
- if (text->lasty - text->clip_cy < 0 &&
- text->yofs_edit > 0) {
- text->yofs_edit -= 4;
- if (text->yofs_edit < 0)
- text->yofs_edit = 0;
- redraw = TRUE;
- }
-
- if (redraw) {
- ETextEventProcessorEvent e_tep_event;
- e_tep_event.type = GDK_MOTION_NOTIFY;
- e_tep_event.motion.state = text->last_state;
- e_tep_event.motion.time = 0;
- e_tep_event.motion.position = _get_position_from_xy(text, text->lastx, text->lasty);
- _get_tep(text);
- e_text_event_processor_handle_event (text->tep,
- &e_tep_event);
- text->scroll_start = current_time;
- }
- }
-
- if (!((current_time / 500000) % 2)) {
- if (!text->show_cursor)
- redraw = TRUE;
- text->show_cursor = TRUE;
- } else {
- if (text->show_cursor)
- redraw = TRUE;
- text->show_cursor = FALSE;
- }
- if (redraw) {
- text->needs_redraw = 1;
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM(text));
- }
- return TRUE;
-}
-
-static gboolean
-tooltip_event(GtkWidget *tooltip, GdkEvent *event, EText *text)
-{
- gint ret_val = FALSE;
- switch (event->type) {
- case GDK_LEAVE_NOTIFY:
- e_canvas_hide_tooltip (E_CANVAS(GNOME_CANVAS_ITEM(text)->canvas));
- break;
- case GDK_BUTTON_PRESS:
- case GDK_BUTTON_RELEASE:
- if (event->type == GDK_BUTTON_RELEASE) {
- e_canvas_hide_tooltip (E_CANVAS(GNOME_CANVAS_ITEM(text)->canvas));
- }
- /* Forward events to the text item */
- gtk_signal_emit_by_name (GTK_OBJECT (text), "event", event,
- &ret_val);
- if (!ret_val)
- gtk_propagate_event (GTK_WIDGET(GNOME_CANVAS_ITEM(text)->canvas), event);
- ret_val = TRUE;
- default:
- break;
- }
- return ret_val;
-}
-
-static gboolean
-_do_tooltip (gpointer data)
-{
- EText *text = E_TEXT (data);
- struct line *lines;
- GtkWidget *canvas;
- int i;
- gdouble max_width;
- gboolean cut_off;
- double i2c[6];
- ArtPoint origin = {0, 0};
- ArtPoint pixel_origin;
- int canvas_x, canvas_y;
- GnomeCanvasItem *tooltip_text;
- double tooltip_width;
- double tooltip_height;
- double tooltip_x;
- double tooltip_y;
-#if 0
- double x1, x2, y1, y2;
-#endif
- GnomeCanvasItem *rect;
- GtkWidget *tooltip_window; /* GtkWindow for displaying the tooltip */
-
- text->tooltip_count = 0;
-
- lines = text->lines;
-
- if (E_CANVAS(GNOME_CANVAS_ITEM(text)->canvas)->tooltip_window || text->editing || (!lines)) {
- text->tooltip_timeout = 0;
- return FALSE;
- }
-
- cut_off = FALSE;
- for ( lines = text->lines, i = 0; i < text->num_lines; lines++, i++ ) {
- if (lines->length > lines->ellipsis_length) {
- cut_off = TRUE;
- break;
- }
- }
- if ( ! cut_off ) {
- text->tooltip_timeout = 0;
- return FALSE;
- }
-
- gnome_canvas_item_i2c_affine(GNOME_CANVAS_ITEM(text), i2c);
- art_affine_point (&pixel_origin, &origin, i2c);
-
- gdk_window_get_origin (GTK_WIDGET(GNOME_CANVAS_ITEM(text)->canvas)->window, &canvas_x, &canvas_y);
- pixel_origin.x += canvas_x;
- pixel_origin.y += canvas_y;
- pixel_origin.x -= (int) gtk_layout_get_hadjustment(GTK_LAYOUT(GNOME_CANVAS_ITEM(text)->canvas))->value;
- pixel_origin.y -= (int) gtk_layout_get_vadjustment(GTK_LAYOUT(GNOME_CANVAS_ITEM(text)->canvas))->value;
-
- tooltip_window = gtk_window_new (GTK_WINDOW_POPUP);
- gtk_container_set_border_width (GTK_CONTAINER (tooltip_window), 1);
-
- canvas = e_canvas_new ();
-
- gtk_container_add (GTK_CONTAINER (tooltip_window), canvas);
-
- /* Get the longest line length */
- max_width = 0.0;
- for (lines = text->lines, i = 0; i < text->num_lines; lines++, i++) {
- gdouble line_width;
-
- line_width = text_width_with_objects (text->model, text->font, text->style, lines->text, lines->length);
- max_width = MAX (max_width, line_width);
- }
-
- rect = gnome_canvas_item_new (gnome_canvas_root (GNOME_CANVAS (canvas)),
- gnome_canvas_rect_get_type (),
- "x1", (double) 0,
- "y1", (double) 0,
- "x2", (double) max_width + 4,
- "y2", (double) text->height + 4,
- "fill_color", "light gray",
- NULL);
-
- /* Ref the font so that it is not destroyed
- when the tooltip text is destroyed */
- e_font_ref (text->font);
- tooltip_text = gnome_canvas_item_new (gnome_canvas_root (GNOME_CANVAS (canvas)),
- e_text_get_type (),
- "anchor", GTK_ANCHOR_NW,
- "bold", text->bold,
- "strikeout", text->strikeout,
- "font_e", text->font,
- "text", text->text,
- "editable", FALSE,
- "clip_width", text->max_lines != 1 ? text->clip_width : max_width,
- "clip_height", text->max_lines != 1 ? -1 : (double)text->height,
- "clip", TRUE,
- "line_wrap", text->line_wrap,
- "justification", text->justification,
- NULL);
-
-
-
- if (text->draw_borders)
- e_canvas_item_move_absolute(tooltip_text, 1 + BORDER_INDENT, 1 + BORDER_INDENT);
- else
- e_canvas_item_move_absolute(tooltip_text, 1, 1);
-
-
- split_into_lines (E_TEXT(tooltip_text));
- calc_height (E_TEXT(tooltip_text));
- calc_line_widths (E_TEXT(tooltip_text));
- gnome_canvas_item_set (tooltip_text,
- "clip_height", (double) E_TEXT(tooltip_text)->height,
- "clip_width", (double) E_TEXT(tooltip_text)->max_width,
- NULL);
- tooltip_width = E_TEXT(tooltip_text)->max_width;
- tooltip_height = E_TEXT(tooltip_text)->height;
- tooltip_x = 0;
- tooltip_y = 0;
- switch(E_TEXT(tooltip_text)->justification) {
- case GTK_JUSTIFY_CENTER:
- tooltip_x = - tooltip_width / 2;
- break;
- case GTK_JUSTIFY_RIGHT:
- tooltip_x = tooltip_width / 2;
- break;
- case GTK_JUSTIFY_FILL:
- case GTK_JUSTIFY_LEFT:
- tooltip_x = 0;
- break;
- }
- switch(text->anchor) {
- case GTK_ANCHOR_NW:
- case GTK_ANCHOR_N:
- case GTK_ANCHOR_NE:
- break;
-
- case GTK_ANCHOR_W:
- case GTK_ANCHOR_CENTER:
- case GTK_ANCHOR_E:
- tooltip_y -= tooltip_height / 2.0;
- break;
-
- case GTK_ANCHOR_SW:
- case GTK_ANCHOR_S:
- case GTK_ANCHOR_SE:
- tooltip_y -= tooltip_height;
- break;
- }
- switch(E_TEXT(tooltip_text)->anchor) {
- case GTK_ANCHOR_NW:
- case GTK_ANCHOR_W:
- case GTK_ANCHOR_SW:
- break;
-
- case GTK_ANCHOR_N:
- case GTK_ANCHOR_CENTER:
- case GTK_ANCHOR_S:
- tooltip_x -= tooltip_width / 2.0;
- break;
-
- case GTK_ANCHOR_NE:
- case GTK_ANCHOR_E:
- case GTK_ANCHOR_SE:
- tooltip_x -= tooltip_width;
- break;
- }
-
- gnome_canvas_item_set(rect,
- "x2", (double) tooltip_width + 4 + (text->draw_borders ? BORDER_INDENT * 2 : 0),
- "y2", (double) tooltip_height + 4 + (text->draw_borders ? BORDER_INDENT * 2 : 0),
- NULL);
-
- gtk_widget_set_usize (tooltip_window,
- tooltip_width + 4 + (text->draw_borders ? BORDER_INDENT * 2 : 0),
- tooltip_height + 4 + (text->draw_borders ? BORDER_INDENT * 2 : 0));
- gnome_canvas_set_scroll_region (GNOME_CANVAS(canvas), 0.0, 0.0,
- tooltip_width + (text->draw_borders ? BORDER_INDENT * 2 : 0),
- (double)tooltip_height + (text->draw_borders ? BORDER_INDENT * 2 : 0));
- gtk_widget_show (canvas);
- gtk_widget_realize (tooltip_window);
- gtk_signal_connect (GTK_OBJECT(tooltip_window), "event",
- GTK_SIGNAL_FUNC(tooltip_event), text);
-
- e_canvas_popup_tooltip (E_CANVAS(GNOME_CANVAS_ITEM(text)->canvas),
- tooltip_window,
- pixel_origin.x - 2 + tooltip_x,
- pixel_origin.y - 2 + tooltip_y);
-
- text->tooltip_timeout = 0;
- return FALSE;
-}
-
-static gboolean
-_click (gpointer data)
-{
- *(gint *)data = 0;
- return FALSE;
-}
-
-static gint
-e_text_event (GnomeCanvasItem *item, GdkEvent *event)
-{
- EText *text = E_TEXT(item);
- ETextEventProcessorEvent e_tep_event;
-
- gint return_val = 0;
-
- if (GTK_OBJECT_DESTROYED (item))
- return FALSE;
-
- e_tep_event.type = event->type;
- switch (event->type) {
- case GDK_FOCUS_CHANGE:
- if (text->editable) {
- GdkEventFocus *focus_event;
- focus_event = (GdkEventFocus *) event;
- if (focus_event->in) {
- if(!text->editing) {
- text->editing = TRUE;
- if ( text->pointer_in ) {
- if ( text->default_cursor_shown && (!text->draw_borders)) {
- gdk_window_set_cursor(GTK_WIDGET(item->canvas)->window, text->i_cursor);
- text->default_cursor_shown = FALSE;
- }
- }
- text->select_by_word = FALSE;
- text->xofs_edit = 0;
- text->yofs_edit = 0;
- if (text->timeout_id == 0)
- text->timeout_id = g_timeout_add(10, _blink_scroll_timeout, text);
- text->timer = g_timer_new();
- g_timer_elapsed(text->timer, &(text->scroll_start));
- g_timer_start(text->timer);
- }
- } else {
- text->editing = FALSE;
- if ( (!text->default_cursor_shown) && (!text->draw_borders) ) {
- gdk_window_set_cursor(GTK_WIDGET(item->canvas)->window, text->default_cursor);
- text->default_cursor_shown = TRUE;
- }
- if (text->timeout_id) {
- g_source_remove(text->timeout_id);
- text->timeout_id = 0;
- }
- if (text->timer) {
- g_timer_stop(text->timer);
- g_timer_destroy(text->timer);
- text->timer = NULL;
- }
- }
- if ( text->line_wrap )
- text->needs_split_into_lines = 1;
- else
- text->needs_calc_line_widths = 1;
- e_canvas_item_request_reflow (GNOME_CANVAS_ITEM(text));
- }
- return_val = 0;
- break;
- case GDK_KEY_PRESS: /* Fall Through */
- case GDK_KEY_RELEASE:
- if (text->editing) {
- GdkEventKey key = event->key;
- gint ret;
-
- e_tep_event.key.time = key.time;
- e_tep_event.key.state = key.state;
- e_tep_event.key.keyval = key.keyval;
-
- // g_print ("etext got keyval \"%s\"\n", gdk_keyval_name (key.keyval));
-
- /* This is probably ugly hack, but we have to handle UTF-8 input somehow */
-#if 0
- e_tep_event.key.length = key.length;
- e_tep_event.key.string = key.string;
-#else
- e_tep_event.key.string = e_utf8_from_gtk_event_key (GTK_WIDGET (item->canvas), key.keyval, key.string);
- if (e_tep_event.key.string != NULL) {
- e_tep_event.key.length = strlen (e_tep_event.key.string);
- } else {
- e_tep_event.key.length = 0;
- }
-#endif
- _get_tep(text);
- ret = e_text_event_processor_handle_event (text->tep, &e_tep_event);
-
- if (e_tep_event.key.string) g_free (e_tep_event.key.string);
-
- if (event->type == GDK_KEY_PRESS)
- gtk_signal_emit (GTK_OBJECT (text), e_text_signals[E_TEXT_KEYPRESS],
- e_tep_event.key.keyval, e_tep_event.key.state);
-
- return ret;
- }
- else
- return 0;
- break;
- case GDK_BUTTON_PRESS: /* Fall Through */
- case GDK_BUTTON_RELEASE:
- if (text->tooltip_timeout) {
- gtk_timeout_remove (text->tooltip_timeout);
- text->tooltip_timeout = 0;
- }
- e_canvas_hide_tooltip (E_CANVAS(GNOME_CANVAS_ITEM(text)->canvas));
-#if 0
- if ((!text->editing)
- && text->editable
- && event->type == GDK_BUTTON_RELEASE
- && event->button.button == 1) {
- GdkEventButton button = event->button;
-
- e_canvas_item_grab_focus (item, TRUE);
-
- e_tep_event.type = GDK_BUTTON_RELEASE;
- e_tep_event.button.time = button.time;
- e_tep_event.button.state = button.state;
- e_tep_event.button.button = button.button;
- e_tep_event.button.position = _get_position_from_xy(text, button.x, button.y);
- _get_tep(text);
- return_val = e_text_event_processor_handle_event (text->tep,
- &e_tep_event);
- e_tep_event.type = GDK_BUTTON_RELEASE;
- }
-#else
- if ((!text->editing)
- && text->editable
- && (event->button.button == 1 ||
- event->button.button == 2)) {
- e_canvas_item_grab_focus (item, TRUE);
- }
-#endif
-
- /* We follow convention and emit popup events on right-clicks. */
- if (event->type == GDK_BUTTON_PRESS && event->button.button == 3) {
- gtk_signal_emit (GTK_OBJECT (text),
- e_text_signals[E_TEXT_POPUP],
- &(event->button),
- _get_position_from_xy (text, event->button.x, event->button.y));
-
- break;
- }
-
- /* Create our own double and triple click events,
- as gnome-canvas doesn't forward them to us */
- if (event->type == GDK_BUTTON_PRESS) {
- if (text->dbl_timeout == 0 &&
- text->tpl_timeout == 0) {
- text->dbl_timeout = gtk_timeout_add (200,
- _click,
- &(text->dbl_timeout));
- } else {
- if (text->tpl_timeout == 0) {
- e_tep_event.type = GDK_2BUTTON_PRESS;
- text->tpl_timeout = gtk_timeout_add (200, _click, &(text->tpl_timeout));
- } else {
- e_tep_event.type = GDK_3BUTTON_PRESS;
- }
- }
- }
-
- if (text->editing) {
- GdkEventButton button = event->button;
- e_tep_event.button.time = button.time;
- e_tep_event.button.state = button.state;
- e_tep_event.button.button = button.button;
- e_tep_event.button.position = _get_position_from_xy(text, button.x, button.y);
- _get_tep(text);
- return_val = e_text_event_processor_handle_event (text->tep,
- &e_tep_event);
- if (event->button.button == 1) {
- if (event->type == GDK_BUTTON_PRESS)
- text->button_down = TRUE;
- else
- text->button_down = FALSE;
- }
- text->lastx = button.x;
- text->lasty = button.y;
- text->last_state = button.state;
- }
- break;
- case GDK_MOTION_NOTIFY:
- if (text->editing) {
- GdkEventMotion motion = event->motion;
- e_tep_event.motion.time = motion.time;
- e_tep_event.motion.state = motion.state;
- e_tep_event.motion.position = _get_position_from_xy(text, motion.x, motion.y);
- _get_tep(text);
- return_val = e_text_event_processor_handle_event (text->tep,
- &e_tep_event);
- text->lastx = motion.x;
- text->lasty = motion.y;
- text->last_state = motion.state;
- }
- break;
- case GDK_ENTER_NOTIFY:
- {
-#if 0
- GdkEventCrossing *crossing = (GdkEventCrossing *) event;
- double x1, y1, x2, y2;
- split_into_lines (text);
- calc_height (text);
- calc_line_widths (text);
- get_bounds (text, &x1, &y1, &x2, &y2);
- if (crossing->x >= x1 &&
- crossing->y >= y1 &&
- crossing->x <= x2 &&
- crossing->y <= y2) {
-#endif
- if ( text->tooltip_count == 0 && text->clip) {
- if (!text->tooltip_timeout)
- text->tooltip_timeout = gtk_timeout_add (1000, _do_tooltip, text);
- }
- text->tooltip_count ++;
-#if 0
- }
-#endif
- }
-
- text->pointer_in = TRUE;
- if (text->editing || text->draw_borders) {
- if ( text->default_cursor_shown ) {
- gdk_window_set_cursor(GTK_WIDGET(item->canvas)->window, text->i_cursor);
- text->default_cursor_shown = FALSE;
- }
- }
- break;
- case GDK_LEAVE_NOTIFY:
- if (text->tooltip_count > 0)
- text->tooltip_count --;
- if ( text->tooltip_count == 0 && text->clip) {
- if ( text->tooltip_timeout ) {
- gtk_timeout_remove (text->tooltip_timeout);
- text->tooltip_timeout = 0;
- }
- }
-
- text->pointer_in = FALSE;
- if (text->editing || text->draw_borders) {
- if ( ! text->default_cursor_shown ) {
- gdk_window_set_cursor(GTK_WIDGET(item->canvas)->window, text->default_cursor);
- text->default_cursor_shown = TRUE;
- }
- }
- break;
- default:
- break;
- }
- if (return_val)
- return return_val;
- if (GNOME_CANVAS_ITEM_CLASS(parent_class)->event)
- return GNOME_CANVAS_ITEM_CLASS(parent_class)->event(item, event);
- else
- return 0;
-}
-
-/* fixme: */
-
-static int
-_get_position(EText *text, ETextEventProcessorCommand *command)
-{
- int length, obj_num;
- int x, y;
- gunichar unival;
- char *p = NULL;
- gint new_pos = 0;
-
- switch (command->position) {
-
- case E_TEP_VALUE:
- new_pos = command->value;
- break;
-
- case E_TEP_SELECTION:
- new_pos = text->selection_end;
- break;
-
- case E_TEP_START_OF_BUFFER:
- new_pos = 0;
- break;
-
- case E_TEP_END_OF_BUFFER:
- new_pos = g_utf8_strlen (text->text, -1);
- break;
-
- case E_TEP_START_OF_LINE:
-
- new_pos = 0;
-
- if (text->selection_end >= 1) {
-
- p = g_utf8_find_prev_char (text->text, text->text + text->selection_end);
- if (p != text->text) {
- p = g_utf8_find_prev_char (text->text, p);
-
- while (p && p > text->text && !new_pos) {
- if (*p == '\n')
- new_pos = p - text->text + 1;
- p = g_utf8_find_prev_char (text->text, p);
- }
- }
- }
-
- break;
-
- case E_TEP_END_OF_LINE:
- new_pos = -1;
- length = strlen (text->text);
-
- if (text->selection_end >= length) {
- new_pos = length;
- } else {
-
- p = g_utf8_next_char (text->text + text->selection_end);
-
- while (p && *p && g_unichar_validate (g_utf8_get_char (p))) {
- if (*p == '\n') {
- new_pos = p - text->text;
- p = NULL;
- } else
- p = g_utf8_next_char (p);
- }
- }
-
- if (new_pos == -1)
- new_pos = p - text->text;
-
- break;
-
- case E_TEP_FORWARD_CHARACTER:
- length = strlen (text->text);
-
- if (text->selection_end >= length) {
- new_pos = length;
- } else {
- p = g_utf8_next_char (text->text + text->selection_end);
- new_pos = p - text->text;
- }
-
- break;
-
- case E_TEP_BACKWARD_CHARACTER:
- new_pos = 0;
- if (text->selection_end >= 1) {
- p = g_utf8_find_prev_char (text->text, text->text + text->selection_end);
-
- if (p != NULL)
- new_pos = p - text->text;
- }
-
- break;
-
- case E_TEP_FORWARD_WORD:
- new_pos = -1;
- length = strlen (text->text);
-
- if (text->selection_end >= length) {
- new_pos = length;
- } else {
-
- p = g_utf8_next_char (text->text + text->selection_end);
-
- while (p && *p && g_unichar_validate (g_utf8_get_char (p))) {
- unival = g_utf8_get_char (p);
- if (g_unichar_isspace (unival)) {
- new_pos = p - text->text;
- p = NULL;
- } else
- p = g_utf8_next_char (p);
- }
- }
-
- if (new_pos == -1)
- new_pos = p - text->text;
-
- break;
-
- case E_TEP_BACKWARD_WORD:
- new_pos = 0;
- if (text->selection_end >= 1) {
- p = g_utf8_find_prev_char (text->text, text->text + text->selection_end);
- if (p != text->text) {
- p = g_utf8_find_prev_char (text->text, p);
-
- while (p && p > text->text && g_unichar_validate (g_utf8_get_char (p))) {
- unival = g_utf8_get_char (p);
- if (g_unichar_isspace (unival)) {
- new_pos = g_utf8_next_char (p) - text->text;
- p = NULL;
- } else
- p = g_utf8_find_prev_char (text->text, p);
- }
- }
- }
-
- break;
-
- case E_TEP_FORWARD_LINE:
- if (_get_xy_from_position(text, text->selection_end, &x, &y)) {
- y += e_font_height (text->font);
- new_pos = _get_position_from_xy(text, x, y);
- }
- break;
-
- case E_TEP_BACKWARD_LINE:
- if (_get_xy_from_position(text, text->selection_end, &x, &y)) {
- y -= e_font_height (text->font);
- new_pos = _get_position_from_xy(text, x, y);
- }
- break;
-
- case E_TEP_SELECT_WORD:
-
- /* This is a silly hack to cause double-clicking on an object
- to activate that object.
- (Normally, double click == select word, which is why this is here.) */
-
- obj_num = e_text_model_get_object_at_offset (text->model, text->selection_start);
- if (obj_num != -1) {
- e_text_model_activate_nth_object (text->model, obj_num);
- new_pos = text->selection_start;
- break;
- }
-
-
- if (text->selection_end < 1) {
- new_pos = 0;
- break;
- }
-
- p = g_utf8_find_prev_char (text->text, text->text + text->selection_end);
- if (p == text->text) {
- new_pos = 0;
- break;
- }
- p = g_utf8_find_prev_char (text->text, p);
-
- while (p && p > text->text && g_unichar_validate (g_utf8_get_char (p))) {
- unival = g_utf8_get_char (p);
- if (g_unichar_isspace (unival)) {
- p = g_utf8_next_char (p);
- break;
- }
- p = g_utf8_find_prev_char (text->text, p);
- }
-
- if (!p)
- text->selection_start = 0;
- else
- text->selection_start = p - text->text;
-
-
- text->selection_start = e_text_model_validate_position (text->model, text->selection_start);
-
- length = strlen (text->text);
- if (text->selection_end >= length) {
- new_pos = length;
- break;
- }
-
- p = g_utf8_next_char (text->text + text->selection_end);
-
- while (p && *p && g_unichar_validate (g_utf8_get_char (p))) {
- unival = g_utf8_get_char (p);
- if (g_unichar_isspace (unival)) {
- new_pos = p - text->text;
- p = NULL;
- } else
- p = g_utf8_next_char (p);
- }
-
- if (p)
- new_pos = p - text->text;
-
- return new_pos;
-
- case E_TEP_SELECT_ALL:
- text->selection_start = 0;
- new_pos = strlen (text->text);
- break;
-
- case E_TEP_FORWARD_PARAGRAPH:
- case E_TEP_BACKWARD_PARAGRAPH:
-
- case E_TEP_FORWARD_PAGE:
- case E_TEP_BACKWARD_PAGE:
- new_pos = text->selection_end;
- break;
-
- default:
- new_pos = text->selection_end;
- }
-
- new_pos = e_text_model_validate_position (text->model, new_pos);
-
- return new_pos;
-}
-
-static void
-_delete_selection(EText *text)
-{
- if ( text->selection_start < text->selection_end ) {
- e_text_model_delete(text->model, text->selection_start, text->selection_end - text->selection_start);
-#if 0
- text->selection_end = text->selection_start;
-#endif
- } else {
- e_text_model_delete(text->model, text->selection_end, text->selection_start - text->selection_end);
-#if 0
- text->selection_start = text->selection_end;
-#endif
- }
-}
-
-static void
-_insert(EText *text, char *string, int value)
-{
- if (value > 0) {
- e_text_model_insert_length(text->model, text->selection_start, string, value);
-
-#if 0
- text->selection_start += value;
- text->selection_end = text->selection_start;
-#endif
- }
-}
-
-static void
-e_text_command(ETextEventProcessor *tep, ETextEventProcessorCommand *command, gpointer data)
-{
- EText *text = E_TEXT(data);
- int sel_start, sel_end;
-
- switch (command->action) {
- case E_TEP_MOVE:
- text->selection_start = _get_position(text, command);
- text->selection_end = text->selection_start;
- if (text->timer) {
- g_timer_reset(text->timer);
- }
-
- break;
- case E_TEP_SELECT:
- text->selection_start = e_text_model_validate_position (text->model, text->selection_start); /* paranoia */
- text->selection_end = _get_position(text, command);
-
- sel_start = MIN(text->selection_start, text->selection_end);
- sel_end = MAX(text->selection_start, text->selection_end);
-
- sel_start = e_text_model_validate_position (text->model, sel_start);
-
- if (sel_start != sel_end) {
- e_text_supply_selection (text, command->time, GDK_SELECTION_PRIMARY,
- (guchar *) text->text + sel_start, sel_end - sel_start);
- } else if (text->timer) {
- g_timer_reset(text->timer);
- }
-
- break;
- case E_TEP_DELETE:
- if (text->selection_end == text->selection_start) {
- text->selection_end = _get_position(text, command);
- }
- _delete_selection(text);
- if (text->timer) {
- g_timer_reset(text->timer);
- }
- break;
-
- case E_TEP_INSERT:
- if (text->selection_end != text->selection_start) {
- _delete_selection(text);
- }
- _insert(text, command->string, command->value);
- if (text->timer) {
- g_timer_reset(text->timer);
- }
- break;
- case E_TEP_COPY:
- sel_start = MIN(text->selection_start, text->selection_end);
- sel_end = MAX(text->selection_start, text->selection_end);
- if (sel_start != sel_end) {
- e_text_supply_selection (text, command->time, clipboard_atom,
- (guchar *) text->text + sel_start, sel_end - sel_start);
- }
- if (text->timer) {
- g_timer_reset(text->timer);
- }
- break;
- case E_TEP_PASTE:
- e_text_get_selection (text, clipboard_atom, command->time);
- if (text->timer) {
- g_timer_reset(text->timer);
- }
- break;
- case E_TEP_GET_SELECTION:
- e_text_get_selection (text, GDK_SELECTION_PRIMARY, command->time);
- break;
- case E_TEP_ACTIVATE:
- gtk_signal_emit (GTK_OBJECT (text), e_text_signals[E_TEXT_ACTIVATE]);
- if (text->timer) {
- g_timer_reset(text->timer);
- }
- break;
- case E_TEP_SET_SELECT_BY_WORD:
- text->select_by_word = command->value;
- break;
- case E_TEP_GRAB:
- gnome_canvas_item_grab (GNOME_CANVAS_ITEM(text),
- GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK,
- text->i_cursor,
- command->time);
- break;
- case E_TEP_UNGRAB:
- gnome_canvas_item_ungrab (GNOME_CANVAS_ITEM(text), command->time);
- break;
- case E_TEP_NOP:
- break;
- }
-
- if (!text->button_down) {
- int x;
- int i;
- struct line *lines = text->lines;
- gdouble clip_width;
- if ( !lines )
- return;
-
- for (lines = text->lines, i = 0; i < text->num_lines ; i++, lines ++) {
- if ((lines->text - text->text) > text->selection_end) {
- break;
- }
- }
- lines --;
- i --;
- x = text_width_with_objects (text->model,
- text->font, text->style,
- lines->text,
- text->selection_end - (lines->text - text->text));
-
-
- if (x < text->xofs_edit) {
- text->xofs_edit = x;
- }
-
- clip_width = text->clip_width;
- if (clip_width >= 0 && text->draw_borders) {
- clip_width -= 6;
- if (clip_width < 0)
- clip_width = 0;
- }
-
- if (2 + x - clip_width > text->xofs_edit) {
- text->xofs_edit = 2 + x - clip_width;
- }
-
- if (e_font_height (text->font) * i < text->yofs_edit)
- text->yofs_edit = e_font_height (text->font) * i;
-
- if (e_font_height (text->font) * (i + 1) - (text->clip_height != -1 ? text->clip_height : text->height) > text->yofs_edit)
- text->yofs_edit = e_font_height (text->font) * (i + 1) - (text->clip_height != -1 ? text->clip_height : text->height);
- }
-
- text->needs_redraw = 1;
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM(text));
-}
-
-static void
-_invisible_destroy (GtkInvisible *invisible,
- EText *text)
-{
- text->invisible = NULL;
-}
-
-static GtkWidget *
-e_text_get_invisible(EText *text)
-{
- GtkWidget *invisible;
- if (text->invisible) {
- invisible = text->invisible;
- } else {
- invisible = gtk_invisible_new();
- text->invisible = invisible;
-
- gtk_selection_add_target (invisible,
- GDK_SELECTION_PRIMARY,
- GDK_SELECTION_TYPE_STRING,
- E_SELECTION_PRIMARY);
- gtk_selection_add_target (invisible,
- clipboard_atom,
- GDK_SELECTION_TYPE_STRING,
- E_SELECTION_CLIPBOARD);
-
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_get",
- GTK_SIGNAL_FUNC (_selection_get),
- text);
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_clear_event",
- GTK_SIGNAL_FUNC (_selection_clear_event),
- text);
- gtk_signal_connect (GTK_OBJECT(invisible), "selection_received",
- GTK_SIGNAL_FUNC (_selection_received),
- text);
-
- gtk_signal_connect (GTK_OBJECT(invisible), "destroy",
- GTK_SIGNAL_FUNC (_invisible_destroy),
- text);
- }
- return invisible;
-}
-
-static void
-_selection_clear_event (GtkInvisible *invisible,
- GdkEventSelection *event,
- EText *text)
-{
- if (event->selection == GDK_SELECTION_PRIMARY) {
- g_free (text->primary_selection);
- text->primary_selection = NULL;
- text->primary_length = 0;
-
- text->has_selection = FALSE;
- text->needs_redraw = 1;
- gnome_canvas_item_request_update (GNOME_CANVAS_ITEM(text));
-
- } else if (event->selection == clipboard_atom) {
- g_free (text->clipboard_selection);
- text->clipboard_selection = NULL;
- text->clipboard_length = 0;
- }
-}
-
-static void
-_selection_get (GtkInvisible *invisible,
- GtkSelectionData *selection_data,
- guint info,
- guint time_stamp,
- EText *text)
-{
- switch (info) {
- case E_SELECTION_PRIMARY:
- gtk_selection_data_set (selection_data, GDK_SELECTION_TYPE_STRING,
- 8, text->primary_selection, text->primary_length);
- break;
- case E_SELECTION_CLIPBOARD:
- gtk_selection_data_set (selection_data, GDK_SELECTION_TYPE_STRING,
- 8, text->clipboard_selection, text->clipboard_length);
- break;
- }
-}
-
-static void
-_selection_received (GtkInvisible *invisible,
- GtkSelectionData *selection_data,
- guint time,
- EText *text)
-{
- if (selection_data->length < 0 || selection_data->type != GDK_SELECTION_TYPE_STRING) {
- return;
- } else {
- ETextEventProcessorCommand command;
- command.action = E_TEP_INSERT;
- command.position = E_TEP_SELECTION;
- command.string = selection_data->data;
- command.value = selection_data->length;
- command.time = time;
- e_text_command(text->tep, &command, text);
- }
-}
-
-static void
-e_text_supply_selection (EText *text, guint time, GdkAtom selection, guchar *data, gint length)
-{
- gboolean successful;
- GtkWidget *invisible;
-
- invisible = e_text_get_invisible(text);
-
- if (selection == GDK_SELECTION_PRIMARY ) {
- if (text->primary_selection) {
- g_free (text->primary_selection);
- }
- text->primary_selection = g_strndup(data, length);
- text->primary_length = length;
- } else if (selection == clipboard_atom) {
- if (text->clipboard_selection) {
- g_free (text->clipboard_selection);
- }
- text->clipboard_selection = g_strndup(data, length);
- text->clipboard_length = length;
- }
-
- successful = gtk_selection_owner_set (invisible,
- selection,
- time);
-
- if (selection == GDK_SELECTION_PRIMARY)
- text->has_selection = successful;
-}
-
-static void
-e_text_get_selection(EText *text, GdkAtom selection, guint32 time)
-{
- GtkWidget *invisible;
- invisible = e_text_get_invisible(text);
- gtk_selection_convert(invisible,
- selection,
- GDK_SELECTION_TYPE_STRING,
- time);
-}
-
-#if 0
-static void
-e_text_real_copy_clipboard (EText *text)
-{
- guint32 time;
- gint selection_start_pos;
- gint selection_end_pos;
-
- g_return_if_fail (text != NULL);
- g_return_if_fail (E_IS_TEXT (text));
-
- time = gtk_text_get_event_time (text);
- selection_start_pos = MIN (text->selection_start, text->selection_end);
- selection_end_pos = MAX (text->selection_start, text->selection_end);
-
- if (selection_start_pos != selection_end_pos)
- {
- if (gtk_selection_owner_set (GTK_WIDGET (text->canvas),
- clipboard_atom,
- time))
- text->clipboard_text = "";
- }
-}
-
-static void
-e_text_real_paste_clipboard (EText *text)
-{
- guint32 time;
-
- g_return_if_fail (text != NULL);
- g_return_if_fail (E_IS_TEXT (text));
-
- time = e_text_get_event_time (text);
- if (text->editable)
- gtk_selection_convert (GTK_WIDGET(text->widget),
- clipboard_atom,
- gdk_atom_intern ("COMPOUND_TEXT", FALSE), time);
-}
-#endif
-
-
-#if 0
-/* Routines for sucking fonts from the X server */
-
-static ETextSuckFont *
-e_suck_font (GdkFont *font)
-{
- ETextSuckFont *suckfont;
- int i;
- int x, y;
- char text[1];
- int lbearing, rbearing, ch_width, ascent, descent;
- GdkPixmap *pixmap;
- GdkColor black, white;
- GdkImage *image;
- GdkGC *gc;
- guchar *line;
- int width, height;
- int black_pixel, pixel;
-
- if (!font)
- return NULL;
-
- suckfont = g_new (ETextSuckFont, 1);
-
- height = font->ascent + font->descent;
- x = 0;
- for (i = 0; i < 256; i++) {
- text[0] = i;
- gdk_text_extents (font, text, 1,
- &lbearing, &rbearing, &ch_width, &ascent, &descent);
- suckfont->chars[i].left_sb = lbearing;
- suckfont->chars[i].right_sb = ch_width - rbearing;
- suckfont->chars[i].width = rbearing - lbearing;
- suckfont->chars[i].ascent = ascent;
- suckfont->chars[i].descent = descent;
- suckfont->chars[i].bitmap_offset = x;
- x += (ch_width + 31) & -32;
- }
-
- width = x;
-
- suckfont->bitmap_width = width;
- suckfont->bitmap_height = height;
- suckfont->ascent = font->ascent;
-
- pixmap = gdk_pixmap_new (NULL, suckfont->bitmap_width,
- suckfont->bitmap_height, 1);
- gc = gdk_gc_new (pixmap);
- gdk_gc_set_font (gc, font);
-
- black_pixel = BlackPixel (gdk_display, DefaultScreen (gdk_display));
- black.pixel = black_pixel;
- white.pixel = WhitePixel (gdk_display, DefaultScreen (gdk_display));
- gdk_gc_set_foreground (gc, &white);
- gdk_draw_rectangle (pixmap, gc, 1, 0, 0, width, height);
-
- gdk_gc_set_foreground (gc, &black);
- for (i = 0; i < 256; i++) {
- text[0] = i;
- gdk_draw_text (pixmap, font, gc,
- suckfont->chars[i].bitmap_offset - suckfont->chars[i].left_sb,
- font->ascent,
- text, 1);
- }
-
- /* The handling of the image leaves me with distinct unease. But this
- * is more or less copied out of gimp/app/text_tool.c, so it _ought_ to
- * work. -RLL
- */
-
- image = gdk_image_get (pixmap, 0, 0, width, height);
- suckfont->bitmap = g_malloc0 ((width >> 3) * height);
-
- line = suckfont->bitmap;
- for (y = 0; y < height; y++) {
- for (x = 0; x < width; x++) {
- pixel = gdk_image_get_pixel (image, x, y);
- if (pixel == black_pixel)
- line[x >> 3] |= 128 >> (x & 7);
- }
- line += width >> 3;
- }
-
- gdk_image_destroy (image);
-
- /* free the pixmap */
- gdk_pixmap_unref (pixmap);
-
- /* free the gc */
- gdk_gc_destroy (gc);
-
- return suckfont;
-}
-
-static void
-e_suck_font_free (ETextSuckFont *suckfont)
-{
- g_free (suckfont->bitmap);
- g_free (suckfont);
-}
-#endif
diff --git a/widgets/text/e-text.h b/widgets/text/e-text.h
deleted file mode 100644
index dfb25d21b5..0000000000
--- a/widgets/text/e-text.h
+++ /dev/null
@@ -1,240 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/* EText - Text item for evolution.
- * Copyright (C) 2000, 2001 Ximian Inc.
- *
- * Author: Chris Lahey <clahey@ximian.com>
- * Further hacking by Jon Trowbridge <trow@ximian.com>
- *
- * A majority of code taken from:
- *
- * Text item type for GnomeCanvas widget
- *
- * GnomeCanvas is basically a port of the Tk toolkit's most excellent
- * canvas widget. Tk is copyrighted by the Regents of the University
- * of California, Sun Microsystems, and other parties.
- *
- * Copyright (C) 1998 The Free Software Foundation
- *
- * Author: Federico Mena <federico@nuclecu.unam.mx> */
-
-#ifndef E_TEXT_H
-#define E_TEXT_H
-
-#include <gtk/gtkobject.h>
-#include <gtk/gtkpacker.h>
-
-#include <gal/widgets/e-font.h>
-#include <gal/util/e-text-event-processor.h>
-#include <gal/e-text/e-text-model.h>
-#include <gal/widgets/e-canvas.h>
-
-BEGIN_GNOME_DECLS
-
-
-/* Text item for the canvas. Text items are positioned by an anchor point and an anchor direction.
- *
- * A clipping rectangle may be specified for the text. The rectangle is anchored at the text's anchor
- * point, and is specified by clipping width and height parameters. If the clipping rectangle is
- * enabled, it will clip the text.
- *
- * In addition, x and y offset values may be specified. These specify an offset from the anchor
- * position. If used in conjunction with the clipping rectangle, these could be used to implement
- * simple scrolling of the text within the clipping rectangle.
- *
- * The following object arguments are available:
- *
- * name type read/write description
- * ------------------------------------------------------------------------------------------
- * text string RW The string of the text label
- * font string W X logical font descriptor
- * fontset string W X logical fontset descriptor
- * font_gdk GdkFont* RW Pointer to a GdkFont
- * bold boolean RW Bold?
- * anchor GtkAnchorType RW Anchor side for the text
- * justification GtkJustification RW Justification for multiline text
- * fill_color string W X color specification for text
- * fill_color_gdk GdkColor* RW Pointer to an allocated GdkColor
- * fill_stipple GdkBitmap* RW Stipple pattern for filling the text
- * clip_width double RW Width of clip rectangle
- * clip_height double RW Height of clip rectangle
- * clip boolean RW Use clipping rectangle?
- * fill_clip_rect boolean RW Whether the text item represents itself as being the size of the clipping rectangle.
- * x_offset double RW Horizontal offset distance from anchor position
- * y_offset double RW Vertical offset distance from anchor position
- * text_width double R Used to query the width of the rendered text
- * text_height double R Used to query the rendered height of the text
- * width double RW A synonym for clip_width
- * height double R A synonym for text_height
- *
- * These are currently ignored in the AA version:
- * editable boolean RW Can this item be edited
- * use_ellipsis boolean RW Whether to use ellipsises if text gets cut off. Meaningless if clip == false.
- * ellipsis string RW The characters to use as ellipsis. NULL = "...".
- * line_wrap boolean RW Line wrap when not editing.
- * break_characters string RW List of characters to optionally break on.
- * max_lines int RW Number of lines possible when doing line wrap.
- * draw_borders boolean RW Whether to draw borders.
- * draw_background boolean RW Whether to draw the background.
- */
-
-#define E_TYPE_TEXT (e_text_get_type ())
-#define E_TEXT(obj) (GTK_CHECK_CAST ((obj), E_TYPE_TEXT, EText))
-#define E_TEXT_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_TYPE_TEXT, ETextClass))
-#define E_IS_TEXT(obj) (GTK_CHECK_TYPE ((obj), E_TYPE_TEXT))
-#define E_IS_TEXT_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), E_TYPE_TEXT))
-
-
-typedef struct _EText EText;
-typedef struct _ETextClass ETextClass;
-
-#if 0
-typedef struct _ETextSuckFont ETextSuckFont;
-typedef struct _ETextSuckChar ETextSuckChar;
-
-struct _ETextSuckChar {
- int left_sb;
- int right_sb;
- int width;
- int ascent;
- int descent;
- int bitmap_offset; /* in pixels */
-};
-
-struct _ETextSuckFont {
- guchar *bitmap;
- gint bitmap_width;
- gint bitmap_height;
- gint ascent;
- ETextSuckChar chars[256];
-};
-#endif
-
-struct _EText {
- GnomeCanvasItem item;
-
- ETextModel *model;
- gint model_changed_signal_id;
- gint model_repos_signal_id;
-
- const gchar *text; /* Text to display --- from the ETextModel */
- gpointer lines; /* Text split into lines (private field) */
- int num_lines; /* Number of lines of text */
-
-#if 0
- GdkFont *font; /* Font for text */
-#else
- EFont *font;
-#endif
- GtkAnchorType anchor; /* Anchor side for text */
- GtkJustification justification; /* Justification for text */
-
- double clip_width; /* Width of optional clip rectangle */
- double clip_height; /* Height of optional clip rectangle */
-
- double xofs, yofs; /* Text offset distance from anchor position */
-
- GdkColor color; /* Fill color */
- GdkBitmap *stipple; /* Stipple for text */
- GdkGC *gc; /* GC for drawing text */
-
- int cx, cy; /* Top-left canvas coordinates for text */
- int clip_cx, clip_cy; /* Top-left canvas coordinates for clip rectangle */
- int clip_cwidth, clip_cheight; /* Size of clip rectangle in pixels */
- int max_width; /* Maximum width of text lines */
- int width; /* Rendered text width in pixels */
- int height; /* Rendered text height in pixels */
-
- /* Antialiased specific stuff follows */
-#if 0
- ETextSuckFont *suckfont; /* Sucked font */
-#endif
- guint32 rgba; /* RGBA color for text */
- double affine[6]; /* The item -> canvas affine */
-
- char *ellipsis; /* The ellipsis characters. NULL = "...". */
- double ellipsis_width; /* The width of the ellipsis. */
- gboolean use_ellipsis; /* Whether to use the ellipsis. */
-
- gboolean editable; /* Item is editable */
- gboolean editing; /* Item is currently being edited */
-
- int xofs_edit; /* Offset because of editing */
- int yofs_edit; /* Offset because of editing */
-
- /* This needs to be reworked a bit once we get line wrapping. */
- int selection_start; /* Start of selection IN BYTES */
- int selection_end; /* End of selection IN BYTES */
- gboolean select_by_word; /* Current selection is by word */
-
- /* This section is for drag scrolling and blinking cursor. */
- gint timeout_id; /* Current timeout id for scrolling */
- GTimer *timer; /* Timer for blinking cursor and scrolling */
-
- gint lastx, lasty; /* Last x and y motion events */
- gint last_state; /* Last state */
- gulong scroll_start; /* Starting time for scroll (microseconds) */
-
- gint show_cursor; /* Is cursor currently shown */
- gboolean button_down; /* Is mouse button 1 down */
-
- ETextEventProcessor *tep; /* Text Event Processor */
- gint tep_command_id;
-
- GtkWidget *invisible; /* For selection handling */
- gboolean has_selection; /* TRUE if we have the selection */
- gchar *primary_selection; /* Primary selection text */
- gint primary_length; /* Primary selection text length */
- gchar *clipboard_selection; /* Clipboard selection text */
- gint clipboard_length; /* Clipboard selection text length*/
-
- guint clip : 1; /* Use clip rectangle? */
- guint fill_clip_rectangle : 1; /* Fill the clipping rectangle. */
-
- guint pointer_in : 1; /* Is the pointer currently over us? */
- guint default_cursor_shown : 1; /* Is the default cursor currently shown? */
- guint draw_borders : 1; /* Draw borders? */
- guint draw_background : 1; /* Draw background? */
-
- guint line_wrap : 1; /* Do line wrap */
-
- guint needs_redraw : 1; /* Needs redraw */
- guint needs_recalc_bounds : 1; /* Need recalc_bounds */
- guint needs_calc_height : 1; /* Need calc_height */
- guint needs_calc_line_widths : 1; /* Needs calc_line_widths */
- guint needs_split_into_lines : 1; /* Needs split_into_lines */
-
- guint bold : 1;
- guint strikeout : 1;
-
- EFontStyle style;
-
- gchar *break_characters; /* Characters to optionally break after */
-
- gint max_lines; /* Max number of lines (-1 = infinite) */
-
- GdkCursor *default_cursor; /* Default cursor (arrow) */
- GdkCursor *i_cursor; /* I beam cursor */
-
- gint tooltip_timeout; /* Timeout for the tooltip */
- gint tooltip_count; /* GDK_ENTER_NOTIFY count. */
-
- gint dbl_timeout; /* Double click timeout */
- gint tpl_timeout; /* Triple click timeout */
-};
-
-struct _ETextClass {
- GnomeCanvasItemClass parent_class;
-
- void (* changed) (EText *text);
- void (* activate) (EText *text);
- void (* keypress) (EText *text, guint keyval, guint state);
- void (* popup) (EText *text, GdkEventButton *ev, gint pos);
-};
-
-
-/* Standard Gtk function */
-GtkType e_text_get_type (void);
-
-END_GNOME_DECLS
-
-#endif